[Midnightbsd-cvs] src [7062] trunk/contrib/llvm/tools: sync tools

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sat Jun 20 19:40:08 EDT 2015


Revision: 7062
          http://svnweb.midnightbsd.org/src/?rev=7062
Author:   laffer1
Date:     2015-06-20 19:40:02 -0400 (Sat, 20 Jun 2015)
Log Message:
-----------
sync tools

Modified Paths:
--------------
    trunk/contrib/llvm/tools/bugpoint-passes/TestPasses.cpp
    trunk/contrib/llvm/tools/clang/INPUTS/Cocoa_h.m
    trunk/contrib/llvm/tools/clang/INPUTS/all-std-headers.cpp
    trunk/contrib/llvm/tools/clang/INPUTS/c99-intconst-1.c
    trunk/contrib/llvm/tools/clang/INPUTS/carbon_h.c
    trunk/contrib/llvm/tools/clang/INPUTS/cfg-big-switch.c
    trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain1.c
    trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain2.c
    trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain3.c
    trunk/contrib/llvm/tools/clang/INPUTS/cfg-nested-switches.c
    trunk/contrib/llvm/tools/clang/INPUTS/cfg-nested-var-scopes.cpp
    trunk/contrib/llvm/tools/clang/INPUTS/iostream.cc
    trunk/contrib/llvm/tools/clang/INPUTS/macro_pounder_fn.c
    trunk/contrib/llvm/tools/clang/INPUTS/macro_pounder_obj.c
    trunk/contrib/llvm/tools/clang/INPUTS/stpcpy-test.c
    trunk/contrib/llvm/tools/clang/INSTALL.txt
    trunk/contrib/llvm/tools/clang/ModuleInfo.txt
    trunk/contrib/llvm/tools/clang/NOTES.txt
    trunk/contrib/llvm/tools/clang/bindings/python/clang/__init__.py
    trunk/contrib/llvm/tools/clang/bindings/python/clang/cindex.py
    trunk/contrib/llvm/tools/clang/bindings/python/clang/enumerations.py
    trunk/contrib/llvm/tools/clang/bindings/python/examples/cindex/cindex-dump.py
    trunk/contrib/llvm/tools/clang/bindings/python/examples/cindex/cindex-includes.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/compile_commands.json
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header1.h
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header2.h
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header3.h
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/hello.cpp
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/include.cpp
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/parse_arguments.c
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cdb.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_code_completion.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cursor.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cursor_kind.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_diagnostics.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_file.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_index.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_location.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_token_kind.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_tokens.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_translation_unit.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_type.py
    trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/util.py
    trunk/contrib/llvm/tools/clang/bindings/xml/comment-xml-schema.rng
    trunk/contrib/llvm/tools/clang/docs/AddressSanitizer.rst
    trunk/contrib/llvm/tools/clang/docs/AutomaticReferenceCounting.rst
    trunk/contrib/llvm/tools/clang/docs/Block-ABI-Apple.rst
    trunk/contrib/llvm/tools/clang/docs/Block-ABI-Apple.txt
    trunk/contrib/llvm/tools/clang/docs/BlockLanguageSpec.rst
    trunk/contrib/llvm/tools/clang/docs/ClangCheck.rst
    trunk/contrib/llvm/tools/clang/docs/ClangFormat.rst
    trunk/contrib/llvm/tools/clang/docs/ClangPlugins.rst
    trunk/contrib/llvm/tools/clang/docs/ClangTools.rst
    trunk/contrib/llvm/tools/clang/docs/DriverInternals.rst
    trunk/contrib/llvm/tools/clang/docs/ExternalClangExamples.rst
    trunk/contrib/llvm/tools/clang/docs/FAQ.rst
    trunk/contrib/llvm/tools/clang/docs/HowToSetupToolingForLLVM.rst
    trunk/contrib/llvm/tools/clang/docs/InternalsManual.rst
    trunk/contrib/llvm/tools/clang/docs/IntroductionToTheClangAST.rst
    trunk/contrib/llvm/tools/clang/docs/JSONCompilationDatabase.rst
    trunk/contrib/llvm/tools/clang/docs/LanguageExtensions.rst
    trunk/contrib/llvm/tools/clang/docs/LibASTMatchers.rst
    trunk/contrib/llvm/tools/clang/docs/LibASTMatchersReference.html
    trunk/contrib/llvm/tools/clang/docs/LibASTMatchersTutorial.rst
    trunk/contrib/llvm/tools/clang/docs/LibFormat.rst
    trunk/contrib/llvm/tools/clang/docs/LibTooling.rst
    trunk/contrib/llvm/tools/clang/docs/Makefile.sphinx
    trunk/contrib/llvm/tools/clang/docs/MemorySanitizer.rst
    trunk/contrib/llvm/tools/clang/docs/Modules.rst
    trunk/contrib/llvm/tools/clang/docs/ObjectiveCLiterals.rst
    trunk/contrib/llvm/tools/clang/docs/PCHInternals.rst
    trunk/contrib/llvm/tools/clang/docs/PCHLayout.graffle
    trunk/contrib/llvm/tools/clang/docs/PTHInternals.rst
    trunk/contrib/llvm/tools/clang/docs/RAVFrontendAction.rst
    trunk/contrib/llvm/tools/clang/docs/ReleaseNotes.rst
    trunk/contrib/llvm/tools/clang/docs/ThreadSanitizer.rst
    trunk/contrib/llvm/tools/clang/docs/Tooling.rst
    trunk/contrib/llvm/tools/clang/docs/UsersManual.rst
    trunk/contrib/llvm/tools/clang/docs/analyzer/DebugChecks.rst
    trunk/contrib/llvm/tools/clang/docs/analyzer/IPA.txt
    trunk/contrib/llvm/tools/clang/docs/analyzer/RegionStore.txt
    trunk/contrib/llvm/tools/clang/docs/analyzer/conf.py
    trunk/contrib/llvm/tools/clang/docs/analyzer/index.rst
    trunk/contrib/llvm/tools/clang/docs/analyzer/make.bat
    trunk/contrib/llvm/tools/clang/docs/conf.py
    trunk/contrib/llvm/tools/clang/docs/doxygen.cfg.in
    trunk/contrib/llvm/tools/clang/docs/doxygen.css
    trunk/contrib/llvm/tools/clang/docs/doxygen.footer
    trunk/contrib/llvm/tools/clang/docs/doxygen.header
    trunk/contrib/llvm/tools/clang/docs/doxygen.intro
    trunk/contrib/llvm/tools/clang/docs/index.rst
    trunk/contrib/llvm/tools/clang/docs/make.bat
    trunk/contrib/llvm/tools/clang/docs/tools/clang.pod
    trunk/contrib/llvm/tools/clang/docs/tools/dump_ast_matchers.py
    trunk/contrib/llvm/tools/clang/docs/tools/manpage.css
    trunk/contrib/llvm/tools/clang/examples/PrintFunctionNames/PrintFunctionNames.cpp
    trunk/contrib/llvm/tools/clang/examples/PrintFunctionNames/PrintFunctionNames.exports
    trunk/contrib/llvm/tools/clang/examples/analyzer-plugin/MainCallChecker.cpp
    trunk/contrib/llvm/tools/clang/examples/clang-interpreter/main.cpp
    trunk/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h
    trunk/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def
    trunk/contrib/llvm/tools/clang/include/clang/Basic/Builtins.h
    trunk/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsAArch64.def
    trunk/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def
    trunk/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.def
    trunk/contrib/llvm/tools/clang/include/clang/Basic/Version.inc.in
    trunk/contrib/llvm/tools/clang/include/clang/Config/config.h.cmake
    trunk/contrib/llvm/tools/clang/include/clang/Config/config.h.in
    trunk/contrib/llvm/tools/clang/include/clang/Driver/Options.td
    trunk/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
    trunk/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
    trunk/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
    trunk/contrib/llvm/tools/clang/lib/Basic/Version.cpp
    trunk/contrib/llvm/tools/clang/lib/CodeGen/CGAtomic.cpp
    trunk/contrib/llvm/tools/clang/lib/Driver/Driver.cpp
    trunk/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
    trunk/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
    trunk/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
    trunk/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp
    trunk/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
    trunk/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp
    trunk/contrib/llvm/tools/clang/runtime/compiler-rt/clang_linux_test_input.c
    trunk/contrib/llvm/tools/clang/svn-commit.2.tmp
    trunk/contrib/llvm/tools/clang/svn-commit.tmp
    trunk/contrib/llvm/tools/clang/test/ARCMT/Common.h
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC-check-warn-nsalloc.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC-check.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-arc-runtime.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-arc-runtime.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-finalize-removal.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-finalize-removal.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC.h
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/GC.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test.h
    trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test.h.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test1.m.in
    trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test1.m.in.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test2.m.in
    trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test2.m.in.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/api.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/api.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-no-arc-runtime.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-no-arc-runtime.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-with-arc-runtime.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-with-arc-runtime.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-2.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-2.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-3.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-3.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-check.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/autoreleases.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/autoreleases.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/block_copy_release.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/block_copy_release.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/check-api.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/check-with-pch.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/check-with-serialized-diag.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/checking.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-checking.mm
    trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-rewrite.mm
    trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-rewrite.mm.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/dealloc.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/dealloc.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/dispatch.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/dispatch.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/driver-migrate.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/init.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/init.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-emit-errors.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-plist-output.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-space-in-path.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-with-pch.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/migrate.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast-2.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-boxing.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-boxing.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-numeric-literals.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-numeric-literals.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-unavailable.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-unavailable.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-with-pch.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-with-pch.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/protected-scope.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/protected-scope.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/releases-driver.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/releases-driver.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/releases.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/releases.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-method.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-method.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-zerouts.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-zerouts.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/remove-statements.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/remove-statements.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/retains.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/retains.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/rewrite-block-var.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/rewrite-block-var.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/safe-arc-assign.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/safe-arc-assign.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/verify.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-check.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-migrate.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-migrate.m.result
    trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-modify.m
    trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-modify.m.result
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/category1.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/category2.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class-template1.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class-template2.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class1.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class2.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/enum1.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/enum2.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/exprs1.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/exprs2.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/function1.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/function2.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/interface1.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/interface2.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/namespace1.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/namespace2.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/property1.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/property2.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/struct1.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/struct2.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/typedef1.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/typedef2.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var1.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var1.h
    trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var2.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/category.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/class-template.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/class.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/enum.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/exprs.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/function.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/interface.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/namespace.cpp
    trunk/contrib/llvm/tools/clang/test/ASTMerge/property.m
    trunk/contrib/llvm/tools/clang/test/ASTMerge/struct.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/typedef.c
    trunk/contrib/llvm/tools/clang/test/ASTMerge/var.c
    trunk/contrib/llvm/tools/clang/test/Analysis/CFContainers-invalid.c
    trunk/contrib/llvm/tools/clang/test/Analysis/CFContainers.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/CFDateGC.m
    trunk/contrib/llvm/tools/clang/test/Analysis/CFNumber.c
    trunk/contrib/llvm/tools/clang/test/Analysis/CFRetainRelease_NSAssertionHandler.m
    trunk/contrib/llvm/tools/clang/test/Analysis/CGColorSpace.c
    trunk/contrib/llvm/tools/clang/test/Analysis/CheckNSError.m
    trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-cxx.h
    trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-for-malloc.h
    trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-for-simple-stream.h
    trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-objc.h
    trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator.h
    trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+NewDelete_intersections.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/MismatchedDeallocator-checker-test.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/MismatchedDeallocator-path-notes.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/MissingDealloc.m
    trunk/contrib/llvm/tools/clang/test/Analysis/NSContainers.m
    trunk/contrib/llvm/tools/clang/test/Analysis/NSPanel.m
    trunk/contrib/llvm/tools/clang/test/Analysis/NSString.m
    trunk/contrib/llvm/tools/clang/test/Analysis/NSWindow.m
    trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete+MismatchedDeallocator_intersections.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-checker-test.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-custom.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-intersections.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-path-notes.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-variadic.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/NoReturn.m
    trunk/contrib/llvm/tools/clang/test/Analysis/OSAtomic_mac.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/ObjCProperties.m
    trunk/contrib/llvm/tools/clang/test/Analysis/ObjCRetSigs.m
    trunk/contrib/llvm/tools/clang/test/Analysis/PR12905.c
    trunk/contrib/llvm/tools/clang/test/Analysis/PR2599.m
    trunk/contrib/llvm/tools/clang/test/Analysis/PR2978.m
    trunk/contrib/llvm/tools/clang/test/Analysis/PR3991.m
    trunk/contrib/llvm/tools/clang/test/Analysis/PR7218.c
    trunk/contrib/llvm/tools/clang/test/Analysis/PR9741.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/additive-folding-range-constraints.c
    trunk/contrib/llvm/tools/clang/test/Analysis/additive-folding.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/analyzeOneFunction.m
    trunk/contrib/llvm/tools/clang/test/Analysis/analyze_display_progress.c
    trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-config.c
    trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-config.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-stats.c
    trunk/contrib/llvm/tools/clang/test/Analysis/array-struct-region.c
    trunk/contrib/llvm/tools/clang/test/Analysis/array-struct-region.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/array-struct.c
    trunk/contrib/llvm/tools/clang/test/Analysis/auto-obj-dtors-cfg-output.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/base-init.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/bitwise-ops.c
    trunk/contrib/llvm/tools/clang/test/Analysis/blocks-no-inline.c
    trunk/contrib/llvm/tools/clang/test/Analysis/blocks.m
    trunk/contrib/llvm/tools/clang/test/Analysis/bool-assignment.c
    trunk/contrib/llvm/tools/clang/test/Analysis/bstring.c
    trunk/contrib/llvm/tools/clang/test/Analysis/call-invalidation.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/casts.c
    trunk/contrib/llvm/tools/clang/test/Analysis/casts.m
    trunk/contrib/llvm/tools/clang/test/Analysis/cfg.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/cfref_PR2519.c
    trunk/contrib/llvm/tools/clang/test/Analysis/cfref_rdar6080742.c
    trunk/contrib/llvm/tools/clang/test/Analysis/check-deserialization.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/chroot.c
    trunk/contrib/llvm/tools/clang/test/Analysis/comparison-implicit-casts.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/complex-init-list.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/complex.c
    trunk/contrib/llvm/tools/clang/test/Analysis/concrete-address.c
    trunk/contrib/llvm/tools/clang/test/Analysis/conditional-operator-path-notes.c
    trunk/contrib/llvm/tools/clang/test/Analysis/conditional-operator.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/constant-folding.c
    trunk/contrib/llvm/tools/clang/test/Analysis/coverage.c
    trunk/contrib/llvm/tools/clang/test/Analysis/cstring-syntax-cxx.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/cstring-syntax.c
    trunk/contrib/llvm/tools/clang/test/Analysis/ctor-inlining.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/cxx-crashes.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/cxx-for-range-cfg.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/cxx-method-names.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/cxx11-crashes.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.c
    trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.m
    trunk/contrib/llvm/tools/clang/test/Analysis/debug-CallGraph.c
    trunk/contrib/llvm/tools/clang/test/Analysis/default-analyze.m
    trunk/contrib/llvm/tools/clang/test/Analysis/default-diagnostic-visitors.c
    trunk/contrib/llvm/tools/clang/test/Analysis/delegates.m
    trunk/contrib/llvm/tools/clang/test/Analysis/derived-to-base.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/deref-track-symbolic-region.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/explicit-suppression.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/false-positive-suppression.c
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/no-prune-paths.c
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/shortest-path-suppression.c
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-callee.h
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-caller.c
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-param.c
    trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-param.m
    trunk/contrib/llvm/tools/clang/test/Analysis/div-zero.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/domtest.c
    trunk/contrib/llvm/tools/clang/test/Analysis/dtor.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/dtors-in-dtor-cfg-output.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/dynamic-cast.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/elementtype.c
    trunk/contrib/llvm/tools/clang/test/Analysis/engine/replay-without-inlining.c
    trunk/contrib/llvm/tools/clang/test/Analysis/enum.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/exceptions.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/exercise-ps.c
    trunk/contrib/llvm/tools/clang/test/Analysis/fields.c
    trunk/contrib/llvm/tools/clang/test/Analysis/free.c
    trunk/contrib/llvm/tools/clang/test/Analysis/func.c
    trunk/contrib/llvm/tools/clang/test/Analysis/global-region-invalidation.c
    trunk/contrib/llvm/tools/clang/test/Analysis/global_region_invalidation.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/html-diags-multifile.c
    trunk/contrib/llvm/tools/clang/test/Analysis/html-diags-multifile.h
    trunk/contrib/llvm/tools/clang/test/Analysis/html-diags.c
    trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations-limited-loops.c
    trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.c
    trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.m
    trunk/contrib/llvm/tools/clang/test/Analysis/initializer.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/initializers-cfg-output.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inline-not-supported.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inline-plist.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inline-unique-reports.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inline.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inline.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inline2.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inline3.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inline4.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/DynDispatchBifurcate.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCClassMethod.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCInstanceMethod.h
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCInstanceMethod.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/ObjCDynTypePopagation.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/ObjCImproperDynamictallyDetectableCast.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/RetainCountExamples.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/assume-super-init-does-not-return-nil.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/containers.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/eager-reclamation-path-notes.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/retain-count-self-init.m
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/stl.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/test-always-inline-size-option.c
    trunk/contrib/llvm/tools/clang/test/Analysis/inlining/test_objc_inlining_option.m
    trunk/contrib/llvm/tools/clang/test/Analysis/ivars.m
    trunk/contrib/llvm/tools/clang/test/Analysis/keychainAPI-diagnostic-visitor.m
    trunk/contrib/llvm/tools/clang/test/Analysis/keychainAPI.m
    trunk/contrib/llvm/tools/clang/test/Analysis/lambdas.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/logical-ops.c
    trunk/contrib/llvm/tools/clang/test/Analysis/lvalue.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc-annotations.c
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc-interprocedural.c
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc-overflow.c
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc-overflow.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc-plist.c
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc-sizeof.c
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc.c
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc.m
    trunk/contrib/llvm/tools/clang/test/Analysis/malloc.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/member-expr.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/method-arg-decay.m
    trunk/contrib/llvm/tools/clang/test/Analysis/method-call-intra-p.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/method-call-path-notes.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/method-call.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-64.m
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-arm.m
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-eager-assume.m
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-ranges.m
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store-i386.m
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store-x86_64.m
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.m
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps.c
    trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps.m
    trunk/contrib/llvm/tools/clang/test/Analysis/new-with-exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/new.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret-region.m
    trunk/contrib/llvm/tools/clang/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret.m
    trunk/contrib/llvm/tools/clang/test/Analysis/no-exit-cfg.c
    trunk/contrib/llvm/tools/clang/test/Analysis/no-outofbounds.c
    trunk/contrib/llvm/tools/clang/test/Analysis/nonnull.m
    trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-path-notes.m
    trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-ps-region.c
    trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-ps.c
    trunk/contrib/llvm/tools/clang/test/Analysis/nullptr.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m
    trunk/contrib/llvm/tools/clang/test/Analysis/objc-arc.m
    trunk/contrib/llvm/tools/clang/test/Analysis/objc-bool.m
    trunk/contrib/llvm/tools/clang/test/Analysis/objc-boxing.m
    trunk/contrib/llvm/tools/clang/test/Analysis/objc-for.m
    trunk/contrib/llvm/tools/clang/test/Analysis/objc-method-coverage.m
    trunk/contrib/llvm/tools/clang/test/Analysis/objc-properties.m
    trunk/contrib/llvm/tools/clang/test/Analysis/objc-string.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/objc-subscript.m
    trunk/contrib/llvm/tools/clang/test/Analysis/objc_invalidation.m
    trunk/contrib/llvm/tools/clang/test/Analysis/operator-calls.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/out-of-bounds.c
    trunk/contrib/llvm/tools/clang/test/Analysis/outofbound-notwork.c
    trunk/contrib/llvm/tools/clang/test/Analysis/outofbound.c
    trunk/contrib/llvm/tools/clang/test/Analysis/override-werror.c
    trunk/contrib/llvm/tools/clang/test/Analysis/plist-html-macros.c
    trunk/contrib/llvm/tools/clang/test/Analysis/plist-output-alternate.m
    trunk/contrib/llvm/tools/clang/test/Analysis/plist-output.m
    trunk/contrib/llvm/tools/clang/test/Analysis/pointer-to-member.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/pr4209.m
    trunk/contrib/llvm/tools/clang/test/Analysis/pr_2542_rdar_6793404.m
    trunk/contrib/llvm/tools/clang/test/Analysis/pr_4164.c
    trunk/contrib/llvm/tools/clang/test/Analysis/properties.m
    trunk/contrib/llvm/tools/clang/test/Analysis/pthreadlock.c
    trunk/contrib/llvm/tools/clang/test/Analysis/ptr-arith.c
    trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6442306-1.m
    trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6540084.m
    trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6541136-region.c
    trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6562655.m
    trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m
    trunk/contrib/llvm/tools/clang/test/Analysis/rdar-7168531.m
    trunk/contrib/llvm/tools/clang/test/Analysis/redefined_system.c
    trunk/contrib/llvm/tools/clang/test/Analysis/refcnt_naming.m
    trunk/contrib/llvm/tools/clang/test/Analysis/reference.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/reference.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/region-1.m
    trunk/contrib/llvm/tools/clang/test/Analysis/region-store.c
    trunk/contrib/llvm/tools/clang/test/Analysis/region-store.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/reinterpret-cast.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-cf-audited.m
    trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-gc-only.m
    trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-inline.m
    trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-path-notes-gc.m
    trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-path-notes.m
    trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-region-store.m
    trunk/contrib/llvm/tools/clang/test/Analysis/retain-release.m
    trunk/contrib/llvm/tools/clang/test/Analysis/retain-release.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/security-syntax-checks-no-emit.c
    trunk/contrib/llvm/tools/clang/test/Analysis/security-syntax-checks.m
    trunk/contrib/llvm/tools/clang/test/Analysis/self-init.m
    trunk/contrib/llvm/tools/clang/test/Analysis/shallow-mode.m
    trunk/contrib/llvm/tools/clang/test/Analysis/simple-stream-checks.c
    trunk/contrib/llvm/tools/clang/test/Analysis/sizeofpointer.c
    trunk/contrib/llvm/tools/clang/test/Analysis/stack-addr-ps.c
    trunk/contrib/llvm/tools/clang/test/Analysis/stack-addr-ps.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/stack-block-returned.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/stackaddrleak.c
    trunk/contrib/llvm/tools/clang/test/Analysis/static_local.m
    trunk/contrib/llvm/tools/clang/test/Analysis/stats.c
    trunk/contrib/llvm/tools/clang/test/Analysis/stream.c
    trunk/contrib/llvm/tools/clang/test/Analysis/string-fail.c
    trunk/contrib/llvm/tools/clang/test/Analysis/string.c
    trunk/contrib/llvm/tools/clang/test/Analysis/superclass.m
    trunk/contrib/llvm/tools/clang/test/Analysis/svalbuilder-logic.c
    trunk/contrib/llvm/tools/clang/test/Analysis/taint-generic.c
    trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.c
    trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.m
    trunk/contrib/llvm/tools/clang/test/Analysis/temp-obj-dtors-cfg-output.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/templates.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/temporaries.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/test-objc-non-nil-return-value-checker.m
    trunk/contrib/llvm/tools/clang/test/Analysis/test-variably-modified-types.c
    trunk/contrib/llvm/tools/clang/test/Analysis/traversal-algorithm.mm
    trunk/contrib/llvm/tools/clang/test/Analysis/traversal-path-unification.c
    trunk/contrib/llvm/tools/clang/test/Analysis/undef-buffers.c
    trunk/contrib/llvm/tools/clang/test/Analysis/uninit-msg-expr.m
    trunk/contrib/llvm/tools/clang/test/Analysis/uninit-ps-rdar6145427.m
    trunk/contrib/llvm/tools/clang/test/Analysis/uninit-sometimes.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals-ps-region.m
    trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals-ps.c
    trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals.m
    trunk/contrib/llvm/tools/clang/test/Analysis/unions-region.m
    trunk/contrib/llvm/tools/clang/test/Analysis/unions.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/unix-fns.c
    trunk/contrib/llvm/tools/clang/test/Analysis/unreachable-code-path.c
    trunk/contrib/llvm/tools/clang/test/Analysis/unused-ivars.m
    trunk/contrib/llvm/tools/clang/test/Analysis/variadic-method-types.m
    trunk/contrib/llvm/tools/clang/test/Analysis/virtualcall.cpp
    trunk/contrib/llvm/tools/clang/test/Analysis/virtualcall.h
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.def.odr/p1-var.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.def.odr/p2-typeid.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.link/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.link/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p2-template-id.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p1-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p4-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.elab/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.elab/templateid.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/p6-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.udir/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p12.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p13.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.local/p4-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.pdecl/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.pdecl/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.start/basic.start.main/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.deallocation/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-nodef.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-noexceptions.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.types/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.base/class.base.init/p5-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.bit/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1-ambiguous.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p13.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p14.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p1b.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p5-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p8-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.mfct/class.mfct.non-static/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p1-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.nested.type/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.static/class.static.data/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.static/class.static.data/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.union/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/class.union/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class/p6-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.base/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.base/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.dcl/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.nest/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p2-cxx03.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p9-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.protected/p1-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.protected/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.access/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p16.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p12.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/class.derived/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.mem/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.prom/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.prom/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.ptr/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.qual/pr6089.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/namespace.memdef/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/namespace.unnamed/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p13.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p3-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p5-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p6-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udir/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udir/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.depend/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.depend/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.enum/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.link/p7-2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.link/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p3-1y.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6-1y.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p4-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/p4-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.delete/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x-fixits.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/basic.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-cxx03-extra-copy.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-cxx0x-no-extra-copy.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-examples.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-var.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.string/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.string/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p14-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.array/p1-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.array/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p13.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p14.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p2-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p9-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.name/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/p4-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.handle/p16.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/canonical.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p14-ir.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p14.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p15.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p2-dynamic-types.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p2-places.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p5-pointers.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p5-virtual.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p9-dynamic.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p9-noexcept.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/template.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.ass/p9-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.cast/p4-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.cast/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p3-0x-nowarn.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p5-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.mptr.oper/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.mptr.oper/p6-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.const.cast/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.dynamic.cast/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.ref/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.reinterpret.cast/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.static.cast/p9-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.type.conv/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p4-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p8-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks-irgen.mm
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.mm
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/default-arguments.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p12.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p13.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p16.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p18.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p19.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p20.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p21.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p23.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4.mm
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/templates.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.delete/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p17-crash.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p17.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p19.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p2-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p20-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p20.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.sizeof/p5-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/sema.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/ser.h
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/p10-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/expr/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.charset/p2-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.charset/p2-cxx98.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ccon/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.pptoken/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.built/p23.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.built/p25.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.load/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.best.ics/over.ics.list/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.best.ics/over.ics.user/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.ics.rank/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/over.match.copy/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/p4-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p2-resolve-single-template-id.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.conv/class.conv.ctor/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/implicit-move-def.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/implicit-move.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p11.0x.copy.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p11.0x.move.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p12-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p13-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p15-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p15-inclass.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p18-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p20.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p23-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p25-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p28-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p33-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p8-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p4-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p5-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p6-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p10-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p5-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.free/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.free/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/elsewhere.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.init/class.base.init/p8-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.init/class.base.init/p9-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/special/class.temporary/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.ambig/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.dcl/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.dcl/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.label/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.select/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.select/stmt.switch/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1-11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.template/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.type/p2-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.type/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.class/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.enum/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1-retmem.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1inst.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/pr5056.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1-inst.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p8-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p9-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.order/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1-neg.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p4-neg.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/deduction.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-bind.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-function.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-tuple.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/ext-blocks.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/fixed-expansion.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/injected-class-name.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/metafunctions.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p5.mm
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3-nodeduct.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p9-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/cwg1170.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/basic.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.funcaddr/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p12.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p9-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p10-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p17.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p21.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p22.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p5-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p8-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p9-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p10-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p11-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p12.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p13.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p14.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p15-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p15.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p9-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.type/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep.res/temp.point/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/examples.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p13.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p14.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p15.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p16.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p17.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p18.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p19.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p20.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p21.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p5-example.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p10.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p12.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p2.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p3-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p3.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p4.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p5.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p6.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p7.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p8.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p9-linkage.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p9.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.inst/p1.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.inst/p11.cpp
    trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.type/p1-0x.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/Inputs/macros.h
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/Inputs/reserved.h
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/PR9728.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/auto.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/call.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/call.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/constexpr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/documentation.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case-qualified.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/function-templates.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/functions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/macros.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/member-access.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/member-access.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/namespace-alias.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/namespace.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/nested-name-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/objc-expr.m
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/objc-message.m
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/operator.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/ordinary-name.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/ordinary-name.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/preamble.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/some_struct.h
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/stdin.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/tag.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/tag.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/templates.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/truncation.c
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/truncation.c.h
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/using-namespace.cpp
    trunk/contrib/llvm/tools/clang/test/CodeCompletion/using.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-23-LoadQISIReloadFailure.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-24-ComplexSpaceInType.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-24-HandleCallInsnSEGV.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-ConditionalInCall.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-ReloadProblem.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-TypeVarNameCollision.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-UnnamedLocal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-14-EntryNodePreds.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-16-RenamingTest.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-17-ArgumentAddress.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-18-64bitConstant.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-18-StaticData.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-11-LargeCharInString.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-ArrayInitialization.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-StructInitialize.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-StructInitializer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-BrokenPHINode.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-BrokenSSA.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-QuotesInStrConst.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-07-SwitchStmt.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-08-LocalArray.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-09-StructRetVal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-10-StructParameters.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-05-23-StaticValues.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-05-23-TypeNameCollision.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-06-25-FWriteInterfaceFailure.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscListTests.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests3.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-16-HardStringInit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-17-StringConstant.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-SubregSetAssertion.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-UnionTest.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-VarArgsCallFailure.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-31-BadAssert.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-31-SubregFailure.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-08-02-UnionTest.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-08-19-RecursiveLocals.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-08-PointerShifts.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-18-UnionProblem.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-19-StarInLabel.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-10-12-TooManyArguments.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalBoolTest.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalConstantTest.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalRedefinition.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-StructParameters.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-01-30-UnionInit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-03-03-DeferredType.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-22-UnionCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-23-GCC-fold-infinite-recursion.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-26-CFECrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-29-MultipleFunctionDefinition.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-07-22-ArrayAccessTypeSafety.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-06-BuiltinSetjmpLongjmp.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-17-DeadCodeShortCircuit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-18-SigSetJmp.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-18-StructAsValue.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-BadBitfieldRef.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-PrototypeMismatch.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-vfork-bug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-BinOp-Type-Mismatch.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-StmtExpr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-WideString.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-23-LocalUnionTest.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-BitFieldStruct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-HugeCharConst.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-StructLayoutBug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-30-AggregateInitializer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-09-18-BitfieldTests.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-09-30-StructLayout.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-02-UnionLValueError.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-06-NegateExprType.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-09-UnionInitializerBug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-28-ident.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-29-AsmRename.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-C99-CompoundLiteral.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-EmptyStructCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-GlobalUnionInit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-03-AddrArrayElement.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-04-EmptyStruct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-04-OutOfMemory.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-08-PointerSubNotGetelementptr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-12-VoidString.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-13-TypeSafety.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-16-StaticArrayInit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-18-CondExprLValue.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-19-AddressOfRegister.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-19-BitFieldArray.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-Bitfields.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-ComplexDivision.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-UnionBitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-26-PointerShift.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-27-ConstructorCast.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-27-UnionCtorInitialization.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2003-12-14-ExternInlineSupport.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-01-01-UnknownInitSize.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-01-08-ExternInlineRedefine.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-12-LargeAggregateCopy.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-BuiltinFrameReturnAddress.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-IllegalVararg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-Memset.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-14-ZeroInitializer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-20-Builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-07-ComplexDivEquals.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-07-ExternalConstant.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-09-LargeArrayInitializers.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-15-SimpleIndirectGoto.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-16-AsmRegisterCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-05-07-VarArrays.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-05-21-IncompleteEnum.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-08-OpaqueStructArg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-17-UnorderedBuiltins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-17-UnorderedCompares.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-18-VariableLengthArrayOfStructures.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-07-06-FunctionCast.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-08-06-LargeStructTest.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-25-UnnamedBitfieldPadding.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-27-InvalidConstantExpr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-27-StaticFunctionRedeclare.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-ConstantInits.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-PointerDifference.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-VAArgError-ICE.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-02-20-AggregateSAVEEXPR.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-02-27-MarkGlobalConstant.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-05-OffsetOfHack.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-06-OffsetOfStructCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-11-Prefetch.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-04-09-ComplexOps.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-05-10-GlobalUnionInit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-20-SqrtNoErrno.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-26-UnionInitCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-28-IncorrectWeakGlobal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-20-ComplexConstants.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-24-AsmUserPrefix.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-24-BitFieldCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-12-04-AttributeUsed.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2005-12-04-DeclarationLineNumbers.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-13-Includes.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-13-StackSave.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-16-BitCountIntrinsicsUnsigned.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-23-FileScopeAsm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-03-MissingInitializer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-16-VectorCtor.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-17-KnRMismatch.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-05-19-SingleEltReturn.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-07-31-PR854.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-11-BitfieldRefCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-18-fwrite-cast-crash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-21-IncompleteElementType.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-25-DebugFilename.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-25-DebugFilename.h
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-28-SimpleAsm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-10-30-ArrayCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2006-12-14-ordered_expr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-06-KNR-Proto.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-20-VectorICE.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-24-InlineAsmCModifier.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-AddrLValue-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-AddrLValue.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-EmptyStruct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-07-AddrLabel.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-16-VoidPtrDiff.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-25-C-DotDotDot.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-01-VarSizeArrayIdx.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-05-DataLayout.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-26-BitfieldAfterZeroWidth.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-26-ZeroWidthBitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-27-VarLengthArray.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedBitFields-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedBitFields.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedStruct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PadBeforeZeroLengthField.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-UnPackedStruct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-InlineAsmStruct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-InlineAsmUnion.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-PR1321.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-13-InlineAsmStruct2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-13-InlineAsmUnion2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-17-ZeroSizeBitFields.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-VolatileStructCopy.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-bit-not-expr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-str-const.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-07-PaddingElements.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-08-PCH.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-11-str-const.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-15-PaddingElement.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-16-EmptyStruct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-29-UnionCopy.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-05-NoInlineAttribute.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-15-AnnotateAttribute.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-18-SextAttrAggregate.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-07-29-RestrictPtrArg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-01-LoadStoreAlign.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-21-ComplexCst.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-22-CTTZ.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-05-ConstCtor.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-12-PragmaPack.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-14-NegatePointer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-17-WeakRef.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-26-Alignment.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-27-ComplexIntCompare.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-28-PackedUnionMember.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-02-VolatileArray.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-15-VoidPtr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-30-Volatile.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-AlignedMemcpy.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-CopyAggregateAlign.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-ZeroAggregateAlign.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-28-GlobalInitializer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2007-12-16-AsmNoUnwind.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-04-WideBitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-07-UnusualIntSize.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-11-ChainConsistency.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-21-PackedBitFields.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-21-PackedStructField.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-24-StructAlignAndBitFields.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-25-ByValReadNone.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-28-PragmaMark.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-28-UnionSize.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-07-bitfield-bug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-08-bitfield-bug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-26-inline-asm-bug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-03-CtorAttrType.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-05-syncPtr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-24-BitField-And-Alloca.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-26-PackedBitFields.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-04-08-NoExceptions.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-06-CFECrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-12-TempUsedBeforeDef.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-19-AlwaysInline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-17-no-emit-on-error.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-22-packed-bitfield-access.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-29-override-alias-decl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-30-implicit-initialization.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-31-asm-labels.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-04-void-pointer-arithmetic.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-AlignPadding1.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-AlignPadding2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-GEPIntToPtr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-19-cast-of-typedef.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-09-03-WeakAlias.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-09-22-bad-switch-type.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-10-13-FrontendCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-10-30-ZeroPlacement.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-11-02-WeakAlias.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-11-08-InstCombineSelect.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2008-12-23-AsmIntPointerTie.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-01-05-BlockInlining.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-01-21-InvalidIterator.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-02-13-zerosize-union-field-ppc.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-02-13-zerosize-union-field.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-01-MallocNoAlias.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-08-ZeroEltStructCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-13-dbg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-22-increment-bitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-04-23-dbg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-04-28-UnionArrayCrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-04-EnumInreg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-22-callingconv.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-28-const-typedef.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-01-addrofknr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-14-HighlyAligned.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-14-anonymous-union-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-18-StaticInitTailPadPack.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-14-VoidPtr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-15-pad-wchar_t-array.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-22-StructLayout.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-31-DbgDeclare.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-08-14-vararray-crash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-09-24-SqrtErrno.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-10-20-GlobalDebug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2009-12-07-BitFieldAlignment.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-13-MemBarrier.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-14-FnType-DebugInfo.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-18-Inlined-Debug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-10-PointerName.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-15-DbgStaticVar.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-16-DbgScopes.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-18-Dbg-VectorType.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-03-09-DbgInfo.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-03-5-LexicalScope.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-05-26-AsmSideEffect.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-06-11-SaveExpr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-06-17-asmcrash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-14-overconservative-align.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-14-ref-off-end.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-08-10-DbgConstant.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-08-12-asm-aggr-arg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2010-12-01-CommonGlobal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2011-02-21-DATA-common.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-02-UnionInitializer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-08-ZeroFieldUnionInitializer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-31-ArrayRefFolding.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/3dnow-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/Atomics.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/BasicInstrs.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/Inputs/stdio.h
    trunk/contrib/llvm/tools/clang/test/CodeGen/OpaqueStruct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR2001-bitfield-reload.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR2413-void-address-cast-error.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR2643-null-store-to-bitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR2743-reference-missing-static.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR3130-cond-constant.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR3589-freestanding-libcalls.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR3613-static-decl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR3709-int-to-pointer-sign.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR4611-bitfield-layout.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/PR5060-align.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/_Bool-conversion.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/a15.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/a5.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-arguments.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-type-sizes.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-varargs.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/address-safety-attr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-cast.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-compound-literal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-field1.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/address-space.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/alias.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/align-global-large.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/align-local.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/align-param.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/alignment.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/alignof.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/alloca.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/altivec.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/always-inline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/always_inline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-builtin.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-field.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-global.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-loc.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-var.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-aapcs-vfp.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-aapcs-zerolength-bitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-abi-vector.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-apcs-zerolength-bitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-arguments.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-diag.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-variable.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-warn.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-cc.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-clear.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-homogenous.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-neon-fma.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-neon-misc.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-pcs.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-pnaclcall.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vaarg-align.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vector-align.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vector-arguments.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/array.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/arrayderef.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/asm-errors.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/asm-inout.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/asm-label.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/asm-reg-var-local.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/asm-variable.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/asm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/asm_arm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/assign.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/atomic-ops.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/atomic.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/atomic_ops.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/atomics-inlining.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-availability.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-cleanup.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-coldhot.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-minsize.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-naked.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-nodebug.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-noinline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-used.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weak-import.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weakref.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weakref2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attribute-section-data-common.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attribute_constructor.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/attributes.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/available-externally-suppress.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/avx-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/avx-cmp-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/avx-shuffle-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/avx2-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-assign.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-promote.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/block-3.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/block-byref-aggr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/block-copy.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-1.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-aligned-byref-variable.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-seq.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/blocks.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/blocksignature.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/blockstret.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/blockwithlocalstatic.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bmi-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bmi2-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bool-bitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bool-convert.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bool-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bool_test.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/boolassign.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/bounds-checking.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/branch-target-layout.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-attributes.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-count-zeros.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-expect.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-memfns.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-ms-noop.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-nanf.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-recursive.cc
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-rename.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-stackaddress.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-unwind-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-aarch64.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-arm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-mips-args.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-mips.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-multiprecision.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-nvptx.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-ppc-altivec.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-ppc.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-x86.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtinshufflevector.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/builtinshufflevector2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/byval-memcpy-elim.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/c-strings.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/c11atomics-ios.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/c11atomics.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/call.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/capture-complex-expr-in-block.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/cast-emit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/cast.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/catch-undef-behavior.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/cfstring.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/cfstring2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/char-literal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/cleanup-stack.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/code-coverage.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/complex-builtints.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/complex-convert.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/complex-indirect.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/complex-init-list.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/complex.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/compound-assign-overflow.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/compound-literal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/compound-type.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/compound.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/conditional-gnu-ext.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/conditional.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/const-arithmetic.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/const-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/const-label-addr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/const-unordered-compare.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/constant-comparison.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/constructor-attribute.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/count-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-condition.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-default-arg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-value-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/darwin-string-literals.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/darwin-thread-specifier.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-dead-local-var.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-args.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-block.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-compilation-dir.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-crash.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-enum.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-gline-tables-only.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-gline-tables-only2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-iv.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line3.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line4.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-member.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-scope.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-static.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-var-location.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-vector.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-vla.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/debug-line-1.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/decl-in-prototype.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/decl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/designated-initializers.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/dllimport-dllexport.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/dostmt.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/emit-all-decls.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/empty-union-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/enum.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/enum2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/exact-div-expr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/exceptions.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/exprs.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ext-vector-member-alignment.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ext-vector.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/extern-block-var.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/extern-inline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/extern-weak.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/f16c-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/fast-math.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ffp-contract-option.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/finite-math.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/flexible-array-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/fma-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/fma4-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/fold-const-declref.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/forceinline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/fp-contract-pragma.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/fp16-ops.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/func-aligned.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/func-decl-cleanup.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/func-in-block.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/func-ptr-cast-decl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/func-return-member.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/funccall.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/function-attributes.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/functions.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/global-blocks-lines.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/global-decls.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/global-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/global-with-initialiser.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/globalinit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/hidden-visibility.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/imaginary.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/implicit-arg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/incomplete-function-type-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/incomplete-function-type.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/indirect-goto.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/init-with-member-expr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/inline-asm-mrv.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/inline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/inline2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/instrument-functions.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/int-to-pointer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/integer-overflow.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/intel_ocl_bicc.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/kr-func-promote.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/kr-style-block.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/le32-arguments.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/le32-regparm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/libcall-declarations.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-complex.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-d.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-fno-builtin.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-ld.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/lifetime.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/lifetime2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/lineno-dbginfo.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/linetable-endscope.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/link-bitcode-file.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/linkage-redecl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/linux-arm-atomic.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/long-double-x86-nacl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/long-double-x86.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/lzcnt-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mandel.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mangle.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/may-alias.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mcount.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/merge-attrs.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/merge-statics.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/microsoft-call-conv-x64.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/microsoft-call-conv.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips-byval-arg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips-clobber-reg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips-constraint-regs.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips-constraints-mem.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips-inline-asm-modifiers.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips-target-data.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips-vector-arg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips-vector-return.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips16-attr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-class-return.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-f128-literal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-nontrivial-return.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-padding-arg.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/misaligned-param.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mms-bitfields.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-shift-with-immediate.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mrtd.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms-anonymous-struct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms-declspecs.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm-64.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-1.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-3.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-pack.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mult-alt-generic.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/mult-alt-x86.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/no-common.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/no-opt-volatile-memcpy.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/nobuiltin.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/noinline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-cc.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-cpus.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-inlineasm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/object-size.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/offsetof.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/opaque-pointer.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/overloadable.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/override-layout.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/packed-arrays.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/packed-nest-unpacked.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/packed-structure.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/packed-union.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/palignr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/parameter-passing.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pascal-string.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pascal-wchar-string.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pclmul-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-arithmetic.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-cmp-type.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-signext.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-to-int.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/popcnt-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/powerpc_types.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-align-long-double.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-complex-parms.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-complex-return.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-extend.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-struct-onefloat.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-varargs-complex.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-varargs-struct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pr12251.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pr13168.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pr2394.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pr3518.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pr4349.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pr5406.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pr9614.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-1.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-3.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-visibility.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-weak.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/predefined-expr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/prefetchw-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/private-extern-redef.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/private-extern.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/r5.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/rdrand-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/redef-ext-inline.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/redefine_extname.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/regparm-flag.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/regparm-struct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/regparm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/restrict.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/rtm-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-init-order.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-recover.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-thread-attr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-use-after-scope.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/shared-string-literals.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/sizeof-vla.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/sparc-target-data.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/split-debug-filename.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/sret.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/sret2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/sse-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/sse4a-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/stack-protector.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/statements.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/static-forward-decl-fun.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/static-forward-decl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/static-local-union.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/static-order.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/staticinit.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/stdcall-fastcall.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal-short-wstring.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal-unicode-conversion.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/struct-comma.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/struct-copy.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/struct-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/struct-matching-constraint.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/struct-passing.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/struct-x86-darwin.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/struct.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/switch-dce.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/switch.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/systemz-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/target-data.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-class.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-for-vptr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-struct.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGen/tentative-decls.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/thread-specifier.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/tls-model.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/transparent-union.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/trapv.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/typedef-func.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/typedef.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/types.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ubsan-blacklist.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/ucn-identifiers.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/uint128_t.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/unaligned-memcpy.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/union-align.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/union-init.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/union-init2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/union.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/unreachable.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-overflow.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-promotion.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-trapv.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/unwind-attr.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/utf16-cfstrings.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/varargs.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/variable-array.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/vector-alignment.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/vector.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/vfprintf.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/visibility.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/vla-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/vla-3.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/vla-4.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/vla.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/vld_dup.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/volatile-1.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/volatile-2.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/volatile.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/wchar-const.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/weak-global.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/weak-incomplete.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/weak_constant.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/whilestmt.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/writable-strings.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-darwin.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-linux.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-nommx.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-realign.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-win32.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments-darwin.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments-nacl.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments.c
    trunk/contrib/llvm/tools/clang/test/CodeGen/xop-builtins.c
    trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/address-spaces.cu
    trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/device-stub.cu
    trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/filter-decl.cu
    trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/kernel-call.cu
    trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/ptx-kernels.cu
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-02-WeakLinkage.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-18-PtrMemConstantInitializer.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-27-MultipleInheritanceThunk.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-29-DuplicatedCleanupTest.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-12-08-ArrayOfPtrToMemberFunc.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-01-11-DynamicInitializedConstant.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-08-ReinterpretCastCopy.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-09-UnmangledBuiltinMethods.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-15-CleanupsAndGotos.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-06-08-LateTemplateInstantiation.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-09-27-DidntEmitTemplate.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-11-27-ExceptionCleanupAssertion.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-11-27-FriendDefaultArgCrash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-01-03-StaticInitializers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-11-AnonymousUnion.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-13-BadDynamicInit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-14-BitFieldOffset.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-19-BitfieldStructCrash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-19-UnnamedVirtualThunkArgument.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-20-BrokenReferenceTest.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-03-01-GimplifyCrash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-03-06-C++RecurseCrash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-09-12-OpaqueStructCrash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-10-30-ClassBitfield.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-11-20-GlobalSymbols.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-11-30-ConstantExprCrash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-01-02-UnboundedArray.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-01-06-PtrMethodInit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFields-1.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsOverlap-2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsOverlap.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsSmall.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-StructPackedFieldUnpacked.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-10-PackedUnion.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-14-FNoBuiltin.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-05-03-VectorInit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-07-29-RestrictPtrArg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-07-29-RestrictRefArg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-09-10-RecursiveTypeResolution.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-10-01-StructResize.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2008-01-12-VecInit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2008-05-07-CrazyOffsetOf.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-03-17-dbg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-04-23-bool2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-05-04-PureConstNounwind.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-06-16-DebugInfoCrash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-07-16-Using.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-08-05-ZeroInitWidth.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-08-11-VectorRetTy.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-09-09-packed-layout.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-10-27-crash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-12-23-MissingSext.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-03-09-AnonAggregate.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-10-Var-DbgInfo.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-11-alwaysinlineinstantiation.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-12-PtrToMember-Dbg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-21-LocalVarDbg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-22-BitfieldInit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-22-ZeroBitfield.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-07-23-DeclLoc.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2011-12-19-init-list-ctor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2012-02-06-VecInitialization.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2012-03-16-StoreAlign.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/DynArrayInit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR4827-cast.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR4983-constructor-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5050-constructor-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5093-static-member-function.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5834-constructor-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5863-unreachable-block.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR6474.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/__null.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/aarch64-arguments.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/aarch64-cxxabi.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/abstract-class-ctors-dtors.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/address-of-fntemplate.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/alloca-align.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/anonymous-namespaces.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/anonymous-union-member-initializer.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-guard-variable.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-call-2.C
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-call.C
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-linkage.C
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-no-staticinit-section.C
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/arm-cc.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/arm.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-construction.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-operator-delete-call.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-pointer-decay.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-value-initialize.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/asm.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/assign-construct-memcpy.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/assign-operator.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/atomic.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/atomicinit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/attr-used.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/attr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bitfield-layout.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bitfield.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-byref-cxx-objc.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-destruct.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-in-ctor-dtor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/blocks-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/blocks.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bool-bitfield.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/builtins.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/c-linkage.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/c99-variable-length-array.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/call-arg-zero-temp.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cast-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/casts.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/catch-undef-behavior.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/class-layout.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/compound-literals.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/condition.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-expr-lvalue.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-gnu-ext.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-temporaries.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-base-cast.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-global-linkage.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-init-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-alias.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-attr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-convert.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-default-arg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-destructor-return-this.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-direct-call.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-for-array-members.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-init-reference.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-template.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructors.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conversion-function.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conversion-operator-base.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/convert-to-fptr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-1.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-3.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-volatile-synthesis.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-elim-2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-elim.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-synthesis-2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-synthesis.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-in-cplus-object.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-initialization.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/coverage.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cp-blocks-linetables.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx-apple-kext.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx-block-objects.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-defaulted-templates.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-delegating-ctors.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-constructors.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-references.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-scalars.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-exception-spec.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-initializer-aggregate.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-noreturn.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-special-members.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-thread-local.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-trivial-initializer-struct.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-unrestricted-union.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-user-defined-literal.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-vtable-key-function.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx1y-initializer-aggregate.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-artificial-arg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-blocks.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-byval.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-char16.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-class.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-context.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-ctor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-ctor2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-determinism.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-dup-fwd-decl.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-enum-class.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-enum.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-flex-member.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-fn-template.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-friend.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-fwd-ref.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-globalinit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-large-constant.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-limit-type.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-limit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-member.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method-spec.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-namespace.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-nullptr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-pubtypes.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-rvalue-ref.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-same-line.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-static-fns.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-static-member.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-array.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-limit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-member.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-quals.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-recursive.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-this.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-thunk.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-union-template.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-union.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-use-after-free.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-wchar.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-zero-length-arrays.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-lambda-expressions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-lambda-this.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/decl-ref-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-arg-temps.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-arguments.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-default-argument.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-for-members.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-template-member.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-destructor-nested.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-destructor-synthesis.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/deferred-global-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/delete-two-arg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/delete.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dependent-type-member-pointer.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-base-conv.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-base.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-virtual-base-class-calls-final.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-calls.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-debug-info.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-exception-spec.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructors.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast-always-null.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast-hint.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/eh.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/elide-call-reference.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/empty-classes.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/empty-union.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/enum.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/eval-recursive-constant.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exception-spec-decay.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exceptions-no-rtti.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/explicit-instantiation.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/expr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/extern-c.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fastcall.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/field-access-debug-info.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/for-range-temporaries.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/for-range.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/forward-enum.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fp16-mangle.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fp16-overload.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/friend-redecl.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/function-template-explicit-specialization.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/function-template-specialization.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-array-destruction.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-block-literal-helpers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-dtor-no-atexit.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-init-darwin.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-llvm-constant.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/goto.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-copy-assign-operator.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-copy-constructor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-instantiation-1.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/incomplete-member-function-pointer.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/incomplete-types.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/inheriting-constructor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/init-invariant.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/init-priority-attr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/inline-functions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-blocks.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-init-list.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-temporaries.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instrument-functions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/internal-linkage.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/key-function-vtable.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/lambda-expressions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/linetable-cleanup.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/lvalue-bitcasts.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/m64-ptr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-98.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-abi-examples.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-address-space.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-alias-template.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-exprs.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-extern-local.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-extreme.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-lambdas.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-class-names.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-class-vtables.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-classes-nested.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-abi-examples.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-back-references-pr13207.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-back-references.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-return-qualifiers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-template-callback.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-templates.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-vector-types.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-neon-vectors.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-nullptr-arg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ref-qualifiers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-std-externc.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-subst-std.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-subst.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-system-header.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-template.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-this-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-unnameable-conversions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-unnamed.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-valist.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-variadic-templates.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-alignment.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-call-parens.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-data-pointers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-expressions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-function-pointer-calls.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-function-pointers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-functions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-anon-union.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-assignment.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-struct.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-union.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-templates.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-array-cookies.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-default-cc.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-member-pointers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-methods.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-structors.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-interface.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-uuidof-unsupported-target.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-uuidof.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ms_wide_predefined_expr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/multi-dim-operator-new.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/namespace-aliases.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nested-base-member-access.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-array-init-exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-array-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-operator-phi.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-overflow.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-with-default-arg.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/no-exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/no-opt-volatile-memcpy.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/noinline-template.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nonconst-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nrvo-noreturn.cc
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nrvo.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nullptr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/operator-new.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/overload-binop-implicitconvert.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/override-layout.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/partial-destruction.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pod-member-memcpys.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pointers-to-data-members.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr11676.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr11797.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12104.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12104.h
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12251.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr13396.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr15753.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr9130.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr9965.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-pack-2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-pack.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-visibility.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-weak.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/predefined-expr-sizeof.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/predefined-expr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ptr-to-datamember.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ptr-to-member-function.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-bind-default-argument.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-cast.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-field.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-in-block-args.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-in-blocks.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/references.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/regparm.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reinterpret-cast.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/return.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-fundamental.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-layout.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-linkage.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-visibility.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/runtimecc.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rvalue-references.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/scoped-enums-debug-info.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/scoped-enums.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/sel-address.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/sizeof-unwind-exception.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/skip-vtable-pointer-initialization.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/specialized-static-data-mem-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-assert.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-data-member.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-1.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-3.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-local-in-local-class.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-member-variable-explicit-specialization.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-mutable.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/stmtexpr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding-1.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding-2.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/temp-order.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-anonymous-types.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-anonymous-union-member-initializer.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-dependent-bind-temporary.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-inner-struct-visibility-hidden.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-instantiation.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-linkage.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-static-var-defer.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/temporaries.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thiscall-struct-return.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/threadsafe-statics-exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/threadsafe-statics.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expression-cleanup.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expression-dtor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expressions.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunk-linkonce-odr.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunk-use-after-free.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunks-available-externally.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunks.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/tls-init-funcs.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/trivial-constructor-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/try-catch.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/type_visibility.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeid-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeid.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeinfo
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/unary-type-trait.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/uncode-string.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/union-dtor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/unknown-anytype.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/value-init.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vararg-conversion-ctor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vararg-non-pod.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/varargs.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/variadic-templates.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-canonical-decl.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-dtor-gen.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-dtor-key.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-template-vtable.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-thunk-reference.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-cast.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-ctor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-destructor-call.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-bases.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-destructor-calls.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-destructor-synthesis.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-function-calls.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-functions-incomplete-types.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-implicit-copy-assignment.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-implicit-move-assignment.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-inherited-destructor.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-operator-call.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-pseudo-destructor-call.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-hidden-extern-templates.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-inlines-hidden.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-ms-compat.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vla.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/volatile-1.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/volatile.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-available-externally.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-cast-crash.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-debug-info.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function-arm.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function-ios.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout-extreme.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-linkage.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtt-layout.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/warn-padded-packed.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/weak-extern-typeinfo.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/weak-external.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/x86_32-arguments.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenCXX/x86_64-arguments.cpp
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-04-03-ObjcEH.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-05-02-Strong.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-10-18-ProDescriptor.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-10-23-GC-WriteBarrier.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-08-25-incompatible-cond-expr.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-10-23-invalid-icmp.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-10-3-EhValue.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-12-Metadata.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-24-ConstCFStrings.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-25-Blocks.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-01-21-invalid-debug-info.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-01-26-WriteBarrier-2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-02-05-VolatileProp.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-08-05-utf16.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-01-utf16-with-null.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-09-DbgSelf.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-15-Dbg-MethodStart.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-23-DbgInheritance.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-03-17-StructRef.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2011-03-08-IVarLookup.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/Inputs/literal-support.h
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-arm.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-block-copy-escape.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-blocks.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-bridged-cast.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-32bit-block-var-layout-2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-32bit-block-var-layout.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-block-var-inlined-layout.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-block-var-layout.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-compound-stmt.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-cond-stmt.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-exceptions.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-foreach.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-ivar-layout.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-linetable.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-literals.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-loadweakretained-release.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-no-arc-exceptions.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-no-runtime.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-precise-lifetime.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-related-result-type.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-ternary-op.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unbridged-cast.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unopt.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unoptimized-byref-var.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-weak-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-with-atthrow.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arm-atomic-scalar-setter-getter.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/assign.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/atomic-aggregate-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-availability.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-exception.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-minsize.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-strong.c
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/auto-property-synthesize-protocol.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/autorelease.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-access.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-gnu.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-ivar-metadata.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-ivar-offsets.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield_encoding.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-6.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-byref-variable-layout.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-var-layout.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-3.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-4.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-5.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-ivar-debug.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/boxing.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/builtin-memfns.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/builtins.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/catch-lexical-block.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/category-class.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/category-super-class-meth.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/class-getter-dotsyntax.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/class-type.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/compatibility-alias.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/complex-double-abi.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/complex-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-string-class-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-string-class.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-strings.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/continuation-class.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/deadcode_strip_used_var.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-captured-self.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-helper.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-line.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension3.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-crash-2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-crash.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-default-synth-ivar.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-fwddecl.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-getter-name.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-id-with-protocol.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-impl.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-extension.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-indirect.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-private.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-linkagename.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property3.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property4.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property5.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-pubtypes.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-selector.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-self.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-static-var.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-synthesis.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-property-synth.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/default-property-synthesis.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax-2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-cstyle-method.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-3.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-4.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-5.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-6.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/exceptions-nonfragile.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/exceptions.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/extended-block-signature-encode.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/externally-initialized-selectors.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/for-in.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/forward-class-impl-metadata.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/forward-decl-param.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/fp2ret.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/fpret.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/function-decay.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gc-weak-attribute.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gc.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/getter-property-mismatch.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/getter-property-type-mismatch.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gnu-exceptions.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/hidden-visibility.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/hidden.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/id-isa-codegen.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/illegal-UTF8.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/image-info.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/implicit-objc_msgSend.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/implicit-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/instance-method-metadata.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/interface-layout-64.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/interface.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-base-as-invariant-load.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-invariant.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-64-bitfields.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-64.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-array0-struct.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-no-optimize.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-nonfragile-abi2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivars.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/layout-bitfield-crash.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/link-errors.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/local-static-block.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/message-arrays.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/messages-2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/messages.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata-symbols-32.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata-symbols-64.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata_symbols.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/misc-atomic-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/mrr-autorelease.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/mrr-captured-block-var-inlined-layout.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/nested-rethrow.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/newproperty-nested-synthesis-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/next-objc-dispatch.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/no-category-class.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/no-vararg-messaging.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/non-lazy-classes.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/nonlazy-msgSend.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ns-constant-strings.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ns_consume_null_check.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-align.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-arc-container-subscripting.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-assign-ivar.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-container-subscripting-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-container-subscripting.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-dictionary-literal.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-fixed-enum.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-gc-aggr-assign.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-literal-debugger-test.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-literal-tests.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-read-weak-byref.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-assign-global.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-ivar-assign.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-legacy-dispatch.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-new-gc-api-strongcast.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-no-strong-cast.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-no-write-barrier.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-nonfragile-abi-impl.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-property-encode.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-protocol-enc.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-retain-codegen.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast-block-import.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-assign.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-block-call.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-compare.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-import-attribute.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-ivar-debug.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-ivar.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-2.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-3.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-4.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-5.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/object-incr-decr-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objfw.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/optimized-setter-ios-device.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/optimized-setter.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/overloadable.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/predefined-expr.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/prop-metadata-gnu.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-aggregate.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-agrr-getter.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-category-impl.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-complex.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-dbg.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-getter-dot-syntax.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-incr-decr-1.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-list-in-class.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-ref-cast-to-void.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-setter-attr.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-type-mismatch.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocol-in-extended-class.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocol-property-synth.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocols-lazy.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocols.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/rdr-6732143-dangling-block-reference.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/related-result-type.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/reorder-synthesized-ivars.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/return-objc-object.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/runtime-fns.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/sel-as-builtin-type.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/selector-ref-invariance.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/simplify-exceptions.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/stand-alone-implementation.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-classmethod-category.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-dotsyntax-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-dotsyntax-struct-property.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-message-fragileabi.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synchronized.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synthesize_ivar-cont-class.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synthesize_ivar.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/tentative-cfconstantstring.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/terminate.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/try.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/undefined-protocol.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/unname-bf-metadata.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/unoptimized-setter.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/variadic-sends.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjC/x86_64-struct-return-gc.m
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2007-10-03-MetadataPointers.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2010-08-04-Template.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2010-08-06-X.Y-syntax.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/Inputs/literal-support.h
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/address-safety-attr.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-attrs.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-blocks.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-exceptions.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-globals.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-mangle.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-move.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-new-delete.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-pseudo-destructors.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-references.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-special-member-functions.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/block-in-template-inst.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/block-var-layout.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/blocks.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/catch-id-type.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/copy.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/copyable-property-object.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/debug-info.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/encode.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/exceptions-legacy.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/exceptions.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/externally-initialized-selectors.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/foreach-statement.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/gc.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implementation-in-extern-c.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implicit-copy-assign-operator.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implicit-copy-constructor.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/ivar-objects.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/lambda-expressions.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/literals.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/lvalue-reference-getter.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/mangle-blocks.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/mangle.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/message-reference.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/message.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/method-local-extern-mangle.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/nrvo.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/objc-container-subscripting-1.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/objc-container-subscripting.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/pr14474-gline-tables-only.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-derived-to-base-conv.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-dot-copy.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-dot-reference.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-conditional-exp.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference-1.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference-2.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-objects.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-reference.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/refence-assign-write-barrier.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/references.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/rtti.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/selector-expr-lvalue.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/unknown-anytype.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/write-barrier-global-assign.mm
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/2011-04-15-vec-init-from-vec.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/address-spaces.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/event_t.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ext-vector-shuffle.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/fpmath.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/half.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-arg-info.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-attributes.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-metadata.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/local.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/logical-ops.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/opencl_types.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ptx-calls.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ptx-kernels.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/shifts.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/single-precision-constant.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/spir32_target.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/spir64_target.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vectorLoadStore.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_literals_nested.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_literals_valid.cl
    trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_logops.cl
    trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.c
    trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.cpp
    trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.m
    trunk/contrib/llvm/tools/clang/test/Coverage/c-language-features.inc
    trunk/contrib/llvm/tools/clang/test/Coverage/codegen-gnu.m
    trunk/contrib/llvm/tools/clang/test/Coverage/codegen-next.m
    trunk/contrib/llvm/tools/clang/test/Coverage/codegen.c
    trunk/contrib/llvm/tools/clang/test/Coverage/cxx-language-features.inc
    trunk/contrib/llvm/tools/clang/test/Coverage/html-diagnostics.c
    trunk/contrib/llvm/tools/clang/test/Coverage/html-print.c
    trunk/contrib/llvm/tools/clang/test/Coverage/objc-language-features.inc
    trunk/contrib/llvm/tools/clang/test/Coverage/targets.c
    trunk/contrib/llvm/tools/clang/test/Coverage/verbose.c
    trunk/contrib/llvm/tools/clang/test/Driver/B-opt.c
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-ld
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ios
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/prefixed_tools_tree/x86_64--linux-as
    trunk/contrib/llvm/tools/clang/test/Driver/Inputs/prefixed_tools_tree/x86_64--linux-ld
    trunk/contrib/llvm/tools/clang/test/Driver/Ofast.c
    trunk/contrib/llvm/tools/clang/test/Driver/Wp-args.c
    trunk/contrib/llvm/tools/clang/test/Driver/Xarch.c
    trunk/contrib/llvm/tools/clang/test/Driver/Xlinker-args.c
    trunk/contrib/llvm/tools/clang/test/Driver/aarch64-features.c
    trunk/contrib/llvm/tools/clang/test/Driver/analyze.c
    trunk/contrib/llvm/tools/clang/test/Driver/android-standalone.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/apple-kext-mkernel.c
    trunk/contrib/llvm/tools/clang/test/Driver/arc-exceptions.m
    trunk/contrib/llvm/tools/clang/test/Driver/arc.c
    trunk/contrib/llvm/tools/clang/test/Driver/arch.c
    trunk/contrib/llvm/tools/clang/test/Driver/arclite-link.c
    trunk/contrib/llvm/tools/clang/test/Driver/arm-cortex-cpus.c
    trunk/contrib/llvm/tools/clang/test/Driver/arm-darwin-builtin.c
    trunk/contrib/llvm/tools/clang/test/Driver/arm-mfpmath.c
    trunk/contrib/llvm/tools/clang/test/Driver/arm-mfpu.c
    trunk/contrib/llvm/tools/clang/test/Driver/asan.c
    trunk/contrib/llvm/tools/clang/test/Driver/ast.c
    trunk/contrib/llvm/tools/clang/test/Driver/at_file.c
    trunk/contrib/llvm/tools/clang/test/Driver/at_file.c.args
    trunk/contrib/llvm/tools/clang/test/Driver/autolink_integrated_as.c
    trunk/contrib/llvm/tools/clang/test/Driver/bindings.c
    trunk/contrib/llvm/tools/clang/test/Driver/bitrig.c
    trunk/contrib/llvm/tools/clang/test/Driver/bounds-checking.c
    trunk/contrib/llvm/tools/clang/test/Driver/cc-log-diagnostics.c
    trunk/contrib/llvm/tools/clang/test/Driver/cc-print-options.c
    trunk/contrib/llvm/tools/clang/test/Driver/ccc-add-args.c
    trunk/contrib/llvm/tools/clang/test/Driver/ccc-as-cpp.c
    trunk/contrib/llvm/tools/clang/test/Driver/ccc-host-triple-no-integrated-as.c
    trunk/contrib/llvm/tools/clang/test/Driver/cfi.c
    trunk/contrib/llvm/tools/clang/test/Driver/claim-unused.c
    trunk/contrib/llvm/tools/clang/test/Driver/clang-c-as-cxx.c
    trunk/contrib/llvm/tools/clang/test/Driver/clang-exception-flags.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/clang-g-opts.c
    trunk/contrib/llvm/tools/clang/test/Driver/clang-translation.c
    trunk/contrib/llvm/tools/clang/test/Driver/clang_cpp.c
    trunk/contrib/llvm/tools/clang/test/Driver/clang_f_opts.c
    trunk/contrib/llvm/tools/clang/test/Driver/clang_f_opts.h
    trunk/contrib/llvm/tools/clang/test/Driver/clang_wrapv_opts.c
    trunk/contrib/llvm/tools/clang/test/Driver/color-diagnostics.c
    trunk/contrib/llvm/tools/clang/test/Driver/constructors.c
    trunk/contrib/llvm/tools/clang/test/Driver/cpath.c
    trunk/contrib/llvm/tools/clang/test/Driver/cpp-precomp.c
    trunk/contrib/llvm/tools/clang/test/Driver/crash-report.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-arch-default.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-as.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-asan-nofortify.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-debug-flags.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-dsymutil.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-iphone-defaults.m
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-ld.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-defaults.m
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-gc.m
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-options.m
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-sdkroot.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-verify-debug.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-version.c
    trunk/contrib/llvm/tools/clang/test/Driver/darwin-xarch.c
    trunk/contrib/llvm/tools/clang/test/Driver/debug-comp-dir.S
    trunk/contrib/llvm/tools/clang/test/Driver/debug-main-file.S
    trunk/contrib/llvm/tools/clang/test/Driver/debug-options-as.c
    trunk/contrib/llvm/tools/clang/test/Driver/debug-options.c
    trunk/contrib/llvm/tools/clang/test/Driver/debug-unsupported.c
    trunk/contrib/llvm/tools/clang/test/Driver/debug.c
    trunk/contrib/llvm/tools/clang/test/Driver/default-toolchain.c
    trunk/contrib/llvm/tools/clang/test/Driver/diagnostics.c
    trunk/contrib/llvm/tools/clang/test/Driver/dragonfly.c
    trunk/contrib/llvm/tools/clang/test/Driver/dwarf2-cfi-asm.c
    trunk/contrib/llvm/tools/clang/test/Driver/emit-llvm.c
    trunk/contrib/llvm/tools/clang/test/Driver/exceptions.m
    trunk/contrib/llvm/tools/clang/test/Driver/fast-math.c
    trunk/contrib/llvm/tools/clang/test/Driver/fcomment-block-commands.c
    trunk/contrib/llvm/tools/clang/test/Driver/flags.c
    trunk/contrib/llvm/tools/clang/test/Driver/fpack-struct.c
    trunk/contrib/llvm/tools/clang/test/Driver/fparse-all-comments.c
    trunk/contrib/llvm/tools/clang/test/Driver/frame-pointer-elim.c
    trunk/contrib/llvm/tools/clang/test/Driver/frame-pointer.c
    trunk/contrib/llvm/tools/clang/test/Driver/freebsd-mips-as.c
    trunk/contrib/llvm/tools/clang/test/Driver/freebsd.c
    trunk/contrib/llvm/tools/clang/test/Driver/fsanitize-blacklist.c
    trunk/contrib/llvm/tools/clang/test/Driver/fsanitize.c
    trunk/contrib/llvm/tools/clang/test/Driver/gcc-toolchain.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/gcc_forward.c
    trunk/contrib/llvm/tools/clang/test/Driver/gnu-runtime.m
    trunk/contrib/llvm/tools/clang/test/Driver/gold-lto.c
    trunk/contrib/llvm/tools/clang/test/Driver/hexagon-toolchain-elf.c
    trunk/contrib/llvm/tools/clang/test/Driver/hexagon-toolchain.c
    trunk/contrib/llvm/tools/clang/test/Driver/immediate-options.c
    trunk/contrib/llvm/tools/clang/test/Driver/index-header-map.c
    trunk/contrib/llvm/tools/clang/test/Driver/inhibit-downstream-commands.c
    trunk/contrib/llvm/tools/clang/test/Driver/integrated-as.c
    trunk/contrib/llvm/tools/clang/test/Driver/integrated-as.s
    trunk/contrib/llvm/tools/clang/test/Driver/invalid-o-level.c
    trunk/contrib/llvm/tools/clang/test/Driver/ios-simulator-arcruntime.c
    trunk/contrib/llvm/tools/clang/test/Driver/le32-unknown-nacl.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/linker-opts.c
    trunk/contrib/llvm/tools/clang/test/Driver/linux-as.c
    trunk/contrib/llvm/tools/clang/test/Driver/linux-header-search.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/linux-ld.c
    trunk/contrib/llvm/tools/clang/test/Driver/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/Driver/lto.c
    trunk/contrib/llvm/tools/clang/test/Driver/m_and_mm.c
    trunk/contrib/llvm/tools/clang/test/Driver/mg.c
    trunk/contrib/llvm/tools/clang/test/Driver/mips-abi.c
    trunk/contrib/llvm/tools/clang/test/Driver/mips-as.c
    trunk/contrib/llvm/tools/clang/test/Driver/mips-cs-header-search.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/mips-cs-ld.c
    trunk/contrib/llvm/tools/clang/test/Driver/mips-eleb.c
    trunk/contrib/llvm/tools/clang/test/Driver/mips-features.c
    trunk/contrib/llvm/tools/clang/test/Driver/mips-float.c
    trunk/contrib/llvm/tools/clang/test/Driver/mips-long-double.c
    trunk/contrib/llvm/tools/clang/test/Driver/mno-global-merge.c
    trunk/contrib/llvm/tools/clang/test/Driver/modules.m
    trunk/contrib/llvm/tools/clang/test/Driver/modules.mm
    trunk/contrib/llvm/tools/clang/test/Driver/montavista-gcc-toolchain.c
    trunk/contrib/llvm/tools/clang/test/Driver/ms-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/Driver/msvc_forward.c
    trunk/contrib/llvm/tools/clang/test/Driver/no-integrated-as-win.c
    trunk/contrib/llvm/tools/clang/test/Driver/no-objc-arr.m
    trunk/contrib/llvm/tools/clang/test/Driver/no-objc-default-synthesize-properties.m
    trunk/contrib/llvm/tools/clang/test/Driver/no-sibling-calls.c
    trunk/contrib/llvm/tools/clang/test/Driver/nodefaultlib.c
    trunk/contrib/llvm/tools/clang/test/Driver/noexecstack.c
    trunk/contrib/llvm/tools/clang/test/Driver/noinline.c
    trunk/contrib/llvm/tools/clang/test/Driver/nostdincxx.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/nostdlib.c
    trunk/contrib/llvm/tools/clang/test/Driver/nostdlibinc.c
    trunk/contrib/llvm/tools/clang/test/Driver/objc++-cpp-output.mm
    trunk/contrib/llvm/tools/clang/test/Driver/objc-cpp-output.m
    trunk/contrib/llvm/tools/clang/test/Driver/objc_default_synth.m
    trunk/contrib/llvm/tools/clang/test/Driver/openbsd.c
    trunk/contrib/llvm/tools/clang/test/Driver/option-aliases.c
    trunk/contrib/llvm/tools/clang/test/Driver/output-file-cleanup.c
    trunk/contrib/llvm/tools/clang/test/Driver/output-file-is-dir.c
    trunk/contrib/llvm/tools/clang/test/Driver/parsing.c
    trunk/contrib/llvm/tools/clang/test/Driver/phases.c
    trunk/contrib/llvm/tools/clang/test/Driver/pic.c
    trunk/contrib/llvm/tools/clang/test/Driver/ppc-features.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/prefixed-tools.c
    trunk/contrib/llvm/tools/clang/test/Driver/preprocessor.c
    trunk/contrib/llvm/tools/clang/test/Driver/pth.c
    trunk/contrib/llvm/tools/clang/test/Driver/qa_override.c
    trunk/contrib/llvm/tools/clang/test/Driver/r600-mcpu.cl
    trunk/contrib/llvm/tools/clang/test/Driver/redundant-args.c
    trunk/contrib/llvm/tools/clang/test/Driver/redzone.c
    trunk/contrib/llvm/tools/clang/test/Driver/retain-comments-from-system-headers.c
    trunk/contrib/llvm/tools/clang/test/Driver/rewrite-legacy-objc.m
    trunk/contrib/llvm/tools/clang/test/Driver/rewrite-objc.m
    trunk/contrib/llvm/tools/clang/test/Driver/sanitizer-ld.c
    trunk/contrib/llvm/tools/clang/test/Driver/save-temps.c
    trunk/contrib/llvm/tools/clang/test/Driver/split-debug.c
    trunk/contrib/llvm/tools/clang/test/Driver/split-debug.s
    trunk/contrib/llvm/tools/clang/test/Driver/stack-protector.c
    trunk/contrib/llvm/tools/clang/test/Driver/stackrealign.c
    trunk/contrib/llvm/tools/clang/test/Driver/std.c
    trunk/contrib/llvm/tools/clang/test/Driver/std.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/sysroot-flags.c
    trunk/contrib/llvm/tools/clang/test/Driver/sysroot.c
    trunk/contrib/llvm/tools/clang/test/Driver/target-as.s
    trunk/contrib/llvm/tools/clang/test/Driver/target-triple-deployment.c
    trunk/contrib/llvm/tools/clang/test/Driver/target.c
    trunk/contrib/llvm/tools/clang/test/Driver/tsan.c
    trunk/contrib/llvm/tools/clang/test/Driver/unknown-arg.c
    trunk/contrib/llvm/tools/clang/test/Driver/unknown-gcc-arch.c
    trunk/contrib/llvm/tools/clang/test/Driver/visibility.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/warning-options.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/warning-options_pedantic.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/working-directory-and-abs.c
    trunk/contrib/llvm/tools/clang/test/Driver/working-directory.c
    trunk/contrib/llvm/tools/clang/test/Driver/x86_64-nacl-defines.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/x86_64-nacl-types.cpp
    trunk/contrib/llvm/tools/clang/test/Driver/x86_features.c
    trunk/contrib/llvm/tools/clang/test/FixIt/atomic-property.m
    trunk/contrib/llvm/tools/clang/test/FixIt/auto-fixit.m
    trunk/contrib/llvm/tools/clang/test/FixIt/auto-isa-fixit.m
    trunk/contrib/llvm/tools/clang/test/FixIt/bridge-cast-in-arc.mm
    trunk/contrib/llvm/tools/clang/test/FixIt/bridge-in-non-arc.m
    trunk/contrib/llvm/tools/clang/test/FixIt/dereference-addressof.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-autoreleasepool.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-c90.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx11-attributes.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx11-compat.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx1y-compat.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-errors-1.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-errors.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-function-call.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-include.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-include.h
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-interface-as-param.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-missing-method-return-type.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-missing-self-in-block.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-newline-style.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-nsstring-compare.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc-message-comma-separator.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc-message.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-pmem.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-recompile.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-recursive-block.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-static-object-decl.m
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-suffix.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unicode.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unrecoverable.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unrecoverable.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-vexing-parse-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit-vexing-parse.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit.c
    trunk/contrib/llvm/tools/clang/test/FixIt/fixit.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/format-darwin.m
    trunk/contrib/llvm/tools/clang/test/FixIt/format-no-fixit.m
    trunk/contrib/llvm/tools/clang/test/FixIt/format.m
    trunk/contrib/llvm/tools/clang/test/FixIt/format.mm
    trunk/contrib/llvm/tools/clang/test/FixIt/messages.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/no-fixit.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/no-macro-fixit.c
    trunk/contrib/llvm/tools/clang/test/FixIt/no-typo.c
    trunk/contrib/llvm/tools/clang/test/FixIt/objc-literals.m
    trunk/contrib/llvm/tools/clang/test/FixIt/typo-crash.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/typo-crash.m
    trunk/contrib/llvm/tools/clang/test/FixIt/typo.c
    trunk/contrib/llvm/tools/clang/test/FixIt/typo.cpp
    trunk/contrib/llvm/tools/clang/test/FixIt/typo.m
    trunk/contrib/llvm/tools/clang/test/Format/basic.cpp
    trunk/contrib/llvm/tools/clang/test/Format/diagnostic.cpp
    trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs-error.cpp
    trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs-inplace.cpp
    trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs.cpp
    trunk/contrib/llvm/tools/clang/test/Format/ranges.cpp
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/all.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/warn.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/all.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/warn.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/src/all.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/src/warn.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/TestFramework.framework/Headers/TestFramework.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes1.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes2.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes3.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes4.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes5.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes6.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes7.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes8.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test2.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test3.h
    trunk/contrib/llvm/tools/clang/test/Frontend/Weverything.c
    trunk/contrib/llvm/tools/clang/test/Frontend/Wno-everything.c
    trunk/contrib/llvm/tools/clang/test/Frontend/ast-codegen.c
    trunk/contrib/llvm/tools/clang/test/Frontend/ast-main.c
    trunk/contrib/llvm/tools/clang/test/Frontend/ast-main.cpp
    trunk/contrib/llvm/tools/clang/test/Frontend/cpp-output.c
    trunk/contrib/llvm/tools/clang/test/Frontend/darwin-version.c
    trunk/contrib/llvm/tools/clang/test/Frontend/dependency-gen-escaping.c
    trunk/contrib/llvm/tools/clang/test/Frontend/dependency-gen.c
    trunk/contrib/llvm/tools/clang/test/Frontend/dependency-generation-crash.c
    trunk/contrib/llvm/tools/clang/test/Frontend/diagnostics-option-names.c
    trunk/contrib/llvm/tools/clang/test/Frontend/hexagon-target-basic.c
    trunk/contrib/llvm/tools/clang/test/Frontend/iframework.c
    trunk/contrib/llvm/tools/clang/test/Frontend/ir-support-codegen.ll
    trunk/contrib/llvm/tools/clang/test/Frontend/ir-support-errors.ll
    trunk/contrib/llvm/tools/clang/test/Frontend/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/Frontend/macros.c
    trunk/contrib/llvm/tools/clang/test/Frontend/output-failures.c
    trunk/contrib/llvm/tools/clang/test/Frontend/preprocessed-output-macro-first-token.c
    trunk/contrib/llvm/tools/clang/test/Frontend/print-header-includes.c
    trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-invalid-hasinclude.c
    trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-missing.c
    trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-modules.c
    trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes.c
    trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-macros.c
    trunk/contrib/llvm/tools/clang/test/Frontend/stdin.c
    trunk/contrib/llvm/tools/clang/test/Frontend/system-header-prefix.c
    trunk/contrib/llvm/tools/clang/test/Frontend/undef.c
    trunk/contrib/llvm/tools/clang/test/Frontend/unknown-pragmas.c
    trunk/contrib/llvm/tools/clang/test/Frontend/verify-directive.h
    trunk/contrib/llvm/tools/clang/test/Frontend/verify-fatal.c
    trunk/contrib/llvm/tools/clang/test/Frontend/verify.c
    trunk/contrib/llvm/tools/clang/test/Frontend/verify2.c
    trunk/contrib/llvm/tools/clang/test/Frontend/verify2.h
    trunk/contrib/llvm/tools/clang/test/Frontend/verify3.c
    trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-1.c
    trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-2.c
    trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-3.c
    trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-4.c
    trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-5.c
    trunk/contrib/llvm/tools/clang/test/Frontend/warning-options.cpp
    trunk/contrib/llvm/tools/clang/test/Headers/Inputs/include/stdint.h
    trunk/contrib/llvm/tools/clang/test/Headers/altivec-header.c
    trunk/contrib/llvm/tools/clang/test/Headers/arm-neon-header.c
    trunk/contrib/llvm/tools/clang/test/Headers/c11.c
    trunk/contrib/llvm/tools/clang/test/Headers/c89.c
    trunk/contrib/llvm/tools/clang/test/Headers/cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/Headers/int64-type.c
    trunk/contrib/llvm/tools/clang/test/Headers/ms-null-ms-header-vs-stddef.cpp
    trunk/contrib/llvm/tools/clang/test/Headers/ms-wchar.c
    trunk/contrib/llvm/tools/clang/test/Headers/stdbool.cpp
    trunk/contrib/llvm/tools/clang/test/Headers/typedef_guards.c
    trunk/contrib/llvm/tools/clang/test/Headers/unwind.c
    trunk/contrib/llvm/tools/clang/test/Headers/wchar_limits.cpp
    trunk/contrib/llvm/tools/clang/test/Headers/wmmintrin.c
    trunk/contrib/llvm/tools/clang/test/Headers/x86-intrinsics-headers.c
    trunk/contrib/llvm/tools/clang/test/Index/IBOutletCollection.m
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-02.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-03.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-04.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-05.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-06.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-07.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-08.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-09.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-10.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-11.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-12.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-para-kind-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-para-kind-02.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-availability-attr-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-availability-attr-02.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-class-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-class-02.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-class-03.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-class-04.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-enum-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-02.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-03.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-04.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-05.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-06.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-07.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-08.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-09.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-10.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-namespace-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-other-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-para-kind-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-typedef-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-typedef-02.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-variable-01.xml
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/Frameworks/Framework.framework/Headers/Framework.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/Frameworks/module.map
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/a.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/a_extensions.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/crash.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/module.map
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/nested/module.map
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/nested/nested.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/a.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/annotate-comments-preprocessor.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/b.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/c-index-pch.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/cindex-from-source.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/complete-pch.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/crash-recovery-code-complete-remap.c
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/crash-recovery-reparse-remap.c
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/foo.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/get-cursor-includes-1.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/get-cursor-includes-2.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/guarded.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/objc.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/pragma-once.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/pragma_disable_warning.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble-reparse-1.c
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble-reparse-2.c
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble_macro_template.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/prefix.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/redeclarations.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/remap-complete-to.c
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/remap-load-to.c
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/reparse-instantiate.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/retain-comments-from-system-headers.h
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/t1.c
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/t1.m
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/t2.c
    trunk/contrib/llvm/tools/clang/test/Index/Inputs/t2.m
    trunk/contrib/llvm/tools/clang/test/Index/TestClassDecl.m
    trunk/contrib/llvm/tools/clang/test/Index/TestClassForwardDecl.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-attribute.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-availability-attrs.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-preprocessor.c
    trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-property-accessor.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-typedef.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-unterminated.c
    trunk/contrib/llvm/tools/clang/test/Index/annotate-comments.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-context-sensitive.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-deep-statements.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-literals.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-macro-args.h
    trunk/contrib/llvm/tools/clang/test/Index/annotate-macro-args.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-module.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-nested-name-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-subscripting.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-include.c
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-include.h
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-pp.c
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-preamble.c
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-with-default-args.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-with-default-args.h
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.c
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.cpp
    trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-toplevel-in-objccontainer.m
    trunk/contrib/llvm/tools/clang/test/Index/annotate-toplevel-in-objccontainer.m.h
    trunk/contrib/llvm/tools/clang/test/Index/arc-annotate.m
    trunk/contrib/llvm/tools/clang/test/Index/arc-complete.m
    trunk/contrib/llvm/tools/clang/test/Index/asm-attribute.c
    trunk/contrib/llvm/tools/clang/test/Index/availability.c
    trunk/contrib/llvm/tools/clang/test/Index/blocks.c
    trunk/contrib/llvm/tools/clang/test/Index/boxed-exprs.h
    trunk/contrib/llvm/tools/clang/test/Index/boxed-exprs.m
    trunk/contrib/llvm/tools/clang/test/Index/c-index-api-loadTU-test.m
    trunk/contrib/llvm/tools/clang/test/Index/c-index-getCursor-pp.c
    trunk/contrib/llvm/tools/clang/test/Index/c-index-getCursor-test.m
    trunk/contrib/llvm/tools/clang/test/Index/c-index-pch.c
    trunk/contrib/llvm/tools/clang/test/Index/c-index-redecls.c
    trunk/contrib/llvm/tools/clang/test/Index/cindex-from-source.m
    trunk/contrib/llvm/tools/clang/test/Index/cindex-on-invalid-usrs.m
    trunk/contrib/llvm/tools/clang/test/Index/cindex-on-invalid.m
    trunk/contrib/llvm/tools/clang/test/Index/cindex-test-inclusions.c
    trunk/contrib/llvm/tools/clang/test/Index/code-completion-skip-bodies.cpp
    trunk/contrib/llvm/tools/clang/test/Index/code-completion.cpp
    trunk/contrib/llvm/tools/clang/test/Index/codecompletion-chained.cpp
    trunk/contrib/llvm/tools/clang/test/Index/comment-c-decls.c
    trunk/contrib/llvm/tools/clang/test/Index/comment-cplus-decls.cpp
    trunk/contrib/llvm/tools/clang/test/Index/comment-cplus-template-decls.cpp
    trunk/contrib/llvm/tools/clang/test/Index/comment-cplus11-specific.cpp
    trunk/contrib/llvm/tools/clang/test/Index/comment-custom-block-command.cpp
    trunk/contrib/llvm/tools/clang/test/Index/comment-misc-tags.m
    trunk/contrib/llvm/tools/clang/test/Index/comment-objc-decls.m
    trunk/contrib/llvm/tools/clang/test/Index/comment-to-html-xml-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/Index/comment-unqualified-objc-pointer.m
    trunk/contrib/llvm/tools/clang/test/Index/comment-with-preamble.c
    trunk/contrib/llvm/tools/clang/test/Index/comment-xml-schema.c
    trunk/contrib/llvm/tools/clang/test/Index/compile_commands.json
    trunk/contrib/llvm/tools/clang/test/Index/complete-access-checks.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-at-directives.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-at-exprstmt.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-blocks.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-categories.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-ctor-inits.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-cxx-inline-methods.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-declarators.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-declarators.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-documentation-properties.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-documentation-templates.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-documentation.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-enums.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-enums.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-hiding.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-in-invalid-method.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-in-stringify.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-interfaces.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-ivar-access.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-kvc.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-lambdas.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-lambdas.mm
    trunk/contrib/llvm/tools/clang/test/Index/complete-macro-args.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-macros.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-member-access.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-memfunc-cvquals.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-method-decls.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-modules.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-natural.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-objc-message-id.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-objc-message.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-pch.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-preamble.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-preamble.h
    trunk/contrib/llvm/tools/clang/test/Index/complete-preprocessor.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-properties.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-property-flags.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-property-getset.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-protocols.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-qualified.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-recovery.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-stmt.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-super.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-super.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-synthesized.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-tabs.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-templates.cpp
    trunk/contrib/llvm/tools/clang/test/Index/complete-type-factors.m
    trunk/contrib/llvm/tools/clang/test/Index/complete-unterminated.c
    trunk/contrib/llvm/tools/clang/test/Index/complete-with-annotations.cpp
    trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-code-complete.c
    trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-modules.m
    trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-reparse.c
    trunk/contrib/llvm/tools/clang/test/Index/crash-recovery.c
    trunk/contrib/llvm/tools/clang/test/Index/create-tu-fail.c
    trunk/contrib/llvm/tools/clang/test/Index/cursor-dynamic-call.mm
    trunk/contrib/llvm/tools/clang/test/Index/cursor-ref-names.cpp
    trunk/contrib/llvm/tools/clang/test/Index/cxx-operator-overload.cpp
    trunk/contrib/llvm/tools/clang/test/Index/cxx11-lambdas.cpp
    trunk/contrib/llvm/tools/clang/test/Index/error-on-deserialized.c
    trunk/contrib/llvm/tools/clang/test/Index/file-includes.c
    trunk/contrib/llvm/tools/clang/test/Index/file-macro-refs.c
    trunk/contrib/llvm/tools/clang/test/Index/file-refs-subscripting.m
    trunk/contrib/llvm/tools/clang/test/Index/file-refs.c
    trunk/contrib/llvm/tools/clang/test/Index/file-refs.cpp
    trunk/contrib/llvm/tools/clang/test/Index/file-refs.m
    trunk/contrib/llvm/tools/clang/test/Index/fix-its.c
    trunk/contrib/llvm/tools/clang/test/Index/fix-its.m
    trunk/contrib/llvm/tools/clang/test/Index/format-comment-cdecls.c
    trunk/contrib/llvm/tools/clang/test/Index/get-cursor-includes.c
    trunk/contrib/llvm/tools/clang/test/Index/get-cursor-macro-args.h
    trunk/contrib/llvm/tools/clang/test/Index/get-cursor-macro-args.m
    trunk/contrib/llvm/tools/clang/test/Index/get-cursor.c
    trunk/contrib/llvm/tools/clang/test/Index/get-cursor.cpp
    trunk/contrib/llvm/tools/clang/test/Index/get-cursor.m
    trunk/contrib/llvm/tools/clang/test/Index/getcursor-pp-pch.c
    trunk/contrib/llvm/tools/clang/test/Index/getcursor-pp-pch.c.h
    trunk/contrib/llvm/tools/clang/test/Index/getcursor-preamble.h
    trunk/contrib/llvm/tools/clang/test/Index/getcursor-preamble.m
    trunk/contrib/llvm/tools/clang/test/Index/headerfile-comment-to-html.m
    trunk/contrib/llvm/tools/clang/test/Index/in-class-init.cpp
    trunk/contrib/llvm/tools/clang/test/Index/include_test.h
    trunk/contrib/llvm/tools/clang/test/Index/index-attrs.m
    trunk/contrib/llvm/tools/clang/test/Index/index-decls.m
    trunk/contrib/llvm/tools/clang/test/Index/index-file.cpp
    trunk/contrib/llvm/tools/clang/test/Index/index-invalid-code.m
    trunk/contrib/llvm/tools/clang/test/Index/index-kernel-invocation.cpp
    trunk/contrib/llvm/tools/clang/test/Index/index-many-call-ops.cpp
    trunk/contrib/llvm/tools/clang/test/Index/index-many-logical-ops.c
    trunk/contrib/llvm/tools/clang/test/Index/index-module.m
    trunk/contrib/llvm/tools/clang/test/Index/index-pch-with-module.m
    trunk/contrib/llvm/tools/clang/test/Index/index-pch.cpp
    trunk/contrib/llvm/tools/clang/test/Index/index-refs.cpp
    trunk/contrib/llvm/tools/clang/test/Index/index-refs.m
    trunk/contrib/llvm/tools/clang/test/Index/index-subscripting-literals.m
    trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.cpp
    trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.h
    trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.hpp
    trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.m
    trunk/contrib/llvm/tools/clang/test/Index/index-templates.cpp
    trunk/contrib/llvm/tools/clang/test/Index/index-with-working-dir.c
    trunk/contrib/llvm/tools/clang/test/Index/initializer-memory.cpp
    trunk/contrib/llvm/tools/clang/test/Index/invalid-code-rdar10451854.m
    trunk/contrib/llvm/tools/clang/test/Index/invalid-code-rdar_7833619.m
    trunk/contrib/llvm/tools/clang/test/Index/invalid-rdar-8236270.cpp
    trunk/contrib/llvm/tools/clang/test/Index/linkage.c
    trunk/contrib/llvm/tools/clang/test/Index/load-classes.cpp
    trunk/contrib/llvm/tools/clang/test/Index/load-decls.c
    trunk/contrib/llvm/tools/clang/test/Index/load-exprs.c
    trunk/contrib/llvm/tools/clang/test/Index/load-namespaces.cpp
    trunk/contrib/llvm/tools/clang/test/Index/load-stmts.cpp
    trunk/contrib/llvm/tools/clang/test/Index/local-symbols.m
    trunk/contrib/llvm/tools/clang/test/Index/modules-objc-categories.m
    trunk/contrib/llvm/tools/clang/test/Index/ms-if-exists.cpp
    trunk/contrib/llvm/tools/clang/test/Index/nested-binaryoperators.cpp
    trunk/contrib/llvm/tools/clang/test/Index/overrides.cpp
    trunk/contrib/llvm/tools/clang/test/Index/overrides.m
    trunk/contrib/llvm/tools/clang/test/Index/overriding-ftemplate-comments.cpp
    trunk/contrib/llvm/tools/clang/test/Index/overriding-method-comments.mm
    trunk/contrib/llvm/tools/clang/test/Index/parse-all-comments.c
    trunk/contrib/llvm/tools/clang/test/Index/pch-opaque-value.cpp
    trunk/contrib/llvm/tools/clang/test/Index/pch-with-errors.c
    trunk/contrib/llvm/tools/clang/test/Index/pch-with-errors.m
    trunk/contrib/llvm/tools/clang/test/Index/pragma-diag-reparse.c
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-chained.c
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c.h
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c.remap
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-1.h
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-2.h
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-3.h
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-with-BOM.m
    trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse.c
    trunk/contrib/llvm/tools/clang/test/Index/preamble.c
    trunk/contrib/llvm/tools/clang/test/Index/preamble_macro_template.cpp
    trunk/contrib/llvm/tools/clang/test/Index/print-bitwidth.c
    trunk/contrib/llvm/tools/clang/test/Index/print-display-names.cpp
    trunk/contrib/llvm/tools/clang/test/Index/print-type-size.cpp
    trunk/contrib/llvm/tools/clang/test/Index/print-type.c
    trunk/contrib/llvm/tools/clang/test/Index/print-type.cpp
    trunk/contrib/llvm/tools/clang/test/Index/print-type.m
    trunk/contrib/llvm/tools/clang/test/Index/print-usrs.c
    trunk/contrib/llvm/tools/clang/test/Index/properties-class-extensions.m
    trunk/contrib/llvm/tools/clang/test/Index/rdar-8288645-invalid-code.mm
    trunk/contrib/llvm/tools/clang/test/Index/rdar12316296-codecompletion.m
    trunk/contrib/llvm/tools/clang/test/Index/recover-bad-code-rdar_7487294.c
    trunk/contrib/llvm/tools/clang/test/Index/recursive-cxx-member-calls.cpp
    trunk/contrib/llvm/tools/clang/test/Index/recursive-member-access.c
    trunk/contrib/llvm/tools/clang/test/Index/redeclarations.cpp
    trunk/contrib/llvm/tools/clang/test/Index/remap-complete.c
    trunk/contrib/llvm/tools/clang/test/Index/remap-cursor-at.c
    trunk/contrib/llvm/tools/clang/test/Index/remap-load.c
    trunk/contrib/llvm/tools/clang/test/Index/reparse-instantiate.cpp
    trunk/contrib/llvm/tools/clang/test/Index/retain-comments-from-system-headers.c
    trunk/contrib/llvm/tools/clang/test/Index/retain-target-options.c
    trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/compile_commands.json
    trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/imported.h
    trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/pragma_once.h
    trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t.h
    trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t1.cpp
    trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t2.cpp
    trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t3.cpp
    trunk/contrib/llvm/tools/clang/test/Index/subclass-comment.mm
    trunk/contrib/llvm/tools/clang/test/Index/targeted-annotation.c
    trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.c
    trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.m
    trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.m.h
    trunk/contrib/llvm/tools/clang/test/Index/targeted-fields.h
    trunk/contrib/llvm/tools/clang/test/Index/targeted-file-refs.c
    trunk/contrib/llvm/tools/clang/test/Index/targeted-nested1.h
    trunk/contrib/llvm/tools/clang/test/Index/targeted-preamble.h
    trunk/contrib/llvm/tools/clang/test/Index/targeted-top.h
    trunk/contrib/llvm/tools/clang/test/Index/unmatched-braces.c
    trunk/contrib/llvm/tools/clang/test/Index/unmatched-braces.m
    trunk/contrib/llvm/tools/clang/test/Index/usrs-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/Index/usrs.cpp
    trunk/contrib/llvm/tools/clang/test/Index/usrs.m
    trunk/contrib/llvm/tools/clang/test/Index/warning-flags.c
    trunk/contrib/llvm/tools/clang/test/Index/werror.c
    trunk/contrib/llvm/tools/clang/test/Lexer/11-27-2007-FloatLiterals.c
    trunk/contrib/llvm/tools/clang/test/Lexer/badstring_in_if0.c
    trunk/contrib/llvm/tools/clang/test/Lexer/bcpl-escaped-newline.c
    trunk/contrib/llvm/tools/clang/test/Lexer/block_cmt_end.c
    trunk/contrib/llvm/tools/clang/test/Lexer/builtin_redef.c
    trunk/contrib/llvm/tools/clang/test/Lexer/c90.c
    trunk/contrib/llvm/tools/clang/test/Lexer/char-escapes.c
    trunk/contrib/llvm/tools/clang/test/Lexer/char-literal-encoding-error.c
    trunk/contrib/llvm/tools/clang/test/Lexer/char-literal.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/clang-keywords.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/comment-escape.c
    trunk/contrib/llvm/tools/clang/test/Lexer/conflict-marker.c
    trunk/contrib/llvm/tools/clang/test/Lexer/constants.c
    trunk/contrib/llvm/tools/clang/test/Lexer/counter.c
    trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_keyword.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_keyword_as_cxx98.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_delim_length.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_directives.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_unterminated.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/cxx1y_binary_literal.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/digraph.c
    trunk/contrib/llvm/tools/clang/test/Lexer/dollar-idents.c
    trunk/contrib/llvm/tools/clang/test/Lexer/eof-char.c
    trunk/contrib/llvm/tools/clang/test/Lexer/eof-file.c
    trunk/contrib/llvm/tools/clang/test/Lexer/eof-string.c
    trunk/contrib/llvm/tools/clang/test/Lexer/escape_newline.c
    trunk/contrib/llvm/tools/clang/test/Lexer/gnu_keywords.c
    trunk/contrib/llvm/tools/clang/test/Lexer/has_extension.c
    trunk/contrib/llvm/tools/clang/test/Lexer/has_extension_cxx.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_address_sanitizer.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_c1x.c
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_memory_sanitizer.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_modules.m
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_objc_arc.m
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_rtti.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_thread_sanitizer.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_type_traits.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/hexfloat.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/long-long.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/ms-extensions.c
    trunk/contrib/llvm/tools/clang/test/Lexer/ms-extensions.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/msdos-cpm-eof.c
    trunk/contrib/llvm/tools/clang/test/Lexer/multiple-include.c
    trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof-c++11.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof-c++98-compat.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof.c
    trunk/contrib/llvm/tools/clang/test/Lexer/numeric-literal-trash.c
    trunk/contrib/llvm/tools/clang/test/Lexer/pragma-mark.c
    trunk/contrib/llvm/tools/clang/test/Lexer/pragma-message.c
    trunk/contrib/llvm/tools/clang/test/Lexer/pragma-message2.c
    trunk/contrib/llvm/tools/clang/test/Lexer/pragma-operators.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/pragma-region.c
    trunk/contrib/llvm/tools/clang/test/Lexer/preamble.c
    trunk/contrib/llvm/tools/clang/test/Lexer/rdar-8914293.c
    trunk/contrib/llvm/tools/clang/test/Lexer/rdr-6096838-2.c
    trunk/contrib/llvm/tools/clang/test/Lexer/rdr-6096838.c
    trunk/contrib/llvm/tools/clang/test/Lexer/string-literal-encoding.c
    trunk/contrib/llvm/tools/clang/test/Lexer/string-literal-errors.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/string_concat.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/token-concat.c
    trunk/contrib/llvm/tools/clang/test/Lexer/token-concat.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/unicode-strings.c
    trunk/contrib/llvm/tools/clang/test/Lexer/unicode.c
    trunk/contrib/llvm/tools/clang/test/Lexer/unknown-char.c
    trunk/contrib/llvm/tools/clang/test/Lexer/utf-16.c
    trunk/contrib/llvm/tools/clang/test/Lexer/utf8-char-literal.cpp
    trunk/contrib/llvm/tools/clang/test/Lexer/utf8-invalid.c
    trunk/contrib/llvm/tools/clang/test/Lexer/wchar-signedness.c
    trunk/contrib/llvm/tools/clang/test/Lexer/wchar.c
    trunk/contrib/llvm/tools/clang/test/Misc/Inputs/include.h
    trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file
    trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file-2
    trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file-3
    trunk/contrib/llvm/tools/clang/test/Misc/Inputs/working-directory.h
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-attr.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-color.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-comment.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.c
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.m
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.mm
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.c
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.m
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-templates.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-wchar.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/caret-diags-macros.c
    trunk/contrib/llvm/tools/clang/test/Misc/caret-diags-scratch-buffer.c
    trunk/contrib/llvm/tools/clang/test/Misc/dev-fd-fs.c
    trunk/contrib/llvm/tools/clang/test/Misc/diag-aka-types.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/diag-format.c
    trunk/contrib/llvm/tools/clang/test/Misc/diag-line-wrapping.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/diag-macro-backtrace.c
    trunk/contrib/llvm/tools/clang/test/Misc/diag-mapping.c
    trunk/contrib/llvm/tools/clang/test/Misc/diag-mapping2.c
    trunk/contrib/llvm/tools/clang/test/Misc/diag-presumed.c
    trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing-color.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing-cxx98.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/diag-trailing-null-bytes.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/diag-verify.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/diagnostic-crash.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/emit-html-insert.c
    trunk/contrib/llvm/tools/clang/test/Misc/emit-html.c
    trunk/contrib/llvm/tools/clang/test/Misc/error-limit-multiple-notes.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/error-limit.c
    trunk/contrib/llvm/tools/clang/test/Misc/freebsd-arm-size_t.c
    trunk/contrib/llvm/tools/clang/test/Misc/include-stack-for-note-flag.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/integer-literal-printing.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/macro-backtrace.c
    trunk/contrib/llvm/tools/clang/test/Misc/message-length.c
    trunk/contrib/llvm/tools/clang/test/Misc/predefines.c
    trunk/contrib/llvm/tools/clang/test/Misc/remap-file.c
    trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-frontend.c
    trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-no-category.c
    trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-no-issue.c
    trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-single-issue.c
    trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.c
    trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.h
    trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.m
    trunk/contrib/llvm/tools/clang/test/Misc/show-diag-options.c
    trunk/contrib/llvm/tools/clang/test/Misc/tabstop.c
    trunk/contrib/llvm/tools/clang/test/Misc/unnecessary-elipses.cpp
    trunk/contrib/llvm/tools/clang/test/Misc/unprintable.c
    trunk/contrib/llvm/tools/clang/test/Misc/verify.c
    trunk/contrib/llvm/tools/clang/test/Misc/warn-in-system-header.c
    trunk/contrib/llvm/tools/clang/test/Misc/warn-in-system-header.h
    trunk/contrib/llvm/tools/clang/test/Misc/warning-flags-enabled.c
    trunk/contrib/llvm/tools/clang/test/Misc/warning-flags-tree.c
    trunk/contrib/llvm/tools/clang/test/Misc/warning-flags.c
    trunk/contrib/llvm/tools/clang/test/Misc/working-directory.c
    trunk/contrib/llvm/tools/clang/test/Misc/wrong-encoding.c
    trunk/contrib/llvm/tools/clang/test/Misc/wrong-encoding2.c
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/AlsoDependsOnModule.framework/Headers/AlsoDependsOnModule.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/CmdLine.framework/Headers/CmdLine.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/conflict_a.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/conflict_b.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Frameworks/SubFramework.framework/Headers/Other.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/DependsOnModule.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/cxx_other.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/other.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/PrivateHeaders/DependsOnModulePrivate.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/module_private.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/Headers/Sub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/Headers/Types.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/PrivateHeaders/SubPriv.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Headers/HasSubModules.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/PrivateHeaders/HasSubModulesPriv.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolA.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolASub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolASub2.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolB.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolBSub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/A.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/B.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Buried/Treasure.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Module.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/NotInModule.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Sub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Sub2.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/has_errors.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/has_warnings.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MutuallyRecursive1.framework/Headers/MutuallyRecursive1.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MutuallyRecursive2.framework/Headers/MutuallyRecursive2.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/A.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/B.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/Boom.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/SubDir/C.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/PrivateHeaders/A_Private.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/PrivateHeaders/B_Private.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/module_private.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NotAModule.framework/Headers/NotAModule.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/other.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/size_t.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/dbl_max.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdbool.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdint.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdio.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/uses_other_constants.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink-sub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink-sub2.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/builtin.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/builtin_sub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_bottom.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_left_sub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_other.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_right_sub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_top.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/config.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-inline-namespace.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-linkage-cache.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-many-overloads.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/decl.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/decl2.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/def-include.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/def.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diag_pragma.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_bottom.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_top.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ignored_macros.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/import-decl.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/irgen.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-bar.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-foo.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-sub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/load_failure.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_left.hpp
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_right.hpp
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_other.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_right_undef.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_top.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module_private_left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module_private_right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-top.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/Umbrella.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/umbrella_sub.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella2/Umbrella2.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella2/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/a1.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/a2.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/b1.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/nested1.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/nested2.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/1.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/a-extras.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/a.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/b.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/decltype.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/oldname/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/oldname/new_name.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/point.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-bottom-prefix.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-bottom.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-left-left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-top-explicit.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-top.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl_namespaces_left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl_namespaces_right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redeclarations_left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redeclarations_right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/subdir/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/subdir/subdir.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/hash_map.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/type_traits.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/vector.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-left.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-right.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-top.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/weird_objc.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/A_one.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/A_two.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/B_one.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/B_two.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/C_one.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/C_two.h
    trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/auto-module-import.m
    trunk/contrib/llvm/tools/clang/test/Modules/autolink.m
    trunk/contrib/llvm/tools/clang/test/Modules/build-fail-notes.m
    trunk/contrib/llvm/tools/clang/test/Modules/builtins.m
    trunk/contrib/llvm/tools/clang/test/Modules/compiler_builtins.m
    trunk/contrib/llvm/tools/clang/test/Modules/config_macros.m
    trunk/contrib/llvm/tools/clang/test/Modules/conflicts.m
    trunk/contrib/llvm/tools/clang/test/Modules/cstd.m
    trunk/contrib/llvm/tools/clang/test/Modules/cxx-inline-namespace.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/cxx-linkage-cache.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/cxx-many-overloads.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/cycles.c
    trunk/contrib/llvm/tools/clang/test/Modules/decldef.m
    trunk/contrib/llvm/tools/clang/test/Modules/decldef.mm
    trunk/contrib/llvm/tools/clang/test/Modules/diag-pragma.c
    trunk/contrib/llvm/tools/clang/test/Modules/diamond-pch.c
    trunk/contrib/llvm/tools/clang/test/Modules/diamond.c
    trunk/contrib/llvm/tools/clang/test/Modules/direct-module-import.m
    trunk/contrib/llvm/tools/clang/test/Modules/driver.c
    trunk/contrib/llvm/tools/clang/test/Modules/epic-fail.m
    trunk/contrib/llvm/tools/clang/test/Modules/global_index.m
    trunk/contrib/llvm/tools/clang/test/Modules/header-import.m
    trunk/contrib/llvm/tools/clang/test/Modules/ignored_macros.m
    trunk/contrib/llvm/tools/clang/test/Modules/import-decl.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/inferred-frameworks.m
    trunk/contrib/llvm/tools/clang/test/Modules/inferred-submodules.m
    trunk/contrib/llvm/tools/clang/test/Modules/irgen.c
    trunk/contrib/llvm/tools/clang/test/Modules/linkage-merge.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/linkage-merge.m
    trunk/contrib/llvm/tools/clang/test/Modules/load_failure.c
    trunk/contrib/llvm/tools/clang/test/Modules/lookup.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/lookup.m
    trunk/contrib/llvm/tools/clang/test/Modules/macros.c
    trunk/contrib/llvm/tools/clang/test/Modules/method_pool.m
    trunk/contrib/llvm/tools/clang/test/Modules/modify-module.m
    trunk/contrib/llvm/tools/clang/test/Modules/module-private.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/module_file_info.m
    trunk/contrib/llvm/tools/clang/test/Modules/namespaces.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/normal-module-map.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/objc-categories.m
    trunk/contrib/llvm/tools/clang/test/Modules/objc_redef.m
    trunk/contrib/llvm/tools/clang/test/Modules/on-demand-build.m
    trunk/contrib/llvm/tools/clang/test/Modules/on-demand-macros.m
    trunk/contrib/llvm/tools/clang/test/Modules/prune.m
    trunk/contrib/llvm/tools/clang/test/Modules/redecl-merge.m
    trunk/contrib/llvm/tools/clang/test/Modules/redecl-merge2.m
    trunk/contrib/llvm/tools/clang/test/Modules/redecl-namespaces.mm
    trunk/contrib/llvm/tools/clang/test/Modules/redeclarations.m
    trunk/contrib/llvm/tools/clang/test/Modules/redecls/a.h
    trunk/contrib/llvm/tools/clang/test/Modules/redecls/b.h
    trunk/contrib/llvm/tools/clang/test/Modules/redecls/main.m
    trunk/contrib/llvm/tools/clang/test/Modules/redecls/module.map
    trunk/contrib/llvm/tools/clang/test/Modules/renamed.m
    trunk/contrib/llvm/tools/clang/test/Modules/requires.m
    trunk/contrib/llvm/tools/clang/test/Modules/serialized-diags.m
    trunk/contrib/llvm/tools/clang/test/Modules/stddef.m
    trunk/contrib/llvm/tools/clang/test/Modules/subframeworks.m
    trunk/contrib/llvm/tools/clang/test/Modules/submodules-preprocess.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/submodules.cpp
    trunk/contrib/llvm/tools/clang/test/Modules/submodules.m
    trunk/contrib/llvm/tools/clang/test/Modules/system_version.m
    trunk/contrib/llvm/tools/clang/test/Modules/templates.mm
    trunk/contrib/llvm/tools/clang/test/Modules/wildcard-submodule-exports.cpp
    trunk/contrib/llvm/tools/clang/test/OpenMP/linking.c
    trunk/contrib/llvm/tools/clang/test/OpenMP/no_option.c
    trunk/contrib/llvm/tools/clang/test/OpenMP/no_option_no_warn.c
    trunk/contrib/llvm/tools/clang/test/OpenMP/openmp_common.c
    trunk/contrib/llvm/tools/clang/test/OpenMP/option_warn.c
    trunk/contrib/llvm/tools/clang/test/OpenMP/predefined_macro.c
    trunk/contrib/llvm/tools/clang/test/OpenMP/threadprivate_ast_print.cpp
    trunk/contrib/llvm/tools/clang/test/OpenMP/threadprivate_messages.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/__va_list_tag.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/arc.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/case-insensitive-include.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-decls1.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-decls2.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-ext_vector1.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-ext_vector2.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-external-defs1.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-external-defs2.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro-override1.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro-override2.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro1.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro2.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-remap-types1.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-remap-types2.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-selectors1.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-selectors2.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/cxx-method.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/cxx11-statement-attributes.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/namespaces.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/preamble.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/typo.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/typo.hpp
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/va_arg.h
    trunk/contrib/llvm/tools/clang/test/PCH/Inputs/working-directory-1.h
    trunk/contrib/llvm/tools/clang/test/PCH/__va_list_tag.c
    trunk/contrib/llvm/tools/clang/test/PCH/arc.m
    trunk/contrib/llvm/tools/clang/test/PCH/asm.c
    trunk/contrib/llvm/tools/clang/test/PCH/asm.h
    trunk/contrib/llvm/tools/clang/test/PCH/attrs-PR8406.c
    trunk/contrib/llvm/tools/clang/test/PCH/attrs.c
    trunk/contrib/llvm/tools/clang/test/PCH/badpch.c
    trunk/contrib/llvm/tools/clang/test/PCH/blocks.c
    trunk/contrib/llvm/tools/clang/test/PCH/blocks.h
    trunk/contrib/llvm/tools/clang/test/PCH/builtins.c
    trunk/contrib/llvm/tools/clang/test/PCH/builtins.h
    trunk/contrib/llvm/tools/clang/test/PCH/captured-stmt.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/case-insensitive-include.c
    trunk/contrib/llvm/tools/clang/test/PCH/chain-categories.m
    trunk/contrib/llvm/tools/clang/test/PCH/chain-categories2.m
    trunk/contrib/llvm/tools/clang/test/PCH/chain-class-extension.m
    trunk/contrib/llvm/tools/clang/test/PCH/chain-conversion-lookup.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/chain-cxx.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/chain-decls.c
    trunk/contrib/llvm/tools/clang/test/PCH/chain-empty-initial-namespace.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/chain-ext_vector.c
    trunk/contrib/llvm/tools/clang/test/PCH/chain-external-defs.c
    trunk/contrib/llvm/tools/clang/test/PCH/chain-friend-instantiation.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/chain-implicit-definition.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/chain-late-anonymous-namespace.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/chain-macro-override.c
    trunk/contrib/llvm/tools/clang/test/PCH/chain-macro.c
    trunk/contrib/llvm/tools/clang/test/PCH/chain-pending-instantiations.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/chain-predecl.h
    trunk/contrib/llvm/tools/clang/test/PCH/chain-predecl.m
    trunk/contrib/llvm/tools/clang/test/PCH/chain-remap-types.m
    trunk/contrib/llvm/tools/clang/test/PCH/chain-selectors.m
    trunk/contrib/llvm/tools/clang/test/PCH/chain-staticvar-instantiation.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/chain-trivial.c
    trunk/contrib/llvm/tools/clang/test/PCH/changed-files.c
    trunk/contrib/llvm/tools/clang/test/PCH/check-deserializations.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include.c
    trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include1.h
    trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include2.h
    trunk/contrib/llvm/tools/clang/test/PCH/cocoa.m
    trunk/contrib/llvm/tools/clang/test/PCH/crash-12631281.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cuda-kernel-call.cu
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-alias-decl.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-alias-decl.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-chain-function-template.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-constexpr.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-exprs.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-for-range.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-for-range.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-friends.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-friends.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-functions.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-functions.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-implicit-moves.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-member-init.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-method.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-ms-function-specialization-class-scope.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-ms-function-specialization-class-scope.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-namespaces.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-namespaces.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-offsetof-base.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-offsetof-base.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-reference.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-reference.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-required-decls.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-required-decls.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-static_assert.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-templates.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-templates.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-trailing-return.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-traits.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-traits.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-typeid.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-typeid.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-using.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-using.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-variadic-templates.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx-variadic-templates.h
    trunk/contrib/llvm/tools/clang/test/PCH/cxx0x-default-delete.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx0x-delegating-ctors.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx11-constexpr.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx11-enum-template.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx11-exception-spec.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx11-lambdas.mm
    trunk/contrib/llvm/tools/clang/test/PCH/cxx11-statement-attributes.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx11-user-defined-literals.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx1y-decltype-auto.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx1y-default-initializer.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx_exprs.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/cxx_exprs.h
    trunk/contrib/llvm/tools/clang/test/PCH/designated-init.c
    trunk/contrib/llvm/tools/clang/test/PCH/designated-init.c.h
    trunk/contrib/llvm/tools/clang/test/PCH/empty-with-headers.c
    trunk/contrib/llvm/tools/clang/test/PCH/enum.c
    trunk/contrib/llvm/tools/clang/test/PCH/enum.h
    trunk/contrib/llvm/tools/clang/test/PCH/exprs.c
    trunk/contrib/llvm/tools/clang/test/PCH/exprs.h
    trunk/contrib/llvm/tools/clang/test/PCH/ext_vector.c
    trunk/contrib/llvm/tools/clang/test/PCH/ext_vector.h
    trunk/contrib/llvm/tools/clang/test/PCH/external-defs.c
    trunk/contrib/llvm/tools/clang/test/PCH/external-defs.h
    trunk/contrib/llvm/tools/clang/test/PCH/field-designator.c
    trunk/contrib/llvm/tools/clang/test/PCH/floating-literal.c
    trunk/contrib/llvm/tools/clang/test/PCH/format-strings.c
    trunk/contrib/llvm/tools/clang/test/PCH/friend-template.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/functions.c
    trunk/contrib/llvm/tools/clang/test/PCH/functions.h
    trunk/contrib/llvm/tools/clang/test/PCH/fuzzy-pch.c
    trunk/contrib/llvm/tools/clang/test/PCH/fuzzy-pch.h
    trunk/contrib/llvm/tools/clang/test/PCH/headermap.h
    trunk/contrib/llvm/tools/clang/test/PCH/headermap.m
    trunk/contrib/llvm/tools/clang/test/PCH/headersearch.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/irgen-rdar13114142.mm
    trunk/contrib/llvm/tools/clang/test/PCH/libroot/usr/include/reloc.h
    trunk/contrib/llvm/tools/clang/test/PCH/libroot/usr/include/reloc2.h
    trunk/contrib/llvm/tools/clang/test/PCH/line-directive.c
    trunk/contrib/llvm/tools/clang/test/PCH/line-directive.h
    trunk/contrib/llvm/tools/clang/test/PCH/macro-redef.c
    trunk/contrib/llvm/tools/clang/test/PCH/method-redecls.m
    trunk/contrib/llvm/tools/clang/test/PCH/method_pool.h
    trunk/contrib/llvm/tools/clang/test/PCH/method_pool.m
    trunk/contrib/llvm/tools/clang/test/PCH/missing-file.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/modified-header-crash.c
    trunk/contrib/llvm/tools/clang/test/PCH/modified-header-crash.h
    trunk/contrib/llvm/tools/clang/test/PCH/modified-header-error.c
    trunk/contrib/llvm/tools/clang/test/PCH/ms-if-exists.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/multiple-include-pch.c
    trunk/contrib/llvm/tools/clang/test/PCH/multiple_decls.c
    trunk/contrib/llvm/tools/clang/test/PCH/multiple_decls.h
    trunk/contrib/llvm/tools/clang/test/PCH/namespaces.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/nonvisible-external-defs.c
    trunk/contrib/llvm/tools/clang/test/PCH/nonvisible-external-defs.h
    trunk/contrib/llvm/tools/clang/test/PCH/objc_container.h
    trunk/contrib/llvm/tools/clang/test/PCH/objc_container.m
    trunk/contrib/llvm/tools/clang/test/PCH/objc_exprs.h
    trunk/contrib/llvm/tools/clang/test/PCH/objc_exprs.m
    trunk/contrib/llvm/tools/clang/test/PCH/objc_import.h
    trunk/contrib/llvm/tools/clang/test/PCH/objc_import.m
    trunk/contrib/llvm/tools/clang/test/PCH/objc_literals.m
    trunk/contrib/llvm/tools/clang/test/PCH/objc_literals.mm
    trunk/contrib/llvm/tools/clang/test/PCH/objc_methods.h
    trunk/contrib/llvm/tools/clang/test/PCH/objc_methods.m
    trunk/contrib/llvm/tools/clang/test/PCH/objc_property.h
    trunk/contrib/llvm/tools/clang/test/PCH/objc_property.m
    trunk/contrib/llvm/tools/clang/test/PCH/objc_stmts.h
    trunk/contrib/llvm/tools/clang/test/PCH/objc_stmts.m
    trunk/contrib/llvm/tools/clang/test/PCH/objcxx-ivar-class.h
    trunk/contrib/llvm/tools/clang/test/PCH/objcxx-ivar-class.mm
    trunk/contrib/llvm/tools/clang/test/PCH/ocl_types.cl
    trunk/contrib/llvm/tools/clang/test/PCH/ocl_types.h
    trunk/contrib/llvm/tools/clang/test/PCH/opencl-extensions.cl
    trunk/contrib/llvm/tools/clang/test/PCH/pch-dir.c
    trunk/contrib/llvm/tools/clang/test/PCH/pch-dir.h
    trunk/contrib/llvm/tools/clang/test/PCH/pch__VA_ARGS__.c
    trunk/contrib/llvm/tools/clang/test/PCH/pch__VA_ARGS__.h
    trunk/contrib/llvm/tools/clang/test/PCH/pchpch.c
    trunk/contrib/llvm/tools/clang/test/PCH/pending-ids.m
    trunk/contrib/llvm/tools/clang/test/PCH/pr4489.c
    trunk/contrib/llvm/tools/clang/test/PCH/pragma-diag-section.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/pragma-diag.c
    trunk/contrib/llvm/tools/clang/test/PCH/pragma-weak.c
    trunk/contrib/llvm/tools/clang/test/PCH/pragma-weak.h
    trunk/contrib/llvm/tools/clang/test/PCH/preamble.c
    trunk/contrib/llvm/tools/clang/test/PCH/preprocess.c
    trunk/contrib/llvm/tools/clang/test/PCH/preprocess.h
    trunk/contrib/llvm/tools/clang/test/PCH/pth.c
    trunk/contrib/llvm/tools/clang/test/PCH/pth.h
    trunk/contrib/llvm/tools/clang/test/PCH/rdar10830559.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/rdar8852495.c
    trunk/contrib/llvm/tools/clang/test/PCH/reinclude.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/reinclude1.h
    trunk/contrib/llvm/tools/clang/test/PCH/reinclude2.h
    trunk/contrib/llvm/tools/clang/test/PCH/reloc.c
    trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp.h
    trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp.remap.h
    trunk/contrib/llvm/tools/clang/test/PCH/replaced-decl.m
    trunk/contrib/llvm/tools/clang/test/PCH/selector-warning.h
    trunk/contrib/llvm/tools/clang/test/PCH/selector-warning.m
    trunk/contrib/llvm/tools/clang/test/PCH/single-token-macro.c
    trunk/contrib/llvm/tools/clang/test/PCH/source-manager-stack.c
    trunk/contrib/llvm/tools/clang/test/PCH/stmts.c
    trunk/contrib/llvm/tools/clang/test/PCH/stmts.h
    trunk/contrib/llvm/tools/clang/test/PCH/struct.c
    trunk/contrib/llvm/tools/clang/test/PCH/struct.h
    trunk/contrib/llvm/tools/clang/test/PCH/subscripting-literals.m
    trunk/contrib/llvm/tools/clang/test/PCH/target-options.c
    trunk/contrib/llvm/tools/clang/test/PCH/target-options.h
    trunk/contrib/llvm/tools/clang/test/PCH/tentative-defs.c
    trunk/contrib/llvm/tools/clang/test/PCH/tentative-defs.h
    trunk/contrib/llvm/tools/clang/test/PCH/thread-local.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/thread-safety-attrs.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/types.c
    trunk/contrib/llvm/tools/clang/test/PCH/types.h
    trunk/contrib/llvm/tools/clang/test/PCH/typo.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/typo.m
    trunk/contrib/llvm/tools/clang/test/PCH/typo2.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/undefined-internal.c
    trunk/contrib/llvm/tools/clang/test/PCH/va_arg.c
    trunk/contrib/llvm/tools/clang/test/PCH/va_arg.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/va_arg.h
    trunk/contrib/llvm/tools/clang/test/PCH/variables.c
    trunk/contrib/llvm/tools/clang/test/PCH/variables.h
    trunk/contrib/llvm/tools/clang/test/PCH/working-directory.cpp
    trunk/contrib/llvm/tools/clang/test/PCH/working-directory.h
    trunk/contrib/llvm/tools/clang/test/Parser/CompoundStmtScope.c
    trunk/contrib/llvm/tools/clang/test/Parser/DelayedTemplateParsing.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/MicrosoftExtensions.c
    trunk/contrib/llvm/tools/clang/test/Parser/MicrosoftExtensions.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/PR11000.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/access-spec-attrs.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/altivec.c
    trunk/contrib/llvm/tools/clang/test/Parser/argument_qualified.c
    trunk/contrib/llvm/tools/clang/test/Parser/argument_redef.c
    trunk/contrib/llvm/tools/clang/test/Parser/argument_scope.c
    trunk/contrib/llvm/tools/clang/test/Parser/asm-constraints-pr7869.c
    trunk/contrib/llvm/tools/clang/test/Parser/asm.c
    trunk/contrib/llvm/tools/clang/test/Parser/asm.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/atomic.c
    trunk/contrib/llvm/tools/clang/test/Parser/attr-availability.c
    trunk/contrib/llvm/tools/clang/test/Parser/attributes.c
    trunk/contrib/llvm/tools/clang/test/Parser/attributes.mm
    trunk/contrib/llvm/tools/clang/test/Parser/backtrack-crash.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/bad-control.c
    trunk/contrib/llvm/tools/clang/test/Parser/block-block-storageclass.c
    trunk/contrib/llvm/tools/clang/test/Parser/block-pointer-decl.c
    trunk/contrib/llvm/tools/clang/test/Parser/bracket-crash.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/builtin_classify_type.c
    trunk/contrib/llvm/tools/clang/test/Parser/builtin_types_compatible.c
    trunk/contrib/llvm/tools/clang/test/Parser/c-namespace.c
    trunk/contrib/llvm/tools/clang/test/Parser/c11-noreturn.c
    trunk/contrib/llvm/tools/clang/test/Parser/c1x-alignas.c
    trunk/contrib/llvm/tools/clang/test/Parser/c1x-generic-selection.c
    trunk/contrib/llvm/tools/clang/test/Parser/captured-statements.c
    trunk/contrib/llvm/tools/clang/test/Parser/char-literal-printing.c
    trunk/contrib/llvm/tools/clang/test/Parser/check-objc2-syntax-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/check-syntax-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/check_cast.c
    trunk/contrib/llvm/tools/clang/test/Parser/colon-colon-parentheses.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/compound_literal.c
    trunk/contrib/llvm/tools/clang/test/Parser/control-scope.c
    trunk/contrib/llvm/tools/clang/test/Parser/crash-report.c
    trunk/contrib/llvm/tools/clang/test/Parser/cuda-kernel-call.cu
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-altivec.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-decl-expr-xfail.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-decl-expr.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-paren-expr.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-attributes.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-bool.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-casting.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-class.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-condition.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-decl.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-default-args.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-default-delete.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-ext-delete-default.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-extern-c-array.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-extra-semi.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-friend.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-in-c.c
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-crash.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-init-missing-paren-crash.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-namespace-alias.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-reference.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-stmt.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-template-argument.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-template-decl.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-throw.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-typeid.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-typeof.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-undeclared-identifier.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-using-declaration.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-using-directive.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx-variadic-func.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-ambig.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-attributes.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-condition.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-decl.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-for-range.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-in-cxx98.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-lambda-expressions.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-literal-operators.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-member-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-override-control-keywords.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-rvalue-reference.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx11-base-spec-attributes.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx11-brace-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx11-stmt-attributes.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx11-type-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/cxx11-user-defined-literals.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/declarators.c
    trunk/contrib/llvm/tools/clang/test/Parser/designator.c
    trunk/contrib/llvm/tools/clang/test/Parser/empty-translation-unit.c
    trunk/contrib/llvm/tools/clang/test/Parser/encode.m
    trunk/contrib/llvm/tools/clang/test/Parser/enhanced-proto-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/expressions.c
    trunk/contrib/llvm/tools/clang/test/Parser/expressions.m
    trunk/contrib/llvm/tools/clang/test/Parser/extension.c
    trunk/contrib/llvm/tools/clang/test/Parser/for.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/function-decls.c
    trunk/contrib/llvm/tools/clang/test/Parser/goto.c
    trunk/contrib/llvm/tools/clang/test/Parser/if-scope-c90.c
    trunk/contrib/llvm/tools/clang/test/Parser/if-scope-c99.c
    trunk/contrib/llvm/tools/clang/test/Parser/implicit-casts.c
    trunk/contrib/llvm/tools/clang/test/Parser/knr_parameter_attributes.c
    trunk/contrib/llvm/tools/clang/test/Parser/method-def-in-class.m
    trunk/contrib/llvm/tools/clang/test/Parser/method-prototype-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/missing-closing-rbrace.m
    trunk/contrib/llvm/tools/clang/test/Parser/missing-end-2.m
    trunk/contrib/llvm/tools/clang/test/Parser/missing-end-3.m
    trunk/contrib/llvm/tools/clang/test/Parser/missing-end-4.m
    trunk/contrib/llvm/tools/clang/test/Parser/missing-end.m
    trunk/contrib/llvm/tools/clang/test/Parser/missing-selector-name.mm
    trunk/contrib/llvm/tools/clang/test/Parser/ms-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/Parser/namelookup-bug-1.c
    trunk/contrib/llvm/tools/clang/test/Parser/namelookup-bug-2.c
    trunk/contrib/llvm/tools/clang/test/Parser/namespace-alias-attr.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/namespaces.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/nested-namespaces-recovery.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/objc-alias-printing.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-boxing.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-category-neg-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-diag-width.mm
    trunk/contrib/llvm/tools/clang/test/Parser/objc-error-qualified-implementation.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-neg-2.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-neg.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-foreach-syntax.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-init.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-interfaces.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-messaging-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-messaging-neg-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-missing-impl.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-property-syntax.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-quirks.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-recover.mm
    trunk/contrib/llvm/tools/clang/test/Parser/objc-synthesized-recover.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-try-catch-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/objc-type-printing.m
    trunk/contrib/llvm/tools/clang/test/Parser/objcxx-at.mm
    trunk/contrib/llvm/tools/clang/test/Parser/objcxx-lambda-expressions-neg.mm
    trunk/contrib/llvm/tools/clang/test/Parser/objcxx0x-lambda-expressions.mm
    trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-attributes.mm
    trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-initialized-temps.mm
    trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-protocol-in-template.mm
    trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-user-defined-literal.mm
    trunk/contrib/llvm/tools/clang/test/Parser/offsetof.c
    trunk/contrib/llvm/tools/clang/test/Parser/opencl-astype.cl
    trunk/contrib/llvm/tools/clang/test/Parser/opencl-image-access.cl
    trunk/contrib/llvm/tools/clang/test/Parser/opencl-kernel.cl
    trunk/contrib/llvm/tools/clang/test/Parser/opencl-pragma.cl
    trunk/contrib/llvm/tools/clang/test/Parser/opencl-storage-class.cl
    trunk/contrib/llvm/tools/clang/test/Parser/parenthesis-balance.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/parmvardecl_conversion.c
    trunk/contrib/llvm/tools/clang/test/Parser/placeholder-recovery.m
    trunk/contrib/llvm/tools/clang/test/Parser/pointer-arithmetic.c
    trunk/contrib/llvm/tools/clang/test/Parser/pointer_promotion.c
    trunk/contrib/llvm/tools/clang/test/Parser/pragma-fp-contract.c
    trunk/contrib/llvm/tools/clang/test/Parser/pragma-options.c
    trunk/contrib/llvm/tools/clang/test/Parser/pragma-options.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/pragma-pack.c
    trunk/contrib/llvm/tools/clang/test/Parser/pragma-visibility.c
    trunk/contrib/llvm/tools/clang/test/Parser/pragma-visibility2.c
    trunk/contrib/llvm/tools/clang/test/Parser/pragma-weak.c
    trunk/contrib/llvm/tools/clang/test/Parser/promote_types_in_proto.c
    trunk/contrib/llvm/tools/clang/test/Parser/recovery.c
    trunk/contrib/llvm/tools/clang/test/Parser/recovery.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/recovery.m
    trunk/contrib/llvm/tools/clang/test/Parser/recursion-limits.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/selector-1.m
    trunk/contrib/llvm/tools/clang/test/Parser/skip-function-bodies.mm
    trunk/contrib/llvm/tools/clang/test/Parser/statements.c
    trunk/contrib/llvm/tools/clang/test/Parser/struct-recursion.c
    trunk/contrib/llvm/tools/clang/test/Parser/switch-recovery.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/top-level-semi-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/traditional_arg_scope.c
    trunk/contrib/llvm/tools/clang/test/Parser/typeof.c
    trunk/contrib/llvm/tools/clang/test/Parser/types.c
    trunk/contrib/llvm/tools/clang/test/Parser/warn-dangling-else.cpp
    trunk/contrib/llvm/tools/clang/test/Parser/warn-semicolon-before-method-body.m
    trunk/contrib/llvm/tools/clang/test/Preprocessor/Inputs/TestFramework.framework/Frameworks/AnotherTestFramework.framework/Headers/AnotherTestFramework.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/Inputs/TestFramework.framework/Headers/TestFramework.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-dependency.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-dependency2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-in-macro-arg.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-location.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-physloc.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/aarch64-target-features.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/assembler-with-cpp.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/builtin_line.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/c90.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_3_p4.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p5.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p6.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p7.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p9.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/clang_headers.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save_if.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save_macro.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_and.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_bitand.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_bitor.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_compl.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_not.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_not_eq.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_keyword.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_keyword_ms_compat.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_spelling.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_or.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_true.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_xor.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/dependencies-and-pp.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/directive-invalid.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/disabled-cond-diags.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/disabled-cond-diags2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-macros-spacing.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-macros-undef.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-options.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/dump_macros.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/dumptokens_phyloc.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_comma.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_define_expansion.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_invalid_tok.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_liveness.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_multichar.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_usual_conversions.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/extension-warning.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/feature_tests.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/file_to_include.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/first-line-indent.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/function_macro_file.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/function_macro_file.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/has_attribute.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/has_include.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/hash_line.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/hash_space.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/header_lookup1.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/if_warning.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/ifdef-recover.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/import_self.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive1.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive3.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/include-macros.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/include-pth.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/indent_macro.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/init.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/invalid-__has_warning1.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/invalid-__has_warning2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/iwithprefix.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/line-directive-output.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/line-directive.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro-multiline.c.ignoreme
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_directive.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_directive.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_keyword.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_slocentry_merge.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_slocentry_merge.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_disable.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_expand.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_expandloc.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_comma_swallow.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_comma_swallow2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_disable_expand.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_lparen_scan.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_lparen_scan2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_placemarker.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_preexpand.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_varargs_iso.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_varargs_named.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_misc.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_not_define.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_bad.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_bcpl_comment.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_c_block_comment.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_commaext.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_empty.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_hard.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_hashhash.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_identifier_error.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_none.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_simple.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_spacing.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_spacing2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan_varargs.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rparen_scan.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rparen_scan2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_space.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_undef.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_variadic.cl
    trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt2.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt2.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/microsoft-ext.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/microsoft-import.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/missing-system-header.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/missing-system-header.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/mmx.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/non_fragile_feature.m
    trunk/contrib/llvm/tools/clang/test/Preprocessor/non_fragile_feature1.m
    trunk/contrib/llvm/tools/clang/test/Preprocessor/objc-pp.m
    trunk/contrib/llvm/tools/clang/test/Preprocessor/optimize.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/output_paste_avoid.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/overflow.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pic.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-modules.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-modules.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-record.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-record.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pr13851.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pr2086.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pr2086.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma-captured.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma-pushpop-macro.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic_output.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic_sections.cpp
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_microsoft.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_poison.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_sysheader.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_sysheader.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_unknown.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-arch-macros.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-exceptions.m
    trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-macros.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_count.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_empty_file.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_include.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_include.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_track.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/pushable-diagnostics.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/skipping_unclean.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/stdint.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/stringize_misc.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/stringize_space.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/traditional-cpp.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/ucn-allowed-chars.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/ucn-pp-identifier.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/undef-error.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/unterminated.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/user_defined_system_framework.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/utf8-allowed-chars.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-disabled-macro-expansion.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-macro-unused.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-macro-unused.h
    trunk/contrib/llvm/tools/clang/test/Preprocessor/warning_tests.c
    trunk/contrib/llvm/tools/clang/test/Preprocessor/x86_target_features.c
    trunk/contrib/llvm/tools/clang/test/Rewriter/blockcast3.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/blockstruct.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/crash.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/dllimport-typedef.c
    trunk/contrib/llvm/tools/clang/test/Rewriter/finally.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/func-in-impl.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/id-test-3.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/inner-block-helper-funcs.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/instancetype-test.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/ivar-encoding-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/ivar-encoding-2.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/line-generation-test.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/metadata-test-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/metadata-test-2.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/method-encoding-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/missing-dllimport.c
    trunk/contrib/llvm/tools/clang/test/Rewriter/modern-write-bf-abi.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/no-integrated-preprocessing-64bit.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/no-integrated-preprocessing.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-check-modern.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-modern-1.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-modern.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-encoding-bug-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-ivar-receiver-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-StretAPI-2.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-StretAPI.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-boxing.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-class-init-hooks.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-class-init.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-container-subscript.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-getclass-proto.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-implicit-cast.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-ivar-receiver-1.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-linkage-spec.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-metadata-visibility.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-numeric-literal.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-property-attributes.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-property-bitfield.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-string-concat-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-super-test.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/objc-synchronized-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/properties.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/property-dot-syntax.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/protocol-rewrite-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/protocol-rewrite-2.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-anonymous-union.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-api-bug.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-argument.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-consts.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-ivar-call.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-literal-1.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-literal.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-pointer.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-property.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-byref-in-nested-blocks.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-byref-vars.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-captured-nested-bvar.c
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-ivar-access.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-to-bool.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-category-property.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-constructor-init.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-eh.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-elaborated-type.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-extern-c.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-2.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-3.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-4.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-5.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-6.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-7.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-in-block.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-protocol-id.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-forward-class.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-forward-class.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-function-decl.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-implementation.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-ivar-use.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-line-directive.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-local-externs-in-block.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-local-static-id.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-message-expr.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-array-literal.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-atautoreleasepool.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block-consts.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block-ivar-call.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-captured-nested-bvar.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-catch.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-class.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-container-literal.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-default-property-synthesis.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-extern-c-func-decl.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivar-access.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivar-use.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars-1.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars-2.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-nested-ivar.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-private-ivars.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-protocol-1.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-protocol.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-qualified-type.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-struct-ivar-1.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-struct-ivar.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-super.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-synchronized.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-throw.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-try-catch-finally.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-try-finally.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-typeof.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nest.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks-1.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks-2.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-ivar.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-property-in-blocks.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-no-nextline.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-property-attributes.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-property-set-cfstring.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-property.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-qualified.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-type-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-qualified-id.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-rewritten-initializer.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-static-block.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-super-message.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-trivial-constructor.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-try-catch.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-typeof.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-unique-block-api.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-user-defined-accessors.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-vararg.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-weak-attr.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/static-type-protocol-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/undecl-objc-h.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/undeclared-method-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/undef-field-reference-1.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/unnamed-bf-modern-write.mm
    trunk/contrib/llvm/tools/clang/test/Rewriter/va-method.m
    trunk/contrib/llvm/tools/clang/test/Rewriter/weak_byref_objects.m
    trunk/contrib/llvm/tools/clang/test/Sema/128bitint.c
    trunk/contrib/llvm/tools/clang/test/Sema/2007-10-01-BuildArrayRef.c
    trunk/contrib/llvm/tools/clang/test/Sema/2009-03-09-WeakDeclarations-1.c
    trunk/contrib/llvm/tools/clang/test/Sema/2009-04-22-UnknownSize.c
    trunk/contrib/llvm/tools/clang/test/Sema/2009-07-17-VoidParameter.c
    trunk/contrib/llvm/tools/clang/test/Sema/2010-05-31-palignr.c
    trunk/contrib/llvm/tools/clang/test/Sema/Inputs/conversion.h
    trunk/contrib/llvm/tools/clang/test/Sema/Inputs/format-unused-system-args.h
    trunk/contrib/llvm/tools/clang/test/Sema/Inputs/pragma-arc-cf-code-audited.h
    trunk/contrib/llvm/tools/clang/test/Sema/Inputs/unused-expr-system-header.h
    trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility-x64.c
    trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility-x86.c
    trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility.c
    trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftExtensions.c
    trunk/contrib/llvm/tools/clang/test/Sema/PR2727.c
    trunk/contrib/llvm/tools/clang/test/Sema/PR2728.c
    trunk/contrib/llvm/tools/clang/test/Sema/PR2919-builtin-types-compat-strips-crv.c
    trunk/contrib/llvm/tools/clang/test/Sema/PR2923.c
    trunk/contrib/llvm/tools/clang/test/Sema/PR2963-enum-constant.c
    trunk/contrib/llvm/tools/clang/test/Sema/__try.c
    trunk/contrib/llvm/tools/clang/test/Sema/address-constant.c
    trunk/contrib/llvm/tools/clang/test/Sema/address_spaces.c
    trunk/contrib/llvm/tools/clang/test/Sema/align-arm-apcs.c
    trunk/contrib/llvm/tools/clang/test/Sema/align-x86-64.c
    trunk/contrib/llvm/tools/clang/test/Sema/align-x86.c
    trunk/contrib/llvm/tools/clang/test/Sema/alignas.c
    trunk/contrib/llvm/tools/clang/test/Sema/alloc_size.c
    trunk/contrib/llvm/tools/clang/test/Sema/altivec-init.c
    trunk/contrib/llvm/tools/clang/test/Sema/annotate.c
    trunk/contrib/llvm/tools/clang/test/Sema/anonymous-struct-union-c11.c
    trunk/contrib/llvm/tools/clang/test/Sema/anonymous-struct-union.c
    trunk/contrib/llvm/tools/clang/test/Sema/arg-duplicate.c
    trunk/contrib/llvm/tools/clang/test/Sema/arg-scope-c99.c
    trunk/contrib/llvm/tools/clang/test/Sema/arg-scope.c
    trunk/contrib/llvm/tools/clang/test/Sema/arm-asm.c
    trunk/contrib/llvm/tools/clang/test/Sema/arm-layout.c
    trunk/contrib/llvm/tools/clang/test/Sema/arm-neon-types.c
    trunk/contrib/llvm/tools/clang/test/Sema/array-bounds-ptr-arith.c
    trunk/contrib/llvm/tools/clang/test/Sema/array-constraint.c
    trunk/contrib/llvm/tools/clang/test/Sema/array-declared-as-incorrect-type.c
    trunk/contrib/llvm/tools/clang/test/Sema/array-init.c
    trunk/contrib/llvm/tools/clang/test/Sema/array-size-64.c
    trunk/contrib/llvm/tools/clang/test/Sema/array-size.c
    trunk/contrib/llvm/tools/clang/test/Sema/asm.c
    trunk/contrib/llvm/tools/clang/test/Sema/assign-null.c
    trunk/contrib/llvm/tools/clang/test/Sema/assign.c
    trunk/contrib/llvm/tools/clang/test/Sema/ast-print.c
    trunk/contrib/llvm/tools/clang/test/Sema/atomic-expr.c
    trunk/contrib/llvm/tools/clang/test/Sema/atomic-ops.c
    trunk/contrib/llvm/tools/clang/test/Sema/atomic-type.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-alias.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-aligned.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-args.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-availability-ios.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-availability-macosx.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-availability.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-cleanup.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-coldhot.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-decl-after-definition.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-declspec-ignored.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-deprecated-message.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-deprecated.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-format.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-format_arg.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-malloc.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-minsize.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-mode.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-naked.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-nodebug.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-noinline.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-noreturn.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-print.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-regparm.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-returns-twice.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-section.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-sentinel.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-tls_model.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-unavailable-message.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-unknown.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-unused.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-used.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-visibility.c
    trunk/contrib/llvm/tools/clang/test/Sema/attr-weak.c
    trunk/contrib/llvm/tools/clang/test/Sema/bitfield-layout.c
    trunk/contrib/llvm/tools/clang/test/Sema/bitfield-promote.c
    trunk/contrib/llvm/tools/clang/test/Sema/bitfield.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-args.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-call.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-explicit-noreturn-type.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-labels.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-literal.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-misc.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-printf-attribute-1.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-return-1.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-return-2.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-return-3.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-return.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-sentinel-attribute.c
    trunk/contrib/llvm/tools/clang/test/Sema/block-storageclass.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtin-object-size.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtin-prefetch.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtin-stackaddress.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtin-unary-fp.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtin_objc_msgSend.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtins-aarch64.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtins-arm.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtins-decl.c
    trunk/contrib/llvm/tools/clang/test/Sema/builtins.c
    trunk/contrib/llvm/tools/clang/test/Sema/c11-typedef-redef.c
    trunk/contrib/llvm/tools/clang/test/Sema/c89.c
    trunk/contrib/llvm/tools/clang/test/Sema/callingconv.c
    trunk/contrib/llvm/tools/clang/test/Sema/captured-statements.c
    trunk/contrib/llvm/tools/clang/test/Sema/carbon.c
    trunk/contrib/llvm/tools/clang/test/Sema/cast-incomplete.c
    trunk/contrib/llvm/tools/clang/test/Sema/cast-to-union.c
    trunk/contrib/llvm/tools/clang/test/Sema/cast.c
    trunk/contrib/llvm/tools/clang/test/Sema/check-increment.c
    trunk/contrib/llvm/tools/clang/test/Sema/compare.c
    trunk/contrib/llvm/tools/clang/test/Sema/complex-imag.c
    trunk/contrib/llvm/tools/clang/test/Sema/complex-init-list.c
    trunk/contrib/llvm/tools/clang/test/Sema/complex-int.c
    trunk/contrib/llvm/tools/clang/test/Sema/complex-promotion.c
    trunk/contrib/llvm/tools/clang/test/Sema/compound-literal.c
    trunk/contrib/llvm/tools/clang/test/Sema/conditional-expr.c
    trunk/contrib/llvm/tools/clang/test/Sema/conditional.c
    trunk/contrib/llvm/tools/clang/test/Sema/const-eval-64.c
    trunk/contrib/llvm/tools/clang/test/Sema/const-eval.c
    trunk/contrib/llvm/tools/clang/test/Sema/const-ptr-int-ptr-cast.c
    trunk/contrib/llvm/tools/clang/test/Sema/constant-builtins-2.c
    trunk/contrib/llvm/tools/clang/test/Sema/constant-builtins.c
    trunk/contrib/llvm/tools/clang/test/Sema/constant-conversion.c
    trunk/contrib/llvm/tools/clang/test/Sema/constructor-attribute.c
    trunk/contrib/llvm/tools/clang/test/Sema/conversion-64-32.c
    trunk/contrib/llvm/tools/clang/test/Sema/conversion.c
    trunk/contrib/llvm/tools/clang/test/Sema/crash-invalid-array.c
    trunk/contrib/llvm/tools/clang/test/Sema/darwin-align-cast.c
    trunk/contrib/llvm/tools/clang/test/Sema/decl-in-prototype.c
    trunk/contrib/llvm/tools/clang/test/Sema/decl-invalid.c
    trunk/contrib/llvm/tools/clang/test/Sema/decl-type-merging.c
    trunk/contrib/llvm/tools/clang/test/Sema/declspec.c
    trunk/contrib/llvm/tools/clang/test/Sema/default.c
    trunk/contrib/llvm/tools/clang/test/Sema/default1.c
    trunk/contrib/llvm/tools/clang/test/Sema/deref.c
    trunk/contrib/llvm/tools/clang/test/Sema/designated-initializers.c
    trunk/contrib/llvm/tools/clang/test/Sema/dllimport-dllexport.c
    trunk/contrib/llvm/tools/clang/test/Sema/enum-packed.c
    trunk/contrib/llvm/tools/clang/test/Sema/enum.c
    trunk/contrib/llvm/tools/clang/test/Sema/expr-address-of.c
    trunk/contrib/llvm/tools/clang/test/Sema/expr-comma-c99.c
    trunk/contrib/llvm/tools/clang/test/Sema/expr-comma.c
    trunk/contrib/llvm/tools/clang/test/Sema/exprs.c
    trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_casts.c
    trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_comparisons.c
    trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_components.c
    trunk/contrib/llvm/tools/clang/test/Sema/extern-redecl.c
    trunk/contrib/llvm/tools/clang/test/Sema/flexible-array-init.c
    trunk/contrib/llvm/tools/clang/test/Sema/floating-point-compare.c
    trunk/contrib/llvm/tools/clang/test/Sema/fn-ptr-as-fn-prototype.c
    trunk/contrib/llvm/tools/clang/test/Sema/for.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-string-percentm.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-c90.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-darwin.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-enum-fixed-type.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-enum.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-fixit-ssize_t.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-fixit.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-gnu.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-int-typedefs.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-no-fixit.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-non-iso.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-scanf.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings-size_t.c
    trunk/contrib/llvm/tools/clang/test/Sema/format-strings.c
    trunk/contrib/llvm/tools/clang/test/Sema/fp16-sema.c
    trunk/contrib/llvm/tools/clang/test/Sema/fpack-struct.c
    trunk/contrib/llvm/tools/clang/test/Sema/freemain.c
    trunk/contrib/llvm/tools/clang/test/Sema/function-ptr.c
    trunk/contrib/llvm/tools/clang/test/Sema/function-redecl.c
    trunk/contrib/llvm/tools/clang/test/Sema/function.c
    trunk/contrib/llvm/tools/clang/test/Sema/generic-selection.c
    trunk/contrib/llvm/tools/clang/test/Sema/gnu89.c
    trunk/contrib/llvm/tools/clang/test/Sema/heinous-extensions-off.c
    trunk/contrib/llvm/tools/clang/test/Sema/heinous-extensions-on.c
    trunk/contrib/llvm/tools/clang/test/Sema/i-c-e.c
    trunk/contrib/llvm/tools/clang/test/Sema/illegal-types.c
    trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-decl.c
    trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-freestanding.c
    trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-redecl.c
    trunk/contrib/llvm/tools/clang/test/Sema/implicit-cast-dump.c
    trunk/contrib/llvm/tools/clang/test/Sema/implicit-cast.c
    trunk/contrib/llvm/tools/clang/test/Sema/implicit-decl.c
    trunk/contrib/llvm/tools/clang/test/Sema/implicit-def.c
    trunk/contrib/llvm/tools/clang/test/Sema/implicit-int.c
    trunk/contrib/llvm/tools/clang/test/Sema/incompatible-sign.c
    trunk/contrib/llvm/tools/clang/test/Sema/incomplete-call.c
    trunk/contrib/llvm/tools/clang/test/Sema/incomplete-decl.c
    trunk/contrib/llvm/tools/clang/test/Sema/indirect-goto.c
    trunk/contrib/llvm/tools/clang/test/Sema/init-struct-qualified.c
    trunk/contrib/llvm/tools/clang/test/Sema/init-vector.c
    trunk/contrib/llvm/tools/clang/test/Sema/init.c
    trunk/contrib/llvm/tools/clang/test/Sema/initialize-noreturn.c
    trunk/contrib/llvm/tools/clang/test/Sema/inline-redef.c
    trunk/contrib/llvm/tools/clang/test/Sema/inline.c
    trunk/contrib/llvm/tools/clang/test/Sema/int-arith-convert.c
    trunk/contrib/llvm/tools/clang/test/Sema/invalid-cast.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/invalid-decl.c
    trunk/contrib/llvm/tools/clang/test/Sema/invalid-init-diag.c
    trunk/contrib/llvm/tools/clang/test/Sema/invalid-struct-init.c
    trunk/contrib/llvm/tools/clang/test/Sema/knr-def-call.c
    trunk/contrib/llvm/tools/clang/test/Sema/knr-variadic-def.c
    trunk/contrib/llvm/tools/clang/test/Sema/many-logical-ops.c
    trunk/contrib/llvm/tools/clang/test/Sema/many-parameters.c
    trunk/contrib/llvm/tools/clang/test/Sema/member-reference.c
    trunk/contrib/llvm/tools/clang/test/Sema/memset-invalid-1.c
    trunk/contrib/llvm/tools/clang/test/Sema/memset-invalid.c
    trunk/contrib/llvm/tools/clang/test/Sema/merge-decls.c
    trunk/contrib/llvm/tools/clang/test/Sema/mips16_attr_allowed.c
    trunk/contrib/llvm/tools/clang/test/Sema/mips16_attr_not_allowed.c
    trunk/contrib/llvm/tools/clang/test/Sema/missing-field-initializers.c
    trunk/contrib/llvm/tools/clang/test/Sema/mms-bitfields.c
    trunk/contrib/llvm/tools/clang/test/Sema/ms-inline-asm-invalid-arch.c
    trunk/contrib/llvm/tools/clang/test/Sema/ms-inline-asm.c
    trunk/contrib/llvm/tools/clang/test/Sema/ms_class_layout.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/ms_wide_predefined_expr.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/neon-vector-types.c
    trunk/contrib/llvm/tools/clang/test/Sema/nested-redef.c
    trunk/contrib/llvm/tools/clang/test/Sema/no-documentation-warn-tagdecl-specifier.c
    trunk/contrib/llvm/tools/clang/test/Sema/no-format-y2k-turnsoff-format.c
    trunk/contrib/llvm/tools/clang/test/Sema/nonnull.c
    trunk/contrib/llvm/tools/clang/test/Sema/nowarn-documentation-property.m
    trunk/contrib/llvm/tools/clang/test/Sema/offsetof.c
    trunk/contrib/llvm/tools/clang/test/Sema/outof-range-constant-compare.c
    trunk/contrib/llvm/tools/clang/test/Sema/overloadable-complex.c
    trunk/contrib/llvm/tools/clang/test/Sema/overloadable.c
    trunk/contrib/llvm/tools/clang/test/Sema/overloaded-func-transparent-union.c
    trunk/contrib/llvm/tools/clang/test/Sema/parentheses.c
    trunk/contrib/llvm/tools/clang/test/Sema/parentheses.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/pid_t.c
    trunk/contrib/llvm/tools/clang/test/Sema/pointer-addition.c
    trunk/contrib/llvm/tools/clang/test/Sema/pointer-conversion.c
    trunk/contrib/llvm/tools/clang/test/Sema/pointer-subtract-compat.c
    trunk/contrib/llvm/tools/clang/test/Sema/ppc-bool.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-mac68k-unsupported.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-mac68k.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-packed.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-arc-cf-code-audited.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-ms_struct.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-2.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-3.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-4.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-5.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-6.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-and-options-align.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-apple.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack.c
    trunk/contrib/llvm/tools/clang/test/Sema/pragma-unused.c
    trunk/contrib/llvm/tools/clang/test/Sema/predef.c
    trunk/contrib/llvm/tools/clang/test/Sema/predefined-function.c
    trunk/contrib/llvm/tools/clang/test/Sema/private-extern.c
    trunk/contrib/llvm/tools/clang/test/Sema/rdr6094103-unordered-compare-promote.c
    trunk/contrib/llvm/tools/clang/test/Sema/recover-goto.c
    trunk/contrib/llvm/tools/clang/test/Sema/redefinition.c
    trunk/contrib/llvm/tools/clang/test/Sema/return-noreturn.c
    trunk/contrib/llvm/tools/clang/test/Sema/return-silent.c
    trunk/contrib/llvm/tools/clang/test/Sema/return.c
    trunk/contrib/llvm/tools/clang/test/Sema/scope-check.c
    trunk/contrib/llvm/tools/clang/test/Sema/self-comparison.c
    trunk/contrib/llvm/tools/clang/test/Sema/sentinel-attribute.c
    trunk/contrib/llvm/tools/clang/test/Sema/shift.c
    trunk/contrib/llvm/tools/clang/test/Sema/short-enums.c
    trunk/contrib/llvm/tools/clang/test/Sema/sign-conversion.c
    trunk/contrib/llvm/tools/clang/test/Sema/statements.c
    trunk/contrib/llvm/tools/clang/test/Sema/static-array.c
    trunk/contrib/llvm/tools/clang/test/Sema/static-assert.c
    trunk/contrib/llvm/tools/clang/test/Sema/static-init.c
    trunk/contrib/llvm/tools/clang/test/Sema/stdcall-fastcall-x64.c
    trunk/contrib/llvm/tools/clang/test/Sema/stdcall-fastcall.c
    trunk/contrib/llvm/tools/clang/test/Sema/struct-cast.c
    trunk/contrib/llvm/tools/clang/test/Sema/struct-compat.c
    trunk/contrib/llvm/tools/clang/test/Sema/struct-decl.c
    trunk/contrib/llvm/tools/clang/test/Sema/struct-packed-align.c
    trunk/contrib/llvm/tools/clang/test/Sema/surpress-deprecated.c
    trunk/contrib/llvm/tools/clang/test/Sema/switch-1.c
    trunk/contrib/llvm/tools/clang/test/Sema/switch.c
    trunk/contrib/llvm/tools/clang/test/Sema/template-specialization.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/tentative-decls.c
    trunk/contrib/llvm/tools/clang/test/Sema/text-diag.c
    trunk/contrib/llvm/tools/clang/test/Sema/thread-specifier.c
    trunk/contrib/llvm/tools/clang/test/Sema/tls.c
    trunk/contrib/llvm/tools/clang/test/Sema/transparent-union-pointer.c
    trunk/contrib/llvm/tools/clang/test/Sema/transparent-union.c
    trunk/contrib/llvm/tools/clang/test/Sema/type-spec-struct-union.c
    trunk/contrib/llvm/tools/clang/test/Sema/typecheck-binop.c
    trunk/contrib/llvm/tools/clang/test/Sema/typedef-prototype.c
    trunk/contrib/llvm/tools/clang/test/Sema/typedef-redef.c
    trunk/contrib/llvm/tools/clang/test/Sema/typedef-retain.c
    trunk/contrib/llvm/tools/clang/test/Sema/typedef-variable-type.c
    trunk/contrib/llvm/tools/clang/test/Sema/typeof-use-deprecated.c
    trunk/contrib/llvm/tools/clang/test/Sema/types.c
    trunk/contrib/llvm/tools/clang/test/Sema/ucn-cstring.c
    trunk/contrib/llvm/tools/clang/test/Sema/ucn-identifiers.c
    trunk/contrib/llvm/tools/clang/test/Sema/uninit-det-order.c
    trunk/contrib/llvm/tools/clang/test/Sema/uninit-variables-vectors.c
    trunk/contrib/llvm/tools/clang/test/Sema/uninit-variables.c
    trunk/contrib/llvm/tools/clang/test/Sema/unnamed-bitfield-init.c
    trunk/contrib/llvm/tools/clang/test/Sema/unused-expr-system-header.c
    trunk/contrib/llvm/tools/clang/test/Sema/unused-expr.c
    trunk/contrib/llvm/tools/clang/test/Sema/usual-float.c
    trunk/contrib/llvm/tools/clang/test/Sema/va_arg_x86_32.c
    trunk/contrib/llvm/tools/clang/test/Sema/va_arg_x86_64.c
    trunk/contrib/llvm/tools/clang/test/Sema/var-redecl.c
    trunk/contrib/llvm/tools/clang/test/Sema/varargs-x86-64.c
    trunk/contrib/llvm/tools/clang/test/Sema/varargs.c
    trunk/contrib/llvm/tools/clang/test/Sema/varargs_unreachable.c
    trunk/contrib/llvm/tools/clang/test/Sema/variadic-block.c
    trunk/contrib/llvm/tools/clang/test/Sema/variadic-incomplete-arg-type.c
    trunk/contrib/llvm/tools/clang/test/Sema/variadic-promotion.c
    trunk/contrib/llvm/tools/clang/test/Sema/vector-assign.c
    trunk/contrib/llvm/tools/clang/test/Sema/vector-cast.c
    trunk/contrib/llvm/tools/clang/test/Sema/vector-init.c
    trunk/contrib/llvm/tools/clang/test/Sema/vector-ops.c
    trunk/contrib/llvm/tools/clang/test/Sema/vfprintf-invalid-redecl.c
    trunk/contrib/llvm/tools/clang/test/Sema/vfprintf-valid-redecl.c
    trunk/contrib/llvm/tools/clang/test/Sema/vla-2.c
    trunk/contrib/llvm/tools/clang/test/Sema/vla.c
    trunk/contrib/llvm/tools/clang/test/Sema/void_arg.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-bad-function-cast.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-cast-align.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-char-subscripts.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-almost-trailing.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-crlf.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-fixits.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation.m
    trunk/contrib/llvm/tools/clang/test/Sema/warn-duplicate-enum.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-freestanding-complex.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-gnu-designators.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-main-return-type.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-main.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-braces.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-prototypes.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-variable-declarations.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-outof-range-assign-enum.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-self-assign-field.mm
    trunk/contrib/llvm/tools/clang/test/Sema/warn-shadow.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-sizeof-array-decay.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-sizeof-arrayarg.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-strlcpycat-size.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-strncat-size.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety-mpi-hdf5.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety.cpp
    trunk/contrib/llvm/tools/clang/test/Sema/warn-unreachable.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-function.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-label.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-parameters.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-value.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-variables-werror.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-variables.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-vla.c
    trunk/contrib/llvm/tools/clang/test/Sema/warn-write-strings.c
    trunk/contrib/llvm/tools/clang/test/Sema/wchar.c
    trunk/contrib/llvm/tools/clang/test/Sema/weak-import-on-enum.c
    trunk/contrib/llvm/tools/clang/test/Sema/x86-attr-force-align-arg-pointer.c
    trunk/contrib/llvm/tools/clang/test/Sema/x86-builtin-palignr.c
    trunk/contrib/llvm/tools/clang/test/SemaCUDA/config-type.cu
    trunk/contrib/llvm/tools/clang/test/SemaCUDA/cuda.h
    trunk/contrib/llvm/tools/clang/test/SemaCUDA/function-target.cu
    trunk/contrib/llvm/tools/clang/test/SemaCUDA/kernel-call.cu
    trunk/contrib/llvm/tools/clang/test/SemaCUDA/qualifiers.cu
    trunk/contrib/llvm/tools/clang/test/SemaCXX/2008-01-11-BadWarning.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/array-bounds-system-header.h
    trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/malloc.h
    trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/warn-new-overaligned-3.h
    trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/warn-unused-variables.h
    trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibility-cxx98.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibility.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibilityNoExceptions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftExtensions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10177.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10243.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10447.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10458.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR11358.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR12481.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR5086-ambig-resolution-enum.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR6562.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR6618.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR7410.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR7944.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8012.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8385.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8755.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8884.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9459.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9460.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9461.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9572.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9884.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9902.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9908.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/__null.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/__try.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/abstract.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/access-base-class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/access-control-check.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/access-member-pointer.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/access.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/addr-of-overloaded-function-casting.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/addr-of-overloaded-function.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/address-of-temporary.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/address-of.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-initialize.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-newdelete.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-references.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/aggregate-initialization.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/alias-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/alignof-sizeof-reference.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/alignof.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/altivec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ambig-user-defined-conversions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ambiguous-builtin-unary-operator.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ambiguous-conversion-show-overload.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-struct.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-union-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-union.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bound-merge.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds-ptr-arith.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds-system-header.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/arrow-operator.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ast-print.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/atomic-type.cxx
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-after-definition.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-declspec-ignored.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-deprecated.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-format.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-address.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-memory.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-thread.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-nodebug.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-nonnull.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-noreturn.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-print.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-regparm.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-sentinel.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-unavailable.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-unused.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-visibility.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-weak.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-weakref.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-cxx98.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-pragma.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-subst-failure.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/bitfield-layout.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/block-call.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/blocks-1.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/blocks.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/bool.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/borland-extensions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-exception-spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-ambig.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-overload-1.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-overload.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin_objc_msgSend.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins-arm.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins-va_arg.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/c99-variable-length-array.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/c99.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/captured-statements.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cast-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cast-explicit-ctor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/class-base-member-init.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/class-layout.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/class-names.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/comma.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/compare.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/complex-init-list.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/complex-overload.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/composite-pointer-type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/compound-literal.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/condition.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/conditional-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/const-cast.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression-cxx1y.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-ackermann.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-backtrace-limit.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-depth.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-factorial.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-many-arguments.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-nqueens.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-printing.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-strlen.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-turing.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-value-init.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor-initializer.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor-recovery.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion-delete-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion-function.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/convert-to-bool.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/converting-constructor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-assignment.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-constructor-error.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-initialization.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/crash-lambda-12645424.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/crashes.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cstyle-cast.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cv-unqual-rvalues.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx-member-pointer-op.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-compat.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-constexpr-const.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-cursory-default-delete.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-defaulted-functions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-delegating-ctors.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-references.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-scalars.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-nontrivial-union.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-return-init-list.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-type-convert-construct.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-ast-print.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-attr-print.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-crashes.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-gnu-attrs.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-inheriting-ctors.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-thread-local-print.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-thread-local.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-user-defined-literals-unused.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-user-defined-literals.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-array-runtime-bound.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-constexpr-not-const.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-deduced-return-type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-initializer-aggregates.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat-flags.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat-pedantic.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/dcl_ambig_res.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/dcl_init_aggr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-expr-ambiguity.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-init-ref.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-microsoft-call-conv.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-98.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-crash.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-overloaded-functions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-pr4444.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-pr4448.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-this.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/default-argument-temporaries.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/default-assignment-operator.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/default-constructor-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/default1.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/default2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/defaulted-ctor-loop.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/defaulted-private-dtor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/delete.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/deleted-function.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/deleted-operator.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-auto.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-types.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/derived-to-base-ambig.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/destructor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/direct-initializer.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/discrim-union.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/do-while-scope.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/dr1301.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/dynamic-cast.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/elaborated-type-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/empty-class-layout.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-bitfield.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-scoped.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-unscoped-nonexistent.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/enum.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/exception-spec-no-exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/explicit.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/expression-traits.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/expressions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/extern-c.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/flexible-array-test.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/fntype-decl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-dereference.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-examples.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-no-std.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-unused.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/format-strings-0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/format-strings.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/friend-class-nodecl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/friend-out-of-line.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/friend.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/function-extern-c.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/function-overload-typo-crash.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/function-overloaded-redecl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/function-redecl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/function-type-qual.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/functional-cast.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/generic-selection.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/gnu-case-ranges.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/goto.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/goto2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/i-c-e-cxx.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/illegal-member-initialization.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-exception-spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-int.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-member-functions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-virtual-member-functions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/incomplete-call.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/increment-decrement.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/indirect-goto.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/inherit.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/init-priority-attr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/inline.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/instantiate-blocks.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-instantiated-field-decl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-member-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-template-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/issue547.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/lambda-expressions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_atomic_ns_hack.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_common_type_hack.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_map_base_hack.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage-spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/literal-operators.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/literal-type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/local-classes.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/long-virtual-inheritance-chain.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/lookup-member.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-class-11.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr-anonymous-union.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr-static.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-init.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-location.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-name-lookup.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-operator-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer-ms.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer-size.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointers-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/microsoft-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-header.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-members.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-namespace-qualifier-typo-corrections.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ms-exception-spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ms-interface.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/namespace-alias.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/namespace.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/neon-vector-types.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/nested-name-spec-locations.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/nested-name-spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/new-array-size-conv.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-predefined-decl-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-predefined-decl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/no-exceptions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/no-implicit-builtin-decls.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/no-rtti.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/no-warn-composite-pointer-type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/no-wchar.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/non-empty-class-size-zero.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/null_in_arithmetic_ops.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr-98.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr_in_arithmetic_ops.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/offsetof-0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/offsetof.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/operator-arrow-temporary.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/out-of-line-def-mismatch.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-call-copycon.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-call.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-decl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-member-call.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-value-dep-arg.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-builtin-operators-0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-builtin-operators.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-name.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-operator-decl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-operator.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/pascal-strings.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/pr13353.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/pr13394-crash-on-invalid.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-pack.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-unused.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-visibility.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-weak.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/prefetch-enum.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/primary-base.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/printf-block.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/printf-cstr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/pseudo-destructors.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ptrtomember-overload-resolution.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ptrtomember.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/qual-id-test.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/qualification-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-id-lookup.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-member-enum.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-names-diag.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/redeclared-alias-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/redeclared-auto.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/ref-init-ambiguous.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/references.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/reinterpret-cast.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/reinterpret-fn-obj-pedantic.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/return-noreturn.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/return-stack-addr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/return.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/runtimediag-ppe.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/rval-references-examples.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/rval-references.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/scope-check.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/shift.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/short-enums.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/short-wchar-sign.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/sourceranges.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/statements.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/static-array-member.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/static-assert.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/static-cast-complete-type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/static-cast.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/static-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/storage-class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/string-plus-int.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/struct-class-redecl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-cxx98.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-macro.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/switch.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/tag-ambig.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/templated-friend-decl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/this.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/trailing-return-0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/trivial-constructor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/trivial-destructor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/type-convert-construct.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/type-definition-in-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/type-dependent-exprs.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/type-formatting.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/type-traits-incomplete.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/type-traits.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/typedef-redecl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/typeid-ref.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/typeid.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/types_compatible_p.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/typo-correction.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unary-real-imag.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/undefined-inline.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/undefined-internal.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/underlying_type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/uninit-variables-conditional.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/uninit-variables.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/uninitialized.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-anytype-blocks.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-anytype.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-type-name.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unreachable-catch-clauses.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unreachable-code.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unused-functions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unused-with-error.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/unused.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/user-defined-conversions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-1.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-pr4441.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-pr4450.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-templates.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/using-directive.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/value-dependent-exprs.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/value-initialization.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/vararg-default-arg.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/vararg-non-pod.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/vector-casts.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/vector-no-lax.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/vector.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-base-used.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-member-functions-key-function.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override-x64.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override-x86.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/virtuals.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/visibility.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/vla.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/vtable-instantiation.cc
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-assignment-condition.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-bad-memaccess.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-bool-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-c++11-extensions.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-cast-align.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-char-subscripts.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-dangling-field.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-deprecated-header.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-empty-body.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-enum-compare.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-everthing.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-exit-time-destructors.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-func-as-bool.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-func-not-needed.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-global-constructors.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-implicit-conversion-floating-point-to-bool.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-large-by-value-copy.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-literal-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-loop-analysis.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-memset-bad-sizeof.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-noreturn.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-prototypes.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-variable-declarations.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned-3.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-overloaded-virtual.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-pure-virtual-call-from-ctor-dtor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-reinterpret-base-class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-self-assign.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-self-comparisons.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-shadow.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-sign-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-const-float.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-function-inheader.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-function-inheader.h
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-string-conversion.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-thread-safety-analysis.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-thread-safety-parsing.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unreachable.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unsequenced.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-comparison.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-filescoped.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-parameters.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-private-field.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-result.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-value.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-variables-error.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-variables.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-using-namespace-in-header.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-variable-not-needed.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-vla.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-weak-vtables.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/wchar_t.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/writable-strings-deprecated.cpp
    trunk/contrib/llvm/tools/clang/test/SemaCXX/zero-length-arrays.cpp
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ClassPropertyNotObject.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ContClassPropertyLookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/DoubleMethod.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/Inputs/arc-system-header.h
    trunk/contrib/llvm/tools/clang/test/SemaObjC/NSString-type.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/access-property-getter.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/alias-test-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/alias-test-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-bridged-cast.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-cf.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-decls.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-dict-bridged-cast.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-invalid.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-jump-block.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-no-runtime.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-non-pod-memaccess.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-nsconsumed-errors.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-objc-lifetime.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-peformselector.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property-decl-attrs.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property-lifetime.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-readonly-property-ivar-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-readonly-property-ivar.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-repeated-weak.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-setter-property-match.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-system-header.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-type-conversion.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unavailable-for-weakref.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unavailable-system-function.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unbridged-cast.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unsafe-assigns.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unsafe_unretained.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/arc.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/argument-checking.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/assign-rvalue-message.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/at-defs.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/atomoic-property-synnthesis-rules.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-availability.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-cleanup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-deprecated.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-malloc.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-ns-bridged.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-objc-exception.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-objc-gc.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-root-class.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/autoreleasepool.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/bad-property-synthesis-crash.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/bad-receiver-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/block-as-object.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/block-attr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/block-explicit-return-type.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/block-id-as-block-argtype.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/block-ivar.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/block-on-method-param.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/block-return.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/block-type-safety.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/blocks.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/boxing-illegal.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_assign_ivar.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_lib_functions.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_msgSend.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_nslog.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/call-super-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/catch-stmt.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/category-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/category-method-lookup-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/category-method-lookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/check-dup-decl-methods-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/check-dup-objc-decls-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-bitfield.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-conforming-protocol-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-conforming-protocol-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-def-test-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-extension-after-implementation.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-extension-dup-methods.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-getter-using-dotsyntax.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-impl-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-message-protocol-lookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-method-lookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-method-self.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-property-access.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-proto-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-protocol-method-match.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-protocol.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/class-unavail-warning.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa-api-usage.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa-api-usage.m.fixed
    trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/compare-qualified-class.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/compare-qualified-id.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/compatible-protocol-qualified-types.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/compound-init.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-10.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-4.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-5.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-6.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-7.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-8.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-9.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-a.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-legal.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-4.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-5.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-6.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-7.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-8.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conflict-atomic-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conflict-nonfragile-abi2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/conflicting-ivar-test-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/continuation-class-err.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/continuation-class-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/crash-label.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/crash-on-objc-bool-literal.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/custom-atomic-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/dealloc.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/debugger-cast-result-to-id.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/debugger-support.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/delay-parsing-cfunctions.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/deprecated-objc-introspection.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/deref-interface.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/direct-synthesized-ivar-access.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/dist-object-modifiers.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-ivar-check.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-ivar-in-class-extension.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-property-class-extension.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/enhanced-proto-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/enum-fixed-type.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/err-ivar-access-in-class-method.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/error-implicit-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/error-missing-getter.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/error-outof-scope-property-use.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/error-property-gc-attr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/exprs.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/foreach.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/format-arg-attribute.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/format-strings-objc.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/format-strings-system.h
    trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-receiver.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-redeclare.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-protocol-incomplete-impl-warn.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/gc-attributes.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/gcc-cast-ext.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/generic-selection.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/getter-setter-defined-in-category-of-parent.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ibaction.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/iboutlet.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/iboutletcollection-attr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/id.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/id_builtin.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/idiomatic-parentheses.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ignore-qualifier-on-qualified-id.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ignore-weakimport-method.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/illegal-nonarc-bridged-cast.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/incompatible-protocol-qualified-types.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/incomplete-implementation.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/inst-method-lookup-in-root.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/instancetype.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-layout-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-layout.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-scope-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-scope.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-tu-variable.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-code.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-objc-decls-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-receiver.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-typename.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-access-package.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-access-tests.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-class-extension-error.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-class-extension.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-implementations.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-lookup-resolution-builtin.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-lookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-ref-misuse.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-sem-check-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-sem-check-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/legacy-implementation-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/message.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-arg-qualifier-warning.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-attributes.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-bad-param.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-def-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-def-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-encoding-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-in-class-extension-impl.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-4.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-5.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-no-context.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-not-defined.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-prototype-scope.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-sentinel-attr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undef-category-warn-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undef-extension-warn-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undefined-warn-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-unused-attribute.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/method-warn-unused-attribute.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/mismatched-undefined-method.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-atend-metadata.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-method-context.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-method-return-type.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/narrow-property-type-in-cont-class.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/nested-typedef-decl.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/newproperty-class-method-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-gc-weak-test.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-ivar-access-control.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-ivar-in-interface-block.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-objc-exceptions.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-protocol-option-tests.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-qual-mismatch.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-synth-protocol-meth.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-unimpl-method.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warning-unavail-unimp.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/nonarc-weak.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/nonnull.h
    trunk/contrib/llvm/tools/clang/test/SemaObjC/nonnull.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/nowarn-superclass-method-mismatch.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/nsobject-attribute-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/nsobject-attribute.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-array-literal.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-buffered-methods.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-cstyle-args-in-methods.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-dictionary-literal.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-comparison.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-nsnumber.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-sig.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-qualified-property-lookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-string-constant.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc2-merge-gc-attribue-decl.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/objc2-warn-weak-decl.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/overriding-property-in-class-extension.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/pedantic-dynamic-test.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/pragma-pack.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-10.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-11.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-12.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-13.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-4.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-5.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-6.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-7.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-8.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-9-impl-method.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-9.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-and-class-extension.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-and-ivar-use.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-4.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-impl.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-deprecated-warning.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-dot-receiver.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-error-readonly-assign.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-expression-error.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-impl-misuse.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-in-class-extension-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-in-class-extension.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-inherited.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-ivar-mismatch.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-lookup-in-id.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-method-lookup-impl.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-missing.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-nonfragile-abi.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-noninherited-availability-attr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-noprotocol-warning.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-not-lvalue.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-ns-returns-not-retained-attr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-redundant-decl-accessor.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-typecheck-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-user-setter.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property-weak.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/props-on-prots.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-archane.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-attribute.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-expr-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-expr-neg-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-implementation-inherited.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-implementing-class-methods.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-lookup-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-lookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-qualified-class-unsupported.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-typecheck.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-warn.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/protocols.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/provisional-ivar-lookup.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/qualified-protocol-method-conflicts.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/rdar6248119.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/rdr-6211479-array-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/receiver-forward-class.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/related-result-type-inference.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/restrict-id-type.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/return.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/scope-check.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-2.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-3.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-error.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-overload.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/self-assign.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/self-declared-in-block.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/self-in-function.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/setter-dotsyntax.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/severe-syntax-error.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/sizeof-interface.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/special-dep-unavail-warning.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/stand-alone-implementation.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/static-ivar-ref-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/stmts.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/string.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/super-cat-prot.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/super-class-protocol-conformance.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/super-dealloc-attribute.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/super-property-message-expr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/super-property-notation.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/super.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/synchronized.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/synth-provisional-ivars-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/synth-provisional-ivars.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/synthesize-setter-contclass.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/synthesized-ivar.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/tentative-property-decl.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/transparent-union.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/try-catch.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/typedef-class.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/typo-correction.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/ucn-objc-string.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/undeclared-selector.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-class-messagin-error.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-protocol-methods-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-superclass-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/undefined-protocol-type-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/unimplemented-protocol-prop.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/uninit-variables.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/unknown-anytype.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/unqualified-to-qualified-class-warn.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/unused.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/va-method-1.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-assign-property-nscopying.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-cast-of-sel-expr.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-deprecated-implementations.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-direct-ivar-access.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-forward-class-attr-deprecated.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-implicit-atomic-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-implicit-self-in-block.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-incompatible-builtin-types.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-missing-super.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-protocol-method-deprecated.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-retain-block-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-retain-cycle.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-selector-selection.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-strict-selector-match.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-superclass-method-mismatch.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-unreachable.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-unused-exception-param.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-weak-field.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-write-strings.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/warning-missing-selector-name.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-attr-ivar.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-property.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-receiver-warn.m
    trunk/contrib/llvm/tools/clang/test/SemaObjC/writable-property-in-superclass.m
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/Inputs/arc-system-header.h
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/NSString-type.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/abstract-class-type-ivar.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-0x.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-bool-conversion.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-bridged-cast.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-libstdcxx.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-memfunc.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-nsconsumed-errors.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-objc-lifetime.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-overloading.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-ppe.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-system-header.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-templates.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-type-conversion.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-type-traits.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-unavailable-for-weakref.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-unbridged-cast.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/argument-dependent-lookup.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/blocks.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/boxing-illegal-types.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/capturing-flexible-array-in-block.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/category-lookup.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/composite-objc-pointertype.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conditional-expr.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/const-cast.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-ranking.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-to-objc-pointer-2.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-to-objc-pointer.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/crash.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cstyle-cast.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cxxoperator-selector.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/debugger-cast-result-to-id.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/debugger-support.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/decltype.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/deduction.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-cfunctions.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-cplusfuncs.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-func-tryblock.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/exceptions-fragile.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/expr-objcxx.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/foreach-block.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/foreach.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/format-strings.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/fragile-abi-object-assign.m
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/function-pointer-void-star.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/gc-attributes.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/goto.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instancetype.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-expr.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-message.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-method-return.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-stmt.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-construct.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-lookup.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-reference-type.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-struct.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/linkage-spec.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/literals.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/message.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/namespace-lookup.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/null_objc_pointer.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/nullptr.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-container-subscripting.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-decls-inside-namespace.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-extern-c.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-pointer-conv.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc2-merge-gc-attribue-decl.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload-1.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload-gc.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/parameters.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/propert-dot-error.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/properties.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-reference.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-synthesis-error.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-type-mismatch.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/protocol-lookup.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/references.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/reinterpret-cast-objc-pointertype.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/related-result-type-inference.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/reserved-keyword-methods.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/standard-conversion-to-bool.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/static-cast.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/unknown-anytype.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/vararg-non-pod.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/vla.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/void_to_obj.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/warn-missing-super.mm
    trunk/contrib/llvm/tools/clang/test/SemaObjCXX/warn-strict-selector-match.mm
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/address-spaces.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/cond.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/endian-attr.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/event_t.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/event_t_overload.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/extension-fp64.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/half.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/init.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-kernel-attrs.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-kernel.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-logical-ops-1.1.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-logical-ops-1.2.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/sampler_t.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/sampler_t_overload.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/shifts.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/storageclass.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/unsupported.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vec_compare.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vec_step.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_conv_invalid.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_literals_const.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_literals_invalid.cl
    trunk/contrib/llvm/tools/clang/test/SemaOpenCL/warn-missing-prototypes.cl
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/ackermann.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/address-spaces.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-church-numerals.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-nested-nontag.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-template-template-param.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-templates.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/alignas.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/ambiguous-ovl-print.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/anonymous-union.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/array-to-pointer-decay.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/atomics.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/attributes.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/canonical-expr-type-0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/canonical-expr-type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-ctor-initializer.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-decl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-id-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-id.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/constexpr-instantiate.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/constructor-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/copy-ctor-assign.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/crash-10438657.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/crash-8204126.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/current-instantiation.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/deduction-crash.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/deduction.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-arguments-cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-arguments.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-expr-arguments-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-expr-arguments.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/delegating-constructors.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-base-classes.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-base-member-init.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-class-member-operator.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-names-no-std.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-names.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-sized_array.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-template-recover.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-type-identity.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/derived.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/destructor-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/elaborated-type-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/enum-argument.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/enum-forward.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/example-typelist.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/explicit-instantiation.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/explicit-specialization-member.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/ext-vector-type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/extern-templates.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/fibonacci.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/friend-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/friend.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/fun-template-def.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/function-template-specialization.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/implicit-instantiation-1.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/inject-templated-friend-post.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/inject-templated-friend.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/injected-class-name.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-anonymous-union.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-array.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-attr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-c99.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-call.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-case.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-cast.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-clang.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-complete.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-decl-dtor.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-decl-init.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-declref-ice.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-declref.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-deeply.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-dependent-nested-name.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-elab-type-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-enum-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-enum.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-exception-spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-1.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-3.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-4.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-5.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-basic.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-field.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-friend-class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-1.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-1.mm
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-params.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-init.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-invalid.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-local-class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-pointers.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-method.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-non-dependent-types.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-non-type-template-parameter.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-objc-1.mm
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-overload-candidates.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-overloaded-arrow.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-self.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-sizeof.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-static-var.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-subscript.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-template-template-parm.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-try-catch.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-typedef.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-typeof.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-using-decl.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-backtrace.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-1.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-3.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-defarg.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-exception-spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-subst-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-subst.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-order.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/issue150.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/local-member-templates.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/lookup-dependent-bases.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-access-ambig.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-access-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-function-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-inclass-init-value-dependent.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-initializers.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-template-access-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/metafun-apply.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/missing-class-keyword-crash.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-if-exists.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-lookup-template-base-classes.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-incomplete-class.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-linkage.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-name-spec-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/operator-function-id-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/operator-template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/overload-candidates.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/overload-uneval.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/partial-spec-instantiate.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/pragma-ms_struct.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/qualified-id.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/qualified-names-diag.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/rdar9173693.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/recovery-crash.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/recursive-template-instantiation.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/resolve-single-template-id.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/self-comparison.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_nontype.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_nontype_cxx11.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_template.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_type.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_order.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec_blocks.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec_neg.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_explicit.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_explicit_cxx0x.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_func_order.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-class-traits.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-decl-fail.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-id-expr.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-id-printing.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-2.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-3.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-4.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/typo-dependent-name.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/unresolved-construct.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/unused-variables.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/value-dependent-null-pointer-constant.cpp
    trunk/contrib/llvm/tools/clang/test/SemaTemplate/virtual-member-functions.cpp
    trunk/contrib/llvm/tools/clang/test/TableGen/DiagnosticBase.inc
    trunk/contrib/llvm/tools/clang/test/TableGen/anonymous-groups.td
    trunk/contrib/llvm/tools/clang/test/TableGen/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/TableGen/tg-fixits.td
    trunk/contrib/llvm/tools/clang/test/TestRunner.sh
    trunk/contrib/llvm/tools/clang/test/Tooling/Inputs/lit.local.cfg
    trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source-parent-of-cwd.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source-parent.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-args.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-ast-dump.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-autodetect-dir.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-builtin-headers.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-chdir.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-pwd.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/clang-check.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/multi-jobs.cpp
    trunk/contrib/llvm/tools/clang/test/Tooling/pch.cpp
    trunk/contrib/llvm/tools/clang/test/Unit/lit.cfg
    trunk/contrib/llvm/tools/clang/test/Unit/lit.site.cfg.in
    trunk/contrib/llvm/tools/clang/test/cxx-sections.data
    trunk/contrib/llvm/tools/clang/test/lit.cfg
    trunk/contrib/llvm/tools/clang/test/lit.site.cfg.in
    trunk/contrib/llvm/tools/clang/test/make_test_dirs.pl
    trunk/contrib/llvm/tools/clang/tools/arcmt-test/arcmt-test.cpp
    trunk/contrib/llvm/tools/clang/tools/c-arcmt-test/c-arcmt-test.c
    trunk/contrib/llvm/tools/clang/tools/c-index-test/c-index-test.c
    trunk/contrib/llvm/tools/clang/tools/clang-check/ClangCheck.cpp
    trunk/contrib/llvm/tools/clang/tools/clang-format/ClangFormat.cpp
    trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format-bbedit.applescript
    trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format-diff.py
    trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format.el
    trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format.py
    trunk/contrib/llvm/tools/clang/tools/diag-build/diag-build.sh
    trunk/contrib/llvm/tools/clang/tools/diagtool/DiagTool.cpp
    trunk/contrib/llvm/tools/clang/tools/diagtool/DiagTool.h
    trunk/contrib/llvm/tools/clang/tools/diagtool/DiagnosticNames.cpp
    trunk/contrib/llvm/tools/clang/tools/diagtool/DiagnosticNames.h
    trunk/contrib/llvm/tools/clang/tools/diagtool/ListWarnings.cpp
    trunk/contrib/llvm/tools/clang/tools/diagtool/ShowEnabledWarnings.cpp
    trunk/contrib/llvm/tools/clang/tools/diagtool/TreeView.cpp
    trunk/contrib/llvm/tools/clang/tools/diagtool/diagtool_main.cpp
    trunk/contrib/llvm/tools/clang/tools/driver/Info.plist.in
    trunk/contrib/llvm/tools/clang/tools/driver/clang_symlink.cmake
    trunk/contrib/llvm/tools/clang/tools/libclang/ARCMigrate.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndex.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexCXX.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexCodeCompletion.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexDiagnostic.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexDiagnostic.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexHigh.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexInclusionStack.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexUSRs.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexer.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CIndexer.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CLog.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CXComment.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CXComment.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CXCompilationDatabase.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CXCursor.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CXCursor.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CXLoadedDiagnostic.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CXLoadedDiagnostic.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CXSourceLocation.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CXSourceLocation.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CXStoredDiagnostic.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CXString.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CXString.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CXTranslationUnit.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CXType.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/CXType.h
    trunk/contrib/llvm/tools/clang/tools/libclang/CursorVisitor.h
    trunk/contrib/llvm/tools/clang/tools/libclang/IndexBody.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/IndexDecl.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/IndexTypeSourceInfo.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/Index_Internal.h
    trunk/contrib/llvm/tools/clang/tools/libclang/Indexing.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/IndexingContext.cpp
    trunk/contrib/llvm/tools/clang/tools/libclang/IndexingContext.h
    trunk/contrib/llvm/tools/clang/tools/libclang/RecursiveASTVisitor.h
    trunk/contrib/llvm/tools/clang/tools/libclang/SimpleFormatContext.h
    trunk/contrib/llvm/tools/clang/tools/libclang/libclang.exports
    trunk/contrib/llvm/tools/clang/tools/scan-build/c++-analyzer
    trunk/contrib/llvm/tools/clang/tools/scan-build/ccc-analyzer
    trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build
    trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build.1
    trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build.bat
    trunk/contrib/llvm/tools/clang/tools/scan-build/scanview.css
    trunk/contrib/llvm/tools/clang/tools/scan-build/set-xcode-analyzer
    trunk/contrib/llvm/tools/clang/tools/scan-build/sorttable.js
    trunk/contrib/llvm/tools/clang/tools/scan-view/Reporter.py
    trunk/contrib/llvm/tools/clang/tools/scan-view/ScanView.py
    trunk/contrib/llvm/tools/clang/tools/scan-view/scan-view
    trunk/contrib/llvm/tools/clang/tools/scan-view/startfile.py
    trunk/contrib/llvm/tools/clang/unittests/AST/ASTContextParentMapTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/AST/CommentLexer.cpp
    trunk/contrib/llvm/tools/clang/unittests/AST/CommentParser.cpp
    trunk/contrib/llvm/tools/clang/unittests/AST/DeclPrinterTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/AST/MatchVerifier.h
    trunk/contrib/llvm/tools/clang/unittests/AST/SourceLocationTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/AST/StmtPrinterTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/ASTMatchers/ASTMatchersTest.h
    trunk/contrib/llvm/tools/clang/unittests/Basic/CharInfoTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Basic/FileManagerTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Basic/SourceManagerTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Format/FormatTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Frontend/FrontendActionTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Lex/LexerTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Lex/PPCallbacksTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Tooling/CommentHandlerTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Tooling/CompilationDatabaseTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Tooling/RefactoringCallbacksTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Tooling/RefactoringTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp
    trunk/contrib/llvm/tools/clang/unittests/Tooling/RewriterTestContext.h
    trunk/contrib/llvm/tools/clang/unittests/Tooling/TestVisitor.h
    trunk/contrib/llvm/tools/clang/unittests/Tooling/ToolingTest.cpp
    trunk/contrib/llvm/tools/clang/utils/ABITest/ABITestGen.py
    trunk/contrib/llvm/tools/clang/utils/ABITest/Enumeration.py
    trunk/contrib/llvm/tools/clang/utils/ABITest/Makefile.test.common
    trunk/contrib/llvm/tools/clang/utils/ABITest/TypeGen.py
    trunk/contrib/llvm/tools/clang/utils/ABITest/build-and-summarize-all.sh
    trunk/contrib/llvm/tools/clang/utils/ABITest/build-and-summarize.sh
    trunk/contrib/llvm/tools/clang/utils/ABITest/build.sh
    trunk/contrib/llvm/tools/clang/utils/ABITest/summarize.sh
    trunk/contrib/llvm/tools/clang/utils/CIndex/completion_logger_server.py
    trunk/contrib/llvm/tools/clang/utils/CaptureCmd
    trunk/contrib/llvm/tools/clang/utils/ClangDataFormat.py
    trunk/contrib/llvm/tools/clang/utils/CmpDriver
    trunk/contrib/llvm/tools/clang/utils/FindSpecRefs
    trunk/contrib/llvm/tools/clang/utils/FuzzTest
    trunk/contrib/llvm/tools/clang/utils/TestUtils/deep-stack.py
    trunk/contrib/llvm/tools/clang/utils/TestUtils/pch-test.pl
    trunk/contrib/llvm/tools/clang/utils/VtableTest/check-zti
    trunk/contrib/llvm/tools/clang/utils/VtableTest/check-ztt
    trunk/contrib/llvm/tools/clang/utils/VtableTest/check-zvt
    trunk/contrib/llvm/tools/clang/utils/VtableTest/gen.cc
    trunk/contrib/llvm/tools/clang/utils/analyzer/CmpRuns.py
    trunk/contrib/llvm/tools/clang/utils/analyzer/SATestAdd.py
    trunk/contrib/llvm/tools/clang/utils/analyzer/SATestBuild.py
    trunk/contrib/llvm/tools/clang/utils/analyzer/SumTimerInfo.py
    trunk/contrib/llvm/tools/clang/utils/analyzer/reducer.pl
    trunk/contrib/llvm/tools/clang/utils/analyzer/ubiviz
    trunk/contrib/llvm/tools/clang/utils/analyzer/update_plist_test.pl
    trunk/contrib/llvm/tools/clang/utils/builtin-defines.c
    trunk/contrib/llvm/tools/clang/utils/clang-completion-mode.el
    trunk/contrib/llvm/tools/clang/utils/clangVisualizers.txt
    trunk/contrib/llvm/tools/clang/utils/find-unused-diagnostics.sh
    trunk/contrib/llvm/tools/clang/utils/token-delta.py
    trunk/contrib/llvm/tools/clang/utils/valgrind/x86_64-pc-linux-gnu_gcc-4.3.3.supp
    trunk/contrib/llvm/tools/clang/www/OpenProjects.html
    trunk/contrib/llvm/tools/clang/www/UniversalDriver.html
    trunk/contrib/llvm/tools/clang/www/analyzer/annotations.html
    trunk/contrib/llvm/tools/clang/www/analyzer/available_checks.html
    trunk/contrib/llvm/tools/clang/www/analyzer/checker_dev_manual.html
    trunk/contrib/llvm/tools/clang/www/analyzer/content.css
    trunk/contrib/llvm/tools/clang/www/analyzer/faq.html
    trunk/contrib/llvm/tools/clang/www/analyzer/filing_bugs.html
    trunk/contrib/llvm/tools/clang/www/analyzer/index.html
    trunk/contrib/llvm/tools/clang/www/analyzer/installation.html
    trunk/contrib/llvm/tools/clang/www/analyzer/latest_checker.html.incl
    trunk/contrib/llvm/tools/clang/www/analyzer/menu.css
    trunk/contrib/llvm/tools/clang/www/analyzer/menu.html.incl
    trunk/contrib/llvm/tools/clang/www/analyzer/open_projects.html
    trunk/contrib/llvm/tools/clang/www/analyzer/potential_checkers.html
    trunk/contrib/llvm/tools/clang/www/analyzer/release_notes.html
    trunk/contrib/llvm/tools/clang/www/analyzer/scan-build.html
    trunk/contrib/llvm/tools/clang/www/analyzer/scripts/dbtree.js
    trunk/contrib/llvm/tools/clang/www/analyzer/scripts/menu.js
    trunk/contrib/llvm/tools/clang/www/analyzer/xcode.html
    trunk/contrib/llvm/tools/clang/www/builtins.py
    trunk/contrib/llvm/tools/clang/www/clang_video-05-25-2007.html
    trunk/contrib/llvm/tools/clang/www/clang_video-07-25-2007.html
    trunk/contrib/llvm/tools/clang/www/comparison.html
    trunk/contrib/llvm/tools/clang/www/compatibility.html
    trunk/contrib/llvm/tools/clang/www/content.css
    trunk/contrib/llvm/tools/clang/www/cxx_compatibility.html
    trunk/contrib/llvm/tools/clang/www/cxx_status.html
    trunk/contrib/llvm/tools/clang/www/demo/DemoInfo.html
    trunk/contrib/llvm/tools/clang/www/demo/index.cgi
    trunk/contrib/llvm/tools/clang/www/demo/syntax.css
    trunk/contrib/llvm/tools/clang/www/diagnostics.html
    trunk/contrib/llvm/tools/clang/www/features.html
    trunk/contrib/llvm/tools/clang/www/get_involved.html
    trunk/contrib/llvm/tools/clang/www/get_started.html
    trunk/contrib/llvm/tools/clang/www/hacking.html
    trunk/contrib/llvm/tools/clang/www/index.html
    trunk/contrib/llvm/tools/clang/www/libstdc++4.4-clang0x.patch
    trunk/contrib/llvm/tools/clang/www/libstdc++4.6-clang11.patch
    trunk/contrib/llvm/tools/clang/www/libstdc++4.7-clang11.patch
    trunk/contrib/llvm/tools/clang/www/menu.css
    trunk/contrib/llvm/tools/clang/www/menu.html.incl
    trunk/contrib/llvm/tools/clang/www/related.html
    trunk/contrib/llvm/tools/clang/www/robots.txt
    trunk/contrib/llvm/tools/gold/gold-plugin.cpp
    trunk/contrib/llvm/tools/gold/gold.exports
    trunk/contrib/llvm/tools/llvm-config/BuildVariables.inc.in
    trunk/contrib/llvm/tools/llvm-config/llvm-config.cpp
    trunk/contrib/llvm/tools/llvm-cov/llvm-cov.cpp
    trunk/contrib/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp
    trunk/contrib/llvm/tools/llvm-jitlistener/llvm-jitlistener.cpp
    trunk/contrib/llvm/tools/llvm-mcmarkup/llvm-mcmarkup.cpp
    trunk/contrib/llvm/tools/llvm-size/llvm-size.cpp
    trunk/contrib/llvm/tools/lto/LTOCodeGenerator.cpp
    trunk/contrib/llvm/tools/lto/LTOCodeGenerator.h
    trunk/contrib/llvm/tools/lto/LTODisassembler.cpp
    trunk/contrib/llvm/tools/lto/LTOModule.cpp
    trunk/contrib/llvm/tools/lto/LTOModule.h
    trunk/contrib/llvm/tools/lto/lto.cpp
    trunk/contrib/llvm/tools/lto/lto.exports
    trunk/contrib/llvm/tools/obj2yaml/coff2yaml.cpp
    trunk/contrib/llvm/tools/obj2yaml/obj2yaml.cpp
    trunk/contrib/llvm/tools/obj2yaml/obj2yaml.h

Removed Paths:
-------------
    trunk/contrib/llvm/tools/yaml2obj/

Modified: trunk/contrib/llvm/tools/bugpoint-passes/TestPasses.cpp
===================================================================
--- trunk/contrib/llvm/tools/bugpoint-passes/TestPasses.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/bugpoint-passes/TestPasses.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-//===- TestPasses.cpp - "buggy" passes used to test bugpoint --------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains "buggy" passes that are used to test bugpoint, to check
-// that it is narrowing down testcases correctly.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/BasicBlock.h"
-#include "llvm/IR/Constant.h"
-#include "llvm/IR/Instructions.h"
-#include "llvm/IR/Type.h"
-#include "llvm/InstVisitor.h"
-#include "llvm/Pass.h"
-
-using namespace llvm;
-
-namespace {
-  /// CrashOnCalls - This pass is used to test bugpoint.  It intentionally
-  /// crashes on any call instructions.
-  class CrashOnCalls : public BasicBlockPass {
-  public:
-    static char ID; // Pass ID, replacement for typeid
-    CrashOnCalls() : BasicBlockPass(ID) {}
-  private:
-    virtual void getAnalysisUsage(AnalysisUsage &AU) const {
-      AU.setPreservesAll();
-    }
-
-    bool runOnBasicBlock(BasicBlock &BB) {
-      for (BasicBlock::iterator I = BB.begin(), E = BB.end(); I != E; ++I)
-        if (isa<CallInst>(*I))
-          abort();
-
-      return false;
-    }
-  };
-}
-
-char CrashOnCalls::ID = 0;
-static RegisterPass<CrashOnCalls>
-  X("bugpoint-crashcalls",
-    "BugPoint Test Pass - Intentionally crash on CallInsts");
-
-namespace {
-  /// DeleteCalls - This pass is used to test bugpoint.  It intentionally
-  /// deletes some call instructions, "misoptimizing" the program.
-  class DeleteCalls : public BasicBlockPass {
-  public:
-    static char ID; // Pass ID, replacement for typeid
-    DeleteCalls() : BasicBlockPass(ID) {}
-  private:
-    bool runOnBasicBlock(BasicBlock &BB) {
-      for (BasicBlock::iterator I = BB.begin(), E = BB.end(); I != E; ++I)
-        if (CallInst *CI = dyn_cast<CallInst>(I)) {
-          if (!CI->use_empty())
-            CI->replaceAllUsesWith(Constant::getNullValue(CI->getType()));
-          CI->getParent()->getInstList().erase(CI);
-          break;
-        }
-      return false;
-    }
-  };
-}
- 
-char DeleteCalls::ID = 0;
-static RegisterPass<DeleteCalls>
-  Y("bugpoint-deletecalls",
-    "BugPoint Test Pass - Intentionally 'misoptimize' CallInsts");

Modified: trunk/contrib/llvm/tools/clang/INPUTS/Cocoa_h.m
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/Cocoa_h.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/Cocoa_h.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-
-#import <Cocoa/Cocoa.h>

Modified: trunk/contrib/llvm/tools/clang/INPUTS/all-std-headers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/all-std-headers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/all-std-headers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-#include <algorithm> 
-#include <bitset> 
-#include <cassert>
-#include <cctype>
-#include <cerrno>
-#include <cfloat>
-#include <ciso646>
-#include <climits>
-#include <clocale>
-#include <cmath>
-#include <complex>
-#include <csetjmp>
-#include <csignal>
-#include <cstdarg>
-#include <cstddef>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <ctime>
-#include <cwchar>
-#include <cwctype>
-#include <deque>
-#include <exception>
-#include <fstream> 
-#include <functional> 
-#include <iomanip> 
-#include <ios> 
-#include <iosfwd>
-#include <iostream>
-#include <istream>
-#include <iterator>
-#include <limits> 
-#include <list> 
-#include <locale> 
-#include <map>
-#include <memory>
-#include <new>
-#include <numeric> 
-#include <ostream>
-#include <queue> 
-#include <set> 
-#include <sstream>
-#include <stack>
-#include <stdexcept>
-#include <streambuf>
-#include <string>
-#if __has_include(<strstream>)
-#include <strstream>
-#endif
-#include <typeinfo>
-#include <utility>
-#include <valarray>
-#include <vector>
-
-#if __cplusplus >= 201103 || defined(__GXX_EXPERIMENTAL_CXX0X__)
-#include <array>
-#if __has_include(<atomic>)
-#include <atomic>
-#endif
-#include <chrono>
-#if __has_include(<codecvt>)
-#include <codecvt>
-#endif
-#include <condition_variable>
-#include <forward_list>
-#if __has_include(<future>)
-#include <future>
-#endif
-#include <initializer_list>
-#include <mutex>
-#include <random>
-#include <ratio>
-#include <regex>
-#if __has_include(<scoped_allocator>)
-#include <scoped_allocator>
-#endif
-#include <system_error>
-#include <thread>
-#include <tuple>
-#include <type_traits>
-#if __has_include(<typeindex>)
-#include <typeindex>
-#endif
-#include <unordered_map>
-#include <unordered_set>
-#endif

Modified: trunk/contrib/llvm/tools/clang/INPUTS/c99-intconst-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/c99-intconst-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/c99-intconst-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,639 +0,0 @@
-/* Test for integer constant types.  */
-
-/* Origin: Joseph Myers <jsm28 at cam.ac.uk>.  */
-/* { dg-do compile } */
-/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
-
-#include <limits.h>
-
-/* Assertion that constant C is of type T.  */
-#define ASSERT_CONST_TYPE(C, T)			\
-	do {					\
-	  typedef T type;			\
-	  typedef type **typepp;		\
-	  typedef __typeof__((C)) ctype;	\
-	  typedef ctype **ctypepp;		\
-	  typepp x = 0;				\
-	  ctypepp y = 0;			\
-	  x = y;				\
-	  y = x;				\
-	} while (0)
-
-/* (T *) if E is zero, (void *) otherwise.  */
-#define type_if_not(T, E) __typeof__(0 ? (T *)0 : (void *)(E))
-
-/* (T *) if E is nonzero, (void *) otherwise.  */
-#define type_if(T, E) type_if_not(T, !(E))
-
-/* Combine pointer types, all but one (void *).  */
-#define type_comb2(T1, T2) __typeof__(0 ? (T1)0 : (T2)0)
-#define type_comb3(T1, T2, T3) type_comb2(T1, type_comb2(T2, T3))
-#define type_comb4(T1, T2, T3, T4)				\
-	type_comb2(T1, type_comb2(T2, type_comb2(T3, T4)))
-#define type_comb6(T1, T2, T3, T4, T5, T6)				   \
-	type_comb2(T1,							   \
-		   type_comb2(T2,					   \
-			      type_comb2(T3,				   \
-					 type_comb2(T4,			   \
-						    type_comb2(T5, T6)))))
-
-/* (T1 *) if E1, otherwise (T2 *) if E2.  */
-#define first_of2p(T1, E1, T2, E2) type_comb2(type_if(T1, (E1)),	   \
-					     type_if(T2, (!(E1) && (E2))))
-/* (T1 *) if E1, otherwise (T2 *) if E2, otherwise (T3 *) if E3.  */
-#define first_of3p(T1, E1, T2, E2, T3, E3)			\
-	type_comb3(type_if(T1, (E1)),				\
-		   type_if(T2, (!(E1) && (E2))),		\
-		   type_if(T3, (!(E1) && !(E2) && (E3))))
-/* (T1 *) if E1, otherwise (T2 *) if E2, otherwise (T3 *) if E3, otherwise
-   (T4 *) if E4.  */
-#define first_of4p(T1, E1, T2, E2, T3, E3, T4, E4)			\
-	type_comb4(type_if(T1, (E1)),					\
-		   type_if(T2, (!(E1) && (E2))),			\
-		   type_if(T3, (!(E1) && !(E2) && (E3))),		\
-		   type_if(T4, (!(E1) && !(E2) && !(E3) && (E4))))
-/* (T1 *) if E1, otherwise (T2 *) if E2, otherwise (T3 *) if E3, otherwise
-   (T4 *) if E4, otherwise (T5 *) if E5, otherwise (T6 *) if E6.  */
-#define first_of6p(T1, E1, T2, E2, T3, E3, T4, E4, T5, E5, T6, E6)	    \
-	type_comb6(type_if(T1, (E1)),					    \
-		   type_if(T2, (!(E1) && (E2))),			    \
-		   type_if(T3, (!(E1) && !(E2) && (E3))),		    \
-		   type_if(T4, (!(E1) && !(E2) && !(E3) && (E4))),	    \
-		   type_if(T5, (!(E1) && !(E2) && !(E3) && !(E4) && (E5))), \
-		   type_if(T6, (!(E1) && !(E2) && !(E3)			    \
-				&& !(E4) && !(E5) && (E6))))
-
-/* Likewise, but return the original type rather than a pointer type.  */
-#define first_of2(T1, E1, T2, E2)			\
-	__typeof__(*((first_of2p(T1, (E1), T2, (E2)))0))
-#define first_of3(T1, E1, T2, E2, T3, E3)				\
-	__typeof__(*((first_of3p(T1, (E1), T2, (E2), T3, (E3)))0))
-#define first_of4(T1, E1, T2, E2, T3, E3, T4, E4)			    \
-	__typeof__(*((first_of4p(T1, (E1), T2, (E2), T3, (E3), T4, (E4)))0))
-#define first_of6(T1, E1, T2, E2, T3, E3, T4, E4, T5, E5, T6, E6)	\
-	__typeof__(*((first_of6p(T1, (E1), T2, (E2), T3, (E3),		\
-				 T4, (E4), T5, (E5), T6, (E6)))0))
-
-/* Types of constants according to the C99 rules.  */
-#define C99_UNSUF_DEC_TYPE(C)				\
-	first_of3(int, (C) <= INT_MAX,			\
-		  long int, (C) <= LONG_MAX,		\
-		  long long int, (C) <= LLONG_MAX)
-#define C99_UNSUF_OCTHEX_TYPE(C)				\
-	first_of6(int, (C) <= INT_MAX,				\
-		  unsigned int, (C) <= UINT_MAX,		\
-		  long int, (C) <= LONG_MAX,			\
-		  unsigned long int, (C) <= ULONG_MAX,		\
-		  long long int, (C) <= LLONG_MAX,		\
-		  unsigned long long int, (C) <= ULLONG_MAX)
-#define C99_SUFu_TYPE(C)					\
-	first_of3(unsigned int, (C) <= UINT_MAX,		\
-		  unsigned long int, (C) <= ULONG_MAX,		\
-		  unsigned long long int, (C) <= ULLONG_MAX)
-#define C99_SUFl_DEC_TYPE(C)				\
-	first_of2(long int, (C) <= LONG_MAX,		\
-		  long long int, (C) <= LLONG_MAX)
-#define C99_SUFl_OCTHEX_TYPE(C)					\
-	first_of4(long int, (C) <= LONG_MAX,			\
-		  unsigned long int, (C) <= ULONG_MAX,		\
-		  long long int, (C) <= LLONG_MAX,		\
-		  unsigned long long int, (C) <= ULLONG_MAX)
-#define C99_SUFul_TYPE(C)					\
-	first_of2(unsigned long int, (C) <= ULONG_MAX,		\
-		  unsigned long long int, (C) <= ULLONG_MAX)
-#define C99_SUFll_OCTHEX_TYPE(C)				\
-	first_of2(long long int, (C) <= LLONG_MAX,		\
-		  unsigned long long int, (C) <= ULLONG_MAX)
-
-/* Checks that constants have correct type.  */
-#define CHECK_UNSUF_DEC_TYPE(C) ASSERT_CONST_TYPE((C), C99_UNSUF_DEC_TYPE((C)))
-#define CHECK_UNSUF_OCTHEX_TYPE(C)				\
-	ASSERT_CONST_TYPE((C), C99_UNSUF_OCTHEX_TYPE((C)))
-#define CHECK_SUFu_TYPE(C) ASSERT_CONST_TYPE((C), C99_SUFu_TYPE((C)))
-#define CHECK_SUFl_DEC_TYPE(C) ASSERT_CONST_TYPE((C), C99_SUFl_DEC_TYPE((C)))
-#define CHECK_SUFl_OCTHEX_TYPE(C)				\
-	ASSERT_CONST_TYPE((C), C99_SUFl_OCTHEX_TYPE((C)))
-#define CHECK_SUFul_TYPE(C) ASSERT_CONST_TYPE((C), C99_SUFul_TYPE((C)))
-#define CHECK_SUFll_DEC_TYPE(C) ASSERT_CONST_TYPE((C), long long int)
-#define CHECK_SUFll_OCTHEX_TYPE(C)				\
-	ASSERT_CONST_TYPE((C), C99_SUFll_OCTHEX_TYPE((C)))
-#define CHECK_SUFull_TYPE(C) ASSERT_CONST_TYPE((C), unsigned long long int)
-
-/* Check a decimal value, with all suffixes.  */
-#define CHECK_DEC_CONST(C)			\
-	CHECK_UNSUF_DEC_TYPE(C);		\
-	CHECK_SUFu_TYPE(C##u);			\
-	CHECK_SUFu_TYPE(C##U);			\
-	CHECK_SUFl_DEC_TYPE(C##l);		\
-	CHECK_SUFl_DEC_TYPE(C##L);		\
-	CHECK_SUFul_TYPE(C##ul);		\
-	CHECK_SUFul_TYPE(C##uL);		\
-	CHECK_SUFul_TYPE(C##Ul);		\
-	CHECK_SUFul_TYPE(C##UL);		\
-	CHECK_SUFll_DEC_TYPE(C##ll);		\
-	CHECK_SUFll_DEC_TYPE(C##LL);		\
-	CHECK_SUFull_TYPE(C##ull);		\
-	CHECK_SUFull_TYPE(C##uLL);		\
-	CHECK_SUFull_TYPE(C##Ull);		\
-	CHECK_SUFull_TYPE(C##ULL);
-
-/* Check an octal or hexadecimal value, with all suffixes.  */
-#define CHECK_OCTHEX_CONST(C)			\
-	CHECK_UNSUF_OCTHEX_TYPE(C);		\
-	CHECK_SUFu_TYPE(C##u);			\
-	CHECK_SUFu_TYPE(C##U);			\
-	CHECK_SUFl_OCTHEX_TYPE(C##l);		\
-	CHECK_SUFl_OCTHEX_TYPE(C##L);		\
-	CHECK_SUFul_TYPE(C##ul);		\
-	CHECK_SUFul_TYPE(C##uL);		\
-	CHECK_SUFul_TYPE(C##Ul);		\
-	CHECK_SUFul_TYPE(C##UL);		\
-	CHECK_SUFll_OCTHEX_TYPE(C##ll);		\
-	CHECK_SUFll_OCTHEX_TYPE(C##LL);		\
-	CHECK_SUFull_TYPE(C##ull);		\
-	CHECK_SUFull_TYPE(C##uLL);		\
-	CHECK_SUFull_TYPE(C##Ull);		\
-	CHECK_SUFull_TYPE(C##ULL);
-
-#define CHECK_OCT_CONST(C) CHECK_OCTHEX_CONST(C)
-#define CHECK_HEX_CONST(C)			\
-	CHECK_OCTHEX_CONST(0x##C);		\
-	CHECK_OCTHEX_CONST(0X##C);
-
-/* True iff "long long" is at least B bits.  This presumes that (B-2)/3 is at
-   most 63.  */
-#define LLONG_AT_LEAST(B)			\
-	(LLONG_MAX >> ((B)-2)/3 >> ((B)-2)/3	\
-	 >> ((B)-2 - ((B)-2)/3 - ((B)-2)/3))
-
-#define LLONG_HAS_BITS(B) (LLONG_AT_LEAST((B)) && !LLONG_AT_LEAST((B) + 1))
-
-void
-foo (void)
-{
-  /* Decimal.  */
-  /* Check all 2^n and 2^n - 1 up to 2^71 - 1.  */
-  CHECK_DEC_CONST(1);
-  CHECK_DEC_CONST(2);
-  CHECK_DEC_CONST(3);
-  CHECK_DEC_CONST(4);
-  CHECK_DEC_CONST(7);
-  CHECK_DEC_CONST(8);
-  CHECK_DEC_CONST(15);
-  CHECK_DEC_CONST(16);
-  CHECK_DEC_CONST(31);
-  CHECK_DEC_CONST(32);
-  CHECK_DEC_CONST(63);
-  CHECK_DEC_CONST(64);
-  CHECK_DEC_CONST(127);
-  CHECK_DEC_CONST(128);
-  CHECK_DEC_CONST(255);
-  CHECK_DEC_CONST(256);
-  CHECK_DEC_CONST(511);
-  CHECK_DEC_CONST(512);
-  CHECK_DEC_CONST(1023);
-  CHECK_DEC_CONST(1024);
-  CHECK_DEC_CONST(2047);
-  CHECK_DEC_CONST(2048);
-  CHECK_DEC_CONST(4095);
-  CHECK_DEC_CONST(4096);
-  CHECK_DEC_CONST(8191);
-  CHECK_DEC_CONST(8192);
-  CHECK_DEC_CONST(16383);
-  CHECK_DEC_CONST(16384);
-  CHECK_DEC_CONST(32767);
-  CHECK_DEC_CONST(32768);
-  CHECK_DEC_CONST(65535);
-  CHECK_DEC_CONST(65536);
-  CHECK_DEC_CONST(131071);
-  CHECK_DEC_CONST(131072);
-  CHECK_DEC_CONST(262143);
-  CHECK_DEC_CONST(262144);
-  CHECK_DEC_CONST(524287);
-  CHECK_DEC_CONST(524288);
-  CHECK_DEC_CONST(1048575);
-  CHECK_DEC_CONST(1048576);
-  CHECK_DEC_CONST(2097151);
-  CHECK_DEC_CONST(2097152);
-  CHECK_DEC_CONST(4194303);
-  CHECK_DEC_CONST(4194304);
-  CHECK_DEC_CONST(8388607);
-  CHECK_DEC_CONST(8388608);
-  CHECK_DEC_CONST(16777215);
-  CHECK_DEC_CONST(16777216);
-  CHECK_DEC_CONST(33554431);
-  CHECK_DEC_CONST(33554432);
-  CHECK_DEC_CONST(67108863);
-  CHECK_DEC_CONST(67108864);
-  CHECK_DEC_CONST(134217727);
-  CHECK_DEC_CONST(134217728);
-  CHECK_DEC_CONST(268435455);
-  CHECK_DEC_CONST(268435456);
-  CHECK_DEC_CONST(536870911);
-  CHECK_DEC_CONST(536870912);
-  CHECK_DEC_CONST(1073741823);
-  CHECK_DEC_CONST(1073741824);
-  CHECK_DEC_CONST(2147483647);
-  CHECK_DEC_CONST(2147483648);
-  CHECK_DEC_CONST(4294967295);
-  CHECK_DEC_CONST(4294967296);
-  CHECK_DEC_CONST(8589934591);
-  CHECK_DEC_CONST(8589934592);
-  CHECK_DEC_CONST(17179869183);
-  CHECK_DEC_CONST(17179869184);
-  CHECK_DEC_CONST(34359738367);
-  CHECK_DEC_CONST(34359738368);
-  CHECK_DEC_CONST(68719476735);
-  CHECK_DEC_CONST(68719476736);
-  CHECK_DEC_CONST(137438953471);
-  CHECK_DEC_CONST(137438953472);
-  CHECK_DEC_CONST(274877906943);
-  CHECK_DEC_CONST(274877906944);
-  CHECK_DEC_CONST(549755813887);
-  CHECK_DEC_CONST(549755813888);
-  CHECK_DEC_CONST(1099511627775);
-  CHECK_DEC_CONST(1099511627776);
-  CHECK_DEC_CONST(2199023255551);
-  CHECK_DEC_CONST(2199023255552);
-  CHECK_DEC_CONST(4398046511103);
-  CHECK_DEC_CONST(4398046511104);
-  CHECK_DEC_CONST(8796093022207);
-  CHECK_DEC_CONST(8796093022208);
-  CHECK_DEC_CONST(17592186044415);
-  CHECK_DEC_CONST(17592186044416);
-  CHECK_DEC_CONST(35184372088831);
-  CHECK_DEC_CONST(35184372088832);
-  CHECK_DEC_CONST(70368744177663);
-  CHECK_DEC_CONST(70368744177664);
-  CHECK_DEC_CONST(140737488355327);
-  CHECK_DEC_CONST(140737488355328);
-  CHECK_DEC_CONST(281474976710655);
-  CHECK_DEC_CONST(281474976710656);
-  CHECK_DEC_CONST(562949953421311);
-  CHECK_DEC_CONST(562949953421312);
-  CHECK_DEC_CONST(1125899906842623);
-  CHECK_DEC_CONST(1125899906842624);
-  CHECK_DEC_CONST(2251799813685247);
-  CHECK_DEC_CONST(2251799813685248);
-  CHECK_DEC_CONST(4503599627370495);
-  CHECK_DEC_CONST(4503599627370496);
-  CHECK_DEC_CONST(9007199254740991);
-  CHECK_DEC_CONST(9007199254740992);
-  CHECK_DEC_CONST(18014398509481983);
-  CHECK_DEC_CONST(18014398509481984);
-  CHECK_DEC_CONST(36028797018963967);
-  CHECK_DEC_CONST(36028797018963968);
-  CHECK_DEC_CONST(72057594037927935);
-  CHECK_DEC_CONST(72057594037927936);
-  CHECK_DEC_CONST(144115188075855871);
-  CHECK_DEC_CONST(144115188075855872);
-  CHECK_DEC_CONST(288230376151711743);
-  CHECK_DEC_CONST(288230376151711744);
-  CHECK_DEC_CONST(576460752303423487);
-  CHECK_DEC_CONST(576460752303423488);
-  CHECK_DEC_CONST(1152921504606846975);
-  CHECK_DEC_CONST(1152921504606846976);
-  CHECK_DEC_CONST(2305843009213693951);
-  CHECK_DEC_CONST(2305843009213693952);
-  CHECK_DEC_CONST(4611686018427387903);
-  CHECK_DEC_CONST(4611686018427387904);
-  CHECK_DEC_CONST(9223372036854775807);
-#if LLONG_AT_LEAST(65)
-  CHECK_DEC_CONST(9223372036854775808);
-  CHECK_DEC_CONST(18446744073709551615);
-#endif
-#if LLONG_AT_LEAST(66)
-  CHECK_DEC_CONST(18446744073709551616);
-  CHECK_DEC_CONST(36893488147419103231);
-#endif
-#if LLONG_AT_LEAST(67)
-  CHECK_DEC_CONST(36893488147419103232);
-  CHECK_DEC_CONST(73786976294838206463);
-#endif
-#if LLONG_AT_LEAST(68)
-  CHECK_DEC_CONST(73786976294838206464);
-  CHECK_DEC_CONST(147573952589676412927);
-#endif
-#if LLONG_AT_LEAST(69)
-  CHECK_DEC_CONST(147573952589676412928);
-  CHECK_DEC_CONST(295147905179352825855);
-#endif
-#if LLONG_AT_LEAST(70)
-  CHECK_DEC_CONST(295147905179352825856);
-  CHECK_DEC_CONST(590295810358705651711);
-#endif
-#if LLONG_AT_LEAST(71)
-  CHECK_DEC_CONST(590295810358705651712);
-  CHECK_DEC_CONST(1180591620717411303423);
-#endif
-#if LLONG_AT_LEAST(72)
-  CHECK_DEC_CONST(1180591620717411303424);
-  CHECK_DEC_CONST(2361183241434822606847);
-#endif
-  /* Octal and hexadecimal.  */
-  /* Check all 2^n and 2^n - 1 up to 2^72 - 1.  */
-  CHECK_OCT_CONST(0);
-  CHECK_HEX_CONST(0);
-  CHECK_OCT_CONST(01);
-  CHECK_HEX_CONST(1);
-  CHECK_OCT_CONST(02);
-  CHECK_HEX_CONST(2);
-  CHECK_OCT_CONST(03);
-  CHECK_HEX_CONST(3);
-  CHECK_OCT_CONST(04);
-  CHECK_HEX_CONST(4);
-  CHECK_OCT_CONST(07);
-  CHECK_HEX_CONST(7);
-  CHECK_OCT_CONST(010);
-  CHECK_HEX_CONST(8);
-  CHECK_OCT_CONST(017);
-  CHECK_HEX_CONST(f);
-  CHECK_OCT_CONST(020);
-  CHECK_HEX_CONST(10);
-  CHECK_OCT_CONST(037);
-  CHECK_HEX_CONST(1f);
-  CHECK_OCT_CONST(040);
-  CHECK_HEX_CONST(20);
-  CHECK_OCT_CONST(077);
-  CHECK_HEX_CONST(3f);
-  CHECK_OCT_CONST(0100);
-  CHECK_HEX_CONST(40);
-  CHECK_OCT_CONST(0177);
-  CHECK_HEX_CONST(7f);
-  CHECK_OCT_CONST(0200);
-  CHECK_HEX_CONST(80);
-  CHECK_OCT_CONST(0377);
-  CHECK_HEX_CONST(ff);
-  CHECK_OCT_CONST(0400);
-  CHECK_HEX_CONST(100);
-  CHECK_OCT_CONST(0777);
-  CHECK_HEX_CONST(1ff);
-  CHECK_OCT_CONST(01000);
-  CHECK_HEX_CONST(200);
-  CHECK_OCT_CONST(01777);
-  CHECK_HEX_CONST(3ff);
-  CHECK_OCT_CONST(02000);
-  CHECK_HEX_CONST(400);
-  CHECK_OCT_CONST(03777);
-  CHECK_HEX_CONST(7ff);
-  CHECK_OCT_CONST(04000);
-  CHECK_HEX_CONST(800);
-  CHECK_OCT_CONST(07777);
-  CHECK_HEX_CONST(fff);
-  CHECK_OCT_CONST(010000);
-  CHECK_HEX_CONST(1000);
-  CHECK_OCT_CONST(017777);
-  CHECK_HEX_CONST(1fff);
-  CHECK_OCT_CONST(020000);
-  CHECK_HEX_CONST(2000);
-  CHECK_OCT_CONST(037777);
-  CHECK_HEX_CONST(3fff);
-  CHECK_OCT_CONST(040000);
-  CHECK_HEX_CONST(4000);
-  CHECK_OCT_CONST(077777);
-  CHECK_HEX_CONST(7fff);
-  CHECK_OCT_CONST(0100000);
-  CHECK_HEX_CONST(8000);
-  CHECK_OCT_CONST(0177777);
-  CHECK_HEX_CONST(ffff);
-  CHECK_OCT_CONST(0200000);
-  CHECK_HEX_CONST(10000);
-  CHECK_OCT_CONST(0377777);
-  CHECK_HEX_CONST(1ffff);
-  CHECK_OCT_CONST(0400000);
-  CHECK_HEX_CONST(20000);
-  CHECK_OCT_CONST(0777777);
-  CHECK_HEX_CONST(3ffff);
-  CHECK_OCT_CONST(01000000);
-  CHECK_HEX_CONST(40000);
-  CHECK_OCT_CONST(01777777);
-  CHECK_HEX_CONST(7ffff);
-  CHECK_OCT_CONST(02000000);
-  CHECK_HEX_CONST(80000);
-  CHECK_OCT_CONST(03777777);
-  CHECK_HEX_CONST(fffff);
-  CHECK_OCT_CONST(04000000);
-  CHECK_HEX_CONST(100000);
-  CHECK_OCT_CONST(07777777);
-  CHECK_HEX_CONST(1fffff);
-  CHECK_OCT_CONST(010000000);
-  CHECK_HEX_CONST(200000);
-  CHECK_OCT_CONST(017777777);
-  CHECK_HEX_CONST(3fffff);
-  CHECK_OCT_CONST(020000000);
-  CHECK_HEX_CONST(400000);
-  CHECK_OCT_CONST(037777777);
-  CHECK_HEX_CONST(7fffff);
-  CHECK_OCT_CONST(040000000);
-  CHECK_HEX_CONST(800000);
-  CHECK_OCT_CONST(077777777);
-  CHECK_HEX_CONST(ffffff);
-  CHECK_OCT_CONST(0100000000);
-  CHECK_HEX_CONST(1000000);
-  CHECK_OCT_CONST(0177777777);
-  CHECK_HEX_CONST(1ffffff);
-  CHECK_OCT_CONST(0200000000);
-  CHECK_HEX_CONST(2000000);
-  CHECK_OCT_CONST(0377777777);
-  CHECK_HEX_CONST(3ffffff);
-  CHECK_OCT_CONST(0400000000);
-  CHECK_HEX_CONST(4000000);
-  CHECK_OCT_CONST(0777777777);
-  CHECK_HEX_CONST(7ffffff);
-  CHECK_OCT_CONST(01000000000);
-  CHECK_HEX_CONST(8000000);
-  CHECK_OCT_CONST(01777777777);
-  CHECK_HEX_CONST(fffffff);
-  CHECK_OCT_CONST(02000000000);
-  CHECK_HEX_CONST(10000000);
-  CHECK_OCT_CONST(03777777777);
-  CHECK_HEX_CONST(1fffffff);
-  CHECK_OCT_CONST(04000000000);
-  CHECK_HEX_CONST(20000000);
-  CHECK_OCT_CONST(07777777777);
-  CHECK_HEX_CONST(3fffffff);
-  CHECK_OCT_CONST(010000000000);
-  CHECK_HEX_CONST(40000000);
-  CHECK_OCT_CONST(017777777777);
-  CHECK_HEX_CONST(7fffffff);
-  CHECK_OCT_CONST(020000000000);
-  CHECK_HEX_CONST(80000000);
-  CHECK_OCT_CONST(037777777777);
-  CHECK_HEX_CONST(ffffffff);
-  CHECK_OCT_CONST(040000000000);
-  CHECK_HEX_CONST(100000000);
-  CHECK_OCT_CONST(077777777777);
-  CHECK_HEX_CONST(1ffffffff);
-  CHECK_OCT_CONST(0100000000000);
-  CHECK_HEX_CONST(200000000);
-  CHECK_OCT_CONST(0177777777777);
-  CHECK_HEX_CONST(3ffffffff);
-  CHECK_OCT_CONST(0200000000000);
-  CHECK_HEX_CONST(400000000);
-  CHECK_OCT_CONST(0377777777777);
-  CHECK_HEX_CONST(7ffffffff);
-  CHECK_OCT_CONST(0400000000000);
-  CHECK_HEX_CONST(800000000);
-  CHECK_OCT_CONST(0777777777777);
-  CHECK_HEX_CONST(fffffffff);
-  CHECK_OCT_CONST(01000000000000);
-  CHECK_HEX_CONST(1000000000);
-  CHECK_OCT_CONST(01777777777777);
-  CHECK_HEX_CONST(1fffffffff);
-  CHECK_OCT_CONST(02000000000000);
-  CHECK_HEX_CONST(2000000000);
-  CHECK_OCT_CONST(03777777777777);
-  CHECK_HEX_CONST(3fffffffff);
-  CHECK_OCT_CONST(04000000000000);
-  CHECK_HEX_CONST(4000000000);
-  CHECK_OCT_CONST(07777777777777);
-  CHECK_HEX_CONST(7fffffffff);
-  CHECK_OCT_CONST(010000000000000);
-  CHECK_HEX_CONST(8000000000);
-  CHECK_OCT_CONST(017777777777777);
-  CHECK_HEX_CONST(ffffffffff);
-  CHECK_OCT_CONST(020000000000000);
-  CHECK_HEX_CONST(10000000000);
-  CHECK_OCT_CONST(037777777777777);
-  CHECK_HEX_CONST(1ffffffffff);
-  CHECK_OCT_CONST(040000000000000);
-  CHECK_HEX_CONST(20000000000);
-  CHECK_OCT_CONST(077777777777777);
-  CHECK_HEX_CONST(3ffffffffff);
-  CHECK_OCT_CONST(0100000000000000);
-  CHECK_HEX_CONST(40000000000);
-  CHECK_OCT_CONST(0177777777777777);
-  CHECK_HEX_CONST(7ffffffffff);
-  CHECK_OCT_CONST(0200000000000000);
-  CHECK_HEX_CONST(80000000000);
-  CHECK_OCT_CONST(0377777777777777);
-  CHECK_HEX_CONST(fffffffffff);
-  CHECK_OCT_CONST(0400000000000000);
-  CHECK_HEX_CONST(100000000000);
-  CHECK_OCT_CONST(0777777777777777);
-  CHECK_HEX_CONST(1fffffffffff);
-  CHECK_OCT_CONST(01000000000000000);
-  CHECK_HEX_CONST(200000000000);
-  CHECK_OCT_CONST(01777777777777777);
-  CHECK_HEX_CONST(3fffffffffff);
-  CHECK_OCT_CONST(02000000000000000);
-  CHECK_HEX_CONST(400000000000);
-  CHECK_OCT_CONST(03777777777777777);
-  CHECK_HEX_CONST(7fffffffffff);
-  CHECK_OCT_CONST(04000000000000000);
-  CHECK_HEX_CONST(800000000000);
-  CHECK_OCT_CONST(07777777777777777);
-  CHECK_HEX_CONST(ffffffffffff);
-  CHECK_OCT_CONST(010000000000000000);
-  CHECK_HEX_CONST(1000000000000);
-  CHECK_OCT_CONST(017777777777777777);
-  CHECK_HEX_CONST(1ffffffffffff);
-  CHECK_OCT_CONST(020000000000000000);
-  CHECK_HEX_CONST(2000000000000);
-  CHECK_OCT_CONST(037777777777777777);
-  CHECK_HEX_CONST(3ffffffffffff);
-  CHECK_OCT_CONST(040000000000000000);
-  CHECK_HEX_CONST(4000000000000);
-  CHECK_OCT_CONST(077777777777777777);
-  CHECK_HEX_CONST(7ffffffffffff);
-  CHECK_OCT_CONST(0100000000000000000);
-  CHECK_HEX_CONST(8000000000000);
-  CHECK_OCT_CONST(0177777777777777777);
-  CHECK_HEX_CONST(fffffffffffff);
-  CHECK_OCT_CONST(0200000000000000000);
-  CHECK_HEX_CONST(10000000000000);
-  CHECK_OCT_CONST(0377777777777777777);
-  CHECK_HEX_CONST(1fffffffffffff);
-  CHECK_OCT_CONST(0400000000000000000);
-  CHECK_HEX_CONST(20000000000000);
-  CHECK_OCT_CONST(0777777777777777777);
-  CHECK_HEX_CONST(3fffffffffffff);
-  CHECK_OCT_CONST(01000000000000000000);
-  CHECK_HEX_CONST(40000000000000);
-  CHECK_OCT_CONST(01777777777777777777);
-  CHECK_HEX_CONST(7fffffffffffff);
-  CHECK_OCT_CONST(02000000000000000000);
-  CHECK_HEX_CONST(80000000000000);
-  CHECK_OCT_CONST(03777777777777777777);
-  CHECK_HEX_CONST(ffffffffffffff);
-  CHECK_OCT_CONST(04000000000000000000);
-  CHECK_HEX_CONST(100000000000000);
-  CHECK_OCT_CONST(07777777777777777777);
-  CHECK_HEX_CONST(1ffffffffffffff);
-  CHECK_OCT_CONST(010000000000000000000);
-  CHECK_HEX_CONST(200000000000000);
-  CHECK_OCT_CONST(017777777777777777777);
-  CHECK_HEX_CONST(3ffffffffffffff);
-  CHECK_OCT_CONST(020000000000000000000);
-  CHECK_HEX_CONST(400000000000000);
-  CHECK_OCT_CONST(037777777777777777777);
-  CHECK_HEX_CONST(7ffffffffffffff);
-  CHECK_OCT_CONST(040000000000000000000);
-  CHECK_HEX_CONST(800000000000000);
-  CHECK_OCT_CONST(077777777777777777777);
-  CHECK_HEX_CONST(fffffffffffffff);
-  CHECK_OCT_CONST(0100000000000000000000);
-  CHECK_HEX_CONST(1000000000000000);
-  CHECK_OCT_CONST(0177777777777777777777);
-  CHECK_HEX_CONST(1fffffffffffffff);
-  CHECK_OCT_CONST(0200000000000000000000);
-  CHECK_HEX_CONST(2000000000000000);
-  CHECK_OCT_CONST(0377777777777777777777);
-  CHECK_HEX_CONST(3fffffffffffffff);
-  CHECK_OCT_CONST(0400000000000000000000);
-  CHECK_HEX_CONST(4000000000000000);
-  CHECK_OCT_CONST(0777777777777777777777);
-  CHECK_HEX_CONST(7fffffffffffffff);
-  CHECK_OCT_CONST(01000000000000000000000);
-  CHECK_HEX_CONST(8000000000000000);
-  CHECK_OCT_CONST(01777777777777777777777);
-  CHECK_HEX_CONST(ffffffffffffffff);
-#if LLONG_AT_LEAST(65)
-  CHECK_OCT_CONST(02000000000000000000000);
-  CHECK_HEX_CONST(10000000000000000);
-  CHECK_OCT_CONST(03777777777777777777777);
-  CHECK_HEX_CONST(1ffffffffffffffff);
-#endif
-#if LLONG_AT_LEAST(66)
-  CHECK_OCT_CONST(04000000000000000000000);
-  CHECK_HEX_CONST(20000000000000000);
-  CHECK_OCT_CONST(07777777777777777777777);
-  CHECK_HEX_CONST(3ffffffffffffffff);
-#endif
-#if LLONG_AT_LEAST(67)
-  CHECK_OCT_CONST(010000000000000000000000);
-  CHECK_HEX_CONST(40000000000000000);
-  CHECK_OCT_CONST(017777777777777777777777);
-  CHECK_HEX_CONST(7ffffffffffffffff);
-#endif
-#if LLONG_AT_LEAST(68)
-  CHECK_OCT_CONST(020000000000000000000000);
-  CHECK_HEX_CONST(80000000000000000);
-  CHECK_OCT_CONST(037777777777777777777777);
-  CHECK_HEX_CONST(fffffffffffffffff);
-#endif
-#if LLONG_AT_LEAST(69)
-  CHECK_OCT_CONST(040000000000000000000000);
-  CHECK_HEX_CONST(100000000000000000);
-  CHECK_OCT_CONST(077777777777777777777777);
-  CHECK_HEX_CONST(1fffffffffffffffff);
-#endif
-#if LLONG_AT_LEAST(70)
-  CHECK_OCT_CONST(0100000000000000000000000);
-  CHECK_HEX_CONST(200000000000000000);
-  CHECK_OCT_CONST(0177777777777777777777777);
-  CHECK_HEX_CONST(3fffffffffffffffff);
-#endif
-#if LLONG_AT_LEAST(71)
-  CHECK_OCT_CONST(0200000000000000000000000);
-  CHECK_HEX_CONST(400000000000000000);
-  CHECK_OCT_CONST(0377777777777777777777777);
-  CHECK_HEX_CONST(7fffffffffffffffff);
-#endif
-#if LLONG_AT_LEAST(72)
-  CHECK_OCT_CONST(0400000000000000000000000);
-  CHECK_HEX_CONST(800000000000000000);
-  CHECK_OCT_CONST(0777777777777777777777777);
-  CHECK_HEX_CONST(ffffffffffffffffff);
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/INPUTS/carbon_h.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/carbon_h.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/carbon_h.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-
-#include <Carbon/Carbon.h>
-
-//#import<vecLib/vecLib.h>

Modified: trunk/contrib/llvm/tools/clang/INPUTS/cfg-big-switch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/cfg-big-switch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/cfg-big-switch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-#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;
-}

Modified: trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#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;
-}

Modified: trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#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;
-}

Modified: trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/cfg-long-chain3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-#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;
-}

Modified: trunk/contrib/llvm/tools/clang/INPUTS/cfg-nested-switches.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/cfg-nested-switches.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/cfg-nested-switches.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-#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: trunk/contrib/llvm/tools/clang/INPUTS/cfg-nested-var-scopes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/cfg-nested-var-scopes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/cfg-nested-var-scopes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// Hammer the CFG with large numbers of overlapping variable scopes, which
-// implicit destructors triggered at each edge.
-
-#define EXPAND_BASIC_STRUCT(i) struct X##i { X##i(int); ~X##i(); };
-#define EXPAND_NORET_STRUCT(i) struct X##i { X##i(int); ~X##i() __attribute__((noreturn)); };
-EXPAND_BASIC_STRUCT(0000); EXPAND_NORET_STRUCT(0001);
-EXPAND_BASIC_STRUCT(0010); EXPAND_BASIC_STRUCT(0011);
-EXPAND_BASIC_STRUCT(0100); EXPAND_NORET_STRUCT(0101);
-EXPAND_NORET_STRUCT(0110); EXPAND_BASIC_STRUCT(0111);
-EXPAND_BASIC_STRUCT(1000); EXPAND_NORET_STRUCT(1001);
-EXPAND_BASIC_STRUCT(1010); EXPAND_BASIC_STRUCT(1011);
-EXPAND_NORET_STRUCT(1100); EXPAND_NORET_STRUCT(1101);
-EXPAND_BASIC_STRUCT(1110); EXPAND_BASIC_STRUCT(1111);
-
-#define EXPAND_2_VARS(c, i, x)  const X##i var_##c##_##i##0(x), &var_##c##_##i##1 = X##i(x)
-#define EXPAND_4_VARS(c, i, x)  EXPAND_2_VARS(c, i##0, x);  EXPAND_2_VARS(c, i##1, x)
-#define EXPAND_8_VARS(c, i, x)  EXPAND_4_VARS(c, i##0, x);  EXPAND_4_VARS(c, i##1, x)
-#define EXPAND_16_VARS(c, i, x) EXPAND_8_VARS(c, i##0, x);  EXPAND_8_VARS(c, i##1, x)
-#define EXPAND_32_VARS(c, x)    EXPAND_16_VARS(c, 0, x);    EXPAND_16_VARS(c, 1, x)
-
-#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_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)
-
-unsigned cfg_nested_vars(int x) {
-  int y = 0;
-  while (x > 0) {
-    EXPAND_32_VARS(a, x);
-    switch (x) {
-#define INNER_CASE(i, x, y) \
-          case i: { \
-            int case_var = 3*x + i; \
-            EXPAND_32_VARS(c, case_var); \
-            y += case_var - 1; \
-            break; \
-          }
-#define OUTER_CASE(i, x, y) \
-      case i: { \
-        int case_var = y >> 8; \
-        EXPAND_32_VARS(b, y); \
-        switch (case_var) { \
-          EXPAND_32_INNER_CASES(0, x, y); \
-        } \
-        break; \
-      }
-EXPAND_32_OUTER_CASES(0, x, y);
-    }
-    --x;
-  }
-  return y;
-}

Modified: trunk/contrib/llvm/tools/clang/INPUTS/iostream.cc
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/iostream.cc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/iostream.cc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// clang -I/usr/include/c++/4.0.0 -I/usr/include/c++/4.0.0/powerpc-apple-darwin8 -I/usr/include/c++/4.0.0/backward INPUTS/iostream.cc -Eonly
-
-#include <iostream>
-
-#include <stdint.h>

Modified: trunk/contrib/llvm/tools/clang/INPUTS/macro_pounder_fn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/macro_pounder_fn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/macro_pounder_fn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-
-// This pounds on macro expansion for performance reasons.  This is currently
-// heavily constrained by darwin's malloc.
-
-// Function-like macros.
-#define A0(A, B) A B
-#define A1(A, B) A0(A,B) A0(A,B) A0(A,B) A0(A,B) A0(A,B) A0(A,B)
-#define A2(A, B) A1(A,B) A1(A,B) A1(A,B) A1(A,B) A1(A,B) A1(A,B)
-#define A3(A, B) A2(A,B) A2(A,B) A2(A,B) A2(A,B) A2(A,B) A2(A,B)
-#define A4(A, B) A3(A,B) A3(A,B) A3(A,B) A3(A,B) A3(A,B) A3(A,B)
-#define A5(A, B) A4(A,B) A4(A,B) A4(A,B) A4(A,B) A4(A,B) A4(A,B)
-#define A6(A, B) A5(A,B) A5(A,B) A5(A,B) A5(A,B) A5(A,B) A5(A,B)
-#define A7(A, B) A6(A,B) A6(A,B) A6(A,B) A6(A,B) A6(A,B) A6(A,B)
-#define A8(A, B) A7(A,B) A7(A,B) A7(A,B) A7(A,B) A7(A,B) A7(A,B)
-
-A8(a, b)
-

Modified: trunk/contrib/llvm/tools/clang/INPUTS/macro_pounder_obj.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/macro_pounder_obj.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/macro_pounder_obj.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-
-// This pounds on macro expansion for performance reasons.  This is currently
-// heavily constrained by darwin's malloc.
-
-// Object-like expansions
-#define A0 a b
-#define A1 A0 A0 A0 A0 A0 A0
-#define A2 A1 A1 A1 A1 A1 A1
-#define A3 A2 A2 A2 A2 A2 A2
-#define A4 A3 A3 A3 A3 A3 A3
-#define A5 A4 A4 A4 A4 A4 A4
-#define A6 A5 A5 A5 A5 A5 A5
-#define A7 A6 A6 A6 A6 A6 A6
-#define A8 A7 A7 A7 A7 A7 A7
-
-A8

Modified: trunk/contrib/llvm/tools/clang/INPUTS/stpcpy-test.c
===================================================================
--- trunk/contrib/llvm/tools/clang/INPUTS/stpcpy-test.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INPUTS/stpcpy-test.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-#define __extension__
-
-#define __stpcpy(dest, src) (__extension__ (__builtin_constant_p (src) ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8 ? __stpcpy_small (dest, __stpcpy_args (src), strlen (src) + 1) : ((char *) __mempcpy (dest, src, strlen (src) + 1) - 1)) : __stpcpy (dest, src)))
-#define stpcpy(dest, src) __stpcpy (dest, src)
-#define __stpcpy_args(src) __extension__ __STRING2_SMALL_GET16 (src, 0), __extension__ __STRING2_SMALL_GET16 (src, 4), __extension__ __STRING2_SMALL_GET32 (src, 0), __extension__ __STRING2_SMALL_GET32 (src, 4)
-
-#define __mempcpy(dest, src, n) (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) && __string2_1bptr_p (src) && n <= 8 ? __mempcpy_small (dest, __mempcpy_args (src), n) : __mempcpy (dest, src, n)))
-#define mempcpy(dest, src, n) __mempcpy (dest, src, n)
-#define __mempcpy_args(src) ((char *) (src))[0], ((char *) (src))[2], ((char *) (src))[4], ((char *) (src))[6], __extension__ __STRING2_SMALL_GET16 (src, 0), __extension__ __STRING2_SMALL_GET16 (src, 4), __extension__ __STRING2_SMALL_GET32 (src, 0), __extension__ __STRING2_SMALL_GET32 (src, 4)
-
-#define __STRING2_SMALL_GET16(src, idx) (((__const unsigned char *) (__const char *) (src))[idx + 1] << 8 | ((__const unsigned char *) (__const char *) (src))[idx])
-
-#define __STRING2_SMALL_GET32(src, idx) (((((__const unsigned char *) (__const char *) (src))[idx + 3] << 8 | ((__const unsigned char *) (__const char *) (src))[idx + 2]) << 8 | ((__const unsigned char *) (__const char *) (src))[idx + 1]) << 8 | ((__const unsigned char *) (__const char *) (src))[idx])
-
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
-stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)

Modified: trunk/contrib/llvm/tools/clang/INSTALL.txt
===================================================================
--- trunk/contrib/llvm/tools/clang/INSTALL.txt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/INSTALL.txt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-//===----------------------------------------------------------------------===//
-// Clang Installation Instructions
-//===----------------------------------------------------------------------===//
-
-These instructions describe how to build and install Clang.
-
-//===----------------------------------------------------------------------===//
-// Step 1: Organization
-//===----------------------------------------------------------------------===//
-
-Clang is designed to be built as part of an LLVM build. Assuming that the LLVM
-source code is located at $LLVM_SRC_ROOT, then the clang source code should be
-installed as:
-
-  $LLVM_SRC_ROOT/tools/clang
-
-The directory is not required to be called clang, but doing so will allow the
-LLVM build system to automatically recognize it and build it along with LLVM.
-
-//===----------------------------------------------------------------------===//
-// Step 2: Configure and Build LLVM
-//===----------------------------------------------------------------------===//
-
-Configure and build your copy of LLVM (see $LLVM_SRC_ROOT/GettingStarted.html
-for more information).
-
-Assuming you installed clang at $LLVM_SRC_ROOT/tools/clang then Clang will
-automatically be built with LLVM. Otherwise, run 'make' in the Clang source
-directory to build Clang.
-
-//===----------------------------------------------------------------------===//
-// Step 3: (Optional) Verify Your Build
-//===----------------------------------------------------------------------===//
-
-It is a good idea to run the Clang tests to make sure your build works
-correctly. From inside the Clang build directory, run 'make test' to run the
-tests.
-
-//===----------------------------------------------------------------------===//
-// Step 4: Install Clang
-//===----------------------------------------------------------------------===//
-
-From inside the Clang build directory, run 'make install' to install the Clang
-compiler and header files into the prefix directory selected when LLVM was
-configured.
-
-The Clang compiler is available as 'clang' and 'clang++'. It supports a gcc like command line
-interface. See the man page for clang (installed into $prefix/share/man/man1)
-for more information.

Modified: trunk/contrib/llvm/tools/clang/ModuleInfo.txt
===================================================================
--- trunk/contrib/llvm/tools/clang/ModuleInfo.txt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/ModuleInfo.txt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-# This file provides information for llvm-top
-DepModule: llvm 
-ConfigCmd:
-ConfigTest:
-BuildCmd:

Modified: trunk/contrib/llvm/tools/clang/NOTES.txt
===================================================================
--- trunk/contrib/llvm/tools/clang/NOTES.txt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/NOTES.txt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-//===---------------------------------------------------------------------===//
-// Random Notes
-//===---------------------------------------------------------------------===//
-
-//===---------------------------------------------------------------------===//
-
-To time GCC preprocessing speed without output, use:
-   "time gcc -MM file"
-This is similar to -Eonly.
-
-//===---------------------------------------------------------------------===//
-
-Creating and using a PTH file for performance measurement (use a release build).
-
-$ clang -ccc-pch-is-pth -x objective-c-header INPUTS/Cocoa_h.m -o /tmp/tokencache
-$ clang -cc1 -token-cache /tmp/tokencache INPUTS/Cocoa_h.m
-
-//===---------------------------------------------------------------------===//
-
-  C++ Template Instantiation benchmark:
-     http://users.rcn.com/abrahams/instantiation_speed/index.html
-
-//===---------------------------------------------------------------------===//
-
-TODO: File Manager Speedup:
-
- We currently do a lot of stat'ing for files that don't exist, particularly
- when lots of -I paths exist (e.g. see the <iostream> example, check for
- failures in stat in FileManager::getFile).  It would be far better to make
- the following changes:
-   1. FileEntry contains a sys::Path instead of a std::string for Name.
-   2. sys::Path contains timestamp and size, lazily computed.  Eliminate from
-      FileEntry.
-   3. File UIDs are created on request, not when files are opened.
- These changes make it possible to efficiently have FileEntry objects for
- files that exist on the file system, but have not been used yet.
- 
- Once this is done:
-   1. DirectoryEntry gets a boolean value "has read entries".  When false, not
-      all entries in the directory are in the file mgr, when true, they are.
-   2. Instead of stat'ing the file in FileManager::getFile, check to see if 
-      the dir has been read.  If so, fail immediately, if not, read the dir,
-      then retry.
-   3. Reading the dir uses the getdirentries syscall, creating a FileEntry
-      for all files found.
-
-//===---------------------------------------------------------------------===//
-// Specifying targets:  -triple and -arch
-//===---------------------------------------------------------------------===//
-
-The clang supports "-triple" and "-arch" options. At most one -triple and one
--arch option may be specified.  Both are optional.
-
-The "selection of target" behavior is defined as follows:
-
-(1) If the user does not specify -triple, we default to the host triple.
-(2) If the user specifies a -arch, that overrides the arch in the host or
-    specified triple. 
-
-//===---------------------------------------------------------------------===//
-
-
-verifyInputConstraint and verifyOutputConstraint should not return bool. 
-
-Instead we should return something like:
-
-enum VerifyConstraintResult {
-  Valid,
-  
-  // Output only
-  OutputOperandConstraintLacksEqualsCharacter,
-  MatchingConstraintNotValidInOutputOperand,
-
-  // Input only
-  InputOperandConstraintContainsEqualsCharacter,
-  MatchingConstraintReferencesInvalidOperandNumber,
-  
-  // Both
-  PercentConstraintUsedWithLastOperand
-};
-
-//===---------------------------------------------------------------------===//
-
-Blocks should not capture variables that are only used in dead code.
-
-The rule that we came up with is that blocks are required to capture
-variables if they're referenced in evaluated code, even if that code
-doesn't actually rely on the value of the captured variable.
-
-For example, this requires a capture:
-  (void) var;
-But this does not:
-  if (false) puts(var);
-
-Summary of <rdar://problem/9851835>: if we implement this, we should
-warn about non-POD variables that are referenced but not captured, but
-only if the non-reachability is not due to macro or template
-metaprogramming.
-
-//===---------------------------------------------------------------------===//
-
-We can still apply a modified version of the constructor/destructor
-delegation optimization in cases of virtual inheritance where:
-  - there is no function-try-block,
-  - the constructor signature is not variadic, and
-  - the parameter variables can safely be copied and repassed
-    to the base constructor because either
-    - they have not had their addresses taken by the vbase initializers or
-    - they were passed indirectly.
-
-//===---------------------------------------------------------------------===//

Modified: trunk/contrib/llvm/tools/clang/bindings/python/clang/__init__.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/clang/__init__.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/clang/__init__.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-#===- __init__.py - Clang Python Bindings --------------------*- python -*--===#
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-#===------------------------------------------------------------------------===#
-
-r"""
-Clang Library Bindings
-======================
-
-This package provides access to the Clang compiler and libraries.
-
-The available modules are:
-
-  cindex
-
-    Bindings for the Clang indexing library.
-"""
-
-__all__ = ['cindex']
-

Modified: trunk/contrib/llvm/tools/clang/bindings/python/clang/cindex.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/clang/cindex.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/clang/cindex.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3253 +0,0 @@
-#===- cindex.py - Python Indexing Library Bindings -----------*- python -*--===#
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-#===------------------------------------------------------------------------===#
-
-r"""
-Clang Indexing Library Bindings
-===============================
-
-This module provides an interface to the Clang indexing library. It is a
-low-level interface to the indexing library which attempts to match the Clang
-API directly while also being "pythonic". Notable differences from the C API
-are:
-
- * string results are returned as Python strings, not CXString objects.
-
- * null cursors are translated to None.
-
- * access to child cursors is done via iteration, not visitation.
-
-The major indexing objects are:
-
-  Index
-
-    The top-level object which manages some global library state.
-
-  TranslationUnit
-
-    High-level object encapsulating the AST for a single translation unit. These
-    can be loaded from .ast files or parsed on the fly.
-
-  Cursor
-
-    Generic object for representing a node in the AST.
-
-  SourceRange, SourceLocation, and File
-
-    Objects representing information about the input source.
-
-Most object information is exposed using properties, when the underlying API
-call is efficient.
-"""
-
-# TODO
-# ====
-#
-# o API support for invalid translation units. Currently we can't even get the
-#   diagnostics on failure because they refer to locations in an object that
-#   will have been invalidated.
-#
-# o fix memory management issues (currently client must hold on to index and
-#   translation unit, or risk crashes).
-#
-# o expose code completion APIs.
-#
-# o cleanup ctypes wrapping, would be nice to separate the ctypes details more
-#   clearly, and hide from the external interface (i.e., help(cindex)).
-#
-# o implement additional SourceLocation, SourceRange, and File methods.
-
-from ctypes import *
-import collections
-
-import clang.enumerations
-
-# ctypes doesn't implicitly convert c_void_p to the appropriate wrapper
-# object. This is a problem, because it means that from_parameter will see an
-# integer and pass the wrong value on platforms where int != void*. Work around
-# this by marshalling object arguments as void**.
-c_object_p = POINTER(c_void_p)
-
-callbacks = {}
-
-### Exception Classes ###
-
-class TranslationUnitLoadError(Exception):
-    """Represents an error that occurred when loading a TranslationUnit.
-
-    This is raised in the case where a TranslationUnit could not be
-    instantiated due to failure in the libclang library.
-
-    FIXME: Make libclang expose additional error information in this scenario.
-    """
-    pass
-
-class TranslationUnitSaveError(Exception):
-    """Represents an error that occurred when saving a TranslationUnit.
-
-    Each error has associated with it an enumerated value, accessible under
-    e.save_error. Consumers can compare the value with one of the ERROR_
-    constants in this class.
-    """
-
-    # Indicates that an unknown error occurred. This typically indicates that
-    # I/O failed during save.
-    ERROR_UNKNOWN = 1
-
-    # Indicates that errors during translation prevented saving. The errors
-    # should be available via the TranslationUnit's diagnostics.
-    ERROR_TRANSLATION_ERRORS = 2
-
-    # Indicates that the translation unit was somehow invalid.
-    ERROR_INVALID_TU = 3
-
-    def __init__(self, enumeration, message):
-        assert isinstance(enumeration, int)
-
-        if enumeration < 1 or enumeration > 3:
-            raise Exception("Encountered undefined TranslationUnit save error "
-                            "constant: %d. Please file a bug to have this "
-                            "value supported." % enumeration)
-
-        self.save_error = enumeration
-        Exception.__init__(self, 'Error %d: %s' % (enumeration, message))
-
-### Structures and Utility Classes ###
-
-class CachedProperty(object):
-    """Decorator that lazy-loads the value of a property.
-
-    The first time the property is accessed, the original property function is
-    executed. The value it returns is set as the new value of that instance's
-    property, replacing the original method.
-    """
-
-    def __init__(self, wrapped):
-        self.wrapped = wrapped
-        try:
-            self.__doc__ = wrapped.__doc__
-        except:
-            pass
-
-    def __get__(self, instance, instance_type=None):
-        if instance is None:
-            return self
-
-        value = self.wrapped(instance)
-        setattr(instance, self.wrapped.__name__, value)
-
-        return value
-
-
-class _CXString(Structure):
-    """Helper for transforming CXString results."""
-
-    _fields_ = [("spelling", c_char_p), ("free", c_int)]
-
-    def __del__(self):
-        conf.lib.clang_disposeString(self)
-
-    @staticmethod
-    def from_result(res, fn, args):
-        assert isinstance(res, _CXString)
-        return conf.lib.clang_getCString(res)
-
-class SourceLocation(Structure):
-    """
-    A SourceLocation represents a particular location within a source file.
-    """
-    _fields_ = [("ptr_data", c_void_p * 2), ("int_data", c_uint)]
-    _data = None
-
-    def _get_instantiation(self):
-        if self._data is None:
-            f, l, c, o = c_object_p(), c_uint(), c_uint(), c_uint()
-            conf.lib.clang_getInstantiationLocation(self, byref(f), byref(l),
-                    byref(c), byref(o))
-            if f:
-                f = File(f)
-            else:
-                f = None
-            self._data = (f, int(l.value), int(c.value), int(o.value))
-        return self._data
-
-    @staticmethod
-    def from_position(tu, file, line, column):
-        """
-        Retrieve the source location associated with a given file/line/column in
-        a particular translation unit.
-        """
-        return conf.lib.clang_getLocation(tu, file, line, column)
-
-    @staticmethod
-    def from_offset(tu, file, offset):
-        """Retrieve a SourceLocation from a given character offset.
-
-        tu -- TranslationUnit file belongs to
-        file -- File instance to obtain offset from
-        offset -- Integer character offset within file
-        """
-        return conf.lib.clang_getLocationForOffset(tu, file, offset)
-
-    @property
-    def file(self):
-        """Get the file represented by this source location."""
-        return self._get_instantiation()[0]
-
-    @property
-    def line(self):
-        """Get the line represented by this source location."""
-        return self._get_instantiation()[1]
-
-    @property
-    def column(self):
-        """Get the column represented by this source location."""
-        return self._get_instantiation()[2]
-
-    @property
-    def offset(self):
-        """Get the file offset represented by this source location."""
-        return self._get_instantiation()[3]
-
-    def __eq__(self, other):
-        return conf.lib.clang_equalLocations(self, other)
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-    def __repr__(self):
-        if self.file:
-            filename = self.file.name
-        else:
-            filename = None
-        return "<SourceLocation file %r, line %r, column %r>" % (
-            filename, self.line, self.column)
-
-class SourceRange(Structure):
-    """
-    A SourceRange describes a range of source locations within the source
-    code.
-    """
-    _fields_ = [
-        ("ptr_data", c_void_p * 2),
-        ("begin_int_data", c_uint),
-        ("end_int_data", c_uint)]
-
-    # FIXME: Eliminate this and make normal constructor? Requires hiding ctypes
-    # object.
-    @staticmethod
-    def from_locations(start, end):
-        return conf.lib.clang_getRange(start, end)
-
-    @property
-    def start(self):
-        """
-        Return a SourceLocation representing the first character within a
-        source range.
-        """
-        return conf.lib.clang_getRangeStart(self)
-
-    @property
-    def end(self):
-        """
-        Return a SourceLocation representing the last character within a
-        source range.
-        """
-        return conf.lib.clang_getRangeEnd(self)
-
-    def __eq__(self, other):
-        return conf.lib.clang_equalRanges(self, other)
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-    def __repr__(self):
-        return "<SourceRange start %r, end %r>" % (self.start, self.end)
-
-class Diagnostic(object):
-    """
-    A Diagnostic is a single instance of a Clang diagnostic. It includes the
-    diagnostic severity, the message, the location the diagnostic occurred, as
-    well as additional source ranges and associated fix-it hints.
-    """
-
-    Ignored = 0
-    Note    = 1
-    Warning = 2
-    Error   = 3
-    Fatal   = 4
-
-    def __init__(self, ptr):
-        self.ptr = ptr
-
-    def __del__(self):
-        conf.lib.clang_disposeDiagnostic(self)
-
-    @property
-    def severity(self):
-        return conf.lib.clang_getDiagnosticSeverity(self)
-
-    @property
-    def location(self):
-        return conf.lib.clang_getDiagnosticLocation(self)
-
-    @property
-    def spelling(self):
-        return conf.lib.clang_getDiagnosticSpelling(self)
-
-    @property
-    def ranges(self):
-        class RangeIterator:
-            def __init__(self, diag):
-                self.diag = diag
-
-            def __len__(self):
-                return int(conf.lib.clang_getDiagnosticNumRanges(self.diag))
-
-            def __getitem__(self, key):
-                if (key >= len(self)):
-                    raise IndexError
-                return conf.lib.clang_getDiagnosticRange(self.diag, key)
-
-        return RangeIterator(self)
-
-    @property
-    def fixits(self):
-        class FixItIterator:
-            def __init__(self, diag):
-                self.diag = diag
-
-            def __len__(self):
-                return int(conf.lib.clang_getDiagnosticNumFixIts(self.diag))
-
-            def __getitem__(self, key):
-                range = SourceRange()
-                value = conf.lib.clang_getDiagnosticFixIt(self.diag, key,
-                        byref(range))
-                if len(value) == 0:
-                    raise IndexError
-
-                return FixIt(range, value)
-
-        return FixItIterator(self)
-
-    @property
-    def category_number(self):
-        """The category number for this diagnostic."""
-        return conf.lib.clang_getDiagnosticCategory(self)
-
-    @property
-    def category_name(self):
-        """The string name of the category for this diagnostic."""
-        return conf.lib.clang_getDiagnosticCategoryName(self.category_number)
-
-    @property
-    def option(self):
-        """The command-line option that enables this diagnostic."""
-        return conf.lib.clang_getDiagnosticOption(self, None)
-
-    @property
-    def disable_option(self):
-        """The command-line option that disables this diagnostic."""
-        disable = _CXString()
-        conf.lib.clang_getDiagnosticOption(self, byref(disable))
-
-        return conf.lib.clang_getCString(disable)
-
-    def __repr__(self):
-        return "<Diagnostic severity %r, location %r, spelling %r>" % (
-            self.severity, self.location, self.spelling)
-
-    def from_param(self):
-      return self.ptr
-
-class FixIt(object):
-    """
-    A FixIt represents a transformation to be applied to the source to
-    "fix-it". The fix-it shouldbe applied by replacing the given source range
-    with the given value.
-    """
-
-    def __init__(self, range, value):
-        self.range = range
-        self.value = value
-
-    def __repr__(self):
-        return "<FixIt range %r, value %r>" % (self.range, self.value)
-
-class TokenGroup(object):
-    """Helper class to facilitate token management.
-
-    Tokens are allocated from libclang in chunks. They must be disposed of as a
-    collective group.
-
-    One purpose of this class is for instances to represent groups of allocated
-    tokens. Each token in a group contains a reference back to an instance of
-    this class. When all tokens from a group are garbage collected, it allows
-    this class to be garbage collected. When this class is garbage collected,
-    it calls the libclang destructor which invalidates all tokens in the group.
-
-    You should not instantiate this class outside of this module.
-    """
-    def __init__(self, tu, memory, count):
-        self._tu = tu
-        self._memory = memory
-        self._count = count
-
-    def __del__(self):
-        conf.lib.clang_disposeTokens(self._tu, self._memory, self._count)
-
-    @staticmethod
-    def get_tokens(tu, extent):
-        """Helper method to return all tokens in an extent.
-
-        This functionality is needed multiple places in this module. We define
-        it here because it seems like a logical place.
-        """
-        tokens_memory = POINTER(Token)()
-        tokens_count = c_uint()
-
-        conf.lib.clang_tokenize(tu, extent, byref(tokens_memory),
-                byref(tokens_count))
-
-        count = int(tokens_count.value)
-
-        # If we get no tokens, no memory was allocated. Be sure not to return
-        # anything and potentially call a destructor on nothing.
-        if count < 1:
-            return
-
-        tokens_array = cast(tokens_memory, POINTER(Token * count)).contents
-
-        token_group = TokenGroup(tu, tokens_memory, tokens_count)
-
-        for i in xrange(0, count):
-            token = Token()
-            token.int_data = tokens_array[i].int_data
-            token.ptr_data = tokens_array[i].ptr_data
-            token._tu = tu
-            token._group = token_group
-
-            yield token
-
-class TokenKind(object):
-    """Describes a specific type of a Token."""
-
-    _value_map = {} # int -> TokenKind
-
-    def __init__(self, value, name):
-        """Create a new TokenKind instance from a numeric value and a name."""
-        self.value = value
-        self.name = name
-
-    def __repr__(self):
-        return 'TokenKind.%s' % (self.name,)
-
-    @staticmethod
-    def from_value(value):
-        """Obtain a registered TokenKind instance from its value."""
-        result = TokenKind._value_map.get(value, None)
-
-        if result is None:
-            raise ValueError('Unknown TokenKind: %d' % value)
-
-        return result
-
-    @staticmethod
-    def register(value, name):
-        """Register a new TokenKind enumeration.
-
-        This should only be called at module load time by code within this
-        package.
-        """
-        if value in TokenKind._value_map:
-            raise ValueError('TokenKind already registered: %d' % value)
-
-        kind = TokenKind(value, name)
-        TokenKind._value_map[value] = kind
-        setattr(TokenKind, name, kind)
-
-### Cursor Kinds ###
-
-class CursorKind(object):
-    """
-    A CursorKind describes the kind of entity that a cursor points to.
-    """
-
-    # The unique kind objects, indexed by id.
-    _kinds = []
-    _name_map = None
-
-    def __init__(self, value):
-        if value >= len(CursorKind._kinds):
-            CursorKind._kinds += [None] * (value - len(CursorKind._kinds) + 1)
-        if CursorKind._kinds[value] is not None:
-            raise ValueError,'CursorKind already loaded'
-        self.value = value
-        CursorKind._kinds[value] = self
-        CursorKind._name_map = None
-
-    def from_param(self):
-        return self.value
-
-    @property
-    def name(self):
-        """Get the enumeration name of this cursor kind."""
-        if self._name_map is None:
-            self._name_map = {}
-            for key,value in CursorKind.__dict__.items():
-                if isinstance(value,CursorKind):
-                    self._name_map[value] = key
-        return self._name_map[self]
-
-    @staticmethod
-    def from_id(id):
-        if id >= len(CursorKind._kinds) or CursorKind._kinds[id] is None:
-            raise ValueError,'Unknown cursor kind'
-        return CursorKind._kinds[id]
-
-    @staticmethod
-    def get_all_kinds():
-        """Return all CursorKind enumeration instances."""
-        return filter(None, CursorKind._kinds)
-
-    def is_declaration(self):
-        """Test if this is a declaration kind."""
-        return conf.lib.clang_isDeclaration(self)
-
-    def is_reference(self):
-        """Test if this is a reference kind."""
-        return conf.lib.clang_isReference(self)
-
-    def is_expression(self):
-        """Test if this is an expression kind."""
-        return conf.lib.clang_isExpression(self)
-
-    def is_statement(self):
-        """Test if this is a statement kind."""
-        return conf.lib.clang_isStatement(self)
-
-    def is_attribute(self):
-        """Test if this is an attribute kind."""
-        return conf.lib.clang_isAttribute(self)
-
-    def is_invalid(self):
-        """Test if this is an invalid kind."""
-        return conf.lib.clang_isInvalid(self)
-
-    def is_translation_unit(self):
-        """Test if this is a translation unit kind."""
-        return conf.lib.clang_isTranslationUnit(self)
-
-    def is_preprocessing(self):
-        """Test if this is a preprocessing kind."""
-        return conf.lib.clang_isPreprocessing(self)
-
-    def is_unexposed(self):
-        """Test if this is an unexposed kind."""
-        return conf.lib.clang_isUnexposed(self)
-
-    def __repr__(self):
-        return 'CursorKind.%s' % (self.name,)
-
-# FIXME: Is there a nicer way to expose this enumeration? We could potentially
-# represent the nested structure, or even build a class hierarchy. The main
-# things we want for sure are (a) simple external access to kinds, (b) a place
-# to hang a description and name, (c) easy to keep in sync with Index.h.
-
-###
-# Declaration Kinds
-
-# A declaration whose specific kind is not exposed via this interface.
-#
-# Unexposed declarations have the same operations as any other kind of
-# declaration; one can extract their location information, spelling, find their
-# definitions, etc. However, the specific kind of the declaration is not
-# reported.
-CursorKind.UNEXPOSED_DECL = CursorKind(1)
-
-# A C or C++ struct.
-CursorKind.STRUCT_DECL = CursorKind(2)
-
-# A C or C++ union.
-CursorKind.UNION_DECL = CursorKind(3)
-
-# A C++ class.
-CursorKind.CLASS_DECL = CursorKind(4)
-
-# An enumeration.
-CursorKind.ENUM_DECL = CursorKind(5)
-
-# A field (in C) or non-static data member (in C++) in a struct, union, or C++
-# class.
-CursorKind.FIELD_DECL = CursorKind(6)
-
-# An enumerator constant.
-CursorKind.ENUM_CONSTANT_DECL = CursorKind(7)
-
-# A function.
-CursorKind.FUNCTION_DECL = CursorKind(8)
-
-# A variable.
-CursorKind.VAR_DECL = CursorKind(9)
-
-# A function or method parameter.
-CursorKind.PARM_DECL = CursorKind(10)
-
-# An Objective-C @interface.
-CursorKind.OBJC_INTERFACE_DECL = CursorKind(11)
-
-# An Objective-C @interface for a category.
-CursorKind.OBJC_CATEGORY_DECL = CursorKind(12)
-
-# An Objective-C @protocol declaration.
-CursorKind.OBJC_PROTOCOL_DECL = CursorKind(13)
-
-# An Objective-C @property declaration.
-CursorKind.OBJC_PROPERTY_DECL = CursorKind(14)
-
-# An Objective-C instance variable.
-CursorKind.OBJC_IVAR_DECL = CursorKind(15)
-
-# An Objective-C instance method.
-CursorKind.OBJC_INSTANCE_METHOD_DECL = CursorKind(16)
-
-# An Objective-C class method.
-CursorKind.OBJC_CLASS_METHOD_DECL = CursorKind(17)
-
-# An Objective-C @implementation.
-CursorKind.OBJC_IMPLEMENTATION_DECL = CursorKind(18)
-
-# An Objective-C @implementation for a category.
-CursorKind.OBJC_CATEGORY_IMPL_DECL = CursorKind(19)
-
-# A typedef.
-CursorKind.TYPEDEF_DECL = CursorKind(20)
-
-# A C++ class method.
-CursorKind.CXX_METHOD = CursorKind(21)
-
-# A C++ namespace.
-CursorKind.NAMESPACE = CursorKind(22)
-
-# A linkage specification, e.g. 'extern "C"'.
-CursorKind.LINKAGE_SPEC = CursorKind(23)
-
-# A C++ constructor.
-CursorKind.CONSTRUCTOR = CursorKind(24)
-
-# A C++ destructor.
-CursorKind.DESTRUCTOR = CursorKind(25)
-
-# A C++ conversion function.
-CursorKind.CONVERSION_FUNCTION = CursorKind(26)
-
-# A C++ template type parameter
-CursorKind.TEMPLATE_TYPE_PARAMETER = CursorKind(27)
-
-# A C++ non-type template paramater.
-CursorKind.TEMPLATE_NON_TYPE_PARAMETER = CursorKind(28)
-
-# A C++ template template parameter.
-CursorKind.TEMPLATE_TEMPLATE_PARAMETER = CursorKind(29)
-
-# A C++ function template.
-CursorKind.FUNCTION_TEMPLATE = CursorKind(30)
-
-# A C++ class template.
-CursorKind.CLASS_TEMPLATE = CursorKind(31)
-
-# A C++ class template partial specialization.
-CursorKind.CLASS_TEMPLATE_PARTIAL_SPECIALIZATION = CursorKind(32)
-
-# A C++ namespace alias declaration.
-CursorKind.NAMESPACE_ALIAS = CursorKind(33)
-
-# A C++ using directive
-CursorKind.USING_DIRECTIVE = CursorKind(34)
-
-# A C++ using declaration
-CursorKind.USING_DECLARATION = CursorKind(35)
-
-# A Type alias decl.
-CursorKind.TYPE_ALIAS_DECL = CursorKind(36)
-
-# A Objective-C synthesize decl
-CursorKind.OBJC_SYNTHESIZE_DECL = CursorKind(37)
-
-# A Objective-C dynamic decl
-CursorKind.OBJC_DYNAMIC_DECL = CursorKind(38)
-
-# A C++ access specifier decl.
-CursorKind.CXX_ACCESS_SPEC_DECL = CursorKind(39)
-
-
-###
-# Reference Kinds
-
-CursorKind.OBJC_SUPER_CLASS_REF = CursorKind(40)
-CursorKind.OBJC_PROTOCOL_REF = CursorKind(41)
-CursorKind.OBJC_CLASS_REF = CursorKind(42)
-
-# A reference to a type declaration.
-#
-# A type reference occurs anywhere where a type is named but not
-# declared. For example, given:
-#   typedef unsigned size_type;
-#   size_type size;
-#
-# The typedef is a declaration of size_type (CXCursor_TypedefDecl),
-# while the type of the variable "size" is referenced. The cursor
-# referenced by the type of size is the typedef for size_type.
-CursorKind.TYPE_REF = CursorKind(43)
-CursorKind.CXX_BASE_SPECIFIER = CursorKind(44)
-
-# A reference to a class template, function template, template
-# template parameter, or class template partial specialization.
-CursorKind.TEMPLATE_REF = CursorKind(45)
-
-# A reference to a namespace or namepsace alias.
-CursorKind.NAMESPACE_REF = CursorKind(46)
-
-# A reference to a member of a struct, union, or class that occurs in
-# some non-expression context, e.g., a designated initializer.
-CursorKind.MEMBER_REF = CursorKind(47)
-
-# A reference to a labeled statement.
-CursorKind.LABEL_REF = CursorKind(48)
-
-# A reference toa a set of overloaded functions or function templates
-# that has not yet been resolved to a specific function or function template.
-CursorKind.OVERLOADED_DECL_REF = CursorKind(49)
-
-###
-# Invalid/Error Kinds
-
-CursorKind.INVALID_FILE = CursorKind(70)
-CursorKind.NO_DECL_FOUND = CursorKind(71)
-CursorKind.NOT_IMPLEMENTED = CursorKind(72)
-CursorKind.INVALID_CODE = CursorKind(73)
-
-###
-# Expression Kinds
-
-# An expression whose specific kind is not exposed via this interface.
-#
-# Unexposed expressions have the same operations as any other kind of
-# expression; one can extract their location information, spelling, children,
-# etc. However, the specific kind of the expression is not reported.
-CursorKind.UNEXPOSED_EXPR = CursorKind(100)
-
-# An expression that refers to some value declaration, such as a function,
-# varible, or enumerator.
-CursorKind.DECL_REF_EXPR = CursorKind(101)
-
-# An expression that refers to a member of a struct, union, class, Objective-C
-# class, etc.
-CursorKind.MEMBER_REF_EXPR = CursorKind(102)
-
-# An expression that calls a function.
-CursorKind.CALL_EXPR = CursorKind(103)
-
-# An expression that sends a message to an Objective-C object or class.
-CursorKind.OBJC_MESSAGE_EXPR = CursorKind(104)
-
-# An expression that represents a block literal.
-CursorKind.BLOCK_EXPR = CursorKind(105)
-
-# An integer literal.
-CursorKind.INTEGER_LITERAL = CursorKind(106)
-
-# A floating point number literal.
-CursorKind.FLOATING_LITERAL = CursorKind(107)
-
-# An imaginary number literal.
-CursorKind.IMAGINARY_LITERAL = CursorKind(108)
-
-# A string literal.
-CursorKind.STRING_LITERAL = CursorKind(109)
-
-# A character literal.
-CursorKind.CHARACTER_LITERAL = CursorKind(110)
-
-# A parenthesized expression, e.g. "(1)".
-#
-# This AST node is only formed if full location information is requested.
-CursorKind.PAREN_EXPR = CursorKind(111)
-
-# This represents the unary-expression's (except sizeof and
-# alignof).
-CursorKind.UNARY_OPERATOR = CursorKind(112)
-
-# [C99 6.5.2.1] Array Subscripting.
-CursorKind.ARRAY_SUBSCRIPT_EXPR = CursorKind(113)
-
-# A builtin binary operation expression such as "x + y" or
-# "x <= y".
-CursorKind.BINARY_OPERATOR = CursorKind(114)
-
-# Compound assignment such as "+=".
-CursorKind.COMPOUND_ASSIGNMENT_OPERATOR = CursorKind(115)
-
-# The ?: ternary operator.
-CursorKind.CONDITIONAL_OPERATOR = CursorKind(116)
-
-# An explicit cast in C (C99 6.5.4) or a C-style cast in C++
-# (C++ [expr.cast]), which uses the syntax (Type)expr.
-#
-# For example: (int)f.
-CursorKind.CSTYLE_CAST_EXPR = CursorKind(117)
-
-# [C99 6.5.2.5]
-CursorKind.COMPOUND_LITERAL_EXPR = CursorKind(118)
-
-# Describes an C or C++ initializer list.
-CursorKind.INIT_LIST_EXPR = CursorKind(119)
-
-# The GNU address of label extension, representing &&label.
-CursorKind.ADDR_LABEL_EXPR = CursorKind(120)
-
-# This is the GNU Statement Expression extension: ({int X=4; X;})
-CursorKind.StmtExpr = CursorKind(121)
-
-# Represents a C11 generic selection.
-CursorKind.GENERIC_SELECTION_EXPR = CursorKind(122)
-
-# Implements the GNU __null extension, which is a name for a null
-# pointer constant that has integral type (e.g., int or long) and is the same
-# size and alignment as a pointer.
-#
-# The __null extension is typically only used by system headers, which define
-# NULL as __null in C++ rather than using 0 (which is an integer that may not
-# match the size of a pointer).
-CursorKind.GNU_NULL_EXPR = CursorKind(123)
-
-# C++'s static_cast<> expression.
-CursorKind.CXX_STATIC_CAST_EXPR = CursorKind(124)
-
-# C++'s dynamic_cast<> expression.
-CursorKind.CXX_DYNAMIC_CAST_EXPR = CursorKind(125)
-
-# C++'s reinterpret_cast<> expression.
-CursorKind.CXX_REINTERPRET_CAST_EXPR = CursorKind(126)
-
-# C++'s const_cast<> expression.
-CursorKind.CXX_CONST_CAST_EXPR = CursorKind(127)
-
-# Represents an explicit C++ type conversion that uses "functional"
-# notion (C++ [expr.type.conv]).
-#
-# Example:
-# \code
-#   x = int(0.5);
-# \endcode
-CursorKind.CXX_FUNCTIONAL_CAST_EXPR = CursorKind(128)
-
-# A C++ typeid expression (C++ [expr.typeid]).
-CursorKind.CXX_TYPEID_EXPR = CursorKind(129)
-
-# [C++ 2.13.5] C++ Boolean Literal.
-CursorKind.CXX_BOOL_LITERAL_EXPR = CursorKind(130)
-
-# [C++0x 2.14.7] C++ Pointer Literal.
-CursorKind.CXX_NULL_PTR_LITERAL_EXPR = CursorKind(131)
-
-# Represents the "this" expression in C++
-CursorKind.CXX_THIS_EXPR = CursorKind(132)
-
-# [C++ 15] C++ Throw Expression.
-#
-# This handles 'throw' and 'throw' assignment-expression. When
-# assignment-expression isn't present, Op will be null.
-CursorKind.CXX_THROW_EXPR = CursorKind(133)
-
-# A new expression for memory allocation and constructor calls, e.g:
-# "new CXXNewExpr(foo)".
-CursorKind.CXX_NEW_EXPR = CursorKind(134)
-
-# A delete expression for memory deallocation and destructor calls,
-# e.g. "delete[] pArray".
-CursorKind.CXX_DELETE_EXPR = CursorKind(135)
-
-# Represents a unary expression.
-CursorKind.CXX_UNARY_EXPR = CursorKind(136)
-
-# ObjCStringLiteral, used for Objective-C string literals i.e. "foo".
-CursorKind.OBJC_STRING_LITERAL = CursorKind(137)
-
-# ObjCEncodeExpr, used for in Objective-C.
-CursorKind.OBJC_ENCODE_EXPR = CursorKind(138)
-
-# ObjCSelectorExpr used for in Objective-C.
-CursorKind.OBJC_SELECTOR_EXPR = CursorKind(139)
-
-# Objective-C's protocol expression.
-CursorKind.OBJC_PROTOCOL_EXPR = CursorKind(140)
-
-# An Objective-C "bridged" cast expression, which casts between
-# Objective-C pointers and C pointers, transferring ownership in the process.
-#
-# \code
-#   NSString *str = (__bridge_transfer NSString *)CFCreateString();
-# \endcode
-CursorKind.OBJC_BRIDGE_CAST_EXPR = CursorKind(141)
-
-# Represents a C++0x pack expansion that produces a sequence of
-# expressions.
-#
-# A pack expansion expression contains a pattern (which itself is an
-# expression) followed by an ellipsis. For example:
-CursorKind.PACK_EXPANSION_EXPR = CursorKind(142)
-
-# Represents an expression that computes the length of a parameter
-# pack.
-CursorKind.SIZE_OF_PACK_EXPR = CursorKind(143)
-
-# A statement whose specific kind is not exposed via this interface.
-#
-# Unexposed statements have the same operations as any other kind of statement;
-# one can extract their location information, spelling, children, etc. However,
-# the specific kind of the statement is not reported.
-CursorKind.UNEXPOSED_STMT = CursorKind(200)
-
-# A labelled statement in a function.
-CursorKind.LABEL_STMT = CursorKind(201)
-
-# A compound statement
-CursorKind.COMPOUND_STMT = CursorKind(202)
-
-# A case statement.
-CursorKind.CASE_STMT = CursorKind(203)
-
-# A default statement.
-CursorKind.DEFAULT_STMT = CursorKind(204)
-
-# An if statement.
-CursorKind.IF_STMT = CursorKind(205)
-
-# A switch statement.
-CursorKind.SWITCH_STMT = CursorKind(206)
-
-# A while statement.
-CursorKind.WHILE_STMT = CursorKind(207)
-
-# A do statement.
-CursorKind.DO_STMT = CursorKind(208)
-
-# A for statement.
-CursorKind.FOR_STMT = CursorKind(209)
-
-# A goto statement.
-CursorKind.GOTO_STMT = CursorKind(210)
-
-# An indirect goto statement.
-CursorKind.INDIRECT_GOTO_STMT = CursorKind(211)
-
-# A continue statement.
-CursorKind.CONTINUE_STMT = CursorKind(212)
-
-# A break statement.
-CursorKind.BREAK_STMT = CursorKind(213)
-
-# A return statement.
-CursorKind.RETURN_STMT = CursorKind(214)
-
-# A GNU-style inline assembler statement.
-CursorKind.ASM_STMT = CursorKind(215)
-
-# Objective-C's overall @try- at catch-@finally statement.
-CursorKind.OBJC_AT_TRY_STMT = CursorKind(216)
-
-# Objective-C's @catch statement.
-CursorKind.OBJC_AT_CATCH_STMT = CursorKind(217)
-
-# Objective-C's @finally statement.
-CursorKind.OBJC_AT_FINALLY_STMT = CursorKind(218)
-
-# Objective-C's @throw statement.
-CursorKind.OBJC_AT_THROW_STMT = CursorKind(219)
-
-# Objective-C's @synchronized statement.
-CursorKind.OBJC_AT_SYNCHRONIZED_STMT = CursorKind(220)
-
-# Objective-C's autorealease pool statement.
-CursorKind.OBJC_AUTORELEASE_POOL_STMT = CursorKind(221)
-
-# Objective-C's for collection statement.
-CursorKind.OBJC_FOR_COLLECTION_STMT = CursorKind(222)
-
-# C++'s catch statement.
-CursorKind.CXX_CATCH_STMT = CursorKind(223)
-
-# C++'s try statement.
-CursorKind.CXX_TRY_STMT = CursorKind(224)
-
-# C++'s for (* : *) statement.
-CursorKind.CXX_FOR_RANGE_STMT = CursorKind(225)
-
-# Windows Structured Exception Handling's try statement.
-CursorKind.SEH_TRY_STMT = CursorKind(226)
-
-# Windows Structured Exception Handling's except statement.
-CursorKind.SEH_EXCEPT_STMT = CursorKind(227)
-
-# Windows Structured Exception Handling's finally statement.
-CursorKind.SEH_FINALLY_STMT = CursorKind(228)
-
-# The null statement.
-CursorKind.NULL_STMT = CursorKind(230)
-
-# Adaptor class for mixing declarations with statements and expressions.
-CursorKind.DECL_STMT = CursorKind(231)
-
-###
-# Other Kinds
-
-# Cursor that represents the translation unit itself.
-#
-# The translation unit cursor exists primarily to act as the root cursor for
-# traversing the contents of a translation unit.
-CursorKind.TRANSLATION_UNIT = CursorKind(300)
-
-###
-# Attributes
-
-# An attribute whoe specific kind is note exposed via this interface
-CursorKind.UNEXPOSED_ATTR = CursorKind(400)
-
-CursorKind.IB_ACTION_ATTR = CursorKind(401)
-CursorKind.IB_OUTLET_ATTR = CursorKind(402)
-CursorKind.IB_OUTLET_COLLECTION_ATTR = CursorKind(403)
-
-CursorKind.CXX_FINAL_ATTR = CursorKind(404)
-CursorKind.CXX_OVERRIDE_ATTR = CursorKind(405)
-CursorKind.ANNOTATE_ATTR = CursorKind(406)
-CursorKind.ASM_LABEL_ATTR = CursorKind(407)
-
-###
-# Preprocessing
-CursorKind.PREPROCESSING_DIRECTIVE = CursorKind(500)
-CursorKind.MACRO_DEFINITION = CursorKind(501)
-CursorKind.MACRO_INSTANTIATION = CursorKind(502)
-CursorKind.INCLUSION_DIRECTIVE = CursorKind(503)
-
-### Cursors ###
-
-class Cursor(Structure):
-    """
-    The Cursor class represents a reference to an element within the AST. It
-    acts as a kind of iterator.
-    """
-    _fields_ = [("_kind_id", c_int), ("xdata", c_int), ("data", c_void_p * 3)]
-
-    @staticmethod
-    def from_location(tu, location):
-        # We store a reference to the TU in the instance so the TU won't get
-        # collected before the cursor.
-        cursor = conf.lib.clang_getCursor(tu, location)
-        cursor._tu = tu
-
-        return cursor
-
-    def __eq__(self, other):
-        return conf.lib.clang_equalCursors(self, other)
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-    def is_definition(self):
-        """
-        Returns true if the declaration pointed at by the cursor is also a
-        definition of that entity.
-        """
-        return conf.lib.clang_isCursorDefinition(self)
-
-    def is_static_method(self):
-        """Returns True if the cursor refers to a C++ member function or member
-        function template that is declared 'static'.
-        """
-        return conf.lib.clang_CXXMethod_isStatic(self)
-
-    def get_definition(self):
-        """
-        If the cursor is a reference to a declaration or a declaration of
-        some entity, return a cursor that points to the definition of that
-        entity.
-        """
-        # TODO: Should probably check that this is either a reference or
-        # declaration prior to issuing the lookup.
-        return conf.lib.clang_getCursorDefinition(self)
-
-    def get_usr(self):
-        """Return the Unified Symbol Resultion (USR) for the entity referenced
-        by the given cursor (or None).
-
-        A Unified Symbol Resolution (USR) is a string that identifies a
-        particular entity (function, class, variable, etc.) within a
-        program. USRs can be compared across translation units to determine,
-        e.g., when references in one translation refer to an entity defined in
-        another translation unit."""
-        return conf.lib.clang_getCursorUSR(self)
-
-    @property
-    def kind(self):
-        """Return the kind of this cursor."""
-        return CursorKind.from_id(self._kind_id)
-
-    @property
-    def spelling(self):
-        """Return the spelling of the entity pointed at by the cursor."""
-        if not self.kind.is_declaration():
-            # FIXME: clang_getCursorSpelling should be fixed to not assert on
-            # this, for consistency with clang_getCursorUSR.
-            return None
-        if not hasattr(self, '_spelling'):
-            self._spelling = conf.lib.clang_getCursorSpelling(self)
-
-        return self._spelling
-
-    @property
-    def displayname(self):
-        """
-        Return the display name for the entity referenced by this cursor.
-
-        The display name contains extra information that helps identify the cursor,
-        such as the parameters of a function or template or the arguments of a
-        class template specialization.
-        """
-        if not hasattr(self, '_displayname'):
-            self._displayname = conf.lib.clang_getCursorDisplayName(self)
-
-        return self._displayname
-
-    @property
-    def location(self):
-        """
-        Return the source location (the starting character) of the entity
-        pointed at by the cursor.
-        """
-        if not hasattr(self, '_loc'):
-            self._loc = conf.lib.clang_getCursorLocation(self)
-
-        return self._loc
-
-    @property
-    def extent(self):
-        """
-        Return the source range (the range of text) occupied by the entity
-        pointed at by the cursor.
-        """
-        if not hasattr(self, '_extent'):
-            self._extent = conf.lib.clang_getCursorExtent(self)
-
-        return self._extent
-
-    @property
-    def type(self):
-        """
-        Retrieve the Type (if any) of the entity pointed at by the cursor.
-        """
-        if not hasattr(self, '_type'):
-            self._type = conf.lib.clang_getCursorType(self)
-
-        return self._type
-
-    @property
-    def canonical(self):
-        """Return the canonical Cursor corresponding to this Cursor.
-
-        The canonical cursor is the cursor which is representative for the
-        underlying entity. For example, if you have multiple forward
-        declarations for the same class, the canonical cursor for the forward
-        declarations will be identical.
-        """
-        if not hasattr(self, '_canonical'):
-            self._canonical = conf.lib.clang_getCanonicalCursor(self)
-
-        return self._canonical
-
-    @property
-    def result_type(self):
-        """Retrieve the Type of the result for this Cursor."""
-        if not hasattr(self, '_result_type'):
-            self._result_type = conf.lib.clang_getResultType(self.type)
-
-        return self._result_type
-
-    @property
-    def underlying_typedef_type(self):
-        """Return the underlying type of a typedef declaration.
-
-        Returns a Type for the typedef this cursor is a declaration for. If
-        the current cursor is not a typedef, this raises.
-        """
-        if not hasattr(self, '_underlying_type'):
-            assert self.kind.is_declaration()
-            self._underlying_type = \
-              conf.lib.clang_getTypedefDeclUnderlyingType(self)
-
-        return self._underlying_type
-
-    @property
-    def enum_type(self):
-        """Return the integer type of an enum declaration.
-
-        Returns a Type corresponding to an integer. If the cursor is not for an
-        enum, this raises.
-        """
-        if not hasattr(self, '_enum_type'):
-            assert self.kind == CursorKind.ENUM_DECL
-            self._enum_type = conf.lib.clang_getEnumDeclIntegerType(self)
-
-        return self._enum_type
-
-    @property
-    def enum_value(self):
-        """Return the value of an enum constant."""
-        if not hasattr(self, '_enum_value'):
-            assert self.kind == CursorKind.ENUM_CONSTANT_DECL
-            # Figure out the underlying type of the enum to know if it
-            # is a signed or unsigned quantity.
-            underlying_type = self.type
-            if underlying_type.kind == TypeKind.ENUM:
-                underlying_type = underlying_type.get_declaration().enum_type
-            if underlying_type.kind in (TypeKind.CHAR_U,
-                                        TypeKind.UCHAR,
-                                        TypeKind.CHAR16,
-                                        TypeKind.CHAR32,
-                                        TypeKind.USHORT,
-                                        TypeKind.UINT,
-                                        TypeKind.ULONG,
-                                        TypeKind.ULONGLONG,
-                                        TypeKind.UINT128):
-                self._enum_value = \
-                  conf.lib.clang_getEnumConstantDeclUnsignedValue(self)
-            else:
-                self._enum_value = conf.lib.clang_getEnumConstantDeclValue(self)
-        return self._enum_value
-
-    @property
-    def objc_type_encoding(self):
-        """Return the Objective-C type encoding as a str."""
-        if not hasattr(self, '_objc_type_encoding'):
-            self._objc_type_encoding = \
-              conf.lib.clang_getDeclObjCTypeEncoding(self)
-
-        return self._objc_type_encoding
-
-    @property
-    def hash(self):
-        """Returns a hash of the cursor as an int."""
-        if not hasattr(self, '_hash'):
-            self._hash = conf.lib.clang_hashCursor(self)
-
-        return self._hash
-
-    @property
-    def semantic_parent(self):
-        """Return the semantic parent for this cursor."""
-        if not hasattr(self, '_semantic_parent'):
-            self._semantic_parent = conf.lib.clang_getCursorSemanticParent(self)
-
-        return self._semantic_parent
-
-    @property
-    def lexical_parent(self):
-        """Return the lexical parent for this cursor."""
-        if not hasattr(self, '_lexical_parent'):
-            self._lexical_parent = conf.lib.clang_getCursorLexicalParent(self)
-
-        return self._lexical_parent
-
-    @property
-    def translation_unit(self):
-        """Returns the TranslationUnit to which this Cursor belongs."""
-        # If this triggers an AttributeError, the instance was not properly
-        # created.
-        return self._tu
-
-    @property
-    def referenced(self):
-        """
-        For a cursor that is a reference, returns a cursor 
-        representing the entity that it references.
-        """
-        if not hasattr(self, '_referenced'):
-            self._referenced = conf.lib.clang_getCursorReferenced(self)
-
-        return self._referenced
-
-    def get_arguments(self):
-        """Return an iterator for accessing the arguments of this cursor."""
-        num_args = conf.lib.clang_Cursor_getNumArguments(self)
-        for i in range(0, num_args):
-            yield conf.lib.clang_Cursor_getArgument(self, i)
-
-    def get_children(self):
-        """Return an iterator for accessing the children of this cursor."""
-
-        # FIXME: Expose iteration from CIndex, PR6125.
-        def visitor(child, parent, children):
-            # FIXME: Document this assertion in API.
-            # FIXME: There should just be an isNull method.
-            assert child != conf.lib.clang_getNullCursor()
-
-            # Create reference to TU so it isn't GC'd before Cursor.
-            child._tu = self._tu
-            children.append(child)
-            return 1 # continue
-        children = []
-        conf.lib.clang_visitChildren(self, callbacks['cursor_visit'](visitor),
-            children)
-        return iter(children)
-
-    def get_tokens(self):
-        """Obtain Token instances formulating that compose this Cursor.
-
-        This is a generator for Token instances. It returns all tokens which
-        occupy the extent this cursor occupies.
-        """
-        return TokenGroup.get_tokens(self._tu, self.extent)
-
-    def is_bitfield(self):
-        """
-        Check if the field is a bitfield.
-        """
-        return conf.lib.clang_Cursor_isBitField(self)
-
-    def get_bitfield_width(self):
-        """
-        Retrieve the width of a bitfield.
-        """
-        return conf.lib.clang_getFieldDeclBitWidth(self)
-
-    @staticmethod
-    def from_result(res, fn, args):
-        assert isinstance(res, Cursor)
-        # FIXME: There should just be an isNull method.
-        if res == conf.lib.clang_getNullCursor():
-            return None
-
-        # Store a reference to the TU in the Python object so it won't get GC'd
-        # before the Cursor.
-        tu = None
-        for arg in args:
-            if isinstance(arg, TranslationUnit):
-                tu = arg
-                break
-
-            if hasattr(arg, 'translation_unit'):
-                tu = arg.translation_unit
-                break
-
-        assert tu is not None
-
-        res._tu = tu
-        return res
-
-    @staticmethod
-    def from_cursor_result(res, fn, args):
-        assert isinstance(res, Cursor)
-        if res == conf.lib.clang_getNullCursor():
-            return None
-
-        res._tu = args[0]._tu
-        return res
-
-### Type Kinds ###
-
-class TypeKind(object):
-    """
-    Describes the kind of type.
-    """
-
-    # The unique kind objects, indexed by id.
-    _kinds = []
-    _name_map = None
-
-    def __init__(self, value):
-        if value >= len(TypeKind._kinds):
-            TypeKind._kinds += [None] * (value - len(TypeKind._kinds) + 1)
-        if TypeKind._kinds[value] is not None:
-            raise ValueError,'TypeKind already loaded'
-        self.value = value
-        TypeKind._kinds[value] = self
-        TypeKind._name_map = None
-
-    def from_param(self):
-        return self.value
-
-    @property
-    def name(self):
-        """Get the enumeration name of this cursor kind."""
-        if self._name_map is None:
-            self._name_map = {}
-            for key,value in TypeKind.__dict__.items():
-                if isinstance(value,TypeKind):
-                    self._name_map[value] = key
-        return self._name_map[self]
-
-    @property
-    def spelling(self):
-        """Retrieve the spelling of this TypeKind."""
-        return conf.lib.clang_getTypeKindSpelling(self.value)
-
-    @staticmethod
-    def from_id(id):
-        if id >= len(TypeKind._kinds) or TypeKind._kinds[id] is None:
-            raise ValueError,'Unknown type kind %d' % id
-        return TypeKind._kinds[id]
-
-    def __repr__(self):
-        return 'TypeKind.%s' % (self.name,)
-
-TypeKind.INVALID = TypeKind(0)
-TypeKind.UNEXPOSED = TypeKind(1)
-TypeKind.VOID = TypeKind(2)
-TypeKind.BOOL = TypeKind(3)
-TypeKind.CHAR_U = TypeKind(4)
-TypeKind.UCHAR = TypeKind(5)
-TypeKind.CHAR16 = TypeKind(6)
-TypeKind.CHAR32 = TypeKind(7)
-TypeKind.USHORT = TypeKind(8)
-TypeKind.UINT = TypeKind(9)
-TypeKind.ULONG = TypeKind(10)
-TypeKind.ULONGLONG = TypeKind(11)
-TypeKind.UINT128 = TypeKind(12)
-TypeKind.CHAR_S = TypeKind(13)
-TypeKind.SCHAR = TypeKind(14)
-TypeKind.WCHAR = TypeKind(15)
-TypeKind.SHORT = TypeKind(16)
-TypeKind.INT = TypeKind(17)
-TypeKind.LONG = TypeKind(18)
-TypeKind.LONGLONG = TypeKind(19)
-TypeKind.INT128 = TypeKind(20)
-TypeKind.FLOAT = TypeKind(21)
-TypeKind.DOUBLE = TypeKind(22)
-TypeKind.LONGDOUBLE = TypeKind(23)
-TypeKind.NULLPTR = TypeKind(24)
-TypeKind.OVERLOAD = TypeKind(25)
-TypeKind.DEPENDENT = TypeKind(26)
-TypeKind.OBJCID = TypeKind(27)
-TypeKind.OBJCCLASS = TypeKind(28)
-TypeKind.OBJCSEL = TypeKind(29)
-TypeKind.COMPLEX = TypeKind(100)
-TypeKind.POINTER = TypeKind(101)
-TypeKind.BLOCKPOINTER = TypeKind(102)
-TypeKind.LVALUEREFERENCE = TypeKind(103)
-TypeKind.RVALUEREFERENCE = TypeKind(104)
-TypeKind.RECORD = TypeKind(105)
-TypeKind.ENUM = TypeKind(106)
-TypeKind.TYPEDEF = TypeKind(107)
-TypeKind.OBJCINTERFACE = TypeKind(108)
-TypeKind.OBJCOBJECTPOINTER = TypeKind(109)
-TypeKind.FUNCTIONNOPROTO = TypeKind(110)
-TypeKind.FUNCTIONPROTO = TypeKind(111)
-TypeKind.CONSTANTARRAY = TypeKind(112)
-TypeKind.VECTOR = TypeKind(113)
-
-class Type(Structure):
-    """
-    The type of an element in the abstract syntax tree.
-    """
-    _fields_ = [("_kind_id", c_int), ("data", c_void_p * 2)]
-
-    @property
-    def kind(self):
-        """Return the kind of this type."""
-        return TypeKind.from_id(self._kind_id)
-
-    def argument_types(self):
-        """Retrieve a container for the non-variadic arguments for this type.
-
-        The returned object is iterable and indexable. Each item in the
-        container is a Type instance.
-        """
-        class ArgumentsIterator(collections.Sequence):
-            def __init__(self, parent):
-                self.parent = parent
-                self.length = None
-
-            def __len__(self):
-                if self.length is None:
-                    self.length = conf.lib.clang_getNumArgTypes(self.parent)
-
-                return self.length
-
-            def __getitem__(self, key):
-                # FIXME Support slice objects.
-                if not isinstance(key, int):
-                    raise TypeError("Must supply a non-negative int.")
-
-                if key < 0:
-                    raise IndexError("Only non-negative indexes are accepted.")
-
-                if key >= len(self):
-                    raise IndexError("Index greater than container length: "
-                                     "%d > %d" % ( key, len(self) ))
-
-                result = conf.lib.clang_getArgType(self.parent, key)
-                if result.kind == TypeKind.INVALID:
-                    raise IndexError("Argument could not be retrieved.")
-
-                return result
-
-        assert self.kind == TypeKind.FUNCTIONPROTO
-        return ArgumentsIterator(self)
-
-    @property
-    def element_type(self):
-        """Retrieve the Type of elements within this Type.
-
-        If accessed on a type that is not an array, complex, or vector type, an
-        exception will be raised.
-        """
-        result = conf.lib.clang_getElementType(self)
-        if result.kind == TypeKind.INVALID:
-            raise Exception('Element type not available on this type.')
-
-        return result
-
-    @property
-    def element_count(self):
-        """Retrieve the number of elements in this type.
-
-        Returns an int.
-
-        If the Type is not an array or vector, this raises.
-        """
-        result = conf.lib.clang_getNumElements(self)
-        if result < 0:
-            raise Exception('Type does not have elements.')
-
-        return result
-
-    @property
-    def translation_unit(self):
-        """The TranslationUnit to which this Type is associated."""
-        # If this triggers an AttributeError, the instance was not properly
-        # instantiated.
-        return self._tu
-
-    @staticmethod
-    def from_result(res, fn, args):
-        assert isinstance(res, Type)
-
-        tu = None
-        for arg in args:
-            if hasattr(arg, 'translation_unit'):
-                tu = arg.translation_unit
-                break
-
-        assert tu is not None
-        res._tu = tu
-
-        return res
-
-    def get_canonical(self):
-        """
-        Return the canonical type for a Type.
-
-        Clang's type system explicitly models typedefs and all the
-        ways a specific type can be represented.  The canonical type
-        is the underlying type with all the "sugar" removed.  For
-        example, if 'T' is a typedef for 'int', the canonical type for
-        'T' would be 'int'.
-        """
-        return conf.lib.clang_getCanonicalType(self)
-
-    def is_const_qualified(self):
-        """Determine whether a Type has the "const" qualifier set.
-
-        This does not look through typedefs that may have added "const"
-        at a different level.
-        """
-        return conf.lib.clang_isConstQualifiedType(self)
-
-    def is_volatile_qualified(self):
-        """Determine whether a Type has the "volatile" qualifier set.
-
-        This does not look through typedefs that may have added "volatile"
-        at a different level.
-        """
-        return conf.lib.clang_isVolatileQualifiedType(self)
-
-    def is_restrict_qualified(self):
-        """Determine whether a Type has the "restrict" qualifier set.
-
-        This does not look through typedefs that may have added "restrict" at
-        a different level.
-        """
-        return conf.lib.clang_isRestrictQualifiedType(self)
-
-    def is_function_variadic(self):
-        """Determine whether this function Type is a variadic function type."""
-        assert self.kind == TypeKind.FUNCTIONPROTO
-
-        return conf.lib.clang_isFunctionTypeVariadic(self)
-
-    def is_pod(self):
-        """Determine whether this Type represents plain old data (POD)."""
-        return conf.lib.clang_isPODType(self)
-
-    def get_pointee(self):
-        """
-        For pointer types, returns the type of the pointee.
-        """
-        return conf.lib.clang_getPointeeType(self)
-
-    def get_declaration(self):
-        """
-        Return the cursor for the declaration of the given type.
-        """
-        return conf.lib.clang_getTypeDeclaration(self)
-
-    def get_result(self):
-        """
-        Retrieve the result type associated with a function type.
-        """
-        return conf.lib.clang_getResultType(self)
-
-    def get_array_element_type(self):
-        """
-        Retrieve the type of the elements of the array type.
-        """
-        return conf.lib.clang_getArrayElementType(self)
-
-    def get_array_size(self):
-        """
-        Retrieve the size of the constant array.
-        """
-        return conf.lib.clang_getArraySize(self)
-
-    def get_align(self):
-        """
-        Retrieve the alignment of the record.
-        """
-        return conf.lib.clang_Type_getAlignOf(self)
-
-    def get_size(self):
-        """
-        Retrieve the size of the record.
-        """
-        return conf.lib.clang_Type_getSizeOf(self)
-
-    def get_offset(self, fieldname):
-        """
-        Retrieve the offset of a field in the record.
-        """
-        return conf.lib.clang_Type_getOffsetOf(self, c_char_p(fieldname))
-
-    def __eq__(self, other):
-        if type(other) != type(self):
-            return False
-
-        return conf.lib.clang_equalTypes(self, other)
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-## CIndex Objects ##
-
-# CIndex objects (derived from ClangObject) are essentially lightweight
-# wrappers attached to some underlying object, which is exposed via CIndex as
-# a void*.
-
-class ClangObject(object):
-    """
-    A helper for Clang objects. This class helps act as an intermediary for
-    the ctypes library and the Clang CIndex library.
-    """
-    def __init__(self, obj):
-        assert isinstance(obj, c_object_p) and obj
-        self.obj = self._as_parameter_ = obj
-
-    def from_param(self):
-        return self._as_parameter_
-
-
-class _CXUnsavedFile(Structure):
-    """Helper for passing unsaved file arguments."""
-    _fields_ = [("name", c_char_p), ("contents", c_char_p), ('length', c_ulong)]
-
-# Functions calls through the python interface are rather slow. Fortunately,
-# for most symboles, we do not need to perform a function call. Their spelling
-# never changes and is consequently provided by this spelling cache.
-SpellingCache = {
-            # 0: CompletionChunk.Kind("Optional"),
-            # 1: CompletionChunk.Kind("TypedText"),
-            # 2: CompletionChunk.Kind("Text"),
-            # 3: CompletionChunk.Kind("Placeholder"),
-            # 4: CompletionChunk.Kind("Informative"),
-            # 5 : CompletionChunk.Kind("CurrentParameter"),
-            6: '(',   # CompletionChunk.Kind("LeftParen"),
-            7: ')',   # CompletionChunk.Kind("RightParen"),
-            8: ']',   # CompletionChunk.Kind("LeftBracket"),
-            9: ']',   # CompletionChunk.Kind("RightBracket"),
-            10: '{',  # CompletionChunk.Kind("LeftBrace"),
-            11: '}',  # CompletionChunk.Kind("RightBrace"),
-            12: '<',  # CompletionChunk.Kind("LeftAngle"),
-            13: '>',  # CompletionChunk.Kind("RightAngle"),
-            14: ', ', # CompletionChunk.Kind("Comma"),
-            # 15: CompletionChunk.Kind("ResultType"),
-            16: ':',  # CompletionChunk.Kind("Colon"),
-            17: ';',  # CompletionChunk.Kind("SemiColon"),
-            18: '=',  # CompletionChunk.Kind("Equal"),
-            19: ' ',  # CompletionChunk.Kind("HorizontalSpace"),
-            # 20: CompletionChunk.Kind("VerticalSpace")
-}
-
-class CompletionChunk:
-    class Kind:
-        def __init__(self, name):
-            self.name = name
-
-        def __str__(self):
-            return self.name
-
-        def __repr__(self):
-            return "<ChunkKind: %s>" % self
-
-    def __init__(self, completionString, key):
-        self.cs = completionString
-        self.key = key
-        self.__kindNumberCache = -1
-
-    def __repr__(self):
-        return "{'" + self.spelling + "', " + str(self.kind) + "}"
-
-    @CachedProperty
-    def spelling(self):
-        if self.__kindNumber in SpellingCache:
-                return SpellingCache[self.__kindNumber]
-        return conf.lib.clang_getCompletionChunkText(self.cs, self.key).spelling
-
-    # We do not use @CachedProperty here, as the manual implementation is
-    # apparently still significantly faster. Please profile carefully if you
-    # would like to add CachedProperty back.
-    @property
-    def __kindNumber(self):
-        if self.__kindNumberCache == -1:
-            self.__kindNumberCache = \
-                conf.lib.clang_getCompletionChunkKind(self.cs, self.key)
-        return self.__kindNumberCache
-
-    @CachedProperty
-    def kind(self):
-        return completionChunkKindMap[self.__kindNumber]
-
-    @CachedProperty
-    def string(self):
-        res = conf.lib.clang_getCompletionChunkCompletionString(self.cs,
-                                                                self.key)
-
-        if (res):
-          return CompletionString(res)
-        else:
-          None
-
-    def isKindOptional(self):
-      return self.__kindNumber == 0
-
-    def isKindTypedText(self):
-      return self.__kindNumber == 1
-
-    def isKindPlaceHolder(self):
-      return self.__kindNumber == 3
-
-    def isKindInformative(self):
-      return self.__kindNumber == 4
-
-    def isKindResultType(self):
-      return self.__kindNumber == 15
-
-completionChunkKindMap = {
-            0: CompletionChunk.Kind("Optional"),
-            1: CompletionChunk.Kind("TypedText"),
-            2: CompletionChunk.Kind("Text"),
-            3: CompletionChunk.Kind("Placeholder"),
-            4: CompletionChunk.Kind("Informative"),
-            5: CompletionChunk.Kind("CurrentParameter"),
-            6: CompletionChunk.Kind("LeftParen"),
-            7: CompletionChunk.Kind("RightParen"),
-            8: CompletionChunk.Kind("LeftBracket"),
-            9: CompletionChunk.Kind("RightBracket"),
-            10: CompletionChunk.Kind("LeftBrace"),
-            11: CompletionChunk.Kind("RightBrace"),
-            12: CompletionChunk.Kind("LeftAngle"),
-            13: CompletionChunk.Kind("RightAngle"),
-            14: CompletionChunk.Kind("Comma"),
-            15: CompletionChunk.Kind("ResultType"),
-            16: CompletionChunk.Kind("Colon"),
-            17: CompletionChunk.Kind("SemiColon"),
-            18: CompletionChunk.Kind("Equal"),
-            19: CompletionChunk.Kind("HorizontalSpace"),
-            20: CompletionChunk.Kind("VerticalSpace")}
-
-class CompletionString(ClangObject):
-    class Availability:
-        def __init__(self, name):
-            self.name = name
-
-        def __str__(self):
-            return self.name
-
-        def __repr__(self):
-            return "<Availability: %s>" % self
-
-    def __len__(self):
-        self.num_chunks
-
-    @CachedProperty
-    def num_chunks(self):
-        return conf.lib.clang_getNumCompletionChunks(self.obj)
-
-    def __getitem__(self, key):
-        if self.num_chunks <= key:
-            raise IndexError
-        return CompletionChunk(self.obj, key)
-
-    @property
-    def priority(self):
-        return conf.lib.clang_getCompletionPriority(self.obj)
-
-    @property
-    def availability(self):
-        res = conf.lib.clang_getCompletionAvailability(self.obj)
-        return availabilityKinds[res]
-
-    @property
-    def briefComment(self):
-        if conf.function_exists("clang_getCompletionBriefComment"):
-            return conf.lib.clang_getCompletionBriefComment(self.obj)
-        return _CXString()
-
-    def __repr__(self):
-        return " | ".join([str(a) for a in self]) \
-               + " || Priority: " + str(self.priority) \
-               + " || Availability: " + str(self.availability) \
-               + " || Brief comment: " + str(self.briefComment.spelling)
-
-availabilityKinds = {
-            0: CompletionChunk.Kind("Available"),
-            1: CompletionChunk.Kind("Deprecated"),
-            2: CompletionChunk.Kind("NotAvailable"),
-            3: CompletionChunk.Kind("NotAccessible")}
-
-class CodeCompletionResult(Structure):
-    _fields_ = [('cursorKind', c_int), ('completionString', c_object_p)]
-
-    def __repr__(self):
-        return str(CompletionString(self.completionString))
-
-    @property
-    def kind(self):
-        return CursorKind.from_id(self.cursorKind)
-
-    @property
-    def string(self):
-        return CompletionString(self.completionString)
-
-class CCRStructure(Structure):
-    _fields_ = [('results', POINTER(CodeCompletionResult)),
-                ('numResults', c_int)]
-
-    def __len__(self):
-        return self.numResults
-
-    def __getitem__(self, key):
-        if len(self) <= key:
-            raise IndexError
-
-        return self.results[key]
-
-class CodeCompletionResults(ClangObject):
-    def __init__(self, ptr):
-        assert isinstance(ptr, POINTER(CCRStructure)) and ptr
-        self.ptr = self._as_parameter_ = ptr
-
-    def from_param(self):
-        return self._as_parameter_
-
-    def __del__(self):
-        conf.lib.clang_disposeCodeCompleteResults(self)
-
-    @property
-    def results(self):
-        return self.ptr.contents
-
-    @property
-    def diagnostics(self):
-        class DiagnosticsItr:
-            def __init__(self, ccr):
-                self.ccr= ccr
-
-            def __len__(self):
-                return int(\
-                  conf.lib.clang_codeCompleteGetNumDiagnostics(self.ccr))
-
-            def __getitem__(self, key):
-                return conf.lib.clang_codeCompleteGetDiagnostic(self.ccr, key)
-
-        return DiagnosticsItr(self)
-
-
-class Index(ClangObject):
-    """
-    The Index type provides the primary interface to the Clang CIndex library,
-    primarily by providing an interface for reading and parsing translation
-    units.
-    """
-
-    @staticmethod
-    def create(excludeDecls=False):
-        """
-        Create a new Index.
-        Parameters:
-        excludeDecls -- Exclude local declarations from translation units.
-        """
-        return Index(conf.lib.clang_createIndex(excludeDecls, 0))
-
-    def __del__(self):
-        conf.lib.clang_disposeIndex(self)
-
-    def read(self, path):
-        """Load a TranslationUnit from the given AST file."""
-        return TranslationUnit.from_ast(path, self)
-
-    def parse(self, path, args=None, unsaved_files=None, options = 0):
-        """Load the translation unit from the given source code file by running
-        clang and generating the AST before loading. Additional command line
-        parameters can be passed to clang via the args parameter.
-
-        In-memory contents for files can be provided by passing a list of pairs
-        to as unsaved_files, the first item should be the filenames to be mapped
-        and the second should be the contents to be substituted for the
-        file. The contents may be passed as strings or file objects.
-
-        If an error was encountered during parsing, a TranslationUnitLoadError
-        will be raised.
-        """
-        return TranslationUnit.from_source(path, args, unsaved_files, options,
-                                           self)
-
-class TranslationUnit(ClangObject):
-    """Represents a source code translation unit.
-
-    This is one of the main types in the API. Any time you wish to interact
-    with Clang's representation of a source file, you typically start with a
-    translation unit.
-    """
-
-    # Default parsing mode.
-    PARSE_NONE = 0
-
-    # Instruct the parser to create a detailed processing record containing
-    # metadata not normally retained.
-    PARSE_DETAILED_PROCESSING_RECORD = 1
-
-    # Indicates that the translation unit is incomplete. This is typically used
-    # when parsing headers.
-    PARSE_INCOMPLETE = 2
-
-    # Instruct the parser to create a pre-compiled preamble for the translation
-    # unit. This caches the preamble (included files at top of source file).
-    # This is useful if the translation unit will be reparsed and you don't
-    # want to incur the overhead of reparsing the preamble.
-    PARSE_PRECOMPILED_PREAMBLE = 4
-
-    # Cache code completion information on parse. This adds time to parsing but
-    # speeds up code completion.
-    PARSE_CACHE_COMPLETION_RESULTS = 8
-
-    # Flags with values 16 and 32 are deprecated and intentionally omitted.
-
-    # Do not parse function bodies. This is useful if you only care about
-    # searching for declarations/definitions.
-    PARSE_SKIP_FUNCTION_BODIES = 64
-
-    # Used to indicate that brief documentation comments should be included
-    # into the set of code completions returned from this translation unit.
-    PARSE_INCLUDE_BRIEF_COMMENTS_IN_CODE_COMPLETION = 128
-
-    @classmethod
-    def from_source(cls, filename, args=None, unsaved_files=None, options=0,
-                    index=None):
-        """Create a TranslationUnit by parsing source.
-
-        This is capable of processing source code both from files on the
-        filesystem as well as in-memory contents.
-
-        Command-line arguments that would be passed to clang are specified as
-        a list via args. These can be used to specify include paths, warnings,
-        etc. e.g. ["-Wall", "-I/path/to/include"].
-
-        In-memory file content can be provided via unsaved_files. This is an
-        iterable of 2-tuples. The first element is the str filename. The
-        second element defines the content. Content can be provided as str
-        source code or as file objects (anything with a read() method). If
-        a file object is being used, content will be read until EOF and the
-        read cursor will not be reset to its original position.
-
-        options is a bitwise or of TranslationUnit.PARSE_XXX flags which will
-        control parsing behavior.
-
-        index is an Index instance to utilize. If not provided, a new Index
-        will be created for this TranslationUnit.
-
-        To parse source from the filesystem, the filename of the file to parse
-        is specified by the filename argument. Or, filename could be None and
-        the args list would contain the filename(s) to parse.
-
-        To parse source from an in-memory buffer, set filename to the virtual
-        filename you wish to associate with this source (e.g. "test.c"). The
-        contents of that file are then provided in unsaved_files.
-
-        If an error occurs, a TranslationUnitLoadError is raised.
-
-        Please note that a TranslationUnit with parser errors may be returned.
-        It is the caller's responsibility to check tu.diagnostics for errors.
-
-        Also note that Clang infers the source language from the extension of
-        the input filename. If you pass in source code containing a C++ class
-        declaration with the filename "test.c" parsing will fail.
-        """
-        if args is None:
-            args = []
-
-        if unsaved_files is None:
-            unsaved_files = []
-
-        if index is None:
-            index = Index.create()
-
-        args_array = None
-        if len(args) > 0:
-            args_array = (c_char_p * len(args))(* args)
-
-        unsaved_array = None
-        if len(unsaved_files) > 0:
-            unsaved_array = (_CXUnsavedFile * len(unsaved_files))()
-            for i, (name, contents) in enumerate(unsaved_files):
-                if hasattr(contents, "read"):
-                    contents = contents.read()
-
-                unsaved_array[i].name = name
-                unsaved_array[i].contents = contents
-                unsaved_array[i].length = len(contents)
-
-        ptr = conf.lib.clang_parseTranslationUnit(index, filename, args_array,
-                                    len(args), unsaved_array,
-                                    len(unsaved_files), options)
-
-        if not ptr:
-            raise TranslationUnitLoadError("Error parsing translation unit.")
-
-        return cls(ptr, index=index)
-
-    @classmethod
-    def from_ast_file(cls, filename, index=None):
-        """Create a TranslationUnit instance from a saved AST file.
-
-        A previously-saved AST file (provided with -emit-ast or
-        TranslationUnit.save()) is loaded from the filename specified.
-
-        If the file cannot be loaded, a TranslationUnitLoadError will be
-        raised.
-
-        index is optional and is the Index instance to use. If not provided,
-        a default Index will be created.
-        """
-        if index is None:
-            index = Index.create()
-
-        ptr = conf.lib.clang_createTranslationUnit(index, filename)
-        if not ptr:
-            raise TranslationUnitLoadError(filename)
-
-        return cls(ptr=ptr, index=index)
-
-    def __init__(self, ptr, index):
-        """Create a TranslationUnit instance.
-
-        TranslationUnits should be created using one of the from_* @classmethod
-        functions above. __init__ is only called internally.
-        """
-        assert isinstance(index, Index)
-
-        ClangObject.__init__(self, ptr)
-
-    def __del__(self):
-        conf.lib.clang_disposeTranslationUnit(self)
-
-    @property
-    def cursor(self):
-        """Retrieve the cursor that represents the given translation unit."""
-        return conf.lib.clang_getTranslationUnitCursor(self)
-
-    @property
-    def spelling(self):
-        """Get the original translation unit source file name."""
-        return conf.lib.clang_getTranslationUnitSpelling(self)
-
-    def get_includes(self):
-        """
-        Return an iterable sequence of FileInclusion objects that describe the
-        sequence of inclusions in a translation unit. The first object in
-        this sequence is always the input file. Note that this method will not
-        recursively iterate over header files included through precompiled
-        headers.
-        """
-        def visitor(fobj, lptr, depth, includes):
-            if depth > 0:
-                loc = lptr.contents
-                includes.append(FileInclusion(loc.file, File(fobj), loc, depth))
-
-        # Automatically adapt CIndex/ctype pointers to python objects
-        includes = []
-        conf.lib.clang_getInclusions(self,
-                callbacks['translation_unit_includes'](visitor), includes)
-
-        return iter(includes)
-
-    def get_file(self, filename):
-        """Obtain a File from this translation unit."""
-
-        return File.from_name(self, filename)
-
-    def get_location(self, filename, position):
-        """Obtain a SourceLocation for a file in this translation unit.
-
-        The position can be specified by passing:
-
-          - Integer file offset. Initial file offset is 0.
-          - 2-tuple of (line number, column number). Initial file position is
-            (0, 0)
-        """
-        f = self.get_file(filename)
-
-        if isinstance(position, int):
-            return SourceLocation.from_offset(self, f, position)
-
-        return SourceLocation.from_position(self, f, position[0], position[1])
-
-    def get_extent(self, filename, locations):
-        """Obtain a SourceRange from this translation unit.
-
-        The bounds of the SourceRange must ultimately be defined by a start and
-        end SourceLocation. For the locations argument, you can pass:
-
-          - 2 SourceLocation instances in a 2-tuple or list.
-          - 2 int file offsets via a 2-tuple or list.
-          - 2 2-tuple or lists of (line, column) pairs in a 2-tuple or list.
-
-        e.g.
-
-        get_extent('foo.c', (5, 10))
-        get_extent('foo.c', ((1, 1), (1, 15)))
-        """
-        f = self.get_file(filename)
-
-        if len(locations) < 2:
-            raise Exception('Must pass object with at least 2 elements')
-
-        start_location, end_location = locations
-
-        if hasattr(start_location, '__len__'):
-            start_location = SourceLocation.from_position(self, f,
-                start_location[0], start_location[1])
-        elif isinstance(start_location, int):
-            start_location = SourceLocation.from_offset(self, f,
-                start_location)
-
-        if hasattr(end_location, '__len__'):
-            end_location = SourceLocation.from_position(self, f,
-                end_location[0], end_location[1])
-        elif isinstance(end_location, int):
-            end_location = SourceLocation.from_offset(self, f, end_location)
-
-        assert isinstance(start_location, SourceLocation)
-        assert isinstance(end_location, SourceLocation)
-
-        return SourceRange.from_locations(start_location, end_location)
-
-    @property
-    def diagnostics(self):
-        """
-        Return an iterable (and indexable) object containing the diagnostics.
-        """
-        class DiagIterator:
-            def __init__(self, tu):
-                self.tu = tu
-
-            def __len__(self):
-                return int(conf.lib.clang_getNumDiagnostics(self.tu))
-
-            def __getitem__(self, key):
-                diag = conf.lib.clang_getDiagnostic(self.tu, key)
-                if not diag:
-                    raise IndexError
-                return Diagnostic(diag)
-
-        return DiagIterator(self)
-
-    def reparse(self, unsaved_files=None, options=0):
-        """
-        Reparse an already parsed translation unit.
-
-        In-memory contents for files can be provided by passing a list of pairs
-        as unsaved_files, the first items should be the filenames to be mapped
-        and the second should be the contents to be substituted for the
-        file. The contents may be passed as strings or file objects.
-        """
-        if unsaved_files is None:
-            unsaved_files = []
-
-        unsaved_files_array = 0
-        if len(unsaved_files):
-            unsaved_files_array = (_CXUnsavedFile * len(unsaved_files))()
-            for i,(name,value) in enumerate(unsaved_files):
-                if not isinstance(value, str):
-                    # FIXME: It would be great to support an efficient version
-                    # of this, one day.
-                    value = value.read()
-                    print value
-                if not isinstance(value, str):
-                    raise TypeError,'Unexpected unsaved file contents.'
-                unsaved_files_array[i].name = name
-                unsaved_files_array[i].contents = value
-                unsaved_files_array[i].length = len(value)
-        ptr = conf.lib.clang_reparseTranslationUnit(self, len(unsaved_files),
-                unsaved_files_array, options)
-
-    def save(self, filename):
-        """Saves the TranslationUnit to a file.
-
-        This is equivalent to passing -emit-ast to the clang frontend. The
-        saved file can be loaded back into a TranslationUnit. Or, if it
-        corresponds to a header, it can be used as a pre-compiled header file.
-
-        If an error occurs while saving, a TranslationUnitSaveError is raised.
-        If the error was TranslationUnitSaveError.ERROR_INVALID_TU, this means
-        the constructed TranslationUnit was not valid at time of save. In this
-        case, the reason(s) why should be available via
-        TranslationUnit.diagnostics().
-
-        filename -- The path to save the translation unit to.
-        """
-        options = conf.lib.clang_defaultSaveOptions(self)
-        result = int(conf.lib.clang_saveTranslationUnit(self, filename,
-                                                        options))
-        if result != 0:
-            raise TranslationUnitSaveError(result,
-                'Error saving TranslationUnit.')
-
-    def codeComplete(self, path, line, column, unsaved_files=None,
-                     include_macros=False, include_code_patterns=False,
-                     include_brief_comments=False):
-        """
-        Code complete in this translation unit.
-
-        In-memory contents for files can be provided by passing a list of pairs
-        as unsaved_files, the first items should be the filenames to be mapped
-        and the second should be the contents to be substituted for the
-        file. The contents may be passed as strings or file objects.
-        """
-        options = 0
-
-        if include_macros:
-            options += 1
-
-        if include_code_patterns:
-            options += 2
-
-        if include_brief_comments:
-            options += 4
-
-        if unsaved_files is None:
-            unsaved_files = []
-
-        unsaved_files_array = 0
-        if len(unsaved_files):
-            unsaved_files_array = (_CXUnsavedFile * len(unsaved_files))()
-            for i,(name,value) in enumerate(unsaved_files):
-                if not isinstance(value, str):
-                    # FIXME: It would be great to support an efficient version
-                    # of this, one day.
-                    value = value.read()
-                    print value
-                if not isinstance(value, str):
-                    raise TypeError,'Unexpected unsaved file contents.'
-                unsaved_files_array[i].name = name
-                unsaved_files_array[i].contents = value
-                unsaved_files_array[i].length = len(value)
-        ptr = conf.lib.clang_codeCompleteAt(self, path, line, column,
-                unsaved_files_array, len(unsaved_files), options)
-        if ptr:
-            return CodeCompletionResults(ptr)
-        return None
-
-    def get_tokens(self, locations=None, extent=None):
-        """Obtain tokens in this translation unit.
-
-        This is a generator for Token instances. The caller specifies a range
-        of source code to obtain tokens for. The range can be specified as a
-        2-tuple of SourceLocation or as a SourceRange. If both are defined,
-        behavior is undefined.
-        """
-        if locations is not None:
-            extent = SourceRange(start=locations[0], end=locations[1])
-
-        return TokenGroup.get_tokens(self, extent)
-
-class File(ClangObject):
-    """
-    The File class represents a particular source file that is part of a
-    translation unit.
-    """
-
-    @staticmethod
-    def from_name(translation_unit, file_name):
-        """Retrieve a file handle within the given translation unit."""
-        return File(conf.lib.clang_getFile(translation_unit, file_name))
-
-    @property
-    def name(self):
-        """Return the complete file and path name of the file."""
-        return conf.lib.clang_getCString(conf.lib.clang_getFileName(self))
-
-    @property
-    def time(self):
-        """Return the last modification time of the file."""
-        return conf.lib.clang_getFileTime(self)
-
-    def __str__(self):
-        return self.name
-
-    def __repr__(self):
-        return "<File: %s>" % (self.name)
-
-    @staticmethod
-    def from_cursor_result(res, fn, args):
-        assert isinstance(res, File)
-
-        # Copy a reference to the TranslationUnit to prevent premature GC.
-        res._tu = args[0]._tu
-        return res
-
-class FileInclusion(object):
-    """
-    The FileInclusion class represents the inclusion of one source file by
-    another via a '#include' directive or as the input file for the translation
-    unit. This class provides information about the included file, the including
-    file, the location of the '#include' directive and the depth of the included
-    file in the stack. Note that the input file has depth 0.
-    """
-
-    def __init__(self, src, tgt, loc, depth):
-        self.source = src
-        self.include = tgt
-        self.location = loc
-        self.depth = depth
-
-    @property
-    def is_input_file(self):
-        """True if the included file is the input file."""
-        return self.depth == 0
-
-class CompilationDatabaseError(Exception):
-    """Represents an error that occurred when working with a CompilationDatabase
-
-    Each error is associated to an enumerated value, accessible under
-    e.cdb_error. Consumers can compare the value with one of the ERROR_
-    constants in this class.
-    """
-
-    # An unknown error occured
-    ERROR_UNKNOWN = 0
-
-    # The database could not be loaded
-    ERROR_CANNOTLOADDATABASE = 1
-
-    def __init__(self, enumeration, message):
-        assert isinstance(enumeration, int)
-
-        if enumeration > 1:
-            raise Exception("Encountered undefined CompilationDatabase error "
-                            "constant: %d. Please file a bug to have this "
-                            "value supported." % enumeration)
-
-        self.cdb_error = enumeration
-        Exception.__init__(self, 'Error %d: %s' % (enumeration, message))
-
-class CompileCommand(object):
-    """Represents the compile command used to build a file"""
-    def __init__(self, cmd, ccmds):
-        self.cmd = cmd
-        # Keep a reference to the originating CompileCommands
-        # to prevent garbage collection
-        self.ccmds = ccmds
-
-    @property
-    def directory(self):
-        """Get the working directory for this CompileCommand"""
-        return conf.lib.clang_CompileCommand_getDirectory(self.cmd)
-
-    @property
-    def arguments(self):
-        """
-        Get an iterable object providing each argument in the
-        command line for the compiler invocation as a _CXString.
-
-        Invariant : the first argument is the compiler executable
-        """
-        length = conf.lib.clang_CompileCommand_getNumArgs(self.cmd)
-        for i in xrange(length):
-            yield conf.lib.clang_CompileCommand_getArg(self.cmd, i)
-
-class CompileCommands(object):
-    """
-    CompileCommands is an iterable object containing all CompileCommand
-    that can be used for building a specific file.
-    """
-    def __init__(self, ccmds):
-        self.ccmds = ccmds
-
-    def __del__(self):
-        conf.lib.clang_CompileCommands_dispose(self.ccmds)
-
-    def __len__(self):
-        return int(conf.lib.clang_CompileCommands_getSize(self.ccmds))
-
-    def __getitem__(self, i):
-        cc = conf.lib.clang_CompileCommands_getCommand(self.ccmds, i)
-        if not cc:
-            raise IndexError
-        return CompileCommand(cc, self)
-
-    @staticmethod
-    def from_result(res, fn, args):
-        if not res:
-            return None
-        return CompileCommands(res)
-
-class CompilationDatabase(ClangObject):
-    """
-    The CompilationDatabase is a wrapper class around
-    clang::tooling::CompilationDatabase
-
-    It enables querying how a specific source file can be built.
-    """
-
-    def __del__(self):
-        conf.lib.clang_CompilationDatabase_dispose(self)
-
-    @staticmethod
-    def from_result(res, fn, args):
-        if not res:
-            raise CompilationDatabaseError(0,
-                                           "CompilationDatabase loading failed")
-        return CompilationDatabase(res)
-
-    @staticmethod
-    def fromDirectory(buildDir):
-        """Builds a CompilationDatabase from the database found in buildDir"""
-        errorCode = c_uint()
-        try:
-            cdb = conf.lib.clang_CompilationDatabase_fromDirectory(buildDir,
-                byref(errorCode))
-        except CompilationDatabaseError as e:
-            raise CompilationDatabaseError(int(errorCode.value),
-                                           "CompilationDatabase loading failed")
-        return cdb
-
-    def getCompileCommands(self, filename):
-        """
-        Get an iterable object providing all the CompileCommands available to
-        build filename. Returns None if filename is not found in the database.
-        """
-        return conf.lib.clang_CompilationDatabase_getCompileCommands(self,
-                                                                     filename)
-
-class Token(Structure):
-    """Represents a single token from the preprocessor.
-
-    Tokens are effectively segments of source code. Source code is first parsed
-    into tokens before being converted into the AST and Cursors.
-
-    Tokens are obtained from parsed TranslationUnit instances. You currently
-    can't create tokens manually.
-    """
-    _fields_ = [
-        ('int_data', c_uint * 4),
-        ('ptr_data', c_void_p)
-    ]
-
-    @property
-    def spelling(self):
-        """The spelling of this token.
-
-        This is the textual representation of the token in source.
-        """
-        return conf.lib.clang_getTokenSpelling(self._tu, self)
-
-    @property
-    def kind(self):
-        """Obtain the TokenKind of the current token."""
-        return TokenKind.from_value(conf.lib.clang_getTokenKind(self))
-
-    @property
-    def location(self):
-        """The SourceLocation this Token occurs at."""
-        return conf.lib.clang_getTokenLocation(self._tu, self)
-
-    @property
-    def extent(self):
-        """The SourceRange this Token occupies."""
-        return conf.lib.clang_getTokenExtent(self._tu, self)
-
-    @property
-    def cursor(self):
-        """The Cursor this Token corresponds to."""
-        cursor = Cursor()
-
-        conf.lib.clang_annotateTokens(self._tu, byref(self), 1, byref(cursor))
-
-        return cursor
-
-# Now comes the plumbing to hook up the C library.
-
-# Register callback types in common container.
-callbacks['translation_unit_includes'] = CFUNCTYPE(None, c_object_p,
-        POINTER(SourceLocation), c_uint, py_object)
-callbacks['cursor_visit'] = CFUNCTYPE(c_int, Cursor, Cursor, py_object)
-
-# Functions strictly alphabetical order.
-functionList = [
-  ("clang_annotateTokens",
-   [TranslationUnit, POINTER(Token), c_uint, POINTER(Cursor)]),
-
-  ("clang_CompilationDatabase_dispose",
-   [c_object_p]),
-
-  ("clang_CompilationDatabase_fromDirectory",
-   [c_char_p, POINTER(c_uint)],
-   c_object_p,
-   CompilationDatabase.from_result),
-
-  ("clang_CompilationDatabase_getCompileCommands",
-   [c_object_p, c_char_p],
-   c_object_p,
-   CompileCommands.from_result),
-
-  ("clang_CompileCommands_dispose",
-   [c_object_p]),
-
-  ("clang_CompileCommands_getCommand",
-   [c_object_p, c_uint],
-   c_object_p),
-
-  ("clang_CompileCommands_getSize",
-   [c_object_p],
-   c_uint),
-
-  ("clang_CompileCommand_getArg",
-   [c_object_p, c_uint],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_CompileCommand_getDirectory",
-   [c_object_p],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_CompileCommand_getNumArgs",
-   [c_object_p],
-   c_uint),
-
-  ("clang_codeCompleteAt",
-   [TranslationUnit, c_char_p, c_int, c_int, c_void_p, c_int, c_int],
-   POINTER(CCRStructure)),
-
-  ("clang_codeCompleteGetDiagnostic",
-   [CodeCompletionResults, c_int],
-   Diagnostic),
-
-  ("clang_codeCompleteGetNumDiagnostics",
-   [CodeCompletionResults],
-   c_int),
-
-  ("clang_createIndex",
-   [c_int, c_int],
-   c_object_p),
-
-  ("clang_createTranslationUnit",
-   [Index, c_char_p],
-   c_object_p),
-
-  ("clang_CXXMethod_isStatic",
-   [Cursor],
-   bool),
-
-  ("clang_CXXMethod_isVirtual",
-   [Cursor],
-   bool),
-
-  ("clang_defaultSaveOptions",
-   [TranslationUnit],
-   c_uint),
-
-  ("clang_disposeCodeCompleteResults",
-   [CodeCompletionResults]),
-
-# ("clang_disposeCXTUResourceUsage",
-#  [CXTUResourceUsage]),
-
-  ("clang_disposeDiagnostic",
-   [Diagnostic]),
-
-  ("clang_disposeIndex",
-   [Index]),
-
-  ("clang_disposeString",
-   [_CXString]),
-
-  ("clang_disposeTokens",
-   [TranslationUnit, POINTER(Token), c_uint]),
-
-  ("clang_disposeTranslationUnit",
-   [TranslationUnit]),
-
-  ("clang_equalCursors",
-   [Cursor, Cursor],
-   bool),
-
-  ("clang_equalLocations",
-   [SourceLocation, SourceLocation],
-   bool),
-
-  ("clang_equalRanges",
-   [SourceRange, SourceRange],
-   bool),
-
-  ("clang_equalTypes",
-   [Type, Type],
-   bool),
-
-  ("clang_getArgType",
-   [Type, c_uint],
-   Type,
-   Type.from_result),
-
-  ("clang_getArrayElementType",
-   [Type],
-   Type,
-   Type.from_result),
-
-  ("clang_getArraySize",
-   [Type],
-   c_longlong),
-
-  ("clang_getFieldDeclBitWidth",
-   [Cursor],
-   c_int),
-
-  ("clang_getCanonicalCursor",
-   [Cursor],
-   Cursor,
-   Cursor.from_cursor_result),
-
-  ("clang_getCanonicalType",
-   [Type],
-   Type,
-   Type.from_result),
-
-  ("clang_getCompletionAvailability",
-   [c_void_p],
-   c_int),
-
-  ("clang_getCompletionBriefComment",
-   [c_void_p],
-   _CXString),
-
-  ("clang_getCompletionChunkCompletionString",
-   [c_void_p, c_int],
-   c_object_p),
-
-  ("clang_getCompletionChunkKind",
-   [c_void_p, c_int],
-   c_int),
-
-  ("clang_getCompletionChunkText",
-   [c_void_p, c_int],
-   _CXString),
-
-  ("clang_getCompletionPriority",
-   [c_void_p],
-   c_int),
-
-  ("clang_getCString",
-   [_CXString],
-   c_char_p),
-
-  ("clang_getCursor",
-   [TranslationUnit, SourceLocation],
-   Cursor),
-
-  ("clang_getCursorDefinition",
-   [Cursor],
-   Cursor,
-   Cursor.from_result),
-
-  ("clang_getCursorDisplayName",
-   [Cursor],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getCursorExtent",
-   [Cursor],
-   SourceRange),
-
-  ("clang_getCursorLexicalParent",
-   [Cursor],
-   Cursor,
-   Cursor.from_cursor_result),
-
-  ("clang_getCursorLocation",
-   [Cursor],
-   SourceLocation),
-
-  ("clang_getCursorReferenced",
-   [Cursor],
-   Cursor,
-   Cursor.from_result),
-
-  ("clang_getCursorReferenceNameRange",
-   [Cursor, c_uint, c_uint],
-   SourceRange),
-
-  ("clang_getCursorSemanticParent",
-   [Cursor],
-   Cursor,
-   Cursor.from_cursor_result),
-
-  ("clang_getCursorSpelling",
-   [Cursor],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getCursorType",
-   [Cursor],
-   Type,
-   Type.from_result),
-
-  ("clang_getCursorUSR",
-   [Cursor],
-   _CXString,
-   _CXString.from_result),
-
-# ("clang_getCXTUResourceUsage",
-#  [TranslationUnit],
-#  CXTUResourceUsage),
-
-  ("clang_getCXXAccessSpecifier",
-   [Cursor],
-   c_uint),
-
-  ("clang_getDeclObjCTypeEncoding",
-   [Cursor],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getDiagnostic",
-   [c_object_p, c_uint],
-   c_object_p),
-
-  ("clang_getDiagnosticCategory",
-   [Diagnostic],
-   c_uint),
-
-  ("clang_getDiagnosticCategoryName",
-   [c_uint],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getDiagnosticFixIt",
-   [Diagnostic, c_uint, POINTER(SourceRange)],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getDiagnosticLocation",
-   [Diagnostic],
-   SourceLocation),
-
-  ("clang_getDiagnosticNumFixIts",
-   [Diagnostic],
-   c_uint),
-
-  ("clang_getDiagnosticNumRanges",
-   [Diagnostic],
-   c_uint),
-
-  ("clang_getDiagnosticOption",
-   [Diagnostic, POINTER(_CXString)],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getDiagnosticRange",
-   [Diagnostic, c_uint],
-   SourceRange),
-
-  ("clang_getDiagnosticSeverity",
-   [Diagnostic],
-   c_int),
-
-  ("clang_getDiagnosticSpelling",
-   [Diagnostic],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getElementType",
-   [Type],
-   Type,
-   Type.from_result),
-
-  ("clang_getEnumConstantDeclUnsignedValue",
-   [Cursor],
-   c_ulonglong),
-
-  ("clang_getEnumConstantDeclValue",
-   [Cursor],
-   c_longlong),
-
-  ("clang_getEnumDeclIntegerType",
-   [Cursor],
-   Type,
-   Type.from_result),
-
-  ("clang_getFile",
-   [TranslationUnit, c_char_p],
-   c_object_p),
-
-  ("clang_getFileName",
-   [File],
-   _CXString), # TODO go through _CXString.from_result?
-
-  ("clang_getFileTime",
-   [File],
-   c_uint),
-
-  ("clang_getIBOutletCollectionType",
-   [Cursor],
-   Type,
-   Type.from_result),
-
-  ("clang_getIncludedFile",
-   [Cursor],
-   File,
-   File.from_cursor_result),
-
-  ("clang_getInclusions",
-   [TranslationUnit, callbacks['translation_unit_includes'], py_object]),
-
-  ("clang_getInstantiationLocation",
-   [SourceLocation, POINTER(c_object_p), POINTER(c_uint), POINTER(c_uint),
-    POINTER(c_uint)]),
-
-  ("clang_getLocation",
-   [TranslationUnit, File, c_uint, c_uint],
-   SourceLocation),
-
-  ("clang_getLocationForOffset",
-   [TranslationUnit, File, c_uint],
-   SourceLocation),
-
-  ("clang_getNullCursor",
-   None,
-   Cursor),
-
-  ("clang_getNumArgTypes",
-   [Type],
-   c_uint),
-
-  ("clang_getNumCompletionChunks",
-   [c_void_p],
-   c_int),
-
-  ("clang_getNumDiagnostics",
-   [c_object_p],
-   c_uint),
-
-  ("clang_getNumElements",
-   [Type],
-   c_longlong),
-
-  ("clang_getNumOverloadedDecls",
-   [Cursor],
-   c_uint),
-
-  ("clang_getOverloadedDecl",
-   [Cursor, c_uint],
-   Cursor,
-   Cursor.from_cursor_result),
-
-  ("clang_getPointeeType",
-   [Type],
-   Type,
-   Type.from_result),
-
-  ("clang_getRange",
-   [SourceLocation, SourceLocation],
-   SourceRange),
-
-  ("clang_getRangeEnd",
-   [SourceRange],
-   SourceLocation),
-
-  ("clang_getRangeStart",
-   [SourceRange],
-   SourceLocation),
-
-  ("clang_getResultType",
-   [Type],
-   Type,
-   Type.from_result),
-
-  ("clang_getSpecializedCursorTemplate",
-   [Cursor],
-   Cursor,
-   Cursor.from_cursor_result),
-
-  ("clang_getTemplateCursorKind",
-   [Cursor],
-   c_uint),
-
-  ("clang_getTokenExtent",
-   [TranslationUnit, Token],
-   SourceRange),
-
-  ("clang_getTokenKind",
-   [Token],
-   c_uint),
-
-  ("clang_getTokenLocation",
-   [TranslationUnit, Token],
-   SourceLocation),
-
-  ("clang_getTokenSpelling",
-   [TranslationUnit, Token],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getTranslationUnitCursor",
-   [TranslationUnit],
-   Cursor,
-   Cursor.from_result),
-
-  ("clang_getTranslationUnitSpelling",
-   [TranslationUnit],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_getTUResourceUsageName",
-   [c_uint],
-   c_char_p),
-
-  ("clang_getTypeDeclaration",
-   [Type],
-   Cursor,
-   Cursor.from_result),
-
-  ("clang_getTypedefDeclUnderlyingType",
-   [Cursor],
-   Type,
-   Type.from_result),
-
-  ("clang_getTypeKindSpelling",
-   [c_uint],
-   _CXString,
-   _CXString.from_result),
-
-  ("clang_hashCursor",
-   [Cursor],
-   c_uint),
-
-  ("clang_isAttribute",
-   [CursorKind],
-   bool),
-
-  ("clang_isConstQualifiedType",
-   [Type],
-   bool),
-
-  ("clang_isCursorDefinition",
-   [Cursor],
-   bool),
-
-  ("clang_isDeclaration",
-   [CursorKind],
-   bool),
-
-  ("clang_isExpression",
-   [CursorKind],
-   bool),
-
-  ("clang_isFileMultipleIncludeGuarded",
-   [TranslationUnit, File],
-   bool),
-
-  ("clang_isFunctionTypeVariadic",
-   [Type],
-   bool),
-
-  ("clang_isInvalid",
-   [CursorKind],
-   bool),
-
-  ("clang_isPODType",
-   [Type],
-   bool),
-
-  ("clang_isPreprocessing",
-   [CursorKind],
-   bool),
-
-  ("clang_isReference",
-   [CursorKind],
-   bool),
-
-  ("clang_isRestrictQualifiedType",
-   [Type],
-   bool),
-
-  ("clang_isStatement",
-   [CursorKind],
-   bool),
-
-  ("clang_isTranslationUnit",
-   [CursorKind],
-   bool),
-
-  ("clang_isUnexposed",
-   [CursorKind],
-   bool),
-
-  ("clang_isVirtualBase",
-   [Cursor],
-   bool),
-
-  ("clang_isVolatileQualifiedType",
-   [Type],
-   bool),
-
-  ("clang_parseTranslationUnit",
-   [Index, c_char_p, c_void_p, c_int, c_void_p, c_int, c_int],
-   c_object_p),
-
-  ("clang_reparseTranslationUnit",
-   [TranslationUnit, c_int, c_void_p, c_int],
-   c_int),
-
-  ("clang_saveTranslationUnit",
-   [TranslationUnit, c_char_p, c_uint],
-   c_int),
-
-  ("clang_tokenize",
-   [TranslationUnit, SourceRange, POINTER(POINTER(Token)), POINTER(c_uint)]),
-
-  ("clang_visitChildren",
-   [Cursor, callbacks['cursor_visit'], py_object],
-   c_uint),
-
-  ("clang_Cursor_getNumArguments",
-   [Cursor],
-   c_int),
-
-  ("clang_Cursor_getArgument",
-   [Cursor, c_uint],
-   Cursor,
-   Cursor.from_result),
-
-  ("clang_Cursor_isBitField",
-   [Cursor],
-   bool),
-
-  ("clang_Type_getAlignOf",
-   [Type],
-   c_longlong),
-
-  ("clang_Type_getOffsetOf",
-   [Type, c_char_p],
-   c_longlong),
-
-  ("clang_Type_getSizeOf",
-   [Type],
-   c_ulonglong),
-]
-
-class LibclangError(Exception):
-    def __init__(self, message):
-        self.m = message
-
-    def __str__(self):
-        return self.m
-
-def register_function(lib, item, ignore_errors):
-    # A function may not exist, if these bindings are used with an older or
-    # incompatible version of libclang.so.
-    try:
-        func = getattr(lib, item[0])
-    except AttributeError as e:
-        msg = str(e) + ". Please ensure that your python bindings are "\
-                       "compatible with your libclang.so version."
-        if ignore_errors:
-            return
-        raise LibclangError(msg)
-
-    if len(item) >= 2:
-        func.argtypes = item[1]
-
-    if len(item) >= 3:
-        func.restype = item[2]
-
-    if len(item) == 4:
-        func.errcheck = item[3]
-
-def register_functions(lib, ignore_errors):
-    """Register function prototypes with a libclang library instance.
-
-    This must be called as part of library instantiation so Python knows how
-    to call out to the shared library.
-    """
-
-    def register(item):
-        return register_function(lib, item, ignore_errors)
-
-    map(register, functionList)
-
-class Config:
-    library_path = None
-    library_file = None
-    compatibility_check = True
-    loaded = False
-
-    @staticmethod
-    def set_library_path(path):
-        """Set the path in which to search for libclang"""
-        if Config.loaded:
-            raise Exception("library path must be set before before using " \
-                            "any other functionalities in libclang.")
-
-        Config.library_path = path
-
-    @staticmethod
-    def set_library_file(filename):
-        """Set the exact location of libclang"""
-        if Config.loaded:
-            raise Exception("library file must be set before before using " \
-                            "any other functionalities in libclang.")
-
-        Config.library_file = filename
-
-    @staticmethod
-    def set_compatibility_check(check_status):
-        """ Perform compatibility check when loading libclang
-
-        The python bindings are only tested and evaluated with the version of
-        libclang they are provided with. To ensure correct behavior a (limited)
-        compatibility check is performed when loading the bindings. This check
-        will throw an exception, as soon as it fails.
-
-        In case these bindings are used with an older version of libclang, parts
-        that have been stable between releases may still work. Users of the
-        python bindings can disable the compatibility check. This will cause
-        the python bindings to load, even though they are written for a newer
-        version of libclang. Failures now arise if unsupported or incompatible
-        features are accessed. The user is required to test himself if the
-        features he is using are available and compatible between different
-        libclang versions.
-        """
-        if Config.loaded:
-            raise Exception("compatibility_check must be set before before " \
-                            "using any other functionalities in libclang.")
-
-        Config.compatibility_check = check_status
-
-    @CachedProperty
-    def lib(self):
-        lib = self.get_cindex_library()
-        register_functions(lib, not Config.compatibility_check)
-        Config.loaded = True
-        return lib
-
-    def get_filename(self):
-        if Config.library_file:
-            return Config.library_file
-
-        import platform
-        name = platform.system()
-
-        if name == 'Darwin':
-            file = 'libclang.dylib'
-        elif name == 'Windows':
-            file = 'libclang.dll'
-        else:
-            file = 'libclang.so'
-
-        if Config.library_path:
-            file = Config.library_path + '/' + file
-
-        return file
-
-    def get_cindex_library(self):
-        try:
-            library = cdll.LoadLibrary(self.get_filename())
-        except OSError as e:
-            msg = str(e) + ". To provide a path to libclang use " \
-                           "Config.set_library_path() or " \
-                           "Config.set_library_file()."
-            raise LibclangError(msg)
-
-        return library
-
-    def function_exists(self, name):
-        try:
-            getattr(self.lib, name)
-        except AttributeError:
-            return False
-
-        return True
-
-def register_enumerations():
-    for name, value in clang.enumerations.TokenKinds:
-        TokenKind.register(value, name)
-
-conf = Config()
-register_enumerations()
-
-__all__ = [
-    'Config',
-    'CodeCompletionResults',
-    'CompilationDatabase',
-    'CompileCommands',
-    'CompileCommand',
-    'CursorKind',
-    'Cursor',
-    'Diagnostic',
-    'File',
-    'FixIt',
-    'Index',
-    'SourceLocation',
-    'SourceRange',
-    'TokenKind',
-    'Token',
-    'TranslationUnitLoadError',
-    'TranslationUnit',
-    'TypeKind',
-    'Type',
-]

Modified: trunk/contrib/llvm/tools/clang/bindings/python/clang/enumerations.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/clang/enumerations.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/clang/enumerations.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-#===- enumerations.py - Python Enumerations ------------------*- python -*--===#
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-#===------------------------------------------------------------------------===#
-
-"""
-Clang Enumerations
-==================
-
-This module provides static definitions of enumerations that exist in libclang.
-
-Enumerations are typically defined as a list of tuples. The exported values are
-typically munged into other types or classes at module load time.
-
-All enumerations are centrally defined in this file so they are all grouped
-together and easier to audit. And, maybe even one day this file will be
-automatically generated by scanning the libclang headers!
-"""
-
-# Maps to CXTokenKind. Note that libclang maintains a separate set of token
-# enumerations from the C++ API.
-TokenKinds = [
-    ('PUNCTUATION', 0),
-    ('KEYWORD', 1),
-    ('IDENTIFIER', 2),
-    ('LITERAL', 3),
-    ('COMMENT', 4),
-]
-
-__all__ = ['TokenKinds']

Modified: trunk/contrib/llvm/tools/clang/bindings/python/examples/cindex/cindex-dump.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/examples/cindex/cindex-dump.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/examples/cindex/cindex-dump.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-#!/usr/bin/env python
-
-#===- cindex-dump.py - cindex/Python Source Dump -------------*- python -*--===#
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-#===------------------------------------------------------------------------===#
-
-"""
-A simple command line tool for dumping a source file using the Clang Index
-Library.
-"""
-
-def get_diag_info(diag):
-    return { 'severity' : diag.severity,
-             'location' : diag.location,
-             'spelling' : diag.spelling,
-             'ranges' : diag.ranges,
-             'fixits' : diag.fixits }
-
-def get_cursor_id(cursor, cursor_list = []):
-    if not opts.showIDs:
-        return None
-
-    if cursor is None:
-        return None
-
-    # FIXME: This is really slow. It would be nice if the index API exposed
-    # something that let us hash cursors.
-    for i,c in enumerate(cursor_list):
-        if cursor == c:
-            return i
-    cursor_list.append(cursor)
-    return len(cursor_list) - 1
-
-def get_info(node, depth=0):
-    if opts.maxDepth is not None and depth >= opts.maxDepth:
-        children = None
-    else:
-        children = [get_info(c, depth+1)
-                    for c in node.get_children()]
-    return { 'id' : get_cursor_id(node),
-             'kind' : node.kind,
-             'usr' : node.get_usr(),
-             'spelling' : node.spelling,
-             'location' : node.location,
-             'extent.start' : node.extent.start,
-             'extent.end' : node.extent.end,
-             'is_definition' : node.is_definition(),
-             'definition id' : get_cursor_id(node.get_definition()),
-             'children' : children }
-
-def main():
-    from clang.cindex import Index
-    from pprint import pprint
-
-    from optparse import OptionParser, OptionGroup
-
-    global opts
-
-    parser = OptionParser("usage: %prog [options] {filename} [clang-args*]")
-    parser.add_option("", "--show-ids", dest="showIDs",
-                      help="Don't compute cursor IDs (very slow)",
-                      default=False)
-    parser.add_option("", "--max-depth", dest="maxDepth",
-                      help="Limit cursor expansion to depth N",
-                      metavar="N", type=int, default=None)
-    parser.disable_interspersed_args()
-    (opts, args) = parser.parse_args()
-
-    if len(args) == 0:
-        parser.error('invalid number arguments')
-
-    index = Index.create()
-    tu = index.parse(None, args)
-    if not tu:
-        parser.error("unable to load input")
-
-    pprint(('diags', map(get_diag_info, tu.diagnostics)))
-    pprint(('nodes', get_info(tu.cursor)))
-
-if __name__ == '__main__':
-    main()
-

Modified: trunk/contrib/llvm/tools/clang/bindings/python/examples/cindex/cindex-includes.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/examples/cindex/cindex-includes.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/examples/cindex/cindex-includes.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-
-#===- cindex-includes.py - cindex/Python Inclusion Graph -----*- python -*--===#
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-#===------------------------------------------------------------------------===#
-
-"""
-A simple command line tool for dumping a Graphviz description (dot) that
-describes include dependencies.
-"""
-
-def main():
-    import sys
-    from clang.cindex import Index
-
-    from optparse import OptionParser, OptionGroup
-
-    parser = OptionParser("usage: %prog [options] {filename} [clang-args*]")
-    parser.disable_interspersed_args()
-    (opts, args) = parser.parse_args()
-    if len(args) == 0:
-        parser.error('invalid number arguments')
-
-    # FIXME: Add an output file option
-    out = sys.stdout
-
-    index = Index.create()
-    tu = index.parse(None, args)
-    if not tu:
-        parser.error("unable to load input")
-
-    # A helper function for generating the node name.
-    def name(f):
-        if f:
-            return "\"" + f.name + "\""
-
-    # Generate the include graph
-    out.write("digraph G {\n")
-    for i in tu.get_includes():
-        line = "  ";
-        if i.is_input_file:
-            # Always write the input file as a node just in case it doesn't
-            # actually include anything. This would generate a 1 node graph.
-            line += name(i.include)
-        else:
-            line += '%s->%s' % (name(i.source), name(i.include))
-        line += "\n";
-        out.write(line)
-    out.write("}\n")
-
-if __name__ == '__main__':
-    main()
-

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/compile_commands.json
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/compile_commands.json	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/compile_commands.json	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-[
-{
-  "directory": "/home/john.doe/MyProject",
-  "command": "clang++  -o project.o -c /home/john.doe/MyProject/project.cpp",
-  "file": "/home/john.doe/MyProject/project.cpp"
-},
-{
-  "directory": "/home/john.doe/MyProjectA",
-  "command": "clang++ -o project2.o -c /home/john.doe/MyProject/project2.cpp",
-  "file": "/home/john.doe/MyProject/project2.cpp"
-},
-{
-  "directory": "/home/john.doe/MyProjectB",
-  "command": "clang++  -DFEATURE=1 -o project2-feature.o -c /home/john.doe/MyProject/project2.cpp",
-  "file": "/home/john.doe/MyProject/project2.cpp"
-}
-]

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#ifndef HEADER1
-#define HEADER1
-
-#include "header3.h"
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#ifndef HEADER2
-#define HEADER2
-
-#include "header3.h"
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header3.h
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header3.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/header3.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// Not a guarded header!
-
-void f();

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/hello.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/hello.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/hello.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#include "stdio.h"
-
-int main(int argc, char* argv[]) {
-    printf("hello world\n");
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/include.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/include.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/include.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#include "header1.h"
-#include "header2.h"
-#include "header1.h"
-
-int main() { }

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/parse_arguments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/parse_arguments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/INPUTS/parse_arguments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int DECL_ONE = 1;
-int DECL_TWO = 2;

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cdb.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cdb.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cdb.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-from clang.cindex import CompilationDatabase
-from clang.cindex import CompilationDatabaseError
-from clang.cindex import CompileCommands
-from clang.cindex import CompileCommand
-import os
-import gc
-
-kInputsDir = os.path.join(os.path.dirname(__file__), 'INPUTS')
-
-def test_create_fail():
-    """Check we fail loading a database with an assertion"""
-    path = os.path.dirname(__file__)
-    try:
-      cdb = CompilationDatabase.fromDirectory(path)
-    except CompilationDatabaseError as e:
-      assert e.cdb_error == CompilationDatabaseError.ERROR_CANNOTLOADDATABASE
-    else:
-      assert False
-
-def test_create():
-    """Check we can load a compilation database"""
-    cdb = CompilationDatabase.fromDirectory(kInputsDir)
-
-def test_lookup_fail():
-    """Check file lookup failure"""
-    cdb = CompilationDatabase.fromDirectory(kInputsDir)
-    assert cdb.getCompileCommands('file_do_not_exist.cpp') == None
-
-def test_lookup_succeed():
-    """Check we get some results if the file exists in the db"""
-    cdb = CompilationDatabase.fromDirectory(kInputsDir)
-    cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
-    assert len(cmds) != 0
-
-def test_1_compilecommand():
-    """Check file with single compile command"""
-    cdb = CompilationDatabase.fromDirectory(kInputsDir)
-    cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
-    assert len(cmds) == 1
-    assert cmds[0].directory == '/home/john.doe/MyProject'
-    expected = [ 'clang++', '-o', 'project.o', '-c',
-                 '/home/john.doe/MyProject/project.cpp']
-    for arg, exp in zip(cmds[0].arguments, expected):
-        assert arg == exp
-
-def test_2_compilecommand():
-    """Check file with 2 compile commands"""
-    cdb = CompilationDatabase.fromDirectory(kInputsDir)
-    cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project2.cpp')
-    assert len(cmds) == 2
-    expected = [
-        { 'wd': '/home/john.doe/MyProjectA',
-          'line': ['clang++', '-o', 'project2.o', '-c',
-                   '/home/john.doe/MyProject/project2.cpp']},
-        { 'wd': '/home/john.doe/MyProjectB',
-          'line': ['clang++', '-DFEATURE=1', '-o', 'project2-feature.o', '-c',
-                   '/home/john.doe/MyProject/project2.cpp']}
-        ]
-    for i in range(len(cmds)):
-        assert cmds[i].directory == expected[i]['wd']
-        for arg, exp in zip(cmds[i].arguments, expected[i]['line']):
-            assert arg == exp
-
-def test_compilecommand_iterator_stops():
-    """Check that iterator stops after the correct number of elements"""
-    cdb = CompilationDatabase.fromDirectory(kInputsDir)
-    count = 0
-    for cmd in cdb.getCompileCommands('/home/john.doe/MyProject/project2.cpp'):
-        count += 1
-        assert count <= 2
-
-def test_compilationDB_references():
-    """Ensure CompilationsCommands are independent of the database"""
-    cdb = CompilationDatabase.fromDirectory(kInputsDir)
-    cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
-    del cdb
-    gc.collect()
-    workingdir = cmds[0].directory
-
-def test_compilationCommands_references():
-    """Ensure CompilationsCommand keeps a reference to CompilationCommands"""
-    cdb = CompilationDatabase.fromDirectory(kInputsDir)
-    cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
-    del cdb
-    cmd0 = cmds[0]
-    del cmds
-    gc.collect()
-    workingdir = cmd0.directory
-

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_code_completion.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_code_completion.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_code_completion.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-from clang.cindex import TranslationUnit
-
-def check_completion_results(cr, expected):
-    assert cr is not None
-    assert len(cr.diagnostics) == 0
-
-    completions = [str(c) for c in cr.results]
-
-    for c in expected:
-        assert c in completions
-
-def test_code_complete():
-    files = [('fake.c', """
-/// Aaa.
-int test1;
-
-/// Bbb.
-void test2(void);
-
-void f() {
-
-}
-""")]
-
-    tu = TranslationUnit.from_source('fake.c', ['-std=c99'], unsaved_files=files,
-            options=TranslationUnit.PARSE_INCLUDE_BRIEF_COMMENTS_IN_CODE_COMPLETION)
-
-    cr = tu.codeComplete('fake.c', 9, 1, unsaved_files=files, include_brief_comments=True)
-
-    expected = [
-      "{'int', ResultType} | {'test1', TypedText} || Priority: 50 || Availability: Available || Brief comment: Aaa.",
-      "{'void', ResultType} | {'test2', TypedText} | {'(', LeftParen} | {')', RightParen} || Priority: 50 || Availability: Available || Brief comment: Bbb.",
-      "{'return', TypedText} || Priority: 40 || Availability: Available || Brief comment: None"
-    ]
-    check_completion_results(cr, expected)
-
-def test_code_complete_availability():
-    files = [('fake.cpp', """
-class P {
-protected:
-  int member;
-};
-
-class Q : public P {
-public:
-  using P::member;
-};
-
-void f(P x, Q y) {
-  x.; // member is inaccessible
-  y.; // member is accessible
-}
-""")]
-
-    tu = TranslationUnit.from_source('fake.cpp', ['-std=c++98'], unsaved_files=files)
-
-    cr = tu.codeComplete('fake.cpp', 12, 5, unsaved_files=files)
-
-    expected = [
-      "{'const', TypedText} || Priority: 40 || Availability: Available || Brief comment: None",
-      "{'volatile', TypedText} || Priority: 40 || Availability: Available || Brief comment: None",
-      "{'operator', TypedText} || Priority: 40 || Availability: Available || Brief comment: None",
-      "{'P', TypedText} | {'::', Text} || Priority: 75 || Availability: Available || Brief comment: None",
-      "{'Q', TypedText} | {'::', Text} || Priority: 75 || Availability: Available || Brief comment: None"
-    ]
-    check_completion_results(cr, expected)
-
-    cr = tu.codeComplete('fake.cpp', 13, 5, unsaved_files=files)
-    expected = [
-        "{'P', TypedText} | {'::', Text} || Priority: 75 || Availability: Available || Brief comment: None",
-        "{'P &', ResultType} | {'operator=', TypedText} | {'(', LeftParen} | {'const P &', Placeholder} | {')', RightParen} || Priority: 34 || Availability: Available || Brief comment: None",
-        "{'int', ResultType} | {'member', TypedText} || Priority: 35 || Availability: NotAccessible || Brief comment: None",
-        "{'void', ResultType} | {'~P', TypedText} | {'(', LeftParen} | {')', RightParen} || Priority: 34 || Availability: Available || Brief comment: None"
-    ]
-    check_completion_results(cr, expected)

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cursor.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cursor.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cursor.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,261 +0,0 @@
-import gc
-
-from clang.cindex import CursorKind
-from clang.cindex import TranslationUnit
-from clang.cindex import TypeKind
-from .util import get_cursor
-from .util import get_cursors
-from .util import get_tu
-
-kInput = """\
-// FIXME: Find nicer way to drop builtins and other cruft.
-int start_decl;
-
-struct s0 {
-  int a;
-  int b;
-};
-
-struct s1;
-
-void f0(int a0, int a1) {
-  int l0, l1;
-
-  if (a0)
-    return;
-
-  for (;;) {
-    break;
-  }
-}
-"""
-
-def test_get_children():
-    tu = get_tu(kInput)
-
-    # Skip until past start_decl.
-    it = tu.cursor.get_children()
-    while it.next().spelling != 'start_decl':
-        pass
-
-    tu_nodes = list(it)
-
-    assert len(tu_nodes) == 3
-    for cursor in tu_nodes:
-        assert cursor.translation_unit is not None
-
-    assert tu_nodes[0] != tu_nodes[1]
-    assert tu_nodes[0].kind == CursorKind.STRUCT_DECL
-    assert tu_nodes[0].spelling == 's0'
-    assert tu_nodes[0].is_definition() == True
-    assert tu_nodes[0].location.file.name == 't.c'
-    assert tu_nodes[0].location.line == 4
-    assert tu_nodes[0].location.column == 8
-    assert tu_nodes[0].hash > 0
-    assert tu_nodes[0].translation_unit is not None
-
-    s0_nodes = list(tu_nodes[0].get_children())
-    assert len(s0_nodes) == 2
-    assert s0_nodes[0].kind == CursorKind.FIELD_DECL
-    assert s0_nodes[0].spelling == 'a'
-    assert s0_nodes[0].type.kind == TypeKind.INT
-    assert s0_nodes[1].kind == CursorKind.FIELD_DECL
-    assert s0_nodes[1].spelling == 'b'
-    assert s0_nodes[1].type.kind == TypeKind.INT
-
-    assert tu_nodes[1].kind == CursorKind.STRUCT_DECL
-    assert tu_nodes[1].spelling == 's1'
-    assert tu_nodes[1].displayname == 's1'
-    assert tu_nodes[1].is_definition() == False
-
-    assert tu_nodes[2].kind == CursorKind.FUNCTION_DECL
-    assert tu_nodes[2].spelling == 'f0'
-    assert tu_nodes[2].displayname == 'f0(int, int)'
-    assert tu_nodes[2].is_definition() == True
-
-def test_references():
-    """Ensure that references to TranslationUnit are kept."""
-    tu = get_tu('int x;')
-    cursors = list(tu.cursor.get_children())
-    assert len(cursors) > 0
-
-    cursor = cursors[0]
-    assert isinstance(cursor.translation_unit, TranslationUnit)
-
-    # Delete reference to TU and perform a full GC.
-    del tu
-    gc.collect()
-    assert isinstance(cursor.translation_unit, TranslationUnit)
-
-    # If the TU was destroyed, this should cause a segfault.
-    parent = cursor.semantic_parent
-
-def test_canonical():
-    source = 'struct X; struct X; struct X { int member; };'
-    tu = get_tu(source)
-
-    cursors = []
-    for cursor in tu.cursor.get_children():
-        if cursor.spelling == 'X':
-            cursors.append(cursor)
-
-    assert len(cursors) == 3
-    assert cursors[1].canonical == cursors[2].canonical
-
-def test_is_static_method():
-    """Ensure Cursor.is_static_method works."""
-
-    source = 'class X { static void foo(); void bar(); };'
-    tu = get_tu(source, lang='cpp')
-
-    cls = get_cursor(tu, 'X')
-    foo = get_cursor(tu, 'foo')
-    bar = get_cursor(tu, 'bar')
-    assert cls is not None
-    assert foo is not None
-    assert bar is not None
-
-    assert foo.is_static_method()
-    assert not bar.is_static_method()
-
-def test_underlying_type():
-    tu = get_tu('typedef int foo;')
-    typedef = get_cursor(tu, 'foo')
-    assert typedef is not None
-
-    assert typedef.kind.is_declaration()
-    underlying = typedef.underlying_typedef_type
-    assert underlying.kind == TypeKind.INT
-
-kParentTest = """\
-        class C {
-            void f();
-        }
-
-        void C::f() { }
-    """
-def test_semantic_parent():
-    tu = get_tu(kParentTest, 'cpp')
-    curs = get_cursors(tu, 'f')
-    decl = get_cursor(tu, 'C')
-    assert(len(curs) == 2)
-    assert(curs[0].semantic_parent == curs[1].semantic_parent)
-    assert(curs[0].semantic_parent == decl)
-
-def test_lexical_parent():
-    tu = get_tu(kParentTest, 'cpp')
-    curs = get_cursors(tu, 'f')
-    decl = get_cursor(tu, 'C')
-    assert(len(curs) == 2)
-    assert(curs[0].lexical_parent != curs[1].lexical_parent)
-    assert(curs[0].lexical_parent == decl)
-    assert(curs[1].lexical_parent == tu.cursor)
-
-def test_enum_type():
-    tu = get_tu('enum TEST { FOO=1, BAR=2 };')
-    enum = get_cursor(tu, 'TEST')
-    assert enum is not None
-
-    assert enum.kind == CursorKind.ENUM_DECL
-    enum_type = enum.enum_type
-    assert enum_type.kind == TypeKind.UINT
-
-def test_enum_type_cpp():
-    tu = get_tu('enum TEST : long long { FOO=1, BAR=2 };', lang="cpp")
-    enum = get_cursor(tu, 'TEST')
-    assert enum is not None
-
-    assert enum.kind == CursorKind.ENUM_DECL
-    assert enum.enum_type.kind == TypeKind.LONGLONG
-
-def test_objc_type_encoding():
-    tu = get_tu('int i;', lang='objc')
-    i = get_cursor(tu, 'i')
-
-    assert i is not None
-    assert i.objc_type_encoding == 'i'
-
-def test_enum_values():
-    tu = get_tu('enum TEST { SPAM=1, EGG, HAM = EGG * 20};')
-    enum = get_cursor(tu, 'TEST')
-    assert enum is not None
-
-    assert enum.kind == CursorKind.ENUM_DECL
-
-    enum_constants = list(enum.get_children())
-    assert len(enum_constants) == 3
-
-    spam, egg, ham = enum_constants
-
-    assert spam.kind == CursorKind.ENUM_CONSTANT_DECL
-    assert spam.enum_value == 1
-    assert egg.kind == CursorKind.ENUM_CONSTANT_DECL
-    assert egg.enum_value == 2
-    assert ham.kind == CursorKind.ENUM_CONSTANT_DECL
-    assert ham.enum_value == 40
-
-def test_enum_values_cpp():
-    tu = get_tu('enum TEST : long long { SPAM = -1, HAM = 0x10000000000};', lang="cpp")
-    enum = get_cursor(tu, 'TEST')
-    assert enum is not None
-
-    assert enum.kind == CursorKind.ENUM_DECL
-
-    enum_constants = list(enum.get_children())
-    assert len(enum_constants) == 2
-
-    spam, ham = enum_constants
-
-    assert spam.kind == CursorKind.ENUM_CONSTANT_DECL
-    assert spam.enum_value == -1
-    assert ham.kind == CursorKind.ENUM_CONSTANT_DECL
-    assert ham.enum_value == 0x10000000000
-
-def test_annotation_attribute():
-    tu = get_tu('int foo (void) __attribute__ ((annotate("here be annotation attribute")));')
-
-    foo = get_cursor(tu, 'foo')
-    assert foo is not None
-
-    for c in foo.get_children():
-        if c.kind == CursorKind.ANNOTATE_ATTR:
-            assert c.displayname == "here be annotation attribute"
-            break
-    else:
-        assert False, "Couldn't find annotation"
-
-def test_result_type():
-    tu = get_tu('int foo();')
-    foo = get_cursor(tu, 'foo')
-
-    assert foo is not None
-    t = foo.result_type
-    assert t.kind == TypeKind.INT
-
-def test_get_tokens():
-    """Ensure we can map cursors back to tokens."""
-    tu = get_tu('int foo(int i);')
-    foo = get_cursor(tu, 'foo')
-
-    tokens = list(foo.get_tokens())
-    assert len(tokens) == 7
-    assert tokens[0].spelling == 'int'
-    assert tokens[1].spelling == 'foo'
-
-def test_get_arguments():
-    tu = get_tu('void foo(int i, int j);')
-    foo = get_cursor(tu, 'foo')
-    arguments = list(foo.get_arguments())
-
-    assert len(arguments) == 2
-    assert arguments[0].spelling == "i"
-    assert arguments[1].spelling == "j"
-
-def test_referenced():
-    tu = get_tu('void foo(); void bar() { foo(); }')
-    foo = get_cursor(tu, 'foo')
-    bar = get_cursor(tu, 'bar')
-    for c in bar.get_children():
-        if c.kind == CursorKind.CALL_EXPR:
-            assert c.referenced.spelling == foo.spelling
-            break

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cursor_kind.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cursor_kind.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_cursor_kind.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-from clang.cindex import CursorKind
-
-def test_name():
-    assert CursorKind.UNEXPOSED_DECL.name is 'UNEXPOSED_DECL'
-
-def test_get_all_kinds():
-    assert CursorKind.UNEXPOSED_DECL in CursorKind.get_all_kinds()
-    assert CursorKind.TRANSLATION_UNIT in CursorKind.get_all_kinds()
-
-def test_kind_groups():
-    """Check that every kind classifies to exactly one group."""
-
-    assert CursorKind.UNEXPOSED_DECL.is_declaration()
-    assert CursorKind.TYPE_REF.is_reference()
-    assert CursorKind.DECL_REF_EXPR.is_expression()
-    assert CursorKind.UNEXPOSED_STMT.is_statement()
-    assert CursorKind.INVALID_FILE.is_invalid()
-
-    assert CursorKind.TRANSLATION_UNIT.is_translation_unit()
-    assert not CursorKind.TYPE_REF.is_translation_unit()
-
-    assert CursorKind.PREPROCESSING_DIRECTIVE.is_preprocessing()
-    assert not CursorKind.TYPE_REF.is_preprocessing()
-
-    assert CursorKind.UNEXPOSED_DECL.is_unexposed()
-    assert not CursorKind.TYPE_REF.is_unexposed()
-
-    for k in CursorKind.get_all_kinds():
-        group = [n for n in ('is_declaration', 'is_reference', 'is_expression',
-                             'is_statement', 'is_invalid', 'is_attribute')
-                 if getattr(k, n)()]
-
-        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: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_diagnostics.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_diagnostics.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_diagnostics.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-from clang.cindex import *
-from .util import get_tu
-
-# FIXME: We need support for invalid translation units to test better.
-
-def test_diagnostic_warning():
-    tu = get_tu('int f0() {}\n')
-    assert len(tu.diagnostics) == 1
-    assert tu.diagnostics[0].severity == Diagnostic.Warning
-    assert tu.diagnostics[0].location.line == 1
-    assert tu.diagnostics[0].location.column == 11
-    assert (tu.diagnostics[0].spelling ==
-            'control reaches end of non-void function')
-
-def test_diagnostic_note():
-    # FIXME: We aren't getting notes here for some reason.
-    tu = get_tu('#define A x\nvoid *A = 1;\n')
-    assert len(tu.diagnostics) == 1
-    assert tu.diagnostics[0].severity == Diagnostic.Warning
-    assert tu.diagnostics[0].location.line == 2
-    assert tu.diagnostics[0].location.column == 7
-    assert 'incompatible' in tu.diagnostics[0].spelling
-#    assert tu.diagnostics[1].severity == Diagnostic.Note
-#    assert tu.diagnostics[1].location.line == 1
-#    assert tu.diagnostics[1].location.column == 11
-#    assert tu.diagnostics[1].spelling == 'instantiated from'
-
-def test_diagnostic_fixit():
-    tu = get_tu('struct { int f0; } x = { f0 : 1 };')
-    assert len(tu.diagnostics) == 1
-    assert tu.diagnostics[0].severity == Diagnostic.Warning
-    assert tu.diagnostics[0].location.line == 1
-    assert tu.diagnostics[0].location.column == 26
-    assert tu.diagnostics[0].spelling.startswith('use of GNU old-style')
-    assert len(tu.diagnostics[0].fixits) == 1
-    assert tu.diagnostics[0].fixits[0].range.start.line == 1
-    assert tu.diagnostics[0].fixits[0].range.start.column == 26
-    assert tu.diagnostics[0].fixits[0].range.end.line == 1
-    assert tu.diagnostics[0].fixits[0].range.end.column == 30
-    assert tu.diagnostics[0].fixits[0].value == '.f0 = '
-
-def test_diagnostic_range():
-    tu = get_tu('void f() { int i = "a" + 1; }')
-    assert len(tu.diagnostics) == 1
-    assert tu.diagnostics[0].severity == Diagnostic.Warning
-    assert tu.diagnostics[0].location.line == 1
-    assert tu.diagnostics[0].location.column == 16
-    assert tu.diagnostics[0].spelling.startswith('incompatible pointer to')
-    assert len(tu.diagnostics[0].fixits) == 0
-    assert len(tu.diagnostics[0].ranges) == 1
-    assert tu.diagnostics[0].ranges[0].start.line == 1
-    assert tu.diagnostics[0].ranges[0].start.column == 20
-    assert tu.diagnostics[0].ranges[0].end.line == 1
-    assert tu.diagnostics[0].ranges[0].end.column == 27
-    try:
-      tu.diagnostics[0].ranges[1].start.line
-    except IndexError:
-      assert True
-    else:
-      assert False
-
-def test_diagnostic_category():
-    """Ensure that category properties work."""
-    tu = get_tu('int f(int i) { return 7; }', all_warnings=True)
-    assert len(tu.diagnostics) == 1
-    d = tu.diagnostics[0]
-
-    assert d.severity == Diagnostic.Warning
-    assert d.location.line == 1
-    assert d.location.column == 11
-
-    assert d.category_number == 2
-    assert d.category_name == 'Semantic Issue'
-
-def test_diagnostic_option():
-    """Ensure that category option properties work."""
-    tu = get_tu('int f(int i) { return 7; }', all_warnings=True)
-    assert len(tu.diagnostics) == 1
-    d = tu.diagnostics[0]
-
-    assert d.option == '-Wunused-parameter'
-    assert d.disable_option == '-Wno-unused-parameter'

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_file.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_file.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_file.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-from clang.cindex import Index, File
-
-def test_file():
-  index = Index.create()
-  tu = index.parse('t.c', unsaved_files = [('t.c', "")])
-  file = File.from_name(tu, "t.c")
-  assert str(file) == "t.c"
-  assert file.name == "t.c"
-  assert repr(file) == "<File: t.c>"

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_index.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_index.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_index.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-from clang.cindex import *
-import os
-
-kInputsDir = os.path.join(os.path.dirname(__file__), 'INPUTS')
-
-def test_create():
-    index = Index.create()
-
-# FIXME: test Index.read
-
-def test_parse():
-    index = Index.create()
-    assert isinstance(index, Index)
-    tu = index.parse(os.path.join(kInputsDir, 'hello.cpp'))
-    assert isinstance(tu, TranslationUnit)

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_location.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_location.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_location.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-from clang.cindex import Cursor
-from clang.cindex import File
-from clang.cindex import SourceLocation
-from clang.cindex import SourceRange
-from .util import get_cursor
-from .util import get_tu
-
-baseInput="int one;\nint two;\n"
-
-def assert_location(loc, line, column, offset):
-    assert loc.line == line
-    assert loc.column == column
-    assert loc.offset == offset
-
-def test_location():
-    tu = get_tu(baseInput)
-    one = get_cursor(tu, 'one')
-    two = get_cursor(tu, 'two')
-
-    assert one is not None
-    assert two is not None
-
-    assert_location(one.location,line=1,column=5,offset=4)
-    assert_location(two.location,line=2,column=5,offset=13)
-
-    # adding a linebreak at top should keep columns same
-    tu = get_tu('\n' + baseInput)
-    one = get_cursor(tu, 'one')
-    two = get_cursor(tu, 'two')
-
-    assert one is not None
-    assert two is not None
-
-    assert_location(one.location,line=2,column=5,offset=5)
-    assert_location(two.location,line=3,column=5,offset=14)
-
-    # adding a space should affect column on first line only
-    tu = get_tu(' ' + baseInput)
-    one = get_cursor(tu, 'one')
-    two = get_cursor(tu, 'two')
-
-    assert_location(one.location,line=1,column=6,offset=5)
-    assert_location(two.location,line=2,column=5,offset=14)
-
-    # define the expected location ourselves and see if it matches
-    # the returned location
-    tu = get_tu(baseInput)
-
-    file = File.from_name(tu, 't.c')
-    location = SourceLocation.from_position(tu, file, 1, 5)
-    cursor = Cursor.from_location(tu, location)
-
-    one = get_cursor(tu, 'one')
-    assert one is not None
-    assert one == cursor
-
-    # Ensure locations referring to the same entity are equivalent.
-    location2 = SourceLocation.from_position(tu, file, 1, 5)
-    assert location == location2
-    location3 = SourceLocation.from_position(tu, file, 1, 4)
-    assert location2 != location3
-
-    offset_location = SourceLocation.from_offset(tu, file, 5)
-    cursor = Cursor.from_location(tu, offset_location)
-    verified = False
-    for n in [n for n in tu.cursor.get_children() if n.spelling == 'one']:
-        assert n == cursor
-        verified = True
-
-    assert verified
-
-def test_extent():
-    tu = get_tu(baseInput)
-    one = get_cursor(tu, 'one')
-    two = get_cursor(tu, 'two')
-
-    assert_location(one.extent.start,line=1,column=1,offset=0)
-    assert_location(one.extent.end,line=1,column=8,offset=7)
-    assert baseInput[one.extent.start.offset:one.extent.end.offset] == "int one"
-
-    assert_location(two.extent.start,line=2,column=1,offset=9)
-    assert_location(two.extent.end,line=2,column=8,offset=16)
-    assert baseInput[two.extent.start.offset:two.extent.end.offset] == "int two"
-
-    file = File.from_name(tu, 't.c')
-    location1 = SourceLocation.from_position(tu, file, 1, 1)
-    location2 = SourceLocation.from_position(tu, file, 1, 8)
-
-    range1 = SourceRange.from_locations(location1, location2)
-    range2 = SourceRange.from_locations(location1, location2)
-    assert range1 == range2
-
-    location3 = SourceLocation.from_position(tu, file, 1, 6)
-    range3 = SourceRange.from_locations(location1, location3)
-    assert range1 != range3

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_token_kind.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_token_kind.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_token_kind.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-from clang.cindex import TokenKind
-from nose.tools import eq_
-from nose.tools import ok_
-from nose.tools import raises
-
-def test_constructor():
-    """Ensure TokenKind constructor works as expected."""
-
-    t = TokenKind(5, 'foo')
-
-    eq_(t.value, 5)
-    eq_(t.name, 'foo')
-
- at raises(ValueError)
-def test_bad_register():
-    """Ensure a duplicate value is rejected for registration."""
-
-    TokenKind.register(2, 'foo')
-
- at raises(ValueError)
-def test_unknown_value():
-    """Ensure trying to fetch an unknown value raises."""
-
-    TokenKind.from_value(-1)
-
-def test_registration():
-    """Ensure that items registered appear as class attributes."""
-    ok_(hasattr(TokenKind, 'LITERAL'))
-    literal = TokenKind.LITERAL
-
-    ok_(isinstance(literal, TokenKind))
-
-def test_from_value():
-    """Ensure registered values can be obtained from from_value()."""
-    t = TokenKind.from_value(3)
-    ok_(isinstance(t, TokenKind))
-    eq_(t, TokenKind.LITERAL)
-
-def test_repr():
-    """Ensure repr() works."""
-
-    r = repr(TokenKind.LITERAL)
-    eq_(r, 'TokenKind.LITERAL')

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_tokens.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_tokens.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_tokens.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-from clang.cindex import CursorKind
-from clang.cindex import Index
-from clang.cindex import SourceLocation
-from clang.cindex import SourceRange
-from clang.cindex import TokenKind
-from nose.tools import eq_
-from nose.tools import ok_
-
-from .util import get_tu
-
-def test_token_to_cursor():
-    """Ensure we can obtain a Cursor from a Token instance."""
-    tu = get_tu('int i = 5;')
-    r = tu.get_extent('t.c', (0, 9))
-    tokens = list(tu.get_tokens(extent=r))
-
-    assert len(tokens) == 5
-    assert tokens[1].spelling == 'i'
-    assert tokens[1].kind == TokenKind.IDENTIFIER
-
-    cursor = tokens[1].cursor
-    assert cursor.kind == CursorKind.VAR_DECL
-    assert tokens[1].cursor == tokens[2].cursor
-
-def test_token_location():
-    """Ensure Token.location works."""
-
-    tu = get_tu('int foo = 10;')
-    r = tu.get_extent('t.c', (0, 11))
-
-    tokens = list(tu.get_tokens(extent=r))
-    eq_(len(tokens), 4)
-
-    loc = tokens[1].location
-    ok_(isinstance(loc, SourceLocation))
-    eq_(loc.line, 1)
-    eq_(loc.column, 5)
-    eq_(loc.offset, 4)
-
-def test_token_extent():
-    """Ensure Token.extent works."""
-    tu = get_tu('int foo = 10;')
-    r = tu.get_extent('t.c', (0, 11))
-
-    tokens = list(tu.get_tokens(extent=r))
-    eq_(len(tokens), 4)
-
-    extent = tokens[1].extent
-    ok_(isinstance(extent, SourceRange))
-
-    eq_(extent.start.offset, 4)
-    eq_(extent.end.offset, 7)

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_translation_unit.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_translation_unit.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_translation_unit.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,258 +0,0 @@
-import gc
-import os
-
-from clang.cindex import CursorKind
-from clang.cindex import Cursor
-from clang.cindex import File
-from clang.cindex import Index
-from clang.cindex import SourceLocation
-from clang.cindex import SourceRange
-from clang.cindex import TranslationUnitSaveError
-from clang.cindex import TranslationUnitLoadError
-from clang.cindex import TranslationUnit
-from .util import get_cursor
-from .util import get_tu
-
-kInputsDir = os.path.join(os.path.dirname(__file__), 'INPUTS')
-
-def test_spelling():
-    path = os.path.join(kInputsDir, 'hello.cpp')
-    tu = TranslationUnit.from_source(path)
-    assert tu.spelling == path
-
-def test_cursor():
-    path = os.path.join(kInputsDir, 'hello.cpp')
-    tu = get_tu(path)
-    c = tu.cursor
-    assert isinstance(c, Cursor)
-    assert c.kind is CursorKind.TRANSLATION_UNIT
-
-def test_parse_arguments():
-    path = os.path.join(kInputsDir, 'parse_arguments.c')
-    tu = TranslationUnit.from_source(path, ['-DDECL_ONE=hello', '-DDECL_TWO=hi'])
-    spellings = [c.spelling for c in tu.cursor.get_children()]
-    assert spellings[-2] == 'hello'
-    assert spellings[-1] == 'hi'
-
-def test_reparse_arguments():
-    path = os.path.join(kInputsDir, 'parse_arguments.c')
-    tu = TranslationUnit.from_source(path, ['-DDECL_ONE=hello', '-DDECL_TWO=hi'])
-    tu.reparse()
-    spellings = [c.spelling for c in tu.cursor.get_children()]
-    assert spellings[-2] == 'hello'
-    assert spellings[-1] == 'hi'
-
-def test_unsaved_files():
-    tu = TranslationUnit.from_source('fake.c', ['-I./'], unsaved_files = [
-            ('fake.c', """
-#include "fake.h"
-int x;
-int SOME_DEFINE;
-"""),
-            ('./fake.h', """
-#define SOME_DEFINE y
-""")
-            ])
-    spellings = [c.spelling for c in tu.cursor.get_children()]
-    assert spellings[-2] == 'x'
-    assert spellings[-1] == 'y'
-
-def test_unsaved_files_2():
-    import StringIO
-    tu = TranslationUnit.from_source('fake.c', unsaved_files = [
-            ('fake.c', StringIO.StringIO('int x;'))])
-    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  normpaths_equal(expected[0], actual.source.name) and \
-                    normpaths_equal(expected[1], actual.include.name)
-        else:
-            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 = [(src, h1), (h1, h3), (src, h2), (h2, h3)]
-
-    tu = TranslationUnit.from_source(src)
-    for i in zip(inc, tu.get_includes()):
-        assert eq(i[0], i[1])
-
-def save_tu(tu):
-    """Convenience API to save a TranslationUnit to a file.
-
-    Returns the filename it was saved to.
-    """
-
-    # FIXME Generate a temp file path using system APIs.
-    base = 'TEMP_FOR_TRANSLATIONUNIT_SAVE.c'
-    path = os.path.join(kInputsDir, base)
-
-    # Just in case.
-    if os.path.exists(path):
-        os.unlink(path)
-
-    tu.save(path)
-
-    return path
-
-def test_save():
-    """Ensure TranslationUnit.save() works."""
-
-    tu = get_tu('int foo();')
-
-    path = save_tu(tu)
-    assert os.path.exists(path)
-    assert os.path.getsize(path) > 0
-    os.unlink(path)
-
-def test_save_translation_errors():
-    """Ensure that saving to an invalid directory raises."""
-
-    tu = get_tu('int foo();')
-
-    path = '/does/not/exist/llvm-test.ast'
-    assert not os.path.exists(os.path.dirname(path))
-
-    try:
-        tu.save(path)
-        assert False
-    except TranslationUnitSaveError as ex:
-        expected = TranslationUnitSaveError.ERROR_UNKNOWN
-        assert ex.save_error == expected
-
-def test_load():
-    """Ensure TranslationUnits can be constructed from saved files."""
-
-    tu = get_tu('int foo();')
-    assert len(tu.diagnostics) == 0
-    path = save_tu(tu)
-
-    assert os.path.exists(path)
-    assert os.path.getsize(path) > 0
-
-    tu2 = TranslationUnit.from_ast_file(filename=path)
-    assert len(tu2.diagnostics) == 0
-
-    foo = get_cursor(tu2, 'foo')
-    assert foo is not None
-
-    # Just in case there is an open file descriptor somewhere.
-    del tu2
-
-    os.unlink(path)
-
-def test_index_parse():
-    path = os.path.join(kInputsDir, 'hello.cpp')
-    index = Index.create()
-    tu = index.parse(path)
-    assert isinstance(tu, TranslationUnit)
-
-def test_get_file():
-    """Ensure tu.get_file() works appropriately."""
-
-    tu = get_tu('int foo();')
-
-    f = tu.get_file('t.c')
-    assert isinstance(f, File)
-    assert f.name == 't.c'
-
-    try:
-        f = tu.get_file('foobar.cpp')
-    except:
-        pass
-    else:
-        assert False
-
-def test_get_source_location():
-    """Ensure tu.get_source_location() works."""
-
-    tu = get_tu('int foo();')
-
-    location = tu.get_location('t.c', 2)
-    assert isinstance(location, SourceLocation)
-    assert location.offset == 2
-    assert location.file.name == 't.c'
-
-    location = tu.get_location('t.c', (1, 3))
-    assert isinstance(location, SourceLocation)
-    assert location.line == 1
-    assert location.column == 3
-    assert location.file.name == 't.c'
-
-def test_get_source_range():
-    """Ensure tu.get_source_range() works."""
-
-    tu = get_tu('int foo();')
-
-    r = tu.get_extent('t.c', (1,4))
-    assert isinstance(r, SourceRange)
-    assert r.start.offset == 1
-    assert r.end.offset == 4
-    assert r.start.file.name == 't.c'
-    assert r.end.file.name == 't.c'
-
-    r = tu.get_extent('t.c', ((1,2), (1,3)))
-    assert isinstance(r, SourceRange)
-    assert r.start.line == 1
-    assert r.start.column == 2
-    assert r.end.line == 1
-    assert r.end.column == 3
-    assert r.start.file.name == 't.c'
-    assert r.end.file.name == 't.c'
-
-    start = tu.get_location('t.c', 0)
-    end = tu.get_location('t.c', 5)
-
-    r = tu.get_extent('t.c', (start, end))
-    assert isinstance(r, SourceRange)
-    assert r.start.offset == 0
-    assert r.end.offset == 5
-    assert r.start.file.name == 't.c'
-    assert r.end.file.name == 't.c'
-
-def test_get_tokens_gc():
-    """Ensures get_tokens() works properly with garbage collection."""
-
-    tu = get_tu('int foo();')
-    r = tu.get_extent('t.c', (0, 10))
-    tokens = list(tu.get_tokens(extent=r))
-
-    assert tokens[0].spelling == 'int'
-    gc.collect()
-    assert tokens[0].spelling == 'int'
-
-    del tokens[1]
-    gc.collect()
-    assert tokens[0].spelling == 'int'
-
-    # May trigger segfault if we don't do our job properly.
-    del tokens
-    gc.collect()
-    gc.collect() # Just in case.
-
-def test_fail_from_source():
-    path = os.path.join(kInputsDir, 'non-existent.cpp')
-    try:
-        tu = TranslationUnit.from_source(path)
-    except TranslationUnitLoadError:
-        tu = None
-    assert tu == None
-
-def test_fail_from_ast_file():
-    path = os.path.join(kInputsDir, 'non-existent.ast')
-    try:
-        tu = TranslationUnit.from_ast_file(path)
-    except TranslationUnitLoadError:
-        tu = None
-    assert tu == None

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_type.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_type.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/test_type.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,363 +0,0 @@
-import gc
-
-from clang.cindex import CursorKind
-from clang.cindex import TranslationUnit
-from clang.cindex import TypeKind
-from nose.tools import raises
-from .util import get_cursor
-from .util import get_tu
-
-kInput = """\
-
-typedef int I;
-
-struct teststruct {
-  int a;
-  I b;
-  long c;
-  unsigned long d;
-  signed long e;
-  const int f;
-  int *g;
-  int ***h;
-};
-
-"""
-
-def test_a_struct():
-    tu = get_tu(kInput)
-
-    teststruct = get_cursor(tu, 'teststruct')
-    assert teststruct is not None, "Could not find teststruct."
-    fields = list(teststruct.get_children())
-    assert all(x.kind == CursorKind.FIELD_DECL for x in fields)
-    assert all(x.translation_unit is not None for x in fields)
-
-    assert fields[0].spelling == 'a'
-    assert not fields[0].type.is_const_qualified()
-    assert fields[0].type.kind == TypeKind.INT
-    assert fields[0].type.get_canonical().kind == TypeKind.INT
-
-    assert fields[1].spelling == 'b'
-    assert not fields[1].type.is_const_qualified()
-    assert fields[1].type.kind == TypeKind.TYPEDEF
-    assert fields[1].type.get_canonical().kind == TypeKind.INT
-    assert fields[1].type.get_declaration().spelling == 'I'
-
-    assert fields[2].spelling == 'c'
-    assert not fields[2].type.is_const_qualified()
-    assert fields[2].type.kind == TypeKind.LONG
-    assert fields[2].type.get_canonical().kind == TypeKind.LONG
-
-    assert fields[3].spelling == 'd'
-    assert not fields[3].type.is_const_qualified()
-    assert fields[3].type.kind == TypeKind.ULONG
-    assert fields[3].type.get_canonical().kind == TypeKind.ULONG
-
-    assert fields[4].spelling == 'e'
-    assert not fields[4].type.is_const_qualified()
-    assert fields[4].type.kind == TypeKind.LONG
-    assert fields[4].type.get_canonical().kind == TypeKind.LONG
-
-    assert fields[5].spelling == 'f'
-    assert fields[5].type.is_const_qualified()
-    assert fields[5].type.kind == TypeKind.INT
-    assert fields[5].type.get_canonical().kind == TypeKind.INT
-
-    assert fields[6].spelling == 'g'
-    assert not fields[6].type.is_const_qualified()
-    assert fields[6].type.kind == TypeKind.POINTER
-    assert fields[6].type.get_pointee().kind == TypeKind.INT
-
-    assert fields[7].spelling == 'h'
-    assert not fields[7].type.is_const_qualified()
-    assert fields[7].type.kind == TypeKind.POINTER
-    assert fields[7].type.get_pointee().kind == TypeKind.POINTER
-    assert fields[7].type.get_pointee().get_pointee().kind == TypeKind.POINTER
-    assert fields[7].type.get_pointee().get_pointee().get_pointee().kind == TypeKind.INT
-
-def test_references():
-    """Ensure that a Type maintains a reference to a TranslationUnit."""
-
-    tu = get_tu('int x;')
-    children = list(tu.cursor.get_children())
-    assert len(children) > 0
-
-    cursor = children[0]
-    t = cursor.type
-
-    assert isinstance(t.translation_unit, TranslationUnit)
-
-    # Delete main TranslationUnit reference and force a GC.
-    del tu
-    gc.collect()
-    assert isinstance(t.translation_unit, TranslationUnit)
-
-    # If the TU was destroyed, this should cause a segfault.
-    decl = t.get_declaration()
-
-constarrayInput="""
-struct teststruct {
-  void *A[2];
-};
-"""
-def testConstantArray():
-    tu = get_tu(constarrayInput)
-
-    teststruct = get_cursor(tu, 'teststruct')
-    assert teststruct is not None, "Didn't find teststruct??"
-    fields = list(teststruct.get_children())
-    assert fields[0].spelling == 'A'
-    assert fields[0].type.kind == TypeKind.CONSTANTARRAY
-    assert fields[0].type.get_array_element_type() is not None
-    assert fields[0].type.get_array_element_type().kind == TypeKind.POINTER
-    assert fields[0].type.get_array_size() == 2
-
-def test_equal():
-    """Ensure equivalence operators work on Type."""
-    source = 'int a; int b; void *v;'
-    tu = get_tu(source)
-
-    a = get_cursor(tu, 'a')
-    b = get_cursor(tu, 'b')
-    v = get_cursor(tu, 'v')
-
-    assert a is not None
-    assert b is not None
-    assert v is not None
-
-    assert a.type == b.type
-    assert a.type != v.type
-
-    assert a.type != None
-    assert a.type != 'foo'
-
-def test_typekind_spelling():
-    """Ensure TypeKind.spelling works."""
-    tu = get_tu('int a;')
-    a = get_cursor(tu, 'a')
-
-    assert a is not None
-    assert a.type.kind.spelling == 'Int'
-
-def test_function_argument_types():
-    """Ensure that Type.argument_types() works as expected."""
-    tu = get_tu('void f(int, int);')
-    f = get_cursor(tu, 'f')
-    assert f is not None
-
-    args = f.type.argument_types()
-    assert args is not None
-    assert len(args) == 2
-
-    t0 = args[0]
-    assert t0 is not None
-    assert t0.kind == TypeKind.INT
-
-    t1 = args[1]
-    assert t1 is not None
-    assert t1.kind == TypeKind.INT
-
-    args2 = list(args)
-    assert len(args2) == 2
-    assert t0 == args2[0]
-    assert t1 == args2[1]
-
- at raises(TypeError)
-def test_argument_types_string_key():
-    """Ensure that non-int keys raise a TypeError."""
-    tu = get_tu('void f(int, int);')
-    f = get_cursor(tu, 'f')
-    assert f is not None
-
-    args = f.type.argument_types()
-    assert len(args) == 2
-
-    args['foo']
-
- at raises(IndexError)
-def test_argument_types_negative_index():
-    """Ensure that negative indexes on argument_types Raises an IndexError."""
-    tu = get_tu('void f(int, int);')
-    f = get_cursor(tu, 'f')
-    args = f.type.argument_types()
-
-    args[-1]
-
- at raises(IndexError)
-def test_argument_types_overflow_index():
-    """Ensure that indexes beyond the length of Type.argument_types() raise."""
-    tu = get_tu('void f(int, int);')
-    f = get_cursor(tu, 'f')
-    args = f.type.argument_types()
-
-    args[2]
-
- at raises(Exception)
-def test_argument_types_invalid_type():
-    """Ensure that obtaining argument_types on a Type without them raises."""
-    tu = get_tu('int i;')
-    i = get_cursor(tu, 'i')
-    assert i is not None
-
-    i.type.argument_types()
-
-def test_is_pod():
-    """Ensure Type.is_pod() works."""
-    tu = get_tu('int i; void f();')
-    i = get_cursor(tu, 'i')
-    f = get_cursor(tu, 'f')
-
-    assert i is not None
-    assert f is not None
-
-    assert i.type.is_pod()
-    assert not f.type.is_pod()
-
-def test_function_variadic():
-    """Ensure Type.is_function_variadic works."""
-
-    source ="""
-#include <stdarg.h>
-
-void foo(int a, ...);
-void bar(int a, int b);
-"""
-
-    tu = get_tu(source)
-    foo = get_cursor(tu, 'foo')
-    bar = get_cursor(tu, 'bar')
-
-    assert foo is not None
-    assert bar is not None
-
-    assert isinstance(foo.type.is_function_variadic(), bool)
-    assert foo.type.is_function_variadic()
-    assert not bar.type.is_function_variadic()
-
-def test_element_type():
-    """Ensure Type.element_type works."""
-    tu = get_tu('int i[5];')
-    i = get_cursor(tu, 'i')
-    assert i is not None
-
-    assert i.type.kind == TypeKind.CONSTANTARRAY
-    assert i.type.element_type.kind == TypeKind.INT
-
- at raises(Exception)
-def test_invalid_element_type():
-    """Ensure Type.element_type raises if type doesn't have elements."""
-    tu = get_tu('int i;')
-    i = get_cursor(tu, 'i')
-    assert i is not None
-    i.element_type
-
-def test_element_count():
-    """Ensure Type.element_count works."""
-    tu = get_tu('int i[5]; int j;')
-    i = get_cursor(tu, 'i')
-    j = get_cursor(tu, 'j')
-
-    assert i is not None
-    assert j is not None
-
-    assert i.type.element_count == 5
-
-    try:
-        j.type.element_count
-        assert False
-    except:
-        assert True
-
-def test_is_volatile_qualified():
-    """Ensure Type.is_volatile_qualified works."""
-
-    tu = get_tu('volatile int i = 4; int j = 2;')
-
-    i = get_cursor(tu, 'i')
-    j = get_cursor(tu, 'j')
-
-    assert i is not None
-    assert j is not None
-
-    assert isinstance(i.type.is_volatile_qualified(), bool)
-    assert i.type.is_volatile_qualified()
-    assert not j.type.is_volatile_qualified()
-
-def test_is_restrict_qualified():
-    """Ensure Type.is_restrict_qualified works."""
-
-    tu = get_tu('struct s { void * restrict i; void * j; };')
-
-    i = get_cursor(tu, 'i')
-    j = get_cursor(tu, 'j')
-
-    assert i is not None
-    assert j is not None
-
-    assert isinstance(i.type.is_restrict_qualified(), bool)
-    assert i.type.is_restrict_qualified()
-    assert not j.type.is_restrict_qualified()
-
-def test_record_layout():
-    """Ensure Cursor.type.get_size, Cursor.type.get_align and
-    Cursor.type.get_offset works."""
-
-    source ="""
-struct a {
-    long a1;
-    long a2:3;
-    long a3:4;
-    long long a4;
-};
-"""
-    tries=[(['-target','i386-linux-gnu'],(4,16,0,32,35,64)),
-           (['-target','nvptx64-unknown-unknown'],(8,24,0,64,67,128)),
-           (['-target','i386-pc-win32'],(8,16,0,32,35,64)),
-           (['-target','msp430-none-none'],(2,14,0,32,35,48))]
-    for flags, values in tries:
-        align,total,a1,a2,a3,a4 = values
-
-        tu = get_tu(source, flags=flags)
-        teststruct = get_cursor(tu, 'a')
-        fields = list(teststruct.get_children())
-
-        assert teststruct.type.get_align() == align
-        assert teststruct.type.get_size() == total
-        assert teststruct.type.get_offset(fields[0].spelling) == a1
-        assert teststruct.type.get_offset(fields[1].spelling) == a2
-        assert teststruct.type.get_offset(fields[2].spelling) == a3
-        assert teststruct.type.get_offset(fields[3].spelling) == a4
-        assert fields[0].is_bitfield() == False
-        assert fields[1].is_bitfield() == True
-        assert fields[1].get_bitfield_width() == 3
-        assert fields[2].is_bitfield() == True
-        assert fields[2].get_bitfield_width() == 4
-        assert fields[3].is_bitfield() == False
-
-def test_offset():
-    """Ensure Cursor.get_record_field_offset works in anonymous records"""
-    source="""
-struct Test {
-  struct {
-    int bariton;
-    union {
-      int foo;
-    };
-  };
-  int bar;
-};"""
-    tries=[(['-target','i386-linux-gnu'],(4,16,0,32,64)),
-           (['-target','nvptx64-unknown-unknown'],(8,24,0,32,64)),
-           (['-target','i386-pc-win32'],(8,16,0,32,64)),
-           (['-target','msp430-none-none'],(2,14,0,32,64))]
-    for flags, values in tries:
-        align,total,bariton,foo,bar = values
-        tu = get_tu(source)
-        teststruct = get_cursor(tu, 'Test')
-        fields = list(teststruct.get_children())
-        assert teststruct.type.get_offset("bariton") == bariton
-        assert teststruct.type.get_offset("foo") == foo
-        assert teststruct.type.get_offset("bar") == bar
-
-

Modified: trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/util.py
===================================================================
--- trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/util.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/bindings/python/tests/cindex/util.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,93 +0,0 @@
-# This file provides common utility functions for the test suite.
-
-from clang.cindex import Cursor
-from clang.cindex import TranslationUnit
-
-def get_tu(source, lang='c', all_warnings=False, flags=[]):
-    """Obtain a translation unit from source and language.
-
-    By default, the translation unit is created from source file "t.<ext>"
-    where <ext> is the default file extension for the specified language. By
-    default it is C, so "t.c" is the default file name.
-
-    Supported languages are {c, cpp, objc}.
-
-    all_warnings is a convenience argument to enable all compiler warnings.
-    """
-    args = list(flags)
-    name = 't.c'
-    if lang == 'cpp':
-        name = 't.cpp'
-        args.append('-std=c++11')
-    elif lang == 'objc':
-        name = 't.m'
-    elif lang != 'c':
-        raise Exception('Unknown language: %s' % lang)
-
-    if all_warnings:
-        args += ['-Wall', '-Wextra']
-
-    return TranslationUnit.from_source(name, args, unsaved_files=[(name,
-                                       source)])
-
-def get_cursor(source, spelling):
-    """Obtain a cursor from a source object.
-
-    This provides a convenient search mechanism to find a cursor with specific
-    spelling within a source. The first argument can be either a
-    TranslationUnit or Cursor instance.
-
-    If the cursor is not found, None is returned.
-    """
-    children = []
-    if isinstance(source, Cursor):
-        children = source.get_children()
-    else:
-        # Assume TU
-        children = source.cursor.get_children()
-
-    for cursor in children:
-        if cursor.spelling == spelling:
-            return cursor
-
-        # Recurse into children.
-        result = get_cursor(cursor, spelling)
-        if result is not None:
-            return result
-
-    return None
- 
-def get_cursors(source, spelling):
-    """Obtain all cursors from a source object with a specific spelling.
-
-    This provides a convenient search mechanism to find all cursors with specific
-    spelling within a source. The first argument can be either a
-    TranslationUnit or Cursor instance.
-
-    If no cursors are found, an empty list is returned.
-    """
-    cursors = []
-    children = []
-    if isinstance(source, Cursor):
-        children = source.get_children()
-    else:
-        # Assume TU
-        children = source.cursor.get_children()
-
-    for cursor in children:
-        if cursor.spelling == spelling:
-            cursors.append(cursor)
-
-        # Recurse into children.
-        cursors.extend(get_cursors(cursor, spelling))
-
-    return cursors
-
-    
-    
-
-__all__ = [
-    'get_cursor',
-    'get_cursors',
-    'get_tu',
-]

Modified: trunk/contrib/llvm/tools/clang/bindings/xml/comment-xml-schema.rng
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/docs/AddressSanitizer.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/AddressSanitizer.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/AddressSanitizer.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,163 +0,0 @@
-================
-AddressSanitizer
-================
-
-.. contents::
-   :local:
-
-Introduction
-============
-
-AddressSanitizer is a fast memory error detector. It consists of a compiler
-instrumentation module and a run-time library. The tool can detect the
-following types of bugs:
-
-* Out-of-bounds accesses to heap, stack and globals
-* Use-after-free
-* Use-after-return (to some extent)
-* Double-free, invalid free
-
-Typical slowdown introduced by AddressSanitizer is **2x**.
-
-How to build
-============
-
-Follow the `clang build instructions <../get_started.html>`_. CMake build is
-supported.
-
-Usage
-=====
-
-Simply compile and link your program with ``-fsanitize=address`` flag.  The
-AddressSanitizer run-time library should be linked to the final executable, so
-make sure to use ``clang`` (not ``ld``) for the final link step.  When linking
-shared libraries, the AddressSanitizer run-time is not linked, so
-``-Wl,-z,defs`` may cause link errors (don't use it with AddressSanitizer).  To
-get a reasonable performance add ``-O1`` or higher.  To get nicer stack traces
-in error messages add ``-fno-omit-frame-pointer``.  To get perfect stack traces
-you may need to disable inlining (just use ``-O1``) and tail call elimination
-(``-fno-optimize-sibling-calls``).
-
-.. code-block:: console
-
-    % cat example_UseAfterFree.cc
-    int main(int argc, char **argv) {
-      int *array = new int[100];
-      delete [] array;
-      return array[argc];  // BOOM
-    }
-
-    # Compile and link
-    % clang -O1 -g -fsanitize=address -fno-omit-frame-pointer example_UseAfterFree.cc
-
-or:
-
-.. code-block:: console
-
-    # Compile
-    % clang -O1 -g -fsanitize=address -fno-omit-frame-pointer -c example_UseAfterFree.cc
-    # Link
-    % clang -g -fsanitize=address example_UseAfterFree.o
-
-If a bug is detected, the program will print an error message to stderr and
-exit with a non-zero exit code. Currently, AddressSanitizer does not symbolize
-its output, so you may need to use a separate script to symbolize the result
-offline (this will be fixed in future).
-
-.. code-block:: console
-
-    % ./a.out 2> log
-    % projects/compiler-rt/lib/asan/scripts/asan_symbolize.py / < log | c++filt
-    ==9442== ERROR: AddressSanitizer heap-use-after-free on address 0x7f7ddab8c084 at pc 0x403c8c bp 0x7fff87fb82d0 sp 0x7fff87fb82c8
-    READ of size 4 at 0x7f7ddab8c084 thread T0
-        #0 0x403c8c in main example_UseAfterFree.cc:4
-        #1 0x7f7ddabcac4d in __libc_start_main ??:0
-    0x7f7ddab8c084 is located 4 bytes inside of 400-byte region [0x7f7ddab8c080,0x7f7ddab8c210)
-    freed by thread T0 here:
-        #0 0x404704 in operator delete[](void*) ??:0
-        #1 0x403c53 in main example_UseAfterFree.cc:4
-        #2 0x7f7ddabcac4d in __libc_start_main ??:0
-    previously allocated by thread T0 here:
-        #0 0x404544 in operator new[](unsigned long) ??:0
-        #1 0x403c43 in main example_UseAfterFree.cc:2
-        #2 0x7f7ddabcac4d in __libc_start_main ??:0
-    ==9442== ABORTING
-
-AddressSanitizer exits on the first detected error. This is by design.
-One reason: it makes the generated code smaller and faster (both by
-~5%). Another reason: this makes fixing bugs unavoidable. With Valgrind,
-it is often the case that users treat Valgrind warnings as false
-positives (which they are not) and don't fix them.
-
-``__has_feature(address_sanitizer)``
-------------------------------------
-
-In some cases one may need to execute different code depending on whether
-AddressSanitizer is enabled.
-:ref:`\_\_has\_feature <langext-__has_feature-__has_extension>` can be used for
-this purpose.
-
-.. code-block:: c
-
-    #if defined(__has_feature)
-    #  if __has_feature(address_sanitizer)
-    // code that builds only under AddressSanitizer
-    #  endif
-    #endif
-
-``__attribute__((no_sanitize_address))``
------------------------------------------------
-
-Some code should not be instrumented by AddressSanitizer. One may use the
-function attribute
-:ref:`no_sanitize_address <langext-address_sanitizer>`
-(or a deprecated synonym `no_address_safety_analysis`)
-to disable instrumentation of a particular function. This attribute may not be
-supported by other compilers, so we suggest to use it together with
-``__has_feature(address_sanitizer)``. Note: currently, this attribute will be
-lost if the function is inlined.
-
-Initialization order checking
------------------------------
-
-AddressSanitizer can optionally detect dynamic initialization order problems,
-when initialization of globals defined in one translation unit uses
-globals defined in another translation unit. To enable this check at runtime,
-you should set environment variable
-``ASAN_OPTIONS=check_initialization_order=1``.
-
-Supported Platforms
-===================
-
-AddressSanitizer is supported on
-
-* Linux i386/x86\_64 (tested on Ubuntu 10.04 and 12.04);
-* MacOS 10.6, 10.7 and 10.8 (i386/x86\_64).
-
-Support for Linux ARM (and Android ARM) is in progress (it may work, but
-is not guaranteed too).
-
-Limitations
-===========
-
-* AddressSanitizer uses more real memory than a native run. Exact overhead
-  depends on the allocations sizes. The smaller the allocations you make the
-  bigger the overhead is.
-* AddressSanitizer uses more stack memory. We have seen up to 3x increase.
-* On 64-bit platforms AddressSanitizer maps (but not reserves) 16+ Terabytes of
-  virtual address space. This means that tools like ``ulimit`` may not work as
-  usually expected.
-* Static linking is not supported.
-
-Current Status
-==============
-
-AddressSanitizer is fully functional on supported platforms starting from LLVM
-3.1. The test suite is integrated into CMake build and can be run with ``make
-check-asan`` command.
-
-More Information
-================
-
-`http://code.google.com/p/address-sanitizer <http://code.google.com/p/address-sanitizer/>`_
-

Modified: trunk/contrib/llvm/tools/clang/docs/AutomaticReferenceCounting.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/AutomaticReferenceCounting.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/AutomaticReferenceCounting.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2283 +0,0 @@
-.. FIXME: move to the stylesheet or Sphinx plugin
-
-.. raw:: html
-
-  <style>
-    .arc-term { font-style: italic; font-weight: bold; }
-    .revision { font-style: italic; }
-    .when-revised { font-weight: bold; font-style: normal; }
-
-    /*
-     * Automatic numbering is described in this article:
-     * http://dev.opera.com/articles/view/automatic-numbering-with-css-counters/
-     */
-    /*
-     * Automatic numbering for the TOC.
-     * This is wrong from the semantics point of view, since it is an ordered
-     * list, but uses "ul" tag.
-     */
-    div#contents.contents.local ul {
-      counter-reset: toc-section;
-      list-style-type: none;
-    }
-    div#contents.contents.local ul li {
-      counter-increment: toc-section;
-      background: none; // Remove bullets
-    }
-    div#contents.contents.local ul li a.reference:before {
-      content: counters(toc-section, ".") " ";
-    }
-
-    /* Automatic numbering for the body. */
-    body {
-      counter-reset: section subsection subsubsection;
-    }
-    .section h2 {
-      counter-reset: subsection subsubsection;
-      counter-increment: section;
-    }
-    .section h2 a.toc-backref:before {
-      content: counter(section) " ";
-    }
-    .section h3 {
-      counter-reset: subsubsection;
-      counter-increment: subsection;
-    }
-    .section h3 a.toc-backref:before {
-      content: counter(section) "." counter(subsection) " ";
-    }
-    .section h4 {
-      counter-increment: subsubsection;
-    }
-    .section h4 a.toc-backref:before {
-      content: counter(section) "." counter(subsection) "." counter(subsubsection) " ";
-    }
-  </style>
-
-.. role:: arc-term
-.. role:: revision
-.. role:: when-revised
-
-==============================================
-Objective-C Automatic Reference Counting (ARC)
-==============================================
-
-.. contents::
-   :local:
-
-.. _arc.meta:
-
-About this document
-===================
-
-.. _arc.meta.purpose:
-
-Purpose
--------
-
-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.
-
-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.
-
-.. _arc.meta.background:
-
-Background
-----------
-
-This document assumes a basic familiarity with C.
-
-:arc-term:`Blocks` are a C language extension for creating anonymous functions.
-Users interact with and transfer block objects using :arc-term:`block
-pointers`, 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 ``Block_copy`` 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
-``Block_release``, which decreases the reference count by 1 and destroys the
-object if the count reaches zero and is on the heap.
-
-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.
-
-Objective-C defines a new type kind, collectively called the :arc-term:`object
-pointer types`.  This kind has two notable builtin members, ``id`` and
-``Class``; ``id`` is the final supertype of all object pointers.  The validity
-of conversions between object pointer types is not checked at runtime.  Users
-may define :arc-term:`classes`; 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
-:arc-term:`ivars`, fields which appear on all instances of that class.  For
-every class *T* there's an associated metaclass; it has no fields, its
-superclass is the metaclass of *T*'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
-``Class``.
-
-A class declaration (``@interface``) declares a set of :arc-term:`methods`.  A
-method has a return type, a list of argument types, and a :arc-term:`selector`:
-a name like ``foo:bar:baz:``, 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 :arc-term:`receiver`) and a list of formal
-arguments interspersed with the selector, like so:
-
-.. code-block:: objc
-
-  [receiver foo: fooArg bar: barArg baz: bazArg]
-
-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 "expression" 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 ``super``, 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 ``@interface``, but
-those defined in a separate ``@implementation`` declaration; however, when
-compiling a call, typechecking is done based on the methods declared in the
-``@interface``.
-
-Method declarations may also be grouped into :arc-term:`protocols`, 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.
-
-:arc-term:`Class extensions` are collections of ivars and methods, designed to
-allow a class's ``@interface`` to be split across multiple files; however,
-there is still a primary implementation file which must see the
-``@interface``\ s of all class extensions.  :arc-term:`Categories` allow
-methods (but not ivars) to be declared *post hoc* on an arbitrary class; the
-methods in the category's ``@implementation`` 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.
-
-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: ``retain``
-increases the object's reference count by 1, whereas ``release`` decreases it
-by 1 and calls the instance method ``dealloc`` if the count reaches 0.  To
-simplify certain operations, there is also an :arc-term:`autorelease pool`, a
-thread-local list of objects to call ``release`` on later; an object can be
-added to this pool by calling ``autorelease`` on it.
-
-Block pointers may be converted to type ``id``; 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 ``retain`` by adjusting the reference count, not by calling
-``Block_copy``.
-
-.. _arc.meta.evolution:
-
-Evolution
----------
-
-ARC is under continual evolution, and this document must be updated as the
-language progresses.
-
-If a change increases the expressiveness of the language, for example by
-lifting a restriction or by adding new syntax, the change will be annotated
-with a revision marker, like so:
-
-  ARC applies to Objective-C pointer types, block pointer types, and
-  :when-revised:`[beginning Apple 8.0, LLVM 3.8]` :revision:`BPTRs declared
-  within` ``extern "BCPL"`` blocks.
-
-For now, it is sensible to version this document by the releases of its sole
-implementation (and its host project), clang.  "LLVM X.Y" refers to an
-open-source release of clang from the LLVM project.  "Apple X.Y" refers to an
-Apple-provided release of the Apple LLVM Compiler.  Other organizations that
-prepare their own, separately-versioned clang releases and wish to maintain
-similar information in this document should send requests to cfe-dev.
-
-If a change decreases the expressiveness of the language, for example by
-imposing a new restriction, this should be taken as an oversight in the
-original specification and something to be avoided in all versions.  Such
-changes are generally to be avoided.
-
-.. _arc.general:
-
-General
-=======
-
-Automatic Reference Counting implements automatic memory management for
-Objective-C objects and blocks, freeing the programmer from the need to
-explicitly insert retains and releases.  It does not provide a cycle collector;
-users must explicitly manage the lifetime of their objects, breaking cycles
-manually or with weak or unsafe references.
-
-ARC may be explicitly enabled with the compiler flag ``-fobjc-arc``.  It may
-also be explicitly disabled with the compiler flag ``-fno-objc-arc``.  The last
-of these two flags appearing on the compile line "wins".
-
-If ARC is enabled, ``__has_feature(objc_arc)`` will expand to 1 in the
-preprocessor.  For more information about ``__has_feature``, see the
-:ref:`language extensions <langext-__has_feature-__has_extension>` document.
-
-.. _arc.objects:
-
-Retainable object pointers
-==========================
-
-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 *values* (patterns of bits indicating the location
-of a pointed-to object), not pointer *objects* (locations in memory which store
-pointer values).  The rules for objects are covered in the next section.
-
-A :arc-term:`retainable object pointer` (or "retainable pointer") is a value of
-a :arc-term:`retainable object pointer type` ("retainable type").  There are
-three kinds of retainable object pointer types:
-
-* block pointers (formed by applying the caret (``^``) declarator sigil to a
-  function type)
-* Objective-C object pointers (``id``, ``Class``, ``NSFoo*``, etc.)
-* typedefs marked with ``__attribute__((NSObject))``
-
-Other pointer types, such as ``int*`` and ``CFStringRef``, are not subject to
-ARC's semantics and restrictions.
-
-.. admonition:: 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:
-
-  * The type system must reliably identify which objects are to be managed.  An
-    ``int*`` might be a pointer to a ``malloc``'ed array, or it might be an
-    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.
-
-  * 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.
-
-  * There must be reliable conventions for whether and when "ownership" 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.
-
-The use of ``__attribute__((NSObject))`` 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
-``__typeof`` and C++ template argument substitution.
-
-.. admonition:: Rationale
-
-  Any compiler operation which incidentally strips type "sugar" from a type
-  will yield a type without the attribute, which may result in unexpected
-  behavior.
-
-.. _arc.objects.retains:
-
-Retain count semantics
-----------------------
-
-A retainable object pointer is either a :arc-term:`null pointer` or a pointer
-to a valid object.  Furthermore, if it has block pointer type and is not
-``null`` then it must actually be a pointer to a block object, and if it has
-``Class`` 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.
-
-For ARC's purposes, a valid object is one with "well-behaved" retaining
-operations.  Specifically, the object must be laid out such that the
-Objective-C message send machinery can successfully send it the following
-messages:
-
-* ``retain``, taking no arguments and returning a pointer to the object.
-* ``release``, taking no arguments and returning ``void``.
-* ``autorelease``, taking no arguments and returning a pointer to the object.
-
-The behavior of these methods is constrained in the following ways.  The term
-:arc-term:`high-level semantics` 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 ``retain``, 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.
-
-It is undefined behavior if a computation history featuring a send of
-``retain`` followed by a send of ``release`` to the same object, with no
-intervening ``release`` 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.
-
-It is undefined behavior if a computation history features any use whatsoever
-of an object following the completion of a send of ``release`` that is not
-preceded by a send of ``retain`` to the same object.
-
-The behavior of ``autorelease`` must be equivalent to sending ``release`` when
-one of the autorelease pools currently in scope is popped.  It may not throw an
-exception.
-
-When the semantics call for performing one of these operations on a retainable
-object pointer, if that pointer is ``null`` then the effect is a no-op.
-
-All of the semantics described in this document are subject to additional
-:ref:`optimization rules <arc.optimization>` 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.
-
-.. _arc.objects.operands:
-
-Retainable object pointers as operands and arguments
-----------------------------------------------------
-
-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:
-
-* loading a retainable pointer from an object with non-weak :ref:`ownership
-  <arc.ownership>`,
-* passing a retainable pointer as an argument to a function or method, and
-* receiving a retainable pointer as the result of a function or method call.
-
-.. admonition:: Rationale
-
-  While this might seem uncontroversial, it is actually unsafe when multiple
-  expressions are evaluated in "parallel", 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.
-
-The remainder of this section describes exceptions to these rules, how those
-exceptions are detected, and what those exceptions imply semantically.
-
-.. _arc.objects.operands.consumed:
-
-Consumed parameters
-^^^^^^^^^^^^^^^^^^^
-
-A function or method parameter of retainable object pointer type may be marked
-as :arc-term:`consumed`, signifying that the callee expects to take ownership
-of a +1 retain count.  This is done by adding the ``ns_consumed`` attribute to
-the parameter declaration, like so:
-
-.. code-block:: objc
-
-  void foo(__attribute((ns_consumed)) id x);
-  - (void) foo: (id) __attribute((ns_consumed)) x;
-
-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.
-
-When passing such an argument, ARC retains the argument prior to making the
-call.
-
-When receiving such an argument, ARC releases the argument at the end of the
-function, subject to the usual optimizations for local values.
-
-.. admonition:: Rationale
-
-  This formalizes direct transfers of ownership from a caller to a callee.  The
-  most common scenario here is passing the ``self`` parameter to ``init``, 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.
-
-The implicit ``self`` parameter of a method may be marked as consumed by adding
-``__attribute__((ns_consumes_self))`` to the method declaration.  Methods in
-the ``init`` :ref:`family <arc.method-families>` are treated as if they were
-implicitly marked with this attribute.
-
-It is undefined behavior if an Objective-C message send to a method with
-``ns_consumed`` 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 ``ns_consumed`` 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
-``ns_consumed`` parameters than the implementation of the called block or
-function.
-
-.. admonition:: 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.
-
-.. _arc.object.operands.retained-return-values:
-
-Retained return values
-^^^^^^^^^^^^^^^^^^^^^^
-
-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
-``ns_returns_retained`` attribute to the function or method declaration, like
-so:
-
-.. code-block:: objc
-
-  id foo(void) __attribute((ns_returns_retained));
-  - (id) foo __attribute((ns_returns_retained));
-
-This attribute is part of the type of the function or method.
-
-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.
-
-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.
-
-.. admonition:: Rationale
-
-  This formalizes direct transfers of ownership from a callee to a caller.  The
-  most common scenario this models is the retained return from ``init``,
-  ``alloc``, ``new``, and ``copy`` methods, but there are other cases in the
-  frameworks.  After optimization there are typically no extra retains and
-  releases required.
-
-Methods in the ``alloc``, ``copy``, ``init``, ``mutableCopy``, and ``new``
-:ref:`families <arc.method-families>` are implicitly marked
-``__attribute__((ns_returns_retained))``.  This may be suppressed by explicitly
-marking the method ``__attribute__((ns_returns_not_retained))``.
-
-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.
-
-.. admonition:: 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.
-
-.. _arc.objects.operands.unretained-returns:
-
-Unretained return values
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-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.
-
-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 ``autorelease``, but
-callers must not assume that the value is actually in the autorelease pool.
-
-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.
-
-.. admonition:: 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.
-
-A method or function may be marked with
-``__attribute__((ns_returns_autoreleased))`` 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.
-
-.. _arc.objects.operands.casts:
-
-Bridged casts
-^^^^^^^^^^^^^
-
-A :arc-term:`bridged cast` is a C-style cast annotated with one of three
-keywords:
-
-* ``(__bridge T) op`` casts the operand to the destination type ``T``.  If
-  ``T`` is a retainable object pointer type, then ``op`` must have a
-  non-retainable pointer type.  If ``T`` is a non-retainable pointer type,
-  then ``op`` 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.
-* ``(__bridge_retained T) op`` 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.
-* ``(__bridge_transfer T) op`` 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.
-
-These casts are required in order to transfer objects in and out of ARC
-control; see the rationale in the section on :ref:`conversion of retainable
-object pointers <arc.objects.restrictions.conversion>`.
-
-Using a ``__bridge_retained`` or ``__bridge_transfer`` cast purely to convince
-ARC to emit an unbalanced retain or release, respectively, is poor form.
-
-.. _arc.objects.restrictions:
-
-Restrictions
-------------
-
-.. _arc.objects.restrictions.conversion:
-
-Conversion of retainable object pointers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-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 ``void*``.  As an exception, cast to ``intptr_t`` is
-allowed because such casts are not transferring ownership.  The :ref:`bridged
-casts <arc.objects.operands.casts>` may be used to perform these conversions
-where necessary.
-
-.. admonition:: 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.
-
-However, the following exceptions apply.
-
-.. _arc.objects.restrictions.conversion.with.known.semantics:
-
-Conversion to retainable object pointer type of expressions with known semantics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:when-revised:`[beginning Apple 4.0, LLVM 3.1]`
-:revision:`These exceptions have been greatly expanded; they previously applied
-only to a much-reduced subset which is difficult to categorize but which
-included null pointers, message sends (under the given rules), and the various
-global constants.`
-
-An unbridged conversion to a retainable object pointer type from a type other
-than a retainable object pointer type is ill-formed, as discussed above, unless
-the operand of the cast has a syntactic form which is known retained, known
-unretained, or known retain-agnostic.
-
-An expression is :arc-term:`known retain-agnostic` if it is:
-
-* an Objective-C string literal,
-* a load from a ``const`` system global variable of :ref:`C retainable pointer
-  type <arc.misc.c-retainable>`, or
-* a null pointer constant.
-
-An expression is :arc-term:`known unretained` if it is an rvalue of :ref:`C
-retainable pointer type <arc.misc.c-retainable>` and it is:
-
-* a direct call to a function, and either that function has the
-  ``cf_returns_not_retained`` attribute or it is an :ref:`audited
-  <arc.misc.c-retainable.audit>` function that does not have the
-  ``cf_returns_retained`` attribute and does not follow the create/copy naming
-  convention,
-* a message send, and the declared method either has the
-  ``cf_returns_not_retained`` attribute or it has neither the
-  ``cf_returns_retained`` attribute nor a :ref:`selector family
-  <arc.method-families>` that implies a retained result.
-
-An expression is :arc-term:`known retained` if it is an rvalue of :ref:`C
-retainable pointer type <arc.misc.c-retainable>` and it is:
-
-* a message send, and the declared method either has the
-  ``cf_returns_retained`` attribute, or it does not have the
-  ``cf_returns_not_retained`` attribute but it does have a :ref:`selector
-  family <arc.method-families>` that implies a retained result.
-
-Furthermore:
-
-* a comma expression is classified according to its right-hand side,
-* a statement expression is classified according to its result expression, if
-  it has one,
-* an lvalue-to-rvalue conversion applied to an Objective-C property lvalue is
-  classified according to the underlying message send, and
-* a conditional operator is classified according to its second and third
-  operands, if they agree in classification, or else the other if one is known
-  retain-agnostic.
-
-If the cast operand is known retained, the conversion is treated as a
-``__bridge_transfer`` cast.  If the cast operand is known unretained or known
-retain-agnostic, the conversion is treated as a ``__bridge`` cast.
-
-.. admonition:: Rationale
-
-  Bridging casts are annoying.  Absent the ability to completely automate the
-  management of CF objects, however, we are left with relatively poor attempts
-  to reduce the need for a glut of explicit bridges.  Hence these rules.
-
-  We've so far consciously refrained from implicitly turning retained CF
-  results from function calls into ``__bridge_transfer`` casts.  The worry is
-  that some code patterns  ---  for example, creating a CF value, assigning it
-  to an ObjC-typed local, and then calling ``CFRelease`` when done  ---  are a
-  bit too likely to be accidentally accepted, leading to mysterious behavior.
-
-.. _arc.objects.restrictions.conversion-exception-contextual:
-
-Conversion from retainable object pointer type in certain contexts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:when-revised:`[beginning Apple 4.0, LLVM 3.1]`
-
-If an expression of retainable object pointer type is explicitly cast to a
-:ref:`C retainable pointer type <arc.misc.c-retainable>`, the program is
-ill-formed as discussed above unless the result is immediately used:
-
-* to initialize a parameter in an Objective-C message send where the parameter
-  is not marked with the ``cf_consumed`` attribute, or
-* to initialize a parameter in a direct call to an
-  :ref:`audited <arc.misc.c-retainable.audit>` function where the parameter is
-  not marked with the ``cf_consumed`` attribute.
-
-.. admonition:: Rationale
-
-  Consumed parameters are left out because ARC would naturally balance them
-  with a retain, which was judged too treacherous.  This is in part because
-  several of the most common consuming functions are in the ``Release`` family,
-  and it would be quite unfortunate for explicit releases to be silently
-  balanced out in this way.
-
-.. _arc.ownership:
-
-Ownership qualification
-=======================
-
-This section describes the behavior of *objects* of retainable object pointer
-type; that is, locations in memory which store retainable object pointers.
-
-A type is a :arc-term:`retainable object owner type` if it is a retainable
-object pointer type or an array type whose element type is a retainable object
-owner type.
-
-An :arc-term:`ownership qualifier` is a type qualifier which applies only to
-retainable object owner types.  An array type is ownership-qualified according
-to its element type, and adding an ownership qualifier to an array type so
-qualifies its element type.
-
-A program is ill-formed if it attempts to apply an ownership qualifier to a
-type which is already ownership-qualified, even if it is the same qualifier.
-There is a single exception to this rule: an ownership qualifier may be applied
-to a substituted template type parameter, which overrides the ownership
-qualifier provided by the template argument.
-
-When forming a function type, the result type is adjusted so that any
-top-level ownership qualifier is deleted.
-
-Except as described under the :ref:`inference rules <arc.ownership.inference>`,
-a program is ill-formed if it attempts to form a pointer or reference type to a
-retainable object owner type which lacks an ownership qualifier.
-
-.. admonition:: Rationale
-
-  These rules, together with the inference rules, ensure that all objects and
-  lvalues of retainable object pointer type have an ownership qualifier.  The
-  ability to override an ownership qualifier during template substitution is
-  required to counteract the :ref:`inference of __strong for template type
-  arguments <arc.ownership.inference.template.arguments>`.  Ownership qualifiers
-  on return types are dropped because they serve no purpose there except to
-  cause spurious problems with overloading and templates.
-
-There are four ownership qualifiers:
-
-* ``__autoreleasing``
-* ``__strong``
-* ``__unsafe_unretained``
-* ``__weak``
-
-A type is :arc-term:`nontrivially ownership-qualified` if it is qualified with
-``__autoreleasing``, ``__strong``, or ``__weak``.
-
-.. _arc.ownership.spelling:
-
-Spelling
---------
-
-The names of the ownership qualifiers are reserved for the implementation.  A
-program may not assume that they are or are not implemented with macros, or
-what those macros expand to.
-
-An ownership qualifier may be written anywhere that any other type qualifier
-may be written.
-
-If an ownership qualifier appears in the *declaration-specifiers*, the
-following rules apply:
-
-* if the type specifier is a retainable object owner type, the qualifier
-  initially applies to that type;
-
-* otherwise, if the outermost non-array declarator is a pointer
-  or block pointer declarator, the qualifier initially applies to
-  that type;
-
-* otherwise the program is ill-formed.
-
-* If the qualifier is so applied at a position in the declaration
-  where the next-innermost declarator is a function declarator, and
-  there is an block declarator within that function declarator, then
-  the qualifier applies instead to that block declarator and this rule
-  is considered afresh beginning from the new position.
-
-If an ownership qualifier appears on the declarator name, or on the declared
-object, it is applied to the innermost pointer or block-pointer type.
-
-If an ownership qualifier appears anywhere else in a declarator, it applies to
-the type there.
-
-.. admonition:: Rationale
-
-  Ownership qualifiers are like ``const`` and ``volatile`` in the sense
-  that they may sensibly apply at multiple distinct positions within a
-  declarator.  However, unlike those qualifiers, there are many
-  situations where they are not meaningful, and so we make an effort
-  to "move" the qualifier to a place where it will be meaningful.  The
-  general goal is to allow the programmer to write, say, ``__strong``
-  before the entire declaration and have it apply in the leftmost
-  sensible place.
-
-.. _arc.ownership.spelling.property:
-
-Property declarations
-^^^^^^^^^^^^^^^^^^^^^
-
-A property of retainable object pointer type may have ownership.  If the
-property's type is ownership-qualified, then the property has that ownership.
-If the property has one of the following modifiers, then the property has the
-corresponding ownership.  A property is ill-formed if it has conflicting
-sources of ownership, or if it has redundant ownership modifiers, or if it has
-``__autoreleasing`` ownership.
-
-* ``assign`` implies ``__unsafe_unretained`` ownership.
-* ``copy`` implies ``__strong`` ownership, as well as the usual behavior of
-  copy semantics on the setter.
-* ``retain`` implies ``__strong`` ownership.
-* ``strong`` implies ``__strong`` ownership.
-* ``unsafe_unretained`` implies ``__unsafe_unretained`` ownership.
-* ``weak`` implies ``__weak`` ownership.
-
-With the exception of ``weak``, these modifiers are available in non-ARC
-modes.
-
-A property's specified ownership is preserved in its metadata, but otherwise
-the meaning is purely conventional unless the property is synthesized.  If a
-property is synthesized, then the :arc-term:`associated instance variable` is
-the instance variable which is named, possibly implicitly, by the
-``@synthesize`` declaration.  If the associated instance variable already
-exists, then its ownership qualification must equal the ownership of the
-property; otherwise, the instance variable is created with that ownership
-qualification.
-
-A property of retainable object pointer type which is synthesized without a
-source of ownership has the ownership of its associated instance variable, if it
-already exists; otherwise, :when-revised:`[beginning Apple 3.1, LLVM 3.1]`
-:revision:`its ownership is implicitly` ``strong``.  Prior to this revision, it
-was ill-formed to synthesize such a property.
-
-.. admonition:: Rationale
-
-  Using ``strong`` by default is safe and consistent with the generic ARC rule
-  about :ref:`inferring ownership <arc.ownership.inference.variables>`.  It is,
-  unfortunately, inconsistent with the non-ARC rule which states that such
-  properties are implicitly ``assign``.  However, that rule is clearly
-  untenable in ARC, since it leads to default-unsafe code.  The main merit to
-  banning the properties is to avoid confusion with non-ARC practice, which did
-  not ultimately strike us as sufficient to justify requiring extra syntax and
-  (more importantly) forcing novices to understand ownership rules just to
-  declare a property when the default is so reasonable.  Changing the rule away
-  from non-ARC practice was acceptable because we had conservatively banned the
-  synthesis in order to give ourselves exactly this leeway.
-
-Applying ``__attribute__((NSObject))`` to a property not of retainable object
-pointer type has the same behavior it does outside of ARC: it requires the
-property type to be some sort of pointer and permits the use of modifiers other
-than ``assign``.  These modifiers only affect the synthesized getter and
-setter; direct accesses to the ivar (even if synthesized) still have primitive
-semantics, and the value in the ivar will not be automatically released during
-deallocation.
-
-.. _arc.ownership.semantics:
-
-Semantics
----------
-
-There are five :arc-term:`managed operations` which may be performed on an
-object of retainable object pointer type.  Each qualifier specifies different
-semantics for each of these operations.  It is still undefined behavior to
-access an object outside of its lifetime.
-
-A load or store with "primitive semantics" has the same semantics as the
-respective operation would have on an ``void*`` lvalue with the same alignment
-and non-ownership qualification.
-
-:arc-term:`Reading` occurs when performing a lvalue-to-rvalue conversion on an
-object lvalue.
-
-* For ``__weak`` objects, the current pointee is retained and then released at
-  the end of the current full-expression.  This must execute atomically with
-  respect to assignments and to the final release of the pointee.
-* For all other objects, the lvalue is loaded with primitive semantics.
-
-:arc-term:`Assignment` occurs when evaluating an assignment operator.  The
-semantics vary based on the qualification:
-
-* For ``__strong`` objects, the new pointee is first retained; second, the
-  lvalue is loaded with primitive semantics; third, the new pointee is stored
-  into the lvalue with primitive semantics; and finally, the old pointee is
-  released.  This is not performed atomically; external synchronization must be
-  used to make this safe in the face of concurrent loads and stores.
-* For ``__weak`` objects, the lvalue is updated to point to the new pointee,
-  unless the new pointee is an object currently undergoing deallocation, in
-  which case the lvalue is updated to a null pointer.  This must execute
-  atomically with respect to other assignments to the object, to reads from the
-  object, and to the final release of the new pointee.
-* For ``__unsafe_unretained`` objects, the new pointee is stored into the
-  lvalue using primitive semantics.
-* For ``__autoreleasing`` objects, the new pointee is retained, autoreleased,
-  and stored into the lvalue using primitive semantics.
-
-:arc-term:`Initialization` occurs when an object's lifetime begins, which
-depends on its storage duration.  Initialization proceeds in two stages:
-
-#. First, a null pointer is stored into the lvalue using primitive semantics.
-   This step is skipped if the object is ``__unsafe_unretained``.
-#. Second, if the object has an initializer, that expression is evaluated and
-   then assigned into the object using the usual assignment semantics.
-
-:arc-term:`Destruction` occurs when an object's lifetime ends.  In all cases it
-is semantically equivalent to assigning a null pointer to the object, with the
-proviso that of course the object cannot be legally read after the object's
-lifetime ends.
-
-:arc-term:`Moving` occurs in specific situations where an lvalue is "moved
-from", meaning that its current pointee will be used but the object may be left
-in a different (but still valid) state.  This arises with ``__block`` variables
-and rvalue references in C++.  For ``__strong`` lvalues, moving is equivalent
-to loading the lvalue with primitive semantics, writing a null pointer to it
-with primitive semantics, and then releasing the result of the load at the end
-of the current full-expression.  For all other lvalues, moving is equivalent to
-reading the object.
-
-.. _arc.ownership.restrictions:
-
-Restrictions
-------------
-
-.. _arc.ownership.restrictions.weak:
-
-Weak-unavailable types
-^^^^^^^^^^^^^^^^^^^^^^
-
-It is explicitly permitted for Objective-C classes to not support ``__weak``
-references.  It is undefined behavior to perform an operation with weak
-assignment semantics with a pointer to an Objective-C object whose class does
-not support ``__weak`` references.
-
-.. admonition:: Rationale
-
-  Historically, it has been possible for a class to provide its own
-  reference-count implementation by overriding ``retain``, ``release``, etc.
-  However, weak references to an object require coordination with its class's
-  reference-count implementation because, among other things, weak loads and
-  stores must be atomic with respect to the final release.  Therefore, existing
-  custom reference-count implementations will generally not support weak
-  references without additional effort.  This is unavoidable without breaking
-  binary compatibility.
-
-A class may indicate that it does not support weak references by providing the
-``objc_arc_weak_unavailable`` attribute on the class's interface declaration.  A
-retainable object pointer type is **weak-unavailable** if
-is a pointer to an (optionally protocol-qualified) Objective-C class ``T`` where
-``T`` or one of its superclasses has the ``objc_arc_weak_unavailable``
-attribute.  A program is ill-formed if it applies the ``__weak`` ownership
-qualifier to a weak-unavailable type or if the value operand of a weak
-assignment operation has a weak-unavailable type.
-
-.. _arc.ownership.restrictions.autoreleasing:
-
-Storage duration of ``__autoreleasing`` objects
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A program is ill-formed if it declares an ``__autoreleasing`` object of
-non-automatic storage duration.  A program is ill-formed if it captures an
-``__autoreleasing`` object in a block or, unless by reference, in a C++11
-lambda.
-
-.. admonition:: Rationale
-
-  Autorelease pools are tied to the current thread and scope by their nature.
-  While it is possible to have temporary objects whose instance variables are
-  filled with autoreleased objects, there is no way that ARC can provide any
-  sort of safety guarantee there.
-
-It is undefined behavior if a non-null pointer is assigned to an
-``__autoreleasing`` object while an autorelease pool is in scope and then that
-object is read after the autorelease pool's scope is left.
-
-.. _arc.ownership.restrictions.conversion.indirect:
-
-Conversion of pointers to ownership-qualified types
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A program is ill-formed if an expression of type ``T*`` is converted,
-explicitly or implicitly, to the type ``U*``, where ``T`` and ``U`` have
-different ownership qualification, unless:
-
-* ``T`` is qualified with ``__strong``, ``__autoreleasing``, or
-  ``__unsafe_unretained``, and ``U`` is qualified with both ``const`` and
-  ``__unsafe_unretained``; or
-* either ``T`` or ``U`` is ``cv void``, where ``cv`` is an optional sequence
-  of non-ownership qualifiers; or
-* the conversion is requested with a ``reinterpret_cast`` in Objective-C++; or
-* the conversion is a well-formed :ref:`pass-by-writeback
-  <arc.ownership.restrictions.pass_by_writeback>`.
-
-The analogous rule applies to ``T&`` and ``U&`` in Objective-C++.
-
-.. admonition:: Rationale
-
-  These rules provide a reasonable level of type-safety for indirect pointers,
-  as long as the underlying memory is not deallocated.  The conversion to
-  ``const __unsafe_unretained`` is permitted because the semantics of reads are
-  equivalent across all these ownership semantics, and that's a very useful and
-  common pattern.  The interconversion with ``void*`` is useful for allocating
-  memory or otherwise escaping the type system, but use it carefully.
-  ``reinterpret_cast`` is considered to be an obvious enough sign of taking
-  responsibility for any problems.
-
-It is undefined behavior to access an ownership-qualified object through an
-lvalue of a differently-qualified type, except that any non-``__weak`` object
-may be read through an ``__unsafe_unretained`` lvalue.
-
-It is undefined behavior if a managed operation is performed on a ``__strong``
-or ``__weak`` object without a guarantee that it contains a primitive zero
-bit-pattern, or if the storage for such an object is freed or reused without the
-object being first assigned a null pointer.
-
-.. admonition:: Rationale
-
-  ARC cannot differentiate between an assignment operator which is intended to
-  "initialize" dynamic memory and one which is intended to potentially replace
-  a value.  Therefore the object's pointer must be valid before letting ARC at
-  it.  Similarly, C and Objective-C do not provide any language hooks for
-  destroying objects held in dynamic memory, so it is the programmer's
-  responsibility to avoid leaks (``__strong`` objects) and consistency errors
-  (``__weak`` objects).
-
-These requirements are followed automatically in Objective-C++ when creating
-objects of retainable object owner type with ``new`` or ``new[]`` and destroying
-them with ``delete``, ``delete[]``, or a pseudo-destructor expression.  Note
-that arrays of nontrivially-ownership-qualified type are not ABI compatible with
-non-ARC code because the element type is non-POD: such arrays that are
-``new[]``'d in ARC translation units cannot be ``delete[]``'d in non-ARC
-translation units and vice-versa.
-
-.. _arc.ownership.restrictions.pass_by_writeback:
-
-Passing to an out parameter by writeback
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If the argument passed to a parameter of type ``T __autoreleasing *`` has type
-``U oq *``, where ``oq`` is an ownership qualifier, then the argument is a
-candidate for :arc-term:`pass-by-writeback`` if:
-
-* ``oq`` is ``__strong`` or ``__weak``, and
-* it would be legal to initialize a ``T __strong *`` with a ``U __strong *``.
-
-For purposes of overload resolution, an implicit conversion sequence requiring
-a pass-by-writeback is always worse than an implicit conversion sequence not
-requiring a pass-by-writeback.
-
-The pass-by-writeback is ill-formed if the argument expression does not have a
-legal form:
-
-* ``&var``, where ``var`` is a scalar variable of automatic storage duration
-  with retainable object pointer type
-* a conditional expression where the second and third operands are both legal
-  forms
-* a cast whose operand is a legal form
-* a null pointer constant
-
-.. admonition:: Rationale
-
-  The restriction in the form of the argument serves two purposes.  First, it
-  makes it impossible to pass the address of an array to the argument, which
-  serves to protect against an otherwise serious risk of mis-inferring an
-  "array" argument as an out-parameter.  Second, it makes it much less likely
-  that the user will see confusing aliasing problems due to the implementation,
-  below, where their store to the writeback temporary is not immediately seen
-  in the original argument variable.
-
-A pass-by-writeback is evaluated as follows:
-
-#. The argument is evaluated to yield a pointer ``p`` of type ``U oq *``.
-#. If ``p`` is a null pointer, then a null pointer is passed as the argument,
-   and no further work is required for the pass-by-writeback.
-#. Otherwise, a temporary of type ``T __autoreleasing`` is created and
-   initialized to a null pointer.
-#. If the parameter is not an Objective-C method parameter marked ``out``,
-   then ``*p`` is read, and the result is written into the temporary with
-   primitive semantics.
-#. The address of the temporary is passed as the argument to the actual call.
-#. After the call completes, the temporary is loaded with primitive
-   semantics, and that value is assigned into ``*p``.
-
-.. admonition:: Rationale
-
-  This is all admittedly convoluted.  In an ideal world, we would see that a
-  local variable is being passed to an out-parameter and retroactively modify
-  its type to be ``__autoreleasing`` rather than ``__strong``.  This would be
-  remarkably difficult and not always well-founded under the C type system.
-  However, it was judged unacceptably invasive to require programmers to write
-  ``__autoreleasing`` on all the variables they intend to use for
-  out-parameters.  This was the least bad solution.
-
-.. _arc.ownership.restrictions.records:
-
-Ownership-qualified fields of structs and unions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A program is ill-formed if it declares a member of a C struct or union to have
-a nontrivially ownership-qualified type.
-
-.. admonition:: Rationale
-
-  The resulting type would be non-POD in the C++ sense, but C does not give us
-  very good language tools for managing the lifetime of aggregates, so it is
-  more convenient to simply forbid them.  It is still possible to manage this
-  with a ``void*`` or an ``__unsafe_unretained`` object.
-
-This restriction does not apply in Objective-C++.  However, nontrivally
-ownership-qualified types are considered non-POD: in C++11 terms, they are not
-trivially default constructible, copy constructible, move constructible, copy
-assignable, move assignable, or destructible.  It is a violation of C++'s One
-Definition Rule to use a class outside of ARC that, under ARC, would have a
-nontrivially ownership-qualified member.
-
-.. admonition:: Rationale
-
-  Unlike in C, we can express all the necessary ARC semantics for
-  ownership-qualified subobjects as suboperations of the (default) special
-  member functions for the class.  These functions then become non-trivial.
-  This has the non-obvious result that the class will have a non-trivial copy
-  constructor and non-trivial destructor; if this would not normally be true
-  outside of ARC, objects of the type will be passed and returned in an
-  ABI-incompatible manner.
-
-.. _arc.ownership.inference:
-
-Ownership inference
--------------------
-
-.. _arc.ownership.inference.variables:
-
-Objects
-^^^^^^^
-
-If an object is declared with retainable object owner type, but without an
-explicit ownership qualifier, its type is implicitly adjusted to have
-``__strong`` qualification.
-
-As a special case, if the object's base type is ``Class`` (possibly
-protocol-qualified), the type is adjusted to have ``__unsafe_unretained``
-qualification instead.
-
-.. _arc.ownership.inference.indirect_parameters:
-
-Indirect parameters
-^^^^^^^^^^^^^^^^^^^
-
-If a function or method parameter has type ``T*``, where ``T`` is an
-ownership-unqualified retainable object pointer type, then:
-
-* if ``T`` is ``const``-qualified or ``Class``, then it is implicitly
-  qualified with ``__unsafe_unretained``;
-* otherwise, it is implicitly qualified with ``__autoreleasing``.
-
-.. admonition:: Rationale
-
-  ``__autoreleasing`` exists mostly for this case, the Cocoa convention for
-  out-parameters.  Since a pointer to ``const`` is obviously not an
-  out-parameter, we instead use a type more useful for passing arrays.  If the
-  user instead intends to pass in a *mutable* array, inferring
-  ``__autoreleasing`` is the wrong thing to do; this directs some of the
-  caution in the following rules about writeback.
-
-Such a type written anywhere else would be ill-formed by the general rule
-requiring ownership qualifiers.
-
-This rule does not apply in Objective-C++ if a parameter's type is dependent in
-a template pattern and is only *instantiated* to a type which would be a
-pointer to an unqualified retainable object pointer type.  Such code is still
-ill-formed.
-
-.. admonition:: Rationale
-
-  The convention is very unlikely to be intentional in template code.
-
-.. _arc.ownership.inference.template.arguments:
-
-Template arguments
-^^^^^^^^^^^^^^^^^^
-
-If a template argument for a template type parameter is an retainable object
-owner type that does not have an explicit ownership qualifier, it is adjusted
-to have ``__strong`` qualification.  This adjustment occurs regardless of
-whether the template argument was deduced or explicitly specified.
-
-.. admonition:: Rationale
-
-  ``__strong`` is a useful default for containers (e.g., ``std::vector<id>``),
-  which would otherwise require explicit qualification.  Moreover, unqualified
-  retainable object pointer types are unlikely to be useful within templates,
-  since they generally need to have a qualifier applied to the before being
-  used.
-
-.. _arc.method-families:
-
-Method families
-===============
-
-An Objective-C method may fall into a :arc-term:`method family`, which is a
-conventional set of behaviors ascribed to it by the Cocoa conventions.
-
-A method is in a certain method family if:
-
-* it has a ``objc_method_family`` attribute placing it in that family; or if
-  not that,
-* it does not have an ``objc_method_family`` attribute placing it in a
-  different or no family, and
-* its selector falls into the corresponding selector family, and
-* its signature obeys the added restrictions of the method family.
-
-A selector is in a certain selector family if, ignoring any leading
-underscores, the first component of the selector either consists entirely of
-the name of the method family or it begins with that name followed by a
-character other than a lowercase letter.  For example, ``_perform:with:`` and
-``performWith:`` would fall into the ``perform`` family (if we recognized one),
-but ``performing:with`` would not.
-
-The families and their added restrictions are:
-
-* ``alloc`` methods must return a retainable object pointer type.
-* ``copy`` methods must return a retainable object pointer type.
-* ``mutableCopy`` methods must return a retainable object pointer type.
-* ``new`` methods must return a retainable object pointer type.
-* ``init`` methods must be instance methods and must return an Objective-C
-  pointer type.  Additionally, a program is ill-formed if it declares or
-  contains a call to an ``init`` method whose return type is neither ``id`` nor
-  a pointer to a super-class or sub-class of the declaring class (if the method
-  was declared on a class) or the static receiver type of the call (if it was
-  declared on a protocol).
-
-  .. admonition:: Rationale
-
-    There are a fair number of existing methods with ``init``-like selectors
-    which nonetheless don't follow the ``init`` conventions.  Typically these
-    are either accidental naming collisions or helper methods called during
-    initialization.  Because of the peculiar retain/release behavior of
-    ``init`` methods, it's very important not to treat these methods as
-    ``init`` methods if they aren't meant to be.  It was felt that implicitly
-    defining these methods out of the family based on the exact relationship
-    between the return type and the declaring class would be much too subtle
-    and fragile.  Therefore we identify a small number of legitimate-seeming
-    return types and call everything else an error.  This serves the secondary
-    purpose of encouraging programmers not to accidentally give methods names
-    in the ``init`` family.
-
-    Note that a method with an ``init``-family selector which returns a
-    non-Objective-C type (e.g. ``void``) is perfectly well-formed; it simply
-    isn't in the ``init`` family.
-
-A program is ill-formed if a method's declarations, implementations, and
-overrides do not all have the same method family.
-
-.. _arc.family.attribute:
-
-Explicit method family control
-------------------------------
-
-A method may be annotated with the ``objc_method_family`` attribute to
-precisely control which method family it belongs to.  If a method in an
-``@implementation`` does not have this attribute, but there is a method
-declared in the corresponding ``@interface`` that does, then the attribute is
-copied to the declaration in the ``@implementation``.  The attribute is
-available outside of ARC, and may be tested for with the preprocessor query
-``__has_attribute(objc_method_family)``.
-
-The attribute is spelled
-``__attribute__((objc_method_family(`` *family* ``)))``.  If *family* is
-``none``, the method has no family, even if it would otherwise be considered to
-have one based on its selector and type.  Otherwise, *family* must be one of
-``alloc``, ``copy``, ``init``, ``mutableCopy``, or ``new``, in which case the
-method is considered to belong to the corresponding family regardless of its
-selector.  It is an error if a method that is explicitly added to a family in
-this way does not meet the requirements of the family other than the selector
-naming convention.
-
-.. admonition:: Rationale
-
-  The rules codified in this document describe the standard conventions of
-  Objective-C.  However, as these conventions have not heretofore been enforced
-  by an unforgiving mechanical system, they are only imperfectly kept,
-  especially as they haven't always even been precisely defined.  While it is
-  possible to define low-level ownership semantics with attributes like
-  ``ns_returns_retained``, this attribute allows the user to communicate
-  semantic intent, which is of use both to ARC (which, e.g., treats calls to
-  ``init`` specially) and the static analyzer.
-
-.. _arc.family.semantics:
-
-Semantics of method families
-----------------------------
-
-A method's membership in a method family may imply non-standard semantics for
-its parameters and return type.
-
-Methods in the ``alloc``, ``copy``, ``mutableCopy``, and ``new`` families ---
-that is, methods in all the currently-defined families except ``init`` ---
-implicitly :ref:`return a retained object
-<arc.object.operands.retained-return-values>` as if they were annotated with
-the ``ns_returns_retained`` attribute.  This can be overridden by annotating
-the method with either of the ``ns_returns_autoreleased`` or
-``ns_returns_not_retained`` attributes.
-
-Properties also follow same naming rules as methods.  This means that those in
-the ``alloc``, ``copy``, ``mutableCopy``, and ``new`` families provide access
-to :ref:`retained objects <arc.object.operands.retained-return-values>`.  This
-can be overridden by annotating the property with ``ns_returns_not_retained``
-attribute.
-
-.. _arc.family.semantics.init:
-
-Semantics of ``init``
-^^^^^^^^^^^^^^^^^^^^^
-
-Methods in the ``init`` family implicitly :ref:`consume
-<arc.objects.operands.consumed>` their ``self`` parameter and :ref:`return a
-retained object <arc.object.operands.retained-return-values>`.  Neither of
-these properties can be altered through attributes.
-
-A call to an ``init`` method with a receiver that is either ``self`` (possibly
-parenthesized or casted) or ``super`` is called a :arc-term:`delegate init
-call`.  It is an error for a delegate init call to be made except from an
-``init`` method, and excluding blocks within such methods.
-
-As an exception to the :ref:`usual rule <arc.misc.self>`, the variable ``self``
-is mutable in an ``init`` method and has the usual semantics for a ``__strong``
-variable.  However, it is undefined behavior and the program is ill-formed, no
-diagnostic required, if an ``init`` method attempts to use the previous value
-of ``self`` after the completion of a delegate init call.  It is conventional,
-but not required, for an ``init`` method to return ``self``.
-
-It is undefined behavior for a program to cause two or more calls to ``init``
-methods on the same object, except that each ``init`` method invocation may
-perform at most one delegate init call.
-
-.. _arc.family.semantics.result_type:
-
-Related result types
-^^^^^^^^^^^^^^^^^^^^
-
-Certain methods are candidates to have :arc-term:`related result types`:
-
-* class methods in the ``alloc`` and ``new`` method families
-* instance methods in the ``init`` family
-* the instance method ``self``
-* outside of ARC, the instance methods ``retain`` and ``autorelease``
-
-If the formal result type of such a method is ``id`` or protocol-qualified
-``id``, or a type equal to the declaring class or a superclass, then it is said
-to have a related result type.  In this case, when invoked in an explicit
-message send, it is assumed to return a type related to the type of the
-receiver:
-
-* if it is a class method, and the receiver is a class name ``T``, the message
-  send expression has type ``T*``; otherwise
-* if it is an instance method, and the receiver has type ``T``, the message
-  send expression has type ``T``; otherwise
-* the message send expression has the normal result type of the method.
-
-This is a new rule of the Objective-C language and applies outside of ARC.
-
-.. admonition:: Rationale
-
-  ARC's automatic code emission is more prone than most code to signature
-  errors, i.e. errors where a call was emitted against one method signature,
-  but the implementing method has an incompatible signature.  Having more
-  precise type information helps drastically lower this risk, as well as
-  catching a number of latent bugs.
-
-.. _arc.optimization:
-
-Optimization
-============
-
-Within this section, the word :arc-term:`function` will be used to
-refer to any structured unit of code, be it a C function, an
-Objective-C method, or a block.
-
-This specification describes ARC as performing specific ``retain`` and
-``release`` operations on retainable object pointers at specific
-points during the execution of a program.  These operations make up a
-non-contiguous subsequence of the computation history of the program.
-The portion of this sequence for a particular retainable object
-pointer for which a specific function execution is directly
-responsible is the :arc-term:`formal local retain history` of the
-object pointer.  The corresponding actual sequence executed is the
-`dynamic local retain history`.
-
-However, under certain circumstances, ARC is permitted to re-order and
-eliminate operations in a manner which may alter the overall
-computation history beyond what is permitted by the general "as if"
-rule of C/C++ and the :ref:`restrictions <arc.objects.retains>` on
-the implementation of ``retain`` and ``release``.
-
-.. admonition:: Rationale
-
-  Specifically, ARC is sometimes permitted to optimize ``release``
-  operations in ways which might cause an object to be deallocated
-  before it would otherwise be.  Without this, it would be almost
-  impossible to eliminate any ``retain``/``release`` pairs.  For
-  example, consider the following code:
-
-  .. code-block:: objc
-
-    id x = _ivar;
-    [x foo];
-
-  If we were not permitted in any event to shorten the lifetime of the
-  object in ``x``, then we would not be able to eliminate this retain
-  and release unless we could prove that the message send could not
-  modify ``_ivar`` (or deallocate ``self``).  Since message sends are
-  opaque to the optimizer, this is not possible, and so ARC's hands
-  would be almost completely tied.
-
-ARC makes no guarantees about the execution of a computation history
-which contains undefined behavior.  In particular, ARC makes no
-guarantees in the presence of race conditions.
-
-ARC may assume that any retainable object pointers it receives or
-generates are instantaneously valid from that point until a point
-which, by the concurrency model of the host language, happens-after
-the generation of the pointer and happens-before a release of that
-object (possibly via an aliasing pointer or indirectly due to
-destruction of a different object).
-
-.. admonition:: Rationale
-
-  There is very little point in trying to guarantee correctness in the
-  presence of race conditions.  ARC does not have a stack-scanning
-  garbage collector, and guaranteeing the atomicity of every load and
-  store operation would be prohibitive and preclude a vast amount of
-  optimization.
-
-ARC may assume that non-ARC code engages in sensible balancing
-behavior and does not rely on exact or minimum retain count values
-except as guaranteed by ``__strong`` object invariants or +1 transfer
-conventions.  For example, if an object is provably double-retained
-and double-released, ARC may eliminate the inner retain and release;
-it does not need to guard against code which performs an unbalanced
-release followed by a "balancing" retain.
-
-.. _arc.optimization.liveness:
-
-Object liveness
----------------
-
-ARC may not allow a retainable object ``X`` to be deallocated at a
-time ``T`` in a computation history if:
-
-* ``X`` is the value stored in a ``__strong`` object ``S`` with
-  :ref:`precise lifetime semantics <arc.optimization.precise>`, or
-
-* ``X`` is the value stored in a ``__strong`` object ``S`` with
-  imprecise lifetime semantics and, at some point after ``T`` but
-  before the next store to ``S``, the computation history features a
-  load from ``S`` and in some way depends on the value loaded, or
-
-* ``X`` is a value described as being released at the end of the
-  current full-expression and, at some point after ``T`` but before
-  the end of the full-expression, the computation history depends
-  on that value.
-
-.. admonition:: Rationale
-
-  The intent of the second rule is to say that objects held in normal
-  ``__strong`` local variables may be released as soon as the value in
-  the variable is no longer being used: either the variable stops
-  being used completely or a new value is stored in the variable.
-
-  The intent of the third rule is to say that return values may be
-  released after they've been used.
-
-A computation history depends on a pointer value ``P`` if it:
-
-* performs a pointer comparison with ``P``,
-* loads from ``P``,
-* stores to ``P``,
-* depends on a pointer value ``Q`` derived via pointer arithmetic
-  from ``P`` (including an instance-variable or field access), or
-* depends on a pointer value ``Q`` loaded from ``P``.
-
-Dependency applies only to values derived directly or indirectly from
-a particular expression result and does not occur merely because a
-separate pointer value dynamically aliases ``P``.  Furthermore, this
-dependency is not carried by values that are stored to objects.
-
-.. admonition:: Rationale
-
-  The restrictions on dependency are intended to make this analysis
-  feasible by an optimizer with only incomplete information about a
-  program.  Essentially, dependence is carried to "obvious" uses of a
-  pointer.  Merely passing a pointer argument to a function does not
-  itself cause dependence, but since generally the optimizer will not
-  be able to prove that the function doesn't depend on that parameter,
-  it will be forced to conservatively assume it does.
-
-  Dependency propagates to values loaded from a pointer because those
-  values might be invalidated by deallocating the object.  For
-  example, given the code ``__strong id x = p->ivar;``, ARC must not
-  move the release of ``p`` to between the load of ``p->ivar`` and the
-  retain of that value for storing into ``x``.
-
-  Dependency does not propagate through stores of dependent pointer
-  values because doing so would allow dependency to outlive the
-  full-expression which produced the original value.  For example, the
-  address of an instance variable could be written to some global
-  location and then freely accessed during the lifetime of the local,
-  or a function could return an inner pointer of an object and store
-  it to a local.  These cases would be potentially impossible to
-  reason about and so would basically prevent any optimizations based
-  on imprecise lifetime.  There are also uncommon enough to make it
-  reasonable to require the precise-lifetime annotation if someone
-  really wants to rely on them.
-
-  Dependency does propagate through return values of pointer type.
-  The compelling source of need for this rule is a property accessor
-  which returns an un-autoreleased result; the calling function must
-  have the chance to operate on the value, e.g. to retain it, before
-  ARC releases the original pointer.  Note again, however, that
-  dependence does not survive a store, so ARC does not guarantee the
-  continued validity of the return value past the end of the
-  full-expression.
-
-.. _arc.optimization.object_lifetime:
-
-No object lifetime extension
-----------------------------
-
-If, in the formal computation history of the program, an object ``X``
-has been deallocated by the time of an observable side-effect, then
-ARC must cause ``X`` to be deallocated by no later than the occurrence
-of that side-effect, except as influenced by the re-ordering of the
-destruction of objects.
-
-.. admonition:: Rationale
-
-  This rule is intended to prohibit ARC from observably extending the
-  lifetime of a retainable object, other than as specified in this
-  document.  Together with the rule limiting the transformation of
-  releases, this rule requires ARC to eliminate retains and release
-  only in pairs.
-
-  ARC's power to reorder the destruction of objects is critical to its
-  ability to do any optimization, for essentially the same reason that
-  it must retain the power to decrease the lifetime of an object.
-  Unfortunately, while it's generally poor style for the destruction
-  of objects to have arbitrary side-effects, it's certainly possible.
-  Hence the caveat.
-
-.. _arc.optimization.precise:
-
-Precise lifetime semantics
---------------------------
-
-In general, ARC maintains an invariant that a retainable object pointer held in
-a ``__strong`` object will be retained for the full formal lifetime of the
-object.  Objects subject to this invariant have :arc-term:`precise lifetime
-semantics`.
-
-By default, local variables of automatic storage duration do not have precise
-lifetime semantics.  Such objects are simply strong references which hold
-values of retainable object pointer type, and these values are still fully
-subject to the optimizations on values under local control.
-
-.. admonition:: Rationale
-
-  Applying these precise-lifetime semantics strictly would be prohibitive.
-  Many useful optimizations that might theoretically decrease the lifetime of
-  an object would be rendered impossible.  Essentially, it promises too much.
-
-A local variable of retainable object owner type and automatic storage duration
-may be annotated with the ``objc_precise_lifetime`` attribute to indicate that
-it should be considered to be an object with precise lifetime semantics.
-
-.. admonition:: Rationale
-
-  Nonetheless, it is sometimes useful to be able to force an object to be
-  released at a precise time, even if that object does not appear to be used.
-  This is likely to be uncommon enough that the syntactic weight of explicitly
-  requesting these semantics will not be burdensome, and may even make the code
-  clearer.
-
-.. _arc.misc:
-
-Miscellaneous
-=============
-
-.. _arc.misc.special_methods:
-
-Special methods
----------------
-
-.. _arc.misc.special_methods.retain:
-
-Memory management methods
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A program is ill-formed if it contains a method definition, message send, or
-``@selector`` expression for any of the following selectors:
-
-* ``autorelease``
-* ``release``
-* ``retain``
-* ``retainCount``
-
-.. admonition:: Rationale
-
-  ``retainCount`` is banned because ARC robs it of consistent semantics.  The
-  others were banned after weighing three options for how to deal with message
-  sends:
-
-  **Honoring** them would work out very poorly if a programmer naively or
-  accidentally tried to incorporate code written for manual retain/release code
-  into an ARC program.  At best, such code would do twice as much work as
-  necessary; quite frequently, however, ARC and the explicit code would both
-  try to balance the same retain, leading to crashes.  The cost is losing the
-  ability to perform "unrooted" retains, i.e. retains not logically
-  corresponding to a strong reference in the object graph.
-
-  **Ignoring** them would badly violate user expectations about their code.
-  While it *would* make it easier to develop code simultaneously for ARC and
-  non-ARC, there is very little reason to do so except for certain library
-  developers.  ARC and non-ARC translation units share an execution model and
-  can seamlessly interoperate.  Within a translation unit, a developer who
-  faithfully maintains their code in non-ARC mode is suffering all the
-  restrictions of ARC for zero benefit, while a developer who isn't testing the
-  non-ARC mode is likely to be unpleasantly surprised if they try to go back to
-  it.
-
-  **Banning** them has the disadvantage of making it very awkward to migrate
-  existing code to ARC.  The best answer to that, given a number of other
-  changes and restrictions in ARC, is to provide a specialized tool to assist
-  users in that migration.
-
-  Implementing these methods was banned because they are too integral to the
-  semantics of ARC; many tricks which worked tolerably under manual reference
-  counting will misbehave if ARC performs an ephemeral extra retain or two.  If
-  absolutely required, it is still possible to implement them in non-ARC code,
-  for example in a category; the implementations must obey the :ref:`semantics
-  <arc.objects.retains>` laid out elsewhere in this document.
-
-.. _arc.misc.special_methods.dealloc:
-
-``dealloc``
-^^^^^^^^^^^
-
-A program is ill-formed if it contains a message send or ``@selector``
-expression for the selector ``dealloc``.
-
-.. admonition:: Rationale
-
-  There are no legitimate reasons to call ``dealloc`` directly.
-
-A class may provide a method definition for an instance method named
-``dealloc``.  This method will be called after the final ``release`` of the
-object but before it is deallocated or any of its instance variables are
-destroyed.  The superclass's implementation of ``dealloc`` will be called
-automatically when the method returns.
-
-.. admonition:: Rationale
-
-  Even though ARC destroys instance variables automatically, there are still
-  legitimate reasons to write a ``dealloc`` method, such as freeing
-  non-retainable resources.  Failing to call ``[super dealloc]`` in such a
-  method is nearly always a bug.  Sometimes, the object is simply trying to
-  prevent itself from being destroyed, but ``dealloc`` is really far too late
-  for the object to be raising such objections.  Somewhat more legitimately, an
-  object may have been pool-allocated and should not be deallocated with
-  ``free``; for now, this can only be supported with a ``dealloc``
-  implementation outside of ARC.  Such an implementation must be very careful
-  to do all the other work that ``NSObject``'s ``dealloc`` would, which is
-  outside the scope of this document to describe.
-
-The instance variables for an ARC-compiled class will be destroyed at some
-point after control enters the ``dealloc`` method for the root class of the
-class.  The ordering of the destruction of instance variables is unspecified,
-both within a single class and between subclasses and superclasses.
-
-.. admonition:: Rationale
-
-  The traditional, non-ARC pattern for destroying instance variables is to
-  destroy them immediately before calling ``[super dealloc]``.  Unfortunately,
-  message sends from the superclass are quite capable of reaching methods in
-  the subclass, and those methods may well read or write to those instance
-  variables.  Making such message sends from dealloc is generally discouraged,
-  since the subclass may well rely on other invariants that were broken during
-  ``dealloc``, but it's not so inescapably dangerous that we felt comfortable
-  calling it undefined behavior.  Therefore we chose to delay destroying the
-  instance variables to a point at which message sends are clearly disallowed:
-  the point at which the root class's deallocation routines take over.
-
-  In most code, the difference is not observable.  It can, however, be observed
-  if an instance variable holds a strong reference to an object whose
-  deallocation will trigger a side-effect which must be carefully ordered with
-  respect to the destruction of the super class.  Such code violates the design
-  principle that semantically important behavior should be explicit.  A simple
-  fix is to clear the instance variable manually during ``dealloc``; a more
-  holistic solution is to move semantically important side-effects out of
-  ``dealloc`` and into a separate teardown phase which can rely on working with
-  well-formed objects.
-
-.. _arc.misc.autoreleasepool:
-
-``@autoreleasepool``
---------------------
-
-To simplify the use of autorelease pools, and to bring them under the control
-of the compiler, a new kind of statement is available in Objective-C.  It is
-written ``@autoreleasepool`` followed by a *compound-statement*, i.e.  by a new
-scope delimited by curly braces.  Upon entry to this block, the current state
-of the autorelease pool is captured.  When the block is exited normally,
-whether by fallthrough or directed control flow (such as ``return`` or
-``break``), the autorelease pool is restored to the saved state, releasing all
-the objects in it.  When the block is exited with an exception, the pool is not
-drained.
-
-``@autoreleasepool`` may be used in non-ARC translation units, with equivalent
-semantics.
-
-A program is ill-formed if it refers to the ``NSAutoreleasePool`` class.
-
-.. admonition:: Rationale
-
-  Autorelease pools are clearly important for the compiler to reason about, but
-  it is far too much to expect the compiler to accurately reason about control
-  dependencies between two calls.  It is also very easy to accidentally forget
-  to drain an autorelease pool when using the manual API, and this can
-  significantly inflate the process's high-water-mark.  The introduction of a
-  new scope is unfortunate but basically required for sane interaction with the
-  rest of the language.  Not draining the pool during an unwind is apparently
-  required by the Objective-C exceptions implementation.
-
-.. _arc.misc.self:
-
-``self``
---------
-
-The ``self`` parameter variable of an Objective-C method is never actually
-retained by the implementation.  It is undefined behavior, or at least
-dangerous, to cause an object to be deallocated during a message send to that
-object.
-
-To make this safe, for Objective-C instance methods ``self`` is implicitly
-``const`` unless the method is in the :ref:`init family
-<arc.family.semantics.init>`.  Further, ``self`` is **always** implicitly
-``const`` within a class method.
-
-.. admonition:: Rationale
-
-  The cost of retaining ``self`` in all methods was found to be prohibitive, as
-  it tends to be live across calls, preventing the optimizer from proving that
-  the retain and release are unnecessary --- for good reason, as it's quite
-  possible in theory to cause an object to be deallocated during its execution
-  without this retain and release.  Since it's extremely uncommon to actually
-  do so, even unintentionally, and since there's no natural way for the
-  programmer to remove this retain/release pair otherwise (as there is for
-  other parameters by, say, making the variable ``__unsafe_unretained``), we
-  chose to make this optimizing assumption and shift some amount of risk to the
-  user.
-
-.. _arc.misc.enumeration:
-
-Fast enumeration iteration variables
-------------------------------------
-
-If a variable is declared in the condition of an Objective-C fast enumeration
-loop, and the variable has no explicit ownership qualifier, then it is
-qualified with ``const __strong`` and objects encountered during the
-enumeration are not actually retained.
-
-.. admonition:: Rationale
-
-  This is an optimization made possible because fast enumeration loops promise
-  to keep the objects retained during enumeration, and the collection itself
-  cannot be synchronously modified.  It can be overridden by explicitly
-  qualifying the variable with ``__strong``, which will make the variable
-  mutable again and cause the loop to retain the objects it encounters.
-
-.. _arc.misc.blocks:
-
-Blocks
-------
-
-The implicit ``const`` capture variables created when evaluating a block
-literal expression have the same ownership semantics as the local variables
-they capture.  The capture is performed by reading from the captured variable
-and initializing the capture variable with that value; the capture variable is
-destroyed when the block literal is, i.e. at the end of the enclosing scope.
-
-The :ref:`inference <arc.ownership.inference>` rules apply equally to
-``__block`` variables, which is a shift in semantics from non-ARC, where
-``__block`` variables did not implicitly retain during capture.
-
-``__block`` variables of retainable object owner type are moved off the stack
-by initializing the heap copy with the result of moving from the stack copy.
-
-With the exception of retains done as part of initializing a ``__strong``
-parameter variable or reading a ``__weak`` variable, whenever these semantics
-call for retaining a value of block-pointer type, it has the effect of a
-``Block_copy``.  The optimizer may remove such copies when it sees that the
-result is used only as an argument to a call.
-
-.. _arc.misc.exceptions:
-
-Exceptions
-----------
-
-By default in Objective C, ARC is not exception-safe for normal releases:
-
-* It does not end the lifetime of ``__strong`` variables when their scopes are
-  abnormally terminated by an exception.
-* It does not perform releases which would occur at the end of a
-  full-expression if that full-expression throws an exception.
-
-A program may be compiled with the option ``-fobjc-arc-exceptions`` in order to
-enable these, or with the option ``-fno-objc-arc-exceptions`` to explicitly
-disable them, with the last such argument "winning".
-
-.. admonition:: Rationale
-
-  The standard Cocoa convention is that exceptions signal programmer error and
-  are not intended to be recovered from.  Making code exceptions-safe by
-  default would impose severe runtime and code size penalties on code that
-  typically does not actually care about exceptions safety.  Therefore,
-  ARC-generated code leaks by default on exceptions, which is just fine if the
-  process is going to be immediately terminated anyway.  Programs which do care
-  about recovering from exceptions should enable the option.
-
-In Objective-C++, ``-fobjc-arc-exceptions`` is enabled by default.
-
-.. admonition:: Rationale
-
-  C++ already introduces pervasive exceptions-cleanup code of the sort that ARC
-  introduces.  C++ programmers who have not already disabled exceptions are
-  much more likely to actual require exception-safety.
-
-ARC does end the lifetimes of ``__weak`` objects when an exception terminates
-their scope unless exceptions are disabled in the compiler.
-
-.. admonition:: Rationale
-
-  The consequence of a local ``__weak`` object not being destroyed is very
-  likely to be corruption of the Objective-C runtime, so we want to be safer
-  here.  Of course, potentially massive leaks are about as likely to take down
-  the process as this corruption is if the program does try to recover from
-  exceptions.
-
-.. _arc.misc.interior:
-
-Interior pointers
------------------
-
-An Objective-C method returning a non-retainable pointer may be annotated with
-the ``objc_returns_inner_pointer`` attribute to indicate that it returns a
-handle to the internal data of an object, and that this reference will be
-invalidated if the object is destroyed.  When such a message is sent to an
-object, the object's lifetime will be extended until at least the earliest of:
-
-* the last use of the returned pointer, or any pointer derived from it, in the
-  calling function or
-* the autorelease pool is restored to a previous state.
-
-.. admonition:: Rationale
-
-  Rationale: not all memory and resources are managed with reference counts; it
-  is common for objects to manage private resources in their own, private way.
-  Typically these resources are completely encapsulated within the object, but
-  some classes offer their users direct access for efficiency.  If ARC is not
-  aware of methods that return such "interior" pointers, its optimizations can
-  cause the owning object to be reclaimed too soon.  This attribute informs ARC
-  that it must tread lightly.
-
-  The extension rules are somewhat intentionally vague.  The autorelease pool
-  limit is there to permit a simple implementation to simply retain and
-  autorelease the receiver.  The other limit permits some amount of
-  optimization.  The phrase "derived from" is intended to encompass the results
-  both of pointer transformations, such as casts and arithmetic, and of loading
-  from such derived pointers; furthermore, it applies whether or not such
-  derivations are applied directly in the calling code or by other utility code
-  (for example, the C library routine ``strchr``).  However, the implementation
-  never need account for uses after a return from the code which calls the
-  method returning an interior pointer.
-
-As an exception, no extension is required if the receiver is loaded directly
-from a ``__strong`` object with :ref:`precise lifetime semantics
-<arc.optimization.precise>`.
-
-.. admonition:: Rationale
-
-  Implicit autoreleases carry the risk of significantly inflating memory use,
-  so it's important to provide users a way of avoiding these autoreleases.
-  Tying this to precise lifetime semantics is ideal, as for local variables
-  this requires a very explicit annotation, which allows ARC to trust the user
-  with good cheer.
-
-.. _arc.misc.c-retainable:
-
-C retainable pointer types
---------------------------
-
-A type is a :arc-term:`C retainable pointer type` if it is a pointer to
-(possibly qualified) ``void`` or a pointer to a (possibly qualifier) ``struct``
-or ``class`` type.
-
-.. admonition:: Rationale
-
-  ARC does not manage pointers of CoreFoundation type (or any of the related
-  families of retainable C pointers which interoperate with Objective-C for
-  retain/release operation).  In fact, ARC does not even know how to
-  distinguish these types from arbitrary C pointer types.  The intent of this
-  concept is to filter out some obviously non-object types while leaving a hook
-  for later tightening if a means of exhaustively marking CF types is made
-  available.
-
-.. _arc.misc.c-retainable.audit:
-
-Auditing of C retainable pointer interfaces
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-:when-revised:`[beginning Apple 4.0, LLVM 3.1]`
-
-A C function may be marked with the ``cf_audited_transfer`` attribute to
-express that, except as otherwise marked with attributes, it obeys the
-parameter (consuming vs. non-consuming) and return (retained vs. non-retained)
-conventions for a C function of its name, namely:
-
-* A parameter of C retainable pointer type is assumed to not be consumed
-  unless it is marked with the ``cf_consumed`` attribute, and
-* A result of C retainable pointer type is assumed to not be returned retained
-  unless the function is either marked ``cf_returns_retained`` or it follows
-  the create/copy naming convention and is not marked
-  ``cf_returns_not_retained``.
-
-A function obeys the :arc-term:`create/copy` naming convention if its name
-contains as a substring:
-
-* either "Create" or "Copy" not followed by a lowercase letter, or
-* either "create" or "copy" not followed by a lowercase letter and
-  not preceded by any letter, whether uppercase or lowercase.
-
-A second attribute, ``cf_unknown_transfer``, signifies that a function's
-transfer semantics cannot be accurately captured using any of these
-annotations.  A program is ill-formed if it annotates the same function with
-both ``cf_audited_transfer`` and ``cf_unknown_transfer``.
-
-A pragma is provided to facilitate the mass annotation of interfaces:
-
-.. code-block:: objc
-
-  #pragma clang arc_cf_code_audited begin
-  ...
-  #pragma clang arc_cf_code_audited end
-
-All C functions declared within the extent of this pragma are treated as if
-annotated with the ``cf_audited_transfer`` attribute unless they otherwise have
-the ``cf_unknown_transfer`` attribute.  The pragma is accepted in all language
-modes.  A program is ill-formed if it attempts to change files, whether by
-including a file or ending the current file, within the extent of this pragma.
-
-It is possible to test for all the features in this section with
-``__has_feature(arc_cf_code_audited)``.
-
-.. admonition:: Rationale
-
-  A significant inconvenience in ARC programming is the necessity of
-  interacting with APIs based around C retainable pointers.  These features are
-  designed to make it relatively easy for API authors to quickly review and
-  annotate their interfaces, in turn improving the fidelity of tools such as
-  the static analyzer and ARC.  The single-file restriction on the pragma is
-  designed to eliminate the risk of accidentally annotating some other header's
-  interfaces.
-
-.. _arc.runtime:
-
-Runtime support
-===============
-
-This section describes the interaction between the ARC runtime and the code
-generated by the ARC compiler.  This is not part of the ARC language
-specification; instead, it is effectively a language-specific ABI supplement,
-akin to the "Itanium" generic ABI for C++.
-
-Ownership qualification does not alter the storage requirements for objects,
-except that it is undefined behavior if a ``__weak`` object is inadequately
-aligned for an object of type ``id``.  The other qualifiers may be used on
-explicitly under-aligned memory.
-
-The runtime tracks ``__weak`` objects which holds non-null values.  It is
-undefined behavior to direct modify a ``__weak`` object which is being tracked
-by the runtime except through an
-:ref:`objc_storeWeak <arc.runtime.objc_storeWeak>`,
-:ref:`objc_destroyWeak <arc.runtime.objc_destroyWeak>`, or
-:ref:`objc_moveWeak <arc.runtime.objc_moveWeak>` call.
-
-The runtime must provide a number of new entrypoints which the compiler may
-emit, which are described in the remainder of this section.
-
-.. admonition:: Rationale
-
-  Several of these functions are semantically equivalent to a message send; we
-  emit calls to C functions instead because:
-
-  * the machine code to do so is significantly smaller,
-  * it is much easier to recognize the C functions in the ARC optimizer, and
-  * a sufficient sophisticated runtime may be able to avoid the message send in
-    common cases.
-
-  Several other of these functions are "fused" operations which can be
-  described entirely in terms of other operations.  We use the fused operations
-  primarily as a code-size optimization, although in some cases there is also a
-  real potential for avoiding redundant operations in the runtime.
-
-.. _arc.runtime.objc_autorelease:
-
-``id objc_autorelease(id value);``
-----------------------------------
-
-*Precondition:* ``value`` is null or a pointer to a valid object.
-
-If ``value`` is null, this call has no effect.  Otherwise, it adds the object
-to the innermost autorelease pool exactly as if the object had been sent the
-``autorelease`` message.
-
-Always returns ``value``.
-
-.. _arc.runtime.objc_autoreleasePoolPop:
-
-``void objc_autoreleasePoolPop(void *pool);``
----------------------------------------------
-
-*Precondition:* ``pool`` is the result of a previous call to
-:ref:`objc_autoreleasePoolPush <arc.runtime.objc_autoreleasePoolPush>` on the
-current thread, where neither ``pool`` nor any enclosing pool have previously
-been popped.
-
-Releases all the objects added to the given autorelease pool and any
-autorelease pools it encloses, then sets the current autorelease pool to the
-pool directly enclosing ``pool``.
-
-.. _arc.runtime.objc_autoreleasePoolPush:
-
-``void *objc_autoreleasePoolPush(void);``
------------------------------------------
-
-Creates a new autorelease pool that is enclosed by the current pool, makes that
-the current pool, and returns an opaque "handle" to it.
-
-.. admonition:: Rationale
-
-  While the interface is described as an explicit hierarchy of pools, the rules
-  allow the implementation to just keep a stack of objects, using the stack
-  depth as the opaque pool handle.
-
-.. _arc.runtime.objc_autoreleaseReturnValue:
-
-``id objc_autoreleaseReturnValue(id value);``
----------------------------------------------
-
-*Precondition:* ``value`` is null or a pointer to a valid object.
-
-If ``value`` is null, this call has no effect.  Otherwise, it makes a best
-effort to hand off ownership of a retain count on the object to a call to
-:ref:`objc_retainAutoreleasedReturnValue
-<arc.runtime.objc_retainAutoreleasedReturnValue>` for the same object in an
-enclosing call frame.  If this is not possible, the object is autoreleased as
-above.
-
-Always returns ``value``.
-
-.. _arc.runtime.objc_copyWeak:
-
-``void objc_copyWeak(id *dest, id *src);``
-------------------------------------------
-
-*Precondition:* ``src`` is a valid pointer which either contains a null pointer
-or has been registered as a ``__weak`` object.  ``dest`` is a valid pointer
-which has not been registered as a ``__weak`` object.
-
-``dest`` is initialized to be equivalent to ``src``, potentially registering it
-with the runtime.  Equivalent to the following code:
-
-.. code-block:: objc
-
-  void objc_copyWeak(id *dest, id *src) {
-    objc_release(objc_initWeak(dest, objc_loadWeakRetained(src)));
-  }
-
-Must be atomic with respect to calls to ``objc_storeWeak`` on ``src``.
-
-.. _arc.runtime.objc_destroyWeak:
-
-``void objc_destroyWeak(id *object);``
---------------------------------------
-
-*Precondition:* ``object`` is a valid pointer which either contains a null
-pointer or has been registered as a ``__weak`` object.
-
-``object`` is unregistered as a weak object, if it ever was.  The current value
-of ``object`` is left unspecified; otherwise, equivalent to the following code:
-
-.. code-block:: objc
-
-  void objc_destroyWeak(id *object) {
-    objc_storeWeak(object, nil);
-  }
-
-Does not need to be atomic with respect to calls to ``objc_storeWeak`` on
-``object``.
-
-.. _arc.runtime.objc_initWeak:
-
-``id objc_initWeak(id *object, id value);``
--------------------------------------------
-
-*Precondition:* ``object`` is a valid pointer which has not been registered as
-a ``__weak`` object.  ``value`` is null or a pointer to a valid object.
-
-If ``value`` is a null pointer or the object to which it points has begun
-deallocation, ``object`` is zero-initialized.  Otherwise, ``object`` is
-registered as a ``__weak`` object pointing to ``value``.  Equivalent to the
-following code:
-
-.. code-block:: objc
-
-  id objc_initWeak(id *object, id value) {
-    *object = nil;
-    return objc_storeWeak(object, value);
-  }
-
-Returns the value of ``object`` after the call.
-
-Does not need to be atomic with respect to calls to ``objc_storeWeak`` on
-``object``.
-
-.. _arc.runtime.objc_loadWeak:
-
-``id objc_loadWeak(id *object);``
----------------------------------
-
-*Precondition:* ``object`` is a valid pointer which either contains a null
-pointer or has been registered as a ``__weak`` object.
-
-If ``object`` is registered as a ``__weak`` object, and the last value stored
-into ``object`` has not yet been deallocated or begun deallocation, retains and
-autoreleases that value and returns it.  Otherwise returns null.  Equivalent to
-the following code:
-
-.. code-block:: objc
-
-  id objc_loadWeak(id *object) {
-    return objc_autorelease(objc_loadWeakRetained(object));
-  }
-
-Must be atomic with respect to calls to ``objc_storeWeak`` on ``object``.
-
-.. admonition:: Rationale
-
-  Loading weak references would be inherently prone to race conditions without
-  the retain.
-
-.. _arc.runtime.objc_loadWeakRetained:
-
-``id objc_loadWeakRetained(id *object);``
------------------------------------------
-
-*Precondition:* ``object`` is a valid pointer which either contains a null
-pointer or has been registered as a ``__weak`` object.
-
-If ``object`` is registered as a ``__weak`` object, and the last value stored
-into ``object`` has not yet been deallocated or begun deallocation, retains
-that value and returns it.  Otherwise returns null.
-
-Must be atomic with respect to calls to ``objc_storeWeak`` on ``object``.
-
-.. _arc.runtime.objc_moveWeak:
-
-``void objc_moveWeak(id *dest, id *src);``
-------------------------------------------
-
-*Precondition:* ``src`` is a valid pointer which either contains a null pointer
-or has been registered as a ``__weak`` object.  ``dest`` is a valid pointer
-which has not been registered as a ``__weak`` object.
-
-``dest`` is initialized to be equivalent to ``src``, potentially registering it
-with the runtime.  ``src`` may then be left in its original state, in which
-case this call is equivalent to :ref:`objc_copyWeak
-<arc.runtime.objc_copyWeak>`, or it may be left as null.
-
-Must be atomic with respect to calls to ``objc_storeWeak`` on ``src``.
-
-.. _arc.runtime.objc_release:
-
-``void objc_release(id value);``
---------------------------------
-
-*Precondition:* ``value`` is null or a pointer to a valid object.
-
-If ``value`` is null, this call has no effect.  Otherwise, it performs a
-release operation exactly as if the object had been sent the ``release``
-message.
-
-.. _arc.runtime.objc_retain:
-
-``id objc_retain(id value);``
------------------------------
-
-*Precondition:* ``value`` is null or a pointer to a valid object.
-
-If ``value`` is null, this call has no effect.  Otherwise, it performs a retain
-operation exactly as if the object had been sent the ``retain`` message.
-
-Always returns ``value``.
-
-.. _arc.runtime.objc_retainAutorelease:
-
-``id objc_retainAutorelease(id value);``
-----------------------------------------
-
-*Precondition:* ``value`` is null or a pointer to a valid object.
-
-If ``value`` is null, this call has no effect.  Otherwise, it performs a retain
-operation followed by an autorelease operation.  Equivalent to the following
-code:
-
-.. code-block:: objc
-
-  id objc_retainAutorelease(id value) {
-    return objc_autorelease(objc_retain(value));
-  }
-
-Always returns ``value``.
-
-.. _arc.runtime.objc_retainAutoreleaseReturnValue:
-
-``id objc_retainAutoreleaseReturnValue(id value);``
----------------------------------------------------
-
-*Precondition:* ``value`` is null or a pointer to a valid object.
-
-If ``value`` is null, this call has no effect.  Otherwise, it performs a retain
-operation followed by the operation described in
-:ref:`objc_autoreleaseReturnValue <arc.runtime.objc_autoreleaseReturnValue>`.
-Equivalent to the following code:
-
-.. code-block:: objc
-
-  id objc_retainAutoreleaseReturnValue(id value) {
-    return objc_autoreleaseReturnValue(objc_retain(value));
-  }
-
-Always returns ``value``.
-
-.. _arc.runtime.objc_retainAutoreleasedReturnValue:
-
-``id objc_retainAutoreleasedReturnValue(id value);``
-----------------------------------------------------
-
-*Precondition:* ``value`` is null or a pointer to a valid object.
-
-If ``value`` is null, this call has no effect.  Otherwise, it attempts to
-accept a hand off of a retain count from a call to
-:ref:`objc_autoreleaseReturnValue <arc.runtime.objc_autoreleaseReturnValue>` on
-``value`` in a recently-called function or something it calls.  If that fails,
-it performs a retain operation exactly like :ref:`objc_retain
-<arc.runtime.objc_retain>`.
-
-Always returns ``value``.
-
-.. _arc.runtime.objc_retainBlock:
-
-``id objc_retainBlock(id value);``
-----------------------------------
-
-*Precondition:* ``value`` is null or a pointer to a valid block object.
-
-If ``value`` is null, this call has no effect.  Otherwise, if the block pointed
-to by ``value`` is still on the stack, it is copied to the heap and the address
-of the copy is returned.  Otherwise a retain operation is performed on the
-block exactly as if it had been sent the ``retain`` message.
-
-.. _arc.runtime.objc_storeStrong:
-
-``id objc_storeStrong(id *object, id value);``
-----------------------------------------------
-
-*Precondition:* ``object`` is a valid pointer to a ``__strong`` object which is
-adequately aligned for a pointer.  ``value`` is null or a pointer to a valid
-object.
-
-Performs the complete sequence for assigning to a ``__strong`` object of
-non-block type [*]_.  Equivalent to the following code:
-
-.. code-block:: objc
-
-  id objc_storeStrong(id *object, id value) {
-    value = [value retain];
-    id oldValue = *object;
-    *object = value;
-    [oldValue release];
-    return value;
-  }
-
-Always returns ``value``.
-
-.. [*] This does not imply that a ``__strong`` object of block type is an
-   invalid argument to this function. Rather it implies that an ``objc_retain``
-   and not an ``objc_retainBlock`` operation will be emitted if the argument is
-   a block.
-
-.. _arc.runtime.objc_storeWeak:
-
-``id objc_storeWeak(id *object, id value);``
---------------------------------------------
-
-*Precondition:* ``object`` is a valid pointer which either contains a null
-pointer or has been registered as a ``__weak`` object.  ``value`` is null or a
-pointer to a valid object.
-
-If ``value`` is a null pointer or the object to which it points has begun
-deallocation, ``object`` is assigned null and unregistered as a ``__weak``
-object.  Otherwise, ``object`` is registered as a ``__weak`` object or has its
-registration updated to point to ``value``.
-
-Returns the value of ``object`` after the call.
-

Modified: trunk/contrib/llvm/tools/clang/docs/Block-ABI-Apple.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/Block-ABI-Apple.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/Block-ABI-Apple.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,935 +0,0 @@
-==================================
-Block Implementation Specification
-==================================
-
-.. contents::
-   :local:
-
-History
-=======
-
-* 2008/7/14 - created.
-* 2008/8/21 - revised, C++.
-* 2008/9/24 - add ``NULL`` ``isa`` field to ``__block`` storage.
-* 2008/10/1 - revise block layout to use a ``static`` descriptor structure.
-* 2008/10/6 - revise block layout to use an unsigned long int flags.
-* 2008/10/28 - specify use of ``_Block_object_assign`` and
-  ``_Block_object_dispose`` for all "Object" types in helper functions.
-* 2008/10/30 - revise new layout to have invoke function in same place.
-* 2008/10/30 - add ``__weak`` support.
-* 2010/3/16 - rev for stret return, signature field.
-* 2010/4/6 - improved wording.
-* 2013/1/6 - improved wording and converted to rst.
-
-This document describes the Apple ABI implementation specification of Blocks.
-
-The first shipping version of this ABI is found in Mac OS X 10.6, and shall be
-referred to as 10.6.ABI. As of 2010/3/16, the following describes the ABI
-contract with the runtime and the compiler, and, as necessary, will be referred
-to as ABI.2010.3.16.
-
-Since the Apple ABI references symbols from other elements of the system, any
-attempt to use this ABI on systems prior to SnowLeopard is undefined.
-
-High Level
-==========
-
-The ABI of ``Blocks`` consist of their layout and the runtime functions required
-by the compiler.  A ``Block`` consists of a structure of the following form:
-
-.. code-block:: c
-
-    struct Block_literal_1 {
-        void *isa; // initialized to &_NSConcreteStackBlock or &_NSConcreteGlobalBlock
-        int flags;
-        int reserved; 
-        void (*invoke)(void *, ...);
-        struct Block_descriptor_1 {
-        unsigned long int reserved;         // NULL
-            unsigned long int size;         // sizeof(struct Block_literal_1)
-            // optional helper functions
-            void (*copy_helper)(void *dst, void *src);     // IFF (1<<25)
-            void (*dispose_helper)(void *src);             // IFF (1<<25)
-            // required ABI.2010.3.16
-            const char *signature;                         // IFF (1<<30)
-        } *descriptor;
-        // imported variables
-    };
-
-The following flags bits are in use thusly for a possible ABI.2010.3.16:
-
-.. code-block:: c
-
-    enum {
-        BLOCK_HAS_COPY_DISPOSE =  (1 << 25),
-        BLOCK_HAS_CTOR =          (1 << 26), // helpers have C++ code
-        BLOCK_IS_GLOBAL =         (1 << 28),
-        BLOCK_HAS_STRET =         (1 << 29), // IFF BLOCK_HAS_SIGNATURE
-        BLOCK_HAS_SIGNATURE =     (1 << 30), 
-    };
-
-In 10.6.ABI the (1<<29) was usually set and was always ignored by the runtime -
-it had been a transitional marker that did not get deleted after the
-transition. This bit is now paired with (1<<30), and represented as the pair
-(3<<30), for the following combinations of valid bit settings, and their
-meanings:
-
-.. code-block:: c
-
-    switch (flags & (3<<29)) {
-      case (0<<29):      10.6.ABI, no signature field available
-      case (1<<29):      10.6.ABI, no signature field available
-      case (2<<29): ABI.2010.3.16, regular calling convention, presence of signature field
-      case (3<<29): ABI.2010.3.16, stret calling convention, presence of signature field,
-    }
-
-The signature field is not always populated.
-
-The following discussions are presented as 10.6.ABI otherwise.
-
-``Block`` literals may occur within functions where the structure is created in
-stack local memory.  They may also appear as initialization expressions for
-``Block`` variables of global or ``static`` local variables.
-
-When a ``Block`` literal expression is evaluated the stack based structure is
-initialized as follows:
-
-1. A ``static`` descriptor structure is declared and initialized as follows:
-  
-  a. The ``invoke`` function pointer is set to a function that takes the
-  ``Block`` structure as its first argument and the rest of the arguments (if
-  any) to the ``Block`` and executes the ``Block`` compound statement.
-  
-  b. The ``size`` field is set to the size of the following ``Block`` literal
-  structure.
-  
-  c. The ``copy_helper`` and ``dispose_helper`` function pointers are set to
-  respective helper functions if they are required by the ``Block`` literal.
-
-2. A stack (or global) ``Block`` literal data structure is created and
-   initialized as follows:
-   
-   a. The ``isa`` field is set to the address of the external
-   ``_NSConcreteStackBlock``, which is a block of uninitialized memory supplied
-   in ``libSystem``, or ``_NSConcreteGlobalBlock`` if this is a static or file
-   level ``Block`` literal.
-   
-   b. The ``flags`` field is set to zero unless there are variables imported
-   into the ``Block`` that need helper functions for program level
-   ``Block_copy()`` and ``Block_release()`` operations, in which case the
-   (1<<25) flags bit is set.
-
-As an example, the ``Block`` literal expression:
-
-.. code-block:: c
-
-    ^ { printf("hello world\n"); }
-
-would cause the following to be created on a 32-bit system:
-
-.. code-block:: c
-
-    struct __block_literal_1 {
-        void *isa;
-        int flags;
-        int reserved; 
-        void (*invoke)(struct __block_literal_1 *);
-        struct __block_descriptor_1 *descriptor;
-    };
-    
-    void __block_invoke_1(struct __block_literal_1 *_block) {
-        printf("hello world\n");
-    }
-    
-    static struct __block_descriptor_1 {
-        unsigned long int reserved;
-        unsigned long int Block_size;
-    } __block_descriptor_1 = { 0, sizeof(struct __block_literal_1), __block_invoke_1 };
-
-and where the ``Block`` literal itself appears:
-
-.. code-block:: c
-
-    struct __block_literal_1 _block_literal = {
-         &_NSConcreteStackBlock,
-         (1<<29), <uninitialized>,
-         __block_invoke_1,
-         &__block_descriptor_1
-    };
-
-A ``Block`` imports other ``Block`` references, ``const`` copies of other
-variables, and variables marked ``__block``.  In Objective-C, variables may
-additionally be objects.
-
-When a ``Block`` literal expression is used as the initial value of a global
-or ``static`` local variable, it is initialized as follows:
-
-.. code-block:: c
-
-    struct __block_literal_1 __block_literal_1 = {
-          &_NSConcreteGlobalBlock,
-          (1<<28)|(1<<29), <uninitialized>,
-          __block_invoke_1,
-          &__block_descriptor_1
-    };
-
-that is, a different address is provided as the first value and a particular
-(1<<28) bit is set in the ``flags`` field, and otherwise it is the same as for
-stack based ``Block`` literals.  This is an optimization that can be used for
-any ``Block`` literal that imports no ``const`` or ``__block`` storage
-variables.
-
-Imported Variables
-==================
-
-Variables of ``auto`` storage class are imported as ``const`` copies.  Variables
-of ``__block`` storage class are imported as a pointer to an enclosing data
-structure.  Global variables are simply referenced and not considered as
-imported.
-
-Imported ``const`` copy variables
----------------------------------
-
-Automatic storage variables not marked with ``__block`` are imported as
-``const`` copies.
-
-The simplest example is that of importing a variable of type ``int``:
-
-.. code-block:: c
-
-    int x = 10;
-    void (^vv)(void) = ^{ printf("x is %d\n", x); }
-    x = 11;
-    vv();
-
-which would be compiled to:
-
-.. code-block:: c
-    
-    struct __block_literal_2 {
-        void *isa;
-        int flags;
-        int reserved; 
-        void (*invoke)(struct __block_literal_2 *);
-        struct __block_descriptor_2 *descriptor;
-        const int x;
-    };
-    
-    void __block_invoke_2(struct __block_literal_2 *_block) {
-        printf("x is %d\n", _block->x);
-    }
-    
-    static struct __block_descriptor_2 {
-        unsigned long int reserved;
-        unsigned long int Block_size;
-    } __block_descriptor_2 = { 0, sizeof(struct __block_literal_2) };
-
-and:
-
-.. code-block:: c
-
-    struct __block_literal_2 __block_literal_2 = {
-          &_NSConcreteStackBlock,
-          (1<<29), <uninitialized>,
-          __block_invoke_2,
-          &__block_descriptor_2,
-          x
-     };
-
-In summary, scalars, structures, unions, and function pointers are generally
-imported as ``const`` copies with no need for helper functions.
-
-Imported ``const`` copy of ``Block`` reference
-----------------------------------------------
-
-The first case where copy and dispose helper functions are required is for the
-case of when a ``Block`` itself is imported.  In this case both a
-``copy_helper`` function and a ``dispose_helper`` function are needed.  The
-``copy_helper`` function is passed both the existing stack based pointer and the
-pointer to the new heap version and should call back into the runtime to
-actually do the copy operation on the imported fields within the ``Block``. The
-runtime functions are all described in :ref:`RuntimeHelperFunctions`.
-
-A quick example:
-
-.. code-block:: c
-
-    void (^existingBlock)(void) = ...;
-    void (^vv)(void) = ^{ existingBlock(); }
-    vv();
-    
-    struct __block_literal_3 {
-       ...; // existing block
-    };
-    
-    struct __block_literal_4 {
-        void *isa;
-        int flags;
-        int reserved; 
-        void (*invoke)(struct __block_literal_4 *);
-        struct __block_literal_3 *const existingBlock;
-    };
-    
-    void __block_invoke_4(struct __block_literal_2 *_block) {
-       __block->existingBlock->invoke(__block->existingBlock);
-    }
-    
-    void __block_copy_4(struct __block_literal_4 *dst, struct __block_literal_4 *src) {
-         //_Block_copy_assign(&dst->existingBlock, src->existingBlock, 0);
-         _Block_object_assign(&dst->existingBlock, src->existingBlock, BLOCK_FIELD_IS_BLOCK);
-    }
-    
-    void __block_dispose_4(struct __block_literal_4 *src) {
-         // was _Block_destroy
-         _Block_object_dispose(src->existingBlock, BLOCK_FIELD_IS_BLOCK);
-    }
-    
-    static struct __block_descriptor_4 {
-        unsigned long int reserved;
-        unsigned long int Block_size;
-        void (*copy_helper)(struct __block_literal_4 *dst, struct __block_literal_4 *src);
-        void (*dispose_helper)(struct __block_literal_4 *);
-    } __block_descriptor_4 = {
-        0,
-        sizeof(struct __block_literal_4),
-        __block_copy_4,
-        __block_dispose_4,
-    };
-
-and where said ``Block`` is used:
-
-.. code-block:: c
-
-    struct __block_literal_4 _block_literal = {
-          &_NSConcreteStackBlock,
-          (1<<25)|(1<<29), <uninitialized>
-          __block_invoke_4,
-          & __block_descriptor_4
-          existingBlock,
-    };
-
-Importing ``__attribute__((NSObject))`` variables
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GCC introduces ``__attribute__((NSObject))`` on structure pointers to mean "this
-is an object".  This is useful because many low level data structures are
-declared as opaque structure pointers, e.g. ``CFStringRef``, ``CFArrayRef``,
-etc.  When used from C, however, these are still really objects and are the
-second case where that requires copy and dispose helper functions to be
-generated.  The copy helper functions generated by the compiler should use the
-``_Block_object_assign`` runtime helper function and in the dispose helper the
-``_Block_object_dispose`` runtime helper function should be called.
-
-For example, ``Block`` foo in the following:
-
-.. code-block:: c
-
-    struct Opaque *__attribute__((NSObject)) objectPointer = ...;
-    ...
-    void (^foo)(void) = ^{  CFPrint(objectPointer); };
-
-would have the following helper functions generated:
-
-.. code-block:: c
-
-    void __block_copy_foo(struct __block_literal_5 *dst, struct __block_literal_5 *src) {
-         _Block_object_assign(&dst->objectPointer, src-> objectPointer, BLOCK_FIELD_IS_OBJECT);
-    }
-    
-    void __block_dispose_foo(struct __block_literal_5 *src) {
-         _Block_object_dispose(src->objectPointer, BLOCK_FIELD_IS_OBJECT);
-    }
-
-Imported ``__block`` marked variables
--------------------------------------
-
-Layout of ``__block`` marked variables
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The compiler must embed variables that are marked ``__block`` in a specialized
-structure of the form:
-
-.. code-block:: c
-
-    struct _block_byref_foo {
-        void *isa;
-        struct Block_byref *forwarding;
-        int flags;   //refcount;
-        int size;
-        typeof(marked_variable) marked_variable;
-    };
-
-Variables of certain types require helper functions for when ``Block_copy()``
-and ``Block_release()`` are performed upon a referencing ``Block``.  At the "C"
-level only variables that are of type ``Block`` or ones that have
-``__attribute__((NSObject))`` marked require helper functions.  In Objective-C
-objects require helper functions and in C++ stack based objects require helper
-functions. Variables that require helper functions use the form:
-
-.. code-block:: c
-
-    struct _block_byref_foo {
-        void *isa;
-        struct _block_byref_foo *forwarding;
-        int flags;   //refcount;
-        int size;
-        // helper functions called via Block_copy() and Block_release()
-        void (*byref_keep)(void  *dst, void *src);
-        void (*byref_dispose)(void *);
-        typeof(marked_variable) marked_variable;
-    };
-
-The structure is initialized such that:
-
-    a. The ``forwarding`` pointer is set to the beginning of its enclosing
-    structure.
-    
-    b. The ``size`` field is initialized to the total size of the enclosing
-    structure.    
-    
-    c. The ``flags`` field is set to either 0 if no helper functions are needed
-    or (1<<25) if they are.    
-    
-    d. The helper functions are initialized (if present).    
-    
-    e. The variable itself is set to its initial value.    
-    
-    f. The ``isa`` field is set to ``NULL``.
-
-Access to ``__block`` variables from within its lexical scope
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In order to "move" the variable to the heap upon a ``copy_helper`` operation the
-compiler must rewrite access to such a variable to be indirect through the
-structures ``forwarding`` pointer.  For example:
-
-.. code-block:: c
-
-    int __block i = 10;
-    i = 11;
-
-would be rewritten to be:
-
-.. code-block:: c
-
-    struct _block_byref_i {
-      void *isa;
-      struct _block_byref_i *forwarding;
-      int flags;   //refcount;
-      int size;
-      int captured_i;
-    } i = { NULL, &i, 0, sizeof(struct _block_byref_i), 10 };
-    
-    i.forwarding->captured_i = 11;
-
-In the case of a ``Block`` reference variable being marked ``__block`` the
-helper code generated must use the ``_Block_object_assign`` and
-``_Block_object_dispose`` routines supplied by the runtime to make the
-copies. For example:
-
-.. code-block:: c
-
-    __block void (voidBlock)(void) = blockA;
-    voidBlock = blockB;
-
-would translate into:
-
-.. code-block:: c
-
-    struct _block_byref_voidBlock {
-        void *isa;
-        struct _block_byref_voidBlock *forwarding;
-        int flags;   //refcount;
-        int size;
-        void (*byref_keep)(struct _block_byref_voidBlock *dst, struct _block_byref_voidBlock *src);
-        void (*byref_dispose)(struct _block_byref_voidBlock *);
-        void (^captured_voidBlock)(void);
-    };
-    
-    void _block_byref_keep_helper(struct _block_byref_voidBlock *dst, struct _block_byref_voidBlock *src) {
-        //_Block_copy_assign(&dst->captured_voidBlock, src->captured_voidBlock, 0);
-        _Block_object_assign(&dst->captured_voidBlock, src->captured_voidBlock, BLOCK_FIELD_IS_BLOCK | BLOCK_BYREF_CALLER);
-    }
-    
-    void _block_byref_dispose_helper(struct _block_byref_voidBlock *param) {
-        //_Block_destroy(param->captured_voidBlock, 0);
-        _Block_object_dispose(param->captured_voidBlock, BLOCK_FIELD_IS_BLOCK | BLOCK_BYREF_CALLER)}
-
-and:
-
-.. code-block:: c
-
-    struct _block_byref_voidBlock voidBlock = {( .forwarding=&voidBlock, .flags=(1<<25), .size=sizeof(struct _block_byref_voidBlock *),
-        .byref_keep=_block_byref_keep_helper, .byref_dispose=_block_byref_dispose_helper,
-        .captured_voidBlock=blockA )};
-    
-    voidBlock.forwarding->captured_voidBlock = blockB;
-
-Importing ``__block`` variables into ``Blocks``
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A ``Block`` that uses a ``__block`` variable in its compound statement body must
-import the variable and emit ``copy_helper`` and ``dispose_helper`` helper
-functions that, in turn, call back into the runtime to actually copy or release
-the ``byref`` data block using the functions ``_Block_object_assign`` and
-``_Block_object_dispose``.
-
-For example:
-
-.. code-block:: c
-
-    int __block i = 2;
-    functioncall(^{ i = 10; });
-
-would translate to:
-
-.. code-block:: c
-
-    struct _block_byref_i {
-        void *isa;  // set to NULL
-        struct _block_byref_voidBlock *forwarding;
-        int flags;   //refcount;
-        int size;
-        void (*byref_keep)(struct _block_byref_i *dst, struct _block_byref_i *src);
-        void (*byref_dispose)(struct _block_byref_i *);
-        int captured_i;
-    };
-    
-    
-    struct __block_literal_5 {
-        void *isa;
-        int flags;
-        int reserved; 
-        void (*invoke)(struct __block_literal_5 *);
-        struct __block_descriptor_5 *descriptor;
-        struct _block_byref_i *i_holder;
-    };
-    
-    void __block_invoke_5(struct __block_literal_5 *_block) {
-       _block->forwarding->captured_i = 10;
-    }
-    
-    void __block_copy_5(struct __block_literal_5 *dst, struct __block_literal_5 *src) {
-         //_Block_byref_assign_copy(&dst->captured_i, src->captured_i);
-         _Block_object_assign(&dst->captured_i, src->captured_i, BLOCK_FIELD_IS_BYREF | BLOCK_BYREF_CALLER);
-    }
-    
-    void __block_dispose_5(struct __block_literal_5 *src) {
-         //_Block_byref_release(src->captured_i);
-         _Block_object_dispose(src->captured_i, BLOCK_FIELD_IS_BYREF | BLOCK_BYREF_CALLER);
-    }
-    
-    static struct __block_descriptor_5 {
-        unsigned long int reserved;
-        unsigned long int Block_size;
-        void (*copy_helper)(struct __block_literal_5 *dst, struct __block_literal_5 *src);
-        void (*dispose_helper)(struct __block_literal_5 *);
-    } __block_descriptor_5 = { 0, sizeof(struct __block_literal_5) __block_copy_5, __block_dispose_5 };
-
-and:
-
-.. code-block:: c
-
-    struct _block_byref_i i = {( .forwarding=&i, .flags=0, .size=sizeof(struct _block_byref_i) )};
-    struct __block_literal_5 _block_literal = {
-          &_NSConcreteStackBlock,
-          (1<<25)|(1<<29), <uninitialized>,
-          __block_invoke_5,
-          &__block_descriptor_5,
-          2,
-    };
-
-Importing ``__attribute__((NSObject))`` ``__block`` variables
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A ``__block`` variable that is also marked ``__attribute__((NSObject))`` should
-have ``byref_keep`` and ``byref_dispose`` helper functions that use
-``_Block_object_assign`` and ``_Block_object_dispose``.
-
-``__block`` escapes
-^^^^^^^^^^^^^^^^^^^
-
-Because ``Blocks`` referencing ``__block`` variables may have ``Block_copy()``
-performed upon them the underlying storage for the variables may move to the
-heap.  In Objective-C Garbage Collection Only compilation environments the heap
-used is the garbage collected one and no further action is required.  Otherwise
-the compiler must issue a call to potentially release any heap storage for
-``__block`` variables at all escapes or terminations of their scope.  The call
-should be:
-
-.. code-block:: c
-
-    _Block_object_dispose(&_block_byref_foo, BLOCK_FIELD_IS_BYREF);
-
-Nesting
-^^^^^^^
-
-``Blocks`` may contain ``Block`` literal expressions.  Any variables used within
-inner blocks are imported into all enclosing ``Block`` scopes even if the
-variables are not used. This includes ``const`` imports as well as ``__block``
-variables.
-
-Objective C Extensions to ``Blocks``
-====================================
-
-Importing Objects
------------------
-
-Objects should be treated as ``__attribute__((NSObject))`` variables; all
-``copy_helper``, ``dispose_helper``, ``byref_keep``, and ``byref_dispose``
-helper functions should use ``_Block_object_assign`` and
-``_Block_object_dispose``.  There should be no code generated that uses
-``*-retain`` or ``*-release`` methods.
-
-``Blocks`` as Objects
----------------------
-
-The compiler will treat ``Blocks`` as objects when synthesizing property setters
-and getters, will characterize them as objects when generating garbage
-collection strong and weak layout information in the same manner as objects, and
-will issue strong and weak write-barrier assignments in the same manner as
-objects.
-
-``__weak __block`` Support
---------------------------
-
-Objective-C (and Objective-C++) support the ``__weak`` attribute on ``__block``
-variables.  Under normal circumstances the compiler uses the Objective-C runtime
-helper support functions ``objc_assign_weak`` and ``objc_read_weak``.  Both
-should continue to be used for all reads and writes of ``__weak __block``
-variables:
-
-.. code-block:: c
-
-    objc_read_weak(&block->byref_i->forwarding->i)
-
-The ``__weak`` variable is stored in a ``_block_byref_foo`` structure and the
-``Block`` has copy and dispose helpers for this structure that call:
-
-.. code-block:: c
-
-    _Block_object_assign(&dest->_block_byref_i, src-> _block_byref_i, BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_BYREF);
-
-and:
-
-.. code-block:: c
-
-    _Block_object_dispose(src->_block_byref_i, BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_BYREF);
-
-In turn, the ``block_byref`` copy support helpers distinguish between whether
-the ``__block`` variable is a ``Block`` or not and should either call:
-
-.. code-block:: c
-
-    _Block_object_assign(&dest->_block_byref_i, src->_block_byref_i, BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_OBJECT | BLOCK_BYREF_CALLER);
-
-for something declared as an object or:
-
-.. code-block:: c
-
-    _Block_object_assign(&dest->_block_byref_i, src->_block_byref_i, BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_BLOCK | BLOCK_BYREF_CALLER);
-
-for something declared as a ``Block``.
-
-A full example follows:
-
-.. code-block:: c
-
-    __block __weak id obj = <initialization expression>;
-    functioncall(^{ [obj somemessage]; });
-
-would translate to:
-
-.. code-block:: c
-
-    struct _block_byref_obj {
-        void *isa;  // uninitialized
-        struct _block_byref_obj *forwarding;
-        int flags;   //refcount;
-        int size;
-        void (*byref_keep)(struct _block_byref_i *dst, struct _block_byref_i *src);
-        void (*byref_dispose)(struct _block_byref_i *);
-        id captured_obj;
-    };
-    
-    void _block_byref_obj_keep(struct _block_byref_voidBlock *dst, struct _block_byref_voidBlock *src) {
-        //_Block_copy_assign(&dst->captured_obj, src->captured_obj, 0);
-        _Block_object_assign(&dst->captured_obj, src->captured_obj, BLOCK_FIELD_IS_OBJECT | BLOCK_FIELD_IS_WEAK | BLOCK_BYREF_CALLER);
-    }
-    
-    void _block_byref_obj_dispose(struct _block_byref_voidBlock *param) {
-        //_Block_destroy(param->captured_obj, 0);
-        _Block_object_dispose(param->captured_obj, BLOCK_FIELD_IS_OBJECT | BLOCK_FIELD_IS_WEAK | BLOCK_BYREF_CALLER);
-    };
-
-for the block ``byref`` part and:
-
-.. code-block:: c
-
-    struct __block_literal_5 {
-        void *isa;
-        int flags;
-        int reserved; 
-        void (*invoke)(struct __block_literal_5 *);
-        struct __block_descriptor_5 *descriptor;
-        struct _block_byref_obj *byref_obj;
-    };
-    
-    void __block_invoke_5(struct __block_literal_5 *_block) {
-       [objc_read_weak(&_block->byref_obj->forwarding->captured_obj) somemessage];
-    }
-    
-    void __block_copy_5(struct __block_literal_5 *dst, struct __block_literal_5 *src) {
-         //_Block_byref_assign_copy(&dst->byref_obj, src->byref_obj);
-         _Block_object_assign(&dst->byref_obj, src->byref_obj, BLOCK_FIELD_IS_BYREF | BLOCK_FIELD_IS_WEAK);
-    }
-    
-    void __block_dispose_5(struct __block_literal_5 *src) {
-         //_Block_byref_release(src->byref_obj);
-         _Block_object_dispose(src->byref_obj, BLOCK_FIELD_IS_BYREF | BLOCK_FIELD_IS_WEAK);
-    }
-    
-    static struct __block_descriptor_5 {
-        unsigned long int reserved;
-        unsigned long int Block_size;
-        void (*copy_helper)(struct __block_literal_5 *dst, struct __block_literal_5 *src);
-        void (*dispose_helper)(struct __block_literal_5 *);
-    } __block_descriptor_5 = { 0, sizeof(struct __block_literal_5), __block_copy_5, __block_dispose_5 };
-
-and within the compound statement:
-
-.. code-block:: c
-
-    truct _block_byref_obj obj = {( .forwarding=&obj, .flags=(1<<25), .size=sizeof(struct _block_byref_obj),
-                     .byref_keep=_block_byref_obj_keep, .byref_dispose=_block_byref_obj_dispose,
-                     .captured_obj = <initialization expression> )};
-    
-    truct __block_literal_5 _block_literal = {
-         &_NSConcreteStackBlock,
-         (1<<25)|(1<<29), <uninitialized>,
-         __block_invoke_5,
-         &__block_descriptor_5,
-         &obj,        // a reference to the on-stack structure containing "captured_obj"
-    };
-    
-    
-    functioncall(_block_literal->invoke(&_block_literal));
-
-C++ Support
-===========
-
-Within a block stack based C++ objects are copied into ``const`` copies using
-the copy constructor.  It is an error if a stack based C++ object is used within
-a block if it does not have a copy constructor.  In addition both copy and
-destroy helper routines must be synthesized for the block to support the
-``Block_copy()`` operation, and the flags work marked with the (1<<26) bit in
-addition to the (1<<25) bit.  The copy helper should call the constructor using
-appropriate offsets of the variable within the supplied stack based block source
-and heap based destination for all ``const`` constructed copies, and similarly
-should call the destructor in the destroy routine.
-
-As an example, suppose a C++ class ``FOO`` existed with a copy constructor.
-Within a code block a stack version of a ``FOO`` object is declared and used
-within a ``Block`` literal expression:
-
-.. code-block:: c++
-
-    {
-        FOO foo;
-        void (^block)(void) = ^{ printf("%d\n", foo.value()); };
-    }
-
-The compiler would synthesize:
-
-.. code-block:: c++
-
-    struct __block_literal_10 {
-        void *isa;
-        int flags;
-        int reserved; 
-        void (*invoke)(struct __block_literal_10 *);
-        struct __block_descriptor_10 *descriptor;
-        const FOO foo;
-    };
-    
-    void __block_invoke_10(struct __block_literal_10 *_block) {
-       printf("%d\n", _block->foo.value());
-    }
-    
-    void __block_literal_10(struct __block_literal_10 *dst, struct __block_literal_10 *src) {
-         FOO_ctor(&dst->foo, &src->foo);
-    }
-    
-    void __block_dispose_10(struct __block_literal_10 *src) {
-         FOO_dtor(&src->foo);
-    }
-    
-    static struct __block_descriptor_10 {
-        unsigned long int reserved;
-        unsigned long int Block_size;
-        void (*copy_helper)(struct __block_literal_10 *dst, struct __block_literal_10 *src);
-        void (*dispose_helper)(struct __block_literal_10 *);
-    } __block_descriptor_10 = { 0, sizeof(struct __block_literal_10), __block_copy_10, __block_dispose_10 };
-
-and the code would be:
-
-.. code-block:: c++
-
-    {
-      FOO foo;
-      comp_ctor(&foo); // default constructor
-      struct __block_literal_10 _block_literal = {
-        &_NSConcreteStackBlock,
-        (1<<25)|(1<<26)|(1<<29), <uninitialized>,
-        __block_invoke_10,
-        &__block_descriptor_10,
-       };
-       comp_ctor(&_block_literal->foo, &foo);  // const copy into stack version
-       struct __block_literal_10 &block = &_block_literal;  // assign literal to block variable
-       block->invoke(block);    // invoke block
-       comp_dtor(&_block_literal->foo); // destroy stack version of const block copy
-       comp_dtor(&foo); // destroy original version
-    }
-
-
-C++ objects stored in ``__block`` storage start out on the stack in a
-``block_byref`` data structure as do other variables.  Such objects (if not
-``const`` objects) must support a regular copy constructor.  The ``block_byref``
-data structure will have copy and destroy helper routines synthesized by the
-compiler.  The copy helper will have code created to perform the copy
-constructor based on the initial stack ``block_byref`` data structure, and will
-also set the (1<<26) bit in addition to the (1<<25) bit.  The destroy helper
-will have code to do the destructor on the object stored within the supplied
-``block_byref`` heap data structure.  For example,
-
-.. code-block:: c++
-
-    __block FOO blockStorageFoo;
-
-requires the normal constructor for the embedded ``blockStorageFoo`` object:
-
-.. code-block:: c++
-
-    FOO_ctor(& _block_byref_blockStorageFoo->blockStorageFoo);
-
-and at scope termination the destructor:
-
-.. code-block:: c++
-
-    FOO_dtor(& _block_byref_blockStorageFoo->blockStorageFoo);
-
-Note that the forwarding indirection is *NOT* used.
-
-The compiler would need to generate (if used from a block literal) the following
-copy/dispose helpers:
-
-.. code-block:: c++
-
-    void _block_byref_obj_keep(struct _block_byref_blockStorageFoo *dst, struct _block_byref_blockStorageFoo *src) {
-         FOO_ctor(&dst->blockStorageFoo, &src->blockStorageFoo);
-    }
-    
-    void _block_byref_obj_dispose(struct _block_byref_blockStorageFoo *src) {
-         FOO_dtor(&src->blockStorageFoo);
-    }
-
-for the appropriately named constructor and destructor for the class/struct
-``FOO``.
-
-To support member variable and function access the compiler will synthesize a
-``const`` pointer to a block version of the ``this`` pointer.
-
-.. _RuntimeHelperFunctions:
-
-Runtime Helper Functions
-========================
-
-The runtime helper functions are described in
-``/usr/local/include/Block_private.h``.  To summarize their use, a ``Block``
-requires copy/dispose helpers if it imports any block variables, ``__block``
-storage variables, ``__attribute__((NSObject))`` variables, or C++ ``const``
-copied objects with constructor/destructors.  The (1<<26) bit is set and
-functions are generated.
-
-The block copy helper function should, for each of the variables of the type
-mentioned above, call:
-
-.. code-block:: c
-
-     _Block_object_assign(&dst->target, src->target, BLOCK_FIELD_<appropo>);
-
-in the copy helper and:
-
-.. code-block:: c
-
-    _Block_object_dispose(->target, BLOCK_FIELD_<appropo>);
-
-in the dispose helper where ``<appropo>`` is:
-
-.. code-block:: c
-
-    enum {
-        BLOCK_FIELD_IS_OBJECT   =  3,  // id, NSObject, __attribute__((NSObject)), block, ...
-        BLOCK_FIELD_IS_BLOCK    =  7,  // a block variable
-        BLOCK_FIELD_IS_BYREF    =  8,  // the on stack structure holding the __block variable
-    
-        BLOCK_FIELD_IS_WEAK     = 16,  // declared __weak
-    
-        BLOCK_BYREF_CALLER      = 128, // called from byref copy/dispose helpers
-    };
-
-and of course the constructors/destructors for ``const`` copied C++ objects.
-
-The ``block_byref`` data structure similarly requires copy/dispose helpers for
-block variables, ``__attribute__((NSObject))`` variables, or C++ ``const``
-copied objects with constructor/destructors, and again the (1<<26) bit is set
-and functions are generated in the same manner.
-
-Under ObjC we allow ``__weak`` as an attribute on ``__block`` variables, and
-this causes the addition of ``BLOCK_FIELD_IS_WEAK`` orred onto the
-``BLOCK_FIELD_IS_BYREF`` flag when copying the ``block_byref`` structure in the
-``Block`` copy helper, and onto the ``BLOCK_FIELD_<appropo>`` field within the
-``block_byref`` copy/dispose helper calls.
-
-The prototypes, and summary, of the helper functions are:
-
-.. code-block:: c
-    
-    /* Certain field types require runtime assistance when being copied to the
-       heap.  The following function is used to copy fields of types: blocks,
-       pointers to byref structures, and objects (including
-       __attribute__((NSObject)) pointers.  BLOCK_FIELD_IS_WEAK is orthogonal to
-       the other choices which are mutually exclusive.  Only in a Block copy
-       helper will one see BLOCK_FIELD_IS_BYREF.
-    */
-    void _Block_object_assign(void *destAddr, const void *object, const int flags);
-    
-    /* Similarly a compiler generated dispose helper needs to call back for each
-       field of the byref data structure.  (Currently the implementation only
-       packs one field into the byref structure but in principle there could be
-       more).  The same flags used in the copy helper should be used for each
-       call generated to this function:
-    */
-    void _Block_object_dispose(const void *object, const int flags);
-
-Copyright
-=========
-
-Copyright 2008-2010 Apple, Inc.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

Modified: trunk/contrib/llvm/tools/clang/docs/Block-ABI-Apple.txt
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/Block-ABI-Apple.txt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/Block-ABI-Apple.txt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-*NOTE* This document has moved to http://clang.llvm.org/docs/Block-ABI-Apple.html.

Modified: trunk/contrib/llvm/tools/clang/docs/BlockLanguageSpec.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/BlockLanguageSpec.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/BlockLanguageSpec.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,361 +0,0 @@
-
-.. role:: block-term
-
-=================================
-Language Specification for Blocks
-=================================
-
-.. contents::
-   :local:
-
-Revisions
-=========
-
-- 2008/2/25 --- created
-- 2008/7/28 --- revised, ``__block`` syntax
-- 2008/8/13 --- revised, Block globals
-- 2008/8/21 --- revised, C++ elaboration
-- 2008/11/1 --- revised, ``__weak`` support
-- 2009/1/12 --- revised, explicit return types
-- 2009/2/10 --- revised, ``__block`` objects need retain
-
-Overview
-========
-
-A new derived type is introduced to C and, by extension, Objective-C,
-C++, and Objective-C++
-
-The Block Type
-==============
-
-Like function types, the :block-term:`Block type` is a pair consisting
-of a result value type and a list of parameter types very similar to a
-function type. Blocks are intended to be used much like functions with
-the key distinction being that in addition to executable code they
-also contain various variable bindings to automatic (stack) or managed
-(heap) memory.
-
-The abstract declarator,
-
-.. code-block:: c
-
-   int (^)(char, float)
-
-describes a reference to a Block that, when invoked, takes two
-parameters, the first of type char and the second of type float, and
-returns a value of type int.  The Block referenced is of opaque data
-that may reside in automatic (stack) memory, global memory, or heap
-memory.
-
-Block Variable Declarations
-===========================
-
-A :block-term:`variable with Block type` is declared using function
-pointer style notation substituting ``^`` for ``*``. The following are
-valid Block variable declarations:
-
-.. code-block:: c
-
-    void (^blockReturningVoidWithVoidArgument)(void);
-    int (^blockReturningIntWithIntAndCharArguments)(int, char);
-    void (^arrayOfTenBlocksReturningVoidWithIntArgument[10])(int);
-
-Variadic ``...`` arguments are supported. [variadic.c] A Block that
-takes no arguments must specify void in the argument list [voidarg.c].
-An empty parameter list does not represent, as K&R provide, an
-unspecified argument list.  Note: both gcc and clang support K&R style
-as a convenience.
-
-A Block reference may be cast to a pointer of arbitrary type and vice
-versa. [cast.c] A Block reference may not be dereferenced via the
-pointer dereference operator ``*``, and thus a Block's size may not be
-computed at compile time. [sizeof.c]
-
-Block Literal Expressions
-=========================
-
-A :block-term:`Block literal expression` produces a reference to a
-Block. It is introduced by the use of the ``^`` token as a unary
-operator.
-
-.. code-block:: c
-
-    Block_literal_expression ::=   ^ block_decl compound_statement_body
-    block_decl ::=
-    block_decl ::= parameter_list
-    block_decl ::= type_expression
-
-where type expression is extended to allow ``^`` as a Block reference
-(pointer) where ``*`` is allowed as a function reference (pointer).
-
-The following Block literal:
-
-.. code-block:: c
-
-    ^ void (void) { printf("hello world\n"); }
-
-produces a reference to a Block with no arguments with no return value.
-
-The return type is optional and is inferred from the return
-statements. If the return statements return a value, they all must
-return a value of the same type. If there is no value returned the
-inferred type of the Block is void; otherwise it is the type of the
-return statement value.
-
-If the return type is omitted and the argument list is ``( void )``,
-the ``( void )`` argument list may also be omitted.
-
-So:
-
-.. code-block:: c
-
-    ^ ( void ) { printf("hello world\n"); }
-
-and:
-
-.. code-block:: c
-
-    ^ { printf("hello world\n"); }
-
-are exactly equivalent constructs for the same expression.
-
-The type_expression extends C expression parsing to accommodate Block
-reference declarations as it accommodates function pointer
-declarations.
-
-Given:
-
-.. code-block:: c
-
-    typedef int (*pointerToFunctionThatReturnsIntWithCharArg)(char);
-    pointerToFunctionThatReturnsIntWithCharArg functionPointer;
-    ^ pointerToFunctionThatReturnsIntWithCharArg (float x) { return functionPointer; }
-
-and:
-
-.. code-block:: c
-
-    ^ int ((*)(float x))(char) { return functionPointer; }
-
-are equivalent expressions, as is:
-
-.. code-block:: c
-
-    ^(float x) { return functionPointer; }
-
-[returnfunctionptr.c]
-
-The compound statement body establishes a new lexical scope within
-that of its parent. Variables used within the scope of the compound
-statement are bound to the Block in the normal manner with the
-exception of those in automatic (stack) storage. Thus one may access
-functions and global variables as one would expect, as well as static
-local variables. [testme]
-
-Local automatic (stack) variables referenced within the compound
-statement of a Block are imported and captured by the Block as const
-copies. The capture (binding) is performed at the time of the Block
-literal expression evaluation.
-
-The compiler is not required to capture a variable if it can prove
-that no references to the variable will actually be evaluated.
-Programmers can force a variable to be captured by referencing it in a
-statement at the beginning of the Block, like so:
-
-.. code-block:: c
-
-  (void) foo;
-
-This matters when capturing the variable has side-effects, as it can
-in Objective-C or C++.
-
-The lifetime of variables declared in a Block is that of a function;
-each activation frame contains a new copy of variables declared within
-the local scope of the Block. Such variable declarations should be
-allowed anywhere [testme] rather than only when C99 parsing is
-requested, including for statements. [testme]
-
-Block literal expressions may occur within Block literal expressions
-(nest) and all variables captured by any nested blocks are implicitly
-also captured in the scopes of their enclosing Blocks.
-
-A Block literal expression may be used as the initialization value for
-Block variables at global or local static scope.
-
-The Invoke Operator
-===================
-
-Blocks are :block-term:`invoked` using function call syntax with a
-list of expression parameters of types corresponding to the
-declaration and returning a result type also according to the
-declaration. Given:
-
-.. code-block:: c
-
-    int (^x)(char);
-    void (^z)(void);
-    int (^(*y))(char) = &x;
-
-the following are all legal Block invocations:
-
-.. code-block:: c
-
-    x('a');
-    (*y)('a');
-    (true ? x : *y)('a')
-
-The Copy and Release Operations
-===============================
-
-The compiler and runtime provide :block-term:`copy` and
-:block-term:`release` operations for Block references that create and,
-in matched use, release allocated storage for referenced Blocks.
-
-The copy operation ``Block_copy()`` is styled as a function that takes
-an arbitrary Block reference and returns a Block reference of the same
-type. The release operation, ``Block_release()``, is styled as a
-function that takes an arbitrary Block reference and, if dynamically
-matched to a Block copy operation, allows recovery of the referenced
-allocated memory.
-
-
-The ``__block`` Storage Qualifier
-=================================
-
-In addition to the new Block type we also introduce a new storage
-qualifier, :block-term:`__block`, for local variables. [testme: a
-__block declaration within a block literal] The ``__block`` storage
-qualifier is mutually exclusive to the existing local storage
-qualifiers auto, register, and static. [testme] Variables qualified by
-``__block`` act as if they were in allocated storage and this storage
-is automatically recovered after last use of said variable.  An
-implementation may choose an optimization where the storage is
-initially automatic and only "moved" to allocated (heap) storage upon
-a Block_copy of a referencing Block.  Such variables may be mutated as
-normal variables are.
-
-In the case where a ``__block`` variable is a Block one must assume
-that the ``__block`` variable resides in allocated storage and as such
-is assumed to reference a Block that is also in allocated storage
-(that it is the result of a ``Block_copy`` operation).  Despite this
-there is no provision to do a ``Block_copy`` or a ``Block_release`` if
-an implementation provides initial automatic storage for Blocks.  This
-is due to the inherent race condition of potentially several threads
-trying to update the shared variable and the need for synchronization
-around disposing of older values and copying new ones.  Such
-synchronization is beyond the scope of this language specification.
-
-
-Control Flow
-============
-
-The compound statement of a Block is treated much like a function body
-with respect to control flow in that goto, break, and continue do not
-escape the Block.  Exceptions are treated *normally* in that when
-thrown they pop stack frames until a catch clause is found.
-
-
-Objective-C Extensions
-======================
-
-Objective-C extends the definition of a Block reference type to be
-that also of id.  A variable or expression of Block type may be
-messaged or used as a parameter wherever an id may be. The converse is
-also true. Block references may thus appear as properties and are
-subject to the assign, retain, and copy attribute logic that is
-reserved for objects.
-
-All Blocks are constructed to be Objective-C objects regardless of
-whether the Objective-C runtime is operational in the program or
-not. Blocks using automatic (stack) memory are objects and may be
-messaged, although they may not be assigned into ``__weak`` locations
-if garbage collection is enabled.
-
-Within a Block literal expression within a method definition
-references to instance variables are also imported into the lexical
-scope of the compound statement. These variables are implicitly
-qualified as references from self, and so self is imported as a const
-copy. The net effect is that instance variables can be mutated.
-
-The :block-term:`Block_copy` operator retains all objects held in
-variables of automatic storage referenced within the Block expression
-(or form strong references if running under garbage collection).
-Object variables of ``__block`` storage type are assumed to hold
-normal pointers with no provision for retain and release messages.
-
-Foundation defines (and supplies) ``-copy`` and ``-release`` methods for
-Blocks.
-
-In the Objective-C and Objective-C++ languages, we allow the
-``__weak`` specifier for ``__block`` variables of object type.  If
-garbage collection is not enabled, this qualifier causes these
-variables to be kept without retain messages being sent. This
-knowingly leads to dangling pointers if the Block (or a copy) outlives
-the lifetime of this object.
-
-In garbage collected environments, the ``__weak`` variable is set to
-nil when the object it references is collected, as long as the
-``__block`` variable resides in the heap (either by default or via
-``Block_copy()``).  The initial Apple implementation does in fact
-start ``__block`` variables on the stack and migrate them to the heap
-only as a result of a ``Block_copy()`` operation.
-
-It is a runtime error to attempt to assign a reference to a
-stack-based Block into any storage marked ``__weak``, including
-``__weak`` ``__block`` variables.
-
-
-C++ Extensions
-==============
-
-Block literal expressions within functions are extended to allow const
-use of C++ objects, pointers, or references held in automatic storage.
-
-As usual, within the block, references to captured variables become
-const-qualified, as if they were references to members of a const
-object.  Note that this does not change the type of a variable of
-reference type.
-
-For example, given a class Foo:
-
-.. code-block:: c
-
-      Foo foo;
-      Foo &fooRef = foo;
-      Foo *fooPtr = &foo;
-
-A Block that referenced these variables would import the variables as
-const variations:
-
-.. code-block:: c
-
-      const Foo block_foo = foo;
-      Foo &block_fooRef = fooRef;
-      Foo *const block_fooPtr = fooPtr;
-
-Captured variables are copied into the Block at the instant of
-evaluating the Block literal expression.  They are also copied when
-calling ``Block_copy()`` on a Block allocated on the stack.  In both
-cases, they are copied as if the variable were const-qualified, and
-it's an error if there's no such constructor.
-
-Captured variables in Blocks on the stack are destroyed when control
-leaves the compound statement that contains the Block literal
-expression.  Captured variables in Blocks on the heap are destroyed
-when the reference count of the Block drops to zero.
-
-Variables declared as residing in ``__block`` storage may be initially
-allocated in the heap or may first appear on the stack and be copied
-to the heap as a result of a ``Block_copy()`` operation. When copied
-from the stack, ``__block`` variables are copied using their normal
-qualification (i.e. without adding const).  In C++11, ``__block``
-variables are copied as x-values if that is possible, then as l-values
-if not; if both fail, it's an error.  The destructor for any initial
-stack-based version is called at the variable's normal end of scope.
-
-References to ``this``, as well as references to non-static members of
-any enclosing class, are evaluated by capturing ``this`` just like a
-normal variable of C pointer type.
-
-Member variables that are Blocks may not be overloaded by the types of
-their arguments.

Modified: trunk/contrib/llvm/tools/clang/docs/ClangCheck.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/ClangCheck.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/ClangCheck.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-==========
-ClangCheck
-==========
-
-`ClangCheck` is a small wrapper around :doc:`LibTooling` which can be used to
-do basic error checking and AST dumping.
-
-.. code-block:: console
-
-  $ cat <<EOF > snippet.cc
-  > void f() {
-  >   int a = 0
-  > }
-  > EOF
-  $ ~/clang/build/bin/clang-check snippet.cc -ast-dump --
-  Processing: /Users/danieljasper/clang/llvm/tools/clang/docs/snippet.cc.
-  /Users/danieljasper/clang/llvm/tools/clang/docs/snippet.cc:2:12: error: expected ';' at end of
-        declaration
-    int a = 0
-             ^
-             ;
-  (TranslationUnitDecl 0x7ff3a3029ed0 <<invalid sloc>>
-    (TypedefDecl 0x7ff3a302a410 <<invalid sloc>> __int128_t '__int128')
-    (TypedefDecl 0x7ff3a302a470 <<invalid sloc>> __uint128_t 'unsigned __int128')
-    (TypedefDecl 0x7ff3a302a830 <<invalid sloc>> __builtin_va_list '__va_list_tag [1]')
-    (FunctionDecl 0x7ff3a302a8d0 </Users/danieljasper/clang/llvm/tools/clang/docs/snippet.cc:1:1, line:3:1> f 'void (void)'
-      (CompoundStmt 0x7ff3a302aa10 <line:1:10, line:3:1>
-        (DeclStmt 0x7ff3a302a9f8 <line:2:3, line:3:1>
-          (VarDecl 0x7ff3a302a980 <line:2:3, col:11> a 'int'
-            (IntegerLiteral 0x7ff3a302a9d8 <col:11> 'int' 0))))))
-  1 error generated.
-  Error while processing snippet.cc.
-
-The '--' at the end is important as it prevents `clang-check` from search for a
-compilation database. For more information on how to setup and use `clang-check`
-in a project, see :doc:`HowToSetupToolingForLLVM`.

Modified: trunk/contrib/llvm/tools/clang/docs/ClangFormat.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/ClangFormat.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/ClangFormat.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,123 +0,0 @@
-===========
-ClangFormat
-===========
-
-`ClangFormat` describes a set of tools that are built on top of
-:doc:`LibFormat`. It can support your workflow in a variety of ways including a
-standalone tool and editor integrations.
-
-
-Standalone Tool
-===============
-
-:program:`clang-format` is located in `clang/tools/clang-format` and can be used
-to format C/C++/Obj-C code.
-
-.. code-block:: console
-
-  $ clang-format --help
-  OVERVIEW: A tool to format C/C++/Obj-C code.
-
-  If no arguments are specified, it formats the code from standard input
-  and writes the result to the standard output.
-  If <file> is given, it reformats the file. If -i is specified together
-  with <file>, the file is edited in-place. Otherwise, the result is
-  written to the standard output.
-
-  USAGE: clang-format [options] [<file>]
-
-  OPTIONS:
-    -fatal-assembler-warnings - Consider warnings as error
-    -help                     - Display available options (-help-hidden for more)
-    -i                        - Inplace edit <file>, if specified.
-    -length=<int>             - Format a range of this length, -1 for end of file.
-    -offset=<int>             - Format a range starting at this file offset.
-    -stats                    - Enable statistics output from program
-    -style=<string>           - Coding style, currently supports: LLVM, Google, Chromium.
-    -version                  - Display the version of this program
-
-
-Vim Integration
-===============
-
-There is an integration for :program:`vim` which lets you run the
-:program:`clang-format` standalone tool on your current buffer, optionally
-selecting regions to reformat. The integration has the form of a `python`-file
-which can be found under `clang/tools/clang-format/clang-format.py`.
-
-This can be integrated by adding the following to your `.vimrc`:
-
-.. code-block:: vim
-
-  map <C-K> :pyf <path-to-this-file>/clang-format.py<CR>
-  imap <C-K> <ESC>:pyf <path-to-this-file>/clang-format.py<CR>i
-
-The first line enables :program:`clang-format` for NORMAL and VISUAL mode, the
-second line adds support for INSERT mode. Change "C-K" to another binding if
-you need :program:`clang-format` on a different key (C-K stands for Ctrl+k).
-
-With this integration you can press the bound key and clang-format will
-format the current line in NORMAL and INSERT mode or the selected region in
-VISUAL mode. The line or region is extended to the next bigger syntactic
-entity.
-
-It operates on the current, potentially unsaved buffer and does not create
-or save any files. To revert a formatting, just undo.
-
-
-Emacs Integration
-=================
-
-Similar to the integration for :program:`vim`, there is an integration for
-:program:`emacs`. It can be found at `clang/tools/clang-format/clang-format.el`
-and used by adding this to your `.emacs`:
-
-.. code-block:: common-lisp
-
-  (load "<path-to-clang>/tools/clang-format/clang-format.el")
-  (global-set-key [C-M-tab] 'clang-format-region)
-
-This binds the function `clang-format-region` to C-M-tab, which then formats the
-current line or selected region.
-
-
-BBEdit Integration
-==================
-
-:program:`clang-format` cannot be used as a text filter with BBEdit, but works
-well via a script. The AppleScript to do this integration can be found at
-`clang/tools/clang-format/clang-format-bbedit.applescript`; place a copy in
-`~/Library/Application Support/BBEdit/Scripts`, and edit the path within it to
-point to your local copy of :program:`clang-format`.
-
-With this integration you can select the script from the Script menu and
-:program:`clang-format` will format the selection. Note that you can rename the
-menu item by renaming the script, and can assign the menu item a keyboard
-shortcut in the BBEdit preferences, under Menus & Shortcuts.
-
-
-Script for patch reformatting
-=============================
-
-The python script `clang/tools/clang-format-diff.py` parses the output of
-a unified diff and reformats all contained lines with :program:`clang-format`.
-
-.. code-block:: console
-
-  usage: clang-format-diff.py [-h] [-p P] [-style STYLE]
-
-  Reformat changed lines in diff
-
-  optional arguments:
-    -h, --help    show this help message and exit
-    -p P          strip the smallest prefix containing P slashes
-    -style STYLE  formatting style to apply (LLVM, Google, Chromium)
-
-So to reformat all the lines in the latest :program:`git` commit, just do:
-
-.. code-block:: console
-
-  git diff -U0 HEAD^ | clang-format-diff.py
-
-The :option:`-U0` will create a diff without context lines (the script would format
-those as well).

Modified: trunk/contrib/llvm/tools/clang/docs/ClangPlugins.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/ClangPlugins.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/ClangPlugins.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,150 +0,0 @@
-=============
-Clang Plugins
-=============
-
-Clang Plugins make it possible to run extra user defined actions during a
-compilation. This document will provide a basic walkthrough of how to write and
-run a Clang Plugin.
-
-Introduction
-============
-
-Clang Plugins run FrontendActions over code. See the :doc:`FrontendAction
-tutorial <RAVFrontendAction>` on how to write a ``FrontendAction`` using the
-``RecursiveASTVisitor``. In this tutorial, we'll demonstrate how to write a
-simple clang plugin.
-
-Writing a ``PluginASTAction``
-=============================
-
-The main difference from writing normal ``FrontendActions`` is that you can
-handle plugin command line options. The ``PluginASTAction`` base class declares
-a ``ParseArgs`` method which you have to implement in your plugin.
-
-.. code-block:: c++
-
-  bool ParseArgs(const CompilerInstance &CI,
-                 const std::vector<std::string>& args) {
-    for (unsigned i = 0, e = args.size(); i != e; ++i) {
-      if (args[i] == "-some-arg") {
-        // Handle the command line argument.
-      }
-    }
-    return true;
-  }
-
-Registering a plugin
-====================
-
-A plugin is loaded from a dynamic library at runtime by the compiler. To
-register a plugin in a library, use ``FrontendPluginRegistry::Add<>``:
-
-.. code-block:: c++
-
-  static FrontendPluginRegistry::Add<MyPlugin> X("my-plugin-name", "my plugin description");
-
-Putting it all together
-=======================
-
-Let's look at an example plugin that prints top-level function names.  This
-example is also checked into the clang repository; please also take a look at
-the latest `checked in version of PrintFunctionNames.cpp
-<http://llvm.org/viewvc/llvm-project/cfe/trunk/examples/PrintFunctionNames/PrintFunctionNames.cpp?view=markup>`_.
-
-.. code-block:: c++
-
-    #include "clang/Frontend/FrontendPluginRegistry.h"
-    #include "clang/AST/ASTConsumer.h"
-    #include "clang/AST/AST.h"
-    #include "clang/Frontend/CompilerInstance.h"
-    #include "llvm/Support/raw_ostream.h"
-    using namespace clang;
-
-    namespace {
-
-    class PrintFunctionsConsumer : public ASTConsumer {
-    public:
-      virtual bool HandleTopLevelDecl(DeclGroupRef DG) {
-        for (DeclGroupRef::iterator i = DG.begin(), e = DG.end(); i != e; ++i) {
-          const Decl *D = *i;
-          if (const NamedDecl *ND = dyn_cast<NamedDecl>(D))
-            llvm::errs() << "top-level-decl: \"" << ND->getNameAsString() << "\"\n";
-        }
-
-        return true;
-      }
-    };
-
-    class PrintFunctionNamesAction : public PluginASTAction {
-    protected:
-      ASTConsumer *CreateASTConsumer(CompilerInstance &CI, llvm::StringRef) {
-        return new PrintFunctionsConsumer();
-      }
-
-      bool ParseArgs(const CompilerInstance &CI,
-                     const std::vector<std::string>& args) {
-        for (unsigned i = 0, e = args.size(); i != e; ++i) {
-          llvm::errs() << "PrintFunctionNames arg = " << args[i] << "\n";
-
-          // Example error handling.
-          if (args[i] == "-an-error") {
-            DiagnosticsEngine &D = CI.getDiagnostics();
-            unsigned DiagID = D.getCustomDiagID(
-              DiagnosticsEngine::Error, "invalid argument '" + args[i] + "'");
-            D.Report(DiagID);
-            return false;
-          }
-        }
-        if (args.size() && args[0] == "help")
-          PrintHelp(llvm::errs());
-
-        return true;
-      }
-      void PrintHelp(llvm::raw_ostream& ros) {
-        ros << "Help for PrintFunctionNames plugin goes here\n";
-      }
-
-    };
-
-    }
-
-    static FrontendPluginRegistry::Add<PrintFunctionNamesAction>
-    X("print-fns", "print function names");
-
-Running the plugin
-==================
-
-To run a plugin, the dynamic library containing the plugin registry must be
-loaded via the :option:`-load` command line option. This will load all plugins
-that are registered, and you can select the plugins to run by specifying the
-:option:`-plugin` option. Additional parameters for the plugins can be passed with
-:option:`-plugin-arg-<plugin-name>`.
-
-Note that those options must reach clang's cc1 process. There are two
-ways to do so:
-
-* Directly call the parsing process by using the :option:`-cc1` option; this
-  has the downside of not configuring the default header search paths, so
-  you'll need to specify the full system path configuration on the command
-  line.
-* Use clang as usual, but prefix all arguments to the cc1 process with
-  :option:`-Xclang`.
-
-For example, to run the ``print-function-names`` plugin over a source file in
-clang, first build the plugin, and then call clang with the plugin from the
-source tree:
-
-.. code-block:: console
-
-  $ export BD=/path/to/build/directory
-  $ (cd $BD && make PrintFunctionNames )
-  $ clang++ -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS \
-            -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE \
-            -I$BD/tools/clang/include -Itools/clang/include -I$BD/include -Iinclude \
-            tools/clang/tools/clang-check/ClangCheck.cpp -fsyntax-only \
-            -Xclang -load -Xclang $BD/lib/PrintFunctionNames.so -Xclang \
-            -plugin -Xclang print-fns
-
-Also see the print-function-name plugin example's
-`README <http://llvm.org/viewvc/llvm-project/cfe/trunk/examples/PrintFunctionNames/README.txt?view=markup>`_
-

Modified: trunk/contrib/llvm/tools/clang/docs/ClangTools.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/ClangTools.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/ClangTools.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,191 +0,0 @@
-========
-Overview
-========
-
-Clang Tools are standalone command line (and potentially GUI) tools
-designed for use by C++ developers who are already using and enjoying
-Clang as their compiler. These tools provide developer-oriented
-functionality such as fast syntax checking, automatic formatting,
-refactoring, etc.
-
-Only a couple of the most basic and fundamental tools are kept in the
-primary Clang Subversion project. The rest of the tools are kept in a
-side-project so that developers who don't want or need to build them
-don't. If you want to get access to the extra Clang Tools repository,
-simply check it out into the tools tree of your Clang checkout and
-follow the usual process for building and working with a combined
-LLVM/Clang checkout:
-
--  With Subversion:
-
-   -  ``cd llvm/tools/clang/tools``
-   -  ``svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra``
-
--  Or with Git:
-
-   -  ``cd llvm/tools/clang/tools``
-   -  ``git clone http://llvm.org/git/clang-tools-extra.git extra``
-
-This document describes a high-level overview of the organization of
-Clang Tools within the project as well as giving an introduction to some
-of the more important tools. However, it should be noted that this
-document is currently focused on Clang and Clang Tool developers, not on
-end users of these tools.
-
-Clang Tools Organization
-========================
-
-Clang Tools are CLI or GUI programs that are intended to be directly
-used by C++ developers. That is they are *not* primarily for use by
-Clang developers, although they are hopefully useful to C++ developers
-who happen to work on Clang, and we try to actively dogfood their
-functionality. They are developed in three components: the underlying
-infrastructure for building a standalone tool based on Clang, core
-shared logic used by many different tools in the form of refactoring and
-rewriting libraries, and the tools themselves.
-
-The underlying infrastructure for Clang Tools is the
-:doc:`LibTooling <LibTooling>` platform. See its documentation for much
-more detailed information about how this infrastructure works. The
-common refactoring and rewriting toolkit-style library is also part of
-LibTooling organizationally.
-
-A few Clang Tools are developed along side the core Clang libraries as
-examples and test cases of fundamental functionality. However, most of
-the tools are developed in a side repository to provide easy separation
-from the core libraries. We intentionally do not support public
-libraries in the side repository, as we want to carefully review and
-find good APIs for libraries as they are lifted out of a few tools and
-into the core Clang library set.
-
-Regardless of which repository Clang Tools' code resides in, the
-development process and practices for all Clang Tools are exactly those
-of Clang itself. They are entirely within the Clang *project*,
-regardless of the version control scheme.
-
-Core Clang Tools
-================
-
-The core set of Clang tools that are within the main repository are
-tools that very specifically complement, and allow use and testing of
-*Clang* specific functionality.
-
-``clang-check``
----------------
-
-:doc:`ClangCheck` combines the LibTooling framework for running a
-Clang tool with the basic Clang diagnostics by syntax checking specific files
-in a fast, command line interface. It can also accept flags to re-display the
-diagnostics in different formats with different flags, suitable for use driving
-an IDE or editor. Furthermore, it can be used in fixit-mode to directly apply
-fixit-hints offered by clang. See :doc:`HowToSetupToolingForLLVM` for
-instructions on how to setup and used `clang-check`.
-
-``clang-format``
-~~~~~~~~~~~~~~~~
-
-Clang-format is both a :doc:`library <LibFormat>` and a :doc:`stand-alone tool
-<ClangFormat>` with the goal of automatically reformatting C++ sources files
-according to configurable style guides.  To do so, clang-format uses Clang's
-``Lexer`` to transform an input file into a token stream and then changes all
-the whitespace around those tokens.  The goal is for clang-format to both serve
-both as a user tool (ideally with powerful IDE integrations) and part of other
-refactoring tools, e.g. to do a reformatting of all the lines changed during a
-renaming.
-
-``cpp11-migrate``
-~~~~~~~~~~~~~~~~~
-``cpp11-migrate`` migrates C++ code to use C++11 features where appropriate.
-Currently it can:
-
-* convert loops to range-based for loops;
-
-* convert null pointer constants (like ``NULL`` or ``0``) to C++11 ``nullptr``;
-
-* replace the type specifier in variable declarations with the ``auto`` type specifier;
-
-* add the ``override`` specifier to applicable member functions.
-
-Extra Clang Tools
-=================
-
-As various categories of Clang Tools are added to the extra repository,
-they'll be tracked here. The focus of this documentation is on the scope
-and features of the tools for other tool developers; each tool should
-provide its own user-focused documentation.
-
-Ideas for new Tools
-===================
-
-* C++ cast conversion tool.  Will convert C-style casts (``(type) value``) to
-  appropriate C++ cast (``static_cast``, ``const_cast`` or
-  ``reinterpret_cast``).
-* Non-member ``begin()`` and ``end()`` conversion tool.  Will convert
-  ``foo.begin()`` into ``begin(foo)`` and similarly for ``end()``, where
-  ``foo`` is a standard container.  We could also detect similar patterns for
-  arrays.
-* ``make_shared`` / ``make_unique`` conversion.  Part of this transformation
-can be incorporated into the ``auto`` transformation.  Will convert
-
-  .. code-block:: c++
-
-    std::shared_ptr<Foo> sp(new Foo);
-    std::unique_ptr<Foo> up(new Foo);
-
-    func(std::shared_ptr<Foo>(new Foo), bar());
-
-  into:
-
-  .. code-block:: c++
-
-    auto sp = std::make_shared<Foo>();
-    auto up = std::make_unique<Foo>(); // In C++14 mode.
-
-    // This also affects correctness.  For the cases where bar() throws,
-    // make_shared() is safe and the original code may leak.
-    func(std::make_shared<Foo>(), bar());
-
-* ``tr1`` removal tool.  Will migrate source code from using TR1 library
-  features to C++11 library.  For example:
-
-  .. code-block:: c++
-
-    #include <tr1/unordered_map>
-    int main()
-    {
-        std::tr1::unordered_map <int, int> ma;
-        std::cout << ma.size () << std::endl;
-        return 0;
-    }
-
-  should be rewritten to:
-
-  .. code-block:: c++
-
-    #include <unordered_map>
-    int main()
-    {
-        std::unordered_map <int, int> ma;
-        std::cout << ma.size () << std::endl;
-        return 0;
-    }
-
-* A tool to remove ``auto``.  Will convert ``auto`` to an explicit type or add
-  comments with deduced types.  The motivation is that there are developers
-  that don't want to use ``auto`` because they are afraid that they might lose
-  control over their code.
-
-* C++14: less verbose operator function objects (`N3421
-  <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3421.htm>`_).
-  For example:
-
-  .. code-block:: c++
-
-    sort(v.begin(), v.end(), greater<ValueType>());
-
-  should be rewritten to:
-
-  .. code-block:: c++
-
-    sort(v.begin(), v.end(), greater<>());
-

Modified: trunk/contrib/llvm/tools/clang/docs/DriverInternals.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/DriverInternals.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/DriverInternals.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,400 +0,0 @@
-=========================
-Driver Design & Internals
-=========================
-
-.. contents::
-   :local:
-
-Introduction
-============
-
-This document describes the Clang driver. The purpose of this document
-is to describe both the motivation and design goals for the driver, as
-well as details of the internal implementation.
-
-Features and Goals
-==================
-
-The Clang driver is intended to be a production quality compiler driver
-providing access to the Clang compiler and tools, with a command line
-interface which is compatible with the gcc driver.
-
-Although the driver is part of and driven by the Clang project, it is
-logically a separate tool which shares many of the same goals as Clang:
-
-.. contents:: Features
-   :local:
-
-GCC Compatibility
------------------
-
-The number one goal of the driver is to ease the adoption of Clang by
-allowing users to drop Clang into a build system which was designed to
-call GCC. Although this makes the driver much more complicated than
-might otherwise be necessary, we decided that being very compatible with
-the gcc command line interface was worth it in order to allow users to
-quickly test clang on their projects.
-
-Flexible
---------
-
-The driver was designed to be flexible and easily accommodate new uses
-as we grow the clang and LLVM infrastructure. As one example, the driver
-can easily support the introduction of tools which have an integrated
-assembler; something we hope to add to LLVM in the future.
-
-Similarly, most of the driver functionality is kept in a library which
-can be used to build other tools which want to implement or accept a gcc
-like interface.
-
-Low Overhead
-------------
-
-The driver should have as little overhead as possible. In practice, we
-found that the gcc driver by itself incurred a small but meaningful
-overhead when compiling many small files. The driver doesn't do much
-work compared to a compilation, but we have tried to keep it as
-efficient as possible by following a few simple principles:
-
--  Avoid memory allocation and string copying when possible.
--  Don't parse arguments more than once.
--  Provide a few simple interfaces for efficiently searching arguments.
-
-Simple
-------
-
-Finally, the driver was designed to be "as simple as possible", given
-the other goals. Notably, trying to be completely compatible with the
-gcc driver adds a significant amount of complexity. However, the design
-of the driver attempts to mitigate this complexity by dividing the
-process into a number of independent stages instead of a single
-monolithic task.
-
-Internal Design and Implementation
-==================================
-
-.. contents::
-   :local:
-   :depth: 1
-
-Internals Introduction
-----------------------
-
-In order to satisfy the stated goals, the driver was designed to
-completely subsume the functionality of the gcc executable; that is, the
-driver should not need to delegate to gcc to perform subtasks. On
-Darwin, this implies that the Clang driver also subsumes the gcc
-driver-driver, which is used to implement support for building universal
-images (binaries and object files). This also implies that the driver
-should be able to call the language specific compilers (e.g. cc1)
-directly, which means that it must have enough information to forward
-command line arguments to child processes correctly.
-
-Design Overview
----------------
-
-The diagram below shows the significant components of the driver
-architecture and how they relate to one another. The orange components
-represent concrete data structures built by the driver, the green
-components indicate conceptually distinct stages which manipulate these
-data structures, and the blue components are important helper classes.
-
-.. image:: DriverArchitecture.png
-   :align: center
-   :alt: Driver Architecture Diagram
-
-Driver Stages
--------------
-
-The driver functionality is conceptually divided into five stages:
-
-#. **Parse: Option Parsing**
-
-   The command line argument strings are decomposed into arguments
-   (``Arg`` instances). The driver expects to understand all available
-   options, although there is some facility for just passing certain
-   classes of options through (like ``-Wl,``).
-
-   Each argument corresponds to exactly one abstract ``Option``
-   definition, which describes how the option is parsed along with some
-   additional metadata. The Arg instances themselves are lightweight and
-   merely contain enough information for clients to determine which
-   option they correspond to and their values (if they have additional
-   parameters).
-
-   For example, a command line like "-Ifoo -I foo" would parse to two
-   Arg instances (a JoinedArg and a SeparateArg instance), but each
-   would refer to the same Option.
-
-   Options are lazily created in order to avoid populating all Option
-   classes when the driver is loaded. Most of the driver code only needs
-   to deal with options by their unique ID (e.g., ``options::OPT_I``),
-
-   Arg instances themselves do not generally store the values of
-   parameters. In many cases, this would simply result in creating
-   unnecessary string copies. Instead, Arg instances are always embedded
-   inside an ArgList structure, which contains the original vector of
-   argument strings. Each Arg itself only needs to contain an index into
-   this vector instead of storing its values directly.
-
-   The clang driver can dump the results of this stage using the
-   ``-ccc-print-options`` flag (which must precede any actual command
-   line arguments). For example:
-
-   .. code-block:: console
-
-      $ clang -ccc-print-options -Xarch_i386 -fomit-frame-pointer -Wa,-fast -Ifoo -I foo t.c
-      Option 0 - Name: "-Xarch_", Values: {"i386", "-fomit-frame-pointer"}
-      Option 1 - Name: "-Wa,", Values: {"-fast"}
-      Option 2 - Name: "-I", Values: {"foo"}
-      Option 3 - Name: "-I", Values: {"foo"}
-      Option 4 - Name: "<input>", Values: {"t.c"}
-
-   After this stage is complete the command line should be broken down
-   into well defined option objects with their appropriate parameters.
-   Subsequent stages should rarely, if ever, need to do any string
-   processing.
-
-#. **Pipeline: Compilation Job Construction**
-
-   Once the arguments are parsed, the tree of subprocess jobs needed for
-   the desired compilation sequence are constructed. This involves
-   determining the input files and their types, what work is to be done
-   on them (preprocess, compile, assemble, link, etc.), and constructing
-   a list of Action instances for each task. The result is a list of one
-   or more top-level actions, each of which generally corresponds to a
-   single output (for example, an object or linked executable).
-
-   The majority of Actions correspond to actual tasks, however there are
-   two special Actions. The first is InputAction, which simply serves to
-   adapt an input argument for use as an input to other Actions. The
-   second is BindArchAction, which conceptually alters the architecture
-   to be used for all of its input Actions.
-
-   The clang driver can dump the results of this stage using the
-   ``-ccc-print-phases`` flag. For example:
-
-   .. code-block:: console
-
-      $ clang -ccc-print-phases -x c t.c -x assembler t.s
-      0: input, "t.c", c
-      1: preprocessor, {0}, cpp-output
-      2: compiler, {1}, assembler
-      3: assembler, {2}, object
-      4: input, "t.s", assembler
-      5: assembler, {4}, object
-      6: linker, {3, 5}, image
-
-   Here the driver is constructing seven distinct actions, four to
-   compile the "t.c" input into an object file, two to assemble the
-   "t.s" input, and one to link them together.
-
-   A rather different compilation pipeline is shown here; in this
-   example there are two top level actions to compile the input files
-   into two separate object files, where each object file is built using
-   ``lipo`` to merge results built for two separate architectures.
-
-   .. code-block:: console
-
-      $ clang -ccc-print-phases -c -arch i386 -arch x86_64 t0.c t1.c
-      0: input, "t0.c", c
-      1: preprocessor, {0}, cpp-output
-      2: compiler, {1}, assembler
-      3: assembler, {2}, object
-      4: bind-arch, "i386", {3}, object
-      5: bind-arch, "x86_64", {3}, object
-      6: lipo, {4, 5}, object
-      7: input, "t1.c", c
-      8: preprocessor, {7}, cpp-output
-      9: compiler, {8}, assembler
-      10: assembler, {9}, object
-      11: bind-arch, "i386", {10}, object
-      12: bind-arch, "x86_64", {10}, object
-      13: lipo, {11, 12}, object
-
-   After this stage is complete the compilation process is divided into
-   a simple set of actions which need to be performed to produce
-   intermediate or final outputs (in some cases, like ``-fsyntax-only``,
-   there is no "real" final output). Phases are well known compilation
-   steps, such as "preprocess", "compile", "assemble", "link", etc.
-
-#. **Bind: Tool & Filename Selection**
-
-   This stage (in conjunction with the Translate stage) turns the tree
-   of Actions into a list of actual subprocess to run. Conceptually, the
-   driver performs a top down matching to assign Action(s) to Tools. The
-   ToolChain is responsible for selecting the tool to perform a
-   particular action; once selected the driver interacts with the tool
-   to see if it can match additional actions (for example, by having an
-   integrated preprocessor).
-
-   Once Tools have been selected for all actions, the driver determines
-   how the tools should be connected (for example, using an inprocess
-   module, pipes, temporary files, or user provided filenames). If an
-   output file is required, the driver also computes the appropriate
-   file name (the suffix and file location depend on the input types and
-   options such as ``-save-temps``).
-
-   The driver interacts with a ToolChain to perform the Tool bindings.
-   Each ToolChain contains information about all the tools needed for
-   compilation for a particular architecture, platform, and operating
-   system. A single driver invocation may query multiple ToolChains
-   during one compilation in order to interact with tools for separate
-   architectures.
-
-   The results of this stage are not computed directly, but the driver
-   can print the results via the ``-ccc-print-bindings`` option. For
-   example:
-
-   .. code-block:: console
-
-      $ clang -ccc-print-bindings -arch i386 -arch ppc t0.c
-      # "i386-apple-darwin9" - "clang", inputs: ["t0.c"], output: "/tmp/cc-Sn4RKF.s"
-      # "i386-apple-darwin9" - "darwin::Assemble", inputs: ["/tmp/cc-Sn4RKF.s"], output: "/tmp/cc-gvSnbS.o"
-      # "i386-apple-darwin9" - "darwin::Link", inputs: ["/tmp/cc-gvSnbS.o"], output: "/tmp/cc-jgHQxi.out"
-      # "ppc-apple-darwin9" - "gcc::Compile", inputs: ["t0.c"], output: "/tmp/cc-Q0bTox.s"
-      # "ppc-apple-darwin9" - "gcc::Assemble", inputs: ["/tmp/cc-Q0bTox.s"], output: "/tmp/cc-WCdicw.o"
-      # "ppc-apple-darwin9" - "gcc::Link", inputs: ["/tmp/cc-WCdicw.o"], output: "/tmp/cc-HHBEBh.out"
-      # "i386-apple-darwin9" - "darwin::Lipo", inputs: ["/tmp/cc-jgHQxi.out", "/tmp/cc-HHBEBh.out"], output: "a.out"
-
-   This shows the tool chain, tool, inputs and outputs which have been
-   bound for this compilation sequence. Here clang is being used to
-   compile t0.c on the i386 architecture and darwin specific versions of
-   the tools are being used to assemble and link the result, but generic
-   gcc versions of the tools are being used on PowerPC.
-
-#. **Translate: Tool Specific Argument Translation**
-
-   Once a Tool has been selected to perform a particular Action, the
-   Tool must construct concrete Jobs which will be executed during
-   compilation. The main work is in translating from the gcc style
-   command line options to whatever options the subprocess expects.
-
-   Some tools, such as the assembler, only interact with a handful of
-   arguments and just determine the path of the executable to call and
-   pass on their input and output arguments. Others, like the compiler
-   or the linker, may translate a large number of arguments in addition.
-
-   The ArgList class provides a number of simple helper methods to
-   assist with translating arguments; for example, to pass on only the
-   last of arguments corresponding to some option, or all arguments for
-   an option.
-
-   The result of this stage is a list of Jobs (executable paths and
-   argument strings) to execute.
-
-#. **Execute**
-
-   Finally, the compilation pipeline is executed. This is mostly
-   straightforward, although there is some interaction with options like
-   ``-pipe``, ``-pass-exit-codes`` and ``-time``.
-
-Additional Notes
-----------------
-
-The Compilation Object
-^^^^^^^^^^^^^^^^^^^^^^
-
-The driver constructs a Compilation object for each set of command line
-arguments. The Driver itself is intended to be invariant during
-construction of a Compilation; an IDE should be able to construct a
-single long lived driver instance to use for an entire build, for
-example.
-
-The Compilation object holds information that is particular to each
-compilation sequence. For example, the list of used temporary files
-(which must be removed once compilation is finished) and result files
-(which should be removed if compilation fails).
-
-Unified Parsing & Pipelining
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Parsing and pipelining both occur without reference to a Compilation
-instance. This is by design; the driver expects that both of these
-phases are platform neutral, with a few very well defined exceptions
-such as whether the platform uses a driver driver.
-
-ToolChain Argument Translation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In order to match gcc very closely, the clang driver currently allows
-tool chains to perform their own translation of the argument list (into
-a new ArgList data structure). Although this allows the clang driver to
-match gcc easily, it also makes the driver operation much harder to
-understand (since the Tools stop seeing some arguments the user
-provided, and see new ones instead).
-
-For example, on Darwin ``-gfull`` gets translated into two separate
-arguments, ``-g`` and ``-fno-eliminate-unused-debug-symbols``. Trying to
-write Tool logic to do something with ``-gfull`` will not work, because
-Tool argument translation is done after the arguments have been
-translated.
-
-A long term goal is to remove this tool chain specific translation, and
-instead force each tool to change its own logic to do the right thing on
-the untranslated original arguments.
-
-Unused Argument Warnings
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-The driver operates by parsing all arguments but giving Tools the
-opportunity to choose which arguments to pass on. One downside of this
-infrastructure is that if the user misspells some option, or is confused
-about which options to use, some command line arguments the user really
-cared about may go unused. This problem is particularly important when
-using clang as a compiler, since the clang compiler does not support
-anywhere near all the options that gcc does, and we want to make sure
-users know which ones are being used.
-
-To support this, the driver maintains a bit associated with each
-argument of whether it has been used (at all) during the compilation.
-This bit usually doesn't need to be set by hand, as the key ArgList
-accessors will set it automatically.
-
-When a compilation is successful (there are no errors), the driver
-checks the bit and emits an "unused argument" warning for any arguments
-which were never accessed. This is conservative (the argument may not
-have been used to do what the user wanted) but still catches the most
-obvious cases.
-
-Relation to GCC Driver Concepts
--------------------------------
-
-For those familiar with the gcc driver, this section provides a brief
-overview of how things from the gcc driver map to the clang driver.
-
--  **Driver Driver**
-
-   The driver driver is fully integrated into the clang driver. The
-   driver simply constructs additional Actions to bind the architecture
-   during the *Pipeline* phase. The tool chain specific argument
-   translation is responsible for handling ``-Xarch_``.
-
-   The one caveat is that this approach requires ``-Xarch_`` not be used
-   to alter the compilation itself (for example, one cannot provide
-   ``-S`` as an ``-Xarch_`` argument). The driver attempts to reject
-   such invocations, and overall there isn't a good reason to abuse
-   ``-Xarch_`` to that end in practice.
-
-   The upside is that the clang driver is more efficient and does little
-   extra work to support universal builds. It also provides better error
-   reporting and UI consistency.
-
--  **Specs**
-
-   The clang driver has no direct correspondent for "specs". The
-   majority of the functionality that is embedded in specs is in the
-   Tool specific argument translation routines. The parts of specs which
-   control the compilation pipeline are generally part of the *Pipeline*
-   stage.
-
--  **Toolchains**
-
-   The gcc driver has no direct understanding of tool chains. Each gcc
-   binary roughly corresponds to the information which is embedded
-   inside a single ToolChain.
-
-   The clang driver is intended to be portable and support complex
-   compilation environments. All platform and tool chain specific code
-   should be protected behind either abstract or well defined interfaces
-   (such as whether the platform supports use as a driver driver).

Modified: trunk/contrib/llvm/tools/clang/docs/ExternalClangExamples.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/ExternalClangExamples.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/ExternalClangExamples.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-=======================
-External Clang Examples
-=======================
-
-Introduction
-============
-
-This page provides some examples of the kinds of things that people have
-done with Clang that might serve as useful guides (or starting points) from
-which to develop your own tools. They may be helpful even for something as
-banal (but necessary) as how to set up your build to integrate Clang.
-
-Clang's library-based design is deliberately aimed at facilitating use by
-external projects, and we are always interested in improving Clang to
-better serve our external users. Some typical categories of applications
-where Clang is used are:
-
-- Static analysis.
-- Documentation/cross-reference generation.
-
-If you know of (or wrote!) a tool or project using Clang, please send an
-email to Clang's `development discussion mailing list
-<http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_ to have it added.
-(or if you are already a Clang contributor, feel free to directly commit
-additions). Since the primary purpose of this page is to provide examples
-that can help developers, generally they must have code available.
-
-List of projects and tools
-==========================
-
-`<https://github.com/Andersbakken/rtags/>`_
-   "RTags is a client/server application that indexes c/c++ code and keeps
-   a persistent in-memory database of references, symbolnames, completions
-   etc."
-
-`<http://rprichard.github.com/sourceweb/>`_
-   "A C/C++ source code indexer and navigator"
-
-`<https://github.com/etaoins/qconnectlint>`_
-   "qconnectlint is a Clang tool for statically verifying the consistency
-   of signal and slot connections made with Qt's ``QObject::connect``."
-
-`<https://github.com/woboq/woboq_codebrowser>`_
-   "The Woboq Code Browser is a web-based code browser for C/C++ projects.
-   Check out `<http://code.woboq.org/>`_ for an example!"
-
-`<https://github.com/mozilla/dxr>`_
-    "DXR is a source code cross-reference tool that uses static analysis
-    data collected by instrumented compilers."
-
-`<https://github.com/eschulte/clang-mutate>`_
-    "This tool performs a number of operations on C-language source files."
-
-`<https://github.com/gmarpons/Crisp>`_
-    "A coding rule validation add-on for LLVM/clang. Crisp rules are written
-    in Prolog. A high-level declarative DSL to easily write new rules is under
-    development. It will be called CRISP, an acronym for *Coding Rules in
-    Sugared Prolog*."
-
-`<https://github.com/drothlis/clang-ctags>`_
-    "Generate tag file for C++ source code."
-
-`<https://github.com/exclipy/clang_indexer>`_
-    "This is an indexer for C and C++ based on the libclang library."
-
-`<https://github.com/holtgrewe/linty>`_
-    "Linty - C/C++ Style Checking with Python & libclang."
-
-`<https://github.com/axw/cmonster>`_
-    "cmonster is a Python wrapper for the Clang C++ parser."
-
-`<https://github.com/rizsotto/Constantine>`_
-    "Constantine is a toy project to learn how to write clang plugin.
-    Implements pseudo const analysis. Generates warnings about variables,
-    which were declared without const qualifier."
-
-`<https://github.com/jessevdk/cldoc>`_
-    "cldoc is a Clang based documentation generator for C and C++.
-    cldoc tries to solve the issue of writing C/C++ software documentation
-    with a modern, non-intrusive and robust approach."

Modified: trunk/contrib/llvm/tools/clang/docs/FAQ.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/FAQ.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/FAQ.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-================================
-Frequently Asked Questions (FAQ)
-================================
-
-.. contents::
-   :local:
-
-Driver
-======
-
-I run ``clang -cc1 ...`` and get weird errors about missing headers
--------------------------------------------------------------------
-
-Given this source file:
-
-.. code-block:: c
-
-  #include <stdio.h>
-
-  int main() {
-    printf("Hello world\n");
-  }
-
-
-If you run:
-
-.. code-block:: console
-
-  $ clang -cc1 hello.c
-  hello.c:1:10: fatal error: 'stdio.h' file not found
-  #include <stdio.h>
-           ^
-  1 error generated.
-
-``clang -cc1`` is the frontend, ``clang`` is the :doc:`driver
-<DriverInternals>`.  The driver invokes the frontend with options appropriate
-for your system.  To see these options, run:
-
-.. code-block:: console
-
-  $ clang -### -c hello.c
-
-Some clang command line options are driver-only options, some are frontend-only
-options.  Frontend-only options are intended to be used only by clang developers.
-Users should not run ``clang -cc1`` directly, because ``-cc1`` options are not
-guaranteed to be stable.
-
-If you want to use a frontend-only option ("a ``-cc1`` option"), for example
-``-ast-dump``, then you need to take the ``clang -cc1`` line generated by the
-driver and add the option you need.  Alternatively, you can run
-``clang -Xclang <option> ...`` to force the driver pass ``<option>`` to
-``clang -cc1``.
-
-I get errors about some headers being missing (``stddef.h``, ``stdarg.h``)
---------------------------------------------------------------------------
-
-Some header files (``stddef.h``, ``stdarg.h``, and others) are shipped with
-Clang --- these are called builtin includes.  Clang searches for them in a
-directory relative to the location of the ``clang`` binary.  If you moved the
-``clang`` binary, you need to move the builtin headers, too.
-
-More information can be found in the :ref:`libtooling_builtin_includes`
-section.
-

Modified: trunk/contrib/llvm/tools/clang/docs/HowToSetupToolingForLLVM.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/HowToSetupToolingForLLVM.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/HowToSetupToolingForLLVM.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,199 +0,0 @@
-===================================
-How To Setup Clang Tooling For LLVM
-===================================
-
-Clang Tooling provides infrastructure to write tools that need syntactic
-and semantic information about a program. This term also relates to a set
-of specific tools using this infrastructure (e.g. ``clang-check``). This
-document provides information on how to set up and use Clang Tooling for
-the LLVM source code.
-
-Introduction
-============
-
-Clang Tooling needs a compilation database to figure out specific build
-options for each file. Currently it can create a compilation database
-from the ``compilation_commands.json`` file, generated by CMake. When
-invoking clang tools, you can either specify a path to a build directory
-using a command line parameter ``-p`` or let Clang Tooling find this
-file in your source tree. In either case you need to configure your
-build using CMake to use clang tools.
-
-Setup Clang Tooling Using CMake and Make
-========================================
-
-If you intend to use make to build LLVM, you should have CMake 2.8.6 or
-later installed (can be found `here <http://cmake.org>`_).
-
-First, you need to generate Makefiles for LLVM with CMake. You need to
-make a build directory and run CMake from it:
-
-.. code-block:: console
-
-  $ mkdir your/build/directory
-  $ cd your/build/directory
-  $ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON path/to/llvm/sources
-
-If you want to use clang instead of GCC, you can add
-``-DCMAKE_C_COMPILER=/path/to/clang -DCMAKE_CXX_COMPILER=/path/to/clang++``.
-You can also use ``ccmake``, which provides a curses interface to configure
-CMake variables for lazy people.
-
-As a result, the new ``compile_commands.json`` file should appear in the
-current directory. You should link it to the LLVM source tree so that
-Clang Tooling is able to use it:
-
-.. code-block:: console
-
-  $ ln -s $PWD/compile_commands.json path/to/llvm/source/
-
-Now you are ready to build and test LLVM using make:
-
-.. code-block:: console
-
-  $ make check-all
-
-Using Clang Tools
-=================
-
-After you completed the previous steps, you are ready to run clang tools. If
-you have a recent clang installed, you should have ``clang-check`` in
-``$PATH``. Try to run it on any ``.cpp`` file inside the LLVM source tree:
-
-.. code-block:: console
-
-  $ clang-check tools/clang/lib/Tooling/CompilationDatabase.cpp
-
-If you're using vim, it's convenient to have clang-check integrated. Put
-this into your ``.vimrc``:
-
-::
-
-    function! ClangCheckImpl(cmd)
-      if &autowrite | wall | endif
-      echo "Running " . a:cmd . " ..."
-      let l:output = system(a:cmd)
-      cexpr l:output
-      cwindow
-      let w:quickfix_title = a:cmd
-      if v:shell_error != 0
-        cc
-      endif
-      let g:clang_check_last_cmd = a:cmd
-    endfunction
-
-    function! ClangCheck()
-      let l:filename = expand('%')
-      if l:filename =~ '\.\(cpp\|cxx\|cc\|c\)$'
-        call ClangCheckImpl("clang-check " . l:filename)
-      elseif exists("g:clang_check_last_cmd")
-        call ClangCheckImpl(g:clang_check_last_cmd)
-      else
-        echo "Can't detect file's compilation arguments and no previous clang-check invocation!"
-      endif
-    endfunction
-
-    nmap <silent> <F5> :call ClangCheck()<CR><CR>
-
-When editing a .cpp/.cxx/.cc/.c file, hit F5 to reparse the file. In
-case the current file has a different extension (for example, .h), F5
-will re-run the last clang-check invocation made from this vim instance
-(if any). The output will go into the error window, which is opened
-automatically when clang-check finds errors, and can be re-opened with
-``:cope``.
-
-Other ``clang-check`` options that can be useful when working with clang
-AST:
-
-* ``-ast-print`` --- Build ASTs and then pretty-print them.
-* ``-ast-dump`` --- Build ASTs and then debug dump them.
-* ``-ast-dump-filter=<string>`` --- Use with ``-ast-dump`` or ``-ast-print`` to
-  dump/print only AST declaration nodes having a certain substring in a
-  qualified name. Use ``-ast-list`` to list all filterable declaration node
-  names.
-* ``-ast-list`` --- Build ASTs and print the list of declaration node qualified
-  names.
-
-Examples:
-
-.. code-block:: console
-
-  $ clang-check tools/clang/tools/clang-check/ClangCheck.cpp -ast-dump -ast-dump-filter ActionFactory::newASTConsumer
-  Processing: tools/clang/tools/clang-check/ClangCheck.cpp.
-  Dumping ::ActionFactory::newASTConsumer:
-  clang::ASTConsumer *newASTConsumer() (CompoundStmt 0x44da290 </home/alexfh/local/llvm/tools/clang/tools/clang-check/ClangCheck.cpp:64:40, line:72:3>
-    (IfStmt 0x44d97c8 <line:65:5, line:66:45>
-      <<<NULL>>>
-        (ImplicitCastExpr 0x44d96d0 <line:65:9> '_Bool':'_Bool' <UserDefinedConversion>
-  ...
-  $ clang-check tools/clang/tools/clang-check/ClangCheck.cpp -ast-print -ast-dump-filter ActionFactory::newASTConsumer
-  Processing: tools/clang/tools/clang-check/ClangCheck.cpp.
-  Printing <anonymous namespace>::ActionFactory::newASTConsumer:
-  clang::ASTConsumer *newASTConsumer() {
-      if (this->ASTList.operator _Bool())
-          return clang::CreateASTDeclNodeLister();
-      if (this->ASTDump.operator _Bool())
-          return clang::CreateASTDumper(this->ASTDumpFilter);
-      if (this->ASTPrint.operator _Bool())
-          return clang::CreateASTPrinter(&llvm::outs(), this->ASTDumpFilter);
-      return new clang::ASTConsumer();
-  }
-
-(Experimental) Using Ninja Build System
-=======================================
-
-Optionally you can use the `Ninja <https://github.com/martine/ninja>`_
-build system instead of make. It is aimed at making your builds faster.
-Currently this step will require building Ninja from sources.
-
-To take advantage of using Clang Tools along with Ninja build you need
-at least CMake 2.8.9.
-
-Clone the Ninja git repository and build Ninja from sources:
-
-.. code-block:: console
-
-  $ git clone git://github.com/martine/ninja.git
-  $ cd ninja/
-  $ ./bootstrap.py
-
-This will result in a single binary ``ninja`` in the current directory.
-It doesn't require installation and can just be copied to any location
-inside ``$PATH``, say ``/usr/local/bin/``:
-
-.. code-block:: console
-
-  $ sudo cp ninja /usr/local/bin/
-  $ sudo chmod a+rx /usr/local/bin/ninja
-
-After doing all of this, you'll need to generate Ninja build files for
-LLVM with CMake. You need to make a build directory and run CMake from
-it:
-
-.. code-block:: console
-
-  $ mkdir your/build/directory
-  $ cd your/build/directory
-  $ cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON path/to/llvm/sources
-
-If you want to use clang instead of GCC, you can add
-``-DCMAKE_C_COMPILER=/path/to/clang -DCMAKE_CXX_COMPILER=/path/to/clang++``.
-You can also use ``ccmake``, which provides a curses interface to configure
-CMake variables in an interactive manner.
-
-As a result, the new ``compile_commands.json`` file should appear in the
-current directory. You should link it to the LLVM source tree so that
-Clang Tooling is able to use it:
-
-.. code-block:: console
-
-  $ ln -s $PWD/compile_commands.json path/to/llvm/source/
-
-Now you are ready to build and test LLVM using Ninja:
-
-.. code-block:: console
-
-  $ ninja check-all
-
-Other target names can be used in the same way as with make.
-

Modified: trunk/contrib/llvm/tools/clang/docs/InternalsManual.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/InternalsManual.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/InternalsManual.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1810 +0,0 @@
-============================
-"Clang" CFE Internals Manual
-============================
-
-.. contents::
-   :local:
-
-Introduction
-============
-
-This document describes some of the more important APIs and internal design
-decisions made in the Clang C front-end.  The purpose of this document is to
-both capture some of this high level information and also describe some of the
-design decisions behind it.  This is meant for people interested in hacking on
-Clang, not for end-users.  The description below is categorized by libraries,
-and does not describe any of the clients of the libraries.
-
-LLVM Support Library
-====================
-
-The LLVM ``libSupport`` library provides many underlying libraries and
-`data-structures <http://llvm.org/docs/ProgrammersManual.html>`_, including
-command line option processing, various containers and a system abstraction
-layer, which is used for file system access.
-
-The Clang "Basic" Library
-=========================
-
-This library certainly needs a better name.  The "basic" library contains a
-number of low-level utilities for tracking and manipulating source buffers,
-locations within the source buffers, diagnostics, tokens, target abstraction,
-and information about the subset of the language being compiled for.
-
-Part of this infrastructure is specific to C (such as the ``TargetInfo``
-class), other parts could be reused for other non-C-based languages
-(``SourceLocation``, ``SourceManager``, ``Diagnostics``, ``FileManager``).
-When and if there is future demand we can figure out if it makes sense to
-introduce a new library, move the general classes somewhere else, or introduce
-some other solution.
-
-We describe the roles of these classes in order of their dependencies.
-
-The Diagnostics Subsystem
--------------------------
-
-The Clang Diagnostics subsystem is an important part of how the compiler
-communicates with the human.  Diagnostics are the warnings and errors produced
-when the code is incorrect or dubious.  In Clang, each diagnostic produced has
-(at the minimum) a unique ID, an English translation associated with it, a
-:ref:`SourceLocation <SourceLocation>` to "put the caret", and a severity
-(e.g., ``WARNING`` or ``ERROR``).  They can also optionally include a number of
-arguments to the dianostic (which fill in "%0"'s in the string) as well as a
-number of source ranges that related to the diagnostic.
-
-In this section, we'll be giving examples produced by the Clang command line
-driver, but diagnostics can be :ref:`rendered in many different ways
-<DiagnosticClient>` depending on how the ``DiagnosticClient`` interface is
-implemented.  A representative example of a diagnostic is:
-
-.. code-block:: c++
-
-  t.c:38:15: error: invalid operands to binary expression ('int *' and '_Complex float')
-  P = (P-42) + Gamma*4;
-      ~~~~~~ ^ ~~~~~~~
-
-In this example, you can see the English translation, the severity (error), you
-can see the source location (the caret ("``^``") and file/line/column info),
-the source ranges "``~~~~``", arguments to the diagnostic ("``int*``" and
-"``_Complex float``").  You'll have to believe me that there is a unique ID
-backing the diagnostic :).
-
-Getting all of this to happen has several steps and involves many moving
-pieces, this section describes them and talks about best practices when adding
-a new diagnostic.
-
-The ``Diagnostic*Kinds.td`` files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Diagnostics are created by adding an entry to one of the
-``clang/Basic/Diagnostic*Kinds.td`` files, depending on what library will be
-using it.  From this file, :program:`tblgen` generates the unique ID of the
-diagnostic, the severity of the diagnostic and the English translation + format
-string.
-
-There is little sanity with the naming of the unique ID's right now.  Some
-start with ``err_``, ``warn_``, ``ext_`` to encode the severity into the name.
-Since the enum is referenced in the C++ code that produces the diagnostic, it
-is somewhat useful for it to be reasonably short.
-
-The severity of the diagnostic comes from the set {``NOTE``, ``WARNING``,
-``EXTENSION``, ``EXTWARN``, ``ERROR``}.  The ``ERROR`` severity is used for
-diagnostics indicating the program is never acceptable under any circumstances.
-When an error is emitted, the AST for the input code may not be fully built.
-The ``EXTENSION`` and ``EXTWARN`` severities are used for extensions to the
-language that Clang accepts.  This means that Clang fully understands and can
-represent them in the AST, but we produce diagnostics to tell the user their
-code is non-portable.  The difference is that the former are ignored by
-default, and the later warn by default.  The ``WARNING`` severity is used for
-constructs that are valid in the currently selected source language but that
-are dubious in some way.  The ``NOTE`` level is used to staple more information
-onto previous diagnostics.
-
-These *severities* are mapped into a smaller set (the ``Diagnostic::Level``
-enum, {``Ignored``, ``Note``, ``Warning``, ``Error``, ``Fatal``}) of output
-*levels* by the diagnostics subsystem based on various configuration options.
-Clang internally supports a fully fine grained mapping mechanism that allows
-you to map almost any diagnostic to the output level that you want.  The only
-diagnostics that cannot be mapped are ``NOTE``\ s, which always follow the
-severity of the previously emitted diagnostic and ``ERROR``\ s, which can only
-be mapped to ``Fatal`` (it is not possible to turn an error into a warning, for
-example).
-
-Diagnostic mappings are used in many ways.  For example, if the user specifies
-``-pedantic``, ``EXTENSION`` maps to ``Warning``, if they specify
-``-pedantic-errors``, it turns into ``Error``.  This is used to implement
-options like ``-Wunused_macros``, ``-Wundef`` etc.
-
-Mapping to ``Fatal`` should only be used for diagnostics that are considered so
-severe that error recovery won't be able to recover sensibly from them (thus
-spewing a ton of bogus errors).  One example of this class of error are failure
-to ``#include`` a file.
-
-The Format String
-^^^^^^^^^^^^^^^^^
-
-The format string for the diagnostic is very simple, but it has some power.  It
-takes the form of a string in English with markers that indicate where and how
-arguments to the diagnostic are inserted and formatted.  For example, here are
-some simple format strings:
-
-.. code-block:: c++
-
-  "binary integer literals are an extension"
-  "format string contains '\\0' within the string body"
-  "more '%%' conversions than data arguments"
-  "invalid operands to binary expression (%0 and %1)"
-  "overloaded '%0' must be a %select{unary|binary|unary or binary}2 operator"
-       " (has %1 parameter%s1)"
-
-These examples show some important points of format strings.  You can use any
-plain ASCII character in the diagnostic string except "``%``" without a
-problem, but these are C strings, so you have to use and be aware of all the C
-escape sequences (as in the second example).  If you want to produce a "``%``"
-in the output, use the "``%%``" escape sequence, like the third diagnostic.
-Finally, Clang uses the "``%...[digit]``" sequences to specify where and how
-arguments to the diagnostic are formatted.
-
-Arguments to the diagnostic are numbered according to how they are specified by
-the C++ code that :ref:`produces them <internals-producing-diag>`, and are
-referenced by ``%0`` .. ``%9``.  If you have more than 10 arguments to your
-diagnostic, you are doing something wrong :).  Unlike ``printf``, there is no
-requirement that arguments to the diagnostic end up in the output in the same
-order as they are specified, you could have a format string with "``%1 %0``"
-that swaps them, for example.  The text in between the percent and digit are
-formatting instructions.  If there are no instructions, the argument is just
-turned into a string and substituted in.
-
-Here are some "best practices" for writing the English format string:
-
-* Keep the string short.  It should ideally fit in the 80 column limit of the
-  ``DiagnosticKinds.td`` file.  This avoids the diagnostic wrapping when
-  printed, and forces you to think about the important point you are conveying
-  with the diagnostic.
-* Take advantage of location information.  The user will be able to see the
-  line and location of the caret, so you don't need to tell them that the
-  problem is with the 4th argument to the function: just point to it.
-* Do not capitalize the diagnostic string, and do not end it with a period.
-* If you need to quote something in the diagnostic string, use single quotes.
-
-Diagnostics should never take random English strings as arguments: you
-shouldn't use "``you have a problem with %0``" and pass in things like "``your
-argument``" or "``your return value``" as arguments.  Doing this prevents
-:ref:`translating <internals-diag-translation>` the Clang diagnostics to other
-languages (because they'll get random English words in their otherwise
-localized diagnostic).  The exceptions to this are C/C++ language keywords
-(e.g., ``auto``, ``const``, ``mutable``, etc) and C/C++ operators (``/=``).
-Note that things like "pointer" and "reference" are not keywords.  On the other
-hand, you *can* include anything that comes from the user's source code,
-including variable names, types, labels, etc.  The "``select``" format can be
-used to achieve this sort of thing in a localizable way, see below.
-
-Formatting a Diagnostic Argument
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Arguments to diagnostics are fully typed internally, and come from a couple
-different classes: integers, types, names, and random strings.  Depending on
-the class of the argument, it can be optionally formatted in different ways.
-This gives the ``DiagnosticClient`` information about what the argument means
-without requiring it to use a specific presentation (consider this MVC for
-Clang :).
-
-Here are the different diagnostic argument formats currently supported by
-Clang:
-
-**"s" format**
-
-Example:
-  ``"requires %1 parameter%s1"``
-Class:
-  Integers
-Description:
-  This is a simple formatter for integers that is useful when producing English
-  diagnostics.  When the integer is 1, it prints as nothing.  When the integer
-  is not 1, it prints as "``s``".  This allows some simple grammatical forms to
-  be to be handled correctly, and eliminates the need to use gross things like
-  ``"requires %1 parameter(s)"``.
-
-**"select" format**
-
-Example:
-  ``"must be a %select{unary|binary|unary or binary}2 operator"``
-Class:
-  Integers
-Description:
-  This format specifier is used to merge multiple related diagnostics together
-  into one common one, without requiring the difference to be specified as an
-  English string argument.  Instead of specifying the string, the diagnostic
-  gets an integer argument and the format string selects the numbered option.
-  In this case, the "``%2``" value must be an integer in the range [0..2].  If
-  it is 0, it prints "unary", if it is 1 it prints "binary" if it is 2, it
-  prints "unary or binary".  This allows other language translations to
-  substitute reasonable words (or entire phrases) based on the semantics of the
-  diagnostic instead of having to do things textually.  The selected string
-  does undergo formatting.
-
-**"plural" format**
-
-Example:
-  ``"you have %1 %plural{1:mouse|:mice}1 connected to your computer"``
-Class:
-  Integers
-Description:
-  This is a formatter for complex plural forms.  It is designed to handle even
-  the requirements of languages with very complex plural forms, as many Baltic
-  languages have.  The argument consists of a series of expression/form pairs,
-  separated by ":", where the first form whose expression evaluates to true is
-  the result of the modifier.
-
-  An expression can be empty, in which case it is always true.  See the example
-  at the top.  Otherwise, it is a series of one or more numeric conditions,
-  separated by ",".  If any condition matches, the expression matches.  Each
-  numeric condition can take one of three forms.
-
-  * number: A simple decimal number matches if the argument is the same as the
-    number.  Example: ``"%plural{1:mouse|:mice}4"``
-  * range: A range in square brackets matches if the argument is within the
-    range.  Then range is inclusive on both ends.  Example:
-    ``"%plural{0:none|1:one|[2,5]:some|:many}2"``
-  * modulo: A modulo operator is followed by a number, and equals sign and
-    either a number or a range.  The tests are the same as for plain numbers
-    and ranges, but the argument is taken modulo the number first.  Example:
-    ``"%plural{%100=0:even hundred|%100=[1,50]:lower half|:everything else}1"``
-
-  The parser is very unforgiving.  A syntax error, even whitespace, will abort,
-  as will a failure to match the argument against any expression.
-
-**"ordinal" format**
-
-Example:
-  ``"ambiguity in %ordinal0 argument"``
-Class:
-  Integers
-Description:
-  This is a formatter which represents the argument number as an ordinal: the
-  value ``1`` becomes ``1st``, ``3`` becomes ``3rd``, and so on.  Values less
-  than ``1`` are not supported.  This formatter is currently hard-coded to use
-  English ordinals.
-
-**"objcclass" format**
-
-Example:
-  ``"method %objcclass0 not found"``
-Class:
-  ``DeclarationName``
-Description:
-  This is a simple formatter that indicates the ``DeclarationName`` corresponds
-  to an Objective-C class method selector.  As such, it prints the selector
-  with a leading "``+``".
-
-**"objcinstance" format**
-
-Example:
-  ``"method %objcinstance0 not found"``
-Class:
-  ``DeclarationName``
-Description:
-  This is a simple formatter that indicates the ``DeclarationName`` corresponds
-  to an Objective-C instance method selector.  As such, it prints the selector
-  with a leading "``-``".
-
-**"q" format**
-
-Example:
-  ``"candidate found by name lookup is %q0"``
-Class:
-  ``NamedDecl *``
-Description:
-  This formatter indicates that the fully-qualified name of the declaration
-  should be printed, e.g., "``std::vector``" rather than "``vector``".
-
-**"diff" format**
-
-Example:
-  ``"no known conversion %diff{from $ to $|from argument type to parameter type}1,2"``
-Class:
-  ``QualType``
-Description:
-  This formatter takes two ``QualType``\ s and attempts to print a template
-  difference between the two.  If tree printing is off, the text inside the
-  braces before the pipe is printed, with the formatted text replacing the $.
-  If tree printing is on, the text after the pipe is printed and a type tree is
-  printed after the diagnostic message.
-
-It is really easy to add format specifiers to the Clang diagnostics system, but
-they should be discussed before they are added.  If you are creating a lot of
-repetitive diagnostics and/or have an idea for a useful formatter, please bring
-it up on the cfe-dev mailing list.
-
-.. _internals-producing-diag:
-
-Producing the Diagnostic
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Now that you've created the diagnostic in the ``Diagnostic*Kinds.td`` file, you
-need to write the code that detects the condition in question and emits the new
-diagnostic.  Various components of Clang (e.g., the preprocessor, ``Sema``,
-etc.) provide a helper function named "``Diag``".  It creates a diagnostic and
-accepts the arguments, ranges, and other information that goes along with it.
-
-For example, the binary expression error comes from code like this:
-
-.. code-block:: c++
-
-  if (various things that are bad)
-    Diag(Loc, diag::err_typecheck_invalid_operands)
-      << lex->getType() << rex->getType()
-      << lex->getSourceRange() << rex->getSourceRange();
-
-This shows that use of the ``Diag`` method: it takes a location (a
-:ref:`SourceLocation <SourceLocation>` object) and a diagnostic enum value
-(which matches the name from ``Diagnostic*Kinds.td``).  If the diagnostic takes
-arguments, they are specified with the ``<<`` operator: the first argument
-becomes ``%0``, the second becomes ``%1``, etc.  The diagnostic interface
-allows you to specify arguments of many different types, including ``int`` and
-``unsigned`` for integer arguments, ``const char*`` and ``std::string`` for
-string arguments, ``DeclarationName`` and ``const IdentifierInfo *`` for names,
-``QualType`` for types, etc.  ``SourceRange``\ s are also specified with the
-``<<`` operator, but do not have a specific ordering requirement.
-
-As you can see, adding and producing a diagnostic is pretty straightforward.
-The hard part is deciding exactly what you need to say to help the user,
-picking a suitable wording, and providing the information needed to format it
-correctly.  The good news is that the call site that issues a diagnostic should
-be completely independent of how the diagnostic is formatted and in what
-language it is rendered.
-
-Fix-It Hints
-^^^^^^^^^^^^
-
-In some cases, the front end emits diagnostics when it is clear that some small
-change to the source code would fix the problem.  For example, a missing
-semicolon at the end of a statement or a use of deprecated syntax that is
-easily rewritten into a more modern form.  Clang tries very hard to emit the
-diagnostic and recover gracefully in these and other cases.
-
-However, for these cases where the fix is obvious, the diagnostic can be
-annotated with a hint (referred to as a "fix-it hint") that describes how to
-change the code referenced by the diagnostic to fix the problem.  For example,
-it might add the missing semicolon at the end of the statement or rewrite the
-use of a deprecated construct into something more palatable.  Here is one such
-example from the C++ front end, where we warn about the right-shift operator
-changing meaning from C++98 to C++11:
-
-.. code-block:: c++
-
-  test.cpp:3:7: warning: use of right-shift operator ('>>') in template argument
-                         will require parentheses in C++11
-  A<100 >> 2> *a;
-        ^
-    (       )
-
-Here, the fix-it hint is suggesting that parentheses be added, and showing
-exactly where those parentheses would be inserted into the source code.  The
-fix-it hints themselves describe what changes to make to the source code in an
-abstract manner, which the text diagnostic printer renders as a line of
-"insertions" below the caret line.  :ref:`Other diagnostic clients
-<DiagnosticClient>` might choose to render the code differently (e.g., as
-markup inline) or even give the user the ability to automatically fix the
-problem.
-
-Fix-it hints on errors and warnings need to obey these rules:
-
-* Since they are automatically applied if ``-Xclang -fixit`` is passed to the
-  driver, they should only be used when it's very likely they match the user's
-  intent.
-* Clang must recover from errors as if the fix-it had been applied.
-
-If a fix-it can't obey these rules, put the fix-it on a note.  Fix-its on notes
-are not applied automatically.
-
-All fix-it hints are described by the ``FixItHint`` class, instances of which
-should be attached to the diagnostic using the ``<<`` operator in the same way
-that highlighted source ranges and arguments are passed to the diagnostic.
-Fix-it hints can be created with one of three constructors:
-
-* ``FixItHint::CreateInsertion(Loc, Code)``
-
-    Specifies that the given ``Code`` (a string) should be inserted before the
-    source location ``Loc``.
-
-* ``FixItHint::CreateRemoval(Range)``
-
-    Specifies that the code in the given source ``Range`` should be removed.
-
-* ``FixItHint::CreateReplacement(Range, Code)``
-
-    Specifies that the code in the given source ``Range`` should be removed,
-    and replaced with the given ``Code`` string.
-
-.. _DiagnosticClient:
-
-The ``DiagnosticClient`` Interface
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Once code generates a diagnostic with all of the arguments and the rest of the
-relevant information, Clang needs to know what to do with it.  As previously
-mentioned, the diagnostic machinery goes through some filtering to map a
-severity onto a diagnostic level, then (assuming the diagnostic is not mapped
-to "``Ignore``") it invokes an object that implements the ``DiagnosticClient``
-interface with the information.
-
-It is possible to implement this interface in many different ways.  For
-example, the normal Clang ``DiagnosticClient`` (named
-``TextDiagnosticPrinter``) turns the arguments into strings (according to the
-various formatting rules), prints out the file/line/column information and the
-string, then prints out the line of code, the source ranges, and the caret.
-However, this behavior isn't required.
-
-Another implementation of the ``DiagnosticClient`` interface is the
-``TextDiagnosticBuffer`` class, which is used when Clang is in ``-verify``
-mode.  Instead of formatting and printing out the diagnostics, this
-implementation just captures and remembers the diagnostics as they fly by.
-Then ``-verify`` compares the list of produced diagnostics to the list of
-expected ones.  If they disagree, it prints out its own output.  Full
-documentation for the ``-verify`` mode can be found in the Clang API
-documentation for `VerifyDiagnosticConsumer
-</doxygen/classclang_1_1VerifyDiagnosticConsumer.html#details>`_.
-
-There are many other possible implementations of this interface, and this is
-why we prefer diagnostics to pass down rich structured information in
-arguments.  For example, an HTML output might want declaration names be
-linkified to where they come from in the source.  Another example is that a GUI
-might let you click on typedefs to expand them.  This application would want to
-pass significantly more information about types through to the GUI than a
-simple flat string.  The interface allows this to happen.
-
-.. _internals-diag-translation:
-
-Adding Translations to Clang
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Not possible yet! Diagnostic strings should be written in UTF-8, the client can
-translate to the relevant code page if needed.  Each translation completely
-replaces the format string for the diagnostic.
-
-.. _SourceLocation:
-.. _SourceManager:
-
-The ``SourceLocation`` and ``SourceManager`` classes
-----------------------------------------------------
-
-Strangely enough, the ``SourceLocation`` class represents a location within the
-source code of the program.  Important design points include:
-
-#. ``sizeof(SourceLocation)`` must be extremely small, as these are embedded
-   into many AST nodes and are passed around often.  Currently it is 32 bits.
-#. ``SourceLocation`` must be a simple value object that can be efficiently
-   copied.
-#. We should be able to represent a source location for any byte of any input
-   file.  This includes in the middle of tokens, in whitespace, in trigraphs,
-   etc.
-#. A ``SourceLocation`` must encode the current ``#include`` stack that was
-   active when the location was processed.  For example, if the location
-   corresponds to a token, it should contain the set of ``#include``\ s active
-   when the token was lexed.  This allows us to print the ``#include`` stack
-   for a diagnostic.
-#. ``SourceLocation`` must be able to describe macro expansions, capturing both
-   the ultimate instantiation point and the source of the original character
-   data.
-
-In practice, the ``SourceLocation`` works together with the ``SourceManager``
-class to encode two pieces of information about a location: its spelling
-location and its instantiation location.  For most tokens, these will be the
-same.  However, for a macro expansion (or tokens that came from a ``_Pragma``
-directive) these will describe the location of the characters corresponding to
-the token and the location where the token was used (i.e., the macro
-instantiation point or the location of the ``_Pragma`` itself).
-
-The Clang front-end inherently depends on the location of a token being tracked
-correctly.  If it is ever incorrect, the front-end may get confused and die.
-The reason for this is that the notion of the "spelling" of a ``Token`` in
-Clang depends on being able to find the original input characters for the
-token.  This concept maps directly to the "spelling location" for the token.
-
-``SourceRange`` and ``CharSourceRange``
----------------------------------------
-
-.. mostly taken from http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-August/010595.html
-
-Clang represents most source ranges by [first, last], where "first" and "last"
-each point to the beginning of their respective tokens.  For example consider
-the ``SourceRange`` of the following statement:
-
-.. code-block:: c++
-
-  x = foo + bar;
-  ^first    ^last
-
-To map from this representation to a character-based representation, the "last"
-location needs to be adjusted to point to (or past) the end of that token with
-either ``Lexer::MeasureTokenLength()`` or ``Lexer::getLocForEndOfToken()``.  For
-the rare cases where character-level source ranges information is needed we use
-the ``CharSourceRange`` class.
-
-The Driver Library
-==================
-
-The clang Driver and library are documented :doc:`here <DriverInternals>`.
-
-Precompiled Headers
-===================
-
-Clang supports two implementations of precompiled headers.  The default
-implementation, precompiled headers (:doc:`PCH <PCHInternals>`) uses a
-serialized representation of Clang's internal data structures, encoded with the
-`LLVM bitstream format <http://llvm.org/docs/BitCodeFormat.html>`_.
-Pretokenized headers (:doc:`PTH <PTHInternals>`), on the other hand, contain a
-serialized representation of the tokens encountered when preprocessing a header
-(and anything that header includes).
-
-The Frontend Library
-====================
-
-The Frontend library contains functionality useful for building tools on top of
-the Clang libraries, for example several methods for outputting diagnostics.
-
-The Lexer and Preprocessor Library
-==================================
-
-The Lexer library contains several tightly-connected classes that are involved
-with the nasty process of lexing and preprocessing C source code.  The main
-interface to this library for outside clients is the large ``Preprocessor``
-class.  It contains the various pieces of state that are required to coherently
-read tokens out of a translation unit.
-
-The core interface to the ``Preprocessor`` object (once it is set up) is the
-``Preprocessor::Lex`` method, which returns the next :ref:`Token <Token>` from
-the preprocessor stream.  There are two types of token providers that the
-preprocessor is capable of reading from: a buffer lexer (provided by the
-:ref:`Lexer <Lexer>` class) and a buffered token stream (provided by the
-:ref:`TokenLexer <TokenLexer>` class).
-
-.. _Token:
-
-The Token class
----------------
-
-The ``Token`` class is used to represent a single lexed token.  Tokens are
-intended to be used by the lexer/preprocess and parser libraries, but are not
-intended to live beyond them (for example, they should not live in the ASTs).
-
-Tokens most often live on the stack (or some other location that is efficient
-to access) as the parser is running, but occasionally do get buffered up.  For
-example, macro definitions are stored as a series of tokens, and the C++
-front-end periodically needs to buffer tokens up for tentative parsing and
-various pieces of look-ahead.  As such, the size of a ``Token`` matters.  On a
-32-bit system, ``sizeof(Token)`` is currently 16 bytes.
-
-Tokens occur in two forms: :ref:`annotation tokens <AnnotationToken>` and
-normal tokens.  Normal tokens are those returned by the lexer, annotation
-tokens represent semantic information and are produced by the parser, replacing
-normal tokens in the token stream.  Normal tokens contain the following
-information:
-
-* **A SourceLocation** --- This indicates the location of the start of the
-  token.
-
-* **A length** --- This stores the length of the token as stored in the
-  ``SourceBuffer``.  For tokens that include them, this length includes
-  trigraphs and escaped newlines which are ignored by later phases of the
-  compiler.  By pointing into the original source buffer, it is always possible
-  to get the original spelling of a token completely accurately.
-
-* **IdentifierInfo** --- If a token takes the form of an identifier, and if
-  identifier lookup was enabled when the token was lexed (e.g., the lexer was
-  not reading in "raw" mode) this contains a pointer to the unique hash value
-  for the identifier.  Because the lookup happens before keyword
-  identification, this field is set even for language keywords like "``for``".
-
-* **TokenKind** --- This indicates the kind of token as classified by the
-  lexer.  This includes things like ``tok::starequal`` (for the "``*=``"
-  operator), ``tok::ampamp`` for the "``&&``" token, and keyword values (e.g.,
-  ``tok::kw_for``) for identifiers that correspond to keywords.  Note that
-  some tokens can be spelled multiple ways.  For example, C++ supports
-  "operator keywords", where things like "``and``" are treated exactly like the
-  "``&&``" operator.  In these cases, the kind value is set to ``tok::ampamp``,
-  which is good for the parser, which doesn't have to consider both forms.  For
-  something that cares about which form is used (e.g., the preprocessor
-  "stringize" operator) the spelling indicates the original form.
-
-* **Flags** --- There are currently four flags tracked by the
-  lexer/preprocessor system on a per-token basis:
-
-  #. **StartOfLine** --- This was the first token that occurred on its input
-     source line.
-  #. **LeadingSpace** --- There was a space character either immediately before
-     the token or transitively before the token as it was expanded through a
-     macro.  The definition of this flag is very closely defined by the
-     stringizing requirements of the preprocessor.
-  #. **DisableExpand** --- This flag is used internally to the preprocessor to
-     represent identifier tokens which have macro expansion disabled.  This
-     prevents them from being considered as candidates for macro expansion ever
-     in the future.
-  #. **NeedsCleaning** --- This flag is set if the original spelling for the
-     token includes a trigraph or escaped newline.  Since this is uncommon,
-     many pieces of code can fast-path on tokens that did not need cleaning.
-
-One interesting (and somewhat unusual) aspect of normal tokens is that they
-don't contain any semantic information about the lexed value.  For example, if
-the token was a pp-number token, we do not represent the value of the number
-that was lexed (this is left for later pieces of code to decide).
-Additionally, the lexer library has no notion of typedef names vs variable
-names: both are returned as identifiers, and the parser is left to decide
-whether a specific identifier is a typedef or a variable (tracking this
-requires scope information among other things).  The parser can do this
-translation by replacing tokens returned by the preprocessor with "Annotation
-Tokens".
-
-.. _AnnotationToken:
-
-Annotation Tokens
------------------
-
-Annotation tokens are tokens that are synthesized by the parser and injected
-into the preprocessor's token stream (replacing existing tokens) to record
-semantic information found by the parser.  For example, if "``foo``" is found
-to be a typedef, the "``foo``" ``tok::identifier`` token is replaced with an
-``tok::annot_typename``.  This is useful for a couple of reasons: 1) this makes
-it easy to handle qualified type names (e.g., "``foo::bar::baz<42>::t``") in
-C++ as a single "token" in the parser.  2) if the parser backtracks, the
-reparse does not need to redo semantic analysis to determine whether a token
-sequence is a variable, type, template, etc.
-
-Annotation tokens are created by the parser and reinjected into the parser's
-token stream (when backtracking is enabled).  Because they can only exist in
-tokens that the preprocessor-proper is done with, it doesn't need to keep
-around flags like "start of line" that the preprocessor uses to do its job.
-Additionally, an annotation token may "cover" a sequence of preprocessor tokens
-(e.g., "``a::b::c``" is five preprocessor tokens).  As such, the valid fields
-of an annotation token are different than the fields for a normal token (but
-they are multiplexed into the normal ``Token`` fields):
-
-* **SourceLocation "Location"** --- The ``SourceLocation`` for the annotation
-  token indicates the first token replaced by the annotation token.  In the
-  example above, it would be the location of the "``a``" identifier.
-* **SourceLocation "AnnotationEndLoc"** --- This holds the location of the last
-  token replaced with the annotation token.  In the example above, it would be
-  the location of the "``c``" identifier.
-* **void* "AnnotationValue"** --- This contains an opaque object that the
-  parser gets from ``Sema``.  The parser merely preserves the information for
-  ``Sema`` to later interpret based on the annotation token kind.
-* **TokenKind "Kind"** --- This indicates the kind of Annotation token this is.
-  See below for the different valid kinds.
-
-Annotation tokens currently come in three kinds:
-
-#. **tok::annot_typename**: This annotation token represents a resolved
-   typename token that is potentially qualified.  The ``AnnotationValue`` field
-   contains the ``QualType`` returned by ``Sema::getTypeName()``, possibly with
-   source location information attached.
-#. **tok::annot_cxxscope**: This annotation token represents a C++ scope
-   specifier, such as "``A::B::``".  This corresponds to the grammar
-   productions "*::*" and "*:: [opt] nested-name-specifier*".  The
-   ``AnnotationValue`` pointer is a ``NestedNameSpecifier *`` returned by the
-   ``Sema::ActOnCXXGlobalScopeSpecifier`` and
-   ``Sema::ActOnCXXNestedNameSpecifier`` callbacks.
-#. **tok::annot_template_id**: This annotation token represents a C++
-   template-id such as "``foo<int, 4>``", where "``foo``" is the name of a
-   template.  The ``AnnotationValue`` pointer is a pointer to a ``malloc``'d
-   ``TemplateIdAnnotation`` object.  Depending on the context, a parsed
-   template-id that names a type might become a typename annotation token (if
-   all we care about is the named type, e.g., because it occurs in a type
-   specifier) or might remain a template-id token (if we want to retain more
-   source location information or produce a new type, e.g., in a declaration of
-   a class template specialization).  template-id annotation tokens that refer
-   to a type can be "upgraded" to typename annotation tokens by the parser.
-
-As mentioned above, annotation tokens are not returned by the preprocessor,
-they are formed on demand by the parser.  This means that the parser has to be
-aware of cases where an annotation could occur and form it where appropriate.
-This is somewhat similar to how the parser handles Translation Phase 6 of C99:
-String Concatenation (see C99 5.1.1.2).  In the case of string concatenation,
-the preprocessor just returns distinct ``tok::string_literal`` and
-``tok::wide_string_literal`` tokens and the parser eats a sequence of them
-wherever the grammar indicates that a string literal can occur.
-
-In order to do this, whenever the parser expects a ``tok::identifier`` or
-``tok::coloncolon``, it should call the ``TryAnnotateTypeOrScopeToken`` or
-``TryAnnotateCXXScopeToken`` methods to form the annotation token.  These
-methods will maximally form the specified annotation tokens and replace the
-current token with them, if applicable.  If the current tokens is not valid for
-an annotation token, it will remain an identifier or "``::``" token.
-
-.. _Lexer:
-
-The ``Lexer`` class
--------------------
-
-The ``Lexer`` class provides the mechanics of lexing tokens out of a source
-buffer and deciding what they mean.  The ``Lexer`` is complicated by the fact
-that it operates on raw buffers that have not had spelling eliminated (this is
-a necessity to get decent performance), but this is countered with careful
-coding as well as standard performance techniques (for example, the comment
-handling code is vectorized on X86 and PowerPC hosts).
-
-The lexer has a couple of interesting modal features:
-
-* The lexer can operate in "raw" mode.  This mode has several features that
-  make it possible to quickly lex the file (e.g., it stops identifier lookup,
-  doesn't specially handle preprocessor tokens, handles EOF differently, etc).
-  This mode is used for lexing within an "``#if 0``" block, for example.
-* The lexer can capture and return comments as tokens.  This is required to
-  support the ``-C`` preprocessor mode, which passes comments through, and is
-  used by the diagnostic checker to identifier expect-error annotations.
-* The lexer can be in ``ParsingFilename`` mode, which happens when
-  preprocessing after reading a ``#include`` directive.  This mode changes the
-  parsing of "``<``" to return an "angled string" instead of a bunch of tokens
-  for each thing within the filename.
-* When parsing a preprocessor directive (after "``#``") the
-  ``ParsingPreprocessorDirective`` mode is entered.  This changes the parser to
-  return EOD at a newline.
-* The ``Lexer`` uses a ``LangOptions`` object to know whether trigraphs are
-  enabled, whether C++ or ObjC keywords are recognized, etc.
-
-In addition to these modes, the lexer keeps track of a couple of other features
-that are local to a lexed buffer, which change as the buffer is lexed:
-
-* The ``Lexer`` uses ``BufferPtr`` to keep track of the current character being
-  lexed.
-* The ``Lexer`` uses ``IsAtStartOfLine`` to keep track of whether the next
-  lexed token will start with its "start of line" bit set.
-* The ``Lexer`` keeps track of the current "``#if``" directives that are active
-  (which can be nested).
-* The ``Lexer`` keeps track of an :ref:`MultipleIncludeOpt
-  <MultipleIncludeOpt>` object, which is used to detect whether the buffer uses
-  the standard "``#ifndef XX`` / ``#define XX``" idiom to prevent multiple
-  inclusion.  If a buffer does, subsequent includes can be ignored if the
-  "``XX``" macro is defined.
-
-.. _TokenLexer:
-
-The ``TokenLexer`` class
-------------------------
-
-The ``TokenLexer`` class is a token provider that returns tokens from a list of
-tokens that came from somewhere else.  It typically used for two things: 1)
-returning tokens from a macro definition as it is being expanded 2) returning
-tokens from an arbitrary buffer of tokens.  The later use is used by
-``_Pragma`` and will most likely be used to handle unbounded look-ahead for the
-C++ parser.
-
-.. _MultipleIncludeOpt:
-
-The ``MultipleIncludeOpt`` class
---------------------------------
-
-The ``MultipleIncludeOpt`` class implements a really simple little state
-machine that is used to detect the standard "``#ifndef XX`` / ``#define XX``"
-idiom that people typically use to prevent multiple inclusion of headers.  If a
-buffer uses this idiom and is subsequently ``#include``'d, the preprocessor can
-simply check to see whether the guarding condition is defined or not.  If so,
-the preprocessor can completely ignore the include of the header.
-
-The Parser Library
-==================
-
-The AST Library
-===============
-
-.. _Type:
-
-The ``Type`` class and its subclasses
--------------------------------------
-
-The ``Type`` class (and its subclasses) are an important part of the AST.
-Types are accessed through the ``ASTContext`` class, which implicitly creates
-and uniques them as they are needed.  Types have a couple of non-obvious
-features: 1) they do not capture type qualifiers like ``const`` or ``volatile``
-(see :ref:`QualType <QualType>`), and 2) they implicitly capture typedef
-information.  Once created, types are immutable (unlike decls).
-
-Typedefs in C make semantic analysis a bit more complex than it would be without
-them.  The issue is that we want to capture typedef information and represent it
-in the AST perfectly, but the semantics of operations need to "see through"
-typedefs.  For example, consider this code:
-
-.. code-block:: c++
-
-  void func() {
-    typedef int foo;
-    foo X, *Y;
-    typedef foo *bar;
-    bar Z;
-    *X; // error
-    **Y; // error
-    **Z; // error
-  }
-
-The code above is illegal, and thus we expect there to be diagnostics emitted
-on the annotated lines.  In this example, we expect to get:
-
-.. code-block:: c++
-
-  test.c:6:1: error: indirection requires pointer operand ('foo' invalid)
-    *X; // error
-    ^~
-  test.c:7:1: error: indirection requires pointer operand ('foo' invalid)
-    **Y; // error
-    ^~~
-  test.c:8:1: error: indirection requires pointer operand ('foo' invalid)
-    **Z; // error
-    ^~~
-
-While this example is somewhat silly, it illustrates the point: we want to
-retain typedef information where possible, so that we can emit errors about
-"``std::string``" instead of "``std::basic_string<char, std:...``".  Doing this
-requires properly keeping typedef information (for example, the type of ``X``
-is "``foo``", not "``int``"), and requires properly propagating it through the
-various operators (for example, the type of ``*Y`` is "``foo``", not
-"``int``").  In order to retain this information, the type of these expressions
-is an instance of the ``TypedefType`` class, which indicates that the type of
-these expressions is a typedef for "``foo``".
-
-Representing types like this is great for diagnostics, because the
-user-specified type is always immediately available.  There are two problems
-with this: first, various semantic checks need to make judgements about the
-*actual structure* of a type, ignoring typedefs.  Second, we need an efficient
-way to query whether two types are structurally identical to each other,
-ignoring typedefs.  The solution to both of these problems is the idea of
-canonical types.
-
-Canonical Types
-^^^^^^^^^^^^^^^
-
-Every instance of the ``Type`` class contains a canonical type pointer.  For
-simple types with no typedefs involved (e.g., "``int``", "``int*``",
-"``int**``"), the type just points to itself.  For types that have a typedef
-somewhere in their structure (e.g., "``foo``", "``foo*``", "``foo**``",
-"``bar``"), the canonical type pointer points to their structurally equivalent
-type without any typedefs (e.g., "``int``", "``int*``", "``int**``", and
-"``int*``" respectively).
-
-This design provides a constant time operation (dereferencing the canonical type
-pointer) that gives us access to the structure of types.  For example, we can
-trivially tell that "``bar``" and "``foo*``" are the same type by dereferencing
-their canonical type pointers and doing a pointer comparison (they both point
-to the single "``int*``" type).
-
-Canonical types and typedef types bring up some complexities that must be
-carefully managed.  Specifically, the ``isa``/``cast``/``dyn_cast`` operators
-generally shouldn't be used in code that is inspecting the AST.  For example,
-when type checking the indirection operator (unary "``*``" on a pointer), the
-type checker must verify that the operand has a pointer type.  It would not be
-correct to check that with "``isa<PointerType>(SubExpr->getType())``", because
-this predicate would fail if the subexpression had a typedef type.
-
-The solution to this problem are a set of helper methods on ``Type``, used to
-check their properties.  In this case, it would be correct to use
-"``SubExpr->getType()->isPointerType()``" to do the check.  This predicate will
-return true if the *canonical type is a pointer*, which is true any time the
-type is structurally a pointer type.  The only hard part here is remembering
-not to use the ``isa``/``cast``/``dyn_cast`` operations.
-
-The second problem we face is how to get access to the pointer type once we
-know it exists.  To continue the example, the result type of the indirection
-operator is the pointee type of the subexpression.  In order to determine the
-type, we need to get the instance of ``PointerType`` that best captures the
-typedef information in the program.  If the type of the expression is literally
-a ``PointerType``, we can return that, otherwise we have to dig through the
-typedefs to find the pointer type.  For example, if the subexpression had type
-"``foo*``", we could return that type as the result.  If the subexpression had
-type "``bar``", we want to return "``foo*``" (note that we do *not* want
-"``int*``").  In order to provide all of this, ``Type`` has a
-``getAsPointerType()`` method that checks whether the type is structurally a
-``PointerType`` and, if so, returns the best one.  If not, it returns a null
-pointer.
-
-This structure is somewhat mystical, but after meditating on it, it will make
-sense to you :).
-
-.. _QualType:
-
-The ``QualType`` class
-----------------------
-
-The ``QualType`` class is designed as a trivial value class that is small,
-passed by-value and is efficient to query.  The idea of ``QualType`` is that it
-stores the type qualifiers (``const``, ``volatile``, ``restrict``, plus some
-extended qualifiers required by language extensions) separately from the types
-themselves.  ``QualType`` is conceptually a pair of "``Type*``" and the bits
-for these type qualifiers.
-
-By storing the type qualifiers as bits in the conceptual pair, it is extremely
-efficient to get the set of qualifiers on a ``QualType`` (just return the field
-of the pair), add a type qualifier (which is a trivial constant-time operation
-that sets a bit), and remove one or more type qualifiers (just return a
-``QualType`` with the bitfield set to empty).
-
-Further, because the bits are stored outside of the type itself, we do not need
-to create duplicates of types with different sets of qualifiers (i.e. there is
-only a single heap allocated "``int``" type: "``const int``" and "``volatile
-const int``" both point to the same heap allocated "``int``" type).  This
-reduces the heap size used to represent bits and also means we do not have to
-consider qualifiers when uniquing types (:ref:`Type <Type>` does not even
-contain qualifiers).
-
-In practice, the two most common type qualifiers (``const`` and ``restrict``)
-are stored in the low bits of the pointer to the ``Type`` object, together with
-a flag indicating whether extended qualifiers are present (which must be
-heap-allocated).  This means that ``QualType`` is exactly the same size as a
-pointer.
-
-.. _DeclarationName:
-
-Declaration names
------------------
-
-The ``DeclarationName`` class represents the name of a declaration in Clang.
-Declarations in the C family of languages can take several different forms.
-Most declarations are named by simple identifiers, e.g., "``f``" and "``x``" in
-the function declaration ``f(int x)``.  In C++, declaration names can also name
-class constructors ("``Class``" in ``struct Class { Class(); }``), class
-destructors ("``~Class``"), overloaded operator names ("``operator+``"), and
-conversion functions ("``operator void const *``").  In Objective-C,
-declaration names can refer to the names of Objective-C methods, which involve
-the method name and the parameters, collectively called a *selector*, e.g.,
-"``setWidth:height:``".  Since all of these kinds of entities --- variables,
-functions, Objective-C methods, C++ constructors, destructors, and operators
---- are represented as subclasses of Clang's common ``NamedDecl`` class,
-``DeclarationName`` is designed to efficiently represent any kind of name.
-
-Given a ``DeclarationName`` ``N``, ``N.getNameKind()`` will produce a value
-that describes what kind of name ``N`` stores.  There are 8 options (all of the
-names are inside the ``DeclarationName`` class).
-
-``Identifier``
-
-  The name is a simple identifier.  Use ``N.getAsIdentifierInfo()`` to retrieve
-  the corresponding ``IdentifierInfo*`` pointing to the actual identifier.
-  Note that C++ overloaded operators (e.g., "``operator+``") are represented as
-  special kinds of identifiers.  Use ``IdentifierInfo``'s
-  ``getOverloadedOperatorID`` function to determine whether an identifier is an
-  overloaded operator name.
-
-``ObjCZeroArgSelector``, ``ObjCOneArgSelector``, ``ObjCMultiArgSelector``
-
-  The name is an Objective-C selector, which can be retrieved as a ``Selector``
-  instance via ``N.getObjCSelector()``.  The three possible name kinds for
-  Objective-C reflect an optimization within the ``DeclarationName`` class:
-  both zero- and one-argument selectors are stored as a masked
-  ``IdentifierInfo`` pointer, and therefore require very little space, since
-  zero- and one-argument selectors are far more common than multi-argument
-  selectors (which use a different structure).
-
-``CXXConstructorName``
-
-  The name is a C++ constructor name.  Use ``N.getCXXNameType()`` to retrieve
-  the :ref:`type <QualType>` that this constructor is meant to construct.  The
-  type is always the canonical type, since all constructors for a given type
-  have the same name.
-
-``CXXDestructorName``
-
-  The name is a C++ destructor name.  Use ``N.getCXXNameType()`` to retrieve
-  the :ref:`type <QualType>` whose destructor is being named.  This type is
-  always a canonical type.
-
-``CXXConversionFunctionName``
-
-  The name is a C++ conversion function.  Conversion functions are named
-  according to the type they convert to, e.g., "``operator void const *``".
-  Use ``N.getCXXNameType()`` to retrieve the type that this conversion function
-  converts to.  This type is always a canonical type.
-
-``CXXOperatorName``
-
-  The name is a C++ overloaded operator name.  Overloaded operators are named
-  according to their spelling, e.g., "``operator+``" or "``operator new []``".
-  Use ``N.getCXXOverloadedOperator()`` to retrieve the overloaded operator (a
-  value of type ``OverloadedOperatorKind``).
-
-``DeclarationName``\ s are cheap to create, copy, and compare.  They require
-only a single pointer's worth of storage in the common cases (identifiers,
-zero- and one-argument Objective-C selectors) and use dense, uniqued storage
-for the other kinds of names.  Two ``DeclarationName``\ s can be compared for
-equality (``==``, ``!=``) using a simple bitwise comparison, can be ordered
-with ``<``, ``>``, ``<=``, and ``>=`` (which provide a lexicographical ordering
-for normal identifiers but an unspecified ordering for other kinds of names),
-and can be placed into LLVM ``DenseMap``\ s and ``DenseSet``\ s.
-
-``DeclarationName`` instances can be created in different ways depending on
-what kind of name the instance will store.  Normal identifiers
-(``IdentifierInfo`` pointers) and Objective-C selectors (``Selector``) can be
-implicitly converted to ``DeclarationNames``.  Names for C++ constructors,
-destructors, conversion functions, and overloaded operators can be retrieved
-from the ``DeclarationNameTable``, an instance of which is available as
-``ASTContext::DeclarationNames``.  The member functions
-``getCXXConstructorName``, ``getCXXDestructorName``,
-``getCXXConversionFunctionName``, and ``getCXXOperatorName``, respectively,
-return ``DeclarationName`` instances for the four kinds of C++ special function
-names.
-
-.. _DeclContext:
-
-Declaration contexts
---------------------
-
-Every declaration in a program exists within some *declaration context*, such
-as a translation unit, namespace, class, or function.  Declaration contexts in
-Clang are represented by the ``DeclContext`` class, from which the various
-declaration-context AST nodes (``TranslationUnitDecl``, ``NamespaceDecl``,
-``RecordDecl``, ``FunctionDecl``, etc.) will derive.  The ``DeclContext`` class
-provides several facilities common to each declaration context:
-
-Source-centric vs. Semantics-centric View of Declarations
-
-  ``DeclContext`` provides two views of the declarations stored within a
-  declaration context.  The source-centric view accurately represents the
-  program source code as written, including multiple declarations of entities
-  where present (see the section :ref:`Redeclarations and Overloads
-  <Redeclarations>`), while the semantics-centric view represents the program
-  semantics.  The two views are kept synchronized by semantic analysis while
-  the ASTs are being constructed.
-
-Storage of declarations within that context
-
-  Every declaration context can contain some number of declarations.  For
-  example, a C++ class (represented by ``RecordDecl``) contains various member
-  functions, fields, nested types, and so on.  All of these declarations will
-  be stored within the ``DeclContext``, and one can iterate over the
-  declarations via [``DeclContext::decls_begin()``,
-  ``DeclContext::decls_end()``).  This mechanism provides the source-centric
-  view of declarations in the context.
-
-Lookup of declarations within that context
-
-  The ``DeclContext`` structure provides efficient name lookup for names within
-  that declaration context.  For example, if ``N`` is a namespace we can look
-  for the name ``N::f`` using ``DeclContext::lookup``.  The lookup itself is
-  based on a lazily-constructed array (for declaration contexts with a small
-  number of declarations) or hash table (for declaration contexts with more
-  declarations).  The lookup operation provides the semantics-centric view of
-  the declarations in the context.
-
-Ownership of declarations
-
-  The ``DeclContext`` owns all of the declarations that were declared within
-  its declaration context, and is responsible for the management of their
-  memory as well as their (de-)serialization.
-
-All declarations are stored within a declaration context, and one can query
-information about the context in which each declaration lives.  One can
-retrieve the ``DeclContext`` that contains a particular ``Decl`` using
-``Decl::getDeclContext``.  However, see the section
-:ref:`LexicalAndSemanticContexts` for more information about how to interpret
-this context information.
-
-.. _Redeclarations:
-
-Redeclarations and Overloads
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Within a translation unit, it is common for an entity to be declared several
-times.  For example, we might declare a function "``f``" and then later
-re-declare it as part of an inlined definition:
-
-.. code-block:: c++
-
-  void f(int x, int y, int z = 1);
-
-  inline void f(int x, int y, int z) { /* ...  */ }
-
-The representation of "``f``" differs in the source-centric and
-semantics-centric views of a declaration context.  In the source-centric view,
-all redeclarations will be present, in the order they occurred in the source
-code, making this view suitable for clients that wish to see the structure of
-the source code.  In the semantics-centric view, only the most recent "``f``"
-will be found by the lookup, since it effectively replaces the first
-declaration of "``f``".
-
-In the semantics-centric view, overloading of functions is represented
-explicitly.  For example, given two declarations of a function "``g``" that are
-overloaded, e.g.,
-
-.. code-block:: c++
-
-  void g();
-  void g(int);
-
-the ``DeclContext::lookup`` operation will return a
-``DeclContext::lookup_result`` that contains a range of iterators over
-declarations of "``g``".  Clients that perform semantic analysis on a program
-that is not concerned with the actual source code will primarily use this
-semantics-centric view.
-
-.. _LexicalAndSemanticContexts:
-
-Lexical and Semantic Contexts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Each declaration has two potentially different declaration contexts: a
-*lexical* context, which corresponds to the source-centric view of the
-declaration context, and a *semantic* context, which corresponds to the
-semantics-centric view.  The lexical context is accessible via
-``Decl::getLexicalDeclContext`` while the semantic context is accessible via
-``Decl::getDeclContext``, both of which return ``DeclContext`` pointers.  For
-most declarations, the two contexts are identical.  For example:
-
-.. code-block:: c++
-
-  class X {
-  public:
-    void f(int x);
-  };
-
-Here, the semantic and lexical contexts of ``X::f`` are the ``DeclContext``
-associated with the class ``X`` (itself stored as a ``RecordDecl`` AST node).
-However, we can now define ``X::f`` out-of-line:
-
-.. code-block:: c++
-
-  void X::f(int x = 17) { /* ...  */ }
-
-This definition of "``f``" has different lexical and semantic contexts.  The
-lexical context corresponds to the declaration context in which the actual
-declaration occurred in the source code, e.g., the translation unit containing
-``X``.  Thus, this declaration of ``X::f`` can be found by traversing the
-declarations provided by [``decls_begin()``, ``decls_end()``) in the
-translation unit.
-
-The semantic context of ``X::f`` corresponds to the class ``X``, since this
-member function is (semantically) a member of ``X``.  Lookup of the name ``f``
-into the ``DeclContext`` associated with ``X`` will then return the definition
-of ``X::f`` (including information about the default argument).
-
-Transparent Declaration Contexts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In C and C++, there are several contexts in which names that are logically
-declared inside another declaration will actually "leak" out into the enclosing
-scope from the perspective of name lookup.  The most obvious instance of this
-behavior is in enumeration types, e.g.,
-
-.. code-block:: c++
-
-  enum Color {
-    Red,
-    Green,
-    Blue
-  };
-
-Here, ``Color`` is an enumeration, which is a declaration context that contains
-the enumerators ``Red``, ``Green``, and ``Blue``.  Thus, traversing the list of
-declarations contained in the enumeration ``Color`` will yield ``Red``,
-``Green``, and ``Blue``.  However, outside of the scope of ``Color`` one can
-name the enumerator ``Red`` without qualifying the name, e.g.,
-
-.. code-block:: c++
-
-  Color c = Red;
-
-There are other entities in C++ that provide similar behavior.  For example,
-linkage specifications that use curly braces:
-
-.. code-block:: c++
-
-  extern "C" {
-    void f(int);
-    void g(int);
-  }
-  // f and g are visible here
-
-For source-level accuracy, we treat the linkage specification and enumeration
-type as a declaration context in which its enclosed declarations ("``Red``",
-"``Green``", and "``Blue``"; "``f``" and "``g``") are declared.  However, these
-declarations are visible outside of the scope of the declaration context.
-
-These language features (and several others, described below) have roughly the
-same set of requirements: declarations are declared within a particular lexical
-context, but the declarations are also found via name lookup in scopes
-enclosing the declaration itself.  This feature is implemented via
-*transparent* declaration contexts (see
-``DeclContext::isTransparentContext()``), whose declarations are visible in the
-nearest enclosing non-transparent declaration context.  This means that the
-lexical context of the declaration (e.g., an enumerator) will be the
-transparent ``DeclContext`` itself, as will the semantic context, but the
-declaration will be visible in every outer context up to and including the
-first non-transparent declaration context (since transparent declaration
-contexts can be nested).
-
-The transparent ``DeclContext``\ s are:
-
-* Enumerations (but not C++11 "scoped enumerations"):
-
-  .. code-block:: c++
-
-    enum Color {
-      Red,
-      Green,
-      Blue
-    };
-    // Red, Green, and Blue are in scope
-
-* C++ linkage specifications:
-
-  .. code-block:: c++
-
-    extern "C" {
-      void f(int);
-      void g(int);
-    }
-    // f and g are in scope
-
-* Anonymous unions and structs:
-
-  .. code-block:: c++
-
-    struct LookupTable {
-      bool IsVector;
-      union {
-        std::vector<Item> *Vector;
-        std::set<Item> *Set;
-      };
-    };
-
-    LookupTable LT;
-    LT.Vector = 0; // Okay: finds Vector inside the unnamed union
-
-* C++11 inline namespaces:
-
-  .. code-block:: c++
-
-    namespace mylib {
-      inline namespace debug {
-        class X;
-      }
-    }
-    mylib::X *xp; // okay: mylib::X refers to mylib::debug::X
-
-.. _MultiDeclContext:
-
-Multiply-Defined Declaration Contexts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-C++ namespaces have the interesting --- and, so far, unique --- property that
-the namespace can be defined multiple times, and the declarations provided by
-each namespace definition are effectively merged (from the semantic point of
-view).  For example, the following two code snippets are semantically
-indistinguishable:
-
-.. code-block:: c++
-
-  // Snippet #1:
-  namespace N {
-    void f();
-  }
-  namespace N {
-    void f(int);
-  }
-
-  // Snippet #2:
-  namespace N {
-    void f();
-    void f(int);
-  }
-
-In Clang's representation, the source-centric view of declaration contexts will
-actually have two separate ``NamespaceDecl`` nodes in Snippet #1, each of which
-is a declaration context that contains a single declaration of "``f``".
-However, the semantics-centric view provided by name lookup into the namespace
-``N`` for "``f``" will return a ``DeclContext::lookup_result`` that contains a
-range of iterators over declarations of "``f``".
-
-``DeclContext`` manages multiply-defined declaration contexts internally.  The
-function ``DeclContext::getPrimaryContext`` retrieves the "primary" context for
-a given ``DeclContext`` instance, which is the ``DeclContext`` responsible for
-maintaining the lookup table used for the semantics-centric view.  Given the
-primary context, one can follow the chain of ``DeclContext`` nodes that define
-additional declarations via ``DeclContext::getNextContext``.  Note that these
-functions are used internally within the lookup and insertion methods of the
-``DeclContext``, so the vast majority of clients can ignore them.
-
-.. _CFG:
-
-The ``CFG`` class
------------------
-
-The ``CFG`` class is designed to represent a source-level control-flow graph
-for a single statement (``Stmt*``).  Typically instances of ``CFG`` are
-constructed for function bodies (usually an instance of ``CompoundStmt``), but
-can also be instantiated to represent the control-flow of any class that
-subclasses ``Stmt``, which includes simple expressions.  Control-flow graphs
-are especially useful for performing `flow- or path-sensitive
-<http://en.wikipedia.org/wiki/Data_flow_analysis#Sensitivities>`_ program
-analyses on a given function.
-
-Basic Blocks
-^^^^^^^^^^^^
-
-Concretely, an instance of ``CFG`` is a collection of basic blocks.  Each basic
-block is an instance of ``CFGBlock``, which simply contains an ordered sequence
-of ``Stmt*`` (each referring to statements in the AST).  The ordering of
-statements within a block indicates unconditional flow of control from one
-statement to the next.  :ref:`Conditional control-flow
-<ConditionalControlFlow>` is represented using edges between basic blocks.  The
-statements within a given ``CFGBlock`` can be traversed using the
-``CFGBlock::*iterator`` interface.
-
-A ``CFG`` object owns the instances of ``CFGBlock`` within the control-flow
-graph it represents.  Each ``CFGBlock`` within a CFG is also uniquely numbered
-(accessible via ``CFGBlock::getBlockID()``).  Currently the number is based on
-the ordering the blocks were created, but no assumptions should be made on how
-``CFGBlocks`` are numbered other than their numbers are unique and that they
-are numbered from 0..N-1 (where N is the number of basic blocks in the CFG).
-
-Entry and Exit Blocks
-^^^^^^^^^^^^^^^^^^^^^
-
-Each instance of ``CFG`` contains two special blocks: an *entry* block
-(accessible via ``CFG::getEntry()``), which has no incoming edges, and an
-*exit* block (accessible via ``CFG::getExit()``), which has no outgoing edges.
-Neither block contains any statements, and they serve the role of providing a
-clear entrance and exit for a body of code such as a function body.  The
-presence of these empty blocks greatly simplifies the implementation of many
-analyses built on top of CFGs.
-
-.. _ConditionalControlFlow:
-
-Conditional Control-Flow
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Conditional control-flow (such as those induced by if-statements and loops) is
-represented as edges between ``CFGBlocks``.  Because different C language
-constructs can induce control-flow, each ``CFGBlock`` also records an extra
-``Stmt*`` that represents the *terminator* of the block.  A terminator is
-simply the statement that caused the control-flow, and is used to identify the
-nature of the conditional control-flow between blocks.  For example, in the
-case of an if-statement, the terminator refers to the ``IfStmt`` object in the
-AST that represented the given branch.
-
-To illustrate, consider the following code example:
-
-.. code-block:: c++
-
-  int foo(int x) {
-    x = x + 1;
-    if (x > 2)
-      x++;
-    else {
-      x += 2;
-      x *= 2;
-    }
-
-    return x;
-  }
-
-After invoking the parser+semantic analyzer on this code fragment, the AST of
-the body of ``foo`` is referenced by a single ``Stmt*``.  We can then construct
-an instance of ``CFG`` representing the control-flow graph of this function
-body by single call to a static class method:
-
-.. code-block:: c++
-
-  Stmt *FooBody = ...
-  CFG *FooCFG = CFG::buildCFG(FooBody);
-
-It is the responsibility of the caller of ``CFG::buildCFG`` to ``delete`` the
-returned ``CFG*`` when the CFG is no longer needed.
-
-Along with providing an interface to iterate over its ``CFGBlocks``, the
-``CFG`` class also provides methods that are useful for debugging and
-visualizing CFGs.  For example, the method ``CFG::dump()`` dumps a
-pretty-printed version of the CFG to standard error.  This is especially useful
-when one is using a debugger such as gdb.  For example, here is the output of
-``FooCFG->dump()``:
-
-.. code-block:: c++
-
- [ B5 (ENTRY) ]
-    Predecessors (0):
-    Successors (1): B4
-
- [ B4 ]
-    1: x = x + 1
-    2: (x > 2)
-    T: if [B4.2]
-    Predecessors (1): B5
-    Successors (2): B3 B2
-
- [ B3 ]
-    1: x++
-    Predecessors (1): B4
-    Successors (1): B1
-
- [ B2 ]
-    1: x += 2
-    2: x *= 2
-    Predecessors (1): B4
-    Successors (1): B1
-
- [ B1 ]
-    1: return x;
-    Predecessors (2): B2 B3
-    Successors (1): B0
-
- [ B0 (EXIT) ]
-    Predecessors (1): B1
-    Successors (0):
-
-For each block, the pretty-printed output displays for each block the number of
-*predecessor* blocks (blocks that have outgoing control-flow to the given
-block) and *successor* blocks (blocks that have control-flow that have incoming
-control-flow from the given block).  We can also clearly see the special entry
-and exit blocks at the beginning and end of the pretty-printed output.  For the
-entry block (block B5), the number of predecessor blocks is 0, while for the
-exit block (block B0) the number of successor blocks is 0.
-
-The most interesting block here is B4, whose outgoing control-flow represents
-the branching caused by the sole if-statement in ``foo``.  Of particular
-interest is the second statement in the block, ``(x > 2)``, and the terminator,
-printed as ``if [B4.2]``.  The second statement represents the evaluation of
-the condition of the if-statement, which occurs before the actual branching of
-control-flow.  Within the ``CFGBlock`` for B4, the ``Stmt*`` for the second
-statement refers to the actual expression in the AST for ``(x > 2)``.  Thus
-pointers to subclasses of ``Expr`` can appear in the list of statements in a
-block, and not just subclasses of ``Stmt`` that refer to proper C statements.
-
-The terminator of block B4 is a pointer to the ``IfStmt`` object in the AST.
-The pretty-printer outputs ``if [B4.2]`` because the condition expression of
-the if-statement has an actual place in the basic block, and thus the
-terminator is essentially *referring* to the expression that is the second
-statement of block B4 (i.e., B4.2).  In this manner, conditions for
-control-flow (which also includes conditions for loops and switch statements)
-are hoisted into the actual basic block.
-
-.. Implicit Control-Flow
-.. ^^^^^^^^^^^^^^^^^^^^^
-
-.. A key design principle of the ``CFG`` class was to not require any
-.. transformations to the AST in order to represent control-flow.  Thus the
-.. ``CFG`` does not perform any "lowering" of the statements in an AST: loops
-.. are not transformed into guarded gotos, short-circuit operations are not
-.. converted to a set of if-statements, and so on.
-
-Constant Folding in the Clang AST
----------------------------------
-
-There are several places where constants and constant folding matter a lot to
-the Clang front-end.  First, in general, we prefer the AST to retain the source
-code as close to how the user wrote it as possible.  This means that if they
-wrote "``5+4``", we want to keep the addition and two constants in the AST, we
-don't want to fold to "``9``".  This means that constant folding in various
-ways turns into a tree walk that needs to handle the various cases.
-
-However, there are places in both C and C++ that require constants to be
-folded.  For example, the C standard defines what an "integer constant
-expression" (i-c-e) is with very precise and specific requirements.  The
-language then requires i-c-e's in a lot of places (for example, the size of a
-bitfield, the value for a case statement, etc).  For these, we have to be able
-to constant fold the constants, to do semantic checks (e.g., verify bitfield
-size is non-negative and that case statements aren't duplicated).  We aim for
-Clang to be very pedantic about this, diagnosing cases when the code does not
-use an i-c-e where one is required, but accepting the code unless running with
-``-pedantic-errors``.
-
-Things get a little bit more tricky when it comes to compatibility with
-real-world source code.  Specifically, GCC has historically accepted a huge
-superset of expressions as i-c-e's, and a lot of real world code depends on
-this unfortuate accident of history (including, e.g., the glibc system
-headers).  GCC accepts anything its "fold" optimizer is capable of reducing to
-an integer constant, which means that the definition of what it accepts changes
-as its optimizer does.  One example is that GCC accepts things like "``case
-X-X:``" even when ``X`` is a variable, because it can fold this to 0.
-
-Another issue are how constants interact with the extensions we support, such
-as ``__builtin_constant_p``, ``__builtin_inf``, ``__extension__`` and many
-others.  C99 obviously does not specify the semantics of any of these
-extensions, and the definition of i-c-e does not include them.  However, these
-extensions are often used in real code, and we have to have a way to reason
-about them.
-
-Finally, this is not just a problem for semantic analysis.  The code generator
-and other clients have to be able to fold constants (e.g., to initialize global
-variables) and has to handle a superset of what C99 allows.  Further, these
-clients can benefit from extended information.  For example, we know that
-"``foo() || 1``" always evaluates to ``true``, but we can't replace the
-expression with ``true`` because it has side effects.
-
-Implementation Approach
-^^^^^^^^^^^^^^^^^^^^^^^
-
-After trying several different approaches, we've finally converged on a design
-(Note, at the time of this writing, not all of this has been implemented,
-consider this a design goal!).  Our basic approach is to define a single
-recursive method evaluation method (``Expr::Evaluate``), which is implemented
-in ``AST/ExprConstant.cpp``.  Given an expression with "scalar" type (integer,
-fp, complex, or pointer) this method returns the following information:
-
-* Whether the expression is an integer constant expression, a general constant
-  that was folded but has no side effects, a general constant that was folded
-  but that does have side effects, or an uncomputable/unfoldable value.
-* If the expression was computable in any way, this method returns the
-  ``APValue`` for the result of the expression.
-* If the expression is not evaluatable at all, this method returns information
-  on one of the problems with the expression.  This includes a
-  ``SourceLocation`` for where the problem is, and a diagnostic ID that explains
-  the problem.  The diagnostic should have ``ERROR`` type.
-* If the expression is not an integer constant expression, this method returns
-  information on one of the problems with the expression.  This includes a
-  ``SourceLocation`` for where the problem is, and a diagnostic ID that
-  explains the problem.  The diagnostic should have ``EXTENSION`` type.
-
-This information gives various clients the flexibility that they want, and we
-will eventually have some helper methods for various extensions.  For example,
-``Sema`` should have a ``Sema::VerifyIntegerConstantExpression`` method, which
-calls ``Evaluate`` on the expression.  If the expression is not foldable, the
-error is emitted, and it would return ``true``.  If the expression is not an
-i-c-e, the ``EXTENSION`` diagnostic is emitted.  Finally it would return
-``false`` to indicate that the AST is OK.
-
-Other clients can use the information in other ways, for example, codegen can
-just use expressions that are foldable in any way.
-
-Extensions
-^^^^^^^^^^
-
-This section describes how some of the various extensions Clang supports
-interacts with constant evaluation:
-
-* ``__extension__``: The expression form of this extension causes any
-  evaluatable subexpression to be accepted as an integer constant expression.
-* ``__builtin_constant_p``: This returns true (as an integer constant
-  expression) if the operand evaluates to either a numeric value (that is, not
-  a pointer cast to integral type) of integral, enumeration, floating or
-  complex type, or if it evaluates to the address of the first character of a
-  string literal (possibly cast to some other type).  As a special case, if
-  ``__builtin_constant_p`` is the (potentially parenthesized) condition of a
-  conditional operator expression ("``?:``"), only the true side of the
-  conditional operator is considered, and it is evaluated with full constant
-  folding.
-* ``__builtin_choose_expr``: The condition is required to be an integer
-  constant expression, but we accept any constant as an "extension of an
-  extension".  This only evaluates one operand depending on which way the
-  condition evaluates.
-* ``__builtin_classify_type``: This always returns an integer constant
-  expression.
-* ``__builtin_inf, nan, ...``: These are treated just like a floating-point
-  literal.
-* ``__builtin_abs, copysign, ...``: These are constant folded as general
-  constant expressions.
-* ``__builtin_strlen`` and ``strlen``: These are constant folded as integer
-  constant expressions if the argument is a string literal.
-
-How to change Clang
-===================
-
-How to add an attribute
------------------------
-
-To add an attribute, you'll have to add it to the list of attributes, add it to
-the parsing phase, and look for it in the AST scan.
-`r124217 <http://llvm.org/viewvc/llvm-project?view=rev&revision=124217>`_
-has a good example of adding a warning attribute.
-
-(Beware that this hasn't been reviewed/fixed by the people who designed the
-attributes system yet.)
-
-
-``include/clang/Basic/Attr.td``
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-First, add your attribute to the `include/clang/Basic/Attr.td file
-<http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?view=markup>`_.
-
-Each attribute gets a ``def`` inheriting from ``Attr`` or one of its
-subclasses.  ``InheritableAttr`` means that the attribute also applies to
-subsequent declarations of the same name.
-
-``Spellings`` lists the strings that can appear in ``__attribute__((here))`` or
-``[[here]]``.  All such strings will be synonymous.  If you want to allow the
-``[[]]`` C++11 syntax, you have to define a list of ``Namespaces``, which will
-let users write ``[[namespace::spelling]]``.  Using the empty string for a
-namespace will allow users to write just the spelling with no "``::``".
-Attributes which g++-4.8 accepts should also have a
-``CXX11<"gnu", "spelling">`` spelling.
-
-``Subjects`` restricts what kinds of AST node to which this attribute can
-appertain (roughly, attach).
-
-``Args`` names the arguments the attribute takes, in order.  If ``Args`` is
-``[StringArgument<"Arg1">, IntArgument<"Arg2">]`` then
-``__attribute__((myattribute("Hello", 3)))`` will be a valid use.
-
-Boilerplate
-^^^^^^^^^^^
-
-Write a new ``HandleYourAttr()`` function in `lib/Sema/SemaDeclAttr.cpp
-<http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?view=markup>`_,
-and add a case to the switch in ``ProcessNonInheritableDeclAttr()`` or
-``ProcessInheritableDeclAttr()`` forwarding to it.
-
-If your attribute causes extra warnings to fire, define a ``DiagGroup`` in
-`include/clang/Basic/DiagnosticGroups.td
-<http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?view=markup>`_
-named after the attribute's ``Spelling`` with "_"s replaced by "-"s.  If you're
-only defining one diagnostic, you can skip ``DiagnosticGroups.td`` and use
-``InGroup<DiagGroup<"your-attribute">>`` directly in `DiagnosticSemaKinds.td
-<http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?view=markup>`_
-
-The meat of your attribute
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Find an appropriate place in Clang to do whatever your attribute needs to do.
-Check for the attribute's presence using ``Decl::getAttr<YourAttr>()``.
-
-Update the :doc:`LanguageExtensions` document to describe your new attribute.
-
-How to add an expression or statement
--------------------------------------
-
-Expressions and statements are one of the most fundamental constructs within a
-compiler, because they interact with many different parts of the AST, semantic
-analysis, and IR generation.  Therefore, adding a new expression or statement
-kind into Clang requires some care.  The following list details the various
-places in Clang where an expression or statement needs to be introduced, along
-with patterns to follow to ensure that the new expression or statement works
-well across all of the C languages.  We focus on expressions, but statements
-are similar.
-
-#. Introduce parsing actions into the parser.  Recursive-descent parsing is
-   mostly self-explanatory, but there are a few things that are worth keeping
-   in mind:
-
-   * Keep as much source location information as possible! You'll want it later
-     to produce great diagnostics and support Clang's various features that map
-     between source code and the AST.
-   * Write tests for all of the "bad" parsing cases, to make sure your recovery
-     is good.  If you have matched delimiters (e.g., parentheses, square
-     brackets, etc.), use ``Parser::BalancedDelimiterTracker`` to give nice
-     diagnostics when things go wrong.
-
-#. Introduce semantic analysis actions into ``Sema``.  Semantic analysis should
-   always involve two functions: an ``ActOnXXX`` function that will be called
-   directly from the parser, and a ``BuildXXX`` function that performs the
-   actual semantic analysis and will (eventually!) build the AST node.  It's
-   fairly common for the ``ActOnCXX`` function to do very little (often just
-   some minor translation from the parser's representation to ``Sema``'s
-   representation of the same thing), but the separation is still important:
-   C++ template instantiation, for example, should always call the ``BuildXXX``
-   variant.  Several notes on semantic analysis before we get into construction
-   of the AST:
-
-   * Your expression probably involves some types and some subexpressions.
-     Make sure to fully check that those types, and the types of those
-     subexpressions, meet your expectations.  Add implicit conversions where
-     necessary to make sure that all of the types line up exactly the way you
-     want them.  Write extensive tests to check that you're getting good
-     diagnostics for mistakes and that you can use various forms of
-     subexpressions with your expression.
-   * When type-checking a type or subexpression, make sure to first check
-     whether the type is "dependent" (``Type::isDependentType()``) or whether a
-     subexpression is type-dependent (``Expr::isTypeDependent()``).  If any of
-     these return ``true``, then you're inside a template and you can't do much
-     type-checking now.  That's normal, and your AST node (when you get there)
-     will have to deal with this case.  At this point, you can write tests that
-     use your expression within templates, but don't try to instantiate the
-     templates.
-   * For each subexpression, be sure to call ``Sema::CheckPlaceholderExpr()``
-     to deal with "weird" expressions that don't behave well as subexpressions.
-     Then, determine whether you need to perform lvalue-to-rvalue conversions
-     (``Sema::DefaultLvalueConversions``) or the usual unary conversions
-     (``Sema::UsualUnaryConversions``), for places where the subexpression is
-     producing a value you intend to use.
-   * Your ``BuildXXX`` function will probably just return ``ExprError()`` at
-     this point, since you don't have an AST.  That's perfectly fine, and
-     shouldn't impact your testing.
-
-#. Introduce an AST node for your new expression.  This starts with declaring
-   the node in ``include/Basic/StmtNodes.td`` and creating a new class for your
-   expression in the appropriate ``include/AST/Expr*.h`` header.  It's best to
-   look at the class for a similar expression to get ideas, and there are some
-   specific things to watch for:
-
-   * If you need to allocate memory, use the ``ASTContext`` allocator to
-     allocate memory.  Never use raw ``malloc`` or ``new``, and never hold any
-     resources in an AST node, because the destructor of an AST node is never
-     called.
-   * Make sure that ``getSourceRange()`` covers the exact source range of your
-     expression.  This is needed for diagnostics and for IDE support.
-   * Make sure that ``children()`` visits all of the subexpressions.  This is
-     important for a number of features (e.g., IDE support, C++ variadic
-     templates).  If you have sub-types, you'll also need to visit those
-     sub-types in the ``RecursiveASTVisitor``.
-   * Add printing support (``StmtPrinter.cpp``) and dumping support
-     (``StmtDumper.cpp``) for your expression.
-   * Add profiling support (``StmtProfile.cpp``) for your AST node, noting the
-     distinguishing (non-source location) characteristics of an instance of
-     your expression.  Omitting this step will lead to hard-to-diagnose
-     failures regarding matching of template declarations.
-
-#. Teach semantic analysis to build your AST node.  At this point, you can wire
-   up your ``Sema::BuildXXX`` function to actually create your AST.  A few
-   things to check at this point:
-
-   * If your expression can construct a new C++ class or return a new
-     Objective-C object, be sure to update and then call
-     ``Sema::MaybeBindToTemporary`` for your just-created AST node to be sure
-     that the object gets properly destructed.  An easy way to test this is to
-     return a C++ class with a private destructor: semantic analysis should
-     flag an error here with the attempt to call the destructor.
-   * Inspect the generated AST by printing it using ``clang -cc1 -ast-print``,
-     to make sure you're capturing all of the important information about how
-     the AST was written.
-   * Inspect the generated AST under ``clang -cc1 -ast-dump`` to verify that
-     all of the types in the generated AST line up the way you want them.
-     Remember that clients of the AST should never have to "think" to
-     understand what's going on.  For example, all implicit conversions should
-     show up explicitly in the AST.
-   * Write tests that use your expression as a subexpression of other,
-     well-known expressions.  Can you call a function using your expression as
-     an argument?  Can you use the ternary operator?
-
-#. Teach code generation to create IR to your AST node.  This step is the first
-   (and only) that requires knowledge of LLVM IR.  There are several things to
-   keep in mind:
-
-   * Code generation is separated into scalar/aggregate/complex and
-     lvalue/rvalue paths, depending on what kind of result your expression
-     produces.  On occasion, this requires some careful factoring of code to
-     avoid duplication.
-   * ``CodeGenFunction`` contains functions ``ConvertType`` and
-     ``ConvertTypeForMem`` that convert Clang's types (``clang::Type*`` or
-     ``clang::QualType``) to LLVM types.  Use the former for values, and the
-     later for memory locations: test with the C++ "``bool``" type to check
-     this.  If you find that you are having to use LLVM bitcasts to make the
-     subexpressions of your expression have the type that your expression
-     expects, STOP!  Go fix semantic analysis and the AST so that you don't
-     need these bitcasts.
-   * The ``CodeGenFunction`` class has a number of helper functions to make
-     certain operations easy, such as generating code to produce an lvalue or
-     an rvalue, or to initialize a memory location with a given value.  Prefer
-     to use these functions rather than directly writing loads and stores,
-     because these functions take care of some of the tricky details for you
-     (e.g., for exceptions).
-   * If your expression requires some special behavior in the event of an
-     exception, look at the ``push*Cleanup`` functions in ``CodeGenFunction``
-     to introduce a cleanup.  You shouldn't have to deal with
-     exception-handling directly.
-   * Testing is extremely important in IR generation.  Use ``clang -cc1
-     -emit-llvm`` and `FileCheck
-     <http://llvm.org/docs/CommandGuide/FileCheck.html>`_ to verify that you're
-     generating the right IR.
-
-#. Teach template instantiation how to cope with your AST node, which requires
-   some fairly simple code:
-
-   * Make sure that your expression's constructor properly computes the flags
-     for type dependence (i.e., the type your expression produces can change
-     from one instantiation to the next), value dependence (i.e., the constant
-     value your expression produces can change from one instantiation to the
-     next), instantiation dependence (i.e., a template parameter occurs
-     anywhere in your expression), and whether your expression contains a
-     parameter pack (for variadic templates).  Often, computing these flags
-     just means combining the results from the various types and
-     subexpressions.
-   * Add ``TransformXXX`` and ``RebuildXXX`` functions to the ``TreeTransform``
-     class template in ``Sema``.  ``TransformXXX`` should (recursively)
-     transform all of the subexpressions and types within your expression,
-     using ``getDerived().TransformYYY``.  If all of the subexpressions and
-     types transform without error, it will then call the ``RebuildXXX``
-     function, which will in turn call ``getSema().BuildXXX`` to perform
-     semantic analysis and build your expression.
-   * To test template instantiation, take those tests you wrote to make sure
-     that you were type checking with type-dependent expressions and dependent
-     types (from step #2) and instantiate those templates with various types,
-     some of which type-check and some that don't, and test the error messages
-     in each case.
-
-#. There are some "extras" that make other features work better.  It's worth
-   handling these extras to give your expression complete integration into
-   Clang:
-
-   * Add code completion support for your expression in
-     ``SemaCodeComplete.cpp``.
-   * If your expression has types in it, or has any "interesting" features
-     other than subexpressions, extend libclang's ``CursorVisitor`` to provide
-     proper visitation for your expression, enabling various IDE features such
-     as syntax highlighting, cross-referencing, and so on.  The
-     ``c-index-test`` helper program can be used to test these features.
-

Modified: trunk/contrib/llvm/tools/clang/docs/IntroductionToTheClangAST.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/IntroductionToTheClangAST.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/IntroductionToTheClangAST.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-=============================
-Introduction to the Clang AST
-=============================
-
-This document gives a gentle introduction to the mysteries of the Clang
-AST. It is targeted at developers who either want to contribute to
-Clang, or use tools that work based on Clang's AST, like the AST
-matchers.
-
-Introduction
-============
-
-Clang's AST is different from ASTs produced by some other compilers in
-that it closely resembles both the written C++ code and the C++
-standard. For example, parenthesis expressions and compile time
-constants are available in an unreduced form in the AST. This makes
-Clang's AST a good fit for refactoring tools.
-
-Documentation for all Clang AST nodes is available via the generated
-`Doxygen <http://clang.llvm.org/doxygen>`_. The doxygen online
-documentation is also indexed by your favorite search engine, which will
-make a search for clang and the AST node's class name usually turn up
-the doxygen of the class you're looking for (for example, search for:
-clang ParenExpr).
-
-Examining the AST
-=================
-
-A good way to familarize yourself with the Clang AST is to actually look
-at it on some simple example code. Clang has a builtin AST-dump modes,
-which can be enabled with the flags ``-ast-dump`` and ``-ast-dump-xml``. Note
-that ``-ast-dump-xml`` currently only works with debug builds of clang.
-
-Let's look at a simple example AST:
-
-::
-
-    $ cat test.cc
-    int f(int x) {
-      int result = (x / 42);
-      return result;
-    }
-
-    # Clang by default is a frontend for many tools; -cc1 tells it to directly
-    # use the C++ compiler mode. -undef leaves out some internal declarations.
-    $ clang -cc1 -undef -ast-dump-xml test.cc
-    ... cutting out internal declarations of clang ...
-    <TranslationUnit ptr="0x4871160">
-     <Function ptr="0x48a5800" name="f" prototype="true">
-      <FunctionProtoType ptr="0x4871de0" canonical="0x4871de0">
-       <BuiltinType ptr="0x4871250" canonical="0x4871250"/>
-       <parameters>
-        <BuiltinType ptr="0x4871250" canonical="0x4871250"/>
-       </parameters>
-      </FunctionProtoType>
-      <ParmVar ptr="0x4871d80" name="x" initstyle="c">
-       <BuiltinType ptr="0x4871250" canonical="0x4871250"/>
-      </ParmVar>
-      <Stmt>
-    (CompoundStmt 0x48a5a38 <t2.cc:1:14, line:4:1>
-      (DeclStmt 0x48a59c0 <line:2:3, col:24>
-        0x48a58c0 "int result =
-          (ParenExpr 0x48a59a0 <col:16, col:23> 'int'
-            (BinaryOperator 0x48a5978 <col:17, col:21> 'int' '/'
-              (ImplicitCastExpr 0x48a5960 <col:17> 'int' <LValueToRValue>
-                (DeclRefExpr 0x48a5918 <col:17> 'int' lvalue ParmVar 0x4871d80 'x' 'int'))
-              (IntegerLiteral 0x48a5940 <col:21> 'int' 42)))")
-      (ReturnStmt 0x48a5a18 <line:3:3, col:10>
-        (ImplicitCastExpr 0x48a5a00 <col:10> 'int' <LValueToRValue>
-          (DeclRefExpr 0x48a59d8 <col:10> 'int' lvalue Var 0x48a58c0 'result' 'int'))))
-
-      </Stmt>
-     </Function>
-    </TranslationUnit>
-
-In general, ``-ast-dump-xml`` dumps declarations in an XML-style format and
-statements in an S-expression-style format. The toplevel declaration in
-a translation unit is always the `translation unit
-declaration <http://clang.llvm.org/doxygen/classclang_1_1TranslationUnitDecl.html>`_.
-In this example, our first user written declaration is the `function
-declaration <http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html>`_
-of "``f``". The body of "``f``" is a `compound
-statement <http://clang.llvm.org/doxygen/classclang_1_1CompoundStmt.html>`_,
-whose child nodes are a `declaration
-statement <http://clang.llvm.org/doxygen/classclang_1_1DeclStmt.html>`_
-that declares our result variable, and the `return
-statement <http://clang.llvm.org/doxygen/classclang_1_1ReturnStmt.html>`_.
-
-AST Context
-===========
-
-All information about the AST for a translation unit is bundled up in
-the class
-`ASTContext <http://clang.llvm.org/doxygen/classclang_1_1ASTContext.html>`_.
-It allows traversal of the whole translation unit starting from
-`getTranslationUnitDecl <http://clang.llvm.org/doxygen/classclang_1_1ASTContext.html#abd909fb01ef10cfd0244832a67b1dd64>`_,
-or to access Clang's `table of
-identifiers <http://clang.llvm.org/doxygen/classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4>`_
-for the parsed translation unit.
-
-AST Nodes
-=========
-
-Clang's AST nodes are modeled on a class hierarchy that does not have a
-common ancestor. Instead, there are multiple larger hierarchies for
-basic node types like
-`Decl <http://clang.llvm.org/doxygen/classclang_1_1Decl.html>`_ and
-`Stmt <http://clang.llvm.org/doxygen/classclang_1_1Stmt.html>`_. Many
-important AST nodes derive from
-`Type <http://clang.llvm.org/doxygen/classclang_1_1Type.html>`_,
-`Decl <http://clang.llvm.org/doxygen/classclang_1_1Decl.html>`_,
-`DeclContext <http://clang.llvm.org/doxygen/classclang_1_1DeclContext.html>`_
-or `Stmt <http://clang.llvm.org/doxygen/classclang_1_1Stmt.html>`_, with
-some classes deriving from both Decl and DeclContext.
-
-There are also a multitude of nodes in the AST that are not part of a
-larger hierarchy, and are only reachable from specific other nodes, like
-`CXXBaseSpecifier <http://clang.llvm.org/doxygen/classclang_1_1CXXBaseSpecifier.html>`_.
-
-Thus, to traverse the full AST, one starts from the
-`TranslationUnitDecl <http://clang.llvm.org/doxygen/classclang_1_1TranslationUnitDecl.html>`_
-and then recursively traverses everything that can be reached from that
-node - this information has to be encoded for each specific node type.
-This algorithm is encoded in the
-`RecursiveASTVisitor <http://clang.llvm.org/doxygen/classclang_1_1RecursiveASTVisitor.html>`_.
-See the `RecursiveASTVisitor
-tutorial <http://clang.llvm.org/docs/RAVFrontendAction.html>`_.
-
-The two most basic nodes in the Clang AST are statements
-(`Stmt <http://clang.llvm.org/doxygen/classclang_1_1Stmt.html>`_) and
-declarations
-(`Decl <http://clang.llvm.org/doxygen/classclang_1_1Decl.html>`_). Note
-that expressions
-(`Expr <http://clang.llvm.org/doxygen/classclang_1_1Expr.html>`_) are
-also statements in Clang's AST.

Modified: trunk/contrib/llvm/tools/clang/docs/JSONCompilationDatabase.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/JSONCompilationDatabase.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/JSONCompilationDatabase.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-==============================================
-JSON Compilation Database Format Specification
-==============================================
-
-This document describes a format for specifying how to replay single
-compilations independently of the build system.
-
-Background
-==========
-
-Tools based on the C++ Abstract Syntax Tree need full information how to
-parse a translation unit. Usually this information is implicitly
-available in the build system, but running tools as part of the build
-system is not necessarily the best solution:
-
--  Build systems are inherently change driven, so running multiple tools
-   over the same code base without changing the code does not fit into
-   the architecture of many build systems.
--  Figuring out whether things have changed is often an IO bound
-   process; this makes it hard to build low latency end user tools based
-   on the build system.
--  Build systems are inherently sequential in the build graph, for
-   example due to generated source code. While tools that run
-   independently of the build still need the generated source code to
-   exist, running tools multiple times over unchanging source does not
-   require serialization of the runs according to the build dependency
-   graph.
-
-Supported Systems
-=================
-
-Currently `CMake <http://cmake.org>`_ (since 2.8.5) supports generation
-of compilation databases for Unix Makefile builds (Ninja builds in the
-works) with the option ``CMAKE_EXPORT_COMPILE_COMMANDS``.
-
-For projects on Linux, there is an alternative to intercept compiler
-calls with a tool called `Bear <https://github.com/rizsotto/Bear>`_.
-
-Clang's tooling interface supports reading compilation databases; see
-the :doc:`LibTooling documentation <LibTooling>`. libclang and its
-python bindings also support this (since clang 3.2); see
-`CXCompilationDatabase.h </doxygen/group__COMPILATIONDB.html>`_.
-
-Format
-======
-
-A compilation database is a JSON file, which consist of an array of
-"command objects", where each command object specifies one way a
-translation unit is compiled in the project.
-
-Each command object contains the translation unit's main file, the
-working directory of the compile run and the actual compile command.
-
-Example:
-
-::
-
-    [
-      { "directory": "/home/user/llvm/build",
-        "command": "/usr/bin/clang++ -Irelative -DSOMEDEF=\"With spaces, quotes and \\-es.\" -c -o file.o file.cc",
-        "file": "file.cc" },
-      ...
-    ]
-
-The contracts for each field in the command object are:
-
--  **directory:** The working directory of the compilation. All paths
-   specified in the **command** or **file** fields must be either
-   absolute or relative to this directory.
--  **file:** The main translation unit source processed by this
-   compilation step. This is used by tools as the key into the
-   compilation database. There can be multiple command objects for the
-   same file, for example if the same source file is compiled with
-   different configurations.
--  **command:** The compile command executed. After JSON unescaping,
-   this must be a valid command to rerun the exact compilation step for
-   the translation unit in the environment the build system uses.
-   Parameters use shell quoting and shell escaping of quotes, with '``"``'
-   and '``\``' being the only special characters. Shell expansion is not
-   supported.
-
-Build System Integration
-========================
-
-The convention is to name the file compile\_commands.json and put it at
-the top of the build directory. Clang tools are pointed to the top of
-the build directory to detect the file and use the compilation database
-to parse C++ code in the source tree.

Modified: trunk/contrib/llvm/tools/clang/docs/LanguageExtensions.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/LanguageExtensions.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/LanguageExtensions.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2103 +0,0 @@
-=========================
-Clang Language Extensions
-=========================
-
-.. contents::
-   :local:
-   :depth: 1
-
-.. toctree::
-   :hidden:
-
-   ObjectiveCLiterals
-   BlockLanguageSpec
-   Block-ABI-Apple
-   AutomaticReferenceCounting   
-
-Introduction
-============
-
-This document describes the language extensions provided by Clang.  In addition
-to the language extensions listed here, Clang aims to support a broad range of
-GCC extensions.  Please see the `GCC manual
-<http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html>`_ for more information on
-these extensions.
-
-.. _langext-feature_check:
-
-Feature Checking Macros
-=======================
-
-Language extensions can be very useful, but only if you know you can depend on
-them.  In order to allow fine-grain features checks, we support three builtin
-function-like macros.  This allows you to directly test for a feature in your
-code without having to resort to something like autoconf or fragile "compiler
-version checks".
-
-``__has_builtin``
------------------
-
-This function-like macro takes a single identifier argument that is the name of
-a builtin function.  It evaluates to 1 if the builtin is supported or 0 if not.
-It can be used like this:
-
-.. code-block:: c++
-
-  #ifndef __has_builtin         // Optional of course.
-    #define __has_builtin(x) 0  // Compatibility with non-clang compilers.
-  #endif
-
-  ...
-  #if __has_builtin(__builtin_trap)
-    __builtin_trap();
-  #else
-    abort();
-  #endif
-  ...
-
-.. _langext-__has_feature-__has_extension:
-
-``__has_feature`` and ``__has_extension``
------------------------------------------
-
-These function-like macros take a single identifier argument that is the name
-of a feature.  ``__has_feature`` evaluates to 1 if the feature is both
-supported by Clang and standardized in the current language standard or 0 if
-not (but see :ref:`below <langext-has-feature-back-compat>`), while
-``__has_extension`` evaluates to 1 if the feature is supported by Clang in the
-current language (either as a language extension or a standard language
-feature) or 0 if not.  They can be used like this:
-
-.. code-block:: c++
-
-  #ifndef __has_feature         // Optional of course.
-    #define __has_feature(x) 0  // Compatibility with non-clang compilers.
-  #endif
-  #ifndef __has_extension
-    #define __has_extension __has_feature // Compatibility with pre-3.0 compilers.
-  #endif
-
-  ...
-  #if __has_feature(cxx_rvalue_references)
-  // This code will only be compiled with the -std=c++11 and -std=gnu++11
-  // options, because rvalue references are only standardized in C++11.
-  #endif
-
-  #if __has_extension(cxx_rvalue_references)
-  // This code will be compiled with the -std=c++11, -std=gnu++11, -std=c++98
-  // and -std=gnu++98 options, because rvalue references are supported as a
-  // language extension in C++98.
-  #endif
-
-.. _langext-has-feature-back-compat:
-
-For backwards compatibility reasons, ``__has_feature`` can also be used to test
-for support for non-standardized features, i.e. features not prefixed ``c_``,
-``cxx_`` or ``objc_``.
-
-Another use of ``__has_feature`` is to check for compiler features not related
-to the language standard, such as e.g. :doc:`AddressSanitizer
-<AddressSanitizer>`.
-
-If the ``-pedantic-errors`` option is given, ``__has_extension`` is equivalent
-to ``__has_feature``.
-
-The feature tag is described along with the language feature below.
-
-The feature name or extension name can also be specified with a preceding and
-following ``__`` (double underscore) to avoid interference from a macro with
-the same name.  For instance, ``__cxx_rvalue_references__`` can be used instead
-of ``cxx_rvalue_references``.
-
-``__has_attribute``
--------------------
-
-This function-like macro takes a single identifier argument that is the name of
-an attribute.  It evaluates to 1 if the attribute is supported or 0 if not.  It
-can be used like this:
-
-.. code-block:: c++
-
-  #ifndef __has_attribute         // Optional of course.
-    #define __has_attribute(x) 0  // Compatibility with non-clang compilers.
-  #endif
-
-  ...
-  #if __has_attribute(always_inline)
-  #define ALWAYS_INLINE __attribute__((always_inline))
-  #else
-  #define ALWAYS_INLINE
-  #endif
-  ...
-
-The attribute name can also be specified with a preceding and following ``__``
-(double underscore) to avoid interference from a macro with the same name.  For
-instance, ``__always_inline__`` can be used instead of ``always_inline``.
-
-Include File Checking Macros
-============================
-
-Not all developments systems have the same include files.  The
-:ref:`langext-__has_include` and :ref:`langext-__has_include_next` macros allow
-you to check for the existence of an include file before doing a possibly
-failing ``#include`` directive.  Include file checking macros must be used
-as expressions in ``#if`` or ``#elif`` preprocessing directives.
-
-.. _langext-__has_include:
-
-``__has_include``
------------------
-
-This function-like macro takes a single file name string argument that is the
-name of an include file.  It evaluates to 1 if the file can be found using the
-include paths, or 0 otherwise:
-
-.. code-block:: c++
-
-  // Note the two possible file name string formats.
-  #if __has_include("myinclude.h") && __has_include(<stdint.h>)
-  # include "myinclude.h"
-  #endif
-
-  // To avoid problem with non-clang compilers not having this macro.
-  #if defined(__has_include) && __has_include("myinclude.h")
-  # include "myinclude.h"
-  #endif
-
-To test for this feature, use ``#if defined(__has_include)``.
-
-.. _langext-__has_include_next:
-
-``__has_include_next``
-----------------------
-
-This function-like macro takes a single file name string argument that is the
-name of an include file.  It is like ``__has_include`` except that it looks for
-the second instance of the given file found in the include paths.  It evaluates
-to 1 if the second instance of the file can be found using the include paths,
-or 0 otherwise:
-
-.. code-block:: c++
-
-  // Note the two possible file name string formats.
-  #if __has_include_next("myinclude.h") && __has_include_next(<stdint.h>)
-  # include_next "myinclude.h"
-  #endif
-
-  // To avoid problem with non-clang compilers not having this macro.
-  #if defined(__has_include_next) && __has_include_next("myinclude.h")
-  # include_next "myinclude.h"
-  #endif
-
-Note that ``__has_include_next``, like the GNU extension ``#include_next``
-directive, is intended for use in headers only, and will issue a warning if
-used in the top-level compilation file.  A warning will also be issued if an
-absolute path is used in the file argument.
-
-``__has_warning``
------------------
-
-This function-like macro takes a string literal that represents a command line
-option for a warning and returns true if that is a valid warning option.
-
-.. code-block:: c++
-
-  #if __has_warning("-Wformat")
-  ...
-  #endif
-
-Builtin Macros
-==============
-
-``__BASE_FILE__``
-  Defined to a string that contains the name of the main input file passed to
-  Clang.
-
-``__COUNTER__``
-  Defined to an integer value that starts at zero and is incremented each time
-  the ``__COUNTER__`` macro is expanded.
-
-``__INCLUDE_LEVEL__``
-  Defined to an integral value that is the include depth of the file currently
-  being translated.  For the main file, this value is zero.
-
-``__TIMESTAMP__``
-  Defined to the date and time of the last modification of the current source
-  file.
-
-``__clang__``
-  Defined when compiling with Clang
-
-``__clang_major__``
-  Defined to the major marketing version number of Clang (e.g., the 2 in
-  2.0.1).  Note that marketing version numbers should not be used to check for
-  language features, as different vendors use different numbering schemes.
-  Instead, use the :ref:`langext-feature_check`.
-
-``__clang_minor__``
-  Defined to the minor version number of Clang (e.g., the 0 in 2.0.1).  Note
-  that marketing version numbers should not be used to check for language
-  features, as different vendors use different numbering schemes.  Instead, use
-  the :ref:`langext-feature_check`.
-
-``__clang_patchlevel__``
-  Defined to the marketing patch level of Clang (e.g., the 1 in 2.0.1).
-
-``__clang_version__``
-  Defined to a string that captures the Clang marketing version, including the
-  Subversion tag or revision number, e.g., "``1.5 (trunk 102332)``".
-
-.. _langext-vectors:
-
-Vectors and Extended Vectors
-============================
-
-Supports the GCC, OpenCL, AltiVec and NEON vector extensions.
-
-OpenCL vector types are created using ``ext_vector_type`` attribute.  It
-support for ``V.xyzw`` syntax and other tidbits as seen in OpenCL.  An example
-is:
-
-.. code-block:: c++
-
-  typedef float float4 __attribute__((ext_vector_type(4)));
-  typedef float float2 __attribute__((ext_vector_type(2)));
-
-  float4 foo(float2 a, float2 b) {
-    float4 c;
-    c.xz = a;
-    c.yw = b;
-    return c;
-  }
-
-Query for this feature with ``__has_extension(attribute_ext_vector_type)``.
-
-Giving ``-faltivec`` option to clang enables support for AltiVec vector syntax
-and functions.  For example:
-
-.. code-block:: c++
-
-  vector float foo(vector int a) {
-    vector int b;
-    b = vec_add(a, a) + a;
-    return (vector float)b;
-  }
-
-NEON vector types are created using ``neon_vector_type`` and
-``neon_polyvector_type`` attributes.  For example:
-
-.. code-block:: c++
-
-  typedef __attribute__((neon_vector_type(8))) int8_t int8x8_t;
-  typedef __attribute__((neon_polyvector_type(16))) poly8_t poly8x16_t;
-
-  int8x8_t foo(int8x8_t a) {
-    int8x8_t v;
-    v = a;
-    return v;
-  }
-
-Vector Literals
----------------
-
-Vector literals can be used to create vectors from a set of scalars, or
-vectors.  Either parentheses or braces form can be used.  In the parentheses
-form the number of literal values specified must be one, i.e. referring to a
-scalar value, or must match the size of the vector type being created.  If a
-single scalar literal value is specified, the scalar literal value will be
-replicated to all the components of the vector type.  In the brackets form any
-number of literals can be specified.  For example:
-
-.. code-block:: c++
-
-  typedef int v4si __attribute__((__vector_size__(16)));
-  typedef float float4 __attribute__((ext_vector_type(4)));
-  typedef float float2 __attribute__((ext_vector_type(2)));
-
-  v4si vsi = (v4si){1, 2, 3, 4};
-  float4 vf = (float4)(1.0f, 2.0f, 3.0f, 4.0f);
-  vector int vi1 = (vector int)(1);    // vi1 will be (1, 1, 1, 1).
-  vector int vi2 = (vector int){1};    // vi2 will be (1, 0, 0, 0).
-  vector int vi3 = (vector int)(1, 2); // error
-  vector int vi4 = (vector int){1, 2}; // vi4 will be (1, 2, 0, 0).
-  vector int vi5 = (vector int)(1, 2, 3, 4);
-  float4 vf = (float4)((float2)(1.0f, 2.0f), (float2)(3.0f, 4.0f));
-
-Vector Operations
------------------
-
-The table below shows the support for each operation by vector extension.  A
-dash indicates that an operation is not accepted according to a corresponding
-specification.
-
-============================== ====== ======= === ====
-         Opeator               OpenCL AltiVec GCC NEON
-============================== ====== ======= === ====
-[]                              yes     yes   yes  --
-unary operators +, --           yes     yes   yes  --
-++, -- --                       yes     yes   yes  --
-+,--,*,/,%                      yes     yes   yes  --
-bitwise operators &,|,^,~       yes     yes   yes  --
->>,<<                           yes     yes   yes  --
-!, &&, ||                       no      --    --   --
-==, !=, >, <, >=, <=            yes     yes   --   --
-=                               yes     yes   yes yes
-:?                              yes     --    --   --
-sizeof                          yes     yes   yes yes
-============================== ====== ======= === ====
-
-See also :ref:`langext-__builtin_shufflevector`.
-
-Messages on ``deprecated`` and ``unavailable`` Attributes
-=========================================================
-
-An optional string message can be added to the ``deprecated`` and
-``unavailable`` attributes.  For example:
-
-.. code-block:: c++
-
-  void explode(void) __attribute__((deprecated("extremely unsafe, use 'combust' instead!!!")));
-
-If the deprecated or unavailable declaration is used, the message will be
-incorporated into the appropriate diagnostic:
-
-.. code-block:: c++
-
-  harmless.c:4:3: warning: 'explode' is deprecated: extremely unsafe, use 'combust' instead!!!
-        [-Wdeprecated-declarations]
-    explode();
-    ^
-
-Query for this feature with
-``__has_extension(attribute_deprecated_with_message)`` and
-``__has_extension(attribute_unavailable_with_message)``.
-
-Attributes on Enumerators
-=========================
-
-Clang allows attributes to be written on individual enumerators.  This allows
-enumerators to be deprecated, made unavailable, etc.  The attribute must appear
-after the enumerator name and before any initializer, like so:
-
-.. code-block:: c++
-
-  enum OperationMode {
-    OM_Invalid,
-    OM_Normal,
-    OM_Terrified __attribute__((deprecated)),
-    OM_AbortOnError __attribute__((deprecated)) = 4
-  };
-
-Attributes on the ``enum`` declaration do not apply to individual enumerators.
-
-Query for this feature with ``__has_extension(enumerator_attributes)``.
-
-'User-Specified' System Frameworks
-==================================
-
-Clang provides a mechanism by which frameworks can be built in such a way that
-they will always be treated as being "system frameworks", even if they are not
-present in a system framework directory.  This can be useful to system
-framework developers who want to be able to test building other applications
-with development builds of their framework, including the manner in which the
-compiler changes warning behavior for system headers.
-
-Framework developers can opt-in to this mechanism by creating a
-"``.system_framework``" file at the top-level of their framework.  That is, the
-framework should have contents like:
-
-.. code-block:: none
-
-  .../TestFramework.framework
-  .../TestFramework.framework/.system_framework
-  .../TestFramework.framework/Headers
-  .../TestFramework.framework/Headers/TestFramework.h
-  ...
-
-Clang will treat the presence of this file as an indicator that the framework
-should be treated as a system framework, regardless of how it was found in the
-framework search path.  For consistency, we recommend that such files never be
-included in installed versions of the framework.
-
-Availability attribute
-======================
-
-Clang introduces the ``availability`` attribute, which can be placed on
-declarations to describe the lifecycle of that declaration relative to
-operating system versions.  Consider the function declaration for a
-hypothetical function ``f``:
-
-.. code-block:: c++
-
-  void f(void) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6,obsoleted=10.7)));
-
-The availability attribute states that ``f`` was introduced in Mac OS X 10.4,
-deprecated in Mac OS X 10.6, and obsoleted in Mac OS X 10.7.  This information
-is used by Clang to determine when it is safe to use ``f``: for example, if
-Clang is instructed to compile code for Mac OS X 10.5, a call to ``f()``
-succeeds.  If Clang is instructed to compile code for Mac OS X 10.6, the call
-succeeds but Clang emits a warning specifying that the function is deprecated.
-Finally, if Clang is instructed to compile code for Mac OS X 10.7, the call
-fails because ``f()`` is no longer available.
-
-The availability attribute is a comma-separated list starting with the
-platform name and then including clauses specifying important milestones in the
-declaration's lifetime (in any order) along with additional information.  Those
-clauses can be:
-
-introduced=\ *version*
-  The first version in which this declaration was introduced.
-
-deprecated=\ *version*
-  The first version in which this declaration was deprecated, meaning that
-  users should migrate away from this API.
-
-obsoleted=\ *version*
-  The first version in which this declaration was obsoleted, meaning that it
-  was removed completely and can no longer be used.
-
-unavailable
-  This declaration is never available on this platform.
-
-message=\ *string-literal*
-  Additional message text that Clang will provide when emitting a warning or
-  error about use of a deprecated or obsoleted declaration.  Useful to direct
-  users to replacement APIs.
-
-Multiple availability attributes can be placed on a declaration, which may
-correspond to different platforms.  Only the availability attribute with the
-platform corresponding to the target platform will be used; any others will be
-ignored.  If no availability attribute specifies availability for the current
-target platform, the availability attributes are ignored.  Supported platforms
-are:
-
-``ios``
-  Apple's iOS operating system.  The minimum deployment target is specified by
-  the ``-mios-version-min=*version*`` or ``-miphoneos-version-min=*version*``
-  command-line arguments.
-
-``macosx``
-  Apple's Mac OS X operating system.  The minimum deployment target is
-  specified by the ``-mmacosx-version-min=*version*`` command-line argument.
-
-A declaration can be used even when deploying back to a platform version prior
-to when the declaration was introduced.  When this happens, the declaration is
-`weakly linked
-<https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html>`_,
-as if the ``weak_import`` attribute were added to the declaration.  A
-weakly-linked declaration may or may not be present a run-time, and a program
-can determine whether the declaration is present by checking whether the
-address of that declaration is non-NULL.
-
-If there are multiple declarations of the same entity, the availability
-attributes must either match on a per-platform basis or later
-declarations must not have availability attributes for that
-platform. For example:
-
-.. code-block:: c
-
-  void g(void) __attribute__((availability(macosx,introduced=10.4)));
-  void g(void) __attribute__((availability(macosx,introduced=10.4))); // okay, matches
-  void g(void) __attribute__((availability(ios,introduced=4.0))); // okay, adds a new platform
-  void g(void); // okay, inherits both macosx and ios availability from above.
-  void g(void) __attribute__((availability(macosx,introduced=10.5))); // error: mismatch
-
-When one method overrides another, the overriding method can be more widely available than the overridden method, e.g.,:
-
-.. code-block:: objc
-
-  @interface A
-  - (id)method __attribute__((availability(macosx,introduced=10.4)));
-  - (id)method2 __attribute__((availability(macosx,introduced=10.4)));
-  @end
-
-  @interface B : A
-  - (id)method __attribute__((availability(macosx,introduced=10.3))); // okay: method moved into base class later
-  - (id)method __attribute__((availability(macosx,introduced=10.5))); // error: this method was available via the base class in 10.4
-  @end
-
-Checks for Standard Language Features
-=====================================
-
-The ``__has_feature`` macro can be used to query if certain standard language
-features are enabled.  The ``__has_extension`` macro can be used to query if
-language features are available as an extension when compiling for a standard
-which does not provide them.  The features which can be tested are listed here.
-
-C++98
------
-
-The features listed below are part of the C++98 standard.  These features are
-enabled by default when compiling C++ code.
-
-C++ exceptions
-^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_exceptions)`` to determine if C++ exceptions have been
-enabled.  For example, compiling code with ``-fno-exceptions`` disables C++
-exceptions.
-
-C++ RTTI
-^^^^^^^^
-
-Use ``__has_feature(cxx_rtti)`` to determine if C++ RTTI has been enabled.  For
-example, compiling code with ``-fno-rtti`` disables the use of RTTI.
-
-C++11
------
-
-The features listed below are part of the C++11 standard.  As a result, all
-these features are enabled with the ``-std=c++11`` or ``-std=gnu++11`` option
-when compiling C++ code.
-
-C++11 SFINAE includes access control
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_access_control_sfinae)`` or
-``__has_extension(cxx_access_control_sfinae)`` to determine whether
-access-control errors (e.g., calling a private constructor) are considered to
-be template argument deduction errors (aka SFINAE errors), per `C++ DR1170
-<http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1170>`_.
-
-C++11 alias templates
-^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_alias_templates)`` or
-``__has_extension(cxx_alias_templates)`` to determine if support for C++11's
-alias declarations and alias templates is enabled.
-
-C++11 alignment specifiers
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_alignas)`` or ``__has_extension(cxx_alignas)`` to
-determine if support for alignment specifiers using ``alignas`` is enabled.
-
-C++11 attributes
-^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_attributes)`` or ``__has_extension(cxx_attributes)`` to
-determine if support for attribute parsing with C++11's square bracket notation
-is enabled.
-
-C++11 generalized constant expressions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_constexpr)`` to determine if support for generalized
-constant expressions (e.g., ``constexpr``) is enabled.
-
-C++11 ``decltype()``
-^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_decltype)`` or ``__has_extension(cxx_decltype)`` to
-determine if support for the ``decltype()`` specifier is enabled.  C++11's
-``decltype`` does not require type-completeness of a function call expression.
-Use ``__has_feature(cxx_decltype_incomplete_return_types)`` or
-``__has_extension(cxx_decltype_incomplete_return_types)`` to determine if
-support for this feature is enabled.
-
-C++11 default template arguments in function templates
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_default_function_template_args)`` or
-``__has_extension(cxx_default_function_template_args)`` to determine if support
-for default template arguments in function templates is enabled.
-
-C++11 ``default``\ ed functions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_defaulted_functions)`` or
-``__has_extension(cxx_defaulted_functions)`` to determine if support for
-defaulted function definitions (with ``= default``) is enabled.
-
-C++11 delegating constructors
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_delegating_constructors)`` to determine if support for
-delegating constructors is enabled.
-
-C++11 ``deleted`` functions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_deleted_functions)`` or
-``__has_extension(cxx_deleted_functions)`` to determine if support for deleted
-function definitions (with ``= delete``) is enabled.
-
-C++11 explicit conversion functions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_explicit_conversions)`` to determine if support for
-``explicit`` conversion functions is enabled.
-
-C++11 generalized initializers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_generalized_initializers)`` to determine if support for
-generalized initializers (using braced lists and ``std::initializer_list``) is
-enabled.
-
-C++11 implicit move constructors/assignment operators
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_implicit_moves)`` to determine if Clang will implicitly
-generate move constructors and move assignment operators where needed.
-
-C++11 inheriting constructors
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_inheriting_constructors)`` to determine if support for
-inheriting constructors is enabled.
-
-C++11 inline namespaces
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_inline_namespaces)`` or
-``__has_extension(cxx_inline_namespaces)`` to determine if support for inline
-namespaces is enabled.
-
-C++11 lambdas
-^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_lambdas)`` or ``__has_extension(cxx_lambdas)`` to
-determine if support for lambdas is enabled.
-
-C++11 local and unnamed types as template arguments
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_local_type_template_args)`` or
-``__has_extension(cxx_local_type_template_args)`` to determine if support for
-local and unnamed types as template arguments is enabled.
-
-C++11 noexcept
-^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_noexcept)`` or ``__has_extension(cxx_noexcept)`` to
-determine if support for noexcept exception specifications is enabled.
-
-C++11 in-class non-static data member initialization
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_nonstatic_member_init)`` to determine whether in-class
-initialization of non-static data members is enabled.
-
-C++11 ``nullptr``
-^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_nullptr)`` or ``__has_extension(cxx_nullptr)`` to
-determine if support for ``nullptr`` is enabled.
-
-C++11 ``override control``
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_override_control)`` or
-``__has_extension(cxx_override_control)`` to determine if support for the
-override control keywords is enabled.
-
-C++11 reference-qualified functions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_reference_qualified_functions)`` or
-``__has_extension(cxx_reference_qualified_functions)`` to determine if support
-for reference-qualified functions (e.g., member functions with ``&`` or ``&&``
-applied to ``*this``) is enabled.
-
-C++11 range-based ``for`` loop
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_range_for)`` or ``__has_extension(cxx_range_for)`` to
-determine if support for the range-based for loop is enabled.
-
-C++11 raw string literals
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_raw_string_literals)`` to determine if support for raw
-string literals (e.g., ``R"x(foo\bar)x"``) is enabled.
-
-C++11 rvalue references
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_rvalue_references)`` or
-``__has_extension(cxx_rvalue_references)`` to determine if support for rvalue
-references is enabled.
-
-C++11 ``static_assert()``
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_static_assert)`` or
-``__has_extension(cxx_static_assert)`` to determine if support for compile-time
-assertions using ``static_assert`` is enabled.
-
-C++11 ``thread_local``
-^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_thread_local)`` to determine if support for
-``thread_local`` variables is enabled.
-
-C++11 type inference
-^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_auto_type)`` or ``__has_extension(cxx_auto_type)`` to
-determine C++11 type inference is supported using the ``auto`` specifier.  If
-this is disabled, ``auto`` will instead be a storage class specifier, as in C
-or C++98.
-
-C++11 strongly typed enumerations
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_strong_enums)`` or
-``__has_extension(cxx_strong_enums)`` to determine if support for strongly
-typed, scoped enumerations is enabled.
-
-C++11 trailing return type
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_trailing_return)`` or
-``__has_extension(cxx_trailing_return)`` to determine if support for the
-alternate function declaration syntax with trailing return type is enabled.
-
-C++11 Unicode string literals
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_unicode_literals)`` to determine if support for Unicode
-string literals is enabled.
-
-C++11 unrestricted unions
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_unrestricted_unions)`` to determine if support for
-unrestricted unions is enabled.
-
-C++11 user-defined literals
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_user_literals)`` to determine if support for
-user-defined literals is enabled.
-
-C++11 variadic templates
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_variadic_templates)`` or
-``__has_extension(cxx_variadic_templates)`` to determine if support for
-variadic templates is enabled.
-
-C++1y
------
-
-The features listed below are part of the committee draft for the C++1y
-standard.  As a result, all these features are enabled with the ``-std=c++1y``
-or ``-std=gnu++1y`` option when compiling C++ code.
-
-C++1y binary literals
-^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_binary_literals)`` or
-``__has_extension(cxx_binary_literals)`` to determine whether
-binary literals (for instance, ``0b10010``) are recognized. Clang supports this
-feature as an extension in all language modes.
-
-C++1y contextual conversions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_contextual_conversions)`` or
-``__has_extension(cxx_contextual_conversions)`` to determine if the C++1y rules
-are used when performing an implicit conversion for an array bound in a
-*new-expression*, the operand of a *delete-expression*, an integral constant
-expression, or a condition in a ``switch`` statement. Clang does not yet
-support this feature.
-
-C++1y decltype(auto)
-^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_decltype_auto)`` or
-``__has_extension(cxx_decltype_auto)`` to determine if support
-for the ``decltype(auto)`` placeholder type is enabled.
-
-C++1y default initializers for aggregates
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_aggregate_nsdmi)`` or
-``__has_extension(cxx_aggregate_nsdmi)`` to determine if support
-for default initializers in aggregate members is enabled.
-
-C++1y generalized lambda capture
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_generalized_capture)`` or
-``__has_extension(cxx_generalized_capture`` to determine if support for
-generalized lambda captures is enabled
-(for instance, ``[n(0)] { return ++n; }``).
-Clang does not yet support this feature.
-
-C++1y generic lambdas
-^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_generic_lambda)`` or
-``__has_extension(cxx_generic_lambda)`` to determine if support for generic
-(polymorphic) lambdas is enabled
-(for instance, ``[] (auto x) { return x + 1; }``).
-Clang does not yet support this feature.
-
-C++1y relaxed constexpr
-^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_relaxed_constexpr)`` or
-``__has_extension(cxx_relaxed_constexpr)`` to determine if variable
-declarations, local variable modification, and control flow constructs
-are permitted in ``constexpr`` functions.
-Clang's implementation of this feature is incomplete.
-
-C++1y return type deduction
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_return_type_deduction)`` or
-``__has_extension(cxx_return_type_deduction)`` to determine if support
-for return type deduction for functions (using ``auto`` as a return type)
-is enabled.
-Clang's implementation of this feature is incomplete.
-
-C++1y runtime-sized arrays
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_runtime_array)`` or
-``__has_extension(cxx_runtime_array)`` to determine if support
-for arrays of runtime bound (a restricted form of variable-length arrays)
-is enabled.
-Clang's implementation of this feature is incomplete.
-
-C++1y variable templates
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(cxx_variable_templates)`` or
-``__has_extension(cxx_variable_templates)`` to determine if support for
-templated variable declarations is enabled.
-Clang does not yet support this feature.
-
-C11
----
-
-The features listed below are part of the C11 standard.  As a result, all these
-features are enabled with the ``-std=c11`` or ``-std=gnu11`` option when
-compiling C code.  Additionally, because these features are all
-backward-compatible, they are available as extensions in all language modes.
-
-C11 alignment specifiers
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(c_alignas)`` or ``__has_extension(c_alignas)`` to determine
-if support for alignment specifiers using ``_Alignas`` is enabled.
-
-C11 atomic operations
-^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(c_atomic)`` or ``__has_extension(c_atomic)`` to determine
-if support for atomic types using ``_Atomic`` is enabled.  Clang also provides
-:ref:`a set of builtins <langext-__c11_atomic>` which can be used to implement
-the ``<stdatomic.h>`` operations on ``_Atomic`` types.
-
-C11 generic selections
-^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(c_generic_selections)`` or
-``__has_extension(c_generic_selections)`` to determine if support for generic
-selections is enabled.
-
-As an extension, the C11 generic selection expression is available in all
-languages supported by Clang.  The syntax is the same as that given in the C11
-standard.
-
-In C, type compatibility is decided according to the rules given in the
-appropriate standard, but in C++, which lacks the type compatibility rules used
-in C, types are considered compatible only if they are equivalent.
-
-C11 ``_Static_assert()``
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(c_static_assert)`` or ``__has_extension(c_static_assert)``
-to determine if support for compile-time assertions using ``_Static_assert`` is
-enabled.
-
-C11 ``_Thread_local``
-^^^^^^^^^^^^^^^^^^^^^
-
-Use ``__has_feature(c_thread_local)`` to determine if support for
-``_Thread_local`` variables is enabled.
-
-Checks for Type Traits
-======================
-
-Clang supports the `GNU C++ type traits
-<http://gcc.gnu.org/onlinedocs/gcc/Type-Traits.html>`_ and a subset of the
-`Microsoft Visual C++ Type traits
-<http://msdn.microsoft.com/en-us/library/ms177194(v=VS.100).aspx>`_.  For each
-supported type trait ``__X``, ``__has_extension(X)`` indicates the presence of
-the type trait.  For example:
-
-.. code-block:: c++
-
-  #if __has_extension(is_convertible_to)
-  template<typename From, typename To>
-  struct is_convertible_to {
-    static const bool value = __is_convertible_to(From, To);
-  };
-  #else
-  // Emulate type trait
-  #endif
-
-The following type traits are supported by Clang:
-
-* ``__has_nothrow_assign`` (GNU, Microsoft)
-* ``__has_nothrow_copy`` (GNU, Microsoft)
-* ``__has_nothrow_constructor`` (GNU, Microsoft)
-* ``__has_trivial_assign`` (GNU, Microsoft)
-* ``__has_trivial_copy`` (GNU, Microsoft)
-* ``__has_trivial_constructor`` (GNU, Microsoft)
-* ``__has_trivial_destructor`` (GNU, Microsoft)
-* ``__has_virtual_destructor`` (GNU, Microsoft)
-* ``__is_abstract`` (GNU, Microsoft)
-* ``__is_base_of`` (GNU, Microsoft)
-* ``__is_class`` (GNU, Microsoft)
-* ``__is_convertible_to`` (Microsoft)
-* ``__is_empty`` (GNU, Microsoft)
-* ``__is_enum`` (GNU, Microsoft)
-* ``__is_interface_class`` (Microsoft)
-* ``__is_pod`` (GNU, Microsoft)
-* ``__is_polymorphic`` (GNU, Microsoft)
-* ``__is_union`` (GNU, Microsoft)
-* ``__is_literal(type)``: Determines whether the given type is a literal type
-* ``__is_final``: Determines whether the given type is declared with a
-  ``final`` class-virt-specifier.
-* ``__underlying_type(type)``: Retrieves the underlying type for a given
-  ``enum`` type.  This trait is required to implement the C++11 standard
-  library.
-* ``__is_trivially_assignable(totype, fromtype)``: Determines whether a value
-  of type ``totype`` can be assigned to from a value of type ``fromtype`` such
-  that no non-trivial functions are called as part of that assignment.  This
-  trait is required to implement the C++11 standard library.
-* ``__is_trivially_constructible(type, argtypes...)``: Determines whether a
-  value of type ``type`` can be direct-initialized with arguments of types
-  ``argtypes...`` such that no non-trivial functions are called as part of
-  that initialization.  This trait is required to implement the C++11 standard
-  library.
-
-Blocks
-======
-
-The syntax and high level language feature description is in
-:doc:`BlockLanguageSpec<BlockLanguageSpec>`. Implementation and ABI details for
-the clang implementation are in :doc:`Block-ABI-Apple<Block-ABI-Apple>`.
-
-Query for this feature with ``__has_extension(blocks)``.
-
-Objective-C Features
-====================
-
-Related result types
---------------------
-
-According to Cocoa conventions, Objective-C methods with certain names
-("``init``", "``alloc``", etc.) always return objects that are an instance of
-the receiving class's type.  Such methods are said to have a "related result
-type", meaning that a message send to one of these methods will have the same
-static type as an instance of the receiver class.  For example, given the
-following classes:
-
-.. code-block:: objc
-
-  @interface NSObject
-  + (id)alloc;
-  - (id)init;
-  @end
-
-  @interface NSArray : NSObject
-  @end
-
-and this common initialization pattern
-
-.. code-block:: objc
-
-  NSArray *array = [[NSArray alloc] init];
-
-the type of the expression ``[NSArray alloc]`` is ``NSArray*`` because
-``alloc`` implicitly has a related result type.  Similarly, the type of the
-expression ``[[NSArray alloc] init]`` is ``NSArray*``, since ``init`` has a
-related result type and its receiver is known to have the type ``NSArray *``.
-If neither ``alloc`` nor ``init`` had a related result type, the expressions
-would have had type ``id``, as declared in the method signature.
-
-A method with a related result type can be declared by using the type
-``instancetype`` as its result type.  ``instancetype`` is a contextual keyword
-that is only permitted in the result type of an Objective-C method, e.g.
-
-.. code-block:: objc
-
-  @interface A
-  + (instancetype)constructAnA;
-  @end
-
-The related result type can also be inferred for some methods.  To determine
-whether a method has an inferred related result type, the first word in the
-camel-case selector (e.g., "``init``" in "``initWithObjects``") is considered,
-and the method will have a related result type if its return type is compatible
-with the type of its class and if:
-
-* the first word is "``alloc``" or "``new``", and the method is a class method,
-  or
-
-* the first word is "``autorelease``", "``init``", "``retain``", or "``self``",
-  and the method is an instance method.
-
-If a method with a related result type is overridden by a subclass method, the
-subclass method must also return a type that is compatible with the subclass
-type.  For example:
-
-.. code-block:: objc
-
-  @interface NSString : NSObject
-  - (NSUnrelated *)init; // incorrect usage: NSUnrelated is not NSString or a superclass of NSString
-  @end
-
-Related result types only affect the type of a message send or property access
-via the given method.  In all other respects, a method with a related result
-type is treated the same way as method that returns ``id``.
-
-Use ``__has_feature(objc_instancetype)`` to determine whether the
-``instancetype`` contextual keyword is available.
-
-Automatic reference counting
-----------------------------
-
-Clang provides support for :doc:`automated reference counting
-<AutomaticReferenceCounting>` in Objective-C, which eliminates the need
-for manual ``retain``/``release``/``autorelease`` message sends.  There are two
-feature macros associated with automatic reference counting:
-``__has_feature(objc_arc)`` indicates the availability of automated reference
-counting in general, while ``__has_feature(objc_arc_weak)`` indicates that
-automated reference counting also includes support for ``__weak`` pointers to
-Objective-C objects.
-
-.. _objc-fixed-enum:
-
-Enumerations with a fixed underlying type
------------------------------------------
-
-Clang provides support for C++11 enumerations with a fixed underlying type
-within Objective-C.  For example, one can write an enumeration type as:
-
-.. code-block:: c++
-
-  typedef enum : unsigned char { Red, Green, Blue } Color;
-
-This specifies that the underlying type, which is used to store the enumeration
-value, is ``unsigned char``.
-
-Use ``__has_feature(objc_fixed_enum)`` to determine whether support for fixed
-underlying types is available in Objective-C.
-
-Interoperability with C++11 lambdas
------------------------------------
-
-Clang provides interoperability between C++11 lambdas and blocks-based APIs, by
-permitting a lambda to be implicitly converted to a block pointer with the
-corresponding signature.  For example, consider an API such as ``NSArray``'s
-array-sorting method:
-
-.. code-block:: objc
-
-  - (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr;
-
-``NSComparator`` is simply a typedef for the block pointer ``NSComparisonResult
-(^)(id, id)``, and parameters of this type are generally provided with block
-literals as arguments.  However, one can also use a C++11 lambda so long as it
-provides the same signature (in this case, accepting two parameters of type
-``id`` and returning an ``NSComparisonResult``):
-
-.. code-block:: objc
-
-  NSArray *array = @[@"string 1", @"string 21", @"string 12", @"String 11",
-                     @"String 02"];
-  const NSStringCompareOptions comparisonOptions
-    = NSCaseInsensitiveSearch | NSNumericSearch |
-      NSWidthInsensitiveSearch | NSForcedOrderingSearch;
-  NSLocale *currentLocale = [NSLocale currentLocale];
-  NSArray *sorted
-    = [array sortedArrayUsingComparator:[=](id s1, id s2) -> NSComparisonResult {
-               NSRange string1Range = NSMakeRange(0, [s1 length]);
-               return [s1 compare:s2 options:comparisonOptions
-               range:string1Range locale:currentLocale];
-       }];
-  NSLog(@"sorted: %@", sorted);
-
-This code relies on an implicit conversion from the type of the lambda
-expression (an unnamed, local class type called the *closure type*) to the
-corresponding block pointer type.  The conversion itself is expressed by a
-conversion operator in that closure type that produces a block pointer with the
-same signature as the lambda itself, e.g.,
-
-.. code-block:: objc
-
-  operator NSComparisonResult (^)(id, id)() const;
-
-This conversion function returns a new block that simply forwards the two
-parameters to the lambda object (which it captures by copy), then returns the
-result.  The returned block is first copied (with ``Block_copy``) and then
-autoreleased.  As an optimization, if a lambda expression is immediately
-converted to a block pointer (as in the first example, above), then the block
-is not copied and autoreleased: rather, it is given the same lifetime as a
-block literal written at that point in the program, which avoids the overhead
-of copying a block to the heap in the common case.
-
-The conversion from a lambda to a block pointer is only available in
-Objective-C++, and not in C++ with blocks, due to its use of Objective-C memory
-management (autorelease).
-
-Object Literals and Subscripting
---------------------------------
-
-Clang provides support for :doc:`Object Literals and Subscripting
-<ObjectiveCLiterals>` in Objective-C, which simplifies common Objective-C
-programming patterns, makes programs more concise, and improves the safety of
-container creation.  There are several feature macros associated with object
-literals and subscripting: ``__has_feature(objc_array_literals)`` tests the
-availability of array literals; ``__has_feature(objc_dictionary_literals)``
-tests the availability of dictionary literals;
-``__has_feature(objc_subscripting)`` tests the availability of object
-subscripting.
-
-Objective-C Autosynthesis of Properties
----------------------------------------
-
-Clang provides support for autosynthesis of declared properties.  Using this
-feature, clang provides default synthesis of those properties not declared
- at dynamic and not having user provided backing getter and setter methods.
-``__has_feature(objc_default_synthesize_properties)`` checks for availability
-of this feature in version of clang being used.
-
-.. _langext-objc_method_family:
-
-The ``objc_method_family`` attribute
-------------------------------------
-
-Many methods in Objective-C have conventional meanings determined by their
-selectors. It is sometimes useful to be able to mark a method as having a
-particular conventional meaning despite not having the right selector, or as
-not having the conventional meaning that its selector would suggest. For these
-use cases, we provide an attribute to specifically describe the "method family"
-that a method belongs to.
-
-**Usage**: ``__attribute__((objc_method_family(X)))``, where ``X`` is one of
-``none``, ``alloc``, ``copy``, ``init``, ``mutableCopy``, or ``new``.  This
-attribute can only be placed at the end of a method declaration:
-
-.. code-block:: objc
-
-  - (NSString *)initMyStringValue __attribute__((objc_method_family(none)));
-
-Users who do not wish to change the conventional meaning of a method, and who
-merely want to document its non-standard retain and release semantics, should
-use the :ref:`retaining behavior attributes <langext-objc-retain-release>`
-described below.
-
-Query for this feature with ``__has_attribute(objc_method_family)``.
-
-.. _langext-objc-retain-release:
-
-Objective-C retaining behavior attributes
------------------------------------------
-
-In Objective-C, functions and methods are generally assumed to follow the
-`Cocoa Memory Management 
-<http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html>`_
-conventions for ownership of object arguments and
-return values. However, there are exceptions, and so Clang provides attributes
-to allow these exceptions to be documented. This are used by ARC and the
-`static analyzer <http://clang-analyzer.llvm.org>`_ Some exceptions may be
-better described using the :ref:`objc_method_family
-<langext-objc_method_family>` attribute instead.
-
-**Usage**: The ``ns_returns_retained``, ``ns_returns_not_retained``,
-``ns_returns_autoreleased``, ``cf_returns_retained``, and
-``cf_returns_not_retained`` attributes can be placed on methods and functions
-that return Objective-C or CoreFoundation objects. They are commonly placed at
-the end of a function prototype or method declaration:
-
-.. code-block:: objc
-
-  id foo() __attribute__((ns_returns_retained));
-
-  - (NSString *)bar:(int)x __attribute__((ns_returns_retained));
-
-The ``*_returns_retained`` attributes specify that the returned object has a +1
-retain count.  The ``*_returns_not_retained`` attributes specify that the return
-object has a +0 retain count, even if the normal convention for its selector
-would be +1.  ``ns_returns_autoreleased`` specifies that the returned object is
-+0, but is guaranteed to live at least as long as the next flush of an
-autorelease pool.
-
-**Usage**: The ``ns_consumed`` and ``cf_consumed`` attributes can be placed on
-an parameter declaration; they specify that the argument is expected to have a
-+1 retain count, which will be balanced in some way by the function or method.
-The ``ns_consumes_self`` attribute can only be placed on an Objective-C
-method; it specifies that the method expects its ``self`` parameter to have a
-+1 retain count, which it will balance in some way.
-
-.. code-block:: objc
-
-  void foo(__attribute__((ns_consumed)) NSString *string);
-
-  - (void) bar __attribute__((ns_consumes_self));
-  - (void) baz:(id) __attribute__((ns_consumed)) x;
-
-Further examples of these attributes are available in the static analyzer's `list of annotations for analysis
-<http://clang-analyzer.llvm.org/annotations.html#cocoa_mem>`_.
-
-Query for these features with ``__has_attribute(ns_consumed)``,
-``__has_attribute(ns_returns_retained)``, etc.
-
-
-Function Overloading in C
-=========================
-
-Clang provides support for C++ function overloading in C.  Function overloading
-in C is introduced using the ``overloadable`` attribute.  For example, one
-might provide several overloaded versions of a ``tgsin`` function that invokes
-the appropriate standard function computing the sine of a value with ``float``,
-``double``, or ``long double`` precision:
-
-.. code-block:: c
-
-  #include <math.h>
-  float __attribute__((overloadable)) tgsin(float x) { return sinf(x); }
-  double __attribute__((overloadable)) tgsin(double x) { return sin(x); }
-  long double __attribute__((overloadable)) tgsin(long double x) { return sinl(x); }
-
-Given these declarations, one can call ``tgsin`` with a ``float`` value to
-receive a ``float`` result, with a ``double`` to receive a ``double`` result,
-etc.  Function overloading in C follows the rules of C++ function overloading
-to pick the best overload given the call arguments, with a few C-specific
-semantics:
-
-* Conversion from ``float`` or ``double`` to ``long double`` is ranked as a
-  floating-point promotion (per C99) rather than as a floating-point conversion
-  (as in C++).
-
-* A conversion from a pointer of type ``T*`` to a pointer of type ``U*`` is
-  considered a pointer conversion (with conversion rank) if ``T`` and ``U`` are
-  compatible types.
-
-* A conversion from type ``T`` to a value of type ``U`` is permitted if ``T``
-  and ``U`` are compatible types.  This conversion is given "conversion" rank.
-
-The declaration of ``overloadable`` functions is restricted to function
-declarations and definitions.  Most importantly, if any function with a given
-name is given the ``overloadable`` attribute, then all function declarations
-and definitions with that name (and in that scope) must have the
-``overloadable`` attribute.  This rule even applies to redeclarations of
-functions whose original declaration had the ``overloadable`` attribute, e.g.,
-
-.. code-block:: c
-
-  int f(int) __attribute__((overloadable));
-  float f(float); // error: declaration of "f" must have the "overloadable" attribute
-
-  int g(int) __attribute__((overloadable));
-  int g(int) { } // error: redeclaration of "g" must also have the "overloadable" attribute
-
-Functions marked ``overloadable`` must have prototypes.  Therefore, the
-following code is ill-formed:
-
-.. code-block:: c
-
-  int h() __attribute__((overloadable)); // error: h does not have a prototype
-
-However, ``overloadable`` functions are allowed to use a ellipsis even if there
-are no named parameters (as is permitted in C++).  This feature is particularly
-useful when combined with the ``unavailable`` attribute:
-
-.. code-block:: c++
-
-  void honeypot(...) __attribute__((overloadable, unavailable)); // calling me is an error
-
-Functions declared with the ``overloadable`` attribute have their names mangled
-according to the same rules as C++ function names.  For example, the three
-``tgsin`` functions in our motivating example get the mangled names
-``_Z5tgsinf``, ``_Z5tgsind``, and ``_Z5tgsine``, respectively.  There are two
-caveats to this use of name mangling:
-
-* Future versions of Clang may change the name mangling of functions overloaded
-  in C, so you should not depend on an specific mangling.  To be completely
-  safe, we strongly urge the use of ``static inline`` with ``overloadable``
-  functions.
-
-* The ``overloadable`` attribute has almost no meaning when used in C++,
-  because names will already be mangled and functions are already overloadable.
-  However, when an ``overloadable`` function occurs within an ``extern "C"``
-  linkage specification, it's name *will* be mangled in the same way as it
-  would in C.
-
-Query for this feature with ``__has_extension(attribute_overloadable)``.
-
-Initializer lists for complex numbers in C
-==========================================
-
-clang supports an extension which allows the following in C:
-
-.. code-block:: c++
-
-  #include <math.h>
-  #include <complex.h>
-  complex float x = { 1.0f, INFINITY }; // Init to (1, Inf)
-
-This construct is useful because there is no way to separately initialize the
-real and imaginary parts of a complex variable in standard C, given that clang
-does not support ``_Imaginary``.  (Clang also supports the ``__real__`` and
-``__imag__`` extensions from gcc, which help in some cases, but are not usable
-in static initializers.)
-
-Note that this extension does not allow eliding the braces; the meaning of the
-following two lines is different:
-
-.. code-block:: c++
-
-  complex float x[] = { { 1.0f, 1.0f } }; // [0] = (1, 1)
-  complex float x[] = { 1.0f, 1.0f }; // [0] = (1, 0), [1] = (1, 0)
-
-This extension also works in C++ mode, as far as that goes, but does not apply
-to the C++ ``std::complex``.  (In C++11, list initialization allows the same
-syntax to be used with ``std::complex`` with the same meaning.)
-
-Builtin Functions
-=================
-
-Clang supports a number of builtin library functions with the same syntax as
-GCC, including things like ``__builtin_nan``, ``__builtin_constant_p``,
-``__builtin_choose_expr``, ``__builtin_types_compatible_p``,
-``__sync_fetch_and_add``, etc.  In addition to the GCC builtins, Clang supports
-a number of builtins that GCC does not, which are listed here.
-
-Please note that Clang does not and will not support all of the GCC builtins
-for vector operations.  Instead of using builtins, you should use the functions
-defined in target-specific header files like ``<xmmintrin.h>``, which define
-portable wrappers for these.  Many of the Clang versions of these functions are
-implemented directly in terms of :ref:`extended vector support
-<langext-vectors>` instead of builtins, in order to reduce the number of
-builtins that we need to implement.
-
-``__builtin_readcyclecounter``
-------------------------------
-
-``__builtin_readcyclecounter`` is used to access the cycle counter register (or
-a similar low-latency, high-accuracy clock) on those targets that support it.
-
-**Syntax**:
-
-.. code-block:: c++
-
-  __builtin_readcyclecounter()
-
-**Example of Use**:
-
-.. code-block:: c++
-
-  unsigned long long t0 = __builtin_readcyclecounter();
-  do_something();
-  unsigned long long t1 = __builtin_readcyclecounter();
-  unsigned long long cycles_to_do_something = t1 - t0; // assuming no overflow
-
-**Description**:
-
-The ``__builtin_readcyclecounter()`` builtin returns the cycle counter value,
-which may be either global or process/thread-specific depending on the target.
-As the backing counters often overflow quickly (on the order of seconds) this
-should only be used for timing small intervals.  When not supported by the
-target, the return value is always zero.  This builtin takes no arguments and
-produces an unsigned long long result.
-
-Query for this feature with ``__has_builtin(__builtin_readcyclecounter)``.
-
-.. _langext-__builtin_shufflevector:
-
-``__builtin_shufflevector``
----------------------------
-
-``__builtin_shufflevector`` is used to express generic vector
-permutation/shuffle/swizzle operations.  This builtin is also very important
-for the implementation of various target-specific header files like
-``<xmmintrin.h>``.
-
-**Syntax**:
-
-.. code-block:: c++
-
-  __builtin_shufflevector(vec1, vec2, index1, index2, ...)
-
-**Examples**:
-
-.. code-block:: c++
-
-  // Identity operation - return 4-element vector V1.
-  __builtin_shufflevector(V1, V1, 0, 1, 2, 3)
-
-  // "Splat" element 0 of V1 into a 4-element result.
-  __builtin_shufflevector(V1, V1, 0, 0, 0, 0)
-
-  // Reverse 4-element vector V1.
-  __builtin_shufflevector(V1, V1, 3, 2, 1, 0)
-
-  // Concatenate every other element of 4-element vectors V1 and V2.
-  __builtin_shufflevector(V1, V2, 0, 2, 4, 6)
-
-  // Concatenate every other element of 8-element vectors V1 and V2.
-  __builtin_shufflevector(V1, V2, 0, 2, 4, 6, 8, 10, 12, 14)
-
-**Description**:
-
-The first two arguments to ``__builtin_shufflevector`` are vectors that have
-the same element type.  The remaining arguments are a list of integers that
-specify the elements indices of the first two vectors that should be extracted
-and returned in a new vector.  These element indices are numbered sequentially
-starting with the first vector, continuing into the second vector.  Thus, if
-``vec1`` is a 4-element vector, index 5 would refer to the second element of
-``vec2``.
-
-The result of ``__builtin_shufflevector`` is a vector with the same element
-type as ``vec1``/``vec2`` but that has an element count equal to the number of
-indices specified.
-
-Query for this feature with ``__has_builtin(__builtin_shufflevector)``.
-
-``__builtin_unreachable``
--------------------------
-
-``__builtin_unreachable`` is used to indicate that a specific point in the
-program cannot be reached, even if the compiler might otherwise think it can.
-This is useful to improve optimization and eliminates certain warnings.  For
-example, without the ``__builtin_unreachable`` in the example below, the
-compiler assumes that the inline asm can fall through and prints a "function
-declared '``noreturn``' should not return" warning.
-
-**Syntax**:
-
-.. code-block:: c++
-
-    __builtin_unreachable()
-
-**Example of use**:
-
-.. code-block:: c++
-
-  void myabort(void) __attribute__((noreturn));
-  void myabort(void) {
-    asm("int3");
-    __builtin_unreachable();
-  }
-
-**Description**:
-
-The ``__builtin_unreachable()`` builtin has completely undefined behavior.
-Since it has undefined behavior, it is a statement that it is never reached and
-the optimizer can take advantage of this to produce better code.  This builtin
-takes no arguments and produces a void result.
-
-Query for this feature with ``__has_builtin(__builtin_unreachable)``.
-
-``__sync_swap``
----------------
-
-``__sync_swap`` is used to atomically swap integers or pointers in memory.
-
-**Syntax**:
-
-.. code-block:: c++
-
-  type __sync_swap(type *ptr, type value, ...)
-
-**Example of Use**:
-
-.. code-block:: c++
-
-  int old_value = __sync_swap(&value, new_value);
-
-**Description**:
-
-The ``__sync_swap()`` builtin extends the existing ``__sync_*()`` family of
-atomic intrinsics to allow code to atomically swap the current value with the
-new value.  More importantly, it helps developers write more efficient and
-correct code by avoiding expensive loops around
-``__sync_bool_compare_and_swap()`` or relying on the platform specific
-implementation details of ``__sync_lock_test_and_set()``.  The
-``__sync_swap()`` builtin is a full barrier.
-
-Multiprecision Arithmetic Builtins
-----------------------------------
-
-Clang provides a set of builtins which expose multiprecision arithmetic in a
-manner amenable to C. They all have the following form:
-
-.. code-block:: c
-
-  unsigned x = ..., y = ..., carryin = ..., carryout;
-  unsigned sum = __builtin_addc(x, y, carryin, &carryout);
-
-Thus one can form a multiprecision addition chain in the following manner:
-
-.. code-block:: c
-
-  unsigned *x, *y, *z, carryin=0, carryout;
-  z[0] = __builtin_addc(x[0], y[0], carryin, &carryout);
-  carryin = carryout;
-  z[1] = __builtin_addc(x[1], y[1], carryin, &carryout);
-  carryin = carryout;
-  z[2] = __builtin_addc(x[2], y[2], carryin, &carryout);
-  carryin = carryout;
-  z[3] = __builtin_addc(x[3], y[3], carryin, &carryout);
-
-The complete list of builtins are:
-
-.. code-block:: c
-
-  unsigned short     __builtin_addcs (unsigned short x, unsigned short y, unsigned short carryin, unsigned short *carryout);
-  unsigned           __builtin_addc  (unsigned x, unsigned y, unsigned carryin, unsigned *carryout);
-  unsigned long      __builtin_addcl (unsigned long x, unsigned long y, unsigned long carryin, unsigned long *carryout);
-  unsigned long long __builtin_addcll(unsigned long long x, unsigned long long y, unsigned long long carryin, unsigned long long *carryout);
-  unsigned short     __builtin_subcs (unsigned short x, unsigned short y, unsigned short carryin, unsigned short *carryout);
-  unsigned           __builtin_subc  (unsigned x, unsigned y, unsigned carryin, unsigned *carryout);
-  unsigned long      __builtin_subcl (unsigned long x, unsigned long y, unsigned long carryin, unsigned long *carryout);
-  unsigned long long __builtin_subcll(unsigned long long x, unsigned long long y, unsigned long long carryin, unsigned long long *carryout);
-
-.. _langext-__c11_atomic:
-
-__c11_atomic builtins
----------------------
-
-Clang provides a set of builtins which are intended to be used to implement
-C11's ``<stdatomic.h>`` header.  These builtins provide the semantics of the
-``_explicit`` form of the corresponding C11 operation, and are named with a
-``__c11_`` prefix.  The supported operations are:
-
-* ``__c11_atomic_init``
-* ``__c11_atomic_thread_fence``
-* ``__c11_atomic_signal_fence``
-* ``__c11_atomic_is_lock_free``
-* ``__c11_atomic_store``
-* ``__c11_atomic_load``
-* ``__c11_atomic_exchange``
-* ``__c11_atomic_compare_exchange_strong``
-* ``__c11_atomic_compare_exchange_weak``
-* ``__c11_atomic_fetch_add``
-* ``__c11_atomic_fetch_sub``
-* ``__c11_atomic_fetch_and``
-* ``__c11_atomic_fetch_or``
-* ``__c11_atomic_fetch_xor``
-
-Non-standard C++11 Attributes
-=============================
-
-Clang's non-standard C++11 attributes live in the ``clang`` attribute
-namespace.
-
-The ``clang::fallthrough`` attribute
-------------------------------------
-
-The ``clang::fallthrough`` attribute is used along with the
-``-Wimplicit-fallthrough`` argument to annotate intentional fall-through
-between switch labels.  It can only be applied to a null statement placed at a
-point of execution between any statement and the next switch label.  It is
-common to mark these places with a specific comment, but this attribute is
-meant to replace comments with a more strict annotation, which can be checked
-by the compiler.  This attribute doesn't change semantics of the code and can
-be used wherever an intended fall-through occurs.  It is designed to mimic
-control-flow statements like ``break;``, so it can be placed in most places
-where ``break;`` can, but only if there are no statements on the execution path
-between it and the next switch label.
-
-Here is an example:
-
-.. code-block:: c++
-
-  // compile with -Wimplicit-fallthrough
-  switch (n) {
-  case 22:
-  case 33:  // no warning: no statements between case labels
-    f();
-  case 44:  // warning: unannotated fall-through
-    g();
-    [[clang::fallthrough]];
-  case 55:  // no warning
-    if (x) {
-      h();
-      break;
-    }
-    else {
-      i();
-      [[clang::fallthrough]];
-    }
-  case 66:  // no warning
-    p();
-    [[clang::fallthrough]]; // warning: fallthrough annotation does not
-                            //          directly precede case label
-    q();
-  case 77:  // warning: unannotated fall-through
-    r();
-  }
-
-``gnu::`` attributes
---------------------
-
-Clang also supports GCC's ``gnu`` attribute namespace. All GCC attributes which
-are accepted with the ``__attribute__((foo))`` syntax are also accepted as
-``[[gnu::foo]]``. This only extends to attributes which are specified by GCC
-(see the list of `GCC function attributes
-<http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html>`_, `GCC variable
-attributes <http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html>`_, and
-`GCC type attributes
-<http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html>`_. As with the GCC
-implementation, these attributes must appertain to the *declarator-id* in a
-declaration, which means they must go either at the start of the declaration or
-immediately after the name being declared.
-
-For example, this applies the GNU ``unused`` attribute to ``a`` and ``f``, and
-also applies the GNU ``noreturn`` attribute to ``f``.
-
-.. code-block:: c++
-
-  [[gnu::unused]] int a, f [[gnu::noreturn]] ();
-
-Target-Specific Extensions
-==========================
-
-Clang supports some language features conditionally on some targets.
-
-X86/X86-64 Language Extensions
-------------------------------
-
-The X86 backend has these language extensions:
-
-Memory references off the GS segment
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Annotating a pointer with address space #256 causes it to be code generated
-relative to the X86 GS segment register, and address space #257 causes it to be
-relative to the X86 FS segment.  Note that this is a very very low-level
-feature that should only be used if you know what you're doing (for example in
-an OS kernel).
-
-Here is an example:
-
-.. code-block:: c++
-
-  #define GS_RELATIVE __attribute__((address_space(256)))
-  int foo(int GS_RELATIVE *P) {
-    return *P;
-  }
-
-Which compiles to (on X86-32):
-
-.. code-block:: gas
-
-  _foo:
-          movl    4(%esp), %eax
-          movl    %gs:(%eax), %eax
-          ret
-
-Extensions for Static Analysis
-==============================
-
-Clang supports additional attributes that are useful for documenting program
-invariants and rules for static analysis tools, such as the `Clang Static
-Analyzer <http://clang-analyzer.llvm.org/>`_. These attributes are documented
-in the analyzer's `list of source-level annotations
-<http://clang-analyzer.llvm.org/annotations.html>`_.
-
-
-Extensions for Dynamic Analysis
-===============================
-
-.. _langext-address_sanitizer:
-
-AddressSanitizer
-----------------
-
-Use ``__has_feature(address_sanitizer)`` to check if the code is being built
-with :doc:`AddressSanitizer`.
-
-Use ``__attribute__((no_sanitize_address))``
-on a function declaration
-to specify that address safety instrumentation (e.g. AddressSanitizer) should
-not be applied to that function.
-
-.. _langext-thread_sanitizer:
-
-ThreadSanitizer
-----------------
-
-Use ``__has_feature(thread_sanitizer)`` to check if the code is being built
-with :doc:`ThreadSanitizer`.
-
-Use ``__attribute__((no_sanitize_thread))`` on a function declaration
-to specify that checks for data races on plain (non-atomic) memory accesses
-should not be inserted by ThreadSanitizer.
-The function may still be instrumented by the tool
-to avoid false positives in other places.
-
-.. _langext-memory_sanitizer:
-
-MemorySanitizer
-----------------
-Use ``__has_feature(memory_sanitizer)`` to check if the code is being built
-with :doc:`MemorySanitizer`.
-
-Use ``__attribute__((no_sanitize_memory))`` on a function declaration
-to specify that checks for uninitialized memory should not be inserted 
-(e.g. by MemorySanitizer). The function may still be instrumented by the tool
-to avoid false positives in other places.
-
-
-Thread-Safety Annotation Checking
-=================================
-
-Clang supports additional attributes for checking basic locking policies in
-multithreaded programs.  Clang currently parses the following list of
-attributes, although **the implementation for these annotations is currently in
-development.** For more details, see the `GCC implementation
-<http://gcc.gnu.org/wiki/ThreadSafetyAnnotation>`_.
-
-``no_thread_safety_analysis``
------------------------------
-
-Use ``__attribute__((no_thread_safety_analysis))`` on a function declaration to
-specify that the thread safety analysis should not be run on that function.
-This attribute provides an escape hatch (e.g. for situations when it is
-difficult to annotate the locking policy).
-
-``lockable``
-------------
-
-Use ``__attribute__((lockable))`` on a class definition to specify that it has
-a lockable type (e.g. a Mutex class).  This annotation is primarily used to
-check consistency.
-
-``scoped_lockable``
--------------------
-
-Use ``__attribute__((scoped_lockable))`` on a class definition to specify that
-it has a "scoped" lockable type.  Objects of this type will acquire the lock
-upon construction and release it upon going out of scope.  This annotation is
-primarily used to check consistency.
-
-``guarded_var``
----------------
-
-Use ``__attribute__((guarded_var))`` on a variable declaration to specify that
-the variable must be accessed while holding some lock.
-
-``pt_guarded_var``
-------------------
-
-Use ``__attribute__((pt_guarded_var))`` on a pointer declaration to specify
-that the pointer must be dereferenced while holding some lock.
-
-``guarded_by(l)``
------------------
-
-Use ``__attribute__((guarded_by(l)))`` on a variable declaration to specify
-that the variable must be accessed while holding lock ``l``.
-
-``pt_guarded_by(l)``
---------------------
-
-Use ``__attribute__((pt_guarded_by(l)))`` on a pointer declaration to specify
-that the pointer must be dereferenced while holding lock ``l``.
-
-``acquired_before(...)``
-------------------------
-
-Use ``__attribute__((acquired_before(...)))`` on a declaration of a lockable
-variable to specify that the lock must be acquired before all attribute
-arguments.  Arguments must be lockable type, and there must be at least one
-argument.
-
-``acquired_after(...)``
------------------------
-
-Use ``__attribute__((acquired_after(...)))`` on a declaration of a lockable
-variable to specify that the lock must be acquired after all attribute
-arguments.  Arguments must be lockable type, and there must be at least one
-argument.
-
-``exclusive_lock_function(...)``
---------------------------------
-
-Use ``__attribute__((exclusive_lock_function(...)))`` on a function declaration
-to specify that the function acquires all listed locks exclusively.  This
-attribute takes zero or more arguments: either of lockable type or integers
-indexing into function parameters of lockable type.  If no arguments are given,
-the acquired lock is implicitly ``this`` of the enclosing object.
-
-``shared_lock_function(...)``
------------------------------
-
-Use ``__attribute__((shared_lock_function(...)))`` on a function declaration to
-specify that the function acquires all listed locks, although the locks may be
-shared (e.g. read locks).  This attribute takes zero or more arguments: either
-of lockable type or integers indexing into function parameters of lockable
-type.  If no arguments are given, the acquired lock is implicitly ``this`` of
-the enclosing object.
-
-``exclusive_trylock_function(...)``
------------------------------------
-
-Use ``__attribute__((exclusive_lock_function(...)))`` on a function declaration
-to specify that the function will try (without blocking) to acquire all listed
-locks exclusively.  This attribute takes one or more arguments.  The first
-argument is an integer or boolean value specifying the return value of a
-successful lock acquisition.  The remaining arugments are either of lockable
-type or integers indexing into function parameters of lockable type.  If only
-one argument is given, the acquired lock is implicitly ``this`` of the
-enclosing object.
-
-``shared_trylock_function(...)``
---------------------------------
-
-Use ``__attribute__((shared_lock_function(...)))`` on a function declaration to
-specify that the function will try (without blocking) to acquire all listed
-locks, although the locks may be shared (e.g. read locks).  This attribute
-takes one or more arguments.  The first argument is an integer or boolean value
-specifying the return value of a successful lock acquisition.  The remaining
-arugments are either of lockable type or integers indexing into function
-parameters of lockable type.  If only one argument is given, the acquired lock
-is implicitly ``this`` of the enclosing object.
-
-``unlock_function(...)``
-------------------------
-
-Use ``__attribute__((unlock_function(...)))`` on a function declaration to
-specify that the function release all listed locks.  This attribute takes zero
-or more arguments: either of lockable type or integers indexing into function
-parameters of lockable type.  If no arguments are given, the acquired lock is
-implicitly ``this`` of the enclosing object.
-
-``lock_returned(l)``
---------------------
-
-Use ``__attribute__((lock_returned(l)))`` on a function declaration to specify
-that the function returns lock ``l`` (``l`` must be of lockable type).  This
-annotation is used to aid in resolving lock expressions.
-
-``locks_excluded(...)``
------------------------
-
-Use ``__attribute__((locks_excluded(...)))`` on a function declaration to
-specify that the function must not be called with the listed locks.  Arguments
-must be lockable type, and there must be at least one argument.
-
-``exclusive_locks_required(...)``
----------------------------------
-
-Use ``__attribute__((exclusive_locks_required(...)))`` on a function
-declaration to specify that the function must be called while holding the
-listed exclusive locks.  Arguments must be lockable type, and there must be at
-least one argument.
-
-``shared_locks_required(...)``
-------------------------------
-
-Use ``__attribute__((shared_locks_required(...)))`` on a function declaration
-to specify that the function must be called while holding the listed shared
-locks.  Arguments must be lockable type, and there must be at least one
-argument.
-
-Type Safety Checking
-====================
-
-Clang supports additional attributes to enable checking type safety properties
-that can't be enforced by C type system.  Usecases include:
-
-* MPI library implementations, where these attributes enable checking that
-  buffer type matches the passed ``MPI_Datatype``;
-* for HDF5 library there is a similar usecase as MPI;
-* checking types of variadic functions' arguments for functions like
-  ``fcntl()`` and ``ioctl()``.
-
-You can detect support for these attributes with ``__has_attribute()``.  For
-example:
-
-.. code-block:: c++
-
-  #if defined(__has_attribute)
-  #  if __has_attribute(argument_with_type_tag) && \
-        __has_attribute(pointer_with_type_tag) && \
-        __has_attribute(type_tag_for_datatype)
-  #    define ATTR_MPI_PWT(buffer_idx, type_idx) __attribute__((pointer_with_type_tag(mpi,buffer_idx,type_idx)))
-  /* ... other macros ...  */
-  #  endif
-  #endif
-
-  #if !defined(ATTR_MPI_PWT)
-  # define ATTR_MPI_PWT(buffer_idx, type_idx)
-  #endif
-
-  int MPI_Send(void *buf, int count, MPI_Datatype datatype /*, other args omitted */)
-      ATTR_MPI_PWT(1,3);
-
-``argument_with_type_tag(...)``
--------------------------------
-
-Use ``__attribute__((argument_with_type_tag(arg_kind, arg_idx,
-type_tag_idx)))`` on a function declaration to specify that the function
-accepts a type tag that determines the type of some other argument.
-``arg_kind`` is an identifier that should be used when annotating all
-applicable type tags.
-
-This attribute is primarily useful for checking arguments of variadic functions
-(``pointer_with_type_tag`` can be used in most of non-variadic cases).
-
-For example:
-
-.. code-block:: c++
-
-  int fcntl(int fd, int cmd, ...)
-      __attribute__(( argument_with_type_tag(fcntl,3,2) ));
-
-``pointer_with_type_tag(...)``
-------------------------------
-
-Use ``__attribute__((pointer_with_type_tag(ptr_kind, ptr_idx, type_tag_idx)))``
-on a function declaration to specify that the function accepts a type tag that
-determines the pointee type of some other pointer argument.
-
-For example:
-
-.. code-block:: c++
-
-  int MPI_Send(void *buf, int count, MPI_Datatype datatype /*, other args omitted */)
-      __attribute__(( pointer_with_type_tag(mpi,1,3) ));
-
-``type_tag_for_datatype(...)``
-------------------------------
-
-Clang supports annotating type tags of two forms.
-
-* **Type tag that is an expression containing a reference to some declared
-  identifier.** Use ``__attribute__((type_tag_for_datatype(kind, type)))`` on a
-  declaration with that identifier:
-
-  .. code-block:: c++
-
-    extern struct mpi_datatype mpi_datatype_int
-        __attribute__(( type_tag_for_datatype(mpi,int) ));
-    #define MPI_INT ((MPI_Datatype) &mpi_datatype_int)
-
-* **Type tag that is an integral literal.** Introduce a ``static const``
-  variable with a corresponding initializer value and attach
-  ``__attribute__((type_tag_for_datatype(kind, type)))`` on that declaration,
-  for example:
-
-  .. code-block:: c++
-
-    #define MPI_INT ((MPI_Datatype) 42)
-    static const MPI_Datatype mpi_datatype_int
-        __attribute__(( type_tag_for_datatype(mpi,int) )) = 42
-
-The attribute also accepts an optional third argument that determines how the
-expression is compared to the type tag.  There are two supported flags:
-
-* ``layout_compatible`` will cause types to be compared according to
-  layout-compatibility rules (C++11 [class.mem] p 17, 18).  This is
-  implemented to support annotating types like ``MPI_DOUBLE_INT``.
-
-  For example:
-
-  .. code-block:: c++
-
-    /* In mpi.h */
-    struct internal_mpi_double_int { double d; int i; };
-    extern struct mpi_datatype mpi_datatype_double_int
-        __attribute__(( type_tag_for_datatype(mpi, struct internal_mpi_double_int, layout_compatible) ));
-
-    #define MPI_DOUBLE_INT ((MPI_Datatype) &mpi_datatype_double_int)
-
-    /* In user code */
-    struct my_pair { double a; int b; };
-    struct my_pair *buffer;
-    MPI_Send(buffer, 1, MPI_DOUBLE_INT /*, ...  */); // no warning
-
-    struct my_int_pair { int a; int b; }
-    struct my_int_pair *buffer2;
-    MPI_Send(buffer2, 1, MPI_DOUBLE_INT /*, ...  */); // warning: actual buffer element
-                                                      // type 'struct my_int_pair'
-                                                      // doesn't match specified MPI_Datatype
-
-* ``must_be_null`` specifies that the expression should be a null pointer
-  constant, for example:
-
-  .. code-block:: c++
-
-    /* In mpi.h */
-    extern struct mpi_datatype mpi_datatype_null
-        __attribute__(( type_tag_for_datatype(mpi, void, must_be_null) ));
-
-    #define MPI_DATATYPE_NULL ((MPI_Datatype) &mpi_datatype_null)
-
-    /* In user code */
-    MPI_Send(buffer, 1, MPI_DATATYPE_NULL /*, ...  */); // warning: MPI_DATATYPE_NULL
-                                                        // was specified but buffer
-                                                        // is not a null pointer
-
-Format String Checking
-======================
-
-Clang supports the ``format`` attribute, which indicates that the function
-accepts a ``printf`` or ``scanf``-like format string and corresponding
-arguments or a ``va_list`` that contains these arguments.
-
-Please see `GCC documentation about format attribute
-<http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html>`_ to find details
-about attribute syntax.
-
-Clang implements two kinds of checks with this attribute.
-
-#. Clang checks that the function with the ``format`` attribute is called with
-   a format string that uses format specifiers that are allowed, and that
-   arguments match the format string.  This is the ``-Wformat`` warning, it is
-   on by default.
-
-#. Clang checks that the format string argument is a literal string.  This is
-   the ``-Wformat-nonliteral`` warning, it is off by default.
-
-   Clang implements this mostly the same way as GCC, but there is a difference
-   for functions that accept a ``va_list`` argument (for example, ``vprintf``).
-   GCC does not emit ``-Wformat-nonliteral`` warning for calls to such
-   fuctions.  Clang does not warn if the format string comes from a function
-   parameter, where the function is annotated with a compatible attribute,
-   otherwise it warns.  For example:
-
-   .. code-block:: c
-
-     __attribute__((__format__ (__scanf__, 1, 3)))
-     void foo(const char* s, char *buf, ...) {
-       va_list ap;
-       va_start(ap, buf);
-
-       vprintf(s, ap); // warning: format string is not a string literal
-     }
-
-   In this case we warn because ``s`` contains a format string for a
-   ``scanf``-like function, but it is passed to a ``printf``-like function.
-
-   If the attribute is removed, clang still warns, because the format string is
-   not a string literal.
-
-   Another example:
-
-   .. code-block:: c
-
-     __attribute__((__format__ (__printf__, 1, 3)))
-     void foo(const char* s, char *buf, ...) {
-       va_list ap;
-       va_start(ap, buf);
-
-       vprintf(s, ap); // warning
-     }
-
-   In this case Clang does not warn because the format string ``s`` and
-   the corresponding arguments are annotated.  If the arguments are
-   incorrect, the caller of ``foo`` will receive a warning.

Modified: trunk/contrib/llvm/tools/clang/docs/LibASTMatchers.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/LibASTMatchers.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/LibASTMatchers.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,134 +0,0 @@
-======================
-Matching the Clang AST
-======================
-
-This document explains how to use Clang's LibASTMatchers to match interesting
-nodes of the AST and execute code that uses the matched nodes.  Combined with
-:doc:`LibTooling`, LibASTMatchers helps to write code-to-code transformation
-tools or query tools.
-
-We assume basic knowledge about the Clang AST.  See the :doc:`Introduction
-to the Clang AST <IntroductionToTheClangAST>` if you want to learn more
-about how the AST is structured.
-
-..  FIXME: create tutorial and link to the tutorial
-
-Introduction
-------------
-
-LibASTMatchers provides a domain specific language to create predicates on
-Clang's AST.  This DSL is written in and can be used from C++, allowing users
-to write a single program to both match AST nodes and access the node's C++
-interface to extract attributes, source locations, or any other information
-provided on the AST level.
-
-AST matchers are predicates on nodes in the AST.  Matchers are created by
-calling creator functions that allow building up a tree of matchers, where
-inner matchers are used to make the match more specific.
-
-For example, to create a matcher that matches all class or union declarations
-in the AST of a translation unit, you can call `recordDecl()
-<LibASTMatchersReference.html#recordDecl0Anchor>`_.  To narrow the match down,
-for example to find all class or union declarations with the name "``Foo``",
-insert a `hasName <LibASTMatchersReference.html#hasName0Anchor>`_ matcher: the
-call ``recordDecl(hasName("Foo"))`` returns a matcher that matches classes or
-unions that are named "``Foo``", in any namespace.  By default, matchers that
-accept multiple inner matchers use an implicit `allOf()
-<LibASTMatchersReference.html#allOf0Anchor>`_.  This allows further narrowing
-down the match, for example to match all classes that are derived from
-"``Bar``": ``recordDecl(hasName("Foo"), isDerivedFrom("Bar"))``.
-
-How to create a matcher
------------------------
-
-With more than a thousand classes in the Clang AST, one can quickly get lost
-when trying to figure out how to create a matcher for a specific pattern.  This
-section will teach you how to use a rigorous step-by-step pattern to build the
-matcher you are interested in.  Note that there will always be matchers missing
-for some part of the AST.  See the section about :ref:`how to write your own
-AST matchers <astmatchers-writing>` later in this document.
-
-..  FIXME: why is it linking back to the same section?!
-
-The precondition to using the matchers is to understand how the AST for what you
-want to match looks like.  The
-:doc:`Introduction to the Clang AST <IntroductionToTheClangAST>` teaches you
-how to dump a translation unit's AST into a human readable format.
-
-..  FIXME: Introduce link to ASTMatchersTutorial.html
-..  FIXME: Introduce link to ASTMatchersCookbook.html
-
-In general, the strategy to create the right matchers is:
-
-#. Find the outermost class in Clang's AST you want to match.
-#. Look at the `AST Matcher Reference <LibASTMatchersReference.html>`_ for
-   matchers that either match the node you're interested in or narrow down
-   attributes on the node.
-#. Create your outer match expression.  Verify that it works as expected.
-#. Examine the matchers for what the next inner node you want to match is.
-#. Repeat until the matcher is finished.
-
-.. _astmatchers-bind:
-
-Binding nodes in match expressions
-----------------------------------
-
-Matcher expressions allow you to specify which parts of the AST are interesting
-for a certain task.  Often you will want to then do something with the nodes
-that were matched, like building source code transformations.
-
-To that end, matchers that match specific AST nodes (so called node matchers)
-are bindable; for example, ``recordDecl(hasName("MyClass")).bind("id")`` will
-bind the matched ``recordDecl`` node to the string "``id``", to be later
-retrieved in the `match callback
-<http://clang.llvm.org/doxygen/classclang_1_1ast__matchers_1_1MatchFinder_1_1MatchCallback.html>`_.
-
-..  FIXME: Introduce link to ASTMatchersTutorial.html
-..  FIXME: Introduce link to ASTMatchersCookbook.html
-
-Writing your own matchers
--------------------------
-
-There are multiple different ways to define a matcher, depending on its type
-and flexibility.
-
-``VariadicDynCastAllOfMatcher<Base, Derived>``
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Those match all nodes of type *Base* if they can be dynamically casted to
-*Derived*.  The names of those matchers are nouns, which closely resemble
-*Derived*.  ``VariadicDynCastAllOfMatchers`` are the backbone of the matcher
-hierarchy.  Most often, your match expression will start with one of them, and
-you can :ref:`bind <astmatchers-bind>` the node they represent to ids for later
-processing.
-
-``VariadicDynCastAllOfMatchers`` are callable classes that model variadic
-template functions in C++03.  They take an aribtrary number of
-``Matcher<Derived>`` and return a ``Matcher<Base>``.
-
-``AST_MATCHER_P(Type, Name, ParamType, Param)``
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Most matcher definitions use the matcher creation macros.  Those define both
-the matcher of type ``Matcher<Type>`` itself, and a matcher-creation function
-named *Name* that takes a parameter of type *ParamType* and returns the
-corresponding matcher.
-
-There are multiple matcher definition macros that deal with polymorphic return
-values and different parameter counts.  See `ASTMatchersMacros.h
-<http://clang.llvm.org/doxygen/ASTMatchersMacros_8h.html>`_.
-
-.. _astmatchers-writing:
-
-Matcher creation functions
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Matchers are generated by nesting calls to matcher creation functions.  Most of
-the time those functions are either created by using
-``VariadicDynCastAllOfMatcher`` or the matcher creation macros (see below).
-The free-standing functions are an indication that this matcher is just a
-combination of other matchers, as is for example the case with `callee
-<LibASTMatchersReference.html#callee1Anchor>`_.
-
-..  FIXME: "... macros (see below)" --- there isn't anything below
-

Modified: trunk/contrib/llvm/tools/clang/docs/LibASTMatchersReference.html
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/LibASTMatchersReference.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/LibASTMatchersReference.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3360 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<title>AST Matcher Reference</title>
-<link type="text/css" rel="stylesheet" href="../menu.css" />
-<link type="text/css" rel="stylesheet" href="../content.css" />
-<style type="text/css">
-td {
-  padding: .33em;
-}
-td.doc {
-  display: none;
-  border-bottom: 1px solid black;
-}
-td.name:hover {
-  color: blue;
-  cursor: pointer;
-}
-</style>
-<script type="text/javascript">
-function toggle(id) {
-  if (!id) return;
-  row = document.getElementById(id);
-  if (row.style.display != 'table-cell')
-    row.style.display = 'table-cell';
-  else
-    row.style.display = 'none';
-}
-</script>
-</head>
-<body onLoad="toggle(location.hash.substring(1, location.hash.length - 6))">
-
-<!--#include virtual="../menu.html.incl"-->
-
-<div id="content">
-
-<h1>AST Matcher Reference</h1>
-
-<p>This document shows all currently implemented matchers. The matchers are grouped
-by category and node type they match. You can click on matcher names to show the
-matcher's source documentation.</p>
-
-<p>There are three different basic categories of matchers:
-<ul>
-<li><a href="#decl-matchers">Node Matchers:</a> Matchers that match a specific type of AST node.</li>
-<li><a href="#narrowing-matchers">Narrowing Matchers:</a> Matchers that match attributes on AST nodes.</li>
-<li><a href="#traversal-matchers">Traversal Matchers:</a> Matchers that allow traversal between AST nodes.</li>
-</ul>
-</p>
-
-<p>Within each category the matchers are ordered by node type they match on.
-Note that if a matcher can match multiple node types, it will it will appear
-multiple times. This means that by searching for Matcher<Stmt> you can
-find all matchers that can be used to match on Stmt nodes.</p>
-
-<p>The exception to that rule are matchers that can match on any node. Those
-are marked with a * and are listed in the beginning of each category.</p>
-
-<!-- ======================================================================= -->
-<h2 id="decl-matchers">Node Matchers</h2>
-<!-- ======================================================================= -->
-
-<p>Node matchers are at the core of matcher expressions - they specify the type
-of node that is expected. Every match expression starts with a node matcher,
-which can then be further refined with a narrowing or traversal matcher. All
-traversal matchers take node matchers as their arguments.</p>
-
-<p>For convenience, all node matchers take an arbitrary number of arguments
-and implicitly act as allOf matchers.</p>
-
-<p>Node matchers are the only matchers that support the bind("id") call to
-bind the matched node to the given string, to be later retrieved from the
-match callback.</p>
-
-<table>
-<tr style="text-align:left"><th>Return type</th><th>Name</th><th>Parameters</th></tr>
-<!-- START_DECL_MATCHERS -->
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('accessSpecDecl0')"><a name="accessSpecDecl0Anchor">accessSpecDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AccessSpecDecl.html">AccessSpecDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="accessSpecDecl0"><pre>Matches C++ access specifier declarations.
-
-Given
-  class C {
-  public:
-    int a;
-  };
-accessSpecDecl()
-  matches 'public:'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('classTemplateDecl0')"><a name="classTemplateDecl0Anchor">classTemplateDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ClassTemplateDecl.html">ClassTemplateDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="classTemplateDecl0"><pre>Matches C++ class template declarations.
-
-Example matches Z
-  template<class T> class Z {};
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('classTemplateSpecializationDecl0')"><a name="classTemplateSpecializationDecl0Anchor">classTemplateSpecializationDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ClassTemplateSpecializationDecl.html">ClassTemplateSpecializationDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="classTemplateSpecializationDecl0"><pre>Matches C++ class template specializations.
-
-Given
-  template<typename T> class A {};
-  template<> class A<double> {};
-  A<int> a;
-classTemplateSpecializationDecl()
-  matches the specializations A<int> and A<double>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('constructorDecl0')"><a name="constructorDecl0Anchor">constructorDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructorDecl.html">CXXConstructorDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="constructorDecl0"><pre>Matches C++ constructor declarations.
-
-Example matches Foo::Foo() and Foo::Foo(int)
-  class Foo {
-   public:
-    Foo();
-    Foo(int);
-    int DoSomething();
-  };
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('decl0')"><a name="decl0Anchor">decl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="decl0"><pre>Matches declarations.
-
-Examples matches X, C, and the friend declaration inside C;
-  void X();
-  class C {
-    friend X;
-  };
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('destructorDecl0')"><a name="destructorDecl0Anchor">destructorDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXDestructorDecl.html">CXXDestructorDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="destructorDecl0"><pre>Matches explicit C++ destructor declarations.
-
-Example matches Foo::~Foo()
-  class Foo {
-   public:
-    virtual ~Foo();
-  };
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('enumConstantDecl0')"><a name="enumConstantDecl0Anchor">enumConstantDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumConstantDecl.html">EnumConstantDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="enumConstantDecl0"><pre>Matches enum constants.
-
-Example matches A, B, C
-  enum X {
-    A, B, C
-  };
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('enumDecl0')"><a name="enumDecl0Anchor">enumDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumDecl.html">EnumDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="enumDecl0"><pre>Matches enum declarations.
-
-Example matches X
-  enum X {
-    A, B, C
-  };
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('fieldDecl0')"><a name="fieldDecl0Anchor">fieldDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FieldDecl.html">FieldDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="fieldDecl0"><pre>Matches field declarations.
-
-Given
-  class X { int m; };
-fieldDecl()
-  matches 'm'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('functionDecl0')"><a name="functionDecl0Anchor">functionDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="functionDecl0"><pre>Matches function declarations.
-
-Example matches f
-  void f();
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('functionTemplateDecl0')"><a name="functionTemplateDecl0Anchor">functionTemplateDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionTemplateDecl.html">FunctionTemplateDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="functionTemplateDecl0"><pre>Matches C++ function template declarations.
-
-Example matches f
-  template<class T> void f(T t) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('methodDecl0')"><a name="methodDecl0Anchor">methodDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="methodDecl0"><pre>Matches method declarations.
-
-Example matches y
-  class X { void y() };
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('namedDecl0')"><a name="namedDecl0Anchor">namedDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html">NamedDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="namedDecl0"><pre>Matches a declaration of anything that could have a name.
-
-Example matches X, S, the anonymous union type, i, and U;
-  typedef int X;
-  struct S {
-    union {
-      int i;
-    } U;
-  };
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('recordDecl0')"><a name="recordDecl0Anchor">recordDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="recordDecl0"><pre>Matches C++ class declarations.
-
-Example matches X, Z
-  class X;
-  template<class T> class Z {};
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('usingDecl0')"><a name="usingDecl0Anchor">usingDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UsingDecl.html">UsingDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="usingDecl0"><pre>Matches using declarations.
-
-Given
-  namespace X { int x; }
-  using X::x;
-usingDecl()
-  matches using X::x </pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('varDecl0')"><a name="varDecl0Anchor">varDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="varDecl0"><pre>Matches variable declarations.
-
-Note: this does not match declarations of member variables, which are
-"field" declarations in Clang parlance.
-
-Example matches a
-  int a;
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifierLoc.html">NestedNameSpecifierLoc</a>></td><td class="name" onclick="toggle('nestedNameSpecifierLoc0')"><a name="nestedNameSpecifierLoc0Anchor">nestedNameSpecifierLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifierLoc.html">NestedNameSpecifierLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="nestedNameSpecifierLoc0"><pre>Same as nestedNameSpecifier but matches NestedNameSpecifierLoc.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifier.html">NestedNameSpecifier</a>></td><td class="name" onclick="toggle('nestedNameSpecifier0')"><a name="nestedNameSpecifier0Anchor">nestedNameSpecifier</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifier.html">NestedNameSpecifier</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="nestedNameSpecifier0"><pre>Matches nested name specifiers.
-
-Given
-  namespace ns {
-    struct A { static void f(); };
-    void A::f() {}
-    void g() { A::f(); }
-  }
-  ns::A a;
-nestedNameSpecifier()
-  matches "ns::" and both "A::"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('qualType0')"><a name="qualType0Anchor">qualType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="qualType0"><pre>Matches QualTypes in the clang AST.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('arraySubscriptExpr0')"><a name="arraySubscriptExpr0Anchor">arraySubscriptExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArraySubscriptExpr.html">ArraySubscriptExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="arraySubscriptExpr0"><pre>Matches array subscript expressions.
-
-Given
-  int i = a[1];
-arraySubscriptExpr()
-  matches "a[1]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('asmStmt0')"><a name="asmStmt0Anchor">asmStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AsmStmt.html">AsmStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="asmStmt0"><pre>Matches asm statements.
-
- int i = 100;
-  __asm("mov al, 2");
-asmStmt()
-  matches '__asm("mov al, 2")'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('binaryOperator0')"><a name="binaryOperator0Anchor">binaryOperator</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BinaryOperator.html">BinaryOperator</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="binaryOperator0"><pre>Matches binary operator expressions.
-
-Example matches a || b
-  !(a || b)
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('bindTemporaryExpr0')"><a name="bindTemporaryExpr0Anchor">bindTemporaryExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXBindTemporaryExpr.html">CXXBindTemporaryExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="bindTemporaryExpr0"><pre>Matches nodes where temporaries are created.
-
-Example matches FunctionTakesString(GetStringByValue())
-    (matcher = bindTemporaryExpr())
-  FunctionTakesString(GetStringByValue());
-  FunctionTakesStringByPointer(GetStringPointer());
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('boolLiteral0')"><a name="boolLiteral0Anchor">boolLiteral</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXBoolLiteralExpr.html">CXXBoolLiteralExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="boolLiteral0"><pre>Matches bool literals.
-
-Example matches true
-  true
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('breakStmt0')"><a name="breakStmt0Anchor">breakStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BreakStmt.html">BreakStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="breakStmt0"><pre>Matches break statements.
-
-Given
-  while (true) { break; }
-breakStmt()
-  matches 'break'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('cStyleCastExpr0')"><a name="cStyleCastExpr0Anchor">cStyleCastExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="cStyleCastExpr0"><pre>Matches a C-style cast expression.
-
-Example: Matches (int*) 2.2f in
-  int i = (int) 2.2f;
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('callExpr0')"><a name="callExpr0Anchor">callExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="callExpr0"><pre>Matches call expressions.
-
-Example matches x.y() and y()
-  X x;
-  x.y();
-  y();
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('castExpr0')"><a name="castExpr0Anchor">castExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CastExpr.html">CastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="castExpr0"><pre>Matches any cast nodes of Clang's AST.
-
-Example: castExpr() matches each of the following:
-  (int) 3;
-  const_cast<Expr *>(SubExpr);
-  char c = 0;
-but does not match
-  int i = (0);
-  int k = 0;
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('catchStmt0')"><a name="catchStmt0Anchor">catchStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXCatchStmt.html">CXXCatchStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="catchStmt0"><pre>Matches catch statements.
-
-  try {} catch(int i) {}
-catchStmt()
-  matches 'catch(int i)'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('characterLiteral0')"><a name="characterLiteral0Anchor">characterLiteral</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CharacterLiteral.html">CharacterLiteral</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="characterLiteral0"><pre>Matches character literals (also matches wchar_t).
-
-Not matching Hex-encoded chars (e.g. 0x1234, which is a IntegerLiteral),
-though.
-
-Example matches 'a', L'a'
-  char ch = 'a'; wchar_t chw = L'a';
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('compoundLiteralExpr0')"><a name="compoundLiteralExpr0Anchor">compoundLiteralExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CompoundLiteralExpr.html">CompoundLiteralExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="compoundLiteralExpr0"><pre>Matches compound (i.e. non-scalar) literals
-
-Example match: {1}, (1, 2)
-  int array[4] = {1}; vector int myvec = (vector int)(1, 2);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('compoundStmt0')"><a name="compoundStmt0Anchor">compoundStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CompoundStmt.html">CompoundStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="compoundStmt0"><pre>Matches compound statements.
-
-Example matches '{}' and '{{}}'in 'for (;;) {{}}'
-  for (;;) {{}}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('conditionalOperator0')"><a name="conditionalOperator0Anchor">conditionalOperator</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ConditionalOperator.html">ConditionalOperator</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="conditionalOperator0"><pre>Matches conditional operator expressions.
-
-Example matches a ? b : c
-  (a ? b : c) + 42
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('constCastExpr0')"><a name="constCastExpr0Anchor">constCastExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstCastExpr.html">CXXConstCastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="constCastExpr0"><pre>Matches a const_cast expression.
-
-Example: Matches const_cast<int*>(&r) in
-  int n = 42;
-  const int &r(n);
-  int* p = const_cast<int*>(&r);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('constructExpr0')"><a name="constructExpr0Anchor">constructExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="constructExpr0"><pre>Matches constructor call expressions (including implicit ones).
-
-Example matches string(ptr, n) and ptr within arguments of f
-    (matcher = constructExpr())
-  void f(const string &a, const string &b);
-  char *ptr;
-  int n;
-  f(string(ptr, n), ptr);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('continueStmt0')"><a name="continueStmt0Anchor">continueStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ContinueStmt.html">ContinueStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="continueStmt0"><pre>Matches continue statements.
-
-Given
-  while (true) { continue; }
-continueStmt()
-  matches 'continue'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('declRefExpr0')"><a name="declRefExpr0Anchor">declRefExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="declRefExpr0"><pre>Matches expressions that refer to declarations.
-
-Example matches x in if (x)
-  bool x;
-  if (x) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('declStmt0')"><a name="declStmt0Anchor">declStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclStmt.html">DeclStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="declStmt0"><pre>Matches declaration statements.
-
-Given
-  int a;
-declStmt()
-  matches 'int a'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('defaultArgExpr0')"><a name="defaultArgExpr0Anchor">defaultArgExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXDefaultArgExpr.html">CXXDefaultArgExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="defaultArgExpr0"><pre>Matches the value of a default argument at the call site.
-
-Example matches the CXXDefaultArgExpr placeholder inserted for the
-    default value of the second parameter in the call expression f(42)
-    (matcher = defaultArgExpr())
-  void f(int x, int y = 0);
-  f(42);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('deleteExpr0')"><a name="deleteExpr0Anchor">deleteExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXDeleteExpr.html">CXXDeleteExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="deleteExpr0"><pre>Matches delete expressions.
-
-Given
-  delete X;
-deleteExpr()
-  matches 'delete X'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('doStmt0')"><a name="doStmt0Anchor">doStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DoStmt.html">DoStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="doStmt0"><pre>Matches do statements.
-
-Given
-  do {} while (true);
-doStmt()
-  matches 'do {} while(true)'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('dynamicCastExpr0')"><a name="dynamicCastExpr0Anchor">dynamicCastExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXDynamicCastExpr.html">CXXDynamicCastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="dynamicCastExpr0"><pre>Matches a dynamic_cast expression.
-
-Example:
-  dynamicCastExpr()
-matches
-  dynamic_cast<D*>(&b);
-in
-  struct B { virtual ~B() {} }; struct D : B {};
-  B b;
-  D* p = dynamic_cast<D*>(&b);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('explicitCastExpr0')"><a name="explicitCastExpr0Anchor">explicitCastExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ExplicitCastExpr.html">ExplicitCastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="explicitCastExpr0"><pre>Matches explicit cast expressions.
-
-Matches any cast expression written in user code, whether it be a
-C-style cast, a functional-style cast, or a keyword cast.
-
-Does not match implicit conversions.
-
-Note: the name "explicitCast" is chosen to match Clang's terminology, as
-Clang uses the term "cast" to apply to implicit conversions as well as to
-actual cast expressions.
-
-hasDestinationType.
-
-Example: matches all five of the casts in
-  int((int)(reinterpret_cast<int>(static_cast<int>(const_cast<int>(42)))))
-but does not match the implicit conversion in
-  long ell = 42;
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('expr0')"><a name="expr0Anchor">expr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="expr0"><pre>Matches expressions.
-
-Example matches x()
-  void f() { x(); }
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('forRangeStmt0')"><a name="forRangeStmt0Anchor">forRangeStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXForRangeStmt.html">CXXForRangeStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="forRangeStmt0"><pre>Matches range-based for statements.
-
-forRangeStmt() matches 'for (auto a : i)'
-  int i[] =  {1, 2, 3}; for (auto a : i);
-  for(int j = 0; j < 5; ++j);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('forStmt0')"><a name="forStmt0Anchor">forStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ForStmt.html">ForStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="forStmt0"><pre>Matches for statements.
-
-Example matches 'for (;;) {}'
-  for (;;) {}
-  int i[] =  {1, 2, 3}; for (auto a : i);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('functionalCastExpr0')"><a name="functionalCastExpr0Anchor">functionalCastExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXFunctionalCastExpr.html">CXXFunctionalCastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="functionalCastExpr0"><pre>Matches functional cast expressions
-
-Example: Matches Foo(bar);
-  Foo f = bar;
-  Foo g = (Foo) bar;
-  Foo h = Foo(bar);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('gotoStmt0')"><a name="gotoStmt0Anchor">gotoStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1GotoStmt.html">GotoStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="gotoStmt0"><pre>Matches goto statements.
-
-Given
-  goto FOO;
-  FOO: bar();
-gotoStmt()
-  matches 'goto FOO'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('ifStmt0')"><a name="ifStmt0Anchor">ifStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IfStmt.html">IfStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="ifStmt0"><pre>Matches if statements.
-
-Example matches 'if (x) {}'
-  if (x) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('implicitCastExpr0')"><a name="implicitCastExpr0Anchor">implicitCastExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="implicitCastExpr0"><pre>Matches the implicit cast nodes of Clang's AST.
-
-This matches many different places, including function call return value
-eliding, as well as any type conversions.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('initListExpr0')"><a name="initListExpr0Anchor">initListExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1InitListExpr.html">InitListExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="initListExpr0"><pre>Matches init list expressions.
-
-Given
-  int a[] = { 1, 2 };
-  struct B { int x, y; };
-  B b = { 5, 6 };
-initList()
-  matches "{ 1, 2 }" and "{ 5, 6 }"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('integerLiteral0')"><a name="integerLiteral0Anchor">integerLiteral</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IntegerLiteral.html">IntegerLiteral</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="integerLiteral0"><pre>Matches integer literals of all sizes encodings.
-
-Not matching character-encoded integers such as L'a'.
-
-Example matches 1, 1L, 0x1, 1U
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('labelStmt0')"><a name="labelStmt0Anchor">labelStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="labelStmt0"><pre>Matches label statements.
-
-Given
-  goto FOO;
-  FOO: bar();
-labelStmt()
-  matches 'FOO:'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('lambdaExpr0')"><a name="lambdaExpr0Anchor">lambdaExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1LambdaExpr.html">LambdaExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="lambdaExpr0"><pre>Matches lambda expressions.
-
-Example matches [&](){return 5;}
-  [&](){return 5;}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('materializeTemporaryExpr0')"><a name="materializeTemporaryExpr0Anchor">materializeTemporaryExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MaterializeTemporaryExpr.html">MaterializeTemporaryExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="materializeTemporaryExpr0"><pre>Matches nodes where temporaries are materialized.
-
-Example: Given
-  struct T {void func()};
-  T f();
-  void g(T);
-materializeTemporaryExpr() matches 'f()' in these statements
-  T u(f());
-  g(f());
-but does not match
-  f();
-  f().func();
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('memberCallExpr0')"><a name="memberCallExpr0Anchor">memberCallExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMemberCallExpr.html">CXXMemberCallExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="memberCallExpr0"><pre>Matches member call expressions.
-
-Example matches x.y()
-  X x;
-  x.y();
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('memberExpr0')"><a name="memberExpr0Anchor">memberExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="memberExpr0"><pre>Matches member expressions.
-
-Given
-  class Y {
-    void x() { this->x(); x(); Y y; y.x(); a; this->b; Y::b; }
-    int a; static int b;
-  };
-memberExpr()
-  matches this->x, x, y.x, a, this->b
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('newExpr0')"><a name="newExpr0Anchor">newExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="newExpr0"><pre>Matches new expressions.
-
-Given
-  new X;
-newExpr()
-  matches 'new X'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('nullPtrLiteralExpr0')"><a name="nullPtrLiteralExpr0Anchor">nullPtrLiteralExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNullPtrLiteralExpr.html">CXXNullPtrLiteralExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="nullPtrLiteralExpr0"><pre>Matches nullptr literal.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('nullStmt0')"><a name="nullStmt0Anchor">nullStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NullStmt.html">NullStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="nullStmt0"><pre>Matches null statements.
-
-  foo();;
-nullStmt()
-  matches the second ';'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('operatorCallExpr0')"><a name="operatorCallExpr0Anchor">operatorCallExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXOperatorCallExpr.html">CXXOperatorCallExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="operatorCallExpr0"><pre>Matches overloaded operator calls.
-
-Note that if an operator isn't overloaded, it won't match. Instead, use
-binaryOperator matcher.
-Currently it does not match operators such as new delete.
-FIXME: figure out why these do not match?
-
-Example matches both operator<<((o << b), c) and operator<<(o, b)
-    (matcher = operatorCallExpr())
-  ostream &operator<< (ostream &out, int i) { };
-  ostream &o; int b = 1, c = 1;
-  o << b << c;
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('reinterpretCastExpr0')"><a name="reinterpretCastExpr0Anchor">reinterpretCastExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXReinterpretCastExpr.html">CXXReinterpretCastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="reinterpretCastExpr0"><pre>Matches a reinterpret_cast expression.
-
-Either the source expression or the destination type can be matched
-using has(), but hasDestinationType() is more specific and can be
-more readable.
-
-Example matches reinterpret_cast<char*>(&p) in
-  void* p = reinterpret_cast<char*>(&p);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('returnStmt0')"><a name="returnStmt0Anchor">returnStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReturnStmt.html">ReturnStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="returnStmt0"><pre>Matches return statements.
-
-Given
-  return 1;
-returnStmt()
-  matches 'return 1'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('staticCastExpr0')"><a name="staticCastExpr0Anchor">staticCastExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXStaticCastExpr.html">CXXStaticCastExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="staticCastExpr0"><pre>Matches a C++ static_cast expression.
-
-hasDestinationType
-reinterpretCast
-
-Example:
-  staticCastExpr()
-matches
-  static_cast<long>(8)
-in
-  long eight(static_cast<long>(8));
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('stmt0')"><a name="stmt0Anchor">stmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="stmt0"><pre>Matches statements.
-
-Given
-  { ++a; }
-stmt()
-  matches both the compound statement '{ ++a; }' and '++a'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('stringLiteral0')"><a name="stringLiteral0Anchor">stringLiteral</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1StringLiteral.html">StringLiteral</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="stringLiteral0"><pre>Matches string literals (also matches wide string literals).
-
-Example matches "abcd", L"abcd"
-  char *s = "abcd"; wchar_t *ws = L"abcd"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('switchCase0')"><a name="switchCase0Anchor">switchCase</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1SwitchCase.html">SwitchCase</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="switchCase0"><pre>Matches case and default statements inside switch statements.
-
-Given
-  switch(a) { case 42: break; default: break; }
-switchCase()
-  matches 'case 42: break;' and 'default: break;'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('switchStmt0')"><a name="switchStmt0Anchor">switchStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1SwitchStmt.html">SwitchStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="switchStmt0"><pre>Matches switch statements.
-
-Given
-  switch(a) { case 42: break; default: break; }
-switchStmt()
-  matches 'switch(a)'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('thisExpr0')"><a name="thisExpr0Anchor">thisExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXThisExpr.html">CXXThisExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="thisExpr0"><pre>Matches implicit and explicit this expressions.
-
-Example matches the implicit this expression in "return i".
-    (matcher = thisExpr())
-struct foo {
-  int i;
-  int f() { return i; }
-};
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('throwExpr0')"><a name="throwExpr0Anchor">throwExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXThrowExpr.html">CXXThrowExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="throwExpr0"><pre>Matches throw expressions.
-
-  try { throw 5; } catch(int i) {}
-throwExpr()
-  matches 'throw 5'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('tryStmt0')"><a name="tryStmt0Anchor">tryStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXTryStmt.html">CXXTryStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="tryStmt0"><pre>Matches try statements.
-
-  try {} catch(int i) {}
-tryStmt()
-  matches 'try {}'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('unaryExprOrTypeTraitExpr0')"><a name="unaryExprOrTypeTraitExpr0Anchor">unaryExprOrTypeTraitExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="unaryExprOrTypeTraitExpr0"><pre>Matches sizeof (C99), alignof (C++11) and vec_step (OpenCL)
-
-Given
-  Foo x = bar;
-  int y = sizeof(x) + alignof(x);
-unaryExprOrTypeTraitExpr()
-  matches sizeof(x) and alignof(x)
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('unaryOperator0')"><a name="unaryOperator0Anchor">unaryOperator</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryOperator.html">UnaryOperator</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="unaryOperator0"><pre>Matches unary operator expressions.
-
-Example matches !a
-  !a || b
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('userDefinedLiteral0')"><a name="userDefinedLiteral0Anchor">userDefinedLiteral</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UserDefinedLiteral.html">UserDefinedLiteral</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="userDefinedLiteral0"><pre>Matches user defined literal operator call.
-
-Example match: "foo"_suffix
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('whileStmt0')"><a name="whileStmt0Anchor">whileStmt</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1WhileStmt.html">WhileStmt</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="whileStmt0"><pre>Matches while statements.
-
-Given
-  while (true) {}
-whileStmt()
-  matches 'while (true) {}'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('arrayTypeLoc0')"><a name="arrayTypeLoc0Anchor">arrayTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArrayTypeLoc.html">ArrayTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="arrayTypeLoc0"><pre>Matches all kinds of arrays.
-
-Given
-  int a[] = { 2, 3 };
-  int b[4];
-  void f() { int c[a[0]]; }
-arrayType()
-  matches "int a[]", "int b[4]" and "int c[a[0]]";
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('atomicTypeLoc0')"><a name="atomicTypeLoc0Anchor">atomicTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AtomicTypeLoc.html">AtomicTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="atomicTypeLoc0"><pre>Matches atomic types.
-
-Given
-  _Atomic(int) i;
-atomicType()
-  matches "_Atomic(int) i"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('autoTypeLoc0')"><a name="autoTypeLoc0Anchor">autoTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AutoTypeLoc.html">AutoTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="autoTypeLoc0"><pre>Matches types nodes representing C++11 auto types.
-
-Given:
-  auto n = 4;
-  int v[] = { 2, 3 }
-  for (auto i : v) { }
-autoType()
-  matches "auto n" and "auto i"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('blockPointerTypeLoc0')"><a name="blockPointerTypeLoc0Anchor">blockPointerTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerTypeLoc.html">BlockPointerTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="blockPointerTypeLoc0"><pre>Matches block pointer types, i.e. types syntactically represented as
-"void (^)(int)".
-
-The pointee is always required to be a FunctionType.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('builtinTypeLoc0')"><a name="builtinTypeLoc0Anchor">builtinTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BuiltinTypeLoc.html">BuiltinTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="builtinTypeLoc0"><pre>Matches builtin Types.
-
-Given
-  struct A {};
-  A a;
-  int b;
-  float c;
-  bool d;
-builtinType()
-  matches "int b", "float c" and "bool d"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('complexTypeLoc0')"><a name="complexTypeLoc0Anchor">complexTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ComplexTypeLoc.html">ComplexTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="complexTypeLoc0"><pre>Matches C99 complex types.
-
-Given
-  _Complex float f;
-complexType()
-  matches "_Complex float f"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('constantArrayTypeLoc0')"><a name="constantArrayTypeLoc0Anchor">constantArrayTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ConstantArrayTypeLoc.html">ConstantArrayTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="constantArrayTypeLoc0"><pre>Matches C arrays with a specified constant size.
-
-Given
-  void() {
-    int a[2];
-    int b[] = { 2, 3 };
-    int c[b[0]];
-  }
-constantArrayType()
-  matches "int a[2]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('dependentSizedArrayTypeLoc0')"><a name="dependentSizedArrayTypeLoc0Anchor">dependentSizedArrayTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DependentSizedArrayTypeLoc.html">DependentSizedArrayTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="dependentSizedArrayTypeLoc0"><pre>Matches C++ arrays whose size is a value-dependent expression.
-
-Given
-  template<typename T, int Size>
-  class array {
-    T data[Size];
-  };
-dependentSizedArrayType
-  matches "T data[Size]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('elaboratedTypeLoc0')"><a name="elaboratedTypeLoc0Anchor">elaboratedTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ElaboratedTypeLoc.html">ElaboratedTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="elaboratedTypeLoc0"><pre>Matches types specified with an elaborated type keyword or with a
-qualified name.
-
-Given
-  namespace N {
-    namespace M {
-      class D {};
-    }
-  }
-  class C {};
-
-  class C c;
-  N::M::D d;
-
-elaboratedType() matches the type of the variable declarations of both
-c and d.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('functionTypeLoc0')"><a name="functionTypeLoc0Anchor">functionTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionTypeLoc.html">FunctionTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="functionTypeLoc0"><pre>Matches FunctionType nodes.
-
-Given
-  int (*f)(int);
-  void g();
-functionType()
-  matches "int (*f)(int)" and the type of "g".
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('incompleteArrayTypeLoc0')"><a name="incompleteArrayTypeLoc0Anchor">incompleteArrayTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IncompleteArrayTypeLoc.html">IncompleteArrayTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="incompleteArrayTypeLoc0"><pre>Matches C arrays with unspecified size.
-
-Given
-  int a[] = { 2, 3 };
-  int b[42];
-  void f(int c[]) { int d[a[0]]; };
-incompleteArrayType()
-  matches "int a[]" and "int c[]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('lValueReferenceTypeLoc0')"><a name="lValueReferenceTypeLoc0Anchor">lValueReferenceTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1LValueReferenceTypeLoc.html">LValueReferenceTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="lValueReferenceTypeLoc0"><pre>Matches lvalue reference types.
-
-Given:
-  int *a;
-  int &b = *a;
-  int &&c = 1;
-  auto &d = b;
-  auto &&e = c;
-  auto &&f = 2;
-  int g = 5;
-
-lValueReferenceType() matches the types of b, d, and e. e is
-matched since the type is deduced as int& by reference collapsing rules.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('memberPointerTypeLoc0')"><a name="memberPointerTypeLoc0Anchor">memberPointerTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerTypeLoc.html">MemberPointerTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="memberPointerTypeLoc0"><pre>Matches member pointer types.
-Given
-  struct A { int i; }
-  A::* ptr = A::i;
-memberPointerType()
-  matches "A::* ptr"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('parenTypeLoc0')"><a name="parenTypeLoc0Anchor">parenTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ParenTypeLoc.html">ParenTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="parenTypeLoc0"><pre>Matches ParenType nodes.
-
-Given
-  int (*ptr_to_array)[4];
-  int *array_of_ptrs[4];
-
-varDecl(hasType(pointsTo(parenType()))) matches ptr_to_array but not
-array_of_ptrs.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('pointerTypeLoc0')"><a name="pointerTypeLoc0Anchor">pointerTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerTypeLoc.html">PointerTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="pointerTypeLoc0"><pre>Matches pointer types.
-
-Given
-  int *a;
-  int &b = *a;
-  int c = 5;
-pointerType()
-  matches "int *a"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('rValueReferenceTypeLoc0')"><a name="rValueReferenceTypeLoc0Anchor">rValueReferenceTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1RValueReferenceTypeLoc.html">RValueReferenceTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="rValueReferenceTypeLoc0"><pre>Matches rvalue reference types.
-
-Given:
-  int *a;
-  int &b = *a;
-  int &&c = 1;
-  auto &d = b;
-  auto &&e = c;
-  auto &&f = 2;
-  int g = 5;
-
-rValueReferenceType() matches the types of c and f. e is not
-matched as it is deduced to int& by reference collapsing rules.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('recordTypeLoc0')"><a name="recordTypeLoc0Anchor">recordTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordTypeLoc.html">RecordTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="recordTypeLoc0"><pre>Matches record types (e.g. structs, classes).
-
-Given
-  class C {};
-  struct S {};
-
-  C c;
-  S s;
-
-recordType() matches the type of the variable declarations of both c
-and s.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('referenceTypeLoc0')"><a name="referenceTypeLoc0Anchor">referenceTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceTypeLoc.html">ReferenceTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="referenceTypeLoc0"><pre>Matches both lvalue and rvalue reference types.
-
-Given
-  int *a;
-  int &b = *a;
-  int &&c = 1;
-  auto &d = b;
-  auto &&e = c;
-  auto &&f = 2;
-  int g = 5;
-
-referenceType() matches the types of b, c, d, e, and f.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('templateSpecializationTypeLoc0')"><a name="templateSpecializationTypeLoc0Anchor">templateSpecializationTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationTypeLoc.html">TemplateSpecializationTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="templateSpecializationTypeLoc0"><pre>Matches template specialization types.
-
-Given
-  template <typename T>
-  class C { };
-
-  template class C<int>;  A
-  C<char> var;            B
-
-templateSpecializationType() matches the type of the explicit
-instantiation in A and the type of the variable declaration in B.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('typeLoc0')"><a name="typeLoc0Anchor">typeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="typeLoc0"><pre>Matches TypeLocs in the clang AST.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('typedefTypeLoc0')"><a name="typedefTypeLoc0Anchor">typedefTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefTypeLoc.html">TypedefTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="typedefTypeLoc0"><pre>Matches typedef types.
-
-Given
-  typedef int X;
-typedefType()
-  matches "typedef int X"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('variableArrayTypeLoc0')"><a name="variableArrayTypeLoc0Anchor">variableArrayTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VariableArrayTypeLoc.html">VariableArrayTypeLoc</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="variableArrayTypeLoc0"><pre>Matches C arrays with a specified size that is not an
-integer-constant-expression.
-
-Given
-  void f() {
-    int a[] = { 2, 3 }
-    int b[42];
-    int c[a[0]];
-variableArrayType()
-  matches "int c[a[0]]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('arrayType0')"><a name="arrayType0Anchor">arrayType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArrayType.html">ArrayType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="arrayType0"><pre>Matches all kinds of arrays.
-
-Given
-  int a[] = { 2, 3 };
-  int b[4];
-  void f() { int c[a[0]]; }
-arrayType()
-  matches "int a[]", "int b[4]" and "int c[a[0]]";
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('atomicType0')"><a name="atomicType0Anchor">atomicType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AtomicType.html">AtomicType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="atomicType0"><pre>Matches atomic types.
-
-Given
-  _Atomic(int) i;
-atomicType()
-  matches "_Atomic(int) i"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('autoType0')"><a name="autoType0Anchor">autoType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AutoType.html">AutoType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="autoType0"><pre>Matches types nodes representing C++11 auto types.
-
-Given:
-  auto n = 4;
-  int v[] = { 2, 3 }
-  for (auto i : v) { }
-autoType()
-  matches "auto n" and "auto i"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('blockPointerType0')"><a name="blockPointerType0Anchor">blockPointerType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="blockPointerType0"><pre>Matches block pointer types, i.e. types syntactically represented as
-"void (^)(int)".
-
-The pointee is always required to be a FunctionType.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('builtinType0')"><a name="builtinType0Anchor">builtinType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BuiltinType.html">BuiltinType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="builtinType0"><pre>Matches builtin Types.
-
-Given
-  struct A {};
-  A a;
-  int b;
-  float c;
-  bool d;
-builtinType()
-  matches "int b", "float c" and "bool d"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('complexType0')"><a name="complexType0Anchor">complexType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ComplexType.html">ComplexType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="complexType0"><pre>Matches C99 complex types.
-
-Given
-  _Complex float f;
-complexType()
-  matches "_Complex float f"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('constantArrayType0')"><a name="constantArrayType0Anchor">constantArrayType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ConstantArrayType.html">ConstantArrayType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="constantArrayType0"><pre>Matches C arrays with a specified constant size.
-
-Given
-  void() {
-    int a[2];
-    int b[] = { 2, 3 };
-    int c[b[0]];
-  }
-constantArrayType()
-  matches "int a[2]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('dependentSizedArrayType0')"><a name="dependentSizedArrayType0Anchor">dependentSizedArrayType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DependentSizedArrayType.html">DependentSizedArrayType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="dependentSizedArrayType0"><pre>Matches C++ arrays whose size is a value-dependent expression.
-
-Given
-  template<typename T, int Size>
-  class array {
-    T data[Size];
-  };
-dependentSizedArrayType
-  matches "T data[Size]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('elaboratedType0')"><a name="elaboratedType0Anchor">elaboratedType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ElaboratedType.html">ElaboratedType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="elaboratedType0"><pre>Matches types specified with an elaborated type keyword or with a
-qualified name.
-
-Given
-  namespace N {
-    namespace M {
-      class D {};
-    }
-  }
-  class C {};
-
-  class C c;
-  N::M::D d;
-
-elaboratedType() matches the type of the variable declarations of both
-c and d.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('functionType0')"><a name="functionType0Anchor">functionType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionType.html">FunctionType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="functionType0"><pre>Matches FunctionType nodes.
-
-Given
-  int (*f)(int);
-  void g();
-functionType()
-  matches "int (*f)(int)" and the type of "g".
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('incompleteArrayType0')"><a name="incompleteArrayType0Anchor">incompleteArrayType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IncompleteArrayType.html">IncompleteArrayType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="incompleteArrayType0"><pre>Matches C arrays with unspecified size.
-
-Given
-  int a[] = { 2, 3 };
-  int b[42];
-  void f(int c[]) { int d[a[0]]; };
-incompleteArrayType()
-  matches "int a[]" and "int c[]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('lValueReferenceType0')"><a name="lValueReferenceType0Anchor">lValueReferenceType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1LValueReferenceType.html">LValueReferenceType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="lValueReferenceType0"><pre>Matches lvalue reference types.
-
-Given:
-  int *a;
-  int &b = *a;
-  int &&c = 1;
-  auto &d = b;
-  auto &&e = c;
-  auto &&f = 2;
-  int g = 5;
-
-lValueReferenceType() matches the types of b, d, and e. e is
-matched since the type is deduced as int& by reference collapsing rules.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('memberPointerType0')"><a name="memberPointerType0Anchor">memberPointerType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="memberPointerType0"><pre>Matches member pointer types.
-Given
-  struct A { int i; }
-  A::* ptr = A::i;
-memberPointerType()
-  matches "A::* ptr"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('parenType0')"><a name="parenType0Anchor">parenType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ParenType.html">ParenType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="parenType0"><pre>Matches ParenType nodes.
-
-Given
-  int (*ptr_to_array)[4];
-  int *array_of_ptrs[4];
-
-varDecl(hasType(pointsTo(parenType()))) matches ptr_to_array but not
-array_of_ptrs.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('pointerType0')"><a name="pointerType0Anchor">pointerType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="pointerType0"><pre>Matches pointer types.
-
-Given
-  int *a;
-  int &b = *a;
-  int c = 5;
-pointerType()
-  matches "int *a"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('rValueReferenceType0')"><a name="rValueReferenceType0Anchor">rValueReferenceType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1RValueReferenceType.html">RValueReferenceType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="rValueReferenceType0"><pre>Matches rvalue reference types.
-
-Given:
-  int *a;
-  int &b = *a;
-  int &&c = 1;
-  auto &d = b;
-  auto &&e = c;
-  auto &&f = 2;
-  int g = 5;
-
-rValueReferenceType() matches the types of c and f. e is not
-matched as it is deduced to int& by reference collapsing rules.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('recordType0')"><a name="recordType0Anchor">recordType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="recordType0"><pre>Matches record types (e.g. structs, classes).
-
-Given
-  class C {};
-  struct S {};
-
-  C c;
-  S s;
-
-recordType() matches the type of the variable declarations of both c
-and s.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('referenceType0')"><a name="referenceType0Anchor">referenceType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="referenceType0"><pre>Matches both lvalue and rvalue reference types.
-
-Given
-  int *a;
-  int &b = *a;
-  int &&c = 1;
-  auto &d = b;
-  auto &&e = c;
-  auto &&f = 2;
-  int g = 5;
-
-referenceType() matches the types of b, c, d, e, and f.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('templateSpecializationType0')"><a name="templateSpecializationType0Anchor">templateSpecializationType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="templateSpecializationType0"><pre>Matches template specialization types.
-
-Given
-  template <typename T>
-  class C { };
-
-  template class C<int>;  A
-  C<char> var;            B
-
-templateSpecializationType() matches the type of the explicit
-instantiation in A and the type of the variable declaration in B.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('type0')"><a name="type0Anchor">type</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="type0"><pre>Matches Types in the clang AST.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('typedefType0')"><a name="typedefType0Anchor">typedefType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="typedefType0"><pre>Matches typedef types.
-
-Given
-  typedef int X;
-typedefType()
-  matches "typedef int X"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td><td class="name" onclick="toggle('variableArrayType0')"><a name="variableArrayType0Anchor">variableArrayType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VariableArrayType.html">VariableArrayType</a>>...</td></tr>
-<tr><td colspan="4" class="doc" id="variableArrayType0"><pre>Matches C arrays with a specified size that is not an
-integer-constant-expression.
-
-Given
-  void f() {
-    int a[] = { 2, 3 }
-    int b[42];
-    int c[a[0]];
-variableArrayType()
-  matches "int c[a[0]]"
-</pre></td></tr>
-
-<!--END_DECL_MATCHERS -->
-</table>
-
-<!-- ======================================================================= -->
-<h2 id="narrowing-matchers">Narrowing Matchers</h2>
-<!-- ======================================================================= -->
-
-<p>Narrowing matchers match certain attributes on the current node, thus
-narrowing down the set of nodes of the current type to match on.</p>
-
-<p>There are special logical narrowing matchers (allOf, anyOf, anything and unless)
-which allow users to create more powerful match expressions.</p>
-
-<table>
-<tr style="text-align:left"><th>Return type</th><th>Name</th><th>Parameters</th></tr>
-<!-- START_NARROWING_MATCHERS -->
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('allOf0')"><a name="allOf0Anchor">allOf</a></td><td>Matcher<*>  P1, Matcher<*>  P2</td></tr>
-<tr><td colspan="4" class="doc" id="allOf0"><pre>Matches if all given matchers match.
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('anyOf0')"><a name="anyOf0Anchor">anyOf</a></td><td>Matcher<*>  P1, Matcher<*>  P2</td></tr>
-<tr><td colspan="4" class="doc" id="anyOf0"><pre>Matches if any of the given matchers matches.
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('anything0')"><a name="anything0Anchor">anything</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="anything0"><pre>Matches any node.
-
-Useful when another matcher requires a child matcher, but there's no
-additional constraint. This will often be used with an explicit conversion
-to an internal::Matcher<> type such as TypeMatcher.
-
-Example: DeclarationMatcher(anything()) matches all declarations, e.g.,
-"int* p" and "void f()" in
-  int* p;
-  void f();
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('unless0')"><a name="unless0Anchor">unless</a></td><td>Matcher<*>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="unless0"><pre>Matches if the provided matcher does not match.
-
-Example matches Y (matcher = recordDecl(unless(hasName("X"))))
-  class X {};
-  class Y {};
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BinaryOperator.html">BinaryOperator</a>></td><td class="name" onclick="toggle('hasOperatorName0')"><a name="hasOperatorName0Anchor">hasOperatorName</a></td><td>std::string Name</td></tr>
-<tr><td colspan="4" class="doc" id="hasOperatorName0"><pre>Matches the operator Name of operator expressions (binary or
-unary).
-
-Example matches a || b (matcher = binaryOperator(hasOperatorName("||")))
-  !(a || b)
-</pre></td></tr>
-
-
-<tr><td>Matcher<CXXBoolLiteral></td><td class="name" onclick="toggle('equals2')"><a name="equals2Anchor">equals</a></td><td>ValueT  Value</td></tr>
-<tr><td colspan="4" class="doc" id="equals2"><pre>Matches literals that are equal to the given value.
-
-Example matches true (matcher = boolLiteral(equals(true)))
-  true
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CharacterLiteral.html">CharacterLiteral</a>>, Matcher<CXXBoolLiteral>,
-           Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FloatingLiteral.html">FloatingLiteral</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IntegerLiteral.html">IntegerLiteral</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructorDecl.html">CXXConstructorDecl</a>></td><td class="name" onclick="toggle('isImplicit0')"><a name="isImplicit0Anchor">isImplicit</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isImplicit0"><pre>Matches a constructor declaration that has been implicitly added
-by the compiler (eg. implicit defaultcopy constructors).
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXCtorInitializer.html">CXXCtorInitializer</a>></td><td class="name" onclick="toggle('isWritten0')"><a name="isWritten0Anchor">isWritten</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isWritten0"><pre>Matches a contructor initializer if it is explicitly written in
-code (as opposed to implicitly added by the compiler).
-
-Given
-  struct Foo {
-    Foo() { }
-    Foo(int) : foo_("A") { }
-    string foo_;
-  };
-constructorDecl(hasAnyConstructorInitializer(isWritten()))
-  will match Foo(int), but not Foo()
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>></td><td class="name" onclick="toggle('hasOverloadedOperatorName0')"><a name="hasOverloadedOperatorName0Anchor">hasOverloadedOperatorName</a></td><td>StringRef Name</td></tr>
-<tr><td colspan="4" class="doc" id="hasOverloadedOperatorName0"><pre>Matches overloaded operator names.
-
-Matches overloaded operator names specified in strings without the
-"operator" prefix: e.g. "<<".
-
-Given:
-  class A { int operator*(); };
-  const A &operator<<(const A &a, const A &b);
-  A a;
-  a << a;   <-- This matches
-
-operatorCallExpr(hasOverloadedOperatorName("<<"))) matches the specified
-line and recordDecl(hasMethod(hasOverloadedOperatorName("*"))) matches
-the declaration of A.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXOperatorCallExpr.html">CXXOperatorCallExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>></td><td class="name" onclick="toggle('isOverride0')"><a name="isOverride0Anchor">isOverride</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isOverride0"><pre>Matches if the given method declaration overrides another method.
-
-Given
-  class A {
-   public:
-    virtual void x();
-  };
-  class B : public A {
-   public:
-    virtual void x();
-  };
-  matches B::x
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>></td><td class="name" onclick="toggle('isVirtual0')"><a name="isVirtual0Anchor">isVirtual</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isVirtual0"><pre>Matches if the given method declaration is virtual.
-
-Given
-  class A {
-   public:
-    virtual void x();
-  };
-  matches A::x
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXOperatorCallExpr.html">CXXOperatorCallExpr</a>></td><td class="name" onclick="toggle('hasOverloadedOperatorName1')"><a name="hasOverloadedOperatorName1Anchor">hasOverloadedOperatorName</a></td><td>StringRef Name</td></tr>
-<tr><td colspan="4" class="doc" id="hasOverloadedOperatorName1"><pre>Matches overloaded operator names.
-
-Matches overloaded operator names specified in strings without the
-"operator" prefix: e.g. "<<".
-
-Given:
-  class A { int operator*(); };
-  const A &operator<<(const A &a, const A &b);
-  A a;
-  a << a;   <-- This matches
-
-operatorCallExpr(hasOverloadedOperatorName("<<"))) matches the specified
-line and recordDecl(hasMethod(hasOverloadedOperatorName("*"))) matches
-the declaration of A.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXOperatorCallExpr.html">CXXOperatorCallExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>></td><td class="name" onclick="toggle('isDerivedFrom1')"><a name="isDerivedFrom1Anchor">isDerivedFrom</a></td><td>StringRef BaseName</td></tr>
-<tr><td colspan="4" class="doc" id="isDerivedFrom1"><pre>Overloaded method as shortcut for isDerivedFrom(hasName(...)).
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>></td><td class="name" onclick="toggle('isExplicitTemplateSpecialization2')"><a name="isExplicitTemplateSpecialization2Anchor">isExplicitTemplateSpecialization</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isExplicitTemplateSpecialization2"><pre>Matches explicit template specializations of function, class, or
-static member variable template instantiations.
-
-Given
-  template<typename T> void A(T t) { }
-  template<> void A(int N) { }
-functionDecl(isExplicitTemplateSpecialization())
-  matches the specialization A<int>().
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>></td><td class="name" onclick="toggle('isSameOrDerivedFrom1')"><a name="isSameOrDerivedFrom1Anchor">isSameOrDerivedFrom</a></td><td>StringRef BaseName</td></tr>
-<tr><td colspan="4" class="doc" id="isSameOrDerivedFrom1"><pre>Overloaded method as shortcut for
-isSameOrDerivedFrom(hasName(...)).
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>></td><td class="name" onclick="toggle('isTemplateInstantiation2')"><a name="isTemplateInstantiation2Anchor">isTemplateInstantiation</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isTemplateInstantiation2"><pre>Matches template instantiations of function, class, or static
-member variable template instantiations.
-
-Given
-  template <typename T> class X {}; class A {}; X<A> x;
-or
-  template <typename T> class X {}; class A {}; template class X<A>;
-recordDecl(hasName("::X"), isTemplateInstantiation())
-  matches the template instantiation of X<A>.
-
-But given
-  template <typename T>  class X {}; class A {};
-  template <> class X<A> {}; X<A> x;
-recordDecl(hasName("::X"), isTemplateInstantiation())
-  does not match, as X<A> is an explicit template specialization.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>></td><td class="name" onclick="toggle('argumentCountIs0')"><a name="argumentCountIs0Anchor">argumentCountIs</a></td><td>unsigned N</td></tr>
-<tr><td colspan="4" class="doc" id="argumentCountIs0"><pre>Checks that a call expression or a constructor call expression has
-a specific number of arguments (including absent default arguments).
-
-Example matches f(0, 0) (matcher = callExpr(argumentCountIs(2)))
-  void f(int x, int y);
-  f(0, 0);
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CharacterLiteral.html">CharacterLiteral</a>></td><td class="name" onclick="toggle('equals3')"><a name="equals3Anchor">equals</a></td><td>ValueT  Value</td></tr>
-<tr><td colspan="4" class="doc" id="equals3"><pre>Matches literals that are equal to the given value.
-
-Example matches true (matcher = boolLiteral(equals(true)))
-  true
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CharacterLiteral.html">CharacterLiteral</a>>, Matcher<CXXBoolLiteral>,
-           Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FloatingLiteral.html">FloatingLiteral</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IntegerLiteral.html">IntegerLiteral</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CompoundStmt.html">CompoundStmt</a>></td><td class="name" onclick="toggle('statementCountIs0')"><a name="statementCountIs0Anchor">statementCountIs</a></td><td>unsigned N</td></tr>
-<tr><td colspan="4" class="doc" id="statementCountIs0"><pre>Checks that a compound statement contains a specific number of
-child statements.
-
-Example: Given
-  { for (;;) {} }
-compoundStmt(statementCountIs(0)))
-  matches '{}'
-  but does not match the outer compound statement.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ConstantArrayType.html">ConstantArrayType</a>></td><td class="name" onclick="toggle('hasSize0')"><a name="hasSize0Anchor">hasSize</a></td><td>unsigned N</td></tr>
-<tr><td colspan="4" class="doc" id="hasSize0"><pre>Matches ConstantArrayType nodes that have the specified size.
-
-Given
-  int a[42];
-  int b[2 * 21];
-  int c[41], d[43];
-constantArrayType(hasSize(42))
-  matches "int a[42]" and "int b[2 * 21]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclStmt.html">DeclStmt</a>></td><td class="name" onclick="toggle('declCountIs0')"><a name="declCountIs0Anchor">declCountIs</a></td><td>unsigned N</td></tr>
-<tr><td colspan="4" class="doc" id="declCountIs0"><pre>Matches declaration statements that contain a specific number of
-declarations.
-
-Example: Given
-  int a, b;
-  int c;
-  int d = 2, e;
-declCountIs(2)
-  matches 'int a, b;' and 'int d = 2, e;', but not 'int c;'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('equalsNode0')"><a name="equalsNode0Anchor">equalsNode</a></td><td>Decl* Other</td></tr>
-<tr><td colspan="4" class="doc" id="equalsNode0"><pre>Matches if a node equals another node.
-
-Decl has pointer identity in the AST.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('isPrivate0')"><a name="isPrivate0Anchor">isPrivate</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isPrivate0"><pre>Matches private C++ declarations.
-
-Given
-  class C {
-  public:    int a;
-  protected: int b;
-  private:   int c;
-  };
-fieldDecl(isPrivate())
-  matches 'int c;' 
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('isProtected0')"><a name="isProtected0Anchor">isProtected</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isProtected0"><pre>Matches protected C++ declarations.
-
-Given
-  class C {
-  public:    int a;
-  protected: int b;
-  private:   int c;
-  };
-fieldDecl(isProtected())
-  matches 'int b;' 
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('isPublic0')"><a name="isPublic0Anchor">isPublic</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isPublic0"><pre>Matches public C++ declarations.
-
-Given
-  class C {
-  public:    int a;
-  protected: int b;
-  private:   int c;
-  };
-fieldDecl(isPublic())
-  matches 'int a;' 
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FloatingLiteral.html">FloatingLiteral</a>></td><td class="name" onclick="toggle('equals1')"><a name="equals1Anchor">equals</a></td><td>ValueT  Value</td></tr>
-<tr><td colspan="4" class="doc" id="equals1"><pre>Matches literals that are equal to the given value.
-
-Example matches true (matcher = boolLiteral(equals(true)))
-  true
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CharacterLiteral.html">CharacterLiteral</a>>, Matcher<CXXBoolLiteral>,
-           Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FloatingLiteral.html">FloatingLiteral</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IntegerLiteral.html">IntegerLiteral</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('isDefinition2')"><a name="isDefinition2Anchor">isDefinition</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isDefinition2"><pre>Matches if a declaration has a body attached.
-
-Example matches A, va, fa
-  class A {};
-  class B;  Doesn't match, as it has no body.
-  int va;
-  extern int vb;  Doesn't match, as it doesn't define the variable.
-  void fa() {}
-  void fb();  Doesn't match, as it has no body.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TagDecl.html">TagDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('isExplicitTemplateSpecialization0')"><a name="isExplicitTemplateSpecialization0Anchor">isExplicitTemplateSpecialization</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isExplicitTemplateSpecialization0"><pre>Matches explicit template specializations of function, class, or
-static member variable template instantiations.
-
-Given
-  template<typename T> void A(T t) { }
-  template<> void A(int N) { }
-functionDecl(isExplicitTemplateSpecialization())
-  matches the specialization A<int>().
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('isExternC0')"><a name="isExternC0Anchor">isExternC</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isExternC0"><pre>Matches extern "C" function declarations.
-
-Given:
-  extern "C" void f() {}
-  extern "C" { void g() {} }
-  void h() {}
-functionDecl(isExternC())
-  matches the declaration of f and g, but not the declaration h
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('isTemplateInstantiation0')"><a name="isTemplateInstantiation0Anchor">isTemplateInstantiation</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isTemplateInstantiation0"><pre>Matches template instantiations of function, class, or static
-member variable template instantiations.
-
-Given
-  template <typename T> class X {}; class A {}; X<A> x;
-or
-  template <typename T> class X {}; class A {}; template class X<A>;
-recordDecl(hasName("::X"), isTemplateInstantiation())
-  matches the template instantiation of X<A>.
-
-But given
-  template <typename T>  class X {}; class A {};
-  template <> class X<A> {}; X<A> x;
-recordDecl(hasName("::X"), isTemplateInstantiation())
-  does not match, as X<A> is an explicit template specialization.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('parameterCountIs0')"><a name="parameterCountIs0Anchor">parameterCountIs</a></td><td>unsigned N</td></tr>
-<tr><td colspan="4" class="doc" id="parameterCountIs0"><pre>Matches FunctionDecls that have a specific parameter count.
-
-Given
-  void f(int i) {}
-  void g(int i, int j) {}
-functionDecl(parameterCountIs(2))
-  matches g(int i, int j) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IntegerLiteral.html">IntegerLiteral</a>></td><td class="name" onclick="toggle('equals0')"><a name="equals0Anchor">equals</a></td><td>ValueT  Value</td></tr>
-<tr><td colspan="4" class="doc" id="equals0"><pre>Matches literals that are equal to the given value.
-
-Example matches true (matcher = boolLiteral(equals(true)))
-  true
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CharacterLiteral.html">CharacterLiteral</a>>, Matcher<CXXBoolLiteral>,
-           Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FloatingLiteral.html">FloatingLiteral</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IntegerLiteral.html">IntegerLiteral</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>></td><td class="name" onclick="toggle('isArrow0')"><a name="isArrow0Anchor">isArrow</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isArrow0"><pre>Matches member expressions that are called with '->' as opposed
-to '.'.
-
-Member calls on the implicit this pointer match as called with '->'.
-
-Given
-  class Y {
-    void x() { this->x(); x(); Y y; y.x(); a; this->b; Y::b; }
-    int a;
-    static int b;
-  };
-memberExpr(isArrow())
-  matches this->x, x, y.x, a, this->b
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html">NamedDecl</a>></td><td class="name" onclick="toggle('hasName0')"><a name="hasName0Anchor">hasName</a></td><td>std::string Name</td></tr>
-<tr><td colspan="4" class="doc" id="hasName0"><pre>Matches NamedDecl nodes that have the specified name.
-
-Supports specifying enclosing namespaces or classes by prefixing the name
-with '<enclosing>::'.
-Does not match typedefs of an underlying type with the given name.
-
-Example matches X (Name == "X")
-  class X;
-
-Example matches X (Name is one of "::a::b::X", "a::b::X", "b::X", "X")
-  namespace a { namespace b { class X; } }
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html">NamedDecl</a>></td><td class="name" onclick="toggle('matchesName0')"><a name="matchesName0Anchor">matchesName</a></td><td>std::string RegExp</td></tr>
-<tr><td colspan="4" class="doc" id="matchesName0"><pre>Matches NamedDecl nodes whose fully qualified names contain
-a substring matched by the given RegExp.
-
-Supports specifying enclosing namespaces or classes by
-prefixing the name with '<enclosing>::'.  Does not match typedefs
-of an underlying type with the given name.
-
-Example matches X (regexp == "::X")
-  class X;
-
-Example matches X (regexp is one of "::X", "^foo::.*X", among others)
-  namespace foo { namespace bar { class X; } }
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('asString0')"><a name="asString0Anchor">asString</a></td><td>std::string Name</td></tr>
-<tr><td colspan="4" class="doc" id="asString0"><pre>Matches if the matched type is represented by the given string.
-
-Given
-  class Y { public: void x(); };
-  void z() { Y* y; y->x(); }
-callExpr(on(hasType(asString("class Y *"))))
-  matches y->x()
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('hasLocalQualifiers0')"><a name="hasLocalQualifiers0Anchor">hasLocalQualifiers</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="hasLocalQualifiers0"><pre>Matches QualType nodes that have local CV-qualifiers attached to
-the node, not hidden within a typedef.
-
-Given
-  typedef const int const_int;
-  const_int i;
-  int *const j;
-  int *volatile k;
-  int m;
-varDecl(hasType(hasLocalQualifiers())) matches only j and k.
-i is const-qualified but the qualifier is not local.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('isConstQualified0')"><a name="isConstQualified0Anchor">isConstQualified</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isConstQualified0"><pre>Matches QualType nodes that are const-qualified, i.e., that
-include "top-level" const.
-
-Given
-  void a(int);
-  void b(int const);
-  void c(const int);
-  void d(const int*);
-  void e(int const) {};
-functionDecl(hasAnyParameter(hasType(isConstQualified())))
-  matches "void b(int const)", "void c(const int)" and
-  "void e(int const) {}". It does not match d as there
-  is no top-level const on the parameter type "const int *".
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('isInteger0')"><a name="isInteger0Anchor">isInteger</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isInteger0"><pre>Matches QualType nodes that are of integer type.
-
-Given
-  void a(int);
-  void b(long);
-  void c(double);
-functionDecl(hasAnyParameter(hasType(isInteger())))
-matches "a(int)", "b(long)", but not "c(double)".
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('equalsNode1')"><a name="equalsNode1Anchor">equalsNode</a></td><td>Stmt* Other</td></tr>
-<tr><td colspan="4" class="doc" id="equalsNode1"><pre>Matches if a node equals another node.
-
-Stmt has pointer identity in the AST.
-
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TagDecl.html">TagDecl</a>></td><td class="name" onclick="toggle('isDefinition0')"><a name="isDefinition0Anchor">isDefinition</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isDefinition0"><pre>Matches if a declaration has a body attached.
-
-Example matches A, va, fa
-  class A {};
-  class B;  Doesn't match, as it has no body.
-  int va;
-  extern int vb;  Doesn't match, as it doesn't define the variable.
-  void fa() {}
-  void fb();  Doesn't match, as it has no body.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TagDecl.html">TagDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a>></td><td class="name" onclick="toggle('ofKind0')"><a name="ofKind0Anchor">ofKind</a></td><td>UnaryExprOrTypeTrait Kind</td></tr>
-<tr><td colspan="4" class="doc" id="ofKind0"><pre>Matches unary expressions of a certain kind.
-
-Given
-  int x;
-  int s = sizeof(x) + alignof(x)
-unaryExprOrTypeTraitExpr(ofKind(UETT_SizeOf))
-  matches sizeof(x)
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryOperator.html">UnaryOperator</a>></td><td class="name" onclick="toggle('hasOperatorName1')"><a name="hasOperatorName1Anchor">hasOperatorName</a></td><td>std::string Name</td></tr>
-<tr><td colspan="4" class="doc" id="hasOperatorName1"><pre>Matches the operator Name of operator expressions (binary or
-unary).
-
-Example matches a || b (matcher = binaryOperator(hasOperatorName("||")))
-  !(a || b)
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>></td><td class="name" onclick="toggle('isDefinition1')"><a name="isDefinition1Anchor">isDefinition</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isDefinition1"><pre>Matches if a declaration has a body attached.
-
-Example matches A, va, fa
-  class A {};
-  class B;  Doesn't match, as it has no body.
-  int va;
-  extern int vb;  Doesn't match, as it doesn't define the variable.
-  void fa() {}
-  void fb();  Doesn't match, as it has no body.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TagDecl.html">TagDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>></td><td class="name" onclick="toggle('isExplicitTemplateSpecialization1')"><a name="isExplicitTemplateSpecialization1Anchor">isExplicitTemplateSpecialization</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isExplicitTemplateSpecialization1"><pre>Matches explicit template specializations of function, class, or
-static member variable template instantiations.
-
-Given
-  template<typename T> void A(T t) { }
-  template<> void A(int N) { }
-functionDecl(isExplicitTemplateSpecialization())
-  matches the specialization A<int>().
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>></td><td class="name" onclick="toggle('isTemplateInstantiation1')"><a name="isTemplateInstantiation1Anchor">isTemplateInstantiation</a></td><td></td></tr>
-<tr><td colspan="4" class="doc" id="isTemplateInstantiation1"><pre>Matches template instantiations of function, class, or static
-member variable template instantiations.
-
-Given
-  template <typename T> class X {}; class A {}; X<A> x;
-or
-  template <typename T> class X {}; class A {}; template class X<A>;
-recordDecl(hasName("::X"), isTemplateInstantiation())
-  matches the template instantiation of X<A>.
-
-But given
-  template <typename T>  class X {}; class A {};
-  template <> class X<A> {}; X<A> x;
-recordDecl(hasName("::X"), isTemplateInstantiation())
-  does not match, as X<A> is an explicit template specialization.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>>
-</pre></td></tr>
-
-<!--END_NARROWING_MATCHERS -->
-</table>
-
-<!-- ======================================================================= -->
-<h2 id="traversal-matchers">AST Traversal Matchers</h2>
-<!-- ======================================================================= -->
-
-<p>Traversal matchers specify the relationship to other nodes that are
-reachable from the current node.</p>
-
-<p>Note that there are special traversal matchers (has, hasDescendant, forEach and
-forEachDescendant) which work on all nodes and allow users to write more generic
-match expressions.</p>
-
-<table>
-<tr style="text-align:left"><th>Return type</th><th>Name</th><th>Parameters</th></tr>
-<!-- START_TRAVERSAL_MATCHERS -->
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('eachOf0')"><a name="eachOf0Anchor">eachOf</a></td><td>Matcher<*>  P1, Matcher<*>  P2</td></tr>
-<tr><td colspan="4" class="doc" id="eachOf0"><pre>Matches if any of the given matchers matches.
-
-Unlike anyOf, eachOf will generate a match result for each
-matching submatcher.
-
-For example, in:
-  class A { int a; int b; };
-The matcher:
-  recordDecl(eachOf(has(fieldDecl(hasName("a")).bind("v")),
-                    has(fieldDecl(hasName("b")).bind("v"))))
-will generate two results binding "v", the first of which binds
-the field declaration of a, the second the field declaration of
-b.
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('findAll0')"><a name="findAll0Anchor">findAll</a></td><td>Matcher<T>  Matcher</td></tr>
-<tr><td colspan="4" class="doc" id="findAll0"><pre>Matches if the node or any descendant matches.
-
-Generates results for each match.
-
-For example, in:
-  class A { class B {}; class C {}; };
-The matcher:
-  recordDecl(hasName("::A"), findAll(recordDecl(isDefinition()).bind("m")))
-will generate results for A, B and C.
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('forEach0')"><a name="forEach0Anchor">forEach</a></td><td>Matcher<ChildT>  ChildMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="forEach0"><pre>Matches AST nodes that have child AST nodes that match the
-provided matcher.
-
-Example matches X, Y (matcher = recordDecl(forEach(recordDecl(hasName("X")))
-  class X {};  Matches X, because X::X is a class of name X inside X.
-  class Y { class X {}; };
-  class Z { class Y { class X {}; }; };  Does not match Z.
-
-ChildT must be an AST base type.
-
-As opposed to 'has', 'forEach' will cause a match for each result that
-matches instead of only on the first one.
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('forEachDescendant0')"><a name="forEachDescendant0Anchor">forEachDescendant</a></td><td>Matcher<DescendantT>  DescendantMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="forEachDescendant0"><pre>Matches AST nodes that have descendant AST nodes that match the
-provided matcher.
-
-Example matches X, A, B, C
-    (matcher = recordDecl(forEachDescendant(recordDecl(hasName("X")))))
-  class X {};  Matches X, because X::X is a class of name X inside X.
-  class A { class X {}; };
-  class B { class C { class X {}; }; };
-
-DescendantT must be an AST base type.
-
-As opposed to 'hasDescendant', 'forEachDescendant' will cause a match for
-each result that matches instead of only on the first one.
-
-Note: Recursively combined ForEachDescendant can cause many matches:
-  recordDecl(forEachDescendant(recordDecl(forEachDescendant(recordDecl()))))
-will match 10 times (plus injected class name matches) on:
-  class A { class B { class C { class D { class E {}; }; }; }; };
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('has0')"><a name="has0Anchor">has</a></td><td>Matcher<ChildT>  ChildMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="has0"><pre>Matches AST nodes that have child AST nodes that match the
-provided matcher.
-
-Example matches X, Y (matcher = recordDecl(has(recordDecl(hasName("X")))
-  class X {};  Matches X, because X::X is a class of name X inside X.
-  class Y { class X {}; };
-  class Z { class Y { class X {}; }; };  Does not match Z.
-
-ChildT must be an AST base type.
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('hasAncestor0')"><a name="hasAncestor0Anchor">hasAncestor</a></td><td>Matcher<AncestorT>  AncestorMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasAncestor0"><pre>Matches AST nodes that have an ancestor that matches the provided
-matcher.
-
-Given
-void f() { if (true) { int x = 42; } }
-void g() { for (;;) { int x = 43; } }
-expr(integerLiteral(hasAncestor(ifStmt()))) matches 42, but not 43.
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('hasDescendant0')"><a name="hasDescendant0Anchor">hasDescendant</a></td><td>Matcher<DescendantT>  DescendantMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDescendant0"><pre>Matches AST nodes that have descendant AST nodes that match the
-provided matcher.
-
-Example matches X, Y, Z
-    (matcher = recordDecl(hasDescendant(recordDecl(hasName("X")))))
-  class X {};  Matches X, because X::X is a class of name X inside X.
-  class Y { class X {}; };
-  class Z { class Y { class X {}; }; };
-
-DescendantT must be an AST base type.
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher<*></td><td class="name" onclick="toggle('hasParent0')"><a name="hasParent0Anchor">hasParent</a></td><td>Matcher<ParentT>  ParentMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasParent0"><pre>Matches AST nodes that have a parent that matches the provided
-matcher.
-
-Given
-void f() { for (;;) { int x = 42; if (true) { int x = 43; } } }
-compoundStmt(hasParent(ifStmt())) matches "{ int x = 43; }".
-
-Usable as: Any Matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArraySubscriptExpr.html">ArraySubscriptExpr</a>></td><td class="name" onclick="toggle('hasBase0')"><a name="hasBase0Anchor">hasBase</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasBase0"><pre>Matches the base expression of an array subscript expression.
-
-Given
-  int i[5];
-  void f() { i[1] = 42; }
-arraySubscriptExpression(hasBase(implicitCastExpr(
-    hasSourceExpression(declRefExpr()))))
-  matches i[1] with the declRefExpr() matching i
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArraySubscriptExpr.html">ArraySubscriptExpr</a>></td><td class="name" onclick="toggle('hasIndex0')"><a name="hasIndex0Anchor">hasIndex</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasIndex0"><pre>Matches the index expression of an array subscript expression.
-
-Given
-  int i[5];
-  void f() { i[1] = 42; }
-arraySubscriptExpression(hasIndex(integerLiteral()))
-  matches i[1] with the integerLiteral() matching 1
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArrayTypeLoc.html">ArrayTypeLoc</a>></td><td class="name" onclick="toggle('hasElementTypeLoc1')"><a name="hasElementTypeLoc1Anchor">hasElementTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td></tr>
-<tr><td colspan="4" class="doc" id="hasElementTypeLoc1"><pre>Matches arrays and C99 complex types that have a specific element
-type.
-
-Given
-  struct A {};
-  A a[7];
-  int b[7];
-arrayType(hasElementType(builtinType()))
-  matches "int b[7]"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArrayType.html">ArrayType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ComplexType.html">ComplexType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArrayType.html">ArrayType</a>></td><td class="name" onclick="toggle('hasElementType1')"><a name="hasElementType1Anchor">hasElementType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="hasElementType1"><pre>Matches arrays and C99 complex types that have a specific element
-type.
-
-Given
-  struct A {};
-  A a[7];
-  int b[7];
-arrayType(hasElementType(builtinType()))
-  matches "int b[7]"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArrayType.html">ArrayType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ComplexType.html">ComplexType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AtomicTypeLoc.html">AtomicTypeLoc</a>></td><td class="name" onclick="toggle('hasValueTypeLoc0')"><a name="hasValueTypeLoc0Anchor">hasValueTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td></tr>
-<tr><td colspan="4" class="doc" id="hasValueTypeLoc0"><pre>Matches atomic types with a specific value type.
-
-Given
-  _Atomic(int) i;
-  _Atomic(float) f;
-atomicType(hasValueType(isInteger()))
- matches "_Atomic(int) i"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AtomicType.html">AtomicType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AtomicType.html">AtomicType</a>></td><td class="name" onclick="toggle('hasValueType0')"><a name="hasValueType0Anchor">hasValueType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="hasValueType0"><pre>Matches atomic types with a specific value type.
-
-Given
-  _Atomic(int) i;
-  _Atomic(float) f;
-atomicType(hasValueType(isInteger()))
- matches "_Atomic(int) i"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AtomicType.html">AtomicType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AutoType.html">AutoType</a>></td><td class="name" onclick="toggle('hasDeducedType0')"><a name="hasDeducedType0Anchor">hasDeducedType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="hasDeducedType0"><pre>Matches AutoType nodes where the deduced type is a specific type.
-
-Note: There is no TypeLoc for the deduced type and thus no
-getDeducedLoc() matcher.
-
-Given
-  auto a = 1;
-  auto b = 2.0;
-autoType(hasDeducedType(isInteger()))
-  matches "auto a"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1AutoType.html">AutoType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BinaryOperator.html">BinaryOperator</a>></td><td class="name" onclick="toggle('hasEitherOperand0')"><a name="hasEitherOperand0Anchor">hasEitherOperand</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasEitherOperand0"><pre>Matches if either the left hand side or the right hand side of a
-binary operator matches.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BinaryOperator.html">BinaryOperator</a>></td><td class="name" onclick="toggle('hasLHS0')"><a name="hasLHS0Anchor">hasLHS</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasLHS0"><pre>Matches the left hand side of binary operator expressions.
-
-Example matches a (matcher = binaryOperator(hasLHS()))
-  a || b
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BinaryOperator.html">BinaryOperator</a>></td><td class="name" onclick="toggle('hasRHS0')"><a name="hasRHS0Anchor">hasRHS</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasRHS0"><pre>Matches the right hand side of binary operator expressions.
-
-Example matches b (matcher = binaryOperator(hasRHS()))
-  a || b
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerTypeLoc.html">BlockPointerTypeLoc</a>></td><td class="name" onclick="toggle('pointeeLoc3')"><a name="pointeeLoc3Anchor">pointeeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td></tr>
-<tr><td colspan="4" class="doc" id="pointeeLoc3"><pre>Narrows PointerType (and similar) matchers to those where the
-pointee matches a given matcher.
-
-Given
-  int *a;
-  int const *b;
-  float const *f;
-pointerType(pointee(isConstQualified(), isInteger()))
-  matches "int const *b"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>></td><td class="name" onclick="toggle('pointee3')"><a name="pointee3Anchor">pointee</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="pointee3"><pre>Narrows PointerType (and similar) matchers to those where the
-pointee matches a given matcher.
-
-Given
-  int *a;
-  int const *b;
-  float const *f;
-pointerType(pointee(isConstQualified(), isInteger()))
-  matches "int const *b"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>></td><td class="name" onclick="toggle('hasDeclaration3')"><a name="hasDeclaration3Anchor">hasDeclaration</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration3"><pre>Matches a type if the declaration of the type matches the given
-matcher.
-
-In addition to being usable as Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>, also usable as
-Matcher<T> for any T supporting the getDecl() member function. e.g. various
-subtypes of clang::Type.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructorDecl.html">CXXConstructorDecl</a>></td><td class="name" onclick="toggle('hasAnyConstructorInitializer0')"><a name="hasAnyConstructorInitializer0Anchor">hasAnyConstructorInitializer</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXCtorInitializer.html">CXXCtorInitializer</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasAnyConstructorInitializer0"><pre>Matches a constructor initializer.
-
-Given
-  struct Foo {
-    Foo() : foo_(1) { }
-    int foo_;
-  };
-recordDecl(has(constructorDecl(hasAnyConstructorInitializer(anything()))))
-  record matches Foo, hasAnyConstructorInitializer matches foo_(1)
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXCtorInitializer.html">CXXCtorInitializer</a>></td><td class="name" onclick="toggle('forField0')"><a name="forField0Anchor">forField</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FieldDecl.html">FieldDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="forField0"><pre>Matches the field declaration of a constructor initializer.
-
-Given
-  struct Foo {
-    Foo() : foo_(1) { }
-    int foo_;
-  };
-recordDecl(has(constructorDecl(hasAnyConstructorInitializer(
-    forField(hasName("foo_"))))))
-  matches Foo
-with forField matching foo_
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXCtorInitializer.html">CXXCtorInitializer</a>></td><td class="name" onclick="toggle('withInitializer0')"><a name="withInitializer0Anchor">withInitializer</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="withInitializer0"><pre>Matches the initializer expression of a constructor initializer.
-
-Given
-  struct Foo {
-    Foo() : foo_(1) { }
-    int foo_;
-  };
-recordDecl(has(constructorDecl(hasAnyConstructorInitializer(
-    withInitializer(integerLiteral(equals(1)))))))
-  matches Foo
-with withInitializer matching (1)
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMemberCallExpr.html">CXXMemberCallExpr</a>></td><td class="name" onclick="toggle('on0')"><a name="on0Anchor">on</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="on0"><pre>Matches on the implicit object argument of a member call expression.
-
-Example matches y.x() (matcher = callExpr(on(hasType(recordDecl(hasName("Y"))))))
-  class Y { public: void x(); };
-  void z() { Y y; y.x(); }",
-
-FIXME: Overload to allow directly matching types?
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMemberCallExpr.html">CXXMemberCallExpr</a>></td><td class="name" onclick="toggle('onImplicitObjectArgument0')"><a name="onImplicitObjectArgument0Anchor">onImplicitObjectArgument</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="onImplicitObjectArgument0"><pre></pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMemberCallExpr.html">CXXMemberCallExpr</a>></td><td class="name" onclick="toggle('thisPointerType1')"><a name="thisPointerType1Anchor">thisPointerType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="thisPointerType1"><pre>Overloaded to match the type's declaration.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>></td><td class="name" onclick="toggle('ofClass0')"><a name="ofClass0Anchor">ofClass</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="ofClass0"><pre>Matches the class declaration that the given method declaration
-belongs to.
-
-FIXME: Generalize this for other kinds of declarations.
-FIXME: What other kind of declarations would we need to generalize
-this to?
-
-Example matches A() in the last line
-    (matcher = constructExpr(hasDeclaration(methodDecl(
-        ofClass(hasName("A"))))))
-  class A {
-   public:
-    A();
-  };
-  A a = A();
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>></td><td class="name" onclick="toggle('hasMethod0')"><a name="hasMethod0Anchor">hasMethod</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasMethod0"><pre>Matches the first method of a class or struct that satisfies InnerMatcher.
-
-Given:
-  class A { void func(); };
-  class B { void member(); };
-
-recordDecl(hasMethod(hasName("func"))) matches the declaration of A
-but not B.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>></td><td class="name" onclick="toggle('isDerivedFrom0')"><a name="isDerivedFrom0Anchor">isDerivedFrom</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html">NamedDecl</a>> Base</td></tr>
-<tr><td colspan="4" class="doc" id="isDerivedFrom0"><pre>Matches C++ classes that are directly or indirectly derived from
-a class matching Base.
-
-Note that a class is not considered to be derived from itself.
-
-Example matches Y, Z, C (Base == hasName("X"))
-  class X;
-  class Y : public X {};  directly derived
-  class Z : public Y {};  indirectly derived
-  typedef X A;
-  typedef A B;
-  class C : public B {};  derived from a typedef of X
-
-In the following example, Bar matches isDerivedFrom(hasName("X")):
-  class Foo;
-  typedef Foo X;
-  class Bar : public Foo {};  derived from a type that X is a typedef of
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>></td><td class="name" onclick="toggle('isSameOrDerivedFrom0')"><a name="isSameOrDerivedFrom0Anchor">isSameOrDerivedFrom</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html">NamedDecl</a>> Base</td></tr>
-<tr><td colspan="4" class="doc" id="isSameOrDerivedFrom0"><pre>Similar to isDerivedFrom(), but also matches classes that directly
-match Base.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>></td><td class="name" onclick="toggle('callee1')"><a name="callee1Anchor">callee</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="callee1"><pre>Matches if the call expression's callee's declaration matches the
-given matcher.
-
-Example matches y.x() (matcher = callExpr(callee(methodDecl(hasName("x")))))
-  class Y { public: void x(); };
-  void z() { Y y; y.x();
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>></td><td class="name" onclick="toggle('hasAnyArgument0')"><a name="hasAnyArgument0Anchor">hasAnyArgument</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasAnyArgument0"><pre>Matches any argument of a call expression or a constructor call
-expression.
-
-Given
-  void x(int, int, int) { int y; x(1, y, 42); }
-callExpr(hasAnyArgument(declRefExpr()))
-  matches x(1, y, 42)
-with hasAnyArgument(...)
-  matching y
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>></td><td class="name" onclick="toggle('hasArgument0')"><a name="hasArgument0Anchor">hasArgument</a></td><td>unsigned N, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasArgument0"><pre>Matches the n'th argument of a call expression or a constructor
-call expression.
-
-Example matches y in x(y)
-    (matcher = callExpr(hasArgument(0, declRefExpr())))
-  void x(int) { int y; x(y); }
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>></td><td class="name" onclick="toggle('hasDeclaration4')"><a name="hasDeclaration4Anchor">hasDeclaration</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration4"><pre>Matches a type if the declaration of the type matches the given
-matcher.
-
-In addition to being usable as Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>, also usable as
-Matcher<T> for any T supporting the getDecl() member function. e.g. various
-subtypes of clang::Type.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CastExpr.html">CastExpr</a>></td><td class="name" onclick="toggle('hasSourceExpression0')"><a name="hasSourceExpression0Anchor">hasSourceExpression</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasSourceExpression0"><pre>Matches if the cast's source expression matches the given matcher.
-
-Example: matches "a string" (matcher =
-                                 hasSourceExpression(constructExpr()))
-class URL { URL(string); };
-URL url = "a string";
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ClassTemplateSpecializationDecl.html">ClassTemplateSpecializationDecl</a>></td><td class="name" onclick="toggle('hasAnyTemplateArgument0')"><a name="hasAnyTemplateArgument0Anchor">hasAnyTemplateArgument</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasAnyTemplateArgument0"><pre>Matches classTemplateSpecializations that have at least one
-TemplateArgument matching the given InnerMatcher.
-
-Given
-  template<typename T> class A {};
-  template<> class A<double> {};
-  A<int> a;
-classTemplateSpecializationDecl(hasAnyTemplateArgument(
-    refersToType(asString("int"))))
-  matches the specialization A<int>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ClassTemplateSpecializationDecl.html">ClassTemplateSpecializationDecl</a>></td><td class="name" onclick="toggle('hasTemplateArgument0')"><a name="hasTemplateArgument0Anchor">hasTemplateArgument</a></td><td>unsigned N, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasTemplateArgument0"><pre>Matches classTemplateSpecializations where the n'th TemplateArgument
-matches the given InnerMatcher.
-
-Given
-  template<typename T, typename U> class A {};
-  A<bool, int> b;
-  A<int, bool> c;
-classTemplateSpecializationDecl(hasTemplateArgument(
-    1, refersToType(asString("int"))))
-  matches the specialization A<bool, int>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ComplexTypeLoc.html">ComplexTypeLoc</a>></td><td class="name" onclick="toggle('hasElementTypeLoc0')"><a name="hasElementTypeLoc0Anchor">hasElementTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td></tr>
-<tr><td colspan="4" class="doc" id="hasElementTypeLoc0"><pre>Matches arrays and C99 complex types that have a specific element
-type.
-
-Given
-  struct A {};
-  A a[7];
-  int b[7];
-arrayType(hasElementType(builtinType()))
-  matches "int b[7]"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArrayType.html">ArrayType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ComplexType.html">ComplexType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ComplexType.html">ComplexType</a>></td><td class="name" onclick="toggle('hasElementType0')"><a name="hasElementType0Anchor">hasElementType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="hasElementType0"><pre>Matches arrays and C99 complex types that have a specific element
-type.
-
-Given
-  struct A {};
-  A a[7];
-  int b[7];
-arrayType(hasElementType(builtinType()))
-  matches "int b[7]"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ArrayType.html">ArrayType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ComplexType.html">ComplexType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CompoundStmt.html">CompoundStmt</a>></td><td class="name" onclick="toggle('hasAnySubstatement0')"><a name="hasAnySubstatement0Anchor">hasAnySubstatement</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasAnySubstatement0"><pre>Matches compound statements where at least one substatement matches
-a given matcher.
-
-Given
-  { {}; 1+2; }
-hasAnySubstatement(compoundStmt())
-  matches '{ {}; 1+2; }'
-with compoundStmt()
-  matching '{}'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ConditionalOperator.html">ConditionalOperator</a>></td><td class="name" onclick="toggle('hasCondition4')"><a name="hasCondition4Anchor">hasCondition</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasCondition4"><pre>Matches the condition expression of an if statement, for loop,
-or conditional operator.
-
-Example matches true (matcher = hasCondition(boolLiteral(equals(true))))
-  if (true) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ConditionalOperator.html">ConditionalOperator</a>></td><td class="name" onclick="toggle('hasFalseExpression0')"><a name="hasFalseExpression0Anchor">hasFalseExpression</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasFalseExpression0"><pre>Matches the false branch expression of a conditional operator.
-
-Example matches b
-  condition ? a : b
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ConditionalOperator.html">ConditionalOperator</a>></td><td class="name" onclick="toggle('hasTrueExpression0')"><a name="hasTrueExpression0Anchor">hasTrueExpression</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasTrueExpression0"><pre>Matches the true branch expression of a conditional operator.
-
-Example matches a
-  condition ? a : b
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>></td><td class="name" onclick="toggle('throughUsingDecl0')"><a name="throughUsingDecl0Anchor">throughUsingDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UsingShadowDecl.html">UsingShadowDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="throughUsingDecl0"><pre>Matches a DeclRefExpr that refers to a declaration through a
-specific using shadow declaration.
-
-FIXME: This currently only works for functions. Fix.
-
-Given
-  namespace a { void f() {} }
-  using a::f;
-  void g() {
-    f();     Matches this ..
-    a::f();  .. but not this.
-  }
-declRefExpr(throughUsingDeclaration(anything()))
-  matches f()
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>></td><td class="name" onclick="toggle('to0')"><a name="to0Anchor">to</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="to0"><pre>Matches a DeclRefExpr that refers to a declaration that matches the
-specified matcher.
-
-Example matches x in if(x)
-    (matcher = declRefExpr(to(varDecl(hasName("x")))))
-  bool x;
-  if (x) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclStmt.html">DeclStmt</a>></td><td class="name" onclick="toggle('containsDeclaration0')"><a name="containsDeclaration0Anchor">containsDeclaration</a></td><td>unsigned N, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="containsDeclaration0"><pre>Matches the n'th declaration of a declaration statement.
-
-Note that this does not work for global declarations because the AST
-breaks up multiple-declaration DeclStmt's into multiple single-declaration
-DeclStmt's.
-Example: Given non-global declarations
-  int a, b = 0;
-  int c;
-  int d = 2, e;
-declStmt(containsDeclaration(
-      0, varDecl(hasInitializer(anything()))))
-  matches only 'int d = 2, e;', and
-declStmt(containsDeclaration(1, varDecl()))
-  matches 'int a, b = 0' as well as 'int d = 2, e;'
-  but 'int c;' is not matched.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclStmt.html">DeclStmt</a>></td><td class="name" onclick="toggle('hasSingleDecl0')"><a name="hasSingleDecl0Anchor">hasSingleDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasSingleDecl0"><pre>Matches the Decl of a DeclStmt which has a single declaration.
-
-Given
-  int a, b;
-  int c;
-declStmt(hasSingleDecl(anything()))
-  matches 'int c;' but not 'int a, b;'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('hasDeclContext0')"><a name="hasDeclContext0Anchor">hasDeclContext</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclContext0"><pre>Matches declarations whose declaration context, interpreted as a
-Decl, matches InnerMatcher.
-
-Given
-  namespace N {
-    namespace M {
-      class D {};
-    }
-  }
-
-recordDecl(hasDeclContext(namedDecl(hasName("M")))) matches the
-declaration of class D.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DoStmt.html">DoStmt</a>></td><td class="name" onclick="toggle('hasBody0')"><a name="hasBody0Anchor">hasBody</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasBody0"><pre>Matches a 'for', 'while', or 'do while' statement that has
-a given body.
-
-Given
-  for (;;) {}
-hasBody(compoundStmt())
-  matches 'for (;;) {}'
-with compoundStmt()
-  matching '{}'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DoStmt.html">DoStmt</a>></td><td class="name" onclick="toggle('hasCondition3')"><a name="hasCondition3Anchor">hasCondition</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasCondition3"><pre>Matches the condition expression of an if statement, for loop,
-or conditional operator.
-
-Example matches true (matcher = hasCondition(boolLiteral(equals(true))))
-  if (true) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ElaboratedType.html">ElaboratedType</a>></td><td class="name" onclick="toggle('hasQualifier0')"><a name="hasQualifier0Anchor">hasQualifier</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifier.html">NestedNameSpecifier</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasQualifier0"><pre>Matches ElaboratedTypes whose qualifier, a NestedNameSpecifier,
-matches InnerMatcher if the qualifier exists.
-
-Given
-  namespace N {
-    namespace M {
-      class D {};
-    }
-  }
-  N::M::D d;
-
-elaboratedType(hasQualifier(hasPrefix(specifiesNamespace(hasName("N"))))
-matches the type of the variable declaration of d.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ElaboratedType.html">ElaboratedType</a>></td><td class="name" onclick="toggle('namesType0')"><a name="namesType0Anchor">namesType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="namesType0"><pre>Matches ElaboratedTypes whose named type matches InnerMatcher.
-
-Given
-  namespace N {
-    namespace M {
-      class D {};
-    }
-  }
-  N::M::D d;
-
-elaboratedType(namesType(recordType(
-hasDeclaration(namedDecl(hasName("D")))))) matches the type of the variable
-declaration of d.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ExplicitCastExpr.html">ExplicitCastExpr</a>></td><td class="name" onclick="toggle('hasDestinationType0')"><a name="hasDestinationType0Anchor">hasDestinationType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDestinationType0"><pre>Matches casts whose destination type matches a given matcher.
-
-(Note: Clang's AST refers to other conversions as "casts" too, and calls
-actual casts "explicit" casts.)
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>></td><td class="name" onclick="toggle('hasType3')"><a name="hasType3Anchor">hasType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasType3"><pre>Overloaded to match the declaration of the expression's or value
-declaration's type.
-
-In case of a value declaration (for example a variable declaration),
-this resolves one layer of indirection. For example, in the value
-declaration "X x;", recordDecl(hasName("X")) matches the declaration of X,
-while varDecl(hasType(recordDecl(hasName("X")))) matches the declaration
-of x."
-
-Example matches x (matcher = expr(hasType(recordDecl(hasName("X")))))
-            and z (matcher = varDecl(hasType(recordDecl(hasName("X")))))
- class X {};
- void y(X &x) { x; X z; }
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ValueDecl.html">ValueDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>></td><td class="name" onclick="toggle('ignoringImpCasts0')"><a name="ignoringImpCasts0Anchor">ignoringImpCasts</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="ignoringImpCasts0"><pre>Matches expressions that match InnerMatcher after any implicit casts
-are stripped off.
-
-Parentheses and explicit casts are not discarded.
-Given
-  int arr[5];
-  int a = 0;
-  char b = 0;
-  const int c = a;
-  int *d = arr;
-  long e = (long) 0l;
-The matchers
-   varDecl(hasInitializer(ignoringImpCasts(integerLiteral())))
-   varDecl(hasInitializer(ignoringImpCasts(declRefExpr())))
-would match the declarations for a, b, c, and d, but not e.
-While
-   varDecl(hasInitializer(integerLiteral()))
-   varDecl(hasInitializer(declRefExpr()))
-only match the declarations for b, c, and d.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>></td><td class="name" onclick="toggle('ignoringParenCasts0')"><a name="ignoringParenCasts0Anchor">ignoringParenCasts</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="ignoringParenCasts0"><pre>Matches expressions that match InnerMatcher after parentheses and
-casts are stripped off.
-
-Implicit and non-C Style casts are also discarded.
-Given
-  int a = 0;
-  char b = (0);
-  void* c = reinterpret_cast<char*>(0);
-  char d = char(0);
-The matcher
-   varDecl(hasInitializer(ignoringParenCasts(integerLiteral())))
-would match the declarations for a, b, c, and d.
-while
-   varDecl(hasInitializer(integerLiteral()))
-only match the declaration for a.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>></td><td class="name" onclick="toggle('ignoringParenImpCasts0')"><a name="ignoringParenImpCasts0Anchor">ignoringParenImpCasts</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="ignoringParenImpCasts0"><pre>Matches expressions that match InnerMatcher after implicit casts and
-parentheses are stripped off.
-
-Explicit casts are not discarded.
-Given
-  int arr[5];
-  int a = 0;
-  char b = (0);
-  const int c = a;
-  int *d = (arr);
-  long e = ((long) 0l);
-The matchers
-   varDecl(hasInitializer(ignoringParenImpCasts(integerLiteral())))
-   varDecl(hasInitializer(ignoringParenImpCasts(declRefExpr())))
-would match the declarations for a, b, c, and d, but not e.
-while
-   varDecl(hasInitializer(integerLiteral()))
-   varDecl(hasInitializer(declRefExpr()))
-would only match the declaration for a.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ForStmt.html">ForStmt</a>></td><td class="name" onclick="toggle('hasBody1')"><a name="hasBody1Anchor">hasBody</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasBody1"><pre>Matches a 'for', 'while', or 'do while' statement that has
-a given body.
-
-Given
-  for (;;) {}
-hasBody(compoundStmt())
-  matches 'for (;;) {}'
-with compoundStmt()
-  matching '{}'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ForStmt.html">ForStmt</a>></td><td class="name" onclick="toggle('hasCondition1')"><a name="hasCondition1Anchor">hasCondition</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasCondition1"><pre>Matches the condition expression of an if statement, for loop,
-or conditional operator.
-
-Example matches true (matcher = hasCondition(boolLiteral(equals(true))))
-  if (true) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ForStmt.html">ForStmt</a>></td><td class="name" onclick="toggle('hasIncrement0')"><a name="hasIncrement0Anchor">hasIncrement</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasIncrement0"><pre>Matches the increment statement of a for loop.
-
-Example:
-    forStmt(hasIncrement(unaryOperator(hasOperatorName("++"))))
-matches '++x' in
-    for (x; x < N; ++x) { }
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ForStmt.html">ForStmt</a>></td><td class="name" onclick="toggle('hasLoopInit0')"><a name="hasLoopInit0Anchor">hasLoopInit</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasLoopInit0"><pre>Matches the initialization statement of a for loop.
-
-Example:
-    forStmt(hasLoopInit(declStmt()))
-matches 'int x = 0' in
-    for (int x = 0; x < N; ++x) { }
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('hasAnyParameter0')"><a name="hasAnyParameter0Anchor">hasAnyParameter</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ParmVarDecl.html">ParmVarDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasAnyParameter0"><pre>Matches any parameter of a function declaration.
-
-Does not match the 'this' parameter of a method.
-
-Given
-  class X { void f(int x, int y, int z) {} };
-methodDecl(hasAnyParameter(hasName("y")))
-  matches f(int x, int y, int z) {}
-with hasAnyParameter(...)
-  matching int y
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('hasParameter0')"><a name="hasParameter0Anchor">hasParameter</a></td><td>unsigned N, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ParmVarDecl.html">ParmVarDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasParameter0"><pre>Matches the n'th parameter of a function declaration.
-
-Given
-  class X { void f(int x) {} };
-methodDecl(hasParameter(0, hasType(varDecl())))
-  matches f(int x) {}
-with hasParameter(...)
-  matching int x
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1FunctionDecl.html">FunctionDecl</a>></td><td class="name" onclick="toggle('returns0')"><a name="returns0Anchor">returns</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="returns0"><pre>Matches the return type of a function declaration.
-
-Given:
-  class X { int f() { return 1; } };
-methodDecl(returns(asString("int")))
-  matches int f() { return 1; }
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IfStmt.html">IfStmt</a>></td><td class="name" onclick="toggle('hasCondition0')"><a name="hasCondition0Anchor">hasCondition</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasCondition0"><pre>Matches the condition expression of an if statement, for loop,
-or conditional operator.
-
-Example matches true (matcher = hasCondition(boolLiteral(equals(true))))
-  if (true) {}
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1IfStmt.html">IfStmt</a>></td><td class="name" onclick="toggle('hasConditionVariableStatement0')"><a name="hasConditionVariableStatement0Anchor">hasConditionVariableStatement</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclStmt.html">DeclStmt</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasConditionVariableStatement0"><pre>Matches the condition variable statement in an if statement.
-
-Given
-  if (A* a = GetAPointer()) {}
-hasConditionVariableStatment(...)
-  matches 'A* a = GetAPointer()'.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>></td><td class="name" onclick="toggle('hasImplicitDestinationType0')"><a name="hasImplicitDestinationType0Anchor">hasImplicitDestinationType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasImplicitDestinationType0"><pre>Matches implicit casts whose destination type matches a given
-matcher.
-
-FIXME: Unit test this matcher
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>></td><td class="name" onclick="toggle('hasDeclaration2')"><a name="hasDeclaration2Anchor">hasDeclaration</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration2"><pre>Matches a type if the declaration of the type matches the given
-matcher.
-
-In addition to being usable as Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>, also usable as
-Matcher<T> for any T supporting the getDecl() member function. e.g. various
-subtypes of clang::Type.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>></td><td class="name" onclick="toggle('hasObjectExpression0')"><a name="hasObjectExpression0Anchor">hasObjectExpression</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasObjectExpression0"><pre>Matches a member expression where the object expression is
-matched by a given matcher.
-
-Given
-  struct X { int m; };
-  void f(X x) { x.m; m; }
-memberExpr(hasObjectExpression(hasType(recordDecl(hasName("X")))))))
-  matches "x.m" and "m"
-with hasObjectExpression(...)
-  matching "x" and the implicit object expression of "m" which has type X*.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>></td><td class="name" onclick="toggle('member0')"><a name="member0Anchor">member</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ValueDecl.html">ValueDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="member0"><pre>Matches a member expression where the member is matched by a
-given matcher.
-
-Given
-  struct { int first, second; } first, second;
-  int i(second.first);
-  int j(first.second);
-memberExpr(member(hasName("first")))
-  matches second.first
-  but not first.second (because the member name there is "second").
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerTypeLoc.html">MemberPointerTypeLoc</a>></td><td class="name" onclick="toggle('pointeeLoc2')"><a name="pointeeLoc2Anchor">pointeeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td></tr>
-<tr><td colspan="4" class="doc" id="pointeeLoc2"><pre>Narrows PointerType (and similar) matchers to those where the
-pointee matches a given matcher.
-
-Given
-  int *a;
-  int const *b;
-  float const *f;
-pointerType(pointee(isConstQualified(), isInteger()))
-  matches "int const *b"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>></td><td class="name" onclick="toggle('pointee2')"><a name="pointee2Anchor">pointee</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="pointee2"><pre>Narrows PointerType (and similar) matchers to those where the
-pointee matches a given matcher.
-
-Given
-  int *a;
-  int const *b;
-  float const *f;
-pointerType(pointee(isConstQualified(), isInteger()))
-  matches "int const *b"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifierLoc.html">NestedNameSpecifierLoc</a>></td><td class="name" onclick="toggle('hasPrefix1')"><a name="hasPrefix1Anchor">hasPrefix</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifierLoc.html">NestedNameSpecifierLoc</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasPrefix1"><pre>Matches on the prefix of a NestedNameSpecifierLoc.
-
-Given
-  struct A { struct B { struct C {}; }; };
-  A::B::C c;
-nestedNameSpecifierLoc(hasPrefix(loc(specifiesType(asString("struct A")))))
-  matches "A::"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifierLoc.html">NestedNameSpecifierLoc</a>></td><td class="name" onclick="toggle('loc1')"><a name="loc1Anchor">loc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifier.html">NestedNameSpecifier</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="loc1"><pre>Matches NestedNameSpecifierLocs for which the given inner
-NestedNameSpecifier-matcher matches.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifierLoc.html">NestedNameSpecifierLoc</a>></td><td class="name" onclick="toggle('specifiesTypeLoc0')"><a name="specifiesTypeLoc0Anchor">specifiesTypeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="specifiesTypeLoc0"><pre>Matches nested name specifier locs that specify a type matching the
-given TypeLoc.
-
-Given
-  struct A { struct B { struct C {}; }; };
-  A::B::C c;
-nestedNameSpecifierLoc(specifiesTypeLoc(loc(type(
-  hasDeclaration(recordDecl(hasName("A")))))))
-  matches "A::"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifier.html">NestedNameSpecifier</a>></td><td class="name" onclick="toggle('hasPrefix0')"><a name="hasPrefix0Anchor">hasPrefix</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifier.html">NestedNameSpecifier</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasPrefix0"><pre>Matches on the prefix of a NestedNameSpecifier.
-
-Given
-  struct A { struct B { struct C {}; }; };
-  A::B::C c;
-nestedNameSpecifier(hasPrefix(specifiesType(asString("struct A")))) and
-  matches "A::"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifier.html">NestedNameSpecifier</a>></td><td class="name" onclick="toggle('specifiesNamespace0')"><a name="specifiesNamespace0Anchor">specifiesNamespace</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NamespaceDecl.html">NamespaceDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="specifiesNamespace0"><pre>Matches nested name specifiers that specify a namespace matching the
-given namespace matcher.
-
-Given
-  namespace ns { struct A {}; }
-  ns::A a;
-nestedNameSpecifier(specifiesNamespace(hasName("ns")))
-  matches "ns::"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NestedNameSpecifier.html">NestedNameSpecifier</a>></td><td class="name" onclick="toggle('specifiesType0')"><a name="specifiesType0Anchor">specifiesType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="specifiesType0"><pre>Matches nested name specifiers that specify a type matching the
-given QualType matcher without qualifiers.
-
-Given
-  struct A { struct B { struct C {}; }; };
-  A::B::C c;
-nestedNameSpecifier(specifiesType(hasDeclaration(recordDecl(hasName("A")))))
-  matches "A::"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ParenType.html">ParenType</a>></td><td class="name" onclick="toggle('innerType0')"><a name="innerType0Anchor">innerType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="innerType0"><pre>Matches ParenType nodes where the inner type is a specific type.
-
-Given
-  int (*ptr_to_array)[4];
-  int (*ptr_to_func)(int);
-
-varDecl(hasType(pointsTo(parenType(innerType(functionType()))))) matches
-ptr_to_func but not ptr_to_array.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ParenType.html">ParenType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerTypeLoc.html">PointerTypeLoc</a>></td><td class="name" onclick="toggle('pointeeLoc1')"><a name="pointeeLoc1Anchor">pointeeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td></tr>
-<tr><td colspan="4" class="doc" id="pointeeLoc1"><pre>Narrows PointerType (and similar) matchers to those where the
-pointee matches a given matcher.
-
-Given
-  int *a;
-  int const *b;
-  float const *f;
-pointerType(pointee(isConstQualified(), isInteger()))
-  matches "int const *b"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>></td><td class="name" onclick="toggle('pointee1')"><a name="pointee1Anchor">pointee</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="pointee1"><pre>Narrows PointerType (and similar) matchers to those where the
-pointee matches a given matcher.
-
-Given
-  int *a;
-  int const *b;
-  float const *f;
-pointerType(pointee(isConstQualified(), isInteger()))
-  matches "int const *b"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('hasCanonicalType0')"><a name="hasCanonicalType0Anchor">hasCanonicalType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasCanonicalType0"><pre>Matches QualTypes whose canonical type matches InnerMatcher.
-
-Given:
-  typedef int &int_ref;
-  int a;
-  int_ref b = a;
-
-varDecl(hasType(qualType(referenceType()))))) will not match the
-declaration of b but varDecl(hasType(qualType(hasCanonicalType(referenceType())))))) does.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('hasDeclaration5')"><a name="hasDeclaration5Anchor">hasDeclaration</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration5"><pre>Matches a type if the declaration of the type matches the given
-matcher.
-
-In addition to being usable as Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>, also usable as
-Matcher<T> for any T supporting the getDecl() member function. e.g. various
-subtypes of clang::Type.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('pointsTo1')"><a name="pointsTo1Anchor">pointsTo</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="pointsTo1"><pre>Overloaded to match the pointee type's declaration.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>></td><td class="name" onclick="toggle('references1')"><a name="references1Anchor">references</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="references1"><pre>Overloaded to match the referenced type's declaration.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceTypeLoc.html">ReferenceTypeLoc</a>></td><td class="name" onclick="toggle('pointeeLoc0')"><a name="pointeeLoc0Anchor">pointeeLoc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td></tr>
-<tr><td colspan="4" class="doc" id="pointeeLoc0"><pre>Narrows PointerType (and similar) matchers to those where the
-pointee matches a given matcher.
-
-Given
-  int *a;
-  int const *b;
-  float const *f;
-pointerType(pointee(isConstQualified(), isInteger()))
-  matches "int const *b"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>></td><td class="name" onclick="toggle('pointee0')"><a name="pointee0Anchor">pointee</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html">Type</a>></td></tr>
-<tr><td colspan="4" class="doc" id="pointee0"><pre>Narrows PointerType (and similar) matchers to those where the
-pointee matches a given matcher.
-
-Given
-  int *a;
-  int const *b;
-  float const *f;
-pointerType(pointee(isConstQualified(), isInteger()))
-  matches "int const *b"
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1BlockPointerType.html">BlockPointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberPointerType.html">MemberPointerType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1PointerType.html">PointerType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ReferenceType.html">ReferenceType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('alignOfExpr0')"><a name="alignOfExpr0Anchor">alignOfExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="alignOfExpr0"><pre>Same as unaryExprOrTypeTraitExpr, but only matching
-alignof.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('sizeOfExpr0')"><a name="sizeOfExpr0Anchor">sizeOfExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="sizeOfExpr0"><pre>Same as unaryExprOrTypeTraitExpr, but only matching
-sizeof.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>></td><td class="name" onclick="toggle('refersToDeclaration0')"><a name="refersToDeclaration0Anchor">refersToDeclaration</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="refersToDeclaration0"><pre>Matches a TemplateArgument that refers to a certain declaration.
-
-Given
-  template<typename T> struct A {};
-  struct B { B* next; };
-  A<&B::next> a;
-classTemplateSpecializationDecl(hasAnyTemplateArgument(
-    refersToDeclaration(fieldDecl(hasName("next"))))
-  matches the specialization A<&B::next> with fieldDecl(...) matching
-    B::next
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateArgument.html">TemplateArgument</a>></td><td class="name" onclick="toggle('refersToType0')"><a name="refersToType0Anchor">refersToType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="refersToType0"><pre>Matches a TemplateArgument that refers to a certain type.
-
-Given
-  struct X {};
-  template<typename T> struct A {};
-  A<X> a;
-classTemplateSpecializationDecl(hasAnyTemplateArgument(
-    refersToType(class(hasName("X")))))
-  matches the specialization A<X>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>></td><td class="name" onclick="toggle('hasDeclaration0')"><a name="hasDeclaration0Anchor">hasDeclaration</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration0"><pre>Matches a type if the declaration of the type matches the given
-matcher.
-
-In addition to being usable as Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>, also usable as
-Matcher<T> for any T supporting the getDecl() member function. e.g. various
-subtypes of clang::Type.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html">TypeLoc</a>></td><td class="name" onclick="toggle('loc0')"><a name="loc0Anchor">loc</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="loc0"><pre>Matches TypeLocs for which the given inner
-QualType-matcher matches.
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>></td><td class="name" onclick="toggle('hasDeclaration1')"><a name="hasDeclaration1Anchor">hasDeclaration</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration1"><pre>Matches a type if the declaration of the type matches the given
-matcher.
-
-In addition to being usable as Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>, also usable as
-Matcher<T> for any T supporting the getDecl() member function. e.g. various
-subtypes of clang::Type.
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>,
-  Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a>></td><td class="name" onclick="toggle('hasArgumentOfType0')"><a name="hasArgumentOfType0Anchor">hasArgumentOfType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasArgumentOfType0"><pre>Matches unary expressions that have a specific type of argument.
-
-Given
-  int a, c; float b; int s = sizeof(a) + sizeof(b) + alignof(c);
-unaryExprOrTypeTraitExpr(hasArgumentOfType(asString("int"))
-  matches sizeof(a) and alignof(c)
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryOperator.html">UnaryOperator</a>></td><td class="name" onclick="toggle('hasUnaryOperand0')"><a name="hasUnaryOperand0Anchor">hasUnaryOperand</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasUnaryOperand0"><pre>Matches if the operand of a unary operator matches.
-
-Example matches true (matcher = hasUnaryOperand(boolLiteral(equals(true))))
-  !true
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UsingDecl.html">UsingDecl</a>></td><td class="name" onclick="toggle('hasAnyUsingShadowDecl0')"><a name="hasAnyUsingShadowDecl0Anchor">hasAnyUsingShadowDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UsingShadowDecl.html">UsingShadowDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasAnyUsingShadowDecl0"><pre>Matches any using shadow declaration.
-
-Given
-  namespace X { void b(); }
-  using X::b;
-usingDecl(hasAnyUsingShadowDecl(hasName("b"))))
-  matches using X::b </pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1UsingShadowDecl.html">UsingShadowDecl</a>></td><td class="name" onclick="toggle('hasTargetDecl0')"><a name="hasTargetDecl0Anchor">hasTargetDecl</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html">NamedDecl</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasTargetDecl0"><pre>Matches a using shadow declaration where the target declaration is
-matched by the given matcher.
-
-Given
-  namespace X { int a; void b(); }
-  using X::a;
-  using X::b;
-usingDecl(hasAnyUsingShadowDecl(hasTargetDecl(functionDecl())))
-  matches using X::b but not using X::a </pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ValueDecl.html">ValueDecl</a>></td><td class="name" onclick="toggle('hasType2')"><a name="hasType2Anchor">hasType</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>>  InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasType2"><pre>Overloaded to match the declaration of the expression's or value
-declaration's type.
-
-In case of a value declaration (for example a variable declaration),
-this resolves one layer of indirection. For example, in the value
-declaration "X x;", recordDecl(hasName("X")) matches the declaration of X,
-while varDecl(hasType(recordDecl(hasName("X")))) matches the declaration
-of x."
-
-Example matches x (matcher = expr(hasType(recordDecl(hasName("X")))))
-            and z (matcher = varDecl(hasType(recordDecl(hasName("X")))))
- class X {};
- void y(X &x) { x; X z; }
-
-Usable as: Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>>, Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1ValueDecl.html">ValueDecl</a>>
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html">VarDecl</a>></td><td class="name" onclick="toggle('hasInitializer0')"><a name="hasInitializer0Anchor">hasInitializer</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasInitializer0"><pre>Matches a variable declaration that has an initializer expression
-that matches the given matcher.
-
-Example matches x (matcher = varDecl(hasInitializer(callExpr())))
-  bool y() { return true; }
-  bool x = y();
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1VariableArrayType.html">VariableArrayType</a>></td><td class="name" onclick="toggle('hasSizeExpr0')"><a name="hasSizeExpr0Anchor">hasSizeExpr</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasSizeExpr0"><pre>Matches VariableArrayType nodes that have a specific size
-expression.
-
-Given
-  void f(int b) {
-    int a[b];
-  }
-variableArrayType(hasSizeExpr(ignoringImpCasts(declRefExpr(to(
-  varDecl(hasName("b")))))))
-  matches "int a[b]"
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1WhileStmt.html">WhileStmt</a>></td><td class="name" onclick="toggle('hasBody2')"><a name="hasBody2Anchor">hasBody</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasBody2"><pre>Matches a 'for', 'while', or 'do while' statement that has
-a given body.
-
-Given
-  for (;;) {}
-hasBody(compoundStmt())
-  matches 'for (;;) {}'
-with compoundStmt()
-  matching '{}'
-</pre></td></tr>
-
-
-<tr><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1WhileStmt.html">WhileStmt</a>></td><td class="name" onclick="toggle('hasCondition2')"><a name="hasCondition2Anchor">hasCondition</a></td><td>Matcher&lt<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html">Expr</a>> InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasCondition2"><pre>Matches the condition expression of an if statement, for loop,
-or conditional operator.
-
-Example matches true (matcher = hasCondition(boolLiteral(equals(true))))
-  if (true) {}
-</pre></td></tr>
-
-<!--END_TRAVERSAL_MATCHERS -->
-</table>
-
-</div>
-</body>
-</html>
-
-

Modified: trunk/contrib/llvm/tools/clang/docs/LibASTMatchersTutorial.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/LibASTMatchersTutorial.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/LibASTMatchersTutorial.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,556 +0,0 @@
-===============================================================
-Tutorial for building tools using LibTooling and LibASTMatchers
-===============================================================
-
-This document is intended to show how to build a useful source-to-source
-translation tool based on Clang's `LibTooling <LibTooling.html>`_. It is
-explicitly aimed at people who are new to Clang, so all you should need
-is a working knowledge of C++ and the command line.
-
-In order to work on the compiler, you need some basic knowledge of the
-abstract syntax tree (AST). To this end, the reader is incouraged to
-skim the :doc:`Introduction to the Clang
-AST <IntroductionToTheClangAST>`
-
-Step 0: Obtaining Clang
-=======================
-
-As Clang is part of the LLVM project, you'll need to download LLVM's
-source code first. Both Clang and LLVM are maintained as Subversion
-repositories, but we'll be accessing them through the git mirror. For
-further information, see the `getting started
-guide <http://llvm.org/docs/GettingStarted.html>`_.
-
-.. code-block:: console
-
-      mkdir ~/clang-llvm && cd ~/clang-llvm
-      git clone http://llvm.org/git/llvm.git
-      cd llvm/tools
-      git clone http://llvm.org/git/clang.git
-      cd clang/tools
-      git clone http://llvm.org/git/clang-tools-extra.git extra
-
-Next you need to obtain the CMake build system and Ninja build tool. You
-may already have CMake installed, but current binary versions of CMake
-aren't built with Ninja support.
-
-.. code-block:: console
-
-      cd ~/clang-llvm
-      git clone https://github.com/martine/ninja.git
-      cd ninja
-      git checkout release
-      ./bootstrap.py
-      sudo cp ninja /usr/bin/
-
-      cd ~/clang-llvm
-      git clone git://cmake.org/stage/cmake.git
-      cd cmake
-      git checkout next
-      ./bootstrap
-      make
-      sudo make install
-
-Okay. Now we'll build Clang!
-
-.. code-block:: console
-
-      cd ~/clang-llvm
-      mkdir build && cd build
-      cmake -G Ninja ../llvm -DLLVM_BUILD_TESTS=ON  # Enable tests; default is off.
-      ninja
-      ninja check       # Test LLVM only.
-      ninja clang-test  # Test Clang only.
-      ninja install
-
-And we're live.
-
-All of the tests should pass, though there is a (very) small chance that
-you can catch LLVM and Clang out of sync. Running ``'git svn rebase'``
-in both the llvm and clang directories should fix any problems.
-
-Finally, we want to set Clang as its own compiler.
-
-.. code-block:: console
-
-      cd ~/clang-llvm/build
-      ccmake ../llvm
-
-The second command will bring up a GUI for configuring Clang. You need
-to set the entry for ``CMAKE_CXX_COMPILER``. Press ``'t'`` to turn on
-advanced mode. Scroll down to ``CMAKE_CXX_COMPILER``, and set it to
-``/usr/bin/clang++``, or wherever you installed it. Press ``'c'`` to
-configure, then ``'g'`` to generate CMake's files.
-
-Finally, run ninja one last time, and you're done.
-
-Step 1: Create a ClangTool
-==========================
-
-Now that we have enough background knowledge, it's time to create the
-simplest productive ClangTool in existence: a syntax checker. While this
-already exists as ``clang-check``, it's important to understand what's
-going on.
-
-First, we'll need to create a new directory for our tool and tell CMake
-that it exists. As this is not going to be a core clang tool, it will
-live in the ``tools/extra`` repository.
-
-.. code-block:: console
-
-      cd ~/clang-llvm/llvm/tools/clang
-      mkdir tools/extra/loop-convert
-      echo 'add_subdirectory(loop-convert)' >> tools/extra/CMakeLists.txt
-      vim tools/extra/loop-convert/CMakeLists.txt
-
-CMakeLists.txt should have the following contents:
-
-::
-
-      set(LLVM_LINK_COMPONENTS support)
-      set(LLVM_USED_LIBS clangTooling clangBasic clangAST)
-
-      add_clang_executable(loop-convert
-        LoopConvert.cpp
-        )
-      target_link_libraries(loop-convert
-        clangTooling
-        clangBasic
-        clangASTMatchers
-        )
-
-With that done, Ninja will be able to compile our tool. Let's give it
-something to compile! Put the following into
-``tools/extra/loop-convert/LoopConvert.cpp``. A detailed explanation of
-why the different parts are needed can be found in the `LibTooling
-documentation <LibTooling.html>`_.
-
-.. code-block:: c++
-
-      // Declares clang::SyntaxOnlyAction.
-      #include "clang/Frontend/FrontendActions.h"
-      #include "clang/Tooling/CommonOptionsParser.h"
-      #include "clang/Tooling/Tooling.h"
-      // Declares llvm::cl::extrahelp.
-      #include "llvm/Support/CommandLine.h"
-
-      using namespace clang::tooling;
-      using namespace llvm;
-
-      // CommonOptionsParser declares HelpMessage with a description of the common
-      // command-line options related to the compilation database and input files.
-      // It's nice to have this help message in all tools.
-      static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage);
-
-      // A help message for this specific tool can be added afterwards.
-      static cl::extrahelp MoreHelp("\nMore help text...");
-
-      int main(int argc, const char **argv) {
-        CommonOptionsParser OptionsParser(argc, argv);
-        ClangTool Tool(OptionsParser.getCompilations(),
-                       OptionsParser.getSourcePathList());
-        return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>());
-      }
-
-And that's it! You can compile our new tool by running ninja from the
-``build`` directory.
-
-.. code-block:: console
-
-      cd ~/clang-llvm/build
-      ninja
-
-You should now be able to run the syntax checker, which is located in
-``~/clang-llvm/build/bin``, on any source file. Try it!
-
-.. code-block:: console
-
-      cat "int main() { return 0; }" > test.cpp
-      bin/loop-convert test.cpp --
-
-Note the two dashes after we specify the source file. The additional
-options for the compiler are passed after the dashes rather than loading
-them from a compilation database - there just aren't any options needed
-right now.
-
-Intermezzo: Learn AST matcher basics
-====================================
-
-Clang recently introduced the :doc:`ASTMatcher
-library <LibASTMatchers>` to provide a simple, powerful, and
-concise way to describe specific patterns in the AST. Implemented as a
-DSL powered by macros and templates (see
-`ASTMatchers.h <../doxygen/ASTMatchers_8h_source.html>`_ if you're
-curious), matchers offer the feel of algebraic data types common to
-functional programming languages.
-
-For example, suppose you wanted to examine only binary operators. There
-is a matcher to do exactly that, conveniently named ``binaryOperator``.
-I'll give you one guess what this matcher does:
-
-.. code-block:: c++
-
-      binaryOperator(hasOperatorName("+"), hasLHS(integerLiteral(equals(0))))
-
-Shockingly, it will match against addition expressions whose left hand
-side is exactly the literal 0. It will not match against other forms of
-0, such as ``'\0'`` or ``NULL``, but it will match against macros that
-expand to 0. The matcher will also not match against calls to the
-overloaded operator ``'+'``, as there is a separate ``operatorCallExpr``
-matcher to handle overloaded operators.
-
-There are AST matchers to match all the different nodes of the AST,
-narrowing matchers to only match AST nodes fulfilling specific criteria,
-and traversal matchers to get from one kind of AST node to another. For
-a complete list of AST matchers, take a look at the `AST Matcher
-References <LibASTMatchersReference.html>`_
-
-All matcher that are nouns describe entities in the AST and can be
-bound, so that they can be referred to whenever a match is found. To do
-so, simply call the method ``bind`` on these matchers, e.g.:
-
-.. code-block:: c++
-
-      variable(hasType(isInteger())).bind("intvar")
-
-Step 2: Using AST matchers
-==========================
-
-Okay, on to using matchers for real. Let's start by defining a matcher
-which will capture all ``for`` statements that define a new variable
-initialized to zero. Let's start with matching all ``for`` loops:
-
-.. code-block:: c++
-
-      forStmt()
-
-Next, we want to specify that a single variable is declared in the first
-portion of the loop, so we can extend the matcher to
-
-.. code-block:: c++
-
-      forStmt(hasLoopInit(declStmt(hasSingleDecl(varDecl()))))
-
-Finally, we can add the condition that the variable is initialized to
-zero.
-
-.. code-block:: c++
-
-      forStmt(hasLoopInit(declStmt(hasSingleDecl(varDecl(
-        hasInitializer(integerLiteral(equals(0))))))))
-
-It is fairly easy to read and understand the matcher definition ("match
-loops whose init portion declares a single variable which is initialized
-to the integer literal 0"), but deciding that every piece is necessary
-is more difficult. Note that this matcher will not match loops whose
-variables are initialized to ``'\0'``, ``0.0``, ``NULL``, or any form of
-zero besides the integer 0.
-
-The last step is giving the matcher a name and binding the ``ForStmt``
-as we will want to do something with it:
-
-.. code-block:: c++
-
-      StatementMatcher LoopMatcher =
-        forStmt(hasLoopInit(declStmt(hasSingleDecl(varDecl(
-          hasInitializer(integerLiteral(equals(0)))))))).bind("forLoop");
-
-Once you have defined your matchers, you will need to add a little more
-scaffolding in order to run them. Matchers are paired with a
-``MatchCallback`` and registered with a ``MatchFinder`` object, then run
-from a ``ClangTool``. More code!
-
-Add the following to ``LoopConvert.cpp``:
-
-.. code-block:: c++
-
-      #include "clang/ASTMatchers/ASTMatchers.h"
-      #include "clang/ASTMatchers/ASTMatchFinder.h"
-
-      using namespace clang;
-      using namespace clang::ast_matchers;
-
-      StatementMatcher LoopMatcher =
-        forStmt(hasLoopInit(declStmt(hasSingleDecl(varDecl(
-          hasInitializer(integerLiteral(equals(0)))))))).bind("forLoop");
-
-      class LoopPrinter : public MatchFinder::MatchCallback {
-      public :
-        virtual void run(const MatchFinder::MatchResult &Result) {
-          if (const ForStmt *FS = Result.Nodes.getNodeAs<clang::ForStmt>("forLoop"))
-            FS->dump();
-        }
-      };
-
-And change ``main()`` to:
-
-.. code-block:: c++
-
-      int main(int argc, const char **argv) {
-        CommonOptionsParser OptionsParser(argc, argv);
-        ClangTool Tool(OptionsParser.getCompilations(),
-                       OptionsParser.getSourcePathList());
-
-        LoopPrinter Printer;
-        MatchFinder Finder;
-        Finder.addMatcher(LoopMatcher, &Printer);
-
-        return Tool.run(newFrontendActionFactory(&Finder));
-      }
-
-Now, you should be able to recompile and run the code to discover for
-loops. Create a new file with a few examples, and test out our new
-handiwork:
-
-.. code-block:: console
-
-      cd ~/clang-llvm/llvm/llvm_build/
-      ninja loop-convert
-      vim ~/test-files/simple-loops.cc
-      bin/loop-convert ~/test-files/simple-loops.cc
-
-Step 3.5: More Complicated Matchers
-===================================
-
-Our simple matcher is capable of discovering for loops, but we would
-still need to filter out many more ourselves. We can do a good portion
-of the remaining work with some cleverly chosen matchers, but first we
-need to decide exactly which properties we want to allow.
-
-How can we characterize for loops over arrays which would be eligible
-for translation to range-based syntax? Range based loops over arrays of
-size ``N`` that:
-
--  start at index ``0``
--  iterate consecutively
--  end at index ``N-1``
-
-We already check for (1), so all we need to add is a check to the loop's
-condition to ensure that the loop's index variable is compared against
-``N`` and another check to ensure that the increment step just
-increments this same variable. The matcher for (2) is straightforward:
-require a pre- or post-increment of the same variable declared in the
-init portion.
-
-Unfortunately, such a matcher is impossible to write. Matchers contain
-no logic for comparing two arbitrary AST nodes and determining whether
-or not they are equal, so the best we can do is matching more than we
-would like to allow, and punting extra comparisons to the callback.
-
-In any case, we can start building this sub-matcher. We can require that
-the increment step be a unary increment like this:
-
-.. code-block:: c++
-
-      hasIncrement(unaryOperator(hasOperatorName("++")))
-
-Specifying what is incremented introduces another quirk of Clang's AST:
-Usages of variables are represented as ``DeclRefExpr``'s ("declaration
-reference expressions") because they are expressions which refer to
-variable declarations. To find a ``unaryOperator`` that refers to a
-specific declaration, we can simply add a second condition to it:
-
-.. code-block:: c++
-
-      hasIncrement(unaryOperator(
-        hasOperatorName("++"),
-        hasUnaryOperand(declRefExpr())))
-
-Furthermore, we can restrict our matcher to only match if the
-incremented variable is an integer:
-
-.. code-block:: c++
-
-      hasIncrement(unaryOperator(
-        hasOperatorName("++"),
-        hasUnaryOperand(declRefExpr(to(varDecl(hasType(isInteger())))))))
-
-And the last step will be to attach an identifier to this variable, so
-that we can retrieve it in the callback:
-
-.. code-block:: c++
-
-      hasIncrement(unaryOperator(
-        hasOperatorName("++"),
-        hasUnaryOperand(declRefExpr(to(
-          varDecl(hasType(isInteger())).bind("incrementVariable"))))))
-
-We can add this code to the definition of ``LoopMatcher`` and make sure
-that our program, outfitted with the new matcher, only prints out loops
-that declare a single variable initialized to zero and have an increment
-step consisting of a unary increment of some variable.
-
-Now, we just need to add a matcher to check if the condition part of the
-``for`` loop compares a variable against the size of the array. There is
-only one problem - we don't know which array we're iterating over
-without looking at the body of the loop! We are again restricted to
-approximating the result we want with matchers, filling in the details
-in the callback. So we start with:
-
-.. code-block:: c++
-
-      hasCondition(binaryOperator(hasOperatorName("<"))
-
-It makes sense to ensure that the left-hand side is a reference to a
-variable, and that the right-hand side has integer type.
-
-.. code-block:: c++
-
-      hasCondition(binaryOperator(
-        hasOperatorName("<"),
-        hasLHS(declRefExpr(to(varDecl(hasType(isInteger()))))),
-        hasRHS(expr(hasType(isInteger())))))
-
-Why? Because it doesn't work. Of the three loops provided in
-``test-files/simple.cpp``, zero of them have a matching condition. A
-quick look at the AST dump of the first for loop, produced by the
-previous iteration of loop-convert, shows us the answer:
-
-::
-
-      (ForStmt 0x173b240
-        (DeclStmt 0x173afc8
-          0x173af50 "int i =
-            (IntegerLiteral 0x173afa8 'int' 0)")
-        <<>>
-        (BinaryOperator 0x173b060 '_Bool' '<'
-          (ImplicitCastExpr 0x173b030 'int'
-            (DeclRefExpr 0x173afe0 'int' lvalue Var 0x173af50 'i' 'int'))
-          (ImplicitCastExpr 0x173b048 'int'
-            (DeclRefExpr 0x173b008 'const int' lvalue Var 0x170fa80 'N' 'const int')))
-        (UnaryOperator 0x173b0b0 'int' lvalue prefix '++'
-          (DeclRefExpr 0x173b088 'int' lvalue Var 0x173af50 'i' 'int'))
-        (CompoundStatement ...
-
-We already know that the declaration and increments both match, or this
-loop wouldn't have been dumped. The culprit lies in the implicit cast
-applied to the first operand (i.e. the LHS) of the less-than operator,
-an L-value to R-value conversion applied to the expression referencing
-``i``. Thankfully, the matcher library offers a solution to this problem
-in the form of ``ignoringParenImpCasts``, which instructs the matcher to
-ignore implicit casts and parentheses before continuing to match.
-Adjusting the condition operator will restore the desired match.
-
-.. code-block:: c++
-
-      hasCondition(binaryOperator(
-        hasOperatorName("<"),
-        hasLHS(ignoringParenImpCasts(declRefExpr(
-          to(varDecl(hasType(isInteger())))))),
-        hasRHS(expr(hasType(isInteger())))))
-
-After adding binds to the expressions we wished to capture and
-extracting the identifier strings into variables, we have array-step-2
-completed.
-
-Step 4: Retrieving Matched Nodes
-================================
-
-So far, the matcher callback isn't very interesting: it just dumps the
-loop's AST. At some point, we will need to make changes to the input
-source code. Next, we'll work on using the nodes we bound in the
-previous step.
-
-The ``MatchFinder::run()`` callback takes a
-``MatchFinder::MatchResult&`` as its parameter. We're most interested in
-its ``Context`` and ``Nodes`` members. Clang uses the ``ASTContext``
-class to represent contextual information about the AST, as the name
-implies, though the most functionally important detail is that several
-operations require an ``ASTContext*`` parameter. More immediately useful
-is the set of matched nodes, and how we retrieve them.
-
-Since we bind three variables (identified by ConditionVarName,
-InitVarName, and IncrementVarName), we can obtain the matched nodes by
-using the ``getNodeAs()`` member function.
-
-In ``LoopConvert.cpp`` add
-
-.. code-block:: c++
-
-      #include "clang/AST/ASTContext.h"
-
-Change ``LoopMatcher`` to
-
-.. code-block:: c++
-
-      StatementMatcher LoopMatcher =
-          forStmt(hasLoopInit(declStmt(
-                      hasSingleDecl(varDecl(hasInitializer(integerLiteral(equals(0))))
-                                        .bind("initVarName")))),
-                  hasIncrement(unaryOperator(
-                      hasOperatorName("++"),
-                      hasUnaryOperand(declRefExpr(
-                          to(varDecl(hasType(isInteger())).bind("incVarName")))))),
-                  hasCondition(binaryOperator(
-                      hasOperatorName("<"),
-                      hasLHS(ignoringParenImpCasts(declRefExpr(
-                          to(varDecl(hasType(isInteger())).bind("condVarName"))))),
-                      hasRHS(expr(hasType(isInteger())))))).bind("forLoop");
-
-And change ``LoopPrinter::run`` to
-
-.. code-block:: c++
-
-      void LoopPrinter::run(const MatchFinder::MatchResult &Result) {
-        ASTContext *Context = Result.Context;
-        const ForStmt *FS = Result.Nodes.getStmtAs<ForStmt>("forLoop");
-        // We do not want to convert header files!
-        if (!FS || !Context->getSourceManager().isFromMainFile(FS->getForLoc()))
-          return;
-        const VarDecl *IncVar = Result.Nodes.getNodeAs<VarDecl>("incVarName");
-        const VarDecl *CondVar = Result.Nodes.getNodeAs<VarDecl>("condVarName");
-        const VarDecl *InitVar = Result.Nodes.getNodeAs<VarDecl>("initVarName");
-
-        if (!areSameVariable(IncVar, CondVar) || !areSameVariable(IncVar, InitVar))
-          return;
-        llvm::outs() << "Potential array-based loop discovered.\n";
-      }
-
-Clang associates a ``VarDecl`` with each variable to represent the variable's
-declaration. Since the "canonical" form of each declaration is unique by
-address, all we need to do is make sure neither ``ValueDecl`` (base class of
-``VarDecl``) is ``NULL`` and compare the canonical Decls.
-
-.. code-block:: c++
-
-      static bool areSameVariable(const ValueDecl *First, const ValueDecl *Second) {
-        return First && Second &&
-               First->getCanonicalDecl() == Second->getCanonicalDecl();
-      }
-
-If execution reaches the end of ``LoopPrinter::run()``, we know that the
-loop shell that looks like
-
-.. code-block:: c++
-
-      for (int i= 0; i < expr(); ++i) { ... }
-
-For now, we will just print a message explaining that we found a loop.
-The next section will deal with recursively traversing the AST to
-discover all changes needed.
-
-As a side note, it's not as trivial to test if two expressions are the same,
-though Clang has already done the hard work for us by providing a way to
-canonicalize expressions:
-
-.. code-block:: c++
-
-      static bool areSameExpr(ASTContext *Context, const Expr *First,
-                              const Expr *Second) {
-        if (!First || !Second)
-          return false;
-        llvm::FoldingSetNodeID FirstID, SecondID;
-        First->Profile(FirstID, *Context, true);
-        Second->Profile(SecondID, *Context, true);
-        return FirstID == SecondID;
-      }
-
-This code relies on the comparison between two
-``llvm::FoldingSetNodeIDs``. As the documentation for
-``Stmt::Profile()`` indicates, the ``Profile()`` member function builds
-a description of a node in the AST, based on its properties, along with
-those of its children. ``FoldingSetNodeID`` then serves as a hash we can
-use to compare expressions. We will need ``areSameExpr`` later. Before
-you run the new code on the additional loops added to
-test-files/simple.cpp, try to figure out which ones will be considered
-potentially convertible.

Modified: trunk/contrib/llvm/tools/clang/docs/LibFormat.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/LibFormat.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/LibFormat.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-=========
-LibFormat
-=========
-
-LibFormat is a library that implements automatic source code formatting based
-on Clang. This documents describes the LibFormat interface and design as well
-as some basic style discussions.
-
-If you just want to use `clang-format` as a tool or integrated into an editor,
-checkout :doc:`ClangFormat`.
-
-Design
-------
-
-FIXME: Write up design.
-
-
-Interface
----------
-
-The core routine of LibFormat is ``reformat()``:
-
-.. code-block:: c++
-
-  tooling::Replacements reformat(const FormatStyle &Style, Lexer &Lex,
-                                 SourceManager &SourceMgr,
-                                 std::vector<CharSourceRange> Ranges);
-
-This reads a token stream out of the lexer ``Lex`` and reformats all the code
-ranges in ``Ranges``. The ``FormatStyle`` controls basic decisions made during
-formatting. A list of options can be found under :ref:`style-options`. 
-
-
-.. _style-options:
-
-Style Options
--------------
-
-The style options describe specific formatting options that can be used in
-order to make `ClangFormat` comply with different style guides. Currently,
-two style guides are hard-coded:
-
-.. code-block:: c++
-
-  /// \brief Returns a format style complying with the LLVM coding standards:
-  /// http://llvm.org/docs/CodingStandards.html.
-  FormatStyle getLLVMStyle();
-
-  /// \brief Returns a format style complying with Google's C++ style guide:
-  /// http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml.
-  FormatStyle getGoogleStyle();
-
-These options are also exposed in the :doc:`standalone tools <ClangFormat>`
-through the `-style` option.
-
-In the future, we plan on making this configurable.

Modified: trunk/contrib/llvm/tools/clang/docs/LibTooling.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/LibTooling.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/LibTooling.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,192 +0,0 @@
-==========
-LibTooling
-==========
-
-LibTooling is a library to support writing standalone tools based on Clang.
-This document will provide a basic walkthrough of how to write a tool using
-LibTooling.
-
-For the information on how to setup Clang Tooling for LLVM see
-:doc:`HowToSetupToolingForLLVM`
-
-Introduction
-------------
-
-Tools built with LibTooling, like Clang Plugins, run ``FrontendActions`` over
-code.
-
-..  See FIXME for a tutorial on how to write FrontendActions.
-
-In this tutorial, we'll demonstrate the different ways of running Clang's
-``SyntaxOnlyAction``, which runs a quick syntax check, over a bunch of code.
-
-Parsing a code snippet in memory
---------------------------------
-
-If you ever wanted to run a ``FrontendAction`` over some sample code, for
-example to unit test parts of the Clang AST, ``runToolOnCode`` is what you
-looked for.  Let me give you an example:
-
-.. code-block:: c++
-
-  #include "clang/Tooling/Tooling.h"
-
-  TEST(runToolOnCode, CanSyntaxCheckCode) {
-    // runToolOnCode returns whether the action was correctly run over the
-    // given code.
-    EXPECT_TRUE(runToolOnCode(new clang::SyntaxOnlyAction, "class X {};"));
-  }
-
-Writing a standalone tool
--------------------------
-
-Once you unit tested your ``FrontendAction`` to the point where it cannot
-possibly break, it's time to create a standalone tool.  For a standalone tool
-to run clang, it first needs to figure out what command line arguments to use
-for a specified file.  To that end we create a ``CompilationDatabase``.  There
-are different ways to create a compilation database, and we need to support all
-of them depending on command-line options.  There's the ``CommonOptionsParser``
-class that takes the responsibility to parse command-line parameters related to
-compilation databases and inputs, so that all tools share the implementation.
-
-Parsing common tools options
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-``CompilationDatabase`` can be read from a build directory or the command line.
-Using ``CommonOptionsParser`` allows for explicit specification of a compile
-command line, specification of build path using the ``-p`` command-line option,
-and automatic location of the compilation database using source files paths.
-
-.. code-block:: c++
-
-  #include "clang/Tooling/CommonOptionsParser.h"
-
-  using namespace clang::tooling;
-
-  int main(int argc, const char **argv) {
-    // CommonOptionsParser constructor will parse arguments and create a
-    // CompilationDatabase.  In case of error it will terminate the program.
-    CommonOptionsParser OptionsParser(argc, argv);
-
-    // Use OptionsParser.getCompilations() and OptionsParser.getSourcePathList()
-    // to retrieve CompilationDatabase and the list of input file paths.
-  }
-
-Creating and running a ClangTool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Once we have a ``CompilationDatabase``, we can create a ``ClangTool`` and run
-our ``FrontendAction`` over some code.  For example, to run the
-``SyntaxOnlyAction`` over the files "a.cc" and "b.cc" one would write:
-
-.. code-block:: c++
-
-  // A clang tool can run over a number of sources in the same process...
-  std::vector<std::string> Sources;
-  Sources.push_back("a.cc");
-  Sources.push_back("b.cc");
-
-  // We hand the CompilationDatabase we created and the sources to run over into
-  // the tool constructor.
-  ClangTool Tool(OptionsParser.getCompilations(), Sources);
-
-  // The ClangTool needs a new FrontendAction for each translation unit we run
-  // on.  Thus, it takes a FrontendActionFactory as parameter.  To create a
-  // FrontendActionFactory from a given FrontendAction type, we call
-  // newFrontendActionFactory<clang::SyntaxOnlyAction>().
-  int result = Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>());
-
-Putting it together --- the first tool
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Now we combine the two previous steps into our first real tool.  This example
-tool is also checked into the clang tree at
-``tools/clang-check/ClangCheck.cpp``.
-
-.. code-block:: c++
-
-  // Declares clang::SyntaxOnlyAction.
-  #include "clang/Frontend/FrontendActions.h"
-  #include "clang/Tooling/CommonOptionsParser.h"
-  #include "clang/Tooling/Tooling.h"
-  // Declares llvm::cl::extrahelp.
-  #include "llvm/Support/CommandLine.h"
-
-  using namespace clang::tooling;
-  using namespace llvm;
-
-  // CommonOptionsParser declares HelpMessage with a description of the common
-  // command-line options related to the compilation database and input files.
-  // It's nice to have this help message in all tools.
-  static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage);
-
-  // A help message for this specific tool can be added afterwards.
-  static cl::extrahelp MoreHelp("\nMore help text...");
-
-  int main(int argc, const char **argv) {
-    CommonOptionsParser OptionsParser(argc, argv);
-    ClangTool Tool(OptionsParser.getCompilations(),
-    OptionsParser.getSourcePathList());
-    return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>());
-  }
-
-Running the tool on some code
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When you check out and build clang, clang-check is already built and available
-to you in bin/clang-check inside your build directory.
-
-You can run clang-check on a file in the llvm repository by specifying all the
-needed parameters after a "``--``" separator:
-
-.. code-block:: bash
-
-  $ cd /path/to/source/llvm
-  $ export BD=/path/to/build/llvm
-  $ $BD/bin/clang-check tools/clang/tools/clang-check/ClangCheck.cpp -- \
-        clang++ -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS \
-        -Itools/clang/include -I$BD/include -Iinclude \
-        -Itools/clang/lib/Headers -c
-
-As an alternative, you can also configure cmake to output a compile command
-database into its build directory:
-
-.. code-block:: bash
-
-  # Alternatively to calling cmake, use ccmake, toggle to advanced mode and
-  # set the parameter CMAKE_EXPORT_COMPILE_COMMANDS from the UI.
-  $ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
-
-This creates a file called ``compile_commands.json`` in the build directory.
-Now you can run :program:`clang-check` over files in the project by specifying
-the build path as first argument and some source files as further positional
-arguments:
-
-.. code-block:: bash
-
-  $ cd /path/to/source/llvm
-  $ export BD=/path/to/build/llvm
-  $ $BD/bin/clang-check -p $BD tools/clang/tools/clang-check/ClangCheck.cpp
-
-
-.. _libtooling_builtin_includes:
-
-Builtin includes
-^^^^^^^^^^^^^^^^
-
-Clang tools need their builtin headers and search for them the same way Clang
-does.  Thus, the default location to look for builtin headers is in a path
-``$(dirname /path/to/tool)/../lib/clang/3.3/include`` relative to the tool
-binary.  This works out-of-the-box for tools running from llvm's toplevel
-binary directory after building clang-headers, or if the tool is running from
-the binary directory of a clang install next to the clang binary.
-
-Tips: if your tool fails to find ``stddef.h`` or similar headers, call the tool
-with ``-v`` and look at the search paths it looks through.
-
-Linking
-^^^^^^^
-
-For a list of libraries to link, look at one of the tools' Makefiles (for
-example `clang-check/Makefile
-<http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-check/Makefile?view=markup>`_).

Modified: trunk/contrib/llvm/tools/clang/docs/Makefile.sphinx
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/Makefile.sphinx	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/Makefile.sphinx	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,163 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
-BUILDDIR      = _build
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext default
-
-default: html
-
-help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html       to make standalone HTML files"
-	@echo "  dirhtml    to make HTML files named index.html in directories"
-	@echo "  singlehtml to make a single large HTML file"
-	@echo "  pickle     to make pickle files"
-	@echo "  json       to make JSON files"
-	@echo "  htmlhelp   to make HTML files and a HTML help project"
-	@echo "  qthelp     to make HTML files and a qthelp project"
-	@echo "  devhelp    to make HTML files and a Devhelp project"
-	@echo "  epub       to make an epub"
-	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
-	@echo "  text       to make text files"
-	@echo "  man        to make manual pages"
-	@echo "  texinfo    to make Texinfo files"
-	@echo "  info       to make Texinfo files and run them through makeinfo"
-	@echo "  gettext    to make PO message catalogs"
-	@echo "  changes    to make an overview of all changed/added/deprecated items"
-	@echo "  linkcheck  to check all external links for integrity"
-	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
-
-clean:
-	-rm -rf $(BUILDDIR)/*
-
-html:
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-	@echo
-	@# FIXME: Remove this `cp` once HTML->Sphinx transition is completed.
-	@# Kind of a hack, but HTML-formatted docs are on the way out anyway.
-	@echo "Copying legacy HTML-formatted docs into $(BUILDDIR)/html"
-	@cp -a *.html $(BUILDDIR)/html
-	@# FIXME: What we really need is a way to specify redirects, so that
-	@# we can just redirect to a reST'ified version of this document.
-	@# PR14714 is tracking the issue of redirects.
-	@cp -a Block-ABI-Apple.txt $(BUILDDIR)/html
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
-	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
-	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
-	@echo
-	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-json:
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
-	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
-	@echo
-	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
-	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Clang.qhcp"
-	@echo "To view the help file:"
-	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Clang.qhc"
-
-devhelp:
-	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
-	@echo
-	@echo "Build finished."
-	@echo "To view the help file:"
-	@echo "# mkdir -p $$HOME/.local/share/devhelp/Clang"
-	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Clang"
-	@echo "# devhelp"
-
-epub:
-	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
-	@echo
-	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
-	@echo "Run \`make' in that directory to run these through (pdf)latex" \
-	      "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through pdflatex..."
-	$(MAKE) -C $(BUILDDIR)/latex all-pdf
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
-	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
-	@echo
-	@echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
-	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
-	@echo
-	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo
-	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
-	@echo "Run \`make' in that directory to run these through makeinfo" \
-	      "(use \`make info' here to do that automatically)."
-
-info:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo "Running Texinfo files through makeinfo..."
-	make -C $(BUILDDIR)/texinfo info
-	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
-	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
-	@echo
-	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
-	@echo
-	@echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
-	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
-	@echo "Testing of doctests in the sources finished, look at the " \
-	      "results in $(BUILDDIR)/doctest/output.txt."

Modified: trunk/contrib/llvm/tools/clang/docs/MemorySanitizer.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/MemorySanitizer.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/MemorySanitizer.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,181 +0,0 @@
-================
-MemorySanitizer
-================
-
-.. contents::
-   :local:
-
-Introduction
-============
-
-MemorySanitizer is a detector of uninitialized reads. It consists of a
-compiler instrumentation module and a run-time library.
-
-Typical slowdown introduced by MemorySanitizer is **3x**.
-
-How to build
-============
-
-Follow the `clang build instructions <../get_started.html>`_. CMake
-build is supported.
-
-Usage
-=====
-
-Simply compile and link your program with ``-fsanitize=memory`` flag.
-The MemorySanitizer run-time library should be linked to the final
-executable, so make sure to use ``clang`` (not ``ld``) for the final
-link step. When linking shared libraries, the MemorySanitizer run-time
-is not linked, so ``-Wl,-z,defs`` may cause link errors (don't use it
-with MemorySanitizer). To get a reasonable performance add ``-O1`` or
-higher. To get meaninful stack traces in error messages add
-``-fno-omit-frame-pointer``. To get perfect stack traces you may need
-to disable inlining (just use ``-O1``) and tail call elimination
-(``-fno-optimize-sibling-calls``).
-
-.. code-block:: console
-
-    % cat umr.cc
-    #include <stdio.h>
-
-    int main(int argc, char** argv) {
-      int* a = new int[10];
-      a[5] = 0;
-      if (a[argc])
-        printf("xx\n");
-      return 0;
-    }
-
-    % clang -fsanitize=memory -fno-omit-frame-pointer -g -O2 umr.cc
-
-If a bug is detected, the program will print an error message to
-stderr and exit with a non-zero exit code. Currently, MemorySanitizer
-does not symbolize its output by default, so you may need to use a
-separate script to symbolize the result offline (this will be fixed in
-future).
-
-.. code-block:: console
-
-    % ./a.out 2>log
-    % projects/compiler-rt/lib/asan/scripts/asan_symbolize.py / < log | c++filt
-    ==30106==  WARNING: MemorySanitizer: UMR (uninitialized-memory-read)
-        #0 0x7f45944b418a in main umr.cc:6
-        #1 0x7f45938b676c in __libc_start_main libc-start.c:226
-    Exiting
-
-By default, MemorySanitizer exits on the first detected error.
-
-``__has_feature(memory_sanitizer)``
-------------------------------------
-
-In some cases one may need to execute different code depending on
-whether MemorySanitizer is enabled. :ref:`\_\_has\_feature
-<langext-__has_feature-__has_extension>` can be used for this purpose.
-
-.. code-block:: c
-
-    #if defined(__has_feature)
-    #  if __has_feature(memory_sanitizer)
-    // code that builds only under MemorySanitizer
-    #  endif
-    #endif
-
-``__attribute__((no_sanitize_memory))``
------------------------------------------------
-
-Some code should not be checked by MemorySanitizer.
-One may use the function attribute
-:ref:`no_sanitize_memory <langext-memory_sanitizer>`
-to disable uninitialized checks in a particular function.
-MemorySanitizer may still instrument such functions to avoid false positives.
-This attribute may not be
-supported by other compilers, so we suggest to use it together with
-``__has_feature(memory_sanitizer)``. Note: currently, this attribute will be
-lost if the function is inlined.
-
-Origin Tracking
-===============
-
-MemorySanitizer can track origins of unitialized values, similar to
-Valgrind's --track-origins option. This feature is enabled by
-``-fsanitize-memory-track-origins`` Clang option. With the code from
-the example above,
-
-.. code-block:: console
-
-    % clang -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -g -O2 umr.cc
-    % ./a.out 2>log
-    % projects/compiler-rt/lib/asan/scripts/asan_symbolize.py / < log | c++filt
-    ==14425==  WARNING: MemorySanitizer: UMR (uninitialized-memory-read)
-    ==14425== WARNING: Trying to symbolize code, but external symbolizer is not initialized!
-        #0 0x7f8bdda3824b in main umr.cc:6
-        #1 0x7f8bdce3a76c in __libc_start_main libc-start.c:226
-      raw origin id: 2030043137
-      ORIGIN: heap allocation:
-        #0 0x7f8bdda4034b in operator new[](unsigned long) msan_new_delete.cc:39
-        #1 0x7f8bdda3814d in main umr.cc:4
-        #2 0x7f8bdce3a76c in __libc_start_main libc-start.c:226
-    Exiting
-
-Origin tracking has proved to be very useful for debugging UMR
-reports. It slows down program execution by a factor of 1.5x-2x on top
-of the usual MemorySanitizer slowdown.
-
-Handling external code
-============================
-
-MemorySanitizer requires that all program code is instrumented. This
-also includes any libraries that the program depends on, even libc.
-Failing to achieve this may result in false UMR reports.
-
-Full MemorySanitizer instrumentation is very difficult to achieve. To
-make it easier, MemorySanitizer runtime library includes 70+
-interceptors for the most common libc functions. They make it possible
-to run MemorySanitizer-instrumented programs linked with
-uninstrumented libc. For example, the authors were able to bootstrap
-MemorySanitizer-instrumented Clang compiler by linking it with
-self-built instrumented libcxx (as a replacement for libstdc++).
-
-In the case when rebuilding all program dependencies with
-MemorySanitizer is problematic, an experimental MSanDR tool can be
-used. It is a DynamoRio-based tool that uses dynamic instrumentation
-to avoid false positives due to uninstrumented code. The tool simply
-marks memory from instrumented libraries as fully initialized. See
-`http://code.google.com/p/memory-sanitizer/wiki/Running#Running_with_the_dynamic_tool`
-for more information.
-
-Supported Platforms
-===================
-
-MemorySanitizer is supported on
-
-* Linux x86\_64 (tested on Ubuntu 10.04 and 12.04);
-
-Limitations
-===========
-
-* MemorySanitizer uses 2x more real memory than a native run, 3x with
-  origin tracking.
-* MemorySanitizer maps (but not reserves) 64 Terabytes of virtual
-  address space. This means that tools like ``ulimit`` may not work as
-  usually expected.
-* Static linking is not supported.
-* Non-position-independent executables are not supported.  Therefore, the
-  ``fsanitize=memory`` flag will cause Clang to act as though the ``-fPIE``
-  flag had been supplied if compiling without ``-fPIC``, and as though the
-  ``-pie`` flag had been supplied if linking an executable.
-* Depending on the version of Linux kernel, running without ASLR may
-  be not supported. Note that GDB disables ASLR by default. To debug
-  instrumented programs, use "set disable-randomization off".
-
-Current Status
-==============
-
-MemorySanitizer is an experimental tool. It is known to work on large
-real-world programs, like Clang/LLVM itself.
-
-More Information
-================
-
-`http://code.google.com/p/memory-sanitizer <http://code.google.com/p/memory-sanitizer/>`_
-

Modified: trunk/contrib/llvm/tools/clang/docs/Modules.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/Modules.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/Modules.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,713 +0,0 @@
-=======
-Modules
-=======
-
-.. contents::
-   :local:
-
-.. warning::
-   The functionality described on this page is still experimental! Please
-   try it out and send us bug reports!
-
-Introduction
-============
-Most software is built using a number of software libraries, including libraries supplied by the platform, internal libraries built as part of the software itself to provide structure, and third-party libraries. For each library, one needs to access both its interface (API) and its implementation. In the C family of languages, the interface to a library is accessed by including the appropriate header files(s):
-
-.. code-block:: c
-
-  #include <SomeLib.h>
-
-The implementation is handled separately by linking against the appropriate library. For example, by passing ``-lSomeLib`` to the linker.
-
-Modules provide an alternative, simpler way to use software libraries that provides better compile-time scalability and eliminates many of the problems inherent to using the C preprocessor to access the API of a library.
-
-Problems with the current model
--------------------------------
-The ``#include`` mechanism provided by the C preprocessor is a very poor way to access the API of a library, for a number of reasons:
-
-* **Compile-time scalability**: Each time a header is included, the
-  compiler must preprocess and parse the text in that header and every
-  header it includes, transitively. This process must be repeated for
-  every translation unit in the application, which involves a huge
-  amount of redundant work. In a project with *N* translation units
-  and *M* headers included in each translation unit, the compiler is
-  performing *M x N* work even though most of the *M* headers are
-  shared among multiple translation units. C++ is particularly bad,
-  because the compilation model for templates forces a huge amount of
-  code into headers.
-
-* **Fragility**: ``#include`` directives are treated as textual
-  inclusion by the preprocessor, and are therefore subject to any  
-  active macro definitions at the time of inclusion. If any of the 
-  active macro definitions happens to collide with a name in the 
-  library, it can break the library API or cause compilation failures 
-  in the library header itself. For an extreme example, 
-  ``#define std "The C++ Standard"`` and then include a standard  
-  library header: the result is a horrific cascade of failures in the
-  C++ Standard Library's implementation. More subtle real-world
-  problems occur when the headers for two different libraries interact
-  due to macro collisions, and users are forced to reorder
-  ``#include`` directives or introduce ``#undef`` directives to break
-  the (unintended) dependency.
-
-* **Conventional workarounds**: C programmers have
-  adopted a number of conventions to work around the fragility of the
-  C preprocessor model. Include guards, for example, are required for
-  the vast majority of headers to ensure that multiple inclusion
-  doesn't break the compile. Macro names are written with
-  ``LONG_PREFIXED_UPPERCASE_IDENTIFIERS`` to avoid collisions, and some
-  library/framework developers even use ``__underscored`` names
-  in headers to avoid collisions with "normal" names that (by
-  convention) shouldn't even be macros. These conventions are a
-  barrier to entry for developers coming from non-C languages, are
-  boilerplate for more experienced developers, and make our headers
-  far uglier than they should be.
-
-* **Tool confusion**: In a C-based language, it is hard to build tools
-  that work well with software libraries, because the boundaries of
-  the libraries are not clear. Which headers belong to a particular
-  library, and in what order should those headers be included to
-  guarantee that they compile correctly? Are the headers C, C++,
-  Objective-C++, or one of the variants of these languages? What
-  declarations in those headers are actually meant to be part of the
-  API, and what declarations are present only because they had to be
-  written as part of the header file?
-
-Semantic import
----------------
-Modules improve access to the API of software libraries by replacing the textual preprocessor inclusion model with a more robust, more efficient semantic model. From the user's perspective, the code looks only slightly different, because one uses an ``import`` declaration rather than a ``#include`` preprocessor directive:
-
-.. code-block:: c
-
-  import std.io; // pseudo-code; see below for syntax discussion
-
-However, this module import behaves quite differently from the corresponding ``#include <stdio.h>``: when the compiler sees the module import above, it loads a binary representation of the ``std.io`` module and makes its API available to the application directly. Preprocessor definitions that precede the import declaration have no impact on the API provided by ``std.io``, because the module itself was compiled as a separate, standalone module. Additionally, any linker flags required to use the ``std.io`` module will automatically be provided when the module is imported [#]_
-This semantic import model addresses many of the problems of the preprocessor inclusion model:
-
-* **Compile-time scalability**: The ``std.io`` module is only compiled once, and importing the module into a translation unit is a constant-time operation (independent of module system). Thus, the API of each software library is only parsed once, reducing the *M x N* compilation problem to an *M + N* problem.
-
-* **Fragility**: Each module is parsed as a standalone entity, so it has a consistent preprocessor environment. This completely eliminates the need for ``__underscored`` names and similarly defensive tricks. Moreover, the current preprocessor definitions when an import declaration is encountered are ignored, so one software library can not affect how another software library is compiled, eliminating include-order dependencies.
-
-* **Tool confusion**: Modules describe the API of software libraries, and tools can reason about and present a module as a representation of that API. Because modules can only be built standalone, tools can rely on the module definition to ensure that they get the complete API for the library. Moreover, modules can specify which languages they work with, so, e.g., one can not accidentally attempt to load a C++ module into a C program.
-
-Problems modules do not solve
------------------------------
-Many programming languages have a module or package system, and because of the variety of features provided by these languages it is important to define what modules do *not* do. In particular, all of the following are considered out-of-scope for modules:
-
-* **Rewrite the world's code**: It is not realistic to require applications or software libraries to make drastic or non-backward-compatible changes, nor is it feasible to completely eliminate headers. Modules must interoperate with existing software libraries and allow a gradual transition.
-
-* **Versioning**: Modules have no notion of version information. Programmers must still rely on the existing versioning mechanisms of the underlying language (if any exist) to version software libraries.
-
-* **Namespaces**: Unlike in some languages, modules do not imply any notion of namespaces. Thus, a struct declared in one module will still conflict with a struct of the same name declared in a different module, just as they would if declared in two different headers. This aspect is important for backward compatibility, because (for example) the mangled names of entities in software libraries must not change when introducing modules.
-
-* **Binary distribution of modules**: Headers (particularly C++ headers) expose the full complexity of the language. Maintaining a stable binary module format across architectures, compiler versions, and compiler vendors is technically infeasible.
-
-Using Modules
-=============
-To enable modules, pass the command-line flag ``-fmodules`` [#]_. This will make any modules-enabled software libraries available as modules as well as introducing any modules-specific syntax. Additional `command-line parameters`_ are described in a separate section later.
-
-Import declaration
-------------------
-The most direct way to import a module is with an *import declaration*, which imports the named module:
-
-.. parsed-literal::
-
-  import std;
-
-The import declaration above imports the entire contents of the ``std`` module (which would contain, e.g., the entire C or C++ standard library) and make its API available within the current translation unit. To import only part of a module, one may use dot syntax to specific a particular submodule, e.g.,
-
-.. parsed-literal::
-
-  import std.io;
-
-Redundant import declarations are ignored, and one is free to import modules at any point within the translation unit, so long as the import declaration is at global scope.
-
-.. warning::
-  The import declaration syntax described here does not actually exist. Rather, it is a straw man proposal that may very well change when modules are discussed in the C and C++ committees. See the section `Includes as imports`_ to see how modules get imported today.
-
-Includes as imports
--------------------
-The primary user-level feature of modules is the import operation, which provides access to the API of software libraries. However, today's programs make extensive use of ``#include``, and it is unrealistic to assume that all of this code will change overnight. Instead, modules automatically translate ``#include`` directives into the corresponding module import. For example, the include directive
-
-.. code-block:: c
-
-  #include <stdio.h>
-
-will be automatically mapped to an import of the module ``std.io``. Even with specific ``import`` syntax in the language, this particular feature is important for both adoption and backward compatibility: automatic translation of ``#include`` to ``import`` allows an application to get the benefits of modules (for all modules-enabled libraries) without any changes to the application itself. Thus, users can easily use modules with one compiler while falling back to the preprocessor-inclusion mechanism with other compilers.
-
-.. note::
-
-  The automatic mapping of ``#include`` to ``import`` also solves an implementation problem: importing a module with a definition of some entity (say, a ``struct Point``) and then parsing a header containing another definition of ``struct Point`` would cause a redefinition error, even if it is the same ``struct Point``. By mapping ``#include`` to ``import``, the compiler can guarantee that it always sees just the already-parsed definition from the module.
-
-Module maps
------------
-The crucial link between modules and headers is described by a *module map*, which describes how a collection of existing headers maps on to the (logical) structure of a module. For example, one could imagine a module ``std`` covering the C standard library. Each of the C standard library headers (``<stdio.h>``, ``<stdlib.h>``, ``<math.h>``, etc.) would contribute to the ``std`` module, by placing their respective APIs into the corresponding submodule (``std.io``, ``std.lib``, ``std.math``, etc.). Having a list of the headers that are part of the ``std`` module allows the compiler to build the ``std`` module as a standalone entity, and having the mapping from header names to (sub)modules allows the automatic translation of ``#include`` directives to module imports.
-
-Module maps are specified as separate files (each named ``module.map``) alongside the headers they describe, which allows them to be added to existing software libraries without having to change the library headers themselves (in most cases [#]_). The actual `Module map language`_ is described in a later section.
-
-.. note::
-
-  To actually see any benefits from modules, one first has to introduce module maps for the underlying C standard library and the libraries and headers on which it depends. The section `Modularizing a Platform`_ describes the steps one must take to write these module maps.
-
-Compilation model
------------------
-The binary representation of modules is automatically generated by the compiler on an as-needed basis. When a module is imported (e.g., by an ``#include`` of one of the module's headers), the compiler will spawn a second instance of itself [#]_, with a fresh preprocessing context [#]_, to parse just the headers in that module. The resulting Abstract Syntax Tree (AST) is then persisted into the binary representation of the module that is then loaded into translation unit where the module import was encountered.
-
-The binary representation of modules is persisted in the *module cache*. Imports of a module will first query the module cache and, if a binary representation of the required module is already available, will load that representation directly. Thus, a module's headers will only be parsed once per language configuration, rather than once per translation unit that uses the module.
-
-Modules maintain references to each of the headers that were part of the module build. If any of those headers changes, or if any of the modules on which a module depends change, then the module will be (automatically) recompiled. The process should never require any user intervention.
-
-Command-line parameters
------------------------
-``-fmodules``
-  Enable the modules feature (EXPERIMENTAL).
-
-``-fcxx-modules``
-  Enable the modules feature for C++ (EXPERIMENTAL and VERY BROKEN).
-
-``-fmodules-cache-path=<directory>``
-  Specify the path to the modules cache. If not provided, Clang will select a system-appropriate default.
-
-``-fno-autolink``
-  Disable automatic linking against the libraries associated with imported modules.
-
-``-fmodules-ignore-macro=macroname``
-  Instruct modules to ignore the named macro when selecting an appropriate module variant. Use this for macros defined on the command line that don't affect how modules are built, to improve sharing of compiled module files.
-
-``-fmodules-prune-interval=seconds``
-  Specify the minimum delay (in seconds) between attempts to prune the module cache. Module cache pruning attempts to clear out old, unused module files so that the module cache itself does not grow without bound. The default delay is large (604,800 seconds, or 7 days) because this is an expensive operation. Set this value to 0 to turn off pruning.
-
-``-fmodules-prune-after=seconds``
-  Specify the minimum time (in seconds) for which a file in the module cache must be unused (according to access time) before module pruning will remove it. The default delay is large (2,678,400 seconds, or 31 days) to avoid excessive module rebuilding.
-
-``-module-file-info <module file name>``
-  Debugging aid that prints information about a given module file (with a ``.pcm`` extension), including the language and preprocessor options that particular module variant was built with.
-
-Module Map Language
-===================
-
-The module map language describes the mapping from header files to the
-logical structure of modules. To enable support for using a library as
-a module, one must write a ``module.map`` file for that library. The
-``module.map`` file is placed alongside the header files themselves,
-and is written in the module map language described below.
-
-As an example, the module map file for the C standard library might look a bit like this:
-
-.. parsed-literal::
-
-  module std [system] {
-    module complex {
-      header "complex.h"
-      export *
-    }
-
-    module ctype {
-      header "ctype.h"
-      export *
-    }
-
-    module errno {
-      header "errno.h"
-      header "sys/errno.h"
-      export *
-    }
-
-    module fenv {
-      header "fenv.h"
-      export *
-    }
-
-    // ...more headers follow...
-  }
-
-Here, the top-level module ``std`` encompasses the whole C standard library. It has a number of submodules containing different parts of the standard library: ``complex`` for complex numbers, ``ctype`` for character types, etc. Each submodule lists one of more headers that provide the contents for that submodule. Finally, the ``export *`` command specifies that anything included by that submodule will be automatically re-exported. 
-
-Lexical structure
------------------
-Module map files use a simplified form of the C99 lexer, with the same rules for identifiers, tokens, string literals, ``/* */`` and ``//`` comments. The module map language has the following reserved words; all other C identifiers are valid identifiers.
-
-.. parsed-literal::
-
-  ``config_macros`` ``export``     ``module``
-  ``conflict``      ``framework``  ``requires``
-  ``exclude``       ``header``     ``umbrella``
-  ``explicit``      ``link``
-
-Module map file
----------------
-A module map file consists of a series of module declarations:
-
-.. parsed-literal::
-
-  *module-map-file*:
-    *module-declaration**
-
-Within a module map file, modules are referred to by a *module-id*, which uses periods to separate each part of a module's name:
-
-.. parsed-literal::
-
-  *module-id*:
-    *identifier* ('.' *identifier*)*
-
-Module declaration
-------------------
-A module declaration describes a module, including the headers that contribute to that module, its submodules, and other aspects of the module.
-
-.. parsed-literal::
-
-  *module-declaration*:
-    ``explicit``:sub:`opt` ``framework``:sub:`opt` ``module`` *module-id* *attributes*:sub:`opt` '{' *module-member** '}'
-
-The *module-id* should consist of only a single *identifier*, which provides the name of the module being defined. Each module shall have a single definition. 
-
-The ``explicit`` qualifier can only be applied to a submodule, i.e., a module that is nested within another module. The contents of explicit submodules are only made available when the submodule itself was explicitly named in an import declaration or was re-exported from an imported module.
-
-The ``framework`` qualifier specifies that this module corresponds to a Darwin-style framework. A Darwin-style framework (used primarily on Mac OS X and iOS) is contained entirely in directory ``Name.framework``, where ``Name`` is the name of the framework (and, therefore, the name of the module). That directory has the following layout:
-
-.. parsed-literal::
-
-  Name.framework/
-    module.map                Module map for the framework
-    Headers/                  Subdirectory containing framework headers
-    Frameworks/               Subdirectory containing embedded frameworks
-    Resources/                Subdirectory containing additional resources
-    Name                      Symbolic link to the shared library for the framework
-
-The ``system`` attribute specifies that the module is a system module. When a system module is rebuilt, all of the module's header will be considered system headers, which suppresses warnings. This is equivalent to placing ``#pragma GCC system_header`` in each of the module's headers. The form of attributes is described in the section Attributes_, below.
-
-Modules can have a number of different kinds of members, each of which is described below:
-
-.. parsed-literal::
-
-  *module-member*:
-    *requires-declaration*
-    *header-declaration*
-    *umbrella-dir-declaration*
-    *submodule-declaration*
-    *export-declaration*
-    *link-declaration*
-    *config-macros-declaration*
-    *conflict-declaration*
-
-Requires declaration
-~~~~~~~~~~~~~~~~~~~~
-A *requires-declaration* specifies the requirements that an importing translation unit must satisfy to use the module.
-
-.. parsed-literal::
-
-  *requires-declaration*:
-    ``requires`` *feature-list*
-
-  *feature-list*:
-    *identifier* (',' *identifier*)*
-
-The requirements clause allows specific modules or submodules to specify that they are only accessible with certain language dialects or on certain platforms. The feature list is a set of identifiers, defined below. If any of the features is not available in a given translation unit, that translation unit shall not import the module.
-
-The following features are defined:
-
-altivec
-  The target supports AltiVec.
-
-blocks
-  The "blocks" language feature is available.
-
-cplusplus
-  C++ support is available.
-
-cplusplus11
-  C++11 support is available.
-
-objc
-  Objective-C support is available.
-
-objc_arc
-  Objective-C Automatic Reference Counting (ARC) is available
-
-opencl
-  OpenCL is available
-
-tls
-  Thread local storage is available.
-
-*target feature*
-  A specific target feature (e.g., ``sse4``, ``avx``, ``neon``) is available.
-
-
-**Example**: The ``std`` module can be extended to also include C++ and C++11 headers using a *requires-declaration*:
-
-.. parsed-literal::
-
- module std {
-    // C standard library...
-
-    module vector {
-      requires cplusplus
-      header "vector"
-    }
-
-    module type_traits {
-      requires cplusplus11
-      header "type_traits"
-    }
-  }
-
-Header declaration
-~~~~~~~~~~~~~~~~~~
-A header declaration specifies that a particular header is associated with the enclosing module.
-
-.. parsed-literal::
-
-  *header-declaration*:
-    ``umbrella``:sub:`opt` ``header`` *string-literal*
-    ``exclude`` ``header`` *string-literal*
-
-A header declaration that does not contain ``exclude`` specifies a header that contributes to the enclosing module. Specifically, when the module is built, the named header will be parsed and its declarations will be (logically) placed into the enclosing submodule.
-
-A header with the ``umbrella`` specifier is called an umbrella header. An umbrella header includes all of the headers within its directory (and any subdirectories), and is typically used (in the ``#include`` world) to easily access the full API provided by a particular library. With modules, an umbrella header is a convenient shortcut that eliminates the need to write out ``header`` declarations for every library header. A given directory can only contain a single umbrella header.
-
-.. note::
-    Any headers not included by the umbrella header should have
-    explicit ``header`` declarations. Use the   
-    ``-Wincomplete-umbrella`` warning option to ask Clang to complain
-    about headers not covered by the umbrella header or the module map.
-
-A header with the ``exclude`` specifier is excluded from the module. It will not be included when the module is built, nor will it be considered to be part of the module.
-
-**Example**: The C header ``assert.h`` is an excellent candidate for an excluded header, because it is meant to be included multiple times (possibly with different ``NDEBUG`` settings).
-
-.. parsed-literal::
-
-  module std [system] {
-    exclude header "assert.h"
-  }
-
-A given header shall not be referenced by more than one *header-declaration*.
-
-Umbrella directory declaration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-An umbrella directory declaration specifies that all of the headers in the specified directory should be included within the module.
-
-.. parsed-literal::
-
-  *umbrella-dir-declaration*:
-    ``umbrella`` *string-literal*
-  
-The *string-literal* refers to a directory. When the module is built, all of the header files in that directory (and its subdirectories) are included in the module.
-
-An *umbrella-dir-declaration* shall not refer to the same directory as the location of an umbrella *header-declaration*. In other words, only a single kind of umbrella can be specified for a given directory.
-
-.. note::
-
-    Umbrella directories are useful for libraries that have a large number of headers but do not have an umbrella header.
-
-
-Submodule declaration
-~~~~~~~~~~~~~~~~~~~~~
-Submodule declarations describe modules that are nested within their enclosing module.
-
-.. parsed-literal::
-
-  *submodule-declaration*:
-    *module-declaration*
-    *inferred-submodule-declaration*
-
-A *submodule-declaration* that is a *module-declaration* is a nested module. If the *module-declaration* has a ``framework`` specifier, the enclosing module shall have a ``framework`` specifier; the submodule's contents shall be contained within the subdirectory ``Frameworks/SubName.framework``, where ``SubName`` is the name of the submodule.
-
-A *submodule-declaration* that is an *inferred-submodule-declaration* describes a set of submodules that correspond to any headers that are part of the module but are not explicitly described by a *header-declaration*.
-
-.. parsed-literal::
-
-  *inferred-submodule-declaration*:
-    ``explicit``:sub:`opt` ``framework``:sub:`opt` ``module`` '*' *attributes*:sub:`opt` '{' *inferred-submodule-member** '}'
-  
-  *inferred-submodule-member*:
-    ``export`` '*'
-
-A module containing an *inferred-submodule-declaration* shall have either an umbrella header or an umbrella directory. The headers to which the *inferred-submodule-declaration* applies are exactly those headers included by the umbrella header (transitively) or included in the module because they reside within the umbrella directory (or its subdirectories).
-
-For each header included by the umbrella header or in the umbrella directory that is not named by a *header-declaration*, a module declaration is implicitly generated from the *inferred-submodule-declaration*. The module will:
-
-* Have the same name as the header (without the file extension)
-* Have the ``explicit`` specifier, if the *inferred-submodule-declaration* has the ``explicit`` specifier
-* Have the ``framework`` specifier, if the    
-  *inferred-submodule-declaration* has the ``framework`` specifier
-* Have the attributes specified by the \ *inferred-submodule-declaration* 
-* Contain a single *header-declaration* naming that header
-* Contain a single *export-declaration* ``export *``, if the \ *inferred-submodule-declaration* contains the \ *inferred-submodule-member* ``export *``
-
-**Example**: If the subdirectory "MyLib" contains the headers ``A.h`` and ``B.h``, then the following module map:
-
-.. parsed-literal::
-
-  module MyLib {
-    umbrella "MyLib"
-    explicit module * {
-      export *
-    }
-  }
-
-is equivalent to the (more verbose) module map:
-
-.. parsed-literal::
-
-  module MyLib {
-    explicit module A {
-      header "A.h"
-      export *
-    }
-
-    explicit module B {
-      header "B.h"
-      export *
-    }
-  }
-
-Export declaration
-~~~~~~~~~~~~~~~~~~
-An *export-declaration* specifies which imported modules will automatically be re-exported as part of a given module's API.
-
-.. parsed-literal::
-
-  *export-declaration*:
-    ``export`` *wildcard-module-id*
-
-  *wildcard-module-id*:
-    *identifier*
-    '*'
-    *identifier* '.' *wildcard-module-id*
-
-The *export-declaration* names a module or a set of modules that will be re-exported to any translation unit that imports the enclosing module. Each imported module that matches the *wildcard-module-id* up to, but not including, the first ``*`` will be re-exported.
-
-**Example**:: In the following example, importing ``MyLib.Derived`` also provides the API for ``MyLib.Base``:
-
-.. parsed-literal::
-
-  module MyLib {
-    module Base {
-      header "Base.h"
-    }
-
-    module Derived {
-      header "Derived.h"
-      export Base
-    }
-  }
-
-Note that, if ``Derived.h`` includes ``Base.h``, one can simply use a wildcard export to re-export everything ``Derived.h`` includes:
-
-.. parsed-literal::
-
-  module MyLib {
-    module Base {
-      header "Base.h"
-    }
-
-    module Derived {
-      header "Derived.h"
-      export *
-    }
-  }
-
-.. note::
-
-  The wildcard export syntax ``export *`` re-exports all of the
-  modules that were imported in the actual header file. Because
-  ``#include`` directives are automatically mapped to module imports,
-  ``export *`` provides the same transitive-inclusion behavior
-  provided by the C preprocessor, e.g., importing a given module
-  implicitly imports all of the modules on which it depends.
-  Therefore, liberal use of ``export *`` provides excellent backward
-  compatibility for programs that rely on transitive inclusion (i.e.,
-  all of them).
-
-Link declaration
-~~~~~~~~~~~~~~~~
-A *link-declaration* specifies a library or framework against which a program should be linked if the enclosing module is imported in any translation unit in that program.
-
-.. parsed-literal::
-
-  *link-declaration*:
-    ``link`` ``framework``:sub:`opt` *string-literal*
-
-The *string-literal* specifies the name of the library or framework against which the program should be linked. For example, specifying "clangBasic" would instruct the linker to link with ``-lclangBasic`` for a Unix-style linker.
-
-A *link-declaration* with the ``framework`` specifies that the linker should link against the named framework, e.g., with ``-framework MyFramework``.
-
-.. note::
-
-  Automatic linking with the ``link`` directive is not yet widely
-  implemented, because it requires support from both the object file
-  format and the linker. The notion is similar to Microsoft Visual
-  Studio's ``#pragma comment(lib...)``.
-
-Configuration macros declaration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The *config-macros-declaration* specifies the set of configuration macros that have an effect on the the API of the enclosing module.
-
-.. parsed-literal::
-
-  *config-macros-declaration*:
-    ``config_macros`` *attributes*:sub:`opt` *config-macro-list*:sub:`opt`
-
-  *config-macro-list*:
-    *identifier* (',' *identifier*)*
-
-Each *identifier* in the *config-macro-list* specifies the name of a macro. The compiler is required to maintain different variants of the given module for differing definitions of any of the named macros.
-
-A *config-macros-declaration* shall only be present on a top-level module, i.e., a module that is not nested within an enclosing module.
-
-The ``exhaustive`` attribute specifies that the list of macros in the *config-macros-declaration* is exhaustive, meaning that no other macro definition is intended to have an effect on the API of that module. 
-
-.. note::
-
-  The ``exhaustive`` attribute implies that any macro definitions 
-  for macros not listed as configuration macros should be ignored
-  completely when building the module. As an optimization, the
-  compiler could reduce the number of unique module variants by not
-  considering these non-configuration macros. This optimization is not
-  yet implemented in Clang.
-
-A translation unit shall not import the same module under different definitions of the configuration macros.
-
-.. note::
-
-  Clang implements a weak form of this requirement: the definitions
-  used for configuration macros are fixed based on the definitions
-  provided by the command line. If an import occurs and the definition
-  of any configuration macro has changed, the compiler will produce a
-  warning (under the control of ``-Wconfig-macros``).
-
-**Example:** A logging library might provide different API (e.g., in the form of different definitions for a logging macro) based on the ``NDEBUG`` macro setting:
-
-.. parsed-literal::
-
-  module MyLogger {
-    umbrella header "MyLogger.h"
-    config_macros [exhaustive] NDEBUG
-  }
-
-Conflict declarations
-~~~~~~~~~~~~~~~~~~~~~
-A *conflict-declaration* describes a case where the presence of two different modules in the same translation unit is likely to cause a problem. For example, two modules may provide similar-but-incompatible functionality.
-
-.. parsed-literal::
-
-  *conflict-declaration*:
-    ``conflict`` *module-id* ',' *string-literal*
-
-The *module-id* of the *conflict-declaration* specifies the module with which the enclosing module conflicts. The specified module shall not have been imported in the translation unit when the enclosing module is imported.
-
-The *string-literal* provides a message to be provided as part of the compiler diagnostic when two modules conflict.
-
-.. note::
-
-  Clang emits a warning (under the control of ``-Wmodule-conflict``)
-  when a module conflict is discovered.
-
-**Example:**
-
-.. parsed-literal::
-
-  module Conflicts {
-    explicit module A {
-      header "conflict_a.h"
-      conflict B, "we just don't like B"
-    }
-
-    module B {
-      header "conflict_b.h"
-    }
-  }
-
-
-Attributes
-----------
-Attributes are used in a number of places in the grammar to describe specific behavior of other declarations. The format of attributes is fairly simple.
-
-.. parsed-literal::
-
-  *attributes*:
-    *attribute* *attributes*:sub:`opt`
-
-  *attribute*:
-    '[' *identifier* ']'
-
-Any *identifier* can be used as an attribute, and each declaration specifies what attributes can be applied to it.
-
-Modularizing a Platform
-=======================
-To get any benefit out of modules, one needs to introduce module maps for software libraries starting at the bottom of the stack. This typically means introducing a module map covering the operating system's headers and the C standard library headers (in ``/usr/include``, for a Unix system). 
-
-The module maps will be written using the `module map language`_, which provides the tools necessary to describe the mapping between headers and modules. Because the set of headers differs from one system to the next, the module map will likely have to be somewhat customized for, e.g., a particular distribution and version of the operating system. Moreover, the system headers themselves may require some modification, if they exhibit any anti-patterns that break modules. Such common patterns are described below.
-
-**Macro-guarded copy-and-pasted definitions**
-  System headers vend core types such as ``size_t`` for users. These types are often needed in a number of system headers, and are almost trivial to write. Hence, it is fairly common to see a definition such as the following copy-and-pasted throughout the headers:
-
-  .. parsed-literal::
-
-    #ifndef _SIZE_T
-    #define _SIZE_T
-    typedef __SIZE_TYPE__ size_t;
-    #endif
-
-  Unfortunately, when modules compiles all of the C library headers together into a single module, only the first actual type definition of ``size_t`` will be visible, and then only in the submodule corresponding to the lucky first header. Any other headers that have copy-and-pasted versions of this pattern will *not* have a definition of ``size_t``. Importing the submodule corresponding to one of those headers will therefore not yield ``size_t`` as part of the API, because it wasn't there when the header was parsed. The fix for this problem is either to pull the copied declarations into a common header that gets included everywhere ``size_t`` is part of the API, or to eliminate the ``#ifndef`` and redefine the ``size_t`` type. The latter works for C++ headers and C11, but will cause an error for non-modules C90/C99, where redefinition of ``typedefs`` is not permitted.
-
-**Conflicting definitions**
-  Different system headers may provide conflicting definitions for various macros, functions, or types. These conflicting definitions don't tend to cause problems in a pre-modules world unless someone happens to include both headers in one translation unit. Since the fix is often simply "don't do that", such problems persist. Modules requires that the conflicting definitions be eliminated or that they be placed in separate modules (the former is generally the better answer).
-
-**Missing includes**
-  Headers are often missing ``#include`` directives for headers that they actually depend on. As with the problem of conflicting definitions, this only affects unlucky users who don't happen to include headers in the right order. With modules, the headers of a particular module will be parsed in isolation, so the module may fail to build if there are missing includes.
-
-**Headers that vend multiple APIs at different times**
-  Some systems have headers that contain a number of different kinds of API definitions, only some of which are made available with a given include. For example, the header may vend ``size_t`` only when the macro ``__need_size_t`` is defined before that header is included, and also vend ``wchar_t`` only when the macro ``__need_wchar_t`` is defined. Such headers are often included many times in a single translation unit, and will have no include guards. There is no sane way to map this header to a submodule. One can either eliminate the header (e.g., by splitting it into separate headers, one per actual API) or simply ``exclude`` it in the module map.
-
-To detect and help address some of these problems, the ``clang-tools-extra`` repository contains a ``modularize`` tool that parses a set of given headers and attempts to detect these problems and produce a report. See the tool's in-source documentation for information on how to check your system or library headers.
-
-Future Directions
-=================
-Modules is an experimental feature, and there is much work left to do to make it both real and useful. Here are a few ideas:
-
-**Detect unused module imports**
-  Unlike with ``#include`` directives, it should be fairly simple to track whether a directly-imported module has ever been used. By doing so, Clang can emit ``unused import`` or ``unused #include`` diagnostics, including Fix-Its to remove the useless imports/includes.
-
-**Fix-Its for missing imports**
-  It's fairly common for one to make use of some API while writing code, only to get a compiler error about "unknown type" or "no function named" because the corresponding header has not been included. Clang should detect such cases and auto-import the required module (with a Fix-It!).
-
-**Improve modularize**
-  The modularize tool is both extremely important (for deployment) and extremely crude. It needs better UI, better detection of problems (especially for C++), and perhaps an assistant mode to help write module maps for you.
-
-**C++ Support**
-  Modules clearly has to work for C++, or we'll never get to use it for the Clang code base.
-
-Where To Learn More About Modules
-=================================
-The Clang source code provides additional information about modules:
-
-``clang/lib/Headers/module.map``
-  Module map for Clang's compiler-specific header files.
-
-``clang/test/Modules/``
-  Tests specifically related to modules functionality.
-
-``clang/include/clang/Basic/Module.h``
-  The ``Module`` class in this header describes a module, and is used throughout the compiler to implement modules.
-
-``clang/include/clang/Lex/ModuleMap.h``
-  The ``ModuleMap`` class in this header describes the full module map, consisting of all of the module map files that have been parsed, and providing facilities for looking up module maps and mapping between modules and headers (in both directions).
-
-PCHInternals_
-  Information about the serialized AST format used for precompiled headers and modules. The actual implementation is in the ``clangSerialization`` library.
-
-.. [#] Automatic linking against the libraries of modules requires specific linker support, which is not widely available.
-
-.. [#] Modules are only available in C and Objective-C; a separate flag ``-fcxx-modules`` enables modules support for C++, which is even more experimental and broken.
-
-.. [#] There are certain anti-patterns that occur in headers, particularly system headers, that cause problems for modules. The section `Modularizing a Platform`_ describes some of them.
-
-.. [#] The second instance is actually a new thread within the current process, not a separate process. However, the original compiler instance is blocked on the execution of this thread.
-
-.. [#] The preprocessing context in which the modules are parsed is actually dependent on the command-line options provided to the compiler, including the language dialect and any ``-D`` options. However, the compiled modules for different command-line options are kept distinct, and any preprocessor directives that occur within the translation unit are ignored. See the section on the `Configuration macros declaration`_ for more information.
-
-.. _PCHInternals: PCHInternals.html
- 

Modified: trunk/contrib/llvm/tools/clang/docs/ObjectiveCLiterals.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/ObjectiveCLiterals.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/ObjectiveCLiterals.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,554 +0,0 @@
-====================
-Objective-C Literals
-====================
-
-Introduction
-============
-
-Three new features were introduced into clang at the same time:
-*NSNumber Literals* provide a syntax for creating ``NSNumber`` from
-scalar literal expressions; *Collection Literals* provide a short-hand
-for creating arrays and dictionaries; *Object Subscripting* provides a
-way to use subscripting with Objective-C objects. Users of Apple
-compiler releases can use these features starting with the Apple LLVM
-Compiler 4.0. Users of open-source LLVM.org compiler releases can use
-these features starting with clang v3.1.
-
-These language additions simplify common Objective-C programming
-patterns, make programs more concise, and improve the safety of
-container creation.
-
-This document describes how the features are implemented in clang, and
-how to use them in your own programs.
-
-NSNumber Literals
-=================
-
-The framework class ``NSNumber`` is used to wrap scalar values inside
-objects: signed and unsigned integers (``char``, ``short``, ``int``,
-``long``, ``long long``), floating point numbers (``float``,
-``double``), and boolean values (``BOOL``, C++ ``bool``). Scalar values
-wrapped in objects are also known as *boxed* values.
-
-In Objective-C, any character, numeric or boolean literal prefixed with
-the ``'@'`` character will evaluate to a pointer to an ``NSNumber``
-object initialized with that value. C's type suffixes may be used to
-control the size of numeric literals.
-
-Examples
---------
-
-The following program illustrates the rules for ``NSNumber`` literals:
-
-.. code-block:: objc
-
-    void main(int argc, const char *argv[]) {
-      // character literals.
-      NSNumber *theLetterZ = @'Z';          // equivalent to [NSNumber numberWithChar:'Z']
-
-      // integral literals.
-      NSNumber *fortyTwo = @42;             // equivalent to [NSNumber numberWithInt:42]
-      NSNumber *fortyTwoUnsigned = @42U;    // equivalent to [NSNumber numberWithUnsignedInt:42U]
-      NSNumber *fortyTwoLong = @42L;        // equivalent to [NSNumber numberWithLong:42L]
-      NSNumber *fortyTwoLongLong = @42LL;   // equivalent to [NSNumber numberWithLongLong:42LL]
-
-      // floating point literals.
-      NSNumber *piFloat = @3.141592654F;    // equivalent to [NSNumber numberWithFloat:3.141592654F]
-      NSNumber *piDouble = @3.1415926535;   // equivalent to [NSNumber numberWithDouble:3.1415926535]
-
-      // BOOL literals.
-      NSNumber *yesNumber = @YES;           // equivalent to [NSNumber numberWithBool:YES]
-      NSNumber *noNumber = @NO;             // equivalent to [NSNumber numberWithBool:NO]
-
-    #ifdef __cplusplus
-      NSNumber *trueNumber = @true;         // equivalent to [NSNumber numberWithBool:(BOOL)true]
-      NSNumber *falseNumber = @false;       // equivalent to [NSNumber numberWithBool:(BOOL)false]
-    #endif
-    }
-
-Discussion
-----------
-
-NSNumber literals only support literal scalar values after the ``'@'``.
-Consequently, ``@INT_MAX`` works, but ``@INT_MIN`` does not, because
-they are defined like this:
-
-.. code-block:: objc
-
-    #define INT_MAX   2147483647  /* max value for an int */
-    #define INT_MIN   (-2147483647-1) /* min value for an int */
-
-The definition of ``INT_MIN`` is not a simple literal, but a
-parenthesized expression. Parenthesized expressions are supported using
-the `boxed expression <#objc_boxed_expressions>`_ syntax, which is
-described in the next section.
-
-Because ``NSNumber`` does not currently support wrapping ``long double``
-values, the use of a ``long double NSNumber`` literal (e.g.
-``@123.23L``) will be rejected by the compiler.
-
-Previously, the ``BOOL`` type was simply a typedef for ``signed char``,
-and ``YES`` and ``NO`` were macros that expand to ``(BOOL)1`` and
-``(BOOL)0`` respectively. To support ``@YES`` and ``@NO`` expressions,
-these macros are now defined using new language keywords in
-``<objc/objc.h>``:
-
-.. code-block:: objc
-
-    #if __has_feature(objc_bool)
-    #define YES             __objc_yes
-    #define NO              __objc_no
-    #else
-    #define YES             ((BOOL)1)
-    #define NO              ((BOOL)0)
-    #endif
-
-The compiler implicitly converts ``__objc_yes`` and ``__objc_no`` to
-``(BOOL)1`` and ``(BOOL)0``. The keywords are used to disambiguate
-``BOOL`` and integer literals.
-
-Objective-C++ also supports ``@true`` and ``@false`` expressions, which
-are equivalent to ``@YES`` and ``@NO``.
-
-Boxed Expressions
-=================
-
-Objective-C provides a new syntax for boxing C expressions:
-
-.. code-block:: objc
-
-    @( <expression> )
-
-Expressions of scalar (numeric, enumerated, BOOL) and C string pointer
-types are supported:
-
-.. code-block:: objc
-
-    // numbers.
-    NSNumber *smallestInt = @(-INT_MAX - 1);  // [NSNumber numberWithInt:(-INT_MAX - 1)]
-    NSNumber *piOverTwo = @(M_PI / 2);        // [NSNumber numberWithDouble:(M_PI / 2)]
-
-    // enumerated types.
-    typedef enum { Red, Green, Blue } Color;
-    NSNumber *favoriteColor = @(Green);       // [NSNumber numberWithInt:((int)Green)]
-
-    // strings.
-    NSString *path = @(getenv("PATH"));       // [NSString stringWithUTF8String:(getenv("PATH"))]
-    NSArray *pathComponents = [path componentsSeparatedByString:@":"];
-
-Boxed Enums
------------
-
-Cocoa frameworks frequently define constant values using *enums.*
-Although enum values are integral, they may not be used directly as
-boxed literals (this avoids conflicts with future ``'@'``-prefixed
-Objective-C keywords). Instead, an enum value must be placed inside a
-boxed expression. The following example demonstrates configuring an
-``AVAudioRecorder`` using a dictionary that contains a boxed enumeration
-value:
-
-.. code-block:: objc
-
-    enum {
-      AVAudioQualityMin = 0,
-      AVAudioQualityLow = 0x20,
-      AVAudioQualityMedium = 0x40,
-      AVAudioQualityHigh = 0x60,
-      AVAudioQualityMax = 0x7F
-    };
-
-    - (AVAudioRecorder *)recordToFile:(NSURL *)fileURL {
-      NSDictionary *settings = @{ AVEncoderAudioQualityKey : @(AVAudioQualityMax) };
-      return [[AVAudioRecorder alloc] initWithURL:fileURL settings:settings error:NULL];
-    }
-
-The expression ``@(AVAudioQualityMax)`` converts ``AVAudioQualityMax``
-to an integer type, and boxes the value accordingly. If the enum has a
-:ref:`fixed underlying type <objc-fixed-enum>` as in:
-
-.. code-block:: objc
-
-    typedef enum : unsigned char { Red, Green, Blue } Color;
-    NSNumber *red = @(Red), *green = @(Green), *blue = @(Blue); // => [NSNumber numberWithUnsignedChar:]
-
-then the fixed underlying type will be used to select the correct
-``NSNumber`` creation method.
-
-Boxing a value of enum type will result in a ``NSNumber`` pointer with a
-creation method according to the underlying type of the enum, which can
-be a :ref:`fixed underlying type <objc-fixed-enum>`
-or a compiler-defined integer type capable of representing the values of
-all the members of the enumeration:
-
-.. code-block:: objc
-
-    typedef enum : unsigned char { Red, Green, Blue } Color;
-    Color col = Red;
-    NSNumber *nsCol = @(col); // => [NSNumber numberWithUnsignedChar:]
-
-Boxed C Strings
----------------
-
-A C string literal prefixed by the ``'@'`` token denotes an ``NSString``
-literal in the same way a numeric literal prefixed by the ``'@'`` token
-denotes an ``NSNumber`` literal. When the type of the parenthesized
-expression is ``(char *)`` or ``(const char *)``, the result of the
-boxed expression is a pointer to an ``NSString`` object containing
-equivalent character data, which is assumed to be '\\0'-terminated and
-UTF-8 encoded. The following example converts C-style command line
-arguments into ``NSString`` objects.
-
-.. code-block:: objc
-
-    // Partition command line arguments into positional and option arguments.
-    NSMutableArray *args = [NSMutableArray new];
-    NSMutableDictionary *options = [NSMutableDictionary new];
-    while (--argc) {
-        const char *arg = *++argv;
-        if (strncmp(arg, "--", 2) == 0) {
-            options[@(arg + 2)] = @(*++argv);   // --key value
-        } else {
-            [args addObject:@(arg)];            // positional argument
-        }
-    }
-
-As with all C pointers, character pointer expressions can involve
-arbitrary pointer arithmetic, therefore programmers must ensure that the
-character data is valid. Passing ``NULL`` as the character pointer will
-raise an exception at runtime. When possible, the compiler will reject
-``NULL`` character pointers used in boxed expressions.
-
-Availability
-------------
-
-Boxed expressions will be available in clang 3.2. It is not currently
-available in any Apple compiler.
-
-Container Literals
-==================
-
-Objective-C now supports a new expression syntax for creating immutable
-array and dictionary container objects.
-
-Examples
---------
-
-Immutable array expression:
-
-.. code-block:: objc
-
-    NSArray *array = @[ @"Hello", NSApp, [NSNumber numberWithInt:42] ];
-
-This creates an ``NSArray`` with 3 elements. The comma-separated
-sub-expressions of an array literal can be any Objective-C object
-pointer typed expression.
-
-Immutable dictionary expression:
-
-.. code-block:: objc
-
-    NSDictionary *dictionary = @{
-        @"name" : NSUserName(),
-        @"date" : [NSDate date],
-        @"processInfo" : [NSProcessInfo processInfo]
-    };
-
-This creates an ``NSDictionary`` with 3 key/value pairs. Value
-sub-expressions of a dictionary literal must be Objective-C object
-pointer typed, as in array literals. Key sub-expressions must be of an
-Objective-C object pointer type that implements the
-``<NSCopying>`` protocol.
-
-Discussion
-----------
-
-Neither keys nor values can have the value ``nil`` in containers. If the
-compiler can prove that a key or value is ``nil`` at compile time, then
-a warning will be emitted. Otherwise, a runtime error will occur.
-
-Using array and dictionary literals is safer than the variadic creation
-forms commonly in use today. Array literal expressions expand to calls
-to ``+[NSArray arrayWithObjects:count:]``, which validates that all
-objects are non-``nil``. The variadic form,
-``+[NSArray arrayWithObjects:]`` uses ``nil`` as an argument list
-terminator, which can lead to malformed array objects. Dictionary
-literals are similarly created with
-``+[NSDictionary dictionaryWithObjects:forKeys:count:]`` which validates
-all objects and keys, unlike
-``+[NSDictionary dictionaryWithObjectsAndKeys:]`` which also uses a
-``nil`` parameter as an argument list terminator.
-
-Object Subscripting
-===================
-
-Objective-C object pointer values can now be used with C's subscripting
-operator.
-
-Examples
---------
-
-The following code demonstrates the use of object subscripting syntax
-with ``NSMutableArray`` and ``NSMutableDictionary`` objects:
-
-.. code-block:: objc
-
-    NSMutableArray *array = ...;
-    NSUInteger idx = ...;
-    id newObject = ...;
-    id oldObject = array[idx];
-    array[idx] = newObject;         // replace oldObject with newObject
-
-    NSMutableDictionary *dictionary = ...;
-    NSString *key = ...;
-    oldObject = dictionary[key];
-    dictionary[key] = newObject;    // replace oldObject with newObject
-
-The next section explains how subscripting expressions map to accessor
-methods.
-
-Subscripting Methods
---------------------
-
-Objective-C supports two kinds of subscript expressions: *array-style*
-subscript expressions use integer typed subscripts; *dictionary-style*
-subscript expressions use Objective-C object pointer typed subscripts.
-Each type of subscript expression is mapped to a message send using a
-predefined selector. The advantage of this design is flexibility: class
-designers are free to introduce subscripting by declaring methods or by
-adopting protocols. Moreover, because the method names are selected by
-the type of the subscript, an object can be subscripted using both array
-and dictionary styles.
-
-Array-Style Subscripting
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-When the subscript operand has an integral type, the expression is
-rewritten to use one of two different selectors, depending on whether
-the element is being read or written. When an expression reads an
-element using an integral index, as in the following example:
-
-.. code-block:: objc
-
-    NSUInteger idx = ...;
-    id value = object[idx];
-
-it is translated into a call to ``objectAtIndexedSubscript:``
-
-.. code-block:: objc
-
-    id value = [object objectAtIndexedSubscript:idx];
-
-When an expression writes an element using an integral index:
-
-.. code-block:: objc
-
-    object[idx] = newValue;
-
-it is translated to a call to ``setObject:atIndexedSubscript:``
-
-.. code-block:: objc
-
-    [object setObject:newValue atIndexedSubscript:idx];
-
-These message sends are then type-checked and performed just like
-explicit message sends. The method used for objectAtIndexedSubscript:
-must be declared with an argument of integral type and a return value of
-some Objective-C object pointer type. The method used for
-setObject:atIndexedSubscript: must be declared with its first argument
-having some Objective-C pointer type and its second argument having
-integral type.
-
-The meaning of indexes is left up to the declaring class. The compiler
-will coerce the index to the appropriate argument type of the method it
-uses for type-checking. For an instance of ``NSArray``, reading an
-element using an index outside the range ``[0, array.count)`` will raise
-an exception. For an instance of ``NSMutableArray``, assigning to an
-element using an index within this range will replace that element, but
-assigning to an element using an index outside this range will raise an
-exception; no syntax is provided for inserting, appending, or removing
-elements for mutable arrays.
-
-A class need not declare both methods in order to take advantage of this
-language feature. For example, the class ``NSArray`` declares only
-``objectAtIndexedSubscript:``, so that assignments to elements will fail
-to type-check; moreover, its subclass ``NSMutableArray`` declares
-``setObject:atIndexedSubscript:``.
-
-Dictionary-Style Subscripting
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When the subscript operand has an Objective-C object pointer type, the
-expression is rewritten to use one of two different selectors, depending
-on whether the element is being read from or written to. When an
-expression reads an element using an Objective-C object pointer
-subscript operand, as in the following example:
-
-.. code-block:: objc
-
-    id key = ...;
-    id value = object[key];
-
-it is translated into a call to the ``objectForKeyedSubscript:`` method:
-
-.. code-block:: objc
-
-    id value = [object objectForKeyedSubscript:key];
-
-When an expression writes an element using an Objective-C object pointer
-subscript:
-
-.. code-block:: objc
-
-    object[key] = newValue;
-
-it is translated to a call to ``setObject:forKeyedSubscript:``
-
-.. code-block:: objc
-
-    [object setObject:newValue forKeyedSubscript:key];
-
-The behavior of ``setObject:forKeyedSubscript:`` is class-specific; but
-in general it should replace an existing value if one is already
-associated with a key, otherwise it should add a new value for the key.
-No syntax is provided for removing elements from mutable dictionaries.
-
-Discussion
-----------
-
-An Objective-C subscript expression occurs when the base operand of the
-C subscript operator has an Objective-C object pointer type. Since this
-potentially collides with pointer arithmetic on the value, these
-expressions are only supported under the modern Objective-C runtime,
-which categorically forbids such arithmetic.
-
-Currently, only subscripts of integral or Objective-C object pointer
-type are supported. In C++, a class type can be used if it has a single
-conversion function to an integral or Objective-C pointer type, in which
-case that conversion is applied and analysis continues as appropriate.
-Otherwise, the expression is ill-formed.
-
-An Objective-C object subscript expression is always an l-value. If the
-expression appears on the left-hand side of a simple assignment operator
-(=), the element is written as described below. If the expression
-appears on the left-hand side of a compound assignment operator (e.g.
-+=), the program is ill-formed, because the result of reading an element
-is always an Objective-C object pointer and no binary operators are
-legal on such pointers. If the expression appears in any other position,
-the element is read as described below. It is an error to take the
-address of a subscript expression, or (in C++) to bind a reference to
-it.
-
-Programs can use object subscripting with Objective-C object pointers of
-type ``id``. Normal dynamic message send rules apply; the compiler must
-see *some* declaration of the subscripting methods, and will pick the
-declaration seen first.
-
-Caveats
-=======
-
-Objects created using the literal or boxed expression syntax are not
-guaranteed to be uniqued by the runtime, but nor are they guaranteed to
-be newly-allocated. As such, the result of performing direct comparisons
-against the location of an object literal (using ``==``, ``!=``, ``<``,
-``<=``, ``>``, or ``>=``) is not well-defined. This is usually a simple
-mistake in code that intended to call the ``isEqual:`` method (or the
-``compare:`` method).
-
-This caveat applies to compile-time string literals as well.
-Historically, string literals (using the ``@"..."`` syntax) have been
-uniqued across translation units during linking. This is an
-implementation detail of the compiler and should not be relied upon. If
-you are using such code, please use global string constants instead
-(``NSString * const MyConst = @"..."``) or use ``isEqual:``.
-
-Grammar Additions
-=================
-
-To support the new syntax described above, the Objective-C
-``@``-expression grammar has the following new productions:
-
-::
-
-    objc-at-expression : '@' (string-literal | encode-literal | selector-literal | protocol-literal | object-literal)
-                       ;
-
-    object-literal : ('+' | '-')? numeric-constant
-                   | character-constant
-                   | boolean-constant
-                   | array-literal
-                   | dictionary-literal
-                   ;
-
-    boolean-constant : '__objc_yes' | '__objc_no' | 'true' | 'false'  /* boolean keywords. */
-                     ;
-
-    array-literal : '[' assignment-expression-list ']'
-                  ;
-
-    assignment-expression-list : assignment-expression (',' assignment-expression-list)?
-                               | /* empty */
-                               ;
-
-    dictionary-literal : '{' key-value-list '}'
-                       ;
-
-    key-value-list : key-value-pair (',' key-value-list)?
-                   | /* empty */
-                   ;
-
-    key-value-pair : assignment-expression ':' assignment-expression
-                   ;
-
-Note: ``@true`` and ``@false`` are only supported in Objective-C++.
-
-Availability Checks
-===================
-
-Programs test for the new features by using clang's \_\_has\_feature
-checks. Here are examples of their use:
-
-.. code-block:: objc
-
-    #if __has_feature(objc_array_literals)
-        // new way.
-        NSArray *elements = @[ @"H", @"He", @"O", @"C" ];
-    #else
-        // old way (equivalent).
-        id objects[] = { @"H", @"He", @"O", @"C" };
-        NSArray *elements = [NSArray arrayWithObjects:objects count:4];
-    #endif
-
-    #if __has_feature(objc_dictionary_literals)
-        // new way.
-        NSDictionary *masses = @{ @"H" : @1.0078,  @"He" : @4.0026, @"O" : @15.9990, @"C" : @12.0096 };
-    #else
-        // old way (equivalent).
-        id keys[] = { @"H", @"He", @"O", @"C" };
-        id values[] = { [NSNumber numberWithDouble:1.0078], [NSNumber numberWithDouble:4.0026],
-                        [NSNumber numberWithDouble:15.9990], [NSNumber numberWithDouble:12.0096] };
-        NSDictionary *masses = [NSDictionary dictionaryWithObjects:objects forKeys:keys count:4];
-    #endif
-
-    #if __has_feature(objc_subscripting)
-        NSUInteger i, count = elements.count;
-        for (i = 0; i < count; ++i) {
-            NSString *element = elements[i];
-            NSNumber *mass = masses[element];
-            NSLog(@"the mass of %@ is %@", element, mass);
-        }
-    #else
-        NSUInteger i, count = [elements count];
-        for (i = 0; i < count; ++i) {
-            NSString *element = [elements objectAtIndex:i];
-            NSNumber *mass = [masses objectForKey:element];
-            NSLog(@"the mass of %@ is %@", element, mass);
-        }
-    #endif
-
-Code can use also ``__has_feature(objc_bool)`` to check for the
-availability of numeric literals support. This checks for the new
-``__objc_yes / __objc_no`` keywords, which enable the use of
-``@YES / @NO`` literals.
-
-To check whether boxed expressions are supported, use
-``__has_feature(objc_boxed_expressions)`` feature macro.

Modified: trunk/contrib/llvm/tools/clang/docs/PCHInternals.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/PCHInternals.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/PCHInternals.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,561 +0,0 @@
-========================================
-Precompiled Header and Modules Internals
-========================================
-
-.. contents::
-   :local:
-
-This document describes the design and implementation of Clang's precompiled
-headers (PCH) and modules.  If you are interested in the end-user view, please
-see the :ref:`User's Manual <usersmanual-precompiled-headers>`.
-
-Using Precompiled Headers with ``clang``
-----------------------------------------
-
-The Clang compiler frontend, ``clang -cc1``, supports two command line options
-for generating and using PCH files.
-
-To generate PCH files using ``clang -cc1``, use the option :option:`-emit-pch`:
-
-.. code-block:: bash
-
-  $ clang -cc1 test.h -emit-pch -o test.h.pch
-
-This option is transparently used by ``clang`` when generating PCH files.  The
-resulting PCH file contains the serialized form of the compiler's internal
-representation after it has completed parsing and semantic analysis.  The PCH
-file can then be used as a prefix header with the :option:`-include-pch`
-option:
-
-.. code-block:: bash
-
-  $ clang -cc1 -include-pch test.h.pch test.c -o test.s
-
-Design Philosophy
------------------
-
-Precompiled headers are meant to improve overall compile times for projects, so
-the design of precompiled headers is entirely driven by performance concerns.
-The use case for precompiled headers is relatively simple: when there is a
-common set of headers that is included in nearly every source file in the
-project, we *precompile* that bundle of headers into a single precompiled
-header (PCH file).  Then, when compiling the source files in the project, we
-load the PCH file first (as a prefix header), which acts as a stand-in for that
-bundle of headers.
-
-A precompiled header implementation improves performance when:
-
-* Loading the PCH file is significantly faster than re-parsing the bundle of
-  headers stored within the PCH file.  Thus, a precompiled header design
-  attempts to minimize the cost of reading the PCH file.  Ideally, this cost
-  should not vary with the size of the precompiled header file.
-
-* The cost of generating the PCH file initially is not so large that it
-  counters the per-source-file performance improvement due to eliminating the
-  need to parse the bundled headers in the first place.  This is particularly
-  important on multi-core systems, because PCH file generation serializes the
-  build when all compilations require the PCH file to be up-to-date.
-
-Modules, as implemented in Clang, use the same mechanisms as precompiled
-headers to save a serialized AST file (one per module) and use those AST
-modules.  From an implementation standpoint, modules are a generalization of
-precompiled headers, lifting a number of restrictions placed on precompiled
-headers.  In particular, there can only be one precompiled header and it must
-be included at the beginning of the translation unit.  The extensions to the
-AST file format required for modules are discussed in the section on
-:ref:`modules <pchinternals-modules>`.
-
-Clang's AST files are designed with a compact on-disk representation, which
-minimizes both creation time and the time required to initially load the AST
-file.  The AST file itself contains a serialized representation of Clang's
-abstract syntax trees and supporting data structures, stored using the same
-compressed bitstream as `LLVM's bitcode file format
-<http://llvm.org/docs/BitCodeFormat.html>`_.
-
-Clang's AST files are loaded "lazily" from disk.  When an AST file is initially
-loaded, Clang reads only a small amount of data from the AST file to establish
-where certain important data structures are stored.  The amount of data read in
-this initial load is independent of the size of the AST file, such that a
-larger AST file does not lead to longer AST load times.  The actual header data
-in the AST file --- macros, functions, variables, types, etc. --- is loaded
-only when it is referenced from the user's code, at which point only that
-entity (and those entities it depends on) are deserialized from the AST file.
-With this approach, the cost of using an AST file for a translation unit is
-proportional to the amount of code actually used from the AST file, rather than
-being proportional to the size of the AST file itself.
-
-When given the :option:`-print-stats` option, Clang produces statistics
-describing how much of the AST file was actually loaded from disk.  For a
-simple "Hello, World!" program that includes the Apple ``Cocoa.h`` header
-(which is built as a precompiled header), this option illustrates how little of
-the actual precompiled header is required:
-
-.. code-block:: none
-
-  *** AST File Statistics:
-    895/39981 source location entries read (2.238563%)
-    19/15315 types read (0.124061%)
-    20/82685 declarations read (0.024188%)
-    154/58070 identifiers read (0.265197%)
-    0/7260 selectors read (0.000000%)
-    0/30842 statements read (0.000000%)
-    4/8400 macros read (0.047619%)
-    1/4995 lexical declcontexts read (0.020020%)
-    0/4413 visible declcontexts read (0.000000%)
-    0/7230 method pool entries read (0.000000%)
-    0 method pool misses
-
-For this small program, only a tiny fraction of the source locations, types,
-declarations, identifiers, and macros were actually deserialized from the
-precompiled header.  These statistics can be useful to determine whether the
-AST file implementation can be improved by making more of the implementation
-lazy.
-
-Precompiled headers can be chained.  When you create a PCH while including an
-existing PCH, Clang can create the new PCH by referencing the original file and
-only writing the new data to the new file.  For example, you could create a PCH
-out of all the headers that are very commonly used throughout your project, and
-then create a PCH for every single source file in the project that includes the
-code that is specific to that file, so that recompiling the file itself is very
-fast, without duplicating the data from the common headers for every file.  The
-mechanisms behind chained precompiled headers are discussed in a :ref:`later
-section <pchinternals-chained>`.
-
-AST File Contents
------------------
-
-Clang's AST files are organized into several different blocks, each of which
-contains the serialized representation of a part of Clang's internal
-representation.  Each of the blocks corresponds to either a block or a record
-within `LLVM's bitstream format <http://llvm.org/docs/BitCodeFormat.html>`_.
-The contents of each of these logical blocks are described below.
-
-.. image:: PCHLayout.png
-
-For a given AST file, the `llvm-bcanalyzer
-<http://llvm.org/docs/CommandGuide/llvm-bcanalyzer.html>`_ utility can be used
-to examine the actual structure of the bitstream for the AST file.  This
-information can be used both to help understand the structure of the AST file
-and to isolate areas where AST files can still be optimized, e.g., through the
-introduction of abbreviations.
-
-Metadata Block
-^^^^^^^^^^^^^^
-
-The metadata block contains several records that provide information about how
-the AST file was built.  This metadata is primarily used to validate the use of
-an AST file.  For example, a precompiled header built for a 32-bit x86 target
-cannot be used when compiling for a 64-bit x86 target.  The metadata block
-contains information about:
-
-Language options
-  Describes the particular language dialect used to compile the AST file,
-  including major options (e.g., Objective-C support) and more minor options
-  (e.g., support for "``//``" comments).  The contents of this record correspond to
-  the ``LangOptions`` class.
-
-Target architecture
-  The target triple that describes the architecture, platform, and ABI for
-  which the AST file was generated, e.g., ``i386-apple-darwin9``.
-
-AST version
-  The major and minor version numbers of the AST file format.  Changes in the
-  minor version number should not affect backward compatibility, while changes
-  in the major version number imply that a newer compiler cannot read an older
-  precompiled header (and vice-versa).
-
-Original file name
-  The full path of the header that was used to generate the AST file.
-
-Predefines buffer
-  Although not explicitly stored as part of the metadata, the predefines buffer
-  is used in the validation of the AST file.  The predefines buffer itself
-  contains code generated by the compiler to initialize the preprocessor state
-  according to the current target, platform, and command-line options.  For
-  example, the predefines buffer will contain "``#define __STDC__ 1``" when we
-  are compiling C without Microsoft extensions.  The predefines buffer itself
-  is stored within the :ref:`pchinternals-sourcemgr`, but its contents are
-  verified along with the rest of the metadata.
-
-A chained PCH file (that is, one that references another PCH) and a module
-(which may import other modules) have additional metadata containing the list
-of all AST files that this AST file depends on.  Each of those files will be
-loaded along with this AST file.
-
-For chained precompiled headers, the language options, target architecture and
-predefines buffer data is taken from the end of the chain, since they have to
-match anyway.
-
-.. _pchinternals-sourcemgr:
-
-Source Manager Block
-^^^^^^^^^^^^^^^^^^^^
-
-The source manager block contains the serialized representation of Clang's
-:ref:`SourceManager <SourceManager>` class, which handles the mapping from
-source locations (as represented in Clang's abstract syntax tree) into actual
-column/line positions within a source file or macro instantiation.  The AST
-file's representation of the source manager also includes information about all
-of the headers that were (transitively) included when building the AST file.
-
-The bulk of the source manager block is dedicated to information about the
-various files, buffers, and macro instantiations into which a source location
-can refer.  Each of these is referenced by a numeric "file ID", which is a
-unique number (allocated starting at 1) stored in the source location.  Clang
-serializes the information for each kind of file ID, along with an index that
-maps file IDs to the position within the AST file where the information about
-that file ID is stored.  The data associated with a file ID is loaded only when
-required by the front end, e.g., to emit a diagnostic that includes a macro
-instantiation history inside the header itself.
-
-The source manager block also contains information about all of the headers
-that were included when building the AST file.  This includes information about
-the controlling macro for the header (e.g., when the preprocessor identified
-that the contents of the header dependent on a macro like
-``LLVM_CLANG_SOURCEMANAGER_H``).
-
-.. _pchinternals-preprocessor:
-
-Preprocessor Block
-^^^^^^^^^^^^^^^^^^
-
-The preprocessor block contains the serialized representation of the
-preprocessor.  Specifically, it contains all of the macros that have been
-defined by the end of the header used to build the AST file, along with the
-token sequences that comprise each macro.  The macro definitions are only read
-from the AST file when the name of the macro first occurs in the program.  This
-lazy loading of macro definitions is triggered by lookups into the
-:ref:`identifier table <pchinternals-ident-table>`.
-
-.. _pchinternals-types:
-
-Types Block
-^^^^^^^^^^^
-
-The types block contains the serialized representation of all of the types
-referenced in the translation unit.  Each Clang type node (``PointerType``,
-``FunctionProtoType``, etc.) has a corresponding record type in the AST file.
-When types are deserialized from the AST file, the data within the record is
-used to reconstruct the appropriate type node using the AST context.
-
-Each type has a unique type ID, which is an integer that uniquely identifies
-that type.  Type ID 0 represents the NULL type, type IDs less than
-``NUM_PREDEF_TYPE_IDS`` represent predefined types (``void``, ``float``, etc.),
-while other "user-defined" type IDs are assigned consecutively from
-``NUM_PREDEF_TYPE_IDS`` upward as the types are encountered.  The AST file has
-an associated mapping from the user-defined types block to the location within
-the types block where the serialized representation of that type resides,
-enabling lazy deserialization of types.  When a type is referenced from within
-the AST file, that reference is encoded using the type ID shifted left by 3
-bits.  The lower three bits are used to represent the ``const``, ``volatile``,
-and ``restrict`` qualifiers, as in Clang's :ref:`QualType <QualType>` class.
-
-.. _pchinternals-decls:
-
-Declarations Block
-^^^^^^^^^^^^^^^^^^
-
-The declarations block contains the serialized representation of all of the
-declarations referenced in the translation unit.  Each Clang declaration node
-(``VarDecl``, ``FunctionDecl``, etc.) has a corresponding record type in the
-AST file.  When declarations are deserialized from the AST file, the data
-within the record is used to build and populate a new instance of the
-corresponding ``Decl`` node.  As with types, each declaration node has a
-numeric ID that is used to refer to that declaration within the AST file.  In
-addition, a lookup table provides a mapping from that numeric ID to the offset
-within the precompiled header where that declaration is described.
-
-Declarations in Clang's abstract syntax trees are stored hierarchically.  At
-the top of the hierarchy is the translation unit (``TranslationUnitDecl``),
-which contains all of the declarations in the translation unit but is not
-actually written as a specific declaration node.  Its child declarations (such
-as functions or struct types) may also contain other declarations inside them,
-and so on.  Within Clang, each declaration is stored within a :ref:`declaration
-context <DeclContext>`, as represented by the ``DeclContext`` class.
-Declaration contexts provide the mechanism to perform name lookup within a
-given declaration (e.g., find the member named ``x`` in a structure) and
-iterate over the declarations stored within a context (e.g., iterate over all
-of the fields of a structure for structure layout).
-
-In Clang's AST file format, deserializing a declaration that is a
-``DeclContext`` is a separate operation from deserializing all of the
-declarations stored within that declaration context.  Therefore, Clang will
-deserialize the translation unit declaration without deserializing the
-declarations within that translation unit.  When required, the declarations
-stored within a declaration context will be deserialized.  There are two
-representations of the declarations within a declaration context, which
-correspond to the name-lookup and iteration behavior described above:
-
-* When the front end performs name lookup to find a name ``x`` within a given
-  declaration context (for example, during semantic analysis of the expression
-  ``p->x``, where ``p``'s type is defined in the precompiled header), Clang
-  refers to an on-disk hash table that maps from the names within that
-  declaration context to the declaration IDs that represent each visible
-  declaration with that name.  The actual declarations will then be
-  deserialized to provide the results of name lookup.
-* When the front end performs iteration over all of the declarations within a
-  declaration context, all of those declarations are immediately
-  de-serialized.  For large declaration contexts (e.g., the translation unit),
-  this operation is expensive; however, large declaration contexts are not
-  traversed in normal compilation, since such a traversal is unnecessary.
-  However, it is common for the code generator and semantic analysis to
-  traverse declaration contexts for structs, classes, unions, and
-  enumerations, although those contexts contain relatively few declarations in
-  the common case.
-
-Statements and Expressions
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Statements and expressions are stored in the AST file in both the :ref:`types
-<pchinternals-types>` and the :ref:`declarations <pchinternals-decls>` blocks,
-because every statement or expression will be associated with either a type or
-declaration.  The actual statement and expression records are stored
-immediately following the declaration or type that owns the statement or
-expression.  For example, the statement representing the body of a function
-will be stored directly following the declaration of the function.
-
-As with types and declarations, each statement and expression kind in Clang's
-abstract syntax tree (``ForStmt``, ``CallExpr``, etc.) has a corresponding
-record type in the AST file, which contains the serialized representation of
-that statement or expression.  Each substatement or subexpression within an
-expression is stored as a separate record (which keeps most records to a fixed
-size).  Within the AST file, the subexpressions of an expression are stored, in
-reverse order, prior to the expression that owns those expression, using a form
-of `Reverse Polish Notation
-<http://en.wikipedia.org/wiki/Reverse_Polish_notation>`_.  For example, an
-expression ``3 - 4 + 5`` would be represented as follows:
-
-+-----------------------+
-| ``IntegerLiteral(5)`` |
-+-----------------------+
-| ``IntegerLiteral(4)`` |
-+-----------------------+
-| ``IntegerLiteral(3)`` |
-+-----------------------+
-| ``IntegerLiteral(-)`` |
-+-----------------------+
-| ``IntegerLiteral(+)`` |
-+-----------------------+
-|       ``STOP``        |
-+-----------------------+
-
-When reading this representation, Clang evaluates each expression record it
-encounters, builds the appropriate abstract syntax tree node, and then pushes
-that expression on to a stack.  When a record contains *N* subexpressions ---
-``BinaryOperator`` has two of them --- those expressions are popped from the
-top of the stack.  The special STOP code indicates that we have reached the end
-of a serialized expression or statement; other expression or statement records
-may follow, but they are part of a different expression.
-
-.. _pchinternals-ident-table:
-
-Identifier Table Block
-^^^^^^^^^^^^^^^^^^^^^^
-
-The identifier table block contains an on-disk hash table that maps each
-identifier mentioned within the AST file to the serialized representation of
-the identifier's information (e.g, the ``IdentifierInfo`` structure).  The
-serialized representation contains:
-
-* The actual identifier string.
-* Flags that describe whether this identifier is the name of a built-in, a
-  poisoned identifier, an extension token, or a macro.
-* If the identifier names a macro, the offset of the macro definition within
-  the :ref:`pchinternals-preprocessor`.
-* If the identifier names one or more declarations visible from translation
-  unit scope, the :ref:`declaration IDs <pchinternals-decls>` of these
-  declarations.
-
-When an AST file is loaded, the AST file reader mechanism introduces itself
-into the identifier table as an external lookup source.  Thus, when the user
-program refers to an identifier that has not yet been seen, Clang will perform
-a lookup into the identifier table.  If an identifier is found, its contents
-(macro definitions, flags, top-level declarations, etc.) will be deserialized,
-at which point the corresponding ``IdentifierInfo`` structure will have the
-same contents it would have after parsing the headers in the AST file.
-
-Within the AST file, the identifiers used to name declarations are represented
-with an integral value.  A separate table provides a mapping from this integral
-value (the identifier ID) to the location within the on-disk hash table where
-that identifier is stored.  This mapping is used when deserializing the name of
-a declaration, the identifier of a token, or any other construct in the AST
-file that refers to a name.
-
-.. _pchinternals-method-pool:
-
-Method Pool Block
-^^^^^^^^^^^^^^^^^
-
-The method pool block is represented as an on-disk hash table that serves two
-purposes: it provides a mapping from the names of Objective-C selectors to the
-set of Objective-C instance and class methods that have that particular
-selector (which is required for semantic analysis in Objective-C) and also
-stores all of the selectors used by entities within the AST file.  The design
-of the method pool is similar to that of the :ref:`identifier table
-<pchinternals-ident-table>`: the first time a particular selector is formed
-during the compilation of the program, Clang will search in the on-disk hash
-table of selectors; if found, Clang will read the Objective-C methods
-associated with that selector into the appropriate front-end data structure
-(``Sema::InstanceMethodPool`` and ``Sema::FactoryMethodPool`` for instance and
-class methods, respectively).
-
-As with identifiers, selectors are represented by numeric values within the AST
-file.  A separate index maps these numeric selector values to the offset of the
-selector within the on-disk hash table, and will be used when de-serializing an
-Objective-C method declaration (or other Objective-C construct) that refers to
-the selector.
-
-AST Reader Integration Points
------------------------------
-
-The "lazy" deserialization behavior of AST files requires their integration
-into several completely different submodules of Clang.  For example, lazily
-deserializing the declarations during name lookup requires that the name-lookup
-routines be able to query the AST file to find entities stored there.
-
-For each Clang data structure that requires direct interaction with the AST
-reader logic, there is an abstract class that provides the interface between
-the two modules.  The ``ASTReader`` class, which handles the loading of an AST
-file, inherits from all of these abstract classes to provide lazy
-deserialization of Clang's data structures.  ``ASTReader`` implements the
-following abstract classes:
-
-``ExternalSLocEntrySource``
-  This abstract interface is associated with the ``SourceManager`` class, and
-  is used whenever the :ref:`source manager <pchinternals-sourcemgr>` needs to
-  load the details of a file, buffer, or macro instantiation.
-
-``IdentifierInfoLookup``
-  This abstract interface is associated with the ``IdentifierTable`` class, and
-  is used whenever the program source refers to an identifier that has not yet
-  been seen.  In this case, the AST reader searches for this identifier within
-  its :ref:`identifier table <pchinternals-ident-table>` to load any top-level
-  declarations or macros associated with that identifier.
-
-``ExternalASTSource``
-  This abstract interface is associated with the ``ASTContext`` class, and is
-  used whenever the abstract syntax tree nodes need to loaded from the AST
-  file.  It provides the ability to de-serialize declarations and types
-  identified by their numeric values, read the bodies of functions when
-  required, and read the declarations stored within a declaration context
-  (either for iteration or for name lookup).
-
-``ExternalSemaSource``
-  This abstract interface is associated with the ``Sema`` class, and is used
-  whenever semantic analysis needs to read information from the :ref:`global
-  method pool <pchinternals-method-pool>`.
-
-.. _pchinternals-chained:
-
-Chained precompiled headers
----------------------------
-
-Chained precompiled headers were initially intended to improve the performance
-of IDE-centric operations such as syntax highlighting and code completion while
-a particular source file is being edited by the user.  To minimize the amount
-of reparsing required after a change to the file, a form of precompiled header
---- called a precompiled *preamble* --- is automatically generated by parsing
-all of the headers in the source file, up to and including the last
-``#include``.  When only the source file changes (and none of the headers it
-depends on), reparsing of that source file can use the precompiled preamble and
-start parsing after the ``#include``\ s, so parsing time is proportional to the
-size of the source file (rather than all of its includes).  However, the
-compilation of that translation unit may already use a precompiled header: in
-this case, Clang will create the precompiled preamble as a chained precompiled
-header that refers to the original precompiled header.  This drastically
-reduces the time needed to serialize the precompiled preamble for use in
-reparsing.
-
-Chained precompiled headers get their name because each precompiled header can
-depend on one other precompiled header, forming a chain of dependencies.  A
-translation unit will then include the precompiled header that starts the chain
-(i.e., nothing depends on it).  This linearity of dependencies is important for
-the semantic model of chained precompiled headers, because the most-recent
-precompiled header can provide information that overrides the information
-provided by the precompiled headers it depends on, just like a header file
-``B.h`` that includes another header ``A.h`` can modify the state produced by
-parsing ``A.h``, e.g., by ``#undef``'ing a macro defined in ``A.h``.
-
-There are several ways in which chained precompiled headers generalize the AST
-file model:
-
-Numbering of IDs
-  Many different kinds of entities --- identifiers, declarations, types, etc.
-  --- have ID numbers that start at 1 or some other predefined constant and
-  grow upward.  Each precompiled header records the maximum ID number it has
-  assigned in each category.  Then, when a new precompiled header is generated
-  that depends on (chains to) another precompiled header, it will start
-  counting at the next available ID number.  This way, one can determine, given
-  an ID number, which AST file actually contains the entity.
-
-Name lookup
-  When writing a chained precompiled header, Clang attempts to write only
-  information that has changed from the precompiled header on which it is
-  based.  This changes the lookup algorithm for the various tables, such as the
-  :ref:`identifier table <pchinternals-ident-table>`: the search starts at the
-  most-recent precompiled header.  If no entry is found, lookup then proceeds
-  to the identifier table in the precompiled header it depends on, and so one.
-  Once a lookup succeeds, that result is considered definitive, overriding any
-  results from earlier precompiled headers.
-
-Update records
-  There are various ways in which a later precompiled header can modify the
-  entities described in an earlier precompiled header.  For example, later
-  precompiled headers can add entries into the various name-lookup tables for
-  the translation unit or namespaces, or add new categories to an Objective-C
-  class.  Each of these updates is captured in an "update record" that is
-  stored in the chained precompiled header file and will be loaded along with
-  the original entity.
-
-.. _pchinternals-modules:
-
-Modules
--------
-
-Modules generalize the chained precompiled header model yet further, from a
-linear chain of precompiled headers to an arbitrary directed acyclic graph
-(DAG) of AST files.  All of the same techniques used to make chained
-precompiled headers work --- ID number, name lookup, update records --- are
-shared with modules.  However, the DAG nature of modules introduce a number of
-additional complications to the model:
-
-Numbering of IDs
-  The simple, linear numbering scheme used in chained precompiled headers falls
-  apart with the module DAG, because different modules may end up with
-  different numbering schemes for entities they imported from common shared
-  modules.  To account for this, each module file provides information about
-  which modules it depends on and which ID numbers it assigned to the entities
-  in those modules, as well as which ID numbers it took for its own new
-  entities.  The AST reader then maps these "local" ID numbers into a "global"
-  ID number space for the current translation unit, providing a 1-1 mapping
-  between entities (in whatever AST file they inhabit) and global ID numbers.
-  If that translation unit is then serialized into an AST file, this mapping
-  will be stored for use when the AST file is imported.
-
-Declaration merging
-  It is possible for a given entity (from the language's perspective) to be
-  declared multiple times in different places.  For example, two different
-  headers can have the declaration of ``printf`` or could forward-declare
-  ``struct stat``.  If each of those headers is included in a module, and some
-  third party imports both of those modules, there is a potentially serious
-  problem: name lookup for ``printf`` or ``struct stat`` will find both
-  declarations, but the AST nodes are unrelated.  This would result in a
-  compilation error, due to an ambiguity in name lookup.  Therefore, the AST
-  reader performs declaration merging according to the appropriate language
-  semantics, ensuring that the two disjoint declarations are merged into a
-  single redeclaration chain (with a common canonical declaration), so that it
-  is as if one of the headers had been included before the other.
-
-Name Visibility
-  Modules allow certain names that occur during module creation to be "hidden",
-  so that they are not part of the public interface of the module and are not
-  visible to its clients.  The AST reader maintains a "visible" bit on various
-  AST nodes (declarations, macros, etc.) to indicate whether that particular
-  AST node is currently visible; the various name lookup mechanisms in Clang
-  inspect the visible bit to determine whether that entity, which is still in
-  the AST (because other, visible AST nodes may depend on it), can actually be
-  found by name lookup.  When a new (sub)module is imported, it may make
-  existing, non-visible, already-deserialized AST nodes visible; it is the
-  responsibility of the AST reader to find and update these AST nodes when it
-  is notified of the import.
-

Modified: trunk/contrib/llvm/tools/clang/docs/PCHLayout.graffle
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/docs/PTHInternals.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/PTHInternals.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/PTHInternals.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,163 +0,0 @@
-==========================
-Pretokenized Headers (PTH)
-==========================
-
-This document first describes the low-level interface for using PTH and
-then briefly elaborates on its design and implementation. If you are
-interested in the end-user view, please see the :ref:`User's Manual
-<usersmanual-precompiled-headers>`.
-
-Using Pretokenized Headers with ``clang`` (Low-level Interface)
-===============================================================
-
-The Clang compiler frontend, ``clang -cc1``, supports three command line
-options for generating and using PTH files.
-
-To generate PTH files using ``clang -cc1``, use the option ``-emit-pth``:
-
-.. code-block:: console
-
-  $ clang -cc1 test.h -emit-pth -o test.h.pth
-
-This option is transparently used by ``clang`` when generating PTH
-files. Similarly, PTH files can be used as prefix headers using the
-``-include-pth`` option:
-
-.. code-block:: console
-
-  $ clang -cc1 -include-pth test.h.pth test.c -o test.s
-
-Alternatively, Clang's PTH files can be used as a raw "token-cache" (or
-"content" cache) of the source included by the original header file.
-This means that the contents of the PTH file are searched as substitutes
-for *any* source files that are used by ``clang -cc1`` to process a
-source file. This is done by specifying the ``-token-cache`` option:
-
-.. code-block:: console
-
-  $ cat test.h
-  #include <stdio.h>
-  $ clang -cc1 -emit-pth test.h -o test.h.pth
-  $ cat test.c
-  #include "test.h"
-  $ clang -cc1 test.c -o test -token-cache test.h.pth
-
-In this example the contents of ``stdio.h`` (and the files it includes)
-will be retrieved from ``test.h.pth``, as the PTH file is being used in
-this case as a raw cache of the contents of ``test.h``. This is a
-low-level interface used to both implement the high-level PTH interface
-as well as to provide alternative means to use PTH-style caching.
-
-PTH Design and Implementation
-=============================
-
-Unlike GCC's precompiled headers, which cache the full ASTs and
-preprocessor state of a header file, Clang's pretokenized header files
-mainly cache the raw lexer *tokens* that are needed to segment the
-stream of characters in a source file into keywords, identifiers, and
-operators. Consequently, PTH serves to mainly directly speed up the
-lexing and preprocessing of a source file, while parsing and
-type-checking must be completely redone every time a PTH file is used.
-
-Basic Design Tradeoffs
-----------------------
-
-In the long term there are plans to provide an alternate PCH
-implementation for Clang that also caches the work for parsing and type
-checking the contents of header files. The current implementation of PCH
-in Clang as pretokenized header files was motivated by the following
-factors:
-
-**Language independence**
-   PTH files work with any language that
-   Clang's lexer can handle, including C, Objective-C, and (in the early
-   stages) C++. This means development on language features at the
-   parsing level or above (which is basically almost all interesting
-   pieces) does not require PTH to be modified.
-
-**Simple design**
-   Relatively speaking, PTH has a simple design and
-   implementation, making it easy to test. Further, because the
-   machinery for PTH resides at the lower-levels of the Clang library
-   stack it is fairly straightforward to profile and optimize.
-
-Further, compared to GCC's PCH implementation (which is the dominate
-precompiled header file implementation that Clang can be directly
-compared against) the PTH design in Clang yields several attractive
-features:
-
-**Architecture independence**
-   In contrast to GCC's PCH files (and
-   those of several other compilers), Clang's PTH files are architecture
-   independent, requiring only a single PTH file when building a
-   program for multiple architectures.
-
-   For example, on Mac OS X one may wish to compile a "universal binary"
-   that runs on PowerPC, 32-bit Intel (i386), and 64-bit Intel
-   architectures. In contrast, GCC requires a PCH file for each
-   architecture, as the definitions of types in the AST are
-   architecture-specific. Since a Clang PTH file essentially represents
-   a lexical cache of header files, a single PTH file can be safely used
-   when compiling for multiple architectures. This can also reduce
-   compile times because only a single PTH file needs to be generated
-   during a build instead of several.
-
-**Reduced memory pressure**
-   Similar to GCC, Clang reads PTH files
-   via the use of memory mapping (i.e., ``mmap``). Clang, however,
-   memory maps PTH files as read-only, meaning that multiple invocations
-   of ``clang -cc1`` can share the same pages in memory from a
-   memory-mapped PTH file. In comparison, GCC also memory maps its PCH
-   files but also modifies those pages in memory, incurring the
-   copy-on-write costs. The read-only nature of PTH can greatly reduce
-   memory pressure for builds involving multiple cores, thus improving
-   overall scalability.
-
-**Fast generation**
-   PTH files can be generated in a small fraction
-   of the time needed to generate GCC's PCH files. Since PTH/PCH
-   generation is a serial operation that typically blocks progress
-   during a build, faster generation time leads to improved processor
-   utilization with parallel builds on multicore machines.
-
-Despite these strengths, PTH's simple design suffers some algorithmic
-handicaps compared to other PCH strategies such as those used by GCC.
-While PTH can greatly speed up the processing time of a header file, the
-amount of work required to process a header file is still roughly linear
-in the size of the header file. In contrast, the amount of work done by
-GCC to process a precompiled header is (theoretically) constant (the
-ASTs for the header are literally memory mapped into the compiler). This
-means that only the pieces of the header file that are referenced by the
-source file including the header are the only ones the compiler needs to
-process during actual compilation. While GCC's particular implementation
-of PCH mitigates some of these algorithmic strengths via the use of
-copy-on-write pages, the approach itself can fundamentally dominate at
-an algorithmic level, especially when one considers header files of
-arbitrary size.
-
-There are plans to potentially implement an complementary PCH
-implementation for Clang based on the lazy deserialization of ASTs. This
-approach would theoretically have the same constant-time algorithmic
-advantages just mentioned but would also retain some of the strengths of
-PTH such as reduced memory pressure (ideal for multi-core builds).
-
-Internal PTH Optimizations
---------------------------
-
-While the main optimization employed by PTH is to reduce lexing time of
-header files by caching pre-lexed tokens, PTH also employs several other
-optimizations to speed up the processing of header files:
-
--  ``stat`` caching: PTH files cache information obtained via calls to
-   ``stat`` that ``clang -cc1`` uses to resolve which files are included
-   by ``#include`` directives. This greatly reduces the overhead
-   involved in context-switching to the kernel to resolve included
-   files.
-
--  Fast skipping of ``#ifdef`` ... ``#endif`` chains: PTH files
-   record the basic structure of nested preprocessor blocks. When the
-   condition of the preprocessor block is false, all of its tokens are
-   immediately skipped instead of requiring them to be handled by
-   Clang's preprocessor.
-
-

Modified: trunk/contrib/llvm/tools/clang/docs/RAVFrontendAction.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/RAVFrontendAction.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/RAVFrontendAction.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,216 +0,0 @@
-==========================================================
-How to write RecursiveASTVisitor based ASTFrontendActions.
-==========================================================
-
-Introduction
-============
-
-In this tutorial you will learn how to create a FrontendAction that uses
-a RecursiveASTVisitor to find CXXRecordDecl AST nodes with a specified
-name.
-
-Creating a FrontendAction
-=========================
-
-When writing a clang based tool like a Clang Plugin or a standalone tool
-based on LibTooling, the common entry point is the FrontendAction.
-FrontendAction is an interface that allows execution of user specific
-actions as part of the compilation. To run tools over the AST clang
-provides the convenience interface ASTFrontendAction, which takes care
-of executing the action. The only part left is to implement the
-CreateASTConsumer method that returns an ASTConsumer per translation
-unit.
-
-::
-
-      class FindNamedClassAction : public clang::ASTFrontendAction {
-      public:
-        virtual clang::ASTConsumer *CreateASTConsumer(
-          clang::CompilerInstance &Compiler, llvm::StringRef InFile) {
-          return new FindNamedClassConsumer;
-        }
-      };
-
-Creating an ASTConsumer
-=======================
-
-ASTConsumer is an interface used to write generic actions on an AST,
-regardless of how the AST was produced. ASTConsumer provides many
-different entry points, but for our use case the only one needed is
-HandleTranslationUnit, which is called with the ASTContext for the
-translation unit.
-
-::
-
-      class FindNamedClassConsumer : public clang::ASTConsumer {
-      public:
-        virtual void HandleTranslationUnit(clang::ASTContext &Context) {
-          // Traversing the translation unit decl via a RecursiveASTVisitor
-          // will visit all nodes in the AST.
-          Visitor.TraverseDecl(Context.getTranslationUnitDecl());
-        }
-      private:
-        // A RecursiveASTVisitor implementation.
-        FindNamedClassVisitor Visitor;
-      };
-
-Using the RecursiveASTVisitor
-=============================
-
-Now that everything is hooked up, the next step is to implement a
-RecursiveASTVisitor to extract the relevant information from the AST.
-
-The RecursiveASTVisitor provides hooks of the form bool
-VisitNodeType(NodeType \*) for most AST nodes; the exception are TypeLoc
-nodes, which are passed by-value. We only need to implement the methods
-for the relevant node types.
-
-Let's start by writing a RecursiveASTVisitor that visits all
-CXXRecordDecl's.
-
-::
-
-      class FindNamedClassVisitor
-        : public RecursiveASTVisitor<FindNamedClassVisitor> {
-      public:
-        bool VisitCXXRecordDecl(CXXRecordDecl *Declaration) {
-          // For debugging, dumping the AST nodes will show which nodes are already
-          // being visited.
-          Declaration->dump();
-
-          // The return value indicates whether we want the visitation to proceed.
-          // Return false to stop the traversal of the AST.
-          return true;
-        }
-      };
-
-In the methods of our RecursiveASTVisitor we can now use the full power
-of the Clang AST to drill through to the parts that are interesting for
-us. For example, to find all class declaration with a certain name, we
-can check for a specific qualified name:
-
-::
-
-      bool VisitCXXRecordDecl(CXXRecordDecl *Declaration) {
-        if (Declaration->getQualifiedNameAsString() == "n::m::C")
-          Declaration->dump();
-        return true;
-      }
-
-Accessing the SourceManager and ASTContext
-==========================================
-
-Some of the information about the AST, like source locations and global
-identifier information, are not stored in the AST nodes themselves, but
-in the ASTContext and its associated source manager. To retrieve them we
-need to hand the ASTContext into our RecursiveASTVisitor implementation.
-
-The ASTContext is available from the CompilerInstance during the call to
-CreateASTConsumer. We can thus extract it there and hand it into our
-freshly created FindNamedClassConsumer:
-
-::
-
-      virtual clang::ASTConsumer *CreateASTConsumer(
-        clang::CompilerInstance &Compiler, llvm::StringRef InFile) {
-        return new FindNamedClassConsumer(&Compiler.getASTContext());
-      }
-
-Now that the ASTContext is available in the RecursiveASTVisitor, we can
-do more interesting things with AST nodes, like looking up their source
-locations:
-
-::
-
-      bool VisitCXXRecordDecl(CXXRecordDecl *Declaration) {
-        if (Declaration->getQualifiedNameAsString() == "n::m::C") {
-          // getFullLoc uses the ASTContext's SourceManager to resolve the source
-          // location and break it up into its line and column parts.
-          FullSourceLoc FullLocation = Context->getFullLoc(Declaration->getLocStart());
-          if (FullLocation.isValid())
-            llvm::outs() << "Found declaration at "
-                         << FullLocation.getSpellingLineNumber() << ":"
-                         << FullLocation.getSpellingColumnNumber() << "\n";
-        }
-        return true;
-      }
-
-Putting it all together
-=======================
-
-Now we can combine all of the above into a small example program:
-
-::
-
-      #include "clang/AST/ASTConsumer.h"
-      #include "clang/AST/RecursiveASTVisitor.h"
-      #include "clang/Frontend/CompilerInstance.h"
-      #include "clang/Frontend/FrontendAction.h"
-      #include "clang/Tooling/Tooling.h"
-
-      using namespace clang;
-
-      class FindNamedClassVisitor
-        : public RecursiveASTVisitor<FindNamedClassVisitor> {
-      public:
-        explicit FindNamedClassVisitor(ASTContext *Context)
-          : Context(Context) {}
-
-        bool VisitCXXRecordDecl(CXXRecordDecl *Declaration) {
-          if (Declaration->getQualifiedNameAsString() == "n::m::C") {
-            FullSourceLoc FullLocation = Context->getFullLoc(Declaration->getLocStart());
-            if (FullLocation.isValid())
-              llvm::outs() << "Found declaration at "
-                           << FullLocation.getSpellingLineNumber() << ":"
-                           << FullLocation.getSpellingColumnNumber() << "\n";
-          }
-          return true;
-        }
-
-      private:
-        ASTContext *Context;
-      };
-
-      class FindNamedClassConsumer : public clang::ASTConsumer {
-      public:
-        explicit FindNamedClassConsumer(ASTContext *Context)
-          : Visitor(Context) {}
-
-        virtual void HandleTranslationUnit(clang::ASTContext &Context) {
-          Visitor.TraverseDecl(Context.getTranslationUnitDecl());
-        }
-      private:
-        FindNamedClassVisitor Visitor;
-      };
-
-      class FindNamedClassAction : public clang::ASTFrontendAction {
-      public:
-        virtual clang::ASTConsumer *CreateASTConsumer(
-          clang::CompilerInstance &Compiler, llvm::StringRef InFile) {
-          return new FindNamedClassConsumer(&Compiler.getASTContext());
-        }
-      };
-
-      int main(int argc, char **argv) {
-        if (argc > 1) {
-          clang::tooling::runToolOnCode(new FindNamedClassAction, argv[1]);
-        }
-      }
-
-We store this into a file called FindClassDecls.cpp and create the
-following CMakeLists.txt to link it:
-
-::
-
-    set(LLVM_USED_LIBS clangTooling)
-
-    add_clang_executable(find-class-decls FindClassDecls.cpp)
-
-When running this tool over a small code snippet it will output all
-declarations of a class n::m::C it found:
-
-::
-
-      $ ./bin/find-class-decls "namespace n { namespace m { class C {}; } }"
-      Found declaration at 1:29
-

Modified: trunk/contrib/llvm/tools/clang/docs/ReleaseNotes.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/ReleaseNotes.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/ReleaseNotes.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,145 +0,0 @@
-=======================
-Clang 3.3 Release Notes
-=======================
-
-.. contents::
-   :local:
-   :depth: 2
-
-Written by the `LLVM Team <http://llvm.org/>`_
-
-Introduction
-============
-
-This document contains the release notes for the Clang C/C++/Objective-C
-frontend, part of the LLVM Compiler Infrastructure, release 3.3. Here we
-describe the status of Clang in some detail, including major improvements from
-the previous release and new feature work. For the general LLVM release notes,
-see `the LLVM documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM
-releases may be downloaded from the `LLVM releases web site
-<http://llvm.org/releases/>`_.
-
-For more information about Clang or LLVM, including information about the latest
-release, please check out the main please see the `Clang Web Site
-<http://clang.llvm.org>`_ or the `LLVM Web Site <http://llvm.org>`_.
-
-Note that if you are reading this file from a Subversion checkout or the main
-Clang web page, this document applies to the *next* release, not the current
-one. To see the release notes for a specific release, please see the `releases
-page <http://llvm.org/releases/>`_.
-
-What's New in Clang 3.3?
-========================
-
-Some of the major new features and improvements to Clang are listed
-here. Generic improvements to Clang as a whole or to its underlying
-infrastructure are described first, followed by language-specific sections with
-improvements to Clang's support for those languages.
-
-Major New Features
-------------------
-
-Improvements to Clang's diagnostics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Clang's diagnostics are constantly being improved to catch more issues,
-explain them more clearly, and provide more accurate source information
-about them. The improvements since the 3.2 release include:
-
-Extended Identifiers: Unicode Support and Universal Character Names
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Clang 3.3 includes support for *extended identifiers* in C99 and C++.
-This feature allows identifiers to contain certain Unicode characters, as
-specified by the active language standard; these characters can be written
-directly in the source file using the UTF-8 encoding, or referred to using
-*universal character names* (``\u00E0``, ``\U000000E0``).
-
-C Language Changes in Clang
----------------------------
-
-C++ Language Changes in Clang
------------------------------
-
-- Clang now correctly implements language linkage for functions and variables.
-  This means that, for example, it is now possible to overload static functions
-  declared in an ``extern "C"`` context. For backwards compatibility, an alias
-  with the unmangled name is still emitted if it is the only one and has the
-  ``used`` attribute.
-
-Internal API Changes
---------------------
-
-These are major API changes that have happened since the 3.2 release of
-Clang. If upgrading an external codebase that uses Clang as a library,
-this section should help get you past the largest hurdles of upgrading.
-
-Value Casting
-^^^^^^^^^^^^^
-
-Certain type hierarchies (TypeLoc, CFGElement, ProgramPoint, and SVal) were
-misusing the llvm::cast machinery to perform undefined operations. Their APIs
-have been changed to use two member function templates that return values
-instead of pointers or references - "T castAs" and "Optional<T> getAs" (in the
-case of the TypeLoc hierarchy the latter is "T getAs" and you can use the
-boolean testability of a TypeLoc (or its 'validity') to verify that the cast
-succeeded). Essentially all previous 'cast' usage should be replaced with
-'castAs' and 'dyn_cast' should be replaced with 'getAs'. See r175462 for the
-first example of such a change along with many examples of how code was
-migrated to the new API.
-
-Storage Class
-^^^^^^^^^^^^^
-
-For each variable and function Clang used to keep the storage class as written
-in the source, the linkage and a semantic storage class. This was a bit
-redundant and the semantic storage class has been removed. The method
-getStorageClass now returns what is written in the source code for that decl.
-
-libclang
---------
-
-The clang_CXCursorSet_contains() function previously incorrectly returned 0
-if it contained a CXCursor, contrary to what the documentation stated.  This
-has been fixed so that the function returns a non-zero value if the set
-contains a cursor.  This is API breaking change, but matches the intended
-original behavior.  Moreover, this also fixes the issue of an invalid CXCursorSet
-appearing to contain any CXCursor.
-
-Static Analyzer
----------------
-
-The static analyzer (which contains additional code checking beyond compiler
-warnings) has improved significantly in both in the core analysis engine and 
-also in the kinds of issues it can find.
-
-Core Analysis Improvements
-==========================
-
-- Support for interprocedural reasoning about constructors and destructors.
-- New false positive suppression mechanisms that reduced the number of false
-  null pointer dereference warnings due to interprocedural analysis.
-- Major performance enhancements to speed up interprocedural analysis
-
-New Issues Found
-================
-
-- New memory error checks such as use-after-free with C++ 'delete'.
-- Detection of mismatched allocators and deallocators (e.g., using 'new' with
-  'free()', 'malloc()' with 'delete').
-- Additional checks for misuses of Apple Foundation framework collection APIs.
-
-Significant Known Problems
-==========================
-
-Additional Information
-======================
-
-A wide variety of additional information is available on the `Clang web page
-<http://clang.llvm.org/>`_. The web page contains versions of the API
-documentation which are up-to-date with the Subversion version of the source
-code. You can access versions of these documents specific to this release by
-going into the "``clang/docs/``" directory in the Clang tree.
-
-If you have any questions or comments about Clang, please feel free to contact
-us via the `mailing list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_.

Modified: trunk/contrib/llvm/tools/clang/docs/ThreadSanitizer.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/ThreadSanitizer.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/ThreadSanitizer.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-ThreadSanitizer
-===============
-
-Introduction
-------------
-
-ThreadSanitizer is a tool that detects data races.  It consists of a compiler
-instrumentation module and a run-time library.  Typical slowdown introduced by
-ThreadSanitizer is about **5x-15x**.  Typical memory overhead introduced by
-ThreadSanitizer is about **5x-10x**.
-
-How to build
-------------
-
-Follow the `Clang build instructions <../get_started.html>`_.  CMake build is
-supported.
-
-Supported Platforms
--------------------
-
-ThreadSanitizer is supported on Linux x86_64 (tested on Ubuntu 10.04 and 12.04).
-Support for MacOS 10.7 (64-bit only) is planned for 2013.  Support for 32-bit
-platforms is problematic and not yet planned.
-
-Usage
------
-
-Simply compile and link your program with ``-fsanitize=thread``.  To get a
-reasonable performance add ``-O1`` or higher.  Use ``-g`` to get file names
-and line numbers in the warning messages.
-
-Example:
-
-.. code-block:: c++
-
-  % cat projects/compiler-rt/lib/tsan/lit_tests/tiny_race.c
-  #include <pthread.h>
-  int Global;
-  void *Thread1(void *x) {
-    Global = 42;
-    return x;
-  }
-  int main() {
-    pthread_t t;
-    pthread_create(&t, NULL, Thread1, NULL);
-    Global = 43;
-    pthread_join(t, NULL);
-    return Global;
-  }
-
-  $ clang -fsanitize=thread -g -O1 tiny_race.c
-
-If a bug is detected, the program will print an error message to stderr.
-Currently, ThreadSanitizer symbolizes its output using an external
-``addr2line`` process (this will be fixed in future).
-
-.. code-block:: bash
-
-  % ./a.out
-  WARNING: ThreadSanitizer: data race (pid=19219)
-    Write of size 4 at 0x7fcf47b21bc0 by thread T1:
-      #0 Thread1 tiny_race.c:4 (exe+0x00000000a360)
-
-    Previous write of size 4 at 0x7fcf47b21bc0 by main thread:
-      #0 main tiny_race.c:10 (exe+0x00000000a3b4)
-
-    Thread T1 (running) created at:
-      #0 pthread_create tsan_interceptors.cc:705 (exe+0x00000000c790)
-      #1 main tiny_race.c:9 (exe+0x00000000a3a4)
-
-``__has_feature(thread_sanitizer)``
-------------------------------------
-
-In some cases one may need to execute different code depending on whether
-ThreadSanitizer is enabled.
-:ref:`\_\_has\_feature <langext-__has_feature-__has_extension>` can be used for
-this purpose.
-
-.. code-block:: c
-
-    #if defined(__has_feature)
-    #  if __has_feature(thread_sanitizer)
-    // code that builds only under ThreadSanitizer
-    #  endif
-    #endif
-
-``__attribute__((no_sanitize_thread))``
------------------------------------------------
-
-Some code should not be instrumented by ThreadSanitizer.
-One may use the function attribute
-:ref:`no_sanitize_thread <langext-thread_sanitizer>`
-to disable instrumentation of plain (non-atomic) loads/stores in a particular function.
-ThreadSanitizer may still instrument such functions to avoid false positives.
-This attribute may not be
-supported by other compilers, so we suggest to use it together with
-``__has_feature(thread_sanitizer)``. Note: currently, this attribute will be
-lost if the function is inlined.
-
-Limitations
------------
-
-* ThreadSanitizer uses more real memory than a native run. At the default
-  settings the memory overhead is 5x plus 1Mb per each thread. Settings with 3x
-  (less accurate analysis) and 9x (more accurate analysis) overhead are also
-  available.
-* ThreadSanitizer maps (but does not reserve) a lot of virtual address space.
-  This means that tools like ``ulimit`` may not work as usually expected.
-* Libc/libstdc++ static linking is not supported.
-* Non-position-independent executables are not supported.  Therefore, the
-  ``fsanitize=thread`` flag will cause Clang to act as though the ``-fPIE``
-  flag had been supplied if compiling without ``-fPIC``, and as though the
-  ``-pie`` flag had been supplied if linking an executable.
-
-Current Status
---------------
-
-ThreadSanitizer is in beta stage.  It is known to work on large C++ programs
-using pthreads, but we do not promise anything (yet).  C++11 threading is
-supported with llvm libc++.  The test suite is integrated into CMake build
-and can be run with ``make check-tsan`` command.
-
-We are actively working on enhancing the tool --- stay tuned.  Any help,
-especially in the form of minimized standalone tests is more than welcome.
-
-More Information
-----------------
-`http://code.google.com/p/thread-sanitizer <http://code.google.com/p/thread-sanitizer/>`_.
-

Modified: trunk/contrib/llvm/tools/clang/docs/Tooling.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/Tooling.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/Tooling.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-=================================================
-Choosing the Right Interface for Your Application
-=================================================
-
-Clang provides infrastructure to write tools that need syntactic and semantic
-information about a program.  This document will give a short introduction of
-the different ways to write clang tools, and their pros and cons.
-
-LibClang
---------
-
-`LibClang <http://clang.llvm.org/doxygen/group__CINDEX.html>`_ is a stable high
-level C interface to clang.  When in doubt LibClang is probably the interface
-you want to use.  Consider the other interfaces only when you have a good
-reason not to use LibClang.
-
-Canonical examples of when to use LibClang:
-
-* Xcode
-* Clang Python Bindings
-
-Use LibClang when you...:
-
-* want to interface with clang from other languages than C++
-* need a stable interface that takes care to be backwards compatible
-* want powerful high-level abstractions, like iterating through an AST with a
-  cursor, and don't want to learn all the nitty gritty details of Clang's AST.
-
-Do not use LibClang when you...:
-
-* want full control over the Clang AST
-
-Clang Plugins
--------------
-
-:doc:`Clang Plugins <ClangPlugins>` allow you to run additional actions on the
-AST as part of a compilation.  Plugins are dynamic libraries that are loaded at
-runtime by the compiler, and they're easy to integrate into your build
-environment.
-
-Canonical examples of when to use Clang Plugins:
-
-* special lint-style warnings or errors for your project
-* creating additional build artifacts from a single compile step
-
-Use Clang Plugins when you...:
-
-* need your tool to rerun if any of the dependencies change
-* want your tool to make or break a build
-* need full control over the Clang AST
-
-Do not use Clang Plugins when you...:
-
-* want to run tools outside of your build environment
-* want full control on how Clang is set up, including mapping of in-memory
-  virtual files
-* need to run over a specific subset of files in your project which is not
-  necessarily related to any changes which would trigger rebuilds
-
-LibTooling
-----------
-
-:doc:`LibTooling <LibTooling>` is a C++ interface aimed at writing standalone
-tools, as well as integrating into services that run clang tools.  Canonical
-examples of when to use LibTooling:
-
-* a simple syntax checker
-* refactoring tools
-
-Use LibTooling when you...:
-
-* want to run tools over a single file, or a specific subset of files,
-  independently of the build system
-* want full control over the Clang AST
-* want to share code with Clang Plugins
-
-Do not use LibTooling when you...:
-
-* want to run as part of the build triggered by dependency changes
-* want a stable interface so you don't need to change your code when the AST API
-  changes
-* want high level abstractions like cursors and code completion out of the box
-* do not want to write your tools in C++
-
-:doc:`Clang tools <ClangTools>` are a collection of specific developer tools
-built on top of the LibTooling infrastructure as part of the Clang project.
-They are targeted at automating and improving core development activities of
-C/C++ developers.
-
-Examples of tools we are building or planning as part of the Clang project:
-
-* Syntax checking (:program:`clang-check`)
-* Automatic fixing of compile errors (:program:`clang-fixit`)
-* Automatic code formatting (:program:`clang-format`)
-* Migration tools for new features in new language standards
-* Core refactoring tools
-

Modified: trunk/contrib/llvm/tools/clang/docs/UsersManual.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/UsersManual.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/UsersManual.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1351 +0,0 @@
-============================
-Clang Compiler User's Manual
-============================
-
-.. contents::
-   :local:
-
-Introduction
-============
-
-The Clang Compiler is an open-source compiler for the C family of
-programming languages, aiming to be the best in class implementation of
-these languages. Clang builds on the LLVM optimizer and code generator,
-allowing it to provide high-quality optimization and code generation
-support for many targets. For more general information, please see the
-`Clang Web Site <http://clang.llvm.org>`_ or the `LLVM Web
-Site <http://llvm.org>`_.
-
-This document describes important notes about using Clang as a compiler
-for an end-user, documenting the supported features, command line
-options, etc. If you are interested in using Clang to build a tool that
-processes code, please see :doc:`InternalsManual`. If you are interested in the
-`Clang Static Analyzer <http://clang-analyzer.llvm.org>`_, please see its web
-page.
-
-Clang is designed to support the C family of programming languages,
-which includes :ref:`C <c>`, :ref:`Objective-C <objc>`, :ref:`C++ <cxx>`, and
-:ref:`Objective-C++ <objcxx>` as well as many dialects of those. For
-language-specific information, please see the corresponding language
-specific section:
-
--  :ref:`C Language <c>`: K&R C, ANSI C89, ISO C90, ISO C94 (C89+AMD1), ISO
-   C99 (+TC1, TC2, TC3).
--  :ref:`Objective-C Language <objc>`: ObjC 1, ObjC 2, ObjC 2.1, plus
-   variants depending on base language.
--  :ref:`C++ Language <cxx>`
--  :ref:`Objective C++ Language <objcxx>`
-
-In addition to these base languages and their dialects, Clang supports a
-broad variety of language extensions, which are documented in the
-corresponding language section. These extensions are provided to be
-compatible with the GCC, Microsoft, and other popular compilers as well
-as to improve functionality through Clang-specific features. The Clang
-driver and language features are intentionally designed to be as
-compatible with the GNU GCC compiler as reasonably possible, easing
-migration from GCC to Clang. In most cases, code "just works".
-
-In addition to language specific features, Clang has a variety of
-features that depend on what CPU architecture or operating system is
-being compiled for. Please see the :ref:`Target-Specific Features and
-Limitations <target_features>` section for more details.
-
-The rest of the introduction introduces some basic :ref:`compiler
-terminology <terminology>` that is used throughout this manual and
-contains a basic :ref:`introduction to using Clang <basicusage>` as a
-command line compiler.
-
-.. _terminology:
-
-Terminology
------------
-
-Front end, parser, backend, preprocessor, undefined behavior,
-diagnostic, optimizer
-
-.. _basicusage:
-
-Basic Usage
------------
-
-Intro to how to use a C compiler for newbies.
-
-compile + link compile then link debug info enabling optimizations
-picking a language to use, defaults to C99 by default. Autosenses based
-on extension. using a makefile
-
-Command Line Options
-====================
-
-This section is generally an index into other sections. It does not go
-into depth on the ones that are covered by other sections. However, the
-first part introduces the language selection and other high level
-options like :option:`-c`, :option:`-g`, etc.
-
-Options to Control Error and Warning Messages
----------------------------------------------
-
-.. option:: -Werror
-
-  Turn warnings into errors.
-
-.. This is in plain monospaced font because it generates the same label as
-.. -Werror, and Sphinx complains.
-
-``-Werror=foo``
-
-  Turn warning "foo" into an error.
-
-.. option:: -Wno-error=foo
-
-  Turn warning "foo" into an warning even if :option:`-Werror` is specified.
-
-.. option:: -Wfoo
-
-  Enable warning "foo".
-
-.. option:: -Wno-foo
-
-  Disable warning "foo".
-
-.. option:: -w
-
-  Disable all warnings.
-
-.. option:: -Weverything
-
-  :ref:`Enable all warnings. <diagnostics_enable_everything>`
-
-.. option:: -pedantic
-
-  Warn on language extensions.
-
-.. option:: -pedantic-errors
-
-  Error on language extensions.
-
-.. option:: -Wsystem-headers
-
-  Enable warnings from system headers.
-
-.. option:: -ferror-limit=123
-
-  Stop emitting diagnostics after 123 errors have been produced. The default is
-  20, and the error limit can be disabled with :option:`-ferror-limit=0`.
-
-.. option:: -ftemplate-backtrace-limit=123
-
-  Only emit up to 123 template instantiation notes within the template
-  instantiation backtrace for a single warning or error. The default is 10, and
-  the limit can be disabled with :option:`-ftemplate-backtrace-limit=0`.
-
-.. _cl_diag_formatting:
-
-Formatting of Diagnostics
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Clang aims to produce beautiful diagnostics by default, particularly for
-new users that first come to Clang. However, different people have
-different preferences, and sometimes Clang is driven by another program
-that wants to parse simple and consistent output, not a person. For
-these cases, Clang provides a wide range of options to control the exact
-output format of the diagnostics that it generates.
-
-.. _opt_fshow-column:
-
-**-f[no-]show-column**
-   Print column number in diagnostic.
-
-   This option, which defaults to on, controls whether or not Clang
-   prints the column number of a diagnostic. For example, when this is
-   enabled, Clang will print something like:
-
-   ::
-
-         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-         #endif bad
-                ^
-                //
-
-   When this is disabled, Clang will print "test.c:28: warning..." with
-   no column number.
-
-   The printed column numbers count bytes from the beginning of the
-   line; take care if your source contains multibyte characters.
-
-.. _opt_fshow-source-location:
-
-**-f[no-]show-source-location**
-   Print source file/line/column information in diagnostic.
-
-   This option, which defaults to on, controls whether or not Clang
-   prints the filename, line number and column number of a diagnostic.
-   For example, when this is enabled, Clang will print something like:
-
-   ::
-
-         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-         #endif bad
-                ^
-                //
-
-   When this is disabled, Clang will not print the "test.c:28:8: "
-   part.
-
-.. _opt_fcaret-diagnostics:
-
-**-f[no-]caret-diagnostics**
-   Print source line and ranges from source code in diagnostic.
-   This option, which defaults to on, controls whether or not Clang
-   prints the source line, source ranges, and caret when emitting a
-   diagnostic. For example, when this is enabled, Clang will print
-   something like:
-
-   ::
-
-         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-         #endif bad
-                ^
-                //
-
-**-f[no-]color-diagnostics**
-   This option, which defaults to on when a color-capable terminal is
-   detected, controls whether or not Clang prints diagnostics in color.
-
-   When this option is enabled, Clang will use colors to highlight
-   specific parts of the diagnostic, e.g.,
-
-   .. nasty hack to not lose our dignity
-
-   .. raw:: html
-
-       <pre>
-         <b><span style="color:black">test.c:28:8: <span style="color:magenta">warning</span>: extra tokens at end of #endif directive [-Wextra-tokens]</span></b>
-         #endif bad
-                <span style="color:green">^</span>
-                <span style="color:green">//</span>
-       </pre>
-
-   When this is disabled, Clang will just print:
-
-   ::
-
-         test.c:2:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-         #endif bad
-                ^
-                //
-
-.. option:: -fdiagnostics-format=clang/msvc/vi
-
-   Changes diagnostic output format to better match IDEs and command line tools.
-
-   This option controls the output format of the filename, line number,
-   and column printed in diagnostic messages. The options, and their
-   affect on formatting a simple conversion diagnostic, follow:
-
-   **clang** (default)
-       ::
-
-           t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int'
-
-   **msvc**
-       ::
-
-           t.c(3,11) : warning: conversion specifies type 'char *' but the argument has type 'int'
-
-   **vi**
-       ::
-
-           t.c +3:11: warning: conversion specifies type 'char *' but the argument has type 'int'
-
-**-f[no-]diagnostics-show-name**
-   Enable the display of the diagnostic name.
-   This option, which defaults to off, controls whether or not Clang
-   prints the associated name.
-
-.. _opt_fdiagnostics-show-option:
-
-**-f[no-]diagnostics-show-option**
-   Enable ``[-Woption]`` information in diagnostic line.
-
-   This option, which defaults to on, controls whether or not Clang
-   prints the associated :ref:`warning group <cl_diag_warning_groups>`
-   option name when outputting a warning diagnostic. For example, in
-   this output:
-
-   ::
-
-         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-         #endif bad
-                ^
-                //
-
-   Passing **-fno-diagnostics-show-option** will prevent Clang from
-   printing the [:ref:`-Wextra-tokens <opt_Wextra-tokens>`] information in
-   the diagnostic. This information tells you the flag needed to enable
-   or disable the diagnostic, either from the command line or through
-   :ref:`#pragma GCC diagnostic <pragma_GCC_diagnostic>`.
-
-.. _opt_fdiagnostics-show-category:
-
-.. option:: -fdiagnostics-show-category=none/id/name
-
-   Enable printing category information in diagnostic line.
-
-   This option, which defaults to "none", controls whether or not Clang
-   prints the category associated with a diagnostic when emitting it.
-   Each diagnostic may or many not have an associated category, if it
-   has one, it is listed in the diagnostic categorization field of the
-   diagnostic line (in the []'s).
-
-   For example, a format string warning will produce these three
-   renditions based on the setting of this option:
-
-   ::
-
-         t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat]
-         t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
-         t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,Format String]
-
-   This category can be used by clients that want to group diagnostics
-   by category, so it should be a high level category. We want dozens
-   of these, not hundreds or thousands of them.
-
-.. _opt_fdiagnostics-fixit-info:
-
-**-f[no-]diagnostics-fixit-info**
-   Enable "FixIt" information in the diagnostics output.
-
-   This option, which defaults to on, controls whether or not Clang
-   prints the information on how to fix a specific diagnostic
-   underneath it when it knows. For example, in this output:
-
-   ::
-
-         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-         #endif bad
-                ^
-                //
-
-   Passing **-fno-diagnostics-fixit-info** will prevent Clang from
-   printing the "//" line at the end of the message. This information
-   is useful for users who may not understand what is wrong, but can be
-   confusing for machine parsing.
-
-.. _opt_fdiagnostics-print-source-range-info:
-
-**-fdiagnostics-print-source-range-info**
-   Print machine parsable information about source ranges.
-   This option makes Clang print information about source ranges in a machine
-   parsable format after the file/line/column number information. The
-   information is a simple sequence of brace enclosed ranges, where each range
-   lists the start and end line/column locations. For example, in this output:
-
-   ::
-
-       exprs.c:47:15:{47:8-47:14}{47:17-47:24}: error: invalid operands to binary expression ('int *' and '_Complex float')
-          P = (P-42) + Gamma*4;
-              ~~~~~~ ^ ~~~~~~~
-
-   The {}'s are generated by -fdiagnostics-print-source-range-info.
-
-   The printed column numbers count bytes from the beginning of the
-   line; take care if your source contains multibyte characters.
-
-.. option:: -fdiagnostics-parseable-fixits
-
-   Print Fix-Its in a machine parseable form.
-
-   This option makes Clang print available Fix-Its in a machine
-   parseable format at the end of diagnostics. The following example
-   illustrates the format:
-
-   ::
-
-        fix-it:"t.cpp":{7:25-7:29}:"Gamma"
-
-   The range printed is a half-open range, so in this example the
-   characters at column 25 up to but not including column 29 on line 7
-   in t.cpp should be replaced with the string "Gamma". Either the
-   range or the replacement string may be empty (representing strict
-   insertions and strict erasures, respectively). Both the file name
-   and the insertion string escape backslash (as "\\\\"), tabs (as
-   "\\t"), newlines (as "\\n"), double quotes(as "\\"") and
-   non-printable characters (as octal "\\xxx").
-
-   The printed column numbers count bytes from the beginning of the
-   line; take care if your source contains multibyte characters.
-
-.. option:: -fno-elide-type
-
-   Turns off elision in template type printing.
-
-   The default for template type printing is to elide as many template
-   arguments as possible, removing those which are the same in both
-   template types, leaving only the differences. Adding this flag will
-   print all the template arguments. If supported by the terminal,
-   highlighting will still appear on differing arguments.
-
-   Default:
-
-   ::
-
-       t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<[...], map<float, [...]>>>' to 'vector<map<[...], map<double, [...]>>>' for 1st argument;
-
-   -fno-elide-type:
-
-   ::
-
-       t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<int, map<float, int>>>' to 'vector<map<int, map<double, int>>>' for 1st argument;
-
-.. option:: -fdiagnostics-show-template-tree
-
-   Template type diffing prints a text tree.
-
-   For diffing large templated types, this option will cause Clang to
-   display the templates as an indented text tree, one argument per
-   line, with differences marked inline. This is compatible with
-   -fno-elide-type.
-
-   Default:
-
-   ::
-
-       t.cc:4:5: note: candidate function not viable: no known conversion from 'vector<map<[...], map<float, [...]>>>' to 'vector<map<[...], map<double, [...]>>>' for 1st argument;
-
-   With :option:`-fdiagnostics-show-template-tree`:
-
-   ::
-
-       t.cc:4:5: note: candidate function not viable: no known conversion for 1st argument;
-         vector<
-           map<
-             [...],
-             map<
-               [float != float],
-               [...]>>>
-
-.. _cl_diag_warning_groups:
-
-Individual Warning Groups
-^^^^^^^^^^^^^^^^^^^^^^^^^
-
-TODO: Generate this from tblgen. Define one anchor per warning group.
-
-.. _opt_wextra-tokens:
-
-.. option:: -Wextra-tokens
-
-   Warn about excess tokens at the end of a preprocessor directive.
-
-   This option, which defaults to on, enables warnings about extra
-   tokens at the end of preprocessor directives. For example:
-
-   ::
-
-         test.c:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-         #endif bad
-                ^
-
-   These extra tokens are not strictly conforming, and are usually best
-   handled by commenting them out.
-
-.. option:: -Wambiguous-member-template
-
-   Warn about unqualified uses of a member template whose name resolves to
-   another template at the location of the use.
-
-   This option, which defaults to on, enables a warning in the
-   following code:
-
-   ::
-
-       template<typename T> struct set{};
-       template<typename T> struct trait { typedef const T& type; };
-       struct Value {
-         template<typename T> void set(typename trait<T>::type value) {}
-       };
-       void foo() {
-         Value v;
-         v.set<double>(3.2);
-       }
-
-   C++ [basic.lookup.classref] requires this to be an error, but,
-   because it's hard to work around, Clang downgrades it to a warning
-   as an extension.
-
-.. option:: -Wbind-to-temporary-copy
-
-   Warn about an unusable copy constructor when binding a reference to a
-   temporary.
-
-   This option, which defaults to on, enables warnings about binding a
-   reference to a temporary when the temporary doesn't have a usable
-   copy constructor. For example:
-
-   ::
-
-         struct NonCopyable {
-           NonCopyable();
-         private:
-           NonCopyable(const NonCopyable&);
-         };
-         void foo(const NonCopyable&);
-         void bar() {
-           foo(NonCopyable());  // Disallowed in C++98; allowed in C++11.
-         }
-
-   ::
-
-         struct NonCopyable2 {
-           NonCopyable2();
-           NonCopyable2(NonCopyable2&);
-         };
-         void foo(const NonCopyable2&);
-         void bar() {
-           foo(NonCopyable2());  // Disallowed in C++98; allowed in C++11.
-         }
-
-   Note that if ``NonCopyable2::NonCopyable2()`` has a default argument
-   whose instantiation produces a compile error, that error will still
-   be a hard error in C++98 mode even if this warning is turned off.
-
-Options to Control Clang Crash Diagnostics
-------------------------------------------
-
-As unbelievable as it may sound, Clang does crash from time to time.
-Generally, this only occurs to those living on the `bleeding
-edge <http://llvm.org/releases/download.html#svn>`_. Clang goes to great
-lengths to assist you in filing a bug report. Specifically, Clang
-generates preprocessed source file(s) and associated run script(s) upon
-a crash. These files should be attached to a bug report to ease
-reproducibility of the failure. Below are the command line options to
-control the crash diagnostics.
-
-.. option:: -fno-crash-diagnostics
-
-  Disable auto-generation of preprocessed source files during a clang crash.
-
-The -fno-crash-diagnostics flag can be helpful for speeding the process
-of generating a delta reduced test case.
-
-Language and Target-Independent Features
-========================================
-
-Controlling Errors and Warnings
--------------------------------
-
-Clang provides a number of ways to control which code constructs cause
-it to emit errors and warning messages, and how they are displayed to
-the console.
-
-Controlling How Clang Displays Diagnostics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When Clang emits a diagnostic, it includes rich information in the
-output, and gives you fine-grain control over which information is
-printed. Clang has the ability to print this information, and these are
-the options that control it:
-
-#. A file/line/column indicator that shows exactly where the diagnostic
-   occurs in your code [:ref:`-fshow-column <opt_fshow-column>`,
-   :ref:`-fshow-source-location <opt_fshow-source-location>`].
-#. A categorization of the diagnostic as a note, warning, error, or
-   fatal error.
-#. A text string that describes what the problem is.
-#. An option that indicates how to control the diagnostic (for
-   diagnostics that support it)
-   [:ref:`-fdiagnostics-show-option <opt_fdiagnostics-show-option>`].
-#. A :ref:`high-level category <diagnostics_categories>` for the diagnostic
-   for clients that want to group diagnostics by class (for diagnostics
-   that support it)
-   [:ref:`-fdiagnostics-show-category <opt_fdiagnostics-show-category>`].
-#. The line of source code that the issue occurs on, along with a caret
-   and ranges that indicate the important locations
-   [:ref:`-fcaret-diagnostics <opt_fcaret-diagnostics>`].
-#. "FixIt" information, which is a concise explanation of how to fix the
-   problem (when Clang is certain it knows)
-   [:ref:`-fdiagnostics-fixit-info <opt_fdiagnostics-fixit-info>`].
-#. A machine-parsable representation of the ranges involved (off by
-   default)
-   [:ref:`-fdiagnostics-print-source-range-info <opt_fdiagnostics-print-source-range-info>`].
-
-For more information please see :ref:`Formatting of
-Diagnostics <cl_diag_formatting>`.
-
-Diagnostic Mappings
-^^^^^^^^^^^^^^^^^^^
-
-All diagnostics are mapped into one of these 5 classes:
-
--  Ignored
--  Note
--  Warning
--  Error
--  Fatal
-
-.. _diagnostics_categories:
-
-Diagnostic Categories
-^^^^^^^^^^^^^^^^^^^^^
-
-Though not shown by default, diagnostics may each be associated with a
-high-level category. This category is intended to make it possible to
-triage builds that produce a large number of errors or warnings in a
-grouped way.
-
-Categories are not shown by default, but they can be turned on with the
-:ref:`-fdiagnostics-show-category <opt_fdiagnostics-show-category>` option.
-When set to "``name``", the category is printed textually in the
-diagnostic output. When it is set to "``id``", a category number is
-printed. The mapping of category names to category id's can be obtained
-by running '``clang   --print-diagnostic-categories``'.
-
-Controlling Diagnostics via Command Line Flags
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-TODO: -W flags, -pedantic, etc
-
-.. _pragma_gcc_diagnostic:
-
-Controlling Diagnostics via Pragmas
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Clang can also control what diagnostics are enabled through the use of
-pragmas in the source code. This is useful for turning off specific
-warnings in a section of source code. Clang supports GCC's pragma for
-compatibility with existing source code, as well as several extensions.
-
-The pragma may control any warning that can be used from the command
-line. Warnings may be set to ignored, warning, error, or fatal. The
-following example code will tell Clang or GCC to ignore the -Wall
-warnings:
-
-.. code-block:: c
-
-  #pragma GCC diagnostic ignored "-Wall"
-
-In addition to all of the functionality provided by GCC's pragma, Clang
-also allows you to push and pop the current warning state. This is
-particularly useful when writing a header file that will be compiled by
-other people, because you don't know what warning flags they build with.
-
-In the below example :option:`-Wmultichar` is ignored for only a single line of
-code, after which the diagnostics return to whatever state had previously
-existed.
-
-.. code-block:: c
-
-  #pragma clang diagnostic push
-  #pragma clang diagnostic ignored "-Wmultichar"
-
-  char b = 'df'; // no warning.
-
-  #pragma clang diagnostic pop
-
-The push and pop pragmas will save and restore the full diagnostic state
-of the compiler, regardless of how it was set. That means that it is
-possible to use push and pop around GCC compatible diagnostics and Clang
-will push and pop them appropriately, while GCC will ignore the pushes
-and pops as unknown pragmas. It should be noted that while Clang
-supports the GCC pragma, Clang and GCC do not support the exact same set
-of warnings, so even when using GCC compatible #pragmas there is no
-guarantee that they will have identical behaviour on both compilers.
-
-In addition to controlling warnings and errors generated by the compiler, it is
-possible to generate custom warning and error messages through the following
-pragmas:
-
-.. code-block:: c
-
-  // The following will produce warning messages
-  #pragma message "some diagnostic message"
-  #pragma GCC warning "TODO: replace deprecated feature"
-
-  // The following will produce an error message
-  #pragma GCC error "Not supported"
-
-These pragmas operate similarly to the ``#warning`` and ``#error`` preprocessor
-directives, except that they may also be embedded into preprocessor macros via
-the C99 ``_Pragma`` operator, for example:
-
-.. code-block:: c
-
-  #define STR(X) #X
-  #define DEFER(M,...) M(__VA_ARGS__)
-  #define CUSTOM_ERROR(X) _Pragma(STR(GCC error(X " at line " DEFER(STR,__LINE__))))
-
-  CUSTOM_ERROR("Feature not available");
-
-Controlling Diagnostics in System Headers
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Warnings are suppressed when they occur in system headers. By default,
-an included file is treated as a system header if it is found in an
-include path specified by ``-isystem``, but this can be overridden in
-several ways.
-
-The ``system_header`` pragma can be used to mark the current file as
-being a system header. No warnings will be produced from the location of
-the pragma onwards within the same file.
-
-.. code-block:: c
-
-  char a = 'xy'; // warning
-
-  #pragma clang system_header
-
-  char b = 'ab'; // no warning
-
-The :option:`-isystem-prefix` and :option:`-ino-system-prefix` command-line
-arguments can be used to override whether subsets of an include path are
-treated as system headers. When the name in a ``#include`` directive is
-found within a header search path and starts with a system prefix, the
-header is treated as a system header. The last prefix on the
-command-line which matches the specified header name takes precedence.
-For instance:
-
-.. code-block:: console
-
-  $ clang -Ifoo -isystem bar -isystem-prefix x/ -ino-system-prefix x/y/
-
-Here, ``#include "x/a.h"`` is treated as including a system header, even
-if the header is found in ``foo``, and ``#include "x/y/b.h"`` is treated
-as not including a system header, even if the header is found in
-``bar``.
-
-A ``#include`` directive which finds a file relative to the current
-directory is treated as including a system header if the including file
-is treated as a system header.
-
-.. _diagnostics_enable_everything:
-
-Enabling All Warnings
-^^^^^^^^^^^^^^^^^^^^^
-
-In addition to the traditional ``-W`` flags, one can enable **all**
-warnings by passing :option:`-Weverything`. This works as expected with
-:option:`-Werror`, and also includes the warnings from :option:`-pedantic`.
-
-Note that when combined with :option:`-w` (which disables all warnings), that
-flag wins.
-
-Controlling Static Analyzer Diagnostics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-While not strictly part of the compiler, the diagnostics from Clang's
-`static analyzer <http://clang-analyzer.llvm.org>`_ can also be
-influenced by the user via changes to the source code. See the available
-`annotations <http://clang-analyzer.llvm.org/annotations.html>`_ and the
-analyzer's `FAQ
-page <http://clang-analyzer.llvm.org/faq.html#exclude_code>`_ for more
-information.
-
-.. _usersmanual-precompiled-headers:
-
-Precompiled Headers
--------------------
-
-`Precompiled headers <http://en.wikipedia.org/wiki/Precompiled_header>`__
-are a general approach employed by many compilers to reduce compilation
-time. The underlying motivation of the approach is that it is common for
-the same (and often large) header files to be included by multiple
-source files. Consequently, compile times can often be greatly improved
-by caching some of the (redundant) work done by a compiler to process
-headers. Precompiled header files, which represent one of many ways to
-implement this optimization, are literally files that represent an
-on-disk cache that contains the vital information necessary to reduce
-some of the work needed to process a corresponding header file. While
-details of precompiled headers vary between compilers, precompiled
-headers have been shown to be highly effective at speeding up program
-compilation on systems with very large system headers (e.g., Mac OS/X).
-
-Generating a PCH File
-^^^^^^^^^^^^^^^^^^^^^
-
-To generate a PCH file using Clang, one invokes Clang with the
-:option:`-x <language>-header` option. This mirrors the interface in GCC
-for generating PCH files:
-
-.. code-block:: console
-
-  $ gcc -x c-header test.h -o test.h.gch
-  $ clang -x c-header test.h -o test.h.pch
-
-Using a PCH File
-^^^^^^^^^^^^^^^^
-
-A PCH file can then be used as a prefix header when a :option:`-include`
-option is passed to ``clang``:
-
-.. code-block:: console
-
-  $ clang -include test.h test.c -o test
-
-The ``clang`` driver will first check if a PCH file for ``test.h`` is
-available; if so, the contents of ``test.h`` (and the files it includes)
-will be processed from the PCH file. Otherwise, Clang falls back to
-directly processing the content of ``test.h``. This mirrors the behavior
-of GCC.
-
-.. note::
-
-  Clang does *not* automatically use PCH files for headers that are directly
-  included within a source file. For example:
-
-  .. code-block:: console
-
-    $ clang -x c-header test.h -o test.h.pch
-    $ cat test.c
-    #include "test.h"
-    $ clang test.c -o test
-
-  In this example, ``clang`` will not automatically use the PCH file for
-  ``test.h`` since ``test.h`` was included directly in the source file and not
-  specified on the command line using :option:`-include`.
-
-Relocatable PCH Files
-^^^^^^^^^^^^^^^^^^^^^
-
-It is sometimes necessary to build a precompiled header from headers
-that are not yet in their final, installed locations. For example, one
-might build a precompiled header within the build tree that is then
-meant to be installed alongside the headers. Clang permits the creation
-of "relocatable" precompiled headers, which are built with a given path
-(into the build directory) and can later be used from an installed
-location.
-
-To build a relocatable precompiled header, place your headers into a
-subdirectory whose structure mimics the installed location. For example,
-if you want to build a precompiled header for the header ``mylib.h``
-that will be installed into ``/usr/include``, create a subdirectory
-``build/usr/include`` and place the header ``mylib.h`` into that
-subdirectory. If ``mylib.h`` depends on other headers, then they can be
-stored within ``build/usr/include`` in a way that mimics the installed
-location.
-
-Building a relocatable precompiled header requires two additional
-arguments. First, pass the ``--relocatable-pch`` flag to indicate that
-the resulting PCH file should be relocatable. Second, pass
-:option:`-isysroot /path/to/build`, which makes all includes for your library
-relative to the build directory. For example:
-
-.. code-block:: console
-
-  # clang -x c-header --relocatable-pch -isysroot /path/to/build /path/to/build/mylib.h mylib.h.pch
-
-When loading the relocatable PCH file, the various headers used in the
-PCH file are found from the system header root. For example, ``mylib.h``
-can be found in ``/usr/include/mylib.h``. If the headers are installed
-in some other system root, the :option:`-isysroot` option can be used provide
-a different system root from which the headers will be based. For
-example, :option:`-isysroot /Developer/SDKs/MacOSX10.4u.sdk` will look for
-``mylib.h`` in ``/Developer/SDKs/MacOSX10.4u.sdk/usr/include/mylib.h``.
-
-Relocatable precompiled headers are intended to be used in a limited
-number of cases where the compilation environment is tightly controlled
-and the precompiled header cannot be generated after headers have been
-installed.
-
-Controlling Code Generation
----------------------------
-
-Clang provides a number of ways to control code generation. The options
-are listed below.
-
-**-fsanitize=check1,check2,...**
-   Turn on runtime checks for various forms of undefined or suspicious
-   behavior.
-
-   This option controls whether Clang adds runtime checks for various
-   forms of undefined or suspicious behavior, and is disabled by
-   default. If a check fails, a diagnostic message is produced at
-   runtime explaining the problem. The main checks are:
-
-   -  .. _opt_fsanitize_address:
-
-      ``-fsanitize=address``:
-      :doc:`AddressSanitizer`, a memory error
-      detector.
-   -  ``-fsanitize=init-order``: Make AddressSanitizer check for
-      dynamic initialization order problems. Implied by ``-fsanitize=address``.
-   -  ``-fsanitize=address-full``: AddressSanitizer with all the
-      experimental features listed below.
-   -  ``-fsanitize=integer``: Enables checks for undefined or
-      suspicious integer behavior.
-   -  .. _opt_fsanitize_thread:
-
-      ``-fsanitize=thread``: :doc:`ThreadSanitizer`, a data race detector.
-   -  .. _opt_fsanitize_memory:
-
-      ``-fsanitize=memory``: :doc:`MemorySanitizer`,
-      an *experimental* detector of uninitialized reads. Not ready for
-      widespread use.
-   -  .. _opt_fsanitize_undefined:
-
-      ``-fsanitize=undefined``: Fast and compatible undefined behavior
-      checker. Enables the undefined behavior checks that have small
-      runtime cost and no impact on address space layout or ABI. This
-      includes all of the checks listed below other than
-      ``unsigned-integer-overflow``.
-
-      ``-fsanitize=undefined-trap``: This includes all sanitizers
-      included by ``-fsanitize=undefined``, except those that require
-      runtime support.  This group of sanitizers are generally used
-      in conjunction with the ``-fsanitize-undefined-trap-on-error``
-      flag, which causes traps to be emitted, rather than calls to
-      runtime libraries. This includes all of the checks listed below
-      other than ``unsigned-integer-overflow`` and ``vptr``.
-
-   The following more fine-grained checks are also available:
-
-   -  ``-fsanitize=alignment``: Use of a misaligned pointer or creation
-      of a misaligned reference.
-   -  ``-fsanitize=bool``: Load of a ``bool`` value which is neither
-      ``true`` nor ``false``.
-   -  ``-fsanitize=bounds``: Out of bounds array indexing, in cases
-      where the array bound can be statically determined.
-   -  ``-fsanitize=enum``: Load of a value of an enumerated type which
-      is not in the range of representable values for that enumerated
-      type.
-   -  ``-fsanitize=float-cast-overflow``: Conversion to, from, or
-      between floating-point types which would overflow the
-      destination.
-   -  ``-fsanitize=float-divide-by-zero``: Floating point division by
-      zero.
-   -  ``-fsanitize=integer-divide-by-zero``: Integer division by zero.
-   -  ``-fsanitize=null``: Use of a null pointer or creation of a null
-      reference.
-   -  ``-fsanitize=object-size``: An attempt to use bytes which the
-      optimizer can determine are not part of the object being
-      accessed. The sizes of objects are determined using
-      ``__builtin_object_size``, and consequently may be able to detect
-      more problems at higher optimization levels.
-   -  ``-fsanitize=return``: In C++, reaching the end of a
-      value-returning function without returning a value.
-   -  ``-fsanitize=shift``: Shift operators where the amount shifted is
-      greater or equal to the promoted bit-width of the left hand side
-      or less than zero, or where the left hand side is negative. For a
-      signed left shift, also checks for signed overflow in C, and for
-      unsigned overflow in C++.
-   -  ``-fsanitize=signed-integer-overflow``: Signed integer overflow,
-      including all the checks added by ``-ftrapv``, and checking for
-      overflow in signed division (``INT_MIN / -1``).
-   -  ``-fsanitize=unreachable``: If control flow reaches
-      ``__builtin_unreachable``.
-   -  ``-fsanitize=unsigned-integer-overflow``: Unsigned integer
-      overflows.
-   -  ``-fsanitize=vla-bound``: A variable-length array whose bound
-      does not evaluate to a positive value.
-   -  ``-fsanitize=vptr``: Use of an object whose vptr indicates that
-      it is of the wrong dynamic type, or that its lifetime has not
-      begun or has ended. Incompatible with ``-fno-rtti``.
-
-   Experimental features of AddressSanitizer (not ready for widespread
-   use, require explicit ``-fsanitize=address``):
-
-   -  ``-fsanitize=use-after-return``: Check for use-after-return
-      errors (accessing local variable after the function exit).
-   -  ``-fsanitize=use-after-scope``: Check for use-after-scope errors
-      (accesing local variable after it went out of scope).
-
-   Extra features of MemorySanitizer (require explicit
-   ``-fsanitize=memory``):
-
-   -  ``-fsanitize-memory-track-origins``: Enables origin tracking in
-      MemorySanitizer. Adds a second section to MemorySanitizer
-      reports pointing to the heap or stack allocation the
-      uninitialized bits came from. Slows down execution by additional
-      1.5x-2x.
-
-   The ``-fsanitize=`` argument must also be provided when linking, in
-   order to link to the appropriate runtime library. It is not possible
-   to combine the ``-fsanitize=address`` and ``-fsanitize=thread``
-   checkers in the same program.
-**-f[no-]address-sanitizer**
-   Deprecated synonym for :ref:`-f[no-]sanitize=address
-   <opt_fsanitize_address>`.
-**-f[no-]thread-sanitizer**
-   Deprecated synonym for :ref:`-f[no-]sanitize=thread
-   <opt_fsanitize_thread>`.
-
-.. option:: -fcatch-undefined-behavior
-
-   Deprecated synonym for :ref:`-fsanitize=undefined
-   <opt_fsanitize_undefined>`.
-
-.. option:: -fno-assume-sane-operator-new
-
-   Don't assume that the C++'s new operator is sane.
-
-   This option tells the compiler to do not assume that C++'s global
-   new operator will always return a pointer that does not alias any
-   other pointer when the function returns.
-
-.. option:: -ftrap-function=[name]
-
-   Instruct code generator to emit a function call to the specified
-   function name for ``__builtin_trap()``.
-
-   LLVM code generator translates ``__builtin_trap()`` to a trap
-   instruction if it is supported by the target ISA. Otherwise, the
-   builtin is translated into a call to ``abort``. If this option is
-   set, then the code generator will always lower the builtin to a call
-   to the specified function regardless of whether the target ISA has a
-   trap instruction. This option is useful for environments (e.g.
-   deeply embedded) where a trap cannot be properly handled, or when
-   some custom behavior is desired.
-
-.. option:: -ftls-model=[model]
-
-   Select which TLS model to use.
-
-   Valid values are: ``global-dynamic``, ``local-dynamic``,
-   ``initial-exec`` and ``local-exec``. The default value is
-   ``global-dynamic``. The compiler may use a different model if the
-   selected model is not supported by the target, or if a more
-   efficient model can be used. The TLS model can be overridden per
-   variable using the ``tls_model`` attribute.
-
-Controlling Size of Debug Information
--------------------------------------
-
-Debug info kind generated by Clang can be set by one of the flags listed
-below. If multiple flags are present, the last one is used.
-
-.. option:: -g0
-
-  Don't generate any debug info (default).
-
-.. option:: -gline-tables-only
-
-  Generate line number tables only.
-
-  This kind of debug info allows to obtain stack traces with function names,
-  file names and line numbers (by such tools as ``gdb`` or ``addr2line``).  It
-  doesn't contain any other data (e.g. description of local variables or
-  function parameters).
-
-.. option:: -g
-
-  Generate complete debug info.
-
-Comment Parsing Options
---------------------------
-
-Clang parses Doxygen and non-Doxygen style documentation comments and attaches
-them to the appropriate declaration nodes.  By default, it only parses
-Doxygen-style comments and ignores ordinary comments starting with ``//`` and
-``/*``.
-
-.. option:: -fparse-all-comments
-
-  Parse all comments as documentation comments (including ordinary comments
-  starting with ``//`` and ``/*``).
-
-.. _c:
-
-C Language Features
-===================
-
-The support for standard C in clang is feature-complete except for the
-C99 floating-point pragmas.
-
-Extensions supported by clang
------------------------------
-
-See :doc:`LanguageExtensions`.
-
-Differences between various standard modes
-------------------------------------------
-
-clang supports the -std option, which changes what language mode clang
-uses. The supported modes for C are c89, gnu89, c94, c99, gnu99 and
-various aliases for those modes. If no -std option is specified, clang
-defaults to gnu99 mode.
-
-Differences between all ``c*`` and ``gnu*`` modes:
-
--  ``c*`` modes define "``__STRICT_ANSI__``".
--  Target-specific defines not prefixed by underscores, like "linux",
-   are defined in ``gnu*`` modes.
--  Trigraphs default to being off in ``gnu*`` modes; they can be enabled by
-   the -trigraphs option.
--  The parser recognizes "asm" and "typeof" as keywords in ``gnu*`` modes;
-   the variants "``__asm__``" and "``__typeof__``" are recognized in all
-   modes.
--  The Apple "blocks" extension is recognized by default in ``gnu*`` modes
-   on some platforms; it can be enabled in any mode with the "-fblocks"
-   option.
--  Arrays that are VLA's according to the standard, but which can be
-   constant folded by the frontend are treated as fixed size arrays.
-   This occurs for things like "int X[(1, 2)];", which is technically a
-   VLA. ``c*`` modes are strictly compliant and treat these as VLAs.
-
-Differences between ``*89`` and ``*99`` modes:
-
--  The ``*99`` modes default to implementing "inline" as specified in C99,
-   while the ``*89`` modes implement the GNU version. This can be
-   overridden for individual functions with the ``__gnu_inline__``
-   attribute.
--  Digraphs are not recognized in c89 mode.
--  The scope of names defined inside a "for", "if", "switch", "while",
-   or "do" statement is different. (example: "``if ((struct x {int
-   x;}*)0) {}``".)
--  ``__STDC_VERSION__`` is not defined in ``*89`` modes.
--  "inline" is not recognized as a keyword in c89 mode.
--  "restrict" is not recognized as a keyword in ``*89`` modes.
--  Commas are allowed in integer constant expressions in ``*99`` modes.
--  Arrays which are not lvalues are not implicitly promoted to pointers
-   in ``*89`` modes.
--  Some warnings are different.
-
-c94 mode is identical to c89 mode except that digraphs are enabled in
-c94 mode (FIXME: And ``__STDC_VERSION__`` should be defined!).
-
-GCC extensions not implemented yet
-----------------------------------
-
-clang tries to be compatible with gcc as much as possible, but some gcc
-extensions are not implemented yet:
-
--  clang does not support #pragma weak (`bug
-   3679 <http://llvm.org/bugs/show_bug.cgi?id=3679>`_). Due to the uses
-   described in the bug, this is likely to be implemented at some point,
-   at least partially.
--  clang does not support decimal floating point types (``_Decimal32`` and
-   friends) or fixed-point types (``_Fract`` and friends); nobody has
-   expressed interest in these features yet, so it's hard to say when
-   they will be implemented.
--  clang does not support nested functions; this is a complex feature
-   which is infrequently used, so it is unlikely to be implemented
-   anytime soon. In C++11 it can be emulated by assigning lambda
-   functions to local variables, e.g:
-
-   .. code-block:: cpp
-
-     auto const local_function = [&](int parameter) {
-       // Do something
-     };
-     ...
-     local_function(1);
-
--  clang does not support global register variables; this is unlikely to
-   be implemented soon because it requires additional LLVM backend
-   support.
--  clang does not support static initialization of flexible array
-   members. This appears to be a rarely used extension, but could be
-   implemented pending user demand.
--  clang does not support
-   ``__builtin_va_arg_pack``/``__builtin_va_arg_pack_len``. This is
-   used rarely, but in some potentially interesting places, like the
-   glibc headers, so it may be implemented pending user demand. Note
-   that because clang pretends to be like GCC 4.2, and this extension
-   was introduced in 4.3, the glibc headers will not try to use this
-   extension with clang at the moment.
--  clang does not support the gcc extension for forward-declaring
-   function parameters; this has not shown up in any real-world code
-   yet, though, so it might never be implemented.
-
-This is not a complete list; if you find an unsupported extension
-missing from this list, please send an e-mail to cfe-dev. This list
-currently excludes C++; see :ref:`C++ Language Features <cxx>`. Also, this
-list does not include bugs in mostly-implemented features; please see
-the `bug
-tracker <http://llvm.org/bugs/buglist.cgi?quicksearch=product%3Aclang+component%3A-New%2BBugs%2CAST%2CBasic%2CDriver%2CHeaders%2CLLVM%2BCodeGen%2Cparser%2Cpreprocessor%2CSemantic%2BAnalyzer>`_
-for known existing bugs (FIXME: Is there a section for bug-reporting
-guidelines somewhere?).
-
-Intentionally unsupported GCC extensions
-----------------------------------------
-
--  clang does not support the gcc extension that allows variable-length
-   arrays in structures. This is for a few reasons: one, it is tricky to
-   implement, two, the extension is completely undocumented, and three,
-   the extension appears to be rarely used. Note that clang *does*
-   support flexible array members (arrays with a zero or unspecified
-   size at the end of a structure).
--  clang does not have an equivalent to gcc's "fold"; this means that
-   clang doesn't accept some constructs gcc might accept in contexts
-   where a constant expression is required, like "x-x" where x is a
-   variable.
--  clang does not support ``__builtin_apply`` and friends; this extension
-   is extremely obscure and difficult to implement reliably.
-
-.. _c_ms:
-
-Microsoft extensions
---------------------
-
-clang has some experimental support for extensions from Microsoft Visual
-C++; to enable it, use the -fms-extensions command-line option. This is
-the default for Windows targets. Note that the support is incomplete;
-enabling Microsoft extensions will silently drop certain constructs
-(including ``__declspec`` and Microsoft-style asm statements).
-
-clang has a -fms-compatibility flag that makes clang accept enough
-invalid C++ to be able to parse most Microsoft headers. This flag is
-enabled by default for Windows targets.
-
--fdelayed-template-parsing lets clang delay all template instantiation
-until the end of a translation unit. This flag is enabled by default for
-Windows targets.
-
--  clang allows setting ``_MSC_VER`` with ``-fmsc-version=``. It defaults to
-   1300 which is the same as Visual C/C++ 2003. Any number is supported
-   and can greatly affect what Windows SDK and c++stdlib headers clang
-   can compile. This option will be removed when clang supports the full
-   set of MS extensions required for these headers.
--  clang does not support the Microsoft extension where anonymous record
-   members can be declared using user defined typedefs.
--  clang supports the Microsoft "#pragma pack" feature for controlling
-   record layout. GCC also contains support for this feature, however
-   where MSVC and GCC are incompatible clang follows the MSVC
-   definition.
--  clang defaults to C++11 for Windows targets.
-
-.. _cxx:
-
-C++ Language Features
-=====================
-
-clang fully implements all of standard C++98 except for exported
-templates (which were removed in C++11), and `many C++11
-features <http://clang.llvm.org/cxx_status.html>`_ are also implemented.
-
-Controlling implementation limits
----------------------------------
-
-.. option:: -fbracket-depth=N
-
-  Sets the limit for nested parentheses, brackets, and braces to N.  The
-  default is 256.
-
-.. option:: -fconstexpr-depth=N
-
-  Sets the limit for recursive constexpr function invocations to N.  The
-  default is 512.
-
-.. option:: -ftemplate-depth=N
-
-  Sets the limit for recursively nested template instantiations to N.  The
-  default is 1024.
-
-.. _objc:
-
-Objective-C Language Features
-=============================
-
-.. _objcxx:
-
-Objective-C++ Language Features
-===============================
-
-
-.. _target_features:
-
-Target-Specific Features and Limitations
-========================================
-
-CPU Architectures Features and Limitations
-------------------------------------------
-
-X86
-^^^
-
-The support for X86 (both 32-bit and 64-bit) is considered stable on
-Darwin (Mac OS/X), Linux, FreeBSD, and Dragonfly BSD: it has been tested
-to correctly compile many large C, C++, Objective-C, and Objective-C++
-codebases.
-
-On ``x86_64-mingw32``, passing i128(by value) is incompatible to Microsoft
-x64 calling conversion. You might need to tweak
-``WinX86_64ABIInfo::classify()`` in lib/CodeGen/TargetInfo.cpp.
-
-ARM
-^^^
-
-The support for ARM (specifically ARMv6 and ARMv7) is considered stable
-on Darwin (iOS): it has been tested to correctly compile many large C,
-C++, Objective-C, and Objective-C++ codebases. Clang only supports a
-limited number of ARM architectures. It does not yet fully support
-ARMv5, for example.
-
-Other platforms
-^^^^^^^^^^^^^^^
-
-clang currently contains some support for PPC and Sparc; however,
-significant pieces of code generation are still missing, and they
-haven't undergone significant testing.
-
-clang contains limited support for the MSP430 embedded processor, but
-both the clang support and the LLVM backend support are highly
-experimental.
-
-Other platforms are completely unsupported at the moment. Adding the
-minimal support needed for parsing and semantic analysis on a new
-platform is quite easy; see ``lib/Basic/Targets.cpp`` in the clang source
-tree. This level of support is also sufficient for conversion to LLVM IR
-for simple programs. Proper support for conversion to LLVM IR requires
-adding code to ``lib/CodeGen/CGCall.cpp`` at the moment; this is likely to
-change soon, though. Generating assembly requires a suitable LLVM
-backend.
-
-Operating System Features and Limitations
------------------------------------------
-
-Darwin (Mac OS/X)
-^^^^^^^^^^^^^^^^^
-
-None
-
-Windows
-^^^^^^^
-
-Experimental supports are on Cygming.
-
-See also `Microsoft Extensions <c_ms>`.
-
-Cygwin
-""""""
-
-Clang works on Cygwin-1.7.
-
-MinGW32
-"""""""
-
-Clang works on some mingw32 distributions. Clang assumes directories as
-below;
-
--  ``C:/mingw/include``
--  ``C:/mingw/lib``
--  ``C:/mingw/lib/gcc/mingw32/4.[3-5].0/include/c++``
-
-On MSYS, a few tests might fail.
-
-MinGW-w64
-"""""""""
-
-For 32-bit (i686-w64-mingw32), and 64-bit (x86\_64-w64-mingw32), Clang
-assumes as below;
-
--  ``GCC versions 4.5.0 to 4.5.3, 4.6.0 to 4.6.2, or 4.7.0 (for the C++ header search path)``
--  ``some_directory/bin/gcc.exe``
--  ``some_directory/bin/clang.exe``
--  ``some_directory/bin/clang++.exe``
--  ``some_directory/bin/../include/c++/GCC_version``
--  ``some_directory/bin/../include/c++/GCC_version/x86_64-w64-mingw32``
--  ``some_directory/bin/../include/c++/GCC_version/i686-w64-mingw32``
--  ``some_directory/bin/../include/c++/GCC_version/backward``
--  ``some_directory/bin/../x86_64-w64-mingw32/include``
--  ``some_directory/bin/../i686-w64-mingw32/include``
--  ``some_directory/bin/../include``
-
-This directory layout is standard for any toolchain you will find on the
-official `MinGW-w64 website <http://mingw-w64.sourceforge.net>`_.
-
-Clang expects the GCC executable "gcc.exe" compiled for
-``i686-w64-mingw32`` (or ``x86_64-w64-mingw32``) to be present on PATH.
-
-`Some tests might fail <http://llvm.org/bugs/show_bug.cgi?id=9072>`_ on
-``x86_64-w64-mingw32``.

Modified: trunk/contrib/llvm/tools/clang/docs/analyzer/DebugChecks.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/analyzer/DebugChecks.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/analyzer/DebugChecks.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,134 +0,0 @@
-============
-Debug Checks
-============
-
-.. contents::
-   :local:
-
-The analyzer contains a number of checkers which can aid in debugging. Enable
-them by using the "-analyzer-checker=" flag, followed by the name of the
-checker.
-
-
-General Analysis Dumpers
-========================
-
-These checkers are used to dump the results of various infrastructural analyses
-to stderr. Some checkers also have "view" variants, which will display a graph
-using a 'dot' format viewer (such as Graphviz on OS X) instead.
-
-- debug.DumpCallGraph, debug.ViewCallGraph: Show the call graph generated for
-  the current translation unit. This is used to determine the order in which to
-  analyze functions when inlining is enabled.
-
-- debug.DumpCFG, debug.ViewCFG: Show the CFG generated for each top-level
-  function being analyzed.
-
-- debug.DumpDominators: Shows the dominance tree for the CFG of each top-level
-  function.
-
-- debug.DumpLiveVars: Show the results of live variable analysis for each
-  top-level function being analyzed.
-
-
-Path Tracking
-=============
-
-These checkers print information about the path taken by the analyzer engine.
-
-- debug.DumpCalls: Prints out every function or method call encountered during a
-  path traversal. This is indented to show the call stack, but does NOT do any
-  special handling of branches, meaning different paths could end up
-  interleaved.
-
-- debug.DumpTraversal: Prints the name of each branch statement encountered
-  during a path traversal ("IfStmt", "WhileStmt", etc). Currently used to check
-  whether the analysis engine is doing BFS or DFS.
-
-
-State Checking
-==============
-
-These checkers will print out information about the analyzer state in the form
-of analysis warnings. They are intended for use with the -verify functionality
-in regression tests.
-
-- debug.TaintTest: Prints out the word "tainted" for every expression that
-  carries taint. At the time of this writing, taint was only introduced by the
-  checks under experimental.security.taint.TaintPropagation; this checker may
-  eventually move to the security.taint package.
-
-- debug.ExprInspection: Responds to certain function calls, which are modeled
-  after builtins. These function calls should affect the program state other
-  than the evaluation of their arguments; to use them, you will need to declare
-  them within your test file. The available functions are described below.
-
-(FIXME: debug.ExprInspection should probably be renamed, since it no longer only
-inspects expressions.)
-
-
-ExprInspection checks
----------------------
-
-- void clang_analyzer_eval(bool);
-
-  Prints TRUE if the argument is known to have a non-zero value, FALSE if the
-  argument is known to have a zero or null value, and UNKNOWN if the argument
-  isn't sufficiently constrained on this path.  You can use this to test other
-  values by using expressions like "x == 5".  Note that this functionality is
-  currently DISABLED in inlined functions, since different calls to the same
-  inlined function could provide different information, making it difficult to
-  write proper -verify directives.
-
-  In C, the argument can be typed as 'int' or as '_Bool'.
-
-  Example usage::
-
-    clang_analyzer_eval(x); // expected-warning{{UNKNOWN}}
-    if (!x) return;
-    clang_analyzer_eval(x); // expected-warning{{TRUE}}
-
-
-- void clang_analyzer_checkInlined(bool);
-
-  If a call occurs within an inlined function, prints TRUE or FALSE according to
-  the value of its argument. If a call occurs outside an inlined function,
-  nothing is printed.
-
-  The intended use of this checker is to assert that a function is inlined at
-  least once (by passing 'true' and expecting a warning), or to assert that a
-  function is never inlined (by passing 'false' and expecting no warning). The
-  argument is technically unnecessary but is intended to clarify intent.
-
-  You might wonder why we can't print TRUE if a function is ever inlined and
-  FALSE if it is not. The problem is that any inlined function could conceivably
-  also be analyzed as a top-level function (in which case both TRUE and FALSE
-  would be printed), depending on the value of the -analyzer-inlining option.
-
-  In C, the argument can be typed as 'int' or as '_Bool'.
-
-  Example usage::
-
-    int inlined() {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-      return 42;
-    }
-    
-    void topLevel() {
-      clang_analyzer_checkInlined(false); // no-warning (not inlined)
-      int value = inlined();
-      // This assertion will not be valid if the previous call was not inlined.
-      clang_analyzer_eval(value == 42); // expected-warning{{TRUE}}
-    }
-
-
-Statistics
-==========
-
-The debug.Stats checker collects various information about the analysis of each
-function, such as how many blocks were reached and if the analyzer timed out.
-
-There is also an additional -analyzer-stats flag, which enables various
-statistics within the analyzer engine. Note the Stats checker (which produces at
-least one bug report per function) may actually change the values reported by
--analyzer-stats.

Modified: trunk/contrib/llvm/tools/clang/docs/analyzer/IPA.txt
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/analyzer/IPA.txt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/analyzer/IPA.txt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,386 +0,0 @@
-Inlining
-========
-
-There are several options that control which calls the analyzer will consider for
-inlining. The major one is -analyzer-config ipa:
-
-  -analyzer-config ipa=none - All inlining is disabled. This is the only mode 
-     available in LLVM 3.1 and earlier and in Xcode 4.3 and earlier.
-
-  -analyzer-config ipa=basic-inlining - Turns on inlining for C functions, C++ 
-     static member functions, and blocks -- essentially, the calls that behave 
-     like simple C function calls. This is essentially the mode used in 
-     Xcode 4.4.
-
-  -analyzer-config ipa=inlining - Turns on inlining when we can confidently find
-    the function/method body corresponding to the call. (C functions, static
-    functions, devirtualized C++ methods, Objective-C class methods, Objective-C
-    instance methods when ExprEngine is confident about the dynamic type of the
-    instance).
-
-  -analyzer-config ipa=dynamic - Inline instance methods for which the type is
-   determined at runtime and we are not 100% sure that our type info is
-   correct. For virtual calls, inline the most plausible definition.
-
-  -analyzer-config ipa=dynamic-bifurcate - Same as -analyzer-config ipa=dynamic,
-   but the path is split. We inline on one branch and do not inline on the 
-   other. This mode does not drop the coverage in cases when the parent class 
-   has code that is only exercised when some of its methods are overridden.
-
-Currently, -analyzer-config ipa=dynamic-bifurcate is the default mode.
-
-While -analyzer-config ipa determines in general how aggressively the analyzer 
-will try to inline functions, several additional options control which types of 
-functions can inlined, in an all-or-nothing way. These options use the 
-analyzer's configuration table, so they are all specified as follows:
-
-    -analyzer-config OPTION=VALUE
-
-### c++-inlining ###
-
-This option controls which C++ member functions may be inlined.
-
-    -analyzer-config c++-inlining=[none | methods | constructors | destructors]
-
-Each of these modes implies that all the previous member function kinds will be
-inlined as well; it doesn't make sense to inline destructors without inlining
-constructors, for example.
-
-The default c++-inlining mode is 'destructors', meaning that all member
-functions with visible definitions will be considered for inlining. In some
-cases the analyzer may still choose not to inline the function.
-
-Note that under 'constructors', constructors for types with non-trivial
-destructors will not be inlined. Additionally, no C++ member functions will be 
-inlined under -analyzer-config ipa=none or -analyzer-config ipa=basic-inlining,
-regardless of the setting of the c++-inlining mode.
-
-### c++-template-inlining ###
-
-This option controls whether C++ templated functions may be inlined.
-
-    -analyzer-config c++-template-inlining=[true | false]
-
-Currently, template functions are considered for inlining by default.
-
-The motivation behind this option is that very generic code can be a source
-of false positives, either by considering paths that the caller considers
-impossible (by some unstated precondition), or by inlining some but not all
-of a deep implementation of a function.
-
-### c++-stdlib-inlining ###
-
-This option controls whether functions from the C++ standard library, including
-methods of the container classes in the Standard Template Library, should be
-considered for inlining.
-
-    -analyzer-config c++-template-inlining=[true | false]
-
-Currently, C++ standard library functions are considered for inlining by 
-default.
-
-The standard library functions and the STL in particular are used ubiquitously
-enough that our tolerance for false positives is even lower here. A false
-positive due to poor modeling of the STL leads to a poor user experience, since
-most users would not be comfortable adding assertions to system headers in order
-to silence analyzer warnings.
-
-### c++-container-inlining ###
-
-This option controls whether constructors and destructors of "container" types
-should be considered for inlining.
-
-    -analyzer-config c++-container-inlining=[true | false]
-
-Currently, these constructors and destructors are NOT considered for inlining
-by default.
-
-The current implementation of this setting checks whether a type has a member
-named 'iterator' or a member named 'begin'; these names are idiomatic in C++,
-with the latter specified in the C++11 standard. The analyzer currently does a
-fairly poor job of modeling certain data structure invariants of container-like
-objects. For example, these three expressions should be equivalent:
-
-    std::distance(c.begin(), c.end()) == 0
-    c.begin() == c.end()
-    c.empty())
-
-Many of these issues are avoided if containers always have unknown, symbolic
-state, which is what happens when their constructors are treated as opaque.
-In the future, we may decide specific containers are "safe" to model through
-inlining, or choose to model them directly using checkers instead.
-
-
-Basics of Implementation
------------------------
-
-The low-level mechanism of inlining a function is handled in
-ExprEngine::inlineCall and ExprEngine::processCallExit.
-
-If the conditions are right for inlining, a CallEnter node is created and added
-to the analysis work list. The CallEnter node marks the change to a new
-LocationContext representing the called function, and its state includes the
-contents of the new stack frame. When the CallEnter node is actually processed,
-its single successor will be a edge to the first CFG block in the function.
-
-Exiting an inlined function is a bit more work, fortunately broken up into
-reasonable steps:
-
-1. The CoreEngine realizes we're at the end of an inlined call and generates a
-   CallExitBegin node.
-
-2. ExprEngine takes over (in processCallExit) and finds the return value of the
-   function, if it has one. This is bound to the expression that triggered the
-   call. (In the case of calls without origin expressions, such as destructors,
-   this step is skipped.)
-
-3. Dead symbols and bindings are cleaned out from the state, including any local
-   bindings.
-
-4. A CallExitEnd node is generated, which marks the transition back to the
-   caller's LocationContext.
-
-5. Custom post-call checks are processed and the final nodes are pushed back
-   onto the work list, so that evaluation of the caller can continue.
-
-Retry Without Inlining
-----------------------
-
-In some cases, we would like to retry analysis without inlining a particular
-call.
-
-Currently, we use this technique to recover coverage in case we stop
-analyzing a path due to exceeding the maximum block count inside an inlined
-function.
-
-When this situation is detected, we walk up the path to find the first node
-before inlining was started and enqueue it on the WorkList with a special
-ReplayWithoutInlining bit added to it (ExprEngine::replayWithoutInlining).  The
-path is then re-analyzed from that point without inlining that particular call.
-
-Deciding When to Inline
------------------------
-
-In general, the analyzer attempts to inline as much as possible, since it
-provides a better summary of what actually happens in the program.  There are
-some cases, however, where the analyzer chooses not to inline:
-
-- If there is no definition available for the called function or method.  In
-  this case, there is no opportunity to inline.
-
-- If the CFG cannot be constructed for a called function, or the liveness
-  cannot be computed.  These are prerequisites for analyzing a function body,
-  with or without inlining.
-
-- If the LocationContext chain for a given ExplodedNode reaches a maximum cutoff
-  depth.  This prevents unbounded analysis due to infinite recursion, but also
-  serves as a useful cutoff for performance reasons.
-
-- If the function is variadic.  This is not a hard limitation, but an engineering
-  limitation.
-
-  Tracked by: <rdar://problem/12147064> Support inlining of variadic functions
-
-- In C++, constructors are not inlined unless the destructor call will be
-  processed by the ExprEngine. Thus, if the CFG was built without nodes for
-  implicit destructors, or if the destructors for the given object are not
-  represented in the CFG, the constructor will not be inlined. (As an exception,
-  constructors for objects with trivial constructors can still be inlined.)
-  See "C++ Caveats" below.
-
-- In C++, ExprEngine does not inline custom implementations of operator 'new'
-  or operator 'delete', nor does it inline the constructors and destructors
-  associated with these. See "C++ Caveats" below.
-
-- Calls resulting in "dynamic dispatch" are specially handled.  See more below.
-
-- The FunctionSummaries map stores additional information about declarations,
-  some of which is collected at runtime based on previous analyses.
-  We do not inline functions which were not profitable to inline in a different
-  context (for example, if the maximum block count was exceeded; see
-  "Retry Without Inlining").
-
-
-Dynamic Calls and Devirtualization
-----------------------------------
-
-"Dynamic" calls are those that are resolved at runtime, such as C++ virtual
-method calls and Objective-C message sends. Due to the path-sensitive nature of
-the analysis, the analyzer may be able to reason about the dynamic type of the
-object whose method is being called and thus "devirtualize" the call. 
-
-This path-sensitive devirtualization occurs when the analyzer can determine what
-method would actually be called at runtime.  This is possible when the type
-information is constrained enough for a simulated C++/Objective-C object that
-the analyzer can make such a decision.
-
- == DynamicTypeInfo ==
-
-As the analyzer analyzes a path, it may accrue information to refine the
-knowledge about the type of an object.  This can then be used to make better
-decisions about the target method of a call.
-
-Such type information is tracked as DynamicTypeInfo.  This is path-sensitive
-data that is stored in ProgramState, which defines a mapping from MemRegions to
-an (optional) DynamicTypeInfo.
-
-If no DynamicTypeInfo has been explicitly set for a MemRegion, it will be lazily
-inferred from the region's type or associated symbol. Information from symbolic
-regions is weaker than from true typed regions.
-
-  EXAMPLE: A C++ object declared "A obj" is known to have the class 'A', but a
-           reference "A &ref" may dynamically be a subclass of 'A'.
-
-The DynamicTypePropagation checker gathers and propagates DynamicTypeInfo,
-updating it as information is observed along a path that can refine that type
-information for a region.
-
-  WARNING: Not all of the existing analyzer code has been retrofitted to use
-           DynamicTypeInfo, nor is it universally appropriate. In particular,
-           DynamicTypeInfo always applies to a region with all casts stripped
-           off, but sometimes the information provided by casts can be useful.
-
-
- == RuntimeDefinition ==
-
-The basis of devirtualization is CallEvent's getRuntimeDefinition() method,
-which returns a RuntimeDefinition object.  When asked to provide a definition,
-the CallEvents for dynamic calls will use the DynamicTypeInfo in their
-ProgramState to attempt to devirtualize the call.  In the case of no dynamic
-dispatch, or perfectly constrained devirtualization, the resulting
-RuntimeDefinition contains a Decl corresponding to the definition of the called
-function, and RuntimeDefinition::mayHaveOtherDefinitions will return FALSE.
-
-In the case of dynamic dispatch where our information is not perfect, CallEvent
-can make a guess, but RuntimeDefinition::mayHaveOtherDefinitions will return
-TRUE. The RuntimeDefinition object will then also include a MemRegion
-corresponding to the object being called (i.e., the "receiver" in Objective-C
-parlance), which ExprEngine uses to decide whether or not the call should be
-inlined.
-
- == Inlining Dynamic Calls ==
-
-The -analyzer-config ipa option has five different modes: none, basic-inlining,
-inlining, dynamic, and dynamic-bifurcate. Under -analyzer-config ipa=dynamic,
-all dynamic calls are inlined, whether we are certain or not that this will
-actually be the definition used at runtime. Under -analyzer-config ipa=inlining,
-only "near-perfect" devirtualized calls are inlined*, and other dynamic calls
-are evaluated conservatively (as if no definition were available). 
-
-* Currently, no Objective-C messages are not inlined under
-  -analyzer-config ipa=inlining, even if we are reasonably confident of the type
-  of the receiver. We plan to enable this once we have tested our heuristics
-  more thoroughly.
-
-The last option, -analyzer-config ipa=dynamic-bifurcate, behaves similarly to
-"dynamic", but performs a conservative invalidation in the general virtual case
-in *addition* to inlining. The details of this are discussed below.
-
-As stated above, -analyzer-config ipa=basic-inlining does not inline any C++ 
-member functions or Objective-C method calls, even if they are non-virtual or 
-can be safely devirtualized.
-
-
-Bifurcation
------------
-
-ExprEngine::BifurcateCall implements the -analyzer-config ipa=dynamic-bifurcate
-mode.
-
-When a call is made on an object with imprecise dynamic type information 
-(RuntimeDefinition::mayHaveOtherDefinitions() evaluates to TRUE), ExprEngine
-bifurcates the path and marks the object's region (retrieved from the
-RuntimeDefinition object) with a path-sensitive "mode" in the ProgramState.
-
-Currently, there are 2 modes: 
-
- DynamicDispatchModeInlined - Models the case where the dynamic type information
-   of the receiver (MemoryRegion) is assumed to be perfectly constrained so 
-   that a given definition of a method is expected to be the code actually 
-   called. When this mode is set, ExprEngine uses the Decl from 
-   RuntimeDefinition to inline any dynamically dispatched call sent to this 
-   receiver because the function definition is considered to be fully resolved.
-
- DynamicDispatchModeConservative - Models the case where the dynamic type
-   information is assumed to be incorrect, for example, implies that the method 
-   definition is overriden in a subclass. In such cases, ExprEngine does not 
-   inline the methods sent to the receiver (MemoryRegion), even if a candidate 
-   definition is available. This mode is conservative about simulating the 
-   effects of a call.
-
-Going forward along the symbolic execution path, ExprEngine consults the mode 
-of the receiver's MemRegion to make decisions on whether the calls should be 
-inlined or not, which ensures that there is at most one split per region.
-
-At a high level, "bifurcation mode" allows for increased semantic coverage in
-cases where the parent method contains code which is only executed when the
-class is subclassed. The disadvantages of this mode are a (considerable?)
-performance hit and the possibility of false positives on the path where the
-conservative mode is used.
-
-Objective-C Message Heuristics
-------------------------------
-
-ExprEngine relies on a set of heuristics to partition the set of Objective-C 
-method calls into those that require bifurcation and those that do not. Below 
-are the cases when the DynamicTypeInfo of the object is considered precise
-(cannot be a subclass):
-
- - If the object was created with +alloc or +new and initialized with an -init
-   method.
-
- - If the calls are property accesses using dot syntax. This is based on the
-   assumption that children rarely override properties, or do so in an
-   essentially compatible way.
-
- - If the class interface is declared inside the main source file. In this case
-   it is unlikely that it will be subclassed.
-
- - If the method is not declared outside of main source file, either by the
-   receiver's class or by any superclasses.
-
-C++ Caveats
---------------------
-
-C++11 [class.cdtor]p4 describes how the vtable of an object is modified as it is
-being constructed or destructed; that is, the type of the object depends on
-which base constructors have been completed. This is tracked using
-DynamicTypeInfo in the DynamicTypePropagation checker.
-
-There are several limitations in the current implementation:
-
-- Temporaries are poorly modeled right now because we're not confident in the
-  placement of their destructors in the CFG. We currently won't inline their
-  constructors unless the destructor is trivial, and don't process their
-  destructors at all, not even to invalidate the region.
-
-- 'new' is poorly modeled due to some nasty CFG/design issues.  This is tracked
-  in PR12014.  'delete' is not modeled at all.
-
-- Arrays of objects are modeled very poorly right now.  ExprEngine currently
-  only simulates the first constructor and first destructor. Because of this,
-  ExprEngine does not inline any constructors or destructors for arrays.
-
-
-CallEvent
-=========
-
-A CallEvent represents a specific call to a function, method, or other body of
-code. It is path-sensitive, containing both the current state (ProgramStateRef)
-and stack space (LocationContext), and provides uniform access to the argument
-values and return type of a call, no matter how the call is written in the
-source or what sort of code body is being invoked.
-
-  NOTE: For those familiar with Cocoa, CallEvent is roughly equivalent to
-        NSInvocation.
-
-CallEvent should be used whenever there is logic dealing with function calls
-that does not care how the call occurred.
-
-Examples include checking that arguments satisfy preconditions (such as
-__attribute__((nonnull))), and attempting to inline a call.
-
-CallEvents are reference-counted objects managed by a CallEventManager. While
-there is no inherent issue with persisting them (say, in a ProgramState's GDM),
-they are intended for short-lived use, and can be recreated from CFGElements or
-non-top-level StackFrameContexts fairly easily.

Modified: trunk/contrib/llvm/tools/clang/docs/analyzer/RegionStore.txt
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/analyzer/RegionStore.txt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/analyzer/RegionStore.txt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,171 +0,0 @@
-The analyzer "Store" represents the contents of memory regions. It is an opaque
-functional data structure stored in each ProgramState; the only class that can
-modify the store is its associated StoreManager.
-
-Currently (Feb. 2013), the only StoreManager implementation being used is
-RegionStoreManager. This store records bindings to memory regions using a "base
-region + offset" key. (This allows `*p` and `p[0]` to map to the same location,
-among other benefits.)
-
-Regions are grouped into "clusters", which roughly correspond to "regions with
-the same base region". This allows certain operations to be more efficient,
-such as invalidation.
-
-Regions that do not have a known offset use a special "symbolic" offset. These
-keys store both the original region, and the "concrete offset region" -- the
-last region whose offset is entirely concrete. (For example, in the expression
-`foo.bar[1][i].baz`, the concrete offset region is the array `foo.bar[1]`,
-since that has a known offset from the start of the top-level `foo` struct.)
-
-
-Binding Invalidation
-====================
-
-Supporting both concrete and symbolic offsets makes things a bit tricky. Here's
-an example:
-
-    foo[0] = 0;
-    foo[1] = 1;
-    foo[i] = i;
-
-After the third assignment, nothing can be said about the value of `foo[0]`,
-because `foo[i]` may have overwritten it! Thus, *binding to a region with a
-symbolic offset invalidates the entire concrete offset region.* We know
-`foo[i]` is somewhere within `foo`, so we don't have to invalidate anything
-else, but we do have to be conservative about all other bindings within `foo`.
-
-Continuing the example:
-
-    foo[i] = i;
-    foo[0] = 0;
-
-After this latest assignment, nothing can be said about the value of `foo[i]`,
-because `foo[0]` may have overwritten it! *Binding to a region R with a
-concrete offset invalidates any symbolic offset bindings whose concrete offset
-region is a super-region **or** sub-region of R.* All we know about `foo[i]` is
-that it is somewhere within `foo`, so changing *anything* within `foo` might
-change `foo[i]`, and changing *all* of `foo` (or its base region) will
-*definitely* change `foo[i]`.
-
-This logic could be improved by using the current constraints on `i`, at the
-cost of speed. The latter case could also be improved by matching region kinds,
-i.e. changing `foo[0].a` is unlikely to affect `foo[i].b`, no matter what `i`
-is.
-
-For more detail, read through RegionStoreManager::removeSubRegionBindings in
-RegionStore.cpp.
-
-
-ObjCIvarRegions
-===============
-
-Objective-C instance variables require a bit of special handling. Like struct
-fields, they are not base regions, and when their parent object region is
-invalidated, all the instance variables must be invalidated as well. However,
-they have no concrete compile-time offsets (in the modern, "non-fragile"
-runtime), and so cannot easily be represented as an offset from the start of
-the object in the analyzer. Moreover, this means that invalidating a single
-instance variable should *not* invalidate the rest of the object, since unlike
-struct fields or array elements there is no way to perform pointer arithmetic
-to access another instance variable.
-
-Consequently, although the base region of an ObjCIvarRegion is the entire
-object, RegionStore offsets are computed from the start of the instance
-variable. Thus it is not valid to assume that all bindings with non-symbolic
-offsets start from the base region!
-
-
-Region Invalidation
-===================
-
-Unlike binding invalidation, region invalidation occurs when the entire
-contents of a region may have changed---say, because it has been passed to a
-function the analyzer can model, like memcpy, or because its address has
-escaped, usually as an argument to an opaque function call. In these cases we
-need to throw away not just all bindings within the region itself, but within
-its entire cluster, since neighboring regions may be accessed via pointer
-arithmetic.
-
-Region invalidation typically does even more than this, however. Because it
-usually represents the complete escape of a region from the analyzer's model,
-its *contents* must also be transitively invalidated. (For example, if a region
-'p' of type 'int **' is invalidated, the contents of '*p' and '**p' may have
-changed as well.) The algorithm that traverses this transitive closure of
-accessible regions is known as ClusterAnalysis, and is also used for finding
-all live bindings in the store (in order to throw away the dead ones). The name
-"ClusterAnalysis" predates the cluster-based organization of bindings, but
-refers to the same concept: during invalidation and liveness analysis, all
-bindings within a cluster must be treated in the same way for a conservative
-model of program behavior.
-
-
-Default Bindings
-================
-
-Most bindings in RegionStore are simple scalar values -- integers and pointers.
-These are known as "Direct" bindings. However, RegionStore supports a second
-type of binding called a "Default" binding. These are used to provide values to
-all the elements of an aggregate type (struct or array) without having to
-explicitly specify a binding for each individual element.
-
-When there is no Direct binding for a particular region, the store manager
-looks at each super-region in turn to see if there is a Default binding. If so,
-this value is used as the value of the original region. The search ends when
-the base region is reached, at which point the RegionStore will pick an
-appropriate default value for the region (usually a symbolic value, but
-sometimes zero, for static data, or "uninitialized", for stack variables).
-
-  int manyInts[10];
-  manyInts[1] = 42;   // Creates a Direct binding for manyInts[1].
-  print(manyInts[1]); // Retrieves the Direct binding for manyInts[1];
-  print(manyInts[0]); // There is no Direct binding for manyInts[1].
-                      // Is there a Default binding for the entire array?
-                      // There is not, but it is a stack variable, so we use
-                      // "uninitialized" as the default value (and emit a
-                      // diagnostic!).
-
-NOTE: The fact that bindings are stored as a base region plus an offset limits
-the Default Binding strategy, because in C aggregates can contain other
-aggregates. In the current implementation of RegionStore, there is no way to
-distinguish a Default binding for an entire aggregate from a Default binding
-for the sub-aggregate at offset 0.
-
-
-Lazy Bindings (LazyCompoundVal)
-===============================
-
-RegionStore implements an optimization for copying aggregates (structs and
-arrays) called "lazy bindings", implemented using a special SVal called
-LazyCompoundVal. When the store is asked for the "binding" for an entire
-aggregate (i.e. for an lvalue-to-rvalue conversion), it returns a
-LazyCompoundVal instead. When this value is then stored into a variable, it is
-bound as a Default value. This makes copying arrays and structs much cheaper
-than if they had required memberwise access.
-
-Under the hood, a LazyCompoundVal is implemented as a uniqued pair of (region,
-store), representing "the value of the region during this 'snapshot' of the
-store". This has important implications for any sort of liveness or
-reachability analysis, which must take the bindings in the old store into
-account.
-
-Retrieving a value from a lazy binding happens in the same way as any other
-Default binding: since there is no direct binding, the store manager falls back
-to super-regions to look for an appropriate default binding. LazyCompoundVal
-differs from a normal default binding, however, in that it contains several
-different values, instead of one value that will appear several times. Because
-of this, the store manager has to reconstruct the subregion chain on top of the
-LazyCompoundVal region, and look up *that* region in the previous store.
-
-Here's a concrete example:
-
-    CGPoint p;
-    p.x = 42;       // A Direct binding is made to the FieldRegion 'p.x'.
-    CGPoint p2 = p; // A LazyCompoundVal is created for 'p', along with a
-                    // snapshot of the current store state. This value is then
-                    // used as a Default binding for the VarRegion 'p2'.
-    return p2.x;    // The binding for FieldRegion 'p2.x' is requested.
-                    // There is no Direct binding, so we look for a Default
-                    // binding to 'p2' and find the LCV.
-                    // Because it's an LCV, we look at our requested region
-                    // and see that it's the '.x' field. We ask for the value
-                    // of 'p.x' within the snapshot, and get back 42.

Modified: trunk/contrib/llvm/tools/clang/docs/analyzer/conf.py
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/analyzer/conf.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/analyzer/conf.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,246 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Clang Static Analyzer documentation build configuration file, created by
-# sphinx-quickstart on Wed Jan  2 15:54:28 2013.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
-
-# -- General configuration -----------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.todo', 'sphinx.ext.mathjax']
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'Clang Static Analyzer'
-copyright = u'2013, Analyzer Team'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '3.3'
-# The full version, including alpha/beta/rc tags.
-release = '3.3'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build']
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  See the documentation for
-# a list of builtin themes.
-html_theme = 'haiku'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = []
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'ClangStaticAnalyzerdoc'
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
-
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
-
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
-  ('index', 'ClangStaticAnalyzer.tex', u'Clang Static Analyzer Documentation',
-   u'Analyzer Team', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-
-# -- Options for manual page output --------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-    ('index', 'clangstaticanalyzer', u'Clang Static Analyzer Documentation',
-     [u'Analyzer Team'], 1)
-]
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-
-# -- Options for Texinfo output ------------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-#  dir menu entry, description, category)
-texinfo_documents = [
-  ('index', 'ClangStaticAnalyzer', u'Clang Static Analyzer Documentation',
-   u'Analyzer Team', 'ClangStaticAnalyzer', 'One line description of project.',
-   'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
-
-# Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = {'http://docs.python.org/': None}

Modified: trunk/contrib/llvm/tools/clang/docs/analyzer/index.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/analyzer/index.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/analyzer/index.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-.. Clang Static Analyzer documentation master file, created by
-   sphinx-quickstart on Wed Jan  2 15:54:28 2013.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
-Welcome to Clang Static Analyzer's documentation!
-=================================================
-
-Contents:
-
-.. toctree::
-   :maxdepth: 2
-
-   DebugChecks
-
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-

Modified: trunk/contrib/llvm/tools/clang/docs/analyzer/make.bat
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/analyzer/make.bat	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/analyzer/make.bat	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,190 +0,0 @@
- at ECHO OFF
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
-	set SPHINXBUILD=sphinx-build
-)
-set BUILDDIR=_build
-set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
-set I18NSPHINXOPTS=%SPHINXOPTS% .
-if NOT "%PAPER%" == "" (
-	set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
-	set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
-)
-
-if "%1" == "" goto help
-
-if "%1" == "help" (
-	:help
-	echo.Please use `make ^<target^>` where ^<target^> is one of
-	echo.  html       to make standalone HTML files
-	echo.  dirhtml    to make HTML files named index.html in directories
-	echo.  singlehtml to make a single large HTML file
-	echo.  pickle     to make pickle files
-	echo.  json       to make JSON files
-	echo.  htmlhelp   to make HTML files and a HTML help project
-	echo.  qthelp     to make HTML files and a qthelp project
-	echo.  devhelp    to make HTML files and a Devhelp project
-	echo.  epub       to make an epub
-	echo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter
-	echo.  text       to make text files
-	echo.  man        to make manual pages
-	echo.  texinfo    to make Texinfo files
-	echo.  gettext    to make PO message catalogs
-	echo.  changes    to make an overview over all changed/added/deprecated items
-	echo.  linkcheck  to check all external links for integrity
-	echo.  doctest    to run all doctests embedded in the documentation if enabled
-	goto end
-)
-
-if "%1" == "clean" (
-	for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
-	del /q /s %BUILDDIR%\*
-	goto end
-)
-
-if "%1" == "html" (
-	%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/html.
-	goto end
-)
-
-if "%1" == "dirhtml" (
-	%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
-	goto end
-)
-
-if "%1" == "singlehtml" (
-	%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
-	goto end
-)
-
-if "%1" == "pickle" (
-	%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can process the pickle files.
-	goto end
-)
-
-if "%1" == "json" (
-	%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can process the JSON files.
-	goto end
-)
-
-if "%1" == "htmlhelp" (
-	%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can run HTML Help Workshop with the ^
-.hhp project file in %BUILDDIR%/htmlhelp.
-	goto end
-)
-
-if "%1" == "qthelp" (
-	%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can run "qcollectiongenerator" with the ^
-.qhcp project file in %BUILDDIR%/qthelp, like this:
-	echo.^> qcollectiongenerator %BUILDDIR%\qthelp\ClangStaticAnalyzer.qhcp
-	echo.To view the help file:
-	echo.^> assistant -collectionFile %BUILDDIR%\qthelp\ClangStaticAnalyzer.ghc
-	goto end
-)
-
-if "%1" == "devhelp" (
-	%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished.
-	goto end
-)
-
-if "%1" == "epub" (
-	%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The epub file is in %BUILDDIR%/epub.
-	goto end
-)
-
-if "%1" == "latex" (
-	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
-	goto end
-)
-
-if "%1" == "text" (
-	%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The text files are in %BUILDDIR%/text.
-	goto end
-)
-
-if "%1" == "man" (
-	%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The manual pages are in %BUILDDIR%/man.
-	goto end
-)
-
-if "%1" == "texinfo" (
-	%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
-	goto end
-)
-
-if "%1" == "gettext" (
-	%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
-	goto end
-)
-
-if "%1" == "changes" (
-	%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.The overview file is in %BUILDDIR%/changes.
-	goto end
-)
-
-if "%1" == "linkcheck" (
-	%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Link check complete; look for any errors in the above output ^
-or in %BUILDDIR%/linkcheck/output.txt.
-	goto end
-)
-
-if "%1" == "doctest" (
-	%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Testing of doctests in the sources finished, look at the ^
-results in %BUILDDIR%/doctest/output.txt.
-	goto end
-)
-
-:end

Modified: trunk/contrib/llvm/tools/clang/docs/conf.py
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/conf.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/conf.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,242 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Clang documentation build configuration file, created by
-# sphinx-quickstart on Sun Dec  9 20:01:55 2012.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
-
-# -- General configuration -----------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.todo', 'sphinx.ext.mathjax']
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'Clang'
-copyright = u'2007-2013, The Clang Team'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '3.3'
-# The full version, including alpha/beta/rc tags.
-release = '3.3'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build', 'analyzer']
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'friendly'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  See the documentation for
-# a list of builtin themes.
-html_theme = 'haiku'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = []
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'Clangdoc'
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
-
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
-
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
-  ('index', 'Clang.tex', u'Clang Documentation',
-   u'The Clang Team', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-
-# -- Options for manual page output --------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-    ('index', 'clang', u'Clang Documentation',
-     [u'The Clang Team'], 1)
-]
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-
-# -- Options for Texinfo output ------------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-#  dir menu entry, description, category)
-texinfo_documents = [
-  ('index', 'Clang', u'Clang Documentation',
-   u'The Clang Team', 'Clang', 'One line description of project.',
-   'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'

Modified: trunk/contrib/llvm/tools/clang/docs/doxygen.cfg.in
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/doxygen.cfg.in	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/doxygen.cfg.in	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1230 +0,0 @@
-# Doxyfile 1.4.4
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = clang
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = @PACKAGE_VERSION@
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = @abs_builddir@/doxygen
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
-# Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE        = English
-
-# This tag can be used to specify the encoding used in the generated output. 
-# The encoding is not always determined by the language that is chosen, 
-# but also whether or not the output is meant for Windows or non-Windows users. 
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
-# forces the Windows encoding (this is the default for the Windows binary), 
-# whereas setting the tag to NO uses a Unix-style encoding (the default for 
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING   = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = 
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = ../..
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like the Qt-style comments (thus requiring an 
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member 
-# documentation.
-
-DETAILS_AT_TOP         = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-
-#SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 2
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
-# only. Doxygen will then generate output that is more tailored for Java. 
-# For instance, namespaces will be presented as packages, qualified scopes 
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation. The default is YES.
-
-SHOW_DIRECTORIES       = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from the 
-# version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the progam writes to standard output 
-# is used as the file version. See the manual for examples.
-
-#FILE_VERSION_FILTER    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = NO
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = NO
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-
-#WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = 
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = @abs_srcdir@/../include \
-                         @abs_srcdir@/../lib \
-                         @abs_srcdir@/doxygen.intro
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
-
-FILE_PATTERNS          = 
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = 
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = @abs_srcdir@/../examples
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = 
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = YES
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             = @abs_srcdir@/img
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-
-INPUT_FILTER           = 
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-# is applied to all files.
-
-FILTER_PATTERNS        = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = NO
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default) 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
-# will need version 4.8.6 or higher.
-
-#USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 4
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = clang::
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-HTML_HEADER            = @abs_srcdir@/doxygen.header
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = @abs_srcdir@/doxygen.footer
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = @abs_srcdir@/doxygen.css
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW      = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = 
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = letter
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = 
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = 
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = 
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = ../include
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = YES
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = NO
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = YES
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-
-#GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a call dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable call graphs for selected 
-# functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-#DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               = @DOT@
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_WIDTH    = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT   = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that a graph may be further truncated if the graph's 
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
-# the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, which results in a white background. 
-# Warning: Depending on the platform used, enabling this option may lead to 
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
-# read).
-
-#DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-
-#DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO

Modified: trunk/contrib/llvm/tools/clang/docs/doxygen.css
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/doxygen.css	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/doxygen.css	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,408 +0,0 @@
-BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
-	font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;
-}
-BODY,TD {
- font-size: 90%;
-}
-H1 {
- text-align: center;
- font-size: 140%;
- font-weight: bold;
-}
-H2 {
- font-size: 120%;
- font-style: italic;
-}
-H3 {
- font-size: 100%;
-}
-CAPTION { font-weight: bold }
-DIV.qindex {
-	width: 100%;
-	background-color: #eeeeff;
-	border: 1px solid #b0b0b0;
-	text-align: center;
-	margin: 2px;
-	padding: 2px;
-	line-height: 140%;
-}
-DIV.nav {
-	width: 100%;
-	background-color: #eeeeff;
-	border: 1px solid #b0b0b0;
-	text-align: center;
-	margin: 2px;
-	padding: 2px;
-	line-height: 140%;
-}
-DIV.navtab {
-       background-color: #eeeeff;
-       border: 1px solid #b0b0b0;
-       text-align: center;
-       margin: 2px;
-       margin-right: 15px;
-       padding: 2px;
-}
-TD.navtab {
-       font-size: 70%;
-}
-A.qindex {
-       text-decoration: none;
-       font-weight: bold;
-       color: #1A419D;
-}
-A.qindex:visited {
-       text-decoration: none;
-       font-weight: bold;
-       color: #1A419D
-}
-A.qindex:hover {
-	text-decoration: none;
-	background-color: #ddddff;
-}
-A.qindexHL {
-	text-decoration: none;
-	font-weight: bold;
-	background-color: #6666cc;
-	color: #ffffff;
-	border: 1px double #9295C2;
-}
-A.qindexHL:hover {
-	text-decoration: none;
-	background-color: #6666cc;
-	color: #ffffff;
-}
-A.qindexHL:visited { 
- text-decoration: none; background-color: #6666cc; color: #ffffff }
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
-A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
-A.codeRef:link { font-weight: normal; color: #0000FF}
-A.codeRef:visited { font-weight: normal; color: #0000FF}
-A:hover { text-decoration: none; background-color: #f2f2ff }
-DL.el { margin-left: -1cm }
-.fragment {
-       font-family: Fixed, monospace;
-       font-size: 95%;
-}
-PRE.fragment {
-	border: 1px solid #CCCCCC;
-	background-color: #f5f5f5;
-	margin-top: 4px;
-	margin-bottom: 4px;
-	margin-left: 2px;
-	margin-right: 8px;
-	padding-left: 6px;
-	padding-right: 6px;
-	padding-top: 4px;
-	padding-bottom: 4px;
-}
-DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: #F4F4FB; font-weight: bold; }
-TD.mdPrefix {
-       background-color: #F4F4FB;
-       color: #606060;
-	font-size: 80%;
-}
-TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
-TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
-DIV.groupHeader {
-       margin-left: 16px;
-       margin-top: 12px;
-       margin-bottom: 6px;
-       font-weight: bold;
-}
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
-BODY {
-	background: white;
-	color: black;
-	margin-right: 20px;
-	margin-left: 20px;
-}
-TD.indexkey {
-	background-color: #eeeeff;
-	font-weight: bold;
-	padding-right  : 10px;
-	padding-top    : 2px;
-	padding-left   : 10px;
-	padding-bottom : 2px;
-	margin-left    : 0px;
-	margin-right   : 0px;
-	margin-top     : 2px;
-	margin-bottom  : 2px;
-	border: 1px solid #CCCCCC;
-}
-TD.indexvalue {
-	background-color: #eeeeff;
-	font-style: italic;
-	padding-right  : 10px;
-	padding-top    : 2px;
-	padding-left   : 10px;
-	padding-bottom : 2px;
-	margin-left    : 0px;
-	margin-right   : 0px;
-	margin-top     : 2px;
-	margin-bottom  : 2px;
-	border: 1px solid #CCCCCC;
-}
-TR.memlist {
-   background-color: #f0f0f0; 
-}
-P.formulaDsp { text-align: center; }
-IMG.formulaDsp { }
-IMG.formulaInl { vertical-align: middle; }
-SPAN.keyword       { color: #008000 }
-SPAN.keywordtype   { color: #604020 }
-SPAN.keywordflow   { color: #e08000 }
-SPAN.comment       { color: #800000 }
-SPAN.preprocessor  { color: #806020 }
-SPAN.stringliteral { color: #002080 }
-SPAN.charliteral   { color: #008080 }
-.mdTable {
-	border: 1px solid #868686;
-	background-color: #F4F4FB;
-}
-.mdRow {
-	padding: 8px 10px;
-}
-.mdescLeft {
-       padding: 0px 8px 4px 8px;
-	font-size: 80%;
-	font-style: italic;
-	background-color: #FAFAFA;
-	border-top: 1px none #E0E0E0;
-	border-right: 1px none #E0E0E0;
-	border-bottom: 1px none #E0E0E0;
-	border-left: 1px none #E0E0E0;
-	margin: 0px;
-}
-.mdescRight {
-       padding: 0px 8px 4px 8px;
-	font-size: 80%;
-	font-style: italic;
-	background-color: #FAFAFA;
-	border-top: 1px none #E0E0E0;
-	border-right: 1px none #E0E0E0;
-	border-bottom: 1px none #E0E0E0;
-	border-left: 1px none #E0E0E0;
-	margin: 0px;
-}
-.memItemLeft {
-	padding: 1px 0px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: solid;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-	background-color: #FAFAFA;
-	font-size: 80%;
-}
-.memItemRight {
-	padding: 1px 8px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: solid;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-	background-color: #FAFAFA;
-	font-size: 80%;
-}
-.memTemplItemLeft {
-	padding: 1px 0px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: none;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-	background-color: #FAFAFA;
-	font-size: 80%;
-}
-.memTemplItemRight {
-	padding: 1px 8px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: none;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-	background-color: #FAFAFA;
-	font-size: 80%;
-}
-.memTemplParams {
-	padding: 1px 0px 0px 8px;
-	margin: 4px;
-	border-top-width: 1px;
-	border-right-width: 1px;
-	border-bottom-width: 1px;
-	border-left-width: 1px;
-	border-top-color: #E0E0E0;
-	border-right-color: #E0E0E0;
-	border-bottom-color: #E0E0E0;
-	border-left-color: #E0E0E0;
-	border-top-style: solid;
-	border-right-style: none;
-	border-bottom-style: none;
-	border-left-style: none;
-       color: #606060;
-	background-color: #FAFAFA;
-	font-size: 80%;
-}
-.search     { color: #003399;
-              font-weight: bold;
-}
-FORM.search {
-              margin-bottom: 0px;
-              margin-top: 0px;
-}
-INPUT.search { font-size: 75%;
-               color: #000080;
-               font-weight: normal;
-               background-color: #eeeeff;
-}
-TD.tiny      { font-size: 75%;
-}
-a {
-	color: #252E78;
-}
-a:visited {
-	color: #3D2185;
-}
-.dirtab { padding: 4px;
-          border-collapse: collapse;
-          border: 1px solid #b0b0b0;
-}
-TH.dirtab { background: #eeeeff;
-            font-weight: bold;
-}
-HR { height: 1px;
-     border: none;
-     border-top: 1px solid black;
-}
-
-/* 
- * LLVM Modifications.
- * Note: Everything above here is generated with "doxygen -w htlm" command. See
- * "doxygen --help" for details. What follows are CSS overrides for LLVM 
- * specific formatting. We want to keep the above so it can be replaced with
- * subsequent doxygen upgrades.
- */
-
-.footer {
-        font-size: 80%;
-        font-weight: bold;
-        text-align: center;
-        vertical-align: middle;
-}
-.title {
-  font-size: 25pt; 
-  color: black; background: url("http://llvm.org/img/lines.gif");
-  font-weight: bold;
-  border-width: 1px;
-  border-style: solid none solid none;
-  text-align: center;
-  vertical-align: middle;
-  padding-left: 8pt;
-  padding-top: 1px;
-  padding-bottom: 2px
-}
-A:link {
-        cursor: pointer;
-        text-decoration: none;
-        font-weight: bolder;
-}
-A:visited {
-        cursor: pointer;
-        text-decoration: underline;
-        font-weight: bolder;
-}
-A:hover {
-        cursor: pointer;
-        text-decoration: underline;
-        font-weight: bolder;
-}
-A:active {
-        cursor: pointer;
-        text-decoration: underline;
-        font-weight: bolder;
-        font-style: italic;
-}
-H1 {
- text-align: center;
- font-size: 140%;
- font-weight: bold;
-}
-H2 {
- font-size: 120%;
- font-style: italic;
-}
-H3 {
- font-size: 100%;
-}
-
-H2, H3 {
-  border-bottom: 2px solid;
-  margin-top: 2em;
-}
-
-A.qindex {}
-A.qindexRef {}
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
-A.code { text-decoration: none; font-weight: normal; color: #4444ee }
-A.codeRef { font-weight: normal; color: #4444ee }
-
-div.memitem {
-  border: 1px solid #999999;
-  margin-top: 1.0em;
-  margin-bottom: 1.0em;
-  -webkit-border-radius: 0.5em;
-  -webkit-box-shadow: 3px 3px 6px #777777;
-  -moz-border-radius: 0.5em;
-  -moz-box-shadow: black 3px 3px 3px;
-}
-
-div.memproto {
-  background-color: #E3E4E5;
-  padding: 0.25em 0.5em;
-  -webkit-border-top-left-radius: 0.5em;
-  -webkit-border-top-right-radius: 0.5em;
-  -moz-border-radius-topleft: 0.5em;
-  -moz-border-radius-topright: 0.5em;
-}
-
-div.memdoc {
-  padding-left: 1em;
-  padding-right: 1em;
-}

Modified: trunk/contrib/llvm/tools/clang/docs/doxygen.footer
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/doxygen.footer	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/doxygen.footer	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-<hr>
-<p class="footer">
-Generated on $datetime by <a href="http://www.doxygen.org">Doxygen 
-$doxygenversion</a>.</p>
-
-<p class="footer">
-See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
-information.</p>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/docs/doxygen.header
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/doxygen.header	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/doxygen.header	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head>
-<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
-<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
-<meta name="description" content="C++ source code API documentation for clang."/>
-<title>clang: $title</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head><body>
-<p class="title">clang API Documentation</p>

Modified: trunk/contrib/llvm/tools/clang/docs/doxygen.intro
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/doxygen.intro	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/doxygen.intro	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-/// @mainpage clang
-///
-/// @section main_intro Introduction
-/// Welcome to the clang project.
-///
-/// This documentation describes the @b internal software that makes 
-/// up clang, not the @b external use of clang. There are no instructions
-/// here on how to use clang, only the APIs that make up the software. For 
-/// usage instructions, please see the programmer's guide or reference 
-/// manual.
-///
-/// @section main_caveat Caveat 
-/// This documentation is generated directly from the source code with doxygen. 
-/// Since clang is constantly under active development, what you're about to
-/// read is out of date!

Modified: trunk/contrib/llvm/tools/clang/docs/index.rst
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/index.rst	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/index.rst	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-.. Clang documentation master file, created by
-   sphinx-quickstart on Sun Dec  9 20:01:55 2012.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
-.. title:: Welcome to Clang's documentation!
-
-.. toctree::
-   :maxdepth: 1
-
-   ReleaseNotes
-
-Using Clang as a Compiler
-=========================
-
-.. toctree::
-   :maxdepth: 1
-
-   UsersManual
-   LanguageExtensions
-   AddressSanitizer
-   ThreadSanitizer
-   MemorySanitizer
-   Modules
-   FAQ
-
-Using Clang as a Library
-========================
-
-.. toctree::
-   :maxdepth: 1
-
-   Tooling
-   ExternalClangExamples
-   IntroductionToTheClangAST
-   LibTooling
-   LibFormat
-   ClangPlugins
-   RAVFrontendAction
-   LibASTMatchersTutorial
-   LibASTMatchers
-   HowToSetupToolingForLLVM
-   JSONCompilationDatabase
-
-Using Clang Tools
-=================
-
-.. toctree::
-   :maxdepth: 1
-
-   ClangTools
-   ClangCheck
-   ClangFormat
-
-Design Documents
-================
-
-.. toctree::
-   :maxdepth: 1
-
-   InternalsManual
-   DriverInternals
-   PTHInternals
-   PCHInternals
-
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-

Modified: trunk/contrib/llvm/tools/clang/docs/make.bat
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/make.bat	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/make.bat	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,190 +0,0 @@
- at ECHO OFF
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
-	set SPHINXBUILD=sphinx-build
-)
-set BUILDDIR=_build
-set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
-set I18NSPHINXOPTS=%SPHINXOPTS% .
-if NOT "%PAPER%" == "" (
-	set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
-	set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
-)
-
-if "%1" == "" goto help
-
-if "%1" == "help" (
-	:help
-	echo.Please use `make ^<target^>` where ^<target^> is one of
-	echo.  html       to make standalone HTML files
-	echo.  dirhtml    to make HTML files named index.html in directories
-	echo.  singlehtml to make a single large HTML file
-	echo.  pickle     to make pickle files
-	echo.  json       to make JSON files
-	echo.  htmlhelp   to make HTML files and a HTML help project
-	echo.  qthelp     to make HTML files and a qthelp project
-	echo.  devhelp    to make HTML files and a Devhelp project
-	echo.  epub       to make an epub
-	echo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter
-	echo.  text       to make text files
-	echo.  man        to make manual pages
-	echo.  texinfo    to make Texinfo files
-	echo.  gettext    to make PO message catalogs
-	echo.  changes    to make an overview over all changed/added/deprecated items
-	echo.  linkcheck  to check all external links for integrity
-	echo.  doctest    to run all doctests embedded in the documentation if enabled
-	goto end
-)
-
-if "%1" == "clean" (
-	for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
-	del /q /s %BUILDDIR%\*
-	goto end
-)
-
-if "%1" == "html" (
-	%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/html.
-	goto end
-)
-
-if "%1" == "dirhtml" (
-	%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
-	goto end
-)
-
-if "%1" == "singlehtml" (
-	%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
-	goto end
-)
-
-if "%1" == "pickle" (
-	%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can process the pickle files.
-	goto end
-)
-
-if "%1" == "json" (
-	%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can process the JSON files.
-	goto end
-)
-
-if "%1" == "htmlhelp" (
-	%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can run HTML Help Workshop with the ^
-.hhp project file in %BUILDDIR%/htmlhelp.
-	goto end
-)
-
-if "%1" == "qthelp" (
-	%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; now you can run "qcollectiongenerator" with the ^
-.qhcp project file in %BUILDDIR%/qthelp, like this:
-	echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Clang.qhcp
-	echo.To view the help file:
-	echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Clang.ghc
-	goto end
-)
-
-if "%1" == "devhelp" (
-	%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished.
-	goto end
-)
-
-if "%1" == "epub" (
-	%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The epub file is in %BUILDDIR%/epub.
-	goto end
-)
-
-if "%1" == "latex" (
-	%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
-	goto end
-)
-
-if "%1" == "text" (
-	%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The text files are in %BUILDDIR%/text.
-	goto end
-)
-
-if "%1" == "man" (
-	%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The manual pages are in %BUILDDIR%/man.
-	goto end
-)
-
-if "%1" == "texinfo" (
-	%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
-	goto end
-)
-
-if "%1" == "gettext" (
-	%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
-	goto end
-)
-
-if "%1" == "changes" (
-	%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.The overview file is in %BUILDDIR%/changes.
-	goto end
-)
-
-if "%1" == "linkcheck" (
-	%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Link check complete; look for any errors in the above output ^
-or in %BUILDDIR%/linkcheck/output.txt.
-	goto end
-)
-
-if "%1" == "doctest" (
-	%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
-	if errorlevel 1 exit /b 1
-	echo.
-	echo.Testing of doctests in the sources finished, look at the ^
-results in %BUILDDIR%/doctest/output.txt.
-	goto end
-)
-
-:end

Modified: trunk/contrib/llvm/tools/clang/docs/tools/clang.pod
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/tools/clang.pod	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/tools/clang.pod	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,570 +0,0 @@
-=pod
-
-=head1 NAME
-
-clang - the Clang C, C++, and Objective-C compiler
-
-=head1 SYNOPSIS
-
-B<clang> [B<-c>|B<-S>|B<-E>] B<-std=>I<standard> B<-g>
-  [B<-O0>|B<-O1>|B<-O2>|B<-Os>|B<-Oz>|B<-O3>|B<-Ofast>|B<-O4>]
-  B<-W>I<warnings...> B<-pedantic>
-  B<-I>I<dir...> B<-L>I<dir...>
-  B<-D>I<macro[=defn]>
-  B<-f>I<feature-option...>
-  B<-m>I<machine-option...>
-  B<-o> I<output-file>
-  B<-stdlib=>I<library> 
-  I<input-filenames>
-
-=head1 DESCRIPTION
-
-B<clang> is a C, C++, and Objective-C compiler which encompasses preprocessing,
-parsing, optimization, code generation, assembly, and linking.  Depending on
-which high-level mode setting is passed, Clang will stop before doing a full
-link.  While Clang is highly integrated, it is important to understand the
-stages of compilation, to understand how to invoke it.  These stages are:
-
-=over
-
-=item B<Driver>
-
-The B<clang> executable is actually a small driver which controls the overall
-execution of other tools such as the compiler, assembler and linker.  Typically
-you do not need to interact with the driver, but you transparently use it to run
-the other tools.
-
-=item B<Preprocessing>
-
-This stage handles tokenization of the input source file, macro expansion,
-#include expansion and handling of other preprocessor directives.  The output of
-this stage is typically called a ".i" (for C), ".ii" (for C++), ".mi" (for 
-Objective-C) , or ".mii" (for Objective-C++) file.
-
-=item B<Parsing and Semantic Analysis>
-
-This stage parses the input file, translating preprocessor tokens into a parse
-tree.  Once in the form of a parser tree, it applies semantic analysis to compute
-types for expressions as well and determine whether the code is well formed. This
-stage is responsible for generating most of the compiler warnings as well as
-parse errors.  The output of this stage is an "Abstract Syntax Tree" (AST).
-
-=item B<Code Generation and Optimization>
-
-This stage translates an AST into low-level intermediate code (known as "LLVM
-IR") and ultimately to machine code.  This phase is responsible for optimizing
-the generated code and handling target-specific code generation.  The output of
-this stage is typically called a ".s" file or "assembly" file.
-
-Clang also supports the use of an integrated assembler, in which the code
-generator produces object files directly. This avoids the overhead of generating
-the ".s" file and of calling the target assembler.
-
-=item B<Assembler>
-
-This stage runs the target assembler to translate the output of the compiler
-into a target object file.  The output of this stage is typically called a ".o"
-file or "object" file.
-
-=item B<Linker>
-
-This stage runs the target linker to merge multiple object files into an
-executable or dynamic library.  The output of this stage is typically called an
-"a.out", ".dylib" or ".so" file.
-
-=back
-
-The Clang compiler supports a large number of options to control each of these
-stages.  In addition to compilation of code, Clang also supports other tools:
-
-B<Clang Static Analyzer>
-
-The Clang Static Analyzer is a tool that scans source code to try to find bugs
-through code analysis.  This tool uses many parts of Clang and is built into the
-same driver.
-
-
-=head1 OPTIONS
-
-=head2 Stage Selection Options
-
-=over
-
-=item B<-E>
-
-Run the preprocessor stage.
-
-=item B<-fsyntax-only>
-
-Run the preprocessor, parser and type checking stages.
-
-=item B<-S>
-
-Run the previous stages as well as LLVM generation and optimization stages and
-target-specific code generation, producing an assembly file.
-
-=item B<-c>
-
-Run all of the above, plus the assembler, generating a target ".o" object file.
-
-=item B<no stage selection option>
-
-If no stage selection option is specified, all stages above are run, and the
-linker is run to combine the results into an executable or shared library.
-
-=item B<--analyze>
-
-Run the Clang Static Analyzer.
-
-=back
-
-
-
-=head2 Language Selection and Mode Options
-
-=over
-
-=item B<-x> I<language>
-
-Treat subsequent input files as having type I<language>.
-
-=item B<-std>=I<language>
-
-Specify the language standard to compile for.
-
-=item B<-stdlib>=I<library>
-
-Specify the C++ standard library to use; supported options are libstdc++ and
-libc++.
-
-=item B<-ansi>
-
-Same as B<-std=c89>.
-
-=item B<-ObjC++>
-
-Treat source input files as Objective-C++ inputs.
-
-=item B<-ObjC>
-
-Treat source input files as Objective-C inputs.
-
-=item B<-trigraphs>
-
-Enable trigraphs.
-
-=item B<-ffreestanding>
-
-Indicate that the file should be compiled for a freestanding, not a hosted,
-environment.
-
-=item B<-fno-builtin>
-
-Disable special handling and optimizations of builtin functions like strlen and
-malloc.
-
-=item B<-fmath-errno>
-
-Indicate that math functions should be treated as updating errno.
-
-=item B<-fpascal-strings>
-
-Enable support for Pascal-style strings with "\pfoo".
-
-=item B<-fms-extensions>
-
-Enable support for Microsoft extensions.
-
-=item B<-fmsc-version=>
-
-Set _MSC_VER. Defaults to 1300 on Windows. Not set otherwise.
-
-=item B<-fborland-extensions>
-
-Enable support for Borland extensions.
-
-=item B<-fwritable-strings>
-
-Make all string literals default to writable.  This disables uniquing of
-strings and other optimizations.
-
-=item B<-flax-vector-conversions>
-
-Allow loose type checking rules for implicit vector conversions.
-
-=item B<-fblocks>
-
-Enable the "Blocks" language feature.
-
-=item B<-fobjc-gc-only>
-
-Indicate that Objective-C code should be compiled in GC-only mode, which only
-works when Objective-C Garbage Collection is enabled.
-
-=item B<-fobjc-gc>
-
-Indicate that Objective-C code should be compiled in hybrid-GC mode, which works
-with both GC and non-GC mode.
-
-=item B<-fobjc-abi-version>=I<version>
-
-Select the Objective-C ABI version to use. Available versions are 1 (legacy
-"fragile" ABI), 2 (non-fragile ABI 1), and 3 (non-fragile ABI 2).
-
-=item B<-fobjc-nonfragile-abi-version>=I<version>
-
-Select the Objective-C non-fragile ABI version to use by default. This will only
-be used as the Objective-C ABI when the non-fragile ABI is enabled (either via
--fobjc-nonfragile-abi, or because it is the platform default).
-
-=item B<-fobjc-nonfragile-abi>
-
-Enable use of the Objective-C non-fragile ABI. On platforms for which this is
-the default ABI, it can be disabled with B<-fno-objc-nonfragile-abi>.
-
-=back
-
-
-
-=head2 Target Selection Options
-
-Clang fully supports cross compilation as an inherent part of its design.
-Depending on how your version of Clang is configured, it may have support for
-a number of cross compilers, or may only support a native target.
-
-=over
-
-=item B<-arch> I<architecture>
-
-Specify the architecture to build for.
-
-=item B<-mmacosx-version-min>=I<version>
-
-When building for Mac OS/X, specify the minimum version supported by your
-application.
-
-=item B<-miphoneos-version-min>
-
-When building for iPhone OS, specify the minimum version supported by your
-application.
-
-
-=item B<-march>=I<cpu>
-
-Specify that Clang should generate code for a specific processor family member
-and later.  For example, if you specify -march=i486, the compiler is allowed to
-generate instructions that are valid on i486 and later processors, but which
-may not exist on earlier ones.
-
-=back
-
-
-=head2 Code Generation Options
-
-=over
-
-=item B<-O0> B<-O1> B<-O2> B<-Os> B<-Oz> B<-O3> B<-Ofast> B<-O4>
-
-Specify which optimization level to use.  B<-O0> means "no optimization": this
-level compiles the fastest and generates the most debuggable code.  B<-O2> is a
-moderate level of optimization which enables most optimizations.  B<-Os> is like
-B<-O2> with extra optimizations to reduce code size.  B<-Oz> is like B<-Os> 
-(and thus B<-O2>), but reduces code size further.  B<-O3> is like B<-O2>,
-except that it enables optimizations that take longer to perform or that may
-generate larger code (in an attempt to make the program run faster).
-B<-Ofast> enables all the optimizations from B<-O3> along with other aggressive
-optimizations that may violate strict compliance with language standards. On
-supported platforms, B<-O4> enables link-time optimization; object files are
-stored in the LLVM bitcode file format and whole program optimization is done at
-link time. B<-O1> is somewhere between B<-O0> and B<-O2>.
-
-=item B<-g>
-
-Generate debug information.  Note that Clang debug information works best at
-B<-O0>.  At higher optimization levels, only line number information is
-currently available.
-
-=item B<-fexceptions>
-
-Enable generation of unwind information, this allows exceptions to be thrown
-through Clang compiled stack frames.  This is on by default in x86-64.
-
-=item B<-ftrapv>
-
-Generate code to catch integer overflow errors.  Signed integer overflow is
-undefined in C, with this flag, extra code is generated to detect this and abort
-when it happens.
-
-
-=item B<-fvisibility>
-
-This flag sets the default visibility level.
-
-=item B<-fcommon>
-
-This flag specifies that variables without initializers get common linkage.  It
-can be disabled with B<-fno-common>.
-
-=item B<-ftls-model>
-
-Set the default thread-local storage (TLS) model to use for thread-local
-variables. Valid values are: "global-dynamic", "local-dynamic", "initial-exec"
-and "local-exec". The default is "global-dynamic". The default model can be
-overridden with the tls_model attribute. The compiler will try to choose a more
-efficient model if possible.
-
-=item B<-flto> B<-emit-llvm>
-
-Generate output files in LLVM formats, suitable for link time optimization. When
-used with B<-S> this generates LLVM intermediate language assembly files,
-otherwise this generates LLVM bitcode format object files (which may be passed
-to the linker depending on the stage selection options).
-
-=cut
-
-##=item B<-fnext-runtime> B<-fobjc-nonfragile-abi> B<-fgnu-runtime>
-##These options specify which Objective-C runtime the code generator should
-##target.  FIXME: we don't want people poking these generally.
-
-=pod
-
-=back
-
-
-=head2 Driver Options
-
-=over
-
-=item B<-###>
-
-Print the commands to run for this compilation.
-
-=item B<--help>
-
-Display available options.
-
-=item B<-Qunused-arguments>
-
-Don't emit warning for unused driver arguments.
-
-=item B<-Wa,>I<args>
-
-Pass the comma separated arguments in I<args> to the assembler.
-
-=item B<-Wl,>I<args>
-
-Pass the comma separated arguments in I<args> to the linker.
-
-=item B<-Wp,>I<args>
-
-Pass the comma separated arguments in I<args> to the preprocessor.
-
-=item B<-Xanalyzer> I<arg>
-
-Pass I<arg> to the static analyzer.
-
-=item B<-Xassembler> I<arg>
-
-Pass I<arg> to the assembler.
-
-=item B<-Xlinker> I<arg>
-
-Pass I<arg> to the linker.
-
-=item B<-Xpreprocessor> I<arg>
-
-Pass I<arg> to the preprocessor.
-
-=item B<-o> I<file>
-
-Write output to I<file>.
-
-=item B<-print-file-name>=I<file>
-
-Print the full library path of I<file>.
-
-=item B<-print-libgcc-file-name>
-
-Print the library path for "libgcc.a".
-
-=item B<-print-prog-name>=I<name>
-
-Print the full program path of I<name>.
-
-=item B<-print-search-dirs>
-
-Print the paths used for finding libraries and programs.
-
-=item B<-save-temps>
-
-Save intermediate compilation results.
-
-=item B<-integrated-as> B<-no-integrated-as>
-
-Used to enable and disable, respectively, the use of the integrated
-assembler. Whether the integrated assembler is on by default is target
-dependent.
-
-=item B<-time>
-
-Time individual commands.
-
-=item B<-ftime-report>
-
-Print timing summary of each stage of compilation.
-
-=item B<-v>
-
-Show commands to run and use verbose output.
-
-=back
-
-
-=head2 Diagnostics Options
-
-=over
-
-=item B<-fshow-column>
-B<-fshow-source-location>
-B<-fcaret-diagnostics>
-B<-fdiagnostics-fixit-info>
-B<-fdiagnostics-parseable-fixits>
-B<-fdiagnostics-print-source-range-info>
-B<-fprint-source-range-info>
-B<-fdiagnostics-show-option>
-B<-fmessage-length>
-
-These options control how Clang prints out information about diagnostics (errors
-and warnings).  Please see the Clang User's Manual for more information.
-
-=back
-
-
-=head2 Preprocessor Options
-
-=over
-
-=item B<-D>I<macroname=value>
-
-Adds an implicit #define into the predefines buffer which is read before the
-source file is preprocessed.
-
-=item B<-U>I<macroname>
-
-Adds an implicit #undef into the predefines buffer which is read before the
-source file is preprocessed.
-
-=item B<-include> I<filename>
-
-Adds an implicit #include into the predefines buffer which is read before the
-source file is preprocessed.
-
-=item B<-I>I<directory>
-
-Add the specified directory to the search path for include files.
-
-=item B<-F>I<directory>
-
-Add the specified directory to the search path for framework include files.
-
-=item B<-nostdinc>
-
-Do not search the standard system directories or compiler builtin directories
-for include files.
-
-=item B<-nostdlibinc>
-
-Do not search the standard system directories for include files, but do search
-compiler builtin include directories.
-
-=item B<-nobuiltininc>
-
-Do not search clang's builtin directory for include files.
-
-=cut
-
-## TODO, but do we really want people using this stuff?
-#=item B<-idirafter>I<directory>
-#=item B<-iquote>I<directory>
-#=item B<-isystem>I<directory>
-#=item B<-iprefix>I<directory>
-#=item B<-iwithprefix>I<directory>
-#=item B<-iwithprefixbefore>I<directory>
-#=item B<-isysroot>
-
-=pod
-
-
-=back
-
-
-
-=cut
-
-### TODO someday.
-#=head2 Warning Control Options
-#=over
-#=back
-#=head2 Code Generation and Optimization Options
-#=over
-#=back
-#=head2 Assembler Options
-#=over
-#=back
-#=head2 Linker Options
-#=over
-#=back
-#=head2 Static Analyzer Options
-#=over
-#=back
-
-=pod
-
-
-=head1 ENVIRONMENT
-
-=over
-
-=item B<TMPDIR>, B<TEMP>, B<TMP>
-
-These environment variables are checked, in order, for the location to
-write temporary files used during the compilation process.
-
-=item B<CPATH>
-
-If this environment variable is present, it is treated as a delimited
-list of paths to be added to the default system include path list. The
-delimiter is the platform dependent delimitor, as used in the I<PATH>
-environment variable.
-
-Empty components in the environment variable are ignored.
-
-=item B<C_INCLUDE_PATH>, B<OBJC_INCLUDE_PATH>, B<CPLUS_INCLUDE_PATH>,
-B<OBJCPLUS_INCLUDE_PATH>
-
-These environment variables specify additional paths, as for CPATH,
-which are only used when processing the appropriate language.
-
-=item B<MACOSX_DEPLOYMENT_TARGET>
-
-If -mmacosx-version-min is unspecified, the default deployment target
-is read from this environment variable.  This option only affects darwin
-targets.
-
-=back
-
-=head1 BUGS
-
-To report bugs, please visit L<http://llvm.org/bugs/>.  Most bug reports should
-include preprocessed source files (use the B<-E> option) and the full output of 
-the compiler, along with information to reproduce.
-
-=head1 SEE ALSO
-
- as(1), ld(1)
-
-=head1 AUTHOR
-
-Maintained by the Clang / LLVM Team (L<http://clang.llvm.org>).
-
-=cut

Modified: trunk/contrib/llvm/tools/clang/docs/tools/dump_ast_matchers.py
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/tools/dump_ast_matchers.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/tools/dump_ast_matchers.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,296 +0,0 @@
-#!/usr/bin/env python
-# A tool to parse ASTMatchers.h and update the documentation in
-# ../LibASTMatchersReference.html automatically. Run from the
-# directory in which this file is located to update the docs.
-
-import collections
-import re
-import urllib2
-
-MATCHERS_FILE = '../../include/clang/ASTMatchers/ASTMatchers.h'
-
-# Each matcher is documented in one row of the form:
-#   result | name | argA
-# The subsequent row contains the documentation and is hidden by default,
-# becoming visible via javascript when the user clicks the matcher name.
-TD_TEMPLATE="""
-<tr><td>%(result)s</td><td class="name" onclick="toggle('%(id)s')"><a name="%(id)sAnchor">%(name)s</a></td><td>%(args)s</td></tr>
-<tr><td colspan="4" class="doc" id="%(id)s"><pre>%(comment)s</pre></td></tr>
-"""
-
-# We categorize the matchers into these three categories in the reference:
-node_matchers = {}
-narrowing_matchers = {}
-traversal_matchers = {}
-
-# We output multiple rows per matcher if the matcher can be used on multiple
-# node types. Thus, we need a new id per row to control the documentation
-# pop-up. ids[name] keeps track of those ids.
-ids = collections.defaultdict(int)
-
-# Cache for doxygen urls we have already verified.
-doxygen_probes = {}
-
-def esc(text):
-  """Escape any html in the given text."""
-  text = re.sub(r'&', '&', text)
-  text = re.sub(r'<', '<', text)
-  text = re.sub(r'>', '>', text)
-  def link_if_exists(m):
-    name = m.group(1)
-    url = 'http://clang.llvm.org/doxygen/classclang_1_1%s.html' % name
-    if url not in doxygen_probes:
-      try:
-        print 'Probing %s...' % url
-        urllib2.urlopen(url)
-        doxygen_probes[url] = True
-      except:
-        doxygen_probes[url] = False
-    if doxygen_probes[url]:
-      return r'Matcher&lt<a href="%s">%s</a>>' % (url, name)
-    else:
-      return m.group(0)
-  text = re.sub(
-    r'Matcher<([^\*&]+)>', link_if_exists, text)
-  return text
-
-def extract_result_types(comment):
-  """Extracts a list of result types from the given comment.
-
-     We allow annotations in the comment of the matcher to specify what
-     nodes a matcher can match on. Those comments have the form:
-       Usable as: Any Matcher | (Matcher<T1>[, Matcher<t2>[, ...]])
-
-     Returns ['*'] in case of 'Any Matcher', or ['T1', 'T2', ...].
-     Returns the empty list if no 'Usable as' specification could be
-     parsed.
-  """
-  result_types = []
-  m = re.search(r'Usable as: Any Matcher[\s\n]*$', comment, re.S)
-  if m:
-    return ['*']
-  while True:
-    m = re.match(r'^(.*)Matcher<([^>]+)>\s*,?[\s\n]*$', comment, re.S)
-    if not m:
-      if re.search(r'Usable as:\s*$', comment):
-        return result_types
-      else:
-        return None
-    result_types += [m.group(2)]
-    comment = m.group(1)
-
-def strip_doxygen(comment):
-  """Returns the given comment without \-escaped words."""
-  # If there is only a doxygen keyword in the line, delete the whole line.
-  comment = re.sub(r'^\\[^\s]+\n', r'', comment, flags=re.M)
-  # Delete the doxygen command and the following whitespace.
-  comment = re.sub(r'\\[^\s]+\s+', r'', comment)
-  return comment
-
-def unify_arguments(args):
-  """Gets rid of anything the user doesn't care about in the argument list."""
-  args = re.sub(r'internal::', r'', args)
-  args = re.sub(r'const\s+', r'', args)
-  args = re.sub(r'&', r' ', args)
-  args = re.sub(r'(^|\s)M\d?(\s)', r'\1Matcher<*>\2', args)
-  return args
-
-def add_matcher(result_type, name, args, comment, is_dyncast=False):
-  """Adds a matcher to one of our categories."""
-  if name == 'id':
-     # FIXME: Figure out whether we want to support the 'id' matcher.
-     return
-  matcher_id = '%s%d' % (name, ids[name])
-  ids[name] += 1
-  args = unify_arguments(args)
-  matcher_html = TD_TEMPLATE % {
-    'result': esc('Matcher<%s>' % result_type),
-    'name': name,
-    'args': esc(args),
-    'comment': esc(strip_doxygen(comment)),
-    'id': matcher_id,
-  }
-  if is_dyncast:
-    node_matchers[result_type + name] = matcher_html
-  # Use a heuristic to figure out whether a matcher is a narrowing or
-  # traversal matcher. By default, matchers that take other matchers as
-  # arguments (and are not node matchers) do traversal. We specifically
-  # exclude known narrowing matchers that also take other matchers as
-  # arguments.
-  elif ('Matcher<' not in args or
-        name in ['allOf', 'anyOf', 'anything', 'unless']):
-    narrowing_matchers[result_type + name] = matcher_html
-  else:
-    traversal_matchers[result_type + name] = matcher_html
-
-def act_on_decl(declaration, comment, allowed_types):
-  """Parse the matcher out of the given declaration and comment.
-
-     If 'allowed_types' is set, it contains a list of node types the matcher
-     can match on, as extracted from the static type asserts in the matcher
-     definition.
-  """
-  if declaration.strip():
-    # Node matchers are defined by writing:
-    #   VariadicDynCastAllOfMatcher<ResultType, ArgumentType> name;
-    m = re.match(r""".*Variadic(?:DynCast)?AllOfMatcher\s*<
-                       \s*([^\s,]+)\s*(?:,
-                       \s*([^\s>]+)\s*)?>
-                       \s*([^\s;]+)\s*;\s*$""", declaration, flags=re.X)
-    if m:
-      result, inner, name = m.groups()
-      if not inner:
-        inner = result
-      add_matcher(result, name, 'Matcher<%s>...' % inner,
-                  comment, is_dyncast=True)
-      return
-
-    # Parse the various matcher definition macros.
-    m = re.match(""".*AST_TYPE_MATCHER\(
-                       \s*([^\s,]+\s*),
-                       \s*([^\s,]+\s*)
-                     \)\s*;\s*$""", declaration, flags=re.X)
-    if m:
-      inner, name = m.groups()
-      add_matcher('Type', name, 'Matcher<%s>...' % inner,
-                  comment, is_dyncast=True)
-      add_matcher('TypeLoc', '%sLoc' % name, 'Matcher<%sLoc>...' % inner,
-                  comment, is_dyncast=True)
-      return
-
-    m = re.match(""".*AST_TYPE(LOC)?_TRAVERSE_MATCHER\(
-                       \s*([^\s,]+\s*),
-                       \s*(?:[^\s,]+\s*)
-                     \)\s*;\s*$""", declaration, flags=re.X)
-    if m:
-      loc = m.group(1)
-      name = m.group(2)
-      result_types = extract_result_types(comment)
-      if not result_types:
-        raise Exception('Did not find allowed result types for: %s' % name)
-      for result_type in result_types:
-        add_matcher(result_type, name, 'Matcher<Type>', comment)
-        if loc:
-          add_matcher('%sLoc' % result_type, '%sLoc' % name, 'Matcher<TypeLoc>',
-                      comment)
-      return
-
-    m = re.match(r"""^\s*AST_(POLYMORPHIC_)?MATCHER(_P)?(.?)(?:_OVERLOAD)?\(
-                       (?:\s*([^\s,]+)\s*,)?
-                          \s*([^\s,]+)\s*
-                       (?:,\s*([^\s,]+)\s*
-                          ,\s*([^\s,]+)\s*)?
-                       (?:,\s*([^\s,]+)\s*
-                          ,\s*([^\s,]+)\s*)?
-                       (?:,\s*\d+\s*)?
-                      \)\s*{\s*$""", declaration, flags=re.X)
-    if m:
-      p, n, result, name = m.groups()[1:5]
-      args = m.groups()[5:]
-      if not result:
-        if not allowed_types:
-          raise Exception('Did not find allowed result types for: %s' % name)
-        result_types = allowed_types
-      else:
-        result_types = [result]
-      if n not in ['', '2']:
-        raise Exception('Cannot parse "%s"' % declaration)
-      args = ', '.join('%s %s' % (args[i], args[i+1])
-                       for i in range(0, len(args), 2) if args[i])
-      for result_type in result_types:
-        add_matcher(result_type, name, args, comment)
-      return
-
-    # Parse free standing matcher functions, like:
-    #   Matcher<ResultType> Name(Matcher<ArgumentType> InnerMatcher) {
-    m = re.match(r"""^\s*(.*)\s+
-                     ([^\s\(]+)\s*\(
-                     (.*)
-                     \)\s*{""", declaration, re.X)
-    if m:
-      result, name, args = m.groups()
-      args = ', '.join(p.strip() for p in args.split(','))
-      m = re.match(r'.*\s+internal::(Bindable)?Matcher<([^>]+)>$', result)
-      if m:
-        result_types = [m.group(2)]
-      else:
-        result_types = extract_result_types(comment)
-      if not result_types:
-        if not comment:
-          # Only overloads don't have their own doxygen comments; ignore those.
-          print 'Ignoring "%s"' % name
-        else:
-          print 'Cannot determine result type for "%s"' % name
-      else:
-        for result_type in result_types:
-          add_matcher(result_type, name, args, comment)
-    else:
-      print '*** Unparsable: "' + declaration + '" ***'
-
-def sort_table(matcher_type, matcher_map):
-  """Returns the sorted html table for the given row map."""
-  table = ''
-  for key in sorted(matcher_map.keys()):
-    table += matcher_map[key] + '\n'
-  return ('<!-- START_%(type)s_MATCHERS -->\n' +
-          '%(table)s' + 
-          '<!--END_%(type)s_MATCHERS -->') % {
-    'type': matcher_type,
-    'table': table,
-  }
-
-# Parse the ast matchers.
-# We alternate between two modes:
-# body = True: We parse the definition of a matcher. We need
-#   to parse the full definition before adding a matcher, as the
-#   definition might contain static asserts that specify the result
-#   type.
-# body = False: We parse the comments and declaration of the matcher.
-comment = ''
-declaration = ''
-allowed_types = []
-body = False
-for line in open(MATCHERS_FILE).read().splitlines():
-  if body:
-    if line.strip() and line[0] == '}':
-      if declaration:
-        act_on_decl(declaration, comment, allowed_types)
-        comment = ''
-        declaration = ''
-        allowed_types = []
-      body = False
-    else:
-      m = re.search(r'is_base_of<([^,]+), NodeType>', line)
-      if m and m.group(1):
-        allowed_types += [m.group(1)]
-    continue
-  if line.strip() and line.lstrip()[0] == '/':
-    comment += re.sub(r'/+\s?', '', line) + '\n'
-  else:
-    declaration += ' ' + line
-    if ((not line.strip()) or 
-        line.rstrip()[-1] == ';' or
-        line.rstrip()[-1] == '{'):
-      if line.strip() and line.rstrip()[-1] == '{':
-        body = True
-      else:
-        act_on_decl(declaration, comment, allowed_types)
-        comment = ''
-        declaration = ''
-        allowed_types = []
-
-node_matcher_table = sort_table('DECL', node_matchers)
-narrowing_matcher_table = sort_table('NARROWING', narrowing_matchers)
-traversal_matcher_table = sort_table('TRAVERSAL', traversal_matchers)
-
-reference = open('../LibASTMatchersReference.html').read()
-reference = re.sub(r'<!-- START_DECL_MATCHERS.*END_DECL_MATCHERS -->',
-                   '%s', reference, flags=re.S) % node_matcher_table
-reference = re.sub(r'<!-- START_NARROWING_MATCHERS.*END_NARROWING_MATCHERS -->',
-                   '%s', reference, flags=re.S) % narrowing_matcher_table
-reference = re.sub(r'<!-- START_TRAVERSAL_MATCHERS.*END_TRAVERSAL_MATCHERS -->',
-                   '%s', reference, flags=re.S) % traversal_matcher_table
-
-with open('../LibASTMatchersReference.html', 'w') as output:
-  output.write(reference)
-

Modified: trunk/contrib/llvm/tools/clang/docs/tools/manpage.css
===================================================================
--- trunk/contrib/llvm/tools/clang/docs/tools/manpage.css	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/docs/tools/manpage.css	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,256 +0,0 @@
-/* Based on http://www.perldoc.com/css/perldoc.css */
-
- at import url("../llvm.css");
-
-body { font-family: Arial,Helvetica; }
-
-blockquote { margin: 10pt;  }
-
-h1, a { color: #336699; }
-
-
-/*** Top menu style ****/
-.mmenuon { 
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #ff6600; font-size: 10pt;
-}
-.mmenuoff { 
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #ffffff; font-size: 10pt;
-}	  
-.cpyright {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #ffffff; font-size: xx-small;
-}
-.cpyrightText {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #ffffff; font-size: xx-small;
-}
-.sections { 
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: 11pt;
-}	 
-.dsections { 
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: 12pt;
-}	
-.slink { 
- font-family: Arial,Helvetica; font-weight: normal; text-decoration: none;
- color: #000000; font-size: 9pt;
-}	 
-
-.slink2 { font-family: Arial,Helvetica; text-decoration: none; color: #336699; }	 
-
-.maintitle { 
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: 18pt;
-}	 
-.dblArrow {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: small;
-}
-.menuSec {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: small;
-}
-
-.newstext {
- font-family: Arial,Helvetica; font-size: small;
-}
-
-.linkmenu {
- font-family: Arial,Helvetica; color: #000000; font-weight: bold;
- text-decoration: none;
-}
-
-P {
- font-family: Arial,Helvetica;
-}
-
-PRE {
-    font-size: 10pt;
-}
-.quote { 
- font-family: Times; text-decoration: none;
- color: #000000; font-size: 9pt; font-style: italic;
-}	
-.smstd { font-family: Arial,Helvetica; color: #000000; font-size: x-small; } 
-.std { font-family: Arial,Helvetica; color: #000000; } 
-.meerkatTitle { 
- font-family: sans-serif; font-size: x-small;  color: black;    }
-
-.meerkatDescription { font-family: sans-serif; font-size: 10pt; color: black }
-.meerkatCategory { 
- font-family: sans-serif; font-size: 9pt; font-weight: bold; font-style: italic; 
- color: brown; }
-.meerkatChannel { 
- font-family: sans-serif; font-size: 9pt; font-style: italic; color: brown; }
-.meerkatDate { font-family: sans-serif; font-size: xx-small; color: #336699; }
-
-.tocTitle {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #333333; font-size: 10pt;
-}
-
-.toc-item {
- font-family: Arial,Helvetica; font-weight: bold; 
- color: #336699; font-size: 10pt; text-decoration: underline;
-}
-
-.perlVersion {
- font-family: Arial,Helvetica; font-weight: bold; 
- color: #336699; font-size: 10pt; text-decoration: none;
-}
-
-.podTitle {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #000000;
-}
-
-.docTitle {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #000000; font-size: 10pt;
-}
-.dotDot {
- font-family: Arial,Helvetica; font-weight: bold; 
- color: #000000; font-size: 9pt;
-}
-
-.docSec {
- font-family: Arial,Helvetica; font-weight: normal; 
- color: #333333; font-size: 9pt;
-}
-.docVersion {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: 10pt;
-}
-
-.docSecs-on {
- font-family: Arial,Helvetica; font-weight: normal; text-decoration: none;
- color: #ff0000; font-size: 10pt;
-}
-.docSecs-off {
- font-family: Arial,Helvetica; font-weight: normal; text-decoration: none;
- color: #333333; font-size: 10pt;
-}
-
-h2 {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: medium;
-}
-h1 {
- font-family: Verdana,Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: large;
-}
-
-DL {
- font-family: Arial,Helvetica; font-weight: normal; text-decoration: none;
- color: #333333; font-size: 10pt;
-}
-
-UL > LI > A {
- font-family: Arial,Helvetica; font-weight: bold;
- color: #336699; font-size: 10pt;
-}
-
-.moduleInfo {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #333333; font-size: 11pt;
-}
-
-.moduleInfoSec {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none;
- color: #336699; font-size: 10pt;
-}
-
-.moduleInfoVal {
- font-family: Arial,Helvetica; font-weight: normal; text-decoration: underline;
- color: #000000; font-size: 10pt;
-}
-
-.cpanNavTitle {
- font-family: Arial,Helvetica; font-weight: bold; 
- color: #ffffff; font-size: 10pt;
-}
-.cpanNavLetter {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; 
- color: #333333; font-size: 9pt;
-}
-.cpanCat {
- font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; 
- color: #336699; font-size: 9pt;
-}
-
-.bttndrkblue-bkgd-top {
-	background-color: #225688;
-	background-image: url(/global/mvc_objects/images/bttndrkblue_bgtop.gif);
-}
-.bttndrkblue-bkgd-left {
-	background-color: #225688;
-	background-image: url(/global/mvc_objects/images/bttndrkblue_bgleft.gif);
-}
-.bttndrkblue-bkgd {
-	padding-top: 0px;
-	padding-bottom: 0px;
-	margin-bottom: 0px;
-	margin-top: 0px;
-	background-repeat: no-repeat;
-	background-color: #225688;
-	background-image: url(/global/mvc_objects/images/bttndrkblue_bgmiddle.gif);
-	vertical-align: top;
-}
-.bttndrkblue-bkgd-right {
-	background-color: #225688;
-	background-image: url(/global/mvc_objects/images/bttndrkblue_bgright.gif);
-}
-.bttndrkblue-bkgd-bottom {
-	background-color: #225688;
-	background-image: url(/global/mvc_objects/images/bttndrkblue_bgbottom.gif);
-}
-.bttndrkblue-text a {
-	color: #ffffff;
-	text-decoration: none;
-}
-a.bttndrkblue-text:hover {
-	color: #ffDD3C;
-	text-decoration: none;
-}
-.bg-ltblue {
-	background-color: #f0f5fa;
-} 
-
-.border-left-b {
-	background: #f0f5fa url(/i/corner-leftline.gif) repeat-y;
-} 
-
-.border-right-b {
-	background: #f0f5fa url(/i/corner-rightline.gif) repeat-y;
-} 
-
-.border-top-b {
-	background: #f0f5fa url(/i/corner-topline.gif) repeat-x;
-} 
-
-.border-bottom-b {
-	background: #f0f5fa url(/i/corner-botline.gif) repeat-x;
-} 
-
-.border-right-w {
-	background: #ffffff url(/i/corner-rightline.gif) repeat-y;
-} 
-
-.border-top-w {
-	background: #ffffff url(/i/corner-topline.gif) repeat-x;
-} 
-
-.border-bottom-w {
-	background: #ffffff url(/i/corner-botline.gif) repeat-x;
-} 
-
-.bg-white {
-	background-color: #ffffff;
-} 
-
-.border-left-w {
-	background: #ffffff url(/i/corner-leftline.gif) repeat-y;
-} 

Modified: trunk/contrib/llvm/tools/clang/examples/PrintFunctionNames/PrintFunctionNames.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/examples/PrintFunctionNames/PrintFunctionNames.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/examples/PrintFunctionNames/PrintFunctionNames.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-//===- PrintFunctionNames.cpp ---------------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Example clang plugin which simply prints the names of all the top-level decls
-// in the input file.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Frontend/FrontendPluginRegistry.h"
-#include "clang/AST/AST.h"
-#include "clang/AST/ASTConsumer.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "llvm/Support/raw_ostream.h"
-using namespace clang;
-
-namespace {
-
-class PrintFunctionsConsumer : public ASTConsumer {
-public:
-  virtual bool HandleTopLevelDecl(DeclGroupRef DG) {
-    for (DeclGroupRef::iterator i = DG.begin(), e = DG.end(); i != e; ++i) {
-      const Decl *D = *i;
-      if (const NamedDecl *ND = dyn_cast<NamedDecl>(D))
-        llvm::errs() << "top-level-decl: \"" << ND->getNameAsString() << "\"\n";
-    }
-
-    return true;
-  }
-};
-
-class PrintFunctionNamesAction : public PluginASTAction {
-protected:
-  ASTConsumer *CreateASTConsumer(CompilerInstance &CI, llvm::StringRef) {
-    return new PrintFunctionsConsumer();
-  }
-
-  bool ParseArgs(const CompilerInstance &CI,
-                 const std::vector<std::string>& args) {
-    for (unsigned i = 0, e = args.size(); i != e; ++i) {
-      llvm::errs() << "PrintFunctionNames arg = " << args[i] << "\n";
-
-      // Example error handling.
-      if (args[i] == "-an-error") {
-        DiagnosticsEngine &D = CI.getDiagnostics();
-        unsigned DiagID = D.getCustomDiagID(
-          DiagnosticsEngine::Error, "invalid argument '" + args[i] + "'");
-        D.Report(DiagID);
-        return false;
-      }
-    }
-    if (args.size() && args[0] == "help")
-      PrintHelp(llvm::errs());
-
-    return true;
-  }
-  void PrintHelp(llvm::raw_ostream& ros) {
-    ros << "Help for PrintFunctionNames plugin goes here\n";
-  }
-
-};
-
-}
-
-static FrontendPluginRegistry::Add<PrintFunctionNamesAction>
-X("print-fns", "print function names");

Modified: trunk/contrib/llvm/tools/clang/examples/PrintFunctionNames/PrintFunctionNames.exports
===================================================================
--- trunk/contrib/llvm/tools/clang/examples/PrintFunctionNames/PrintFunctionNames.exports	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/examples/PrintFunctionNames/PrintFunctionNames.exports	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-_ZN4llvm8Registry*

Modified: trunk/contrib/llvm/tools/clang/examples/analyzer-plugin/MainCallChecker.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/examples/analyzer-plugin/MainCallChecker.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/examples/analyzer-plugin/MainCallChecker.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-#include "clang/StaticAnalyzer/Core/Checker.h"
-#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
-#include "clang/StaticAnalyzer/Core/CheckerRegistry.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
-
-using namespace clang;
-using namespace ento;
-
-namespace {
-class MainCallChecker : public Checker < check::PreStmt<CallExpr> > {
-  mutable OwningPtr<BugType> BT;
-
-public:
-  void checkPreStmt(const CallExpr *CE, CheckerContext &C) const;
-};
-} // end anonymous namespace
-
-void MainCallChecker::checkPreStmt(const CallExpr *CE, CheckerContext &C) const {
-  const ProgramStateRef state = C.getState();
-  const LocationContext *LC = C.getLocationContext();
-  const Expr *Callee = CE->getCallee();
-  const FunctionDecl *FD = state->getSVal(Callee, LC).getAsFunctionDecl();
-
-  if (!FD)
-    return;
-
-  // Get the name of the callee.
-  IdentifierInfo *II = FD->getIdentifier();
-  if (!II)   // if no identifier, not a simple C function
-    return;
-
-  if (II->isStr("main")) {
-    ExplodedNode *N = C.generateSink();
-    if (!N)
-      return;
-
-    if (!BT)
-      BT.reset(new BugType("call to main", "example analyzer plugin"));
-
-    BugReport *report = new BugReport(*BT, BT->getName(), N);
-    report->addRange(Callee->getSourceRange());
-    C.emitReport(report);
-  }
-}
-
-// Register plugin!
-extern "C"
-void clang_registerCheckers (CheckerRegistry &registry) {
-  registry.addChecker<MainCallChecker>("example.MainCallChecker", "Disallows calls to functions called main");
-}
-
-extern "C"
-const char clang_analyzerAPIVersionString[] = CLANG_ANALYZER_API_VERSION_STRING;

Modified: trunk/contrib/llvm/tools/clang/examples/clang-interpreter/main.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/examples/clang-interpreter/main.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/examples/clang-interpreter/main.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,155 +0,0 @@
-//===-- examples/clang-interpreter/main.cpp - Clang C Interpreter Example -===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/CodeGen/CodeGenAction.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Driver/Compilation.h"
-#include "clang/Driver/Driver.h"
-#include "clang/Driver/Tool.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/CompilerInvocation.h"
-#include "clang/Frontend/FrontendDiagnostic.h"
-#include "clang/Frontend/TextDiagnosticPrinter.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/ExecutionEngine/ExecutionEngine.h"
-#include "llvm/ExecutionEngine/JIT.h"
-#include "llvm/IR/Module.h"
-#include "llvm/Support/Host.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/TargetSelect.h"
-#include "llvm/Support/raw_ostream.h"
-using namespace clang;
-using namespace clang::driver;
-
-// This function isn't referenced outside its translation unit, but it
-// can't use the "static" keyword because its address is used for
-// GetMainExecutable (since some platforms don't support taking the
-// address of main, and some platforms can't implement GetMainExecutable
-// without being given the address of a function in the main executable).
-llvm::sys::Path GetExecutablePath(const char *Argv0) {
-  // This just needs to be some symbol in the binary; C++ doesn't
-  // allow taking the address of ::main however.
-  void *MainAddr = (void*) (intptr_t) GetExecutablePath;
-  return llvm::sys::Path::GetMainExecutable(Argv0, MainAddr);
-}
-
-static int Execute(llvm::Module *Mod, char * const *envp) {
-  llvm::InitializeNativeTarget();
-
-  std::string Error;
-  OwningPtr<llvm::ExecutionEngine> EE(
-    llvm::ExecutionEngine::createJIT(Mod, &Error));
-  if (!EE) {
-    llvm::errs() << "unable to make execution engine: " << Error << "\n";
-    return 255;
-  }
-
-  llvm::Function *EntryFn = Mod->getFunction("main");
-  if (!EntryFn) {
-    llvm::errs() << "'main' function not found in module.\n";
-    return 255;
-  }
-
-  // FIXME: Support passing arguments.
-  std::vector<std::string> Args;
-  Args.push_back(Mod->getModuleIdentifier());
-
-  return EE->runFunctionAsMain(EntryFn, Args, envp);
-}
-
-int main(int argc, const char **argv, char * const *envp) {
-  void *MainAddr = (void*) (intptr_t) GetExecutablePath;
-  llvm::sys::Path Path = GetExecutablePath(argv[0]);
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
-  TextDiagnosticPrinter *DiagClient =
-    new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
-
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
-  DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagClient);
-  Driver TheDriver(Path.str(), llvm::sys::getProcessTriple(), "a.out", Diags);
-  TheDriver.setTitle("clang interpreter");
-
-  // FIXME: This is a hack to try to force the driver to do something we can
-  // recognize. We need to extend the driver library to support this use model
-  // (basically, exactly one input, and the operation mode is hard wired).
-  SmallVector<const char *, 16> Args(argv, argv + argc);
-  Args.push_back("-fsyntax-only");
-  OwningPtr<Compilation> C(TheDriver.BuildCompilation(Args));
-  if (!C)
-    return 0;
-
-  // FIXME: This is copied from ASTUnit.cpp; simplify and eliminate.
-
-  // We expect to get back exactly one command job, if we didn't something
-  // failed. Extract that job from the compilation.
-  const driver::JobList &Jobs = C->getJobs();
-  if (Jobs.size() != 1 || !isa<driver::Command>(*Jobs.begin())) {
-    SmallString<256> Msg;
-    llvm::raw_svector_ostream OS(Msg);
-    C->PrintJob(OS, C->getJobs(), "; ", true);
-    Diags.Report(diag::err_fe_expected_compiler_job) << OS.str();
-    return 1;
-  }
-
-  const driver::Command *Cmd = cast<driver::Command>(*Jobs.begin());
-  if (llvm::StringRef(Cmd->getCreator().getName()) != "clang") {
-    Diags.Report(diag::err_fe_expected_clang_command);
-    return 1;
-  }
-
-  // Initialize a compiler invocation object from the clang (-cc1) arguments.
-  const driver::ArgStringList &CCArgs = Cmd->getArguments();
-  OwningPtr<CompilerInvocation> CI(new CompilerInvocation);
-  CompilerInvocation::CreateFromArgs(*CI,
-                                     const_cast<const char **>(CCArgs.data()),
-                                     const_cast<const char **>(CCArgs.data()) +
-                                       CCArgs.size(),
-                                     Diags);
-
-  // Show the invocation, with -v.
-  if (CI->getHeaderSearchOpts().Verbose) {
-    llvm::errs() << "clang invocation:\n";
-    C->PrintJob(llvm::errs(), C->getJobs(), "\n", true);
-    llvm::errs() << "\n";
-  }
-
-  // FIXME: This is copied from cc1_main.cpp; simplify and eliminate.
-
-  // Create a compiler instance to handle the actual work.
-  CompilerInstance Clang;
-  Clang.setInvocation(CI.take());
-
-  // Create the compilers actual diagnostics engine.
-  Clang.createDiagnostics();
-  if (!Clang.hasDiagnostics())
-    return 1;
-
-  // Infer the builtin include path if unspecified.
-  if (Clang.getHeaderSearchOpts().UseBuiltinIncludes &&
-      Clang.getHeaderSearchOpts().ResourceDir.empty())
-    Clang.getHeaderSearchOpts().ResourceDir =
-      CompilerInvocation::GetResourcesPath(argv[0], MainAddr);
-
-  // Create and execute the frontend to generate an LLVM bitcode module.
-  OwningPtr<CodeGenAction> Act(new EmitLLVMOnlyAction());
-  if (!Clang.ExecuteAction(*Act))
-    return 1;
-
-  int Res = 255;
-  if (llvm::Module *Module = Act->takeModule())
-    Res = Execute(Module, envp);
-
-  // Shutdown.
-
-  llvm::llvm_shutdown();
-
-  return Res;
-}

Modified: trunk/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -152,6 +152,11 @@
     ObjCObjArg,  // '@'
     ObjCBeg = ObjCObjArg, ObjCEnd = ObjCObjArg,
 
+    // FreeBSD specific specifiers
+    FreeBSDbArg,
+    FreeBSDDArg,
+    FreeBSDrArg,
+
     // GlibC specific specifiers.
     PrintErrno,   // 'm'
 

Modified: trunk/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def	2015-06-20 23:40:02 UTC (rev 7062)
@@ -70,6 +70,8 @@
 //  f -> this is a libc/libm function without the '__builtin_' prefix. It can
 //       be followed by ':headername:' to state which header this function
 //       comes from.
+//  i -> this is a runtime library implemented function without the
+//       '__builtin_' prefix. It will be implemented in compiter-rt or libgcc.
 //  p:N: -> this is a printf-like function whose Nth argument is the format
 //          string.
 //  P:N: -> similar to the p:N: attribute, but the function is like vprintf

Modified: trunk/contrib/llvm/tools/clang/include/clang/Basic/Builtins.h
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Basic/Builtins.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Basic/Builtins.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -128,6 +128,13 @@
     return strchr(GetRecord(ID).Attributes, 'f') != 0;
   }
 
+  /// \brief Determines whether this builtin is a predefined compiler-rt/libgcc
+  /// function, such as "__clear_cache", where we know the signature a
+  /// priori.
+  bool isPredefinedRuntimeFunction(unsigned ID) const {
+    return strchr(GetRecord(ID).Attributes, 'i') != 0;
+  }
+
   /// \brief Determines whether this builtin has custom typechecking.
   bool hasCustomTypechecking(unsigned ID) const {
     return strchr(GetRecord(ID).Attributes, 't') != 0;

Modified: trunk/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsAArch64.def
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsAArch64.def	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsAArch64.def	2015-06-20 23:40:02 UTC (rev 7062)
@@ -15,4 +15,4 @@
 // The format of this database matches clang/Basic/Builtins.def.
 
 // In libgcc
-BUILTIN(__clear_cache, "vv*v*", "")
+BUILTIN(__clear_cache, "vv*v*", "i")

Modified: trunk/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def	2015-06-20 23:40:02 UTC (rev 7062)
@@ -15,7 +15,7 @@
 // The format of this database matches clang/Basic/Builtins.def.
 
 // In libgcc
-BUILTIN(__clear_cache, "v.", "")
+BUILTIN(__clear_cache, "v.", "i")
 BUILTIN(__builtin_thread_pointer, "v*", "")
 
 // Saturating arithmetic

Modified: trunk/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.def
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.def	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.def	2015-06-20 23:40:02 UTC (rev 7062)
@@ -84,6 +84,7 @@
 LANGOPT(RTTI              , 1, 1, "run-time type information")
 LANGOPT(MSBitfields       , 1, 0, "Microsoft-compatible structure layout")
 LANGOPT(Freestanding, 1, 0, "freestanding implementation")
+LANGOPT(FormatExtensions  , 1, 0, "FreeBSD format extensions")
 LANGOPT(NoBuiltin         , 1, 0, "disable builtin functions")
 
 BENIGN_LANGOPT(ThreadsafeStatics , 1, 1, "thread-safe static initializers")

Modified: trunk/contrib/llvm/tools/clang/include/clang/Basic/Version.inc.in
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Basic/Version.inc.in	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Basic/Version.inc.in	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#define CLANG_VERSION @CLANG_VERSION@
-#define CLANG_VERSION_MAJOR @CLANG_VERSION_MAJOR@
-#define CLANG_VERSION_MINOR @CLANG_VERSION_MINOR@
-#if @CLANG_HAS_VERSION_PATCHLEVEL@
-#define CLANG_VERSION_PATCHLEVEL @CLANG_VERSION_PATCHLEVEL@
-#endif

Modified: trunk/contrib/llvm/tools/clang/include/clang/Config/config.h.cmake
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Config/config.h.cmake	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Config/config.h.cmake	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-/* Bug report URL. */
-#define BUG_REPORT_URL "${BUG_REPORT_URL}"
-
-/* Relative directory for resource files */
-#define CLANG_RESOURCE_DIR "${CLANG_RESOURCE_DIR}"
-
-/* Directories clang will search for headers */
-#define C_INCLUDE_DIRS "${C_INCLUDE_DIRS}"
-
-/* Default <path> to all compiler invocations for --sysroot=<path>. */
-#define DEFAULT_SYSROOT "${DEFAULT_SYSROOT}"
-
-/* Directory where gcc is installed. */
-#define GCC_INSTALL_PREFIX "${GCC_INSTALL_PREFIX}"

Modified: trunk/contrib/llvm/tools/clang/include/clang/Config/config.h.in
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Config/config.h.in	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Config/config.h.in	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-/* include/clang/Config/config.h.in. */
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-/* Bug report URL. */
-#undef BUG_REPORT_URL
-
-/* Relative directory for resource files */
-#undef CLANG_RESOURCE_DIR
-
-/* Directories clang will search for headers */
-#undef C_INCLUDE_DIRS
-
-/* Linker version detected at compile time. */
-#undef HOST_LINK_VERSION
-
-/* Default <path> to all compiler invocations for --sysroot=<path>. */
-#undef DEFAULT_SYSROOT
-
-/* Directory where gcc is installed. */
-#undef GCC_INSTALL_PREFIX
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/include/clang/Driver/Options.td
===================================================================
--- trunk/contrib/llvm/tools/clang/include/clang/Driver/Options.td	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/include/clang/Driver/Options.td	2015-06-20 23:40:02 UTC (rev 7062)
@@ -470,6 +470,8 @@
 
 def ffreestanding : Flag<["-"], "ffreestanding">, Group<f_Group>, Flags<[CC1Option]>,
   HelpText<"Assert that the compilation takes place in a freestanding environment">;
+def fformat_extensions: Flag<["-"], "fformat-extensions">, Group<f_Group>, Flags<[CC1Option]>,
+  HelpText<"Enable FreeBSD kernel specific format string extensions">;
 def fgnu_keywords : Flag<["-"], "fgnu-keywords">, Group<f_Group>, Flags<[CC1Option]>,
   HelpText<"Allow GNU-extension keywords regardless of language standard">;
 def fgnu89_inline : Flag<["-"], "fgnu89-inline">, Group<f_Group>, Flags<[CC1Option]>,

Modified: trunk/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -521,6 +521,11 @@
   // Objective-C specific specifiers.
   case ObjCObjArg: return "@";
 
+  // FreeBSD specific specifiers.
+  case FreeBSDbArg: return "b";
+  case FreeBSDDArg: return "D";
+  case FreeBSDrArg: return "r";
+
   // GlibC specific specifiers.
   case PrintErrno: return "m";
   }
@@ -599,6 +604,7 @@
         case ConversionSpecifier::xArg:
         case ConversionSpecifier::XArg:
         case ConversionSpecifier::nArg:
+        case ConversionSpecifier::FreeBSDrArg:
           return true;
         default:
           return false;
@@ -627,6 +633,7 @@
         case ConversionSpecifier::nArg:
         case ConversionSpecifier::cArg:
         case ConversionSpecifier::sArg:
+        case ConversionSpecifier::FreeBSDrArg:
         case ConversionSpecifier::ScanListArg:
           return true;
         default:
@@ -730,6 +737,9 @@
     case ConversionSpecifier::SArg:
       return LangOpt.ObjC1 || LangOpt.ObjC2;
     case ConversionSpecifier::InvalidSpecifier:
+    case ConversionSpecifier::FreeBSDbArg:
+    case ConversionSpecifier::FreeBSDDArg:
+    case ConversionSpecifier::FreeBSDrArg:
     case ConversionSpecifier::PrintErrno:
     case ConversionSpecifier::DArg:
     case ConversionSpecifier::OArg:

Modified: trunk/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -198,10 +198,25 @@
     case '@': k = ConversionSpecifier::ObjCObjArg; break;
     // Glibc specific.
     case 'm': k = ConversionSpecifier::PrintErrno; break;
+    // FreeBSD format extensions
+    case 'b':
+      if (LO.FormatExtensions)
+        k = ConversionSpecifier::FreeBSDbArg; // int followed by char *
+      break;
+    case 'r':
+      if (LO.FormatExtensions)
+        k = ConversionSpecifier::FreeBSDrArg;
+      break;
+    case 'y':
+      if (LO.FormatExtensions)
+        k = ConversionSpecifier::iArg;
+      break;
     // Apple-specific
     case 'D':
       if (Target.getTriple().isOSDarwin())
         k = ConversionSpecifier::DArg;
+      else if (LO.FormatExtensions)
+        k = ConversionSpecifier::FreeBSDDArg; // u_char * followed by char *
       break;
     case 'O':
       if (Target.getTriple().isOSDarwin())
@@ -216,6 +231,10 @@
   FS.setConversionSpecifier(CS);
   if (CS.consumesDataArgument() && !FS.usesPositionalArg())
     FS.setArgIndex(argIndex++);
+  // FreeBSD extension
+  if (k == ConversionSpecifier::FreeBSDbArg ||
+      k == ConversionSpecifier::FreeBSDDArg)
+    argIndex++;
 
   if (k == ConversionSpecifier::InvalidSpecifier) {
     // Assume the conversion takes one argument.
@@ -597,6 +616,7 @@
   case ConversionSpecifier::GArg:
   case ConversionSpecifier::aArg:
   case ConversionSpecifier::AArg:
+  case ConversionSpecifier::FreeBSDrArg:
     return true;
 
   default:
@@ -622,6 +642,7 @@
   case ConversionSpecifier::FArg:
   case ConversionSpecifier::gArg:
   case ConversionSpecifier::GArg:
+  case ConversionSpecifier::FreeBSDrArg:
     return true;
 
   default:

Modified: trunk/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Basic/Targets.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Basic/Targets.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -249,10 +249,11 @@
 
     unsigned Release = Triple.getOSMajorVersion();
     if (Release == 0U)
-      Release = 9;
+      Release = 8;
 
-    Builder.defineMacro("__MidnightBSD__", Twine(Release));
-    Builder.defineMacro("__MidnightBSD__cc_version", Twine(Release * 100000U + 1U));
+	Builder.defineMacro("__MidnightBSD__", Twine(Release));
+	Builder.defineMacro("__MidnightBSD__cc_version", Twine(Release * 100000U + 1U));
+
     Builder.defineMacro("__FreeBSD__", Twine(Release));
     Builder.defineMacro("__FreeBSD_cc_version", Twine(Release * 100000U + 1U));
     Builder.defineMacro("__KPRINTF_ATTRIBUTE__");
@@ -3535,8 +3536,8 @@
     // the kernel which on armv6 and newer uses ldrex and strex. The net result
     // is that if we assume the kernel is at least as recent as the hardware,
     // it is safe to use atomic instructions on armv6 and newer.
-    if (T.getOS() != llvm::Triple::Linux)
-     return false;
+    if (T.getOS() != llvm::Triple::Linux && T.getOS() != llvm::Triple::FreeBSD)
+      return false;
     StringRef ArchName = T.getArchName();
     if (T.getArch() == llvm::Triple::arm) {
       if (!ArchName.startswith("armv"))

Modified: trunk/contrib/llvm/tools/clang/lib/Basic/Version.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Basic/Version.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Basic/Version.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -36,7 +36,7 @@
 
   // If the SVN_REPOSITORY is empty, try to use the SVN keyword. This helps us
   // pick up a tag in an SVN export, for example.
-  static StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_33/final/lib/Basic/Version.cpp $");
+  static StringRef SVNRepository("$URL: http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_33/final/lib/Basic/Version.cpp $");
   if (URL.empty()) {
     URL = SVNRepository.slice(SVNRepository.find(':'),
                               SVNRepository.find("/lib/Basic"));
@@ -124,8 +124,10 @@
   OS << "clang version " CLANG_VERSION_STRING " "
      << getClangFullRepositoryVersion();
 
+#ifdef CLANG_VENDOR_SUFFIX
+  OS << CLANG_VENDOR_SUFFIX;
+#elif defined(CLANG_VENDOR)
   // If vendor supplied, include the base LLVM version as well.
-#ifdef CLANG_VENDOR
   OS << " (based on LLVM " << PACKAGE_VERSION << ")";
 #endif
 

Modified: trunk/contrib/llvm/tools/clang/lib/CodeGen/CGAtomic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/CodeGen/CGAtomic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/CodeGen/CGAtomic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -15,6 +15,7 @@
 #include "CGCall.h"
 #include "CodeGenModule.h"
 #include "clang/AST/ASTContext.h"
+#include "llvm/ADT/StringExtras.h"
 #include "llvm/IR/DataLayout.h"
 #include "llvm/IR/Intrinsics.h"
 #include "llvm/IR/Operator.h"
@@ -317,6 +318,21 @@
   return DeclPtr;
 }
 
+static void
+AddDirectArgument(CodeGenFunction &CGF, CallArgList &Args,
+                  bool UseOptimizedLibcall, llvm::Value *Val, QualType ValTy) {
+  if (UseOptimizedLibcall) {
+    // Load value and pass it to the function directly.
+    unsigned Align = CGF.getContext().getTypeAlignInChars(ValTy).getQuantity();
+    Val = CGF.EmitLoadOfScalar(Val, false, Align, ValTy);
+    Args.add(RValue::get(Val), ValTy);
+  } else {
+    // Non-optimized functions always take a reference.
+    Args.add(RValue::get(CGF.EmitCastToVoidPtr(Val)),
+                         CGF.getContext().VoidPtrTy);
+  }
+}
+
 RValue CodeGenFunction::EmitAtomicExpr(AtomicExpr *E, llvm::Value *Dest) {
   QualType AtomicTy = E->getPtr()->getType()->getPointeeType();
   QualType MemTy = AtomicTy;
@@ -424,24 +440,49 @@
 
   // Use a library call.  See: http://gcc.gnu.org/wiki/Atomic/GCCMM/LIbrary .
   if (UseLibcall) {
+    bool UseOptimizedLibcall = false;
+    switch (E->getOp()) {
+    case AtomicExpr::AO__c11_atomic_fetch_add:
+    case AtomicExpr::AO__atomic_fetch_add:
+    case AtomicExpr::AO__c11_atomic_fetch_and:
+    case AtomicExpr::AO__atomic_fetch_and:
+    case AtomicExpr::AO__c11_atomic_fetch_or:
+    case AtomicExpr::AO__atomic_fetch_or:
+    case AtomicExpr::AO__c11_atomic_fetch_sub:
+    case AtomicExpr::AO__atomic_fetch_sub:
+    case AtomicExpr::AO__c11_atomic_fetch_xor:
+    case AtomicExpr::AO__atomic_fetch_xor:
+      // For these, only library calls for certain sizes exist.
+      UseOptimizedLibcall = true;
+      break;
+    default:
+      // Only use optimized library calls for sizes for which they exist.
+      if (Size == 1 || Size == 2 || Size == 4 || Size == 8)
+        UseOptimizedLibcall = true;
+      break;
+    }
 
-    SmallVector<QualType, 5> Params;
     CallArgList Args;
-    // Size is always the first parameter
-    Args.add(RValue::get(llvm::ConstantInt::get(SizeTy, Size)),
-             getContext().getSizeType());
-    // Atomic address is always the second parameter
+    if (!UseOptimizedLibcall) {
+      // For non-optimized library calls, the size is the first parameter
+      Args.add(RValue::get(llvm::ConstantInt::get(SizeTy, Size)),
+               getContext().getSizeType());
+    }
+    // Atomic address is the first or second parameter
     Args.add(RValue::get(EmitCastToVoidPtr(Ptr)),
              getContext().VoidPtrTy);
 
-    const char* LibCallName;
-    QualType RetTy = getContext().VoidTy;
+    std::string LibCallName;
+    QualType RetTy;
+    bool HaveRetTy = false;
     switch (E->getOp()) {
     // There is only one libcall for compare an exchange, because there is no
     // optimisation benefit possible from a libcall version of a weak compare
     // and exchange.
-    // bool __atomic_compare_exchange(size_t size, void *obj, void *expected,
+    // bool __atomic_compare_exchange(size_t size, void *mem, void *expected,
     //                                void *desired, int success, int failure)
+    // bool __atomic_compare_exchange_N(T *mem, T *expected, T desired,
+    //                                  int success, int failure)
     case AtomicExpr::AO__c11_atomic_compare_exchange_weak:
     case AtomicExpr::AO__c11_atomic_compare_exchange_strong:
     case AtomicExpr::AO__atomic_compare_exchange:
@@ -448,10 +489,10 @@
     case AtomicExpr::AO__atomic_compare_exchange_n:
       LibCallName = "__atomic_compare_exchange";
       RetTy = getContext().BoolTy;
+      HaveRetTy = true;
       Args.add(RValue::get(EmitCastToVoidPtr(Val1)),
                getContext().VoidPtrTy);
-      Args.add(RValue::get(EmitCastToVoidPtr(Val2)),
-               getContext().VoidPtrTy);
+      AddDirectArgument(*this, Args, UseOptimizedLibcall, Val2, MemTy);
       Args.add(RValue::get(Order),
                getContext().IntTy);
       Order = OrderFail;
@@ -458,33 +499,78 @@
       break;
     // void __atomic_exchange(size_t size, void *mem, void *val, void *return,
     //                        int order)
+    // T __atomic_exchange_N(T *mem, T val, int order)
     case AtomicExpr::AO__c11_atomic_exchange:
     case AtomicExpr::AO__atomic_exchange_n:
     case AtomicExpr::AO__atomic_exchange:
       LibCallName = "__atomic_exchange";
-      Args.add(RValue::get(EmitCastToVoidPtr(Val1)),
-               getContext().VoidPtrTy);
-      Args.add(RValue::get(EmitCastToVoidPtr(Dest)),
-               getContext().VoidPtrTy);
+      AddDirectArgument(*this, Args, UseOptimizedLibcall, Val1, MemTy);
       break;
     // void __atomic_store(size_t size, void *mem, void *val, int order)
+    // void __atomic_store_N(T *mem, T val, int order)
     case AtomicExpr::AO__c11_atomic_store:
     case AtomicExpr::AO__atomic_store:
     case AtomicExpr::AO__atomic_store_n:
       LibCallName = "__atomic_store";
-      Args.add(RValue::get(EmitCastToVoidPtr(Val1)),
-               getContext().VoidPtrTy);
+      RetTy = getContext().VoidTy;
+      HaveRetTy = true;
+      AddDirectArgument(*this, Args, UseOptimizedLibcall, Val1, MemTy);
       break;
     // void __atomic_load(size_t size, void *mem, void *return, int order)
+    // T __atomic_load_N(T *mem, int order)
     case AtomicExpr::AO__c11_atomic_load:
     case AtomicExpr::AO__atomic_load:
     case AtomicExpr::AO__atomic_load_n:
       LibCallName = "__atomic_load";
-      Args.add(RValue::get(EmitCastToVoidPtr(Dest)),
-               getContext().VoidPtrTy);
       break;
+    // T __atomic_fetch_add_N(T *mem, T val, int order)
+    case AtomicExpr::AO__c11_atomic_fetch_add:
+    case AtomicExpr::AO__atomic_fetch_add:
+      LibCallName = "__atomic_fetch_add";
+      AddDirectArgument(*this, Args, UseOptimizedLibcall, Val1, MemTy);
+      break;
+    // T __atomic_fetch_and_N(T *mem, T val, int order)
+    case AtomicExpr::AO__c11_atomic_fetch_and:
+    case AtomicExpr::AO__atomic_fetch_and:
+      LibCallName = "__atomic_fetch_and";
+      AddDirectArgument(*this, Args, UseOptimizedLibcall, Val1, MemTy);
+      break;
+    // T __atomic_fetch_or_N(T *mem, T val, int order)
+    case AtomicExpr::AO__c11_atomic_fetch_or:
+    case AtomicExpr::AO__atomic_fetch_or:
+      LibCallName = "__atomic_fetch_or";
+      AddDirectArgument(*this, Args, UseOptimizedLibcall, Val1, MemTy);
+      break;
+    // T __atomic_fetch_sub_N(T *mem, T val, int order)
+    case AtomicExpr::AO__c11_atomic_fetch_sub:
+    case AtomicExpr::AO__atomic_fetch_sub:
+      LibCallName = "__atomic_fetch_sub";
+      AddDirectArgument(*this, Args, UseOptimizedLibcall, Val1, MemTy);
+      break;
+    // T __atomic_fetch_xor_N(T *mem, T val, int order)
+    case AtomicExpr::AO__c11_atomic_fetch_xor:
+    case AtomicExpr::AO__atomic_fetch_xor:
+      LibCallName = "__atomic_fetch_xor";
+      AddDirectArgument(*this, Args, UseOptimizedLibcall, Val1, MemTy);
+      break;
     default: return EmitUnsupportedRValue(E, "atomic library call");
     }
+
+    // Optimized functions have the size in their name.
+    if (UseOptimizedLibcall)
+      LibCallName += "_" + llvm::utostr(Size);
+    // By default, assume we return a value of the atomic type.
+    if (!HaveRetTy) {
+      if (UseOptimizedLibcall) {
+        // Value is returned directly.
+        RetTy = MemTy;
+      } else {
+        // Value is returned through parameter before the order.
+        RetTy = getContext().VoidTy;
+        Args.add(RValue::get(EmitCastToVoidPtr(Dest)),
+                 getContext().VoidPtrTy);
+      }
+    }
     // order is always the last parameter
     Args.add(RValue::get(Order),
              getContext().IntTy);
@@ -495,7 +581,7 @@
     llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FuncInfo);
     llvm::Constant *Func = CGM.CreateRuntimeFunction(FTy, LibCallName);
     RValue Res = EmitCall(FuncInfo, Func, ReturnValueSlot(), Args);
-    if (E->isCmpXChg())
+    if (!RetTy->isVoidType())
       return Res;
     if (E->getType()->isVoidType())
       return RValue::get(0);

Modified: trunk/contrib/llvm/tools/clang/lib/Driver/Driver.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Driver/Driver.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Driver/Driver.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -723,7 +723,7 @@
       break;
 
     case llvm::Triple::x86_64:
-      llvm::outs() << "x86_64" << "\n";
+      llvm::outs() << "." << "\n";
       break;
 
     case llvm::Triple::ppc64:

Modified: trunk/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -2754,6 +2754,7 @@
 
   // Forward -f (flag) options which we can pass directly.
   Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
+  Args.AddLastArg(CmdArgs, options::OPT_fformat_extensions);
   Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);
   Args.AddLastArg(CmdArgs, options::OPT_flimit_debug_info);
   Args.AddLastArg(CmdArgs, options::OPT_fno_limit_debug_info);
@@ -5484,7 +5485,7 @@
 
   if (ToolChain.getArch() == llvm::Triple::ppc) {
     CmdArgs.push_back("-m");
-    CmdArgs.push_back("elf32ppc_fbsd");
+    CmdArgs.push_back("elf32ppc");
   }
 
   if (Output.isFilename()) {

Modified: trunk/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1241,6 +1241,7 @@
   Opts.ShortWChar = Args.hasArg(OPT_fshort_wchar);
   Opts.ShortEnums = Args.hasArg(OPT_fshort_enums);
   Opts.Freestanding = Args.hasArg(OPT_ffreestanding);
+  Opts.FormatExtensions = Args.hasArg(OPT_fformat_extensions);
   Opts.NoBuiltin = Args.hasArg(OPT_fno_builtin) || Opts.Freestanding;
   Opts.AssumeSaneOperatorNew = !Args.hasArg(OPT_fno_assume_sane_operator_new);
   Opts.HeinousExtensions = Args.hasArg(OPT_fheinous_gnu_extensions);

Modified: trunk/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -14,6 +14,7 @@
 #include "clang/Frontend/Utils.h"
 #include "clang/Basic/FileManager.h"
 #include "clang/Basic/LangOptions.h"
+#include "clang/Basic/Version.h"
 #include "clang/Config/config.h" // C_INCLUDE_DIRS
 #include "clang/Lex/HeaderSearch.h"
 #include "clang/Lex/HeaderSearchOptions.h"
@@ -328,6 +329,9 @@
 #endif
     }
     break;
+  case llvm::Triple::FreeBSD:
+    AddPath("/usr/include/clang/" CLANG_VERSION_STRING, System, false);
+    break;
       
   default:
     break;
@@ -419,7 +423,10 @@
   case llvm::Triple::FreeBSD:
     // FreeBSD 8.0
     // FreeBSD 7.3
-    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2", "", "", "", triple);
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2",
+                                "", "", "", triple);
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2/backward",
+                                "", "", "", triple);
     break;
   case llvm::Triple::OpenBSD: {
     std::string t = triple.getTriple();

Modified: trunk/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -2624,6 +2624,40 @@
     CoveredArgs.set(argIndex);
   }
 
+  // FreeBSD extensions
+  if (CS.getKind() == ConversionSpecifier::FreeBSDbArg ||
+      CS.getKind() == ConversionSpecifier::FreeBSDDArg) { 
+    // claim the second argument
+    CoveredArgs.set(argIndex + 1);
+
+    // Now type check the data expression that matches the
+    // format specifier.
+    const Expr *Ex = getDataArg(argIndex);
+    const analyze_printf::ArgType &AT = 
+      (CS.getKind() == ConversionSpecifier::FreeBSDbArg) ?
+        ArgType(S.Context.IntTy) : ArgType::CStrTy;
+    if (AT.isValid() && !AT.matchesType(S.Context, Ex->getType()))
+      S.Diag(getLocationOfByte(CS.getStart()),
+             diag::warn_printf_conversion_argument_type_mismatch)
+        << AT.getRepresentativeType(S.Context) << Ex->getType()
+        << getSpecifierRange(startSpecifier, specifierLen)
+        << Ex->getSourceRange();
+
+    // Now type check the data expression that matches the
+    // format specifier.
+    Ex = getDataArg(argIndex + 1);
+    const analyze_printf::ArgType &AT2 = ArgType::CStrTy;
+    if (AT2.isValid() && !AT2.matchesType(S.Context, Ex->getType()))
+      S.Diag(getLocationOfByte(CS.getStart()),
+             diag::warn_printf_conversion_argument_type_mismatch)
+        << AT2.getRepresentativeType(S.Context) << Ex->getType()
+        << getSpecifierRange(startSpecifier, specifierLen)
+        << Ex->getSourceRange();
+
+     return true;
+  }
+  // END OF FREEBSD EXTENSIONS
+
   // Check for using an Objective-C specific conversion specifier
   // in a non-ObjC literal.
   if (!ObjCContext && CS.isObjCArg()) {

Modified: trunk/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -8671,7 +8671,8 @@
 
   // Builtin functions cannot be defined.
   if (unsigned BuiltinID = FD->getBuiltinID()) {
-    if (!Context.BuiltinInfo.isPredefinedLibFunction(BuiltinID)) {
+    if (!Context.BuiltinInfo.isPredefinedLibFunction(BuiltinID) &&
+        !Context.BuiltinInfo.isPredefinedRuntimeFunction(BuiltinID)) {
       Diag(FD->getLocation(), diag::err_builtin_definition) << FD;
       FD->setInvalidDecl();
     }
@@ -10295,7 +10296,8 @@
     Tag->setTopLevelDeclInObjCContainer();
 
   // Notify the consumer that we've defined a tag.
-  Consumer.HandleTagDeclDefinition(Tag);
+  if (!Tag->isInvalidDecl())
+    Consumer.HandleTagDeclDefinition(Tag);
 }
 
 void Sema::ActOnObjCContainerFinishDefinition() {

Modified: trunk/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -774,6 +774,11 @@
                                           InitListExpr *StructuredList,
                                           unsigned &StructuredIndex) {
   Expr *expr = IList->getInit(Index);
+
+  if (ElemType->isReferenceType())
+    return CheckReferenceType(Entity, IList, ElemType, Index,
+                              StructuredList, StructuredIndex);
+
   if (InitListExpr *SubInitList = dyn_cast<InitListExpr>(expr)) {
     if (!ElemType->isRecordType() || ElemType->isAggregateType()) {
       unsigned newIndex = 0;
@@ -793,14 +798,14 @@
     // C++ initialization is handled later.
   }
 
-  if (ElemType->isScalarType()) {
+  // FIXME: Need to handle atomic aggregate types with implicit init lists.
+  if (ElemType->isScalarType() || ElemType->isAtomicType())
     return CheckScalarType(Entity, IList, ElemType, Index,
                            StructuredList, StructuredIndex);
-  } else if (ElemType->isReferenceType()) {
-    return CheckReferenceType(Entity, IList, ElemType, Index,
-                              StructuredList, StructuredIndex);
-  }
 
+  assert((ElemType->isRecordType() || ElemType->isVectorType() ||
+          ElemType->isArrayType()) && "Unexpected type");
+
   if (const ArrayType *arrayType = SemaRef.Context.getAsArrayType(ElemType)) {
     // arrayType can be incomplete if we're initializing a flexible
     // array member.  There's nothing we can do with the completed

Modified: trunk/contrib/llvm/tools/clang/runtime/compiler-rt/clang_linux_test_input.c
===================================================================
--- trunk/contrib/llvm/tools/clang/runtime/compiler-rt/clang_linux_test_input.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/runtime/compiler-rt/clang_linux_test_input.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// This file is used to check if we can produce working executables
-// for i386 and x86_64 archs on Linux.
-#include <stdlib.h>
-int main(){}

Modified: trunk/contrib/llvm/tools/clang/svn-commit.2.tmp
===================================================================
--- trunk/contrib/llvm/tools/clang/svn-commit.2.tmp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/svn-commit.2.tmp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-clang 3.3
---This line, and those below, will be ignored--
-> Description of fields to fill in above:                     76 columns --|
-> PR:            If a GNATS PR is affected by the change.
-> Submitted by:  If someone else sent in the change.
-> Reviewed by:   If someone else reviewed your modification.
-> Approved by:   If you needed approval for this commit.
-> Obtained from: If the change is from a third party.
-> MFC after:     N [day[s]|week[s]|month[s]].  Request a reminder email.
-> Security:      Vulnerability reference (one per line) or description.
-> Sponsored by:  If the change was sponsored by an organization.
-> Empty fields above will be automatically removed.
-
-A    .

Modified: trunk/contrib/llvm/tools/clang/svn-commit.tmp
===================================================================
--- trunk/contrib/llvm/tools/clang/svn-commit.tmp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/svn-commit.tmp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-Vendor import of clang 3.3
---This line, and those below, will be ignored--
-> Description of fields to fill in above:                     76 columns --|
-> PR:            If a GNATS PR is affected by the change.
-> Submitted by:  If someone else sent in the change.
-> Reviewed by:   If someone else reviewed your modification.
-> Approved by:   If you needed approval for this commit.
-> Obtained from: If the change is from a third party.
-> MFC after:     N [day[s]|week[s]|month[s]].  Request a reminder email.
-> Security:      Vulnerability reference (one per line) or description.
-> Sponsored by:  If the change was sponsored by an organization.
-> Empty fields above will be automatically removed.
-
-A    .

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/Common.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/Common.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/Common.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,110 +0,0 @@
-#if __has_feature(objc_arr)
-#define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode")))
-#else
-#define NS_AUTOMATED_REFCOUNT_UNAVAILABLE
-#endif
-
-#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
-#define CF_CONSUMED __attribute__((cf_consumed))
-#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
-
-#define NS_INLINE static __inline__ __attribute__((always_inline))
-#define nil ((void*) 0)
-#define NULL ((void*)0)
-
-typedef int BOOL;
-typedef unsigned NSUInteger;
-typedef int int32_t;
-typedef unsigned char uint8_t;
-typedef int32_t UChar32;
-typedef unsigned char UChar;
-
-typedef struct _NSZone NSZone;
-
-typedef const void * CFTypeRef;
-CFTypeRef CFRetain(CFTypeRef cf);
-CFTypeRef CFMakeCollectable(CFTypeRef cf) NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-
-NS_INLINE NS_RETURNS_RETAINED id NSMakeCollectable(CFTypeRef CF_CONSUMED cf) NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (id)retain NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (NSUInteger)retainCount NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (oneway void)release NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (id)autorelease NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
- at end
-
- at interface NSObject <NSObject> {}
-- (id)init;
-
-+ (id)new;
-+ (id)alloc;
-- (void)dealloc;
-
-- (void)finalize;
-
-- (id)copy;
-- (id)mutableCopy;
- at end
-
-NS_AUTOMATED_REFCOUNT_UNAVAILABLE
- at interface NSAutoreleasePool : NSObject {
- at private
-    void    *_token;
-    void    *_reserved3;
-    void    *_reserved2;
-    void    *_reserved;
-}
-
-+ (void)addObject:(id)anObject;
-
-- (void)addObject:(id)anObject;
-
-- (void)drain;
-
- at end
-
-typedef const void* objc_objectptr_t; 
-extern __attribute__((ns_returns_retained)) id objc_retainedObject(objc_objectptr_t __attribute__((cf_consumed)) pointer);
-extern __attribute__((ns_returns_not_retained)) id objc_unretainedObject(objc_objectptr_t pointer);
-extern objc_objectptr_t objc_unretainedPointer(id object);
-
-#define dispatch_retain(object) ({ dispatch_object_t _o = (object); _dispatch_object_validate(_o); (void)[_o retain]; })
-#define dispatch_release(object) ({ dispatch_object_t _o = (object); _dispatch_object_validate(_o); [_o release]; })
-#define xpc_retain(object) ({ xpc_object_t _o = (object); _xpc_object_validate(_o); [_o retain]; })
-#define xpc_release(object) ({ xpc_object_t _o = (object); _xpc_object_validate(_o); [_o release]; })
-
-typedef id dispatch_object_t;
-typedef id xpc_object_t;
-
-void _dispatch_object_validate(dispatch_object_t object);
-void _xpc_object_validate(xpc_object_t object);
-
-#if __has_feature(objc_arc)
-
-NS_INLINE CF_RETURNS_RETAINED CFTypeRef CFBridgingRetain(id X) {
-    return (__bridge_retained CFTypeRef)X;
-}
-
-NS_INLINE id CFBridgingRelease(CFTypeRef CF_CONSUMED X) {
-    return (__bridge_transfer id)X;
-}
-
-#else
-
-NS_INLINE CF_RETURNS_RETAINED CFTypeRef CFBridgingRetain(id X) {
-    return X ? CFRetain((CFTypeRef)X) : NULL;
-}
-
-NS_INLINE id CFBridgingRelease(CFTypeRef CF_CONSUMED X) {
-    return [(id)CFMakeCollectable(X) autorelease];
-}
-
-#endif
-
-void *_Block_copy(const void *aBlock);
-void _Block_release(const void *aBlock);
-#define Block_copy(...) ((__typeof(__VA_ARGS__))_Block_copy((const void *)(__VA_ARGS__)))
-#define Block_release(...) _Block_release((const void *)(__VA_ARGS__))

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC-check-warn-nsalloc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC-check-warn-nsalloc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC-check-warn-nsalloc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -verify -no-ns-alloc-error -triple x86_64-apple-darwin10 -fobjc-gc-only %s
-// RUN: %clang_cc1 -arcmt-check -verify -no-ns-alloc-error -triple x86_64-apple-darwin10 -fobjc-gc-only -x objective-c++ %s
-// DISABLE: mingw32
-// rdar://10532541
-// XFAIL: *
-
-typedef unsigned NSUInteger;
-void *__strong NSAllocateCollectable(NSUInteger size, NSUInteger options);
-
-void test1() {
-  NSAllocateCollectable(100, 0); // expected-warning {{call returns pointer to GC managed memory; it will become unmanaged in ARC}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC-check.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC-check.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC-check.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 -fobjc-gc-only %s
-// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 -fobjc-gc-only -x objective-c++ %s
-// DISABLE: mingw32
-
-#define CF_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode")))
-typedef unsigned NSUInteger;
-typedef const void * CFTypeRef;
-CFTypeRef CFMakeCollectable(CFTypeRef cf) CF_AUTOMATED_REFCOUNT_UNAVAILABLE; // expected-note {{unavailable}}
-void *__strong NSAllocateCollectable(NSUInteger size, NSUInteger options);
-
-void test1(CFTypeRef *cft) {
-  CFTypeRef c = CFMakeCollectable(cft); // expected-error {{CFMakeCollectable will leak the object that it receives in ARC}} \
-                // expected-error {{unavailable}}
-  NSAllocateCollectable(100, 0); // expected-error {{call returns pointer to GC managed memory; it will become unmanaged in ARC}}
-}
-
- at interface I1 {
-  __strong void *gcVar; // expected-error {{GC managed memory will become unmanaged in ARC}}
-}
- at end;

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-arc-runtime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-arc-runtime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-arc-runtime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-#include "GC.h"
-
-void test1(CFTypeRef *cft) {
-  id x = NSMakeCollectable(cft);
-}
-
- at interface I1
- at end
-
- at implementation I1
--(void)dealloc {
-  // dealloc
-  test1(0);
-}
-
--(void)finalize {
-  // finalize
-  test1(0);
-}
- at end
-
- at interface I2
- at property (retain) id prop;
- at end
-
- at implementation I2
- at synthesize prop;
-
--(void)finalize {
-  self.prop = 0;
-  // finalize
-  test1(0);
-}
- at end
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface QQ {
-  __weak id s;
-  __weak QQ *q;
-}
- at end
-
- at interface I3
- at property (assign) I3 *__weak pw1, *__weak pw2;
- at property (assign) I3 *__strong ps;
- at property (assign) I3 * pds;
- at end
-
- at interface I4Impl {
-  I4Impl *pds2;
-}
- at property (assign) I4Impl *__weak pw1, *__weak pw2;
- at property (assign) I4Impl *__strong ps;
- at property (assign) I4Impl * pds;
- at property (assign) I4Impl * pds2;
- at end
-
- at implementation I4Impl
- at synthesize pw1, pw2, ps, pds, pds2;
-
--(void)test1:(CFTypeRef *)cft {
-  id x = NSMakeCollectable(cft);
-}
- at end
-
- at interface I5 {
-  __weak id prop;
-}
- at property (readonly) __weak id prop;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-arc-runtime.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-arc-runtime.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-arc-runtime.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-#include "GC.h"
-
-void test1(CFTypeRef *cft) {
-  id x = CFBridgingRelease(cft);
-}
-
- at interface I1
- at end
-
- at implementation I1
--(void)dealloc {
-  // dealloc
-  test1(0);
-}
-
- at end
-
- at interface I2
- at property (strong) id prop;
- at end
-
- at implementation I2
- at synthesize prop;
-
--(void)dealloc {
-  // finalize
-  test1(0);
-}
- at end
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface QQ {
-  __unsafe_unretained id s;
-  __unsafe_unretained QQ *q;
-}
- at end
-
- at interface I3
- at property (unsafe_unretained) I3 * pw1, * pw2;
- at property (strong) I3 * ps;
- at property (assign) I3 * pds;
- at end
-
- at interface I4Impl {
-  I4Impl *__strong pds2;
-}
- at property (unsafe_unretained) I4Impl * pw1, * pw2;
- at property (strong) I4Impl * ps;
- at property (strong) I4Impl * pds;
- at property (strong) I4Impl * pds2;
- at end
-
- at implementation I4Impl
- at synthesize pw1, pw2, ps, pds, pds2;
-
--(void)test1:(CFTypeRef *)cft {
-  id x = CFBridgingRelease(cft);
-}
- at end
-
- at interface I5 {
-  __unsafe_unretained id prop;
-}
- at property (unsafe_unretained, readonly)  id prop;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-finalize-removal.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-finalize-removal.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-finalize-removal.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c %s > %t
-// RUN: diff %t %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c++ %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-#include "GC.h"
-
-void test1(CFTypeRef *cft) {
-  id x = NSMakeCollectable(cft);
-}
-
- at interface I1
- at end
-
- at implementation I1
--(void)dealloc {
-  // dealloc
-  test1(0);
-}
-
--(void)finalize {
-  // finalize
-  test1(0);
-}
- at end
-
- at interface I2
- at property (retain) id prop;
- at end
-
- at implementation I2
- at synthesize prop;
-
--(void)finalize {
-  self.prop = 0;
-  // finalize
-  test1(0);
-}
- at end
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface QQ {
-  __weak id s;
-  __weak QQ *q;
-}
- at end
-
- at interface I3
- at property (assign) I3 *__weak pw1, *__weak pw2;
- at property (assign) I3 *__strong ps;
- at property (assign) I3 * pds;
- at end
-
- at interface I4Impl {
-  I4Impl *pds2;
-  I4Impl *pds3;
-  __weak I4Impl *pw3;
-  __weak I4Impl *pw4;
-}
- at property (assign) I4Impl *__weak pw1, *__weak pw2;
- at property (assign) I4Impl *__strong ps;
- at property (assign) I4Impl * pds;
- at property (assign) I4Impl * pds2;
- at property (readwrite) I4Impl * pds3;
- at property (readonly) I4Impl * pds4;
- at property (readonly) __weak I4Impl *pw3;
- at property (assign) __weak I4Impl *pw4;
- at end
-
- at implementation I4Impl
- at synthesize pw1, pw2, pw3, pw4, ps, pds, pds2, pds3, pds4;
-
--(void)test1:(CFTypeRef *)cft {
-  id x = NSMakeCollectable(cft);
-}
- at end
-
-// rdar://10532449
- at interface rdar10532449
- at property (assign) id assign_prop;
- at property (assign, readonly) id __strong strong_readonly_prop;
- at property (assign) id __weak weak_prop;
- at end
-
- at implementation rdar10532449
- at synthesize assign_prop, strong_readonly_prop, weak_prop;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-finalize-removal.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-finalize-removal.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC-no-finalize-removal.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c %s > %t
-// RUN: diff %t %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -no-finalize-removal -x objective-c++ %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-#include "GC.h"
-
-void test1(CFTypeRef *cft) {
-  id x = CFBridgingRelease(cft);
-}
-
- at interface I1
- at end
-
- at implementation I1
--(void)dealloc {
-  // dealloc
-  test1(0);
-}
-
-#if !__has_feature(objc_arc)
--(void)finalize {
-  // finalize
-  test1(0);
-}
-#endif
- at end
-
- at interface I2
- at property (strong) id prop;
- at end
-
- at implementation I2
- at synthesize prop;
-
-#if !__has_feature(objc_arc)
--(void)finalize {
-  self.prop = 0;
-  // finalize
-  test1(0);
-}
-#endif
--(void)dealloc {
-  // finalize
-  test1(0);
-}
- at end
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface QQ {
-  __weak id s;
-  __unsafe_unretained QQ *q;
-}
- at end
-
- at interface I3
- at property (weak) I3 * pw1, * pw2;
- at property (strong) I3 * ps;
- at property (assign) I3 * pds;
- at end
-
- at interface I4Impl {
-  I4Impl *__strong pds2;
-  I4Impl *pds3;
-  __weak I4Impl *pw3;
-  __weak I4Impl *pw4;
-}
- at property (weak) I4Impl * pw1, * pw2;
- at property (strong) I4Impl * ps;
- at property (strong) I4Impl * pds;
- at property (strong) I4Impl * pds2;
- at property (readwrite) I4Impl * pds3;
- at property (readonly) I4Impl * pds4;
- at property (weak, readonly)  I4Impl *pw3;
- at property (weak)  I4Impl *pw4;
- at end
-
- at implementation I4Impl
- at synthesize pw1, pw2, pw3, pw4, ps, pds, pds2, pds3, pds4;
-
--(void)test1:(CFTypeRef *)cft {
-  id x = CFBridgingRelease(cft);
-}
- at end
-
-// rdar://10532449
- at interface rdar10532449
- at property (strong) id assign_prop;
- at property (strong, readonly) id  strong_readonly_prop;
- at property (weak) id  weak_prop;
- at end
-
- at implementation rdar10532449
- at synthesize assign_prop, strong_readonly_prop, weak_prop;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-
- at interface ExtInterface {
-  __strong ExtInterface *myivar;
-  __strong void *gcVar;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-#include "GC.h"
-
-void test1(CFTypeRef *cft) {
-  id x = NSMakeCollectable(cft);
-}
-
- at interface I1
- at end
-
- at implementation I1
--(void)dealloc {
-  // dealloc
-  test1(0);
-}
-
--(void)finalize {
-  // finalize
-  test1(0);
-}
- at end
-
- at interface I2
- at property (retain) id prop;
- at end
-
- at implementation I2
- at synthesize prop;
-
--(void)finalize {
-  self.prop = 0;
-  // finalize
-  test1(0);
-}
- at end
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface QQ {
-  __weak id s;
-  __weak QQ *q;
-}
- at end
-
- at interface I3
- at property (assign) I3 *__weak pw1, *__weak pw2;
- at property (assign) I3 *__strong ps;
- at property (assign) I3 * pds;
- at end
-
- at interface I4Impl {
-  I4Impl *pds2;
-  I4Impl *pds3;
-  __weak I4Impl *pw3;
-  __weak I4Impl *pw4;
-}
- at property (assign) I4Impl *__weak pw1, *__weak pw2;
- at property (assign) I4Impl *__strong ps;
- at property (assign) I4Impl * pds;
- at property (assign) I4Impl * pds2;
- at property (readwrite) I4Impl * pds3;
- at property (readonly) I4Impl * pds4;
- at property (readonly) __weak I4Impl *pw3;
- at property (assign) __weak I4Impl *pw4;
- at end
-
- at implementation I4Impl
- at synthesize pw1, pw2, pw3, pw4, ps, pds, pds2, pds3, pds4;
-
--(void)test1:(CFTypeRef *)cft {
-  id x = NSMakeCollectable(cft);
-}
- at end
-
-// rdar://10532449
- at interface rdar10532449
- at property (assign) id assign_prop;
- at property (assign, readonly) id __strong strong_readonly_prop;
- at property (assign) id __weak weak_prop;
- at end
-
- at implementation rdar10532449
- at synthesize assign_prop, strong_readonly_prop, weak_prop;
- at end
-
-void test2(id p, __strong I1 *ap[]) {
-  for (__strong I1 *specRule in p) {
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/GC.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/GC.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/GC.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only -fobjc-gc-only -x objective-c++ %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-#include "GC.h"
-
-void test1(CFTypeRef *cft) {
-  id x = CFBridgingRelease(cft);
-}
-
- at interface I1
- at end
-
- at implementation I1
--(void)dealloc {
-  // dealloc
-  test1(0);
-}
-
- at end
-
- at interface I2
- at property (strong) id prop;
- at end
-
- at implementation I2
- at synthesize prop;
-
--(void)dealloc {
-  // finalize
-  test1(0);
-}
- at end
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface QQ {
-  __weak id s;
-  __unsafe_unretained QQ *q;
-}
- at end
-
- at interface I3
- at property (weak) I3 * pw1, * pw2;
- at property (strong) I3 * ps;
- at property (assign) I3 * pds;
- at end
-
- at interface I4Impl {
-  I4Impl *__strong pds2;
-  I4Impl *pds3;
-  __weak I4Impl *pw3;
-  __weak I4Impl *pw4;
-}
- at property (weak) I4Impl * pw1, * pw2;
- at property (strong) I4Impl * ps;
- at property (strong) I4Impl * pds;
- at property (strong) I4Impl * pds2;
- at property (readwrite) I4Impl * pds3;
- at property (readonly) I4Impl * pds4;
- at property (weak, readonly)  I4Impl *pw3;
- at property (weak)  I4Impl *pw4;
- at end
-
- at implementation I4Impl
- at synthesize pw1, pw2, pw3, pw4, ps, pds, pds2, pds3, pds4;
-
--(void)test1:(CFTypeRef *)cft {
-  id x = CFBridgingRelease(cft);
-}
- at end
-
-// rdar://10532449
- at interface rdar10532449
- at property (strong) id assign_prop;
- at property (strong, readonly) id  strong_readonly_prop;
- at property (weak) id  weak_prop;
- at end
-
- at implementation rdar10532449
- at synthesize assign_prop, strong_readonly_prop, weak_prop;
- at end
-
-void test2(id p, __strong I1 *ap[]) {
-  for (__strong I1 *specRule in p) {
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
- at protocol NSObject
-- (oneway void)release;
- at end
-
-#ifdef PART1
-static inline void part1(id p) {
-  [p release];
-}
-#endif
-
-#ifdef PART2
-static inline void part2(id p) {
-  [p release];
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test.h.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test.h.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test.h.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
- at protocol NSObject
-- (oneway void)release;
- at end
-
-#ifdef PART1
-static inline void part1(id p) {
-}
-#endif
-
-#ifdef PART2
-static inline void part2(id p) {
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test1.m.in
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test1.m.in	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test1.m.in	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#define PART1
-#include "test.h"
-
-void test1(id p) {
-  [p release];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test1.m.in.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test1.m.in.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test1.m.in.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#define PART1
-#include "test.h"
-
-void test1(id p) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test2.m.in
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test2.m.in	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test2.m.in	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#define PART2
-#include "test.h"
-
-void test2(id p) {
-  [p release];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test2.m.in.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test2.m.in.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/Inputs/test2.m.in.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#define PART2
-#include "test.h"
-
-void test2(id p) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/api.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/api.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/api.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-void test(NSObject *o) {
-  NSZone *z = [o zone];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/api.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/api.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/api.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-void test(NSObject *o) {
-  NSZone *z = nil;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-no-arc-runtime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-no-arc-runtime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-no-arc-runtime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
- at interface Foo : NSObject {
-  NSObject *x;
-}
- at property (readonly,assign) id x;
- at end
-
- at implementation Foo
- at synthesize x;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-no-arc-runtime.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-no-arc-runtime.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-no-arc-runtime.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fsyntax-only %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
- at interface Foo : NSObject {
-  NSObject *__unsafe_unretained x;
-}
- at property (readonly,unsafe_unretained) id x;
- at end
-
- at implementation Foo
- at synthesize x;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-with-arc-runtime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-with-arc-runtime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-with-arc-runtime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface WeakOptOut
- at end
-
- at class _NSCachedAttributedString;
-typedef _NSCachedAttributedString *BadClassForWeak;
-
- at class Forw;
-
- at interface Foo : NSObject {
-  Foo *x, *w, *q1, *q2;
-  WeakOptOut *oo;
-  BadClassForWeak bcw;
-  id not_safe1;
-  NSObject *not_safe2;
-  Forw *not_safe3;
-  Foo *assign_plus1;
-}
- at property (readonly) Foo *x;
- at property (assign) Foo *w;
- at property Foo *q1, *q2;
- at property (assign) WeakOptOut *oo;
- at property (assign) BadClassForWeak bcw;
- at property (assign) id not_safe1;
- at property () NSObject *not_safe2;
- at property Forw *not_safe3;
- at property (readonly) Foo *assign_plus1;
- at property (readonly) Foo *assign_plus2;
- at property (readonly) Foo *assign_plus3;
-
- at property (assign) Foo *no_user_ivar1;
- at property (readonly) Foo *no_user_ivar2;
-
- at property (retain) id def1;
- at property (atomic,retain) id def2;
- at property (retain,atomic) id def3;
-
- at end
-
- at implementation Foo
- at synthesize x,w,q1,q2,oo,bcw,not_safe1,not_safe2,not_safe3;
- at synthesize no_user_ivar1, no_user_ivar2;
- at synthesize assign_plus1, assign_plus2, assign_plus3;
- at synthesize def1, def2, def3;
-
--(void)test:(Foo *)parm {
-  assign_plus1 = [[Foo alloc] init];
-  assign_plus2 = [Foo new];
-  assign_plus3 = [parm retain];
-}
- at end
-
- at interface TestExt
- at property (retain,readonly) TestExt *x1;
- at property (readonly) TestExt *x2;
- at end
-
- at interface TestExt()
- at property (retain,readwrite) TestExt *x1;
- at property (readwrite) TestExt *x2;
- at property (retain) TestExt *x3;
- at end
-
- at implementation TestExt
- at synthesize x1, x2, x3;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-with-arc-runtime.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-with-arc-runtime.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/assign-prop-with-arc-runtime.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fsyntax-only %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface WeakOptOut
- at end
-
- at class _NSCachedAttributedString;
-typedef _NSCachedAttributedString *BadClassForWeak;
-
- at class Forw;
-
- at interface Foo : NSObject {
-  Foo *__weak x, *__weak w, *__weak q1, *__weak q2;
-  WeakOptOut *__unsafe_unretained oo;
-  BadClassForWeak __unsafe_unretained bcw;
-  id __unsafe_unretained not_safe1;
-  NSObject *__unsafe_unretained not_safe2;
-  Forw *__unsafe_unretained not_safe3;
-  Foo *assign_plus1;
-}
- at property (weak, readonly) Foo *x;
- at property (weak) Foo *w;
- at property (weak) Foo *q1, *q2;
- at property (unsafe_unretained) WeakOptOut *oo;
- at property (unsafe_unretained) BadClassForWeak bcw;
- at property (unsafe_unretained) id not_safe1;
- at property (unsafe_unretained) NSObject *not_safe2;
- at property (unsafe_unretained) Forw *not_safe3;
- at property (readonly) Foo *assign_plus1;
- at property (readonly) Foo *assign_plus2;
- at property (readonly) Foo *assign_plus3;
-
- at property (weak) Foo *no_user_ivar1;
- at property (weak, readonly) Foo *no_user_ivar2;
-
- at property (strong) id def1;
- at property (atomic,strong) id def2;
- at property (strong,atomic) id def3;
-
- at end
-
- at implementation Foo
- at synthesize x,w,q1,q2,oo,bcw,not_safe1,not_safe2,not_safe3;
- at synthesize no_user_ivar1, no_user_ivar2;
- at synthesize assign_plus1, assign_plus2, assign_plus3;
- at synthesize def1, def2, def3;
-
--(void)test:(Foo *)parm {
-  assign_plus1 = [[Foo alloc] init];
-  assign_plus2 = [Foo new];
-  assign_plus3 = parm;
-}
- at end
-
- at interface TestExt
- at property (strong,readonly) TestExt *x1;
- at property (weak, readonly) TestExt *x2;
- at end
-
- at interface TestExt()
- at property (strong,readwrite) TestExt *x1;
- at property (weak, readwrite) TestExt *x2;
- at property (strong) TestExt *x3;
- at end
-
- at implementation TestExt
- at synthesize x1, x2, x3;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
- at interface NSAutoreleasePool
-- drain;
-+new;
-+alloc;
--init;
--autorelease;
--release;
- at end
-
-void NSLog(id, ...);
-
-int main (int argc, const char * argv[]) {
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-    NSAutoreleasePool *chunkPool = [[NSAutoreleasePool alloc] init];
-
-    while (argc) {
-      [chunkPool release];
-      return 0;
-    }
-
-    [chunkPool drain];
-    [pool drain];
-
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-2.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-2.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-2.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
- at interface NSAutoreleasePool
-- drain;
-+new;
-+alloc;
--init;
--autorelease;
--release;
- at end
-
-void NSLog(id, ...);
-
-int main (int argc, const char * argv[]) {
-    @autoreleasepool {
-        @autoreleasepool {
-
-            while (argc) {
-              return 0;
-            }
-
-        }
-    }
-
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
- at interface NSAutoreleasePool
-- drain;
-+new;
-+alloc;
--init;
--autorelease;
-- release;
- at end
-
-void NSLog(id, ...);
-
-void test1(int x) {
-  // All this stuff get removed since nothing is happening inside.
-  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-  NSAutoreleasePool *chunkPool = [[NSAutoreleasePool alloc] init];
-  while (x) {
-    chunkPool = [[NSAutoreleasePool alloc] init];
-    [chunkPool release];
-  }
-
-  [chunkPool drain];
-  [pool drain];
-}
-
-void test2(int x) {
-  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-  NSAutoreleasePool *chunkPool = [[NSAutoreleasePool alloc] init];
-  while (x) {
-    chunkPool = [[NSAutoreleasePool alloc] init];
-    ++x;
-    [chunkPool release];
-  }
-
-  [chunkPool drain];
-  [pool drain];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-3.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-3.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-3.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
- at interface NSAutoreleasePool
-- drain;
-+new;
-+alloc;
--init;
--autorelease;
-- release;
- at end
-
-void NSLog(id, ...);
-
-void test1(int x) {
-  // All this stuff get removed since nothing is happening inside.
-}
-
-void test2(int x) {
-  @autoreleasepool {
-    @autoreleasepool {
-      while (x) {
-        @autoreleasepool {
-          ++x;
-        }
-      }
-
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-check.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-check.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease-check.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,145 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 %s
-// DISABLE: mingw32
-
-#if __has_feature(objc_arr)
-#define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode")))
-#else
-#define NS_AUTOMATED_REFCOUNT_UNAVAILABLE
-#endif
-
-typedef struct _NSZone NSZone;
-typedef int BOOL;
-typedef unsigned NSUInteger;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (NSUInteger)retainCount NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (oneway void)release NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (id)autorelease NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-
-- (NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
- at end
-
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
-
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
-
- at interface NSObject <NSObject> {}
-- (id)init;
-
-+ (id)new;
-+ (id)allocWithZone:(NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-+ (id)alloc;
-- (void)dealloc;
-
-- (void)finalize;
-
-- (id)copy;
-- (id)mutableCopy;
-
-+ (id)copyWithZone:(NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-+ (id)mutableCopyWithZone:(NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
- at end
-
-extern void NSRecycleZone(NSZone *zone);
-
-NS_AUTOMATED_REFCOUNT_UNAVAILABLE
- at interface NSAutoreleasePool : NSObject { // expected-note 13 {{marked unavailable here}}
- at private
-    void    *_token;
-    void    *_reserved3;
-    void    *_reserved2;
-    void    *_reserved;
-}
-
-+ (void)addObject:(id)anObject;
-
-- (void)addObject:(id)anObject;
-
-- (void)drain;
-
- at end
-
-
-void NSLog(id, ...);
-
-int main (int argc, const char * argv[]) {
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
-    NSAutoreleasePool *chunkPool = [[NSAutoreleasePool alloc] init]; // expected-error 2 {{'NSAutoreleasePool' is unavailable}}
-
-    while (argc) {
-      [chunkPool release];
-      // the following pool was not released in this scope, don't touch it. 
-      chunkPool = [[NSAutoreleasePool alloc] init]; // expected-error {{'NSAutoreleasePool' is unavailable}}
-    }
-
-    [chunkPool drain];
-    [pool drain];
-
-    return 0;
-}
-
-void f(void) {
-    NSAutoreleasePool * pool;  // expected-error {{'NSAutoreleasePool' is unavailable}}
-
-    for (int i=0; i != 10; ++i) {
-      id x = pool; // We won't touch a NSAutoreleasePool if we can't safely
-                   // remove all the references to it.
-    }
-
-    pool = [[NSAutoreleasePool alloc] init];  // expected-error {{'NSAutoreleasePool' is unavailable}}
-    NSLog(@"%s", "YES");
-    [pool release];
-}
-
-void f2(void) {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // expected-error 2 {{'NSAutoreleasePool' is unavailable}} \
-                                            // expected-note {{scope begins here}}
-
-    // 'x' is declared inside the "pool scope" but used outside it, if we create
-    // a @autorelease scope it will be undefined outside it so don't touch the pool.
-    int x = 0; // expected-note {{declared here}}
-
-    [pool release]; // expected-note {{scope ends here}}
-    
-    ++x; // expected-error {{a name is referenced outside the NSAutoreleasePool scope that it was declared in}}
-}
-
-void f3(void) {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // expected-error 2 {{'NSAutoreleasePool' is unavailable}} \
-                                            // expected-note {{scope begins here}}
-
-    struct S { int x; }; // expected-note {{declared here}}
-
-    [pool release]; // expected-note {{scope ends here}}
-
-    struct S *var; // expected-error {{a name is referenced outside the NSAutoreleasePool scope that it was declared in}}
-    var->x = 0;
-}
-
-void f4(void) {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // expected-error 2 {{'NSAutoreleasePool' is unavailable}} \
-                                            // expected-note {{scope begins here}}
-
-    enum { Bar }; // expected-note {{declared here}}
-
-    [pool release]; // expected-note {{scope ends here}}
-
-    int x = Bar; // expected-error {{a name is referenced outside the NSAutoreleasePool scope that it was declared in}}
-}
-
-void f5(void) {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // expected-error 2 {{'NSAutoreleasePool' is unavailable}} \
-                                            // expected-note {{scope begins here}}
-
-    typedef int Bar; // expected-note {{declared here}}
-
-    [pool release]; // expected-note {{scope ends here}}
-
-    Bar x; // expected-error {{a name is referenced outside the NSAutoreleasePool scope that it was declared in}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-void NSLog(id, ...);
-
-int main (int argc, const char * argv[]) {
-
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-
-    if (argc) {
-        NSAutoreleasePool * pool = [NSAutoreleasePool  new];
-        NSLog(@"%s", "YES");
-        [pool drain];
-    }
-    [pool drain];
-
-    NSAutoreleasePool * pool1 = [[NSAutoreleasePool alloc] init];
-    NSLog(@"%s", "YES");
-    [pool1 release];
-
-    return 0;
-}
-
-void f(void) {
-  NSAutoreleasePool *pool1;
-
-  pool1 = [NSAutoreleasePool new];
-  int x = 4;
-
-  NSAutoreleasePool *pool2 = [[NSAutoreleasePool alloc] init];
-  ++x;
-  [pool2 drain];
-
-  [pool1 release];
-}
-
-int UIApplicationMain(int argc, char *argv[]);
-
-int main2(int argc, char *argv[]) {
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-    int result = UIApplicationMain(argc, argv);
-    [pool release];
-    return result;
-}
-
- at interface Foo : NSObject
- at property (assign) id myProp;
- at end
-
- at implementation Foo
- at synthesize myProp;
-
--(void)test:(id)p {
-  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-  [pool drain];
-  self.myProp = p;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/atautorelease.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-void NSLog(id, ...);
-
-int main (int argc, const char * argv[]) {
-
-    @autoreleasepool {
-
-        if (argc) {
-            @autoreleasepool {
-                NSLog(@"%s", "YES");
-            }
-        }
-    }
-
-    @autoreleasepool {
-        NSLog(@"%s", "YES");
-    }
-
-    return 0;
-}
-
-void f(void) {
-
-  @autoreleasepool {
-    int x = 4;
-
-    @autoreleasepool {
-      ++x;
-    }
-
-  }
-}
-
-int UIApplicationMain(int argc, char *argv[]);
-
-int main2(int argc, char *argv[]) {
-    @autoreleasepool {
-        int result = UIApplicationMain(argc, argv);
-        return result;
-    }
-}
-
- at interface Foo : NSObject
- at property (unsafe_unretained) id myProp;
- at end
-
- at implementation Foo
- at synthesize myProp;
-
--(void)test:(id)p {
-  @autoreleasepool {
-  }
-  self.myProp = p;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/autoreleases.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/autoreleases.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/autoreleases.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
- at interface A : NSObject {
- at package
-    id object;
-}
- at end
-
- at interface B : NSObject {
-  id _prop;
-  xpc_object_t _xpc_prop;
-}
-- (BOOL)containsSelf:(A*)a;
- at property (retain) id prop;
- at property (retain) xpc_object_t xpc_prop;
- at end
-
- at implementation A
- at end
-
- at implementation B
-- (BOOL)containsSelf:(A*)a {
-    return a->object == self;
-}
-
--(id) prop {
-  return _prop;
-}
--(void) setProp:(id) newVal {
-  [_prop autorelease];
-  _prop = [newVal retain];
-}
--(void) setProp2:(CFTypeRef) newVal {
-  [_prop autorelease];
-  _prop = (id)CFRetain(newVal);
-}
-
--(id) xpc_prop {
-  return _xpc_prop;
-}
--(void) setXpc_prop:(xpc_object_t) newVal {
-  [_xpc_prop autorelease];
-  _xpc_prop = xpc_retain(newVal);
-}
- at end
-
-void NSLog(id, ...);
-
-int main (int argc, const char * argv[]) {
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-    A *a = [[A new] autorelease];
-    B *b = [[B new] autorelease];
-    NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO");
-    [pool drain];
-    return 0;
-}
-
-void test(A *prevVal, A *newVal) {
-  [prevVal autorelease];
-  prevVal = [newVal retain];
-}
-
-id test2(A* val) {
-  [[val retain] autorelease];
-  return val;
-}
-
-id test3() {
-  id a = [[A alloc] init];
-  [a autorelease];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/autoreleases.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/autoreleases.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/autoreleases.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,70 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
- at interface A : NSObject {
- at package
-    id object;
-}
- at end
-
- at interface B : NSObject {
-  id _prop;
-  xpc_object_t _xpc_prop;
-}
-- (BOOL)containsSelf:(A*)a;
- at property (strong) id prop;
- at property (strong) xpc_object_t xpc_prop;
- at end
-
- at implementation A
- at end
-
- at implementation B
-- (BOOL)containsSelf:(A*)a {
-    return a->object == self;
-}
-
--(id) prop {
-  return _prop;
-}
--(void) setProp:(id) newVal {
-  _prop = newVal;
-}
--(void) setProp2:(CFTypeRef) newVal {
-  _prop = (id)CFBridgingRelease(CFRetain(newVal));
-}
-
--(id) xpc_prop {
-  return _xpc_prop;
-}
--(void) setXpc_prop:(xpc_object_t) newVal {
-  _xpc_prop = newVal;
-}
- at end
-
-void NSLog(id, ...);
-
-int main (int argc, const char * argv[]) {
-    @autoreleasepool {
-        A *a = [A new];
-        B *b = [B new];
-        NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO");
-    }
-    return 0;
-}
-
-void test(A *prevVal, A *newVal) {
-  prevVal = newVal;
-}
-
-id test2(A* val) {
-  return val;
-}
-
-id test3() {
-  id a = [[A alloc] init];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/block_copy_release.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/block_copy_release.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/block_copy_release.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
-typedef void (^blk)(int);
-
-void func(blk b) {
-  blk c = Block_copy(b);
-  Block_release(c);
-}
-
-void func2(id b) {
-  id c = Block_copy(b);
-  Block_release(c);
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/block_copy_release.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/block_copy_release.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/block_copy_release.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
-typedef void (^blk)(int);
-
-void func(blk b) {
-  blk c = [b copy];
-}
-
-void func2(id b) {
-  id c = [b copy];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/check-api.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/check-api.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/check-api.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-macosx10.7 %s
-
-#include "Common.h"
-
- at interface NSInvocation : NSObject
-- (void)getReturnValue:(void *)retLoc;
-- (void)setReturnValue:(void *)retLoc;
-
-- (void)getArgument:(void *)argumentLocation atIndex:(int)idx;
-- (void)setArgument:(void *)argumentLocation atIndex:(int)idx;
- at end
-
- at interface Test
- at end
-
- at implementation Test {
-  id strong_id;
-  __weak id weak_id;
-  __unsafe_unretained id unsafe_id;
-  int arg;
-}
-- (void) test:(NSInvocation *)invok {
-  [invok getReturnValue:&strong_id]; // expected-error {{NSInvocation's getReturnValue is not safe to be used with an object with ownership other than __unsafe_unretained}}
-  [invok getReturnValue:&weak_id]; // expected-error {{NSInvocation's getReturnValue is not safe to be used with an object with ownership other than __unsafe_unretained}}
-  [invok getReturnValue:&unsafe_id];
-  [invok getReturnValue:&arg];
-
-  [invok setReturnValue:&strong_id]; // expected-error {{NSInvocation's setReturnValue is not safe to be used with an object with ownership other than __unsafe_unretained}}
-  [invok setReturnValue:&weak_id]; // expected-error {{NSInvocation's setReturnValue is not safe to be used with an object with ownership other than __unsafe_unretained}}
-  [invok setReturnValue:&unsafe_id];
-  [invok setReturnValue:&arg];
-
-  [invok getArgument:&strong_id atIndex:0]; // expected-error {{NSInvocation's getArgument is not safe to be used with an object with ownership other than __unsafe_unretained}}
-  [invok getArgument:&weak_id atIndex:0]; // expected-error {{NSInvocation's getArgument is not safe to be used with an object with ownership other than __unsafe_unretained}}
-  [invok getArgument:&unsafe_id atIndex:0];
-  [invok getArgument:&arg atIndex:0];
-
-  [invok setArgument:&strong_id atIndex:0]; // expected-error {{NSInvocation's setArgument is not safe to be used with an object with ownership other than __unsafe_unretained}}
-  [invok setArgument:&weak_id atIndex:0]; // expected-error {{NSInvocation's setArgument is not safe to be used with an object with ownership other than __unsafe_unretained}}
-  [invok setArgument:&unsafe_id atIndex:0];
-  [invok setArgument:&arg atIndex:0];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/check-with-pch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/check-with-pch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/check-with-pch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -triple x86_64-apple-darwin10 %S/Common.h -emit-pch -o %t.pch
-// RUN: %clang_cc1 -include-pch %t.pch -arcmt-check -verify -triple x86_64-apple-darwin10 -fblocks -Werror %s
-// DISABLE: mingw32
-
-// rdar://9601437
- at interface I9601437 {
-  __unsafe_unretained id x;
-}
--(void)Meth;
- at end
-
- at implementation I9601437
--(void)Meth {
-  self->x = [NSObject new]; // expected-error {{assigning retained object}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/check-with-serialized-diag.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/check-with-serialized-diag.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/check-with-serialized-diag.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-
- at protocol NSObject
-- (id)retain;
-- (unsigned)retainCount;
-- (oneway void)release;
-- (id)autorelease;
- at end
-
- at interface NSObject <NSObject> {}
-- (id)init;
-
-+ (id)new;
-+ (id)alloc;
-- (void)dealloc;
-
-- (void)finalize;
-
-- (id)copy;
-- (id)mutableCopy;
- at end
-
- at interface A : NSObject
- at end
-
-struct UnsafeS {
-  A *__unsafe_unretained unsafeObj;
-};
-
-id global_foo;
-
-void test1(A *a, struct UnsafeS *unsafeS) {
-  [unsafeS->unsafeObj retain];
-  id foo = [unsafeS->unsafeObj retain]; // no warning.
-  [global_foo retain];
-  [a retainCount];
-}
-
-// RUN: not %clang_cc1 -arcmt-check -triple x86_64-apple-darwin10 %s -serialize-diagnostic-file %t.diag
-// RUN: c-index-test -read-diagnostics %t.diag > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-// CHECK: {{.*}}check-with-serialized-diag.m:32:4: error: [rewriter] it is not safe to remove 'retain' message on an __unsafe_unretained type
-// CHECK-NEXT: Number FIXITs = 0
-// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:34:4: error: [rewriter] it is not safe to remove 'retain' message on a global variable
-// CHECK-NEXT: Number FIXITs = 0
-// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:32:23: error: ARC forbids explicit message send of 'retain'
-// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:32:4 {{.*}}check-with-serialized-diag.m:32:22
-// CHECK-NEXT: Number FIXITs = 0
-// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:34:15: error: ARC forbids explicit message send of 'retain'
-// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:34:4 {{.*}}check-with-serialized-diag.m:34:14
-// CHECK-NEXT: Number FIXITs = 0
-// CHECK-NEXT: {{.*}}check-with-serialized-diag.m:35:6: error: ARC forbids explicit message send of 'retainCount'
-// CHECK-NEXT: Range: {{.*}}check-with-serialized-diag.m:35:4 {{.*}}check-with-serialized-diag.m:35:5
-// CHECK-NEXT: Number FIXITs = 0
-

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/checking.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/checking.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/checking.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,344 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 -fblocks -Werror %s
-// DISABLE: mingw32
-
-#if __has_feature(objc_arc)
-#define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode")))
-#else
-#define NS_AUTOMATED_REFCOUNT_UNAVAILABLE
-#endif
-
-typedef const void * CFTypeRef;
-CFTypeRef CFBridgingRetain(id X);
-id CFBridgingRelease(CFTypeRef);
-
-typedef int BOOL;
-typedef unsigned NSUInteger;
-
- at protocol NSObject
-- (id)retain NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (NSUInteger)retainCount NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (oneway void)release NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
-- (id)autorelease NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
- at end
-
- at interface NSObject <NSObject> {}
-- (id)init;
-
-+ (id)new;
-+ (id)alloc;
-- (void)dealloc;
-
-- (void)finalize;
-
-- (id)copy;
-- (id)mutableCopy;
- at end
-
-typedef const struct __CFString * CFStringRef;
-extern const CFStringRef kUTTypePlainText;
-extern const CFStringRef kUTTypeRTF;
- at class NSString;
- at class A;
-
-struct UnsafeS {
-  A *__unsafe_unretained unsafeObj;
-};
-
- at interface A : NSObject
-- (id)retain; // expected-note {{declaration has been explicitly marked unavailable here}}
-- (id)retainCount; // expected-note {{declaration has been explicitly marked unavailable here}}
-- (id)autorelease; // expected-note 2 {{declaration has been explicitly marked unavailable here}}
-- (id)init;
-- (oneway void)release;
-- (void)dealloc;
--(void)test;
--(id)delegate;
- at end
-
- at implementation A
--(void)test {
-  [super dealloc];
-}
--(void)dealloc {
-  [super dealloc];
-}
-
-- (id)retain { return self; } // expected-error {{ARC forbids implementation}}
-- (id)retainCount { return self; } // expected-error {{ARC forbids implementation}}
-- (id)autorelease { return self; } // expected-error {{ARC forbids implementation}}
-- (oneway void)release { } // expected-error {{ARC forbids implementation}}
-
--(id)delegate { return self; }
- at end
-
-id global_foo;
-
-void test1(A *a, BOOL b, struct UnsafeS *unsafeS) {
-  [[a delegate] release]; // expected-error {{it is not safe to remove 'retain' message on the result of a 'delegate' message; the object that was passed to 'setDelegate:' may not be properly retained}} \
-                          // expected-error {{ARC forbids explicit message send}}
-  [a.delegate release]; // expected-error {{it is not safe to remove 'retain' message on the result of a 'delegate' message; the object that was passed to 'setDelegate:' may not be properly retained}} \
-                        // expected-error {{ARC forbids explicit message send}}
-  [unsafeS->unsafeObj retain]; // expected-error {{it is not safe to remove 'retain' message on an __unsafe_unretained type}} \
-                               // expected-error {{ARC forbids explicit message send}} \
-                               // expected-error {{'retain' is unavailable}}
-  id foo = [unsafeS->unsafeObj retain]; // no warning.
-  [global_foo retain]; // expected-error {{it is not safe to remove 'retain' message on a global variable}} \
-                       // expected-error {{ARC forbids explicit message send}}
-  [global_foo release]; // expected-error {{it is not safe to remove 'release' message on a global variable}} \
-                        // expected-error {{ARC forbids explicit message send}}
-  [a dealloc];
-  [a retain];
-  [a retainCount]; // expected-error {{ARC forbids explicit message send of 'retainCount'}} \
-                   // expected-error {{'retainCount' is unavailable}}
-  [a release];
-  [a autorelease]; // expected-error {{it is not safe to remove an unused 'autorelease' message; its receiver may be destroyed immediately}} \
-                   // expected-error {{ARC forbids explicit message send}} \
-                   // expected-error {{'autorelease' is unavailable}}
-  [a autorelease]; // expected-error {{it is not safe to remove an unused 'autorelease' message; its receiver may be destroyed immediately}} \
-                   // expected-error {{ARC forbids explicit message send}} \
-                   // expected-error {{'autorelease' is unavailable}}
-  a = 0;
-
-  CFStringRef cfstr;
-  NSString *str = (NSString *)cfstr; // expected-error {{cast of C pointer type 'CFStringRef' (aka 'const struct __CFString *') to Objective-C pointer type 'NSString *' requires a bridged cast}} \
-  // expected-note {{use __bridge to convert directly (no change in ownership)}} \
-  // expected-note {{use CFBridgingRelease call to transfer ownership of a +1 'CFStringRef' (aka 'const struct __CFString *') into ARC}} \
-  str = (NSString *)kUTTypePlainText;
-  str = b ? kUTTypeRTF : kUTTypePlainText;
-  str = (NSString *)(b ? kUTTypeRTF : kUTTypePlainText);
-  str = (NSString *)a; // no change.
-
-  SEL s = @selector(retain);  // expected-error {{ARC forbids use of 'retain' in a @selector}}
-  s = @selector(release); // expected-error {{ARC forbids use of 'release' in a @selector}}
-  s = @selector(autorelease); // expected-error {{ARC forbids use of 'autorelease' in a @selector}}
-  s = @selector(dealloc); // expected-error {{ARC forbids use of 'dealloc' in a @selector}}
-
-  static id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing ownership}}
-}
-
-struct S {
-  A* a; // expected-error {{ARC forbids Objective-C objects in struct}}
-};
-
- at interface B
--(id)alloc;
-- (id)initWithInt: (int) i;
- at end
-
-void rdar8861761() {
-  B *o1 = [[B alloc] initWithInt:0];
-  B *o2 = [B alloc];
-  [o2 initWithInt:0];
-}
-
- at interface Test13
-- (id) init0;
-- (void) noninit;
- at end
- at implementation Test13
-- (id) init0 {
-  self = 0;
-}
-- (void) noninit {
-  self = 0; // expected-error {{cannot assign to 'self' outside of a method in the init family}}
-
-  for (__strong id x in collection) { // expected-error {{use of undeclared identifier 'collection'}}
-    x = 0;
-  }
-}
- at end
-
-void * cvt(id arg)
-{
-  void* voidp_val;
-  (void)(int*)arg; // expected-error {{disallowed}}
-  (void)(id)arg;
-  (void)(__autoreleasing id*)arg; // expected-error {{disallowed}}
-  (void)(id*)arg; // expected-error {{disallowed}}
-
-  (void)(__autoreleasing id**)voidp_val;
-  (void)(void*)voidp_val;
-  (void)(void**)arg; // expected-error {{disallowed}}
-  cvt((void*)arg); // expected-error 2 {{requires a bridged cast}} \
-                   // expected-note 2 {{use __bridge to}} expected-note {{use CFBridgingRelease call}} expected-note {{use CFBridgingRetain call}}
-  cvt(0);
-  (void)(__strong id**)(0);
-  return arg; // expected-error {{requires a bridged cast}} expected-note {{use __bridge}} expected-note {{use CFBridgingRetain call}}
-}
-
-
-void test12(id collection) {
-  for (id x in collection) {
-    x = 0;
-  }
-
-  for (__strong id x in collection) {
-    x = 0;
-  }
-}
-
-void test6(unsigned cond) {
-  switch (cond) {
-  case 0:
-    ;
-    id x; // expected-note {{jump bypasses initialization of retaining variable}}
-
-  case 1: // expected-error {{switch case is in protected scope}}
-    x = 0;
-    break;
-  }
-}
-
- at class Test8_incomplete;
- at interface Test8_complete @end;
- at interface Test8_super @end;
- at interface Test8 : Test8_super
-- (id) init00;
-- (id) init01; // expected-note {{declaration in interface}}
-- (id) init02;
-- (id) init03; // covariance
-- (id) init04; // covariance
-- (id) init05;
-
-- (void) init10; // expected-note {{declaration in interface is not in the 'init' family because its result type is not an object pointer}}
-- (void) init11;
-- (void) init12;
-- (void) init13; // expected-note {{declaration in interface is not in the 'init' family because its result type is not an object pointer}}
-- (void) init14; // expected-note {{declaration in interface is not in the 'init' family because its result type is not an object pointer}}
-- (void) init15;
-
-// These should be invalid to actually call.
-- (Test8_incomplete*) init20;
-- (Test8_incomplete*) init21; // expected-note {{declaration in interface}}
-- (Test8_incomplete*) init22;
-- (Test8_incomplete*) init23;
-- (Test8_incomplete*) init24;
-- (Test8_incomplete*) init25;
-
-- (Test8_super*) init30; // id exception to covariance
-- (Test8_super*) init31; // expected-note {{declaration in interface}}
-- (Test8_super*) init32;
-- (Test8_super*) init33;
-- (Test8_super*) init34; // covariance
-- (Test8_super*) init35;
-
-- (Test8*) init40; // id exception to covariance
-- (Test8*) init41; // expected-note {{declaration in interface}}
-- (Test8*) init42;
-- (Test8*) init43; // this should be a warning, but that's a general language thing, not an ARC thing
-- (Test8*) init44;
-- (Test8*) init45;
-
-- (Test8_complete*) init50; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init51; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init52; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init53; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init54; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init55; // expected-error {{init methods must return a type related to the receiver type}}
- at end
- at implementation Test8
-- (id) init00 { return 0; }
-- (id) init10 { return 0; } // expected-error {{method implementation does not match its declaration}}
-- (id) init20 { return 0; }
-- (id) init30 { return 0; }
-- (id) init40 { return 0; }
-- (id) init50 { return 0; }
-
-- (void) init01 {} // expected-error {{method was declared as an 'init' method, but its implementation doesn't match because its result type is not an object pointer}}
-- (void) init11 {}
-- (void) init21 {} // expected-error {{method was declared as an 'init' method, but its implementation doesn't match because its result type is not an object pointer}}
-- (void) init31 {} // expected-error {{method was declared as an 'init' method, but its implementation doesn't match because its result type is not an object pointer}}
-- (void) init41 {} // expected-error {{method was declared as an 'init' method, but its implementation doesn't match because its result type is not an object pointer}}
-- (void) init51 {}
-
-- (Test8_incomplete*) init02 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_incomplete*) init12 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_incomplete*) init22 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_incomplete*) init32 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_incomplete*) init42 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_incomplete*) init52 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-
-- (Test8_super*) init03 { return 0; }
-- (Test8_super*) init13 { return 0; } // expected-error {{method implementation does not match its declaration}}
-- (Test8_super*) init23 { return 0; }
-- (Test8_super*) init33 { return 0; }
-- (Test8_super*) init43 { return 0; }
-- (Test8_super*) init53 { return 0; }
-
-- (Test8*) init04 { return 0; }
-- (Test8*) init14 { return 0; } // expected-error {{method implementation does not match its declaration}}
-- (Test8*) init24 { return 0; }
-- (Test8*) init34 { return 0; }
-- (Test8*) init44 { return 0; }
-- (Test8*) init54 { return 0; }
-
-- (Test8_complete*) init05 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init15 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init25 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init35 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init45 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init55 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
- at end
-
- at class Test9_incomplete;
- at interface Test9
-- (Test9_incomplete*) init1; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test9_incomplete*) init2;
- at end
-id test9(Test9 *v) {
-  return [v init1];
-}
-
-// rdar://9491791
-void rdar9491791(int p) {
-  switch (p) {
-  case 3:;
-    NSObject *o = [[NSObject alloc] init];
-    [o release];
-    break;
-  default:
-    break;
-  }
-}
-
-#define RELEASE_MACRO(x) do { [x release]; } while(1)
-
-// rdar://9504750
-void rdar9504750(id p) {
-  RELEASE_MACRO(p); // expected-error {{ARC forbids explicit message send of 'release'}}
-}
-
-// rdar://8939557
- at interface TestReadonlyProperty : NSObject
- at property(assign,readonly) NSObject *value;
- at end
-
- at implementation TestReadonlyProperty
- at synthesize value;
-- (void)viewDidLoad {
-  value = [NSObject new]; // expected-error {{assigning retained object}}
-}
- at end
-
-// rdar://9601437
- at interface I9601437 {
-  __unsafe_unretained id x;
-}
--(void)Meth;
- at end
-
- at implementation I9601437
--(void)Meth {
-  self->x = [NSObject new]; // expected-error {{assigning retained object}}
-}
- at end
-
- at interface Test10 : NSObject
- at property (retain) id prop;
--(void)foo;
- at end
-
-void test(Test10 *x) {
-  x.prop = ^{ [x foo]; }; // expected-warning {{likely to lead to a retain cycle}} \
-                          // expected-note {{retained by the captured object}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-checking.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-checking.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-checking.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 -fsyntax-only -fblocks %s
-// DISABLE: mingw32
-
-// Classes that have an Objective-C object pointer.
-struct HasObjectMember0 {
-  id x;
-};
-
-struct HasObjectMember1 {
-  id x[3];
-};
-
-struct HasObjectMember2 {
-  id x[3][2];
-};
-
-// Don't complain if the type has non-external linkage
-namespace {
-  struct HasObjectMember3 {
-    id x[3][2];
-  };
-}
-
-// Don't complain if the Objective-C pointer type was explicitly given
-// no lifetime.
-struct HasObjectMember3 { 
-  __unsafe_unretained id x[3][2];
-};
-
-struct HasBlockPointerMember0 {
-  int (^bp)(int);
-};
-
-struct HasBlockPointerMember1 {
-  int (^bp[2][3])(int);
-};
-
-struct NonPOD {
-  NonPOD(const NonPOD&);
-};
-
-struct HasObjectMemberAndNonPOD0 {
-  id x;
-  NonPOD np;
-};
-
-struct HasObjectMemberAndNonPOD1 {
-  NonPOD np;
-  id x[3];
-};
-
-struct HasObjectMemberAndNonPOD2 {
-  NonPOD np;
-  id x[3][2];
-};
-
-struct HasObjectMemberAndNonPOD3 {
-  HasObjectMemberAndNonPOD3 &operator=(const HasObjectMemberAndNonPOD3&);
-  ~HasObjectMemberAndNonPOD3();
-  NonPOD np;
-  id x[3][2];
-};
-
-struct HasBlockPointerMemberAndNonPOD0 {
-  NonPOD np;
-  int (^bp)(int);
-};
-
-struct HasBlockPointerMemberAndNonPOD1 {
-  NonPOD np;
-  int (^bp[2][3])(int);
-};
-
-int check_non_pod_objc_pointer0[__is_pod(id)? 1 : -1];
-int check_non_pod_objc_pointer1[__is_pod(__strong id)? -1 : 1];
-int check_non_pod_objc_pointer2[__is_pod(__unsafe_unretained id)? 1 : -1];
-int check_non_pod_objc_pointer3[__is_pod(id[2][3])? 1 : -1];
-int check_non_pod_objc_pointer4[__is_pod(__unsafe_unretained id[2][3])? 1 : -1];
-int check_non_pod_block0[__is_pod(int (^)(int))? 1 : -1];
-int check_non_pod_block1[__is_pod(int (^ __unsafe_unretained)(int))? 1 : -1];
-
-struct FlexibleArrayMember0 {
-  int length;
-  id array[]; // expected-error{{flexible array member 'array' of non-POD element type 'id __strong[]'}}
-};
-
-struct FlexibleArrayMember1 {
-  int length;
-  __unsafe_unretained id array[];
-};
-
-// It's okay to pass a retainable type through an ellipsis.
-void variadic(...);
-void test_variadic() {
-  variadic(1, 17, @"Foo");
-}
-
-// It's okay to create a VLA of retainable types.
-void vla(int n) {
-  id vla[n];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-rewrite.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-rewrite.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-rewrite.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c++ %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
- at interface NSString : NSObject
-+(id)string;
- at end
-
-struct foo {
-    NSString *s;
-    foo(NSString *s): s([s retain]){
-        NSAutoreleasePool *pool = [NSAutoreleasePool new];
-        [[[NSString string] retain] release];
-        [pool drain];
-        if (s)
-          [s release];
-    }
-    ~foo(){ [s release]; }
-private:
-    foo(foo const &);
-    foo &operator=(foo const &);
-};
-
-int main(){
-    NSAutoreleasePool *pool = [NSAutoreleasePool new];
-
-    foo f([[NSString string] autorelease]);
-
-    [pool drain];
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-rewrite.mm.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-rewrite.mm.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/cxx-rewrite.mm.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c++ %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
- at interface NSString : NSObject
-+(id)string;
- at end
-
-struct foo {
-    NSString *s;
-    foo(NSString *s): s(s){
-        @autoreleasepool {
-            [NSString string];
-        }
-    }
-    ~foo(){  }
-private:
-    foo(foo const &);
-    foo &operator=(foo const &);
-};
-
-int main(){
-    @autoreleasepool {
-
-        foo f([NSString string]);
-
-    }
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/dealloc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/dealloc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/dealloc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
- at interface A
-- (id)retain;
-- (id)autorelease;
-- (oneway void)release;
-- (void)dealloc;
- at end
-
-void test1(A *a) {
-  [a dealloc];
-}
-
- at interface Test2 : A
-- (void) dealloc;
- at end
-
- at implementation Test2
-- (void) dealloc {
-  [super dealloc];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/dealloc.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/dealloc.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/dealloc.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
- at interface A
-- (id)retain;
-- (id)autorelease;
-- (oneway void)release;
-- (void)dealloc;
- at end
-
-void test1(A *a) {
-}
-
- at interface Test2 : A
-- (void) dealloc;
- at end
-
- at implementation Test2
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/dispatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/dispatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/dispatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
-dispatch_object_t getme(void);
-
-void func(dispatch_object_t o) {
-  dispatch_retain(o);
-  dispatch_release(o);
-  dispatch_retain(getme());
-}
-
-void func2(xpc_object_t o) {
-  xpc_retain(o);
-  xpc_release(o);
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/dispatch.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/dispatch.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/dispatch.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
-dispatch_object_t getme(void);
-
-void func(dispatch_object_t o) {
-  getme();
-}
-
-void func2(xpc_object_t o) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/driver-migrate.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/driver-migrate.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/driver-migrate.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang -### -ccc-arcmt-migrate /foo/bar -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: "-arcmt-migrate" "-mt-migrate-directory" "{{[^"]*}}/foo/bar"
-
-// RUN: touch %t.o
-// RUN: %clang -ccc-arcmt-check -target i386-apple-darwin9 -### %t.o 2> %t.log
-// RUN: FileCheck -check-prefix=LINK %s < %t.log
-// RUN: %clang -ccc-arcmt-migrate /foo/bar -target i386-apple-darwin9 -### %t.o 2> %t.log
-// RUN: FileCheck -check-prefix=LINK %s < %t.log
-
-// LINK-NOT: {{ld(.exe)?"}}
-// LINK: {{touch(.exe)?"}}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/init.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/init.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/init.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#define nil (void *)0
-
- at interface NSObject
--init;
- at end
-
- at interface A : NSObject
--init;
--init2;
--foo;
-+alloc;
- at end
-
- at implementation A
--(id) init {
-  [self init];
-  id a;
-  [a init];
-  a = [[A alloc] init];
-
-  return self;
-}
-
--(id) init2 {
-  [super init];
-  return self;
-}
-
--(id) foo {
-  [self init];
-  [super init];
-
-  return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/init.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/init.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/init.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#define nil (void *)0
-
- at interface NSObject
--init;
- at end
-
- at interface A : NSObject
--init;
--init2;
--foo;
-+alloc;
- at end
-
- at implementation A
--(id) init {
-  if (!(self = [self init])) return nil;
-  id a;
-  [a init];
-  a = [[A alloc] init];
-
-  return self;
-}
-
--(id) init2 {
-  if (!(self = [super init])) return nil;
-  return self;
-}
-
--(id) foo {
-  [self init];
-  [super init];
-
-  return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-emit-errors.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-emit-errors.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-emit-errors.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t -arcmt-migrate-emit-errors %s 2>&1 | FileCheck %s
-// RUN: rm -rf %t
-
- at protocol NSObject
-- (oneway void)release;
- at end
-
-void test(id p) {
-  [p release];
-}
-
-// CHECK: error: ARC forbids explicit message send of 'release'
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-plist-output.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-plist-output.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-plist-output.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t.dir -arcmt-migrate-report-output %t.plist %s 
-// RUN: FileCheck %s -input-file=%t.plist
-// RUN: rm -rf %t.dir
-
- at protocol NSObject
-- (oneway void)release;
- at end
-
-void test(id p) {
-  [p release];
-}
-
-// CHECK: <?xml version="1.0" encoding="UTF-8"?>
-// CHECK: <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-// CHECK: <plist version="1.0">
-// CHECK: <dict>
-// CHECK:  <key>files</key>
-// CHECK:  <array>
-// CHECK:  </array>
-// CHECK:  <key>diagnostics</key>
-// CHECK:  <array>
-// CHECK:   <dict>
-// CHECK:    <key>description</key><string>ARC forbids explicit message send of 'release'</string>
-// CHECK:    <key>category</key><string>ARC Restrictions</string>
-// CHECK:    <key>type</key><string>error</string>
-// CHECK:   <key>location</key>
-// CHECK:   <dict>
-// CHECK:    <key>line</key><integer>10</integer>
-// CHECK:    <key>col</key><integer>6</integer>
-// CHECK:    <key>file</key><integer>0</integer>
-// CHECK:   </dict>
-// CHECK:    <key>ranges</key>
-// CHECK:    <array>
-// CHECK:     <array>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>10</integer>
-// CHECK:       <key>col</key><integer>4</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>10</integer>
-// CHECK:       <key>col</key><integer>4</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:     </array>
-// CHECK:    </array>
-// CHECK:   </dict>
-// CHECK:  </array>
-// CHECK: </dict>
-// CHECK: </plist>
-
-// DISABLE: mingw32

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-space-in-path.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-space-in-path.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-space-in-path.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: rm -rf %t.migrate
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t.migrate %S/"with space"/test1.m.in -x objective-c 
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t.migrate %S/"with space"/test2.m.in -x objective-c 
-// RUN: c-arcmt-test -mt-migrate-directory %t.migrate | arcmt-test -verify-transformed-files %S/"with space"/test1.m.in.result %S/"with space"/test2.m.in.result %S/"with space"/test.h.result
-// RUN: rm -rf %t.migrate
-// DISABLE: mingw32

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-with-pch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-with-pch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/migrate-with-pch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c %S/Common.h -emit-pch -o %t.pch
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t %S/Inputs/test1.m.in -x objective-c -include-pch %t.pch 
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t %S/Inputs/test2.m.in -x objective-c -include-pch %t.pch
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %S/Inputs/test1.m.in.result %S/Inputs/test2.m.in.result %S/Inputs/test.h.result
-// RUN: rm -rf %t
-// DISABLE: mingw32

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/migrate.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/migrate.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/migrate.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t %S/Inputs/test1.m.in -x objective-c 
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t %S/Inputs/test2.m.in -x objective-c 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %S/Inputs/test1.m.in.result %S/Inputs/test2.m.in.result %S/Inputs/test.h.result
-// RUN: rm -rf %t
-// DISABLE: mingw32

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/no-canceling-bridge-to-bridge-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -verify %s 
-// DISABLE: mingw32
-// rdar://10387088
-typedef const void * CFTypeRef;
-CFTypeRef CFBridgingRetain(id X);
-id CFBridgingRelease(CFTypeRef);
-
-extern 
-CFTypeRef CFRetain(CFTypeRef cf);
-
- at interface INTF
-{
-  void *cf_format;
-  id objc_format;
-}
- at end
-
- at interface NSString
-+ (id)stringWithFormat:(NSString *)format;
- at end
-
- at implementation INTF
-- (void) Meth {
-  NSString *result;
-
-  result = (id) CFRetain([NSString stringWithFormat:@"PBXLoopMode"]); // expected-error {{cast of C pointer type 'CFTypeRef' (aka 'const void *') to Objective-C pointer type 'id' requires a bridged cast}} \
-								      // expected-note {{use __bridge to convert directly (no change in ownership)}} \
-								      // expected-note {{use CFBridgingRelease call to transfer ownership of a +1 'CFTypeRef' (aka 'const void *') into ARC}}
-
-  result = (id) CFRetain((id)((objc_format))); // expected-error {{cast of C pointer type 'CFTypeRef' (aka 'const void *') to Objective-C pointer type 'id' requires a bridged cast}} \
-					       // expected-note {{use __bridge to convert directly (no change in ownership)}} \
-					       // expected-note {{use CFBridgingRelease call to transfer ownership of a +1 'CFTypeRef' (aka 'const void *') into ARC}}
-
-  result = (id) CFRetain((id)((cf_format))); // expected-error {{cast of C pointer type 'CFTypeRef' (aka 'const void *') to Objective-C pointer type 'id' requires a bridged cast}} \
-					     // expected-note {{use __bridge to convert directly (no change in ownership)}} \
-                                             // expected-note {{use CFBridgingRelease call to transfer ownership of a +1 'CFTypeRef' (aka 'const void *') into ARC}}
-
-  result = (id) CFRetain((CFTypeRef)((objc_format)));
-
-  result = (id) CFRetain(cf_format); // OK
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 %s
-// DISABLE: mingw32
-
-#include "Common.h"
-
-typedef const struct __CFString * CFStringRef;
-typedef const void * CFTypeRef;
-CFTypeRef CFBridgingRetain(id X);
-id CFBridgingRelease(CFTypeRef);
-
-struct StrS {
-  CFStringRef sref_member;
-};
-
- at interface NSString : NSObject {
-  CFStringRef sref;
-  struct StrS *strS;
-}
--(id)string;
--(id)newString;
- at end
-
- at implementation NSString
--(id)string {
-  if (0)
-    return sref;
-  else
-    return strS->sref_member;
-}
--(id)newString {
-  return sref; // expected-error {{implicit conversion of C pointer type 'CFStringRef' (aka 'const struct __CFString *') to Objective-C pointer type 'id' requires a bridged cast}} \
-    // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-    // expected-note{{use CFBridgingRelease call to transfer ownership of a +1 'CFStringRef' (aka 'const struct __CFString *') into ARC}}
-}
- at end
-
-void f(BOOL b) {
-  CFStringRef cfstr;
-  NSString *str = (NSString *)cfstr; // expected-error {{cast of C pointer type 'CFStringRef' (aka 'const struct __CFString *') to Objective-C pointer type 'NSString *' requires a bridged cast}} \
-    // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-    // expected-note{{use CFBridgingRelease call to transfer ownership of a +1 'CFStringRef' (aka 'const struct __CFString *') into ARC}}
-  void *vp = str;  // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRetain call}} expected-note {{use __bridge}}
-}
-
-void f2(NSString *s) {
-  CFStringRef ref;
-  ref = [(CFStringRef)[s string] retain]; // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef' (aka 'const struct __CFString *') requires a bridged cast}} \
-    // expected-error {{bad receiver type 'CFStringRef' (aka 'const struct __CFString *')}} \
-    // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-    // expected-note{{use CFBridgingRetain call to make an ARC object available as a +1 'CFStringRef' (aka 'const struct __CFString *')}}
-}
-
-CFStringRef f3() {
-  return (CFStringRef)[[[NSString alloc] init] autorelease]; // expected-error {{it is not safe to cast to 'CFStringRef' the result of 'autorelease' message; a __bridge cast may result in a pointer to a destroyed object and a __bridge_retained may leak the object}} \
-    // expected-note {{remove the cast and change return type of function to 'NSString *' to have the object automatically autoreleased}}
-}
-
-extern void NSLog(NSString *format, ...);
-
-// rdar://13192395
-void f4(NSString *s) {
-  NSLog(@"%@", (CFStringRef)s); // expected-error {{cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' (aka 'const struct __CFString *') requires a bridged cast}} \
-    // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-    // expected-note{{use CFBridgingRetain call to make an ARC object available as a +1 'CFStringRef' (aka 'const struct __CFString *')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-typedef const struct __CFString * CFStringRef;
-extern const CFStringRef kUTTypePlainText;
-extern const CFStringRef kUTTypeRTF;
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFUUID * CFUUIDRef;
-
-extern const CFAllocatorRef kCFAllocatorDefault;
-
-extern CFStringRef CFUUIDCreateString(CFAllocatorRef alloc, CFUUIDRef uuid);
-
-struct StrS {
-  CFStringRef sref_member;
-};
-
- at interface NSString : NSObject {
-  CFStringRef sref;
-  struct StrS *strS;
-}
--(id)string;
--(id)newString;
- at end
-
-void f(BOOL b, id p) {
-  NSString *str = (NSString *)kUTTypePlainText;
-  str = b ? kUTTypeRTF : kUTTypePlainText;
-  str = (NSString *)(b ? kUTTypeRTF : kUTTypePlainText);
-  str = (NSString *)p; // no change.
-
-  CFUUIDRef   _uuid;
-  NSString *_uuidString = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, _uuid);
-  _uuidString = [(NSString *)CFUUIDCreateString(kCFAllocatorDefault, _uuid) autorelease];
-  _uuidString = CFRetain(_uuid);
-}
-
- at implementation NSString (StrExt)
-- (NSString *)stringEscapedAsURI {
-  CFStringRef str = (CFStringRef)self;
-  CFStringRef str2 = self;
-  return self;
-}
- at end
-
- at implementation NSString
--(id)string {
-  if (0)
-    return sref;
-  else
-    return strS->sref_member;
-}
--(id)newString { return 0; }
- at end
-
-extern void consumeParam(CFStringRef CF_CONSUMED p);
-
-void f2(NSString *s) {
-  CFStringRef ref = [s string];
-  ref = (CFStringRef)[s string];
-  ref = s.string;
-  ref = [NSString new];
-  ref = [s newString];
-  ref = (CFStringRef)[NSString new];
-  ref = [[NSString alloc] init];
-  ref = [[s string] retain];
-  ref = CFRetain((CFStringRef)[s string]);
-  ref = CFRetain([s string]);
-  ref = CFRetain(s);
-  ref = [s retain];
-
-  consumeParam((CFStringRef)s);
-  consumeParam(s);
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/nonobjc-to-objc-cast.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-typedef const struct __CFString * CFStringRef;
-extern const CFStringRef kUTTypePlainText;
-extern const CFStringRef kUTTypeRTF;
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFUUID * CFUUIDRef;
-
-extern const CFAllocatorRef kCFAllocatorDefault;
-
-extern CFStringRef CFUUIDCreateString(CFAllocatorRef alloc, CFUUIDRef uuid);
-
-struct StrS {
-  CFStringRef sref_member;
-};
-
- at interface NSString : NSObject {
-  CFStringRef sref;
-  struct StrS *strS;
-}
--(id)string;
--(id)newString;
- at end
-
-void f(BOOL b, id p) {
-  NSString *str = (__bridge NSString *)kUTTypePlainText;
-  str = (__bridge NSString *)(b ? kUTTypeRTF : kUTTypePlainText);
-  str = (__bridge NSString *)(b ? kUTTypeRTF : kUTTypePlainText);
-  str = (NSString *)p; // no change.
-
-  CFUUIDRef   _uuid;
-  NSString *_uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
-  _uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
-  _uuidString = CFBridgingRelease(CFRetain(_uuid));
-}
-
- at implementation NSString (StrExt)
-- (NSString *)stringEscapedAsURI {
-  CFStringRef str = (__bridge CFStringRef)self;
-  CFStringRef str2 = (__bridge CFStringRef)(self);
-  return self;
-}
- at end
-
- at implementation NSString
--(id)string {
-  if (0)
-    return (__bridge id)(sref);
-  else
-    return (__bridge id)(strS->sref_member);
-}
--(id)newString { return 0; }
- at end
-
-extern void consumeParam(CFStringRef CF_CONSUMED p);
-
-void f2(NSString *s) {
-  CFStringRef ref = (__bridge CFStringRef)([s string]);
-  ref = (__bridge CFStringRef)[s string];
-  ref = (__bridge CFStringRef)(s.string);
-  ref = CFBridgingRetain([NSString new]);
-  ref = CFBridgingRetain([s newString]);
-  ref = (CFStringRef)CFBridgingRetain([NSString new]);
-  ref = CFBridgingRetain([[NSString alloc] init]);
-  ref = CFBridgingRetain([s string]);
-  ref = (CFStringRef)CFBridgingRetain([s string]);
-  ref = CFBridgingRetain([s string]);
-  ref = CFBridgingRetain(s);
-  ref = CFBridgingRetain(s);
-
-  consumeParam((CFStringRef)CFBridgingRetain(s));
-  consumeParam(CFBridgingRetain(s));
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-boxing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-boxing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-boxing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c++ -verify
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s.result
-
-#define YES __objc_yes
-#define NO __objc_no
-
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
-#define INT_MIN   (-__INT_MAX__  -1)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-- (id)initWithChar:(char)value;
-- (id)initWithUnsignedChar:(unsigned char)value;
-- (id)initWithShort:(short)value;
-- (id)initWithUnsignedShort:(unsigned short)value;
-- (id)initWithInt:(int)value;
-- (id)initWithUnsignedInt:(unsigned int)value;
-- (id)initWithLong:(long)value;
-- (id)initWithUnsignedLong:(unsigned long)value;
-- (id)initWithLongLong:(long long)value;
-- (id)initWithUnsignedLongLong:(unsigned long long)value;
-- (id)initWithFloat:(float)value;
-- (id)initWithDouble:(double)value;
-- (id)initWithBool:(BOOL)value;
-- (id)initWithInteger:(NSInteger)value;
-- (id)initWithUnsignedInteger:(NSUInteger)value;
-
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
- at end
-
-enum {
-    NSASCIIStringEncoding = 1,
-    NSUTF8StringEncoding = 4,
-    NSUnicodeStringEncoding = 10
-};
-typedef NSUInteger NSStringEncoding;
-
- at interface NSString : NSObject
- at end
-
- at interface NSString (NSStringExtensionMethods)
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc;
-+ (id)stringWithCString:(const char *)bytes;
- at end
-
-enum MyEnm {
-  ME_foo
-};
-
-void foo() {
-  [NSNumber numberWithInt:INT_MIN];
-  bool cppb;
-  [NSNumber numberWithBool:cppb];
-  MyEnm myenum; 
-  [NSNumber numberWithInteger:myenum];
-  [NSNumber numberWithInteger:ME_foo];
-  [NSNumber numberWithDouble:cppb]; // expected-warning {{converting to boxing syntax requires casting 'bool' to 'double'}}
-}
-
-void boxString() {
-  NSString *s = [NSString stringWithUTF8String:"box"];
-  const char *cstr1;
-  char *cstr2;
-  s = [NSString stringWithUTF8String:cstr1];
-  s = [NSString stringWithUTF8String:cstr2];
-  s = [NSString stringWithCString:cstr1 encoding:NSASCIIStringEncoding];
-  s = [NSString stringWithCString:cstr1 encoding:NSUTF8StringEncoding];
-  s = [NSString stringWithCString:cstr1 encoding: NSUnicodeStringEncoding];
-  NSStringEncoding encode;
-  s = [NSString stringWithCString:cstr1 encoding:encode];
-  s = [NSString stringWithCString:cstr1];
-
-  static const char strarr[] = "coolbox";
-  s = [NSString stringWithUTF8String:strarr];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-boxing.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-boxing.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-boxing.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c++ -verify
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s.result
-
-#define YES __objc_yes
-#define NO __objc_no
-
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
-#define INT_MIN   (-__INT_MAX__  -1)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-- (id)initWithChar:(char)value;
-- (id)initWithUnsignedChar:(unsigned char)value;
-- (id)initWithShort:(short)value;
-- (id)initWithUnsignedShort:(unsigned short)value;
-- (id)initWithInt:(int)value;
-- (id)initWithUnsignedInt:(unsigned int)value;
-- (id)initWithLong:(long)value;
-- (id)initWithUnsignedLong:(unsigned long)value;
-- (id)initWithLongLong:(long long)value;
-- (id)initWithUnsignedLongLong:(unsigned long long)value;
-- (id)initWithFloat:(float)value;
-- (id)initWithDouble:(double)value;
-- (id)initWithBool:(BOOL)value;
-- (id)initWithInteger:(NSInteger)value;
-- (id)initWithUnsignedInteger:(NSUInteger)value;
-
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
- at end
-
-enum {
-    NSASCIIStringEncoding = 1,
-    NSUTF8StringEncoding = 4,
-    NSUnicodeStringEncoding = 10
-};
-typedef NSUInteger NSStringEncoding;
-
- at interface NSString : NSObject
- at end
-
- at interface NSString (NSStringExtensionMethods)
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc;
-+ (id)stringWithCString:(const char *)bytes;
- at end
-
-enum MyEnm {
-  ME_foo
-};
-
-void foo() {
-  @INT_MIN;
-  bool cppb;
-  @(cppb);
-  MyEnm myenum; 
-  @(myenum);
-  @(ME_foo);
-  [NSNumber numberWithDouble:cppb]; // expected-warning {{converting to boxing syntax requires casting 'bool' to 'double'}}
-}
-
-void boxString() {
-  NSString *s = @"box";
-  const char *cstr1;
-  char *cstr2;
-  s = @(cstr1);
-  s = @(cstr2);
-  s = @(cstr1);
-  s = @(cstr1);
-  s = [NSString stringWithCString:cstr1 encoding: NSUnicodeStringEncoding];
-  NSStringEncoding encode;
-  s = [NSString stringWithCString:cstr1 encoding:encode];
-  s = @(cstr1);
-
-  static const char strarr[] = "coolbox";
-  s = @(strarr);
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-numeric-literals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-numeric-literals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-numeric-literals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,502 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c++ 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s.result
-
-#define YES __objc_yes
-#define NO __objc_no
-
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-- (id)initWithChar:(char)value;
-- (id)initWithUnsignedChar:(unsigned char)value;
-- (id)initWithShort:(short)value;
-- (id)initWithUnsignedShort:(unsigned short)value;
-- (id)initWithInt:(int)value;
-- (id)initWithUnsignedInt:(unsigned int)value;
-- (id)initWithLong:(long)value;
-- (id)initWithUnsignedLong:(unsigned long)value;
-- (id)initWithLongLong:(long long)value;
-- (id)initWithUnsignedLongLong:(unsigned long long)value;
-- (id)initWithFloat:(float)value;
-- (id)initWithDouble:(double)value;
-- (id)initWithBool:(BOOL)value;
-- (id)initWithInteger:(NSInteger)value;
-- (id)initWithUnsignedInteger:(NSUInteger)value;
-
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
- at end
-
-#define VAL_INT 2
-#define VAL_UINT 2U
-#define VAL_CHAR 'a'
-
-void foo() {
-  [NSNumber numberWithChar:'a'];
-  [NSNumber numberWithChar:L'a'];
-  [NSNumber numberWithChar:2];
-  [NSNumber numberWithChar:2U];
-  [NSNumber numberWithChar:2u];
-  [NSNumber numberWithChar:2L];
-  [NSNumber numberWithChar:2l];
-  [NSNumber numberWithChar:2LL];
-  [NSNumber numberWithChar:2ll];
-  [NSNumber numberWithChar:2ul];
-  [NSNumber numberWithChar:2lu];
-  [NSNumber numberWithChar:2ull];
-  [NSNumber numberWithChar:2llu];
-  [NSNumber numberWithChar:2.0];
-  [NSNumber numberWithChar:2.0f];
-  [NSNumber numberWithChar:2.0F];
-  [NSNumber numberWithChar:2.0l];
-  [NSNumber numberWithChar:2.0L];
-  [NSNumber numberWithChar:0x2f];
-  [NSNumber numberWithChar:04];
-  [NSNumber numberWithChar:0];
-  [NSNumber numberWithChar:0.0];
-  [NSNumber numberWithChar:YES];
-  [NSNumber numberWithChar:NO];
-  [NSNumber numberWithChar:true];
-  [NSNumber numberWithChar:false];
-  [NSNumber numberWithChar:VAL_INT];
-  [NSNumber numberWithChar:VAL_UINT];
-  [NSNumber numberWithChar:VAL_CHAR];
-
-  [NSNumber numberWithUnsignedChar:'a'];
-  [NSNumber numberWithUnsignedChar:L'a'];
-  [NSNumber numberWithUnsignedChar:2];
-  [NSNumber numberWithUnsignedChar:2U];
-  [NSNumber numberWithUnsignedChar:2u];
-  [NSNumber numberWithUnsignedChar:2L];
-  [NSNumber numberWithUnsignedChar:2l];
-  [NSNumber numberWithUnsignedChar:2LL];
-  [NSNumber numberWithUnsignedChar:2ll];
-  [NSNumber numberWithUnsignedChar:2ul];
-  [NSNumber numberWithUnsignedChar:2lu];
-  [NSNumber numberWithUnsignedChar:2ull];
-  [NSNumber numberWithUnsignedChar:2llu];
-  [NSNumber numberWithUnsignedChar:2.0];
-  [NSNumber numberWithUnsignedChar:2.0f];
-  [NSNumber numberWithUnsignedChar:2.0F];
-  [NSNumber numberWithUnsignedChar:2.0l];
-  [NSNumber numberWithUnsignedChar:2.0L];
-  [NSNumber numberWithUnsignedChar:0x2f];
-  [NSNumber numberWithUnsignedChar:04];
-  [NSNumber numberWithUnsignedChar:0];
-  [NSNumber numberWithUnsignedChar:0.0];
-  [NSNumber numberWithUnsignedChar:YES];
-  [NSNumber numberWithUnsignedChar:NO];
-  [NSNumber numberWithUnsignedChar:true];
-  [NSNumber numberWithUnsignedChar:false];
-  [NSNumber numberWithUnsignedChar:VAL_INT];
-  [NSNumber numberWithUnsignedChar:VAL_UINT];
-  [NSNumber numberWithUnsignedChar:VAL_CHAR];
-
-  [NSNumber numberWithShort:'a'];
-  [NSNumber numberWithShort:L'a'];
-  [NSNumber numberWithShort:2];
-  [NSNumber numberWithShort:2U];
-  [NSNumber numberWithShort:2u];
-  [NSNumber numberWithShort:2L];
-  [NSNumber numberWithShort:2l];
-  [NSNumber numberWithShort:2LL];
-  [NSNumber numberWithShort:2ll];
-  [NSNumber numberWithShort:2ul];
-  [NSNumber numberWithShort:2lu];
-  [NSNumber numberWithShort:2ull];
-  [NSNumber numberWithShort:2llu];
-  [NSNumber numberWithShort:2.0];
-  [NSNumber numberWithShort:2.0f];
-  [NSNumber numberWithShort:2.0F];
-  [NSNumber numberWithShort:2.0l];
-  [NSNumber numberWithShort:2.0L];
-  [NSNumber numberWithShort:0x2f];
-  [NSNumber numberWithShort:04];
-  [NSNumber numberWithShort:0];
-  [NSNumber numberWithShort:0.0];
-  [NSNumber numberWithShort:YES];
-  [NSNumber numberWithShort:NO];
-  [NSNumber numberWithShort:true];
-  [NSNumber numberWithShort:false];
-  [NSNumber numberWithShort:VAL_INT];
-  [NSNumber numberWithShort:VAL_UINT];
-
-  [NSNumber numberWithUnsignedShort:'a'];
-  [NSNumber numberWithUnsignedShort:L'a'];
-  [NSNumber numberWithUnsignedShort:2];
-  [NSNumber numberWithUnsignedShort:2U];
-  [NSNumber numberWithUnsignedShort:2u];
-  [NSNumber numberWithUnsignedShort:2L];
-  [NSNumber numberWithUnsignedShort:2l];
-  [NSNumber numberWithUnsignedShort:2LL];
-  [NSNumber numberWithUnsignedShort:2ll];
-  [NSNumber numberWithUnsignedShort:2ul];
-  [NSNumber numberWithUnsignedShort:2lu];
-  [NSNumber numberWithUnsignedShort:2ull];
-  [NSNumber numberWithUnsignedShort:2llu];
-  [NSNumber numberWithUnsignedShort:2.0];
-  [NSNumber numberWithUnsignedShort:2.0f];
-  [NSNumber numberWithUnsignedShort:2.0F];
-  [NSNumber numberWithUnsignedShort:2.0l];
-  [NSNumber numberWithUnsignedShort:2.0L];
-  [NSNumber numberWithUnsignedShort:0x2f];
-  [NSNumber numberWithUnsignedShort:04];
-  [NSNumber numberWithUnsignedShort:0];
-  [NSNumber numberWithUnsignedShort:0.0];
-  [NSNumber numberWithUnsignedShort:YES];
-  [NSNumber numberWithUnsignedShort:NO];
-  [NSNumber numberWithUnsignedShort:true];
-  [NSNumber numberWithUnsignedShort:false];
-  [NSNumber numberWithUnsignedShort:VAL_INT];
-  [NSNumber numberWithUnsignedShort:VAL_UINT];
-
-  [NSNumber numberWithInt:'a'];
-  [NSNumber numberWithInt:L'a'];
-  [NSNumber numberWithInt:2];
-  [NSNumber numberWithInt:2U];
-  [NSNumber numberWithInt:2u];
-  [NSNumber numberWithInt:2L];
-  [NSNumber numberWithInt:2l];
-  [NSNumber numberWithInt:2LL];
-  [NSNumber numberWithInt:2ll];
-  [NSNumber numberWithInt:2ul];
-  [NSNumber numberWithInt:2lu];
-  [NSNumber numberWithInt:2ull];
-  [NSNumber numberWithInt:2llu];
-  [NSNumber numberWithInt:2.0];
-  [NSNumber numberWithInt:2.0f];
-  [NSNumber numberWithInt:2.0F];
-  [NSNumber numberWithInt:2.0l];
-  [NSNumber numberWithInt:2.0L];
-  [NSNumber numberWithInt:0x2f];
-  [NSNumber numberWithInt:04];
-  [NSNumber numberWithInt:0];
-  [NSNumber numberWithInt:0.0];
-  [NSNumber numberWithInt:YES];
-  [NSNumber numberWithInt:NO];
-  [NSNumber numberWithInt:true];
-  [NSNumber numberWithInt:false];
-  [NSNumber numberWithInt:VAL_INT];
-  [NSNumber numberWithInt:VAL_UINT];
-
-  (void)[[NSNumber alloc] initWithInt:2];
-  (void)[[NSNumber alloc] initWithInt:2U];
-
-  [NSNumber numberWithInt:+2];
-  [NSNumber numberWithInt:-2];
-
-  [NSNumber numberWithUnsignedInt:'a'];
-  [NSNumber numberWithUnsignedInt:L'a'];
-  [NSNumber numberWithUnsignedInt:2];
-  [NSNumber numberWithUnsignedInt:2U];
-  [NSNumber numberWithUnsignedInt:2u];
-  [NSNumber numberWithUnsignedInt:2L];
-  [NSNumber numberWithUnsignedInt:2l];
-  [NSNumber numberWithUnsignedInt:2LL];
-  [NSNumber numberWithUnsignedInt:2ll];
-  [NSNumber numberWithUnsignedInt:2ul];
-  [NSNumber numberWithUnsignedInt:2lu];
-  [NSNumber numberWithUnsignedInt:2ull];
-  [NSNumber numberWithUnsignedInt:2llu];
-  [NSNumber numberWithUnsignedInt:2.0];
-  [NSNumber numberWithUnsignedInt:2.0f];
-  [NSNumber numberWithUnsignedInt:2.0F];
-  [NSNumber numberWithUnsignedInt:2.0l];
-  [NSNumber numberWithUnsignedInt:2.0L];
-  [NSNumber numberWithUnsignedInt:0x2f];
-  [NSNumber numberWithUnsignedInt:04];
-  [NSNumber numberWithUnsignedInt:0];
-  [NSNumber numberWithUnsignedInt:0.0];
-  [NSNumber numberWithUnsignedInt:YES];
-  [NSNumber numberWithUnsignedInt:NO];
-  [NSNumber numberWithUnsignedInt:true];
-  [NSNumber numberWithUnsignedInt:false];
-  [NSNumber numberWithUnsignedInt:VAL_INT];
-  [NSNumber numberWithUnsignedInt:VAL_UINT];
-
-  [NSNumber numberWithLong:'a'];
-  [NSNumber numberWithLong:L'a'];
-  [NSNumber numberWithLong:2];
-  [NSNumber numberWithLong:2U];
-  [NSNumber numberWithLong:2u];
-  [NSNumber numberWithLong:2L];
-  [NSNumber numberWithLong:2l];
-  [NSNumber numberWithLong:2LL];
-  [NSNumber numberWithLong:2ll];
-  [NSNumber numberWithLong:2ul];
-  [NSNumber numberWithLong:2lu];
-  [NSNumber numberWithLong:2ull];
-  [NSNumber numberWithLong:2llu];
-  [NSNumber numberWithLong:2.0];
-  [NSNumber numberWithLong:2.0f];
-  [NSNumber numberWithLong:2.0F];
-  [NSNumber numberWithLong:2.0l];
-  [NSNumber numberWithLong:2.0L];
-  [NSNumber numberWithLong:0x2f];
-  [NSNumber numberWithLong:04];
-  [NSNumber numberWithLong:0];
-  [NSNumber numberWithLong:0.0];
-  [NSNumber numberWithLong:YES];
-  [NSNumber numberWithLong:NO];
-  [NSNumber numberWithLong:true];
-  [NSNumber numberWithLong:false];
-  [NSNumber numberWithLong:VAL_INT];
-  [NSNumber numberWithLong:VAL_UINT];
-
-  [NSNumber numberWithUnsignedLong:'a'];
-  [NSNumber numberWithUnsignedLong:L'a'];
-  [NSNumber numberWithUnsignedLong:2];
-  [NSNumber numberWithUnsignedLong:2U];
-  [NSNumber numberWithUnsignedLong:2u];
-  [NSNumber numberWithUnsignedLong:2L];
-  [NSNumber numberWithUnsignedLong:2l];
-  [NSNumber numberWithUnsignedLong:2LL];
-  [NSNumber numberWithUnsignedLong:2ll];
-  [NSNumber numberWithUnsignedLong:2ul];
-  [NSNumber numberWithUnsignedLong:2lu];
-  [NSNumber numberWithUnsignedLong:2ull];
-  [NSNumber numberWithUnsignedLong:2llu];
-  [NSNumber numberWithUnsignedLong:2.0];
-  [NSNumber numberWithUnsignedLong:2.0f];
-  [NSNumber numberWithUnsignedLong:2.0F];
-  [NSNumber numberWithUnsignedLong:2.0l];
-  [NSNumber numberWithUnsignedLong:2.0L];
-  [NSNumber numberWithUnsignedLong:0x2f];
-  [NSNumber numberWithUnsignedLong:04];
-  [NSNumber numberWithUnsignedLong:0];
-  [NSNumber numberWithUnsignedLong:0.0];
-  [NSNumber numberWithUnsignedLong:YES];
-  [NSNumber numberWithUnsignedLong:NO];
-  [NSNumber numberWithUnsignedLong:true];
-  [NSNumber numberWithUnsignedLong:false];
-  [NSNumber numberWithUnsignedLong:VAL_INT];
-  [NSNumber numberWithUnsignedLong:VAL_UINT];
-
-  [NSNumber numberWithLongLong:'a'];
-  [NSNumber numberWithLongLong:L'a'];
-  [NSNumber numberWithLongLong:2];
-  [NSNumber numberWithLongLong:2U];
-  [NSNumber numberWithLongLong:2u];
-  [NSNumber numberWithLongLong:2L];
-  [NSNumber numberWithLongLong:2l];
-  [NSNumber numberWithLongLong:2LL];
-  [NSNumber numberWithLongLong:2ll];
-  [NSNumber numberWithLongLong:2ul];
-  [NSNumber numberWithLongLong:2lu];
-  [NSNumber numberWithLongLong:2ull];
-  [NSNumber numberWithLongLong:2llu];
-  [NSNumber numberWithLongLong:2.0];
-  [NSNumber numberWithLongLong:2.0f];
-  [NSNumber numberWithLongLong:2.0F];
-  [NSNumber numberWithLongLong:2.0l];
-  [NSNumber numberWithLongLong:2.0L];
-  [NSNumber numberWithLongLong:0x2f];
-  [NSNumber numberWithLongLong:04];
-  [NSNumber numberWithLongLong:0];
-  [NSNumber numberWithLongLong:0.0];
-  [NSNumber numberWithLongLong:YES];
-  [NSNumber numberWithLongLong:NO];
-  [NSNumber numberWithLongLong:true];
-  [NSNumber numberWithLongLong:false];
-  [NSNumber numberWithLongLong:VAL_INT];
-  [NSNumber numberWithLongLong:VAL_UINT];
-
-  [NSNumber numberWithUnsignedLongLong:'a'];
-  [NSNumber numberWithUnsignedLongLong:L'a'];
-  [NSNumber numberWithUnsignedLongLong:2];
-  [NSNumber numberWithUnsignedLongLong:2U];
-  [NSNumber numberWithUnsignedLongLong:2u];
-  [NSNumber numberWithUnsignedLongLong:2L];
-  [NSNumber numberWithUnsignedLongLong:2l];
-  [NSNumber numberWithUnsignedLongLong:2LL];
-  [NSNumber numberWithUnsignedLongLong:2ll];
-  [NSNumber numberWithUnsignedLongLong:2ul];
-  [NSNumber numberWithUnsignedLongLong:2lu];
-  [NSNumber numberWithUnsignedLongLong:2ull];
-  [NSNumber numberWithUnsignedLongLong:2llu];
-  [NSNumber numberWithUnsignedLongLong:2.0];
-  [NSNumber numberWithUnsignedLongLong:2.0f];
-  [NSNumber numberWithUnsignedLongLong:2.0F];
-  [NSNumber numberWithUnsignedLongLong:2.0l];
-  [NSNumber numberWithUnsignedLongLong:2.0L];
-  [NSNumber numberWithUnsignedLongLong:0x2f];
-  [NSNumber numberWithUnsignedLongLong:04];
-  [NSNumber numberWithUnsignedLongLong:0];
-  [NSNumber numberWithUnsignedLongLong:0.0];
-  [NSNumber numberWithUnsignedLongLong:YES];
-  [NSNumber numberWithUnsignedLongLong:NO];
-  [NSNumber numberWithUnsignedLongLong:true];
-  [NSNumber numberWithUnsignedLongLong:false];
-  [NSNumber numberWithUnsignedLongLong:VAL_INT];
-  [NSNumber numberWithUnsignedLongLong:VAL_UINT];
-
-  [NSNumber numberWithFloat:'a'];
-  [NSNumber numberWithFloat:L'a'];
-  [NSNumber numberWithFloat:2];
-  [NSNumber numberWithFloat:2U];
-  [NSNumber numberWithFloat:2u];
-  [NSNumber numberWithFloat:2L];
-  [NSNumber numberWithFloat:2l];
-  [NSNumber numberWithFloat:2LL];
-  [NSNumber numberWithFloat:2ll];
-  [NSNumber numberWithFloat:2ul];
-  [NSNumber numberWithFloat:2lu];
-  [NSNumber numberWithFloat:2ull];
-  [NSNumber numberWithFloat:2llu];
-  [NSNumber numberWithFloat:2.0];
-  [NSNumber numberWithFloat:2.0f];
-  [NSNumber numberWithFloat:2.0F];
-  [NSNumber numberWithFloat:2.0l];
-  [NSNumber numberWithFloat:2.0L];
-  [NSNumber numberWithFloat:0x2f];
-  [NSNumber numberWithFloat:04];
-  [NSNumber numberWithFloat:0];
-  [NSNumber numberWithFloat:0.0];
-  [NSNumber numberWithFloat:YES];
-  [NSNumber numberWithFloat:NO];
-  [NSNumber numberWithFloat:true];
-  [NSNumber numberWithFloat:false];
-  [NSNumber numberWithFloat:VAL_INT];
-  [NSNumber numberWithFloat:VAL_UINT];
-
-  [NSNumber numberWithDouble:'a'];
-  [NSNumber numberWithDouble:L'a'];
-  [NSNumber numberWithDouble:2];
-  [NSNumber numberWithDouble:2U];
-  [NSNumber numberWithDouble:2u];
-  [NSNumber numberWithDouble:2L];
-  [NSNumber numberWithDouble:2l];
-  [NSNumber numberWithDouble:2LL];
-  [NSNumber numberWithDouble:2ll];
-  [NSNumber numberWithDouble:2ul];
-  [NSNumber numberWithDouble:2lu];
-  [NSNumber numberWithDouble:2ull];
-  [NSNumber numberWithDouble:2llu];
-  [NSNumber numberWithDouble:2.0];
-  [NSNumber numberWithDouble:2.0f];
-  [NSNumber numberWithDouble:2.0F];
-  [NSNumber numberWithDouble:2.0l];
-  [NSNumber numberWithDouble:2.0L];
-  [NSNumber numberWithDouble:0x2f];
-  [NSNumber numberWithDouble:04];
-  [NSNumber numberWithDouble:0];
-  [NSNumber numberWithDouble:0.0];
-  [NSNumber numberWithDouble:YES];
-  [NSNumber numberWithDouble:NO];
-  [NSNumber numberWithDouble:true];
-  [NSNumber numberWithDouble:false];
-  [NSNumber numberWithDouble:VAL_INT];
-  [NSNumber numberWithDouble:VAL_UINT];
-
-  [NSNumber numberWithBool:'a'];
-  [NSNumber numberWithBool:L'a'];
-  [NSNumber numberWithBool:2];
-  [NSNumber numberWithBool:2U];
-  [NSNumber numberWithBool:2u];
-  [NSNumber numberWithBool:2L];
-  [NSNumber numberWithBool:2l];
-  [NSNumber numberWithBool:2LL];
-  [NSNumber numberWithBool:2ll];
-  [NSNumber numberWithBool:2ul];
-  [NSNumber numberWithBool:2lu];
-  [NSNumber numberWithBool:2ull];
-  [NSNumber numberWithBool:2llu];
-  [NSNumber numberWithBool:2.0];
-  [NSNumber numberWithBool:2.0f];
-  [NSNumber numberWithBool:2.0F];
-  [NSNumber numberWithBool:2.0l];
-  [NSNumber numberWithBool:2.0L];
-  [NSNumber numberWithBool:0x2f];
-  [NSNumber numberWithBool:04];
-  [NSNumber numberWithBool:0];
-  [NSNumber numberWithBool:0.0];
-  [NSNumber numberWithBool:YES];
-  [NSNumber numberWithBool:NO];
-  [NSNumber numberWithBool:true];
-  [NSNumber numberWithBool:false];
-  [NSNumber numberWithBool:VAL_INT];
-  [NSNumber numberWithBool:VAL_UINT];
-
-  [NSNumber numberWithInteger:'a'];
-  [NSNumber numberWithInteger:L'a'];
-  [NSNumber numberWithInteger:2];
-  [NSNumber numberWithInteger:2U];
-  [NSNumber numberWithInteger:2u];
-  [NSNumber numberWithInteger:2L];
-  [NSNumber numberWithInteger:2l];
-  [NSNumber numberWithInteger:2LL];
-  [NSNumber numberWithInteger:2ll];
-  [NSNumber numberWithInteger:2ul];
-  [NSNumber numberWithInteger:2lu];
-  [NSNumber numberWithInteger:2ull];
-  [NSNumber numberWithInteger:2llu];
-  [NSNumber numberWithInteger:2.0];
-  [NSNumber numberWithInteger:2.0f];
-  [NSNumber numberWithInteger:2.0F];
-  [NSNumber numberWithInteger:2.0l];
-  [NSNumber numberWithInteger:2.0L];
-  [NSNumber numberWithInteger:0x2f];
-  [NSNumber numberWithInteger:04];
-  [NSNumber numberWithInteger:0];
-  [NSNumber numberWithInteger:0.0];
-  [NSNumber numberWithInteger:YES];
-  [NSNumber numberWithInteger:NO];
-  [NSNumber numberWithInteger:true];
-  [NSNumber numberWithInteger:false];
-  [NSNumber numberWithInteger:VAL_INT];
-  [NSNumber numberWithInteger:VAL_UINT];
-
-  [NSNumber numberWithUnsignedInteger:'a'];
-  [NSNumber numberWithUnsignedInteger:L'a'];
-  [NSNumber numberWithUnsignedInteger:2];
-  [NSNumber numberWithUnsignedInteger:2U];
-  [NSNumber numberWithUnsignedInteger:2u];
-  [NSNumber numberWithUnsignedInteger:2L];
-  [NSNumber numberWithUnsignedInteger:2l];
-  [NSNumber numberWithUnsignedInteger:2LL];
-  [NSNumber numberWithUnsignedInteger:2ll];
-  [NSNumber numberWithUnsignedInteger:2ul];
-  [NSNumber numberWithUnsignedInteger:2lu];
-  [NSNumber numberWithUnsignedInteger:2ull];
-  [NSNumber numberWithUnsignedInteger:2llu];
-  [NSNumber numberWithUnsignedInteger:2.0];
-  [NSNumber numberWithUnsignedInteger:2.0f];
-  [NSNumber numberWithUnsignedInteger:2.0F];
-  [NSNumber numberWithUnsignedInteger:2.0l];
-  [NSNumber numberWithUnsignedInteger:2.0L];
-  [NSNumber numberWithUnsignedInteger:0x2f];
-  [NSNumber numberWithUnsignedInteger:04];
-  [NSNumber numberWithUnsignedInteger:0];
-  [NSNumber numberWithUnsignedInteger:0.0];
-  [NSNumber numberWithUnsignedInteger:YES];
-  [NSNumber numberWithUnsignedInteger:NO];
-  [NSNumber numberWithUnsignedInteger:true];
-  [NSNumber numberWithUnsignedInteger:false];
-  [NSNumber numberWithUnsignedInteger:VAL_INT];
-  [NSNumber numberWithUnsignedInteger:VAL_UINT];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-numeric-literals.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-numeric-literals.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-numeric-literals.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,502 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c++ 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c++ %s.result
-
-#define YES __objc_yes
-#define NO __objc_no
-
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-- (id)initWithChar:(char)value;
-- (id)initWithUnsignedChar:(unsigned char)value;
-- (id)initWithShort:(short)value;
-- (id)initWithUnsignedShort:(unsigned short)value;
-- (id)initWithInt:(int)value;
-- (id)initWithUnsignedInt:(unsigned int)value;
-- (id)initWithLong:(long)value;
-- (id)initWithUnsignedLong:(unsigned long)value;
-- (id)initWithLongLong:(long long)value;
-- (id)initWithUnsignedLongLong:(unsigned long long)value;
-- (id)initWithFloat:(float)value;
-- (id)initWithDouble:(double)value;
-- (id)initWithBool:(BOOL)value;
-- (id)initWithInteger:(NSInteger)value;
-- (id)initWithUnsignedInteger:(NSUInteger)value;
-
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
- at end
-
-#define VAL_INT 2
-#define VAL_UINT 2U
-#define VAL_CHAR 'a'
-
-void foo() {
-  @'a';
-  [NSNumber numberWithChar:L'a'];
-  [NSNumber numberWithChar:2];
-  [NSNumber numberWithChar:2U];
-  [NSNumber numberWithChar:2u];
-  [NSNumber numberWithChar:2L];
-  [NSNumber numberWithChar:2l];
-  [NSNumber numberWithChar:2LL];
-  [NSNumber numberWithChar:2ll];
-  [NSNumber numberWithChar:2ul];
-  [NSNumber numberWithChar:2lu];
-  [NSNumber numberWithChar:2ull];
-  [NSNumber numberWithChar:2llu];
-  [NSNumber numberWithChar:2.0];
-  [NSNumber numberWithChar:2.0f];
-  [NSNumber numberWithChar:2.0F];
-  [NSNumber numberWithChar:2.0l];
-  [NSNumber numberWithChar:2.0L];
-  [NSNumber numberWithChar:0x2f];
-  [NSNumber numberWithChar:04];
-  [NSNumber numberWithChar:0];
-  [NSNumber numberWithChar:0.0];
-  [NSNumber numberWithChar:YES];
-  [NSNumber numberWithChar:NO];
-  [NSNumber numberWithChar:true];
-  [NSNumber numberWithChar:false];
-  [NSNumber numberWithChar:VAL_INT];
-  [NSNumber numberWithChar:VAL_UINT];
-  @VAL_CHAR;
-
-  [NSNumber numberWithUnsignedChar:'a'];
-  [NSNumber numberWithUnsignedChar:L'a'];
-  [NSNumber numberWithUnsignedChar:2];
-  [NSNumber numberWithUnsignedChar:2U];
-  [NSNumber numberWithUnsignedChar:2u];
-  [NSNumber numberWithUnsignedChar:2L];
-  [NSNumber numberWithUnsignedChar:2l];
-  [NSNumber numberWithUnsignedChar:2LL];
-  [NSNumber numberWithUnsignedChar:2ll];
-  [NSNumber numberWithUnsignedChar:2ul];
-  [NSNumber numberWithUnsignedChar:2lu];
-  [NSNumber numberWithUnsignedChar:2ull];
-  [NSNumber numberWithUnsignedChar:2llu];
-  [NSNumber numberWithUnsignedChar:2.0];
-  [NSNumber numberWithUnsignedChar:2.0f];
-  [NSNumber numberWithUnsignedChar:2.0F];
-  [NSNumber numberWithUnsignedChar:2.0l];
-  [NSNumber numberWithUnsignedChar:2.0L];
-  [NSNumber numberWithUnsignedChar:0x2f];
-  [NSNumber numberWithUnsignedChar:04];
-  [NSNumber numberWithUnsignedChar:0];
-  [NSNumber numberWithUnsignedChar:0.0];
-  [NSNumber numberWithUnsignedChar:YES];
-  [NSNumber numberWithUnsignedChar:NO];
-  [NSNumber numberWithUnsignedChar:true];
-  [NSNumber numberWithUnsignedChar:false];
-  [NSNumber numberWithUnsignedChar:VAL_INT];
-  [NSNumber numberWithUnsignedChar:VAL_UINT];
-  [NSNumber numberWithUnsignedChar:VAL_CHAR];
-
-  [NSNumber numberWithShort:'a'];
-  [NSNumber numberWithShort:L'a'];
-  [NSNumber numberWithShort:2];
-  [NSNumber numberWithShort:2U];
-  [NSNumber numberWithShort:2u];
-  [NSNumber numberWithShort:2L];
-  [NSNumber numberWithShort:2l];
-  [NSNumber numberWithShort:2LL];
-  [NSNumber numberWithShort:2ll];
-  [NSNumber numberWithShort:2ul];
-  [NSNumber numberWithShort:2lu];
-  [NSNumber numberWithShort:2ull];
-  [NSNumber numberWithShort:2llu];
-  [NSNumber numberWithShort:2.0];
-  [NSNumber numberWithShort:2.0f];
-  [NSNumber numberWithShort:2.0F];
-  [NSNumber numberWithShort:2.0l];
-  [NSNumber numberWithShort:2.0L];
-  [NSNumber numberWithShort:0x2f];
-  [NSNumber numberWithShort:04];
-  [NSNumber numberWithShort:0];
-  [NSNumber numberWithShort:0.0];
-  [NSNumber numberWithShort:YES];
-  [NSNumber numberWithShort:NO];
-  [NSNumber numberWithShort:true];
-  [NSNumber numberWithShort:false];
-  [NSNumber numberWithShort:VAL_INT];
-  [NSNumber numberWithShort:VAL_UINT];
-
-  [NSNumber numberWithUnsignedShort:'a'];
-  [NSNumber numberWithUnsignedShort:L'a'];
-  [NSNumber numberWithUnsignedShort:2];
-  [NSNumber numberWithUnsignedShort:2U];
-  [NSNumber numberWithUnsignedShort:2u];
-  [NSNumber numberWithUnsignedShort:2L];
-  [NSNumber numberWithUnsignedShort:2l];
-  [NSNumber numberWithUnsignedShort:2LL];
-  [NSNumber numberWithUnsignedShort:2ll];
-  [NSNumber numberWithUnsignedShort:2ul];
-  [NSNumber numberWithUnsignedShort:2lu];
-  [NSNumber numberWithUnsignedShort:2ull];
-  [NSNumber numberWithUnsignedShort:2llu];
-  [NSNumber numberWithUnsignedShort:2.0];
-  [NSNumber numberWithUnsignedShort:2.0f];
-  [NSNumber numberWithUnsignedShort:2.0F];
-  [NSNumber numberWithUnsignedShort:2.0l];
-  [NSNumber numberWithUnsignedShort:2.0L];
-  [NSNumber numberWithUnsignedShort:0x2f];
-  [NSNumber numberWithUnsignedShort:04];
-  [NSNumber numberWithUnsignedShort:0];
-  [NSNumber numberWithUnsignedShort:0.0];
-  [NSNumber numberWithUnsignedShort:YES];
-  [NSNumber numberWithUnsignedShort:NO];
-  [NSNumber numberWithUnsignedShort:true];
-  [NSNumber numberWithUnsignedShort:false];
-  [NSNumber numberWithUnsignedShort:VAL_INT];
-  [NSNumber numberWithUnsignedShort:VAL_UINT];
-
-  [NSNumber numberWithInt:'a'];
-  [NSNumber numberWithInt:L'a'];
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  [NSNumber numberWithInt:2.0];
-  [NSNumber numberWithInt:2.0f];
-  [NSNumber numberWithInt:2.0F];
-  [NSNumber numberWithInt:2.0l];
-  [NSNumber numberWithInt:2.0L];
-  @0x2f;
-  @04;
-  @0;
-  [NSNumber numberWithInt:0.0];
-  [NSNumber numberWithInt:YES];
-  [NSNumber numberWithInt:NO];
-  [NSNumber numberWithInt:true];
-  [NSNumber numberWithInt:false];
-  @VAL_INT;
-  [NSNumber numberWithInt:VAL_UINT];
-
-  (void)[[NSNumber alloc] initWithInt:2];
-  (void)[[NSNumber alloc] initWithInt:2U];
-
-  @+2;
-  @-2;
-
-  [NSNumber numberWithUnsignedInt:'a'];
-  [NSNumber numberWithUnsignedInt:L'a'];
-  @2U;
-  @2U;
-  @2u;
-  @2U;
-  @2u;
-  @2U;
-  @2u;
-  @2u;
-  @2u;
-  @2u;
-  @2u;
-  [NSNumber numberWithUnsignedInt:2.0];
-  [NSNumber numberWithUnsignedInt:2.0f];
-  [NSNumber numberWithUnsignedInt:2.0F];
-  [NSNumber numberWithUnsignedInt:2.0l];
-  [NSNumber numberWithUnsignedInt:2.0L];
-  @0x2fU;
-  @04U;
-  @0U;
-  [NSNumber numberWithUnsignedInt:0.0];
-  [NSNumber numberWithUnsignedInt:YES];
-  [NSNumber numberWithUnsignedInt:NO];
-  [NSNumber numberWithUnsignedInt:true];
-  [NSNumber numberWithUnsignedInt:false];
-  [NSNumber numberWithUnsignedInt:VAL_INT];
-  @VAL_UINT;
-
-  [NSNumber numberWithLong:'a'];
-  [NSNumber numberWithLong:L'a'];
-  @2L;
-  @2L;
-  @2l;
-  @2L;
-  @2l;
-  @2L;
-  @2l;
-  @2l;
-  @2l;
-  @2l;
-  @2l;
-  [NSNumber numberWithLong:2.0];
-  [NSNumber numberWithLong:2.0f];
-  [NSNumber numberWithLong:2.0F];
-  [NSNumber numberWithLong:2.0l];
-  [NSNumber numberWithLong:2.0L];
-  @0x2fL;
-  @04L;
-  @0L;
-  [NSNumber numberWithLong:0.0];
-  [NSNumber numberWithLong:YES];
-  [NSNumber numberWithLong:NO];
-  [NSNumber numberWithLong:true];
-  [NSNumber numberWithLong:false];
-  [NSNumber numberWithLong:VAL_INT];
-  [NSNumber numberWithLong:VAL_UINT];
-
-  [NSNumber numberWithUnsignedLong:'a'];
-  [NSNumber numberWithUnsignedLong:L'a'];
-  @2UL;
-  @2UL;
-  @2ul;
-  @2UL;
-  @2ul;
-  @2UL;
-  @2ul;
-  @2ul;
-  @2lu;
-  @2ul;
-  @2ul;
-  [NSNumber numberWithUnsignedLong:2.0];
-  [NSNumber numberWithUnsignedLong:2.0f];
-  [NSNumber numberWithUnsignedLong:2.0F];
-  [NSNumber numberWithUnsignedLong:2.0l];
-  [NSNumber numberWithUnsignedLong:2.0L];
-  @0x2fUL;
-  @04UL;
-  @0UL;
-  [NSNumber numberWithUnsignedLong:0.0];
-  [NSNumber numberWithUnsignedLong:YES];
-  [NSNumber numberWithUnsignedLong:NO];
-  [NSNumber numberWithUnsignedLong:true];
-  [NSNumber numberWithUnsignedLong:false];
-  [NSNumber numberWithUnsignedLong:VAL_INT];
-  [NSNumber numberWithUnsignedLong:VAL_UINT];
-
-  [NSNumber numberWithLongLong:'a'];
-  [NSNumber numberWithLongLong:L'a'];
-  @2LL;
-  @2LL;
-  @2ll;
-  @2LL;
-  @2ll;
-  @2LL;
-  @2ll;
-  @2ll;
-  @2ll;
-  @2ll;
-  @2ll;
-  [NSNumber numberWithLongLong:2.0];
-  [NSNumber numberWithLongLong:2.0f];
-  [NSNumber numberWithLongLong:2.0F];
-  [NSNumber numberWithLongLong:2.0l];
-  [NSNumber numberWithLongLong:2.0L];
-  @0x2fLL;
-  @04LL;
-  @0LL;
-  [NSNumber numberWithLongLong:0.0];
-  [NSNumber numberWithLongLong:YES];
-  [NSNumber numberWithLongLong:NO];
-  [NSNumber numberWithLongLong:true];
-  [NSNumber numberWithLongLong:false];
-  [NSNumber numberWithLongLong:VAL_INT];
-  [NSNumber numberWithLongLong:VAL_UINT];
-
-  [NSNumber numberWithUnsignedLongLong:'a'];
-  [NSNumber numberWithUnsignedLongLong:L'a'];
-  @2ULL;
-  @2ULL;
-  @2ull;
-  @2ULL;
-  @2ull;
-  @2ULL;
-  @2ull;
-  @2ull;
-  @2ull;
-  @2ull;
-  @2llu;
-  [NSNumber numberWithUnsignedLongLong:2.0];
-  [NSNumber numberWithUnsignedLongLong:2.0f];
-  [NSNumber numberWithUnsignedLongLong:2.0F];
-  [NSNumber numberWithUnsignedLongLong:2.0l];
-  [NSNumber numberWithUnsignedLongLong:2.0L];
-  @0x2fULL;
-  @04ULL;
-  @0ULL;
-  [NSNumber numberWithUnsignedLongLong:0.0];
-  [NSNumber numberWithUnsignedLongLong:YES];
-  [NSNumber numberWithUnsignedLongLong:NO];
-  [NSNumber numberWithUnsignedLongLong:true];
-  [NSNumber numberWithUnsignedLongLong:false];
-  [NSNumber numberWithUnsignedLongLong:VAL_INT];
-  [NSNumber numberWithUnsignedLongLong:VAL_UINT];
-
-  [NSNumber numberWithFloat:'a'];
-  [NSNumber numberWithFloat:L'a'];
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0f;
-  @2.0F;
-  @2.0f;
-  @2.0f;
-  [NSNumber numberWithFloat:0x2f];
-  [NSNumber numberWithFloat:04];
-  @0.0f;
-  @0.0f;
-  [NSNumber numberWithFloat:YES];
-  [NSNumber numberWithFloat:NO];
-  [NSNumber numberWithFloat:true];
-  [NSNumber numberWithFloat:false];
-  [NSNumber numberWithFloat:VAL_INT];
-  [NSNumber numberWithFloat:VAL_UINT];
-
-  [NSNumber numberWithDouble:'a'];
-  [NSNumber numberWithDouble:L'a'];
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  @2.0;
-  [NSNumber numberWithDouble:0x2f];
-  [NSNumber numberWithDouble:04];
-  @0.0;
-  @0.0;
-  [NSNumber numberWithDouble:YES];
-  [NSNumber numberWithDouble:NO];
-  [NSNumber numberWithDouble:true];
-  [NSNumber numberWithDouble:false];
-  [NSNumber numberWithDouble:VAL_INT];
-  [NSNumber numberWithDouble:VAL_UINT];
-
-  [NSNumber numberWithBool:'a'];
-  [NSNumber numberWithBool:L'a'];
-  [NSNumber numberWithBool:2];
-  [NSNumber numberWithBool:2U];
-  [NSNumber numberWithBool:2u];
-  [NSNumber numberWithBool:2L];
-  [NSNumber numberWithBool:2l];
-  [NSNumber numberWithBool:2LL];
-  [NSNumber numberWithBool:2ll];
-  [NSNumber numberWithBool:2ul];
-  [NSNumber numberWithBool:2lu];
-  [NSNumber numberWithBool:2ull];
-  [NSNumber numberWithBool:2llu];
-  [NSNumber numberWithBool:2.0];
-  [NSNumber numberWithBool:2.0f];
-  [NSNumber numberWithBool:2.0F];
-  [NSNumber numberWithBool:2.0l];
-  [NSNumber numberWithBool:2.0L];
-  [NSNumber numberWithBool:0x2f];
-  [NSNumber numberWithBool:04];
-  [NSNumber numberWithBool:0];
-  [NSNumber numberWithBool:0.0];
-  @YES;
-  @NO;
-  @true;
-  @false;
-  [NSNumber numberWithBool:VAL_INT];
-  [NSNumber numberWithBool:VAL_UINT];
-
-  [NSNumber numberWithInteger:'a'];
-  [NSNumber numberWithInteger:L'a'];
-  @2;
-  @2;
-  @2;
-  @2L;
-  @2l;
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  @2;
-  [NSNumber numberWithInteger:2.0];
-  [NSNumber numberWithInteger:2.0f];
-  [NSNumber numberWithInteger:2.0F];
-  [NSNumber numberWithInteger:2.0l];
-  [NSNumber numberWithInteger:2.0L];
-  @0x2f;
-  @04;
-  @0;
-  [NSNumber numberWithInteger:0.0];
-  [NSNumber numberWithInteger:YES];
-  [NSNumber numberWithInteger:NO];
-  [NSNumber numberWithInteger:true];
-  [NSNumber numberWithInteger:false];
-  @VAL_INT;
-  [NSNumber numberWithInteger:VAL_UINT];
-
-  [NSNumber numberWithUnsignedInteger:'a'];
-  [NSNumber numberWithUnsignedInteger:L'a'];
-  @2U;
-  @2U;
-  @2u;
-  @2U;
-  @2u;
-  @2U;
-  @2u;
-  @2ul;
-  @2lu;
-  @2u;
-  @2u;
-  [NSNumber numberWithUnsignedInteger:2.0];
-  [NSNumber numberWithUnsignedInteger:2.0f];
-  [NSNumber numberWithUnsignedInteger:2.0F];
-  [NSNumber numberWithUnsignedInteger:2.0l];
-  [NSNumber numberWithUnsignedInteger:2.0L];
-  @0x2fU;
-  @04U;
-  @0U;
-  [NSNumber numberWithUnsignedInteger:0.0];
-  [NSNumber numberWithUnsignedInteger:YES];
-  [NSNumber numberWithUnsignedInteger:NO];
-  [NSNumber numberWithUnsignedInteger:true];
-  [NSNumber numberWithUnsignedInteger:false];
-  [NSNumber numberWithUnsignedInteger:VAL_INT];
-  @VAL_UINT;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fobjc-arc -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -fobjc-arc -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result
-
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
-typedef const struct __CFString * CFStringRef;
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at protocol NSCopying
- at end
-
- at interface NSString : NSObject
-+ (id)stringWithString:(NSString *)string;
-- (id)initWithString:(NSString *)aString;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSArray (NSExtendedArray)
-- (id)objectAtIndexedSubscript:(unsigned)idx;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ...;
-+ (id)arrayWithArray:(NSArray *)array;
-
-- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
-- (id)initWithObjects:(id)firstObj, ...;
-- (id)initWithArray:(NSArray *)array;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface NSMutableArray (NSExtendedMutableArray)
-- (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx;
- at end
-
- at interface NSDictionary : NSObject
-- (id)objectForKey:(id)aKey;
- at end
-
- at interface NSDictionary (NSExtendedDictionary)
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
-+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-- (id)initWithObjectsAndKeys:(id)firstObject, ...;
-- (id)initWithDictionary:(NSDictionary *)otherDictionary;
-- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end
-
- at interface NSMutableDictionary (NSExtendedMutableDictionary)
-- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithInt:(int)value;
-- (id)initWithInt:(int)value;
- at end
-
- at interface I {
-  NSArray *ivarArr;
-}
- at end
- at implementation I
--(void) foo {
-  NSString *str;
-  NSArray *arr;
-  NSDictionary *dict;
-
-  arr = [NSArray arrayWithObjects:str, str, nil];
-  arr = [[NSArray alloc] initWithObjects:str, str, nil];
-  dict = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"key1", @"value2", @"key2", nil];
-  dict = [[NSDictionary alloc] initWithObjectsAndKeys: @"value1", @"key1", @"value2", @"key2", nil];
-
-  dict = [[NSDictionary alloc] initWithObjects:[[NSArray alloc] initWithObjects:@"1", @"2", nil] forKeys:[NSArray arrayWithObjects:@"A", @"B", nil]];
-
-  NSNumber *n = [[NSNumber alloc] initWithInt:2];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals-in-arc.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fobjc-arc -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -fobjc-arc -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result
-
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
-typedef const struct __CFString * CFStringRef;
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at protocol NSCopying
- at end
-
- at interface NSString : NSObject
-+ (id)stringWithString:(NSString *)string;
-- (id)initWithString:(NSString *)aString;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSArray (NSExtendedArray)
-- (id)objectAtIndexedSubscript:(unsigned)idx;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ...;
-+ (id)arrayWithArray:(NSArray *)array;
-
-- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
-- (id)initWithObjects:(id)firstObj, ...;
-- (id)initWithArray:(NSArray *)array;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface NSMutableArray (NSExtendedMutableArray)
-- (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx;
- at end
-
- at interface NSDictionary : NSObject
-- (id)objectForKey:(id)aKey;
- at end
-
- at interface NSDictionary (NSExtendedDictionary)
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
-+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-- (id)initWithObjectsAndKeys:(id)firstObject, ...;
-- (id)initWithDictionary:(NSDictionary *)otherDictionary;
-- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end
-
- at interface NSMutableDictionary (NSExtendedMutableDictionary)
-- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithInt:(int)value;
-- (id)initWithInt:(int)value;
- at end
-
- at interface I {
-  NSArray *ivarArr;
-}
- at end
- at implementation I
--(void) foo {
-  NSString *str;
-  NSArray *arr;
-  NSDictionary *dict;
-
-  arr = @[str, str];
-  arr = @[str, str];
-  dict = @{@"key1": @"value1", @"key2": @"value2"};
-  dict = @{@"key1": @"value1", @"key2": @"value2"};
-
-  dict = @{@"A": @"1", @"B": @"2"};
-
-  NSNumber *n = @2;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,228 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result
-
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
-typedef const struct __CFString * CFStringRef;
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at protocol NSCopying
- at end
-
- at interface NSString : NSObject
-+ (id)stringWithString:(NSString *)string;
-- (id)initWithString:(NSString *)aString;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSArray (NSExtendedArray)
-- (id)objectAtIndexedSubscript:(unsigned)idx;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ...;
-+ (id)arrayWithArray:(NSArray *)array;
-
-- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
-- (id)initWithObjects:(id)firstObj, ...;
-- (id)initWithArray:(NSArray *)array;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface NSMutableArray (NSExtendedMutableArray)
-- (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx;
- at end
-
- at interface NSDictionary : NSObject
-- (id)objectForKey:(id)aKey;
- at end
-
- at interface NSDictionary (NSExtendedDictionary)
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
-+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-- (id)initWithObjectsAndKeys:(id)firstObject, ...;
-- (id)initWithDictionary:(NSDictionary *)otherDictionary;
-- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end
-
- at interface NSMutableDictionary (NSExtendedMutableDictionary)
-- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
-#define M(x) (x)
-#define PAIR(x) @#x, [NSNumber numberWithInt:(x)]
-#define TWO(x) ((x), (x))
-
- at interface I {
-  NSArray *ivarArr;
-}
- at end
- at implementation I
--(void) foo {
-  NSString *str;
-  NSArray *arr;
-  NSDictionary *dict;
-
-  arr = [NSArray array];
-  arr = [NSArray arrayWithObject:str];
-  arr = [NSArray arrayWithObjects:str, str, nil];
-  dict = [NSDictionary dictionary];
-  dict = [NSDictionary dictionaryWithObject:arr forKey:str];
-  dict = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"key1", @"value2", @"key2", nil];
-  dict = [NSDictionary dictionaryWithObjectsAndKeys: PAIR(1), PAIR(2), nil];
-  dict = [NSDictionary dictionaryWithObjectsAndKeys:
-                                               @"value1", @"key1",
-#ifdef BLAH
-                                               @"value2", @"key2",
-#else
-                                               @"value3", @"key3",
-#endif
-                                               nil ];
-
-  id o = [arr objectAtIndex:2];
-  o = [dict objectForKey:@"key"];
-  o = TWO([dict objectForKey:@"key"]);
-  o = [NSDictionary dictionaryWithObject:[NSDictionary dictionary] forKey:@"key"];
-  NSMutableArray *marr = 0;
-  NSMutableDictionary *mdict = 0;
-  [marr replaceObjectAtIndex:2 withObject:@"val"];
-  [mdict setObject:@"value" forKey:@"key"];
-  [marr replaceObjectAtIndex:2 withObject:[arr objectAtIndex:4]];
-  [mdict setObject:[dict objectForKey:@"key2"] forKey:@"key"];
-  [mdict setObject:[dict objectForKey:@"key2"] forKey:
-#if 1
-                     @"key1"
-#else
-                     @"key2"
-#endif
-                    ];
-  [mdict setObject:[dict objectForKey:
-#if 2
-                     @"key3"
-#else
-                     @"key4"
-#endif
-                   ] forKey:@"key"];
-  [mdict setObject:@"value" forKey:[dict objectForKey:
-#if 3
-                     @"key5"
-#else
-                     @"key6"
-#endif
-                   ] ];
-  [mdict setObject:@"val" forKey:[dict objectForKey:@"key2"]];
-  [mdict setObject:[dict objectForKey:@"key1"] forKey:[dict objectForKey:[NSArray arrayWithObject:@"arrkey"]]];
-  __strong NSArray **parr = 0;
-  o = [*parr objectAtIndex:2];
-  void *hd;
-  o = [(NSArray*)hd objectAtIndex:2];
-  o = [ivarArr objectAtIndex:2];
-
-  dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1", [NSArray array], nil] forKeys:[NSArray arrayWithObjects:@"A", [arr objectAtIndex:2], nil]];
-  dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1", @"2", nil] forKeys:arr];
-  dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1", @"2", nil] forKeys:@[@"A", @"B"]];
-  dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray array], @"A", [NSArray array], @"B", nil];
-}
- at end
-
-extern const CFStringRef globStr;
-
-void test1(NSString *str) {
-  NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: str, globStr, nil];
-  dict = [NSDictionary dictionaryWithObjectsAndKeys: globStr, str, nil];
-  dict = [NSDictionary dictionaryWithObject:str forKey:globStr];
-  dict = [NSDictionary dictionaryWithObject:globStr forKey:str];
-
-  NSArray *arr = [NSArray arrayWithObjects: globStr, globStr, nil];
-  arr = [NSArray arrayWithObjects: str, globStr, nil];
-  arr = [NSArray arrayWithObjects: globStr, str, nil];
-  arr = [NSArray arrayWithObject:globStr];
-}
-
- at interface Custom : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface Custom (Extended)
-- (id)objectAtIndexedSubscript:(unsigned)idx;
- at end
-
- at interface MutableCustom : Custom
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface MutableCustom (Extended)
-- (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx;
- at end
-
- at interface CustomUnavail : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface CustomUnavail (Extended)
-- (id)objectAtIndexedSubscript:(unsigned)idx __attribute__((unavailable));
- at end
-
- at interface MutableCustomUnavail : CustomUnavail
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface MutableCustomUnavail (Extended)
-- (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx __attribute__((unavailable));
- at end
-
-void test2() {
-  MutableCustom *mutc;
-  id o = [mutc objectAtIndex:4];
-  [mutc replaceObjectAtIndex:2 withObject:@"val"];
-
-  MutableCustomUnavail *mutcunaval;
-  o = [mutcunaval objectAtIndex:4];
-  [mutcunaval replaceObjectAtIndex:2 withObject:@"val"];
-}
-
- at interface NSLocale : NSObject
-+ (id)systemLocale;
-+ (id)currentLocale;
-- (id)objectForKey:(id)key;
- at end
-
-void test3(id key) {
-  id o = [[NSLocale currentLocale] objectForKey:key];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-literals.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,228 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result
-
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
-typedef const struct __CFString * CFStringRef;
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at protocol NSCopying
- at end
-
- at interface NSString : NSObject
-+ (id)stringWithString:(NSString *)string;
-- (id)initWithString:(NSString *)aString;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSArray (NSExtendedArray)
-- (id)objectAtIndexedSubscript:(unsigned)idx;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ...;
-+ (id)arrayWithArray:(NSArray *)array;
-
-- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
-- (id)initWithObjects:(id)firstObj, ...;
-- (id)initWithArray:(NSArray *)array;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface NSMutableArray (NSExtendedMutableArray)
-- (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx;
- at end
-
- at interface NSDictionary : NSObject
-- (id)objectForKey:(id)aKey;
- at end
-
- at interface NSDictionary (NSExtendedDictionary)
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
-+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-- (id)initWithObjectsAndKeys:(id)firstObject, ...;
-- (id)initWithDictionary:(NSDictionary *)otherDictionary;
-- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end
-
- at interface NSMutableDictionary (NSExtendedMutableDictionary)
-- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
-#define M(x) (x)
-#define PAIR(x) @#x, [NSNumber numberWithInt:(x)]
-#define TWO(x) ((x), (x))
-
- at interface I {
-  NSArray *ivarArr;
-}
- at end
- at implementation I
--(void) foo {
-  NSString *str;
-  NSArray *arr;
-  NSDictionary *dict;
-
-  arr = @[];
-  arr = @[str];
-  arr = @[str, str];
-  dict = @{};
-  dict = @{str: arr};
-  dict = @{@"key1": @"value1", @"key2": @"value2"};
-  dict = [NSDictionary dictionaryWithObjectsAndKeys: PAIR(1), PAIR(2), nil];
-  dict = [NSDictionary dictionaryWithObjectsAndKeys:
-                                               @"value1", @"key1",
-#ifdef BLAH
-                                               @"value2", @"key2",
-#else
-                                               @"value3", @"key3",
-#endif
-                                               nil ];
-
-  id o = arr[2];
-  o = dict[@"key"];
-  o = TWO(dict[@"key"]);
-  o = @{@"key": @{}};
-  NSMutableArray *marr = 0;
-  NSMutableDictionary *mdict = 0;
-  marr[2] = @"val";
-  mdict[@"key"] = @"value";
-  marr[2] = arr[4];
-  mdict[@"key"] = dict[@"key2"];
-  [mdict setObject:dict[@"key2"] forKey:
-#if 1
-                     @"key1"
-#else
-                     @"key2"
-#endif
-                    ];
-  mdict[@"key"] = [dict objectForKey:
-#if 2
-                     @"key3"
-#else
-                     @"key4"
-#endif
-                   ];
-  mdict[[dict objectForKey:
-#if 3
-                     @"key5"
-#else
-                     @"key6"
-#endif
-                   ]] = @"value";
-  mdict[dict[@"key2"]] = @"val";
-  mdict[dict[@[@"arrkey"]]] = dict[@"key1"];
-  __strong NSArray **parr = 0;
-  o = (*parr)[2];
-  void *hd;
-  o = ((NSArray*)hd)[2];
-  o = ivarArr[2];
-
-  dict = @{@"A": @"1", arr[2]: @[]};
-  dict = [NSDictionary dictionaryWithObjects:@[@"1", @"2"] forKeys:arr];
-  dict = @{@"A": @"1", @"B": @"2"};
-  dict = @{@"A": @[], @"B": @[]};
-}
- at end
-
-extern const CFStringRef globStr;
-
-void test1(NSString *str) {
-  NSDictionary *dict = @{(id)globStr: str};
-  dict = @{str: (id)globStr};
-  dict = @{(id)globStr: str};
-  dict = @{str: (id)globStr};
-
-  NSArray *arr = @[(id)globStr, (id)globStr];
-  arr = @[str, (id)globStr];
-  arr = @[(id)globStr, str];
-  arr = @[(id)globStr];
-}
-
- at interface Custom : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface Custom (Extended)
-- (id)objectAtIndexedSubscript:(unsigned)idx;
- at end
-
- at interface MutableCustom : Custom
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface MutableCustom (Extended)
-- (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx;
- at end
-
- at interface CustomUnavail : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface CustomUnavail (Extended)
-- (id)objectAtIndexedSubscript:(unsigned)idx __attribute__((unavailable));
- at end
-
- at interface MutableCustomUnavail : CustomUnavail
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface MutableCustomUnavail (Extended)
-- (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx __attribute__((unavailable));
- at end
-
-void test2() {
-  MutableCustom *mutc;
-  id o = mutc[4];
-  mutc[2] = @"val";
-
-  MutableCustomUnavail *mutcunaval;
-  o = [mutcunaval objectAtIndex:4];
-  [mutcunaval replaceObjectAtIndex:2 withObject:@"val"];
-}
-
- at interface NSLocale : NSObject
-+ (id)systemLocale;
-+ (id)currentLocale;
-- (id)objectForKey:(id)key;
- at end
-
-void test3(id key) {
-  id o = [[NSLocale currentLocale] objectForKey:key];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-unavailable.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-unavailable.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-unavailable.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result
-
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ...;
-+ (id)arrayWithArray:(NSArray *)array;
-
-- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
-- (id)initWithObjects:(id)firstObj, ...;
-- (id)initWithArray:(NSArray *)array;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface NSDictionary : NSObject
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
-+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-- (id)initWithObjectsAndKeys:(id)firstObject, ...;
-- (id)initWithDictionary:(NSDictionary *)otherDictionary;
-- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)objectForKey:(id)aKey;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end
-
- at interface I
- at end
- at implementation I
--(void) foo {
-  id str;
-  NSArray *arr;
-  NSDictionary *dict;
-
-  arr = [NSArray array];
-  arr = [NSArray arrayWithObject:str];
-  arr = [NSArray arrayWithObjects:str, str, nil];
-  dict = [NSDictionary dictionary];
-  dict = [NSDictionary dictionaryWithObject:arr forKey:str];
-
-  id o = [arr objectAtIndex:2];
-  o = [dict objectForKey:@"key"];
-  NSMutableArray *marr = 0;
-  NSMutableDictionary *mdict = 0;
-  [marr replaceObjectAtIndex:2 withObject:@"val"];
-  [mdict setObject:@"value" forKey:@"key"];
-  [marr replaceObjectAtIndex:2 withObject:[arr objectAtIndex:4]];
-  [mdict setObject:[dict objectForKey:@"key2"] forKey:@"key"];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-unavailable.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-unavailable.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-subscripting-unavailable.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result
-
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ...;
-+ (id)arrayWithArray:(NSArray *)array;
-
-- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
-- (id)initWithObjects:(id)firstObj, ...;
-- (id)initWithArray:(NSArray *)array;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
- at end
-
- at interface NSDictionary : NSObject
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
-+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-- (id)initWithObjectsAndKeys:(id)firstObject, ...;
-- (id)initWithDictionary:(NSDictionary *)otherDictionary;
-- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)objectForKey:(id)aKey;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end
-
- at interface I
- at end
- at implementation I
--(void) foo {
-  id str;
-  NSArray *arr;
-  NSDictionary *dict;
-
-  arr = @[];
-  arr = @[str];
-  arr = @[str, str];
-  dict = @{};
-  dict = @{str: arr};
-
-  id o = [arr objectAtIndex:2];
-  o = [dict objectForKey:@"key"];
-  NSMutableArray *marr = 0;
-  NSMutableDictionary *mdict = 0;
-  [marr replaceObjectAtIndex:2 withObject:@"val"];
-  [mdict setObject:@"value" forKey:@"key"];
-  [marr replaceObjectAtIndex:2 withObject:[arr objectAtIndex:4]];
-  [mdict setObject:[dict objectForKey:@"key2"] forKey:@"key"];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-with-pch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-with-pch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-with-pch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -x objective-c %S/Common.h -emit-pch -o %t.pch
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -include-pch %t.pch
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result -include-pch %t.pch
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
-void foo() {
-  NSNumber *n = [NSNumber numberWithInt:1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-with-pch.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-with-pch.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/objcmt-with-pch.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -x objective-c %S/Common.h -emit-pch -o %t.pch
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -include-pch %t.pch
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result -include-pch %t.pch
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
-void foo() {
-  NSNumber *n = @1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/protected-scope.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/protected-scope.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/protected-scope.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-void test(id p, int x) {
-  int v;
-  switch(x) {
-  case 0:
-    v++;
-    id w1 = p;
-    id w2 = p;
-    break;
-  case 1:
-    v++;
-    id w3 = p;
-    break;
-  case 2:
-  case 3:
-    break;
-  default:
-    break;
-  }
-}
-
-void test2(int p) {
-  switch (p) {
-  case 3:;
-    NSObject *o = [[NSObject alloc] init];
-    [o release];
-    break;
-  default:
-    break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/protected-scope.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/protected-scope.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/protected-scope.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-// DISABLE: mingw32
-
-#include "Common.h"
-
-void test(id p, int x) {
-  int v;
-  switch(x) {
-  case 0: {
-    v++;
-    id w1 = p;
-    id w2 = p;
-    break;
-  }
-  case 1: {
-    v++;
-    id w3 = p;
-    break;
-  }
-  case 2:
-  case 3:
-    break;
-  default:
-    break;
-  }
-}
-
-void test2(int p) {
-  switch (p) {
-  case 3: {;
-    NSObject *o = [[NSObject alloc] init];
-    break;
-  }
-  default:
-    break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/releases-driver.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/releases-driver.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/releases-driver.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: cp %s %t
-// RUN: %clang_cc1 -arcmt-modify -triple x86_64-apple-macosx10.6 -x objective-c %t
-// RUN: diff %t %s.result
-// RUN: rm %t
-
-typedef int BOOL;
-
-id IhaveSideEffect();
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at interface Foo : NSObject {
-  id bar;
-}
- at property (retain) id bar;
--(void)test:(id)obj;
- at end
-
- at implementation Foo
-
- at synthesize bar;
-
--(void)test:(id)obj {
-  id x = self.bar;
-  [x retain];
-  self.bar = obj;
-  // do stuff with x;
-  [x release];
-
-  [IhaveSideEffect() release];
-
-  [x release], x = 0;
-}
-  
- at end
-
-void func(Foo *p) {
-  [p release];
-  (([p release]));
-}
-
- at interface Baz {
-	id <NSObject> _foo;
-}
- at end
-
- at implementation Baz
-- (void) dealloc {
-  [_foo release];
-}
- at end
-
-#define RELEASE_MACRO(x) [x release]
-#define RELEASE_MACRO2(x) RELEASE_MACRO(x)
-
-void test2(id p) {
-  RELEASE_MACRO(p);
-  RELEASE_MACRO2(p);
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/releases-driver.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/releases-driver.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/releases-driver.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: cp %s %t
-// RUN: %clang_cc1 -arcmt-modify -triple x86_64-apple-macosx10.6 -x objective-c %t
-// RUN: diff %t %s.result
-// RUN: rm %t
-
-typedef int BOOL;
-
-id IhaveSideEffect();
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at interface Foo : NSObject {
-  id bar;
-}
- at property (strong) id bar;
--(void)test:(id)obj;
- at end
-
- at implementation Foo
-
- at synthesize bar;
-
--(void)test:(id)obj {
-  id x = self.bar;
-  self.bar = obj;
-  // do stuff with x;
-
-  IhaveSideEffect();
-
-  x = 0;
-}
-  
- at end
-
-void func(Foo *p) {
-}
-
- at interface Baz {
-	id <NSObject> _foo;
-}
- at end
-
- at implementation Baz
- at end
-
-#define RELEASE_MACRO(x) [x release]
-#define RELEASE_MACRO2(x) RELEASE_MACRO(x)
-
-void test2(id p) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/releases.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/releases.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/releases.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -fobjc-exceptions -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fobjc-exceptions -fblocks -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#define nil 0
-
-typedef int BOOL;
-
-id IhaveSideEffect();
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at interface Foo : NSObject {
-  id bar;
-}
- at property (retain) id bar;
--(void)test:(id)obj;
- at end
-
- at implementation Foo
-
- at synthesize bar;
-
--(void)test:(id)obj {
-  id x = self.bar;
-  [x retain];
-  self.bar = obj;
-  // do stuff with x;
-  [x release];
-
-  [IhaveSideEffect() release];
-
-  [x release], x = 0;
-
-  @try {
-  } @finally {
-    [x release];
-  }
-}
-  
- at end
-
-void func(Foo *p) {
-  [p release];
-  (([p release]));
-}
-
- at interface Baz {
-	id <NSObject> _foo;
-}
- at end
-
- at implementation Baz
-- (void) dealloc {
-  [_foo release];
-}
- at end
-
-void block_test(Foo *p) {
-  id (^B)() = ^() {
-    if (p) {
-      id (^IB)() = ^() {
-        id bar = [p retain];
-	      [p release];
-        return bar;
-      };
-      IB();
-    }
-    return [p retain];
-  };
-}
-
-#define RELEASE_MACRO(x) [x release]
-#define RELEASE_MACRO2(x) RELEASE_MACRO(x)
-
-void test2(id p) {
-  RELEASE_MACRO(p);
-  RELEASE_MACRO2(p);
-}
-
- at implementation Foo2
-
-static id internal_var = 0;
-
-+ (void)setIt:(id)newone {
-    if (internal_var != newone) {
-        [internal_var release];
-        internal_var = [newone retain];
-    }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/releases.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/releases.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/releases.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1 -fobjc-exceptions -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fobjc-exceptions -fblocks -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#define nil 0
-
-typedef int BOOL;
-
-id IhaveSideEffect();
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at interface Foo : NSObject {
-  id bar;
-}
- at property (strong) id bar;
--(void)test:(id)obj;
- at end
-
- at implementation Foo
-
- at synthesize bar;
-
--(void)test:(id)obj {
-  id x = self.bar;
-  self.bar = obj;
-  // do stuff with x;
-
-  IhaveSideEffect();
-
-  x = 0;
-
-  @try {
-  } @finally {
-    x = nil;
-  }
-}
-  
- at end
-
-void func(Foo *p) {
-}
-
- at interface Baz {
-	id <NSObject> _foo;
-}
- at end
-
- at implementation Baz
- at end
-
-void block_test(Foo *p) {
-  id (^B)() = ^() {
-    if (p) {
-      id (^IB)() = ^() {
-        id bar = p;
-        return bar;
-      };
-      IB();
-    }
-    return p;
-  };
-}
-
-#define RELEASE_MACRO(x) [x release]
-#define RELEASE_MACRO2(x) RELEASE_MACRO(x)
-
-void test2(id p) {
-}
-
- at implementation Foo2
-
-static id internal_var = 0;
-
-+ (void)setIt:(id)newone {
-    if (internal_var != newone) {
-        internal_var = newone;
-    }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#define nil ((void*) 0)
-
- at interface Foo 
- at property (retain) id x;
- at property (retain) id y;
- at property (retain) id w;
- at property (retain) id z;
- at end
-
- at implementation Foo 
- at synthesize x;
- at synthesize y;
- at synthesize w;
- at synthesize z;
-
-- (void) dealloc {
-  self.x = 0;
-  [self setY:nil];
-  w = nil;
-  self.z = nil;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-method.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-method.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-method.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#define nil ((void*) 0)
-
- at interface Foo 
- at property (strong) id x;
- at property (strong) id y;
- at property (strong) id w;
- at property (strong) id z;
- at end
-
- at implementation Foo 
- at synthesize x;
- at synthesize y;
- at synthesize w;
- at synthesize z;
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-zerouts.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-zerouts.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-zerouts.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
- at interface Foo 
- at property (retain) id x;
- at property (retain) id y;
- at property (retain) id w;
- at property (retain) id z;
- at property (strong) id q;
- at end
-
- at implementation Foo 
- at synthesize x;
- at synthesize y;
- at synthesize w;
- at synthesize q;
- at dynamic z;
-
-- (void) dealloc {
-  self.x = self.y = self.w = 0;
-  self.x = 0, w = 0, y = 0;
-  [self setY:0];
-  w = 0;
-  q = 0;
-  self.z = 0;
-}
- at end
-
- at interface Bar
- at property (retain) Foo *a;
-- (void) setA:(Foo*) val;
-- (id) a;
- at end
-
- at implementation Bar
-- (void) dealloc {
-  [self setA:0];  // This is user-defined setter overriding synthesize, don't touch it.
-  self.a.x = 0;  // every dealloc must zero out its own ivar. This patter is not recognized.
-}
- at synthesize a;
-- (void) setA:(Foo*) val { }
-- (id) a {return 0;}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-zerouts.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-zerouts.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/remove-dealloc-zerouts.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
- at interface Foo 
- at property (strong) id x;
- at property (strong) id y;
- at property (strong) id w;
- at property (strong) id z;
- at property (strong) id q;
- at end
-
- at implementation Foo 
- at synthesize x;
- at synthesize y;
- at synthesize w;
- at synthesize q;
- at dynamic z;
-
-- (void) dealloc {
-  self.z = 0;
-}
- at end
-
- at interface Bar
- at property (strong) Foo *a;
-- (void) setA:(Foo*) val;
-- (id) a;
- at end
-
- at implementation Bar
-- (void) dealloc {
-  [self setA:0];  // This is user-defined setter overriding synthesize, don't touch it.
-  self.a.x = 0;  // every dealloc must zero out its own ivar. This patter is not recognized.
-}
- at synthesize a;
-- (void) setA:(Foo*) val { }
-- (id) a {return 0;}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/remove-statements.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/remove-statements.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/remove-statements.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
- at interface myController : NSObject
--(id)test:(id)x;
- at end
-
-#define MY_MACRO1(x)
-#define MY_MACRO2(x) (void)x
-
- at implementation myController
--(id) test:(id) x {
-  [[x retain] release];
-  return [[x retain] autorelease];
-}
-
--(void)dealloc
-{
-  id array, array_already_empty;
-  for (id element in array_already_empty) {
-  }
-
-  [array release];
-  ;
-
-  int b, b_array_already_empty;
-  if (b)
-    [array release];
-  if (b_array_already_empty) ;
-
-  if (b) {
-    [array release];
-  }
-  if (b_array_already_empty) {
-  }
-
-  if (b)
-    MY_MACRO1(array);
-  if (b)
-    MY_MACRO2(array);
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/remove-statements.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/remove-statements.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/remove-statements.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
- at interface myController : NSObject
--(id)test:(id)x;
- at end
-
-#define MY_MACRO1(x)
-#define MY_MACRO2(x) (void)x
-
- at implementation myController
--(id) test:(id) x {
-  return x;
-}
-
--(void)dealloc
-{
-  id array, array_already_empty;
-  for (id element in array_already_empty) {
-  }
-
-  ;
-
-  int b, b_array_already_empty;
-  if (b_array_already_empty) ;
-
-  if (b_array_already_empty) {
-  }
-
-  if (b)
-    MY_MACRO1(array);
-  if (b)
-    MY_MACRO2(array);
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/retains.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/retains.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/retains.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
-id IhaveSideEffect();
-
- at interface Foo : NSObject {
-  id bar;
-}
- at property (retain) id bar;
--(id)test:(id)obj;
--(id)something;
- at end
-
-#define Something_Macro(key, comment) \
- [[Foo new] something]
-
- at implementation Foo
-
- at synthesize bar;
-
--(id)something {}
-
--(id)test:(id)obj {
-  id x = self.bar;
-  [x retain];
-  self.bar = obj;
-  if (obj)
-    [obj retain];
-
-  [Something_Macro(@"foo", "@bar") retain];
-
-  [IhaveSideEffect() retain];
-
-  [[self something] retain];
-
-  [[self retain] something];
-
-  [[IhaveSideEffect() retain] release];
-  [[x retain] release];
-  // do stuff with x;
-  [x release];
-  return [self retain];
-}
-  
-- (id)test1 {
-  id x=0;
-  ([x retain]);
-  return ((([x retain])));
-}
- at end
-
-id foo (Foo *p) {
-    p = [p retain];
-    return ([p retain]);
-}
-
-void block_tests(Foo *p) {
-  id (^B)() = ^() {
-    if (p) {
-      id (^IB)() = ^() {
-        id bar = [p retain];
-        return bar;
-      };
-      IB();
-    }
-    return [p retain];
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/retains.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/retains.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/retains.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
-id IhaveSideEffect();
-
- at interface Foo : NSObject {
-  id bar;
-}
- at property (strong) id bar;
--(id)test:(id)obj;
--(id)something;
- at end
-
-#define Something_Macro(key, comment) \
- [[Foo new] something]
-
- at implementation Foo
-
- at synthesize bar;
-
--(id)something {}
-
--(id)test:(id)obj {
-  id x = self.bar;
-  self.bar = obj;
-
-  Something_Macro(@"foo", "@bar");
-
-  IhaveSideEffect();
-
-  [self something];
-
-  [self something];
-
-  IhaveSideEffect();
-  // do stuff with x;
-  return self;
-}
-  
-- (id)test1 {
-  id x=0;
-  return (((x)));
-}
- at end
-
-id foo (Foo *p) {
-    p = p;
-    return (p);
-}
-
-void block_tests(Foo *p) {
-  id (^B)() = ^() {
-    if (p) {
-      id (^IB)() = ^() {
-        id bar = p;
-        return bar;
-      };
-      IB();
-    }
-    return p;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/rewrite-block-var.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/rewrite-block-var.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/rewrite-block-var.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -fobjc-arc -x objective-c -fobjc-runtime-has-weak %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fblocks -fsyntax-only %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
- at interface Foo : NSObject
--(Foo *)something;
- at end
-
-void bar(void (^block)());
-
-void test1(Foo *p) {
-  __block Foo *x = p; // __block used just to break cycle.
-  bar(^{
-    [x something];
-  });
-}
-
-void test2(Foo *p) {
-  __block Foo *x; // __block used as output variable.
-  bar(^{
-    x = [p something];
-  });
-}
-
-void test3(Foo *p) {
-  __block Foo *x; // __block used as output variable.
-  bar(^{
-    [x something];
-  });
-  bar(^{
-    x = 0;
-  });
-}
-
-void test4(Foo *p) {
-  __block Foo *x = p; // __block used just to break cycle.
-  bar(^{
-    [x something];
-  });
-  bar(^{
-    [x something];
-  });
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/rewrite-block-var.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/rewrite-block-var.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/rewrite-block-var.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -fobjc-arc -x objective-c -fobjc-runtime-has-weak %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.7 -fblocks -fsyntax-only %s > %t
-// RUN: diff %t %s.result
-
-#include "Common.h"
-
- at interface Foo : NSObject
--(Foo *)something;
- at end
-
-void bar(void (^block)());
-
-void test1(Foo *p) {
-  __weak Foo *x = p; // __block used just to break cycle.
-  bar(^{
-    [x something];
-  });
-}
-
-void test2(Foo *p) {
-  __block Foo *x; // __block used as output variable.
-  bar(^{
-    x = [p something];
-  });
-}
-
-void test3(Foo *p) {
-  __block Foo *x; // __block used as output variable.
-  bar(^{
-    [x something];
-  });
-  bar(^{
-    x = 0;
-  });
-}
-
-void test4(Foo *p) {
-  __weak Foo *x = p; // __block used just to break cycle.
-  bar(^{
-    [x something];
-  });
-  bar(^{
-    [x something];
-  });
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/safe-arc-assign.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/safe-arc-assign.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/safe-arc-assign.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-void test12(id collection) {
-  for (id x in collection) {
-    x = 0;
-    x = 0;
-  }
-
-  for (__strong id x in collection) {
-    x = 0;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/safe-arc-assign.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/safe-arc-assign.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/safe-arc-assign.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
-// RUN: diff %t %s.result
-
-void test12(id collection) {
-  for (__strong id x in collection) {
-    x = 0;
-    x = 0;
-  }
-
-  for (__strong id x in collection) {
-    x = 0;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/verify.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/verify.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/verify.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -verify %s
-// RUN: %clang_cc1 -arcmt-check -verify %t.invalid 2>&1 | FileCheck %s
-
-#if 0
-// expected-error {{should be ignored}}
-#endif
-
-#error should not be ignored
-// expected-error at -1 {{should not be ignored}}
-
-//      CHECK: error: no expected directives found: consider use of 'expected-no-diagnostics'
-// CHECK-NEXT: error: 'error' diagnostics seen but not expected:
-// CHECK-NEXT:   (frontend): error reading '{{.*}}verify.m.tmp.invalid'
-// CHECK-NEXT: 2 errors generated.

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-check.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-check.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-check.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -arcmt-check -fsyntax-only -fobjc-arc -x objective-c %s
-
- at protocol NSObject
-- (oneway void)release;
- at end
-
-void test1(id p) {
-  [p release];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-migrate.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-migrate.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-migrate.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t -fsyntax-only -fobjc-arc %s
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: rm -rf %t
-
- at protocol NSObject
-- (oneway void)release;
- at end
-
-void test1(id p) {
-  [p release];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-migrate.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-migrate.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-migrate.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: %clang_cc1 -arcmt-migrate -mt-migrate-directory %t -fsyntax-only -fobjc-arc %s
-// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
-// RUN: rm -rf %t
-
- at protocol NSObject
-- (oneway void)release;
- at end
-
-void test1(id p) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-modify.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-modify.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-modify.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: cp %s %t
-// RUN: %clang_cc1 -arcmt-modify -fsyntax-only -fobjc-arc -x objective-c %t
-// RUN: diff %t %s.result
-// RUN: rm %t
-
- at protocol NSObject
-- (oneway void)release;
- at end
-
-void test1(id p) {
-  [p release];
-}

Modified: trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-modify.m.result
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-modify.m.result	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ARCMT/with-arc-mode-modify.m.result	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: cp %s %t
-// RUN: %clang_cc1 -arcmt-modify -fsyntax-only -fobjc-arc -x objective-c %t
-// RUN: diff %t %s.result
-// RUN: rm %t
-
- at protocol NSObject
-- (oneway void)release;
- at end
-
-void test1(id p) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/category1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/category1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/category1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
- at interface I1 
- at end
-
-// Matching category
- at interface I1 (Cat1)
-- (int)method0;
- at end
-
-// Matching class extension
- at interface I1 ()
-- (int)method1;
- at end
-
-// Mismatched category
- at interface I1 (Cat2)
-- (int)method2;
- at end
-
- at interface I2
- at end
-
-// Mismatched class extension
- at interface I2 ()
-- (int)method3;
- at end
-
-// Category with implementation
- at interface I2 (Cat3)
- at end
-
- at implementation I2 (Cat3)
- at end
-
-// Category with implementation
- at interface I2 (Cat4)
- at end
-
- at implementation I2 (Cat4)
- at end
-
-// Category with mismatched implementation
- at interface I2 (Cat6)
- at end
-
- at implementation I2 (Cat6)
-- (float)blah { return 0; }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/category2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/category2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/category2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-typedef int Int;
-
- at interface I1 
- at end
-
-// Matching category
- at interface I1 (Cat1)
-- (Int)method0;
- at end
-
-// Matching class extension
- at interface I1 ()
-- (Int)method1;
- at end
-
-// Mismatched category
- at interface I1 (Cat2)
-- (float)method2;
- at end
-
- at interface I2
- at end
-
-// Mismatched class extension
- at interface I2 ()
-- (float)method3;
- at end
-
-// Category with implementation
- at interface I2 (Cat3)
- at end
-
- at implementation I2 (Cat3)
- at end
-
-// Category with implementation
- at interface I2 (Cat5)
- at end
-
- at implementation I2 (Cat5)
- at end
-
-// Category with mismatched implementation
- at interface I2 (Cat6)
- at end
-
- at implementation I2 (Cat6)
-- (int)blah { return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class-template1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class-template1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class-template1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-template<typename T>
-struct X0;
-
-template<int I>
-struct X1;
-
-template<int I>
-struct X2;
-
-template<int I>
-struct X3;
-
-template<template<int I> class>
-struct X4;
-
-template<template<long> class>
-struct X5;
-
-template<typename>
-struct X6;
-
-extern X0<int> *x0i;
-extern X0<long> *x0l;
-extern X0<float> *x0r;
-
-template<>
-struct X0<char> {
-  int member;
-};
-
-template<>
-struct X0<wchar_t> {
-  int member;
-};

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class-template2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class-template2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class-template2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-template<class T>
-struct X0;
-
-template<int I>
-struct X1;
-
-template<long I>
-struct X2;
-
-template<typename>
-struct X3;
-
-template<template<int I> class>
-struct X4;
-
-template<template<int I> class>
-struct X5;
-
-template<template<int I> class>
-struct X6;
-
-typedef int Integer;
-extern X0<Integer> *x0i;
-extern X0<float> *x0f;
-extern X0<double> *x0r;
-
-template<>
-struct X0<char> {
-  int member;
-};
-
-template<>
-struct X0<wchar_t> {
-  float member;
-};

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-struct A {
-  int x;
-};
-
-struct B : A {
-  float y;
-  float foo();
-};
-
-struct C {
-  C(int i = 10);
-  C(const C&);
-  C &operator=(C&);
-  ~C();
-};
-
-enum E {
-  b = 1
-};

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/class2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-struct A {
-  int x;
-};
-
-struct B : A {
-  int y;
-  int foo();
-};
-
-enum E {
-  a = 0,
-  b = 1
-};

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/enum1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/enum1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/enum1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// Matching
-enum E1 {
-  E1Enumerator1,
-  E1Enumerator2 = 3,
-  E1Enumerator3
-} x1;
-
-// Value mismatch
-enum E2 {
-  E2Enumerator1,
-  E2Enumerator2 = 3,
-  E2Enumerator3
-} x2;
-
-// Name mismatch
-enum E3 {
-  E3Enumerator1,
-  E3Enumerator2 = 3,
-  E3Enumerator3
-} x3;
-
-// Missing enumerator
-enum E4 {
-  E4Enumerator1,
-  E4Enumerator2,
-  E4Enumerator3
-} x4;
-
-// Extra enumerator
-enum E5 {
-  E5Enumerator1,
-  E5Enumerator2,
-  E5Enumerator3
-} x5;
-
-// Matching, with typedef
-typedef enum {
-  E6Enumerator1,
-  E6Enumerator2
-} E6;
-
-E6 x6;

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/enum2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/enum2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/enum2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// Matching
-enum E1 {
-  E1Enumerator1,
-  E1Enumerator2 = 3,
-  E1Enumerator3
-} x1;
-
-// Value mismatch
-enum E2 {
-  E2Enumerator1,
-  E2Enumerator2 = 4,
-  E2Enumerator3
-} x2;
-
-// Name mismatch
-enum E3 {
-  E3Enumerator1,
-  E3Enumerator = 3,
-  E3Enumerator3
-} x3;
-
-// Missing enumerator
-enum E4 {
-  E4Enumerator1,
-  E4Enumerator2
-} x4;
-
-// Extra enumerator
-enum E5 {
-  E5Enumerator1,
-  E5Enumerator2,
-  E5Enumerator3,
-  E5Enumerator4
-} x5;
-
-// Matching, with typedef
-typedef enum {
-  E6Enumerator1,
-  E6Enumerator2
-} E6;
-
-E6 x6;

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/exprs1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/exprs1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/exprs1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Matching
-enum E0 {
-  E0_Val0 = 'a',
-  E0_Val1 = (17),
-  E0_Val2 = (1 << 2),
-  E0_Val3 = E0_Val2,
-  E0_Val4 = sizeof(int*),
-  E0_Val5 = (unsigned int)-1
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/exprs2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/exprs2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/exprs2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Matching
-enum E0 {
-  E0_Val0 = 'a',
-  E0_Val1 = (17),
-  E0_Val2 = (1 << 2),
-  E0_Val3 = E0_Val2,
-  E0_Val4 = sizeof(int*),
-  E0_Val5 = (unsigned int)-1
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/function1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/function1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/function1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-void f0(int);
-void f1(int, float);
-void f2();
-void f3(void);
-void f4(int, int);
-int f5(int) __attribute__((const));

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/function2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/function2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/function2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-typedef int Int;
-void f0(Int);
-void f1(Int, double);
-void f2(int, int);
-void f3(int);
-static void f4(float, float);
-int f5(int) __attribute__((const));

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/interface1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/interface1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/interface1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// Matches
- at interface I1 {
-  int ivar1;
-}
- at end
-
-// Matches
- at interface I2 : I1 {
-  float ivar2;
-}
- at end
-
-// Ivar mismatch
- at interface I3 {
-  int ivar1;
-  int ivar2;
-}
- at end
-
-// Superclass mismatch
- at interface I4 : I2 {
-}
- at end
-
-// Methods match
- at interface I5
-- (int)foo;
-+ (float)bar;
- at end
-
-// Method mismatch
- at interface I6
-- (int)foo;
-+ (int)foo;
- at end
-
-// Method mismatch
- at interface I7
-- (int)foo;
-+ (int)bar:(int)x;
- at end
-
-// Method mismatch
- at interface I8
-- (int)foo;
-+ (int)bar:(float)x;
- at end
-
-// Matching protocol
- at protocol P0
-+ (int)foo;
-- (int)bar:(float)x;
- at end
-
-// Protocol with mismatching method
- at protocol P1
-+ (int)foo;
-- (int)bar:(float)x;
- at end
-
-// Interface with protocol
- at interface I9 <P0>
-+ (int)foo;
-- (int)bar:(float)x;
- at end
-
-// Protocol with protocol
- at protocol P2 <P0>
-- (float)wibble:(int)a1 second:(int)a2;
- at end
-
-// Forward-declared interfaces
- at class I10, I11;
- at interface I12
- at end
-
-// Forward-declared protocols
- at protocol P3, P5;
- at protocol P4
-- (double)honk:(int)a;
- at end
-
-// Interface with implementation
- at interface I13
- at end
-
- at implementation I13
- at end
-
- at interface I13a
- at end
-
- at implementation I13a
- at end
-
-// Implementation by itself
- at implementation I14 : I12
- at end
-
- at implementation I15 : I12
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/interface2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/interface2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/interface2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// Matches
- at interface I1 {
-  int ivar1;
-}
- at end
-
-// Matches
- at interface I2 : I1 {
-  float ivar2;
-}
- at end
-
-// Ivar mismatch
- at interface I3 {
-  int ivar1;
-  float ivar2;
-}
- at end
-
-// Superclass mismatch
- at interface I4 : I1 {
-}
- at end
-
-// Methods match
- at interface I5
-+ (float)bar;
-- (int)foo;
- at end
-
-// Method mismatch
- at interface I6
-+ (float)foo;
- at end
-
-// Method mismatch
- at interface I7
-- (int)foo;
-+ (int)bar:(float)x;
- at end
-
-// Method mismatch
- at interface I8
-- (int)foo;
-+ (int)bar:(float)x, ...;
- at end
-
-// Matching protocol
- at protocol P0
-+ (int)foo;
-- (int)bar:(float)x;
- at end
-
-// Protocol with mismatching method
- at protocol P1
-+ (int)foo;
-- (int)bar:(double)x;
- at end
-
-// Interface with protocol
- at interface I9 <P0>
-+ (int)foo;
-- (int)bar:(float)x;
- at end
-
-// Protocol with protocol
- at protocol P2 <P0>
-- (float)wibble:(int)a1 second:(int)a2;
- at end
-
-// Forward-declared interface
- at class I10; @interface I12 @end
- at interface I11
- at end
-
-// Forward-declared protocols
- at protocol P3, P4;
- at protocol P5
-- (double)honk:(int)a;
- at end
-
-// Interface with implementation
- at interface I13
- at end
-
- at implementation I13
- at end
-
- at interface I13b
- at end
-
- at implementation I13b
- at end
-
-// Implementation by itself
- at implementation I14 : I12
- at end
-
- at implementation I15 : I11
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = []

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/namespace1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/namespace1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/namespace1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Merge success
-namespace N1 {
-  int x;
-}
-
-// Merge multiple namespaces
-namespace N2 {
-  extern int x;
-}
-namespace N2 {
-  extern float y;
-}
-
-// Merge namespace with conflict
-namespace N3 {
-  extern float z;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/namespace2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/namespace2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/namespace2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Merge success
-namespace N1 {
-  extern int x0;
-}
-
-// Merge multiple namespaces
-namespace N2 {
-  extern int x;
-}
-namespace N2 {
-  extern float y;
-}
-
-// Merge namespace with conflict
-namespace N3 {
-  extern double z;
-}

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/property1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/property1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/property1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// Matching properties
- at interface I1 {
-}
-- (int)getProp2;
-- (void)setProp2:(int)value;
- at end
-
-// Mismatched property
- at interface I2
- at property (readonly) float Prop1;
- at end
-
-// Properties with implementations
- at interface I3 {
-  int ivar1;
-  int ivar2;
-  int ivar3;
-  int Prop4;
-}
- at property int Prop1;
- at property int Prop2;
- at property int Prop3;
- at property int Prop4;
- at end
-
- at implementation I3
- at synthesize Prop1 = ivar1;
- at synthesize Prop2 = ivar3;
- at dynamic Prop3;
- at synthesize Prop4;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/property2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/property2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/property2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// Matching properties
- at interface I1 {
-}
-- (int)getProp2;
-- (void)setProp2:(int)value;
- at property (readonly) int Prop1;
- at property (getter = getProp2, setter = setProp2:) int Prop2;
- at end
-
-// Mismatched property
- at interface I2
- at property (readonly) int Prop1;
- at end
-
-// Properties with implementations
- at interface I3 {
-  int ivar1;
-  int ivar2;
-  int ivar3;
-  int Prop4;
-}
- at property int Prop1;
- at property int Prop2;
- at property int Prop3;
- at property int Prop4;
- at end
-
- at implementation I3
- at synthesize Prop2 = ivar2;
- at synthesize Prop1 = ivar1;
- at synthesize Prop3 = ivar3;
- at synthesize Prop4 = Prop4;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/struct1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/struct1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/struct1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-typedef int Int;
-typedef float Float;
-
-// Matches
-struct S0 {
-  Int field1;
-  Float field2;
-};
-
-struct S0 x0;
-
-// Mismatch in field type
-struct S1 {
-  Int field1;
-  int field2;
-};
-
-struct S1 x1;
-
-// Mismatch in tag kind.
-struct S2 { int i; float f; } x2;
-
-// Missing fields
-struct S3 { int i; float f; double d; } x3;
-
-// Extra fields
-struct S4 { int i; } x4;
-
-// Bit-field matches
-struct S5 { int i : 8; unsigned j : 8; } x5;
-
-// Bit-field mismatch
-struct S6 { int i : 8; unsigned j : 8; } x6;
-
-// Bit-field mismatch
-struct S7 { int i : 8; unsigned j : 8; } x7;
-
-// Incomplete type
-struct S8 *x8;
-
-// Incomplete type
-struct S9 { int i; float f; } *x9;
-
-// Incomplete type
-struct S10 *x10;
-
-// Matches
-struct ListNode {
-  int value;
-  struct ListNode *Next;
-} xList;
-
-// Mismatch due to struct used internally
-struct DeepError {
-  int value;
-  struct DeeperError { int i; int f; } *Deeper;
-} xDeep;
-
-// Matches
-struct {
-  Int i;
-  float f;
-} x11;

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/struct2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/struct2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/struct2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// Matches
-struct S0 {
-  int field1;
-  float field2;
-};
-
-struct S0 x0;
-
-// Mismatch in field type
-struct S1 {
-  int field1;
-  float field2;
-};
-
-struct S1 x1;
-
-// Mismatch in tag kind.
-union S2 { int i; float f; } x2;
-
-// Missing fields
-struct S3 { int i; float f; } x3;
-
-// Extra fields
-struct S4 { int i; float f; } x4;
-
-// Bit-field matches
-struct S5 { int i : 8; unsigned j : 8; } x5;
-
-// Bit-field mismatch
-struct S6 { int i : 8; unsigned j; } x6;
-
-// Bit-field mismatch
-struct S7 { int i : 8; unsigned j : 16; } x7;
-
-// Incomplete type
-struct S8 { int i; float f; } *x8;
-
-// Incomplete type
-struct S9 *x9;
-
-// Incomplete type
-struct S10 *x10;
-
-// Matches
-struct ListNode {
-  int value;
-  struct ListNode *Next;
-} xList;
-
-// Mismatch due to struct used internally
-struct DeepError {
-  int value;
-  struct DeeperError { int i; float f; } *Deeper;
-} xDeep;
-
-// Matches
-struct {
-  int i;
-  float f;
-} x11;

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/typedef1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/typedef1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/typedef1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-typedef int Typedef1;
-typedef int Typedef2;
-Typedef1 x1;
-Typedef2 x2;

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/typedef2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/typedef2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/typedef2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-typedef int Typedef1;
-typedef double Typedef2;
-Typedef1 x1;
-Typedef2 x2;

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-int *x0;
-float **x1;
-#include "var1.h"
-int xarray0[17];
-int xarray1[];
-int xarray2[18];
-int xarray3[18];

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-double x2;

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/Inputs/var2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-int *x0;
-double *x1;
-int x2;
-int xarray0[17];
-int xarray1[17];
-int xarray2[];
-int xarray3[17];

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/category.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/category.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/category.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/category1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/category2.m
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: category2.m:18:1: error: instance method 'method2' has incompatible result types in different translation units ('float' vs. 'int')
-// CHECK: category1.m:16:1: note: instance method 'method2' also declared here
-// CHECK: category2.m:26:1: error: instance method 'method3' has incompatible result types in different translation units ('float' vs. 'int')
-// CHECK: category1.m:24:1: note: instance method 'method3' also declared here
-// CHECK: category2.m:48:1: error: instance method 'blah' has incompatible result types in different translation units ('int' vs. 'float')
-// CHECK: category1.m:46:1: note: instance method 'blah' also declared here
-// CHECK: 3 errors generated.

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/class-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/class-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/class-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/class-template1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/class-template2.cpp
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: class-template1.cpp:7:14: error: non-type template parameter declared with incompatible types in different translation units ('int' vs. 'long')
-// CHECK: class-template2.cpp:7:15: note: declared here with type 'long'
-
-// CHECK: class-template1.cpp:10:14: error: template parameter has different kinds in different translation units
-// CHECK: class-template2.cpp:10:10: note: template parameter declared here
-
-// CHECK: class-template1.cpp:16:23: error: non-type template parameter declared with incompatible types in different translation units ('long' vs. 'int')
-// CHECK: class-template2.cpp:16:23: note: declared here with type 'int'
-
-// CHECK: class-template1.cpp:19:10: error: template parameter has different kinds in different translation units
-// CHECK: class-template2.cpp:19:10: note: template parameter declared here
-
-// CHECK: class-template2.cpp:25:20: error: external variable 'x0r' declared with incompatible types in different translation units ('X0<double> *' vs. 'X0<float> *')
-// CHECK: class-template1.cpp:24:19: note: declared here with type 'X0<float> *'
-
-// CHECK: class-template1.cpp:32:8: warning: type 'X0<wchar_t>' has incompatible definitions in different translation units
-// CHECK: class-template1.cpp:33:7: note: field 'member' has type 'int' here
-// CHECK: class-template2.cpp:34:9: note: field 'member' has type 'float' here
-
-// CHECK: 1 warning and 5 errors generated.

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/class1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/class2.cpp
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 -Wno-odr | count 0
-
-// CHECK: class1.cpp:5:8: warning: type 'B' has incompatible definitions in different translation units
-// CHECK: class1.cpp:6:9: note: field 'y' has type 'float' here
-// CHECK: class2.cpp:6:7: note: field 'y' has type 'int' here
-
-// FIXME: we should also complain about mismatched types on the method
-
-// CHECK: class1.cpp:17:6: warning: type 'E' has incompatible definitions in different translation units
-// CHECK: class1.cpp:18:3: note: enumerator 'b' with value 1 here
-// CHECK: class2.cpp:11:3: note: enumerator 'a' with value 0 here

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/enum1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/enum2.c
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: enum1.c:9:6: warning: type 'enum E2' has incompatible definitions in different translation units
-// CHECK: enum1.c:11:3: note: enumerator 'E2Enumerator2' with value 3 here
-// CHECK: enum2.c:11:3: note: enumerator 'E2Enumerator2' with value 4 here
-// CHECK: enum2.c:13:3: error: external variable 'x2' declared with incompatible types in different translation units ('enum E2' vs. 'enum E2')
-// CHECK: enum1.c:13:3: note: declared here with type 'enum E2'
-// CHECK: enum1.c:16:6: warning: type 'enum E3' has incompatible definitions in different translation units
-// CHECK: enum1.c:18:3: note: enumerator 'E3Enumerator2' with value 3 here
-// CHECK: enum2.c:18:3: note: enumerator 'E3Enumerator' with value 3 here
-// CHECK: enum2.c:20:3: error: external variable 'x3' declared with incompatible types in different translation units ('enum E3' vs. 'enum E3')
-// CHECK: enum1.c:20:3: note: declared here with type 'enum E3'
-// CHECK: enum1.c:23:6: warning: type 'enum E4' has incompatible definitions in different translation units
-// CHECK: enum1.c:26:3: note: enumerator 'E4Enumerator3' with value 2 here
-// CHECK: enum2.c:23:6: note: no corresponding enumerator here
-// CHECK: enum2.c:26:3: error: external variable 'x4' declared with incompatible types in different translation units ('enum E4' vs. 'enum E4')
-// CHECK: enum1.c:27:3: note: declared here with type 'enum E4'
-// CHECK: enum1.c:30:6: warning: type 'enum E5' has incompatible definitions in different translation units
-// CHECK: enum2.c:33:3: note: enumerator 'E5Enumerator4' with value 3 here
-// CHECK: enum1.c:30:6: note: no corresponding enumerator here
-// CHECK: enum2.c:34:3: error: external variable 'x5' declared with incompatible types in different translation units ('enum E5' vs. 'enum E5')
-// CHECK: enum1.c:34:3: note: declared here with type 'enum E5'
-// CHECK: 4 warnings and 4 errors generated

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/exprs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/exprs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/exprs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/exprs1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/exprs2.c
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
-// expected-no-diagnostics
-

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/function.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/function.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/function.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/function1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/function2.c
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -verify %s
-
-// CHECK: function2.c:3:6: error: external function 'f1' declared with incompatible types in different translation units ('void (Int, double)' vs. 'void (int, float)')
-// CHECK: function1.c:2:6: note: declared here with type 'void (int, float)'
-// CHECK: function2.c:5:6: error: external function 'f3' declared with incompatible types in different translation units ('void (int)' vs. 'void (void)')
-// CHECK: function1.c:4:6: note: declared here with type 'void (void)'
-// CHECK: 2 errors generated
-
-// expected-error at Inputs/function2.c:3 {{external function 'f1' declared with incompatible types}}
-// expected-note at Inputs/function1.c:2 {{declared here}}
-// expected-error at Inputs/function2.c:5 {{external function 'f3' declared with incompatible types}}
-// expected-note at Inputs/function1.c:4 {{declared here}}

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/interface.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/interface.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/interface.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/interface1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/interface2.m
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: interface2.m:16:9: error: instance variable 'ivar2' declared with incompatible types in different translation units ('float' vs. 'int')
-// CHECK: interface1.m:16:7: note: declared here with type 'int'
-// CHECK: interface1.m:21:12: error: class 'I4' has incompatible superclasses
-// CHECK: interface1.m:21:17: note: inherits from superclass 'I2' here
-// CHECK: interface2.m:21:17: note: inherits from superclass 'I1' here
-// CHECK: interface2.m:33:1: error: class method 'foo' has incompatible result types in different translation units ('float' vs. 'int')
-// CHECK: interface1.m:34:1: note: class method 'foo' also declared here
-// CHECK: interface2.m:39:19: error: class method 'bar:' has a parameter with a different types in different translation units ('float' vs. 'int')
-// CHECK: interface1.m:40:17: note: declared here with type 'int'
-// CHECK: interface2.m:45:1: error: class method 'bar:' is variadic in one translation unit and not variadic in another
-// CHECK: interface1.m:46:1: note: class method 'bar:' also declared here
-// CHECK: interface2.m:57:20: error: instance method 'bar:' has a parameter with a different types in different translation units ('double' vs. 'float')
-// CHECK: interface1.m:58:19: note: declared here with type 'float'
-// CHECK: interface1.m:100:17: error: class 'I15' has incompatible superclasses
-// CHECK: interface1.m:100:17: note: inherits from superclass 'I12' here
-// CHECK: interface2.m:99:17: note: inherits from superclass 'I11' here
-// CHECK: 8 errors generated
-

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/namespace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/namespace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/namespace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/namespace1.cpp
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/namespace2.cpp
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: namespace2.cpp:16:17: error: external variable 'z' declared with incompatible types in different translation units ('double' vs. 'float')
-// CHECK: namespace1.cpp:16:16: note: declared here with type 'float'

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/property1.m
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/property2.m
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: property2.m:12:26: error: property 'Prop1' declared with incompatible types in different translation units ('int' vs. 'float')
-// CHECK: property1.m:10:28: note: declared here with type 'float'
-// CHECK: property2.m:12:26: error: instance method 'Prop1' has incompatible result types in different translation units ('int' vs. 'float')
-// CHECK: property1.m:10:28: note: instance method 'Prop1' also declared here
-// CHECK: property1.m:28:21: error: property 'Prop2' is synthesized to different ivars in different translation units ('ivar3' vs. 'ivar2')
-// CHECK: property2.m:29:21: note: property is synthesized to ivar 'ivar2' here
-// CHECK: property1.m:29:10: error: property 'Prop3' is implemented with @dynamic in one translation but @synthesize in another translation unit
-// CHECK: property2.m:31:13: note: property 'Prop3' is implemented with @synthesize here
-// CHECK: 4 errors generated.

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/struct1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/struct2.c
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: struct1.c:13:8: warning: type 'struct S1' has incompatible definitions in different translation units
-// CHECK: struct1.c:15:7: note: field 'field2' has type 'int' here
-// CHECK: struct2.c:12:9: note: field 'field2' has type 'float' here
-// CHECK: struct2.c:15:11: error: external variable 'x1' declared with incompatible types in different translation units ('struct S1' vs. 'struct S1')
-// CHECK: struct1.c:18:11: note: declared here with type 'struct S1'
-// CHECK: struct1.c:21:8: warning: type 'struct S2' has incompatible definitions in different translation units
-// CHECK: struct2.c:18:7: note: 'S2' is a union here
-// CHECK: struct2.c:18:30: error: external variable 'x2' declared with incompatible types in different translation units ('union S2' vs. 'struct S2')
-// CHECK: struct1.c:21:31: note: declared here with type 'struct S2'
-// CHECK: struct1.c:24:8: warning: type 'struct S3' has incompatible definitions in different translation units
-// CHECK: struct1.c:24:36: note: field 'd' has type 'double' here
-// CHECK: struct2.c:21:8: note: no corresponding field here
-// CHECK: struct2.c:21:31: error: external variable 'x3' declared with incompatible types in different translation units ('struct S3' vs. 'struct S3')
-// CHECK: struct1.c:24:41: note: declared here with type 'struct S3'
-// CHECK: struct1.c:27:8: warning: type 'struct S4' has incompatible definitions in different translation units
-// CHECK: struct2.c:24:26: note: field 'f' has type 'float' here
-// CHECK: struct1.c:27:8: note: no corresponding field here
-// CHECK: struct2.c:24:31: error: external variable 'x4' declared with incompatible types in different translation units ('struct S4' vs. 'struct S4')
-// CHECK: struct1.c:27:22: note: declared here with type 'struct S4'
-// CHECK: struct1.c:33:8: warning: type 'struct S6' has incompatible definitions in different translation units
-// CHECK: struct1.c:33:33: note: bit-field 'j' with type 'unsigned int' and length 8 here
-// CHECK: struct2.c:30:33: note: field 'j' is not a bit-field
-// CHECK: struct2.c:30:38: error: external variable 'x6' declared with incompatible types in different translation units ('struct S6' vs. 'struct S6')
-// CHECK: struct1.c:33:42: note: declared here with type 'struct S6'
-// CHECK: struct1.c:36:8: warning: type 'struct S7' has incompatible definitions in different translation units
-// CHECK: struct1.c:36:33: note: bit-field 'j' with type 'unsigned int' and length 8 here
-// CHECK: struct2.c:33:33: note: bit-field 'j' with type 'unsigned int' and length 16 here
-// CHECK: struct2.c:33:43: error: external variable 'x7' declared with incompatible types in different translation units ('struct S7' vs. 'struct S7')
-// CHECK: struct1.c:36:42: note: declared here with type 'struct S7'
-// CHECK: struct1.c:56:10: warning: type 'struct DeeperError' has incompatible definitions in different translation units
-// CHECK: struct1.c:56:35: note: field 'f' has type 'int' here
-// CHECK: struct2.c:53:37: note: field 'f' has type 'float' here
-// CHECK: struct1.c:54:8: warning: type 'struct DeepError' has incompatible definitions in different translation units
-// CHECK: struct1.c:56:41: note: field 'Deeper' has type 'struct DeeperError *' here
-// CHECK: struct2.c:53:43: note: field 'Deeper' has type 'struct DeeperError *' here
-// CHECK: struct2.c:54:3: error: external variable 'xDeep' declared with incompatible types in different translation units ('struct DeepError' vs. 'struct DeepError')
-// CHECK: struct1.c:57:3: note: declared here with type 'struct DeepError'
-// CHECK: 8 warnings and 7 errors generated

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/typedef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/typedef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/typedef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/typedef1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/typedef2.c
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: typedef2.c:4:10: error: external variable 'x2' declared with incompatible types in different translation units ('Typedef2' (aka 'double') vs. 'Typedef2' (aka 'int'))
-// CHECK: typedef1.c:4:10: note: declared here with type 'Typedef2' (aka 'int')
-// CHECK: 1 error

Modified: trunk/contrib/llvm/tools/clang/test/ASTMerge/var.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/ASTMerge/var.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/ASTMerge/var.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.1.ast %S/Inputs/var1.c
-// RUN: %clang_cc1 -emit-pch -o %t.2.ast %S/Inputs/var2.c
-// RUN: %clang_cc1 -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only -fdiagnostics-show-note-include-stack %s 2>&1 | FileCheck %s
-
-// CHECK: var2.c:2:9: error: external variable 'x1' declared with incompatible types in different translation units ('double *' vs. 'float **')
-// CHECK: var1.c:2:9: note: declared here with type 'float **'
-// CHECK: var2.c:3:5: error: external variable 'x2' declared with incompatible types in different translation units ('int' vs. 'double')
-// CHECK: In file included from{{.*}}var1.c:3:
-// CHECK: var1.h:1:8: note: declared here with type 'double'
-// CHECK: error: external variable 'xarray3' declared with incompatible types in different translation units ('int [17]' vs. 'int [18]')
-// CHECK: var1.c:7:5: note: declared here with type 'int [18]'
-// CHECK: 3 errors

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/CFContainers-invalid.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/CFContainers-invalid.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/CFContainers-invalid.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=osx.coreFoundation.containers.PointerSizedValues -triple x86_64-apple-darwin -verify %s
-// expected-no-diagnostics
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFArray * CFArrayRef;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef const struct __CFSet * CFSetRef;
-
-extern const CFAllocatorRef kCFAllocatorDefault;
-
-// Unexpected declarations for these:
-CFArrayRef CFArrayCreate(CFAllocatorRef);
-CFDictionaryRef CFDictionaryCreate(CFAllocatorRef);
-CFSetRef CFSetCreate(CFAllocatorRef);
-
-void testNoCrash() {
-  (void)CFArrayCreate(kCFAllocatorDefault);
-  (void)CFDictionaryCreate(kCFAllocatorDefault);
-  (void)CFSetCreate(kCFAllocatorDefault);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/CFContainers.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/CFContainers.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/CFContainers.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,204 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=osx.coreFoundation.containers.PointerSizedValues,osx.coreFoundation.containers.OutOfBounds -analyzer-store=region -triple x86_64-apple-darwin -verify %s
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFString * CFStringRef;
-typedef unsigned char Boolean;
-typedef signed long CFIndex;
-extern
-const CFAllocatorRef kCFAllocatorDefault;
-typedef const void * (*CFArrayRetainCallBack)(CFAllocatorRef allocator, const void *value);
-typedef void (*CFArrayReleaseCallBack)(CFAllocatorRef allocator, const void *value);
-typedef CFStringRef (*CFArrayCopyDescriptionCallBack)(const void *value);
-typedef Boolean (*CFArrayEqualCallBack)(const void *value1, const void *value2);
-typedef struct {
-    CFIndex version;
-    CFArrayRetainCallBack retain;
-    CFArrayReleaseCallBack release;
-    CFArrayCopyDescriptionCallBack copyDescription;
-    CFArrayEqualCallBack equal;
-} CFArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-CFArrayRef CFArrayCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFArrayCallBacks *callBacks);
-typedef const struct __CFString * CFStringRef;
-enum {
-    kCFNumberSInt8Type = 1,
-    kCFNumberSInt16Type = 2,
-    kCFNumberSInt32Type = 3,
-    kCFNumberSInt64Type = 4,
-    kCFNumberFloat32Type = 5,
-    kCFNumberFloat64Type = 6,
-    kCFNumberCharType = 7,
-    kCFNumberShortType = 8,
-    kCFNumberIntType = 9,
-    kCFNumberLongType = 10,
-    kCFNumberLongLongType = 11,
-    kCFNumberFloatType = 12,
-    kCFNumberDoubleType = 13,
-    kCFNumberCFIndexType = 14,
-    kCFNumberNSIntegerType = 15,
-    kCFNumberCGFloatType = 16,
-    kCFNumberMaxType = 16
-};
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-typedef CFIndex CFComparisonResult;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef const void * (*CFDictionaryRetainCallBack)(CFAllocatorRef allocator, const void *value);
-typedef void (*CFDictionaryReleaseCallBack)(CFAllocatorRef allocator, const void *value);
-typedef CFStringRef (*CFDictionaryCopyDescriptionCallBack)(const void *value);
-typedef Boolean (*CFDictionaryEqualCallBack)(const void *value1, const void *value2);
-typedef Boolean (*CFArrayEqualCallBack)(const void *value1, const void *value2);
-typedef Boolean (*CFSetEqualCallBack)(const void *value1, const void *value2);
-typedef const void * (*CFSetRetainCallBack)(CFAllocatorRef allocator, const void *value);
-typedef void (*CFSetReleaseCallBack)(CFAllocatorRef allocator, const void *value);
-typedef CFStringRef (*CFSetCopyDescriptionCallBack)(const void *value);
-typedef struct {
-    CFIndex version;
-    CFSetRetainCallBack retain;
-    CFSetReleaseCallBack release;
-    CFSetCopyDescriptionCallBack copyDescription;
-    CFSetEqualCallBack equal;
-} CFSetCallBacks;
-typedef struct {
-    CFIndex version;
-    CFDictionaryRetainCallBack retain;
-    CFDictionaryReleaseCallBack release;
-    CFDictionaryCopyDescriptionCallBack copyDescription;
-    CFDictionaryEqualCallBack equal;
-} CFDictionaryKeyCallBacks;
-typedef struct {
-    CFIndex version;
-    CFDictionaryRetainCallBack retain;
-    CFDictionaryReleaseCallBack release;
-    CFDictionaryCopyDescriptionCallBack copyDescription;
-    CFDictionaryEqualCallBack equal;
-} CFDictionaryValueCallBacks;
-CFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-extern
-const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFSet * CFSetRef;
-extern
-const CFSetCallBacks kCFTypeSetCallBacks;
-extern
-const CFDictionaryKeyCallBacks kCFCopyStringDictionaryKeyCallBacks;
-extern
-const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern
-CFIndex CFArrayGetCount(CFArrayRef theArray);
-CFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const 
-CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-extern
-CFSetRef CFSetCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFSetCallBacks *callBacks);
-#define CFSTR(cStr)  ((CFStringRef) __builtin___CFStringMakeConstantString ("" cStr ""))
-#define NULL __null
-
-// Done with the headers. 
-// Test alpha.osx.cocoa.ContainerAPI checker.
-void testContainers(int **xNoWarn, CFIndex count) {
-  int x[] = { 1, 2, 3 };
-  CFArrayRef foo = CFArrayCreate(kCFAllocatorDefault, (const void **) x, sizeof(x) / sizeof(x[0]), 0);// expected-warning {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
-
-  CFArrayRef fooNoWarn = CFArrayCreate(kCFAllocatorDefault, (const void **) xNoWarn, sizeof(xNoWarn) / sizeof(xNoWarn[0]), 0); // no warning
-  CFArrayRef fooNoWarn2 = CFArrayCreate(kCFAllocatorDefault, 0, sizeof(xNoWarn) / sizeof(xNoWarn[0]), 0);// no warning, passing in 0
-  CFArrayRef fooNoWarn3 = CFArrayCreate(kCFAllocatorDefault, NULL, sizeof(xNoWarn) / sizeof(xNoWarn[0]), 0);// no warning, passing in NULL
-
-  CFSetRef set = CFSetCreate(NULL, (const void **)x, 3, &kCFTypeSetCallBacks); // expected-warning {{The second argument to 'CFSetCreate' must be a C array of pointer-sized values}}
-  CFArrayRef* pairs = new CFArrayRef[count];
-  CFSetRef fSet = CFSetCreate(kCFAllocatorDefault, (const void**) pairs, count - 1, &kCFTypeSetCallBacks);// no warning
-}
-
-void CreateDict(int *elems) {
-  const short days28 = 28;
-  const short days30 = 30;
-  const short days31 = 31;
-  CFIndex numValues = 6;  
-  CFStringRef keys[6];
-  CFNumberRef values[6];
-  keys[0] = CFSTR("January");  values[0] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days31);
-  keys[1] = CFSTR("February"); values[1] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days28);
-  keys[2] = CFSTR("March"); values[2] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days31);
-  keys[3] = CFSTR("April"); values[3] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days30);
-  keys[4] = CFSTR("May"); values[4] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days31);
-  keys[5] = CFSTR("June"); values[5] = CFNumberCreate(kCFAllocatorDefault, kCFNumberShortType, &days30);
-
-  const CFDictionaryKeyCallBacks keyCB = kCFCopyStringDictionaryKeyCallBacks;
-  const CFDictionaryValueCallBacks valCB = kCFTypeDictionaryValueCallBacks;
-  CFDictionaryRef dict1 = CFDictionaryCreate(kCFAllocatorDefault, (const void**)keys, (const void**)values, numValues, &keyCB, &valCB); // no warning
-  CFDictionaryRef dict2 = CFDictionaryCreate(kCFAllocatorDefault, (const void**)elems[0], (const void**)values, numValues, &keyCB, &valCB); //expected-warning {{The second argument to 'CFDictionaryCreate' must be a C array of}} expected-warning {{cast to 'const void **' from smaller integer type 'int'}}
-  CFDictionaryRef dict3 = CFDictionaryCreate(kCFAllocatorDefault, (const void**)keys, (const void**)elems, numValues, &keyCB, &valCB); // expected-warning {{The third argument to 'CFDictionaryCreate' must be a C array of pointer-sized values}}
-}
-
-void OutOfBoundsSymbolicOffByOne(const void ** input, CFIndex S) {
-  CFArrayRef array;
-  array = CFArrayCreate(kCFAllocatorDefault, input, S, 0);
-  const void *s1 = CFArrayGetValueAtIndex(array, 0);   // no warning
-  const void *s2 = CFArrayGetValueAtIndex(array, S-1); // no warning
-  const void *s3 = CFArrayGetValueAtIndex(array, S);   // expected-warning {{Index is out of bounds}}
-}
-
-void OutOfBoundsConst(const void ** input, CFIndex S) {
-  CFArrayRef array;
-  array = CFArrayCreate(kCFAllocatorDefault, input, 3, 0);
-  const void *s1 = CFArrayGetValueAtIndex(array, 0); // no warning
-  const void *s2 = CFArrayGetValueAtIndex(array, 2); // no warning
-  const void *s3 = CFArrayGetValueAtIndex(array, 5); // expected-warning {{Index is out of bounds}}
-  
-  // TODO: The solver is probably not strong enough here.
-  CFIndex sIndex;
-  for (sIndex = 0 ; sIndex <= 5 ; sIndex += 3 ) {
-    const void *s = CFArrayGetValueAtIndex(array, sIndex); 
-  }  
-}
-
-void OutOfBoundsZiro(const void ** input, CFIndex S) {
-  CFArrayRef array;
-  // The API allows to set the size to 0. Check that we don't undeflow when the size is 0.
-  array = CFArrayCreate(kCFAllocatorDefault, 0, 0, 0);
-  const void *s1 = CFArrayGetValueAtIndex(array, 0); // expected-warning {{Index is out of bounds}}
-}
-
-void TestGetCount(CFArrayRef A, CFIndex sIndex) {
-  CFIndex sCount = CFArrayGetCount(A);
-  if (sCount > sIndex)
-    const void *s1 = CFArrayGetValueAtIndex(A, sIndex);
-  const void *s2 = CFArrayGetValueAtIndex(A, sCount);// expected-warning {{Index is out of bounds}}
-}
-
-typedef void* XX[3];
-void TestPointerToArray(int *elems, void *p1, void *p2, void *p3, unsigned count, void* fn[], char cp[]) {
-  void* x[] = { p1, p2, p3 };
-  CFArrayCreate(0, (const void **) &x, count, 0); // no warning
-
-  void* y[] = { p1, p2, p3 };
-  CFArrayCreate(0, (const void **) y, count, 0); // no warning
-  XX *z = &x;
-  CFArrayCreate(0, (const void **) z, count, 0); // no warning
-
-  CFArrayCreate(0, (const void **) &fn, count, 0); // false negative
-  CFArrayCreate(0, (const void **) fn, count, 0); // no warning
-  CFArrayCreate(0, (const void **) cp, count, 0); // expected-warning {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
-
-  char cc[] = { 0, 2, 3 };
-  CFArrayCreate(0, (const void **) &cc, count, 0); // expected-warning {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
-  CFArrayCreate(0, (const void **) cc, count, 0); // expected-warning {{The second argument to 'CFArrayCreate' must be a C array of pointer-sized}}
-}
-
-void TestUndef(CFArrayRef A, CFIndex sIndex, void* x[]) {
-  unsigned undefVal;
-  const void *s1 = CFArrayGetValueAtIndex(A, undefVal);
-
-  unsigned undefVal2;
-  CFArrayRef B = CFArrayCreate(0, (const void **) &x, undefVal2, 0); 
-  const void *s2 = CFArrayGetValueAtIndex(B, 2);
-}
-
-void TestConst(CFArrayRef A, CFIndex sIndex, void* x[]) {
-  CFArrayRef B = CFArrayCreate(0, (const void **) &x, 4, 0); 
-  const void *s1 = CFArrayGetValueAtIndex(B, 2);
-
-}
-
-void TestNullArray() {
-  CFArrayGetValueAtIndex(0, 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/CFDateGC.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/CFDateGC.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/CFDateGC.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -analyzer-constraints=range -verify -fobjc-gc %s  -Wno-implicit-function-declaration
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h and CoreFoundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including [Core]Foundation.h directly makes this test case 
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef const void * CFTypeRef;
-void CFRelease(CFTypeRef cf);
-CFTypeRef CFRetain(CFTypeRef cf);
-CFTypeRef CFMakeCollectable(CFTypeRef cf);
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef struct objc_object {} *id;
-typedef signed char BOOL;
-static __inline__ __attribute__((always_inline)) id NSMakeCollectable(CFTypeRef cf) { return 0; }
- at protocol NSObject  - (BOOL)isEqual:(id)object;
-- (oneway void)release;
-- (id)retain;
- at end
- at class NSArray;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-CFAbsoluteTime CFAbsoluteTimeGetCurrent();
-
-CFAbsoluteTime f1_use_after_release() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);
-  CFRetain(date);
-  [NSMakeCollectable(date) release];
-  CFDateGetAbsoluteTime(date); // no-warning
-  CFRelease(date);
-  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released}}
-  return t;
-}
-
-// The following two test cases verifies that CFMakeCollectable is a no-op
-// in non-GC mode and a "release" in GC mode.
-CFAbsoluteTime f2_use_after_release() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);
-  CFRetain(date);
-  [(id) CFMakeCollectable(date) release];
-  CFDateGetAbsoluteTime(date); // no-warning
-  CFRelease(date);
-  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released}}
-  return t;
-}
-
-CFAbsoluteTime f2_noleak() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);
-  CFRetain(date);
-  [(id) CFMakeCollectable(date) release];
-  CFDateGetAbsoluteTime(date); // no-warning
-  t = CFDateGetAbsoluteTime(date);  // no-warning
-  CFRelease(date); // no-warning
-  return t;
-}
-
-void f3_leak_with_gc() {
-  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); // expected-warning 2 {{leak}}
-  [[(id) date retain] release];
-}
-
-// The following test case verifies that we "stop tracking" a retained object
-// when it is passed as an argument to an implicitly defined function.
-CFAbsoluteTime f4() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);
-  CFRetain(date);
-  some_implicitly_defined_function_stop_tracking(date); // no-warning
-  return t;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/CFNumber.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/CFNumber.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/CFNumber.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.coreFoundation.CFNumber,osx.cocoa.RetainCount -analyzer-store=region -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 %s
-
-typedef signed long CFIndex;
-typedef const struct __CFAllocator * CFAllocatorRef;
-enum { kCFNumberSInt8Type = 1, kCFNumberSInt16Type = 2,
-       kCFNumberSInt32Type = 3, kCFNumberSInt64Type = 4,
-       kCFNumberFloat32Type = 5, kCFNumberFloat64Type = 6,
-       kCFNumberCharType = 7, kCFNumberShortType = 8,
-       kCFNumberIntType = 9, kCFNumberLongType = 10,
-       kCFNumberLongLongType = 11, kCFNumberFloatType = 12,
-       kCFNumberDoubleType = 13, kCFNumberCFIndexType = 14,
-       kCFNumberNSIntegerType = 15, kCFNumberCGFloatType = 16,
-       kCFNumberMaxType = 16 };
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-
-CFNumberRef f1(unsigned char x) {
-  return CFNumberCreate(0, kCFNumberSInt16Type, &x);  // expected-warning{{An 8 bit integer is used to initialize a CFNumber object that represents a 16 bit integer. 8 bits of the CFNumber value will be garbage}}
-}
-
-__attribute__((cf_returns_retained)) CFNumberRef f2(unsigned short x) {
-  return CFNumberCreate(0, kCFNumberSInt8Type, &x); // expected-warning{{A 16 bit integer is used to initialize a CFNumber object that represents an 8 bit integer. 8 bits of the input integer will be lost}}
-}
-
-// test that the attribute overrides the naming convention.
-__attribute__((cf_returns_not_retained)) CFNumberRef CreateNum(unsigned char x) {
-  return CFNumberCreate(0, kCFNumberSInt8Type, &x); // expected-warning{{leak}}
-}
-
-CFNumberRef f3(unsigned i) {
-  return CFNumberCreate(0, kCFNumberLongType, &i); // expected-warning{{A 32 bit integer is used to initialize a CFNumber object that represents a 64 bit integer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/CFRetainRelease_NSAssertionHandler.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/CFRetainRelease_NSAssertionHandler.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/CFRetainRelease_NSAssertionHandler.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -verify %s -analyzer-constraints=range -analyzer-store=region
-// expected-no-diagnostics
-
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} - (id)init; @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end extern NSString * const NSBundleDidLoadNotification;
- at interface NSAssertionHandler : NSObject {}
-+ (NSAssertionHandler *)currentHandler;
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
-- (void)handleFailureInFunction:(NSString *)functionName file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
- at end
-extern NSString * const NSConnectionReplyMode;
-
-//----------------------------------------------------------------------------//
-// The following test case was filed in PR 2593:
-//   http://llvm.org/bugs/show_bug.cgi?id=2593
-//
-// There should be no null dereference flagged by the checker because of
-// NSParameterAssert and NSAssert.
-
-
- at interface TestAssert : NSObject {}
- at end
-
- at implementation TestAssert
-
-- (id)initWithPointer: (int*)x
-{
-  // Expansion of: NSParameterAssert( x != 0 );
-  do { if (!((x != 0))) { [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd object:self file:[NSString stringWithUTF8String:"CFRetainRelease_NSAssertionHandler.m"] lineNumber:21 description:(@"Invalid parameter not satisfying: %s"), ("x != 0"), (0), (0), (0), (0)]; } } while(0);
-
-  if( (self = [super init]) != 0 )
-  {
-    *x = 1; // no-warning
-  }
-
-  return self;
-}
-
-- (id)initWithPointer2: (int*)x
-{
-  // Expansion of: NSAssert( x != 0, @"" );
-  do { if (!((x != 0))) { [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd object:self file:[NSString stringWithUTF8String:"CFRetainRelease_NSAssertionHandler.m"] lineNumber:33 description:((@"")), (0), (0), (0), (0), (0)]; } } while(0);  
-
-  if( (self = [super init]) != 0 )
-  {
-    *x = 1; // no-warning
-  }
-
-  return self;
-}
-
- at end
-
-void pointerFunction (int *x) {
-  // Manual expansion of NSCAssert( x != 0, @"")
-  do { if (!((x != 0))) { [[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] file:[NSString stringWithUTF8String:__FILE__] lineNumber:__LINE__ description:((@""))]; } } while(0);  
-
-  *x = 1; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/CGColorSpace.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/CGColorSpace.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/CGColorSpace.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -analyzer-constraints=range -verify %s
-
-typedef struct CGColorSpace *CGColorSpaceRef;
-extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
-extern CGColorSpaceRef CGColorSpaceRetain(CGColorSpaceRef space);
-extern void CGColorSpaceRelease(CGColorSpaceRef space);
-
-void f() {
-  CGColorSpaceRef X = CGColorSpaceCreateDeviceRGB(); // expected-warning{{leak}}
-  CGColorSpaceRetain(X);
-}
-
-void fb() {
-  CGColorSpaceRef X = CGColorSpaceCreateDeviceRGB();
-  CGColorSpaceRetain(X);
-  CGColorSpaceRelease(X);
-  CGColorSpaceRelease(X);  // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/CheckNSError.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/CheckNSError.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/CheckNSError.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.NSError,osx.coreFoundation.CFError -analyzer-store=region -analyzer-constraints=range -verify -Wno-objc-root-class %s
-
-
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} @end
- at class NSDictionary;
- at interface NSError : NSObject <NSCopying, NSCoding> {}
-+ (id)errorWithDomain:(NSString *)domain code:(NSInteger)code userInfo:(NSDictionary *)dict;
- at end
-extern NSString * const NSXMLParserErrorDomain ;
-
- at interface A
-- (void)myMethodWhichMayFail:(NSError **)error;
-- (BOOL)myMethodWhichMayFail2:(NSError **)error;
- at end
-
- at implementation A
-- (void)myMethodWhichMayFail:(NSError **)error {   // expected-warning {{Method accepting NSError** should have a non-void return value to indicate whether or not an error occurred}}
-  *error = [NSError errorWithDomain:@"domain" code:1 userInfo:0]; // expected-warning {{Potential null dereference}}
-}
-
-- (BOOL)myMethodWhichMayFail2:(NSError **)error {  // no-warning
-  if (error) *error = [NSError errorWithDomain:@"domain" code:1 userInfo:0]; // no-warning
-  return 0;
-}
- at end
-
-struct __CFError {};
-typedef struct __CFError* CFErrorRef;
-
-void foo(CFErrorRef* error) { // expected-warning {{Function accepting CFErrorRef* should have a non-void return value to indicate whether or not an error occurred}}
-  *error = 0;  // expected-warning {{Potential null dereference}}
-}
-
-int f1(CFErrorRef* error) {
-  if (error) *error = 0; // no-warning
-  return 0;
-}
-
-int f2(CFErrorRef* error) {
-  if (0 != error) *error = 0; // no-warning
-  return 0;
-}
-
-int f3(CFErrorRef* error) {
-  if (error != 0) *error = 0; // no-warning
-  return 0;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-cxx.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-cxx.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-cxx.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-namespace std {
-  template <class T1, class T2>
-  struct pair {
-    T1 first;
-    T2 second;
-    
-    pair() : first(), second() {}
-    pair(const T1 &a, const T2 &b) : first(a), second(b) {}
-    
-    template<class U1, class U2>
-    pair(const pair<U1, U2> &other) : first(other.first), second(other.second) {}
-  };
-  
-  typedef __typeof__(sizeof(int)) size_t;
-  
-  template<typename T>
-  class vector {
-    T *_start;
-    T *_finish;
-    T *_end_of_storage;
-  public:
-    vector() : _start(0), _finish(0), _end_of_storage(0) {}
-    ~vector();
-    
-    size_t size() const {
-      return size_t(_finish - _start);
-    }
-    
-    void push_back();
-    T pop_back();
-
-    T &operator[](size_t n) {
-      return _start[n];
-    }
-    
-    const T &operator[](size_t n) const {
-      return _start[n];
-    }
-    
-    T *begin() { return _start; }
-    const T *begin() const { return _start; }
-
-    T *end() { return _finish; }
-    const T *end() const { return _finish; }
-  };
-  
-  class exception {
-  public:
-    exception() throw();
-    virtual ~exception() throw();
-    virtual const char *what() const throw() {
-      return 0;
-    }
-  };
-
-  class bad_alloc : public exception {
-    public:
-    bad_alloc() throw();
-    bad_alloc(const bad_alloc&) throw();
-    bad_alloc& operator=(const bad_alloc&) throw();
-    virtual const char* what() const throw() {
-      return 0;
-    }
-  };
-
-  struct nothrow_t {};
-
-  extern const nothrow_t nothrow;
-
-  template<class InputIter, class OutputIter>
-  OutputIter copy(InputIter II, InputIter IE, OutputIter OI) {
-    while (II != IE)
-      *OI++ = *II++;
-    return OI;
-  }
-
-  struct input_iterator_tag { };
-  struct output_iterator_tag { };
-  struct forward_iterator_tag : public input_iterator_tag { };
-  struct bidirectional_iterator_tag : public forward_iterator_tag { };
-  struct random_access_iterator_tag : public bidirectional_iterator_tag { };
-}
-
-void* operator new(std::size_t, const std::nothrow_t&) throw();
-void* operator new[](std::size_t, const std::nothrow_t&) throw();
-void operator delete(void*, const std::nothrow_t&) throw();
-void operator delete[](void*, const std::nothrow_t&) throw();
-
-void* operator new (std::size_t size, void* ptr) throw() { return ptr; };
-void* operator new[] (std::size_t size, void* ptr) throw() { return ptr; };
-void operator delete (void* ptr, void*) throw() {};
-void operator delete[] (void* ptr, void*) throw() {};

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-for-malloc.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-for-malloc.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-for-malloc.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void *calloc(size_t, size_t);
-void free(void *);
-
-
-#if __OBJC__
-
-#import "system-header-simulator-objc.h"
-
- at interface Wrapper : NSData
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len;
- at end
-
- at implementation Wrapper
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len {
-  return [self initWithBytesNoCopy:bytes length:len freeWhenDone:1]; // no-warning
-}
- at end
-
- at interface CustomData : NSData
-+ (id)somethingNoCopy:(char *)bytes;
-+ (id)somethingNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer;
-+ (id)something:(char *)bytes freeWhenDone:(BOOL)freeBuffer;
- at end
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-for-simple-stream.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-for-simple-stream.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-for-simple-stream.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-typedef struct __sFILE {
-  unsigned char *_p;
-} FILE;
-FILE *fopen(const char * restrict, const char * restrict) __asm("_" "fopen" );
-int fputc(int, FILE *);
-int fputs(const char * restrict, FILE * restrict) __asm("_" "fputs" );
-int fclose(FILE *);
-void exit(int);
-
-// The following is a fake system header function
-typedef struct __FileStruct {
-  FILE * p;
-} FileStruct;
-void fakeSystemHeaderCall(FileStruct *);

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-objc.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-objc.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator-objc.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-typedef unsigned int UInt32;
-typedef unsigned short UInt16;
-
-typedef signed long CFIndex;
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
-typedef unsigned short unichar;
-typedef UInt16 UniChar;
-
-enum {
-    NSASCIIStringEncoding = 1,
-    NSNEXTSTEPStringEncoding = 2,
-    NSJapaneseEUCStringEncoding = 3,
-    NSUTF8StringEncoding = 4,
-    NSISOLatin1StringEncoding = 5,
-    NSSymbolStringEncoding = 6,
-    NSNonLossyASCIIStringEncoding = 7,
-};
-typedef const struct __CFString * CFStringRef;
-typedef struct __CFString * CFMutableStringRef;
-typedef NSUInteger NSStringEncoding;
-typedef UInt32 CFStringEncoding;
-
-typedef const void * CFTypeRef;
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern const CFAllocatorRef kCFAllocatorSystemDefault;
-extern const CFAllocatorRef kCFAllocatorMalloc;
-extern const CFAllocatorRef kCFAllocatorMallocZone;
-extern const CFAllocatorRef kCFAllocatorNull;
-
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (id)copy;
-- (oneway void)release;
-- (id)autorelease;
-- (id)init;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
- at end
- at interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
- at protocol NSFastEnumeration  - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end           @class NSString, NSDictionary;
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value;
- at end  @interface NSNumber : NSValue  - (char)charValue;
-- (id)initWithInt:(int)value;
- at end   @class NSString;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end  @interface NSArray (NSArrayCreation)  + (id)array;
- at end       @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
- at end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
- at interface NSDate : NSObject <NSCopying, NSCoding>  - (NSTimeInterval)timeIntervalSinceReferenceDate;
- at end
-
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (NSString *)stringByAppendingString:(NSString *)aString;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-- (id)initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer;
-- (id)initWithCharacters:(const unichar *)characters length:(NSUInteger)length;
-- (id)initWithBytes:(const void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding;
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)freeBuffer;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithString:(NSString *)string;
- at end        @class NSString, NSURL, NSError;
-
- at interface NSMutableString : NSString
-- (void)appendFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2)));
- at end
-
- at interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding>  - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
- at end
-
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-void CFDictionarySetValue(CFMutableDictionaryRef, const void *, const void *);
-
-
-extern void CFRelease(CFTypeRef cf);
-
-extern CFMutableStringRef CFStringCreateMutableWithExternalCharactersNoCopy(CFAllocatorRef alloc, UniChar *chars, CFIndex numChars, CFIndex capacity, CFAllocatorRef externalCharactersAllocator);
-extern CFStringRef CFStringCreateWithCStringNoCopy(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);
-extern void CFStringAppend(CFMutableStringRef theString, CFStringRef appendedString);
-
-void SystemHeaderFunctionWithBlockParam(void *, void (^block)(void *), unsigned);
-
- at interface NSPointerArray : NSObject <NSFastEnumeration, NSCopying, NSCoding>
-- (void)addPointer:(void *)pointer;
-- (void)insertPointer:(void *)item atIndex:(NSUInteger)index;
-- (void)replacePointerAtIndex:(NSUInteger)index withPointer:(void *)item;
-- (void *)pointerAtIndex:(NSUInteger)index;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/Inputs/system-header-simulator.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// Like the compiler, the static analyzer treats some functions differently if
-// they come from a system header -- for example, it is assumed that system
-// functions do not arbitrarily free() their parameters, and that some bugs
-// found in system headers cannot be fixed by the user and should be
-// suppressed.
-#pragma clang system_header
-
-#ifdef __cplusplus
-#define restrict /*restrict*/
-#endif
-
-typedef struct _FILE FILE;
-extern FILE *stdin;
-extern FILE *stdout;
-extern FILE *stderr;
-// Include a variant of standard streams that occur in the pre-processed file.
-extern FILE *__stdinp;
-extern FILE *__stdoutp;
-extern FILE *__stderrp;
-
-int scanf(const char *restrict format, ...);
-int fscanf(FILE *restrict, const char *restrict, ...);
-int printf(const char *restrict format, ...);
-int fprintf(FILE *restrict, const char *restrict, ...);
-int getchar(void);
-
-// Note, on some platforms errno macro gets replaced with a function call.
-extern int errno;
-
-typedef __typeof(sizeof(int)) size_t;
-
-size_t strlen(const char *);
-
-char *strcpy(char *restrict, const char *restrict);
-
-typedef unsigned long __darwin_pthread_key_t;
-typedef __darwin_pthread_key_t pthread_key_t;
-int pthread_setspecific(pthread_key_t, const void *);
-
-typedef long long __int64_t;
-typedef __int64_t __darwin_off_t;
-typedef __darwin_off_t fpos_t;
-
-void setbuf(FILE * restrict, char * restrict);
-int setvbuf(FILE * restrict, char * restrict, int, size_t);
-
-FILE *fopen(const char * restrict, const char * restrict);
-int fclose(FILE *);
-FILE *funopen(const void *,
-                 int (*)(void *, char *, int),
-                 int (*)(void *, const char *, int),
-                 fpos_t (*)(void *, fpos_t, int),
-                 int (*)(void *));
-
-int sqlite3_bind_text_my(int, const char*, int n, void(*)(void*));
-
-typedef void (*freeCallback) (void*);
-typedef struct {
-  int i;
-  freeCallback fc;
-} StWithCallback;
-
-int dealocateMemWhenDoneByVal(void*, StWithCallback);
-int dealocateMemWhenDoneByRef(StWithCallback*, const void*);
-
-typedef struct CGContext *CGContextRef;
-CGContextRef CGBitmapContextCreate(void *data/*, size_t width, size_t height,
-                                   size_t bitsPerComponent, size_t bytesPerRow,
-                                   CGColorSpaceRef space,
-                                   CGBitmapInfo bitmapInfo*/);
-void *CGBitmapContextGetData(CGContextRef context);
-
-// Include xpc.
-typedef struct _xpc_connection_s * xpc_connection_t;
-typedef void (*xpc_finalizer_t)(void *value);
-void xpc_connection_set_context(xpc_connection_t connection, void *context);
-void xpc_connection_set_finalizer_f(xpc_connection_t connection, xpc_finalizer_t finalizer);
-void xpc_connection_resume(xpc_connection_t connection);
-
-//The following is a fake system header function
-void fakeSystemHeaderCallInt(int *);
-
-typedef struct __SomeStruct {
-  char * p;
-} SomeStruct;
-void fakeSystemHeaderCall(SomeStruct *);

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,105 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator,cplusplus.NewDelete -std=c++11 -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator,cplusplus.NewDelete,alpha.cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -verify %s
-
-#include "Inputs/system-header-simulator-for-malloc.h"
-
-//--------------------------------------------------
-// Check that unix.Malloc catches all types of bugs.
-//--------------------------------------------------
-void testMallocDoubleFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void testMallocLeak() {
-  int *p = (int *)malloc(sizeof(int));
-} // expected-warning{{Potential leak of memory pointed to by 'p'}}
-
-void testMallocUseAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  int j = *p; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testMallocBadFree() {
-  int i;
-  free(&i); // expected-warning{{Argument to free() is the address of the local variable 'i', which is not memory allocated by malloc()}}
-}
-
-void testMallocOffsetFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(++p); // expected-warning{{Argument to free() is offset by 4 bytes from the start of memory allocated by malloc()}}
-}
-
-//-----------------------------------------------------------------
-// Check that unix.MismatchedDeallocator catches all types of bugs.
-//-----------------------------------------------------------------
-void testMismatchedDeallocator() {
-  int *x = (int *)malloc(sizeof(int));
-  delete x; // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
-}
-
-//----------------------------------------------------------------
-// Check that alpha.cplusplus.NewDelete catches all types of bugs.
-//----------------------------------------------------------------
-void testNewDoubleFree() {
-  int *p = new int;
-  delete p;
-  delete p; // expected-warning{{Attempt to free released memory}}
-}
-
-void testNewLeak() {
-  int *p = new int;
-}
-#ifdef LEAKS
-// expected-warning at -2 {{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testNewUseAfterFree() {
-  int *p = (int *)operator new(0);
-  delete p;
-  int j = *p; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testNewBadFree() {
-  int i;
-  delete &i; // expected-warning{{Argument to 'delete' is the address of the local variable 'i', which is not memory allocated by 'new'}}
-}
-
-void testNewOffsetFree() {
-  int *p = new int;
-  operator delete(++p); // expected-warning{{Argument to operator delete is offset by 4 bytes from the start of memory allocated by 'new'}}
-}
-
-//----------------------------------------------------------------
-// Test that we check for free errors on escaped pointers.
-//----------------------------------------------------------------
-void changePtr(int **p);
-static int *globalPtr;
-void changePointee(int *p);
-
-void testMismatchedChangePtrThroughCall() {
-  int *p = (int*)malloc(sizeof(int)*4);
-  changePtr(&p);
-  delete p; // no-warning the value of the pointer might have changed
-}
-
-void testMismatchedChangePointeeThroughCall() {
-  int *p = (int*)malloc(sizeof(int)*4);
-  changePointee(p);
-  delete p; // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testShouldReportDoubleFreeNotMismatched() {
-  int *p = (int*)malloc(sizeof(int)*4);
-  globalPtr = p;
-  free(p);
-  delete globalPtr; // expected-warning {{Attempt to free released memory}}
-}
-
-void testMismatchedChangePointeeThroughAssignment() {
-  int *arr = new int[4];
-  globalPtr = arr;
-  delete arr; // expected-warning{{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator -analyzer-store region -std=c++11 -verify %s
-// expected-no-diagnostics
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-//--------------------------------------------------------------------
-// Check that unix.Malloc + unix.MismatchedDeallocator does not enable
-// warnings produced by the alpha.cplusplus.NewDelete checker.
-//--------------------------------------------------------------------
-void testNewDeleteNoWarn() {
-  int i;
-  delete &i; // no-warning
-
-  int *p1 = new int;
-  delete ++p1; // no-warning
-
-  int *p2 = new int;
-  delete p2;
-  delete p2; // no-warning
-
-  int *p3 = new int; // no-warning
-
-  int *p4 = new int;
-  delete p4;
-  int j = *p4; // no-warning  
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+NewDelete_intersections.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+NewDelete_intersections.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/Malloc+NewDelete_intersections.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete -std=c++11 -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete,alpha.cplusplus.NewDeleteLeaks -std=c++11 -verify %s
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-//-------------------------------------------------------------------
-// Check that unix.Malloc + cplusplus.NewDelete does not enable
-// warnings produced by unix.MismatchedDeallocator.
-//-------------------------------------------------------------------
-void testMismatchedDeallocator() {
-  int *p = (int *)malloc(sizeof(int));
-  delete p;
-} // expected-warning{{Potential leak of memory pointed to by 'p'}}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/MismatchedDeallocator-checker-test.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/MismatchedDeallocator-checker-test.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/MismatchedDeallocator-checker-test.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,221 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.MismatchedDeallocator -fblocks -verify %s
-
-#include "Inputs/system-header-simulator-objc.h"
-#include "Inputs/system-header-simulator-cxx.h"
-
-typedef __typeof__(sizeof(int)) size_t;
-void *malloc(size_t);
-void *realloc(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-char *strdup(const char *s);
-void __attribute((ownership_returns(malloc))) *my_malloc(size_t);
-
-void free(void *);
-void __attribute((ownership_takes(malloc, 1))) my_free(void *);
-
-//---------------------------------------------------------------
-// Test if an allocation function matches deallocation function
-//---------------------------------------------------------------
-
-//--------------- test malloc family
-void testMalloc1() {
-  int *p = (int *)malloc(sizeof(int));
-  delete p; // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc2() {
-  int *p = (int *)malloc(8);
-  int *q = (int *)realloc(p, 16);
-  delete q; // expected-warning{{Memory allocated by realloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc3() {
-  int *p = (int *)calloc(1, sizeof(int));
-  delete p; // expected-warning{{Memory allocated by calloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc4(const char *s) {
-  char *p = strdup(s);
-  delete p; // expected-warning{{Memory allocated by strdup() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc5() {
-  int *p = (int *)my_malloc(sizeof(int));
-  delete p; // expected-warning{{Memory allocated by my_malloc() should be deallocated by free(), not 'delete'}}
-}
-
-void testMalloc6() {
-  int *p = (int *)malloc(sizeof(int));
-  operator delete(p); // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not operator delete}}
-}
-
-void testMalloc7() {
-  int *p = (int *)malloc(sizeof(int));
-  delete[] p; // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not 'delete[]'}}
-}
-
-void testMalloc8() {
-  int *p = (int *)malloc(sizeof(int));
-  operator delete[](p); // expected-warning{{Memory allocated by malloc() should be deallocated by free(), not operator delete[]}}
-}
-
-//--------------- test new family
-void testNew1() {
-  int *p = new int;
-  free(p); // expected-warning{{Memory allocated by 'new' should be deallocated by 'delete', not free()}}
-}
-
-void testNew2() {
-  int *p = (int *)operator new(0);
-  free(p); // expected-warning{{Memory allocated by operator new should be deallocated by 'delete', not free()}}
-}
-
-void testNew3() {
-  int *p = new int[1];
-  free(p); // expected-warning{{Memory allocated by 'new[]' should be deallocated by 'delete[]', not free()}}
-}
-
-void testNew4() {
-  int *p = new int;
-  realloc(p, sizeof(long)); // expected-warning{{Memory allocated by 'new' should be deallocated by 'delete', not realloc()}}
-}
-
-void testNew5() {
-  int *p = (int *)operator new(0);
-  realloc(p, sizeof(long)); // expected-warning{{Memory allocated by operator new should be deallocated by 'delete', not realloc()}}
-}
-
-void testNew6() {
-  int *p = new int[1];
-  realloc(p, sizeof(long)); // expected-warning{{Memory allocated by 'new[]' should be deallocated by 'delete[]', not realloc()}}
-}
-
-void testNew7() {
-  int *p = new int;
-  delete[] p; // expected-warning{{Memory allocated by 'new' should be deallocated by 'delete', not 'delete[]'}}
-}
-
-void testNew8() {
-  int *p = (int *)operator new(0);
-  delete[] p; // expected-warning{{Memory allocated by operator new should be deallocated by 'delete', not 'delete[]'}}
-}
-
-void testNew9() {
-  int *p = new int[1];
-  delete p; // expected-warning{{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
-}
-
-void testNew10() {
-  int *p = (int *)operator new[](0);
-  delete p; // expected-warning{{Memory allocated by operator new[] should be deallocated by 'delete[]', not 'delete'}}
-}
-
-void testNew11(NSUInteger dataLength) {
-  int *p = new int;
-  NSData *d = [NSData dataWithBytesNoCopy:p length:sizeof(int) freeWhenDone:1]; // expected-warning{{Memory allocated by 'new' should be deallocated by 'delete', not +dataWithBytesNoCopy:length:freeWhenDone:}}
-  // FIXME: should be "+dataWithBytesNoCopy:length:freeWhenDone: cannot take ownership of memory allocated by 'new'."
-}
-
-//-------------------------------------------------------
-// Check for intersection with unix.Malloc bounded with 
-// unix.MismatchedDeallocator
-//-------------------------------------------------------
-
-// new/delete oparators are subjects of cplusplus.NewDelete.
-void testNewDeleteNoWarn() {
-  int i;
-  delete &i; // no-warning
-
-  int *p1 = new int;
-  delete ++p1; // no-warning
-
-  int *p2 = new int;
-  delete p2;
-  delete p2; // no-warning
-
-  int *p3 = new int; // no-warning
-}
-
-void testDeleteOpAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  operator delete(p); // no-warning
-}
-
-void testDeleteAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  delete p; // no-warning
-}
-
-void testStandardPlacementNewAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  p = new(p) int; // no-warning
-}
-
-//---------------------------------------------------------------
-// Check for intersection with cplusplus.NewDelete bounded with 
-// unix.MismatchedDeallocator
-//---------------------------------------------------------------
-
-// malloc()/free() are subjects of unix.Malloc and unix.MallocWithAnnotations
-void testMallocFreeNoWarn() {
-  int i;
-  free(&i); // no-warning
-
-  int *p1 = (int *)malloc(sizeof(int));
-  free(++p1); // no-warning
-
-  int *p2 = (int *)malloc(sizeof(int));
-  free(p2);
-  free(p2); // no-warning
-
-  int *p3 = (int *)malloc(sizeof(int)); // no-warning
-}
-
-void testFreeAfterDelete() {
-  int *p = new int;  
-  delete p;
-  free(p); // no-warning
-}
-
-void testStandardPlacementNewAfterDelete() {
-  int *p = new int;  
-  delete p;
-  p = new(p) int; // no-warning
-}
-
-
-// Smart pointer example
-template <typename T>
-struct SimpleSmartPointer {
-  T *ptr;
-
-  explicit SimpleSmartPointer(T *p = 0) : ptr(p) {}
-  ~SimpleSmartPointer() {
-    delete ptr;
-    // expected-warning at -1 {{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
-    // expected-warning at -2 {{Memory allocated by malloc() should be deallocated by free(), not 'delete'}}
-  }
-};
-
-void testSimpleSmartPointerArrayNew() {
-  {
-    SimpleSmartPointer<int> a(new int);
-  } // no-warning
-
-  {
-    SimpleSmartPointer<int> a(new int[4]);
-  }
-}
-
-void testSimpleSmartPointerMalloc() {
-  {
-    SimpleSmartPointer<int> a(new int);
-  } // no-warning
-
-  {
-    SimpleSmartPointer<int> a((int *)malloc(4));
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/MismatchedDeallocator-path-notes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/MismatchedDeallocator-path-notes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/MismatchedDeallocator-path-notes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,159 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.MismatchedDeallocator -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.MismatchedDeallocator -analyzer-output=plist %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-void changePointee(int *p);
-void test() {
-  int *p = new int[1];
-  // expected-note at -1 {{Memory is allocated}}
-  changePointee(p);
-  delete p; // expected-warning {{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
-  // expected-note at -1 {{Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'}}
-}
-
-// CHECK: <key>diagnostics</key>
-// CHECK-NEXT: <array>
-// CHECK-NEXT:  <dict>
-// CHECK-NEXT:   <key>path</key>
-// CHECK-NEXT:   <array>
-// CHECK-NEXT:    <dict>
-// CHECK-NEXT:     <key>kind</key><string>control</string>
-// CHECK-NEXT:     <key>edges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:       <dict>
-// CHECK-NEXT:        <key>start</key>
-// CHECK-NEXT:         <array>
-// CHECK-NEXT:          <dict>
-// CHECK-NEXT:           <key>line</key><integer>7</integer>
-// CHECK-NEXT:           <key>col</key><integer>3</integer>
-// CHECK-NEXT:           <key>file</key><integer>0</integer>
-// CHECK-NEXT:          </dict>
-// CHECK-NEXT:          <dict>
-// CHECK-NEXT:           <key>line</key><integer>7</integer>
-// CHECK-NEXT:           <key>col</key><integer>5</integer>
-// CHECK-NEXT:           <key>file</key><integer>0</integer>
-// CHECK-NEXT:          </dict>
-// CHECK-NEXT:         </array>
-// CHECK-NEXT:        <key>end</key>
-// CHECK-NEXT:         <array>
-// CHECK-NEXT:          <dict>
-// CHECK-NEXT:           <key>line</key><integer>7</integer>
-// CHECK-NEXT:           <key>col</key><integer>12</integer>
-// CHECK-NEXT:           <key>file</key><integer>0</integer>
-// CHECK-NEXT:          </dict>
-// CHECK-NEXT:          <dict>
-// CHECK-NEXT:           <key>line</key><integer>7</integer>
-// CHECK-NEXT:           <key>col</key><integer>14</integer>
-// CHECK-NEXT:           <key>file</key><integer>0</integer>
-// CHECK-NEXT:          </dict>
-// CHECK-NEXT:         </array>
-// CHECK-NEXT:       </dict>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:    </dict>
-// CHECK-NEXT:    <dict>
-// CHECK-NEXT:     <key>kind</key><string>event</string>
-// CHECK-NEXT:     <key>location</key>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>line</key><integer>7</integer>
-// CHECK-NEXT:      <key>col</key><integer>12</integer>
-// CHECK-NEXT:      <key>file</key><integer>0</integer>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <key>ranges</key>
-// CHECK-NEXT:     <array>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>line</key><integer>7</integer>
-// CHECK-NEXT:         <key>col</key><integer>12</integer>
-// CHECK-NEXT:         <key>file</key><integer>0</integer>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>line</key><integer>7</integer>
-// CHECK-NEXT:         <key>col</key><integer>21</integer>
-// CHECK-NEXT:         <key>file</key><integer>0</integer>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </array>
-// CHECK-NEXT:     <key>depth</key><integer>0</integer>
-// CHECK-NEXT:     <key>extended_message</key>
-// CHECK-NEXT:     <string>Memory is allocated</string>
-// CHECK-NEXT:     <key>message</key>
-// CHECK-NEXT:     <string>Memory is allocated</string>
-// CHECK-NEXT:    </dict>
-// CHECK-NEXT:    <dict>
-// CHECK-NEXT:     <key>kind</key><string>control</string>
-// CHECK-NEXT:     <key>edges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:       <dict>
-// CHECK-NEXT:        <key>start</key>
-// CHECK-NEXT:         <array>
-// CHECK-NEXT:          <dict>
-// CHECK-NEXT:           <key>line</key><integer>7</integer>
-// CHECK-NEXT:           <key>col</key><integer>12</integer>
-// CHECK-NEXT:           <key>file</key><integer>0</integer>
-// CHECK-NEXT:          </dict>
-// CHECK-NEXT:          <dict>
-// CHECK-NEXT:           <key>line</key><integer>7</integer>
-// CHECK-NEXT:           <key>col</key><integer>14</integer>
-// CHECK-NEXT:           <key>file</key><integer>0</integer>
-// CHECK-NEXT:          </dict>
-// CHECK-NEXT:         </array>
-// CHECK-NEXT:        <key>end</key>
-// CHECK-NEXT:         <array>
-// CHECK-NEXT:          <dict>
-// CHECK-NEXT:           <key>line</key><integer>10</integer>
-// CHECK-NEXT:           <key>col</key><integer>3</integer>
-// CHECK-NEXT:           <key>file</key><integer>0</integer>
-// CHECK-NEXT:          </dict>
-// CHECK-NEXT:          <dict>
-// CHECK-NEXT:           <key>line</key><integer>10</integer>
-// CHECK-NEXT:           <key>col</key><integer>8</integer>
-// CHECK-NEXT:           <key>file</key><integer>0</integer>
-// CHECK-NEXT:          </dict>
-// CHECK-NEXT:         </array>
-// CHECK-NEXT:       </dict>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:    </dict>
-// CHECK-NEXT:    <dict>
-// CHECK-NEXT:     <key>kind</key><string>event</string>
-// CHECK-NEXT:     <key>location</key>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>line</key><integer>10</integer>
-// CHECK-NEXT:      <key>col</key><integer>3</integer>
-// CHECK-NEXT:      <key>file</key><integer>0</integer>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <key>ranges</key>
-// CHECK-NEXT:     <array>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>line</key><integer>10</integer>
-// CHECK-NEXT:         <key>col</key><integer>10</integer>
-// CHECK-NEXT:         <key>file</key><integer>0</integer>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>line</key><integer>10</integer>
-// CHECK-NEXT:         <key>col</key><integer>10</integer>
-// CHECK-NEXT:         <key>file</key><integer>0</integer>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </array>
-// CHECK-NEXT:     <key>depth</key><integer>0</integer>
-// CHECK-NEXT:     <key>extended_message</key>
-// CHECK-NEXT:     <string>Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'</string>
-// CHECK-NEXT:     <key>message</key>
-// CHECK-NEXT:     <string>Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'</string>
-// CHECK-NEXT:    </dict>
-// CHECK-NEXT:   </array>
-// CHECK-NEXT:   <key>description</key><string>Memory allocated by 'new[]' should be deallocated by 'delete[]', not 'delete'</string>
-// CHECK-NEXT:   <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:   <key>type</key><string>Bad deallocator</string>
-// CHECK-NEXT:  <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:  <key>issue_context</key><string>test</string>
-// CHECK-NEXT:  <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:  <key>location</key>
-// CHECK-NEXT:  <dict>
-// CHECK-NEXT:   <key>line</key><integer>10</integer>
-// CHECK-NEXT:   <key>col</key><integer>3</integer>
-// CHECK-NEXT:   <key>file</key><integer>0</integer>
-// CHECK-NEXT:  </dict>
-// CHECK-NEXT:  </dict>
-// CHECK-NEXT: </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/MissingDealloc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/MissingDealloc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/MissingDealloc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,114 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.osx.cocoa.Dealloc %s -verify
-// expected-no-diagnostics
-typedef signed char BOOL;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (Class)class;
- at end
-
- at interface NSObject <NSObject> {}
-- (void)dealloc;
-- (id)init;
- at end
-
-typedef struct objc_selector *SEL;
-
-// <rdar://problem/6380411>: 'myproperty' has kind 'assign' and thus the
-//  assignment through the setter does not perform a release.
-
- at interface MyObject : NSObject {
-  id _myproperty;  
-}
- at property(assign) id myproperty;
- at end
-
- at implementation MyObject
- at synthesize myproperty=_myproperty; // no-warning
-- (void)dealloc {
-  self.myproperty = 0;
-  [super dealloc]; 
-}
- at end
-
-//===------------------------------------------------------------------------===
-//  Don't warn about iVars that are selectors.
-
- at interface TestSELs : NSObject {
-  SEL a;
-  SEL b;
-}
-
- at end
-
- at implementation TestSELs
-- (id)init {
-  if( (self = [super init]) ) {
-    a = @selector(a);
-    b = @selector(b);
-  }
-
-  return self;
-}
- at end
-
-//===------------------------------------------------------------------------===
-//  Don't warn about iVars that are IBOutlets.
-
- at class NSWindow;
-
- at interface HasOutlet : NSObject {
-IBOutlet NSWindow *window;
-}
- at end
-
- at implementation HasOutlet // no-warning
- at end
-
-//===------------------------------------------------------------------------===
-// <rdar://problem/6380411>
-// Was bogus warning: "The '_myproperty' instance variable was not retained by a
-//  synthesized property but was released in 'dealloc'"
-
- at interface MyObject_rdar6380411 : NSObject {
-    id _myproperty;
-}
- at property(assign) id myproperty;
- at end
-
- at implementation MyObject_rdar6380411
- at synthesize myproperty=_myproperty;
-- (void)dealloc {
-    // Don't claim that myproperty is released since it the property
-    // has the 'assign' attribute.
-    self.myproperty = 0; // no-warning
-    [super dealloc];
-}
- at end
-
-//===------------------------------------------------------------------------===
-// PR 3187: http://llvm.org/bugs/show_bug.cgi?id=3187
-// - Disable the missing -dealloc check for classes that subclass SenTestCase
-
- at class NSString;
-
- at interface SenTestCase : NSObject {}
- at end
-
- at interface MyClassTest : SenTestCase {
-  NSString *resourcePath;
-}
- at end
-
- at interface NSBundle : NSObject {}
-+ (NSBundle *)bundleForClass:(Class)aClass;
-- (NSString *)resourcePath;
- at end
-
- at implementation MyClassTest
-- (void)setUp {
-  resourcePath = [[NSBundle bundleForClass:[self class]] resourcePath];
-}
-- (void)testXXX {
-  // do something which uses resourcepath
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NSContainers.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NSContainers.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NSContainers.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,200 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.NilArg -verify -Wno-objc-root-class %s
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at protocol NSFastEnumeration
- at end
- at protocol NSSecureCoding <NSCoding>
- at required
-+ (BOOL)supportsSecureCoding;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
- at end
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
-
-- (NSUInteger)count;
-- (id)objectAtIndex:(NSUInteger)index;
-
- at end
-
- at interface NSArray (NSExtendedArray)
-- (NSArray *)arrayByAddingObject:(id)anObject;
-- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx __attribute__((availability(macosx,introduced=10.8)));
- at end
-
- at interface NSMutableArray : NSArray
-
-- (void)addObject:(id)anObject;
-- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
-- (void)removeLastObject;
-- (void)removeObjectAtIndex:(NSUInteger)index;
-- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
-
- at end
-
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
-
-- (NSUInteger)count;
-- (id)objectForKey:(id)aKey;
-- (NSEnumerator *)keyEnumerator;
-
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id <NSCopying>)key;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-
-- (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
-
- at end
-
- at interface NSMutableDictionary (NSExtendedMutableDictionary)
-
-- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;
-- (void)removeAllObjects;
-- (void)removeObjectsForKeys:(NSArray *)keyArray;
-- (void)setDictionary:(NSDictionary *)otherDictionary;
-- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key __attribute__((availability(macosx,introduced=10.8)));
-
- at end
-
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
-
- at end
-
-// NSMutableArray API
-void testNilArgNSMutableArray1() {
-  NSMutableArray *marray = [[NSMutableArray alloc] init];
-  [marray addObject:0]; // expected-warning {{Argument to 'NSMutableArray' method 'addObject:' cannot be nil}}
-}
-
-void testNilArgNSMutableArray2() {
-  NSMutableArray *marray = [[NSMutableArray alloc] init];
-  [marray insertObject:0 atIndex:1]; // expected-warning {{Argument to 'NSMutableArray' method 'insertObject:atIndex:' cannot be nil}}
-}
-
-void testNilArgNSMutableArray3() {
-  NSMutableArray *marray = [[NSMutableArray alloc] init];
-  [marray replaceObjectAtIndex:1 withObject:0]; // expected-warning {{Argument to 'NSMutableArray' method 'replaceObjectAtIndex:withObject:' cannot be nil}}
-}
-
-void testNilArgNSMutableArray4() {
-  NSMutableArray *marray = [[NSMutableArray alloc] init];
-  [marray setObject:0 atIndexedSubscript:1]; // expected-warning {{Argument to 'NSMutableArray' method 'setObject:atIndexedSubscript:' cannot be nil}}
-}
-
-void testNilArgNSMutableArray5() {
-  NSMutableArray *marray = [[NSMutableArray alloc] init];
-  marray[1] = 0; // expected-warning {{Array element cannot be nil}}
-}
-
-// NSArray API
-void testNilArgNSArray1() {
-  NSArray *array = [[NSArray alloc] init];
-  NSArray *copyArray = [array arrayByAddingObject:0]; // expected-warning {{Argument to 'NSArray' method 'arrayByAddingObject:' cannot be nil}}
-}
-
-// NSMutableDictionary and NSDictionary APIs.
-void testNilArgNSMutableDictionary1(NSMutableDictionary *d, NSString* key) {
-  [d setObject:0 forKey:key]; // expected-warning {{Value argument to 'setObject:forKey:' cannot be nil}}
-}
-
-void testNilArgNSMutableDictionary2(NSMutableDictionary *d, NSObject *obj) {
-  [d setObject:obj forKey:0]; // expected-warning {{Key argument to 'setObject:forKey:' cannot be nil}}
-}
-
-void testNilArgNSMutableDictionary3(NSMutableDictionary *d) {
-  [d removeObjectForKey:0]; // expected-warning {{Value argument to 'removeObjectForKey:' cannot be nil}}
-}
-
-void testNilArgNSMutableDictionary5(NSMutableDictionary *d, NSString* key) {
-  d[key] = 0; // expected-warning {{Value stored into 'NSMutableDictionary' cannot be nil}}
-}
-void testNilArgNSMutableDictionary6(NSMutableDictionary *d, NSString *key) {
-  if (key)
-    ;
-  d[key] = 0; // expected-warning {{'NSMutableDictionary' key cannot be nil}}
-  // expected-warning at -1 {{Value stored into 'NSMutableDictionary' cannot be nil}}
-}
-
-NSDictionary *testNilArgNSDictionary1(NSString* key) {
-  return [NSDictionary dictionaryWithObject:0 forKey:key]; // expected-warning {{Value argument to 'dictionaryWithObject:forKey:' cannot be nil}}
-}
-NSDictionary *testNilArgNSDictionary2(NSObject *obj) {
-  return [NSDictionary dictionaryWithObject:obj forKey:0]; // expected-warning {{Key argument to 'dictionaryWithObject:forKey:' cannot be nil}}
-}
-
-// Test inline defensive checks suppression.
-void idc(id x) {
-  if (x)
-    ;
-}
-void testIDC(NSMutableDictionary *d, NSString *key) {
-  idc(key);
-  d[key] = @"abc"; // no-warning
-}
-
- at interface Foo {
- at public
-  int x;
-}
-- (int *)getPtr;
-- (int)getInt;
-- (NSMutableDictionary *)getDictPtr;
- at property (retain, readonly, nonatomic) Foo* data;
-- (NSString*) stringForKeyFE: (id<NSCopying>)key;
- at end
-
-void idc2(id x) {
-	if (!x)
-		return;
-}
-Foo *retNil() {
-  return 0;
-}
-
-void testIDC2(Foo *obj) {
-	idc2(obj);
-	*[obj getPtr] = 1; // no-warning
-}
-
-int testIDC3(Foo *obj) {
-	idc2(obj);
-  return 1/[obj getInt];
-}
-
-void testNilReceiverIDC(Foo *obj, NSString *key) {
-	NSMutableDictionary *D = [obj getDictPtr];
-  idc(D);
-  D[key] = @"abc"; // no-warning
-}
-
-void testNilReceiverRetNil2(NSMutableDictionary *D, Foo *FooPtrIn, id value) {
-  NSString* const kKeyIdentifier = @"key";
-	Foo *FooPtr = retNil();
-  NSString *key = [[FooPtr data] stringForKeyFE: kKeyIdentifier];
-  // key is nil because FooPtr is nil. However, FooPtr is set to nil inside an
-  // inlined function, so this error report should be suppressed.
-  [D setObject: value forKey: key]; // no-warning
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NSPanel.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NSPanel.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NSPanel.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-// BEGIN delta-debugging reduced header stuff
-
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-+ (id)alloc;
- at end
-typedef float CGFloat;
-typedef struct _NSPoint {} NSRect;
-static __inline__ __attribute__((always_inline)) NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) { NSRect r; return r; }
-typedef struct {} NSFastEnumerationState;
- at protocol NSFastEnumeration 
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
- at class NSString;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
- at end
- at interface NSMutableArray : NSArray
-- (void)addObject:(id)anObject;
- at end @class NSAppleEventDescriptor;
-enum { NSBackingStoreRetained = 0,     NSBackingStoreNonretained = 1,     NSBackingStoreBuffered = 2 };
-typedef NSUInteger NSBackingStoreType;
- at interface NSResponder : NSObject <NSCoding> {} @end
- at protocol NSAnimatablePropertyContainer
-- (id)animator;
- at end
- at protocol NSValidatedUserInterfaceItem
-- (SEL)action;
- at end
- at protocol NSUserInterfaceValidations
-- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
- at end  @class NSDate, NSDictionary, NSError, NSException, NSNotification;
-enum { NSBorderlessWindowMask = 0,     NSTitledWindowMask = 1 << 0,     NSClosableWindowMask = 1 << 1,     NSMiniaturizableWindowMask = 1 << 2,     NSResizableWindowMask = 1 << 3  };
- at interface NSWindow : NSResponder  <NSAnimatablePropertyContainer, NSUserInterfaceValidations>    {}
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag;
- at end
-extern NSString *NSWindowDidBecomeKeyNotification;
- at interface NSPanel : NSWindow {}
- at end
- at class NSTableHeaderView;
-
-// END delta-debugging reduced header stuff
-
- at interface MyClass
-{
-	NSMutableArray *panels;
-}
-- (void)myMethod;
-- (void)myMethod2;
- at end
-
- at implementation MyClass // no-warning
-- (void)myMethod
-{
-  NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1];
-
-  [panels addObject:panel];
-
-  [panel release]; // no-warning
-}
-- (void)myMethod2
-{
-  NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1]; // no-warning
-
-  [panels addObject:panel];  
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NSString.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NSString.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NSString.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,431 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-constraints=range -analyzer-config mode=shallow -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -DTEST_64 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.cocoa.NilArg,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -Wno-objc-root-class %s
-
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case 
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-#ifdef TEST_64
-typedef long long int64_t;
-_Bool OSAtomicCompareAndSwap64Barrier( int64_t __oldValue, int64_t __newValue, volatile int64_t *__theValue );
-#define COMPARE_SWAP_BARRIER OSAtomicCompareAndSwap64Barrier
-typedef int64_t intptr_t;
-#else
-typedef int int32_t;
-_Bool OSAtomicCompareAndSwap32Barrier( int32_t __oldValue, int32_t __newValue, volatile int32_t *__theValue );
-#define COMPARE_SWAP_BARRIER OSAtomicCompareAndSwap32Barrier
-typedef int32_t intptr_t;
-#endif
-
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-void CFRelease(CFTypeRef cf);
-typedef const struct __CFDictionary * CFDictionaryRef;
-const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
-extern CFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...);
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef NSInteger NSComparisonResult;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
-- (id)retain;
-- (id)autorelease;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {} NSFastEnumerationState;
- at protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
- at class NSString;
-typedef struct _NSRange {} NSRange;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
- at end
- at interface NSMutableArray : NSArray
-- (void)addObject:(id)anObject;
-- (id)initWithCapacity:(NSUInteger)numItems;
- at end
-typedef unsigned short unichar;
- at class NSData, NSArray, NSDictionary, NSCharacterSet, NSData, NSURL, NSError, NSLocale;
-typedef NSUInteger NSStringCompareOptions;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>    - (NSUInteger)length;
-- (NSComparisonResult)compare:(NSString *)string;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange locale:(id)locale;
-- (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
-- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator;
-+ (id)stringWithFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2)));
- at end
- at interface NSSimpleCString : NSString {} @end
- at interface NSConstantString : NSSimpleCString @end
-extern void *_NSConstantStringClassReference;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-NSComparisonResult f1(NSString* s) {
-  NSString *aString = 0;
-  return [s compare:aString]; // expected-warning {{Argument to 'NSString' method 'compare:' cannot be nil}}
-}
-
-NSComparisonResult f2(NSString* s) {
-  NSString *aString = 0;
-  return [s caseInsensitiveCompare:aString]; // expected-warning {{Argument to 'NSString' method 'caseInsensitiveCompare:' cannot be nil}}
-}
-
-NSComparisonResult f3(NSString* s, NSStringCompareOptions op) {
-  NSString *aString = 0;
-  return [s compare:aString options:op]; // expected-warning {{Argument to 'NSString' method 'compare:options:' cannot be nil}}
-}
-
-NSComparisonResult f4(NSString* s, NSStringCompareOptions op, NSRange R) {
-  NSString *aString = 0;
-  return [s compare:aString options:op range:R]; // expected-warning {{Argument to 'NSString' method 'compare:options:range:' cannot be nil}}
-}
-
-NSComparisonResult f5(NSString* s, NSStringCompareOptions op, NSRange R) {
-  NSString *aString = 0;
-  return [s compare:aString options:op range:R locale:0]; // expected-warning {{Argument to 'NSString' method 'compare:options:range:locale:' cannot be nil}}
-}
-
-NSArray *f6(NSString* s) {
-  return [s componentsSeparatedByCharactersInSet:0]; // expected-warning {{Argument to 'NSString' method 'componentsSeparatedByCharactersInSet:' cannot be nil}}
-}
-
-NSString* f7(NSString* s1, NSString* s2, NSString* s3) {
-
-  NSString* s4 = (NSString*)
-    CFStringCreateWithFormat(kCFAllocatorDefault, 0,  // expected-warning{{leak}}
-                             (CFStringRef) __builtin___CFStringMakeConstantString("%@ %@ (%@)"), 
-                             s1, s2, s3);
-
-  CFRetain(s4);
-  return s4;
-}
-
-NSMutableArray* f8() {
-  
-  NSString* s = [[NSString alloc] init];
-  NSMutableArray* a = [[NSMutableArray alloc] initWithCapacity:2];
-  [a addObject:s];
-  [s release]; // no-warning
-  return a;
-}
-
-void f9() {
-  
-  NSString* s = [[NSString alloc] init];
-  NSString* q = s;
-  [s release];
-  [q release]; // expected-warning {{used after it is released}}
-}
-
-NSString* f10() {
-  static NSString* s = 0;
-  if (!s) s = [[NSString alloc] init];
-  return s; // no-warning
-}
-
-// Test case for regression reported in <rdar://problem/6452745>.
-// Essentially 's' should not be considered allocated on the false branch.
-// This exercises the 'EvalAssume' logic in GRTransferFuncs (CFRefCount.cpp).
-NSString* f11(CFDictionaryRef dict, const char* key) {
-  NSString* s = (NSString*) CFDictionaryGetValue(dict, key);
-  [s retain];
-  if (s) {
-    [s release];
-  }
-  return 0;
-}
-
-// Test case for passing a tracked object by-reference to a function we
-// don't understand.
-void unknown_function_f12(NSString** s);
-void f12() {
-  NSString *string = [[NSString alloc] init];
-  unknown_function_f12(&string); // no-warning
-}
-
-// Test double release of CFString (PR 4014).
-void f13(void) {
-  CFStringRef ref = CFStringCreateWithFormat(kCFAllocatorDefault, ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "%d" "")), 100);
-  CFRelease(ref);
-  CFRelease(ref); // expected-warning{{Reference-counted object is used after it is released}}
-}
-
- at interface MyString : NSString
- at end
-
-void f14(MyString *s) {
-  [s compare:0]; // expected-warning {{Argument to 'MyString' method 'compare:' cannot be nil}}
-}
-
-// Test regular use of -autorelease
- at interface TestAutorelease
--(NSString*) getString;
- at end
- at implementation TestAutorelease
--(NSString*) getString {
-  NSString *str = [[NSString alloc] init];
-  return [str autorelease]; // no-warning
-}
-- (void)m1
-{
- NSString *s = [[NSString alloc] init]; // expected-warning{{leak}}
- [s retain];
- [s autorelease];
-}
-- (void)m2
-{
- NSString *s = [[[NSString alloc] init] autorelease]; // expected-warning{{leak}}
- [s retain];
-}
-- (void)m3
-{
- NSString *s = [[[NSString alloc] init] autorelease];
- [s retain];
- [s autorelease];
-}
-- (void)m4
-{
- NSString *s = [[NSString alloc] init]; // expected-warning{{leak}}
- [s retain];
-}
-- (void)m5
-{
- NSString *s = [[NSString alloc] init];
- [s autorelease];
-}
- at end
-
- at interface C1 : NSObject {}
-- (NSString*) getShared;
-+ (C1*) sharedInstance;
- at end
- at implementation C1 : NSObject {}
-- (NSString*) getShared {
-  static NSString* s = 0;
-  if (!s) s = [[NSString alloc] init];    
-  return s; // no-warning  
-}
-+ (C1 *)sharedInstance {
-  static C1 *sharedInstance = 0;
-  if (!sharedInstance) {
-    sharedInstance = [[C1 alloc] init];
-  }
-  return sharedInstance; // no-warning
-}
- at end
-
- at interface SharedClass : NSObject
-+ (id)sharedInstance;
-- (id)notShared;
- at end
-
- at implementation SharedClass
-
-- (id)_init {
-    if ((self = [super init])) {
-        NSLog(@"Bar");
-    }
-    return self;
-}
-
-- (id)notShared {
-  return [[SharedClass alloc] _init]; // expected-warning{{leak}}
-}
-
-+ (id)sharedInstance {
-    static SharedClass *_sharedInstance = 0;
-    if (!_sharedInstance) {
-        _sharedInstance = [[SharedClass alloc] _init];
-    }
-    return _sharedInstance; // no-warning
-}
- at end
-
-id testSharedClassFromFunction() {
-  return [[SharedClass alloc] _init]; // no-warning
-}
-
-// Test OSCompareAndSwap
-_Bool OSAtomicCompareAndSwapPtr( void *__oldValue, void *__newValue, void * volatile *__theValue );
-extern BOOL objc_atomicCompareAndSwapPtr(id predicate, id replacement, volatile id *objectLocation);
-
-void testOSCompareAndSwap() {
-  NSString *old = 0;
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!OSAtomicCompareAndSwapPtr(0, s, (void**) &old))
-    [s release];
-  else    
-    [old release];
-}
-
-void testOSCompareAndSwapXXBarrier_local() {
-  NSString *old = 0;
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) &old))
-    [s release];
-  else    
-    [old release];
-}
-
-void testOSCompareAndSwapXXBarrier_local_no_direct_release() {
-  NSString *old = 0;
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) &old))
-    return;
-  else    
-    [old release];
-}
-
-int testOSCompareAndSwapXXBarrier_id(Class myclass, id xclass) {
-  if (COMPARE_SWAP_BARRIER(0, (intptr_t) myclass, (intptr_t*) &xclass))
-    return 1;
-  return 0;
-}
-
-void test_objc_atomicCompareAndSwap_local() {
-  NSString *old = 0;
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!objc_atomicCompareAndSwapPtr(0, s, &old))
-    [s release];
-  else    
-    [old release];
-}
-
-void test_objc_atomicCompareAndSwap_local_no_direct_release() {
-  NSString *old = 0;
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!objc_atomicCompareAndSwapPtr(0, s, &old))
-    return;
-  else    
-    [old release];
-}
-
-void test_objc_atomicCompareAndSwap_parameter(NSString **old) {
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!objc_atomicCompareAndSwapPtr(0, s, old))
-    [s release];
-  else    
-    [*old release];
-}
-
-void test_objc_atomicCompareAndSwap_parameter_no_direct_release(NSString **old) {
-  NSString *s = [[NSString alloc] init]; // expected-warning{{leak}}
-  if (!objc_atomicCompareAndSwapPtr(0, s, old))
-    return;
-  else    
-    [*old release];
-}
-
-
-// Test stringWithFormat (<rdar://problem/6815234>)
-void test_stringWithFormat() {  
-  NSString *string = [[NSString stringWithFormat:@"%ld", (long) 100] retain];
-  [string release];
-  [string release]; // expected-warning{{Incorrect decrement of the reference count}}
-}
-
-// Test isTrackedObjectType().
-typedef NSString* WonkyTypedef;
- at interface TestIsTracked
-+ (WonkyTypedef)newString;
- at end
-
-void test_isTrackedObjectType(void) {
-  NSString *str = [TestIsTracked newString]; // expected-warning{{Potential leak}}
-}
-
-// Test isTrackedCFObjectType().
- at interface TestIsCFTracked
-+ (CFStringRef) badNewCFString;
-+ (CFStringRef) newCFString;
- at end
-
- at implementation TestIsCFTracked
-+ (CFStringRef) newCFString {
-  return CFStringCreateWithFormat(kCFAllocatorDefault, ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "%d" "")), 100); // no-warning
-}
-+ (CFStringRef) badNewCFString {
-  return CFStringCreateWithFormat(kCFAllocatorDefault, ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "%d" "")), 100); // expected-warning{{leak}}
-}
-
-// Test @synchronized
-void test_synchronized(id x) {
-  @synchronized(x) {
-    NSString *string = [[NSString stringWithFormat:@"%ld", (long) 100] retain]; // expected-warning {{leak}}
-  }
-}
- at end
-
-void testOSCompareAndSwapXXBarrier_parameter(NSString **old) {
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) old))
-    [s release];
-  else    
-    [*old release];
-}
-
-void testOSCompareAndSwapXXBarrier_parameter_no_direct_release(NSString **old) {
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) old))
-    [s release];
-  else    
-    return;
-}
-
- at interface AlwaysInlineBodyFarmBodies : NSObject {
-  NSString *_value;
-}
-  - (NSString *)_value;
-  - (void)callValue;
- at end
-
- at implementation AlwaysInlineBodyFarmBodies
-
-- (NSString *)_value {
-  if (!_value) {
-    NSString *s = [[NSString alloc] init];
-    if (!OSAtomicCompareAndSwapPtr(0, s, (void**)&_value)) {
-      [s release];
-    }
-  }
-  return _value;
-}
-
-- (void)callValue {
-  [self _value];
-}
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NSWindow.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NSWindow.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NSWindow.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core,deadcode.DeadStores -analyzer-store=region -analyzer-constraints=range -verify %s
-
-// These declarations were reduced using Delta-Debugging from Foundation.h
-// on Mac OS X.  The test cases are below.
-
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
- at end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-  + (id)alloc;
- at end
-typedef float CGFloat;
-typedef struct _NSPoint {} NSRect;
-NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h);
-enum { NSBackingStoreRetained = 0,     NSBackingStoreNonretained = 1,     NSBackingStoreBuffered = 2 };
-typedef NSUInteger NSBackingStoreType;
- at interface NSResponder : NSObject <NSCoding> {}
- at end
- at protocol NSAnimatablePropertyContainer
-- (id)animator;
- at end
-extern NSString *NSAnimationTriggerOrderIn ;
- at class CIFilter, CALayer, NSDictionary, NSScreen, NSShadow, NSTrackingArea;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {} @end
- at protocol NSValidatedUserInterfaceItem - (SEL)action; @end
- at protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem; @end   @class NSNotification, NSText, NSView, NSMutableSet, NSSet, NSDate;
-enum { NSBorderlessWindowMask = 0,     NSTitledWindowMask = 1 << 0,     NSClosableWindowMask = 1 << 1,     NSMiniaturizableWindowMask = 1 << 2,     NSResizableWindowMask = 1 << 3  };
- at interface NSWindow : NSResponder  <NSAnimatablePropertyContainer, NSUserInterfaceValidations>    {
-  struct __wFlags {} _wFlags;
-}
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag;
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag screen:(NSScreen *)screen;
-- (void)orderFrontRegardless;
- at end
-
-extern NSString *NSWindowDidBecomeKeyNotification;
-
-// Test cases.
-
-void f1() {
-  NSWindow *window = [[NSWindow alloc]
-                      initWithContentRect:NSMakeRect(0,0,100,100) 
-                        styleMask:NSTitledWindowMask|NSClosableWindowMask
-                        backing:NSBackingStoreBuffered
-                        defer:0]; 
-
-  [window orderFrontRegardless]; // no-warning
-}
-
-void f2() {
-  NSWindow *window = [[NSWindow alloc]
-                      initWithContentRect:NSMakeRect(0,0,100,100) 
-                        styleMask:NSTitledWindowMask|NSClosableWindowMask
-                        backing:NSBackingStoreBuffered
-                        defer:0
-                        screen:0]; 
-
-  [window orderFrontRegardless]; // no-warning
-}
-
-void f2b() {
-  // FIXME: NSWindow doesn't own itself until it is displayed.
-  NSWindow *window = [[NSWindow alloc] // no-warning
-                      initWithContentRect:NSMakeRect(0,0,100,100) 
-                        styleMask:NSTitledWindowMask|NSClosableWindowMask
-                        backing:NSBackingStoreBuffered
-                        defer:0
-                        screen:0]; 
-
-  [window orderFrontRegardless];
-  
-  [window retain];
-}
-
-
-void f3() {
-  // FIXME: For now we don't track NSWindow.
-  NSWindow *window = [NSWindow alloc];  // expected-warning{{never read}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete+MismatchedDeallocator_intersections.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete+MismatchedDeallocator_intersections.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete+MismatchedDeallocator_intersections.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,unix.MismatchedDeallocator -std=c++11 -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,alpha.cplusplus.NewDeleteLeaks,unix.MismatchedDeallocator -DLEAKS -std=c++11 -verify %s
-// expected-no-diagnostics
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-//------------------------------------------------------------------
-// Check that alpha.cplusplus.NewDelete + unix.MismatchedDeallocator 
-// does not enable warnings produced by the unix.Malloc checker.
-//------------------------------------------------------------------
-void testMallocFreeNoWarn() {
-  int i;
-  free(&i); // no warn
-
-  int *p1 = (int *)malloc(sizeof(int));
-  free(++p1); // no warn
-
-  int *p2 = (int *)malloc(sizeof(int));
-  free(p2);
-  free(p2); // no warn
-
-  int *p3 = (int *)malloc(sizeof(int)); // no warn
-
-  int *p4 = (int *)malloc(sizeof(int));
-  free(p4);
-  int j = *p4; // no warn
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-checker-test.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-checker-test.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-checker-test.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,208 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -fblocks -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.cplusplus.NewDeleteLeaks -DLEAKS -std=c++11 -fblocks -verify %s
-#include "Inputs/system-header-simulator-cxx.h"
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-int *global;
-
-//------------------
-// check for leaks
-//------------------
-
-//----- Standard non-placement operators
-void testGlobalOpNew() {
-  void *p = operator new(0);
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testGlobalOpNewArray() {
-  void *p = operator new[](0);
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testGlobalNewExpr() {
-  int *p = new int;
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testGlobalNewExprArray() {
-  int *p = new int[0];
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-//----- Standard nothrow placement operators
-void testGlobalNoThrowPlacementOpNewBeforeOverload() {
-  void *p = operator new(0, std::nothrow);
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testGlobalNoThrowPlacementExprNewBeforeOverload() {
-  int *p = new(std::nothrow) int;
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-//----- Standard pointer placement operators
-void testGlobalPointerPlacementNew() {
-  int i;
-
-  void *p1 = operator new(0, &i); // no warn
-
-  void *p2 = operator new[](0, &i); // no warn
-
-  int *p3 = new(&i) int; // no warn
-
-  int *p4 = new(&i) int[0]; // no warn
-}
-
-//----- Other cases
-void testNewMemoryIsInHeap() {
-  int *p = new int;
-  if (global != p) // condition is always true as 'p' wraps a heap region that 
-                   // is different from a region wrapped by 'global'
-    global = p; // pointer escapes
-}
-
-struct PtrWrapper {
-  int *x;
-
-  PtrWrapper(int *input) : x(input) {}
-};
-
-void testNewInvalidationPlacement(PtrWrapper *w) {
-  // Ensure that we don't consider this a leak.
-  new (w) PtrWrapper(new int); // no warn
-}
-
-//---------------
-// other checks
-//---------------
-
-class SomeClass {
-public:
-  void f(int *p);
-};
-
-void f(int *p1, int *p2 = 0, int *p3 = 0);
-void g(SomeClass &c, ...);
-
-void testUseFirstArgAfterDelete() {
-  int *p = new int;
-  delete p;
-  f(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseMiddleArgAfterDelete(int *p) {
-  delete p;
-  f(0, p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseLastArgAfterDelete(int *p) {
-  delete p;
-  f(0, 0, p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseSeveralArgsAfterDelete(int *p) {
-  delete p;
-  f(p, p, p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseRefArgAfterDelete(SomeClass &c) {
-  delete &c;
-  g(c); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testVariadicArgAfterDelete() {
-  SomeClass c;
-  int *p = new int;
-  delete p;
-  g(c, 0, p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseMethodArgAfterDelete(int *p) {
-  SomeClass *c = new SomeClass;
-  delete p;
-  c->f(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUseThisAfterDelete() {
-  SomeClass *c = new SomeClass;
-  delete c;
-  c->f(0); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testDeleteAlloca() {
-  int *p = (int *)__builtin_alloca(sizeof(int));
-  delete p; // expected-warning{{Memory allocated by alloca() should not be deallocated}}
-}
-
-void testDoubleDelete() {
-  int *p = new int;
-  delete p;
-  delete p; // expected-warning{{Attempt to free released memory}}
-}
-
-void testExprDeleteArg() {
-  int i;
-  delete &i; // expected-warning{{Argument to 'delete' is the address of the local variable 'i', which is not memory allocated by 'new'}}
-}
-
-void testExprDeleteArrArg() {
-  int i;
-  delete[] &i; // expected-warning{{Argument to 'delete[]' is the address of the local variable 'i', which is not memory allocated by 'new[]'}}
-}
-
-void testAllocDeallocNames() {
-  int *p = new(std::nothrow) int[1];
-  delete[] (++p); // expected-warning{{Argument to 'delete[]' is offset by 4 bytes from the start of memory allocated by 'new[]'}}
-}
-
-//--------------------------------
-// Test escape of newed const pointer. Note, a const pointer can be deleted.
-//--------------------------------
-struct StWithConstPtr {
-  const int *memp;
-};
-void escape(const int &x);
-void escapeStruct(const StWithConstPtr &x);
-void escapePtr(const StWithConstPtr *x);
-void escapeVoidPtr(const void *x);
-
-void testConstEscape() {
-  int *p = new int(1);
-  escape(*p);
-} // no-warning
-
-void testConstEscapeStruct() {
-  StWithConstPtr *St = new StWithConstPtr();
-  escapeStruct(*St);
-} // no-warning
-
-void testConstEscapeStructPtr() {
-  StWithConstPtr *St = new StWithConstPtr();
-  escapePtr(St);
-} // no-warning
-
-void testConstEscapeMember() {
-  StWithConstPtr St;
-  St.memp = new int(2);
-  escapeVoidPtr(St.memp);
-} // no-warning
-
-void testConstEscapePlacementNew() {
-  int *x = (int *)malloc(sizeof(int));
-  void *y = new (x) int;
-  escapeVoidPtr(y);
-} // no-warning

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-custom.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-custom.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-custom.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,unix.Malloc -std=c++11 -fblocks -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,alpha.cplusplus.NewDeleteLeaks,unix.Malloc -std=c++11 -DLEAKS -fblocks -verify %s
-#include "Inputs/system-header-simulator-cxx.h"
-
-#ifndef LEAKS
-// expected-no-diagnostics
-#endif
-
-
-void *allocator(std::size_t size);
-
-void *operator new[](std::size_t size) throw() { return allocator(size); }
-void *operator new(std::size_t size) throw() { return allocator(size); }
-void *operator new(std::size_t size, std::nothrow_t& nothrow) throw() { return allocator(size); }
-void *operator new(std::size_t, double d);
-
-class C {
-public:
-  void *operator new(std::size_t);  
-};
-
-void testNewMethod() {
-  void *p1 = C::operator new(0); // no warn
-
-  C *p2 = new C; // no warn
-
-  C *c3 = ::new C;
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'c3'}}
-#endif
-
-void testOpNewArray() {
-  void *p = operator new[](0); // call is inlined, no warn
-}
-
-void testNewExprArray() {
-  int *p = new int[0];
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-
-//----- Custom non-placement operators
-void testOpNew() {
-  void *p = operator new(0); // call is inlined, no warn
-}
-
-void testNewExpr() {
-  int *p = new int;
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-
-//----- Custom NoThrow placement operators
-void testOpNewNoThrow() {
-  void *p = operator new(0, std::nothrow);
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testNewExprNoThrow() {
-  int *p = new(std::nothrow) int;
-}
-#ifdef LEAKS
-// expected-warning at -2{{Potential leak of memory pointed to by 'p'}}
-#endif
-
-//----- Custom placement operators
-void testOpNewPlacement() {
-  void *p = operator new(0, 0.1); // no warn
-} 
-
-void testNewExprPlacement() {
-  int *p = new(0.1) int; // no warn
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-intersections.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-intersections.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-intersections.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete -std=c++11 -fblocks -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,alpha.cplusplus.NewDeleteLeaks -std=c++11 -DLEAKS -fblocks -verify %s
-#include "Inputs/system-header-simulator-cxx.h"
-#include "Inputs/system-header-simulator-objc.h"
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-extern "C" void free(void *);
-
-//----------------------------------------------------------------------------
-// Check for intersections with unix.Malloc and unix.MallocWithAnnotations 
-// checkers bounded with cplusplus.NewDelete.
-//----------------------------------------------------------------------------
-
-//----- malloc()/free() are subjects of unix.Malloc and unix.MallocWithAnnotations
-void testMallocFreeNoWarn() {
-  int i;
-  free(&i); // no warn
-
-  int *p1 = (int *)malloc(sizeof(int));
-  free(++p1); // no warn
-
-  int *p2 = (int *)malloc(sizeof(int));
-  free(p2);
-  free(p2); // no warn
-
-  int *p3 = (int *)malloc(sizeof(int)); // no warn
-
-  int *p4 = (int *)malloc(sizeof(int));
-  free(p4);
-  int j = *p4; // no warn
-}
-
-void testDeleteMalloced() {
-  int *p = (int *)malloc(sizeof(int));
-  delete p; // no warn
-} 
-
-//----- Test free standard new
-void testFreeOpNew() {
-  void *p = operator new(0);
-  free(p);
-}
-#ifdef LEAKS
-// expected-warning at -2 {{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testFreeNewExpr() {
-  int *p = new int;
-  free(p);
-}
-#ifdef LEAKS
-// expected-warning at -2 {{Potential leak of memory pointed to by 'p'}}
-#endif
-
-void testObjcFreeNewed() {
-  int *p = new int;
-  NSData *nsdata = [NSData dataWithBytesNoCopy:p length:sizeof(int) freeWhenDone:1];
-#ifdef LEAKS
-  // expected-warning at -2 {{Potential leak of memory pointed to by 'p'}}
-#endif
-}
-
-void testFreeAfterDelete() {
-  int *p = new int;  
-  delete p;
-  free(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testStandardPlacementNewAfterDelete() {
-  int *p = new int;  
-  delete p;
-  p = new(p) int; // expected-warning{{Use of memory after it is freed}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-path-notes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-path-notes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-path-notes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,551 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=plist %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-void test() {
-  int *p = new int;
-  // expected-note at -1 {{Memory is allocated}}
-  if (p)
-    // expected-note at -1 {{Assuming 'p' is non-null}}
-    // expected-note at -2 {{Taking true branch}}
-    delete p;
-    // expected-note at -1 {{Memory is released}}
-
-  delete p; // expected-warning {{Attempt to free released memory}}
-  // expected-note at -1 {{Attempt to free released memory}}
-}
-
-struct Odd {
-	void kill() {
-		delete this; // expected-note {{Memory is released}}
-	}
-};
-
-void test(Odd *odd) {
-	odd->kill(); // expected-note{{Calling 'Odd::kill'}}
-               // expected-note at -1 {{Returning; memory was released}}
-	delete odd; // expected-warning {{Attempt to free released memory}}
-              // expected-note at -1 {{Attempt to free released memory}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>6</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>8</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>8</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>8</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>11</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>14</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Attempt to free released memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Attempt to free released memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Attempt to free released memory</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Double free</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>9</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>14</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>25</integer>
-// CHECK-NEXT:       <key>col</key><integer>2</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>2</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'Odd::kill'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'Odd::kill'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>19</integer>
-// CHECK-NEXT:       <key>col</key><integer>2</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>20</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>20</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>20</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>25</integer>
-// CHECK-NEXT:       <key>col</key><integer>2</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>2</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning; memory was released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning; memory was released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>27</integer>
-// CHECK-NEXT:       <key>col</key><integer>2</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>27</integer>
-// CHECK-NEXT:          <key>col</key><integer>2</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>27</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Attempt to free released memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Attempt to free released memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Attempt to free released memory</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Double free</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>27</integer>
-// CHECK-NEXT:    <key>col</key><integer>2</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-variadic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-variadic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NewDelete-variadic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,alpha.cplusplus.NewDeleteLeaks,unix.Malloc -std=c++11 -fblocks -verify %s
-// expected-no-diagnostics
-
-namespace std {
-  typedef __typeof__(sizeof(int)) size_t;
-}
-
-void *operator new(std::size_t, ...);
-void *operator new[](std::size_t, ...);
-
-void testGlobalCustomVariadicNew() {
-  void *p1 = operator new(0); // no warn
-
-  void *p2 = operator new[](0); // no warn
-
-  int *p3 = new int; // no warn
-
-  int *p4 = new int[0]; // no warn
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/NoReturn.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/NoReturn.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/NoReturn.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: %clang --analyze -Xclang -analyzer-checker=alpha.core -Xclang -verify %s
-
-#include <stdarg.h>
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case 
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithFormat:(NSString *)format, ...;
- at end
- at interface NSSimpleCString : NSString {} @end
- at interface NSConstantString : NSSimpleCString @end
-extern void *_NSConstantStringClassReference;
-typedef double NSTimeInterval;
- at interface NSDate : NSObject <NSCopying, NSCoding>  - (NSTimeInterval)timeIntervalSinceReferenceDate; @end
- at class NSString, NSDictionary, NSArray;
- at interface NSException : NSObject <NSCopying, NSCoding> {}
-+ (NSException *)exceptionWithName:(NSString *)name reason:(NSString *)reason userInfo:(NSDictionary *)userInfo;
-- (void)raise;
- at end
- at interface NSException (NSExceptionRaisingConveniences)
-+ (void)raise:(NSString *)name format:(NSString *)format, ...;
-+ (void)raise:(NSString *)name format:(NSString *)format arguments:(va_list)argList;
- at end
-
-enum {NSPointerFunctionsStrongMemory = (0 << 0),     NSPointerFunctionsZeroingWeakMemory = (1 << 0),     NSPointerFunctionsOpaqueMemory = (2 << 0),     NSPointerFunctionsMallocMemory = (3 << 0),     NSPointerFunctionsMachVirtualMemory = (4 << 0),        NSPointerFunctionsObjectPersonality = (0 << 8),     NSPointerFunctionsOpaquePersonality = (1 << 8),     NSPointerFunctionsObjectPointerPersonality = (2 << 8),     NSPointerFunctionsCStringPersonality = (3 << 8),     NSPointerFunctionsStructPersonality = (4 << 8),     NSPointerFunctionsIntegerPersonality = (5 << 8),      NSPointerFunctionsCopyIn = (1 << 16), };
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-int f1(int *x, NSString* s) {
-  
-  if (x) ++x;
-  
-  [NSException raise:@"Blah" format:[NSString stringWithFormat:@"Blah %@", s]];
-  
-  return *x; // no-warning
-}
-
-int f2(int *x, ...) {
-  
-  if (x) ++x;
-  va_list alist;
-  va_start(alist, x);
-  
-  [NSException raise:@"Blah" format:@"Blah %@" arguments:alist];
-  
-  return *x; // no-warning
-}
-
-int f3(int* x) {
-  
-  if (x) ++x;
-  
-  [[NSException exceptionWithName:@"My Exception" reason:@"Want to test exceptions." userInfo:0] raise];
-
-  return *x; // no-warning
-}
-
-
- at interface CustomException : NSException
- at end
-
-int testCustomException(int *x) {
-  if (x != 0) return 0;
-
-  [CustomException raise:@"Blah" format:@"abc"];
-
-  return *x; // no-warning
-}
-
-// Test that __attribute__((analyzer_noreturn)) has the intended
-// effect on Objective-C methods.
-
- at interface Radar11634353
-+ (void) doesNotReturn __attribute__((analyzer_noreturn));
-- (void) alsoDoesNotReturn __attribute__((analyzer_noreturn));
- at end
-
-void test_rdar11634353() {
-  [Radar11634353 doesNotReturn];
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-
-void test_rdar11634352_instance(Radar11634353 *o) {
-  [o alsoDoesNotReturn];
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-
-void test_rdar11634353_positive() {
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning {{null pointer}}
-}
-
-// Test analyzer_noreturn on category methods.
- at interface NSException (OBExtensions)
-+ (void)raise:(NSString *)name reason:(NSString *)reason __attribute__((analyzer_noreturn));
- at end
-
-void PR11959(int *p) {
-  if (!p)
-    [NSException raise:@"Bad Pointer" reason:@"Who knows?"];
-  *p = 0xDEADBEEF; // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/OSAtomic_mac.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/OSAtomic_mac.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/OSAtomic_mac.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,osx -analyzer-store=region -verify -fblocks   -analyzer-opt-analyze-nested-blocks %s
-// expected-no-diagnostics
-
-// Test handling of OSAtomicCompareAndSwap when C++ inserts "no-op" casts and we
-// do a forced load and binding to the environment on an expression that would regularly
-// not have an environment binding.  This previously triggered a crash (<rdar://problem/9339920>).
-// NOTE: It is critical that the function called is OSAtomicCompareAndSwapIntBarrier.
-bool OSAtomicCompareAndSwapIntBarrier( int __oldValue, int __newValue, volatile int *__theValue ) ;
-static int _rdar9339920_x = 0;
-int rdar9339920_aux();
-
-int rdar9339920_test() {
-  int rdar9339920_x = rdar9339920_aux();
-  if (rdar9339920_x != _rdar9339920_x) {
-    if (OSAtomicCompareAndSwapIntBarrier(_rdar9339920_x, rdar9339920_x, &_rdar9339920_x))
-      return 1;
-  }
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/ObjCProperties.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/ObjCProperties.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/ObjCProperties.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -analyzer-constraints=range -Wno-objc-root-class %s -verify
-// expected-no-diagnostics
-
-// The point of this test cases is to exercise properties in the static
-// analyzer
-
- at interface MyClass {
- at private
-    id _X;
-}
-- (id)initWithY:(id)Y;
- at property(copy, readwrite) id X;
- at end
-
- at implementation MyClass
- at synthesize X = _X;
-- (id)initWithY:(id)Y {
-  self.X = Y;
-  return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/ObjCRetSigs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/ObjCRetSigs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/ObjCRetSigs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core -analyzer-checker=osx.cocoa.IncompatibleMethodTypes -verify -Wno-objc-root-class %s
-
-int printf(const char *, ...);
-
- at interface MyBase
--(long long)length;
- at end
-
- at interface MySub : MyBase{}
--(double)length;
- at end
-
- at implementation MyBase
--(long long)length{
-   printf("Called MyBase -length;\n");
-   return 3;
-}
- at end
-
- at implementation MySub
--(double)length{  // expected-warning{{types are incompatible}}
-   printf("Called MySub -length;\n");
-   return 3.3;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/PR12905.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/PR12905.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/PR12905.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core %s
-// PR12905
-
-void C(void);
-
-void t(void) {
-  C();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/PR2599.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/PR2599.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/PR2599.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-constraints=range -analyzer-store=region -fobjc-gc -verify %s
-
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFDictionary * CFDictionaryRef;
-CFTypeRef CFMakeCollectable(CFTypeRef cf) ;
-extern CFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...);
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)autorelease;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol
-NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
- at end
-enum { NSASCIIStringEncoding = 1,     NSNEXTSTEPStringEncoding = 2,     NSJapaneseEUCStringEncoding = 3,     NSUTF8StringEncoding = 4,     NSISOLatin1StringEncoding = 5,     NSSymbolStringEncoding = 6,     NSNonLossyASCIIStringEncoding = 7,     NSShiftJISStringEncoding = 8,     NSISOLatin2StringEncoding = 9,     NSUnicodeStringEncoding = 10,     NSWindowsCP1251StringEncoding = 11,     NSWindowsCP1252StringEncoding = 12,     NSWindowsCP1253StringEncoding = 13,     NSWindowsCP1254StringEncoding = 14,     NSWindowsCP1250StringEncoding = 15,     NSISO2022JPStringEncoding = 21,     NSMacOSRomanStringEncoding = 30,      NSUTF16StringEncoding = NSUnicodeStringEncoding,       NSUTF16BigEndianStringEncoding = 0x90000100,     NSUTF16LittleEndianStringEncoding = 0x94000100,      NSUTF32StringEncoding = 0x8c000100,     NSUTF32BigEndianStringEncoding = 0x98000100,     NSUTF32LittleEndianStringEncoding = 0x9c000100  };
-typedef NSUInteger NSStringEncoding;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)freeBuffer;
- at end
- at interface NSAutoreleasePool : NSObject {}
-- (void)drain;
- at end
-extern NSString * const NSXMLParserErrorDomain ;
-
-// The actual test case.  UTIL_AUTORELEASE_CF_AS_ID is a macro that doesn't
-// actually do what it was intended to.
-
-#define NSSTRINGWRAPPER(bytes,len) \
-  [[[NSString alloc] initWithBytesNoCopy: (void*)(bytes) length: (len) encoding: NSUTF8StringEncoding freeWhenDone: (BOOL)0] autorelease]
-
-#define UTIL_AUTORELEASE_CF_AS_ID(cf) ( (((void*)0) == (cf)) ? ((void*)0) : [(id) CFMakeCollectable( (CFTypeRef) cf) autorelease] )
-
-#define UTIL_AUTORELEASE_CF_AS_ID_WITHOUT_TEST(cf) ( [(id) CFMakeCollectable( (CFTypeRef) cf) autorelease] )
-
-static char *lorem = "fooBarBaz";
-
-void NSLog(NSString *, ...);
-
-int main (int argc, const char * argv[]) {
-  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-  NSString *tmp1 = NSSTRINGWRAPPER(lorem, 6); // no-warning
-  NSString *tmp2 = UTIL_AUTORELEASE_CF_AS_ID( CFStringCreateWithFormat(((void*)0), ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "lorem: %@" "")), tmp1) );  // expected-warning 2 {{leak}}
-  NSString *tmp3 = UTIL_AUTORELEASE_CF_AS_ID_WITHOUT_TEST( CFStringCreateWithFormat(((void*)0), ((void*)0), ((CFStringRef) __builtin___CFStringMakeConstantString ("" "lorem: %@" "")), tmp1) );
-  NSLog(@"tmp2: %@ tmp3: %@", tmp2, tmp3);
-  [pool drain];
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/PR2978.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/PR2978.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/PR2978.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core -analyzer-checker=alpha.osx.cocoa.Dealloc %s -verify
-
-// Tests for the checker which checks missing/extra ivar 'release' calls 
-// in dealloc.
-
- at interface NSObject
-- (void)release;
-- dealloc;
- at end
-
- at interface MyClass : NSObject {
- at private
-  id _X;
-  id _Y;
-  id _Z;
-  id _K;
-  id _N;
-  id _M;
-  id _V;
-  id _W;
-}
- at property(retain) id X;
- at property(retain) id Y;
- at property(assign) id Z;
- at property(assign) id K;
- at property(readonly) id N;
- at property(retain) id M;
- at property(retain) id V;
- at property(retain) id W;
--(id) O;
--(void) setO: (id) arg;
- at end
-
- at implementation MyClass
- at synthesize X = _X;
- at synthesize Y = _Y; // expected-warning{{The '_Y' instance variable was retained by a synthesized property but wasn't released in 'dealloc'}}
- at synthesize Z = _Z; // expected-warning{{The '_Z' instance variable was not retained by a synthesized property but was released in 'dealloc'}}
- at synthesize K = _K;
- at synthesize N = _N;
- at synthesize M = _M;
- at synthesize V = _V;
- at synthesize W = _W; // expected-warning{{The '_W' instance variable was retained by a synthesized property but wasn't released in 'dealloc'}}
-
--(id) O{ return 0; }
--(void) setO:(id)arg { }
-
-- (id)dealloc
-{
-  [_X release];
-  [_Z release];
-  [_N release];
-  
-  self.M = 0; // This will release '_M'
-  [self setV:0]; // This will release '_V'
-  [self setW:@"newW"]; // This will release '_W', but retain the new value
-  self.O = 0; // no-warning  
-  [super dealloc];
-  return 0;
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/PR3991.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/PR3991.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/PR3991.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 -Wno-incomplete-implementation %s
-// expected-no-diagnostics
-
-//===----------------------------------------------------------------------===//
-// Delta-debugging produced forward declarations.
-//===----------------------------------------------------------------------===//
-
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end    @interface NSObject <NSObject> {
-}
- at end    extern id <NSObject> NSAllocateObject(Class aClass, unsigned extraBytes, NSZone *zone);
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding>  - (unsigned)count;
- at end   @class NSTimer, NSPort, NSArray;
- at class NSURLHandle, NSMutableArray, NSMutableData, NSData, NSURL;
- at interface NSResponder : NSObject <NSCoding> {
-}
- at end      @class NSBitmapImageRep, NSCursor, NSGraphicsContext, NSImage, NSPasteboard, NSScrollView, NSWindow, NSAttributedString;
- at interface NSView : NSResponder {
-  struct __VFlags2 {
-  }
-  _vFlags2;
-}
- at end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
- at interface NSBox : NSView {
-}
- at end @class GDataFeedDocList, GDataServiceTicket, GDataServiceTicket, IHGoogleDocsAdapter;
- at protocol IHGoogleDocsAdapterDelegate  - (void)googleDocsAdapter:(IHGoogleDocsAdapter*)inGoogleDocsAdapter accountVerifyIsValid:(BOOL)inIsValid error:(NSError *)inError;
- at end   @interface IHGoogleDocsAdapter : NSObject {
-}
-- (NSArray *)entries;
- at end extern Class const kGDataUseRegisteredClass ;
- at interface IHGoogleDocsAdapter ()  - (GDataFeedDocList *)feedDocList;
-- (NSArray *)directoryPathComponents;
-- (unsigned int)currentPathComponentIndex;
-- (void)setCurrentPathComponentIndex:(unsigned int)aCurrentPathComponentIndex;
-- (NSURL *)folderFeedURL;
- at end  
-
- at implementation IHGoogleDocsAdapter    - (id)initWithUsername:(NSString *)inUsername password:(NSString *)inPassword owner:(NSObject <IHGoogleDocsAdapterDelegate> *)owner {
-  return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// Actual test case:
-//
-// The analyzer currently doesn't reason about ObjCKVCRefExpr.  Have both
-// GRExprEngine::Visit and GRExprEngine::VisitLValue have such expressions
-// evaluate to UnknownVal.
-//===----------------------------------------------------------------------===//
-
-- (void)docListListFetchTicket:(GDataServiceTicket *)ticket               finishedWithFeed:(GDataFeedDocList *)feed {
-  BOOL doGetDir = self.directoryPathComponents != 0 && self.currentPathComponentIndex < [self.directoryPathComponents count];
-  if (doGetDir)  {
-    BOOL isDirExisting = [[self.feedDocList entries] count] > 0;
-    if (isDirExisting)   {
-      if (self.folderFeedURL != 0)    {
-        if (++self.currentPathComponentIndex == [self.directoryPathComponents count])     {
-        }
-      }
-    }
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/PR7218.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/PR7218.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/PR7218.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store region -verify %s
-char PR7218(char a) {
-    char buf[2];
-    buf[0] = a;
-    return buf[1]; // expected-warning {{Undefined or garbage value returned to caller}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/PR9741.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/PR9741.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/PR9741.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -cc1 -std=c++11 -Wuninitialized -verify %s
-// expected-no-diagnostics
-
-void f() {
-  int a[] = { 1, 2, 3 };
-  unsigned int u = 0;
-  for (auto x : a)
-    ;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/additive-folding-range-constraints.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/additive-folding-range-constraints.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/additive-folding-range-constraints.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,304 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify -analyzer-constraints=range %s
-
-void clang_analyzer_eval(int);
-
-#define UINT_MAX (~0U)
-#define INT_MAX (UINT_MAX & (UINT_MAX >> 1))
-#define INT_MIN (-INT_MAX - 1)
-
-
-// Each of these adjusted ranges has an adjustment small enough to split the
-// solution range across an overflow boundary (Min for <, Max for >).
-// This corresponds to one set of branches in RangeConstraintManager.
-void smallAdjustmentGT (unsigned a) {
-  if (a+2 > 1)
-    clang_analyzer_eval(a < UINT_MAX-1); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a == UINT_MAX-1 || a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void smallAdjustmentGE (unsigned a) {
-  if (a+2 >= 1)
-    clang_analyzer_eval(a < UINT_MAX-1 || a == UINT_MAX); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a == UINT_MAX-1); // expected-warning{{TRUE}}
-}
-
-void smallAdjustmentLT (unsigned a) {
-  if (a+1 < 2)
-    clang_analyzer_eval(a == 0 || a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void smallAdjustmentLE (unsigned a) {
-  if (a+1 <= 2)
-    clang_analyzer_eval(a == 0 || a == 1 || a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-
-// Each of these adjusted ranges has an adjustment large enough to push the
-// comparison value over an overflow boundary (Min for <, Max for >).
-// This corresponds to one set of branches in RangeConstraintManager.
-void largeAdjustmentGT (unsigned a) {
-  if (a-2 > UINT_MAX-1)
-    clang_analyzer_eval(a == 1); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a != 1); // expected-warning{{TRUE}}
-}
-
-void largeAdjustmentGE (unsigned a) {
-  if (a-2 >= UINT_MAX-1)
-    clang_analyzer_eval(a == 1 || a == 0); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a > 1); // expected-warning{{TRUE}}
-}
-
-void largeAdjustmentLT (unsigned a) {
-  if (a+2 < 1)
-    clang_analyzer_eval(a == UINT_MAX-1); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a != UINT_MAX-1); // expected-warning{{TRUE}}
-}
-
-void largeAdjustmentLE (unsigned a) {
-  if (a+2 <= 1)
-    clang_analyzer_eval(a == UINT_MAX-1 || a == UINT_MAX); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a < UINT_MAX-1); // expected-warning{{TRUE}}
-}
-
-
-// Test the nine cases in RangeConstraintManager's pinning logic.
-// For out-of-range tautologies, it may be the negation that actually
-// triggers the case in question.
-void mixedComparisons1(signed char a) {
-  // Case 1: The range is entirely below the symbol's range.
-  int min = INT_MIN;
-
-  clang_analyzer_eval((a - 2) >= (min + 5LL)); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-}
-
-void mixedComparisons2(signed char a) {
-  // Case 2: Only the lower end of the range is outside.
-  clang_analyzer_eval((a - 5) < (-0x81LL)); // expected-warning{{UNKNOWN}}
-
-  if ((a - 5) < (-0x81LL)) {
-    clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
-    clang_analyzer_eval(a == 0x7F); // expected-warning{{FALSE}}
-    clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-  }
-}
-
-void mixedComparisons3(signed char a) {
-  // Case 3: The entire symbol range is covered.
-  clang_analyzer_eval((a - 0x200) < -0x100LL); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-}
-
-void mixedComparisons4(signed char a) {
-  // Case 4: The range wraps around, but the lower wrap is out-of-range.
-  clang_analyzer_eval((a - 5) > 0LL); // expected-warning{{UNKNOWN}}
-
-  if ((a - 5) > 0LL) {
-    clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
-    clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(a == -0x80); // expected-warning{{FALSE}}
-  }
-}
-
-void mixedComparisons5(signed char a) {
-  // Case 5: The range is inside and may or may not wrap.
-  clang_analyzer_eval((a + 5) == 0LL); // expected-warning{{UNKNOWN}}
-
-  if ((a + 5) == 0LL) {
-    clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
-    clang_analyzer_eval(a == 0x7F); // expected-warning{{FALSE}}
-    clang_analyzer_eval(a == -0x80); // expected-warning{{FALSE}}
-  } else {
-    clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-  }
-}
-
-void mixedComparisons6(signed char a) {
-  // Case 6: Only the upper end of the range is outside.
-  clang_analyzer_eval((a + 5) > 0x81LL); // expected-warning{{UNKNOWN}}
-
-  if ((a + 5) > 0x81LL) {
-    clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
-    clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(a == -0x80); // expected-warning{{FALSE}}
-  }
-}
-
-void mixedComparisons7(signed char a) {
-  // Case 7: The range wraps around but is entirely outside the symbol's range.
-  int min = INT_MIN;
-
-  clang_analyzer_eval((a + 2) >= (min + 5LL)); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-}
-
-void mixedComparisons8(signed char a) {
-  // Case 8: The range wraps, but the upper wrap is out of range.
-  clang_analyzer_eval((a + 5) < 0LL); // expected-warning{{UNKNOWN}}
-
-  if ((a + 5) < 0LL) {
-    clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
-    clang_analyzer_eval(a == 0x7F); // expected-warning{{FALSE}}
-    clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-  }
-}
-
-void mixedComparisons9(signed char a) {
-  // Case 9: The range is entirely above the symbol's range.
-  int max = INT_MAX;
-
-  clang_analyzer_eval((a + 2) <= (max - 5LL)); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == 0x7F); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == -0x80); // expected-warning{{UNKNOWN}}
-}
-
-
-void mixedSignedness1(int a) {
-  unsigned max = UINT_MAX;
-  clang_analyzer_eval(a < max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) < max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) < max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness2(int a) {
-  unsigned max = UINT_MAX;
-  clang_analyzer_eval(a <= max); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a + 2) <= max); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a + 2U) <= max); // expected-warning{{TRUE}}
-}
-
-void mixedSignedness3(unsigned a) {
-  int max = INT_MAX;
-  clang_analyzer_eval(a < max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) < max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) < max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness4(unsigned a) {
-  int max = INT_MAX;
-  clang_analyzer_eval(a <= max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) <= max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) <= max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness5(unsigned a) {
-  int min = INT_MIN;
-  clang_analyzer_eval(a < min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) < min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) < min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness6(unsigned a) {
-  int min = INT_MIN;
-  clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness7(unsigned a) {
-  unsigned min = 0;
-  clang_analyzer_eval(a < min); // expected-warning{{FALSE}}
-  clang_analyzer_eval((a + 2) < min); // expected-warning{{FALSE}}
-  clang_analyzer_eval((a + 2U) < min); // expected-warning{{FALSE}}
-}
-
-void mixedSignedness8(unsigned a) {
-  unsigned min = 0;
-  clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness9(unsigned a) {
-  int min = 0;
-  clang_analyzer_eval(a < min); // expected-warning{{FALSE}}
-  clang_analyzer_eval((a + 2) < min); // expected-warning{{FALSE}}
-  clang_analyzer_eval((a + 2U) < min); // expected-warning{{FALSE}}
-}
-
-void mixedSignedness10(unsigned a) {
-  int min = 0;
-  clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness11(int a) {
-  int min = 0;
-  clang_analyzer_eval(a < min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) < min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) < min); // expected-warning{{FALSE}}
-}
-
-void mixedSignedness12(int a) {
-  int min = 0;
-  clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness13(int a) {
-  unsigned max = INT_MAX;
-  clang_analyzer_eval(a < max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) < max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) < max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness14(int a) {
-  unsigned max = INT_MAX;
-  clang_analyzer_eval(a <= max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) <= max); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) <= max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness15(int a) {
-  unsigned min = INT_MIN;
-  clang_analyzer_eval(a < min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) < min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) < min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness16(int a) {
-  unsigned min = INT_MIN;
-  clang_analyzer_eval(a <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2) <= min); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a + 2U) <= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness17(int a) {
-  unsigned max = INT_MAX;
-  if (a < max)
-    return;
-
-  clang_analyzer_eval(a < 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == 0); // expected-warning{{FALSE}}
-  clang_analyzer_eval(a == INT_MAX); // expected-warning{{UNKNOWN}}
-}
-
-void mixedSignedness18(int a) {
-  if (a >= 0)
-    return;
-
-  clang_analyzer_eval(a < 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a == (unsigned)INT_MIN); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == UINT_MAX); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/additive-folding.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/additive-folding.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/additive-folding.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,207 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify -analyzer-constraints=range -Wno-tautological-compare %s
-
-void clang_analyzer_eval(bool);
-
-#define UINT_MAX (~0U)
-#define INT_MAX (UINT_MAX & (UINT_MAX >> 1))
-#define INT_MIN (-INT_MAX - 1)
-
-//---------------
-//  Plus/minus
-//---------------
-
-void separateExpressions (int a) {
-  int b = a + 1;
-  --b;
-
-  clang_analyzer_eval(a != 0 && b == 0); // expected-warning{{FALSE}}
-}
-
-void oneLongExpression (int a) {
-  // Expression canonicalization should still allow this to work, even though
-  // the first term is on the left.
-  int b = 15 + a + 15 - 10 - 20;
-
-  clang_analyzer_eval(a != 0 && b == 0); // expected-warning{{FALSE}}
-}
-
-void mixedTypes (int a) {
-  // Different additive types should not cause crashes when constant-folding.
-  // This is part of PR7406.
-  int b = a + 1LL;
-  clang_analyzer_eval(a != 0 && (b-1) == 0); // not crash, expected-warning{{FALSE}}
-
-  int c = a + 1U;
-  clang_analyzer_eval(a != 0 && (c-1) == 0); // not crash, expected-warning{{FALSE}}
-}
-
-//---------------
-//  Comparisons
-//---------------
-
-// Equality and inequality only
-void eq_ne (unsigned a) {
-  if (a == UINT_MAX) {
-    clang_analyzer_eval(a+1 == 0); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a-1 == UINT_MAX-1); // expected-warning{{TRUE}}
-  } else {
-    clang_analyzer_eval(a+1 != 0); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a-1 != UINT_MAX-1); // expected-warning{{TRUE}}
-  }
-}
-
-// Mixed typed inequalities (part of PR7406)
-// These should not crash.
-void mixed_eq_ne (int a) {
-  if (a == 1) {
-    clang_analyzer_eval(a+1U == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a-1U == 0); // expected-warning{{TRUE}}
-  } else {
-    clang_analyzer_eval(a+1U != 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a-1U != 0); // expected-warning{{TRUE}}
-  }
-}
-
-
-// Simple order comparisons with no adjustment
-void baselineGT (unsigned a) {
-  if (a > 0)
-    clang_analyzer_eval(a != 0); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a == 0); // expected-warning{{TRUE}}
-}
-
-void baselineGE (unsigned a) {
-  if (a >= UINT_MAX)
-    clang_analyzer_eval(a == UINT_MAX); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a != UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void baselineLT (unsigned a) {
-  if (a < UINT_MAX)
-    clang_analyzer_eval(a != UINT_MAX); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void baselineLE (unsigned a) {
-  if (a <= 0)
-    clang_analyzer_eval(a == 0); // expected-warning{{TRUE}}
-  else
-    clang_analyzer_eval(a != 0); // expected-warning{{TRUE}}
-}
-
-
-// Adjustment gives each of these an extra solution!
-void adjustedGT (unsigned a) {
-  clang_analyzer_eval(a-1 > UINT_MAX-1); // expected-warning{{UNKNOWN}}
-}
-
-void adjustedGE (unsigned a) {
-  clang_analyzer_eval(a-1 > UINT_MAX-1); // expected-warning{{UNKNOWN}}
-
-  if (a-1 >= UINT_MAX-1)
-    clang_analyzer_eval(a == UINT_MAX); // expected-warning{{UNKNOWN}}
-}
-
-void adjustedLT (unsigned a) {
-  clang_analyzer_eval(a+1 < 1); // expected-warning{{UNKNOWN}}
-}
-
-void adjustedLE (unsigned a) {
-  clang_analyzer_eval(a+1 <= 1); // expected-warning{{UNKNOWN}}
-
-  if (a+1 <= 1)
-    clang_analyzer_eval(a == 0); // expected-warning{{UNKNOWN}}
-}
-
-
-// Tautologies
-// The negative forms are exercised as well
-// because clang_analyzer_eval tests both possibilities.
-void tautologies(unsigned a) {
-  clang_analyzer_eval(a <= UINT_MAX); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a >= 0); // expected-warning{{TRUE}}
-}
-
-
-// Tautologies from outside the range of the symbol
-void tautologiesOutside(unsigned char a) {
-  clang_analyzer_eval(a <= 0x100); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a < 0x100); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(a != 0x100); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a != -1); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(a > -1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a >= -1); // expected-warning{{TRUE}}
-}
-
-
-// Wraparound with mixed types. Note that the analyzer assumes
-// -fwrapv semantics.
-void mixedWraparoundSanityCheck(int a) {
-  int max = INT_MAX;
-  int min = INT_MIN;
-
-  int b = a + 1;
-  clang_analyzer_eval(a == max && b != min); // expected-warning{{FALSE}}
-}
-
-void mixedWraparoundLE_GT(int a) {
-  int max = INT_MAX;
-  int min = INT_MIN;
-
-  clang_analyzer_eval((a + 2) <= (max + 1LL)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a - 2) > (min - 1LL)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a + 2LL) <= max); // expected-warning{{UNKNOWN}}
-}
-
-void mixedWraparoundGE_LT(int a) {
-  int max = INT_MAX;
-  int min = INT_MIN;
-
-  clang_analyzer_eval((a + 2) < (max + 1LL)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a - 2) >= (min - 1LL)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a - 2LL) >= min); // expected-warning{{UNKNOWN}}
-}
-
-void mixedWraparoundEQ_NE(int a) {
-  int max = INT_MAX;
-
-  clang_analyzer_eval((a + 2) != (max + 1LL)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a + 2LL) == (max + 1LL)); // expected-warning{{UNKNOWN}}
-}
-
-
-// Mixed-signedness comparisons.
-void mixedSignedness(int a, unsigned b) {
-  int sMin = INT_MIN;
-  unsigned uMin = INT_MIN;
-
-  clang_analyzer_eval(a == sMin && a != uMin); // expected-warning{{FALSE}}
-  clang_analyzer_eval(b == uMin && b != sMin); // expected-warning{{FALSE}}
-}
-
-void mixedSignedness2(int a) {
-  if (a != -1)
-    return;
-  clang_analyzer_eval(a == UINT_MAX); // expected-warning{{TRUE}}
-}
-
-void mixedSignedness3(unsigned a) {
-  if (a != UINT_MAX)
-    return;
-  clang_analyzer_eval(a == -1); // expected-warning{{TRUE}}
-}
-
-
-void multiplicativeSanityTest(int x) {
-  // At one point we were ignoring the *4 completely -- the constraint manager
-  // would see x < 8 and then declare the assertion to be known false.
-  if (x*4 < 8)
-    return;
-
-  clang_analyzer_eval(x == 3); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/analyzeOneFunction.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/analyzeOneFunction.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/analyzeOneFunction.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyze-function="myMethodWithY:withX:" -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify %s
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
- at end
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
--(id)initWithFormat:(NSString *)f,...;
--(BOOL)isEqualToString:(NSString *)s;
-+ (id)string;
- at end
-
- at interface Test1 : NSObject {
-  NSString *text;
-}
--(id)myMethod;
--(id)myMethodWithY:(int)Y withX:(int)X;
-
- at property (nonatomic, assign) NSString *text;
- at end
-
- at implementation Test1
-
- at synthesize text;
-
--(id)myMethod {
-  Test1 *cell = [[[Test1 alloc] init] autorelease];
-
-  NSString *string1 = [[NSString alloc] initWithFormat:@"test %f", 0.0]; // No warning: this function is not analized.
-  cell.text = string1;
-
-  return cell;
-}
-
--(id)myMethodWithY:(int)Y withX:(int)X {
-  Test1 *cell = [[[Test1 alloc] init] autorelease];
-
-  NSString *string1 = [[NSString alloc] initWithFormat:@"test %f %d", 0.0, X+Y]; // expected-warning {{Potential leak}}
-  cell.text = string1;
-
-  return cell;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/analyze_display_progress.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/analyze_display_progress.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/analyze_display_progress.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-display-progress %s 2>&1 | FileCheck %s
-
-void f() {};
-void g() {};
-void h() {}
-
-// CHECK: analyze_display_progress.c f
-// CHECK: analyze_display_progress.c g
-// CHECK: analyze_display_progress.c h
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-config.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-config.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-config.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 --analyze %s -o /dev/null -Xclang -analyzer-checker=debug.ConfigDumper > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-void bar() {}
-void foo() { bar(); }
-
-// CHECK: [config]
-// CHECK-NEXT: cfg-conditional-static-initializers = true
-// CHECK-NEXT: cfg-temporary-dtors = false
-// CHECK-NEXT: faux-bodies = true
-// CHECK-NEXT: graph-trim-interval = 1000
-// CHECK-NEXT: ipa = dynamic-bifurcate
-// CHECK-NEXT: ipa-always-inline-size = 3
-// CHECK-NEXT: leak-diagnostics-reference-allocation = false
-// CHECK-NEXT: max-inlinable-size = 50
-// CHECK-NEXT: max-nodes = 150000
-// CHECK-NEXT: max-times-inline-large = 32
-// CHECK-NEXT: mode = deep
-// CHECK-NEXT: region-store-small-struct-limit = 2
-// CHECK-NEXT: [stats]
-// CHECK-NEXT: num-entries = 12
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-config.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-config.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-config.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 --analyze %s -o /dev/null -Xclang -analyzer-checker=debug.ConfigDumper > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-void bar() {}
-void foo() { bar(); }
-
-class Foo {
-public:
-	void bar() {}
-	void foo() { bar(); }
-};
-
-// CHECK: [config]
-// CHECK-NEXT: c++-container-inlining = false
-// CHECK-NEXT: c++-inlining = destructors
-// CHECK-NEXT: c++-stdlib-inlining = true
-// CHECK-NEXT: c++-template-inlining = true
-// CHECK-NEXT: cfg-conditional-static-initializers = true
-// CHECK-NEXT: cfg-temporary-dtors = false
-// CHECK-NEXT: faux-bodies = true
-// CHECK-NEXT: graph-trim-interval = 1000
-// CHECK-NEXT: ipa = dynamic-bifurcate
-// CHECK-NEXT: ipa-always-inline-size = 3
-// CHECK-NEXT: leak-diagnostics-reference-allocation = false
-// CHECK-NEXT: max-inlinable-size = 50
-// CHECK-NEXT: max-nodes = 150000
-// CHECK-NEXT: max-times-inline-large = 32
-// CHECK-NEXT: mode = deep
-// CHECK-NEXT: region-store-small-struct-limit = 2
-// CHECK-NEXT: [stats]
-// CHECK-NEXT: num-entries = 16

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-stats.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-stats.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/analyzer-stats.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,deadcode.DeadStores,debug.Stats -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
-
-int foo();
-
-int test() { // expected-warning-re{{test -> Total CFGBlocks: [0-9]+ \| Unreachable CFGBlocks: 0 \| Exhausted Block: no \| Empty WorkList: yes}}
-  int a = 1;
-  a = 34 / 12;
-
-  if (foo())
-    return a;
-
-  a /= 4;
-  return a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/array-struct-region.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/array-struct-region.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/array-struct-region.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,355 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-constraints=range -verify %s
-
-void clang_analyzer_eval(int);
-
-int string_literal_init() {
-  char a[] = "abc";
-  char b[2] = "abc"; // expected-warning{{too long}}
-  char c[5] = "abc";
-
-  clang_analyzer_eval(a[1] == 'b'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b[1] == 'b'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(c[1] == 'b'); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(a[3] == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(c[3] == 0); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(c[4] == 0); // expected-warning{{TRUE}}
-
-  return 42;
-}
-
-void nested_compound_literals(int rad) {
-  int vec[6][2] = {{0.195, 0.02}, {0.383, 0.067}, {0.55, 0.169},  // expected-warning 6 {{implicit conversion from 'double' to 'int' changes value from}}
-                   {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; // expected-warning 6 {{implicit conversion from 'double' to 'int' changes value from}}
-  int a;
-
-  for (a = 0; a < 6; ++a) {
-      vec[a][0] *= rad; // no-warning
-      vec[a][1] *= rad; // no-warning
-  }
-}
-
-void nested_compound_literals_float(float rad) {
-  float vec[6][2] = {{0.195, 0.02}, {0.383, 0.067}, {0.55, 0.169},
-                     {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}};
-  int a;
-
-  for (a = 0; a < 6; ++a) {
-      vec[a][0] *= rad; // no-warning
-      vec[a][1] *= rad; // no-warning
-  }
-}
-
-
-void struct_as_array() {
-  struct simple { int x; int y; };
-  struct simple a;
-  struct simple *p = &a;
-
-  p->x = 5;
-  clang_analyzer_eval(a.x == 5); // expected-warning{{TRUE}}
-  clang_analyzer_eval(p[0].x == 5); // expected-warning{{TRUE}}
-
-  p[0].y = 5;
-  clang_analyzer_eval(a.y == 5); // expected-warning{{TRUE}}
-  clang_analyzer_eval(p->y == 5); // expected-warning{{TRUE}}
-}
-
-
-// PR13264 / <rdar://problem/11802440>
-struct point { int x; int y; };
-struct circle { struct point o; int r; };
-struct circle get_circle() {
-  struct circle result;
-  result.r = 5;
-  result.o = (struct point){0, 0};
-  return result;
-}
-
-void struct_in_struct() {
-  struct circle c;
-  c = get_circle();
-  // This used to think c.r was undefined because c.o is a LazyCompoundVal.
-  clang_analyzer_eval(c.r == 5); // expected-warning{{TRUE}}
-}
-
-// We also test with floats because we don't model floats right now,
-// and the original bug report used a float.
-struct circle_f { struct point o; float r; };
-struct circle_f get_circle_f() {
-  struct circle_f result;
-  result.r = 5.0;
-  result.o = (struct point){0, 0};
-  return result;
-}
-
-float struct_in_struct_f() {
-  struct circle_f c;
-  c = get_circle_f();
-
-  return c.r; // no-warning
-}
-
-
-int randomInt();
-
-int testSymbolicInvalidation(int index) {
-  int vals[10];
-
-  vals[0] = 42;
-  clang_analyzer_eval(vals[0] == 42); // expected-warning{{TRUE}}
-
-  vals[index] = randomInt();
-  clang_analyzer_eval(vals[0] == 42); // expected-warning{{UNKNOWN}}
-
-  return vals[index]; // no-warning
-}
-
-int testConcreteInvalidation(int index) {
-  int vals[10];
-
-  vals[index] = 42;
-  clang_analyzer_eval(vals[index] == 42); // expected-warning{{TRUE}}
-  vals[0] = randomInt();
-  clang_analyzer_eval(vals[index] == 42); // expected-warning{{UNKNOWN}}
-
-  return vals[0]; // no-warning
-}
-
-
-typedef struct {
-  int x, y, z;
-} S;
-
-S makeS();
-
-int testSymbolicInvalidationStruct(int index) {
-  S vals[10];
-
-  vals[0].x = 42;
-  clang_analyzer_eval(vals[0].x == 42); // expected-warning{{TRUE}}
-
-  vals[index] = makeS();
-  clang_analyzer_eval(vals[0].x == 42); // expected-warning{{UNKNOWN}}
-
-  return vals[index].x; // no-warning
-}
-
-int testConcreteInvalidationStruct(int index) {
-  S vals[10];
-
-  vals[index].x = 42;
-  clang_analyzer_eval(vals[index].x == 42); // expected-warning{{TRUE}}
-  vals[0] = makeS();
-  clang_analyzer_eval(vals[index].x == 42); // expected-warning{{UNKNOWN}}
-
-  return vals[0].x; // no-warning
-}
-
-typedef struct {
-  S a[5];
-  S b[5];
-} SS;
-
-int testSymbolicInvalidationDoubleStruct(int index) {
-  SS vals;
-
-  vals.a[0].x = 42;
-  vals.b[0].x = 42;
-  clang_analyzer_eval(vals.a[0].x == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(vals.b[0].x == 42); // expected-warning{{TRUE}}
-
-  vals.a[index] = makeS();
-  clang_analyzer_eval(vals.a[0].x == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(vals.b[0].x == 42); // expected-warning{{TRUE}}
-
-  return vals.b[index].x; // no-warning
-}
-
-int testConcreteInvalidationDoubleStruct(int index) {
-  SS vals;
-
-  vals.a[index].x = 42;
-  vals.b[index].x = 42;
-  clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(vals.b[index].x == 42); // expected-warning{{TRUE}}
-
-  vals.a[0] = makeS();
-  clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(vals.b[index].x == 42); // expected-warning{{TRUE}}
-
-  return vals.b[0].x; // no-warning
-}
-
-
-int testNonOverlappingStructFieldsSimple() {
-  S val;
-
-  val.x = 1;
-  val.y = 2;
-  clang_analyzer_eval(val.x == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(val.y == 2); // expected-warning{{TRUE}}
-
-  return val.z; // expected-warning{{garbage}}
-}
-
-int testNonOverlappingStructFieldsSymbolicBase(int index, int anotherIndex) {
-  SS vals;
-
-  vals.a[index].x = 42;
-  vals.a[index].y = 42;
-  clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(vals.a[index].y == 42); // expected-warning{{TRUE}}
-
-  vals.a[anotherIndex].x = 42;
-  clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(vals.a[index].y == 42); // expected-warning{{TRUE}}
-
-  // FIXME: False negative. No bind ever set a field 'z'.
-  return vals.a[index].z; // no-warning
-}
-
-int testStructFieldChains(int index, int anotherIndex) {
-  SS vals[4];
-
-  vals[index].a[0].x = 42;
-  vals[anotherIndex].a[1].y = 42;
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(vals[anotherIndex].a[1].y == 42); // expected-warning{{TRUE}}
-
-  // This doesn't affect anything in the 'a' array field.
-  vals[anotherIndex].b[1].x = 42;
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(vals[anotherIndex].a[1].y == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(vals[anotherIndex].b[1].x == 42); // expected-warning{{TRUE}}
-
-  // This doesn't affect anything in the 'b' array field.
-  vals[index].a[anotherIndex].x = 42;
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(vals[anotherIndex].a[0].x == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(vals[anotherIndex].a[1].y == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(vals[anotherIndex].b[1].x == 42); // expected-warning{{TRUE}}
-
-  // FIXME: False negative. No bind ever set a field 'z'.
-  return vals[index].a[0].z; // no-warning
-}
-
-int testStructFieldChainsNested(int index, int anotherIndex) {
-  SS vals[4];
-
-  vals[index].a[0].x = 42;
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-
-  vals[index].b[0] = makeS();
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-
-  vals[index].a[0] = makeS();
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{UNKNOWN}}
-
-  vals[index].a[0].x = 42;
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-
-  return 0;
-}
-
-typedef struct {
-  int zoomLevel;
-  struct point center;
-} Outer;
-
-extern int test13116945(struct point x);
-static void radar13116945(struct point centerCoordinate) {
-  Outer zoomRegion;
-  zoomRegion.zoomLevel = 0;
-  zoomRegion.center = centerCoordinate;
-  Outer r = zoomRegion;
-  test13116945(r.center); // no-warning
-}
-
-
-typedef struct {
-  char data[4];
-} ShortString;
-
-typedef struct {
-  ShortString str;
-  int length;
-} ShortStringWrapper;
-
-void testArrayStructCopy() {
-  ShortString s = { "abc" };
-  ShortString s2 = s;
-  ShortString s3 = s2;
-
-  clang_analyzer_eval(s3.data[0] == 'a'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(s3.data[1] == 'b'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(s3.data[2] == 'c'); // expected-warning{{TRUE}}
-
-  s3.data[0] = 'z';
-  ShortString s4 = s3;
-
-  clang_analyzer_eval(s4.data[0] == 'z'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(s4.data[1] == 'b'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(s4.data[2] == 'c'); // expected-warning{{TRUE}}
-}
-
-void testArrayStructCopyNested() {
-  ShortString s = { "abc" };
-  ShortString s2 = s;
-
-  ShortStringWrapper w = { s2, 0 };
-
-  clang_analyzer_eval(w.str.data[0] == 'a'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w.str.data[1] == 'b'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w.str.data[2] == 'c'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w.length == 0); // expected-warning{{TRUE}}
-
-  ShortStringWrapper w2 = w;
-  clang_analyzer_eval(w2.str.data[0] == 'a'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w2.str.data[1] == 'b'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w2.str.data[2] == 'c'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w2.length == 0); // expected-warning{{TRUE}}
-
-  ShortStringWrapper w3 = w2;
-  clang_analyzer_eval(w3.str.data[0] == 'a'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w3.str.data[1] == 'b'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w3.str.data[2] == 'c'); // expected-warning{{TRUE}}
-  clang_analyzer_eval(w3.length == 0); // expected-warning{{TRUE}}
-}
-
-// --------------------
-// False positives
-// --------------------
-
-int testMixSymbolicAndConcrete(int index, int anotherIndex) {
-  SS vals;
-
-  vals.a[index].x = 42;
-  vals.a[0].y = 42;
-
-  // FIXME: Should be TRUE.
-  clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{UNKNOWN}}
-  // Should be TRUE; we set this explicitly.
-  clang_analyzer_eval(vals.a[0].y == 42); // expected-warning{{TRUE}}
-
-  vals.a[anotherIndex].y = 42;
-
-  // Should be UNKNOWN; we set an 'x'.
-  clang_analyzer_eval(vals.a[index].x == 42); // expected-warning{{UNKNOWN}}
-  // FIXME: Should be TRUE.
-  clang_analyzer_eval(vals.a[0].y == 42); // expected-warning{{UNKNOWN}}
-
-  return vals.a[0].x; // no-warning
-}
-
-void testFieldChainIsNotEnough(int index) {
-  SS vals[4];
-
-  vals[index].a[0].x = 42;
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{TRUE}}
-
-  vals[index].a[1] = makeS();
-  // FIXME: Should be TRUE.
-  clang_analyzer_eval(vals[index].a[0].x == 42); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/array-struct-region.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/array-struct-region.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/array-struct-region.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,176 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -x c %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -verify -x c++ -analyzer-config c++-inlining=constructors %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -DINLINE -verify -x c %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -DINLINE -verify -x c++ -analyzer-config c++-inlining=constructors %s
-
-void clang_analyzer_eval(int);
-
-struct S {
-  int field;
-
-#if __cplusplus
-  const struct S *getThis() const { return this; }
-  const struct S *operator +() const { return this; }
-
-  bool check() const { return this == this; }
-  bool operator !() const { return this != this; }
-
-  int operator *() const { return field; }
-#endif
-};
-
-#if __cplusplus
-const struct S *operator -(const struct S &s) { return &s; }
-bool operator ~(const struct S &s) { return &s != &s; }
-#endif
-
-
-#ifdef INLINE
-struct S getS() {
-  struct S s = { 42 };
-  return s;
-}
-#else
-struct S getS();
-#endif
-
-
-void testAssignment() {
-  struct S s = getS();
-
-  if (s.field != 42) return;
-  clang_analyzer_eval(s.field == 42); // expected-warning{{TRUE}}
-
-  s.field = 0;
-  clang_analyzer_eval(s.field == 0); // expected-warning{{TRUE}}
-
-#if __cplusplus
-  clang_analyzer_eval(s.getThis() == &s); // expected-warning{{TRUE}}
-  clang_analyzer_eval(+s == &s); // expected-warning{{TRUE}}
-  clang_analyzer_eval(-s == &s); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(s.check()); // expected-warning{{TRUE}}
-  clang_analyzer_eval(!s); // expected-warning{{FALSE}}
-  clang_analyzer_eval(~s); // expected-warning{{FALSE}}
-
-  clang_analyzer_eval(*s == 0); // expected-warning{{TRUE}}
-#endif
-}
-
-
-void testImmediateUse() {
-  int x = getS().field;
-
-  if (x != 42) return;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-
-#if __cplusplus
-  clang_analyzer_eval((void *)getS().getThis() == (void *)&x); // expected-warning{{FALSE}}
-  clang_analyzer_eval((void *)+getS() == (void *)&x); // expected-warning{{FALSE}}
-  clang_analyzer_eval((void *)-getS() == (void *)&x); // expected-warning{{FALSE}}
-
-  clang_analyzer_eval(getS().check()); // expected-warning{{TRUE}}
-  clang_analyzer_eval(!getS()); // expected-warning{{FALSE}}
-  clang_analyzer_eval(~getS()); // expected-warning{{FALSE}}
-#endif
-}
-
-int getConstrainedField(struct S s) {
-  if (s.field != 42) return 42;
-  return s.field;
-}
-
-int getAssignedField(struct S s) {
-  s.field = 42;
-  return s.field;
-}
-
-void testArgument() {
-  clang_analyzer_eval(getConstrainedField(getS()) == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(getAssignedField(getS()) == 42); // expected-warning{{TRUE}}
-}
-
-void testImmediateUseParens() {
-  int x = ((getS())).field;
-
-  if (x != 42) return;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(getConstrainedField(((getS()))) == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(getAssignedField(((getS()))) == 42); // expected-warning{{TRUE}}
-
-#if __cplusplus
-  clang_analyzer_eval(((getS())).check()); // expected-warning{{TRUE}}
-  clang_analyzer_eval(!((getS()))); // expected-warning{{FALSE}}
-  clang_analyzer_eval(~((getS()))); // expected-warning{{FALSE}}
-#endif
-}
-
-
-//--------------------
-// C++-only tests
-//--------------------
-
-#if __cplusplus
-void testReferenceAssignment() {
-  const S &s = getS();
-
-  if (s.field != 42) return;
-  clang_analyzer_eval(s.field == 42); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(s.getThis() == &s); // expected-warning{{TRUE}}
-  clang_analyzer_eval(+s == &s); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(s.check()); // expected-warning{{TRUE}}
-  clang_analyzer_eval(!s); // expected-warning{{FALSE}}
-  clang_analyzer_eval(~s); // expected-warning{{FALSE}}
-
-  clang_analyzer_eval(*s == 42); // expected-warning{{TRUE}}
-}
-
-
-int getConstrainedFieldRef(const S &s) {
-  if (s.field != 42) return 42;
-  return s.field;
-}
-
-bool checkThis(const S &s) {
-  return s.getThis() == &s;
-}
-
-bool checkThisOp(const S &s) {
-  return +s == &s;
-}
-
-bool checkThisStaticOp(const S &s) {
-  return -s == &s;
-}
-
-void testReferenceArgument() {
-  clang_analyzer_eval(getConstrainedFieldRef(getS()) == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(checkThis(getS())); // expected-warning{{TRUE}}
-  clang_analyzer_eval(checkThisOp(getS())); // expected-warning{{TRUE}}
-  clang_analyzer_eval(checkThisStaticOp(getS())); // expected-warning{{TRUE}}
-}
-
-
-int getConstrainedFieldOp(S s) {
-  if (*s != 42) return 42;
-  return *s;
-}
-
-int getConstrainedFieldRefOp(const S &s) {
-  if (*s != 42) return 42;
-  return *s;
-}
-
-void testImmediateUseOp() {
-  int x = *getS();
-  if (x != 42) return;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(getConstrainedFieldOp(getS()) == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(getConstrainedFieldRefOp(getS()) == 42); // expected-warning{{TRUE}}
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/array-struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/array-struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/array-struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,185 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core.CastToStruct -analyzer-store=region -analyzer-constraints=range -verify %s
-
-struct s {
-  int data;
-  int data_array[10];
-};
-
-typedef struct {
-  int data;
-} STYPE;
-
-void g(char *p);
-void g1(struct s* p);
-
-// Array to pointer conversion. Array in the struct field.
-void f(void) {
-  int a[10];
-  int (*p)[10];
-  p = &a;
-  (*p)[3] = 1;
-  
-  struct s d;
-  struct s *q;
-  q = &d;
-  q->data = 3;
-  d.data_array[9] = 17;
-}
-
-// StringLiteral in lvalue context and pointer to array type.
-// p: ElementRegion, q: StringRegion
-void f2() {
-  char *p = "/usr/local";
-  char (*q)[4];
-  q = &"abc";
-}
-
-// Typedef'ed struct definition.
-void f3() {
-  STYPE s;
-}
-
-// Initialize array with InitExprList.
-void f4() {
-  int a[] = { 1, 2, 3};
-  int b[3] = { 1, 2 };
-  struct s c[] = {{1,{1}}};
-}
-
-// Struct variable in lvalue context.
-// Assign UnknownVal to the whole struct.
-void f5() {
-  struct s data;
-  g1(&data);
-}
-
-// AllocaRegion test.
-void f6() {
-  char *p;
-  p = __builtin_alloca(10); 
-  g(p);
-  char c = *p;
-  p[1] = 'a';
-  // Test if RegionStore::EvalBinOp converts the alloca region to element
-  // region.
-  p += 2;
-}
-
-struct s2;
-
-void g2(struct s2 *p);
-
-// Incomplete struct pointer used as function argument.
-void f7() {
-  struct s2 *p = __builtin_alloca(10);
-  g2(p);
-}
-
-// sizeof() is unsigned while -1 is signed in array index.
-void f8() {
-  int a[10];
-  a[sizeof(a)/sizeof(int) - 1] = 1; // no-warning
-}
-
-// Initialization of struct array elements.
-void f9() {
-  struct s a[10];
-}
-
-// Initializing array with string literal.
-void f10() {
-  char a1[4] = "abc";
-  char a3[6] = "abc";
-}
-
-// Retrieve the default value of element/field region.
-void f11() {
-  struct s a;
-  g1(&a);
-  if (a.data == 0) // no-warning
-    a.data = 1;
-}
-
-// Convert unsigned offset to signed when creating ElementRegion from 
-// SymbolicRegion.
-void f12(int *list) {
-  unsigned i = 0;
-  list[i] = 1;
-}
-
-struct s1 {
-  struct s2 {
-    int d;
-  } e;
-};
-
-// The binding of a.e.d should not be removed. Test recursive subregion map
-// building: a->e, e->d. Only then 'a' could be added to live region roots.
-void f13(double timeout) {
-  struct s1 a;
-  a.e.d = (int) timeout;
-  if (a.e.d == 10)
-    a.e.d = 4;
-}
-
-struct s3 {
-  int a[2];
-};
-
-static struct s3 opt;
-
-// Test if the embedded array is retrieved correctly.
-void f14() {
-  struct s3 my_opt = opt;
-}
-
-void bar(int*);
-
-// Test if the array is correctly invalidated.
-void f15() {
-  int a[10];
-  bar(a);
-  if (a[1]) // no-warning
-    (void)1;
-}
-
-struct s3 p[1];
-
-// Code from postgresql.
-// Current cast logic of region store mistakenly leaves the final result region
-// an ElementRegion of type 'char'. Then load a nonloc::SymbolVal from it and
-// assigns to 'a'. 
-void f16(struct s3 *p) {
-  struct s3 a = *((struct s3*) ((char*) &p[0])); // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
-}
-
-void inv(struct s1 *);
-
-// Invalidate the struct field.
-void f17() {
-  struct s1 t;
-  int x;
-  inv(&t);
-  if (t.e.d)
-    x = 1;
-}
-
-void read(char*);
-
-void f18() {
-  char *q;
-  char *p = (char *) __builtin_alloca(10);
-  read(p);
-  q = p;
-  q++;
-  if (*q) { // no-warning
-  }
-}
-
-
-// [PR13927] offsetof replacement macro flagged as "dereference of a null pointer"
-int offset_of_data_array(void)
-{
-  return ((char *)&(((struct s*)0)->data_array)) - ((char *)0); // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/auto-obj-dtors-cfg-output.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/auto-obj-dtors-cfg-output.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/auto-obj-dtors-cfg-output.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,864 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -analyze -analyzer-checker=debug.DumpCFG %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-class A {
-public:
-  A() {}
-  ~A() {}
-  operator int() const { return 1; }
-};
-
-extern const bool UV;
-
-void test_const_ref() {
-  A a;
-  const A& b = a;
-  const A& c = A();
-}
-
-void test_array() {
-  A a[2];
-  A b[0];
-}
-
-void test_scope() {
-  A a;
-  { A c;
-    A d;
-  }
-  A b;
-}
-
-void test_return() {
-  A a;
-  A b;
-  if (UV) return;
-  A c;
-}
-
-void test_goto() {
-  A a;
-l0:
-  A b;
-  { A a;
-    if (UV) goto l0;
-    if (UV) goto l1;
-    A b;
-  }
-l1:
-  A c;
-}
-
-void test_if_implicit_scope() {
-  A a;
-  if (A b = a)
-    A c;
-  else A c;
-}
-
-void test_if_jumps() {
-  A a;
-  if (A b = a) {
-    A c;
-    if (UV) return;
-    A d;
-  } else {
-    A c;
-    if (UV) return;
-    A d;
-  }
-  A e;
-}
-
-void test_while_implicit_scope() {
-  A a;
-  while (A b = a)
-    A c;
-}
-
-void test_while_jumps() {
-  A a;
-  while (A b = a) {
-    A c;
-    if (UV) break;
-    if (UV) continue;
-    if (UV) return;
-    A d;
-  }
-  A e;
-}
-
-void test_do_implicit_scope() {
-  do A a;
-  while (UV);
-}
-
-void test_do_jumps() {
-  A a;
-  do {
-    A b;
-    if (UV) break;
-    if (UV) continue;
-    if (UV) return;
-    A c;
-  } while (UV);
-  A d;
-}
-
-void test_switch_implicit_scope() {
-  A a;
-  switch (A b = a)
-    A c;
-}
-
-void test_switch_jumps() {
-  A a;
-  switch (A b = a) {
-  case 0: {
-    A c;
-    if (UV) break;
-    if (UV) return;
-    A f;
-  }
-  case 1:
-    break;
-  }
-  A g;
-}
-
-void test_for_implicit_scope() {
-  for (A a; A b = a; )
-    A c;
-}
-
-void test_for_jumps() {
-  A a;
-  for (A b; A c = b; ) {
-    A d;
-    if (UV) break;
-    if (UV) continue;
-    if (UV) return;
-    A e;
-  }
-  A f;
-}
-
-void test_catch_const_ref() {
-  try {
-  } catch (const A& e) {
-  }
-}
-
-void test_catch_copy() {
-  try {
-  } catch (A e) {
-  }
-}
-
-// CHECK:  [B1 (ENTRY)]
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B1 (ENTRY)]
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B2 (ENTRY)]
-// CHECK:    Succs (1): B1
-// CHECK:  [B1]
-// CHECK:    1: 1
-// CHECK:    2: return [B1.1];
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B2 (ENTRY)]
-// CHECK:    Succs (1): B1
-// CHECK:  [B1]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3: a
-// CHECK:    4: [B1.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    5: const A &b = a;
-// CHECK:    6: A() (CXXConstructExpr, class A)
-// CHECK:    7: [B1.6] (BindTemporary)
-// CHECK:    8: [B1.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    9: [B1.8]
-// CHECK:   10: const A &c = A();
-// CHECK:   11: [B1.10].~A() (Implicit destructor)
-// CHECK:   12: [B1.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B2 (ENTRY)]
-// CHECK:    Succs (1): B1
-// CHECK:  [B1]
-// CHECK:    1:  (CXXConstructExpr, class A [2])
-// CHECK:    2: A a[2];
-// CHECK:    3:  (CXXConstructExpr, class A [0])
-// CHECK:    4: A b[0];
-// CHECK:    5: [B1.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B2 (ENTRY)]
-// CHECK:    Succs (1): B1
-// CHECK:  [B1]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3:  (CXXConstructExpr, class A)
-// CHECK:    4: A c;
-// CHECK:    5:  (CXXConstructExpr, class A)
-// CHECK:    6: A d;
-// CHECK:    7: [B1.6].~A() (Implicit destructor)
-// CHECK:    8: [B1.4].~A() (Implicit destructor)
-// CHECK:    9:  (CXXConstructExpr, class A)
-// CHECK:   10: A b;
-// CHECK:   11: [B1.10].~A() (Implicit destructor)
-// CHECK:   12: [B1.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B4 (ENTRY)]
-// CHECK:    Succs (1): B3
-// CHECK:  [B1]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: [B1.2].~A() (Implicit destructor)
-// CHECK:    4: [B3.4].~A() (Implicit destructor)
-// CHECK:    5: [B3.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B3
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    1: return;
-// CHECK:    2: [B3.4].~A() (Implicit destructor)
-// CHECK:    3: [B3.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B3
-// CHECK:    Succs (1): B0
-// CHECK:  [B3]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3:  (CXXConstructExpr, class A)
-// CHECK:    4: A b;
-// CHECK:    5: UV
-// CHECK:    6: [B3.5] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B3.6]
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (2): B2 B1
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (2): B1 B2
-// CHECK:  [B8 (ENTRY)]
-// CHECK:    Succs (1): B7
-// CHECK:  [B1]
-// CHECK:   l1:
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: [B1.2].~A() (Implicit destructor)
-// CHECK:    4: [B6.2].~A() (Implicit destructor)
-// CHECK:    5: [B7.2].~A() (Implicit destructor)
-// CHECK:    Preds (2): B2 B3
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A b;
-// CHECK:    3: [B2.2].~A() (Implicit destructor)
-// CHECK:    4: [B6.4].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B3]
-// CHECK:    1: [B6.4].~A() (Implicit destructor)
-// CHECK:    T: goto l1;
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B4]
-// CHECK:    1: UV
-// CHECK:    2: [B4.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B4.2]
-// CHECK:    Preds (1): B6
-// CHECK:    Succs (2): B3 B2
-// CHECK:  [B5]
-// CHECK:    1: [B6.4].~A() (Implicit destructor)
-// CHECK:    2: [B6.2].~A() (Implicit destructor)
-// CHECK:    T: goto l0;
-// CHECK:    Preds (1): B6
-// CHECK:    Succs (1): B6
-// CHECK:  [B6]
-// CHECK:   l0:
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A b;
-// CHECK:    3:  (CXXConstructExpr, class A)
-// CHECK:    4: A a;
-// CHECK:    5: UV
-// CHECK:    6: [B6.5] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B6.6]
-// CHECK:    Preds (2): B7 B5
-// CHECK:    Succs (2): B5 B4
-// CHECK:  [B7]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    Preds (1): B8
-// CHECK:    Succs (1): B6
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B5 (ENTRY)]
-// CHECK:    Succs (1): B4
-// CHECK:  [B1]
-// CHECK:    1: [B4.6].~A() (Implicit destructor)
-// CHECK:    2: [B4.2].~A() (Implicit destructor)
-// CHECK:    Preds (2): B2 B3
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: [B2.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B3]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: [B3.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B4]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3: a
-// CHECK:    4: [B4.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    5: [B4.4] (CXXConstructExpr, class A)
-// CHECK:    6: A b = a;
-// CHECK:    7: b
-// CHECK:    8: [B4.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    9: [B4.8].operator int
-// CHECK:   10: [B4.9]()
-// CHECK:   11: [B4.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:   12: [B4.11] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK:    T: if [B4.12]
-// CHECK:    Preds (1): B5
-// CHECK:    Succs (2): B3 B2
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B9 (ENTRY)]
-// CHECK:    Succs (1): B8
-// CHECK:  [B1]
-// CHECK:    1: [B8.6].~A() (Implicit destructor)
-// CHECK:    2:  (CXXConstructExpr, class A)
-// CHECK:    3: A e;
-// CHECK:    4: [B1.3].~A() (Implicit destructor)
-// CHECK:    5: [B8.2].~A() (Implicit destructor)
-// CHECK:    Preds (2): B2 B5
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A d;
-// CHECK:    3: [B2.2].~A() (Implicit destructor)
-// CHECK:    4: [B4.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B3]
-// CHECK:    1: return;
-// CHECK:    2: [B4.2].~A() (Implicit destructor)
-// CHECK:    3: [B8.6].~A() (Implicit destructor)
-// CHECK:    4: [B8.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B0
-// CHECK:  [B4]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: UV
-// CHECK:    4: [B4.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B4.4]
-// CHECK:    Preds (1): B8
-// CHECK:    Succs (2): B3 B2
-// CHECK:  [B5]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A d;
-// CHECK:    3: [B5.2].~A() (Implicit destructor)
-// CHECK:    4: [B7.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B7
-// CHECK:    Succs (1): B1
-// CHECK:  [B6]
-// CHECK:    1: return;
-// CHECK:    2: [B7.2].~A() (Implicit destructor)
-// CHECK:    3: [B8.6].~A() (Implicit destructor)
-// CHECK:    4: [B8.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B7
-// CHECK:    Succs (1): B0
-// CHECK:  [B7]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: UV
-// CHECK:    4: [B7.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B7.4]
-// CHECK:    Preds (1): B8
-// CHECK:    Succs (2): B6 B5
-// CHECK:  [B8]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3: a
-// CHECK:    4: [B8.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    5: [B8.4] (CXXConstructExpr, class A)
-// CHECK:    6: A b = a;
-// CHECK:    7: b
-// CHECK:    8: [B8.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    9: [B8.8].operator int
-// CHECK:   10: [B8.9]()
-// CHECK:   11: [B8.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:   12: [B8.11] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK:    T: if [B8.12]
-// CHECK:    Preds (1): B9
-// CHECK:    Succs (2): B7 B4
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (3): B1 B3 B6
-// CHECK:  [B6 (ENTRY)]
-// CHECK:    Succs (1): B5
-// CHECK:  [B1]
-// CHECK:    1: [B4.4].~A() (Implicit destructor)
-// CHECK:    2: [B5.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    Preds (1): B3
-// CHECK:    Succs (1): B4
-// CHECK:  [B3]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: [B3.2].~A() (Implicit destructor)
-// CHECK:    4: [B4.4].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B2
-// CHECK:  [B4]
-// CHECK:    1: a
-// CHECK:    2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    3: [B4.2] (CXXConstructExpr, class A)
-// CHECK:    4: A b = a;
-// CHECK:    5: b
-// CHECK:    6: [B4.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    7: [B4.6].operator int
-// CHECK:    8: [B4.7]()
-// CHECK:    9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:   10: [B4.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK:    T: while [B4.10]
-// CHECK:    Preds (2): B2 B5
-// CHECK:    Succs (2): B3 B1
-// CHECK:  [B5]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    Preds (1): B6
-// CHECK:    Succs (1): B4
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B12 (ENTRY)]
-// CHECK:    Succs (1): B11
-// CHECK:  [B1]
-// CHECK:    1: [B10.4].~A() (Implicit destructor)
-// CHECK:    2:  (CXXConstructExpr, class A)
-// CHECK:    3: A e;
-// CHECK:    4: [B1.3].~A() (Implicit destructor)
-// CHECK:    5: [B11.2].~A() (Implicit destructor)
-// CHECK:    Preds (2): B8 B10
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    Preds (2): B3 B6
-// CHECK:    Succs (1): B10
-// CHECK:  [B3]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A d;
-// CHECK:    3: [B3.2].~A() (Implicit destructor)
-// CHECK:    4: [B9.2].~A() (Implicit destructor)
-// CHECK:    5: [B10.4].~A() (Implicit destructor)
-// CHECK:    Preds (1): B5
-// CHECK:    Succs (1): B2
-// CHECK:  [B4]
-// CHECK:    1: return;
-// CHECK:    2: [B9.2].~A() (Implicit destructor)
-// CHECK:    3: [B10.4].~A() (Implicit destructor)
-// CHECK:    4: [B11.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B5
-// CHECK:    Succs (1): B0
-// CHECK:  [B5]
-// CHECK:    1: UV
-// CHECK:    2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B5.2]
-// CHECK:    Preds (1): B7
-// CHECK:    Succs (2): B4 B3
-// CHECK:  [B6]
-// CHECK:    1: [B9.2].~A() (Implicit destructor)
-// CHECK:    2: [B10.4].~A() (Implicit destructor)
-// CHECK:    T: continue;
-// CHECK:    Preds (1): B7
-// CHECK:    Succs (1): B2
-// CHECK:  [B7]
-// CHECK:    1: UV
-// CHECK:    2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B7.2]
-// CHECK:    Preds (1): B9
-// CHECK:    Succs (2): B6 B5
-// CHECK:  [B8]
-// CHECK:    1: [B9.2].~A() (Implicit destructor)
-// CHECK:    T: break;
-// CHECK:    Preds (1): B9
-// CHECK:    Succs (1): B1
-// CHECK:  [B9]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: UV
-// CHECK:    4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B9.4]
-// CHECK:    Preds (1): B10
-// CHECK:    Succs (2): B8 B7
-// CHECK:  [B10]
-// CHECK:    1: a
-// CHECK:    2: [B10.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    3: [B10.2] (CXXConstructExpr, class A)
-// CHECK:    4: A b = a;
-// CHECK:    5: b
-// CHECK:    6: [B10.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    7: [B10.6].operator int
-// CHECK:    8: [B10.7]()
-// CHECK:    9: [B10.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:   10: [B10.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK:    T: while [B10.10]
-// CHECK:    Preds (2): B2 B11
-// CHECK:    Succs (2): B9 B1
-// CHECK:  [B11]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    Preds (1): B12
-// CHECK:    Succs (1): B10
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (2): B1 B4
-// CHECK:  [B4 (ENTRY)]
-// CHECK:    Succs (1): B2
-// CHECK:  [B1]
-// CHECK:    1: UV
-// CHECK:    2: [B1.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: do ... while [B1.2]
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (2): B3 B0
-// CHECK:  [B2]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3: [B2.2].~A() (Implicit destructor)
-// CHECK:    Preds (2): B3 B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B3]
-// CHECK:    Preds (1): B1
-// CHECK:    Succs (1): B2
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B12 (ENTRY)]
-// CHECK:    Succs (1): B11
-// CHECK:  [B1]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A d;
-// CHECK:    3: [B1.2].~A() (Implicit destructor)
-// CHECK:    4: [B11.2].~A() (Implicit destructor)
-// CHECK:    Preds (2): B8 B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    1: UV
-// CHECK:    2: [B2.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: do ... while [B2.2]
-// CHECK:    Preds (2): B3 B6
-// CHECK:    Succs (2): B10 B1
-// CHECK:  [B3]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: [B3.2].~A() (Implicit destructor)
-// CHECK:    4: [B9.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B5
-// CHECK:    Succs (1): B2
-// CHECK:  [B4]
-// CHECK:    1: return;
-// CHECK:    2: [B9.2].~A() (Implicit destructor)
-// CHECK:    3: [B11.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B5
-// CHECK:    Succs (1): B0
-// CHECK:  [B5]
-// CHECK:    1: UV
-// CHECK:    2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B5.2]
-// CHECK:    Preds (1): B7
-// CHECK:    Succs (2): B4 B3
-// CHECK:  [B6]
-// CHECK:    1: [B9.2].~A() (Implicit destructor)
-// CHECK:    T: continue;
-// CHECK:    Preds (1): B7
-// CHECK:    Succs (1): B2
-// CHECK:  [B7]
-// CHECK:    1: UV
-// CHECK:    2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B7.2]
-// CHECK:    Preds (1): B9
-// CHECK:    Succs (2): B6 B5
-// CHECK:  [B8]
-// CHECK:    1: [B9.2].~A() (Implicit destructor)
-// CHECK:    T: break;
-// CHECK:    Preds (1): B9
-// CHECK:    Succs (1): B1
-// CHECK:  [B9]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A b;
-// CHECK:    3: UV
-// CHECK:    4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B9.4]
-// CHECK:    Preds (2): B10 B11
-// CHECK:    Succs (2): B8 B7
-// CHECK:  [B10]
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (1): B9
-// CHECK:  [B11]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    Preds (1): B12
-// CHECK:    Succs (1): B9
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (2): B1 B4
-// CHECK:  [B4 (ENTRY)]
-// CHECK:    Succs (1): B2
-// CHECK:  [B1]
-// CHECK:    1: [B2.6].~A() (Implicit destructor)
-// CHECK:    2: [B2.2].~A() (Implicit destructor)
-// CHECK:    Preds (2): B3 B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3: a
-// CHECK:    4: [B2.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    5: [B2.4] (CXXConstructExpr, class A)
-// CHECK:    6: A b = a;
-// CHECK:    7: b
-// CHECK:    8: [B2.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    9: [B2.8].operator int
-// CHECK:   10: [B2.9]()
-// CHECK:   11: [B2.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:    T: switch [B2.11]
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B3]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: [B3.2].~A() (Implicit destructor)
-// CHECK:    Succs (1): B1
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B9 (ENTRY)]
-// CHECK:    Succs (1): B2
-// CHECK:  [B1]
-// CHECK:    1: [B2.6].~A() (Implicit destructor)
-// CHECK:    2:  (CXXConstructExpr, class A)
-// CHECK:    3: A g;
-// CHECK:    4: [B1.3].~A() (Implicit destructor)
-// CHECK:    5: [B2.2].~A() (Implicit destructor)
-// CHECK:    Preds (3): B3 B7 B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3: a
-// CHECK:    4: [B2.3] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    5: [B2.4] (CXXConstructExpr, class A)
-// CHECK:    6: A b = a;
-// CHECK:    7: b
-// CHECK:    8: [B2.7] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    9: [B2.8].operator int
-// CHECK:   10: [B2.9]()
-// CHECK:   11: [B2.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:    T: switch [B2.11]
-// CHECK:    Preds (1): B9
-// CHECK:    Succs (3): B3 B8
-// CHECK:      B1
-// CHECK:  [B3]
-// CHECK:   case 1:
-// CHECK:    T: break;
-// CHECK:    Preds (2): B2 B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B4]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A f;
-// CHECK:    3: [B4.2].~A() (Implicit destructor)
-// CHECK:    4: [B8.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B6
-// CHECK:    Succs (1): B3
-// CHECK:  [B5]
-// CHECK:    1: return;
-// CHECK:    2: [B8.2].~A() (Implicit destructor)
-// CHECK:    3: [B2.6].~A() (Implicit destructor)
-// CHECK:    4: [B2.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B6
-// CHECK:    Succs (1): B0
-// CHECK:  [B6]
-// CHECK:    1: UV
-// CHECK:    2: [B6.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B6.2]
-// CHECK:    Preds (1): B8
-// CHECK:    Succs (2): B5 B4
-// CHECK:  [B7]
-// CHECK:    1: [B8.2].~A() (Implicit destructor)
-// CHECK:    T: break;
-// CHECK:    Preds (1): B8
-// CHECK:    Succs (1): B1
-// CHECK:  [B8]
-// CHECK:   case 0:
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: UV
-// CHECK:    4: [B8.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B8.4]
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (2): B7 B6
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (2): B1 B5
-// CHECK:  [B6 (ENTRY)]
-// CHECK:    Succs (1): B5
-// CHECK:  [B1]
-// CHECK:    1: [B4.4].~A() (Implicit destructor)
-// CHECK:    2: [B5.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    Preds (1): B3
-// CHECK:    Succs (1): B4
-// CHECK:  [B3]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A c;
-// CHECK:    3: [B3.2].~A() (Implicit destructor)
-// CHECK:    4: [B4.4].~A() (Implicit destructor)
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B2
-// CHECK:  [B4]
-// CHECK:    1: a
-// CHECK:    2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    3: [B4.2] (CXXConstructExpr, class A)
-// CHECK:    4: A b = a;
-// CHECK:    5: b
-// CHECK:    6: [B4.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    7: [B4.6].operator int
-// CHECK:    8: [B4.7]()
-// CHECK:    9: [B4.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:   10: [B4.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK:    T: for (...; [B4.10]; )
-// CHECK:    Preds (2): B2 B5
-// CHECK:    Succs (2): B3 B1
-// CHECK:  [B5]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    Preds (1): B6
-// CHECK:    Succs (1): B4
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B12 (ENTRY)]
-// CHECK:    Succs (1): B11
-// CHECK:  [B1]
-// CHECK:    1: [B10.4].~A() (Implicit destructor)
-// CHECK:    2: [B11.4].~A() (Implicit destructor)
-// CHECK:    3:  (CXXConstructExpr, class A)
-// CHECK:    4: A f;
-// CHECK:    5: [B1.4].~A() (Implicit destructor)
-// CHECK:    6: [B11.2].~A() (Implicit destructor)
-// CHECK:    Preds (2): B8 B10
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    Preds (2): B3 B6
-// CHECK:    Succs (1): B10
-// CHECK:  [B3]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A e;
-// CHECK:    3: [B3.2].~A() (Implicit destructor)
-// CHECK:    4: [B9.2].~A() (Implicit destructor)
-// CHECK:    5: [B10.4].~A() (Implicit destructor)
-// CHECK:    Preds (1): B5
-// CHECK:    Succs (1): B2
-// CHECK:  [B4]
-// CHECK:    1: return;
-// CHECK:    2: [B9.2].~A() (Implicit destructor)
-// CHECK:    3: [B10.4].~A() (Implicit destructor)
-// CHECK:    4: [B11.4].~A() (Implicit destructor)
-// CHECK:    5: [B11.2].~A() (Implicit destructor)
-// CHECK:    Preds (1): B5
-// CHECK:    Succs (1): B0
-// CHECK:  [B5]
-// CHECK:    1: UV
-// CHECK:    2: [B5.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B5.2]
-// CHECK:    Preds (1): B7
-// CHECK:    Succs (2): B4 B3
-// CHECK:  [B6]
-// CHECK:    1: [B9.2].~A() (Implicit destructor)
-// CHECK:    T: continue;
-// CHECK:    Preds (1): B7
-// CHECK:    Succs (1): B2
-// CHECK:  [B7]
-// CHECK:    1: UV
-// CHECK:    2: [B7.1] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B7.2]
-// CHECK:    Preds (1): B9
-// CHECK:    Succs (2): B6 B5
-// CHECK:  [B8]
-// CHECK:    1: [B9.2].~A() (Implicit destructor)
-// CHECK:    T: break;
-// CHECK:    Preds (1): B9
-// CHECK:    Succs (1): B1
-// CHECK:  [B9]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A d;
-// CHECK:    3: UV
-// CHECK:    4: [B9.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: if [B9.4]
-// CHECK:    Preds (1): B10
-// CHECK:    Succs (2): B8 B7
-// CHECK:  [B10]
-// CHECK:    1: b
-// CHECK:    2: [B10.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    3: [B10.2] (CXXConstructExpr, class A)
-// CHECK:    4: A c = b;
-// CHECK:    5: c
-// CHECK:    6: [B10.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    7: [B10.6].operator int
-// CHECK:    8: [B10.7]()
-// CHECK:    9: [B10.8] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:   10: [B10.9] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK:    T: for (...; [B10.10]; )
-// CHECK:    Preds (2): B2 B11
-// CHECK:    Succs (2): B9 B1
-// CHECK:  [B11]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A a;
-// CHECK:    3:  (CXXConstructExpr, class A)
-// CHECK:    4: A b;
-// CHECK:    Preds (1): B12
-// CHECK:    Succs (1): B10
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (2): B1 B4
-// CHECK:  [B3 (ENTRY)]
-// CHECK:    Succs (1): B0
-// CHECK:  [B1]
-// CHECK:    T: try ...
-// CHECK:    Succs (2): B2 B0
-// CHECK:  [B2]
-// CHECK:   catch (const A &e):
-// CHECK:    1: catch (const A &e) {
-// CHECK: }
-// CHECK:    Preds (1): B1
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (3): B2 B1 B3
-// CHECK:  [B3 (ENTRY)]
-// CHECK:    Succs (1): B0
-// CHECK:  [B1]
-// CHECK:    T: try ...
-// CHECK:    Succs (2): B2 B0
-// CHECK:  [B2]
-// CHECK:   catch (A e):
-// CHECK:    1: catch (A e) {
-// CHECK: }
-// CHECK:    2: [B2.1].~A() (Implicit destructor)
-// CHECK:    Preds (1): B1
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (3): B2 B1 B3
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/base-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/base-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/base-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-inlining=constructors -verify %s
-
-void clang_analyzer_eval(bool);
-
-class A {
-  int x;
-public:
-  A();
-  int getx() const {
-    return x;
-  }
-};
-
-A::A() : x(0) {
-}
-
-class B : public A {
-  int y;
-public:
-  B();
-};
-
-B::B() {
-}
-
-void f() {
-  B b;
-  clang_analyzer_eval(b.getx() == 0); // expected-warning{{TRUE}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/bitwise-ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/bitwise-ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/bitwise-ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-#define CHECK(expr) if (!(expr)) return; clang_analyzer_eval(expr)
-
-void testPersistentConstraints(int x, int y) {
-  // Sanity check
-  CHECK(x); // expected-warning{{TRUE}}
-  CHECK(x & 1); // expected-warning{{TRUE}}
-  
-  // False positives due to SValBuilder giving up on certain kinds of exprs.
-  CHECK(1 - x); // expected-warning{{UNKNOWN}}
-  CHECK(x & y); // expected-warning{{UNKNOWN}}
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/blocks-no-inline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/blocks-no-inline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/blocks-no-inline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -fblocks -verify -x c++ %s
-
-void clang_analyzer_eval(int);
-
-void testInvalidation() {
-  __block int i = 0;
-  ^{
-    ++i;
-  }();
-
-  // Under inlining, we will know that i == 1.
-  clang_analyzer_eval(i == 0); // expected-warning{{UNKNOWN}}
-}
-
-
-const int globalConstant = 1;
-void testCapturedConstants() {
-  const int localConstant = 2;
-  static const int staticConstant = 3;
-
-  ^{
-    clang_analyzer_eval(globalConstant == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(localConstant == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(staticConstant == 3); // expected-warning{{TRUE}}
-  }();
-}
-
-typedef const int constInt;
-constInt anotherGlobalConstant = 1;
-void testCapturedConstantsTypedef() {
-  constInt localConstant = 2;
-  static constInt staticConstant = 3;
-
-  ^{
-    clang_analyzer_eval(anotherGlobalConstant == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(localConstant == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(staticConstant == 3); // expected-warning{{TRUE}}
-  }();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/blocks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/blocks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/blocks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core -analyzer-store=region -fblocks -analyzer-opt-analyze-nested-blocks -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from Mac OS X headers:
-//===----------------------------------------------------------------------===//
-
-typedef __builtin_va_list va_list;
-typedef unsigned int uint32_t;
-typedef struct dispatch_queue_s *dispatch_queue_t;
-typedef struct dispatch_queue_attr_s *dispatch_queue_attr_t;
-typedef void (^dispatch_block_t)(void);
-void dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
-__attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) dispatch_queue_t dispatch_queue_create(const char *label, dispatch_queue_attr_t attr);
-typedef long dispatch_once_t;
-void dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
- at end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {}
-+ (id)alloc;
-- (id)init;
-- (id)copy;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (const char *)UTF8String;
-- (id)initWithFormat:(NSString *)format arguments:(va_list)argList __attribute__((format(__NSString__, 1, 0)));
- at end
- at class NSString, NSData;
-typedef struct cssm_sample {} CSSM_SAMPLEGROUP, *CSSM_SAMPLEGROUP_PTR;
-typedef struct __aslclient *aslclient;
-typedef struct __aslmsg *aslmsg;
-aslclient asl_open(const char *ident, const char *facility, uint32_t opts);
-int asl_log(aslclient asl, aslmsg msg, int level, const char *format, ...) __attribute__((__format__ (__printf__, 4, 5)));
-
-//===----------------------------------------------------------------------===//
-// Begin actual test cases.
-//===----------------------------------------------------------------------===//
-
-// test1 - This test case exposed logic that caused the analyzer to crash because of a memory bug
-//  in BlockDataRegion.  It represents real code that contains two block literals.  Eventually
-//  via IPA 'logQueue' and 'client' should be updated after the call to 'dispatch_once'.
-void test1(NSString *format, ...) {
-  static dispatch_queue_t logQueue;
-  static aslclient client;
-  static dispatch_once_t pred;
-  do {
-    if (__builtin_expect(*(&pred), ~0l) != ~0l)
-      dispatch_once(&pred, ^{
-        logQueue = dispatch_queue_create("com.mycompany.myproduct.asl", ((void*)0));
-        client = asl_open(((void*)0), "com.mycompany.myproduct", 0);
-      });
-  } while (0);
-
-  va_list args;
-  __builtin_va_start(args, format);
-
-  NSString *str = [[NSString alloc] initWithFormat:format arguments:args];
-  dispatch_async(logQueue, ^{ asl_log(client, ((void*)0), 4, "%s", [str UTF8String]); });
-  [str release];
-
-  __builtin_va_end(args);
-}
-
-// test2 - Test that captured variables that are uninitialized are flagged
-// as such.
-void test2() {
-  static int y = 0;
-  int x;
-  ^{ y = x + 1; }();  // expected-warning{{Variable 'x' is uninitialized when captured by block}}
-}
-
-void test2_b() {
-  static int y = 0;
-  __block int x;
-  ^{ y = x + 1; }(); // expected-warning {{left operand of '+' is a garbage value}}
-}
-
-void test2_c() {
-  typedef void (^myblock)(void);
-  myblock f = ^() { f(); }; // expected-warning{{Variable 'f' is uninitialized when captured by block}}
-}
-
-
-void testMessaging() {
-  // <rdar://problem/12119814>
-  [[^(){} copy] release];
-}
-
-
- at interface rdar12415065 : NSObject
- at end
-
- at implementation rdar12415065
-- (void)test {
-  // At one point this crashed because we created a path note at a
-  // PreStmtPurgeDeadSymbols point but only knew how to deal with PostStmt
-  // points. <rdar://problem/12687586>
-
-  extern dispatch_queue_t queue;
-
-  if (!queue)
-    return;
-
-  // This previously was a false positive with 'x' being flagged as being
-  // uninitialized when captured by the exterior block (when it is only
-  // captured by the interior block).
-  dispatch_async(queue, ^{
-    double x = 0.0;
-    if (24.0f < x) {
-      dispatch_async(queue, ^{ (void)x; });
-      [self test];
-    }
-  });
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/bool-assignment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/bool-assignment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/bool-assignment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core.BoolAssignment -analyzer-store=region -verify -std=c99 -Dbool=_Bool %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core.BoolAssignment -analyzer-store=region -verify -x c++ %s
-
-// Test C++'s bool and C's _Bool.
-// FIXME: We stopped warning on these when SValBuilder got smarter about
-// casts to bool. Arguably, however, these conversions are okay; the result
-// is always 'true' or 'false'.
-
-void test_stdbool_initialization(int y) {
-  bool constant = 2; // no-warning
-  if (y < 0) {
-    bool x = y; // no-warning
-    return;
-  }
-  if (y > 1) {
-    bool x = y; // no-warning
-    return;
-  }
-  bool x = y; // no-warning
-}
-
-void test_stdbool_assignment(int y) {
-  bool x = 0; // no-warning
-  if (y < 0) {
-    x = y; // no-warning
-    return;
-  }
-  if (y > 1) {
-    x = y; // no-warning
-    return;
-  }
-  x = y; // no-warning
-}
-
-// Test Objective-C's BOOL
-
-typedef signed char BOOL;
-
-void test_BOOL_initialization(int y) {
-  BOOL constant = 2; // expected-warning {{Assignment of a non-Boolean value}}
-  if (y < 0) {
-    BOOL x = y; // expected-warning {{Assignment of a non-Boolean value}}
-    return;
-  }
-  if (y > 1) {
-    BOOL x = y; // expected-warning {{Assignment of a non-Boolean value}}
-    return;
-  }
-  BOOL x = y; // no-warning
-}
-
-void test_BOOL_assignment(int y) {
-  BOOL x = 0; // no-warning
-  if (y < 0) {
-    x = y; // expected-warning {{Assignment of a non-Boolean value}}
-    return;
-  }
-  if (y > 1) {
-    x = y; // expected-warning {{Assignment of a non-Boolean value}}
-    return;
-  }
-  x = y; // no-warning
-}
-
-
-// Test MacTypes.h's Boolean
-
-typedef unsigned char Boolean;
-
-void test_Boolean_initialization(int y) {
-  Boolean constant = 2; // expected-warning {{Assignment of a non-Boolean value}}
-  if (y < 0) {
-    Boolean x = y; // expected-warning {{Assignment of a non-Boolean value}}
-    return;
-  }
-  if (y > 1) {
-    Boolean x = y; // expected-warning {{Assignment of a non-Boolean value}}
-    return;
-  }
-  Boolean x = y; // no-warning
-}
-
-void test_Boolean_assignment(int y) {
-  Boolean x = 0; // no-warning
-  if (y < 0) {
-    x = y; // expected-warning {{Assignment of a non-Boolean value}}
-    return;
-  }
-  if (y > 1) {
-    x = y; // expected-warning {{Assignment of a non-Boolean value}}
-    return;
-  }
-  x = y; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/bstring.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/bstring.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/bstring.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,437 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-// RUN: %clang_cc1 -analyze -DUSE_BUILTINS -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-// RUN: %clang_cc1 -analyze -DVARIANT -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-// RUN: %clang_cc1 -analyze -DUSE_BUILTINS -DVARIANT -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-
-//===----------------------------------------------------------------------===
-// Declarations
-//===----------------------------------------------------------------------===
-
-// Some functions are so similar to each other that they follow the same code
-// path, such as memcpy and __memcpy_chk, or memcmp and bcmp. If VARIANT is
-// defined, make sure to use the variants instead to make sure they are still
-// checked by the analyzer.
-
-// Some functions are implemented as builtins. These should be #defined as
-// BUILTIN(f), which will prepend "__builtin_" if USE_BUILTINS is defined.
-
-// Functions that have variants and are also available as builtins should be
-// declared carefully! See memcpy() for an example.
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else /* USE_BUILTINS */
-# define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-typedef typeof(sizeof(int)) size_t;
-
-void clang_analyzer_eval(int);
-
-//===----------------------------------------------------------------------===
-// memcpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __memcpy_chk BUILTIN(__memcpy_chk)
-void *__memcpy_chk(void *restrict s1, const void *restrict s2, size_t n,
-                   size_t destlen);
-
-#define memcpy(a,b,c) __memcpy_chk(a,b,c,(size_t)-1)
-
-#else /* VARIANT */
-
-#define memcpy BUILTIN(memcpy)
-void *memcpy(void *restrict s1, const void *restrict s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void memcpy0 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[4] = {0};
-
-  memcpy(dst, src, 4); // no-warning
-
-  clang_analyzer_eval(memcpy(dst, src, 4) == dst); // expected-warning{{TRUE}}
-
-  // If we actually model the copy, we can make this known.
-  // The important thing for now is that the old value has been invalidated.
-  clang_analyzer_eval(dst[0] != 0); // expected-warning{{UNKNOWN}}
-}
-
-void memcpy1 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[10];
-
-  memcpy(dst, src, 5); // expected-warning{{Memory copy function accesses out-of-bound array element}}
-}
-
-void memcpy2 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[1];
-
-  memcpy(dst, src, 4); // expected-warning{{Memory copy function overflows destination buffer}}
-}
-
-void memcpy3 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[3];
-
-  memcpy(dst+1, src+2, 2); // no-warning
-}
-
-void memcpy4 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[10];
-
-  memcpy(dst+2, src+2, 3); // expected-warning{{Memory copy function accesses out-of-bound array element}}
-}
-
-void memcpy5() {
-  char src[] = {1, 2, 3, 4};
-  char dst[3];
-
-  memcpy(dst+2, src+2, 2); // expected-warning{{Memory copy function overflows destination buffer}}
-}
-
-void memcpy6() {
-  int a[4] = {0};
-  memcpy(a, a, 8); // expected-warning{{overlapping}}  
-}
-
-void memcpy7() {
-  int a[4] = {0};
-  memcpy(a+2, a+1, 8); // expected-warning{{overlapping}}
-}
-
-void memcpy8() {
-  int a[4] = {0};
-  memcpy(a+1, a+2, 8); // expected-warning{{overlapping}}
-}
-
-void memcpy9() {
-  int a[4] = {0};
-  memcpy(a+2, a+1, 4); // no-warning
-  memcpy(a+1, a+2, 4); // no-warning
-}
-
-void memcpy10() {
-  char a[4] = {0};
-  memcpy(0, a, 4); // expected-warning{{Null pointer argument in call to memory copy function}}
-}
-
-void memcpy11() {
-  char a[4] = {0};
-  memcpy(a, 0, 4); // expected-warning{{Null pointer argument in call to memory copy function}}
-}
-
-void memcpy12() {
-  char a[4] = {0};
-  memcpy(0, a, 0); // no-warning
-}
-
-void memcpy13() {
-  char a[4] = {0};
-  memcpy(a, 0, 0); // no-warning
-}
-
-void memcpy_unknown_size (size_t n) {
-  char a[4], b[4] = {1};
-  clang_analyzer_eval(memcpy(a, b, n) == a); // expected-warning{{TRUE}}
-}
-
-void memcpy_unknown_size_warn (size_t n) {
-  char a[4];
-  void *result = memcpy(a, 0, n); // expected-warning{{Null pointer argument in call to memory copy function}}
-  clang_analyzer_eval(result == a); // no-warning (above is fatal)
-}
-
-//===----------------------------------------------------------------------===
-// mempcpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __mempcpy_chk BUILTIN(__mempcpy_chk)
-void *__mempcpy_chk(void *restrict s1, const void *restrict s2, size_t n,
-                   size_t destlen);
-
-#define mempcpy(a,b,c) __mempcpy_chk(a,b,c,(size_t)-1)
-
-#else /* VARIANT */
-
-#define mempcpy BUILTIN(mempcpy)
-void *mempcpy(void *restrict s1, const void *restrict s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void mempcpy0 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[5] = {0};
-
-  mempcpy(dst, src, 4); // no-warning
-
-  clang_analyzer_eval(mempcpy(dst, src, 4) == &dst[4]); // expected-warning{{TRUE}}
-
-  // If we actually model the copy, we can make this known.
-  // The important thing for now is that the old value has been invalidated.
-  clang_analyzer_eval(dst[0] != 0); // expected-warning{{UNKNOWN}}
-}
-
-void mempcpy1 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[10];
-
-  mempcpy(dst, src, 5); // expected-warning{{Memory copy function accesses out-of-bound array element}}
-}
-
-void mempcpy2 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[1];
-
-  mempcpy(dst, src, 4); // expected-warning{{Memory copy function overflows destination buffer}}
-}
-
-void mempcpy3 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[3];
-
-  mempcpy(dst+1, src+2, 2); // no-warning
-}
-
-void mempcpy4 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[10];
-
-  mempcpy(dst+2, src+2, 3); // expected-warning{{Memory copy function accesses out-of-bound array element}}
-}
-
-void mempcpy5() {
-  char src[] = {1, 2, 3, 4};
-  char dst[3];
-
-  mempcpy(dst+2, src+2, 2); // expected-warning{{Memory copy function overflows destination buffer}}
-}
-
-void mempcpy6() {
-  int a[4] = {0};
-  mempcpy(a, a, 8); // expected-warning{{overlapping}}  
-}
-
-void mempcpy7() {
-  int a[4] = {0};
-  mempcpy(a+2, a+1, 8); // expected-warning{{overlapping}}
-}
-
-void mempcpy8() {
-  int a[4] = {0};
-  mempcpy(a+1, a+2, 8); // expected-warning{{overlapping}}
-}
-
-void mempcpy9() {
-  int a[4] = {0};
-  mempcpy(a+2, a+1, 4); // no-warning
-  mempcpy(a+1, a+2, 4); // no-warning
-}
-
-void mempcpy10() {
-  char a[4] = {0};
-  mempcpy(0, a, 4); // expected-warning{{Null pointer argument in call to memory copy function}}
-}
-
-void mempcpy11() {
-  char a[4] = {0};
-  mempcpy(a, 0, 4); // expected-warning{{Null pointer argument in call to memory copy function}}
-}
-
-void mempcpy12() {
-  char a[4] = {0};
-  mempcpy(0, a, 0); // no-warning
-}
-
-void mempcpy13() {
-  char a[4] = {0};
-  mempcpy(a, 0, 0); // no-warning
-}
-
-void mempcpy_unknown_size_warn (size_t n) {
-  char a[4];
-  void *result = mempcpy(a, 0, n); // expected-warning{{Null pointer argument in call to memory copy function}}
-  clang_analyzer_eval(result == a); // no-warning (above is fatal)
-}
-
-void mempcpy_unknownable_size (char *src, float n) {
-  char a[4];
-  // This used to crash because we don't model floats.
-  mempcpy(a, src, (size_t)n);
-}
-
-//===----------------------------------------------------------------------===
-// memmove()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __memmove_chk BUILTIN(__memmove_chk)
-void *__memmove_chk(void *s1, const void *s2, size_t n, size_t destlen);
-
-#define memmove(a,b,c) __memmove_chk(a,b,c,(size_t)-1)
-
-#else /* VARIANT */
-
-#define memmove BUILTIN(memmove)
-void *memmove(void *s1, const void *s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void memmove0 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[4] = {0};
-
-  memmove(dst, src, 4); // no-warning
-
-  clang_analyzer_eval(memmove(dst, src, 4) == dst); // expected-warning{{TRUE}}
-
-  // If we actually model the copy, we can make this known.
-  // The important thing for now is that the old value has been invalidated.
-  clang_analyzer_eval(dst[0] != 0); // expected-warning{{UNKNOWN}}
-}
-
-void memmove1 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[10];
-
-  memmove(dst, src, 5); // expected-warning{{out-of-bound}}
-}
-
-void memmove2 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[1];
-
-  memmove(dst, src, 4); // expected-warning{{overflow}}
-}
-
-//===----------------------------------------------------------------------===
-// memcmp()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define bcmp BUILTIN(bcmp)
-// __builtin_bcmp is not defined with const in Builtins.def.
-int bcmp(/*const*/ void *s1, /*const*/ void *s2, size_t n);
-#define memcmp bcmp
-// 
-#else /* VARIANT */
-
-#define memcmp BUILTIN(memcmp)
-int memcmp(const void *s1, const void *s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void memcmp0 () {
-  char a[] = {1, 2, 3, 4};
-  char b[4] = { 0 };
-
-  memcmp(a, b, 4); // no-warning
-}
-
-void memcmp1 () {
-  char a[] = {1, 2, 3, 4};
-  char b[10] = { 0 };
-
-  memcmp(a, b, 5); // expected-warning{{out-of-bound}}
-}
-
-void memcmp2 () {
-  char a[] = {1, 2, 3, 4};
-  char b[1] = { 0 };
-
-  memcmp(a, b, 4); // expected-warning{{out-of-bound}}
-}
-
-void memcmp3 () {
-  char a[] = {1, 2, 3, 4};
-
-  clang_analyzer_eval(memcmp(a, a, 4) == 0); // expected-warning{{TRUE}}
-}
-
-void memcmp4 (char *input) {
-  char a[] = {1, 2, 3, 4};
-
-  clang_analyzer_eval(memcmp(a, input, 4) == 0); // expected-warning{{UNKNOWN}}
-}
-
-void memcmp5 (char *input) {
-  char a[] = {1, 2, 3, 4};
-
-  clang_analyzer_eval(memcmp(a, 0, 0) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(memcmp(0, a, 0) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(memcmp(a, input, 0) == 0); // expected-warning{{TRUE}}
-}
-
-void memcmp6 (char *a, char *b, size_t n) {
-  int result = memcmp(a, b, n);
-  if (result != 0)
-    clang_analyzer_eval(n != 0); // expected-warning{{TRUE}}
-  // else
-  //   analyzer_assert_unknown(n == 0);
-
-  // We can't do the above comparison because n has already been constrained.
-  // On one path n == 0, on the other n != 0.
-}
-
-int memcmp7 (char *a, size_t x, size_t y, size_t n) {
-  // We used to crash when either of the arguments was unknown.
-  return memcmp(a, &a[x*y], n) +
-         memcmp(&a[x*y], a, n);
-}
-
-//===----------------------------------------------------------------------===
-// bcopy()
-//===----------------------------------------------------------------------===
-
-#define bcopy BUILTIN(bcopy)
-// __builtin_bcopy is not defined with const in Builtins.def.
-void bcopy(/*const*/ void *s1, void *s2, size_t n);
-
-
-void bcopy0 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[4] = {0};
-
-  bcopy(src, dst, 4); // no-warning
-
-  // If we actually model the copy, we can make this known.
-  // The important thing for now is that the old value has been invalidated.
-  clang_analyzer_eval(dst[0] != 0); // expected-warning{{UNKNOWN}}
-}
-
-void bcopy1 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[10];
-
-  bcopy(src, dst, 5); // expected-warning{{out-of-bound}}
-}
-
-void bcopy2 () {
-  char src[] = {1, 2, 3, 4};
-  char dst[1];
-
-  bcopy(src, dst, 4); // expected-warning{{overflow}}
-}
-
-void *malloc(size_t);
-void free(void *);
-char radar_11125445_memcopythenlogfirstbyte(const char *input, size_t length) {
-  char *bytes = malloc(sizeof(char) * (length + 1));
-  memcpy(bytes, input, length);
-  char x = bytes[0]; // no warning
-  free(bytes);
-  return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/call-invalidation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/call-invalidation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/call-invalidation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(bool);
-
-void usePointer(int * const *);
-void useReference(int * const &);
-
-void testPointer() {
-  int x;
-  int *p;
-
-  p = &x;
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-  usePointer(&p);
-  clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-
-  p = &x;
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-  useReference(p);
-  clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-
-  int * const cp1 = &x;
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-  usePointer(&cp1);
-  clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-
-  int * const cp2 = &x;
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-  useReference(cp2);
-  clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-}
-
-
-struct Wrapper {
-  int *ptr;
-};
-
-void useStruct(Wrapper &w);
-void useConstStruct(const Wrapper &w);
-
-void testPointerStruct() {
-  int x;
-  Wrapper w;
-
-  w.ptr = &x;
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-  useStruct(w);
-  clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-
-  w.ptr = &x;
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-  useConstStruct(w);
-  clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-}
-
-
-struct RefWrapper {
-  int &ref;
-};
-
-void useStruct(RefWrapper &w);
-void useConstStruct(const RefWrapper &w);
-
-void testReferenceStruct() {
-  int x;
-  RefWrapper w = { x };
-
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-  useStruct(w);
-  clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-}
-
-// FIXME: This test is split into two functions because region invalidation
-// does not preserve reference bindings. <rdar://problem/13320347>
-void testConstReferenceStruct() {
-  int x;
-  RefWrapper w = { x };
-
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-  useConstStruct(w);
-  clang_analyzer_eval(x == 42); // expected-warning{{UNKNOWN}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/casts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/casts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/casts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,119 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify %s
-
-extern void clang_analyzer_eval(_Bool);
-
-// Test if the 'storage' region gets properly initialized after it is cast to
-// 'struct sockaddr *'. 
-
-typedef unsigned char __uint8_t;
-typedef unsigned int __uint32_t;
-typedef __uint32_t __darwin_socklen_t;
-typedef __uint8_t sa_family_t;
-typedef __darwin_socklen_t socklen_t;
-struct sockaddr { sa_family_t sa_family; };
-struct sockaddr_storage {};
-
-void getsockname();
-
-void f(int sock) {
-  struct sockaddr_storage storage;
-  struct sockaddr* sockaddr = (struct sockaddr*)&storage;
-  socklen_t addrlen = sizeof(storage);
-  getsockname(sock, sockaddr, &addrlen);
-  switch (sockaddr->sa_family) { // no-warning
-  default:
-    ;
-  }
-}
-
-struct s {
-  struct s *value;
-};
-
-void f1(struct s **pval) {
-  int *tbool = ((void*)0);
-  struct s *t = *pval;
-  pval = &(t->value);
-  tbool = (int *)pval; // use the cast-to type 'int *' to create element region.
-  char c = (unsigned char) *tbool; // Should use cast-to type to create symbol.
-  if (*tbool == -1) // here load the element region with the correct type 'int'
-    (void)3;
-}
-
-void f2(const char *str) {
- unsigned char ch, cl, *p;
-
- p = (unsigned char *)str;
- ch = *p++; // use cast-to type 'unsigned char' to create element region.
- cl = *p++;
- if(!cl)
-    cl = 'a';
-}
-
-// Test cast VariableSizeArray to pointer does not crash.
-void *memcpy(void *, void const *, unsigned long);
-typedef unsigned char Byte;
-void doit(char *data, int len) {
-    if (len) {
-        Byte buf[len];
-        memcpy(buf, data, len);
-    }
-}
-
-// PR 6013 and 6035 - Test that a cast of a pointer to long and then to int does not crash SValuator.
-void pr6013_6035_test(void *p) {
-  unsigned int foo;
-  foo = ((long)(p));
-  (void) foo;
-}
-
-// PR12511 and radar://11215362 - Test that we support SymCastExpr, which represents symbolic int to float cast.
-char ttt(int intSeconds) {
-  double seconds = intSeconds;
-  if (seconds)
-    return 0;
-  return 0;
-}
-
-int foo (int* p) {
-  int y = 0;
-  if (p == 0) {
-    if ((*((void**)&p)) == (void*)0) // Test that the cast to void preserves the symbolic region.
-      return 0;
-    else
-      return 5/y; // This code should be unreachable: no-warning.
-  }
-  return 0;
-}
-
-void castsToBool() {
-  clang_analyzer_eval(0); // expected-warning{{FALSE}}
-  clang_analyzer_eval(0U); // expected-warning{{FALSE}}
-  clang_analyzer_eval((void *)0); // expected-warning{{FALSE}}
-
-  clang_analyzer_eval(1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(1U); // expected-warning{{TRUE}}
-  clang_analyzer_eval(-1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(0x100); // expected-warning{{TRUE}}
-  clang_analyzer_eval(0x100U); // expected-warning{{TRUE}}
-  clang_analyzer_eval((void *)0x100); // expected-warning{{TRUE}}
-
-  extern int symbolicInt;
-  clang_analyzer_eval(symbolicInt); // expected-warning{{UNKNOWN}}
-  if (symbolicInt)
-    clang_analyzer_eval(symbolicInt); // expected-warning{{TRUE}}
-
-  extern void *symbolicPointer;
-  clang_analyzer_eval(symbolicPointer); // expected-warning{{UNKNOWN}}
-  if (symbolicPointer)
-    clang_analyzer_eval(symbolicPointer); // expected-warning{{TRUE}}
-
-  int localInt;
-  clang_analyzer_eval(&localInt); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&castsToBool); // expected-warning{{TRUE}}
-  clang_analyzer_eval("abc"); // expected-warning{{TRUE}}
-
-  extern float globalFloat;
-  clang_analyzer_eval(globalFloat); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/casts.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/casts.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/casts.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-// Test function pointer casts.  Currently we track function addresses using
-// loc::FunctionVal.  Because casts can be arbitrary, do we need to model
-// functions with regions?
-typedef void* (*MyFuncTest1)(void);
-
-MyFuncTest1 test1_aux(void);
-void test1(void) {
-  void *x;
-  void* (*p)(void);
-  p = ((void*) test1_aux());
-  if (p != ((void*) 0)) x = (*p)();
-}
-
-// Test casts from void* to function pointers.  Same issue as above:
-// should we eventually model function pointers using regions?
-void* test2(void *p) {
-  MyFuncTest1 fp = (MyFuncTest1) p;
-  return (*fp)();
-}
-
-// <radar://10087620>
-// A cast from int onjective C property reference to int.
-typedef signed char BOOL;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {} - (id)init; @end
-typedef enum {
-  EEOne,
-  EETwo
-} RDR10087620Enum;
- at interface RDR10087620 : NSObject {
-  RDR10087620Enum   elem;
-}
- at property (readwrite, nonatomic) RDR10087620Enum elem;
- at end
-
-static void
-adium_media_ready_cb(RDR10087620 *InObj)
-{
-  InObj.elem |= EEOne;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cfg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cfg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cfg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -analyze -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s
-// Check the wrapping behavior when dumping the CFG.
-
-// CHECK: ENTRY
-// CHECK-NEXT: Succs (1): B1
-// CHECK: [B1]
-// CHECK: Succs (21): B2 B3 B4 B5 B6 B7 B8 B9
-// CHECK: B10 B11 B12 B13 B14 B15 B16 B17 B18 B19
-// CHECK: B20 B21 B0
-// CHECK: [B0 (EXIT)]
-// CHECK-NEXT: Preds (21): B2 B3 B4 B5 B6 B7 B8 B9
-// CHECK-NEXT: B10 B11 B12 B13 B14 B15 B16 B17 B18 B19
-// CHECK-NEXT: B20 B21 B1
-void test(int i) {
-  switch(i) {
-    case 0: break;
-    case 1: break;
-    case 2: break;
-    case 3: break;
-    case 4: break;
-    case 5: break;
-    case 6: break;
-    case 7: break;
-    case 8: break;
-    case 9: break;
-    case 10: break;
-    case 11: break;
-    case 12: break;
-    case 13: break;
-    case 14: break;
-    case 15: break;
-    case 16: break;
-    case 17: break;
-    case 18: break;
-    case 19: break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cfref_PR2519.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cfref_PR2519.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cfref_PR2519.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-constraints=range -verify %s
-// expected-no-diagnostics
-
-typedef unsigned char Boolean;
-typedef signed long CFIndex;
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-typedef struct {} CFAllocatorContext;
-extern void CFRelease(CFTypeRef cf);
-typedef struct {}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-extern CFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-enum { kCFNumberSInt8Type = 1,     kCFNumberSInt16Type = 2,     kCFNumberSInt32Type = 3,     kCFNumberSInt64Type = 4,     kCFNumberFloat32Type = 5,     kCFNumberFloat64Type = 6,      kCFNumberCharType = 7,     kCFNumberShortType = 8,     kCFNumberIntType = 9,     kCFNumberLongType = 10,     kCFNumberLongLongType = 11,     kCFNumberFloatType = 12,     kCFNumberDoubleType = 13,      kCFNumberCFIndexType = 14,      kCFNumberNSIntegerType = 15,     kCFNumberCGFloatType = 16,     kCFNumberMaxType = 16    };
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef struct __CFNotificationCenter * CFNotificationCenterRef;
-extern CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);
-extern void CFNotificationCenterPostNotification(CFNotificationCenterRef center, CFStringRef name, const void *object, CFDictionaryRef userInfo, Boolean deliverImmediately);
-
-// This test case was reported in PR2519 as a false positive (_value was
-// reported as being leaked).
-
-int main(int argc, char **argv) {
- CFStringRef _key = ((CFStringRef) __builtin___CFStringMakeConstantString ("" "Process identifier" ""));
- int pid = 42;
-
- CFNumberRef _value = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &pid);
- CFDictionaryRef userInfo = CFDictionaryCreate(kCFAllocatorDefault, (const void **)&_key, (const void **)&_value, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
- CFRelease(_value); // no-warning
- CFNotificationCenterPostNotification(CFNotificationCenterGetDistributedCenter(),
-           ((CFStringRef) __builtin___CFStringMakeConstantString ("" "GrowlPreferencesChanged" "")),
-           ((CFStringRef) __builtin___CFStringMakeConstantString ("" "GrowlUserDefaults" "")),
-           userInfo, 0);
- CFRelease(userInfo); // no-warning
-
- return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cfref_rdar6080742.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cfref_rdar6080742.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cfref_rdar6080742.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -analyzer-constraints=range -verify %s
-// expected-no-diagnostics
-
-// This test case was reported in <rdar:problem/6080742>.
-// It tests path-sensitivity with respect to '!(cfstring != 0)' (negation of inequality).
-
-int printf(const char *restrict,...);
-typedef unsigned long UInt32;
-typedef signed long SInt32;
-typedef SInt32  OSStatus;
-typedef unsigned char Boolean;
-enum { noErr = 0};
-typedef const void *CFTypeRef;
-typedef const struct __CFString *CFStringRef;
-typedef const struct __CFAllocator *CFAllocatorRef;
-extern void     CFRelease(CFTypeRef cf);
-typedef UInt32  CFStringEncoding;
-enum { kCFStringEncodingMacRoman = 0, kCFStringEncodingWindowsLatin1 = 0x0500,
-       kCFStringEncodingISOLatin1 = 0x0201, kCFStringEncodingNextStepLatin = 0x0B01,
-       kCFStringEncodingASCII = 0x0600, kCFStringEncodingUnicode = 0x0100,
-       kCFStringEncodingUTF8 = 0x08000100, kCFStringEncodingNonLossyASCII = 0x0BFF,
-       kCFStringEncodingUTF16 = 0x0100, kCFStringEncodingUTF16BE = 0x10000100,
-       kCFStringEncodingUTF16LE = 0x14000100, kCFStringEncodingUTF32 = 0x0c000100,
-       kCFStringEncodingUTF32BE = 0x18000100, kCFStringEncodingUTF32LE = 0x1c000100};
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-
-enum { memROZWarn = -99, memROZError = -99, memROZErr = -99, memFullErr = -108,
-       nilHandleErr = -109, memWZErr = -111, memPurErr = -112, memAdrErr = -110,
-       memAZErr = -113, memPCErr = -114, memBCErr = -115, memSCErr = -116, memLockedErr = -117};
-
-#define DEBUG1
-
-void            DebugStop(const char *format,...);
-void            DebugTraceIf(unsigned int condition, const char *format,...);
-Boolean         DebugDisplayOSStatusMsg(OSStatus status, const char *statusStr, const char *fileName, unsigned long lineNumber);
-
-#define Assert(condition)if (!(condition)) { DebugStop("Assertion failure: %s [File: %s, Line: %lu]", #condition, __FILE__, __LINE__); }
-#define AssertMsg(condition, message)if (!(condition)) { DebugStop("Assertion failure: %s (%s) [File: %s, Line: %lu]", #condition, message, __FILE__, __LINE__); }
-#define Require(condition)if (!(condition)) { DebugStop("Assertion failure: %s [File: %s, Line: %lu]", #condition, __FILE__, __LINE__); }
-#define RequireAction(condition, action)if (!(condition)) { DebugStop("Assertion failure: %s [File: %s, Line: %lu]", #condition, __FILE__, __LINE__); action }
-#define RequireActionSilent(condition, action)if (!(condition)) { action }
-#define AssertNoErr(err){ DebugDisplayOSStatusMsg((err), #err, __FILE__, __LINE__); }
-#define RequireNoErr(err, action){ if( DebugDisplayOSStatusMsg((err), #err, __FILE__, __LINE__) ) { action }}
-
-void DebugStop(const char *format,...); /* Not an abort function. */
-
-int main(int argc, char *argv[]) {
-  CFStringRef     cfString;
-  OSStatus        status = noErr;
-  cfString = CFStringCreateWithCString(0, "hello", kCFStringEncodingUTF8);
-  RequireAction(cfString != 0, return memFullErr;) //no - warning
-    printf("cfstring %p\n", cfString);
-  Exit:
-  CFRelease(cfString);
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/check-deserialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/check-deserialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/check-deserialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -error-on-deserialized-decl S1_method -include-pch %t -analyze -analyzer-checker=core %s
-// RUN: %clang_cc1 -include-pch %t -analyze -analyzer-checker=core -verify %s
-
-#ifndef HEADER
-#define HEADER
-// Header.
-
-void S1_method(); // This should not be deserialized.
-
-
-#else
-// Using the header.
-
-int test() {
-  int x = 0;
-  return 5/x; //expected-warning {{Division by zero}}
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/chroot.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/chroot.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/chroot.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.unix.Chroot -analyzer-store region -verify %s
-
-extern int chroot(const char* path);
-extern int chdir(const char* path);
-
-void foo(void) {
-}
-
-void f1(void) {
-  chroot("/usr/local"); // root changed.
-  foo(); // expected-warning {{No call of chdir("/") immediately after chroot}}
-}
-
-void f2(void) {
-  chroot("/usr/local"); // root changed.
-  chdir("/"); // enter the jail.
-  foo(); // no-warning
-}
-
-void f3(void) {
-  chroot("/usr/local"); // root changed.
-  chdir("../"); // change working directory, still out of jail.
-  foo(); // expected-warning {{No call of chdir("/") immediately after chroot}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/comparison-implicit-casts.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/comparison-implicit-casts.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/comparison-implicit-casts.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.cstring,debug.ExprInspection -analyzer-constraints=range -triple i386-apple-darwin9 -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.cstring,debug.ExprInspection -analyzer-constraints=range -triple x86_64-apple-darwin9 -verify %s
-
-// This file runs in C++ mode so that the comparison type is 'bool', not 'int'.
-void clang_analyzer_eval(int);
-typedef typeof(sizeof(int)) size_t;
-
-// PR12206/12510 - When SimpleSValBuilder figures out that a symbol is fully
-// constrained, it should cast the value to the result type in a binary
-// operation...unless the binary operation is a comparison, in which case the
-// two arguments should be the same type, but won't match the result type.
-//
-// This is not directly related to additive folding, but we use SValBuilder's
-// additive folding to tickle the bug. ExprEngine will simplify fully-constrained
-// symbols, so SValBuilder will only see them if they are (a) part of an evaluated
-// SymExpr (e.g. with additive folding) or (b) generated by a checker (e.g.
-// unix.cstring's strlen() modelling).
-void PR12206(int x) {
-  size_t comparisonSize = sizeof(1 == 1);
-
-  // Sanity check. This test is useless if size_t isn't bigger than bool.
-  clang_analyzer_eval(sizeof(size_t) > comparisonSize); // expected-warning{{TRUE}}
-
-  // Build a SymIntExpr, dependent on x.
-  int local = x - 1;
-
-  // Create a value that requires more bits to store than a comparison result.
-  int value = 1;
-  value <<= 8 * comparisonSize;
-  value += 1;
-
-  // Constrain the value of x.
-  if (x != value) return;
-
-  // Constant-folding will turn (local+1) back into the symbol for x.
-  // The point of this dance is to make SValBuilder be responsible for
-  // turning the symbol into a ConcreteInt, rather than ExprEngine.
-
-  // Test relational operators.
-  clang_analyzer_eval((local + 1) >= 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(2 <= (local + 1)); // expected-warning{{TRUE}}
-
-  // Test equality operators.
-  clang_analyzer_eval((local + 1) != 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(1 != (local + 1)); // expected-warning{{TRUE}}
-}
-
-void PR12206_truncation(signed char x) {
-  // Build a SymIntExpr, dependent on x.
-  signed char local = x - 1;
-
-  // Constrain the value of x.
-  if (x != 1) return;
-
-  // Constant-folding will turn (local+1) back into the symbol for x.
-  // The point of this dance is to make SValBuilder be responsible for
-  // turning the symbol into a ConcreteInt, rather than ExprEngine.
-
-  // Construct a value that cannot be represented by 'char',
-  // but that has the same lower bits as x.
-  signed int value = 1 + (1 << 8);
-
-  // Test relational operators.
-  clang_analyzer_eval((local + 1) < value); // expected-warning{{TRUE}}
-  clang_analyzer_eval(value > (local + 1)); // expected-warning{{TRUE}}
-
-  // Test equality operators.
-  clang_analyzer_eval((local + 1) != value); // expected-warning{{TRUE}}
-  clang_analyzer_eval(value != (local + 1)); // expected-warning{{TRUE}}
-}
-
-// This test is insurance in case we significantly change how SymExprs are
-// evaluated.
-size_t strlen(const char *s);
-void PR12206_strlen(const char *x) {
-  size_t comparisonSize = sizeof(1 == 1);
-
-  // Sanity check. This test is useless if size_t isn't bigger than bool.
-  clang_analyzer_eval(sizeof(size_t) > comparisonSize); // expected-warning{{TRUE}}
-
-  // Create a value that requires more bits to store than a comparison result.
-  size_t value = 1UL;
-  value <<= 8 * comparisonSize;
-  value += 1;
-
-  // Constrain the length of x.
-  if (strlen(x) != value) return;
-
-  // Test relational operators.
-  clang_analyzer_eval(strlen(x) >= 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(2 <= strlen(x)); // expected-warning{{TRUE}}
-
-  // Test equality operators.
-  clang_analyzer_eval(strlen(x) != 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(1 != strlen(x)); // expected-warning{{TRUE}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/complex-init-list.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/complex-init-list.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/complex-init-list.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -verify %s
-// expected-no-diagnostics
-
-// Do not crash on initialization to complex numbers.
-void init_complex() {
-  _Complex float valid1 = { 0.0f, 0.0f };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/complex.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/complex.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/complex.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -analyzer-constraints=range -verify -Wno-unreachable-code -ffreestanding %s
-
-#include <stdint.h>
-
-void f1(int * p) {
-  
-  // This branch should be infeasible
-  // because __imag__ p is 0.
-  if (!p && __imag__ (intptr_t) p)
-    *p = 1; // no-warning
-
-  // If p != 0 then this branch is feasible; otherwise it is not.
-  if (__real__ (intptr_t) p)
-    *p = 1; // no-warning
-    
-  *p = 2; // expected-warning{{Dereference of null pointer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/concrete-address.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/concrete-address.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/concrete-address.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-void foo() {
-  int *p = (int*) 0x10000; // Should not crash here.
-  *p = 3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/conditional-operator-path-notes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/conditional-operator-path-notes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/conditional-operator-path-notes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1083 +0,0 @@
-// RUN: %clang --analyze %s -Xanalyzer -analyzer-output=text -Xclang -verify
-// RUN: %clang --analyze %s -o %t
-// RUN: FileCheck --input-file=%t %s
-
-void testCondOp(int *p) {
-  int *x = p ? p : p;
-  // expected-note at -1 {{Assuming 'p' is null}}
-  // expected-note at -2 {{'?' condition is false}}
-  // expected-note at -3 {{'x' initialized to a null pointer value}}
-  *x = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-void testCondProblem(int *p) {
-  if (p) return;
-  // expected-note at -1 {{Assuming 'p' is null}}
-  // expected-note at -2 {{Taking false branch}}
-
-  int x = *p ? 0 : 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'p')}}
-  (void)x;
-}
-
-void testLHSProblem(int *p) {
-  int x = !p ? *p : 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
-  // expected-note at -1 {{Assuming 'p' is null}}
-  // expected-note at -2 {{'?' condition is true}}
-  // expected-note at -3 {{Dereference of null pointer (loaded from variable 'p')}}
-  (void)x;
-}
-
-void testRHSProblem(int *p) {
-  int x = p ? 1 : *p; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
-  // expected-note at -1 {{Assuming 'p' is null}}
-  // expected-note at -2 {{'?' condition is false}}
-  // expected-note at -3 {{Dereference of null pointer (loaded from variable 'p')}}
-  (void)x;
-}
-
-void testBinaryCondOp(int *p) {
-  int *x = p ?: p;
-  // expected-note at -1 {{'?' condition is false}}
-  // expected-note at -2 {{'x' initialized to a null pointer value}}
-  *x = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-void testBinaryLHSProblem(int *p) {
-  if (p) return;
-  // expected-note at -1 {{Assuming 'p' is null}}
-  // expected-note at -2 {{Taking false branch}}
-
-  int x = *p ?: 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'p')}}
-  (void)x;
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>6</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>6</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'x' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'x' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>10</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>10</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>10</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testCondOp</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>10</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>15</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>19</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testCondProblem</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>19</integer>
-// CHECK-NEXT:    <key>col</key><integer>11</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>25</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>25</integer>
-// CHECK-NEXT:       <key>col</key><integer>16</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testLHSProblem</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>25</integer>
-// CHECK-NEXT:    <key>col</key><integer>16</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>33</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>33</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testRHSProblem</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>33</integer>
-// CHECK-NEXT:    <key>col</key><integer>19</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>41</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'x' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'x' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>44</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testBinaryCondOp</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>44</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>49</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>49</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>49</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>53</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>53</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>53</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testBinaryLHSProblem</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>53</integer>
-// CHECK-NEXT:    <key>col</key><integer>11</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/conditional-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/conditional-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/conditional-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang -cc1 -analyze -analyzer-checker=core,debug.ExprInspection %s -analyzer-output=text -verify
-
-void clang_analyzer_eval(bool);
-
-// Test that the analyzer does not crash on GNU extension operator "?:".
-void NoCrashTest(int x, int y) {
-	int w = x ?: y;
-}
-
-void OperatorEvaluationTest(int y) {
-  int x = 1;
-	int w = x ?: y;  // expected-note {{'?' condition is true}}
-	
-	// TODO: We are not precise when processing the "?:" operator in C++.
-  clang_analyzer_eval(w == 1); // expected-warning{{UNKNOWN}}
-                               // expected-note at -1{{UNKNOWN}}
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/constant-folding.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/constant-folding.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/constant-folding.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-// There should be no warnings unless otherwise indicated.
-
-void testComparisons (int a) {
-  // Sema can already catch the simple comparison a==a,
-  // since that's usually a logic error (and not path-dependent).
-  int b = a;
-  clang_analyzer_eval(b == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b >= a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b <= a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b != a); // expected-warning{{FALSE}}
-  clang_analyzer_eval(b > a); // expected-warning{{FALSE}}
-  clang_analyzer_eval(b < a); // expected-warning{{FALSE}}
-}
-
-void testSelfOperations (int a) {
-  clang_analyzer_eval((a|a) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a&a) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a^a) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a-a) == 0); // expected-warning{{TRUE}}
-}
-
-void testIdempotent (int a) {
-  clang_analyzer_eval((a*1) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a/1) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a+0) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a-0) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a<<0) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a>>0) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a^0) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a&(~0)) == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a|0) == a); // expected-warning{{TRUE}}
-}
-
-void testReductionToConstant (int a) {
-  clang_analyzer_eval((a*0) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a&0) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((a|(~0)) == (~0)); // expected-warning{{TRUE}}
-}
-
-void testSymmetricIntSymOperations (int a) {
-  clang_analyzer_eval((2+a) == (a+2)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((2*a) == (a*2)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((2&a) == (a&2)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((2^a) == (a^2)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((2|a) == (a|2)); // expected-warning{{TRUE}}
-}
-
-void testAsymmetricIntSymOperations (int a) {
-  clang_analyzer_eval(((~0) >> a) == (~0)); // expected-warning{{TRUE}}
-  clang_analyzer_eval((0 >> a) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((0 << a) == 0); // expected-warning{{TRUE}}
-
-  // Unsigned right shift shifts in zeroes.
-  clang_analyzer_eval(((~0U) >> a) != (~0U)); // expected-warning{{UNKNOWN}}
-}
-
-void testLocations (char *a) {
-  char *b = a;
-  clang_analyzer_eval(b == a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b >= a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b <= a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b != a); // expected-warning{{FALSE}}
-  clang_analyzer_eval(b > a); // expected-warning{{FALSE}}
-  clang_analyzer_eval(b < a); // expected-warning{{FALSE}}
-}
-
-void testMixedTypeComparisons (char a, unsigned long b) {
-  if (a != 0) return;
-  if (b != 0x100) return;
-
-  clang_analyzer_eval(a <= b); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b >= a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a != b); // expected-warning{{TRUE}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/coverage.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/coverage.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/coverage.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store=region -analyzer-max-loop 4 -verify %s
-#include "Inputs/system-header-simulator.h"
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-
-static int another_function(int *y) {
-  if (*y > 0)
-    return *y;
-  return 0;
-}
-
-static void function_which_doesnt_give_up(int **x) {
-   *x = 0;
-}
-
-static void function_which_gives_up(int *x) {
-  for (int i = 0; i < 5; ++i)
-    (*x)++;
-}
-
-static void function_which_gives_up_nested(int *x) {
-  function_which_gives_up(x);
-  for (int i = 0; i < 5; ++i)
-    (*x)++;
-}
-
-static void function_which_doesnt_give_up_nested(int *x, int *y) {
-  *y = another_function(x);
-  function_which_gives_up(x);
-}
-
-void coverage1(int *x) {
-  function_which_gives_up(x);
-  char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void coverage2(int *x) {
-  if (x) {
-    function_which_gives_up(x);
-    char *m = (char*)malloc(12);
-  }
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void coverage3(int *x) {
-  x++;
-  function_which_gives_up(x);
-  char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void coverage4(int *x) {
-  *x += another_function(x);
-  function_which_gives_up(x);
-  char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void coverage5(int *x) {
-  for (int i = 0; i<7; ++i)
-    function_which_gives_up(x);
-  // The root function gives up here.
-  char *m = (char*)malloc(12); // no-warning
-}
-
-void coverage6(int *x) {
-  for (int i = 0; i<3; ++i) {
-    function_which_gives_up(x);
-  }
-  char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-int coverage7_inline(int *i) {
-  function_which_doesnt_give_up(&i);
-  return *i; // expected-warning {{Dereference}}
-}
-
-void coverage8(int *x) {
-  int y;
-  function_which_doesnt_give_up_nested(x, &y);
-  y = (*x)/y;  // expected-warning {{Division by zero}}
-  char *m = (char*)malloc(12);
-} // expected-warning {{Potential leak of memory pointed to by 'm'}}
-
-void function_which_gives_up_settonull(int **x) {
-  *x = 0;
-  int y = 0;
-  for (int i = 0; i < 5; ++i)
-    y++;
-}
-
-void coverage9(int *x) {
-  int y = 5;
-  function_which_gives_up_settonull(&x);
-  y = (*x);  // no warning
-}
-
-static void empty_function(){
-}
-int use_empty_function(int x) {
-    x = 0;
-    empty_function();
-    return 5/x; //expected-warning {{Division by zero}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cstring-syntax-cxx.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cstring-syntax-cxx.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cstring-syntax-cxx.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=unix.cstring.BadSizeArg -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-// Ensure we don't crash on C++ declarations with special names.
-struct X {
-  X(int i): i(i) {}
-  int i;
-};
-
-X operator+(X a, X b) {
-  return X(a.i + b.i);
-}
-
-void test(X a, X b) {
-  X c = a + b;
-}
-
-// Ensure we don't crash on custom-defined strncat.
-char strncat ();
-int main () {
-  return strncat ();
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cstring-syntax.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cstring-syntax.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cstring-syntax.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=unix.cstring.BadSizeArg -analyzer-store=region -Wno-strncat-size -Wno-strlcpy-strlcat-size -Wno-sizeof-array-argument -Wno-sizeof-pointer-memaccess -verify %s
-
-typedef __SIZE_TYPE__ size_t;
-char  *strncat(char *, const char *, size_t);
-size_t strlen (const char *s);
-
-void testStrncat(const char *src) {
-  char dest[10];
-  strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest) - 1); // expected-warning {{Potential buffer overflow. Replace with 'sizeof(dest) - strlen(dest) - 1' or use a safer 'strlcat' API}}
-  strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest)); // expected-warning {{Potential buffer overflow. Replace with}}
-  strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest) - strlen(dest)); // expected-warning {{Potential buffer overflow. Replace with}}
-  strncat(dest, src, sizeof(src)); // expected-warning {{Potential buffer overflow. Replace with}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/ctor-inlining.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/ctor-inlining.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/ctor-inlining.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,502 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -fobjc-arc -analyzer-config c++-inlining=constructors -Wno-null-dereference -std=c++11 -verify %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-// A simplified version of std::move.
-template <typename T>
-T &&move(T &obj) {
-  return static_cast<T &&>(obj);
-}
-
-
-struct Wrapper {
-  __strong id obj;
-};
-
-void test() {
-  Wrapper w;
-  // force a diagnostic
-  *(char *)0 = 1; // expected-warning{{Dereference of null pointer}}
-}
-
-
-struct IntWrapper {
-  int x;
-};
-
-void testCopyConstructor() {
-  IntWrapper a;
-  a.x = 42;
-
-  IntWrapper b(a);
-  clang_analyzer_eval(b.x == 42); // expected-warning{{TRUE}}
-}
-
-struct NonPODIntWrapper {
-  int x;
-
-  virtual int get();
-};
-
-void testNonPODCopyConstructor() {
-  NonPODIntWrapper a;
-  a.x = 42;
-
-  NonPODIntWrapper b(a);
-  clang_analyzer_eval(b.x == 42); // expected-warning{{TRUE}}
-}
-
-
-namespace ConstructorVirtualCalls {
-  class A {
-  public:
-    int *out1, *out2, *out3;
-
-    virtual int get() { return 1; }
-
-    A(int *out1) {
-      *out1 = get();
-    }
-  };
-
-  class B : public A {
-  public:
-    virtual int get() { return 2; }
-
-    B(int *out1, int *out2) : A(out1) {
-      *out2 = get();
-    }
-  };
-
-  class C : public B {
-  public:
-    virtual int get() { return 3; }
-
-    C(int *out1, int *out2, int *out3) : B(out1, out2) {
-      *out3 = get();
-    }
-  };
-
-  void test() {
-    int a, b, c;
-
-    C obj(&a, &b, &c);
-    clang_analyzer_eval(a == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
-
-    clang_analyzer_eval(obj.get() == 3); // expected-warning{{TRUE}}
-
-    // Sanity check for devirtualization.
-    A *base = &obj;
-    clang_analyzer_eval(base->get() == 3); // expected-warning{{TRUE}}
-  }
-}
-
-namespace TemporaryConstructor {
-  class BoolWrapper {
-  public:
-    BoolWrapper() {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-      value = true;
-    }
-    bool value;
-  };
-
-  void test() {
-    // PR13717 - Don't crash when a CXXTemporaryObjectExpr is inlined.
-    if (BoolWrapper().value)
-      return;
-  }
-}
-
-
-namespace ConstructorUsedAsRValue {
-  using TemporaryConstructor::BoolWrapper;
-
-  bool extractValue(BoolWrapper b) {
-    return b.value;
-  }
-
-  void test() {
-    bool result = extractValue(BoolWrapper());
-    clang_analyzer_eval(result); // expected-warning{{TRUE}}
-  }
-}
-
-namespace PODUninitialized {
-  class POD {
-  public:
-    int x, y;
-  };
-
-  class PODWrapper {
-  public:
-    POD p;
-  };
-
-  class NonPOD {
-  public:
-    int x, y;
-
-    NonPOD() {}
-    NonPOD(const NonPOD &Other)
-      : x(Other.x), y(Other.y) // expected-warning {{undefined}}
-    {
-    }
-    NonPOD(NonPOD &&Other)
-    : x(Other.x), y(Other.y) // expected-warning {{undefined}}
-    {
-    }
-
-    NonPOD &operator=(const NonPOD &Other)
-    {
-      x = Other.x;
-      y = Other.y; // expected-warning {{undefined}}
-      return *this;
-    }
-    NonPOD &operator=(NonPOD &&Other)
-    {
-      x = Other.x;
-      y = Other.y; // expected-warning {{undefined}}
-      return *this;
-    }
-  };
-
-  class NonPODWrapper {
-  public:
-    class Inner {
-    public:
-      int x, y;
-
-      Inner() {}
-      Inner(const Inner &Other)
-        : x(Other.x), y(Other.y) // expected-warning {{undefined}}
-      {
-      }
-      Inner(Inner &&Other)
-      : x(Other.x), y(Other.y) // expected-warning {{undefined}}
-      {
-      }
-
-      Inner &operator=(const Inner &Other)
-      {
-        x = Other.x; // expected-warning {{undefined}}
-        y = Other.y;
-        return *this;
-      }
-      Inner &operator=(Inner &&Other)
-      {
-        x = Other.x; // expected-warning {{undefined}}
-        y = Other.y;
-        return *this;
-      }
-    };
-
-    Inner p;
-  };
-
-  void testPOD() {
-    POD p;
-    p.x = 1;
-    POD p2 = p; // no-warning
-    clang_analyzer_eval(p2.x == 1); // expected-warning{{TRUE}}
-    POD p3 = move(p); // no-warning
-    clang_analyzer_eval(p3.x == 1); // expected-warning{{TRUE}}
-
-    // Use rvalues as well.
-    clang_analyzer_eval(POD(p3).x == 1); // expected-warning{{TRUE}}
-
-    PODWrapper w;
-    w.p.y = 1;
-    PODWrapper w2 = w; // no-warning
-    clang_analyzer_eval(w2.p.y == 1); // expected-warning{{TRUE}}
-    PODWrapper w3 = move(w); // no-warning
-    clang_analyzer_eval(w3.p.y == 1); // expected-warning{{TRUE}}
-
-    // Use rvalues as well.
-    clang_analyzer_eval(PODWrapper(w3).p.y == 1); // expected-warning{{TRUE}}
-  }
-
-  void testNonPOD() {
-    NonPOD p;
-    p.x = 1;
-    NonPOD p2 = p;
-  }
-
-  void testNonPODMove() {
-    NonPOD p;
-    p.x = 1;
-    NonPOD p2 = move(p);
-  }
-
-  void testNonPODWrapper() {
-    NonPODWrapper w;
-    w.p.y = 1;
-    NonPODWrapper w2 = w;
-  }
-
-  void testNonPODWrapperMove() {
-    NonPODWrapper w;
-    w.p.y = 1;
-    NonPODWrapper w2 = move(w);
-  }
-
-  // Not strictly about constructors, but trivial assignment operators should
-  // essentially work the same way.
-  namespace AssignmentOperator {
-    void testPOD() {
-      POD p;
-      p.x = 1;
-      POD p2;
-      p2 = p; // no-warning
-      clang_analyzer_eval(p2.x == 1); // expected-warning{{TRUE}}
-      POD p3;
-      p3 = move(p); // no-warning
-      clang_analyzer_eval(p3.x == 1); // expected-warning{{TRUE}}
-
-      PODWrapper w;
-      w.p.y = 1;
-      PODWrapper w2;
-      w2 = w; // no-warning
-      clang_analyzer_eval(w2.p.y == 1); // expected-warning{{TRUE}}
-      PODWrapper w3;
-      w3 = move(w); // no-warning
-      clang_analyzer_eval(w3.p.y == 1); // expected-warning{{TRUE}}
-    }
-
-    void testReturnValue() {
-      POD p;
-      p.x = 1;
-      POD p2;
-      clang_analyzer_eval(&(p2 = p) == &p2); // expected-warning{{TRUE}}
-
-      PODWrapper w;
-      w.p.y = 1;
-      PODWrapper w2;
-      clang_analyzer_eval(&(w2 = w) == &w2); // expected-warning{{TRUE}}
-    }
-
-    void testNonPOD() {
-      NonPOD p;
-      p.x = 1;
-      NonPOD p2;
-      p2 = p;
-    }
-
-    void testNonPODMove() {
-      NonPOD p;
-      p.x = 1;
-      NonPOD p2;
-      p2 = move(p);
-    }
-
-    void testNonPODWrapper() {
-      NonPODWrapper w;
-      w.p.y = 1;
-      NonPODWrapper w2;
-      w2 = w;
-    }
-
-    void testNonPODWrapperMove() {
-      NonPODWrapper w;
-      w.p.y = 1;
-      NonPODWrapper w2;
-      w2 = move(w);
-    }
-  }
-}
-
-namespace ArrayMembers {
-  struct Primitive {
-    int values[3];
-  };
-
-  void testPrimitive() {
-    Primitive a = { { 1, 2, 3 } };
-
-    clang_analyzer_eval(a.values[0] == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1] == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[2] == 3); // expected-warning{{TRUE}}
-
-    Primitive b = a;
-
-    clang_analyzer_eval(b.values[0] == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.values[1] == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.values[2] == 3); // expected-warning{{TRUE}}
-
-    Primitive c;
-    c = b;
-
-    clang_analyzer_eval(c.values[0] == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c.values[1] == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c.values[2] == 3); // expected-warning{{TRUE}}
-  }
-
-  struct NestedPrimitive {
-    int values[2][3];
-  };
-
-  void testNestedPrimitive() {
-    NestedPrimitive a = { { { 0, 0, 0 }, { 1, 2, 3 } } };
-
-    clang_analyzer_eval(a.values[1][0] == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1][1] == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1][2] == 3); // expected-warning{{TRUE}}
-
-    NestedPrimitive b = a;
-
-    clang_analyzer_eval(b.values[1][0] == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.values[1][1] == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.values[1][2] == 3); // expected-warning{{TRUE}}
-
-    NestedPrimitive c;
-    c = b;
-
-    clang_analyzer_eval(c.values[1][0] == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c.values[1][1] == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c.values[1][2] == 3); // expected-warning{{TRUE}}
-  }
-
-  struct POD {
-    IntWrapper values[3];
-  };
-
-  void testPOD() {
-    POD a = { { { 1 }, { 2 }, { 3 } } };
-
-    clang_analyzer_eval(a.values[0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[2].x == 3); // expected-warning{{TRUE}}
-
-    POD b = a;
-
-    clang_analyzer_eval(b.values[0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.values[1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.values[2].x == 3); // expected-warning{{TRUE}}
-
-    POD c;
-    c = b;
-
-    clang_analyzer_eval(c.values[0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c.values[1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c.values[2].x == 3); // expected-warning{{TRUE}}
-  }
-
-  struct NestedPOD {
-    IntWrapper values[2][3];
-  };
-
-  void testNestedPOD() {
-    NestedPOD a = { { { { 0 }, { 0 }, { 0 } }, { { 1 }, { 2 }, { 3 } } } };
-
-    clang_analyzer_eval(a.values[1][0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1][1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1][2].x == 3); // expected-warning{{TRUE}}
-
-    NestedPOD b = a;
-
-    clang_analyzer_eval(b.values[1][0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.values[1][1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.values[1][2].x == 3); // expected-warning{{TRUE}}
-
-    NestedPOD c;
-    c = b;
-
-    clang_analyzer_eval(c.values[1][0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c.values[1][1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c.values[1][2].x == 3); // expected-warning{{TRUE}}
-  }
-
-  struct NonPOD {
-    NonPODIntWrapper values[3];
-  };
-
-  void testNonPOD() {
-    NonPOD a;
-    a.values[0].x = 1;
-    a.values[1].x = 2;
-    a.values[2].x = 3;
-
-    clang_analyzer_eval(a.values[0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[2].x == 3); // expected-warning{{TRUE}}
-
-    NonPOD b = a;
-
-    clang_analyzer_eval(b.values[0].x == 1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(b.values[1].x == 2); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(b.values[2].x == 3); // expected-warning{{UNKNOWN}}
-
-    NonPOD c;
-    c = b;
-
-    clang_analyzer_eval(c.values[0].x == 1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(c.values[1].x == 2); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(c.values[2].x == 3); // expected-warning{{UNKNOWN}}
-  }
-
-  struct NestedNonPOD {
-    NonPODIntWrapper values[2][3];
-  };
-
-  void testNestedNonPOD() {
-    NestedNonPOD a;
-    a.values[0][0].x = 0;
-    a.values[0][1].x = 0;
-    a.values[0][2].x = 0;
-    a.values[1][0].x = 1;
-    a.values[1][1].x = 2;
-    a.values[1][2].x = 3;
-
-    clang_analyzer_eval(a.values[1][0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1][1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1][2].x == 3); // expected-warning{{TRUE}}
-
-    NestedNonPOD b = a;
-
-    clang_analyzer_eval(b.values[1][0].x == 1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(b.values[1][1].x == 2); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(b.values[1][2].x == 3); // expected-warning{{UNKNOWN}}
-
-    NestedNonPOD c;
-    c = b;
-
-    clang_analyzer_eval(c.values[1][0].x == 1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(c.values[1][1].x == 2); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(c.values[1][2].x == 3); // expected-warning{{UNKNOWN}}
-  }
-  
-  struct NonPODDefaulted {
-    NonPODIntWrapper values[3];
-
-    NonPODDefaulted() = default;
-    NonPODDefaulted(const NonPODDefaulted &) = default;
-    NonPODDefaulted &operator=(const NonPODDefaulted &) = default;
-  };
-
-  void testNonPODDefaulted() {
-    NonPODDefaulted a;
-    a.values[0].x = 1;
-    a.values[1].x = 2;
-    a.values[2].x = 3;
-
-    clang_analyzer_eval(a.values[0].x == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[1].x == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(a.values[2].x == 3); // expected-warning{{TRUE}}
-
-    NonPODDefaulted b = a;
-
-    clang_analyzer_eval(b.values[0].x == 1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(b.values[1].x == 2); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(b.values[2].x == 3); // expected-warning{{UNKNOWN}}
-
-    NonPODDefaulted c;
-    c = b;
-
-    clang_analyzer_eval(c.values[0].x == 1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(c.values[1].x == 2); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(c.values[2].x == 3); // expected-warning{{UNKNOWN}}
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cxx-crashes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cxx-crashes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cxx-crashes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -verify %s
-// REQUIRES: LP64
-
-void clang_analyzer_eval(bool);
-
-int f1(char *dst) {
-  char *p = dst + 4;
-  char *q = dst + 3;
-  return !(q >= p);
-}
-
-long f2(char *c) {
-  return long(c) & 1;
-}
-
-bool f3() {
-  return !false;
-}
-
-void *f4(int* w) {
-  return reinterpret_cast<void*&>(w);
-}
-
-namespace {
-
-struct A { };
-struct B {
-  operator A() { return A(); }
-};
-
-A f(char *dst) {
-  B b;
-  return b;
-}
-
-}
-
-namespace {
-
-struct S {
-    void *p;
-};
-
-void *f(S* w) {
-    return &reinterpret_cast<void*&>(*w);
-}
-
-}
-
-namespace {
-
-struct C { 
-  void *p;
-  static void f();
-};
-
-void C::f() { }
-
-}
-
-
-void vla(int n) {
-  int nums[n];
-  nums[0] = 1;
-  clang_analyzer_eval(nums[0] == 1); // expected-warning{{TRUE}}
-  
-  // This used to fail with MallocChecker on, and /only/ in C++ mode.
-  // This struct is POD, though, so it should be fine to put it in a VLA.
-  struct { int x; } structs[n];
-  structs[0].x = 1;
-  clang_analyzer_eval(structs[0].x == 1); // expected-warning{{TRUE}}
-}
-
-void useIntArray(int []);
-void testIntArrayLiteral() {
-  useIntArray((int []){ 1, 2, 3 });
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cxx-for-range-cfg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cxx-for-range-cfg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cxx-for-range-cfg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -Wall -fsyntax-only %s -std=c++11 -verify
-
-// The rdar11671507_vector<int *>[]> would previously crash CFG construction
-// because of the temporary array of vectors.
-template <typename T>
-class rdar11671507_vector {
-public:
-  rdar11671507_vector();
-  ~rdar11671507_vector();
-  T *Base;
-  T *End;
-};
-
-void rdar11671507(rdar11671507_vector<int*> v, rdar11671507_vector<int*> w) {
-  for (auto &vec : (rdar11671507_vector<int *>[]){ v, w }) {} // expected-warning {{unused}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cxx-method-names.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cxx-method-names.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cxx-method-names.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix,osx,alpha.unix,alpha.security.taint -analyzer-store region -verify %s
-// expected-no-diagnostics
-
-class Evil {
-public:
-  void system(int); // taint checker
-  void malloc(void *); // taint checker, malloc checker
-  void free(); // malloc checker, keychain checker
-  void fopen(); // stream checker
-  void feof(int, int); // stream checker
-  void open(); // unix api checker
-};
-
-void test(Evil &E) {
-  // no warnings, no crashes
-  E.system(0);
-  E.malloc(0);
-  E.free();
-  E.fopen();
-  E.feof(0,1);
-  E.open();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/cxx11-crashes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/cxx11-crashes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/cxx11-crashes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -std=c++11 -verify %s
-// expected-no-diagnostics
-
-// radar://11485149, PR12871
-class PlotPoint {
-  bool valid;
-};
-
-PlotPoint limitedFit () {
-  PlotPoint fit0;
-  fit0 = limitedFit ();
-  return fit0;
-}
-
-// radar://11487541, NamespaceAlias
-namespace boost {namespace filesystem3 {
-class path {
-public:
- path(){}
-};
-
-}}
-namespace boost
-{
-  namespace filesystem
-  {
-    using filesystem3::path;
-  }
-}
-
-void radar11487541() {
-  namespace fs = boost::filesystem;
-  fs::path p;
-}
-
-// PR12873 radar://11499139
-void testFloatInitializer() {
-  const float ysize={0.015}, xsize={0.01};
-}
-
-
-// PR12874, radar://11487525
-template<class T> struct addr_impl_ref {
-  T & v_;
-  inline addr_impl_ref( T & v ): v_( v ) {
-  }
-  inline operator T& () const {return v_;}
-};
-template<class T> struct addressof_impl {
-  static inline T * f( T & v, long )     {
-    return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
-  }
-};
-template<class T> T * addressof( T & v ) {
-  return addressof_impl<T>::f( addr_impl_ref<T>( v ), 0 );
-}
-void testRadar11487525_1(){
-  bool s[25];
-  addressof(s);
-}
-
-// radar://11487525 Don't crash on CK_LValueBitCast.
-bool begin(double *it) {
-  typedef bool type[25];
-  bool *a = reinterpret_cast<type &>(*( reinterpret_cast<char *>( it )));
-  return *a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,571 +0,0 @@
-// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core,deadcode.DeadStores,alpha.deadcode.IdempotentOperations -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
-// RUN: %clang_cc1 -Wunused-variable -analyze -analyzer-checker=core,deadcode.DeadStores,alpha.deadcode.IdempotentOperations -analyzer-store=region -analyzer-constraints=range -fblocks -verify -Wno-unreachable-code -analyzer-opt-analyze-nested-blocks %s
-
-void f1() {
-  int k, y; // expected-warning{{unused variable 'k'}} expected-warning{{unused variable 'y'}}
-  int abc=1;
-  long idx=abc+3*5; // expected-warning {{never read}} expected-warning{{unused variable 'idx'}}
-}
-
-void f2(void *b) {
- char *c = (char*)b; // no-warning
- char *d = b+1; // expected-warning {{never read}} expected-warning{{unused variable 'd'}}
- printf("%s", c); // expected-warning{{implicitly declaring library function 'printf' with type 'int (const char *, ...)'}} \
- // expected-note{{please include the header <stdio.h> or explicitly provide a declaration for 'printf'}}
-}
-
-int f();
-
-void f3() {
-  int r;
-  if ((r = f()) != 0) { // no-warning
-    int y = r; // no-warning
-    printf("the error is: %d\n", y);
-  }
-}
-
-void f4(int k) {
-  
-  k = 1;
-  
-  if (k)
-    f1();
-    
-  k = 2;  // expected-warning {{never read}}
-}
-  
-void f5() {
-
-  int x = 4; // no-warning
-  int *p = &x; // expected-warning{{never read}} expected-warning{{unused variable 'p'}}
-
-}
-
-//
-int f6() {
-  
-  int x = 4;
-  ++x; // no-warning
-  return 1;
-}
-
-int f7(int *p) {  
-  // This is allowed for defensive programming.
-  p = 0; // no-warning  
-  return 1;
-}
-
-int f7b(int *p) {  
-  // This is allowed for defensive programming.
-  p = (0); // no-warning  
-  return 1;
-}
-
-int f7c(int *p) {  
-  // This is allowed for defensive programming.
-  p = (void*) 0; // no-warning  
-  return 1;
-}
-
-int f7d(int *p) {  
-  // This is allowed for defensive programming.
-  p = (void*) (0); // no-warning  
-  return 1;
-}
-
-// Don't warn for dead stores in nested expressions.  We have yet
-// to see a real bug in this scenario.
-int f8(int *p) {
-  extern int *baz();
-  if ((p = baz())) // no-warning
-    return 1;
-  return 0;
-}
-
-int f9() {
-  int x = 4;
-  x = x + 10; // expected-warning{{never read}}
-  return 1;
-}
-
-int f10() {
-  int x = 4;
-  x = 10 + x; // expected-warning{{never read}}
-  return 1;
-}
-
-int f11() {
-  int x = 4;
-  return x++; // expected-warning{{never read}}
-}
-
-int f11b() {
-  int x = 4;
-  return ((((++x)))); // no-warning
-}
-
-int f12a(int y) {
-  int x = y;  // expected-warning{{unused variable 'x'}}
-  return 1;
-}
-int f12b(int y) {
-  int x __attribute__((unused)) = y;  // no-warning
-  return 1;
-}
-int f12c(int y) {
-  // Allow initialiation of scalar variables by parameters as a form of
-  // defensive programming.
-  int x = y;  // no-warning
-  x = 1;
-  return x;
-}
-
-// Filed with PR 2630.  This code should produce no warnings.
-int f13(void)
-{
-  int a = 1;
-  int b, c = b = a + a;
-
-  if (b > 0)
-    return (0);
-
-  return (a + b + c);
-}
-
-// Filed with PR 2763.
-int f14(int count) {
-  int index, nextLineIndex;
-  for (index = 0; index < count; index = nextLineIndex+1) {
-    nextLineIndex = index+1;  // no-warning
-    continue;
-  }
-  return index;
-}
-
-// Test case for <rdar://problem/6248086>
-void f15(unsigned x, unsigned y) {
-  int count = x * y;   // no-warning
-  int z[count]; // expected-warning{{unused variable 'z'}}
-}
-
-// Don't warn for dead stores in nested expressions.  We have yet
-// to see a real bug in this scenario.
-int f16(int x) {
-  x = x * 2;
-  x = sizeof(int [x = (x || x + 1) * 2]) // expected-warning{{The left operand to '+' is always 0}} expected-warning{{The left operand to '*' is always 1}}
-      ? 5 : 8;
-  return x;
-}
-
-// Self-assignments should not be flagged as dead stores.
-void f17() {
-  int x = 1;
-  x = x;
-}
-
-// <rdar://problem/6506065>
-// The values of dead stores are only "consumed" in an enclosing expression
-// what that value is actually used.  In other words, don't say "Although the
-// value stored to 'x' is used...".
-int f18() {
-   int x = 0; // no-warning
-   if (1)
-      x = 10;  // expected-warning{{Value stored to 'x' is never read}}
-   while (1)
-      x = 10;  // expected-warning{{Value stored to 'x' is never read}}
-   // unreachable.
-   do
-      x = 10;   // no-warning
-   while (1);
-   return (x = 10); // no-warning
-}
-
-int f18_a() {
-   int x = 0; // no-warning
-   return (x = 10); // no-warning
-}
-
-void f18_b() {
-   int x = 0; // no-warning
-   if (1)
-      x = 10;  // expected-warning{{Value stored to 'x' is never read}}
-}
-
-void f18_c() {
-  int x = 0;
-  while (1)
-     x = 10;  // expected-warning{{Value stored to 'x' is never read}}
-}
-
-void f18_d() {
-  int x = 0; // no-warning
-  do
-     x = 10;   // expected-warning{{Value stored to 'x' is never read}}
-  while (1);
-}
-
-// PR 3514: false positive `dead initialization` warning for init to global
-//  http://llvm.org/bugs/show_bug.cgi?id=3514
-extern const int MyConstant;
-int f19(void) {
-  int x = MyConstant;  // no-warning
-  x = 1;
-  return x;
-}
-
-int f19b(void) { // This case is the same as f19.
-  const int MyConstant = 0;
-  int x = MyConstant; // no-warning
-  x = 1;
-  return x;  
-}
-
-void f20(void) {
-  int x = 1; // no-warning
-#pragma unused(x)
-}
-
-void halt() __attribute__((noreturn));
-int f21() {
-  int x = 4;
-  
-  x = x + 1; // expected-warning{{never read}}
-  if (1) {
-    halt();
-    (void)x;
-  }
-  return 1;
-}
-
-int j;
-void f22() {
-  int x = 4;
-  int y1 = 4;
-  int y2 = 4;
-  int y3 = 4;
-  int y4 = 4;
-  int y5 = 4;
-  int y6 = 4;
-  int y7 = 4;
-  int y8 = 4;
-  int y9 = 4;
-  int y10 = 4;
-  int y11 = 4;
-  int y12 = 4;
-  int y13 = 4;
-  int y14 = 4;
-  int y15 = 4;
-  int y16 = 4;
-  int y17 = 4;
-  int y18 = 4;
-  int y19 = 4;
-  int y20 = 4;
-
-  x = x + 1; // expected-warning{{never read}}
-  ++y1;
-  ++y2;
-  ++y3;
-  ++y4;
-  ++y5;
-  ++y6;
-  ++y7;
-  ++y8;
-  ++y9;
-  ++y10;
-  ++y11;
-  ++y12;
-  ++y13;
-  ++y14;
-  ++y15;
-  ++y16;
-  ++y17;
-  ++y18;
-  ++y19;
-  ++y20;
-
-  switch (j) {
-  case 1:
-    if (0)
-      (void)x;
-    if (1) {
-      (void)y1;
-      return;
-    }
-    (void)x;
-    break;
-  case 2:
-    if (0)
-      (void)x;
-    else {
-      (void)y2;
-      return;
-    }
-    (void)x;
-    break;
-  case 3:
-    if (1) {
-      (void)y3;
-      return;
-    } else
-      (void)x;
-    (void)x;
-  break;
-  case 4:
-    0 ? : ((void)y4, ({ return; }));
-    (void)x;
-    break;
-  case 5:
-    1 ? : (void)x;
-    0 ? (void)x : ((void)y5, ({ return; }));
-    (void)x;
-    break;
-  case 6:
-    1 ? ((void)y6, ({ return; })) : (void)x;
-    (void)x;
-    break;
-  case 7:
-    (void)(0 && x);
-    (void)y7;
-    (void)(0 || (y8, ({ return; }), 1));  // expected-warning {{expression result unused}}
-    (void)x;
-    break;
-  case 8:
-    (void)(1 && (y9, ({ return; }), 1));  // expected-warning {{expression result unused}}
-    (void)x;
-    break;
-  case 9:
-    (void)(1 || x);
-    (void)y10;
-    break;
-  case 10:
-    while (0) {
-      (void)x;
-    }
-    (void)y11;
-    break;
-  case 11:
-    while (1) {
-      (void)y12;
-    }
-    (void)x;
-    break;
-  case 12:
-    do {
-      (void)y13;
-    } while (0);
-    (void)y14;
-    break;
-  case 13:
-    do {
-      (void)y15;
-    } while (1);
-    (void)x;
-    break;
-  case 14:
-    for (;;) {
-      (void)y16;
-    }
-    (void)x;    
-    break;
-  case 15:
-    for (;1;) {
-      (void)y17;
-    }
-    (void)x;
-    break;
-  case 16:
-    for (;0;) {
-      (void)x;
-    }
-    (void)y18;
-    break;
-  case 17:
-    __builtin_choose_expr(0, (void)x, ((void)y19, ({ return; })));
-    (void)x;
-    break;
-  case 19:
-    __builtin_choose_expr(1, ((void)y20, ({ return; })), (void)x);
-    (void)x;
-    break;
-  }
-}
-
-void f23_aux(const char* s);
-void f23(int argc, char **argv) {
-  int shouldLog = (argc > 1); // no-warning
-  ^{ 
-     if (shouldLog) f23_aux("I did too use it!\n");
-     else f23_aux("I shouldn't log.  Wait.. d'oh!\n");
-  }();
-}
-
-void f23_pos(int argc, char **argv) {
-  int shouldLog = (argc > 1); // expected-warning{{Value stored to 'shouldLog' during its initialization is never read}} expected-warning{{unused variable 'shouldLog'}}
-  ^{ 
-     f23_aux("I did too use it!\n");
-  }();  
-}
-
-void f24_A(int y) {
-  // FIXME: One day this should be reported as dead since 'z = x + y' is dead.
-  int x = (y > 2); // no-warning
-  ^ {
-      int z = x + y; // expected-warning{{Value stored to 'z' during its initialization is never read}} expected-warning{{unused variable 'z'}}
-  }();  
-}
-
-void f24_B(int y) {
-  // FIXME: One day this should be reported as dead since 'x' is just overwritten.
-  __block int x = (y > 2); // no-warning
-  ^{
-    // FIXME: This should eventually be a dead store since it is never read either.
-    x = 5; // no-warning
-  }();
-}
-
-int f24_C(int y) {
-  // FIXME: One day this should be reported as dead since 'x' is just overwritten.
-  __block int x = (y > 2); // no-warning
-  ^{ 
-    x = 5; // no-warning
-  }();
-  return x;
-}
-
-int f24_D(int y) {
-  __block int x = (y > 2); // no-warning
-  ^{ 
-    if (y > 4)
-      x = 5; // no-warning
-  }();
-  return x;
-}
-
-// This example shows that writing to a variable captured by a block means that it might
-// not be dead.
-int f25(int y) {
-  __block int x = (y > 2);
-  __block int z = 0;
-  void (^foo)() = ^{ z = x + y; };
-  x = 4; // no-warning
-  foo();
-  return z; 
-}
-
-// This test is mostly the same as 'f25', but shows that the heuristic of pruning out dead
-// stores for variables that are just marked '__block' is overly conservative.
-int f25_b(int y) {
-  // FIXME: we should eventually report a dead store here.
-  __block int x = (y > 2);
-  __block int z = 0;
-  x = 4; // no-warning
-  return z; 
-}
-
-int f26_nestedblocks() {
-  int z;
-  z = 1;
-  __block int y = 0;
-  ^{
-    int k;
-    k = 1; // expected-warning{{Value stored to 'k' is never read}}
-    ^{
-        y = z + 1;
-     }();
-  }();
-  return y;
-}
-
-// The FOREACH macro in QT uses 'break' statements within statement expressions
-// placed within the increment code of for loops.
-void rdar8014335() {
-  for (int i = 0 ; i != 10 ; ({ break; })) {
-    for ( ; ; ({ ++i; break; })) ;
-    // Note that the next value stored to 'i' is never executed
-    // because the next statement to be executed is the 'break'
-    // in the increment code of the first loop.
-    i = i * 3; // expected-warning{{Value stored to 'i' is never read}} expected-warning{{The left operand to '*' is always 1}}
-  }
-}
-
-// <rdar://problem/8320674> NullStmts followed by do...while() can lead to disconnected CFG
-//
-// This previously caused bogus dead-stores warnings because the body of the first do...while was
-// disconnected from the entry of the function.
-typedef struct { float r; float i; } s_rdar8320674;
-typedef struct { s_rdar8320674 x[1]; } s2_rdar8320674;
-
-void rdar8320674(s_rdar8320674 *z, unsigned y, s2_rdar8320674 *st, int m)
-{
-    s_rdar8320674 * z2;
-    s_rdar8320674 * tw1 = st->x;
-    s_rdar8320674 t;
-    z2 = z + m;
-    do{
-        ; ;
-        do{ (t).r = (*z2).r*(*tw1).r - (*z2).i*(*tw1).i; (t).i = (*z2).r*(*tw1).i + (*z2).i*(*tw1).r; }while(0);
-        tw1 += y;
-        do { (*z2).r=(*z).r-(t).r; (*z2).i=(*z).i-(t).i; }while(0);
-        do { (*z).r += (t).r; (*z).i += (t).i; }while(0);
-        ++z2;
-        ++z;
-    }while (--m);
-}
-
-// Avoid dead stores resulting from an assignment (and use) being unreachable.
-void rdar8405222_aux(int i);
-void rdar8405222() {
-  const int show = 0;
-  int i = 0;
-    
-  if (show)
-      i = 5; // no-warning
-
-  if (show)
-    rdar8405222_aux(i);
-}
-
-// Look through chains of assignements, e.g.: int x = y = 0, when employing
-// silencing heuristics.
-int radar11185138_foo() {
-  int x, y;
-  x = y = 0; // expected-warning {{never read}}
-  return y;
-}
-
-int rdar11185138_bar() {
-  int y;
-  int x = y = 0; // no-warning
-  x = 2;
-  y = 2;
-  return x + y;
-}
-
-int *radar11185138_baz() {
-  int *x, *y;
-  x = y = 0; // no-warning
-  return y;
-}
-
-int getInt();
-int *getPtr();
-void testBOComma() {
-  int x0 = (getInt(), 0); // expected-warning{{unused variable 'x0'}}
-  int x1 = (getInt(), getInt()); // expected-warning {{Value stored to 'x1' during its initialization is never read}} // expected-warning{{unused variable 'x1'}}
-  int x2 = (getInt(), getInt(), getInt()); //expected-warning{{Value stored to 'x2' during its initialization is never read}} // expected-warning{{unused variable 'x2'}}
-  int x3;
-  x3 = (getInt(), getInt(), 0); // expected-warning{{Value stored to 'x3' is never read}}
-  int x4 = (getInt(), (getInt(), 0)); // expected-warning{{unused variable 'x4'}}
-  int y;
-  int x5 = (getInt(), (y = 0)); // expected-warning{{unused variable 'x5'}}
-  int x6 = (getInt(), (y = getInt())); //expected-warning {{Value stored to 'x6' during its initialization is never read}} // expected-warning{{unused variable 'x6'}}
-  int x7 = 0, x8 = getInt(); //expected-warning {{Value stored to 'x8' during its initialization is never read}} // expected-warning{{unused variable 'x8'}} // expected-warning{{unused variable 'x7'}}
-  int x9 = getInt(), x10 = 0; //expected-warning {{Value stored to 'x9' during its initialization is never read}} // expected-warning{{unused variable 'x9'}}  // expected-warning{{unused variable 'x10'}}
-  int m = getInt(), mm, mmm; //expected-warning {{Value stored to 'm' during its initialization is never read}} // expected-warning{{unused variable 'm'}} // expected-warning{{unused variable 'mm'}} // expected-warning{{unused variable 'mmm'}}
-  int n, nn = getInt(); //expected-warning {{Value stored to 'nn' during its initialization is never read}} // expected-warning{{unused variable 'n'}} // expected-warning{{unused variable 'nn'}}
-
-  int *p;
-  p = (getPtr(), (int *)0); // no warning
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,176 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -std=c++11 -analyze -analyzer-checker=deadcode.DeadStores -verify -Wno-unreachable-code %s
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -std=c++11 -analyze -analyzer-store=region -analyzer-constraints=range -analyzer-checker=deadcode.DeadStores -verify -Wno-unreachable-code %s
-
-//===----------------------------------------------------------------------===//
-// Basic dead store checking (but in C++ mode).
-//===----------------------------------------------------------------------===//
-
-int j;
-void test1() {
-  int x = 4;
-
-  x = x + 1; // expected-warning{{never read}}
-
-  switch (j) {
-  case 1:
-    throw 1;
-    (void)x;
-    break;
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// Dead store checking involving constructors.
-//===----------------------------------------------------------------------===//
-
-class Test2 {
-  int &x;
-public:
-  Test2(int &y) : x(y) {}
-  ~Test2() { ++x; }
-};
-
-int test2(int x) {
-  { Test2 a(x); } // no-warning
-  return x;
-}
-
-//===----------------------------------------------------------------------===//
-// Dead store checking involving CXXTemporaryExprs
-//===----------------------------------------------------------------------===//
-
-namespace TestTemp {
-  template<typename _Tp>
-  class pencil {
-  public:
-    ~pencil() throw() {}
-  };
-  template<typename _Tp, typename _Number2> struct _Row_base {
-    _Row_base(const pencil<_Tp>& x) {}
-  };
-  template<typename _Tp, typename _Number2 = TestTemp::pencil<_Tp> >
-  class row : protected _Row_base<_Tp, _Number2>     {
-    typedef _Row_base<_Tp, _Number2> _Base;
-    typedef _Number2 pencil_type;
-  public:
-    explicit row(const pencil_type& __a = pencil_type()) : _Base(__a) {}
-  };
-}
-
-void test2_b() {
-  TestTemp::row<const char*> x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Test references.
-//===----------------------------------------------------------------------===//
-
-void test3_a(int x) {
-   x = x + 1; // expected-warning{{never read}}
-}
-
-void test3_b(int &x) {
-  x = x + 1; // no-warninge
-}
-
-void test3_c(int x) {
-  int &y = x;
-  // Shows the limitation of dead stores tracking.  The write is really
-  // dead since the value cannot escape the function.
-  ++y; // no-warning
-}
-
-void test3_d(int &x) {
-  int &y = x;
-  ++y; // no-warning
-}
-
-void test3_e(int &x) {
-  int &y = x;
-}
-
-//===----------------------------------------------------------------------===//
-// Dead stores involving 'new'
-//===----------------------------------------------------------------------===//
-
-static void test_new(unsigned n) {
-  char **p = new char* [n]; // expected-warning{{never read}}
-}
-
-//===----------------------------------------------------------------------===//
-// Dead stores in namespaces.
-//===----------------------------------------------------------------------===//
-
-namespace foo {
-  int test_4(int x) {
-    x = 2; // expected-warning{{Value stored to 'x' is never read}}
-    x = 2;
-    return x;
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// Dead stores in with EH code.
-//===----------------------------------------------------------------------===//
-
-void test_5_Aux();
-int test_5() {
-  int x = 0;
-  try {
-    x = 2; // no-warning
-    test_5_Aux();
-  }
-  catch (int z) {
-    return x + z;
-  }
-  return 1;
-}
-
-
-int test_6_aux(unsigned x);
-
-void test_6() {
-  unsigned currDestLen = 0;  // no-warning
-  try {
-    while (test_6_aux(currDestLen)) {
-      currDestLen += 2; // no-warning
-    } 
-  }
-  catch (void *) {}
-}
-
-void test_6b() {
-  unsigned currDestLen = 0;  // no-warning
-  try {
-    while (test_6_aux(currDestLen)) {
-      currDestLen += 2; // expected-warning {{Value stored to 'currDestLen' is never read}}
-      break;
-    } 
-  }
-  catch (void *) {}
-}
-
-
-void testCXX11Using() {
-  using Int = int;
-  Int value;
-  value = 1; // expected-warning {{never read}}
-}
-
-//===----------------------------------------------------------------------===//
-// Dead stores in template instantiations (do not warn).
-//===----------------------------------------------------------------------===//
-
-template <bool f> int radar13213575_testit(int i) {
-  int x = 5+i; // warning: Value stored to 'x' during its initialization is never read
-  int y = 7;
-  if (f)
-    return x;
-  else
-    return y;
-}
-
-int radar_13213575() {
-  return radar13213575_testit<true>(5) + radar13213575_testit<false>(3);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/dead-stores.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core -analyzer-checker=deadcode.DeadStores,osx.cocoa.RetainCount -fblocks -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value; @end
-typedef float CGFloat;
-typedef struct _NSPoint {} NSRange;
- at interface NSValue (NSValueRangeExtensions)  + (NSValue *)valueWithRange:(NSRange)range;
-- (BOOL)containsObject:(id)anObject;
- at end
- at class NSURLAuthenticationChallenge;
- at interface NSResponder : NSObject <NSCoding> {} @end
- at class NSArray, NSDictionary, NSString;
- at interface NSObject (NSKeyValueBindingCreation)
-+ (void)exposeBinding:(NSString *)binding;
-- (NSArray *)exposedBindings;
- at end
-extern NSString *NSAlignmentBinding;
-
-// This test case was reported as a false positive due to a bug in the
-// LiveVariables <-> deadcode.DeadStores interplay.  We should not flag a warning
-// here.  The test case was reported in:
-//  http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-July/002157.html
-void DeadStoreTest(NSObject *anObject) {
-  NSArray *keys;
-  if ((keys = [anObject exposedBindings]) &&   // no-warning
-      ([keys containsObject:@"name"] && [keys containsObject:@"icon"])) {}
-}
-
-// This test case was a false positive due to how clang models
-// pointer types and ObjC object pointer types differently.  Here
-// we don't warn about a dead store because 'nil' is assigned to
-// an object pointer for the sake of defensive programming.
-void rdar_7631278(NSObject *x) {
-  x = ((void*)0);
-}
-
-// This test case issuing a bogus warning for the declaration of 'isExec'
-// because the compound statement for the @synchronized was being visited
-// twice by the LiveVariables analysis.
-BOOL baz_rdar8527823();
-void foo_rdar8527823();
- at interface RDar8527823
-- (void) bar_rbar8527823;
- at end
- at implementation RDar8527823
-- (void) bar_rbar8527823
-{
- @synchronized(self) {
-   BOOL isExec = baz_rdar8527823(); // no-warning
-   if (isExec) foo_rdar8527823();
- }
-}
- at end
-
-// Don't flag dead stores to assignments to self within a nested assignment.
- at interface Rdar7947686
-- (id) init;
- at end
-
- at interface Rdar7947686_B : Rdar7947686
-- (id) init;
- at end
-
- at implementation Rdar7947686_B
-- (id) init {
-  id x = (self = [super init]); // no-warning
-  return x;
-}
- at end
-
-// Don't flag dead stores when a variable is captured in a block used
-// by a property access.
- at interface RDar10591355
- at property (assign) int x;
- at end
-
-RDar10591355 *rdar10591355_aux();
-
-void rdar10591355() {
-  RDar10591355 *p = rdar10591355_aux();
-  ^{ (void) p.x; }();
-}
-
- at interface Radar11059352_1 {
- at private
-    int *_pathString;
-}
- at property int *pathString;
- at end
- at interface Radar11059352 {
- at private
-Radar11059352_1 *_Path;
-}
- at end
- at implementation Radar11059352
-
-- (int*)usePath {
-    Radar11059352_1 *xxxxx = _Path; // no warning
-    int *wp = xxxxx.pathString;
-    return wp;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/debug-CallGraph.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/debug-CallGraph.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/debug-CallGraph.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCallGraph %s -fblocks 2>&1 | FileCheck %s
-
-static void mmm(int y) {
-  if (y != 0)
-      y++;
-  y = y/y;
-}
-
-static int foo(int x, int y) {
-    mmm(y);
-    if (x != 0)
-      x++;
-    return 5/x;
-}
-
-void aaa() {
-  foo(1,2);
-}
-
-void bbb(int y) {
-  int x = (y > 2);
-  ^ {
-      foo(x, y);
-  }();
-}
-
-// CHECK:--- Call graph Dump ---
-// CHECK: Function: < root > calls: mmm foo aaa < > bbb
-// CHECK: Function: bbb calls: < >
-// CHECK: Function: < > calls: foo
-// CHECK: Function: aaa calls: foo
-// CHECK: Function: foo calls: mmm
-// CHECK: Function: mmm calls:

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/default-analyze.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/default-analyze.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/default-analyze.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang --analyze %s -o %t
-
-// Tests that some specific checkers are enabled by default.
-
-id foo(int x) {
-  id title;
-  switch (x) {
-  case 1:
-    title = @"foo"; // expected-warning {{never read}}
-  case 2:
-    title = @"bar";
-    break;
-  default:
-    title = "@baz";
-    break;
-  }
-  return title;
-}
-
-// <rdar://problem/8808566> Static analyzer is wrong: NSWidth(imgRect) not understood as unconditional assignment
-//
-// Note: this requires inlining support.  This previously issued a false positive use of
-// uninitialized value when calling NSWidth.
-typedef double CGFloat;
-
-struct CGPoint {
-  CGFloat x;
-  CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-
-struct CGSize {
-  CGFloat width;
-  CGFloat height;
-};
-typedef struct CGSize CGSize;
-
-struct CGRect {
-  CGPoint origin;
-  CGSize size;
-};
-typedef struct CGRect CGRect;
-
-typedef CGRect NSRect;
-typedef CGSize NSSize;
-
-static __inline__ __attribute__((always_inline)) CGFloat NSWidth(NSRect aRect) {
-    return (aRect.size.width);
-}
-
-static __inline__ __attribute__((always_inline)) CGFloat NSHeight(NSRect aRect) {
-    return (aRect.size.height);
-}
-
-NSSize rdar880566_size();
-
-double rdar8808566() {
-  NSRect myRect;
-  myRect.size = rdar880566_size();
-  double x = NSWidth(myRect) + NSHeight(myRect); // no-warning
-  return x;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/default-diagnostic-visitors.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/default-diagnostic-visitors.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/default-diagnostic-visitors.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core -analyzer-store=region -analyzer-output=text -verify %s
-
-// This file is for testing enhanced diagnostics produced by the default BugReporterVisitors.
-
-int getPasswordAndItem()
-{
-  int err = 0;
-  int *password; // expected-note {{'password' declared without an initial value}}
-  if (password == 0) { // expected-warning {{The left operand of '==' is a garbage value}} // expected-note {{The left operand of '==' is a garbage value}}
-    err = *password;
-  }
-  return err;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/delegates.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/delegates.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/delegates.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,131 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -Wno-objc-root-class -verify %s
-// expected-no-diagnostics
-
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case 
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-void CFRelease(CFTypeRef cf);
-typedef const struct __CFDictionary * CFDictionaryRef;
-const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
-extern CFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...);
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct objc_selector *SEL;
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef NSInteger NSComparisonResult;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
-- (Class)class;
-- (id)retain;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
-+ (Class)class;
-- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {} NSFastEnumerationState;
- at protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
- at class NSString;
-typedef struct _NSRange {} NSRange;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
- at end
- at interface NSMutableArray : NSArray
-- (void)addObject:(id)anObject;
-- (id)initWithCapacity:(NSUInteger)numItems;
- at end
-typedef unsigned short unichar;
- at class NSData, NSArray, NSDictionary, NSCharacterSet, NSData, NSURL, NSError, NSLocale;
-typedef NSUInteger NSStringCompareOptions;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>    - (NSUInteger)length;
-- (NSComparisonResult)compare:(NSString *)string;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange;
-- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange locale:(id)locale;
-- (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
-- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator;
- at end
- at interface NSSimpleCString : NSString {} @end
- at interface NSConstantString : NSSimpleCString @end
-extern void *_NSConstantStringClassReference;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-//  <rdar://problem/6062730>
-// The analyzer doesn't perform any inter-procedural analysis, so delegates
-// involving [NSObject performSelector...] tend to lead to false positives.
-// For now the analyzer just stops tracking the reference count of the
-// receiver until we have better support for delegates.
-
- at interface test_6062730 : NSObject
-+ (void)postNotification:(NSString *)str;
-- (void)foo;
-- (void)bar;
- at end
-
- at implementation test_6062730
-- (void) foo {
-  NSString *str = [[NSString alloc] init]; // no-warning
-  [test_6062730 performSelectorOnMainThread:@selector(postNotification:) withObject:str waitUntilDone:1];
-}
-
-- (void) bar {
-  NSString *str = [[NSString alloc] init]; // no-warning
-  [[self class] performSelectorOnMainThread:@selector(postNotification:) withObject:str waitUntilDone:1];
-}
-
-+ (void) postNotification:(NSString *)str {
-  [str release]; // no-warning
-}
- at end
-
-
- at interface ObjectThatRequiresDelegate : NSObject
-- (id)initWithDelegate:(id)delegate;
-- (id)initWithNumber:(int)num delegate:(id)delegate;
- at end
-
-
- at interface DelegateRequirerTest
- at end
- at implementation DelegateRequirerTest
-
-- (void)test {
-  (void)[[ObjectThatRequiresDelegate alloc] initWithDelegate:self];
-  (void)[[ObjectThatRequiresDelegate alloc] initWithNumber:0 delegate:self];
-  // no leak warnings -- these objects could be released in callback methods
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/derived-to-base.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/derived-to-base.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/derived-to-base.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,452 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -DCONSTRUCTORS=1 -analyzer-config c++-inlining=constructors -verify %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-class A {
-protected:
-  int x;
-};
-
-class B : public A {
-public:
-  void f();
-};
-
-void B::f() {
-  x = 3;
-}
-
-
-class C : public B {
-public:
-  void g() {
-    // This used to crash because we are upcasting through two bases.
-    x = 5;
-  }
-};
-
-
-namespace VirtualBaseClasses {
-  class A {
-  protected:
-    int x;
-  };
-
-  class B : public virtual A {
-  public:
-    int getX() { return x; }
-  };
-
-  class C : public virtual A {
-  public:
-    void setX() { x = 42; }
-  };
-
-  class D : public B, public C {};
-  class DV : virtual public B, public C {};
-  class DV2 : public B, virtual public C {};
-
-  void test() {
-    D d;
-    d.setX();
-    clang_analyzer_eval(d.getX() == 42); // expected-warning{{TRUE}}
-
-    DV dv;
-    dv.setX();
-    clang_analyzer_eval(dv.getX() == 42); // expected-warning{{TRUE}}
-
-    DV2 dv2;
-    dv2.setX();
-    clang_analyzer_eval(dv2.getX() == 42); // expected-warning{{TRUE}}
-  }
-
-
-  // Make sure we're consistent about the offset of the A subobject within an
-  // Intermediate virtual base class.
-  class Padding1 { int unused; };
-  class Padding2 { int unused; };
-  class Intermediate : public Padding1, public A, public Padding2 {};
-
-  class BI : public virtual Intermediate {
-  public:
-    int getX() { return x; }
-  };
-
-  class CI : public virtual Intermediate {
-  public:
-    void setX() { x = 42; }
-  };
-
-  class DI : public BI, public CI {};
-
-  void testIntermediate() {
-    DI d;
-    d.setX();
-    clang_analyzer_eval(d.getX() == 42); // expected-warning{{TRUE}}
-  }
-}
-
-
-namespace DynamicVirtualUpcast {
-  class A {
-  public:
-    virtual ~A();
-  };
-
-  class B : virtual public A {};
-  class C : virtual public B {};
-  class D : virtual public C {};
-
-  bool testCast(A *a) {
-    return dynamic_cast<B*>(a) && dynamic_cast<C*>(a);
-  }
-
-  void test() {
-    D d;
-    clang_analyzer_eval(testCast(&d)); // expected-warning{{TRUE}}
-  }
-}
-
-namespace DynamicMultipleInheritanceUpcast {
-  class B {
-  public:
-    virtual ~B();
-  };
-  class C {
-  public:
-    virtual ~C();
-  };
-  class D : public B, public C {};
-
-  bool testCast(B *a) {
-    return dynamic_cast<C*>(a);
-  }
-
-  void test() {
-    D d;
-    clang_analyzer_eval(testCast(&d)); // expected-warning{{TRUE}}
-  }
-
-
-  class DV : virtual public B, virtual public C {};
-
-  void testVirtual() {
-    DV d;
-    clang_analyzer_eval(testCast(&d)); // expected-warning{{TRUE}}
-  }
-}
-
-namespace LazyBindings {
-  struct Base {
-    int x;
-  };
-
-  struct Derived : public Base {
-    int y;
-  };
-
-  struct DoubleDerived : public Derived {
-    int z;
-  };
-
-  int getX(const Base &obj) {
-    return obj.x;
-  }
-
-  int getY(const Derived &obj) {
-    return obj.y;
-  }
-
-  void testDerived() {
-    Derived d;
-    d.x = 1;
-    d.y = 2;
-    clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
-    Base b(d);
-    clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
-    Derived d2(d);
-    clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-  }
-
-  void testDoubleDerived() {
-    DoubleDerived d;
-    d.x = 1;
-    d.y = 2;
-    clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
-    Base b(d);
-    clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
-    Derived d2(d);
-    clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-
-    DoubleDerived d3(d);
-    clang_analyzer_eval(getX(d3) == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(getY(d3) == 2); // expected-warning{{TRUE}}
-  }
-
-  namespace WithOffset {
-    struct Offset {
-      int padding;
-    };
-
-    struct OffsetDerived : private Offset, public Base {
-      int y;
-    };
-
-    struct DoubleOffsetDerived : public OffsetDerived {
-      int z;
-    };
-
-    int getY(const OffsetDerived &obj) {
-      return obj.y;
-    }
-
-    void testDerived() {
-      OffsetDerived d;
-      d.x = 1;
-      d.y = 2;
-      clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
-      Base b(d);
-      clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
-      OffsetDerived d2(d);
-      clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-    }
-
-    void testDoubleDerived() {
-      DoubleOffsetDerived d;
-      d.x = 1;
-      d.y = 2;
-      clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
-      Base b(d);
-      clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
-      OffsetDerived d2(d);
-      clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-
-      DoubleOffsetDerived d3(d);
-      clang_analyzer_eval(getX(d3) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d3) == 2); // expected-warning{{TRUE}}
-    }
-  }
-
-  namespace WithVTable {
-    struct DerivedVTBL : public Base {
-      int y;
-      virtual void method();
-    };
-
-    struct DoubleDerivedVTBL : public DerivedVTBL {
-      int z;
-    };
-
-    int getY(const DerivedVTBL &obj) {
-      return obj.y;
-    }
-
-    int getZ(const DoubleDerivedVTBL &obj) {
-      return obj.z;
-    }
-
-    void testDerived() {
-      DerivedVTBL d;
-      d.x = 1;
-      d.y = 2;
-      clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-
-      Base b(d);
-      clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
-#if CONSTRUCTORS
-      DerivedVTBL d2(d);
-      clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-#endif
-    }
-
-#if CONSTRUCTORS
-    void testDoubleDerived() {
-      DoubleDerivedVTBL d;
-      d.x = 1;
-      d.y = 2;
-      d.z = 3;
-      clang_analyzer_eval(getX(d) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d) == 2); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getZ(d) == 3); // expected-warning{{TRUE}}
-
-      Base b(d);
-      clang_analyzer_eval(getX(b) == 1); // expected-warning{{TRUE}}
-
-      DerivedVTBL d2(d);
-      clang_analyzer_eval(getX(d2) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d2) == 2); // expected-warning{{TRUE}}
-
-      DoubleDerivedVTBL d3(d);
-      clang_analyzer_eval(getX(d3) == 1); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getY(d3) == 2); // expected-warning{{TRUE}}
-      clang_analyzer_eval(getZ(d3) == 3); // expected-warning{{TRUE}}
-    }
-#endif
-  }
-
-#if CONSTRUCTORS
-  namespace Nested {
-    struct NonTrivialCopy {
-      int padding;
-      NonTrivialCopy() {}
-      NonTrivialCopy(const NonTrivialCopy &) {}
-    };
-
-    struct FullyDerived : private NonTrivialCopy, public Derived {
-      int z;
-    };
-
-    struct Wrapper {
-      FullyDerived d;
-      int zz;
-
-      Wrapper(const FullyDerived &d) : d(d), zz(0) {}
-    };
-
-    void test5() {
-      Wrapper w((FullyDerived()));
-      w.d.x = 1;
-
-      Wrapper w2(w);
-      clang_analyzer_eval(getX(w2.d) == 1); // expected-warning{{TRUE}}
-    }
-  }
-#endif
-}
-
-namespace Redeclaration {
-  class Base;
-
-  class Base {
-  public:
-    virtual int foo();
-    int get() { return value; }
-
-    int value;
-  };
-
-  class Derived : public Base {
-  public:
-    virtual int bar();
-  };
-
-  void test(Derived d) {
-    d.foo(); // don't crash
-    d.bar(); // sanity check
-
-    Base &b = d;
-    b.foo(); // don't crash
-
-    d.value = 42; // don't crash
-    clang_analyzer_eval(d.get() == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b.get() == 42); // expected-warning{{TRUE}}
-  }
-};
-
-namespace PR15394 {
-  namespace Original {
-    class Base {
-    public:
-      virtual int f() = 0;
-      int i;
-    };
-
-    class Derived1 : public Base {
-    public:
-      int j;
-    };
-
-    class Derived2 : public Derived1 {
-    public:
-      virtual int f() {
-        clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-        return i + j;
-      }
-    };
-
-    void testXXX() {
-      Derived1 *d1p = reinterpret_cast<Derived1*>(new Derived2);
-      d1p->i = 1;
-      d1p->j = 2;
-      clang_analyzer_eval(d1p->f() == 3); // expected-warning{{TRUE}}
-    }
-  }
-
-  namespace VirtualInDerived {
-    class Base {
-    public:
-      int i;
-    };
-
-    class Derived1 : public Base {
-    public:
-      virtual int f() = 0;
-      int j;
-    };
-
-    class Derived2 : public Derived1 {
-    public:
-      virtual int f() {
-        clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-        return i + j;
-      }
-    };
-
-    void test() {
-      Derived1 *d1p = reinterpret_cast<Derived1*>(new Derived2);
-      d1p->i = 1;
-      d1p->j = 2;
-      clang_analyzer_eval(d1p->f() == 3); // expected-warning{{TRUE}}
-    }
-  }
-
-  namespace NoCast {
-    class Base {
-    public:
-      int i;
-    };
-
-    class Derived1 : public Base {
-    public:
-      virtual int f() = 0;
-      int j;
-    };
-
-    class Derived2 : public Derived1 {
-    public:
-      virtual int f() {
-        clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-        return i + j;
-      }
-    };
-
-    void test() {
-      Derived1 *d1p = new Derived2;
-      d1p->i = 1;
-      d1p->j = 2;
-      clang_analyzer_eval(d1p->f() == 3); // expected-warning{{TRUE}}
-    }
-  }
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/Inputs/include/sys/queue.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#pragma clang system_header
-
-void free(void *);
-#define FREE_POINTER(x) free(x)
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,655 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-struct S {
-  int *x;
-  int y;
-};
-
-int *foo();
-
-void test(struct S syz, int *pp) {
-  int m = 0;
-  syz.x = foo(); // expected-note{{Value assigned to 'syz.x'}}
-
-  struct S *ps = &syz;
-  if (ps->x)
-    //expected-note at -1{{Taking false branch}}
-    //expected-note at -2{{Assuming pointer value is null}}
-
-    m++;
-
-  m += *syz.x; // expected-warning{{Dereference of null pointer (loaded from field 'x')}}
-  // expected-note at -1{{Dereference of null pointer (loaded from field 'x')}}
-}
-
-void testTrackConstraintBRVisitorIsTrackingTurnedOn(struct S syz, int *pp) {
-  int m = 0;
-  syz.x = foo(); // expected-note{{Value assigned to 'syz.x'}}
-
-  struct S *ps = &syz;
-  if (ps->x)
-    //expected-note at -1{{Taking false branch}}
-    //expected-note at -2{{Assuming pointer value is null}}
-
-    m++;
-  int *p = syz.x; //expected-note {{'p' initialized to a null pointer value}}
-  m = *p; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
-          // expected-note at -1 {{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>14</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Value assigned to 'syz.x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Value assigned to 'syz.x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>17</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>17</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>17</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>23</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>23</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>23</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'x')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'x')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from field 'x')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>11</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>23</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>29</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Value assigned to 'syz.x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Value assigned to 'syz.x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>32</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>32</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>32</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>37</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>37</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>37</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>38</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testTrackConstraintBRVisitorIsTrackingTurnedOn</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>11</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>38</integer>
-// CHECK-NEXT:    <key>col</key><integer>7</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/deref-track-symbolic-region.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/deref-track-symbolic-region.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/deref-track-symbolic-region.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -verify %s
-
-struct S {
-  int *x;
-  int y;
-};
-
-S &getSomeReference();
-void test(S *p) {
-  S &r = *p;   //expected-note {{'r' initialized here}}
-  if (p) return;
-               //expected-note at -1{{Taking false branch}}
-               //expected-note at -2{{Assuming 'p' is null}}
-  r.y = 5; // expected-warning {{Access to field 'y' results in a dereference of a null pointer (loaded from variable 'r')}}
-           // expected-note at -1{{Access to field 'y' results in a dereference of a null pointer (loaded from variable 'r')}}
-}
-
-void testRefParam(int *ptr) {
-	int &ref = *ptr; // expected-note {{'ref' initialized here}}
-	if (ptr)
-    // expected-note at -1{{Assuming 'ptr' is null}}
-    // expected-note at -2{{Taking false branch}}
-		return;
-
-	extern void use(int &ref);
-	use(ref); // expected-warning{{Forming reference to null pointer}}
-            // expected-note at -1{{Forming reference to null pointer}}
-}
-
-int testRefToNullPtr() {
-  int *p = 0; // expected-note {{'p' initialized to a null pointer value}}
-  int *const &p2 = p; // expected-note{{'p2' initialized here}}
-  int *p3 = p2; // expected-note {{'p3' initialized to a null pointer value}}
-  return *p3; // expected-warning {{Dereference of null pointer}}
-              // expected-note at -1{{Dereference of null pointer}}
-}
-
-int testRefToNullPtr2() {
-  int *p = 0; // expected-note {{'p' initialized to a null pointer value}}
-  int *const &p2 = p;// expected-note{{'p2' initialized here}}
-  return *p2; //expected-warning {{Dereference of null pointer}}
-              // expected-note at -1{{Dereference of null pointer}}
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/explicit-suppression.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/explicit-suppression.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/explicit-suppression.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config suppress-c++-stdlib=false -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config suppress-c++-stdlib=true -DSUPPRESSED=1 -verify %s
-
-#ifdef SUPPRESSED
-// expected-no-diagnostics
-#endif
-
-#include "../Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_eval(bool);
-
-void testCopyNull(int *I, int *E) {
-  std::copy(I, E, (int *)0);
-#ifndef SUPPRESSED
-  // expected-warning at ../Inputs/system-header-simulator-cxx.h:80 {{Dereference of null pointer}}
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/false-positive-suppression.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/false-positive-suppression.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/false-positive-suppression.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -I %S/Inputs -analyze -analyzer-checker=core,unix -verify %s
-// expected-no-diagnostics
-
-#include "include/sys/queue.h"
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-
-int radar12491259() {
-    int *p = malloc(12);
-    FREE_POINTER(p);
-    FREE_POINTER(p); // no-warning: we are suppressing errors coming from sys/queue macros.
-    return 0;
-}
-
-#define MYMACRO(p) FREE_POINTER(p)
-
-int radar12491259_inside_macro() {
-    int *p = malloc(12);
-    MYMACRO(p);
-    MYMACRO(p); // no-warning: we are suppressing errors coming from sys/queue macros.
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/no-prune-paths.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/no-prune-paths.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/no-prune-paths.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config prune-paths=false -DNPRUNE=1 -verify %s
-
-// "prune-paths" is a debug option only; this is just a simple test to see that
-// it's being honored.
-
-void helper() {
-  extern void foo();
-  foo();
-}
-
-void test() {
-  helper();
-#if NPRUNE
-  // expected-note at -2 {{Calling 'helper'}}
-  // expected-note at -3 {{Returning from 'helper'}}
-#endif
-
-  *(volatile int *)0 = 1; // expected-warning {{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/shortest-path-suppression.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/shortest-path-suppression.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/shortest-path-suppression.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config suppress-null-return-paths=true -analyzer-output=text -verify %s
-// expected-no-diagnostics
-
-int *returnNull() { return 0; }
-int coin();
-
-// Use a float parameter to ensure that the value is unknown. This will create
-// a cycle in the generated ExplodedGraph.
-void testCycle(float i) {
-  int *x = returnNull();
-  int y; 
-  while (i > 0) {
-    x = returnNull();
-    y = 2;
-    i -= 1;
-  }
-  *x = 1; // no-warning
-  y += 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-callee.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-callee.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-callee.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-
-void callee() {
-  ;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-caller.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-caller.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-caller.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,159 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist -o %t %s
-// RUN: FileCheck --input-file %t %s
-
-#include "undef-value-callee.h"
-
-// This code used to cause a crash since we were not adding fileID of the header to the plist diagnostic.
-
-int test_calling_unimportant_callee(int argc, char *argv[]) {
-  int x;
-  callee();
-  return x; // expected-warning {{Undefined or garbage value returned to caller}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>9</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>9</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>9</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'x' declared without an initial value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'x' declared without an initial value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>9</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>9</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>11</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Undefined or garbage value returned to caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Undefined or garbage value returned to caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Undefined or garbage value returned to caller</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Garbage return value</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_calling_unimportant_callee</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>11</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-param.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-param.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-param.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1179 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-void foo_irrelevant(int c) {
-    if (c)
-        return;
-    c++;
-    return;
-}
-void foo(int c, int *x) {
-    if (c)
-           //expected-note at -1{{Assuming 'c' is not equal to 0}}
-           //expected-note at -2{{Taking true branch}}
-        return;
-    *x = 5;
-}
-
-int use(int c) {
-    int xx; //expected-note {{'xx' declared without an initial value}}
-    int *y = &xx;
-    foo (c, y);
-                //expected-note at -1{{Calling 'foo'}}
-                //expected-note at -2{{Returning from 'foo'}}
-    foo_irrelevant(c);
-    return xx+3; //expected-warning{{The left operand of '+' is a garbage value}}
-                 //expected-note at -1{{The left operand of '+' is a garbage value}}
-}
-
-void initArray(int x, double XYZ[3]) {
-    if (x <= 0) //expected-note {{Taking true branch}}
-                //expected-note at -1 {{Assuming 'x' is <= 0}}
-        return;
-    XYZ[0] = 1;
-    XYZ[1] = 1;
-    XYZ[2] = 1;
-}
-int testPassingParentRegionArray(int x) {
-    double XYZ[3];
-    initArray(x, XYZ); //expected-note {{Calling 'initArray'}}
-                       //expected-note at -1 {{Returning from 'initArray'}}
-    return 1 * XYZ[1]; //expected-warning {{The right operand of '*' is a garbage value}}
-                       //expected-note at -1 {{The right operand of '*' is a garbage value}}
-}
-
-double *getValidPtr();
-struct WithFields {
-  double *f1;
-};
-void initStruct(int x, struct WithFields *X) {
-  if (x <= 0) //expected-note {{Taking true branch}}
-              //expected-note at -1 {{Assuming 'x' is <= 0}}
-
-    return;
-  X->f1 = getValidPtr();
-}
-double testPassingParentRegionStruct(int x) {
-  struct WithFields st;
-  st.f1 = 0; // expected-note {{Null pointer value stored to 'st.f1'}}
-  initStruct(x, &st); //expected-note {{Calling 'initStruct'}}
-                      //expected-note at -1 {{Returning from 'initStruct'}}
-  return (*st.f1); //expected-warning {{Dereference of null pointer}}
-                   //expected-note at -1{{Dereference of null pointer (loaded from field 'f1')}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>20</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>20</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>20</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'xx' declared without an initial value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'xx' declared without an initial value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>22</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>22</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>22</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>22</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>22</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'foo'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'foo'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>11</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>12</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>12</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>12</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'c' is not equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'c' is not equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>22</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>22</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>22</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'foo'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'foo'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>22</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>22</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>26</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>26</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>26</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>26</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>26</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The left operand of '+' is a garbage value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The left operand of '+' is a garbage value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>The left operand of '+' is a garbage value</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Result of operation is garbage or undefined</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>use</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>7</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>26</integer>
-// CHECK-NEXT:    <key>col</key><integer>14</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>40</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>40</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>40</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>40</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>40</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'initArray'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'initArray'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>30</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testPassingParentRegionArray'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testPassingParentRegionArray'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>31</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>31</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>31</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is <= 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is <= 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>40</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>40</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>40</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'initArray'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'initArray'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>40</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>40</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>42</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>42</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>42</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>42</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>42</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The right operand of '*' is a garbage value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The right operand of '*' is a garbage value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>The right operand of '*' is a garbage value</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Result of operation is garbage or undefined</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testPassingParentRegionArray</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>42</integer>
-// CHECK-NEXT:    <key>col</key><integer>14</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>59</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'st.f1'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'st.f1'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'initStruct'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'initStruct'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>50</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testPassingParentRegionStruct'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testPassingParentRegionStruct'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>51</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is <= 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is <= 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'initStruct'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'initStruct'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>62</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'f1')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'f1')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from field 'f1')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testPassingParentRegionStruct</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>62</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-param.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-param.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/diagnostics/undef-value-param.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,936 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-typedef signed char BOOL;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
- at end
-typedef const void * CFTypeRef;
-extern void CFRelease(CFTypeRef cf);
-
- at interface Cell : NSObject
-- (void)test;
- at end
-
- at interface SpecialString
-+ (id)alloc;
-- (oneway void)release;
- at end
-
-typedef SpecialString* SCDynamicStoreRef;
-static void CreateRef(SCDynamicStoreRef *storeRef, unsigned x);
-static void CreateRefUndef(SCDynamicStoreRef *storeRef, unsigned x);
-SCDynamicStoreRef anotherCreateRef(unsigned *err, unsigned x);
-
- at implementation Cell
-- (void) test {
-    SCDynamicStoreRef storeRef = 0;
-    CreateRef(&storeRef, 4); 
-                             //expected-note at -1{{Calling 'CreateRef'}}
-                             //expected-note at -2{{Returning from 'CreateRef'}}
-    CFRelease(storeRef); //expected-warning {{Null pointer argument in call to CFRelease}}
-                         //expected-note at -1{{Null pointer argument in call to CFRelease}}
-}
-
-- (void)test2 {
-    SCDynamicStoreRef storeRef; // expected-note {{'storeRef' declared without an initial value}}
-    CreateRefUndef(&storeRef, 4);
-                             //expected-note at -1{{Calling 'CreateRefUndef'}}
-                             //expected-note at -2{{Returning from 'CreateRefUndef'}}
-    CFRelease(storeRef); //expected-warning {{Function call argument is an uninitialized value}}
-                         //expected-note at -1{{Function call argument is an uninitialized value}}
-}
- at end
-
-static void CreateRef(SCDynamicStoreRef *storeRef, unsigned x) {
-    unsigned err = 0;
-    SCDynamicStoreRef ref = anotherCreateRef(&err, x);
-    if (err) { 
-               //expected-note at -1{{Assuming 'err' is not equal to 0}}
-               //expected-note at -2{{Taking true branch}}
-        CFRelease(ref);
-        ref = 0; // expected-note{{nil object reference stored to 'ref'}}
-    }
-    *storeRef = ref; // expected-note{{nil object reference stored to 'storeRef'}}
-}
-
-static void CreateRefUndef(SCDynamicStoreRef *storeRef, unsigned x) {
-  unsigned err = 0;
-  SCDynamicStoreRef ref = anotherCreateRef(&err, x);
-  if (err) {
-             //expected-note at -1{{Assuming 'err' is not equal to 0}}
-             //expected-note at -2{{Taking true branch}}
-    CFRelease(ref);
-    return;
-  }
-  *storeRef = ref;
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>35</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>35</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>36</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>36</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>36</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'CreateRef'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'CreateRef'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>53</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'err' is not equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'err' is not equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>nil object reference stored to 'ref'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>nil object reference stored to 'ref'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>62</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>nil object reference stored to 'storeRef'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>nil object reference stored to 'storeRef'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>36</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>36</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>36</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'CreateRef'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'CreateRef'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>39</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>39</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>39</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer argument in call to CFRelease</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer argument in call to CFRelease</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Null pointer argument in call to CFRelease</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>null passed to CFRetain/CFRelease/CFMakeCollectable</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>39</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>44</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'storeRef' declared without an initial value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'storeRef' declared without an initial value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>45</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>45</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>45</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>45</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>45</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'CreateRefUndef'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'CreateRefUndef'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>65</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test2'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test2'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>68</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>68</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>68</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'err' is not equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'err' is not equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>45</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>45</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>45</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'CreateRefUndef'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'CreateRefUndef'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>45</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>45</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>48</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>48</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>48</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>48</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>48</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Function call argument is an uninitialized value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Function call argument is an uninitialized value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Function call argument is an uninitialized value</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Uninitialized argument value</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>48</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/div-zero.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/div-zero.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/div-zero.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core.DivideZero -verify %s
-
-int fooPR10616 (int qX ) {
-  int a, c, d;
-
-  d = (qX-1);
-  while ( d != 0 ) {
-    d = c - (c/d) * d;
-  }
-
-  return (a % (qX-1)); // expected-warning {{Division by zero}}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/domtest.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/domtest.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/domtest.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-// RUN: rm -f %t
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpDominators %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-// Test the DominatorsTree implementation with various control flows
-int test1()
-{
-  int x = 6;
-  int y = x/2;
-  int z;
-
-  while(y > 0) {
-    if(y < x) {
-      x = x/y;
-      y = y-1;
-    }else{
-      z = x - y;
-    }
-    x = x - 1;
-    x = x - 1;
-  }
-  z = x+y;
-  z = 3;
-  return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,7)
-// CHECK: (2,3)
-// CHECK: (3,6)
-// CHECK: (4,6)
-// CHECK: (5,6)
-// CHECK: (6,7)
-// CHECK: (7,8)
-// CHECK: (8,9)
-// CHECK: (9,9)
-
-int test2()
-{
-  int x,y,z;
-
-  x = 10; y = 100;
-  if(x > 0){
-    y = 1;
-  }else{
-    while(x<=0){
-      x++;
-      y++;
-    }
-  }
-  z = y;
-
-  return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,6)
-// CHECK: (2,3)
-// CHECK: (3,4)
-// CHECK: (4,6)
-// CHECK: (5,6)
-// CHECK: (6,7)
-// CHECK: (7,7)
-
-int test3()
-{
-  int x,y,z;
-
-  x = y = z = 1;
-  if(x>0) {
-    while(x>=0){
-      while(y>=x) {
-        x = x-1;
-        y = y/2;
-      }
-    }
-  }
-  z = y;
-
-  return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,7)
-// CHECK: (2,5)
-// CHECK: (3,4)
-// CHECK: (4,5)
-// CHECK: (5,6)
-// CHECK: (6,7)
-// CHECK: (7,8)
-// CHECK: (8,8)
-
-int test4()
-{
-  int y = 3;
-  while(y > 0) {
-    if(y < 3) {
-      while(y>0)
-        y ++;
-    }else{
-      while(y<10)
-        y ++;
-    }
-  }
-  return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,10)
-// CHECK: (2,9)
-// CHECK: (3,4)
-// CHECK: (4,5)
-// CHECK: (5,9)
-// CHECK: (6,7)
-// CHECK: (7,8)
-// CHECK: (8,9)
-// CHECK: (9,10)
-// CHECK: (10,11)
-// CHECK: (11,12)
-// CHECK: (12,12)
-
-int test5()
-{
-  int x,y,z,a,b,c;
-  x = 1;
-  y = 2;
-  z = 3;
-  a = 4;
-  b = 5;
-  c = 6;
-  if ( x < 10 ) {
-     if ( y < 10 ) {
-        if ( z < 10 ) {
-           x = 4;
-        } else {
-           x = 5;
-        }
-        a = 10;
-     } else {
-       x = 6;
-     }
-     b = 10;
-  } else {
-    x = 7;
-  }
-  c = 11;
-  return 0;
-}
-
-// CHECK: Immediate dominance tree (Node#,IDom#):
-// CHECK: (0,1)
-// CHECK: (1,10)
-// CHECK: (2,10)
-// CHECK: (3,9)
-// CHECK: (4,9)
-// CHECK: (5,8)
-// CHECK: (6,8)
-// CHECK: (7,8)
-// CHECK: (8,9)
-// CHECK: (9,10)
-// CHECK: (10,11)
-// CHECK: (11,11)
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/dtor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/dtor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/dtor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,403 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors -Wno-null-dereference -verify %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-class A {
-public:
-  ~A() { 
-    int *x = 0;
-    *x = 3; // expected-warning{{Dereference of null pointer}}
-  }
-};
-
-int main() {
-  A a;
-}
-
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-class SmartPointer {
-  void *X;
-public:
-  SmartPointer(void *x) : X(x) {}
-  ~SmartPointer() {
-    free(X);
-  }
-};
-
-void testSmartPointer() {
-  char *mem = (char*)malloc(4);
-  {
-    SmartPointer Deleter(mem);
-    // destructor called here
-  }
-  *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-
-void doSomething();
-void testSmartPointer2() {
-  char *mem = (char*)malloc(4);
-  {
-    SmartPointer Deleter(mem);
-    // Remove dead bindings...
-    doSomething();
-    // destructor called here
-  }
-  *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-
-class Subclass : public SmartPointer {
-public:
-  Subclass(void *x) : SmartPointer(x) {}
-};
-
-void testSubclassSmartPointer() {
-  char *mem = (char*)malloc(4);
-  {
-    Subclass Deleter(mem);
-    // Remove dead bindings...
-    doSomething();
-    // destructor called here
-  }
-  *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-
-class MultipleInheritance : public Subclass, public SmartPointer {
-public:
-  MultipleInheritance(void *a, void *b) : Subclass(a), SmartPointer(b) {}
-};
-
-void testMultipleInheritance1() {
-  char *mem = (char*)malloc(4);
-  {
-    MultipleInheritance Deleter(mem, 0);
-    // Remove dead bindings...
-    doSomething();
-    // destructor called here
-  }
-  *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testMultipleInheritance2() {
-  char *mem = (char*)malloc(4);
-  {
-    MultipleInheritance Deleter(0, mem);
-    // Remove dead bindings...
-    doSomething();
-    // destructor called here
-  }
-  *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testMultipleInheritance3() {
-  char *mem = (char*)malloc(4);
-  {
-    MultipleInheritance Deleter(mem, mem);
-    // Remove dead bindings...
-    doSomething();
-    // destructor called here
-    // expected-warning at 28 {{Attempt to free released memory}}
-  }
-}
-
-
-class SmartPointerMember {
-  SmartPointer P;
-public:
-  SmartPointerMember(void *x) : P(x) {}
-};
-
-void testSmartPointerMember() {
-  char *mem = (char*)malloc(4);
-  {
-    SmartPointerMember Deleter(mem);
-    // Remove dead bindings...
-    doSomething();
-    // destructor called here
-  }
-  *mem = 0; // expected-warning{{Use of memory after it is freed}}
-}
-
-
-struct IntWrapper {
-  IntWrapper() : x(0) {}
-  ~IntWrapper();
-  int *x;
-};
-
-void testArrayInvalidation() {
-  int i = 42;
-  int j = 42;
-
-  {
-    IntWrapper arr[2];
-
-    // There should be no undefined value warnings here.
-    // Eventually these should be TRUE as well, but right now
-    // we can't handle array constructors.
-    clang_analyzer_eval(arr[0].x == 0); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(arr[1].x == 0); // expected-warning{{UNKNOWN}}
-
-    arr[0].x = &i;
-    arr[1].x = &j;
-    clang_analyzer_eval(*arr[0].x == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(*arr[1].x == 42); // expected-warning{{TRUE}}
-  }
-
-  // The destructors should have invalidated i and j.
-  clang_analyzer_eval(i == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(j == 42); // expected-warning{{UNKNOWN}}
-}
-
-
-
-// Don't crash on a default argument inside an initializer.
-struct DefaultArg {
-  DefaultArg(int x = 0) {}
-  ~DefaultArg();
-};
-
-struct InheritsDefaultArg : DefaultArg {
-  InheritsDefaultArg() {}
-  virtual ~InheritsDefaultArg();
-};
-
-void testDefaultArg() {
-  InheritsDefaultArg a;
-  // Force a bug to be emitted.
-  *(char *)0 = 1; // expected-warning{{Dereference of null pointer}}
-}
-
-
-namespace DestructorVirtualCalls {
-  class A {
-  public:
-    int *out1, *out2, *out3;
-
-    virtual int get() { return 1; }
-
-    ~A() {
-      *out1 = get();
-    }
-  };
-
-  class B : public A {
-  public:
-    virtual int get() { return 2; }
-
-    ~B() {
-      *out2 = get();
-    }
-  };
-
-  class C : public B {
-  public:
-    virtual int get() { return 3; }
-
-    ~C() {
-      *out3 = get();
-    }
-  };
-
-  void test() {
-    int a, b, c;
-
-    // New scope for the C object.
-    {
-      C obj;
-      clang_analyzer_eval(obj.get() == 3); // expected-warning{{TRUE}}
-
-      // Sanity check for devirtualization.
-      A *base = &obj;
-      clang_analyzer_eval(base->get() == 3); // expected-warning{{TRUE}}
-
-      obj.out1 = &a;
-      obj.out2 = &b;
-      obj.out3 = &c;
-    }
-
-    clang_analyzer_eval(a == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(b == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
-  }
-}
-
-
-namespace DestructorsShouldNotAffectReturnValues {
-  class Dtor {
-  public:
-    ~Dtor() {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-    }
-  };
-
-  void *allocate() {
-    Dtor d;
-    return malloc(4); // no-warning
-  }
-
-  void test() {
-    // At one point we had an issue where the statements inside an
-    // inlined destructor kept us from finding the return statement,
-    // leading the analyzer to believe that the malloc'd memory had leaked.
-    void *p = allocate();
-    free(p); // no-warning
-  }
-}
-
-namespace MultipleInheritanceVirtualDtors {
-  class VirtualDtor {
-  protected:
-    virtual ~VirtualDtor() {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-    }
-  };
-
-  class NonVirtualDtor {
-  protected:
-    ~NonVirtualDtor() {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-    }
-  };
-
-  class SubclassA : public VirtualDtor, public NonVirtualDtor {
-  public:
-    virtual ~SubclassA() {}
-  };
-  class SubclassB : public NonVirtualDtor, public VirtualDtor {
-  public:
-    virtual ~SubclassB() {}
-  };
-
-  void test() {
-    SubclassA a;
-    SubclassB b;
-  }
-}
-
-namespace ExplicitDestructorCall {
-  class VirtualDtor {
-  public:
-    virtual ~VirtualDtor() {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-    }
-  };
-  
-  class Subclass : public VirtualDtor {
-  public:
-    virtual ~Subclass() {
-      clang_analyzer_checkInlined(false); // no-warning
-    }
-  };
-  
-  void destroy(Subclass *obj) {
-    obj->VirtualDtor::~VirtualDtor();
-  }
-}
-
-
-namespace MultidimensionalArrays {
-  void testArrayInvalidation() {
-    int i = 42;
-    int j = 42;
-
-    {
-      IntWrapper arr[2][2];
-
-      // There should be no undefined value warnings here.
-      // Eventually these should be TRUE as well, but right now
-      // we can't handle array constructors.
-      clang_analyzer_eval(arr[0][0].x == 0); // expected-warning{{UNKNOWN}}
-      clang_analyzer_eval(arr[1][1].x == 0); // expected-warning{{UNKNOWN}}
-
-      arr[0][0].x = &i;
-      arr[1][1].x = &j;
-      clang_analyzer_eval(*arr[0][0].x == 42); // expected-warning{{TRUE}}
-      clang_analyzer_eval(*arr[1][1].x == 42); // expected-warning{{TRUE}}
-    }
-
-    // The destructors should have invalidated i and j.
-    clang_analyzer_eval(i == 42); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(j == 42); // expected-warning{{UNKNOWN}}
-  }
-}
-
-namespace LifetimeExtension {
-  struct IntWrapper {
-	int x;
-	IntWrapper(int y) : x(y) {}
-	IntWrapper() {
-      extern void use(int);
-      use(x); // no-warning
-	}
-  };
-
-  struct DerivedWrapper : public IntWrapper {
-	DerivedWrapper(int y) : IntWrapper(y) {}
-  };
-
-  DerivedWrapper get() {
-	return DerivedWrapper(1);
-  }
-
-  void test() {
-	const DerivedWrapper &d = get(); // lifetime extended here
-  }
-
-
-  class SaveOnDestruct {
-  public:
-    static int lastOutput;
-    int value;
-
-    SaveOnDestruct();
-    ~SaveOnDestruct() {
-      lastOutput = value;
-    }
-  };
-
-  void testSimple() {
-    {
-      const SaveOnDestruct &obj = SaveOnDestruct();
-      if (obj.value != 42)
-        return;
-      // destructor called here
-    }
-
-    clang_analyzer_eval(SaveOnDestruct::lastOutput == 42); // expected-warning{{TRUE}}
-  }
-
-  class VirtualDtorBase {
-  public:
-    int value;
-    virtual ~VirtualDtorBase() {}
-  };
-
-  class SaveOnVirtualDestruct : public VirtualDtorBase {
-  public:
-    static int lastOutput;
-
-    SaveOnVirtualDestruct();
-    virtual ~SaveOnVirtualDestruct() {
-      lastOutput = value;
-    }
-  };
-
-  void testVirtual() {
-    {
-      const VirtualDtorBase &obj = SaveOnVirtualDestruct();
-      if (obj.value != 42)
-        return;
-      // destructor called here
-    }
-
-    clang_analyzer_eval(SaveOnVirtualDestruct::lastOutput == 42); // expected-warning{{TRUE}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/dtors-in-dtor-cfg-output.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/dtors-in-dtor-cfg-output.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/dtors-in-dtor-cfg-output.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s
-
-class A {
-public:
-  ~A() {}
-};
-
-class B : public virtual A {
-public:
-  ~B() {}
-};
-
-class C : public virtual A {
-public:
-  ~C() {}
-};
-
-class TestOrder : public C, public B, public virtual A {
-  A a;
-  int i;
-  A *p;
-public:
-  ~TestOrder();
-};
-
-TestOrder::~TestOrder() {}
-
-class TestArray {
-  A a[2];
-  A b[0];
-public:
-  ~TestArray();
-};
-
-TestArray::~TestArray() {}
-
-// CHECK:  [B2 (ENTRY)]
-// CHECK:    Succs (1): B1
-// CHECK:  [B1]
-// CHECK:    1: this->a.~A() (Member object destructor)
-// CHECK:    2: ~B() (Base object destructor)
-// CHECK:    3: ~C() (Base object destructor)
-// CHECK:    4: ~A() (Base object destructor)
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B2 (ENTRY)]
-// CHECK:    Succs (1): B1
-// CHECK:  [B1]
-// CHECK:    1: this->a.~A() (Member object destructor)
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/dynamic-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/dynamic-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/dynamic-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,253 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=none -verify %s
-
-void clang_analyzer_eval(bool);
-
-class A {
-public:
-    virtual void f(){};
-
-};
-class B : public A{
-public:
-  int m;
-};
-class C : public A{};
-
-class BB: public B{};
-
-// A lot of the tests below have the if statement in them, which forces the
-// analyzer to explore both path - when the result is 0 and not. This makes
-// sure that we definitely know that the result is non-0 (as the result of
-// the cast).
-int testDynCastFromRadar() {
-    B aa;
-    A *a = &aa;
-    const int* res = 0;
-    B *b = dynamic_cast<B*>(a);
-    static const int i = 5;
-    if(b) {
-        res = &i;
-    } else {
-        res = 0;
-    }
-    return *res; // no warning
-}
-
-int testBaseToBase1() {
-  B b;
-  B *pb = &b;
-  B *pbb = dynamic_cast<B*>(pb);
-  const int* res = 0;
-  static const int i = 5;
-  if (pbb) {
-      res = &i;
-  } else {
-      res = 0;
-  }
-  return *res; // no warning
-}
-
-int testMultipleLevelsOfSubclassing1() {
-  BB bb;
-  B *pb = &bb;
-  A *pa = pb;
-  B *b = dynamic_cast<B*>(pa);
-  const int* res = 0;
-  static const int i = 5;
-  if (b) {
-      res = &i;
-  } else {
-      res = 0;
-  }
-  return *res; // no warning
-}
-
-int testMultipleLevelsOfSubclassing2() {
-  BB bb;
-  A *pbb = &bb;
-  B *b = dynamic_cast<B*>(pbb);
-  BB *s = dynamic_cast<BB*>(b);
-  const int* res = 0;
-  static const int i = 5;
-  if (s) {
-      res = &i;
-  } else {
-      res = 0;
-  }
-  return *res; // no warning
-}
-
-int testMultipleLevelsOfSubclassing3() {
-  BB bb;
-  A *pbb = &bb;
-  B *b = dynamic_cast<B*>(pbb);
-  return b->m; // no warning
-}
-
-int testLHS() {
-    B aa;
-    A *a = &aa;
-    return (dynamic_cast<B*>(a))->m;
-}
-
-int testLHS2() {
-    B aa;
-    A *a = &aa;
-    return (*dynamic_cast<B*>(a)).m;
-}
-
-int testDynCastUnknown2(class A *a) {
-  B *b = dynamic_cast<B*>(a);
-  return b->m; // no warning
-}
-
-int testDynCastUnknown(class A *a) {
-  B *b = dynamic_cast<B*>(a);
-  const int* res = 0;
-  static const int i = 5;
-  if (b) {
-    res = &i;
-  } else {
-    res = 0;
-  }
-  return *res; // expected-warning {{Dereference of null pointer}}
-}
-
-int testDynCastFail2() {
-  C c;
-  A *pa = &c;
-  B *b = dynamic_cast<B*>(pa);
-  return b->m; // expected-warning {{dereference of a null pointer}}
-}
-
-int testLHSFail() {
-    C c;
-    A *a = &c;
-    return (*dynamic_cast<B*>(a)).m; // expected-warning {{Dereference of null pointer}}
-}
-
-int testBaseToDerivedFail() {
-  A a;
-  B *b = dynamic_cast<B*>(&a);
-  return b->m; // expected-warning {{dereference of a null pointer}}
-}
-
-int testConstZeroFail() {
-  B *b = dynamic_cast<B*>((A *)0);
-  return b->m; // expected-warning {{dereference of a null pointer}}
-}
-
-int testConstZeroFail2() {
-  A *a = 0;
-  B *b = dynamic_cast<B*>(a);
-  return b->m; // expected-warning {{dereference of a null pointer}}
-}
-
-int testUpcast() {
-  B b;
-  A *a = dynamic_cast<A*>(&b);
-  const int* res = 0;
-  static const int i = 5;
-  if (a) {
-      res = &i;
-  } else {
-      res = 0;
-  }
-  return *res; // no warning
-}
-
-int testCastToVoidStar() {
-  A a;
-  void *b = dynamic_cast<void*>(&a);
-  const int* res = 0;
-  static const int i = 5;
-  if (b) {
-      res = &i;
-  } else {
-      res = 0;
-  }
-  return *res; // no warning
-}
-
-int testReferenceSuccesfulCast() {
-  B rb;
-  B &b = dynamic_cast<B&>(rb);
-  int *x = 0;
-  return *x; // expected-warning {{Dereference of null pointer}}
-}
-
-int testReferenceFailedCast() {
-  A a;
-  B &b = dynamic_cast<B&>(a);
-  int *x = 0;
-  return *x; // no warning (An exception is thrown by the cast.)
-}
-
-// Here we allow any outcome of the cast and this is good because there is a
-// situation where this will fail. So if the user has written the code in this
-// way, we assume they expect the cast to succeed.
-// Note, this might need special handling if we track types of symbolic casts
-// and use them for dynamic_cast handling.
-int testDynCastMostLikelyWillFail(C *c) {
-  B *b = 0;
-  b = dynamic_cast<B*>(c);
-  const int* res = 0;
-  static const int i = 5;
-  if (b) {
-      res = &i;
-  } else {
-      res = 0;
-  }
-
-  // Note: IPA is turned off for this test because the code below shows how the
-  // dynamic_cast could succeed.
-  return *res; // expected-warning{{Dereference of null pointer}}
-}
-
-class M : public B, public C {};
-void callTestDynCastMostLikelyWillFail() {
-  M m;
-  testDynCastMostLikelyWillFail(&m);
-}
-
-
-void testDynCastToMiddleClass () {
-  class BBB : public BB {};
-  BBB obj;
-  A &ref = obj;
-
-  // These didn't always correctly layer base regions.
-  B *ptr = dynamic_cast<B*>(&ref);
-  clang_analyzer_eval(ptr != 0); // expected-warning{{TRUE}}
-
-  // This is actually statically resolved to be a DerivedToBase cast.
-  ptr = dynamic_cast<B*>(&obj);
-  clang_analyzer_eval(ptr != 0); // expected-warning{{TRUE}}
-}
-
-
-// -----------------------------
-// False positives/negatives.
-// -----------------------------
-
-// Due to symbolic regions not being typed.
-int testDynCastFalsePositive(BB *c) {
-  B *b = 0;
-  b = dynamic_cast<B*>(c);
-  const int* res = 0;
-  static const int i = 5;
-  if (b) {
-      res = &i;
-  } else {
-      res = 0;
-  }
-  return *res; // expected-warning{{Dereference of null pointer}}
-}
-
-// Does not work when we new an object.
-int testDynCastFail3() {
-  A *a = new A();
-  B *b = dynamic_cast<B*>(a);
-  return b->m;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/elementtype.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/elementtype.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/elementtype.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region %s
-
-typedef struct added_obj_st {
-  int type;
-} ADDED_OBJ;
-
-// Test if we are using the canonical type for ElementRegion.
-void f() {
-  ADDED_OBJ *ao[4]={((void*)0),((void*)0),((void*)0),((void*)0)};
-  if (ao[0] != ((void*)0))   {
-    ao[0]->type=0;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/engine/replay-without-inlining.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/engine/replay-without-inlining.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/engine/replay-without-inlining.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -verify %s
-// expected-no-diagnostics
-
-typedef struct {
-    char I[4];
-    int S;
-} Hdr;
-typedef struct {
-    short w;
-} Hdr2;
-typedef struct {
-    Hdr2 usedtobeundef;
-} Info;
-typedef struct {
-    const unsigned char *ib;
-    int cur;
-    int end;
-} IB;
-unsigned long gl(IB *input);
-inline void gbs(IB *input, unsigned char *buf, int count);
-void getB(IB *st, Hdr2 *usedtobeundef);
-inline unsigned char gb(IB *input) {
-    if (input->cur + 1 > input->end)
-      ;
-    return input->ib[(input->cur)++];
-}
-static void getID(IB *st, char str[4]) {
-    str[0] = gb(st);
-    str[1] = gb(st);
-    str[2] = gb(st);
-    str[3] = gb(st);
-}
-static void getH(IB *st, Hdr *header) {
-    getID (st, header->I);
-    header->S = gl(st);
-}
-static void readILBM(IB *st, Info *pic) {
-    // Initialize field;
-    pic->usedtobeundef.w = 5;
-
-    // Time out in the function so that we will be forced to retry with no inlining.
-    Hdr header;
-    getH (st, &header);
-    getID(st, header.I);
-    int i = 0;
-    while (st->cur < st->end && i < 4) {
-      i++;
-      getH (st, &header);
-    }
-}
-int bitmapImageRepFromIFF(IB st, const unsigned char *ib, int il) {
-    Info pic;
-    st.ib = ib;
-    st.cur = 0;
-    st.end = il;
-    readILBM(&st,&pic);
-    return pic.usedtobeundef.w; // No undefined value warning here.
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -analyze -std=c++11 -analyzer-checker=debug.ExprInspection %s
-
-void clang_analyzer_eval(bool);
-
-enum class Foo {
-  Zero
-};
-
-bool pr15703(int x) {
-  return Foo::Zero == (Foo)x; // don't crash
-}
-
-void testCasting(int i) {
-  Foo f = static_cast<Foo>(i);
-  int j = static_cast<int>(f);
-  if (i == 0)
-  {
-    clang_analyzer_eval(f == Foo::Zero); // expected-warning{{TRUE}}
-    clang_analyzer_eval(j == 0); // expected-warning{{TRUE}}
-  }
-  else
-  {
-    clang_analyzer_eval(f == Foo::Zero); // expected-warning{{FALSE}}
-    clang_analyzer_eval(j == 0); // expected-warning{{FALSE}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/exceptions.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/exceptions.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/exceptions.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -analyze -fexceptions -fobjc-exceptions -fcxx-exceptions -analyzer-checker=core,unix.Malloc,debug.ExprInspection -verify %s
-
-void clang_analyzer_checkInlined(bool);
-
-typedef typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-
-id getException();
-void inlinedObjC() {
-  clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-  @throw getException();
-}
-
-int testObjC() {
-  int a; // uninitialized
-  void *mem = malloc(4); // no-warning (ObjC exceptions are usually fatal)
-  inlinedObjC();
-  free(mem);
-  return a; // no-warning
-}
-
-
-void inlinedCXX() {
-  clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-  throw -1;
-}
-
-int testCXX() {
-  int a; // uninitialized
-  // FIXME: this should be reported as a leak, because C++ exceptions are
-  // often not fatal.
-  void *mem = malloc(4);
-  inlinedCXX();
-  free(mem);
-  return a; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/exercise-ps.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/exercise-ps.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/exercise-ps.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-//
-// Just exercise the analyzer on code that has at one point caused issues
-// (i.e., no assertions or crashes).
-
-
-static void f1(const char *x, char *y) {
-  while (*x != 0) {
-    *y++ = *x++;
-  }
-}
-
-// This following case checks that we properly handle typedefs when getting
-// the RvalueType of an ElementRegion.
-typedef struct F12_struct {} F12_typedef;
-typedef void* void_typedef;
-void_typedef f2_helper();
-static void f2(void *buf) {
-  F12_typedef* x;
-  x = f2_helper();
-  memcpy((&x[1]), (buf), 1); // expected-warning{{implicitly declaring library function 'memcpy' with type 'void *(void *, const void *}} \
-  // expected-note{{please include the header <string.h> or explicitly provide a declaration for 'memcpy'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/fields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/fields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/fields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection %s -analyzer-store=region -verify
-
-void clang_analyzer_eval(int);
-
-unsigned foo();
-typedef struct bf { unsigned x:2; } bf;
-void bar() {
-  bf y;
-  *(unsigned*)&y = foo();
-  y.x = 1;
-}
-
-struct s {
-  int n;
-};
-
-void f() {
-  struct s a;
-  int *p = &(a.n) + 1;
-}
-
-typedef struct {
-  int x,y;
-} Point;
-
-Point getit(void);
-void test() {
-  Point p;
-  (void)(p = getit()).x;
-}
-
-#define true ((bool)1)
-#define false ((bool)0)
-typedef _Bool bool;
-
-
-void testLazyCompoundVal() {
-  Point p = {42, 0};
-  Point q;
-  clang_analyzer_eval((q = p).x == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(q.x == 42); // expected-warning{{TRUE}}
-}
-
-
-struct Bits {
-  unsigned a : 1;
-  unsigned b : 2;
-  unsigned c : 1;
-
-  bool x;
-
-  struct InnerBits {
-    bool y;
-
-    unsigned d : 16;
-    unsigned e : 6;
-    unsigned f : 2;
-  } inner;
-};
-
-void testBitfields() {
-  struct Bits bits;
-
-  if (foo() && bits.b) // expected-warning {{garbage}}
-    return;
-  if (foo() && bits.inner.e) // expected-warning {{garbage}}
-    return;
-
-  bits.c = 1;
-  clang_analyzer_eval(bits.c == 1); // expected-warning {{TRUE}}
-
-  if (foo() && bits.b) // expected-warning {{garbage}}
-    return;
-  if (foo() && bits.x) // expected-warning {{garbage}}
-    return;
-
-  bits.x = true;
-  clang_analyzer_eval(bits.x == true); // expected-warning{{TRUE}}
-  bits.b = 2;
-  clang_analyzer_eval(bits.x == true); // expected-warning{{TRUE}}
-  if (foo() && bits.c) // no-warning
-    return;
-
-  bits.inner.e = 50;
-  if (foo() && bits.inner.e) // no-warning
-    return;
-  if (foo() && bits.inner.y) // expected-warning {{garbage}}
-    return;
-  if (foo() && bits.inner.f) // expected-warning {{garbage}}
-    return;
-
-  extern struct InnerBits getInner();
-  bits.inner = getInner();
-  
-  if (foo() && bits.inner.e) // no-warning
-    return;
-  if (foo() && bits.inner.y) // no-warning
-    return;
-  if (foo() && bits.inner.f) // no-warning
-    return;
-
-  bits.inner.f = 1;
-  
-  if (foo() && bits.inner.e) // no-warning
-    return;
-  if (foo() && bits.inner.y) // no-warning
-    return;
-  if (foo() && bits.inner.f) // no-warning
-    return;
-
-  if (foo() && bits.a) // expected-warning {{garbage}}
-    return;
-}
-
-
-//-----------------------------------------------------------------------------
-// Incorrect behavior
-//-----------------------------------------------------------------------------
-
-void testTruncation() {
-  struct Bits bits;
-  bits.c = 0x11; // expected-warning{{implicit truncation}}
-  // FIXME: We don't model truncation of bitfields.
-  clang_analyzer_eval(bits.c == 1); // expected-warning {{FALSE}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/free.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/free.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/free.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-checker=core,unix.Malloc -fblocks -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-checker=core,alpha.unix.MallocWithAnnotations -fblocks -verify %s
-void free(void *);
-
-void t1 () {
-  int a[] = { 1 };
-  free(a); // expected-warning {{Argument to free() is the address of the local variable 'a', which is not memory allocated by malloc()}}
-}
-
-void t2 () {
-  int a = 1;
-  free(&a); // expected-warning {{Argument to free() is the address of the local variable 'a', which is not memory allocated by malloc()}}
-}
-
-void t3 () {
-  static int a[] = { 1 };
-  free(a); // expected-warning {{Argument to free() is the address of the static variable 'a', which is not memory allocated by malloc()}}
-}
-
-void t4 (char *x) {
-  free(x); // no-warning
-}
-
-void t5 () {
-  extern char *ptr();
-  free(ptr()); // no-warning
-}
-
-void t6 () {
-  free((void*)1000); // expected-warning {{Argument to free() is a constant address (1000), which is not memory allocated by malloc()}}
-}
-
-void t7 (char **x) {
-  free(*x); // no-warning
-}
-
-void t8 (char **x) {
-  // ugh
-  free((*x)+8); // no-warning
-}
-
-void t9 () {
-label:
-  free(&&label); // expected-warning {{Argument to free() is the address of the label 'label', which is not memory allocated by malloc()}}
-}
-
-void t10 () {
-  free((void*)&t10); // expected-warning {{Argument to free() is the address of the function 't10', which is not memory allocated by malloc()}}
-}
-
-void t11 () {
-  char *p = (char*)__builtin_alloca(2);
-  free(p); // expected-warning {{Memory allocated by alloca() should not be deallocated}}
-}
-
-void t12 () {
-  free(^{return;}); // expected-warning {{Argument to free() is a block, which is not memory allocated by malloc()}}
-}
-
-void t13 (char a) {
-  free(&a); // expected-warning {{Argument to free() is the address of the parameter 'a', which is not memory allocated by malloc()}}
-}
-
-static int someGlobal[2];
-void t14 () {
-  free(someGlobal); // expected-warning {{Argument to free() is the address of the global variable 'someGlobal', which is not memory allocated by malloc()}}
-}
-
-void t15 (char **x, int offset) {
-  // Unknown value
-  free(x[offset]); // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/func.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/func.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/func.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -verify %s
-
-void clang_analyzer_eval(int);
-
-void f(void) {
-  void (*p)(void);
-  p = f;
-  p = &f;
-  p();
-  (*p)();
-}
-
-void g(void (*fp)(void));
-
-void f2() {
-  g(f);
-}
-
-void f3(void (*f)(void), void (*g)(void)) {
-  clang_analyzer_eval(!f); // expected-warning{{UNKNOWN}}
-  f();
-  clang_analyzer_eval(!f); // expected-warning{{FALSE}}
-
-  clang_analyzer_eval(!g); // expected-warning{{UNKNOWN}}
-  (*g)();
-  clang_analyzer_eval(!g); // expected-warning{{FALSE}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/global-region-invalidation.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/global-region-invalidation.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/global-region-invalidation.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,127 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -disable-free -analyzer-eagerly-assume -analyzer-checker=core,deadcode,alpha.security.taint,debug.TaintTest,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-// Note, we do need to include headers here, since the analyzer checks if the function declaration is located in a system header.
-#include "Inputs/system-header-simulator.h"
-
-// Test that system header does not invalidate the internal global.
-int size_rdar9373039 = 1;
-int rdar9373039() {
-  int x;
-  int j = 0;
-
-  for (int i = 0 ; i < size_rdar9373039 ; ++i)
-    x = 1;
-
-  // strlen doesn't invalidate the value of 'size_rdar9373039'.
-  int extra = (2 + strlen ("Clang") + ((4 - ((unsigned int) (2 + strlen ("Clang")) % 4)) % 4)) + (2 + strlen ("1.0") + ((4 - ((unsigned int) (2 + strlen ("1.0")) % 4)) % 4));
-
-  for (int i = 0 ; i < size_rdar9373039 ; ++i)
-    j += x; // no-warning
-
-  return j;
-}
-
-// Test stdin does not get invalidated by a system call nor by an internal call.
-void foo();
-int stdinTest() {
-  int i = 0;
-  fscanf(stdin, "%d", &i);
-  foo();
-  int m = i; // expected-warning + {{tainted}}
-  fscanf(stdin, "%d", &i);
-  int j = i; // expected-warning + {{tainted}}
-  return m + j; // expected-warning + {{tainted}}
-}
-
-// Test errno gets invalidated by a system call.
-int testErrnoSystem() {
-  int i;
-  int *p = 0;
-  fscanf(stdin, "%d", &i);
-  if (errno == 0) {
-    fscanf(stdin, "%d", &i); // errno gets invalidated here.
-    return 5 / errno; // no-warning
-  }
-
-  errno = 0;
-  fscanf(stdin, "%d", &i); // errno gets invalidated here.
-  return 5 / errno; // no-warning
-}
-
-// Test that errno gets invalidated by internal calls.
-int testErrnoInternal() {
-  int i;
-  int *p = 0;
-  fscanf(stdin, "%d", &i);
-  if (errno == 0) {
-    foo(); // errno gets invalidated here.
-    return 5 / errno; // no-warning
-  }
-  return 0;
-}
-
-// Test that const integer does not get invalidated.
-const int x = 0;
-int constIntGlob() {
-  const int *m = &x;
-    foo();
-  return 3 / *m; // expected-warning {{Division by zero}}
-}
-
-extern const int y;
-int constIntGlobExtern() {
-  if (y == 0) {
-    foo();
-    return 5 / y; // expected-warning {{Division by zero}}
-  }
-  return 0;
-}
-
-static void * const ptr = 0;
-void constPtrGlob() {
-  clang_analyzer_eval(ptr == 0); // expected-warning{{TRUE}}
-  foo();
-  clang_analyzer_eval(ptr == 0); // expected-warning{{TRUE}}
-}
-
-static const int x2 = x;
-void constIntGlob2() {
-  clang_analyzer_eval(x2 == 0); // expected-warning{{TRUE}}
-  foo();
-  clang_analyzer_eval(x2 == 0); // expected-warning{{TRUE}}
-}
-
-void testAnalyzerEvalIsPure() {
-  extern int someGlobal;
-  if (someGlobal == 0) {
-    clang_analyzer_eval(someGlobal == 0); // expected-warning{{TRUE}}
-    clang_analyzer_eval(someGlobal == 0); // expected-warning{{TRUE}}
-  }
-}
-
-// Test that static variables with initializers do not get reinitialized on
-// recursive calls.
-void Function2(void);
-int *getPtr();
-void Function1(void) {
-  static unsigned flag;
-  static int *p = 0;
-  if (!flag) {
-    flag = 1;
-    p = getPtr();
-  }
-  int m = *p; // no-warning: p is never null.
-  m++;
-  Function2();
-}
-void Function2(void) {
-    Function1();
-}
-
-void SetToNonZero(void) {
-  static int g = 5;
-  clang_analyzer_eval(g == 5); // expected-warning{{TRUE}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/global_region_invalidation.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/global_region_invalidation.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/global_region_invalidation.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,188 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-#include "Inputs/system-header-simulator.h"
-
-void use(int);
-id foo(int x) {
-  if (x)
-    return 0;
-  static id p = foo(1); 
-    clang_analyzer_eval(p == 0); // expected-warning{{TRUE}}
-  return p;
-}
-
-const int &globalIntRef = 42;
-
-void testGlobalRef() {
-  // FIXME: Should be TRUE, but should at least not crash.
-  clang_analyzer_eval(globalIntRef == 42); // expected-warning{{UNKNOWN}}
-}
-
-extern int globalInt;
-struct IntWrapper {
-  int value;
-};
-extern struct IntWrapper globalStruct;
-extern void invalidateGlobals();
-
-void testGlobalInvalidation() {
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-
-  if (globalInt != 42)
-    return;
-  if (globalStruct.value != 43)
-    return;
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{TRUE}}
-
-  invalidateGlobals();
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-
-  // Repeat to make sure we don't get the /same/ new symbolic values.
-  if (globalInt != 42)
-    return;
-  if (globalStruct.value != 43)
-    return;
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{TRUE}}
-
-  invalidateGlobals();
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-}
-
-void testGlobalInvalidationWithDirectBinding() {
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-
-  globalInt = 42;
-  globalStruct.value = 43;
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{TRUE}}
-  clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{TRUE}}
-
-  invalidateGlobals();
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(globalStruct.value == 43); // expected-warning{{UNKNOWN}}
-}
-
-void testStaticLocals(void) {
-  static int i;
-  int tmp;
-
-  extern int someSymbolicValue();
-  i = someSymbolicValue();
-
-  if (i == 5) {
-    clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
-    scanf("%d", &tmp);
-    clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
-    invalidateGlobals();
-    clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
-  }
-
-  i = 6;
-  clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-  scanf("%d", &tmp);
-  clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-  invalidateGlobals();
-  clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-
-  i = someSymbolicValue();
-  if (i == 7) {
-    clang_analyzer_eval(i == 7); // expected-warning{{TRUE}}
-    scanf("%d", &i);
-    clang_analyzer_eval(i == 7); // expected-warning{{UNKNOWN}}
-  }
-
-  i = 8;
-  clang_analyzer_eval(i == 8); // expected-warning{{TRUE}}
-  scanf("%d", &i);
-  clang_analyzer_eval(i == 8); // expected-warning{{UNKNOWN}}
-}
-
-void testNonSystemGlobals(void) {
-  extern int i;
-  int tmp;
-
-  if (i == 5) {
-    clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
-    scanf("%d", &tmp);
-    clang_analyzer_eval(i == 5); // expected-warning{{TRUE}}
-    invalidateGlobals();
-    clang_analyzer_eval(i == 5); // expected-warning{{UNKNOWN}}
-  }
-
-  i = 6;
-  clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-  scanf("%d", &tmp);
-  clang_analyzer_eval(i == 6); // expected-warning{{TRUE}}
-  invalidateGlobals();
-  clang_analyzer_eval(i == 6); // expected-warning{{UNKNOWN}}
-
-  if (i == 7) {
-    clang_analyzer_eval(i == 7); // expected-warning{{TRUE}}
-    scanf("%d", &i);
-    clang_analyzer_eval(i == 7); // expected-warning{{UNKNOWN}}
-  }
-
-  i = 8;
-  clang_analyzer_eval(i == 8); // expected-warning{{TRUE}}
-  scanf("%d", &i);
-  clang_analyzer_eval(i == 8); // expected-warning{{UNKNOWN}}
-}
-
-void testWrappedGlobals(void) {
-  extern char c;
-  SomeStruct s;
-
-  if (c == 'C') {
-    s.p = &c;
-    clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
-    fakeSystemHeaderCall(0);
-    clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
-    fakeSystemHeaderCall(&s);
-    clang_analyzer_eval(c == 'C'); // expected-warning{{UNKNOWN}}
-  }
-
-  c = 'c';
-  s.p = &c;
-  clang_analyzer_eval(c == 'c'); // expected-warning{{TRUE}}
-  fakeSystemHeaderCall(0);
-  clang_analyzer_eval(c == 'c'); // expected-warning{{TRUE}}
-  fakeSystemHeaderCall(&s);
-  clang_analyzer_eval(c == 'c'); // expected-warning{{UNKNOWN}}
-
-  if (c == 'C') {
-    s.p = &c;
-    clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
-    fakeSystemHeaderCall(0);
-    clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
-    fakeSystemHeaderCall(&s);
-    clang_analyzer_eval(c == 'C'); // expected-warning{{UNKNOWN}}
-  }
-}
-
-void testWrappedStaticsViaGlobal(void) {
-  static char c;
-  extern SomeStruct s;
-
-  extern char getSomeChar();
-  c = getSomeChar();
-
-  if (c == 'C') {
-    s.p = &c;
-    clang_analyzer_eval(c == 'C'); // expected-warning{{TRUE}}
-    invalidateGlobals();
-    clang_analyzer_eval(c == 'C'); // expected-warning{{UNKNOWN}}
-  }
-
-  c = 'c';
-  s.p = &c;
-  clang_analyzer_eval(c == 'c'); // expected-warning{{TRUE}}
-  invalidateGlobals();
-  clang_analyzer_eval(c == 'c'); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/html-diags-multifile.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/html-diags-multifile.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/html-diags-multifile.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: mkdir -p %t.dir
-// RUN: %clang_cc1 -analyze -analyzer-output=html -analyzer-checker=core -o %t.dir
-// RUN: ls %t.dir | grep report | count 0
-// RUN: rm -fR %t.dir
-
-// This tests that we do not currently emit HTML diagnostics for reports that
-// cross file boundaries.
-
-#include "html-diags-multifile.h"
-
-#define CALL_HAS_BUG(q) has_bug(q)
-
-void test_call_macro() {
-  CALL_HAS_BUG(0);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/html-diags-multifile.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/html-diags-multifile.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/html-diags-multifile.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-#define DEREF(p) *p = 0xDEADBEEF
-void has_bug(int *p) {
-  DEREF(p);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/html-diags.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/html-diags.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/html-diags.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: rm -fR %T/dir
-// RUN: mkdir %T/dir
-// RUN: %clang_cc1 -analyze -analyzer-output=html -analyzer-checker=core -o %T/dir %s
-
-// Currently this test mainly checks that the HTML diagnostics doesn't crash
-// when handling macros will calls with macros.  We should actually validate
-// the output, but that requires being able to match against a specifically
-// generate HTML file.
-
-#define DEREF(p) *p = 0xDEADBEEF
-
-void has_bug(int *p) {
-  DEREF(p);
-}
-
-#define CALL_HAS_BUG(q) has_bug(q)
-
-void test_call_macro() {
-  CALL_HAS_BUG(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations-limited-loops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations-limited-loops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations-limited-loops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=core,alpha.deadcode.IdempotentOperations -analyzer-max-loop 3 -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=core,alpha.deadcode.IdempotentOperations -analyzer-max-loop 4 -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=core,alpha.deadcode.IdempotentOperations %s -verify
-
-void always_warning() { int *p = 0; *p = 0xDEADBEEF; } // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
-
-// This test case previously caused a bogus idempotent operation warning
-// due to us not properly culling warnings due to incomplete analysis of loops.
-int pr8403()
-{
-        int i;
-        for(i=0; i<10; i++)
-        {
-                int j;
-                for(j=0; j+1<i; j++)
-                {
-                }
-        }
-        return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,244 +0,0 @@
-// RUN: %clang_cc1 -Wno-int-to-pointer-cast -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=alpha.deadcode.IdempotentOperations -verify %s
-
-// Basic tests
-
-extern void test(int i);
-extern void test_f(float f);
-
-unsigned basic() {
-  int x = 10, zero = 0, one = 1;
-
-  // x op x
-  x = x;        // expected-warning {{Assigned value is always the same as the existing value}}
-  test(x - x);  // expected-warning {{Both operands to '-' always have the same value}}
-  x -= x;       // expected-warning {{Both operands to '-=' always have the same value}}
-  x = 10;       // no-warning
-  test(x / x);  // expected-warning {{Both operands to '/' always have the same value}}
-  x /= x;       // expected-warning {{Both operands to '/=' always have the same value}}
-  x = 10;       // no-warning
-  test(x & x);  // expected-warning {{Both operands to '&' always have the same value}}
-  x &= x;       // expected-warning {{Both operands to '&=' always have the same value}}
-  test(x | x);  // expected-warning {{Both operands to '|' always have the same value}}
-  x |= x;       // expected-warning {{Both operands to '|=' always have the same value}}
-
-  // x op 1
-  test(x * one);  // expected-warning {{The right operand to '*' is always 1}}
-  x *= one;       // expected-warning {{The right operand to '*=' is always 1}}
-  test(x / one);  // expected-warning {{The right operand to '/' is always 1}}
-  x /= one;       // expected-warning {{The right operand to '/=' is always 1}}
-
-  // 1 op x
-  test(one * x);   // expected-warning {{The left operand to '*' is always 1}}
-
-  // x op 0
-  test(x + zero);  // expected-warning {{The right operand to '+' is always 0}}
-  test(x - zero);  // expected-warning {{The right operand to '-' is always 0}}
-  test(x * zero);  // expected-warning {{The right operand to '*' is always 0}}
-  test(x & zero);  // expected-warning {{The right operand to '&' is always 0}}
-  test(x | zero);  // expected-warning {{The right operand to '|' is always 0}}
-  test(x ^ zero);  // expected-warning {{The right operand to '^' is always 0}}
-  test(x << zero); // expected-warning {{The right operand to '<<' is always 0}}
-  test(x >> zero); // expected-warning {{The right operand to '>>' is always 0}}
-
-  // 0 op x
-  test(zero + x);  // expected-warning {{The left operand to '+' is always 0}}
-  test(zero - x);  // expected-warning {{The left operand to '-' is always 0}}
-  test(zero / x);  // expected-warning {{The left operand to '/' is always 0}}
-  test(zero * x);  // expected-warning {{The left operand to '*' is always 0}}
-  test(zero & x);  // expected-warning {{The left operand to '&' is always 0}}
-  test(zero | x);  // expected-warning {{The left operand to '|' is always 0}}
-  test(zero ^ x);  // expected-warning {{The left operand to '^' is always 0}}
-  test(zero << x); // expected-warning {{The left operand to '<<' is always 0}}
-  test(zero >> x); // expected-warning {{The left operand to '>>' is always 0}}
-
-  // Overwrite the values so these aren't marked as Pseudoconstants
-  x = 1;
-  zero = 2;
-  one = 3;
-
-  return x + zero + one;
-}
-
-void floats(float x) {
-  test_f(x * 1.0);  // no-warning
-  test_f(x * 1.0F); // no-warning
-}
-
-// Ensure that we don't report false poitives in complex loops
-void bailout() {
-  int unused = 0, result = 4;
-  result = result; // expected-warning {{Assigned value is always the same as the existing value}}
-
-  for (unsigned bg = 0; bg < 1024; bg ++) {
-    result = bg * result; // no-warning
-
-    for (int i = 0; i < 256; i++) {
-      unused *= i; // no-warning
-    }
-  }
-}
-
-// Relaxed liveness - check that we don't kill liveness at assignments
-typedef unsigned uintptr_t;
-void kill_at_assign() {
-  short array[2];
-  uintptr_t x = (uintptr_t) array;
-  short *p = (short *) x;
-
-  // The following branch should be infeasible.
-  if (!(p = &array[0])) { // expected-warning{{Assigned value is always the same as the existing value}}
-    p = 0;
-    *p = 1; // no-warning
-  }
-}
-
-// False positive tests
-
-unsigned false1() {
-  int a = 10;
-  return a * (5 - 2 - 3); // no-warning
-}
-
-enum testenum { enum1 = 0, enum2 };
-unsigned false2() {
-  int a = 1234;
-  return enum1 + a; // no-warning
-}
-
-// Self assignments of unused variables are common false positives
-unsigned false3(int param, int param2) {
-  param = param; // no-warning
-
-  // if a self assigned variable is used later, then it should be reported still
-  param2 = param2; // expected-warning{{Assigned value is always the same as the existing value}}
-
-  unsigned nonparam = 5;
-
-  nonparam = nonparam; // expected-warning{{Assigned value is always the same as the existing value}}
-
-  return param2 + nonparam;
-}
-
-// Pseudo-constants (vars only read) and constants should not be reported
-unsigned false4() {
-  // Trivial constant
-  const int height = 1;
-  int c = 42;
-  test(height * c); // no-warning
-
-  // Pseudo-constant (never changes after decl)
-  int width = height;
-
-  return width * 10; // no-warning
-}
-
-// Block pseudoconstants
-void false4a() {
-  // Pseudo-constant
-  __block int a = 1;
-  int b = 10;
-  __block int c = 0;
-  b *= a; // no-warning
-
-  ^{
-    // Psuedoconstant block var
-    test(b * c); // no-warning
-
-    // Non-pseudoconstant block var
-    int d = 0;
-    test(b * d); // expected-warning{{The right operand to '*' is always 0}}
-    d = 5;
-    test(d);
-  }();
-
-  test(a + b);
-}
-
-// Static vars are common false positives
-int false5() {
-  static int test = 0;
-  int a = 56;
-  a *= test; // no-warning
-  test++;
-  return a;
-}
-
-// Non-local storage vars are considered false positives
-int globalInt = 1;
-int false6() {
-  int localInt = 23;
-
-  localInt /= globalInt;
-
-  return localInt;
-}
-
-// Check that assignments filter out false positives correctly
-int false7() {
-  int zero = 0; // pseudo-constant
-  int one = 1;
-
-  int a = 55;
-  a = a; // expected-warning{{Assigned value is always the same as the existing value}}
-  a = enum1 * a; // no-warning
-
-  int b = 123;
-  b = b; // no-warning
-
-  return a;
-}
-
-// Check truncations do not flag as self-assignments
-void false8() {
-  int a = 10000000;
-  a = (short)a; // no-warning
-  test(a);
-}
-
-// This test case previously flagged a warning at 'b == c' because the
-// analyzer previously allowed 'UnknownVal' as the index for ElementRegions.
-typedef struct RDar8431728_F {
-  int RDar8431728_A;
-  unsigned char *RDar8431728_B;
-  int RDar8431728_E[6];
-} RDar8431728_D;
-static inline int RDar8431728_C(RDar8431728_D * s, int n,
-    unsigned char **RDar8431728_B_ptr) {
-  int xy, wrap, pred, a, b, c;
-
-  xy = s->RDar8431728_E[n];
-  wrap = s->RDar8431728_A;
-
-  a = s->RDar8431728_B[xy - 1];
-  b = s->RDar8431728_B[xy - 1 - wrap];
-  c = s->RDar8431728_B[xy - wrap];
-
-  if (b == c) { // no-warning
-    pred = a;
-  } else {
-    pred = c;
-  }
-
-  *RDar8431728_B_ptr = &s->RDar8431728_B[xy];
-
-  return pred;
-}
-
-// <rdar://problem/8601243> - Don't warn on pointer arithmetic.  This
-// is often idiomatic.
-unsigned rdar8601243_aux(unsigned n);
-void rdar8601243() {
-  char arr[100];
-  char *start = arr;
-  start = start + rdar8601243_aux(sizeof(arr) - (arr - start)); // no-warning
-  (void) start;
-}
-
-
-float testFloatCast(int i) {
-  float f = i;
-
-  // Don't crash when trying to create a "zero" float.
-  return f - f;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=alpha.deadcode.IdempotentOperations -verify %s
-
-// C++ specific false positives
-
-extern void test(int i);
-extern void test_ref(int &i);
-
-// Test references affecting pseudoconstants
-void false1() {
-  int a = 0;
-  int five = 5;
-  int &b = a;
-   test(five * a); // expected-warning {{The right operand to '*' is always 0}}
-   b = 4;
-}
-
-// Test not flagging idempotent operations because we aborted the analysis
-// of a path because of an unsupported construct.
-struct RDar9219143_Foo {
-  ~RDar9219143_Foo();
-  operator bool() const;
-};
-
-RDar9219143_Foo foo();
-unsigned RDar9219143_bar();
-void RDar9219143_test() {
-  unsigned i, e;
-  for (i = 0, e = RDar9219143_bar(); i != e; ++i)
-    if (foo())
-      break;  
-  if (i == e) // no-warning
-    return;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/idempotent-operations.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-opt-analyze-nested-blocks -analyzer-checker=alpha.deadcode.IdempotentOperations,osx.cocoa.RetainCount -verify %s
-// expected-no-diagnostics
-
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
-typedef struct _NSZone NSZone;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
- at end
-
- at interface NSObject {}
-  @property int locked;
-  @property(nonatomic, readonly) NSObject *media;
- at end
-
-// <rdar://problem/8725041> - Don't flag idempotent operation warnings when
-// a method may invalidate an instance variable.
- at interface Rdar8725041 : NSObject {
-  id _attribute;
-}
-  - (void) method2;
- at end
-
- at implementation Rdar8725041
-- (BOOL) method1 {
-  BOOL needsUpdate = (BOOL)0;
-  id oldAttribute = _attribute;
-  [self method2];
-  needsUpdate |= (_attribute != oldAttribute); // no-warning
-  return needsUpdate;
-}
-
-- (void) method2
-{
-  _attribute = ((void*)0);
-}
- at end
-
-// Test that the idempotent operations checker works in the prescence
-// of property expressions.
-void pr9116(NSObject *placeholder) {
-  int x = placeholder.media.locked = placeholder ? 1 : 0;
-}
-
-// <rdar://problem/9130239>: Test that calling property setters doesn't 
-// trigger an assertion failure when the object is nil.
- at interface RDar9130239
- at property (assign) id delegate;
- at end
-
-void test_RDar9130239(RDar9130239 *x) {
-  if (x)
-    return;
-  x.delegate = x; // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/initializer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/initializer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/initializer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=constructors -std=c++11 -verify %s
-
-void clang_analyzer_eval(bool);
-
-class A {
-  int x;
-public:
-  A();
-};
-
-A::A() : x(0) {
-  clang_analyzer_eval(x == 0); // expected-warning{{TRUE}}
-}
-
-
-class DirectMember {
-  int x;
-public:
-  DirectMember(int value) : x(value) {}
-
-  int getX() { return x; }
-};
-
-void testDirectMember() {
-  DirectMember obj(3);
-  clang_analyzer_eval(obj.getX() == 3); // expected-warning{{TRUE}}
-}
-
-
-class IndirectMember {
-  struct {
-    int x;
-  };
-public:
-  IndirectMember(int value) : x(value) {}
-
-  int getX() { return x; }
-};
-
-void testIndirectMember() {
-  IndirectMember obj(3);
-  clang_analyzer_eval(obj.getX() == 3); // expected-warning{{TRUE}}
-}
-
-
-struct DelegatingConstructor {
-  int x;
-  DelegatingConstructor(int y) { x = y; }
-  DelegatingConstructor() : DelegatingConstructor(42) {}
-};
-
-void testDelegatingConstructor() {
-  DelegatingConstructor obj;
-  clang_analyzer_eval(obj.x == 42); // expected-warning{{TRUE}}
-}
-
-
-struct RefWrapper {
-  RefWrapper(int *p) : x(*p) {}
-  RefWrapper(int &r) : x(r) {}
-  int &x;
-};
-
-void testReferenceMember() {
-  int *p = 0;
-  RefWrapper X(p); // expected-warning at -7 {{Dereference of null pointer}}
-}
-
-void testReferenceMember2() {
-  int *p = 0;
-  RefWrapper X(*p); // expected-warning {{Forming reference to null pointer}}
-}
-
-
-extern "C" char *strdup(const char *);
-
-class StringWrapper {
-  char *str;
-public:
-  StringWrapper(const char *input) : str(strdup(input)) {} // no-warning
-};
-
-
-// PR15070 - Constructing a type containing a non-POD array mistakenly
-// tried to perform a bind instead of relying on the CXXConstructExpr,
-// which caused a cast<> failure in RegionStore.
-namespace DefaultConstructorWithCleanups {
-  class Element {
-  public:
-    int value;
-
-    class Helper {
-    public:
-      ~Helper();
-    };
-    Element(Helper h = Helper());
-  };
-  class Wrapper {
-  public:
-    Element arr[2];
-
-    Wrapper();
-  };
-
-  Wrapper::Wrapper() /* initializers synthesized */ {}
-
-  int test() {
-    Wrapper w;
-    return w.arr[0].value; // no-warning
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/initializers-cfg-output.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/initializers-cfg-output.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/initializers-cfg-output.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG %s 2>&1 | FileCheck %s
-
-class A {
-public:
-  A() {}
-  A(int i) {}
-};
-
-class B : public virtual A {
-public:
-  B() {}
-  B(int i) : A(i) {}
-};
-
-class C : public virtual A {
-public:
-  C() {}
-  C(int i) : A(i) {}
-};
-
-class TestOrder : public C, public B, public A {
-  int i;
-  int& r;
-public:
-  TestOrder();
-};
-
-TestOrder::TestOrder()
-  : r(i), B(), i(), C() {
-  A a;
-}
-
-class TestControlFlow {
-  int x, y, z;
-public:
-  TestControlFlow(bool b);
-};
-
-TestControlFlow::TestControlFlow(bool b)
-  : y(b ? 0 : 1)
-  , x(0)
-  , z(y) {
-  int v;
-}
-
-// CHECK:  [B2 (ENTRY)]
-// CHECK:    Succs (1): B1
-// CHECK:  [B1]
-// CHECK:    1:  (CXXConstructExpr, class A)
-// CHECK:    2: A([B1.1]) (Base initializer)
-// CHECK:    3:  (CXXConstructExpr, class C)
-// CHECK:    4: C([B1.3]) (Base initializer)
-// CHECK:    5:  (CXXConstructExpr, class B)
-// CHECK:    6: B([B1.5]) (Base initializer)
-// CHECK:    7:  (CXXConstructExpr, class A)
-// CHECK:    8: A([B1.7]) (Base initializer)
-// CHECK:    9: /*implicit*/int()
-// CHECK:   10: i([B1.9]) (Member initializer)
-// CHECK:   11: this
-// CHECK:   12: [B1.11]->i
-// CHECK:   13: r([B1.12]) (Member initializer)
-// CHECK:   14:  (CXXConstructExpr, class A)
-// CHECK:   15: A a;
-// CHECK:    Preds (1): B2
-// CHECK:    Succs (1): B0
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1
-// CHECK:  [B5 (ENTRY)]
-// CHECK:    Succs (1): B4
-// CHECK:  [B1]
-// CHECK:    1: [B4.4] ? [B2.1] : [B3.1]
-// CHECK:    2: y([B1.1]) (Member initializer)
-// CHECK:    3: this
-// CHECK:    4: [B1.3]->y
-// CHECK:    5: [B1.4] (ImplicitCastExpr, LValueToRValue, int)
-// CHECK:    6: z([B1.5]) (Member initializer)
-// CHECK:    7: int v;
-// CHECK:    Preds (2): B2 B3
-// CHECK:    Succs (1): B0
-// CHECK:  [B2]
-// CHECK:    1: 0
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B3]
-// CHECK:    1: 1
-// CHECK:    Preds (1): B4
-// CHECK:    Succs (1): B1
-// CHECK:  [B4]
-// CHECK:    1: 0
-// CHECK:    2: x([B4.1]) (Member initializer)
-// CHECK:    3: b
-// CHECK:    4: [B4.3] (ImplicitCastExpr, LValueToRValue, _Bool)
-// CHECK:    T: [B4.4] ? ... : ...
-// CHECK:    Preds (1): B5
-// CHECK:    Succs (2): B2 B3
-// CHECK:  [B0 (EXIT)]
-// CHECK:    Preds (1): B1

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inline-not-supported.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inline-not-supported.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inline-not-supported.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fblocks -analyze -analyzer-checker=core -verify %s
-
-// For now, don't inline varargs.
-void foo(int *x, ...) {
-  *x = 1;
-}
-
-void bar() {
-  foo(0, 2); // no-warning
-}
-
-// For now, don't inline vararg blocks.
-void (^baz)(int *x, ...) = ^(int *x, ...) { *x = 1; };
-
-void taz() {
-  baz(0, 2); // no-warning
-}
-
-// For now, don't inline global blocks.
-void (^qux)(int *p) = ^(int *p) { *p = 1; };
-void test_qux() {
-  qux(0); // no-warning
-}
-
-
-void test_analyzer_is_running() {
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning {{null}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inline-plist.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inline-plist.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inline-plist.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1963 +0,0 @@
-// RUN: %clang --analyze %s -fblocks -Xanalyzer -analyzer-output=text -Xanalyzer -analyzer-config -Xanalyzer suppress-null-return-paths=false -Xclang -verify %s
-// RUN: %clang --analyze %s -fblocks -Xanalyzer -analyzer-config -Xanalyzer suppress-null-return-paths=false -o %t
-// RUN: FileCheck -input-file %t %s
-
-// <rdar://problem/10967815>
-void mmm(int y) {
-  if (y != 0)
-    y++;
-}
-
-int foo(int x, int y) {
-  mmm(y);
-  if (x != 0) {
-    // expected-note at -1 {{Assuming 'x' is equal to 0}}
-    // expected-note at -2 {{Taking false branch}}
-    x++;
-  }
-  return 5/x; // expected-warning{{Division by zero}} expected-note{{Division by zero}}
-}
-
-// Test a bug triggering only when inlined.
-void has_bug(int *p) {
-  *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-void test_has_bug() {
-  has_bug(0);
-  // expected-note at -1 {{Passing null pointer value via 1st parameter 'p'}}
-  // expected-note at -2 {{Calling 'has_bug'}}
-}
-
-void triggers_bug(int *p) {
-  *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-// This function triggers a bug by calling triggers_bug().  The diagnostics
-// should show when p is assumed to be null.
-void bar(int *p) {
-  if (!!p) {
-    // expected-note at -1 {{Assuming 'p' is null}}
-    // expected-note at -2 {{Taking false branch}}
-    return;
-  }
-  
-  if (p == 0) {
-    // expected-note at -1 {{Taking true branch}}
-    triggers_bug(p);
-    // expected-note at -1 {{Passing null pointer value via 1st parameter 'p'}}
-    // expected-note at -2 {{Calling 'triggers_bug'}}
-  }
-}
-
-// ========================================================================== //
-// Test inlining of blocks.
-// ========================================================================== //
-
-void test_block__capture_null() {
-  int *p = 0; // expected-note{{'p' initialized to a null pointer value}}
-  ^(){ // expected-note {{Calling anonymous block}}
-    *p = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-  }();
-  
-}
-
-void test_block_ret() {
-  int *p = ^int*(){ // expected-note {{Calling anonymous block}} expected-note{{Returning to caller}} expected-note {{'p' initialized to a null pointer value}}
-    int *q = 0; // expected-note {{'q' initialized to a null pointer value}}
-    return q; // expected-note {{Returning null pointer (loaded from 'q')}}
-  }();
-  *p = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-void test_block_blockvar() {
-  __block int *p;
-  ^(){ // expected-note{{Calling anonymous block}} expected-note{{Returning to caller}}
-    p = 0; // expected-note{{Null pointer value stored to 'p'}}
-  }();
-  *p = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-void test_block_arg() {
-  int *p;
-  ^(int **q){ // expected-note{{Calling anonymous block}} expected-note{{Returning to caller}}
-    *q = 0; // expected-note{{Null pointer value stored to 'p'}}
-  }(&p);
-  *p = 1; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}} expected-note{{Dereference of null pointer (loaded from variable 'p')}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>13</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>13</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>13</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>18</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Division by zero</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Division by zero</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Division by zero</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Division by zero</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>foo</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>7</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>18</integer>
-// CHECK-NEXT:    <key>col</key><integer>11</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>27</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>27</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>27</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>27</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>27</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>27</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'has_bug'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'has_bug'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>22</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_has_bug'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_has_bug'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>22</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>22</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>23</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>23</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>23</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>has_bug</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>23</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>39</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>39</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>39</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>45</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>45</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>45</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>45</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>47</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>47</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>47</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>47</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>47</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>47</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'triggers_bug'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'triggers_bug'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>32</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'bar'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'bar'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>33</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>triggers_bug</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>33</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>58</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>59</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>61</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>59</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_block__capture_null'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_block__capture_null'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>60</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>66</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>66</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>69</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>66</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_block_ret'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_block_ret'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>67</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>67</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>67</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'q' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'q' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>68</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>68</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>68</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'q')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'q')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>66</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>66</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>69</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>66</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>66</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>66</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>70</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>70</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>70</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_block_ret</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>70</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>74</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>74</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>75</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>75</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>75</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_block_blockvar'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_block_blockvar'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>76</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>75</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>75</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>78</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>78</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>78</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_block_blockvar</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>78</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>83</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>85</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>83</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_block_arg'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_block_arg'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>84</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>84</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>84</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>84</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>84</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>83</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>85</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>86</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_block_arg</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>86</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inline-unique-reports.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inline-unique-reports.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inline-unique-reports.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,304 +0,0 @@
-// RUN: %clang --analyze %s -o %t > /dev/null 2>&1
-// RUN: FileCheck -input-file %t %s
-
-static inline bug(int *p) {
-  *p = 0xDEADBEEF;
-}
-
-void test_bug_1() {
-  int *p = 0;
-  bug(p);
-}
-
-void test_bug_2() {
-  int *p = 0;
-  bug(p);
-}
-
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>14</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>15</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>15</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'bug'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'bug'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>4</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_bug_2'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_bug_2'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>4</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>4</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>5</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>5</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>5</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>bug</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>5</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,112 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-void clang_analyzer_checkInlined(int);
-
-int test1_f1() {
-  int y = 1;
-  y++;
-  clang_analyzer_checkInlined(1); // expected-warning{{TRUE}}
-  return y;
-}
-
-void test1_f2() {
-  int x = 1;
-  x = test1_f1();
-  if (x == 1) {
-    int *p = 0;
-    *p = 3; // no-warning
-  }
-  if (x == 2) {
-    int *p = 0;
-    *p = 3; // expected-warning{{Dereference of null pointer (loaded from variable 'p')}}
-  }
-}
-
-// Test that inlining works when the declared function has less arguments
-// than the actual number in the declaration.
-void test2_f1() {}
-int test2_f2();
-
-void test2_f3() { 
-  test2_f1(test2_f2()); // expected-warning{{too many arguments in call to 'test2_f1'}}
-}
-
-// Test that inlining works with recursive functions.
-
-unsigned factorial(unsigned x) {
-  if (x <= 1)
-    return 1;
-  return x * factorial(x - 1);
-}
-
-void test_factorial() {
-  if (factorial(3) == 6) {
-    int *p = 0;
-    *p = 0xDEADBEEF;  // expected-warning {{null}}
-  }
-  else {
-    int *p = 0;
-    *p = 0xDEADBEEF; // no-warning
-  }
-}
-
-void test_factorial_2() {
-  unsigned x = factorial(3);
-  if (x == factorial(3)) {
-    int *p = 0;
-    *p = 0xDEADBEEF;  // expected-warning {{null}}
-  }
-  else {
-    int *p = 0;
-    *p = 0xDEADBEEF; // no-warning
-  }
-}
-
-// Test that returning stack memory from a parent stack frame does
-// not trigger a warning.
-static char *return_buf(char *buf) {
-  return buf + 10;
-}
-
-void test_return_stack_memory_ok() {
-  char stack_buf[100];
-  char *pos = return_buf(stack_buf);
-  (void) pos;
-}
-
-char *test_return_stack_memory_bad() {
-  char stack_buf[100];
-  char *x = stack_buf;
-  return x; // expected-warning {{stack memory associated}}
-}
-
-// Test that passing a struct value with an uninitialized field does
-// not trigger a warning if we are inlining and the body is available.
-struct rdar10977037 { int x, y; };
-int test_rdar10977037_aux(struct rdar10977037 v) { return v.y; }
-int test_rdar10977037_aux_2(struct rdar10977037 v);
-int test_rdar10977037() {
-  struct rdar10977037 v;
-  v.y = 1;
-  v. y += test_rdar10977037_aux(v); // no-warning
-  return test_rdar10977037_aux_2(v); // expected-warning {{Passed-by-value struct argument contains uninitialized data}}
-}
-
-
-// Test inlining a forward-declared function.
-// This regressed when CallEvent was first introduced.
-int plus1(int x);
-void test() {
-  clang_analyzer_eval(plus1(2) == 3); // expected-warning{{TRUE}}
-}
-
-int plus1(int x) {
-  return x + 1;
-}
-
-
-void never_called_by_anyone() {
-  clang_analyzer_checkInlined(0); // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inline.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inline.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inline.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,422 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config ipa=inlining -verify %s
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-
-// This is the standard placement new.
-inline void* operator new(size_t, void* __p) throw()
-{
-  return __p;
-}
-
-
-class A {
-public:
-  int getZero() { return 0; }
-  virtual int getNum() { return 0; }
-};
-
-void test(A &a) {
-  clang_analyzer_eval(a.getZero() == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a.getNum() == 0); // expected-warning{{UNKNOWN}}
-
-  A copy(a);
-  clang_analyzer_eval(copy.getZero() == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(copy.getNum() == 0); // expected-warning{{TRUE}}
-}
-
-
-class One : public A {
-public:
-  virtual int getNum() { return 1; }
-};
-
-void testPathSensitivity(int x) {
-  A a;
-  One b;
-
-  A *ptr;
-  switch (x) {
-  case 0:
-    ptr = &a;
-    break;
-  case 1:
-    ptr = &b;
-    break;
-  default:
-    return;
-  }
-
-  // This should be true on both branches.
-  clang_analyzer_eval(ptr->getNum() == x); // expected-warning {{TRUE}}
-}
-
-
-namespace PureVirtualParent {
-  class Parent {
-  public:
-    virtual int pureVirtual() const = 0;
-    int callVirtual() const {
-      return pureVirtual();
-    }
-  };
-
-  class Child : public Parent {
-  public:
-    virtual int pureVirtual() const {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-      return 42;
-    }
-  };
-
-  void testVirtual() {
-    Child x;
-
-    clang_analyzer_eval(x.pureVirtual() == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(x.callVirtual() == 42); // expected-warning{{TRUE}}
-  }
-}
-
-
-namespace PR13569 {
-  class Parent {
-  protected:
-    int m_parent;
-    virtual int impl() const = 0;
-
-    Parent() : m_parent(0) {}
-
-  public:
-    int interface() const {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-      return impl();
-    }
-  };
-
-  class Child : public Parent {
-  protected:
-    virtual int impl() const {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-      return m_parent + m_child;
-    }
-
-  public:
-    Child() : m_child(0) {}
-
-    int m_child;
-  };
-
-  void testVirtual() {
-    Child x;
-    x.m_child = 42;
-
-    // Don't crash when inlining and devirtualizing.
-    x.interface();
-  }
-
-
-  class Grandchild : public Child {};
-
-  void testDevirtualizeToMiddle() {
-    Grandchild x;
-    x.m_child = 42;
-
-    // Don't crash when inlining and devirtualizing.
-    x.interface();
-  }
-}
-
-namespace PR13569_virtual {
-  class Parent {
-  protected:
-    int m_parent;
-    virtual int impl() const = 0;
-
-    Parent() : m_parent(0) {}
-
-  public:
-    int interface() const {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-      return impl();
-    }
-  };
-
-  class Child : virtual public Parent {
-  protected:
-    virtual int impl() const {
-      clang_analyzer_checkInlined(true); // expected-warning{{TRUE}}
-      return m_parent + m_child;
-    }
-
-  public:
-    Child() : m_child(0) {}
-
-    int m_child;
-  };
-
-  void testVirtual() {
-    Child x;
-    x.m_child = 42;
-
-    // Don't crash when inlining and devirtualizing.
-    x.interface();
-  }
-
-
-  class Grandchild : virtual public Child {};
-
-  void testDevirtualizeToMiddle() {
-    Grandchild x;
-    x.m_child = 42;
-
-    // Don't crash when inlining and devirtualizing.
-    x.interface();
-  }
-}
-
-namespace Invalidation {
-  struct X {
-    void touch(int &x) const {
-      x = 0;
-    }
-
-    void touch2(int &x) const;
-
-    virtual void touchV(int &x) const {
-      x = 0;
-    }
-
-    virtual void touchV2(int &x) const;
-
-    int test() const {
-      // We were accidentally not invalidating under inlining
-      // at one point for virtual methods with visible definitions.
-      int a, b, c, d;
-      touch(a);
-      touch2(b);
-      touchV(c);
-      touchV2(d);
-      return a + b + c + d; // no-warning
-    }
-  };
-}
-
-namespace DefaultArgs {
-  int takesDefaultArgs(int i = 42) {
-    return -i;
-  }
-
-  void testFunction() {
-    clang_analyzer_eval(takesDefaultArgs(1) == -1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(takesDefaultArgs() == -42); // expected-warning{{TRUE}}
-  }
-
-  class Secret {
-  public:
-    static const int value = 40 + 2;
-    int get(int i = value) {
-      return i;
-    }
-  };
-
-  void testMethod() {
-    Secret obj;
-    clang_analyzer_eval(obj.get(1) == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(obj.get() == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(Secret::value == 42); // expected-warning{{TRUE}}
-  }
-
-  enum ABC {
-    A = 0,
-    B = 1,
-    C = 2
-  };
-
-  int enumUser(ABC input = B) {
-    return static_cast<int>(input);
-  }
-
-  void testEnum() {
-    clang_analyzer_eval(enumUser(C) == 2); // expected-warning{{TRUE}}
-    clang_analyzer_eval(enumUser() == 1); // expected-warning{{TRUE}}
-  }
-
-
-  int exprUser(int input = 2 * 4) {
-    return input;
-  }
-
-  int complicatedExprUser(int input = 2 * Secret::value) {
-    return input;
-  }
-
-  void testExprs() {
-    clang_analyzer_eval(exprUser(1) == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(exprUser() == 8); // expected-warning{{TRUE}}
-
-    clang_analyzer_eval(complicatedExprUser(1) == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(complicatedExprUser() == 84); // expected-warning{{TRUE}}
-  }
-
-  int defaultReference(const int &input = 42) {
-    return -input;
-  }
-  int defaultReferenceZero(const int &input = 0) {
-    return -input;
-  }
-
-  void testReference() {
-    clang_analyzer_eval(defaultReference(1) == -1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(defaultReference() == -42); // expected-warning{{TRUE}}
-
-    clang_analyzer_eval(defaultReferenceZero(1) == -1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(defaultReferenceZero() == 0); // expected-warning{{TRUE}}
-}
-
-  double defaultFloatReference(const double &i = 42) {
-    return -i;
-  }
-  double defaultFloatReferenceZero(const double &i = 0) {
-    return -i;
-  }
-
-  void testFloatReference() {
-    clang_analyzer_eval(defaultFloatReference(1) == -1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(defaultFloatReference() == -42); // expected-warning{{UNKNOWN}}
-
-    clang_analyzer_eval(defaultFloatReferenceZero(1) == -1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(defaultFloatReferenceZero() == 0); // expected-warning{{UNKNOWN}}
-  }
-}
-
-namespace OperatorNew {
-  class IntWrapper {
-  public:
-    int value;
-
-    IntWrapper(int input) : value(input) {
-      // We don't want this constructor to be inlined unless we can actually
-      // use the proper region for operator new.
-      // See PR12014 and <rdar://problem/12180598>.
-      clang_analyzer_checkInlined(false); // no-warning
-    }
-  };
-
-  void test() {
-    IntWrapper *obj = new IntWrapper(42);
-    // should be TRUE
-    clang_analyzer_eval(obj->value == 42); // expected-warning{{UNKNOWN}}
-    delete obj;
-  }
-
-  void testPlacement() {
-    IntWrapper *obj = static_cast<IntWrapper *>(malloc(sizeof(IntWrapper)));
-    IntWrapper *alias = new (obj) IntWrapper(42);
-
-    clang_analyzer_eval(alias == obj); // expected-warning{{TRUE}}
-
-    // should be TRUE
-    clang_analyzer_eval(obj->value == 42); // expected-warning{{UNKNOWN}}
-  }
-}
-
-
-namespace VirtualWithSisterCasts {
-  // This entire set of tests exercises casts from sister classes and
-  // from classes outside the hierarchy, which can very much confuse
-  // code that uses DynamicTypeInfo or needs to construct CXXBaseObjectRegions.
-  // These examples used to cause crashes in +Asserts builds.
-  struct Parent {
-    virtual int foo();
-    int x;
-  };
-
-  struct A : Parent {
-    virtual int foo() { return 42; }
-  };
-
-  struct B : Parent {
-    virtual int foo();
-  };
-
-  struct Grandchild : public A {};
-
-  struct Unrelated {};
-
-  void testDowncast(Parent *b) {
-    A *a = (A *)(void *)b;
-    clang_analyzer_eval(a->foo() == 42); // expected-warning{{UNKNOWN}}
-
-    a->x = 42;
-    clang_analyzer_eval(a->x == 42); // expected-warning{{TRUE}}
-  }
-
-  void testRelated(B *b) {
-    A *a = (A *)(void *)b;
-    clang_analyzer_eval(a->foo() == 42); // expected-warning{{UNKNOWN}}
-
-    a->x = 42;
-    clang_analyzer_eval(a->x == 42); // expected-warning{{TRUE}}
-  }
-
-  void testUnrelated(Unrelated *b) {
-    A *a = (A *)(void *)b;
-    clang_analyzer_eval(a->foo() == 42); // expected-warning{{UNKNOWN}}
-
-    a->x = 42;
-    clang_analyzer_eval(a->x == 42); // expected-warning{{TRUE}}
-  }
-
-  void testCastViaNew(B *b) {
-    Grandchild *g = new (b) Grandchild();
-    clang_analyzer_eval(g->foo() == 42); // expected-warning{{TRUE}}
-
-    g->x = 42;
-    clang_analyzer_eval(g->x == 42); // expected-warning{{TRUE}}
-  }
-}
-
-
-namespace QualifiedCalls {
-  void test(One *object) {
-    // This uses the One class from the top of the file.
-    clang_analyzer_eval(object->getNum() == 1); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(object->One::getNum() == 1); // expected-warning{{TRUE}}
-    clang_analyzer_eval(object->A::getNum() == 0); // expected-warning{{TRUE}}
-
-    // getZero is non-virtual.
-    clang_analyzer_eval(object->getZero() == 0); // expected-warning{{TRUE}}
-    clang_analyzer_eval(object->One::getZero() == 0); // expected-warning{{TRUE}}
-    clang_analyzer_eval(object->A::getZero() == 0); // expected-warning{{TRUE}}
-}
-}
-
-
-namespace rdar12409977  {
-  struct Base {
-    int x;
-  };
-
-  struct Parent : public Base {
-    virtual Parent *vGetThis();
-    Parent *getThis() { return vGetThis(); }
-  };
-
-  struct Child : public Parent {
-    virtual Child *vGetThis() { return this; }
-  };
-
-  void test() {
-    Child obj;
-    obj.x = 42;
-
-    // Originally, calling a devirtualized method with a covariant return type
-    // caused a crash because the return value had the wrong type. When we then
-    // go to layer a CXXBaseObjectRegion on it, the base isn't a direct base of
-    // the object region and we get an assertion failure.
-    clang_analyzer_eval(obj.getThis()->x == 42); // expected-warning{{TRUE}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inline2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inline2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inline2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-// Test parameter 'a' is registered to LiveVariables analysis data although it
-// is not referenced in the function body. 
-// Before processing 'return 1;', in RemoveDeadBindings(), we query the liveness
-// of 'a', because we have a binding for it due to parameter passing.
-int f1(int a) {
-  return 1;
-}
-
-void f2() {
-  int x;
-  x = f1(1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inline3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inline3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inline3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-// Test when entering f1(), we set the right AnalysisDeclContext to Environment.
-// Otherwise, block-level expr '1 && a' would not be block-level.
-int a;
-
-void f1() {
-  if (1 && a)
-    return;
-}
-
-void f2() {
-  f1();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inline4.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inline4.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inline4.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-int g(int a) {    
-  return a;
-}
-
-int f(int a) {
-  // Do not remove block-level expression bindings of caller when analyzing 
-  // in the callee.
-  if (1 && g(a)) // The binding of '1 && g(a)' which is an UndefinedVal 
-                 // carries important information.
-    return 1;
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/DynDispatchBifurcate.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/DynDispatchBifurcate.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/DynDispatchBifurcate.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,191 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-#include "InlineObjCInstanceMethod.h"
-
- at interface MyParent : NSObject
-- (int)getZero;
- at end
- at implementation MyParent
-- (int)getZero {
-    return 0;
-}
- at end
-
- at interface PublicClass () {
-   int value2;
-}
- at property (readwrite) int value1;
-- (void)setValue2:(int)newValue2;
- at end
-
- at implementation PublicClass
-
-- (int)getZeroPublic {
-    return 0;
-}
-
- at synthesize value1;
-
-- (int)value2 {
-    return value2;
-} 
-- (void)setValue2:(int)newValue {
-    value2 = newValue;
-}
-
-- (int)value3 {
-    return value3;
-} 
-- (void)setValue3:(int)newValue {
-    value3 = newValue;
-}
-
- at end
-
- at interface MyClassWithPublicParent : PublicClass
-- (int)getZeroPublic;
- at end
- at implementation MyClassWithPublicParent
-- (int)getZeroPublic {
-    return 0;
-}
- at end
-
-// Category overrides a public method.
- at interface PublicSubClass (PrvateCat)
-  - (int) getZeroPublic;
- at end
- at implementation PublicSubClass (PrvateCat)
-- (int)getZeroPublic {
-    return 0;
-}
- at end
-
-
- at interface MyClass : MyParent {
-  int value;
-}
-- (int)getZero;
- at property int value;
- at end
-
-// Since class is private, we assume that it cannot be subclassed.
-// False negative: this class is "privately subclassed". this is very rare 
-// in practice.
- at implementation MyClass
-+ (int) testTypeFromParam:(MyParent*) p {
-  int m = 0;
-  int z = [p getZero];
-  if (z)
-    return 5/m; // false negative
-  return 5/[p getZero];// expected-warning {{Division by zero}}
-}
-
-// Here only one definition is possible, since the declaration is not visible 
-// from outside. 
-+ (int) testTypeFromParamPrivateChild:(MyClass*) c {
-  int m = 0;
-  int z = [c getZero]; // MyClass overrides getZero to return '1'.
-  if (z)
-    return 5/m; // expected-warning {{Division by zero}}
-  return 5/[c getZero];//no warning
-}
-
-- (int)getZero {
-    return 1;
-}
-
-- (int)value {
-  return value;
-}
- 
-- (void)setValue:(int)newValue {
-  value = newValue;
-}
-
-// Test ivar access.
-- (int) testIvarInSelf {
-  value = 0;
-  return 5/value; // expected-warning {{Division by zero}}
-}
-
-+ (int) testIvar: (MyClass*) p {
-  p.value = 0;
-  return 5/p.value; // expected-warning {{Division by zero}}
-}
-
-// Test simple property access.
-+ (int) testProperty: (MyClass*) p {
-  int x= 0;
-  [p setValue:0];
-  return 5/[p value]; // expected-warning {{Division by zero}}  
-}
-
- at end
-
-// The class is prvate and is not subclassed.
-int testCallToPublicAPIInParent(MyClassWithPublicParent *p) {
-  int m = 0;
-  int z = [p getZeroPublic];
-  if (z)
-    return 5/m; // no warning
-  return 5/[p getZeroPublic];// expected-warning {{Division by zero}}  
-}
-
-// When the called method is public (due to it being defined outside of main file),
-// split the path and analyze both branches.
-// In this case, p can be either the object of type MyParent* or MyClass*:
-// - If it's MyParent*, getZero returns 0.
-// - If it's MyClass*, getZero returns 1 and 'return 5/m' is reachable.
-// Declaration is provate, but p can be a subclass (MyClass*).
-int testCallToPublicAPI(PublicClass *p) {
-  int m = 0;
-  int z = [p getZeroPublic];
-  if (z)
-    return 5/m; // expected-warning {{Division by zero}}
-  return 5/[p getZeroPublic];// expected-warning {{Division by zero}}  
-}
-
-// Even though the method is privately declared in the category, the parent 
-// declares the method as public. Assume the instance can be subclassed.
-int testCallToPublicAPICat(PublicSubClass *p) {
-  int m = 0;
-  int z = [p getZeroPublic];
-  if (z)
-    return 5/m; // expected-warning {{Division by zero}}
-  return 5/[p getZeroPublic];// expected-warning {{Division by zero}}  
-}
-
-// Test public property - properties should always be inlined, regardless 
-// weither they are "public" or private. 
-int testPublicProperty(PublicClass *p) {
-  int x = 0;
-  p.value3 = 0;
-  if (p.value3 != 0)
-    return 5/x; 
-  return 5/p.value3;// expected-warning {{Division by zero}}
-}
-
-int testExtension(PublicClass *p) {
-  int x = 0;
-  [p setValue2:0];
-  if ([p value2] != 0)
-    return 5/x; // expected-warning {{Division by zero}}
-  return 5/[p value2]; // expected-warning {{Division by zero}}
-}
-
-// TODO: we do not handle synthesized properties yet.
-int testPropertySynthesized(PublicClass *p) {
-  [p setValue1:0];
-  return 5/[p value1];  
-}
-
-// Test definition not available edge case.
- at interface DefNotAvailClass : NSObject
- at end
-id testDefNotAvailableInlined(DefNotAvailClass *C) {
-  return [C mem]; // expected-warning {{instance method '-mem' not found}}
-}
-id testDefNotAvailable(DefNotAvailClass *C) {
-  return testDefNotAvailableInlined(C);
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCClassMethod.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCClassMethod.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCClassMethod.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,211 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-// Test inlining of ObjC class methods.
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
- at end
-
-// Vanila: ObjC class method is called by name.
- at interface MyParent : NSObject
-+ (int)getInt;
- at end
- at interface MyClass : MyParent
-+ (int)getInt;
- at end
- at implementation MyClass
-+ (int)testClassMethodByName {
-    int y = [MyClass getInt];
-    return 5/y; // expected-warning {{Division by zero}}
-}
-+ (int)getInt {
-  return 0;
-}
- at end
-
-// The definition is defined by the parent. Make sure we find it and inline.
- at interface MyParentDIP : NSObject
-+ (int)getInt;
- at end
- at interface MyClassDIP : MyParentDIP
- at end
- at implementation MyClassDIP
-+ (int)testClassMethodByName {
-    int y = [MyClassDIP getInt];
-    return 5/y; // expected-warning {{Division by zero}}
-}
- at end
- at implementation MyParentDIP
-+ (int)getInt {
-    return 0;
-}
- at end
-
-// ObjC class method is called by name. Definition is in the category.
- at interface AAA : NSObject
- at end
- at interface AAA (MyCat)
-+ (int)getInt;
- at end
-int foo() {
-    int y = [AAA getInt];
-    return 5/y; // expected-warning {{Division by zero}}
-}
- at implementation AAA
- at end
- at implementation AAA (MyCat)
-+ (int)getInt {
-    return 0;
-}
- at end
-
-// ObjC class method is called by name. Definition is in the parent category.
- at interface PPP : NSObject
- at end
- at interface PPP (MyCat)
-+ (int)getInt;
- at end
- at interface CCC : PPP
- at end
-int foo4() {
-    int y = [CCC getInt];
-    return 5/y; // expected-warning {{Division by zero}}
-}
- at implementation PPP
- at end
- at implementation PPP (MyCat)
-+ (int)getInt {
-    return 0;
-}
- at end
-
-// There is no declaration in the class but there is one in the parent. Make 
-// sure we pick the definition from the class and not the parent.
- at interface MyParentTricky : NSObject
-+ (int)getInt;
- at end
- at interface MyClassTricky : MyParentTricky
- at end
- at implementation MyParentTricky
-+ (int)getInt {
-    return 0;
-}
- at end
- at implementation MyClassTricky
-+ (int)getInt {
-  return 1;
-}
-+ (int)testClassMethodByName {
-    int y = [MyClassTricky getInt];
-    return 5/y; // no-warning
-}
- at end
-
-// ObjC class method is called by unknown class declaration (passed in as a 
-// parameter). We should not inline in such case.
- at interface MyParentUnknown : NSObject
-+ (int)getInt;
- at end
- at interface MyClassUnknown : MyParentUnknown
-+ (int)getInt;
- at end
- at implementation MyClassUnknown
-+ (int)testClassVariableByUnknownVarDecl: (Class)cl  {
-  int y = [cl getInt];
-  return 3/y; // no-warning
-}
-+ (int)getInt {
-  return 0;
-}
- at end
-
-
-// False negative.
-// ObjC class method call through a decl with a known type.
-// We should be able to track the type of currentClass and inline this call.
-// Note, [self class] could be a subclass. Do we still want to inline here?
- at interface MyClassKT : NSObject
- at end
- at interface MyClassKT (MyCatKT)
-+ (int)getInt;
- at end
- at implementation MyClassKT (MyCatKT)
-+ (int)getInt {
-    return 0;
-}
- at end
- at implementation MyClassKT
-- (int)testClassMethodByKnownVarDecl {
-  Class currentClass = [self class];
-  int y = [currentClass getInt];
-  return 5/y; // Would be great to get a warning here.
-}
- at end
-
-// Another false negative due to us not reasoning about self, which in this 
-// case points to the object of the class in the call site and should be equal 
-// to [MyParent class].
- at interface MyParentSelf : NSObject
-+ (int)testSelf;
- at end
- at implementation MyParentSelf
-+ (int)testSelf {
-  if (self == [MyParentSelf class])
-      return 0;
-    else
-      return 1;
-}
- at end
- at interface MyClassSelf : MyParentSelf
- at end
- at implementation MyClassSelf
-+ (int)testClassMethodByKnownVarDecl {
-  int y = [MyParentSelf testSelf];
-  return 5/y; // Should warn here.
-}
- at end
-int foo2() {
-  int y = [MyParentSelf testSelf];
-  return 5/y; // Should warn here.
-}
-
-// TODO: We do not inline 'getNum' in the following case, where the value of 
-// 'self' in call '[self getNum]' is available and evaualtes to 
-// 'SelfUsedInParentChild' if it's called from fooA.
-// Self region should get created before we call foo and yje call to super 
-// should keep it live. 
- at interface SelfUsedInParent : NSObject
-+ (int)getNum;
-+ (int)foo;
- at end
- at implementation SelfUsedInParent
-+ (int)getNum {return 5;}
-+ (int)foo {
-  return [self getNum];
-}
- at end
- at interface SelfUsedInParentChild : SelfUsedInParent
-+ (int)getNum;
-+ (int)fooA;
- at end
- at implementation SelfUsedInParentChild
-+ (int)getNum {return 0;}
-+ (int)fooA {
-  return [super foo];
-}
- at end
-int checkSelfUsedInparentClassMethod() {
-    return 5/[SelfUsedInParentChild fooA];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCInstanceMethod.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCInstanceMethod.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCInstanceMethod.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-
-// Define a public header for the ObjC methods that are "visible" externally
-// and, thus, could be sub-classed. We should explore the path on which these
-// are sub-classed with unknown class by not inlining them.
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
- at end
-
- at interface PublicClass : NSObject {
-  int value3;
-}
-- (int)getZeroPublic;
-
-- (int) value2;
-
- at property (readonly) int value1;
-
- at property int value3;
-- (int)value3;
-- (void)setValue3:(int)newValue;
- at end
-
- at interface PublicSubClass : PublicClass
- at end
-
- at interface PublicParent : NSObject
-- (int)getZeroOverridden;
- at end
-
- at interface PublicSubClass2 : PublicParent
-- (int) getZeroOverridden;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCInstanceMethod.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCInstanceMethod.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/InlineObjCInstanceMethod.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,148 +0,0 @@
-// RUN: %clang --analyze -Xanalyzer -analyzer-checker=osx.cocoa.IncompatibleMethodTypes,osx.coreFoundation.CFRetainRelease -Xclang -verify %s
-
-#include "InlineObjCInstanceMethod.h"
-
-typedef const struct __CFString * CFStringRef;
-typedef const void * CFTypeRef;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-extern CFStringRef getString(void);
-
-// Method is defined in the parent; called through self.
- at interface MyParent : NSObject
-- (int)getInt;
-- (const struct __CFString *) testCovariantReturnType __attribute__((cf_returns_retained));
- at end
- at implementation MyParent
-- (int)getInt {
-    return 0;
-}
-
-- (CFStringRef) testCovariantReturnType __attribute__((cf_returns_retained)) {
-  CFStringRef Str = ((void*)0);
-  Str = getString();
-  if (Str) {
-    CFRetain(Str);
-  }
-  return Str;
-}
-
- at end
-
- at interface MyClass : MyParent
- at end
- at implementation MyClass
-- (int)testDynDispatchSelf {
-  int y = [self getInt];
-  return 5/y; // expected-warning {{Division by zero}}
-}
-
-// Get the dynamic type info from a cast (from id to MyClass*).
-+ (int)testAllocInit {
-  MyClass *a = [[self alloc] init];
-  return 5/[a getInt]; // expected-warning {{Division by zero}}
-}
-
-// Method is called on inited object.
-+ (int)testAllocInit2 {
-  MyClass *a = [[MyClass alloc] init];
-  return 5/[a getInt]; // expected-warning {{Division by zero}}
-}
-
-// Method is called on a parameter.
-+ (int)testParam: (MyClass*) a {
-  return 5/[a getInt]; // expected-warning {{Division by zero}}
-}
-
-// Method is called on a parameter of unnown type.
-+ (int)testParamUnknownType: (id) a {
-  return 5/[a getInt]; // no warning
-}
-
- at end
-
-// TODO: When method is inlined, the attribute reset should be visible.
- at interface TestSettingAnAttributeInCallee : NSObject {
-  int _attribute;
-}
-  - (void) method2;
- at end
-
- at implementation TestSettingAnAttributeInCallee
-- (int) method1 {
-  [self method2];
-  return 5/_attribute; // expected-warning {{Division by zero}}
-}
-
-- (void) method2 {
-  _attribute = 0;
-}
- at end
-
- at interface TestSettingAnAttributeInCaller : NSObject {
-  int _attribute;
-}
-  - (int) method2;
- at end
-
- at implementation TestSettingAnAttributeInCaller
-- (void) method1 {
-  _attribute = 0;
-  [self method2];
-}
-
-- (int) method2 {
-  return 5/_attribute; // expected-warning {{Division by zero}}
-}
- at end
-
-
-// Don't crash if we don't know the receiver's region.
-void randomlyMessageAnObject(MyClass *arr[], int i) {
-  (void)[arr[i] getInt];
-}
-
-
- at interface EvilChild : MyParent
-- (id)getInt;
-- (const struct __CFString *) testCovariantReturnType __attribute__((cf_returns_retained));
- at end
-
- at implementation EvilChild
-- (id)getInt { // expected-warning {{types are incompatible}}
-  return self;
-}
-- (CFStringRef) testCovariantReturnType __attribute__((cf_returns_retained)) {
-  CFStringRef Str = ((void*)0);
-  Str = getString();
-  if (Str) {
-    CFRetain(Str);
-  }
-  return Str;
-}
-
- at end
-
-int testNonCovariantReturnType() {
-  MyParent *obj = [[EvilChild alloc] init];
-
-  // Devirtualization allows us to directly call -[EvilChild getInt], but
-  // that returns an id, not an int. There is an off-by-default warning for
-  // this, -Woverriding-method-mismatch, and an on-by-default analyzer warning,
-  // osx.cocoa.IncompatibleMethodTypes. This code would probably crash at
-  // runtime, but at least the analyzer shouldn't crash.
-  int x = 1 + [obj getInt];
-
-  [obj release];
-  return 5/(x-1); // no-warning
-}
-
-int testCovariantReturnTypeNoErrorSinceTypesMatch() {
-  MyParent *obj = [[EvilChild alloc] init];
-
-  CFStringRef S = ((void*)0);
-  S = [obj testCovariantReturnType];
-  if (S)
-    CFRelease(S);
-  CFRelease(obj);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/ObjCDynTypePopagation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/ObjCDynTypePopagation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/ObjCDynTypePopagation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-#include "InlineObjCInstanceMethod.h"
-
-void clang_analyzer_eval(int);
-
-PublicSubClass2 *getObj();
-
- at implementation PublicParent
-- (int) getZeroOverridden {
-   return 1;
-}
-- (int) getZero {
-   return 0;
-}
- at end
-
- at implementation PublicSubClass2
-- (int) getZeroOverridden {
-   return 0;
-}
-
-/* Test that we get the right type from call to alloc. */
-+ (void) testAllocSelf {
-  id a = [self alloc];
-  clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-
-+ (void) testAllocClass {
-  id a = [PublicSubClass2 alloc];
-  clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-+ (void) testAllocSuperOverriden {
-  id a = [super alloc];
-  // Evaluates to 1 in the parent.
-  clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{FALSE}} 
-}
-
-+ (void) testAllocSuper {
-  id a = [super alloc];
-  clang_analyzer_eval([a getZero] == 0); // expected-warning{{TRUE}}
-}
-
-+ (void) testAllocInit {
-  id a = [[self alloc] init];
-  clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-+ (void) testNewSelf {
-  id a = [self new];
-  clang_analyzer_eval([a getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-// Casting to parent should not pessimize the dynamic type. 
-+ (void) testCastToParent {
- id a = [[self alloc] init];
- PublicParent *p = a;  
-  clang_analyzer_eval([p getZeroOverridden] == 0); // expected-warning{{TRUE}}
-}
-
-// The type of parameter gets used.
-+ (void)testTypeFromParam:(PublicParent*) p {
-  clang_analyzer_eval([p getZero] == 0); // expected-warning{{TRUE}}
-}
-
-// Test implicit cast.
-// Note, in this case, p could also be a subclass of MyParent.
-+ (void) testCastFromId:(id) a {
-  PublicParent *p = a;  
-  clang_analyzer_eval([p getZero] == 0); // expected-warning{{TRUE}}
-}
- at end
-
-// TODO: Would be nice to handle the case of dynamically obtained class info
-// as well. We need a MemRegion for class types for this.
-int testDynamicClass(BOOL coin) {
- Class AllocClass = (coin ? [NSObject class] : [PublicSubClass2 class]);
- id x = [[AllocClass alloc] init];
- if (coin)
-   return [x getZero];
- return 1;
-}
-
- at interface UserClass : NSObject
-- (PublicSubClass2 *) _newPublicSubClass2;
-- (int) getZero;
-- (void) callNew;
- at end
-
- at implementation UserClass
-- (PublicSubClass2 *) _newPublicSubClass2 {
-  return [[PublicSubClass2 alloc] init];
-}
-- (int) getZero { return 5; }
-- (void) callNew {
-  PublicSubClass2 *x = [self _newPublicSubClass2];
-  clang_analyzer_eval([x getZero] == 0); //expected-warning{{TRUE}}
-}
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/ObjCImproperDynamictallyDetectableCast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/ObjCImproperDynamictallyDetectableCast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/ObjCImproperDynamictallyDetectableCast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-typedef signed char BOOL;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
-+(id)new;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
- at end
-void clang_analyzer_eval(BOOL);
-
- at interface SomeOtherClass : NSObject
-- (int)getZero;
- at end
- at implementation SomeOtherClass
-- (int)getZero { return 0; }
- at end
-
- at interface MyClass : NSObject
-- (int)getZero;
- at end
-
- at implementation MyClass
-- (int)getZero { return 1; }
-
-// TODO: Not only we should correctly determine that the type of o at runtime 
-// is MyClass, but we should also warn about it. 
-+ (void) testCastToParent {
-  id a = [[self alloc] init];
-  SomeOtherClass *o = a;  
-  clang_analyzer_eval([o getZero] == 0); // expected-warning{{FALSE}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/RetainCountExamples.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/RetainCountExamples.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/RetainCountExamples.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,127 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
-- (oneway void)release;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-- (oneway void)release;
- at end
-
- at interface SelfStaysLive : NSObject
-- (id)init;
- at end
-
- at implementation SelfStaysLive
-- (id)init {
-  return [super init];
-}
- at end
-
-void selfStaysLive() {
-    SelfStaysLive *foo = [[SelfStaysLive alloc] init]; 
-    [foo release];
-}
-
-// Test that retain release checker warns on leaks and use-after-frees when 
-// self init is not enabled.  
-// radar://12115830
- at interface ParentOfCell : NSObject
-- (id)initWithInt: (int)inInt;
- at end
- at interface Cell : ParentOfCell{
-  int x;
-}
-- (id)initWithInt: (int)inInt;
-+ (void)testOverRelease;
-+ (void)testLeak;
- at property int x;
- at end
- at implementation Cell
- at synthesize x;
-- (id) initWithInt: (int)inInt {
-  [super initWithInt: inInt];
-  self.x = inInt; // no-warning 
-  return self; // Self Init checker would produce a warning here.
-}
-+ (void) testOverRelease {
-  Cell *sharedCell3 = [[Cell alloc] initWithInt: 3];
-  [sharedCell3 release];
-  [sharedCell3 release]; // expected-warning {{Reference-counted object is used after it is released}}
-}
-+ (void) testLeak {
-  Cell *sharedCell4 = [[Cell alloc] initWithInt: 3]; // expected-warning {{leak}}
-}
- at end
-  
-// We should stop tracking some objects even when we inline the call. 
-// Specialically, the objects passed into calls with delegate and callback 
-// parameters.
- at class DelegateTest;
-typedef void (*ReleaseCallbackTy) (DelegateTest *c);
-
- at interface Delegate : NSObject
- at end
-
- at interface DelegateTest : NSObject {
-  Delegate *myDel;
-}
-// Object initialized with a delagate which could potentially release it.
-- (id)initWithDelegate: (id) d;
-
-- (void) setDelegate: (id) d;
-
-// Releases object through callback.
-+ (void)updateObject:(DelegateTest*)obj WithCallback:(ReleaseCallbackTy)rc;
-
-+ (void)test: (Delegate *)d;
-
- at property (assign) Delegate* myDel;
- at end
-
-void releaseObj(DelegateTest *c);
-
-// Releases object through callback.
-void updateObject(DelegateTest *c, ReleaseCallbackTy rel) {
-  rel(c);
-}
-
- at implementation DelegateTest
- at synthesize myDel;
-
-- (id) initWithDelegate: (id) d {
-    if ((self = [super init]))
-      myDel = d;
-    return self;
-}
-
-- (void) setDelegate: (id) d {
-    myDel = d;
-}
-
-+ (void)updateObject:(DelegateTest*)obj WithCallback:(ReleaseCallbackTy)rc {
-  rc(obj);
-}
-
-+ (void) test: (Delegate *)d {
-  DelegateTest *obj1 = [[DelegateTest alloc] initWithDelegate: d]; // no-warning
-  DelegateTest *obj2 = [[DelegateTest alloc] init]; // no-warning
-  DelegateTest *obj3 = [[DelegateTest alloc] init]; // no-warning
-  updateObject(obj2, releaseObj);
-  [DelegateTest updateObject: obj3
-        WithCallback: releaseObj];
-  DelegateTest *obj4 = [[DelegateTest alloc] init]; // no-warning
-  [obj4 setDelegate: d];
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/assume-super-init-does-not-return-nil.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/assume-super-init-does-not-return-nil.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/assume-super-init-does-not-return-nil.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx -verify %s
-
-typedef signed char BOOL;
-
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
-- (oneway void)release;
- at end
-
- at interface Cell : NSObject {
-  int x;
-}
-- (id) init;
-- (void)test;
- at end
-
- at implementation Cell
-- (id) init {
-  if ((self = [super init])) {
-    return self;
-  }
-  // Test that this is being analyzed.
-  int m;
-  m = m + 1; //expected-warning {{The left operand of '+' is a garbage value}}
-  return self;
-}
-
-// Make sure that we do not propagate the 'nil' check from inlined 'init' to 'test'.
-- (void) test {
-  Cell *newCell = [[Cell alloc] init];
-  newCell->x = 5; // no-warning
-  [newCell release];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/containers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/containers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/containers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,241 +0,0 @@
-// RUN: %clang_cc1 -analyze -std=c++11 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors -analyzer-config c++-container-inlining=false -verify %s
-// RUN: %clang_cc1 -analyze -std=c++11 -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-inlining=destructors -analyzer-config c++-container-inlining=true -DINLINE=1 -verify %s
-
-#ifndef HEADER
-
-void clang_analyzer_eval(bool);
-void clang_analyzer_checkInlined(bool);
-
-#define HEADER
-#include "containers.cpp"
-#undef HEADER
-
-void test() {
-  MySet set(0);
-
-  clang_analyzer_eval(set.isEmpty());
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-
-  clang_analyzer_eval(set.raw_begin() == set.raw_end());
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-
-  clang_analyzer_eval(set.begin().impl == set.end().impl);
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-}
-
-void testSubclass(MySetSubclass &sub) {
-  sub.useIterator(sub.begin());
-
-  MySetSubclass local;
-}
-
-void testWrappers(BeginOnlySet &w1, IteratorStructOnlySet &w2,
-                  IteratorTypedefOnlySet &w3, IteratorUsingOnlySet &w4) {
-  BeginOnlySet local1;
-  IteratorStructOnlySet local2;
-  IteratorTypedefOnlySet local3;
-  IteratorUsingOnlySet local4;
-
-  clang_analyzer_eval(w1.begin().impl.impl == w1.begin().impl.impl);
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-
-  clang_analyzer_eval(w2.start().impl == w2.start().impl);
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-
-  clang_analyzer_eval(w3.start().impl == w3.start().impl);
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-
-  clang_analyzer_eval(w4.start().impl == w4.start().impl);
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-}
-
-
-#else // HEADER
-
-#include "../Inputs/system-header-simulator-cxx.h"
-
-class MySet {
-  int *storage;
-  unsigned size;
-public:
-  MySet() : storage(0), size(0) {
-    clang_analyzer_checkInlined(true);
-#if INLINE
-    // expected-warning at -2 {{TRUE}}
-#endif
-  }
-
-  MySet(unsigned n) : storage(new int[n]), size(n) {
-    clang_analyzer_checkInlined(true);
-#if INLINE
-    // expected-warning at -2 {{TRUE}}
-#endif
-  }
-
-  ~MySet() { delete[] storage; }
-
-  bool isEmpty() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return size == 0;
-  }
-
-  struct iterator {
-    int *impl;
-
-    iterator(int *p) : impl(p) {}
-  };
-
-  iterator begin() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return iterator(storage);
-  }
-
-  iterator end() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return iterator(storage+size);
-  }
-
-  typedef int *raw_iterator;
-
-  raw_iterator raw_begin() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return storage;
-  }
-  raw_iterator raw_end() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return storage + size;
-  }
-};
-
-class MySetSubclass : public MySet {
-public:
-  MySetSubclass() {
-    clang_analyzer_checkInlined(true);
-#if INLINE
-    // expected-warning at -2 {{TRUE}}
-#endif
-  }
-
-  void useIterator(iterator i) {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-  }
-};
-
-class BeginOnlySet {
-  MySet impl;
-public:
-  struct IterImpl {
-    MySet::iterator impl;
-    typedef std::forward_iterator_tag iterator_category;
-
-    IterImpl(MySet::iterator i) : impl(i) {
-      clang_analyzer_checkInlined(true);
-#if INLINE
-      // expected-warning at -2 {{TRUE}}
-#endif
-    }
-  };
-
-  BeginOnlySet() {
-    clang_analyzer_checkInlined(true);
-#if INLINE
-    // expected-warning at -2 {{TRUE}}
-#endif
-  }
-
-  typedef IterImpl wrapped_iterator;
-
-  wrapped_iterator begin() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return IterImpl(impl.begin());
-  }
-};
-
-class IteratorTypedefOnlySet {
-  MySet impl;
-public:
-
-  IteratorTypedefOnlySet() {
-    clang_analyzer_checkInlined(true);
-#if INLINE
-    // expected-warning at -2 {{TRUE}}
-#endif
-  }
-
-  typedef MySet::iterator iterator;
-
-  iterator start() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return impl.begin();
-  }
-};
-
-class IteratorUsingOnlySet {
-  MySet impl;
-public:
-
-  IteratorUsingOnlySet() {
-    clang_analyzer_checkInlined(true);
-#if INLINE
-    // expected-warning at -2 {{TRUE}}
-#endif
-  }
-
-  using iterator = MySet::iterator;
-
-  iterator start() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return impl.begin();
-  }
-};
-
-class IteratorStructOnlySet {
-  MySet impl;
-public:
-
-  IteratorStructOnlySet() {
-    clang_analyzer_checkInlined(true);
-#if INLINE
-    // expected-warning at -2 {{TRUE}}
-#endif
-  }
-
-  struct iterator {
-    int *impl;
-  };
-
-  iterator start() {
-    clang_analyzer_checkInlined(true); // expected-warning {{TRUE}}
-    return iterator{impl.begin().impl};
-  }
-};
-
-#endif // HEADER

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/dyn-dispatch-bifurcate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-void clang_analyzer_eval(bool);
-
-class A {
-public:
-  virtual int get() { return 0; }
-};
-
-void testBifurcation(A *a) {
-  clang_analyzer_eval(a->get() == 0); // expected-warning{{TRUE}} expected-warning{{UNKNOWN}}
-}
-
-void testKnown() {
-  A a;
-  clang_analyzer_eval(a.get() == 0); // expected-warning{{TRUE}}
-}
-
-void testNew() {
-  A *a = new A();
-  clang_analyzer_eval(a->get() == 0); // expected-warning{{TRUE}}
-}
-
-
-namespace ReinterpretDisruptsDynamicTypeInfo {
-  class Parent {};
-
-  class Child : public Parent {
-  public:
-    virtual int foo() { return 42; }
-  };
-
-  void test(Parent *a) {
-    Child *b = reinterpret_cast<Child *>(a);
-    if (!b) return;
-    clang_analyzer_eval(b->foo() == 42); // expected-warning{{UNKNOWN}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/eager-reclamation-path-notes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/eager-reclamation-path-notes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/eager-reclamation-path-notes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,788 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config graph-trim-interval=5 -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config graph-trim-interval=5 %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-void use(int *ptr, int val) {
-  *ptr = val; // expected-warning {{Dereference of null pointer (loaded from variable 'ptr')}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'ptr')}}
-}
-
-int compute() {
-  // Do something that will take enough processing to trigger trimming.
-  // FIXME: This is actually really sensitive. If the interval timing is just
-  // wrong, the node for the actual dereference may also be collected, and all
-  // the path notes will disappear. <rdar://problem/12511814>
-  return 2 + 3 + 4 + 5 + 6;
-}
-
-void testSimple() {
-  int *p = 0;
-  // expected-note at -1 {{'p' initialized to a null pointer value}}
-  use(p, compute());
-  // expected-note at -1 {{Passing null pointer value via 1st parameter 'ptr'}}
-  // expected-note at -2 {{Calling 'use'}}
-}
-
-
-void use2(int *ptr, int val) {
-  *ptr = val; // expected-warning {{Dereference of null pointer (loaded from variable 'ptr')}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'ptr')}}
-}
-
-void passThrough(int *p) {
-  use2(p, compute());
-  // expected-note at -1 {{Passing null pointer value via 1st parameter 'ptr'}}
-  // expected-note at -2 {{Calling 'use2'}}
-}
-
-void testChainedCalls() {
-  int *ptr = 0;
-  // expected-note at -1 {{'ptr' initialized to a null pointer value}}
-  passThrough(ptr);
-  // expected-note at -1 {{Passing null pointer value via 1st parameter 'p'}}
-  // expected-note at -2 {{Calling 'passThrough'}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>19</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>21</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'ptr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'ptr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>21</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'use'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'use'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>5</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testSimple'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testSimple'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>6</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'ptr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'ptr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'ptr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>use</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>6</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>39</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>39</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>39</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'ptr' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'ptr' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>41</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>41</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'passThrough'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'passThrough'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>32</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testChainedCalls'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testChainedCalls'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>33</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'ptr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'ptr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>33</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'use2'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'use2'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>27</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'passThrough'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'passThrough'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>28</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>28</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>28</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'ptr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'ptr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'ptr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>use2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>28</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,385 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config graph-trim-interval=5 -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config graph-trim-interval=5 -analyzer-config suppress-null-return-paths=false %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-typedef struct {
-  int getValue();
-} IntWrapper;
-
-IntWrapper *getNullWrapper() {
-  return 0;
-  // expected-note at -1 {{Returning null pointer}}
-}
-
-int memberCallBaseDisappears() {
-  // In this case, we need the lvalue-to-rvalue cast for 'ptr' to disappear,
-  // which means we need to trigger reclamation between that and the ->
-  // operator.
-  //
-  // Note that this test is EXTREMELY brittle because it's a negative test:
-  // we want to show that even if the node for the rvalue of 'ptr' disappears,
-  // we get the same results as if it doesn't. The test should never fail even
-  // if our node reclamation policy changes, but it could easily not be testing
-  // anything at that point.
-  IntWrapper *ptr = getNullWrapper();
-  // expected-note at -1 {{Calling 'getNullWrapper'}}
-  // expected-note at -2 {{Returning from 'getNullWrapper'}}
-  // expected-note at -3 {{'ptr' initialized to a null pointer value}}
-
-  // Burn some nodes to trigger reclamation.
-  int unused = 1;
-  (void)unused;
-
-  return ptr->getValue(); // expected-warning {{Called C++ object pointer is null}}
-  // expected-note at -1 {{Called C++ object pointer is null}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>34</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>36</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getNullWrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getNullWrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>9</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'memberCallBaseDisappears'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'memberCallBaseDisappears'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>9</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>9</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>10</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>10</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>10</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null pointer</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null pointer</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>36</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getNullWrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getNullWrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>34</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'ptr' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'ptr' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>33</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>33</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>memberCallBaseDisappears</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>19</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>33</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,290 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -DSUPPRESSED=1 %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config avoid-suppressing-null-argument-paths=true -DSUPPRESSED=1 -DNULL_ARGS=1 -verify %s
-
-int opaquePropertyCheck(void *object);
-int coin();
-
-int *getNull() {
-  return 0;
-}
-
-int* getPtr();
-
-int *dynCastToInt(void *ptr) {
-  if (opaquePropertyCheck(ptr))
-    return (int *)ptr;
-  return 0;
-}
-
-int *dynCastOrNull(void *ptr) {
-  if (!ptr)
-    return 0;
-  if (opaquePropertyCheck(ptr))
-    return (int *)ptr;
-  return 0;
-}
-
-
-void testDynCast(void *p) {
-  int *casted = dynCastToInt(p);
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void testDynCastOrNull(void *p) {
-  int *casted = dynCastOrNull(p);
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-
-void testBranch(void *p) {
-  int *casted;
-
-  // Although the report will be suppressed on one branch, it should still be
-  // valid on the other.
-  if (coin()) {
-    casted = dynCastToInt(p);
-  } else {
-    if (p)
-      return;
-    casted = (int *)p;
-  }
-
-  *casted = 1; // expected-warning {{Dereference of null pointer}}
-}
-
-void testBranchReversed(void *p) {
-  int *casted;
-
-  // Although the report will be suppressed on one branch, it should still be
-  // valid on the other.
-  if (coin()) {
-    if (p)
-      return;
-    casted = (int *)p;
-  } else {
-    casted = dynCastToInt(p);
-  }
-
-  *casted = 1; // expected-warning {{Dereference of null pointer}}
-}
-
-void testMultipleStore(void *p) {
-  int *casted = 0;
-  casted = dynCastToInt(p);
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-
-// --------------------------
-// "Suppression suppression"
-// --------------------------
-
-void testDynCastOrNullOfNull() {
-  // Don't suppress when one of the arguments is NULL.
-  int *casted = dynCastOrNull(0);
-  *casted = 1;
-#if !SUPPRESSED || NULL_ARGS
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void testDynCastOfNull() {
-  // Don't suppress when one of the arguments is NULL.
-  int *casted = dynCastToInt(0);
-  *casted = 1;
-#if !SUPPRESSED || NULL_ARGS
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-int *lookUpInt(int unused) {
-  if (coin())
-    return 0;
-  static int x;
-  return &x;
-}
-
-void testZeroIsNotNull() {
-  // /Do/ suppress when the argument is 0 (an integer).
-  int *casted = lookUpInt(0);
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void testTrackNull() {
-  // /Do/ suppress if the null argument came from another call returning null.
-  int *casted = dynCastOrNull(getNull());
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void testTrackNullVariable() {
-  // /Do/ suppress if the null argument came from another call returning null.
-  int *ptr;
-  ptr = getNull();
-  int *casted = dynCastOrNull(ptr);
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void inlinedIsDifferent(int inlined) {
-  int i;
-
-  // We were erroneously picking up the inner stack frame's initialization,
-  // even though the error occurs in the outer stack frame!
-  int *p = inlined ? &i : getNull();
-
-  if (!inlined)
-    inlinedIsDifferent(1);
-
-  *p = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void testInlinedIsDifferent() {
-  // <rdar://problem/13787723>
-  inlinedIsDifferent(0);
-}
-
-
-// ---------------------------------------
-// FALSE NEGATIVES (over-suppression)
-// ---------------------------------------
-
-void testNoArguments() {
-  // In this case the function has no branches, and MUST return null.
-  int *casted = getNull();
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-int *getNullIfNonNull(void *input) {
-  if (input)
-    return 0;
-  static int x;
-  return &x;
-}
-
-void testKnownPath(void *input) {
-  if (!input)
-    return;
-
-  // In this case we have a known value for the argument, and thus the path
-  // through the function doesn't ever split.
-  int *casted = getNullIfNonNull(input);
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-int *alwaysReturnNull(void *input) {
-  if (opaquePropertyCheck(input))
-    return 0;
-  return 0;
-}
-
-void testAlwaysReturnNull(void *input) {
-  // In this case all paths out of the function return 0, but they are all
-  // dominated by a branch whose condition we don't know!
-  int *casted = alwaysReturnNull(input);
-  *casted = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-int derefArg(int *p) {
-	return *p;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-void ternaryArg(char cond) {
-	static int x;
-	derefArg(cond ? &x : getNull());
-}
-
-int derefArgCast(char *p) {
-	return *p;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-void ternaryArgCast(char cond) {
-	static int x;
-	derefArgCast((char*)((unsigned)cond ? &x : getNull()));
-}
-
-int derefAssignment(int *p) {
-	return *p;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void ternaryAssignment(char cond) {
-  static int x;
-  int *p = cond ? getNull() : getPtr();
-  derefAssignment(p);
-}
-
-int *retNull(char cond) {
-  static int x;
-  return cond ? &x : getNull();
-}
-int ternaryRetNull(char cond) {
-  int *p = retNull(cond);
-  return *p;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-// Test suppression of nested conditional operators.
-int testConditionalOperatorSuppress(int x) {
-  return *(x ? getNull() : getPtr());
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-int testNestedConditionalOperatorSuppress(int x) {
-  return *(x ? (x ? getNull() : getPtr()) : getPtr());
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-int testConditionalOperator(int x) {
-  return *(x ? 0 : getPtr()); // expected-warning {{Dereference of null pointer}}
-}
-int testNestedConditionalOperator(int x) {
-  return *(x ? (x ? 0 : getPtr()) : getPtr()); // expected-warning {{Dereference of null pointer}}
-}
-
-int testConditionalOperatorSuppressFloatCond(float x) {
-  return *(x ? getNull() : getPtr());
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,212 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -DSUPPRESSED=1 %s
-
-namespace rdar12676053 {
-  // Delta-reduced from a preprocessed file.
-  template<class T>
-  class RefCount {
-    T *ref;
-  public:
-    T *operator->() const {
-      return ref ? ref : 0;
-    }
-  };
-
-  class string {};
-
-  class ParserInputState {
-  public:
-    string filename;
-  };
-
-  class Parser {
-    void setFilename(const string& f)  {
-      inputState->filename = f;
-#ifndef SUPPRESSED
-// expected-warning at -2 {{Called C++ object pointer is null}}
-#endif
-    }
-  protected:
-    RefCount<ParserInputState> inputState;
-  };
-}
-
-
-// This is the standard placement new.
-inline void* operator new(__typeof__(sizeof(int)), void* __p) throw()
-{
-  return __p;
-}
-
-extern bool coin();
-
-class SomeClass {
-public:
-  void doSomething();
-};
-
-namespace References {
-  class Map {
-    int *&getNewBox();
-    int *firstBox;
-
-  public:
-    int *&getValue(int key) {
-      if (coin()) {
-        return firstBox;
-      } else {
-        int *&newBox = getNewBox();
-        newBox = 0;
-        return newBox;
-      }
-    }
-
-    int *&getValueIndirectly(int key) {
-      int *&valueBox = getValue(key);
-      return valueBox;
-    }
-  };
-
-  void testMap(Map &m, int i) {
-    *m.getValue(i) = 1;
-#ifndef SUPPRESSED
-    // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-
-    *m.getValueIndirectly(i) = 1;
-#ifndef SUPPRESSED
-    // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-
-    int *&box = m.getValue(i);
-    extern int *getPointer();
-    box = getPointer();
-    *box = 1; // no-warning
-
-    int *&box2 = m.getValue(i);
-    box2 = 0;
-    *box2 = 1; // expected-warning {{Dereference of null pointer}}
-  }
-
-  SomeClass *&getSomeClass() {
-    if (coin()) {
-      extern SomeClass *&opaqueClass();
-      return opaqueClass();
-    } else {
-      static SomeClass *sharedClass;
-      sharedClass = 0;
-      return sharedClass;
-    }
-  }
-
-  void testClass() {
-    getSomeClass()->doSomething();
-#ifndef SUPPRESSED
-    // expected-warning at -2 {{Called C++ object pointer is null}}
-#endif
-
-    // Separate the lvalue-to-rvalue conversion from the subsequent dereference.
-    SomeClass *object = getSomeClass();
-    object->doSomething();
-#ifndef SUPPRESSED
-    // expected-warning at -2 {{Called C++ object pointer is null}}
-#endif
-  }
-
-  SomeClass *getNull() {
-    return 0;
-  }
-
-  SomeClass &returnNullReference() {
-    SomeClass *x = getNull();
-    return *x;
-#ifndef SUPPRESSED
-    // expected-warning at -2 {{Returning null reference}}
-#endif
-  }
-}
-
-class X{
-public:
-	void get();
-};
-
-X *getNull() {
-	return 0;
-}
-
-void deref1(X *const &p) {
-	return p->get();
-	#ifndef SUPPRESSED
-	  // expected-warning at -2 {{Called C++ object pointer is null}}
-	#endif
-}
-
-void test1() {
-	return deref1(getNull());
-}
-
-void deref2(X *p3) {
-	p3->get();
-	#ifndef SUPPRESSED
-	  // expected-warning at -2 {{Called C++ object pointer is null}}
-	#endif
-}
-
-void pass2(X *const &p2) {
-	deref2(p2);
-}
-
-void test2() {
-	pass2(getNull());
-}
-
-void deref3(X *const &p2) {
-	X *p3 = p2;
-	p3->get();
-	#ifndef SUPPRESSED
-	  // expected-warning at -2 {{Called C++ object pointer is null}}
-	#endif
-}
-
-void test3() {
-	deref3(getNull());
-}
-
-
-namespace Cleanups {
-  class NonTrivial {
-  public:
-    ~NonTrivial();
-
-    SomeClass *getNull() {
-      return 0;
-    }
-  };
-
-  void testImmediate() {
-    NonTrivial().getNull()->doSomething();
-#ifndef SUPPRESSED
-    // expected-warning at -2 {{Called C++ object pointer is null}}
-#endif
-  }
-
-  void testAssignment() {
-    SomeClass *ptr = NonTrivial().getNull();
-    ptr->doSomething();
-#ifndef SUPPRESSED
-    // expected-warning at -2 {{Called C++ object pointer is null}}
-#endif
-  }
-
-  void testArgumentHelper(SomeClass *arg) {
-    arg->doSomething();
-#ifndef SUPPRESSED
-    // expected-warning at -2 {{Called C++ object pointer is null}}
-#endif
-  }
-
-  void testArgument() {
-    testArgumentHelper(NonTrivial().getNull());
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/false-positive-suppression.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -DSUPPRESSED=1 %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config avoid-suppressing-null-argument-paths=true -DSUPPRESSED=1 -DNULL_ARGS=1 -verify %s
-
-#ifdef SUPPRESSED
-// expected-no-diagnostics
-#endif
-
- at interface PointerWrapper
-- (int *)getPtr;
-- (id)getObject;
- at end
-
-id getNil() {
-  return 0;
-}
-
-void testNilReceiverHelperA(int *x) {
-  *x = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void testNilReceiverHelperB(int *x) {
-  *x = 1;
-#ifndef SUPPRESSED
-  // expected-warning at -2 {{Dereference of null pointer}}
-#endif
-}
-
-void testNilReceiver(int coin) {
-  id x = getNil();
-  if (coin)
-    testNilReceiverHelperA([x getPtr]);
-  else
-    testNilReceiverHelperB([[x getObject] getPtr]);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,112 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config suppress-inlined-defensive-checks=true -verify %s
-
-// Perform inline defensive checks.
-void idc(int *p) {
-	if (p)
-		;
-}
-
-int test01(int *p) {
-  if (p)
-    ;
-  return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test02(int *p, int *x) {
-  if (p)
-    ;
-  idc(p);
-	if (x)
-		;
-  return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test03(int *p, int *x) {
-	idc(p);
-	if (p)
-		;
-	return *p; // False negative
-}
-
-int deref04(int *p) {
-  return *p; // expected-warning {{Dereference of null pointer}}
-}
-
-int test04(int *p) {
-  if (p)
-    ;
-  idc(p);
-  return deref04(p);
-}
-
-int test11(int *q, int *x) {
-	int *p = q;
-	if (q)
-		;
-	if (x)
-		;
-	return *p; // expected-warning{{Dereference of null pointer}}
-}
-
-int test12(int *q) {
-	int *p = q;
-	idc(q);
-	return *p;
-}
-
-int test13(int *q) {
-	int *p = q;
-	idc(p);
-	return *p;
-}
-
-int test21(int *q, int *x) {
-	if (q)
-		;
-	if (x)
-		;
-	int *p = q;
-	return *p; // expected-warning{{Dereference of null pointer}}
-}
-
-int test22(int *q, int *x) {
-  idc(q);
-	if (x)
-		;
-	int *p = q;
-	return *p;
-}
-
-int test23(int *q, int *x) {
-  idc(q);
-	if (x)
-		;
-	int *p = q;
-  if (!p)
-    ;
-	return *p; // False negative
-}
-
-void use(char *p) {
-  if (!p)
-    return;
-  p[0] = 'a';
-}
-
-void test24(char *buffer) {
-  use(buffer);
-  buffer[1] = 'b';
-}
-
-// Ensure idc works on pointers with constant offset.
-void idcchar(const char *s2) {
-  if(s2)
-    ;
-}
-void testConstantOffset(char *value) {
-  char *cursor = value + 5;
-  idcchar(cursor);
-  if (*cursor) {
-    cursor++;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
-// expected-no-diagnostics
-
-extern void __assert_fail (__const char *__assertion, __const char *__file,
-                           unsigned int __line, __const char *__function)
-__attribute__ ((__noreturn__));
-#define assert(expr) \
-((expr)  ? (void)(0)  : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-
-class ButterFly {
-private:
-  ButterFly() { }
-public:
-	int triggerderef() {
-		return 0;
-	}
-};
-ButterFly *getInP();
-class X{
-	ButterFly *p;
-	void setP(ButterFly *inP) {
-		if(inP)
-      ;
-		p = inP;
-	};
-	void subtest1() {
-		ButterFly *inP = getInP();
-		setP(inP);
-	}
-	int subtest2() {
-		int c = p->triggerderef(); // no-warning
-		return c;
-	}
-	int test() {
-		subtest1();
-		return subtest2();
-	}
-};
-
-typedef const int *Ty;
-extern
-Ty notNullArg(Ty cf) __attribute__((nonnull));
-typedef const void *CFTypeRef;
-extern Ty getTyVal();
-inline void radar13224271_callee(Ty def, Ty& result ) {
-	result = def;
-  // Clearly indicates that result cannot be 0 if def is not NULL.
-	assert( (result != 0) || (def == 0) );
-}
-void radar13224271_caller()
-{
-	Ty value;
-	radar13224271_callee(getTyVal(), value );
-	notNullArg(value); // no-warning
-}
-
-struct Foo {
-	int *ptr;
-	Foo(int *p)  {
-		*p = 1; // no-warning
-	}
-};
-void idc(int *p3) {
-  if (p3)
-    ;
-}
-int *retNull() {
-  return 0;
-}
-void test(int *p1, int *p2) {
-  idc(p1);
-	Foo f(p1);
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/inline-defensive-checks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config suppress-inlined-defensive-checks=true -verify %s
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
-  Class isa;
-} *id;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
- at end
-
-// Check that inline defensive checks is triggered for null expressions
-// within CompoundLiteralExpr.
-typedef union {
-  struct dispatch_object_s *_do;
-  struct dispatch_source_s *_ds;
-} dispatch_object_t __attribute__((__transparent_union__));
-typedef struct dispatch_source_s *dispatch_source_t;
-
-extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__))
-void
-dispatch_resume(dispatch_object_t object);
-
- at interface AppDelegate : NSObject {
- at protected
-	dispatch_source_t p;
-}
- at end
- at implementation AppDelegate
-- (void)updateDeleteTimer {
-	if (p != ((void*)0))
-		;
-}
-- (void)createAndStartDeleteTimer {
-  [self updateDeleteTimer];
-  dispatch_resume(p); // no warning
-}
- at end
-
-// Test nil receiver suppression.
-// We only suppress on nil receiver if the nil value is directly causing the bug.
- at interface Foo {
- at public
-  int x;
-}
-- (Foo *)getFooPtr;
- at end
-
-Foo *retNil() {
-  return 0;
-}
-
-Foo *retInputOrNil(Foo *p) {
-  if (p)
-    return p;
-  return 0;
-}
-
-void idc(Foo *p) {
-  if (p)
-    ;
-}
-
-int testNilReceiver(Foo* fPtr) {
-  if (fPtr)
-    ;
-  // On a path where fPtr is nil, mem should be nil.
-  Foo *mem = [fPtr getFooPtr];
-  return mem->x; // expected-warning {{Access to instance variable 'x' results in a dereference of a null pointer}}
-}
-
-int suppressNilReceiverRetNullCond(Foo* fPtr) {
-  unsigned zero = 0;
-  fPtr = retInputOrNil(fPtr);
-  // On a path where fPtr is nzil, mem should be nil.
-  Foo *mem = [fPtr getFooPtr];
-  return mem->x;
-}
-
-int suppressNilReceiverRetNullCondCast(id fPtr) {
-  unsigned zero = 0;
-  fPtr = retInputOrNil(fPtr);
-  // On a path where fPtr is nzil, mem should be nil.
-  Foo *mem = ((id)([(Foo*)(fPtr) getFooPtr]));
-  return mem->x;
-}
-
-int dontSuppressNilReceiverRetNullCond(Foo* fPtr) {
-  unsigned zero = 0;
-  fPtr = retInputOrNil(fPtr);
-  // On a path where fPtr is nil, mem should be nil.
-  // The warning is not suppressed because the receiver being nil is not
-  // directly related to the value that triggers the warning.
-  Foo *mem = [fPtr getFooPtr];
-  if (!mem)
-    return 5/zero; // expected-warning {{Division by zero}}
-  return 0;
-}
-
-int dontSuppressNilReceiverRetNull(Foo* fPtr) {
-  unsigned zero = 0;
-  fPtr = retNil();
-  // On a path where fPtr is nil, mem should be nil.
-  // The warning is not suppressed because the receiver being nil is not
-  // directly related to the value that triggers the warning.
-  Foo *mem = [fPtr getFooPtr];
-  if (!mem)
-    return 5/zero; // expected-warning {{Division by zero}}
-  return 0;
-}
-
-int dontSuppressNilReceiverIDC(Foo* fPtr) {
-  unsigned zero = 0;
-  idc(fPtr);
-  // On a path where fPtr is nil, mem should be nil.
-  // The warning is not suppressed because the receiver being nil is not
-  // directly related to the value that triggers the warning.
-  Foo *mem = [fPtr getFooPtr];
-  if (!mem)
-    return 5/zero; // expected-warning {{Division by zero}}
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3344 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config suppress-null-return-paths=false -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config suppress-null-return-paths=false %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-void zero(int **p) {
-  *p = 0;
-  // expected-note at -1 {{Null pointer value stored to 'a'}}
-}
-
-void testZero(int *a) {
-  zero(&a);
-  // expected-note at -1 {{Calling 'zero'}}
-  // expected-note at -2 {{Returning from 'zero'}}
-  *a = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-void testCheck(int *a) {
-  if (a) {
-    // expected-note at -1 + {{Assuming 'a' is null}}
-    // expected-note at -2 + {{Taking false branch}}
-    ;
-  }
-  *a = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-
-int *getPointer();
-
-void testInitCheck() {
-  int *a = getPointer();
-  // expected-note at -1 {{'a' initialized here}}
-  if (a) {
-    // expected-note at -1 + {{Assuming 'a' is null}}
-    // expected-note at -2 + {{Taking false branch}}
-    ;
-  }
-  *a = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-void testStoreCheck(int *a) {
-  a = getPointer();
-  // expected-note at -1 {{Value assigned to 'a'}}
-  if (a) {
-    // expected-note at -1 + {{Assuming 'a' is null}}
-    // expected-note at -2 + {{Taking false branch}}
-    ;
-  }
-  *a = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-
-int *getZero() {
-  int *p = 0;
-  // expected-note at -1 + {{'p' initialized to a null pointer value}}
-  // ^ This note checks that we add a second visitor for the return value.
-  return p;
-  // expected-note at -1 + {{Returning null pointer (loaded from 'p')}}
-}
-
-void testReturnZero() {
-  *getZero() = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Calling 'getZero'}}
-  // expected-note at -2 {{Returning from 'getZero'}}
-  // expected-note at -3 {{Dereference of null pointer}}
-}
-
-int testReturnZero2() {
-  return *getZero(); // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Calling 'getZero'}}
-  // expected-note at -2 {{Returning from 'getZero'}}
-  // expected-note at -3 {{Dereference of null pointer}}
-}
-
-void testInitZero() {
-  int *a = getZero();
-  // expected-note at -1 {{Calling 'getZero'}}
-  // expected-note at -2 {{Returning from 'getZero'}}
-  // expected-note at -3 {{'a' initialized to a null pointer value}}
-  *a = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-void testStoreZero(int *a) {
-  a = getZero();
-  // expected-note at -1 {{Calling 'getZero'}}
-  // expected-note at -2 {{Returning from 'getZero'}}
-  // expected-note at -3 {{Null pointer value stored to 'a'}}
-  *a = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'a')}}
-}
-
-void usePointer(int *p) {
-  *p = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer}}
-}
-
-void testUseOfNullPointer() {
-  // Test the case where an argument expression is itself a call.
-  usePointer(getZero());
-  // expected-note at -1 {{Calling 'getZero'}}
-  // expected-note at -2 {{Returning from 'getZero'}}
-  // expected-note at -3 {{Passing null pointer value via 1st parameter 'p'}}
-  // expected-note at -4 {{Calling 'usePointer'}}
-}
-
-struct X { char *p; };
-
-void setFieldToNull(struct X *x) {
-	x->p = 0; // expected-note {{Null pointer value stored to field 'p'}}
-}
-
-int testSetFieldToNull(struct X *x) {
-  setFieldToNull(x); // expected-note {{Calling 'setFieldToNull'}}
-                     // expected-note at -1{{Returning from 'setFieldToNull'}}
-  return *x->p;
-  // expected-warning at -1 {{Dereference of null pointer (loaded from field 'p')}}
-  // expected-note at -2 {{Dereference of null pointer (loaded from field 'p')}}
-}
-
-struct Outer {
-  struct Inner {
-    int *p;
-  } inner;
-};
-
-void test(struct Outer *wrapperPtr) {
-  wrapperPtr->inner.p = 0;  // expected-note {{Null pointer value stored to field 'p'}}
-  *wrapperPtr->inner.p = 1; //expected-warning {{Dereference of null pointer (loaded from field 'p')}}
-                            // expected-note at -1 {{Dereference of null pointer (loaded from field 'p')}}
-}
-
-void test4(int **p) {
-  if (*p) return; // expected-note {{Taking false branch}}
-                  // expected-note at -1 {{Assuming pointer value is null}}
-  **p = 1; // expected-warning {{Dereference of null pointer}}
-           // expected-note at -1 {{Dereference of null pointer}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>11</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'zero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'zero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>5</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>6</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'a'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'a'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>11</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'zero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'zero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>14</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testZero</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>14</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>19</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'a' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'a' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testCheck</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>24</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>32</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>32</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>32</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'a' initialized here</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'a' initialized here</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>34</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>34</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>34</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'a' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'a' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>39</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>39</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>39</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testInitCheck</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>39</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>44</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Value assigned to 'a'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Value assigned to 'a'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>46</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'a' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'a' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>51</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testStoreCheck</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>51</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>65</integer>
-// CHECK-NEXT:       <key>col</key><integer>4</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testReturnZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testReturnZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>57</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>65</integer>
-// CHECK-NEXT:       <key>col</key><integer>4</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>65</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testReturnZero</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>65</integer>
-// CHECK-NEXT:    <key>col</key><integer>14</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>72</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testReturnZero2'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testReturnZero2'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>57</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>72</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>72</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testReturnZero2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>72</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>79</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>79</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>79</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testInitZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testInitZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>57</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>79</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>79</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>79</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>79</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>79</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>79</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'a' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'a' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>79</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>83</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testInitZero</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>83</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>88</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testStoreZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testStoreZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>57</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>88</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>88</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'a'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'a'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>92</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>92</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>92</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>92</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>92</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testStoreZero</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>92</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>103</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testUseOfNullPointer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testUseOfNullPointer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>57</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null pointer (loaded from 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>103</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>103</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>103</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'usePointer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'usePointer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>96</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testUseOfNullPointer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testUseOfNullPointer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>97</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>97</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>97</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>usePointer</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>97</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>117</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>117</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>117</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'setFieldToNull'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'setFieldToNull'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>112</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testSetFieldToNull'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testSetFieldToNull'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>113</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>113</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>113</integer>
-// CHECK-NEXT:       <key>col</key><integer>2</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>113</integer>
-// CHECK-NEXT:          <key>col</key><integer>2</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>113</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to field 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to field 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>117</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>117</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>117</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'setFieldToNull'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'setFieldToNull'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>119</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>119</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>119</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testSetFieldToNull</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>119</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>131</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>131</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>131</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to field 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to field 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>131</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>131</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>132</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>132</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>132</integer>
-// CHECK-NEXT:       <key>col</key><integer>24</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>132</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>132</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>132</integer>
-// CHECK-NEXT:    <key>col</key><integer>24</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>137</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>137</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>137</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>137</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>137</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>137</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>137</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>137</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>137</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>139</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>139</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>139</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test4</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>139</integer>
-// CHECK-NEXT:    <key>col</key><integer>7</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4746 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config c++-inlining=destructors -std=c++11 -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config c++-inlining=destructors -std=c++11 %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-class Foo {
-public:
-  static void use(int *p) {
-    *p = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
-    // expected-note at -1 {{Dereference of null pointer (loaded from variable 'p')}}
-  }
-
-  Foo(int *p) {
-    use(p);
-    // expected-note at -1 {{Passing null pointer value via 1st parameter 'p'}}
-    // expected-note at -2 {{Calling 'Foo::use'}}
-  }
-};
-
-static int *globalPtr;
-
-class Bar {
-public:
-  ~Bar() {
-    Foo f(globalPtr);
-    // expected-note at -1 {{Passing null pointer value via 1st parameter 'p'}}
-    // expected-note at -2 {{Calling constructor for 'Foo'}}
-  }
-};
-
-void test() {
-  Bar b;
-  globalPtr = 0;
-  // expected-note at -1 {{Null pointer value stored to 'globalPtr'}}
-} // expected-note {{Calling '~Bar'}}
-
-
-void testAnonymous() {
-  class {
-  public:
-    void method(int *p) {
-      *p = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'p')}}
-      // expected-note at -1 {{Dereference of null pointer (loaded from variable 'p')}}
-    }
-  } anonymous;
-
-  anonymous.method(0);
-  // expected-note at -1 {{Passing null pointer value via 1st parameter 'p'}}
-  // expected-note at -2 {{Calling 'method'}}
-}
-
-
-// A simplified version of std::move.
-template <typename T>
-T &&move(T &obj) {
-  return static_cast<T &&>(obj);
-}
-
-
-namespace defaulted {
-  class Dereferencer {
-  public:
-    Dereferencer() {
-      *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-      // expected-note at -1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-    }
-
-    Dereferencer(const Dereferencer &Other) {
-      *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-      // expected-note at -1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-    }
-
-    Dereferencer(Dereferencer &&Other) {
-      *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-      // expected-note at -1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-    }
-
-    void operator=(const Dereferencer &Other) {
-      *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-      // expected-note at -1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-    }
-
-    void operator=(Dereferencer &&Other) {
-      *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-      // expected-note at -1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-    }
-
-    ~Dereferencer() {
-      *globalPtr = 1; // expected-warning {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-      // expected-note at -1 {{Dereference of null pointer (loaded from variable 'globalPtr')}}
-    }
-  };
-
-  class Wrapper {
-    Dereferencer d;
-  };
-
-  class MovableWrapper {
-    Dereferencer d;
-  public:
-    MovableWrapper() = default;
-
-    MovableWrapper(MovableWrapper &&Other) = default;
-    // expected-note at -1 {{Calling move constructor for 'Dereferencer'}}
-
-    MovableWrapper &operator=(MovableWrapper &&Other) = default;
-    // expected-note at -1 {{Calling move assignment operator for 'Dereferencer'}}
-  };
-
-  void testDefaultConstruction() {
-    globalPtr = 0;
-    // expected-note at -1 {{Null pointer value stored to 'globalPtr'}}
-    Wrapper w;
-    // expected-note at -1 {{Calling implicit default constructor for 'Wrapper'}}
-    // expected-note at -2 {{Calling default constructor for 'Dereferencer'}}
-  }
-
-  void testCopyConstruction(const Wrapper &input) {
-    globalPtr = 0;
-    // expected-note at -1 {{Null pointer value stored to 'globalPtr'}}
-    Wrapper w{input};
-    // expected-note at -1 {{Calling implicit copy constructor for 'Wrapper'}}
-    // expected-note at -2 {{Calling copy constructor for 'Dereferencer'}}
-  }
-
-  void testMoveConstruction(MovableWrapper &&input) {
-    globalPtr = 0;
-    // expected-note at -1 {{Null pointer value stored to 'globalPtr'}}
-    MovableWrapper w{move(input)};
-    // expected-note at -1 {{Calling defaulted move constructor for 'MovableWrapper'}}
-  }
-
-  void testCopyAssignment(const Wrapper &input) {
-    Wrapper w;
-    globalPtr = 0;
-    // expected-note at -1 {{Null pointer value stored to 'globalPtr'}}
-    w = input;
-    // expected-note at -1 {{Calling implicit copy assignment operator for 'Wrapper'}}
-    // expected-note at -2 {{Calling copy assignment operator for 'Dereferencer'}}
-  }
-
-  void testMoveAssignment(MovableWrapper &&input) {
-    MovableWrapper w;
-    globalPtr = 0;
-    // expected-note at -1 {{Null pointer value stored to 'globalPtr'}}
-    w = move(input);
-    // expected-note at -1 {{Calling defaulted move assignment operator for 'MovableWrapper'}}
-  }
-
-  void testDestruction() {
-    Wrapper w;
-    globalPtr = 0;
-    // expected-note at -1 {{Null pointer value stored to 'globalPtr'}}
-  }
-  // expected-note at -1 {{Calling implicit destructor for 'Wrapper'}}
-  // expected-note at -2 {{Calling '~Dereferencer'}}
-}
-
-namespace ReturnZeroNote {
-  int getZero() {
-    return 0;
-    // expected-note at -1 {{Returning zero}}
-  }
-
-  const int &getZeroByRef() {
-    static int zeroVar;
-    zeroVar = 0;
-    // expected-note at -1 {{The value 0 is assigned to 'zeroVar'}}
-    return zeroVar;
-    // expected-note at -1 {{Returning zero (reference to 'zeroVar')}}
-  }
-
-  void test() {
-    int problem = 1 / getZero(); // expected-warning {{Division by zero}}
-    // expected-note at -1 {{Calling 'getZero'}}
-    // expected-note at -2 {{Returning from 'getZero'}}
-    // expected-note at -3 {{Division by zero}}
-  }
-
-  void testRef() {
-    int problem = 1 / getZeroByRef(); // expected-warning {{Division by zero}}
-    // expected-note at -1 {{Calling 'getZeroByRef'}}
-    // expected-note at -2 {{Returning from 'getZeroByRef'}}
-    // expected-note at -3 {{Division by zero}}
-  }
-}
-
-int &returnNullReference() {
-  int *x = 0;
-  // expected-note at -1 {{'x' initialized to a null pointer value}}
-  return *x; // expected-warning{{Returning null reference}}
-  // expected-note at -1 {{Returning null reference}}
-}
-
-struct FooWithInitializer {
-	int *ptr;
-	FooWithInitializer(int *p) : ptr(p) { // expected-note {{Null pointer value stored to 'f.ptr'}}
-		*ptr = 1; // expected-note {{Dereference of null pointer (loaded from field 'ptr')}}
-    // expected-warning at -1 {{Dereference of null pointer (loaded from field 'ptr')}}
-	}
-};
-
-void testPathNoteOnInitializer() {
-	int *p = 0; // expected-note {{'p' initialized to a null pointer value}}
-
-	FooWithInitializer f(p); // expected-note {{Passing null pointer value via 1st parameter 'p'}}
-  // expected-note at -1 {{Calling constructor for 'FooWithInitializer'}}
-}
-
-int testNonPrintableAssignment(int **p) {
-  int *&y = *p; // expected-note {{'y' initialized here}}
-  y = 0;        // expected-note {{Storing null pointer value}}
-  return *y; // expected-warning {{Dereference of null pointer (loaded from variable 'y')}}
-             // expected-note at -1 {{Dereference of null pointer (loaded from variable 'y')}}
-}
-
-struct Base { int *x; };
-struct Derived : public Base {};
-
-void test(Derived d) {
-  d.x = 0; //expected-note {{Null pointer value stored to 'd.x'}}
-  *d.x = 1; // expected-warning {{Dereference of null pointer (loaded from field 'x')}}
-            // expected-note at -1 {{Dereference of null pointer (loaded from field 'x')}}
-}
-
-struct Owner {
-	struct Wrapper {
-		int x;
-	};
-	Wrapper *arr;
-	void testGetDerefExprOnMemberExprWithADot();
-};
-
-void Owner::testGetDerefExprOnMemberExprWithADot() {
-	if (arr)  // expected-note {{Assuming pointer value is null}}
-            // expected-note at -1 {{Taking false branch}}
-	  ;
-	arr[1].x = 1; //expected-warning {{Dereference of null pointer}}
-                //expected-note at -1 {{Dereference of null pointer}}
-}
-
-void testGetDerefExprOnMemberExprWithADot() {
-  Owner::Wrapper *arr; // expected-note {{'arr' declared without an initial value}}
-	arr[2].x = 1; // expected-warning {{Dereference of undefined pointer value}}
-                // expected-note at -1 {{Dereference of undefined pointer value}}
-}
-
-
-
-class A {
-public:
-  void bar() const {}
-};
-const A& testDeclRefExprToReferenceInGetDerefExpr(const A *ptr) {
-  const A& val = *ptr; //expected-note {{'val' initialized here}}
-
-  // This is not valid C++; if 'ptr' were null, creating 'ref' would be illegal.
-  // However, this is not checked at runtime, so this branch is actually
-  // possible.
-  if (&val == 0) { //expected-note {{Assuming pointer value is null}}
-                   // expected-note at -1 {{Taking true branch}}
-    val.bar(); // expected-warning {{Called C++ object pointer is null}}
-               // expected-note at -1 {{Called C++ object pointer is null}}
-  }
-
-  return val;
-}
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>32</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>32</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>32</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>32</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>34</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling '~Bar'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling '~Bar'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>23</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling constructor for 'Foo'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling constructor for 'Foo'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>12</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from '~Bar'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from '~Bar'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>13</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>13</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>13</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>13</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>13</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>13</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'Foo::use'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'Foo::use'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>7</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>3</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from constructor for 'Foo'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from constructor for 'Foo'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>7</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>7</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>8</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>8</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>8</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>8</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>3</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>C++ method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>use</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>8</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>46</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>46</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'method'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'method'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>40</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testAnonymous'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testAnonymous'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>40</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>40</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>41</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>C++ method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>method</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>41</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>110</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>110</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>110</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>110</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>110</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>112</integer>
-// CHECK-NEXT:       <key>col</key><integer>13</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>112</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>112</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling implicit default constructor for 'Wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling implicit default constructor for 'Wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>112</integer>
-// CHECK-NEXT:       <key>col</key><integer>13</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>112</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>112</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling default constructor for 'Dereferencer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling default constructor for 'Dereferencer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>62</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from default constructor for 'Wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from default constructor for 'Wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>63</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>63</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>63</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>63</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>63</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>63</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>63</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>63</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>63</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>63</integer>
-// CHECK-NEXT:    <key>col</key><integer>18</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>118</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>118</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>118</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>118</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>118</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>120</integer>
-// CHECK-NEXT:       <key>col</key><integer>13</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling implicit copy constructor for 'Wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling implicit copy constructor for 'Wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>120</integer>
-// CHECK-NEXT:       <key>col</key><integer>13</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling copy constructor for 'Dereferencer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling copy constructor for 'Dereferencer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>67</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from copy constructor for 'Wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from copy constructor for 'Wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>68</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>68</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>68</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>68</integer>
-// CHECK-NEXT:    <key>col</key><integer>18</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>126</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>126</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>126</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>128</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>128</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>128</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling defaulted move constructor for 'MovableWrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling defaulted move constructor for 'MovableWrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>102</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>102</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>102</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling move constructor for 'Dereferencer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling move constructor for 'Dereferencer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>72</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from move constructor for 'MovableWrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from move constructor for 'MovableWrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>73</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>73</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>73</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>73</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>73</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>73</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>73</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>73</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>73</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>73</integer>
-// CHECK-NEXT:    <key>col</key><integer>18</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>133</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>133</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>133</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>133</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>133</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>133</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>134</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>134</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>134</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>136</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>136</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>136</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling implicit copy assignment operator for 'Wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling implicit copy assignment operator for 'Wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>136</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>136</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>136</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling copy assignment operator for 'Dereferencer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling copy assignment operator for 'Dereferencer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>77</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from copy assignment operator for 'Wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from copy assignment operator for 'Wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>78</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>78</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>78</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>C++ method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>operator=</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>78</integer>
-// CHECK-NEXT:    <key>col</key><integer>18</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>143</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>143</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>143</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>145</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>145</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>145</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>145</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>145</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling defaulted move assignment operator for 'MovableWrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling defaulted move assignment operator for 'MovableWrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>105</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>105</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>105</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>105</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>105</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>105</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>105</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling move assignment operator for 'Dereferencer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling move assignment operator for 'Dereferencer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>82</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from move assignment operator for 'MovableWrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from move assignment operator for 'MovableWrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>83</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>C++ method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>operator=</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>83</integer>
-// CHECK-NEXT:    <key>col</key><integer>18</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>150</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>150</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>150</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>150</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>150</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>150</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>151</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>151</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>151</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'globalPtr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>153</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling implicit destructor for 'Wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling implicit destructor for 'Wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>153</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling '~Dereferencer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling '~Dereferencer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>87</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from destructor for 'Wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from destructor for 'Wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>87</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>87</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>88</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'globalPtr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>88</integer>
-// CHECK-NEXT:    <key>col</key><integer>18</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>173</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>173</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>173</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>173</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>173</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>173</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>173</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>159</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>159</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>159</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>160</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>160</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>160</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning zero</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning zero</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>173</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>173</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>173</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getZero'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>173</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>173</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>173</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>173</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>173</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>173</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>173</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Division by zero</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Division by zero</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Division by zero</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Division by zero</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>173</integer>
-// CHECK-NEXT:    <key>col</key><integer>21</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>34</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>180</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>180</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>180</integer>
-// CHECK-NEXT:          <key>col</key><integer>36</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getZeroByRef'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getZeroByRef'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>164</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testRef'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testRef'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>164</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>164</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>165</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>165</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>165</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>165</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>166</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>166</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>166</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The value 0 is assigned to 'zeroVar'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The value 0 is assigned to 'zeroVar'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>168</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>168</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>168</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>168</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>168</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning zero (reference to 'zeroVar')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning zero (reference to 'zeroVar')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>180</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>180</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>180</integer>
-// CHECK-NEXT:          <key>col</key><integer>36</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getZeroByRef'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getZeroByRef'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>34</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>180</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>180</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>180</integer>
-// CHECK-NEXT:          <key>col</key><integer>36</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Division by zero</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Division by zero</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Division by zero</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Division by zero</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testRef</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>180</integer>
-// CHECK-NEXT:    <key>col</key><integer>21</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>188</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>188</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>188</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'x' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'x' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>188</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>188</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>190</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>190</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>190</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>190</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>190</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null reference</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null reference</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Returning null reference</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Returning null reference</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>returnNullReference</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>190</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>203</integer>
-// CHECK-NEXT:       <key>col</key><integer>2</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>203</integer>
-// CHECK-NEXT:          <key>col</key><integer>2</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>203</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>203</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>203</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>205</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>205</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>205</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>205</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>205</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>205</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling constructor for 'FooWithInitializer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling constructor for 'FooWithInitializer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>196</integer>
-// CHECK-NEXT:       <key>col</key><integer>2</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testPathNoteOnInitializer'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testPathNoteOnInitializer'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>196</integer>
-// CHECK-NEXT:       <key>col</key><integer>31</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'f.ptr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'f.ptr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>196</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>197</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>197</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>197</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>197</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>197</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'ptr')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'ptr')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from field 'ptr')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>197</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>210</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>210</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>210</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'y' initialized here</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'y' initialized here</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>210</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>210</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>211</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>211</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>211</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>211</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>211</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Storing null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Storing null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>211</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>211</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>212</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>212</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>212</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>212</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>212</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>212</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>212</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>212</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>212</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'y')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'y')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'y')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testNonPrintableAssignment</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>212</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>220</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>220</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>220</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'd.x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'd.x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>220</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>220</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>221</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>221</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>221</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>221</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>221</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'x')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'x')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from field 'x')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>221</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>234</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>234</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>234</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>234</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>234</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>234</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>234</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>234</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>234</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>237</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>237</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>237</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>237</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>237</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>237</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>237</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>237</integer>
-// CHECK-NEXT:          <key>col</key><integer>2</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>237</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>C++ method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testGetDerefExprOnMemberExprWithADot</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>237</integer>
-// CHECK-NEXT:    <key>col</key><integer>11</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>242</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>242</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>242</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'arr' declared without an initial value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'arr' declared without an initial value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>242</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>242</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>243</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>243</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>243</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>243</integer>
-// CHECK-NEXT:          <key>col</key><integer>2</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>243</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of undefined pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of undefined pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of undefined pointer value</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of undefined pointer value</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testGetDerefExprOnMemberExprWithADot</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>243</integer>
-// CHECK-NEXT:    <key>col</key><integer>11</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>254</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>254</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>254</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'val' initialized here</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'val' initialized here</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>254</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>254</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>259</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>259</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>259</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>259</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>259</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>259</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>259</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>259</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>259</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>259</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>259</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>261</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>261</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>261</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>261</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>261</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testDeclRefExprToReferenceInGetDerefExpr</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>261</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/path-notes.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1357 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config suppress-null-return-paths=false -fblocks -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config suppress-null-return-paths=false -fblocks %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-typedef struct dispatch_queue_s *dispatch_queue_t;
-typedef void (^dispatch_block_t)(void);
-void dispatch_sync(dispatch_queue_t, dispatch_block_t);
-
-
- at interface Test
- at property int *p;
- at end
-
-int *getZeroIfNil(Test *x) {
-  return x.p;
-  // expected-note at -1 {{'p' not called because the receiver is nil}}
-  // expected-note at -2 {{Returning null pointer}}
-}
-
-void testReturnZeroIfNil() {
-  *getZeroIfNil(0) = 1; // expected-warning{{Dereference of null pointer}}
-  // expected-note at -1 {{Calling 'getZeroIfNil'}}
-  // expected-note at -2 {{Passing nil object reference via 1st parameter 'x'}}
-  // expected-note at -3 {{Returning from 'getZeroIfNil'}}
-  // expected-note at -4 {{Dereference of null pointer}}
-}
-
-
-int testDispatchSyncInlining() {
-  extern dispatch_queue_t globalQueue;
-
-  __block int x;
-
-  // expected-note at +2 {{Calling 'dispatch_sync'}}
-  // expected-note at +1 {{Returning from 'dispatch_sync'}}
-  dispatch_sync(globalQueue, ^{
-    // expected-note at 7 {{Calling anonymous block}}
-    x = 0;
-    // expected-note at -1 {{The value 0 is assigned to 'x'}}
-    // expected-note at 7 {{Returning to caller}}
-  });
-
-  return 1 / x; // expected-warning{{Division by zero}}
-  // expected-note at -1 {{Division by zero}}
-}
-
-int testDispatchSyncInliningNoPruning(int coin) {
-  // This tests exactly the same case as above, except on a bug report where
-  // path pruning is disabled (an uninitialized variable capture).
-  // In this case 
-  extern dispatch_queue_t globalQueue;
-
-  __block int y;
-
-  // expected-note at +1 {{Calling 'dispatch_sync'}}
-  dispatch_sync(globalQueue, ^{
-    // expected-note at 7 {{Calling anonymous block}}
-    int x;
-    // expected-note at -1 {{'x' declared without an initial value}}
-    ^{ y = x; }(); // expected-warning{{Variable 'x' is uninitialized when captured by block}}
-    // expected-note at -1 {{'x' is uninitialized when captured by block}}
-  });
-
-  return y;
-}
-
-
- at interface PointerWrapper
-- (int *)getPtr;
- at end
-
-id getNil() {
-  return 0;
-}
-
-void testNilReceiverHelper(int *x) {
-  *x = 1; // expected-warning {{Dereference of null pointer}}
-  // expected-note at -1 {{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-void testNilReceiver(id *x) {
-  if (*x) {
-    // expected-note at -1 {{Taking false branch}}
-    return;
-  }
-  testNilReceiverHelper([*x getPtr]);
-  // expected-note at -1 {{'getPtr' not called because the receiver is nil}}
-  // expected-note at -2 {{Passing null pointer value via 1st parameter 'x'}}
-  // expected-note at -3 {{Calling 'testNilReceiverHelper'}}
-}
-
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>21</integer>
-// CHECK-NEXT:       <key>col</key><integer>17</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing nil object reference via 1st parameter 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing nil object reference via 1st parameter 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>21</integer>
-// CHECK-NEXT:       <key>col</key><integer>4</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'getZeroIfNil'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'getZeroIfNil'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>14</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testReturnZeroIfNil'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testReturnZeroIfNil'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>15</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' not called because the receiver is nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' not called because the receiver is nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>15</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>15</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning null pointer</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning null pointer</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>21</integer>
-// CHECK-NEXT:       <key>col</key><integer>4</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'getZeroIfNil'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'getZeroIfNil'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>21</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>21</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>21</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testReturnZeroIfNil</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>21</integer>
-// CHECK-NEXT:    <key>col</key><integer>20</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>36</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>36</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'dispatch_sync'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'dispatch_sync'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>7</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testDispatchSyncInlining'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testDispatchSyncInlining'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>7</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>36</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'dispatch_sync'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'dispatch_sync'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>38</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The value 0 is assigned to 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The value 0 is assigned to 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>7</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>36</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>36</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'dispatch_sync'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'dispatch_sync'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>43</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>43</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>43</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Division by zero</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Division by zero</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Division by zero</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Division by zero</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testDispatchSyncInlining</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>14</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>43</integer>
-// CHECK-NEXT:    <key>col</key><integer>12</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'dispatch_sync'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'dispatch_sync'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>7</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testDispatchSyncInliningNoPruning'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testDispatchSyncInliningNoPruning'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>7</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'dispatch_sync'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'dispatch_sync'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>58</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'x' declared without an initial value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'x' declared without an initial value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Variable 'x' is uninitialized when captured by block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Variable 'x' is uninitialized when captured by block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Variable 'x' is uninitialized when captured by block</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>uninitialized variable captured by block</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>60</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>86</integer>
-// CHECK-NEXT:       <key>col</key><integer>26</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'getPtr' not called because the receiver is nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'getPtr' not called because the receiver is nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>86</integer>
-// CHECK-NEXT:       <key>col</key><integer>25</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>35</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Passing null pointer value via 1st parameter 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>86</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>36</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'testNilReceiverHelper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'testNilReceiverHelper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>76</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testNilReceiver'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testNilReceiver'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>77</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testNilReceiverHelper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>77</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/retain-count-self-init.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/retain-count-self-init.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/retain-count-self-init.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,osx.cocoa.SelfInit -analyzer-config ipa=dynamic-bifurcate -verify %s
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
-- (oneway void)release;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
- at end
-
-// We do not want to overhelm user with error messages in case they forgot to 
-// assign to self and check that the result of [super init] is non-nil. So 
-// stop tracking the receiver of init with respect to Retain Release checker.  
-// radar://12115830
- at interface ParentOfCell : NSObject
-- (id)initWithInt: (int)inInt;
- at end
- at interface Cell : ParentOfCell{
-  int x;
-}
-- (id)init;
-+ (void)test;
- at property int x;
- at end
- at implementation Cell
- at synthesize x;
-- (id) init {
-  [super init];
-  self.x = 3; // no-warning 
-  return self; // expected-warning {{Returning 'self' while it is not set to the result of '[(super or self)}} 
-}
-- (id) initWithInt: (int)inInt {
-  [super initWithInt: inInt];
-  self.x = inInt; // no-warning 
-  return self; // expected-warning {{Returning 'self' while it is not set to the result of '[(super or self)}} 
-}
-- (id) init2 {
-  [self init]; // The call [self init] is inlined. We will warn inside the inlined body.
-  self.x = 2; // no-warning 
-  return self; 
-}
-
-- (id) initWithIntGood: (int)inInt {
-    if (self = [super initWithInt: inInt]) {
-      self.x = inInt; 
-    }
-    return self; 
-}
-+ (void) test {
-  Cell *sharedCell1 = [[Cell alloc] init];
-  [sharedCell1 release];
-  Cell *sharedCell2 = [[Cell alloc] initWithInt: 3];
-  [sharedCell2 release];
-  Cell *sharedCell3 = [[Cell alloc] initWithIntGood: 3];
-  [sharedCell3 release];
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/stl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/stl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/stl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-container-inlining=true -analyzer-config c++-stdlib-inlining=false -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-config c++-container-inlining=true -analyzer-config c++-stdlib-inlining=true -DINLINE=1 -verify %s
-
-#include "../Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_eval(bool);
-
-void testVector(std::vector<int> &nums) {
-  if (nums.begin()) return;
-  if (nums.end()) return;
-  
-  clang_analyzer_eval(nums.size() == 0);
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-}
-
-void testException(std::exception e) {
-  // Notice that the argument is NOT passed by reference, so we can devirtualize.
-  const char *x = e.what();
-  clang_analyzer_eval(x == 0);
-#if INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/test-always-inline-size-option.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/test-always-inline-size-option.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/test-always-inline-size-option.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-inline-max-stack-depth=3 -analyzer-config ipa-always-inline-size=3 -verify %s
-
-void clang_analyzer_eval(int);
-int nested5() {
-  if (5 < 3)
-    return 0;
-  else
-    if (3 == 3)
-      return 0;
-  return 0;
-}
-int nested4() {
-  return nested5();
-}
-int nested3() {
-  return nested4();
-}
-int nested2() {
-  return nested3();
-}
-int nested1() {
-  return nested2();
-}
-
-void testNested() {
-  clang_analyzer_eval(nested1() == 0); // expected-warning{{TRUE}}
-}
-
-// Make sure we terminate a recursive path.
-int recursive() {
-  return recursive();
-}
-int callRecursive() {
-  return recursive();
-}
-
-int mutuallyRecursive1();
-
-int mutuallyRecursive2() {
-  return mutuallyRecursive1();
-}
-
-int mutuallyRecursive1() {
-  return mutuallyRecursive2();
-}
-int callMutuallyRecursive() {
-  return mutuallyRecursive1();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/inlining/test_objc_inlining_option.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/inlining/test_objc_inlining_option.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/inlining/test_objc_inlining_option.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-config ipa=dynamic-bifurcate -analyzer-config objc-inlining=false -verify %s
-// expected-no-diagnostics
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
- at end
-
-// Vanila: ObjC class method is called by name.
- at interface MyParent : NSObject
-+ (int)getInt;
- at end
- at interface MyClass : MyParent
-+ (int)getInt;
- at end
- at implementation MyClass
-+ (int)testClassMethodByName {
-    int y = [MyClass getInt];
-    return 5/y; // no-warning
-}
-+ (int)getInt {
-  return 0;
-}
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/ivars.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/ivars.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/ivars.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,140 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-store=region -fblocks -verify -Wno-objc-root-class %s
-
-void clang_analyzer_eval(int);
-
- at interface Root {
- at public
-  int uniqueID;
-}
-
-- (void)refreshID;
- at end
-
-void testInvalidation(Root *obj) {
-  int savedID = obj->uniqueID;
-  clang_analyzer_eval(savedID == obj->uniqueID); // expected-warning{{TRUE}}
-
-  [obj refreshID];
-  clang_analyzer_eval(savedID == obj->uniqueID); // expected-warning{{UNKNOWN}}
-}
-
-
- at interface Child : Root
- at end
-
- at implementation Child
-- (void)testSuperInvalidation {
-  int savedID = self->uniqueID;
-  clang_analyzer_eval(savedID == self->uniqueID); // expected-warning{{TRUE}}
-
-  [super refreshID];
-  clang_analyzer_eval(savedID == self->uniqueID); // expected-warning{{UNKNOWN}}
-}
- at end
-
-
- at interface ManyIvars {
-  struct S { int a, b; } s;
-  int c;
-  int d;
-}
- at end
-
-struct S makeS();
-
- at implementation ManyIvars
-
-- (void)testMultipleIvarInvalidation:(int)useConstraints {
-  if (useConstraints) {
-    if (s.a != 1) return;
-    if (s.b != 2) return;
-    if (c != 3) return;
-    if (d != 4) return;
-    return;
-  } else {
-    s.a = 1;
-    s.b = 2;
-    c = 3;
-    d = 4;
-  }
-
-  clang_analyzer_eval(s.a == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(s.b == 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
-  clang_analyzer_eval(d == 4); // expected-warning{{TRUE}}
-
-  d = 0;
-
-  clang_analyzer_eval(s.a == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(s.b == 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
-  clang_analyzer_eval(d == 0); // expected-warning{{TRUE}}
-
-  d = 4;
-  s = makeS();
-
-  clang_analyzer_eval(s.a == 1); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(s.b == 2); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
-  clang_analyzer_eval(d == 4); // expected-warning{{TRUE}}
-
-  s.a = 1;
-
-  clang_analyzer_eval(s.a == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(s.b == 2); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(c == 3); // expected-warning{{TRUE}}
-  clang_analyzer_eval(d == 4); // expected-warning{{TRUE}}
-}
-
-+ (void)testMultipleIvarInvalidation:(int)useConstraints
-                           forObject:(ManyIvars *)obj {
-  if (useConstraints) {
-    if (obj->s.a != 1) return;
-    if (obj->s.b != 2) return;
-    if (obj->c != 3) return;
-    if (obj->d != 4) return;
-    return;
-  } else {
-    obj->s.a = 1;
-    obj->s.b = 2;
-    obj->c = 3;
-    obj->d = 4;
-  }
-
-  clang_analyzer_eval(obj->s.a == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->s.b == 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->c == 3); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->d == 4); // expected-warning{{TRUE}}
-
-  obj->d = 0;
-
-  clang_analyzer_eval(obj->s.a == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->s.b == 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->c == 3); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->d == 0); // expected-warning{{TRUE}}
-
-  obj->d = 4;
-  obj->s = makeS();
-
-  clang_analyzer_eval(obj->s.a == 1); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(obj->s.b == 2); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(obj->c == 3); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->d == 4); // expected-warning{{TRUE}}
-
-  obj->s.a = 1;
-
-  clang_analyzer_eval(obj->s.a == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->s.b == 2); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(obj->c == 3); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj->d == 4); // expected-warning{{TRUE}}
-}
-
- at end
-
-
-int testNull(Root *obj) {
-  if (obj) return 0;
-
-  int *x = &obj->uniqueID;
-  return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/keychainAPI-diagnostic-visitor.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/keychainAPI-diagnostic-visitor.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/keychainAPI-diagnostic-visitor.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=osx.SecKeychainAPI -analyzer-store=region -analyzer-output=text -verify %s
-
-// This file is for testing enhanced diagnostics produced by the default SecKeychainAPI checker.
-
-typedef unsigned int OSStatus;
-typedef unsigned int SecKeychainAttributeList;
-typedef unsigned int SecKeychainItemRef;
-typedef unsigned int SecItemClass;
-typedef unsigned int UInt32;
-enum {
-    noErr                      = 0,
-    GenericError               = 1
-};
-OSStatus SecKeychainItemCopyContent (
-                                     SecKeychainItemRef itemRef,
-                                     SecItemClass *itemClass,
-                                     SecKeychainAttributeList *attrList,
-                                     UInt32 *length,
-                                     void **outData
-                                     );
-
-void DellocWithCFStringCreate4() {
-    unsigned int *ptr = 0;
-    OSStatus st = 0;
-    UInt32 length;
-    char *bytes;
-    char *x;
-    st = SecKeychainItemCopyContent(2, ptr, ptr, &length, (void **)&bytes); // expected-note {{Data is allocated here}}
-    x = bytes;
-    if (st == noErr) // expected-note {{Assuming 'st' is equal to noErr}} // expected-note{{Taking true branch}}
-        x = bytes;;
-  
-    length++; // expected-warning {{Allocated data is not released}} // expected-note{{Allocated data is not released}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/keychainAPI.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/keychainAPI.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/keychainAPI.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,428 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=osx.SecKeychainAPI %s -verify
-
-// Fake typedefs.
-typedef unsigned int OSStatus;
-typedef unsigned int SecKeychainAttributeList;
-typedef unsigned int SecKeychainItemRef;
-typedef unsigned int SecItemClass;
-typedef unsigned int UInt32;
-typedef unsigned int CFTypeRef;
-typedef unsigned int UInt16;
-typedef unsigned int SecProtocolType;
-typedef unsigned int SecAuthenticationType;
-typedef unsigned int SecKeychainAttributeInfo;
-enum {
-  noErr                      = 0,
-  GenericError               = 1
-};
-
-// Functions that allocate data.
-OSStatus SecKeychainItemCopyContent (
-    SecKeychainItemRef itemRef,
-    SecItemClass *itemClass,
-    SecKeychainAttributeList *attrList,
-    UInt32 *length,
-    void **outData
-);
-OSStatus SecKeychainFindGenericPassword (
-    CFTypeRef keychainOrArray,
-    UInt32 serviceNameLength,
-    const char *serviceName,
-    UInt32 accountNameLength,
-    const char *accountName,
-    UInt32 *passwordLength,
-    void **passwordData,
-    SecKeychainItemRef *itemRef
-);
-OSStatus SecKeychainFindInternetPassword (
-    CFTypeRef keychainOrArray,
-    UInt32 serverNameLength,
-    const char *serverName,
-    UInt32 securityDomainLength,
-    const char *securityDomain,
-    UInt32 accountNameLength,
-    const char *accountName,
-    UInt32 pathLength,
-    const char *path,
-    UInt16 port,
-    SecProtocolType protocol,
-    SecAuthenticationType authenticationType,
-    UInt32 *passwordLength,
-    void **passwordData,
-    SecKeychainItemRef *itemRef
-);
-OSStatus SecKeychainItemCopyAttributesAndData (
-   SecKeychainItemRef itemRef,
-   SecKeychainAttributeInfo *info,
-   SecItemClass *itemClass,
-   SecKeychainAttributeList **attrList,
-   UInt32 *length,
-   void **outData
-);
-
-// Functions which free data.
-OSStatus SecKeychainItemFreeContent (
-    SecKeychainAttributeList *attrList,
-    void *data
-);
-OSStatus SecKeychainItemFreeAttributesAndData (
-   SecKeychainAttributeList *attrList,
-   void *data
-);
-
-void errRetVal() {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *outData;
-  st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
-  if (st == GenericError)
-    SecKeychainItemFreeContent(ptr, outData); // expected-warning{{Only call free if a valid (non-NULL) buffer was returned}}
-} // expected-warning{{Allocated data is not released: missing a call to 'SecKeychainItemFreeContent'}}
-
-// If null is passed in, the data is not allocated, so no need for the matching free.
-void fooDoNotReportNull() {
-    unsigned int *ptr = 0;
-    OSStatus st = 0;
-    UInt32 *length = 0;
-    void **outData = 0;
-    SecKeychainItemCopyContent(2, ptr, ptr, 0, 0);
-    SecKeychainItemCopyContent(2, ptr, ptr, length, outData);
-}// no-warning
-
-void doubleAlloc() {
-    unsigned int *ptr = 0;
-    OSStatus st = 0;
-    UInt32 length;
-    void *outData;
-    st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
-    st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData); // expected-warning {{Allocated data should be released before another call to the allocator:}}
-    if (st == noErr)
-      SecKeychainItemFreeContent(ptr, outData);
-}
-
-void fooOnlyFree() {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *outData = &length;
-  SecKeychainItemFreeContent(ptr, outData);// expected-warning{{Trying to free data which has not been allocated}}
-}
-
-// Do not warn if undefined value is passed to a function.
-void fooOnlyFreeUndef() {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *outData;
-  SecKeychainItemFreeContent(ptr, outData);
-}// no-warning
-
-// Do not warn if the address is a parameter in the enclosing function.
-void fooOnlyFreeParam(void *attrList, void* X) {
-    SecKeychainItemFreeContent(attrList, X); 
-}// no-warning
-
-// If we are returning the value, do not report.
-void* returnContent() {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *outData;
-  st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
-  return outData;
-} // no-warning
-
-// Password was passed in as an argument and does not have to be deleted.
-OSStatus getPasswordAndItem(void** password, UInt32* passwordLength) {
-  OSStatus err;
-  SecKeychainItemRef item;
-  err = SecKeychainFindGenericPassword(0, 3, "xx", 3, "xx",
-                                       passwordLength, password, &item);
-  return err;
-} // no-warning
-
-// Make sure we do not report an error if we call free only if password != 0.
-// Also, do not report double allocation if first allocation returned an error.
-OSStatus testSecKeychainFindGenericPassword(UInt32* passwordLength,
-                        CFTypeRef keychainOrArray, SecProtocolType protocol, 
-                        SecAuthenticationType authenticationType) {
-  OSStatus err;
-  SecKeychainItemRef item;
-  void *password;
-  err = SecKeychainFindGenericPassword(0, 3, "xx", 3, "xx",
-                                       passwordLength, &password, &item);
-  if( err == GenericError ) {
-    err = SecKeychainFindInternetPassword(keychainOrArray, 
-                                  16, "server", 16, "domain", 16, "account",
-                                  16, "path", 222, protocol, authenticationType,
-                                  passwordLength, &(password), 0);
-  }
-
-  if (err == noErr && password) {
-    SecKeychainItemFreeContent(0, password);
-  }
-  return err;
-}
-
-int apiMismatch(SecKeychainItemRef itemRef, 
-         SecKeychainAttributeInfo *info,
-         SecItemClass *itemClass) {
-  OSStatus st = 0;
-  SecKeychainAttributeList *attrList;
-  UInt32 length;
-  void *outData;
-  
-  st = SecKeychainItemCopyAttributesAndData(itemRef, info, itemClass, 
-                                            &attrList, &length, &outData); 
-  if (st == noErr)
-    SecKeychainItemFreeContent(attrList, outData); // expected-warning{{Deallocator doesn't match the allocator}}
-  return 0;
-}
-
-int ErrorCodesFromDifferentAPISDoNotInterfere(SecKeychainItemRef itemRef, 
-                                              SecKeychainAttributeInfo *info,
-                                              SecItemClass *itemClass) {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *outData;
-  OSStatus st2 = 0;
-  SecKeychainAttributeList *attrList;
-  UInt32 length2;
-  void *outData2;
-
-  st2 = SecKeychainItemCopyAttributesAndData(itemRef, info, itemClass, 
-                                             &attrList, &length2, &outData2);
-  st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);  
-  if (st == noErr) {
-    SecKeychainItemFreeContent(ptr, outData);
-    if (st2 == noErr) {
-      SecKeychainItemFreeAttributesAndData(attrList, outData2);
-    }
-  } 
-  return 0; // expected-warning{{Allocated data is not released: missing a call to 'SecKeychainItemFreeAttributesAndData'}}
-}
-
-int foo(CFTypeRef keychainOrArray, SecProtocolType protocol, 
-        SecAuthenticationType authenticationType, SecKeychainItemRef *itemRef) {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-
-  UInt32 length;
-  void *outData[5];
-
-  st = SecKeychainFindInternetPassword(keychainOrArray, 
-                                       16, "server", 16, "domain", 16, "account",
-                                       16, "path", 222, protocol, authenticationType,
-                                       &length, &(outData[3]), itemRef);
-  if (length == 5) {
-    if (st == noErr)
-      SecKeychainItemFreeContent(ptr, outData[3]);
-  }
-  if (length) { // expected-warning{{Allocated data is not released: missing a call to 'SecKeychainItemFreeContent'}}
-    length++;
-  }
-  return 0;
-}// no-warning
-
-void free(void *ptr);
-void deallocateWithFree() {
-    unsigned int *ptr = 0;
-    OSStatus st = 0;
-    UInt32 length;
-    void *outData;
-    st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
-    if (st == noErr)
-      free(outData); // expected-warning{{Deallocator doesn't match the allocator: 'SecKeychainItemFreeContent' should be used}}
-}
-
-// Typesdefs for CFStringCreateWithBytesNoCopy.
-typedef char uint8_t;
-typedef signed long CFIndex;
-typedef UInt32 CFStringEncoding;
-typedef unsigned Boolean;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern const CFAllocatorRef kCFAllocatorSystemDefault;
-extern const CFAllocatorRef kCFAllocatorMalloc;
-extern const CFAllocatorRef kCFAllocatorMallocZone;
-extern const CFAllocatorRef kCFAllocatorNull;
-extern const CFAllocatorRef kCFAllocatorUseContext;
-CFStringRef CFStringCreateWithBytesNoCopy(CFAllocatorRef alloc, const uint8_t *bytes, CFIndex numBytes, CFStringEncoding encoding, Boolean externalFormat, CFAllocatorRef contentsDeallocator);
-extern void CFRelease(CFStringRef cf);
-
-void DellocWithCFStringCreate1(CFAllocatorRef alloc) {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *bytes;
-  char * x;
-  st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
-  if (st == noErr) {
-    CFStringRef userStr = CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, kCFAllocatorDefault); // expected-warning{{Deallocator doesn't match the allocator:}} 
-    CFRelease(userStr);
-  }
-}
-
-void DellocWithCFStringCreate2(CFAllocatorRef alloc) {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *bytes;
-  char * x;
-  st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
-  if (st == noErr) {
-    CFStringRef userStr = CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, kCFAllocatorNull); // expected-warning{{Allocated data is not released}}
-    CFRelease(userStr); 
-  }
-}
-
-void DellocWithCFStringCreate3(CFAllocatorRef alloc) {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *bytes;
-  char * x;
-  st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
-  if (st == noErr) {
-    CFStringRef userStr = CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, kCFAllocatorUseContext);
-    CFRelease(userStr);
-  }
-}
-
-void DellocWithCFStringCreate4(CFAllocatorRef alloc) {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *bytes;
-  char * x;
-  st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
-  if (st == noErr) {
-    CFStringRef userStr = CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, 0); // expected-warning{{Deallocator doesn't match the allocator:}} 
-    CFRelease(userStr);
-  }
-}
-
-static CFAllocatorRef gKeychainDeallocator = 0;
-
-static CFAllocatorRef GetKeychainDeallocator() {  
-  return gKeychainDeallocator;
-}
-
-CFStringRef DellocWithCFStringCreate5(CFAllocatorRef alloc) {
-  unsigned int *ptr = 0;
-  OSStatus st = 0;
-  UInt32 length;
-  void *bytes;
-  char * x;
-  st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &bytes);
-  if (st == noErr) {
-    return CFStringCreateWithBytesNoCopy(alloc, bytes, length, 5, 0, GetKeychainDeallocator()); // no-warning
-  }
-  return 0;
-}
-
-void radar10508828() {
-  UInt32 pwdLen = 0;
-  void*  pwdBytes = 0;
-  OSStatus rc = SecKeychainFindGenericPassword(0, 3, "foo", 3, "bar", &pwdLen, &pwdBytes, 0);
-#pragma unused(rc)
-  if (pwdBytes)
-    SecKeychainItemFreeContent(0, pwdBytes);
-}
-
-void radar10508828_2() {
-  UInt32 pwdLen = 0;
-  void*  pwdBytes = 0;
-  OSStatus rc = SecKeychainFindGenericPassword(0, 3, "foo", 3, "bar", &pwdLen, &pwdBytes, 0);
-  SecKeychainItemFreeContent(0, pwdBytes); // expected-warning {{Only call free if a valid (non-NULL) buffer was returned}}
-}
-
-//Example from bug 10797.
-__inline__ static
-const char *__WBASLLevelString(int level) {
-  return "foo";
-}
-
-static int *bug10798(int *p, int columns, int prevRow) {
-  int *row = 0;
-  row = p + prevRow * columns;
-  prevRow += 2;
-  do {
-    ++prevRow;
-    row+=columns;
-  } while(10 >= row[1]);
-  return row;
-}
-
-// Test inter-procedural behaviour.
-
-void my_FreeParam(void *attrList, void* X) {
-    SecKeychainItemFreeContent(attrList, X); 
-}
-
-void *my_AllocateReturn(OSStatus *st) {
-  unsigned int *ptr = 0;
-  UInt32 length;
-  void *outData;
-  *st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
-  return outData;
-}
-
-OSStatus my_Allocate_Param(void** password, UInt32* passwordLength) {
-  OSStatus err;
-  SecKeychainItemRef item;
-  err = SecKeychainFindGenericPassword(0, 3, "xx", 3, "xx",
-                                       passwordLength, password, &item);
-  return err;
-}
-
-void allocAndFree1() {
-    unsigned int *ptr = 0;
-    OSStatus st = 0;
-    UInt32 length;
-    void *outData;
-    st = SecKeychainItemCopyContent(2, ptr, ptr, &length, &outData);
-    if (st == noErr)
-      my_FreeParam(ptr, outData);
-}
-
-void consumeChar(char);
-
-void allocNoFree2(int x) {
-    OSStatus st = 0;
-    void *outData = my_AllocateReturn(&st); 
-    if (x) {
-      consumeChar(*(char*)outData); // expected-warning{{Allocated data is not released:}}
-      return;
-    } else {
-      consumeChar(*(char*)outData);
-    }
-    return;
-}
-
-void allocAndFree2(void *attrList) {
-    OSStatus st = 0;
-    void *outData = my_AllocateReturn(&st);
-    if (st == noErr)
-      my_FreeParam(attrList, outData);
-}
-
-void allocNoFree3() {
-    UInt32 length = 32;
-    void *outData;    
-    void *outData2;
-    OSStatus st = my_Allocate_Param(&outData, &length); // expected-warning{{Allocated data is not released}}
-    st = my_Allocate_Param(&outData2, &length); // expected-warning{{Allocated data is not released}}
-}
-
-void allocAndFree3(void *attrList) {
-    UInt32 length = 32;
-    void *outData;
-    OSStatus st = my_Allocate_Param(&outData, &length); 
-    if (st == noErr)
-      SecKeychainItemFreeContent(attrList, outData);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/lambdas.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/lambdas.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/lambdas.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -analyze -analyzer-checker=debug.DumpCFG %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-struct X { X(const X&); };
-void f(X x) { (void) [x]{}; }
-
-// CHECK: [B2 (ENTRY)]
-// CHECK:   Succs (1): B1
-// CHECK: [B1]
-// CHECK:   1: x
-// CHECK:   2: [B1.1] (ImplicitCastExpr, NoOp, const struct X)
-// CHECK:   3: [B1.2] (CXXConstructExpr, struct X)
-// CHECK:   4: [=x]     {
-// CHECK:    }
-// CHECK:   5: (void)[B1.4] (CStyleCastExpr, ToVoid, void)
-// CHECK:   Preds (1): B2
-// CHECK:   Succs (1): B0
-// CHECK: [B0 (EXIT)]
-// CHECK:   Preds (1): B1
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/logical-ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/logical-ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/logical-ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-void testAnd(int i, int *p) {
-  int *nullP = 0;
-  int *knownP = &i;
-  clang_analyzer_eval((knownP && knownP) == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval((knownP && nullP) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((knownP && p) == 1); // expected-warning{{UNKNOWN}}
-}
-
-void testOr(int i, int *p) {
-  int *nullP = 0;
-  int *knownP = &i;
-  clang_analyzer_eval((nullP || knownP) == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval((nullP || nullP) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((nullP || p) == 1); // expected-warning{{UNKNOWN}}
-}
-
-
-// PR13461
-int testTypeIsInt(int i, void *p) {
-  if (i | (p && p))
-    return 1;
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/lvalue.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/lvalue.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/lvalue.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-int f1() {
-  int x = 0, y = 1;
-  return x += y; // Should bind a location to 'x += y'. No crash.
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc-annotations.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc-annotations.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc-annotations.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,269 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.deadcode.UnreachableCode,alpha.core.CastSize,alpha.unix.MallocWithAnnotations -analyzer-store=region -verify %s
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-void __attribute((ownership_returns(malloc))) *my_malloc(size_t);
-void __attribute((ownership_takes(malloc, 1))) my_free(void *);
-void my_freeBoth(void *, void *)
-       __attribute((ownership_holds(malloc, 1, 2)));
-void __attribute((ownership_returns(malloc, 1))) *my_malloc2(size_t);
-void __attribute((ownership_holds(malloc, 1))) my_hold(void *);
-
-// Duplicate attributes are silly, but not an error.
-// Duplicate attribute has no extra effect.
-// If two are of different kinds, that is an error and reported as such.
-void __attribute((ownership_holds(malloc, 1)))
-__attribute((ownership_holds(malloc, 1)))
-__attribute((ownership_holds(malloc, 3))) my_hold2(void *, void *, void *);
-void *my_malloc3(size_t);
-void *myglobalpointer;
-struct stuff {
-  void *somefield;
-};
-struct stuff myglobalstuff;
-
-void f1() {
-  int *p = malloc(12);
-  return; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-void f2() {
-  int *p = malloc(12);
-  free(p);
-  free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void f2_realloc_0() {
-  int *p = malloc(12);
-  realloc(p,0);
-  realloc(p,0); // expected-warning{{Attempt to free released memory}}
-}
-
-void f2_realloc_1() {
-  int *p = malloc(12);
-  int *q = realloc(p,0); // no-warning
-}
-
-// ownership attributes tests
-void naf1() {
-  int *p = my_malloc3(12);
-  return; // no-warning
-}
-
-void n2af1() {
-  int *p = my_malloc2(12);
-  return; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-void af1() {
-  int *p = my_malloc(12);
-  return; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-void af1_b() {
-  int *p = my_malloc(12);
-} // expected-warning{{Potential leak of memory pointed to by}}
-
-void af1_c() {
-  myglobalpointer = my_malloc(12); // no-warning
-}
-
-void af1_d() {
-  struct stuff mystuff;
-  mystuff.somefield = my_malloc(12);
-} // expected-warning{{Potential leak of memory pointed to by}}
-
-// Test that we can pass out allocated memory via pointer-to-pointer.
-void af1_e(void **pp) {
-  *pp = my_malloc(42); // no-warning
-}
-
-void af1_f(struct stuff *somestuff) {
-  somestuff->somefield = my_malloc(12); // no-warning
-}
-
-// Allocating memory for a field via multiple indirections to our arguments is OK.
-void af1_g(struct stuff **pps) {
-  *pps = my_malloc(sizeof(struct stuff)); // no-warning
-  (*pps)->somefield = my_malloc(42); // no-warning
-}
-
-void af2() {
-  int *p = my_malloc(12);
-  my_free(p);
-  free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void af2b() {
-  int *p = my_malloc(12);
-  free(p);
-  my_free(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void af2c() {
-  int *p = my_malloc(12);
-  free(p);
-  my_hold(p); // expected-warning{{Attempt to free released memory}}
-}
-
-void af2d() {
-  int *p = my_malloc(12);
-  free(p);
-  my_hold2(0, 0, p); // expected-warning{{Attempt to free released memory}}
-}
-
-// No leak if malloc returns null.
-void af2e() {
-  int *p = my_malloc(12);
-  if (!p)
-    return; // no-warning
-  free(p); // no-warning
-}
-
-// This case inflicts a possible double-free.
-void af3() {
-  int *p = my_malloc(12);
-  my_hold(p);
-  free(p); // expected-warning{{Attempt to free non-owned memory}}
-}
-
-int * af4() {
-  int *p = my_malloc(12);
-  my_free(p);
-  return p; // expected-warning{{Use of memory after it is freed}}
-}
-
-// This case is (possibly) ok, be conservative
-int * af5() {
-  int *p = my_malloc(12);
-  my_hold(p);
-  return p; // no-warning
-}
-
-
-
-// This case tests that storing malloc'ed memory to a static variable which is
-// then returned is not leaked.  In the absence of known contracts for functions
-// or inter-procedural analysis, this is a conservative answer.
-int *f3() {
-  static int *p = 0;
-  p = malloc(12);
-  return p; // no-warning
-}
-
-// This case tests that storing malloc'ed memory to a static global variable
-// which is then returned is not leaked.  In the absence of known contracts for
-// functions or inter-procedural analysis, this is a conservative answer.
-static int *p_f4 = 0;
-int *f4() {
-  p_f4 = malloc(12);
-  return p_f4; // no-warning
-}
-
-int *f5() {
-  int *q = malloc(12);
-  q = realloc(q, 20);
-  return q; // no-warning
-}
-
-void f6() {
-  int *p = malloc(12);
-  if (!p)
-    return; // no-warning
-  else
-    free(p);
-}
-
-void f6_realloc() {
-  int *p = malloc(12);
-  if (!p)
-    return; // no-warning
-  else
-    realloc(p,0);
-}
-
-
-char *doit2();
-void pr6069() {
-  char *buf = doit2();
-  free(buf);
-}
-
-void pr6293() {
-  free(0);
-}
-
-void f7() {
-  char *x = (char*) malloc(4);
-  free(x);
-  x[0] = 'a'; // expected-warning{{Use of memory after it is freed}}
-}
-
-void f7_realloc() {
-  char *x = (char*) malloc(4);
-  realloc(x,0);
-  x[0] = 'a'; // expected-warning{{Use of memory after it is freed}}
-}
-
-void PR6123() {
-  int *x = malloc(11); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
-}
-
-void PR7217() {
-  int *buf = malloc(2); // expected-warning{{Cast a region whose size is not a multiple of the destination type size}}
-  buf[1] = 'c'; // not crash
-}
-
-void mallocCastToVoid() {
-  void *p = malloc(2);
-  const void *cp = p; // not crash
-  free(p);
-}
-
-void mallocCastToFP() {
-  void *p = malloc(2);
-  void (*fp)() = p; // not crash
-  free(p);
-}
-
-// This tests that malloc() buffers are undefined by default
-char mallocGarbage () {
-  char *buf = malloc(2);
-  char result = buf[1]; // expected-warning{{undefined}}
-  free(buf);
-  return result;
-}
-
-// This tests that calloc() buffers need to be freed
-void callocNoFree () {
-  char *buf = calloc(2,2);
-  return; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-// These test that calloc() buffers are zeroed by default
-char callocZeroesGood () {
-  char *buf = calloc(2,2);
-  char result = buf[3]; // no-warning
-  if (buf[1] == 0) {
-    free(buf);
-  }
-  return result; // no-warning
-}
-
-char callocZeroesBad () {
-  char *buf = calloc(2,2);
-  char result = buf[3]; // no-warning
-  if (buf[1] != 0) {
-    free(buf); // expected-warning{{never executed}}
-  }
-  return result; // expected-warning{{Potential leak of memory pointed to by}}
-}
-
-void testMultipleFreeAnnotations() {
-  int *p = malloc(12);
-  int *q = malloc(12);
-  my_freeBoth(p, q);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc-interprocedural.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc-interprocedural.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc-interprocedural.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=unix.Malloc -analyzer-inline-max-stack-depth=5 -verify %s
-
-#include "Inputs/system-header-simulator.h"
-
-void *malloc(size_t);
-void *valloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-void *reallocf(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-
-void exit(int) __attribute__ ((__noreturn__));
-void *memcpy(void * restrict s1, const void * restrict s2, size_t n);
-size_t strlen(const char *);
-
-static void my_malloc1(void **d, size_t size) {
-  *d = malloc(size);
-}
-
-static void *my_malloc2(int elevel, size_t size) {
-  void     *data;
-  data = malloc(size);
-  if (data == 0)
-    exit(0);
-  return data;
-}
-
-static void my_free1(void *p) {
-  free(p);
-}
-
-static void test1() {
-  void *data = 0;
-  my_malloc1(&data, 4);
-} // expected-warning {{Potential leak of memory pointed to by 'data'}}
-
-static void test11() {
-  void *data = 0;
-  my_malloc1(&data, 4);
-  my_free1(data);
-}
-
-static void testUniqueingByallocationSiteInTopLevelFunction() {
-  void *data = my_malloc2(1, 4);
-  data = 0;
-  int x = 5;// expected-warning {{Potential leak of memory pointed to by 'data'}}
-  data = my_malloc2(1, 4);
-} // expected-warning {{Potential leak of memory pointed to by 'data'}}
-
-static void test3() {
-  void *data = my_malloc2(1, 4);
-  free(data);
-  data = my_malloc2(1, 4);
-  free(data);
-}
-
-int test4() {
-  int *data = (int*)my_malloc2(1, 4);
-  my_free1(data);
-  data = (int *)my_malloc2(1, 4);
-  my_free1(data);
-  return *data; // expected-warning {{Use of memory after it is freed}}
-}
-
-void test6() {
-  int *data = (int *)my_malloc2(1, 4);
-  my_free1((int*)data);
-  my_free1((int*)data); // expected-warning{{Use of memory after it is freed}}
-}
-
-// TODO: We should warn here.
-void test5() {
-  int *data;
-  my_free1((int*)data);
-}
-
-static char *reshape(char *in) {
-    return 0;
-}
-
-void testThatRemoveDeadBindingsRunBeforeEachCall() {
-    char *v = malloc(12);
-    v = reshape(v);
-    v = reshape(v);// expected-warning {{Potential leak of memory pointed to by 'v'}}
-}
-
-// Test that we keep processing after 'return;'
-void fooWithEmptyReturn(int x) {
-  if (x)
-    return;
-  x++;
-  return;
-}
-
-int uafAndCallsFooWithEmptyReturn() {
-  int *x = (int*)malloc(12);
-  free(x);
-  fooWithEmptyReturn(12);
-  return *x; // expected-warning {{Use of memory after it is freed}}
-}
-
-
-// If we inline any of the malloc-family functions, the checker shouldn't also
-// try to do additional modeling. <rdar://problem/12317671>
-char *strndup(const char *str, size_t n) {
-  if (!str)
-    return 0;
-  
-  // DO NOT FIX. This is to test that we are actually using the inlined
-  // behavior!
-  if (n < 5)
-    return 0;
-  
-  size_t length = strlen(str);
-  if (length < n)
-    n = length;
-  
-  char *result = malloc(n + 1);
-  memcpy(result, str, n);
-  result[n] = '\0';
-  return result;
-}
-
-void useStrndup(size_t n) {
-  if (n == 0) {
-    (void)strndup(0, 20); // no-warning
-    return;
-  } else if (n < 5) {
-    (void)strndup("hi there", n); // no-warning
-    return;
-  } else {
-    (void)strndup("hi there", n);
-    return; // expected-warning{{leak}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc-overflow.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc-overflow.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc-overflow.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,113 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.security.MallocOverflow -verify %s
-
-#define NULL ((void *) 0)
-typedef __typeof__(sizeof(int)) size_t;
-extern void * malloc(size_t);
-
-void * f1(int n)
-{
-  return malloc(n * sizeof(int));  // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-void * f2(int n)
-{
-  return malloc(sizeof(int) * n); // // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-void * f3()
-{
-  return malloc(4 * sizeof(int));  // no-warning
-}
-
-struct s4
-{
-  int n;
-};
-
-void * f4(struct s4 *s)
-{
-  return malloc(s->n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-void * f5(struct s4 *s)
-{
-  struct s4 s2 = *s;
-  return malloc(s2.n * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-void * f6(int n)
-{
-  return malloc((n + 1) * sizeof(int)); // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}
-
-extern void * malloc (size_t);
-
-void * f7(int n)
-{
-  if (n > 10)
-    return NULL;
-  return malloc(n * sizeof(int));  // no-warning
-}
-
-void * f8(int n)
-{
-  if (n < 10)
-    return malloc(n * sizeof(int));  // no-warning
-  else
-    return NULL;
-}
-
-void * f9(int n)
-{
-  int * x = malloc(n * sizeof(int));  // expected-warning {{the computation of the size of the memory allocation may overflow}}
-  for (int i = 0; i < n; i++)
-    x[i] = i;
-  return x;
-}
-
-void * f10(int n)
-{
-  int * x = malloc(n * sizeof(int));  // expected-warning {{the computation of the size of the memory allocation may overflow}}
-  int i = 0;
-  while (i < n)
-    x[i++] = 0;
-  return x;
-}
-
-void * f11(int n)
-{
-  int * x = malloc(n * sizeof(int));  // expected-warning {{the computation of the size of the memory allocation may overflow}}
-  int i = 0;
-  do {
-    x[i++] = 0;
-  } while (i < n);
-  return x;
-}
-
-void * f12(int n)
-{
-  n = (n > 10 ? 10 : n);
-  int * x = malloc(n * sizeof(int));  // no-warning
-  for (int i = 0; i < n; i++)
-    x[i] = i;
-  return x;
-}
-
-struct s13
-{
-  int n;
-};
-
-void * f13(struct s13 *s)
-{
-  if (s->n > 10)
-    return NULL;
-  return malloc(s->n * sizeof(int));  // no warning
-}
-
-void * f14(int n)
-{
-  if (n < 0)
-    return NULL;
-  return malloc(n * sizeof(int));  // expected-warning {{the computation of the size of the memory allocation may overflow}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc-overflow.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc-overflow.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc-overflow.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.security.MallocOverflow -verify %s
-// expected-no-diagnostics
-
-class A {
-public:
-  A& operator<<(const A &a);
-};
-
-void f() {
-  A a = A(), b = A();
-  a << b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc-plist.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc-plist.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc-plist.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5036 +0,0 @@
-// RUN: rm -f %t
-// RUN: %clang_cc1 -analyze -analyzer-checker=unix.Malloc -analyzer-output=plist -o %t %s
-// RUN: FileCheck -input-file %t %s
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-
-void diagnosticTest(int in) {
-    if (in > 5) {
-        int *p = malloc(12);
-        (*p)++;
-    }
-    in++; // expected-warning {{leak}}
-}
-
-void myArrayAllocation() {
-    int **A;
-    A = malloc(2*sizeof(int*));
-    A[0] = 0;// expected-warning {{leak}}
-}
-
-void reallocDiagnostics() {
-    char * buf = malloc(100);
-    char * tmp;
-    tmp = (char*)realloc(buf, 0x1000000);
-    if (!tmp) {
-        return;// expected-warning {{leak}}
-    }
-    buf = tmp;
-    free(buf);
-}
-
-void *wrapper() {
-  void *x = malloc(100);
-  // This is intentionally done to test diagnostic emission.
-  if (x)
-    return x;
-  return 0;
-}
-
-void test_wrapper() {
-  void *buf = wrapper();
-  (void) buf;
-}
-
-// Test what happens when the same call frees and allocated memory.
-// Also tests the stack hint for parameters, when they are passed directly or via pointer.
-void my_free(void *x) {
-    free(x);
-}
-void my_malloc_and_free(void **x) {
-    *x = malloc(100);
-    if (*x)
-      my_free(*x);
-    return;
-}
-void *test_double_action_call() {
-    void *buf;
-    my_malloc_and_free(&buf);
-    return buf;
-}
-
-// Test stack hint for 'reallocation failed'.
-char *my_realloc(char *buf) {
-    char *tmp;
-    tmp = (char*)realloc(buf, 0x1000000);
-    if (!tmp) {
-        return tmp;
-    }
-    return tmp;
-}
-void reallocIntra() {
-    char *buf = (char *)malloc(100);
-    buf = my_realloc(buf);
-    free(buf);
-}
-
-// Test stack hint when returning a result.
-static char *malloc_wrapper_ret() {
-    return (char*)malloc(12);
-}
-void use_ret() {
-    char *v;
-    v = malloc_wrapper_ret();
-}
-
-// Test that we refer to the last symbol used in the leak diagnostic.
-void LeakedSymbol(int in) {
-    int *m = 0;
-    int *p;
-    p = (int*)malloc(12);
-    (*p)++;
-    m = p;
-    p = 0;
-    (*m)++;
-    in++;
-}
-
-// Tests that exercise running remove dead bindings at Call exit.
-static void function_with_leak1() {
-    char *x = (char*)malloc(12);
-}
-void use_function_with_leak1() {
-    function_with_leak1();
-    int y = 0;
-}
-
-static void function_with_leak2() {
-    char *x = (char*)malloc(12);
-    int m = 0;
-}
-void use_function_with_leak2() {
-    function_with_leak2();
-}
-
-static void function_with_leak3(int y) {
-    char *x = (char*)malloc(12);
-    if (y)
-        y++;
-}
-void use_function_with_leak3(int y) {
-    function_with_leak3(y);
-}
-
-static void function_with_leak4(int y) {
-    char *x = (char*)malloc(12);
-    if (y)
-        y++;
-    else
-        y--;
-}
-void use_function_with_leak4(int y) {
-    function_with_leak4(y);
-}
-
-int anotherFunction5() {
-    return 5;
-}
-static int function_with_leak5() {
-    char *x = (char*)malloc(12);
-    return anotherFunction5();
-}
-void use_function_with_leak5() {
-    function_with_leak5();
-}
-
-void anotherFunction6(int m) {
-    m++;
-}
-static void function_with_leak6() {
-    char *x = (char*)malloc(12);
-    anotherFunction6(3);
-}
-void use_function_with_leak6() {
-    function_with_leak6();
-}
-
-static void empty_function(){
-}
-void use_empty_function() {
-    empty_function();
-}
-static char *function_with_leak7() {
-    return (char*)malloc(12);
-}
-void use_function_with_leak7() {
-    function_with_leak7();
-}
-
-// Test that we do not print the name of a variable not visible from where
-// the issue is reported.
-int *my_malloc() {
-  int *p = malloc(12);
-  return p;
-}
-void testOnlyRefferToVisibleVariables() {
-  my_malloc();
-} // expected-warning {{Potential leak of memory}}
-
-struct PointerWrapper{
-  int*p;
-};
-int *my_malloc_into_struct() {
-  struct PointerWrapper w;
-  w.p = malloc(12);
-  return w.p;
-}
-void testMyMalloc() {
-  my_malloc_into_struct(); // expected-warning {{Potential leak of memory}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>11</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'in' is > 5</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'in' is > 5</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>12</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>12</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>12</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>15</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>15</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'p'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>diagnosticTest</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>15</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>20</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>20</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>20</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>20</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>22</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>22</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>22</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'A'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'A'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'A'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>myArrayAllocation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>22</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>25</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>27</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>27</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>27</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Attempt to reallocate memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Attempt to reallocate memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>27</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>28</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>28</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>28</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'tmp' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'tmp' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>28</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>28</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>28</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reallocation failed</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reallocation failed</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>29</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>reallocDiagnostics</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>29</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>44</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>35</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_wrapper'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_wrapper'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>35</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>35</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>36</integer>
-// CHECK-NEXT:       <key>col</key><integer>13</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>36</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>36</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>38</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>39</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>44</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>46</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>46</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>61</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>61</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>61</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>61</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>61</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'my_malloc_and_free'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'my_malloc_and_free'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>53</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_double_action_call'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_double_action_call'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>54</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>54</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>54</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'my_free'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'my_free'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>50</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'my_malloc_and_free'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'my_malloc_and_free'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>51</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning; memory was released via 1st parameter</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning; memory was released via 1st parameter</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>61</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>61</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>61</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning; memory was released via 1st parameter</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning; memory was released via 1st parameter</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>61</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>61</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>62</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Use of memory after it is freed</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Use of memory after it is freed</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Use of memory after it is freed</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-free</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_double_action_call</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>62</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>75</integer>
-// CHECK-NEXT:       <key>col</key><integer>25</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>75</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>75</integer>
-// CHECK-NEXT:          <key>col</key><integer>35</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>76</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'my_realloc'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'my_realloc'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>66</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'reallocIntra'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'reallocIntra'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>68</integer>
-// CHECK-NEXT:       <key>col</key><integer>18</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>68</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>68</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Attempt to reallocate memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Attempt to reallocate memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>68</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>69</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>69</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>69</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'tmp' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'tmp' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>69</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>69</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>69</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reallocation failed</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reallocation failed</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>69</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>76</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reallocation of 1st parameter failed</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reallocation of 1st parameter failed</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>77</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'buf'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>reallocIntra</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>77</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>85</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>85</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>86</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'malloc_wrapper_ret'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'malloc_wrapper_ret'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>81</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_ret'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_ret'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>81</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>81</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>82</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>82</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>82</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>86</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>87</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>87</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>87</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'v'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'v'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'v'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>use_ret</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>87</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>91</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>91</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>93</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>93</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>93</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>93</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>93</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>93</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>93</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>93</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>93</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>93</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>93</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>98</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>98</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>98</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'm'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'm'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'm'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>LeakedSymbol</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>98</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>106</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>106</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>106</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak1'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak1'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>102</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak1'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak1'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>102</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>102</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>103</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>104</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>104</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>104</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>function_with_leak1</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>104</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>115</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>115</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>115</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak2'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak2'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>110</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak2'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak2'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>110</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>110</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>111</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>111</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>111</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>112</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>function_with_leak2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>112</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>124</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>124</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>124</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak3'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak3'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>118</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak3'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak3'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>118</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>118</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>119</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>119</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>119</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>120</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'y' is not equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'y' is not equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>121</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>121</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>121</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>function_with_leak3</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>121</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>135</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak4'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak4'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>127</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak4'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak4'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>128</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>128</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>128</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>129</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>129</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>129</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'y' is 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'y' is 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>132</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>132</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>132</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>function_with_leak4</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>132</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>146</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>146</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>146</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak5'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak5'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>141</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak5'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak5'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>142</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>142</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>142</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>143</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>function_with_leak5</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>143</integer>
-// CHECK-NEXT:    <key>col</key><integer>12</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>157</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>157</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>157</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak6'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak6'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>152</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak6'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak6'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>153</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>153</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>153</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>154</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of memory pointed to by 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>function_with_leak6</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>154</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>169</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>169</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>169</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak7'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'function_with_leak7'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>165</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak7'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'use_function_with_leak7'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>165</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>165</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>166</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>166</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>166</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>166</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>169</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>169</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>169</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>169</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>169</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>170</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>170</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>170</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential memory leak</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential memory leak</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential memory leak</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>use_function_with_leak7</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>170</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>179</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>179</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>179</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'my_malloc'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'my_malloc'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>174</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testOnlyRefferToVisibleVariables'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testOnlyRefferToVisibleVariables'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>174</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>174</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>175</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>175</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>175</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>179</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>179</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>179</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>179</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>179</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>180</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential memory leak</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential memory leak</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential memory leak</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testOnlyRefferToVisibleVariables</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>180</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>191</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>191</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>191</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'my_malloc_into_struct'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'my_malloc_into_struct'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>185</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'testMyMalloc'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'testMyMalloc'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>185</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>185</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>186</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>186</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>186</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>186</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>187</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>187</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>187</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>187</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>187</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>187</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>187</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>187</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>187</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Memory is allocated</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>191</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>191</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>191</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returned allocated memory</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>192</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Potential memory leak</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Potential memory leak</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential memory leak</string>
-// CHECK-NEXT:    <key>category</key><string>Memory Error</string>
-// CHECK-NEXT:    <key>type</key><string>Memory leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testMyMalloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>192</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc-sizeof.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc-sizeof.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc-sizeof.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=unix.MallocSizeof -verify %s
-
-#include <stddef.h>
-
-void *malloc(size_t size);
-void *calloc(size_t nmemb, size_t size);
-void *realloc(void *ptr, size_t size);
-void free(void *ptr);
-
-struct A {};
-struct B {};
-
-void foo(unsigned int unsignedInt, unsigned int readSize) {
-  int *ip1 = malloc(sizeof(1));
-  int *ip2 = malloc(4 * sizeof(int));
-
-  long *lp1 = malloc(sizeof(short)); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'long', which is incompatible with sizeof operand type 'short'}}
-  long *lp2 = malloc(5 * sizeof(double)); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'long', which is incompatible with sizeof operand type 'double'}}
-  char *cp3 = malloc(5 * sizeof(char) + 2); // no warning
-  unsigned char *buf = malloc(readSize + sizeof(unsignedInt)); // no warning
-
-  struct A *ap1 = calloc(1, sizeof(struct A));
-  struct A *ap2 = calloc(2, sizeof(*ap1));
-  struct A *ap3 = calloc(2, sizeof(ap1)); // expected-warning {{Result of 'calloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'struct A *'}}
-  struct A *ap4 = calloc(3, sizeof(struct A*)); // expected-warning {{Result of 'calloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'struct A *'}}
-  struct A *ap5 = calloc(4, sizeof(struct B)); // expected-warning {{Result of 'calloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'struct B'}}
-  struct A *ap6 = realloc(ap5, sizeof(struct A));
-  struct A *ap7 = realloc(ap5, sizeof(struct B)); // expected-warning {{Result of 'realloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'struct B'}}
-}
-
-// Don't warn when the types differ only by constness.
-void ignore_const() {
-  const char **x = (const char **)malloc(1 * sizeof(char *)); // no-warning
-  const char ***y = (const char ***)malloc(1 * sizeof(char *)); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'const char **', which is incompatible with sizeof operand type 'char *'}}
-  free(x);
-}
-
-int *mallocArraySize() {
-  static const int sTable[10];
-  static const int nestedTable[10][2];
-  int *table = malloc(sizeof sTable);
-  int *table1 = malloc(sizeof nestedTable);
-  int (*table2)[2] = malloc(sizeof nestedTable);
-  int (*table3)[10][2] = malloc(sizeof nestedTable);
-  return table;
-}
-
-int *mallocWrongArraySize() {
-  static const double sTable[10];
-  int *table = malloc(sizeof sTable); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'int', which is incompatible with sizeof operand type 'const double [10]'}}
-  return table;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc.c
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.deadcode.UnreachableCode,alpha.core.CastSize,unix.Malloc -analyzer-store=region -verify %s
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-void *realloc(void *ptr, size_t size);
-void *calloc(size_t nmemb, size_t size);
-char *strdup(const char *s);
-
-void checkThatMallocCheckerIsRunning() {
-  malloc(4);
-} // expected-warning{{leak}}
-
-// Test for radar://11110132.
-struct Foo {
-    mutable void* m_data;
-    Foo(void* data) : m_data(data) {}
-};
-Foo aFunction() {
-    return malloc(10);
-}
-
-// Assume that functions which take a function pointer can free memory even if
-// they are defined in system headers and take the const pointer to the
-// allocated memory. (radar://11160612)
-// Test default parameter.
-int const_ptr_and_callback_def_param(int, const char*, int n, void(*)(void*) = free);
-void r11160612_3() {
-  char *x = (char*)malloc(12);
-  const_ptr_and_callback_def_param(0, x, 12);
-}
-
-int const_ptr_and_callback_def_param_null(int, const char*, int n, void(*)(void*) = 0);
-void r11160612_no_callback() {
-  char *x = (char*)malloc(12);
-  const_ptr_and_callback_def_param_null(0, x, 12);
-} // expected-warning{{leak}}
-
-// Test member function pointer.
-struct CanFreeMemory {
-  static void myFree(void*);
-};
-//This is handled because we look at the type of the parameter(not argument).
-void r11160612_3(CanFreeMemory* p) {
-  char *x = (char*)malloc(12);
-  const_ptr_and_callback_def_param(0, x, 12, p->myFree);
-}
-
-
-namespace PR13751 {
-  class OwningVector {
-    void **storage;
-    size_t length;
-  public:
-    OwningVector();
-    ~OwningVector();
-    void push_back(void *Item) {
-      storage[length++] = Item;
-    }
-  };
-
-  void testDestructors() {
-    OwningVector v;
-    v.push_back(malloc(4));
-    // no leak warning; freed in destructor
-  }
-}
-
-struct X { void *a; };
-
-struct X get() {
-  struct X result;
-  result.a = malloc(4);
-  return result; // no-warning
-}
-
-// Ensure that regions accessible through a LazyCompoundVal trigger region escape.
-// Malloc checker used to report leaks for the following two test cases.
-struct Property {
-  char* getterName;
-  Property(char* n)
-  : getterName(n) {}
-
-};
-void append(Property x);
-
-void appendWrapper(char *getterName) {
-  append(Property(getterName));
-}
-void foo(const char* name) {
-  char* getterName = strdup(name);
-  appendWrapper(getterName); // no-warning
-}
-
-struct NestedProperty {
-  Property prop;
-  NestedProperty(Property p)
-  : prop(p) {}
-};
-void appendNested(NestedProperty x);
-
-void appendWrapperNested(char *getterName) {
-  appendNested(NestedProperty(Property(getterName)));
-}
-void fooNested(const char* name) {
-  char* getterName = strdup(name);
-  appendWrapperNested(getterName); // no-warning
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store=region -verify -Wno-objc-root-class -fblocks %s
-#include "Inputs/system-header-simulator-objc.h"
-
- at class NSString;
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-// RDar10579586 - Test use of malloc() with Objective-C string literal as a
-// test condition.  Not really a malloc() issue, but this also exercises
-// the check that malloc() returns uninitialized memory.
- at interface RDar10579586
-struct rdar0579586_str {
-    char str_c;
-};
- at end
-
-void rdar10579586(char x);
-
- at implementation RDar10579586
-+ (NSString *)foobar
-{
-    struct rdar0579586_str *buffer = ((void*)0);
-    NSString *error = ((void*)0);
-
-    if ((buffer = malloc(sizeof(struct rdar0579586_str))) == ((void*)0))
-        error = @"buffer allocation failure";
-
-    if (error != ((void*)0))
-        return error;
-
-    rdar10579586(buffer->str_c); // expected-warning {{Function call argument is an uninitialized value}}
-    free(buffer);
-    return ((void*)0);
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/malloc.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/malloc.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/malloc.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,322 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store=region -verify -fblocks %s
-#import "Inputs/system-header-simulator-objc.h"
-#import "Inputs/system-header-simulator-for-malloc.h"
-
-// Done with headers. Start testing.
-void testNSDatafFreeWhenDoneNoError(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  NSData *nsdata = [NSData dataWithBytesNoCopy:data length:dataLength];
-}
-
-void testNSDataFreeWhenDoneYES(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  NSData *nsdata = [NSData dataWithBytesNoCopy:data length:dataLength freeWhenDone:1]; // no-warning
-}
-
-void testNSDataFreeWhenDoneYES2(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  NSData *nsdata = [[NSData alloc] initWithBytesNoCopy:data length:dataLength freeWhenDone:1]; // no-warning
-}
-
-void testNSDataFreeWhenDoneYES2_with_wrapper(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  Wrapper *nsdata = [[Wrapper alloc] initWithBytesNoCopy:data length:dataLength]; // no-warning
-}
-
-void testNSStringFreeWhenDoneYES3(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  NSString *nsstr = [[NSString alloc] initWithBytesNoCopy:data length:dataLength encoding:NSUTF8StringEncoding freeWhenDone:1];
-}
-
-void testNSStringFreeWhenDoneYES4(NSUInteger dataLength) {
-  unichar *data = (unichar*)malloc(42);
-  NSString *nsstr = [[NSString alloc] initWithCharactersNoCopy:data length:dataLength freeWhenDone:1];
-  free(data); //expected-warning {{Attempt to free non-owned memory}}
-}
-
-void testNSStringFreeWhenDoneYES(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  NSString *nsstr = [[NSString alloc] initWithBytesNoCopy:data length:dataLength encoding:NSUTF8StringEncoding freeWhenDone:1]; // no-warning
-}
-
-void testNSStringFreeWhenDoneYES2(NSUInteger dataLength) {
-  unichar *data = (unichar*)malloc(42);
-  NSString *nsstr = [[NSString alloc] initWithCharactersNoCopy:data length:dataLength freeWhenDone:1]; // no-warning
-}
-
-
-void testNSDataFreeWhenDoneNO(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  NSData *nsdata = [NSData dataWithBytesNoCopy:data length:dataLength freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-void testNSDataFreeWhenDoneNO2(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  NSData *nsdata = [[NSData alloc] initWithBytesNoCopy:data length:dataLength freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-
-void testNSStringFreeWhenDoneNO(NSUInteger dataLength) {
-  unsigned char *data = (unsigned char *)malloc(42);
-  NSString *nsstr = [[NSString alloc] initWithBytesNoCopy:data length:dataLength encoding:NSUTF8StringEncoding freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-void testNSStringFreeWhenDoneNO2(NSUInteger dataLength) {
-  unichar *data = (unichar*)malloc(42);
-  NSString *nsstr = [[NSString alloc] initWithCharactersNoCopy:data length:dataLength freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-void testOffsetFree() {
-  int *p = (int *)malloc(sizeof(int));
-  NSData *nsdata = [NSData dataWithBytesNoCopy:++p length:sizeof(int) freeWhenDone:1]; // expected-warning{{Argument to +dataWithBytesNoCopy:length:freeWhenDone: is offset by 4 bytes from the start of memory allocated by malloc()}}
-}
-
-void testRelinquished1() {
-  void *data = malloc(42);
-  NSData *nsdata = [NSData dataWithBytesNoCopy:data length:42 freeWhenDone:1];
-  free(data); // expected-warning {{Attempt to free non-owned memory}}
-}
-
-void testRelinquished2() {
-  void *data = malloc(42);
-  NSData *nsdata;
-  free(data);
-  [NSData dataWithBytesNoCopy:data length:42]; // expected-warning {{Use of memory after it is freed}}
-}
-
- at interface My
-+ (void)param:(void *)p;
- at end
-
-void testUseAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  [My param:p];  // expected-warning{{Use of memory after it is freed}}
-}
-
-void testNoCopy() {
-  char *p = (char *)calloc(sizeof(int), 1);
-  CustomData *w = [CustomData somethingNoCopy:p]; // no-warning
-}
-
-void testFreeWhenDone() {
-  char *p = (char *)calloc(sizeof(int), 1);
-  CustomData *w = [CustomData something:p freeWhenDone:1]; // no-warning
-}
-
-void testFreeWhenDonePositive() {
-  char *p = (char *)calloc(sizeof(int), 1);
-  CustomData *w = [CustomData something:p freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-void testFreeWhenDoneNoCopy() {
-  int *p = (int *)malloc(sizeof(int));
-  CustomData *w = [CustomData somethingNoCopy:p length:sizeof(int) freeWhenDone:1]; // no-warning
-}
-
-void testFreeWhenDoneNoCopyPositive() {
-  int *p = (int *)malloc(sizeof(int));
-  CustomData *w = [CustomData somethingNoCopy:p length:sizeof(int) freeWhenDone:0]; // expected-warning{{leak}}
-}
-
-// Test CF/NS...NoCopy. PR12100: Pointers can escape when custom deallocators are provided.
-void testNSDatafFreeWhenDone(NSUInteger dataLength) {
-  CFStringRef str;
-  char *bytes = (char*)malloc(12);
-  str = CFStringCreateWithCStringNoCopy(0, bytes, NSNEXTSTEPStringEncoding, 0); // no warning
-  CFRelease(str); // default allocator also frees bytes
-}
-
-void stringWithExternalContentsExample(void) {
-#define BufferSize 1000
-    CFMutableStringRef mutStr;
-    UniChar *myBuffer;
- 
-    myBuffer = (UniChar *)malloc(BufferSize * sizeof(UniChar));
- 
-    mutStr = CFStringCreateMutableWithExternalCharactersNoCopy(0, myBuffer, 0, BufferSize, kCFAllocatorNull); // expected-warning{{leak}}
- 
-    CFRelease(mutStr);
-    //free(myBuffer);
-}
-
-// PR12101 : pointers can escape through custom deallocators set on creation of a container.
-void TestCallbackReleasesMemory(CFDictionaryKeyCallBacks keyCallbacks) {
-  void *key = malloc(12);
-  void *val = malloc(12);
-  CFMutableDictionaryRef x = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &keyCallbacks, &kCFTypeDictionaryValueCallBacks);
-  CFDictionarySetValue(x, key, val); 
-  return;// no-warning
-}
-
-NSData *radar10976702() {
-  void *bytes = malloc(10);
-  return [NSData dataWithBytesNoCopy:bytes length:10]; // no-warning
-}
-
-void testBlocks() {
-  int *x= (int*)malloc(sizeof(int));
-  int (^myBlock)(int) = ^(int num) {
-    free(x);
-    return num;
-  };
-  myBlock(3);
-}
-
-// Test NSMapInsert. 
- at interface NSMapTable : NSObject <NSCopying, NSCoding, NSFastEnumeration>
- at end
-extern void *NSMapGet(NSMapTable *table, const void *key);
-extern void NSMapInsert(NSMapTable *table, const void *key, const void *value);
-extern void NSMapInsertKnownAbsent(NSMapTable *table, const void *key, const void *value);
-char *strdup(const char *s);
-
-NSString * radar11152419(NSString *string1, NSMapTable *map) {
-    const char *strkey = "key";
-    NSString *string = ( NSString *)NSMapGet(map, strkey);
-    if (!string) {
-        string = [string1 copy];
-        NSMapInsert(map, strdup(strkey), (void*)string); // no warning
-        NSMapInsertKnownAbsent(map, strdup(strkey), (void*)string); // no warning
-    }
-    return string;
-}
-
-// Test that we handle pointer escaping through OSAtomicEnqueue.
-typedef volatile struct {
- void *opaque1;
- long opaque2;
-} OSQueueHead;
-void OSAtomicEnqueue( OSQueueHead *__list, void *__new, size_t __offset) __attribute__((weak_import));
-static inline void radar11111210(OSQueueHead *pool) {
-    void *newItem = malloc(4);
-    OSAtomicEnqueue(pool, newItem, 4);
-}
-
-// Pointer might escape through CGDataProviderCreateWithData (radar://11187558).
-typedef struct CGDataProvider *CGDataProviderRef;
-typedef void (*CGDataProviderReleaseDataCallback)(void *info, const void *data,
-    size_t size);
-extern CGDataProviderRef CGDataProviderCreateWithData(void *info,
-    const void *data, size_t size,
-    CGDataProviderReleaseDataCallback releaseData)
-    __attribute__((visibility("default")));
-void *calloc(size_t, size_t);
-
-static void releaseDataCallback (void *info, const void *data, size_t size) {
-#pragma unused (info, size)
-  free((void*)data);
-}
-void testCGDataProviderCreateWithData() { 
-  void* b = calloc(8, 8);
-  CGDataProviderRef p = CGDataProviderCreateWithData(0, b, 8*8, releaseDataCallback);
-}
-
-// Assume that functions which take a function pointer can free memory even if
-// they are defined in system headers and take the const pointer to the
-// allocated memory. (radar://11160612)
-extern CGDataProviderRef UnknownFunWithCallback(void *info,
-    const void *data, size_t size,
-    CGDataProviderReleaseDataCallback releaseData)
-    __attribute__((visibility("default")));
-void testUnknownFunWithCallBack() { 
-  void* b = calloc(8, 8);
-  CGDataProviderRef p = UnknownFunWithCallback(0, b, 8*8, releaseDataCallback);
-}
-
-// Test blocks.
-void acceptBlockParam(void *, void (^block)(void *), unsigned);
-void testCallWithBlockCallback() {
-  void *l = malloc(12);
-  acceptBlockParam(l, ^(void *i) { free(i); }, sizeof(char *));
-}
-
-// Test blocks in system headers.
-void testCallWithBlockCallbackInSystem() {
-  void *l = malloc(12);
-  SystemHeaderFunctionWithBlockParam(l, ^(void *i) { free(i); }, sizeof(char *));
-}
-
-// Test escape into NSPointerArray. radar://11691035, PR13140
-void foo(NSPointerArray* pointerArray) {
-  
-  void* p1 = malloc (1024);
-  if (p1) {
-    [pointerArray addPointer:p1];
-  }
-
-  void* p2 = malloc (1024);
-  if (p2) {
-    [pointerArray insertPointer:p2 atIndex:1];
-  }
-
-  void* p3 = malloc (1024);
-  if (p3) {
-    [pointerArray replacePointerAtIndex:1 withPointer:p3];
-  }
-
-  // Freeing the buffer is allowed.
-  void* buffer = [pointerArray pointerAtIndex:0];
-  free(buffer);
-}
-
-void noCrashOnVariableArgumentSelector() {
-  NSMutableString *myString = [NSMutableString stringWithString:@"some text"];
-  [myString appendFormat:@"some text = %d", 3];
-}
-
-void test12365078_check() {
-  unichar *characters = (unichar*)malloc(12);
-  NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-  if (!string) free(characters); // no-warning
-}
-
-void test12365078_nocheck() {
-  unichar *characters = (unichar*)malloc(12);
-  NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-}
-
-void test12365078_false_negative() {
-  unichar *characters = (unichar*)malloc(12);
-  NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-  if (!string) {;}
-}
-
-void test12365078_no_malloc(unichar *characters) {
-  NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-  if (!string) {free(characters);}
-}
-
-NSString *test12365078_no_malloc_returnValue(unichar *characters) {
-  NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-  if (!string) {
-    return 0; // no-warning
-  }
-  return string;
-}
-
-void test12365078_nocheck_nomalloc(unichar *characters) {
-  NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-  free(characters); // expected-warning {{Attempt to free non-owned memory}}
-}
-
-void test12365078_nested(unichar *characters) {
-  NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-  if (!string) {    
-    NSString *string2 = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-    if (!string2) {    
-      NSString *string3 = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-      if (!string3) {    
-        NSString *string4 = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-        if (!string4)
-          free(characters);
-      }
-    }
-  }
-}
-
-void test12365078_check_positive() {
-  unichar *characters = (unichar*)malloc(12);
-  NSString *string = [[NSString alloc] initWithCharactersNoCopy:characters length:12 freeWhenDone:1];
-  if (string) free(characters); // expected-warning{{Attempt to free non-owned memory}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/member-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/member-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/member-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection %s -verify
-
-void clang_analyzer_eval(int);
-
-namespace EnumsViaMemberExpr {
-  struct Foo {
-    enum E {
-      Bar = 1
-    };
-  };
-
-  void testEnumVal(Foo Baz) {
-    clang_analyzer_eval(Baz.Bar == Foo::Bar); // expected-warning{{TRUE}}
-  }
-
-  void testEnumRef(Foo &Baz) {
-    clang_analyzer_eval(Baz.Bar == Foo::Bar); // expected-warning{{TRUE}}
-  }
-
-  void testEnumPtr(Foo *Baz) {
-    clang_analyzer_eval(Baz->Bar == Foo::Bar); // expected-warning{{TRUE}}
-  }
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/method-arg-decay.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/method-arg-decay.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/method-arg-decay.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -analyzer-checker=core -verify %s -Wno-incomplete-implementation
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end    @interface NSObject <NSObject> {
-}
- at end    extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value;
- at end       @class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray;
-typedef struct {
-}
-  NSFastEnumerationState;
- at protocol NSFastEnumeration  - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end        @class NSString;
-typedef struct _NSRange {
-}
-  NSRange;
- at interface NSValue (NSValueRangeExtensions)  + (NSValue *)valueWithRange:(NSRange)range;
-- (id)objectAtIndex:(NSUInteger)index;
- at end         typedef unsigned short unichar;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>    - (NSUInteger)length;
- at end       @class NSArray, NSDictionary, NSString, NSError;
- at interface NSSet : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end    extern NSString *NSAccessibilityRoleDescription(NSString *role, NSString *subrole)     ;
- at interface NSResponder : NSObject <NSCoding> {
-}
- at end    @protocol NSAnimatablePropertyContainer      - (id)animator;
- at end  extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {
-}
- at end  @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView;
- at interface NSWindowController : NSResponder <NSCoding> {
-}
- at end @class NSArray, NSFont, NSTabViewItem;
- at interface NSTabView : NSView {
-}
-- (NSArray *)tabViewItems;
-- (NSString *)label;
- at end typedef enum {
-PBXNoItemChanged = 0x00,     PBXProjectItemChanged = 0x01,     PBXReferenceChanged = 0x02,     PBXGroupChanged = 0x04,     PBXTargetChanged = 0x08,     PBXBuildPhaseChanged = 0x10,     PBXBuildFileChanged = 0x20,     PBXBreakpointChanged = 0x40, }
-  PBXArchiveMask;
- at interface PBXModule : NSWindowController {
-}
- at end       typedef enum {
-PBXFindMatchContains,     PBXFindMatchStartsWith,     PBXFindMatchWholeWords,     PBXFindMatchEndsWith }
-  PBXFindMatchStyle;
- at protocol PBXSelectableText  - (NSString *)selectedString;
- at end  @protocol PBXFindableText <PBXSelectableText>    - (BOOL)findText:(NSString *)string ignoreCase:(BOOL)ignoreCase matchStyle:(PBXFindMatchStyle)matchStyle backwards:(BOOL)backwards wrap:(BOOL)wrap;
- at end  @class PBXProjectDocument, PBXProject, PBXAttributedStatusView;
- at interface PBXProjectModule : PBXModule <PBXFindableText> {
-}
- at end @class PBXBookmark;
- at protocol PBXSelectionTarget - (NSObject <PBXSelectionTarget> *) performAction:(id)action withSelection:(NSArray *)selection;  // expected-note {{method 'performAction:withSelection:' declared here}}
- at end @class XCPropertyDictionary, XCPropertyCondition, XCPropertyConditionSet, XCMutablePropertyConditionSet;
-extern NSMutableArray *XCFindPossibleKeyModules(PBXModule *module, BOOL useExposedModulesOnly);
- at interface NSString (StringUtilities) - (NSString *) trimToLength:(NSInteger)length preserveRange:(NSRange)range;
-- (id) objectOfType:(Class)type matchingFunction:(BOOL (void *, void *))comparator usingData:(void *)data;
- at end  @class XCControlView;
- at protocol XCDockViewHeader - (NSImage *) headerImage;
- at end  @class XCDockableTabModule;
- at interface XCExtendedTabView : NSTabView <XCDockViewHeader> {
-}
- at end     @class PBXProjectDocument, PBXFileReference, PBXModule, XCWindowTool;
- at interface XCPerspectiveModule : PBXProjectModule <PBXSelectionTarget> { // expected-note {{required for direct or indirect protocol 'PBXSelectionTarget'}}
-  XCExtendedTabView *_perspectivesTabView;
-}
-- (PBXModule *) moduleForTab:(NSTabViewItem *)item;
- at end  
- at implementation XCPerspectiveModule // expected-warning {{method 'performAction:withSelection:' in protocol not implemented}}}
-+ (void) openForProjectDocument:(PBXProjectDocument *)projectDocument {
-}
-- (PBXModule *) type:(Class)type inPerspective:(id)perspectiveIdentifer  matchingFunction:(BOOL (void *, void *))comparator usingData:(void *)data {
-  NSArray *allItems = [_perspectivesTabView tabViewItems];
-  NSInteger i, c = [allItems count];
-  for (i = 0;
-       i < c;
-       i++) {
-    NSTabViewItem *item = [allItems objectAtIndex:i];
-    if ([[item label] isEqual:perspectiveIdentifer]) {
-      PBXProjectModule *pModule = (PBXProjectModule *)[self moduleForTab:item];
-      PBXModule *obj = [XCFindPossibleKeyModules(pModule, (BOOL)0) objectOfType:type     matchingFunction:comparator usingData:data];
-    }
-  }
-  return 0;
-}
-- (BOOL)buffer:(char *)buf containsAnyPrompts:(char *[])prompts
-{
- prompts++;
- return (BOOL)0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/method-call-intra-p.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/method-call-intra-p.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/method-call-intra-p.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store region -verify %s
-// expected-no-diagnostics
-
-// Intra-procedural C++ tests.
-
-// Test relaxing function call arguments invalidation to be aware of const
-// arguments. radar://10595327
-struct InvalidateArgs {
-  void ttt(const int &nptr);
-  virtual void vttt(const int *nptr);
-};
-struct ChildOfInvalidateArgs: public InvalidateArgs {
-  virtual void vttt(const int *nptr);
-};
-void declarationFun(int x) {
-  InvalidateArgs t;
-  x = 3;
-  int y = x + 1;
-  int *p = 0;
-  t.ttt(y);
-  if (x == y)
-      y = *p; // no-warning
-}
-void virtualFun(int x) {
-  ChildOfInvalidateArgs t;
-  InvalidateArgs *pt = &t;
-  x = 3;
-  int y = x + 1;
-  int *p = 0;
-  pt->vttt(&y);
-  if (x == y)
-      y = *p; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/method-call-path-notes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/method-call-path-notes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/method-call-path-notes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,803 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-// Test warning about null or uninitialized pointer values used as instance member
-// calls.
-class TestInstanceCall {
-public:
-  void foo() {}
-};
-
-void test_ic() {
-  TestInstanceCall *p; // expected-note {{'p' declared without an initial value}}
-  p->foo(); // expected-warning {{Called C++ object pointer is uninitialized}} expected-note {{Called C++ object pointer is uninitialized}}
-}
-
-void test_ic_null() {
-  TestInstanceCall *p = 0; // expected-note {{'p' initialized to a null pointer value}}
-  p->foo(); // expected-warning {{Called C++ object pointer is null}} expected-note {{Called C++ object pointer is null}}
-}
-
-void test_ic_set_to_null() {
-  TestInstanceCall *p;
-  p = 0; // expected-note {{Null pointer value stored to 'p'}}
-  p->foo(); // expected-warning {{Called C++ object pointer is null}} expected-note {{Called C++ object pointer is null}}
-}
-
-void test_ic_null(TestInstanceCall *p) {
-  if (!p) // expected-note {{Assuming 'p' is null}} expected-note {{Taking true branch}}
-    p->foo(); // expected-warning {{Called C++ object pointer is null}} expected-note{{Called C++ object pointer is null}}
-}
-
-void test_ic_member_ptr() {
-  TestInstanceCall *p = 0; // expected-note {{'p' initialized to a null pointer value}}
-  typedef void (TestInstanceCall::*IC_Ptr)();
-  IC_Ptr bar = &TestInstanceCall::foo;
-  (p->*bar)(); // expected-warning {{Called C++ object pointer is null}} expected-note{{Called C++ object pointer is null}}
-}
-
-void test_cast(const TestInstanceCall *p) {
-  if (!p) // expected-note {{Assuming 'p' is null}} expected-note {{Taking true branch}}
-    const_cast<TestInstanceCall *>(p)->foo(); // expected-warning {{Called C++ object pointer is null}} expected-note {{Called C++ object pointer is null}}
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>13</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>13</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>13</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' declared without an initial value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' declared without an initial value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>13</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>14</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is uninitialized</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is uninitialized</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Called C++ object pointer is uninitialized</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Called C++ object pointer is uninitialized</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_ic</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>14</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>18</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>19</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_ic_null</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>19</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>25</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>25</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>25</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_ic_set_to_null</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>25</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>29</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>30</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>30</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>30</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_ic_null</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>30</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>34</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>34</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>34</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>34</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>37</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>37</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>37</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_ic_member_ptr</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>37</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>41</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>42</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>42</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>42</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>42</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>42</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Called C++ object pointer is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Called C++ object pointer is null</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_cast</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>42</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/method-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/method-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/method-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-inlining=constructors -verify %s
-
-void clang_analyzer_eval(bool);
-
-
-struct A {
-  int x;
-  A(int a) { x = a; }
-  int getx() const { return x; }
-};
-
-struct B{
-  int x;
-};
-
-void testNullObject(A *a) {
-  clang_analyzer_eval(a); // expected-warning{{UNKNOWN}}
-  (void)a->getx(); // assume we know what we're doing
-  clang_analyzer_eval(a); // expected-warning{{TRUE}}
-}
-
-void f1() {
-  A x(3);
-  clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
-}
-
-void f2() {
-  const A &x = A(3);
-  clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
-}
-
-void f3() {
-  const A &x = (A)3;
-  clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
-}
-
-void f4() {
-  A x = 3;
-  clang_analyzer_eval(x.getx() == 3); // expected-warning{{TRUE}}
-}
-
-void checkThatCopyConstructorDoesNotInvalidateObjectBeingCopied() {
-  B t;
-  t.x = 0;
-  B t2(t);
-  clang_analyzer_eval(t.x == 0); // expected-warning{{TRUE}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-64.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-64.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-64.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -fblocks %s
-// expected-no-diagnostics
-
-// <rdar://problem/6440393> - A bunch of misc. failures involving evaluating
-//  these expressions and building CFGs.  These tests are here to prevent
-//  regressions.
-typedef long long int64_t;
- at class NSString, NSDictionary;
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef unsigned char Boolean;
-typedef const struct __CFDictionary * CFDictionaryRef;
-
-extern Boolean CFDictionaryGetValueIfPresent(CFDictionaryRef theDict, const void *key, const void **value);
-void shazam(NSUInteger i, unsigned char **out);
-
-void rdar_6440393_1(NSDictionary *dict) {
-  NSInteger x = 0;
-  unsigned char buf[10], *bufptr = buf;
-  if (!CFDictionaryGetValueIfPresent(0, dict, (void *)&x))
-    return;
-  shazam(x, &bufptr);
-}
-
-// <rdar://problem/6845148> - In this example we got a signedness
-// mismatch between the literal '0' and the value of 'scrooge'.  The
-// trick is to have the evaluator convert the literal to an unsigned
-// integer when doing a comparison with the pointer.  This happens
-// because of the transfer function logic of
-// OSAtomicCompareAndSwap64Barrier, which doesn't have special casts
-// in place to do this for us.
-_Bool OSAtomicCompareAndSwap64Barrier( int64_t __oldValue, int64_t __newValue, volatile int64_t *__theValue );
-extern id objc_lookUpClass(const char *name);
-void rdar_6845148(id debug_yourself) {
-  if (!debug_yourself) {
-    const char *wacky = ((void *)0);  
-    Class scrooge = wacky ? (Class)objc_lookUpClass(wacky) : ((void *)0);  
-    OSAtomicCompareAndSwap64Barrier(0, (int64_t)scrooge, (int64_t*)&debug_yourself);
-  }
-}
-void rdar_6845148_b(id debug_yourself) {
-  if (!debug_yourself) {
-    const char *wacky = ((void *)0);  
-    Class scrooge = wacky ? (Class)objc_lookUpClass(wacky) : ((void *)0);  
-    OSAtomicCompareAndSwap64Barrier((int64_t)scrooge, 0, (int64_t*)&debug_yourself);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-arm.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-arm.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-arm.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple thumbv7-apple-ios0.0.0 -analyze -analyzer-checker=core -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-// <rdar://problem/11405978> - Handle casts of vectors to structs, and loading
-// a value.
-typedef float float32_t;
-typedef __attribute__((neon_vector_type(2))) float32_t float32x2_t;
-
-typedef struct
-{
-    float x, y;
-} Rdar11405978Vec;
-    
-float32x2_t rdar11405978_bar();
-float32_t rdar11405978() {
-  float32x2_t v = rdar11405978_bar();
-  Rdar11405978Vec w = *(Rdar11405978Vec *)&v;
-  return w.x; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang --analyze -std=c++11 %s -Xclang -verify -o /dev/null
-
-void test_static_assert() {
-  static_assert(sizeof(void *) == sizeof(void*), "test_static_assert");
-}
-
-void test_analyzer_working() {
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning {{null}}
-}
-
-// Test that pointer-to-member functions don't cause the analyzer
-// to crash.
-struct RDar10243398 {
-  void bar(int x);
-};
-
-typedef void (RDar10243398::*RDar10243398MemberFn)(int x);
-
-void test_rdar10243398(RDar10243398 *p) {
-  RDar10243398MemberFn q = &RDar10243398::bar;
-  ((*p).*(q))(1);
-}
-
-// Tests for CXXTemporaryObjectExpr.
-struct X {
-    X( int *ip, int );
-};
-
-// Test to see if CXXTemporaryObjectExpr is being handled.
-int tempobj1()
-{
-  int j;
-  int i;
-  X a = X( &j, 1 );
-
-  return i; // expected-warning {{Undefined or garbage value returned to caller}}
-}
-
-// Test to see if CXXTemporaryObjectExpr invalidates arguments.
-int tempobj2()
-{
-  int j;
-  X a = X( &j, 1 );
-
-  return j; // no-warning
-}
-
-
-// Test for correct handling of C++ ForRange statement.
-void test1() {
-  int array[2] = { 1, 2 };
-  int j = 0;
-  for ( int i : array )
-    j += i;
-  int *p = 0;
-  *p = 0xDEADBEEF;  // expected-warning {{null}}
-}
-
-void test2() {
-  int array[2] = { 1, 2 };
-  int j = 0;
-  for (int i : array)
-    j += i;
-  if (j == 3)
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF;  // no-warning
-}
-
-// Do not crash on the following when constructing the
-// callgraph.
-struct RDar11178609 {
-  ~RDar11178609() = delete;
-};
-
-// Tests that dynamic_cast handles references to C++ classes.  Previously
-// this crashed.
-class rdar11817693_BaseBase {};
-class rdar11817693_BaseInterface {};
-class rdar11817693_Base : public rdar11817693_BaseBase, public rdar11817693_BaseInterface {};
-class rdar11817693 : public rdar11817693_Base {
-  virtual void operator=(const rdar11817693_BaseBase& src);
-  void operator=(const rdar11817693& src);
-};
-void rdar11817693::operator=(const rdar11817693& src) {
-  operator=(dynamic_cast<const rdar11817693_BaseBase&>(src));
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-eager-assume.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-eager-assume.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-eager-assume.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,147 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -fblocks %s -analyzer-eagerly-assume
-// expected-no-diagnostics
-
-// Delta-reduced header stuff (needed for test cases).
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
-- (oneway void)release;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end    @interface NSObject <NSObject> {}
-+ (id)alloc;
-- (id)init;
- at end  typedef struct {}
-NSFastEnumerationState;
- at protocol NSFastEnumeration  - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end      @interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end    @interface NSMutableArray : NSArray  - (void)addObject:(id)anObject;
-- (BOOL)isEqualToString:(NSString *)aString;
- at end        @interface NSAutoreleasePool : NSObject {}
-- (void)drain;
-- (id)init;
- at end
-
-// This test case tests that (x != 0) is eagerly evaluated before stored to
-// 'y'.  This test case complements recoverCastedSymbol (see below) because
-// the symbolic expression is stored to 'y' (which is a short instead of an
-// int).  recoverCastedSymbol() only recovers path-sensitivity when the
-// symbolic expression is literally the branch condition.
-//
-void handle_assign_of_condition(int x) {
-  // The cast to 'short' causes us to lose symbolic constraint.
-  short y = (x != 0);
-  char *p = 0;
-  if (y) {
-    // This should be infeasible.
-    if (!(x != 0)) {
-      *p = 1;  // no-warning
-    }
-  }
-}
-
-// From <rdar://problem/6619921>
-//
-// In this test case, 'needsAnArray' is a signed char.  The analyzer tracks
-// a symbolic value for this variable, but in the branch condition it is
-// promoted to 'int'.  Currently the analyzer doesn't reason well about
-// promotions of symbolic values, so this test case tests the logic in
-// 'recoverCastedSymbol()' (GRExprEngine.cpp) to test that we recover
-// path-sensitivity and use the symbol for 'needsAnArray' in the branch
-// condition.
-//
-void handle_symbolic_cast_in_condition(void) {
-  NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
-
-  BOOL needsAnArray = [@"aString" isEqualToString:@"anotherString"];
-  NSMutableArray* array = needsAnArray ? [[NSMutableArray alloc] init] : 0;
-  if(needsAnArray)
-    [array release];
-
-  [pool drain];
-}
-
-// From PR 3836 (http://llvm.org/bugs/show_bug.cgi?id=3836)
-//
-// In this test case, the double '!' works fine with our symbolic constraints,
-// but we don't support comparing SymConstraint != SymConstraint.  By eagerly
-// assuming the truth of !!a or !!b, we can compare these values directly.
-//
-void pr3836(int *a, int *b) {
-  if (!!a != !!b) /* one of them is NULL */
-    return;
-  if (!a && !b) /* both are NULL */
-    return;
-      
-  *a = 1; // no-warning
-  *b = 1; // no-warning
-}
-
-
-//===---------------------------------------------------------------------===//
-// <rdar://problem/7342806>
-// This false positive occurred because the symbolic constraint on a short was
-// not maintained via sign extension.  The analyzer doesn't properly handle
-// the sign extension, but now tracks the constraint.  This particular
-// case relies on -analyzer-eagerly-assume because of the expression
-// 'Flag1 != Count > 0'.
-//===---------------------------------------------------------------------===//
-
-void rdar7342806_aux(short x);
-
-void rdar7342806() {
-  extern short Count;
-  extern short Flag1;
-
-  short *Pointer = 0;
-  short  Flag2   = !!Pointer;   // Flag2 is false (0).
-  short  Ok      = 1;
-  short  Which;
-
-  if( Flag1 != Count > 0 )
-    // Static analyzer skips this so either
-    //   Flag1 is true and Count > 0
-    // or
-    //   Flag1 is false and Count <= 0
-    Ok = 0;
-
-  if( Flag1 != Flag2 )
-    // Analyzer skips this so Flag1 and Flag2 have the
-    // same value, both are false because Flag2 is false. And
-    // from that we know Count must be <= 0.
-    Ok = 0;
-
-  for( Which = 0;
-         Which < Count && Ok;
-           Which++ )
-    // This statement can only execute if Count > 0 which can only
-    // happen when Flag1 and Flag2 are both true and Flag2 will only
-    // be true when Pointer is not NULL.
-    rdar7342806_aux(*Pointer); // no-warning
-}
-
-//===---------------------------------------------------------------------===//
-// PR 5627 - http://llvm.org/bugs/show_bug.cgi?id=5627
-//  This test case depends on using -analyzer-eagerly-assume and
-//  -analyzer-store=region.  The '-analyzer-eagerly-assume' causes the path
-//  to bifurcate when evaluating the function call argument, and a state
-//  caching bug in GRExprEngine::CheckerVisit (and friends) caused the store
-//  to 'p' to not be evaluated along one path, but then an autotransition caused
-//  the path to keep on propagating with 'p' still set to an undefined value.
-//  We would then get a bogus report of returning uninitialized memory.
-//  Note: CheckerVisit mistakenly cleared an existing node, and the cleared
-//  node was resurrected by GRStmtNodeBuilder::~GRStmtNodeBuilder(), where
-//  'p' was not assigned.
-//===---------------------------------------------------------------------===//
-
-float *pr5627_f(int y);
-
-float *pr5627_g(int x) {
-  float *p;
-  p = pr5627_f(!x);
-  return p; // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-ranges.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-ranges.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-ranges.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -fblocks %s
-
-// <rdar://problem/6776949>
-// main's 'argc' argument is always > 0
-int main(int argc, char* argv[]) {
-  int *p = 0;
-
-  if (argc == 0)
-    *p = 1;
-
-  if (argc == 1)
-    return 1;
-
-  int x = 1;
-  int i;
-  
-  for(i=1;i<argc;i++){
-    p = &x;
-  }
-
-  return *p; // no-warning
-}
-
-// PR 5969: the comparison of argc < 3 || argc > 4 should constraint the switch
-//  statement from having the 'default' branch taken.  This previously reported a false
-//  positive with the use of 'v'.
-
-int pr5969(int argc, char *argv[]) {
-
-  int v;
-
-  if ((argc < 3) || (argc > 4)) return 0;
-
-  switch(argc) {
-    case 3:
-      v = 33;
-      break;
-    case 4:
-      v = 44;
-      break;
-  }
-
-  return v; // no-warning
-}
-
-int pr5969_positive(int argc, char *argv[]) {
-
-  int v;
-
-  if ((argc < 3) || (argc > 4)) return 0;
-
-  switch(argc) {
-    case 3:
-      v = 33;
-      break;
-  }
-
-  return v; // expected-warning{{Undefined or garbage value returned to caller}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store-i386.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store-i386.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store-i386.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks %s
-// expected-no-diagnostics
-
-// Here is a case where a pointer is treated as integer, invalidated as an
-// integer, and then used again as a pointer.   This test just makes sure
-// we don't crash.
-typedef unsigned uintptr_t;
-void test_pointer_invalidated_as_int_aux(uintptr_t* ptr);
-void test_pointer_invalidated_as_int() {
-  void *x;
-  test_pointer_invalidated_as_int_aux((uintptr_t*) &x);
-  // Here we have a pointer to integer cast.
-  uintptr_t y = (uintptr_t) x;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store-x86_64.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store-x86_64.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store-x86_64.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks %s
-// expected-no-diagnostics
-
-// Here is a case where a pointer is treated as integer, invalidated as an
-// integer, and then used again as a pointer.   This test just makes sure
-// we don't crash.
-typedef unsigned long uintptr_t;
-void test_pointer_invalidated_as_int_aux(uintptr_t* ptr);
-void test_pointer_invalidated_as_int() {
-  void *x;
-  test_pointer_invalidated_as_int_aux((uintptr_t*) &x);
-  // Here we have a pointer to integer cast.
-  uintptr_t y = (uintptr_t) x;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,742 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s -fexceptions -fcxx-exceptions
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s -fexceptions -fcxx-exceptions
-
-// Test basic handling of references.
-char &test1_aux();
-char *test1() {
-  return &test1_aux();
-}
-
-// Test test1_aux() evaluates to char &.
-char test1_as_rvalue() {
-  return test1_aux();
-}
-
-// Test passing a value as a reference.  The 'const' in test2_aux() adds
-// an ImplicitCastExpr, which is evaluated as an lvalue.
-int test2_aux(const int &n);
-int test2(int n) {
-  return test2_aux(n);
-}
-
-int test2_b_aux(const short &n);
-int test2_b(int n) {
-  return test2_b_aux(n);
-}
-
-// Test getting the lvalue of a derived and converting it to a base.  This
-// previously crashed.
-class Test3_Base {};
-class Test3_Derived : public Test3_Base {};
-
-int test3_aux(Test3_Base &x);
-int test3(Test3_Derived x) {
-  return test3_aux(x);
-}
-
-//===---------------------------------------------------------------------===//
-// Test CFG support for C++ condition variables.
-//===---------------------------------------------------------------------===//
-
-int test_init_in_condition_aux();
-int test_init_in_condition() {
-  if (int x = test_init_in_condition_aux()) { // no-warning
-    return 1;
-  }
-  return 0;
-}
-
-int test_init_in_condition_switch() {
-  switch (int x = test_init_in_condition_aux()) { // no-warning
-    case 1:
-      return 0;
-    case 2:
-      if (x == 2)
-        return 0;
-      else {
-        // Unreachable.
-        int *p = 0;
-        *p = 0xDEADBEEF; // no-warning
-      }
-    default:
-      break;
-  }
-  return 0;
-}
-
-int test_init_in_condition_while() {
-  int z = 0;
-  while (int x = ++z) { // no-warning
-    if (x == 2)
-      break;
-  }
-  
-  if (z == 2)
-    return 0;
-  
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-  return 0;
-}
-
-
-int test_init_in_condition_for() {
-  int z = 0;
-  for (int x = 0; int y = ++z; ++x) {
-    if (x == y) // no-warning
-      break;
-  }
-  if (z == 1)
-    return 0;
-    
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-  return 0;
-}
-
-//===---------------------------------------------------------------------===//
-// Test handling of 'this' pointer.
-//===---------------------------------------------------------------------===//
-
-class TestHandleThis {
-  int x;
-
-  TestHandleThis();  
-  int foo();
-  int null_deref_negative();
-  int null_deref_positive();  
-};
-
-int TestHandleThis::foo() {
-  // Assume that 'x' is initialized.
-  return x + 1; // no-warning
-}
-
-int TestHandleThis::null_deref_negative() {
-  x = 10;
-  if (x == 10) {
-    return 1;
-  }
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-  return 0;  
-}
-
-int TestHandleThis::null_deref_positive() {
-  x = 10;
-  if (x == 9) {
-    return 1;
-  }
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning{{null pointer}}
-  return 0;  
-}
-
-// PR 7675 - passing literals by-reference
-void pr7675(const double &a);
-void pr7675(const int &a);
-void pr7675(const char &a);
-void pr7675_i(const _Complex double &a);
-
-void pr7675_test() {
-  pr7675(10.0);
-  pr7675(10);
-  pr7675('c');
-  pr7675_i(4.0i);
-  // Add null deref to ensure we are analyzing the code up to this point.
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning{{null pointer}}
-}
-
-// <rdar://problem/8375510> - CFGBuilder should handle temporaries.
-struct R8375510 {
-  R8375510();
-  ~R8375510();
-  R8375510 operator++(int);
-};
-
-int r8375510(R8375510 x, R8375510 y) {
-  for (; ; x++) { }
-}
-
-// PR8419 -- this used to crash.
-
-class String8419 {
- public:
-  char& get(int n);
-  char& operator[](int n);
-};
-
-char& get8419();
-
-void Test8419() {
-  String8419 s;
-  ++(s.get(0));
-  get8419()--;  // used to crash
-  --s[0];       // used to crash
-  s[0] &= 1;    // used to crash
-  s[0]++;       // used to crash
-}
-
-// PR8426 -- this used to crash.
-
-void Use(void* to);
-
-template <class T> class Foo {
-  ~Foo();
-  struct Bar;
-  Bar* bar_;
-};
-
-template <class T> Foo<T>::~Foo() {
-  Use(bar_);
-  T::DoSomething();
-  bar_->Work();
-}
-
-// PR8427 -- this used to crash.
-
-class Dummy {};
-
-bool operator==(Dummy, int);
-
-template <typename T>
-class Foo2 {
-  bool Bar();
-};
-
-template <typename T>
-bool Foo2<T>::Bar() {
-  return 0 == T();
-}
-
-// PR8433 -- this used to crash.
-
-template <typename T>
-class Foo3 {
- public:
-  void Bar();
-  void Baz();
-  T value_;
-};
-
-template <typename T>
-void Foo3<T>::Bar() {
-  Baz();
-  value_();
-}
-
-//===---------------------------------------------------------------------===//
-// Handle misc. C++ constructs.
-//===---------------------------------------------------------------------===//
-
-namespace fum {
-  int i = 3;
-};
-
-void test_namespace() {
-  // Previously triggered a crash.
-  using namespace fum;
-  int x = i;
-}
-
-// Test handling methods that accept references as parameters, and that
-// variables are properly invalidated.
-class RDar9203355 {
-  bool foo(unsigned valA, long long &result) const;
-  bool foo(unsigned valA, int &result) const;
-};
-bool RDar9203355::foo(unsigned valA, int &result) const {
-  long long val;
-  if (foo(valA, val) ||
-      (int)val != val) // no-warning
-    return true;
-  result = val; // no-warning
-  return false;
-}
-
-// Test handling of new[].
-void rdar9212512() {
-  int *x = new int[10];
-  for (unsigned i = 0 ; i < 2 ; ++i) {
-    // This previously triggered an uninitialized values warning.
-    x[i] = 1;  // no-warning
-  }
-}
-
-// Test basic support for dynamic_cast<>.
-struct Rdar9212495_C { virtual void bar() const; };
-class Rdar9212495_B : public Rdar9212495_C {};
-class Rdar9212495_A : public Rdar9212495_B {};
-const Rdar9212495_A& rdar9212495(const Rdar9212495_C* ptr) {
-  const Rdar9212495_A& val = dynamic_cast<const Rdar9212495_A&>(*ptr);
-  
-  // This is not valid C++; dynamic_cast with a reference type will throw an
-  // exception if the pointer does not match the expected type. However, our
-  // implementation of dynamic_cast will pass through a null pointer...or a
-  // "null reference"! So this branch is actually possible.
-  if (&val == 0) {
-    val.bar(); // expected-warning{{Called C++ object pointer is null}}
-  }
-  
-  return val;
-}
-
-const Rdar9212495_A* rdar9212495_ptr(const Rdar9212495_C* ptr) {
-  const Rdar9212495_A* val = dynamic_cast<const Rdar9212495_A*>(ptr);
-
-  if (val == 0) {
-    val->bar(); // expected-warning{{Called C++ object pointer is null}}
-  }
-
-  return val;
-}
-
-// Test constructors invalidating arguments.  Previously this raised
-// an uninitialized value warning.
-extern "C" void __attribute__((noreturn)) PR9645_exit(int i);
-
-class PR9645_SideEffect
-{
-public:
-  PR9645_SideEffect(int *pi); // caches pi in i_
-  void Read(int *pi); // copies *pi into *i_
-private:
-  int *i_;
-};
-
-void PR9645() {
-  int i;
-
-  PR9645_SideEffect se(&i);
-  int j = 1;
-  se.Read(&j); // this has a side-effect of initializing i.
-
-  PR9645_exit(i); // no-warning
-}
-
-PR9645_SideEffect::PR9645_SideEffect(int *pi) : i_(pi) {}
-void PR9645_SideEffect::Read(int *pi) { *i_ = *pi; }
-
-// Invalidate fields during C++ method calls.
-class RDar9267815 {
-  int x;
-  void test();
-  void test_pos();
-  void test2();
-  void invalidate();
-};
-
-void RDar9267815::test_pos() {
-  int *p = 0;
-  if (x == 42)
-    return;
-  *p = 0xDEADBEEF; // expected-warning {{null}}
-}
-void RDar9267815::test() {
-  int *p = 0;
-  if (x == 42)
-    return;
-  if (x == 42)
-    *p = 0xDEADBEEF; // no-warning
-}
-
-void RDar9267815::test2() {
-  int *p = 0;
-  if (x == 42)
-    return;
-  invalidate();
-  if (x == 42)
-    *p = 0xDEADBEEF; // expected-warning {{null}}
-}
-
-// Test reference parameters.
-void test_ref_double_aux(double &Value);
-float test_ref_double() {
-  double dVal;
-  test_ref_double_aux(dVal);
-  // This previously warned because 'dVal' was thought to be uninitialized.
-  float Val = (float)dVal; // no-warning
-  return Val;
-}
-
-// Test invalidation of class fields.
-class TestInvalidateClass {
-public:
-  int x;
-};
-
-void test_invalidate_class_aux(TestInvalidateClass &x);
-
-int test_invalidate_class() {
-  TestInvalidateClass y;
-  test_invalidate_class_aux(y);
-  return y.x; // no-warning
-}
-
-// Test correct pointer arithmetic using 'p--'.  This is to warn that we
-// were loading beyond the written characters in buf.
-char *RDar9269695(char *dst, unsigned int n)
-{
-  char buff[40], *p;
-
-  p = buff;
-  do
-    *p++ = '0' + n % 10;
-  while (n /= 10);
-
-  do
-    *dst++ = *--p; // no-warning
-  while (p != buff);
-
-  return dst;
-}
-
-// Test that we invalidate byref arguments passed to constructors.
-class TestInvalidateInCtor {
-public:
-  TestInvalidateInCtor(unsigned &x);
-};
-
-unsigned test_invalidate_in_ctor() {
-  unsigned x;
-  TestInvalidateInCtor foo(x);
-  return x; // no-warning
-}
-unsigned test_invalidate_in_ctor_new() {
-  unsigned x;
-  delete (new TestInvalidateInCtor(x));
-  return x; // no-warning
-}
-
-// Test assigning into a symbolic offset.
-struct TestAssignIntoSymbolicOffset {
-  int **stuff[100];
-  void test(int x, int y);
-};
-
-void TestAssignIntoSymbolicOffset::test(int x, int y) {
-  x--;
-  if (x > 8 || x < 0)
-    return;
-  if (stuff[x])
-    return;
-  if (!stuff[x]) {
-    stuff[x] = new int*[y+1];
-    // Previously triggered a null dereference.
-    stuff[x][y] = 0; // no-warning
-  }
-}
-
-// Test loads from static fields.  This previously triggered an uninitialized
-// value warning.
-class ClassWithStatic {
-public:
-    static const unsigned value = 1;
-};
-
-int rdar9948787_negative() {
-    ClassWithStatic classWithStatic;
-    unsigned value = classWithStatic.value;
-    if (value == 1)
-      return 1;
-    int *p = 0;
-    *p = 0xDEADBEEF; // no-warning
-    return 0;
-}
-
-int rdar9948787_positive() {
-    ClassWithStatic classWithStatic;
-    unsigned value = classWithStatic.value;
-    if (value == 0)
-      return 1;
-    int *p = 0;
-    *p = 0xDEADBEEF; // expected-warning {{null}}
-    return 0;
-}
-
-// Regression test against global constants and switches.
-enum rdar10202899_ValT { rdar10202899_ValTA, rdar10202899_ValTB, rdar10202899_ValTC };
-const rdar10202899_ValT val = rdar10202899_ValTA;
-void rdar10202899_test1() {
-  switch (val) {
-    case rdar10202899_ValTA: {}
-  };
-}
-
-void rdar10202899_test2() {
-  if (val == rdar10202899_ValTA)
-   return;
-  int *p = 0;
-  *p = 0xDEADBEEF;
-}
-
-void rdar10202899_test3() {
-  switch (val) {
-    case rdar10202899_ValTA: return;
-    default: ;
-  };
-  int *p = 0;
-  *p = 0xDEADBEEF;
-}
-
-// This used to crash the analyzer because of the unnamed bitfield.
-void PR11249()
-{
-  struct {
-    char f1:4;
-    char   :4;
-    char f2[1];
-    char f3;
-  } V = { 1, {2}, 3 };
-  int *p = 0;
-  if (V.f1 != 1)
-    *p = 0xDEADBEEF;  // no-warning
-  if (V.f2[0] != 2)
-    *p = 0xDEADBEEF;  // no-warning
-  if (V.f3 != 3)
-    *p = 0xDEADBEEF;  // no-warning
-}
-
-// Handle doing a load from the memory associated with the code for
-// a function.
-extern double nan( const char * );
-double PR11450() {
-  double NaN = *(double*) nan;
-  return NaN;
-}
-
-// Test that 'this' is assumed non-null upon analyzing the entry to a "top-level"
-// function (i.e., when not analyzing from a specific caller).
-struct TestNullThis {
-  int field;
-  void test();
-};
-
-void TestNullThis::test() {
-  int *p = &field;
-  if (p)
-    return;
-  field = 2; // no-warning
-}
-
-// Test handling of 'catch' exception variables, and not warning
-// about uninitialized values.
-enum MyEnum { MyEnumValue };
-MyEnum rdar10892489() {
-  try {
-      throw MyEnumValue;
-  } catch (MyEnum e) {
-      return e; // no-warning
-  }
-  return MyEnumValue;
-}
-
-MyEnum rdar10892489_positive() {
-  try {
-    throw MyEnumValue;
-  } catch (MyEnum e) {
-    int *p = 0;
-    // FALSE NEGATIVE
-    *p = 0xDEADBEEF; // {{null}}
-    return e;
-  }
-  return MyEnumValue;
-}
-
-// Test handling of catch with no condition variable.
-void PR11545() {
-  try
-  {
-      throw;
-  }
-  catch (...)
-  {
-  }
-}
-
-void PR11545_positive() {
-  try
-  {
-      throw;
-  }
-  catch (...)
-  {
-    int *p = 0;
-    // FALSE NEGATIVE
-    *p = 0xDEADBEEF; // {{null}}
-  }
-}
-
-// Test handling taking the address of a field.  While the analyzer
-// currently doesn't do anything intelligent here, this previously
-// resulted in a crash.
-class PR11146 {
-public:
-  struct Entry;
-  void baz();
-};
-
-struct PR11146::Entry {
-  int x;
-};
-
-void PR11146::baz() {
-  (void) &Entry::x;
-}
-
-// Test symbolicating a reference.  In this example, the
-// analyzer (originally) didn't know how to handle x[index - index2],
-// returning an UnknownVal.  The conjured symbol wasn't a location,
-// and would result in a crash.
-void rdar10924675(unsigned short x[], int index, int index2) {
-  unsigned short &y = x[index - index2];
-  if (y == 0)
-    return;
-}
-
-// Test handling CXXScalarValueInitExprs.
-void rdar11401827() {
-  int x = int();
-  if (!x) {
-    int *p = 0;
-    *p = 0xDEADBEEF; // expected-warning {{null pointer}}
-  }
-  else {
-    int *p = 0;
-    *p = 0xDEADBEEF;
-  }
-}
-
-//===---------------------------------------------------------------------===//
-// Handle inlining of C++ method calls.
-//===---------------------------------------------------------------------===//
-
-struct A {
-  int *p;
-  void foo(int *q) {
-    p = q;
-  }
-  void bar() {
-    *p = 0; // expected-warning {{null pointer}}
-  }
-};
-
-void test_inline() {
-  A a;
-  a.foo(0);
-  a.bar();
-}
-
-void test_alloca_in_a_recursive_function(int p1) {
-    __builtin_alloca (p1);
-    test_alloca_in_a_recursive_function(1);
-    test_alloca_in_a_recursive_function(2);
-}
-
-//===---------------------------------------------------------------------===//
-// Random tests.
-//===---------------------------------------------------------------------===//
-
-// Tests assigning using a C-style initializer to a struct
-// variable whose sub-field is also a struct.  This currently
-// results in a CXXTempObjectRegion being created, but not
-// properly handled.  For now, we just ignore that value
-// to avoid a crash (<rdar://problem/12753384>).
-struct RDar12753384_ClassA {
-  unsigned z;
-};
-struct  RDar12753384_ClassB {
-  unsigned x;
-  RDar12753384_ClassA y[ 8 ] ;
-};
-unsigned RDar12753384() {
-  RDar12753384_ClassB w = { 0x00 };
-  RDar12753384_ClassA y[8];
-  return w.x;
-}
-
-// This testcase tests whether we treat the anonymous union and union
-// the same way.  This previously resulted in a "return of stack address"
-// warning because the anonymous union resulting in a temporary object
-// getting put into the initializer.  We still aren't handling this correctly,
-// but now if a temporary object appears in an initializer we just ignore it.
-// Fixes <rdar://problem/12755044>.
-
-struct Rdar12755044_foo
-{
-    struct Rdar12755044_bar
-    {
-        union baz
-        {
-            int   i;
-        };
-    } aBar;
-};
-
-struct Rdar12755044_foo_anon
-{
-    struct Rdar12755044_bar
-    {
-        union
-        {
-            int   i;
-        };
-    } aBar;
-};
-
-const Rdar12755044_foo_anon *radar12755044_anon() {
-  static const Rdar12755044_foo_anon Rdar12755044_foo_list[] = { { { } } };
-  return Rdar12755044_foo_list; // no-warning
-}
-
-const Rdar12755044_foo *radar12755044() {
-  static const Rdar12755044_foo Rdar12755044_foo_list[] = { { { } } };
-  return Rdar12755044_foo_list; // no-warning
-}
-
-// Test the correct handling of integer to bool conversions.  Previously
-// this resulted in a false positive because integers were being truncated
-// and not tested for non-zero.
-void rdar12759044() {
-  int flag = 512;
-  if (!(flag & 512)) {
-   int *p = 0;
-   *p = 0xDEADBEEF; // no-warning
-  }
-}
-
-// The analyzer currently does not model complex types.  Test that the load
-// from 'x' is not flagged as being uninitialized.
-typedef __complex__ float _ComplexT;
-void rdar12964481(_ComplexT *y) {
-   _ComplexT x;
-   __real__ x = 1.0;
-   __imag__ x = 1.0;
-   *y *= x; // no-warning
-}
-void rdar12964481_b(_ComplexT *y) {
-   _ComplexT x;
-   // Eventually this should be a warning.
-   *y *= x; // no-warning
-}
-
-// Test case for PR 12921.  This previously produced
-// a bogus warning.
-static const int pr12921_arr[] = { 0, 1 };
-static const int pr12921_arrcount = sizeof(pr12921_arr)/sizeof(int);
-
-int pr12921(int argc, char **argv) {
-  int i, retval;
-  for (i = 0; i < pr12921_arrcount; i++) {
-    if (argc == i) {
-      retval = i;
-      break;
-    }
-  }
-
-  // No match
-  if (i == pr12921_arrcount) return 66;
-  return pr12921_arr[retval];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1366 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.deadcode.IdempotentOperations,alpha.core.CastToStruct,alpha.security.ReturnPtrRange,alpha.security.ArrayBound -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -DTEST_64 -analyze -analyzer-checker=core,alpha.deadcode.IdempotentOperations,alpha.core.CastToStruct,alpha.security.ReturnPtrRange,alpha.security.ArrayBound -analyzer-store=region -verify -fblocks   -analyzer-opt-analyze-nested-blocks -Wno-objc-root-class %s
-
-typedef long unsigned int size_t;
-void *memcpy(void *, const void *, size_t);
-void *alloca(size_t);
-
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} - (id)init; @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end extern NSString * const NSBundleDidLoadNotification;
- at interface NSAssertionHandler : NSObject {}
-+ (NSAssertionHandler *)currentHandler;
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
- at end
-extern NSString * const NSConnectionReplyMode;
-
-#ifdef TEST_64
-typedef long long int64_t;
-typedef int64_t intptr_t;
-#else
-typedef int int32_t;
-typedef int32_t intptr_t;
-#endif
-
-//---------------------------------------------------------------------------
-// Test case 'checkaccess_union' differs for region store and basic store.
-// The basic store doesn't reason about compound literals, so the code
-// below won't fire an "uninitialized value" warning.
-//---------------------------------------------------------------------------
-
-// PR 2948 (testcase; crash on VisitLValue for union types)
-// http://llvm.org/bugs/show_bug.cgi?id=2948
-void checkaccess_union() {
-  int ret = 0, status;
-  // Since RegionStore doesn't handle unions yet,
-  // this branch condition won't be triggered
-  // as involving an uninitialized value.  
-  if (((((__extension__ (((union {  // no-warning
-    __typeof (status) __in; int __i;}
-    )
-    {
-      .__in = (status)}
-      ).__i))) & 0xff00) >> 8) == 1)
-        ret = 1;
-}
-
-// Check our handling of fields being invalidated by function calls.
-struct test2_struct { int x; int y; char* s; };
-void test2_help(struct test2_struct* p);
-
-char test2() {
-  struct test2_struct s;
-  test2_help(&s);
-  char *p = 0;
-  
-  if (s.x > 1) {
-    if (s.s != 0) {
-      p = "hello";
-    }
-  }
-  
-  if (s.x > 1) {
-    if (s.s != 0) {
-      return *p;
-    }
-  }
-
-  return 'a';
-}
-
-// BasicStore handles this case incorrectly because it doesn't reason about
-// the value pointed to by 'x' and thus creates different symbolic values
-// at the declarations of 'a' and 'b' respectively.  RegionStore handles
-// it correctly. See the companion test in 'misc-ps-basic-store.m'.
-void test_trivial_symbolic_comparison_pointer_parameter(int *x) {
-  int a = *x;
-  int b = *x;
-  if (a != b) {
-    int *p = 0;
-    *p = 0xDEADBEEF;     // no-warning
-  }
-}
-
-// This is a modified test from 'misc-ps.m'.  Here we have the extra
-// NULL dereferences which are pruned out by RegionStore's symbolic reasoning
-// of fields.
-typedef struct _BStruct { void *grue; } BStruct;
-void testB_aux(void *ptr);
-
-void testB(BStruct *b) {
-  {
-    int *__gruep__ = ((int *)&((b)->grue));
-    int __gruev__ = *__gruep__;
-    int __gruev2__ = *__gruep__;
-    if (__gruev__ != __gruev2__) {
-      int *p = 0;
-      *p = 0xDEADBEEF; // no-warning
-    }
-
-    testB_aux(__gruep__);
-  }
-  {
-    int *__gruep__ = ((int *)&((b)->grue));
-    int __gruev__ = *__gruep__;
-    int __gruev2__ = *__gruep__;
-    if (__gruev__ != __gruev2__) {
-      int *p = 0;
-      *p = 0xDEADBEEF; // no-warning
-    }
-
-    if (~0 != __gruev__) {}
-  }
-}
-
-void testB_2(BStruct *b) {
-  {
-    int **__gruep__ = ((int **)&((b)->grue));
-    int *__gruev__ = *__gruep__;
-    testB_aux(__gruep__);
-  }
-  {
-    int **__gruep__ = ((int **)&((b)->grue));
-    int *__gruev__ = *__gruep__;
-    if ((int*)~0 != __gruev__) {}
-  }
-}
-
-// This test case is a reduced case of a caching bug discovered by an
-// assertion failure in RegionStoreManager::BindArray.  Essentially the
-// DeclStmt is evaluated twice, but on the second loop iteration the
-// engine caches out.  Previously a false transition would cause UnknownVal
-// to bind to the variable, firing an assertion failure.  This bug was fixed
-// in r76262.
-void test_declstmt_caching() {
-again:
-  {
-    const char a[] = "I like to crash";
-    goto again;
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// Reduced test case from <rdar://problem/7114618>.
-// Basically a null check is performed on the field value, which is then
-// assigned to a variable and then checked again.
-//===----------------------------------------------------------------------===//
-struct s_7114618 { int *p; };
-void test_rdar_7114618(struct s_7114618 *s) {
-  if (s->p) {
-    int *p = s->p;
-    if (!p) {
-      // Infeasible
-      int *dead = 0;
-      *dead = 0xDEADBEEF; // no-warning
-    }
-  }
-}
-
-// Test pointers increment correctly.
-void f() {
-  int a[2];
-  a[1] = 3;
-  int *p = a;
-  p++;
-  if (*p != 3) {
-    int *q = 0;
-    *q = 3; // no-warning
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7185607>
-// Bit-fields of a struct should be invalidated when blasting the entire
-// struct with an integer constant.
-//===----------------------------------------------------------------------===//
-struct test_7185607 {
-  int x : 10;
-  int y : 22;
-};
-int rdar_test_7185607() {
-  struct test_7185607 s; // Uninitialized.
-  *((unsigned *) &s) = 0U;
-  return s.x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7242006> [RegionStore] compound literal assignment with
-//  floats not honored
-// This test case is mirrored in misc-ps.m, but this case is a negative.
-//===----------------------------------------------------------------------===//
-typedef float CGFloat;
-typedef struct _NSSize {
-    CGFloat width;
-    CGFloat height;
-} NSSize;
-
-CGFloat rdar7242006_negative(CGFloat x) {
-  NSSize y;
-  return y.width; // expected-warning{{garbage}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7249340> - Allow binding of values to symbolic regions.
-// This test case shows how RegionStore tracks the value bound to 'x'
-// after the assignment.
-//===----------------------------------------------------------------------===//
-typedef int* ptr_rdar_7249340;
-void rdar_7249340(ptr_rdar_7249340 x) {
-  *x = 1;
-  if (*x)
-    return;
-  int *p = 0;   // This is unreachable.
-  *p = 0xDEADBEEF; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7249327> - This test case tests both value tracking of
-// array values and that we handle symbolic values that are casted
-// between different integer types.  Note the assignment 'n = *a++'; here
-// 'n' is and 'int' and '*a' is 'unsigned'.  Previously we got a false positive
-// at 'x += *b++' (undefined value) because we got a false path.
-//===----------------------------------------------------------------------===//
-int rdar_7249327_aux(void);
-
-void rdar_7249327(unsigned int A[2*32]) {
-  int B[2*32];
-  int *b;
-  unsigned int *a;
-  int x = 0;
-  
-  int n;
-  
-  a = A;
-  b = B;
-  
-  n = *a++;
-  if (n)
-    *b++ = rdar_7249327_aux();
-
-  a = A;
-  b = B;
-  
-  n = *a++; // expected-warning{{Assigned value is always the same as the existing value}}
-  if (n)
-    x += *b++; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6914474> - Check that 'x' is invalidated because its
-// address is passed in as a value to a struct.
-//===----------------------------------------------------------------------===//
-struct doodad_6914474 { int *v; };
-extern void prod_6914474(struct doodad_6914474 *d);
-int rdar_6914474(void) {
-  int x;
-  struct doodad_6914474 d;
-  d.v = &x;
-  prod_6914474(&d);
-  return x; // no-warning
-}
-
-// Test invalidation of a single field.
-struct s_test_field_invalidate {
-  int x;
-};
-extern void test_invalidate_field(int *x);
-int test_invalidate_field_test() {
-  struct s_test_field_invalidate y;
-  test_invalidate_field(&y.x);
-  return y.x; // no-warning
-}
-int test_invalidate_field_test_positive() {
-  struct s_test_field_invalidate y;
-  return y.x; // expected-warning{{garbage}}
-}
-
-// This test case illustrates how a typeless array of bytes casted to a
-// struct should be treated as initialized.  RemoveDeadBindings previously
-// had a bug that caused 'x' to lose its default symbolic value after the
-// assignment to 'p', thus causing 'p->z' to evaluate to "undefined".
-struct ArrayWrapper { unsigned char y[16]; };
-struct WrappedStruct { unsigned z; };
-
-void test_handle_array_wrapper_helper();
-
-int test_handle_array_wrapper() {
-  struct ArrayWrapper x;
-  test_handle_array_wrapper_helper(&x);
-  struct WrappedStruct *p = (struct WrappedStruct*) x.y; // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
-  return p->z;  // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7261075> [RegionStore] crash when 
-//   handling load: '*((unsigned int *)"????")'
-//===----------------------------------------------------------------------===//
-
-int rdar_7261075(void) {
-  unsigned int var = 0;
-  if (var == *((unsigned int *)"????"))
-    return 1;
-  return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7275774> false path due to limited pointer 
-//                          arithmetic constraints
-//===----------------------------------------------------------------------===//
-
-void rdar_7275774(void *data, unsigned n) {
-  if (!(data || n == 0))
-    return;
-  
-  unsigned short *p = (unsigned short*) data;
-  unsigned short *q = p + (n / 2);
-
-  if (p < q) {
-    // If we reach here, 'p' cannot be null.  If 'p' is null, then 'n' must
-    // be '0', meaning that this branch is not feasible.
-    *p = *q; // no-warning
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7312221>
-//
-//  Test that Objective-C instance variables aren't prematurely pruned
-//  from the analysis state.
-//===----------------------------------------------------------------------===//
-
-struct rdar_7312221_value { int x; };
-
- at interface RDar7312221
-{
-  struct rdar_7312221_value *y;
-}
-- (void) doSomething_7312221;
- at end
-
-extern struct rdar_7312221_value *rdar_7312221_helper();
-extern int rdar_7312221_helper_2(id o);
-extern void rdar_7312221_helper_3(int z);
-
- at implementation RDar7312221
-- (void) doSomething_7312221 {
-  if (y == 0) {
-    y = rdar_7312221_helper();
-    if (y != 0) {
-      y->x = rdar_7312221_helper_2(self);
-      // The following use of 'y->x' previously triggered a null dereference, as the value of 'y'
-      // before 'y = rdar_7312221_helper()' would be used.
-      rdar_7312221_helper_3(y->x); // no-warning
-    }
-  }
-}
- at end
-
-struct rdar_7312221_container {
-  struct rdar_7312221_value *y;
-};
-
-extern int rdar_7312221_helper_4(struct rdar_7312221_container *s);
-
-// This test case essentially matches the one in [RDar7312221 doSomething_7312221].
-void doSomething_7312221_with_struct(struct rdar_7312221_container *Self) {
-  if (Self->y == 0) {
-    Self->y = rdar_7312221_helper();
-    if (Self->y != 0) {
-      Self->y->x = rdar_7312221_helper_4(Self);
-      rdar_7312221_helper_3(Self->y->x); // no-warning
-    }
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7332673> - Just more tests cases for regions
-//===----------------------------------------------------------------------===//
-
-void rdar_7332673_test1() {
-    char value[1];
-    if ( *(value) != 1 ) {} // expected-warning{{The left operand of '!=' is a garbage value}}
-}
-int rdar_7332673_test2_aux(char *x);
-void rdar_7332673_test2() {
-    char *value;
-    if ( rdar_7332673_test2_aux(value) != 1 ) {} // expected-warning{{Function call argument is an uninitialized value}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7347252>: Because of a bug in
-//   RegionStoreManager::RemoveDeadBindings(), the symbol for s->session->p
-//   would incorrectly be pruned from the state after the call to
-//   rdar7347252_malloc1(), and would incorrectly result in a warning about
-//   passing a null pointer to rdar7347252_memcpy().
-//===----------------------------------------------------------------------===//
-
-struct rdar7347252_AA { char *p;};
-typedef struct {
- struct rdar7347252_AA *session;
- int t;
- char *q;
-} rdar7347252_SSL1;
-
-int rdar7347252_f(rdar7347252_SSL1 *s);
-char *rdar7347252_malloc1(int);
-char *rdar7347252_memcpy1(char *d, char *s, int n) __attribute__((nonnull (1,2)));
-
-int rdar7347252(rdar7347252_SSL1 *s) {
- rdar7347252_f(s);  // the SymbolicRegion of 's' is set a default binding of conjured symbol
- if (s->session->p == ((void*)0)) {
-   if ((s->session->p = rdar7347252_malloc1(10)) == ((void*)0)) {
-     return 0;
-   }
-   rdar7347252_memcpy1(s->session->p, "aa", 2); // no-warning
- }
- return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// PR 5316 - "crash when accessing field of lazy compound value"
-//  Previously this caused a crash at the MemberExpr '.chr' when loading
-//  a field value from a LazyCompoundVal
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int pr5316_wint_t;
-typedef pr5316_wint_t pr5316_REFRESH_CHAR;
-typedef struct {
-  pr5316_REFRESH_CHAR chr;
-}
-pr5316_REFRESH_ELEMENT;
-static void pr5316(pr5316_REFRESH_ELEMENT *dst, const pr5316_REFRESH_ELEMENT *src) {
-  while ((*dst++ = *src++).chr != L'\0')  ;
-}
-
-//===----------------------------------------------------------------------===//
-// Exercise creating ElementRegion with symbolic super region.
-//===----------------------------------------------------------------------===//
-void element_region_with_symbolic_superregion(int* p) {
-  int *x;
-  int a;
-  if (p[0] == 1)
-    x = &a;
-  if (p[0] == 1)
-    (void)*x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Test returning an out-of-bounds pointer (CWE-466)
-//===----------------------------------------------------------------------===//
-
-static int test_cwe466_return_outofbounds_pointer_a[10];
-int *test_cwe466_return_outofbounds_pointer() {
-  int *p = test_cwe466_return_outofbounds_pointer_a+10;
-  return p; // expected-warning{{Returned pointer value points outside the original object}}
-}
-
-//===----------------------------------------------------------------------===//
-// PR 3135 - Test case that shows that a variable may get invalidated when its
-// address is included in a structure that is passed-by-value to an unknown function.
-//===----------------------------------------------------------------------===//
-
-typedef struct { int *a; } pr3135_structure;
-int pr3135_bar(pr3135_structure *x);
-int pr3135() {
-  int x;
-  pr3135_structure y = { &x };
-  // the call to pr3135_bar may initialize x
-  if (pr3135_bar(&y) && x) // no-warning
-    return 1;
-  return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7403269> - Test that we handle compound initializers with
-// partially unspecified array values. Previously this caused a crash.
-//===----------------------------------------------------------------------===//
-
-typedef struct RDar7403269 {
-  unsigned x[10];
-  unsigned y;
-} RDar7403269;
-
-void rdar7403269() {
-  RDar7403269 z = { .y = 0 };
-  if (z.x[4] == 0)
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning  
-}
-
-typedef struct RDar7403269_b {
-  struct zorg { int w; int k; } x[10];
-  unsigned y;
-} RDar7403269_b;
-
-void rdar7403269_b() {
-  RDar7403269_b z = { .y = 0 };
-  if (z.x[5].w == 0)
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-
-void rdar7403269_b_pos() {
-  RDar7403269_b z = { .y = 0 };
-  if (z.x[5].w == 1)
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-}
-
-
-//===----------------------------------------------------------------------===//
-// Test that incrementing a non-null pointer results in a non-null pointer.
-// (<rdar://problem/7191542>)
-//===----------------------------------------------------------------------===//
-
-void test_increment_nonnull_rdar_7191542(const char *path) {
-  const char *alf = 0;
-  
-  for (;;) {
-    // When using basic-store, we get a null dereference here because we lose information
-    // about path after the pointer increment.
-    char c = *path++; // no-warning
-    if (c == 'a') {
-      alf = path;
-    }
-    
-    if (alf)
-      return;
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// Test that the store (implicitly) tracks values for doubles/floats that are
-// uninitialized (<rdar://problem/6811085>)
-//===----------------------------------------------------------------------===//
-
-double rdar_6811085(void) {
-  double u;
-  return u + 10; // expected-warning{{The left operand of '+' is a garbage value}}
-}
-
-//===----------------------------------------------------------------------===//
-// Path-sensitive tests for blocks.
-//===----------------------------------------------------------------------===//
-
-void indirect_block_call(void (^f)());
-
-int blocks_1(int *p, int z) {
-  __block int *q = 0;
-  void (^bar)() = ^{ q = p; };
-  
-  if (z == 1) {
-    // The call to 'bar' might cause 'q' to be invalidated.
-    bar();
-    *q = 0x1; // no-warning
-  }
-  else if (z == 2) {
-    // The function 'indirect_block_call' might invoke bar, thus causing
-    // 'q' to possibly be invalidated.
-    indirect_block_call(bar);
-    *q = 0x1; // no-warning
-  }
-  else {
-    *q = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-  }
-  return z;
-}
-
-int blocks_2(int *p, int z) {
-  int *q = 0;
-  void (^bar)(int **) = ^(int **r){ *r = p; };
-  
-  if (z) {
-    // The call to 'bar' might cause 'q' to be invalidated.
-    bar(&q);
-    *q = 0x1; // no-warning
-  }
-  else {
-    *q = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-  }
-  return z;
-}
-
-// Test that the value of 'x' is considered invalidated after the block
-// is passed as an argument to the message expression.
-typedef void (^RDar7582031CB)(void);
- at interface RDar7582031
-- rdar7582031:RDar7582031CB;
-- rdar7582031_b:RDar7582031CB;
- at end
-
-// Test with one block.
-unsigned rdar7582031(RDar7582031 *o) {
-  __block unsigned x;
-  [o rdar7582031:^{ x = 1; }];
-  return x; // no-warning
-}
-
-// Test with two blocks.
-unsigned long rdar7582031_b(RDar7582031 *o) {
-  __block unsigned y;
-  __block unsigned long x;
-  [o rdar7582031:^{ y = 1; }];
-  [o rdar7582031_b:^{ x = 1LL; }];
-  return x + (unsigned long) y; // no-warning
-}
-
-// Show we get an error when 'o' is null because the message
-// expression has no effect.
-unsigned long rdar7582031_b2(RDar7582031 *o) {
-  __block unsigned y;
-  __block unsigned long x;
-  if (o)
-    return 1;
-  [o rdar7582031:^{ y = 1; }];
-  [o rdar7582031_b:^{ x = 1LL; }];
-  return x + (unsigned long) y; // expected-warning{{The left operand of '+' is a garbage value}}
-}
-
-// Show that we handle static variables also getting invalidated.
-void rdar7582031_aux(void (^)(void));
-RDar7582031 *rdar7582031_aux_2();
-
-unsigned rdar7582031_static() {  
-  static RDar7582031 *o = 0;
-  rdar7582031_aux(^{ o = rdar7582031_aux_2(); });
-  
-  __block unsigned x;
-  [o rdar7582031:^{ x = 1; }];
-  return x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7462324> - Test that variables passed using __blocks
-//  are not treated as being uninitialized.
-//===----------------------------------------------------------------------===//
-
-typedef void (^RDar_7462324_Callback)(id obj);
-
- at interface RDar7462324
-- (void) foo:(id)target;
-- (void) foo_positive:(id)target;
-
- at end
-
- at implementation RDar7462324
-- (void) foo:(id)target {
-  __block RDar_7462324_Callback builder = ((void*) 0);
-  builder = ^(id object) {
-    if (object) {
-      builder(self); // no-warning
-    }
-  };
-  builder(target);
-}
-- (void) foo_positive:(id)target {
-  __block RDar_7462324_Callback builder = ((void*) 0);
-  builder = ^(id object) {
-    id x;
-    if (object) {
-      builder(x); // expected-warning{{Block call argument is an uninitialized value}}
-    }
-  };
-  builder(target);
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7468209> - Scanning for live variables within a block should
-//  not crash on variables passed by reference via __block.
-//===----------------------------------------------------------------------===//
-
-int rdar7468209_aux();
-void rdar7468209_aux_2();
-
-void rdar7468209() {
-  __block int x = 0;
-  ^{
-    x = rdar7468209_aux();
-    // We need a second statement so that 'x' would be removed from the store if it wasn't
-    // passed by reference.
-    rdar7468209_aux_2();
-  }();
-}
-
-//===----------------------------------------------------------------------===//
-// PR 5857 - Test loading an integer from a byte array that has also been
-//  reinterpreted to be loaded as a field.
-//===----------------------------------------------------------------------===//
-
-typedef struct { int x; } TestFieldLoad;
-int pr5857(char *src) {
-  TestFieldLoad *tfl = (TestFieldLoad *) (intptr_t) src;
-  int y = tfl->x;
-  long long *z = (long long *) (intptr_t) src;
-  long long w = 0;
-  int n = 0;
-  for (n = 0; n < y; ++n) {
-    // Previously we crashed analyzing this statement.
-    w = *z++;
-  }
-  return 1;
-}
-
-//===----------------------------------------------------------------------===//
-// PR 4358 - Without field-sensitivity, this code previously triggered
-//  a false positive that 'uninit' could be uninitialized at the call
-//  to pr4358_aux().
-//===----------------------------------------------------------------------===//
-
-struct pr4358 {
-  int bar;
-  int baz;
-};
-void pr4358_aux(int x);
-void pr4358(struct pr4358 *pnt) {
-  int uninit;
-  if (pnt->bar < 3) {
-    uninit = 1;
-  } else if (pnt->baz > 2) {
-    uninit = 3;
-  } else if (pnt->baz <= 2) {
-    uninit = 2;
-  }
-  pr4358_aux(uninit); // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7526777>
-// Test handling fields of values returned from function calls or
-// message expressions.
-//===----------------------------------------------------------------------===//
-
-typedef struct testReturn_rdar_7526777 {
-  int x;
-  int y;
-} testReturn_rdar_7526777;
-
- at interface TestReturnStruct_rdar_7526777
-- (testReturn_rdar_7526777) foo;
- at end
-
-int test_return_struct(TestReturnStruct_rdar_7526777 *x) {
-  return [x foo].x;
-}
-
-testReturn_rdar_7526777 test_return_struct_2_aux_rdar_7526777();
-
-int test_return_struct_2_rdar_7526777() {
-  return test_return_struct_2_aux_rdar_7526777().x;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7527292> Assertion failed: (Op == BinaryOperator::Add || 
-//                                             Op == BinaryOperator::Sub)
-// This test case previously triggered an assertion failure due to a discrepancy
-// been the loaded/stored value in the array
-//===----------------------------------------------------------------------===//
-
-_Bool OSAtomicCompareAndSwapPtrBarrier( void *__oldValue, void *__newValue, void * volatile *__theValue );
-
-void rdar_7527292() {
-  static id Cache7527292[32];
-  for (signed long idx = 0;
-       idx < 32;
-       idx++) {
-    id v = Cache7527292[idx];
-    if (v && OSAtomicCompareAndSwapPtrBarrier(v, ((void*)0), (void * volatile *)(Cache7527292 + idx))) { 
-    }
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7515938> - Handle initialization of incomplete arrays
-//  in structures using a compound value.  Previously this crashed.
-//===----------------------------------------------------------------------===//
-
-struct rdar_7515938 {
-  int x;
-  int y[];
-};
-
-const struct rdar_7515938 *rdar_7515938() {
-  static const struct rdar_7515938 z = { 0, { 1, 2 } };
-  if (z.y[0] != 1) {
-    int *p = 0;
-    *p = 0xDEADBEEF; // no-warning
-  }
-  return &z;
-}
-
-struct rdar_7515938_str {
-  int x;
-  char y[];
-};
-
-const struct rdar_7515938_str *rdar_7515938_str() {
-  static const struct rdar_7515938_str z = { 0, "hello" };
-  return &z;
-}
-
-//===----------------------------------------------------------------------===//
-// Assorted test cases from PR 4172.
-//===----------------------------------------------------------------------===//
-
-struct PR4172A_s { int *a; };
-
-void PR4172A_f2(struct PR4172A_s *p);
-
-int PR4172A_f1(void) {
-    struct PR4172A_s m;
-    int b[4];
-    m.a = b;
-    PR4172A_f2(&m);
-    return b[3]; // no-warning
-}
-
-struct PR4172B_s { int *a; };
-
-void PR4172B_f2(struct PR4172B_s *p);
-
-int PR4172B_f1(void) {
-    struct PR4172B_s m;
-    int x;
-    m.a = &x;
-    PR4172B_f2(&m);
-    return x; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Test invalidation of values in struct literals.
-//===----------------------------------------------------------------------===//
-
-struct s_rev96062 { int *x; int *y; };
-struct s_rev96062_nested { struct s_rev96062 z; };
-
-void test_a_rev96062_aux(struct s_rev96062 *s);
-void test_a_rev96062_aux2(struct s_rev96062_nested *s);
-
-int test_a_rev96062() {
-  int a, b;
-  struct s_rev96062 x = { &a, &b };
-  test_a_rev96062_aux(&x);
-  return a + b; // no-warning
-}
-int test_b_rev96062() {
-  int a, b;
-  struct s_rev96062 x = { &a, &b };
-  struct s_rev96062 z = x;
-  test_a_rev96062_aux(&z);
-  return a + b; // no-warning
-}
-int test_c_rev96062() {
-  int a, b;
-  struct s_rev96062 x = { &a, &b };
-  struct s_rev96062_nested w = { x };
-  struct s_rev96062_nested z = w;
-  test_a_rev96062_aux2(&z);
-  return a + b; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7242010> - The access to y[0] at the bottom previously
-//  was reported as an uninitialized value.
-//===----------------------------------------------------------------------===//
-
-char *rdar_7242010(int count, char **y) {
-  char **x = alloca((count + 4) * sizeof(*x));
-  x[0] = "hi";
-  x[1] = "there";
-  x[2] = "every";
-  x[3] = "body";
-  memcpy(x + 4, y, count * sizeof(*x));
-  y = x;
-  return y[0]; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7770737>
-//===----------------------------------------------------------------------===//
-
-struct rdar_7770737_s { intptr_t p; };
-void rdar_7770737_aux(struct rdar_7770737_s *p);
-int rdar_7770737(void)
-{ 
-  int x;
-
-  // Previously 'f' was not properly invalidated, causing the use of
-  // an uninitailized value below.
-  struct rdar_7770737_s f = { .p = (intptr_t)&x };
-  rdar_7770737_aux(&f);
-  return x; // no-warning
-}
-int rdar_7770737_pos(void)
-{
-  int x;
-  struct rdar_7770737_s f = { .p = (intptr_t)&x };
-  return x; // expected-warning{{Undefined or garbage value returned to caller}}
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling of the implicit 'isa' field.  For now we don't do anything
-// interesting.
-//===----------------------------------------------------------------------===//
-
-void pr6302(id x, Class y) {
-  // This previously crashed the analyzer (reported in PR 6302)
-  x->isa  = y; // expected-warning {{assignment to Objective-C's isa is deprecated in favor of object_setClass()}}
-}
-
-//===----------------------------------------------------------------------===//
-// Specially handle global variables that are declared constant.  In the
-// example below, this forces the loop to take exactly 2 iterations.
-//===----------------------------------------------------------------------===//
-
-const int pr6288_L_N = 2;
-void pr6288_(void) {
-  int x[2];
-  int *px[2];
-  int i;
-  for (i = 0; i < pr6288_L_N; i++)
-    px[i] = &x[i];
-  *(px[0]) = 0; // no-warning
-}
-
-void pr6288_pos(int z) {
-  int x[2];
-  int *px[2];
-  int i;
-  for (i = 0; i < z; i++)
-    px[i] = &x[i]; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-  *(px[0]) = 0; // expected-warning{{Dereference of undefined pointer value}}
-}
-
-void pr6288_b(void) {
-  const int L_N = 2;
-  int x[2];
-  int *px[2];
-  int i;
-  for (i = 0; i < L_N; i++)
-    px[i] = &x[i];
-  *(px[0]) = 0; // no-warning
-}
-
-// <rdar://problem/7817800> - A bug in RemoveDeadBindings was causing instance variable bindings
-//  to get prematurely pruned from the state.
- at interface Rdar7817800 {
-  char *x;
-}
-- (void) rdar7817800_baz;
- at end
-
-char *rdar7817800_foobar();
-void rdar7817800_qux(void*);
-
- at implementation Rdar7817800
-- (void) rdar7817800_baz {
-  if (x)
-    rdar7817800_qux(x);
-  x = rdar7817800_foobar();
-  // Previously this triggered a bogus null dereference warning.
-  x[1] = 'a'; // no-warning
-}
- at end
-
-// PR 6036 - This test case triggered a crash inside StoreManager::CastRegion because the size
-// of 'unsigned long (*)[0]' is 0.
-struct pr6036_a { int pr6036_b; };
-struct pr6036_c;
-void u132monitk (struct pr6036_c *pr6036_d) {
-  (void) ((struct pr6036_a *) (unsigned long (*)[0]) ((char *) pr6036_d - 1))->pr6036_b; // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
-}
-
-// <rdar://problem/7813989> - ?-expressions used as a base of a member expression should be treated as an lvalue
-typedef struct rdar7813989_NestedVal { int w; } rdar7813989_NestedVal;
-typedef struct rdar7813989_Val { rdar7813989_NestedVal nv; } rdar7813989_Val;
-
-int rdar7813989(int x, rdar7813989_Val *a, rdar7813989_Val *b) {
-  // This previously crashed with an assertion failure.
-  int z = (x ? a->nv : b->nv).w;
-  return z + 1;
-}
-
-// PR 6844 - Don't crash on vaarg expression.
-typedef __builtin_va_list va_list;
-void map(int srcID, ...) {
-  va_list ap;
-  int i;
-  for (i = 0; i < srcID; i++) {
-    int v = __builtin_va_arg(ap, int);
-  }
-}
-
-// PR 6854 - crash when casting symbolic memory address to a float
-// Handle casting from a symbolic region to a 'float'.  This isn't
-// really all that intelligent, but previously this caused a crash
-// in SimpleSValuator.
-void pr6854(void * arg) {
-  void * a = arg;
-  *(void**)a = arg;
-  float f = *(float*) a;
-}
-
-// <rdar://problem/8032791> False positive due to symbolic store not find
-//  value because of 'const' qualifier
-double rdar_8032791_2();
-double rdar_8032791_1() {
-   struct R8032791 { double x[2]; double y; }
-   data[3] = {
-     {{1.0, 3.0}, 3.0},  //  1   2   3
-     {{1.0, 1.0}, 0.0},  // 1 1 2 2 3 3
-     {{1.0, 3.0}, 1.0}   //    1   2   3
-   };
-
-   double x = 0.0;
-   for (unsigned i = 0 ; i < 3; i++) {
-     const struct R8032791 *p = &data[i];
-     x += p->y + rdar_8032791_2(); // no-warning
-   }
-   return x;
-}
-
-// PR 7450 - Handle pointer arithmetic with __builtin_alloca
-void pr_7450_aux(void *x);
-void pr_7450() {
-  void *p = __builtin_alloca(10);
-  // Don't crash when analyzing the following statement.
-  pr_7450_aux(p + 8);
-}
-
-// <rdar://problem/8243408> - Symbolicate struct values returned by value.
-struct s_rdar_8243408 { int x; };
-extern struct s_rdar_8243408 rdar_8243408_aux(void);
-void rdar_8243408(void) {
-  struct s_rdar_8243408 a = { 1 }, *b = 0;
-  while (a.x && !b)
-    a = rdar_8243408_aux();
-
-  // Previously there was a false error here with 'b' being null.
-  (void) (a.x && b->x); // no-warning
-
-  // Introduce a null deref to ensure we are checking this path.
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-}
-
-// <rdar://problem/8258814>
-int r8258814()
-{
-  int foo;
-  int * a = &foo;
-  a[0] = 10;
-  // Do not warn that the value of 'foo' is uninitialized.
-  return foo; // no-warning
-}
-
-// PR 8052 - Don't crash when reasoning about loads from a function address.\n
-typedef unsigned int __uint32_t;
-typedef unsigned long vm_offset_t;
-typedef __uint32_t pd_entry_t;
-typedef unsigned char u_char;
-typedef unsigned int u_int;
-typedef unsigned long u_long;
-extern int      bootMP_size;
-void            bootMP(void);
-static void 
-pr8052(u_int boot_addr)
-{
-    int             x;
-    int             size = *(int *) ((u_long) & bootMP_size);
-    u_char         *src = (u_char *) ((u_long) bootMP);
-    u_char         *dst = (u_char *) boot_addr + ((vm_offset_t) ((((((((1 <<
-12) / (sizeof(pd_entry_t))) - 1) - 1) - (260 - 2))) << 22) | ((0) << 12)));
-#ifdef TEST_64
-// expected-warning at -3 {{cast to 'u_char *' (aka 'unsigned char *') from smaller integer type 'u_int' (aka 'unsigned int')}}
-#endif
-    for (x = 0;
-         x < size;
-         ++x)
-        *dst++ = *src++;
-}
-
-// PR 8015 - don't return undefined values for arrays when using a valid
-// symbolic index
-int pr8015_A();
-void pr8015_B(const char *);
-
-void pr8015_C() {
-  int number = pr8015_A();
-  const char *numbers[] = { "zero" };    
-  if (number == 0) {
-      pr8015_B(numbers[number]); // no-warning
-  }
-}
-
-// Tests that we correctly handle that 'number' is perfectly constrained
-// after 'if (nunber == 0)', allowing us to resolve that
-// numbers[number] == numbers[0].
-void pr8015_D_FIXME() {
-  int number = pr8015_A();
-  const char *numbers[] = { "zero" };
-  if (number == 0) {
-    if (numbers[number] == numbers[0]) // expected-warning{{Both operands to '==' always have the same value}}
-      return;
-    // Unreachable.
-    int *p = 0;
-    *p = 0xDEADBEEF; // no-warnng
-  }
-}
-
-void pr8015_E() {
-  // Similar to pr8015_C, but number is allowed to be a valid range.
-  unsigned number = pr8015_A();
-  const char *numbers[] = { "zero", "one", "two" };
-  if (number < 3) {
-    pr8015_B(numbers[number]); // no-warning
-  }
-}
-
-void pr8015_F_FIXME() {
-  // Similar to pr8015_E, but like pr8015_D we check if the pointer
-  // is the same as one of the string literals.  The null dereference
-  // here is not feasible in practice, so this is a false positive.
-  int number = pr8015_A();
-  const char *numbers[] = { "zero", "one", "two" };
-  if (number < 3) {
-    const char *p = numbers[number];
-    if (p == numbers[0] || p == numbers[1] || p == numbers[2])
-      return;
-    int *q = 0;
-    *q = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-  }
-}
-
-// PR 8141.  Previously the statement expression in the for loop caused
-// the CFG builder to crash.
-struct list_pr8141
-{
-  struct list_pr8141 *tail;
-};
-
-struct list_pr8141 *
-pr8141 (void) {
-  struct list_pr8141 *items;
-  for (;; items = ({ do { } while (0); items->tail; })) // expected-warning{{Dereference of undefined pointer value}}
-    {
-    }
-}
-
-// Don't crash when building the CFG.
-void do_not_crash(int x) {
-  while (x - ({do {} while (0); x; })) {
-  }
-}
-
-// <rdar://problem/8424269> - Handle looking at the size of a VLA in
-// ArrayBoundChecker.  Nothing intelligent (yet); just don't crash.
-typedef struct RDar8424269_A {
-  int RDar8424269_C;
-} RDar8424269_A;
-static void RDar8424269_B(RDar8424269_A *p, unsigned char *RDar8424269_D,
-                          const unsigned char *RDar8424269_E, int RDar8424269_F,
-    int b_w, int b_h, int dx, int dy) {
-  int x, y, b, r, l;
-  unsigned char tmp2t[3][RDar8424269_F * (32 + 8)];
-  unsigned char *tmp2 = tmp2t[0];
-  if (p && !p->RDar8424269_C)
-    b = 15;
-  tmp2 = tmp2t[1];
-  if (b & 2) { // expected-warning{{The left operand of '&' is a garbage value}}
-    for (y = 0; y < b_h; y++) {
-      for (x = 0; x < b_w + 1; x++) {
-        int am = 0;
-        tmp2[x] = am;
-      }
-    }
-  }
-  tmp2 = tmp2t[2];
-}
-
-// <rdar://problem/8642434> - Handle transparent unions with the NonNullParamChecker.
-typedef union {
-  struct rdar_8642434_typeA *_dq;
-}
-rdar_8642434_typeB __attribute__((transparent_union));
-
-__attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__))
-void rdar_8642434_funcA(rdar_8642434_typeB object);
-
-void rdar_8642434_funcB(struct rdar_8642434_typeA *x, struct rdar_8642434_typeA *y) {
-  rdar_8642434_funcA(x);
-  if (!y)
-    rdar_8642434_funcA(y); // expected-warning{{Null pointer passed as an argument to a 'nonnull' parameter}}
-}
-
-// <rdar://problem/8848957> - Handle loads and stores from a symbolic index
-// into array without warning about an uninitialized value being returned.
-// While RegionStore can't fully reason about this example, it shouldn't
-// warn here either.
-typedef struct s_test_rdar8848957 {
-  int x, y, z;
-} s_test_rdar8848957;
-
-s_test_rdar8848957 foo_rdar8848957();
-int rdar8848957(int index) {
-  s_test_rdar8848957 vals[10];
-  vals[index] = foo_rdar8848957();
-  return vals[index].x; // no-warning
-}
-
-// PR 9049 - crash on symbolicating unions.  This test exists solely to
-// test that the analyzer doesn't crash.
-typedef struct pr9048_cdev *pr9048_cdev_t;
-typedef union pr9048_abstracted_disklabel { void *opaque; } pr9048_disklabel_t;
-struct pr9048_diskslice { pr9048_disklabel_t ds_label; };
-struct pr9048_diskslices {
-  int dss_secmult;
-  struct pr9048_diskslice dss_slices[16];
-};
-void pr9048(pr9048_cdev_t dev, struct pr9048_diskslices * ssp, unsigned int slice)
-{
-  pr9048_disklabel_t     lp;
-  struct pr9048_diskslice *sp;
-  sp = &ssp->dss_slices[slice];
-  if (ssp->dss_secmult == 1) {
-  } else if ((lp = sp->ds_label).opaque != ((void *) 0)) {
-  }
-}
-
-// Test Store reference counting in the presence of Lazy compound values.
-// This previously caused an infinite recursion.
-typedef struct {} Rdar_9103310_A;
-typedef struct Rdar_9103310_B Rdar_9103310_B_t;
-struct Rdar_9103310_B {
-  unsigned char           Rdar_9103310_C[101];
-};
-void Rdar_9103310_E(Rdar_9103310_A * x, struct Rdar_9103310_C * b) { // expected-warning {{declaration of 'struct Rdar_9103310_C' will not be visible outside of this function}}
-  char Rdar_9103310_D[4][4] = { "a", "b", "c", "d"};
-  int i;
-  Rdar_9103310_B_t *y = (Rdar_9103310_B_t *) x;
-  for (i = 0; i < 101; i++) {
-    Rdar_9103310_F(b, "%2d%s ", (y->Rdar_9103310_C[i]) / 4, Rdar_9103310_D[(y->Rdar_9103310_C[i]) % 4]); // expected-warning {{implicit declaration of function 'Rdar_9103310_F' is invalid in C99}}
-  }
-}
-
-// Test handling binding lazy compound values to a region and then have
-// specific elements have other bindings.
-int PR9455() {
-  char arr[4] = "000";
-  arr[0] = '1';
-  if (arr[1] == '0')
-    return 1;
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-  return 1;
-}
-int PR9455_2() {
-  char arr[4] = "000";
-  arr[0] = '1';
-  if (arr[1] == '0') {
-    int *p = 0;
-    *p = 0xDEADBEEF; // expected-warning {{null}}
-  }
-  return 1;
-}
-
-// Test initialization of substructs via lazy compound values.
-typedef float RDar9163742_Float;
-
-typedef struct {
-    RDar9163742_Float x, y;
-} RDar9163742_Point;
-typedef struct {
-    RDar9163742_Float width, height;
-} RDar9163742_Size;
-typedef struct {
-    RDar9163742_Point origin;
-    RDar9163742_Size size;
-} RDar9163742_Rect;
-
-extern  RDar9163742_Rect RDar9163742_RectIntegral(RDar9163742_Rect);
-
-RDar9163742_Rect RDar9163742_IntegralRect(RDar9163742_Rect frame)
-{
-    RDar9163742_Rect integralFrame;
-    integralFrame.origin.x = frame.origin.x;
-    integralFrame.origin.y = frame.origin.y;
-    integralFrame.size = frame.size;
-    return RDar9163742_RectIntegral(integralFrame); // no-warning; all fields initialized
-}
-
-// Test correct handling of prefix '--' operator.
-void rdar9444714() {
-  int   x;
-  char    str[ 32 ];
-  char    buf[ 32 ];
-  char *  dst;
-  char *  ptr;
-
-  x = 1234;
-  dst = str;
-  ptr = buf;
-  do
-  {
-    *ptr++ = (char)( '0' + ( x % 10 ) );
-    x /= 10;  
-  } while( x > 0 );
-
-  while( ptr > buf )
-  {
-    *dst++ = *( --( ptr ) ); // no-warning
-  }
-  *dst = '\0';
-}
-
-// Test handling symbolic elements with field accesses.
-// <rdar://problem/11127008>
-typedef struct {
-    unsigned value;
-} RDar11127008;
-
-signed rdar_11127008_index();
-
-static unsigned rdar_11127008(void) {
-    RDar11127008 values[] = {{.value = 0}, {.value = 1}};
-    signed index = rdar_11127008_index();
-    if (index < 0) return 0;
-    if (index >= 2) return 0;
-    return values[index].value;
-}
-
-// Test handling invalidating arrays passed to a block via captured
-// pointer value (not a __block variable).
-typedef void (^radar11125868_cb)(int *, unsigned);
-
-void rdar11125868_aux(radar11125868_cb cb);
-
-int rdar11125868() {
-  int integersStackArray[1];
-  int *integers = integersStackArray;
-  rdar11125868_aux(^(int *integerValue, unsigned index) {
-      integers[index] = integerValue[index];
-    });
-  return integers[0] == 0; // no-warning
-}
-
-int rdar11125868_positive() {
-  int integersStackArray[1];
-  int *integers = integersStackArray;
-  return integers[0] == 0; // expected-warning {{he left operand of '==' is a}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps-region-store.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify -fblocks   -analyzer-opt-analyze-nested-blocks %s
-// expected-no-diagnostics
-
-//===------------------------------------------------------------------------------------------===//
-// This files tests our path-sensitive handling of Objective-c++ files.
-//===------------------------------------------------------------------------------------------===//
-
-// Test basic handling of references.
-char &test1_aux();
-char *test1() {
-  return &test1_aux();
-}
-
-// Test test1_aux() evaluates to char &.
-char test1_as_rvalue() {
-  return test1_aux();
-}
-
-// Test basic handling of references with Objective-C classes.
- at interface Test1
-- (char&) foo;
- at end
-
-char* Test1_harness(Test1 *p) {
-  return &[p foo];
-}
-
-char Test1_harness_b(Test1 *p) {
-  return [p foo];
-}
-
-// Basic test of C++ references with Objective-C pointers.
- at interface RDar10569024
- at property(readonly) int x;
- at end
-
-typedef RDar10569024* RDar10569024Ref;
-
-void rdar10569024_aux(RDar10569024Ref o);
-
-int rdar10569024(id p, id collection) {
-  for (id elem in collection) {
-    const RDar10569024Ref &o = (RDar10569024Ref) elem;
-    rdar10569024_aux(o); // no-warning
-    return o.x; // no-warning
-  }
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,177 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -disable-free -analyzer-eagerly-assume -analyzer-checker=core -analyzer-checker=deadcode -verify %s
-
-int size_rdar9373039 = 1;
-int foo_rdar9373039(const char *);
-
-int rdar93730392() {
-  int x;
-  int j = 0;
-
-  for (int i = 0 ; i < size_rdar9373039 ; ++i)
-    x = 1;
-    
-  int extra = (2 + foo_rdar9373039 ("Clang") + ((4 - ((unsigned int) (2 + foo_rdar9373039 ("Clang")) % 4)) % 4)) + (2 + foo_rdar9373039 ("1.0") + ((4 - ((unsigned int) (2 + foo_rdar9373039 ("1.0")) % 4)) % 4)); // expected-warning {{never read}}
-
-  for (int i = 0 ; i < size_rdar9373039 ; ++i)
-    j += x; // expected-warning {{garbage}}
-
-  return j;
-}
-
-
-int PR8962 (int *t) {
-  // This should look through the __extension__ no-op.
-  if (__extension__ (t)) return 0;
-  return *t; // expected-warning {{null pointer}}
-}
-
-int PR8962_b (int *t) {
-  // This should still ignore the nested casts
-  // which aren't handled by a single IgnoreParens()
-  if (((int)((int)t))) return 0;
-  return *t; // expected-warning {{null pointer}}
-}
-
-int PR8962_c (int *t) {
-  // If the last element in a StmtExpr was a ParenExpr, it's still live
-  if (({ (t ? (_Bool)0 : (_Bool)1); })) return 0;
-  return *t; // no-warning
-}
-
-int PR8962_d (int *t) {
-  // If the last element in a StmtExpr is an __extension__, it's still live
-  if (({ __extension__(t ? (_Bool)0 : (_Bool)1); })) return 0;
-  return *t; // no-warning
-}
-
-int PR8962_e (int *t) {
-  // Redundant casts can mess things up!
-  // Environment used to skip through NoOp casts, but LiveVariables didn't!
-  if (({ (t ? (int)(int)0L : (int)(int)1L); })) return 0;
-  return *t; // no-warning
-}
-
-int PR8962_f (int *t) {
-  // The StmtExpr isn't a block-level expression here,
-  // the __extension__ is. But the value should be attached to the StmtExpr
-  // anyway. Make sure the block-level check is /before/ IgnoreParens.
-  if ( __extension__({
-    _Bool r;
-    if (t) r = 0;
-    else r = 1;
-    r;
-  }) ) return 0;
-  return *t; // no-warning
-}
-
-// This previously crashed logic in the analyzer engine when evaluating locations.
-void rdar10308201_aux(unsigned val);
-void rdar10308201 (int valA, void *valB, unsigned valC) {
-  unsigned actual_base, lines;
-  if (valC == 0) {
-    actual_base = (unsigned)valB;
-    for (;;) {
-      if (valA & (1<<0))
-        rdar10308201_aux(actual_base);
-    }
-  }
-}
-
-typedef struct Struct103 {
-  unsigned i;
-} Struct103;
-typedef unsigned int size_t;
-void __my_memset_chk(char*, int, size_t);
-static int radar10367606(int t) {
-  Struct103 overall;
-  ((__builtin_object_size ((char *) &overall, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) &overall, 0, sizeof(Struct103), __builtin_object_size ((char *) &overall, 0)) : __my_memset_chk ((char *) &overall, 0, sizeof(Struct103)));
-  return 0;
-}
-
-/* Caching out on a sink node. */
-extern int fooR10376675();
-extern int* bazR10376675();
-extern int nR10376675;
-void barR10376675(int *x) {
-  int *pm;
-  if (nR10376675 * 2) {
-    int *pk  = bazR10376675();
-    pm = pk; //expected-warning {{never read}}
-  }
-  do {
-    *x = fooR10376675();
-  } while (0);
-}
-
-// Test accesses to wide character strings doesn't break the analyzer.
-typedef int wchar_t;
-struct rdar10385775 {
-    wchar_t *name;
-};
-void RDar10385775(struct rdar10385775* p) {
-    p->name = L"a";
-}
-
-// Test double loop of array and array literals.  Previously this
-// resulted in a false positive uninitailized value warning.
-void rdar10686586() {
-    int array1[] = { 1, 2, 3, 0 };
-    int array2[] = { 1, 2, 3, 0 };
-    int *array[] = { array1, array2 };
-    int sum = 0;
-    for (int i = 0; i < 2; i++) {
-        for (int j = 0; j < 4; j++) {
-            sum += array[i][j]; // no-warning
-        }
-    }
-}
-
-// This example tests CFG handling of '||' nested in a ternary expression,
-// and seeing that the analyzer doesn't crash.
-int isctype(char c, unsigned long f)
-{
-  return (c < 1 || c > 10) ? 0 : !!(c & f);
-}
-
-// Test that symbolic array offsets are modeled conservatively.
-// This was triggering a false "use of uninitialized value" warning.
-void rdar_12075238__aux(unsigned long y);
-int rdar_12075238_(unsigned long count) {
-  if ((count < 3) || (count > 6))
-    return 0;
-	
-  unsigned long array[6];
-  unsigned long i = 0;
-  for (; i <= count - 2; i++)
-  {
-	  array[i] = i;
-  }
-  array[count - 1] = i;
-  rdar_12075238__aux(array[2]); // no-warning
-  return 0;
-}
-
-// Test that we handle an uninitialized value within a logical expression.
-void PR14635(int *p) {
-  int a = 0, b;
-  *p = a || b; // expected-warning {{Assigned value is garbage or undefined}}
-}
-
-// Test handling floating point values with unary '!'.
-int PR14634(int x) {
-  double y = (double)x;
-  return !y;
-}
-
-
-// PR15684: If a checker generates a sink node after generating a regular node
-// and no state changes between the two, graph trimming would consider the two
-// the same node, forming a loop.
-struct PR15684 {
-  void (*callback)(int);
-};
-void sinkAfterRegularNode(struct PR15684 *context) {
-  int uninitialized;
-  context->callback(uninitialized); // expected-warning {{uninitialized}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/misc-ps.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1373 +0,0 @@
-// NOTE: Use '-fobjc-gc' to test the analysis being run twice, and multiple reports are not issued.
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,alpha.deadcode.IdempotentOperations,alpha.core,osx.cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,alpha.deadcode.IdempotentOperations,alpha.core,osx.cocoa.AtSync -analyzer-store=region -analyzer-constraints=range -verify -fblocks -Wno-unreachable-code -Wno-null-dereference -Wno-objc-root-class %s
-
-#ifndef __clang_analyzer__
-#error __clang_analyzer__ not defined
-#endif
-
-typedef struct objc_ivar *Ivar;
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSArray, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)autorelease;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)allocWithZone:(NSZone *)zone;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end extern NSString * const NSBundleDidLoadNotification;
- at interface NSValue : NSObject <NSCopying, NSCoding>
-- (void)getValue:(void *)value;
- at end
- at interface NSNumber : NSValue
-- (char)charValue;
-- (id)initWithBool:(BOOL)value;
- at end
- at interface NSAssertionHandler : NSObject {}
-+ (NSAssertionHandler *)currentHandler;
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
- at end
-extern NSString * const NSConnectionReplyMode;
-typedef float CGFloat;
-typedef struct _NSPoint {
-    CGFloat x;
-    CGFloat y;
-} NSPoint;
-typedef struct _NSSize {
-    CGFloat width;
-    CGFloat height;
-} NSSize;
-typedef struct _NSRect {
-    NSPoint origin;
-    NSSize size;
-} NSRect;
-
-// Reduced test case from crash in <rdar://problem/6253157>
- at interface A @end
- at implementation A
-- (void)foo:(void (^)(NSObject *x))block {
-  if (!((block != ((void *)0)))) {}
-}
- at end
-
-// Reduced test case from crash in PR 2796;
-//  http://llvm.org/bugs/show_bug.cgi?id=2796
-
-unsigned foo(unsigned x) { return __alignof__((x)) + sizeof(x); }
-
-// Improvement to path-sensitivity involving compound assignments.
-//  Addresses false positive in <rdar://problem/6268365>
-//
-
-unsigned r6268365Aux();
-
-void r6268365() {
-  unsigned x = 0;
-  x &= r6268365Aux(); // expected-warning{{The left operand to '&=' is always 0}}
-  unsigned j = 0;
-    
-  if (x == 0) ++j;
-  if (x == 0) x = x / j; // expected-warning{{Assigned value is always the same as the existing value}} expected-warning{{The right operand to '/' is always 1}}
-}
-
-void divzeroassume(unsigned x, unsigned j) {  
-  x /= j;  
-  if (j == 0) x /= 0;     // no static-analyzer warning    expected-warning {{division by zero is undefined}}
-  if (j == 0) x /= j;     // no static-analyzer warning
-  if (j == 0) x = x / 0;  // no static-analyzer warning    expected-warning {{division by zero is undefined}}
-}
-
-void divzeroassumeB(unsigned x, unsigned j) {  
-  x = x / j;  
-  if (j == 0) x /= 0;     // no static-analyzer warning     expected-warning {{division by zero is undefined}}
-  if (j == 0) x /= j;     // no static-analyzer warning
-  if (j == 0) x = x / 0;  // no static-analyzer warning     expected-warning {{division by zero is undefined}}
-}
-
-// InitListExpr processing
-
-typedef float __m128 __attribute__((__vector_size__(16), __may_alias__));
-__m128 return128() {
-  // This compound literal has a Vector type.  We currently just
-  // return UnknownVal.
-  return __extension__(__m128) { 0.0f, 0.0f, 0.0f, 0.0f };
-}
-
-typedef long long __v2di __attribute__ ((__vector_size__ (16)));
-typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
-__m128i vec128i(long long __q1, long long __q0) {
-  // This compound literal returns true for both isVectorType() and 
-  // isIntegerType().
-  return __extension__ (__m128i)(__v2di){ __q0, __q1 };
-}
-
-// Zero-sized VLAs.
-void check_zero_sized_VLA(int x) {
-  if (x)
-    return;
-
-  int vla[x]; // expected-warning{{Declared variable-length array (VLA) has zero size}}
-}
-
-void check_uninit_sized_VLA() {
-  int x;
-  int vla[x]; // expected-warning{{Declared variable-length array (VLA) uses a garbage value as its size}}
-}
-
-// sizeof(void)
-// - Tests a regression reported in PR 3211: http://llvm.org/bugs/show_bug.cgi?id=3211
-void handle_sizeof_void(unsigned flag) {
-  int* p = 0;
-
-  if (flag) {
-    if (sizeof(void) == 1)
-      return;
-    // Infeasible.
-    *p = 1; // no-warning
-  }
-  
-  void* q;
-  
-  if (!flag) {
-    if (sizeof(*q) == 1)
-      return;
-    // Infeasibe.
-    *p = 1; // no-warning
-  }
-    
-  // Infeasible.
-  *p = 1; // no-warning
-}
-
-// check deference of undefined values
-void check_deref_undef(void) {
-  int *p;
-  *p = 0xDEADBEEF; // expected-warning{{Dereference of undefined pointer value}}
-}
-
-// PR 3422
-void pr3422_helper(char *p);
-void pr3422() {
-  char buf[100];
-  char *q = &buf[10];
-  pr3422_helper(&q[1]);
-}
-
-// PR 3543 (handle empty statement expressions)
-void pr_3543(void) {
-  ({});
-}
-
-// <rdar://problem/6611677>
-// This test case test the use of a vector type within an array subscript
-// expression.
-typedef long long __a64vector __attribute__((__vector_size__(8)));
-typedef long long __a128vector __attribute__((__vector_size__(16)));
-static inline __a64vector __attribute__((__always_inline__, __nodebug__))  
-my_test_mm_movepi64_pi64(__a128vector a) {
-  return (__a64vector)a[0];
-}
-
-// Test basic tracking of ivars associated with 'self'.
- at interface SelfIvarTest : NSObject {
-  int flag;
-}
-- (void)test_self_tracking;
- at end
-
- at implementation SelfIvarTest
-- (void)test_self_tracking {
-  char *p = 0;
-  char c;
-
-  if (flag)
-    p = "hello";
-
-  if (flag)
-    c = *p; // no-warning
-}
- at end
-
-// PR 3770
-char pr3770(int x) {
-  int y = x & 0x2;
-  char *p = 0;
-  if (y == 1)
-    p = "hello";
-
-  if (y == 1)
-    return p[0]; // no-warning
-    
-  return 'a';
-}
-
-// PR 3772
-// - We just want to test that this doesn't crash the analyzer.
-typedef struct st ST;
-struct st { char *name; };
-extern ST *Cur_Pu;
-
-void pr3772(void)
-{
-  static ST *last_Cur_Pu;
-  if (last_Cur_Pu == Cur_Pu) {
-    return;
-  } 
-}
-
-// PR 3780 - This tests that StmtIterator isn't broken for VLAs in DeclGroups.
-void pr3780(int sz) { typedef double MAT[sz][sz]; }
-
-// <rdar://problem/6695527> - Test that we don't symbolicate doubles before
-// we are ready to do something with them.
-int rdar6695527(double x) {
-  if (!x) { return 0; }
-  return 1;
-}
-
-// <rdar://problem/6708148> - Test that we properly invalidate structs
-//  passed-by-reference to a function.
-void pr6708148_invalidate(NSRect *x);
-void pr6708148_use(NSRect x);
-void pr6708148_test(void) {
-  NSRect x;
-  pr6708148_invalidate(&x);
-  pr6708148_use(x); // no-warning
-}
-
-// Handle both kinds of noreturn attributes for pruning paths.
-void rdar_6777003_noret() __attribute__((noreturn));
-void rdar_6777003_analyzer_noret() __attribute__((analyzer_noreturn));
-
-void rdar_6777003(int x) {
-  int *p = 0;
-  
-  if (x == 1) {
-    rdar_6777003_noret();
-    *p = 1; // no-warning;    
-  }
-  
-  if (x == 2) {
-    rdar_6777003_analyzer_noret();
-    *p = 1; // no-warning;
-  }
-  
-  *p = 1; // expected-warning{{Dereference of null pointer}}  
-}
-
-// Check that the pointer-to-conts arguments do not get invalidated by Obj C 
-// interfaces. radar://10595327
-int rdar_10595327(char *str) {
-  char fl = str[0]; 
-  int *p = 0;
-  NSString *s = [NSString stringWithUTF8String:str];
-  if (str[0] != fl)
-      return *p; // no-warning
-  return 0;
-}
-
-// For pointer arithmetic, --/++ should be treated as preserving non-nullness,
-// regardless of how well the underlying StoreManager reasons about pointer
-// arithmetic.
-// <rdar://problem/6777209>
-void rdar_6777209(char *p) {
-  if (p == 0)
-    return;
-  
-  ++p;
-  
-  // This branch should always be infeasible.
-  if (p == 0)
-    *p = 'c'; // no-warning
-}
-
-// PR 4033.  A symbolic 'void *' pointer can be used as the address for a
-// computed goto.
-typedef void *Opcode;
-Opcode pr_4033_getOpcode();
-void pr_4033(void) {
-  void *lbl = &&next_opcode;
-next_opcode:
-  {
-    Opcode op = pr_4033_getOpcode();
-    if (op) goto *op;
-  }
-}
-
-// Test invalidating pointers-to-pointers with slightly different types.  This
-// example came from a recent false positive due to a regression where the
-// branch condition was falsely reported as being uninitialized.
-void invalidate_by_ref(char **x);
-int test_invalidate_by_ref() {
-  unsigned short y;
-  invalidate_by_ref((char**) &y);
-  if (y) // no-warning
-    return 1;
-  return 0;  
-}
-
-// Test for <rdar://problem/7027684>.  This just tests that the CFG is
-// constructed correctly.  Previously, the successor block of the entrance
-// was the block containing the merge for '?', which would trigger an
-// assertion failure.
-int rdar_7027684_aux();
-int rdar_7027684_aux_2() __attribute__((noreturn));
-void rdar_7027684(int x, int y) {
-  {}; // this empty compound statement is critical.
-  (rdar_7027684_aux() ? rdar_7027684_aux_2() : (void) 0);
-}
-
-// Test that we handle casts of string literals to arbitrary types.
-unsigned const char *string_literal_test1() {
-  return (const unsigned char*) "hello";
-}
-
-const float *string_literal_test2() {
-  return (const float*) "hello";
-}
-
-// Test that we handle casts *from* incomplete struct types.
-extern const struct _FooAssertStruct _cmd;
-void test_cast_from_incomplete_struct_aux(volatile const void *x);
-void test_cast_from_incomplete_struct() {
-  test_cast_from_incomplete_struct_aux(&_cmd);
-}
-
-// Test for <rdar://problem/7034511> 
-//  "ValueManager::makeIntVal(uint64_t X, QualType T) should return a 'Loc' 
-//   when 'T' is a pointer"
-//
-// Previously this case would crash.
-void test_rdar_7034511(NSArray *y) {
-  NSObject *x;
-  for (x in y) {}
-  if (x == ((void*) 0)) {}
-}
-
-// Handle casts of function pointers (CodeTextRegions) to arbitrary pointer
-// types. This was previously causing a crash in CastRegion.
-void handle_funcptr_voidptr_casts() {
-  void **ptr;
-  typedef void *PVOID;
-  typedef void *PCHAR;  
-  typedef long INT_PTR, *PINT_PTR;
-  typedef INT_PTR (*FARPROC)();
-  FARPROC handle_funcptr_voidptr_casts_aux();
-  PVOID handle_funcptr_voidptr_casts_aux_2(PVOID volatile *x);
-  PVOID handle_funcptr_voidptr_casts_aux_3(PCHAR volatile *x);  
-  
-  ptr = (void**) handle_funcptr_voidptr_casts_aux();
-  handle_funcptr_voidptr_casts_aux_2(ptr);
-  handle_funcptr_voidptr_casts_aux_3(ptr);
-}
-
-// RegionStore::Retrieve previously crashed on this example.  This example
-// was previously in the test file 'xfail_regionstore_wine_crash.c'.
-void testA() {
-  long x = 0;
-  char *y = (char *) &x;
-  if (!*y)
-    return;
-}
-
-// RegionStoreManager previously crashed on this example.  The problem is that
-// the value bound to the field of b->grue after the call to testB_aux is
-// a symbolic region.  The second '*__gruep__' involves performing a load
-// from a 'int*' that really is a 'void**'.  The loaded location must be
-// implicitly converted to an integer that wraps a location.  Previosly we would
-// get a crash here due to an assertion failure.
-typedef struct _BStruct { void *grue; } BStruct;
-void testB_aux(void *ptr);
-void testB(BStruct *b) {
-  {
-    int *__gruep__ = ((int *)&((b)->grue));
-    int __gruev__ = *__gruep__;
-    testB_aux(__gruep__);
-  }
-  {
-    int *__gruep__ = ((int *)&((b)->grue));
-    int __gruev__ = *__gruep__;
-    if (~0 != __gruev__) {}
-  }
-}
-
-void test_trivial_symbolic_comparison(int *x) {
-  int test_trivial_symbolic_comparison_aux();
-  int a = test_trivial_symbolic_comparison_aux();
-  int b = a;
-  if (a != b) { // expected-warning{{Both operands to '!=' always have the same value}}
-    int *p = 0;
-    *p = 0xDEADBEEF;     // no-warning
-  }
-  
-  a = a == 1;
-  b = b == 1;
-  if (a != b) { // expected-warning{{Both operands to '!=' always have the same value}}
-    int *p = 0;
-    *p = 0xDEADBEEF;     // no-warning
-  }
-}
-
-// Test for:
-//  <rdar://problem/7062158> false positive null dereference due to
-//   BasicStoreManager not tracking *static* globals
-//
-// This just tests the proper tracking of symbolic values for globals (both 
-// static and non-static).
-//
-static int* x_rdar_7062158;
-void rdar_7062158() {
-  int *current = x_rdar_7062158;
-  if (current == x_rdar_7062158)
-    return;
-    
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning  
-}
-
-int* x_rdar_7062158_2;
-void rdar_7062158_2() {
-  int *current = x_rdar_7062158_2;
-  if (current == x_rdar_7062158_2)
-    return;
-    
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning  
-}
-
-// This test reproduces a case for a crash when analyzing ClamAV using
-// RegionStoreManager (the crash doesn't exhibit in BasicStoreManager because
-// it isn't doing anything smart about arrays).  The problem is that on the
-// second line, 'p = &p[i]', p is assigned an ElementRegion whose index
-// is a 16-bit integer.  On the third line, a new ElementRegion is created
-// based on the previous region, but there the region uses a 32-bit integer,
-// resulting in a clash of values (an assertion failure at best).  We resolve
-// this problem by implicitly converting index values to 'int' when the
-// ElementRegion is created.
-unsigned char test_array_index_bitwidth(const unsigned char *p) {
-  unsigned short i = 0;
-  for (i = 0; i < 2; i++) p = &p[i];
-  return p[i+1];
-}
-
-// This case tests that CastRegion handles casts involving BlockPointerTypes.
-// It should not crash.
-void test_block_cast() {
-  id test_block_cast_aux();
-  (void (^)(void *))test_block_cast_aux(); // expected-warning{{expression result unused}}
-}
-
-int OSAtomicCompareAndSwap32Barrier();
-
-// Test comparison of 'id' instance variable to a null void* constant after
-// performing an OSAtomicCompareAndSwap32Barrier.
-// This previously was a crash in RegionStoreManager.
- at interface TestIdNull {
-  id x;
-}
--(int)foo;
- at end
- at implementation TestIdNull
--(int)foo {
-  OSAtomicCompareAndSwap32Barrier(0, (signed)2, (signed*)&x);  
-  if (x == (void*) 0) { return 0; }
-  return 1;
-}
- at end
-
-// Do not crash when performing compare and swap on symbolic values.
-typedef int int32_t;
-typedef int int32;
-typedef int32 Atomic32;
-int OSAtomicCompareAndSwap32( int32_t __oldValue, int32_t __newValue, volatile int32_t *__theValue);
-void radar11390991_NoBarrier_CompareAndSwap(volatile Atomic32 *ptr,
-                              Atomic32 old_value,
-                              Atomic32 new_value) {
-  OSAtomicCompareAndSwap32(old_value, new_value, ptr);
-}
-
-// PR 4594 - This was a crash when handling casts in SimpleSValuator.
-void PR4594() {
-  char *buf[1];
-  char **foo = buf;
-  *foo = "test";
-}
-
-// Test invalidation logic where an integer is casted to an array with a
-// different sign and then invalidated.
-void test_invalidate_cast_int() {
-  void test_invalidate_cast_int_aux(unsigned *i);
-  signed i;  
-  test_invalidate_cast_int_aux((unsigned*) &i);
-  if (i < 0)
-    return;
-}
-
-int ivar_getOffset();
-
-// Reduced from a crash involving the cast of an Objective-C symbolic region to
-// 'char *'
-static NSNumber *test_ivar_offset(id self, SEL _cmd, Ivar inIvar) {
-  return [[[NSNumber allocWithZone:((void*)0)] initWithBool:*(_Bool *)((char *)self + ivar_getOffset(inIvar))] autorelease];
-}
-
-// Reduced from a crash in StoreManager::CastRegion involving a divide-by-zero.
-// This resulted from not properly handling region casts to 'const void*'.
-void test_cast_const_voidptr() {
-  char x[10];
-  char *p = &x[1];
-  const void* q = p;
-}
-
-// Reduced from a crash when analyzing Wine.  This test handles loads from
-// function addresses.
-typedef long (*FARPROC)();
-FARPROC test_load_func(FARPROC origfun) {
-  if (!*(unsigned char*) origfun)
-    return origfun;
-  return 0;
-}
-
-// Test passing-by-value an initialized struct variable.
-struct test_pass_val {
-  int x;
-  int y;
-};
-void test_pass_val_aux(struct test_pass_val s);
-void test_pass_val() {
-  struct test_pass_val s;
-  s.x = 1;
-  s.y = 2;
-  test_pass_val_aux(s);
-}
-
-// This is a reduced test case of a false positive that previously appeared
-// in RegionStoreManager.  Previously the array access resulted in dereferencing
-// an undefined value.
-int test_array_compound(int *q, int *r, int *z) {
-  int *array[] = { q, r, z };
-  int j = 0;
-  for (unsigned i = 0; i < 3 ; ++i)
-    if (*array[i]) ++j; // no-warning
-  return j;
-}
-
-// symbolic value stored in 'x' wouldn't be implicitly casted to a signed value
-// during the comparison.
-int rdar_7124210(unsigned int x) {
-  enum { SOME_CONSTANT = 123 };
-  int compare = ((signed) SOME_CONSTANT) == *((signed *) &x);
-  return compare ? 0 : 1; // Forces the evaluation of the symbolic constraint.
-}
-
-void pr4781(unsigned long *raw1) {
-  unsigned long *cook, *raw0;
-  unsigned long dough[32];
-  int i;
-  cook = dough;
-  for( i = 0; i < 16; i++, raw1++ ) {
-    raw0 = raw1++;
-    *cook = (*raw0 & 0x00fc0000L) << 6;
-    *cook |= (*raw0 & 0x00000fc0L) << 10;
-  }
-}
-
-// <rdar://problem/7185647> - 'self' should be treated as being non-null
-// upon entry to an objective-c method.
- at interface RDar7185647
-- (id)foo;
- at end
- at implementation RDar7185647
-- (id) foo {
-  if (self)
-    return self;
-  *((volatile int *) 0x0) = 0xDEADBEEF; // no-warning
-  return self;
-}
- at end
-
-// Test reasoning of __builtin_offsetof;
-struct test_offsetof_A {
-  int x;
-  int y;
-};
-struct test_offsetof_B {
-  int w;
-  int z;
-};
-void test_offsetof_1() {
-  if (__builtin_offsetof(struct test_offsetof_A, x) ==
-      __builtin_offsetof(struct test_offsetof_B, w))
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-void test_offsetof_2() {
-  if (__builtin_offsetof(struct test_offsetof_A, y) ==
-      __builtin_offsetof(struct test_offsetof_B, z))
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-void test_offsetof_3() {
-  if (__builtin_offsetof(struct test_offsetof_A, y) -
-      __builtin_offsetof(struct test_offsetof_A, x)
-      ==
-      __builtin_offsetof(struct test_offsetof_B, z) -
-      __builtin_offsetof(struct test_offsetof_B, w))
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-void test_offsetof_4() {
-  if (__builtin_offsetof(struct test_offsetof_A, y) ==
-      __builtin_offsetof(struct test_offsetof_B, w))
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-}
-
-// <rdar://problem/6829164> "nil receiver" false positive: make tracking 
-// of the MemRegion for 'self' path-sensitive
- at interface RDar6829164 : NSObject {
-  double x; int y;
-}
-- (id) init;
- at end
-
-id rdar_6829164_1();
-double rdar_6829164_2();
-
- at implementation RDar6829164
-- (id) init {
-  if((self = [super init]) != 0) {
-    id z = rdar_6829164_1();
-    y = (z != 0);
-    if (y)
-      x = rdar_6829164_2();
-  }
-  return self;
-}
- at end
-
-// <rdar://problem/7242015> - Invalidate values passed-by-reference
-// to functions when the pointer to the value is passed as an integer.
-void test_7242015_aux(unsigned long);
-int rdar_7242015() {
-  int x;
-  test_7242015_aux((unsigned long) &x); // no-warning
-  return x; // Previously we return and uninitialized value when
-            // using RegionStore.
-}
-
-// <rdar://problem/7242006> [RegionStore] compound literal assignment with
-//  floats not honored
-CGFloat rdar7242006(CGFloat x) {
-  NSSize y = (NSSize){x, 10};
-  return y.width; // no-warning
-}
-
-// PR 4988 - This test exhibits a case where a function can be referenced
-//  when not explicitly used in an "lvalue" context (as far as the analyzer is
-//  concerned). This previously triggered a crash due to an invalid assertion.
-void pr_4988(void) {
-  pr_4988; // expected-warning{{expression result unused}}
-}
-
-// <rdar://problem/7152418> - A 'signed char' is used as a flag, which is
-//  implicitly converted to an int.
-void *rdar7152418_bar();
- at interface RDar7152418 {
-  signed char x;
-}
--(char)foo;
- at end;
- at implementation RDar7152418
--(char)foo {
-  char *p = 0;
-  void *result = 0;
-  if (x) {
-    result = rdar7152418_bar();
-    p = "hello";
-  }
-  if (!result) {
-    result = rdar7152418_bar();
-    if (result && x)
-      return *p; // no-warning
-  }
-  return 1;
-}
-
-//===----------------------------------------------------------------------===//
-// Test constant-folding of symbolic values, automatically handling type
-// conversions of the symbol as necessary.
-//===----------------------------------------------------------------------===//
-
-// Previously this would crash once we started eagerly evaluating symbols whose 
-// values were constrained to a single value.
-void test_symbol_fold_1(signed char x) {
-  while (1) {
-    if (x == ((signed char) 0)) {}
-  }
-}
-
-// This previously caused a crash because it triggered an assertion in APSInt.
-void test_symbol_fold_2(unsigned int * p, unsigned int n,
-                        const unsigned int * grumpkin, unsigned int dn) {
-  unsigned int i;
-  unsigned int tempsub[8];
-  unsigned int *solgrumpkin = tempsub + n;
-  for (i = 0; i < n; i++)
-    solgrumpkin[i] = (i < dn) ? ~grumpkin[i] : 0xFFFFFFFF;
-  for (i <<= 5; i < (n << 5); i++) {}
-}
-
-// This previously caused a crash because it triggered an assertion in APSInt.
-// 'x' would evaluate to a 8-bit constant (because of the return value of
-// test_symbol_fold_3_aux()) which would not get properly promoted to an
-// integer.
-char test_symbol_fold_3_aux(void);
-unsigned test_symbol_fold_3(void) {
-  unsigned x = test_symbol_fold_3_aux();
-  if (x == 54)
-    return (x << 8) | 0x5;
-  return 0;
-} 
-
-//===----------------------------------------------------------------------===//
-// Tests for the warning of casting a non-struct type to a struct type
-//===----------------------------------------------------------------------===//
-
-typedef struct {unsigned int v;} NSSwappedFloat;
-
-NSSwappedFloat test_cast_nonstruct_to_struct(float x) {
-  struct hodor {
-    float number;
-    NSSwappedFloat sf;
-  };
-  return ((struct hodor *)&x)->sf; // expected-warning{{Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption}}
-}
-
-NSSwappedFloat test_cast_nonstruct_to_union(float x) {
-  union bran {
-    float number;
-    NSSwappedFloat sf;
-  };
-  return ((union bran *)&x)->sf; // no-warning
-}
-
-void test_undefined_array_subscript() {
-  int i, a[10];
-  int *p = &a[i]; // expected-warning{{Array subscript is undefined}}
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// Test using an uninitialized value as a branch condition.
-//===----------------------------------------------------------------------===//
-
-int test_uninit_branch(void) {
-  int x;
-  if (x) // expected-warning{{Branch condition evaluates to a garbage value}}
-    return 1;
-  return 0; 
-}
-
-int test_uninit_branch_b(void) {
-  int x;
-  return x ? 1 : 0; // expected-warning{{Branch condition evaluates to a garbage value}}
-}
-
-int test_uninit_branch_c(void) {
-  int x;
-  if ((short)x) // expected-warning{{Branch condition evaluates to a garbage value}}
-    return 1;
-  return 0; 
-}
-
-//===----------------------------------------------------------------------===//
-// Test passing an undefined value in a message or function call.
-//===----------------------------------------------------------------------===//
-
-void test_bad_call_aux(int x);
-void test_bad_call(void) {
-  int y;
-  test_bad_call_aux(y); // expected-warning{{Function call argument is an uninitialized value}}
-}
-
- at interface TestBadArg {}
-- (void) testBadArg:(int) x;
- at end
-
-void test_bad_msg(TestBadArg *p) {
-  int y;
-  [p testBadArg:y]; // expected-warning{{Argument in message expression is an uninitialized value}}
-}
-
-//===----------------------------------------------------------------------===//
-// PR 6033 - Test emitting the correct output in a warning where we use '%'
-//  with operands that are undefined.
-//===----------------------------------------------------------------------===//
-
-int pr6033(int x) {
-  int y;
-  return x % y; // expected-warning{{The right operand of '%' is a garbage value}}
-}
-
-struct trie {
-  struct trie* next;
-};
-
-struct kwset {
-  struct trie *trie;
-  unsigned char y[10];
-  struct trie* next[10];
-  int d;
-};
-
-typedef struct trie trie_t;
-typedef struct kwset kwset_t;
-
-void f(kwset_t *kws, char const *p, char const *q) {
-  struct trie const *trie;
-  struct trie * const *next = kws->next;
-  register unsigned char c;
-  register char const *end = p;
-  register char const *lim = q;
-  register int d = 1;
-  register unsigned char const *y = kws->y;
-
-  d = y[c = (end+=d)[-1]]; // no-warning
-  trie = next[c];
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7593875> When handling sizeof(VLA) it leads to a hole in
-// the ExplodedGraph (causing a false positive)
-//===----------------------------------------------------------------------===//
-
-int rdar_7593875_aux(int x);
-int rdar_7593875(int n) {
-  int z[n > 10 ? 10 : n]; // VLA.
-  int v;
-  v = rdar_7593875_aux(sizeof(z));
-  // Previously we got a false positive about 'v' being uninitialized.
-  return v; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Handle casts from symbolic regions (packaged as integers) to doubles.
-// Previously this caused an assertion failure.
-//===----------------------------------------------------------------------===//
-
-void *foo_rev95119();
-void baz_rev95119(double x);
-void bar_rev95119() {
-  // foo_rev95119() returns a symbolic pointer.  It is then 
-  // cast to an int which is then cast to a double.
-  int value = (int) foo_rev95119();
-  baz_rev95119((double)value);
-}
-
-//===----------------------------------------------------------------------===//
-// Handle loading a symbolic pointer from a symbolic region that was
-// invalidated by a call to an unknown function.
-//===----------------------------------------------------------------------===//
-
-void bar_rev95192(int **x);
-void foo_rev95192(int **x) {
-  *x = 0;
-  bar_rev95192(x);
-  // Not a null dereference.
-  **x = 1; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Handle casts of a function to a function pointer with a different return
-// value.  We don't yet emit an error for such cases, but we now we at least
-// don't crash when the return value gets interpreted in a way that
-// violates our invariants.
-//===----------------------------------------------------------------------===//
-
-void *foo_rev95267();
-int bar_rev95267() {
-  char (*Callback_rev95267)(void) = (char (*)(void)) foo_rev95267;
-  if ((*Callback_rev95267)() == (char) 0)
-    return 1;
-  return 0;
-}
-
-// Same as previous case, but handle casts to 'void'.
-int bar_rev95274() {
-  void (*Callback_rev95274)(void) = (void (*)(void)) foo_rev95267;
-  (*Callback_rev95274)();
-  return 0;
-}
-
-void rdar7582031_test_static_init_zero() {
-  static unsigned x;
-  if (x == 0)
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF;
-}
-void rdar7582031_test_static_init_zero_b() {
-  static void* x;
-  if (x == 0)
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF;
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling of parameters that are structs that contain floats and       //
-// nested fields.                                                             //
-//===----------------------------------------------------------------------===//
-
-struct s_rev95547_nested { float x, y; };
-struct s_rev95547 {
-  struct s_rev95547_nested z1;
-  struct s_rev95547_nested z2;
-};
-float foo_rev95547(struct s_rev95547 w) {
-  return w.z1.x + 20.0; // no-warning
-}
-void foo_rev95547_b(struct s_rev95547 w) {
-  struct s_rev95547 w2 = w;
-  w2.z1.x += 20.0; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling statement expressions that don't populate a CFG block that
-// is used to represent the computation of the RHS of a logical operator.
-// This previously triggered a crash.
-//===----------------------------------------------------------------------===//
-
-void pr6938() {
-  if (1 && ({
-    while (0);
-    0;
-  }) == 0) {
-  }
-}
-
-void pr6938_b() {
-  if (1 && *({ // expected-warning{{Dereference of null pointer}}
-    while (0) {}
-    ({
-      (int *) 0;
-    });
-  }) == 0) {
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7979430> - The CFG for code containing an empty
-//  @synchronized block was previously broken (and would crash the analyzer).
-//===----------------------------------------------------------------------===//
-
-void r7979430(id x) {
-  @synchronized(x) {}
-}
-
-//===----------------------------------------------------------------------===
-// PR 7361 - Test that functions wrapped in macro instantiations are analyzed.
-//===----------------------------------------------------------------------===
-#define MAKE_TEST_FN() \
-  void test_pr7361 (char a) {\
-    char* b = 0x0;  *b = a;\
-  }
-
-MAKE_TEST_FN() // expected-warning{{null pointer}}
-
-//===----------------------------------------------------------------------===
-// PR 7491 - Test that symbolic expressions can be used as conditions.
-//===----------------------------------------------------------------------===
-
-void pr7491 () {
-  extern int getint();
-  int a = getint()-1;
-  if (a) {
-    return;
-  }
-  if (!a) {
-    return;
-  } else {
-    // Should be unreachable
-    (void)*(char*)0; // no-warning
-  }
-}
-
-//===----------------------------------------------------------------------===
-// PR 7475 - Test that assumptions about global variables are reset after
-//  calling a global function.
-//===----------------------------------------------------------------------===
-
-int *pr7475_someGlobal;
-void pr7475_setUpGlobal();
-
-void pr7475() {
-  if (pr7475_someGlobal == 0)
-    pr7475_setUpGlobal();
-  *pr7475_someGlobal = 0; // no-warning
-}
-
-void pr7475_warn() {
-  static int *someStatic = 0;
-  if (someStatic == 0)
-    pr7475_setUpGlobal();
-  *someStatic = 0; // expected-warning{{null pointer}}
-}
-
-// <rdar://problem/8202272> - __imag passed non-complex should not crash
-float f0(_Complex float x) {
-  float l0 = __real x;
-  return  __real l0 + __imag l0;
-}
-
-
-//===----------------------------------------------------------------------===
-// Test that we can reduce symbols to constants whether they are on the left
-//  or right side of an expression.
-//===----------------------------------------------------------------------===
-
-void reduce_to_constant(int x, int y) {
-  if (x != 20)
-    return;
-
-  int a = x + y;
-  int b = y + x;
-
-  if (y == -20 && a != 0)
-    (void)*(char*)0; // no-warning
-  if (y == -20 && b != 0)
-    (void)*(char*)0; // no-warning
-}
-
-// <rdar://problem/8360854> - Test that code after a switch statement with no 
-// 'case:' labels is correctly evaluated.
-void r8360854(int n) {
-  switch (n) {
-   default: ;
-  }
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning{{null pointer}}
-}
-
-// PR 8050 - crash in CastSizeChecker when pointee is an incomplete type
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-void *malloc(size_t);
-
-struct PR8050;
-
-void pr8050(struct PR8050 **arg)
-{
-    *arg = malloc(1);
-}
-
-// <rdar://problem/5880430> Switch on enum should not consider default case live
-//  if all enum values are covered
-enum Cases { C1, C2, C3, C4 };
-void test_enum_cases(enum Cases C) {
-  switch (C) {
-  case C1:
-  case C2:
-  case C4:
-  case C3:
-    return;
-  }
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-
-void test_enum_cases_positive(enum Cases C) {
-  switch (C) { // expected-warning{{enumeration value 'C4' not handled in switch}}
-  case C1:
-  case C2:
-  case C3:
-    return;
-  }
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning{{Dereference of null pointer}}
-}
-
-// <rdar://problem/6351970> rule request: warn if synchronization mutex can be nil
-void rdar6351970() {
-  id x = 0;
-  @synchronized(x) {} // expected-warning{{Nil value used as mutex for @synchronized() (no synchronization will occur)}}
-}
-
-void rdar6351970_b(id x) {
-  if (!x)
-    @synchronized(x) {} // expected-warning{{Nil value used as mutex for @synchronized() (no synchronization will occur)}}
-}
-
-void rdar6351970_c() {
-  id x;
-  @synchronized(x) {} // expected-warning{{Uninitialized value used as mutex for @synchronized}}
-}
-
- at interface Rdar8578650
-- (id) foo8578650;
- at end
-
-void rdar8578650(id x) {
-  @synchronized (x) {
-    [x foo8578650];
-  }
-  // At this point we should assume that 'x' is not nil, not
-  // the inverse.
-  @synchronized (x) { // no-warning
-  }
-}
-
-// <rdar://problem/6352035> rule request: direct structure member access null pointer dereference
- at interface RDar6352035 {
-  int c;
-}
-- (void)foo;
-- (void)bar;
- at end
-
- at implementation RDar6352035
-- (void)foo {
-  RDar6352035 *friend = 0;
-  friend->c = 7; // expected-warning{{Access to instance variable 'c' results in a dereference of a null pointer (loaded from variable 'friend')}}
-}
-- (void)bar {
-  self = 0;
-  c = 7; // expected-warning{{Access to instance variable 'c' results in a dereference of a null pointer (loaded from variable 'self')}}
-}
- at end
-
-// PR 8149 - GNU statement expression in condition of ForStmt.
-// This previously triggered an assertion failure in CFGBuilder.
-void pr8149(void) {
-  for (; ({ do { } while (0); 0; });) { }
-}
-
-// PR 8458 - Make sure @synchronized doesn't crash with properties.
- at interface PR8458 {}
- at property(readonly) id lock;
- at end
-
-static
-void __PR8458(PR8458 *x) {
-  @synchronized(x.lock) {} // no-warning
-}
-
-// PR 8440 - False null dereference during store to array-in-field-in-global.
-// This test case previously resulted in a bogus null deref warning from
-// incorrect lazy symbolication logic in RegionStore.
-static struct {
-  int num;
-  char **data;
-} saved_pr8440;
-
-char *foo_pr8440();
-char **bar_pr8440();
-void baz_pr8440(int n)
-{
-   saved_pr8440.num = n;
-   if (saved_pr8440.data) 
-     return;
-   saved_pr8440.data = bar_pr8440();
-   for (int i = 0 ; i < n ; i ++)
-     saved_pr8440.data[i] = foo_pr8440(); // no-warning
-}
-
-// Support direct accesses to non-null memory.  Reported in:
-//  PR 5272
-//  <rdar://problem/6839683>
-int test_direct_address_load() {
-  int *p = (int*) 0x4000;
-  return *p; // no-warning
-}
-
-void pr5272_test() {
-  struct pr5272 { int var2; };
-  (*(struct pr5272*)0xBC000000).var2 = 0; // no-warning
-  (*(struct pr5272*)0xBC000000).var2 += 2; // no-warning
-}
-
-// Support casting the return value of function to another different type
-// This previously caused a crash, although we likely need more precise
-// reasoning here. <rdar://problem/8663544>
-void* rdar8663544();
-typedef struct {} Val8663544;
-Val8663544 bazR8663544() {
-  Val8663544(*func) () = (Val8663544(*) ()) rdar8663544;
-  return func();
-}
-
-// PR 8619 - Handle ternary expressions with a call to a noreturn function.
-// This previously resulted in a crash.
-void pr8619_noreturn(int x) __attribute__((noreturn));
-
-void pr8619(int a, int b, int c) {
-  a ?: pr8619_noreturn(b || c);
-}
-
-
-// PR 8646 - crash in the analyzer when handling unions.
-union pr8648_union {
-        signed long long pr8648_union_field;
-};
-void pr8648() {
-  long long y;
-  union pr8648_union x = { .pr8648_union_field = 0LL };
-  y = x.pr8648_union_field;
-  
-  union pr8648_union z;
-  z = (union pr8648_union) { .pr8648_union_field = 0LL };
-
-  union pr8648_union w;
-  w = ({ (union pr8648_union) { .pr8648_union_field = 0LL }; }); 
-
-  // crash, no assignment
-  (void) ({ (union pr8648_union) { .pr8648_union_field = 0LL }; }).pr8648_union_field;
-
-  // crash with assignment
-  y = ({ (union pr8648_union) { .pr8648_union_field = 0LL }; }).pr8648_union_field;
-}
-
-// PR 9269 - don't assert when building the following CFG.  The for statement
-// contains a condition with multiple basic blocks, and the value of the
-// statement expression is then indexed as part of a bigger condition expression.
-// This example exposed a bug in child traversal in the CFGBuilder.
-void pr9269() {
-  struct s { char *bar[10]; } baz[2] = { 0 };
-  unsigned i = 0;
-  for (i = 0;
-  (* ({ while(0); ({ &baz[0]; }); })).bar[0] != 0; // expected-warning {{while loop has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}}
-       ++i) {}
-}
-
-// Test evaluation of GNU-style ?:.
-int pr9287(int type) { return type ? : 0; } // no-warning
-
-void pr9287_b(int type, int *p) { 
-  int x = type ? : 0;
-  if (x) {
-    p = 0;
-  }
-  if (type) {
-    *p = 0xDEADBEEF; // expected-warning {{null pointer}}
-  }
-}
-
-void pr9287_c(int type, int *p) { 
-  int x = type ? : 0;
-  if (x) {
-    p = 0;
-  }
-  if (!type) {
-    *p = 0xDEADBEEF; // no-warning
-  }
-}
-
-void test_switch() {
-  switch (4) {
-    case 1: {
-      int *p = 0;
-      *p = 0xDEADBEEF; // no-warning
-      break;
-    }
-    case 4: {
-      int *p = 0;
-      *p = 0xDEADBEEF; // expected-warning {{null}}
-      break;
-    }
-    default: {
-      int *p = 0;
-      *p = 0xDEADBEEF; // no-warning
-      break;
-    }
-  }
-}
-
-// PR 9467.  Tests various CFG optimizations.  This previously crashed.
-static void test(unsigned int bit_mask)
-{
-  unsigned int bit_index;
-  for (bit_index = 0;
-       bit_index < 24;
-       bit_index++) {
-    switch ((0x01 << bit_index) & bit_mask) {
-    case 0x100000: ;
-    }
-  }
-}
-
-// Don't crash on code containing __label__.
-int radar9414427_aux();
-void radar9414427() {
-  __label__ mylabel;
-  if (radar9414427_aux()) {
-  mylabel: do {}
-  while (0);
-  }
-}
-
-// Analyze methods in @implementation (category)
- at interface RDar9465344
- at end
-
- at implementation RDar9465344 (MyCategory)
-- (void) testcategoryImpl {
-  int *p = 0x0;
-  *p = 0xDEADBEEF; // expected-warning {{null}}
-}
- at end
-
- at implementation RDar9465344
- at end
-
-// Don't crash when analyzing access to 'self' within a block.
- at interface Rdar10380300Base 
-- (void) foo;
- at end
- at interface Rdar10380300 : Rdar10380300Base @end
- at implementation Rdar10380300
-- (void)foo {
-  ^{
-    [super foo];
-  }();
-}
- at end
-
-// Don't crash when a ?: is only preceded by a statement (not an expression)
-// in the CFG.
-void __assert_fail();
-
-enum rdar1196620_e { E_A, E_B, E_C, E_D };
-struct rdar1196620_s { int ints[E_D+1]; };
-
-static void rdar1196620_call_assert(struct rdar1196620_s* s) {
-  int i = 0;
-  s?(void)0:__assert_fail();
-}
-
-static void rdar1196620(struct rdar1196620_s* s) {
-  rdar1196620_call_assert(s);
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/new-with-exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/new-with-exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/new-with-exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-store region -std=c++11 -fexceptions -fcxx-exceptions -verify -DEXCEPTIONS %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-store region -std=c++11 -verify %s
-
-void clang_analyzer_eval(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-
-// This is the standard placement new.
-inline void* operator new(size_t, void* __p) throw()
-{
-  return __p;
-}
-
-struct NoThrow {
-  void *operator new(size_t) throw();
-};
-
-struct NoExcept {
-  void *operator new(size_t) noexcept;
-};
-
-struct DefaultThrow {
-  void *operator new(size_t);
-};
-
-struct ExplicitThrow {
-  void *operator new(size_t) throw(int);
-};
-
-void testNew() {
-  clang_analyzer_eval(new NoThrow); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(new NoExcept); // expected-warning{{UNKNOWN}}
-
-  clang_analyzer_eval(new DefaultThrow);
-  clang_analyzer_eval(new ExplicitThrow);
-#ifdef EXCEPTIONS
-  // expected-warning at -3 {{TRUE}}
-  // expected-warning at -3 {{TRUE}}
-#else
-  // expected-warning at -6 {{UNKNOWN}}
-  // expected-warning at -6 {{UNKNOWN}}
-#endif
-}
-
-void testNewArray() {
-  clang_analyzer_eval(new NoThrow[2]);
-  clang_analyzer_eval(new NoExcept[2]);
-  clang_analyzer_eval(new DefaultThrow[2]);
-  clang_analyzer_eval(new ExplicitThrow[2]);
-#ifdef EXCEPTIONS
-  // expected-warning at -5 {{TRUE}}
-  // expected-warning at -5 {{TRUE}}
-  // expected-warning at -5 {{TRUE}}
-  // expected-warning at -5 {{TRUE}}
-#else
-  // expected-warning at -10 {{UNKNOWN}}
-  // expected-warning at -10 {{UNKNOWN}}
-  // expected-warning at -10 {{UNKNOWN}}
-  // expected-warning at -10 {{UNKNOWN}}
-#endif
-}
-
-extern void *operator new[](size_t, int) noexcept;
-
-void testNewArrayNoThrow() {
-  clang_analyzer_eval(new (1) NoThrow[2]); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(new (1) NoExcept[2]); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(new (1) DefaultThrow[2]); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(new (1) ExplicitThrow[2]); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/new.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/new.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/new.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,198 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -analyzer-store region -std=c++11 -verify %s
-#include "Inputs/system-header-simulator-cxx.h"
-
-void clang_analyzer_eval(bool);
-
-typedef __typeof__(sizeof(int)) size_t;
-extern "C" void *malloc(size_t);
-extern "C" void free(void *);
-
-int someGlobal;
-
-class SomeClass {
-public:
-  void f(int *p);
-};
-
-void testImplicitlyDeclaredGlobalNew() {
-  if (someGlobal != 0)
-    return;
-
-  // This used to crash because the global operator new is being implicitly
-  // declared and it does not have a valid source location. (PR13090)
-  void *x = ::operator new(0);
-  ::operator delete(x);
-
-  // Check that the new/delete did not invalidate someGlobal;
-  clang_analyzer_eval(someGlobal == 0); // expected-warning{{TRUE}}
-}
-
-void *testPlacementNew() {
-  int *x = (int *)malloc(sizeof(int));
-  *x = 1;
-  clang_analyzer_eval(*x == 1); // expected-warning{{TRUE}};
-
-  void *y = new (x) int;
-  clang_analyzer_eval(x == y); // expected-warning{{TRUE}};
-  clang_analyzer_eval(*x == 1); // expected-warning{{UNKNOWN}};
-
-  return y;
-}
-
-void *operator new(size_t, size_t, int *);
-void *testCustomNew() {
-  int x[1] = {1};
-  clang_analyzer_eval(*x == 1); // expected-warning{{TRUE}};
-
-  void *y = new (0, x) int;
-  clang_analyzer_eval(*x == 1); // expected-warning{{UNKNOWN}};
-
-  return y; // no-warning
-}
-
-void *operator new(size_t, void *, void *);
-void *testCustomNewMalloc() {
-  int *x = (int *)malloc(sizeof(int));
-
-  // Should be no-warning (the custom allocator could have freed x).
-  void *y = new (0, x) int; // no-warning
-
-  return y;
-}
-
-void testScalarInitialization() {
-  int *n = new int(3);
-  clang_analyzer_eval(*n == 3); // expected-warning{{TRUE}}
-
-  new (n) int();
-  clang_analyzer_eval(*n == 0); // expected-warning{{TRUE}}
-
-  new (n) int{3};
-  clang_analyzer_eval(*n == 3); // expected-warning{{TRUE}}
-
-  new (n) int{};
-  clang_analyzer_eval(*n == 0); // expected-warning{{TRUE}}
-}
-
-struct PtrWrapper {
-  int *x;
-
-  PtrWrapper(int *input) : x(input) {}
-};
-
-PtrWrapper *testNewInvalidation() {
-  // Ensure that we don't consider this a leak.
-  return new PtrWrapper(static_cast<int *>(malloc(4))); // no-warning
-}
-
-void testNewInvalidationPlacement(PtrWrapper *w) {
-  // Ensure that we don't consider this a leak.
-  new (w) PtrWrapper(static_cast<int *>(malloc(4))); // no-warning
-}
-
-int **testNewInvalidationScalar() {
-  // Ensure that we don't consider this a leak.
-  return new (int *)(static_cast<int *>(malloc(4))); // no-warning
-}
-
-void testNewInvalidationScalarPlacement(int **p) {
-  // Ensure that we don't consider this a leak.
-  new (p) (int *)(static_cast<int *>(malloc(4))); // no-warning
-}
-
-void testCacheOut(PtrWrapper w) {
-  extern bool coin();
-  if (coin())
-    w.x = 0;
-  new (&w.x) (int*)(0); // we cache out here; don't crash
-}
-
-void testUseAfter(int *p) {
-  SomeClass *c = new SomeClass;
-  free(p);
-  c->f(p); // expected-warning{{Use of memory after it is freed}}
-  delete c;
-}
-
-//--------------------------------------------------------------------
-// Check for intersection with other checkers from MallocChecker.cpp 
-// bounded with unix.Malloc
-//--------------------------------------------------------------------
-
-// new/delete oparators are subjects of cplusplus.NewDelete.
-void testNewDeleteNoWarn() {
-  int i;
-  delete &i; // no-warning
-
-  int *p1 = new int;
-  delete ++p1; // no-warning
-
-  int *p2 = new int;
-  delete p2;
-  delete p2; // no-warning
-
-  int *p3 = new int; // no-warning
-}
-
-// unix.Malloc does not know about operators new/delete.
-void testDeleteMallocked() {
-  int *x = (int *)malloc(sizeof(int));
-  delete x; // FIXME: Shoud detect pointer escape and keep silent after 'delete' is modeled properly.
-} // expected-warning{{Potential leak of memory pointed to by 'x'}}
-
-void testDeleteOpAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  operator delete(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testDeleteAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  delete p; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testStandardPlacementNewAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  p = new(p) int; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testCustomPlacementNewAfterFree() {
-  int *p = (int *)malloc(sizeof(int));
-  free(p);
-  p = new(0, p) int; // expected-warning{{Use of memory after it is freed}}
-}
-
-void testUsingThisAfterDelete() {
-  SomeClass *c = new SomeClass;
-  delete c;
-  c->f(0); // no-warning
-}
-
-//--------------------------------
-// Incorrectly-modelled behavior
-//--------------------------------
-
-int testNoInitialization() {
-  int *n = new int;
-
-  // Should warn that *n is uninitialized.
-  if (*n) { // no-warning
-    delete n;
-    return 0;
-  }
-  delete n;
-  return 1;
-}
-
-int testNoInitializationPlacement() {
-  int n;
-  new (&n) int;
-
-  // Should warn that n is uninitialized.
-  if (n) { // no-warning
-    return 0;
-  }
-  return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret-region.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret-region.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret-region.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin8 -analyze -analyzer-checker=core,alpha.core -analyzer-constraints=range -analyzer-store=region -verify -Wno-objc-root-class %s
-
-// <rdar://problem/6888289> - This test case shows that a nil instance
-// variable can possibly be initialized by a method.
- at interface RDar6888289
-{
-  id *x;
-}
-- (void) test:(id) y;
-- (void) test2:(id) y;
-- (void) invalidate;
- at end
-
-id *getVal(void);
-
- at implementation RDar6888289
-- (void) test:(id)y {
-  if (!x)
-    [self invalidate];
-  *x = y;
-}
-- (void) test2:(id)y {
-  if (!x) {}
-  *x = y; // expected-warning {{null}}
-}
-
-- (void) invalidate {
-  x = getVal();
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/nil-receiver-undefined-larger-than-voidptr-ret.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin8 -analyze -analyzer-checker=core,alpha.core -analyzer-constraints=range -analyzer-store=region -Wno-objc-root-class %s > %t.1 2>&1
-// RUN: FileCheck -input-file=%t.1 -check-prefix=darwin8 %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-constraints=range -analyzer-store=region -Wno-objc-root-class %s > %t.2 2>&1
-// RUN: FileCheck -input-file=%t.2 -check-prefix=darwin9 %s
-// RUN: %clang_cc1 -triple thumbv6-apple-ios4.0 -analyze -analyzer-checker=core,alpha.core -analyzer-constraints=range -analyzer-store=region -Wno-objc-root-class %s > %t.3 2>&1
-// RUN: FileCheck -input-file=%t.3 -check-prefix=darwin9 %s
-
- at interface MyClass {}
-- (void *)voidPtrM;
-- (int)intM;
-- (long long)longlongM;
-- (unsigned long long)unsignedLongLongM;
-- (double)doubleM;
-- (long double)longDoubleM;
-- (void)voidM;
- at end
- at implementation MyClass
-- (void *)voidPtrM { return (void *)0; }
-- (int)intM { return 0; }
-- (long long)longlongM { return 0; }
-- (unsigned long long)unsignedLongLongM { return 0; }
-- (double)doubleM { return 0.0; }
-- (long double)longDoubleM { return 0.0; }
-- (void)voidM {}
- at end
-
-void createFoo() {
-  MyClass *obj = 0;  
-  
-  void *v = [obj voidPtrM]; // no-warning
-  int i = [obj intM]; // no-warning
-}
-
-void createFoo2() {
-  MyClass *obj = 0;  
-  
-  long double ld = [obj longDoubleM];
-}
-
-void createFoo3() {
-  MyClass *obj;
-  obj = 0;  
-  
-  long long ll = [obj longlongM];
-}
-
-void createFoo4() {
-  MyClass *obj = 0;  
-  
-  double d = [obj doubleM];
-}
-
-void createFoo5() {
-  MyClass *obj = (id)@"";  
-  
-  double d = [obj doubleM]; // no-warning
-}
-
-void createFoo6() {
-  MyClass *obj;
-  obj = 0;  
-  
-  unsigned long long ull = [obj unsignedLongLongM];
-}
-
-void handleNilPruneLoop(MyClass *obj) {
-  if (!!obj)
-    return;
-  
-  // Test if [obj intM] evaluates to 0, thus pruning the entire loop.
-  for (int i = 0; i < [obj intM]; i++) {
-    long long j = [obj longlongM];
-  }
-  
-  long long j = [obj longlongM];
-}
-
-int handleVoidInComma() {
-  MyClass *obj = 0;
-  return [obj voidM], 0;
-}
-
-int marker(void) { // control reaches end of non-void function
-}
-
-// CHECK-darwin8: warning: The receiver of message 'longDoubleM' is nil and returns a value of type 'long double' that will be garbage
-// CHECK-darwin8: warning: The receiver of message 'longlongM' is nil and returns a value of type 'long long' that will be garbage
-// CHECK-darwin8: warning: The receiver of message 'doubleM' is nil and returns a value of type 'double' that will be garbage
-// CHECK-darwin8: warning: The receiver of message 'unsignedLongLongM' is nil and returns a value of type 'unsigned long long' that will be garbage
-// CHECK-darwin8: warning: The receiver of message 'longlongM' is nil and returns a value of type 'long long' that will be garbage
-
-// CHECK-darwin9-NOT: warning: The receiver of message 'longlongM' is nil and returns a value of type 'long long' that will be garbage
-// CHECK-darwin9-NOT: warning: The receiver of message 'unsignedLongLongM' is nil and returns a value of type 'unsigned long long' that will be garbage
-// CHECK-darwin9-NOT: warning: The receiver of message 'doubleM' is nil and returns a value of type 'double' that will be garbage
-// CHECK-darwin9-NOT: warning: The receiver of message 'longlongM' is nil and returns a value of type 'long long' that will be garbage
-// CHECK-darwin9-NOT: warning: The receiver of message 'longDoubleM' is nil and returns a value of type 'long double' that will be garbage
-// CHECK-darwin9: 1 warning generated
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/no-exit-cfg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/no-exit-cfg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/no-exit-cfg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s 
-// expected-no-diagnostics
-
-// This is a test case for the issue reported in PR 2819:
-//  http://llvm.org/bugs/show_bug.cgi?id=2819
-// The flow-sensitive dataflow solver should work even when no block in
-// the CFG reaches the exit block.
-
-int g(int x);
-void h(int x);
-
-int f(int x)
-{
-out_err:
-  if (g(x)) {
-    h(x);
-  }
-  goto out_err;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/no-outofbounds.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/no-outofbounds.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/no-outofbounds.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,alpha.unix,alpha.security.ArrayBound -analyzer-store=region -verify %s
-
-//===----------------------------------------------------------------------===//
-// This file tests cases where we should not flag out-of-bounds warnings.
-//===----------------------------------------------------------------------===//
-
-void f() {
-  long x = 0;
-  char *y = (char*) &x;
-  char c = y[0] + y[1] + y[2]; // no-warning
-  short *z = (short*) &x;
-  short s = z[0] + z[1]; // no-warning
-}
-
-void g() {
-  int a[2];
-  char *b = (char*)a;
-  b[3] = 'c'; // no-warning
-}
-
-typedef typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-void field() {
-  struct vec { size_t len; int data[0]; };
-  // FIXME: Not warn for this.
-  struct vec *a = malloc(sizeof(struct vec) + 10); // expected-warning {{Cast a region whose size is not a multiple of the destination type size}}
-  a->len = 10;
-  a->data[1] = 5; // no-warning
-  free(a);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/nonnull.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/nonnull.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/nonnull.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
-
- at interface MyObject
-- (void)takePointer:(void *)ptr __attribute__((nonnull(1)));
- at end
-
-void testNonNullMethod(int *p, MyObject *obj) {
-  if (p)
-    return;
-  [obj takePointer:p]; // expected-warning{{nonnull}}
-}
-
-
- at interface Subclass : MyObject
-// [[nonnull]] is an inherited attribute.
-- (void)takePointer:(void *)ptr;
- at end
-
-void testSubclass(int *p, Subclass *obj) {
-  if (p)
-    return;
-  [obj takePointer:p]; // expected-warning{{nonnull}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-path-notes.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-path-notes.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-path-notes.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,795 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -analyzer-output=text -fblocks -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -analyzer-output=plist-multi-file -fblocks -Wno-objc-root-class %s -o %t
-// RUN: FileCheck --input-file=%t %s
-
- at interface Root {
- at public
-  int uniqueID;
-}
-- (id)initWithID:(int)newID;
-- (void)refreshID;
- at end
-
-int testNull(Root *obj) {
-  if (obj) return 0;
-  // expected-note at -1 {{Assuming 'obj' is nil}}
-  // expected-note at -2 {{Taking false branch}}
-
-  int *x = &obj->uniqueID; // expected-note{{'x' initialized to a null pointer value}}
-  return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}} expected-note{{Dereference of null pointer (loaded from variable 'x')}}
-}
-
-
- at interface Subclass : Root
- at end
-
- at implementation Subclass
-- (id)initWithID:(int)newID {
-  self = [super initWithID:newID]; // expected-note{{Value assigned to 'self'}}
-  if (self) return self;
-  // expected-note at -1 {{Assuming 'self' is nil}}
-  // expected-note at -2 {{Taking false branch}}
-
-  uniqueID = newID; // expected-warning{{Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')}} expected-note{{Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')}}
-  return self;
-}
-
- at end
-
-void repeatedStores(int coin) {
-  int *p = 0;
-  if (coin) {
-    // expected-note at -1 {{Assuming 'coin' is 0}}
-    // expected-note at -2 {{Taking false branch}}
-    extern int *getPointer();
-    p = getPointer();
-  } else {
-    p = 0; // expected-note {{Null pointer value stored to 'p'}}
-  }
-
-  *p = 1; // expected-warning{{Dereference of null pointer}} expected-note{{Dereference of null pointer}}
-}
-
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>14</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>14</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'obj' is nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'obj' is nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>14</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>18</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'x' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'x' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>19</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'x')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testNull</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>19</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>28</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>28</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>28</integer>
-// CHECK-NEXT:          <key>col</key><integer>33</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Value assigned to 'self'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Value assigned to 'self'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>28</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>29</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'self' is nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'self' is nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>33</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>33</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Access to instance variable 'uniqueID' results in a dereference of a null pointer (loaded from variable 'self')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>initWithID:</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>33</integer>
-// CHECK-NEXT:    <key>col</key><integer>12</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>40</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>40</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>41</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>41</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'coin' is 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'coin' is 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>41</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>47</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>47</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>47</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>50</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>50</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>50</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>repeatedStores</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>11</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>50</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-ps-region.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-ps-region.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-ps-region.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -std=gnu99 -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-
-// The store for 'a[1]' should not be removed mistakenly. SymbolicRegions may
-// also be live roots.
-void f14(int *a) {
-  int i;
-  a[1] = 1;
-  i = a[1];
-  if (i != 1) {
-    int *p = 0;
-    i = *p; // no-warning
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-ps.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-ps.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/null-deref-ps.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,313 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,deadcode,alpha.deadcode.IdempotentOperations,alpha.core -std=gnu99 -analyzer-store=region -analyzer-constraints=range -analyzer-purge=none -verify %s -Wno-error=return-type
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=core,deadcode,alpha.deadcode.IdempotentOperations,alpha.core -std=gnu99 -analyzer-store=region -analyzer-constraints=range -verify %s -Wno-error=return-type 
-
-typedef unsigned uintptr_t;
-
-extern void __assert_fail (__const char *__assertion, __const char *__file,
-    unsigned int __line, __const char *__function)
-     __attribute__ ((__noreturn__));
-
-#define assert(expr) \
-  ((expr)  ? (void)(0)  : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-
-void f1(int *p) {  
-  if (p) *p = 1;
-  else *p = 0; // expected-warning{{ereference}}
-}
-
-struct foo_struct {
-  int x;
-};
-
-int f2(struct foo_struct* p) {
-  
-  if (p)
-    p->x = 1;
-    
-  return p->x++; // expected-warning{{Access to field 'x' results in a dereference of a null pointer (loaded from variable 'p')}}
-}
-
-int f3(char* x) {
-  
-  int i = 2;
-  
-  if (x)
-    return x[i - 1];
-  
-  return x[i+1]; // expected-warning{{Array access (from variable 'x') results in a null pointer dereference}}
-}
-
-int f3_b(char* x) {
-  
-  int i = 2;
-  
-  if (x)
-    return x[i - 1];
-  
-  return x[i+1]++; // expected-warning{{Array access (from variable 'x') results in a null pointer dereference}}
-}
-
-int f4(int *p) {
-  
-  uintptr_t x = (uintptr_t) p;
-  
-  if (x)
-    return 1;
-    
-  int *q = (int*) x;
-  return *q; // expected-warning{{Dereference of null pointer (loaded from variable 'q')}}
-}
-
-int f4_b() {
-  short array[2];
-  uintptr_t x = array; // expected-warning{{incompatible pointer to integer conversion}}
-  short *p = x; // expected-warning{{incompatible integer to pointer conversion}}
-
-  // The following branch should be infeasible.
-  if (!(p == &array[0])) { // expected-warning{{Both operands to '==' always have the same value}}
-    p = 0;
-    *p = 1; // no-warning
-  }
-
-  if (p) {
-    *p = 5; // no-warning
-    p = 0;
-  }
-  else return; // expected-warning {{non-void function 'f4_b' should return a value}}
-
-  *p += 10; // expected-warning{{Dereference of null pointer}}
-  return 0;
-}
-
-int f5() {
-  
-  char *s = "hello world";
-  return s[0]; // no-warning
-}
-
-int bar(int* p, int q) __attribute__((nonnull));
-
-int f6(int *p) { 
-  return !p ? bar(p, 1) // expected-warning {{Null pointer passed as an argument to a 'nonnull' parameter}}
-         : bar(p, 0);   // no-warning
-}
-
-int bar2(int* p, int q) __attribute__((nonnull(1)));
-
-int f6b(int *p) { 
-  return !p ? bar2(p, 1) // expected-warning {{Null pointer passed as an argument to a 'nonnull' parameter}}
-         : bar2(p, 0);   // no-warning
-}
-
-int bar3(int*p, int q, int *r) __attribute__((nonnull(1,3)));
-
-int f6c(int *p, int *q) {
-   return !p ? bar3(q, 2, p) // expected-warning {{Null pointer passed as an argument to a 'nonnull' parameter}}
-             : bar3(p, 2, q); // no-warning
-}
-
-void f6d(int *p) {
-  bar(p, 0);
-  // At this point, 'p' cannot be null.
-  if (!p) {
-    int *q = 0;
-    *q = 0xDEADBEEF; // no-warning    
-  }  
-}
-
-void f6e(int *p, int offset) {
-  // PR7406 - crash from treating an UnknownVal as defined, to see if it's 0.
-  bar((p+offset)+1, 0); // not crash
-}
-
-int* qux();
-
-int f7(int x) {
-  
-  int* p = 0;
-  
-  if (0 == x)
-    p = qux();
-  
-  if (0 == x)
-    *p = 1; // no-warning
-    
-  return x;
-}
-
-int* f7b(int *x) {
-  
-  int* p = 0;
-  
-  if (((void*)0) == x)
-    p = qux();
-  
-  if (((void*)0) == x)
-    *p = 1; // no-warning
-    
-  return x;
-}
-
-int* f7c(int *x) {
-  
-  int* p = 0;
-  
-  if (((void*)0) == x)
-    p = qux();
-  
-  if (((void*)0) != x)
-    return x;
-
-  // If we reach here then 'p' is not null.
-  *p = 1; // no-warning
-  return x;
-}
-
-int* f7c2(int *x) {
-  
-  int* p = 0;
-  
-  if (((void*)0) == x)
-    p = qux();
-  
-  if (((void*)0) == x)
-    return x;
-    
-  *p = 1; // expected-warning{{null}}
-  return x;
-}
-
-
-void f8(int *p, int *q) {
-  if (!p)
-    if (p)
-      *p = 1; // no-warning
-  
-  if (q)
-    if (!q)
-      *q = 1; // no-warning
-}
-
-int* qux();
-
-int f9(unsigned len) {
-  assert (len != 0);
-  int *p = 0;
-  unsigned i;
-
-  for (i = 0; i < len; ++i)
-   p = qux(i);
-
-  return *p++; // no-warning
-}
-
-int f9b(unsigned len) {
-  assert (len > 0);  // note use of '>'
-  int *p = 0;
-  unsigned i;
-
-  for (i = 0; i < len; ++i)
-   p = qux(i);
-
-  return *p++; // no-warning
-}
-
-int* f10(int* p, signed char x, int y) {
-  // This line tests symbolication with compound assignments where the
-  // LHS and RHS have different bitwidths.  The new symbolic value
-  // for 'x' should have a bitwidth of 8.
-  x &= y;
-  
-  // This tests that our symbolication worked, and that we correctly test
-  // x against 0 (with the same bitwidth).
-  if (!x) {
-    if (!p) return 0;
-    *p = 10;
-  }
-  else p = 0;
-
-  if (!x)
-    *p = 5; // no-warning
-
-  return p;
-}
-
-// Test case from <rdar://problem/6407949>
-void f11(unsigned i) {
-  int *x = 0;
-  if (i >= 0) { // expected-warning{{always true}}
-    // always true
-  } else {
-    *x = 42; // no-warning
-  }
-}
-
-void f11b(unsigned i) {
-  int *x = 0;
-  if (i <= ~(unsigned)0) {
-    // always true
-  } else {
-    *x = 42; // no-warning
-  }
-}
-
-// Test case for switch statements with weird case arms.
-typedef int     BOOL, *PBOOL, *LPBOOL;
-typedef long    LONG_PTR, *PLONG_PTR;
-typedef unsigned long ULONG_PTR, *PULONG_PTR;
-typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
-typedef LONG_PTR LRESULT;
-typedef struct _F12ITEM *HF12ITEM;
-
-void f12(HF12ITEM i, char *q) {
-  char *p = 0;
-  switch ((DWORD_PTR) i) {
-  case 0 ... 10:
-    p = q;
-    break;
-  case (DWORD_PTR) ((HF12ITEM) - 65535):
-    return;
-  default:
-    return;
-  }
-  
-  *p = 1; // no-warning
-}
-
-// Test handling of translating between integer "pointers" and back.
-void f13() {
-  int *x = 0;
-  if (((((int) x) << 2) + 1) >> 1) *x = 1;
-}
-
-// PR 4759 - Attribute non-null checking by the analyzer was not correctly
-// handling pointer values that were undefined.
-void pr4759_aux(int *p) __attribute__((nonnull));
-
-void pr4759() {
-  int *p;
-  pr4759_aux(p); // expected-warning{{Function call argument is an uninitialized value}}
-}
-
-// Relax function call arguments invalidation to be aware of const
-// arguments. Test with function pointers. radar://10595327
-void ttt(const int *nptr);
-void ttt2(const int *nptr);
-typedef void (*NoConstType)(int*);
-int foo10595327(int b) {
-  void (*fp)(int *);
-  // We use path sensitivity to get the function declaration. Even when the
-  // function pointer is cast to non pointer-to-const parameter type, we can
-  // find the right function declaration.
-  if (b > 5)
-    fp = (NoConstType)ttt2;
-  else
-    fp = (NoConstType)ttt;
-  int x = 3;
-  int y = x + 1;
-  int *p = 0;
-  fp(&y);
-  if (x == y)
-      return *p; // no-warning
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/nullptr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/nullptr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/nullptr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,83 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -Wno-conversion-null -analyze -analyzer-checker=core -analyzer-store region -verify %s
-
-// test to see if nullptr is detected as a null pointer
-void foo1(void) {
-  char  *np = nullptr;
-  *np = 0;  // expected-warning{{Dereference of null pointer}}
-}
-
-// check if comparing nullptr to nullptr is detected properly
-void foo2(void) {
-  char *np1 = nullptr;
-  char *np2 = np1;
-  char c;
-  if (np1 == np2)
-    np1 = &c;
-  *np1 = 0;  // no-warning
-}
-
-// invoving a nullptr in a more complex operation should be cause a warning
-void foo3(void) {
-  struct foo {
-    int a, f;
-  };
-  char *np = nullptr;
-  // casting a nullptr to anything should be caught eventually
-  int *ip = &(((struct foo *)np)->f);
-  *ip = 0;  // expected-warning{{Dereference of null pointer}}
-  // should be error here too, but analysis gets stopped
-//  *np = 0;
-}
-
-// nullptr is implemented as a zero integer value, so should be able to compare
-void foo4(void) {
-  char *np = nullptr;
-  if (np != 0)
-    *np = 0;  // no-warning
-  char  *cp = 0;
-  if (np != cp)
-    *np = 0;  // no-warning
-}
-
-int pr10372(void *& x) {
-  // GNU null is a pointer-sized integer, not a pointer.
-  x = __null;
-  // This used to crash.
-  return __null;
-}
-
-void zoo1() {
-  char **p = 0;
-  delete *(p + 0); // expected-warning{{Dereference of null pointer}}
-}
-
-void zoo2() {
-  int **a = 0;
-  int **b = 0;
-  asm ("nop"
-      :"=r"(*a)
-      :"0"(*b) // expected-warning{{Dereference of null pointer}}
-      );
-}
-
-int exprWithCleanups() {
-  struct S {
-    S(int a):a(a){}
-    ~S() {}
-
-    int a;
-  };
-
-  int *x = 0;
-  return S(*x).a; // expected-warning{{Dereference of null pointer}}
-}
-
-int materializeTempExpr() {
-  int *n = 0;
-  struct S {
-    int a;
-    S(int i): a(i) {}
-  };
-  const S &s = S(*n); // expected-warning{{Dereference of null pointer}}
-  return s.a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc/direct-ivar-assignment-in-annotated-functions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.osx.cocoa.DirectIvarAssignmentForAnnotatedFunctions -fobjc-default-synthesize-properties -verify -fblocks %s
-
-typedef signed char BOOL;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
- at end
-
- at interface MyClass;
- at end
-
- at interface AnnotatedClass : NSObject {
-}
-  - (void) someMethod: (MyClass*)In __attribute__((annotate("objc_no_direct_instance_variable_assignment")));
-  - (void) someMethodNotAnnaotated: (MyClass*)In;
- at end
-
-
- at interface TestProperty : AnnotatedClass {
-  MyClass *_Z;
-  id _nonSynth;
-  MyClass* _NotA __attribute__((annotate("objc_allow_direct_instance_variable_assignment")));
-}
-
-  @property (assign, nonatomic) MyClass* A; // explicitely synthesized, not implemented, non-default ivar name
-
-  @property (assign) MyClass* X;  // automatically synthesized, not implemented
-
-  @property (assign, nonatomic) MyClass* Y; // automatically synthesized, implemented
-
-  @property (assign, nonatomic) MyClass* Z; // non synthesized ivar, implemented setter
-  @property (readonly) id nonSynth;  // non synthesized, explicitly implemented to return ivar with expected name
-  
-  @property (assign) MyClass* NotA;  // warnings should be suppressed, backing ivar is annotated
-  @property (assign) MyClass* NotX __attribute__((annotate("objc_allow_direct_instance_variable_assignment")));  // warnings should be suppressed
-
-  @end
-
- at implementation TestProperty
-  @synthesize A = __A;
-  
-  - (void) someMethod: (MyClass*)In {
-    (__A) = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _X = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _Y = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _Z = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _nonSynth = 0; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _NotX = 0; // no-warning
-    _NotA = 0; // no-warning
-  }
-  - (void) someMethodNotAnnaotated: (MyClass*)In {
-    (__A) = In; 
-    _X = In; // no-warning
-    _Y = In; // no-warning
-    _Z = In; // no-warning
-    _nonSynth = 0; // no-warning
-  }
-
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc-arc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc-arc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc-arc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,220 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,deadcode -analyzer-store=region -verify -fblocks  -analyzer-opt-analyze-nested-blocks -fobjc-arc %s
-
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-typedef unsigned long NSUInteger;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding;
- at protocol NSMutableCopying;
- at protocol NSFastEnumeration
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-+ (id)alloc;
-- (id)init;
-- (NSString *)description;
- at end
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-- (id)initWithObjects:(const id [])objects count:(NSUInteger)cnt;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithArray:(NSArray *)array;
- at end
-
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-
-typedef const void* objc_objectptr_t;
-__attribute__((ns_returns_retained)) id objc_retainedObject(objc_objectptr_t __attribute__((cf_consumed)) pointer);
-__attribute__((ns_returns_not_retained)) id objc_unretainedObject(objc_objectptr_t pointer);
-
-// Test the analyzer is working at all.
-void test_working() {
-  int *p = 0;
-  *p = 0xDEADBEEF; // expected-warning {{null}}
-}
-
-// Test that in ARC mode that blocks are correctly automatically copied
-// and not flagged as warnings by the analyzer.
-typedef void (^Block)(void);
-void testblock_bar(int x);
-
-Block testblock_foo(int x) {
-  Block b = ^{ testblock_bar(x); };
-  return b; // no-warning
-}
-
-Block testblock_baz(int x) {
-  return ^{ testblock_bar(x); }; // no-warning
-}
-
-Block global_block;
-
-void testblock_qux(int x) {
-  global_block = ^{ testblock_bar(x); }; // no-warning
-}
-
-// Test that Objective-C pointers are null initialized.
-void test_nil_initialized() {
-  id x;
-  if (x == 0)
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-
-// Test that we don't flag leaks of Objective-C objects.
-void test_alloc() {
-  [NSObject alloc]; // no-warning
-}
-
-// Test that CF allocations are still caught as leaks.
-void test_cf_leak() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t); // expected-warning {{Potential leak}}
-  (void) date;
-}
-
-// Test that 'init' methods do not try to claim ownerhip of an *unowned* allocated object
-// in ARC mode.
- at interface RDar9424890_A :  NSObject
-- (id)initWithCleaner:(int)pop mop:(NSString *)mop ;
-- (RDar9424890_A *)rdar9424890:(NSString *)identifier;
- at end
- at interface RDar9424890_B : NSObject
- at end
- at implementation RDar9424890_B
-- (RDar9424890_A *)obj:(RDar9424890_A *)obj {
-  static NSString *WhizFiz = @"WhizFiz";
-  RDar9424890_A *cell = [obj rdar9424890:WhizFiz];
-  if (cell == ((void*)0)) {
-    cell = [[RDar9424890_A alloc] initWithCleaner:0 mop:WhizFiz]; // no-warning
-  }
-  return cell;
-}
- at end
-
-// Test that dead store checking works in the prescence of "cleanups" in the AST.
-void rdar9424882() {
-  id x = [NSObject alloc]; // expected-warning {{Value stored to 'x' during its initialization is never read}}
-}
-
-// Test 
-typedef const void *CFTypeRef;
-typedef const struct __CFString *CFStringRef;
-
- at interface NSString
-- (id) self;
- at end
-
-CFTypeRef CFCreateSomething();
-CFStringRef CFCreateString();
-CFTypeRef CFGetSomething();
-CFStringRef CFGetString();
-
-id CreateSomething();
-NSString *CreateNSString();
-
-void from_cf() {
-  id obj1 = (__bridge_transfer id)CFCreateSomething(); // expected-warning{{never read}}
-  id obj2 = (__bridge_transfer NSString*)CFCreateString();
-  [obj2 self]; // Add a use, to show we can use the object after it has been transfered.
-  id obj3 = (__bridge id)CFGetSomething();
-  [obj3 self]; // Add a use, to show we can use the object after it has been bridged.
-  id obj4 = (__bridge NSString*)CFGetString(); // expected-warning{{never read}}
-  id obj5 = (__bridge id)CFCreateSomething(); // expected-warning{{never read}} expected-warning{{leak}}
-  id obj6 = (__bridge NSString*)CFCreateString(); // expected-warning{{never read}} expected-warning{{leak}}
-}
-
-void to_cf(id obj) {
-  CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething(); // expected-warning{{never read}}
-  CFStringRef cf2 = (__bridge_retained CFStringRef)CreateNSString(); // expected-warning{{never read}}
-  CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething(); // expected-warning{{never read}}
-  CFStringRef cf4 = (__bridge CFStringRef)CreateNSString();  // expected-warning{{never read}}
-}
-
-void test_objc_retainedObject() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);
-  id x = objc_retainedObject(date);
-  (void) x;
-}
-
-void test_objc_unretainedObject() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);  // expected-warning {{Potential leak}}
-  id x = objc_unretainedObject(date);
-  (void) x;
-}
-
-// Previously this resulted in a "return of stack address" warning.
-id test_return() {
-  id x = (__bridge_transfer id) CFCreateString();
-  return x; // no-warning
-}
-
-void test_objc_arrays() {
-    { // CASE ONE -- OBJECT IN ARRAY CREATED DIRECTLY
-        NSObject *o = [[NSObject alloc] init];
-        NSArray *a = [[NSArray alloc] initWithObjects:o, (void*)0];
-        [a description];
-        [o description];
-    }
-
-    { // CASE TWO -- OBJECT IN ARRAY CREATED BY DUPING AUTORELEASED ARRAY
-        NSObject *o = [[NSObject alloc] init];
-        NSArray *a1 = [NSArray arrayWithObjects:o, (void*)0];
-        NSArray *a2 = [[NSArray alloc] initWithArray:a1];
-        [a2 description];
-        [o description];
-    }
-
-    { // CASE THREE -- OBJECT IN RETAINED @[]
-        NSObject *o = [[NSObject alloc] init];
-        NSArray *a3 = @[o];
-        [a3 description];
-        [o description];
-    }
-    {
-      // CASE 4, verify analyzer still working.
-      CFCreateString(); // expected-warning {{leak}}
-    }
-}
-
-// <rdar://problem/11059275> - dispatch_set_context and ARC.
-__attribute__((cf_returns_retained)) CFTypeRef CFBridgingRetain(id X);
-typedef void* dispatch_object_t;
-void dispatch_set_context(dispatch_object_t object, const void *context);
-
-void rdar11059275(dispatch_object_t object) {
-  NSObject *o = [[NSObject alloc] init];
-  dispatch_set_context(object, CFBridgingRetain(o)); // no-warning  
-}
-void rdar11059275_positive() {
-  NSObject *o = [[NSObject alloc] init]; // expected-warning {{leak}}
-  CFBridgingRetain(o);
-}
-void rdar11059275_negative() {
-  NSObject *o = [[NSObject alloc] init]; // no-warning
-  (void) o;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc-bool.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc-bool.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc-bool.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang --analyze %s -o %t -Xclang -verify
-// expected-no-diagnostics
-
-// Test handling of ObjC bool literals.
-
-typedef signed char BOOL;
-
-void rdar_10597458() {
-  if (__objc_yes)
-    return;
-  int *p = 0;
-  *p = 0xDEADBEEF; // no-warning
-}
-
-void rdar_10597458_b(BOOL b) {
-  if (b == __objc_no)
-    return;
-  
-  if (b == __objc_no) {
-    int *p = 0;
-    *p = 0xDEADBEEF; // no-warning
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc-boxing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc-boxing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc-boxing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store=region -verify %s
-
-typedef signed char BOOL;
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
- at interface NSString @end
- at interface NSString (NSStringExtensionMethods)
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end
-
- at interface NSNumber
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value ;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value ;
- at end
-
-
-extern char *strdup(const char *str);
-
-id constant_string() {
-    return @("boxed constant string.");
-}
-
-id dynamic_string() {
-    return @(strdup("boxed dynamic string")); // expected-warning{{Potential memory leak}}
-}
-
-id const_char_pointer(int *x) {
-  if (x)
-    return @(3);
-  return @(*x); // expected-warning {{Dereference of null pointer (loaded from variable 'x')}}
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc-for.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc-for.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc-for.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,70 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.Loops,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(int);
-
-#define nil ((id)0)
-
- at protocol NSFastEnumeration
-- (int)countByEnumeratingWithState:(void *)state objects:(id *)objects count:(unsigned)count;
- at end
-
- at interface NSObject
-+ (instancetype)testObject;
- at end
-
- at interface NSEnumerator <NSFastEnumeration>
- at end
-
- at interface NSArray : NSObject <NSFastEnumeration>
-- (NSEnumerator *)objectEnumerator;
- at end
-
- at interface NSDictionary : NSObject <NSFastEnumeration>
- at end
-
- at interface NSMutableDictionary : NSDictionary
- at end
-
- at interface NSSet : NSObject <NSFastEnumeration>
- at end
-
- at interface NSPointerArray : NSObject <NSFastEnumeration>
- at end
-
-void test() {
-  id x;
-  for (x in [NSArray testObject])
-    clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-
-  for (x in [NSMutableDictionary testObject])
-    clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-
-  for (x in [NSSet testObject])
-    clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-
-  for (x in [[NSArray testObject] objectEnumerator])
-    clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-
-  for (x in [NSPointerArray testObject])
-    clang_analyzer_eval(x != nil); // expected-warning{{UNKNOWN}}
-}
-
-void testWithVarInFor() {
-  for (id x in [NSArray testObject])
-    clang_analyzer_eval(x != nil); // expected-warning{{TRUE}}
-  for (id x in [NSPointerArray testObject])
-    clang_analyzer_eval(x != nil); // expected-warning{{UNKNOWN}}
-}
-
-void testNonNil(id a, id b) {
-  clang_analyzer_eval(a != nil); // expected-warning{{UNKNOWN}}
-  for (id x in a)
-    clang_analyzer_eval(a != nil); // expected-warning{{TRUE}}
-
-  if (b != nil)
-    return;
-  for (id x in b)
-    *(volatile int *)0 = 1; // no-warning
-  clang_analyzer_eval(b != nil); // expected-warning{{FALSE}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc-method-coverage.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc-method-coverage.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc-method-coverage.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// REQUIRES: asserts
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-stats -fblocks %s 2>&1 | FileCheck %s
- at interface I
-int f() {
-  return 0;
-}
- at end
-
- at implementation I
-+ (void *)ff{
-  return (void*)0;  
-}
- at end
-
-// CHECK: ... Statistics Collected ...
-// CHECK: 2 AnalysisConsumer - The # of functions and blocks analyzed (as top level with inlining turned on).
-// CHECK: 100 AnalysisConsumer - The % of reachable basic blocks.

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc-properties.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc-properties.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc-properties.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.osx.cocoa.DirectIvarAssignment -fobjc-default-synthesize-properties -verify -fblocks %s
-
-typedef signed char BOOL;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
- at end
-
- at interface MyClass;
- at end
- at interface TestProperty :NSObject {
-  MyClass *_Z;
-  id _nonSynth;
-}
-
-  @property (assign, nonatomic) MyClass* A; // explicitely synthesized, not implemented, non-default ivar name
-
-  @property (assign) MyClass* X;  // automatically synthesized, not implemented
-
-  @property (assign, nonatomic) MyClass* Y; // automatically synthesized, implemented
-
-  @property (assign, nonatomic) MyClass* Z; // non synthesized ivar, implemented setter
-  @property (readonly) id nonSynth;  // non synthesized, explicitly implemented to return ivar with expected name
-  
-  - (id) initWithPtr:(MyClass*) value;
-  - (id) myInitWithPtr:(MyClass*) value;
-  - (void) someMethod: (MyClass*)In;
- at end
-
- at implementation TestProperty
-  @synthesize A = __A;
-  
-  - (id) initWithPtr: (MyClass*) value {
-    _Y = value; // no-warning
-    return self;
-  }
-
-  - (id) copyWithPtrY: (TestProperty*) value {
-    TestProperty *another = [[TestProperty alloc] init];
-    another->_Y = value->_Y; // no-warning
-    return another;
-  }
-
-  - (id) myInitWithPtr: (MyClass*) value {
-    _Y = value; // no-warning
-    return self;
-  }
-  
-  - (void) setY:(MyClass*) NewValue {
-    _Y = NewValue; // no-warning
-  }
-
-  - (void) setZ:(MyClass*) NewValue {
-    _Z = NewValue; // no-warning
-  }
-
-  - (id)nonSynth {
-      return _nonSynth;
-  }
-
-  - (void) someMethod: (MyClass*)In {
-    (__A) = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _X = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _Y = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _Z = In; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-    _nonSynth = 0; // expected-warning {{Direct assignment to an instance variable backing a property; use the setter instead}}
-  }
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc-string.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc-string.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc-string.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(bool);
- at class NSString;
-
-void sanity() {
-  clang_analyzer_eval(@""); // expected-warning{{TRUE}}
-  clang_analyzer_eval(@"abc"); // expected-warning{{TRUE}}
-}
-
-namespace rdar13773117 {
-  NSString *const kConstantGlobalString = @"foo";
-  NSString *globalString = @"bar";
-
-  extern void invalidateGlobals();
-
-  void testGlobals() {
-    clang_analyzer_eval(kConstantGlobalString); // expected-warning{{TRUE}}
-    clang_analyzer_eval(globalString); // expected-warning{{UNKNOWN}}
-
-    globalString = @"baz";
-    clang_analyzer_eval(globalString); // expected-warning{{TRUE}}
-
-    invalidateGlobals();
-
-    clang_analyzer_eval(kConstantGlobalString); // expected-warning{{TRUE}}
-    clang_analyzer_eval(globalString); // expected-warning{{UNKNOWN}}
-  }
-
-  NSString *returnString(NSString *input = @"garply") {
-    return input;
-  }
-
-  void testDefaultArg() {
-    clang_analyzer_eval(returnString(@"")); // expected-warning{{TRUE}}
-    clang_analyzer_eval(returnString(0)); // expected-warning{{FALSE}}
-    clang_analyzer_eval(returnString()); // expected-warning{{TRUE}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc-subscript.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc-subscript.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc-subscript.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify -Wno-objc-root-class %s
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-
- at interface NSObject
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
- at end
-
- at interface Subscriptable : NSObject
-- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index;
-- (id)objectAtIndexedSubscript:(NSUInteger)index;
-
-- (void)setObject:(id)obj forKeyedSubscript:(id)key;
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
- at interface Test : Subscriptable
- at end
-
- at implementation Test
-
-// <rdar://problem/6946338> for subscripting
-- (id)storeDoesNotRetain {
-  Test *cell = [[[Test alloc] init] autorelease];
-
-  NSObject *string1 = [[NSObject alloc] init]; // expected-warning {{Potential leak}}
-  cell[0] = string1;
-  cell[self] = string1;
-  cell[string1] = self;
-
-  return cell;
-}
-
-// <rdar://problem/8824416> for subscripting
-- (id)getDoesNotRetain:(BOOL)keyed {
-  if (keyed)
-    return [self[self] autorelease]; // expected-warning{{Object autoreleased too many times}}
-  else
-    return [self[0] autorelease]; // expected-warning{{Object autoreleased too many times}}
-}
-
-// <rdar://problem/9241180> for subscripting
-- (id)testUninitializedObject:(BOOL)keyed {
-  Test *o;
-  if (keyed) {
-    if (o[self]) // expected-warning {{Subscript access on an uninitialized object pointer}}
-      return o; // no-warning (sink)
-  } else {
-    if (o[0]) // expected-warning {{Subscript access on an uninitialized object pointer}}
-      return o; // no-warning (sink)
-  }
-  return self;
-}
-
-- (void)testUninitializedArgument:(id)input testCase:(unsigned)testCase {
-  NSUInteger i;
-  id o;
-
-  switch (testCase) {
-  case 0:
-    self[0] = o; // expected-warning {{Argument for subscript setter is an uninitialized value}}
-    break;
-  case 1:
-    self[i] = input; // expected-warning {{Subscript index is an uninitialized value}}
-    break;
-  case 2:
-    (void)self[i]; // expected-warning {{Subscript index is an uninitialized value}}
-    break;
-  case 3:
-    self[input] = o; // expected-warning {{Argument for subscript setter is an uninitialized value}}
-    break;
-  case 4:
-    self[o] = input; // expected-warning {{Subscript index is an uninitialized value}}
-    break;
-  case 5:
-    (void)self[o]; // expected-warning {{Subscript index is an uninitialized value}}
-    break;
-  default:
-    break;
-  }
-
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/objc_invalidation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/objc_invalidation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/objc_invalidation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,377 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.osx.cocoa.InstanceVariableInvalidation -DRUN_IVAR_INVALIDATION -fobjc-default-synthesize-properties -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.osx.cocoa.MissingInvalidationMethod -DRUN_MISSING_INVALIDATION_METHOD -fobjc-default-synthesize-properties -verify %s
-extern void __assert_fail (__const char *__assertion, __const char *__file,
-    unsigned int __line, __const char *__function)
-     __attribute__ ((__noreturn__));
-
-#define assert(expr) \
-  ((expr)  ? (void)(0)  : __assert_fail (#expr, __FILE__, __LINE__, __func__))
-
- at protocol NSObject
- at end
- at interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
--(id)description;
- at end
- at class NSString;
-
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-
- at protocol Invalidation1 <NSObject> 
-- (void) invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
- at end 
-
- at protocol Invalidation2 <NSObject> 
-- (void) invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
- at end 
-
- at protocol Invalidation3 <NSObject>
-- (void) invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
-- (void) invalidate2 __attribute__((annotate("objc_instance_variable_invalidator")));
- at end
-
- at protocol Invalidation3;
- at protocol Invalidation2;
-
- at interface Invalidation2Class <Invalidation2>
- at end
-
- at interface Invalidation1Class <Invalidation1>
- at end
-
- at interface ClassWithInvalidationMethodInCategory <NSObject>
- at end
-
- at interface ClassWithInvalidationMethodInCategory ()
-- (void) invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
- at end
-
- at interface SomeInvalidationImplementingObject: NSObject <Invalidation3, Invalidation2> {
-  SomeInvalidationImplementingObject *ObjA; // invalidation in the parent
-}
- at end
-
- at implementation SomeInvalidationImplementingObject
-- (void)invalidate{
-  ObjA = 0;
-}
-- (void)invalidate2 {
-  [self invalidate];
-}
- at end
-
- at interface SomeSubclassInvalidatableObject : SomeInvalidationImplementingObject {
-  SomeInvalidationImplementingObject *Ivar1; // regular ivar
-  SomeInvalidationImplementingObject *Ivar2; // regular ivar, sending invalidate message
-  SomeInvalidationImplementingObject *_Ivar3; // no property, call -description
-  SomeInvalidationImplementingObject *_Ivar4; // no property, provide as argument to NSLog()
-
-  SomeInvalidationImplementingObject *_Prop1; // partially implemented property, set to 0 with dot syntax
-  SomeInvalidationImplementingObject *_Prop2; // fully implemented prop, set to 0 with dot syntax
-  SomeInvalidationImplementingObject *_propIvar; // property with custom named ivar, set to 0 via setter
-  Invalidation1Class *MultipleProtocols; // regular ivar belonging to a different class
-  Invalidation2Class *MultInheritance; // regular ivar belonging to a different class
-  SomeInvalidationImplementingObject *_Prop3; // property, invalidate via sending a message to a getter method
-  SomeInvalidationImplementingObject *_Prop4; // property with @synthesize, invalidate via property
-  SomeInvalidationImplementingObject *_Prop5; // property with @synthesize, invalidate via getter method
-  SomeInvalidationImplementingObject *_Prop8;
-  
-  // Ivars invalidated by the partial invalidator. 
-  SomeInvalidationImplementingObject *Ivar9;
-  SomeInvalidationImplementingObject *_Prop10;
-  SomeInvalidationImplementingObject *Ivar11;
-
-  // No warnings on these as they are not invalidatable.
-  NSObject *NIvar1;
-  NSObject *NObj2;
-  NSObject *_NProp1;
-  NSObject *_NpropIvar;
-}
-
- at property (assign) SomeInvalidationImplementingObject* Prop0;
- at property (nonatomic, assign) SomeInvalidationImplementingObject* Prop1;
- at property (assign) SomeInvalidationImplementingObject* Prop2;
- at property (assign) SomeInvalidationImplementingObject* Prop3;
- at property (assign) SomeInvalidationImplementingObject *Prop5;
- at property (assign) SomeInvalidationImplementingObject *Prop4;
-
- at property (assign) SomeInvalidationImplementingObject* Prop6; // automatically synthesized prop
- at property (assign) SomeInvalidationImplementingObject* Prop7; // automatically synthesized prop
- at property (assign) SomeInvalidationImplementingObject *SynthIvarProp;
-
- at property (assign) NSObject* NProp0;
- at property (nonatomic, assign) NSObject* NProp1;
- at property (assign) NSObject* NProp2;
-
--(void)setProp1: (SomeInvalidationImplementingObject*) InO;
--(void)setNProp1: (NSObject*) InO;
-
--(void)invalidate;
-
-// Partial invalidators invalidate only some ivars. They are guaranteed to be 
-// called before the invalidation methods.
--(void)partialInvalidator1 __attribute__((annotate("objc_instance_variable_invalidator_partial")));
--(void)partialInvalidator2 __attribute__((annotate("objc_instance_variable_invalidator_partial")));
- at end
-
- at interface SomeSubclassInvalidatableObject()
- at property (assign) SomeInvalidationImplementingObject* Prop8;
- at property (assign) SomeInvalidationImplementingObject* Prop10;
- at end
-
- at implementation SomeSubclassInvalidatableObject{
-  @private
-  SomeInvalidationImplementingObject *Ivar5;
-  ClassWithInvalidationMethodInCategory *Ivar13;
-}
-
- at synthesize Prop7 = _propIvar;
- at synthesize Prop3 = _Prop3;
- at synthesize Prop5 = _Prop5;
- at synthesize Prop4 = _Prop4;
- at synthesize Prop8 = _Prop8;
- at synthesize Prop10 = _Prop10;
-
-
-- (void) setProp1: (SomeInvalidationImplementingObject*) InObj {
-  _Prop1 = InObj;
-}
-
-- (void) setProp2: (SomeInvalidationImplementingObject*) InObj {
-  _Prop2 = InObj;
-}
-- (SomeInvalidationImplementingObject*) Prop2 {
-  return _Prop2;
-}
-
- at synthesize NProp2 = _NpropIvar;
-
-- (void) setNProp1: (NSObject*) InObj {
-  _NProp1 = InObj;
-}
-
-- (void) invalidate {
-   [Ivar2 invalidate];
-   self.Prop0 = 0;
-   self.Prop1 = 0;
-   [self setProp2:0];
-   [self setProp3:0];
-   [[self Prop5] invalidate2];
-   [self.Prop4 invalidate];
-   [self.Prop8 invalidate];
-   self.Prop6 = 0;
-   [[self Prop7] invalidate];
-
-   [_Ivar3 description]; 
-   NSLog(@"%@", _Ivar4);
-   [super invalidate];
-}
-#if RUN_IVAR_INVALIDATION
-// expected-warning at -2 {{Instance variable Ivar1 needs to be invalidated}}
-// expected-warning at -3 {{Instance variable MultipleProtocols needs to be invalidated}}
-// expected-warning at -4 {{Instance variable MultInheritance needs to be invalidated}}
-// expected-warning at -5 {{Property SynthIvarProp needs to be invalidated or set to nil}}
-// expected-warning at -6 {{Instance variable _Ivar3 needs to be invalidated}}
-// expected-warning at -7 {{Instance variable _Ivar4 needs to be invalidated}}
-// expected-warning at -8 {{Instance variable Ivar5 needs to be invalidated or set to nil}}
-// expected-warning at -9 {{Instance variable Ivar13 needs to be invalidated or set to nil}}
-#endif
-
--(void)partialInvalidator1 {
-  [Ivar9 invalidate];
-  [_Prop10 invalidate];
-}
-
--(void)partialInvalidator2 {
-  [Ivar11 invalidate];
-}
-
- at end
-
-// Example, where the same property is inherited through 
-// the parent and directly through a protocol. If a property backing ivar is 
-// synthesized in the parent, let the parent invalidate it.
-
- at protocol IDEBuildable <NSObject>
- at property (readonly, strong) id <Invalidation2> ObjB;
- at end
-
- at interface Parent : NSObject <IDEBuildable, Invalidation2> {
-  Invalidation2Class *_ObjB; // Invalidation of ObjB happens in the parent.
-}
- at end
-
- at interface Child: Parent <Invalidation2, IDEBuildable> 
- at end
-
- at implementation Parent{
-  @private
-  Invalidation2Class *Ivar10;
-  Invalidation2Class *Ivar11;
-  Invalidation2Class *Ivar12;
-}
-
- at synthesize ObjB = _ObjB;
-- (void)invalidate{
-  _ObjB = ((void*)0);
-  
-  assert(Ivar10 == 0);
-
-  if (__builtin_expect(!(Ivar11 == ((void*)0)), 0))
-    assert(0);
-
-  assert(0 == Ivar12);
-
-}
- at end
-
- at implementation Child
-- (void)invalidate{ 
-  // no-warning
-} 
- at end
-
- at protocol Invalidation <NSObject>
-- (void)invalidate __attribute__((annotate("objc_instance_variable_invalidator")));
- at end
-
- at interface Foo : NSObject <Invalidation>
- at end
-
- at class FooBar;
- at protocol FooBar_Protocol <NSObject>
- at end
-
- at interface MissingInvalidationMethod : Foo <FooBar_Protocol>
- at property (assign) MissingInvalidationMethod *foobar15_warn;
-#if RUN_IVAR_INVALIDATION
-// expected-warning at -2 {{Property foobar15_warn needs to be invalidated; no invalidation method is defined in the @implementation for MissingInvalidationMethod}}
-#endif
- at end
- at implementation MissingInvalidationMethod
- at end
-
- at interface MissingInvalidationMethod2 : Foo <FooBar_Protocol> {
-  Foo *Ivar1;
-#if RUN_IVAR_INVALIDATION
-// expected-warning at -2 {{Instance variable Ivar1 needs to be invalidated; no invalidation method is defined in the @implementation for MissingInvalidationMethod2}}
-#endif
-}
- at end
- at implementation MissingInvalidationMethod2
- at end
-
- at interface MissingInvalidationMethodDecl : NSObject {
-  Foo *Ivar1;
-#if RUN_MISSING_INVALIDATION_METHOD
-// expected-warning at -2 {{Instance variable Ivar1 needs to be invalidated; no invalidation method is declared for MissingInvalidationMethodDecl}}
-#endif
-}
- at end
- at implementation MissingInvalidationMethodDecl
- at end
-
- at interface MissingInvalidationMethodDecl2 : NSObject {
- at private
-    Foo *_foo1;
-#if RUN_MISSING_INVALIDATION_METHOD
-// expected-warning at -2 {{Instance variable _foo1 needs to be invalidated; no invalidation method is declared for MissingInvalidationMethodDecl2}}
-#endif
-}
- at property (strong) Foo *bar1; 
- at end
- at implementation MissingInvalidationMethodDecl2
- at end
-
- at interface InvalidatedInPartial : SomeInvalidationImplementingObject {
-  SomeInvalidationImplementingObject *Ivar1; 
-  SomeInvalidationImplementingObject *Ivar2; 
-}
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
- at end
- at implementation InvalidatedInPartial
--(void)partialInvalidator {
-  [Ivar1 invalidate];
-  Ivar2 = 0;
-}
- at end
-
- at interface NotInvalidatedInPartial : SomeInvalidationImplementingObject {
-  SomeInvalidationImplementingObject *Ivar1; 
-}
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
--(void)partialInvalidatorCallsPartial __attribute__((annotate("objc_instance_variable_invalidator_partial")));
- at end
- at implementation NotInvalidatedInPartial
--(void)partialInvalidator {
-}
--(void)partialInvalidatorCallsPartial {
-  [self partialInvalidator];
-}
-
--(void)invalidate {
-} 
-#if RUN_IVAR_INVALIDATION
-// expected-warning at -2 {{Instance variable Ivar1 needs to be invalidated or set to nil}}
-#endif
- at end
-
- at interface SomeNotInvalidatedInPartial : SomeInvalidationImplementingObject {
-  SomeInvalidationImplementingObject *Ivar1;
-  SomeInvalidationImplementingObject *Ivar2;
-#if RUN_IVAR_INVALIDATION
-  // expected-warning at -2 {{Instance variable Ivar2 needs to be invalidated or set to nil}}
-#endif
-}
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
--(void)partialInvalidatorCallsPartial __attribute__((annotate("objc_instance_variable_invalidator_partial")));
- at end
- at implementation SomeNotInvalidatedInPartial {
-  SomeInvalidationImplementingObject *Ivar3;
-#if RUN_IVAR_INVALIDATION
-  // expected-warning at -2 {{Instance variable Ivar3 needs to be invalidated or set to nil}}
-#endif
-}
--(void)partialInvalidator {
-  Ivar1 = 0;
-}
--(void)partialInvalidatorCallsPartial {
-  [self partialInvalidator];
-}
- at end
-
- at interface OnlyPartialDeclsBase : NSObject
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
- at end
- at implementation OnlyPartialDeclsBase
--(void)partialInvalidator {}
- at end
-
- at interface OnlyPartialDecls : OnlyPartialDeclsBase {
-  SomeInvalidationImplementingObject *Ivar1;
-#if RUN_IVAR_INVALIDATION
-  // expected-warning at -2 {{Instance variable Ivar1 needs to be invalidated; no invalidation method is defined in the @implementation for OnlyPartialDecls}}
-#endif
-}
- at end
- at implementation OnlyPartialDecls
- at end
-
-// False negative.
- at interface PartialCallsFull : SomeInvalidationImplementingObject {
-  SomeInvalidationImplementingObject *Ivar1;
-}
--(void)partialInvalidator __attribute__((annotate("objc_instance_variable_invalidator_partial")));
- at end
- at implementation PartialCallsFull
--(void)partialInvalidator {
- [self invalidate];
-} // TODO: It would be nice to check that the full invalidation method actually invalidates the ivar. 
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/operator-calls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/operator-calls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/operator-calls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -verify %s
-void clang_analyzer_eval(bool);
-
-struct X0 { };
-bool operator==(const X0&, const X0&);
-
-// PR7287
-struct test { int a[2]; };
-
-void t2() {
-  test p = {{1,2}};
-  test q;
-  q = p;
-}
-
-bool PR7287(X0 a, X0 b) {
-  return operator==(a, b);
-}
-
-
-// Inlining non-static member operators mistakenly treated 'this' as the first
-// argument for a while.
-
-struct IntComparable {
-  bool operator==(int x) const {
-    return x == 0;
-  }
-};
-
-void testMemberOperator(IntComparable B) {
-  clang_analyzer_eval(B == 0); // expected-warning{{TRUE}}
-}
-
-
-
-namespace UserDefinedConversions {
-  class Convertible {
-  public:
-    operator int() const {
-      return 42;
-    }
-    operator bool() const {
-      return true;
-    }
-  };
-
-  void test(const Convertible &obj) {
-    clang_analyzer_eval((int)obj == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(obj); // expected-warning{{TRUE}}
-  }
-}
-
-
-namespace RValues {
-  struct SmallOpaque {
-    float x;
-    int operator +() const {
-      return (int)x;
-    }
-  };
-
-  struct LargeOpaque {
-    float x[4];
-    int operator +() const {
-      return (int)x[0];
-    }
-  };
-
-  SmallOpaque getSmallOpaque() {
-    SmallOpaque obj;
-    obj.x = 1.0;
-    return obj;
-  }
-
-  LargeOpaque getLargeOpaque() {
-    LargeOpaque obj = LargeOpaque();
-    obj.x[0] = 1.0;
-    return obj;
-  }
-
-  void test(int coin) {
-    // Force a cache-out when we try to conjure a temporary region for the operator call.
-    // ...then, don't crash.
-    clang_analyzer_eval(+(coin ? getSmallOpaque() : getSmallOpaque())); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(+(coin ? getLargeOpaque() : getLargeOpaque())); // expected-warning{{UNKNOWN}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/out-of-bounds.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/out-of-bounds.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/out-of-bounds.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,156 +0,0 @@
-// RUN: %clang_cc1 -Wno-array-bounds -analyze -analyzer-checker=core,alpha.security.ArrayBoundV2 -verify %s
-
-// Tests doing an out-of-bounds access after the end of an array using:
-// - constant integer index
-// - constant integer size for buffer
-void test1(int x) {
-  int buf[100];
-  buf[100] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ok(int x) {
-  int buf[100];
-  buf[99] = 1; // no-warning
-}
-
-const char test1_strings_underrun(int x) {
-  const char *mystr = "mary had a little lamb";
-  return mystr[-1]; // expected-warning{{Out of bound memory access}}
-}
-
-const char test1_strings_overrun(int x) {
-  const char *mystr = "mary had a little lamb";
-  return mystr[1000];  // expected-warning{{Out of bound memory access}}
-}
-
-const char test1_strings_ok(int x) {
-  const char *mystr = "mary had a little lamb";
-  return mystr[5]; // no-warning
-}
-
-// Tests doing an out-of-bounds access after the end of an array using:
-// - indirect pointer to buffer
-// - constant integer index
-// - constant integer size for buffer
-void test1_ptr(int x) {
-  int buf[100];
-  int *p = buf;
-  p[101] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_ok(int x) {
-  int buf[100];
-  int *p = buf;
-  p[99] = 1; // no-warning
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer, manipulated using simple pointer arithmetic
-// - constant integer index
-// - constant integer size for buffer
-void test1_ptr_arith(int x) {
-  int buf[100];
-  int *p = buf;
-  p = p + 100;
-  p[0] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_arith_ok(int x) {
-  int buf[100];
-  int *p = buf;
-  p = p + 99;
-  p[0] = 1; // no-warning
-}
-
-void test1_ptr_arith_bad(int x) {
-  int buf[100];
-  int *p = buf;
-  p = p + 99;
-  p[1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test1_ptr_arith_ok2(int x) {
-  int buf[100];
-  int *p = buf;
-  p = p + 99;
-  p[-1] = 1; // no-warning
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - constant integer index
-// - constant integer size for buffer
-void test2(int x) {
-  int buf[100];
-  buf[-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer
-// - constant integer index
-// - constant integer size for buffer
-void test2_ptr(int x) {
-  int buf[100];
-  int *p = buf;
-  p[-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests doing an out-of-bounds access before the start of an array using:
-// - indirect pointer to buffer, manipulated using simple pointer arithmetic
-// - constant integer index
-// - constant integer size for buffer
-void test2_ptr_arith(int x) {
-  int buf[100];
-  int *p = buf;
-  --p;
-  p[0] = 1; // expected-warning {{Out of bound memory access (accessed memory precedes memory block)}}
-}
-
-// Tests doing an out-of-bounds access before the start of a multi-dimensional
-// array using:
-// - constant integer indices
-// - constant integer sizes for the array
-void test2_multi(int x) {
-  int buf[100][100];
-  buf[0][-1] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-// Tests doing an out-of-bounds access before the start of a multi-dimensional
-// array using:
-// - constant integer indices
-// - constant integer sizes for the array
-void test2_multi_b(int x) {
-  int buf[100][100];
-  buf[-1][0] = 1; // expected-warning{{Out of bound memory access}}
-}
-
-void test2_multi_ok(int x) {
-  int buf[100][100];
-  buf[0][0] = 1; // no-warning
-}
-
-// *** FIXME ***
-// We don't get a warning here yet because our symbolic constraint solving
-// doesn't handle:  (symbol * constant) < constant
-void test3(int x) {
-  int buf[100];
-  if (x < 0)
-    buf[x] = 1;
-}
-
-// *** FIXME ***
-// We don't get a warning here yet because our symbolic constraint solving
-// doesn't handle:  (symbol * constant) < constant
-void test4(int x) {
-  int buf[100];
-  if (x > 99)
-    buf[x] = 1; 
-}
-
-// Don't warn when indexing below the start of a symbolic region's whose
-// base extent we don't know.
-int *get_symbolic();
-void test_index_below_symboloc() {
-  int *buf = get_symbolic();
-  buf[-1] = 0; // no-warning;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/outofbound-notwork.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/outofbound-notwork.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/outofbound-notwork.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -Wno-array-bounds -analyze -analyzer-checker=core,alpha.security.ArrayBound -analyzer-store=region -verify %s
-// XFAIL: *
-
-// Once we better handle modeling of sizes of VLAs, we can pull this back
-// into outofbound.c.
-
-void sizeof_vla(int a) {
-  if (a == 5) {
-    char x[a];
-    int y[sizeof(x)];
-    y[4] = 4; // no-warning
-    y[5] = 5; // expected-warning{{out-of-bound}}
-  }
-}
-
-void sizeof_vla_2(int a) {
-  if (a == 5) {
-    char x[a];
-    int y[sizeof(x) / sizeof(char)];
-    y[4] = 4; // no-warning
-    y[5] = 5; // expected-warning{{out-of-bound}}
-  }
-}
-
-void sizeof_vla_3(int a) {
-  if (a == 5) {
-    char x[a];
-    int y[sizeof(*&*&*&x)];
-    y[4] = 4; // no-warning
-    y[5] = 5; // expected-warning{{out-of-bound}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/outofbound.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/outofbound.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/outofbound.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,124 +0,0 @@
-// RUN: %clang_cc1 -Wno-array-bounds -analyze -analyzer-checker=core,alpha.unix,alpha.security.ArrayBound -analyzer-store=region -verify %s
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void *calloc(size_t, size_t);
-
-char f1() {
-  char* s = "abcd";
-  char c = s[4]; // no-warning
-  return s[5] + c; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-void f2() {
-  int *p = malloc(12);
-  p[3] = 4; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-struct three_words {
-  int c[3];
-};
-
-struct seven_words {
-  int c[7];
-};
-
-void f3() {
-  struct three_words a, *p;
-  p = &a;
-  p[0] = a; // no-warning
-  p[1] = a; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-void f4() {
-  struct seven_words c;
-  struct three_words a, *p = (struct three_words *)&c;
-  p[0] = a; // no-warning
-  p[1] = a; // no-warning
-  p[2] = a; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-void f5() {
-  char *p = calloc(2,2);
-  p[3] = '.'; // no-warning
-  p[4] = '!'; // expected-warning{{out-of-bound}}
-}
-
-void f6() {
-  char a[2];
-  int *b = (int*)a;
-  b[1] = 3; // expected-warning{{out-of-bound}}
-}
-
-void f7() {
-  struct three_words a;
-  a.c[3] = 1; // expected-warning{{out-of-bound}}
-}
-
-void vla(int a) {
-  if (a == 5) {
-    int x[a];
-    x[4] = 4; // no-warning
-    x[5] = 5; // expected-warning{{out-of-bound}}
-  }
-}
-
-void alloca_region(int a) {
-  if (a == 5) {
-    char *x = __builtin_alloca(a);
-    x[4] = 4; // no-warning
-    x[5] = 5; // expected-warning{{out-of-bound}}
-  }
-}
-
-int symbolic_index(int a) {
-  int x[2] = {1, 2};
-  if (a == 2) {
-    return x[a]; // expected-warning{{out-of-bound}}
-  }
-  return 0;
-}
-
-int symbolic_index2(int a) {
-  int x[2] = {1, 2};
-  if (a < 0) {
-    return x[a]; // expected-warning{{out-of-bound}}
-  }
-  return 0;
-}
-
-int overflow_binary_search(double in) {
-  int eee = 16;
-  if (in < 1e-8 || in > 1e23) {
-    return 0;
-  } else {
-    static const double ins[] = {1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1,
-                                 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7,
-                                 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15,
-                                 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22};
-    if (in < ins[eee]) {
-      eee -= 8;
-    } else {
-      eee += 8;
-    }
-    if (in < ins[eee]) {
-      eee -= 4;
-    } else {
-      eee += 4;
-    }
-    if (in < ins[eee]) {
-      eee -= 2;
-    } else {
-      eee += 2;
-    }
-    if (in < ins[eee]) {
-      eee -= 1;
-    } else {
-      eee += 1;
-    }
-    if (in < ins[eee]) { // expected-warning {{Access out-of-bound array element (buffer overflow)}}
-      eee -= 1;
-    }
-  }
-  return eee;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/override-werror.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/override-werror.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/override-werror.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -Werror %s -analyzer-store=region -verify
-
-// This test case illustrates that using '-analyze' overrides the effect of
-// -Werror.  This allows basic warnings not to interfere with producing
-// analyzer results.
-
-char* f(int *p) { 
-  return p; // expected-warning{{incompatible pointer types}}
-}
-
-void g(int *p) {
-  if (!p) *p = 0; // expected-warning{{null}}  
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/plist-html-macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/plist-html-macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/plist-html-macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// REQUIRES: shell
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
-// (sanity check)
-
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-html -o %t.dir/index.plist %s
-// RUN: ls %t.dir | grep \\.html | count 1
-// RUN: grep \\.html %t.dir/index.plist | count 1
-
-// This tests two things: that the two calls to null_deref below are coalesced
-// into a single bug by both the plist and HTML diagnostics, and that the plist
-// diagnostics have a reference to the HTML diagnostics. (It would be nice to
-// check more carefully that the two actually match, but that's hard to write
-// in a lit RUN line.)
-
-#define CALL_FN(a) null_deref(a)
-
-void null_deref(int *a) {
-  if (a)
-    return;
-  *a = 1; // expected-warning{{null}}
-}
-
-void test1() {
-  CALL_FN(0);
-}
-
-void test2(int *p) {
-  CALL_FN(p);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/plist-output-alternate.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/plist-output-alternate.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/plist-output-alternate.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1373 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-output=plist -o %t %s
-// RUN: FileCheck --input-file %t %s
-
-void test_null_init(void) {
-  int *p = 0;
-  *p = 0xDEADBEEF;
-}
-
-void test_null_assign(void) {
-  int *p;
-  p = 0;
-  *p = 0xDEADBEEF;
-}
-
-void test_null_assign_transitive(void) {
-  int *p;
-  p = 0;
-  int *q = p;
-  *q = 0xDEADBEEF;
-}
-
-void test_null_cond(int *p) {
-  if (!p) {
-    *p = 0xDEADBEEF;
-  }
-}
-
-void test_null_cond_transitive(int *q) {
-  if (!q) {
-    int *p = q;
-    *p = 0xDEADBEEF;
-  }
-}
-
-void test_null_field(void) {
-  struct s { int *p; } x;
-  x.p = 0;
-  *(x.p) = 0xDEADBEEF;
-}
-
-// <rdar://problem/8331641> leak reports should not show paths that end with exit() (but ones that don't end with exit())
-void panic() __attribute__((noreturn));
-enum { kCFNumberSInt8Type = 1,     kCFNumberSInt16Type = 2,     kCFNumberSInt32Type = 3,     kCFNumberSInt64Type = 4,     kCFNumberFloat32Type = 5,     kCFNumberFloat64Type = 6,      kCFNumberCharType = 7,     kCFNumberShortType = 8,     kCFNumberIntType = 9,     kCFNumberLongType = 10,     kCFNumberLongLongType = 11,     kCFNumberFloatType = 12,     kCFNumberDoubleType = 13,      kCFNumberCFIndexType = 14,      kCFNumberNSIntegerType = 15,     kCFNumberCGFloatType = 16,     kCFNumberMaxType = 16    };
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-typedef signed long CFIndex;
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-
-void rdar8331641(int x) {
-  signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // expected-warning{{leak}}
-  if (x)
-    panic();
-  (void) value;
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>5</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>5</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>5</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>6</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_init</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>6</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>11</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>12</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>12</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>12</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_assign</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>12</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>16</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>16</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>17</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>17</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>17</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>18</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'q' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'q' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>19</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'q')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'q')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'q')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_assign_transitive</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>19</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>23</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>23</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>23</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_cond</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>24</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>29</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'q' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'q' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>30</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>30</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>30</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>31</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>31</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>31</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_cond_transitive</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>31</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>37</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>37</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>37</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'x.p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'x.p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>38</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_field</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>38</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>54</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>54</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>54</integer>
-// CHECK-NEXT:          <key>col</key><integer>82</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>54</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>55</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>55</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>55</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>58</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'value'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar8331641</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>58</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/plist-output.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/plist-output.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/plist-output.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5537 +0,0 @@
-// RUN: %clang --analyze %s -Xanalyzer -analyzer-checker=osx.cocoa.RetainCount -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-void test_null_init(void) {
-  int *p = 0;
-  *p = 0xDEADBEEF;
-}
-
-void test_null_assign(void) {
-  int *p;
-  p = 0;
-  *p = 0xDEADBEEF;
-}
-
-void test_null_assign_transitive(void) {
-  int *p;
-  p = 0;
-  int *q = p;
-  *q = 0xDEADBEEF;
-}
-
-void test_null_cond(int *p) {
-  if (!p) {
-    *p = 0xDEADBEEF;
-  }
-}
-  
-void test_null_cond_transitive(int *q) {
-  if (!q) {
-    int *p = q;
-    *p = 0xDEADBEEF;
-  }
-}
-
-void test_null_field(void) {
-  struct s { int *p; } x;
-  x.p = 0;
-  *(x.p) = 0xDEADBEEF;
-}
-
-void test_assumptions(int a, int b)
-{
-  if (a == 0) {
-    return;
-  }
-  if (b != 0) {
-    return;
-  }
-  int *p = 0;
-  *p = 0xDEADBEEF;
-}
-
-int *bar_cond_assign();
-int test_cond_assign() { 
-  int *p;
-  if (p = bar_cond_assign())
-    return 1;
-  return *p;
-}
-
-// The following previously crashed when generating extensive diagnostics.
-// <rdar://problem/10797980>
- at interface RDar10797980_help
- at property (readonly) int x;
- at end
-
- at interface RDar10797980 {
-  RDar10797980_help *y;
-}
-- (void) test;
- at end
-
- at implementation RDar10797980
-- (void) test {
-  if (y.x == 1) {
-    int *p = 0;
-    *p = 0xDEADBEEF; // expected-warning {{deference}}
-  }
-}
-
-// The original source for the above Radar contains another problem:
-// if the end-of-path node is an implicit statement, it may not have a valid
-// source location. <rdar://problem/12446776>
-- (void)test2 {
-  if (bar_cond_assign()) {
-    id foo = [[RDar10797980 alloc] init]; // leak
-  }
-  (void)y; // first statement after the 'if' is an implicit 'self' DeclRefExpr
-}
-
- at end
-
-// Test that loops are documented in the path.
-void rdar12280665() {
-  for (unsigned i = 0; i < 2; ++i) {
-	  if (i == 1) {
-		  int *p = 0;
-		  *p = 0xDEADBEEF; // expected-warning {{dereference}}
-	  }
-  }
-}
-
-// Test for a "loop executed 0 times" diagnostic.
-int *radar12322528_bar();
-
-void radar12322528_for(int x) {
-  int *p = 0;
-  for (unsigned i = 0; i < x; ++i) {
-    p = radar12322528_bar();
-  }
-  *p = 0xDEADBEEF;
-}
-
-void radar12322528_while(int x) {
-  int *p = 0;
-  unsigned i = 0;
-  for ( ; i < x ; ) {
-    ++i;
-    p = radar12322528_bar();
-  }
-  *p = 0xDEADBEEF;
-}
-
-void radar12322528_foo_2() {
-  int *p = 0;
-  for (unsigned i = 0; i < 2; ++i) {
-    if (i == 1)
-      break;
-  }
-  *p = 0xDEADBEEF;
-}
-
-void test_loop_diagnostics() {
-  int *p = 0;
-  for (int i = 0; i < 2; ++i) { p = 0; }
-  *p = 1;
-}
-
-void test_loop_diagnostics_2() {
-  int *p = 0;
-  for (int i = 0; i < 2; ) { 
-    ++i;
-    p = 0;
-  }
-  *p = 1;
-}
-
-void test_loop_diagnostics_3() {
-  int *p = 0;
-  int i = 0;
-  while (i < 2) {
-    ++i;
-    p = 0;
-  }
-  *p = 1;
-}
-
-void test_loop_fast_enumeration(id arr) {
-  int x;
-  for (id obj in arr) {
-    x = 1;
-  }
-  x += 1;
-}
-
- at interface RDar12114812 { char *p; }
- at end
-
- at implementation RDar12114812 
-- (void)test {
-  p = 0;        
-  *p = 1;
-}
- at end
-
-// Test diagnostics for initialization of structs.
-void RDar13295437_f(void *i) __attribute__((__nonnull__));
-
-struct  RDar13295437_S { int *i; };
-
-int  RDar13295437() {
-  struct RDar13295437_S s = {0};
-  struct RDar13295437_S *sp = &s;
-  RDar13295437_f(sp->i);
-}
-
- at interface Foo
-- (int *) returnsPointer;
- at end
-
-int testFoo(Foo *x) {
-  if (x)
-    return 1;
-  return *[x returnsPointer];
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>5</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>5</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>5</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>5</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>6</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>6</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>6</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_init</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>6</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>10</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>11</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>11</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>11</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>12</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>12</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>12</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>12</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_assign</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>12</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>16</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>16</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>17</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>17</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>17</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>17</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>18</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>18</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'q' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'q' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>18</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>19</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>19</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>19</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'q')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'q')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'q')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_assign_transitive</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>19</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>23</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>23</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>23</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>23</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>24</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>24</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>24</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_cond</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>24</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>29</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>29</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'q' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'q' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>29</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>30</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>30</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>30</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>30</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>31</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>31</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>31</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>31</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_cond_transitive</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>31</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>36</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>37</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>37</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>37</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'x.p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'x.p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>37</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>38</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>38</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>38</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from field 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_null_field</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>38</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>43</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>43</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>43</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'a' is not equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'a' is not equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>46</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'b' is equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'b' is equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>49</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>49</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>49</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>50</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>50</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>50</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_assumptions</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>50</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Value assigned to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Value assigned to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming pointer value is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>58</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_cond_assign</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>58</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>75</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>76</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>77</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>77</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>86</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Value stored to 'foo' during its initialization is never read</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Value stored to 'foo' during its initialization is never read</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Value stored to 'foo' during its initialization is never read</string>
-// CHECK-NEXT:    <key>category</key><string>Dead store</string>
-// CHECK-NEXT:    <key>type</key><string>Dead initialization</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>86</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>85</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>85</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>86</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>86</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>86</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>88</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'foo' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'foo' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'foo'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>88</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>100</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>100</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>100</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>100</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>95</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>95</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>95</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>97</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>97</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>97</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>98</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>98</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>98</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>98</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>98</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar12280665</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>98</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>107</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>107</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>107</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>107</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>107</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>108</integer>
-// CHECK-NEXT:       <key>col</key><integer>24</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>108</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>108</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'i' is >= 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'i' is >= 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>108</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>108</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>108</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Loop body executed 0 times</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Loop body executed 0 times</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>111</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>111</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>111</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>111</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>radar12322528_for</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>111</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>115</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>115</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>115</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>115</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>115</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>117</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>117</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>117</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'i' is >= 'x'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'i' is >= 'x'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>117</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>117</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>117</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Loop body executed 0 times</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Loop body executed 0 times</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>117</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>121</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>121</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>121</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>121</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>121</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>121</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>121</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>121</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>121</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>radar12322528_while</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>7</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>121</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>125</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>125</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>125</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>125</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>125</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>126</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>126</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>126</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>126</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>127</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>128</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>130</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>130</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>130</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>130</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>130</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>130</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>130</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>130</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>130</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>radar12322528_foo_2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>130</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>135</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>135</integer>
-// CHECK-NEXT:       <key>col</key><integer>33</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>33</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>33</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>135</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>136</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>136</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>136</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_loop_diagnostics</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>136</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>140</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>140</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>144</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>144</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>144</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>144</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>141</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>141</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>141</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>142</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>143</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>143</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>143</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>143</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>144</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>144</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>144</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>144</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>141</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>141</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>141</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>145</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>145</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>145</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>145</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>145</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>145</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>145</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>145</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>145</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_loop_diagnostics_2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>145</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>149</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>149</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>151</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>151</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>151</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>152</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>153</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>153</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>153</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>153</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>154</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>151</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>151</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>151</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Looping back to the head of the loop</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>151</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>155</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>155</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>155</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>155</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>155</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>155</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>155</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>155</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>155</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_loop_diagnostics_3</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>7</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>155</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>163</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>163</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>163</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Value stored to 'x' is never read</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Value stored to 'x' is never read</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Value stored to 'x' is never read</string>
-// CHECK-NEXT:    <key>category</key><string>Dead store</string>
-// CHECK-NEXT:    <key>type</key><string>Dead increment</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_loop_fast_enumeration</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>163</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>159</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>159</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>159</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'x' declared without an initial value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'x' declared without an initial value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>159</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>159</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>160</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>160</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>160</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Loop body executed 0 times</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Loop body executed 0 times</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>163</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>163</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>163</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>163</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>163</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>163</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>163</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>163</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>163</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Assigned value is garbage or undefined</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_loop_fast_enumeration</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>163</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>171</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>171</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>171</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer value stored to 'p'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>171</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>171</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>172</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>172</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>172</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>172</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>172</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from ivar 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from ivar 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from ivar 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>172</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>182</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>182</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>182</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'s.i' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'s.i' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>182</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>182</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>184</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>184</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>184</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer passed as an argument to a 'nonnull' parameter</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer passed as an argument to a 'nonnull' parameter</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Null pointer passed as an argument to a 'nonnull' parameter</string>
-// CHECK-NEXT:    <key>category</key><string>API</string>
-// CHECK-NEXT:    <key>type</key><string>Argument with 'nonnull' attribute passed null</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>RDar13295437</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>184</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>192</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>192</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>192</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>194</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>194</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>194</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'returnsPointer' not called because the receiver is nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'returnsPointer' not called because the receiver is nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>194</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>194</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>194</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>194</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testFoo</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>194</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/pointer-to-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/pointer-to-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/pointer-to-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(bool);
-
-struct A {
-  // This conversion operator allows implicit conversion to bool but not to other integer types.
-  typedef A * (A::*MemberPointer);
-  operator MemberPointer() const { return m_ptr ? &A::m_ptr : 0; }
-
-  A *m_ptr;
-
-  A *getPtr();
-  typedef A * (A::*MemberFnPointer)(void);
-};
-
-void testConditionalUse() {
-  A obj;
-
-  obj.m_ptr = &obj;
-  clang_analyzer_eval(obj.m_ptr); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&A::m_ptr); // expected-warning{{TRUE}}
-  clang_analyzer_eval(obj); // expected-warning{{TRUE}}
-
-  obj.m_ptr = 0;
-  clang_analyzer_eval(obj.m_ptr); // expected-warning{{FALSE}}
-  clang_analyzer_eval(A::MemberPointer(0)); // expected-warning{{FALSE}}
-  clang_analyzer_eval(obj); // expected-warning{{FALSE}}
-
-  clang_analyzer_eval(&A::getPtr); // expected-warning{{TRUE}}
-  clang_analyzer_eval(A::MemberFnPointer(0)); // expected-warning{{FALSE}}
-}
-
-
-void testComparison() {
-  clang_analyzer_eval(&A::getPtr == &A::getPtr); // expected-warning{{TRUE}}
-
-  // FIXME: Should be TRUE.
-  clang_analyzer_eval(&A::m_ptr == &A::m_ptr); // expected-warning{{UNKNOWN}}
-}
-
-namespace PR15742 {
-  template <class _T1, class _T2> struct A {
-    A (const _T1 &, const _T2 &);
-  };
-  
-  typedef void *NPIdentifier;
-
-  template <class T> class B {
-  public:
-    typedef A<NPIdentifier, bool (T::*) (const NPIdentifier *, unsigned,
-                                         NPIdentifier *)> MethodMapMember;
-  };
-
-  class C : public B<C> {
-  public:
-    bool Find(const NPIdentifier *, unsigned, NPIdentifier *);
-  };
-
-  void InitStaticData () {
-    C::MethodMapMember(0, &C::Find); // don't crash
-  }
-}
-
-// ---------------
-// FALSE NEGATIVES
-// ---------------
-
-bool testDereferencing() {
-  A obj;
-  obj.m_ptr = 0;
-
-  A::MemberPointer member = &A::m_ptr;
-
-  // FIXME: Should be TRUE.
-  clang_analyzer_eval(obj.*member == 0); // expected-warning{{UNKNOWN}}
-
-  member = 0;
-
-  // FIXME: Should emit a null dereference.
-  return obj.*member; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/pr4209.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/pr4209.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/pr4209.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -Wno-incomplete-implementation -verify %s
-
-// This test case was crashing due to how CFRefCount.cpp resolved the
-// ObjCInterfaceDecl* and ClassName in EvalObjCMessageExpr.
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end    @interface NSObject <NSObject> {
-}
- at end  typedef float CGFloat;
-typedef struct _NSPoint {
-}
-NSFastEnumerationState;
- at protocol NSFastEnumeration  - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end        @class NSString;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end    @interface NSMutableArray : NSArray  - (void)addObject:(id)anObject;
- at end         typedef unsigned short unichar;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>    - (NSUInteger)length;
-- (int)intValue;
- at end @interface NSSimpleCString : NSString {
-}
- at end  @interface NSConstantString : NSSimpleCString @end   extern void *_NSConstantStringClassReference;
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end    @interface NSMutableDictionary : NSDictionary  - (void)removeObjectForKey:(id)aKey;
- at end       typedef struct {
-}
-CMProfileLocation;
- at interface NSResponder : NSObject <NSCoding> {
-}
- at end  @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView;
- at interface NSCell : NSObject <NSCopying, NSCoding> {
-}
- at end  extern NSString *NSControlTintDidChangeNotification;
- at interface NSActionCell : NSCell {
-}
- at end  @class NSArray, NSDocument, NSWindow;
- at interface NSWindowController : NSResponder <NSCoding> {
-}
- at end         @class EBayCategoryType, GSEbayCategory, GBSearchRequest;
- at interface GBCategoryChooserPanelController : NSWindowController {
-  GSEbayCategory *rootCategory;
-}
-- (NSMutableDictionary*)categoryDictionaryForCategoryID:(int)inID inRootTreeCategories:(NSMutableArray*)inRootTreeCategories;
--(NSString*) categoryID; // expected-note {{using}}
- at end @interface GSEbayCategory : NSObject <NSCoding> {
-}
-- (int) categoryID; // expected-note {{also found}}
-- (GSEbayCategory *) parent;
-- (GSEbayCategory*) subcategoryWithID:(int) inID;
- at end   @implementation GBCategoryChooserPanelController  + (int) chooseCategoryIDFromCategories:(NSArray*) inCategories        searchRequest:(GBSearchRequest*)inRequest         parentWindow:(NSWindow*) inParent {
-  return 0;
-}
-- (void) addCategory:(EBayCategoryType*)inCategory toRootTreeCategory:(NSMutableArray*)inRootTreeCategories {
-  GSEbayCategory *category = [rootCategory subcategoryWithID:[[inCategory categoryID] intValue]]; // expected-warning {{multiple methods named 'categoryID' found}}
-
-  if (rootCategory != category)  {
-    GSEbayCategory *parent = category;
-    while ((((void*)0) != (parent = [parent parent])) && ([parent categoryID] != 0))   {
-      NSMutableDictionary *treeCategoryDict = [self categoryDictionaryForCategoryID:[parent categoryID] inRootTreeCategories:inRootTreeCategories];
-      if (((void*)0) == treeCategoryDict)    {
-      }
-    }
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/pr_2542_rdar_6793404.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/pr_2542_rdar_6793404.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/pr_2542_rdar_6793404.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -pedantic -analyzer-store=region -verify -Wno-objc-root-class %s
-
-// BEGIN delta-debugging reduced header stuff
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSCoder;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
- at end
-typedef double NSTimeInterval;
-enum { NSAnimationEaseInOut, NSAnimationEaseIn, NSAnimationEaseOut, NSAnimationLinear };
-typedef NSUInteger NSAnimationCurve;
- at interface NSAnimation : NSObject <NSCopying, NSCoding> {}
-- (id)initWithDuration:(NSTimeInterval)duration animationCurve:(NSAnimationCurve)animationCurve;
-- (void)startAnimation;
-- (void)setDelegate:(id)delegate;
- at end
-
-// END delta-debugging reduced header stuff
-
-// From NSAnimation Class Reference
-// -(void)startAnimation
-// The receiver retains itself and is then autoreleased at the end 
-// of the animation or when it receives stopAnimation.
-
- at interface MyClass { }
-- (void)animationDidEnd:(NSAnimation *)animation;
- at end
-
- at implementation MyClass
-- (void)f1 {  
-  // NOTE: The analyzer doesn't really handle this; it just stops tracking
-  // 'animation' when it is sent the message 'setDelegate:'.
-  NSAnimation *animation = [[NSAnimation alloc]   // no-warning
-                            initWithDuration:1.0 
-                            animationCurve:NSAnimationEaseInOut];
-  
-  [animation setDelegate:self];
-  [animation startAnimation]; 
-}
-
-- (void)f2 {
-  NSAnimation *animation = [[NSAnimation alloc]  // expected-warning{{leak}}
-                            initWithDuration:1.0 
-                            animationCurve:NSAnimationEaseInOut];
-
-  [animation startAnimation]; 
-}
-
-- (void)animationDidEnd:(NSAnimation *)animation {
-  [animation release];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/pr_4164.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/pr_4164.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/pr_4164.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-
-// PR 4164: http://llvm.org/bugs/show_bug.cgi?id=4164
-//
-// Eventually this should be pulled into misc-ps.m.  This is in a separate test
-// file for now to play around with the specific issues for BasicStoreManager
-// and StoreManager (i.e., we can make a copy of this file for either
-// StoreManager should one start to fail in the near future).
-//
-// The basic issue is that the VarRegion for 'size' is casted to (char*),
-// resulting in an ElementRegion.  'getsockopt' is an unknown function that
-// takes a void*, which means the ElementRegion should get stripped off.
-typedef unsigned int __uint32_t;
-typedef __uint32_t __darwin_socklen_t;
-typedef __darwin_socklen_t socklen_t;
-int getsockopt(int, int, int, void * restrict, socklen_t * restrict);
-
-int test1() {
-  int s = -1;
-  int size;
-  socklen_t size_len = sizeof(size);
-  if (getsockopt(s, 0xffff, 0x1001, (char *)&size, &size_len) < 0)
-          return -1;
-
-  return size; // no-warning
-}
-
-// Similar case: instead of passing a 'void*', we pass 'char*'.  In this
-// case we pass an ElementRegion to the invalidation logic.  Since it is
-// an ElementRegion that just layers on top of another typed region and the
-// ElementRegion itself has elements whose type are integral (essentially raw
-// data) we strip off the ElementRegion when doing the invalidation.
-int takes_charptr(char* p);
-int test2() {
-  int size;
-  if (takes_charptr((char*)&size))
-    return -1;
-  return size; // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/properties.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/properties.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/properties.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify -Wno-objc-root-class %s
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
--(id)autorelease;
--(id)copy;
--(id)retain;
- at end
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
--(id)initWithFormat:(NSString *)f,...;
--(BOOL)isEqualToString:(NSString *)s;
-+ (id)string;
- at end
- at interface NSNumber : NSObject {}
-+(id)alloc;
--(id)initWithInteger:(int)i;
- at end
-
-// rdar://6946338
-
- at interface Test1 : NSObject {
-  NSString *text;
-}
--(id)myMethod;
- at property (nonatomic, assign) NSString *text;
- at end
-
-
- at implementation Test1
-
- at synthesize text;
-
--(id)myMethod {
-  Test1 *cell = [[[Test1 alloc] init] autorelease];
-
-  NSString *string1 = [[NSString alloc] initWithFormat:@"test %f", 0.0]; // expected-warning {{Potential leak}}
-  cell.text = string1;
-
-  return cell;
-}
-
- at end
-
-
-// rdar://8824416
-
- at interface MyNumber : NSObject
-{
-  NSNumber* _myNumber;
-}
-
-- (id)initWithNumber:(NSNumber *)number;
-
- at property (nonatomic, readonly) NSNumber* myNumber;
- at property (nonatomic, readonly) NSNumber* newMyNumber;
-
- at end
-
- at implementation MyNumber
- at synthesize myNumber=_myNumber;
- 
-- (id)initWithNumber:(NSNumber *)number
-{
-  self = [super init];
-  
-  if ( self )
-  {
-    _myNumber = [number copy];
-  }
-  
-  return self;
-}
-
-- (NSNumber*)newMyNumber
-{
-  if ( _myNumber )
-    return [_myNumber retain];
-  
-  return [[NSNumber alloc] initWithInteger:1];
-}
-
-- (id)valueForUndefinedKey:(NSString*)key
-{
-  id value = 0;
-  
-  if ([key isEqualToString:@"MyIvarNumberAsPropertyOverReleased"])
-    value = self.myNumber; // _myNumber will be over released, since the value returned from self.myNumber is not retained.
-  else if ([key isEqualToString:@"MyIvarNumberAsPropertyOk"])
-    value = [self.myNumber retain]; // this line fixes the over release
-  else if ([key isEqualToString:@"MyIvarNumberAsNewMyNumber"])
-    value = self.newMyNumber; // this one is ok, since value is returned retained
-  else 
-    value = [[NSNumber alloc] initWithInteger:0];
-  
-  return [value autorelease]; // expected-warning {{Object autoreleased too many times}}
-}
-
- at end
-
-NSNumber* numberFromMyNumberProperty(MyNumber* aMyNumber)
-{
-  NSNumber* result = aMyNumber.myNumber;
-    
-  return [result autorelease]; // expected-warning {{Object autoreleased too many times}}
-}
-
-
-// rdar://6611873
-
- at interface Person : NSObject {
-  NSString *_name;
-}
- at property (retain) NSString * name;
- at end
-
- at implementation Person
- at synthesize name = _name;
- at end
-
-void rdar6611873() {
-  Person *p = [[[Person alloc] init] autorelease];
-  
-  p.name = [[NSString string] retain]; // expected-warning {{leak}}
-  p.name = [[NSString alloc] init]; // expected-warning {{leak}}
-}
-
- at interface SubPerson : Person
--(NSString *)foo;
- at end
-
- at implementation SubPerson
--(NSString *)foo {
-  return super.name;
-}
- at end
-
-// <rdar://problem/9241180> Static analyzer doesn't detect uninitialized variable issues for property accesses
- at interface RDar9241180
- at property (readwrite,assign) id x;
--(id)testAnalyzer1:(int) y;
--(void)testAnalyzer2;
- at end
-
- at implementation RDar9241180
- at synthesize x;
--(id)testAnalyzer1:(int)y {
-    RDar9241180 *o;
-    if (y && o.x) // expected-warning {{Property access on an uninitialized object pointer}}
-      return o;
-    return o; // expected-warning {{Undefined or garbage value returned to caller}}
-}
--(void)testAnalyzer2 {
-  id y;
-  self.x = y;  // expected-warning {{Argument for property setter is an uninitialized value}}
-}
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/pthreadlock.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/pthreadlock.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/pthreadlock.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,137 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.unix.PthreadLock -verify %s
-
-// Tests performing normal locking patterns and wrong locking orders
-
-typedef struct {
-	void	*foo;
-} pthread_mutex_t;
-
-typedef pthread_mutex_t lck_mtx_t;
-
-extern int pthread_mutex_lock(pthread_mutex_t *);
-extern int pthread_mutex_unlock(pthread_mutex_t *);
-extern int pthread_mutex_trylock(pthread_mutex_t *);
-extern int lck_mtx_lock(lck_mtx_t *);
-extern int lck_mtx_unlock(lck_mtx_t *);
-extern int lck_mtx_try_lock(lck_mtx_t *);
-
-pthread_mutex_t mtx1, mtx2;
-lck_mtx_t lck1, lck2;
-
-void
-ok1(void)
-{
-	pthread_mutex_lock(&mtx1); // no-warning
-}
-
-void
-ok2(void)
-{
-	pthread_mutex_unlock(&mtx1); // no-warning
-}
-
-void
-ok3(void)
-{
-	pthread_mutex_lock(&mtx1);	// no-warning
-	pthread_mutex_unlock(&mtx1);	// no-warning
-	pthread_mutex_lock(&mtx1);	// no-warning
-	pthread_mutex_unlock(&mtx1);	// no-warning
-}
-
-void
-ok4(void)
-{
-	pthread_mutex_lock(&mtx1);	// no-warning
-	pthread_mutex_unlock(&mtx1);	// no-warning
-	pthread_mutex_lock(&mtx2);	// no-warning
-	pthread_mutex_unlock(&mtx2);	// no-warning
-}
-
-void
-ok5(void)
-{
-	if (pthread_mutex_trylock(&mtx1) == 0)	// no-warning
-		pthread_mutex_unlock(&mtx1);	// no-warning
-}
-
-void
-ok6(void)
-{
-	lck_mtx_lock(&lck1);		// no-warning
-}
-
-void
-ok7(void)
-{
-	if (lck_mtx_try_lock(&lck1) != 0)	// no-warning
-		lck_mtx_unlock(&lck1);		// no-warning
-}
-
-void
-bad1(void)
-{
-	pthread_mutex_lock(&mtx1);	// no-warning
-	pthread_mutex_lock(&mtx1);	// expected-warning{{This lock has already been acquired}}
-}
-
-void
-bad2(void)
-{
-	pthread_mutex_lock(&mtx1);	// no-warning
-	pthread_mutex_unlock(&mtx1);	// no-warning
-	pthread_mutex_lock(&mtx1);	// no-warning
-	pthread_mutex_lock(&mtx1);	// expected-warning{{This lock has already been acquired}}
-}
-
-void
-bad3(void)
-{
-	pthread_mutex_lock(&mtx1);	// no-warning
-	pthread_mutex_lock(&mtx2);	// no-warning
-	pthread_mutex_unlock(&mtx1);	// expected-warning{{This was not the most recently acquired lock}}
-	pthread_mutex_unlock(&mtx2);
-}
-
-void
-bad4(void)
-{
-	if (pthread_mutex_trylock(&mtx1)) // no-warning
-		return;
-	pthread_mutex_lock(&mtx2);	// no-warning
-	pthread_mutex_unlock(&mtx1);	// expected-warning{{This was not the most recently acquired lock}}
-}
-
-void
-bad5(void)
-{
-	lck_mtx_lock(&lck1);	// no-warning
-	lck_mtx_lock(&lck1);	// expected-warning{{This lock has already been acquired}}
-}
-
-void
-bad6(void)
-{
-	lck_mtx_lock(&lck1);	// no-warning
-	lck_mtx_unlock(&lck1);	// no-warning
-	lck_mtx_lock(&lck1);	// no-warning
-	lck_mtx_lock(&lck1);	// expected-warning{{This lock has already been acquired}}
-}
-
-void
-bad7(void)
-{
-	lck_mtx_lock(&lck1);	// no-warning
-	lck_mtx_lock(&lck2);	// no-warning
-	lck_mtx_unlock(&lck1);	// expected-warning{{This was not the most recently acquired lock}}
-	lck_mtx_unlock(&lck2);
-}
-
-void
-bad8(void)
-{
-	if (lck_mtx_try_lock(&lck1) == 0) // no-warning
-		return;
-	lck_mtx_lock(&lck2);		// no-warning
-	lck_mtx_unlock(&lck1);		// expected-warning{{This was not the most recently acquired lock}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/ptr-arith.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/ptr-arith.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/ptr-arith.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,282 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -verify -triple x86_64-apple-darwin9 %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -verify -triple i686-apple-darwin9 %s
-
-void clang_analyzer_eval(int);
-
-void f1() {
-  int a[10];
-  int *p = a;
-  ++p;
-}
-
-char* foo();
-
-void f2() {
-  char *p = foo();
-  ++p;
-}
-
-// This test case checks if we get the right rvalue type of a TypedViewRegion.
-// The ElementRegion's type depends on the array region's rvalue type. If it was
-// a pointer type, we would get a loc::SymbolVal for '*p'.
-void* memchr();
-static int
-domain_port (const char *domain_b, const char *domain_e,
-             const char **domain_e_ptr)
-{
-  int port = 0;
-  
-  const char *p;
-  const char *colon = memchr (domain_b, ':', domain_e - domain_b);
-  
-  for (p = colon + 1; p < domain_e ; p++)
-    port = 10 * port + (*p - '0');
-  return port;
-}
-
-void f3() {
-  int x, y;
-  int d = &y - &x; // expected-warning{{Subtraction of two pointers that do not point to the same memory chunk may cause incorrect result}}
-
-  int a[10];
-  int *p = &a[2];
-  int *q = &a[8];
-  d = q-p; // no-warning
-}
-
-void f4() {
-  int *p;
-  p = (int*) 0x10000; // expected-warning{{Using a fixed address is not portable because that address will probably not be valid in all environments or platforms}}
-}
-
-void f5() {
-  int x, y;
-  int *p;
-  p = &x + 1;  // expected-warning{{Pointer arithmetic done on non-array variables means reliance on memory layout, which is dangerous}}
-
-  int a[10];
-  p = a + 1; // no-warning
-}
-
-// Allow arithmetic on different symbolic regions.
-void f6(int *p, int *q) {
-  int d = q - p; // no-warning
-}
-
-void null_operand(int *a) {
-start:
-  // LHS is a label, RHS is NULL
-  clang_analyzer_eval(&&start != 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&&start >= 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&&start > 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((&&start - 0) != 0); // expected-warning{{TRUE}}
-
-  // LHS is a non-symbolic value, RHS is NULL
-  clang_analyzer_eval(&a != 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&a >= 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&a > 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((&a - 0) != 0); // expected-warning{{TRUE}} expected-warning{{Pointer arithmetic done on non-array variables}}
-
-  // LHS is NULL, RHS is non-symbolic
-  // The same code is used for labels and non-symbolic values.
-  clang_analyzer_eval(0 != &a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(0 <= &a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(0 < &a); // expected-warning{{TRUE}}
-
-  // LHS is a symbolic value, RHS is NULL
-  clang_analyzer_eval(a != 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a >= 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a <= 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((a - 0) != 0); // expected-warning{{UNKNOWN}}
-
-  // LHS is NULL, RHS is a symbolic value
-  clang_analyzer_eval(0 != a); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(0 <= a); // expected-warning{{TRUE}}
-  clang_analyzer_eval(0 < a); // expected-warning{{UNKNOWN}}
-}
-
-void const_locs() {
-  char *a = (char*)0x1000;
-  char *b = (char*)0x1100;
-start:
-  clang_analyzer_eval(a != b); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a < b); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a <= b); // expected-warning{{TRUE}}
-  clang_analyzer_eval((b-a) == 0x100); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(&&start == a); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == &&start); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(&a == (char**)a); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval((char**)a == &a); // expected-warning{{UNKNOWN}}
-}
-
-void array_matching_types() {
-  int array[10];
-  int *a = &array[2];
-  int *b = &array[5];
-
-  clang_analyzer_eval(a != b); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a < b); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a <= b); // expected-warning{{TRUE}}
-  clang_analyzer_eval((b-a) != 0); // expected-warning{{TRUE}}
-}
-
-// This takes a different code path than array_matching_types()
-void array_different_types() {
-  int array[10];
-  int *a = &array[2];
-  char *b = (char*)&array[5];
-
-  clang_analyzer_eval(a != b); // expected-warning{{TRUE}} expected-warning{{comparison of distinct pointer types}}
-  clang_analyzer_eval(a < b); // expected-warning{{TRUE}} expected-warning{{comparison of distinct pointer types}}
-  clang_analyzer_eval(a <= b); // expected-warning{{TRUE}} expected-warning{{comparison of distinct pointer types}}
-}
-
-struct test { int x; int y; };
-void struct_fields() {
-  struct test a, b;
-
-  clang_analyzer_eval(&a.x != &a.y); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&a.x < &a.y); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&a.x <= &a.y); // expected-warning{{TRUE}}
-
-  clang_analyzer_eval(&a.x != &b.x); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&a.x > &b.x); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(&a.x >= &b.x); // expected-warning{{UNKNOWN}}
-}
-
-void mixed_region_types() {
-  struct test s;
-  int array[2];
-  void *a = &array, *b = &s;
-
-  clang_analyzer_eval(&a != &b); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&a > &b); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(&a >= &b); // expected-warning{{UNKNOWN}}
-}
-
-void symbolic_region(int *p) {
-  int a;
-
-  clang_analyzer_eval(&a != p); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&a > p); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(&a >= p); // expected-warning{{UNKNOWN}}
-}
-
-void PR7527 (int *p) {
-  if (((int) p) & 1) // not crash
-    return;
-}
-
-void use_symbols(int *lhs, int *rhs) {
-  clang_analyzer_eval(lhs < rhs); // expected-warning{{UNKNOWN}}
-  if (lhs < rhs)
-    return;
-  clang_analyzer_eval(lhs < rhs); // expected-warning{{FALSE}}
-
-  clang_analyzer_eval(lhs - rhs); // expected-warning{{UNKNOWN}}
-  if ((lhs - rhs) != 5)
-    return;
-  clang_analyzer_eval((lhs - rhs) == 5); // expected-warning{{TRUE}}
-}
-
-void equal_implies_zero(int *lhs, int *rhs) {
-  clang_analyzer_eval(lhs == rhs); // expected-warning{{UNKNOWN}}
-  if (lhs == rhs) {
-    clang_analyzer_eval(lhs != rhs); // expected-warning{{FALSE}}
-    clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{TRUE}}
-    return;
-  }
-  clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
-  clang_analyzer_eval(lhs != rhs); // expected-warning{{TRUE}}
-  clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{FALSE}}
-}
-
-void zero_implies_equal(int *lhs, int *rhs) {
-  clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{UNKNOWN}}
-  if ((rhs - lhs) == 0) {
-    clang_analyzer_eval(lhs != rhs); // expected-warning{{FALSE}}
-    clang_analyzer_eval(lhs == rhs); // expected-warning{{TRUE}}
-    return;
-  }
-  clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{FALSE}}
-  clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
-  clang_analyzer_eval(lhs != rhs); // expected-warning{{TRUE}}
-}
-
-void comparisons_imply_size(int *lhs, int *rhs) {
-  clang_analyzer_eval(lhs <= rhs); // expected-warning{{UNKNOWN}}
-
-  if (lhs > rhs) {
-    clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{FALSE}}
-    return;
-  }
-
-  clang_analyzer_eval(lhs <= rhs); // expected-warning{{TRUE}}
-  clang_analyzer_eval((rhs - lhs) >= 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{UNKNOWN}}
-
-  if (lhs >= rhs) {
-    clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{TRUE}}
-    return;
-  }
-
-  clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
-  clang_analyzer_eval(lhs < rhs); // expected-warning{{TRUE}}
-  clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{TRUE}}
-}
-
-void size_implies_comparison(int *lhs, int *rhs) {
-  clang_analyzer_eval(lhs <= rhs); // expected-warning{{UNKNOWN}}
-
-  if ((rhs - lhs) < 0) {
-    clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
-    return;
-  }
-
-  clang_analyzer_eval(lhs <= rhs); // expected-warning{{TRUE}}
-  clang_analyzer_eval((rhs - lhs) >= 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{UNKNOWN}}
-
-  if ((rhs - lhs) <= 0) {
-    clang_analyzer_eval(lhs == rhs); // expected-warning{{TRUE}}
-    return;
-  }
-
-  clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
-  clang_analyzer_eval(lhs < rhs); // expected-warning{{TRUE}}
-  clang_analyzer_eval((rhs - lhs) > 0); // expected-warning{{TRUE}}
-}
-
-//-------------------------------
-// False positives
-//-------------------------------
-
-void zero_implies_reversed_equal(int *lhs, int *rhs) {
-  clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{UNKNOWN}}
-  if ((rhs - lhs) == 0) {
-    // FIXME: Should be FALSE.
-    clang_analyzer_eval(rhs != lhs); // expected-warning{{UNKNOWN}}
-    // FIXME: Should be TRUE.
-    clang_analyzer_eval(rhs == lhs); // expected-warning{{UNKNOWN}}
-    return;
-  }
-  clang_analyzer_eval((rhs - lhs) == 0); // expected-warning{{FALSE}}
-  // FIXME: Should be FALSE.
-  clang_analyzer_eval(rhs == lhs); // expected-warning{{UNKNOWN}}
-  // FIXME: Should be TRUE.
-  clang_analyzer_eval(rhs != lhs); // expected-warning{{UNKNOWN}}
-}
-
-void canonical_equal(int *lhs, int *rhs) {
-  clang_analyzer_eval(lhs == rhs); // expected-warning{{UNKNOWN}}
-  if (lhs == rhs) {
-    // FIXME: Should be TRUE.
-    clang_analyzer_eval(rhs == lhs); // expected-warning{{UNKNOWN}}
-    return;
-  }
-  clang_analyzer_eval(lhs == rhs); // expected-warning{{FALSE}}
-
-  // FIXME: Should be FALSE.
-  clang_analyzer_eval(rhs == lhs); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6442306-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6442306-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6442306-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core %s -analyzer-store=region -verify
-// expected-no-diagnostics
-
-typedef int bar_return_t;
-typedef struct {
-  unsigned char int_rep;
-} Foo_record_t;
-extern Foo_record_t Foo_record;
-struct QuxSize {};
-typedef struct QuxSize QuxSize;
-typedef struct {
-  Foo_record_t Foo;
-  QuxSize size[0];
-} __Request__SetPortalSize_t;
-
-double __Foo_READSWAP__double(double*);
-
-static __inline__ bar_return_t
-__Beeble_check__Request__SetPortalSize_t(__Request__SetPortalSize_t *In0P) {
-  if (In0P->Foo.int_rep != Foo_record.int_rep) {
-    do {
-      int __i__, __C__ = (2);
-      for (__i__ = 0;
-           __i__ < __C__;
-           __i__++) do {
-        *(&((double *)(&In0P->size))[__i__]) =
-          __Foo_READSWAP__double(&((double *)(&In0P->size))[__i__]);
-      }
-      while (0);
-    }
-    while (0);
-  }
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6540084.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6540084.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6540084.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core -analyzer-checker=deadcode.DeadStores -verify %s
-//
-// This test exercises the live variables analysis (LiveVariables.cpp).
-// The case originally identified a non-termination bug.
-//
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {} @end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at class NSArray;
- at class NSMutableArray, NSIndexSet, NSView, NSPredicate, NSString, NSViewAnimation, NSTimer; // expected-note{{forward declaration of class here}}
- at interface FooBazController : NSObject {}
- at end
-typedef struct {} TazVersion;
- at class TazNode;
- at interface TazGuttenberg : NSObject {} typedef NSUInteger BugsBunnyType; @end
- at interface FooBaz : NSObject {}
- at property (nonatomic) BugsBunnyType matchType;
- at property (nonatomic, retain) NSArray *papyrus; @end
- at implementation FooBazController
-- (NSArray *)excitingStuff:(FooBaz *)options {
-  BugsBunnyType matchType = options.matchType;
-  NSPredicate *isSearchablePredicate = [NSPredicate predicateWithFormat:@"isSearchable == YES"]; // expected-warning{{receiver 'NSPredicate' is a forward class and corresponding}} // expected-warning{{return type defaults to 'id'}}
-  for (TazGuttenberg *Guttenberg in options.papyrus) {
-    NSArray *GuttenbergNodes = [Guttenberg nodes]; // expected-warning{{return type defaults to 'id'}}
-    NSArray *searchableNodes = [GuttenbergNodes filteredArrayUsingPredicate:isSearchablePredicate]; // expected-warning{{return type defaults to 'id'}}
-    for (TazNode *node in searchableNodes) {
-      switch (matchType) {
-        default: break;
-      }
-    }
-  }
-  while (1) {}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6541136-region.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6541136-region.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6541136-region.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -verify -analyze -analyzer-checker=core,alpha.security.ArrayBound -analyzer-store=region %s
-
-struct tea_cheese { unsigned magic; };
-typedef struct tea_cheese kernel_tea_cheese_t;
-extern kernel_tea_cheese_t _wonky_gesticulate_cheese;
-
-// This test case exercises the ElementRegion::getRValueType() logic.
-
-void test1( void ) {
-  kernel_tea_cheese_t *wonky = &_wonky_gesticulate_cheese;
-  struct load_wine *cmd = (void*) &wonky[1];
-  cmd = cmd;
-  char *p = (void*) &wonky[1];
-  kernel_tea_cheese_t *q = &wonky[1];
-  // This test case tests both the RegionStore logic (doesn't crash) and
-  // the out-of-bounds checking.  We don't expect the warning for now since
-  // out-of-bound checking is temporarily disabled.
-  kernel_tea_cheese_t r = *q; // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}
-
-void test1_b( void ) {
-  kernel_tea_cheese_t *wonky = &_wonky_gesticulate_cheese;
-  struct load_wine *cmd = (void*) &wonky[1];
-  cmd = cmd;
-  char *p = (void*) &wonky[1];
-  *p = 1;  // expected-warning{{Access out-of-bound array element (buffer overflow)}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6562655.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6562655.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6562655.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-constraints=range -analyzer-store=region -verify %s
-// expected-no-diagnostics
-//
-// This test case mainly checks that the retain/release checker doesn't crash
-// on this file.
-//
-typedef int int32_t;
-typedef signed char BOOL;
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end    @interface NSObject <NSObject> {}
- at end      extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSResponder : NSObject <NSCoding> {}
- at end    @protocol NSAnimatablePropertyContainer      - (id)animator;
- at end  extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {
-}
- at end    enum {
-NSNullCellType = 0,     NSTextCellType = 1,     NSImageCellType = 2 };
-typedef struct __CFlags {
-  unsigned int botnet:3;
-}
-  _CFlags;
- at interface Bar : NSObject <NSCopying, NSCoding> {
-  _CFlags _cFlags;
- at private       id _support;
-}
- at end  extern NSString *NSControlTintDidChangeNotification;
-typedef NSInteger NSBotnet;
- at interface NSControl : NSView {
-}
- at end @class NSAttributedString, NSFont, NSImage, NSSound;
-typedef int32_t Baz;
- at interface Bar(BarInternal) - (void)_setIsWhite:(BOOL)isWhite;
- at end
- at interface Bar (BarBotnetCompatibility)
-- (NSBotnet)_initialBotnetZorg;
- at end
-typedef struct _NSRunArrayItem {
-  unsigned int botnetIsSet:1;
-} BarAuxFlags;
- at interface BarAuxiliary : NSObject {
- at public
-  NSControl *controlView;
-  BarAuxFlags auxCFlags;
-}
- at end
- at implementation Bar
-static Baz Qux = 0;
-- (id)copyWithZone:(NSZone *)zone { return 0; }
-- (void)encodeWithCoder:(NSCoder *)coder {}
- at end
- at implementation Bar (BarBotnet)
-- (NSBotnet)botnet {
-  if (!(*(BarAuxiliary **)&self->_support)->auxCFlags.botnetIsSet) {
-    _cFlags.botnet = [self _initialBotnetZorg];
-  }
-  while (1) {}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/rdar-6600344-nil-receiver-undefined-struct-ret.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-constraints=range -analyzer-store=region -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-typedef struct Foo { int x; } Bar;
-
- at interface MyClass {}
-- (Bar)foo;
- at end
- at implementation MyClass
-- (Bar)foo { 
-  struct Foo f = { 0 };
-  return f;
-}
- at end
-
-void createFoo() {
-  MyClass *obj = 0;  
-  Bar f = [obj foo]; // no-warning
-}
-
-void createFoo2() {
-  MyClass *obj = 0;  
-  [obj foo]; // no-warning
-  Bar f = [obj foo]; // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/rdar-7168531.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/rdar-7168531.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/rdar-7168531.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -analyzer-store=region %s
-
-// Note that the target triple is important for this test case.  It specifies that we use the
-// fragile Objective-C ABI.
-
- at interface Foo {
-  int x;
-}
- at end
-
- at implementation Foo
-static Foo* bar(Foo *p) {
-  if (p->x)
-   return ++p;  // This is only valid for the fragile ABI.
-
-  return p;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/redefined_system.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/redefined_system.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/redefined_system.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=unix,core,alpha.security.taint -w -verify %s
-// expected-no-diagnostics
-
-// Make sure we don't crash when someone redefines a system function we reason about.
-
-char memmove ();
-char malloc();
-char system();
-char stdin();
-char memccpy();
-char free();
-char strdup();
-char atoi();
-
-int foo () {
-  return memmove() + malloc() + system() + stdin() + memccpy() + free() + strdup() + atoi();
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/refcnt_naming.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/refcnt_naming.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/refcnt_naming.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-config ipa=none -analyzer-store=region -verify %s
-
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-typedef const struct __CFURL * CFURLRef;
-extern CFURLRef CFURLCreateWithString(CFAllocatorRef allocator, CFStringRef URLString, CFURLRef baseURL);
-typedef signed char BOOL;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {} @end
- at class NSArray, NSString, NSURL;
-
- at interface NamingTest : NSObject {}
--(NSObject*)copyPhoto;
--(NSObject*)mutableCopyPhoto;
--(NSObject*)mutable;
--(NSObject*)mutableCopying;
--(NSObject*)photocopy;    // read as "photocopy"
--(NSObject*)photoCopy;    // read as "photo Copy"
--(NSObject*)__blebPRCopy; // read as "bleb PRCopy"
--(NSObject*)__blebPRcopy; // read as "bleb P Rcopy"
--(NSObject*)new_theprefixdoescount; // read as "new theprefixdoescount"
--(NSObject*)newestAwesomeStuff; // read as "newest awesome stuff"
-
- at end
-
- at interface MyClass : NSObject
-{
-  id myObject;
-}
-- (NSURL *)myMethod:(NSString *)inString;
-- (NSURL *)getMethod:(NSString*)inString;
-- (NSURL *)getMethod2:(NSString*)inString;
-- (void)addObject:(id) __attribute__((ns_consumed)) X;
-- (void)addObject2:(id) X;
- at end
-
- at implementation MyClass
-
-- (NSURL *)myMethod:(NSString *)inString
-{
-  NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}}
-  return url;
-}
-
-- (NSURL *)getMethod:(NSString *)inString
-{
-  NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0);
-  [self addObject:url];
-  return url; // no-warning
-}
-
-- (NSURL *)getMethod2:(NSString *)inString
-{
-  NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}}
-  [self addObject2:url];
-  return url;
-}
-
-void testNames(NamingTest* x) {
-  [x copyPhoto]; // expected-warning{{leak}}
-  [x mutableCopyPhoto]; // expected-warning{{leak}}
-  [x mutable]; // no-warning
-  [x mutableCopying]; // no-warning
-  [x photocopy]; // no-warning
-  [x photoCopy]; // no-warning
-  [x __blebPRCopy]; // no-warning
-  [x __blebPRcopy]; // no-warning
-  [x new_theprefixdoescount]; // expected-warning{{leak}}
-  [x newestAwesomeStuff]; // no-warning
-}
-
-
-- (void)addObject:(id)X
-{
-  myObject = X;
-}
-
-- (void)addObject2:(id)X
-{
-  myObject = X;
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,236 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core,debug.ExprInspection -analyzer-store=region -analyzer-constraints=range -verify -Wno-null-dereference %s
-
-void clang_analyzer_eval(bool);
-
-typedef typeof(sizeof(int)) size_t;
-void malloc (size_t);
-
-void f1() {
-  int const &i = 3;
-  int b = i;
-
-  int *p = 0;
-
-  if (b != 3)
-    *p = 1; // no-warning
-}
-
-char* ptr();
-char& ref();
-
-// These next two tests just shouldn't crash.
-char t1 () {
-  ref() = 'c';
-  return '0';
-}
-
-// just a sanity test, the same behavior as t1()
-char t2 () {
-  *ptr() = 'c';
-  return '0';
-}
-
-// Each of the tests below is repeated with pointers as well as references.
-// This is mostly a sanity check, but then again, both should work!
-char t3 () {
-  char& r = ref();
-  r = 'c'; // no-warning
-  if (r) return r;
-  return *(char*)0; // no-warning
-}
-
-char t4 () {
-  char* p = ptr();
-  *p = 'c'; // no-warning
-  if (*p) return *p;
-  return *(char*)0; // no-warning
-}
-
-char t5 (char& r) {
-  r = 'c'; // no-warning
-  if (r) return r;
-  return *(char*)0; // no-warning
-}
-
-char t6 (char* p) {
-  *p = 'c'; // no-warning
-  if (*p) return *p;
-  return *(char*)0; // no-warning
-}
-
-
-// PR13440 / <rdar://problem/11977113>
-// Test that the array-to-pointer decay works for array references as well.
-// More generally, when we want an lvalue for a reference field, we still need
-// to do one level of load.
-namespace PR13440 {
-  typedef int T[1];
-  struct S {
-    T &x;
-
-    int *m() { return x; }
-  };
-
-  struct S2 {
-    int (&x)[1];
-
-    int *m() { return x; }
-  };
-
-  void test() {
-    int a[1];
-    S s = { a };
-    S2 s2 = { a };
-
-    if (s.x != a) return;
-    if (s2.x != a) return;
-
-    a[0] = 42;
-    clang_analyzer_eval(s.x[0] == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(s2.x[0] == 42); // expected-warning{{TRUE}}
-  }
-}
-
-void testNullReference() {
-  int *x = 0;
-  int &y = *x; // expected-warning{{Dereference of null pointer}}
-  y = 5;
-}
-
-void testRetroactiveNullReference(int *x) {
-  // According to the C++ standard, there is no such thing as a
-  // "null reference". So the 'if' statement ought to be dead code.
-  // However, Clang (and other compilers) don't actually check that a pointer
-  // value is non-null in the implementation of references, so it is possible
-  // to produce a supposed "null reference" at runtime. The analyzer should
-  // still warn when it can prove such errors.
-  int &y = *x;
-  if (x != 0)
-    return;
-  y = 5; // expected-warning{{Dereference of null pointer}}
-}
-
-void testReferenceAddress(int &x) {
-  clang_analyzer_eval(&x != 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(&ref() != 0); // expected-warning{{TRUE}}
-
-  struct S { int &x; };
-
-  extern S getS();
-  clang_analyzer_eval(&getS().x != 0); // expected-warning{{TRUE}}
-
-  extern S *getSP();
-  clang_analyzer_eval(&getSP()->x != 0); // expected-warning{{TRUE}}
-}
-
-
-void testFunctionPointerReturn(void *opaque) {
-  typedef int &(*RefFn)();
-
-  RefFn getRef = (RefFn)opaque;
-
-  // Don't crash writing to or reading from this reference.
-  int &x = getRef();
-  x = 42;
-  clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
-}
-
-int &testReturnNullReference() {
-  int *x = 0;
-  return *x; // expected-warning{{Returning null reference}}
-}
-
-char &refFromPointer() {
-  return *ptr();
-}
-
-void testReturnReference() {
-  clang_analyzer_eval(ptr() == 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(&refFromPointer() == 0); // expected-warning{{FALSE}}
-}
-
-void intRefParam(int &r) {
-	;
-}
-
-void test(int *ptr) {
-	clang_analyzer_eval(ptr == 0); // expected-warning{{UNKNOWN}}
-
-	extern void use(int &ref);
-	use(*ptr);
-
-	clang_analyzer_eval(ptr == 0); // expected-warning{{FALSE}}
-}
-
-void testIntRefParam() {
-	int i = 0;
-	intRefParam(i); // no-warning
-}
-
-int refParam(int &byteIndex) {
-	return byteIndex;
-}
-
-void testRefParam(int *p) {
-	if (p)
-		;
-	refParam(*p); // expected-warning {{Forming reference to null pointer}}
-}
-
-int ptrRefParam(int *&byteIndex) {
-	return *byteIndex;  // expected-warning {{Dereference of null pointer}}
-}
-void testRefParam2() {
-	int *p = 0;
-	int *&rp = p;
-	ptrRefParam(rp);
-}
-
-int *maybeNull() {
-	extern bool coin();
-	static int x;
-	return coin() ? &x : 0;
-}
-
-void use(int &x) {
-	x = 1; // no-warning
-}
-
-void testSuppression() {
-	use(*maybeNull());
-}
-
-namespace rdar11212286 {
-  class B{};
-
-  B test() {
-    B *x = 0;
-    return *x; // expected-warning {{Forming reference to null pointer}}
-  }
-
-  B testif(B *x) {
-    if (x)
-      ;
-    return *x; // expected-warning {{Forming reference to null pointer}}
-  }
-
-  void idc(B *x) {
-    if (x)
-      ;
-  }
-
-  B testidc(B *x) {
-    idc(x);
-    return *x; // no-warning
-  }
-}
-
-namespace PR15694 {
-  class C {
-    bool bit : 1;
-    template <class T> void bar(const T &obj) {}
-    void foo() {
-      bar(bit); // don't crash
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/reference.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/reference.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/reference.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -Wno-null-dereference %s
-
- at interface Foo
-- (int &)ref;
- at end
-
-Foo *getFoo() { return 0; }
-
-void testNullPointerSuppression() {
-	getFoo().ref = 1;
-}
-
-void testPositiveNullReference() {
-  Foo *x = 0;
-	x.ref = 1; // expected-warning {{The receiver of message 'ref' is nil, which results in forming a null reference}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/region-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/region-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/region-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,92 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s
-// expected-no-diagnostics
-//
-// This test case simply should not crash.  It evaluates the logic of not
-// using MemRegion::getRValueType in incorrect places.
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
-- (Class)class;
-- (BOOL)isLegOfClass:(Class)aClass;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end    @interface NSObject <NSObject> {
-}
- at end @class NSArray;
- at interface NSResponder : NSObject <NSCoding> {
-}
- at end  @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView;
- at class JabasectItem;
- at protocol EcoClassifier;
- at protocol EcoClassInterfaceCommons <EcoClassifier>    @end  @protocol EcoImplementation;
- at protocol EcoBehavioredClassifier <EcoClassInterfaceCommons>      - (NSArray *) implementations;
- at end enum {
-CK_UNRESTRICTED= 0,     CK_READ_ONLY,     CK_ADD_ONLY,     CK_REMOVE_ONLY };
- at protocol EcoClass <EcoBehavioredClassifier>      - (NSArray *) ownedAttributes;
- at end @protocol EcoNamespace;
- at protocol EcoType;
- at protocol EcoClassifier <EcoNamespace,EcoType>    - (NSArray *) features; 
- at end @protocol EcoComment;
- at protocol EcoElement <NSObject> - (NSArray *) ownedElements;
- at end @protocol EcoDirectedRelationship;
- at protocol EcoNamedElement <EcoElement>     - (NSString *) name;
- at end  extern NSString *const JabaPathSeparator;
- at protocol EcoNamespace <EcoNamedElement>       - (NSArray *) Legs;
- at end enum {
-PDK_IN=0,     PDK_INOUT,     PDK_OUT,     PDK_RETURN };
- at interface EcoElementImp : NSObject <EcoElement, NSCoding> {
-}
- at end @class EcoNamespace;
- at interface EcoNamedElementImp : EcoElementImp <EcoNamedElement>{
-}
- at end   @interface EcoNamespaceImp : EcoNamedElementImp <EcoNamespace> {
-}
- at end  @class JabaSCDocController, JabaSCDisplaySpecification;
- at interface JabaSCSharedDiagramViewController : NSObject {
-}
- at end  extern NSString *const JabaSCsectGraphicNamesectIdentifier;
- at interface EcoClassifierImp : EcoNamespaceImp <EcoClassifier> {
-}
- at end  @class EcoOperationImp;
- at interface EcoClassImp : EcoClassifierImp <EcoClass> {
-}
- at end  extern NSString *const JabaAddedUMLElements;
- at class JabaSCClass, JabaSCInterface, JabaSCOperation;
- at class DosLegVaseSymbol, DosProtocolSymbol, DosMethodSymbol, DosFileReference;
- at interface HancodeFett : NSObject {
-}
-+ (DosLegVaseSymbol *) symbolFromClass: (JabaSCClass *) clz;
- at end enum _JabaSourceLanguage {
-JabaSourceUnknown=0,     JabaSourcePrawn,     JabaSourceC,     JabaSourceCPP,     JabaSourceObjectiveC };
-typedef NSUInteger JabaSourceLanguage;
- at protocol JabaSCClassifier <EcoClassInterfaceCommons> - (JabaSourceLanguage)language;
- at end  @interface JabaSCClass : EcoClassImp <JabaSCClassifier> {
-}
- at end  @class DosGlobalID, DosPQuLC, DosPQuUnLC;
- at protocol XCProxyObjectProtocol - (id) representedObject;
- at end typedef union _Dossymbollocation {
-}
-  DosRecordArrPrl;
- at interface DosIndexEntry : NSObject {
-}
- at end    @class DosProjectIndex, DosTextPapyruswiggle, DosDocPapyruswiggle, DosLegVaseSymbol;
- at interface DosSymbol : DosIndexEntry {
-}
- at end  @interface DosLegVaseSymbol : DosSymbol {
-}
- at end typedef enum _DosTextRangeType {
-Dos_CharacterRangeType = 0,     Dos_LineRangeType = 1 }
-  DosTextRangeType;
- at implementation JabaSCSharedDiagramViewController  + (NSImage *)findImageNamed:(NSString *)name {
-  return 0;
-}
-- (void)revealSourceInEditor:(JabasectItem *)sectItem duperGesture:(BOOL)duperGesture {
-  id <EcoNamedElement> selectedElement = [sectItem representedObject];
-  id <EcoNamedElement> selectedClassifier = selectedElement;
-  DosSymbol *symbol=((void *)0);
-  if([selectedClassifier isLegOfClass:[JabaSCClass class]]) {
-    symbol = [HancodeFett symbolFromClass:(JabaSCClass *) selectedClassifier];
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/region-store.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/region-store.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/region-store.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix,debug.ExprInspection -verify %s
-
-int printf(const char *restrict,...);
-
-// Testing core functionality of the region store.
-// radar://10127782
-int compoundLiteralTest() {
-    int index = 0;
-    for (index = 0; index < 2; index++) {
-        int thing = (int []){0, 1}[index];
-        printf("thing: %i\n", thing);
-    }
-    return 0;
-}
-
-int compoundLiteralTest2() {
-    int index = 0;
-    for (index = 0; index < 3; index++) {
-        int thing = (int [][3]){{0,0,0}, {1,1,1}, {2,2,2}}[index][index];
-        printf("thing: %i\n", thing);
-    }
-    return 0;
-}
-
-int concreteOffsetBindingIsInvalidatedBySymbolicOffsetAssignment(int length,
-                                                                 int i) {
-  int values[length];
-  values[i] = 4;
-  return values[0]; // no-warning
-}
-
-struct X{
-  int mem;
-};
-int initStruct(struct X *st);
-int structOffsetBindingIsInvalidated(int length, int i){
-  struct X l;
-  initStruct(&l);
-  return l.mem; // no-warning
-}
-
-void clang_analyzer_eval(int);
-void testConstraintOnRegionOffset(int *values, int length, int i){
-  if (values[1] == 4) {
-    values[i] = 5;
-    clang_analyzer_eval(values[1] == 4);// expected-warning {{UNKNOWN}}
-  }
-}
-
-int initArray(int *values);
-void testConstraintOnRegionOffsetStack(int *values, int length, int i) {
-  if (values[0] == 4) {
-    initArray(values);
-    clang_analyzer_eval(values[0] == 4);// expected-warning {{UNKNOWN}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/region-store.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/region-store.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/region-store.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix -verify %s
-// expected-no-diagnostics
-
-class Loc {
-  int x;
-};
-class P1 {
-public:
-  Loc l;
-  void setLoc(Loc L) {
-    l = L;
-  }
-  
-};
-class P2 {
-public:
-  int m;
-  int accessBase() {
-    return m;
-  }
-};
-class Derived: public P1, public P2 {
-};
-int radar13445834(Derived *Builder, Loc l) {
-  Builder->setLoc(l);
-  return Builder->accessBase();
-  
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/reinterpret-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/reinterpret-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/reinterpret-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s
-
-void clang_analyzer_eval(bool);
-
-typedef struct Opaque *Data;
-struct IntWrapper {
-  int x;
-};
-
-struct Child : public IntWrapper {
-  void set() { x = 42; }
-};
-
-void test(Data data) {
-  Child *wrapper = reinterpret_cast<Child*>(data);
-  // Don't crash when upcasting here.
-  // We don't actually know if 'data' is a Child.
-  wrapper->set();
-  clang_analyzer_eval(wrapper->x == 42); // expected-warning{{TRUE}}
-}
-
-namespace PR14872 {
-  class Base1 {};
-  class Derived1 : public Base1 {};
-
-  Derived1 *f1();
-
-  class Base2 {};
-  class Derived2 : public Base2 {};
-
-  void f2(Base2 *foo);
-
-  void f3(void** out)
-  {
-    Base1 *v;
-    v = f1();
-    *out = v;
-  }
-
-  void test()
-  {
-    Derived2 *p;
-    f3(reinterpret_cast<void**>(&p));
-    // Don't crash when upcasting here.
-    // In this case, 'p' actually refers to a Derived1.
-    f2(p);
-  }
-}
-
-namespace rdar13249297 {
-  struct IntWrapperSubclass : public IntWrapper {};
-
-  struct IntWrapperWrapper {
-    IntWrapper w;
-  };
-
-  void test(IntWrapperWrapper *ww) {
-    reinterpret_cast<IntWrapperSubclass *>(ww)->x = 42;
-    clang_analyzer_eval(reinterpret_cast<IntWrapperSubclass *>(ww)->x == 42); // expected-warning{{TRUE}}
-
-    clang_analyzer_eval(ww->w.x == 42); // expected-warning{{TRUE}}
-    ww->w.x = 0;
-
-    clang_analyzer_eval(reinterpret_cast<IntWrapperSubclass *>(ww)->x == 42); // expected-warning{{FALSE}}
-  }
-}
-
-namespace PR15345 {
-  class C {};
-
-  class Base {
-  public:
-    void (*f)();
-    int x;
-  };
-
-  class Derived : public Base {};
-
-  void test() {
-	Derived* p;
-	*(reinterpret_cast<void**>(&p)) = new C;
-	p->f();
-
-    // We should still be able to do some reasoning about bindings.
-    p->x = 42;
-    clang_analyzer_eval(p->x == 42); // expected-warning{{TRUE}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-cf-audited.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-cf-audited.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-cf-audited.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -verify %s -x objective-c++
-
-// The special thing about this file is that CFRetain and CFRelease are marked
-// as cf_audited_transfer.
-
-#pragma clang arc_cf_code_audited begin
-typedef const void * CFTypeRef;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-
-extern CFTypeRef CFCreateSomethingAudited();
-#pragma clang arc_cf_code_audited end
-
-extern CFTypeRef CFCreateSomethingUnaudited();
-
-void testAudited() {
-  CFTypeRef obj = CFCreateSomethingAudited(); // no-warning
-  CFRelease(obj); // no-warning
-
-  CFTypeRef obj2 = CFCreateSomethingAudited(); // expected-warning{{leak}}
-  CFRetain(obj2); // no-warning
-  CFRelease(obj2); // no-warning
-}
-
-void testUnaudited() {
-  CFTypeRef obj = CFCreateSomethingUnaudited(); // no-warning
-  CFRelease(obj); // no-warning
-
-  CFTypeRef obj2 = CFCreateSomethingUnaudited(); // expected-warning{{leak}}
-  CFRetain(obj2); // no-warning
-  CFRelease(obj2); // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-gc-only.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-gc-only.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-gc-only.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,434 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,osx.cocoa.NSAutoreleasePool -analyzer-store=region -fobjc-gc-only -fblocks -verify -Wno-objc-root-class %s
-
-//===----------------------------------------------------------------------===//
-// Header stuff.
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long uintptr_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef unsigned int UInt32;
-typedef signed long CFIndex;
-typedef struct {
-    CFIndex location;
-    CFIndex length;
-} CFRange;
-static __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) {
-    CFRange range;
-    range.location = loc;
-    range.length = len;
-    return range;
-}
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0,     kCFStringEncodingWindowsLatin1 = 0x0500,     kCFStringEncodingISOLatin1 = 0x0201,     kCFStringEncodingNextStepLatin = 0x0B01,     kCFStringEncodingASCII = 0x0600,     kCFStringEncodingUnicode = 0x0100,     kCFStringEncodingUTF8 = 0x08000100,     kCFStringEncodingNonLossyASCII = 0x0BFF      ,     kCFStringEncodingUTF16 = 0x0100,     kCFStringEncodingUTF16BE = 0x10000100,     kCFStringEncodingUTF16LE = 0x14000100,      kCFStringEncodingUTF32 = 0x0c000100,     kCFStringEncodingUTF32BE = 0x18000100,     kCFStringEncodingUTF32LE = 0x1c000100  };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-enum {
-kCFNumberSInt8Type = 1,     kCFNumberSInt16Type = 2,     kCFNumberSInt32Type = 3,     kCFNumberSInt64Type = 4,     kCFNumberFloat32Type = 5,     kCFNumberFloat64Type = 6,      kCFNumberCharType = 7,     kCFNumberShortType = 8,     kCFNumberIntType = 9,     kCFNumberLongType = 10,     kCFNumberLongLongType = 11,     kCFNumberFloatType = 12,     kCFNumberDoubleType = 13,      kCFNumberCFIndexType = 14,      kCFNumberNSIntegerType = 15,     kCFNumberCGFloatType = 16,     kCFNumberMaxType = 16    };
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef const struct __CFAttributedString *CFAttributedStringRef;
-typedef struct __CFAttributedString *CFMutableAttributedStringRef;
-extern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes) ;
-extern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr) ;
-extern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value) ;
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-- (id)autorelease;
-- (Class)class;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
-- (oneway void)release;
-- (id)copy;
- at end
- at interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
- at protocol NSFastEnumeration  - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end           @class NSString, NSDictionary;
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value;
- at end  @interface NSNumber : NSValue  - (char)charValue;
-- (id)initWithInt:(int)value;
- at end   @class NSString;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
- at end
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
- at end
-       @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
-- (id)init;
- at end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
- at interface NSDate : NSObject <NSCopying, NSCoding>  - (NSTimeInterval)timeIntervalSinceReferenceDate;
- at end            typedef unsigned short unichar;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>    - (NSUInteger)length;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end        @class NSString, NSURL, NSError;
- at interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding>  - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
- at end   @class NSLocale, NSDate, NSCalendar, NSTimeZone, NSError, NSArray, NSMutableDictionary;
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end    @interface NSMutableDictionary : NSDictionary  - (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end  @interface NSMutableDictionary (NSMutableDictionaryCreation)  + (id)dictionaryWithCapacity:(NSUInteger)numItems;
- at end  typedef double CGFloat;
-struct CGSize {
-};
-typedef struct CGSize CGSize;
-struct CGRect {
-};
-typedef struct CGRect CGRect;
-typedef mach_port_t io_object_t;
-typedef char io_name_t[128];
-typedef io_object_t io_iterator_t;
-typedef io_object_t io_service_t;
-typedef struct IONotificationPort * IONotificationPortRef;
-typedef void (*IOServiceMatchingCallback)(  void * refcon,  io_iterator_t iterator );
-io_service_t IOServiceGetMatchingService(  mach_port_t masterPort,  CFDictionaryRef matching );
-kern_return_t IOServiceGetMatchingServices(  mach_port_t masterPort,  CFDictionaryRef matching,  io_iterator_t * existing );
-kern_return_t IOServiceAddNotification(  mach_port_t masterPort,  const io_name_t notificationType,  CFDictionaryRef matching,  mach_port_t wakePort,  uintptr_t reference,  io_iterator_t * notification ) __attribute__((deprecated));
-kern_return_t IOServiceAddMatchingNotification(  IONotificationPortRef notifyPort,  const io_name_t notificationType,  CFDictionaryRef matching,         IOServiceMatchingCallback callback,         void * refCon,  io_iterator_t * notification );
-CFMutableDictionaryRef IOServiceMatching(  const char * name );
-CFMutableDictionaryRef IOServiceNameMatching(  const char * name );
-CFMutableDictionaryRef IOBSDNameMatching(  mach_port_t masterPort,  uint32_t options,  const char * bsdName );
-CFMutableDictionaryRef IOOpenFirmwarePathMatching(  mach_port_t masterPort,  uint32_t options,  const char * path );
-CFMutableDictionaryRef IORegistryEntryIDMatching(  uint64_t entryID );
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
- at interface NSTask : NSObject - (id)init;
- at end                    typedef struct CGColorSpace *CGColorSpaceRef;
-typedef struct CGImage *CGImageRef;
-typedef struct CGLayer *CGLayerRef;
- at interface NSResponder : NSObject <NSCoding> {
-}
- at end    @protocol NSAnimatablePropertyContainer      - (id)animator;
- at end  extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {
-}
- at end @protocol NSValidatedUserInterfaceItem - (SEL)action;
- at end   @protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
- at end  @class NSDate, NSDictionary, NSError, NSException, NSNotification;
- at interface NSApplication : NSResponder <NSUserInterfaceValidations> {
-}
- at end   enum {
-NSTerminateCancel = 0,         NSTerminateNow = 1,         NSTerminateLater = 2 };
-typedef NSUInteger NSApplicationTerminateReply;
- at protocol NSApplicationDelegate <NSObject> @optional        - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
- at end  @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView, NSTextView;
- at interface NSCell : NSObject <NSCopying, NSCoding> {
-}
- at end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
-typedef struct {
-}
-CVTimeStamp;
- at interface CIImage : NSObject <NSCoding, NSCopying> {
-}
-typedef int CIFormat;
- at end  enum {
-kDAReturnSuccess = 0,     kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01,     kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02,     kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03,     kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04,     kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05,     kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06,     kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07,     kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08,     kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09,     kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A,     kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B,     kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
- at interface CIContext: NSObject {
-}
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r;
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r     format:(CIFormat)f colorSpace:(CGColorSpaceRef)cs;
-- (CGLayerRef)createCGLayerWithSize:(CGSize)size info:(CFDictionaryRef)d;
- at end extern NSString* const QCRendererEventKey;
- at protocol QCCompositionRenderer - (NSDictionary*) attributes;
- at end   @interface QCRenderer : NSObject <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
- at end  extern NSString* const QCViewDidStartRenderingNotification;
- at interface QCView : NSView <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
- at end    enum {
-ICEXIFOrientation1 = 1,     ICEXIFOrientation2 = 2,     ICEXIFOrientation3 = 3,     ICEXIFOrientation4 = 4,     ICEXIFOrientation5 = 5,     ICEXIFOrientation6 = 6,     ICEXIFOrientation7 = 7,     ICEXIFOrientation8 = 8, };
- at class ICDevice;
- at protocol ICDeviceDelegate <NSObject>  @required      - (void)didRemoveDevice:(ICDevice*)device;
- at end extern NSString *const ICScannerStatusWarmingUp;
- at class ICScannerDevice;
- at protocol ICScannerDeviceDelegate <ICDeviceDelegate>  @optional       - (void)scannerDeviceDidBecomeAvailable:(ICScannerDevice*)scanner;
- at end
-CFTypeRef CFMakeCollectable(CFTypeRef cf) ;
-
-static __inline__ __attribute__((always_inline)) id NSMakeCollectable(CFTypeRef 
-cf) {
-    return cf ? (id)CFMakeCollectable(cf) : ((void*)0);
-}
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-void f1() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-  id x = [(id) A autorelease];
-  CFRelease((CFMutableArrayRef) x);
-}
-
-void f2() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}}
-  id x = [(id) A retain];
-  [x release];
-  [x release];
-}
-
-void f3() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}}
-  CFMakeCollectable(A);
-  CFRetain(A);
-}
-
-void f3b() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-  CFMakeCollectable(A);
-}
-
-
-void f4() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}}
-  NSMakeCollectable(A);
-  CFRetain(A);
-}
-
-void f4b() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-  NSMakeCollectable(A);
-}
-
-void f5() {
-  id x = [NSMakeCollectable(CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks)) autorelease]; // no-warning
-}
-
-void f5b() {
-  id x = [(id) CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks) autorelease]; // expected-warning{{leak}}
-}
-
-// Test return of non-owned objects in contexts where an owned object
-// is expected.
- at interface TestReturnNotOwnedWhenExpectedOwned
-- (NSString*)newString;
-- (CFMutableArrayRef)newArray;
- at end
-
- at implementation TestReturnNotOwnedWhenExpectedOwned
-- (NSString*)newString {
-  NSString *s = [NSString stringWithUTF8String:"hello"]; // expected-warning{{Potential leak (when using garbage collection) of an object}}
-  CFRetain(s);
-  return s;
-}
-- (CFMutableArrayRef)newArray{
-   return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6948053> False positive: object substitution during -init*
-//   methods warns about returning +0 when using -fobjc-gc-only
-//===----------------------------------------------------------------------===//
-
- at interface MyClassRdar6948053 : NSObject
-- (id) init;
-+ (id) shared;
- at end
-
- at implementation MyClassRdar6948053
-+(id) shared {
-  return (id) 0;
-}
-- (id) init
-{
-  Class myClass = [self class];  
-  [self release];
-  return [[myClass shared] retain]; // no-warning
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7174400> 'ciContext createCGImage:outputImage fromRect:' returns a retained CF object (not GC'ed)//===----------------------------------------------------------------------===//
-//===----------------------------------------------------------------------===//
-
-void rdar_7174400(QCView *view, QCRenderer *renderer, CIContext *context,
-                  NSString *str, CIImage *img, CGRect rect,
-                  CIFormat form, CGColorSpaceRef cs) {
-  [view createSnapshotImageOfType:str]; // no-warning
-  [renderer createSnapshotImageOfType:str]; // no-warning
-  [context createCGImage:img fromRect:rect]; // expected-warning{{leak}}
-  [context createCGImage:img fromRect:rect format:form colorSpace:cs]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6250216> Warn against using -[NSAutoreleasePool release] in 
-//  GC mode
-//===----------------------------------------------------------------------===//
-
-void rdar_6250216(void) {
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-    [pool release]; // expected-warning{{Use -drain instead of -release when using NSAutoreleasePool and garbage collection}}
-}
-
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7407273> Don't crash when analyzing messages sent to blocks
-//===----------------------------------------------------------------------===//
-
- at class RDar7407273;
-typedef void (^RDar7407273Block)(RDar7407273 *operation);
-void rdar7407273(RDar7407273Block b) {
-  [b copy];
-}
-
-//===----------------------------------------------------------------------===//
-// Tests of ownership attributes.
-//===----------------------------------------------------------------------===//
-
- at interface TestOwnershipAttr : NSObject
-- (NSString*) returnsAnOwnedString __attribute__((ns_returns_retained));
-- (NSString*) returnsAnOwnedCFString  __attribute__((cf_returns_retained));
- at end
-
-void test_attr_1(TestOwnershipAttr *X) {
-  NSString *str = [X returnsAnOwnedString]; // no-warning
-}
-
-void test_attr_1b(TestOwnershipAttr *X) {
-  NSString *str = [X returnsAnOwnedCFString]; // expected-warning{{leak}}
-}
-
- at interface MyClassTestCFAttr : NSObject {}
-- (NSDate*) returnsCFRetained __attribute__((cf_returns_retained));
-- (NSDate*) alsoReturnsRetained;
-- (NSDate*) returnsNSRetained __attribute__((ns_returns_retained));
- at end
-
-__attribute__((cf_returns_retained))
-CFDateRef returnsRetainedCFDate()  {
-  return CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-}
-
- at implementation MyClassTestCFAttr
-- (NSDate*) returnsCFRetained {
-  return (NSDate*) returnsRetainedCFDate(); // No leak.
-}
-
-- (NSDate*) alsoReturnsRetained {
-  return (NSDate*) returnsRetainedCFDate(); // expected-warning{{leak}}
-}
-
-- (NSDate*) returnsNSRetained {
-  return (NSDate*) returnsRetainedCFDate(); // expected-warning{{leak}}
-}
- at end
-
-
-#if __has_feature(attribute_ns_consumed)
-#define NS_CONSUMED __attribute__((ns_consumed))
-#endif
-#if __has_feature(attribute_cf_consumed)
-#define CF_CONSUMED __attribute__((cf_consumed))
-#endif
-
-void consumeAndStopTracking(id NS_CONSUMED obj, void (^callback)(void));
-void CFConsumeAndStopTracking(CFTypeRef CF_CONSUMED obj, void (^callback)(void));
-
-void testConsumeAndStopTracking() {
-  id retained = [@[] retain]; // +0, GC
-  consumeAndStopTracking(retained, ^{}); // no-warning
-
-  id doubleRetained = [[@[] retain] retain]; // +0, GC
-  consumeAndStopTracking(doubleRetained, ^{
-    [doubleRetained release];
-  }); // no-warning
-
-  id unretained = @[]; // +0
-  consumeAndStopTracking(unretained, ^{}); // no-warning, GC
-}
-
-void testCFConsumeAndStopTrackingMsg() {
-  id retained = [@[] retain]; // +0, GC
-  CFConsumeAndStopTracking((CFTypeRef)retained, ^{}); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testCFConsumeAndStopTracking() {
-  CFTypeRef retained = returnsRetainedCFDate(); // +1
-  CFConsumeAndStopTracking(retained, ^{}); // no-warning
-
-  CFTypeRef doubleRetained = CFRetain(returnsRetainedCFDate()); // +2
-  CFConsumeAndStopTracking(doubleRetained, ^{
-    CFRelease(doubleRetained);
-  }); // no-warning
-
-  id unretained = @[]; // +0
-  CFConsumeAndStopTracking((CFTypeRef)unretained, ^{}); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-inline.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-inline.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-inline.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,395 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -fblocks -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from Mac OS X headers:
-//
-// #include <Cocoa/Cocoa.h>
-// #include <CoreFoundation/CoreFoundation.h>
-// #include <DiskArbitration/DiskArbitration.h>
-// #include <QuartzCore/QuartzCore.h>
-// #include <Quartz/Quartz.h>
-// #include <IOKit/IOKitLib.h>
-//
-// It includes the basic definitions for the test cases below.
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long uintptr_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef unsigned int UInt32;
-typedef signed long CFIndex;
-typedef CFIndex CFByteOrder;
-typedef struct {
-    CFIndex location;
-    CFIndex length;
-} CFRange;
-static __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) {
-    CFRange range;
-    range.location = loc;
-    range.length = len;
-    return range;
-}
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0,     kCFStringEncodingWindowsLatin1 = 0x0500,     kCFStringEncodingISOLatin1 = 0x0201,     kCFStringEncodingNextStepLatin = 0x0B01,     kCFStringEncodingASCII = 0x0600,     kCFStringEncodingUnicode = 0x0100,     kCFStringEncodingUTF8 = 0x08000100,     kCFStringEncodingNonLossyASCII = 0x0BFF      ,     kCFStringEncodingUTF16 = 0x0100,     kCFStringEncodingUTF16BE = 0x10000100,     kCFStringEncodingUTF16LE = 0x14000100,      kCFStringEncodingUTF32 = 0x0c000100,     kCFStringEncodingUTF32BE = 0x18000100,     kCFStringEncodingUTF32LE = 0x1c000100  };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-enum {
-kCFNumberSInt8Type = 1,     kCFNumberSInt16Type = 2,     kCFNumberSInt32Type = 3,     kCFNumberSInt64Type = 4,     kCFNumberFloat32Type = 5,     kCFNumberFloat64Type = 6,      kCFNumberCharType = 7,     kCFNumberShortType = 8,     kCFNumberIntType = 9,     kCFNumberLongType = 10,     kCFNumberLongLongType = 11,     kCFNumberFloatType = 12,     kCFNumberDoubleType = 13,      kCFNumberCFIndexType = 14,      kCFNumberNSIntegerType = 15,     kCFNumberCGFloatType = 16,     kCFNumberMaxType = 16    };
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef const struct __CFAttributedString *CFAttributedStringRef;
-typedef struct __CFAttributedString *CFMutableAttributedStringRef;
-extern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes) ;
-extern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr) ;
-extern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value) ;
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-- (id)autorelease;
-- (id)init;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
- at end
- at interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
- at protocol NSFastEnumeration  - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end           @class NSString, NSDictionary;
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value;
- at end  @interface NSNumber : NSValue  - (char)charValue;
-- (id)initWithInt:(int)value;
- at end   @class NSString;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end  @interface NSArray (NSArrayCreation)  + (id)array;
- at end       @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
- at end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
- at interface NSDate : NSObject <NSCopying, NSCoding>  - (NSTimeInterval)timeIntervalSinceReferenceDate;
- at end            typedef unsigned short unichar;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (NSString *)stringByAppendingString:(NSString *)aString;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end        @class NSString, NSURL, NSError;
- at interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding>  - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
- at end   @class NSLocale, NSDate, NSCalendar, NSTimeZone, NSError, NSArray, NSMutableDictionary;
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end    @interface NSMutableDictionary : NSDictionary  - (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end  @interface NSMutableDictionary (NSMutableDictionaryCreation)  + (id)dictionaryWithCapacity:(NSUInteger)numItems;
- at end  typedef double CGFloat;
-struct CGSize {
-};
-typedef struct CGSize CGSize;
-struct CGRect {
-};
-typedef struct CGRect CGRect;
-typedef mach_port_t io_object_t;
-typedef char io_name_t[128];
-typedef io_object_t io_iterator_t;
-typedef io_object_t io_service_t;
-typedef struct IONotificationPort * IONotificationPortRef;
-typedef void (*IOServiceMatchingCallback)(  void * refcon,  io_iterator_t iterator );
-io_service_t IOServiceGetMatchingService(  mach_port_t masterPort,  CFDictionaryRef matching );
-kern_return_t IOServiceGetMatchingServices(  mach_port_t masterPort,  CFDictionaryRef matching,  io_iterator_t * existing );
-kern_return_t IOServiceAddNotification(  mach_port_t masterPort,  const io_name_t notificationType,  CFDictionaryRef matching,  mach_port_t wakePort,  uintptr_t reference,  io_iterator_t * notification ) __attribute__((deprecated));
-kern_return_t IOServiceAddMatchingNotification(  IONotificationPortRef notifyPort,  const io_name_t notificationType,  CFDictionaryRef matching,         IOServiceMatchingCallback callback,         void * refCon,  io_iterator_t * notification );
-CFMutableDictionaryRef IOServiceMatching(  const char * name );
-CFMutableDictionaryRef IOServiceNameMatching(  const char * name );
-CFMutableDictionaryRef IOBSDNameMatching(  mach_port_t masterPort,  uint32_t options,  const char * bsdName );
-CFMutableDictionaryRef IOOpenFirmwarePathMatching(  mach_port_t masterPort,  uint32_t options,  const char * path );
-CFMutableDictionaryRef IORegistryEntryIDMatching(  uint64_t entryID );
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
- at interface NSTask : NSObject - (id)init;
- at end                    typedef struct CGColorSpace *CGColorSpaceRef;
-typedef struct CGImage *CGImageRef;
-typedef struct CGLayer *CGLayerRef;
- at interface NSResponder : NSObject <NSCoding> {
-}
- at end    @protocol NSAnimatablePropertyContainer      - (id)animator;
- at end  extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {
-}
- at end @protocol NSValidatedUserInterfaceItem - (SEL)action;
- at end   @protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
- at end  @class NSDate, NSDictionary, NSError, NSException, NSNotification;
- at interface NSApplication : NSResponder <NSUserInterfaceValidations> {
-}
- at end   enum {
-NSTerminateCancel = 0,         NSTerminateNow = 1,         NSTerminateLater = 2 };
-typedef NSUInteger NSApplicationTerminateReply;
- at protocol NSApplicationDelegate <NSObject> @optional        - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
- at end  @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView, NSTextView;
- at interface NSCell : NSObject <NSCopying, NSCoding> {
-}
- at end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
-typedef struct {
-}
-CVTimeStamp;
- at interface CIImage : NSObject <NSCoding, NSCopying> {
-}
-typedef int CIFormat;
- at end  enum {
-kDAReturnSuccess = 0,     kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01,     kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02,     kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03,     kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04,     kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05,     kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06,     kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07,     kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08,     kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09,     kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A,     kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B,     kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
- at interface CIContext: NSObject {
-}
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r;
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r     format:(CIFormat)f colorSpace:(CGColorSpaceRef)cs;
-- (CGLayerRef)createCGLayerWithSize:(CGSize)size info:(CFDictionaryRef)d;
- at end extern NSString* const QCRendererEventKey;
- at protocol QCCompositionRenderer - (NSDictionary*) attributes;
- at end   @interface QCRenderer : NSObject <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
- at end  extern NSString* const QCViewDidStartRenderingNotification;
- at interface QCView : NSView <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
- at end    enum {
-ICEXIFOrientation1 = 1,     ICEXIFOrientation2 = 2,     ICEXIFOrientation3 = 3,     ICEXIFOrientation4 = 4,     ICEXIFOrientation5 = 5,     ICEXIFOrientation6 = 6,     ICEXIFOrientation7 = 7,     ICEXIFOrientation8 = 8, };
- at class ICDevice;
- at protocol ICDeviceDelegate <NSObject>  @required      - (void)didRemoveDevice:(ICDevice*)device;
- at end extern NSString *const ICScannerStatusWarmingUp;
- at class ICScannerDevice;
- at protocol ICScannerDeviceDelegate <ICDeviceDelegate>  @optional       - (void)scannerDeviceDidBecomeAvailable:(ICScannerDevice*)scanner;
- at end
-
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-typedef unsigned long CFTypeID;
-struct CGPoint {
-  CGFloat x;
-  CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-typedef struct CGGradient *CGGradientRef;
-typedef uint32_t CGGradientDrawingOptions;
-extern CFTypeID CGGradientGetTypeID(void);
-extern CGGradientRef CGGradientCreateWithColorComponents(CGColorSpaceRef
-  space, const CGFloat components[], const CGFloat locations[], size_t count);
-extern CGGradientRef CGGradientCreateWithColors(CGColorSpaceRef space,
-  CFArrayRef colors, const CGFloat locations[]);
-extern CGGradientRef CGGradientRetain(CGGradientRef gradient);
-extern void CGGradientRelease(CGGradientRef gradient);
-typedef struct CGContext *CGContextRef;
-extern void CGContextDrawLinearGradient(CGContextRef context,
-    CGGradientRef gradient, CGPoint startPoint, CGPoint endPoint,
-    CGGradientDrawingOptions options);
-extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
-
- at interface NSMutableArray : NSObject
-- (void)addObject:(id)object;
-+ (id)array;
- at end
-
-enum {
-    NSASCIIStringEncoding = 1,
-    NSNEXTSTEPStringEncoding = 2,
-    NSJapaneseEUCStringEncoding = 3,
-    NSUTF8StringEncoding = 4,
-    NSISOLatin1StringEncoding = 5,
-    NSSymbolStringEncoding = 6,
-    NSNonLossyASCIIStringEncoding = 7,
-};
-typedef struct __CFString * CFMutableStringRef;
-typedef NSUInteger NSStringEncoding;
-
-extern CFStringRef CFStringCreateWithCStringNoCopy(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-void foo(id x) {
-  [x retain];
-}
-
-void bar(id x) {
-  [x release];
-}
-
-void test() {
-  NSString *s = [[NSString alloc] init]; // expected-warning {{Potential leak}}
-  foo(s);
-  foo(s);
-  bar(s);
-}
-void test_neg() {
-  NSString *s = [[NSString alloc] init]; // no-warning  
-  foo(s);
-  foo(s);
-  bar(s);
-  bar(s);
-  bar(s);
-}
-
-//===----------------------------------------------------------------------===//
-// Test returning retained and not-retained values.
-//===----------------------------------------------------------------------===//
-
-// On return (intraprocedural), assume CF objects are leaked.
-CFStringRef test_return_ratained_CF(char *bytes) {
-  CFStringRef str;
-  return CFStringCreateWithCStringNoCopy(0, bytes, NSNEXTSTEPStringEncoding, 0); // expected-warning {{leak}}
-}
-
-// On return (intraprocedural), assume NSObjects are not leaked.
-id test_return_retained_NS() {
-  return [[NSString alloc] init]; // no-warning
-}
-
-void test_test_return_retained() {
-  id x = test_return_retained_NS(); // expected-warning {{leak}}
-  [x retain];
-  [x release];
-}
-
-//===----------------------------------------------------------------------===//
-// Test not applying "double effects" from inlining and RetainCountChecker summaries.
-// If we inline a call, we should already see its retain/release semantics.
-//===----------------------------------------------------------------------===//
-
-__attribute__((cf_returns_retained)) CFStringRef test_return_inline(CFStringRef x) {
-  CFRetain(x);
-  return x;
-}
-
-void test_test_return_inline(char *bytes) {
-  CFStringRef str = CFStringCreateWithCStringNoCopy(0, bytes, NSNEXTSTEPStringEncoding, 0);
-  // After this call, 'str' really has +2 reference count.
-  CFStringRef str2 = test_return_inline(str);
-  // After this call, 'str' really has a +1 reference count.
-  CFRelease(str);
-  // After this call, 'str2' and 'str' has a +0 reference count.
-  CFRelease(str2);
-}
-
-void test_test_return_inline_2(char *bytes) {
-  CFStringRef str = CFStringCreateWithCStringNoCopy(0, bytes, NSNEXTSTEPStringEncoding, 0); // expected-warning {{leak}}
-  // After this call, 'str' really has +2 reference count.
-  CFStringRef str2 = test_return_inline(str);
-  // After this call, 'str' really has a +1 reference count.
-  CFRelease(str);
-}
-
-extern CFStringRef getString(void);
-CFStringRef testCovariantReturnType(void) __attribute__((cf_returns_retained));
-
-void usetestCovariantReturnType() {
-  CFStringRef S = ((void*)0);
-  S = testCovariantReturnType();
-  if (S)
-    CFRelease(S);
-} 
-
-CFStringRef testCovariantReturnType() {
-  CFStringRef Str = ((void*)0);
-  Str = getString();
-  if (Str) {
-    CFRetain(Str);
-  }
-  return Str;
-}
-
-// Test that we reanalyze ObjC methods which have been inlined. When reanalyzing
-// them, make sure we inline very small functions.
-id returnInputParam(id x) {
-  return x;
-}
-
- at interface MyClass : NSObject
-- (id)test_reanalyze_as_top_level;
-- (void)test_inline_tiny_when_reanalyzing;
-- (void)inline_test_reanalyze_as_top_level;
- at end
-
- at implementation MyClass
-- (void)test_inline_tiny_when_reanalyzing {
-  id x = [[NSString alloc] init]; // no-warning
-  x = returnInputParam(x);
-  [x release];
-}
-
-- (id)test_reanalyze_as_top_level {
-  // This method does not follow naming conventions, so a warning will be
-  // reported when it is reanalyzed at top level.
-  return [[NSString alloc] init]; // expected-warning {{leak}}
-}
-
-- (void)inline_test_reanalyze_as_top_level {
-  id x = [self test_reanalyze_as_top_level];
-  [x release];
-  [self test_inline_tiny_when_reanalyzing];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-path-notes-gc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-path-notes-gc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-path-notes-gc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1400 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -fobjc-gc-only -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -fobjc-gc-only -analyzer-output=plist-multi-file %s -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-/***
-This file is for testing the path-sensitive notes for retain/release errors.
-Its goal is to have simple branch coverage of any path-based diagnostics,
-not to actually check all possible retain/release errors.
-
-This file is for notes that only appear in a GC-enabled analysis. 
-Non-specific and ref-count-only notes should go in retain-release-path-notes.m.
-***/
-
- at interface NSObject
-+ (id)alloc;
-- (id)init;
-- (void)dealloc;
-
-- (Class)class;
-
-- (id)retain;
-- (void)release;
-- (void)autorelease;
- at end
-
- at interface Foo : NSObject
-- (id)methodWithValue;
- at property(retain) id propertyValue;
- at end
-
-typedef struct CFType *CFTypeRef;
-CFTypeRef CFRetain(CFTypeRef);
-void CFRelease(CFTypeRef);
-
-id NSMakeCollectable(CFTypeRef);
-CFTypeRef CFMakeCollectable(CFTypeRef);
-
-CFTypeRef CFCreateSomething();
-CFTypeRef CFGetSomething();
-
-
-void creationViaCFCreate () {
-  CFTypeRef leaked = CFCreateSomething(); // expected-warning{{leak}} expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected}}
-  return; // expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void makeCollectable () {
-  CFTypeRef leaked = CFCreateSomething(); // expected-warning{{leak}} expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected}}
-  CFRetain(leaked); // expected-note{{Reference count incremented. The object now has a +2 retain count}}
-  CFMakeCollectable(leaked); // expected-note{{In GC mode a call to 'CFMakeCollectable' decrements an object's retain count and registers the object with the garbage collector. An object must have a 0 retain count to be garbage collected. After this call its retain count is +1}}
-  NSMakeCollectable(leaked); // expected-note{{In GC mode a call to 'NSMakeCollectable' decrements an object's retain count and registers the object with the garbage collector. Since it now has a 0 retain count the object can be automatically collected by the garbage collector}}
-  CFRetain(leaked); // expected-note{{Reference count incremented. The object now has a +1 retain count. The object is not eligible for garbage collection until the retain count reaches 0 again}}
-  return; // expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void retainReleaseIgnored () {
-  id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +0 retain count}}
-  [object retain]; // expected-note{{In GC mode the 'retain' message has no effect}}
-  [object release]; // expected-note{{In GC mode the 'release' message has no effect}}
-  [object autorelease]; // expected-note{{In GC mode an 'autorelease' has no effect}}
-  CFRelease((CFTypeRef)object); // expected-warning{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
- at implementation Foo (FundamentalRuleUnderGC)
-- (id)getViolation {
-  id object = (id) CFCreateSomething(); // expected-warning{{leak}} expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected}}
-  return object; // expected-note{{Object returned to caller as an owning reference (single retain count transferred to caller)}} expected-note{{Object leaked: object allocated and stored into 'object' and returned from method 'getViolation' is potentially leaked when using garbage collection.  Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector}}
-}
-
-- (id)copyViolation {
-  id object = (id) CFCreateSomething(); // expected-warning{{leak}} expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected}}
-  return object; // expected-note{{Object returned to caller as an owning reference (single retain count transferred to caller)}} expected-note{{Object leaked: object allocated and stored into 'object' and returned from method 'copyViolation' is potentially leaked when using garbage collection.  Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector}}
-}
- at end
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>43</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>43</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>43</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>43</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>44</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>44</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>44</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak (when using garbage collection) of an object stored into 'leaked'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of object when using garbage collection</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>creationViaCFCreate</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>44</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>48</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>48</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>48</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>48</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>48</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>48</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>48</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>48</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>48</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>49</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>49</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>49</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>49</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>49</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>49</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>50</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>50</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>50</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>50</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>50</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>In GC mode a call to 'CFMakeCollectable' decrements an object's retain count and registers the object with the garbage collector. An object must have a 0 retain count to be garbage collected. After this call its retain count is +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>In GC mode a call to 'CFMakeCollectable' decrements an object's retain count and registers the object with the garbage collector. An object must have a 0 retain count to be garbage collected. After this call its retain count is +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>51</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>In GC mode a call to 'NSMakeCollectable' decrements an object's retain count and registers the object with the garbage collector. Since it now has a 0 retain count the object can be automatically collected by the garbage collector</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>In GC mode a call to 'NSMakeCollectable' decrements an object's retain count and registers the object with the garbage collector. Since it now has a 0 retain count the object can be automatically collected by the garbage collector</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>52</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>52</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>52</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>52</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>52</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count. The object is not eligible for garbage collection until the retain count reaches 0 again</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count. The object is not eligible for garbage collection until the retain count reaches 0 again</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>53</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>53</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>53</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>53</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak (when using garbage collection) of an object stored into 'leaked'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of object when using garbage collection</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>makeCollectable</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>53</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>57</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>58</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>In GC mode the 'retain' message has no effect</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>In GC mode the 'retain' message has no effect</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>59</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>In GC mode the 'release' message has no effect</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>In GC mode the 'release' message has no effect</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>In GC mode an 'autorelease' has no effect</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>In GC mode an 'autorelease' has no effect</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>61</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>61</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>61</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>61</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>61</integer>
-// CHECK-NEXT:          <key>col</key><integer>29</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>retainReleaseIgnored</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>61</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>66</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>66</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>66</integer>
-// CHECK-NEXT:          <key>col</key><integer>38</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>67</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>67</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>67</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>67</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>67</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>67</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>67</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>67</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>67</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'object' and returned from method 'getViolation' is potentially leaked when using garbage collection.  Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'object' and returned from method 'getViolation' is potentially leaked when using garbage collection.  Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak (when using garbage collection) of an object stored into 'object'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object when using garbage collection</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>getViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>67</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>71</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>71</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>71</integer>
-// CHECK-NEXT:          <key>col</key><integer>38</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count.  Core Foundation objects are not automatically garbage collected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>72</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>72</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'object' and returned from method 'copyViolation' is potentially leaked when using garbage collection.  Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'object' and returned from method 'copyViolation' is potentially leaked when using garbage collection.  Callers of this method do not expect a returned object with a +1 retain count since they expect the object to be managed by the garbage collector</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak (when using garbage collection) of an object stored into 'object'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object when using garbage collection</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>copyViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>72</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-path-notes.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-path-notes.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-path-notes.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5344 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -analyzer-output=plist-multi-file %s -o %t
-// RUN: FileCheck --input-file=%t %s
-
-/***
-This file is for testing the path-sensitive notes for retain/release errors.
-Its goal is to have simple branch coverage of any path-based diagnostics,
-not to actually check all possible retain/release errors.
-
-This file includes notes that only appear in a ref-counted analysis. 
-GC-specific notes should go in retain-release-path-notes-gc.m.
-***/
-
- at interface NSObject
-+ (id)alloc;
-- (id)init;
-- (void)dealloc;
-
-- (Class)class;
-
-- (id)retain;
-- (void)release;
-- (void)autorelease;
- at end
-
- at interface Foo : NSObject
-- (id)methodWithValue;
- at property(retain) id propertyValue;
-
-- (id)objectAtIndexedSubscript:(unsigned)index;
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
-typedef struct CFType *CFTypeRef;
-CFTypeRef CFRetain(CFTypeRef);
-void CFRelease(CFTypeRef);
-
-id NSMakeCollectable(CFTypeRef);
-CFTypeRef CFMakeCollectable(CFTypeRef);
-
-CFTypeRef CFCreateSomething();
-CFTypeRef CFGetSomething();
-
-
-void creationViaAlloc () {
-  id leaked = [[NSObject alloc] init]; // expected-warning{{leak}} expected-note{{Method returns an Objective-C object with a +1 retain count}}
-  return; // expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void creationViaCFCreate () {
-  CFTypeRef leaked = CFCreateSomething(); // expected-warning{{leak}} expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count}}
-  return; // expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void acquisitionViaMethod (Foo *foo) {
-  id leaked = [foo methodWithValue]; // expected-warning{{leak}} expected-note{{Method returns an Objective-C object with a +0 retain count}}
-  [leaked retain]; // expected-note{{Reference count incremented. The object now has a +1 retain count}}
-  [leaked retain]; // expected-note{{Reference count incremented. The object now has a +2 retain count}}
-  [leaked release]; // expected-note{{Reference count decremented. The object now has a +1 retain count}}
-  return; // expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void acquisitionViaProperty (Foo *foo) {
-  id leaked = foo.propertyValue; // expected-warning{{leak}} expected-note{{Property returns an Objective-C object with a +0 retain count}}
-  [leaked retain]; // expected-note{{Reference count incremented. The object now has a +1 retain count}}
-  return; // expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void acquisitionViaCFFunction () {
-  CFTypeRef leaked = CFGetSomething(); // expected-warning{{leak}} expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count}}
-  CFRetain(leaked); // expected-note{{Reference count incremented. The object now has a +1 retain count}}
-  return; // expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-void explicitDealloc () {
-  id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
-  [object dealloc]; // expected-note{{Object released by directly sending the '-dealloc' message}}
-  [object class]; // expected-warning{{Reference-counted object is used after it is released}} // expected-note{{Reference-counted object is used after it is released}}
-}
-
-void implicitDealloc () {
-  id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
-  [object release]; // expected-note{{Object released}}
-  [object class]; // expected-warning{{Reference-counted object is used after it is released}} // expected-note{{Reference-counted object is used after it is released}}
-}
-
-void overAutorelease () {
-  id object = [[NSObject alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
-  [object autorelease]; // expected-note{{Object autoreleased}}
-  [object autorelease]; // expected-note{{Object autoreleased}} 
-  return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased 2 times but the object has a +1 retain count}} 
-}
-
-void autoreleaseUnowned (Foo *foo) {
-  id object = foo.propertyValue; // expected-note{{Property returns an Objective-C object with a +0 retain count}}
-  [object autorelease]; // expected-note{{Object autoreleased}} 
-  return; // expected-warning{{Object autoreleased too many times}} expected-note{{Object was autoreleased but has a +0 retain count}}
-}
-
-void makeCollectableIgnored () {
-  CFTypeRef leaked = CFCreateSomething(); // expected-warning{{leak}} expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count}}
-  CFMakeCollectable(leaked); // expected-note{{When GC is not enabled a call to 'CFMakeCollectable' has no effect on its argument}}
-  NSMakeCollectable(leaked); // expected-note{{When GC is not enabled a call to 'NSMakeCollectable' has no effect on its argument}}
-  return; // expected-note{{Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1}}
-}
-
-CFTypeRef CFCopyRuleViolation () {
-  CFTypeRef object = CFGetSomething(); // expected-note{{Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count}}
-  return object; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object returned to caller with a +0 retain count}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-CFTypeRef CFGetRuleViolation () {
-  CFTypeRef object = CFCreateSomething(); // expected-warning{{leak}} expected-note{{Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count}}
-  return object; // expected-note{{Object returned to caller as an owning reference (single retain count transferred to caller)}} expected-note{{Object leaked: object allocated and stored into 'object' is returned from a function whose name ('CFGetRuleViolation') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation}}
-}
-
- at implementation Foo (FundamentalMemoryManagementRules)
-- (id)copyViolation {
-  id result = self.propertyValue; // expected-note{{Property returns an Objective-C object with a +0 retain count}}
-  return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object returned to caller with a +0 retain count}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-- (id)copyViolationIndexedSubscript {
-  id result = self[0]; // expected-note{{Subscript returns an Objective-C object with a +0 retain count}}
-  return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object returned to caller with a +0 retain count}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-- (id)copyViolationKeyedSubscript {
-  id result = self[self]; // expected-note{{Subscript returns an Objective-C object with a +0 retain count}}
-  return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object returned to caller with a +0 retain count}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-- (id)getViolation {
-  id result = [[Foo alloc] init]; // expected-warning{{leak}} expected-note{{Method returns an Objective-C object with a +1 retain count}}
-  return result; // expected-note{{Object returned to caller as an owning reference (single retain count transferred to caller)}} expected-note{{Object leaked: object allocated and stored into 'result' is returned from a method whose name ('getViolation') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa}}
-}
-
-- (id)copyAutorelease {
-  id result = [[Foo alloc] init]; // expected-note{{Method returns an Objective-C object with a +1 retain count}}
-  [result autorelease]; // expected-note{{Object autoreleased}}
-  return result; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}} expected-note{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
- at end
-
-
-typedef unsigned long NSUInteger;
-
- at interface NSValue : NSObject
- at end
-
- at interface NSNumber : NSValue
-+ (NSNumber *)numberWithInt:(int)i;
- at end
-
- at interface NSString : NSObject
-+ (NSString *)stringWithUTF8String:(const char *)str;
- at end
-
- at interface NSArray : NSObject
-+ (NSArray *)arrayWithObjects:(const id [])objects count:(NSUInteger)count;
- at end
-
- at interface NSDictionary : NSObject
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id /* <NSCopying> */ [])keys count:(NSUInteger)count;
- at end
-
-
-void testNumericLiteral() {
-  id result = @1; // expected-note{{NSNumber literal is an object with a +0 retain count}}
-  [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testBoxedInt(int x) {
-  id result = @(x); // expected-note{{NSNumber boxed expression produces an object with a +0 retain count}}
-  [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testBoxedString(const char *str) {
-  id result = @(str); // expected-note{{NSString boxed expression produces an object with a +0 retain count}}
-  [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testArray(id obj) {
-  id result = @[obj]; // expected-note{{NSArray literal is an object with a +0 retain count}}
-  [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testDictionary(id key, id value) {
-  id result = @{key: value}; // expected-note{{NSDictionary literal is an object with a +0 retain count}}
-  [result release]; // expected-warning{{decrement}} expected-note{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-// Test that we step into the init method when the allocated object is leaked due to early escape within init.
-
-static int Cond;
- at interface MyObj : NSObject
--(id)initX;
--(id)initY;
--(id)initZ;
-+(void)test;
- at end
-
- at implementation MyObj
-
--(id)initX {
-  if (Cond)  // expected-note {{Assuming 'Cond' is not equal to 0}}
-             // expected-note at -1{{Taking true branch}}
-    return 0;
-  self = [super init];
-  return self;
-}
-
--(id)initY {
-  self = [super init]; //expected-note {{Method returns an Objective-C object with a +1 retain count}}
-  return self;
-}
-
--(id)initZ {
-  self = [super init];
-  return self;
-}
-
-+(void)test {
-  // initX is inlined since we explicitely mark it as interesting
-  id x = [[MyObj alloc] initX]; // expected-warning {{Potential leak of an object}}
-                                // expected-note at -1 {{Method returns an Objective-C object with a +1 retain count}}
-                                // expected-note at -2 {{Calling 'initX'}}
-                                // expected-note at -3 {{Returning from 'initX'}}
-                                // expected-note at -4 {{Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1}}
-  // initI is inlined because the allocation happens within initY
-  id y = [[MyObj alloc] initY]; // expected-warning {{Potential leak of an object}}
-                                // expected-note at -1 {{Calling 'initY'}}
-                                // expected-note at -2 {{Returning from 'initY'}}
-
-  // initZ is not inlined
-  id z = [[MyObj alloc] initZ];
-                                // expected-note at -1 {{Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1}}
-
-  [x release];
-  [z release];
-}
- at end
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>46</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>46</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>46</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>47</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>47</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>47</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>47</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'leaked'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>creationViaAlloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>47</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>51</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>51</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>51</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>52</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>52</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>52</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'leaked'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>creationViaCFCreate</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>52</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>56</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>56</integer>
-// CHECK-NEXT:          <key>col</key><integer>35</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>56</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>57</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>57</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>57</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>58</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>58</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>58</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>59</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>59</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count decremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count decremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>59</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>60</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>60</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>60</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'leaked'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>acquisitionViaMethod</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>60</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>64</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>64</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>64</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>64</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>64</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>64</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>64</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Property returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Property returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>64</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>64</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>65</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>65</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>65</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>66</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>66</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>66</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>66</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'leaked'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>acquisitionViaProperty</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>66</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>70</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>70</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>70</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>70</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>71</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>71</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>71</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>71</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>71</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>71</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>72</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>72</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'leaked'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>acquisitionViaCFFunction</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>72</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>76</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>76</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>76</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>77</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>77</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released by directly sending the '-dealloc' message</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released by directly sending the '-dealloc' message</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>77</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>78</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>78</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>78</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>78</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>explicitDealloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>78</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>82</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>82</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>82</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>83</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>83</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>83</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>84</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>84</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>84</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>84</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>84</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>implicitDealloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>84</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>88</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>88</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>88</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>89</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>89</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>89</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>89</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>89</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>89</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>89</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>89</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>89</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>90</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>90</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>90</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>90</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>90</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>90</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>90</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>90</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>90</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>91</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>91</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>91</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>91</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>91</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>overAutorelease</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>91</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>95</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>95</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>95</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Property returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Property returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>95</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>96</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>96</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>96</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>96</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>96</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>96</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>97</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>97</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>97</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>97</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object was autoreleased but has a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object was autoreleased but has a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>autoreleaseUnowned</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>97</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>101</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>101</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>101</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>101</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>101</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>101</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>101</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>101</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>101</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>102</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>102</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>102</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>102</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>102</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>102</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>102</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>When GC is not enabled a call to 'CFMakeCollectable' has no effect on its argument</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>When GC is not enabled a call to 'CFMakeCollectable' has no effect on its argument</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>102</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>102</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>103</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>103</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>When GC is not enabled a call to 'NSMakeCollectable' has no effect on its argument</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>When GC is not enabled a call to 'NSMakeCollectable' has no effect on its argument</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>103</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>104</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>104</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>104</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>104</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>104</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'leaked' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'leaked'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>makeCollectableIgnored</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>104</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>108</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>108</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>108</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFGetSomething' returns a Core Foundation object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>108</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>109</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>109</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>109</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>109</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>109</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>109</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>109</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>109</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>109</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>109</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Method should return an owned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>CFCopyRuleViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>109</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>113</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>113</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>113</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>113</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>113</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>113</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>113</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFCreateSomething' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>113</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>113</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>114</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>114</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>114</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>114</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>114</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>114</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>114</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>114</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>114</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>114</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'object' is returned from a function whose name ('CFGetRuleViolation') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'object' is returned from a function whose name ('CFGetRuleViolation') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'object'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>CFGetRuleViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>114</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>32</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>119</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>119</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>119</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Property returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Property returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>119</integer>
-// CHECK-NEXT:            <key>col</key><integer>32</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>120</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>120</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>120</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>120</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Method should return an owned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>copyViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>120</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>124</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>124</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>124</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>124</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>124</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>124</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>124</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Subscript returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Subscript returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>124</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>124</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>125</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>125</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>125</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>125</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>125</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>125</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>125</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>125</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>125</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>125</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Method should return an owned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>copyViolationIndexedSubscript</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>125</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>129</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>129</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>129</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Subscript returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Subscript returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>129</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>130</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>130</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>130</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>130</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>130</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>130</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>130</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>130</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>130</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>130</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Method should return an owned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>copyViolationKeyedSubscript</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>130</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>134</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>134</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>134</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>134</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>135</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>135</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>135</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>135</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'result' is returned from a method whose name ('getViolation') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'result' is returned from a method whose name ('getViolation') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'result'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>getViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>135</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>139</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>139</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>139</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>139</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>140</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>140</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>140</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>140</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>140</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>140</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>140</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>140</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>140</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>141</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>141</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>141</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>141</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Method should return an owned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>copyAutorelease</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>141</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>169</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>169</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>169</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>169</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>169</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>169</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>169</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSNumber literal is an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSNumber literal is an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>169</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>169</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>170</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>170</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>170</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>170</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>170</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testNumericLiteral</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>170</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>174</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>174</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>174</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>174</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>174</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>174</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>174</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSNumber boxed expression produces an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSNumber boxed expression produces an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>174</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>174</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>175</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>175</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>175</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testBoxedInt</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>175</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>179</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>179</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>179</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>179</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>179</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>179</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>179</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSString boxed expression produces an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSString boxed expression produces an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>179</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>179</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>180</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>180</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>180</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>180</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testBoxedString</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>180</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>184</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>184</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>184</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSArray literal is an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSArray literal is an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>185</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>185</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>185</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>185</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>185</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testArray</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>185</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>189</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>189</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>189</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>189</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>189</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>189</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>189</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSDictionary literal is an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSDictionary literal is an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>189</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>189</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>190</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>190</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>190</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>190</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>190</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testDictionary</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>190</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>225</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>225</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>225</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>225</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>225</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>225</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'initX'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'initX'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>205</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>205</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>206</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>206</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>206</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>206</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>206</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>206</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>206</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>206</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>206</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'Cond' is not equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'Cond' is not equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>206</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>206</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>208</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>208</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>225</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>225</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>225</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'initX'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'initX'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>225</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>225</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>225</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>225</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>225</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>231</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>231</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>231</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>231</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>231</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'initY'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'initY'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>213</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>213</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>213</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>214</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>214</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>214</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>214</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>214</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>214</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>214</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>214</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>214</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>231</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>231</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>231</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'initY'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'initY'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>231</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>231</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>236</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>236</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>236</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>236</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>236</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>236</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>236</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>236</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>236</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>236</integer>
-// CHECK-NEXT:    <key>col</key><integer>11</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-region-store.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-region-store.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/retain-release-region-store.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,257 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -analyzer-max-loop 6 -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not including Foundation.h directly makes this test case both svelte and
-// portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long UInt32;
-typedef signed long CFIndex;
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0,     kCFStringEncodingWindowsLatin1 = 0x0500,     kCFStringEncodingISOLatin1 = 0x0201,     kCFStringEncodingNextStepLatin = 0x0B01,     kCFStringEncodingASCII = 0x0600,     kCFStringEncodingUnicode = 0x0100,     kCFStringEncodingUTF8 = 0x08000100,     kCFStringEncodingNonLossyASCII = 0x0BFF      ,     kCFStringEncodingUTF16 = 0x0100,     kCFStringEncodingUTF16BE = 0x10000100,     kCFStringEncodingUTF16LE = 0x14000100,      kCFStringEncodingUTF32 = 0x0c000100,     kCFStringEncodingUTF32BE = 0x18000100,     kCFStringEncodingUTF32LE = 0x1c000100  };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
- at end
-typedef float CGFloat;
-typedef double NSTimeInterval;
- at interface NSDate : NSObject <NSCopying, NSCoding>  - (NSTimeInterval)timeIntervalSinceReferenceDate;
- at end      enum {
-NSObjCNoType = 0,     NSObjCVoidType = 'v',     NSObjCCharType = 'c',     NSObjCShortType = 's',     NSObjCLongType = 'l',     NSObjCLonglongType = 'q',     NSObjCFloatType = 'f',     NSObjCDoubleType = 'd',      NSObjCBoolType = 'B',      NSObjCSelectorType = ':',     NSObjCObjectType = '@',     NSObjCStructType = '{',     NSObjCPointerType = '^',     NSObjCStringType = '*',     NSObjCArrayType = '[',     NSObjCUnionType = '(',     NSObjCBitfield = 'b' }
-__attribute__((deprecated));
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-typedef mach_port_t io_object_t;
-typedef io_object_t io_service_t;
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
- at interface NSAppleEventManager : NSObject {
-}
- at end enum {
-kDAReturnSuccess = 0,     kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01,     kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02,     kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03,     kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04,     kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05,     kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06,     kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07,     kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08,     kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09,     kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A,     kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B,     kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
- at interface NSNumber : NSObject
-- (id)initWithInt:(int)value;
- at end
-typedef unsigned long NSUInteger;
- at interface NSArray : NSObject
--(id) initWithObjects:(const id *)objects count:(NSUInteger) cnt;
- at end
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-// Test to see if we *issue* an error when we store the pointer
-// to a struct.  This differs from basic store.
-
-CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-
-struct foo {
-  NSDate* f;
-};
-
-// FIXME: We should be warning about a use-after-free here, but we
-// temporarily "escape" retain counted objects stored to structs very eagerly
-// until we can properly tell whether they have escaped via a return value
-// or not.
-CFAbsoluteTime f4() {
-  struct foo x;
-  
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);  
-  [((NSDate*) date) retain];
-  CFRelease(date);
-  CFDateGetAbsoluteTime(date); // no-warning
-  x.f = (NSDate*) date;  
-  [((NSDate*) date) release];
-  // FIXME: the following line should warn.
-  t = CFDateGetAbsoluteTime(date);   // no-warning
-  return t;
-}
-
-// Test that assigning to an self.ivar loses track of an object.
-// This is a temporary hack to reduce false positives.
- at interface Test3 : NSObject {
-  id myObj;
-}
-- (void)test_self_assign_ivar;
- at end
-
- at implementation Test3
-- (void)test_self_assign_ivar {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t); // no-warning
-  myObj = (id) date;
-}
- at end
-
-//===------------------------------------------------------------------------------------------===//
-// <rdar://problem/7257223> (also <rdar://problem/7283470>) - False positive due to not invalidating
-//  the reference count of a tracked region that was itself invalidated.
-//===------------------------------------------------------------------------------------------===//
-
-typedef struct __rdar_7257223 { CFDateRef x; } RDar7257223;
-void rdar_7257223_aux(RDar7257223 *p);
-
-CFDateRef rdar7257223_Create(void) {
-  RDar7257223 s;
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  s.x = CFDateCreate(0, t); // no-warning
-  rdar_7257223_aux(&s);
-  return s.x;
-}
-
-CFDateRef rdar7257223_Create_2(void) {
-  RDar7257223 s;
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  s.x = CFDateCreate(0, t); // no-warning
-  return s.x;
-}
-
-void rdar7283470(void) {
-  NSNumber *numbers[] = {
-    [[NSNumber alloc] initWithInt:1], // no-warning
-    [[NSNumber alloc] initWithInt:2], // no-warning
-    [[NSNumber alloc] initWithInt:3], // no-warning
-    [[NSNumber alloc] initWithInt:4], // no-warning
-    [[NSNumber alloc] initWithInt:5]  // no-warning
-  };
-  
-  for (unsigned i = 0 ; i < sizeof(numbers) / sizeof(numbers[0]) ; ++i)
-    [numbers[i] release];
-}
-
-void rdar7283470_positive(void) {
-  NSNumber *numbers[] = {
-    [[NSNumber alloc] initWithInt:1], // expected-warning{{leak}}
-    [[NSNumber alloc] initWithInt:2], // expected-warning{{leak}}
-    [[NSNumber alloc] initWithInt:3], // expected-warning{{leak}}
-    [[NSNumber alloc] initWithInt:4], // expected-warning{{leak}}
-    [[NSNumber alloc] initWithInt:5]  // expected-warning{{leak}} 
-  };
-}
-
-void rdar7283470_2(void) {
-  NSNumber *numbers[] = {
-    [[NSNumber alloc] initWithInt:1], // no-warning
-    [[NSNumber alloc] initWithInt:2], // no-warning
-    [[NSNumber alloc] initWithInt:3], // no-warning
-    [[NSNumber alloc] initWithInt:4], // no-warning
-    [[NSNumber alloc] initWithInt:5]  // no-warning
-  };
-  
-  NSArray *s_numbers =[[NSArray alloc] initWithObjects:&numbers[0] count:sizeof(numbers) / sizeof(numbers[0])];
-  
-  for (unsigned i = 0 ; i < sizeof(numbers) / sizeof(numbers[0]) ; ++i)
-    [numbers[i] release];
-  
-  [s_numbers release];
-}
-
-void rdar7283470_2_positive(void) {
-  NSNumber *numbers[] = {
-    [[NSNumber alloc] initWithInt:1], // no-warning
-    [[NSNumber alloc] initWithInt:2], // no-warning
-    [[NSNumber alloc] initWithInt:3], // no-warning
-    [[NSNumber alloc] initWithInt:4], // no-warning
-    [[NSNumber alloc] initWithInt:5]  // no-warning
-  };
-  
-  NSArray *s_numbers =[[NSArray alloc] initWithObjects: &numbers[0] count:sizeof(numbers) / sizeof(numbers[0])]; // expected-warning{{leak}}
-  
-  for (unsigned i = 0 ; i < sizeof(numbers) / sizeof(numbers[0]) ; ++i)
-    [numbers[i] release];
-}
-
-void pr6699(int x) {
-  CFDateRef values[2];
-  values[0] = values[1] = 0;
-
-  if (x) {
-    CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-    values[1] = CFDateCreate(0, t);
-  }
-
-  if (values[1]) {
-    // A bug in RegionStore::RemoveDeadBindings caused 'values[1]' to get prematurely
-    // pruned from the store.
-    CFRelease(values[1]); // no-warning
-  }
-}
-
-// <rdar://problem/8261992> Idempotent operation checker false positive with ObjC ivars
- at interface R8261992 : NSObject {
-  @package int myIvar;
-}
- at end
-
-static void R8261992_ChangeMyIvar(R8261992 *tc) {
-    tc->myIvar = 5;
-}
-
-void R8261992_test(R8261992 *tc) {
-  int temp = tc->myIvar;
-  // The ivar binding for tc->myIvar gets invalidated.
-  R8261992_ChangeMyIvar(tc);
-  tc->myIvar = temp; // no-warning
-  tc = [[R8261992 alloc] init];
-  temp = tc->myIvar; // no-warning
-  // The ivar binding for tc->myIvar gets invalidated.
-  R8261992_ChangeMyIvar(tc);
-  tc->myIvar = temp;
-  [tc release]; // no-warning
-  // did we analyze this?
-  int *p = 0x0;
-  *p = 0xDEADBEEF; // expected-warning{{null}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/retain-release.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/retain-release.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/retain-release.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26040 +0,0 @@
-// RUN: rm -f %t.objc.plist %t.objcpp.plist
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -fblocks -verify -Wno-objc-root-class %s -analyzer-output=plist -o %t.objc.plist
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -fblocks -verify -x objective-c++ -std=gnu++98 -Wno-objc-root-class %s -analyzer-output=plist -o %t.objcpp.plist
-// FIXLATER: cat %t.objc.plist ; FileCheck --input-file=%t.objc.plist %s
-// FIXLATER: cat %t.objcpp.plist ; FileCheck --input-file=%t.objcpp.plist %s
-
-#if __has_feature(attribute_ns_returns_retained)
-#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
-#endif
-#if __has_feature(attribute_cf_returns_retained)
-#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
-#endif
-#if __has_feature(attribute_ns_returns_not_retained)
-#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
-#endif
-#if __has_feature(attribute_cf_returns_not_retained)
-#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
-#endif
-#if __has_feature(attribute_ns_consumes_self)
-#define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
-#endif
-#if __has_feature(attribute_ns_consumed)
-#define NS_CONSUMED __attribute__((ns_consumed))
-#endif
-#if __has_feature(attribute_cf_consumed)
-#define CF_CONSUMED __attribute__((cf_consumed))
-#endif
-#if __has_attribute(ns_returns_autoreleased)
-#define NS_RETURNS_AUTORELEASED __attribute__((ns_returns_autoreleased))
-#endif
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from Mac OS X headers:
-//
-// #include <Cocoa/Cocoa.h>
-// #include <CoreFoundation/CoreFoundation.h>
-// #include <DiskArbitration/DiskArbitration.h>
-// #include <QuartzCore/QuartzCore.h>
-// #include <Quartz/Quartz.h>
-// #include <IOKit/IOKitLib.h>
-//
-// It includes the basic definitions for the test cases below.
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long uintptr_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef unsigned int UInt32;
-typedef signed long CFIndex;
-typedef CFIndex CFByteOrder;
-typedef struct {
-    CFIndex location;
-    CFIndex length;
-} CFRange;
-static __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) {
-    CFRange range;
-    range.location = loc;
-    range.length = len;
-    return range;
-}
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-extern CFTypeRef CFMakeCollectable(CFTypeRef cf);
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0,     kCFStringEncodingWindowsLatin1 = 0x0500,     kCFStringEncodingISOLatin1 = 0x0201,     kCFStringEncodingNextStepLatin = 0x0B01,     kCFStringEncodingASCII = 0x0600,     kCFStringEncodingUnicode = 0x0100,     kCFStringEncodingUTF8 = 0x08000100,     kCFStringEncodingNonLossyASCII = 0x0BFF      ,     kCFStringEncodingUTF16 = 0x0100,     kCFStringEncodingUTF16BE = 0x10000100,     kCFStringEncodingUTF16LE = 0x14000100,      kCFStringEncodingUTF32 = 0x0c000100,     kCFStringEncodingUTF32BE = 0x18000100,     kCFStringEncodingUTF32LE = 0x1c000100  };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-enum {
-kCFNumberSInt8Type = 1,     kCFNumberSInt16Type = 2,     kCFNumberSInt32Type = 3,     kCFNumberSInt64Type = 4,     kCFNumberFloat32Type = 5,     kCFNumberFloat64Type = 6,      kCFNumberCharType = 7,     kCFNumberShortType = 8,     kCFNumberIntType = 9,     kCFNumberLongType = 10,     kCFNumberLongLongType = 11,     kCFNumberFloatType = 12,     kCFNumberDoubleType = 13,      kCFNumberCFIndexType = 14,      kCFNumberNSIntegerType = 15,     kCFNumberCGFloatType = 16,     kCFNumberMaxType = 16    };
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef const struct __CFAttributedString *CFAttributedStringRef;
-typedef struct __CFAttributedString *CFMutableAttributedStringRef;
-extern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes) ;
-extern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr) ;
-extern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value) ;
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-- (id)autorelease;
-- (NSString *)description;
-- (id)init;
- at end
- at protocol NSCopying 
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-+ (id)new;
-- (void)dealloc;
- at end
- at interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
- at protocol NSFastEnumeration 
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
- at class NSString, NSDictionary;
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value;
- at end
- at interface NSNumber : NSValue
-- (char)charValue;
-- (id)initWithInt:(int)value;
-+ (NSNumber *)numberWithInt:(int)value;
- at end
- at class NSString;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-- (id)initWithObjects:(const id [])objects count:(NSUInteger)cnt;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithArray:(NSArray *)array;
- at end  @interface NSArray (NSArrayCreation)  + (id)array;
- at end       @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
- at end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
- at interface NSDate : NSObject <NSCopying, NSCoding>  - (NSTimeInterval)timeIntervalSinceReferenceDate;
- at end            typedef unsigned short unichar;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-- (NSString *)stringByAppendingString:(NSString *)aString;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end        @class NSString, NSURL, NSError;
- at interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding>  - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
- at end   @class NSLocale, NSDate, NSCalendar, NSTimeZone, NSError, NSArray, NSMutableDictionary;
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id <NSCopying> [])keys count:(NSUInteger)cnt;
- at end
- at interface NSMutableDictionary : NSDictionary  - (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end  @interface NSMutableDictionary (NSMutableDictionaryCreation)  + (id)dictionaryWithCapacity:(NSUInteger)numItems;
- at end  typedef double CGFloat;
-struct CGSize {
-};
-typedef struct CGSize CGSize;
-struct CGRect {
-};
-typedef struct CGRect CGRect;
-typedef mach_port_t io_object_t;
-typedef char io_name_t[128];
-typedef io_object_t io_iterator_t;
-typedef io_object_t io_service_t;
-typedef struct IONotificationPort * IONotificationPortRef;
-typedef void (*IOServiceMatchingCallback)(  void * refcon,  io_iterator_t iterator );
-io_service_t IOServiceGetMatchingService(  mach_port_t masterPort,  CFDictionaryRef matching );
-kern_return_t IOServiceGetMatchingServices(  mach_port_t masterPort,  CFDictionaryRef matching,  io_iterator_t * existing );
-kern_return_t IOServiceAddNotification(  mach_port_t masterPort,  const io_name_t notificationType,  CFDictionaryRef matching,  mach_port_t wakePort,  uintptr_t reference,  io_iterator_t * notification ) __attribute__((deprecated)); // expected-note {{'IOServiceAddNotification' declared here}}
-kern_return_t IOServiceAddMatchingNotification(  IONotificationPortRef notifyPort,  const io_name_t notificationType,  CFDictionaryRef matching,         IOServiceMatchingCallback callback,         void * refCon,  io_iterator_t * notification );
-CFMutableDictionaryRef IOServiceMatching(  const char * name );
-CFMutableDictionaryRef IOServiceNameMatching(  const char * name );
-CFMutableDictionaryRef IOBSDNameMatching(  mach_port_t masterPort,  uint32_t options,  const char * bsdName );
-CFMutableDictionaryRef IOOpenFirmwarePathMatching(  mach_port_t masterPort,  uint32_t options,  const char * path );
-CFMutableDictionaryRef IORegistryEntryIDMatching(  uint64_t entryID );
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
- at interface NSTask : NSObject - (id)init;
- at end                    typedef struct CGColorSpace *CGColorSpaceRef;
-typedef struct CGImage *CGImageRef;
-typedef struct CGLayer *CGLayerRef;
- at interface NSResponder : NSObject <NSCoding> {
-}
- at end    @protocol NSAnimatablePropertyContainer      - (id)animator;
- at end  extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {
-}
- at end @protocol NSValidatedUserInterfaceItem - (SEL)action;
- at end   @protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
- at end  @class NSDate, NSDictionary, NSError, NSException, NSNotification;
- at class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
- at interface NSApplication : NSResponder <NSUserInterfaceValidations> {
-}
-- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo;
- at end   enum {
-NSTerminateCancel = 0,         NSTerminateNow = 1,         NSTerminateLater = 2 };
-typedef NSUInteger NSApplicationTerminateReply;
- at protocol NSApplicationDelegate <NSObject> @optional        - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
- at end  @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView, NSTextView;
- at interface NSCell : NSObject <NSCopying, NSCoding> {
-}
- at end 
-typedef struct {
-}
-CVTimeStamp;
- at interface CIImage : NSObject <NSCoding, NSCopying> {
-}
-typedef int CIFormat;
- at end  enum {
-kDAReturnSuccess = 0,     kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01,     kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02,     kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03,     kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04,     kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05,     kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06,     kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07,     kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08,     kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09,     kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A,     kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B,     kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
- at interface CIContext: NSObject {
-}
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r;
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r     format:(CIFormat)f colorSpace:(CGColorSpaceRef)cs;
-- (CGLayerRef)createCGLayerWithSize:(CGSize)size info:(CFDictionaryRef)d;
- at end extern NSString* const QCRendererEventKey;
- at protocol QCCompositionRenderer - (NSDictionary*) attributes;
- at end   @interface QCRenderer : NSObject <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
- at end  extern NSString* const QCViewDidStartRenderingNotification;
- at interface QCView : NSView <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
- at end    enum {
-ICEXIFOrientation1 = 1,     ICEXIFOrientation2 = 2,     ICEXIFOrientation3 = 3,     ICEXIFOrientation4 = 4,     ICEXIFOrientation5 = 5,     ICEXIFOrientation6 = 6,     ICEXIFOrientation7 = 7,     ICEXIFOrientation8 = 8, };
- at class ICDevice;
- at protocol ICDeviceDelegate <NSObject>  @required      - (void)didRemoveDevice:(ICDevice*)device;
- at end extern NSString *const ICScannerStatusWarmingUp;
- at class ICScannerDevice;
- at protocol ICScannerDeviceDelegate <ICDeviceDelegate>  @optional       - (void)scannerDeviceDidBecomeAvailable:(ICScannerDevice*)scanner;
- at end
-
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-typedef unsigned long CFTypeID;
-struct CGPoint {
-  CGFloat x;
-  CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-typedef struct CGGradient *CGGradientRef;
-typedef uint32_t CGGradientDrawingOptions;
-extern CFTypeID CGGradientGetTypeID(void);
-extern CGGradientRef CGGradientCreateWithColorComponents(CGColorSpaceRef
-  space, const CGFloat components[], const CGFloat locations[], size_t count);
-extern CGGradientRef CGGradientCreateWithColors(CGColorSpaceRef space,
-  CFArrayRef colors, const CGFloat locations[]);
-extern CGGradientRef CGGradientRetain(CGGradientRef gradient);
-extern void CGGradientRelease(CGGradientRef gradient);
-typedef struct CGContext *CGContextRef;
-extern void CGContextDrawLinearGradient(CGContextRef context,
-    CGGradientRef gradient, CGPoint startPoint, CGPoint endPoint,
-    CGGradientDrawingOptions options);
-extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
-
- at interface NSMutableArray : NSObject
-- (void)addObject:(id)object;
-+ (id)array;
- at end
-
-// This is how NSMakeCollectable is declared in the OS X 10.8 headers.
-id NSMakeCollectable(CFTypeRef __attribute__((cf_consumed))) __attribute__((ns_returns_retained));
-
-typedef const struct __CFUUID * CFUUIDRef;
-
-extern
-void *CFPlugInInstanceCreate(CFAllocatorRef allocator, CFUUIDRef factoryUUID, CFUUIDRef typeUUID);
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-CFAbsoluteTime f1() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);
-  CFRetain(date);
-  CFRelease(date);
-  CFDateGetAbsoluteTime(date); // no-warning
-  CFRelease(date);
-  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released}}
-  return t;
-}
-
-CFAbsoluteTime f2() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);  
-  [((NSDate*) date) retain];
-  CFRelease(date);
-  CFDateGetAbsoluteTime(date); // no-warning
-  [((NSDate*) date) release];
-  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released}}
-  return t;
-}
-
-
-NSDate* global_x;
-
-// Test to see if we supresss an error when we store the pointer
-// to a global.
-
-CFAbsoluteTime f3() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t);  
-  [((NSDate*) date) retain];
-  CFRelease(date);
-  CFDateGetAbsoluteTime(date); // no-warning
-  global_x = (NSDate*) date;  
-  [((NSDate*) date) release];
-  t = CFDateGetAbsoluteTime(date);   // no-warning
-  return t;
-}
-
-//---------------------------------------------------------------------------
-// Test case 'f4' differs for region store and basic store.  See
-// retain-release-region-store.m and retain-release-basic-store.m.
-//---------------------------------------------------------------------------
-
-// Test a leak.
-
-CFAbsoluteTime f5(int x) {  
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(0, t); // expected-warning{{leak}}
-  
-  if (x)
-    CFRelease(date);
-  
-  return t;
-}
-
-// Test a leak involving the return.
-
-CFDateRef f6(int x) {  
-  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());  // expected-warning{{leak}}
-  CFRetain(date);
-  return date;
-}
-
-// Test a leak involving an overwrite.
-
-CFDateRef f7() {
-  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());  //expected-warning{{leak}}
-  CFRetain(date);
-  date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); // expected-warning {{leak}}
-  return date;
-}
-
-// Generalization of Create rule.  MyDateCreate returns a CFXXXTypeRef, and
-// has the word create.
-CFDateRef MyDateCreate();
-
-CFDateRef f8() {
-  CFDateRef date = MyDateCreate(); // expected-warning{{leak}}
-  CFRetain(date);  
-  return date;
-}
-
-__attribute__((cf_returns_retained)) CFDateRef f9() {
-  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent()); // no-warning
-  int *p = 0;
-  // When allocations fail, CFDateCreate can return null.
-  if (!date) *p = 1; // expected-warning{{null}}
-  return date;
-}
-
-// Handle DiskArbitration API:
-//
-// http://developer.apple.com/DOCUMENTATION/DARWIN/Reference/DiscArbitrationFramework/
-//
-void f10(io_service_t media, DADiskRef d, CFStringRef s) {
-  DADiskRef disk = DADiskCreateFromBSDName(kCFAllocatorDefault, 0, "hello"); // expected-warning{{leak}}
-  if (disk) NSLog(@"ok");
-  
-  disk = DADiskCreateFromIOMedia(kCFAllocatorDefault, 0, media); // expected-warning{{leak}}
-  if (disk) NSLog(@"ok");
-
-  CFDictionaryRef dict = DADiskCopyDescription(d);  // expected-warning{{leak}}
-  if (dict) NSLog(@"ok"); 
-  
-  disk = DADiskCopyWholeDisk(d); // expected-warning{{leak}}
-  if (disk) NSLog(@"ok");
-    
-  DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault,   // expected-warning{{leak}}
-                                                kDAReturnSuccess, s);
-  if (dissenter) NSLog(@"ok");
-  
-  DASessionRef session = DASessionCreate(kCFAllocatorDefault);  // expected-warning{{leak}}
-  if (session) NSLog(@"ok");
-}
-
-// Test retain/release checker with CFString and CFMutableArray.
-void f11() {
-  // Create the array.
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-
-  // Create a string.
-  CFStringRef s1 = CFStringCreateWithCString(0, "hello world",
-                                             kCFStringEncodingUTF8);
-
-  // Add the string to the array.
-  CFArrayAppendValue(A, s1);
-  
-  // Decrement the reference count.
-  CFRelease(s1); // no-warning
-  
-  // Get the string.  We don't own it.
-  s1 = (CFStringRef) CFArrayGetValueAtIndex(A, 0);
-  
-  // Release the array.
-  CFRelease(A); // no-warning
-  
-  // Release the string.  This is a bug.
-  CFRelease(s1); // expected-warning{{Incorrect decrement of the reference count}}
-}
-
-// PR 3337: Handle functions declared using typedefs.
-typedef CFTypeRef CREATEFUN();
-CREATEFUN MyCreateFun;
-
-void f12() {
-  CFTypeRef o = MyCreateFun(); // expected-warning {{leak}}
-}
-
-void f13_autorelease() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-  [(id) A autorelease]; // no-warning
-}
-
-void f13_autorelease_b() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-  [(id) A autorelease];
-  [(id) A autorelease];
-} // expected-warning{{Object autoreleased too many times}}
-
-CFMutableArrayRef f13_autorelease_c() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-  [(id) A autorelease];
-  [(id) A autorelease]; 
-  return A; // expected-warning{{Object autoreleased too many times}}
-}
-
-CFMutableArrayRef f13_autorelease_d() {
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-  [(id) A autorelease];
-  [(id) A autorelease]; 
-  CFMutableArrayRef B = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{Object autoreleased too many times}}
-  CFRelease(B); // no-warning
-  while (1) {}
-}
-
-
-// This case exercises the logic where the leak site is the same as the allocation site.
-void f14_leakimmediately() {
-  CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning{{leak}}
-}
-
-// Test that we track an allocated object beyond the point where the *name*
-// of the variable storing the reference is no longer live.
-void f15() {
-  // Create the array.
-  CFMutableArrayRef A = CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks);
-  CFMutableArrayRef *B = &A;
-  // At this point, the name 'A' is no longer live.
-  CFRelease(*B);  // no-warning
-}
-
-// Test when we pass NULL to CFRetain/CFRelease/CFMakeCollectable.
-void f16(int x, CFTypeRef p) {
-  if (p)
-    return;
-
-  if (x > 0) {
-    CFRelease(p); // expected-warning{{Null pointer argument in call to CFRelease}}
-  }
-  else if (x < 0) {
-    CFRetain(p); // expected-warning{{Null pointer argument in call to CFRetain}}
-  }
-  else {
-    CFMakeCollectable(p); // expected-warning{{Null pointer argument in call to CFMakeCollectable}}
-  }
-}
-
-// Test that an object is non-null after being CFRetained/CFReleased.
-void f17(int x, CFTypeRef p) {
-  if (x > 0) {
-    CFRelease(p);
-    if (!p)
-      CFRelease(0); // no-warning
-  }
-  else if (x < 0) {
-    CFRetain(p);
-    if (!p)
-      CFRetain(0); // no-warning
-  }
-  else {
-    CFMakeCollectable(p);
-    if (!p)
-      CFMakeCollectable(0); // no-warning
-  }
-}
-
-// Test basic tracking of ivars associated with 'self'.  For the retain/release
-// checker we currently do not want to flag leaks associated with stores
-// of tracked objects to ivars.
- at interface SelfIvarTest : NSObject {
-  id myObj;
-}
-- (void)test_self_tracking;
- at end
-
- at implementation SelfIvarTest
-- (void)test_self_tracking {
-  myObj = (id) CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
- at end
-
-// Test return of non-owned objects in contexts where an owned object
-// is expected.
- at interface TestReturnNotOwnedWhenExpectedOwned
-- (NSString*)newString;
- at end
-
- at implementation TestReturnNotOwnedWhenExpectedOwned
-- (NSString*)newString {
-  NSString *s = [NSString stringWithUTF8String:"hello"];
-  return s; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
- at end
-
-// <rdar://problem/6659160>
-int isFoo(char c);
-
-static void rdar_6659160(char *inkind, char *inname)
-{
-  // We currently expect that [NSObject alloc] cannot fail.  This
-  // will be a toggled flag in the future.  It can indeed return null, but
-  // Cocoa programmers generally aren't expected to reason about out-of-memory
-  // conditions.
-  NSString *kind = [[NSString alloc] initWithUTF8String:inkind];  // expected-warning{{leak}}
-  
-  // We do allow stringWithUTF8String to fail.  This isn't really correct, as
-  // far as returning 0.  In most error conditions it will throw an exception.
-  // If allocation fails it could return 0, but again this
-  // isn't expected.
-  NSString *name = [NSString stringWithUTF8String:inname];
-  if(!name)
-    return;
-
-  const char *kindC = 0;
-  const char *nameC = 0;
-  
-  // In both cases, we cannot reach a point down below where we
-  // dereference kindC or nameC with either being null.  This is because
-  // we assume that [NSObject alloc] doesn't fail and that we have the guard
-  // up above.
-  
-  if(kind)
-    kindC = [kind UTF8String];
-  if(name)
-    nameC = [name UTF8String];
-  if(!isFoo(kindC[0])) // expected-warning{{null}}
-    return;
-  if(!isFoo(nameC[0])) // no-warning
-    return;
-
-  [kind release];
-  [name release]; // expected-warning{{Incorrect decrement of the reference count}}
-}
-
-// PR 3677 - 'allocWithZone' should be treated as following the Cocoa naming
-//  conventions with respect to 'return'ing ownership.
- at interface PR3677: NSObject @end
- at implementation PR3677
-+ (id)allocWithZone:(NSZone *)inZone {
-  return [super allocWithZone:inZone];  // no-warning
-}
- at end
-
-// PR 3820 - Reason about calls to -dealloc
-void pr3820_DeallocInsteadOfRelease(void)
-{
-  id foo = [[NSString alloc] init]; // no-warning
-  [foo dealloc];
-  // foo is not leaked, since it has been deallocated.
-}
-
-void pr3820_ReleaseAfterDealloc(void)
-{
-  id foo = [[NSString alloc] init];
-  [foo dealloc];
-  [foo release];  // expected-warning{{used after it is release}}
-  // NSInternalInconsistencyException: message sent to deallocated object
-}
-
-void pr3820_DeallocAfterRelease(void)
-{
-  NSLog(@"\n\n[%s]", __FUNCTION__);
-  id foo = [[NSString alloc] init];
-  [foo release];
-  [foo dealloc]; // expected-warning{{used after it is released}}
-  // message sent to released object
-}
-
-// From <rdar://problem/6704930>.  The problem here is that 'length' binds to
-// '($0 - 1)' after '--length', but SimpleConstraintManager doesn't know how to
-// reason about '($0 - 1) > constant'.  As a temporary hack, we drop the value
-// of '($0 - 1)' and conjure a new symbol.
-void rdar6704930(unsigned char *s, unsigned int length) {
-  NSString* name = 0;
-  if (s != 0) {
-    if (length > 0) {
-      while (length > 0) {
-        if (*s == ':') {
-          ++s;
-          --length;
-          name = [[NSString alloc] init]; // no-warning
-          break;
-        }
-        ++s;
-        --length;
-      }
-      if ((length == 0) && (name != 0)) {
-        [name release];
-        name = 0;
-      }
-      if (length == 0) { // no ':' found -> use it all as name
-        name = [[NSString alloc] init]; // no-warning
-      }
-    }
-  }
-
-  if (name != 0) {
-    [name release];
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6833332>
-// One build of the analyzer accidentally stopped tracking the allocated
-// object after the 'retain'.
-//===----------------------------------------------------------------------===//
-
- at interface rdar_6833332 : NSObject <NSApplicationDelegate> {
-    NSWindow *window;
-}
- at property (nonatomic, retain) NSWindow *window;
- at end
-
- at implementation rdar_6833332
- at synthesize window;
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
- NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain]; // expected-warning{{leak}}
-
- [dict setObject:@"foo" forKey:@"bar"];
-
- NSLog(@"%@", dict);
-}
-- (void)dealloc {
-    [window release];
-    [super dealloc];
-}
-
-- (void)radar10102244 {
- NSMutableDictionary *dict = [[NSMutableDictionary dictionaryWithCapacity:4] retain]; // expected-warning{{leak}} 
- if (window) 
-   NSLog(@"%@", window);    
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6257780> clang checker fails to catch use-after-release
-//===----------------------------------------------------------------------===//
-
-int rdar_6257780_Case1() {
-  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-  NSArray *array = [NSArray array];
-  [array release]; // expected-warning{{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-  [pool drain];
-  return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/10640253> Analyzer is confused about NSAutoreleasePool -allocWithZone:.
-//===----------------------------------------------------------------------===//
-
-void rdar_10640253_autorelease_allocWithZone() {
-    NSAutoreleasePool *pool = [[NSAutoreleasePool allocWithZone:(NSZone*)0] init];
-    (void) pool;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6866843> Checker should understand new/setObject:/release constructs
-//===----------------------------------------------------------------------===//
-
-void rdar_6866843() {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSMutableDictionary* dictionary = [[NSMutableDictionary alloc] init];
- NSArray* array = [[NSArray alloc] init];
- [dictionary setObject:array forKey:@"key"];
- [array release];
- // Using 'array' here should be fine
- NSLog(@"array = %@\n", array); // no-warning
- // Now the array is released
- [dictionary release];
- [pool drain];
-}
-
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6877235> Classes typedef-ed to CF objects should get the same treatment as CF objects
-//===----------------------------------------------------------------------===//
-
-typedef CFTypeRef OtherRef;
-
- at interface RDar6877235 : NSObject {}
-- (CFTypeRef)_copyCFTypeRef;
-- (OtherRef)_copyOtherRef;
- at end
-
- at implementation RDar6877235
-- (CFTypeRef)_copyCFTypeRef {
-  return [[NSString alloc] init]; // no-warning
-}
-- (OtherRef)_copyOtherRef {
-  return [[NSString alloc] init]; // no-warning
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6320065> false positive - init method returns an object
-// owned by caller
-//===----------------------------------------------------------------------===//
-
- at interface RDar6320065 : NSObject {
-  NSString *_foo;
-}
-- (id)initReturningNewClass;
-- (id)_initReturningNewClassBad;
-- (id)initReturningNewClassBad2;
- at end
-
- at interface RDar6320065Subclass : RDar6320065
- at end
-
- at implementation RDar6320065
-- (id)initReturningNewClass {
-  [self release];
-  self = [[RDar6320065Subclass alloc] init]; // no-warning
-  return self;
-}
-- (id)_initReturningNewClassBad {
-  [self release];
-  [[RDar6320065Subclass alloc] init]; // expected-warning {{leak}}
-  return self;
-}
-- (id)initReturningNewClassBad2 {
-  [self release];
-  self = [[RDar6320065Subclass alloc] init];
-  return [self autorelease]; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
- at end
-
- at implementation RDar6320065Subclass
- at end
-
-int RDar6320065_test() {
-  RDar6320065 *test = [[RDar6320065 alloc] init]; // no-warning
-  [test release];
-  return 0;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7129086> -awakeAfterUsingCoder: returns an owned object 
-//  and claims the receiver
-//===----------------------------------------------------------------------===//
-
- at interface RDar7129086 : NSObject {} @end
- at implementation RDar7129086
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder {
-  [self release]; // no-warning
-  return [NSString alloc];  // no-warning
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6859457> [NSData dataWithBytesNoCopy] does not return a
-//  retained object
-//===----------------------------------------------------------------------===//
-
- at interface RDar6859457 : NSObject {}
-- (NSString*) NoCopyString;
-- (NSString*) noCopyString;
- at end
-
- at implementation RDar6859457 
-- (NSString*) NoCopyString { return [[NSString alloc] init]; } // expected-warning{{leak}}
-- (NSString*) noCopyString { return [[NSString alloc] init]; } // expected-warning{{leak}}
- at end
-
-void test_RDar6859457(RDar6859457 *x, void *bytes, NSUInteger dataLength) {
-  [x NoCopyString]; // expected-warning{{leak}}
-  [x noCopyString]; // expected-warning{{leak}}
-  [NSData dataWithBytesNoCopy:bytes length:dataLength];  // no-warning
-  [NSData dataWithBytesNoCopy:bytes length:dataLength freeWhenDone:1]; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// PR 4230 - an autorelease pool is not necessarily leaked during a premature
-//  return
-//===----------------------------------------------------------------------===//
-
-static void PR4230(void)
-{
-  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // no-warning
-  NSString *object = [[[NSString alloc] init] autorelease]; // no-warning
-  return;
-}
-
-static void PR4230_new(void)
-{
-  NSAutoreleasePool *pool = [NSAutoreleasePool new]; // no-warning
-  NSString *object = [[[NSString alloc] init] autorelease]; // no-warning
-  return;
-}
-
-//===----------------------------------------------------------------------===//
-// Method name that has a null IdentifierInfo* for its first selector slot.
-// This test just makes sure that we handle it.
-//===----------------------------------------------------------------------===//
-
- at interface TestNullIdentifier
- at end
-
- at implementation TestNullIdentifier
-+ (id):(int)x, ... {
-  return [[NSString alloc] init]; // expected-warning{{leak}}
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6893565> don't flag leaks for return types that cannot be 
-//                          determined to be CF types
-//===----------------------------------------------------------------------===//
-
-// We don't know if 'struct s6893565' represents a Core Foundation type, so
-// we shouldn't emit an error here.
-typedef struct s6893565* TD6893565;
-
- at interface RDar6893565 {}
--(TD6893565)newThing;
- at end
-
- at implementation RDar6893565
--(TD6893565)newThing {  
-  return (TD6893565) [[NSString alloc] init]; // no-warning
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6902710> clang: false positives w/QC and CoreImage methods
-//===----------------------------------------------------------------------===//
-
-void rdar6902710(QCView *view, QCRenderer *renderer, CIContext *context,
-                 NSString *str, CIImage *img, CGRect rect,
-                 CIFormat form, CGColorSpaceRef cs) {
-  [view createSnapshotImageOfType:str]; // expected-warning{{leak}}
-  [renderer createSnapshotImageOfType:str]; // expected-warning{{leak}}
-  [context createCGImage:img fromRect:rect]; // expected-warning{{leak}}
-  [context createCGImage:img fromRect:rect format:form colorSpace:cs]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6945561> -[CIContext createCGLayerWithSize:info:]
-//                           misinterpreted by clang scan-build
-//===----------------------------------------------------------------------===//
-
-void rdar6945561(CIContext *context, CGSize size, CFDictionaryRef d) {
-  [context createCGLayerWithSize:size info:d]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6961230> add knowledge of IOKit functions to retain/release 
-//                          checker
-//===----------------------------------------------------------------------===//
-
-void IOBSDNameMatching_wrapper(mach_port_t masterPort, uint32_t options,  const char * bsdName) {  
-  IOBSDNameMatching(masterPort, options, bsdName); // expected-warning{{leak}}
-}
-
-void IOServiceMatching_wrapper(const char * name) {
-  IOServiceMatching(name); // expected-warning{{leak}}
-}
-
-void IOServiceNameMatching_wrapper(const char * name) {
-  IOServiceNameMatching(name); // expected-warning{{leak}}
-}
-
-CF_RETURNS_RETAINED CFDictionaryRef CreateDict();
-
-void IOServiceAddNotification_wrapper(mach_port_t masterPort, const io_name_t notificationType,
-  mach_port_t wakePort, uintptr_t reference, io_iterator_t * notification ) {
-
-  CFDictionaryRef matching = CreateDict();
-  CFRelease(matching);
-  IOServiceAddNotification(masterPort, notificationType, matching, // expected-warning{{used after it is released}} expected-warning{{deprecated}}
-                           wakePort, reference, notification);
-}
-
-void IORegistryEntryIDMatching_wrapper(uint64_t entryID ) {
-  IORegistryEntryIDMatching(entryID); // expected-warning{{leak}}
-}
-
-void IOOpenFirmwarePathMatching_wrapper(mach_port_t masterPort, uint32_t options,
-                                        const char * path) {
-  IOOpenFirmwarePathMatching(masterPort, options, path); // expected-warning{{leak}}
-}
-
-void IOServiceGetMatchingService_wrapper(mach_port_t masterPort) {
-  CFDictionaryRef matching = CreateDict();
-  IOServiceGetMatchingService(masterPort, matching);
-  CFRelease(matching); // expected-warning{{used after it is released}}
-}
-
-void IOServiceGetMatchingServices_wrapper(mach_port_t masterPort, io_iterator_t *existing) {
-  CFDictionaryRef matching = CreateDict();
-  IOServiceGetMatchingServices(masterPort, matching, existing);
-  CFRelease(matching); // expected-warning{{used after it is released}}
-}
-
-void IOServiceAddMatchingNotification_wrapper(IONotificationPortRef notifyPort, const io_name_t notificationType, 
-  IOServiceMatchingCallback callback, void * refCon, io_iterator_t * notification) {
-    
-  CFDictionaryRef matching = CreateDict();
-  IOServiceAddMatchingNotification(notifyPort, notificationType, matching, callback, refCon, notification);
-  CFRelease(matching); // expected-warning{{used after it is released}}
-}
-
-//===----------------------------------------------------------------------===//
-// Test of handling objects whose references "escape" to containers.
-//===----------------------------------------------------------------------===//
-
-void CFDictionaryAddValue(CFMutableDictionaryRef, void *, void *);
-
-// <rdar://problem/6539791>
-void rdar_6539791(CFMutableDictionaryRef y, void* key, void* val_key) {
-  CFMutableDictionaryRef x = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-  CFDictionaryAddValue(y, key, x);
-  CFRelease(x); // the dictionary keeps a reference, so the object isn't deallocated yet
-  signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
-  if (value) {
-    CFDictionaryAddValue(x, val_key, (void*)value); // no-warning
-    CFRelease(value);
-    CFDictionaryAddValue(y, val_key, (void*)value); // no-warning
-  }
-}
-
-// <rdar://problem/6560661>
-// Same issue, except with "AppendValue" functions.
-void rdar_6560661(CFMutableArrayRef x) {
-  signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);
-  // CFArrayAppendValue keeps a reference to value.
-  CFArrayAppendValue(x, value);
-  CFRelease(value);
-  CFRetain(value);
-  CFRelease(value); // no-warning
-}
-
-// <rdar://problem/7152619>
-// Same issue, excwept with "CFAttributeStringSetAttribute".
-void rdar_7152619(CFStringRef str) {
-  CFAttributedStringRef string = CFAttributedStringCreate(kCFAllocatorDefault, str, 0);
-  CFMutableAttributedStringRef attrString = CFAttributedStringCreateMutableCopy(kCFAllocatorDefault, 100, string);
-  CFRelease(string);
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
-  CFAttributedStringSetAttribute(attrString, CFRangeMake(0, 1), str, number);
-  [number release];
-  [number retain];
-  CFRelease(attrString);  
-}
-
-//===----------------------------------------------------------------------===//
-// Test of handling CGGradientXXX functions.
-//===----------------------------------------------------------------------===//
-
-void rdar_7184450(CGContextRef myContext, CGFloat x, CGPoint myStartPoint,
-                  CGPoint myEndPoint) {
-  size_t num_locations = 6;
-  CGFloat locations[6] = { 0.0, 0.265, 0.28, 0.31, 0.36, 1.0 };
-  CGFloat components[28] = { 239.0/256.0, 167.0/256.0, 170.0/256.0,
-     x,  // Start color
-    207.0/255.0, 39.0/255.0, 39.0/255.0, x,
-    147.0/255.0, 21.0/255.0, 22.0/255.0, x,
-    175.0/255.0, 175.0/255.0, 175.0/255.0, x,
-    255.0/255.0,255.0/255.0, 255.0/255.0, x,
-    255.0/255.0,255.0/255.0, 255.0/255.0, x
-  }; // End color
-  
-  CGGradientRef myGradient =
-    CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), // expected-warning{{leak}}
-      components, locations, num_locations);
-
-  CGContextDrawLinearGradient(myContext, myGradient, myStartPoint, myEndPoint,
-                              0);
-  CGGradientRelease(myGradient);
-}
-
-void rdar_7184450_pos(CGContextRef myContext, CGFloat x, CGPoint myStartPoint,
-                  CGPoint myEndPoint) {
-  size_t num_locations = 6;
-  CGFloat locations[6] = { 0.0, 0.265, 0.28, 0.31, 0.36, 1.0 };
-  CGFloat components[28] = { 239.0/256.0, 167.0/256.0, 170.0/256.0,
-     x,  // Start color
-    207.0/255.0, 39.0/255.0, 39.0/255.0, x,
-    147.0/255.0, 21.0/255.0, 22.0/255.0, x,
-    175.0/255.0, 175.0/255.0, 175.0/255.0, x,
-    255.0/255.0,255.0/255.0, 255.0/255.0, x,
-    255.0/255.0,255.0/255.0, 255.0/255.0, x
-  }; // End color
-  
-  CGGradientRef myGradient =
-   CGGradientCreateWithColorComponents(CGColorSpaceCreateDeviceRGB(), components, locations, num_locations); // expected-warning 2 {{leak}}
-
-  CGContextDrawLinearGradient(myContext, myGradient, myStartPoint, myEndPoint,
-                              0);
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7299394> clang false positive: retained instance passed to
-//                          thread in pthread_create marked as leak
-//
-// Until we have full IPA, the analyzer should stop tracking the reference
-// count of objects passed to pthread_create.
-//
-//===----------------------------------------------------------------------===//
-
-struct _opaque_pthread_t {};
-struct _opaque_pthread_attr_t {};
-typedef struct _opaque_pthread_t *__darwin_pthread_t;
-typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t;
-typedef __darwin_pthread_t pthread_t;
-typedef __darwin_pthread_attr_t pthread_attr_t;
-typedef unsigned long __darwin_pthread_key_t;
-typedef __darwin_pthread_key_t pthread_key_t;
-
-int pthread_create(pthread_t *, const pthread_attr_t *,
-                   void *(*)(void *), void *);
-
-int pthread_setspecific(pthread_key_t key, const void *value);
-
-void *rdar_7299394_start_routine(void *p) {
-  [((id) p) release];
-  return 0;
-}
-void rdar_7299394(pthread_attr_t *attr, pthread_t *thread, void *args) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-  pthread_create(thread, attr, rdar_7299394_start_routine, number);
-}
-void rdar_7299394_positive(pthread_attr_t *attr, pthread_t *thread) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/11282706> false positive with not understanding thread
-// local storage
-//===----------------------------------------------------------------------===//
-
-void rdar11282706(pthread_key_t key) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-  pthread_setspecific(key, (void*) number);
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7283567> False leak associated with call to 
-//                          CVPixelBufferCreateWithBytes ()
-//
-// According to the Core Video Reference (ADC), CVPixelBufferCreateWithBytes and
-// CVPixelBufferCreateWithPlanarBytes can release (via a callback) the
-// pixel buffer object.  These test cases show how the analyzer stops tracking
-// the reference count for the objects passed for this argument.  This
-// could be made smarter.
-//===----------------------------------------------------------------------===//
-
-typedef int int32_t;
-typedef UInt32 FourCharCode;
-typedef FourCharCode OSType;
-typedef uint64_t CVOptionFlags;
-typedef int32_t CVReturn;
-typedef struct __CVBuffer *CVBufferRef;
-typedef CVBufferRef CVImageBufferRef;
-typedef CVImageBufferRef CVPixelBufferRef;
-typedef void (*CVPixelBufferReleaseBytesCallback)( void *releaseRefCon, const void *baseAddress );
-
-extern CVReturn CVPixelBufferCreateWithBytes(CFAllocatorRef allocator,
-            size_t width,
-            size_t height,
-            OSType pixelFormatType,
-            void *baseAddress,
-            size_t bytesPerRow,
-            CVPixelBufferReleaseBytesCallback releaseCallback,
-            void *releaseRefCon,
-            CFDictionaryRef pixelBufferAttributes,
-                   CVPixelBufferRef *pixelBufferOut) ;
-
-typedef void (*CVPixelBufferReleasePlanarBytesCallback)( void *releaseRefCon, const void *dataPtr, size_t dataSize, size_t numberOfPlanes, const void *planeAddresses[] );
-
-extern CVReturn CVPixelBufferCreateWithPlanarBytes(CFAllocatorRef allocator,
-        size_t width,
-        size_t height,
-        OSType pixelFormatType,
-        void *dataPtr,
-        size_t dataSize,
-        size_t numberOfPlanes,
-        void *planeBaseAddress[],
-        size_t planeWidth[],
-        size_t planeHeight[],
-        size_t planeBytesPerRow[],
-        CVPixelBufferReleasePlanarBytesCallback releaseCallback,
-        void *releaseRefCon,
-        CFDictionaryRef pixelBufferAttributes,
-        CVPixelBufferRef *pixelBufferOut) ;
-
-extern CVReturn CVPixelBufferCreateWithBytes(CFAllocatorRef allocator,
-            size_t width,
-            size_t height,
-            OSType pixelFormatType,
-            void *baseAddress,
-            size_t bytesPerRow,
-            CVPixelBufferReleaseBytesCallback releaseCallback,
-            void *releaseRefCon,
-            CFDictionaryRef pixelBufferAttributes,
-                   CVPixelBufferRef *pixelBufferOut) ;
-
-CVReturn rdar_7283567(CFAllocatorRef allocator, size_t width, size_t height,
-                      OSType pixelFormatType, void *baseAddress,
-                      size_t bytesPerRow,
-                      CVPixelBufferReleaseBytesCallback releaseCallback,
-                      CFDictionaryRef pixelBufferAttributes,
-                      CVPixelBufferRef *pixelBufferOut) {
-
-  // For the allocated object, it doesn't really matter what type it is
-  // for the purpose of this test.  All we want to show is that
-  // this is freed later by the callback.
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-  
-  return CVPixelBufferCreateWithBytes(allocator, width, height, pixelFormatType,
-                                baseAddress, bytesPerRow, releaseCallback,
-                                number, // potentially released by callback
-                                pixelBufferAttributes, pixelBufferOut) ;
-}
-
-CVReturn rdar_7283567_2(CFAllocatorRef allocator, size_t width, size_t height,
-        OSType pixelFormatType, void *dataPtr, size_t dataSize,
-        size_t numberOfPlanes, void *planeBaseAddress[],
-        size_t planeWidth[], size_t planeHeight[], size_t planeBytesPerRow[],
-        CVPixelBufferReleasePlanarBytesCallback releaseCallback,
-        CFDictionaryRef pixelBufferAttributes,
-        CVPixelBufferRef *pixelBufferOut) {
-    
-    // For the allocated object, it doesn't really matter what type it is
-    // for the purpose of this test.  All we want to show is that
-    // this is freed later by the callback.
-    NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-
-    return CVPixelBufferCreateWithPlanarBytes(allocator,
-              width, height, pixelFormatType, dataPtr, dataSize,
-              numberOfPlanes, planeBaseAddress, planeWidth,
-              planeHeight, planeBytesPerRow, releaseCallback,
-              number, // potentially released by callback
-              pixelBufferAttributes, pixelBufferOut) ;
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7358899> False leak associated with 
-//  CGBitmapContextCreateWithData
-//===----------------------------------------------------------------------===//
-typedef uint32_t CGBitmapInfo;
-typedef void (*CGBitmapContextReleaseDataCallback)(void *releaseInfo, void *data);
-    
-CGContextRef CGBitmapContextCreateWithData(void *data,
-    size_t width, size_t height, size_t bitsPerComponent,
-    size_t bytesPerRow, CGColorSpaceRef space, CGBitmapInfo bitmapInfo,
-    CGBitmapContextReleaseDataCallback releaseCallback, void *releaseInfo);
-
-void rdar_7358899(void *data,
-      size_t width, size_t height, size_t bitsPerComponent,
-      size_t bytesPerRow, CGColorSpaceRef space, CGBitmapInfo bitmapInfo,
-      CGBitmapContextReleaseDataCallback releaseCallback) {
-
-    // For the allocated object, it doesn't really matter what type it is
-    // for the purpose of this test.  All we want to show is that
-    // this is freed later by the callback.
-    NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-
-  CGBitmapContextCreateWithData(data, width, height, bitsPerComponent, // expected-warning{{leak}}
-    bytesPerRow, space, bitmapInfo, releaseCallback, number);
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7265711> allow 'new', 'copy', 'alloc', 'init' prefix to
-//  start before '_' when determining Cocoa fundamental rule
-//
-// Previously the retain/release checker just skipped prefixes before the
-// first '_' entirely.  Now the checker honors the prefix if it results in a
-// recognizable naming convention (e.g., 'new', 'init').
-//===----------------------------------------------------------------------===//
-
- at interface RDar7265711 {}
-- (id) new_stuff;
- at end
-
-void rdar7265711_a(RDar7265711 *x) {
-  id y = [x new_stuff]; // expected-warning{{leak}}
-}
-
-void rdar7265711_b(RDar7265711 *x) {
-  id y = [x new_stuff]; // no-warning
-  [y release];
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7306898> clang thinks [NSCursor dragCopyCursor] returns a
-//                          retained reference
-//===----------------------------------------------------------------------===//
-
- at interface NSCursor : NSObject
-+ (NSCursor *)dragCopyCursor;
- at end
-
-void rdar7306898(void) {
-  // 'dragCopyCursor' does not follow Cocoa's fundamental rule.  It is a noun, not an sentence
-  // implying a 'copy' of something.
-  NSCursor *c =  [NSCursor dragCopyCursor]; // no-warning
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
-}
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7252064> sending 'release', 'retain', etc. to a Class
-// directly is not likely what the user intended
-//===----------------------------------------------------------------------===//
-
- at interface RDar7252064 : NSObject @end
-void rdar7252064(void) {
-  [RDar7252064 release]; // expected-warning{{The 'release' message should be sent to instances of class 'RDar7252064' and not the class directly}}
-  [RDar7252064 retain]; // expected-warning{{The 'retain' message should be sent to instances of class 'RDar7252064' and not the class directly}}
-  [RDar7252064 autorelease]; // expected-warning{{The 'autorelease' message should be sent to instances of class 'RDar7252064' and not the class directly}}
-  [NSAutoreleasePool drain]; // expected-warning{{method '+drain' not found}} expected-warning{{The 'drain' message should be sent to instances of class 'NSAutoreleasePool' and not the class directly}}
-}
-
-//===----------------------------------------------------------------------===//
-// Tests of ownership attributes.
-//===----------------------------------------------------------------------===//
-
-typedef NSString* MyStringTy;
-
- at protocol FooP;
-
- at interface TestOwnershipAttr : NSObject
-- (NSString*) returnsAnOwnedString  NS_RETURNS_RETAINED; // no-warning
-- (NSString*) returnsAnOwnedCFString  CF_RETURNS_RETAINED; // no-warning
-- (MyStringTy) returnsAnOwnedTypedString NS_RETURNS_RETAINED; // no-warning
-- (NSString*) newString NS_RETURNS_NOT_RETAINED; // no-warning
-- (NSString*) newString_auto NS_RETURNS_AUTORELEASED; // no-warning
-- (NSString*) newStringNoAttr;
-- (int) returnsAnOwnedInt NS_RETURNS_RETAINED; // expected-warning{{'ns_returns_retained' attribute only applies to methods that return an Objective-C object}}
-- (id) pseudoInit NS_CONSUMES_SELF NS_RETURNS_RETAINED;
-+ (void) consume:(id) NS_CONSUMED x;
-+ (void) consume2:(id) CF_CONSUMED x;
- at end
-
-static int ownership_attribute_doesnt_go_here NS_RETURNS_RETAINED; // expected-warning{{'ns_returns_retained' attribute only applies to functions and methods}}
-
-void test_attr_1(TestOwnershipAttr *X) {
-  NSString *str = [X returnsAnOwnedString]; // expected-warning{{leak}}
-}
-
-void test_attr_1b(TestOwnershipAttr *X) {
-  NSString *str = [X returnsAnOwnedCFString]; // expected-warning{{leak}}
-}
-
-void test_attr1c(TestOwnershipAttr *X) {
-  NSString *str = [X newString]; // no-warning
-  NSString *str2 = [X newStringNoAttr]; // expected-warning{{leak}}
-  NSString *str3 = [X newString_auto]; // no-warning
-  NSString *str4 = [[X newString_auto] retain]; // expected-warning {{leak}}
-}
-
-void testattr2_a() {
-  TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // expected-warning{{leak}}
-}
-
-void testattr2_b() {
-  TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];  // expected-warning{{leak}}
-}
-
-void testattr2_b_11358224_self_assign_looses_the_leak() {
-  TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit];// expected-warning{{leak}}
-  x = x;
-}
-
-void testattr2_c() {
-  TestOwnershipAttr *x = [[TestOwnershipAttr alloc] pseudoInit]; // no-warning
-  [x release];
-}
-
-void testattr3() {
-  TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // no-warning
-  [TestOwnershipAttr consume:x];
-  TestOwnershipAttr *y = [TestOwnershipAttr alloc]; // no-warning
-  [TestOwnershipAttr consume2:y];
-}
-
-void consume_ns(id NS_CONSUMED x);
-void consume_cf(id CF_CONSUMED x);
-
-void testattr4() {
-  TestOwnershipAttr *x = [TestOwnershipAttr alloc]; // no-warning
-  consume_ns(x);
-  TestOwnershipAttr *y = [TestOwnershipAttr alloc]; // no-warning
-  consume_cf(y);
-}
-
- at interface TestOwnershipAttr2 : NSObject
-- (NSString*) newString NS_RETURNS_NOT_RETAINED; // no-warning
- at end
-
- at implementation TestOwnershipAttr2
-- (NSString*) newString {
-  return [NSString alloc]; // expected-warning {{Potential leak of an object}}
-}
- at end
-
- at interface MyClassTestCFAttr : NSObject {}
-- (NSDate*) returnsCFRetained CF_RETURNS_RETAINED;
-- (CFDateRef) returnsCFRetainedAsCF CF_RETURNS_RETAINED;
-- (CFDateRef) newCFRetainedAsCF CF_RETURNS_NOT_RETAINED;
-- (CFDateRef) newCFRetainedAsCFNoAttr;
-- (NSDate*) alsoReturnsRetained;
-- (CFDateRef) alsoReturnsRetainedAsCF;
-- (NSDate*) returnsNSRetained NS_RETURNS_RETAINED;
- at end
-
-CF_RETURNS_RETAINED
-CFDateRef returnsRetainedCFDate()  {
-  return CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-}
-
- at implementation MyClassTestCFAttr
-- (NSDate*) returnsCFRetained {
-  return (NSDate*) returnsRetainedCFDate(); // No leak.
-}
-
-- (CFDateRef) returnsCFRetainedAsCF {
-  return returnsRetainedCFDate(); // No leak.
-}
-
-- (CFDateRef) newCFRetainedAsCF {
-  return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease];
-}
-
-- (CFDateRef) newCFRetainedAsCFNoAttr {
-  return (CFDateRef)[(id)[self returnsCFRetainedAsCF] autorelease]; // expected-warning{{Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected}}
-}
-
-- (NSDate*) alsoReturnsRetained {
-  return (NSDate*) returnsRetainedCFDate(); // expected-warning{{leak}}
-}
-
-- (CFDateRef) alsoReturnsRetainedAsCF {
-  return returnsRetainedCFDate(); // expected-warning{{leak}}
-}
-
-
-- (NSDate*) returnsNSRetained {
-  return (NSDate*) returnsRetainedCFDate(); // no-warning
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// Test that leaks post-dominated by "panic" functions are not reported.
-//
-// <rdar://problem/5905851> do not report a leak when post-dominated by a call
-// to a noreturn or panic function
-//===----------------------------------------------------------------------===//
-
-void panic() __attribute__((noreturn));
-void panic_not_in_hardcoded_list() __attribute__((noreturn));
-
-void test_panic_negative() {
-  signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z);  // expected-warning{{leak}}
-}
-
-void test_panic_positive() {
-  signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // no-warning
-  panic();
-}
-
-void test_panic_neg_2(int x) {
-  signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // expected-warning{{leak}}
-  if (x)
-    panic();
-}
-
-void test_panic_pos_2(int x) {
-  signed z = 1;
-  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // no-warning
-  if (x)
-    panic();
-  if (!x) {
-    // This showed up in <rdar://problem/7796563>, where we silently missed checking
-    // the function type for noreturn.  "panic()" is a hard-coded known panic function
-    // that isn't always noreturn.
-    panic_not_in_hardcoded_list();
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// Test uses of blocks (closures)
-//===----------------------------------------------------------------------===//
-
-void test_blocks_1_pos(void) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning{{leak}}
-  ^{}();
-}
-
-void test_blocks_1_indirect_release(void) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-  ^{ [number release]; }();
-}
-
-void test_blocks_1_indirect_retain(void) {
-  // Eventually this should be reported as a leak.
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-  ^{ [number retain]; }();
-}
-
-void test_blocks_1_indirect_release_via_call(void) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // no-warning
-  ^(NSObject *o){ [o release]; }(number);
-}
-
-void test_blocks_1_indirect_retain_via_call(void) {
-  NSNumber *number = [[NSNumber alloc] initWithInt:5]; // expected-warning {{leak}}
-  ^(NSObject *o){ [o retain]; }(number);
-}
-
-//===--------------------------------------------------------------------===//
-// Test sending message to super that returns an object alias.  Previously
-// this caused a crash in the analyzer.
-//===--------------------------------------------------------------------===//
-
- at interface Rdar8015556 : NSObject {} @end
- at implementation Rdar8015556
-- (id)retain {
-  return [super retain];
-}
- at end
-
-// <rdar://problem/8272168> - Correcly handle Class<...> in Cocoa Conventions
-// detector.
-
- at protocol Prot_R8272168 @end
-Class <Prot_R8272168> GetAClassThatImplementsProt_R8272168();
-void r8272168() {
-  GetAClassThatImplementsProt_R8272168();
-}
-
-// Test case for <rdar://problem/8356342>, which in the past triggered
-// a false positive.
- at interface RDar8356342
-- (NSDate*) rdar8356342:(NSDate *)inValue;
- at end
-
- at implementation RDar8356342
-- (NSDate*) rdar8356342:(NSDate*)inValue {
-  NSDate *outValue = inValue;
-  if (outValue == 0)
-    outValue = [[NSDate alloc] init]; // no-warning
-
-  if (outValue != inValue)
-    [outValue autorelease];
-
-  return outValue;
-}
- at end
-
-// <rdar://problem/8724287> - This test case previously crashed because
-// of a bug in BugReporter.
-extern const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
-typedef struct __CFError * CFErrorRef;
-extern const CFStringRef kCFErrorUnderlyingErrorKey;
-extern CFDictionaryRef CFErrorCopyUserInfo(CFErrorRef err);
-static void rdar_8724287(CFErrorRef error)
-{
-    CFErrorRef error_to_dump;
-
-    error_to_dump = error;
-    while (error_to_dump != ((void*)0)) {
-        CFDictionaryRef info;
-
-        info = CFErrorCopyUserInfo(error_to_dump); // expected-warning{{Potential leak of an object}}
-
-        if (info != ((void*)0)) {
-        }
-
-        error_to_dump = (CFErrorRef) CFDictionaryGetValue(info, kCFErrorUnderlyingErrorKey);
-    }
-}
-
-// <rdar://problem/9234108> - Make sure the model applies cf_consumed
-// correctly in argument positions besides the first.
-extern void *CFStringCreate(void);
-extern void rdar_9234108_helper(void *key, void * CF_CONSUMED value);
-void rdar_9234108() {
-  rdar_9234108_helper(0, CFStringCreate());
-}
-
-// <rdar://problem/9726279> - Make sure that objc_method_family works
-// to override naming conventions.
-struct TwoDoubles {
-  double one;
-  double two;
-};
-typedef struct TwoDoubles TwoDoubles;
-
- at interface NSValue (Mine)
-- (id)_prefix_initWithTwoDoubles:(TwoDoubles)twoDoubles __attribute__((objc_method_family(init)));
- at end
-
- at implementation NSValue (Mine)
-- (id)_prefix_initWithTwoDoubles:(TwoDoubles)twoDoubles
-{
-  return [self init];
-}
- at end
-
-void rdar9726279() {
-  TwoDoubles twoDoubles = { 0.0, 0.0 };
-  NSValue *value = [[NSValue alloc] _prefix_initWithTwoDoubles:twoDoubles];
-  [value release];
-}
-
-// <rdar://problem/9732321>
-// Test camelcase support for CF conventions.  While Core Foundation APIs
-// don't use camel casing, other code is allowed to use it.
-CFArrayRef camelcase_create_1() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camelcase_createno() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
-}
-
-CFArrayRef camelcase_copy() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camelcase_copying() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
-}
-
-CFArrayRef copyCamelCase() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef __copyCamelCase() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef __createCamelCase() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camel_create() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-
-CFArrayRef camel_creat() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
-}
-
-CFArrayRef camel_copy() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camel_copyMachine() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // no-warning
-}
-
-CFArrayRef camel_copymachine() {
-  return CFArrayCreateMutable(0, 10, &kCFTypeArrayCallBacks); // expected-warning {{leak}}
-}
-
-// rdar://problem/8024350
- at protocol F18P
-- (id) clone;
- at end
- at interface F18 : NSObject<F18P> @end
- at interface F18(Cat)
-- (id) clone NS_RETURNS_RETAINED;
- at end
-
- at implementation F18
-- (id) clone {
-  return [F18 alloc];
-}
- at end
-
-// Radar 6582778.
-void rdar6582778(void) {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFTypeRef vals[] = { CFDateCreate(0, t) }; // expected-warning {{leak}}
-}
-
-CFTypeRef global;
-
-void rdar6582778_2(void) {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  global = CFDateCreate(0, t); // no-warning
-}
-
-// <rdar://problem/10232019> - Test that objects passed to containers
-// are marked "escaped".
-
-void rdar10232019() {
-  NSMutableArray *array = [NSMutableArray array];
-
-  NSString *string = [[NSString alloc] initWithUTF8String:"foo"];
-  [array addObject:string];
-  [string release];
-
-  NSString *otherString = [string stringByAppendingString:@"bar"]; // no-warning
-  NSLog(@"%@", otherString);
-}
-
-void rdar10232019_positive() {
-  NSMutableArray *array = [NSMutableArray array];
-
-  NSString *string = [[NSString alloc] initWithUTF8String:"foo"];
-  [string release];
-
-  NSString *otherString = [string stringByAppendingString:@"bar"]; // expected-warning {{Reference-counted object is used after it is release}}
-  NSLog(@"%@", otherString);
-}
-
-// RetainCountChecker support for XPC.
-// <rdar://problem/9658496>
-typedef void * xpc_object_t;
-xpc_object_t _CFXPCCreateXPCObjectFromCFObject(CFTypeRef cf);
-void xpc_release(xpc_object_t object);
-
-void rdar9658496() {
-  CFStringRef cf;
-  xpc_object_t xpc;
-  cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
-  xpc = _CFXPCCreateXPCObjectFromCFObject( cf );
-  CFRelease(cf);
-  xpc_release(xpc);
-}
-
-// Support annotations with method families.
- at interface RDar10824732 : NSObject
-- (id)initWithObj:(id CF_CONSUMED)obj;
- at end
-
- at implementation RDar10824732
-- (id)initWithObj:(id)obj {
-  [obj release];
-  return [super init];
-}
- at end
-
-void rdar_10824732() {
-  @autoreleasepool {
-    NSString *obj = @"test";
-    RDar10824732 *foo = [[RDar10824732 alloc] initWithObj:obj]; // no-warning
-    [foo release];
-  }
-}
-
-// Stop tracking objects passed to functions, which take callbacks as parameters.
-// radar://10973977
-typedef int (*CloseCallback) (void *);
-void ReaderForIO(CloseCallback ioclose, void *ioctx);
-int IOClose(void *context);
-
- at protocol SInS <NSObject>
- at end
-
- at interface radar10973977 : NSObject
-- (id<SInS>)inputS;
-- (void)reader;
- at end
-
- at implementation radar10973977
-- (void)reader
-{
-    id<SInS> inputS = [[self inputS] retain];
-    ReaderForIO(IOClose, inputS);
-}
-- (id<SInS>)inputS
-{
-    return 0;
-}
- at end
-
-// Object escapes through a selector callback: radar://11398514
-extern id NSApp;
- at interface MySheetController
-- (id<SInS>)inputS;
-- (void)showDoSomethingSheetAction:(id)action;
-- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo;
- at end
-
- at implementation MySheetController
-- (id<SInS>)inputS {
-    return 0;
-}
-- (void)showDoSomethingSheetAction:(id)action {
-  id<SInS> inputS = [[self inputS] retain]; 
-  [NSApp beginSheet:0
-         modalForWindow:0
-         modalDelegate:0
-         didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
-         contextInfo:(void *)inputS]; // no - warning
-}
-- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo {
-   
-      id contextObject = (id)contextInfo;
-      [contextObject release];
-}
-
-- (id)copyAutoreleaseRadar13081402 {
-  id x = [[[NSString alloc] initWithUTF8String:"foo"] autorelease];
-  [x retain];
-  return x; // no warning
-}
-
- at end
-//===----------------------------------------------------------------------===//
-// Test returning allocated memory in a struct.
-//
-// We currently don't have a general way to track pointers that "escape".
-// Here we test that RetainCountChecker doesn't get excited about returning
-// allocated CF objects in struct fields.
-//===----------------------------------------------------------------------===//
-void *malloc(size_t);
-struct rdar11104566 { CFStringRef myStr; };
-struct rdar11104566 test_rdar11104566() {
-  CFStringRef cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
-  struct rdar11104566 V;
-  V.myStr = cf;
-  return V; // no-warning
-}
-
-struct rdar11104566 *test_2_rdar11104566() {
-  CFStringRef cf = CFStringCreateWithCString( ((CFAllocatorRef)0), "test", kCFStringEncodingUTF8 ); // no-warning
-  struct rdar11104566 *V = (struct rdar11104566 *) malloc(sizeof(*V));
-  V->myStr = cf;
-  return V; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// ObjC literals support.
-//===----------------------------------------------------------------------===//
-
-void test_objc_arrays() {
-    { // CASE ONE -- OBJECT IN ARRAY CREATED DIRECTLY
-        NSObject *o = [[NSObject alloc] init];
-        NSArray *a = [[NSArray alloc] initWithObjects:o, (void*)0]; // expected-warning {{leak}}
-        [o release];
-        [a description];
-        [o description];
-    }
-
-    { // CASE TWO -- OBJECT IN ARRAY CREATED BY DUPING AUTORELEASED ARRAY
-        NSObject *o = [[NSObject alloc] init];
-        NSArray *a1 = [NSArray arrayWithObjects:o, (void*)0];
-        NSArray *a2 = [[NSArray alloc] initWithArray:a1]; // expected-warning {{leak}}
-        [o release];        
-        [a2 description];
-        [o description];
-    }
-
-    { // CASE THREE -- OBJECT IN RETAINED @[]
-        NSObject *o = [[NSObject alloc] init];
-        NSArray *a3 = [@[o] retain]; // expected-warning {{leak}}
-        [o release];        
-        [a3 description];
-        [o description];
-    }
-    
-    { // CASE FOUR -- OBJECT IN ARRAY CREATED BY DUPING @[]
-        NSObject *o = [[NSObject alloc] init];
-        NSArray *a = [[NSArray alloc] initWithArray:@[o]]; // expected-warning {{leak}}
-        [o release];
-        
-        [a description];
-        [o description];
-    }
-    
-    { // CASE FIVE -- OBJECT IN RETAINED @{}
-        NSValue *o = [[NSValue alloc] init];
-        NSDictionary *a = [@{o : o} retain]; // expected-warning {{leak}}
-        [o release];
-        
-        [a description];
-        [o description];
-    }
-}
-
-void test_objc_integer_literals() {
-  id value = [@1 retain]; // expected-warning {{leak}}
-  [value description];
-}
-
-void test_objc_boxed_expressions(int x, const char *y) {
-  id value = [@(x) retain]; // expected-warning {{leak}}
-  [value description];
-
-  value = [@(y) retain]; // expected-warning {{leak}}
-  [value description];
-}
-
-// Test NSLog doesn't escape tracked objects.
-void rdar11400885(int y)
-{
-  @autoreleasepool {
-    NSString *printString;
-    if(y > 2)
-      printString = [[NSString alloc] init];
-    else
-      printString = [[NSString alloc] init];
-    NSLog(@"Once %@", printString);
-    [printString release];
-    NSLog(@"Again: %@", printString); // expected-warning {{Reference-counted object is used after it is released}}
-  }
-}
-
-id makeCollectableNonLeak() {
-  extern CFTypeRef CFCreateSomething();
-
-  CFTypeRef object = CFCreateSomething(); // +1
-  CFRetain(object); // +2
-  id objCObject = NSMakeCollectable(object); // +2
-  [objCObject release]; // +1
-  return [objCObject autorelease]; // +0
-}
-
-
-void consumeAndStopTracking(id NS_CONSUMED obj, void (^callback)(void));
-void CFConsumeAndStopTracking(CFTypeRef CF_CONSUMED obj, void (^callback)(void));
-
-void testConsumeAndStopTracking() {
-  id retained = [@[] retain]; // +1
-  consumeAndStopTracking(retained, ^{}); // no-warning
-
-  id doubleRetained = [[@[] retain] retain]; // +2
-  consumeAndStopTracking(doubleRetained, ^{
-    [doubleRetained release];
-  }); // no-warning
-
-  id unretained = @[]; // +0
-  consumeAndStopTracking(unretained, ^{}); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-void testCFConsumeAndStopTracking() {
-  id retained = [@[] retain]; // +1
-  CFConsumeAndStopTracking((CFTypeRef)retained, ^{}); // no-warning
-
-  id doubleRetained = [[@[] retain] retain]; // +2
-  CFConsumeAndStopTracking((CFTypeRef)doubleRetained, ^{
-    [doubleRetained release];
-  }); // no-warning
-
-  id unretained = @[]; // +0
-  CFConsumeAndStopTracking((CFTypeRef)unretained, ^{}); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-//===----------------------------------------------------------------------===//
-// Test 'pragma clang arc_cf_code_audited' support.
-//===----------------------------------------------------------------------===//
-
-typedef void *MyCFType;
-#pragma clang arc_cf_code_audited begin
-MyCFType CreateMyCFType();
-#pragma clang arc_cf_code_audited end 
-    
-void test_custom_cf() {
-  MyCFType x = CreateMyCFType(); // expected-warning {{leak of an object stored into 'x'}}
-}
-
-//===----------------------------------------------------------------------===//
-// Test calling CFPlugInInstanceCreate, which appears in CF but doesn't
-// return a CF object.
-//===----------------------------------------------------------------------===//
-
-void test_CFPlugInInstanceCreate(CFUUIDRef factoryUUID, CFUUIDRef typeUUID) {
-  CFPlugInInstanceCreate(kCFAllocatorDefault, factoryUUID, typeUUID); // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// PR14927: -drain only has retain-count semantics on NSAutoreleasePool.
-//===----------------------------------------------------------------------===//
-
- at interface PR14927 : NSObject
-- (void)drain;
- at end
-
-void test_drain() {
-  PR14927 *obj = [[PR14927 alloc] init];
-  [obj drain];
-  [obj release]; // no-warning
-}
-
-//===----------------------------------------------------------------------===//
-// Allow cf_returns_retained and cf_returns_not_retained to mark a return
-// value as tracked, even if the object isn't a known CF type.
-//===----------------------------------------------------------------------===//
-
-MyCFType getCustom() __attribute__((cf_returns_not_retained));
-MyCFType makeCustom() __attribute__((cf_returns_retained));
-
-void testCustomReturnsRetained() {
-  MyCFType obj = makeCustom(); // expected-warning {{leak of an object stored into 'obj'}}
-}
-
-void testCustomReturnsNotRetained() {
-  CFRelease(getCustom()); // expected-warning {{Incorrect decrement of the reference count of an object that is not owned at this point by the caller}}
-}
-
-//===----------------------------------------------------------------------===//
-// Don't print variables which are out of the current scope.
-//===----------------------------------------------------------------------===//
- at interface MyObj12706177 : NSObject
--(id)initX;
-+(void)test12706177;
- at end
-static int Cond;
- at implementation MyObj12706177
--(id)initX {
-  if (Cond)
-    return 0;
-  self = [super init];
-  return self;
-}
-+(void)test12706177 {
-  id x = [[MyObj12706177 alloc] initX]; //expected-warning {{Potential leak of an object}}
-  [x release]; 
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/13783514> xpc_connection_set_finalizer_f
-//===----------------------------------------------------------------------===//
-
-typedef xpc_object_t xpc_connection_t;
-typedef void (*xpc_finalizer_t)(void *value);
-void xpc_connection_set_context(xpc_connection_t connection, void *ctx);
-void xpc_connection_set_finalizer_f(xpc_connection_t connection,
-                                    xpc_finalizer_t finalizer);
-void releaseAfterXPC(void *context) {
-  [(NSArray *)context release];
-}
-
-void rdar13783514(xpc_connection_t connection) {
-  xpc_connection_set_context(connection, [[NSMutableArray alloc] init]);
-  xpc_connection_set_finalizer_f(connection, releaseAfterXPC);
-} // no-warning
-
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>324</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>324</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>325</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>325</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>325</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>325</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>325</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>325</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>325</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>325</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>325</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>325</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>325</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>326</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>326</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>326</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>326</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>326</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>326</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>326</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>326</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>326</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>327</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>327</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>327</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>327</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>327</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>327</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>327</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count decremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count decremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>327</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>327</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>329</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>329</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>329</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>329</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>329</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>329</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>329</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>329</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>329</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>330</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>330</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>330</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>330</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>330</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>330</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>330</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>330</integer>
-// CHECK-NEXT:          <key>col</key><integer>29</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>330</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f1</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>7</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>330</integer>
-// CHECK-NEXT:    <key>col</key><integer>7</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>335</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>335</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>336</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>336</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>336</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>336</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>336</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>336</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>336</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>336</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>336</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>336</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>336</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>337</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>337</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>337</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>337</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>337</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>337</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>337</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>337</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>337</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>338</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>338</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>338</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>338</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>338</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>338</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>338</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count decremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count decremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>338</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>338</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>340</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>340</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>340</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>340</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>340</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>340</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>340</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>340</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>340</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>341</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>341</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>341</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>341</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>341</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>341</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>341</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>341</integer>
-// CHECK-NEXT:          <key>col</key><integer>29</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>341</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>7</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>341</integer>
-// CHECK-NEXT:    <key>col</key><integer>7</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>371</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>371</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>372</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>372</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>372</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>372</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>372</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>372</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>372</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>372</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>372</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>372</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>372</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>374</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>374</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>374</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>374</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>374</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>374</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>374</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>374</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>374</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>374</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>374</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>377</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>377</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>377</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>377</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>377</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>377</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>377</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>377</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>377</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'date'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f5</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>7</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>377</integer>
-// CHECK-NEXT:    <key>col</key><integer>10</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>383</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>383</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>383</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>383</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>383</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>383</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>383</integer>
-// CHECK-NEXT:          <key>col</key><integer>62</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>383</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>383</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>384</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>384</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>384</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>384</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>384</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>384</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>384</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>384</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>384</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>385</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>385</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>385</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>385</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>385</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>385</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>385</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>385</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>385</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>386</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>386</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>386</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'date'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f6</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>386</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>391</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>391</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>391</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>391</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>391</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>391</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>391</integer>
-// CHECK-NEXT:          <key>col</key><integer>62</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>391</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>391</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>392</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>392</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>392</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>392</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>392</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>392</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>392</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>392</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>392</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>394</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>394</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>394</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>394</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>394</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +2</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +2</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'date'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f7</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>394</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>391</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>391</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>393</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>393</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>393</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>393</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>393</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>393</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>393</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>393</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>393</integer>
-// CHECK-NEXT:          <key>col</key><integer>52</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>393</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>393</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>394</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>394</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>394</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>394</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>394</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>394</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>394</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>394</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>394</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>394</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is returned from a function whose name ('f7') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is returned from a function whose name ('f7') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'date'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f7</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>394</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>402</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>402</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>402</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>402</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>402</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>402</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>402</integer>
-// CHECK-NEXT:          <key>col</key><integer>33</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'MyDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'MyDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>402</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>402</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>403</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>403</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>403</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>403</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>403</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>403</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>403</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>403</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>403</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>404</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>404</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>404</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>404</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>404</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>404</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>404</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>404</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>404</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>405</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>405</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>405</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'date' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'date'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f8</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>405</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>408</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>408</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>409</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>409</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>409</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>409</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>409</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Variable 'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Variable 'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>409</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>409</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>411</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>411</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>411</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'date' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'date' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>411</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>411</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>411</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>411</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f9</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>411</integer>
-// CHECK-NEXT:    <key>col</key><integer>14</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>42</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>420</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>420</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>420</integer>
-// CHECK-NEXT:          <key>col</key><integer>75</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'DADiskCreateFromBSDName' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'DADiskCreateFromBSDName' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>42</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>421</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>424</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>48</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>48</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>426</integer>
-// CHECK-NEXT:       <key>col</key><integer>48</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>426</integer>
-// CHECK-NEXT:          <key>col</key><integer>48</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>426</integer>
-// CHECK-NEXT:          <key>col</key><integer>48</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'disk' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'disk' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'disk'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f10</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>7</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>426</integer>
-// CHECK-NEXT:    <key>col</key><integer>48</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>421</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>424</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>46</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>426</integer>
-// CHECK-NEXT:       <key>col</key><integer>26</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>426</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>426</integer>
-// CHECK-NEXT:          <key>col</key><integer>49</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'DADiskCopyDescription' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'DADiskCopyDescription' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>46</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>427</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>427</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'dict'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f10</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>427</integer>
-// CHECK-NEXT:    <key>col</key><integer>20</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>421</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>424</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>427</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>429</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>429</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>429</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'DADiskCopyWholeDisk' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'DADiskCopyWholeDisk' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>430</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>430</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'disk' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'disk' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'disk'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f10</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>11</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>430</integer>
-// CHECK-NEXT:    <key>col</key><integer>20</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>421</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>32</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>423</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>423</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>423</integer>
-// CHECK-NEXT:          <key>col</key><integer>63</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'DADiskCreateFromIOMedia' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'DADiskCreateFromIOMedia' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>32</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>424</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>427</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>430</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>433</integer>
-// CHECK-NEXT:            <key>col</key><integer>67</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>433</integer>
-// CHECK-NEXT:            <key>col</key><integer>67</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>433</integer>
-// CHECK-NEXT:       <key>col</key><integer>67</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>433</integer>
-// CHECK-NEXT:          <key>col</key><integer>67</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>433</integer>
-// CHECK-NEXT:          <key>col</key><integer>67</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'disk' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'disk' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'disk'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f10</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>14</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>433</integer>
-// CHECK-NEXT:    <key>col</key><integer>67</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>421</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>424</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>427</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>430</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>46</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>432</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>432</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>433</integer>
-// CHECK-NEXT:          <key>col</key><integer>68</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'DADissenterCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'DADissenterCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>46</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>434</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>434</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>434</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'dissenter' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'dissenter' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>18</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>434</integer>
-// CHECK-NEXT:       <key>col</key><integer>25</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>434</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>434</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'dissenter' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'dissenter' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'dissenter'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f10</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>15</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>434</integer>
-// CHECK-NEXT:    <key>col</key><integer>25</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>420</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>421</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>423</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>424</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>424</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>424</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>426</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>427</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>427</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'dict' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>427</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>429</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>430</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>430</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'disk' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>430</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>432</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>434</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>434</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>434</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'dissenter' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'dissenter' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>434</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>436</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>436</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>436</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>436</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>436</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>436</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>436</integer>
-// CHECK-NEXT:       <key>col</key><integer>26</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>436</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>436</integer>
-// CHECK-NEXT:          <key>col</key><integer>61</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'DASessionCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'DASessionCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>436</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>436</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>437</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>437</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>437</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'session' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'session' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>437</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>437</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>437</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>437</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'session' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'session' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'session'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f10</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>18</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>437</integer>
-// CHECK-NEXT:    <key>col</key><integer>23</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>443</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>443</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>456</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>456</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>456</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>456</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>456</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>456</integer>
-// CHECK-NEXT:            <key>col</key><integer>43</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>456</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>456</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>456</integer>
-// CHECK-NEXT:          <key>col</key><integer>49</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayGetValueAtIndex' returns a Core Foundation object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayGetValueAtIndex' returns a Core Foundation object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>456</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>456</integer>
-// CHECK-NEXT:            <key>col</key><integer>43</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>462</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>462</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>462</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>462</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>462</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f11</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>21</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>462</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>470</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>470</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>470</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>470</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>470</integer>
-// CHECK-NEXT:       <key>col</key><integer>17</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>470</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>470</integer>
-// CHECK-NEXT:          <key>col</key><integer>29</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'MyCreateFun' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'MyCreateFun' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>470</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>470</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>471</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>471</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>471</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'o' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'o' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'o'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f12</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>471</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>479</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>479</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>479</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>479</integer>
-// CHECK-NEXT:            <key>col</key><integer>44</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>479</integer>
-// CHECK-NEXT:       <key>col</key><integer>25</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>479</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>479</integer>
-// CHECK-NEXT:          <key>col</key><integer>75</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>479</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>479</integer>
-// CHECK-NEXT:            <key>col</key><integer>44</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>480</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>480</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>480</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>480</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>480</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>480</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>480</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>480</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>480</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>481</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>481</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>481</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>481</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>481</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>481</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>481</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>481</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>481</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>482</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>482</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>482</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f13_autorelease_b</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>482</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>485</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>485</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>485</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>485</integer>
-// CHECK-NEXT:            <key>col</key><integer>44</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>485</integer>
-// CHECK-NEXT:       <key>col</key><integer>25</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>485</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>485</integer>
-// CHECK-NEXT:          <key>col</key><integer>75</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>485</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>485</integer>
-// CHECK-NEXT:            <key>col</key><integer>44</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>486</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>486</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>486</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>486</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>486</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>486</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>486</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>486</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>486</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>487</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>487</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>487</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>487</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>487</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>487</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>487</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>487</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>487</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>488</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>488</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>488</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>488</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>488</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object was autoreleased 2 times but the object has a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f13_autorelease_c</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>488</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>492</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>492</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>492</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>492</integer>
-// CHECK-NEXT:            <key>col</key><integer>44</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>492</integer>
-// CHECK-NEXT:       <key>col</key><integer>25</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>492</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>492</integer>
-// CHECK-NEXT:          <key>col</key><integer>75</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>492</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>492</integer>
-// CHECK-NEXT:            <key>col</key><integer>44</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>493</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>493</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>493</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>493</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>493</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>493</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>493</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>493</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>493</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>494</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>494</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>494</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>494</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>494</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>494</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>494</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>494</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>494</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>495</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>495</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>495</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>495</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>495</integer>
-// CHECK-NEXT:            <key>col</key><integer>25</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>495</integer>
-// CHECK-NEXT:            <key>col</key><integer>44</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>495</integer>
-// CHECK-NEXT:       <key>col</key><integer>25</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>495</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>495</integer>
-// CHECK-NEXT:          <key>col</key><integer>75</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object was autoreleased 2 times but the object has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Object autoreleased too many times</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f13_autorelease_d</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>495</integer>
-// CHECK-NEXT:    <key>col</key><integer>25</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>503</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>503</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>503</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>503</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>503</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>504</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>504</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>504</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f14_leakimmediately</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>504</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>518</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>518</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>518</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>521</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>521</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>521</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is > 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is > 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>522</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>522</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>522</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>522</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>522</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer argument in call to CFRelease</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer argument in call to CFRelease</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Null pointer argument in call to CFRelease</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>null passed to CFRetain/CFRelease/CFMakeCollectable</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f16</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>522</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>518</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>518</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>518</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>521</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>521</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>521</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is <= 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is <= 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>524</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>524</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>524</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is < 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is < 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>525</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>525</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>525</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>525</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>525</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer argument in call to CFRetain</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer argument in call to CFRetain</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Null pointer argument in call to CFRetain</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>null passed to CFRetain/CFRelease/CFMakeCollectable</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f16</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>525</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>518</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>518</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>518</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'p' is null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>518</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>521</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>521</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>521</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is <= 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is <= 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>521</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>524</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>524</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>524</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is >= 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is >= 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>524</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>528</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>528</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>528</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>528</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>528</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Null pointer argument in call to CFMakeCollectable</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Null pointer argument in call to CFMakeCollectable</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Null pointer argument in call to CFMakeCollectable</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>null passed to CFRetain/CFRelease/CFMakeCollectable</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>f16</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>11</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>528</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>574</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>574</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>574</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>574</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>574</integer>
-// CHECK-NEXT:       <key>col</key><integer>17</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>574</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>574</integer>
-// CHECK-NEXT:          <key>col</key><integer>55</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>574</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>574</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>575</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>575</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>575</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>575</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>575</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>575</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>575</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>575</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>575</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>575</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Method should return an owned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>newString</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>575</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>588</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>588</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>588</integer>
-// CHECK-NEXT:          <key>col</key><integer>63</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>595</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>595</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>595</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'name' is nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'name' is nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>596</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>596</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>596</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>596</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>596</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'kind' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'kind' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'kind'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_6659160</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>13</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>596</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>595</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>595</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>595</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'name' is non-nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'name' is non-nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>598</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>598</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>598</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>598</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>598</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Variable 'kindC' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Variable 'kindC' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>598</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>598</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>606</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>606</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>606</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'kind' is nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'kind' is nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>608</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>608</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>608</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>608</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>609</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>609</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>609</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>609</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>610</integer>
-// CHECK-NEXT:       <key>col</key><integer>13</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>610</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>610</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Array access (from variable 'kindC') results in a null pointer dereference</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Array access (from variable 'kindC') results in a null pointer dereference</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Array access (from variable 'kindC') results in a null pointer dereference</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_6659160</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>27</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>610</integer>
-// CHECK-NEXT:    <key>col</key><integer>13</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>588</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>594</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>594</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>594</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>594</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>594</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>594</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>594</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>594</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>594</integer>
-// CHECK-NEXT:          <key>col</key><integer>57</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>594</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>594</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>595</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>595</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>595</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'name' is non-nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'name' is non-nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>595</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>598</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>598</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>598</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>598</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>606</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>606</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>606</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'kind' is non-nil</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'kind' is non-nil</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>606</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>607</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>607</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>607</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>607</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>608</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>608</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>608</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>608</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>609</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>609</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>609</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>609</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>610</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>612</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>612</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>612</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>612</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>615</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>615</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>615</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>615</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>616</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>616</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>616</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>616</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>616</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_6659160</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>33</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>616</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>638</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>638</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>638</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>638</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>638</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>638</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>638</integer>
-// CHECK-NEXT:          <key>col</key><integer>34</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>638</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>638</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>639</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>639</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>639</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>639</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>639</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>639</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>639</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released by directly sending the '-dealloc' message</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released by directly sending the '-dealloc' message</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>639</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>639</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>640</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>640</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>640</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>640</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>640</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>pr3820_ReleaseAfterDealloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>640</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>646</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>646</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>647</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>647</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>647</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>647</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>647</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>647</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>647</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>647</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>647</integer>
-// CHECK-NEXT:          <key>col</key><integer>34</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>647</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>647</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>648</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>648</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>648</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>648</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>648</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>648</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>648</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>648</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>648</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>649</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>649</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>649</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>649</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>649</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>pr3820_DeallocAfterRelease</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>649</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>701</integer>
-// CHECK-NEXT:       <key>col</key><integer>31</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>701</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>701</integer>
-// CHECK-NEXT:          <key>col</key><integer>76</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>701</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>701</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>701</integer>
-// CHECK-NEXT:          <key>col</key><integer>84</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>701</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>701</integer>
-// CHECK-NEXT:          <key>col</key><integer>76</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>701</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>706</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>706</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>706</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'dict'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>applicationDidFinishLaunching:</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>706</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>713</integer>
-// CHECK-NEXT:       <key>col</key><integer>31</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>713</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>713</integer>
-// CHECK-NEXT:          <key>col</key><integer>76</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>713</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>713</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>713</integer>
-// CHECK-NEXT:          <key>col</key><integer>84</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>713</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>713</integer>
-// CHECK-NEXT:          <key>col</key><integer>76</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>713</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>714</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>714</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>714</integer>
-// CHECK-NEXT:            <key>col</key><integer>2</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>714</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>716</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>716</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>716</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'dict' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'dict'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>radar10102244</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>716</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>724</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>724</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>725</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>725</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>725</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>725</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>725</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>725</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>725</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>725</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>725</integer>
-// CHECK-NEXT:          <key>col</key><integer>34</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>725</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>725</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>726</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>726</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>726</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>726</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>726</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_6257780_Case1</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>726</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>801</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>801</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>802</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>802</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>802</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>802</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>802</integer>
-// CHECK-NEXT:          <key>col</key><integer>36</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>802</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>802</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>803</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>803</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>803</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>803</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>803</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>_initReturningNewClassBad</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>803</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>806</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>806</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>807</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>807</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>807</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>807</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>807</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>807</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>807</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>807</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>807</integer>
-// CHECK-NEXT:          <key>col</key><integer>43</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>807</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>807</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>808</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>808</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>808</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>808</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>808</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>808</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>808</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>808</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>808</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Method should return an owned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>initReturningNewClassBad2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>808</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>846</integer>
-// CHECK-NEXT:       <key>col</key><integer>37</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>846</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>846</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name ('NoCopyString') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name ('NoCopyString') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>NoCopyString</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>0</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>846</integer>
-// CHECK-NEXT:    <key>col</key><integer>30</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>847</integer>
-// CHECK-NEXT:       <key>col</key><integer>37</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>847</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>847</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name ('noCopyString') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name ('noCopyString') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>noCopyString</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>0</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>847</integer>
-// CHECK-NEXT:    <key>col</key><integer>30</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>851</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>851</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>851</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'NoCopyString'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'NoCopyString'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>846</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_RDar6859457'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_RDar6859457'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>846</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>846</integer>
-// CHECK-NEXT:       <key>col</key><integer>37</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>846</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>851</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>851</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>851</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'NoCopyString'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'NoCopyString'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>851</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>851</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>852</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>852</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>852</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>852</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>852</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_RDar6859457</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>852</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>851</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>851</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>852</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>852</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>852</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>852</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>852</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'noCopyString'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'noCopyString'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>847</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_RDar6859457'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_RDar6859457'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>847</integer>
-// CHECK-NEXT:            <key>col</key><integer>37</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>847</integer>
-// CHECK-NEXT:       <key>col</key><integer>37</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>847</integer>
-// CHECK-NEXT:          <key>col</key><integer>59</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>852</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>852</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>852</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'noCopyString'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'noCopyString'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>852</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>852</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>853</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>853</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>853</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>853</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>853</integer>
-// CHECK-NEXT:          <key>col</key><integer>54</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_RDar6859457</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>853</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>886</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>886</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>886</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>886</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>886</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>886</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>886</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>886</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>886</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>886</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>886</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>886</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>886</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>886</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>886</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>886</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>886</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>886</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>886</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name (':') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name (':') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>:</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>886</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>916</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>916</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>916</integer>
-// CHECK-NEXT:          <key>col</key><integer>38</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>917</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>917</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>917</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>917</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>917</integer>
-// CHECK-NEXT:          <key>col</key><integer>42</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar6902710</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>917</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>917</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>917</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>917</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>917</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>917</integer>
-// CHECK-NEXT:          <key>col</key><integer>42</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>917</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>917</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>918</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>918</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>918</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>918</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>918</integer>
-// CHECK-NEXT:          <key>col</key><integer>43</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar6902710</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>918</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>918</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>918</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>918</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>918</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>918</integer>
-// CHECK-NEXT:          <key>col</key><integer>43</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>918</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>918</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>919</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>919</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>919</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>919</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>919</integer>
-// CHECK-NEXT:          <key>col</key><integer>69</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar6902710</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>919</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>919</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>919</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>919</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>919</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>919</integer>
-// CHECK-NEXT:          <key>col</key><integer>69</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>919</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>919</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>920</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>920</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>920</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar6902710</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>920</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>928</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>928</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>928</integer>
-// CHECK-NEXT:          <key>col</key><integer>45</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>928</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>928</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>929</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>929</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>929</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar6945561</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>929</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>937</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>937</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>937</integer>
-// CHECK-NEXT:          <key>col</key><integer>49</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'IOBSDNameMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'IOBSDNameMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>937</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>937</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>938</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>938</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>938</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IOBSDNameMatching_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>938</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>941</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>941</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>941</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'IOServiceMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'IOServiceMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>941</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>941</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>942</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>942</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>942</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IOServiceMatching_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>942</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>945</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>945</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>945</integer>
-// CHECK-NEXT:          <key>col</key><integer>29</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'IOServiceNameMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'IOServiceNameMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>945</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>945</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>946</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>946</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>946</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IOServiceNameMatching_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>946</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>953</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>953</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>953</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>953</integer>
-// CHECK-NEXT:            <key>col</key><integer>39</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>953</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>953</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>953</integer>
-// CHECK-NEXT:          <key>col</key><integer>41</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>953</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>953</integer>
-// CHECK-NEXT:            <key>col</key><integer>39</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>954</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>954</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>954</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>954</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>954</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>954</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>954</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>954</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>954</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>955</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>955</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>955</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>955</integer>
-// CHECK-NEXT:          <key>col</key><integer>58</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>955</integer>
-// CHECK-NEXT:          <key>col</key><integer>65</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IOServiceAddNotification_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>955</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>960</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>960</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>960</integer>
-// CHECK-NEXT:          <key>col</key><integer>36</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'IORegistryEntryIDMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'IORegistryEntryIDMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>960</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>960</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>961</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>961</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>961</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IORegistryEntryIDMatching_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>961</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>965</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>965</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>965</integer>
-// CHECK-NEXT:          <key>col</key><integer>55</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'IOOpenFirmwarePathMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'IOOpenFirmwarePathMatching' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>965</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>965</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>966</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>966</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>966</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IOOpenFirmwarePathMatching_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>966</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>969</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>969</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>969</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>969</integer>
-// CHECK-NEXT:            <key>col</key><integer>39</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>969</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>969</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>969</integer>
-// CHECK-NEXT:          <key>col</key><integer>41</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>969</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>969</integer>
-// CHECK-NEXT:            <key>col</key><integer>39</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>970</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>970</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>970</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>970</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>970</integer>
-// CHECK-NEXT:          <key>col</key><integer>51</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>970</integer>
-// CHECK-NEXT:          <key>col</key><integer>43</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>970</integer>
-// CHECK-NEXT:          <key>col</key><integer>50</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>970</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>970</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>971</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>971</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>971</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>971</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>971</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IOServiceGetMatchingService_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>971</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>975</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>975</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>975</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>975</integer>
-// CHECK-NEXT:            <key>col</key><integer>39</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>975</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>975</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>975</integer>
-// CHECK-NEXT:          <key>col</key><integer>41</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>975</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>975</integer>
-// CHECK-NEXT:            <key>col</key><integer>39</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>976</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>976</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>976</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>976</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>976</integer>
-// CHECK-NEXT:          <key>col</key><integer>62</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>976</integer>
-// CHECK-NEXT:          <key>col</key><integer>44</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>976</integer>
-// CHECK-NEXT:          <key>col</key><integer>51</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>976</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>976</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>977</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>977</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>977</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>977</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>977</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IOServiceGetMatchingServices_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>977</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>983</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>983</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>983</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>983</integer>
-// CHECK-NEXT:            <key>col</key><integer>39</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>983</integer>
-// CHECK-NEXT:       <key>col</key><integer>30</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>983</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>983</integer>
-// CHECK-NEXT:          <key>col</key><integer>41</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateDict' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>983</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>983</integer>
-// CHECK-NEXT:            <key>col</key><integer>39</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>984</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>984</integer>
-// CHECK-NEXT:            <key>col</key><integer>34</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>984</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>984</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>984</integer>
-// CHECK-NEXT:          <key>col</key><integer>106</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>984</integer>
-// CHECK-NEXT:          <key>col</key><integer>66</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>984</integer>
-// CHECK-NEXT:          <key>col</key><integer>73</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>984</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>984</integer>
-// CHECK-NEXT:            <key>col</key><integer>34</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>985</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>985</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>985</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>985</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>985</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>IOServiceAddMatchingNotification_wrapper</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>985</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1023</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1023</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1026</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1026</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1026</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1026</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1026</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1026</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1026</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1026</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1026</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1026</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1026</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1027</integer>
-// CHECK-NEXT:            <key>col</key><integer>46</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1027</integer>
-// CHECK-NEXT:            <key>col</key><integer>56</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1027</integer>
-// CHECK-NEXT:            <key>col</key><integer>46</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1027</integer>
-// CHECK-NEXT:            <key>col</key><integer>56</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1028</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1028</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1028</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1028</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1028</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1028</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1028</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count decremented</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count decremented</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1028</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1028</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1029</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1029</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1029</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1029</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1029</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1029</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1029</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1029</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1029</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1030</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1030</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1030</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1030</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1030</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'number'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_7152619</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1030</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1039</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1039</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1050</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1050</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1050</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1050</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1051</integer>
-// CHECK-NEXT:            <key>col</key><integer>41</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1051</integer>
-// CHECK-NEXT:            <key>col</key><integer>67</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1051</integer>
-// CHECK-NEXT:       <key>col</key><integer>41</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1051</integer>
-// CHECK-NEXT:          <key>col</key><integer>41</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1051</integer>
-// CHECK-NEXT:          <key>col</key><integer>69</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CGColorSpaceCreateDeviceRGB' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CGColorSpaceCreateDeviceRGB' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1051</integer>
-// CHECK-NEXT:            <key>col</key><integer>41</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1051</integer>
-// CHECK-NEXT:            <key>col</key><integer>67</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1050</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1050</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1050</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1050</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1050</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_7184450</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>12</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1050</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1061</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1061</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1073</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1073</integer>
-// CHECK-NEXT:            <key>col</key><integer>66</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1073</integer>
-// CHECK-NEXT:       <key>col</key><integer>40</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1073</integer>
-// CHECK-NEXT:          <key>col</key><integer>40</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1073</integer>
-// CHECK-NEXT:          <key>col</key><integer>68</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CGColorSpaceCreateDeviceRGB' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CGColorSpaceCreateDeviceRGB' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1073</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1073</integer>
-// CHECK-NEXT:            <key>col</key><integer>66</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1072</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1072</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1072</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_7184450_pos</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>12</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1072</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1061</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1061</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1072</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1073</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1073</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1073</integer>
-// CHECK-NEXT:       <key>col</key><integer>4</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1073</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1073</integer>
-// CHECK-NEXT:          <key>col</key><integer>107</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CGGradientCreateWithColorComponents' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CGGradientCreateWithColorComponents' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1073</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1073</integer>
-// CHECK-NEXT:            <key>col</key><integer>38</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1077</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1077</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1077</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'myGradient' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'myGradient' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'myGradient'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_7184450_pos</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>17</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1077</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1111</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1111</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1111</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1111</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1111</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1111</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1111</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1111</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1111</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1112</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1112</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1112</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'number'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_7299394_positive</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1112</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1244</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1244</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1246</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1246</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1246</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1246</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1247</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CGBitmapContextCreateWithData' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CGBitmapContextCreateWithData' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1246</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1246</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1248</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1248</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1248</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_7358899</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>9</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1248</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1264</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1264</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1264</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1264</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1264</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1264</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1264</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1264</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1264</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1265</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1265</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1265</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'y' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'y' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'y'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar7265711_a</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1265</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1284</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1284</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1285</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1285</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1285</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1285</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1285</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1285</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1285</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1285</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1285</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1285</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1285</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1286</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1286</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1286</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'number'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar7306898</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1286</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1295</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1295</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1295</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The 'release' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The 'release' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>The 'release' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>message incorrectly sent to class instead of class instance</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar7252064</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1295</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1295</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1295</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1296</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1296</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1296</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1296</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1296</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The 'retain' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The 'retain' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>The 'retain' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>message incorrectly sent to class instead of class instance</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar7252064</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1296</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1295</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1295</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1297</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1297</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1297</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1297</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1297</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The 'autorelease' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The 'autorelease' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>The 'autorelease' message should be sent to instances of class 'RDar7252064' and not the class directly</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>message incorrectly sent to class instead of class instance</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar7252064</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1297</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1295</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1295</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1298</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1298</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1298</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1298</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1298</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>The 'drain' message should be sent to instances of class 'NSAutoreleasePool' and not the class directly</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>The 'drain' message should be sent to instances of class 'NSAutoreleasePool' and not the class directly</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>The 'drain' message should be sent to instances of class 'NSAutoreleasePool' and not the class directly</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>message incorrectly sent to class instead of class instance</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar7252064</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1298</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1325</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1325</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1325</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1325</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1325</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1325</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1325</integer>
-// CHECK-NEXT:          <key>col</key><integer>42</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1325</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1325</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1326</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1326</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1326</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'str' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'str' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'str'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_attr_1</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1326</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1329</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1329</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1329</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1329</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1329</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1329</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1329</integer>
-// CHECK-NEXT:          <key>col</key><integer>44</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1329</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1329</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1330</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1330</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1330</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'str' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'str' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'str'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_attr_1b</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1330</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1333</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1333</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1334</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1334</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1334</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1334</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1334</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1334</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1334</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1334</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1334</integer>
-// CHECK-NEXT:          <key>col</key><integer>38</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1334</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1334</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1335</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1335</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1335</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1335</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1335</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1335</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1335</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1335</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1335</integer>
-// CHECK-NEXT:          <key>col</key><integer>37</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'str2' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'str2' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'str2'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_attr1c</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1335</integer>
-// CHECK-NEXT:    <key>col</key><integer>20</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1333</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1333</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1336</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1336</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1336</integer>
-// CHECK-NEXT:          <key>col</key><integer>38</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1336</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1336</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1336</integer>
-// CHECK-NEXT:          <key>col</key><integer>46</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1336</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1336</integer>
-// CHECK-NEXT:          <key>col</key><integer>38</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1336</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1337</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1337</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1337</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'str4' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'str4' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'str4'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_attr1c</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1337</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1340</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1340</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1340</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1340</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1340</integer>
-// CHECK-NEXT:       <key>col</key><integer>26</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1340</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1340</integer>
-// CHECK-NEXT:          <key>col</key><integer>50</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1340</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1340</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1341</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1341</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1341</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testattr2_a</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1341</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1344</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1344</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1344</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1344</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1344</integer>
-// CHECK-NEXT:       <key>col</key><integer>26</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1344</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1344</integer>
-// CHECK-NEXT:          <key>col</key><integer>63</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1344</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1344</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1345</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1345</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1345</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testattr2_b</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1345</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1348</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1348</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1348</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1348</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1348</integer>
-// CHECK-NEXT:       <key>col</key><integer>26</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1348</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1348</integer>
-// CHECK-NEXT:          <key>col</key><integer>63</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1348</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1348</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1350</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1350</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1350</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testattr2_b_11358224_self_assign_looses_the_leak</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1350</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1380</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1380</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1380</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1380</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1380</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1380</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1380</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1380</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1380</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1380</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1380</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1380</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1380</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1380</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1380</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1380</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1380</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1380</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1380</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method that is annotated as NS_RETURNS_NOT_RETAINED</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method that is annotated as NS_RETURNS_NOT_RETAINED</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>newString</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1380</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1413</integer>
-// CHECK-NEXT:       <key>col</key><integer>26</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'returnsCFRetainedAsCF'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'returnsCFRetainedAsCF'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1404</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'newCFRetainedAsCFNoAttr'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'newCFRetainedAsCFNoAttr'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1404</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1404</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1405</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1405</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1405</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1405</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1405</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1405</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1405</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1405</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1405</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1394</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'returnsCFRetainedAsCF'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'returnsCFRetainedAsCF'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1396</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1396</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1396</integer>
-// CHECK-NEXT:          <key>col</key><integer>52</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1405</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1405</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1405</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1413</integer>
-// CHECK-NEXT:       <key>col</key><integer>26</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'returnsCFRetainedAsCF'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'returnsCFRetainedAsCF'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1413</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>66</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object autoreleased</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1413</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1413</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1413</integer>
-// CHECK-NEXT:          <key>col</key><integer>66</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Method should return an owned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>newCFRetainedAsCFNoAttr</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1413</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1417</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>42</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1394</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'alsoReturnsRetained'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'alsoReturnsRetained'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1396</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1396</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1396</integer>
-// CHECK-NEXT:          <key>col</key><integer>52</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1417</integer>
-// CHECK-NEXT:       <key>col</key><integer>20</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>42</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>40</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1417</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1417</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>42</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>42</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1417</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1417</integer>
-// CHECK-NEXT:          <key>col</key><integer>42</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name ('alsoReturnsRetained') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name ('alsoReturnsRetained') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>alsoReturnsRetained</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1417</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1421</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1394</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'alsoReturnsRetainedAsCF'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'alsoReturnsRetainedAsCF'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1396</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1396</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1396</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1396</integer>
-// CHECK-NEXT:          <key>col</key><integer>52</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1421</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning from 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning from 'returnsRetainedCFDate'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>30</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1421</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1421</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1421</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1421</integer>
-// CHECK-NEXT:          <key>col</key><integer>32</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name ('alsoReturnsRetainedAsCF') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a method whose name ('alsoReturnsRetainedAsCF') does not start with 'copy', 'mutableCopy', 'alloc' or 'new'.  This violates the naming convention rules given in the Memory Management Guide for Cocoa</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C method</string>
-// CHECK-NEXT:   <key>issue_context</key><string>alsoReturnsRetainedAsCF</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1421</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1441</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1441</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1442</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1442</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1442</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1442</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1442</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1442</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1442</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1442</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1442</integer>
-// CHECK-NEXT:          <key>col</key><integer>82</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1442</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1442</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1443</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1443</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1443</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'value'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_panic_negative</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1443</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1452</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1452</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1453</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1453</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1453</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1453</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1453</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1453</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1453</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1453</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1453</integer>
-// CHECK-NEXT:          <key>col</key><integer>82</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFNumberCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1453</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1453</integer>
-// CHECK-NEXT:            <key>col</key><integer>36</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1454</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1454</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1454</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1454</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1454</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1454</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1454</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1454</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1454</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'x' is 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1454</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1454</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1456</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1456</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1456</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'value'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_panic_neg_2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1456</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1476</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1476</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1476</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1476</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1476</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1476</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1476</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1476</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1476</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1477</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1477</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1477</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1477</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1477</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'number'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_blocks_1_pos</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1477</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1497</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1497</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1497</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1497</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1497</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1497</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1497</integer>
-// CHECK-NEXT:          <key>col</key><integer>53</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1497</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1497</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1498</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1498</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1498</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1498</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1498</integer>
-// CHECK-NEXT:          <key>col</key><integer>39</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1498</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_blocks_1_indirect_retain_via_call'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_blocks_1_indirect_retain_via_call'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1498</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1498</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1498</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1498</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1498</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1498</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1498</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1498</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1498</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +2 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1498</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1498</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1498</integer>
-// CHECK-NEXT:          <key>col</key><integer>39</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Returning to caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1498</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1498</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1499</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1499</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1499</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +2</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'number' is not referenced later in this execution path and has a retain count of +2</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'number'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_blocks_1_indirect_retain_via_call</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1499</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1549</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1549</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1552</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1552</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1552</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1552</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1553</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1553</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1553</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1553</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1555</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1555</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1555</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1555</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1555</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1555</integer>
-// CHECK-NEXT:            <key>col</key><integer>34</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1555</integer>
-// CHECK-NEXT:       <key>col</key><integer>16</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1555</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1555</integer>
-// CHECK-NEXT:          <key>col</key><integer>49</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFErrorCopyUserInfo' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFErrorCopyUserInfo' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1555</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1555</integer>
-// CHECK-NEXT:            <key>col</key><integer>34</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1557</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1557</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1557</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1557</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1557</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1557</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1557</integer>
-// CHECK-NEXT:       <key>col</key><integer>13</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1557</integer>
-// CHECK-NEXT:          <key>col</key><integer>13</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1557</integer>
-// CHECK-NEXT:          <key>col</key><integer>30</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'info' is not equal to null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'info' is not equal to null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1557</integer>
-// CHECK-NEXT:            <key>col</key><integer>13</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1557</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1560</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1560</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1560</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1560</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1560</integer>
-// CHECK-NEXT:          <key>col</key><integer>91</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'info' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'info' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'info'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar_8724287</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>12</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1560</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1605</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1605</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1605</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1605</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1605</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1605</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1605</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1605</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1605</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1605</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1605</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1605</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1605</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1605</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1605</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1605</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1605</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1605</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1605</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a function whose name ('camelcase_createno') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a function whose name ('camelcase_createno') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>camelcase_createno</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1605</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1613</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1613</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1613</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1613</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1613</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1613</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1613</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1613</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1613</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1613</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1613</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1613</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1613</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1613</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1613</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1613</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1613</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1613</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1613</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a function whose name ('camelcase_copying') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a function whose name ('camelcase_copying') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>camelcase_copying</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1613</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1634</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1634</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1634</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1634</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1634</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1634</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1634</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1634</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1634</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1634</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1634</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1634</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1634</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1634</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1634</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1634</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1634</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1634</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1634</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a function whose name ('camel_creat') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a function whose name ('camel_creat') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>camel_creat</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1634</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1646</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1646</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1646</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1646</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1646</integer>
-// CHECK-NEXT:       <key>col</key><integer>10</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1646</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1646</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFArrayCreateMutable' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1646</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1646</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1646</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1646</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1646</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1646</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1646</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1646</integer>
-// CHECK-NEXT:          <key>col</key><integer>10</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1646</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object returned to caller as an owning reference (single retain count transferred to caller)</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1646</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1646</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1646</integer>
-// CHECK-NEXT:          <key>col</key><integer>60</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a function whose name ('camel_copymachine') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: allocated object is returned from a function whose name ('camel_copymachine') does not contain 'Copy' or 'Create'.  This violates the naming convention rules given in the Memory Management Guide for Core Foundation</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>camel_copymachine</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1646</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1666</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1666</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1667</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1667</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1667</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1667</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1667</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1667</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1667</integer>
-// CHECK-NEXT:       <key>col</key><integer>24</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1667</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1667</integer>
-// CHECK-NEXT:          <key>col</key><integer>41</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CFDateCreate' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1667</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1667</integer>
-// CHECK-NEXT:            <key>col</key><integer>35</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1668</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1668</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1668</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'vals' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'vals' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'vals'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar6582778</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1668</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1692</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1692</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1694</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1694</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1694</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1694</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1694</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1694</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1694</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1694</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1694</integer>
-// CHECK-NEXT:          <key>col</key><integer>64</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1694</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1694</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1695</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1695</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1695</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1695</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1695</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1695</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1695</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1695</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1695</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1697</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1697</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1697</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1697</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1697</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1697</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1697</integer>
-// CHECK-NEXT:       <key>col</key><integer>27</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1697</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1697</integer>
-// CHECK-NEXT:          <key>col</key><integer>33</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar10232019_positive</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1697</integer>
-// CHECK-NEXT:    <key>col</key><integer>27</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1818</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1818</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1818</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1818</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1818</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1818</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1818</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1818</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1818</integer>
-// CHECK-NEXT:          <key>col</key><integer>66</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1818</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1818</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1821</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1821</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1821</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1821</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1821</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'a'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_objc_arrays</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1821</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1827</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1827</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1827</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1827</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1827</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1827</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1827</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1827</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1827</integer>
-// CHECK-NEXT:          <key>col</key><integer>56</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1827</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1827</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1830</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1830</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1830</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1830</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1830</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a2' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a2' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'a2'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_objc_arrays</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>15</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1830</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1835</integer>
-// CHECK-NEXT:       <key>col</key><integer>24</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1835</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1835</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSArray literal is an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSArray literal is an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1835</integer>
-// CHECK-NEXT:       <key>col</key><integer>23</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1835</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1835</integer>
-// CHECK-NEXT:          <key>col</key><integer>35</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1835</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1835</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1835</integer>
-// CHECK-NEXT:            <key>col</key><integer>23</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1838</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1838</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1838</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1838</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1838</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a3' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a3' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'a3'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_objc_arrays</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>23</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1838</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1843</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1843</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1843</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1843</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1843</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1843</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1843</integer>
-// CHECK-NEXT:       <key>col</key><integer>22</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1843</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1843</integer>
-// CHECK-NEXT:          <key>col</key><integer>57</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1843</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1843</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1847</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1847</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1847</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1847</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1847</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'a'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_objc_arrays</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>32</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1847</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1816</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1817</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1852</integer>
-// CHECK-NEXT:       <key>col</key><integer>28</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1852</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1852</integer>
-// CHECK-NEXT:          <key>col</key><integer>35</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSDictionary literal is an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSDictionary literal is an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>28</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1852</integer>
-// CHECK-NEXT:       <key>col</key><integer>27</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1852</integer>
-// CHECK-NEXT:          <key>col</key><integer>27</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1852</integer>
-// CHECK-NEXT:          <key>col</key><integer>43</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1852</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1852</integer>
-// CHECK-NEXT:          <key>col</key><integer>35</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1852</integer>
-// CHECK-NEXT:            <key>col</key><integer>27</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1856</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1856</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1856</integer>
-// CHECK-NEXT:       <key>col</key><integer>9</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1856</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1856</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'a' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'a'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_objc_arrays</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>41</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1856</integer>
-// CHECK-NEXT:    <key>col</key><integer>9</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1861</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1861</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1861</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSNumber literal is an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSNumber literal is an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1861</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1861</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1861</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1861</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1861</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1861</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1863</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1863</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1863</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'value'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_objc_integer_literals</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1863</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1866</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1866</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1866</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSNumber boxed expression produces an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSNumber boxed expression produces an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1866</integer>
-// CHECK-NEXT:       <key>col</key><integer>14</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1866</integer>
-// CHECK-NEXT:          <key>col</key><integer>14</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1866</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1866</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1866</integer>
-// CHECK-NEXT:          <key>col</key><integer>18</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1870</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1870</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1870</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1870</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1870</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'value'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_objc_boxed_expressions</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1870</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1866</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1869</integer>
-// CHECK-NEXT:       <key>col</key><integer>12</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1869</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1869</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSString boxed expression produces an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSString boxed expression produces an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1869</integer>
-// CHECK-NEXT:       <key>col</key><integer>11</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1869</integer>
-// CHECK-NEXT:          <key>col</key><integer>11</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1869</integer>
-// CHECK-NEXT:          <key>col</key><integer>23</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1869</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1869</integer>
-// CHECK-NEXT:          <key>col</key><integer>15</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference count incremented. The object now has a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1869</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1871</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1871</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1871</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'value' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'value'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_objc_boxed_expressions</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1871</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1876</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1876</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1877</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1877</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1877</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1877</integer>
-// CHECK-NEXT:            <key>col</key><integer>12</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1878</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1878</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1878</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1878</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1878</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1878</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1878</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1878</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1878</integer>
-// CHECK-NEXT:          <key>col</key><integer>12</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'y' is <= 2</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'y' is <= 2</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1878</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1878</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1881</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1881</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1881</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1881</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1881</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1881</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1881</integer>
-// CHECK-NEXT:       <key>col</key><integer>21</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1881</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1881</integer>
-// CHECK-NEXT:          <key>col</key><integer>43</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Method returns an Objective-C object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1881</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1881</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1882</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1882</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1882</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1882</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1883</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1883</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1883</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1883</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1883</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1883</integer>
-// CHECK-NEXT:          <key>col</key><integer>6</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1883</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1883</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1883</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1884</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1884</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1884</integer>
-// CHECK-NEXT:       <key>col</key><integer>5</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1884</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1884</integer>
-// CHECK-NEXT:          <key>col</key><integer>35</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Reference-counted object is used after it is released</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Use-after-release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>rdar11400885</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>9</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1884</integer>
-// CHECK-NEXT:    <key>col</key><integer>5</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1903</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1903</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1911</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1911</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1911</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1911</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1911</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1911</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1911</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1911</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1911</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSArray literal is an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSArray literal is an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1911</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1911</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1912</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1912</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1912</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1912</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1912</integer>
-// CHECK-NEXT:          <key>col</key><integer>35</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testConsumeAndStopTracking</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>10</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1912</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1916</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1916</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1924</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1924</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1924</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1924</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1924</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1924</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1924</integer>
-// CHECK-NEXT:       <key>col</key><integer>19</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1924</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1924</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>NSArray literal is an object with a +0 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>NSArray literal is an object with a +0 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1924</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1924</integer>
-// CHECK-NEXT:            <key>col</key><integer>19</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1925</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1925</integer>
-// CHECK-NEXT:            <key>col</key><integer>26</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1925</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1925</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1925</integer>
-// CHECK-NEXT:          <key>col</key><integer>48</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the reference count of an object that is not owned at this point by the caller</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Bad release</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>testCFConsumeAndStopTracking</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>10</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1925</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1937</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1937</integer>
-// CHECK-NEXT:            <key>col</key><integer>10</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1937</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1937</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1937</integer>
-// CHECK-NEXT:       <key>col</key><integer>16</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1937</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>1937</integer>
-// CHECK-NEXT:          <key>col</key><integer>31</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateMyCFType' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to function 'CreateMyCFType' returns a Core Foundation object with a +1 retain count</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1937</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1937</integer>
-// CHECK-NEXT:            <key>col</key><integer>29</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1938</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>1938</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>1938</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 'x' is not referenced later in this execution path and has a retain count of +1</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Potential leak of an object stored into 'x'</string>
-// CHECK-NEXT:    <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
-// CHECK-NEXT:    <key>type</key><string>Leak</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_custom_cf</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>1938</integer>
-// CHECK-NEXT:    <key>col</key><integer>1</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/retain-release.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/retain-release.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/retain-release.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,463 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.coreFoundation.CFRetainRelease,osx.cocoa.ClassRelease,osx.cocoa.RetainCount -analyzer-store=region -fblocks -verify %s
-
-#if __has_feature(attribute_ns_returns_retained)
-#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
-#endif
-#if __has_feature(attribute_cf_returns_retained)
-#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
-#endif
-#if __has_feature(attribute_ns_returns_not_retained)
-#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
-#endif
-#if __has_feature(attribute_cf_returns_not_retained)
-#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
-#endif
-#if __has_feature(attribute_ns_consumes_self)
-#define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
-#endif
-#if __has_feature(attribute_ns_consumed)
-#define NS_CONSUMED __attribute__((ns_consumed))
-#endif
-#if __has_feature(attribute_cf_consumed)
-#define CF_CONSUMED __attribute__((cf_consumed))
-#endif
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from Mac OS X headers:
-//
-// #include <Cocoa/Cocoa.h>
-// #include <CoreFoundation/CoreFoundation.h>
-// #include <DiskArbitration/DiskArbitration.h>
-// #include <QuartzCore/QuartzCore.h>
-// #include <Quartz/Quartz.h>
-// #include <IOKit/IOKitLib.h>
-//
-// It includes the basic definitions for the test cases below.
-//===----------------------------------------------------------------------===//
-
-typedef unsigned int __darwin_natural_t;
-typedef unsigned long uintptr_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef unsigned int UInt32;
-typedef signed long CFIndex;
-typedef struct {
-    CFIndex location;
-    CFIndex length;
-} CFRange;
-static __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) {
-    CFRange range;
-    range.location = loc;
-    range.length = len;
-    return range;
-}
-typedef const void * CFTypeRef;
-typedef const struct __CFString * CFStringRef;
-typedef const struct __CFAllocator * CFAllocatorRef;
-extern const CFAllocatorRef kCFAllocatorDefault;
-extern CFTypeRef CFRetain(CFTypeRef cf);
-extern void CFRelease(CFTypeRef cf);
-typedef struct {
-}
-CFArrayCallBacks;
-extern const CFArrayCallBacks kCFTypeArrayCallBacks;
-typedef const struct __CFArray * CFArrayRef;
-typedef struct __CFArray * CFMutableArrayRef;
-extern CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
-void abort(void) __attribute__((noreturn));
-CFArrayRef CFArrayCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFArrayCallBacks *callBacks);
-extern const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
-extern void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);
-typedef struct {
-}
-CFDictionaryKeyCallBacks;
-extern const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
-typedef struct {
-}
-CFDictionaryValueCallBacks;
-extern const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct __CFDictionary * CFMutableDictionaryRef;
-extern CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
-typedef UInt32 CFStringEncoding;
-enum {
-kCFStringEncodingMacRoman = 0,     kCFStringEncodingWindowsLatin1 = 0x0500,     kCFStringEncodingISOLatin1 = 0x0201,     kCFStringEncodingNextStepLatin = 0x0B01,     kCFStringEncodingASCII = 0x0600,     kCFStringEncodingUnicode = 0x0100,     kCFStringEncodingUTF8 = 0x08000100,     kCFStringEncodingNonLossyASCII = 0x0BFF      ,     kCFStringEncodingUTF16 = 0x0100,     kCFStringEncodingUTF16BE = 0x10000100,     kCFStringEncodingUTF16LE = 0x14000100,      kCFStringEncodingUTF32 = 0x0c000100,     kCFStringEncodingUTF32BE = 0x18000100,     kCFStringEncodingUTF32LE = 0x1c000100  };
-extern CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
-extern CFStringRef CFStringCreateCopy(CFAllocatorRef alloc, CFStringRef theString);
-typedef double CFTimeInterval;
-typedef CFTimeInterval CFAbsoluteTime;
-extern CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
-typedef const struct __CFDate * CFDateRef;
-extern CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
-extern CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
-typedef __darwin_natural_t natural_t;
-typedef natural_t mach_port_name_t;
-typedef mach_port_name_t mach_port_t;
-typedef int kern_return_t;
-typedef kern_return_t mach_error_t;
-enum {
-kCFNumberSInt8Type = 1,     kCFNumberSInt16Type = 2,     kCFNumberSInt32Type = 3,     kCFNumberSInt64Type = 4,     kCFNumberFloat32Type = 5,     kCFNumberFloat64Type = 6,      kCFNumberCharType = 7,     kCFNumberShortType = 8,     kCFNumberIntType = 9,     kCFNumberLongType = 10,     kCFNumberLongLongType = 11,     kCFNumberFloatType = 12,     kCFNumberDoubleType = 13,      kCFNumberCFIndexType = 14,      kCFNumberNSIntegerType = 15,     kCFNumberCGFloatType = 16,     kCFNumberMaxType = 16    };
-typedef CFIndex CFNumberType;
-typedef const struct __CFNumber * CFNumberRef;
-extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
-typedef const struct __CFAttributedString *CFAttributedStringRef;
-typedef struct __CFAttributedString *CFMutableAttributedStringRef;
-extern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes) ;
-extern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr) ;
-extern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value) ;
-typedef signed char BOOL;
-typedef unsigned long NSUInteger;
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (id)copy;
-- (oneway void)release;
-- (id)autorelease;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
-- (id)init;
- at end
- at interface NSObject (NSCoderMethods)
-- (id)awakeAfterUsingCoder:(NSCoder *)aDecoder;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-}
-NSFastEnumerationState;
- at protocol NSFastEnumeration  - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end           @class NSString, NSDictionary;
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value;
- at end  @interface NSNumber : NSValue  - (char)charValue;
-- (id)initWithInt:(int)value;
- at end   @class NSString;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end  @interface NSArray (NSArrayCreation)  + (id)array;
- at end       @interface NSAutoreleasePool : NSObject {
-}
-- (void)drain;
- at end extern NSString * const NSBundleDidLoadNotification;
-typedef double NSTimeInterval;
- at interface NSDate : NSObject <NSCopying, NSCoding>  - (NSTimeInterval)timeIntervalSinceReferenceDate;
- at end            typedef unsigned short unichar;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>    - (NSUInteger)length;
-- ( const char *)UTF8String;
-- (id)initWithUTF8String:(const char *)nullTerminatedCString;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end        @class NSString, NSURL, NSError;
- at interface NSData : NSObject <NSCopying, NSMutableCopying, NSCoding>  - (NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length;
-+ (id)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
- at end   @class NSLocale, NSDate, NSCalendar, NSTimeZone, NSError, NSArray, NSMutableDictionary;
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end    @interface NSMutableDictionary : NSDictionary  - (void)removeObjectForKey:(id)aKey;
-- (void)setObject:(id)anObject forKey:(id)aKey;
- at end  @interface NSMutableDictionary (NSMutableDictionaryCreation)  + (id)dictionaryWithCapacity:(NSUInteger)numItems;
- at end  typedef double CGFloat;
-struct CGSize {
-};
-typedef struct CGSize CGSize;
-struct CGRect {
-};
-typedef struct CGRect CGRect;
-typedef mach_port_t io_object_t;
-typedef char io_name_t[128];
-typedef io_object_t io_iterator_t;
-typedef io_object_t io_service_t;
-typedef struct IONotificationPort * IONotificationPortRef;
-typedef void (*IOServiceMatchingCallback)(  void * refcon,  io_iterator_t iterator );
-io_service_t IOServiceGetMatchingService(  mach_port_t masterPort,  CFDictionaryRef matching );
-kern_return_t IOServiceGetMatchingServices(  mach_port_t masterPort,  CFDictionaryRef matching,  io_iterator_t * existing );
-kern_return_t IOServiceAddNotification(  mach_port_t masterPort,  const io_name_t notificationType,  CFDictionaryRef matching,  mach_port_t wakePort,  uintptr_t reference,  io_iterator_t * notification ) __attribute__((deprecated));
-kern_return_t IOServiceAddMatchingNotification(  IONotificationPortRef notifyPort,  const io_name_t notificationType,  CFDictionaryRef matching,         IOServiceMatchingCallback callback,         void * refCon,  io_iterator_t * notification );
-CFMutableDictionaryRef IOServiceMatching(  const char * name );
-CFMutableDictionaryRef IOServiceNameMatching(  const char * name );
-CFMutableDictionaryRef IOBSDNameMatching(  mach_port_t masterPort,  uint32_t options,  const char * bsdName );
-CFMutableDictionaryRef IOOpenFirmwarePathMatching(  mach_port_t masterPort,  uint32_t options,  const char * path );
-CFMutableDictionaryRef IORegistryEntryIDMatching(  uint64_t entryID );
-typedef struct __DASession * DASessionRef;
-extern DASessionRef DASessionCreate( CFAllocatorRef allocator );
-typedef struct __DADisk * DADiskRef;
-extern DADiskRef DADiskCreateFromBSDName( CFAllocatorRef allocator, DASessionRef session, const char * name );
-extern DADiskRef DADiskCreateFromIOMedia( CFAllocatorRef allocator, DASessionRef session, io_service_t media );
-extern CFDictionaryRef DADiskCopyDescription( DADiskRef disk );
-extern DADiskRef DADiskCopyWholeDisk( DADiskRef disk );
- at interface NSTask : NSObject - (id)init;
- at end                    typedef struct CGColorSpace *CGColorSpaceRef;
-typedef struct CGImage *CGImageRef;
-typedef struct CGLayer *CGLayerRef;
- at interface NSResponder : NSObject <NSCoding> {
-}
- at end    @protocol NSAnimatablePropertyContainer      - (id)animator;
- at end  extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {
-}
- at end @protocol NSValidatedUserInterfaceItem - (SEL)action;
- at end   @protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
- at end  @class NSDate, NSDictionary, NSError, NSException, NSNotification;
- at interface NSApplication : NSResponder <NSUserInterfaceValidations> {
-}
- at end   enum {
-NSTerminateCancel = 0,         NSTerminateNow = 1,         NSTerminateLater = 2 };
-typedef NSUInteger NSApplicationTerminateReply;
- at protocol NSApplicationDelegate <NSObject> @optional        - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
- at end  @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView, NSTextView;
- at interface NSCell : NSObject <NSCopying, NSCoding> {
-}
- at end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError;
-typedef struct {
-}
-CVTimeStamp;
- at interface CIImage : NSObject <NSCoding, NSCopying> {
-}
-typedef int CIFormat;
- at end  enum {
-kDAReturnSuccess = 0,     kDAReturnError = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x01,     kDAReturnBusy = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x02,     kDAReturnBadArgument = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x03,     kDAReturnExclusiveAccess = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x04,     kDAReturnNoResources = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x05,     kDAReturnNotFound = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x06,     kDAReturnNotMounted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x07,     kDAReturnNotPermitted = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x08,     kDAReturnNotPrivileged = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x09,     kDAReturnNotReady = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0A,     kDAReturnNotWritable = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0B,     kDAReturnUnsupported = (((0x3eU)&0x3f)<<26) | (((0x368)&0xfff)<<14) | 0x0C };
-typedef mach_error_t DAReturn;
-typedef const struct __DADissenter * DADissenterRef;
-extern DADissenterRef DADissenterCreate( CFAllocatorRef allocator, DAReturn status, CFStringRef string );
- at interface CIContext: NSObject {
-}
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r;
-- (CGImageRef)createCGImage:(CIImage *)im fromRect:(CGRect)r     format:(CIFormat)f colorSpace:(CGColorSpaceRef)cs;
-- (CGLayerRef)createCGLayerWithSize:(CGSize)size info:(CFDictionaryRef)d;
- at end extern NSString* const QCRendererEventKey;
- at protocol QCCompositionRenderer - (NSDictionary*) attributes;
- at end   @interface QCRenderer : NSObject <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
- at end  extern NSString* const QCViewDidStartRenderingNotification;
- at interface QCView : NSView <QCCompositionRenderer> {
-}
-- (id) createSnapshotImageOfType:(NSString*)type;
- at end    enum {
-ICEXIFOrientation1 = 1,     ICEXIFOrientation2 = 2,     ICEXIFOrientation3 = 3,     ICEXIFOrientation4 = 4,     ICEXIFOrientation5 = 5,     ICEXIFOrientation6 = 6,     ICEXIFOrientation7 = 7,     ICEXIFOrientation8 = 8, };
- at class ICDevice;
- at protocol ICDeviceDelegate <NSObject>  @required      - (void)didRemoveDevice:(ICDevice*)device;
- at end extern NSString *const ICScannerStatusWarmingUp;
- at class ICScannerDevice;
- at protocol ICScannerDeviceDelegate <ICDeviceDelegate>  @optional       - (void)scannerDeviceDidBecomeAvailable:(ICScannerDevice*)scanner;
- at end
-
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-typedef unsigned long CFTypeID;
-struct CGPoint {
-  CGFloat x;
-  CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-typedef struct CGGradient *CGGradientRef;
-typedef uint32_t CGGradientDrawingOptions;
-extern CFTypeID CGGradientGetTypeID(void);
-extern CGGradientRef CGGradientCreateWithColorComponents(CGColorSpaceRef
-  space, const CGFloat components[], const CGFloat locations[], size_t count);
-extern CGGradientRef CGGradientCreateWithColors(CGColorSpaceRef space,
-  CFArrayRef colors, const CGFloat locations[]);
-extern CGGradientRef CGGradientRetain(CGGradientRef gradient);
-extern void CGGradientRelease(CGGradientRef gradient);
-typedef struct CGContext *CGContextRef;
-extern void CGContextDrawLinearGradient(CGContextRef context,
-    CGGradientRef gradient, CGPoint startPoint, CGPoint endPoint,
-    CGGradientDrawingOptions options);
-extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-class SmartPointer {
-  id x;
-public:
-  SmartPointer(id x) : x(x) {}
-  ~SmartPointer() { [x release]; }
-
-  void adopt(id x);
-  void noAdopt(id x);
-};
-
-void test_positive() {
-  id x = [[NSObject alloc] init]; // expected-warning {{leak}}
-}
-
-void test_smartpointer_1() {
-  id x = [[NSObject alloc] init];  // no-warning
-  SmartPointer foo(x);
-}
-
-void test_smartpointer_2() {
-  id x = [[NSObject alloc] init];  // no-warning
-  SmartPointer foo(0);
-  foo.adopt(x);
-}
-
-// FIXME: Eventually we want annotations to say whether or not
-// a C++ method claims ownership of an Objective-C object.
-void test_smartpointer_3() {
-  id x = [[NSObject alloc] init];  // no-warning
-  SmartPointer foo(0);
-  foo.noAdopt(x);
-}
-
-void test_smartpointer_4() {
-  id x = [[NSObject alloc] init];  // no-warning
-  SmartPointer *foo = new SmartPointer(x);
-  delete foo;
-}
-
-extern CFStringRef ElectronMicroscopyEngage(void);
-void test_microscopy() {
-  NSString *token = (NSString*) ElectronMicroscopyEngage();
-  [token release]; // expected-warning {{object that is not owned}}
-}
-
-extern CFStringRef Scopy(void);
-void test_Scopy() {
-  NSString *token = (NSString*) Scopy();
-  [token release]; // expected-warning {{object that is not owned}}
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling of template functions used to do magic with
-// tracked retained pointers.
-//===----------------------------------------------------------------------===//
-
-template <typename T, typename U> T static_objc_cast(U* value)
-{
-  // ...debugging code omitted...
-  return static_cast<T>(value);
-}
-
-int rdar10553686(void)
-{
-  NSObject* bar = static_objc_cast<NSObject*>([[NSObject alloc] init]);
-  [bar release];
-  return 0;
-}
-int rdar10553686_positive(void)
-{
-  NSObject* bar = static_objc_cast<NSObject*>([[NSObject alloc] init]);
-  [bar release];
-  [bar retain]; // expected-warning {{used after it is released}}
-  return 0;
-}
-
- at interface NSMapTable : NSObject <NSCopying, NSCoding, NSFastEnumeration>
- at end
-extern void *NSMapGet(NSMapTable *table, const void *key);
-extern void NSMapInsert(NSMapTable *table, const void *key, const void *value);
-extern void NSMapInsertKnownAbsent(NSMapTable *table, const void *key, const void *value);
-char *strdup(const char *s);
-
-NSString * radar11152419(NSString *string1, NSString *key1, NSMapTable *map) {
-    NSString *string = ( NSString *)NSMapGet(map, key1);
-    if (!string) {
-        string = [string1 copy];
-        NSString *key = [key1 copy];
-        NSMapInsert(map, (void*) key, (void*)string); // no warning
-        NSMapInsertKnownAbsent(map, (void*)key, (void*)string); // no warning
-    }
-    return string;
-}
-
-//===----------------------------------------------------------------------===//
-// Don't crash on non-member functions with "callbacks" but without names.
-//===----------------------------------------------------------------------===//
-
-struct IntWrapper {
-  int arg;
-};
-
-int operator>> (const IntWrapper &W, int (*f)(int)) {
-  return f(W.arg);
-}
-
-void testCallback() {
-  IntWrapper val = { 42 };
-
-  extern int process(int);
-  val >> process;
-}
-
-//===----------------------------------------------------------------------===//
-// Test handling static initializers.
-//===----------------------------------------------------------------------===//
-
- at interface radar13227740 : NSObject
- at end
-
- at implementation radar13227740
-- (CFArrayRef)test {
-    static CFArrayRef array = ::CFArrayCreate(0, 0, 0, 0);
-    do { if (!((0 != array)/1)) { abort(); } } while (false);
-    return array;
-}
-
-// Previously this reported a bogus leak.
-- (void)test2 {
-    (void)[self test];
-    (void)[self test];
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// Don't crash on getting a null expression from CallEnter corresponding to a
-// destructor.
-//===----------------------------------------------------------------------===//
-
-template <typename X>
-class Holder {
-public:
-	Holder() throw();
-	~Holder() throw() {}
-	X* get() const throw();
-	void reset(X* p) throw();
-private:
-	X* ptr_;
-};
-
-template<typename X>
-inline
-Holder<X>::Holder() throw()
-: ptr_(0){}
-
-template <typename X>
-inline
-X* Holder<X>::get() const throw() {
-	return ptr_;
-}
-
-template <typename X>
-inline
-void Holder<X>::reset(X* p) throw() {
-	if (ptr_ != p) {
-		if (ptr_ != 0) {
-			::CFRelease( ptr_ );
-		}
-		ptr_ = p;
-	}
-}
-
-class radar13722286 {
-public:
-  radar13722286() {}
-private:
-	void			PrepareBitmap();
-	Holder<const struct __CFString>	mStr;
-};
-
-void	radar13722286::PrepareBitmap() {
-	if (mStr.get() != 0) {
-		Holder<const struct __CFString> str1;
-		mStr.reset( CFStringCreateCopy( 0, str1.get() ) ); //expected-warning {{Potential leak of an object}}
-	}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/security-syntax-checks-no-emit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/security-syntax-checks-no-emit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/security-syntax-checks-no-emit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -analyze -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// expected-no-diagnostics
-
-// This file complements 'security-syntax-checks.m', but tests that we omit
-// specific checks on platforms where they don't make sense.
-
-// Omit the 'rand' check since 'arc4random' is not available on Linux.
-int      rand(void);
-double   drand48(void);
-double   erand48(unsigned short[3]);
-long     jrand48(unsigned short[3]);
-void     lcong48(unsigned short[7]);
-long     lrand48(void);
-long     mrand48(void);
-long     nrand48(unsigned short[3]);
-long     random(void);
-int      rand_r(unsigned *);
-
-void test_rand()
-{
-  unsigned short a[7];
-  unsigned b;
-  
-  rand();	// no-warning
-  drand48();	// no-warning
-  erand48(a);	// no-warning
-  jrand48(a);	// no-warning
-  lcong48(a);	// no-warning
-  lrand48();	// no-warning
-  mrand48();	// no-warning
-  nrand48(a);	// no-warning
-  rand_r(&b);	// no-warning
-  random();	// no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/security-syntax-checks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/security-syntax-checks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/security-syntax-checks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,199 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -DUSE_BUILTINS -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -DVARIANT -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -analyze -DUSE_BUILTINS -DVARIANT -analyzer-checker=security.insecureAPI,security.FloatLoopCounter %s -verify
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else /* USE_BUILTINS */
-# define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-typedef typeof(sizeof(int)) size_t;
-
-
-// <rdar://problem/6336718> rule request: floating point used as loop 
-//  condition (FLP30-C, FLP-30-CPP)
-//
-// For reference: https://www.securecoding.cert.org/confluence/display/seccode/FLP30-C.+Do+not+use+floating+point+variables+as+loop+counters
-//
-void test_float_condition() {
-  for (float x = 0.1f; x <= 1.0f; x += 0.1f) {} // expected-warning{{Variable 'x' with floating point type 'float'}}
-  for (float x = 100000001.0f; x <= 100000010.0f; x += 1.0f) {} // expected-warning{{Variable 'x' with floating point type 'float'}}
-  for (float x = 100000001.0f; x <= 100000010.0f; x++ ) {} // expected-warning{{Variable 'x' with floating point type 'float'}}
-  for (double x = 100000001.0; x <= 100000010.0; x++ ) {} // expected-warning{{Variable 'x' with floating point type 'double'}}
-  for (double x = 100000001.0; ((x)) <= 100000010.0; ((x))++ ) {} // expected-warning{{Variable 'x' with floating point type 'double'}}
-  
-  for (double x = 100000001.0; 100000010.0 >= x; x = x + 1.0 ) {} // expected-warning{{Variable 'x' with floating point type 'double'}}
-  
-  int i = 0;
-  for (double x = 100000001.0; ((x)) <= 100000010.0; ((x))++, ++i ) {} // expected-warning{{Variable 'x' with floating point type 'double'}}
-  
-  typedef float FooType;
-  for (FooType x = 100000001.0f; x <= 100000010.0f; x++ ) {} // expected-warning{{Variable 'x' with floating point type 'FooType'}}
-}
-
-// <rdar://problem/6335715> rule request: gets() buffer overflow
-// Part of recommendation: 300-BSI (buildsecurityin.us-cert.gov)
-char* gets(char *buf);
-
-void test_gets() {
-  char buff[1024];
-  gets(buff); // expected-warning{{Call to function 'gets' is extremely insecure as it can always result in a buffer overflow}}
-}
-
-int getpw(unsigned int uid, char *buf);
-
-void test_getpw() {
-  char buff[1024];
-  getpw(2, buff); // expected-warning{{The getpw() function is dangerous as it may overflow the provided buffer. It is obsoleted by getpwuid()}}
-}
-
-// <rdar://problem/6337132> CWE-273: Failure to Check Whether Privileges Were
-//  Dropped Successfully
-typedef unsigned int __uint32_t;
-typedef __uint32_t __darwin_uid_t;
-typedef __uint32_t __darwin_gid_t;
-typedef __darwin_uid_t uid_t;
-typedef __darwin_gid_t gid_t;
-int setuid(uid_t);
-int setregid(gid_t, gid_t);
-int setreuid(uid_t, uid_t);
-extern void check(int);
-void abort(void);
-
-void test_setuid() 
-{
-  setuid(2); // expected-warning{{The return value from the call to 'setuid' is not checked.  If an error occurs in 'setuid', the following code may execute with unexpected privileges}}
-  setuid(0); // expected-warning{{The return value from the call to 'setuid' is not checked.  If an error occurs in 'setuid', the following code may execute with unexpected privileges}}
-  if (setuid (2) != 0)
-    abort();
-
-  // Currently the 'setuid' check is not flow-sensitive, and only looks
-  // at whether the function was called in a compound statement.  This
-  // will lead to false negatives, but there should be no false positives.
-  int t = setuid(2);  // no-warning
-  (void)setuid (2); // no-warning
-
-  check(setuid (2)); // no-warning
-
-  setreuid(2,2); // expected-warning{{The return value from the call to 'setreuid' is not checked.  If an error occurs in 'setreuid', the following code may execute with unexpected privileges}}
-  setregid(2,2); // expected-warning{{The return value from the call to 'setregid' is not checked.  If an error occurs in 'setregid', the following code may execute with unexpected privileges}}
-}
-
-// <rdar://problem/6337100> CWE-338: Use of cryptographically weak prng
-int      rand(void);
-double   drand48(void);
-double   erand48(unsigned short[3]);
-long     jrand48(unsigned short[3]);
-void     lcong48(unsigned short[7]);
-long     lrand48(void);
-long     mrand48(void);
-long     nrand48(unsigned short[3]);
-long     random(void);
-int      rand_r(unsigned *);
-
-void test_rand()
-{
-  unsigned short a[7];
-  unsigned b;
-  
-  rand();	// expected-warning{{Function 'rand' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  drand48();	// expected-warning{{Function 'drand48' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  erand48(a);	// expected-warning{{Function 'erand48' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  jrand48(a);	// expected-warning{{Function 'jrand48' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  lcong48(a);	// expected-warning{{Function 'lcong48' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  lrand48();	// expected-warning{{Function 'lrand48' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  mrand48();	// expected-warning{{Function 'mrand48' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  nrand48(a);	// expected-warning{{Function 'nrand48' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  rand_r(&b);	// expected-warning{{Function 'rand_r' is obsolete because it implements a poor random number generator.  Use 'arc4random' instead}}
-  random();	// expected-warning{{The 'random' function produces a sequence of values that an adversary may be able to predict.  Use 'arc4random' instead}}
-}
-
-char *mktemp(char *buf);
-
-void test_mktemp() {
-  char *x = mktemp("/tmp/zxcv"); // expected-warning{{Call to function 'mktemp' is insecure as it always creates or uses insecure temporary file}}
-}
-
-
-//===----------------------------------------------------------------------===
-// strcpy()
-//===----------------------------------------------------------------------===
-#ifdef VARIANT
-
-#define __strcpy_chk BUILTIN(__strcpy_chk)
-char *__strcpy_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define strcpy(a,b) __strcpy_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strcpy BUILTIN(strcpy)
-char *strcpy(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-void test_strcpy() {
-  char x[4];
-  char *y;
-
-  strcpy(x, y); //expected-warning{{Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119}}
-}
-
-//===----------------------------------------------------------------------===
-// strcat()
-//===----------------------------------------------------------------------===
-#ifdef VARIANT
-
-#define __strcat_chk BUILTIN(__strcat_chk)
-char *__strcat_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define strcat(a,b) __strcat_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strcat BUILTIN(strcat)
-char *strcat(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-void test_strcat() {
-  char x[4];
-  char *y;
-
-  strcat(x, y); //expected-warning{{Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119}}
-}
-
-//===----------------------------------------------------------------------===
-// vfork()
-//===----------------------------------------------------------------------===
-typedef int __int32_t;
-typedef __int32_t pid_t;
-pid_t vfork(void);
-
-void test_vfork() {
-  vfork(); //expected-warning{{Call to function 'vfork' is insecure as it can lead to denial of service situations in the parent process}}
-}
-
-//===----------------------------------------------------------------------===
-// mkstemp()
-//===----------------------------------------------------------------------===
-
-char *mkdtemp(char *template);
-int mkstemps(char *template, int suffixlen);
-int mkstemp(char *template);
-char *mktemp(char *template);
-
-void test_mkstemp() {
-  mkstemp("XX"); // expected-warning {{Call to 'mkstemp' should have at least 6 'X's in the format string to be secure (2 'X's seen)}}
-  mkstemp("XXXXXX");
-  mkstemp("XXXXXXX");
-  mkstemps("XXXXXX", 0);
-  mkstemps("XXXXXX", 1); // expected-warning {{5 'X's seen}}
-  mkstemps("XXXXXX", 2); // expected-warning {{Call to 'mkstemps' should have at least 6 'X's in the format string to be secure (4 'X's seen, 2 characters used as a suffix)}}
-  mkdtemp("XX"); // expected-warning {{2 'X's seen}}
-  mkstemp("X"); // expected-warning {{Call to 'mkstemp' should have at least 6 'X's in the format string to be secure (1 'X' seen)}}
-  mkdtemp("XXXXXX");
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/self-init.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/self-init.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/self-init.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,308 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=osx.cocoa.SelfInit -fobjc-default-synthesize-properties -analyzer-config ipa=dynamic -fno-builtin %s -verify
-// RUN: %clang_cc1 -analyze -analyzer-checker=osx.cocoa.SelfInit -fobjc-default-synthesize-properties -fno-builtin %s -verify
-
- at class NSZone, NSCoder;
- at protocol NSObject
-- (id)self;
- at end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end 
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end 
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-+ (id)allocWithZone:(NSZone *)zone;
-+ (id)alloc;
-- (void)dealloc;
--(id)class;
--(id)init;
--(id)release;
- at end
- at interface NSProxy <NSObject> {}
- at end
-
-//#import "Foundation/NSObject.h"
-typedef unsigned NSUInteger;
-typedef long NSInteger;
-
- at interface NSInvocation : NSObject {}
-- (void)getArgument:(void *)argumentLocation atIndex:(NSInteger)idx;
-- (void)setArgument:(void *)argumentLocation atIndex:(NSInteger)idx;
- at end
-
- at class NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end extern NSString * const NSBundleDidLoadNotification;
- at interface NSAssertionHandler : NSObject {}
-+ (NSAssertionHandler *)currentHandler;
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(NSString *)format,...;
- at end
-extern NSString * const NSConnectionReplyMode;
-
- at interface NSBundle : NSObject
-+(id)loadNibNamed:(NSString*)s owner:(id)o;
- at end
-
-void log(void *obj);
-extern void *somePtr;
-
- at class MyObj;
-extern id _commonInit(MyObj *self);
-
- at interface MyObj : NSObject {
-	id myivar;
-	int myint;
-}
--(id)_init;
--(id)initWithSomething:(int)x;
--(void)doSomething;
-+(id)commonInitMember:(id)s;
- at end
-
- at interface MyProxyObj : NSProxy {}
--(id)init;
- at end
-
- at implementation MyObj
-
--(id)init {
-  do { if (!((somePtr != 0))) { [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd object:self file:[NSString stringWithUTF8String:"init.m"] lineNumber:21 description:(@"Invalid parameter not satisfying: %s"), ("x != 0"), (0), (0), (0), (0)]; } } while(0);
-  return [self initWithSomething:0];
-}
-
--(id)init2 {
-  self = [self initWithSomething:0];
-  return self;
-}
-
--(id)init3 {
-	log([self class]);
-	return [self initWithSomething:0];
-}
-
--(id)init4 {
-	self = [super init];
-	if (self) {
-		log(&self);
-	}
-	return self;
-}
-
--(id)init4_w {
-  [super init];
-  if (self) {
-    log(&self);
-  }
-  return self; // expected-warning {{Returning 'self' while it is not set to the result of '[(super or self) init...]'}}
-}
-
-- (id)initWithSomething:(int)x {    
-	if ((self = [super init]))
-		myint = x;
-	return self;
-}
-
--(id)_init {
-	myivar = 0;
-	return self;
-}
-
--(id)init5 {
-  [NSBundle loadNibNamed:@"Window" owner:self];
-  return [self initWithSomething:0];
-}
-
--(id)init6 {
-  [NSBundle loadNibNamed:@"Window" owner:myivar]; // no-warning
-  return [self initWithSomething:0];
-}
-
--(id)init7 {
-  if (0 != (self = [self _init]))
-    myivar = 0;
-  return self;
-}
-
--(id)init8 {
-    if ((self = [super init])) {
-		log(&self);
-		myivar = 0;
-    }
-    return self;
-}
-
--(id)init9 {
-  [self doSomething];
-  return self; // no-warning
-}
-
--(id)init10 {
-  myivar = 0; // no-warning
-  return self;
-}
-
--(id)init11 {
-  return self; // no-warning
-}
-
--(id)init12 {
-	[super init];
-	return self; // expected-warning {{Returning 'self'}}
-}
-
--(id)init13 {
-	if (self == [super init]) {
-	  myivar = 0; // expected-warning {{Instance variable used}}
-	}
-	return self; // expected-warning {{Returning 'self'}}
-}
-
--(id)init14 {
-  if (!(self = _commonInit(self)))
-    return 0;
-  return self;
-}
-
--(id)init14_w {
-  [super init];
-  self = _commonInit(self);
-  return self; // expected-warning {{Returning 'self' while it is not set to the result of '[(super or self) init...]'}}
-}
-
--(id)init15 {
-  if (!(self = [super init]))
-    return 0;
-  return self;
-}
-
--(id)init16 {
-  somePtr = [super init];
-  self = somePtr;
-  myivar = 0; 
-  return self;
-}
-
--(id)init17 {
-  somePtr = [super init];
-  myivar = 0; // expected-warning {{Instance variable used}}
-  return 0;
-}
-
--(id)init18 {
-  self = [super init];
-  self = _commonInit(self);
-  return self;
-}
-
-+(id)commonInitMember:(id)s {
-  return s;
-}
-
--(id)init19 {
-  self = [super init];
-  self = [MyObj commonInitMember:self];
-  return self;
-}
-
--(id)init19_w {
-  [super init];
-  self = [MyObj commonInitMember:self];
-  return self; // expected-warning {{Returning 'self'}}
-}
-
--(void)doSomething {}
-
- at end
-
- at implementation MyProxyObj
-
-- (id)init { return self; }
-
- at end
-
-
-// Test for radar://10973514 : self should not be invalidated by a method call.
- at interface Test : NSObject {
-    NSInvocation *invocation_;
-}
- at end
- at implementation Test
--(id) initWithTarget:(id) rec selector:(SEL) cb {
-  if (self=[super init]) {
-    [invocation_ setArgument:&self atIndex:2];
-  }   
-  return self;
-}
- at end
-
-// Test radar:11235991 - passing self to a call to super.
- at protocol MyDelegate
- at end
- at interface Object : NSObject
-- (id) initWithObject: (id)i;
- at end
- at interface Derived: Object <MyDelegate>
-- (id) initWithInt: (int)t;
- at property (nonatomic, retain, readwrite) Object *size;
- at end
- at implementation Derived 
-- (id) initWithInt: (int)t {
-   if ((self = [super initWithObject:self])) {
-      _size = [[Object alloc] init];
-   }
-   return self;
-}
- at end
-
-// Test for radar://11125870: init constructing a special instance.
-typedef signed char BOOL;
- at interface MyClass : NSObject
- at end
- at implementation MyClass
-+ (id)specialInstance {
-    return [[MyClass alloc] init];
-}
-- (id)initSpecially:(BOOL)handleSpecially {
-    if ((self = [super init])) {
-        if (handleSpecially) {
-            self = [MyClass specialInstance];
-        }
-    }
-    return self;
-}
-- (id)initSelfSelf {
-    if ((self = [super init])) {
-      self = self;
-    }
-    return self;
-}
- at end
-
-// Test for radar://12838705.
- at interface ABCClass : NSObject
- at property (nonatomic, strong) NSString *foo;
- at property (nonatomic, strong) NSString *bar;
- at property (nonatomic, strong) NSString *baz;
- at end
-
- at implementation ABCClass
- at synthesize foo = foo_;
- at synthesize bar = bar_;
- at synthesize baz = baz_;
-
-- (id)initWithABC:(ABCClass *)abc {
-  self = [super init];
-  baz_ = abc->baz_;
-  return self;
-}
-
-- (ABCClass *)abcWithFoo:(NSString *)foo {
-  ABCClass *copy = [[ABCClass alloc] initWithABC:self];
-  return copy;
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/shallow-mode.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/shallow-mode.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/shallow-mode.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-config mode=shallow -verify %s
-// expected-no-diagnostics
-
-void clang_analyzer_checkInlined(unsigned);
-
-typedef signed char BOOL;
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at interface NSObject <NSObject> {}
-+(id)alloc;
--(id)init;
- at end
-
- at interface MyClass : NSObject
-+ (void)callee;
-+ (void)caller;
- at end
-
- at implementation MyClass
-+ (void)caller {
-    [MyClass callee];
-}
-+ (void)callee {
-  clang_analyzer_checkInlined(0); // The call is not inlined.
-}
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/simple-stream-checks.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/simple-stream-checks.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/simple-stream-checks.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.unix.SimpleStream -verify %s
-
-#include "Inputs/system-header-simulator-for-simple-stream.h"
-
-void checkDoubleFClose(int *Data) {
-  FILE *F = fopen("myfile.txt", "w");
-  if (F != 0) {
-    fputs ("fopen example", F);
-    if (!Data)
-      fclose(F);
-    else
-      fputc(*Data, F);
-    fclose(F); // expected-warning {{Closing a previously closed file stream}}
-  }
-}
-
-int checkLeak(int *Data) {
-  FILE *F = fopen("myfile.txt", "w");
-  if (F != 0) {
-    fputs ("fopen example", F);
-  }
-
-  if (Data) // expected-warning {{Opened file is never closed; potential resource leak}}
-    return *Data;
-  else
-    return 0;
-}
-
-void checkLeakFollowedByAssert(int *Data) {
-  FILE *F = fopen("myfile.txt", "w");
-  if (F != 0) {
-    fputs ("fopen example", F);
-    if (!Data)
-      exit(0);
-    fclose(F);
-  }
-}
-
-void CloseOnlyOnValidFileHandle() {
-  FILE *F = fopen("myfile.txt", "w");
-  if (F)
-    fclose(F);
-  int x = 0; // no warning
-}
-
-void leakOnEnfOfPath1(int *Data) {
-  FILE *F = fopen("myfile.txt", "w");
-} // expected-warning {{Opened file is never closed; potential resource leak}}
-
-void leakOnEnfOfPath2(int *Data) {
-  FILE *F = fopen("myfile.txt", "w");
-  return; // expected-warning {{Opened file is never closed; potential resource leak}}
-}
-
-FILE *leakOnEnfOfPath3(int *Data) {
-  FILE *F = fopen("myfile.txt", "w");
-  return F;
-}
-
-void myfclose(FILE *F);
-void SymbolEscapedThroughFunctionCall() {
-  FILE *F = fopen("myfile.txt", "w");
-  myfclose(F);
-  return; // no warning
-}
-
-FILE *GlobalF;
-void SymbolEscapedThroughAssignmentToGloabl() {
-  FILE *F = fopen("myfile.txt", "w");
-  GlobalF = F;
-  return; // no warning
-}
-
-void SymbolDoesNotEscapeThoughStringAPIs(char *Data) {
-  FILE *F = fopen("myfile.txt", "w");
-  fputc(*Data, F);
-  return; // expected-warning {{Opened file is never closed; potential resource leak}}
-}
-
-void passConstPointer(const FILE * F);
-void testPassConstPointer() {
-  FILE *F = fopen("myfile.txt", "w");
-  passConstPointer(F);
-  return; // expected-warning {{Opened file is never closed; potential resource leak}}
-}
-
-void testPassToSystemHeaderFunctionIndirectly() {
-  FileStruct fs;
-  fs.p = fopen("myfile.txt", "w");
-  fakeSystemHeaderCall(&fs);
-}  // expected-warning {{Opened file is never closed; potential resource leak}}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/sizeofpointer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/sizeofpointer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/sizeofpointer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.core.SizeofPtr -verify %s
-
-struct s {
-};
-
-int f(struct s *p) {
-  return sizeof(p); // expected-warning{{The code calls sizeof() on a pointer type. This can produce an unexpected result}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/stack-addr-ps.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/stack-addr-ps.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/stack-addr-ps.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,92 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -fblocks -verify %s
-
-int* f1() {
-  int x = 0;
-  return &x; // expected-warning{{Address of stack memory associated with local variable 'x' returned}} expected-warning{{address of stack memory associated with local variable 'x' returned}}
-}
-
-int* f2(int y) {
-  return &y;  // expected-warning{{Address of stack memory associated with local variable 'y' returned}} expected-warning{{address of stack memory associated with local variable 'y' returned}}
-}
-
-int* f3(int x, int *y) {
-  int w = 0;
-  
-  if (x)
-    y = &w;
-    
-  return y; // expected-warning{{Address of stack memory associated with local variable 'w' returned to caller}}
-}
-
-void* compound_literal(int x, int y) {
-  if (x)
-    return &(unsigned short){((unsigned short)0x22EF)}; // expected-warning{{Address of stack memory}}
-
-  int* array[] = {};
-  struct s { int z; double y; int w; };
-  
-  if (y)
-    return &((struct s){ 2, 0.4, 5 * 8 }); // expected-warning{{Address of stack memory}}
-    
-  
-  void* p = &((struct s){ 42, 0.4, x ? 42 : 0 });
-  return p; // expected-warning{{Address of stack memory}}
-}
-
-void* alloca_test() {
-  void* p = __builtin_alloca(10);
-  return p; // expected-warning{{Address of stack memory}}
-}
-
-int array_test(int x[2]) {
-  return x[0]; // no-warning
-}
-
-struct baz {
-  int x;
-  int y[2];
-};
-
-int struct_test(struct baz byVal, int flag) {
-  if (flag)  
-    return byVal.x; // no-warning
-  else {
-    return byVal.y[0]; // no-warning
-  }
-}
-
-typedef int (^ComparatorBlock)(int a, int b);
-ComparatorBlock test_return_block(void) {
-  // This block is a global since it has no captures.
-  ComparatorBlock b = ^int(int a, int b){ return a > b; };
-  return b; // no-warning
-}
-
-ComparatorBlock test_return_block_with_capture(int x) {
-  // This block is stack allocated because it has captures.
-  ComparatorBlock b = ^int(int a, int b){ return a > b + x; };
-  return b; // expected-warning{{Address of stack-allocated block}}
-}
-
-ComparatorBlock test_return_block_neg_aux(void);
-ComparatorBlock test_return_block_neg(void) {
-  ComparatorBlock b = test_return_block_neg_aux();
-  return b; // no-warning
-}
-
-// <rdar://problem/7523821>
-int *rdar_7523821_f2() {
-  int a[3];
-  return a; // expected-warning 2 {{ddress of stack memory associated with local variable 'a' returned}}
-};
-
-// Handle blocks that have no captures or are otherwise declared 'static'.
-// <rdar://problem/10348049>
-typedef int (^RDar10348049)(int value);
-RDar10348049 test_rdar10348049(void) {
-  static RDar10348049 b = ^int(int x) {
-    return x + 2;
-  };
-  return b; // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/stack-addr-ps.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/stack-addr-ps.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/stack-addr-ps.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -verify %s
-
-typedef __INTPTR_TYPE__ intptr_t;
-
-const int& g() {
-  int s;
-  return s; // expected-warning{{Address of stack memory associated with local variable 's' returned}} expected-warning{{reference to stack memory associated with local variable 's' returned}}
-}
-
-const int& g2() {
-  int s1;
-  int &s2 = s1; // expected-note {{binding reference variable 's2' here}}
-  return s2; // expected-warning{{Address of stack memory associated with local variable 's1' returned}} expected-warning {{reference to stack memory associated with local variable 's1' returned}}
-}
-
-const int& g3() {
-  int s1;
-  int &s2 = s1; // expected-note {{binding reference variable 's2' here}}
-  int &s3 = s2; // expected-note {{binding reference variable 's3' here}}
-  return s3; // expected-warning{{Address of stack memory associated with local variable 's1' returned}} expected-warning {{reference to stack memory associated with local variable 's1' returned}}
-}
-
-int get_value();
-
-const int &get_reference1() { return get_value(); } // expected-warning{{Address of stack memory associated with temporary object of type 'int' returned}} expected-warning {{returning reference to local temporary}}
-
-const int &get_reference2() {
-  const int &x = get_value(); // expected-note {{binding reference variable 'x' here}}
-  return x; // expected-warning{{Address of stack memory associated with temporary object of type 'int' returned}} expected-warning {{returning reference to local temporary}}
-}
-
-const int &get_reference3() {
-  const int &x1 = get_value(); // expected-note {{binding reference variable 'x1' here}}
-  const int &x2 = x1; // expected-note {{binding reference variable 'x2' here}}
-  return x2; // expected-warning{{Address of stack memory associated with temporary object of type 'int' returned}} expected-warning {{returning reference to local temporary}}
-}
-
-int global_var;
-int *f1() {
-  int &y = global_var;
-  return &y;
-}
-
-int *f2() {
-  int x1;
-  int &x2 = x1; // expected-note {{binding reference variable 'x2' here}}
-  return &x2; // expected-warning{{Address of stack memory associated with local variable 'x1' returned}} expected-warning {{address of stack memory associated with local variable 'x1' returned}}
-}
-
-int *f3() {
-  int x1;
-  int *const &x2 = &x1; // expected-note {{binding reference variable 'x2' here}}
-  return x2; // expected-warning {{address of stack memory associated with local variable 'x1' returned}} expected-warning {{Address of stack memory associated with local variable 'x1' returned to caller}}
-}
-
-const int *f4() {
-  const int &x1 = get_value(); // expected-note {{binding reference variable 'x1' here}}
-  const int &x2 = x1; // expected-note {{binding reference variable 'x2' here}}
-  return &x2; // expected-warning{{Address of stack memory associated with temporary object of type 'int' returned}} expected-warning {{returning address of local temporary}}
-}
-
-struct S {
-  int x;
-};
-
-int *mf() {
-  S s1;
-  S &s2 = s1; // expected-note {{binding reference variable 's2' here}}
-  int &x = s2.x; // expected-note {{binding reference variable 'x' here}}
-  return &x; // expected-warning{{Address of stack memory associated with local variable 's1' returned}} expected-warning {{address of stack memory associated with local variable 's1' returned}}
-}
-
-void *lf() {
-    label:
-    void *const &x = &&label; // expected-note {{binding reference variable 'x' here}}
-    return x; // expected-warning {{returning address of label, which is local}}
-}
-
-template <typename T>
-struct TS {
-  int *get();
-  int *m() {
-    int *&x = get();
-    return x;
-  }
-};
-
-// rdar://11345441
-int* f5() {
-  int& i = i; // expected-warning {{Assigned value is garbage or undefined}} expected-note {{binding reference variable 'i' here}} expected-warning{{reference 'i' is not yet bound to a value when used within its own initialization}}
-  return &i; // expected-warning {{address of stack memory associated with local variable 'i' returned}}
-}
-
-void *radar13226577() {
-    void *p = &p;
-    return p; // expected-warning {{stack memory associated with local variable 'p' returned to caller}}
-}
-
-namespace rdar13296133 {
-  class ConvertsToBool {
-  public:
-    operator bool() const { return this; }
-  };
-
-  class ConvertsToIntptr {
-  public:
-    operator intptr_t() const { return reinterpret_cast<intptr_t>(this); }
-  };
-
-  class ConvertsToPointer {
-  public:
-    operator const void *() const { return this; }
-  };
-
-  intptr_t returnAsNonLoc() {
-    ConvertsToIntptr obj;
-    return obj; // expected-warning{{Address of stack memory associated with local variable 'obj' returned to caller}}
-  }
-
-  bool returnAsBool() {
-    ConvertsToBool obj;
-    return obj; // no-warning
-  }
-
-  intptr_t returnAsNonLocViaPointer() {
-    ConvertsToPointer obj;
-    return reinterpret_cast<intptr_t>(static_cast<const void *>(obj)); // expected-warning{{Address of stack memory associated with local variable 'obj' returned to caller}}
-  }
-
-  bool returnAsBoolViaPointer() {
-    ConvertsToPointer obj;
-    return obj; // no-warning
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/stack-block-returned.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/stack-block-returned.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/stack-block-returned.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -fblocks -verify %s
-
-typedef void (^bptr)(void);
-
-bptr bf(int j) {
-  __block int i;
-  const bptr &qq = ^{ i=0; }; // expected-note {{binding reference variable 'qq' here}}
-  return qq; // expected-error {{returning block that lives on the local stack}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/stackaddrleak.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/stackaddrleak.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/stackaddrleak.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -std=c99 -Dbool=_Bool %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -x c++ %s
-
-typedef __INTPTR_TYPE__ intptr_t;
-char const *p;
-
-void f0() {
-  char const str[] = "This will change";
-  p = str;
-}  // expected-warning{{Address of stack memory associated with local variable 'str' is still referred to by the global variable 'p' upon returning to the caller.  This will be a dangling reference}}
-
-void f1() {
-  char const str[] = "This will change";
-  p = str; 
-  p = 0; // no-warning
-}
-
-void f2() {
-  p = (const char *) __builtin_alloca(12);
-} // expected-warning{{Address of stack memory allocated by call to alloca() on line 19 is still referred to by the global variable 'p' upon returning to the caller.  This will be a dangling reference}}
-
-// PR 7383 - previosly the stack address checker would crash on this example
-//  because it would attempt to do a direct load from 'pr7383_list'. 
-static int pr7383(__const char *__)
-{
-  return 0;
-}
-extern __const char *__const pr7383_list[];
-
-// Test that we catch multiple returns via globals when analyzing a function.
-void test_multi_return() {
-  static int *a, *b;
-  int x;
-  a = &x;
-  b = &x;
-} // expected-warning{{Address of stack memory associated with local variable 'x' is still referred to by the global variable 'a' upon returning}} expected-warning{{Address of stack memory associated with local variable 'x' is still referred to by the global variable 'b' upon returning}}
-
-intptr_t returnAsNonLoc() {
-  int x;
-  return (intptr_t)&x; // expected-warning{{Address of stack memory associated with local variable 'x' returned to caller}}
-}
-
-bool returnAsBool() {
-  int x;
-  return &x; // no-warning
-}
-
-void assignAsNonLoc() {
-  extern intptr_t ip;
-  int x;
-  ip = (intptr_t)&x;
-} // expected-warning{{Address of stack memory associated with local variable 'x' is still referred to by the global variable 'ip' upon returning}}
-
-void assignAsBool() {
-  extern bool b;
-  int x;
-  b = &x;
-} // no-warning

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/static_local.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/static_local.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/static_local.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-// Test reasoning about static locals in ObjCMethods. 
-int *getValidPtr();
- at interface Radar11275803
-- (int) useStaticInMethod;
- at end
- at implementation Radar11275803
-
-- (int) useStaticInMethod
-{
-  static int *explInit = 0;
-  static int implInit;
-  if (!implInit)
-    explInit = getValidPtr();
-  return *explInit; //no-warning
-}
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/stats.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/stats.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/stats.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// REQUIRES: asserts
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-stats %s 2>&1 | FileCheck %s
-
-void foo() {
-  int x;
-}
-// CHECK: ... Statistics Collected ...
-// CHECK:100 AnalysisConsumer - The % of reachable basic blocks.
-// CHECK:The # of times RemoveDeadBindings is called

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/stream.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/stream.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/stream.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.unix.Stream -analyzer-store region -verify %s
-
-typedef __typeof__(sizeof(int)) size_t;
-typedef struct _IO_FILE FILE;
-#define SEEK_SET	0	/* Seek from beginning of file.  */
-#define SEEK_CUR	1	/* Seek from current position.  */
-#define SEEK_END	2	/* Seek from end of file.  */
-extern FILE *fopen(const char *path, const char *mode);
-extern FILE *tmpfile(void);
-extern int fclose(FILE *fp);
-extern size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
-extern int fseek (FILE *__stream, long int __off, int __whence);
-extern long int ftell (FILE *__stream);
-extern void rewind (FILE *__stream);
-
-void f1(void) {
-  FILE *p = fopen("foo", "r");
-  char buf[1024];
-  fread(buf, 1, 1, p); // expected-warning {{Stream pointer might be NULL}}
-  fclose(p);
-}
-
-void f2(void) {
-  FILE *p = fopen("foo", "r");
-  fseek(p, 1, SEEK_SET); // expected-warning {{Stream pointer might be NULL}}
-  fclose(p);
-}
-
-void f3(void) {
-  FILE *p = fopen("foo", "r");
-  ftell(p); // expected-warning {{Stream pointer might be NULL}}
-  fclose(p);
-}
-
-void f4(void) {
-  FILE *p = fopen("foo", "r");
-  rewind(p); // expected-warning {{Stream pointer might be NULL}}
-  fclose(p);
-}
-
-void f5(void) {
-  FILE *p = fopen("foo", "r");
-  if (!p)
-    return;
-  fseek(p, 1, SEEK_SET); // no-warning
-  fseek(p, 1, 3); // expected-warning {{The whence argument to fseek() should be SEEK_SET, SEEK_END, or SEEK_CUR}}
-  fclose(p);
-}
-
-void f6(void) {
-  FILE *p = fopen("foo", "r");
-  fclose(p); 
-  fclose(p); // expected-warning {{Try to close a file Descriptor already closed. Cause undefined behaviour}}
-}
-
-void f7(void) {
-  FILE *p = tmpfile();
-  ftell(p); // expected-warning {{Stream pointer might be NULL}}
-  fclose(p);
-}
-
-void f8(int c) {
-  FILE *p = fopen("foo.c", "r");
-  if(c)
-    return; // expected-warning {{Opened File never closed. Potential Resource leak}}
-  fclose(p);
-}
-
-FILE *f9(void) {
-  FILE *p = fopen("foo.c", "r");
-  if (p)
-    return p; // no-warning
-  else
-    return 0;
-}
-
-void pr7831(FILE *fp) {
-  fclose(fp); // no-warning
-}
-
-// PR 8081 - null pointer crash when 'whence' is not an integer constant
-void pr8081(FILE *stream, long offset, int whence) {
-  fseek(stream, offset, whence);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/string-fail.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/string-fail.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/string-fail.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,113 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-// RUN: %clang_cc1 -analyze -DUSE_BUILTINS -analyzer-checker=core,unix.cstring,debug.ExprInspection -analyzer-store=region -verify %s
-// XFAIL: *
-
-// This file is for tests that may eventually go into string.c, or may be
-// deleted outright. At one point these tests passed, but only because we
-// weren't correctly modelling the behavior of the relevant string functions.
-// The tests aren't incorrect, but require the analyzer to be smarter about
-// conjured values than it currently is.
-
-//===----------------------------------------------------------------------===
-// Declarations
-//===----------------------------------------------------------------------===
-
-// Some functions are so similar to each other that they follow the same code
-// path, such as memcpy and __memcpy_chk, or memcmp and bcmp. If VARIANT is
-// defined, make sure to use the variants instead to make sure they are still
-// checked by the analyzer.
-
-// Some functions are implemented as builtins. These should be #defined as
-// BUILTIN(f), which will prepend "__builtin_" if USE_BUILTINS is defined.
-
-// Functions that have variants and are also available as builtins should be
-// declared carefully! See memcpy() for an example.
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else /* USE_BUILTINS */
-# define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-#define NULL 0
-typedef typeof(sizeof(int)) size_t;
-
-void clang_analyzer_eval(int);
-
-//===----------------------------------------------------------------------===
-// strnlen()
-//===----------------------------------------------------------------------===
-
-#define strnlen BUILTIN(strnlen)
-size_t strnlen(const char *s, size_t maxlen);
-
-void strnlen_liveness(const char *x) {
-  if (strnlen(x, 10) < 5)
-    return;
-  clang_analyzer_eval(strnlen(x, 10) < 5); // expected-warning{{FALSE}}
-}
-
-void strnlen_subregion() {
-  struct two_stringsn { char a[2], b[2]; };
-  extern void use_two_stringsn(struct two_stringsn *);
-
-  struct two_stringsn z;
-  use_two_stringsn(&z);
-
-  size_t a = strnlen(z.a, 10);
-  z.b[0] = 5;
-  size_t b = strnlen(z.a, 10);
-  if (a == 0)
-    clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
-  use_two_stringsn(&z);
-
-  size_t c = strnlen(z.a, 10);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-extern void use_stringn(char *);
-void strnlen_argument(char *x) {
-  size_t a = strnlen(x, 10);
-  size_t b = strnlen(x, 10);
-  if (a == 0)
-    clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
-  use_stringn(x);
-
-  size_t c = strnlen(x, 10);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-extern char global_strn[];
-void strnlen_global() {
-  size_t a = strnlen(global_strn, 10);
-  size_t b = strnlen(global_strn, 10);
-  if (a == 0)
-    clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
-  // Call a function with unknown effects, which should invalidate globals.
-  use_stringn(0);
-
-  size_t c = strnlen(global_strn, 10);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-void strnlen_indirect(char *x) {
-  size_t a = strnlen(x, 10);
-  char *p = x;
-  char **p2 = &p;
-  size_t b = strnlen(x, 10);
-  if (a == 0)
-    clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
-  extern void use_stringn_ptr(char*const*);
-  use_stringn_ptr(p2);
-
-  size_t c = strnlen(x, 10);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/string.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/string.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/string.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1106 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify %s
-// RUN: %clang_cc1 -analyze -DUSE_BUILTINS -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify %s
-// RUN: %clang_cc1 -analyze -DVARIANT -analyzer-checker=core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify %s
-// RUN: %clang_cc1 -analyze -DUSE_BUILTINS -DVARIANT -analyzer-checker=alpha.security.taint,core,unix.cstring,alpha.unix.cstring,debug.ExprInspection -analyzer-store=region -Wno-null-dereference -verify %s
-
-//===----------------------------------------------------------------------===
-// Declarations
-//===----------------------------------------------------------------------===
-
-// Some functions are so similar to each other that they follow the same code
-// path, such as memcpy and __memcpy_chk, or memcmp and bcmp. If VARIANT is
-// defined, make sure to use the variants instead to make sure they are still
-// checked by the analyzer.
-
-// Some functions are implemented as builtins. These should be #defined as
-// BUILTIN(f), which will prepend "__builtin_" if USE_BUILTINS is defined.
-
-// Functions that have variants and are also available as builtins should be
-// declared carefully! See memcpy() for an example.
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else /* USE_BUILTINS */
-# define BUILTIN(f) f
-#endif /* USE_BUILTINS */
-
-#define NULL 0
-typedef typeof(sizeof(int)) size_t;
-
-void clang_analyzer_eval(int);
-
-int scanf(const char *restrict format, ...);
-
-//===----------------------------------------------------------------------===
-// strlen()
-//===----------------------------------------------------------------------===
-
-#define strlen BUILTIN(strlen)
-size_t strlen(const char *s);
-
-void strlen_constant0() {
-  clang_analyzer_eval(strlen("123") == 3); // expected-warning{{TRUE}}
-}
-
-void strlen_constant1() {
-  const char *a = "123";
-  clang_analyzer_eval(strlen(a) == 3); // expected-warning{{TRUE}}
-}
-
-void strlen_constant2(char x) {
-  char a[] = "123";
-  clang_analyzer_eval(strlen(a) == 3); // expected-warning{{TRUE}}
-
-  a[0] = x;
-  clang_analyzer_eval(strlen(a) == 3); // expected-warning{{UNKNOWN}}
-}
-
-size_t strlen_null() {
-  return strlen(0); // expected-warning{{Null pointer argument in call to string length function}}
-}
-
-size_t strlen_fn() {
-  return strlen((char*)&strlen_fn); // expected-warning{{Argument to string length function is the address of the function 'strlen_fn', which is not a null-terminated string}}
-}
-
-size_t strlen_nonloc() {
-label:
-  return strlen((char*)&&label); // expected-warning{{Argument to string length function is the address of the label 'label', which is not a null-terminated string}}
-}
-
-void strlen_subregion() {
-  struct two_strings { char a[2], b[2]; };
-  extern void use_two_strings(struct two_strings *);
-
-  struct two_strings z;
-  use_two_strings(&z);
-
-  size_t a = strlen(z.a);
-  z.b[0] = 5;
-  size_t b = strlen(z.a);
-  if (a == 0)
-    clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
-  use_two_strings(&z);
-
-  size_t c = strlen(z.a);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-extern void use_string(char *);
-void strlen_argument(char *x) {
-  size_t a = strlen(x);
-  size_t b = strlen(x);
-  if (a == 0)
-    clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
-  use_string(x);
-
-  size_t c = strlen(x);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-extern char global_str[];
-void strlen_global() {
-  size_t a = strlen(global_str);
-  size_t b = strlen(global_str);
-  if (a == 0) {
-    clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-    // Make sure clang_analyzer_eval does not invalidate globals.
-    clang_analyzer_eval(strlen(global_str) == 0); // expected-warning{{TRUE}}    
-  }
-
-  // Call a function with unknown effects, which should invalidate globals.
-  use_string(0);
-
-  size_t c = strlen(global_str);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-void strlen_indirect(char *x) {
-  size_t a = strlen(x);
-  char *p = x;
-  char **p2 = &p;
-  size_t b = strlen(x);
-  if (a == 0)
-    clang_analyzer_eval(b == 0); // expected-warning{{TRUE}}
-
-  extern void use_string_ptr(char*const*);
-  use_string_ptr(p2);
-
-  size_t c = strlen(x);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-void strlen_indirect2(char *x) {
-  size_t a = strlen(x);
-  char *p = x;
-  char **p2 = &p;
-  extern void use_string_ptr2(char**);
-  use_string_ptr2(p2);
-
-  size_t c = strlen(x);
-  if (a == 0)
-    clang_analyzer_eval(c == 0); // expected-warning{{UNKNOWN}}
-}
-
-void strlen_liveness(const char *x) {
-  if (strlen(x) < 5)
-    return;
-  clang_analyzer_eval(strlen(x) < 5); // expected-warning{{FALSE}}
-}
-
-//===----------------------------------------------------------------------===
-// strnlen()
-//===----------------------------------------------------------------------===
-
-size_t strnlen(const char *s, size_t maxlen);
-
-void strnlen_constant0() {
-  clang_analyzer_eval(strnlen("123", 10) == 3); // expected-warning{{TRUE}}
-}
-
-void strnlen_constant1() {
-  const char *a = "123";
-  clang_analyzer_eval(strnlen(a, 10) == 3); // expected-warning{{TRUE}}
-}
-
-void strnlen_constant2(char x) {
-  char a[] = "123";
-  clang_analyzer_eval(strnlen(a, 10) == 3); // expected-warning{{TRUE}}
-  a[0] = x;
-  clang_analyzer_eval(strnlen(a, 10) == 3); // expected-warning{{UNKNOWN}}
-}
-
-void strnlen_constant4() {
-  clang_analyzer_eval(strnlen("123456", 3) == 3); // expected-warning{{TRUE}}
-}
-
-void strnlen_constant5() {
-  const char *a = "123456";
-  clang_analyzer_eval(strnlen(a, 3) == 3); // expected-warning{{TRUE}}
-}
-
-void strnlen_constant6(char x) {
-  char a[] = "123456";
-  clang_analyzer_eval(strnlen(a, 3) == 3); // expected-warning{{TRUE}}
-  a[0] = x;
-  clang_analyzer_eval(strnlen(a, 3) == 3); // expected-warning{{UNKNOWN}}
-}
-
-size_t strnlen_null() {
-  return strnlen(0, 3); // expected-warning{{Null pointer argument in call to string length function}}
-}
-
-size_t strnlen_fn() {
-  return strnlen((char*)&strlen_fn, 3); // expected-warning{{Argument to string length function is the address of the function 'strlen_fn', which is not a null-terminated string}}
-}
-
-size_t strnlen_nonloc() {
-label:
-  return strnlen((char*)&&label, 3); // expected-warning{{Argument to string length function is the address of the label 'label', which is not a null-terminated string}}
-}
-
-void strnlen_zero() {
-  clang_analyzer_eval(strnlen("abc", 0) == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(strnlen(NULL, 0) == 0); // expected-warning{{TRUE}}
-}
-
-size_t strnlen_compound_literal() {
-  // This used to crash because we don't model the string lengths of
-  // compound literals.
-  return strnlen((char[]) { 'a', 'b', 0 }, 1);
-}
-
-size_t strnlen_unknown_limit(float f) {
-  // This used to crash because we don't model the integer values of floats.
-  return strnlen("abc", (int)f);
-}
-
-void strnlen_is_not_strlen(char *x) {
-  clang_analyzer_eval(strnlen(x, 10) == strlen(x)); // expected-warning{{UNKNOWN}}
-}
-
-void strnlen_at_limit(char *x) {
-  size_t len = strnlen(x, 10);
-  clang_analyzer_eval(len <= 10); // expected-warning{{TRUE}}
-  clang_analyzer_eval(len == 10); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(len < 10); // expected-warning{{UNKNOWN}}
-}
-
-void strnlen_at_actual(size_t limit) {
-  size_t len = strnlen("abc", limit);
-  clang_analyzer_eval(len <= 3); // expected-warning{{TRUE}}
-  // This is due to eager assertion in strnlen.
-  if (limit == 0) {
-    clang_analyzer_eval(len == 0); // expected-warning{{TRUE}}
-  } else {
-    clang_analyzer_eval(len == 3); // expected-warning{{UNKNOWN}}
-    clang_analyzer_eval(len < 3); // expected-warning{{UNKNOWN}}
-  }
-}
-
-//===----------------------------------------------------------------------===
-// strcpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __strcpy_chk BUILTIN(__strcpy_chk)
-char *__strcpy_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define strcpy(a,b) __strcpy_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strcpy BUILTIN(strcpy)
-char *strcpy(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-
-void strcpy_null_dst(char *x) {
-  strcpy(NULL, x); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strcpy_null_src(char *x) {
-  strcpy(x, NULL); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strcpy_fn(char *x) {
-  strcpy(x, (char*)&strcpy_fn); // expected-warning{{Argument to string copy function is the address of the function 'strcpy_fn', which is not a null-terminated string}}
-}
-
-void strcpy_fn_const(char *x) {
-  strcpy(x, (const char*)&strcpy_fn); // expected-warning{{Argument to string copy function is the address of the function 'strcpy_fn', which is not a null-terminated string}}
-}
-
-extern int globalInt;
-void strcpy_effects(char *x, char *y) {
-  char a = x[0];
-  if (globalInt != 42)
-    return;
-
-  clang_analyzer_eval(strcpy(x, y) == x); // expected-warning{{TRUE}}
-  clang_analyzer_eval(strlen(x) == strlen(y)); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a == x[0]); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(globalInt == 42); // expected-warning{{TRUE}}
-}
-
-void strcpy_overflow(char *y) {
-  char x[4];
-  if (strlen(y) == 4)
-    strcpy(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-
-void strcpy_no_overflow(char *y) {
-  char x[4];
-  if (strlen(y) == 3)
-    strcpy(x, y); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// stpcpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __stpcpy_chk BUILTIN(__stpcpy_chk)
-char *__stpcpy_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define stpcpy(a,b) __stpcpy_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define stpcpy BUILTIN(stpcpy)
-char *stpcpy(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-
-void stpcpy_effect(char *x, char *y) {
-  char a = x[0];
-
-  clang_analyzer_eval(stpcpy(x, y) == &x[strlen(y)]); // expected-warning{{TRUE}}
-  clang_analyzer_eval(strlen(x) == strlen(y)); // expected-warning{{TRUE}}
-  clang_analyzer_eval(a == x[0]); // expected-warning{{UNKNOWN}}
-}
-
-void stpcpy_overflow(char *y) {
-  char x[4];
-  if (strlen(y) == 4)
-    stpcpy(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-
-void stpcpy_no_overflow(char *y) {
-  char x[4];
-  if (strlen(y) == 3)
-    stpcpy(x, y); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// strcat()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __strcat_chk BUILTIN(__strcat_chk)
-char *__strcat_chk(char *restrict s1, const char *restrict s2, size_t destlen);
-
-#define strcat(a,b) __strcat_chk(a,b,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strcat BUILTIN(strcat)
-char *strcat(char *restrict s1, const char *restrict s2);
-
-#endif /* VARIANT */
-
-
-void strcat_null_dst(char *x) {
-  strcat(NULL, x); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strcat_null_src(char *x) {
-  strcat(x, NULL); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strcat_fn(char *x) {
-  strcat(x, (char*)&strcat_fn); // expected-warning{{Argument to string copy function is the address of the function 'strcat_fn', which is not a null-terminated string}}
-}
-
-void strcat_effects(char *y) {
-  char x[8] = "123";
-  size_t orig_len = strlen(x);
-  char a = x[0];
-
-  if (strlen(y) != 4)
-    return;
-
-  clang_analyzer_eval(strcat(x, y) == x); // expected-warning{{TRUE}}
-  clang_analyzer_eval((int)strlen(x) == (orig_len + strlen(y))); // expected-warning{{TRUE}}
-}
-
-void strcat_overflow_0(char *y) {
-  char x[4] = "12";
-  if (strlen(y) == 4)
-    strcat(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-
-void strcat_overflow_1(char *y) {
-  char x[4] = "12";
-  if (strlen(y) == 3)
-    strcat(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-
-void strcat_overflow_2(char *y) {
-  char x[4] = "12";
-  if (strlen(y) == 2)
-    strcat(x, y); // expected-warning{{String copy function overflows destination buffer}}
-}
-
-void strcat_no_overflow(char *y) {
-  char x[5] = "12";
-  if (strlen(y) == 2)
-    strcat(x, y); // no-warning
-}
-
-void strcat_symbolic_dst_length(char *dst) {
-	strcat(dst, "1234");
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-}
-
-void strcat_symbolic_dst_length_taint(char *dst) {
-  scanf("%s", dst); // Taint data.
-  strcat(dst, "1234");
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-}
-
-void strcat_unknown_src_length(char *src, int offset) {
-	char dst[8] = "1234";
-	strcat(dst, &src[offset]);
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-}
-
-// There is no strcat_unknown_dst_length because if we can't get a symbolic
-// length for the "before" strlen, we won't be able to set one for "after".
-
-void strcat_too_big(char *dst, char *src) {
-	if (strlen(dst) != (((size_t)0) - 2))
-		return;
-	if (strlen(src) != 2)
-		return;
-	strcat(dst, src); // expected-warning{{This expression will create a string whose length is too big to be represented as a size_t}}
-}
-
-
-//===----------------------------------------------------------------------===
-// strncpy()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __strncpy_chk BUILTIN(__strncpy_chk)
-char *__strncpy_chk(char *restrict s1, const char *restrict s2, size_t n, size_t destlen);
-
-#define strncpy(a,b,n) __strncpy_chk(a,b,n,(size_t)-1)
-
-#else /* VARIANT */
-
-#define strncpy BUILTIN(strncpy)
-char *strncpy(char *restrict s1, const char *restrict s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void strncpy_null_dst(char *x) {
-  strncpy(NULL, x, 5); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strncpy_null_src(char *x) {
-  strncpy(x, NULL, 5); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strncpy_fn(char *x) {
-  strncpy(x, (char*)&strcpy_fn, 5); // expected-warning{{Argument to string copy function is the address of the function 'strcpy_fn', which is not a null-terminated string}}
-}
-
-void strncpy_effects(char *x, char *y) {
-  char a = x[0];
-
-  clang_analyzer_eval(strncpy(x, y, 5) == x); // expected-warning{{TRUE}}
-  clang_analyzer_eval(strlen(x) == strlen(y)); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(a == x[0]); // expected-warning{{UNKNOWN}}
-}
-
-void strncpy_overflow(char *y) {
-  char x[4];
-  if (strlen(y) == 4)
-    strncpy(x, y, 5); // expected-warning{{Size argument is greater than the length of the destination buffer}}
-}
-
-void strncpy_no_overflow(char *y) {
-  char x[4];
-  if (strlen(y) == 3)
-    strncpy(x, y, 5); // expected-warning{{Size argument is greater than the length of the destination buffer}}
-}
-
-void strncpy_no_overflow2(char *y, int n) {
-	if (n <= 4)
-		return;
-
-  char x[4];
-  if (strlen(y) == 3)
-    strncpy(x, y, n); // expected-warning{{Size argument is greater than the length of the destination buffer}}
-}
-
-void strncpy_truncate(char *y) {
-  char x[4];
-  if (strlen(y) == 4)
-    strncpy(x, y, 3); // no-warning
-}
-
-void strncpy_no_truncate(char *y) {
-  char x[4];
-  if (strlen(y) == 3)
-    strncpy(x, y, 3); // no-warning
-}
-
-void strncpy_exactly_matching_buffer(char *y) {
-	char x[4];
-	strncpy(x, y, 4); // no-warning
-
-	// strncpy does not null-terminate, so we have no idea what the strlen is
-	// after this.
-  clang_analyzer_eval(strlen(x) > 4); // expected-warning{{UNKNOWN}}
-}
-
-void strncpy_zero(char *src) {
-  char dst[] = "123";
-  strncpy(dst, src, 0); // no-warning
-}
-
-void strncpy_empty() {
-  char dst[] = "123";
-  char src[] = "";
-  strncpy(dst, src, 4); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// strncat()
-//===----------------------------------------------------------------------===
-
-#ifdef VARIANT
-
-#define __strncat_chk BUILTIN(__strncat_chk)
-char *__strncat_chk(char *restrict s1, const char *restrict s2, size_t n, size_t destlen);
-
-#define strncat(a,b,c) __strncat_chk(a,b,c, (size_t)-1)
-
-#else /* VARIANT */
-
-#define strncat BUILTIN(strncat)
-char *strncat(char *restrict s1, const char *restrict s2, size_t n);
-
-#endif /* VARIANT */
-
-
-void strncat_null_dst(char *x) {
-  strncat(NULL, x, 4); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strncat_null_src(char *x) {
-  strncat(x, NULL, 4); // expected-warning{{Null pointer argument in call to string copy function}}
-}
-
-void strncat_fn(char *x) {
-  strncat(x, (char*)&strncat_fn, 4); // expected-warning{{Argument to string copy function is the address of the function 'strncat_fn', which is not a null-terminated string}}
-}
-
-void strncat_effects(char *y) {
-  char x[8] = "123";
-  size_t orig_len = strlen(x);
-  char a = x[0];
-
-  if (strlen(y) != 4)
-    return;
-
-  clang_analyzer_eval(strncat(x, y, strlen(y)) == x); // expected-warning{{TRUE}}
-  clang_analyzer_eval(strlen(x) == (orig_len + strlen(y))); // expected-warning{{TRUE}}
-}
-
-void strncat_overflow_0(char *y) {
-  char x[4] = "12";
-  if (strlen(y) == 4)
-    strncat(x, y, strlen(y)); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void strncat_overflow_1(char *y) {
-  char x[4] = "12";
-  if (strlen(y) == 3)
-    strncat(x, y, strlen(y)); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void strncat_overflow_2(char *y) {
-  char x[4] = "12";
-  if (strlen(y) == 2)
-    strncat(x, y, strlen(y)); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void strncat_overflow_3(char *y) {
-  char x[4] = "12";
-  if (strlen(y) == 4)
-    strncat(x, y, 2); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-void strncat_no_overflow_1(char *y) {
-  char x[5] = "12";
-  if (strlen(y) == 2)
-    strncat(x, y, strlen(y)); // no-warning
-}
-
-void strncat_no_overflow_2(char *y) {
-  char x[4] = "12";
-  if (strlen(y) == 4)
-    strncat(x, y, 1); // no-warning
-}
-
-void strncat_symbolic_dst_length(char *dst) {
-  strncat(dst, "1234", 5);
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-}
-
-void strncat_symbolic_src_length(char *src) {
-  char dst[8] = "1234";
-  strncat(dst, src, 3);
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-
-  char dst2[8] = "1234";
-  strncat(dst2, src, 4); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-void strncat_unknown_src_length(char *src, int offset) {
-  char dst[8] = "1234";
-  strncat(dst, &src[offset], 3);
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-
-  char dst2[8] = "1234";
-  strncat(dst2, &src[offset], 4); // expected-warning{{Size argument is greater than the free space in the destination buffer}}
-}
-
-// There is no strncat_unknown_dst_length because if we can't get a symbolic
-// length for the "before" strlen, we won't be able to set one for "after".
-
-void strncat_symbolic_limit(unsigned limit) {
-  char dst[6] = "1234";
-  char src[] = "567";
-  strncat(dst, src, limit); // no-warning
-
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-  clang_analyzer_eval(strlen(dst) == 4); // expected-warning{{UNKNOWN}}
-}
-
-void strncat_unknown_limit(float limit) {
-  char dst[6] = "1234";
-  char src[] = "567";
-  strncat(dst, src, (size_t)limit); // no-warning
-
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{TRUE}}
-  clang_analyzer_eval(strlen(dst) == 4); // expected-warning{{UNKNOWN}}
-}
-
-void strncat_too_big(char *dst, char *src) {
-  if (strlen(dst) != (((size_t)0) - 2))
-    return;
-  if (strlen(src) != 2)
-    return;
-  strncat(dst, src, 2); // expected-warning{{This expression will create a string whose length is too big to be represented as a size_t}}
-}
-
-void strncat_zero(char *src) {
-  char dst[] = "123";
-  strncat(dst, src, 0); // no-warning
-}
-
-void strncat_empty() {
-  char dst[8] = "123";
-  char src[] = "";
-  strncat(dst, src, 4); // no-warning
-}
-
-//===----------------------------------------------------------------------===
-// strcmp()
-//===----------------------------------------------------------------------===
-
-#define strcmp BUILTIN(strcmp)
-int strcmp(const char * s1, const char * s2);
-
-void strcmp_constant0() {
-  clang_analyzer_eval(strcmp("123", "123") == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_constant_and_var_0() {
-  char *x = "123";
-  clang_analyzer_eval(strcmp(x, "123") == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_constant_and_var_1() {
-  char *x = "123";
-  clang_analyzer_eval(strcmp("123", x) == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_0() {
-  char *x = "123";
-  char *y = "123";
-  clang_analyzer_eval(strcmp(x, y) == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_1() {
-  char *x = "234";
-  char *y = "123";
-  clang_analyzer_eval(strcmp(x, y) == 1); // expected-warning{{TRUE}}
-}
-
-void strcmp_2() {
-  char *x = "123";
-  char *y = "234";
-  clang_analyzer_eval(strcmp(x, y) == -1); // expected-warning{{TRUE}}
-}
-
-void strcmp_null_0() {
-  char *x = NULL;
-  char *y = "123";
-  strcmp(x, y); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strcmp_null_1() {
-  char *x = "123";
-  char *y = NULL;
-  strcmp(x, y); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strcmp_diff_length_0() {
-  char *x = "12345";
-  char *y = "234";
-  clang_analyzer_eval(strcmp(x, y) == -1); // expected-warning{{TRUE}}
-}
-
-void strcmp_diff_length_1() {
-  char *x = "123";
-  char *y = "23456";
-  clang_analyzer_eval(strcmp(x, y) == -1); // expected-warning{{TRUE}}
-}
-
-void strcmp_diff_length_2() {
-  char *x = "12345";
-  char *y = "123";
-  clang_analyzer_eval(strcmp(x, y) == 1); // expected-warning{{TRUE}}
-}
-
-void strcmp_diff_length_3() {
-  char *x = "123";
-  char *y = "12345";
-  clang_analyzer_eval(strcmp(x, y) == -1); // expected-warning{{TRUE}}
-}
-
-void strcmp_embedded_null () {
-	clang_analyzer_eval(strcmp("\0z", "\0y") == 0); // expected-warning{{TRUE}}
-}
-
-void strcmp_unknown_arg (char *unknown) {
-	clang_analyzer_eval(strcmp(unknown, unknown) == 0); // expected-warning{{TRUE}}
-}
-
-//===----------------------------------------------------------------------===
-// strncmp()
-//===----------------------------------------------------------------------===
-
-#define strncmp BUILTIN(strncmp)
-int strncmp(const char *s1, const char *s2, size_t n);
-
-void strncmp_constant0() {
-  clang_analyzer_eval(strncmp("123", "123", 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_constant_and_var_0() {
-  char *x = "123";
-  clang_analyzer_eval(strncmp(x, "123", 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_constant_and_var_1() {
-  char *x = "123";
-  clang_analyzer_eval(strncmp("123", x, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_0() {
-  char *x = "123";
-  char *y = "123";
-  clang_analyzer_eval(strncmp(x, y, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_1() {
-  char *x = "234";
-  char *y = "123";
-  clang_analyzer_eval(strncmp(x, y, 3) == 1); // expected-warning{{TRUE}}
-}
-
-void strncmp_2() {
-  char *x = "123";
-  char *y = "234";
-  clang_analyzer_eval(strncmp(x, y, 3) == -1); // expected-warning{{TRUE}}
-}
-
-void strncmp_null_0() {
-  char *x = NULL;
-  char *y = "123";
-  strncmp(x, y, 3); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strncmp_null_1() {
-  char *x = "123";
-  char *y = NULL;
-  strncmp(x, y, 3); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strncmp_diff_length_0() {
-  char *x = "12345";
-  char *y = "234";
-  clang_analyzer_eval(strncmp(x, y, 5) == -1); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_1() {
-  char *x = "123";
-  char *y = "23456";
-  clang_analyzer_eval(strncmp(x, y, 5) == -1); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_2() {
-  char *x = "12345";
-  char *y = "123";
-  clang_analyzer_eval(strncmp(x, y, 5) == 1); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_3() {
-  char *x = "123";
-  char *y = "12345";
-  clang_analyzer_eval(strncmp(x, y, 5) == -1); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_4() {
-  char *x = "123";
-  char *y = "12345";
-  clang_analyzer_eval(strncmp(x, y, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_5() {
-  char *x = "012";
-  char *y = "12345";
-  clang_analyzer_eval(strncmp(x, y, 3) == -1); // expected-warning{{TRUE}}
-}
-
-void strncmp_diff_length_6() {
-  char *x = "234";
-  char *y = "12345";
-  clang_analyzer_eval(strncmp(x, y, 3) == 1); // expected-warning{{TRUE}}
-}
-
-void strncmp_embedded_null () {
-	clang_analyzer_eval(strncmp("ab\0zz", "ab\0yy", 4) == 0); // expected-warning{{TRUE}}
-}
-
-//===----------------------------------------------------------------------===
-// strcasecmp()
-//===----------------------------------------------------------------------===
-
-#define strcasecmp BUILTIN(strcasecmp)
-int strcasecmp(const char *s1, const char *s2);
-
-void strcasecmp_constant0() {
-  clang_analyzer_eval(strcasecmp("abc", "Abc") == 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_constant_and_var_0() {
-  char *x = "abc";
-  clang_analyzer_eval(strcasecmp(x, "Abc") == 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_constant_and_var_1() {
-  char *x = "abc";
-  clang_analyzer_eval(strcasecmp("Abc", x) == 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_0() {
-  char *x = "abc";
-  char *y = "Abc";
-  clang_analyzer_eval(strcasecmp(x, y) == 0); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_1() {
-  char *x = "Bcd";
-  char *y = "abc";
-  clang_analyzer_eval(strcasecmp(x, y) == 1); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_2() {
-  char *x = "abc";
-  char *y = "Bcd";
-  clang_analyzer_eval(strcasecmp(x, y) == -1); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_null_0() {
-  char *x = NULL;
-  char *y = "123";
-  strcasecmp(x, y); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strcasecmp_null_1() {
-  char *x = "123";
-  char *y = NULL;
-  strcasecmp(x, y); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strcasecmp_diff_length_0() {
-  char *x = "abcde";
-  char *y = "aBd";
-  clang_analyzer_eval(strcasecmp(x, y) == -1); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_diff_length_1() {
-  char *x = "abc";
-  char *y = "aBdef";
-  clang_analyzer_eval(strcasecmp(x, y) == -1); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_diff_length_2() {
-  char *x = "aBcDe";
-  char *y = "abc";
-  clang_analyzer_eval(strcasecmp(x, y) == 1); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_diff_length_3() {
-  char *x = "aBc";
-  char *y = "abcde";
-  clang_analyzer_eval(strcasecmp(x, y) == -1); // expected-warning{{TRUE}}
-}
-
-void strcasecmp_embedded_null () {
-	clang_analyzer_eval(strcasecmp("ab\0zz", "ab\0yy") == 0); // expected-warning{{TRUE}}
-}
-
-//===----------------------------------------------------------------------===
-// strncasecmp()
-//===----------------------------------------------------------------------===
-
-#define strncasecmp BUILTIN(strncasecmp)
-int strncasecmp(const char *s1, const char *s2, size_t n);
-
-void strncasecmp_constant0() {
-  clang_analyzer_eval(strncasecmp("abc", "Abc", 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_constant_and_var_0() {
-  char *x = "abc";
-  clang_analyzer_eval(strncasecmp(x, "Abc", 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_constant_and_var_1() {
-  char *x = "abc";
-  clang_analyzer_eval(strncasecmp("Abc", x, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_0() {
-  char *x = "abc";
-  char *y = "Abc";
-  clang_analyzer_eval(strncasecmp(x, y, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_1() {
-  char *x = "Bcd";
-  char *y = "abc";
-  clang_analyzer_eval(strncasecmp(x, y, 3) == 1); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_2() {
-  char *x = "abc";
-  char *y = "Bcd";
-  clang_analyzer_eval(strncasecmp(x, y, 3) == -1); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_null_0() {
-  char *x = NULL;
-  char *y = "123";
-  strncasecmp(x, y, 3); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strncasecmp_null_1() {
-  char *x = "123";
-  char *y = NULL;
-  strncasecmp(x, y, 3); // expected-warning{{Null pointer argument in call to string comparison function}}
-}
-
-void strncasecmp_diff_length_0() {
-  char *x = "abcde";
-  char *y = "aBd";
-  clang_analyzer_eval(strncasecmp(x, y, 5) == -1); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_1() {
-  char *x = "abc";
-  char *y = "aBdef";
-  clang_analyzer_eval(strncasecmp(x, y, 5) == -1); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_2() {
-  char *x = "aBcDe";
-  char *y = "abc";
-  clang_analyzer_eval(strncasecmp(x, y, 5) == 1); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_3() {
-  char *x = "aBc";
-  char *y = "abcde";
-  clang_analyzer_eval(strncasecmp(x, y, 5) == -1); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_4() {
-  char *x = "abcde";
-  char *y = "aBc";
-  clang_analyzer_eval(strncasecmp(x, y, 3) == 0); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_5() {
-  char *x = "abcde";
-  char *y = "aBd";
-  clang_analyzer_eval(strncasecmp(x, y, 3) == -1); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_diff_length_6() {
-  char *x = "aBDe";
-  char *y = "abc";
-  clang_analyzer_eval(strncasecmp(x, y, 3) == 1); // expected-warning{{TRUE}}
-}
-
-void strncasecmp_embedded_null () {
-	clang_analyzer_eval(strncasecmp("ab\0zz", "ab\0yy", 4) == 0); // expected-warning{{TRUE}}
-}
-
-//===----------------------------------------------------------------------===
-// strsep()
-//===----------------------------------------------------------------------===
-
-char *strsep(char **stringp, const char *delim);
-
-void strsep_null_delim(char *s) {
-  strsep(&s, NULL); // expected-warning{{Null pointer argument in call to strsep()}}
-}
-
-void strsep_null_search() {
-  strsep(NULL, ""); // expected-warning{{Null pointer argument in call to strsep()}}
-}
-
-void strsep_return_original_pointer(char *s) {
-  char *original = s;
-  char *result = strsep(&s, ""); // no-warning
-  clang_analyzer_eval(original == result); // expected-warning{{TRUE}}
-}
-
-void strsep_null_string() {
-  char *s = NULL;
-  char *result = strsep(&s, ""); // no-warning
-  clang_analyzer_eval(result == NULL); // expected-warning{{TRUE}}
-}
-
-void strsep_changes_input_pointer(char *s) {
-  char *original = s;
-  strsep(&s, ""); // no-warning
-  clang_analyzer_eval(s == original); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(s == NULL); // expected-warning{{UNKNOWN}}
-
-  // Check that the value is symbolic.
-  if (s == NULL) {
-    clang_analyzer_eval(s == NULL); // expected-warning{{TRUE}}
-  }
-}
-
-void strsep_changes_input_string() {
-  char str[] = "abc";
-
-  clang_analyzer_eval(str[1] == 'b'); // expected-warning{{TRUE}}
-
-  char *s = str;
-  strsep(&s, "b"); // no-warning
-
-  // The real strsep will change the first delimiter it finds into a NUL
-  // character. For now, we just model the invalidation.
-  clang_analyzer_eval(str[1] == 'b'); // expected-warning{{UNKNOWN}}
-}
-
-//===----------------------------------------------------------------------===
-// FIXMEs
-//===----------------------------------------------------------------------===
-
-// The analyzer_eval call below should evaluate to true. We are being too 
-// aggressive in marking the (length of) src symbol dead. The length of dst 
-// depends on src. This could be explicitely specified in the checker or the 
-// logic for handling MetadataSymbol in SymbolManager needs to change.
-void strcat_symbolic_src_length(char *src) {
-	char dst[8] = "1234";
-	strcat(dst, src);
-  clang_analyzer_eval(strlen(dst) >= 4); // expected-warning{{UNKNOWN}}
-}
-
-// The analyzer_eval call below should evaluate to true. Most likely the same
-// issue as the test above.
-void strncpy_exactly_matching_buffer2(char *y) {
-	if (strlen(y) >= 4)
-		return;
-
-	char x[4];
-	strncpy(x, y, 4); // no-warning
-
-	// This time, we know that y fits in x anyway.
-  clang_analyzer_eval(strlen(x) <= 3); // expected-warning{{UNKNOWN}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/superclass.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/superclass.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/superclass.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,222 +0,0 @@
-// RUN: %clang_cc1 -fblocks -analyze -analyzer-checker=alpha.osx.cocoa.MissingSuperCall -verify -Wno-objc-root-class %s
-
-// Define used Classes
- at protocol NSObject
-- (id)retain;
-- (oneway void)release;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
- at end
-typedef char BOOL;
-typedef double NSTimeInterval;
-typedef enum UIViewAnimationOptions {
-    UIViewAnimationOptionLayoutSubviews = 1 <<  0
-} UIViewAnimationOptions;
- at interface NSCoder : NSObject {}
- at end
-
-// Define the Superclasses for our Checks
- at interface UIViewController : NSObject {}
-- (void)addChildViewController:(UIViewController *)childController;
-- (void)viewDidAppear:(BOOL)animated;
-- (void)viewDidDisappear:(BOOL)animated;
-- (void)viewDidUnload;
-- (void)viewDidLoad;
-- (void)viewWillUnload;
-- (void)viewWillAppear:(BOOL)animated;
-- (void)viewWillDisappear:(BOOL)animated;
-- (void)didReceiveMemoryWarning;
-- (void)removeFromParentViewController;
-- (void)transitionFromViewController:(UIViewController *)fromViewController
-  toViewController:(UIViewController *)toViewController 
-  duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options
-  animations:(void (^)(void))animations
-  completion:(void (^)(BOOL finished))completion;
- at end
- at interface UIResponder : NSObject {}
-- (BOOL)resignFirstResponder;
- at end
- at interface NSResponder : NSObject {}
-- (void)restoreStateWithCoder:(NSCoder *)coder;
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder;
- at end
- at interface NSDocument : NSObject {}
-- (void)restoreStateWithCoder:(NSCoder *)coder;
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder;
- at end
-
-// Checks
-
-// Do not warn if UIViewController/*Responder/NSDocument is not our superclass
- at interface TestA 
- at end
- at implementation TestA
-
-- (void)addChildViewController:(UIViewController *)childController {}
-- (void)viewDidAppear:(BOOL)animated {}
-- (void)viewDidDisappear:(BOOL)animated {}
-- (void)viewDidUnload {}
-- (void)viewDidLoad {}
-- (void)viewWillUnload {}
-- (void)viewWillAppear:(BOOL)animated {}
-- (void)viewWillDisappear:(BOOL)animated {}
-- (void)didReceiveMemoryWarning {}
-- (void)removeFromParentViewController {}
-- (BOOL)resignFirstResponder { return 0; }
-- (void)restoreStateWithCoder:(NSCoder *)coder {}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {}
- at end
-
-// Warn if UIViewController is our superclass and we do not call super
- at interface TestB : UIViewController {}
- at end
- at implementation TestB
-
-- (void)addChildViewController:(UIViewController *)childController {  
-  int addChildViewController = 5;
-  for (int i = 0; i < addChildViewController; i++)
-  	[self viewDidAppear:i];
-} // expected-warning {{The 'addChildViewController:' instance method in UIViewController subclass 'TestB' is missing a [super addChildViewController:] call}}
-- (void)viewDidAppear:(BOOL)animated {} // expected-warning {{The 'viewDidAppear:' instance method in UIViewController subclass 'TestB' is missing a [super viewDidAppear:] call}}
-- (void)viewDidDisappear:(BOOL)animated {} // expected-warning {{The 'viewDidDisappear:' instance method in UIViewController subclass 'TestB' is missing a [super viewDidDisappear:] call}}
-- (void)viewDidUnload {} // expected-warning {{The 'viewDidUnload' instance method in UIViewController subclass 'TestB' is missing a [super viewDidUnload] call}}
-- (void)viewDidLoad {} // expected-warning {{The 'viewDidLoad' instance method in UIViewController subclass 'TestB' is missing a [super viewDidLoad] call}}
-- (void)viewWillUnload {} // expected-warning {{The 'viewWillUnload' instance method in UIViewController subclass 'TestB' is missing a [super viewWillUnload] call}}
-- (void)viewWillAppear:(BOOL)animated {} // expected-warning {{The 'viewWillAppear:' instance method in UIViewController subclass 'TestB' is missing a [super viewWillAppear:] call}}
-- (void)viewWillDisappear:(BOOL)animated {} // expected-warning {{The 'viewWillDisappear:' instance method in UIViewController subclass 'TestB' is missing a [super viewWillDisappear:] call}}
-- (void)didReceiveMemoryWarning {} // expected-warning {{The 'didReceiveMemoryWarning' instance method in UIViewController subclass 'TestB' is missing a [super didReceiveMemoryWarning] call}}
-- (void)removeFromParentViewController {} // expected-warning {{The 'removeFromParentViewController' instance method in UIViewController subclass 'TestB' is missing a [super removeFromParentViewController] call}}
-
-// Do not warn for methods were it shouldn't
-- (void)shouldAutorotate {}
- at end
-
-// Do not warn if UIViewController is our superclass but we did call super
- at interface TestC : UIViewController {}
- at end
- at implementation TestC
-
-- (BOOL)methodReturningStuff {
-  return 1;
-}
-
-- (void)methodDoingStuff {
-  [super removeFromParentViewController];
-}
-
-- (void)addChildViewController:(UIViewController *)childController {
-  [super addChildViewController:childController];
-}
-
-- (void)viewDidAppear:(BOOL)animated {
-  [super viewDidAppear:animated];
-} 
-
-- (void)viewDidDisappear:(BOOL)animated {
-  [super viewDidDisappear:animated]; 
-}
-
-- (void)viewDidUnload {
-  [super viewDidUnload];
-}
-
-- (void)viewDidLoad {
-  [super viewDidLoad];
-}
-
-- (void)viewWillUnload {
-  [super viewWillUnload];
-} 
-
-- (void)viewWillAppear:(BOOL)animated {
-  int i = 0; // Also don't start warning just because we do additional stuff
-  i++;
-  [self viewDidDisappear:i];
-  [super viewWillAppear:animated];
-} 
-
-- (void)viewWillDisappear:(BOOL)animated {
-  [super viewWillDisappear:[self methodReturningStuff]];
-}
-
-- (void)didReceiveMemoryWarning {
-  [super didReceiveMemoryWarning];
-}
-
-// We expect a warning here because at the moment the super-call can't be 
-// done from another method.
-- (void)removeFromParentViewController { 
-  [self methodDoingStuff]; 
-} // expected-warning {{The 'removeFromParentViewController' instance method in UIViewController subclass 'TestC' is missing a [super removeFromParentViewController] call}}
- at end
-
-
-// Do warn for UIResponder subclasses that don't call super
- at interface TestD : UIResponder {}
- at end
- at implementation TestD
-
-- (BOOL)resignFirstResponder {
-  return 0;
-} // expected-warning {{The 'resignFirstResponder' instance method in UIResponder subclass 'TestD' is missing a [super resignFirstResponder] call}}
- at end
-
-// Do not warn for UIResponder subclasses that do the right thing
- at interface TestE : UIResponder {}
- at end
- at implementation TestE
-
-- (BOOL)resignFirstResponder {
-  return [super resignFirstResponder];
-}
- at end
-
-// Do warn for NSResponder subclasses that don't call super
- at interface TestF : NSResponder {}
- at end
- at implementation TestF
-
-- (void)restoreStateWithCoder:(NSCoder *)coder {
-} // expected-warning {{The 'restoreStateWithCoder:' instance method in NSResponder subclass 'TestF' is missing a [super restoreStateWithCoder:] call}}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
-} // expected-warning {{The 'encodeRestorableStateWithCoder:' instance method in NSResponder subclass 'TestF' is missing a [super encodeRestorableStateWithCoder:] call}}
- at end
-
-// Do not warn for NSResponder subclasses that do the right thing
- at interface TestG : NSResponder {}
- at end
- at implementation TestG
-
-- (void)restoreStateWithCoder:(NSCoder *)coder {
-	[super restoreStateWithCoder:coder];
-}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
-	[super encodeRestorableStateWithCoder:coder];
-}
- at end
-
-// Do warn for NSDocument subclasses that don't call super
- at interface TestH : NSDocument {}
- at end
- at implementation TestH
-
-- (void)restoreStateWithCoder:(NSCoder *)coder {
-} // expected-warning {{The 'restoreStateWithCoder:' instance method in NSDocument subclass 'TestH' is missing a [super restoreStateWithCoder:] call}}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
-} // expected-warning {{The 'encodeRestorableStateWithCoder:' instance method in NSDocument subclass 'TestH' is missing a [super encodeRestorableStateWithCoder:] call}}
- at end
-
-// Do not warn for NSDocument subclasses that do the right thing
- at interface TestI : NSDocument {}
- at end
- at implementation TestI
-
-- (void)restoreStateWithCoder:(NSCoder *)coder {
-	[super restoreStateWithCoder:coder];
-}
-- (void)encodeRestorableStateWithCoder:(NSCoder *)coder {
-	[super encodeRestorableStateWithCoder:coder];
-}
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/svalbuilder-logic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/svalbuilder-logic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/svalbuilder-logic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix -verify %s
-// expected-no-diagnostics
-
-// Testing core functionality of the SValBuilder.
-
-int SValBuilderLogicNoCrash(int *x) {
-  return 3 - (int)(x +3);
-}
-
-// http://llvm.org/bugs/show_bug.cgi?id=15863
-// Don't crash when mixing 'bool' and 'int' in implicit comparisons to 0.
-void pr15863() {
-  extern int getBool();
-  _Bool a = getBool();
-  (void)!a; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/taint-generic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/taint-generic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/taint-generic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,225 +0,0 @@
-// RUN: %clang_cc1  -analyze -analyzer-checker=alpha.security.taint,core,alpha.security.ArrayBoundV2 -Wno-format-security -verify %s
-
-int scanf(const char *restrict format, ...);
-int getchar(void);
-
-typedef struct _FILE FILE;
-extern FILE *stdin;
-int fscanf(FILE *restrict stream, const char *restrict format, ...);
-int sprintf(char *str, const char *format, ...);
-void setproctitle(const char *fmt, ...);
-typedef __typeof(sizeof(int)) size_t;
-
-// Define string functions. Use builtin for some of them. They all default to
-// the processing in the taint checker.
-#define strcpy(dest, src) \
-  ((__builtin_object_size(dest, 0) != -1ULL) \
-   ? __builtin___strcpy_chk (dest, src, __builtin_object_size(dest, 1)) \
-   : __inline_strcpy_chk(dest, src))
-
-static char *__inline_strcpy_chk (char *dest, const char *src) {
-  return __builtin___strcpy_chk(dest, src, __builtin_object_size(dest, 1));
-}
-char *stpcpy(char *restrict s1, const char *restrict s2);
-char *strncpy( char * destination, const char * source, size_t num );
-char *strndup(const char *s, size_t n);
-char *strncat(char *restrict s1, const char *restrict s2, size_t n);
-
-void *malloc(size_t);
-void *calloc(size_t nmemb, size_t size);
-void bcopy(void *s1, void *s2, size_t n);
-
-#define BUFSIZE 10
-
-int Buffer[BUFSIZE];
-void bufferScanfDirect(void)
-{
-  int n;
-  scanf("%d", &n);
-  Buffer[n] = 1; // expected-warning {{Out of bound memory access }}
-}
-
-void bufferScanfArithmetic1(int x) {
-  int n;
-  scanf("%d", &n);
-  int m = (n - 3);
-  Buffer[m] = 1; // expected-warning {{Out of bound memory access }}
-}
-
-void bufferScanfArithmetic2(int x) {
-  int n;
-  scanf("%d", &n);
-  int m = 100 - (n + 3) * x;
-  Buffer[m] = 1; // expected-warning {{Out of bound memory access }}
-}
-
-void bufferScanfAssignment(int x) {
-  int n;
-  scanf("%d", &n);
-  int m;
-  if (x > 0) {
-    m = n;
-    Buffer[m] = 1; // expected-warning {{Out of bound memory access }}
-  }
-}
-
-void scanfArg() {
-  int t = 0;
-  scanf("%d", t); // expected-warning {{format specifies type 'int *' but the argument has type 'int'}}
-}
-
-void bufferGetchar(int x) {
-  int m = getchar();
-  Buffer[m] = 1;  //expected-warning {{Out of bound memory access (index is tainted)}}
-}
-
-void testUncontrolledFormatString(char **p) {
-  char s[80];
-  fscanf(stdin, "%s", s);
-  char buf[128];
-  sprintf(buf,s); // expected-warning {{Uncontrolled Format String}}
-  setproctitle(s, 3); // expected-warning {{Uncontrolled Format String}}
-
-  // Test taint propagation through strcpy and family.
-  char scpy[80];
-  strcpy(scpy, s);
-  sprintf(buf,scpy); // expected-warning {{Uncontrolled Format String}}
-
-  stpcpy(*(++p), s); // this generates __inline.
-  setproctitle(*(p), 3); // expected-warning {{Uncontrolled Format String}}
-
-  char spcpy[80];
-  stpcpy(spcpy, s);
-  setproctitle(spcpy, 3); // expected-warning {{Uncontrolled Format String}}
-
-  char *spcpyret;
-  spcpyret = stpcpy(spcpy, s);
-  setproctitle(spcpyret, 3); // expected-warning {{Uncontrolled Format String}}
-
-  char sncpy[80];
-  strncpy(sncpy, s, 20);
-  setproctitle(sncpy, 3); // expected-warning {{Uncontrolled Format String}}
-
-  char *dup;
-  dup = strndup(s, 20);
-  setproctitle(dup, 3); // expected-warning {{Uncontrolled Format String}}
-
-}
-
-int system(const char *command);
-void testTaintSystemCall() {
-  char buffer[156];
-  char addr[128];
-  scanf("%s", addr);
-  system(addr); // expected-warning {{Untrusted data is passed to a system call}}
-
-  // Test that spintf transfers taint.
-  sprintf(buffer, "/bin/mail %s < /tmp/email", addr);
-  system(buffer); // expected-warning {{Untrusted data is passed to a system call}}
-}
-
-void testTaintSystemCall2() {
-  // Test that snpintf transfers taint.
-  char buffern[156];
-  char addr[128];
-  scanf("%s", addr);
-  __builtin_snprintf(buffern, 10, "/bin/mail %s < /tmp/email", addr);
-  system(buffern); // expected-warning {{Untrusted data is passed to a system call}}
-}
-
-void testTaintSystemCall3() {
-  char buffern2[156];
-  int numt;
-  char addr[128];
-  scanf("%s %d", addr, &numt);
-  __builtin_snprintf(buffern2, numt, "/bin/mail %s < /tmp/email", "abcd");
-  system(buffern2); // expected-warning {{Untrusted data is passed to a system call}}
-}
-
-void testTaintedBufferSize() {
-  size_t ts;
-  scanf("%zd", &ts);
-
-  int *buf1 = (int*)malloc(ts*sizeof(int)); // expected-warning {{Untrusted data is used to specify the buffer size}}
-  char *dst = (char*)calloc(ts, sizeof(char)); //expected-warning {{Untrusted data is used to specify the buffer size}}
-  bcopy(buf1, dst, ts); // expected-warning {{Untrusted data is used to specify the buffer size}}
-  __builtin_memcpy(dst, buf1, (ts + 4)*sizeof(char)); // expected-warning {{Untrusted data is used to specify the buffer size}}
-
-  // If both buffers are trusted, do not issue a warning.
-  char *dst2 = (char*)malloc(ts*sizeof(char)); // expected-warning {{Untrusted data is used to specify the buffer size}}
-  strncat(dst2, dst, ts); // no-warning
-}
-
-#define AF_UNIX   1   /* local to host (pipes) */
-#define AF_INET   2   /* internetwork: UDP, TCP, etc. */
-#define AF_LOCAL  AF_UNIX   /* backward compatibility */
-#define SOCK_STREAM 1
-int socket(int, int, int);
-size_t read(int, void *, size_t);
-int  execl(const char *, const char *, ...);
-
-void testSocket() {
-  int sock;
-  char buffer[100];
-
-  sock = socket(AF_INET, SOCK_STREAM, 0);
-  read(sock, buffer, 100);
-  execl(buffer, "filename", 0); // expected-warning {{Untrusted data is passed to a system call}}
-
-  sock = socket(AF_LOCAL, SOCK_STREAM, 0);
-  read(sock, buffer, 100);
-  execl(buffer, "filename", 0); // no-warning
-}
-
-int testDivByZero() {
-  int x;
-  scanf("%d", &x);
-  return 5/x; // expected-warning {{Division by a tainted value, possibly zero}}
-}
-
-// Zero-sized VLAs.
-void testTaintedVLASize() {
-  int x;
-  scanf("%d", &x);
-  int vla[x]; // expected-warning{{Declared variable-length array (VLA) has tainted size}}
-}
-
-// This computation used to take a very long time.
-#define longcmp(a,b,c) { \
-  a -= c;  a ^= c;  c += b; b -= a;  b ^= (a<<6) | (a >> (32-b));  a += c; c -= b;  c ^= b;  b += a; \
-  a -= c;  a ^= c;  c += b; b -= a;  b ^= a;  a += c; c -= b;  c ^= b;  b += a; }
-
-unsigned radar11369570_hanging(const unsigned char *arr, int l) {
-  unsigned a, b, c;
-  a = b = c = 0x9899e3 + l;
-  while (l >= 6) {
-    unsigned t;
-    scanf("%d", &t);
-    a += b;
-    a ^= a;
-    a += (arr[3] + ((unsigned) arr[2] << 8) + ((unsigned) arr[1] << 16) + ((unsigned) arr[0] << 24));
-    longcmp(a, t, c);
-    l -= 12;
-  }
-  return 5/a; // expected-warning {{Division by a tainted value, possibly zero}}
-}
-
-// Check that we do not assert of the following code.
-int SymSymExprWithDiffTypes(void* p) {
-  int i;
-  scanf("%d", &i);
-  int j = (i % (int)(long)p);
-  return 5/j; // expected-warning {{Division by a tainted value, possibly zero}}
-}
-
-
-void constraintManagerShouldTreatAsOpaque(int rhs) {
-  int i;
-  scanf("%d", &i);
-  // This comparison used to hit an assertion in the constraint manager,
-  // which didn't handle NonLoc sym-sym comparisons.
-  if (i < rhs)
-    return;
-  if (i < rhs)
-    *(volatile int *) 0; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,191 +0,0 @@
-// RUN: %clang_cc1 -Wno-int-to-pointer-cast -analyze -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
-
-#include "Inputs/system-header-simulator.h"
-
-#define BUFSIZE 10
-int Buffer[BUFSIZE];
-
-struct XYStruct {
-  int x;
-  int y;
-  char z;
-};
-
-void taintTracking(int x) {
-  int n;
-  int *addr = &Buffer[0];
-  scanf("%d", &n);
-  addr += n;// expected-warning + {{tainted}}
-  *addr = n; // expected-warning + {{tainted}}
-
-  double tdiv = n / 30; // expected-warning+ {{tainted}}
-  char *loc_cast = (char *) n; // expected-warning +{{tainted}}
-  char tinc = tdiv++; // expected-warning + {{tainted}}
-  int tincdec = (char)tinc--; // expected-warning+{{tainted}}
-
-  // Tainted ptr arithmetic/array element address.
-  int tprtarithmetic1 = *(addr+1); // expected-warning + {{tainted}}
-
-  // Dereference.
-  int *ptr;
-  scanf("%p", &ptr);
-  int ptrDeref = *ptr; // expected-warning + {{tainted}}
-  int _ptrDeref = ptrDeref + 13; // expected-warning + {{tainted}}
-
-  // Pointer arithmetic + dereferencing.
-  // FIXME: We fail to propagate the taint here because RegionStore does not
-  // handle ElementRegions with symbolic indexes.
-  int addrDeref = *addr; // expected-warning + {{tainted}}
-  int _addrDeref = addrDeref; // expected-warning + {{tainted}}
-
-  // Tainted struct address, casts.
-  struct XYStruct *xyPtr = 0;
-  scanf("%p", &xyPtr);
-  void *tXYStructPtr = xyPtr; // expected-warning + {{tainted}}
-  struct XYStruct *xyPtrCopy = tXYStructPtr; // expected-warning + {{tainted}}
-  int ptrtx = xyPtr->x;// expected-warning + {{tainted}}
-  int ptrty = xyPtr->y;// expected-warning + {{tainted}}
-
-  // Taint on fields of a struct.
-  struct XYStruct xy = {2, 3, 11};
-  scanf("%d", &xy.y);
-  scanf("%d", &xy.x);
-  int tx = xy.x; // expected-warning + {{tainted}}
-  int ty = xy.y; // FIXME: This should be tainted as well.
-  char ntz = xy.z;// no warning
-  // Now, scanf scans both.
-  scanf("%d %d", &xy.y, &xy.x);
-  int ttx = xy.x; // expected-warning + {{tainted}}
-  int tty = xy.y; // expected-warning + {{tainted}}
-}
-
-void BitwiseOp(int in, char inn) {
-  // Taint on bitwise operations, integer to integer cast.
-  int m;
-  int x = 0;
-  scanf("%d", &x);
-  int y = (in << (x << in)) * 5;// expected-warning + {{tainted}}
-  // The next line tests integer to integer cast.
-  int z = y & inn; // expected-warning + {{tainted}}
-  if (y == 5) // expected-warning + {{tainted}}
-    m = z | z;// expected-warning + {{tainted}}
-  else
-    m = inn;
-  int mm = m; // expected-warning + {{tainted}}
-}
-
-// Test getenv.
-char *getenv(const char *name);
-void getenvTest(char *home) {
-  home = getenv("HOME"); // expected-warning + {{tainted}}
-  if (home != 0) { // expected-warning + {{tainted}}
-      char d = home[0]; // expected-warning + {{tainted}}
-    }
-}
-
-int fscanfTest(void) {
-  FILE *fp;
-  char s[80];
-  int t;
-
-  // Check if stdin is treated as tainted.
-  fscanf(stdin, "%s %d", s, &t);
-  // Note, here, s is not tainted, but the data s points to is tainted.
-  char *ts = s;
-  char tss = s[0]; // expected-warning + {{tainted}}
-  int tt = t; // expected-warning + {{tainted}}
-  if((fp=fopen("test", "w")) == 0) // expected-warning + {{tainted}}
-    return 1;
-  fprintf(fp, "%s %d", s, t); // expected-warning + {{tainted}}
-  fclose(fp); // expected-warning + {{tainted}}
-
-  // Test fscanf and fopen.
-  if((fp=fopen("test","r")) == 0) // expected-warning + {{tainted}}
-    return 1;
-  fscanf(fp, "%s%d", s, &t); // expected-warning + {{tainted}}
-  fprintf(stdout, "%s %d", s, t); // expected-warning + {{tainted}}
-  return 0;
-}
-
-// Check if we propagate taint from stdin when it's used in an assignment.
-void stdinTest1() {
-  int i;
-  fscanf(stdin, "%d", &i);
-  int j = i; // expected-warning + {{tainted}}
-}
-void stdinTest2(FILE *pIn) {
-  FILE *p = stdin;
-  FILE *pp = p;
-  int ii;
-
-  fscanf(pp, "%d", &ii);
-  int jj = ii;// expected-warning + {{tainted}}
-
-  fscanf(p, "%d", &ii);
-  int jj2 = ii;// expected-warning + {{tainted}}
-
-  ii = 3;
-  int jj3 = ii;// no warning
-
-  p = pIn;
-  fscanf(p, "%d", &ii);
-  int jj4 = ii;// no warning
-}
-
-void stdinTest3() {
-  FILE **ppp = &stdin;
-  int iii;
-  fscanf(*ppp, "%d", &iii);
-  int jjj = iii;// expected-warning + {{tainted}}
-}
-
-// Test that stdin does not get invalidated by calls.
-void foo();
-void stdinTest4() {
-  int i;
-  fscanf(stdin, "%d", &i);
-  foo();
-  int j = i; // expected-warning + {{tainted}}
-}
-
-int getw(FILE *);
-void getwTest() {
-  int i = getw(stdin); // expected-warning + {{tainted}}
-}
-
-typedef long ssize_t;
-ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
-int  printf(const char * __restrict, ...);
-void free(void *ptr);
-void getlineTest(void) {
-  FILE *fp;
-  char *line = 0;
-  size_t len = 0;
-  ssize_t read;
-  while ((read = getline(&line, &len, stdin)) != -1) {
-    printf("%s", line); // expected-warning + {{tainted}}
-  }
-  free(line); // expected-warning + {{tainted}}
-}
-
-// Test propagation functions - the ones that propagate taint from arguments to
-// return value, ptr arguments.
-
-int atoi(const char *nptr);
-long atol(const char *nptr);
-long long atoll(const char *nptr);
-
-void atoiTest() {
-  char s[80];
-  scanf("%s", s);
-  int d = atoi(s); // expected-warning + {{tainted}}
-  int td = d; // expected-warning + {{tainted}}
-
-  long l = atol(s); // expected-warning + {{tainted}}
-  int tl = l; // expected-warning + {{tainted}}
-
-  long long ll = atoll(s); // expected-warning + {{tainted}}
-  int tll = ll; // expected-warning + {{tainted}}
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1  -analyze -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
-// expected-no-diagnostics
-
-typedef struct _FILE FILE;
-typedef __typeof(sizeof(int)) size_t;
-extern FILE *stdin;
-typedef long ssize_t;
-ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
-int  printf(const char * __restrict, ...);
-void free(void *ptr);
-
-struct GetLineTestStruct {
-  ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
-};
-
-void getlineTest(void) {
-  FILE *fp;
-  char *line = 0;
-  size_t len = 0;
-  ssize_t read;
-  struct GetLineTestStruct T;
-
-  while ((read = T.getline(&line, &len, stdin)) != -1) {
-    printf("%s", line); // no warning
-  }
-  free(line);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/taint-tester.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1  -analyze -analyzer-checker=alpha.security.taint,debug.TaintTest %s -verify
-// expected-no-diagnostics
-
-#import <stdarg.h>
-
- at interface NSString
-- (NSString *)stringByAppendingString:(NSString *)aString;
- at end
-extern void NSLog (NSString *format, ...);
-extern void NSLogv(NSString *format, va_list args);
-
-void TestLog (NSString *format, ...);
-void TestLog (NSString *format, ...) {
-    va_list ap;
-    va_start(ap, format);
-    NSString *string = @"AAA: ";
-    
-    NSLogv([string stringByAppendingString:format], ap);
-    
-    va_end(ap);
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/temp-obj-dtors-cfg-output.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/temp-obj-dtors-cfg-output.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/temp-obj-dtors-cfg-output.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,848 +0,0 @@
-// RUN: rm -f %t
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpCFG -analyzer-config cfg-temporary-dtors=true %s > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-// XPASS: *
-
-class A {
-public:
-  A() {}
-  ~A() {}
-
-  static A make() { return A(); }
-
-  operator bool() { return false; }
-  operator int() { return 0; }
-};
-
-class B {
-public:
-  B() {}
-  ~B() {}
-
-  operator bool() { return true; }
-  operator int() { return 1; }
-  operator A() { return A(); }
-};
-
-void foo(int);
-void foo(bool);
-void foo(const A&);
-
-void test_binary() {
-  int a = int(A()) + int(B());
-  foo(int(A()) + int(B()));
-  int b;
-}
-
-void test_and() {
-  bool a = A() && B();
-  foo(A() && B());
-  int b;
-}
-
-void test_or() {
-  bool a = A() || B();
-  foo(A() || B());
-  int b;
-}
-
-void test_cond() {
-  A a = B() ? A() : A(B());
-  if (B()) { foo(0); } else { foo(0); }
-  int b;
-}
-
-void test_cond_cref() {
-  const A& a = B() ? A() : A(B());
-  foo(B() ? A() : A(B()));
-  int b;
-}
-
-void test_cond_implicit() {
-  A a = A() ?: A();
-  int b;
-}
-
-void test_cond_implicit_cref() {
-  const A& a = A() ?: A();
-  foo(A() ?: A());
-  int b;
-}
-
-void test_copy_init() {
-  A a = A();
-  int b;
-}
-
-void test_cref_init() {
-  const A& a = A();
-  foo(A());
-  int b;
-}
-
-void test_call_copy_init() {
-  A a = A::make();
-  int b;
-}
-
-void test_call_cref_init() {
-  const A& a = A::make();
-  foo(A::make());
-  int b;
-}
-
-void test_assign() {
-  int a;
-  a = A();
-  int b;
-}
-
-class TestCtorInits {
-  int a;
-  int b;
-public:
-  TestCtorInits();
-};
-
-TestCtorInits::TestCtorInits()
-  : a(int(A()) + int(B()))
-  , b() {}
-
-// CHECK:   [B1 (ENTRY)]
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B1 (ENTRY)]
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B1.1] (BindTemporary)
-// CHECK:     3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B1.3]
-// CHECK:     5: [B1.4] (CXXConstructExpr, class A)
-// CHECK:     6: ~A() (Temporary object destructor)
-// CHECK:     7: return [B1.5];
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: false
-// CHECK:     2: return [B1.1];
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: 0
-// CHECK:     2: return [B1.1];
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B1 (ENTRY)]
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B1 (ENTRY)]
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: true
-// CHECK:     2: return [B1.1];
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: 1
-// CHECK:     2: return [B1.1];
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B1.1] (BindTemporary)
-// CHECK:     3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B1.3]
-// CHECK:     5: [B1.4] (CXXConstructExpr, class A)
-// CHECK:     6: ~A() (Temporary object destructor)
-// CHECK:     7: return [B1.5];
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B1.1] (BindTemporary)
-// CHECK:     3: [B1.2].operator int
-// CHECK:     4: [B1.3]()
-// CHECK:     5: [B1.4] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:     6: int([B1.5]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK:     7: B() (CXXConstructExpr, class B)
-// CHECK:     8: [B1.7] (BindTemporary)
-// CHECK:     9: [B1.8].operator int
-// CHECK:    10: [B1.9]()
-// CHECK:    11: [B1.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:    12: int([B1.11]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK:    13: [B1.6] + [B1.12]
-// CHECK:    14: int a = int(A().operator int()) + int(B().operator int());
-// CHECK:    15: ~B() (Temporary object destructor)
-// CHECK:    16: ~A() (Temporary object destructor)
-// CHECK:    17: foo
-// CHECK:    18: [B1.17] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(int))
-// CHECK:    19: A() (CXXConstructExpr, class A)
-// CHECK:    20: [B1.19] (BindTemporary)
-// CHECK:    21: [B1.20].operator int
-// CHECK:    22: [B1.21]()
-// CHECK:    23: [B1.22] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:    24: int([B1.23]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK:    25: B() (CXXConstructExpr, class B)
-// CHECK:    26: [B1.25] (BindTemporary)
-// CHECK:    27: [B1.26].operator int
-// CHECK:    28: [B1.27]()
-// CHECK:    29: [B1.28] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:    30: int([B1.29]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK:    31: [B1.24] + [B1.30]
-// CHECK:    32: [B1.18]([B1.31])
-// CHECK:    33: ~B() (Temporary object destructor)
-// CHECK:    34: ~A() (Temporary object destructor)
-// CHECK:    35: int b;
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B10 (ENTRY)]
-// CHECK:     Succs (1): B9
-// CHECK:   [B1]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: int b;
-// CHECK:     Preds (2): B2 B3
-// CHECK:     Succs (1): B0
-// CHECK:   [B2]
-// CHECK:     1: ~B() (Temporary object destructor)
-// CHECK:     Preds (1): B3
-// CHECK:     Succs (1): B1
-// CHECK:   [B3]
-// CHECK:     1: [B5.8] && [B4.5]
-// CHECK:     2: [B5.3]([B3.1])
-// CHECK:     T: [B5.8] && ...
-// CHECK:     Preds (2): B4 B5
-// CHECK:     Succs (2): B2 B1
-// CHECK:   [B4]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B4.1] (BindTemporary)
-// CHECK:     3: [B4.2].operator _Bool
-// CHECK:     4: [B4.3]()
-// CHECK:     5: [B4.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     Preds (1): B5
-// CHECK:     Succs (1): B3
-// CHECK:   [B5]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: foo
-// CHECK:     3: [B5.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(_Bool))
-// CHECK:     4: A() (CXXConstructExpr, class A)
-// CHECK:     5: [B5.4] (BindTemporary)
-// CHECK:     6: [B5.5].operator _Bool
-// CHECK:     7: [B5.6]()
-// CHECK:     8: [B5.7] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B5.8] && ...
-// CHECK:     Preds (2): B6 B7
-// CHECK:     Succs (2): B4 B3
-// CHECK:   [B6]
-// CHECK:     1: ~B() (Temporary object destructor)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B5
-// CHECK:   [B7]
-// CHECK:     1: [B9.5] && [B8.5]
-// CHECK:     2: bool a = A().operator _Bool() && B().operator _Bool();
-// CHECK:     T: [B9.5] && ...
-// CHECK:     Preds (2): B8 B9
-// CHECK:     Succs (2): B6 B5
-// CHECK:   [B8]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B8.1] (BindTemporary)
-// CHECK:     3: [B8.2].operator _Bool
-// CHECK:     4: [B8.3]()
-// CHECK:     5: [B8.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     Preds (1): B9
-// CHECK:     Succs (1): B7
-// CHECK:   [B9]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B9.1] (BindTemporary)
-// CHECK:     3: [B9.2].operator _Bool
-// CHECK:     4: [B9.3]()
-// CHECK:     5: [B9.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B9.5] && ...
-// CHECK:     Preds (1): B10
-// CHECK:     Succs (2): B8 B7
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B10 (ENTRY)]
-// CHECK:     Succs (1): B9
-// CHECK:   [B1]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: int b;
-// CHECK:     Preds (2): B2 B3
-// CHECK:     Succs (1): B0
-// CHECK:   [B2]
-// CHECK:     1: ~B() (Temporary object destructor)
-// CHECK:     Preds (1): B3
-// CHECK:     Succs (1): B1
-// CHECK:   [B3]
-// CHECK:     1: [B5.8] || [B4.5]
-// CHECK:     2: [B5.3]([B3.1])
-// CHECK:     T: [B5.8] || ...
-// CHECK:     Preds (2): B4 B5
-// CHECK:     Succs (2): B1 B2
-// CHECK:   [B4]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B4.1] (BindTemporary)
-// CHECK:     3: [B4.2].operator _Bool
-// CHECK:     4: [B4.3]()
-// CHECK:     5: [B4.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     Preds (1): B5
-// CHECK:     Succs (1): B3
-// CHECK:   [B5]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: foo
-// CHECK:     3: [B5.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(_Bool))
-// CHECK:     4: A() (CXXConstructExpr, class A)
-// CHECK:     5: [B5.4] (BindTemporary)
-// CHECK:     6: [B5.5].operator _Bool
-// CHECK:     7: [B5.6]()
-// CHECK:     8: [B5.7] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B5.8] || ...
-// CHECK:     Preds (2): B6 B7
-// CHECK:     Succs (2): B3 B4
-// CHECK:   [B6]
-// CHECK:     1: ~B() (Temporary object destructor)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B5
-// CHECK:   [B7]
-// CHECK:     1: [B9.5] || [B8.5]
-// CHECK:     2: bool a = A().operator _Bool() || B().operator _Bool();
-// CHECK:     T: [B9.5] || ...
-// CHECK:     Preds (2): B8 B9
-// CHECK:     Succs (2): B5 B6
-// CHECK:   [B8]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B8.1] (BindTemporary)
-// CHECK:     3: [B8.2].operator _Bool
-// CHECK:     4: [B8.3]()
-// CHECK:     5: [B8.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     Preds (1): B9
-// CHECK:     Succs (1): B7
-// CHECK:   [B9]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B9.1] (BindTemporary)
-// CHECK:     3: [B9.2].operator _Bool
-// CHECK:     4: [B9.3]()
-// CHECK:     5: [B9.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B9.5] || ...
-// CHECK:     Preds (1): B10
-// CHECK:     Succs (2): B7 B8
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B11 (ENTRY)]
-// CHECK:     Succs (1): B10
-// CHECK:   [B1]
-// CHECK:     1: int b;
-// CHECK:     2: [B7.5].~A() (Implicit destructor)
-// CHECK:     Preds (2): B2 B3
-// CHECK:     Succs (1): B0
-// CHECK:   [B2]
-// CHECK:     1: foo
-// CHECK:     2: [B2.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(int))
-// CHECK:     3: 0
-// CHECK:     4: [B2.2]([B2.3])
-// CHECK:     Preds (1): B4
-// CHECK:     Succs (1): B1
-// CHECK:   [B3]
-// CHECK:     1: foo
-// CHECK:     2: [B3.1] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(int))
-// CHECK:     3: 0
-// CHECK:     4: [B3.2]([B3.3])
-// CHECK:     Preds (1): B4
-// CHECK:     Succs (1): B1
-// CHECK:   [B4]
-// CHECK:     1: ~B() (Temporary object destructor)
-// CHECK:     2: B() (CXXConstructExpr, class B)
-// CHECK:     3: [B4.2] (BindTemporary)
-// CHECK:     4: [B4.3].operator _Bool
-// CHECK:     5: [B4.4]()
-// CHECK:     6: [B4.5] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     7: ~B() (Temporary object destructor)
-// CHECK:     T: if [B4.6]
-// CHECK:     Preds (2): B5 B6
-// CHECK:     Succs (2): B3 B2
-// CHECK:   [B5]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: ~A() (Temporary object destructor)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B4
-// CHECK:   [B6]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: ~A() (Temporary object destructor)
-// CHECK:     3: ~A() (Temporary object destructor)
-// CHECK:     4: ~B() (Temporary object destructor)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B4
-// CHECK:   [B7]
-// CHECK:     1: [B10.5] ? [B8.6] : [B9.15]
-// CHECK:     2: [B7.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     3: [B7.2]
-// CHECK:     4: [B7.3] (CXXConstructExpr, class A)
-// CHECK:     5: A a = B().operator _Bool() ? A() : A(B().operator A());
-// CHECK:     T: [B10.5] ? ... : ...
-// CHECK:     Preds (2): B8 B9
-// CHECK:     Succs (2): B5 B6
-// CHECK:   [B8]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B8.1] (BindTemporary)
-// CHECK:     3: [B8.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B8.3]
-// CHECK:     5: [B8.4] (CXXConstructExpr, class A)
-// CHECK:     6: [B8.5] (BindTemporary)
-// CHECK:     Preds (1): B10
-// CHECK:     Succs (1): B7
-// CHECK:   [B9]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B9.1] (BindTemporary)
-// CHECK:     3: [B9.2].operator A
-// CHECK:     4: [B9.3]()
-// CHECK:     5: [B9.4] (ImplicitCastExpr, UserDefinedConversion, class A)
-// CHECK:     6: [B9.5] (BindTemporary)
-// CHECK:     7: [B9.6] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     8: [B9.7]
-// CHECK:     9: [B9.8] (CXXConstructExpr, class A)
-// CHECK:    10: [B9.9] (BindTemporary)
-// CHECK:    11: A([B9.10]) (CXXFunctionalCastExpr, ConstructorConversion, class A)
-// CHECK:    12: [B9.11] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    13: [B9.12]
-// CHECK:    14: [B9.13] (CXXConstructExpr, class A)
-// CHECK:    15: [B9.14] (BindTemporary)
-// CHECK:     Preds (1): B10
-// CHECK:     Succs (1): B7
-// CHECK:   [B10]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B10.1] (BindTemporary)
-// CHECK:     3: [B10.2].operator _Bool
-// CHECK:     4: [B10.3]()
-// CHECK:     5: [B10.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B10.5] ? ... : ...
-// CHECK:     Preds (1): B11
-// CHECK:     Succs (2): B8 B9
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B14 (ENTRY)]
-// CHECK:     Succs (1): B13
-// CHECK:   [B1]
-// CHECK:     1: ~B() (Temporary object destructor)
-// CHECK:     2: int b;
-// CHECK:     3: [B10.4].~A() (Implicit destructor)
-// CHECK:     Preds (2): B2 B3
-// CHECK:     Succs (1): B0
-// CHECK:   [B2]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: ~A() (Temporary object destructor)
-// CHECK:     Preds (1): B4
-// CHECK:     Succs (1): B1
-// CHECK:   [B3]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: ~A() (Temporary object destructor)
-// CHECK:     3: ~A() (Temporary object destructor)
-// CHECK:     4: ~B() (Temporary object destructor)
-// CHECK:     Preds (1): B4
-// CHECK:     Succs (1): B1
-// CHECK:   [B4]
-// CHECK:     1: [B7.8] ? [B5.6] : [B6.15]
-// CHECK:     2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     3: [B4.2]
-// CHECK:     4: [B7.3]([B4.3])
-// CHECK:     T: [B7.8] ? ... : ...
-// CHECK:     Preds (2): B5 B6
-// CHECK:     Succs (2): B2 B3
-// CHECK:   [B5]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B5.1] (BindTemporary)
-// CHECK:     3: [B5.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B5.3]
-// CHECK:     5: [B5.4] (CXXConstructExpr, class A)
-// CHECK:     6: [B5.5] (BindTemporary)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B4
-// CHECK:   [B6]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B6.1] (BindTemporary)
-// CHECK:     3: [B6.2].operator A
-// CHECK:     4: [B6.3]()
-// CHECK:     5: [B6.4] (ImplicitCastExpr, UserDefinedConversion, class A)
-// CHECK:     6: [B6.5] (BindTemporary)
-// CHECK:     7: [B6.6] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     8: [B6.7]
-// CHECK:     9: [B6.8] (CXXConstructExpr, class A)
-// CHECK:    10: [B6.9] (BindTemporary)
-// CHECK:    11: A([B6.10]) (CXXFunctionalCastExpr, ConstructorConversion, class A)
-// CHECK:    12: [B6.11] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    13: [B6.12]
-// CHECK:    14: [B6.13] (CXXConstructExpr, class A)
-// CHECK:    15: [B6.14] (BindTemporary)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B4
-// CHECK:   [B7]
-// CHECK:     1: ~B() (Temporary object destructor)
-// CHECK:     2: foo
-// CHECK:     3: [B7.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &))
-// CHECK:     4: B() (CXXConstructExpr, class B)
-// CHECK:     5: [B7.4] (BindTemporary)
-// CHECK:     6: [B7.5].operator _Bool
-// CHECK:     7: [B7.6]()
-// CHECK:     8: [B7.7] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B7.8] ? ... : ...
-// CHECK:     Preds (2): B8 B9
-// CHECK:     Succs (2): B5 B6
-// CHECK:   [B8]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     Preds (1): B10
-// CHECK:     Succs (1): B7
-// CHECK:   [B9]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: ~A() (Temporary object destructor)
-// CHECK:     3: ~B() (Temporary object destructor)
-// CHECK:     Preds (1): B10
-// CHECK:     Succs (1): B7
-// CHECK:   [B10]
-// CHECK:     1: [B13.5] ? [B11.6] : [B12.15]
-// CHECK:     2: [B10.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     3: [B10.2]
-// CHECK:     4: const A &a = B().operator _Bool() ? A() : A(B().operator A());
-// CHECK:     T: [B13.5] ? ... : ...
-// CHECK:     Preds (2): B11 B12
-// CHECK:     Succs (2): B8 B9
-// CHECK:   [B11]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B11.1] (BindTemporary)
-// CHECK:     3: [B11.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B11.3]
-// CHECK:     5: [B11.4] (CXXConstructExpr, class A)
-// CHECK:     6: [B11.5] (BindTemporary)
-// CHECK:     Preds (1): B13
-// CHECK:     Succs (1): B10
-// CHECK:   [B12]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B12.1] (BindTemporary)
-// CHECK:     3: [B12.2].operator A
-// CHECK:     4: [B12.3]()
-// CHECK:     5: [B12.4] (ImplicitCastExpr, UserDefinedConversion, class A)
-// CHECK:     6: [B12.5] (BindTemporary)
-// CHECK:     7: [B12.6] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     8: [B12.7]
-// CHECK:     9: [B12.8] (CXXConstructExpr, class A)
-// CHECK:    10: [B12.9] (BindTemporary)
-// CHECK:    11: A([B12.10]) (CXXFunctionalCastExpr, ConstructorConversion, class A)
-// CHECK:    12: [B12.11] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    13: [B12.12]
-// CHECK:    14: [B12.13] (CXXConstructExpr, class A)
-// CHECK:    15: [B12.14] (BindTemporary)
-// CHECK:     Preds (1): B13
-// CHECK:     Succs (1): B10
-// CHECK:   [B13]
-// CHECK:     1: B() (CXXConstructExpr, class B)
-// CHECK:     2: [B13.1] (BindTemporary)
-// CHECK:     3: [B13.2].operator _Bool
-// CHECK:     4: [B13.3]()
-// CHECK:     5: [B13.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B13.5] ? ... : ...
-// CHECK:     Preds (1): B14
-// CHECK:     Succs (2): B11 B12
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B8 (ENTRY)]
-// CHECK:     Succs (1): B7
-// CHECK:   [B1]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: int b;
-// CHECK:     3: [B4.5].~A() (Implicit destructor)
-// CHECK:     Preds (2): B2 B3
-// CHECK:     Succs (1): B0
-// CHECK:   [B2]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     Preds (1): B4
-// CHECK:     Succs (1): B1
-// CHECK:   [B3]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: ~A() (Temporary object destructor)
-// CHECK:     Preds (1): B4
-// CHECK:     Succs (1): B1
-// CHECK:   [B4]
-// CHECK:     1: [B7.2] ?: [B6.6]
-// CHECK:     2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     3: [B4.2]
-// CHECK:     4: [B4.3] (CXXConstructExpr, class A)
-// CHECK:     5: A a = A() ?: A();
-// CHECK:     T: [B7.5] ? ... : ...
-// CHECK:     Preds (2): B5 B6
-// CHECK:     Succs (2): B2 B3
-// CHECK:   [B5]
-// CHECK:     1: [B7.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     2: [B5.1]
-// CHECK:     3: [B5.2] (CXXConstructExpr, class A)
-// CHECK:     4: [B5.3] (BindTemporary)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B4
-// CHECK:   [B6]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B6.1] (BindTemporary)
-// CHECK:     3: [B6.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B6.3]
-// CHECK:     5: [B6.4] (CXXConstructExpr, class A)
-// CHECK:     6: [B6.5] (BindTemporary)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B4
-// CHECK:   [B7]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B7.1] (BindTemporary)
-// CHECK:     3: [B7.2].operator _Bool
-// CHECK:     4: [B7.3]()
-// CHECK:     5: [B7.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B7.5] ? ... : ...
-// CHECK:     Preds (1): B8
-// CHECK:     Succs (2): B5 B6
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B13 (ENTRY)]
-// CHECK:     Succs (1): B12
-// CHECK:   [B1]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: int b;
-// CHECK:     3: [B9.4].~A() (Implicit destructor)
-// CHECK:     Preds (2): B2 B3
-// CHECK:     Succs (1): B0
-// CHECK:   [B2]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     Preds (1): B4
-// CHECK:     Succs (1): B1
-// CHECK:   [B3]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: ~A() (Temporary object destructor)
-// CHECK:     Preds (1): B4
-// CHECK:     Succs (1): B1
-// CHECK:   [B4]
-// CHECK:     1: [B7.5] ?: [B6.6]
-// CHECK:     2: [B4.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     3: [B4.2]
-// CHECK:     4: [B7.3]([B4.3])
-// CHECK:     T: [B7.8] ? ... : ...
-// CHECK:     Preds (2): B5 B6
-// CHECK:     Succs (2): B2 B3
-// CHECK:   [B5]
-// CHECK:     1: [B7.5] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     2: [B5.1]
-// CHECK:     3: [B5.2] (CXXConstructExpr, class A)
-// CHECK:     4: [B5.3] (BindTemporary)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B4
-// CHECK:   [B6]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B6.1] (BindTemporary)
-// CHECK:     3: [B6.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B6.3]
-// CHECK:     5: [B6.4] (CXXConstructExpr, class A)
-// CHECK:     6: [B6.5] (BindTemporary)
-// CHECK:     Preds (1): B7
-// CHECK:     Succs (1): B4
-// CHECK:   [B7]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     2: foo
-// CHECK:     3: [B7.2] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &))
-// CHECK:     4: A() (CXXConstructExpr, class A)
-// CHECK:     5: [B7.4] (BindTemporary)
-// CHECK:     6: [B7.5].operator _Bool
-// CHECK:     7: [B7.6]()
-// CHECK:     8: [B7.7] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B7.8] ? ... : ...
-// CHECK:     Preds (2): B9 B8
-// CHECK:     Succs (2): B5 B6
-// CHECK:   [B8]
-// CHECK:     1: ~A() (Temporary object destructor)
-// CHECK:     Preds (1): B9
-// CHECK:     Succs (1): B7
-// CHECK:   [B9]
-// CHECK:     1: [B12.2] ?: [B11.6]
-// CHECK:     2: [B9.1] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     3: [B9.2]
-// CHECK:     4: const A &a = A() ?: A();
-// CHECK:     T: [B12.5] ? ... : ...
-// CHECK:     Preds (2): B10 B11
-// CHECK:     Succs (2): B7 B8
-// CHECK:   [B10]
-// CHECK:     1: [B12.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     2: [B10.1]
-// CHECK:     3: [B10.2] (CXXConstructExpr, class A)
-// CHECK:     4: [B10.3] (BindTemporary)
-// CHECK:     Preds (1): B12
-// CHECK:     Succs (1): B9
-// CHECK:   [B11]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B11.1] (BindTemporary)
-// CHECK:     3: [B11.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B11.3]
-// CHECK:     5: [B11.4] (CXXConstructExpr, class A)
-// CHECK:     6: [B11.5] (BindTemporary)
-// CHECK:     Preds (1): B12
-// CHECK:     Succs (1): B9
-// CHECK:   [B12]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B12.1] (BindTemporary)
-// CHECK:     3: [B12.2].operator _Bool
-// CHECK:     4: [B12.3]()
-// CHECK:     5: [B12.4] (ImplicitCastExpr, UserDefinedConversion, _Bool)
-// CHECK:     T: [B12.5] ? ... : ...
-// CHECK:     Preds (1): B13
-// CHECK:     Succs (2): B10 B11
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B1.1] (BindTemporary)
-// CHECK:     3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B1.3]
-// CHECK:     5: [B1.4] (CXXConstructExpr, class A)
-// CHECK:     6: A a = A();
-// CHECK:     7: ~A() (Temporary object destructor)
-// CHECK:     8: int b;
-// CHECK:     9: [B1.6].~A() (Implicit destructor)
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B1.1] (BindTemporary)
-// CHECK:     3: [B1.2] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     4: [B1.3]
-// CHECK:     5: const A &a = A();
-// CHECK:     6: foo
-// CHECK:     7: [B1.6] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &))
-// CHECK:     8: A() (CXXConstructExpr, class A)
-// CHECK:     9: [B1.8] (BindTemporary)
-// CHECK:    10: [B1.9] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    11: [B1.10]
-// CHECK:    12: [B1.7]([B1.11])
-// CHECK:    13: ~A() (Temporary object destructor)
-// CHECK:    14: int b;
-// CHECK:    15: [B1.5].~A() (Implicit destructor)
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: A::make
-// CHECK:     2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class A (*)(void))
-// CHECK:     3: [B1.2]()
-// CHECK:     4: [B1.3] (BindTemporary)
-// CHECK:     5: [B1.4] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     6: [B1.5]
-// CHECK:     7: [B1.6] (CXXConstructExpr, class A)
-// CHECK:     8: A a = A::make();
-// CHECK:     9: ~A() (Temporary object destructor)
-// CHECK:    10: int b;
-// CHECK:    11: [B1.8].~A() (Implicit destructor)
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: A::make
-// CHECK:     2: [B1.1] (ImplicitCastExpr, FunctionToPointerDecay, class A (*)(void))
-// CHECK:     3: [B1.2]()
-// CHECK:     4: [B1.3] (BindTemporary)
-// CHECK:     5: [B1.4] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:     6: [B1.5]
-// CHECK:     7: const A &a = A::make();
-// CHECK:     8: foo
-// CHECK:     9: [B1.8] (ImplicitCastExpr, FunctionToPointerDecay, void (*)(const class A &))
-// CHECK:    10: A::make
-// CHECK:    11: [B1.10] (ImplicitCastExpr, FunctionToPointerDecay, class A (*)(void))
-// CHECK:    12: [B1.11]()
-// CHECK:    13: [B1.12] (BindTemporary)
-// CHECK:    14: [B1.13] (ImplicitCastExpr, NoOp, const class A)
-// CHECK:    15: [B1.14]
-// CHECK:    16: [B1.9]([B1.15])
-// CHECK:    17: ~A() (Temporary object destructor)
-// CHECK:    18: int b;
-// CHECK:    19: [B1.7].~A() (Implicit destructor)
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: int a;
-// CHECK:     2: A() (CXXConstructExpr, class A)
-// CHECK:     3: [B1.2] (BindTemporary)
-// CHECK:     4: [B1.3].operator int
-// CHECK:     5: [B1.4]()
-// CHECK:     6: [B1.5] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:     7: a
-// CHECK:     8: [B1.7] = [B1.6]
-// CHECK:     9: ~A() (Temporary object destructor)
-// CHECK:    10: int b;
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-// CHECK:   [B2 (ENTRY)]
-// CHECK:     Succs (1): B1
-// CHECK:   [B1]
-// CHECK:     1: A() (CXXConstructExpr, class A)
-// CHECK:     2: [B1.1] (BindTemporary)
-// CHECK:     3: [B1.2].operator int
-// CHECK:     4: [B1.3]()
-// CHECK:     5: [B1.4] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:     6: int([B1.5]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK:     7: B() (CXXConstructExpr, class B)
-// CHECK:     8: [B1.7] (BindTemporary)
-// CHECK:     9: [B1.8].operator int
-// CHECK:    10: [B1.9]()
-// CHECK:    11: [B1.10] (ImplicitCastExpr, UserDefinedConversion, int)
-// CHECK:    12: int([B1.11]) (CXXFunctionalCastExpr, NoOp, int)
-// CHECK:    13: [B1.6] + [B1.12]
-// CHECK:    14: a([B1.13]) (Member initializer)
-// CHECK:    15: ~B() (Temporary object destructor)
-// CHECK:    16: ~A() (Temporary object destructor)
-// CHECK:    17: /*implicit*/int()
-// CHECK:    18: b([B1.17]) (Member initializer)
-// CHECK:     Preds (1): B2
-// CHECK:     Succs (1): B0
-// CHECK:   [B0 (EXIT)]
-// CHECK:     Preds (1): B1
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -fblocks -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -fblocks -analyzer-config c++-template-inlining=false -DNO_INLINE -verify %s
-
-void clang_analyzer_eval(bool);
-
-// Do not crash on this templated code which uses a block.
-typedef void (^my_block)(void);
-static void useBlock(my_block block){}
-template<class T> class MyClass;
-typedef MyClass<float> Mf;
-
-template<class T>
-class MyClass
-{
-public:
-  MyClass() {}
-  MyClass(T a);
-  void I();
-private:
- static const T one;
-};
-
-template<class T> const T MyClass<T>::one = static_cast<T>(1);
-template<class T> inline MyClass<T>::MyClass(T a){}
-template<class T> void MyClass<T>::I() {
-  static MyClass<T>* mPtr = 0;
-  useBlock(^{ mPtr = new MyClass<T> (MyClass<T>::one); });
-};
-int main(){
-  Mf m;
-  m.I();
-}
-
-
-// <rdar://problem/11949235>
-template<class T, unsigned N>
-inline unsigned array_lengthof(T (&)[N]) {
-  return N;
-}
-
-void testNonTypeTemplateInstantiation() {
-  const char *S[] = { "a", "b" };
-  clang_analyzer_eval(array_lengthof(S) == 2);
-#ifndef NO_INLINE
-  // expected-warning at -2 {{TRUE}}
-#else
-  // expected-warning at -4 {{UNKNOWN}}
-#endif
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/temporaries.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/temporaries.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/temporaries.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify -w -std=c++03 %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify -w -std=c++11 %s
-
-extern bool clang_analyzer_eval(bool);
-
-struct Trivial {
-  Trivial(int x) : value(x) {}
-  int value;
-};
-
-struct NonTrivial : public Trivial {
-  NonTrivial(int x) : Trivial(x) {}
-  ~NonTrivial();
-};
-
-
-Trivial getTrivial() {
-  return Trivial(42); // no-warning
-}
-
-const Trivial &getTrivialRef() {
-  return Trivial(42); // expected-warning {{Address of stack memory associated with temporary object of type 'Trivial' returned to caller}}
-}
-
-
-NonTrivial getNonTrivial() {
-  return NonTrivial(42); // no-warning
-}
-
-const NonTrivial &getNonTrivialRef() {
-  return NonTrivial(42); // expected-warning {{Address of stack memory associated with temporary object of type 'NonTrivial' returned to caller}}
-}
-
-namespace rdar13265460 {
-  struct TrivialSubclass : public Trivial {
-    TrivialSubclass(int x) : Trivial(x), anotherValue(-x) {}
-    int anotherValue;
-  };
-
-  TrivialSubclass getTrivialSub() {
-    TrivialSubclass obj(1);
-    obj.value = 42;
-    obj.anotherValue = -42;
-    return obj;
-  }
-
-  void testImmediate() {
-    TrivialSubclass obj = getTrivialSub();
-
-    clang_analyzer_eval(obj.value == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(obj.anotherValue == -42); // expected-warning{{TRUE}}
-
-    clang_analyzer_eval(getTrivialSub().value == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(getTrivialSub().anotherValue == -42); // expected-warning{{TRUE}}
-  }
-
-  void testMaterializeTemporaryExpr() {
-    const TrivialSubclass &ref = getTrivialSub();
-    clang_analyzer_eval(ref.value == 42); // expected-warning{{TRUE}}
-
-    const Trivial &baseRef = getTrivialSub();
-    clang_analyzer_eval(baseRef.value == 42); // expected-warning{{TRUE}}
-  }
-}
-
-namespace rdar13281951 {
-  struct Derived : public Trivial {
-    Derived(int value) : Trivial(value), value2(-value) {}
-    int value2;
-  };
-
-  void test() {
-    Derived obj(1);
-    obj.value = 42;
-    const Trivial * const &pointerRef = &obj;
-    clang_analyzer_eval(pointerRef->value == 42); // expected-warning{{TRUE}}
-  }
-}
-
-namespace compound_literals {
-  struct POD {
-    int x, y;
-  };
-  struct HasCtor {
-    HasCtor(int x, int y) : x(x), y(y) {}
-    int x, y;
-  };
-  struct HasDtor {
-    int x, y;
-    ~HasDtor();
-  };
-  struct HasCtorDtor {
-    HasCtorDtor(int x, int y) : x(x), y(y) {}
-    ~HasCtorDtor();
-    int x, y;
-  };
-
-  void test() {
-    clang_analyzer_eval(((POD){1, 42}).y == 42); // expected-warning{{TRUE}}
-    clang_analyzer_eval(((HasDtor){1, 42}).y == 42); // expected-warning{{TRUE}}
-
-#if __cplusplus >= 201103L
-    clang_analyzer_eval(((HasCtor){1, 42}).y == 42); // expected-warning{{TRUE}}
-
-    // FIXME: should be TRUE, but we don't inline the constructors of
-    // temporaries because we can't model their destructors yet.
-    clang_analyzer_eval(((HasCtorDtor){1, 42}).y == 42); // expected-warning{{UNKNOWN}}
-#endif
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/test-objc-non-nil-return-value-checker.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/test-objc-non-nil-return-value-checker.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/test-objc-non-nil-return-value-checker.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=osx.cocoa.NonNilReturnValue,debug.ExprInspection -verify %s
-
-typedef unsigned int NSUInteger;
-typedef signed char BOOL;
-
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
-
- at interface NSObject <NSObject> {}
-+(id)alloc;
-+(id)new;
--(id)init;
--(id)autorelease;
--(id)copy;
-- (Class)class;
--(id)retain;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSArray (NSExtendedArray)
-- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
- at end
-
- at interface NSOrderedSet : NSObject
- at end
- at interface NSOrderedSet (NSOrderedSetCreation)
-- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- at end
-
-void clang_analyzer_eval(id);
-
-void assumeThatNSArrayObjectAtIndexIsNeverNull(NSArray *A, NSUInteger i) {
-  clang_analyzer_eval([A objectAtIndex: i]); // expected-warning {{TRUE}} 
-  id subscriptObj = A[1];
-  clang_analyzer_eval(subscriptObj); // expected-warning {{TRUE}} 
-}
-
-void assumeThatNSMutableArrayObjectAtIndexIsNeverNull(NSMutableArray *A, NSUInteger i) {
-  clang_analyzer_eval([A objectAtIndex: i]); // expected-warning {{TRUE}} 
-}
-
-void assumeThatNSArrayObjectAtIndexedSubscriptIsNeverNull(NSOrderedSet *A, NSUInteger i) {
-  clang_analyzer_eval(A[i]); // expected-warning {{TRUE}}
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/test-variably-modified-types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/test-variably-modified-types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/test-variably-modified-types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyze-function=testVariablyModifiedTypes -verify %s
-
-// Test that we process variably modified type correctly - the call graph construction should pick up function_with_bug while recursively visiting test_variably_modifiable_types.
-unsigned getArraySize(int *x) {
-  if (!x)
-    return *x; // expected-warning {{Dereference of null pointer}}
-  return 1;
-}
-
-int testVariablyModifiedTypes(int *x) {
-  int mytype[getArraySize(x)];
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/traversal-algorithm.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/traversal-algorithm.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/traversal-algorithm.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,213 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=debug.DumpTraversal -analyzer-max-loop 4 -std=c++11 %s | FileCheck -check-prefix=DFS %s
-
-int a();
-int b();
-int c();
-
-int work();
-
-void test(id input) {
-  if (a()) {
-    if (a())
-      b();
-    else
-      c();
-  } else {
-    if (b())
-      a();
-    else
-      c();
-  }
-
-  if (a())
-    work();
-}
-
-void testLoops(id input) {
-  while (a()) {
-    work();
-    work();
-    work();
-  }
-
-  for (int i = 0; i != b(); ++i) {
-    work();
-  }
-
-  for (id x in input) {
-    work();
-    work();
-    work();
-  }
-
-  int z[] = {1,2,3};
-  for (int y : z) {
-    work();
-    work();
-    work();
-  }
-}
-
-// This ordering assumes that false cases happen before the true cases.
-
-// DFS:27 WhileStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:27 WhileStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:27 WhileStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:27 WhileStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:33 ForStmt
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:44 CXXForRangeStmt
-// DFS-next:--END PATH--
-// DFS-next:37 ObjCForCollectionStmt
-// DFS-next:10 IfStmt
-// DFS-next:16 IfStmt
-// DFS-next:22 IfStmt
-// DFS-next:--END PATH--
-// DFS-next:--END PATH--
-// DFS-next:22 IfStmt
-// DFS-next:--END PATH--
-// DFS-next:--END PATH--
-// DFS-next:11 IfStmt
-// DFS-next:22 IfStmt
-// DFS-next:--END PATH--
-// DFS-next:--END PATH--
-// DFS-next:22 IfStmt
-// DFS-next:--END PATH--
-// DFS-next:--END PATH--
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/traversal-path-unification.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/traversal-path-unification.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/traversal-path-unification.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.DumpTraversal %s | FileCheck %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.DumpTraversal -DUSE_EXPR %s | FileCheck %s
-
-int a();
-int b();
-int c();
-
-#ifdef USE_EXPR
-#define CHECK(x) ((x) & 1)
-#else
-#define CHECK(x) (x)
-#endif
-
-void testRemoveDeadBindings() {
-  int i = a();
-  if (CHECK(i))
-    a();
-  else
-    b();
-
-  // At this point the symbol bound to 'i' is dead.
-  // The effects of a() and b() are identical (they both invalidate globals).
-  // We should unify the two paths here and only get one end-of-path node.
-  c();
-}
-
-// CHECK: --END FUNCTION--
-// CHECK-NOT: --END FUNCTION--

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/undef-buffers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/undef-buffers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/undef-buffers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.unix,core.uninitialized -analyzer-store=region -verify %s
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-void free(void *);
-
-char stackBased1 () {
-  char buf[2];
-  buf[0] = 'a';
-  return buf[1]; // expected-warning{{Undefined}}
-}
-
-char stackBased2 () {
-  char buf[2];
-  buf[1] = 'a';
-  return buf[0]; // expected-warning{{Undefined}}
-}
-
-// Exercise the conditional visitor. Radar://10105448
-char stackBased3 (int *x) {
-  char buf[2];
-  int *y;
-  buf[0] = 'a';
-  if (!(y = x)) {
-    return buf[1]; // expected-warning{{Undefined}}
-  }
-  return buf[0];
-}
-
-char heapBased1 () {
-  char *buf = malloc(2);
-  buf[0] = 'a';
-  char result = buf[1]; // expected-warning{{undefined}}
-  free(buf);
-  return result;
-}
-
-char heapBased2 () {
-  char *buf = malloc(2);
-  buf[1] = 'a';
-  char result = buf[0]; // expected-warning{{undefined}}
-  free(buf);
-  return result;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/uninit-msg-expr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/uninit-msg-expr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/uninit-msg-expr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case 
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} @end
- at class NSString, NSData;
- at class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray;
-typedef struct {} NSFastEnumerationState;
- at protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
- at class NSData, NSIndexSet, NSString, NSURL;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
- at end
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-- (NSUInteger)length;
-- (void)addObject:(id)object;
- at end
-extern NSString * const NSUndoManagerCheckpointNotification;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-unsigned f1() {
-  NSString *aString;
-  return [aString length]; // expected-warning {{Receiver in message expression is an uninitialized value}}
-}
-
-unsigned f2() {
-  NSString *aString = 0;
-  return [aString length]; // no-warning
-}
-
-void f3() {
-  NSMutableArray *aArray = [NSArray array];
-  NSString *aString;
-  [aArray addObject:aString]; // expected-warning {{Argument in message expression is an uninitialized value}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/uninit-ps-rdar6145427.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/uninit-ps-rdar6145427.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/uninit-ps-rdar6145427.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -analyzer-store=region %s
-
-// Delta-Debugging reduced preamble.
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} 
-+ (id)alloc; 
-- (id)init;
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value; @end
- at class NSString, NSData;
-typedef struct _NSPoint {} NSRange;
- at interface NSValue (NSValueRangeExtensions) 
-+ (NSValue *)valueWithRange:(NSRange)range;
-- (id)objectAtIndex:(NSUInteger)index;
- at end
- at interface NSAutoreleasePool : NSObject {} - (void)drain; @end
-extern NSString * const NSBundleDidLoadNotification;
-typedef struct {} NSDecimal;
- at interface NSNetService : NSObject {} - (id)init; @end
-extern NSString * const NSUndoManagerCheckpointNotification;
-
-// Test case: <rdar://problem/6145427>
-
-int main (int argc, const char * argv[]) {
-  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-  id someUnintializedPointer = [someUnintializedPointer objectAtIndex:0]; // expected-warning{{Receiver in message expression is an uninitialized value}}
-  NSLog(@"%@", someUnintializedPointer);    
-  [pool drain];
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/uninit-sometimes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/uninit-sometimes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/uninit-sometimes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,387 +0,0 @@
-// RUN: %clang_cc1 -std=gnu++11 -Wsometimes-uninitialized -verify %s
-// RUN: %clang_cc1 -std=gnu++11 -Wsometimes-uninitialized -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-bool maybe();
-
-int test_if_false(bool b) {
-  int x; // expected-note {{variable}}
-  if (b) // expected-warning {{whenever 'if' condition is false}} \
-         // expected-note {{remove the 'if' if its condition is always true}}
-    x = 1;
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{8:3-10:5}:""
-// CHECK: fix-it:"{{.*}}":{7:8-7:8}:" = 0"
-
-
-int test_if_true(bool b) {
-  int x; // expected-note {{variable}}
-  if (b) {} // expected-warning {{whenever 'if' condition is true}} \
-            // expected-note {{remove the 'if' if its condition is always false}}
-  else x = 1;
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{20:3-22:8}:""
-// CHECK: fix-it:"{{.*}}":{19:8-19:8}:" = 0"
-
-
-int test_while_false(bool b) {
-  int x; // expected-note {{variable}}
-  while (b) { // expected-warning {{whenever 'while' loop exits because its condition is false}} \
-              // expected-note {{remove the condition if it is always true}}
-    if (maybe()) {
-      x = 1;
-      break;
-    }
-  };
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{32:10-32:11}:"true"
-// CHECK: fix-it:"{{.*}}":{31:8-31:8}:" = 0"
-
-
-int test_while_true(bool b) {
-  int x; // expected-note {{variable}}
-  while (b) { // expected-warning {{whenever 'while' loop is entered}} \
-              // expected-note {{remove the condition if it is always false}}
-label:
-    return x; // expected-note {{uninitialized use}}
-  }
-  x = 0;
-  goto label;
-}
-
-// CHECK: fix-it:"{{.*}}":{48:10-48:11}:"false"
-// CHECK: fix-it:"{{.*}}":{47:8-47:8}:" = 0"
-
-
-int test_do_while_false(bool b) {
-  int x; // expected-note {{variable}}
-  do {
-    if (maybe()) {
-      x = 1;
-      break;
-    }
-  } while (b); // expected-warning {{whenever 'do' loop exits because its condition is false}} \
-               // expected-note {{remove the condition if it is always true}}
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{68:12-68:13}:"true"
-// CHECK: fix-it:"{{.*}}":{62:8-62:8}:" = 0"
-
-
-int test_do_while_true(bool b) {
-  int x; // expected-note {{variable}}
-goto label2;
-  do {
-label1:
-    return x; // expected-note {{uninitialized use}}
-label2: ;
-  } while (b); // expected-warning {{whenever 'do' loop condition is true}} \
-               // expected-note {{remove the condition if it is always false}}
-  x = 0;
-  goto label1;
-}
-
-// CHECK: fix-it:"{{.*}}":{84:12-84:13}:"false"
-// CHECK: fix-it:"{{.*}}":{78:8-78:8}:" = 0"
-
-
-int test_for_false(int k) {
-  int x; // expected-note {{variable}}
-  for (int n = 0;
-       n < k; // expected-warning {{whenever 'for' loop exits because its condition is false}} \
-              // expected-note {{remove the condition if it is always true}}
-       ++n) {
-    if (maybe()) {
-      x = n;
-      break;
-    }
-  }
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{97:8-97:13}:""
-// CHECK: fix-it:"{{.*}}":{95:8-95:8}:" = 0"
-
-
-int test_for_true(int k) {
-  int x; // expected-note {{variable}}
-  int n = 0;
-  for (;
-       n < k; // expected-warning {{whenever 'for' loop is entered}} \
-              // expected-note {{remove the condition if it is always false}}
-       ++n) {
-label:
-    return x; // expected-note {{uninitialized use}}
-  }
-  x = 1;
-  goto label;
-}
-
-// CHECK: fix-it:"{{.*}}":{116:8-116:13}:"false"
-// CHECK: fix-it:"{{.*}}":{113:8-113:8}:" = 0"
-
-
-int test_for_range_false(int k) {
-  int arr[3] = { 1, 2, 3 };
-  int x;
-  for (int &a : arr) { // no-warning, condition was not explicitly specified
-    if (a == k) {
-      x = &a - arr;
-      break;
-    }
-  }
-  return x;
-}
-
-
-
-
-
-int test_for_range_true(int k) {
-  int arr[3] = { 1, 2, 3 };
-  int x;
-  for (int &a : arr) { // no-warning
-    goto label;
-  }
-  x = 0;
-label:
-  return x;
-}
-
-
-
-
-
-int test_conditional_false(int k) {
-  int x; // expected-note {{variable}}
-  (void)(
-      maybe() // expected-warning {{whenever '?:' condition is false}} \
-              // expected-note {{remove the '?:' if its condition is always true}}
-      ? x = 1 : 0);
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{164:7-166:9}:""
-// CHECK: fix-it:"{{.*}}":{166:14-166:18}:""
-// CHECK: fix-it:"{{.*}}":{162:8-162:8}:" = 0"
-
-int test_conditional_true(int k) {
-  int x; // expected-note {{variable}}
-  (void)(
-      maybe() // expected-warning {{whenever '?:' condition is true}} \
-              // expected-note {{remove the '?:' if its condition is always false}}
-      ? 0 : x = 1);
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{177:7-179:13}:""
-// CHECK: fix-it:"{{.*}}":{175:8-175:8}:" = 0"
-
-
-int test_logical_and_false(int k) {
-  int x; // expected-note {{variable}}
-  maybe() // expected-warning {{whenever '&&' condition is false}} \
-          // expected-note {{remove the '&&' if its condition is always true}}
-      && (x = 1);
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{189:3-191:10}:""
-// CHECK: fix-it:"{{.*}}":{188:8-188:8}:" = 0"
-
-
-int test_logical_and_true(int k) {
-  int x; // expected-note {{variable}}
-  maybe() // expected-warning {{whenever '&&' condition is true}} \
-          // expected-note {{remove the '&&' if its condition is always false}}
-      && ({ goto skip_init; 0; });
-  x = 1;
-skip_init:
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{201:3-203:34}:"false"
-// CHECK: fix-it:"{{.*}}":{200:8-200:8}:" = 0"
-
-
-int test_logical_or_false(int k) {
-  int x; // expected-note {{variable}}
-  maybe() // expected-warning {{whenever '||' condition is false}} \
-          // expected-note {{remove the '||' if its condition is always true}}
-      || ({ goto skip_init; 0; });
-  x = 1;
-skip_init:
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{215:3-217:34}:"true"
-// CHECK: fix-it:"{{.*}}":{214:8-214:8}:" = 0"
-
-
-int test_logical_or_true(int k) {
-  int x; // expected-note {{variable}}
-  maybe() // expected-warning {{whenever '||' condition is true}} \
-          // expected-note {{remove the '||' if its condition is always false}}
-      || (x = 1);
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{229:3-231:10}:""
-// CHECK: fix-it:"{{.*}}":{228:8-228:8}:" = 0"
-
-
-int test_switch_case(int k) {
-  int x; // expected-note {{variable}}
-  switch (k) {
-  case 0:
-    x = 0;
-    break;
-  case 1: // expected-warning {{whenever switch case is taken}}
-    break;
-  }
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{240:8-240:8}:" = 0"
-
-
-
-int test_switch_default(int k) {
-  int x; // expected-note {{variable}}
-  switch (k) {
-  case 0:
-    x = 0;
-    break;
-  case 1:
-    x = 1;
-    break;
-  default: // expected-warning {{whenever switch default is taken}}
-    break;
-  }
-  return x; // expected-note {{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{256:8-256:8}:" = 0"
-
-
-
-int test_switch_suppress_1(int k) {
-  int x;
-  switch (k) {
-  case 0:
-    x = 0;
-    break;
-  case 1:
-    x = 1;
-    break;
-  }
-  return x; // no-warning
-}
-
-
-
-
-
-int test_switch_suppress_2(int k) {
-  int x;
-  switch (k) {
-  case 0:
-  case 1:
-    switch (k) {
-    case 0:
-      return 0;
-    case 1:
-      return 1;
-    }
-  case 2:
-  case 3:
-    x = 1;
-  }
-  return x; // no-warning
-}
-
-
-
-
-
-int test_multiple_notes(int k) {
-  int x; // expected-note {{variable}}
-  if (k > 0) {
-    if (k == 5)
-      x = 1;
-    else if (k == 2) // expected-warning {{whenever 'if' condition is false}} \
-                     // expected-note {{remove the 'if' if its condition is always true}}
-      x = 2;
-  } else {
-    if (k == -5)
-      x = 3;
-    else if (k == -2) // expected-warning {{whenever 'if' condition is false}} \
-                      // expected-note {{remove the 'if' if its condition is always true}}
-      x = 4;
-  }
-  return x; // expected-note 2{{uninitialized use}}
-}
-
-// CHECK: fix-it:"{{.*}}":{324:10-326:7}:""
-// CHECK: fix-it:"{{.*}}":{318:10-320:7}:""
-// CHECK: fix-it:"{{.*}}":{314:8-314:8}:" = 0"
-
-int test_no_false_positive_1(int k) {
-  int x;
-  if (k)
-    x = 5;
-  while (!k)
-    maybe();
-  return x;
-}
-
-
-
-
-
-int test_no_false_positive_2() {
-  int x;
-  bool b = false;
-  if (maybe()) {
-    x = 5;
-    b = true;
-  }
-  return b ? x : 0;
-}
-
-
-// FIXME: In this case, the variable is used uninitialized whenever the
-// function's entry block is reached. Produce a diagnostic saying that
-// the variable is uninitialized the first time it is used.
-void test_null_pred_succ() {
-  int x;
-  if (0)
-    foo: x = 0;
-  if (x)
-    goto foo;
-}
-
-
-
-
-void foo();
-int PR13360(bool b) {
-  int x; // expected-note {{variable}}
-  if (b) { // expected-warning {{variable 'x' is used uninitialized whenever 'if' condition is true}} expected-note {{remove}}
-    do {
-      foo();
-    } while (0);
-  } else {
-    x = 1;
-  }
-  return x; // expected-note {{uninitialized use occurs here}}
-}
-
-// CHECK: fix-it:"{{.*}}":{376:3-380:10}:""
-// CHECK: fix-it:"{{.*}}":{375:8-375:8}:" = 0"

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals-ps-region.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals-ps-region.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals-ps-region.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-store=region -analyzer-checker=core,alpha.deadcode.IdempotentOperations -verify %s
-
-struct s {
-  int data;
-};
-
-struct s global;
-
-void g(int);
-
-void f4() {
-  int a;
-  if (global.data == 0)
-    a = 3;
-  if (global.data == 0) // When the true branch is feasible 'a = 3'.
-    g(a); // no-warning
-}
-
-
-// Test uninitialized value due to part of the structure being uninitialized.
-struct TestUninit { int x; int y; };
-struct TestUninit test_uninit_aux();
-void test_unit_aux2(int);
-void test_uninit_pos() {
-  struct TestUninit v1 = { 0, 0 };
-  struct TestUninit v2 = test_uninit_aux();
-  int z;
-  v1.y = z; // expected-warning{{Assigned value is garbage or undefined}}
-  test_unit_aux2(v2.x + v1.y);
-}
-void test_uninit_pos_2() {
-  struct TestUninit v1 = { 0, 0 };
-  struct TestUninit v2;
-  test_unit_aux2(v2.x + v1.y);  // expected-warning{{The left operand of '+' is a garbage value}}
-}
-void test_uninit_pos_3() {
-  struct TestUninit v1 = { 0, 0 };
-  struct TestUninit v2;
-  test_unit_aux2(v1.y + v2.x);  // expected-warning{{The right operand of '+' is a garbage value}}
-}
-
-void test_uninit_neg() {
-  struct TestUninit v1 = { 0, 0 };
-  struct TestUninit v2 = test_uninit_aux();
-  test_unit_aux2(v2.x + v1.y); // expected-warning{{The right operand to '+' is always 0}}
-}
-
-extern void test_uninit_struct_arg_aux(struct TestUninit arg);
-void test_uninit_struct_arg() {
-  struct TestUninit x;
-  test_uninit_struct_arg_aux(x); // expected-warning{{Passed-by-value struct argument contains uninitialized data (e.g., field: 'x')}}
-}
-
- at interface Foo
-- (void) passVal:(struct TestUninit)arg;
- at end
-void testFoo(Foo *o) {
-  struct TestUninit x;
-  [o passVal:x]; // expected-warning{{Passed-by-value struct argument contains uninitialized data (e.g., field: 'x')}}
-}
-
-// Test case from <rdar://problem/7780304>.  That shows an uninitialized value
-// being used in the LHS of a compound assignment.
-void rdar_7780304() {
-  typedef struct s_r7780304 { int x; } s_r7780304;
-  s_r7780304 b;
-  b.x |= 1; // expected-warning{{The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage}}
-}
-
-
-// The flip side of PR10163 -- float arrays that are actually uninitialized
-// (The main test is in uninit-vals.m)
-void test_PR10163(float);
-void PR10163 (void) {
-  float x[2];
-  test_PR10163(x[1]); // expected-warning{{uninitialized value}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals-ps.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals-ps.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals-ps.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,151 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -fblocks -verify %s
-
-struct FPRec {
-  void (*my_func)(int * x);  
-};
-
-int bar(int x);
-
-int f1_a(struct FPRec* foo) {
-  int x;
-  (*foo->my_func)(&x);
-  return bar(x)+1; // no-warning
-}
-
-int f1_b() {
-  int x;
-  return bar(x)+1;  // expected-warning{{Function call argument is an uninitialized value}}
-}
-
-int f2() {
-  
-  int x;
-  
-  if (x+1)  // expected-warning{{The left operand of '+' is a garbage value}}
-    return 1;
-    
-  return 2;  
-}
-
-int f2_b() {
-  int x;
-  
-  return ((1+x)+2+((x))) + 1 ? 1 : 2; // expected-warning{{The right operand of '+' is a garbage value}}
-}
-
-int f3(void) {
-  int i;
-  int *p = &i;
-  if (*p > 0) // expected-warning{{The left operand of '>' is a garbage value}}
-    return 0;
-  else
-    return 1;
-}
-
-void f4_aux(float* x);
-float f4(void) {
-  float x;
-  f4_aux(&x);
-  return x;  // no-warning
-}
-
-struct f5_struct { int x; };
-void f5_aux(struct f5_struct* s);
-int f5(void) {
-  struct f5_struct s;
-  f5_aux(&s);
-  return s.x; // no-warning
-}
-
-int ret_uninit() {
-  int i;
-  int *p = &i;
-  return *p;  // expected-warning{{Undefined or garbage value returned to caller}}
-}
-
-// <rdar://problem/6451816>
-typedef unsigned char Boolean;
-typedef const struct __CFNumber * CFNumberRef;
-typedef signed long CFIndex;
-typedef CFIndex CFNumberType;
-typedef unsigned long UInt32;
-typedef UInt32 CFStringEncoding;
-typedef const struct __CFString * CFStringRef;
-extern Boolean CFNumberGetValue(CFNumberRef number, CFNumberType theType, void *valuePtr);
-extern CFStringRef CFStringConvertEncodingToIANACharSetName(CFStringEncoding encoding);
-
-CFStringRef rdar_6451816(CFNumberRef nr) {
-  CFStringEncoding encoding;
-  // &encoding is casted to void*.  This test case tests whether or not
-  // we properly invalidate the value of 'encoding'.
-  CFNumberGetValue(nr, 9, &encoding);
-  return CFStringConvertEncodingToIANACharSetName(encoding); // no-warning
-}
-
-// PR 4630 - false warning with nonnull attribute
-//  This false positive (due to a regression) caused the analyzer to falsely
-//  flag a "return of uninitialized value" warning in the first branch due to
-//  the nonnull attribute.
-void pr_4630_aux(char *x, int *y) __attribute__ ((nonnull (1)));
-void pr_4630_aux_2(char *x, int *y);
-int pr_4630(char *a, int y) {
-  int x;
-  if (y) {
-    pr_4630_aux(a, &x);
-    return x;   // no-warning
-  }
-  else {
-    pr_4630_aux_2(a, &x);
-    return x;   // no-warning
-  }
-}
-
-// PR 4631 - False positive with union initializer
-//  Previously the analyzer didn't examine the compound initializers of unions,
-//  resulting in some false positives for initializers with side-effects.
-union u_4631 { int a; };
-struct s_4631 { int a; };
-int pr4631_f2(int *p);
-int pr4631_f3(void *q);
-int pr4631_f1(void)
-{
-  int x;
-  union u_4631 m = { pr4631_f2(&x) };
-  pr4631_f3(&m); // tell analyzer that we use m
-  return x;  // no-warning
-}
-int pr4631_f1_b(void)
-{
-  int x;
-  struct s_4631 m = { pr4631_f2(&x) };
-  pr4631_f3(&m); // tell analyzer that we use m
-  return x;  // no-warning
-}
-
-// <rdar://problem/12278788> - FP when returning a void-valued expression from
-// a void function...or block.
-void foo_radar12278788() { return; }
-void test_radar12278788() {
-  return foo_radar12278788(); // no-warning
-}
-
-void foo_radar12278788_fp() { return; }
-typedef int (*RetIntFuncType)();
-typedef void (*RetVoidFuncType)();
-int test_radar12278788_FP() {
-  RetVoidFuncType f = foo_radar12278788_fp;
-  return ((RetIntFuncType)f)(); //expected-warning {{Undefined or garbage value returned to caller}}
-}
-
-void rdar13665798() {
-  ^() {
-    return foo_radar12278788(); // no-warning
-  }();
-  ^void() {
-    return foo_radar12278788(); // no-warning
-  }();
-  ^int() {
-    RetVoidFuncType f = foo_radar12278788_fp;
-    return ((RetIntFuncType)f)(); //expected-warning {{Undefined or garbage value returned to caller}}
-  }();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/uninit-vals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,284 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,debug.ExprInspection -verify %s
-
-typedef unsigned int NSUInteger;
-typedef __typeof__(sizeof(int)) size_t;
-
-void *malloc(size_t);
-void *calloc(size_t nmemb, size_t size);
-void free(void *);
-
-void clang_analyzer_eval(int);
-
- at interface A
-- (NSUInteger)foo;
- at end
-
-NSUInteger f8(A* x){
-  const NSUInteger n = [x foo];
-  int* bogus;  
-
-  if (n > 0) {    // tests const cast transfer function logic
-    NSUInteger i;
-    
-    for (i = 0; i < n; ++i)
-      bogus = 0;
-
-    if (bogus)  // no-warning
-      return n+1;
-  }
-  
-  return n;
-}
-
-
-// PR10163 -- don't warn for default-initialized float arrays.
-// (An additional test is in uninit-vals-ps-region.m)
-void test_PR10163(float);
-void PR10163 (void) {
-  float x[2] = {0};
-  test_PR10163(x[1]); // no-warning  
-}
-
-
-typedef struct {
-  float x;
-  float y;
-  float z;
-} Point;
-typedef struct {
-  Point origin;
-  int size;
-} Circle;
-
-Point makePoint(float x, float y) {
-  Point result;
-  result.x = x;
-  result.y = y;
-  result.z = 0.0;
-  return result;
-}
-
-void PR14765_test() {
-  Circle *testObj = calloc(sizeof(Circle), 1);
-
-  clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}}
-
-  testObj->origin = makePoint(0.0, 0.0);
-  if (testObj->size > 0) { ; } // warning occurs here
-
-  // FIXME: Assigning to 'testObj->origin' kills the default binding for the
-  // whole region, meaning that we've forgotten that testObj->size should also
-  // default to 0. Tracked by <rdar://problem/12701038>.
-  // This should be TRUE.
-  clang_analyzer_eval(testObj->size == 0); // expected-warning{{UNKNOWN}}
-
-  free(testObj);
-}
-
-void PR14765_argument(Circle *testObj) {
-  int oldSize = testObj->size;
-  clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
-
-  testObj->origin = makePoint(0.0, 0.0);
-  clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
-}
-
-
-typedef struct {
-  int x;
-  int y;
-  int z;
-} IntPoint;
-typedef struct {
-  IntPoint origin;
-  int size;
-} IntCircle;
-
-IntPoint makeIntPoint(int x, int y) {
-  IntPoint result;
-  result.x = x;
-  result.y = y;
-  result.z = 0;
-  return result;
-}
-
-void PR14765_test_int() {
-  IntCircle *testObj = calloc(sizeof(IntCircle), 1);
-
-  clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.x == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.y == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.z == 0); // expected-warning{{TRUE}}
-
-  testObj->origin = makeIntPoint(1, 2);
-  if (testObj->size > 0) { ; } // warning occurs here
-
-  // FIXME: Assigning to 'testObj->origin' kills the default binding for the
-  // whole region, meaning that we've forgotten that testObj->size should also
-  // default to 0. Tracked by <rdar://problem/12701038>.
-  // This should be TRUE.
-  clang_analyzer_eval(testObj->size == 0); // expected-warning{{UNKNOWN}}
-  clang_analyzer_eval(testObj->origin.x == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.y == 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.z == 0); // expected-warning{{TRUE}}
-
-  free(testObj);
-}
-
-void PR14765_argument_int(IntCircle *testObj) {
-  int oldSize = testObj->size;
-  clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
-
-  testObj->origin = makeIntPoint(1, 2);
-  clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.x == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.y == 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.z == 0); // expected-warning{{TRUE}}
-}
-
-
-void rdar13292559(Circle input) {
-  extern void useCircle(Circle);
-
-  Circle obj = input;
-  useCircle(obj); // no-warning
-
-  // This generated an "uninitialized 'size' field" warning for a (short) while.
-  obj.origin = makePoint(0.0, 0.0);
-  useCircle(obj); // no-warning
-}
-
-
-typedef struct {
-  int x;
-  int y;
-} IntPoint2D;
-typedef struct {
-  IntPoint2D origin;
-  int size;
-} IntCircle2D;
-
-IntPoint2D makeIntPoint2D(int x, int y) {
-  IntPoint2D result;
-  result.x = x;
-  result.y = y;
-  return result;
-}
-
-void testSmallStructsCopiedPerField() {
-  IntPoint2D a;
-  a.x = 0;
-
-  IntPoint2D b = a;
-  extern void useInt(int);
-  useInt(b.x); // no-warning
-  useInt(b.y); // expected-warning{{uninitialized}}
-}
-
-void testLargeStructsNotCopiedPerField() {
-  IntPoint a;
-  a.x = 0;
-
-  IntPoint b = a;
-  extern void useInt(int);
-  useInt(b.x); // no-warning
-  useInt(b.y); // no-warning
-}
-
-void testSmallStructInLargerStruct() {
-  IntCircle2D *testObj = calloc(sizeof(IntCircle2D), 1);
-
-  clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.x == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.y == 0); // expected-warning{{TRUE}}
-
-  testObj->origin = makeIntPoint2D(1, 2);
-  if (testObj->size > 0) { ; } // warning occurs here
-
-  clang_analyzer_eval(testObj->size == 0); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.x == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.y == 2); // expected-warning{{TRUE}}
-
-  free(testObj);
-}
-
-void testCopySmallStructIntoArgument(IntCircle2D *testObj) {
-  int oldSize = testObj->size;
-  clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
-
-  testObj->origin = makeIntPoint2D(1, 2);
-  clang_analyzer_eval(testObj->size == oldSize); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.x == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(testObj->origin.y == 2); // expected-warning{{TRUE}}
-}
-
-void testSmallStructBitfields() {
-  struct {
-    int x : 4;
-    int y : 4;
-  } a, b;
-
-  a.x = 1;
-  a.y = 2;
-
-  b = a;
-  clang_analyzer_eval(b.x == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b.y == 2); // expected-warning{{TRUE}}
-}
-
-void testSmallStructBitfieldsFirstUndef() {
-  struct {
-    int x : 4;
-    int y : 4;
-  } a, b;
-
-  a.y = 2;
-
-  b = a;
-  clang_analyzer_eval(b.y == 2); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b.x == 1); // expected-warning{{garbage}}
-}
-
-void testSmallStructBitfieldsSecondUndef() {
-  struct {
-    int x : 4;
-    int y : 4;
-  } a, b;
-
-  a.x = 1;
-
-  b = a;
-  clang_analyzer_eval(b.x == 1); // expected-warning{{TRUE}}
-  clang_analyzer_eval(b.y == 2); // expected-warning{{garbage}}
-}
-
-void testSmallStructBitfieldsFirstUnnamed() {
-  struct {
-    int : 4;
-    int y : 4;
-  } a, b, c;
-
-  a.y = 2;
-
-  b = a;
-  clang_analyzer_eval(b.y == 2); // expected-warning{{TRUE}}
-
-  b = c;
-  clang_analyzer_eval(b.y == 2); // expected-warning{{garbage}}
-}
-
-void testSmallStructBitfieldsSecondUnnamed() {
-  struct {
-    int x : 4;
-    int : 4;
-  } a, b, c;
-
-  a.x = 1;
-
-  b = a;
-  clang_analyzer_eval(b.x == 1); // expected-warning{{TRUE}}
-
-  b = c;
-  clang_analyzer_eval(b.x == 1); // expected-warning{{garbage}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/unions-region.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/unions-region.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/unions-region.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store=region -analyzer-constraints=range %s -verify
-// expected-no-diagnostics
-
-//===-- unions-region.m ---------------------------------------------------===//
-//
-// This file tests the analyzer's reasoning about unions.
-//
-//===----------------------------------------------------------------------===//
-
-// [testA] When using RegionStore, this test case previously had a
-// false positive of a 'pass-by-value argument is uninitialized'
-// warning at the call to 'testA_aux' and 'testA_aux_2'.
-union u_testA {
-  unsigned i;
-  float f;
-};
- 
-float testA(float f) {
-  int testA_aux(unsigned x);
-  int testA_aux_2(union u_testA z);
-  
-  union u_testA swap;
-  swap.f = f;
-
-  if (testA_aux(swap.i))  // no-warning
-    swap.i = ((swap.i & 0xffff0000) >> 16) | ((swap.i & 0x0000fffff) << 16);
-
-  testA_aux_2(swap); // no-warning
-
-  return swap.f;  
-}
-
-// [testB] When using RegionStore, this test case previously had a
-// false positive of a 'pass-by-value argument is uninitialized'
-// warning at the call to 'testB_aux'.
-void testB(int i) {
-  void testB_aux(short z);
-  union { short x[2]; unsigned y; } val;  
-  val.y = 10;
-  testB_aux(val.x[1]); // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/unions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/unions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/unions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core %s -verify
-// expected-no-diagnostics
-
-namespace PR14054_reduced {
-  struct Definition;
-  struct ParseNode {
-    union {
-      Definition *lexdef;
-      ParseNode *data;
-    } pn_u;
-  };
-  struct Definition : public ParseNode { };
-
-  void CloneParseTree(ParseNode *opn, ParseNode *pn,  ParseNode *x) {
-    // This used to cause an assertion failure because:
-    // 1. The implicit operator= for unions assigns all members of the union,
-    //    not just the active one (b/c there's no way to know which is active).
-    // 2. RegionStore dutifully stored all the variants at the same offset;
-    //    the last one won.
-    // 3. We asked for the value of the first variant but got back a conjured
-    //    symbol for the second variant.
-    // 4. We ended up trying to add a base cast to a region of the wrong type.
-    //
-    // Now (at the time this test was added), we instead treat all variants of
-    // a union as different offsets, but only allow one to be active at a time.
-    *pn = *opn;
-    x = pn->pn_u.lexdef->pn_u.lexdef;
-  }
-}
-
-namespace PR14054_original {
-  struct Definition;
-  struct ParseNode {
-    union {
-      struct {
-        union {};
-        Definition *lexdef;
-      } name;
-      class {
-        int *target;
-        ParseNode *data;
-      } xmlpi;
-    } pn_u;
-  };
-  struct Definition : public ParseNode { };
-
-  void CloneParseTree(ParseNode *opn, ParseNode *pn,  ParseNode *x) {
-    pn->pn_u = opn->pn_u;
-    x = pn->pn_u.name.lexdef->pn_u.name.lexdef;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/unix-fns.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/unix-fns.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/unix-fns.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2123 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,unix.API,osx.API %s -analyzer-store=region -analyzer-output=plist -analyzer-eagerly-assume -analyzer-config faux-bodies=true -fblocks -verify -o %t.plist
-// RUN: FileCheck --input-file=%t.plist %s
-
-struct _opaque_pthread_once_t {
-  long __sig;
-  char __opaque[8];
-};
-typedef struct _opaque_pthread_once_t    __darwin_pthread_once_t;
-typedef __darwin_pthread_once_t pthread_once_t;
-int pthread_once(pthread_once_t *, void (*)(void));
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-void *calloc(size_t, size_t);
-void *malloc(size_t);
-void *realloc(void *, size_t);
-void *reallocf(void *, size_t);
-void *alloca(size_t);
-void *valloc(size_t);
-
-typedef union {
- struct _os_object_s *_os_obj;
- struct dispatch_object_s *_do;
- struct dispatch_continuation_s *_dc;
- struct dispatch_queue_s *_dq;
- struct dispatch_queue_attr_s *_dqa;
- struct dispatch_group_s *_dg;
- struct dispatch_source_s *_ds;
- struct dispatch_source_attr_s *_dsa;
- struct dispatch_semaphore_s *_dsema;
- struct dispatch_data_s *_ddata;
- struct dispatch_io_s *_dchannel;
- struct dispatch_operation_s *_doperation;
- struct dispatch_disk_s *_ddisk;
-} dispatch_object_t __attribute__((__transparent_union__));
-
-typedef void (^dispatch_block_t)(void);
-typedef long dispatch_once_t;
-typedef struct dispatch_queue_s *dispatch_queue_t;
-void dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
-void dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
-
-#ifndef O_CREAT
-#define O_CREAT 0x0200
-#define O_RDONLY 0x0000
-#endif
-int open(const char *, int, ...);
-int close(int fildes);
-
-void test_open(const char *path) {
-  int fd;
-  fd = open(path, O_RDONLY); // no-warning
-  if (!fd)
-    close(fd);
-
-  fd = open(path, O_CREAT); // expected-warning{{Call to 'open' requires a third argument when the 'O_CREAT' flag is set}}
-  if (!fd)
-    close(fd);
-} 
-
-void test_dispatch_once() {
-  dispatch_once_t pred = 0;
-  do { if (__builtin_expect(*(&pred), ~0l) != ~0l) dispatch_once((&pred), (^() {})); } while (0); // expected-warning{{Call to 'dispatch_once' uses the local variable 'pred' for the predicate value}}
-}
-void test_dispatch_once_neg() {
-  static dispatch_once_t pred = 0;
-  do { if (__builtin_expect(*(&pred), ~0l) != ~0l) dispatch_once((&pred), (^() {})); } while (0); // no-warning
-}
-
-void test_pthread_once_aux();
-
-void test_pthread_once() {
-  pthread_once_t pred = {0x30B1BCBA, {0}};
-  pthread_once(&pred, test_pthread_once_aux); // expected-warning{{Call to 'pthread_once' uses the local variable 'pred' for the "control" value}}
-}
-void test_pthread_once_neg() {
-  static pthread_once_t pred = {0x30B1BCBA, {0}};
-  pthread_once(&pred, test_pthread_once_aux); // no-warning
-}
-
-// PR 2899 - warn of zero-sized allocations to malloc().
-void pr2899() {
-  char* foo = malloc(0); // expected-warning{{Call to 'malloc' has an allocation size of 0 bytes}}
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void pr2899_nowarn(size_t size) {
-  char* foo = malloc(size); // no-warning
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_calloc(void) {
-  char *foo = calloc(0, 42); // expected-warning{{Call to 'calloc' has an allocation size of 0 bytes}}
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_calloc2(void) {
-  char *foo = calloc(42, 0); // expected-warning{{Call to 'calloc' has an allocation size of 0 bytes}}
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_calloc_nowarn(size_t nmemb, size_t size) {
-  char *foo = calloc(nmemb, size); // no-warning
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_realloc(char *ptr) {
-  char *foo = realloc(ptr, 0); // expected-warning{{Call to 'realloc' has an allocation size of 0 bytes}}
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_reallocf(char *ptr) {
-  char *foo = reallocf(ptr, 0); // expected-warning{{Call to 'reallocf' has an allocation size of 0 bytes}}
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_realloc_nowarn(char *ptr, size_t size) {
-  char *foo = realloc(ptr, size); // no-warning
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_reallocf_nowarn(char *ptr, size_t size) {
-  char *foo = reallocf(ptr, size); // no-warning
-  for (unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_alloca() {
-  char *foo = alloca(0); // expected-warning{{Call to 'alloca' has an allocation size of 0 bytes}}
-  for(unsigned i = 0; i < 100; i++) {
-    foo[i] = 0; 
-  }
-}
-void test_alloca_nowarn(size_t sz) {
-  char *foo = alloca(sz); // no-warning
-  for(unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-void test_builtin_alloca() {
-  char *foo2 = __builtin_alloca(0); // expected-warning{{Call to 'alloca' has an allocation size of 0 bytes}}
-  for(unsigned i = 0; i < 100; i++) {
-    foo2[i] = 0; 
-  }
-}
-void test_builtin_alloca_nowarn(size_t sz) {
-  char *foo2 = __builtin_alloca(sz); // no-warning
-  for(unsigned i = 0; i < 100; i++) {
-    foo2[i] = 0;
-  }
-}
-void test_valloc() {
-  char *foo = valloc(0); // expected-warning{{Call to 'valloc' has an allocation size of 0 bytes}}
-  for(unsigned i = 0; i < 100; i++) {
-    foo[i] = 0; 
-  }
-}
-void test_valloc_nowarn(size_t sz) {
-  char *foo = valloc(sz); // no-warning
-  for(unsigned i = 0; i < 100; i++) {
-    foo[i] = 0;
-  }
-}
-
-// Test dispatch_once being a macro that wraps a call to _dispatch_once, which in turn
-// calls the real dispatch_once.
-
-static inline void _dispatch_once(dispatch_once_t *predicate, dispatch_block_t block)
-{
-  dispatch_once(predicate, block);
-}
-
-#define dispatch_once _dispatch_once
-
-void test_dispatch_once_in_macro() {
-  dispatch_once_t pred = 0;
-  dispatch_once(&pred, ^(){});  // expected-warning {{Call to 'dispatch_once' uses the local variable 'pred' for the predicate value}}
-}
-
-// Test inlining of dispatch_sync.
-void test_dispatch_sync(dispatch_queue_t queue, int *q) {
-  int *p = 0;
-  dispatch_sync(queue, ^(void){ 
-	  if (q) {
-		*p = 1; // expected-warning {{null pointer}}
-	   }
-  });
-}
-
-// Test inlining if dispatch_once.
-void test_inline_dispatch_once() {
-  static dispatch_once_t pred;
-  int *p = 0;
-  dispatch_once(&pred, ^(void) {
-	  *p = 1; // expected-warning {{null}}
-  });
-}
-
-// CHECK:  <key>diagnostics</key>
-// CHECK-NEXT:  <array>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>50</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>52</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>52</integer>
-// CHECK-NEXT:          <key>col</key><integer>7</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>52</integer>
-// CHECK-NEXT:          <key>col</key><integer>9</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'fd' is not equal to 0</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'fd' is not equal to 0</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>52</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>55</integer>
-// CHECK-NEXT:            <key>col</key><integer>11</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>55</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>55</integer>
-// CHECK-NEXT:          <key>col</key><integer>19</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>55</integer>
-// CHECK-NEXT:          <key>col</key><integer>25</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'open' requires a third argument when the 'O_CREAT' flag is set</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'open' requires a third argument when the 'O_CREAT' flag is set</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'open' requires a third argument when the 'O_CREAT' flag is set</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Improper use of 'open'</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_open</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>55</integer>
-// CHECK-NEXT:    <key>col</key><integer>8</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>61</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>61</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>9</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>52</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>62</integer>
-// CHECK-NEXT:            <key>col</key><integer>64</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>62</integer>
-// CHECK-NEXT:       <key>col</key><integer>52</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>66</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>62</integer>
-// CHECK-NEXT:          <key>col</key><integer>72</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'dispatch_once' uses the local variable 'pred' for the predicate value.  Using such transient memory for the predicate is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'dispatch_once' uses the local variable 'pred' for the predicate value.  Using such transient memory for the predicate is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'dispatch_once' uses the local variable 'pred' for the predicate value.  Using such transient memory for the predicate is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>Improper use of 'dispatch_once'</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_dispatch_once</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>62</integer>
-// CHECK-NEXT:    <key>col</key><integer>52</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>72</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>73</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>73</integer>
-// CHECK-NEXT:            <key>col</key><integer>14</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>73</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>73</integer>
-// CHECK-NEXT:          <key>col</key><integer>16</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>73</integer>
-// CHECK-NEXT:          <key>col</key><integer>20</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'pthread_once' uses the local variable 'pred' for the "control" value.  Using such transient memory for the control value is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'pthread_once' uses the local variable 'pred' for the "control" value.  Using such transient memory for the control value is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'pthread_once' uses the local variable 'pred' for the "control" value.  Using such transient memory for the control value is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Improper use of 'pthread_once'</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_pthread_once</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>73</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>82</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>82</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>82</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>82</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'malloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'malloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'malloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>pr2899</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>82</integer>
-// CHECK-NEXT:    <key>col</key><integer>15</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>94</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>94</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>94</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>94</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>94</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>94</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>94</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'calloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'calloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'calloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_calloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>94</integer>
-// CHECK-NEXT:    <key>col</key><integer>15</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>100</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>100</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>100</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>100</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>100</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>100</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>100</integer>
-// CHECK-NEXT:          <key>col</key><integer>26</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'calloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'calloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'calloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_calloc2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>100</integer>
-// CHECK-NEXT:    <key>col</key><integer>15</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>112</integer>
-// CHECK-NEXT:            <key>col</key><integer>21</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>112</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>112</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>112</integer>
-// CHECK-NEXT:          <key>col</key><integer>28</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'realloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'realloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'realloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_realloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>112</integer>
-// CHECK-NEXT:    <key>col</key><integer>15</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>118</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>118</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>118</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>118</integer>
-// CHECK-NEXT:            <key>col</key><integer>22</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>118</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>118</integer>
-// CHECK-NEXT:          <key>col</key><integer>29</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>118</integer>
-// CHECK-NEXT:          <key>col</key><integer>29</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'reallocf' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'reallocf' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'reallocf' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_reallocf</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>118</integer>
-// CHECK-NEXT:    <key>col</key><integer>15</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>136</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>136</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>136</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>136</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'alloca' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'alloca' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'alloca' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_alloca</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>136</integer>
-// CHECK-NEXT:    <key>col</key><integer>15</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>148</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>148</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>148</integer>
-// CHECK-NEXT:            <key>col</key><integer>16</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>148</integer>
-// CHECK-NEXT:            <key>col</key><integer>31</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>148</integer>
-// CHECK-NEXT:       <key>col</key><integer>16</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>148</integer>
-// CHECK-NEXT:          <key>col</key><integer>33</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>148</integer>
-// CHECK-NEXT:          <key>col</key><integer>33</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'alloca' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'alloca' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'alloca' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_builtin_alloca</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>148</integer>
-// CHECK-NEXT:    <key>col</key><integer>16</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>160</integer>
-// CHECK-NEXT:            <key>col</key><integer>20</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>160</integer>
-// CHECK-NEXT:       <key>col</key><integer>15</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>160</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>160</integer>
-// CHECK-NEXT:          <key>col</key><integer>22</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'valloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'valloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'valloc' has an allocation size of 0 bytes</string>
-// CHECK-NEXT:    <key>category</key><string>Unix API</string>
-// CHECK-NEXT:    <key>type</key><string>Undefined allocation of 0 bytes (CERT MEM04-C; CWE-131)</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_valloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>160</integer>
-// CHECK-NEXT:    <key>col</key><integer>15</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>183</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>183</integer>
-// CHECK-NEXT:            <key>col</key><integer>17</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>184</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>184</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>184</integer>
-// CHECK-NEXT:          <key>col</key><integer>17</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>184</integer>
-// CHECK-NEXT:          <key>col</key><integer>21</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Call to 'dispatch_once' uses the local variable 'pred' for the predicate value.  Using such transient memory for the predicate is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Call to 'dispatch_once' uses the local variable 'pred' for the predicate value.  Using such transient memory for the predicate is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Call to 'dispatch_once' uses the local variable 'pred' for the predicate value.  Using such transient memory for the predicate is potentially dangerous.  Perhaps you intended to declare the variable as 'static'?</string>
-// CHECK-NEXT:    <key>category</key><string>API Misuse (Apple)</string>
-// CHECK-NEXT:    <key>type</key><string>Improper use of 'dispatch_once'</string>
-// CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
-// CHECK-NEXT:   <key>issue_context</key><string>test_dispatch_once_in_macro</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>184</integer>
-// CHECK-NEXT:    <key>col</key><integer>3</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>189</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>189</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>189</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>189</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>189</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>190</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>190</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>190</integer>
-// CHECK-NEXT:       <key>col</key><integer>24</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>190</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>194</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' captured by block as a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' captured by block as a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>190</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>190</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>194</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'dispatch_sync'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'dispatch_sync'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>40</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_dispatch_sync'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_dispatch_sync'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>40</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>190</integer>
-// CHECK-NEXT:       <key>col</key><integer>24</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'dispatch_sync'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'dispatch_sync'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>190</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>190</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>191</integer>
-// CHECK-NEXT:       <key>col</key><integer>8</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>191</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>191</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Assuming 'q' is non-null</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Assuming 'q' is non-null</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>191</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>192</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>192</integer>
-// CHECK-NEXT:       <key>col</key><integer>6</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>192</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>192</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>192</integer>
-// CHECK-NEXT:    <key>col</key><integer>6</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>path</key>
-// CHECK-NEXT:    <array>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>199</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>199</integer>
-// CHECK-NEXT:            <key>col</key><integer>8</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>200</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>200</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>200</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>200</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>200</integer>
-// CHECK-NEXT:          <key>col</key><integer>8</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' initialized to a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>200</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>200</integer>
-// CHECK-NEXT:            <key>col</key><integer>5</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>201</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>201</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>201</integer>
-// CHECK-NEXT:       <key>col</key><integer>24</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>201</integer>
-// CHECK-NEXT:          <key>col</key><integer>24</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>203</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>'p' captured by block as a null pointer value</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>'p' captured by block as a null pointer value</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>201</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>201</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>203</integer>
-// CHECK-NEXT:          <key>col</key><integer>4</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>0</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling '_dispatch_once'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling '_dispatch_once'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>175</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_inline_dispatch_once'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'test_inline_dispatch_once'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>1</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>175</integer>
-// CHECK-NEXT:            <key>col</key><integer>6</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>177</integer>
-// CHECK-NEXT:            <key>col</key><integer>3</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>177</integer>
-// CHECK-NEXT:            <key>col</key><integer>15</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>177</integer>
-// CHECK-NEXT:       <key>col</key><integer>3</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>177</integer>
-// CHECK-NEXT:          <key>col</key><integer>3</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>177</integer>
-// CHECK-NEXT:          <key>col</key><integer>33</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>1</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling 'dispatch_once'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling 'dispatch_once'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>39</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from '_dispatch_once'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from '_dispatch_once'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>39</integer>
-// CHECK-NEXT:       <key>col</key><integer>1</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>2</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Calling anonymous block</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>201</integer>
-// CHECK-NEXT:       <key>col</key><integer>24</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>depth</key><integer>3</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Entered call from 'dispatch_once'</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Entered call from 'dispatch_once'</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>201</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>201</integer>
-// CHECK-NEXT:            <key>col</key><integer>24</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>202</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>202</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>control</string>
-// CHECK-NEXT:      <key>edges</key>
-// CHECK-NEXT:       <array>
-// CHECK-NEXT:        <dict>
-// CHECK-NEXT:         <key>start</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>202</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>202</integer>
-// CHECK-NEXT:            <key>col</key><integer>4</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:         <key>end</key>
-// CHECK-NEXT:          <array>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>202</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:           <dict>
-// CHECK-NEXT:            <key>line</key><integer>202</integer>
-// CHECK-NEXT:            <key>col</key><integer>7</integer>
-// CHECK-NEXT:            <key>file</key><integer>0</integer>
-// CHECK-NEXT:           </dict>
-// CHECK-NEXT:          </array>
-// CHECK-NEXT:        </dict>
-// CHECK-NEXT:       </array>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:     <dict>
-// CHECK-NEXT:      <key>kind</key><string>event</string>
-// CHECK-NEXT:      <key>location</key>
-// CHECK-NEXT:      <dict>
-// CHECK-NEXT:       <key>line</key><integer>202</integer>
-// CHECK-NEXT:       <key>col</key><integer>7</integer>
-// CHECK-NEXT:       <key>file</key><integer>0</integer>
-// CHECK-NEXT:      </dict>
-// CHECK-NEXT:      <key>ranges</key>
-// CHECK-NEXT:      <array>
-// CHECK-NEXT:        <array>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>202</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:         <dict>
-// CHECK-NEXT:          <key>line</key><integer>202</integer>
-// CHECK-NEXT:          <key>col</key><integer>5</integer>
-// CHECK-NEXT:          <key>file</key><integer>0</integer>
-// CHECK-NEXT:         </dict>
-// CHECK-NEXT:        </array>
-// CHECK-NEXT:      </array>
-// CHECK-NEXT:      <key>depth</key><integer>3</integer>
-// CHECK-NEXT:      <key>extended_message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT:      <string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:     </dict>
-// CHECK-NEXT:    </array>
-// CHECK-NEXT:    <key>description</key><string>Dereference of null pointer (loaded from variable 'p')</string>
-// CHECK-NEXT:    <key>category</key><string>Logic error</string>
-// CHECK-NEXT:    <key>type</key><string>Dereference of null pointer</string>
-// CHECK-NEXT:   <key>location</key>
-// CHECK-NEXT:   <dict>
-// CHECK-NEXT:    <key>line</key><integer>202</integer>
-// CHECK-NEXT:    <key>col</key><integer>7</integer>
-// CHECK-NEXT:    <key>file</key><integer>0</integer>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:   </dict>
-// CHECK-NEXT:  </array>

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/unreachable-code-path.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/unreachable-code-path.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/unreachable-code-path.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,141 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,deadcode.DeadStores,alpha.deadcode.UnreachableCode -verify -analyzer-opt-analyze-nested-blocks -Wno-unused-value %s
-
-extern void foo(int a);
-
-// The first few tests are non-path specific - we should be able to find them
-
-void test(unsigned a) {
-  switch (a) {
-    a += 5; // expected-warning{{never executed}}
-  case 2:
-    a *= 10;
-  case 3:
-    a %= 2;
-  }
-  foo(a);
-}
-
-void test2(unsigned a) {
- help:
-  if (a > 0)
-    return;
-  if (a == 0)
-    return;
-  foo(a); // expected-warning{{never executed}}
-  goto help;
-}
-
-void test3(unsigned a) {
-  while(1);
-  if (a > 5) { // expected-warning{{never executed}}
-    return;
-  }
-}
-
-// These next tests are path-sensitive
-
-void test4() {
-  int a = 5;
-
-  while (a > 1)
-    a -= 2;
-
-  if (a > 1) {
-    a = a + 56; // expected-warning{{never executed}}
-  }
-
-  foo(a);
-}
-
-extern void bar(char c);
-
-void test5(const char *c) {
-  foo(c[0]);
-
-  if (!c) {
-    bar(1); // expected-warning{{never executed}}
-  }
-}
-
-// These next tests are false positives and should not generate warnings
-
-void test6(const char *c) {
-  if (c) return;
-  if (!c) return;
-  __builtin_unreachable(); // no-warning
-}
-
-// Compile-time constant false positives
-#define CONSTANT 0
-enum test_enum { Off, On };
-void test7() {
-  if (CONSTANT)
-    return; // no-warning
-
-  if (sizeof(int))
-    return; // no-warning
-
-  if (Off)
-    return; // no-warning
-}
-
-void test8() {
-  static unsigned a = 0;
-
-  if (a)
-    a = 123; // no-warning
-
-  a = 5;
-}
-
-// Check for bugs where multiple statements are reported
-void test9(unsigned a) {
-  switch (a) {
-    if (a) // expected-warning{{never executed}}
-      foo(a + 5); // no-warning
-    else          // no-warning
-      foo(a);     // no-warning
-    case 1:
-    case 2:
-      break;
-    default:
-      break;
-  }
-}
-
-// Tests from flow-sensitive version
-void test10() {
-  goto c;
-  d:
-  goto e; // expected-warning {{never executed}}
-  c: ;
-  int i;
-  return;
-  goto b; // expected-warning {{never executed}}
-  goto a; // expected-warning {{never executed}}
-  b:
-  i = 1; // no-warning
-  a:
-  i = 2;  // no-warning
-  goto f;
-  e:
-  goto d;
-  f: ;
-}
-
-// test11: we can actually end up in the default case, even if it is not
-// obvious: there might be something wrong with the given argument.
-enum foobar { FOO, BAR };
-extern void error();
-void test11(enum foobar fb) {
-  switch (fb) {
-    case FOO:
-      break;
-    case BAR:
-      break;
-    default:
-      error(); // no-warning
-      return;
-      error(); // expected-warning {{never executed}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/unused-ivars.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/unused-ivars.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/unused-ivars.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,131 +0,0 @@
-// RUN: %clang_cc1 -fblocks -analyze -analyzer-checker=osx.cocoa.UnusedIvars -verify -Wno-objc-root-class %s
-
-//===--- BEGIN: Delta-debugging reduced headers. --------------------------===//
-
- at protocol NSObject
-- (id)retain;
-- (oneway void)release;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
- at end
-
-//===--- END: Delta-debugging reduced headers. ----------------------------===//
-
-// This test case tests the basic functionality of the unused ivar test.
- at interface TestA {
- at private
-  int x; // expected-warning {{Instance variable 'x' in class 'TestA' is never used}}
-}
- at end
- at implementation TestA @end
-
-// This test case tests whether the unused ivar check handles blocks that
-// reference an instance variable. (<rdar://problem/7075531>)
- at interface TestB : NSObject {
- at private
-  id _ivar; // no-warning
-}
- at property (readwrite,retain) id ivar;
- at end
-
- at implementation TestB
-- (id)ivar {
-  __attribute__((__blocks__(byref))) id value = ((void*)0);
-  void (^b)() = ^{ value = _ivar; };
-  b();
-  return value;
-}
-
-- (void)setIvar:(id)newValue {
-  void (^b)() = ^{ [_ivar release]; _ivar = [newValue retain]; };
-  b();
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/6260004> Detect that ivar is in use, if used in category 
-//  in the same file as the implementation
-//===----------------------------------------------------------------------===//
-
- at protocol Protocol6260004
-- (id) getId;
- at end
-
- at interface RDar6260004 {
- at private
-  id x; // no-warning
-}
- at end
- at implementation RDar6260004 @end
- at implementation RDar6260004 (Protocol6260004)
-- (id) getId {
-  return x;
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7254495> - ivars referenced by lexically nested functions
-//  should not be flagged as unused
-//===----------------------------------------------------------------------===//
-
- at interface RDar7254495 {
- at private
-  int x; // no-warning
-}
- at end
-
- at implementation RDar7254495
-int radar_7254495(RDar7254495 *a) {
-  return a->x;
-}
- at end
-
-//===----------------------------------------------------------------------===//
-// <rdar://problem/7353683> - consult attribute((unused)) to silence warnings
-// about unused instance variables
-//===----------------------------------------------------------------------===//
-
- at interface RDar7353683 {
- at private
-  id x __attribute__((unused));
-}
- at end
-
- at implementation RDar7353683
- at end
-//===----------------------------------------------------------------------===//
-// <rdar://problem/8481311> Unused bitfield ivars trigger cause weird
-// diagnostic: "Instance variable '' in class..."
-//===----------------------------------------------------------------------===//
-
- at interface RDar8481311 {
- at private
-    unsigned bitfield:1; // expected-warning {{Instance variable 'bitfield' in class 'RDar8481311' is never used}}
-}
- at end
-
- at implementation RDar8481311
- at end
-
- at class NSString;
- at interface Radar11059352_1 {
- at private
-    NSString *_pathString;
-}
- at property (readonly, strong) NSString *pathString;
- at end
-
- at interface Radar11059352 {
- at private
-Radar11059352_1 *_workspacePath;
-}
- at end
-
- at implementation Radar11059352
-
-- (void)useWorkspace {
-    NSString *workspacePathString = _workspacePath.pathString;
-}
- at end
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/variadic-method-types.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/variadic-method-types.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/variadic-method-types.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -analyze -analyzer-checker=core,osx.cocoa.VariadicMethodTypes -analyzer-store=region -fblocks -verify %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not directly including Foundation.h directly makes this test case 
-// both svelte and portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-#define nil (void*)0
-typedef const struct __CFString * CFStringRef;
-extern const CFStringRef kCGImageSourceShouldCache __attribute__((visibility("default")));
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-typedef unsigned int NSUInteger;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (oneway void)release;
-- (id)retain;
-- (id)autorelease;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at class NSCoder;
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
-- (id)init;
-+ (id)alloc;
- at end
-typedef struct {} NSFastEnumerationState;
- at protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
- at end
- at interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
- at end
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
- at end
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjectsAndKeys:(id)firstObject, ... __attribute__((sentinel(0,1)));
- at end
- at interface NSSet : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
- at end
- at interface NSSet (NSSetCreation)
-+ (id)setWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
- at end
- at interface NSOrderedSet : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
- at end
- at interface NSOrderedSet (NSOrderedSetCreation)
-+ (id)orderedSetWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id)initWithObjects:(id)firstObj, ... __attribute__((sentinel(0,1)));
- at end
- at protocol P;
- at class C;
-
-typedef struct FooType * __attribute__ ((NSObject)) FooType;
-typedef struct BarType * BarType;
-
-
-void f(id a, id<P> b, C* c, C<P> *d, FooType fooType, BarType barType) {
-  [NSArray arrayWithObjects:@"Hello", a, b, c, d, nil];
-  [NSArray arrayWithObjects:@"Foo", ^{}, nil];
-
-  [NSArray arrayWithObjects:@"Foo", "Bar", "Baz", nil]; // expected-warning {{Argument to 'NSArray' method 'arrayWithObjects:' should be an Objective-C pointer type, not 'char *'}}
-  [NSDictionary dictionaryWithObjectsAndKeys:@"Foo", "Bar", nil]; // expected-warning {{Argument to 'NSDictionary' method 'dictionaryWithObjectsAndKeys:' should be an Objective-C pointer type, not 'char *'}}
-  [NSSet setWithObjects:@"Foo", "Bar", nil]; // expected-warning {{Argument to 'NSSet' method 'setWithObjects:' should be an Objective-C pointer type, not 'char *'}}
-  [NSOrderedSet orderedSetWithObjects:@"Foo", "Bar", nil]; // expected-warning {{Argument to 'NSOrderedSet' method 'orderedSetWithObjects:' should be an Objective-C pointer type, not 'char *'}}
-
-  [[[NSArray alloc] initWithObjects:@"Foo", "Bar", nil] autorelease]; // expected-warning {{Argument to 'NSArray' method 'initWithObjects:' should be an Objective-C pointer type, not 'char *'}}
-  [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", "Bar", nil] autorelease]; // expected-warning {{Argument to 'NSDictionary' method 'initWithObjectsAndKeys:' should be an Objective-C pointer type, not 'char *'}}
-  [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", (void*) 0, nil] autorelease]; // no-warning
-  [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", kCGImageSourceShouldCache, nil] autorelease]; // no-warning
-  [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", fooType, nil] autorelease]; // no-warning
-  [[[NSDictionary alloc] initWithObjectsAndKeys:@"Foo", barType, nil] autorelease]; // expected-warning {{Argument to 'NSDictionary' method 'initWithObjectsAndKeys:' should be an Objective-C pointer type, not 'BarType'}}
-  [[[NSSet alloc] initWithObjects:@"Foo", "Bar", nil] autorelease]; // expected-warning {{Argument to 'NSSet' method 'initWithObjects:' should be an Objective-C pointer type, not 'char *'}}
-  [[[NSOrderedSet alloc] initWithObjects:@"Foo", "Bar", nil] autorelease]; // expected-warning {{Argument to 'NSOrderedSet' method 'initWithObjects:' should be an Objective-C pointer type, not 'char *'}}
-}
-
-// This previously crashed the variadic argument checker.
- at protocol RDar9273215
-- (void)rdar9273215:(id)x, ...;
- at end
-
-void test_rdar9273215(id<RDar9273215> y) {
-  return [y rdar9273215:y, y];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/virtualcall.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/virtualcall.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/virtualcall.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=alpha.cplusplus.VirtualCall -analyzer-store region -verify %s
-
-class A {
-public:
-  A();
-  ~A() {};
-  
-  virtual int foo() = 0;
-  virtual void bar() = 0;
-  void f() {
-    foo(); // expected-warning{{Call pure virtual functions during construction or destruction may leads undefined behaviour}}
-  }
-};
-
-class B : public A {
-public:
-  B() {
-    foo(); // expected-warning{{Call virtual functions during construction or destruction will never go to a more derived class}}
-  }
-  ~B();
-  
-  virtual int foo();
-  virtual void bar() { foo(); }  // expected-warning{{Call virtual functions during construction or destruction will never go to a more derived class}}
-};
-
-A::A() {
-  f();
-}
-
-B::~B() {
-  this->B::foo(); // no-warning
-  this->B::bar();
-  this->foo(); // expected-warning{{Call virtual functions during construction or destruction will never go to a more derived class}}
-}
-
-class C : public B {
-public:
-  C();
-  ~C();
-  
-  virtual int foo();
-  void f(int i);
-};
-
-C::C() {
-  f(foo()); // expected-warning{{Call virtual functions during construction or destruction will never go to a more derived class}}
-}
-
-int main() {
-  A *a;
-  B *b;
-  C *c;
-}
-
-#include "virtualcall.h"
-
-#define AS_SYSTEM
-#include "virtualcall.h"
-#undef AS_SYSTEM

Modified: trunk/contrib/llvm/tools/clang/test/Analysis/virtualcall.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Analysis/virtualcall.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Analysis/virtualcall.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-#ifdef AS_SYSTEM
-#pragma clang system_header
-
-namespace system {
-  class A {
-  public:
-    A() {
-      foo(); // no-warning
-    }
-
-    virtual int foo();
-  };
-}
-
-#else
-
-namespace header {
-  class A {
-  public:
-    A() {
-      foo(); // expected-warning{{Call virtual functions during construction or destruction will never go to a more derived class}}
-    }
-
-    virtual int foo();
-  };
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.def.odr/p1-var.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.def.odr/p1-var.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.def.odr/p1-var.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++ [basic.def.odr]p1:
-//   No translation unit shall contain more than one definition of any
-//   variable, [...].
-
-// Bad: in C++, these are both definitions. None of that C99 tentative stuff.
-int i; // expected-note {{previous}}
-int i; // expected-error {{redefinition}}
-
-// OK: decl + def
-extern int j;
-int j;
-
-// OK: def + decl
-int k;
-extern int k;
-
-// Bad. The important thing here is that we don't emit the diagnostic twice.
-int l = 1; // expected-note {{previous}}
-int l = 2; // expected-error {{redefinition}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.def.odr/p2-typeid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.def.odr/p2-typeid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.def.odr/p2-typeid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++ [basic.def.odr]p2:
-//   An expression is potentially evaluated unless it [...] is the
-//   operand of the typeid operator and the expression does not
-//   designate an lvalue of polymorphic class type.
-
-// FIXME: This should really include <typeinfo>, but we don't have that yet.
-namespace std {
-  class type_info;
-}
-
-struct Poly {
-  virtual ~Poly();
-};
-
-struct NonPoly { };
-
-template<typename T, typename Result = T> 
-struct X {
-  Result f(T t) { return t + t; } // expected-error{{invalid operands}}
-
-  void g(T t) {
-    (void)typeid(f(t)); // expected-note{{here}}
-  }
-};
-
-void test(X<Poly> xp, X<Poly, Poly&> xpr, X<NonPoly> xnp, X<NonPoly, NonPoly&> xnpr) {
-  // These are okay (although GCC and EDG get them wrong).
-  xp.g(Poly());
-  xnp.g(NonPoly());
-  xnpr.g(NonPoly());
-
-  // Triggers an error (as it should);
-  xpr.g(Poly()); // expected-note{{instantiation of member function}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.link/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.link/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.link/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++11 [basic.link]p6:
-//   The name of a function declared in block scope and the name
-//   of a variable declared by a block scope extern declaration
-//   have linkage. If there is a visible declaration of an entity
-//   with linkage having the same name and type, ignoring entities
-//   declared outside the innermost enclosing namespace scope, the
-//   block scope declaration declares that same entity and
-//   receives the linkage of the previous declaration.
-
-// rdar://13535367
-namespace test0 {
-  extern "C" int test0_array[];
-  void declare() { extern int test0_array[100]; }
-  extern "C" int test0_array[];
-  int value = sizeof(test0_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
-}
-
-namespace test1 {
-  extern "C" int test1_array[];
-  void test() {
-    { extern int test1_array[100]; }
-    extern int test1_array[];
-    int x = sizeof(test1_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
-  }
-}
-
-namespace test2 {
-  void declare() { extern int test2_array[100]; }
-  extern int test2_array[];
-  int value = sizeof(test2_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
-}
-
-namespace test3 {
-  void test() {
-    { extern int test3_array[100]; }
-    extern int test3_array[];
-    int x = sizeof(test3_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
-  }
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.link/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.link/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.link/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// FIXME: This test is woefully incomplete.
-namespace N { } // expected-note{{here}}
-
-// First bullet: two names with external linkage that refer to
-// different kinds of entities.
-void f() {
-  int N(); // expected-error{{redefinition}} expected-warning{{interpreted as a function declaration}} expected-note {{replace parentheses with an initializer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p2-template-id.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p2-template-id.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p2-template-id.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace N1 {
-  struct X { };
-  int& f(void*);
-}
-
-namespace N2 {
-  template<typename T> struct Y { };
-}
-
-namespace N3 {
-  void test() {
-    int &ir = f((N2::Y<N1::X>*)0);
-  }
-}
-
-int g(void *);
-long g(N1::X);
-
-namespace N1 {
-  void h(int (*)(void *));
-}
-
-void test() {
-  h((&g));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,134 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace N {
-  struct X { };
-  
-  X operator+(X, X);
-
-  void f(X);
-  void g(X); // expected-note{{candidate function}}
-
-  void test_multiadd(X x) {
-    (void)(x + x);
-  }
-}
-
-namespace M {
-  struct Y : N::X { };
-}
-
-void f(); // expected-note 2 {{'f' declared here}}
-
-void test_operator_adl(N::X x, M::Y y) {
-  (void)(x + x);
-  (void)(y + y);
-}
-
-void test_func_adl(N::X x, M::Y y) {
-  f(x);
-  f(y);
-  (f)(x); // expected-error{{too many arguments to function call}}
-  ::f(x); // expected-error{{too many arguments to function call}}
-}
-
-namespace N {
-  void test_multiadd2(X x) {
-    (void)(x + x);
-  }
-}
-
-
-void test_func_adl_only(N::X x) {
-  g(x);
-}
-
-namespace M {
-  int g(N::X); // expected-note{{candidate function}}
-
-  void test(N::X x) {
-    g(x); // expected-error{{call to 'g' is ambiguous}}
-    int i = (g)(x);
-
-    int g(N::X);
-    g(x); // okay; calls locally-declared function, no ADL
-  }
-}
-
-
-void test_operator_name_adl(N::X x) {
-  (void)operator+(x, x);
-}
-
-struct Z { };
-int& f(Z);
-
-namespace O {
-  char &f();
-  void test_global_scope_adl(Z z) {
-    {
-      int& ir = f(z);
-    }
-  }
-}
-
-extern "C" {
-  struct L { };
-}
-
-void h(L); // expected-note{{candidate function}}
-
-namespace P {
-  void h(L); // expected-note{{candidate function}}
-  void test_transparent_context_adl(L l) {
-    {
-      h(l); // expected-error {{call to 'h' is ambiguous}}
-    }
-  }
-}
-
-namespace test5 {
-  namespace NS {
-    struct A;
-    void foo(void (*)(A&));
-  }
-  void bar(NS::A& a);
-
-  void test() {
-    foo(&bar);
-  }
-}
-
-// PR6762: __builtin_va_list should be invisible to ADL on all platforms.
-void test6_function(__builtin_va_list &argv);
-namespace test6 {
-  void test6_function(__builtin_va_list &argv);
-
-  void test() {
-    __builtin_va_list args;
-    test6_function(args);
-  }
-}
-
-// PR13682: we might need to instantiate class temploids.
-namespace test7 {
-  namespace inner {
-    class A {};
-    void test7_function(A &);
-  }
-  template <class T> class B : public inner::A {};
-
-  void test(B<int> &ref) {
-    test7_function(ref);
-  }
-}
-
-// Like test7, but ensure we don't complain if the type is properly
-// incomplete.
-namespace test8 {
-  template <class T> class B;
-  void test8_function(B<int> &);
-
-  void test(B<int> &ref) {
-    test8_function(ref);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// FIXME: embellish
-
-namespace test0 {
-  namespace A {
-    class Foo {
-    };
-
-    void foo(const Foo &foo);
-  }
-
-  class Test {
-    enum E { foo = 0 };
-
-    void test() {
-      foo(A::Foo()); // expected-error {{not a function}}
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace A {
-  class A {
-    friend void func(A);
-    friend A operator+(A,A);
-  };
-}
-
-namespace B {
-  class B {
-    static void func(B);
-  };
-  B operator+(B,B);
-}
-
-namespace D {
-  class D {};
-}
-
-namespace C {
-  class C {}; // expected-note {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'B::B' to 'const C::C &' for 1st argument}}
-  void func(C); // expected-note {{'C::func' declared here}} \
-                // expected-note {{passing argument to parameter here}}
-  C operator+(C,C);
-  D::D operator+(D::D,D::D);
-}
-
-namespace D {
-  using namespace C;
-}
-
-namespace Test {
-  void test() {
-    func(A::A());
-    // FIXME: namespace-aware typo correction causes an extra, misleading
-    // message in this case; some form of backtracking, diagnostic message
-    // delaying, or argument checking before emitting diagnostics is needed to
-    // avoid accepting and printing out a typo correction that proves to be
-    // incorrect once argument-dependent lookup resolution has occurred.
-    func(B::B()); // expected-error {{use of undeclared identifier 'func'; did you mean 'C::func'?}} \
-                  // expected-error {{no viable conversion from 'B::B' to 'C::C'}}
-    func(C::C());
-    A::A() + A::A();
-    B::B() + B::B();
-    C::C() + C::C();
-    D::D() + D::D(); // expected-error {{invalid operands to binary expression ('D::D' and 'D::D')}}
-  }
-}
-
-// PR6716
-namespace test1 {
-  template <class T> class A {
-    template <class U> friend void foo(A &, U); // expected-note {{not viable: 1st argument ('const A<int>') would lose const qualifier}}
-
-  public:
-    A();
-  };
-
-  void test() {
-    const A<int> a;
-    foo(a, 10); // expected-error {{no matching function for call to 'foo'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p1-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p1-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p1-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fdiagnostics-show-option -verify %s
-
-template<typename T>
-struct set{};
-struct Value {
-  template<typename T>
-  void set(T value) {}
-
-  void resolves_to_same() {
-    Value v;
-    v.set<double>(3.2);
-  }
-};
-void resolves_to_different() {
-  {
-    Value v;
-    // The fact that the next line is a warning rather than an error is an
-    // extension.
-    v.set<double>(3.2);
-  }
-  {
-    int set;  // Non-template.
-    Value v;
-    v.set<double>(3.2);
-  }
-}
-
-namespace rdar9915664 {
-  struct A {
-    template<typename T> void a();
-  };
-
-  struct B : A { };
-
-  struct C : A { };
-
-  struct D : B, C {
-    A &getA() { return static_cast<B&>(*this); }
-
-    void test_a() {
-      getA().a<int>();
-    }
-  };
-}
-
-namespace PR11856 {
-  template<typename T> T end(T);
-
-  template <typename T>
-  void Foo() {
-    T it1;
-    if (it1->end < it1->end) {
-    }
-  }
-
-  template<typename T> T *end(T*);
-
-  class X { };
-  template <typename T>
-  void Foo2() {
-    T it1;
-    if (it1->end < it1->end) {
-    }
-
-    X *x;
-    if (x->end < 7) {  // expected-error{{no member named 'end' in 'PR11856::X'}}
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-option -verify %s
-
-// C++98 [basic.lookup.classref]p1:
-//   In a class member access expression (5.2.5), if the . or -> token is
-//   immediately followed by an identifier followed by a <, the identifier must
-//   be looked up to determine whether the < is the beginning of a template
-//   argument list (14.2) or a less-than operator. The identifier is first
-//   looked up in the class of the object expression. If the identifier is not
-//   found, it is then looked up in the context of the entire postfix-expression
-//   and shall name a class or function template. If the lookup in the class of
-//   the object expression finds a template, the name is also looked up in the
-//   context of the entire postfix-expression and
-//    -- if the name is not found, the name found in the class of the object
-//       expression is used, otherwise
-//    -- if the name is found in the context of the entire postfix-expression
-//       and does not name a class template, the name found in the class of the
-//       object expression is used, otherwise
-//    -- if the name found is a class template, it must refer to the same
-//       entity as the one found in the class of the object expression,
-//       otherwise the program is ill-formed.
-
-// From PR 7247
-template<typename T>
-struct set{};  // expected-note{{lookup from the current scope refers here}}
-struct Value {
-  template<typename T>
-  void set(T value) {}  // expected-note{{lookup in the object type 'Value' refers here}}
-
-  void resolves_to_same() {
-    Value v;
-    v.set<double>(3.2);
-  }
-};
-void resolves_to_different() {
-  {
-    Value v;
-    // The fact that the next line is a warning rather than an error is an
-    // extension.
-    v.set<double>(3.2);  // expected-warning{{lookup of 'set' in member access expression is ambiguous; using member of 'Value'}}
-  }
-  {
-    int set;  // Non-template.
-    Value v;
-    v.set<double>(3.2);
-  }
-}
-
-namespace rdar9915664 {
-  struct A {
-    template<typename T> void a();
-  };
-
-  struct B : A { };
-
-  struct C : A { };
-
-  struct D : B, C {
-    A &getA() { return static_cast<B&>(*this); }
-
-    void test_a() {
-      getA().a<int>();
-    }
-  };
-}
-
-namespace PR11856 {
-  template<typename T> T end(T);
-
-  template <typename T>
-  void Foo() {
-    T it1;
-    if (it1->end < it1->end) {
-    }
-  }
-
-  template<typename T> T *end(T*);
-
-  class X { };
-  template <typename T>
-  void Foo2() {
-    T it1;
-    if (it1->end < it1->end) {
-    }
-
-    X *x;
-    if (x->end < 7) {  // expected-error{{no member named 'end' in 'PR11856::X'}}
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// C++0x [basic.lookup.classref]p3:
-//   If the unqualified-id is ~type-name, the type-name is looked up in the 
-//   context of the entire postfix-expression. If the type T of the object 
-//   expression is of a class type C, the type-name is also looked up in the 
-//   scope of class C. At least one of the lookups shall find a name that 
-//   refers to (possibly cv-qualified) T.
-
-// From core issue 305
-struct A {
-};
-
-struct C {
-  struct A {};
-  void f ();
-};
-
-void C::f () {
-  ::A *a;
-  a->~A ();
-}
-
-// From core issue 414
-struct X {};
-void f() {
-  X x;
-  struct X {};
-  x.~X();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p4-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p4-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.classref/p4-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-// expected-no-diagnostics
-
-struct A { void f(); };
-struct C { void f(); };
-struct B : A { typedef A X; };
-struct D : C { typedef C X;   void g(); };
-
-void D::g() 
-{
-    B * b = new B;
-    b->X::f(); // lookup for X finds B::X
-}
-
-typedef int X;
-void h(void) 
-{
-    B * b = new B;
-    b->X::f(); // lookup for X finds B::X
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.elab/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.elab/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.elab/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace test0 {
-  struct A {
-    static int foo;
-  };
-  
-  namespace i0 {
-    typedef int A; // expected-note {{declared here}}
-
-    int test() {
-      struct A a; // expected-error {{elaborated type refers to a typedef}}
-      return a.foo;
-    }
-  }
-
-  namespace i1 {
-    template <class> class A; // expected-note {{declared here}}
-
-    int test() {
-      struct A a; // expected-error {{elaborated type refers to a template}}
-      return a.foo;
-    }
-  }
-
-  namespace i2 {
-    int A;
-
-    int test() {
-      struct A a;
-      return a.foo;
-    }
-  }
-
-  namespace i3 {
-    void A();
-
-    int test() {
-      struct A a;
-      return a.foo;
-    }
-  }
-
-  namespace i4 {
-    template <class T> void A();
-
-    int test() {
-      struct A a;
-      return a.foo;
-    }
-  }
-
-  // This should magically be okay;  see comment in SemaDecl.cpp.
-  // rdar://problem/7898108
-  typedef struct A A;
-  int test() {
-    struct A a;
-    return a.foo;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.elab/templateid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.elab/templateid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.elab/templateid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// elaborated-type-specifier:
-//   class-key '::'? nested-name-specifier? 'template'? simple-template-id
-// Tests that this form is accepted by the compiler but does not follow
-// the elaborated lookup rules of [basic.lookup.elab].
-
-template <typename> class Ident {}; // expected-note {{previous use is here}}
-
-namespace A {
-  template <typename> void Ident();
-
-  class Ident<int> AIdent; // expected-error {{refers to a function template}}
-  class ::Ident<int> AnotherIdent;
-}
-
-class Ident<int> GlobalIdent;
-union Ident<int> GlobalIdent2; // expected-error {{ tag type that does not match }}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,117 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-struct X0 {
-  X0 f1();
-  X0 f2();
-};
-
-template<typename T>
-struct X1 {
-  X1<T>(int);
-  (X1<T>)(float);
-  X1 f2();
-  X1 f2(int);
-  X1 f2(float);
-};
-
-// Error recovery: out-of-line constructors whose names have template arguments.
-template<typename T> X1<T>::X1<T>(int) { } // expected-error{{out-of-line constructor for 'X1' cannot have template arguments}}
-template<typename T> (X1<T>::X1<T>)(float) { } // expected-error{{out-of-line constructor for 'X1' cannot have template arguments}}
-
-// Error recovery: out-of-line constructor names intended to be types
-X0::X0 X0::f1() { return X0(); } // expected-error{{qualified reference to 'X0' is a constructor name rather than a type wherever a constructor can be declared}}
-
-struct X0::X0 X0::f2() { return X0(); }
-
-template<typename T> X1<T>::X1<T> X1<T>::f2() { } // expected-error{{qualified reference to 'X1' is a constructor name rather than a template name wherever a constructor can be declared}}
-template<typename T> X1<T>::X1<T> (X1<T>::f2)(int) { } // expected-error{{qualified reference to 'X1' is a constructor name rather than a template name wherever a constructor can be declared}}
-template<typename T> struct X1<T>::X1<T> (X1<T>::f2)(float) { }
-
-// We have a special case for lookup within using-declarations that are
-// member-declarations: foo::bar::baz::baz always names baz's constructor
-// in such a context, even if looking up 'baz' within foo::bar::baz would
-// not find the injected-class-name. Likewise foo::bar::baz<T>::baz also
-// names the constructor.
-namespace InhCtor {
-  struct A {
-    A(int);
-  protected:
-    int T();
-  };
-  typedef A T;
-  struct B : A {
-    // This is a using-declaration for 'int A::T()' in C++98, but is an
-    // inheriting constructor declaration in C++11.
-    using InhCtor::T::T;
-  };
-#if __cplusplus < 201103L
-  B b(123);      // expected-error {{no matching constructor}}
-                 // expected-note at -7 2{{candidate constructor}}
-  int n = b.T(); // ok, accessible
-#else
-  B b(123);      // ok, inheriting constructor
-  int n = b.T(); // expected-error {{'T' is a protected member of 'InhCtor::A'}}
-                 // expected-note at -15 {{declared protected here}}
-
-  template<typename T>
-  struct S : T {
-    struct U : S {
-      using S::S;
-    };
-    using T::T;
-  };
-
-  S<A>::U ua(0);
-  S<B>::U ub(0);
-
-  template<typename T>
-  struct X : T {
-    using T::Z::U::U;
-  };
-  template<typename T>
-  struct X2 : T {
-    using T::Z::template V<int>::V;
-  };
-  struct Y {
-    struct Z {
-      typedef Y U;
-      template<typename T> using V = Y;
-    };
-    Y(int);
-  };
-  X<Y> xy(0);
-
-  namespace Repeat {
-    struct A {
-      struct T {
-        T(int);
-      };
-    };
-    struct Z : A {
-      using A::A::A;
-    };
-    template<typename T>
-    struct ZT : T::T {
-      using T::T::T;
-    };
-  }
-
-  namespace NS {
-    struct NS {};
-  }
-  struct DerivedFromNS : NS::NS {
-    // No special case unless the NNS names a class.
-    using InhCtor::NS::NS; // expected-error {{using declaration in class refers into 'InhCtor::NS::', which is not a class}}
-
-  };
-
-  typedef int I;
-  struct UsingInt {
-    using I::I; // expected-error {{expected a class or namespace}}
-  };
-  template<typename T> struct UsingIntTemplate {
-    using T::T; // expected-error {{type 'int' cannot be used prior to '::' because it has no members}}
-  };
-  UsingIntTemplate<int> uit; // expected-note {{here}}
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace Ints {
-  int zero = 0; // expected-note {{candidate found by name lookup is 'Ints::zero'}}
-  void f(int); // expected-note 3 {{candidate function}}
-  void g(int);
-}
-
-namespace Floats {
-  float zero = 0.0f; // expected-note {{candidate found by name lookup is 'Floats::zero'}}
-  void f(float); // expected-note 3 {{candidate function}}
-  void g(float);
-}
-
-namespace Numbers {
-  using namespace Ints;
-  using namespace Floats;
-}
-
-void test() {
-  int i = Ints::zero;
-  Ints::f(i);
-  
-  float f = Floats::zero;
-  Floats::f(f);
-  
-  double n = Numbers::zero; // expected-error {{reference to 'zero' is ambiguous}}
-  Numbers::f(n); // expected-error{{call to 'f' is ambiguous}}
-  Numbers::f(i);
-  Numbers::f(f);
-}
-
-namespace Numbers {
-  struct Number {	// expected-note 2 {{candidate}}
-    explicit Number(double d) : d(d) {}
-    double d;
-  };
-  Number zero(0.0f);
-  void g(Number); // expected-note 2{{passing argument to parameter here}}
-}
-
-void test2() {
-  Numbers::Number n = Numbers::zero;
-  Numbers::f(n); // expected-error {{no matching function for call to 'f'}}
-  Numbers::g(n);
-}
-
-namespace Numbers2 {
-  using Numbers::f;
-  using Numbers::g;
-}
-
-void test3() {
-  Numbers::Number n = Numbers::zero;
-  Numbers2::f(n); // expected-error {{no matching function for call to 'f'}}
-  Numbers2::g(n);
-
-  int i = Ints::zero;
-  Numbers2::f(i);
-  Numbers2::g(i); // expected-error {{no viable conversion from 'int' to 'Numbers::Number'}}
-
-  float f = Floats::zero;
-  Numbers2::f(f);
-  Numbers2::g(f); // expected-error {{no viable conversion from 'float' to 'Numbers::Number'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// This is basically paraphrased from the standard.
-
-namespace Root {
-  int i = 0;
-  void f();
-}
-
-namespace A {
-  using namespace Root;
-}
-
-namespace B {
-  using namespace Root;
-}
-
-namespace AB {
-  using namespace A;
-  using namespace B;
-}
-
-void test() {
-  if (AB::i)
-    AB::f();
-}
-
-namespace C {
-  using Root::i;
-  using Root::f;
-}
-
-namespace AC {
-  using namespace A;
-  using namespace C;
-}
-
-void test2() {
-  if (AC::i)
-    AC::f();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace A {
-  int a;
-}
-
-namespace C {
-  int c;
-}
-
-namespace B {
-  using namespace C;
-  int b;
-}
-
-namespace C {
-  using namespace B;
-  using namespace A;
-}
-
-void test() {
-  C::a++;
-  C::b++;
-  C::c++;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/namespace.qual/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace A {
-  struct x {}; // expected-note {{candidate found by name lookup is 'A::x'}}
-  int x; // expected-note {{candidate found by name lookup is 'A::x'}}
-
-  struct y {}; // expected-note {{type declaration hidden}}
-
-  struct z;
-  void z(float);
-}
-
-namespace B {
-  struct x {}; // expected-note {{candidate found by name lookup is 'B::x'}}
-  float x; // expected-note {{candidate found by name lookup is 'B::x'}}
-
-  float y; // expected-note {{declaration hides type}}
-
-  void z(int);
-}
-
-namespace AB {
-  using namespace A;
-  using namespace B;
-}
-
-void test() {
-  struct AB::x foo; // expected-error {{reference to 'x' is ambiguous}}
-  int i = AB::x; // expected-error {{reference to 'x' is ambiguous}}
-
-  struct AB::y bar;
-  float f = AB::y; // expected-error {{a type named 'y' is hidden by a declaration in a different namespace}}
-  AB::z(i);
-  AB::z(f);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/p6-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/p6-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/p6-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// XFAIL: *
-// Our C++0x doesn't currently have specialized destructor name handling,
-// since the specification is still in flux.
-struct C { 
-  typedef int I;
-}; 
-
-typedef int I1, I2; 
-extern int* p; 
-extern int* q; 
-
-void f() {
-  p->C::I::~I(); 
-  q->I1::~I2();
-}
-
-struct A { 
-  ~A();
-}; 
-
-typedef A AB; 
-int main() {
-  AB *p; 
-  p->AB::~AB();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct C { 
-  typedef int I;
-}; 
-
-typedef int I1, I2; 
-extern int* p; 
-extern int* q; 
-
-void f() {
-  p->C::I::~I(); 
-  q->I1::~I2();
-}
-
-struct A { 
-  ~A();
-}; 
-
-typedef A AB; 
-int main() {
-  AB *p; 
-  p->AB::~AB(); // expected-error{{expected the class name after '~' to name a destructor}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.udir/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.udir/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.udir/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// When looking up a namespace-name in a using-directive or
-// namespace-alias-definition, only namespace names are considered.
-
-struct ns1 {};
-void ns2();
-int ns3 = 0;
-
-namespace ns0 {
-  namespace ns1 {
-    struct test0 {};
-  }
-  namespace ns2 {
-    struct test1 {};
-  }
-  namespace ns3 {
-    struct test2 {};
-  }
-}
-
-using namespace ns0;
-
-namespace test3 = ns1;
-namespace test4 = ns2;
-namespace test5 = ns3;
-
-using namespace ns1;
-using namespace ns2;
-using namespace ns3;
-
-test0 a;
-test1 b;
-test2 c;
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-static const int a = 10;
-
-void f0(int a, 
-        int b = a) { // expected-error {{default argument references parameter 'a'}}
-}
-
-template<int a, 
-         int b = a>
-class A {
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p12.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p12.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p12.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-struct S {};
-S E0;
-
-namespace {
-  enum {
-    E0 = 1,
-    E1 = E0 + 1
-  };
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p13.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p13.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p13.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-struct S {
-  static const int f0 = 0;
-  static int f1;
-};
-
-int S::f1 = f0;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p14.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// C++0x [basic.lookup.unqual]p14:
-//   If a variable member of a namespace is defined outside of the
-//   scope of its namespace then any name used in the definition of
-//   the variable member (after the declarator-id) is looked up as if
-//   the definition of the variable member occurred in its namespace.
-
-namespace N { 
-  struct S {};
-  S i; 
-  extern S j;
-  extern S j2;
-} 
-
-int i = 2; 
-N::S N::j = i;
-N::S N::j2(i);
-
-// <rdar://problem/13317030>
-namespace M {
-  class X { };
-  inline X operator-(int, X);
-
-  template<typename T>
-  class Y { };
-
-  typedef Y<float> YFloat;
-
-  namespace yfloat {
-    YFloat operator-(YFloat, YFloat);
-  }
-  using namespace yfloat;
-}
-
-using namespace M;
-
-namespace M {
-
-class Other {
-  void foo(YFloat a, YFloat b);
-};
-
-}
-
-void Other::foo(YFloat a, YFloat b) {
-  YFloat c = a - b;
-}
-
-// <rdar://problem/13540899>
-namespace Other {
-  void other_foo();
-}
-
-namespace M2 {
-  using namespace Other;
-
-  extern "C" {
-    namespace MInner {
-      extern "C" {
-        class Bar { 
-          void bar();
-        };
-      }
-    }
-  }
-}
-
-void M2::MInner::Bar::bar() {
-  other_foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p15.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// XFAIL: *
-
-class C {
-public:
-  C(int a, int b);
-};
-
-C::C(int a, // expected-note {{previous definition}}
-     int b) // expected-note {{previous definition}}
-try {
-  int c;
-
-} catch (int a) { // expected-error {{redefinition of 'a'}}
-  int b; // expected-error {{redefinition of 'b'}}
-  ++c; // expected-error {{use of undeclared identifier 'c'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-typedef int f; 
-
-namespace N0 {
-  struct A { 
-    friend void f(); 
-    void g() {
-      int i = f(1);
-    }
-  };
-}
-
-namespace N1 {
-  struct A { 
-    friend void f(A &);
-    operator int();
-    void g(A a) {
-      // ADL should not apply to the lookup of 'f', it refers to the typedef
-      // above.
-      int i = f(a);
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR5741
-namespace test0 {
-  struct A {
-    struct B { };
-    struct C;
-  };
-
-  struct A::C : B { };
-}
-
-// Test that successive base specifiers don't screw with each other.
-namespace test1 {
-  struct Opaque1 {};
-  struct Opaque2 {};
-
-  struct A {
-    struct B { B(Opaque1); };
-  };
-  struct B {
-    B(Opaque2);
-  };
-
-  struct C : A, B {
-    // Apparently the base-or-member lookup is actually ambiguous
-    // without this qualification.
-    C() : A(), test1::B(Opaque2()) {}
-  };
-}
-
-// Test that we don't find the injected class name when parsing base
-// specifiers.
-namespace test2 {
-  template <class T> struct bar {};
-  template <class T> struct foo : bar<foo> {}; // expected-error {{use of class template 'foo' requires template arguments}} expected-note {{template is declared here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// rdar4641403
-namespace N {
-  struct X { // expected-note{{candidate found by name lookup}}
-    float b;
-  };
-}
-
-using namespace N;
-
-typedef struct {
-  int a;
-} X; // expected-note{{candidate found by name lookup}}
-
-
-struct Y { };
-void Y(int) { }
-
-void f() {
-  X *x; // expected-error{{reference to 'X' is ambiguous}}
-  Y(1); // okay
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fcxx-exceptions -fexceptions -verify %s
-
-void func1(int i) { // expected-note{{previous definition is here}}
-  int i; // expected-error{{redefinition of 'i'}}
-}
-
-void func2(int i) try { // expected-note{{previous definition is here}}
-  int i; // expected-error{{redefinition of 'i'}}
-} catch (...) {
-}
-
-void func3(int i) try { // FIXME: note {{previous definition is here}}
-} catch (int i) { // FIXME: error {{redefinition of 'i'}}
-}
-
-void func4(int i) try { // expected-note{{previous definition is here}}
-} catch (...) {
-  int i; // expected-error{{redefinition of 'i'}}
-}
-
-void func5() try {
-  int i;
-} catch (...) {
-  int j = i; // expected-error{{use of undeclared identifier 'i'}}
-}
-
-void func6() try {
-} catch (int i) { // expected-note{{previous definition is here}}
-  int i; // expected-error{{redefinition of 'i'}}
-}
-
-void func7() {
-  try {
-  } catch (int i) { // expected-note{{previous definition is here}}
-    int i; // expected-error{{redefinition of 'i'}}
-  }
-}
-
-void func8() {
-  int i;
-  try {
-    int i;
-  } catch (...) {
-  }
-}
-
-void func9() {
-  if (bool b = true)
-    try {
-      int b; // FIXME: this probably should be invalid, maybe
-    } catch (...) {
-    }
-}
-
-void func10() {
-  if (bool b = true)
-    if (true) {
-      int b; // FIXME: decide whether this is valid
-    }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.local/p4-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.local/p4-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.local/p4-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-void f() {
-  int b;
-  int arr[] = {1, 2, 3};
-
-  if (bool b = true) // expected-note 2{{previous definition}}
-    bool b; // expected-error {{redefinition}}
-  else
-    int b; // expected-error {{redefinition}}
-  while (bool b = true) // expected-note {{previous definition}}
-    int b; // expected-error {{redefinition}}
-  for (int c; // expected-note 2{{previous definition}}
-       bool c = true;) // expected-error {{redefinition}}
-    double c; // expected-error {{redefinition}}
-  switch (int n = 37 + 5) // expected-note {{previous definition}}
-    int n; // expected-error {{redefinition}}
-  for (int a : arr) // expected-note {{previous definition}}
-    int a = 0; // expected-error {{redefinition}}
-
-  if (bool b = true) { // expected-note 2{{previous definition}}
-    int b; // expected-error {{redefinition}}
-  } else {
-    int b; // expected-error {{redefinition}}
-  }
-  while (bool b = true) { // expected-note {{previous definition}}
-    int b; // expected-error {{redefinition}}
-  }
-  for (int c; // expected-note 2{{previous definition}}
-       bool c = true;) { // expected-error {{redefinition}}
-    double c; // expected-error {{redefinition}}
-  }
-  switch (int n = 37 + 5) { // expected-note {{previous definition}}
-    int n; // expected-error {{redefinition}}
-  }
-  for (int &a : arr) { // expected-note {{previous definition}}
-    int a = 0; // expected-error {{redefinition}}
-  }
-
-  if (bool b = true) {{ // expected-note {{previous definition}}
-    bool b;
-  }} else {
-    int b; // expected-error {{redefinition}}
-  }
-  if (bool b = true) { // expected-note {{previous definition}}
-    bool b; // expected-error {{redefinition}}
-  } else {{
-    int b;
-  }}
-  if (bool b = true) {{
-    bool b;
-  }} else {{
-    int b;
-  }}
-  while (bool b = true) {{
-    int b;
-  }}
-  for (int c; // expected-note {{previous definition}}
-       bool c = true; ) {{ // expected-error {{redefinition}}
-    double c;
-  }}
-  switch (int n = 37 + 5) {{
-    int n;
-  }}
-  for (int &a : arr) {{
-    int a = 0;
-  }}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.pdecl/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.pdecl/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.pdecl/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// Classes.
-namespace Class {
-  namespace NS {
-    class C {}; // expected-note {{candidate}}
-  }
-  using namespace NS;
-  class C : C {}; // expected-error {{reference to 'C' is ambiguous}} \
-                     expected-note {{candidate}}
-}
-
-// Enumerations.
-enum E {
-  EPtrSize = sizeof((E*)0) // ok, E is already declared
-};
-
-// Alias declarations. clang implements the proposed resolution to N1044.
-namespace Alias {
-  namespace NS {
-    class C;
-  }
-  using namespace NS;
-  using C = C; // ok, C = B::C
-  using C = NS::C; // ok, same type
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.pdecl/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.pdecl/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.scope/basic.scope.pdecl/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Template type parameters.
-typedef unsigned char T;
-template<typename T = T> struct X0 { };
-template<> struct X0<unsigned char> { static const bool value = true; };
-int array0[X0<>::value? 1 : -1];
-
-// Non-type template parameters.
-const int N = 17;
-template<int N = N> struct X1 { };
-template<> struct X1<17> { static const bool value = true; };
-int array1[X1<>::value? 1 : -1];
-
-// Template template parameters.
-template<template<class> class X0 = X0> struct X2 { };
-template<> struct X2<X0> { static const bool value = true; };
-int array2[X2<>::value? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.start/basic.start.main/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.start/basic.start.main/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.start/basic.start.main/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST1
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST2
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST3
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST4
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST5
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST6
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST7
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST8
-
-// RUN: cp %s %t
-// RUN: %clang_cc1 -x c++ %s -std=c++11 -fsyntax-only -verify -DTEST9
-// RUN: not %clang_cc1 -x c++ %t -std=c++11 -fixit -DTEST9
-// RUN: %clang_cc1 -x c++ %t -std=c++11 -fsyntax-only -DTEST9
-
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST10
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST11
-// RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST12
-
-#if TEST1
-
-// expected-no-diagnostics
-typedef int Int;
-typedef char Char;
-typedef Char* Carp;
-
-Int main(Int argc, Carp argv[]) {
-}
-
-#elif TEST2
-
-// expected-no-diagnostics
-typedef int Int;
-typedef char Char;
-typedef Char* Carp;
-
-Int main(Int argc, Carp argv[], Char *env[]) {
-}
-
-#elif TEST3
-
-// expected-no-diagnostics
-int main() {
-}
-
-#elif TEST4
-
-static int main() { // expected-error {{'main' is not allowed to be declared static}}
-}
-
-#elif TEST5
-
-inline int main() { // expected-error {{'main' is not allowed to be declared inline}}
-}
-
-#elif TEST6
-
-void  // expected-error {{'main' must return 'int'}}
-main( // expected-error {{first parameter of 'main' (argument count) must be of type 'int'}}
-     float a
-) {
-}
-
-#elif TEST7
-
-// expected-no-diagnostics
-int main(int argc, const char* const* argv) {
-}
-
-#elif TEST8
-
-template<typename T>
-int main() { } // expected-error{{'main' cannot be a template}}
-
-#elif TEST9
-
-constexpr int main() { } // expected-error{{'main' is not allowed to be declared constexpr}}
-
-#elif TEST10
-
-// PR15100
-// expected-no-diagnostics
-typedef char charT;
-int main(int, const charT**) {}
-
-#elif TEST11
-
-// expected-no-diagnostics
-typedef char charT;
-int main(int, charT* const *) {}
-
-#elif TEST12
-
-// expected-no-diagnostics
-typedef char charT;
-int main(int, const charT* const *) {}
-
-#else
-
-#error Unknown test mode
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-#include <stddef.h>
-
-struct A {
-  void *operator new(size_t);
-};
-
-namespace NS {
-  void *operator new(size_t);; // expected-error {{'operator new' cannot be declared inside a namespace}}
-}
-
-static void *operator new(size_t); // expected-error {{'operator new' cannot be declared static in global scope}}
-
-struct B {
-  void operator new(size_t);  // expected-error {{'operator new' must return type 'void *'}}
-};
-
-struct C {
-  void *operator new(); // expected-error {{'operator new' must have at least one parameter}}
-};
-
-struct D {
-  void *operator new(bool); // expected-error {{'operator new' takes type size_t}}
-};
-
-struct E {
-  void *operator new(size_t = 0); // expected-error {{parameter of 'operator new' cannot have a default argument}}
-};
-
-struct F {
-  template<typename T> void *operator new(size_t, int);
-};
-
-struct G {
-  template<typename T> T operator new(size_t, int); // expected-error {{'operator new' cannot have a dependent return type; use 'void *' instead}}
-};
-
-struct H {
-  template<typename T> void *operator new(T, int); // expected-error {{'operator new' cannot take a dependent type as first parameter; use size_t}}
-};
-
-struct I {
-  template<typename T> void *operator new(size_t); // expected-error {{'operator new' template must have at least two parameters}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.deallocation/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.deallocation/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.deallocation/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A {
-  void operator delete(void*);
-};
-
-namespace NS {
-  void operator delete(void *); // expected-error {{'operator delete' cannot be declared inside a namespace}}
-}
-
-static void operator delete(void *); // expected-error {{'operator delete' cannot be declared static in global scope}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-nodef.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-nodef.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-nodef.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-int *use_new(int N) {
-  return new int [N];
-}
-
-int std = 17;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-noexceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-noexceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2-noexceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-namespace std {
-  class bad_alloc { };
-  
-  typedef __SIZE_TYPE__ size_t;
-}
-
-class foo { virtual ~foo(); };
-
-void* operator new(std::size_t); 
-void* operator new[](std::size_t);
-void operator delete(void*);
-void operator delete[](void*);

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fexceptions -fcxx-exceptions -verify %s
-int *use_new(int N) {
-  if (N == 1)
-    return new int;
-  
-  return new int [N];
-}
-
-void use_delete(int* ip, int N) {
-  if (N == 1)
-    delete ip;
-  else
-    delete [] ip;
-}
-
-namespace std {
-  class bad_alloc { };
-  
-  typedef __SIZE_TYPE__ size_t;
-}
-
-void* operator new(std::size_t) throw(std::bad_alloc); // expected-note{{previous declaration}}
-void* operator new[](std::size_t) throw(std::bad_alloc); 
-void operator delete(void*) throw(); // expected-note{{previous declaration}}
-void operator delete[](void*) throw();
-
-void* operator new(std::size_t); // expected-warning{{'operator new' is missing exception specification 'throw(std::bad_alloc)'}}
-void operator delete(void*); // expected-warning{{'operator delete' is missing exception specification 'throw()'}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.types/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.types/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/basic/basic.types/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,142 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++1y %s -DCXX1Y
-
-struct NonLiteral { NonLiteral(); };
-
-// A type is a literal type if it is:
-
-// [C++1y] - void
-constexpr void f() {}
-#ifndef CXX1Y
-// expected-error at -2 {{'void' is not a literal type}}
-#endif
-
-// - a scalar type
-constexpr int f1(double) { return 0; }
-
-// - a reference type
-struct S { S(); };
-constexpr int f2(S &) { return 0; }
-
-struct BeingDefined;
-extern BeingDefined beingdefined;
-struct BeingDefined { 
-  static constexpr BeingDefined& t = beingdefined;
-};
-
-// - a class type that has all of the following properties:
-
-// (implied) - it is complete
-
-struct Incomplete; // expected-note 2{{forward declaration of 'Incomplete'}}
-template<class T> struct ClassTemp {};
-
-constexpr Incomplete incomplete = {}; // expected-error {{constexpr variable cannot have non-literal type 'const Incomplete'}} expected-note {{incomplete type 'const Incomplete' is not a literal type}}
-constexpr Incomplete incomplete2[] = {}; // expected-error {{constexpr variable cannot have non-literal type 'Incomplete const[]'}} expected-note {{incomplete type 'Incomplete const[]' is not a literal type}}
-constexpr ClassTemp<int> classtemplate = {};
-constexpr ClassTemp<int> classtemplate2[] = {};
-
-//  - it has a trivial destructor
-struct UserProvDtor {
-  constexpr int f() const; // expected-error {{non-literal type 'UserProvDtor' cannot have constexpr members}}
-  ~UserProvDtor(); // expected-note {{has a user-provided destructor}}
-};
-
-struct NonTrivDtor {
-  constexpr NonTrivDtor();
-  constexpr int f() const; // expected-error {{non-literal type 'NonTrivDtor' cannot have constexpr members}}
-  virtual ~NonTrivDtor() = default; // expected-note {{has a non-trivial destructor}} expected-note {{because it is virtual}}
-};
-struct NonTrivDtorBase {
-  ~NonTrivDtorBase();
-};
-template<typename T>
-struct DerivedFromNonTrivDtor : T { // expected-note {{'DerivedFromNonTrivDtor<NonTrivDtorBase>' is not literal because it has base class 'NonTrivDtorBase' of non-literal type}}
-  constexpr DerivedFromNonTrivDtor();
-};
-constexpr int f(DerivedFromNonTrivDtor<NonTrivDtorBase>) { return 0; } // expected-error {{constexpr function's 1st parameter type 'DerivedFromNonTrivDtor<NonTrivDtorBase>' is not a literal type}}
-struct TrivDtor {
-  constexpr TrivDtor();
-};
-constexpr int f(TrivDtor) { return 0; }
-struct TrivDefaultedDtor {
-  constexpr TrivDefaultedDtor();
-  ~TrivDefaultedDtor() = default;
-};
-constexpr int f(TrivDefaultedDtor) { return 0; }
-
-//  - it is an aggregate type or has at least one constexpr constructor or
-//    constexpr constructor template that is not a copy or move constructor
-struct Agg {
-  int a;
-  char *b;
-};
-constexpr int f3(Agg a) { return a.a; }
-struct CtorTemplate {
-  template<typename T> constexpr CtorTemplate(T);
-};
-struct CopyCtorOnly { // expected-note {{'CopyCtorOnly' is not literal because it is not an aggregate and has no constexpr constructors other than copy or move constructors}}
-  constexpr CopyCtorOnly(CopyCtorOnly&);
-  constexpr int f() const; // expected-error {{non-literal type 'CopyCtorOnly' cannot have constexpr members}}
-};
-struct MoveCtorOnly { // expected-note {{no constexpr constructors other than copy or move constructors}}
-  constexpr MoveCtorOnly(MoveCtorOnly&&);
-  constexpr int f() const; // expected-error {{non-literal type 'MoveCtorOnly' cannot have constexpr members}}
-};
-template<typename T>
-struct CtorArg {
-  constexpr CtorArg(T);
-};
-constexpr int f(CtorArg<int>) { return 0; } // ok
-constexpr int f(CtorArg<NonLiteral>) { return 0; } // ok, ctor is still constexpr
-// We have a special-case diagnostic for classes with virtual base classes.
-struct VBase {};
-struct HasVBase : virtual VBase {}; // expected-note 2{{virtual base class declared here}}
-struct Derived : HasVBase {
-  constexpr Derived() {} // expected-error {{constexpr constructor not allowed in struct with virtual base class}}
-};
-template<typename T> struct DerivedFromVBase : T { // expected-note {{struct with virtual base class is not a literal type}}
-  constexpr DerivedFromVBase();
-};
-constexpr int f(DerivedFromVBase<HasVBase>) {} // expected-error {{constexpr function's 1st parameter type 'DerivedFromVBase<HasVBase>' is not a literal type}}
-template<typename T> constexpr DerivedFromVBase<T>::DerivedFromVBase() : T() {}
-constexpr int nVBase = (DerivedFromVBase<HasVBase>(), 0); // expected-error {{constant expression}} expected-note {{cannot construct object of type 'DerivedFromVBase<HasVBase>' with virtual base class in a constant expression}}
-
-//  - it has all non-static data members and base classes of literal types
-struct NonLitMember {
-  S s; // expected-note {{has data member 's' of non-literal type 'S'}}
-};
-constexpr int f(NonLitMember) {} // expected-error {{1st parameter type 'NonLitMember' is not a literal type}}
-struct NonLitBase :
-  S { // expected-note {{base class 'S' of non-literal type}}
-  constexpr NonLitBase();
-  constexpr int f() const { return 0; } // expected-error {{non-literal type 'NonLitBase' cannot have constexpr members}}
-};
-struct LitMemBase : Agg {
-  Agg agg;
-};
-template<typename T>
-struct MemberType {
-  T t; // expected-note {{'MemberType<NonLiteral>' is not literal because it has data member 't' of non-literal type 'NonLiteral'}}
-  constexpr MemberType();
-};
-constexpr int f(MemberType<int>) { return 0; }
-constexpr int f(MemberType<NonLiteral>) { return 0; } // expected-error {{not a literal type}}
-
-// - an array of literal type [C++1y] other than an array of runtime bound
-struct ArrGood {
-  Agg agg[24];
-  double d[12];
-  TrivDtor td[3];
-  TrivDefaultedDtor tdd[3];
-};
-constexpr int f(ArrGood) { return 0; }
-
-struct ArrBad {
-  S s[3]; // expected-note {{data member 's' of non-literal type 'S [3]'}}
-};
-constexpr int f(ArrBad) { return 0; } // expected-error {{1st parameter type 'ArrBad' is not a literal type}}
-
-constexpr int arb(int n) {
-  int a[n]; // expected-error {{variable of non-literal type 'int [n]' cannot be defined in a constexpr function}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.base/class.base.init/p5-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.base/class.base.init/p5-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.base/class.base.init/p5-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// [class.base.init]p5
-// A ctor-initializer may initialize a variant member of the constructor’s 
-// class. If a ctor-initializer specifies more than one mem-initializer for the
-// same member or for the same base class, the ctor-initializer is ill-formed.
-
-union E {
-  int a;
-  int b;
-  E() : a(1),  // expected-note{{previous initialization is here}}
-        b(2) { // expected-error{{initializing multiple members of union}}
-  }
-};
-
-union F {
-  struct {
-    int a;
-    int b;
-  };
-  int c;
-  F() : a(1),  // expected-note{{previous initialization is here}}
-        b(2),
-        c(3) { // expected-error{{initializing multiple members of union}}
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.bit/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.bit/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.bit/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct A {
-private: 
-  int : 0;
-};
-
-A a = { };
-A a2 = { 1 }; // expected-error{{excess elements in struct initializer}}
-
-struct B {
-  const int : 0;
-};
-
-B b;
-
-void testB() {
-  B b2(b);
-  B b3(static_cast<B&&>(b2));
-  b = b;
-  b = static_cast<B&&>(b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1-ambiguous.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1-ambiguous.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1-ambiguous.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Make sure that friend declarations don't introduce ambiguous
-// declarations.
-
-// Test case courtesy of Shantonu Sen.
-// Bug 4784.
-
-class foo;
-
-extern "C" {
-  int c_func(foo *a);
-};
-int cpp_func(foo *a);
-
-class foo {
-public:
-  friend int c_func(foo *a);
-  friend int cpp_func(foo *a);
-  int caller();
-private:
-  int x;
-};
-
-int c_func(foo *a) {
-  return a->x;
-}
-
-int cpp_func(foo *a) {
-  return a->x;
-}
-
-int foo::caller() {
-    c_func(this);
-    cpp_func(this);
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-class A {
-  class AInner {
-  };
-
-  void a_member();
-  friend void A::a_member(); // ok in c++11, ill-formed in c++98
-  friend void a_member(); // ok in both, refers to non-member
-  friend class A::AInner; // ok in c++11, extension in c++98
-  friend class AInner; // ok in both, refers to non-member
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct Outer {
-  struct Inner {
-    int intfield;
-  };
-};
-
-struct Base {
-  void base_member();
-  
-  typedef int Int;
-  Int typedeffed_member();
-};
-
-struct Derived : public Base {
-};
-
-int myglobal;
-
-void global_function();
-extern "C" {
-  void global_c_function();
-}
-
-class A {
-  class AInner {
-  };
-
-  friend class PreDeclared;
-  friend class Outer::Inner;
-  friend int Outer::Inner::intfield; // expected-error {{friends can only be classes or functions}}
-  friend int Outer::Inner::missing_field; //expected-error {{friends can only be classes or functions}}
-  friend int myoperation(float); // okay
-  friend int myglobal;   // expected-error {{friends can only be classes or functions}}
-
-  friend void global_function();
-  friend void global_c_function();
-
-  friend class UndeclaredSoFar;
-  UndeclaredSoFar x; // expected-error {{unknown type name 'UndeclaredSoFar'}}
-
-  void a_member();
-  friend void A::a_member(); // expected-error {{friends cannot be members of the declaring class}}
-  friend void a_member(); // okay (because we ignore class scopes when looking up friends)
-  friend class A::AInner; // this is okay as an extension
-  friend class AInner; // okay, refers to ::AInner
-
-  friend void Derived::missing_member(); // expected-error {{no function named 'missing_member' with type 'void ()' was found in the specified scope}}
-
-  friend void Derived::base_member(); // expected-error {{no function named 'base_member' with type 'void ()' was found in the specified scope}}
-
-  friend int Base::typedeffed_member(); // okay: should look through typedef
-
-  // These test that the friend is properly not being treated as a
-  // member function.
-  friend A operator|(const A& l, const A& r); // okay
-  friend A operator|(const A& r); // expected-error {{overloaded 'operator|' must be a binary operator (has 1 parameter)}}
-
-  friend operator bool() const; // expected-error {{must use a qualified name when declaring a conversion operator as a friend}} \
-       // expected-error{{non-member function cannot have 'const' qualifier}}
-
-  typedef void ftypedef();
-  friend ftypedef typedeffed_function; // okay (because it's not declared as a member)
-
-  class facet;
-  friend class facet;  // should not assert
-  class facet {};
-};
-
-A::UndeclaredSoFar y; // expected-error {{no type named 'UndeclaredSoFar' in 'A'}}
-
-class PreDeclared;
-
-int myoperation(float f) {
-  return (int) f;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct B0;
-
-class A {
-  friend class B {}; // expected-error {{cannot define a type in a friend declaration}}
-  friend int; // expected-warning {{non-class friend type 'int' is a C++11 extension}}
-  friend B0; // expected-warning {{specify 'struct' to befriend 'B0'}}
-  friend class C; // okay
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.friend/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wc++11-compat -verify -std=c++98 %s
-// RUN: %clang_cc1 -fsyntax-only -Wc++11-compat -verify -std=c++11 %s
-
-class A {
-  friend static class B; // expected-error {{'static' is invalid in friend declarations}}
-  friend extern class C; // expected-error {{'extern' is invalid in friend declarations}}
-  friend register class E; // expected-error {{'register' is invalid in friend declarations}}
-  friend mutable class F; // expected-error {{'mutable' is invalid in friend declarations}}
-  friend typedef class G; // expected-error {{'typedef' is invalid in friend declarations}}
-  friend __thread class G; // expected-error {{'__thread' is invalid in friend declarations}}
-  friend _Thread_local class G; // expected-error {{'_Thread_local' is invalid in friend declarations}}
-  friend static _Thread_local class G; // expected-error {{'static _Thread_local' is invalid in friend declarations}}
-#if __cplusplus < 201103L
-  friend auto class D; // expected-warning {{incompatible with C++11}} expected-error {{'auto' is invalid in friend declarations}}
-#else
-  friend thread_local class G; // expected-error {{'thread_local' is invalid in friend declarations}}
-#endif
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 
-
-void f() {
-  int x = 3; // expected-note{{'x' declared here}}
-  const int c = 2;
-  struct C {
-    int& x2 = x; // expected-error{{reference to local variable 'x' declared in enclosing function 'f'}}
-    int cc = c;
-  };
-  (void)[]() mutable {
-    int x = 3; // expected-note{{'x' declared here}}
-    struct C {
-      int& x2 = x; // expected-error{{reference to local variable 'x' declared in enclosing lambda expression}}
-    };
-  };
-  C();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-int x;
-void f()
-{
-  static int s;
-  int x; // expected-note{{'x' declared here}}
-  extern int g();
-  
-  struct local {
-    int g() { return x; } // expected-error{{reference to local variable 'x' declared in enclosing function 'f'}}
-    int h() { return s; }
-    int k() { return :: x; }
-    int l() { return g(); }
-  };
-}
-
-local* p = 0; // expected-error{{unknown type name 'local'}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A { };
-
-void f() {
-  struct B : private A {}; // expected-note{{declared private here}}
-  
-  B b;
-  
-  A *a = &b; // expected-error{{cannot cast 'B' to its private base class 'A'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-void f1() {
-  struct X {
-    struct Y;
-  };
-  
-  struct X::Y {
-    void f() {}
-  };
-}
-
-void f2() {
-  struct X {
-    struct Y;
-    
-    struct Y {
-      void f() {}
-    };
-  };
-}
-
-// A class nested within a local class is a local class.
-void f3(int a) { // expected-note{{'a' declared here}}
-  struct X {
-    struct Y {
-      int f() { return a; } // expected-error{{reference to local variable 'a' declared in enclosing function 'f3'}}
-    };
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.local/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-void f() {
-  struct X {
-    static int a; // expected-error {{static data member 'a' not allowed in local class 'X'}}
-    int b;
-    
-    static void f() { }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-struct S 
-{
-  static int v1; // expected-note{{previous declaration is here}}
-  int v1; //expected-error{{duplicate member 'v1'}}
-  int v;  //expected-note 2{{previous definition is here}} \
-          // expected-note{{previous declaration is here}}
-  static int v; //expected-error{{redefinition of 'v' as different kind of symbol}}
-  int v; //expected-error{{duplicate member 'v'}}
-  static int v; //expected-error{{redefinition of 'v' as different kind of symbol}}
-  enum EnumT { E = 10 };
-  friend struct M;
-  struct X;  //expected-note{{forward declaration of 'S::X'}}
-  friend struct X;
-};
-
-S::EnumT Evar = S::E; // ok
-S::EnumT Evar2 = EnumT(); //expected-error{{use of undeclared identifier 'EnumT'}}
-S::M m; //expected-error{{no type named 'M' in 'S'}}
-S::X x; //expected-error{{variable has incomplete type 'S::X'}}
-
-
-struct S2 
-{
-  static int v2; // expected-note{{previous declaration is here}}
-  static int v2; //expected-error{{duplicate member 'v2'}}
-};
-
-struct S3
-{
-  static int v3;
-  struct S4
-  {
-    static int v3;
-  };
-};
-
-struct S4
-{
-  static int v4;
-};
-
-int S4::v4; //expected-note{{previous definition is here}}
-int S4::v4; //expected-error{{redefinition of 'v4'}}
-
-struct S5
-{
-  static int v5; //expected-note{{previous definition is here}}
-  void v5() { } //expected-error{{redefinition of 'v5' as different kind of symbol}}
-  
-  void v6() { } //expected-note{{previous definition is here}}
-  static int v6; //expected-error{{redefinition of 'v6' as different kind of symbol}}
-  
-  void v7() { }
-  void v7(int) { } //expected-note{{previous definition is here}}
-  static int v7;  //expected-error{{redefinition of 'v7' as different kind of symbol}}
-  
-  void v8();
-  int v8(int); //expected-note{{previous declaration is here}}
-  int v8; //expected-error{{duplicate member 'v8'}}
-  
-  
-};
-
-namespace PR8245 {
-  class X {
-  public:
-    template<class C> 
-    class Inner {
-    public:
-      void foo(bool bar = true);
-      int bam;
-    };
-
-    Inner<int> _foo;    
-  };
-
-  void f() {
-    X::Inner<int> c2i;
-    X::Inner<float> c2f;
-    c2i.foo();
-    c2f.foo();
-  }
-
-  class Y {
-    class Inner {
-      void foo(int = sizeof(Y));
-    };
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p13.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p13.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p13.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// If T is the name of a class, then each of the following shall have
-// a name different from T:
-
-// - every static data member of class T;
-struct X0 {
-  static int X0; // expected-error{{member 'X0' has the same name as its class}}
-};
-
-// - every member function of class T
-// (Cannot be tested)
-
-// - every member of class T that is itself a type;
-struct X1 { // expected-note{{previous use is here}}
-  enum X1 { }; // expected-error{{use of 'X1' with tag type that does not match previous declaration}}
-};
-
-struct X2 {
-  typedef int X2; // expected-error{{member 'X2' has the same name as its class}}
-};
-
-// - every enumerator of every member of class T that is an enumerated type; and
-struct X3 {
-  enum E {
-    X3 // expected-error{{member 'X3' has the same name as its class}}
-  };
-};
-
-// - every member of every anonymous union that is a member of class T.
-struct X4 {
-  union {
-    int X;
-    union {
-      float Y;
-      unsigned X4; // expected-error{{member 'X4' has the same name as its class}}
-    };
-  };
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p14.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p14.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p14.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// In addition, if class T has a user-declared constructor (12.1),
-// every non-static data member of class T shall have a name different
-// from T.
-
-struct X0 {
-  int X0; // okay
-};
-
-struct X1 {
-  int X1; // expected-note{{hidden by a non-type declaration of 'X1' here}}
-  X1(); // expected-error{{must use 'struct' tag to refer to type 'X1' in this scope}} \
-        // expected-error{{expected member name or ';' after declaration specifiers}}
-};
-
-struct X2 {
-  X2();
-  float X2; // expected-error{{member 'X2' has the same name as its class}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p1b.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p1b.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p1b.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// The first run checks that the correct errors are generated,
-// implicitly checking the order of default argument parsing:
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// The second run checks the order of inline method definitions:
-// RUN: not %clang_cc1 -fsyntax-only %s 2> %t
-// RUN: FileCheck %s < %t
-
-class A {
-public:
-  void a1() {
-    B b = B();
-  }
-
-  class B;
-  void a2(B b = B()); // expected-error{{use of default argument to function 'B' that is declared later in class 'B'}}
-
-  void a3(int a = 42);
-
-  // CHECK: error: use of undeclared identifier 'first'
-  void a4(int a = first); // expected-error{{use of undeclared identifier 'first'}}
-
-  class B {
-  public:
-    B(int b = 42) { // expected-note{{default argument declared here}}
-      A a;
-      a.a3();
-      a.a6();
-    }
-
-    void b1(A a = A()); // expected-error{{use of default argument to function 'A' that is declared later in class 'A'}}
-
-    // CHECK: error: use of undeclared identifier 'second'
-    void b2(int a = second); // expected-error{{use of undeclared identifier 'second'}}
-  };
-
-  void a5() {
-    B b = B();
-  }
-
-  void a6(B b = B());
-
-  A(int a = 42); // expected-note{{default argument declared here}}
-
-  // CHECK: error: use of undeclared identifier 'third'
-  void a7(int a = third); // expected-error{{use of undeclared identifier 'third'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// C++11 [class.mem]p2:
-//   A class is considered a completely-defined object type (or
-//   complete type) at the closing } of the class-specifier. Within
-//   the class member-specification, the class is regarded as complete
-//   within function bodies, default arguments,
-//   exception-specifications, and brace-or-equal-initializers for
-//   non-static data members (including such things in nested classes).
-//   Otherwise it is regarded as incomplete within its own class
-//   member-specification.
-
-namespace test0 {
-  struct A { // expected-note {{definition of 'test0::A' is not complete until the closing '}'}}
-    A x; // expected-error {{field has incomplete type 'test0::A'}}
-  };
-}
-
-namespace test1 {
-  template <class T> struct A {
-    A<int> x; // expected-error {{implicit instantiation of template 'test1::A<int>' within its own definition}}
-  };
-}
-
-namespace test2 {
-  template <class T> struct A;
-  template <> struct A<int> {};
-  template <class T> struct A {
-    A<int> x;
-  };
-}
-
-namespace test3 {
-  struct A {
-    struct B {
-      void f() throw(A);
-      void g() throw(B);
-    };
-
-    void f() throw(A);
-    void g() throw(B);
-  };
-
-  template<typename T>
-  struct A2 {
-    struct B {
-      void f1() throw(A2);
-      void f2() throw(A2<T>);
-      void g() throw(B);
-    };
-
-    void f1() throw(A2);
-    void f2() throw(A2<T>);
-    void g() throw(B);
-  };
-
-  template struct A2<int>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p5-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p5-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p5-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 
-
-int f();
-
-struct S 
-{
-  int a = f(); // ok
-  int b = g(); // expected-error {{use of undeclared identifier 'g'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p8-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p8-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.mem/p8-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s 
-
-struct Base1 { 
-  virtual void g();
-};
-
-struct A : Base1 {
-  virtual void g() override override; // expected-error {{class member already marked 'override'}}
-  virtual void h() final final; // expected-error {{class member already marked 'final'}}
-};
-
-struct Base2 { 
-  virtual void e1(), e2();
-  virtual void f();
-};
-
-struct B : Base2 {
-  virtual void e1() override, e2(int);  // No error.
-  virtual void f() override;
-  void g() override; // expected-error {{only virtual member functions can be marked 'override'}}
-  int h override; // expected-error {{only virtual member functions can be marked 'override'}}
-};
-
-struct C {
-  virtual void f() final;
-  void g() final; // expected-error {{only virtual member functions can be marked 'final'}}
-  int h final; // expected-error {{only virtual member functions can be marked 'final'}}
-};
-
-namespace inline_extension {
-  struct Base1 { 
-    virtual void g() {}
-  };
-
-  struct A : Base1 {
-    virtual void g() override override {} // expected-error {{class member already marked 'override'}}
-    virtual void h() final final {} // expected-error {{class member already marked 'final'}}
-  };
-
-  struct Base2 { 
-    virtual void f();
-  };
-
-  struct B : Base2 {
-    virtual void f() override {}
-    void g() override {} // expected-error {{only virtual member functions can be marked 'override'}}
-  };
-
-  struct C {
-    virtual void f() final {}
-    void g() final {} // expected-error {{only virtual member functions can be marked 'final'}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.mfct/class.mfct.non-static/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.mfct/class.mfct.non-static/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.mfct/class.mfct.non-static/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// [class.mfct.non-static]p3:
-//   When an id-expression (5.1) that is not part of a class member
-//   access syntax (5.2.5) and not used to form a pointer to member
-//   (5.3.1) is used in the body of a non-static member function of
-//   class X, if name lookup (3.4.1) resolves the name in the
-//   id-expression to a non-static non-type member of some class C,
-//   the id-expression is transformed into a class member access
-//   expression (5.2.5) using (*this) (9.3.2) as the
-//   postfix-expression to the left of the . operator. [ Note: if C is
-//   not X or a base class of X, the class member access expression is
-//   ill-formed. --end note] Similarly during name lookup, when an
-//   unqualified-id (5.1) used in the definition of a member function
-//   for class X resolves to a static member, an enumerator or a
-//   nested type of class X or of a base class of X, the
-//   unqualified-id is transformed into a qualified-id (5.1) in which
-//   the nested-name-specifier names the class of the member function.
-
-namespace test0 {
-  class A {
-    int data_member;
-    int instance_method();
-    static int static_method();
-
-    bool test() {
-      return data_member + instance_method() < static_method();
-    }
-  };
-}
-
-namespace test1 {
-  struct Opaque1 {}; struct Opaque2 {}; struct Opaque3 {};
-
-  struct A {
-    void foo(Opaque1); // expected-note {{candidate}}
-    void foo(Opaque2); // expected-note {{candidate}}
-  };
-
-  struct B : A {
-    void test();
-  };
-
-  struct C1 : A { };
-  struct C2 : B { };
-
-  void B::test() {
-    A::foo(Opaque1());
-    A::foo(Opaque2());
-    A::foo(Opaque3()); // expected-error {{no matching member function}}
-
-    C1::foo(Opaque1()); // expected-error {{call to non-static member function without an object argument}}
-    C2::foo(Opaque1()); // expected-error {{call to non-static member function without an object argument}}
-  }
-}
-
-namespace test2 {
-  struct Unrelated {
-    void foo();
-  };
-
-  template <class T> struct B;
-  template <class T> struct C;
-
-  template <class T> struct A {
-    void foo();
-
-    void test0() {
-      Unrelated::foo(); // expected-error {{call to non-static member function without an object argument}}
-    }
-
-    void test1() {
-      B<T>::foo();
-    }
-
-    static void test2() {
-      B<T>::foo(); // expected-error {{call to non-static member function without an object argument}}
-    }
-
-    void test3() {
-      C<T>::foo(); // expected-error {{no member named 'foo'}}
-    }
-  };
-
-  template <class T> struct B : A<T> {
-  };
-
-  template <class T> struct C {
-  };
-
-  int test() {
-    A<int> a;
-    a.test0(); // no instantiation note here, decl is ill-formed
-    a.test1();
-    a.test2(); // expected-note {{in instantiation}}
-    a.test3(); // expected-note {{in instantiation}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p1-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p1-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p1-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-class Outer {
-  int x;
-  static int sx;
-  int f();
-
-  // The first case is invalid in the C++03 mode but valid in C++0x (see 5.1.1.10).
-  class Inner {
-    static char a[sizeof(x)]; // okay
-    static char b[sizeof(sx)]; // okay
-    static char c[sizeof(f)]; // expected-error {{call to non-static member function without an object argument}}
-  };
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class Outer {
-  int x;
-  static int sx;
-  int f();
-
-  // C++11 does relax this rule (see 5.1.1.10) in the first case, but we need to enforce it in C++03 mode.
-  class Inner {
-    static char a[sizeof(x)]; // expected-error {{invalid use of non-static data member 'x'}}
-    static char b[sizeof(sx)]; // okay
-    static char c[sizeof(f)]; // expected-error {{call to non-static member function without an object argument}}
-  };
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.nest/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// C++0x [class.nest] p3:
-//   If class X is defined in a namespace scope, a nested class Y may be
-//   declared in class X and later defined in the definition of class X or be
-//   later defined in a namespace scope enclosing the definition of class X.
-
-namespace example {
-  class E {
-    class I1;
-    class I2;
-    class I1 { };
-  };
-  class E::I2 { };
-}
-
-// Don't insert out-of-line inner class definitions into the namespace scope.
-namespace PR6107 {
-  struct S1 { };
-  struct S2 {
-    struct S1;
-  };
-  struct S2::S1 { };
-  S1 s1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.nested.type/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.nested.type/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.nested.type/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class X {
-public:
-  typedef int I;
-  class Y { };
-  I a;
-};
-
-I b; // expected-error{{unknown type name 'I'}}
-Y c; // expected-error{{unknown type name 'Y'}}
-X::Y d;
-X::I e;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.static/class.static.data/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.static/class.static.data/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.static/class.static.data/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct NonLit { // expected-note 3{{no constexpr constructors}}
-  NonLit();
-};
-
-struct S {
-  static constexpr int a = 0;
-  static constexpr int b; // expected-error {{declaration of constexpr static data member 'b' requires an initializer}}
-
-  static constexpr int c = 0;
-  static const int d;
-  static const int d2 = 0;
-
-  static constexpr double e = 0.0; // ok
-  static const double f = 0.0; // expected-error {{requires 'constexpr' specifier}} expected-note {{add 'constexpr'}}
-  static char *const g = 0; // expected-error {{requires 'constexpr' specifier}}
-  static const NonLit h = NonLit(); // expected-error {{must be initialized out of line}}
-};
-
-constexpr int S::a;
-constexpr int S::b = 0;
-
-const int S::c;
-constexpr int S::d = 0;
-constexpr int S::d2;
-
-template<typename T>
-struct U {
-  static constexpr int a = 0;
-  static constexpr int b; // expected-error {{declaration of constexpr static data member 'b' requires an initializer}}
-  static constexpr NonLit h = NonLit(); // expected-error {{cannot have non-literal type 'const NonLit'}}
-  static constexpr T c = T(); // expected-error {{cannot have non-literal type}}
-  static const T d;
-};
-
-template<typename T> constexpr T U<T>::d = T(); // expected-error {{non-literal type 'const NonLit'}}
-
-U<int> u1;
-U<NonLit> u2; // expected-note {{here}}
-
-static_assert(U<int>::a == 0, "");
-
-constexpr int outofline = (U<NonLit>::d, 0); // expected-note {{here}} expected-warning {{unused}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.static/class.static.data/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.static/class.static.data/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.static/class.static.data/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-struct InClassInitializerOnly {
-  static const int i = 0;
-};
-int const InClassInitializerOnly::i;
-
-struct OutOfClassInitializerOnly {
-  static const int i;
-};
-int const OutOfClassInitializerOnly::i = 0;
-
-struct InClassInitializerAndOutOfClassCopyInitializer {
-  static const int i = 0; // expected-note{{previous definition is here}}
-};
-int const InClassInitializerAndOutOfClassCopyInitializer::i = 0; // expected-error{{redefinition of 'i'}}
-
-struct InClassInitializerAndOutOfClassDirectInitializer {
-  static const int i = 0; // expected-note{{previous definition is here}}
-};
-int const InClassInitializerAndOutOfClassDirectInitializer::i(0); // expected-error{{redefinition of 'i'}}
-
-
-
-int main() { }
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.union/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.union/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.union/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,133 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-void abort() __attribute__((noreturn));
-
-class Okay {
-  int a_;
-};
-
-class Virtual {
-  virtual void foo() { abort(); } // expected-note 4 {{because type 'Virtual' has a virtual member function}}
-};
-
-class VirtualBase : virtual Okay { // expected-note 4 {{because type 'VirtualBase' has a virtual base class}}
-};
-
-class Ctor {
-  Ctor() { abort(); } // expected-note 2{{because type 'Ctor' has a user-provided default constructor}} expected-note 2{{here}}
-};
-class Ctor2 {
-  Ctor2(); // expected-note {{because type 'Ctor2' has a user-provided default constructor}} expected-note 2{{here}}
-};
-class CtorTmpl { // expected-note {{because type 'CtorTmpl' has no default constructor}}
-  template<typename T> CtorTmpl(); // expected-note {{implicit default constructor suppressed by user-declared constructor}}
-};
-
-class CopyCtor { // expected-note 2{{because no constructor can be used to copy an object of type 'const CopyCtor'}}
-  CopyCtor(CopyCtor &cc) { abort(); }
-};
-
-class CopyAssign { // expected-note 2 {{because no assignment operator can be used to copy an object of type 'const CopyAssign'}}
-  CopyAssign& operator=(CopyAssign& CA) { abort(); }
-};
-
-class Dtor {
-  ~Dtor() { abort(); } // expected-note 2 {{because type 'Dtor' has a user-provided destructor}} expected-note 2{{here}}
-};
-
-union U1 {
-  Virtual v; // expected-error {{union member 'v' has a non-trivial copy constructor}}
-  VirtualBase vbase; // expected-error {{union member 'vbase' has a non-trivial copy constructor}}
-  Ctor ctor; // expected-error {{union member 'ctor' has a non-trivial constructor}}
-  Ctor2 ctor2; // expected-error {{union member 'ctor2' has a non-trivial constructor}}
-  CtorTmpl ctortmpl; // expected-error {{union member 'ctortmpl' has a non-trivial constructor}}
-  CopyCtor copyctor; // expected-error {{union member 'copyctor' has a non-trivial copy constructor}}
-  CopyAssign copyassign; // expected-error {{union member 'copyassign' has a non-trivial copy assignment operator}}
-  Dtor dtor; // expected-error {{union member 'dtor' has a non-trivial destructor}}
-  Okay okay;
-};
-
-union U2 {
-  struct {
-    Virtual v; // expected-note {{because the function selected to copy field of type 'Virtual' is not trivial}}
-  } m1; // expected-error {{union member 'm1' has a non-trivial copy constructor}}
-  struct {
-    VirtualBase vbase; // expected-note {{because the function selected to copy field of type 'VirtualBase' is not trivial}}
-  } m2; // expected-error {{union member 'm2' has a non-trivial copy constructor}}
-  struct {
-    Ctor ctor; // expected-note {{because field of type 'Ctor' has a user-provided default constructor}}
-  } m3; // expected-error {{union member 'm3' has a non-trivial constructor}}
-  struct {
-    Ctor2 ctor2; // expected-note {{because field of type 'Ctor2' has a user-provided default constructor}}
-  } m3a; // expected-error {{union member 'm3a' has a non-trivial constructor}}
-  struct { // expected-note {{no constructor can be used to copy an object of type 'const}}
-    CopyCtor copyctor;
-  } m4; // expected-error {{union member 'm4' has a non-trivial copy constructor}}
-  struct { // expected-note {{no assignment operator can be used to copy an object of type 'const}}
-    CopyAssign copyassign;
-  } m5; // expected-error {{union member 'm5' has a non-trivial copy assignment operator}}
-  struct {
-    Dtor dtor; // expected-note {{because field of type 'Dtor' has a user-provided destructor}}
-  } m6; // expected-error {{union member 'm6' has a non-trivial destructor}}
-  struct {
-    Okay okay;
-  } m7;
-};
-
-union U3 {
-  struct s1 : Virtual { // expected-note {{because the function selected to copy base class of type 'Virtual' is not trivial}}
-  } m1; // expected-error {{union member 'm1' has a non-trivial copy constructor}}
-  struct s2 : VirtualBase { // expected-note {{because the function selected to copy base class of type 'VirtualBase' is not trivial}}
-  } m2; // expected-error {{union member 'm2' has a non-trivial copy constructor}}
-  struct s3 : Ctor { // expected-note {{because base class of type 'Ctor' has a user-provided default constructor}}
-  } m3; // expected-error {{union member 'm3' has a non-trivial constructor}}
-  struct s3a : Ctor2 { // expected-note {{because base class of type 'Ctor2' has a user-provided default constructor}}
-  } m3a; // expected-error {{union member 'm3a' has a non-trivial constructor}}
-  struct s4 : CopyCtor { // expected-note {{because no constructor can be used to copy an object of type 'const U3::s4'}}
-  } m4; // expected-error {{union member 'm4' has a non-trivial copy constructor}}
-  struct s5 : CopyAssign { // expected-note {{because no assignment operator can be used to copy an object of type 'const U3::s5'}}
-  } m5; // expected-error {{union member 'm5' has a non-trivial copy assignment operator}}
-  struct s6 : Dtor { // expected-note {{because base class of type 'Dtor' has a user-provided destructor}}
-  } m6; // expected-error {{union member 'm6' has a non-trivial destructor}}
-  struct s7 : Okay {
-  } m7;
-  struct s8 {
-    s8(...) = delete; // expected-note {{because it is a variadic function}} expected-warning {{C++11}}
-  } m8; // expected-error {{union member 'm8' has a non-trivial constructor}}
-};
-
-union U4 {
-  static int i1; // expected-warning {{static data member 'i1' in union is a C++11 extension}}
-};
-int U4::i1 = 10;
-
-union U5 {
-  int& i1; // expected-error {{union member 'i1' has reference type 'int &'}}
-};
-
-union U6 {
-  struct S {
-    int &i;
-  } s; // ok
-};
-
-template <class A, class B> struct Either {
-  bool tag;
-  union { // expected-note 6 {{in instantiation of member class}}
-    A a;
-    B b; // expected-error 6 {{non-trivial}}
-  };
-
-  Either(const A& a) : tag(true), a(a) {}
-  Either(const B& b) : tag(false), b(b) {}
-};
-
-void fred() {
-  Either<int,Virtual> virt(0); // expected-note {{in instantiation of template}}
-  Either<int,VirtualBase> vbase(0); // expected-note {{in instantiation of template}}
-  Either<int,Ctor> ctor(0); // expected-note {{in instantiation of template}}
-  Either<int,CopyCtor> copyctor(0); // expected-note {{in instantiation of template}}
-  Either<int,CopyAssign> copyassign(0); // expected-note {{in instantiation of template}}
-  Either<int,Dtor> dtor(0); // expected-note {{in instantiation of template}}
-  Either<int,Okay> okay(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/class.union/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/class.union/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/class.union/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-// Unlike in C++98, C++11 allows unions to have static data members.
-
-union U1 {
-  static constexpr int k1 = 0;
-  static const int k2 = k1;
-  static int k3 = k2; // expected-error {{non-const static data member must be initialized out of line}}
-  static constexpr double k4 = k2;
-  static const double k5 = k4; // expected-error {{requires 'constexpr' specifier}} expected-note {{add 'constexpr'}}
-  int n[k1 + 3];
-};
-
-constexpr int U1::k1;
-constexpr int U1::k2;
-int U1::k3;
-
-const double U1::k4;
-const double U1::k5;
-
-template<typename T>
-union U2 {
-  static const int k1;
-  static double k2;
-  T t;
-};
-template<typename T> constexpr int U2<T>::k1 = sizeof(U2<T>);
-template<typename T> double U2<T>::k2 = 5.3;
-
-static_assert(U2<int>::k1 == sizeof(int), "");
-static_assert(U2<char>::k1 == sizeof(char), "");
-
-union U3 {
-  static const int k;
-  U3() : k(0) {} // expected-error {{does not name a non-static data member}}
-};
-
-struct S {
-  union {
-    static const int n; // expected-error {{static members cannot be declared in an anonymous union}}
-    int a;
-    int b;
-  };
-};
-static union {
-  static const int k; // expected-error {{static members cannot be declared in an anonymous union}}
-  int n;
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-namespace Test1 {
-
-class A final { };
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-namespace Test1 {
-
-class A final { }; // expected-note {{'A' declared here}}
-class B : A { }; // expected-error {{base 'A' is marked 'final'}}
-
-}
-
-namespace Test2 {
-
-template<typename T> struct A final { }; // expected-note 2 {{'A' declared here}}
-struct B : A<int> { }; // expected-error {{base 'A' is marked 'final'}}
-  
-template<typename T> struct C : A<T> { }; // expected-error {{base 'A' is marked 'final'}}
-struct D : C<int> { }; // expected-note {{in instantiation of template class 'Test2::C<int>' requested here}}
-
-}
-
-namespace Test3 {
-
-template<typename T> struct A { };
-template<> struct A<int> final { }; // expected-note {{'A' declared here}}
-
-struct B : A<bool> { };
-struct C : A<int> { }; // expected-error {{base 'A' is marked 'final'}}
-
-}
-
-namespace Test4 {
-
-struct A final { virtual void func() = 0; }; // expected-warning {{abstract class is marked 'final'}} expected-note {{unimplemented pure virtual method 'func' in 'A'}}
-struct B { virtual void func() = 0; }; // expected-note {{unimplemented pure virtual method 'func' in 'C'}}
-
-struct C final : B { }; // expected-warning {{abstract class is marked 'final'}}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class/p6-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class/p6-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class/p6-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-
-class Trivial { int n; void f(); };
-class NonTrivial1 { NonTrivial1(const NonTrivial1 &); };
-class NonTrivial2 { NonTrivial2(NonTrivial2 &&); };
-class NonTrivial3 { NonTrivial3 operator=(const NonTrivial3 &); };
-class NonTrivial4 { NonTrivial4 operator=(NonTrivial4 &&); };
-class NonTrivial5 { ~NonTrivial5(); };
-
-static_assert(__is_trivial(Trivial), "Trivial is not trivial");
-static_assert(!__is_trivial(NonTrivial1), "NonTrivial1 is trivial");
-static_assert(!__is_trivial(NonTrivial2), "NonTrivial2 is trivial");
-static_assert(!__is_trivial(NonTrivial3), "NonTrivial3 is trivial");
-static_assert(!__is_trivial(NonTrivial4), "NonTrivial4 is trivial");
-static_assert(!__is_trivial(NonTrivial5), "NonTrivial5 is trivial");
-
-struct Trivial2 {
-  Trivial2() = default;
-  Trivial2(const Trivial2 &) = default;
-  Trivial2(Trivial2 &&) = default;
-  Trivial2 &operator=(const Trivial2 &) = default;
-  Trivial2 &operator=(Trivial2 &&) = default;
-  ~Trivial2() = default;
-};
-
-class NonTrivial6 { ~NonTrivial6(); };
-
-NonTrivial6::~NonTrivial6() = default;
-
-static_assert(!__is_trivial(NonTrivial6), "NonTrivial6 is trivial");

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.base/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.base/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.base/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,155 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++0x [class.access.base]p1(a):
-//   If a class is declared to be a base class for another class using
-//   the public access specifier, the public members of the base class
-//   are accessible as public members of the derived class and protected
-//   members of the base class are accessible as protected members of
-//   the derived class.
-namespace test0 {
-  class Base {
-  public: int pub; static int spub;
-  protected: int prot; static int sprot; // expected-note 4 {{declared protected here}}
-  private: int priv; static int spriv; // expected-note 8 {{declared private here}}
-  };
-
-  class Test : public Base {
-    void test() {
-      pub++;
-      spub++;
-      prot++;
-      sprot++;
-      priv++; // expected-error {{private member}}
-      spriv++; // expected-error {{private member}}
-
-      Base::pub++;
-      Base::spub++;
-      Base::prot++;
-      Base::sprot++;
-      Base::priv++; // expected-error {{private member}}
-      Base::spriv++; // expected-error {{private member}}
-    }
-  };
-
-  void test(Test *t) {
-    t->pub++;
-    t->spub++;
-    t->prot++; // expected-error {{protected member}}
-    t->sprot++; // expected-error {{protected member}}
-    t->priv++; // expected-error {{private member}}
-    t->spriv++; // expected-error {{private member}}
-
-    t->Base::pub++;
-    t->Base::spub++;
-    t->Base::prot++; // expected-error {{protected member}}
-    t->Base::sprot++; // expected-error {{protected member}}
-    t->Base::priv++; // expected-error {{private member}}
-    t->Base::spriv++; // expected-error {{private member}}
-  }
-}
-
-// C++0x [class.access.base]p1(b):
-//   If a class is declared to be a base class for another class using
-//   the protected access specifier, the public and protected members
-//   of the base class are accessible as protected members of the
-//   derived class.
-namespace test1 {
-  class Base { // expected-note 6{{member is declared here}}
-  public: 
-    int pub; // expected-note{{member is declared here}}
-    static int spub; // expected-note{{member is declared here}}
-  protected: int prot; static int sprot; // expected-note 4 {{declared protected here}}
-  private: int priv; static int spriv; // expected-note 8 {{declared private here}}
-  };
-
-  class Test : protected Base { // expected-note 6 {{declared protected here}} expected-note 8 {{constrained by protected inheritance here}}
-    void test() {
-      pub++;
-      spub++;
-      prot++;
-      sprot++;
-      priv++; // expected-error {{private member}}
-      spriv++; // expected-error {{private member}}
-
-      Base::pub++;
-      Base::spub++;
-      Base::prot++;
-      Base::sprot++;
-      Base::priv++; // expected-error {{private member}}
-      Base::spriv++; // expected-error {{private member}}
-    }
-  };
-
-  void test(Test *t) {
-    t->pub++; // expected-error {{protected member}} expected-error {{protected base class}}
-    t->spub++; // expected-error {{protected member}}
-    t->prot++; // expected-error {{protected member}} expected-error {{protected base class}}
-    t->sprot++; // expected-error {{protected member}}
-    t->priv++; // expected-error {{private member}} expected-error {{protected base class}}
-    t->spriv++; // expected-error {{private member}}
-
-    // Two possible errors here: one for Base, one for the member
-    t->Base::pub++; // expected-error {{protected member}} expected-error {{protected base class}}
-    t->Base::spub++; // expected-error {{protected member}}
-    t->Base::prot++; // expected-error 2 {{protected member}} expected-error {{protected base class}}
-    t->Base::sprot++; // expected-error 2 {{protected member}}
-    t->Base::priv++; // expected-error {{protected member}} expected-error {{private member}} expected-error {{protected base class}}
-    t->Base::spriv++; // expected-error {{protected member}} expected-error {{private member}}
-  }
-}
-
-// C++0x [class.access.base]p1(b):
-//   If a class is declared to be a base class for another class using
-//   the private access specifier, the public and protected members of
-//   the base class are accessible as private members of the derived
-//   class.
-namespace test2 {
-  class Base { // expected-note 6{{member is declared here}}
-  public:
-    int pub; // expected-note{{member is declared here}}
-    static int spub; // expected-note{{member is declared here}}
-  protected:
-    int prot; // expected-note {{declared protected here}} \
-    // expected-note{{member is declared here}}
-    static int sprot; // expected-note {{declared protected here}} \
-    // expected-note{{member is declared here}}
-  private:
-    int priv; // expected-note 4 {{declared private here}}
-    static int spriv; // expected-note 4 {{declared private here}}
-  };
-
-  class Test : private Base { // expected-note 6 {{declared private here}} \
-                              // expected-note 10 {{constrained by private inheritance here}}
-    void test() {
-      pub++;
-      spub++;
-      prot++;
-      sprot++;
-      priv++; // expected-error {{private member}}
-      spriv++; // expected-error {{private member}}
-
-      Base::pub++;
-      Base::spub++;
-      Base::prot++;
-      Base::sprot++;
-      Base::priv++; // expected-error {{private member}}
-      Base::spriv++; // expected-error {{private member}}
-    }
-  };
-
-  void test(Test *t) {
-    t->pub++; // expected-error {{private member}} expected-error {{private base class}}
-    t->spub++; // expected-error {{private member}}
-    t->prot++; // expected-error {{private member}} expected-error {{private base class}}
-    t->sprot++; // expected-error {{private member}}
-    t->priv++; // expected-error {{private member}} expected-error {{private base class}}
-    t->spriv++; // expected-error {{private member}}
-
-    t->Base::pub++; // expected-error {{private member}} expected-error {{private base class}}
-    t->Base::spub++; // expected-error {{private member}}
-    t->Base::prot++; // expected-error {{protected member}} expected-error {{private member}} expected-error {{private base class}}
-    t->Base::sprot++; // expected-error {{protected member}} expected-error {{private member}}
-    t->Base::priv++; // expected-error 2 {{private member}} expected-error {{private base class}}
-    t->Base::spriv++; // expected-error 2 {{private member}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.base/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.base/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.base/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-namespace test0 {
-  struct A {
-    static int x;
-  };
-  struct B : A {};
-  struct C : B {};
-
-  int test() {
-    return A::x
-         + B::x
-         + C::x;
-  }
-}
-
-namespace test1 {
-  struct A {
-    private: static int x; // expected-note 5 {{declared private here}}
-    static int test() { return x; }
-  };
-  struct B : public A {
-    static int test() { return x; } // expected-error {{private member}}
-  };
-  struct C : private A {
-    static int test() { return x; } // expected-error {{private member}}
-  };
-
-  struct D {
-    public: static int x; // expected-note{{member is declared here}}
-    static int test() { return x; }
-  };
-  struct E : private D { // expected-note{{constrained by private inheritance}}
-    static int test() { return x; }
-  };
-
-  int test() {
-    return A::x // expected-error {{private member}}
-         + B::x // expected-error {{private member}}
-         + C::x // expected-error {{private member}}
-         + D::x
-         + E::x; // expected-error {{private member}}
-  }
-}
-
-namespace test2 {
-  class A {
-  protected: static int x; // expected-note{{member is declared here}}
-  };
-
-  class B : private A {}; // expected-note {{private inheritance}}
-  class C : private A {
-    int test(B *b) {
-      return b->x; // expected-error {{private member}}
-    }
-  };
-}
-
-namespace test3 {
-  class A {
-  protected: static int x;
-  };
-
-  class B : public A {};
-  class C : private A {
-    int test(B *b) {
-      // x is accessible at C when named in A.
-      // A is an accessible base of B at C.
-      // Therefore this succeeds.
-      return b->x;
-    }
-  };
-}
-
-// Don't crash. <rdar://12926092>
-// Note that 'field' is indeed a private member of X but that access
-// is indeed ultimately constrained by the protected inheritance from Y.
-// If someone wants to put the effort into improving this diagnostic,
-// they can feel free; even explaining it in person would be a pain.
-namespace test4 {
-  class Z;
-  class X {
-  public:
-    void f(Z *p);
-
-  private:
-    int field; // expected-note {{member is declared here}}
-  };
-
-  class Y : public X { };
-  class Z : protected Y { }; // expected-note 2 {{constrained by protected inheritance here}}
-
-  void X::f(Z *p) {
-    p->field = 0; // expected-error {{cannot cast 'test4::Z' to its protected base class 'test4::X'}} expected-error {{'field' is a private member of 'test4::X'}}
-  }
-}
-
-// TODO: flesh out these cases

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.dcl/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.dcl/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.dcl/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,199 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// This is just the test for [namespace.udecl]p4 with 'using'
-// uniformly stripped out.
-
-// C++03 [namespace.udecl]p4:
-//   A using-declaration used as a member-declaration shall refer to a
-//   member of a base class of the class being defined, shall refer to
-//   a member of an anonymous union that is a member of a base class
-//   of the class being defined, or shall refer to an enumerator for
-//   an enumeration type that is a member of a base class of the class
-//   being defined.
-
-// There is no directly analogous paragraph in C++0x, and the feature
-// works sufficiently differently there that it needs a separate test.
-
-namespace test0 {
-  namespace NonClass {
-    typedef int type;
-    struct hiding {};
-    int hiding;
-    static union { double union_member; };
-    enum tagname { enumerator };
-  }
-
-  class Test0 {
-    NonClass::type; // expected-error {{not a class}} expected-warning {{access declarations are deprecated}}
-    NonClass::hiding; // expected-error {{not a class}} expected-warning {{access declarations are deprecated}}
-    NonClass::union_member; // expected-error {{not a class}} expected-warning {{access declarations are deprecated}}
-    NonClass::enumerator; // expected-error {{not a class}} expected-warning {{access declarations are deprecated}}
-  };
-}
-
-struct Opaque0 {};
-
-namespace test1 {
-  struct A {
-    typedef int type;
-    struct hiding {}; // expected-note {{previous use is here}}
-    Opaque0 hiding;
-    union { double union_member; };
-    enum tagname { enumerator };
-  };
-
-  struct B : A {
-    A::type; // expected-warning {{access declarations are deprecated}}
-    A::hiding; // expected-warning {{access declarations are deprecated}}
-    A::union_member; // expected-warning {{access declarations are deprecated}}
-    A::enumerator; // expected-warning {{access declarations are deprecated}}
-    A::tagname; // expected-warning {{access declarations are deprecated}}
-
-    void test0() {
-      type t = 0;
-    }
-
-    void test1() {
-      typedef struct A::hiding local;
-      struct hiding _ = local();
-    }
-
-    void test2() {
-      union hiding _; // expected-error {{tag type that does not match previous}}
-    }
-
-    void test3() {
-      char array[sizeof(union_member) == sizeof(double) ? 1 : -1];
-    }
-
-    void test4() {
-      enum tagname _ = enumerator;
-    }
-
-    void test5() {
-      Opaque0 _ = hiding;
-    }
-  };
-}
-
-namespace test2 {
-  struct A {
-    typedef int type;
-    struct hiding {}; // expected-note {{previous use is here}}
-    int hiding;
-    union { double union_member; };
-    enum tagname { enumerator };
-  };
-
-  template <class T> struct B : A {
-    A::type; // expected-warning {{access declarations are deprecated}}
-    A::hiding; // expected-warning {{access declarations are deprecated}}
-    A::union_member; // expected-warning {{access declarations are deprecated}}
-    A::enumerator; // expected-warning {{access declarations are deprecated}}
-    A::tagname; // expected-warning {{access declarations are deprecated}}
-
-    void test0() {
-      type t = 0;
-    }
-
-    void test1() {
-      typedef struct A::hiding local;
-      struct hiding _ = local();
-    }
-
-    void test2() {
-      union hiding _; // expected-error {{tag type that does not match previous}}
-    }
-
-    void test3() {
-      char array[sizeof(union_member) == sizeof(double) ? 1 : -1];
-    }
-
-    void test4() {
-      enum tagname _ = enumerator;
-    }
-
-    void test5() {
-      Opaque0 _ = hiding;
-    }
-  };
-}
-
-namespace test3 {
-  struct hiding {};
-
-  template <class T> struct A {
-    typedef int type; // expected-note {{target of using declaration}}
-    struct hiding {};
-    Opaque0 hiding;
-    union { double union_member; };
-    enum tagname { enumerator }; // expected-note {{target of using declaration}}
-  };
-
-  template <class T> struct B : A<T> {
-    A<T>::type; // expected-error {{dependent using declaration resolved to type without 'typename'}} // expected-warning {{access declarations are deprecated}}
-    A<T>::hiding; // expected-warning {{access declarations are deprecated}}
-    A<T>::union_member; // expected-warning {{access declarations are deprecated}}
-    A<T>::enumerator; // expected-warning {{access declarations are deprecated}}
-    A<T>::tagname; // expected-error {{dependent using declaration resolved to type without 'typename'}} // expected-warning {{access declarations are deprecated}}
-
-    // FIXME: re-enable these when the various bugs involving tags are fixed
-#if 0
-    void test1() {
-      typedef struct A<T>::hiding local;
-      struct hiding _ = local();
-    }
-
-    void test2() {
-      typedef struct A<T>::hiding local;
-      union hiding _ = local();
-    }
-#endif
-
-    void test3() {
-      char array[sizeof(union_member) == sizeof(double) ? 1 : -1];
-    }
-
-#if 0
-    void test4() {
-      enum tagname _ = enumerator;
-    }
-#endif
-
-    void test5() {
-      Opaque0 _ = hiding;
-    }
-  };
-
-  template struct B<int>; // expected-note {{in instantiation}}
-}
-
-namespace test4 {
-  struct Base {
-    int foo();
-  };
-
-  struct Unrelated {
-    int foo();
-  };
-
-  struct Subclass : Base {
-  };
-
-  namespace InnerNS {
-    int foo();
-  }
-
-  // We should be able to diagnose these without instantiation.
-  template <class T> struct C : Base {
-    InnerNS::foo; // expected-error {{not a class}} expected-warning {{access declarations are deprecated}}
-    Base::bar; // expected-error {{no member named 'bar'}} expected-warning {{access declarations are deprecated}}
-    Unrelated::foo; // expected-error {{not a base class}} expected-warning {{access declarations are deprecated}}
-    C::foo; // legal in C++03 // expected-warning {{access declarations are deprecated}}
-    Subclass::foo; // legal in C++03 // expected-warning {{access declarations are deprecated}}
-
-    int bar(); //expected-note {{target of using declaration}}
-    C::bar; // expected-error {{refers to its own class}} expected-warning {{access declarations are deprecated}}
-  };
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.nest/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.nest/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.access.nest/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Derived from GNU's std::string
-namespace test0 {
-  class A {
-    struct B {
-      unsigned long length;
-    };
-    struct C : B {
-      static const unsigned long max_length;
-    };
-  };
-  
-  const unsigned long A::C::max_length = sizeof(B);
-}
-
-// Example from the standard.
-namespace test1 {
-  class E {
-    int x;
-    class B {};
-
-    class I {
-      B b;
-      int y; // expected-note {{declared private here}}
-      void f(E* p, int i) {
-        p->x = i;
-      }
-    };
-
-    int g(I* p) { return p->y; } // expected-error {{'y' is a private member of 'test1::E::I'}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,374 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++'0x [class.friend] p1:
-//   A friend of a class is a function or class that is given permission to use
-//   the private and protected member names from the class. A class specifies
-//   its friends, if any, by way of friend declarations. Such declarations give
-//   special access rights to the friends, but they do not make the nominated
-//   friends members of the befriending class.
-
-struct S { static void f(); };
-S* g() { return 0; }
-
-struct X {
-  friend struct S;
-  friend S* g();
-};
-
-void test1() {
-  S s;
-  g()->f();
-  S::f();
-  X::g(); // expected-error{{no member named 'g' in 'X'}}
-  X::S x_s; // expected-error{{no type named 'S' in 'X'}}
-  X x;
-  x.g(); // expected-error{{no member named 'g' in 'X'}}
-}
-
-// Test that we recurse through namespaces to find already declared names, but
-// new names are declared within the enclosing namespace.
-namespace N {
-  struct X {
-    friend struct S;
-    friend S* g();
-
-    friend struct S2;
-    friend struct S2* g2();
-  };
-
-  struct S2 { static void f2(); };
-  S2* g2() { return 0; }
-
-  void test() {
-    g()->f();
-    S s;
-    S::f();
-    X::g(); // expected-error{{no member named 'g' in 'N::X'}}
-    X::S x_s; // expected-error{{no type named 'S' in 'N::X'}}
-    X x;
-    x.g(); // expected-error{{no member named 'g' in 'N::X'}}
-
-    g2();
-    S2 s2;
-    ::g2(); // expected-error{{no member named 'g2' in the global namespace}}
-    ::S2 g_s2; // expected-error{{no type named 'S2' in the global namespace}}
-    X::g2(); // expected-error{{no member named 'g2' in 'N::X'}}
-    X::S2 x_s2; // expected-error{{no type named 'S2' in 'N::X'}}
-    x.g2(); // expected-error{{no member named 'g2' in 'N::X'}}
-  }
-}
-
-namespace test0 {
-  class ClassFriend {
-    void test();
-  };
-
-  class MemberFriend {
-  public:
-    void test();
-  };
-
-  void declared_test();
-
-  class Class {
-    static void member(); // expected-note 2 {{declared private here}}
-
-    friend class ClassFriend;
-    friend class UndeclaredClassFriend;
-
-    friend void undeclared_test();
-    friend void declared_test();
-    friend void MemberFriend::test();
-  };
-
-  void declared_test() {
-    Class::member();
-  }
-
-  void undeclared_test() {
-    Class::member();
-  }
-
-  void unfriended_test() {
-    Class::member(); // expected-error {{'member' is a private member of 'test0::Class'}}
-  }
-
-  void ClassFriend::test() {
-    Class::member();
-  }
-
-  void MemberFriend::test() {
-    Class::member();
-  }
-
-  class UndeclaredClassFriend {
-    void test() {
-      Class::member();
-    }
-  };
-
-  class ClassNonFriend {
-    void test() {
-      Class::member(); // expected-error {{'member' is a private member of 'test0::Class'}}
-    }
-  };
-}
-
-// Make sure that friends have access to inherited protected members.
-namespace test2 {
-  struct X;
-
-  class ilist_half_node {
-    friend struct ilist_walker_bad;
-    X *Prev;
-  protected:
-    X *getPrev() { return Prev; } // expected-note{{member is declared here}}
-  };
-
-  class ilist_node : private ilist_half_node { // expected-note {{declared private here}} expected-note {{constrained by private inheritance here}}
-    friend struct ilist_walker;
-    X *Next;
-    X *getNext() { return Next; } // expected-note {{declared private here}}
-  };
-
-  struct X : ilist_node {};
-
-  struct ilist_walker {
-    static X *getPrev(X *N) { return N->getPrev(); }
-    static X *getNext(X *N) { return N->getNext(); }
-  };  
-
-  struct ilist_walker_bad {
-    static X *getPrev(X *N) { return N->getPrev(); } // \
-    // expected-error {{'getPrev' is a private member of 'test2::ilist_half_node'}} \
-    // expected-error {{cannot cast 'test2::X' to its private base class 'test2::ilist_half_node'}}
-
-    static X *getNext(X *N) { return N->getNext(); } // \
-    // expected-error {{'getNext' is a private member of 'test2::ilist_node'}}
-  };  
-}
-
-namespace test3 {
-  class A { protected: int x; }; // expected-note {{declared protected here}}
-
-  class B : public A {
-    friend int foo(B*);
-  };
-
-  int foo(B *p) {
-    return p->x;
-  }
-
-  int foo(const B *p) {
-    return p->x; // expected-error {{'x' is a protected member of 'test3::A'}}
-  }
-}
-
-namespace test3a {
-  class A { protected: int x; };
-
-  class B : public A {
-    friend int foo(B*);
-  };
-
-  int foo(B * const p) {
-    return p->x;
-  }
-}
-
-namespace test4 {
-  template <class T> class Holder {
-    T object;
-    friend bool operator==(Holder &a, Holder &b) {
-      return a.object == b.object; // expected-error {{invalid operands to binary expression}}
-    }
-  };
-
-  struct Inequal {};
-  bool test() {
-    Holder<Inequal> a, b;
-    return a == b;  // expected-note {{requested here}}
-  }
-}
-
-
-// PR6174
-namespace test5 {
-  namespace ns {
-    class A;
-  }
-
-  class ns::A {
-  private: int x;
-    friend class B;
-  };
-
-  namespace ns {
-    class B {
-      int test(A *p) { return p->x; }
-    };
-  }
-}
-
-// PR6207
-namespace test6 {
-  struct A {};
-
-  struct B {
-    friend A::A();
-    friend A::~A();
-    friend A &A::operator=(const A&);
-  };
-}
-
-namespace test7 {
-  template <class T> struct X {
-    X();
-    ~X();
-    void foo();
-    void bar();
-  };
-
-  class A {
-    friend void X<int>::foo();
-    friend X<int>::X();
-    friend X<int>::X(const X&);
-
-  private:
-    A(); // expected-note 2 {{declared private here}}
-  };
-
-  template<> void X<int>::foo() {
-    A a;
-  }
-
-  template<> void X<int>::bar() {
-    A a; // expected-error {{calling a private constructor}}
-  }
-
-  template<> X<int>::X() {
-    A a;
-  }
-
-  template<> X<int>::~X() {
-    A a; // expected-error {{calling a private constructor}}
-  }
-}
-
-// Return types, parameters and default arguments to friend functions.
-namespace test8 {
-  class A {
-    typedef int I; // expected-note 4 {{declared private here}}
-    static const I x = 0; // expected-note {{implicitly declared private here}}
-    friend I f(I i);
-    template<typename T> friend I g(I i);
-  };
-
-  const A::I A::x;
-  A::I f(A::I i = A::x) {}
-  template<typename T> A::I g(A::I i) {
-    T t;
-  }
-  template A::I g<A::I>(A::I i);
-
-  A::I f2(A::I i = A::x) {} // expected-error 3 {{is a private member of}}
-  template<typename T> A::I g2(A::I i) { // expected-error 2 {{is a private member of}}
-    T t;
-  }
-  template A::I g2<A::I>(A::I i);
-}
-
-// PR6885
-namespace test9 {
-  class B {
-    friend class test9;
-  };
-}
-
-// PR7230
-namespace test10 {
-  extern "C" void f(void);
-  extern "C" void g(void);
-
-  namespace NS {
-    class C {
-      void foo(void); // expected-note {{declared private here}}
-      friend void test10::f(void);
-    };
-    static C* bar;
-  }
-
-  void f(void) {
-    NS::bar->foo();
-  }
-
-  void g(void) {
-    NS::bar->foo(); // expected-error {{private member}}
-  }
-}
-
-// PR8705
-namespace test11 {
-  class A {
-  public:
-    void test0(int);
-    void test1(int);
-    void test2(int);
-    void test3(int);
-  };
-
-  class B {
-    typedef int private_type; // expected-note 2 {{implicitly declared private here}}
-    friend void A::test0(int);
-    friend void A::test1(int);
-  };
-
-  void A::test0(B::private_type x) {}
-  void A::test1(int x = B::private_type()) {}
-  void A::test2(B::private_type x) {} // expected-error {{'private_type' is a private member of 'test11::B'}}
-  void A::test3(int x = B::private_type()) {} // expected-error {{'private_type' is a private member of 'test11::B'}}
-}
-
-
-// PR9221
-namespace test12 {
-  struct A {
-    void foo();
-  };
-  class B : private A {
-    friend void A::foo();
-    void *mem;
-  };
-  void A::foo() {
-    void *var = static_cast<B*>(this)->mem;
-  }
-}
-
-namespace PR9103 {
-  struct base {
-  protected:
-    static void foo(void) {}
-  };
-
-  struct cls: base {
-    friend void bar(void) {
-      base::foo();
-    }
-  };
-}
-
-// PR13642.  When computing the effective context, we were walking up
-// the DC chain for the canonical decl, which is unfortunate if that's
-// (e.g.) a friend declaration.
-namespace test14 {
-  class A {
-    class B { // expected-note {{implicitly declared private here}}
-      static int i;
-      friend void c();
-    };
-  };
-
-  void c() {
-    A::B::i = 5; // expected-error {{'B' is a private member of 'test14::A'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// rdar://problem/8540720
-namespace test0 {
-  void foo() {
-    void bar();
-    class A {
-      friend void bar();
-    };
-  }
-}
-
-namespace test1 {
-  void foo() {
-    class A {
-      friend void bar(); // expected-error {{no matching function found in local scope}}
-    };
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p2-cxx03.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p2-cxx03.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p2-cxx03.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-class X0 {
-  friend T; // expected-warning{{non-class friend type 'T' is a C++11 extension}}
-};
-
-class X1 { };
-enum E1 { };
-X0<X1> x0a;
-X0<X1 *> x0b;
-X0<int> x0c;
-X0<E1> x0d;
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p3-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-template<typename T>
-class X0 {
-  friend T;
-};
-
-class Y1 { };
-enum E1 { };
-X0<Y1> x0a;
-X0<Y1 *> x0b;
-X0<int> x0c;
-X0<E1> x0d;
-
-template<typename T>
-class X1 {
-  friend typename T::type; // expected-error{{no type named 'type' in 'Y1'}}
-};
-
-struct Y2 {
-  struct type { };
-};
-
-struct Y3 {
-  typedef int type;
-};
-
-X1<Y2> x1a;
-X1<Y3> x1b;
-X1<Y1> x1c; // expected-note{{in instantiation of template class 'X1<Y1>' requested here}}
-
-template<typename T> class B;
-
-template<typename T>
-class A {
-  T x;
-public:
-  class foo {};
-  static int y;
-  template <typename S> friend class B<S>::ty;
-};
-
-template <typename T> class B { typedef int ty; };
-
-struct {
-  // Ill-formed
-  int friend; // expected-error {{'friend' must appear first in a non-function declaration}}
-  unsigned friend int; // expected-error {{'friend' must appear first in a non-function declaration}}
-  const volatile friend int; // expected-error {{'friend' must appear first in a non-function declaration}}
-  int
-          friend; // expected-error {{'friend' must appear first in a non-function declaration}}
-
-  // OK
-  int friend foo(void);
-  friend int;
-  friend const volatile int;
-      friend
-
-  float;
-  template<typename T> friend class A<T>::foo;
-} a;
-
-void testA() { (void)sizeof(A<int>); }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f1();
-
-struct X {
-  void f2();
-};
-
-struct Y {
-  friend void ::f1() { } // expected-error{{friend function definition cannot be qualified with '::'}}
-  friend void X::f2() { } // expected-error{{friend function definition cannot be qualified with 'X::'}}
-};
-
-void local() {
-  void f();
-
-  struct Local {
-    friend void f() { } // expected-error{{friend function cannot be defined in a local class}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p9-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p9-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.friend/p9-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,117 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++98 [class.friend]p7:
-// C++11 [class.friend]p9:
-//   A name nominated by a friend declaration shall be accessible in
-//   the scope of the class containing the friend declaration.
-
-// PR12328
-// Simple, non-templated case.
-namespace test0 {
-  class X {
-    void f(); // expected-note {{implicitly declared private here}}
-  };
-
-  class Y {
-    friend void X::f(); // expected-error {{friend function 'f' is a private member of 'test0::X'}}
-  };
-}
-
-// Templated but non-dependent.
-namespace test1 {
-  class X {
-    void f(); // expected-note {{implicitly declared private here}}
-  };
-
-  template <class T> class Y {
-    friend void X::f(); // expected-error {{friend function 'f' is a private member of 'test1::X'}}
-  };
-}
-
-// Dependent but instantiated at the right type.
-namespace test2 {
-  template <class T> class Y;
-
-  class X {
-    void f();
-    friend class Y<int>;
-  };
-
-  template <class T> class Y {
-    friend void X::f();
-  };
-
-  template class Y<int>;
-}
-
-// Dependent and instantiated at the wrong type.
-namespace test3 {
-  template <class T> class Y;
-
-  class X {
-    void f(); // expected-note {{implicitly declared private here}}
-    friend class Y<int>;
-  };
-
-  template <class T> class Y {
-    friend void X::f(); // expected-error {{friend function 'f' is a private member of 'test3::X'}}
-  };
-
-  template class Y<float>; // expected-note {{in instantiation}}
-}
-
-// Dependent because dependently-scoped.
-namespace test4 {
-  template <class T> class X {
-    void f();
-  };
-
-  template <class T> class Y {
-    friend void X<T>::f();
-  };
-}
-
-// Dependently-scoped, no friends.
-namespace test5 {
-  template <class T> class X {
-    void f(); // expected-note {{implicitly declared private here}}
-  };
-
-  template <class T> class Y {
-    friend void X<T>::f(); // expected-error {{friend function 'f' is a private member of 'test5::X<int>'}}
-  };
-
-  template class Y<int>; // expected-note {{in instantiation}}
-}
-
-// Dependently-scoped, wrong friend.
-namespace test6 {
-  template <class T> class Y;
-
-  template <class T> class X {
-    void f(); // expected-note {{implicitly declared private here}}
-    friend class Y<float>;
-  };
-
-  template <class T> class Y {
-    friend void X<T>::f(); // expected-error {{friend function 'f' is a private member of 'test6::X<int>'}}
-  };
-
-  template class Y<int>; // expected-note {{in instantiation}}
-}
-
-// Dependently-scoped, right friend.
-namespace test7 {
-  template <class T> class Y;
-
-  template <class T> class X {
-    void f();
-    friend class Y<int>;
-  };
-
-  template <class T> class Y {
-    friend void X<T>::f();
-  };
-
-  template class Y<int>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.protected/p1-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.protected/p1-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.protected/p1-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR12497
-namespace test0 {
-  class A {
-  protected:
-    A() {}
-    A(const A &) {}
-    ~A() {}
-    A &operator=(const A &a) { return *this; }
-  };
-
-  class B : public A {};
-
-  void test() {
-    B b1;
-    B b2 = b1;
-    b1 = b2;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.protected/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.protected/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/class.protected/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,520 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace test0 {
-  class A {
-    protected: int x; // expected-note 3 {{declared}} \
-    // expected-note {{member is declared here}}
-    static int sx; // expected-note 3 {{declared}} \
-    // expected-note {{member is declared here}}
-  };
-  class B : public A {
-  };
-  class C : protected A { // expected-note {{declared}}
-  };
-  class D : private B { // expected-note 3 {{constrained}}
-  };
-
-  void test(A &a) {
-    (void) a.x; // expected-error {{'x' is a protected member}}
-    (void) a.sx; // expected-error {{'sx' is a protected member}}
-  }
-  void test(B &b) {
-    (void) b.x; // expected-error {{'x' is a protected member}}
-    (void) b.sx; // expected-error {{'sx' is a protected member}}
-  }
-  void test(C &c) {
-    (void) c.x; // expected-error {{'x' is a protected member}} expected-error {{protected base class}}
-    (void) c.sx; // expected-error {{'sx' is a protected member}}
-  }
-  void test(D &d) {
-    (void) d.x; // expected-error {{'x' is a private member}} expected-error {{private base class}}
-    (void) d.sx; // expected-error {{'sx' is a private member}}
-  }
-}
-
-namespace test1 {
-  class A {
-    protected: int x;
-    static int sx;
-    static void test(A&);
-  };
-  class B : public A {
-    static void test(B&);
-  };
-  class C : protected A {
-    static void test(C&);
-  };
-  class D : private B {
-    static void test(D&);
-  };
-
-  void A::test(A &a) {
-    (void) a.x;
-    (void) a.sx;
-  }
-  void B::test(B &b) {
-    (void) b.x;
-    (void) b.sx;
-  }
-  void C::test(C &c) {
-    (void) c.x;
-    (void) c.sx;
-  }
-  void D::test(D &d) {
-    (void) d.x;
-    (void) d.sx;
-  }
-}
-
-namespace test2 {
-  class A {
-    protected: int x; // expected-note 3 {{can only access this member on an object of type}}
-    static int sx;
-    static void test(A&);
-  };
-  class B : public A {
-    static void test(A&);
-  };
-  class C : protected A {
-    static void test(A&);
-  };
-  class D : private B {
-    static void test(A&);
-  };
-
-  void A::test(A &a) {
-    (void) a.x;
-    (void) a.sx;
-  }
-  void B::test(A &a) {
-    (void) a.x; // expected-error {{'x' is a protected member}}
-    (void) a.sx;
-  }
-  void C::test(A &a) {
-    (void) a.x; // expected-error {{'x' is a protected member}}
-    (void) a.sx;
-  }
-  void D::test(A &a) {
-    (void) a.x; // expected-error {{'x' is a protected member}}
-    (void) a.sx;
-  }
-}
-
-namespace test3 {
-  class B;
-  class A {
-    protected: int x; //expected-note {{declared protected}} // expected-note {{can only access this member on an object of type}}
-    static int sx;
-    static void test(B&);
-  };
-  class B : public A {
-    static void test(B&);
-  };
-  class C : protected A {
-    static void test(B&);
-  };
-  class D : private B {
-    static void test(B&);
-  };
-
-  void A::test(B &b) {
-    (void) b.x;
-    (void) b.sx;
-  }
-  void B::test(B &b) {
-    (void) b.x;
-    (void) b.sx;
-  }
-  void C::test(B &b) {
-    (void) b.x; // expected-error {{'x' is a protected member}}
-    (void) b.sx;
-  }
-  void D::test(B &b) {
-    (void) b.x; // expected-error {{'x' is a protected member}}
-    (void) b.sx;
-  }
-}
-
-namespace test4 {
-  class C;
-  class A {
-    protected: int x; // expected-note 2{{declared protected here}} expected-note{{member is declared here}}
-    static int sx;    // expected-note 3{{member is declared here}}
-    static void test(C&);
-  };
-  class B : public A {
-    static void test(C&);
-  };
-  class C : protected A { // expected-note 4 {{constrained}} expected-note 3 {{declared}}
-    static void test(C&);
-  };
-  class D : private B {
-    static void test(C&);
-  };
-
-  void A::test(C &c) {
-    (void) c.x;  // expected-error {{'x' is a protected member}} \
-                 // expected-error {{protected base class}}
-    (void) c.sx; // expected-error {{'sx' is a protected member}}
-  }
-  void B::test(C &c) {
-    (void) c.x;  // expected-error {{'x' is a protected member}} \
-                 // expected-error {{protected base class}}
-    (void) c.sx; // expected-error {{'sx' is a protected member}}
-  }
-  void C::test(C &c) {
-    (void) c.x;
-    (void) c.sx;
-  }
-  void D::test(C &c) {
-    (void) c.x;  // expected-error {{'x' is a protected member}} \
-                 // expected-error {{protected base class}}
-    (void) c.sx; // expected-error {{'sx' is a protected member}}
-  }
-}
-
-namespace test5 {
-  class D;
-  class A {
-    protected: int x; // expected-note 3{{member is declared here}}
-    static int sx; // expected-note 3{{member is declared here}}
-    static void test(D&);
-  };
-  class B : public A {
-    static void test(D&);
-  };
-  class C : protected A {
-    static void test(D&);
-  };
-  class D : private B { // expected-note 9 {{constrained}}
-    static void test(D&);
-  };
-
-  void A::test(D &d) {
-    (void) d.x;  // expected-error {{'x' is a private member}} \
-                 // expected-error {{cannot cast}}
-    (void) d.sx; // expected-error {{'sx' is a private member}}
-  }
-  void B::test(D &d) {
-    (void) d.x;  // expected-error {{'x' is a private member}} \
-                 // expected-error {{cannot cast}}
-    (void) d.sx; // expected-error {{'sx' is a private member}}
-  }
-  void C::test(D &d) {
-    (void) d.x;  // expected-error {{'x' is a private member}} \
-                 // expected-error {{cannot cast}}
-    (void) d.sx; // expected-error {{'sx' is a private member}}
-  }
-  void D::test(D &d) {
-    (void) d.x;
-    (void) d.sx;
-  }
-}
-
-namespace test6 {
-  class Static {};
-  class A {
-  protected:
-    void foo(int); // expected-note 3 {{can only access this member on an object of type}}
-    void foo(long);
-    static void foo(Static);
-
-    static void test(A&);
-  };
-  class B : public A {
-    static void test(A&);
-  };
-  class C : protected A {
-    static void test(A&);
-  };
-  class D : private B {
-    static void test(A&);
-  };
-
-  void A::test(A &a) {
-    a.foo(10);
-    a.foo(Static());
-  }
-  void B::test(A &a) {
-    a.foo(10); // expected-error {{'foo' is a protected member}}
-    a.foo(Static());
-  }
-  void C::test(A &a) {
-    a.foo(10); // expected-error {{'foo' is a protected member}}
-    a.foo(Static());
-  }
-  void D::test(A &a) {
-    a.foo(10); // expected-error {{'foo' is a protected member}}
-    a.foo(Static());
-  }
-}
-
-namespace test7 {
-  class Static {};
-  class A {
-    protected:
-    void foo(int); // expected-note 3 {{must name member using the type of the current context}}
-    void foo(long);
-    static void foo(Static);
-
-    static void test();
-  };
-  class B : public A {
-    static void test();
-  };
-  class C : protected A {
-    static void test();
-  };
-  class D : private B {
-    static void test();
-  };
-
-  void A::test() {
-    void (A::*x)(int) = &A::foo;
-    void (*sx)(Static) = &A::foo;
-  }
-  void B::test() {
-    void (A::*x)(int) = &A::foo; // expected-error {{'foo' is a protected member}}
-    void (*sx)(Static) = &A::foo;
-  }
-  void C::test() {
-    void (A::*x)(int) = &A::foo; // expected-error {{'foo' is a protected member}}
-    void (*sx)(Static) = &A::foo;
-  }
-  void D::test() {
-    void (A::*x)(int) = &A::foo; // expected-error {{'foo' is a protected member}}
-    void (*sx)(Static) = &A::foo;
-  }
-}
-
-namespace test8 {
-  class Static {};
-  class A {
-    protected:
-    void foo(int); // expected-note 3 {{must name member using the type of the current context}}
-    void foo(long);
-    static void foo(Static);
-
-    static void test();
-  };
-  class B : public A {
-    static void test();
-  };
-  class C : protected A {
-    static void test();
-  };
-  class D : private B {
-    static void test();
-  };
-  void call(void (A::*)(int));
-  void calls(void (*)(Static));
-
-  void A::test() {
-    call(&A::foo);
-    calls(&A::foo);
-  }
-  void B::test() {
-    call(&A::foo); // expected-error {{'foo' is a protected member}}
-    calls(&A::foo);
-  }
-  void C::test() {
-    call(&A::foo); // expected-error {{'foo' is a protected member}}
-    calls(&A::foo);
-  }
-  void D::test() {
-    call(&A::foo); // expected-error {{'foo' is a protected member}}
-    calls(&A::foo);
-  }
-}
-
-namespace test9 {
-  class A { // expected-note {{member is declared here}}
-  protected: int foo(); // expected-note 4 {{declared}} expected-note 3 {{can only access this member on an object of type}} expected-note 2 {{member is declared here}}
-  };
-
-  class B : public A { // expected-note {{member is declared here}}
-    friend class D;
-  };
-
-  class C : protected B { // expected-note {{declared}} \
-                          // expected-note 9 {{constrained}}
-  };
-
-  class D : public A {
-    static void test(A &a) {
-      a.foo(); // expected-error {{'foo' is a protected member}}
-      a.A::foo(); // expected-error {{'foo' is a protected member}}
-      a.B::foo(); // expected-error {{'foo' is a protected member}}
-      a.C::foo(); // expected-error {{'foo' is a protected member}}
-      a.D::foo(); // expected-error {{'foo' is a protected member}}
-    }
-
-    static void test(B &b) {
-      b.foo();
-      b.A::foo();
-      b.B::foo(); // accessible as named in A
-      b.C::foo(); // expected-error {{'foo' is a protected member}}
-    }
-
-    static void test(C &c) {
-      c.foo();    // expected-error {{'foo' is a protected member}} \
-                  // expected-error {{cannot cast}}
-      c.A::foo(); // expected-error {{'A' is a protected member}} \
-                  // expected-error {{cannot cast}}
-      c.B::foo(); // expected-error {{'B' is a protected member}} \
-                  // expected-error {{cannot cast}}
-      c.C::foo(); // expected-error {{'foo' is a protected member}} \
-                  // expected-error {{cannot cast}}
-    }
-
-    static void test(D &d) {
-      d.foo();
-      d.A::foo();
-      d.B::foo();
-      d.C::foo(); // expected-error {{'foo' is a protected member}}
-    }
-  };
-}
-
-namespace test10 {
-  template<typename T> class A {
-  protected:
-    int foo();
-    int foo() const;
-
-    ~A() { foo(); }
-  };
-
-  template class A<int>;
-}
-
-// rdar://problem/8360285: class.protected friendship
-namespace test11 {
-  class A {
-  protected:
-    int foo();
-  };
-
-  class B : public A {
-    friend class C;
-  };
-
-  class C {
-    void test() {
-      B b;
-      b.A::foo();
-    }
-  };
-}
-
-// This friendship is considered because a public member of A would be
-// a private member of C.
-namespace test12 {
-  class A { protected: int foo(); };
-  class B : public virtual A {};
-  class C : private B { friend void test(); };
-  class D : private C, public virtual A {};
-
-  void test() {
-    D d;
-    d.A::foo();
-  }
-}
-
-// This friendship is not considered because a public member of A is
-// inaccessible in C.
-namespace test13 {
-  class A { protected: int foo(); }; // expected-note {{declared protected here}}
-  class B : private virtual A {};
-  class C : private B { friend void test(); };
-  class D : public virtual A {};
-
-  void test() {
-    D d;
-    d.A::foo(); // expected-error {{protected member}}
-  }
-}
-
-// PR8058
-namespace test14 {
-  class A {
-  protected:
-    template <class T> void temp(T t); // expected-note {{must name member using the type of the current context}}
-
-    void nontemp(int); // expected-note {{must name member using the type of the current context}}
-
-    template <class T> void ovl_temp(T t); // expected-note {{must name member using the type of the current context}}
-    void ovl_temp(float);
-
-    void ovl_nontemp(int); // expected-note {{must name member using the type of the current context}}
-    void ovl_nontemp(float);
-
-    template <class T> void ovl_withtemp(T);
-    void ovl_withtemp(int); // expected-note {{must name member using the type of the current context}}
-  };
-
-  class B : public A {
-    void use() {
-      void (A::*ptr)(int);
-      ptr = &A::temp; // expected-error {{protected member}}
-      ptr = &A::nontemp; // expected-error {{protected member}}
-      ptr = &A::ovl_temp; // expected-error {{protected member}}
-      ptr = &A::ovl_nontemp; // expected-error {{protected member}}
-      ptr = &A::ovl_withtemp; // expected-error {{protected member}}
-    }
-  };
-}
-
-namespace test15 {
-  class A {
-  protected:
-    A(); // expected-note 2 {{protected constructor can only be used to construct a base class subobject}}
-    A(const A &); // expected-note {{protected constructor can only be used to construct a base class subobject}}
-    ~A(); // expected-note 3 {{protected destructor can only be used to destroy a base class subobject}}
-  };
-
-  class B : public A {
-    // The uses here are fine.
-    B() {}
-    B(int i) : A() {}
-    ~B() {}
-
-    // All these uses are bad.
-
-    void test0() {
-      A a; // expected-error {{protected constructor}} expected-error {{protected destructor}}
-    }
-
-    A *test1() {
-      return new A(); // expected-error {{protected constructor}}
-    }
-
-    void test2(A *a) {
-      delete a; // expected-error {{protected destructor}}
-    }
-
-    A test3(A *a) {
-      return *a; // expected-error {{protected constructor}}
-    }
-
-    void test4(A *a) {
-      a->~A(); // expected-error {{protected member}}
-    }
-  };
-}
-
-namespace test16 {
-  class A {
-  protected:
-    ~A();
-  };
-
-  class B : public virtual A {
-  public:
-    ~B() {}
-  };
-
-  class C : public B {
-    ~C() {}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,510 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
-
-// C++0x [class.access]p4:
-
-//   Access control is applied uniformly to all names, whether the
-//   names are referred to from declarations or expressions.  In the
-//   case of overloaded function names, access control is applied to
-//   the function selected by overload resolution.
-
-class Public {} PublicInst;
-class Protected {} ProtectedInst;
-class Private {} PrivateInst;
-
-namespace test0 {
-  class A {
-  public:
-    void foo(Public&);
-  protected:
-    void foo(Protected&); // expected-note 2 {{declared protected here}}
-  private:
-    void foo(Private&); // expected-note 2 {{declared private here}}
-  };
-
-  void test(A *op) {
-    op->foo(PublicInst);
-    op->foo(ProtectedInst); // expected-error {{'foo' is a protected member}}
-    op->foo(PrivateInst); // expected-error {{'foo' is a private member}}
-
-    void (A::*a)(Public&) = &A::foo;
-    void (A::*b)(Protected&) = &A::foo; // expected-error {{'foo' is a protected member}}
-    void (A::*c)(Private&) = &A::foo; // expected-error {{'foo' is a private member}}
-  }
-}
-
-// Member operators.
-namespace test1 {
-  class A {
-  public:
-    void operator+(Public&);
-    void operator[](Public&);
-    void operator()(Public&);
-    typedef void (*PublicSurrogate)(Public&);
-    operator PublicSurrogate() const;
-  protected:
-    void operator+(Protected&); // expected-note {{declared protected here}}
-    void operator[](Protected&); // expected-note {{declared protected here}}
-    void operator()(Protected&); // expected-note {{declared protected here}}
-    typedef void (*ProtectedSurrogate)(Protected&);
-    operator ProtectedSurrogate() const; // expected-note {{declared protected here}}
-  private:
-    void operator+(Private&); // expected-note {{declared private here}}
-    void operator[](Private&); // expected-note {{declared private here}}
-    void operator()(Private&); // expected-note {{declared private here}}
-    void operator-(); // expected-note {{declared private here}}
-    typedef void (*PrivateSurrogate)(Private&);
-    operator PrivateSurrogate() const; // expected-note {{declared private here}}
-  };
-  void operator+(const A &, Public&);
-  void operator+(const A &, Protected&);
-  void operator+(const A &, Private&);
-  void operator-(const A &);
-
-  void test(A &a, Public &pub, Protected &prot, Private &priv) {
-    a + pub;
-    a + prot; // expected-error {{'operator+' is a protected member}}
-    a + priv; // expected-error {{'operator+' is a private member}}
-    a[pub];
-    a[prot]; // expected-error {{'operator[]' is a protected member}}
-    a[priv]; // expected-error {{'operator[]' is a private member}}
-    a(pub);
-    a(prot); // expected-error {{'operator()' is a protected member}}
-    a(priv); // expected-error {{'operator()' is a private member}}
-    -a;       // expected-error {{'operator-' is a private member}}
-
-    const A &ca = a;
-    ca + pub;
-    ca + prot;
-    ca + priv;
-    -ca;
-    // These are all surrogate calls
-    ca(pub);
-    ca(prot); // expected-error {{'operator void (*)(class Protected &)' is a protected member}}
-    ca(priv); // expected-error {{'operator void (*)(class Private &)' is a private member}}
-  }
-}
-
-// Implicit constructor calls.
-namespace test2 {
-  class A {
-  private:
-    A(); // expected-note 3 {{declared private here}}
-
-    static A foo;
-  };
-
-  A a; // expected-error {{calling a private constructor}}
-  A A::foo; // okay
-  
-  class B : A { }; // expected-error {{base class 'test2::A' has private default constructor}}
-  B b; // expected-note{{implicit default constructor}}
-  
-  class C : virtual A { 
-  public:
-    C();
-  };
-
-  class D : C { }; // expected-error {{inherited virtual base class 'test2::A' has private default constructor}}
-  D d; // expected-note{{implicit default constructor}}
-}
-
-// Implicit destructor calls.
-namespace test3 {
-  class A {
-  private:
-    ~A(); // expected-note 2 {{declared private here}}
-    static A foo;
-  };
-
-  A a; // expected-error {{variable of type 'test3::A' has private destructor}}
-  A A::foo;
-
-  void foo(A param) { // okay
-    A local; // expected-error {{variable of type 'test3::A' has private destructor}}
-  }
-
-  template <unsigned N> class Base { ~Base(); }; // expected-note 14 {{declared private here}}
-  class Base2 : virtual Base<2> { ~Base2(); }; // expected-note 3 {{declared private here}} \
-                                               // expected-error {{base class 'Base<2>' has private destructor}}
-  class Base3 : virtual Base<3> { public: ~Base3(); }; // expected-error {{base class 'Base<3>' has private destructor}}
-
-  // These don't cause diagnostics because we don't need the destructor.
-  class Derived0 : Base<0> { ~Derived0(); };
-  class Derived1 : Base<1> { };
-
-  class Derived2 : // expected-error {{inherited virtual base class 'Base<2>' has private destructor}} \
-                   // expected-error {{inherited virtual base class 'Base<3>' has private destructor}}
-    Base<0>,  // expected-error {{base class 'Base<0>' has private destructor}}
-    virtual Base<1>, // expected-error {{base class 'Base<1>' has private destructor}}
-    Base2, // expected-error {{base class 'test3::Base2' has private destructor}}
-    virtual Base3
-  {
-    ~Derived2() {}
-  };
-
-  class Derived3 : // expected-error 2 {{inherited virtual base class 'Base<2>' has private destructor}} \
-                   // expected-error 2 {{inherited virtual base class 'Base<3>' has private destructor}} \
-    // expected-note 2{{implicit default constructor}}
-    Base<0>,  // expected-error 2 {{base class 'Base<0>' has private destructor}}
-    virtual Base<1>, // expected-error 2 {{base class 'Base<1>' has private destructor}}
-    Base2, // expected-error 2 {{base class 'test3::Base2' has private destructor}}
-    virtual Base3
-  {}; 
-  Derived3 d3; // expected-note {{implicit default constructor}}\
-               // expected-note{{implicit default destructor}}}
-}
-
-// Conversion functions.
-namespace test4 {
-  class Base {
-  private:
-    operator Private(); // expected-note 4 {{declared private here}}
-  public:
-    operator Public(); // expected-note 2{{member is declared here}}
-  };
-
-  class Derived1 : private Base { // expected-note 2 {{declared private here}} \
-                                  // expected-note {{constrained by private inheritance}}
-    Private test1() { return *this; } // expected-error {{'operator Private' is a private member}}
-    Public test2() { return *this; }
-  };
-  Private test1(Derived1 &d) { return d; } // expected-error {{'operator Private' is a private member}} \
-                                           // expected-error {{cannot cast 'test4::Derived1' to its private base class}}
-  Public test2(Derived1 &d) { return d; } // expected-error {{cannot cast 'test4::Derived1' to its private base class}} \
-                                          // expected-error {{'operator Public' is a private member}}
-
-
-  class Derived2 : public Base {
-    Private test1() { return *this; } // expected-error {{'operator Private' is a private member}}
-    Public test2() { return *this; }
-  };
-  Private test1(Derived2 &d) { return d; } // expected-error {{'operator Private' is a private member}}
-  Public test2(Derived2 &d) { return d; }
-
-  class Derived3 : private Base { // expected-note {{constrained by private inheritance here}} \
-                                  // expected-note {{declared private here}}
-  public:
-    operator Private();
-  };
-  Private test1(Derived3 &d) { return d; }
-  Public test2(Derived3 &d) { return d; } // expected-error {{'operator Public' is a private member of 'test4::Base'}} \
-                                          // expected-error {{cannot cast 'test4::Derived3' to its private base class}}
-
-  class Derived4 : public Base {
-  public:
-    operator Private();
-  };
-  Private test1(Derived4 &d) { return d; }
-  Public test2(Derived4 &d) { return d; }
-}
-
-// Implicit copy assignment operator uses.
-namespace test5 {
-  class A {
-    void operator=(const A &); // expected-note 2 {{implicitly declared private here}}
-  };
-
-  class Test1 { A a; }; // expected-error {{private member}}
-  void test1() {
-    Test1 a; 
-    a = Test1(); // expected-note{{implicit default copy}}
-  }
-
-  class Test2 : A {}; // expected-error {{private member}}
-  void test2() {
-    Test2 a;
-    a = Test2(); // expected-note{{implicit default copy}}
-  }
-}
-
-// Implicit copy constructor uses.
-namespace test6 {
-  class A {
-    public: A();
-    private: A(const A &); // expected-note 2 {{declared private here}}
-  };
-
-  class Test1 { A a; }; // expected-error {{field of type 'test6::A' has private copy constructor}}
-  void test1(const Test1 &t) {
-    Test1 a = t; // expected-note{{implicit default copy}}
-  }
-
-  class Test2 : A {}; // expected-error {{base class 'test6::A' has private copy constructor}}
-  void test2(const Test2 &t) {
-    Test2 a = t; // expected-note{{implicit default copy}}
-  }
-}
-
-// Redeclaration lookups are not accesses.
-namespace test7 {
-  class A {
-    int private_member;
-  };
-  class B : A {
-    int foo(int private_member) {
-      return 0;
-    }
-  };
-}
-
-// Ignored operator new and delete overloads are not 
-namespace test8 {
-  typedef __typeof__(sizeof(int)) size_t;
-
-  class A {
-    void *operator new(size_t s);
-    void operator delete(void *p);
-  public:
-    void *operator new(size_t s, int n);
-    void operator delete(void *p, int n);
-  };
-
-  void test() {
-    new (2) A();
-  }
-}
-
-// Don't silently upgrade forbidden-access paths to private.
-namespace test9 {
-  class A {
-  public: static int x; // expected-note {{member is declared here}}
-  };
-  class B : private A { // expected-note {{constrained by private inheritance here}}
-  };
-  class C : public B {
-    static int getX() { return x; } // expected-error {{'x' is a private member of 'test9::A'}}
-  };
-}
-
-namespace test10 {
-  class A {
-    enum {
-      value = 10 // expected-note {{declared private here}}
-    };
-    friend class C;
-  };
-
-  class B {
-    enum {
-      value = A::value // expected-error {{'value' is a private member of 'test10::A'}}
-    };
-  };
-
-  class C {
-    enum {
-      value = A::value
-    };
-  };
-}
-
-namespace test11 {
-  class A {
-    protected: virtual ~A();
-  };
-
-  class B : public A {
-    ~B();
-  };
-
-  B::~B() {};
-}
-
-namespace test12 {
-  class A {
-    int x;
-
-    void foo() {
-      class Local {
-        int foo(A *a) {
-          return a->x;
-        }
-      };
-    }
-  };
-}
-
-namespace test13 {
-  struct A {
-    int x;
-    unsigned foo() const;
-  };
-
-  struct B : protected A {
-    using A::foo;
-    using A::x;
-  };
-
-  void test() {
-    A *d;
-    d->foo();
-    (void) d->x;
-  }
-}
-
-// Destructors for temporaries.
-namespace test14 {
-  class A {
-  private: ~A(); // expected-note {{declared private here}}
-  };
-  A foo();
-
-  void test() {
-    foo(); // expected-error {{temporary of type 'test14::A' has private destructor}}
-  }
-
-  class X {
-    ~X(); // expected-note {{declared private here}}
-  };
-  
-  struct Y1 {
-    operator X();
-  };
-  
-  void g() {
-    const X &xr = Y1(); // expected-error{{temporary of type 'test14::X' has private destructor}}
-  }
-}
-
-// PR 7024
-namespace test15 {
-  template <class T> class A {
-  private:
-    int private_foo; // expected-note {{declared private here}}
-    static int private_sfoo; // expected-note {{declared private here}}
-  protected:
-    int protected_foo; // expected-note 3 {{declared protected here}} // expected-note {{can only access this member on an object of type 'test15::B<int>'}}
-    static int protected_sfoo; // expected-note 3 {{declared protected here}}
-
-    int test1(A<int> &a) {
-      return a.private_foo; // expected-error {{private member}}
-    }
-
-    int test2(A<int> &a) {
-      return a.private_sfoo; // expected-error {{private member}}
-    }
-
-    int test3(A<int> &a) {
-      return a.protected_foo; // expected-error {{protected member}}
-    }
-
-    int test4(A<int> &a) {
-      return a.protected_sfoo; // expected-error {{protected member}}
-    }
-  };
-
-  template class A<int>;
-  template class A<long>; // expected-note 4 {{in instantiation}} 
-
-  template <class T> class B : public A<T> {
-    // TODO: These first two accesses can be detected as ill-formed at
-    // definition time because they're member accesses and A<int> can't
-    // be a subclass of B<T> for any T.
-
-    int test1(A<int> &a) {
-      return a.protected_foo; // expected-error 2 {{protected member}}
-    }
-
-    int test2(A<int> &a) {
-      return a.protected_sfoo; // expected-error {{protected member}}
-    }
-
-    int test3(B<int> &b) {
-      return b.protected_foo; // expected-error {{protected member}}
-    }
-
-    int test4(B<int> &b) {
-      return b.protected_sfoo; // expected-error {{protected member}}
-    }
-  };
-
-  template class B<int>;  // expected-note {{in instantiation}}
-  template class B<long>; // expected-note 4 {{in instantiation}}
-}
-
-// PR7281
-namespace test16 {
-  class A { ~A(); }; // expected-note 2{{declared private here}}
-  void b() { throw A(); } // expected-error{{temporary of type 'test16::A' has private destructor}} \
-  // expected-error{{exception object of type 'test16::A' has private destructor}}
-}
-
-// rdar://problem/8146294
-namespace test17 {
-  class A {
-    template <typename T> class Inner { }; // expected-note {{declared private here}}
-  };
-
-  A::Inner<int> s; // expected-error {{'Inner' is a private member of 'test17::A'}}
-}
-
-namespace test18 {
-  template <class T> class A {};
-  class B : A<int> {
-    A<int> member;
-  };
-
-  // FIXME: this access to A should be forbidden (because C++ is dumb),
-  // but LookupResult can't express the necessary information to do
-  // the check, so we aggressively suppress access control.
-  class C : B {
-    A<int> member;
-  };
-}
-
-// PR8325
-namespace test19 {
-  class A { ~A(); };
-  // The destructor is not implicitly referenced here.  Contrast to test16, 
-  // testing PR7281, earlier in this file.
-  void b(A* x) { throw x; }
-}
-
-// PR7930
-namespace test20 {
-  class Foo {
-    Foo(); // expected-note {{implicitly declared private here}}
-  };
-  Foo::Foo() {}
-
-  void test() {
-    Foo a; // expected-error {{calling a private constructor}}
-  }
-}
-
-namespace test21 {
-  template <class T> class A {
-    void foo();
-    void bar();
-    class Inner; // expected-note {{implicitly declared private here}}
-  public:
-    void baz();
-  };
-  template <class T> class A<T>::Inner {};
-  class B {
-    template <class T> class A<T>::Inner; // expected-error{{non-friend class member 'Inner' cannot have a qualified name}}
-  };
-
-  void test() {
-    A<int>::Inner i; // expected-error {{'Inner' is a private member}}
-  }
-}
-
-namespace rdar8876150 {
-  struct A { operator bool(); };
-  struct B : private A { using A::operator bool; };
-
-  bool f() {
-    B b;
-    return !b;
-  }
-}
-
-namespace test23 {
-  template <typename T> class A {
-    A();
-    static A instance;
-  };
-
-  template <typename T> A<T> A<T>::instance;
-  template class A<int>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.access/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.access/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.access/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,192 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++0x [class.access]p6:
-//   All access controls in [class.access] affect the ability to
-//   access a class member name from a particular scope. For purposes
-//   of access control, the base-specifiers of a class and the
-//   definitions of class members that appear outside of the class
-//   definition are considered to be within the scope of that
-//   class. In particular, access controls apply as usual to member
-//   names accessed as part of a function return type, even though it
-//   is not possible to determine the access privileges of that use
-//   without first parsing the rest of the function
-//   declarator. Similarly, access control for implicit calls to the
-//   constructors, the conversion functions, or the destructor called
-//   to create and destroy a static data member is performed as if
-//   these calls appeared in the scope of the member's class.
-
-struct Public {}; struct Protected {}; struct Private {};
-
-namespace test0 {
-  class A {
-    typedef int type; // expected-note {{declared private here}}
-    type foo();
-  };
-
-  A::type foo() { } // expected-error {{'type' is a private member}}
-  A::type A::foo() { }
-}
-
-// conversion decls
-namespace test1 {
-  class A {
-  public:
-    A();
-    operator Public ();
-    A(Public);
-  protected:
-    operator Protected (); // expected-note {{declared protected here}}
-    A(Protected); // expected-note {{declared protected here}}
-  private:
-    operator Private (); // expected-note {{declared private here}}
-    A(Private); // expected-note {{declared private here}}
-  };
-
-  void test() {
-    A a;
-    Public pub = a;
-    Protected prot = a; // expected-error {{'operator Protected' is a protected member}}
-    Private priv = a; // expected-error {{'operator Private' is a private member}}
-    A apub = pub;
-    A aprot = prot; // expected-error {{protected constructor}}
-    A apriv = priv; // expected-error {{private constructor}}
-  }
-}
-
-// PR6967
-namespace test2 {
-  class A {
-  public:
-    template <class T> static void set(T &t, typename T::type v) {
-      t.value = v;
-    }
-    template <class T> static typename T::type get(const T &t) {
-      return t.value;
-    }
-  };
-
-  class B {
-    friend class A;
-
-  private:
-    typedef int type;
-    type value;
-  };
-
-  int test() {
-    B b;
-    A::set(b, 0);
-    return A::get(b);
-  }
-}
-
-namespace test3 {
-  class Green {}; class Blue {};
-
-  // We have to wrap this in a class because a partial specialization
-  // isn't actually in the context of the template.
-  struct Outer {
-    template <class T, class Nat> class A {
-    };
-  };
-
-  template <class T> class Outer::A<T, typename T::nature> {
-  public:
-    static void foo();
-  };
-
-  class B {
-  private: typedef Green nature;
-    friend class Outer;
-  };
-
-  void test() {
-    Outer::A<B, Green>::foo();
-    Outer::A<B, Blue>::foo(); // expected-error {{no member named 'foo'}}
-  }
-}
-
-namespace test4 {
-  template <class T> class A {
-  private: typedef int type;
-    template <class U> friend void foo(U &, typename U::type);
-  };
-
-  template <class U> void foo(U &, typename U::type) {}
-  
-  void test() {
-    A<int> a;
-    foo(a, 0);
-  }
-}
-
-// PR7644
-namespace test5 {
-  class A {
-    enum Enum { E0, E1, E2 }; // expected-note 4 {{declared private here}}
-    template <Enum> void foo();
-    template <Enum> class bar;
-  };
-
-  template <A::Enum en> void A::foo() {}
-  template <A::Enum en> class A::bar {};
-
-  template <A::Enum en> void foo() {} // expected-error {{'Enum' is a private member of 'test5::A'}}
-  template <A::Enum en> class bar {}; // expected-error {{'Enum' is a private member of 'test5::A'}}
-
-  class B {
-    template <A::Enum en> void foo() {} // expected-error {{'Enum' is a private member of 'test5::A'}}
-    template <A::Enum en> class bar {}; // expected-error {{'Enum' is a private member of 'test5::A'}}
-  };
-}
-
-namespace test6 {
-  class A {
-  public: class public_inner {};
-  protected: class protected_inner {};
-  private: class private_inner {}; // expected-note {{declared private here}}
-  };
-
-  class B : A {
-    public_inner a;
-    protected_inner b;
-    private_inner c; // expected-error {{'private_inner' is a private member of 'test6::A'}}
-  };
-}
-
-// PR9229
-namespace test7 {
-  void foo(int arg[1]);
-  class A {
-    void check();
-  };
-  class B {
-    friend class A;
-    A ins;
-  };
-  void A::check() {
-    void foo(int arg[__builtin_offsetof(B, ins)]);
-  }
-}
-
-// rdar://problem/10155256
-namespace test8 {
-  class A {
-    typedef void* (A::*UnspecifiedBoolType)() const;
-    operator UnspecifiedBoolType() const; // expected-note {{implicitly declared private here}}
-  };
-
-  void test(A &a) {
-    if (a) return; // expected-error {{'operator void *(class test8::A::*)(void) const' is a private member of 'test8::A'}}
-  }
-}
-
-namespace test9 {
-  class A {
-    operator char*() const; // expected-note {{implicitly declared private here}}
-  };
-
-  void test(A &a) {
-    delete a; // expected-error {{'operator char *' is a private member of 'test9::A'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p16.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p16.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p16.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-struct A {
-  virtual void a(); // expected-note{{overridden virtual function is here}}
-  virtual void b() = delete; // expected-note{{overridden virtual function is here}}
-};
-
-struct B: A {
-  virtual void a() = delete; // expected-error{{deleted function 'a' cannot override a non-deleted function}}
-  virtual void b(); // expected-error{{non-deleted function 'b' cannot override a deleted function}}
-};
-
-struct C: A {
-  virtual void a();
-  virtual void b() = delete;
-};
-
-struct E;
-struct F;
-struct G;
-struct H;
-struct D {
-  virtual E &operator=(const E &); // expected-note {{here}}
-  virtual F &operator=(const F &);
-  virtual G &operator=(G&&);
-  virtual H &operator=(H&&); // expected-note {{here}}
-  friend struct F;
-
-private:
-  D &operator=(const D&) = default;
-  D &operator=(D&&) = default;
-  virtual ~D(); // expected-note 2{{here}}
-};
-struct E : D {}; // expected-error {{deleted function '~E' cannot override a non-deleted function}} \
-                 // expected-error {{deleted function 'operator=' cannot override a non-deleted function}}
-struct F : D {};
-// No move ctor here, because it would be deleted.
-struct G : D {}; // expected-error {{deleted function '~G' cannot override a non-deleted function}}
-struct H : D {
-  H &operator=(H&&) = default; // expected-error {{deleted function 'operator=' cannot override a non-deleted function}}
-  ~H();
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace PR6631 {
-  struct A { 
-    virtual void f() = 0;
-  };
-
-  struct B : virtual A { };
-
-  struct C : virtual A { 
-    virtual void f();
-  };
-
-  struct D : public B, public C { 
-    virtual void f();
-  };
-
-  void f() {
-    (void)new D; // okay
-  }
-}
-
-// Check cases where we have a virtual function that is pure in one
-// subobject but not pure in another subobject.
-namespace PartlyPure {
-  struct A { 
-    virtual void f() = 0; // expected-note{{unimplemented pure virtual method}}
-  };
-
-  struct B : A {
-    virtual void f();
-  };
-
-  struct C : virtual A { };
-
-  struct D : B, C { };
-
-  void f() {
-    (void) new D; // expected-error{{abstract class}}
-  }
-}
-
-namespace NonPureAlongOnePath {
-  struct A { 
-    virtual void f() = 0;
-  };
-
-  struct B : virtual A {
-    virtual void f();
-  };
-
-  struct C : virtual A { };
-
-  struct D : B, C { };
-
-  void f() {
-    (void) new D; // okay
-  }  
-}
-
-namespace NonPureAlongOnePath2 {
-  struct Aprime { 
-    virtual void f() = 0;
-  };
-
-  struct A : Aprime {
-  };
-
-  struct B : virtual A {
-    virtual void f();
-  };
-
-  struct C : virtual A { };
-
-  struct D : B, C { };
-
-  void f() {
-    (void) new D; // okay
-  }  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.abstract/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A {
-  virtual void f() = 0; // expected-note{{unimplemented pure virtual method}}
-};
-
-struct B : A {
-  virtual void f();
-};
-
-struct C : B {
-  virtual void f() = 0; // expected-note 2{{unimplemented pure virtual method}}
-};
-
-struct D : C {
-};
-
-void test() {
-  (void)new A; // expected-error{{abstract class}}
-  (void)new B;
-  (void)new C; // expected-error{{abstract class}}
-  (void)new D; // expected-error{{abstract class}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class V { 
-public: 
-  int f(); 
-  int x; 
-};
-
-class W { 
-public: 
-  int g(); // expected-note{{member found by ambiguous name lookup}}
-  int y; // expected-note{{member found by ambiguous name lookup}}
-};
-
-class B : public virtual V, public W
-{
-public:
-  int f(); 
-  int x;
-  int g();  // expected-note{{member found by ambiguous name lookup}}
-  int y; // expected-note{{member found by ambiguous name lookup}}
-};
-
-class C : public virtual V, public W { };
-
-class D : public B, public C { void glorp(); };
-
-void D::glorp() {
-  x++;
-  f();
-  y++; // expected-error{{member 'y' found in multiple base classes of different types}}
-  g(); // expected-error{{member 'g' found in multiple base classes of different types}}
-}
-
-// PR6462
-struct BaseIO { BaseIO* rdbuf() { return 0; } };
-struct Pcommon : virtual BaseIO { int rdbuf() { return 0; } };
-struct P : virtual BaseIO, Pcommon {};
-
-void f() { P p; p.rdbuf(); }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// FIXME: Access control checks
-
-namespace PR5820 {
-  // also <rdar://problem/7535045>
-  struct Base {
-    void Foo();
-    int Member;
-  };
-
-  struct D1 : public Base {};
-  struct D2 : public Base {};
-
-  struct Derived : public D1, public D2 {
-    void Inner();
-  };
-
-  void Test() {
-    Derived d;
-    d.D1::Foo();
-    d.D1::Member = 17;
-  }
-
-  void Derived::Inner() {
-    D1::Foo();
-    D1::Member = 42;
-    this->D1::Foo();
-    this->D1::Member = 42;
-  }
-}
-
-template<typename T>
-struct BaseT {
-  void Foo(); // expected-note{{found by ambiguous name lookup}}
-  int Member;
-};
-
-template<typename T> struct Derived1T : BaseT<T> { };
-template<typename T> struct Derived2T : BaseT<T> { };
-
-template<typename T>
-struct DerivedT : public Derived1T<T>, public Derived2T<T> {
-  void Inner();
-};
-
-template<typename T>
-void DerivedT<T>::Inner() {
-  Derived1T<T>::Foo();
-  Derived2T<T>::Member = 42;
-  this->Derived1T<T>::Foo();
-  this->Derived2T<T>::Member = 42;
-  this->Foo(); // expected-error{{non-static member 'Foo' found in multiple base-class subobjects of type 'BaseT<int>'}}
-}
-
-template<typename T>
-void Test(DerivedT<T> d) {
-  d.template Derived1T<T>::Foo();
-  d.template Derived2T<T>::Member = 17;
-  d.Inner(); // expected-note{{in instantiation}}
-}
-
-template void Test(DerivedT<int>);

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.member.lookup/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace rdar8436162 {
-  class ClsA {
-  public:
-    static void f();
-    void g();
-  };
-
-  class ClsB : virtual private ClsA {
-  public:
-    using ClsA::f;
-    using ClsA::g; // expected-note{{member found by ambiguous name lookup}}
-  };
-
-  class ClsF : virtual private ClsA {
-  public:
-    using ClsA::f;
-    using ClsA::g; // expected-note{{member found by ambiguous name lookup}}
-  };
-
-  class ClsE : public ClsB, public ClsF {
-    void test() { 
-      f();
-      g(); // expected-error{{member 'g' found in multiple base classes of different types}}
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p12.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p12.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p12.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s | FileCheck %s
-
-// CHECK: test12_A::foo()
-struct test12_A {
-  virtual void foo();
-  
-  void bar() {
-    test12_A::foo();
-  }
-};
-
-// CHECK: xp->test24_B::wibble()
-struct test24_B {
-  virtual void wibble();
-};
-
-void foo(test24_B *xp) {
-  xp->test24_B::wibble();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A {
-  virtual void f() = 0; // expected-note 2{{overridden virtual function}}
-};
-
-struct Aprime : virtual A {
-  virtual void f();
-};
-
-struct B : Aprime {
-  virtual void f(); // expected-note 3{{final overrider of 'A::f'}}
-};
-
-struct C : virtual A {
-  virtual void f(); // expected-note{{final overrider of 'A::f'}}
-};
-
-struct D : B, C { }; // expected-error{{virtual function 'A::f' has more than one final overrider in 'D'}}
-
-struct B2 : B { };
-
-struct E : B, B2 { }; //expected-error{{virtual function 'A::f' has more than one final overrider in 'E'}}
-
-struct F : B, B2 {
-  virtual void f(); // okay
-};
-
-struct G : F { }; // okay
-
-struct H : G, A { }; // okay
-
-namespace MultipleSubobjects {
-  struct A { virtual void f(); };
-  struct B : A { virtual void f(); };
-  struct C : A { virtual void f(); };
-  struct D : B, C { }; // okay
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/class.virtual/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,132 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s 
-
-namespace Test1 {
-
-struct B {
-  virtual void f(int);
-};
-
-struct D : B {
-  virtual void f(long) override; // expected-error {{'f' marked 'override' but does not override any member functions}}
-  void f(int) override;
-};
-}
-
-namespace Test2 {
-
-struct A {
-  virtual void f(int, char, int);
-};
-
-template<typename T>
-struct B : A {
-  // FIXME: Diagnose this.
-  virtual void f(T) override;
-};
-
-template<typename T>
-struct C : A {
-  virtual void f(int) override; // expected-error {{does not override}}
-};
-
-}
-
-namespace Test3 {
-
-struct A {
-  virtual void f(int, char, int);
-};
-
-template<typename... Args>
-struct B : A { 
-  virtual void f(Args...) override; // expected-error {{'f' marked 'override' but does not override any member functions}}
-};
-
-template struct B<int, char, int>;
-template struct B<int>; // expected-note {{in instantiation of template class 'Test3::B<int>' requested here}}
-
-}
-
-namespace Test4 {
-struct B {
-  virtual void f() const final; // expected-note {{overridden virtual function is here}}
-};
-
-struct D : B {
-  void f() const; // expected-error {{declaration of 'f' overrides a 'final' function}}
-};
-
-}
-
-namespace PR13499 {
-  struct X {
-    virtual void f();
-    virtual void h();
-  };
-  template<typename T> struct A : X {
-    void f() override;
-    void h() final;
-  };
-  template<typename T> struct B : X {
-    void g() override; // expected-error {{only virtual member functions can be marked 'override'}}
-    void i() final; // expected-error {{only virtual member functions can be marked 'final'}}
-  };
-  B<int> b; // no-note
-  template<typename T> struct C : T {
-    void g() override;
-    void i() final;
-  };
-  template<typename T> struct D : X {
-    virtual void g() override; // expected-error {{does not override}}
-    virtual void i() final;
-  };
-  template<typename...T> struct E : X {
-    void f(T...) override;
-    void g(T...) override; // expected-error {{only virtual member functions can be marked 'override'}}
-    void h(T...) final;
-    void i(T...) final; // expected-error {{only virtual member functions can be marked 'final'}}
-  };
-  // FIXME: Diagnose these in the template definition, not in the instantiation.
-  E<> e; // expected-note {{in instantiation of}}
-
-  template<typename T> struct Y : T {
-    void f() override;
-    void h() final;
-  };
-  template<typename T> struct Z : T {
-    void g() override; // expected-error {{only virtual member functions can be marked 'override'}}
-    void i() final; // expected-error {{only virtual member functions can be marked 'final'}}
-  };
-  Y<X> y;
-  Z<X> z; // expected-note {{in instantiation of}}
-}
-
-namespace MemberOfUnknownSpecialization {
-  template<typename T> struct A {
-    struct B {};
-    struct C : B {
-      void f() override;
-    };
-  };
-
-  template<> struct A<int>::B {
-    virtual void f();
-  };
-  // ok
-  A<int>::C c1;
-
-  template<> struct A<char>::B {
-    void f();
-  };
-  // expected-error at -13 {{only virtual member functions can be marked 'override'}}
-  // expected-note at +1 {{in instantiation of}}
-  A<char>::C c2;
-
-  template<> struct A<double>::B {
-    virtual void f() final;
-  };
-  // expected-error at -20 {{declaration of 'f' overrides a 'final' function}}
-  // expected-note at -3 {{here}}
-  // expected-note at +1 {{in instantiation of}}
-  A<double>::C c3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -std=c++11
-
-// base-clause:
-//         : base-specifier-list
-// base-specifier-list:
-//         base-specifier ...[opt]
-//         base-specifier-list , base-specifier ...[opt]
-// base-specifier:
-//         attribute-specifier-seq[opt] base-type-specifier
-//         attribute-specifier-seq[opt] virtual access-specifier[opt] base-type-specifier
-//         attribute-specifier-seq[opt] access-specifier virtual[opt] base-type-specifier
-// class-or-decltype:
-//         nested-name-specifier[opt] class-name
-//         decltype-specifier
-// base-type-specifier:
-//         class-or-decltype
-// access-specifier:
-//         private
-//         protected
-//         public
-
-namespace PR11216 {
-  struct Base { };
-  struct Derived : decltype(Base()) { };
-
-  int func();
-  struct Derived2 : decltype(func()) { }; // expected-error {{base specifier must name a class}}
-
-  template<typename T>
-  struct Derived3 : decltype(T().foo()) { };
-  struct Foo { Base foo(); };
-  Derived3<Foo> d;
-
-  struct Derived4 : :: decltype(Base()) { }; // expected-error {{unexpected namespace scope prior to decltype}}
-
-  struct Derived5 : PR11216:: decltype(Base()) { }; // expected-error {{unexpected namespace scope prior to decltype}}
-
-  template<typename T>
-  struct Derived6 : typename T::foo { }; // expected-error {{'typename' is redundant; base classes are implicitly types}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/class.derived/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/class.derived/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/class.derived/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-// "During the lookup for a base class name, non-type names are ignored"
-namespace PR5840 {
-  struct Base {};
-  int Base = 10;
-  struct Derived : Base {};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.mem/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.mem/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.mem/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct Base {
-  int data;
-  int method();
-};
-int (Base::*data_ptr) = &Base::data;
-int (Base::*method_ptr)() = &Base::method;
-
-namespace test0 {
-  struct Derived : Base {};
-  void test() {
-    int (Derived::*d) = data_ptr;
-    int (Derived::*m)() = method_ptr;
-  }
-}
-
-// Can't be inaccessible.
-namespace test1 {
-  struct Derived : private Base {}; // expected-note 2 {{declared private here}}
-  void test() {
-    int (Derived::*d) = data_ptr; // expected-error {{cannot cast private base class 'Base' to 'test1::Derived'}}
-    int (Derived::*m)() = method_ptr; // expected-error {{cannot cast private base class 'Base' to 'test1::Derived'}}
-  }
-};
-
-// Can't be ambiguous.
-namespace test2 {
-  struct A : Base {};
-  struct B : Base {};
-  struct Derived : A, B {};
-  void test() {
-    int (Derived::*d) = data_ptr; // expected-error {{ambiguous conversion from pointer to member of base class 'Base' to pointer to member of derived class 'test2::Derived':}}
-    int (Derived::*m)() = method_ptr; // expected-error {{ambiguous conversion from pointer to member of base class 'Base' to pointer to member of derived class 'test2::Derived':}}
-  }
-}
-
-// Can't be virtual.
-namespace test3 {
-  struct Derived : virtual Base {};
-  void test() {
-    int (Derived::*d) = data_ptr;  // expected-error {{conversion from pointer to member of class 'Base' to pointer to member of class 'test3::Derived' via virtual base 'Base' is not allowed}}
-    int (Derived::*m)() = method_ptr; // expected-error {{conversion from pointer to member of class 'Base' to pointer to member of class 'test3::Derived' via virtual base 'Base' is not allowed}}
-  }
-}
-
-// Can't be virtual even if there's a non-virtual path.
-namespace test4 {
-  struct A : Base {};
-  struct Derived : Base, virtual A {};
-  void test() {
-    int (Derived::*d) = data_ptr; // expected-error {{ambiguous conversion from pointer to member of base class 'Base' to pointer to member of derived class 'test4::Derived':}}
-    int (Derived::*m)() = method_ptr; // expected-error {{ambiguous conversion from pointer to member of base class 'Base' to pointer to member of derived class 'test4::Derived':}}
-  }
-}
-
-// PR6254: don't get thrown off by a virtual base.
-namespace test5 {
-  struct A {};
-  struct Derived : Base, virtual A {};
-  void test() {
-    int (Derived::*d) = data_ptr;
-    int (Derived::*m)() = method_ptr;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.prom/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.prom/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.prom/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++0x -triple x86_64-pc-linux-gnu -ffreestanding %s
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++0x -triple x86_64-pc-linux-gnu -ffreestanding -fshort-wchar %s
-// expected-no-diagnostics
-
-#include <stdint.h>
-
-// In theory, the promoted types vary by platform; however, in reality they
-// are quite consistent across all platforms where clang runs.
-
-extern int promoted_wchar;
-extern decltype(+L'a') promoted_wchar;
-
-extern int promoted_char16;
-extern decltype(+u'a') promoted_char16;
-
-extern unsigned promoted_char32;
-extern decltype(+U'a') promoted_char32;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.prom/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.prom/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.prom/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++0x %s
-// expected-no-diagnostics
-
-enum X : short { A, B };
-extern decltype(+A) x;
-extern int x;
-
-enum Y : long { C, D };
-extern decltype(+C) y;
-extern long y;
-
-// An enum with a fixed underlying type has an integral promotion to that type,
-// and to its promoted type.
-enum B : bool { false_, true_ };
-template<bool> struct T {};
-T<false_> f;
-T<true_> t;
-// FIXME: DR1407 will make this ill-formed
-T<+true_> q; // desired-error {{conversion from 'int' to 'bool'}}
-
-enum B2 : bool {
-  a = false,
-  b = true,
-  c = false_,
-  d = true_,
-  // FIXME: DR1407 will make this ill-formed
-  e = +false_ // desired-error {{conversion from 'int' to 'bool'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.ptr/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.ptr/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.ptr/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace pr7801 {
-  extern void* x[];
-  void* dummy[] = { &x };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.qual/pr6089.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.qual/pr6089.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/conv/conv.qual/pr6089.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-bool is_char_ptr( const char* );
-
-template< class T >
-        long is_char_ptr( T /* r */ );
-
-// Note: the const here does not lead to a qualification conversion
-template< class T >
-        void    make_range( T* const r, bool );
-
-template< class T >
-        void make_range( T& r, long );
-
-void first_finder( const char*& Search )
-{
-        make_range( Search, is_char_ptr(Search) );
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/namespace.memdef/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/namespace.memdef/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/namespace.memdef/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,194 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-
-// C++'0x [namespace.memdef] p3:
-//   Every name first declared in a namespace is a member of that namespace. If
-//   a friend declaration in a non-local class first declares a class or
-//   function the friend class or function is a member of the innermost
-//   enclosing namespace.
-
-namespace N {
-  struct S0 {
-    friend struct F0;
-    friend void f0(int);
-    struct F0 member_func();
-  };
-  struct F0 { };
-  F0 f0() { return S0().member_func(); }
-}
-N::F0 f0_var = N::f0();
-
-// Ensure we can handle attaching friend declarations to an enclosing namespace
-// with multiple contexts.
-namespace N { struct S1 { struct IS1; }; }
-namespace N {
-  struct S1::IS1 {
-    friend struct F1;
-    friend void f1(int);
-    struct F1 member_func();
-  };
-  struct F1 { };
-  F1 f1() { return S1::IS1().member_func(); }
-}
-N::F1 f1_var = N::f1();
-
-//   The name of the friend is not found by unqualified lookup (3.4.1) or by
-//   qualified lookup (3.4.3) until a matching declaration is provided in that
-//   namespace scope (either before or after the class definition granting
-//   friendship). If a friend function is called, its name may be found by the
-//   name lookup that considers functions from namespaces and classes
-//   associated with the types of the function arguments (3.4.2). If the name
-//   in a friend declaration is neither qualified nor a template-id and the
-//   declaration is a function or an elaborated-type-specifier, the lookup to
-//   determine whether the entity has been previously declared shall not
-//   consider any scopes outside the innermost enclosing namespace.
-
-template<typename T> struct X0 { };
-struct X1 { };
-
-struct Y {
-  template<typename T> union X0;
-  template<typename T> friend union X0;
-  
-  union X1;
-  friend union X1;
-};
-
-namespace N {
-  namespace M {
-    template<typename T> class X;
-  }
-}
-
-namespace N3 {
-  class Y {
-    template<typename T> friend class N::M::X;
-  };
-}
-
-// FIXME: Woefully inadequate for testing
-
-// Friends declared as template-ids aren't subject to the restriction
-// on innermost namespaces.
-// rdar://problem/8552377
-namespace test5 {
-  template <class T> void f(T);  
-  namespace ns {
-    class A {
-      friend void f<int>(int);
-      static void foo(); // expected-note 2 {{declared private here}}
-    };
-
-    // Note that this happens without instantiation.
-    template <class T> void f(T) {
-      A::foo(); // expected-error {{'foo' is a private member of 'test5::ns::A'}}
-    }
-  }
-
-  template <class T> void f(T) {
-    ns::A::foo(); // expected-error {{'foo' is a private member of 'test5::ns::A'}}
-  }
-
-  template void f<int>(int);
-  template void f<long>(long); //expected-note {{instantiation}}
-}
-
-// rdar://13393749
-namespace test6 {
-  class A;
-  namespace ns {
-    class B {
-      static void foo(); // expected-note {{implicitly declared private here}}
-      friend union A;
-    };
-
-    union A {
-      void test() {
-        B::foo();
-      }
-    };
-  }
-
-  class A {
-    void test() {
-      ns::B::foo(); // expected-error {{'foo' is a private member of 'test6::ns::B'}}
-    }
-  };
-}
-
-// We seem to be following a correct interpretation with these, but
-// the standard could probably be a bit clearer.
-namespace test7a {
-  namespace ns {
-    class A;
-  }
-
-  using namespace ns;
-  class B {
-    static void foo();
-    friend class A;
-  };
-
-  class ns::A {
-    void test() {
-      B::foo();
-    }
-  };
-}
-namespace test7b {
-  namespace ns {
-    class A;
-  }
-
-  using ns::A;
-  class B {
-    static void foo();
-    friend class A;
-  };
-
-  class ns::A {
-    void test() {
-      B::foo();
-    }
-  };
-}
-namespace test7c {
-  namespace ns1 {
-    class A;
-  }
-
-  namespace ns2 {
-    // ns1::A appears as if declared in test7c according to [namespace.udir]p2.
-    // I think that means we aren't supposed to find it.
-    using namespace ns1;
-    class B {
-      static void foo(); // expected-note {{implicitly declared private here}}
-      friend class A;
-    };
-  }
-
-  class ns1::A {
-    void test() {
-      ns2::B::foo(); // expected-error {{'foo' is a private member of 'test7c::ns2::B'}}
-    }
-  };
-}
-namespace test7d {
-  namespace ns1 {
-    class A;
-  }
-
-  namespace ns2 {
-    // Honor the lexical context of a using-declaration, though.
-    using ns1::A;
-    class B {
-      static void foo();
-      friend class A;
-    };
-  }
-
-  class ns1::A {
-    void test() {
-      ns2::B::foo();
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/namespace.unnamed/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/namespace.unnamed/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/namespace.unnamed/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-
-// This lame little test was ripped straight from the standard.
-namespace {
-  int i; // expected-note {{candidate}}
-}
-void test0() { i++; }
-
-namespace A {
-  namespace {
-    int i; // expected-note {{candidate}}
-    int j;
-  }
-  void test1() { i++; }
-}
-
-using namespace A;
-
-void test2() {
-  i++; // expected-error {{reference to 'i' is ambiguous}}
-  A::i++;
-  j++;
-}
-
-
-// Test that all anonymous namespaces in a translation unit are
-// considered the same context.
-namespace {
-  class Test3 {}; // expected-note {{previous definition}}
-}
-namespace {
-  class Test3 {}; // expected-error {{redefinition of 'Test3'}}
-}
-
-namespace test4 {
-  namespace {
-    class Test4 {}; // expected-note {{previous definition}}
-  }
-  namespace {
-    class Test4 {}; // expected-error {{redefinition of 'Test4'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 -pedantic %s
-
-// Intentionally compiled as C++03 to test the extension warning.
-
-namespace a {} // original
-namespace a {} // ext
-inline namespace b {} // inline original expected-warning {{inline namespaces are}}
-inline namespace b {} // inline ext expected-warning {{inline namespaces are}}
-inline namespace {} // inline unnamed expected-warning {{inline namespaces are}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR8430
-namespace N {
-  class A { };
-}
-
-namespace M { }
-
-using namespace M;
-
-namespace N {
-  namespace M {
-  } 
-}
-
-namespace M {
-  namespace N {
-  }
-}
-
-namespace N {
-  A *getA();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-namespace NIL {} // expected-note {{previous definition}}
-inline namespace NIL {} // expected-error {{cannot be reopened as inline}}
-inline namespace IL {} // expected-note {{previous definition}}
-namespace IL {} // expected-warning{{inline namespace cannot be reopened as a non-inline namespace}}
-
-namespace {} // expected-note {{previous definition}}
-inline namespace {} // expected-error {{cannot be reopened as inline}}
-namespace X {
-  inline namespace {} // expected-note {{previous definition}}
-  namespace {} // expected-warning {{cannot be reopened as a non-inline namespace}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.def/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,118 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// Fun things you can do with inline namespaces:
-
-inline namespace X {
-  void f1();
-
-  inline namespace Y {
-    void f2();
-
-    template <typename T> class C {};
-  }
-
-  // Specialize and partially specialize somewhere else.
-  template <> class C<int> {};
-  template <typename T> class C<T*> {};
-}
-
-// Qualified and unqualified lookup as if member of enclosing NS.
-void foo1() {
-  f1();
-  ::f1();
-  X::f1();
-  Y::f1(); // expected-error {{no member named 'f1' in namespace 'X::Y'}}
-
-  f2();
-  ::f2();
-  X::f2();
-  Y::f2();
-}
-
-template <> class C<float> {};
-template <typename T> class C<T&> {};
-
-template class C<double>;
-
-
-// As well as all the fun with ADL.
-
-namespace ADL {
-  struct Outer {};
-
-  inline namespace IL {
-    struct Inner {};
-
-    void fo(Outer);
-  }
-
-  void fi(Inner);
-
-  inline namespace IL2 {
-    void fi2(Inner);
-  }
-}
-
-void foo2() {
-  ADL::Outer o;
-  ADL::Inner i;
-  fo(o);
-  fi(i);
-  fi2(i);
-}
-
-// Let's not forget overload sets.
-struct Distinct {};
-inline namespace Over {
-  void over(Distinct);
-}
-void over(int);
-
-void foo3() {
-  Distinct d;
-  ::over(d);
-}
-
-// Don't forget to do correct lookup for redeclarations.
-namespace redecl { inline namespace n1 {
-
-  template <class Tp> class allocator;
-
-  template <>
-  class allocator<void>
-  {
-  public:
-      typedef const void* const_pointer;
-  };
-
-  template <class Tp>
-  class allocator
-  {
-  public:
-      typedef Tp& reference;
-  
-      void allocate(allocator<void>::const_pointer = 0);
-  };
-
-} }
-
-// Normal redeclarations (not for explicit instantiations or
-// specializations) are distinct in an inline namespace vs. not in an
-// inline namespace.
-namespace redecl2 { 
-  inline namespace n1 {
-    void f(int) { }
-    struct X1 { };
-    template<typename T> void f(T) { }
-    template<typename T> struct X2 { };
-    int i = 71;
-    enum E { e };
-  }
-
-  void f(int) { }
-  struct X1 { };
-  template<typename T> void f(T) { }
-  template<typename T> struct X2 { };
-  int i = 71;
-  enum E { e };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,110 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// We have to avoid ADL for this test.
-
-template <unsigned N> class test {};
-
-class foo {};	// expected-note {{candidate}}
-test<0> foo(foo); // expected-note {{candidate}}
-
-namespace Test0 {
-  class foo { int x; };
-  test<1> foo(class foo);
-
-  namespace A {
-    test<2> foo(class ::foo); // expected-note {{candidate}} \
-    // expected-note{{passing argument to parameter here}}
-
-    void test0() {
-      using ::foo;
-
-      class foo a;
-      test<0> _ = (foo)(a);
-    }
-
-    void test1() {
-      using Test0::foo;
-
-      class foo a;
-      test<1> _ = (foo)(a);
-    };
-
-    void test2() {
-      class ::foo a;
-      
-      // Argument-dependent lookup is ambiguous between B:: and ::.
-      test<0> _0 = foo(a); // expected-error {{call to 'foo' is ambiguous}}
-
-      // But basic unqualified lookup is not.
-      test<2> _1 = (foo)(a);
-
-      class Test0::foo b;
-      test<2> _2 = (foo)(b); // expected-error {{no viable conversion from 'class Test0::foo' to 'class ::foo'}}
-    }
-  }
-}
-
-namespace Test1 {
-  namespace A {
-    class a {};
-  }
-
-  namespace B {
-    typedef class {} b;
-  }
-
-  namespace C {
-    int c(); // expected-note {{target of using declaration}}
-  }
-
-  namespace D {
-    using typename A::a;
-    using typename B::b;
-    using typename C::c; // expected-error {{'typename' keyword used on a non-type}}
-
-    a _1 = A::a();
-    b _2 = B::b();
-  }
-}
-
-namespace test2 {
-  class A {
-  protected:
-    operator int();
-    operator bool();
-  };
-
-  class B : private A {
-  protected:
-    using A::operator int; // expected-note {{declared protected here}}
-  public:
-    using A::operator bool;
-  };
-
-  int test() {
-    bool b = B();
-    return B(); // expected-error {{'operator int' is a protected member of 'test2::B'}}
-  }
-}
-
-namespace test3 {
-  class A {
-  public:
-    ~A();
-  };
-
-  class B {
-    friend class C;
-  private:
-    operator A*();
-  };
-
-  class C : public B {
-  public:
-    using B::operator A*;
-  };
-
-  void test() {
-    delete C();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace test0 {
-  namespace ns0 {
-    class tag;
-    int tag();
-  }
-
-  namespace ns1 {
-    using ns0::tag;
-  }
-
-  namespace ns2 {
-    using ns0::tag;
-  }
-
-  using ns1::tag;
-  using ns2::tag;
-}
-
-// PR 5752
-namespace test1 {
-  namespace ns {
-    void foo();
-  }
-
-  using ns::foo;
-  void foo(int);
-
-  namespace ns {
-    using test1::foo;
-  }
-}
-
-// PR 14768
-namespace PR14768 {
-  template<typename eT> class Mat;
-  template<typename eT> class Col : public Mat<eT>   {
-    using Mat<eT>::operator();
-    using Col<eT>::operator();
-    void operator() ();
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++03 [namespace.udecl]p11:
-//   If a function declaration in namespace scope or block scope has
-//   the same name and the same parameter types as a function
-//   introduced by a using-declaration, the program is
-//   ill-formed. [Note: two using-declarations may introduce functions
-//   with the same name and the same parameter types. If, for a call
-//   to an unqualified function name, function overload resolution
-//   selects the functions introduced by such using-declarations, the
-//   function call is ill-formed.
-
-namespace test0 {
-  namespace ns { void foo(); } // expected-note {{target of using declaration}}
-  int foo(void); // expected-note {{conflicting declaration}}
-  using ns::foo; // expected-error {{target of using declaration conflicts with declaration already in scope}}
-}
-
-namespace test1 {
-  namespace ns { void foo(); } // expected-note {{target of using declaration}}
-  using ns::foo; //expected-note {{using declaration}}
-  int foo(void); // expected-error {{declaration conflicts with target of using declaration already in scope}}
-}
-
-namespace test2 {
-  namespace ns { void foo(); } // expected-note 2 {{target of using declaration}}
-  void test0() {
-    int foo(void); // expected-note {{conflicting declaration}}
-    using ns::foo; // expected-error {{target of using declaration conflicts with declaration already in scope}}
-  }
-
-  void test1() {
-    using ns::foo; //expected-note {{using declaration}}
-    int foo(void); // expected-error {{declaration conflicts with target of using declaration already in scope}}
-  }
-}
-
-namespace test3 {
-  namespace ns { void foo(); } // expected-note 2 {{target of using declaration}}
-  class Test0 {
-    void test() {
-      int foo(void); // expected-note {{conflicting declaration}}
-      using ns::foo; // expected-error {{target of using declaration conflicts with declaration already in scope}}
-    }
-  };
-
-  class Test1 {
-    void test() {
-      using ns::foo; //expected-note {{using declaration}}
-      int foo(void); // expected-error {{declaration conflicts with target of using declaration already in scope}}
-    }
-  };
-}
-
-namespace test4 {
-  namespace ns { void foo(); } // expected-note 2 {{target of using declaration}}
-  template <typename> class Test0 {
-    void test() {
-      int foo(void); // expected-note {{conflicting declaration}}
-      using ns::foo; // expected-error {{target of using declaration conflicts with declaration already in scope}}
-    }
-  };
-
-  template <typename> class Test1 {
-    void test() {
-      using ns::foo; //expected-note {{using declaration}}
-      int foo(void); // expected-error {{declaration conflicts with target of using declaration already in scope}}
-    }
-  };
-}
-
-// FIXME: we should be able to diagnose both of these, but we can't.
-namespace test5 {
-  namespace ns { void foo(int); }
-  template <typename T> class Test0 {
-    void test() {
-      int foo(T);
-      using ns::foo;
-    }
-  };
-
-  template <typename T> class Test1 {
-    void test() {
-      using ns::foo;
-      int foo(T);
-    }
-  };
-
-  template class Test0<int>;
-  template class Test1<int>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p12.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,163 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++03 [namespace.udecl]p12:
-//   When a using-declaration brings names from a base class into a
-//   derived class scope, member functions in the derived class
-//   override and/or hide member functions with the same name and
-//   parameter types in a base class (rather than conflicting).
-
-template <unsigned n> struct Opaque {};
-template <unsigned n> void expect(Opaque<n> _) {}
-
-// PR5727
-// This just shouldn't crash.
-namespace test0 {
-  template<typename> struct RefPtr { };
-  template<typename> struct PtrHash {
-    static void f() { }
-  };
-  template<typename T> struct PtrHash<RefPtr<T> > : PtrHash<T*> {
-    using PtrHash<T*>::f;
-    static void f() { f(); }
-  };
-}
-
-// Simple hiding.
-namespace test1 {
-  struct Base {
-    Opaque<0> foo(Opaque<0>);
-    Opaque<0> foo(Opaque<1>);
-    Opaque<0> foo(Opaque<2>);
-  };
-
-  // using before decls
-  struct Test0 : Base {
-    using Base::foo;
-    Opaque<1> foo(Opaque<1>);
-    Opaque<1> foo(Opaque<3>);
-
-    void test0() { Opaque<0> _ = foo(Opaque<0>()); }
-    void test1() { Opaque<1> _ = foo(Opaque<1>()); }
-    void test2() { Opaque<0> _ = foo(Opaque<2>()); }
-    void test3() { Opaque<1> _ = foo(Opaque<3>()); }
-  };
-
-  // using after decls
-  struct Test1 : Base {
-    Opaque<1> foo(Opaque<1>);
-    Opaque<1> foo(Opaque<3>);
-    using Base::foo;
-
-    void test0() { Opaque<0> _ = foo(Opaque<0>()); }
-    void test1() { Opaque<1> _ = foo(Opaque<1>()); }
-    void test2() { Opaque<0> _ = foo(Opaque<2>()); }
-    void test3() { Opaque<1> _ = foo(Opaque<3>()); }
-  };
-
-  // using between decls
-  struct Test2 : Base {
-    Opaque<1> foo(Opaque<0>);
-    using Base::foo;
-    Opaque<1> foo(Opaque<2>);
-    Opaque<1> foo(Opaque<3>);
-
-    void test0() { Opaque<1> _ = foo(Opaque<0>()); }
-    void test1() { Opaque<0> _ = foo(Opaque<1>()); }
-    void test2() { Opaque<1> _ = foo(Opaque<2>()); }
-    void test3() { Opaque<1> _ = foo(Opaque<3>()); }
-  };
-}
-
-// Crazy dependent hiding.
-namespace test2 {
-  struct Base {
-    void foo(int);
-  };
-
-  template <typename T> struct Derived1 : Base {
-    using Base::foo;
-    void foo(T);
-
-    void testUnresolved(int i) { foo(i); }
-  };
-
-  void test0(int i) {
-    Derived1<int> d1;
-    d1.foo(i);
-    d1.testUnresolved(i);
-  }
-
-  // Same thing, except with the order of members reversed.
-  template <typename T> struct Derived2 : Base {
-    void foo(T);
-    using Base::foo;
-
-    void testUnresolved(int i) { foo(i); }
-  };
-
-  void test1(int i) {
-    Derived2<int> d2;
-    d2.foo(i);
-    d2.testUnresolved(i);
-  }
-}
-
-// Hiding of member templates.
-namespace test3 {
-  struct Base {
-    template <class T> Opaque<0> foo() { return Opaque<0>(); }
-    template <int n> Opaque<1> foo() { return Opaque<1>(); }
-  };
-
-  struct Derived1 : Base {
-    using Base::foo;
-    template <int n> Opaque<2> foo() { return Opaque<2>(); } // expected-note {{invalid explicitly-specified argument for template parameter 'n'}}
-  };
-
-  struct Derived2 : Base {
-    template <int n> Opaque<2> foo() { return Opaque<2>(); } // expected-note {{invalid explicitly-specified argument for template parameter 'n'}}
-    using Base::foo;
-  };
-
-  struct Derived3 : Base {
-    using Base::foo;
-    template <class T> Opaque<3> foo() { return Opaque<3>(); } // expected-note {{invalid explicitly-specified argument for template parameter 'T'}}
-  };
-
-  struct Derived4 : Base {
-    template <class T> Opaque<3> foo() { return Opaque<3>(); } // expected-note {{invalid explicitly-specified argument for template parameter 'T'}}
-    using Base::foo;
-  };
-
-  void test() {
-    expect<0>(Base().foo<int>());
-    expect<1>(Base().foo<0>());
-    expect<0>(Derived1().foo<int>()); // expected-error {{no matching member function for call to 'foo'}}
-    expect<2>(Derived1().foo<0>());
-    expect<0>(Derived2().foo<int>()); // expected-error {{no matching member function for call to 'foo'}}
-    expect<2>(Derived2().foo<0>());
-    expect<3>(Derived3().foo<int>());
-    expect<1>(Derived3().foo<0>()); // expected-error {{no matching member function for call to 'foo'}}
-    expect<3>(Derived4().foo<int>());
-    expect<1>(Derived4().foo<0>()); // expected-error {{no matching member function for call to 'foo'}}
-  }
-}
-
-// PR7384: access control for member templates.
-namespace test4 {
-  class Base {
-  protected:
-    template<typename T> void foo(T);
-    template<typename T> void bar(T); // expected-note {{declared protected here}}
-  };
-
-  struct Derived : Base {
-    using Base::foo;
-  };
-
-  void test() {
-    Derived d;
-    d.foo<int>(3);
-    d.bar<int>(3); // expected-error {{'bar' is a protected member}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p13.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p13.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p13.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// C++03 [namespace.udecl]p3:
-//   For the purpose of overload resolution, the functions which are
-//   introduced by a using-declaration into a derived class will be
-//   treated as though they were members of the derived class. In
-//   particular, the implicit this parameter shall be treated as if it
-//   were a pointer to the derived class rather than to the base
-//   class. This has no effect on the type of the function, and in all
-//   other respects the function remains a member of the base class.
-
-namespace test0 {
-  struct Opaque0 {};
-  struct Opaque1 {};
-
-  struct Base {
-    Opaque0 test0(int*);
-    Opaque0 test1(const int*);
-    Opaque0 test2(int*);
-    Opaque0 test3(int*) const;
-  };
-
-  struct Derived : Base {
-    using Base::test0;
-    Opaque1 test0(const int*);
-
-    using Base::test1;
-    Opaque1 test1(int*);
-
-    using Base::test2;
-    Opaque1 test2(int*) const;
-
-    using Base::test3;
-    Opaque1 test3(int*);
-  };
-
-  void test0() {
-    Opaque0 a = Derived().test0((int*) 0);
-    Opaque1 b = Derived().test0((const int*) 0);
-  }
-
-  void test1() {
-    Opaque1 a = Derived().test1((int*) 0);
-    Opaque0 b = Derived().test1((const int*) 0);
-  }
-
-  void test2() {
-    Opaque0 a = ((Derived*) 0)->test2((int*) 0);
-    Opaque1 b = ((const Derived*) 0)->test2((int*) 0);
-  }
-
-  void test3() {
-    Opaque1 a = ((Derived*) 0)->test3((int*) 0);
-    Opaque0 b = ((const Derived*) 0)->test3((int*) 0);
-  }
-}
-
-// Typedef redeclaration.
-namespace rdar8018262 {
-  typedef void (*fp)();
-
-  namespace N {
-    typedef void (*fp)();
-  }
-
-  using N::fp;
-
-  fp fp_1;
-}
-
-// Things to test:
-//   member operators
-//   conversion operators
-//   call operators
-//   call-surrogate conversion operators
-//   everything, but in dependent contexts

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p3-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p3-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p3-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// C++0x N2914.
-
-struct B {
-  void f(char);
-  void g(char);
-  enum E { e };
-  union { int x; };
-};
-
-class C {
-  int g();
-};
-
-class D2 : public B {
-  using B::f;
-  using B::e;
-  using B::x;
-  using C::g; // expected-error{{using declaration refers into 'C::', which is not a base class of 'D2'}}
-};
-
-namespace test1 {
-  struct Base {
-    int foo();
-  };
-
-  struct Unrelated {
-    int foo();
-  };
-
-  struct Subclass : Base {
-  };
-
-  namespace InnerNS {
-    int foo();
-  }
-
-  // We should be able to diagnose these without instantiation.
-  template <class T> struct C : Base {
-    using InnerNS::foo; // expected-error {{not a class}}
-    using Base::bar; // expected-error {{no member named 'bar'}}
-    using Unrelated::foo; // expected-error {{not a base class}}
-    using C::foo; // expected-error {{refers to its own class}}
-    using Subclass::foo; // expected-error {{not a base class}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,213 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++03 [namespace.udecl]p4:
-//   A using-declaration used as a member-declaration shall refer to a
-//   member of a base class of the class being defined, shall refer to
-//   a member of an anonymous union that is a member of a base class
-//   of the class being defined, or shall refer to an enumerator for
-//   an enumeration type that is a member of a base class of the class
-//   being defined.
-
-// There is no directly analogous paragraph in C++0x, and the feature
-// works sufficiently differently there that it needs a separate test.
-
-namespace test0 {
-  namespace NonClass {
-    typedef int type;
-    struct hiding {};
-    int hiding;
-    static union { double union_member; };
-    enum tagname { enumerator };
-  }
-
-  class Test0 {
-    using NonClass::type; // expected-error {{not a class}}
-    using NonClass::hiding; // expected-error {{not a class}}
-    using NonClass::union_member; // expected-error {{not a class}}
-    using NonClass::enumerator; // expected-error {{not a class}}
-  };
-}
-
-struct Opaque0 {};
-
-namespace test1 {
-  struct A {
-    typedef int type;
-    struct hiding {}; // expected-note {{previous use is here}}
-    Opaque0 hiding;
-    union { double union_member; };
-    enum tagname { enumerator };
-  };
-
-  struct B : A {
-    using A::type;
-    using A::hiding;
-    using A::union_member;
-    using A::enumerator;
-    using A::tagname;
-
-    void test0() {
-      type t = 0;
-    }
-
-    void test1() {
-      typedef struct A::hiding local;
-      struct hiding _ = local();
-    }
-
-    void test2() {
-      union hiding _; // expected-error {{tag type that does not match previous}}
-    }
-
-    void test3() {
-      char array[sizeof(union_member) == sizeof(double) ? 1 : -1];
-    }
-
-    void test4() {
-      enum tagname _ = enumerator;
-    }
-
-    void test5() {
-      Opaque0 _ = hiding;
-    }
-  };
-}
-
-namespace test2 {
-  struct A {
-    typedef int type;
-    struct hiding {}; // expected-note {{previous use is here}}
-    int hiding;
-    union { double union_member; };
-    enum tagname { enumerator };
-  };
-
-  template <class T> struct B : A {
-    using A::type;
-    using A::hiding;
-    using A::union_member;
-    using A::enumerator;
-    using A::tagname;
-
-    void test0() {
-      type t = 0;
-    }
-
-    void test1() {
-      typedef struct A::hiding local;
-      struct hiding _ = local();
-    }
-
-    void test2() {
-      union hiding _; // expected-error {{tag type that does not match previous}}
-    }
-
-    void test3() {
-      char array[sizeof(union_member) == sizeof(double) ? 1 : -1];
-    }
-
-    void test4() {
-      enum tagname _ = enumerator;
-    }
-
-    void test5() {
-      Opaque0 _ = hiding;
-    }
-  };
-}
-
-namespace test3 {
-  struct hiding {};
-
-  template <class T> struct A {
-    typedef int type; // expected-note {{target of using declaration}}
-    struct hiding {};
-    Opaque0 hiding; // expected-note {{target of using declaration}}
-    union { double union_member; }; // expected-note {{target of using declaration}}
-    enum tagname { enumerator }; // expected-note 2 {{target of using declaration}}
-  };
-
-  template <class T> struct B : A<T> {
-    using A<T>::type; // expected-error {{dependent using declaration resolved to type without 'typename'}}
-    using A<T>::hiding;
-    using A<T>::union_member;
-    using A<T>::enumerator;
-    using A<T>::tagname; // expected-error {{dependent using declaration resolved to type without 'typename'}}
-
-    // FIXME: re-enable these when the various bugs involving tags are fixed
-#if 0
-    void test1() {
-      typedef struct A<T>::hiding local;
-      struct hiding _ = local();
-    }
-
-    void test2() {
-      typedef struct A<T>::hiding local;
-      union hiding _ = local();
-    }
-#endif
-
-    void test3() {
-      char array[sizeof(union_member) == sizeof(double) ? 1 : -1];
-    }
-
-#if 0
-    void test4() {
-      enum tagname _ = enumerator;
-    }
-#endif
-
-    void test5() {
-      Opaque0 _ = hiding;
-    }
-  };
-
-  template struct B<int>; // expected-note {{in instantiation}}
-
-  template <class T> struct C : A<T> {
-    using typename A<T>::type;
-    using typename A<T>::hiding; // expected-note {{declared here}} \
-                                 // expected-error {{'typename' keyword used on a non-type}}
-    using typename A<T>::union_member; // expected-error {{'typename' keyword used on a non-type}}
-    using typename A<T>::enumerator; // expected-error {{'typename' keyword used on a non-type}}
-
-    void test6() {
-      type t = 0;
-    }
-
-    void test7() {
-      Opaque0 _ = hiding; // expected-error {{does not refer to a value}}
-    }
-  };
-
-  template struct C<int>; // expected-note {{in instantiation}}
-}
-
-namespace test4 {
-  struct Base {
-    int foo();
-  };
-
-  struct Unrelated {
-    int foo();
-  };
-
-  struct Subclass : Base {
-  };
-
-  namespace InnerNS {
-    int foo();
-  }
-
-  // We should be able to diagnose these without instantiation.
-  template <class T> struct C : Base {
-    using InnerNS::foo; // expected-error {{not a class}}
-    using Base::bar; // expected-error {{no member named 'bar'}}
-    using Unrelated::foo; // expected-error {{not a base class}}
-    using C::foo; // legal in C++03
-    using Subclass::foo; // legal in C++03
-
-    int bar(); //expected-note {{target of using declaration}}
-    using C::bar; // expected-error {{refers to its own class}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p5-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p5-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p5-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// C++0x N2914.
-
-struct A {
-  template<class T> void f(T);
-  template<class T> struct X { };
-};
-
-struct B : A {
-  using A::f<double>; // expected-error{{using declaration can not refer to a template specialization}}
-  using A::X<int>; // expected-error{{using declaration can not refer to a template specialization}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p6-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p6-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p6-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// C++0x N2914.
-
-namespace A {
-  namespace B { }
-}
-
-using A::B; // expected-error{{using declaration can not refer to namespace}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// C++0x N2914.
-
-struct X {
-  int i;
-  static int a;
-};
-
-using X::i; // expected-error{{using declaration can not refer to class member}}
-using X::s; // expected-error{{using declaration can not refer to class member}}
-
-void f() {
-  using X::i; // expected-error{{using declaration can not refer to class member}}
-  using X::s; // expected-error{{using declaration can not refer to class member}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct Opaque0 {};
-struct Opaque1 {};
-
-// Redeclarations are okay in a namespace.
-namespace test0 {
-  namespace ns {
-    void foo(Opaque0); // expected-note 2 {{candidate function}}
-  }
-
-  using ns::foo;
-  using ns::foo;
-
-  void test0() {
-    foo(Opaque1()); // expected-error {{no matching function for call}}
-  }
-
-  namespace ns {
-    void foo(Opaque1);
-  }
-
-  void test1() {
-    foo(Opaque1()); // expected-error {{no matching function for call}}
-  }
-
-  using ns::foo;
-
-  void test2() {
-    foo(Opaque1());
-  }
-
-  using ns::foo;
-}
-
-// Make sure we handle transparent contexts the same way.
-namespace test1 {
-  namespace ns {
-    void foo(Opaque0); // expected-note 2 {{candidate function}}
-  }
-
-  extern "C++" {
-    using ns::foo;
-  }
-
-  void test0() {
-    foo(Opaque1()); // expected-error {{no matching function for call}}
-  }
-
-  namespace ns {
-    void foo(Opaque1);
-  }
-
-  void test1() {
-    foo(Opaque1()); // expected-error {{no matching function for call}}
-  }
-
-  extern "C++" {
-    using ns::foo;
-  }
-
-  void test2() {
-    foo(Opaque1());
-  }
-}
-
-// Make sure we detect invalid redeclarations that can't be detected
-// until template instantiation.
-namespace test2 {
-  template <class T> struct Base {
-    typedef Base type;
-    void foo();
-  };
-
-  template <class T> struct Derived : Base<T> {
-    // These are invalid redeclarations, detectable only after
-    // instantiation.
-    using Base<T>::foo; // expected-note {{previous using decl}}
-    using Base<T>::type::foo; //expected-error {{redeclaration of using decl}}
-  };
-
-  template struct Derived<int>; // expected-note {{in instantiation of template class}}
-}
-
-// Redeclarations are okay in a function.
-namespace test3 {
-  namespace N {
-    int f(int);
-    typedef int type;
-  }
-
-  void g() {
-    using N::f;
-    using N::f;
-    using N::type;
-    using N::type;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udir/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udir/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udir/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,141 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// (this actually occurs before paragraph 1)
-namespace test0 {
-  namespace A {}
-  class B {
-    using namespace A; // expected-error {{'using namespace' is not allowed in classes}}
-  };
-}
-
-
-struct opaque0 {};
-struct opaque1 {};
-
-// Test that names appear as if in deepest common ancestor.
-namespace test1 {
-  namespace A {
-    namespace B {
-      opaque0 foo(); // expected-note {{candidate}}
-    }
-  }
-
-  namespace C {
-    opaque1 foo(); // expected-note {{candidate}}
-
-    opaque1 test() {
-      using namespace A::B;
-      return foo(); // C::foo
-    }
-  }
-
-  opaque1 test() {
-    using namespace A::B;
-    using namespace C;
-    return foo(); // expected-error {{call to 'foo' is ambiguous}}
-  }
-}
-
-// Same thing, but with the directives in namespaces.
-namespace test2 {
-  namespace A {
-    namespace B {
-      opaque0 foo(); // expected-note {{candidate}}
-    }
-  }
-
-  namespace C {
-    opaque1 foo(); // expected-note {{candidate}}
-
-    namespace test {
-      using namespace A::B;
-
-      opaque1 test() {
-        return foo(); // C::foo
-      }
-    }
-  }
-
-  namespace test {
-    using namespace A::B;
-    using namespace C;
-    
-    opaque1 test() {
-      return foo(); // expected-error {{call to 'foo' is ambiguous}}
-    }
-  }
-}
-
-// Transitivity.
-namespace test3 {
-  namespace A {
-    namespace B {
-      opaque0 foo();
-    }
-  }
-  namespace C {
-    using namespace A;
-  }
-
-  opaque0 test0() {
-    using namespace C;
-    using namespace B;
-    return foo();
-  }
-
-  namespace D {
-    using namespace C;
-  }
-  namespace A {
-    opaque1 foo();
-  }
-
-  opaque1 test1() {
-    using namespace D;
-    return foo();
-  }
-}
-
-// Transitivity acts like synthetic using directives.
-namespace test4 {
-  namespace A {
-    namespace B {
-      opaque0 foo(); // expected-note {{candidate}}
-    }
-  }
-  
-  namespace C {
-    using namespace A::B;
-  }
-
-  opaque1 foo(); // expected-note {{candidate}}
-
-  namespace A {
-    namespace D {
-      using namespace C;
-    }
-
-    opaque0 test() {
-      using namespace D;
-      return foo();
-    }
-  }
-
-  opaque0 test() {
-    using namespace A::D;
-    return foo(); // expected-error {{call to 'foo' is ambiguous}}
-  }
-}
-
-// Bug: using directives should be followed when parsing default
-// arguments in scoped declarations.
-class test5 {
-  int inc(int x);
-};
-namespace Test5 {
-  int default_x = 0;
-}
-using namespace Test5;
-int test5::inc(int x = default_x) {
-  return x+1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udir/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udir/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/basic.namespace/namespace.udir/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// <rdar://problem/8296180>
-typedef int pid_t;
-namespace ns {
-  typedef int pid_t;
-}
-using namespace ns;
-pid_t x;
-
-struct A { };
-namespace ns {
-  typedef ::A A;
-}
-A a;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-linux-gnu -verify %s
-
-alignas(1) int n1; // expected-error {{requested alignment is less than minimum alignment of 4 for type 'int'}}
-alignas(1) alignas(2) int n2; // expected-error {{less than minimum alignment}}
-alignas(1) alignas(2) alignas(4) int n3; // ok
-alignas(1) alignas(2) alignas(0) int n4; // expected-error {{less than minimum alignment}}
-alignas(1) alignas(2) int n5 alignas(4); // ok
-alignas(1) alignas(4) int n6 alignas(2); // ok
-alignas(1) int n7 alignas(2), // expected-error {{less than minimum alignment}}
-               n8 alignas(4); // ok
-alignas(8) int n9 alignas(2); // ok, overaligned
-
-enum alignas(1) E1 {}; // expected-error {{requested alignment is less than minimum alignment of 4 for type 'E1'}}
-enum alignas(1) E2 : char {}; // ok
-enum alignas(4) E3 { e3 = 0 }; // ok
-enum alignas(4) E4 { e4 = 1ull << 33 }; // expected-error {{requested alignment is less than minimum alignment of 8 for type 'E4'}}
-
-struct S1 {
-  alignas(8) int n;
-};
-struct alignas(2) S2 { // expected-error {{requested alignment is less than minimum alignment of 4 for type 'S2'}}
-  int n;
-};
-struct alignas(2) S3 { // expected-error {{requested alignment is less than minimum alignment of 8 for type 'S3'}}
-  S1 s1;
-};
-struct alignas(2) S4 : S1 { // expected-error {{requested alignment is less than minimum alignment of 8 for type 'S4'}}
-};
-struct S5 : S1 {
-  alignas(2) S1 s1; // expected-error {{requested alignment is less than minimum alignment of 8 for type 'S1'}}
-};
-struct S6 {
-  S1 s1;
-};
-struct S7 : S1 {
-};
-struct alignas(2) alignas(8) alignas(1) S8 : S1 {
-};
-
-S1 s1 alignas(4); // expected-error {{requested alignment is less than minimum alignment of 8 for type 'S1'}}
-S6 s6 alignas(4); // expected-error {{requested alignment is less than minimum alignment of 8 for type 'S6'}}
-S7 s7 alignas(4); // expected-error {{requested alignment is less than minimum alignment of 8 for type 'S7'}}
-
-template<int N, int M, typename T>
-struct alignas(N) X { // expected-error 3{{requested alignment is less than minimum}}
-  alignas(M) T t; // expected-error 3{{requested alignment is less than minimum}}
-};
-
-template struct X<1, 1, char>;
-template struct X<4, 1, char>;
-template struct X<1, 2, char>; // expected-note {{instantiation}}
-template struct X<1, 1, short>; // expected-note {{instantiation}}
-template struct X<2, 1, short>; // expected-note {{instantiation}}
-template struct X<2, 2, short>;
-template struct X<16, 8, S1>;
-template struct X<4, 4, S1>; // expected-note {{instantiation}}
-
-template<int N, typename T>
-struct Y {
-  enum alignas(N) E : T {}; // expected-error {{requested alignment is less than minimum}}
-};
-template struct Y<1, char>;
-template struct Y<2, char>;
-template struct Y<1, short>; // expected-note {{instantiation}}
-template struct Y<2, short>;
-
-template<int N, typename T>
-void f() {
-  alignas(N) T v; // expected-error {{requested alignment is less than minimum}}
-};
-template void f<1, char>();
-template void f<2, char>();
-template void f<1, short>(); // expected-note {{instantiation}}
-template void f<2, short>();

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-alignas(4) extern int n1; // expected-note {{previous declaration}}
-alignas(8) int n1; // expected-error {{redeclaration has different alignment requirement (8 vs 4)}}
-
-alignas(8) int n2; // expected-note {{previous declaration}}
-alignas(4) extern int n2; // expected-error {{different alignment requirement (4 vs 8)}}
-
-alignas(8) extern int n3; // expected-note {{previous declaration}}
-alignas(4) extern int n3; // expected-error {{different alignment requirement (4 vs 8)}}
-
-extern int n4;
-alignas(8) extern int n4;
-
-alignas(8) extern int n5;
-extern int n5;
-
-int n6; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
-alignas(8) extern int n6; // expected-note {{declared with 'alignas' attribute here}}
-
-extern int n7;
-alignas(8) int n7;
-
-alignas(8) extern int n8; // expected-note {{declared with 'alignas' attribute here}}
-int n8; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
-
-int n9; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
-alignas(4) extern int n9; // expected-note {{declared with 'alignas' attribute here}}
-
-
-enum alignas(2) E : char; // expected-note {{declared with 'alignas' attribute here}}
-enum E : char {}; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
-
-enum alignas(4) F : char; // expected-note {{previous declaration is here}}
-enum alignas(2) F : char; // expected-error {{redeclaration has different alignment requirement (2 vs 4)}}
-
-enum G : char;
-enum alignas(8) G : char {};
-enum G : char;
-
-enum H : char {}; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
-enum alignas(1) H : char; // expected-note {{declared with 'alignas' attribute here}}
-
-
-struct S;
-struct alignas(16) S; // expected-note {{declared with 'alignas' attribute here}}
-struct S;
-struct S { int n; }; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
-
-struct alignas(2) T;
-struct alignas(2) T { char c; }; // expected-note {{previous declaration is here}}
-struct T;
-struct alignas(4) T; // expected-error {{redeclaration has different alignment requirement (4 vs 2)}}
-
-struct U;
-struct alignas(2) U {};
-
-struct V {}; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
-struct alignas(1) V; // expected-note {{declared with 'alignas' attribute here}}
-
-template<int M, int N> struct alignas(M) W;
-template<int M, int N> struct alignas(N) W {};
-W<4,4> w44; // ok
-// FIXME: We should reject this.
-W<1,2> w12;
-static_assert(alignof(W<4,4>) == 4, "");
-
-template<int M, int N, int O, int P> struct X {
-  alignas(M) alignas(N) static char Buffer[32]; // expected-note {{previous declaration is here}}
-};
-template<int M, int N, int O, int P>
-alignas(O) alignas(P) char X<M, N, O, P>::Buffer[32]; // expected-error {{redeclaration has different alignment requirement (8 vs 2)}}
-char *x1848 = X<1,8,4,8>::Buffer; // ok
-char *x1248 = X<1,2,4,8>::Buffer; // expected-note {{in instantiation of}}
-
-template<int M, int N, int O, int P> struct Y {
-  enum alignas(M) alignas(N) E : char;
-};
-template<int M, int N, int O, int P>
-enum alignas(O) alignas(P) Y<M,N,O,P>::E : char { e };
-int y1848 = Y<1,8,4,8>::e;
-// FIXME: We should reject this.
-int y1248 = Y<1,2,4,8>::e;
-
-// Don't crash here.
-alignas(4) struct Incomplete incomplete; // expected-error {{incomplete type}} expected-note {{forward declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-template<typename T, typename A, int N> struct X {
-  alignas(T) alignas(A) T buffer[N];
-};
-
-static_assert(alignof(X<char, int, sizeof(int)>) == alignof(int), "");
-static_assert(alignof(X<int, char, 1>) == alignof(int), "");
-
-
-template<typename T, typename A, int N> struct Y {
-  alignas(A) T buffer[N]; // expected-error {{requested alignment is less than minimum alignment of 4 for type 'int [1]'}}
-};
-
-static_assert(alignof(Y<char, int, sizeof(int)>) == alignof(int), "");
-static_assert(alignof(Y<int, char, 1>) == alignof(int), ""); // expected-note {{in instantiation of}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.align/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-alignas(double) void f(); // expected-error {{'alignas' attribute only applies to variables, data members and tag types}}
-alignas(double) unsigned char c[sizeof(double)]; // expected-note {{previous}}
-extern unsigned char c[sizeof(double)];
-alignas(float) extern unsigned char c[sizeof(double)]; // expected-error {{different alignment}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.depend/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.depend/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.depend/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-[[carries_dependency, carries_dependency]] int m1(); // expected-error {{attribute 'carries_dependency' cannot appear multiple times in an attribute specifier}}
-[[carries_dependency]] [[carries_dependency]] int m2(); // ok
-[[carries_dependency()]] int m3(); // expected-error {{attribute 'carries_dependency' cannot have an argument list}}
-
-[[carries_dependency]] void f1(); // FIXME: warn here
-[[carries_dependency]] int f2(); // ok
-int f3(int param [[carries_dependency]]); // ok
-[[carries_dependency]] int (*f4)(); // expected-error {{'carries_dependency' attribute only applies to functions, methods, and parameters}}
-int (*f5 [[carries_dependency]])(); // expected-error {{'carries_dependency' attribute only applies to functions, methods, and parameters}}
-int (*f6)() [[carries_dependency]]; // expected-error {{'carries_dependency' attribute cannot be applied to types}}
-int (*f7)(int n [[carries_dependency]]); // expected-error {{'[[carries_dependency]]' attribute only allowed on parameter in a function declaration}}
-int (((f8)))(int n [[carries_dependency]]); // ok
-int (*f9(int n))(int n [[carries_dependency]]); // expected-error {{'[[carries_dependency]]' attribute only allowed on parameter in a function declaration}}
-int typedef f10(int n [[carries_dependency]]); // expected-error {{'[[carries_dependency]]' attribute only allowed on parameter in a function declaration}}
-using T = int(int n [[carries_dependency]]); // expected-error {{'[[carries_dependency]]' attribute only allowed on parameter in a function declaration}}
-struct S {
-  [[carries_dependency]] int f(int n [[carries_dependency]]); // ok
-  int (*p)(int n [[carries_dependency]]); // expected-error {{'[[carries_dependency]]' attribute only allowed on parameter in a function declaration}}
-};
-void f() {
-  [[carries_dependency]] int f(int n [[carries_dependency]]); // ok
-  [[carries_dependency]] // expected-error {{'carries_dependency' attribute only applies to functions, methods, and parameters}}
-      int (*p)(int n [[carries_dependency]]); // expected-error {{'[[carries_dependency]]' attribute only allowed on parameter in a function declaration}}
-}
-
-auto l1 = [](int n [[carries_dependency]]) {};
-// There's no way to write a lambda such that the return value carries
-// a dependency, because an attribute applied to the lambda appertains to
-// the *type* of the operator() function, not to the function itself.
-auto l2 = []() [[carries_dependency]] {}; // expected-error {{'carries_dependency' attribute cannot be applied to types}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.depend/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.depend/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.depend/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-int f(int); // expected-note 2{{declaration missing '[[carries_dependency]]' attribute is here}}
-[[carries_dependency]] int f(int); // expected-error {{function declared '[[carries_dependency]]' after its first declaration}}
-int f(int n [[carries_dependency]]); // expected-error {{parameter declared '[[carries_dependency]]' after its first declaration}}
-
-int g([[carries_dependency]] int n); // expected-note {{declaration missing '[[carries_dependency]]' attribute is here}}
-int g(int);
-[[carries_dependency]] int g(int); // expected-error {{function declared '[[carries_dependency]]' after its first declaration}}
-int g(int n [[carries_dependency]]);
-
-int h [[carries_dependency]]();
-int h();
-[[carries_dependency]] int h();

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.grammar/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-namespace std_example {
-
-int p[10];
-void f() {
-  int x = 42, y[5];
-  // FIXME: Produce a better diagnostic for this case.
-  int(p[[x] { return x; }()]); // expected-error {{expected ']'}} \
-  // expected-warning {{unknown attribute 'x' ignored}}
-  y[[] { return 2; }()] = 2; // expected-error {{consecutive left square brackets}}
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.attr/dcl.attr.noreturn/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify -fcxx-exceptions %s
-
-[[noreturn]] void a() {
-  return; // expected-warning {{function 'a' declared 'noreturn' should not return}}
-}
-void a2 [[noreturn]] () {
-  return; // expected-warning {{function 'a2' declared 'noreturn' should not return}}
-}
-
-[[noreturn, noreturn]] void b() { throw 0; } // expected-error {{attribute 'noreturn' cannot appear multiple times in an attribute specifier}}
-[[noreturn]] [[noreturn]] void b2() { throw 0; } // ok
-
-[[noreturn()]] void c(); // expected-error {{attribute 'noreturn' cannot have an argument list}}
-
-void d() [[noreturn]]; // expected-error {{'noreturn' attribute cannot be applied to types}}
-int d2 [[noreturn]]; // expected-error {{'noreturn' attribute only applies to functions and methods}}
-
-[[noreturn]] int e() { b2(); } // ok
-
-int f(); // expected-note {{declaration missing '[[noreturn]]' attribute is here}}
-[[noreturn]] int f(); // expected-error {{function declared '[[noreturn]]' after its first declaration}}
-int f();
-
-[[noreturn]] int g();
-int g() { while (true) b(); } // ok
-[[noreturn]] int g();
-
-[[gnu::noreturn]] int h();
-
-template<typename T> void test_type(T) { T::error; } // expected-error {{has no members}}
-template<> void test_type(int (*)()) {}
-
-void check() {
-  // We do not consider [[noreturn]] to be part of the function's type.
-  // However, we do treat [[gnu::noreturn]] as being part of the type.
-  //
-  // This isn't quite GCC-compatible; it treats [[gnu::noreturn]] as
-  // being part of a function *pointer* type, but not being part of
-  // a function type.
-  test_type(e);
-  test_type(f);
-  test_type(g);
-  test_type(h); // expected-note {{instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.enum/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.enum/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.enum/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -fsyntax-only -verify %s
-template<typename T> int force_same(T, T);
-
-// C++ [dcl.enum]p5:
-//   [...] If the underlying type is not fixed, the type of each enumerator is 
-//   the type of its initializing value:
-//     - If an initializer is specified for an enumerator, the initializing 
-//       value has the same type as the expression.
-enum Bullet1 {
-  Bullet1Val1 = 'a',
-  Bullet1Val2 = 10u,
-  Bullet1Val1IsChar = sizeof(force_same(Bullet1Val1, char(0))),
-  Bullet1Val2IsUnsigned = sizeof(force_same(Bullet1Val2, unsigned(0)))
-};
-
-//    - If no initializer is specified for the first enumerator, the 
-//      initializing value has an unspecified integral type.
-enum Bullet2 {
-  Bullet2Val,
-  Bullet2ValIsInt = sizeof(force_same(Bullet2Val, int(0)))
-};
-
-//    - Otherwise the type of the initializing value is the same as the type
-//      of the initializing value of the preceding enumerator unless the 
-//      incremented value is not representable in that type, in which case the
-//      type is an unspecified integral type sufficient to contain the 
-//      incremented value. If no such type exists, the program is ill-formed.
-enum Bullet3a {
-  Bullet3aVal1 = 17,
-  Bullet3aVal2,
-  Bullet3aVal2IsInt = sizeof(force_same(Bullet3aVal2, int(0))),
-  Bullet3aVal3 = 2147483647,
-  Bullet3aVal3IsInt = sizeof(force_same(Bullet3aVal3, int(0))),
-  Bullet3aVal4,
-  Bullet3aVal4IsUnsigned = sizeof(force_same(Bullet3aVal4, 0ul))
-};
-
-enum Bullet3b {
-  Bullet3bVal1 = 17u,
-  Bullet3bVal2,
-  Bullet3bVal2IsInt = sizeof(force_same(Bullet3bVal2, 0u)),
-  Bullet3bVal3 = 2147483647u,
-  Bullet3bVal3IsInt = sizeof(force_same(Bullet3bVal3, 0u)),
-  Bullet3bVal4,
-  Bullet3bVal4IsUnsigned = sizeof(force_same(Bullet3bVal4, 0ul))
-};
-
-enum Bullet3c {
-  Bullet3cVal1 = 0xFFFFFFFFFFFFFFFEull,
-  Bullet3cVal2,
-  Bullet3cVal3 // expected-warning{{not representable}}
-};
-
-//   Following the closing brace of an enum-specifier, each enumerator has the
-//   type of its enumeration.
-int array0[sizeof(force_same(Bullet3bVal3, Bullet3b(0)))? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.link/p7-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.link/p7-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.link/p7-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -ast-print -o - %s | FileCheck %s
-
-extern "C" void f(void);
-// CHECK: extern "C" void f()
-
-extern "C" void v;
-// CHECK: extern "C" void v

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.link/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.link/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.link/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-struct X { };
-
-// CHECK: @x1 = global %struct.X zeroinitializer
-// CHECK: @x4 = global %struct.X zeroinitializer
-// CHECK: @x2 = external global %struct.X
-// CHECK: @x3 = external global %struct.X
-extern "C" {
-
-
-  X x1;
-}
-
-extern "C" X x2;
-
-extern X x3;
-
-X x4;
-
-X& get(int i) {
-  if (i == 1)
-    return x1;
-  else if (i == 2)
-    return x2;
-  else if (i == 3)
-    return x3;
-  else
-    return x4;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,124 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct notlit { // expected-note {{not literal because}}
-  notlit() {}
-};
-struct notlit2 {
-  notlit2() {}
-};
-
-// valid declarations
-constexpr int i1 = 0;
-constexpr int f1() { return 0; }
-struct s1 {
-  constexpr static int mi1 = 0;
-  const static int mi2;
-};
-constexpr int s1::mi2 = 0;
-
-// invalid declarations
-// not a definition of an object
-constexpr extern int i2; // expected-error {{constexpr variable declaration must be a definition}}
-// not a literal type
-constexpr notlit nl1; // expected-error {{constexpr variable cannot have non-literal type 'const notlit'}}
-// function parameters
-void f2(constexpr int i) {} // expected-error {{function parameter cannot be constexpr}}
-// non-static member
-struct s2 {
-  constexpr int mi1; // expected-error {{non-static data member cannot be constexpr; did you intend to make it const?}}
-  static constexpr int mi2; // expected-error {{requires an initializer}}
-  mutable constexpr int mi3 = 3; // expected-error-re {{non-static data member cannot be constexpr$}} expected-error {{'mutable' and 'const' cannot be mixed}}
-};
-// typedef
-typedef constexpr int CI; // expected-error {{typedef cannot be constexpr}}
-// tag
-constexpr class C1 {}; // expected-error {{class cannot be marked constexpr}}
-constexpr struct S1 {}; // expected-error {{struct cannot be marked constexpr}}
-constexpr union U1 {}; // expected-error {{union cannot be marked constexpr}}
-constexpr enum E1 {}; // expected-error {{enum cannot be marked constexpr}}
-template <typename T> constexpr class TC1 {}; // expected-error {{class cannot be marked constexpr}}
-template <typename T> constexpr struct TS1 {}; // expected-error {{struct cannot be marked constexpr}}
-template <typename T> constexpr union TU1 {}; // expected-error {{union cannot be marked constexpr}}
-class C2 {} constexpr; // expected-error {{class cannot be marked constexpr}}
-struct S2 {} constexpr; // expected-error {{struct cannot be marked constexpr}}
-union U2 {} constexpr; // expected-error {{union cannot be marked constexpr}}
-enum E2 {} constexpr; // expected-error {{enum cannot be marked constexpr}}
-constexpr class C3 {} c3 = C3();
-constexpr struct S3 {} s3 = S3();
-constexpr union U3 {} u3 = {};
-constexpr enum E3 { V3 } e3 = V3;
-class C4 {} constexpr c4 = C4();
-struct S4 {} constexpr s4 = S4();
-union U4 {} constexpr u4 = {};
-enum E4 { V4 } constexpr e4 = V4;
-constexpr int; // expected-error {{constexpr can only be used in variable and function declarations}}
-// redeclaration mismatch
-constexpr int f3(); // expected-note {{previous declaration is here}}
-int f3(); // expected-error {{non-constexpr declaration of 'f3' follows constexpr declaration}}
-int f4(); // expected-note {{previous declaration is here}}
-constexpr int f4(); // expected-error {{constexpr declaration of 'f4' follows non-constexpr declaration}}
-template<typename T> constexpr T f5(T);
-template<typename T> constexpr T f5(T); // expected-note {{previous}}
-template<typename T> T f5(T); // expected-error {{non-constexpr declaration of 'f5' follows constexpr declaration}}
-template<typename T> T f6(T); // expected-note {{here}}
-template<typename T> constexpr T f6(T); // expected-error {{constexpr declaration of 'f6' follows non-constexpr declaration}}
-// destructor
-struct ConstexprDtor {
-  constexpr ~ConstexprDtor() = default; // expected-error {{destructor cannot be marked constexpr}}
-};
-
-// template stuff
-template <typename T> constexpr T ft(T t) { return t; }
-template <typename T> T gt(T t) { return t; }
-struct S {
-  template<typename T> constexpr T f(); // expected-warning {{C++1y}}
-  template<typename T> T g() const;
-};
-
-// explicit specialization can differ in constepxr
-template <> notlit ft(notlit nl) { return nl; }
-template <> char ft(char c) { return c; } // expected-note {{previous}}
-template <> constexpr char ft(char nl); // expected-error {{constexpr declaration of 'ft<char>' follows non-constexpr declaration}}
-template <> constexpr int gt(int nl) { return nl; }
-template <> notlit S::f() const { return notlit(); }
-template <> constexpr int S::g() { return 0; } // expected-note {{previous}} expected-warning {{C++1y}}
-template <> int S::g() const; // expected-error {{non-constexpr declaration of 'g<int>' follows constexpr declaration}}
-// specializations can drop the 'constexpr' but not the implied 'const'.
-template <> char S::g() { return 0; } // expected-error {{no function template matches}}
-template <> double S::g() const { return 0; } // ok
-
-constexpr int i3 = ft(1);
-
-void test() {
-  // ignore constexpr when instantiating with non-literal
-  notlit2 nl2;
-  (void)ft(nl2);
-}
-
-// Examples from the standard:
-constexpr int square(int x); // expected-note {{declared here}}
-constexpr int bufsz = 1024;
-
-constexpr struct pixel { // expected-error {{struct cannot be marked constexpr}}
-  int x;
-  int y;
-  constexpr pixel(int);
-};
-
-constexpr pixel::pixel(int a)
-  : x(square(a)), y(square(a)) // expected-note {{undefined function 'square' cannot be used in a constant expression}}
-  { }
-
-constexpr pixel small(2); // expected-error {{must be initialized by a constant expression}} expected-note {{in call to 'pixel(2)'}}
-
-constexpr int square(int x) {
-  return x * x;
-}
-
-constexpr pixel large(4);
-
-int next(constexpr int x) { // expected-error {{function parameter cannot be constexpr}}
-      return x + 1;
-}
-
-extern constexpr int memsz; // expected-error {{constexpr variable declaration must be a definition}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - | FileCheck %s
-
-// constexpr functions and constexpr constructors are implicitly inline.
-struct S {
-  constexpr S(int n);
-  constexpr int g();
-  int n;
-};
-
-constexpr S::S(int n) : n(n) {}
-
-constexpr S f(S s) {
-  return s.n * 2;
-}
-
-constexpr int S::g() {
-  return f(*this).n;
-}
-
-// CHECK: define linkonce_odr {{.*}} @_Z1f1S(
-// CHECK: define linkonce_odr {{.*}} @_ZN1SC1Ei(
-// CHECK: define linkonce_odr {{.*}} @_ZNK1S1gEv(
-
-int g() {
-  return f(42).g();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,289 +0,0 @@
-// RUN: %clang_cc1 -verify -fcxx-exceptions -triple=x86_64-linux-gnu -std=c++11 -Werror=c++1y-extensions %s
-// RUN: %clang_cc1 -verify -fcxx-exceptions -triple=x86_64-linux-gnu -std=c++1y -DCXX1Y %s
-
-namespace N {
-  typedef char C;
-}
-
-namespace M {
-  typedef double D;
-}
-
-struct NonLiteral { // expected-note 3{{no constexpr constructors}}
-  NonLiteral() {}
-  NonLiteral(int) {}
-};
-struct Literal {
-  constexpr Literal() {}
-  operator int() const { return 0; }
-};
-
-struct S {
-  virtual int ImplicitlyVirtual() const = 0; // expected-note {{overridden virtual function}}
-};
-struct SS : S { 
-  int ImplicitlyVirtual() const;
-};
-
-// The definition of a constexpr function shall satisfy the following
-// constraints:
-struct T : SS, NonLiteral { // expected-note {{base class 'NonLiteral' of non-literal type}}
-  constexpr T();
-  constexpr int f() const; // expected-error {{non-literal type 'T' cannot have constexpr members}}
-
-  //  - it shall not be virtual;
-  virtual constexpr int ExplicitlyVirtual() const { return 0; } // expected-error {{virtual function cannot be constexpr}}
-
-  constexpr int ImplicitlyVirtual() const { return 0; } // expected-error {{virtual function cannot be constexpr}}
-
-  //  - its return type shall be a literal type;
-  constexpr NonLiteral NonLiteralReturn() const { return {}; } // expected-error {{constexpr function's return type 'NonLiteral' is not a literal type}}
-  constexpr void VoidReturn() const { return; }
-#ifndef CXX1Y
-  // expected-error at -2 {{constexpr function's return type 'void' is not a literal type}}
-#endif
-  constexpr ~T(); // expected-error {{destructor cannot be marked constexpr}}
-  typedef NonLiteral F() const;
-  constexpr F NonLiteralReturn2; // ok until definition
-
-  //  - each of its parameter types shall be a literal type;
-  constexpr int NonLiteralParam(NonLiteral) const { return 0; } // expected-error {{constexpr function's 1st parameter type 'NonLiteral' is not a literal type}}
-  typedef int G(NonLiteral) const;
-  constexpr G NonLiteralParam2; // ok until definition
-
-  //  - its function-body shall be = delete, = default,
-  constexpr int Deleted() const = delete;
-  // It's not possible for the function-body to legally be "= default" here
-  // (that is, for a non-constructor function) in C++11.
-  // Other than constructors, only the copy- and move-assignment operators and
-  // destructor can be defaulted. Destructors can't be constexpr since they
-  // don't have a literal return type. Defaulted assignment operators can't be
-  // constexpr since they can't be const.
-  constexpr T &operator=(const T&) = default;
-#ifndef CXX1Y
-  // expected-error at -2 {{an explicitly-defaulted copy assignment operator may not have 'const', 'constexpr' or 'volatile' qualifiers}}
-  // expected-warning at -3 {{C++1y}}
-#endif
-};
-struct U {
-  constexpr U SelfReturn() const;
-  constexpr int SelfParam(U) const;
-};
-
-struct V : virtual U { // expected-note {{here}}
-  constexpr int F() const { return 0; } // expected-error {{constexpr member function not allowed in struct with virtual base class}}
-};
-
-//  or a compound-statememt that contains only [CXX11]
-constexpr int AllowedStmtsCXX11() {
-  //  - null statements
-  ;
-
-  //  - static_assert-declarations
-  static_assert(true, "the impossible happened!");
-
-  //  - typedef declarations and alias-declarations that do not define classes
-  //    or enumerations
-  typedef int I;
-  typedef struct S T;
-  using J = int;
-  using K = int[sizeof(I) + sizeof(J)];
-  // Note, the standard requires we reject this.
-  struct U;
-
-  //  - using-declarations
-  using N::C;
-
-  //  - using-directives
-  using namespace N;
-
-  //  - and exactly one return statement
-  return sizeof(K) + sizeof(C) + sizeof(K);
-}
-
-//  or a compound-statement that does not contain [CXX1Y]
-constexpr int DisallowedStmtsCXX1Y_1() {
-  //  - an asm-definition
-  asm("int3"); // expected-error {{statement not allowed in constexpr function}}
-  return 0;
-}
-constexpr int DisallowedStmtsCXX1Y_2() {
-  //  - a goto statement
-  goto x; // expected-error {{statement not allowed in constexpr function}}
-x:
-  return 0;
-}
-constexpr int DisallowedStmtsCXX1Y_3() {
-  //  - a try-block,
-  try {} catch (...) {} // expected-error {{statement not allowed in constexpr function}}
-  return 0;
-}
-constexpr int DisallowedStmtsCXX1Y_4() {
-  //  - a definition of a variable of non-literal type
-  NonLiteral nl; // expected-error {{variable of non-literal type 'NonLiteral' cannot be defined in a constexpr function}}
-  return 0;
-}
-constexpr int DisallowedStmtsCXX1Y_5() {
-  //  - a definition of a variable of static storage duration
-  static constexpr int n = 123; // expected-error {{static variable not permitted in a constexpr function}}
-  return n;
-}
-constexpr int DisallowedStmtsCXX1Y_6() {
-  //  - a definition of a variable of thread storage duration
-  thread_local constexpr int n = 123; // expected-error {{thread_local variable not permitted in a constexpr function}}
-  return n;
-}
-constexpr int DisallowedStmtsCXX1Y_7() {
-  //  - a definition of a variable for which no initialization is performed
-  int n; // expected-error {{variables defined in a constexpr function must be initialized}}
-  return 0;
-}
-
-constexpr int ForStmt() {
-  for (int n = 0; n < 10; ++n)
-#ifndef CXX1Y
-  // expected-error at -2 {{statement not allowed in constexpr function}}
-#endif
-    return 0;
-}
-constexpr int VarDecl() {
-  int a = 0;
-#ifndef CXX1Y
-  // expected-error at -2 {{variable declaration in a constexpr function is a C++1y extension}}
-#endif
-  return 0;
-}
-constexpr int ConstexprVarDecl() {
-  constexpr int a = 0;
-#ifndef CXX1Y
-  // expected-error at -2 {{variable declaration in a constexpr function is a C++1y extension}}
-#endif
-  return 0;
-}
-constexpr int VarWithCtorDecl() {
-  Literal a;
-#ifndef CXX1Y
-  // expected-error at -2 {{variable declaration in a constexpr function is a C++1y extension}}
-#endif
-  return 0;
-}
-NonLiteral nl;
-constexpr NonLiteral &ExternNonLiteralVarDecl() {
-  extern NonLiteral nl;
-#ifndef CXX1Y
-  // expected-error at -2 {{variable declaration in a constexpr function is a C++1y extension}}
-#endif
-  return nl;
-}
-static_assert(&ExternNonLiteralVarDecl() == &nl, "");
-constexpr int FuncDecl() {
-  constexpr int ForwardDecl(int);
-#ifndef CXX1Y
-  // expected-error at -2 {{use of this statement in a constexpr function is a C++1y extension}}
-#endif
-  return ForwardDecl(42);
-}
-constexpr int ClassDecl1() {
-  typedef struct { } S1;
-#ifndef CXX1Y
-  // expected-error at -2 {{type definition in a constexpr function is a C++1y extension}}
-#endif
-  return 0;
-}
-constexpr int ClassDecl2() {
-  using S2 = struct { };
-#ifndef CXX1Y
-  // expected-error at -2 {{type definition in a constexpr function is a C++1y extension}}
-#endif
-  return 0;
-}
-constexpr int ClassDecl3() {
-  struct S3 { };
-#ifndef CXX1Y
-  // expected-error at -2 {{type definition in a constexpr function is a C++1y extension}}
-#endif
-  return 0;
-}
-constexpr int NoReturn() {} // expected-error {{no return statement in constexpr function}}
-constexpr int MultiReturn() {
-  return 0;
-  return 0;
-#ifndef CXX1Y
-  // expected-error at -2 {{multiple return statements in constexpr function}}
-  // expected-note at -4 {{return statement}}
-#endif
-}
-
-//  - every constructor call and implicit conversion used in initializing the
-//    return value shall be one of those allowed in a constant expression.
-//
-// We implement the proposed resolution of DR1364 and ignore this bullet.
-// However, we implement the spirit of the check as part of the p5 checking that
-// a constexpr function must be able to produce a constant expression.
-namespace DR1364 {
-  constexpr int f(int k) {
-    return k; // ok, even though lvalue-to-rvalue conversion of a function
-              // parameter is not allowed in a constant expression.
-  }
-  int kGlobal; // expected-note {{here}}
-  constexpr int f() { // expected-error {{constexpr function never produces a constant expression}}
-    return kGlobal; // expected-note {{read of non-const}}
-  }
-}
-
-namespace rdar13584715 {
-  typedef __PTRDIFF_TYPE__ ptrdiff_t;
-  
-  template<typename T> struct X {
-    static T value() {};
-  };
-  
-  void foo(ptrdiff_t id) {
-    switch (id) {
-    case reinterpret_cast<ptrdiff_t>(&X<long>::value):  // expected-error{{case value is not a constant expression}} \
-      // expected-note{{reinterpret_cast is not allowed in a constant expression}}
-      break;
-    }
-  }
-}
-
-namespace std_example {
-  constexpr int square(int x) {
-    return x * x;
-  }
-  constexpr long long_max() {
-    return 2147483647;
-  }
-  constexpr int abs(int x) {
-    if (x < 0)
-#ifndef CXX1Y
-      // expected-error at -2 {{C++1y}}
-#endif
-      x = -x;
-    return x;
-  }
-  constexpr int first(int n) {
-    static int value = n; // expected-error {{static variable not permitted}}
-    return value;
-  }
-  constexpr int uninit() {
-    int a; // expected-error {{must be initialized}}
-    return a;
-  }
-  constexpr int prev(int x) {
-    return --x;
-  }
-#ifndef CXX1Y
-  // expected-error at -4 {{never produces a constant expression}}
-  // expected-note at -4 {{subexpression}}
-#endif
-  constexpr int g(int x, int n) {
-    int r = 1;
-    while (--n > 0) r *= x;
-    return r;
-  }
-#ifndef CXX1Y
-    // expected-error at -5 {{C++1y}}
-    // expected-error at -5 {{statement not allowed}}
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,316 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 -fcxx-exceptions -Werror=c++1y-extensions %s
-// RUN: %clang_cc1 -verify -std=c++1y -fcxx-exceptions -DCXX1Y %s
-
-namespace N {
-  typedef char C;
-}
-
-namespace M {
-  typedef double D;
-}
-
-struct NonLiteral { // expected-note 2{{no constexpr constructors}}
-  NonLiteral() {}
-  NonLiteral(int) {}
-};
-struct Literal {
-  constexpr Literal() {}
-  explicit Literal(int); // expected-note 2 {{here}}
-  operator int() const { return 0; }
-};
-
-// In the definition of a constexpr constructor, each of the parameter types
-// shall be a literal type.
-struct S {
-  constexpr S(int, N::C) {}
-  constexpr S(int, NonLiteral, N::C) {} // expected-error {{constexpr constructor's 2nd parameter type 'NonLiteral' is not a literal type}}
-  constexpr S(int, NonLiteral = 42) {} // expected-error {{constexpr constructor's 2nd parameter type 'NonLiteral' is not a literal type}}
-
-  // In addition, either its function-body shall be = delete or = default
-  constexpr S() = default;
-  constexpr S(Literal) = delete;
-};
-
-// or it shall satisfy the following constraints:
-
-// - the class shall not have any virtual base classes;
-struct T : virtual S { // expected-note {{here}}
-  constexpr T() {} // expected-error {{constexpr constructor not allowed in struct with virtual base class}}
-};
-namespace IndirectVBase {
-  struct A {};
-  struct B : virtual A {}; // expected-note {{here}}
-  class C : public B {
-  public:
-    constexpr C() {} // expected-error {{constexpr constructor not allowed in class with virtual base class}}
-  };
-}
-
-// - its function-body shall not be a function-try-block;
-struct U {
-  constexpr U()
-    try // expected-error {{function try block not allowed in constexpr constructor}}
-    : u() {
-  } catch (...) {
-    throw;
-  }
-  int u;
-};
-
-// - the compound-statememt of its function-body shall contain only
-struct V {
-  constexpr V() {
-    //  - null statements,
-    ;
-
-    //  - static_assert-declarations,
-    static_assert(true, "the impossible happened!");
-
-    //  - typedef declarations and alias-declarations that do not define classes
-    //    or enumerations,
-    typedef int I;
-    typedef struct S T;
-    using J = int;
-    using K = int[sizeof(I) + sizeof(J)];
-    // Note, the standard requires we reject this.
-    struct U;
-
-    //  - using-declarations,
-    using N::C;
-
-    //  - and using-directives;
-    using namespace N;
-  }
-
-  constexpr V(int(&)[1]) {
-    for (int n = 0; n < 10; ++n)
-      /**/;
-#ifndef CXX1Y
-    // expected-error at -3 {{statement not allowed in constexpr constructor}}
-#endif
-  }
-  constexpr V(int(&)[2]) {
-    constexpr int a = 0;
-#ifndef CXX1Y
-    // expected-error at -2 {{variable declaration in a constexpr constructor is a C++1y extension}}
-#endif
-  }
-  constexpr V(int(&)[3]) {
-    constexpr int ForwardDecl(int);
-#ifndef CXX1Y
-    // expected-error at -2 {{use of this statement in a constexpr constructor is a C++1y extension}}
-#endif
-  }
-  constexpr V(int(&)[4]) {
-    typedef struct { } S1;
-#ifndef CXX1Y
-    // expected-error at -2 {{type definition in a constexpr constructor is a C++1y extension}}
-#endif
-  }
-  constexpr V(int(&)[5]) {
-    using S2 = struct { };
-#ifndef CXX1Y
-    // expected-error at -2 {{type definition in a constexpr constructor is a C++1y extension}}
-#endif
-  }
-  constexpr V(int(&)[6]) {
-    struct S3 { };
-#ifndef CXX1Y
-    // expected-error at -2 {{type definition in a constexpr constructor is a C++1y extension}}
-#endif
-  }
-  constexpr V(int(&)[7]) {
-    return;
-#ifndef CXX1Y
-    // expected-error at -2 {{use of this statement in a constexpr constructor is a C++1y extension}}
-#endif
-  }
-};
-
-// - every non-static data member and base class sub-object shall be initialized
-struct W {
-  int n; // expected-note {{member not initialized by constructor}}
-  constexpr W() {} // expected-error {{constexpr constructor must initialize all members}}
-};
-struct AnonMembers {
-  int a; // expected-note {{member not initialized by constructor}}
-  union { // expected-note 2{{member not initialized by constructor}}
-    char b;
-    struct {
-      double c;
-      long d; // expected-note {{member not initialized by constructor}}
-    };
-    union {
-      char e;
-      void *f;
-    };
-  };
-  struct { // expected-note {{member not initialized by constructor}}
-    long long g;
-    struct {
-      int h; // expected-note {{member not initialized by constructor}}
-      double i; // expected-note {{member not initialized by constructor}}
-    };
-    union { // expected-note 2{{member not initialized by constructor}}
-      char *j;
-      AnonMembers *k;
-    };
-  };
-
-  constexpr AnonMembers(int(&)[1]) : a(), b(), g(), h(), i(), j() {} // ok
-  // missing d, i, j/k union
-  constexpr AnonMembers(int(&)[2]) : a(), c(), g(), h() {} // expected-error {{constexpr constructor must initialize all members}}
-  constexpr AnonMembers(int(&)[3]) : a(), e(), g(), h(), i(), k() {} // ok
-  // missing h, j/k union
-  constexpr AnonMembers(int(&)[4]) : a(), c(), d(), g(), i() {} // expected-error {{constexpr constructor must initialize all members}}
-  // missing b/c/d/e/f union
-  constexpr AnonMembers(int(&)[5]) : a(), g(), h(), i(), k() {} // expected-error {{constexpr constructor must initialize all members}}
-  // missing a, b/c/d/e/f union, g/h/i/j/k struct
-  constexpr AnonMembers(int(&)[6]) {} // expected-error {{constexpr constructor must initialize all members}}
-};
-
-union Empty {
-  constexpr Empty() {} // ok
-} constexpr empty1;
-
-struct EmptyVariant {
-  union {};
-  struct {};
-  constexpr EmptyVariant() {} // ok
-} constexpr empty2;
-
-template<typename T> using Int = int;
-template<typename T>
-struct TemplateInit {
-  T a;
-  int b; // desired-note {{not initialized}}
-  Int<T> c; // desired-note {{not initialized}}
-  struct {
-    T d;
-    int e; // desired-note {{not initialized}}
-    Int<T> f; // desired-note {{not initialized}}
-  };
-  struct {
-    Literal l;
-    Literal m;
-    Literal n[3];
-  };
-  union { // desired-note {{not initialized}}
-    T g;
-    T h;
-  };
-  // FIXME: This is ill-formed (no diagnostic required). We should diagnose it.
-  constexpr TemplateInit() {} // desired-error {{must initialize all members}}
-};
-template<typename T> struct TemplateInit2 {
-  Literal l;
-  constexpr TemplateInit2() {} // ok
-};
-
-template<typename T> struct weak_ptr {
-  constexpr weak_ptr() : p(0) {}
-  T *p;
-};
-template<typename T> struct enable_shared_from_this {
-  weak_ptr<T> weak_this;
-  constexpr enable_shared_from_this() {} // ok
-};
-constexpr int f(enable_shared_from_this<int>);
-
-// - every constructor involved in initializing non-static data members and base
-//   class sub-objects shall be a constexpr constructor.
-struct ConstexprBaseMemberCtors : Literal {
-  Literal l;
-
-  constexpr ConstexprBaseMemberCtors() : Literal(), l() {} // ok
-  constexpr ConstexprBaseMemberCtors(char) : // expected-error {{constexpr constructor never produces a constant expression}}
-    Literal(0), // expected-note {{non-constexpr constructor}}
-    l() {}
-  constexpr ConstexprBaseMemberCtors(double) : Literal(), // expected-error {{constexpr constructor never produces a constant expression}}
-    l(0) // expected-note {{non-constexpr constructor}}
-  {}
-};
-
-// - every assignment-expression that is an initializer-clause appearing
-//   directly or indirectly within a brace-or-equal-initializer for a non-static
-//   data member that is not named by a mem-initializer-id shall be a constant
-//   expression; and
-//
-// Note, we deliberately do not implement this bullet, so that we can allow the
-// following example. (See N3308).
-struct X {
-  int a = 0;
-  int b = 2 * a + 1; // ok, not a constant expression.
-
-  constexpr X() {}
-  constexpr X(int c) : a(c) {} // ok, b initialized by 2 * c + 1
-};
-
-union XU1 { int a; constexpr XU1() = default; }; // expected-error{{not constexpr}}
-union XU2 { int a = 1; constexpr XU2() = default; };
-
-struct XU3 {
-  union {
-    int a;
-  };
-  constexpr XU3() = default; // expected-error{{not constexpr}}
-};
-struct XU4 {
-  union {
-    int a = 1;
-  };
-  constexpr XU4() = default;
-};
-
-static_assert(XU2().a == 1, "");
-static_assert(XU4().a == 1, "");
-
-//  - every implicit conversion used in converting a constructor argument to the
-//    corresponding parameter type and converting a full-expression to the
-//    corresponding member type shall be one of those allowed in a constant
-//    expression.
-//
-// We implement the proposed resolution of DR1364 and ignore this bullet.
-// However, we implement the intent of this wording as part of the p5 check that
-// the function must be able to produce a constant expression.
-int kGlobal; // expected-note {{here}}
-struct Z {
-  constexpr Z(int a) : n(a) {}
-  constexpr Z() : n(kGlobal) {} // expected-error {{constexpr constructor never produces a constant expression}} expected-note {{read of non-const}}
-  int n;
-};
-
-
-namespace StdExample {
-  struct Length {
-    explicit constexpr Length(int i = 0) : val(i) { }
-  private:
-      int val;
-  };
-}
-
-namespace CtorLookup {
-  // Ensure that we look up which constructor will actually be used.
-  struct A {
-    constexpr A(const A&) {}
-    A(A&) {}
-    constexpr A(int = 0);
-  };
-
-  struct B : A {
-    B() = default;
-    constexpr B(const B&);
-    constexpr B(B&);
-  };
-  constexpr B::B(const B&) = default;
-  constexpr B::B(B&) = default; // expected-error {{not constexpr}}
-
-  struct C {
-    A a;
-    C() = default;
-    constexpr C(const C&);
-    constexpr C(C&);
-  };
-  constexpr C::C(const C&) = default;
-  constexpr C::C(C&) = default; // expected-error {{not constexpr}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,132 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-unknown-unknown -verify -std=c++11 -fcxx-exceptions %s
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-unknown-unknown -std=c++11 -fcxx-exceptions -Wno-invalid-constexpr %s -DNO_INVALID_CONSTEXPR
-
-namespace StdExample {
-
-constexpr int f(void *) { return 0; }
-constexpr int f(...) { return 1; }
-constexpr int g1() { return f(0); }
-constexpr int g2(int n) { return f(n); }
-constexpr int g3(int n) { return f(n*0); }
-
-namespace N {
-  constexpr int c = 5;
-  constexpr int h() { return c; }
-}
-constexpr int c = 0;
-constexpr int g4() { return N::h(); }
-
-static_assert(f(0) == 0, "");
-static_assert(f('0') == 1, "");
-static_assert(g1() == 0, "");
-static_assert(g2(0) == 1, "");
-static_assert(g2(1) == 1, "");
-static_assert(g3(0) == 1, "");
-static_assert(g3(1) == 1, "");
-static_assert(N::h() == 5, "");
-static_assert(g4() == 5, "");
-
-
-constexpr int f(bool b)
-  { return b ? throw 0 : 0; } // ok
-constexpr int f() { return throw 0, 0; } // expected-error {{constexpr function never produces a constant expression}} expected-note {{subexpression}}
-
-struct B {
-  constexpr B(int x) : i(0) { }
-  int i;
-};
-
-int global; // expected-note {{declared here}}
-
-struct D : B {
-  constexpr D() : B(global) { } // expected-error {{constexpr constructor never produces a constant expression}} expected-note {{read of non-const}}
-};
-
-}
-
-namespace PotentialConstant {
-
-constexpr int Comma(int n) { return // expected-error {{constexpr function never produces a constant expression}}
-  (void)(n * 2),
-  throw 0, // expected-note {{subexpression}}
-  0;
-}
-
-int ng; // expected-note 6{{here}}
-constexpr int BinaryOp1(int n) { return n + ng; } // expected-error {{never produces}} expected-note {{read}}
-constexpr int BinaryOp2(int n) { return ng + n; } // expected-error {{never produces}} expected-note {{read}}
-
-double dg; // expected-note 2{{here}}
-constexpr double BinaryOp1(double d) { return d + dg; } // expected-error {{never produces}} expected-note {{read}}
-constexpr double BinaryOp2(double d) { return dg + d; } // expected-error {{never produces}} expected-note {{read}}
-
-constexpr int Add(int a, int b, int c) { return a + b + c; }
-constexpr int FunctionArgs(int a) { return Add(a, ng, a); } // expected-error {{never produces}} expected-note {{read}}
-
-struct S { int a; int b; int c[2]; };
-constexpr S InitList(int a) { return { a, ng }; }; // expected-error {{never produces}} expected-note {{read}}
-constexpr S InitList1a(int a) { return S{ a, ng }; }; // expected-error {{never produces}} expected-note {{read}}
-constexpr S InitList2(int a) { return { a, a, { ng } }; }; // expected-error {{never produces}} expected-note {{read}}
-constexpr S InitList3(int a) { return a ? S{ a, a } : S{ a, ng }; }; // ok
-
-constexpr int LogicalAnd1(int n) { return n && (throw, 0); } // ok
-constexpr int LogicalAnd2(int n) { return 1 && (throw, 0); } // expected-error {{never produces}} expected-note {{subexpression}}
-
-constexpr int LogicalOr1(int n) { return n || (throw, 0); } // ok
-constexpr int LogicalOr2(int n) { return 0 || (throw, 0); } // expected-error {{never produces}} expected-note {{subexpression}}
-
-constexpr int Conditional1(bool b, int n) { return b ? n : ng; } // ok
-constexpr int Conditional2(bool b, int n) { return b ? n * ng : n + ng; } // expected-error {{never produces}} expected-note {{both arms of conditional operator are unable to produce a constant expression}}
-
-// __builtin_constant_p ? : is magical, and is always a potential constant.
-constexpr bool BcpCall(int n) {
-  return __builtin_constant_p((int*)n != &n) ? (int*)n != &n : (int*)n != &n; // expected-warning 3 {{cast to 'int *' from smaller integer type 'int'}}
-}
-static_assert(BcpCall(0), "");
-
-// DR1311: A function template which can produce a constant expression, but
-// for which a particular specialization cannot, is ok.
-template<typename T> constexpr T cmin(T a, T b) {
-  return a < b ? a : b;
-}
-int n = cmin(3, 5); // ok
-
-struct X {
-  constexpr X() {}
-  bool operator<(X); // not constexpr
-};
-
-X x = cmin(X(), X()); // ok, not constexpr
-
-// Same with other temploids.
-template<typename T>
-struct Y {
-  constexpr Y() {}
-  constexpr int get() { return T(); } // expected-warning {{C++1y}}
-};
-struct Z { operator int(); };
-
-int y1 = Y<int>().get(); // ok
-int y2 = Y<Z>().get(); // ok
-
-}
-
-#ifndef NO_INVALID_CONSTEXPR
-namespace PR14550 {
-  // As an "extension", we allow functions which can't produce constant
-  // expressions to be declared constexpr in system headers (libstdc++
-  // marks some functions as constexpr which use builtins which we don't
-  // support constant folding). Ensure that we don't mark those functions
-  // as invalid after suppressing the diagnostic.
-# 122 "p5.cpp" 1 3
-  int n;
-  struct A {
-    static constexpr int f() { return n; }
-  };
-  template<typename T> struct B {
-    B() { g(T::f()); } // expected-error {{undeclared identifier 'g'}}
-  };
-# 130 "p5.cpp" 2
-  template class B<A>; // expected-note {{here}}
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-namespace N {
-  typedef char C;
-}
-
-namespace M {
-  typedef double D;
-}
-
-struct NonLiteral {
-  NonLiteral() {}
-  NonLiteral(int) {} // expected-note 2{{here}}
-  operator int() const { return 0; }
-};
-struct Literal {
-  constexpr Literal() {}
-  operator int() const { return 0; }
-};
-
-struct S {
-  virtual int ImplicitlyVirtual() const;
-};
-struct T {};
-
-template<typename T> struct ImplicitVirtualFromDependentBase : T {
-  constexpr int ImplicitlyVirtual() const { return 0; }
-};
-
-constexpr int a = ImplicitVirtualFromDependentBase<S>().ImplicitlyVirtual(); // expected-error {{constant expression}} expected-note {{cannot evaluate virtual function call}}
-constexpr int b = ImplicitVirtualFromDependentBase<T>().ImplicitlyVirtual(); // ok
-constexpr int c = ImplicitVirtualFromDependentBase<S>().ImplicitVirtualFromDependentBase<S>::ImplicitlyVirtual();
-
-template<typename R> struct ConstexprMember {
-  constexpr R F() const { return 0; }
-};
-constexpr int d = ConstexprMember<int>().F(); // ok
-constexpr int e = ConstexprMember<NonLiteral>().F(); // expected-error {{constant expression}}
-
-template<typename ...P> struct ConstexprCtor {
-  constexpr ConstexprCtor(P...) {}
-};
-constexpr ConstexprCtor<> f1() { return {}; } // ok
-constexpr ConstexprCtor<int> f2() { return 0; } // ok
-constexpr ConstexprCtor<NonLiteral> f3() { return { 0 }; } // expected-error {{never produces a constant expression}} expected-note {{non-constexpr constructor 'NonLiteral}}
-constexpr ConstexprCtor<int, NonLiteral> f4() { return { 0, 0 }; } // expected-error {{never produces a constant expression}} expected-note {{non-constexpr constructor 'NonLiteral}}
-
-struct VirtBase : virtual S {}; // expected-note {{here}}
-
-namespace TemplateVBase {
-  template<typename T> struct T1 : virtual Literal { // expected-note {{here}}
-    constexpr T1() {} // expected-error {{constexpr constructor not allowed in struct with virtual base class}}
-  };
-
-  template<typename T> struct T2 : virtual T {
-    // FIXME: This is ill-formed (no diagnostic required).
-    // We should diagnose it now rather than waiting until instantiation.
-    constexpr T2() {}
-  };
-  constexpr T2<Literal> g2() { return {}; }
-
-  template<typename T> class T3 : public T { // expected-note {{class with virtual base class is not a literal type}}
-  public:
-    constexpr T3() {}
-  };
-  constexpr T3<Literal> g3() { return {}; } // ok
-  constexpr T3<VirtBase> g4() { return {}; } // expected-error {{not a literal type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-using size_t = decltype(sizeof(int));
-
-struct S {
-  constexpr int f(); // expected-warning {{C++1y}}
-  constexpr int g() const;
-  constexpr int h(); // expected-warning {{C++1y}}
-  int h();
-  static constexpr int Sf();
-  /*static*/ constexpr void *operator new(size_t) noexcept;
-  template<typename T> constexpr T tm(); // expected-warning {{C++1y}}
-  template<typename T> static constexpr T ts();
-};
-
-void f(const S &s) {
-  s.f();
-  s.g();
-
-  int (*Sf)() = &S::Sf;
-  int (S::*f)() const = &S::f;
-  int (S::*g)() const = &S::g;
-  void *(*opNew)(size_t) = &S::operator new;
-  int (S::*tm)() const = &S::tm;
-  int (*ts)() = &S::ts;
-}
-
-constexpr int S::f() const { return 0; }
-constexpr int S::g() { return 1; } // expected-warning {{C++1y}}
-constexpr int S::h() { return 0; } // expected-warning {{C++1y}}
-int S::h() { return 0; }
-constexpr int S::Sf() { return 2; }
-constexpr void *S::operator new(size_t) noexcept { return 0; }
-template<typename T> constexpr T S::tm() { return T(); } // expected-warning {{C++1y}}
-template<typename T> constexpr T S::ts() { return T(); }
-
-namespace std_example {
-
-  class debug_flag { // expected-note {{not an aggregate and has no constexpr constructors}}
-  public:
-    explicit debug_flag(bool);
-    constexpr bool is_on() const; // expected-error {{non-literal type 'std_example::debug_flag' cannot have constexpr members}}
-  private:
-    bool flag;
-  };
-
-  constexpr int bar(int x, int y) // expected-note {{here}}
-    { return x + y + x*y; }
-  int bar(int x, int y) // expected-error {{non-constexpr declaration of 'bar' follows constexpr declaration}}
-    { return x * 2 + 3 * y; }
-
-}
-
-// The constexpr specifier is allowed for static member functions of non-literal types.
-class NonLiteralClass {
-  NonLiteralClass(bool);
-  static constexpr bool isDebugFlag();
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// A constexpr specifier used in an object declaration declares the object as
-// const.
-constexpr int a = 0;
-extern const int a;
-
-int i; // expected-note 2{{here}}
-constexpr int *b = &i;
-extern int *const b;
-
-constexpr int &c = i;
-extern int &c;
-
-constexpr int (*d)(int) = 0;
-extern int (*const d)(int);
-
-// A variable declaration which uses the constexpr specifier shall have an
-// initializer and shall be initialized by a constant expression.
-constexpr int ni1; // expected-error {{default initialization of an object of const type 'const int'}}
-constexpr struct C { C(); } ni2; // expected-error {{cannot have non-literal type 'const struct C'}} expected-note 3{{has no constexpr constructors}}
-constexpr double &ni3; // expected-error {{declaration of reference variable 'ni3' requires an initializer}}
-
-constexpr int nc1 = i; // expected-error {{constexpr variable 'nc1' must be initialized by a constant expression}} expected-note {{read of non-const variable 'i' is not allowed in a constant expression}}
-constexpr C nc2 = C(); // expected-error {{cannot have non-literal type 'const C'}}
-int &f(); // expected-note {{declared here}}
-constexpr int &nc3 = f(); // expected-error {{constexpr variable 'nc3' must be initialized by a constant expression}} expected-note {{non-constexpr function 'f' cannot be used in a constant expression}}
-constexpr int nc4(i); // expected-error {{constexpr variable 'nc4' must be initialized by a constant expression}} expected-note {{read of non-const variable 'i' is not allowed in a constant expression}}
-constexpr C nc5((C())); // expected-error {{cannot have non-literal type 'const C'}}
-int &f(); // expected-note {{here}}
-constexpr int &nc6(f()); // expected-error {{constexpr variable 'nc6' must be initialized by a constant expression}} expected-note {{non-constexpr function 'f'}}
-
-struct pixel {
-  int x, y;
-};
-constexpr pixel ur = { 1294, 1024 }; // ok
-constexpr pixel origin;              // expected-error {{default initialization of an object of const type 'const pixel' requires a user-provided default constructor}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-void f0a(void) {
-   inline void f1(); // expected-error {{inline declaration of 'f1' not allowed in block scope}}
-}
-
-void f0b(void) {
-   void f1();
-}
-
-// FIXME: Add test for "If the inline specifier is used in a friend declaration,
-// that declaration shall be a definition or the function shall have previously
-// been declared inline.

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-// XFAIL: *
-
-void f0() {
-}
-
-inline void f0(); // expected-error {{function definition cannot precede inline declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.fct.spec/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-class A {
-public:
-  explicit A();
-  
-  explicit operator int(); // expected-warning {{explicit conversion functions are a C++11 extension}}
-
-  explicit void f0(); // expected-error {{'explicit' can only be applied to a constructor or conversion function}}
-  
-  operator bool();
-};
-
-explicit A::A() { } // expected-error {{'explicit' can only be specified inside the class definition}}
-explicit A::operator bool() { return false; }  // expected-warning {{explicit conversion functions are a C++11 extension}}\
-                                               // expected-error {{'explicit' can only be specified inside the class definition}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// A storage-class-specifier shall not be specified in an explicit
-// specialization (14.7.3) or an explicit instantiation (14.7.2)
-// directive.
-template<typename T> void f(T) {}
-template<typename T> static void g(T) {}
-
-
-template<> static void f<int>(int); // expected-error{{explicit specialization has extraneous, inconsistent storage class 'static'}}
-template static void f<float>(float); // expected-error{{explicit instantiation cannot have a storage class}}
-
-template<> void f<double>(double);
-template void f<long>(long);
-
-template<> static void g<int>(int); // expected-warning{{explicit specialization cannot have a storage class}}
-template static void g<float>(float); // expected-error{{explicit instantiation cannot have a storage class}}
-
-template<> void g<double>(double);
-template void g<long>(long);
-
-template<typename T>
-struct X {
-  static int value;
-};
-
-template<typename T>
-int X<T>::value = 17;
-
-template static int X<int>::value; // expected-error{{explicit instantiation cannot have a storage class}}
-
-template<> static int X<float>::value; // expected-error{{'static' can only be specified inside the class definition}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-// XFAIL: *
-
-typedef const int T0;
-typedef int& T1;
-
-struct s0 {
-  mutable const int f0; // expected-error{{'mutable' and 'const' cannot be mixed}}
-  mutable T0 f1; // expected-error{{'mutable' and 'const' cannot be mixed}}
-  mutable int &f2; // expected-error{{'mutable' cannot be applied to references}}
-  mutable T1 f3; // expected-error{{'mutable' cannot be applied to references}}
-  mutable struct s1 {}; // expected-error{{'mutable' cannot be applied to non-data members}}
-  mutable void im0(); // expected-error{{'mutable' cannot be applied to functions}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-c++0x-compat %s
-
-// The auto or register specifiers can be applied only to names of objects
-// declared in a block (6.3) or to function parameters (8.4).
-
-auto int ao; // expected-error {{illegal storage class on file-scoped variable}}
-auto void af(); // expected-error {{illegal storage class on function}}
-
-register int ro; // expected-error {{illegal storage class on file-scoped variable}}
-register void rf(); // expected-error {{illegal storage class on function}}
-
-struct S {
-  auto int ao; // expected-error {{storage class specified for a member declaration}}
-  auto void af(); // expected-error {{storage class specified for a member declaration}}
-
-  register int ro; // expected-error {{storage class specified for a member declaration}}
-  register void rf(); // expected-error {{storage class specified for a member declaration}}
-};
-
-void foo(auto int ap, register int rp) {
-  auto int abo;
-  auto void abf(); // expected-error {{illegal storage class on function}}
-
-  register int rbo;
-  register void rbf(); // expected-error {{illegal storage class on function}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-struct S; // expected-note 2{{forward declaration of 'S'}}
-extern S a;
-extern S f(); // expected-note {{'f' declared here}}
-extern void g(S a);
-
-void h() {
-  g(a); // expected-error {{argument type 'S' is incomplete}}
-  f(); // expected-error {{calling 'f' with incomplete return type 'S'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s -std=c++11
-
-struct S {
-  virtual ~S();
-
-  void g() throw (auto(*)()->int);
-
-  // Note, this is not permitted: conversion-declarator cannot have a trailing return type.
-  // FIXME: don't issue the second diagnostic for this.
-  operator auto(*)()->int(); // expected-error{{'auto' not allowed in conversion function type}} expected-error {{C++ requires a type specifier}}
-};
-
-typedef auto Fun(int a) -> decltype(a + a);
-typedef auto (*PFun)(int a) -> decltype(a + a);
-
-void g(auto (*f)() -> int) {
-  try { }
-  catch (auto (&f)() -> int) { }
-  catch (auto (*const f[10])() -> int) { }
-}
-
-namespace std {
-  class type_info;
-}
-
-template<typename T> struct U {};
-
-void j() {
-  (void)typeid(auto(*)()->void);
-  (void)sizeof(auto(*)()->void);
-  (void)__alignof(auto(*)()->void);
-
-  U<auto(*)()->void> v;
-
-  int n;
-  (void)static_cast<auto(*)()->void>(&j);
-  auto p = reinterpret_cast<auto(*)()->int>(&j);
-  (void)const_cast<auto(**)()->int>(&p);
-  (void)(auto(*)()->void)(&j);
-}
-
-template <auto (*f)() -> void = &j> class C { };
-struct F : auto(*)()->int {}; // expected-error{{expected class name}}
-template<typename T = auto(*)()->int> struct G { };
-
-int g();
-auto (*h)() -> auto = &g; // expected-error{{'auto' not allowed in function return type}}
-auto (*i)() = &g; // ok; auto deduced as int.
-auto (*k)() -> int = i; // ok; no deduction.

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p3-1y.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p3-1y.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p3-1y.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++1y -DCXX1Y
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 -Wno-c++1y-extensions
-
-// FIXME: This is in p11 (?) in C++1y.
-void f() {
-  decltype(auto) a = a; // expected-error{{variable 'a' declared with 'auto' type cannot appear in its own initializer}}
-  if (decltype(auto) b = b) {} // expected-error {{variable 'b' declared with 'auto' type cannot appear in its own initializer}}
-  decltype(auto) c = ({ decltype(auto) d = c; 0; }); // expected-error {{variable 'c' declared with 'auto' type cannot appear in its own initializer}}
-}
-
-void g() {
-  decltype(auto) a; // expected-error{{declaration of variable 'a' with type 'decltype(auto)' requires an initializer}}
-  
-  decltype(auto) *b; // expected-error{{cannot form pointer to 'decltype(auto)'}} expected-error{{declaration of variable 'b' with type 'decltype(auto) *' requires an initializer}}
-
-  if (decltype(auto) b) {} // expected-error {{must have an initializer}}
-  for (;decltype(auto) b;) {} // expected-error {{must have an initializer}}
-  while (decltype(auto) b) {} // expected-error {{must have an initializer}}
-  if (decltype(auto) b = true) { (void)b; }
-}
-
-decltype(auto) n(1,2,3); // expected-error{{initializer for variable 'n' with type 'decltype(auto)' contains multiple expressions}}
-
-namespace N
-{
-  // All of these are references, because a string literal is an lvalue.
-  decltype(auto) a = "const char (&)[19]", b = a, c = (a);
-}
-
-void h() {
-  decltype(auto) b = 42ULL;
-
-  for (decltype(auto) c = 0; c < b; ++c) {
-  }
-}
-
-template<typename T, typename U> struct same;
-template<typename T> struct same<T, T> {};
-
-void i() {
-  decltype(auto) x = 5;
-  decltype(auto) int r; // expected-error {{cannot combine with previous 'decltype(auto)' declaration specifier}} expected-error {{requires an initializer}}
-}
-
-namespace p3_example {
-  template<typename T, typename U> struct is_same_impl {
-    static const bool value = false;
-  };
-  template<typename T> struct is_same_impl<T, T> {
-    static const bool value = true;
-  };
-  template<typename T, typename U> constexpr bool is_same() {
-    return is_same_impl<T,U>::value;
-  }
-
-  auto x = 5;
-  const auto *v = &x, u = 6;
-  static auto y = 0.0;
-  auto int r;  // expected-warning {{storage class}} expected-error {{file-scope}}
-
-  static_assert(is_same<decltype(x), int>(), "");
-  static_assert(is_same<decltype(v), const int*>(), "");
-  static_assert(is_same<decltype(u), const int>(), "");
-  static_assert(is_same<decltype(y), double>(), "");
-
-#ifdef CXX1Y
-  auto f() -> int;
-  auto g() { return 0.0; }
-  auto h();
-
-  static_assert(is_same<decltype(f), int()>(), "");
-  static_assert(is_same<decltype(g), double()>(), "");
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++11-extensions -Wc++11-compat 
-void f() {
-  auto a = a; // expected-error{{variable 'a' declared with 'auto' type cannot appear in its own initializer}}
-  auto *b = b; // expected-error{{variable 'b' declared with 'auto' type cannot appear in its own initializer}}
-  const auto c = c; // expected-error{{variable 'c' declared with 'auto' type cannot appear in its own initializer}}
-  if (auto d = d) {} // expected-error {{variable 'd' declared with 'auto' type cannot appear in its own initializer}}
-  auto e = ({ auto f = e; 0; }); // expected-error {{variable 'e' declared with 'auto' type cannot appear in its own initializer}}
-}
-
-void g() {
-  auto a; // expected-error{{declaration of variable 'a' with type 'auto' requires an initializer}}
-  
-  auto *b; // expected-error{{declaration of variable 'b' with type 'auto *' requires an initializer}}
-
-  if (auto b) {} // expected-error {{must have an initializer}}
-  for (;auto b;) {} // expected-error {{must have an initializer}}
-  while (auto b) {} // expected-error {{must have an initializer}}
-  if (auto b = true) { (void)b; }
-}
-
-auto n(1,2,3); // expected-error{{initializer for variable 'n' with type 'auto' contains multiple expressions}}
-
-namespace N
-{
-  auto a = "const char [16]", *p = &a;
-}
-
-void h() {
-  auto b = 42ULL;
-
-  for (auto c = 0; c < b; ++c) {
-  }
-}
-
-template<typename T, typename U> struct same;
-template<typename T> struct same<T, T> {};
-
-void p3example() {
-  auto x = 5;
-  const auto *v = &x, u = 6;
-  static auto y = 0.0;
-  // In C++98: 'auto' storage class specifier is redundant and incompatible with C++0x
-  // In C++0x: 'auto' storage class specifier is not permitted in C++0x, and will not be supported in future releases
-  auto int r; // expected-warning {{'auto' storage class specifier}}
-
-  same<__typeof(x), int> xHasTypeInt;
-  same<__typeof(v), const int*> vHasTypeConstIntPtr;
-  same<__typeof(u), const int> uHasTypeConstInt;
-  same<__typeof(y), double> yHasTypeDouble;
-}
-
-#if __cplusplus >= 201103L
-namespace PR13293 {
-  // Ensure that dependent declarators have their deduction delayed.
-  int f(char);
-  double f(short);
-  template<typename T> struct S {
-    static constexpr auto (*p)(T) = &f;
-  };
-
-  constexpr int (*f1)(char) = &f;
-  constexpr double (*f2)(short) = &f;
-  static_assert(S<char>::p == f1, "");
-  static_assert(S<short>::p == f2, "");
-
-  struct K { int n; };
-  template<typename T> struct U {
-    static constexpr auto (T::*p) = &K::n;
-  };
-  static_assert(U<K>::p == &K::n, "");
-
-  template<typename T>
-  using X = auto(int) -> auto(*)(T) -> auto(*)(char) -> long;
-  X<double> x;
-  template<typename T> struct V {
-    //static constexpr auto (*p)(int) -> auto(*)(T) -> auto(*)(char) = &x; // ill-formed
-    static constexpr auto (*(*(*p)(int))(T))(char) = &x; // ok
-  };
-  V<double> v;
-
-  int *g(double);
-  template<typename T> void h() {
-    new (auto(*)(T)) (&g);
-  }
-  template void h<double>();
-}
-#endif
-
-auto fail((unknown)); // expected-error{{use of undeclared identifier 'unknown'}}
-int& crash = fail;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++11-extensions
-
-template<typename T>
-struct only {
-  only(T);
-  template<typename U> only(U) = delete;
-};
-
-void f() {
-  if (auto a = true) {
-  }
-
-  switch (auto a = 0) {
-  }
-
-  while (auto a = false) {
-  }
-
-  for (; auto a = false; ) {
-  }
-
-  new const auto (0);
-  new (auto) (0.0);
-
-  int arr[] = {1, 2, 3};
-  for (auto i : arr) {
-  }
-}
-
-class X {
-  static const auto n = 'x';
-
-  auto m = 0; // expected-error {{'auto' not allowed in non-static class member}}
-};
-
-struct S {
-  static const auto a; // expected-error {{declaration of variable 'a' with type 'auto const' requires an initializer}}
-  static const auto b = 0;
-  static const int c;
-};
-const int S::b;
-const auto S::c = 0;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s -std=c++11
-
-struct S {
-  virtual ~S();
-
-  auto a; // expected-error{{'auto' not allowed in non-static struct member}}
-  auto *b; // expected-error{{'auto' not allowed in non-static struct member}}
-  const auto c; // expected-error{{'auto' not allowed in non-static struct member}}
-
-  void f() throw (auto); // expected-error{{'auto' not allowed here}}
-
-  friend auto; // expected-error{{'auto' not allowed in non-static struct member}}
-
-  operator auto(); // expected-error{{'auto' not allowed in conversion function type}}
-};
-
-// PR 9278: auto is not allowed in typedefs, except with a trailing return type.
-typedef auto *AutoPtr; // expected-error{{'auto' not allowed in typedef}}
-typedef auto (*PFun)(int a); // expected-error{{'auto' not allowed in typedef}}
-typedef auto Fun(int a) -> decltype(a + a);
-
-void g(auto a) { // expected-error{{'auto' not allowed in function prototype}}
-  try { }
-  catch (auto &a) { } // expected-error{{'auto' not allowed in exception declaration}}
-  catch (const auto a) { } // expected-error{{'auto' not allowed in exception declaration}}
-  try { } catch (auto a) { } // expected-error{{'auto' not allowed in exception declaration}}
-}
-
-void h(auto a[10]) { // expected-error{{'auto' not allowed in function prototype}}
-}
-
-void i(const auto a) { // expected-error{{'auto' not allowed in function prototype}}
-}
-
-namespace std {
-  class type_info;
-}
-
-template<typename T> struct U {};
-
-void j() {
-  (void)typeid(auto); // expected-error{{'auto' not allowed here}}
-  (void)sizeof(auto); // expected-error{{'auto' not allowed here}}
-  (void)__alignof(auto); // expected-error{{'auto' not allowed here}}
-
-  U<auto> v; // expected-error{{'auto' not allowed in template argument}}
-
-  int n;
-  (void)dynamic_cast<auto&>(n); // expected-error{{'auto' not allowed here}}
-  (void)static_cast<auto*>(&n); // expected-error{{'auto' not allowed here}}
-  (void)reinterpret_cast<auto*>(&n); // expected-error{{'auto' not allowed here}}
-  (void)const_cast<auto>(n); // expected-error{{'auto' not allowed here}}
-  (void)*(auto*)(&n); // expected-error{{'auto' not allowed here}}
-  (void)auto(n); // expected-error{{expected expression}}
-  (void)auto{n}; // expected-error{{expected expression}}
-}
-
-template <auto a = 10> class C { }; // expected-error{{'auto' not allowed in template parameter}}
-int ints[] = {1, 2, 3};
-template <const auto (*a)[3] = &ints> class D { }; // expected-error{{'auto' not allowed in template parameter}}
-enum E : auto {}; // expected-error{{'auto' not allowed here}}
-struct F : auto {}; // expected-error{{expected class name}}
-template<typename T = auto> struct G { }; // expected-error{{'auto' not allowed in template argument}}
-
-using A = auto; // expected-error{{'auto' not allowed in type alias}}
-
-auto k() -> auto; // expected-error{{'auto' not allowed in function return type}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6-1y.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6-1y.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6-1y.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++1y %s
-
-namespace std {
-  template<typename T> struct initializer_list {
-    const T *p;
-    unsigned long n;
-    initializer_list(const T *p, unsigned long n);
-  };
-}
-
-// FIXME: This may not be p6 in C++1y; N3638 isn't very clear whether paragraphs
-// were added. It might be p8?
-
-int i;
-int &&f();
-
-using Int = int;
-using IntLRef = int&;
-using IntRRef = int&&;
-using InitListInt = std::initializer_list<int>;
-using IntPtr = int*;
-
-auto x3a = i;
-decltype(auto) x3d = i;
-using Int = decltype(x3a);
-using Int = decltype(x3d);
-
-auto x4a = (i);
-decltype(auto) x4d = (i);
-using Int = decltype(x4a);
-using IntLRef = decltype(x4d);
-
-auto x5a = f();
-decltype(auto) x5d = f();
-using Int = decltype(x5a);
-using IntRRef = decltype(x5d);
-
-auto x6a = { 1, 2 };
-decltype(auto) x6d = { 1, 2 }; // expected-error {{cannot deduce 'decltype(auto)' from initializer list}}
-using InitListInt = decltype(x6a);
-
-auto *x7a = &i;
-decltype(auto) *x7d = &i; // expected-error {{cannot form pointer to 'decltype(auto)'}}
-using IntPtr = decltype(x7a);
-
-struct S {};
-
-decltype(auto) f1();
-decltype(auto) (*f2)(); // expected-error {{'decltype(auto)' can only be used as a return type in a function declaration}} expected-error {{requires an initializer}}
-decltype(auto) *f3(); // expected-error {{cannot form pointer to 'decltype(auto)'}}
-const decltype(auto) f4(); // expected-error {{'decltype(auto)' cannot be combined with other type specifiers}}
-typedef decltype(auto) f5(); // expected-error {{'decltype(auto)' can only be used as a return type in a function declaration}}
-decltype(auto) ((((((f6))))())); // ok
-decltype(auto) f7()(); // expected-error {{'decltype(auto)' can only be used as a return type in a function declaration}} expected-error {{function cannot return function type}}
-decltype(auto) (S::*f8)(); // expected-error {{'decltype(auto)' can only be used as a return type in a function declaration}} expected-error {{requires an initializer}}
-decltype(auto) &f9(); // expected-error {{cannot form reference to 'decltype(auto)'}}
-decltype(auto) (&f10())[10]; // expected-error {{cannot form array of 'decltype(auto)'}}
-
-decltype(auto) ((((((v1)))))) = 0; // ok
-decltype(auto) v2[1] = { 0 }; // expected-error {{cannot form array of 'decltype(auto)'}}
-decltype(auto) &v3 = { 0 }; // expected-error {{cannot form reference to 'decltype(auto)'}}
-decltype(auto) *v4 = { 0 }; // expected-error {{cannot form pointer to 'decltype(auto)'}}
-
-auto multi1a = 0, &multi1b = multi1a;
-auto multi1c = multi1a, multi1d = multi1b;
-decltype(auto) multi1e = multi1a, multi1f = multi1b; // expected-error {{'decltype(auto)' deduced as 'int' in declaration of 'multi1e' and deduced as 'int &' in declaration of 'multi1f'}}
-
-auto f1a() { return 0; }
-decltype(auto) f1d() { return 0; }
-using Int = decltype(f1a());
-using Int = decltype(f1d());
-
-auto f2a(int n) { return n; }
-decltype(auto) f2d(int n) { return n; }
-using Int = decltype(f2a(0));
-using Int = decltype(f2d(0));
-
-auto f3a(int n) { return (n); }
-decltype(auto) f3d(int n) { return (n); } // expected-warning {{reference to stack memory}}
-using Int = decltype(f3a(0));
-using IntLRef = decltype(f3d(0));
-
-auto f4a(int n) { return f(); }
-decltype(auto) f4d(int n) { return f(); }
-using Int = decltype(f4a(0));
-using IntRRef = decltype(f4d(0));
-
-auto f5aa(int n) { auto x = f(); return x; }
-auto f5ad(int n) { decltype(auto) x = f(); return x; }
-decltype(auto) f5da(int n) { auto x = f(); return x; }
-decltype(auto) f5dd(int n) { decltype(auto) x = f(); return x; } // expected-error {{rvalue reference to type 'int' cannot bind to lvalue}}
-using Int = decltype(f5aa(0));
-using Int = decltype(f5ad(0));
-using Int = decltype(f5da(0));
-
-auto init_list_1() { return { 1, 2, 3 }; } // expected-error {{cannot deduce return type from initializer list}}
-decltype(auto) init_list_2() { return { 1, 2, 3 }; } // expected-error {{cannot deduce return type from initializer list}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++11-extensions
-
-template<typename T>
-struct only {
-  only(T);
-  template<typename U> only(U) = delete;
-};
-
-namespace N
-{
-  auto a = "const char [16]", *p = &a;
-
-  only<const char [16]> testA = a;
-  only<const char **> testP = p;
-}
-
-void h() {
-  auto b = 42ULL;
-  only<unsigned long long> testB = b;
-
-  for (auto c = 0; c < 100; ++c) {
-    only<int> testC = c;
-  }
-}
-
-void p3example() {
-  auto x = 5;
-  const auto *v = &x, u = 6;
-  static auto y = 0.0;
-
-  only<int> testX = x;
-  only<const int*> testV = v;
-  only<const int> testU = u;
-  only<double> testY = y;
-}
-
-void f() {
-  if (auto a = true) {
-    only<bool> testA = a;
-  }
-
-  switch (auto a = 0) {
-  case 0:
-    only<int> testA = a;
-  }
-
-  while (auto a = false) {
-    only<bool> testA = a;
-  }
-
-  for (; auto a = "test"; ) {
-    only<const char[5]> testA = a;
-  }
-
-  auto *fail1 = 0; // expected-error {{variable 'fail1' with type 'auto *' has incompatible initializer of type 'int'}}
-  int **p;
-  const auto **fail2(p); // expected-error {{variable 'fail2' with type 'auto const **' has incompatible initializer of type 'int **'}}
-}
-
-struct S {
-  void f();
-  char g(int);
-  float g(double);
-  int m;
-
-  void test() {
-    auto p1 = &S::f;
-    auto S::*p2 = &S::f;
-    auto (S::*p3)() = &S::f;
-    auto p4 = &S::g; // expected-error {{incompatible initializer of type '<overloaded function type>'}}
-    auto S::*p5 = &S::g; // expected-error {{incompatible initializer of type '<overloaded function type>'}}
-    auto (S::*p6)(int) = &S::g;
-    auto p7 = &S::m;
-    auto S::*p8 = &S::m;
-
-    only<void (S::*)()> test1 = p1;
-    only<void (S::*)()> test2 = p2;
-    only<void (S::*)()> test3 = p3;
-    only<char (S::*)(int)> test6 = p6;
-    only<int (S::*)> test7 = p7;
-    only<int (S::*)> test8 = p8;
-  }
-};
-
-namespace PR10939 {
-  struct X {
-    int method(int);
-    int method(float); 
-  };
-
-  template<typename T> T g(T);
-
-  void f(X *x) {
-    auto value = x->method; // expected-error {{reference to non-static member function must be called}}
-    if (value) { }
-
-    auto funcptr = &g<int>;
-    int (*funcptr2)(int) = funcptr;
-  }
-}
-
-// if the initializer is a braced-init-list, deduce auto as std::initializer_list<T>:
-// see SemaCXX/cxx0x-initializer-stdinitializerlist.cpp

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++11-extensions
-void f() {
-  auto a = 0, b = 0, c = 0;
-  auto d = 0, e = 0.0; // expected-error {{'int' in declaration of 'd' and deduced as 'double' in declaration of 'e'}}
-
-  auto v1 = 0, *p1 = &v1;
-  auto *p2 = 0, v2 = *p2; // expected-error {{incompatible initializer}}
-
-  const int k = 0;
-  auto &f = k, &g = a; // expected-error {{'const int' in declaration of 'f' and deduced as 'int' in declaration of 'g'}}
-
-  typedef int I;
-  I x;
-  auto xa = x, xb = 0;
-
-  auto &&ra1 = a, rb1 = b; // expected-error {{'int &' in declaration of 'ra1' and deduced as 'int' in declaration of 'rb1'}}
-  auto &&ra2 = +a, rb2 = b;
-}
-
-void g() {
-  auto a = 0,
-#if __has_feature(cxx_trailing_return)
-       (*b)() -> void,
-#endif
-       c = 0;
-  auto d = 0, // expected-error {{'auto' deduced as 'int' in declaration of 'd' and deduced as 'double' in declaration of 'f'}}
-#if __has_feature(cxx_trailing_return)
-       (*e)() -> void,
-#endif
-       f = 0.0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct A { typedef int type; };
-template<typename T> using X = A; // expected-note {{declared here}}
-struct X<int>* p2; // expected-error {{elaborated type refers to a type alias template}}
-
-
-template<typename T> using Id = T; // expected-note {{declared here}}
-template<template<typename> class F>
-struct Y {
-  struct F<int> i; // expected-error {{elaborated type refers to a type alias template}}
-  typename F<A>::type j; // ok
-
-  // FIXME: don't produce the diagnostic both for the definition and the instantiation.
-  template<typename T> using U = F<char>; // expected-note 2{{declared here}}
-  struct Y<F>::template U<char> k; // expected-error 2{{elaborated type refers to a type alias template}}
-  typename Y<F>::template U<char> l; // ok
-};
-template struct Y<Id>; // expected-note {{requested here}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class A {}; // expected-note 4 {{previous use is here}}
-enum E {};
-
-void a1(struct A);
-void a2(class A);
-void a3(union A); // expected-error {{use of 'A' with tag type that does not match previous declaration}}
-void a4(enum A); // expected-error {{use of 'A' with tag type that does not match previous declaration}}
-
-class A1 {
-  friend struct A;
-  friend class A;
-  friend union A; // expected-error {{use of 'A' with tag type that does not match previous declaration}}
-
-  friend enum A; // expected-error {{use of 'A' with tag type that does not match previous declaration}}
-  friend enum E; // expected-warning {{cannot be a friend}}
-};
-
-template <class T> struct B { // expected-note {{previous use is here}}
-  class Member {}; // expected-note 2 {{previous use is here}}
-};
-
-template <> class B<int> {
-  // no type Member
-};
-
-template <> struct B<A> {
-  union Member { // expected-note 4 {{previous use is here}}
-    void* a;
-  };
-};
-
-void b1(struct B<float>);
-void b2(class B<float>);
-void b3(union B<float>); // expected-error {{use of 'B<float>' with tag type that does not match previous declaration}}
-//void b4(enum B<float>); // this just doesn't parse; you can't template an enum directly
-
-void c1(struct B<float>::Member);
-void c2(class B<float>::Member);
-void c3(union B<float>::Member); // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
-void c4(enum B<float>::Member); // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
-
-void d1(struct B<int>::Member); // expected-error {{no struct named 'Member' in 'B<int>'}}
-void d2(class B<int>::Member); // expected-error {{no class named 'Member' in 'B<int>'}}
-void d3(union B<int>::Member); // expected-error {{no union named 'Member' in 'B<int>'}}
-void d4(enum B<int>::Member); // expected-error {{no enum named 'Member' in 'B<int>'}}
-
-void e1(struct B<A>::Member); // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
-void e2(class B<A>::Member); // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
-void e3(union B<A>::Member);
-void e4(enum B<A>::Member); // expected-error {{use of 'Member' with tag type that does not match previous declaration}}
-
-template <class T> struct C {
-  void foo(class B<T>::Member); // expected-error{{no class named 'Member' in 'B<int>'}} \
-                                // expected-error{{use of 'Member' with tag type that does not match previous declaration}}
-};
-
-C<float> f1;
-C<int> f2; // expected-note {{in instantiation of template class}}
-C<A> f3; // expected-note {{in instantiation of template class}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p4-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p4-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p4-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-const int&& foo();
-int i;
-struct A { double x; };
-const A* a = new A();
-
-static_assert(is_same<decltype(foo()), const int&&>::value, "");
-static_assert(is_same<decltype(i), int>::value, "");
-static_assert(is_same<decltype(a->x), double>::value, "");
-static_assert(is_same<decltype((a->x)), const double&>::value, "");
-static_assert(is_same<decltype(static_cast<int&&>(i)), int&&>::value, "");
-
-int f0(int); // expected-note{{possible target}}
-float f0(float); // expected-note{{possible target}}
-
-decltype(f0) f0_a; // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-namespace std_example {
-
-template<class T> struct A { ~A() = delete; }; // expected-note {{deleted here}}
-template<class T> auto h() -> A<T>;
-template<class T> auto i(T) -> T;
-template<class T> auto f(T) -> decltype(i(h<T>())); // #1
-template<class T> auto f(T) -> void; // #2
-auto g() -> void {
-  f(42); // ok, calls #2, since #1 is not viable.
-}
-template<class T> auto q(T) -> decltype((h<T>()));
-void r() {
-  // Deduction against q succeeds, but results in a temporary which can't be
-  // destroyed.
-  q(42); // expected-error {{attempt to use a deleted function}}
-}
-
-}
-
-class PD {
-  friend struct A;
-  ~PD(); // expected-note 5{{here}}
-public:
-  typedef int n;
-};
-struct DD {
-  ~DD() = delete; // expected-note 2{{here}}
-  typedef int n;
-};
-
-struct A {
-  decltype(PD()) s; // ok
-  decltype(PD())::n n; // ok
-  decltype(DD()) *p = new decltype(DD()); // ok
-};
-
-// Two errors here: one for the decltype, one for the variable.
-decltype(
-    PD(), // expected-error {{private destructor}}
-    PD()) pd1; // expected-error {{private destructor}}
-decltype(DD(), // expected-error {{deleted function}}
-         DD()) dd1;
-decltype(A(),
-         DD()) dd2; // expected-error {{deleted function}}
-decltype(
-    PD(), // expected-error {{temporary of type 'PD' has private destructor}}
-    0) pd2;
-
-decltype(((13, ((DD())))))::n dd_parens; // ok
-decltype(((((42)), PD())))::n pd_parens_comma; // ok
-
-// Ensure parens aren't stripped from a decltype node.
-extern decltype(PD()) pd_ref; // ok
-decltype((pd_ref)) pd_ref3 = pd_ref; // ok, PD &
-decltype(pd_ref) pd_ref2 = pd_ref; // expected-error {{private destructor}}
-
-namespace libcxx_example {
-  struct nat {
-    nat() = delete;
-    nat(const nat&) = delete;
-    nat &operator=(const nat&) = delete;
-    ~nat() = delete;
-  };
-  struct any {
-    any(...);
-  };
-
-  template<typename T, typename U> struct is_same { static const bool value = false; };
-  template<typename T> struct is_same<T, T> { static const bool value = true; };
-
-  template<typename T> T declval();
-
-  void swap(int &a, int &b);
-  nat swap(any, any);
-
-  template<typename T> struct swappable {
-    typedef decltype(swap(declval<T&>(), declval<T&>())) type;
-    static const bool value = !is_same<type, nat>::value;
-    constexpr operator bool() const { return value; }
-  };
-
-  static_assert(swappable<int>(), "");
-  static_assert(!swappable<const int>(), "");
-}
-
-namespace RequireCompleteType {
-  template<int N, bool OK> struct S {
-    static_assert(OK, "boom!"); // expected-error 2{{boom!}}
-  };
-
-  template<typename T> T make();
-  template<int N, bool OK> S<N, OK> make();
-  void consume(...);
-
-  decltype(make<0, false>()) *p1; // ok
-  decltype((make<1, false>())) *p2; // ok
-
-  // A complete type is required here in order to detect an overloaded 'operator,'.
-  decltype(123, make<2, false>()) *p3; // expected-note {{here}}
-
-  decltype(consume(make<3, false>())) *p4; // expected-note {{here}}
-
-  decltype(make<decltype(make<4, false>())>()) *p5; // ok
-}
-
-namespace Overload {
-  DD operator+(PD &a, PD &b);
-  decltype(PD()) *pd_ptr;
-  decltype(*pd_ptr + *pd_ptr) *dd_ptr; // ok
-
-  decltype(0, *pd_ptr) pd_ref2 = pd_ref; // ok
-  DD operator,(int a, PD b);
-  decltype(0, *pd_ptr) *dd_ptr2; // expected-error {{private destructor}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s -fcxx-exceptions
-
-using X = struct { // ok
-};
-template<typename T> using Y = struct { // expected-error {{can not be defined in a type alias template}}
-};
-
-class K {
-  virtual ~K();
-  operator struct S {} (); // expected-error{{'K::S' can not be defined in a type specifier}}
-};
-
-struct A {};
-
-void f() {
-  int arr[3] = {1,2,3};
-
-  for (struct S { S(int) {} } s : arr) { // expected-error {{types may not be defined in a for range declaration}}
-  }
-
-  new struct T {}; // expected-error {{'T' can not be defined in a type specifier}}
-  new struct A {}; // expected-error {{'A' can not be defined in a type specifier}}
-
-  try {} catch (struct U {}) {} // expected-error {{'U' can not be defined in a type specifier}}
-
-  (void)(struct V { V(int); })0; // expected-error {{'V' can not be defined in a type specifier}}
-
-  (void)dynamic_cast<struct W {}*>((K*)0); // expected-error {{'W' can not be defined in a type specifier}}
-  (void)static_cast<struct X {}*>(0); // expected-error {{'X' can not be defined in a type specifier}}
-  (void)reinterpret_cast<struct Y {}*>(0); // expected-error {{'Y' can not be defined in a type specifier}}
-  (void)const_cast<struct Z {}*>((const Z*)0); // expected-error {{'Z' can not be defined in a type specifier}}
-}
-
-void g() throw (struct Ex {}) { // expected-error {{'Ex' can not be defined in a type specifier}}
-}
-
-alignas(struct Aa {}) int x; // expected-error {{'Aa' can not be defined in a type specifier}}
-
-int a = sizeof(struct So {}); // expected-error {{'So' can not be defined in a type specifier}}
-int b = alignof(struct Ao {}); // expected-error {{'Ao' can not be defined in a type specifier}}
-
-namespace std { struct type_info; }
-const std::type_info &ti = typeid(struct Ti {}); // expected-error {{'Ti' can not be defined in a type specifier}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,158 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-namespace RedeclAliasTypedef {
-  typedef int T;
-  using T = int;
-  using T = int;
-  typedef T T;
-  using T = T;
-  typedef int T;
-}
-
-namespace IllegalTypeIds {
-  using A = void(int n = 0); // expected-error {{default arguments can only be specified for parameters in a function declaration}}
-  using B = inline void(int n); // expected-error {{type name does not allow function specifier}}
-  using C = virtual void(int n); // expected-error {{type name does not allow function specifier}}
-  using D = explicit void(int n); // expected-error {{type name does not allow function specifier}}
-  using E = void(int n) throw(); // expected-error {{exception specifications are not allowed in type aliases}}
-  using F = void(*)(int n) &&; // expected-error {{pointer to function type cannot have '&&' qualifier}}
-  using G = __thread void(int n); // expected-error {{type name does not allow storage class to be specified}}
-  using H = constexpr int; // expected-error {{type name does not allow constexpr specifier}}
-
-  using Y = void(int n); // ok
-  using Z = void(int n) &&; // ok
-}
-
-namespace IllegalSyntax {
-  using ::T = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-  using operator int = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-  using typename U = void; // expected-error {{name defined in alias declaration must be an identifier}}
-  using typename ::V = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-  using typename ::operator bool = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-}
-
-namespace VariableLengthArrays {
-  using T = int[42]; // ok
-
-  int n = 32;
-  using T = int[n]; // expected-error {{variable length array declaration not allowed at file scope}}
-
-  const int m = 42;
-  using U = int[m]; // expected-note {{previous definition}}
-  using U = int[42]; // ok
-  using U = int; // expected-error {{type alias redefinition with different types ('int' vs 'int [42]')}}
-
-  void f() {
-    int n = 42;
-    goto foo; // expected-error {{goto into protected scope}}
-    using T = int[n]; // expected-note {{bypasses initialization of VLA type alias}}
-  foo: ;
-  }
-}
-
-namespace RedeclFunc {
-  int f(int, char**);
-  using T = int;
-  T f(int, char **); // ok
-}
-
-namespace LookupFilter {
-  namespace N { struct S; }
-  using namespace N;
-  using S = S*; // ok
-}
-
-namespace InFunctions {
-  template<typename...T> void f0() {
-    using U = T*; // expected-error {{declaration type contains unexpanded parameter pack 'T'}}
-    U u;
-  }
-  template void f0<int, char>();
-
-  void f1() {
-    using T = int;
-  }
-  void f2() {
-    using T = int[-1]; // expected-error {{array size is negative}}
-  }
-
-  template<typename...T> void f3() { // expected-note {{template parameter is declared here}}
-    using T = int; // expected-error {{declaration of 'T' shadows template parameter}}
-  }
-}
-
-namespace ClassNameRedecl {
-  class C0 {
-    // FIXME: this diagnostic is pretty poor
-    using C0 = int; // expected-error {{name defined in alias declaration must be an identifier}}
-  };
-  class C1 {
-    // FIXME: this diagnostic is pretty poor
-    using C1 = C1; // expected-error {{name defined in alias declaration must be an identifier}}
-  };
-  class C2 {
-    using C0 = C1; // ok
-  };
-  template<typename...T> class C3 {
-    using f = T; // expected-error {{declaration type contains unexpanded parameter pack 'T'}}
-  };
-  template<typename T> class C4 { // expected-note {{template parameter is declared here}}
-    using T = int; // expected-error {{declaration of 'T' shadows template parameter}}
-  };
-  class C5 {
-    class c; // expected-note {{previous definition}}
-    using c = int; // expected-error {{typedef redefinition with different types}}
-    class d;
-    using d = d; // ok
-  };
-  class C6 {
-    class c { using C6 = int; }; // ok
-  };
-}
-
-class CtorDtorName {
-  using X = CtorDtorName;
-  X(); // expected-error {{expected member name}}
-  ~X(); // expected-error {{destructor cannot be declared using a type alias}}
-};
-
-namespace TagName {
-  using S = struct { int n; };
-  using T = class { int n; };
-  using U = enum { a, b, c };
-  using V = struct V { int n; };
-}
-
-namespace CWG1044 {
-  using T = T; // expected-error {{unknown type name 'T'}}
-}
-
-namespace StdExample {
-  template<typename T, typename U> struct pair;
-
-  using handler_t = void (*)(int);
-  extern handler_t ignore;
-  extern void (*ignore)(int);
-  // FIXME: we know we're parsing a type here; don't recover as if we were
-  // using operator*.
-  using cell = pair<void*, cell*>; // expected-error {{use of undeclared identifier 'cell'}} \
-                                      expected-error {{expected expression}}
-}
-
-namespace Access {
-  class C0 {
-    using U = int; // expected-note {{declared private here}}
-  };
-  C0::U v; // expected-error {{'U' is a private member}}
-  class C1 {
-  public:
-    using U = int;
-  };
-  C1::U w; // ok
-}
-
-namespace VoidArg {
-  using V = void;
-  V f(int); // ok
-  V g(V); // expected-error {{empty parameter list defined with a type alias of 'void' not allowed}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-typedef struct s { int x; } s;
-typedef int I;
-typedef int I2;
-typedef I2 I; // expected-note {{previous definition is here}}
-
-typedef char I; // expected-error {{typedef redefinition with different types}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-struct S {
-  typedef struct A {} A; // expected-note {{previous definition is here}}
-  typedef struct B B;
-  typedef A A; // expected-error {{redefinition of 'A'}}
-
-  struct C { };
-  typedef struct C OtherC;
-  typedef OtherC C;
-
-  typedef struct D { } D2;
-  typedef D2 D;
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/p4-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/p4-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.dcl/p4-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify -fsyntax-only %s
-
-struct S {
-  constexpr S(bool b) : b(b) {}
-  constexpr explicit operator bool() const { return b; }
-  bool b;
-};
-struct T {
-  constexpr operator int() const { return 1; }
-};
-struct U {
-  constexpr operator int() const { return 1; } // expected-note {{candidate}}
-  constexpr operator long() const { return 0; } // expected-note {{candidate}}
-};
-
-static_assert(S(true), "");
-static_assert(S(false), "not so fast"); // expected-error {{not so fast}}
-static_assert(T(), "");
-static_assert(U(), ""); // expected-error {{ambiguous}}
-
-static_assert(false, L"\x14hi" "!" R"x(")x"); // expected-error {{static_assert failed L"\024hi!\""}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -verify %s -std=c++11
-
-// A function that is explicitly defaulted shall
-struct A {
-  // -- be a special member function,
-  A(int) = default; // expected-error {{only special member functions may be defaulted}}
-
-  // -- have the same declared function type as if it had been implicitly
-  //    declared
-  void operator=(const A &) = default; // expected-error {{must return 'A &'}}
-  A(...) = default; // expected-error {{cannot be variadic}}
-  A(const A &, ...) = default; // expected-error {{cannot be variadic}}
-
-  //    (except for possibly differing ref-qualifiers
-  A &operator=(A &&) & = default;
-
-  //    and except that in the case of a copy constructor or copy assignment
-  //    operator, the parameter type may be "reference to non-const T")
-  A(A &) = default;
-  A &operator=(A &) = default;
-
-  // -- not have default arguments
-  A(double = 0.0) = default; // expected-error {{cannot have default arguments}}
-  A(const A & = 0) = default; // expected-error {{cannot have default arguments}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,124 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -fcxx-exceptions %s
-
-// An explicitly-defaulted function may be declared constexpr only if it would
-// have been implicitly declared as constexpr.
-struct S1 {
-  constexpr S1() = default; // expected-error {{defaulted definition of default constructor is not constexpr}}
-  constexpr S1(const S1&) = default;
-  constexpr S1(S1&&) = default;
-  constexpr S1 &operator=(const S1&) const = default; // expected-error {{explicitly-defaulted copy assignment operator may not have}}
-  constexpr S1 &operator=(S1&&) const = default; // expected-error {{explicitly-defaulted move assignment operator may not have}}
-  constexpr ~S1() = default; // expected-error {{destructor cannot be marked constexpr}}
-  int n;
-};
-struct NoCopyMove {
-  constexpr NoCopyMove() {}
-  NoCopyMove(const NoCopyMove&);
-  NoCopyMove(NoCopyMove&&);
-};
-struct S2 {
-  constexpr S2() = default;
-  constexpr S2(const S2&) = default; // expected-error {{defaulted definition of copy constructor is not constexpr}}
-  constexpr S2(S2&&) = default; // expected-error {{defaulted definition of move constructor is not constexpr}}
-  NoCopyMove ncm;
-};
-
-// If a function is explicitly defaulted on its first declaration
-//   -- it is implicitly considered to be constexpr if the implicit declaration
-//      would be
-struct S3 {
-  S3() = default;
-  S3(const S3&) = default;
-  S3(S3&&) = default;
-  constexpr S3(int n) : n(n) {}
-  int n;
-};
-constexpr S3 s3a = S3(0);
-constexpr S3 s3b = s3a;
-constexpr S3 s3c = S3();
-constexpr S3 s3d; // expected-error {{default initialization of an object of const type 'const S3' requires a user-provided default constructor}}
-
-struct S4 {
-  S4() = default;
-  S4(const S4&) = default; // expected-note {{here}}
-  S4(S4&&) = default; // expected-note {{here}}
-  NoCopyMove ncm;
-};
-constexpr S4 s4a{}; // ok
-constexpr S4 s4b = S4(); // expected-error {{constant expression}} expected-note {{non-constexpr constructor}}
-constexpr S4 s4c = s4a; // expected-error {{constant expression}} expected-note {{non-constexpr constructor}}
-
-struct S5 {
-  constexpr S5();
-  int n = 1, m = n + 3;
-};
-constexpr S5::S5() = default;
-static_assert(S5().m == 4, "");
-
-
-// An explicitly-defaulted function may have an exception specification only if
-// it is compatible with the exception specification on an implicit declaration.
-struct E1 {
-  E1() noexcept = default;
-  E1(const E1&) noexcept = default;
-  E1(E1&&) noexcept = default;
-  E1 &operator=(const E1&) noexcept = default;
-  E1 &operator=(E1&&) noexcept = default;
-  ~E1() noexcept = default;
-};
-struct E2 {
-  E2() noexcept(false) = default; // expected-error {{exception specification of explicitly defaulted default constructor does not match the calculated one}}
-  E2(const E2&) noexcept(false) = default; // expected-error {{exception specification of explicitly defaulted copy constructor does not match the calculated one}}
-  E2(E2&&) noexcept(false) = default; // expected-error {{exception specification of explicitly defaulted move constructor does not match the calculated one}}
-  E2 &operator=(const E2&) noexcept(false) = default; // expected-error {{exception specification of explicitly defaulted copy assignment operator does not match the calculated one}}
-  E2 &operator=(E2&&) noexcept(false) = default; // expected-error {{exception specification of explicitly defaulted move assignment operator does not match the calculated one}}
-  ~E2() noexcept(false) = default; // expected-error {{exception specification of explicitly defaulted destructor does not match the calculated one}}
-};
-
-// If a function is explicitly defaulted on its first declaration
-//   -- it is implicitly considered to have the same exception-specification as
-//      if it had been implicitly declared
-struct E3 {
-  E3() = default;
-  E3(const E3&) = default;
-  E3(E3&&) = default;
-  E3 &operator=(const E3&) = default;
-  E3 &operator=(E3&&) = default;
-  ~E3() = default;
-};
-E3 e3;
-static_assert(noexcept(E3(), E3(E3()), E3(e3), e3 = E3(), e3 = e3), "");
-struct E4 {
-  E4() noexcept(false);
-  E4(const E4&) noexcept(false);
-  E4(E4&&) noexcept(false);
-  E4 &operator=(const E4&) noexcept(false);
-  E4 &operator=(E4&&) noexcept(false);
-  ~E4() noexcept(false);
-};
-struct E5 {
-  E5() = default;
-  E5(const E5&) = default;
-  E5(E5&&) = default;
-  E5 &operator=(const E5&) = default;
-  E5 &operator=(E5&&) = default;
-  ~E5() = default;
-
-  E4 e4;
-};
-E5 e5;
-static_assert(!noexcept(E5()), "");
-static_assert(!noexcept(E5(static_cast<E5&&>(e5))), "");
-static_assert(!noexcept(E5(e5)), "");
-static_assert(!noexcept(e5 = E5()), "");
-static_assert(!noexcept(e5 = e5), "");
-
-namespace PR13492 {
-  struct B {
-    B() = default;
-  };
-
-  void f() {
-    const B b; // expected-error {{default initialization of an object of const type 'const PR13492::B' requires a user-provided default constructor}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.delete/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.delete/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.delete/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<typename> void func();
-template<> void func<int>() = delete;
-
-template<typename> void func2();
-template<> void func2<int>(); // expected-note {{previous declaration is here}}
-template<> void func2<int>() = delete; // expected-error {{deleted definition must be first declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++1y %s -DCXX1Y
-
-// An aggregate is an array or a class...
-struct Aggr {
-private:
-  static const int n;
-  void f();
-protected:
-  struct Inner { int m; };
-public:
-  bool &br; // expected-note {{default constructor of 'Aggr' is implicitly deleted because field 'br' of reference type 'bool &' would not be initialized}}
-};
-bool b;
-Aggr ag = { b };
-
-// with no user-provided constructors, ...
-struct NonAggr1a { // expected-note 2 {{candidate constructor}}
-  NonAggr1a(int, int); // expected-note {{candidate constructor}}
-  int k;
-};
-NonAggr1a na1a = { 42 }; // expected-error {{no matching constructor for initialization of 'NonAggr1a'}}
-
-struct NonAggr1b {
-  NonAggr1b(const NonAggr1b &); // expected-note {{candidate constructor}}
-  int k;
-};
-NonAggr1b na1b = { 42 }; // expected-error {{no matching constructor for initialization of 'NonAggr1b'}}
-
-// no brace-or-equal-initializers for non-static data members, ...
-// Note, this bullet was removed in C++1y.
-struct NonAggr2 {
-  int m = { 123 };
-};
-NonAggr2 na2 = { 42 };
-#ifndef CXX1Y
-// expected-error at -2 {{no matching constructor for initialization of 'NonAggr2'}}
-// expected-note at -6 3 {{candidate constructor}}
-#endif
-
-// no private...
-struct NonAggr3 { // expected-note 3 {{candidate constructor}}
-private:
-  int n;
-};
-NonAggr3 na3 = { 42 }; // expected-error {{no matching constructor for initialization of 'NonAggr3'}}
-
-// or protected non-static data members, ...
-struct NonAggr4 { // expected-note 3 {{candidate constructor}}
-protected:
-  int n;
-};
-NonAggr4 na4 = { 42 }; // expected-error {{no matching constructor for initialization of 'NonAggr4'}}
-
-// no base classes, ...
-struct NonAggr5 : Aggr { // expected-note 3 {{candidate constructor}}
-};
-NonAggr5 na5 = { b }; // expected-error {{no matching constructor for initialization of 'NonAggr5'}}
-template<typename...BaseList>
-struct MaybeAggr5a : BaseList... {}; // expected-note {{default constructor of 'MaybeAggr5a<Aggr>' is implicitly deleted because base class 'Aggr' has a deleted default constructor}}
-MaybeAggr5a<> ma5a0 = {}; // ok
-MaybeAggr5a<Aggr> ma5a1 = {}; // expected-error {{call to implicitly-deleted default constructor of 'MaybeAggr5a<Aggr>'}}
-
-// and no virtual functions.
-struct NonAggr6 { // expected-note 3 {{candidate constructor}}
-  virtual void f();
-  int n;
-};
-NonAggr6 na6 = { 42 }; // expected-error {{no matching constructor for initialization of 'NonAggr6'}}
-
-struct DefaultedAggr {
-  int n;
-
-  DefaultedAggr() = default;
-  DefaultedAggr(const DefaultedAggr &) = default;
-  DefaultedAggr(DefaultedAggr &&) = default;
-  DefaultedAggr &operator=(const DefaultedAggr &) = default;
-  DefaultedAggr &operator=(DefaultedAggr &&) = default;
-  ~DefaultedAggr() = default;
-};
-DefaultedAggr da = { 42 } ;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 -pedantic -Werror  %s
-int a1[] = { 1, 3, 5 };
-void f() {
-  int a2[] = { 1, 3, 5 };
-}
-template <typename T>
-void tf() {
-  T t;
-  // Element type may be dependent
-  T a3[] = { 1, 3, 5 };
-  // As might be the initializer list, value
-  int a5[] = { sizeof(T) };
-  // or even type.
-  int a6[] = { t.get() };
-}
-
-// Allowed by GNU extension
-int a4[] = {}; // expected-error {{zero size arrays}}
-
-struct Incomplete; // expected-note {{forward declaration of 'Incomplete'}}
-struct A {
-  Incomplete i; // expected-error {{field has incomplete type 'Incomplete'}}
-};
-A a[] = { 0 }; // PR13971: don't hang.

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -std=c++1y %s -verify
-
-// expected-no-diagnostics
-
-struct S { int a; const char *b; int c; int d = b[a]; };
-constexpr S ss = { 1, "asdf" };
-
-static_assert(ss.a == 1, "");
-static_assert(ss.b[2] == 'd', "");
-static_assert(ss.c == 0, "");
-static_assert(ss.d == 's', "");
-
-struct X { int i, j, k = 42; };
-constexpr X a[] = { 1, 2, 3, 4, 5, 6 };
-constexpr X b[2] = { { 1, 2, 3 }, { 4, 5, 6 } };
-
-constexpr bool operator==(X a, X b) {
-  return a.i == b.i && a.j == b.j && a.k == b.k;
-}
-
-static_assert(sizeof(a) == sizeof(b), "");
-static_assert(a[0] == b[0], "");
-static_assert(a[1] == b[1], "");

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/basic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-void f0() {
-  int &ir = { 17 }; // expected-error{{reference to type 'int' cannot bind to an initializer list}}
-}
-
-namespace PR12453 {
-  template<typename T>
-  void f(int i) {
-    T x{i}; // expected-error{{non-constant-expression cannot be narrowed from type 'int' to 'float' in initializer list}} \
-    // expected-note{{override this message by inserting an explicit cast}}
-    T y{i}; // expected-error{{non-constant-expression cannot be narrowed from type 'int' to 'float' in initializer list}} \
-    // expected-note{{override this message by inserting an explicit cast}}
-  }
-
-  template void f<float>(int); // expected-note{{in instantiation of function template specialization 'PR12453::f<float>' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  template <typename E>
-  struct initializer_list
-  {
-    const E *p;
-    size_t n;
-    initializer_list(const E *p, size_t n) : p(p), n(n) {}
-  };
-
-  struct string {
-    string(const char *);
-  };
-
-  template<typename A, typename B>
-  struct pair {
-    pair(const A&, const B&);
-  };
-}
-
-namespace bullet1 {
-  double ad[] = { 1, 2.0 };
-  int ai[] = { 1, 2.0 };  // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}}
-
-  struct S2 {
-    int m1;
-    double m2, m3;
-  };
-
-  S2 s21 = { 1, 2, 3.0 };
-  S2 s22 { 1.0, 2, 3 };  // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}}
-  S2 s23 { };
-}
-
-namespace bullet4_example1 {
-  struct S {
-    S(std::initializer_list<double> d) {}
-    S(std::initializer_list<int> i) {}
-    S() {}
-  };
-
-  S s1 = { 1.0, 2.0, 3.0 };
-  S s2 = { 1, 2, 3 };
-  S s3 = { };
-}
-
-namespace bullet4_example2 {
-  struct Map {
-    Map(std::initializer_list<std::pair<std::string,int>>) {}
-  };
-
-  Map ship = {{"Sophie",14}, {"Surprise",28}};
-}
-
-namespace bullet4_example3 {
-  struct S {
-    S(int, double, double) {}
-    S() {}
-  };
-
-  S s1 = { 1, 2, 3.0 };
-  S s2 { 1.0, 2, 3 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}}
-  S s3 {};
-}
-
-namespace bullet5 {
-  int x1 {2};
-  int x2 {2.0};  // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}}
-}
-
-namespace bullet6 {
-  struct S {
-    S(std::initializer_list<double>) {}
-    S(const std::string &) {}
-  };
-
-  const S& r1 = { 1, 2, 3.0 };
-  const S& r2 = { "Spinach" };
-  S& r3 = { 1, 2, 3 };  // expected-error {{non-const lvalue reference to type 'bullet6::S' cannot bind to an initializer list temporary}}
-  const int& i1 = { 1 };
-  const int& i2 = { 1.1 };  // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} expected-warning {{implicit conversion}}
-  const int (&iar)[2] = { 1, 2 };
-}
-
-namespace bullet7 {
-  int** pp {};
-}
-
-namespace bullet8 {
-  struct A { int i; int j; };
-  A a1 { 1, 2 };
-  A a2 { 1.2 };  // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} expected-warning {{implicit conversion}}
-
-  struct B {
-    B(std::initializer_list<int> i) {}
-  };
-  B b1 { 1, 2 };
-  B b2 { 1, 2.0 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}}
-
-  struct C {
-    C(int i, double j) {}
-  };
-  C c1 = { 1, 2.2 };
-  // FIXME: Suppress the narrowing warning in the cases where we issue a narrowing error.
-  C c2 = { 1.1, 2 }; // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}} expected-warning {{implicit conversion}}
-
-  int j { 1 };
-  int k { };
-}
-
-namespace rdar13395022 {
-  struct MoveOnly {
-    MoveOnly(MoveOnly&&); // expected-note{{copy constructor is implicitly deleted because 'MoveOnly' has a user-declared move constructor}}
-  };
-
-  void test(MoveOnly mo) {
-    auto &&list = {mo}; // expected-error{{call to implicitly-deleted copy constructor of 'rdar13395022::MoveOnly'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x-fixits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x-fixits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x-fixits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wc++11-compat -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-// Verify that the appropriate fixits are emitted for narrowing conversions in
-// initializer lists.
-
-typedef short int16_t;
-
-void fixits() {
-  int x = 999;
-  struct {char c;} c2 = {x};
-  // CHECK: warning:{{.*}} cannot be narrowed
-  // CHECK: fix-it:{{.*}}:26}:"static_cast<char>("
-  // CHECK: fix-it:{{.*}}:27}:")"
-  struct {int16_t i;} i16 = {70000};
-  // CHECK: warning:{{.*}} cannot be narrowed
-  // CHECK: fix-it:{{.*}}:30}:"static_cast<int16_t>("
-  // CHECK: fix-it:{{.*}}:35}:")"
-}
-
-template<typename T>
-void maybe_shrink_int(T t) {
-  struct {T t;} t2 = {700};
-}
-
-void test_template() {
-  maybe_shrink_int((char)3);
-  // CHECK: warning:{{.*}} cannot be narrowed
-  // CHECK: note:{{.*}} in instantiation
-  // CHECK: note:{{.*}} override
-  // FIXME: This should be static_cast<T>.
-  // CHECK: fix-it:{{.*}}"static_cast<char>("
-  // CHECK: fix-it:{{.*}}")"
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,223 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -triple x86_64-apple-macosx10.6.7 -verify %s
-
-// Verify that narrowing conversions in initializer lists cause errors in C++0x
-// mode.
-
-void std_example() {
-  int x = 999;  // x is not a constant expression
-  const int y = 999;
-  const int z = 99;
-  char c1 = x;  // OK, though it might narrow (in this case, it does narrow)
-  char c2{x};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  char c3{y};  // expected-error {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}}
-  char c4{z};  // OK: no narrowing needed
-  unsigned char uc1 = {5};  // OK: no narrowing needed
-  unsigned char uc2 = {-1};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  unsigned int ui1 = {-1};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  signed int si1 =
-    { (unsigned int)-1 };  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  int ii = {2.0};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  float f1 { x };  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  float f2 { 7 };  // OK: 7 can be exactly represented as a float
-  int f(int);
-  int a[] =
-    { 2, f(2), f(2.0) };  // OK: the double-to-int conversion is not at the top level
-}
-
-// Test each rule individually.
-
-template<typename T>
-struct Agg {
-  T t;
-};
-
-template<typename T>
-struct Convert {
-  constexpr Convert(T v) : v(v) {}
-  constexpr operator T() const { return v; }
-  T v;
-};
-template<typename T> Convert<T> ConvertVar();
-
-// C++0x [dcl.init.list]p7: A narrowing conversion is an implicit conversion
-//
-// * from a floating-point type to an integer type, or
-
-void float_to_int() {
-  Agg<char> a1 = {1.0F};  // expected-error {{type 'float' cannot be narrowed to 'char'}} expected-note {{override}}
-  Agg<char> a2 = {1.0};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<char> a3 = {1.0L};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-
-  float f = 1.0;
-  double d = 1.0;
-  long double ld = 1.0;
-  Agg<char> a4 = {f};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<char> a5 = {d};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<char> a6 = {ld};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-
-  Agg<char> ce1 = { Convert<float>(1.0) }; // expected-error {{type 'float' cannot be narrowed to 'char'}} expected-note {{override}}
-  Agg<char> ce2 = { ConvertVar<double>() }; // expected-error {{type 'double' cannot be narrowed to 'char'}} expected-note {{override}}
-}
-
-// * from long double to double or float, or from double to float, except where
-//   the source is a constant expression and the actual value after conversion
-//   is within the range of values that can be represented (even if it cannot be
-//   represented exactly), or
-
-void shrink_float() {
-  // These aren't constant expressions.
-  float f = 1.0;
-  double d = 1.0;
-  long double ld = 1.0;
-
-  // Variables.
-  Agg<float> f1 = {f};  // OK  (no-op)
-  Agg<float> f2 = {d};  // expected-error {{non-constant-expression cannot be narrowed from type 'double' to 'float'}} expected-note {{override}}
-  Agg<float> f3 = {ld};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  // Exact constants.
-  Agg<float> f4 = {1.0};  // OK  (double constant represented exactly)
-  Agg<float> f5 = {1.0L};  // OK  (long double constant represented exactly)
-  // Inexact but in-range constants.
-  Agg<float> f6 = {0.1};  // OK (double constant in range but rounded)
-  Agg<float> f7 = {0.1L};  // OK (long double constant in range but rounded)
-  // Out of range constants.
-  Agg<float> f8 = {1E50};  // expected-error {{constant expression evaluates to 1.000000e+50 which cannot be narrowed to type 'float'}} expected-note {{override}}
-  Agg<float> f9 = {1E50L};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  // More complex constant expression.
-  constexpr long double e40 = 1E40L, e30 = 1E30L, e39 = 1E39L;
-  Agg<float> f10 = {e40 - 5 * e39 + e30 - 5 * e39};  // OK
-
-  // Variables.
-  Agg<double> d1 = {f};  // OK  (widening)
-  Agg<double> d2 = {d};  // OK  (no-op)
-  Agg<double> d3 = {ld};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  // Exact constant.
-  Agg<double> d4 = {1.0L};  // OK  (long double constant represented exactly)
-  // Inexact but in-range constant.
-  Agg<double> d5 = {0.1L};  // OK (long double constant in range but rounded)
-  // Out of range constant.
-  Agg<double> d6 = {1E315L};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  // More complex constant expression.
-  constexpr long double e315 = 1E315L, e305 = 1E305L, e314 = 1E314L;
-  Agg<double> d7 = {e315 - 5 * e314 + e305 - 5 * e314};  // OK
-
-  Agg<float> ce1 = { Convert<double>(1e300) }; // expected-error {{constant expression evaluates to 1.000000e+300 which cannot be narrowed to type 'float'}} expected-note {{override}}
-  Agg<double> ce2 = { ConvertVar<long double>() }; // expected-error {{non-constant-expression cannot be narrowed from type 'long double' to 'double'}} expected-note {{override}}
-}
-
-// * from an integer type or unscoped enumeration type to a floating-point type,
-//   except where the source is a constant expression and the actual value after
-//   conversion will fit into the target type and will produce the original
-//   value when converted back to the original type, or
-void int_to_float() {
-  // Not a constant expression.
-  char c = 1;
-
-  // Variables.  Yes, even though all char's will fit into any floating type.
-  Agg<float> f1 = {c};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<double> f2 = {c};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<long double> f3 = {c};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-
-  // Constants.
-  Agg<float> f4 = {12345678};  // OK (exactly fits in a float)
-  Agg<float> f5 = {123456789};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-
-  Agg<float> ce1 = { Convert<int>(123456789) }; // expected-error {{constant expression evaluates to 123456789 which cannot be narrowed to type 'float'}} expected-note {{override}}
-  Agg<double> ce2 = { ConvertVar<long long>() }; // expected-error {{non-constant-expression cannot be narrowed from type 'long long' to 'double'}} expected-note {{override}}
-}
-
-// * from an integer type or unscoped enumeration type to an integer type that
-//   cannot represent all the values of the original type, except where the
-//   source is a constant expression and the actual value after conversion will
-//   fit into the target type and will produce the original value when converted
-//   back to the original type.
-void shrink_int() {
-  // Not a constant expression.
-  short s = 1;
-  unsigned short us = 1;
-  Agg<char> c1 = {s};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<unsigned short> s1 = {s};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<short> s2 = {us};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-
-  // "that cannot represent all the values of the original type" means that the
-  // validity of the program depends on the relative sizes of integral types.
-  // This test compiles with -m64, so sizeof(int)<sizeof(long)==sizeof(long
-  // long).
-  long l1 = 1;
-  Agg<int> i1 = {l1};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  long long ll = 1;
-  Agg<long> l2 = {ll};  // OK
-
-  // Constants.
-  Agg<char> c2 = {127};  // OK
-  Agg<char> c3 = {300};  // expected-error {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}}
-
-  Agg<int> i2 = {0x7FFFFFFFU};  // OK
-  Agg<int> i3 = {0x80000000U};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<unsigned int> i4 = {-0x80000000L};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-
-  // Bool is also an integer type, but conversions to it are a different AST
-  // node.
-  Agg<bool> b1 = {0};  // OK
-  Agg<bool> b2 = {1};  // OK
-  Agg<bool> b3 = {-1};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-
-  // Conversions from pointers to booleans aren't narrowing conversions.
-  Agg<bool> b = {&b1};  // OK
-
-  Agg<short> ce1 = { Convert<int>(100000) }; // expected-error {{constant expression evaluates to 100000 which cannot be narrowed to type 'short'}} expected-note {{override}} expected-warning {{changes value from 100000 to -31072}}
-  Agg<char> ce2 = { ConvertVar<short>() }; // expected-error {{non-constant-expression cannot be narrowed from type 'short' to 'char'}} expected-note {{override}}
-
-  // Negative -> larger unsigned type.
-  unsigned long long ll1 = { -1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{override}}
-  unsigned long long ll2 = { 1 }; // OK
-  unsigned long long ll3 = { s }; // expected-error {{cannot be narrowed from type 'short'}} expected-note {{override}}
-  unsigned long long ll4 = { us }; // OK
-  unsigned long long ll5 = { ll }; // expected-error {{cannot be narrowed from type 'long long'}} expected-note {{override}}
-  Agg<unsigned long long> ll6 = { -1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{override}}
-  Agg<unsigned long long> ll7 = { 18446744073709551615ULL }; // OK
-  Agg<unsigned long long> ll8 = { __int128(18446744073709551615ULL) + 1 }; // expected-error {{ 18446744073709551616 which cannot be narrowed}} expected-note {{override}} expected-warning {{changes value}}
-  signed char c = 'x';
-  unsigned short usc1 = { c }; // expected-error {{non-constant-expression cannot be narrowed from type 'signed char'}} expected-note {{override}}
-  unsigned short usc2 = { (signed char)'x' }; // OK
-  unsigned short usc3 = { (signed char)-1 }; // expected-error {{ -1 which cannot be narrowed}} expected-note {{override}}
-}
-
-// Be sure that type- and value-dependent expressions in templates get the error
-// too.
-
-template<int I, typename T>
-void maybe_shrink_int(T t) {
-  Agg<short> s1 = {t};  // expected-error {{ cannot be narrowed }} expected-note {{override}}
-  Agg<short> s2 = {I};  // expected-error {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}}
-  Agg<T> t2 = {700};  // expected-error {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}}
-}
-
-void test_template() {
-  maybe_shrink_int<15>((int)3);  // expected-note {{in instantiation}}
-  maybe_shrink_int<70000>((char)3);  // expected-note {{in instantiation}}
-}
-
-
-// We don't want qualifiers on the types in the diagnostic.
-
-void test_qualifiers(int i) {
-  const int j = i;
-  struct {const unsigned char c;} c1 = {j};  // expected-error {{from type 'int' to 'unsigned char' in}} expected-note {{override}}
-  // Template arguments make it harder to avoid printing qualifiers:
-  Agg<const unsigned char> c2 = {j};  // expected-error {{from type 'int' to 'const unsigned char' in}} expected-note {{override}}
-}
-
-// Test SFINAE checks.
-template<unsigned> struct Value { };
-
-template<typename T>
-int &check_narrowed(Value<sizeof((T){1.1})>);
-
-template<typename T>
-float &check_narrowed(...);
-
-void test_narrowed(Value<sizeof(int)> vi, Value<sizeof(double)> vd) {
-  int &ir = check_narrowed<double>(vd);
-  float &fr = check_narrowed<int>(vi);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,210 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wno-error=c++11-narrowing -triple x86_64-apple-macosx10.6.7 -verify %s
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wno-error=narrowing -triple x86_64-apple-macosx10.6.7 -verify %s
-
-// Verify that narrowing conversions in initializer lists cause errors in C++0x
-// mode.
-
-void std_example() {
-  int x = 999;  // x is not a constant expression
-  const int y = 999;
-  const int z = 99;
-  char c1 = x;  // OK, though it might narrow (in this case, it does narrow)
-  char c2{x};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  char c3{y};  // expected-warning {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}}
-  char c4{z};  // OK: no narrowing needed
-  unsigned char uc1 = {5};  // OK: no narrowing needed
-  unsigned char uc2 = {-1};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  unsigned int ui1 = {-1};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  signed int si1 =
-    { (unsigned int)-1 };  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  int ii = {2.0};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  float f1 { x };  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  float f2 { 7 };  // OK: 7 can be exactly represented as a float
-  int f(int);
-  int a[] =
-    { 2, f(2), f(2.0) };  // OK: the double-to-int conversion is not at the top level
-}
-
-// Test each rule individually.
-
-template<typename T>
-struct Agg {
-  T t;
-};
-
-template<typename T>
-struct Convert {
-  constexpr Convert(T v) : v(v) {}
-  constexpr operator T() const { return v; }
-  T v;
-};
-template<typename T> Convert<T> ConvertVar();
-
-// C++0x [dcl.init.list]p7: A narrowing conversion is an implicit conversion
-//
-// * from a floating-point type to an integer type, or
-
-void float_to_int() {
-  Agg<char> a1 = {1.0F};  // expected-warning {{type 'float' cannot be narrowed to 'char'}} expected-note {{override}}
-  Agg<char> a2 = {1.0};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<char> a3 = {1.0L};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-
-  float f = 1.0;
-  double d = 1.0;
-  long double ld = 1.0;
-  Agg<char> a4 = {f};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<char> a5 = {d};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<char> a6 = {ld};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-
-  Agg<char> ce1 = { Convert<float>(1.0) }; // expected-warning {{type 'float' cannot be narrowed to 'char'}} expected-note {{override}}
-  Agg<char> ce2 = { ConvertVar<double>() }; // expected-warning {{type 'double' cannot be narrowed to 'char'}} expected-note {{override}}
-}
-
-// * from long double to double or float, or from double to float, except where
-//   the source is a constant expression and the actual value after conversion
-//   is within the range of values that can be represented (even if it cannot be
-//   represented exactly), or
-
-void shrink_float() {
-  // These aren't constant expressions.
-  float f = 1.0;
-  double d = 1.0;
-  long double ld = 1.0;
-
-  // Variables.
-  Agg<float> f1 = {f};  // OK  (no-op)
-  Agg<float> f2 = {d};  // expected-warning {{non-constant-expression cannot be narrowed from type 'double' to 'float'}} expected-note {{override}}
-  Agg<float> f3 = {ld};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  // Exact constants.
-  Agg<float> f4 = {1.0};  // OK  (double constant represented exactly)
-  Agg<float> f5 = {1.0L};  // OK  (long double constant represented exactly)
-  // Inexact but in-range constants.
-  Agg<float> f6 = {0.1};  // OK (double constant in range but rounded)
-  Agg<float> f7 = {0.1L};  // OK (long double constant in range but rounded)
-  // Out of range constants.
-  Agg<float> f8 = {1E50};  // expected-warning {{constant expression evaluates to 1.000000e+50 which cannot be narrowed to type 'float'}} expected-note {{override}}
-  Agg<float> f9 = {1E50L};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  // More complex constant expression.
-  constexpr long double e40 = 1E40L, e30 = 1E30L, e39 = 1E39L;
-  Agg<float> f10 = {e40 - 5 * e39 + e30 - 5 * e39};  // OK
-
-  // Variables.
-  Agg<double> d1 = {f};  // OK  (widening)
-  Agg<double> d2 = {d};  // OK  (no-op)
-  Agg<double> d3 = {ld};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  // Exact constant.
-  Agg<double> d4 = {1.0L};  // OK  (long double constant represented exactly)
-  // Inexact but in-range constant.
-  Agg<double> d5 = {0.1L};  // OK (long double constant in range but rounded)
-  // Out of range constant.
-  Agg<double> d6 = {1E315L};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  // More complex constant expression.
-  constexpr long double e315 = 1E315L, e305 = 1E305L, e314 = 1E314L;
-  Agg<double> d7 = {e315 - 5 * e314 + e305 - 5 * e314};  // OK
-
-  Agg<float> ce1 = { Convert<double>(1e300) }; // expected-warning {{constant expression evaluates to 1.000000e+300 which cannot be narrowed to type 'float'}} expected-note {{override}}
-  Agg<double> ce2 = { ConvertVar<long double>() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'long double' to 'double'}} expected-note {{override}}
-}
-
-// * from an integer type or unscoped enumeration type to a floating-point type,
-//   except where the source is a constant expression and the actual value after
-//   conversion will fit into the target type and will produce the original
-//   value when converted back to the original type, or
-void int_to_float() {
-  // Not a constant expression.
-  char c = 1;
-
-  // Variables.  Yes, even though all char's will fit into any floating type.
-  Agg<float> f1 = {c};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<double> f2 = {c};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<long double> f3 = {c};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-
-  // Constants.
-  Agg<float> f4 = {12345678};  // OK (exactly fits in a float)
-  Agg<float> f5 = {123456789};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-
-  Agg<float> ce1 = { Convert<int>(123456789) }; // expected-warning {{constant expression evaluates to 123456789 which cannot be narrowed to type 'float'}} expected-note {{override}}
-  Agg<double> ce2 = { ConvertVar<long long>() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'long long' to 'double'}} expected-note {{override}}
-}
-
-// * from an integer type or unscoped enumeration type to an integer type that
-//   cannot represent all the values of the original type, except where the
-//   source is a constant expression and the actual value after conversion will
-//   fit into the target type and will produce the original value when converted
-//   back to the original type.
-void shrink_int() {
-  // Not a constant expression.
-  short s = 1;
-  unsigned short us = 1;
-  Agg<char> c1 = {s};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<unsigned short> s1 = {s};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<short> s2 = {us};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-
-  // "that cannot represent all the values of the original type" means that the
-  // validity of the program depends on the relative sizes of integral types.
-  // This test compiles with -m64, so sizeof(int)<sizeof(long)==sizeof(long
-  // long).
-  long l1 = 1;
-  Agg<int> i1 = {l1};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  long long ll = 1;
-  Agg<long> l2 = {ll};  // OK
-
-  // Constants.
-  Agg<char> c2 = {127};  // OK
-  Agg<char> c3 = {300};  // expected-warning {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}}
-
-  Agg<int> i2 = {0x7FFFFFFFU};  // OK
-  Agg<int> i3 = {0x80000000U};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<unsigned int> i4 = {-0x80000000L};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-
-  // Bool is also an integer type, but conversions to it are a different AST
-  // node.
-  Agg<bool> b1 = {0};  // OK
-  Agg<bool> b2 = {1};  // OK
-  Agg<bool> b3 = {-1};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-
-  // Conversions from pointers to booleans aren't narrowing conversions.
-  Agg<bool> b = {&b1};  // OK
-
-  Agg<short> ce1 = { Convert<int>(100000) }; // expected-warning {{constant expression evaluates to 100000 which cannot be narrowed to type 'short'}} expected-note {{override}} expected-warning {{changes value from 100000 to -31072}}
-  Agg<char> ce2 = { ConvertVar<short>() }; // expected-warning {{non-constant-expression cannot be narrowed from type 'short' to 'char'}} expected-note {{override}}
-}
-
-// Be sure that type- and value-dependent expressions in templates get the warning
-// too.
-
-template<int I, typename T>
-void maybe_shrink_int(T t) {
-  Agg<short> s1 = {t};  // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-  Agg<short> s2 = {I};  // expected-warning {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}}
-  Agg<T> t2 = {700};  // expected-warning {{ cannot be narrowed }} expected-note {{override}} expected-warning {{changes value}}
-}
-
-void test_template() {
-  maybe_shrink_int<15>((int)3);  // expected-note {{in instantiation}}
-  maybe_shrink_int<70000>((char)3);  // expected-note {{in instantiation}}
-}
-
-
-// We don't want qualifiers on the types in the diagnostic.
-
-void test_qualifiers(int i) {
-  const int j = i;
-  struct {const unsigned char c;} c1 = {j};  // expected-warning {{from type 'int' to 'unsigned char' in}} expected-note {{override}}
-  // Template arguments make it harder to avoid printing qualifiers:
-  Agg<const unsigned char> c2 = {j};  // expected-warning {{from type 'int' to 'const unsigned char' in}} expected-note {{override}}
-}
-
-// Make sure we still get the right SFINAE behavior.
-template<unsigned> struct Value { };
-
-template<typename T>
-int &check_narrowed(Value<sizeof((T){1.1})>);
-
-template<typename T>
-float &check_narrowed(...);
-
-void test_narrowed(Value<sizeof(int)> vi, Value<sizeof(double)> vd) {
-  int &ir = check_narrowed<double>(vd);
-  float &fr = check_narrowed<int>(vi);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/basic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/basic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/basic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR5787
-class C {
- public:
-  ~C() {}
-};
-
-template <typename T>
-class E {
- public:
-  E& Foo(const C&);
-  E& Bar() { return Foo(C()); }
-};
-
-void Test() {
-  E<int> e;
-  e.Bar();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-int g(int);
-void f() {
-  int i; 
-  int& r = i;
-  r = 1; 
-  int* p = &r;
-  int &rr=r; 
-  int (&rg)(int) = g; 
-  rg(i); 
-  int a[3]; 
-  int (&ra)[3] = a; 
-  ra[1] = i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-int& r1;	// expected-error{{declaration of reference variable 'r1' requires an initializer}}
-extern int& r2;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,236 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -pedantic %s
-
-// Test the c++0x-specific reference initialization rules, e.g., the
-// rules for rvalue references.
-template<typename T> T prvalue();
-template<typename T> T&& xvalue();
-template<typename T> T& lvalue();
-
-struct Base { };
-struct Derived : Base { };
-
-struct HasArray {
-  int array[5];
-};
-
-int f(int);
-
-template<typename T>
-struct ConvertsTo {
-  operator T(); // expected-note 2{{candidate function}}
-};
-
-void test_rvalue_refs() {
-  // If the initializer expression...
-  //   - is an xvalue, class prvalue, array prvalue or function lvalue
-  //     and "cv1 T1" is reference-compatible with "cv2 T2", or
-
-  // xvalue case
-  Base&& base0 = xvalue<Base>();
-  Base&& base1 = xvalue<Derived>();
-  int&& int0 = xvalue<int>();
-
-  // class prvalue case
-  Base&& base2 = prvalue<Base>();
-  Base&& base3 = prvalue<Derived>();
-
-  // array prvalue case
-  int (&&array0)[5] = HasArray().array;
-
-  // function lvalue case
-  int (&&function0)(int) = f;
-
-  //   - has a class type (i.e., T2 is a class type), where T1 is not
-  //     reference-related to T2, and can be implicitly converted to
-  //     an xvalue, class prvalue, or function lvalue of type "cv3
-  //     T3", where "cv1 T1" is reference-compatible with "cv3 T3",
-
-  // xvalue
-  Base&& base4 = ConvertsTo<Base&&>();
-  Base&& base5 = ConvertsTo<Derived&&>();
-  int && int1 = ConvertsTo<int&&>();
-
-  // class prvalue
-  Base&& base6 = ConvertsTo<Base>();
-  Base&& base7 = ConvertsTo<Derived>();
-
-  // function lvalue
-  int (&&function1)(int) = ConvertsTo<int(&)(int)>();
-
-  // In the second case, if the reference is an rvalue reference and
-  // the second standard conversion sequence of the user-defined
-  // conversion sequence includes an lvalue-to-rvalue conversion, the
-  // program is ill-formed.
-  int &&int2 = ConvertsTo<int&>(); // expected-error{{no viable conversion from 'ConvertsTo<int &>' to 'int'}}
-  int &&int3 = ConvertsTo<float&>(); // expected-error{{no viable conversion from 'ConvertsTo<float &>' to 'int'}}
-}
-
-class NonCopyable {
-  NonCopyable(const NonCopyable&);
-};
-
-class NonCopyableDerived : public NonCopyable {
-  NonCopyableDerived(const NonCopyableDerived&);
-};
-
-// Make sure we get direct bindings with no copies.
-void test_direct_binding() {
-  NonCopyable &&nc0 = prvalue<NonCopyable>();
-  NonCopyable &&nc1 = prvalue<NonCopyableDerived>();
-  NonCopyable &&nc2 = xvalue<NonCopyable>();
-  NonCopyable &&nc3 = xvalue<NonCopyableDerived>();
-  const NonCopyable &nc4 = prvalue<NonCopyable>();
-  const NonCopyable &nc5 = prvalue<NonCopyableDerived>();
-  const NonCopyable &nc6 = xvalue<NonCopyable>();
-  const NonCopyable &nc7 = xvalue<NonCopyableDerived>();
-  NonCopyable &&nc8 = ConvertsTo<NonCopyable&&>();
-  NonCopyable &&nc9 = ConvertsTo<NonCopyableDerived&&>();
-  const NonCopyable &nc10 = ConvertsTo<NonCopyable&&>();
-  const NonCopyable &nc11 = ConvertsTo<NonCopyableDerived&&>();
-}
-
-namespace std_example_1 {
-  double d = 2.0; 
-  double& rd = d; 
-  const double& rcd = d;
-  struct A { }; 
-  struct B : A { 
-    operator int&();
-  } b;
-  A& ra = b; 
-  const A& rca = b; 
-  int& ir = B();
-}
-
-namespace std_example_2 {
-  double& rd2 = 2.0; // expected-error{{non-const lvalue reference to type 'double' cannot bind to a temporary of type 'double'}}
-  int i = 2; 
-  double& rd3 = i; // expected-error{{non-const lvalue reference to type 'double' cannot bind to a value of unrelated type 'int'}}
-  struct A { }; 
-  struct B : A { } b; 
-  extern B f(); 
-  const A& rca = f(); 
-  A&& rra = f();
-  struct X { 
-    operator B();  // expected-note{{candidate function}}
-    operator int&(); // expected-note{{candidate function}}
-  } x;
-  const A& r = x;
-  int&& rri = static_cast<int&&>(i);
-  B&& rrb = x;
-  int&& rri2 = X(); // expected-error{{no viable conversion from 'std_example_2::X' to 'int'}}
-
-  const double& rcd2 = 2;
-  double&& rrd = 2;
-  const volatile int cvi = 1; 
-  const int& r2 = cvi; // expected-error{{binding of reference to type 'const int' to a value of type 'const volatile int' drops qualifiers}}
-
-  double d;
-  double&& rrd2 = d; // expected-error{{rvalue reference to type 'double' cannot bind to lvalue of type 'double'}}
-  double&& rrd3 = i;
-}
-
-namespace argument_passing {
-  void base_rvalue_ref(Base&&);
-  void int_rvalue_ref(int&&); // expected-note{{candidate function not viable: no known conversion from 'ConvertsTo<int &>' to 'int &&' for 1st argument}} \
-  // expected-note{{candidate function not viable: no known conversion from 'ConvertsTo<float &>' to 'int &&' for 1st argument}}
-
-  void array_rvalue_ref(int (&&)[5]);
-  void function_rvalue_ref(int (&&)(int));
-
-  void test() {
-    base_rvalue_ref(xvalue<Base>());
-    base_rvalue_ref(xvalue<Derived>());
-    int_rvalue_ref(xvalue<int>());
-    
-    base_rvalue_ref(prvalue<Base>());
-    base_rvalue_ref(prvalue<Derived>());
-    
-    array_rvalue_ref(HasArray().array);
-    
-    function_rvalue_ref(f);
-    
-    base_rvalue_ref(ConvertsTo<Base&&>());
-    base_rvalue_ref(ConvertsTo<Derived&&>());
-    int_rvalue_ref(ConvertsTo<int&&>());
-    
-    base_rvalue_ref(ConvertsTo<Base>());
-    base_rvalue_ref(ConvertsTo<Derived>());
-
-    function_rvalue_ref(ConvertsTo<int(&)(int)>());
-    
-    int_rvalue_ref(ConvertsTo<int&>()); // expected-error{{no matching function for call to 'int_rvalue_ref'}}
-    int_rvalue_ref(ConvertsTo<float&>()); // expected-error{{no matching function for call to 'int_rvalue_ref'}}
-  }
-
-}
-
-namespace pr10644 {
-  struct string {
-    string(const char* __s);
-  };
-  class map {
-    int& operator[](const string& __k);
-  public:
-    int& operator[](const string&& __k);
-  };
-  void foo() {
-    static map key_map;
-    key_map["line"];
-  }
-}
-
-namespace PR11003 {
-  class Value {
-  };
-  struct MoveRef {
-    operator Value &() const ;
-  };
-  MoveRef Move(int);
-  void growTo() {
-    Value x = Move(0);
-    Value y(Move(0));
-  }
-}
-
-namespace rdar13278115 {
-  struct X { };
-  struct Y : X { };
-  X &&f0(X &x) { return x; } // expected-error{{rvalue reference to type 'rdar13278115::X' cannot bind to lvalue of type 'rdar13278115::X'}}
-  X &&f1(Y &y) { return y; } // expected-error{{rvalue reference to type 'rdar13278115::X' cannot bind to lvalue of type 'rdar13278115::Y'}}
-  const X &&f2(Y &y) { return y; } // expected-error{{rvalue reference to type 'const rdar13278115::X' cannot bind to lvalue of type 'rdar13278115::Y'}}
-}
-
-namespace bitfields {
-  struct IntBitfield {
-    int i : 17; // expected-note 3 {{bit-field is declared here}}
-  };
-
-  // A simplified version of std::move.
-  template <typename T>
-  T &&move(T &obj) {
-    return static_cast<T &&>(obj);
-  }
-
-  void test() {
-    int & ir1 = (lvalue<IntBitfield>().i); // expected-error{{non-const reference cannot bind to bit-field 'i'}}
-    int & ir2 = (xvalue<IntBitfield>().i); // expected-error{{non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'}}
-    int && ir3 = (xvalue<IntBitfield>().i); // no-warning
-    int && ir4 = move(lvalue<IntBitfield>()).i; // no-warning
-
-    volatile int & vir1 = (lvalue<IntBitfield>().i); // expected-error{{non-const reference cannot bind to bit-field 'i'}}
-    volatile int & vir2 = (xvalue<IntBitfield>().i); // expected-error{{volatile lvalue reference to type 'volatile int' cannot bind to a temporary of type 'int'}}
-    volatile int && vir3 = (xvalue<IntBitfield>().i); // no-warning
-    volatile int && vir4 = move(lvalue<IntBitfield>()).i; // no-warning
-
-    const int & cir1 = (lvalue<IntBitfield>().i); // no-warning
-    const int & cir2 = (xvalue<IntBitfield>().i); // no-warning
-    const int && cir3 = (xvalue<IntBitfield>().i); // no-warning
-    const int && cir4 = move(lvalue<IntBitfield>()).i; // no-warning
-
-    const volatile int & cvir1 = (lvalue<IntBitfield>().i); // expected-error{{non-const reference cannot bind to bit-field 'i'}}
-    const volatile int & cvir2 = (xvalue<IntBitfield>().i); // expected-error{{volatile lvalue reference to type 'const volatile int' cannot bind to a temporary of type 'int'}}
-    const volatile int && cvir3 = (xvalue<IntBitfield>().i); // no-warning
-    const volatile int && cvir4 = move(lvalue<IntBitfield>()).i; // no-warning
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-cxx03-extra-copy.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-cxx03-extra-copy.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-cxx03-extra-copy.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-option -verify %s
-
-// C++03 requires that we check for a copy constructor when binding a
-// reference to a temporary, since we are allowed to make a copy, Even
-// though we don't actually make that copy, make sure that we diagnose
-// cases where that copy constructor is somehow unavailable.  As an
-// extension, this is only a warning.
-
-struct X1 {
-  X1();
-  explicit X1(const X1&);
-};
-
-struct X2 {
-  X2();
-
-private:
-  X2(const X2&); // expected-note{{declared private here}}
-};
-
-struct X3 {
-  X3();
-
-private:
-  X3(X3&); // expected-note{{candidate constructor not viable: expects an l-value for 1st argument}}
-};
-
-// Check for instantiation of default arguments
-template<typename T>
-T get_value_badly() {
-  double *dp = 0;
-  // The extension doesn't extend far enough to turn this error into a warning.
-  T *tp = dp; // expected-error{{cannot initialize a variable of type 'int *' with an lvalue of type 'double *'}}
-  return T();
-}
-
-template<typename T>
-struct X4 {
-  X4();
-  X4(const X4&, T = get_value_badly<T>()); // expected-note{{in instantiation of}}
-}; 
-
-// Check for "dangerous" default arguments that could cause recursion.
-struct X5 {
-  X5();
-  X5(const X5&, const X5& = X5()); // expected-warning{{no viable constructor copying parameter of type 'X5'}}
-};
-
-void g1(const X1&);
-void g2(const X2&);
-void g3(const X3&);
-void g4(const X4<int>&);
-void g5(const X5&);
-
-void test() {
-  g1(X1());
-  g2(X2()); // expected-warning{{C++98 requires an accessible copy constructor for class 'X2' when binding a reference to a temporary; was private}}
-  g3(X3()); // expected-warning{{no viable constructor copying parameter of type 'X3'}}
-  g4(X4<int>());
-  g5(X5());  // Generates a warning in the default argument.
-}
-
-// Check that unavailable copy constructors still cause SFINAE failures.
-template<int> struct int_c { };
-
-template<typename T> T f(const T&);
-
-// Would be ambiguous with the next g(), except the instantiation failure in
-// sizeof() prevents that.
-template<typename T>
-int &g(int_c<sizeof(f(T()))> * = 0);
-
-template<typename T> float &g();
-
-void h() {
-  float &fp2 = g<X3>();  // Not ambiguous.
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-cxx0x-no-extra-copy.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-cxx0x-no-extra-copy.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-cxx0x-no-extra-copy.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// C++03 requires that we check for a copy constructor when binding a
-// reference to a reference-compatible rvalue, since we are allowed to
-// make a copy. C++0x does not permit the copy, so ensure that we
-// don't diagnose cases where the copy constructor is unavailable.
-
-struct X1 {
-  X1();
-  explicit X1(const X1&);
-};
-
-struct X2 {
-  X2();
-
-private:
-  X2(const X2&);
-};
-
-struct X3 {
-  X3();
-
-private:
-  X3(X3&);
-};
-
-template<typename T>
-T get_value_badly() {
-  double *dp = 0;
-  T *tp = dp;
-  return T();
-}
-
-template<typename T>
-struct X4 {
-  X4();
-  X4(const X4&, T = get_value_badly<T>());
-};
-
-void g1(const X1&);
-void g2(const X2&);
-void g3(const X3&);
-void g4(const X4<int>&);
-
-void test() {
-  g1(X1());
-  g2(X2());
-  g3(X3());
-  g4(X4<int>());
-}
-
-// Check that unavailable copy constructors do not cause SFINAE failures.
-template<int> struct int_c { };
-
-template<typename T> T f(const T&);
-
-template<typename T>
-int &g(int_c<sizeof(f(T()))> * = 0);  // expected-note{{candidate function [with T = X3]}}
-
-template<typename T> float &g();  // expected-note{{candidate function [with T = X3]}}
-
-void h() {
-  float &fp = g<X3>();  // expected-error{{call to 'g' is ambiguous}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-examples.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-examples.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-examples.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -ast-dump %s 2>&1 | FileCheck %s
-
-// CHECK: example0
-void example0() {
-  double d = 2.0;
-  // CHECK: VarDecl{{.*}}rd 'double &'
-  // CHECK-NEXT: DeclRefExpr
-  double &rd = d;
-  // CHECK: VarDecl{{.*}}rcd 'const double &'
-  // CHECK-NEXT: ImplicitCastExpr{{.*}}'const double' lvalue <NoOp>
-  const double &rcd = d;
-}
-
-struct A { };
-struct B : A { } b;
-
-// CHECK: example1
-void example1() {
-  // CHECK: VarDecl{{.*}}ra 'struct A &'
-  // CHECK: ImplicitCastExpr{{.*}}'struct A' lvalue <DerivedToBase (A)>
-  A &ra = b;
-  // CHECK: VarDecl{{.*}}rca 'const struct A &'
-  // CHECK: ImplicitCastExpr{{.*}}'const struct A' lvalue <NoOp>
-  // CHECK: ImplicitCastExpr{{.*}}'struct A' lvalue <DerivedToBase (A)>
-  const A& rca = b;
-}
-
-extern B f();
-
-struct X {
-  operator B();
-} x;
-
-// CHECK: example2
-void example2() {
-  // CHECK: VarDecl{{.*}}rca 'const struct A &'
-  // CHECK: ImplicitCastExpr{{.*}}'const struct A' <NoOp>
-  // CHECK: ImplicitCastExpr{{.*}}'struct A' <DerivedToBase (A)>
-  // CHECK: CallExpr{{.*}}B
-  const A &rca = f(); 
-  // CHECK: VarDecl{{.*}}r 'const struct A &'
-  // CHECK: ImplicitCastExpr{{.*}}'const struct A' <NoOp>
-  // CHECK: ImplicitCastExpr{{.*}}'struct A' <DerivedToBase (A)>
-  // CHECK: CXXMemberCallExpr{{.*}}'struct B'
-  const A& r = x;
-}
-
-// CHECK: example3
-void example3() {
-  // CHECK: VarDecl{{.*}}rcd2 'const double &'
-  // CHECK: ImplicitCastExpr{{.*}} <IntegralToFloating>
-  const double& rcd2 = 2; 
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-var.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-var.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-var.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct Base { };
-struct Derived : Base { }; // expected-note{{candidate constructor (the implicit copy constructor) not viable}}
-struct Unrelated { };
-struct Derived2 : Base { };
-struct Diamond : Derived, Derived2 { };
-
-struct ConvertibleToBaseRef {
-  operator Base&() const;
-};
-
-struct ConvertibleToDerivedRef {
-  operator Derived&() const;
-};
-
-struct ConvertibleToBothDerivedRef {
-  operator Derived&(); // expected-note{{candidate function}}
-  operator Derived2&(); // expected-note{{candidate function}}
-};
-
-struct ConvertibleToIntRef {
-  operator int&();
-};
-
-struct ConvertibleToBase {
-  operator Base() const;
-};
-
-struct ConvertibleToDerived {
-  operator Derived() const;
-};
-
-struct ConvertibleToBothDerived {
-  operator Derived(); // expected-note{{candidate function}}
-  operator Derived2(); // expected-note{{candidate function}}
-};
-
-struct ConvertibleToInt {
-  operator int();
-};
-
-template<typename T> T create();
-
-// First bullet: lvalue references binding to lvalues (the simple cases).
-void bind_lvalue_to_lvalue(Base b, Derived d, 
-                           const Base bc, const Derived dc,
-                           Diamond diamond,
-                           int i) {
-  // Reference-compatible
-  Base &br1 = b;
-  Base &br2 = d;
-  Derived &dr1 = d;
-  Derived &dr2 = b; // expected-error{{non-const lvalue reference to type 'Derived' cannot bind to a value of unrelated type 'Base'}}
-  Base &br3 = bc; // expected-error{{drops qualifiers}}
-  Base &br4 = dc; // expected-error{{drops qualifiers}}
-  Base &br5 = diamond; // expected-error{{ambiguous conversion from derived class 'Diamond' to base class 'Base':}}
-  int &ir = i;
-  long &lr = i; // expected-error{{non-const lvalue reference to type 'long' cannot bind to a value of unrelated type 'int'}}
-}
-
-void bind_lvalue_quals(volatile Base b, volatile Derived d,
-                       volatile const Base bvc, volatile const Derived dvc,
-                       volatile const int ivc) {
-  volatile Base &bvr1 = b;
-  volatile Base &bvr2 = d;
-  volatile Base &bvr3 = bvc; // expected-error{{binding of reference to type 'volatile Base' to a value of type 'const volatile Base' drops qualifiers}}
-  volatile Base &bvr4 = dvc; // expected-error{{binding of reference to type 'volatile Base' to a value of type 'const volatile Derived' drops qualifiers}}
-  
-  volatile int &ir = ivc; // expected-error{{binding of reference to type 'volatile int' to a value of type 'const volatile int' drops qualifiers}}
-
-  const volatile Base &bcvr1 = b;
-  const volatile Base &bcvr2 = d;
-}
-
-void bind_lvalue_to_rvalue() {
-  Base &br1 = Base(); // expected-error{{non-const lvalue reference to type 'Base' cannot bind to a temporary of type 'Base'}}
-  Base &br2 = Derived(); // expected-error{{non-const lvalue reference to type 'Base' cannot bind to a temporary of type 'Derived'}}
-  const volatile Base &br3 = Base(); // expected-error{{volatile lvalue reference to type 'const volatile Base' cannot bind to a temporary of type 'Base'}}
-  const volatile Base &br4 = Derived(); // expected-error{{volatile lvalue reference to type 'const volatile Base' cannot bind to a temporary of type 'Derived'}}
-
-  int &ir = 17; // expected-error{{non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'}}
-}
-
-void bind_lvalue_to_unrelated(Unrelated ur) {
-  Base &br1 = ur; // expected-error{{non-const lvalue reference to type 'Base' cannot bind to a value of unrelated type 'Unrelated'}}
-  const volatile Base &br2 = ur; // expected-error{{volatile lvalue reference to type 'const volatile Base' cannot bind to a value of unrelated type 'Unrelated'}}
-}
-
-void bind_lvalue_to_conv_lvalue() {
-  // Not reference-related, but convertible
-  Base &nbr1 = ConvertibleToBaseRef();
-  Base &nbr2 = ConvertibleToDerivedRef();
-  Derived &ndr1 = ConvertibleToDerivedRef();
-  int &ir = ConvertibleToIntRef();
-}
-
-void bind_lvalue_to_conv_lvalue_ambig(ConvertibleToBothDerivedRef both) {
-  Derived &dr1 = both;
-  Base &br1 = both; // expected-error{{reference initialization of type 'Base &' with initializer of type 'ConvertibleToBothDerivedRef' is ambiguous}}
-}
-
-struct IntBitfield {
-  int i : 17; // expected-note{{bit-field is declared here}}
-};
-
-void test_bitfield(IntBitfield ib) {
-  int & ir1 = (ib.i); // expected-error{{non-const reference cannot bind to bit-field 'i'}}
-}
-
-// Second bullet: const lvalue reference binding to an rvalue with
-// similar type (both of which are class types).
-void bind_const_lvalue_to_rvalue() {
-  const Base &br1 = create<Base>();
-  const Base &br2 = create<Derived>();
-  const Derived &dr1 = create<Base>(); // expected-error{{no viable conversion}}
-
-  const Base &br3 = create<const Base>();
-  const Base &br4 = create<const Derived>();
-
-  const Base &br5 = create<const volatile Base>(); // expected-error{{binding of reference to type 'const Base' to a value of type 'const volatile Base' drops qualifiers}}
-  const Base &br6 = create<const volatile Derived>(); // expected-error{{binding of reference to type 'const Base' to a value of type 'const volatile Derived' drops qualifiers}}
-
-  const int &ir = create<int>();
-}
-
-// Second bullet: const lvalue reference binds to the result of a conversion.
-void bind_const_lvalue_to_class_conv_temporary() {
-  const Base &br1 = ConvertibleToBase();
-  const Base &br2 = ConvertibleToDerived();
-}
-void bind_lvalue_to_conv_rvalue_ambig(ConvertibleToBothDerived both) {
-  const Derived &dr1 = both;
-  const Base &br1 = both; // expected-error{{reference initialization of type 'const Base &' with initializer of type 'ConvertibleToBothDerived' is ambiguous}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace PR5909 {
-  struct Foo {
-    int x : 20;
-  };
-  
-  bool Test(const int& foo);
-  
-  const Foo f = { 0 };  // It compiles without the 'const'.
-  bool z = Test(f.x);
-}
-
-namespace PR6264 {
-  typedef int (&T)[3];
-  struct S
-  {
-    operator T ();
-  };
-  void f()
-  {
-    T bar = S();
-  }
-}
-
-namespace PR6066 {
-  struct B { };
-  struct A : B {
-    operator B*();
-    operator B&(); // expected-warning{{conversion function converting 'PR6066::A' to its base class 'PR6066::B' will never be used}}
-  };
-
-  void f(B&); // no rvalues accepted
-  void f(B*);
-
-  int g() {
-    f(A()); // calls f(B*)
-    return 0;
-  }
-}
-
-namespace test3 {
-  struct A {
-    unsigned bitX : 4; // expected-note 4 {{bit-field is declared here}}
-    unsigned bitY : 4; // expected-note {{bit-field is declared here}}
-    unsigned var;
-
-    void foo();
-  };
-
-  void test(A *a) {
-    unsigned &t0 = a->bitX; // expected-error {{non-const reference cannot bind to bit-field 'bitX'}}
-    unsigned &t1 = (unsigned&) a->bitX; // expected-error {{non-const reference cannot bind to bit-field 'bitX'}}
-    unsigned &t2 = const_cast<unsigned&>(a->bitX); // expected-error {{const_cast from bit-field lvalue to reference type 'unsigned int &'}}
-    unsigned &t3 = (a->foo(), a->bitX); // expected-error {{non-const reference cannot bind to bit-field 'bitX'}}
-    unsigned &t4 = (a->var ? a->bitX : a->bitY); // expected-error {{non-const reference cannot bind to bit-field}}
-    unsigned &t5 = (a->var ? a->bitX : a->bitX); // expected-error {{non-const reference cannot bind to bit-field}}
-    unsigned &t6 = (a->var ? a->bitX : a->var); // expected-error {{non-const reference cannot bind to bit-field}}
-    unsigned &t7 = (a->var ? a->var : a->bitY); // expected-error {{non-const reference cannot bind to bit-field}}
-    unsigned &t8 = (a->bitX = 3); // expected-error {{non-const reference cannot bind to bit-field 'bitX'}}
-    unsigned &t9 = (a->bitY += 3); // expected-error {{non-const reference cannot bind to bit-field 'bitY'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.string/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.string/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.string/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-char x1[]("hello");
-extern char x1[6];
-
-char x2[] = "hello";
-extern char x2[6];
-
-char x3[] = { "hello" };
-extern char x3[6];
-
-wchar_t x4[](L"hello");
-extern wchar_t x4[6];
-
-wchar_t x5[] = L"hello";
-extern wchar_t x5[6];
-
-wchar_t x6[] = { L"hello" };
-extern wchar_t x6[6];

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.string/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.string/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/dcl.init.string/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-char test1[1]="f"; // expected-error {{initializer-string for char array is too long}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p14-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p14-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p14-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct NoDefault {
-  NoDefault() = delete; // expected-note {{here}}
-  NoDefault(int);
-};
-struct Explicit { // expected-note 2 {{candidate}} expected-note {{here}}
-  explicit Explicit(int);
-};
-struct NoCopy {
-  NoCopy();
-  NoCopy(const NoCopy &) = delete; // expected-note {{here}}
-};
-struct NoMove {
-  NoMove();
-  NoMove(NoMove &&) = delete; // expected-note {{here}}
-};
-class Private {
-  Private(int); // expected-note {{here}}
-public:
-  Private();
-};
-class Friend {
-  friend class S;
-  Friend(int);
-};
-
-
-class S {
-  NoDefault nd1;
-  NoDefault nd2 = 42;
-  Explicit e1; // expected-note {{here}}
-  Explicit e2 = 42; // expected-error {{no viable conversion}}
-  NoCopy nc = NoCopy(); // expected-error {{call to deleted}}
-  NoMove nm = NoMove(); // expected-error {{call to deleted}}
-  Private p = 42; // expected-error {{private constructor}}
-  Friend f = 42;
-
-  S() {} // expected-error {{call to deleted constructor of 'NoDefault'}} \
-            expected-error {{must explicitly initialize the member 'e1' which does not have a default constructor}}
-  S(int) : nd1(42), e1(42) {}
-};
-
-// FIXME: test the other forms which use copy-initialization

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-//   A program that calls for default-initialization or value-initialization of
-//   an entity of reference type is illformed. If T is a cv-qualified type, the
-//   cv-unqualified version of T is used for these definitions of
-//   zero-initialization, default-initialization, and value-initialization.
-
-struct S { // expected-error {{implicit default constructor for 'S' must explicitly initialize the reference member}}
-  int &x; // expected-note {{declared here}} expected-error 3{{reference to type 'int' requires an initializer}}
-};
-S s; // expected-note {{implicit default constructor for 'S' first required here}}
-S f() {
-  return S(); // expected-note {{in value-initialization of type 'S' here}}
-}
-
-struct T
-  : S { // expected-note 2{{in value-initialization of type 'S' here}}
-};
-T t = T(); // expected-note {{in value-initialization of type 'T' here}}
-
-struct U {
-  T t[3]; // expected-note {{in value-initialization of type 'T' here}}
-};
-U u = U(); // expected-note {{in value-initialization of type 'U' here}}
-
-// Ensure that we handle C++11 in-class initializers properly as an extension.
-// In this case, there is no user-declared default constructor, so we
-// recursively apply the value-initialization checks, but we will emit a
-// constructor call anyway, because the default constructor is not trivial.
-struct V {
-  int n;
-  int &r = n; // expected-warning {{C++11}}
-};
-V v = V(); // ok
-struct W {
-  int n;
-  S s = { n }; // expected-warning {{C++11}}
-};
-W w = W(); // ok
-
-// Ensure we're not faking this up by making the default constructor
-// non-trivial.
-#define static_assert(B, S) typedef int assert_failed[(B) ? 1 : -1];
-static_assert(__has_trivial_constructor(S), "");
-static_assert(__has_trivial_constructor(T), "");
-static_assert(__has_trivial_constructor(U), "");
-static_assert(!__has_trivial_constructor(V), "");
-static_assert(!__has_trivial_constructor(W), "");

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// FIXME: Very incomplete!
-
-// If a program calls for the default initialization of an object of a
-// const-qualified type T, T shall be a class type with a
-// user-provided default constructor.
-struct MakeNonPOD { MakeNonPOD(); };
-struct NoUserDefault : public MakeNonPOD { };
-struct HasUserDefault { HasUserDefault(); };
-
-void test_const_default_init() {
-  const NoUserDefault x1; // expected-error{{default initialization of an object of const type 'const NoUserDefault' requires a user-provided default constructor}}
-  const HasUserDefault x2;
-  const int x3; // expected-error{{default initialization of an object of const type 'const int'}}
-}
-
-// rdar://8501008
-struct s0 {};
-struct s1 { static const s0 foo; };
-const struct s0 s1::foo; // expected-error{{default initialization of an object of const type 'const struct s0' requires a user-provided default constructor}}
-
-template<typename T>
-struct s2 {
-  static const s0 foo;
-};
-
-template<> const struct s0 s2<int>::foo; // okay

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.init/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-struct NotAggregateBase {};
-
-struct A : NotAggregateBase {
-private:
-  A() = default; // expected-note {{here}}
-};
-A a = {}; // expected-error {{calling a private constructor}}
-
-struct B : NotAggregateBase {
-  explicit B() = default; // expected-note {{here}}
-};
-B b = {}; // expected-error {{chosen constructor is explicit}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.array/p1-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.array/p1-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.array/p1-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-void f() {
-  int b[5];
-  auto a[5] = b; // expected-error{{'a' declared as array of 'auto'}}
-  auto *c[5] = b; // expected-error{{'c' declared as array of 'auto *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.array/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.array/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.array/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-// Simple form
-int ar1[10];
-
-// Element type cannot be:
-// - (cv) void
-volatile void ar2[10]; // expected-error {{incomplete element type 'volatile void'}}
-// - a reference
-int& ar3[10]; // expected-error {{array of references}}
-// - a function type
-typedef void Fn();
-Fn ar4[10]; // expected-error {{array of functions}}
-// - an abstract class
-struct Abstract { virtual void fn() = 0; }; // expected-note {{pure virtual}}
-Abstract ar5[10]; // expected-error {{abstract class}}
-
-// If we have a size, it must be greater than zero.
-int ar6[-1]; // expected-error {{array with a negative size}}
-int ar7[0u]; // expected-warning {{zero size arrays are an extension}}
-
-// An array with unknown bound is incomplete.
-int ar8[]; // expected-error {{needs an explicit size or an initializer}}
-// So is an array with an incomplete element type.
-struct Incomplete; // expected-note {{forward declaration}}
-Incomplete ar9[10]; // expected-error {{incomplete type}}
-// Neither of which should be a problem in situations where no complete type
-// is required. (PR5048)
-void fun(int p1[], Incomplete p2[10]);
-extern int ear1[];
-extern Incomplete ear2[10];
-
-// cv migrates to element type
-typedef const int cint;
-extern cint car1[10];
-typedef int intar[10];
-// thus this is a valid redeclaration
-extern const intar car1;
-
-// Check that instantiation works properly when the element type is a template.
-template <typename T> struct S {
-  typename T::type x; // expected-error {{has no members}}
-};
-S<int> ar10[10]; // expected-note {{requested here}}
-
-// Ensure that negative array size errors include the name of the declared
-// array as this is often used to simulate static_assert with template
-// instantiations, placing the 'error message' in the declarator name.
-int
-user_error_message
-[-1]; // expected-error {{user_error_message}}
-typedef int
-another_user_error_message
-[-1]; // expected-error {{another_user_error_message}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// A function that is explicitly defaulted shall
-// [...]
-//   -- not have default arguments
-struct DefArg {
-  static DefArg &&make();
-  DefArg(int n = 5) = default; // expected-error {{an explicitly-defaulted constructor cannot have default arguments}}
-  DefArg(const DefArg &DA = make()) = default; // expected-error {{an explicitly-defaulted constructor cannot have default arguments}}
-  DefArg(const DefArg &DA, int k = 3) = default; // expected-error {{an explicitly-defaulted copy constructor cannot have default arguments}}
-  DefArg(DefArg &&DA = make()) = default; // expected-error {{an explicitly-defaulted constructor cannot have default arguments}}
-  DefArg(DefArg &&DA, int k = 3) = default; // expected-error {{an explicitly-defaulted move constructor cannot have default arguments}}
-  DefArg &operator=(const DefArg&, int k = 4) = default; // expected-error {{parameter of overloaded 'operator=' cannot have a default argument}}
-  DefArg &operator=(DefArg&&, int k = 4) = default; // expected-error {{parameter of overloaded 'operator=' cannot have a default argument}}
-  ~DefArg(int k = 5) = default; // expected-error {{destructor cannot have any parameters}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/dcl.fct.def.default/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// FIXME: test with non-std qualifiers
-
-namespace move {
-  struct Const {
-    Const(const Const&&) = default; // expected-error {{the parameter for an explicitly-defaulted move constructor may not be const}}
-    Const& operator=(const Const&&) = default; // expected-error {{the parameter for an explicitly-defaulted move assignment operator may not be const}}
-  };
-
-  struct Volatile {
-    Volatile(volatile Volatile&&) = default; // expected-error {{the parameter for an explicitly-defaulted move constructor may not be volatile}}
-    Volatile& operator=(volatile Volatile&&) = default; // expected-error {{the parameter for an explicitly-defaulted move assignment operator may not be volatile}}
-  };
-
-  struct AssignmentRet1 {
-    AssignmentRet1&& operator=(AssignmentRet1&&) = default; // expected-error {{explicitly-defaulted move assignment operator must return 'move::AssignmentRet1 &'}}
-  };
-
-  struct AssignmentRet2 {
-    const AssignmentRet2& operator=(AssignmentRet2&&) = default; // expected-error {{explicitly-defaulted move assignment operator must return 'move::AssignmentRet2 &'}}
-  };
-
-  struct ConstAssignment {
-    ConstAssignment& operator=(ConstAssignment&&) const = default; // expected-error {{an explicitly-defaulted move assignment operator may not have 'const', 'constexpr' or 'volatile' qualifiers}}
-  };
-}
-
-namespace copy {
-  struct Volatile {
-    Volatile(const volatile Volatile&) = default; // expected-error {{the parameter for an explicitly-defaulted copy constructor may not be volatile}}
-    Volatile& operator=(const volatile Volatile&) = default; // expected-error {{the parameter for an explicitly-defaulted copy assignment operator may not be volatile}}
-  };
-
-  struct Const {
-    Const(const Const&) = default;
-    Const& operator=(const Const&) = default;
-  };
-
-  struct NonConst {
-    NonConst(NonConst&) = default;
-    NonConst& operator=(NonConst&) = default;
-  };
-
-  struct NonConst2 {
-    NonConst2(NonConst2&);
-    NonConst2& operator=(NonConst2&);
-  };
-  NonConst2::NonConst2(NonConst2&) = default;
-  NonConst2 &NonConst2::operator=(NonConst2&) = default;
-
-  struct NonConst3 {
-    NonConst3(NonConst3&) = default;
-    NonConst3& operator=(NonConst3&) = default;
-    NonConst nc;
-  };
-
-  struct BadConst {
-    BadConst(const BadConst&) = default; // expected-error {{is const, but}}
-    BadConst& operator=(const BadConst&) = default; // expected-error {{is const, but}}
-    NonConst nc; // makes implicit copy non-const
-  };
-
-  struct AssignmentRet1 {
-    AssignmentRet1&& operator=(const AssignmentRet1&) = default; // expected-error {{explicitly-defaulted copy assignment operator must return 'copy::AssignmentRet1 &'}}
-  };
-
-  struct AssignmentRet2 {
-    const AssignmentRet2& operator=(const AssignmentRet2&) = default; // expected-error {{explicitly-defaulted copy assignment operator must return 'copy::AssignmentRet2 &'}}
-  };
-
-  struct ConstAssignment {
-    ConstAssignment& operator=(const ConstAssignment&) const = default; // expected-error {{an explicitly-defaulted copy assignment operator may not have 'const', 'constexpr' or 'volatile' qualifiers}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p13.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p13.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p13.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fcxx-exceptions -fexceptions -verify %s
-
-// When it is part of a parameter-declaration-clause, the parameter
-// pack is a function parameter pack.
-template<typename ...Types>
-void f0(Types ...args);
-
-template<typename ...Types>
-void f1(const Types &...args);
-
-// [ Note: Otherwise, the parameter-declaration is part of a
-// template-parameter-list and the parameter pack is a template
-// parameter pack; see 14.1. -- end note ]
-template<int ...N>
-struct X0 { };
-
-template<typename ...Types>
-struct X1 {
-  template<Types ...Values> struct Inner;
-};
-
-// A declarator-id or abstract-declarator containing an ellipsis shall
-// only be used in a parameter-declaration.
-int (...f2)(int); // expected-error{{only function and template parameters can be parameter packs}}
-
-void f3() {
-  int ...x; // expected-error{{only function and template parameters can be parameter packs}}
-  if (int ...y = 17) { }  // expected-error{{only function and template parameters can be parameter packs}}
-
-  for (int ...z = 0; z < 10; ++z) { }  // expected-error{{only function and template parameters can be parameter packs}}
-
-  try {
-  } catch (int ...e) { // expected-error{{only function and template parameters can be parameter packs}}
-  }
-}
-
-template<typename ...Types>
-struct X2 {
-  Types ...members; // expected-error{{only function and template parameters can be parameter packs}} \
-                    // expected-error{{data member type contains unexpanded parameter pack}}
-};
-
-// The type T of the declarator-id of the function parameter pack
-// shall contain a template parameter pack; each template parameter
-// pack in T is expanded by the function parameter pack.
-template<typename T>
-void f4(T ...args); // expected-error{{type 'T' of function parameter pack does not contain any unexpanded parameter packs}}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p14.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p14.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p14.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T> struct identity;
-template<typename ...Types> struct tuple;
-
-template<typename T, typename U> struct is_same {
-  static const bool value = false;
-};
-
-template<typename T> struct is_same<T, T> {
-  static const bool value = true;
-};
-
-// There is a syntactic ambiguity when an ellipsis occurs at the end
-// of a parameter-declaration-clause without a preceding comma. In
-// this case, the ellipsis is parsed as part of the
-// abstract-declarator if the type of the parameter names a template
-// parameter pack that has not been expanded; otherwise, it is parsed
-// as part of the parameter-declaration-clause.
-
-template<typename T, typename ...Types>
-struct X0 {
-  typedef identity<T(Types...)> function_pack_1;
-  typedef identity<T(Types......)> variadic_function_pack_1;
-  typedef identity<T(T...)> variadic_1;
-  typedef tuple<T(Types, ...)...> template_arg_expansion_1;
-};
-
-
-
-// FIXME: Once function parameter packs are implemented, we can test all of the disambiguation

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p2-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p2-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p2-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 
-
-auto a() -> int; // ok
-const auto b() -> int; // expected-error {{function with trailing return type must specify return type 'auto', not 'auto const'}}
-auto *c() -> int; // expected-error {{function with trailing return type must specify return type 'auto', not 'auto *'}}
-auto (d() -> int); // expected-error {{trailing return type may not be nested within parentheses}}
-auto e() -> auto (*)() -> auto (*)() -> void; // ok: same as void (*(*e())())();

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-void f(int) { } // expected-note {{previous definition is here}}
-void f(const int) { } // expected-error {{redefinition of 'f'}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-void f0() &; // expected-error {{non-member function cannot have '&' qualifier}}
-void f1() &&; // expected-error {{non-member function cannot have '&&' qualifier}}
-void f2() const volatile &&; // expected-error {{non-member function cannot have 'const volatile &&' qualifier}}
-
-struct X {
-  void f0() &;
-  void f1() &&;
-  static void f2() &; // expected-error{{static member function cannot have '&' qualifier}}
-  static void f3() &&; // expected-error{{static member function cannot have '&&' qualifier}}
-};
-
-typedef void func_type_lvalue() &;
-typedef void func_type_rvalue() &&;
-
-typedef func_type_lvalue *func_type_lvalue_ptr; // expected-error{{pointer to function type 'func_type_lvalue' (aka 'void () &') cannot have '&' qualifier}}
-typedef func_type_rvalue *func_type_rvalue_ptr; // expected-error{{pointer to function type 'func_type_rvalue' (aka 'void () &&') cannot have '&&' qualifier}}
-
-typedef func_type_lvalue &func_type_lvalue_ref; // expected-error{{reference to function type 'func_type_lvalue' (aka 'void () &') cannot have '&' qualifier}}
-typedef func_type_rvalue &func_type_rvalue_ref; // expected-error{{reference to function type 'func_type_rvalue' (aka 'void () &&') cannot have '&&' qualifier}}
-
-template<typename T = func_type_lvalue> struct wrap {
-  typedef T val;
-  typedef T *ptr;
-  typedef T &ref;
-};
-
-using func_type_lvalue = wrap<>::val;
-using func_type_lvalue = wrap<func_type_lvalue>::val;
-using func_type_rvalue = wrap<func_type_rvalue>::val;
-
-using func_type_lvalue_ptr = wrap<>::ptr;
-using func_type_lvalue_ptr = wrap<func_type_lvalue>::ptr;
-using func_type_rvalue_ptr = wrap<func_type_rvalue>::ptr;
-
-using func_type_lvalue_ref = wrap<>::ref;
-using func_type_lvalue_ref = wrap<func_type_lvalue>::ref;
-using func_type_rvalue_ref = wrap<func_type_rvalue>::ref;
-
-func_type_lvalue f2; // expected-error{{non-member function of type 'func_type_lvalue' (aka 'void () &') cannot have '&' qualifier}}
-func_type_rvalue f3; // expected-error{{non-member function of type 'func_type_rvalue' (aka 'void () &&') cannot have '&&' qualifier}}
-
-struct Y {
-  func_type_lvalue f0;
-  func_type_rvalue f1;
-};
-
-void (X::*mpf1)() & = &X::f0;
-void (X::*mpf2)() && = &X::f1;
-
-
-void (f() &&); // expected-error{{non-member function cannot have '&&' qualifier}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef void F() const;
-
-void f() const; // expected-error {{non-member function cannot have 'const' qualifier}}
-F g; // expected-error {{non-member function of type 'F' (aka 'void () const') cannot have 'const' qualifier}}
-
-struct X {
-  void f() const;
-  friend void g() const; // expected-error {{non-member function cannot have 'const' qualifier}}
-  static void h() const; // expected-error {{static member function cannot have 'const' qualifier}}
-  F i; // ok
-  friend F j; // expected-error {{non-member function of type 'F' (aka 'void () const') cannot have 'const' qualifier}}
-  static F k; // expected-error {{static member function of type 'F' (aka 'void () const') cannot have 'const' qualifier}}
-};
-
-struct Y {
-  friend void X::f() const;
-  friend void ::f() const; // expected-error {{non-member function cannot have 'const' qualifier}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-auto f() -> int[32]; // expected-error{{function cannot return array}}
-auto g() -> int(int); // expected-error{{function cannot return function}}
-auto h() -> auto() -> int; // expected-error{{function cannot return function}}
-auto i() -> auto(*)() -> int;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A { };
-A::A (enum { e1 }) {} // expected-error{{can not be defined in a parameter}}
-void A::f(enum { e2 }) {} // expected-error{{can not be defined in a parameter}}
-
-enum { e3 } A::g() { } // expected-error{{can not be defined in the result type}} \
-// expected-error{{out-of-line definition}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p9-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p9-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct/p9-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// FIXME: We should catch the case of tag with an incomplete type here (which
-// will necessarily be ill-formed as a trailing return type for a function
-// definition), and recover with a "type cannot be defined in a trailing return
-// type" error.
-auto j() -> enum { e3 }; // expected-error{{unnamed enumeration must be a definition}} expected-error {{expected a type}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A { 
-  virtual void f(int a = 7);
-}; 
-
-struct B : public A {
-  void f(int a); // expected-note{{'f' declared here}}
-}; 
-
-void m() {
-  B* pb = new B; 
-  A* pa = pb; 
-  pa->f(); // OK, calls pa->B::f(7) 
-  pb->f(); // expected-error{{too few arguments}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-void point(int = 3, int = 4);
-
-void test_point() {
-  point(1,2); 
-  point(1); 
-  point();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-void nondecl(int (*f)(int x = 5)) // expected-error {{default arguments can only be specified}}
-{
-  void (*f2)(int = 17)  // expected-error {{default arguments can only be specified}}
-  = (void (*)(int = 42))f; // expected-error {{default arguments can only be specified}}
-}
-
-struct X0 {
-  int (*f)(int = 17); // expected-error{{default arguments can only be specified for parameters in a function declaration}}
-  void (*g())(int = 22); // expected-error{{default arguments can only be specified for parameters in a function declaration}}
-  void (*h(int = 49))(int);
-  auto i(int) -> void (*)(int = 9); // expected-error{{default arguments can only be specified for parameters in a function declaration}}
-  
-  void mem8(int (*fp)(int) = (int (*)(int = 17))0); // expected-error{{default arguments can only be specified for parameters in a function declaration}}  
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f0(int i, int j, int k = 3);
-void f0(int i, int j, int k);
-void f0(int i, int j = 2, int k);
-void f0(int i, int j, int k);
-void f0(int i = 1, // expected-note{{previous definition}}
-        int j, int k);
-void f0(int i, int j, int k);
-
-namespace N0 {
-  void f0(int, int, int); // expected-note{{candidate}}
-
-  void test_f0_inner_scope() {
-    f0(); // expected-error{{no matching}}
-  }
-}
-
-void test_f0_outer_scope() {
-  f0(); // okay
-}
-
-void f0(int i = 1, // expected-error{{redefinition of default argument}}
-        int, int); 
-
-template<typename T> void f1(T); // expected-note{{previous}}
-
-template<typename T>
-void f1(T = T()); // expected-error{{cannot be added}}
-
-
-namespace N1 {
-  // example from C++03 standard
-  // FIXME: make these "f2"s into "f"s, then fix our scoping issues
-  void f2(int, int); 
-  void f2(int, int = 7); 
-  void h() {
-    f2(3); // OK, calls f(3, 7) 
-    void f(int = 1, int);	// expected-error{{missing default argument}}
-  }
-  
-  void m()
-  {
-    void f(int, int); // expected-note{{'f' declared here}}
-    f(4);  // expected-error{{too few arguments to function call}}
-    void f(int, int = 5); // expected-note{{previous definition}}
-    f(4); // okay
-    void f(int, int = 5); // expected-error{{redefinition of default argument}}
-  }
-  
-  void n()
-  {
-    f2(6); // okay
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-float global_f;
-
-void f0(int *ip = &global_f); // expected-error{{cannot initialize}} \
-// expected-note{{passing argument to parameter 'ip' here}}
-
-// Example from C++03 standard
-int a = 1; 
-int f(int); 
-int g(int x = f(a));
-
-void h() { 
-  a = 2;
-  {
-    int *a = 0;
-    g(); // FIXME: check that a is called with a value of 2
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class C { 
-public:
-  void f(int i = 3); // expected-note{{here}}
-  void g(int i, int j = 99);
-};
-
-void C::f(int i = 3) { } // expected-error{{redefinition of default argument}}
-
-void C::g(int i = 88, int j) { }
-
-void test_C(C c) {
-  c.f();
-  c.g();
-}
-
-template<typename T>
-struct X0 {
-  void f(int);
-  
-  struct Inner {
-    void g(int);
-  };
-};
-
-// DR217
-template<typename T>
-void X0<T>::f(int = 17) { } // expected-error{{cannot be added}}
-
-// DR217 + DR205 (reading tea leaves)
-template<typename T>
-void X0<T>::Inner::g(int = 17) { } // expected-error{{cannot be added}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void h()
-{
-  int i;
-  extern void h2(int x = sizeof(i)); // expected-error {{default argument references local variable 'i' of enclosing function}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class A { 
-  void f(A* p = this) { }	// expected-error{{invalid use of 'this'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.mptr/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class A { 
-public:
-  int& i; 
-
-  A(int& i) : i(i) { }
-  
-  static int s;
-}; 
-
-template<typename T> void ft(T& t) {
-  t.*&T::i = 10; // expected-error{{cannot form a pointer-to-member to member 'i' of reference type 'int &'}}
-}
-
-void f() {
-  int b;
-  A a(b); 
-  
-  int A::*ip = &A::s; // expected-error {{cannot initialize a variable of type 'int A::*' with an rvalue of type 'int *'}}
-  a.*&A::s = 10; // expected-error{{right hand operand to .* has non pointer-to-member type 'int *'}}
-  
-  a.*&A::i = 10; // expected-error{{cannot form a pointer-to-member to member 'i' of reference type 'int &'}}
-  ft(a); // expected-note{{in instantiation of function template specialization 'ft<A>' requested here}}
-  
-  void A::*p = 0; // expected-error{{'p' declared as a member pointer to void}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,145 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++ [dcl.ref]p5:
-//   There shall be no references to references, no arrays of
-//   references, and no pointers to references.
-
-// The crazy formatting in here is to enforce the exact report locations.
-
-typedef int &intref;
-typedef intref &intrefref;
-
-template <class T> class RefMem { // expected-warning{{class 'RefMem<int &>' does not declare any constructor to initialize its non-modifiable members}}
-  T
-    &
-      member; // expected-note{{reference member 'member' will never be initialized}}
-};
-
-struct RefRef {
-  int
-      &
-        &             // expected-error {{declared as a reference to a reference}}
-          refref0;
-
-  intref
-         &
-           refref1; // collapses
-
-  intrefref
-            &
-              refref2; // collapses
-
-  RefMem
-        <
-         int
-            &
-             >
-               refref3; // collapses expected-note{{in instantiation of template class 'RefMem<int &>' requested here}}
-};
-
-
-template <class T> class PtrMem {
-  T
-    *                   // expected-error {{declared as a pointer to a reference}}
-      member;
-};
-
-struct RefPtr {
-  typedef
-          int
-              &
-                *       // expected-error {{declared as a pointer to a reference}}
-                  intrefptr;
-
-  typedef
-          intref
-                 *      // expected-error {{declared as a pointer to a reference}}
-                   intrefptr2;
-
-  int
-      &
-        *               // expected-error {{declared as a pointer to a reference}}
-          refptr0;
-
-  intref
-         *              // expected-error {{declared as a pointer to a reference}}
-           refptr1;
-
-  PtrMem
-        <
-         int
-            &
-             >
-               refptr2; // expected-note {{in instantiation}}
-};
-
-template <class T> class ArrMem {
-  T
-    member
-           [ // expected-error {{declared as array of references}}
-            10
-              ];
-};
-template <class T, unsigned N> class DepArrMem {
-  T
-    member
-           [ // expected-error {{declared as array of references}}
-            N
-             ];
-};
-
-struct RefArr {
-  typedef 
-          int
-              &
-                intrefarr
-                         [ // expected-error {{declared as array of references}}
-                          2
-                           ];
-
-  typedef
-          intref
-                 intrefarr
-                          [ // expected-error {{declared as array of references}}
-                           2
-                            ];
-
-  int
-      &
-        refarr0
-               [ // expected-error {{declared as array of references}}
-                2
-                 ];
-  intref
-         refarr1
-                [ // expected-error {{declared as array of references}}
-                 2
-                  ];
-  ArrMem
-        <
-         int
-            &
-             >
-               refarr2; // expected-note {{in instantiation}}
-  DepArrMem
-           <
-            int
-               &,
-                  10
-                    >
-                      refarr3; // expected-note {{in instantiation}}
-};
-
-
-//   The declaration of a reference shall contain an initializer
-//   (8.5.3) except when the declaration contains an explicit extern
-//   specifier (7.1.1), is a class member (9.2) declaration within a
-//   class definition, or is the declaration of a parameter or a
-//   return type (8.3.5); see 3.1. A reference shall be initialized to
-//   refer to a valid object or function. [ Note: in particular, a
-//   null reference cannot exist in a well-defined program, because
-//   the only way to create such a reference would be to bind it to
-//   the "object" obtained by dereferencing a null pointer, which
-//   causes undefined behavior. As described in 9.6, a reference
-//   cannot be bound directly to a bit-field.
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/dcl.ref/p6-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T, typename U> 
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-#define JOIN2(X,Y) X##Y
-#define JOIN(X,Y) JOIN2(X,Y)
-#define CHECK_EQUAL_TYPES(T1, T2) \
-  int JOIN(array,__LINE__)[is_same<T1, T2>::value? 1 : -1]
-
-int i; 
-typedef int& LRI; 
-typedef int&& RRI;
-
-typedef LRI& r1; CHECK_EQUAL_TYPES(r1, int&);
-typedef const LRI& r2; CHECK_EQUAL_TYPES(r2, int&);
-typedef const LRI&& r3; CHECK_EQUAL_TYPES(r3, int&);
-
-typedef RRI& r4; CHECK_EQUAL_TYPES(r4, int&);
-typedef RRI&& r5; CHECK_EQUAL_TYPES(r5, int&&);

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// The nested-name-specifier of a qualified declarator-id shall not begin with a decltype-specifier.
-class foo {
-  static int i;
-  void func();
-};
-
-int decltype(foo())::i; // expected-error{{'decltype' cannot be used to name a declaration}}
-void decltype(foo())::func() { // expected-error{{'decltype' cannot be used to name a declaration}}
-}
-
-
-template<typename T>
-class tfoo {
-  static int i;
-  void func();
-};
-
-template<typename T>
-int decltype(tfoo<T>())::i; // expected-error{{nested name specifier 'decltype(tfoo<T>())::' for declaration does not refer into a class, class template or class template partial specialization}}
-template<typename T>
-void decltype(tfoo<T>())::func() { // expected-error{{nested name specifier 'decltype(tfoo<T>())::' for declaration does not refer into a class, class template or class template partial specialization}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.meaning/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace PR8019 {
-  struct x;
-  template<typename T> struct x2;
-  struct y { 
-    struct PR8019::x { int x; };  // expected-error{{non-friend class member 'x' cannot have a qualified name}}
-  
-    struct inner;
-    struct y::inner { }; // expected-error{{extra qualification on member 'inner'}}
-
-    template<typename T>
-    struct PR8019::x2 { }; // expected-error{{non-friend class member 'x2' cannot have a qualified name}}
-
-    template<typename T>
-    struct inner_template;
-  
-    template<typename T>
-    struct y::inner_template { }; // expected-error{{extra qualification on member 'inner_template'}}
-  };
-
-}
-
-namespace NS {
-  void foo();
-  extern int bar;
-  struct X;
-  template<typename T> struct Y;
-  template<typename T> void wibble(T);
-}
-namespace NS {
-  void NS::foo() {} // expected-error{{extra qualification on member 'foo'}}
-  int NS::bar; // expected-error{{extra qualification on member 'bar'}}
-  struct NS::X { }; // expected-error{{extra qualification on member 'X'}}
-  template<typename T> struct NS::Y; // expected-error{{extra qualification on member 'Y'}}
-  template<typename T> void NS::wibble(T) { } // expected-error{{extra qualification on member 'wibble'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.name/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.name/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/dcl.name/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace pr6200 {
-  struct v {};
-  enum E { e };
-  struct s {
-    int i;
-    operator struct v() { return v(); };
-    operator enum E() { return e; }
-  };
-
-  void f()
-  {
-    // None of these is a declaration.
-    (void)new struct s;
-    (void)new enum E;
-    (void)&s::operator struct v;
-    (void)&s::operator enum E;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/p4-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/p4-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/dcl.decl/p4-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-struct X {
-  void f() &;
-  void g() &&;
-};
-
-void (X::*pmf)() & = &X::f;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.handle/p16.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.handle/p16.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.handle/p16.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
-
-// The object declared in an exception-declaration or, if the
-// exception-declaration does not specify a name, a temporary (12.2)
-// is copy-initialized (8.5) from the exception object.
-//
-template<typename T>
-class X {
-  T* ptr;
-
-public:
-  X(const X<T> &) {
-    int *ip = 0;
-    ptr = ip; // expected-error{{assigning to 'float *' from incompatible type 'int *'}}
-  }
-
-  ~X() {
-    float *fp = 0;
-    ptr = fp; // expected-error{{assigning to 'int *' from incompatible type 'float *'}}
-  }
-};
-
-void f() {
-  try {
-  } catch (X<float>) { // expected-note{{instantiation}}
-    // copy constructor
-  } catch (X<int> xi) { // expected-note{{instantiation}}
-    // destructor
-  }
-}
-
-struct Abstract {
-  virtual void f() = 0; // expected-note{{pure virtual}}
-};
-
-void g() {
-  try {
-  } catch (Abstract) { // expected-error{{variable type 'Abstract' is an abstract class}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/canonical.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/canonical.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/canonical.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-// PR10087: Make sure that we don't conflate exception specifications
-// from different functions in the canonical type system.
-namespace std
-{
-
-template <class _Tp> _Tp&& declval() noexcept;
-
-template <class _Tp, class... _Args>
-struct __is_nothrow_constructible
-{
-  static const bool value = noexcept(_Tp(declval<_Args>()...));
-};
-
-template<class, class _Traits, class _Allocator>
-class basic_string
-{
-public:
-  typedef typename _Traits::char_type value_type;
-  typedef _Allocator allocator_type;
-
-  basic_string()
-      noexcept(__is_nothrow_constructible<allocator_type>::value);
-};
-
-template <class, class, class _Compare>
-struct __map_value_compare
-{
-public:
-  __map_value_compare()
-      noexcept(__is_nothrow_constructible<_Compare>::value);
-};
-
-struct less
-{
-};
-
-struct map
-{
-  typedef __map_value_compare<int, short, less> __vc;
-  __vc vc_;
-};
-
-
-template<class T, class _Traits, class _Allocator>
-basic_string<T, _Traits, _Allocator>::basic_string() noexcept(__is_nothrow_constructible<allocator_type>::value) {}
-
-template <class T, class Value, class _Compare>
-__map_value_compare<T, Value, _Compare>::__map_value_compare()
-  noexcept(__is_nothrow_constructible<_Compare>::value) {}
-
-}  // std

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-
-// Simple parser tests, dynamic specification.
-
-namespace dyn {
-
-  struct X { };
-
-  struct Y { };
-
-  void f() throw() { }
-
-  void g(int) throw(X) { }
-
-  void h() throw(X, Y) { }
-
-  class Class {
-    void foo() throw (X, Y) { }
-  };
-
-  void (*fptr)() throw();
-
-}
-
-// Simple parser tests, noexcept specification.
-
-namespace noex {
-
-  void f1() noexcept { }
-  void f2() noexcept (true) { }
-  void f3() noexcept (false) { }
-  void f4() noexcept (1 < 2) { }
-
-  class CA1 {
-    void foo() noexcept { }
-    void bar() noexcept (true) { }
-  };
-
-  void (*fptr1)() noexcept;
-  void (*fptr2)() noexcept (true);
-
-}
-
-namespace mix {
-
-  void f() throw(int) noexcept { } // expected-error {{cannot have both}}
-  void g() noexcept throw(int) { } // expected-error {{cannot have both}}
-
-}
-
-// Sema tests, noexcept specification
-
-namespace noex {
-
-  struct A {};
-
-  void g1() noexcept(A()); // expected-error {{not contextually convertible}}
-  void g2(bool b) noexcept(b); // expected-error {{argument to noexcept specifier must be a constant expression}} expected-note {{read of non-const variable 'b'}} expected-note {{here}}
-
-}
-
-namespace noexcept_unevaluated {
-  template<typename T> bool f(T) {
-    T* x = 1;
-  }
-
-  template<typename T>
-  void g(T x) noexcept((sizeof(T) == sizeof(int)) || noexcept(f(x))) { }
-
-  void h() {
-    g(1);
-  }
-}
-
-namespace PR11084 {
-  template<int X> struct A { 
-    static int f() noexcept(1/X) { return 10; }  // expected-error{{argument to noexcept specifier must be a constant expression}} expected-note{{division by zero}}
-  };
-
-  void g() { A<0>::f(); } // expected-note{{in instantiation of exception specification for 'f' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// This is the "let the user shoot himself in the foot" clause.
-void f() noexcept {
-  throw 0; // no-error
-}
-void g() throw() {
-  throw 0; // no-error
-}
-void h() throw(int) {
-  throw 0.0; // no-error
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p14-ir.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p14-ir.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p14-ir.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -o - %s | FileCheck %s
-
-// Copy constructor
-struct X0 {
-  X0();
-  X0(const X0 &) throw();
-  X0(X0 &);
-};
-
-struct X1 {
-  X1();
-  X1(const X1 &) throw();
-};
-
-struct X2 : X1 { 
-  X2();
-};
-struct X3 : X0, X1 { 
-  X3();
-};
-
-struct X4 {
-  X4(X4 &) throw();
-};
-
-struct X5 : X0, X4 { };
-
-void test(X2 x2, X3 x3, X5 x5) {
-  // CHECK: define linkonce_odr void @_ZN2X2C1ERKS_(%struct.X2* %this, %struct.X2*) unnamed_addr
-  // CHECK:      call void @_ZN2X2C2ERKS_({{.*}}) [[NUW:#[0-9]+]]
-  // CHECK-NEXT: ret void
-  // CHECK-NEXT: }
-  X2 x2a(x2);
-  // CHECK: define linkonce_odr void @_ZN2X3C1ERKS_(%struct.X3* %this, %struct.X3*) unnamed_addr
-  // CHECK:      call void @_ZN2X3C2ERKS_({{.*}}) [[NUW]]
-  // CHECK-NEXT: ret void
-  // CHECK-NEXT: }
-  X3 x3a(x3);
-  // CHECK: define linkonce_odr void @_ZN2X5C1ERS_({{.*}}) unnamed_addr
-  // CHECK-NOT: call void @__cxa_call_unexpected
-  // CHECK: ret void
-  X5 x5a(x5);
-}
-
-// Default constructor
-struct X6 {
-  X6() throw();
-};
-
-struct X7 { 
-  X7();
-};
-
-struct X8 : X6 { };
-struct X9 : X6, X7 { };
-
-void test() {
-  // CHECK: define linkonce_odr void @_ZN2X8C1Ev(%struct.X8* %this) unnamed_addr
-  // CHECK:      call void @_ZN2X8C2Ev({{.*}}) [[NUW]]
-  // CHECK-NEXT: ret void
-  X8();
-
-  // CHECK: define linkonce_odr void @_ZN2X9C1Ev(%struct.X9* %this) unnamed_addr
-  //   FIXME: check that this is the end of the line here:
-  // CHECK:      call void @_ZN2X9C2Ev({{.*}})
-  // CHECK-NEXT: ret void
-  X9();
-
-  // CHECK: define linkonce_odr void @_ZN2X9C2Ev(%struct.X9* %this) unnamed_addr
-  // CHECK:      call void @_ZN2X6C2Ev({{.*}}) [[NUW]]
-  //   FIXME: and here:
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: call void @_ZN2X7C2Ev({{.*}})
-  // CHECK: ret void
-
-  // CHECK: define linkonce_odr void @_ZN2X8C2Ev(%struct.X8* %this) unnamed_addr
-  // CHECK:      call void @_ZN2X6C2Ev({{.*}}) [[NUW]]
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p14.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p14.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p14.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,137 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -verify -std=c++11 %s
-struct A { };
-struct B { };
-struct C { };
-
-// Destructor
-struct X0 { 
-  virtual ~X0() throw(A); // expected-note{{overridden virtual function is here}} 
-};
-struct X1 { 
-  virtual ~X1() throw(B); // expected-note{{overridden virtual function is here}} 
-};
-struct X2 : public X0, public X1 { }; // expected-error 2{{exception specification of overriding function is more lax than base version}}
- 
-// Copy-assignment operator.
-struct CA0 {
-  CA0 &operator=(const CA0&) throw(A);
-};
-struct CA1 {
-  CA1 &operator=(const CA1&) throw(B);
-};
-struct CA2 : CA0, CA1 { };
-
-void test_CA() {
-  CA2 &(CA2::*captr1)(const CA2&) throw(A, B) = &CA2::operator=;
-  CA2 &(CA2::*captr2)(const CA2&) throw(A, B, C) = &CA2::operator=;
-  CA2 &(CA2::*captr3)(const CA2&) throw(A) = &CA2::operator=; // expected-error{{target exception specification is not superset of source}}
-  CA2 &(CA2::*captr4)(const CA2&) throw(B) = &CA2::operator=; // expected-error{{target exception specification is not superset of source}}
-}
-
-// In-class member initializers.
-struct IC0 {
-  int inClassInit = 0;
-};
-struct IC1 {
-  int inClassInit = (throw B(), 0);
-};
-// FIXME: the exception specification on the default constructor is wrong:
-// we cannot currently compute the set of thrown types.
-static_assert(noexcept(IC0()), "IC0() does not throw");
-static_assert(!noexcept(IC1()), "IC1() throws");
-
-namespace PR13381 {
-  struct NoThrowMove {
-    NoThrowMove(const NoThrowMove &);
-    NoThrowMove(NoThrowMove &&) noexcept;
-    NoThrowMove &operator=(const NoThrowMove &);
-    NoThrowMove &operator=(NoThrowMove &&) noexcept;
-  };
-  struct NoThrowMoveOnly {
-    NoThrowMoveOnly(NoThrowMoveOnly &&) noexcept;
-    NoThrowMoveOnly &operator=(NoThrowMoveOnly &&) noexcept;
-  };
-  struct X {
-    const NoThrowMove a;
-    NoThrowMoveOnly b;
-
-    static X val();
-    static X &ref();
-  };
-  // These both perform a move, but that copy might throw, because it calls
-  // NoThrowMove's copy constructor (because PR13381::a is const).
-  static_assert(!noexcept(X(X::val())), "");
-  static_assert(!noexcept(X::ref() = X::val()), "");
-}
-
-namespace PR14141 {
-  // Part of DR1351: the implicit exception-specification is noexcept(false) if
-  // the set of potential exceptions of the special member function contains
-  // "any". Hence it is compatible with noexcept(false).
-  struct ThrowingBase {
-    ThrowingBase() noexcept(false);
-    ThrowingBase(const ThrowingBase&) noexcept(false);
-    ThrowingBase(ThrowingBase&&) noexcept(false);
-    ThrowingBase &operator=(const ThrowingBase&) noexcept(false);
-    ThrowingBase &operator=(ThrowingBase&&) noexcept(false);
-    ~ThrowingBase() noexcept(false);
-  };
-  struct Derived : ThrowingBase {
-    Derived() noexcept(false) = default;
-    Derived(const Derived&) noexcept(false) = default;
-    Derived(Derived&&) noexcept(false) = default;
-    Derived &operator=(const Derived&) noexcept(false) = default;
-    Derived &operator=(Derived&&) noexcept(false) = default;
-    ~Derived() noexcept(false) = default;
-  };
-  struct Derived2 : ThrowingBase {
-    Derived2() = default;
-    Derived2(const Derived2&) = default;
-    Derived2(Derived2&&) = default;
-    Derived2 &operator=(const Derived2&) = default;
-    Derived2 &operator=(Derived2&&) = default;
-    ~Derived2() = default;
-  };
-  struct Derived3 : ThrowingBase {
-    Derived3() noexcept(true) = default; // expected-error {{does not match the calculated}}
-    Derived3(const Derived3&) noexcept(true) = default; // expected-error {{does not match the calculated}}
-    Derived3(Derived3&&) noexcept(true) = default; // expected-error {{does not match the calculated}}
-    Derived3 &operator=(const Derived3&) noexcept(true) = default; // expected-error {{does not match the calculated}}
-    Derived3 &operator=(Derived3&&) noexcept(true) = default; // expected-error {{does not match the calculated}}
-    ~Derived3() noexcept(true) = default; // expected-error {{does not match the calculated}}
-  };
-}
-
-namespace rdar13017229 {
-  struct Base {
-    virtual ~Base() {}
-  };
-  
-  struct Derived : Base {
-    virtual ~Derived();
-    Typo foo(); // expected-error{{unknown type name 'Typo'}}
-  };
-}
-
-namespace InhCtor {
-  template<int> struct X {};
-  struct Base {
-    Base(X<0>) noexcept(true);
-    Base(X<1>) noexcept(false);
-    Base(X<2>) throw(X<2>);
-    template<typename T> Base(T) throw(T);
-  };
-  template<typename T> struct Throw {
-    Throw() throw(T);
-  };
-  struct Derived : Base, Throw<X<3>> {
-    using Base::Base;
-    Throw<X<4>> x;
-  };
-  struct Test {
-    friend Derived::Derived(X<0>) throw(X<3>, X<4>);
-    friend Derived::Derived(X<1>) noexcept(false);
-    friend Derived::Derived(X<2>) throw(X<2>, X<3>, X<4>);
-  };
-  static_assert(!noexcept(Derived{X<5>{}}), "");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p15.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p15.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p15.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-
-// Deallocation functions are implicitly noexcept.
-// Thus, explicit specs aren't allowed to conflict.
-
-void f() {
-  // Force implicit declaration of delete.
-  delete new int;
-  delete[] new int[1];
-}
-
-void operator delete(void*);
-void operator delete[](void*);
-
-static_assert(noexcept(operator delete(0)), "");
-static_assert(noexcept(operator delete[](0)), "");
-
-// Same goes for explicit declarations.
-void operator delete(void*, float);
-void operator delete[](void*, float);
-
-static_assert(noexcept(operator delete(0, 0.f)), "");
-static_assert(noexcept(operator delete[](0, 0.f)), "");
-
-// But explicit specs stay.
-void operator delete(void*, double) throw(int); // expected-note {{previous}}
-static_assert(!noexcept(operator delete(0, 0.)), "");
-void operator delete(void*, double) noexcept; // expected-error {{does not match}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p2-dynamic-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p2-dynamic-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p2-dynamic-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-
-// Dynamic specifications: valid types.
-
-struct Incomplete; // expected-note 3 {{forward declaration}}
-
-// Exception spec must not have incomplete types, or pointers to them, except
-// void.
-void ic1() throw(void); // expected-error {{incomplete type 'void' is not allowed in exception specification}}
-void ic2() throw(Incomplete); // expected-error {{incomplete type 'Incomplete' is not allowed in exception specification}}
-void ic3() throw(void*);
-void ic4() throw(Incomplete*); // expected-error {{pointer to incomplete type 'Incomplete' is not allowed in exception specification}}
-void ic5() throw(Incomplete&); // expected-error {{reference to incomplete type 'Incomplete' is not allowed in exception specification}}
-
-// Don't suppress errors in template instantiation.
-template <typename T> struct TEx; // expected-note {{template is declared here}}
-
-void tf() throw(TEx<int>); // expected-error {{implicit instantiation of undefined template}}
-
-// DR 437, class throws itself.
-struct DR437 {
-   void f() throw(DR437);
-   void g() throw(DR437*);
-   void h() throw(DR437&);
-};
-
-// DR 437 within a nested class
-struct DR437_out {
-   struct DR437_in {
-      void f() throw(DR437_out);
-      void g() throw(DR437_out*);
-      void h() throw(DR437_out&);
-   }; 
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p2-places.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p2-places.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p2-places.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-
-// Tests where specs are allowed and where they aren't.
-
-namespace dyn {
-
-  // Straight from the standard:
-
-  // Plain function with spec
-  void f() throw(int);
-
-  // Pointer to function with spec
-  void (*fp)() throw (int);
-
-  // Function taking reference to function with spec
-  void g(void pfa() throw(int));
-
-  // Typedef for pointer to function with spec
-  typedef int (*pf)() throw(int); // expected-error {{specifications are not allowed in typedefs}}
-
-  // Some more:
-
-  // Function returning function with spec
-  void (*h())() throw(int);
-
-  // Ultimate parser thrill: function with spec returning function with spec and
-  // taking pointer to function with spec.
-  // The actual function throws int, the return type double, the argument float.
-  void (*i() throw(int))(void (*)() throw(float)) throw(double);
-
-  // Pointer to pointer to function taking function with spec
-  void (**k)(void pfa() throw(int)); // no-error
-
-  // Pointer to pointer to function with spec
-  void (**j)() throw(int); // expected-error {{not allowed beyond a single}}
-
-  // Pointer to function returning pointer to pointer to function with spec
-  void (**(*h())())() throw(int); // expected-error {{not allowed beyond a single}}
-
-}
-
-namespace noex {
-
-  // These parallel those from above.
-
-  void f() noexcept(false);
-
-  void (*fp)() noexcept(false);
-
-  void g(void pfa() noexcept(false));
-
-  typedef int (*pf)() noexcept(false); // expected-error {{specifications are not allowed in typedefs}}
-
-  void (*h())() noexcept(false);
-
-  void (*i() noexcept(false))(void (*)() noexcept(true)) noexcept(false);
-
-  void (**k)(void pfa() noexcept(false)); // no-error
-
-  void (**j)() noexcept(false); // expected-error {{not allowed beyond a single}}
-
-  void (**(*h())())() noexcept(false); // expected-error {{not allowed beyond a single}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,106 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-
-// Exception specification compatibility.
-// We test function pointers, because functions have an extra rule in p4.
-
-// Same type is compatible
-extern void (*r1)() throw(int);
-extern void (*r1)() throw(int);
-
-// Typedefs don't matter.
-typedef int INT;
-extern void (*r2)() throw(int);
-extern void (*r2)() throw(INT);
-
-// Order doesn't matter.
-extern void (*r3)() throw(int, float);
-extern void (*r3)() throw(float, int);
-
-// MS throw-any spec and no spec at all are compatible
-extern void (*r4)();
-extern void (*r4)() throw(...);
-
-// throw(X) and no spec are not compatible
-extern void (*r5)() throw(int); // expected-note {{previous declaration}}
-extern void (*r5)(); // expected-error {{exception specification in declaration does not match}}
-
-// For functions, we accept this with a warning.
-extern void f5() throw(int); // expected-note {{previous declaration}}
-extern void f5(); // expected-warning {{missing exception specification}}
-
-// Different types are not compatible.
-extern void (*r7)() throw(int); // expected-note {{previous declaration}}
-extern void (*r7)() throw(float); // expected-error {{exception specification in declaration does not match}}
-
-// Top-level const doesn't matter.
-extern void (*r8)() throw(int);
-extern void (*r8)() throw(const int);
-
-// Multiple appearances don't matter.
-extern void (*r9)() throw(int, int);
-extern void (*r9)() throw(int, int);
-
-
-// noexcept is compatible with itself
-extern void (*r10)() noexcept;
-extern void (*r10)() noexcept;
-
-// noexcept(true) is compatible with noexcept
-extern void (*r11)() noexcept;
-extern void (*r11)() noexcept(true);
-
-// noexcept(false) isn't
-extern void (*r12)() noexcept; // expected-note {{previous declaration}}
-extern void (*r12)() noexcept(false); // expected-error {{does not match}}
-
-// The form of the boolean expression doesn't matter.
-extern void (*r13)() noexcept(1 < 2);
-extern void (*r13)() noexcept(2 > 1);
-
-// noexcept(false) is incompatible with noexcept(true)
-extern void (*r14)() noexcept(true); // expected-note {{previous declaration}}
-extern void (*r14)() noexcept(false); // expected-error {{does not match}}
-
-// noexcept(false) is compatible with itself
-extern void (*r15)() noexcept(false);
-extern void (*r15)() noexcept(false);
-
-// noexcept(false) is compatible with MS throw(...)
-extern void (*r16)() noexcept(false);
-extern void (*r16)() throw(...);
-
-// noexcept(false) is *not* compatible with no spec
-extern void (*r17)(); // expected-note {{previous declaration}}
-extern void (*r17)() noexcept(false); // expected-error {{does not match}}
-
-// except for functions
-void f17();
-void f17() noexcept(false);
-
-// noexcept(false) is compatible with dynamic specs that throw unless
-// CWG 1073 resolution is accepted. Clang implements it.
-//extern void (*r18)() throw(int);
-//extern void (*r18)() noexcept(false);
-
-// noexcept(true) is compatible with dynamic specs that don't throw
-extern void (*r19)() throw();
-extern void (*r19)() noexcept(true);
-
-// The other way round doesn't work.
-extern void (*r20)() throw(); // expected-note {{previous declaration}}
-extern void (*r20)() noexcept(false); // expected-error {{does not match}}
-
-extern void (*r21)() throw(int); // expected-note {{previous declaration}}
-extern void (*r21)() noexcept(true); // expected-error {{does not match}}
-
-
-// As a very special workaround, we allow operator new to match no spec
-// with a throw(bad_alloc) spec, because C++0x makes an incompatible change
-// here.
-extern "C++" { namespace std { class bad_alloc {}; } }
-typedef decltype(sizeof(int)) mysize_t;
-void* operator new(mysize_t) throw(std::bad_alloc);
-void* operator new(mysize_t);
-void* operator new[](mysize_t);
-void* operator new[](mysize_t) throw(std::bad_alloc);
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify -fcxx-exceptions
-
-// We permit overriding an implicit exception specification with an explicit one
-// as an extension, for compatibility with existing code.
-
-struct S {
-  void a(); // expected-note {{here}}
-  ~S(); // expected-note {{here}}
-  void operator delete(void*); // expected-note {{here}}
-};
-
-void S::a() noexcept {} // expected-error {{does not match previous}}
-S::~S() noexcept {} // expected-warning {{function previously declared with an implicit exception specification redeclared with an explicit exception specification}}
-void S::operator delete(void*) noexcept {} // expected-warning {{function previously declared with an implicit exception specification redeclared with an explicit exception specification}}
-
-struct T {
-  void a() noexcept; // expected-note {{here}}
-  ~T() noexcept; // expected-note {{here}}
-  void operator delete(void*) noexcept; // expected-note {{here}}
-};
-
-void T::a() {} // expected-warning {{missing exception specification 'noexcept'}}
-T::~T() {} // expected-warning {{function previously declared with an explicit exception specification redeclared with an implicit exception specification}}
-void T::operator delete(void*) {} // expected-warning {{function previously declared with an explicit exception specification redeclared with an implicit exception specification}}
-
-
-// The extension does not extend to function templates.
-
-template<typename T> struct U {
-  T t;
-  ~U(); // expected-note {{here}}
-  void operator delete(void*); // expected-note {{here}}
-};
-
-template<typename T> U<T>::~U() noexcept(true) {} // expected-error {{exception specification in declaration does not match previous declaration}}
-template<typename T> void U<T>::operator delete(void*) noexcept(false) {} // expected-error {{exception specification in declaration does not match previous declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p5-pointers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p5-pointers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p5-pointers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-
-// Assignment of function pointers.
-
-struct A
-{
-};
-
-struct B1 : A
-{
-};
-
-struct B2 : A
-{
-};
-
-struct D : B1, B2
-{
-};
-
-struct P : private A
-{
-};
-
-// Some functions to play with below.
-void s1() throw();
-void s2() throw(int);
-void s3() throw(A);
-void s4() throw(B1);
-void s5() throw(D);
-void s6();
-void s7() throw(int, float);
-void (*s8())() throw(B1); // s8 returns a pointer to function with spec
-void s9(void (*)() throw(B1)); // s9 takes pointer to function with spec
-
-void s10() noexcept;
-void s11() noexcept(true);
-void s12() noexcept(false);
-
-void fnptrs()
-{
-  // Assignment and initialization of function pointers.
-  void (*t1)() throw() = &s1;    // valid
-  t1 = &s2;                      // expected-error {{not superset}} expected-error {{incompatible type}}
-  t1 = &s3;                      // expected-error {{not superset}} expected-error {{incompatible type}}
-  void (&t2)() throw() = s2;     // expected-error {{not superset}}
-  void (*t3)() throw(int) = &s2; // valid
-  void (*t4)() throw(A) = &s1;   // valid
-  t4 = &s3;                      // valid
-  t4 = &s4;                      // valid
-  t4 = &s5;                      // expected-error {{not superset}} expected-error {{incompatible type}}
-  void (*t5)() = &s1;            // valid
-  t5 = &s2;                      // valid
-  t5 = &s6;                      // valid
-  t5 = &s7;                      // valid
-  t1 = t3;                       // expected-error {{not superset}} expected-error {{incompatible type}}
-  t3 = t1;                       // valid
-  void (*t6)() throw(B1);
-  t6 = t4;                       // expected-error {{not superset}} expected-error {{incompatible type}}
-  t4 = t6;                       // valid
-  t5 = t1;                       // valid
-  t1 = t5;                       // expected-error {{not superset}} expected-error {{incompatible type}}
-
-  // return types and arguments must match exactly, no inheritance allowed
-  void (*(*t7)())() throw(B1) = &s8;       // valid
-  void (*(*t8)())() throw(A) = &s8;        // expected-error {{return types differ}}
-  void (*(*t9)())() throw(D) = &s8;        // expected-error {{return types differ}}
-  void (*t10)(void (*)() throw(B1)) = &s9; // valid
-  void (*t11)(void (*)() throw(A)) = &s9;  // expected-error {{argument types differ}}
-  void (*t12)(void (*)() throw(D)) = &s9;  // expected-error {{argument types differ}}
-}
-
-// Member function stuff
-
-struct Str1 { void f() throw(int); }; // expected-note {{previous declaration}}
-void Str1::f() // expected-warning {{missing exception specification}}
-{
-}
-
-void mfnptr()
-{
-  void (Str1::*pfn1)() throw(int) = &Str1::f; // valid
-  void (Str1::*pfn2)() = &Str1::f; // valid
-  void (Str1::*pfn3)() throw() = &Str1::f; // expected-error {{not superset}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p5-virtual.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p5-virtual.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p5-virtual.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-
-// Compatibility of virtual functions.
-
-struct A
-{
-};
-
-struct B1 : A
-{
-};
-
-struct B2 : A
-{
-};
-
-struct D : B1, B2
-{
-};
-
-struct P : private A
-{
-};
-
-struct Base
-{
-  virtual void f1() throw();
-  virtual void f2() throw(int, float);
-
-  virtual void f3() throw(int, float);
-  virtual void f4() throw(A);
-  virtual void f5() throw(A, int, float);
-  virtual void f6();
-
-  virtual void f7() noexcept;
-  virtual void f8() noexcept;
-  virtual void f9() noexcept(false);
-  virtual void f10() noexcept(false);
-
-  virtual void f11() throw();
-  virtual void f12() noexcept;
-  virtual void f13() noexcept(false);
-  virtual void f14() throw(int);
-
-  virtual void f15();
-  virtual void f16();
-
-  virtual void g1() throw(); // expected-note {{overridden virtual function is here}}
-  virtual void g2() throw(int); // expected-note {{overridden virtual function is here}}
-  virtual void g3() throw(A); // expected-note {{overridden virtual function is here}}
-  virtual void g4() throw(B1); // expected-note {{overridden virtual function is here}}
-  virtual void g5() throw(A); // expected-note {{overridden virtual function is here}}
-
-  virtual void g6() noexcept; // expected-note {{overridden virtual function is here}}
-  virtual void g7() noexcept; // expected-note {{overridden virtual function is here}}
-
-  virtual void g8() noexcept; // expected-note {{overridden virtual function is here}}
-  virtual void g9() throw(); // expected-note {{overridden virtual function is here}}
-  virtual void g10() throw(int); // expected-note {{overridden virtual function is here}}
-};
-struct Derived : Base
-{
-  virtual void f1() throw();
-  virtual void f2() throw(float, int);
-
-  virtual void f3() throw(float);
-  virtual void f4() throw(B1);
-  virtual void f5() throw(B1, B2, int);
-  virtual void f6() throw(B2, B2, int, float, char, double, bool);
-
-  virtual void f7() noexcept;
-  virtual void f8() noexcept(true);
-  virtual void f9() noexcept(true);
-  virtual void f10() noexcept(false);
-
-  virtual void f11() noexcept;
-  virtual void f12() throw();
-  virtual void f13() throw(int);
-  virtual void f14() noexcept(true);
-
-  virtual void f15() noexcept;
-  virtual void f16() throw();
-
-  virtual void g1() throw(int); // expected-error {{exception specification of overriding function is more lax}}
-  virtual void g2(); // expected-error {{exception specification of overriding function is more lax}}
-  virtual void g3() throw(D); // expected-error {{exception specification of overriding function is more lax}}
-  virtual void g4() throw(A); // expected-error {{exception specification of overriding function is more lax}}
-  virtual void g5() throw(P); // expected-error {{exception specification of overriding function is more lax}}
-
-  virtual void g6() noexcept(false); // expected-error {{exception specification of overriding function is more lax}}
-  virtual void g7(); // expected-error {{exception specification of overriding function is more lax}}
-
-  virtual void g8() throw(int); // expected-error {{exception specification of overriding function is more lax}}
-  virtual void g9() noexcept(false); // expected-error {{exception specification of overriding function is more lax}}
-  virtual void g10() noexcept(false); // expected-error {{exception specification of overriding function is more lax}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p9-dynamic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p9-dynamic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p9-dynamic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - -fcxx-exceptions -fexceptions | FileCheck %s
-
-void external();
-
-void target() throw(int)
-{
-  // CHECK: invoke void @_Z8externalv()
-  external();
-}
-// CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-// CHECK-NEXT:   filter [1 x i8*] [i8* bitcast (i8** @_ZTIi to i8*)]
-// CHECK:      call void @__cxa_call_unexpected

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p9-noexcept.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p9-noexcept.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/p9-noexcept.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -triple=x86_64-apple-darwin10 -emit-llvm -o - -fcxx-exceptions -fexceptions | FileCheck %s
-
-void external();
-
-void target() noexcept
-{
-  // CHECK: invoke void @_Z8externalv()
-  external();
-}
-// CHECK:      [[T0:%.*]] = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-// CHECK-NEXT:  catch i8* null
-// CHECK-NEXT: [[T1:%.*]] = extractvalue { i8*, i32 } [[T0]], 0
-// CHECK-NEXT: call void @__clang_call_terminate(i8* [[T1]]) [[NR_NUW:#[0-9]+]]
-// CHECK-NEXT: unreachable
-
-void reverse() noexcept(false)
-{
-  // CHECK: call void @_Z8externalv()
-  external();
-}
-
-// CHECK: attributes [[NR_NUW]] = { noreturn nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/except/except.spec/template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
-
-// We use pointer assignment compatibility to test instantiation.
-
-template <int N> void f1() throw(int);
-template <int N> void f2() noexcept(N > 1);
-
-void (*t1)() throw(int) = &f1<0>;
-void (*t2)() throw() = &f1<0>; // expected-error {{not superset}}
-
-void (*t3)() noexcept = &f2<2>; // no-error
-void (*t4)() noexcept = &f2<0>; // expected-error {{not superset}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.ass/p9-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.ass/p9-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.ass/p9-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-template<typename T> struct complex {
-  complex(T = T(), T = T());
-  void operator+=(complex);
-  T a, b;
-};
-
-void std_example() {
-  complex<double> z;
-  z = { 1, 2 };
-  z += { 1, 2 };
-
-  int a, b;
-  a = b = { 1 };
-  a = { 1 } = b; // expected-error {{initializer list cannot be used on the left hand side of operator '='}}
-  a = a + { 4 }; // expected-error {{initializer list cannot be used on the right hand side of operator '+'}}
-  a = { 3 } * { 4 }; // expected-error {{initializer list cannot be used on the left hand side of operator '*'}} \
-                        expected-error {{initializer list cannot be used on the right hand side of operator '*'}}
-}
-
-struct S {
-  constexpr S(int a, int b) : a(a), b(b) {}
-  int a, b;
-};
-struct T {
-  constexpr int operator=(S s) const { return s.a; }
-  constexpr int operator+=(S s) const { return s.b; }
-};
-static_assert((T() = {4, 9}) == 4, "");
-static_assert((T() += {4, 9}) == 9, "");
-
-int k1 = T() = { 1, 2 } = { 3, 4 }; // expected-error {{initializer list cannot be used on the left hand side of operator '='}}
-int k2 = T() = { 1, 2 } + 1; // expected-error {{initializer list cannot be used on the left hand side of operator '+'}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.cast/p4-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.cast/p4-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.cast/p4-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-struct X { };
-struct Y : X { };
-
-void test_lvalue_to_rvalue_drop_cvquals(const X &x, const Y &y, const int &i) {
-  (void)(X&&)x;
-  (void)(int&&)i;
-  (void)(X&&)y;
-  (void)(Y&&)x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.cast/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.cast/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.cast/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -ast-dump %s | FileCheck %s
-
-struct A { int x; };
-struct B { int y; };
-struct C : A, B { };
-
-// CHECK: casting_away_constness
-void casting_away_constness(const B &b, const C &c, const B *bp, const C *cp) {
-  // CHECK: DerivedToBase (B)
-  // CHECK: DeclRefExpr {{.*}} ParmVar {{.*}} 'c'
-  (void)(B&)c;
-  // CHECK: BaseToDerived (B)
-  // CHECK: DeclRefExpr {{.*}} ParmVar {{.*}} 'b'
-  (void)(C&)b;
-  // CHECK: DerivedToBase (B)
-  // CHECK: DeclRefExpr {{.*}} ParmVar {{.*}} 'cp'
-  (void)(B*)cp;
-  // CHECK: BaseToDerived (B)
-  // CHECK: DeclRefExpr {{.*}} ParmVar {{.*}} 'bp'
-  (void)(C*)bp;
-  // CHECK: ReturnStmt
-  return;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,609 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -pedantic -verify -fcxx-exceptions %s -fconstexpr-depth 128 -triple i686-pc-linux-gnu
-
-// A conditional-expression is a core constant expression unless it involves one
-// of the following as a potentially evaluated subexpression [...]:
-
-// - this (5.1.1 [expr.prim.general]) [Note: when evaluating a constant
-//   expression, function invocation substitution (7.1.5 [dcl.constexpr])
-//   replaces each occurrence of this in a constexpr member function with a
-//   pointer to the class object. -end note];
-struct This {
-  int this1 : this1; // expected-error {{undeclared}}
-  int this2 : this->this1; // expected-error {{invalid}}
-  void this3() {
-    int n1[this->this1]; // expected-warning {{variable length array}}
-    int n2[this1]; // expected-warning {{variable length array}}
-    (void)n1, (void)n2;
-  }
-};
-
-// - an invocation of a function other than a constexpr constructor for a
-//   literal class or a constexpr function [ Note: Overload resolution (13.3)
-//   is applied as usual - end note ];
-struct NonConstexpr1 {
-  static int f() { return 1; } // expected-note {{here}}
-  int n : f(); // expected-error {{constant expression}} expected-note {{non-constexpr function 'f' cannot be used in a constant expression}}
-};
-struct NonConstexpr2 {
-  constexpr NonConstexpr2(); // expected-note {{here}}
-  int n;
-};
-struct NonConstexpr3 {
-  NonConstexpr3();
-  int m : NonConstexpr2().n; // expected-error {{constant expression}} expected-note {{undefined constructor 'NonConstexpr2'}}
-};
-struct NonConstexpr4 {
-  NonConstexpr4(); // expected-note {{declared here}}
-  int n;
-};
-struct NonConstexpr5 {
-  int n : NonConstexpr4().n; // expected-error {{constant expression}} expected-note {{non-constexpr constructor 'NonConstexpr4' cannot be used in a constant expression}}
-};
-
-// - an invocation of an undefined constexpr function or an undefined
-//   constexpr constructor;
-struct UndefinedConstexpr {
-  constexpr UndefinedConstexpr();
-  static constexpr int undefinedConstexpr1(); // expected-note {{here}}
-  int undefinedConstexpr2 : undefinedConstexpr1(); // expected-error {{constant expression}} expected-note {{undefined function 'undefinedConstexpr1' cannot be used in a constant expression}}
-};
-
-// - an invocation of a constexpr function with arguments that, when substituted
-//   by function invocation substitution (7.1.5), do not produce a core constant
-//   expression;
-namespace NonConstExprReturn {
-  static constexpr const int &id_ref(const int &n) {
-    return n;
-  }
-  struct NonConstExprFunction {
-    int n : id_ref(16); // ok
-  };
-  constexpr const int *address_of(const int &a) {
-    return &a;
-  }
-  constexpr const int *return_param(int n) { // expected-note {{declared here}}
-    return address_of(n);
-  }
-  struct S {
-    int n : *return_param(0); // expected-error {{constant expression}} expected-note {{read of variable whose lifetime has ended}}
-  };
-}
-
-// - an invocation of a constexpr constructor with arguments that, when
-//   substituted by function invocation substitution (7.1.5), do not produce all
-//   constant expressions for the constructor calls and full-expressions in the
-//   mem-initializers (including conversions);
-namespace NonConstExprCtor {
-  struct T {
-    constexpr T(const int &r) :
-      r(r) {
-    }
-    const int &r;
-  };
-  constexpr int n = 0;
-  constexpr T t1(n); // ok
-  constexpr T t2(0); // expected-error {{must be initialized by a constant expression}} expected-note {{temporary created here}} expected-note {{reference to temporary is not a constant expression}}
-
-  struct S {
-    int n : T(4).r; // ok
-  };
-}
-
-// - an invocation of a constexpr function or a constexpr constructor that would
-//   exceed the implementation-defined recursion limits (see Annex B);
-namespace RecursionLimits {
-  constexpr int RecurseForever(int n) {
-    return n + RecurseForever(n+1); // expected-note {{constexpr evaluation exceeded maximum depth of 128 calls}} expected-note 9{{in call to 'RecurseForever(}} expected-note {{skipping 118 calls}}
-  }
-  struct AlsoRecurseForever {
-    constexpr AlsoRecurseForever(int n) :
-      n(AlsoRecurseForever(n+1).n) // expected-note {{constexpr evaluation exceeded maximum depth of 128 calls}} expected-note 9{{in call to 'AlsoRecurseForever(}} expected-note {{skipping 118 calls}}
-    {}
-    int n;
-  };
-  struct S {
-    int k : RecurseForever(0); // expected-error {{constant expression}} expected-note {{in call to}}
-    int l : AlsoRecurseForever(0).n; // expected-error {{constant expression}} expected-note {{in call to}}
-  };
-}
-
-// DR1458: taking the address of an object of incomplete class type
-namespace IncompleteClassTypeAddr {
-  struct S;
-  extern S s;
-  constexpr S *p = &s; // ok
-  static_assert(p, "");
-
-  extern S sArr[];
-  constexpr S (*p2)[] = &sArr; // ok
-
-  struct S {
-    constexpr S *operator&() const { return nullptr; }
-  };
-  constexpr S *q = &s; // ok
-  static_assert(!q, "");
-}
-
-// - an operation that would have undefined behavior [Note: including, for
-//   example, signed integer overflow (Clause 5 [expr]), certain pointer
-//   arithmetic (5.7 [expr.add]), division by zero (5.6 [expr.mul]), or certain
-//   shift operations (5.8 [expr.shift]) -end note];
-namespace UndefinedBehavior {
-  void f(int n) {
-    switch (n) {
-    case (int)4.4e9: // expected-error {{constant expression}} expected-note {{value 4.4E+9 is outside the range of representable values of type 'int'}} expected-note {{previous case defined here}}
-    case (int)0x80000000u: // ok
-    case (int)10000000000ll: // expected-note {{here}}
-    case (unsigned int)10000000000ll: // expected-error {{duplicate case value}}
-    case (int)(unsigned)(long long)4.4e9: // ok
-    case (int)(float)1e300: // expected-error {{constant expression}} expected-note {{value 1.0E+300 is outside the range of representable values of type 'float'}} expected-error {{duplicate case value '2147483647'}} expected-note {{previous case defined here}}
-    case (int)((float)1e37 / 1e30): // ok
-    case (int)(__fp16)65536: // expected-error {{constant expression}} expected-note {{value 65536 is outside the range of representable values of type 'half'}} expected-error {{duplicate case value '2147483647'}}
-      break;
-    }
-  }
-
-  constexpr int int_min = ~0x7fffffff;
-  constexpr int minus_int_min = -int_min; // expected-error {{constant expression}} expected-note {{value 2147483648 is outside the range}}
-  constexpr int div0 = 3 / 0; // expected-error {{constant expression}} expected-note {{division by zero}} expected-warning {{undefined}}
-  constexpr int mod0 = 3 % 0; // expected-error {{constant expression}} expected-note {{division by zero}} expected-warning {{undefined}}
-  constexpr int int_min_div_minus_1 = int_min / -1; // expected-error {{constant expression}} expected-note {{value 2147483648 is outside the range}}
-  constexpr int int_min_mod_minus_1 = int_min % -1; // expected-error {{constant expression}} expected-note {{value 2147483648 is outside the range}}
-
-  constexpr int shl_m1 = 0 << -1; // expected-error {{constant expression}} expected-note {{negative shift count -1}} expected-warning {{negative}}
-  constexpr int shl_0 = 0 << 0; // ok
-  constexpr int shl_31 = 0 << 31; // ok
-  constexpr int shl_32 = 0 << 32; // expected-error {{constant expression}} expected-note {{shift count 32 >= width of type 'int' (32}} expected-warning {{>= width of type}}
-  constexpr int shl_unsigned_negative = unsigned(-3) << 1; // ok
-  constexpr int shl_unsigned_into_sign = 1u << 31; // ok
-  constexpr int shl_unsigned_overflow = 1024u << 31; // ok
-  constexpr int shl_signed_negative = (-3) << 1; // expected-error {{constant expression}} expected-note {{left shift of negative value -3}}
-  constexpr int shl_signed_ok = 1 << 30; // ok
-  constexpr int shl_signed_into_sign = 1 << 31; // ok (DR1457)
-  constexpr int shl_signed_into_sign_2 = 0x7fffffff << 1; // ok (DR1457)
-  constexpr int shl_signed_off_end = 2 << 31; // expected-error {{constant expression}} expected-note {{signed left shift discards bits}} expected-warning {{signed shift result (0x100000000) requires 34 bits to represent, but 'int' only has 32 bits}}
-  constexpr int shl_signed_off_end_2 = 0x7fffffff << 2; // expected-error {{constant expression}} expected-note {{signed left shift discards bits}} expected-warning {{signed shift result (0x1FFFFFFFC) requires 34 bits to represent, but 'int' only has 32 bits}}
-  constexpr int shl_signed_overflow = 1024 << 31; // expected-error {{constant expression}} expected-note {{signed left shift discards bits}} expected-warning {{requires 43 bits to represent}}
-  constexpr int shl_signed_ok2 = 1024 << 20; // ok
-
-  constexpr int shr_m1 = 0 >> -1; // expected-error {{constant expression}} expected-note {{negative shift count -1}} expected-warning {{negative}}
-  constexpr int shr_0 = 0 >> 0; // ok
-  constexpr int shr_31 = 0 >> 31; // ok
-  constexpr int shr_32 = 0 >> 32; // expected-error {{constant expression}} expected-note {{shift count 32 >= width of type}} expected-warning {{>= width of type}}
-
-  struct S {
-    int m;
-  };
-  constexpr S s = { 5 };
-  constexpr const int *p = &s.m + 1;
-  constexpr const int &f(const int *q) {
-    return q[0];
-  }
-  constexpr int n = (f(p), 0); // ok
-  struct T {
-    int n : f(p); // expected-error {{not an integral constant expression}} expected-note {{read of dereferenced one-past-the-end pointer}}
-  };
-
-  namespace Ptr {
-    struct A {};
-    struct B : A { int n; };
-    B a[3][3];
-    constexpr B *p = a[0] + 4; // expected-error {{constant expression}} expected-note {{element 4 of array of 3 elements}}
-    B b = {};
-    constexpr A *pa = &b + 1; // expected-error {{constant expression}} expected-note {{base class of pointer past the end}}
-    constexpr B *pb = (B*)((A*)&b + 1); // expected-error {{constant expression}} expected-note {{derived class of pointer past the end}}
-    constexpr const int *pn = &(&b + 1)->n; // expected-error {{constant expression}} expected-note {{field of pointer past the end}}
-    constexpr B *parr = &a[3][0]; // expected-error {{constant expression}} expected-note {{array element of pointer past the end}}
-
-    constexpr A *na = nullptr;
-    constexpr B *nb = nullptr;
-    constexpr A &ra = *nb; // expected-error {{constant expression}} expected-note {{cannot access base class of null pointer}}
-    constexpr B &rb = (B&)*na; // expected-error {{constant expression}} expected-note {{cannot access derived class of null pointer}}
-    static_assert((A*)nb == 0, "");
-    static_assert((B*)na == 0, "");
-    constexpr const int &nf = nb->n; // expected-error {{constant expression}} expected-note {{cannot access field of null pointer}}
-    constexpr const int &np = (*(int(*)[4])nullptr)[2]; // expected-error {{constant expression}} expected-note {{cannot access array element of null pointer}}
-
-    struct C {
-      constexpr int f() const { return 0; }
-    } constexpr c = C();
-    constexpr int k1 = c.f(); // ok
-    constexpr int k2 = ((C*)nullptr)->f(); // expected-error {{constant expression}} expected-note {{cannot call member function on null pointer}}
-    constexpr int k3 = (&c)[1].f(); // expected-error {{constant expression}} expected-note {{cannot call member function on pointer past the end of object}}
-    C c2;
-    constexpr int k4 = c2.f(); // ok!
-
-    constexpr int diff1 = &a[2] - &a[0];
-    constexpr int diff2 = &a[1][3] - &a[1][0];
-    constexpr int diff3 = &a[2][0] - &a[1][0]; // expected-error {{constant expression}} expected-note {{subtracted pointers are not elements of the same array}}
-    static_assert(&a[2][0] == &a[1][3], "");
-    constexpr int diff4 = (&b + 1) - &b;
-    constexpr int diff5 = &a[1][2].n - &a[1][0].n; // expected-error {{constant expression}} expected-note {{subtracted pointers are not elements of the same array}}
-    constexpr int diff6 = &a[1][2].n - &a[1][2].n;
-    constexpr int diff7 = (A*)&a[0][1] - (A*)&a[0][0]; // expected-error {{constant expression}} expected-note {{subtracted pointers are not elements of the same array}}
-  }
-
-  namespace Overflow {
-    // Signed int overflow.
-    constexpr int n1 = 2 * 3 * 3 * 7 * 11 * 31 * 151 * 331; // ok
-    constexpr int n2 = 65536 * 32768; // expected-error {{constant expression}} expected-note {{value 2147483648 is outside the range of }}
-    constexpr int n3 = n1 + 1; // ok
-    constexpr int n4 = n3 + 1; // expected-error {{constant expression}} expected-note {{value 2147483648 is outside the range of }}
-    constexpr int n5 = -65536 * 32768; // ok
-    constexpr int n6 = 3 * -715827883; // expected-error {{constant expression}} expected-note {{value -2147483649 is outside the range of }}
-    constexpr int n7 = -n3 + -1; // ok
-    constexpr int n8 = -1 + n7; // expected-error {{constant expression}} expected-note {{value -2147483649 is outside the range of }}
-    constexpr int n9 = n3 - 0; // ok
-    constexpr int n10 = n3 - -1; // expected-error {{constant expression}} expected-note {{value 2147483648 is outside the range of }}
-    constexpr int n11 = -1 - n3; // ok
-    constexpr int n12 = -2 - n3; // expected-error {{constant expression}} expected-note {{value -2147483649 is outside the range of }}
-    constexpr int n13 = n5 + n5; // expected-error {{constant expression}} expected-note {{value -4294967296 is outside the range of }}
-    constexpr int n14 = n3 - n5; // expected-error {{constant expression}} expected-note {{value 4294967295 is outside the range of }}
-    constexpr int n15 = n5 * n5; // expected-error {{constant expression}} expected-note {{value 4611686018427387904 is outside the range of }}
-    constexpr signed char c1 = 100 * 2; // ok
-    constexpr signed char c2 = '\x64' * '\2'; // also ok
-    constexpr long long ll1 = 0x7fffffffffffffff; // ok
-    constexpr long long ll2 = ll1 + 1; // expected-error {{constant}} expected-note {{ 9223372036854775808 }}
-    constexpr long long ll3 = -ll1 - 1; // ok
-    constexpr long long ll4 = ll3 - 1; // expected-error {{constant}} expected-note {{ -9223372036854775809 }}
-    constexpr long long ll5 = ll3 * ll3; // expected-error {{constant}} expected-note {{ 85070591730234615865843651857942052864 }}
-
-    // Yikes.
-    char melchizedek[2200000000];
-    typedef decltype(melchizedek[1] - melchizedek[0]) ptrdiff_t;
-    constexpr ptrdiff_t d1 = &melchizedek[0x7fffffff] - &melchizedek[0]; // ok
-    constexpr ptrdiff_t d2 = &melchizedek[0x80000000u] - &melchizedek[0]; // expected-error {{constant expression}} expected-note {{ 2147483648 }}
-    constexpr ptrdiff_t d3 = &melchizedek[0] - &melchizedek[0x80000000u]; // ok
-    constexpr ptrdiff_t d4 = &melchizedek[0] - &melchizedek[0x80000001u]; // expected-error {{constant expression}} expected-note {{ -2147483649 }}
-
-    // Unsigned int overflow.
-    static_assert(65536u * 65536u == 0u, ""); // ok
-    static_assert(4294967295u + 1u == 0u, ""); // ok
-    static_assert(0u - 1u == 4294967295u, ""); // ok
-    static_assert(~0u * ~0u == 1u, ""); // ok
-
-    // Floating-point overflow and NaN.
-    constexpr float f1 = 1e38f * 3.4028f; // ok
-    constexpr float f2 = 1e38f * 3.4029f; // expected-error {{constant expression}} expected-note {{floating point arithmetic produces an infinity}}
-    constexpr float f3 = 1e38f / -.2939f; // ok
-    constexpr float f4 = 1e38f / -.2938f; // expected-error {{constant expression}} expected-note {{floating point arithmetic produces an infinity}}
-    constexpr float f5 = 2e38f + 2e38f; // expected-error {{constant expression}} expected-note {{floating point arithmetic produces an infinity}}
-    constexpr float f6 = -2e38f - 2e38f; // expected-error {{constant expression}} expected-note {{floating point arithmetic produces an infinity}}
-    constexpr float f7 = 0.f / 0.f; // expected-error {{constant expression}} expected-note {{floating point arithmetic produces a NaN}}
-  }
-}
-
-// - a lambda-expression (5.1.2);
-struct Lambda {
-  // FIXME: clang crashes when trying to parse this! Revisit this check once
-  // lambdas are fully implemented.
-  //int n : []{ return 1; }();
-};
-
-// - an lvalue-to-rvalue conversion (4.1) unless it is applied to
-namespace LValueToRValue {
-  // - a non-volatile glvalue of integral or enumeration type that refers to a
-  //   non-volatile const object with a preceding initialization, initialized
-  //   with a constant expression  [Note: a string literal (2.14.5 [lex.string])
-  //   corresponds to an array of such objects. -end note], or
-  volatile const int vi = 1; // expected-note 2{{here}}
-  const int ci = 1;
-  volatile const int &vrci = ci;
-  static_assert(vi, ""); // expected-error {{constant expression}} expected-note {{read of volatile-qualified type}}
-  static_assert(const_cast<int&>(vi), ""); // expected-error {{constant expression}} expected-note {{read of volatile object 'vi'}}
-  static_assert(vrci, ""); // expected-error {{constant expression}} expected-note {{read of volatile-qualified type}}
-
-  // - a non-volatile glvalue of literal type that refers to a non-volatile
-  //   object defined with constexpr, or that refers to a sub-object of such an
-  //   object, or
-  struct V {
-    constexpr V() : v(1) {}
-    volatile int v; // expected-note {{not literal because}}
-  };
-  constexpr V v; // expected-error {{non-literal type}}
-  struct S {
-    constexpr S(int=0) : i(1), v(const_cast<volatile int&>(vi)) {}
-    constexpr S(const S &s) : i(2), v(const_cast<volatile int&>(vi)) {}
-    int i;
-    volatile int &v;
-  };
-  constexpr S s; // ok
-  constexpr volatile S vs; // expected-note {{here}}
-  constexpr const volatile S &vrs = s; // ok
-  static_assert(s.i, "");
-  static_assert(s.v, ""); // expected-error {{constant expression}} expected-note {{read of volatile-qualified type}}
-  static_assert(const_cast<int&>(s.v), ""); // expected-error {{constant expression}} expected-note {{read of volatile object 'vi'}}
-  static_assert(vs.i, ""); // expected-error {{constant expression}} expected-note {{read of volatile-qualified type}}
-  static_assert(const_cast<int&>(vs.i), ""); // expected-error {{constant expression}} expected-note {{read of volatile object 'vs'}}
-  static_assert(vrs.i, ""); // expected-error {{constant expression}} expected-note {{read of volatile-qualified type}}
-
-  // - a non-volatile glvalue of literal type that refers to a non-volatile
-  //   temporary object whose lifetime has not ended, initialized with a
-  //   constant expression;
-  constexpr volatile S f() { return S(); }
-  static_assert(f().i, ""); // ok! there's no lvalue-to-rvalue conversion here!
-  static_assert(((volatile const S&&)(S)0).i, ""); // expected-error {{constant expression}}
-}
-
-// DR1312: The proposed wording for this defect has issues, so we ignore this
-// bullet and instead prohibit casts from pointers to cv void (see core-20842
-// and core-20845).
-//
-// - an lvalue-to-rvalue conversion (4.1 [conv.lval]) that is applied to a
-// glvalue of type cv1 T that refers to an object of type cv2 U, where T and U
-// are neither the same type nor similar types (4.4 [conv.qual]);
-
-// - an lvalue-to-rvalue conversion (4.1) that is applied to a glvalue that
-// refers to a non-active member of a union or a subobject thereof;
-namespace LValueToRValueUnion {
-  // test/SemaCXX/constant-expression-cxx11.cpp contains more thorough testing
-  // of this.
-  union U { int a, b; } constexpr u = U();
-  static_assert(u.a == 0, "");
-  constexpr const int *bp = &u.b;
-  constexpr int b = *bp; // expected-error {{constant expression}} expected-note {{read of member 'b' of union with active member 'a'}}
-
-  extern const U pu;
-  constexpr const int *pua = &pu.a;
-  constexpr const int *pub = &pu.b;
-  constexpr U pu = { .b = 1 }; // expected-warning {{C99 feature}}
-  constexpr const int a2 = *pua; // expected-error {{constant expression}} expected-note {{read of member 'a' of union with active member 'b'}}
-  constexpr const int b2 = *pub; // ok
-}
-
-// - an id-expression that refers to a variable or data member of reference type
-//   unless the reference has a preceding initialization, initialized with a
-//   constant expression;
-namespace References {
-  const int a = 2;
-  int &b = *const_cast<int*>(&a);
-  int c = 10; // expected-note 2 {{here}}
-  int &d = c;
-  constexpr int e = 42;
-  int &f = const_cast<int&>(e);
-  extern int &g;
-  constexpr int &h(); // expected-note {{here}}
-  int &i = h(); // expected-note {{here}}
-  constexpr int &j() { return b; }
-  int &k = j();
-
-  struct S {
-    int A : a;
-    int B : b;
-    int C : c; // expected-error {{constant expression}} expected-note {{read of non-const variable 'c'}}
-    int D : d; // expected-error {{constant expression}} expected-note {{read of non-const variable 'c'}}
-    int D2 : &d - &c + 1;
-    int E : e / 2;
-    int F : f - 11;
-    int G : g; // expected-error {{constant expression}}
-    int H : h(); // expected-error {{constant expression}} expected-note {{undefined function 'h'}}
-    int I : i; // expected-error {{constant expression}} expected-note {{initializer of 'i' is not a constant expression}}
-    int J : j();
-    int K : k;
-  };
-}
-
-// - a dynamic_cast (5.2.7);
-namespace DynamicCast {
-  struct S { int n; };
-  constexpr S s { 16 };
-  struct T {
-    int n : dynamic_cast<const S*>(&s)->n; // expected-warning {{constant expression}} expected-note {{dynamic_cast}}
-  };
-}
-
-// - a reinterpret_cast (5.2.10);
-namespace ReinterpretCast {
-  struct S { int n; };
-  constexpr S s { 16 };
-  struct T {
-    int n : reinterpret_cast<const S*>(&s)->n; // expected-warning {{constant expression}} expected-note {{reinterpret_cast}}
-  };
-  struct U {
-    int m : (long)(S*)6; // expected-warning {{constant expression}} expected-note {{reinterpret_cast}}
-  };
-}
-
-// - a pseudo-destructor call (5.2.4);
-namespace PseudoDtor {
-  int k;
-  typedef int I;
-  struct T {
-    int n : (k.~I(), 0); // expected-error {{constant expression}}
-  };
-}
-
-// - increment or decrement operations (5.2.6, 5.3.2);
-namespace IncDec {
-  int k = 2;
-  struct T {
-    int n : ++k; // expected-error {{constant expression}}
-    int m : --k; // expected-error {{constant expression}}
-  };
-}
-
-// - a typeid expression (5.2.8) whose operand is of a polymorphic class type;
-namespace std {
-  struct type_info {
-    virtual ~type_info();
-    const char *name;
-  };
-}
-namespace TypeId {
-  struct S { virtual void f(); };
-  constexpr S *p = 0;
-  constexpr const std::type_info &ti1 = typeid(*p); // expected-error {{must be initialized by a constant expression}} expected-note {{typeid applied to expression of polymorphic type 'TypeId::S'}}
-
-  struct T {} t;
-  constexpr const std::type_info &ti2 = typeid(t);
-}
-
-// - a new-expression (5.3.4);
-// - a delete-expression (5.3.5);
-namespace NewDelete {
-  int *p = 0;
-  struct T {
-    int n : *new int(4); // expected-error {{constant expression}}
-    int m : (delete p, 2); // expected-error {{constant expression}}
-  };
-}
-
-// - a relational (5.9) or equality (5.10) operator where the result is
-//   unspecified;
-namespace UnspecifiedRelations {
-  int a, b;
-  constexpr int *p = &a, *q = &b;
-  // C++11 [expr.rel]p2: If two pointers p and q of the same type point to
-  // different objects that are not members of the same array or to different
-  // functions, or if only one of them is null, the results of p<q, p>q, p<=q,
-  // and p>=q are unspecified.
-  constexpr bool u1 = p < q; // expected-error {{constant expression}}
-  constexpr bool u2 = p > q; // expected-error {{constant expression}}
-  constexpr bool u3 = p <= q; // expected-error {{constant expression}}
-  constexpr bool u4 = p >= q; // expected-error {{constant expression}}
-  constexpr bool u5 = p < 0; // expected-error {{constant expression}}
-  constexpr bool u6 = p <= 0; // expected-error {{constant expression}}
-  constexpr bool u7 = p > 0; // expected-error {{constant expression}}
-  constexpr bool u8 = p >= 0; // expected-error {{constant expression}}
-  constexpr bool u9 = 0 < q; // expected-error {{constant expression}}
-  constexpr bool u10 = 0 <= q; // expected-error {{constant expression}}
-  constexpr bool u11 = 0 > q; // expected-error {{constant expression}}
-  constexpr bool u12 = 0 >= q; // expected-error {{constant expression}}
-  void f(), g();
-
-  constexpr void (*pf)() = &f, (*pg)() = &g;
-  constexpr bool u13 = pf < pg; // expected-error {{constant expression}}
-  constexpr bool u14 = pf == pg;
-
-  // If two pointers point to non-static data members of the same object with
-  // different access control, the result is unspecified.
-  struct A {
-  public:
-    constexpr A() : a(0), b(0) {}
-    int a;
-    constexpr bool cmp() const { return &a < &b; } // expected-error {{constexpr function never produces a constant expression}} expected-note {{comparison of address of fields 'a' and 'b' of 'A' with differing access specifiers (public vs private) has unspecified value}}
-  private:
-    int b;
-  };
-  class B {
-  public:
-    A a;
-    constexpr bool cmp() const { return &a.a < &b.a; } // expected-error {{constexpr function never produces a constant expression}} expected-note {{comparison of address of fields 'a' and 'b' of 'B' with differing access specifiers (public vs protected) has unspecified value}}
-  protected:
-    A b;
-  };
-
-  // If two pointers point to different base sub-objects of the same object, or
-  // one points to a base subobject and the other points to a member, the result
-  // of the comparison is unspecified. This is not explicitly called out by
-  // [expr.rel]p2, but is covered by 'Other pointer comparisons are
-  // unspecified'.
-  struct C {
-    int c[2];
-  };
-  struct D {
-    int d;
-  };
-  struct E : C, D {
-    struct Inner {
-      int f;
-    } e;
-  } e;
-  constexpr bool base1 = &e.c[0] < &e.d; // expected-error {{constant expression}} expected-note {{comparison of addresses of subobjects of different base classes has unspecified value}}
-  constexpr bool base2 = &e.c[1] < &e.e.f; // expected-error {{constant expression}} expected-note {{comparison of address of base class subobject 'C' of class 'E' to field 'e' has unspecified value}}
-  constexpr bool base3 = &e.e.f < &e.d; // expected-error {{constant expression}} expected-note {{comparison of address of base class subobject 'D' of class 'E' to field 'e' has unspecified value}}
-
-  // [expr.rel]p3: Pointers to void can be compared [...] if both pointers
-  // represent the same address or are both the null pointer [...]; otherwise
-  // the result is unspecified.
-  struct S { int a, b; } s;
-  constexpr void *null = 0;
-  constexpr void *pv = (void*)&s.a;
-  constexpr void *qv = (void*)&s.b;
-  constexpr bool v1 = null < 0;
-  constexpr bool v2 = null < pv; // expected-error {{constant expression}}
-  constexpr bool v3 = null == pv; // ok
-  constexpr bool v4 = qv == pv; // ok
-  constexpr bool v5 = qv >= pv; // expected-error {{constant expression}} expected-note {{unequal pointers to void}}
-  constexpr bool v6 = qv > null; // expected-error {{constant expression}}
-  constexpr bool v7 = qv <= (void*)&s.b; // ok
-  constexpr bool v8 = qv > (void*)&s.a; // expected-error {{constant expression}} expected-note {{unequal pointers to void}}
-}
-
-// - an assignment or a compound assignment (5.17); or
-namespace Assignment {
-  int k;
-  struct T {
-    int n : (k = 9); // expected-error {{constant expression}}
-    int m : (k *= 2); // expected-error {{constant expression}}
-  };
-
-  struct Literal {
-    constexpr Literal(const char *name) : name(name) {}
-    const char *name;
-  };
-  struct Expr {
-    constexpr Expr(Literal l) : IsLiteral(true), l(l) {}
-    bool IsLiteral;
-    union {
-      Literal l;
-      // ...
-    };
-  };
-  struct MulEq {
-    constexpr MulEq(Expr a, Expr b) : LHS(a), RHS(b) {}
-    Expr LHS;
-    Expr RHS;
-  };
-  constexpr MulEq operator*=(Expr a, Expr b) { return MulEq(a, b); }
-  Literal a("a");
-  Literal b("b");
-  MulEq c = a *= b; // ok
-}
-
-// - a throw-expression (15.1)
-namespace Throw {
-  struct S {
-    int n : (throw "hello", 10); // expected-error {{constant expression}}
-  };
-}
-
-// PR9999
-template<unsigned int v>
-class bitWidthHolding {
-public:
-  static const
-  unsigned int width = (v == 0 ? 0 : bitWidthHolding<(v >> 1)>::width + 1);
-};
-
-static const int width=bitWidthHolding<255>::width;
-
-template<bool b>
-struct always_false {
-  static const bool value = false;
-};
-
-template<bool b>
-struct and_or {
-  static const bool and_value = b && and_or<always_false<b>::value>::and_value;
-  static const bool or_value = !b || and_or<always_false<b>::value>::or_value;
-};
-
-static const bool and_value = and_or<true>::and_value;
-static const bool or_value = and_or<true>::or_value;
-
-static_assert(and_value == false, "");
-static_assert(or_value == true, "");
-
-namespace rdar13090123 {
-  typedef __INTPTR_TYPE__ intptr_t;
-
-  constexpr intptr_t f(intptr_t x) {
-    return (((x) >> 21) * 8); // expected-note{{subexpression not valid in a constant expression}}
-  }
-
-  extern "C" int foo;
-
-  constexpr intptr_t i = f((intptr_t)&foo - 10); // expected-error{{constexpr variable 'i' must be initialized by a constant expression}} \
-  // expected-note{{in call to 'f((char*)&foo + -10)'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p3-0x-nowarn.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p3-0x-nowarn.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p3-0x-nowarn.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wno-c++11-narrowing -verify %s
-// expected-no-diagnostics
-
-// <rdar://problem/11121178>
-void f(int x) {
-  switch (x) {
-    case 0x80000001: break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,110 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-// A converted constant expression of type T is a core constant expression,
-int nonconst = 8; // expected-note 3 {{here}}
-enum NonConstE : unsigned char { NCE = nonconst }; // expected-error {{enumerator value is not a constant expression}} expected-note {{read of non-const}}
-template<int = nonconst> struct NonConstT {}; // expected-error {{non-type template argument is not a constant expression}} expected-note {{read of non-const}}
-void NonConstF() {
-  switch (nonconst) {
-    case nonconst: // expected-error {{case value is not a constant expression}} expected-note {{read of non-const}}
-      break;
-  }
-  return;
-}
-
-// implicitly converted to a prvalue of type T, where the converted expression
-// is a literal constant expression
-
-bool a(int n) {
-  constexpr char vowels[] = "aeiou";
-  switch (n) {
-  case vowels[0]:
-  case vowels[1]:
-  case vowels[2]:
-  case vowels[3]:
-  case vowels[4]:
-    static_assert(!vowels[5], "unexpected number of vowels");
-    return true;
-  }
-  return false;
-}
-
-// and the implicit conversion sequence contains only
-//
-//  user-defined conversions,
-struct S { constexpr operator int() const { return 5; } };
-enum E : unsigned char { E5 = S(), E6, E10 = S() * 2, E1 = E5 / 5 };
-
-//  lvalue-to-rvalue conversions,
-const E e10 = E10;
-template<E> struct T {};
-T<e10> s10;
-
-//  integral promotions, and
-enum class EE { EE32 = ' ', EE65 = 'A', EE1 = (short)1, EE5 = E5 };
-
-//  integral conversions other than narrowing conversions
-int b(unsigned n) {
-  switch (n) {
-    case E6:
-    case EE::EE32: // expected-error {{not implicitly convertible}}
-    case (int)EE::EE32:
-    case 1000:
-    case (long long)1e10: // expected-error {{case value evaluates to 10000000000, which cannot be narrowed to type 'unsigned int'}}
-    case -3: // expected-error {{case value evaluates to -3, which cannot be narrowed to type 'unsigned int'}}
-      return n;
-  }
-  return 0;
-}
-enum class EEE : unsigned short {
-  a = E6,
-  b = EE::EE32, // expected-error {{not implicitly convertible}}
-  c = (int)EE::EE32,
-  d = 1000,
-  e = 123456, // expected-error {{enumerator value evaluates to 123456, which cannot be narrowed to type 'unsigned short'}}
-  f = -3 // expected-error {{enumerator value evaluates to -3, which cannot be narrowed to type 'unsigned short'}}
-};
-template<unsigned char> using A = int;
-using Int = A<E6>;
-using Int = A<EE::EE32>; // expected-error {{not implicitly convertible}}
-using Int = A<(int)EE::EE32>;
-using Int = A<200>;
-using Int = A<1000>; // expected-error {{template argument evaluates to 1000, which cannot be narrowed to type 'unsigned char'}}
-using Int = A<-3>; // expected-error {{template argument evaluates to -3, which cannot be narrowed to type 'unsigned char'}}
-
-// Note, conversions from integral or unscoped enumeration types to bool are
-// integral conversions as well as boolean conversions.
-template<typename T, T v> struct Val { static constexpr T value = v; };
-static_assert(Val<bool, E1>::value == 1, ""); // ok
-static_assert(Val<bool, '\0'>::value == 0, ""); // ok
-static_assert(Val<bool, U'\1'>::value == 1, ""); // ok
-static_assert(Val<bool, E5>::value == 1, ""); // expected-error {{5, which cannot be narrowed to type 'bool'}}
-
-// (no other conversions are permitted)
-using Int = A<1.0>; // expected-error {{conversion from 'double' to 'unsigned char' is not allowed in a converted constant expression}}
-enum B : bool {
-  True = &a, // expected-error {{conversion from 'bool (*)(int)' to 'bool' is not allowed in a converted constant expression}}
-  False = nullptr // expected-error {{conversion from 'nullptr_t' to 'bool' is not allowed in a converted constant expression}}
-};
-void c() {
-  // Note, promoted type of switch is 'int'.
-  switch (bool b = a(5)) { // expected-warning {{boolean value}}
-  case 0.0f: // expected-error {{conversion from 'float' to 'int' is not allowed in a converted constant expression}}
-    break;
-  }
-}
-template<bool B> int f() { return B; }
-template int f<&S::operator int>(); // expected-error {{does not refer to a function template}}
-template int f<(bool)&S::operator int>();
-
-int n = Val<bool, &S::operator int>::value; // expected-error {{conversion from 'int (S::*)() const' to 'bool' is not allowed in a converted constant expression}}
-
-namespace NonConstLValue {
-  struct S {
-    constexpr operator int() const { return 10; }
-  };
-  S s; // not constexpr
-  // Under the FDIS, this is not a converted constant expression.
-  // Under the new proposed wording, it is.
-  enum E : char { e = s };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p5-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p5-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.const/p5-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-// If an expression of literal class type is used in a context where an integral
-// constant expression is required, then that class type shall have a single
-// non-explicit conversion function to an integral or unscoped enumeration type
-namespace std_example {
-
-struct A {
-  constexpr A(int i) : val(i) { }
-  constexpr operator int() const { return val; }
-  constexpr operator long() const { return 43; }
-private:
-  int val;
-};
-template<int> struct X { };
-constexpr A a = 42;
-X<a> x;     // ok, unique conversion to int
-int ary[a]; // expected-error {{size of array has non-integer type 'const std_example::A'}}
-
-}
-
-struct OK {
-  constexpr OK() {}
-  constexpr operator int() const { return 8; }
-} constexpr ok;
-extern struct Incomplete incomplete; // expected-note 4{{forward decl}}
-struct Explicit {
-  constexpr Explicit() {}
-  constexpr explicit operator int() const { return 4; } // expected-note 4{{here}}
-} constexpr expl;
-struct Ambiguous {
-  constexpr Ambiguous() {}
-  constexpr operator int() const { return 2; } // expected-note 4{{here}}
-  constexpr operator long() const { return 1; } // expected-note 4{{here}}
-} constexpr ambig;
-
-constexpr int test_ok = ok; // ok
-constexpr int test_explicit(expl); // ok
-constexpr int test_ambiguous = ambig; // ok
-
-static_assert(test_ok == 8, "");
-static_assert(test_explicit == 4, "");
-static_assert(test_ambiguous == 2, "");
-
-// [expr.new]p6: Every constant-expression in a noptr-new-declarator shall be
-// an integral constant expression
-auto new1 = new int[1][ok];
-auto new2 = new int[1][incomplete]; // expected-error {{incomplete}}
-auto new3 = new int[1][expl]; // expected-error {{explicit conversion}}
-auto new4 = new int[1][ambig]; // expected-error {{ambiguous conversion}}
-
-// [dcl.enum]p5: If the underlying type is not fixed [...] the initializing
-// value [...] shall be an integral constant expression.
-enum NotFixed {
-  enum1 = ok,
-  enum2 = incomplete, // expected-error {{incomplete}}
-  enum3 = expl, // expected-error {{explicit conversion}}
-  enum4 = ambig // expected-error {{ambiguous conversion}}
-};
-
-// [dcl.align]p2: When the alignment-specifier is of the form
-// alignas(assignment-expression), the assignment-expression shall be an
-// integral constant expression
-alignas(ok) int alignas1;
-alignas(incomplete) int alignas2; // expected-error {{incomplete}}
-alignas(expl) int alignas3; // expected-error {{explicit conversion}}
-alignas(ambig) int alignas4; // expected-error {{ambiguous conversion}}
-
-// [dcl.array]p1: If the constant-expression is present, it shall be an integral
-// constant expression
-// FIXME: The VLA recovery results in us giving diagnostics which aren't great
-// here.
-int array1[ok];
-int array2[incomplete]; // expected-error {{non-integer type}}
-int array3[expl]; // expected-error {{non-integer type}}
-int array4[ambig]; // expected-error {{non-integer type}}
-
-// [class.bit]p1: The constasnt-expression shall be an integral constant
-// expression
-struct Bitfields {
-  int bitfield1 : ok;
-  int bitfield2 : incomplete; // expected-error {{incomplete}}
-  int bitfield3 : expl; // expected-error {{explicit conversion}}
-  int bitfield4 : ambig; // expected-error {{ambiguous conversion}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.mptr.oper/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.mptr.oper/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.mptr.oper/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct X0 {
-  void f0();
-  void f1() const;
-  void f2() volatile;
-  void f3() const volatile;
-};
-
-void test_object_cvquals(void (X0::*pm)(),
-                         void (X0::*pmc)() const,
-                         void (X0::*pmv)() volatile,
-                         void (X0::*pmcv)() const volatile,
-                         X0 *p,
-                         const X0 *pc,
-                         volatile X0 *pv,
-                         const volatile X0 *pcv,
-                         X0 &o,
-                         const X0 &oc,
-                         volatile X0 &ov,
-                         const volatile X0 &ocv) {
-  (p->*pm)();
-  (p->*pmc)();
-  (p->*pmv)();
-  (p->*pmcv)();
-
-  (pc->*pm)(); // expected-error{{call to pointer to member function of type 'void ()' drops 'const' qualifier}}
-  (pc->*pmc)();
-  (pc->*pmv)(); // expected-error{{call to pointer to member function of type 'void () volatile' drops 'const' qualifier}}
-  (pc->*pmcv)();
-
-  (pv->*pm)(); // expected-error{{call to pointer to member function of type 'void ()' drops 'volatile' qualifier}}
-  (pv->*pmc)(); // expected-error{{call to pointer to member function of type 'void () const' drops 'volatile' qualifier}}
-  (pv->*pmv)();
-  (pv->*pmcv)();
-
-  (pcv->*pm)(); // expected-error{{call to pointer to member function of type 'void ()' drops 'const volatile' qualifiers}}
-  (pcv->*pmc)(); // expected-error{{call to pointer to member function of type 'void () const' drops 'volatile' qualifier}}
-  (pcv->*pmv)(); // expected-error{{call to pointer to member function of type 'void () volatile' drops 'const' qualifier}}
-  (pcv->*pmcv)();
-
-  (o.*pm)();
-  (o.*pmc)();
-  (o.*pmv)();
-  (o.*pmcv)();
-
-  (oc.*pm)(); // expected-error{{call to pointer to member function of type 'void ()' drops 'const' qualifier}}
-  (oc.*pmc)();
-  (oc.*pmv)(); // expected-error{{call to pointer to member function of type 'void () volatile' drops 'const' qualifier}}
-  (oc.*pmcv)();
-
-  (ov.*pm)(); // expected-error{{call to pointer to member function of type 'void ()' drops 'volatile' qualifier}}
-  (ov.*pmc)(); // expected-error{{call to pointer to member function of type 'void () const' drops 'volatile' qualifier}}
-  (ov.*pmv)();
-  (ov.*pmcv)();
-
-  (ocv.*pm)(); // expected-error{{call to pointer to member function of type 'void ()' drops 'const volatile' qualifiers}}
-  (ocv.*pmc)(); // expected-error{{call to pointer to member function of type 'void () const' drops 'volatile' qualifier}}
-  (ocv.*pmv)(); // expected-error{{call to pointer to member function of type 'void () volatile' drops 'const' qualifier}}
-  (ocv.*pmcv)();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.mptr.oper/p6-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.mptr.oper/p6-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.mptr.oper/p6-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct X { };
-
-template<typename T> T& lvalue();
-template<typename T> T&& xvalue();
-template<typename T> T prvalue();
-
-// In a .* expression whose object expression is an rvalue, the
-// program is ill-formed if the second operand is a pointer to member
-// function with ref-qualifier &. In a ->* expression or in a .*
-// expression whose object expression is an lvalue, the program is
-// ill-formed if the second operand is a pointer to member function
-// with ref-qualifier &&.
-void test(X *xp, int (X::*pmf)(int), int (X::*l_pmf)(int) &, 
-          int (X::*r_pmf)(int) &&) {
-  // No ref-qualifier.
-  (lvalue<X>().*pmf)(17);
-  (xvalue<X>().*pmf)(17);
-  (prvalue<X>().*pmf)(17);
-  (xp->*pmf)(17);
-
-  // Lvalue ref-qualifier.
-  (lvalue<X>().*l_pmf)(17);
-  (xvalue<X>().*l_pmf)(17); // expected-error{{pointer-to-member function type 'int (X::*)(int) &' can only be called on an lvalue}}
-  (prvalue<X>().*l_pmf)(17); // expected-error{{pointer-to-member function type 'int (X::*)(int) &' can only be called on an lvalue}}
-  (xp->*l_pmf)(17);
-
-  // Rvalue ref-qualifier.
-  (lvalue<X>().*r_pmf)(17); // expected-error{{pointer-to-member function type 'int (X::*)(int) &&' can only be called on an rvalue}}
-  (xvalue<X>().*r_pmf)(17);
-  (prvalue<X>().*r_pmf)(17);
-  (xp->*r_pmf)(17);  // expected-error{{pointer-to-member function type 'int (X::*)(int) &&' can only be called on an rvalue}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.call/p7-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct X1 {
-  X1();
-};
-
-struct X2 {
-  X2();
-  ~X2();
-};
-
-struct X3 {
-  X3(const X3&) = default;
-};
-
-struct X4 {
-  X4(const X4&) = default;
-  X4(X4&);
-};
-
-void vararg(...);
-
-void f(X1 x1, X2 x2, X3 x3, X4 x4) {
-  vararg(x1); // OK
-  vararg(x2); // expected-error{{cannot pass object of non-trivial type 'X2' through variadic function; call will abort at runtime}}
-  vararg(x3); // OK
-  vararg(x4); // expected-error{{cannot pass object of non-trivial type 'X4' through variadic function; call will abort at runtime}}
-}
-
-
-namespace PR11131 {
-  struct S;
-
-  S &getS();
-
-  void f(...);
-
-  void g() {
-    (void)sizeof(f(getS()));
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.const.cast/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.const.cast/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.const.cast/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// The result of the expression const_cast<T>(v) is of type T. If T is
-// an lvalue reference to object type, the result is an lvalue; if T
-// is an rvalue reference to object type, the result is an xvalue;.
-
-unsigned int f(int);
-
-template<typename T> T& lvalue();
-template<typename T> T&& xvalue();
-template<typename T> T prvalue();
-
-void test_classification(const int *ptr) {
-  int *ptr0 = const_cast<int *&&>(ptr);
-  int *ptr1 = const_cast<int *&&>(xvalue<const int*>());
-  int *ptr2 = const_cast<int *&&>(prvalue<const int*>());
-}
-
-struct A {
-  volatile unsigned ubf : 4;
-  volatile unsigned uv;
-  volatile int sv;
-  void foo();
-  bool pred();
-};
-
-void test(A &a) {
-  unsigned &t0 = const_cast<unsigned&>(a.ubf); // expected-error {{const_cast from bit-field lvalue to reference type}}
-  unsigned &t1 = const_cast<unsigned&>(a.foo(), a.ubf); // expected-error {{const_cast from bit-field lvalue to reference type}}
-  unsigned &t2 = const_cast<unsigned&>(a.pred() ? a.ubf : a.ubf); // expected-error {{const_cast from bit-field lvalue to reference type}}
-  unsigned &t3 = const_cast<unsigned&>(a.pred() ? a.ubf : a.uv); // expected-error {{const_cast from bit-field lvalue to reference type}}
-  unsigned &t4 = const_cast<unsigned&>(a.pred() ? a.ubf : a.sv); // expected-error {{const_cast from rvalue to reference type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.dynamic.cast/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.dynamic.cast/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.dynamic.cast/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct X { virtual ~X(); };
-struct Y : public X { };
-struct Z; // expected-note{{forward declaration of 'Z'}}
-
-void test(X &x, Y &y, Z &z) {
-  // If T is an rvalue reference type, v shall be an expression having
-  // a complete class type, and the result is an xvalue of the type
-  // referred to by T.
-  Y &&yr0 = dynamic_cast<Y&&>(x);
-  Y &&yr1 = dynamic_cast<Y&&>(static_cast<X&&>(x));
-  Y &&yr2 = dynamic_cast<Y&&>(z); // expected-error{{'Z' is an incomplete type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.ref/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.ref/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.ref/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-// expected-no-diagnostics
-
-template<typename T> struct Node {
-	int lhs;
-	void splay( )                
-	{
-		Node<T> n[1];
-		(void)n->lhs;
-	}
-};
-
-void f() {
-	Node<int> n;
-	return n.splay();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.reinterpret.cast/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.reinterpret.cast/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.reinterpret.cast/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// If T is an lvalue reference type or an rvalue reference to function
-// type, the result is an lvalue; if T is an rvalue reference to
-// object type, the result is an xvalue;
-
-unsigned int f(int);
-
-template<typename T> T&& xvalue();
-void test_classification(char *ptr) {
-  int (&fr0)(int) = reinterpret_cast<int (&&)(int)>(f);
-  int &&ir0 = reinterpret_cast<int &&>(*ptr);
-  int &&ir1 = reinterpret_cast<int &&>(0); // expected-error {{rvalue to reference type}}
-  int &&ir2 = reinterpret_cast<int &&>('a'); // expected-error {{rvalue to reference type}}
-  int &&ir3 = reinterpret_cast<int &&>(xvalue<char>());
-  // Per DR1268, reinterpret_cast can convert between lvalues and xvalues.
-  int &ir4 = reinterpret_cast<int &>(xvalue<char>());
-  int &&ir5 = reinterpret_cast<int &&>(*ptr);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.static.cast/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// A glvalue of type "cv1 T1" can be cast to type "rvalue reference to
-// cv2 T2" if "cv2 T2" is reference-compatible with "cv1 T1" (8.5.3).
-struct A { };
-struct B : A { };
-
-template<typename T> T& lvalue();
-template<typename T> T&& xvalue();
-
-void test(A &a, B &b) {
-  A &&ar0 = static_cast<A&&>(a);
-  A &&ar1 = static_cast<A&&>(b);
-  A &&ar2 = static_cast<A&&>(lvalue<A>());
-  A &&ar3 = static_cast<A&&>(lvalue<B>());
-  A &&ar4 = static_cast<A&&>(xvalue<A>());
-  A &&ar5 = static_cast<A&&>(xvalue<B>());
-  const A &&ar6 = static_cast<const A&&>(a);
-  const A &&ar7 = static_cast<const A&&>(b);
-  const A &&ar8 = static_cast<const A&&>(lvalue<A>());
-  const A &&ar9 = static_cast<const A&&>(lvalue<B>());
-  const A &&ar10 = static_cast<const A&&>(xvalue<A>());
-  const A &&ar11 = static_cast<const A&&>(xvalue<B>());
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.static.cast/p9-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.static.cast/p9-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.static.cast/p9-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-enum class EC { ec1 };
-
-void test0(EC ec) {
-  (void)static_cast<bool>(ec);
-  (void)static_cast<bool>(EC::ec1);
-  (void)static_cast<char>(ec);
-  (void)static_cast<char>(EC::ec1);
-  (void)static_cast<int>(ec);
-  (void)static_cast<int>(EC::ec1);
-  (void)static_cast<unsigned long>(ec);
-  (void)static_cast<unsigned long>(EC::ec1);
-  (void)static_cast<float>(ec);
-  (void)static_cast<float>(EC::ec1);
-  (void)static_cast<double>(ec);
-  (void)static_cast<double>(EC::ec1);
-}
-
-namespace PR9107 {
-  enum E {};
-  template <class _Tp> inline _Tp* addressof(_Tp& __x) {
-    return (_Tp*)&(char&)__x;
-  }
-  void test() {
-    E a;
-    addressof(a);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.type.conv/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.type.conv/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.post/expr.type.conv/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-struct foo {
-  foo();
-  foo(int);
-};
-
-int func(foo& f) {
-  decltype(foo())();
-  f = (decltype(foo()))5;
-  return decltype(3)(5);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct S {
-  int *j = &nonexistent; // expected-error {{use of undeclared identifier 'nonexistent'}}
-  int *m = &n; // ok
-
-  int n = f(); // ok
-  int f();
-};
-
-int i = sizeof(S::m); // ok
-int j = sizeof(S::m + 42); // ok
-
-
-struct T {
-  int n;
-  static void f() {
-    int a[n]; // expected-error {{invalid use of member 'n' in static member function}}
-    int b[sizeof n]; // ok
-  }
-};
-
-// Make sure the rule for unevaluated operands works correctly with typeid.
-namespace std {
-  class type_info;
-}
-class Poly { virtual ~Poly(); };
-const std::type_info& k = typeid(S::m);
-const std::type_info& m = typeid(*(Poly*)S::m); // expected-error {{invalid use of non-static data member}}
-const std::type_info& n = typeid(*(Poly*)(0*sizeof S::m)); 
-
-namespace PR11956 {
-  struct X { char a; };
-  struct Y { int f() { return sizeof(X::a); } }; // ok
-
-  struct A { enum E {} E; };
-  struct B { int f() { return sizeof(A::E); } }; // ok
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,138 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify 
-
-struct A {
-  int &f(int*);
-  float &f(int*) const noexcept;
-  
-  int *ptr;
-  auto g1() noexcept(noexcept(f(ptr))) -> decltype(f(this->ptr));
-  auto g2() const noexcept(noexcept(f((*this).ptr))) -> decltype(f(ptr));
-};
-
-void testA(A &a) {
-  int &ir = a.g1();
-  float &fr = a.g2();
-  static_assert(!noexcept(a.g1()), "exception-specification failure");
-  static_assert(noexcept(a.g2()), "exception-specification failure");
-}
-
-struct B {
-  char g();
-  template<class T> auto f(T t) -> decltype(t + g())
-  { return t + g(); }
-};
-
-template auto B::f(int t) -> decltype(t + g());
-
-template<typename T>
-struct C {
-  int &f(T*);
-  float &f(T*) const noexcept;
-
-  T* ptr;
-  auto g1() noexcept(noexcept(f(ptr))) -> decltype(f((*this).ptr));
-  auto g2() const noexcept(noexcept(f(((this))->ptr))) -> decltype(f(ptr));
-};
-
-void test_C(C<int> ci) {
-  int *p = 0;
-  int &ir = ci.g1();
-  float &fr = ci.g2();
-  static_assert(!noexcept(ci.g1()), "exception-specification failure");
-  static_assert(noexcept(ci.g2()), "exception-specification failure");
-}
-
-namespace PR10036 {
-  template <class I>
-  void
-  iter_swap(I x, I y) noexcept;
-
-  template <class T>
-  class A
-  {
-    T t_;
-  public:
-    void swap(A& a) noexcept(noexcept(iter_swap(&t_, &a.t_)));
-  };
-
-  void test() {
-    A<int> i, j;
-    i.swap(j);
-  }
-}
-
-namespace PR15290 {
-  template<typename T>
-  class A {
-    T v_;
-    friend int add_to_v(A &t) noexcept(noexcept(v_ + 42))
-    {
-      return t.v_ + 42;
-    }
-  };
-  void f()
-  {
-    A<int> t;
-    add_to_v(t);
-  }
-}
-
-namespace Static {
-  struct X1 {
-    int m;
-    // FIXME: This should be accepted.
-    static auto f() -> decltype(m); // expected-error{{'this' cannot be implicitly used in a static member function declaration}}
-    static auto g() -> decltype(this->m); // expected-error{{'this' cannot be used in a static member function declaration}}
-
-    static int h();
-    
-    static int i() noexcept(noexcept(m + 2)); // expected-error{{'this' cannot be implicitly used in a static member function declaration}}
-  };
-
-  auto X1::h() -> decltype(m) { return 0; } // expected-error{{'this' cannot be implicitly used in a static member function declaration}}
-
-  template<typename T>
-  struct X2 {
-    int m;
-
-    T f(T*);
-    static T f(int);
-
-    auto g(T x) -> decltype(f(x)) { return 0; }
-  };
-
-  void test_X2() {
-    X2<int>().g(0);
-  }
-}
-
-namespace PR12564 {
-  struct Base {
-    void bar(Base&) {} // FIXME: expected-note {{here}}
-  };
-
-  struct Derived : Base {
-    // FIXME: This should be accepted.
-    void foo(Derived& d) noexcept(noexcept(d.bar(d))) {} // expected-error {{cannot bind to a value of unrelated type}}
-  };
-}
-
-namespace rdar13473493 {
-  template <typename F>
-  class wrap
-  {
-  public:
-    template <typename... Args>
-    auto operator()(Args&&... args) const -> decltype(wrapped(args...)) // expected-note{{candidate template ignored: substitution failure [with Args = <int>]: use of undeclared identifier 'wrapped'}}
-    {
-      return wrapped(args...);
-    }
-  
-  private:
-    F wrapped;
-  };
-
-  void test(wrap<int (*)(int)> w) {
-    w(5); // expected-error{{no matching function for call to object of type 'wrap<int (*)(int)>'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p4-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p4-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p4-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct S {
-  S *p = this; // ok
-  decltype(this) q; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-
-  int arr[sizeof(this)]; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-  int sz = sizeof(this); // ok
-};
-
-namespace CaptureThis {
-  struct X {
-    int n = 10;
-    int m = [&]{return n + 1; }();
-    int o = [&]{return this->m + 1; }();
-    int p = [&]{return [&](int x) { return this->m + x;}(o); }();
-  };
-  
-  X x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p8-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p8-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.general/p8-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct global {
-};
-
-namespace PR10127 {
-  struct outer {
-    struct middle {
-      struct inner {
-        int func();
-        int i;
-      };
-      struct inner2 {
-      };
-      struct inner3 {
-      };
-      int mfunc();
-    };
-    typedef int td_int;
-  };
-
-  struct str {
-    operator decltype(outer::middle::inner()) ();
-    operator decltype(outer::middle())::inner2 ();
-    operator decltype(outer())::middle::inner3 ();
-    str(int (decltype(outer::middle::inner())::*n)(),
-             int (decltype(outer::middle())::inner::*o)(),
-             int (decltype(outer())::middle::inner::*p)());
-  };
-
-  decltype(outer::middle::inner()) a;
-  void scope() {
-    a.decltype(outer::middle())::mfunc(); // expected-error{{'PR10127::outer::middle::mfunc' is not a member of class 'decltype(outer::middle::inner())'}}
-    a.decltype(outer::middle::inner())::func();
-    a.decltype(outer::middle())::inner::func();
-    a.decltype(outer())::middle::inner::func();
-
-    a.decltype(outer())::middle::inner::~inner();
-
-    decltype(outer())::middle::inner().func();
-  }
-  decltype(outer::middle())::inner b;
-  decltype(outer())::middle::inner c;
-  decltype(outer())::fail d; // expected-error{{no type named 'fail' in 'PR10127::outer'}}
-  decltype(outer())::fail::inner e; // expected-error{{no member named 'fail' in 'PR10127::outer'}}
-  decltype()::fail f; // expected-error{{expected expression}}
-  decltype()::middle::fail g; // expected-error{{expected expression}}
-  
-  decltype(int()) h;
-  decltype(int())::PR10127::outer i; // expected-error{{'decltype(int())' (aka 'int') is not a class, namespace, or scoped enumeration}}
-  decltype(int())::global j; // expected-error{{'decltype(int())' (aka 'int') is not a class, namespace, or scoped enumeration}}
-  
-  outer::middle k = decltype(outer())::middle();
-  outer::middle::inner l = decltype(outer())::middle::inner();
-
-  template<typename T>
-  struct templ {
-    typename decltype(T())::middle::inner x; // expected-error{{type 'decltype(int())' (aka 'int') cannot be used prior to '::' because it has no members}}
-  };
-
-  template class templ<int>; // expected-note{{in instantiation of template class 'PR10127::templ<int>' requested here}}
-  template class templ<outer>;
-
-  enum class foo {
-    bar,
-    baz
-  };
-  
-  foo m = decltype(foo::bar)::baz;
-
-  enum E {
-  };
-  struct bar {
-    enum E : decltype(outer())::td_int(4);
-    enum F : decltype(outer())::td_int;
-    enum G : decltype; // expected-error{{expected '(' after 'decltype'}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks-irgen.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks-irgen.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks-irgen.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fblocks -emit-llvm -o - -triple x86_64-apple-darwin11.3 %s | FileCheck %s
-
-namespace PR12746 {
-  // CHECK: define zeroext i1 @_ZN7PR127462f1EPi
-  bool f1(int *x) {
-    // CHECK: store i8* bitcast (i1 (i8*)* @___ZN7PR127462f1EPi_block_invoke to i8*)
-    bool (^outer)() = ^ {
-      auto inner = [&]() -> bool {
-	return x == 0;
-      };
-      return inner();
-    };
-    return outer();
-  }
-
-  // CHECK: define internal zeroext i1 @___ZN7PR127462f1EPi_block_invoke
-  // CHECK: call zeroext i1 @"_ZNK7PR127462f132___ZN7PR127462f1EPi_block_invoke3$_0clEv"
-
-  bool f2(int *x) {
-    auto outer = [&]() -> bool {
-      bool (^inner)() = ^ {
-	return x == 0;
-      };
-      return inner();
-    };
-    return outer();
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/blocks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,126 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fblocks %s -verify
-
-void block_capture_errors() {
-  __block int var; // expected-note 2{{'var' declared here}}
-  (void)[var] { }; // expected-error{{__block variable 'var' cannot be captured in a lambda}}
-
-  (void)[=] { var = 17; }; // expected-error{{__block variable 'var' cannot be captured in a lambda}}
-}
-
-void conversion_to_block(int captured) {
-  int (^b1)(int) = [=](int x) { return x + captured; };
-
-  const auto lambda = [=](int x) { return x + captured; };
-  int (^b2)(int) = lambda;
-}
-
-template<typename T>
-class ConstCopyConstructorBoom {
-public:
-  ConstCopyConstructorBoom(ConstCopyConstructorBoom&);
-
-  ConstCopyConstructorBoom(const ConstCopyConstructorBoom&) {
-    T *ptr = 1; // expected-error{{cannot initialize a variable of type 'float *' with an rvalue of type 'int'}}
-  }
-
-  void foo() const;
-};
-
-void conversion_to_block_init(ConstCopyConstructorBoom<int> boom,
-                              ConstCopyConstructorBoom<float> boom2) {
-  const auto& lambda1([=] { boom.foo(); }); // okay
-
-  const auto& lambda2([=] { boom2.foo(); }); // expected-note{{in instantiation of member function}}
-  void (^block)(void) = lambda2;
-}
-
-
-void nesting() {
-  int array[7]; // expected-note 2{{'array' declared here}}
-  [=] () mutable {
-    [&] {
-      ^ {
-        int i = array[2];
-        i += array[3];
-      }();
-    }();
-  }();
-
-  [&] {
-    [=] () mutable {
-      ^ {
-        int i = array[2]; // expected-error{{cannot refer to declaration with an array type inside block}}
-        i += array[3]; // expected-error{{cannot refer to declaration with an array type inside block}}
-      }();
-    }();
-  }();
-}
-
-namespace overloading {
-  void bool_conversion() {
-    if ([](){}) {
-    }
-
-    bool b = []{};
-    b = (bool)[]{};
-  }
-
-  void conversions() {
-    int (*fp)(int) = [](int x) { return x + 1; };
-    fp = [](int x) { return x + 1; };
-
-    typedef int (*func_ptr)(int);
-    fp = (func_ptr)[](int x) { return x + 1; };
-
-    int (^bp)(int) = [](int x) { return x + 1; };
-    bp = [](int x) { return x + 1; };
-
-    typedef int (^block_ptr)(int);
-    bp = (block_ptr)[](int x) { return x + 1; };
-  }
-
-  int &accept_lambda_conv(int (*fp)(int));
-  float &accept_lambda_conv(int (^bp)(int));
-
-  void call_with_lambda() {
-    int &ir = accept_lambda_conv([](int x) { return x + 1; });
-  }
-}
-
-namespace PR13117 {
-  struct A {
-    template<typename ... Args> static void f(Args...);
-
-    template<typename ... Args> static void f1()
-    {
-      (void)^(Args args) { // expected-error{{block contains unexpanded parameter pack 'Args'}}
-      };
-    }
-
-    template<typename ... Args> static void f2()
-    {
-      // FIXME: Allow this.
-      f(
-        ^(Args args) // expected-error{{block contains unexpanded parameter pack 'Args'}}
-        { }
-        ... // expected-error{{pack expansion does not contain any unexpanded parameter packs}}
-      );
-    }
-
-    template<typename ... Args> static void f3()
-    {
-      (void)[](Args args) { // expected-error{{expression contains unexpanded parameter pack 'Args'}}
-      };
-    }
-
-    template<typename ... Args> static void f4()
-    {
-      f([](Args args) { } ...);
-    }
-  };
-
-  void g() {
-    A::f1<int, int>();
-    A::f2<int, int>();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/default-arguments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/default-arguments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/default-arguments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-void defargs() {
-  auto l1 = [](int i, int j = 17, int k = 18) { return i + j + k; };
-  int i1 = l1(1);
-  int i2 = l1(1, 2);
-  int i3 = l1(1, 2, 3);
-}
-
-
-void defargs_errors() {
-  auto l1 = [](int i, 
-               int j = 17, 
-               int k) { }; // expected-error{{missing default argument on parameter 'k'}}
-
-  auto l2 = [](int i, int j = i) {}; // expected-error{{default argument references parameter 'i'}}
-
-  int foo;
-  auto l3 = [](int i = foo) {}; // expected-error{{default argument references local variable 'foo' of enclosing function}}
-}
-
-struct NonPOD {
-  NonPOD();
-  NonPOD(const NonPOD&);
-  ~NonPOD();
-};
-
-struct NoDefaultCtor {
-  NoDefaultCtor(const NoDefaultCtor&); // expected-note{{candidate constructor}}
-  ~NoDefaultCtor();
-};
-
-template<typename T>
-void defargs_in_template_unused(T t) {
-  auto l1 = [](const T& value = T()) { };
-  l1(t);
-}
-
-template void defargs_in_template_unused(NonPOD);
-template void defargs_in_template_unused(NoDefaultCtor);
-
-template<typename T>
-void defargs_in_template_used() {
-  auto l1 = [](const T& value = T()) { }; // expected-error{{no matching constructor for initialization of 'NoDefaultCtor'}}
-  l1(); // expected-note{{in instantiation of default function argument expression for 'operator()<NoDefaultCtor>' required here}}
-}
-
-template void defargs_in_template_used<NonPOD>();
-template void defargs_in_template_used<NoDefaultCtor>(); // expected-note{{in instantiation of function template specialization}}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-int GlobalVar; // expected-note {{declared here}}
-
-namespace N {
-  int AmbiguousVar; // expected-note {{candidate}}
-}
-int AmbiguousVar; // expected-note {{candidate}}
-using namespace N;
-
-class X0 {
-  int Member;
-
-  static void Overload(int);
-  void Overload();
-  virtual X0& Overload(float);
-
-  void explicit_capture() {
-    int variable; // expected-note {{declared here}}
-    (void)[&Overload] () {}; // expected-error {{does not name a variable}} 
-    (void)[&GlobalVar] () {}; // expected-error {{does not have automatic storage duration}} 
-    (void)[&AmbiguousVar] () {}; // expected-error {{reference to 'AmbiguousVar' is ambiguous}} 
-    (void)[&Variable] () {}; // expected-error {{use of undeclared identifier 'Variable'; did you mean 'variable'}}
-  }
-};
-
-void test_reaching_scope() {
-  int local; // expected-note{{declared here}}
-  static int local_static; // expected-note{{'local_static' declared here}}
-  (void)[=]() {
-    struct InnerLocal {
-      void member() {
-        (void)[local, // expected-error{{reference to local variable 'local' declared in enclosing function 'test_reaching_scope'}}
-               local_static]() { // expected-error{{'local_static' cannot be captured because it does not have automatic storage duration}}
-          return 0;
-        };
-      }
-    };
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-void test_reaching_scope() {
-  int local; // expected-note{{declared here}}
-  static int local_static;
-  (void)[=]() {
-    struct InnerLocal {
-      void member() {
-        (void)[=]() {
-          return local + // expected-error{{reference to local variable 'local' declared in enclosing function 'test_reaching_scope'}}
-            local_static;
-        };
-      }
-    };
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p12.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p12.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p12.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
-
-void odr_used() {
-  int i = 17;
-  [i]{}();
-}
-
-struct ReachingThis {
-  static void static_foo() {
-    (void)[this](){}; // expected-error{{'this' cannot be captured in this context}}
-
-    struct Local {
-      int i;
-
-      void bar() {
-        (void)[this](){};
-        (void)[&](){i = 7; };
-      }
-    };
-  }
-
-  void foo() {
-    (void)[this](){};
-    
-    struct Local {
-      int i;
-
-      static void static_bar() {
-        (void)[this](){}; // expected-error{{'this' cannot be captured in this context}}
-        (void)[&](){i = 7; }; // expected-error{{invalid use of member 'i' in static member function}}
-      }
-    };
-  }
-};
-
-void immediately_enclosing(int i) { // expected-note{{'i' declared here}}
-  [i]() {
-    [i] {}();
-  }();
-
-  [=]() {
-    [i] {}();
-  }();
-
-  []() { // expected-note{{lambda expression begins here}}
-    [i] {}(); // expected-error{{variable 'i' cannot be implicitly captured in a lambda with no capture-default specified}}
-  }();
-}
-
-void f1(int i) { // expected-note{{declared here}}
-  int const N = 20;
-  auto m1 = [=]{
-    int const M = 30;
-    auto m2 = [i]{
-      int x[N][M];
-      x[0][0] = i;
-    }; 
-    (void)N;
-    (void)M;
-    (void)m2;
-  };
-  struct s1 {
-    int f;
-    void work(int n) { // expected-note{{declared here}}
-      int m = n*n;
-      int j = 40; // expected-note{{declared here}}
-      auto m3 = [this,m] { // expected-note 3{{lambda expression begins here}}
-        auto m4 = [&,j] { // expected-error{{variable 'j' cannot be implicitly captured in a lambda with no capture-default specified}}
-          int x = n; // expected-error{{variable 'n' cannot be implicitly captured in a lambda with no capture-default specified}}
-          x += m;
-          x += i; // expected-error{{variable 'i' cannot be implicitly captured in a lambda with no capture-default specified}}
-          x += f;
-        };
-      };
-    } 
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p13.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p13.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p13.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
-
-void f2() {
-  int i = 1;
-  void g1(int = ([i]{ return i; })()); // expected-error{{lambda expression in default argument cannot capture any entity}}
-  void g2(int = ([i]{ return 0; })()); // expected-error{{lambda expression in default argument cannot capture any entity}}
-  void g3(int = ([=]{ return i; })()); // expected-error{{lambda expression in default argument cannot capture any entity}}
-  void g4(int = ([=]{ return 0; })());
-  void g5(int = ([]{ return sizeof i; })());
-}
-
-namespace lambda_in_default_args {
-  int f(int = [] () -> int { int n; return ++n; } ());
-  template<typename T> T g(T = [] () -> T { T n; return ++n; } ());
-  int k = f() + g<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p14.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-template<typename T> void capture(const T&);
-
-class NonCopyable {
-  NonCopyable(const NonCopyable&); // expected-note 2 {{implicitly declared private here}}
-public:
-  void foo() const;
-};
-
-class NonConstCopy {
-public:
-  NonConstCopy(NonConstCopy&); // expected-note{{would lose const}}
-};
-
-void capture_by_copy(NonCopyable nc, NonCopyable &ncr, const NonConstCopy nco) {
-  (void)[nc] { }; // expected-error{{capture of variable 'nc' as type 'NonCopyable' calls private copy constructor}}
-  (void)[=] {
-    ncr.foo(); // expected-error{{capture of variable 'ncr' as type 'NonCopyable' calls private copy constructor}} 
-  }();
-
-  [nco] {}(); // expected-error{{no matching constructor for initialization of 'const NonConstCopy'}}
-}
-
-struct NonTrivial {
-  NonTrivial();
-  NonTrivial(const NonTrivial &);
-  ~NonTrivial();
-};
-
-struct CopyCtorDefault {
-  CopyCtorDefault();
-  CopyCtorDefault(const CopyCtorDefault&, NonTrivial nt = NonTrivial());
-
-  void foo() const;
-};
-
-void capture_with_default_args(CopyCtorDefault cct) {
-  (void)[=] () -> void { cct.foo(); };
-}
-
-struct ExpectedArrayLayout {
-  CopyCtorDefault array[3];
-};
-
-void capture_array() {
-  CopyCtorDefault array[3];
-  auto x = [=]() -> void {
-    capture(array[0]);
-  };
-  static_assert(sizeof(x) == sizeof(ExpectedArrayLayout), "layout mismatch");
-}
-
-// Check for the expected non-static data members.
-
-struct ExpectedLayout {
-  char a;
-  short b;
-};
-
-void test_layout(char a, short b) {
-  auto x = [=] () -> void {
-    capture(a);
-    capture(b);
-  };
-  static_assert(sizeof(x) == sizeof(ExpectedLayout), "Layout mismatch!");
-}
-
-struct ExpectedThisLayout {
-  ExpectedThisLayout* a;
-  void f() {
-    auto x = [this]() -> void {};
-    static_assert(sizeof(x) == sizeof(ExpectedThisLayout), "Layout mismatch!");
-  }
-};
-
-struct CaptureArrayAndThis {
-  int value;
-
-  void f() {
-    int array[3];
-    [=]() -> int {
-      int result = value;
-      for (unsigned i = 0; i < 3; ++i)
-        result += array[i];
-      return result;
-    }();
-  }
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p15.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-// expected-no-diagnostics
-
-class NonCopyable {
-  NonCopyable(const NonCopyable&);
-};
-
-void capture_by_ref(NonCopyable nc, NonCopyable &ncr) {
-  int array[3];
-  (void)[&nc] () -> void {};
-  (void)[&ncr] () -> void {}; 
-  (void)[&array] () -> void {};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p16.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p16.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p16.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
-
-
-struct X {
-  X(const X&) = delete; // expected-note 2{{explicitly marked deleted}}
-  X(X&);
-};
-
-void test_capture(X x) {
-  [x] { }(); // okay: non-const copy ctor
-
-  [x] {
-    [x] { // expected-error{{call to deleted constructor of 'X'}}
-    }();
-  }();
-
-  [x] {
-    [&x] {
-      [x] { // expected-error{{call to deleted constructor of 'const X'}}
-      }();
-    }();
-  }();
-
-  int a; 
-  [=]{ 
-    [&] { 
-      int &x = a;  // expected-error{{binding of reference to type 'int' to a value of type 'const int' drops qualifiers}}
-      int &x2 = a;  // expected-error{{binding of reference to type 'int' to a value of type 'const int' drops qualifiers}}
-    }(); 
-  }(); 
-
-  [=]{ 
-    [&a] { 
-      [&] { 
-        int &x = a;  // expected-error{{binding of reference to type 'int' to a value of type 'const int' drops qualifiers}}
-        int &x2 = a;  // expected-error{{binding of reference to type 'int' to a value of type 'const int' drops qualifiers}}
-      }();
-    }(); 
-  }(); 
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p18.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p18.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p18.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
-// expected-no-diagnostics
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-void f3() {
-  float x, &r = x;
-  int i;
-  int &ir = i;
-  const int &irc = i;
-
-  [=,&irc,&ir] {
-    static_assert(is_same<decltype(((r))), float const&>::value, 
-                  "should be const float&");
-    static_assert(is_same<decltype(x), float>::value, "should be float");
-    static_assert(is_same<decltype((x)), const float&>::value, 
-                  "should be const float&");
-    static_assert(is_same<decltype(r), float&>::value, "should be float&");
-    static_assert(is_same<decltype(ir), int&>::value, "should be int&");
-    static_assert(is_same<decltype((ir)), int&>::value, "should be int&");
-    static_assert(is_same<decltype(irc), const int&>::value, 
-                  "should be const int&");
-    static_assert(is_same<decltype((irc)), const int&>::value, 
-                  "should be const int&");
-  }();
-
-  [=] {
-    [=] () mutable {
-      static_assert(is_same<decltype(x), float>::value, "should be float");
-      static_assert(is_same<decltype((x)), float&>::value, 
-                    "should be float&");
-    }();
-  }();
-
-  [&i] {
-    static_assert(is_same<decltype((i)), int&>::value, "should be int&");
-  }();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p19.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p19.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p19.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
-
-struct MoveOnly {
-  MoveOnly(MoveOnly&&);
-  MoveOnly(const MoveOnly&);
-};
-
-template<typename T> T &&move(T&);
-void test_special_member_functions(MoveOnly mo, int i) {
-  auto lambda1 = [i]() { }; // expected-note 2 {{lambda expression begins here}}
-
-  // Default constructor
-  decltype(lambda1) lambda2; // expected-error{{call to implicitly-deleted default constructor of 'decltype(lambda1)' (aka '<lambda}}
-
-  // Copy assignment operator
-  lambda1 = lambda1; // expected-error{{copy assignment operator is implicitly deleted}}
-
-  // Move assignment operator
-  lambda1 = move(lambda1);
-
-  // Copy constructor
-  decltype(lambda1) lambda3 = lambda1;
-  decltype(lambda1) lambda4(lambda1);
-
-  // Move constructor
-  decltype(lambda1) lambda5 = move(lambda1);
-  decltype(lambda1) lambda6(move(lambda1));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-// prvalue
-void prvalue() {
-  auto&& x = []()->void { };
-  auto& y = []()->void { }; // expected-error{{cannot bind to a temporary of type}}
-}
-
-namespace std {
-  class type_info;
-}
-
-struct P {
-  virtual ~P();
-};
-
-void unevaluated_operand(P &p, int i) {
-  int i2 = sizeof([]()->void{}()); // expected-error{{lambda expression in an unevaluated operand}}
-  const std::type_info &ti1 = typeid([&]() -> P& { return p; }());
-  const std::type_info &ti2 = typeid([&]() -> int { return i; }());  // expected-error{{lambda expression in an unevaluated operand}}
-}
-
-template<typename T>
-struct Boom {
-  Boom(const Boom&) { 
-    T* x = 1; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}} \
-    // expected-error{{cannot initialize a variable of type 'float *' with an rvalue of type 'int'}} \
-    // expected-error{{cannot initialize a variable of type 'double *' with an rvalue of type 'int'}}
-  }
-  void tickle() const;
-};
-
-void odr_used(P &p, Boom<int> boom_int, Boom<float> boom_float,
-              Boom<double> boom_double) {
-  const std::type_info &ti1
-    = typeid([=,&p]() -> P& { boom_int.tickle(); return p; }()); // expected-note{{in instantiation of member function 'Boom<int>::Boom' requested here}}
-  const std::type_info &ti2
-    = typeid([=]() -> int { boom_float.tickle(); return 0; }()); // expected-error{{lambda expression in an unevaluated operand}} \
-  // expected-note{{in instantiation of member function 'Boom<float>::Boom' requested here}}
-
-  auto foo = [=]() -> int { boom_double.tickle(); return 0; }; // expected-note{{in instantiation of member function 'Boom<double>::Boom' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p20.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p20.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p20.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
-// expected-no-diagnostics
-
-template<typename T>
-void destroy(T* ptr) {
-  ptr->~T();
-  (*ptr).~T();
-}
-
-void destructor() {
-  auto lambda = []{};
-  destroy(&lambda);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p21.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p21.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p21.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-// expected-no-diagnostics
-
-struct DirectInitOnly {
-  explicit DirectInitOnly(DirectInitOnly&);
-};
-
-void direct_init_capture(DirectInitOnly &dio) {
-  [dio] {}();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p23.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p23.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p23.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-void print();
-
-template<typename T, typename... Ts>
-void print(T first, Ts... rest) {
-  (void)first;
-  print(rest...);
-}
-
-template<typename... Ts>
-void unexpanded_capture(Ts ...values) {
-  auto unexp = [values] {}; // expected-error{{initializer contains unexpanded parameter pack 'values'}}
-}
-
-template<typename... Ts>
-void implicit_capture(Ts ...values) {
-  auto implicit = [&] { print(values...); };
-  implicit();
-}
-
-template<typename... Ts>
-void do_print(Ts... values) {
-  auto bycopy = [values...]() { print(values...); };
-  bycopy();
-  auto byref = [&values...]() { print(values...); };
-  byref();
-
-  auto bycopy2 = [=]() { print(values...); };
-  bycopy2();
-  auto byref2 = [&]() { print(values...); };
-  byref2();
-}
-
-template void do_print(int, float, double);
-
-template<typename T, int... Values>
-void bogus_expansions(T x) {
-  auto l1 = [x...] {}; // expected-error{{pack expansion does not contain any unexpanded parameter packs}}
-  auto l2 = [Values...] {}; // expected-error{{'Values' in capture list does not name a variable}}
-}
-
-void g(int*, float*, double*);
-
-template<class... Args>
-void std_example(Args... args) {
-  auto lm = [&, args...] { return g(args...); };
-};
-
-template void std_example(int*, float*, double*);
-
-template<typename ...Args>
-void variadic_lambda(Args... args) {
-  auto lambda = [](Args... inner_args) { return g(inner_args...); };
-  lambda(args...);
-}
-
-template void variadic_lambda(int*, float*, double*);

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-void test_nonaggregate(int i) {
-  auto lambda = [i]() -> void {}; // expected-note 3{{candidate constructor}}
-  decltype(lambda) foo = { 1 }; // expected-error{{no matching constructor}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-void missing_lambda_declarator() {
-  [](){}();
-}
-
-template<typename T> T get();
-
-void infer_void_return_type(int i) {
-  if (i > 17)
-    return []() { }();
-
-  if (i > 11)
-    return []() { return; }();
-
-  return [](int x) {
-    switch (x) {
-    case 0: return get<void>();
-    case 1: return;
-    case 2: return { 1, 2.0 }; // expected-error{{cannot deduce lambda return type from initializer list}}
-    }
-  }(7);
-}
-
-struct X { };
-
-X infer_X_return_type(X x) {
-  return [&x](int y) {
-    if (y > 0)
-      return X();
-    else
-      return x;
-  }(5);
-}
-
-X infer_X_return_type_fail(X x) {
-  return [x](int y) {
-    if (y > 0)
-      return X();
-    else
-      return x; // expected-error{{return type 'const X' must match previous return type 'X' when lambda expression has unspecified explicit return type}}
-  }(5);
-}
-
-struct Incomplete; // expected-note{{forward declaration of 'Incomplete'}}
-void test_result_type(int N) {
-  auto l1 = [] () -> Incomplete { }; // expected-error{{incomplete result type 'Incomplete' in lambda expression}}
-
-  typedef int vla[N];
-  auto l2 = [] () -> vla { }; // expected-error{{function cannot return array type 'vla' (aka 'int [N]')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p4.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
- at interface A
- at end
-
-void test_result_type() {
-  auto l1 = [] () -> A { }; // expected-error{{non-pointer Objective-C class type 'A' in lambda expression result}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -Winvalid-noreturn -verify
-
-// An attribute-specifier-seq in a lambda-declarator appertains to the
-// type of the corresponding function call operator.
-void test_attributes() {
-  auto nrl = [](int x) -> int { if (x > 0) return x; }; // expected-warning{{control may reach end of non-void lambda}}
-
-  // FIXME: GCC accepts the [[gnu::noreturn]] attribute here.
-  auto nrl2 = []() [[gnu::noreturn]] { return; }; // expected-warning{{attribute 'noreturn' ignored}}
-}
-
-template<typename T>
-struct bogus_override_if_virtual : public T {
-  bogus_override_if_virtual() : T(*(T*)0) { }
-  int operator()() const;
-};
-
-void test_quals() {
-  // This function call operator is declared const (9.3.1) if and only
-  // if the lambda- expression's parameter-declaration-clause is not
-  // followed by mutable.
-  auto l = [=](){}; // expected-note{{method is not marked volatile}}
-  const decltype(l) lc = l;
-  l();
-  lc();
-
-  auto ml = [=]() mutable{}; // expected-note{{method is not marked const}} \
-                             // expected-note{{method is not marked volatile}} 
-  const decltype(ml) mlc = ml;
-  ml();
-  mlc(); // expected-error{{no matching function for call to object of type}}
-
-  // It is neither virtual nor declared volatile.
-  volatile decltype(l) lv = l;
-  volatile decltype(ml) mlv = ml;
-  lv(); // expected-error{{no matching function for call to object of type}}
-  mlv(); // expected-error{{no matching function for call to object of type}}
-
-  bogus_override_if_virtual<decltype(l)> bogus;
-}
-
-// Core issue 974: default arguments (8.3.6) may be specified in the
-// parameter-declaration-clause of a lambda-declarator.
-int test_default_args() {
-  return [](int i = 5, int j = 17) { return i+j;}(5, 6);
-}
-
-// Any exception-specification specified on a lambda-expression
-// applies to the corresponding function call operator.
-void test_exception_spec() {
-  auto tl1 = []() throw(int) {};
-  auto tl2 = []() {};
-  static_assert(!noexcept(tl1()), "lambda can throw");
-  static_assert(!noexcept(tl2()), "lambda can throw");
-
-  auto ntl1 = []() throw() {};
-  auto ntl2 = []() noexcept(true) {};
-  auto ntl3 = []() noexcept {};
-  static_assert(noexcept(ntl1()), "lambda cannot throw");  
-  static_assert(noexcept(ntl2()), "lambda cannot throw");  
-  static_assert(noexcept(ntl3()), "lambda cannot throw");  
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-void test_conversion() {
-  int (*fp1)(int) = [](int x) { return x + 1; };
-  void (*fp2)(int) = [](int x) { };
-
-  const auto lambda = [](int x) { };
-  void (*fp3)(int) = lambda;
-
-  volatile const auto lambda2 = [](int x) { }; // expected-note{{but method is not marked volatile}}
-  void (*fp4)(int) = lambda2; // expected-error{{no viable conversion}}
-}
-
-void test_no_conversion() { 
-  int (*fp1)(int) = [=](int x) { return x + 1; }; // expected-error{{no viable conversion}}
-  void (*fp2)(int) = [&](int x) { }; // expected-error{{no viable conversion}}
-}
-
-void test_wonky() {
-  const auto l = [](int x) mutable -> int { return + 1; };
-  l(17); // okay: uses conversion function
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-// Check that analysis-based warnings work in lambda bodies.
-void analysis_based_warnings() {
-  (void)[]() -> int { }; // expected-warning{{control reaches end of non-void lambda}}
-}
-
-// Check that we get the right types of captured variables (the
-// semantic-analysis part of p7).
-int &check_const_int(int&);
-float &check_const_int(const int&);
-
-void test_capture_constness(int i, const int ic) {
-  (void)[i,ic] ()->void {
-    float &fr1 = check_const_int(i);
-    float &fr2 = check_const_int(ic);
-  }; 
-
-  (void)[=] ()->void {
-    float &fr1 = check_const_int(i);
-    float &fr2 = check_const_int(ic);
-  }; 
-
-  (void)[i,ic] () mutable ->void {
-    int &ir = check_const_int(i);
-    float &fr = check_const_int(ic);
-  };
-
-  (void)[=] () mutable ->void {
-    int &ir = check_const_int(i);
-    float &fr = check_const_int(ic);
-  };
-
-  (void)[&i,&ic] ()->void {
-    int &ir = check_const_int(i);
-    float &fr = check_const_int(ic);
-  };
-
-  (void)[&] ()->void {
-    int &ir = check_const_int(i);
-    float &fr = check_const_int(ic);
-  };
-}
-
-
-struct S1 {
-  int x, y;
-  S1 &operator=(int*);
-  int operator()(int);
-  void f() {
-    [&]()->int {
-      S1 &s1 = operator=(&this->x);
-      return operator()(this->x + y);
-    }(); 
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-class X0 {
-  void explicit_capture() {
-    int foo;
-
-    (void)[foo, foo] () {}; // expected-error {{'foo' can appear only once}}
-    (void)[this, this] () {}; // expected-error {{'this' can appear only once}}
-    (void)[=, foo] () {}; // expected-error {{'&' must precede a capture when}}
-    (void)[=, &foo] () {};
-    (void)[=, this] () {}; // expected-error {{'this' cannot be explicitly captured}}
-    (void)[&, foo] () {};
-    (void)[&, &foo] () {}; // expected-error {{'&' cannot precede a capture when}} 
-    (void)[&, this] () {};
-  }
-};
-
-struct S2 { 
-  void f(int i); 
-  void g(int i);
-};
-
-void S2::f(int i) {
-  (void)[&, i]{ };
-  (void)[&, &i]{ }; // expected-error{{'&' cannot precede a capture when the capture default is '&'}}
-  (void)[=, this]{ }; // expected-error{{'this' cannot be explicitly captured}}
-  (void)[=]{ this->g(i); };
-  (void)[i, i]{ }; // expected-error{{'i' can appear only once in a capture list}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.prim/expr.prim.lambda/templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,150 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Winvalid-noreturn %s -verify
-
-template<typename T>
-void test_attributes() {
-  // FIXME: GCC accepts [[gnu::noreturn]] here.
-  auto nrl = []() [[gnu::noreturn]] {}; // expected-warning{{attribute 'noreturn' ignored}}
-}
-
-template void test_attributes<int>();
-
-template<typename T>
-void call_with_zero() {
-  [](T *ptr) -> T& { return *ptr; }(0);
-}
-
-template void call_with_zero<int>();
-
-template<typename T>
-T captures(T x, T y) {
-  auto lambda = [=, &y] () -> T {
-    T i = x;
-    return i + y;
-  };
-
-  return lambda();
-}
-
-struct X {
-  X(const X&);
-};
-
-X operator+(X, X);
-X operator-(X, X);
-
-template int captures(int, int);
-template X captures(X, X);
-
-template<typename T>
-int infer_result(T x, T y) {
-  auto lambda = [=](bool b) { return x + y; };
-  return lambda(true); // expected-error{{no viable conversion from 'X' to 'int'}}
-}
-
-template int infer_result(int, int);
-template int infer_result(X, X); // expected-note{{in instantiation of function template specialization 'infer_result<X>' requested here}}
-
-// Make sure that lambda's operator() can be used from templates.
-template<typename F>
-void accept_lambda(F f) {
-  f(1);
-}
-
-template<typename T>
-void pass_lambda(T x) {
-  accept_lambda([&x](T y) { return x + y; });
-}
-
-template void pass_lambda(int);
-
-namespace std {
-  class type_info;
-}
-
-namespace p2 {
-  struct P {
-    virtual ~P();
-  };
-
-  template<typename T>
-  struct Boom {
-    Boom(const Boom&) { 
-      T* x = 1; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}} \
-      // expected-error{{cannot initialize a variable of type 'float *' with an rvalue of type 'int'}}
-    }
-    void tickle() const;
-  };
-  
-  template<typename R, typename T>
-  void odr_used(R &r, Boom<T> boom) {
-    const std::type_info &ti
-      = typeid([=,&r] () -> R& { // expected-error{{lambda expression in an unevaluated operand}}
-          boom.tickle(); // expected-note{{in instantiation of member function}}
-          return r; 
-        }()); 
-  }
-
-  template void odr_used(int&, Boom<int>); // expected-note{{in instantiation of function template specialization}}
-
-  template<typename R, typename T>
-  void odr_used2(R &r, Boom<T> boom) {
-    const std::type_info &ti
-      = typeid([=,&r] () -> R& {
-          boom.tickle(); // expected-note{{in instantiation of member function}}
-          return r; 
-        }()); 
-  }
-
-  template void odr_used2(P&, Boom<float>);
-}
-
-namespace p5 {
-  struct NonConstCopy {
-    NonConstCopy(const NonConstCopy&) = delete;
-    NonConstCopy(NonConstCopy&);
-  };
-
-  template<typename T>
-  void double_capture(T &nc) {
-    [=] () mutable {
-      [=] () mutable {
-        T nc2(nc);
-      }();
-    }();
-  }
-
-  template void double_capture(NonConstCopy&);
-}
-
-namespace NonLocalLambdaInstantation {
-  template<typename T>
-  struct X {
-    static int value;
-  };
-
-  template<typename T>
-  int X<T>::value = []{ return T(); }(); // expected-error{{cannot initialize a variable of type 'int' with an rvalue of type 'int *'}}
-
-  template int X<int>::value;
-  template int X<float>::value;
-  template int X<int*>::value; // expected-note{{in instantiation of static data member }}
-
-  template<typename T>
-  void defaults(int x = []{ return T(); }()) { }; // expected-error{{cannot initialize a parameter of type 'int' with an rvalue of type 'int *'}} \
-     // expected-note{{passing argument to parameter 'x' here}}
-
-  void call_defaults() {
-    defaults<int>();
-    defaults<float>();
-    defaults<int*>(); // expected-note{{in instantiation of default function argument expression for 'defaults<int *>' required here}}
-  }
-
-  template<typename T>
-  struct X2 {
-    int x = []{ return T(); }(); // expected-error{{cannot initialize a member subobject of type 'int' with an rvalue of type 'int *'}}
-  };
-
-  X2<int> x2i;
-  X2<float> x2f;
-  X2<int*> x2ip; // expected-note{{in instantiation of template class 'NonLocalLambdaInstantation::X2<int *>' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.delete/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.delete/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.delete/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-// If the object being deleted has incomplete class type at the point of
-// deletion and the complete class has a non-trivial destructor or a
-// deallocation function, the behavior is undefined.
-
-// The trivial case.
-class T0; // expected-note {{forward declaration}}
-void f0(T0 *a) { delete a; } // expected-warning {{deleting pointer to incomplete type}}
-class T0 { ~T0(); };
-
-// The trivial case, inside a template instantiation.
-template<typename T>
-struct T1_A { T *x; ~T1_A() { delete x; } }; // expected-warning {{deleting pointer to incomplete type}}
-class T1_B; // expected-note {{forward declaration}}
-void f0() { T1_A<T1_B> x; } // expected-note {{in instantiation of member function}}
-
-// This case depends on when we check T2_C::f0.
-class T2_A;
-template<typename T>
-struct T2_B { void f0(T *a) { delete a; } };
-struct T2_C { T2_B<T2_A> x; void f0(T2_A *a) { x.f0(a); } };
-void f0(T2_A *a) { T2_C x; x.f0(a); }
-class T2_A { };
-
-// An alternate version of the same.
-class T3_A;
-template<typename T>
-struct T3_B { 
-  void f0(T *a) { 
-    delete a; // expected-error{{calling a private destructor of class 'T3_A'}}
-  } 
-};
-
-struct T3_C { 
-  T3_B<T3_A> x; 
-  void f0(T3_A *a) { 
-    x.f0(a); // expected-note{{in instantiation of member function 'T3_B<T3_A>::f0' requested here}}
-  } 
-};
-
-void f0(T3_A *a) { T3_C x; x.f0(a); }
-class T3_A { 
-private: 
-  ~T3_A(); // expected-note{{declared private here}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p17-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p17-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p17-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-// this used to crash due to templ<int>'s dtor not being marked as used by the
-// new expression in func()
-struct non_trivial {
-  non_trivial() {} 
-  ~non_trivial() {}
-};
-template < typename T > class templ {
-  non_trivial n;
-};
-void func() {
-  new templ<int>[1][1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p17.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p17.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p17.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class ctor {
-  ctor(); // expected-note{{implicitly declared private here}}
-};
-
-class dtor {
-  ~dtor(); // expected-note 3 {{implicitly declared private here}}
-};
-
-void test() {
-  new ctor[0]; // expected-error{{calling a private constructor of class 'ctor'}}
-  new dtor[0]; // expected-error{{calling a private destructor of class 'dtor'}}
-  new dtor[3]; // expected-error{{calling a private destructor of class 'dtor'}}
-  new dtor[3][3]; // expected-error{{calling a private destructor of class 'dtor'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p19.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p19.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p19.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fexceptions %s
-typedef __SIZE_TYPE__ size_t;
-
-// Operator delete template for placement new with global lookup
-template<int I>
-struct X0 {
-  X0();
-
-  static void* operator new(size_t) {
-    return I; // expected-error{{cannot initialize}}
-  }
-
-  static void operator delete(void*) {
-    int *ip = I; // expected-error{{cannot initialize}}
-  }
-};
-
-void test_X0() {
-  // Using the global operator new suppresses the search for a
-  // operator delete in the class.
-  ::new X0<2>;
-
-  new X0<3>; // expected-note 2{{instantiation}}
-}
-
-// Operator delete template for placement new[] with global lookup
-template<int I>
-struct X1 {
-  X1();
-
-  static void* operator new[](size_t) {
-    return I; // expected-error{{cannot initialize}}
-  }
-
-  static void operator delete[](void*) {
-    int *ip = I; // expected-error{{cannot initialize}}
-  }
-};
-
-void test_X1() {
-  // Using the global operator new suppresses the search for a
-  // operator delete in the class.
-  ::new X1<2> [17];
-
-  new X1<3> [17]; // expected-note 2{{instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p2-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p2-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p2-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-template<typename T>
-struct only {
-  only(T);
-  template<typename U> only(U) = delete;
-};
-
-void f() {
-  only<const int*> p = new const auto (0);
-  only<double*> q = new (auto) (0.0);
-
-  new auto; // expected-error{{new expression for type 'auto' requires a constructor argument}}
-  new (const auto)(); // expected-error{{new expression for type 'auto const' requires a constructor argument}}
-  new (auto) (1,2,3); // expected-error{{new expression for type 'auto' contains multiple constructor arguments}}
-}
-
-void p2example() {
-  only<int*> r = new auto(1);
-  auto x = new auto('a');
-
-  only<char*> testX = x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p20-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p20-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p20-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -fexceptions %s
-typedef __SIZE_TYPE__ size_t;
-
-struct S {
-  // Placement allocation function:
-  static void* operator new(size_t, size_t);
-  // Usual (non-placement) deallocation function:
-  static void operator delete(void*, size_t); // expected-note{{declared here}}
-};
-
-void testS() {
-  S* p = new (0) S;	// expected-error{{'new' expression with placement arguments refers to non-placement 'operator delete'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p20.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p20.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.new/p20.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,141 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fexceptions %s
-typedef __SIZE_TYPE__ size_t;
-
-// Overloaded operator delete with two arguments
-template<int I>
-struct X0 {
-  X0();
-  static void* operator new(size_t);
-  static void operator delete(void*, size_t) {
-    int *ip = I; // expected-error{{cannot initialize}}
-  }
-};
-
-void test_X0() {
-  new X0<1>; // expected-note{{instantiation}}
-}
-
-// Overloaded operator delete with one argument
-template<int I>
-struct X1 {
-  X1();
-
-  static void* operator new(size_t);
-  static void operator delete(void*) {
-    int *ip = I; // expected-error{{cannot initialize}}
-  }
-};
-
-void test_X1() {
-  new X1<1>; // expected-note{{instantiation}}
-}
-
-// Overloaded operator delete for placement new
-template<int I>
-struct X2 {
-  X2();
-
-  static void* operator new(size_t, double, double);
-  static void* operator new(size_t, int, int);
-
-  static void operator delete(void*, const int, int) {
-    int *ip = I; // expected-error{{cannot initialize}}
-  }
-
-  static void operator delete(void*, double, double);
-};
-
-void test_X2() {
-  new (0, 0) X2<1>; // expected-note{{instantiation}}
-}
-
-// Operator delete template for placement new
-struct X3 {
-  X3();
-
-  static void* operator new(size_t, double, double);
-
-  template<typename T>
-  static void operator delete(void*, T x, T) {
-    double *dp = &x;
-    int *ip = &x; // expected-error{{cannot initialize}}
-  }
-};
-
-void test_X3() {
-  new (0, 0) X3; // expected-note{{instantiation}}
-}
-
-// Operator delete template for placement new in global scope.
-struct X4 {
-  X4();
-  static void* operator new(size_t, double, double);
-};
-
-template<typename T>
-void operator delete(void*, T x, T) {
-  double *dp = &x;
-  int *ip = &x; // expected-error{{cannot initialize}}
-}
-
-void test_X4() {
-  new (0, 0) X4; // expected-note{{instantiation}}
-}
-
-// Useless operator delete hides global operator delete template.
-struct X5 {
-  X5();
-  static void* operator new(size_t, double, double);
-  void operator delete(void*, double*, double*);
-};
-
-void test_X5() {
-  new (0, 0) X5; // okay, we found X5::operator delete but didn't pick it
-}
-
-// Operator delete template for placement new
-template<int I>
-struct X6 {
-  X6();
-
-  static void* operator new(size_t) {
-    return I; // expected-error{{cannot initialize}}
-  }
-
-  static void operator delete(void*) {
-    int *ip = I; // expected-error{{cannot initialize}}
-  }
-};
-
-void test_X6() {
-  new X6<3>; // expected-note 2{{instantiation}}
-}
-
-void *operator new(size_t, double, double, double);
-
-template<typename T>
-void operator delete(void*, T x, T, T) {
-  double *dp = &x;
-  int *ip = &x; // expected-error{{cannot initialize}}
-}
-void test_int_new() {
-  new (1.0, 1.0, 1.0) int; // expected-note{{instantiation}}
-}
-
-// We don't need an operator delete if the type has a trivial
-// constructor, since we know that constructor cannot throw.
-// FIXME: Is this within the standard? Seems fishy, but both EDG+GCC do it.
-#if 0
-template<int I>
-struct X7 {
-  static void* operator new(size_t);
-  static void operator delete(void*, size_t) {
-    int *ip = I; // okay, since it isn't instantiated.
-  }
-};
-
-void test_X7() {
-  new X7<1>;
-}
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.sizeof/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A {
-  unsigned bitX : 4;
-  unsigned bitY : 4;
-  unsigned var;
-
-  void foo();
-};
-
-void test(A *a) {
-  int x;
-  x = sizeof(a->bitX); // expected-error {{invalid application of 'sizeof' to bit-field}}
-  x = sizeof((unsigned) a->bitX);
-  x = sizeof(a->foo(), a->bitX); // expected-error {{invalid application of 'sizeof' to bit-field}}
-  x = sizeof(a->var ? a->bitX : a->bitY); // expected-error {{invalid application of 'sizeof' to bit-field}}
-  x = sizeof(a->var ? a->bitX : a->bitX); // expected-error {{invalid application of 'sizeof' to bit-field}}
-  x = sizeof(a->bitX = 3); // expected-error {{invalid application of 'sizeof' to bit-field}}
-  x = sizeof(a->bitY += 3); // expected-error {{invalid application of 'sizeof' to bit-field}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.sizeof/p5-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.sizeof/p5-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.sizeof/p5-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// Test parsing + semantic analysis
-template<typename ...Types> struct count_types {
-  static const unsigned value = sizeof...(Types);
-};
-
-template<int ...Values> struct count_ints {
-  static const unsigned value = sizeof...(Values);
-};
-
-// Test instantiation
-int check_types[count_types<short, int, long>::value == 3? 1 : -1];
-int check_ints[count_ints<1, 2, 3, 4, 5>::value == 5? 1 : -1];
-
-// Test instantiation involving function parameter packs.
-struct any {
-  template<typename T> any(T);
-};
-
-template<typename ...Inits>
-void init_me(Inits ...inits) {
-  any array[sizeof...(inits)] = { inits... };
-}
-
-template void init_me<int, float, double*>(int, float, double*);
-
-// Test parser and semantic recovery.
-template<int Value> struct count_ints_2 {
-  static const unsigned value = sizeof...(Value); // expected-error{{'Value' does not refer to the name of a parameter pack}}
-};
-
-template<typename ...Types> // expected-note{{parameter pack 'Types' declared here}}
-struct count_types_2 {
-  static const unsigned value = sizeof... Type; // expected-error{{missing parentheses around the size of parameter pack 'Type'}} \
-  // expected-error{{Type' does not refer to the name of a parameter pack; did you mean 'Types'?}}
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/cg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 -S -emit-llvm -std=c++11 -include %S/ser.h %s -o - | FileCheck %s
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 -emit-pch -o %t-ser.pch -std=c++11 -x c++ %S/ser.h
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 -S -emit-llvm -std=c++11 -include-pch %t-ser.pch %s -o - | FileCheck %s
-
-struct D {
-  ~D() throw();
-};
-struct E {
-  ~E() throw();
-};
-
-void test() {
-  bool b;
-  // CHECK: store i8 1
-  b = noexcept(0);
-  // CHECK: store i8 0
-  b = noexcept(throw 0);
-  b = f1();
-  b = f2();
-
-  // CHECK-NOT: call void @_ZN1ED1Ev
-  // CHECK: call void @_ZN1DD1Ev
-  D(), noexcept(E());
-}
-// CHECK: ret i1 true
-// CHECK: ret i1 false

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/sema.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/sema.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/sema.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,190 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify -std=c++11 -fms-extensions %s
-// expected-no-diagnostics
-
-#define P(e) static_assert(noexcept(e), "expected nothrow")
-#define N(e) static_assert(!noexcept(e), "expected throw")
-#define B(b, e) static_assert(b == noexcept(e), "expectation failed")
-
-void simple() {
-  P(0);
-  P(0 + 0);
-  int i;
-  P(i);
-  P(sizeof(0));
-  P(static_cast<int>(0));
-  N(throw 0);
-  N((throw 0, 0));
-}
-
-void nospec();
-void allspec() throw(...);
-void intspec() throw(int);
-void emptyspec() throw();
-void nothrowattr() __attribute__((nothrow));
-void noexcept_true() noexcept;
-void noexcept_false() noexcept(false);
-
-void call() {
-  N(nospec());
-  N(allspec());
-  N(intspec());
-  P(emptyspec());
-  P(nothrowattr());
-  P(noexcept_true());
-  N(noexcept_false());
-}
-
-void (*pnospec)();
-void (*pallspec)() throw(...);
-void (*pintspec)() throw(int);
-void (*pemptyspec)() throw();
-
-void callptr() {
-  N(pnospec());
-  N((*pnospec)());
-  N(pallspec());
-  N((*pallspec)());
-  N(pintspec());
-  N((*pintspec)());
-  P(pemptyspec());
-  P((*pemptyspec)());
-}
-
-struct S1 {
-  void nospec();
-  void allspec() throw(...);
-  void intspec() throw(int);
-  void emptyspec() throw();
-};
-
-void callmem() {
-  S1 s;
-  N(s.nospec());
-  N(s.allspec());
-  N(s.intspec());
-  P(s.emptyspec());
-}
-
-void (S1::*mpnospec)();
-void (S1::*mpallspec)() throw(...);
-void (S1::*mpintspec)() throw(int);
-void (S1::*mpemptyspec)() throw();
-
-void callmemptr() {
-  S1 s;
-  N((s.*mpnospec)());
-  N((s.*mpallspec)());
-  N((s.*mpintspec)());
-  P((s.*mpemptyspec)());
-}
-
-struct S2 {
-  S2();
-  S2(int, int) throw();
-  void operator +();
-  void operator -() throw();
-  void operator +(int);
-  void operator -(int) throw();
-  operator int();
-  operator float() throw();
-};
-
-void *operator new(__typeof__(sizeof(int)) sz, int) throw();
-
-struct Bad1 {
-  ~Bad1() throw(int);
-};
-struct Bad2 {
-  void operator delete(void*) throw(int);
-};
-
-typedef int X;
-
-void implicits() {
-  N(new int);
-  P(new (0) int);
-  P(delete (int*)0);
-  N(delete (Bad1*)0);
-  N(delete (Bad2*)0);
-  N(S2());
-  P(S2(0, 0));
-  S2 s;
-  N(+s);
-  P(-s);
-  N(s + 0);
-  P(s - 0);
-  N(static_cast<int>(s));
-  P(static_cast<float>(s));
-  N(Bad1());
-  P(X().~X());
-}
-
-struct V {
-  virtual ~V() throw();
-};
-struct D : V {};
-
-void dyncast() {
-  V *pv = 0;
-  D *pd = 0;
-  P(dynamic_cast<V&>(*pd));
-  P(dynamic_cast<V*>(pd));
-  N(dynamic_cast<D&>(*pv));
-  P(dynamic_cast<D*>(pv));
-}
-
-namespace std {
-  struct type_info {};
-}
-
-void idtype() {
-  P(typeid(V));
-  P(typeid((V*)0));
-  P(typeid(*(S1*)0));
-  N(typeid(*(V*)0));
-}
-
-void uneval() {
-  P(sizeof(typeid(*(V*)0)));
-  P(typeid(typeid(*(V*)0)));
-}
-
-struct G1 {};
-struct G2 { int i; };
-struct G3 { S2 s; };
-
-void gencon() {
-  P(G1());
-  P(G2());
-  N(G3());
-}
-
-template <class T> void f(T&&) noexcept;
-template <typename T, bool b>
-void late() {
-  B(b, typeid(*(T*)0));
-  B(b, T(1));
-  B(b, static_cast<T>(S2(0, 0)));
-  B(b, S1() + T());
-  P(f(T()));
-  P(new (0) T);
-  P(delete (T*)0);
-}
-struct S3 {
-  virtual ~S3() throw();
-  S3() throw();
-  explicit S3(int);
-  S3(const S2&);
-};
-template <class T> T&& f2() noexcept;
-template <typename T>
-void late2() {
-  P(dynamic_cast<S3&>(f2<T&>()));
-}
-void operator +(const S1&, float) throw();
-void operator +(const S1&, const S3&);
-void tlate() {
-  late<float, true>();
-  late<S3, false>();
-  late2<S3>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/ser.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/ser.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.noexcept/ser.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// Serialization testing helper for noexcept, included by cg.cpp.
-
-inline bool f1() {
-  return noexcept(0);
-}
-inline bool f2() {
-  return noexcept(throw 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify 
-// expected-no-diagnostics
-
-namespace rdar10544564 {
-  // Check that we don't attempt to use an overloaded operator& when
-  // naming a pointer-to-member.
-  struct X {
-    void** operator & ();
-  };
-
-  struct Y
-  {
-  public:
-    X member;
-    X memfunc1();
-    X memfunc2();
-    X memfunc2(int);
-
-    void test() {
-      X Y::*data_mem_ptr = &Y::member;
-      X (Y::*func_mem_ptr1)() = &Y::memfunc1;
-      X (Y::*func_mem_ptr2)() = &Y::memfunc2;
-    }
-  };
-  
-  X Y::*data_mem_ptr = &Y::member;
-  X (Y::*func_mem_ptr1)() = &Y::memfunc1;
-  X (Y::*func_mem_ptr2)() = &Y::memfunc2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// rdar://problem/8347416
-namespace test0 {
-  struct A {
-    void foo(void (A::*)(int)); // expected-note {{passing argument to parameter here}}
-    template<typename T> void g(T);
-
-    void test() {
-      foo(&g<int>); // expected-error {{can't form member pointer of type 'void (test0::A::*)(int)' without '&' and class name}}
-    }
-  };
-}
-
-// This should succeed.
-namespace test1 {
-  struct A {
-    static void f(void (A::*)());
-    static void f(void (*)(int));
-    void g();
-    static void g(int);
-
-    void test() {
-      f(&g);
-    }
-  };
-}
-
-// Also rdar://problem/8347416
-namespace test2 {
-  struct A {
-    static int foo(short);
-    static int foo(float);
-    int foo(int);
-    int foo(double);
-
-    void test();
-  };
-
-  void A::test() {
-    int (A::*ptr)(int) = &(A::foo); // expected-error {{can't form member pointer of type 'int (test2::A::*)(int)' without '&' and class name}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/expr.unary/expr.unary.op/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// -- prvalue of arithmetic
-
-bool b = !0;
-
-bool b2 = !1.2; //expected-warning{{implicit conversion from 'double' to 'bool' changes value from 1.2 to true}}
-
-bool b3 = !4;
-
-// -- unscoped enumeration
-enum { E, F };
-
-bool b4 = !E;
-bool b5 = !F;
-
-// --  pointer, 
-bool b6 = !&b4;
-void f();
-bool b61 = !&f;
-
-// -- or pointer to member type can be converted to a prvalue of type bool.
-struct S { void f() { } };
-
-bool b7 = !&S::f;
-
-
-bool b8 = !S(); //expected-error {{invalid argument type 'S'}}
-
-namespace PR8181
-{
-  bool f() { } // expected-note{{possible target for call}}
-  void f(char) { } // expected-note{{possible target for call}}
-  bool b = !&f;  //expected-error {{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/p10-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/p10-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/p10-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-pc-linux-gnu %s -o - -std=c++11 | FileCheck %s
-
-volatile int g1;
-struct S {
-  volatile int a;
-} g2;
-
-volatile int& refcall();
-
-// CHECK: define void @_Z2f1PViPV1S
-void f1(volatile int *x, volatile S* s) {
-  // We should perform the load in these cases.
-  // CHECK: load volatile i32*
-  (*x);
-  // CHECK: load volatile i32*
-  __extension__ g1;
-  // CHECK: load volatile i32*
-  s->a;
-  // CHECK: load volatile i32*
-  g2.a;
-  // CHECK: load volatile i32*
-  s->*(&S::a);
-  // CHECK: load volatile i32*
-  // CHECK: load volatile i32*
-  x[0], 1 ? x[0] : *x;
-
-  // CHECK: load volatile i32*
-  // CHECK: load volatile i32*
-  // CHECK: load volatile i32*
-  *x ?: *x;
-
-  // CHECK: load volatile i32*
-  ({ *x; });
-
-  // CHECK-NOT: load volatile
-  // CHECK: ret
-}
-
-// CHECK: define void @_Z2f2PVi
-// CHECK-NOT: load volatile
-// CHECK: ret
-void f2(volatile int *x) {
-  // We shouldn't perform the load in these cases.
-  refcall();
-  1 ? refcall() : *x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-double operator +(double, double); // expected-error{{overloaded 'operator+' must have at least one parameter of class or enumeration type}}
-
-struct A
-{
-  operator int();
-};
-
-int main()
-{
-  A a, b;
-  int i0 = a + 1;
-  int i1 = a + b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-int a0;
-const volatile int a1 = 2;
-int a2[16];
-int a3();
-
-void f0(int);
-void f1(int *);
-void f2(int (*)());
-
-int main()
-{
-  f0(a0);
-  f0(a1);
-  f1(a2);
-  f2(a3);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/expr/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/expr/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/expr/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// floating-point overloads
-
-__typeof__(0 + 0.0L) ld0;
-long double &ldr = ld0;
-
-__typeof__(0 + 0.0) d0;
-double &dr = d0;
-
-__typeof__(0 + 0.0f) f0;
-float &fr = f0;
-
-// integral promotions
-
-signed char c0;
-__typeof__(c0 + c0) c1;
-int &cr = c1;
-
-unsigned char uc0;
-__typeof__(uc0 + uc0) uc1;
-int &ucr = uc1;
-
-short s0;
-__typeof__(s0 + s0) s1;
-int &sr = s1;
-
-unsigned short us0;
-__typeof__(us0 + us0) us1;
-int &usr = us1;
-
-// integral overloads
-
-__typeof__(0 + 0UL) ul0;
-unsigned long &ulr = ul0;
-
-template<bool T> struct selector;
-template<> struct selector<true> { typedef long type; };
-template<> struct selector<false> {typedef unsigned long type; };
-__typeof__(0U + 0L) ui_l0;
-selector<(sizeof(long) > sizeof(unsigned int))>::type &ui_lr = ui_l0;
-
-__typeof__(0 + 0L) l0;
-long &lr = l0;
-
-__typeof__(0 + 0U) u0;
-unsigned &ur = u0;
-
-__typeof__(0 + 0) i0;
-int &ir = i0;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.charset/p2-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.charset/p2-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.charset/p2-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-char c00 = '\u0000'; // ok
-char c01 = '\u0001'; // ok
-char c1f = '\u001f'; // ok
-char c20 = '\u0020'; // ' ', ok
-char c22 = '\u0022'; // ", ok
-char c23 = '\u0023'; // #, ok
-char c24 = '\u0024'; // $, ok
-char c25 = '\u0025'; // %, ok
-char c27 = '\u0027'; // ', ok
-char c3f = '\u003f'; // ?, ok
-char c40 = '\u0040'; // @, ok
-char c41 = '\u0041'; // A, ok
-char c5f = '\u005f'; // _, ok
-char c60 = '\u0060'; // `, ok
-char c7e = '\u007e'; // ~, ok
-char c7f = '\u007f'; // ok
-
-wchar_t w007f = L'\u007f';
-wchar_t w0080 = L'\u0080';
-wchar_t w009f = L'\u009f';
-wchar_t w00a0 = L'\u00a0';
-
-wchar_t wd799 = L'\ud799';
-wchar_t wd800 = L'\ud800'; // expected-error {{invalid universal character}}
-wchar_t wdfff = L'\udfff'; // expected-error {{invalid universal character}}
-wchar_t we000 = L'\ue000';
-
-char32_t w10fffe = U'\U0010fffe';
-char32_t w10ffff = U'\U0010ffff';
-char32_t w110000 = U'\U00110000'; // expected-error {{invalid universal character}}
-
-const char *p1 = "\u0000\u0001\u001f\u0020\u0022\u0023\u0024\u0025\u0027\u003f\u0040\u0041\u005f\u0060\u007e\u007f";
-const wchar_t *p2 = L"\u0000\u0012\u004e\u007f\u0080\u009f\u00a0\ud799\ue000";
-const char *p3 = u8"\u0000\u0012\u004e\u007f\u0080\u009f\u00a0\ud799\ue000";
-const char16_t *p4 = u"\u0000\u0012\u004e\u007f\u0080\u009f\u00a0\ud799\ue000";
-const char32_t *p5 = U"\u0000\u0012\u004e\u007f\u0080\u009f\u00a0\ud799\ue000";
-const wchar_t *p6 = L"foo \U00110000 bar"; // expected-error {{invalid universal character}}
-const char *p7 = u8"foo \U0000d800 bar"; // expected-error {{invalid universal character}}
-const char16_t *p8 = u"foo \U0000dfff bar"; // expected-error {{invalid universal character}}
-const char32_t *p9 = U"foo \U0010ffff bar"; // ok

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.charset/p2-cxx98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.charset/p2-cxx98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.charset/p2-cxx98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++98 %s
-
-char c00 = '\u0000'; // expected-error {{universal character name refers to a control character}}
-char c01 = '\u0001'; // expected-error {{universal character name refers to a control character}}
-char c1f = '\u001f'; // expected-error {{universal character name refers to a control character}}
-char c20 = '\u0020'; // ' ', expected-error {{character ' ' cannot be specified by a universal character name}}
-char c22 = '\u0022'; // ", expected-error {{character '"' cannot be specified by a universal character name}}
-char c23 = '\u0023'; // #, expected-error {{character '#' cannot be specified by a universal character name}}
-char c24 = '\u0024'; // $, ok
-char c25 = '\u0025'; // %, expected-error {{character '%' cannot be specified by a universal character name}}
-char c27 = '\u0027'; // ', expected-error {{character ''' cannot be specified by a universal character name}}
-char c3f = '\u003f'; // ?, expected-error {{character '?' cannot be specified by a universal character name}}
-char c40 = '\u0040'; // @, ok
-char c41 = '\u0041'; // A, expected-error {{character 'A' cannot be specified by a universal character name}}
-char c5f = '\u005f'; // _, expected-error {{character '_' cannot be specified by a universal character name}}
-char c60 = '\u0060'; // `, ok
-char c7e = '\u007e'; // ~, expected-error {{character '~' cannot be specified by a universal character name}}
-char c7f = '\u007f'; // expected-error {{universal character name refers to a control character}}
-
-wchar_t w007f = L'\u007f'; // expected-error {{universal character name refers to a control character}}
-wchar_t w0080 = L'\u0080'; // expected-error {{universal character name refers to a control character}}
-wchar_t w009f = L'\u009f'; // expected-error {{universal character name refers to a control character}}
-wchar_t w00a0 = L'\u00a0';
-
-wchar_t wd799 = L'\ud799';
-wchar_t wd800 = L'\ud800'; // expected-error {{invalid universal character}}
-wchar_t wdfff = L'\udfff'; // expected-error {{invalid universal character}}
-wchar_t we000 = L'\ue000';
-
-const char *s00 = "\u0000"; // expected-error {{universal character name refers to a control character}}
-const char *s01 = "\u0001"; // expected-error {{universal character name refers to a control character}}
-const char *s1f = "\u001f"; // expected-error {{universal character name refers to a control character}}
-const char *s20 = "\u0020"; // ' ', expected-error {{character ' ' cannot be specified by a universal character name}}
-const char *s22 = "\u0022"; // ", expected-error {{character '"' cannot be specified by a universal character name}}
-const char *s23 = "\u0023"; // #, expected-error {{character '#' cannot be specified by a universal character name}}
-const char *s24 = "\u0024"; // $, ok
-const char *s25 = "\u0025"; // %, expected-error {{character '%' cannot be specified by a universal character name}}
-const char *s27 = "\u0027"; // ', expected-error {{character ''' cannot be specified by a universal character name}}
-const char *s3f = "\u003f"; // ?, expected-error {{character '?' cannot be specified by a universal character name}}
-const char *s40 = "\u0040"; // @, ok
-const char *s41 = "\u0041"; // A, expected-error {{character 'A' cannot be specified by a universal character name}}
-const char *s5f = "\u005f"; // _, expected-error {{character '_' cannot be specified by a universal character name}}
-const char *s60 = "\u0060"; // `, ok
-const char *s7e = "\u007e"; // ~, expected-error {{character '~' cannot be specified by a universal character name}}
-const char *s7f = "\u007f"; // expected-error {{universal character name refers to a control character}}
-
-const wchar_t *ws007f = L"\u007f"; // expected-error {{universal character name refers to a control character}}
-const wchar_t *ws0080 = L"\u0080"; // expected-error {{universal character name refers to a control character}}
-const wchar_t *ws009f = L"\u009f"; // expected-error {{universal character name refers to a control character}}
-const wchar_t *ws00a0 = L"\u00a0";
-
-const wchar_t *wsd799 = L"\ud799";
-const wchar_t *wsd800 = L"\ud800"; // expected-error {{invalid universal character}}
-const wchar_t *wsdfff = L"\udfff"; // expected-error {{invalid universal character}}
-const wchar_t *wse000 = L"\ue000";

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ccon/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ccon/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ccon/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Check types of char literals
-extern char a;
-extern __typeof('a') a;
-extern int b;
-extern __typeof('asdf') b;
-extern wchar_t c;
-extern __typeof(L'a') c;
-#if __cplusplus >= 201103L
-extern char16_t d;
-extern __typeof(u'a') d;
-extern char32_t e;
-extern __typeof(U'a') e;
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-void operator "" p31(long double); // expected-warning{{user-defined literal suffixes not starting with '_' are reserved}}
-void operator "" _p31(long double);
-long double operator "" pi(long double); // expected-warning{{user-defined literal suffixes not starting with '_' are reserved}}
-
-float hexfloat = 0x1p31; // allow hexfloats

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-using size_t = decltype(sizeof(int));
-void operator "" wibble(const char *); // expected-warning {{user-defined literal suffixes not starting with '_' are reserved; no literal will invoke this operator}}
-void operator "" wibble(const char *, size_t); // expected-warning {{user-defined literal suffixes not starting with '_' are reserved; no literal will invoke this operator}}
-
-template<typename T>
-void f() {
-  // A program containing a reserved ud-suffix is ill-formed.
-  123wibble; // expected-error {{invalid suffix 'wibble'}}
-  123.0wibble; // expected-error {{invalid suffix 'wibble'}}
-  const char *p = ""wibble; // expected-error {{invalid suffix on literal; C++11 requires a space between literal and identifier}} expected-error {{expected ';'}}
-  const char *q = R"x("hello")x"wibble; // expected-error {{invalid suffix on literal; C++11 requires a space between literal and identifier}} expected-error {{expected ';'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-typedef decltype(sizeof(int)) size_t;
-
-// FIXME: These diagnostics should say 'size_t' instead of 'unsigned long'
-int a = 123_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with argument of type 'unsigned long long' or 'const char *', and no matching literal operator template}}
-int b = 4.2_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with argument of type 'long double' or 'const char *', and no matching literal operator template}}
-int c = "foo"_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with arguments of types 'const char *' and 'unsigned}}
-int d = L"foo"_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with arguments of types 'const wchar_t *' and 'unsigned}}
-int e = u8"foo"_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with arguments of types 'const char *' and 'unsigned}}
-int f = u"foo"_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with arguments of types 'const char16_t *' and 'unsigned}}
-int g = U"foo"_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with arguments of types 'const char32_t *' and 'unsigned}}
-int h = 'y'_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with argument of type 'char'}}
-int i = L'y'_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with argument of type 'wchar_t'}}
-int j = u'y'_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with argument of type 'char16_t'}}
-int k = U'y'_x; // expected-error {{no matching literal operator for call to 'operator "" _x' with argument of type 'char32_t'}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-int &operator "" _x1 (unsigned long long);
-int &i1 = 0x123_x1;
-
-double &operator "" _x1 (const char *);
-int &i2 = 45_x1;
-
-template<char...> char &operator "" _x1 ();
-int &i3 = 0377_x1;
-
-int &i4 = 90000000000000000000000000000000000000000000000_x1; // expected-warning {{integer constant is too large}}
-
-double &operator "" _x2 (const char *);
-double &i5 = 123123123123123123123123123123123123123123123_x2;
-
-template<char...Cs> constexpr int operator "" _x3() { return sizeof...(Cs); }
-static_assert(123456789012345678901234567890123456789012345678901234567890_x3 == 60, "");

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-int &operator "" _x1 (long double);
-int &i1 = 0.123_x1;
-
-double &operator "" _x1 (const char *);
-int &i2 = 45._x1;
-
-template<char...> char &operator "" _x1 ();
-int &i3 = 0377e-1_x1;
-
-int &i4 = 1e1000000_x1; // expected-warning {{too large for type 'long double'}}
-
-double &operator "" _x2 (const char *);
-double &i5 = 1e1000000_x2;
-
-template<char...Cs> constexpr int operator "" _x3() { return sizeof...(Cs); }
-static_assert(1e1000000_x3 == 9, "");

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-using size_t = decltype(sizeof(int));
-
-int &operator "" _x1 (const char *);
-double &operator "" _x1 (const char *, size_t);
-double &i1 = "foo"_x1;
-double &i2 = u8"foo"_x1;
-double &i3 = L"foo"_x1; // expected-error {{no matching literal operator}}
-
-char &operator "" _x1(const wchar_t *, size_t);
-char &i4 = L"foo"_x1; // ok
-double &i5 = R"(foo)"_x1; // ok
-double &i6 = u\
-8\
-R\
-"(foo)"\
-_\
-x\
-1; // ok

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-using size_t = decltype(sizeof(int));
-
-int &operator "" _x1 (const char *);
-double &i1 = 'a'_x1; // expected-error {{no matching literal operator}}
-double &operator "" _x1 (wchar_t);
-double &i2 = L'a'_x1;
-double &i3 = 'a'_x1; // expected-error {{no matching literal operator}}
-double &i4 = operator"" _x1('a'); // ok
-
-char &operator "" _x1(char16_t);
-char &i5 = u'a'_x1; // ok
-double &i6 = L'a'_x1; // ok

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-using size_t = decltype(sizeof(int));
-namespace std {
-  struct string {};
-}
-
-template<typename T, typename U> struct same_type;
-template<typename T> struct same_type<T, T> {};
-
-namespace std_example {
-
-long double operator "" _w(long double);
-std::string operator "" _w(const char16_t*, size_t);
-unsigned operator "" _w(const char*);
-int main() {
-  auto v1 = 1.2_w;    // calls operator "" _w(1.2L)
-  auto v2 = u"one"_w; // calls operator "" _w(u"one", 3)
-  auto v3 = 12_w;     // calls operator "" _w("12")
-  "two"_w;            // expected-error {{no matching literal operator}}
-
-  same_type<decltype(v1), long double> test1;
-  same_type<decltype(v2), std::string> test2;
-  same_type<decltype(v3), unsigned> test3;
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-using size_t = decltype(sizeof(int));
-constexpr const char *operator "" _id(const char *p, size_t) { return p; }
-constexpr const char *s = "foo"_id "bar" "baz"_id "quux";
-
-constexpr bool streq(const char *p, const char *q) {
-  return *p == *q && (!*p || streq(p+1, q+1));
-}
-static_assert(streq(s, "foobarbazquux"), "");
-
-constexpr const char *operator "" _trim(const char *p, size_t n) {
-  return *p == ' ' ? operator "" _trim(p + 1, n - 1) : p;
-}
-constexpr const char *t = "   " " "_trim "  foo";
-static_assert(streq(t, "foo"), "");
-
-const char *u = "foo" "bar"_id "baz" "quux"_di "corge"; // expected-error {{differing user-defined suffixes ('_id' and '_di') in string literal concatenation}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.literal/lex.ext/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-using size_t = decltype(sizeof(int));
-void operator "" _x(const wchar_t *, size_t);
-
-namespace std_example {
-
-int main() {
-  L"A" "B" "C"_x;
-  "P"_x "Q" "R"_y; // expected-error {{differing user-defined suffixes ('_x' and '_y') in string literal concatenation}}
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.pptoken/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.pptoken/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.pptoken/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-int a<::> = { 1, 2, 3 };
-int b = a<:::a<:0:>:>;
-bool c = a<:0:><::b;
-
-template<int &n> void f() {}
-template void f<::b>();
-
-#define x a<:: ## : b :>
-int d = x; // expected-error {{pasting formed ':::', an invalid preprocessing token}} expected-error {{expected unqualified-id}}
-
-const char xs[] = R"(\
-??=\U0000)";
-static_assert(sizeof(xs) == 12, "did not revert all changes");

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -trigraphs -Wtrigraphs -verify %s
-
-??=pragma // expected-warning {{trigraph converted to '#' character}}
-
-int a = '??/0'; // expected-warning {{trigraph converted to '\' character}}
-
-int b = 1 ??' 0; // expected-warning {{trigraph converted to '^' character}}
-
-int c ??(1]; // expected-warning {{trigraph converted to '[' character}}
-
-int d [1??); // expected-warning {{trigraph converted to ']' character}}
-
-int e = 1 ??! 0; // expected-warning {{trigraph converted to '|' character}}
-
-void f() ??<} // expected-warning {{trigraph converted to '{' character}}
-
-void g() {??> // expected-warning {{trigraph converted to '}' character}}
-
-int h = ??- 0; // expected-warning {{trigraph converted to '~' character}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -trigraphs -Wtrigraphs -verify %s
-
-??=define arraycheck(a,b) a??(b??) ??!??! b??(a??) // expected-warning {{trigraph converted to '#' character}} expected-warning {{trigraph converted to '[' character}} expected-warning {{trigraph converted to ']' character}} expected-warning {{trigraph converted to '|' character}} expected-warning {{trigraph converted to '|' character}} expected-warning {{trigraph converted to '[' character}} expected-warning {{trigraph converted to ']' character}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/lex/lex.trigraph/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -trigraphs -Wtrigraphs -verify %s
-// expected-no-diagnostics
-
-char a[] =
-"?? ??\"??#??$??%??&??*??+??,??.??0??1??2??3??4??5??6"
-"??7??8??9??:??;?????@??A??B??C??D??E??F??G??H??I??J"
-"??K??L??M??N??O??P??Q??R??S??T??U??V??W??X??Y??Z??["
-"??\\??]??^??_??`??a??b??c??d??e??f??g??h??i??j??k??l"
-"??m??n??o??p??q??r??s??t??u??v??w??x??y??z??{??|??}??~";

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.built/p23.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.built/p23.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.built/p23.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-// expected-no-diagnostics
-
-struct Variant {
-  template <typename T> operator T();
-};
-
-Variant getValue();
-
-void testVariant() {
-  bool ret1 = getValue() || getValue(); 
-  bool ret2 = getValue() && getValue(); 
-  bool ret3 = !getValue();
-}
-
-struct ExplicitVariant {
-  template <typename T> explicit operator T();
-};
-
-ExplicitVariant getExplicitValue();
-
-void testExplicitVariant() {
-  bool ret1 = getExplicitValue() || getExplicitValue(); 
-  bool ret2 = getExplicitValue() && getExplicitValue(); 
-  bool ret3 = !getExplicitValue();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.built/p25.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.built/p25.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.built/p25.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-enum class Color { Red, Green, Blue };
-
-struct ConvertsToColorA {
-  operator Color();
-};
-
-struct ConvertsToColorB {
-  operator Color();
-};
-
-Color foo(bool cond, ConvertsToColorA ca, ConvertsToColorB cb) {
-  return cond? ca : cb;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.load/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.load/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.load/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// Member function declarations with the same name and the same
-// parameter-type-list as well as mem- ber function template
-// declarations with the same name, the same parameter-type-list, and
-// the same template parameter lists cannot be overloaded if any of
-// them, but not all, have a ref-qualifier (8.3.5).
-
-class Y { 
-  void h() &; 
-  void h() const &; 
-  void h() &&; 
-  void i() &; // expected-note{{previous declaration}}
-  void i() const; // expected-error{{cannot overload a member function without a ref-qualifier with a member function with ref-qualifier '&'}}
-
-  template<typename T> void f(T*) &;
-  template<typename T> void f(T*) &&;
-
-  template<typename T> void g(T*) &; // expected-note{{previous declaration}}
-  template<typename T> void g(T*); // expected-error{{cannot overload a member function without a ref-qualifier with a member function with ref-qualifier '&'}}
-
-  void k(); // expected-note{{previous declaration}}
-  void k() &&; // expected-error{{cannot overload a member function with ref-qualifier '&&' with a member function without a ref-qualifier}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.best.ics/over.ics.list/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.best.ics/over.ics.list/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.best.ics/over.ics.list/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// rdar://problem/11120365
-namespace test0 {
-  template <class T> struct A {
-    static void foo(const T &t) {}
-    static void foo(T &&t) {
-      t.foo(); // expected-error {{member reference base type 'int' is not a structure or union}}
-    }
-  }; 
-
-  void test() {
-    A<int>::foo({}); // expected-note {{requested here}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.best.ics/over.ics.user/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.best.ics/over.ics.user/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.best.ics/over.ics.user/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-namespace PR6285 {
-  template<typename T> struct identity 
-  { typedef T type; };
-
-  struct D { 
-    template<typename T = short> 
-    operator typename identity<T>::type(); // expected-note{{candidate}}
-  }; 
-
-  int f() { return D(); } // expected-error{{no viable conversion}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.ics.rank/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.ics.rank/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/over.ics.rank/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-namespace std_example {
-  int i; 
-  int f1(); 
-  int&& f2(); 
-  int &g(const int &);
-  float &g(const int &&);
-  int &j = g(i); 
-  float &k = g(f1());
-  float &l = g(f2());
-
-  int &g2(const int &);
-  float &g2(int &&);
-  int &j2 = g2(i); 
-  float &k2 = g2(f1());
-  float &l2 = g2(f2());
-
-  // FIXME: We don't support ref-qualifiers yet.
-#if 0
-  struct A { 
-    A& operator<<(int); 
-    void p() &; 
-    void p() &&;
-  };
-
-  A& operator<<(A&&, char); 
-  A() << 1; 
-  A() << 'c'; 
-  A a; 
-  a << 1; 
-  a << 'c'; 
-  A().p(); 
-  a.p();
-#endif
-}
-
-template<typename T>
-struct remove_reference {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_reference<T&> {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_reference<T&&> {
-  typedef T type;
-};
-
-namespace FunctionReferencesOverloading {
-  template<typename T> int &f(typename remove_reference<T>::type&);
-  template<typename T> float &f(typename remove_reference<T>::type&&);
-
-  void test_f(int (&func_ref)(int)) {
-    int &ir = f<int (&)(int)>(func_ref);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.best/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T> int &f0(T*, int);
-float &f0(void*, int);
-
-void test_f0(int* ip, void *vp) {
-  // One argument is better...
-  int &ir = f0(ip, 0);
-  
-  // Prefer non-templates to templates
-  float &fr = f0(vp, 0);
-}
-
-// Partial ordering of function template specializations will be tested 
-// elsewhere
-// FIXME: Initialization by user-defined conversion is tested elsewhere

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/over.match.copy/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/over.match.copy/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/over.match.copy/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s -verify
-
-namespace ExplicitConv {
-  struct X { }; // expected-note 2{{candidate constructor}}
-
-  struct Y {
-    explicit operator X() const;
-  };
-
-  void test(const Y& y) {
-    X x(static_cast<X>(y));
-    X x2((X)y);
-    X x3 = y; // expected-error{{no viable conversion from 'const ExplicitConv::Y' to 'ExplicitConv::X'}}
-  }
-}
-
-namespace DR899 {
-  struct C { }; // expected-note 2 {{candidate constructor}}
-
-  struct A {
-    explicit operator int() const;
-    explicit operator C() const;
-  };
-
-  struct B {
-    int i;
-    B(const A& a): i(a) { }
-  };
-
-  int main() {
-    A a;
-    int i = a; // expected-error{{no viable conversion}}
-    int j(a);
-    C c = a; // expected-error{{no viable conversion}}
-    C c2(a);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/over.match.oper/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-// This is specifically testing the bullet:
-// "do not have the same parameter-type-list as any non-template
-// non-member candidate."
-// The rest is sort of hard to test separately.
-
-enum E1 { one };
-enum E2 { two };
-
-struct A;
-
-A operator >= (E1, E1);
-A operator >= (E1, const E2);
-
-E1 a;
-E2 b;
-
-extern A test1;
-extern decltype(a >= a) test1;
-extern decltype(a >= b) test1;
-
-template <typename T> A operator <= (E1, T);
-extern bool test2;
-extern decltype(a <= a) test2;
-
-extern A test3;
-extern decltype(a <= b) test3;
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/p4-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/p4-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.match/over.match.funcs/p4-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T> T &lvalue();
-template<typename T> T &&xvalue();
-template<typename T> T prvalue();
-
-struct X0 {
-  int &f() &;
-  float &f() &&;
-
-  template<typename T> int &ft(T) &;
-  template<typename T> float &ft(T) &&;
-
-  typedef int &(*func_int_ref)();
-  typedef float &(*func_float_ref)();
-
-  operator func_int_ref() &;
-  operator func_float_ref() &&;
-
-  void g();
-
-  int &operator+(const X0&) &;
-  float &operator+(const X0&) &&;
-
-  template<typename T> int &operator+(const T&) &;
-  template<typename T> float &operator+(const T&) &&;
-
-  int &h() const&;
-  float &h() &&;
-  int &h2() const&;
-  float &h2() const&&;
-};
-
-void X0::g() {
-  int &ir1 = f();
-  int &ir2 = X0::f();
-}
-
-void test_ref_qualifier_binding() {
-  int &ir1 = lvalue<X0>().f();
-  float &fr1 = xvalue<X0>().f();
-  float &fr2 = prvalue<X0>().f();
-  int &ir2 = lvalue<X0>().ft(1);
-  float &fr3 = xvalue<X0>().ft(2);
-  float &fr4 = prvalue<X0>().ft(3);
-}
-
-void test_ref_qualifier_binding_with_surrogates() {
-  int &ir1 = lvalue<X0>()();
-  float &fr1 = xvalue<X0>()();
-  float &fr2 = prvalue<X0>()();
-}
-
-void test_ref_qualifier_binding_operators() {
-  int &ir1 = lvalue<X0>() + prvalue<X0>();
-  float &fr1 = xvalue<X0>() + prvalue<X0>();
-  float &fr2 = prvalue<X0>() + prvalue<X0>();
-  int &ir2 = lvalue<X0>() + 1;
-  float &fr3 = xvalue<X0>() + 2;
-  float &fr4 = prvalue<X0>() + 3;
-}
-
-void test_ref_qualifier_overloading() {
-  int &ir1 = lvalue<X0>().h();
-  float &fr1 = xvalue<X0>().h();
-  float &fr2 = prvalue<X0>().h();
-  int &ir2 = lvalue<X0>().h2();
-  float &fr3 = xvalue<X0>().h2();
-  float &fr4 = prvalue<X0>().h2();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-void operator "" _a(const char *);
-
-namespace N {
-  using ::operator "" _a;
-
-  void operator "" _b(const char *);
-}
-
-using N::operator "" _b;
-
-class C {
-  void operator "" _c(const char *); // expected-error {{must be in a namespace or global scope}}
-
-  static void operator "" _c(unsigned long long); // expected-error {{must be in a namespace or global scope}}
-
-  friend void operator "" _d(const char *);
-};
-
-int operator "" _e; // expected-error {{cannot be the name of a variable}}
-
-void f() {
-  int operator "" _f; // expected-error {{cannot be the name of a variable}}
-}
-
-extern "C++" {
-  void operator "" _g(const char *);
-}
-
-template<char...> void operator "" _h() {}
-
-template<> void operator "" _h<'a', 'b', 'c'>() {}
-
-template void operator "" _h<'a', 'b', 'c', 'd'>();
-
-namespace rdar13605348 {
-
-class C {
-  double operator"" _x(long double value) { return double(value); } // expected-error{{literal operator 'operator "" _x' must be in a namespace or global scope}}
-  double value() { return 3.2_x; } // expected-error{{no matching literal operator for call to}}
-};
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-using size_t = decltype(sizeof(int));
-
-// Acceptable parameter declarations
-char operator "" _a(const char *);
-char operator "" _a(const char []);
-char operator "" _a(unsigned long long);
-char operator "" _a(long double);
-char operator "" _a(char);
-char operator "" _a(const volatile char);
-char operator "" _a(wchar_t);
-char operator "" _a(char16_t);
-char operator "" _a(char32_t);
-char operator "" _a(const char *, size_t);
-char operator "" _a(const wchar_t *, size_t);
-char operator "" _a(const char16_t *, size_t);
-char operator "" _a(const char32_t *, size_t);
-char operator "" _a(const char [32], size_t);
-
-// Unacceptable parameter declarations
-char operator "" _b(); // expected-error {{parameter}}
-char operator "" _b(const wchar_t *); // expected-error {{parameter}}
-char operator "" _b(long long); // expected-error {{parameter}}
-char operator "" _b(double); // expected-error {{parameter}}
-char operator "" _b(short); // expected-error {{parameter}}
-char operator "" _a(char, int = 0); // expected-error {{parameter}}
-char operator "" _b(unsigned short); // expected-error {{parameter}}
-char operator "" _b(signed char); // expected-error {{parameter}}
-char operator "" _b(unsigned char); // expected-error {{parameter}}
-char operator "" _b(const short *, size_t); // expected-error {{parameter}}
-char operator "" _b(const unsigned short *, size_t); // expected-error {{parameter}}
-char operator "" _b(const signed char *, size_t); // expected-error {{parameter}}
-char operator "" _b(const unsigned char *, size_t); // expected-error {{parameter}}
-char operator "" _a(const volatile char *, size_t); // expected-error {{parameter}}
-char operator "" _a(volatile wchar_t *, size_t); // expected-error {{parameter}}
-char operator "" _a(char16_t *, size_t); // expected-error {{parameter}}
-char operator "" _a(const char32_t *, size_t, bool = false); // expected-error {{parameter}}
-char operator "" _a(const char *, signed long); // expected-error {{parameter}}
-char operator "" _a(const char *, size_t = 0); // expected-error {{default argument}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-using size_t = decltype(sizeof(int));
-template<char...> struct S {};
-
-template<char...> void operator "" _a();
-template<char... C> S<C...> operator "" _a();
-
-template<typename T> struct U {
-  friend int operator "" _a(const char *, size_t);
-  // FIXME: It's not entirely clear whether this is intended to be legal.
-  friend U operator "" _a(const T *, size_t); // expected-error {{parameter}}
-};
-template<char...> struct V {
-  friend void operator "" _b(); // expected-error {{parameter}}
-};
-
-template<char... C, int N = 0> void operator "" _b(); // expected-error {{parameter}}
-template<char... C> void operator "" _b(int N = 0); // expected-error {{parameter}}
-template<char, char...> void operator "" _b(); // expected-error {{parameter}}
-template<typename T> T operator "" _b(const char *); // expected-error {{parameter}}
-template<typename T> int operator "" _b(const T *, size_t); // expected-error {{parameter}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-extern "C" void operator "" _a(const char *); // expected-error {{must have C++ linkage}}
-extern "C" template<char...> void operator "" _b(); // expected-error {{must have C++ linkage}}
-
-extern "C" {
-  void operator "" _c(const char *); // expected-error {{must have C++ linkage}}
-  template<char...> void operator "" _d(); // expected-error {{must have C++ linkage}}
-  namespace N {
-    void operator "" _e(const char *); // expected-error {{must have C++ linkage}}
-    template<char...> void operator "" _f(); // expected-error {{must have C++ linkage}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-// expected-no-diagnostics
-
-constexpr int operator "" _a(const char *c) {
-  return c[0];
-}
-
-static_assert(operator "" _a("foo") == 'f', "");
-
-void puts(const char *);
-static inline void operator "" _puts(const char *c) {
-  puts(c);
-}
-void f() {
-  operator "" _puts("foo");
-  operator "" _puts("bar");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.oper/over.literal/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-struct string;
-namespace std {
-  using size_t = decltype(sizeof(int));
-}
-
-void operator "" _km(long double); // ok
-string operator "" _i18n(const char*, std::size_t); // ok
-template<char...> int operator "" \u03C0(); // ok, UCN for lowercase pi // expected-warning {{reserved}}
-float operator ""E(const char *); // expected-error {{invalid suffix on literal}} expected-warning {{reserved}}
-float operator " " B(const char *); // expected-error {{must be '""'}} expected-warning {{reserved}}
-string operator "" 5X(const char *, std::size_t); // expected-error {{expected identifier}}
-double operator "" _miles(double); // expected-error {{parameter}}
-template<char...> int operator "" j(const char*); // expected-error {{parameter}}
-
-float operator ""_E(const char *);

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-template<typename T> T f0(T);
-int f0(int);
-
-// -- an object or reference being initialized 
-struct S {
-  int (*f0)(int);
-  float (*f1)(float);
-};
-
-void test_init_f0() {
-  int (*f0a)(int) = f0;
-  int (*f0b)(int) = &f0;
-  int (*f0c)(int) = (f0);
-  float (*f0d)(float) = f0;
-  float (*f0e)(float) = &f0;
-  float (*f0f)(float) = (f0);
-  int (&f0g)(int) = f0;
-  int (&f0h)(int) = (f0);
-  float (&f0i)(float) = f0;
-  float (&f0j)(float) = (f0);
-  S s = { f0, f0 };
-}
-
-// -- the left side of an assignment (5.17),
-void test_assign_f0() {
-  int (*f0a)(int) = 0;
-  float (*f0b)(float) = 0;
-  
-  f0a = f0;
-  f0a = &f0;
-  f0a = (f0);
-  f0b = f0;
-  f0b = &f0;
-  f0b = (f0);  
-}
-
-// -- a parameter of a function (5.2.2),
-void eat_f0(int a(int), float (*b)(float), int (&c)(int), float (&d)(float));
-
-void test_pass_f0() {
-  eat_f0(f0, f0, f0, f0);
-  eat_f0(&f0, &f0, (f0), (f0));
-}
-
-// -- a parameter of a user-defined operator (13.5),
-struct X { };
-void operator+(X, int(int));
-void operator-(X, float(*)(float));
-void operator*(X, int (&)(int));
-void operator/(X, float (&)(float));
-
-void test_operator_pass_f0(X x) {
-  x + f0;
-  x + &f0;
-  x - f0;
-  x - &f0;
-  x * f0;
-  x * (f0);
-  x / f0;
-  x / (f0);
-}
-
-// -- the return value of a function, operator function, or conversion (6.6.3),
-int (*test_return_f0_a())(int) { return f0; }
-int (*test_return_f0_b())(int) { return &f0; }
-int (*test_return_f0_c())(int) { return (f0); }
-float (*test_return_f0_d())(float) { return f0; }
-float (*test_return_f0_e())(float) { return &f0; }
-float (*test_return_f0_f())(float) { return (f0); }
-
-// -- an explicit type conversion (5.2.3, 5.2.9, 5.4), or
-void test_convert_f0() {
-  (void)((int (*)(int))f0);
-  (void)((int (*)(int))&f0);
-  (void)((int (*)(int))(f0));
-  (void)((float (*)(float))f0);
-  (void)((float (*)(float))&f0);
-  (void)((float (*)(float))(f0));
-}
-
-// -- a non-type template-parameter(14.3.2).
-template<int(int)> struct Y0 { };
-template<float(float)> struct Y1 { };
-template<int (&)(int)> struct Y2 { };
-template<float (&)(float)> struct Y3 { };
-
-Y0<f0> y0;
-Y0<&f0> y0a;
-Y1<f0> y1;
-Y1<&f0> y1a;
-Y2<f0> y2;
-Y3<f0> y3;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p2-resolve-single-template-id.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p2-resolve-single-template-id.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p2-resolve-single-template-id.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,191 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-bool-conversion %s
-
-typedef __typeof__(((int*)0)-((int*)0)) ptrdiff_t;
-
-namespace DontResolveTooEarly_WaitForOverloadResolution
-{
-  template <class T> T* f(int);	// #1 
-  template <class T, class U> T& f(U); // #2 
-  
-  void g() {
-    int *ip = f<int>(1);	// calls #1
-  }
-
-  template <class T> 
-    T* f2(int); 
-  template <class T, class U> 
-    T& f2(U); 
-
-  void g2() {
-    int*ip = (f2<int>)(1); // ok
-  }
-
-} // End namespace
-
-namespace DontAllowUnresolvedOverloadedExpressionInAnUnusedExpression
-{
-  void one() { }
-  template<class T> void oneT() { }
-
-  void two() { } // expected-note 2 {{possible target for call}}
-  void two(int) { } // expected-note 2 {{possible target for call}}
-  template<class T> void twoT() { }  // expected-note 2 {{possible target for call}}
-  template<class T> void twoT(T) { }  // expected-note 2 {{possible target for call}}
-
-  void check()
-  {
-    one; // expected-warning {{expression result unused}}
-    two; // expected-error{{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
-    oneT<int>; // expected-warning {{expression result unused}}
-    twoT<int>; // expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}}
-  }
-
-  // check the template function case
-  template<class T> void check()
-  {
-    one; // expected-warning {{expression result unused}}
-    two; // expected-error{{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
-    oneT<int>; // expected-warning {{expression result unused}}
-    twoT<int>; // expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}}
- 
-  }
-
-}
-
-  template<typename T>
-    void twoT() { }
-  template<typename T, typename U>
-    void twoT(T) { }
-  
-
-  void two() { }; //expected-note 5{{candidate}}
-  void two(int) { }; //expected-note 5{{candidate}}
- 
-
-
-  void one() { }
-  template<class T> 
-    void oneT() { }
-
-  template<class T>
-  void cant_resolve() { } //expected-note 3{{candidate}}
- 
-  template<class T> void cant_resolve(T) { }//expected-note 3{{candidate}}
- 
-
-int main()
-{
-  
-  { static_cast<void>(one); }
-  { (void)(one); }
-  { static_cast<void>(oneT<int>); }
-  { (void)(oneT<int>); }
-
-  { static_cast<void>(two); } // expected-error {{address of overloaded function 'two' cannot be static_cast to type 'void'}}
-  { (void)(two); } // expected-error {{address of overloaded function 'two' cannot be cast to type 'void'}}
-  { static_cast<void>(twoT<int>); } 
-  { (void)(twoT<int>); } 
-
-
-  { ptrdiff_t x = reinterpret_cast<ptrdiff_t>(oneT<int>); } 
-  { (void) reinterpret_cast<int (*)(char, double)>(oneT<int>); } 
-  { (void) reinterpret_cast<ptrdiff_t>(one); }
-  { (void) reinterpret_cast<int (*)(char, double)>(one); }
-
-  { ptrdiff_t x = reinterpret_cast<ptrdiff_t>(twoT<int>); }  
-  { (void) reinterpret_cast<int (*)(char, double)>(twoT<int>); } 
-  { (void) reinterpret_cast<void (*)(int)>(two); } //expected-error {{reinterpret_cast}}
-  { (void) static_cast<void (*)(int)>(two); } //ok
-
-  { (void) reinterpret_cast<int>(two); } //expected-error {{reinterpret_cast}}
-  { (void) reinterpret_cast<int (*)(char, double)>(two); } //expected-error {{reinterpret_cast}}
-
-  { bool b = (twoT<int>); } 
-  { bool b = (twoT<int, int>); } 
-
-  { bool b = &twoT<int>; //&foo<int>; }
-    b = &(twoT<int>); }
-
-  { ptrdiff_t x = (ptrdiff_t) &twoT<int>;
-      x = (ptrdiff_t) &twoT<int>; }
-
-  { ptrdiff_t x = (ptrdiff_t) twoT<int>;
-      x = (ptrdiff_t) twoT<int>; }
-
-  
-  { ptrdiff_t x = (ptrdiff_t) &twoT<int,int>;
-  x = (ptrdiff_t) &twoT<int>; }
-
-  { oneT<int>;   &oneT<int>; } //expected-warning 2{{expression result unused}}
-  { static_cast<void>(cant_resolve<int>); } // expected-error {{address of overload}}
-  { bool b = cant_resolve<int>; } // expected-error {{address of overload}}
-  { (void) cant_resolve<int>; } // expected-error {{address of overload}}
-
-}
-
-namespace member_pointers {
-  struct S {
-    template <typename T> bool f(T) { return false; }
-    template <typename T> static bool g(T) { return false; }
-
-    template <typename T> bool h(T) { return false; }  // expected-note 3 {{possible target for call}}
-    template <int N> static bool h(int) { return false; } // expected-note 3 {{possible target for call}}
-  };
-
-  void test(S s) {
-    if (S::f<char>) return; // expected-error {{call to non-static member function without an object argument}}
-    if (S::f<int>) return; // expected-error {{call to non-static member function without an object argument}}
-    if (&S::f<char>) return;
-    if (&S::f<int>) return;
-    if (s.f<char>) return; // expected-error {{reference to non-static member function must be called}}
-    if (s.f<int>) return; // expected-error {{reference to non-static member function must be called}}
-    if (&s.f<char>) return; // expected-error {{cannot create a non-constant pointer to member function}}
-    if (&s.f<int>) return; // expected-error {{cannot create a non-constant pointer to member function}}
-
-    if (S::g<char>) return;
-    if (S::g<int>) return;
-    if (&S::g<char>) return;
-    if (&S::g<int>) return;
-    if (s.g<char>) return;
-    if (s.g<int>) return;
-    if (&s.g<char>) return;
-    if (&s.g<int>) return;
-
-    if (S::h<42>) return;
-    if (S::h<int>) return; // expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}}
-    if (&S::h<42>) return;
-    if (&S::h<int>) return;
-    if (s.h<42>) return;
-    if (s.h<int>) return; // expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}}
-    if (&s.h<42>) return;
-    if (&s.h<int>) return; // expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}}
-
-    { bool b = S::f<char>; } // expected-error {{call to non-static member function without an object argument}}
-    { bool b = S::f<int>; } // expected-error {{call to non-static member function without an object argument}}
-    { bool b = &S::f<char>; }
-    { bool b = &S::f<int>; }
-    // These next two errors are terrible.
-    { bool b = s.f<char>; } // expected-error {{reference to non-static member function must be called}}
-    { bool b = s.f<int>; } // expected-error {{reference to non-static member function must be called}}
-    { bool b = &s.f<char>; } // expected-error {{cannot create a non-constant pointer to member function}}
-    { bool b = &s.f<int>; } // expected-error {{cannot create a non-constant pointer to member function}}
-
-    { bool b = S::g<char>; }
-    { bool b = S::g<int>; }
-    { bool b = &S::g<char>; }
-    { bool b = &S::g<int>; }
-    { bool b = s.g<char>; }
-    { bool b = s.g<int>; }
-    { bool b = &s.g<char>; }
-    { bool b = &s.g<int>; }
-
-    { bool b = S::h<42>; }
-    { bool b = S::h<int>; } // expected-error {{can't form member pointer of type 'bool' without '&' and class name}}
-    { bool b = &S::h<42>; }
-    { bool b = &S::h<int>; }
-    { bool b = s.h<42>; }
-    { bool b = s.h<int>; } // expected-error {{can't form member pointer of type 'bool' without '&' and class name}}
-    { bool b = &s.h<42>; }
-    { bool b = &s.h<int>; } // expected-error {{can't form member pointer of type 'bool' without '&' and class name}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> T f0(T, T); //expected-note{{candidate}}
-
-void test_f0() {
-  int (*f0a)(int, int) = f0;
-  int (*f0b)(int, int) = &f0;
-  int (*f0c)(int, float) = f0; // expected-error{{address of overloaded function 'f0' does not match required type 'int (int, float)'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/over/over.over/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> T f0(T); // expected-note{{candidate function}}
-int f0(int); // expected-note{{candidate function}}
-
-void test_f0() {
-  int (*fp0)(int) = f0;
-  int (*fp1)(int) = &f0;
-  float (*fp2)(float) = &f0;
-}
-
-namespace N {
-  int f0(int); // expected-note{{candidate function}}
-}
-
-void test_f0_2() {
-  using namespace N;
-  int (*fp0)(int) = f0; // expected-error{{address of overloaded function 'f0' is ambiguous}}
-  float (*fp1)(float) = f0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.conv/class.conv.ctor/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.conv/class.conv.ctor/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.conv/class.conv.ctor/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify 
-// expected-no-diagnostics
-
-namespace PR13003 {
-  struct void_type
-  {
-    template <typename Arg0, typename... Args>
-    void_type(Arg0&&, Args&&...) { }
-  };
-
-  struct void_type2
-  {
-    template <typename... Args>
-    void_type2(Args&&...) { }
-  };
-  
-  struct atom { };
-  
-  void_type v1 = atom();
-  void_type2 v2 = atom();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/implicit-move-def.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/implicit-move-def.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/implicit-move-def.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,117 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -std=c++11 %s | FileCheck -check-prefix=CHECK-ASSIGN %s
-// RUN: %clang_cc1 -emit-llvm -o - -std=c++11 %s | FileCheck -check-prefix=CHECK-ASSIGN %s
-// RUN: %clang_cc1 -emit-llvm -o - -std=c++11 %s | FileCheck -check-prefix=CHECK-CTOR %s
-
-// construct
-
-struct E {
-  E();
-  E(E&&);
-};
-
-struct F {
-  F();
-  F(F&&);
-};
-
-struct G {
-  E e;
-};
-
-struct H : G {
-  F l;
-  E m;
-  F ar[2];
-};
-
-void f() {
-  H s;
-  // CHECK: call void @_ZN1HC1EOS_
-  H t(static_cast<H&&>(s));
-}
-
-
-// assign
-
-struct A {
-  A &operator =(A&&);
-};
-
-struct B {
-  B &operator =(B&&);
-};
-
-struct C {
-  A a;
-};
-
-struct D : C {
-  A a;
-  B b;
-  A ar[2];
-};
-
-void g() {
-  D d;
-  // CHECK: call {{.*}} @_ZN1DaSEOS_
-  d = D();
-}
-
-// PR10822
-struct I {
-  unsigned var[1];
-};
-
-// CHECK: define void @_Z1hv() nounwind {
-void h() {
-  I i;
-  // CHECK: call void @llvm.memcpy.
-  i = I();
-  // CHECK-NEXT: ret void
-}
-
-// PR10860
-struct Empty { };
-struct VirtualWithEmptyBase : Empty {
-  virtual void f();
-};
-
-// CHECK: define void @_Z25move_VirtualWithEmptyBaseR20VirtualWithEmptyBaseS0_
-void move_VirtualWithEmptyBase(VirtualWithEmptyBase &x, VirtualWithEmptyBase &y) {
-  // CHECK: call {{.*}} @_ZN20VirtualWithEmptyBaseaSEOS_
-  x = static_cast<VirtualWithEmptyBase&&>(y);
-  // CHECK-NEXT: ret void
-}
-
-// move assignment ops
-
-// CHECK-ASSIGN: define linkonce_odr {{.*}} @_ZN1DaSEOS_
-// CHECK-ASSIGN: call {{.*}} @_ZN1CaSEOS_
-// CHECK-ASSIGN: call {{.*}} @_ZN1AaSEOS_
-// CHECK-ASSIGN: call {{.*}} @_ZN1BaSEOS_
-// array loop
-// CHECK-ASSIGN: br i1
-// CHECK-ASSIGN: call {{.*}} @_ZN1AaSEOS_
-
-// VirtualWithEmptyBase move assignment operatpr
-// CHECK-ASSIGN: define linkonce_odr {{.*}} @_ZN20VirtualWithEmptyBaseaSEOS_
-// CHECK-ASSIGN: store
-// CHECK-ASSIGN-NEXT: store
-// CHECK-ASSIGN-NOT: call
-// CHECK-ASSIGN: ret
-
-// CHECK-ASSIGN: define linkonce_odr {{.*}} @_ZN1CaSEOS_
-// CHECK-ASSIGN: call {{.*}} @_ZN1AaSEOS_
-
-// move ctors
-
-// CHECK-CTOR: define linkonce_odr {{.*}} @_ZN1HC2EOS_
-// CHECK-CTOR: call {{.*}} @_ZN1GC2EOS_
-// CHECK-CTOR: call {{.*}} @_ZN1FC1EOS_
-// CHECK-CTOR: call {{.*}} @_ZN1EC1EOS_
-// array loop
-// CHECK-CTOR: br i1
-// CHECK-CTOR: call {{.*}} @_ZN1FC1EOS_
-
-// CHECK-CTOR: define linkonce_odr {{.*}} @_ZN1GC2EOS_
-// CHECK-CTOR: call {{.*}} @_ZN1EC1EOS_

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/implicit-move.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/implicit-move.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/implicit-move.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,243 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// Tests for implicit (non-)declaration of move constructor and
-// assignment: p9, p11, p20, p23.
-
-// This class, used as a member, allows to distinguish move from copy because
-// move operations are no-throw, copy operations aren't.
-struct ThrowingCopy {
-  ThrowingCopy() noexcept;
-  ThrowingCopy(ThrowingCopy &&) noexcept;
-  ThrowingCopy(const ThrowingCopy &) noexcept(false);
-  ThrowingCopy & operator =(ThrowingCopy &&) noexcept;
-  ThrowingCopy & operator =(const ThrowingCopy &) noexcept(false);
-};
-
-struct HasCopyConstructor {
-  ThrowingCopy tc;
-  HasCopyConstructor() noexcept;
-  HasCopyConstructor(const HasCopyConstructor &) noexcept(false);
-};
-
-struct HasCopyAssignment {
-  ThrowingCopy tc;
-  HasCopyAssignment() noexcept;
-  HasCopyAssignment & operator =(const HasCopyAssignment &) noexcept(false);
-};
-
-struct HasMoveConstructor {
-  ThrowingCopy tc;
-  HasMoveConstructor() noexcept;
-  HasMoveConstructor(HasMoveConstructor &&) noexcept; // expected-note {{copy assignment operator is implicitly deleted because 'HasMoveConstructor' has a user-declared move constructor}}
-};
-
-struct HasMoveAssignment { // expected-note {{implicit copy constructor}}
-  ThrowingCopy tc;
-  HasMoveAssignment() noexcept;
-  HasMoveAssignment & operator =(HasMoveAssignment &&) noexcept;
-};
-
-struct HasDestructor {
-  ThrowingCopy tc;
-  HasDestructor() noexcept;
-  ~HasDestructor() noexcept;
-};
-
-void test_basic_exclusion() {
-  static_assert(!noexcept(HasCopyConstructor((HasCopyConstructor()))), "");
-  HasCopyConstructor hcc;
-  static_assert(!noexcept(hcc = HasCopyConstructor()), "");
-
-  static_assert(!noexcept(HasCopyAssignment((HasCopyAssignment()))), "");
-  HasCopyAssignment hca;
-  static_assert(!noexcept(hca = HasCopyAssignment()), "");
-
-  static_assert(noexcept(HasMoveConstructor((HasMoveConstructor()))), "");
-  HasMoveConstructor hmc;
-  hmc = HasMoveConstructor(); // expected-error {{object of type 'HasMoveConstructor' cannot be assigned because its copy assignment operator is implicitly deleted}}
-
-  (HasMoveAssignment(HasMoveAssignment())); // expected-error {{uses deleted function}}
-  HasMoveAssignment hma;
-  static_assert(noexcept(hma = HasMoveAssignment()), "");
-
-  static_assert(!noexcept(HasDestructor((HasDestructor()))), "");
-  HasDestructor hd;
-  static_assert(!noexcept(hd = HasDestructor()), "");
-}
-
-struct PrivateMove {
-  PrivateMove() noexcept;
-  PrivateMove(const PrivateMove &) noexcept(false);
-  PrivateMove & operator =(const PrivateMove &) noexcept(false);
-private:
-  PrivateMove(PrivateMove &&) noexcept;
-  PrivateMove & operator =(PrivateMove &&) noexcept;
-};
-
-struct InheritsPrivateMove : PrivateMove {};
-struct ContainsPrivateMove {
-  PrivateMove pm;
-};
-
-struct PrivateDestructor {
-  PrivateDestructor() noexcept;
-  PrivateDestructor(const PrivateDestructor &) noexcept(false);
-  PrivateDestructor(PrivateDestructor &&) noexcept;
-private:
-  ~PrivateDestructor() noexcept;
-};
-
-struct InheritsPrivateDestructor : PrivateDestructor {}; // expected-note{{base class 'PrivateDestructor' has an inaccessible destructor}}
-struct ContainsPrivateDestructor {
-  PrivateDestructor pd; // expected-note{{field 'pd' has an inaccessible destructor}}
-};
-
-struct NonTrivialCopyOnly {
-  NonTrivialCopyOnly() noexcept;
-  NonTrivialCopyOnly(const NonTrivialCopyOnly &) noexcept(false);
-  NonTrivialCopyOnly & operator =(const NonTrivialCopyOnly &) noexcept(false);
-};
-
-struct InheritsNonTrivialCopyOnly : NonTrivialCopyOnly {};
-struct ContainsNonTrivialCopyOnly {
-  NonTrivialCopyOnly ntco;
-};
-
-struct ContainsConst {
-  const int i;
-  ContainsConst() noexcept;
-  ContainsConst & operator =(ContainsConst &); // expected-note {{not viable}}
-};
-
-struct ContainsRef {
-  int &i;
-  ContainsRef() noexcept;
-  ContainsRef & operator =(ContainsRef &); // expected-note {{not viable}}
-};
-
-struct Base {
-  Base & operator =(Base &);
-};
-struct DirectVirtualBase : virtual Base {}; // expected-note {{copy assignment operator) not viable}}
-struct IndirectVirtualBase : DirectVirtualBase {}; // expected-note {{copy assignment operator) not viable}}
-
-void test_deletion_exclusion() {
-  // FIXME: How to test the union thing?
-
-  static_assert(!noexcept(InheritsPrivateMove(InheritsPrivateMove())), "");
-  static_assert(!noexcept(ContainsPrivateMove(ContainsPrivateMove())), "");
-  InheritsPrivateMove ipm;
-  static_assert(!noexcept(ipm = InheritsPrivateMove()), "");
-  ContainsPrivateMove cpm;
-  static_assert(!noexcept(cpm = ContainsPrivateMove()), "");
-
-  (InheritsPrivateDestructor(InheritsPrivateDestructor())); // expected-error {{call to implicitly-deleted default constructor}}
-  (ContainsPrivateDestructor(ContainsPrivateDestructor())); // expected-error {{call to implicitly-deleted default constructor}}
-
-  static_assert(!noexcept(InheritsNonTrivialCopyOnly(InheritsNonTrivialCopyOnly())), "");
-  static_assert(!noexcept(ContainsNonTrivialCopyOnly(ContainsNonTrivialCopyOnly())), "");
-  InheritsNonTrivialCopyOnly intco;
-  static_assert(!noexcept(intco = InheritsNonTrivialCopyOnly()), "");
-  ContainsNonTrivialCopyOnly cntco;
-  static_assert(!noexcept(cntco = ContainsNonTrivialCopyOnly()), "");
-
-  ContainsConst cc;
-  cc = ContainsConst(); // expected-error {{no viable}} 
-
-  ContainsRef cr;
-  cr = ContainsRef(); // expected-error {{no viable}} 
-
-  DirectVirtualBase dvb;
-  dvb = DirectVirtualBase(); // expected-error {{no viable}} 
-
-  IndirectVirtualBase ivb;
-  ivb = IndirectVirtualBase(); // expected-error {{no viable}} 
-}
-
-struct ContainsRValueRef {
-  int&& ri;
-  ContainsRValueRef() noexcept;
-};
-
-void test_contains_rref() {
-  (ContainsRValueRef(ContainsRValueRef()));
-}
-
-
-namespace DR1402 {
-  struct NonTrivialCopyCtor {
-    NonTrivialCopyCtor(const NonTrivialCopyCtor &);
-  };
-  struct NonTrivialCopyAssign {
-    NonTrivialCopyAssign &operator=(const NonTrivialCopyAssign &);
-  };
-
-  struct NonTrivialCopyCtorVBase : virtual NonTrivialCopyCtor {
-    NonTrivialCopyCtorVBase(NonTrivialCopyCtorVBase &&);
-    NonTrivialCopyCtorVBase &operator=(NonTrivialCopyCtorVBase &&) = default;
-  };
-  struct NonTrivialCopyAssignVBase : virtual NonTrivialCopyAssign {
-    NonTrivialCopyAssignVBase(NonTrivialCopyAssignVBase &&);
-    NonTrivialCopyAssignVBase &operator=(NonTrivialCopyAssignVBase &&) = default;
-  };
-
-  struct NonTrivialMoveAssign {
-    NonTrivialMoveAssign(NonTrivialMoveAssign&&);
-    NonTrivialMoveAssign &operator=(NonTrivialMoveAssign &&);
-  };
-  struct NonTrivialMoveAssignVBase : virtual NonTrivialMoveAssign {
-    NonTrivialMoveAssignVBase(NonTrivialMoveAssignVBase &&);
-    NonTrivialMoveAssignVBase &operator=(NonTrivialMoveAssignVBase &&) = default;
-  };
-
-  // A non-movable, non-trivially-copyable class type as a subobject inhibits
-  // the declaration of a move operation.
-  struct NoMove1 { NonTrivialCopyCtor ntcc; }; // expected-note 2{{'const DR1402::NoMove1 &'}}
-  struct NoMove2 { NonTrivialCopyAssign ntcc; }; // expected-note 2{{'const DR1402::NoMove2 &'}}
-  struct NoMove3 : NonTrivialCopyCtor {}; // expected-note 2{{'const DR1402::NoMove3 &'}}
-  struct NoMove4 : NonTrivialCopyAssign {}; // expected-note 2{{'const DR1402::NoMove4 &'}}
-  struct NoMove5 : virtual NonTrivialCopyCtor {}; // expected-note 2{{'const DR1402::NoMove5 &'}}
-  struct NoMove6 : virtual NonTrivialCopyAssign {}; // expected-note 2{{'const DR1402::NoMove6 &'}}
-  struct NoMove7 : NonTrivialCopyCtorVBase {}; // expected-note 2{{'const DR1402::NoMove7 &'}}
-  struct NoMove8 : NonTrivialCopyAssignVBase {}; // expected-note 2{{'const DR1402::NoMove8 &'}}
-
-  // A non-trivially-move-assignable virtual base class inhibits the declaration
-  // of a move assignment (which might move-assign the base class multiple
-  // times).
-  struct NoMove9 : NonTrivialMoveAssign {};
-  struct NoMove10 : virtual NonTrivialMoveAssign {}; // expected-note {{'const DR1402::NoMove10 &'}}
-  struct NoMove11 : NonTrivialMoveAssignVBase {}; // expected-note {{'const DR1402::NoMove11 &'}}
-
-  struct Test {
-    friend NoMove1::NoMove1(NoMove1 &&); // expected-error {{no matching function}}
-    friend NoMove2::NoMove2(NoMove2 &&); // expected-error {{no matching function}}
-    friend NoMove3::NoMove3(NoMove3 &&); // expected-error {{no matching function}}
-    friend NoMove4::NoMove4(NoMove4 &&); // expected-error {{no matching function}}
-    friend NoMove5::NoMove5(NoMove5 &&); // expected-error {{no matching function}}
-    friend NoMove6::NoMove6(NoMove6 &&); // expected-error {{no matching function}}
-    friend NoMove7::NoMove7(NoMove7 &&); // expected-error {{no matching function}}
-    friend NoMove8::NoMove8(NoMove8 &&); // expected-error {{no matching function}}
-    friend NoMove9::NoMove9(NoMove9 &&);
-    friend NoMove10::NoMove10(NoMove10 &&);
-    friend NoMove11::NoMove11(NoMove11 &&);
-
-    friend NoMove1 &NoMove1::operator=(NoMove1 &&); // expected-error {{no matching function}}
-    friend NoMove2 &NoMove2::operator=(NoMove2 &&); // expected-error {{no matching function}}
-    friend NoMove3 &NoMove3::operator=(NoMove3 &&); // expected-error {{no matching function}}
-    friend NoMove4 &NoMove4::operator=(NoMove4 &&); // expected-error {{no matching function}}
-    friend NoMove5 &NoMove5::operator=(NoMove5 &&); // expected-error {{no matching function}}
-    friend NoMove6 &NoMove6::operator=(NoMove6 &&); // expected-error {{no matching function}}
-    friend NoMove7 &NoMove7::operator=(NoMove7 &&); // expected-error {{no matching function}}
-    friend NoMove8 &NoMove8::operator=(NoMove8 &&); // expected-error {{no matching function}}
-    friend NoMove9 &NoMove9::operator=(NoMove9 &&);
-    friend NoMove10 &NoMove10::operator=(NoMove10 &&); // expected-error {{no matching function}}
-    friend NoMove11 &NoMove11::operator=(NoMove11 &&); // expected-error {{no matching function}}
-  };
-}
-
-namespace PR12625 {
-  struct X; // expected-note {{forward decl}}
-  struct Y {
-    X x; // expected-error {{incomplete}}
-  } y = Y();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p11.0x.copy.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p11.0x.copy.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p11.0x.copy.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,133 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct NonTrivial {
-  NonTrivial(const NonTrivial&);
-};
-
-// A defaulted copy constructor for a class X is defined as deleted if X has:
-
-// -- a variant member with a non-trivial corresponding constructor
-union DeletedNTVariant {
-  NonTrivial NT; // expected-note{{copy constructor of 'DeletedNTVariant' is implicitly deleted because variant field 'NT' has a non-trivial copy constructor}}
-  DeletedNTVariant();
-};
-DeletedNTVariant DVa;
-DeletedNTVariant DVb(DVa); // expected-error{{call to implicitly-deleted copy constructor}}
-
-struct DeletedNTVariant2 {
-  union {
-    NonTrivial NT; // expected-note{{copy constructor of 'DeletedNTVariant2' is implicitly deleted because variant field 'NT' has a non-trivial copy constructor}}
-  };
-  DeletedNTVariant2();
-};
-DeletedNTVariant2 DV2a;
-DeletedNTVariant2 DV2b(DV2a); // expected-error{{call to implicitly-deleted copy constructor}}
-
-// -- a non-static data member of class type M (or array thereof) that cannot be
-//    copied because overload resolution results in an ambiguity or a function
-//    that is deleted or inaccessible
-struct NoAccess {
-  NoAccess() = default;
-private:
-  NoAccess(const NoAccess&);
-
-  friend struct HasAccess;
-};
-
-struct HasNoAccess {
-  NoAccess NA; // expected-note{{copy constructor of 'HasNoAccess' is implicitly deleted because field 'NA' has an inaccessible copy constructor}}
-};
-HasNoAccess HNAa;
-HasNoAccess HNAb(HNAa); // expected-error{{call to implicitly-deleted copy constructor}}
-
-struct HasAccess {
-  NoAccess NA;
-};
-
-HasAccess HAa;
-HasAccess HAb(HAa);
-
-struct NonConst {
-  NonConst(NonConst&);
-};
-struct Ambiguity {
-  Ambiguity(const Ambiguity&);
-  Ambiguity(volatile Ambiguity&);
-};
-
-struct IsAmbiguous {
-  NonConst NC;
-  Ambiguity A; // expected-note 2{{copy constructor of 'IsAmbiguous' is implicitly deleted because field 'A' has multiple copy constructors}}
-  IsAmbiguous();
-};
-IsAmbiguous IAa;
-IsAmbiguous IAb(IAa); // expected-error{{call to implicitly-deleted copy constructor}}
-
-struct Deleted {
-  IsAmbiguous IA; // expected-note{{copy constructor of 'Deleted' is implicitly deleted because field 'IA' has a deleted copy constructor}}
-};
-Deleted Da;
-Deleted Db(Da); // expected-error{{call to implicitly-deleted copy constructor}}
-
-// -- a direct or virtual base class B that cannot be copied because overload
-//    resolution results in an ambiguity or a function that is deleted or
-//    inaccessible
-struct AmbiguousCopyBase : Ambiguity { // expected-note 2{{copy constructor of 'AmbiguousCopyBase' is implicitly deleted because base class 'Ambiguity' has multiple copy constructors}}
-  NonConst NC;
-};
-extern AmbiguousCopyBase ACBa;
-AmbiguousCopyBase ACBb(ACBa); // expected-error {{deleted copy constructor}}
-
-struct DeletedCopyBase : AmbiguousCopyBase {}; // expected-note {{copy constructor of 'DeletedCopyBase' is implicitly deleted because base class 'AmbiguousCopyBase' has a deleted copy constructor}}
-extern DeletedCopyBase DCBa;
-DeletedCopyBase DCBb(DCBa); // expected-error {{deleted copy constructor}}
-
-struct InaccessibleCopyBase : NoAccess {}; // expected-note {{copy constructor of 'InaccessibleCopyBase' is implicitly deleted because base class 'NoAccess' has an inaccessible copy constructor}}
-extern InaccessibleCopyBase ICBa;
-InaccessibleCopyBase ICBb(ICBa); // expected-error {{deleted copy constructor}}
-
-// -- any direct or virtual base class or non-static data member of a type with
-//    a destructor that is deleted or inaccessible
-struct NoAccessDtor {
-private:
-  ~NoAccessDtor();
-  friend struct HasAccessDtor;
-};
-
-struct HasNoAccessDtor {
-  NoAccessDtor NAD; // expected-note{{copy constructor of 'HasNoAccessDtor' is implicitly deleted because field 'NAD' has an inaccessible destructor}}
-  HasNoAccessDtor();
-  ~HasNoAccessDtor();
-};
-HasNoAccessDtor HNADa;
-HasNoAccessDtor HNADb(HNADa); // expected-error{{call to implicitly-deleted copy constructor}}
-
-struct HasAccessDtor {
-  NoAccessDtor NAD;
-};
-HasAccessDtor HADa;
-HasAccessDtor HADb(HADa);
-
-struct HasNoAccessDtorBase : NoAccessDtor { // expected-note{{copy constructor of 'HasNoAccessDtorBase' is implicitly deleted because base class 'NoAccessDtor' has an inaccessible destructor}}
-};
-extern HasNoAccessDtorBase HNADBa;
-HasNoAccessDtorBase HNADBb(HNADBa); // expected-error{{implicitly-deleted copy constructor}}
-
-// -- a non-static data member of rvalue reference type
-struct RValue {
-  int && ri = 1; // expected-note{{copy constructor of 'RValue' is implicitly deleted because field 'ri' is of rvalue reference type 'int &&'}}
-};
-RValue RVa;
-RValue RVb(RVa); // expected-error{{call to implicitly-deleted copy constructor}}
-
-namespace PR13381 {
-  struct S {
-    S(const S&);
-    S(const volatile S&) = delete; // expected-note{{deleted here}}
-  };
-  struct T {
-    volatile S s; // expected-note{{field 's' has a deleted copy constructor}}
-  };
-  T &f();
-  T t = f(); // expected-error{{call to implicitly-deleted copy constructor}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p11.0x.move.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p11.0x.move.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p11.0x.move.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct NonTrivial {
-  NonTrivial(NonTrivial&&);
-};
-
-// A defaulted move constructor for a class X is defined as deleted if X has:
-
-// -- a variant member with a non-trivial corresponding constructor
-union DeletedNTVariant {
-  NonTrivial NT;
-  DeletedNTVariant(DeletedNTVariant&&);
-};
-DeletedNTVariant::DeletedNTVariant(DeletedNTVariant&&) = default; // expected-error{{would delete}}
-
-struct DeletedNTVariant2 {
-  union {
-    NonTrivial NT;
-  };
-  DeletedNTVariant2(DeletedNTVariant2&&);
-};
-DeletedNTVariant2::DeletedNTVariant2(DeletedNTVariant2&&) = default; // expected-error{{would delete}}
-
-// -- a non-static data member of class type M (or array thereof) that cannot be
-//    copied because overload resolution results in an ambiguity or a function
-//    that is deleted or inaccessible
-struct NoAccess {
-  NoAccess() = default;
-private:
-  NoAccess(NoAccess&&);
-
-  friend struct HasAccess;
-};
-
-struct HasNoAccess {
-  NoAccess NA;
-  HasNoAccess(HasNoAccess&&);
-};
-HasNoAccess::HasNoAccess(HasNoAccess&&) = default; // expected-error{{would delete}}
-
-struct HasAccess {
-  NoAccess NA;
-  HasAccess(HasAccess&&);
-};
-HasAccess::HasAccess(HasAccess&&) = default;
-
-struct Ambiguity {
-  Ambiguity(const Ambiguity&&);
-  Ambiguity(volatile Ambiguity&&);
-};
-
-struct IsAmbiguous {
-  Ambiguity A;
-  IsAmbiguous(IsAmbiguous&&);
-};
-IsAmbiguous::IsAmbiguous(IsAmbiguous&&) = default; // expected-error{{would delete}}
-
-struct Deleted {
-  IsAmbiguous IA;
-  Deleted(Deleted&&);
-};
-Deleted::Deleted(Deleted&&) = default; // expected-error{{would delete}}
-
-// -- a direct or virtual base class B that cannot be moved because overload
-//    resolution results in an ambiguity or a function that is deleted or
-//    inaccessible
-struct AmbiguousMoveBase : Ambiguity {
-  AmbiguousMoveBase(AmbiguousMoveBase&&);
-};
-AmbiguousMoveBase::AmbiguousMoveBase(AmbiguousMoveBase&&) = default; // expected-error{{would delete}}
-
-struct DeletedMoveBase : AmbiguousMoveBase {
-  DeletedMoveBase(DeletedMoveBase&&);
-};
-DeletedMoveBase::DeletedMoveBase(DeletedMoveBase&&) = default; // expected-error{{would delete}}
-
-struct InaccessibleMoveBase : NoAccess {
-  InaccessibleMoveBase(InaccessibleMoveBase&&);
-};
-InaccessibleMoveBase::InaccessibleMoveBase(InaccessibleMoveBase&&) = default; // expected-error{{would delete}}
-
-// -- any direct or virtual base class or non-static data member of a type with
-//    a destructor that is deleted or inaccessible
-struct NoAccessDtor {
-  NoAccessDtor(NoAccessDtor&&); // expected-note{{copy constructor is implicitly deleted because 'NoAccessDtor' has a user-declared move constructor}}
-private:
-  ~NoAccessDtor();
-  friend struct HasAccessDtor;
-};
-
-struct HasNoAccessDtor {
-  NoAccessDtor NAD;
-  HasNoAccessDtor(HasNoAccessDtor&&);
-};
-HasNoAccessDtor::HasNoAccessDtor(HasNoAccessDtor&&) = default; // expected-error{{would delete}}
-
-struct HasAccessDtor {
-  NoAccessDtor NAD;
-  HasAccessDtor(HasAccessDtor&&);
-};
-HasAccessDtor::HasAccessDtor(HasAccessDtor&&) = default;
-
-struct HasNoAccessDtorBase : NoAccessDtor { // expected-note{{copy constructor of 'HasNoAccessDtorBase' is implicitly deleted because base class 'NoAccessDtor' has a deleted copy constructor}}
-};
-extern HasNoAccessDtorBase HNADBa;
-HasNoAccessDtorBase HNADBb(HNADBa); // expected-error{{implicitly-deleted copy constructor}}
-
-// The restriction on rvalue reference members applies to only the copy
-// constructor.
-struct RValue {
-  int &&ri = 1;
-  RValue(RValue&&);
-};
-RValue::RValue(RValue&&) = default;
-
-// -- a non-static data member or direct or virtual base class with a type that
-//    does not have a move constructor and is not trivially copyable
-struct CopyOnly {
-  CopyOnly(const CopyOnly&);
-};
-
-struct NonMove {
-  CopyOnly CO;
-  NonMove(NonMove&&);
-};
-NonMove::NonMove(NonMove&&) = default; // ok under DR1402
-
-struct Moveable {
-  Moveable();
-  Moveable(Moveable&&);
-};
-
-struct HasMove {
-  Moveable M;
-  HasMove(HasMove&&);
-};
-HasMove::HasMove(HasMove&&) = default;
-
-namespace DR1402 {
-  struct member {
-    member();
-    member(const member&);
-    member& operator=(const member&);
-    ~member();
-  };
-
-  struct A {
-    member m_;
-
-    A() = default;
-    A(const A&) = default;
-    A& operator=(const A&) = default;
-    A(A&&) = default;
-    A& operator=(A&&) = default;
-    ~A() = default;
-  };
-
-  // ok, A's explicitly-defaulted move operations copy m_.
-  void f() {
-    A a, b(a), c(static_cast<A&&>(a));
-    a = b;
-    b = static_cast<A&&>(c);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p12-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p12-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p12-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,216 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// expected-no-diagnostics
-
-template<typename T, bool B> struct trivially_copyable_check {
-  static_assert(B == __has_trivial_copy(T), "");
-  static_assert(B == __is_trivially_constructible(T, T), "");
-  static_assert(B == __is_trivially_constructible(T, const T &), "");
-  static_assert(B == __is_trivially_constructible(T, T &&), "");
-  typedef void type;
-};
-template<typename T> using trivially_copyable =
-  typename trivially_copyable_check<T, true>::type;
-template<typename T> using not_trivially_copyable =
-  typename trivially_copyable_check<T, false>::type;
-
-struct Trivial {};
-using _ = trivially_copyable<Trivial>;
-
-// A copy/move constructor for class X is trivial if it is not user-provided,
-struct UserProvided {
-  UserProvided(const UserProvided &);
-};
-using _ = not_trivially_copyable<UserProvided>;
-
-// its declared parameter type is the same as if it had been implicitly
-// declared,
-struct NonConstCopy {
-  NonConstCopy(NonConstCopy &) = default;
-};
-using _ = not_trivially_copyable<NonConstCopy>;
-
-// class X has no virtual functions
-struct VFn {
-  virtual void f();
-};
-using _ = not_trivially_copyable<VFn>;
-
-// and no virtual base classes
-struct VBase : virtual Trivial {};
-using _ = not_trivially_copyable<VBase>;
-
-// and the constructor selected to copy/move each [direct subobject] is trivial
-struct TemplateCtor {
-  template<typename T> TemplateCtor(T &);
-};
-using _ = trivially_copyable<TemplateCtor>;
-struct TemplateCtorMember {
-  TemplateCtor tc;
-};
-using _ = trivially_copyable<TemplateCtorMember>;
-
-// We can select a non-trivial copy ctor even if there is a trivial one.
-struct MutableTemplateCtorMember {
-  mutable TemplateCtor mtc;
-};
-static_assert(!__is_trivially_constructible(MutableTemplateCtorMember, const MutableTemplateCtorMember &), "");
-static_assert(__is_trivially_constructible(MutableTemplateCtorMember, MutableTemplateCtorMember &&), "");
-struct MutableTemplateCtorMember2 {
-  MutableTemplateCtorMember2(const MutableTemplateCtorMember2 &) = default;
-  MutableTemplateCtorMember2(MutableTemplateCtorMember2 &&) = default;
-  mutable TemplateCtor mtc;
-};
-static_assert(!__is_trivially_constructible(MutableTemplateCtorMember2, const MutableTemplateCtorMember2 &), "");
-static_assert(__is_trivially_constructible(MutableTemplateCtorMember2, MutableTemplateCtorMember2 &&), "");
-
-// Both trivial and non-trivial special members.
-struct TNT {
-  TNT(const TNT &) = default; // trivial
-  TNT(TNT &); // non-trivial
-
-  TNT(TNT &&) = default; // trivial
-  TNT(const TNT &&); // non-trivial
-};
-
-static_assert(!__has_trivial_copy(TNT), "lie deliberately for gcc compatibility");
-static_assert(__is_trivially_constructible(TNT, TNT), "");
-static_assert(!__is_trivially_constructible(TNT, TNT &), "");
-static_assert(__is_trivially_constructible(TNT, const TNT &), "");
-static_assert(!__is_trivially_constructible(TNT, volatile TNT &), "");
-static_assert(__is_trivially_constructible(TNT, TNT &&), "");
-static_assert(!__is_trivially_constructible(TNT, const TNT &&), "");
-static_assert(!__is_trivially_constructible(TNT, volatile TNT &&), "");
-
-// This has only trivial special members.
-struct DerivedFromTNT : TNT {};
-
-static_assert(__has_trivial_copy(DerivedFromTNT), "");
-static_assert(__is_trivially_constructible(DerivedFromTNT, DerivedFromTNT), "");
-static_assert(__is_trivially_constructible(DerivedFromTNT, DerivedFromTNT &), "");
-static_assert(__is_trivially_constructible(DerivedFromTNT, const DerivedFromTNT &), "");
-static_assert(!__is_trivially_constructible(DerivedFromTNT, volatile DerivedFromTNT &), "");
-static_assert(__is_trivially_constructible(DerivedFromTNT, DerivedFromTNT &&), "");
-static_assert(__is_trivially_constructible(DerivedFromTNT, const DerivedFromTNT &&), "");
-static_assert(!__is_trivially_constructible(DerivedFromTNT, volatile DerivedFromTNT &&), "");
-
-// This has only trivial special members.
-struct TNTMember {
-  TNT tnt;
-};
-
-static_assert(__has_trivial_copy(TNTMember), "");
-static_assert(__is_trivially_constructible(TNTMember, TNTMember), "");
-static_assert(__is_trivially_constructible(TNTMember, TNTMember &), "");
-static_assert(__is_trivially_constructible(TNTMember, const TNTMember &), "");
-static_assert(!__is_trivially_constructible(TNTMember, volatile TNTMember &), "");
-static_assert(__is_trivially_constructible(TNTMember, TNTMember &&), "");
-static_assert(__is_trivially_constructible(TNTMember, const TNTMember &&), "");
-static_assert(!__is_trivially_constructible(TNTMember, volatile TNTMember &&), "");
-
-struct NCCTNT : NonConstCopy, TNT {};
-
-static_assert(!__has_trivial_copy(NCCTNT), "");
-static_assert(!__is_trivially_constructible(NCCTNT, NCCTNT), "");
-static_assert(!__is_trivially_constructible(NCCTNT, NCCTNT &), "");
-static_assert(!__is_trivially_constructible(NCCTNT, const NCCTNT &), "");
-static_assert(!__is_trivially_constructible(NCCTNT, volatile NCCTNT &), "");
-static_assert(!__is_trivially_constructible(NCCTNT, NCCTNT &&), "");
-static_assert(!__is_trivially_constructible(NCCTNT, const NCCTNT &&), "");
-static_assert(!__is_trivially_constructible(NCCTNT, volatile NCCTNT &&), "");
-
-struct TemplateCtorNoMove {
-  TemplateCtorNoMove(const TemplateCtorNoMove &) = default;
-  template<typename T> TemplateCtorNoMove(T &&);
-};
-static_assert(__is_trivially_constructible(TemplateCtorNoMove, const TemplateCtorNoMove &), "");
-static_assert(!__is_trivially_constructible(TemplateCtorNoMove, TemplateCtorNoMove &&), "");
-
-struct UseTemplateCtorNoMove {
-  TemplateCtorNoMove tcnm;
-};
-static_assert(__is_trivially_constructible(UseTemplateCtorNoMove, const UseTemplateCtorNoMove &), "");
-static_assert(!__is_trivially_constructible(UseTemplateCtorNoMove, UseTemplateCtorNoMove &&), "");
-
-struct TemplateCtorNoMoveSFINAE {
-  TemplateCtorNoMoveSFINAE(const TemplateCtorNoMoveSFINAE &) = default;
-  template<typename T, typename U = typename T::error> TemplateCtorNoMoveSFINAE(T &&);
-};
-static_assert(__is_trivially_constructible(TemplateCtorNoMoveSFINAE, const TemplateCtorNoMoveSFINAE &), "");
-static_assert(__is_trivially_constructible(TemplateCtorNoMoveSFINAE, TemplateCtorNoMoveSFINAE &&), "");
-
-struct UseTemplateCtorNoMoveSFINAE {
-  TemplateCtorNoMoveSFINAE tcnm;
-};
-static_assert(__is_trivially_constructible(UseTemplateCtorNoMoveSFINAE, const UseTemplateCtorNoMoveSFINAE &), "");
-static_assert(__is_trivially_constructible(UseTemplateCtorNoMoveSFINAE, UseTemplateCtorNoMoveSFINAE &&), "");
-
-namespace TrivialityDependsOnImplicitDeletion {
-  struct PrivateMove {
-    PrivateMove(const PrivateMove &) = default;
-  private:
-    PrivateMove(PrivateMove &&);
-    friend class Access;
-  };
-  static_assert(__is_trivially_constructible(PrivateMove, const PrivateMove &), "");
-  static_assert(!__is_trivially_constructible(PrivateMove, PrivateMove &&), "");
-
-  struct NoAccess {
-    PrivateMove pm;
-    // NoAccess's move would be deleted, so is suppressed,
-    // so moves of it use PrivateMove's copy ctor, which is trivial.
-  };
-  static_assert(__is_trivially_constructible(NoAccess, const NoAccess &), "");
-  static_assert(__is_trivially_constructible(NoAccess, NoAccess &&), "");
-  struct TopNoAccess : NoAccess {};
-  static_assert(__is_trivially_constructible(TopNoAccess, const TopNoAccess &), "");
-  static_assert(__is_trivially_constructible(TopNoAccess, TopNoAccess &&), "");
-
-  struct Access {
-    PrivateMove pm;
-    // NoAccess's move would *not* be deleted, so is *not* suppressed,
-    // so moves of it use PrivateMove's move ctor, which is not trivial.
-  };
-  static_assert(__is_trivially_constructible(Access, const Access &), "");
-  static_assert(!__is_trivially_constructible(Access, Access &&), "");
-  struct TopAccess : Access {};
-  static_assert(__is_trivially_constructible(TopAccess, const TopAccess &), "");
-  static_assert(!__is_trivially_constructible(TopAccess, TopAccess &&), "");
-}
-
-namespace TrivialityDependsOnDestructor {
-  class HasInaccessibleDestructor { ~HasInaccessibleDestructor() = default; };
-  struct HasImplicitlyDeletedDestructor : HasInaccessibleDestructor {};
-  struct HasImplicitlyDeletedCopyCtor : HasImplicitlyDeletedDestructor {
-    HasImplicitlyDeletedCopyCtor() = default;
-    template<typename T> HasImplicitlyDeletedCopyCtor(T &&);
-    // Copy ctor is deleted but trivial.
-    // Move ctor is suppressed.
-    HasImplicitlyDeletedCopyCtor(const HasImplicitlyDeletedCopyCtor&) = default;
-    HasImplicitlyDeletedCopyCtor(HasImplicitlyDeletedCopyCtor&&) = default;
-  };
-  struct Test : HasImplicitlyDeletedCopyCtor {
-    Test(const Test&) = default;
-    Test(Test&&) = default;
-  };
-  // Implicit copy ctor calls deleted trivial copy ctor.
-  static_assert(__has_trivial_copy(Test), "");
-  // This is false because the destructor is deleted.
-  static_assert(!__is_trivially_constructible(Test, const Test &), "");
-  // Implicit move ctor calls template ctor.
-  static_assert(!__is_trivially_constructible(Test, Test &&), "");
-
-  struct HasAccessibleDestructor { ~HasAccessibleDestructor() = default; };
-  struct HasImplicitlyDefaultedDestructor : HasAccessibleDestructor {};
-  struct HasImplicitlyDefaultedCopyCtor : HasImplicitlyDefaultedDestructor {
-    template<typename T> HasImplicitlyDefaultedCopyCtor(T &&);
-    // Copy ctor is trivial.
-    // Move ctor is trivial.
-  };
-  struct Test2 : HasImplicitlyDefaultedCopyCtor {};
-  // Implicit copy ctor calls trivial copy ctor.
-  static_assert(__has_trivial_copy(Test2), "");
-  static_assert(__is_trivially_constructible(Test2, const Test2 &), "");
-  // Implicit move ctor calls trivial move ctor.
-  static_assert(__is_trivially_constructible(Test2, Test2 &&), "");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p13-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p13-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p13-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// If the implicitly-defined constructor would satisfy the requirements of a
-// constexpr constructor, the implicitly-defined constructor is constexpr.
-struct Constexpr1 {
-  constexpr Constexpr1() : n(0) {}
-  int n;
-};
-constexpr Constexpr1 c1a = Constexpr1(Constexpr1()); // ok
-constexpr Constexpr1 c1b = Constexpr1(Constexpr1(c1a)); // ok
-
-struct Constexpr2 {
-  Constexpr1 ce1;
-  constexpr Constexpr2() = default;
-  constexpr Constexpr2(const Constexpr2 &o) : ce1(o.ce1) {}
-  // no move constructor
-};
-
-constexpr Constexpr2 c2a = Constexpr2(Constexpr2()); // ok
-constexpr Constexpr2 c2b = Constexpr2(Constexpr2(c2a)); // ok
-
-struct Constexpr3 {
-  Constexpr2 ce2;
-  // all special constructors are constexpr, move ctor calls ce2's copy ctor
-};
-
-constexpr Constexpr3 c3a = Constexpr3(Constexpr3()); // ok
-constexpr Constexpr3 c3b = Constexpr3(Constexpr3(c3a)); // ok
-
-struct NonConstexprCopy {
-  constexpr NonConstexprCopy() = default;
-  NonConstexprCopy(const NonConstexprCopy &);
-  constexpr NonConstexprCopy(NonConstexprCopy &&) = default;
-
-  int n = 42;
-};
-
-NonConstexprCopy::NonConstexprCopy(const NonConstexprCopy &) = default; // expected-note {{here}}
-
-constexpr NonConstexprCopy ncc1 = NonConstexprCopy(NonConstexprCopy()); // ok
-constexpr NonConstexprCopy ncc2 = ncc1; // expected-error {{constant expression}} expected-note {{non-constexpr constructor}}
-
-struct NonConstexprDefault {
-  NonConstexprDefault() = default;
-  constexpr NonConstexprDefault(int n) : n(n) {}
-  int n;
-};
-struct Constexpr4 {
-  NonConstexprDefault ncd;
-};
-
-constexpr NonConstexprDefault ncd = NonConstexprDefault(NonConstexprDefault(1));
-constexpr Constexpr4 c4a = { ncd };
-constexpr Constexpr4 c4b = Constexpr4(c4a);
-constexpr Constexpr4 c4c = Constexpr4(static_cast<Constexpr4&&>(const_cast<Constexpr4&>(c4b)));
-
-struct Constexpr5Base {};
-struct Constexpr5 : Constexpr5Base { constexpr Constexpr5() {} };
-constexpr Constexpr5 ce5move = Constexpr5();
-constexpr Constexpr5 ce5copy = ce5move;
-
-// An explicitly-defaulted constructor doesn't become constexpr until the end of
-// its class. Make sure we note that the class has a constexpr constructor when
-// that happens.
-namespace PR13052 {
-  template<typename T> struct S {
-    S() = default; // expected-note 2{{here}}
-    S(S&&) = default;
-    S(const S&) = default;
-    T t;
-  };
-
-  struct U {
-    U() = default;
-    U(U&&) = default;
-    U(const U&) = default;
-  };
-
-  struct V {
-    V(); // expected-note {{here}}
-    V(V&&) = default;
-    V(const V&) = default;
-  };
-
-  struct W {
-    W(); // expected-note {{here}}
-  };
-
-  static_assert(__is_literal_type(U), "");
-  static_assert(!__is_literal_type(V), "");
-  static_assert(!__is_literal_type(W), "");
-  static_assert(__is_literal_type(S<U>), "");
-  static_assert(!__is_literal_type(S<V>), "");
-  static_assert(!__is_literal_type(S<W>), "");
-
-  struct X {
-    friend constexpr U::U() noexcept;
-    friend constexpr U::U(U&&) noexcept;
-    friend constexpr U::U(const U&) noexcept;
-    friend constexpr V::V(); // expected-error {{follows non-constexpr declaration}}
-    friend constexpr V::V(V&&) noexcept;
-    friend constexpr V::V(const V&) noexcept;
-    friend constexpr W::W(); // expected-error {{follows non-constexpr declaration}}
-    friend constexpr W::W(W&&) noexcept;
-    friend constexpr W::W(const W&) noexcept;
-    friend constexpr S<U>::S() noexcept;
-    friend constexpr S<U>::S(S<U>&&) noexcept;
-    friend constexpr S<U>::S(const S<U>&) noexcept;
-    friend constexpr S<V>::S(); // expected-error {{follows non-constexpr declaration}}
-    friend constexpr S<V>::S(S<V>&&) noexcept;
-    friend constexpr S<V>::S(const S<V>&) noexcept;
-    friend constexpr S<W>::S(); // expected-error {{follows non-constexpr declaration}}
-    friend constexpr S<W>::S(S<W>&&) noexcept;
-    friend constexpr S<W>::S(const S<W>&) noexcept;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p15-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p15-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p15-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-// expected-no-diagnostics
-
-namespace PR10622 {
-  struct foo {
-    const int first;
-    foo(const foo&) = default;
-  };
-  void find_or_insert(const foo& __obj) {
-    foo x(__obj);
-  }
-
-  struct bar : foo {
-    bar(const bar&) = default;
-  };
-  void test_bar(const bar &obj) {
-    bar obj2(obj);
-  }
-}
-
-namespace PR11418 {
-  template<typename T>
-  T may_throw() {
-    return T();
-  }
-
-  template<typename T> T &&declval() noexcept;
-
-  struct NonPOD {
-    NonPOD();
-    NonPOD(const NonPOD &) noexcept;
-    NonPOD(NonPOD &&) noexcept;
-  };
-
-  struct X {
-    NonPOD np = may_throw<NonPOD>();
-  };
-
-  static_assert(noexcept(declval<X>()), "noexcept isn't working at all");
-  static_assert(noexcept(X(declval<X&>())), "copy constructor can't throw");
-  static_assert(noexcept(X(declval<X>())), "move constructor can't throw");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p15-inclass.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p15-inclass.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p15-inclass.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm -o - %s | FileCheck %s
-
-namespace PR11418 {
-  struct NonPOD {
-    NonPOD();
-    NonPOD(const NonPOD &);
-    NonPOD(NonPOD &&);
-  };
-
-  struct X {
-    NonPOD np;
-    int a = 17;
-  };
-
-  void check_copy(X x) {
-    X x2(x);
-  }
-
-  void check_move(X x) {
-    X x3(static_cast<X&&>(x));
-  }
-
-  // CHECK: define linkonce_odr void @_ZN7PR114181XC2EOS0_
-  // CHECK-NOT: 17
-  // CHECK: call void @_ZN7PR114186NonPODC1EOS0_
-  // CHECK-NOT: 17
-  // CHECK: load i32* 
-  // CHECK-NOT: 17
-  // CHECK: store i32
-  // CHECK-NOT: 17
-  // CHECK: ret
-
-  // CHECK: define linkonce_odr void @_ZN7PR114181XC2ERKS0_
-  // CHECK-NOT: 17
-  // CHECK: call void @_ZN7PR114186NonPODC1ERKS0_
-  // CHECK-NOT: 17
-  // CHECK: load i32* 
-  // CHECK-NOT: 17
-  // CHECK: store i32
-  // CHECK-NOT: 17
-  // CHECK: ret
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p18-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p18-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p18-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-// expected-no-diagnostics
-
-// C++98 [class.copy]p10 / C++11 [class.copy]p18.
-
-// The implicitly-declared copy assignment operator for a class X will have the form
-//   X& X::operator=(const X&)
-// if [every direct subobject] has a copy assignment operator whose first parameter is
-// of type 'const volatile[opt] T &' or 'T'. Otherwise, it will have the form
-//   X &X::operator=(X&)
-
-struct ConstCopy {
-  ConstCopy &operator=(const ConstCopy &);
-};
-
-struct NonConstCopy {
-  NonConstCopy &operator=(NonConstCopy &);
-};
-
-struct DeletedConstCopy {
-  DeletedConstCopy &operator=(const DeletedConstCopy &) = delete;
-};
-
-struct DeletedNonConstCopy {
-  DeletedNonConstCopy &operator=(DeletedNonConstCopy &) = delete;
-};
-
-struct ImplicitlyDeletedConstCopy {
-  ImplicitlyDeletedConstCopy &operator=(ImplicitlyDeletedConstCopy &&);
-};
-
-struct ByValueCopy {
-  ByValueCopy &operator=(ByValueCopy);
-};
-
-struct AmbiguousConstCopy {
-  AmbiguousConstCopy &operator=(const AmbiguousConstCopy&);
-  AmbiguousConstCopy &operator=(AmbiguousConstCopy);
-};
-
-
-struct A : ConstCopy {};
-struct B : NonConstCopy { ConstCopy a; };
-struct C : ConstCopy { NonConstCopy a; };
-struct D : DeletedConstCopy {};
-struct E : DeletedNonConstCopy {};
-struct F { ImplicitlyDeletedConstCopy a; };
-struct G : virtual B {};
-struct H : ByValueCopy {};
-struct I : AmbiguousConstCopy {};
-
-struct Test {
-  friend A &A::operator=(const A &);
-  friend B &B::operator=(B &);
-  friend C &C::operator=(C &);
-  friend D &D::operator=(const D &);
-  friend E &E::operator=(E &);
-  friend F &F::operator=(const F &);
-  friend G &G::operator=(G &);
-  friend H &H::operator=(const H &);
-  friend I &I::operator=(const I &);
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p20.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p20.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p20.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct ConstCopy {
-  ConstCopy();
-  ConstCopy &operator=(const ConstCopy&);
-};
-
-struct NonConstCopy {
-  NonConstCopy();
-  NonConstCopy &operator=(NonConstCopy&);
-};
-
-struct VirtualInheritsNonConstCopy : virtual NonConstCopy { 
-  VirtualInheritsNonConstCopy();
-  VirtualInheritsNonConstCopy &operator=(const VirtualInheritsNonConstCopy&);
-};
-
-struct ImplicitNonConstCopy1 : NonConstCopy {  // expected-note{{the implicit copy assignment operator}}
-  ImplicitNonConstCopy1();
-};
-
-struct ImplicitNonConstCopy2 { // expected-note{{the implicit copy assignment operator}}
-  ImplicitNonConstCopy2();
-  NonConstCopy ncc;
-};
-
-struct ImplicitNonConstCopy3 { // expected-note{{the implicit copy assignment operator}}
-  ImplicitNonConstCopy3();
-  NonConstCopy ncc_array[2][3];
-};
-
-struct ImplicitNonConstCopy4 : VirtualInheritsNonConstCopy { 
-  ImplicitNonConstCopy4();
-};
-
-void test_non_const_copy(const ImplicitNonConstCopy1 &cincc1,
-                         const ImplicitNonConstCopy2 &cincc2,
-                         const ImplicitNonConstCopy3 &cincc3,
-                         const ImplicitNonConstCopy4 &cincc4,
-                         const VirtualInheritsNonConstCopy &vincc) {
-  (void)sizeof(ImplicitNonConstCopy1() = cincc1); // expected-error{{no viable overloaded '='}}
-  (void)sizeof(ImplicitNonConstCopy2() = cincc2); // expected-error{{no viable overloaded '='}}
-  (void)sizeof(ImplicitNonConstCopy3() = cincc3); // expected-error{{no viable overloaded '='}}
-  (void)sizeof(ImplicitNonConstCopy4() = cincc4); // okay
-  (void)sizeof(VirtualInheritsNonConstCopy() = vincc);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p23-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p23-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p23-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,148 +0,0 @@
-// RUN: %clang_cc1 -verify %s -std=c++11
-
-template<typename T> struct CopyAssign {
-  static T t;
-  void test() {
-    t = t; // expected-error +{{deleted}}
-  }
-};
-template<typename T> struct MoveAssign {
-  static T t;
-  void test() {
-    t = static_cast<T&&>(t); // expected-error +{{deleted}}
-  }
-};
-
-struct NonTrivialCopyAssign {
-  NonTrivialCopyAssign &operator=(const NonTrivialCopyAssign &);
-};
-struct NonTrivialMoveAssign {
-  NonTrivialMoveAssign &operator=(NonTrivialMoveAssign &&);
-};
-struct AmbiguousCopyAssign {
-  AmbiguousCopyAssign &operator=(const AmbiguousCopyAssign &);
-  AmbiguousCopyAssign &operator=(volatile AmbiguousCopyAssign &);
-};
-struct AmbiguousMoveAssign {
-  AmbiguousMoveAssign &operator=(const AmbiguousMoveAssign &&);
-  AmbiguousMoveAssign &operator=(volatile AmbiguousMoveAssign &&);
-};
-struct DeletedCopyAssign {
-  DeletedCopyAssign &operator=(const DeletedCopyAssign &) = delete; // expected-note 2{{deleted}}
-};
-struct DeletedMoveAssign {
-  DeletedMoveAssign &operator=(DeletedMoveAssign &&) = delete; // expected-note 2{{deleted}}
-};
-class InaccessibleCopyAssign {
-  InaccessibleCopyAssign &operator=(const InaccessibleCopyAssign &);
-};
-class InaccessibleMoveAssign {
-  InaccessibleMoveAssign &operator=(InaccessibleMoveAssign &&);
-};
-
-// A defaulted copy/move assignment operator for class X is defined as deleted
-// if X has:
-
-//   -- a variant member with a non-trivial corresponding assignment operator
-//      and X is a union-like class
-struct A1 {
-  union {
-    NonTrivialCopyAssign x; // expected-note {{variant field 'x' has a non-trivial copy assign}}
-  };
-};
-template struct CopyAssign<A1>; // expected-note {{here}}
-
-struct A2 {
-  A2 &operator=(A2 &&) = default; // expected-note {{here}}
-  union {
-    NonTrivialMoveAssign x; // expected-note {{variant field 'x' has a non-trivial move assign}}
-  };
-};
-template struct MoveAssign<A2>; // expected-note {{here}}
-
-//   -- a non-static const data member of (array of) non-class type
-struct B1 {
-  const int a; // expected-note 2{{field 'a' is of const-qualified type}}
-};
-struct B2 {
-  const void *const a[3][9][2]; // expected-note 2{{field 'a' is of const-qualified type 'const void *const [3][9][2]'}}
-};
-struct B3 {
-  const void *a[3];
-};
-template struct CopyAssign<B1>; // expected-note {{here}}
-template struct MoveAssign<B1>; // expected-note {{here}}
-template struct CopyAssign<B2>; // expected-note {{here}}
-template struct MoveAssign<B2>; // expected-note {{here}}
-template struct CopyAssign<B3>;
-template struct MoveAssign<B3>;
-
-//   -- a non-static data member of reference type
-struct C1 {
-  int &a; // expected-note 2{{field 'a' is of reference type 'int &'}}
-};
-template struct CopyAssign<C1>; // expected-note {{here}}
-template struct MoveAssign<C1>; // expected-note {{here}}
-
-//   -- a non-static data member of class type M that cannot be copied/moved
-struct D1 {
-  AmbiguousCopyAssign a; // expected-note {{field 'a' has multiple copy}}
-};
-struct D2 {
-  D2 &operator=(D2 &&) = default; // expected-note {{here}}
-  AmbiguousMoveAssign a; // expected-note {{field 'a' has multiple move}}
-};
-struct D3 {
-  DeletedCopyAssign a; // expected-note {{field 'a' has a deleted copy}}
-};
-struct D4 {
-  D4 &operator=(D4 &&) = default; // expected-note {{here}}
-  DeletedMoveAssign a; // expected-note {{field 'a' has a deleted move}}
-};
-struct D5 {
-  InaccessibleCopyAssign a; // expected-note {{field 'a' has an inaccessible copy}}
-};
-struct D6 {
-  D6 &operator=(D6 &&) = default; // expected-note {{here}}
-  InaccessibleMoveAssign a; // expected-note {{field 'a' has an inaccessible move}}
-};
-template struct CopyAssign<D1>; // expected-note {{here}}
-template struct MoveAssign<D2>; // expected-note {{here}}
-template struct CopyAssign<D3>; // expected-note {{here}}
-template struct MoveAssign<D4>; // expected-note {{here}}
-template struct CopyAssign<D5>; // expected-note {{here}}
-template struct MoveAssign<D6>; // expected-note {{here}}
-
-//   -- a direct or virtual base that cannot be copied/moved
-struct E1 : AmbiguousCopyAssign {}; // expected-note {{base class 'AmbiguousCopyAssign' has multiple copy}}
-struct E2 : AmbiguousMoveAssign { // expected-note {{base class 'AmbiguousMoveAssign' has multiple move}}
-  E2 &operator=(E2 &&) = default; // expected-note {{here}}
-};
-struct E3 : DeletedCopyAssign {}; // expected-note {{base class 'DeletedCopyAssign' has a deleted copy}}
-struct E4 : DeletedMoveAssign { // expected-note {{base class 'DeletedMoveAssign' has a deleted move}}
-  E4 &operator=(E4 &&) = default; // expected-note {{here}}
-};
-struct E5 : InaccessibleCopyAssign {}; // expected-note {{base class 'InaccessibleCopyAssign' has an inaccessible copy}}
-struct E6 : InaccessibleMoveAssign { // expected-note {{base class 'InaccessibleMoveAssign' has an inaccessible move}}
-  E6 &operator=(E6 &&) = default; // expected-note {{here}}
-};
-template struct CopyAssign<E1>; // expected-note {{here}}
-template struct MoveAssign<E2>; // expected-note {{here}}
-template struct CopyAssign<E3>; // expected-note {{here}}
-template struct MoveAssign<E4>; // expected-note {{here}}
-template struct CopyAssign<E5>; // expected-note {{here}}
-template struct MoveAssign<E6>; // expected-note {{here}}
-
-namespace PR13381 {
-  struct S {
-    S &operator=(const S&);
-    S &operator=(const volatile S&) = delete; // expected-note{{deleted here}}
-  };
-  struct T {
-    volatile S s; // expected-note{{field 's' has a deleted copy assignment}}
-  };
-  void g() {
-    T t;
-    t = T(); // expected-error{{object of type 'PR13381::T' cannot be assigned because its copy assignment operator is implicitly deleted}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p25-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p25-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p25-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,202 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// expected-no-diagnostics
-
-template<typename T, bool B> struct trivially_assignable_check {
-  static_assert(B == __has_trivial_assign(T), "");
-  static_assert(B == __is_trivially_assignable(T&, T), "");
-  static_assert(B == __is_trivially_assignable(T&, const T &), "");
-  static_assert(B == __is_trivially_assignable(T&, T &&), "");
-  static_assert(B == __is_trivially_assignable(T&&, T), "");
-  static_assert(B == __is_trivially_assignable(T&&, const T &), "");
-  static_assert(B == __is_trivially_assignable(T&&, T &&), "");
-  typedef void type;
-};
-template<typename T> using trivially_assignable =
-  typename trivially_assignable_check<T, true>::type;
-template<typename T> using not_trivially_assignable =
-  typename trivially_assignable_check<T, false>::type;
-
-struct Trivial {};
-using _ = trivially_assignable<Trivial>;
-
-// A copy/move assignment operator for class X is trivial if it is not user-provided,
-struct UserProvided {
-  UserProvided &operator=(const UserProvided &);
-};
-using _ = not_trivially_assignable<UserProvided>;
-
-// its declared parameter type is the same as if it had been implicitly
-// declared,
-struct NonConstCopy {
-  NonConstCopy &operator=(NonConstCopy &) = default;
-};
-using _ = not_trivially_assignable<NonConstCopy>;
-
-// class X has no virtual functions
-struct VFn {
-  virtual void f();
-};
-using _ = not_trivially_assignable<VFn>;
-
-// and no virtual base classes
-struct VBase : virtual Trivial {};
-using _ = not_trivially_assignable<VBase>;
-
-// and the assignment operator selected to copy/move each [direct subobject] is trivial
-struct TemplateCtor {
-  template<typename T> TemplateCtor operator=(T &);
-};
-using _ = trivially_assignable<TemplateCtor>;
-struct TemplateCtorMember {
-  TemplateCtor tc;
-};
-using _ = trivially_assignable<TemplateCtorMember>;
-struct MutableTemplateCtorMember {
-  mutable TemplateCtor mtc;
-};
-static_assert(!__is_trivially_assignable(MutableTemplateCtorMember, const MutableTemplateCtorMember &), "");
-static_assert(__is_trivially_assignable(MutableTemplateCtorMember, MutableTemplateCtorMember &&), "");
-
-// Both trivial and non-trivial special members.
-struct TNT {
-  TNT &operator=(const TNT &) = default; // trivial
-  TNT &operator=(TNT &); // non-trivial
-
-  TNT &operator=(TNT &&) = default; // trivial
-  TNT &operator=(const TNT &&); // non-trivial
-};
-
-static_assert(!__has_trivial_assign(TNT), "lie deliberately for gcc compatibility");
-static_assert(__is_trivially_assignable(TNT, TNT), "");
-static_assert(!__is_trivially_assignable(TNT, TNT &), "");
-static_assert(__is_trivially_assignable(TNT, const TNT &), "");
-static_assert(!__is_trivially_assignable(TNT, volatile TNT &), "");
-static_assert(__is_trivially_assignable(TNT, TNT &&), "");
-static_assert(!__is_trivially_assignable(TNT, const TNT &&), "");
-static_assert(!__is_trivially_assignable(TNT, volatile TNT &&), "");
-
-// This has only trivial special members.
-struct DerivedFromTNT : TNT {};
-
-static_assert(__has_trivial_assign(DerivedFromTNT), "");
-static_assert(__is_trivially_assignable(DerivedFromTNT, DerivedFromTNT), "");
-static_assert(__is_trivially_assignable(DerivedFromTNT, DerivedFromTNT &), "");
-static_assert(__is_trivially_assignable(DerivedFromTNT, const DerivedFromTNT &), "");
-static_assert(!__is_trivially_assignable(DerivedFromTNT, volatile DerivedFromTNT &), "");
-static_assert(__is_trivially_assignable(DerivedFromTNT, DerivedFromTNT &&), "");
-static_assert(__is_trivially_assignable(DerivedFromTNT, const DerivedFromTNT &&), "");
-static_assert(!__is_trivially_assignable(DerivedFromTNT, volatile DerivedFromTNT &&), "");
-
-// This has only trivial special members.
-struct TNTMember {
-  TNT tnt;
-};
-
-static_assert(__has_trivial_assign(TNTMember), "");
-static_assert(__is_trivially_assignable(TNTMember, TNTMember), "");
-static_assert(__is_trivially_assignable(TNTMember, TNTMember &), "");
-static_assert(__is_trivially_assignable(TNTMember, const TNTMember &), "");
-static_assert(!__is_trivially_assignable(TNTMember, volatile TNTMember &), "");
-static_assert(__is_trivially_assignable(TNTMember, TNTMember &&), "");
-static_assert(__is_trivially_assignable(TNTMember, const TNTMember &&), "");
-static_assert(!__is_trivially_assignable(TNTMember, volatile TNTMember &&), "");
-
-struct NCCTNT : NonConstCopy, TNT {};
-
-static_assert(!__has_trivial_assign(NCCTNT), "");
-static_assert(!__is_trivially_assignable(NCCTNT, NCCTNT), "");
-static_assert(!__is_trivially_assignable(NCCTNT, NCCTNT &), "");
-static_assert(!__is_trivially_assignable(NCCTNT, const NCCTNT &), "");
-static_assert(!__is_trivially_assignable(NCCTNT, volatile NCCTNT &), "");
-static_assert(!__is_trivially_assignable(NCCTNT, NCCTNT &&), "");
-static_assert(!__is_trivially_assignable(NCCTNT, const NCCTNT &&), "");
-static_assert(!__is_trivially_assignable(NCCTNT, volatile NCCTNT &&), "");
-
-struct MultipleTrivial {
-  // All four of these are trivial.
-  MultipleTrivial &operator=(const MultipleTrivial &) & = default;
-  MultipleTrivial &operator=(const MultipleTrivial &) && = default;
-  MultipleTrivial &operator=(MultipleTrivial &&) & = default;
-  MultipleTrivial &operator=(MultipleTrivial &&) && = default;
-};
-
-using _ = trivially_assignable<MultipleTrivial>;
-
-struct RefQualifier {
-  RefQualifier &operator=(const RefQualifier &) & = default;
-  RefQualifier &operator=(const RefQualifier &) &&;
-  RefQualifier &operator=(RefQualifier &&) &;
-  RefQualifier &operator=(RefQualifier &&) && = default;
-};
-struct DerivedFromRefQualifier : RefQualifier {
-  // Both of these call the trivial copy operation.
-  DerivedFromRefQualifier &operator=(const DerivedFromRefQualifier &) & = default;
-  DerivedFromRefQualifier &operator=(const DerivedFromRefQualifier &) && = default;
-  // Both of these call the non-trivial move operation.
-  DerivedFromRefQualifier &operator=(DerivedFromRefQualifier &&) & = default;
-  DerivedFromRefQualifier &operator=(DerivedFromRefQualifier &&) && = default;
-};
-static_assert(__is_trivially_assignable(DerivedFromRefQualifier&, const DerivedFromRefQualifier&), "");
-static_assert(__is_trivially_assignable(DerivedFromRefQualifier&&, const DerivedFromRefQualifier&), "");
-static_assert(!__is_trivially_assignable(DerivedFromRefQualifier&, DerivedFromRefQualifier&&), "");
-static_assert(!__is_trivially_assignable(DerivedFromRefQualifier&&, DerivedFromRefQualifier&&), "");
-
-struct TemplateAssignNoMove {
-  TemplateAssignNoMove &operator=(const TemplateAssignNoMove &) = default;
-  template<typename T> TemplateAssignNoMove &operator=(T &&);
-};
-static_assert(__is_trivially_assignable(TemplateAssignNoMove, const TemplateAssignNoMove &), "");
-static_assert(!__is_trivially_assignable(TemplateAssignNoMove, TemplateAssignNoMove &&), "");
-
-struct UseTemplateAssignNoMove {
-  TemplateAssignNoMove tanm;
-};
-static_assert(__is_trivially_assignable(UseTemplateAssignNoMove, const UseTemplateAssignNoMove &), "");
-static_assert(!__is_trivially_assignable(UseTemplateAssignNoMove, UseTemplateAssignNoMove &&), "");
-
-struct TemplateAssignNoMoveSFINAE {
-  TemplateAssignNoMoveSFINAE &operator=(const TemplateAssignNoMoveSFINAE &) = default;
-  template<typename T, typename U = typename T::error> TemplateAssignNoMoveSFINAE &operator=(T &&);
-};
-static_assert(__is_trivially_assignable(TemplateAssignNoMoveSFINAE, const TemplateAssignNoMoveSFINAE &), "");
-static_assert(__is_trivially_assignable(TemplateAssignNoMoveSFINAE, TemplateAssignNoMoveSFINAE &&), "");
-
-struct UseTemplateAssignNoMoveSFINAE {
-  TemplateAssignNoMoveSFINAE tanm;
-};
-static_assert(__is_trivially_assignable(UseTemplateAssignNoMoveSFINAE, const UseTemplateAssignNoMoveSFINAE &), "");
-static_assert(__is_trivially_assignable(UseTemplateAssignNoMoveSFINAE, UseTemplateAssignNoMoveSFINAE &&), "");
-
-namespace TrivialityDependsOnImplicitDeletion {
-  struct PrivateMove {
-    PrivateMove &operator=(const PrivateMove &) = default;
-  private:
-    PrivateMove &operator=(PrivateMove &&);
-    friend class Access;
-  };
-  static_assert(__is_trivially_assignable(PrivateMove, const PrivateMove &), "");
-  static_assert(!__is_trivially_assignable(PrivateMove, PrivateMove &&), "");
-
-  struct NoAccess {
-    PrivateMove pm;
-    // NoAccess's move would be deleted, so is suppressed,
-    // so moves of it use PrivateMove's copy ctor, which is trivial.
-  };
-  static_assert(__is_trivially_assignable(NoAccess, const NoAccess &), "");
-  static_assert(__is_trivially_assignable(NoAccess, NoAccess &&), "");
-  struct TopNoAccess : NoAccess {};
-  static_assert(__is_trivially_assignable(TopNoAccess, const TopNoAccess &), "");
-  static_assert(__is_trivially_assignable(TopNoAccess, TopNoAccess &&), "");
-
-  struct Access {
-    PrivateMove pm;
-    // NoAccess's move would *not* be deleted, so is *not* suppressed,
-    // so moves of it use PrivateMove's move ctor, which is not trivial.
-  };
-  static_assert(__is_trivially_assignable(Access, const Access &), "");
-  static_assert(!__is_trivially_assignable(Access, Access &&), "");
-  struct TopAccess : Access {};
-  static_assert(__is_trivially_assignable(TopAccess, const TopAccess &), "");
-  static_assert(!__is_trivially_assignable(TopAccess, TopAccess &&), "");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p28-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p28-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p28-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -std=c++98 %s -fsyntax-only
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-// In C++11, we must perform overload resolution to determine which function is
-// called by a defaulted assignment operator, and the selected operator might
-// not be a copy or move assignment (it might be a specialization of a templated
-// 'operator=', for instance).
-struct A {
-  A &operator=(const A &);
-
-  template<typename T>
-  A &operator=(T &&) { return T::error; } // expected-error {{no member named 'error' in 'A'}}
-};
-
-struct B : A {
-  B &operator=(B &&);
-};
-
-B &B::operator=(B &&) = default; // expected-note {{here}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-// PR6141
-template<typename T>
-struct X {
-  X();
-  template<typename U> X(X<U>);
-  X(const X<T>&);
-};
-
-void f(X<int>) { }
-
-struct Y : X<int> { };
-struct Z : X<float> { };
-
-// CHECK: define i32 @main()
-int main() {
-  // CHECK: call void @_ZN1YC1Ev
-  // CHECK: call void @_ZN1XIiEC1ERKS0_
-  // CHECK: call void @_Z1f1XIiE
-  f(Y());
-  // CHECK: call void @_ZN1ZC1Ev
-  // CHECK: call void @_ZN1XIfEC1ERKS0_
-  // CHECK: call void @_ZN1XIiEC1IfEES_IT_E
-  // CHECK: call void @_Z1f1XIiE
-  f(Z());
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p33-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p33-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p33-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -std=c++11 -fsyntax-only -verify %s
-class X {
-  X(const X&);
-
-public:
-  X();
-  X(X&&);
-};
-
-X return_by_move(int i, X x) {
-  X x2;
-  if (i == 0)
-    return x;
-  else if (i == 1)
-    return x2;
-  else
-    return x;
-}
-
-void throw_move_only(X x) {
-  X x2;
-  throw x;
-  throw x2;
-}
-  
-namespace PR10142 {
-  struct X {
-    X();
-    X(X&&);
-    X(const X&) = delete; // expected-note 2{{function has been explicitly marked deleted here}}
-  };
-
-  void f(int i) {
-    X x;
-    try {
-      X x2;
-      if (i)
-        throw x2; // okay
-      throw x; // expected-error{{call to deleted constructor of 'PR10142::X'}}
-    } catch (...) {
-    }
-  }
-
-  template<typename T>
-  void f2(int i) {
-    T x;
-    try {
-      T x2;
-      if (i)
-        throw x2; // okay
-      throw x; // expected-error{{call to deleted constructor of 'PR10142::X'}}
-    } catch (...) {
-    }
-  }
-
-  template void f2<X>(int); // expected-note{{in instantiation of function template specialization 'PR10142::f2<PR10142::X>' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p8-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p8-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p8-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-// expected-no-diagnostics
-
-// C++98 [class.copy]p5 / C++11 [class.copy]p8.
-
-// The implicitly-declared copy constructor for a class X will have the form
-//   X::X(const X&)
-// if [every direct subobject] has a copy constructor whose first parameter is
-// of type 'const volatile[opt] T &'. Otherwise, it will have the form
-//   X::X(X&)
-
-struct ConstCopy {
-  ConstCopy(const ConstCopy &);
-};
-
-struct NonConstCopy {
-  NonConstCopy(NonConstCopy &);
-};
-
-struct DeletedConstCopy {
-  DeletedConstCopy(const DeletedConstCopy &) = delete;
-};
-
-struct DeletedNonConstCopy {
-  DeletedNonConstCopy(DeletedNonConstCopy &) = delete;
-};
-
-struct ImplicitlyDeletedConstCopy {
-  ImplicitlyDeletedConstCopy(ImplicitlyDeletedConstCopy &&);
-};
-
-
-struct A : ConstCopy {};
-struct B : NonConstCopy { ConstCopy a; };
-struct C : ConstCopy { NonConstCopy a; };
-struct D : DeletedConstCopy {};
-struct E : DeletedNonConstCopy {};
-struct F { ImplicitlyDeletedConstCopy a; };
-struct G : virtual B {};
-
-struct Test {
-  friend A::A(const A &);
-  friend B::B(B &);
-  friend C::C(C &);
-  friend D::D(const D &);
-  friend E::E(E &);
-  constexpr friend F::F(const F &);
-  friend G::G(G &);
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.copy/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct ConstCopy {
-  ConstCopy();
-  ConstCopy(const ConstCopy&);
-};
-
-struct NonConstCopy {
-  NonConstCopy();
-  NonConstCopy(NonConstCopy&);
-};
-
-struct VirtualInheritsNonConstCopy : virtual NonConstCopy { 
-  VirtualInheritsNonConstCopy();
-  VirtualInheritsNonConstCopy(const VirtualInheritsNonConstCopy&);
-};
-
-struct ImplicitNonConstCopy1 : NonConstCopy { // expected-note {{candidate constructor}}
-  ImplicitNonConstCopy1(); // expected-note {{candidate constructor}}
-};
-
-struct ImplicitNonConstCopy2 { // expected-note {{candidate constructor}}
-  ImplicitNonConstCopy2(); // expected-note {{candidate constructor}}
-  NonConstCopy ncc;
-};
-
-struct ImplicitNonConstCopy3 { // expected-note {{candidate constructor}}
-  ImplicitNonConstCopy3(); // expected-note {{candidate constructor}}
-  NonConstCopy ncc_array[2][3];
-};
-
-struct ImplicitNonConstCopy4 : VirtualInheritsNonConstCopy { // expected-note {{candidate constructor}}
-  ImplicitNonConstCopy4(); // expected-note {{candidate constructor}}
-};
-
-void test_non_const_copy(const ImplicitNonConstCopy1 &cincc1,
-                         const ImplicitNonConstCopy2 &cincc2,
-                         const ImplicitNonConstCopy3 &cincc3,
-                         const ImplicitNonConstCopy4 &cincc4) {
-  (void)sizeof(ImplicitNonConstCopy1(cincc1)); // expected-error{{no matching conversion for functional-style cast from 'const ImplicitNonConstCopy1' to 'ImplicitNonConstCopy1'}}
-  (void)sizeof(ImplicitNonConstCopy2(cincc2)); // expected-error{{no matching conversion for functional-style cast from 'const ImplicitNonConstCopy2' to 'ImplicitNonConstCopy2'}}
-  (void)sizeof(ImplicitNonConstCopy3(cincc3)); // expected-error{{no matching conversion for functional-style cast from 'const ImplicitNonConstCopy3' to 'ImplicitNonConstCopy3'}}
-  (void)sizeof(ImplicitNonConstCopy4(cincc4)); // expected-error{{no matching conversion for functional-style cast from 'const ImplicitNonConstCopy4' to 'ImplicitNonConstCopy4'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct X0 {
-  struct type { };
-
-  X0();
-  X0(int);
-  (X0)(float);
-  X0 (f0)(int);
-  X0 (f0)(type);
-  
-  X0 f1();
-  X0 f1(double);
-};
-
-X0::X0() { }
-(X0::X0)(int) { }
-
-X0 (X0::f0)(int) { return X0(); }
-
-template<typename T>
-struct X1 {
-  struct type { };
-
-  X1<T>();
-  X1<T>(int);
-  (X1<T>)(float);
-  X1(float, float);
-  (X1)(double);
-  X1<T> (f0)(int);
-  X1<T> (f0)(type);
-  X1 (f1)(int);
-  X1 (f1)(type);
-
-  template<typename U> X1(U);
-  X1 f2();
-  X1 f2(int);
-};
-
-template<typename T> X1<T>::X1() { }
-template<typename T> (X1<T>::X1)(double) { }
-template<typename T> X1<T> X1<T>::f1(int) { return 0; }
-template<typename T> X1<T> (X1<T>::f1)(type) { return 0; }
-
-class X2 {
-  X2::X2(); // expected-error {{extra qualification on member 'X2'}}
-};
-
-// We used to parse 'X3::X3' as a member function declaration.
-// DR 1435 and DR 1310 made this invalid.
-typedef int T1;
-struct X3 {
-  X3::X3(T1()); // expected-error {{extra qualification on member 'X3'}}
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p4-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p4-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p4-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// A constructor shall not be declared with a ref-qualifier.
-struct X {
-  X() &; // expected-error{{ref-qualifier '&' is not allowed on a constructor}}
-  X(int) &&; // expected-error{{ref-qualifier '&&' is not allowed on a constructor}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p5-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p5-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p5-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,209 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-struct DefaultedDefCtor1 {};
-struct DefaultedDefCtor2 { DefaultedDefCtor2() = default; };
-struct DeletedDefCtor { DeletedDefCtor() = delete; DeletedDefCtor(int); }; // expected-note {{explicitly marked deleted here}}
-class PrivateDefCtor { PrivateDefCtor() = default; public: PrivateDefCtor(int); };
-struct DeletedDtor { ~DeletedDtor() = delete; }; // expected-note 4{{explicitly marked deleted here}}
-class PrivateDtor { ~PrivateDtor() = default; };
-class Friend {
-  Friend() = default; ~Friend() = default;
-  friend struct NotDeleted6c;
-  friend struct NotDeleted7i;
-  friend struct NotDeleted7j;
-  friend struct NotDeleted7k;
-};
-struct UserProvidedDefCtor { UserProvidedDefCtor() {} };
-int n;
-
-
-// A defaulted default constructor for a class X is defined as deleted if:
-
-// - X is a union-like class that has a variant member with a non-trivial
-// default constructor,
-union Deleted1a { UserProvidedDefCtor u; }; // expected-note {{default constructor of 'Deleted1a' is implicitly deleted because variant field 'u' has a non-trivial default constructor}}
-Deleted1a d1a; // expected-error {{implicitly-deleted default constructor}}
-union NotDeleted1a { DefaultedDefCtor1 nu; };
-NotDeleted1a nd1a;
-union NotDeleted1b { DefaultedDefCtor2 nu; };
-NotDeleted1b nd1b;
-
-// - any non-static data member with no brace-or-equal-initializer is of
-// reference type,
-class Deleted2a {
-  Deleted2a() = default;  // expected-note 4{{implicitly deleted here}}
-  int &a; // expected-note 4{{because field 'a' of reference type 'int &' would not be initialized}}
-};
-Deleted2a d2a; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted2b {
-  int &&b; // expected-note {{default constructor of 'Deleted2b' is implicitly deleted because field 'b' of reference type 'int &&' would not be initialized}}
-};
-Deleted2b d2b; // expected-error {{deleted default constructor}}
-class NotDeleted2a { int &a = n; };
-NotDeleted2a nd2a;
-class NotDeleted2b { int &a = error; }; // expected-error {{undeclared identifier}}
-NotDeleted2b nd2b;
-class NotDeleted2c { int &&a = 0; };
-NotDeleted2c nd2c;
-
-// - any non-variant non-static data member of const qualified type (or array
-// thereof) with no brace-or-equal-initializer does not have a user-provided
-// default constructor,
-class Deleted3a { const int a; }; // expected-note {{because field 'a' of const-qualified type 'const int' would not be initialized}} \
-                                     expected-warning {{does not declare any constructor}} \
-                                     expected-note {{will never be initialized}}
-Deleted3a d3a; // expected-error {{implicitly-deleted default constructor}}
-class Deleted3b { const DefaultedDefCtor1 a[42]; }; // expected-note {{because field 'a' of const-qualified type 'const DefaultedDefCtor1 [42]' would not be initialized}}
-Deleted3b d3b; // expected-error {{implicitly-deleted default constructor}}
-class Deleted3c { const DefaultedDefCtor2 a; }; // expected-note {{because field 'a' of const-qualified type 'const DefaultedDefCtor2' would not be initialized}}
-Deleted3c d3c; // expected-error {{implicitly-deleted default constructor}}
-class NotDeleted3a { const int a = 0; };
-NotDeleted3a nd3a;
-class NotDeleted3b { const DefaultedDefCtor1 a[42] = {}; };
-NotDeleted3b nd3b;
-class NotDeleted3c { const DefaultedDefCtor2 a = DefaultedDefCtor2(); };
-NotDeleted3c nd3c;
-union NotDeleted3d { const int a; int b; };
-NotDeleted3d nd3d;
-union NotDeleted3e { const DefaultedDefCtor1 a[42]; int b; };
-NotDeleted3e nd3e;
-union NotDeleted3f { const DefaultedDefCtor2 a; int b; };
-NotDeleted3f nd3f;
-struct NotDeleted3g { union { const int a; int b; }; };
-NotDeleted3g nd3g;
-
-// - X is a union and all of its variant members are of const-qualified type (or
-// array thereof),
-union Deleted4a {
-  const int a;
-  const int b;
-  const UserProvidedDefCtor c; // expected-note {{because variant field 'c' has a non-trivial default constructor}}
-};
-Deleted4a d4a; // expected-error {{implicitly-deleted default constructor}}
-union NotDeleted4a { const int a; int b; };
-NotDeleted4a nd4a;
-
-// - X is a non-union class and all members of any anonymous union member are of
-// const-qualified type (or array thereof),
-struct Deleted5a {
-  union { const int a; }; // expected-note {{because all data members of an anonymous union member are const-qualified}}
-  union { int b; };
-};
-Deleted5a d5a; // expected-error {{implicitly-deleted default constructor}}
-struct NotDeleted5a { union { const int a; int b; }; union { const int c; int d; }; };
-NotDeleted5a nd5a;
-
-// - any direct or virtual base class, or non-static data member with no
-// brace-or-equal-initializer, has class type M (or array thereof) and either
-// M has no default constructor or overload resolution as applied to M's default
-// constructor results in an ambiguity or in a function that is deleted or
-// inaccessible from the defaulted default constructor, or
-struct Deleted6a : Deleted2a {}; // expected-note {{because base class 'Deleted2a' has a deleted default constructor}}
-Deleted6a d6a; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted6b : virtual Deleted2a {}; // expected-note {{because base class 'Deleted2a' has a deleted default constructor}}
-Deleted6b d6b; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted6c { Deleted2a a; }; // expected-note {{because field 'a' has a deleted default constructor}}
-Deleted6c d6c; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted6d { DeletedDefCtor a; }; // expected-note {{because field 'a' has a deleted default constructor}}
-Deleted6d d6d; // expected-error {{implicitly-deleted default constructor}}
-struct NotDeleted6a { DeletedDefCtor a = 0; };
-NotDeleted6a nd6a;
-struct Deleted6e { PrivateDefCtor a; }; // expected-note {{because field 'a' has an inaccessible default constructor}}
-Deleted6e d6e; // expected-error {{implicitly-deleted default constructor}}
-struct NotDeleted6b { PrivateDefCtor a = 0; };
-NotDeleted6b nd6b;
-struct NotDeleted6c { Friend a; };
-NotDeleted6c nd6c;
-
-// - any direct or virtual base class or non-static data member has a type with
-// a destructor that is deleted or inaccessible from the defaulted default
-// constructor.
-struct Deleted7a : DeletedDtor {}; // expected-note {{because base class 'DeletedDtor' has a deleted destructor}}
-Deleted7a d7a; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted7b : virtual DeletedDtor {}; // expected-note {{because base class 'DeletedDtor' has a deleted destructor}}
-Deleted7b d7b; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted7c { DeletedDtor a; }; // expected-note {{because field 'a' has a deleted destructor}}
-Deleted7c d7c; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted7d { DeletedDtor a = {}; }; // expected-note {{because field 'a' has a deleted destructor}}
-Deleted7d d7d; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted7e : PrivateDtor {}; // expected-note {{base class 'PrivateDtor' has an inaccessible destructor}}
-Deleted7e d7e; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted7f : virtual PrivateDtor {}; // expected-note {{base class 'PrivateDtor' has an inaccessible destructor}}
-Deleted7f d7f; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted7g { PrivateDtor a; }; // expected-note {{field 'a' has an inaccessible destructor}}
-Deleted7g d7g; // expected-error {{implicitly-deleted default constructor}}
-struct Deleted7h { PrivateDtor a = {}; }; // expected-note {{field 'a' has an inaccessible destructor}}
-Deleted7h d7h; // expected-error {{implicitly-deleted default constructor}}
-struct NotDeleted7i : Friend {};
-NotDeleted7i d7i;
-struct NotDeleted7j : virtual Friend {};
-NotDeleted7j d7j;
-struct NotDeleted7k { Friend a; };
-NotDeleted7k d7k;
-
-
-class Trivial { static const int n = 42; };
-static_assert(__has_trivial_constructor(Trivial), "Trivial is nontrivial");
-
-// A default constructor is trivial if it is not user-provided and if:
-class NonTrivialDefCtor1 { NonTrivialDefCtor1(); };
-static_assert(!__has_trivial_constructor(NonTrivialDefCtor1), "NonTrivialDefCtor1 is trivial");
-
-#define ASSERT_NONTRIVIAL_IMPL(Class, Bases, Body) \
-  class Class Bases { Body }; \
-  static_assert(!__has_trivial_constructor(Class), "");
-#define ASSERT_NONTRIVIAL(Class, Bases, Body) \
-  ASSERT_NONTRIVIAL_IMPL(Class, Bases, Body) \
-  ASSERT_NONTRIVIAL_IMPL(Def ## Class, Bases, Def ## Class() = default; Body) \
-  ASSERT_NONTRIVIAL_IMPL(Del ## Class, Bases, Del ## Class() = delete; Body)
-
-// - its class has no virtual functions (10.3) and no virtual base classes (10.1), and
-ASSERT_NONTRIVIAL(NonTrivialDefCtor2, , virtual void f();)
-ASSERT_NONTRIVIAL(NonTrivialDefCtor3, : virtual Trivial, )
-
-// - no non-static data member of its class has a brace-or-equal-initializer, and
-ASSERT_NONTRIVIAL(NonTrivialDefCtor4, , int m = 52;)
-
-// - all the direct base classes of its class have trivial default constructors, and
-ASSERT_NONTRIVIAL(NonTrivialDefCtor5, : NonTrivialDefCtor1, )
-
-// - for all the non-static data members of its class that are of class type (or array thereof), each such class
-// has a trivial default constructor.
-ASSERT_NONTRIVIAL(NonTrivialDefCtor6, , NonTrivialDefCtor1 t;)
-
-// FIXME: No core issue number yet.
-// - its parameter-declaration-clause is equivalent to that of an implicit declaration.
-struct NonTrivialDefCtor7 {
-  NonTrivialDefCtor7(...) = delete;
-};
-static_assert(!__has_trivial_constructor(NonTrivialDefCtor7), "");
-struct NonTrivialDefCtor8 {
-  NonTrivialDefCtor8(int = 0) = delete;
-};
-static_assert(!__has_trivial_constructor(NonTrivialDefCtor8), "");
-
-// Otherwise, the default constructor is non-trivial.
-
-class Trivial2 { Trivial2() = delete; };
-static_assert(__has_trivial_constructor(Trivial2), "Trivial2 is trivial");
-
-class Trivial3 { Trivial3() = default; };
-static_assert(__has_trivial_constructor(Trivial3), "Trivial3 is trivial");
-
-template<typename T> class Trivial4 { Trivial4() = default; };
-static_assert(__has_trivial_constructor(Trivial4<int>), "Trivial4 is trivial");
-
-template<typename T> class Trivial5 { Trivial5() = delete; };
-static_assert(__has_trivial_constructor(Trivial5<int>), "Trivial5 is trivial");
-
-namespace PR14558 {
-  // Ensure we determine whether an explicitly-defaulted or deleted special
-  // member is trivial before we return to parsing the containing class.
-  struct A {
-    struct B { B() = default; } b;
-    struct C { C() = delete; } c;
-  };
-
-  static_assert(__has_trivial_constructor(A), "");
-  static_assert(__has_trivial_constructor(A::B), "");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p6-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p6-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.ctor/p6-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-// Implicitly-defined default constructors are constexpr if the implicit
-// definition would be.
-struct NonConstexpr1 { // expected-note {{here}}
-  int a;
-};
-struct NonConstexpr2 { // expected-note {{here}}
-  NonConstexpr1 nl;
-};
-struct NonConstexpr2a : NonConstexpr1 { };
-constexpr NonConstexpr1 nc1 = NonConstexpr1(); // ok, does not call constructor
-constexpr NonConstexpr2 nc2 = NonConstexpr2(); // ok, does not call constructor
-constexpr NonConstexpr2a nc2a = NonConstexpr2a(); // ok, does not call constructor
-constexpr int nc2_a = NonConstexpr2().nl.a; // ok
-constexpr int nc2a_a = NonConstexpr2a().a; // ok
-struct Helper {
-  friend constexpr NonConstexpr1::NonConstexpr1(); // expected-error {{follows non-constexpr declaration}}
-  friend constexpr NonConstexpr2::NonConstexpr2(); // expected-error {{follows non-constexpr declaration}}
-};
-
-struct Constexpr1 {};
-constexpr Constexpr1 c1 = Constexpr1(); // ok
-struct NonConstexpr3 : virtual Constexpr1 {}; // expected-note {{struct with virtual base}} expected-note {{declared here}}
-constexpr NonConstexpr3 nc3 = NonConstexpr3(); // expected-error {{non-literal type 'const NonConstexpr3'}}
-
-struct Constexpr2 {
-  int a = 0;
-};
-constexpr Constexpr2 c2 = Constexpr2(); // ok
-
-int n;
-struct Member {
-  Member() : a(n) {}
-  constexpr Member(int&a) : a(a) {}
-  int &a;
-};
-struct NonConstexpr4 { // expected-note {{here}}
-  Member m;
-};
-constexpr NonConstexpr4 nc4 = NonConstexpr4(); // expected-error {{constant expression}} expected-note {{non-constexpr constructor 'NonConstexpr4'}}
-struct Constexpr3 {
-  constexpr Constexpr3() : m(n) {}
-  Member m;
-};
-constexpr Constexpr3 c3 = Constexpr3(); // ok
-struct Constexpr4 {
-  Constexpr3 m;
-};
-constexpr Constexpr4 c4 = Constexpr4(); // ok
-
-
-// This rule breaks some legal C++98 programs!
-struct A {}; // expected-note {{here}}
-struct B {
-  friend A::A(); // expected-error {{non-constexpr declaration of 'A' follows constexpr declaration}}
-};
-
-namespace UnionCtors {
-  union A { // expected-note {{here}}
-    int a;
-    int b;
-  };
-  union B {
-    int a;
-    int b = 5;
-  };
-  union C {
-    int a = 5;
-    int b;
-  };
-  struct D {
-    union {
-      int a = 5;
-      int b;
-    };
-    union {
-      int c;
-      int d = 5;
-    };
-  };
-  struct E { // expected-note {{here}}
-    union {
-      int a;
-      int b;
-    };
-  };
-
-  struct Test {
-    friend constexpr A::A() noexcept; // expected-error {{follows non-constexpr declaration}}
-    friend constexpr B::B() noexcept;
-    friend constexpr C::C() noexcept;
-    friend constexpr D::D() noexcept;
-    friend constexpr E::E() noexcept; // expected-error {{follows non-constexpr declaration}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p10-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p10-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p10-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// PR10127/N3031
-struct A { ~A(); };
-struct B {};
-template<typename T>
-void b(const T *x, const A *y) {
-  x->~decltype(T())();
-  x->~decltype(*x)(); // expected-error{{the type of object expression ('const int') does not match the type being destroyed ('decltype(*x)' (aka 'const int &')) in pseudo-destructor expression}} \
-                         expected-error{{no member named '~const struct A &' in 'A'}}
-  x->~decltype(int())(); // expected-error{{no member named '~int' in 'A'}}
-
-  y->~decltype(*y)(); // expected-error{{destructor type 'decltype(*y)' (aka 'const A &') in object destruction expression does not match the type 'const A' of the object being destroyed}}
-  y->~decltype(T())(); // expected-error{{destructor type 'decltype(T())' in object destruction expression does not match the type 'const A' of the object being destroyed}}
-  y->~decltype(A())();
-}
-template void b(const int*, const A*); // expected-note{{in instantiation of function template specialization 'b<int>' requested here}}
-template void b(const A*,const A*); // expected-note{{in instantiation of function template specialization 'b<A>' requested here}}
-void a(const A *x, int i, int *pi) {
-  x->~decltype(A())();
-  x->~decltype(*x)(); // expected-error{{destructor type 'decltype(*x)' (aka 'const A &') in object destruction expression does not match the type 'const A' of the object being destroyed}}
-  x->~decltype()(); // expected-error{{expected expression}}
-  x->~decltype(B())(); // expected-error{{destructor type 'decltype(B())' (aka 'B') in object destruction expression does not match the type 'const A' of the object being destroyed}}
-  x->~decltype(x)(); // expected-error{{destructor type 'decltype(x)' (aka 'const A *') in object destruction expression does not match the type 'const A' of the object being destroyed}}
-  // this last one could be better, mentioning that the nested-name-specifier could be removed or a type name after the ~
-  x->::A::~decltype(*x)(); // expected-error{{expected a class name after '~' to name a destructor}}
-  y->~decltype(A())(); // expected-error{{use of undeclared identifier 'y'}}
-
-  typedef int *intp;
-  i->~decltype(int())(); // expected-error{{member reference type 'int' is not a pointer; maybe you meant to use '.'?}}
-  i.~decltype(int())();
-  i->~decltype(intp())(); // expected-error{{member reference type 'int' is not a pointer; maybe you meant to use '.'?}} \
-                             expected-error{{the type of object expression ('int') does not match the type being destroyed ('decltype(intp())' (aka 'int *')) in pseudo-destructor expression}}
-  i.~decltype(intp())(); // expected-error{{the type of object expression ('int') does not match the type being destroyed ('decltype(intp())' (aka 'int *')) in pseudo-destructor expression}}
-  pi->~decltype(int())();
-  pi.~decltype(int())(); // expected-error{{the type of object expression ('int *') does not match the type being destroyed ('decltype(int())' (aka 'int')) in pseudo-destructor expression}}
-  pi.~decltype(intp())();
-  pi->~decltype(intp())(); // expected-error{{the type of object expression ('int') does not match the type being destroyed ('decltype(intp())' (aka 'int *')) in pseudo-destructor expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// A destructor shall not be declared with a ref-qualifier.
-struct X {
-  ~X() &; // expected-error{{ref-qualifier '&' is not allowed on a destructor}}
-};
-
-struct Y {
-  ~Y() &&; // expected-error{{ref-qualifier '&&' is not allowed on a destructor}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR5548
-struct A {~A();};
-void a(const A* x) {
-  x->~A();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,179 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -emit-llvm -o - %s | FileCheck %s
-
-struct A {
-  ~A();
-};
-
-struct B {
-  ~B() throw(int);
-};
-
-struct C {
-  B b;
-  ~C() {}
-};
-
-struct D {
-  ~D() noexcept(false);
-};
-
-struct E {
-  D d;
-  ~E() {}
-};
-
-void foo() {
-  A a;
-  C c;
-  E e;
-  // CHECK: invoke {{.*}} @_ZN1ED1Ev
-  // CHECK: invoke {{.*}} @_ZN1CD1Ev
-  // CHECK: call {{.*}} @_ZN1AD1Ev
-}
-
-struct F {
-  D d;
-  ~F();
-};
-F::~F() noexcept(false) {}
-
-struct G {
-  D d;
-  ~G();
-};
-G::~G() {}
-
-struct H {
-  B b;
-  ~H() throw(int);
-};
-H::~H() throw(int) {}
-
-struct I {
-  B b;
-  ~I();
-};
-I::~I() {}
-
-// Template variants.
-
-template <typename T>
-struct TA {
-  ~TA();
-};
-
-template <typename T>
-struct TB {
-  ~TB() throw(int);
-};
-
-template <typename T>
-struct TC {
-  TB<T> b;
-  ~TC() {}
-};
-
-template <typename T>
-struct TD {
-  ~TD() noexcept(false);
-};
-
-template <typename T>
-struct TE {
-  TD<T> d;
-  ~TE() {}
-};
-
-void tfoo() {
-  TA<int> a;
-  TC<int> c;
-  TE<int> e;
-  // CHECK: invoke {{.*}} @_ZN2TEIiED1Ev
-  // CHECK: invoke {{.*}} @_ZN2TCIiED1Ev
-  // CHECK: call {{.*}} @_ZN2TAIiED1Ev
-}
-
-template <typename T>
-struct TF {
-  TD<T> d;
-  ~TF();
-};
-template <typename T>
-TF<T>::~TF() noexcept(false) {}
-
-template <typename T>
-struct TG {
-  TD<T> d;
-  ~TG();
-};
-template <typename T>
-TG<T>::~TG() {}
-
-template <typename T>
-struct TH {
-  TB<T> b;
-  ~TH();
-};
-template <typename T>
-TH<T>::~TH() {}
-
-void tinst() {
-  TF<int> f;
-  TG<int> g;
-  TH<int> h;
-}
-// CHECK: define linkonce_odr {{.*}} @_ZN2THIiED1Ev
-// CHECK: _ZTIi
-// CHECK: __cxa_call_unexpected
-
-struct VX
-{ virtual ~VX() {} };
-
-struct VY : VX
-{ virtual ~VY() {} };
-
-template<typename T>
-struct TVY : VX
-{ virtual ~TVY() {} };
-
-
-struct VA {
-  B b;
-  virtual ~VA() {}
-};
-
-struct VB : VA
-{ virtual ~VB() {} };
-
-template<typename T>
-struct TVB : VA
-{ virtual ~TVB() {} };
-
-void tinst2() {
-  TVY<int> tvy;
-  TVB<int> tvb;
-}
-
-template <typename T>
-struct Sw {
-  T t;
-  ~Sw() {}
-};
-
-void tsw() {
-  Sw<int> swi;
-  Sw<B> swb;
-}
-// CHECK-NOT: define linkonce_odr {{.*}} @_ZN2SwI1BED1Ev({{.*}} #
-// CHECK: define linkonce_odr {{.*}} @_ZN2SwI1BED1Ev({{.*}}
-// CHECK: _ZTIi
-// CHECK: __cxa_call_unexpected
-// CHECK: define linkonce_odr {{.*}} @_ZN2SwIiED1Ev({{.*}} [[ATTRGRP:#[0-9]+]]
-
-template <typename T>
-struct TVC : VX
-{ virtual ~TVC(); };
-template <typename T>
-TVC<T>::~TVC() {}
-
-// CHECK: attributes [[ATTRGRP]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -verify %s
-
-// The exception specification of a destructor declaration is matched *before*
-// the exception specification adjustment occurs.
-namespace DR1492 {
-  struct A { ~A(); }; // expected-note {{here}}
-  A::~A() noexcept {} // expected-warning {{previously declared with an implicit exception specification}}
-
-  struct B { ~B() noexcept; }; // expected-note {{here}}
-  B::~B() {} // expected-warning {{previously declared with an explicit exception specification}}
-
-  template<typename T> struct C {
-    T t;
-    ~C(); // expected-note {{here}}
-  };
-  template<typename T> C<T>::~C() noexcept {} // expected-error {{does not match previous}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p5-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p5-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p5-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,105 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-struct NonTrivDtor {
-  ~NonTrivDtor();
-};
-struct DeletedDtor {
-  ~DeletedDtor() = delete; // expected-note 5 {{deleted here}}
-};
-class InaccessibleDtor {
-  ~InaccessibleDtor() = default;
-};
-
-// A defaulted destructor for a class X is defined as deleted if:
-
-// -- X is a union-like class that has a variant member with a non-trivial
-// destructor.
-union A1 {
-  A1();
-  NonTrivDtor n; // expected-note {{destructor of 'A1' is implicitly deleted because variant field 'n' has a non-trivial destructor}}
-};
-A1 a1; // expected-error {{deleted function}}
-struct A2 {
-  A2();
-  union {
-    NonTrivDtor n; // expected-note {{because variant field 'n' has a non-trivial destructor}}
-  };
-};
-A2 a2; // expected-error {{deleted function}}
-union A3 {
-  A3();
-  NonTrivDtor n[3]; // expected-note {{because variant field 'n' has a non-trivial destructor}}
-};
-A3 a3; // expected-error {{deleted function}}
-struct A4 {
-  A4();
-  union {
-    NonTrivDtor n[3]; // expected-note {{because variant field 'n' has a non-trivial destructor}}
-  };
-};
-A4 a4; // expected-error {{deleted function}}
-
-// -- any of the non-static data members has class type M (or array thereof) and
-// M has a deleted or inaccessible destructor.
-struct B1 {
-  B1();
-  DeletedDtor a; // expected-note {{because field 'a' has a deleted destructor}}
-};
-B1 b1; // expected-error {{deleted function}}
-struct B2 {
-  B2();
-  InaccessibleDtor a; // expected-note {{because field 'a' has an inaccessible destructor}}
-};
-B2 b2; // expected-error {{deleted function}}
-struct B3 {
-  B3();
-  DeletedDtor a[4]; // expected-note {{because field 'a' has a deleted destructor}}
-};
-B3 b3; // expected-error {{deleted function}}
-struct B4 {
-  B4();
-  InaccessibleDtor a[4]; // expected-note {{because field 'a' has an inaccessible destructor}}
-};
-B4 b4; // expected-error {{deleted function}}
-union B5 {
-  B5();
-  // FIXME: Describe the anonymous union member better than ''.
-  union { // expected-note {{because field '' has a deleted destructor}}
-    DeletedDtor a; // expected-note {{because field 'a' has a deleted destructor}}
-  };
-};
-B5 b5; // expected-error {{deleted function}}
-union B6 {
-  B6();
-  union { // expected-note {{because field '' has a deleted destructor}}
-    InaccessibleDtor a; // expected-note {{because field 'a' has an inaccessible destructor}}
-  };
-};
-B6 b6; // expected-error {{deleted function}}
-
-// -- any direct or virtual base class has a deleted or inaccessible destructor.
-struct C1 : DeletedDtor { C1(); } c1; // expected-error {{deleted function}} expected-note {{base class 'DeletedDtor' has a deleted destructor}}
-struct C2 : InaccessibleDtor { C2(); } c2; // expected-error {{deleted function}} expected-note {{base class 'InaccessibleDtor' has an inaccessible destructor}}
-struct C3 : virtual DeletedDtor { C3(); } c3; // expected-error {{deleted function}} expected-note {{base class 'DeletedDtor' has a deleted destructor}}
-struct C4 : virtual InaccessibleDtor { C4(); } c4; // expected-error {{deleted function}} expected-note {{base class 'InaccessibleDtor' has an inaccessible destructor}}
-
-// -- for a virtual destructor, lookup of the non-array deallocation function
-// results in an ambiguity or a function that is deleted or inaccessible.
-class D1 {
-  void operator delete(void*);
-public:
-  virtual ~D1() = default; // expected-note {{here}}
-} d1; // ok
-struct D2 : D1 { // expected-note {{virtual destructor requires an unambiguous, accessible 'operator delete'}} \
-                 // expected-error {{deleted function '~D2' cannot override a non-deleted}}
-  // implicitly-virtual destructor
-} d2; // expected-error {{deleted function}}
-struct D3 { // expected-note {{virtual destructor requires an unambiguous, accessible 'operator delete'}}
-  virtual ~D3() = default; // expected-note {{explicitly defaulted function was implicitly deleted here}}
-  void operator delete(void*, double = 0.0);
-  void operator delete(void*, char = 0);
-} d3; // expected-error {{deleted function}}
-struct D4 { // expected-note {{virtual destructor requires an unambiguous, accessible 'operator delete'}}
-  virtual ~D4() = default; // expected-note {{implicitly deleted here}}
-  void operator delete(void*) = delete;
-} d4; // expected-error {{deleted function}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.dtor/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef typeof(sizeof(int)) size_t;
-
-// PR7803
-namespace test0 {
-  class A {
-  public:
-    static void operator delete(void *p) {};
-    virtual ~A();
-  };
-
-  class B : protected A {
-  public:
-    ~B();
-  };
-
-  class C : protected B {
-  public:
-    using B::operator delete;
-    ~C();
-  };
-
-  // Shouldn't have an error.
-  C::~C() {}
-}
-
-namespace test1 {
-  class A {
-  public:
-    static void operator delete(void *p) {}; // expected-note {{member 'operator delete' declared here}}
-    virtual ~A();
-  };
-
-  class B : protected A {
-  public:
-    static void operator delete(void *, size_t) {}; // expected-note {{member 'operator delete' declared here}}
-    ~B();
-  };
-
-  class C : protected B {
-  public:
-    using A::operator delete;
-    using B::operator delete;
-
-    ~C();
-  };
-
-  C::~C() {} // expected-error {{multiple suitable 'operator delete' functions in 'C'}}
-}
-
-// ...at the point of definition of a virtual destructor...
-namespace test2 {
-  struct A {
-    virtual ~A();
-    static void operator delete(void*, const int &);
-  };
-
-  struct B {
-    virtual ~B();
-    static void operator delete(void*, const int &); // expected-note {{declared here}}
-  };
-  B::~B() {} // expected-error {{no suitable member 'operator delete' in 'B'}}
-
-  struct CBase { virtual ~CBase(); };
-  struct C : CBase { // expected-error {{no suitable member 'operator delete' in 'C'}}
-    static void operator delete(void*, const int &); // expected-note {{declared here}}
-  };
-  void test() {
-    C c; // expected-note {{first required here}}
-  }
-}
-
-// PR7346
-namespace test3 {
-  struct A {
-    virtual ~A();
-    static void operator delete(void*, const int &);
-  };
-
-  struct B : A {
-    virtual ~B() {}
-    static void operator delete(void*);
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.free/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.free/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.free/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-#include <stddef.h>
-
-struct A {
-  void *operator new(size_t) {
-    return this; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-  }
-  void *operator new[](size_t) {
-    return this; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.free/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.free/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.free/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-#include <stddef.h>
-
-struct A {
-  void operator delete(void*) {
-    (void)this; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-  }
-  void operator delete[](void*) {
-    (void)this; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/elsewhere.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/elsewhere.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/elsewhere.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// Tests related to constructor inheriting, but not specified in [class.inhctor]
-
-// [namespace.udecl]p8:
-//   A using-declaration for a class member shall be a member-declaration.
-
-struct B1 {
-  B1(int);
-};
-
-using B1::B1; // expected-error {{using declaration can not refer to class member}}
-
-// C++11 [namespace.udecl]p10:
-//   A using-declaration is a declaration and can therefore be used repeatedly
-//   where (and only where) multiple declarations are allowed.
-
-struct I1 : B1 {
-  using B1::B1; // expected-note {{previous using declaration}}
-  using B1::B1; // expected-error {{redeclaration of using decl}}
-};
-
-// C++11 [namespace.udecl]p3:
-//   In a using declaration used as a member-declaration, the nested-name-
-//   specifier shall name a base class of the class being defined.
-//   If such a using-declaration names a constructor, the nested-name-specifier
-//   shall name a direct base class of the class being defined.
-
-struct D1 : I1 {
-  using B1::B1; // expected-error {{'B1' is not a direct base of 'D1', can not inherit constructors}}
-};
-
-template<typename T> struct A {};
-
-template<typename T> struct B : A<bool>, A<char> {
-  using A<T>::A; // expected-error {{'A<double>::', which is not a base class of 'B<double>'}}
-};
-B<bool> bb;
-B<char> bc;
-B<double> bd; // expected-note {{here}}
-
-template<typename T> struct C : A<T> {
-  using A<bool>::A; // expected-error {{'A<bool>::', which is not a base class of 'C<char>'}}
-};
-C<bool> cb;
-C<char> cc; // expected-note {{here}}
-
-template<typename T> struct D : A<T> {};
-template<typename T> struct E : D<T> {
-  using A<bool>::A; // expected-error {{'A<bool>' is not a direct base of 'E<bool>', can not inherit}}
-};
-E<bool> eb; // expected-note {{here}}
-
-template<typename T> struct F : D<bool> {
-  using A<T>::A; // expected-error {{'A<bool>' is not a direct base of 'F<bool>'}}
-};
-F<bool> fb; // expected-note {{here}}
-
-template<typename T>
-struct G : T {
-  using T::T;
-  G(int &) : G(0) {}
-};
-G<B1> g(123);

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-// Per a core issue (no number yet), an ellipsis is always dropped.
-struct A {
-  A(...); // expected-note {{here}}
-  A(int = 0, int = 0, int = 0, int = 0, ...); // expected-note 9{{here}}
-  A(int = 0, int = 0, ...); // expected-note {{here}}
-
-  template<typename T> A(T, int = 0, ...); // expected-note 5{{here}}
-
-  template<typename T, int N> A(const T (&)[N]); // expected-note 2{{here}}
-  template<typename T, int N> A(const T (&)[N], int = 0); // expected-note 2{{here}}
-};
-
-struct B : A { // expected-note 6{{candidate}}
-  using A::A; // expected-warning 4{{inheriting constructor does not inherit ellipsis}} expected-note 16{{candidate}} expected-note 3{{deleted}}
-};
-
-struct C {} c;
-
-B b0{};
-// expected-error at -1 {{call to implicitly-deleted default constructor}}
-// expected-note at -8 {{default constructor of 'B' is implicitly deleted because base class 'A' has multiple default constructors}}
-
-B b1{1};
-// FIXME: explain why the inheriting constructor was deleted
-// expected-error at -2 {{call to implicitly-deleted function of 'B'}}
-
-B b2{1,2};
-// expected-error at -1 {{call to implicitly-deleted function of 'B'}}
-
-B b3{1,2,3};
-// ok
-
-B b4{1,2,3,4};
-// ok
-
-B b5{1,2,3,4,5};
-// expected-error at -1 {{no matching constructor for initialization of 'B'}}
-
-B b6{c};
-// ok
-
-B b7{c,0};
-// ok
-
-B b8{c,0,1};
-// expected-error at -1 {{no matching constructor}}
-
-B b9{"foo"};
-// FIXME: explain why the inheriting constructor was deleted
-// expected-error at -2 {{call to deleted constructor of 'B'}}
-
-namespace PR15755 {
-  struct X {
-    template<typename...Ts> X(int, Ts...);
-  };
-  struct Y : X {
-    using X::X;
-  };
-  struct Z : Y {
-    using Y::Y;
-  };
-  Z z(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,121 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-template<int> struct X {};
-
-// Constructor characteristics are:
-//   - the template parameter list
-//   - the parameter-type-list
-//   - absence or presence of explicit
-//   - absence or presence of constexpr
-struct A {
-  A(X<0>) {} // expected-note 2{{here}}
-  constexpr A(X<1>) {}
-  explicit A(X<2>) {} // expected-note 3{{here}}
-  explicit constexpr A(X<3>) {} // expected-note 2{{here}}
-};
-
-A a0 { X<0>{} };
-A a0i = { X<0>{} };
-constexpr A a0c { X<0>{} }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-constexpr A a0ic = { X<0>{} }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-
-A a1 { X<1>{} };
-A a1i = { X<1>{} };
-constexpr A a1c { X<1>{} };
-constexpr A a1ic = { X<1>{} };
-
-A a2 { X<2>{} };
-A a2i = { X<2>{} }; // expected-error {{constructor is explicit}}
-constexpr A a2c { X<2>{} }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-constexpr A a2ic = { X<2>{} }; // expected-error {{constructor is explicit}}
-
-A a3 { X<3>{} };
-A a3i = { X<3>{} }; // expected-error {{constructor is explicit}}
-constexpr A a3c { X<3>{} };
-constexpr A a3ic = { X<3>{} }; // expected-error {{constructor is explicit}}
-
-
-struct B : A {
-  using A::A; // expected-note 7{{here}}
-};
-
-B b0 { X<0>{} };
-B b0i = { X<0>{} };
-constexpr B b0c { X<0>{} }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-constexpr B b0ic = { X<0>{} }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-
-B b1 { X<1>{} };
-B b1i = { X<1>{} };
-constexpr B b1c { X<1>{} };
-constexpr B b1ic = { X<1>{} };
-
-B b2 { X<2>{} };
-B b2i = { X<2>{} }; // expected-error {{constructor is explicit}}
-constexpr B b2c { X<2>{} }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-constexpr B b2ic = { X<2>{} }; // expected-error {{constructor is explicit}}
-
-B b3 { X<3>{} };
-B b3i = { X<3>{} }; // expected-error {{constructor is explicit}}
-constexpr B b3c { X<3>{} };
-constexpr B b3ic = { X<3>{} }; // expected-error {{constructor is explicit}}
-
-
-// 'constexpr' is OK even if the constructor doesn't obey the constraints.
-struct NonLiteral { NonLiteral(); };
-struct NonConstexpr { NonConstexpr(); constexpr NonConstexpr(int); }; // expected-note {{here}}
-struct Constexpr { constexpr Constexpr(int) {} };
-
-struct BothNonLiteral : NonLiteral, Constexpr { using Constexpr::Constexpr; }; // expected-note {{base class 'NonLiteral' of non-literal type}}
-constexpr BothNonLiteral bothNL{42}; // expected-error {{constexpr variable cannot have non-literal type 'const BothNonLiteral'}}
-
-struct BothNonConstexpr : NonConstexpr, Constexpr { using Constexpr::Constexpr; }; // expected-note {{non-constexpr constructor 'NonConstexpr}}
-constexpr BothNonConstexpr bothNC{42}; // expected-error {{must be initialized by a constant expression}} expected-note {{in call to 'BothNonConstexpr(42)'}}
-
-
-struct ConstexprEval {
-  constexpr ConstexprEval(int a, const char *p) : k(p[a]) {}
-  char k;
-};
-struct ConstexprEval2 {
-  char k2 = 'x';
-};
-struct ConstexprEval3 : ConstexprEval, ConstexprEval2 {
-  using ConstexprEval::ConstexprEval;
-};
-constexpr ConstexprEval3 ce{4, "foobar"};
-static_assert(ce.k == 'a', "");
-static_assert(ce.k2 == 'x', "");
-
-
-struct TemplateCtors {
-  constexpr TemplateCtors() {}
-  template<template<int> class T> TemplateCtors(X<0>, T<0>);
-  template<int N> TemplateCtors(X<1>, X<N>);
-  template<typename T> TemplateCtors(X<2>, T);
-
-  template<typename T = int> TemplateCtors(int, int = 0, int = 0); // expected-note {{inherited from here}}
-};
-
-struct UsingTemplateCtors : TemplateCtors {
-  using TemplateCtors::TemplateCtors; // expected-note 4{{here}} expected-note {{candidate}}
-
-  constexpr UsingTemplateCtors(X<0>, X<0>) {}
-  constexpr UsingTemplateCtors(X<1>, X<1>) {}
-  constexpr UsingTemplateCtors(X<2>, X<2>) {}
-
-  template<int = 0> constexpr UsingTemplateCtors(int) {} // expected-note {{candidate}}
-  template<typename T = void> constexpr UsingTemplateCtors(int, int) {}
-  template<typename T, typename U> constexpr UsingTemplateCtors(int, int, int) {}
-};
-
-template<int> struct Y {};
-constexpr UsingTemplateCtors uct1{ X<0>{}, X<0>{} };
-constexpr UsingTemplateCtors uct2{ X<0>{}, Y<0>{} }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-constexpr UsingTemplateCtors uct3{ X<1>{}, X<0>{} }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-constexpr UsingTemplateCtors uct4{ X<1>{}, X<1>{} };
-constexpr UsingTemplateCtors uct5{ X<2>{}, 0 }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}
-constexpr UsingTemplateCtors uct6{ X<2>{}, X<2>{} };
-
-constexpr UsingTemplateCtors utc7{ 0 }; // expected-error {{ambiguous}}
-constexpr UsingTemplateCtors utc8{ 0, 0 }; // ok
-constexpr UsingTemplateCtors utc9{ 0, 0, 0 }; // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct B1 {
-  B1(int);
-  B1(int, int);
-};
-struct D1 : B1 {
-  using B1::B1;
-};
-D1 d1a(1), d1b(1, 1);
-
-D1 fd1() { return 1; }
-
-struct B2 {
-  explicit B2(int, int = 0, int = 0);
-};
-struct D2 : B2 { // expected-note 2 {{candidate constructor}}
-  using B2::B2;
-};
-D2 d2a(1), d2b(1, 1), d2c(1, 1, 1);
-
-D2 fd2() { return 1; } // expected-error {{no viable conversion}}
-
-struct B3 {
-  B3(void*); // expected-note {{inherited from here}}
-};
-struct D3 : B3 { // expected-note 2 {{candidate constructor}}
-  using B3::B3; // expected-note {{candidate constructor (inherited)}}
-};
-D3 fd3() { return 1; } // expected-error {{no viable conversion}}
-
-template<typename T> struct T1 : B1 {
-  using B1::B1;
-};
-template<typename T> struct T2 : T1<T> {
-  using T1<int>::T1;
-};
-template<typename T> struct T3 : T1<int> {
-  using T1<T>::T1;
-};
-struct U {
-  friend T1<int>::T1(int);
-  friend T1<int>::T1(int, int);
-  friend T2<int>::T2(int);
-  friend T2<int>::T2(int, int);
-  friend T3<int>::T3(int);
-  friend T3<int>::T3(int, int);
-};
-
-struct B4 {
-  template<typename T> explicit B4(T, int = 0);
-};
-template<typename T> struct T4 : B4 {
-  using B4::B4; // expected-note {{here}}
-  template<typename U> T4(U);
-};
-T4<void> t4a = {0};
-T4<void> t4b = {0, 0}; // expected-error {{chosen constructor is explicit}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-template<int> struct X {};
-
-// A[n inheriting] constructor [...] has the same access as the corresponding
-// constructor [in the base class].
-struct A {
-public:
-  A(X<0>) {}
-protected:
-  A(X<1>) {}
-private:
-  A(X<2>) {} // expected-note {{declared private here}}
-  friend class FA;
-};
-
-struct B : A {
-  using A::A; // expected-error {{private constructor}} expected-note {{implicitly declared protected here}}
-  friend class FB;
-};
-
-B b0{X<0>{}};
-B b1{X<1>{}}; // expected-error {{calling a protected constructor}}
-B b2{X<2>{}}; // expected-note {{first required here}}
-
-struct C : B {
-  C(X<0> x) : B(x) {}
-  C(X<1> x) : B(x) {}
-};
-
-struct FB {
-  B b0{X<0>{}};
-  B b1{X<1>{}};
-};
-
-struct FA : A {
-  using A::A; // expected-note 2{{here}}
-};
-FA fa0{X<0>{}};
-FA fa1{X<1>{}}; // expected-error {{calling a protected constructor}}
-FA fa2{X<2>{}}; // expected-error {{calling a private constructor}}
-
-
-// It is deleted if the corresponding constructor [...] is deleted.
-struct G {
-  G(int) = delete;
-  template<typename T> G(T*) = delete;
-};
-struct H : G {
-  using G::G; // expected-note 2{{marked deleted here}}
-};
-H h1(5); // expected-error {{call to implicitly-deleted function of 'H'}}
-H h2("foo"); // expected-error {{call to deleted constructor of 'H'}}
-
-
-// Core defect: It is also deleted if multiple base constructors generate the
-// same signature.
-namespace DRnnnn {
-  struct A {
-    constexpr A(int, float = 0) {}
-    explicit A(int, int = 0) {}
-
-    A(int, int, int = 0) = delete;
-  };
-  struct B : A {
-    // FIXME: produce notes indicating why it was deleted
-    using A::A; // expected-note {{here}}
-  };
-
-  constexpr B b0(0, 0.0f); // ok, constexpr
-  B b1(0, 1); // expected-error {{call to implicitly-deleted}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// Straight from the standard
-struct B1 {
-  B1(int); // expected-note {{previous constructor}} expected-note {{conflicting constructor}}
-};
-struct B2 {
-  B2(int); // expected-note {{conflicting constructor}}
-};
-struct D1 : B1, B2 {
-  using B1::B1; // expected-note {{inherited here}}
-  using B2::B2; // expected-error {{already inherited constructor with the same signature}}
-};
-struct D2 : B1, B2 {
-  using B1::B1;
-  using B2::B2;
-  D2(int);
-};
-
-template<typename T> struct B3 {
-  B3(T); // expected-note {{previous constructor}}
-};
-template<typename T> struct B4 : B3<T>, B1 {
-  B4();
-  using B3<T>::B3; // expected-note {{inherited here}}
-  using B1::B1; // expected-error {{already inherited}}
-};
-B4<char> b4c;
-B4<int> b4i; // expected-note {{here}}
-
-struct B5 {
-  template<typename T> B5(T); // expected-note {{previous constructor}}
-};
-struct B6 {
-  template<typename T> B6(T); // expected-note {{conflicting constructor}}
-};
-struct B7 {
-  template<typename T, int> B7(T);
-};
-struct D56 : B5, B6, B7 {
-  using B5::B5; // expected-note {{inherited here}}
-  using B6::B6; // expected-error {{already inherited}}
-};
-struct D57 : B5, B6, B7 {
-  using B5::B5;
-  using B7::B7; // ok, not the same signature
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.inhctor/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// expected-no-diagnostics
-struct A {
-  constexpr A(const int&) : rval(false) {}
-  constexpr A(const int&&) : rval(true) {}
-  bool rval;
-};
-struct B : A {
-  using A::A;
-};
-
-constexpr int k = 0;
-constexpr A a0{0};
-constexpr A a1{k};
-constexpr B b0{0};
-// This performs static_cast<(const int&)&&>(k), so calls the A(const int&)
-// constructor.
-constexpr B b1{k};
-
-static_assert(a0.rval && !a1.rval && b0.rval && !b1.rval, "");
-
-struct C {
-  template<typename T> constexpr C(T t) : v(t) {}
-  int v;
-};
-struct D : C {
-  using C::C;
-};
-static_assert(D(123).v == 123, "");

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.init/class.base.init/p8-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.init/class.base.init/p8-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.init/class.base.init/p8-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-int n;
-struct S {
-  int &a; // expected-note 2{{here}}
-  int &b = n;
-
-  union {
-    const int k = 42;
-  };
-
-  S() {} // expected-error {{constructor for 'S' must explicitly initialize the reference member 'a'}}
-  S(int) : a(n) {} // ok
-  S(char) : b(n) {} // expected-error {{constructor for 'S' must explicitly initialize the reference member 'a'}}
-  S(double) : a(n), b(n) {} // ok
-} s(0);
-
-union U {
-  int a = 0; // desired-note 5 {{previous initialization is here}}
-  char b = 'x';
-
-  // FIXME: these should all be rejected
-  U() {} // desired-error {{initializing multiple members of union}}
-  U(int) : a(1) {} // desired-error {{initializing multiple members of union}}
-  U(char) : b('y') {} // desired-error {{initializing multiple members of union}}
-  // this expected note should be removed & the note should appear on the 
-  // declaration of 'a' when this set of cases is handled correctly.
-  U(double) : a(1), // expected-note{{previous initialization is here}} desired-error {{initializing multiple members of union}}
-              b('y') {} // expected-error{{initializing multiple members of union}}
-};
-
-// PR10954: variant members do not acquire an implicit initializer.
-namespace VariantMembers {
-  struct NoDefaultCtor {
-    NoDefaultCtor(int);
-  };
-  union V {
-    NoDefaultCtor ndc;
-    int n;
-
-    V() {}
-    V(int n) : n(n) {}
-    V(int n, bool) : ndc(n) {}
-  };
-  struct K {
-    union {
-      NoDefaultCtor ndc;
-      int n;
-    };
-    K() {}
-    K(int n) : n(n) {}
-    K(int n, bool) : ndc(n) {}
-  };
-  struct Nested {
-    Nested() {}
-    union {
-      struct {
-        NoDefaultCtor ndc;
-      };
-    };
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.init/class.base.init/p9-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.init/class.base.init/p9-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.init/class.base.init/p9-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -std=c++11 %s -O1 -emit-llvm -o - | FileCheck %s
-
-struct S {
-  int n = 10;
-  int m = 2 * n;
-
-  S() {}
-  S(int a) : n(a) {}
-  S(int a, int b) : n(a), m(b) {}
-
-  struct T {
-    T *that = this;
-  };
-};
-
-template<typename T>
-struct U {
-  T *r = &q;
-  T q = 42;
-  U *p = this;
-};
-
-S a;
-// CHECK: @a = {{.*}} { i32 10, i32 20 }
-
-S b(5);
-// CHECK: @b = {{.*}} { i32 5, i32 10 }
-
-S c(3, 9);
-// CHECK: @c = {{.*}} { i32 3, i32 9 }
-
-S::T d;
-// CHECK: @d = {{.*}} { {{.*}} @d }
-
-U<S> e;
-// CHECK: @e = {{.*}} { {{.*}} { i32 42, i32 84 }, {{.*}} @e }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/special/class.temporary/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/special/class.temporary/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/special/class.temporary/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-namespace test0 {
-  struct A {
-    A() = default;
-    int x;
-    int y;
-
-    A(const A&) = delete; // expected-note {{function has been explicitly marked deleted here}}
-  };
-
-  void foo(...);
-
-  void test() {
-    A a;
-    foo(a); // expected-error {{call to deleted constructor of 'test0::A'}}
-  }
-}
-
-namespace test1 {
-  struct A {
-    A() = default;
-    int x;
-    int y;
-
-  private:
-    A(const A&) = default; // expected-note {{declared private here}}
-  };
-
-  void foo(...);
-
-  void test() {
-    A a;
-    foo(a); // expected-error {{calling a private constructor of class 'test1::A'}}
-  }
-}
-
-// Don't enforce this in an unevaluated context.
-namespace test2 {
-  struct A {
-    A(const A&) = delete; // expected-note {{marked deleted here}}
-  };
-
-  typedef char one[1];
-  typedef char two[2];
-
-  one &meta(bool);
-  two &meta(...);
-
-  void a(A &a) {
-    char check[sizeof(meta(a)) == 2 ? 1 : -1];
-  }
-
-  void b(A &a) {
-    meta(a); // expected-error {{call to deleted constructor}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.ambig/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.ambig/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.ambig/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct T { 
-  struct x {
-    int m;
-  };
-  x* operator->();
-  void operator++(int);
-  void operator<<(int);
-  T();
-  T(int);
-  T(int, int);
-};
-
-template<typename A, typename B, typename C, typename D, typename E>
-void func(A, B, C, D, E);
-
-void func(int a, int c) {
-  T(a)->m = 7;
-  T(a)++;
-  T(a,5)<<c;
-
-  T(*d)(int);
-  T(e)[5];
-  T(f) = {1, 2};
-  T(*g)(double(3)); // expected-error{{cannot initialize a variable of type 'T (*)' with an rvalue of type 'double'}}
-  func(a, d, e, f, g);
-}
-
-void func2(int a, int c) {
-  decltype(T())(a)->m = 7;
-  decltype(T())(a)++;
-  decltype(T())(a,5)<<c;
-
-  decltype(T())(*d)(int);
-  decltype(T())(e)[5];
-  decltype(T())(f) = {1, 2};
-  decltype(T())(*g)(double(3)); // expected-error{{cannot initialize a variable of type 'decltype(T()) (*)' (aka 'T *') with an rvalue of type 'double'}}
-  func(a, d, e, f, g);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.dcl/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.dcl/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.dcl/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// PR10034
-struct X {};
-
-void exx(X) {}
-
-int test_ptr10034(int argc, char **argv)
-{
- if (argc > 3)
-   goto end;
-
- X x;
- X xs[16];
- exx(x);
-
- end:
-   if (argc > 1) {
-   for (int i = 0; i < argc; ++i)
-   {
-
-   }
-   }
-   return 0;
-}
-
-struct Y {
-  ~Y();
-};
-
-void f();
-void test_Y() {
-  goto end; // expected-error{{goto into protected scope}}
-  Y y; // expected-note{{jump bypasses variable with a non-trivial destructor}}
- end:
-  f();
-  goto inner; // expected-error{{goto into protected scope}}
-  {
-    Y y2; // expected-note{{jump bypasses variable with a non-trivial destructor}}
-  inner:
-    f();    
-  }
-  return;
-}
-
-struct Z {
-  Z operator=(const Z&);
-};
-
-void test_Z() {
-  goto end;
-  Z z;
- end:
-  return;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.dcl/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.dcl/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.dcl/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR10034
-struct X {};
-
-void exx(X) {}
-
-int test_ptr10034(int argc, char **argv)
-{
- if (argc > 3)
-   goto end;
-
- X x;
- X xs[16];
- exx(x);
-
- end:
-   if (argc > 1) {
-   for (int i = 0; i < argc; ++i)
-   {
-
-   }
-   }
-   return 0;
-}
-
-struct Y {
-  ~Y();
-};
-
-void test_Y() {
-  goto end; // expected-error{{goto into protected scope}}
-  Y y; // expected-note{{jump bypasses variable with a non-trivial destructor}}
- end:
-  return;
-}
-
-struct Z {
-  Z operator=(const Z&);
-};
-
-void test_Z() {
-  goto end; // expected-error{{goto into protected scope}}
-  Z z; // expected-note{{jump bypasses initialization of non-POD variable}}
- end:
-  return;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,254 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct pr12960 {
-  int begin;
-  void foo(int x) {
-    for (int& it : x) { // expected-error {{invalid range expression of type 'int'; no viable 'begin' function available}}
-    }
-  }
-};
-
-struct null_t {
-  operator int*();
-};
-
-namespace X {
-  template<typename T>
-    auto begin(T &&t) -> decltype(t.begin()) { return t.begin(); } // expected-note 2{{ignored: substitution failure}}
-  template<typename T>
-    auto end(T &&t) -> decltype(t.end()) { return t.end(); } // expected-note {{candidate template ignored: substitution failure [with T = }}
-
-  template<typename T>
-    auto begin(T &&t) -> decltype(t.alt_begin()) { return t.alt_begin(); } // expected-note {{selected 'begin' template [with T = }} \
-                                                                              expected-note 2{{candidate template ignored: substitution failure [with T = }}
-  template<typename T>
-    auto end(T &&t) -> decltype(t.alt_end()) { return t.alt_end(); } // expected-note {{candidate template ignored: substitution failure [with T = }}
-
-  namespace inner {
-    // These should never be considered.
-    int begin(int);
-    int end(int);
-  }
-
-  using namespace inner;
-
-  struct A { // expected-note 2 {{candidate constructor}}
-    A();
-    int *begin(); // expected-note 3{{selected 'begin' function with iterator type 'int *'}} expected-note {{'begin' declared here}}
-    int *end();
-  };
-
-  struct B {
-    B();
-    int *alt_begin();
-    int *alt_end();
-  };
-
-  struct NoBeginADL {
-    null_t alt_end();
-  };
-  struct NoEndADL {
-    null_t alt_begin();
-  };
-}
-
-using X::A;
-
-void f();
-void f(int);
-
-void g() {
-  for (int a : A())
-    A __begin;
-  for (char *a : A()) { // expected-error {{cannot initialize a variable of type 'char *' with an lvalue of type 'int'}}
-  }
-  for (char *a : X::B()) { // expected-error {{cannot initialize a variable of type 'char *' with an lvalue of type 'int'}}
-  }
-  // FIXME: Terrible diagnostic here. auto deduction should fail, but does not!
-  for (double a : f) { // expected-error {{cannot use type '<overloaded function type>' as a range}}
-  }
-  for (auto a : A()) {
-  }
-  for (auto a : X::B()) {
-  }
-  for (auto *a : A()) { // expected-error {{variable 'a' with type 'auto *' has incompatible initializer of type 'int'}}
-  }
-  // : is not a typo for :: here.
-  for (A NS:A()) { // expected-error {{no viable conversion from 'int' to 'X::A'}}
-  }
-  for (auto not_in_scope : not_in_scope) { // expected-error {{use of undeclared identifier 'not_in_scope'}}
-  }
-
-  for (auto a : A())
-    for (auto b : A()) {
-      __range.begin(); // expected-error {{use of undeclared identifier '__range'}}
-      ++__begin; // expected-error {{use of undeclared identifier '__begin'}}
-      --__end; // expected-error {{use of undeclared identifier '__end'}}
-    }
-
-  for (char c : "test")
-    ;
-  for (auto a : f()) // expected-error {{cannot use type 'void' as a range}}
-    ;
-
-  extern int incomplete[];
-  for (auto a : incomplete) // expected-error {{cannot use incomplete type 'int []' as a range}}
-    ;
-  extern struct Incomplete also_incomplete[2]; // expected-note {{forward declaration}}
-  for (auto &a : also_incomplete) // expected-error {{cannot use incomplete type 'struct Incomplete [2]' as a range}}
-    ;
-
-  struct VoidBegin {
-    void begin(); // expected-note {{selected 'begin' function with iterator type 'void'}}
-    void end();
-  };
-  for (auto a : VoidBegin()) // expected-error {{cannot use type 'void' as an iterator}}
-    ;
-
-  struct Differ {
-    int *begin(); // expected-note {{selected 'begin' function with iterator type 'int *'}}
-    null_t end(); // expected-note {{selected 'end' function with iterator type 'null_t'}}
-  };
-  for (auto a : Differ()) // expected-error {{'begin' and 'end' must return the same type (got 'int *' and 'null_t')}}
-    ;
-
-  for (void f() : "error") // expected-error {{for range declaration must declare a variable}}
-    ;
-
-  for (extern int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'extern'}}
-  for (static int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'static'}}
-  for (register int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'register'}}
-  for (constexpr int a : A()) {} // expected-error {{loop variable 'a' may not be declared 'constexpr'}}
-
-  for (auto u : X::NoBeginADL()) { // expected-error {{invalid range expression of type 'X::NoBeginADL'; no viable 'begin' function available}}
-  }
-  for (auto u : X::NoEndADL()) { // expected-error {{invalid range expression of type 'X::NoEndADL'; no viable 'end' function available}}
-  }
-
-  struct NoBegin {
-    null_t end();
-  };
-  struct NoEnd {
-    null_t begin();
-  };
-  for (auto u : NoBegin()) { // expected-error {{range type 'NoBegin' has 'end' member but no 'begin' member}}
-  }
-  for (auto u : NoEnd()) { // expected-error {{range type 'NoEnd' has 'begin' member but no 'end' member}} 
-  }
-
-  struct NoIncr {
-    void *begin(); // expected-note {{selected 'begin' function with iterator type 'void *'}}
-    void *end();
-  };
-  for (auto u : NoIncr()) { // expected-error {{arithmetic on a pointer to void}}\
-    expected-note {{in implicit call to 'operator++' for iterator of type 'NoIncr'}}
-  }
-
-  struct NoNotEq {
-    NoNotEq begin(); // expected-note {{selected 'begin' function with iterator type 'NoNotEq'}}
-    NoNotEq end();
-    void operator++();
-  };
-  for (auto u : NoNotEq()) { // expected-error {{invalid operands to binary expression}}\
-    expected-note {{in implicit call to 'operator!=' for iterator of type 'NoNotEq'}}
-  }
-
-  struct NoDeref {
-    NoDeref begin(); // expected-note {{selected 'begin' function}}
-    NoDeref end();
-    void operator++();
-    bool operator!=(NoDeref &);
-  };
-
-  for (auto u : NoDeref()) { // expected-error {{indirection requires pointer operand}} \
-    expected-note {{in implicit call to 'operator*' for iterator of type 'NoDeref'}}
-  }
-
-  struct NoCopy {
-    NoCopy();
-    NoCopy(const NoCopy &) = delete;
-    int *begin();
-    int *end();
-  };
-  for (int n : NoCopy()) { // ok
-  }
-
-  for (int n : 42) { // expected-error {{invalid range expression of type 'int'; no viable 'begin' function available}}
-  }
-
-  for (auto a : *also_incomplete) { // expected-error {{cannot use incomplete type 'struct Incomplete' as a range}}
-  }
-}
-
-template<typename T, typename U>
-void h(T t) {
-  for (U u : t) { // expected-error {{no viable conversion from 'X::A' to 'int'}}
-  }
-  for (auto u : t) {
-  }
-}
-
-template void h<A, int>(A);
-template void h<A(&)[4], A &>(A(&)[4]);
-template void h<A(&)[13], A>(A(&)[13]);
-template void h<A(&)[13], int>(A(&)[13]); // expected-note {{requested here}}
-
-template<typename T>
-void i(T t) {
-  for (auto u : t) { // expected-error {{invalid range expression of type 'X::A *'; no viable 'begin' function available}} \
-                        expected-error {{member function 'begin' not viable}} \
-                        expected-note {{when looking up 'begin' function}}
-
-  }
-}
-template void i<A[13]>(A*); // expected-note {{requested here}}
-template void i<const A>(const A); // expected-note {{requested here}}
-
-struct StdBeginEnd {};
-namespace std {
-  int *begin(StdBeginEnd);
-  int *end(StdBeginEnd);
-}
-void DR1442() {
-  for (auto a : StdBeginEnd()) {} // expected-error {{invalid range expression of type 'StdBeginEnd'; no viable 'begin'}}
-}
-
-namespace NS {
-  class ADL {};
-  int *begin(ADL); // expected-note {{no known conversion from 'NS::NoADL' to 'NS::ADL'}}
-  int *end(ADL);
-
-  class NoADL {};
-}
-int *begin(NS::NoADL);
-int *end(NS::NoADL);
-
-struct VoidBeginADL {};
-void begin(VoidBeginADL); // expected-note {{selected 'begin' function with iterator type 'void'}}
-void end(VoidBeginADL);
-
-void j() {
-  for (auto u : NS::ADL()) {
-  }
-  for (auto u : NS::NoADL()) { // expected-error {{invalid range expression of type 'NS::NoADL'; no viable 'begin' function available}}
-  }
-  for (auto a : VoidBeginADL()) { // expected-error {{cannot use type 'void' as an iterator}}
-
-  }
-}
-
-void example() {
-  int array[5] = { 1, 2, 3, 4, 5 };
-  for (int &x : array)
-    x *= 2;
-}
-
-namespace rdar13712739 {
-  template<typename T>
-  void foo(const T& t) {
-    auto &x = t.get(); // expected-error{{member reference base type 'const int' is not a structure or union}}
-    for (auto &blah : x) { }
-  }
-
-  template void foo(const int&); // expected-note{{in instantiation of function template specialization}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.label/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.label/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.label/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f()
-{
-  int x = 0;
-  goto label1;
-
-label1: // expected-note{{previous definition is here}}
-  x = 1;
-  goto label2; // expected-error{{use of undeclared label 'label2'}}
-
-label1: // expected-error{{redefinition of label 'label1'}}
-  x = 2;
-}
-
-void h()
-{
-  int x = 0;
-  switch (x)
-  {
-    case 1:;
-    default:; // expected-error{{multiple default labels in one switch}}
-    default:; // expected-note{{previous case defined here}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.select/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.select/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.select/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int f();
-
-void g() {
-  if (int x = f()) { // expected-note 2{{previous definition}}
-    int x; // expected-error{{redefinition of 'x'}}
-  } else {
-    int x; // expected-error{{redefinition of 'x'}}
-  }
-}
-
-
-void h() {
-  if (int x = f()) // expected-note 2{{previous definition}}
-    int x; // expected-error{{redefinition of 'x'}}
-  else
-    int x; // expected-error{{redefinition of 'x'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.select/stmt.switch/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.select/stmt.switch/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/stmt.stmt/stmt.select/stmt.switch/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-// expected-no-diagnostics
-
-struct Value {
-  constexpr Value(int n) : n(n) {}
-  constexpr operator short() const { return n; }
-  int n;
-};
-enum E { E0, E1 };
-struct Alt {
-  constexpr operator E() const { return E0; }
-};
-
-constexpr short s = Alt();
-
-void test(Value v) {
-  switch (v) {
-    case Alt():
-    case E1:
-    case Value(2):
-    case 3:
-      break;
-  }
-  switch (Alt a = Alt()) {
-    case Alt():
-    case E1:
-    case Value(2):
-    case 3:
-      break;
-  }
-  switch (E0) {
-    case Alt():
-    case E1:
-    // FIXME: These should produce a warning that 2 and 3 are not values of the
-    // enumeration.
-    case Value(2):
-    case 3:
-      break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-template<typename T> struct S {
-  static int a, b;
-};
-
-template<typename T> int S<T>::a, S<T>::b; // expected-error {{can only declare a single entity}}
-
-template<typename T> struct A { static A a; } A<T>::a; // expected-error {{expected ';' after struct}} \
-                                                          expected-error {{use of undeclared identifier 'T'}} \
-                                                          expected-error{{extra qualification}}
-
-template<typename T> struct B { } f(); // expected-error {{expected ';' after struct}} \
-                                          expected-error {{requires a type specifier}}
-
-template<typename T> struct C { } // expected-error {{expected ';' after struct}}
-
-A<int> c;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1-11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1-11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1-11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify -triple x86_64-linux-gnu
-
-namespace std {
-  typedef decltype(nullptr) nullptr_t;
-}
-
-template<int *ip> struct IP {  // expected-note 5 {{template parameter is declared here}}
-  IP<ip> *ip2;
-};
-
-template<int &ip> struct IR {};
-
-constexpr std::nullptr_t get_nullptr() { return nullptr; }
-
-constexpr std::nullptr_t np = nullptr;
-
-std::nullptr_t nonconst_np; // expected-note{{declared here}}
-
-thread_local int tl; // expected-note {{refers here}}
-
-IP<0> ip0; // expected-error{{null non-type template argument must be cast to template parameter type 'int *'}}
-IP<(0)> ip1; // expected-error{{null non-type template argument must be cast to template parameter type 'int *'}}
-IP<nullptr> ip2;
-IP<get_nullptr()> ip3;
-IP<(int*)0> ip4;
-IP<np> ip5;
-IP<nonconst_np> ip5; // expected-error{{non-type template argument of type 'std::nullptr_t' (aka 'nullptr_t') is not a constant expression}} \
-// expected-note{{read of non-constexpr variable 'nonconst_np' is not allowed in a constant expression}}
-IP<(float*)0> ip6; // expected-error{{null non-type template argument of type 'float *' does not match template parameter of type 'int *'}}
-IP<&tl> ip7; // expected-error{{non-type template argument of type 'int *' is not a constant expression}}
-
-IR<tl> ir1; // expected-error{{non-type template argument refers to thread-local object}}
-
-struct X { };
-template<int X::*pm> struct PM { // expected-note 2 {{template parameter is declared here}}
-  PM<pm> *pm2;
-};
-
-PM<0> pm0; // expected-error{{null non-type template argument must be cast to template parameter type 'int X::*'}}
-PM<(0)> pm1; // expected-error{{null non-type template argument must be cast to template parameter type 'int X::*'}}
-PM<nullptr> pm2;
-PM<get_nullptr()> pm3;
-PM<(int X::*)0> pm4;
-PM<np> pm5;
-
-template<int (X::*pmf)(int)> struct PMF { // expected-note 2 {{template parameter is declared here}}
-  PMF<pmf> *pmf2;
-};
-
-PMF<0> pmf0; // expected-error{{null non-type template argument must be cast to template parameter type 'int (X::*)(int)'}}
-PMF<(0)> pmf1; // expected-error{{null non-type template argument must be cast to template parameter type 'int (X::*)(int)'}}
-PMF<nullptr> pmf2;
-PMF<get_nullptr()> pmf3;
-PMF<(int (X::*)(int))0> pmf4;
-PMF<np> pmf5;
-
-
-template<std::nullptr_t np> struct NP { // expected-note 2{{template parameter is declared here}}
-  NP<np> *np2;
-};
-
-NP<nullptr> np1;
-NP<np> np2;
-NP<get_nullptr()> np3;
-NP<0> np4; // expected-error{{null non-type template argument must be cast to template parameter type 'std::nullptr_t' (aka 'nullptr_t')}}
-constexpr int i = 7;
-NP<i> np5; // expected-error{{non-type template argument of type 'const int' cannot be converted to a value of type 'std::nullptr_t'}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple=x86_64-linux-gnu %s
-
-// C++11 [temp.arg.nontype]p1:
-//
-//   A template-argument for a non-type, non-template template-parameter shall
-//   be one of:
-//   -- an integral constant expression; or
-//   -- the name of a non-type template-parameter ; or
-namespace non_type_tmpl_param {
-  template <int N> struct X0 { X0(); };
-  template <int N> X0<N>::X0() { }
-  template <int* N> struct X1 { X1(); };
-  template <int* N> X1<N>::X1() { }
-  template <int& N> struct X3 { X3(); };
-  template <int& N> X3<N>::X3() { }
-  template <int (*F)(int)> struct X4 { X4(); };
-  template <int (*F)(int)> X4<F>::X4() { }
-  template <typename T, int (T::* M)(int)> struct X5 { X5(); };
-  template <typename T, int (T::* M)(int)> X5<T, M>::X5() { }
-}
-
-//   -- a constant expression that designates the address of an object with
-//      static storage duration and external or internal linkage or a function
-//      with external or internal linkage, including function templates and
-//      function template-ids, but excluting non-static class members, expressed
-//      (ignoring parentheses) as & id-expression, except that the & may be
-//      omitted if the name refers to a function or array and shall be omitted
-//      if the corresopnding template-parameter is a reference; or
-namespace addr_of_obj_or_func {
-  template <int* p> struct X0 { }; // expected-note 4{{here}}
-  template <int (*fp)(int)> struct X1 { };
-  template <int &p> struct X2 { }; // expected-note 4{{here}}
-  template <const int &p> struct X2k { }; // expected-note {{here}}
-  template <int (&fp)(int)> struct X3 { }; // expected-note 4{{here}}
-
-  int i = 42;
-  int iarr[10];
-  int f(int i);
-  const int ki = 9; // expected-note 5{{here}}
-  __thread int ti = 100; // expected-note 2{{here}}
-  static int f_internal(int); // expected-note 4{{here}}
-  template <typename T> T f_tmpl(T t);
-
-  void test() {
-    X0<i> x0a; // expected-error {{must have its address taken}}
-    X0<&i> x0a_addr;
-    X0<iarr> x0b;
-    X0<&iarr> x0b_addr; // expected-error {{cannot be converted to a value of type 'int *'}}
-    X0<ki> x0c; // expected-error {{must have its address taken}} expected-warning {{internal linkage is a C++11 extension}}
-    X0<&ki> x0c_addr; // expected-error {{cannot be converted to a value of type 'int *'}} expected-warning {{internal linkage is a C++11 extension}}
-    X0<&ti> x0d_addr; // expected-error {{refers to thread-local object}}
-    X1<f> x1a;
-    X1<&f> x1a_addr;
-    X1<f_tmpl> x1b;
-    X1<&f_tmpl> x1b_addr;
-    X1<f_tmpl<int> > x1c;
-    X1<&f_tmpl<int> > x1c_addr;
-    X1<f_internal> x1d; // expected-warning {{internal linkage is a C++11 extension}}
-    X1<&f_internal> x1d_addr; // expected-warning {{internal linkage is a C++11 extension}}
-    X2<i> x2a;
-    X2<&i> x2a_addr; // expected-error {{address taken}}
-    X2<iarr> x2b; // expected-error {{cannot bind to template argument of type 'int [10]'}}
-    X2<&iarr> x2b_addr; // expected-error {{address taken}}
-    X2<ki> x2c; // expected-error {{ignores qualifiers}} expected-warning {{internal linkage is a C++11 extension}}
-    X2k<ki> x2kc; // expected-warning {{internal linkage is a C++11 extension}}
-    X2k<&ki> x2kc_addr; // expected-error {{address taken}} expected-warning {{internal linkage is a C++11 extension}}
-    X2<ti> x2d_addr; // expected-error {{refers to thread-local object}}
-    X3<f> x3a;
-    X3<&f> x3a_addr; // expected-error {{address taken}}
-    X3<f_tmpl> x3b;
-    X3<&f_tmpl> x3b_addr; // expected-error {{address taken}}
-    X3<f_tmpl<int> > x3c;
-    X3<&f_tmpl<int> > x3c_addr; // expected-error {{address taken}}
-    X3<f_internal> x3d; // expected-warning {{internal linkage is a C++11 extension}}
-    X3<&f_internal> x3d_addr; // expected-error {{address taken}} expected-warning {{internal linkage is a C++11 extension}}
-
-    int n; // expected-note {{here}}
-    X0<&n> x0_no_linkage; // expected-error {{non-type template argument refers to object 'n' that does not have linkage}}
-    struct Local { static int f() {} }; // expected-note {{here}}
-    X1<&Local::f> x1_no_linkage; // expected-error {{non-type template argument refers to function 'f' that does not have linkage}}
-  }
-}
-
-//   -- a constant expression that evaluates to a null pointer value (4.10); or
-//   -- a constant expression that evaluates to a null member pointer value
-//      (4.11); or
-//   -- a pointer to member expressed as described in 5.3.1.
-
-namespace bad_args {
-  template <int* N> struct X0 { }; // expected-note 2{{template parameter is declared here}}
-  int i = 42;
-  X0<&i + 2> x0a; // expected-error{{non-type template argument does not refer to any declaration}}
-  int* iptr = &i;
-  X0<iptr> x0b; // expected-error{{non-type template argument for template parameter of pointer type 'int *' must have its address taken}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.nontype/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,205 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// C++0x [temp.arg.nontype] p5:
-//   The following conversions are performed on each expression used as
-//   a non-type template-argument. If a non-type template-argument cannot be
-//   converted to the type of the corresponding template-parameter then the
-//   program is ill-formed.
-//     -- for a non-type template-parameter of integral or enumeration type,
-//        integral promotions (4.5) and integral conversions (4.7) are applied.
-namespace integral_parameters {
-  template<short s> struct X0 { };
-  X0<17> x0i;
-  X0<'a'> x0c;
-  template<char c> struct X1 { };
-  X1<100l> x1l;
-}
-
-//     -- for a non-type template-parameter of type pointer to object,
-//        qualification conversions (4.4) and the array-to-pointer conversion
-//        (4.2) are applied; if the template-argument is of type
-//        std::nullptr_t, the null pointer conversion (4.10) is applied.
-namespace pointer_to_object_parameters {
-  // PR6226
-  struct Str {
-    Str(const char *);
-  };
-
-  template<const char *s>
-  struct A {
-    Str get() { return s; }
-  };
-
-  char hello[6] = "Hello";
-  extern const char world[6];
-  const char world[6] = "world";
-  void test() {
-    (void)A<hello>().get();
-    (void)A<world>().get();
-  }
-
-  class X {
-  public:
-    X();
-    X(int, int);
-    operator int() const;
-  };
-  
-  template<X const *Ptr> struct A2; // expected-note{{template parameter is declared here}}
-  
-  X *X_ptr;
-  X an_X;
-  X array_of_Xs[10];
-  A2<X_ptr> *a12; // expected-error{{must have its address taken}}
-  A2<array_of_Xs> *a13;
-  A2<&an_X> *a13_2;
-  A2<(&an_X)> *a13_3; // expected-warning{{address non-type template argument cannot be surrounded by parentheses}}
-
-  // PR6244
-  struct X1 {} X1v;
-  template <X1*> struct X2 { };
-  template <X1* Value> struct X3 : X2<Value> { };
-  struct X4 : X3<&X1v> { };
-
-  // PR6563
-  int *bar;
-  template <int *> struct zed {}; // expected-note 2{{template parameter is declared here}}
-  void g(zed<bar>*); // expected-error{{must have its address taken}}
-
-  int baz;
-  void g2(zed<baz>*); // expected-error{{must have its address taken}}
-
-  void g3(zed<&baz>*); // okay
-}
-
-//     -- For a non-type template-parameter of type reference to object, no
-//        conversions apply. The type referred to by the reference may be more
-//        cv-qualified than the (otherwise identical) type of the
-//        template-argument. The template-parameter is bound directly to the
-//        template-argument, which shall be an lvalue.
-namespace reference_parameters {
-  template <int& N> struct S0 { }; // expected-note 3 {{template parameter is declared here}}
-  template <const int& N> struct S1 { }; // expected-note 2 {{template parameter is declared here}}
-  template <volatile int& N> struct S2 { }; // expected-note 2 {{template parameter is declared here}}
-  template <const volatile int& N> struct S3 { };
-  int i;
-  extern const int ci;
-  volatile int vi;
-  extern const volatile int cvi;
-  void test() {
-    S0<i> s0;
-    S0<ci> s0c; // expected-error{{reference binding of non-type template parameter of type 'int &' to template argument of type 'const int' ignores qualifiers}}
-    S0<vi> s0v; // expected-error{{reference binding of non-type template parameter of type 'int &' to template argument of type 'volatile int' ignores qualifiers}}
-    S0<cvi> s0cv; // expected-error{{reference binding of non-type template parameter of type 'int &' to template argument of type 'const volatile int' ignores qualifiers}}
-
-    S1<i> s1;
-    S1<ci> s1c;
-    S1<vi> s1v; // expected-error{{reference binding of non-type template parameter of type 'const int &' to template argument of type 'volatile int' ignores qualifiers}}
-    S1<cvi> s1cv; // expected-error{{reference binding of non-type template parameter of type 'const int &' to template argument of type 'const volatile int' ignores qualifiers}}
-
-    S2<i> s2;
-    S2<ci> s2c; // expected-error{{reference binding of non-type template parameter of type 'volatile int &' to template argument of type 'const int' ignores qualifiers}}
-    S2<vi> s2v;
-    S2<cvi> s2cv; // expected-error{{reference binding of non-type template parameter of type 'volatile int &' to template argument of type 'const volatile int' ignores qualifiers}}
-
-    S3<i> s3;
-    S3<ci> s3c;
-    S3<vi> s3v;
-    S3<cvi> s3cv;
-  }
-  
-  namespace PR6250 {
-    template <typename T, const T &ref> void inc() {
-      ref++; // expected-error{{read-only variable is not assignable}}
-    }
-  
-    template<typename T, const T &ref> void bind() {
-      T &ref2 = ref; // expected-error{{drops qualifiers}}
-    }
-    
-    int counter;
-    void test() {
-      inc<int, counter>(); // expected-note{{instantiation of}}
-      bind<int, counter>(); // expected-note{{instantiation of}}
-    }
-  }
-
-  namespace PR6749 {
-    template <int& i> struct foo {}; // expected-note{{template parameter is declared here}}
-    int x, &y = x;
-    foo<y> f; // expected-error{{is not an object}}
-  }
-}
-
-//     -- For a non-type template-parameter of type pointer to function, the
-//        function-to-pointer conversion (4.3) is applied; if the
-//        template-argument is of type std::nullptr_t, the null pointer
-//        conversion (4.10) is applied. If the template-argument represents
-//        a set of overloaded functions (or a pointer to such), the matching
-//        function is selected from the set (13.4).
-namespace pointer_to_function {
-  template<int (*)(int)> struct X0 { }; // expected-note 3{{template parameter is declared here}}
-  int f(int);
-  int f(float);
-  int g(float);
-  int (*funcptr)(int);
-  void x0a(X0<f>);
-  void x0b(X0<&f>);
-  void x0c(X0<g>); // expected-error{{non-type template argument of type 'int (float)' cannot be converted to a value of type 'int (*)(int)'}}
-  void x0d(X0<&g>); // expected-error{{non-type template argument of type 'int (*)(float)' cannot be converted to a value of type 'int (*)(int)'}}
-  void x0e(X0<funcptr>); // expected-error{{must have its address taken}}
-}
-
-//     -- For a non-type template-parameter of type reference to function, no
-//        conversions apply. If the template-argument represents a set of
-//        overloaded functions, the matching function is selected from the set
-//        (13.4).
-namespace reference_to_function {
-  template<int (&)(int)> struct X0 { }; // expected-note 4{{template parameter is declared here}}
-  int f(int);
-  int f(float);
-  int g(float);
-  int (*funcptr)(int);
-  void x0a(X0<f>);
-  void x0b(X0<&f>); // expected-error{{address taken in non-type template argument for template parameter of reference type 'int (&)(int)'}}
-  void x0c(X0<g>); // expected-error{{non-type template parameter of reference type 'int (&)(int)' cannot bind to template argument of type 'int (float)'}}
-  void x0d(X0<&g>); // expected-error{{address taken in non-type template argument for template parameter of reference type 'int (&)(int)'}}
-  void x0e(X0<funcptr>); // expected-error{{non-type template parameter of reference type 'int (&)(int)' cannot bind to template argument of type 'int (*)(int)'}}
-}
-//     -- For a non-type template-parameter of type pointer to member function,
-//        if the template-argument is of type std::nullptr_t, the null member
-//        pointer conversion (4.11) is applied; otherwise, no conversions
-//        apply. If the template-argument represents a set of overloaded member
-//        functions, the matching member function is selected from the set
-//        (13.4).
-namespace pointer_to_member_function {
-  struct X { };
-  struct Y : X { 
-    int f(int);
-    int g(int);
-    int g(float);
-    float h(float);
-  };
-
-  template<int (Y::*)(int)> struct X0 {}; // expected-note{{template parameter is declared here}}
-  X0<&Y::f> x0a;
-  X0<&Y::g> x0b;
-  X0<&Y::h> x0c; // expected-error{{non-type template argument of type 'float (pointer_to_member_function::Y::*)(float)' cannot be converted to a value of type 'int (pointer_to_member_function::Y::*)(int)'}}
-}
-
-//     -- For a non-type template-parameter of type pointer to data member,
-//        qualification conversions (4.4) are applied; if the template-argument
-//        is of type std::nullptr_t, the null member pointer conversion (4.11)
-//        is applied.
-namespace pointer_to_member_data {
-  struct X { int x; };
-  struct Y : X { int y; };
-
-  template<int Y::*> struct X0 {}; // expected-note{{template parameter is declared here}}
-  X0<&Y::y> x0a;
-  X0<&Y::x> x0b;  // expected-error{{non-type template argument of type 'int pointer_to_member_data::X::*' cannot be converted to a value of type 'int pointer_to_member_data::Y::*'}}
-
-  // Test qualification conversions
-  template<const int Y::*> struct X1 {};
-  X1<&Y::y> x1a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.template/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.template/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.template/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template <class T> struct eval; // expected-note 3{{template is declared here}}
-
-template <template <class, class...> class TT, class T1, class... Rest> 
-struct eval<TT<T1, Rest...>> { };
-
-template <class T1> struct A; 
-template <class T1, class T2> struct B; 
-template <int N> struct C; 
-template <class T1, int N> struct D; 
-template <class T1, class T2, int N = 17> struct E;
-
-eval<A<int>> eA;
-eval<B<int, float>> eB;
-eval<C<17>> eC; // expected-error{{implicit instantiation of undefined template 'eval<C<17> >'}}
-eval<D<int, 17>> eD; // expected-error{{implicit instantiation of undefined template 'eval<D<int, 17> >'}}
-eval<E<int, float>> eE; // expected-error{{implicit instantiation of undefined template 'eval<E<int, float, 17> >}}
-
-template<template <int ...N> class TT> struct X0 { }; // expected-note{{previous non-type template parameter with type 'int' is here}}
-template<int I, int J, int ...Rest> struct X0a;
-template<int ...Rest> struct X0b;
-template<int I, long J> struct X0c; // expected-note{{template non-type parameter has a different type 'long' in template argument}}
-
-X0<X0a> inst_x0a;
-X0<X0b> inst_x0b;
-X0<X0c> inst_x0c; // expected-error{{template template argument has different template parameters than its corresponding template template parameter}}
-
-template<typename T, 
-         template <T ...N> class TT>  // expected-note{{previous non-type template parameter with type 'short' is here}}
-struct X1 { };
-template<int I, int J, int ...Rest> struct X1a;
-template<long I, long ...Rest> struct X1b;
-template<short I, short J> struct X1c;
-template<short I, long J> struct X1d; // expected-note{{template non-type parameter has a different type 'long' in template argument}}
-
-X1<int, X1a> inst_x1a;
-X1<long, X1b> inst_x1b;
-X1<short, X1c> inst_x1c;
-X1<short, X1d> inst_x1d; // expected-error{{template template argument has different template parameters than its corresponding template template paramete}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.type/p2-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.type/p2-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.type/p2-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-// expected-no-diagnostics
-
-// C++03 imposed restrictions in this paragraph that were lifted with 0x, so we
-// just test that the example given now parses cleanly.
-
-template <class T> class X { };
-template <class T> void f(T t) { }
-struct { } unnamed_obj;
-void f() {
-  struct A { };
-  enum { e1 };
-  typedef struct { } B;
-  B b;
-  X<A> x1;
-  X<A*> x2;
-  X<B> x3;
-  f(e1);
-  f(unnamed_obj);
-  f(b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.type/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.type/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.arg/temp.arg.type/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<class T> struct A {
-  static T t; // expected-error{{static data member instantiated with function type 'int ()'}}
-};
-typedef int function();
-A<function> a; // expected-note{{instantiation of}}
-
-template<typename T> struct B {
-  B() { T t; } // expected-error{{variable instantiated with function type 'int ()'}}
-};
-B<function> b; // expected-note{{instantiation of}}
-
-template <typename T> int f0(void *, const T&); // expected-note{{candidate template ignored: substitution failure}}
-enum {e}; // expected-note{{unnamed type used in template argument was declared here}}
-
-void test_f0(int n) {
-  int i = f0(0, e); // expected-warning{{template argument uses unnamed type}}
-  int vla[n];
-  f0(0, vla); // expected-error{{no matching function for call to 'f0'}}
-}
-
-namespace N0 {
-  template <typename R, typename A1> void f0(R (*)(A1));
-  template <typename T> int f1(T);
-  template <typename T, typename U> int f1(T, U);
-  enum {e1}; // expected-note 2{{unnamed type used in template argument was declared here}}
-  enum {e2}; // expected-note 2{{unnamed type used in template argument was declared here}}
-  enum {e3}; // expected-note{{unnamed type used in template argument was declared here}}
-
-  template<typename T> struct X;
-  template<typename T> struct X<T*> { };
-
-  void f() {
-    f0( // expected-warning{{template argument uses unnamed type}}
-       &f1<__typeof__(e1)>); // expected-warning{{template argument uses unnamed type}}
-    int (*fp1)(int, __typeof__(e2)) = f1; // expected-warning{{template argument uses unnamed type}}
-    f1(e2); // expected-warning{{template argument uses unnamed type}}
-    f1(e2);
-
-    X<__typeof__(e3)*> x; // expected-warning{{template argument uses unnamed type}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<typename T> using A = int;
-template<typename T> using A<T*> = char; // expected-error {{partial specialization of alias templates is not permitted}}
-template<> using A<char> = char; // expected-error {{explicit specialization of alias templates is not permitted}}
-template using A<char> = char; // expected-error {{explicit instantiation of alias templates is not permitted}}
-using A<char> = char; // expected-error {{name defined in alias declaration must be an identifier}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T> using U = T;
-
-// The name of the alias template is a template-name.
-U<char> x;
-void f(U<int>);
-typedef U<U<U<U<int>>>> I;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<typename T> using U = T;
-
-using I = U<U<U<U<int>>>>;
-using I = int;
-
-template<typename A, typename B> using Fst = A;
-template<typename A, typename B> using Snd = B;
-
-using I = Fst<Snd<char,int>,double>;
-
-namespace StdExample {
-  // Prerequisites for example.
-  template<class T, class A> struct vector { /* ... */ };
-
-
-  template<class T> struct Alloc {};
-  template<class T> using Vec = vector<T, Alloc<T>>;
-  Vec<int> v;
-
-  template<class T>
-    void process(Vec<T>& v) // expected-note {{previous definition is here}}
-    { /* ... */ }
-
-  template<class T>
-    void process(vector<T, Alloc<T>>& w) // expected-error {{redefinition of 'process'}}
-    { /* ... */ }
-
-  template<template<class> class TT>
-    void f(TT<int>); // expected-note {{candidate template ignored}}
-
-  template<template<class,class> class TT>
-    void g(TT<int, Alloc<int>>);
-
-  int h() {
-    f(v); // expected-error {{no matching function for call to 'f'}}
-    g(v); // OK: TT = vector
-  }
-
-
-  // v's type is same as vector<int, Alloc<int>>.
-  using VTest = vector<int, Alloc<int>>;
-  using VTest = decltype(v);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.alias/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// The example given in the standard (this is rejected for other reasons anyway).
-template<class T> struct A;
-template<class T> using B = typename A<T>::U; // expected-error {{no type named 'U' in 'A<T>'}}
-template<class T> struct A {
-  typedef B<T> U; // expected-note {{in instantiation of template type alias 'B' requested here}}
-};
-B<short> b;
-
-template<typename T> using U = int;
-// FIXME: This is illegal, but probably only because CWG1044 missed this paragraph.
-template<typename T> using U = U<T>;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.class/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.class/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.class/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T, typename U>
-struct X0 {
-  struct Inner;
-};
-
-template<typename T, typename U>
-struct X0<T, U>::Inner {
-  T x;
-  U y;
-  
-  void f() { x = y; } // expected-error{{incompatible}}
-};
-
-
-void test(int i, float f) {
-  X0<int, float>::Inner inner;
-  inner.x = 5;
-  inner.y = 3.4;
-  inner.f();
-  
-  X0<int*, float *>::Inner inner2;
-  inner2.x = &i;
-  inner2.y = &f;
-  inner2.f(); // expected-note{{instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.enum/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.enum/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.enum/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,152 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-template<typename T> struct A {
-  enum E : T; // expected-note {{here}}
-  E v;
-  E f() { return A::e1; } // expected-error {{no member named 'e1' in 'A<T>'}}
-  E g() { return E::e1; }
-  E h();
-};
-
-A<int> a;
-A<int>::E a0 = A<int>().v;
-int n = A<int>::E::e1; // expected-error {{implicit instantiation of undefined member}}
-
-template<typename T> enum A<T>::E : T { e1, e2 };
-
-// FIXME: Now that A<T>::E is defined, we are supposed to inject its enumerators
-// into the already-instantiated class A<T>. This seems like a really bad idea,
-// though, so we don't implement that, but what we do implement is inconsistent.
-//
-// Either do as the standard says, or only include enumerators lexically defined
-// within the class in its scope.
-A<int>::E a1 = A<int>::e1; // expected-error {{no member named 'e1' in 'A<int>'}}
-
-A<char>::E a2 = A<char>::e2;
-
-template<typename T> typename A<T>::E A<T>::h() { return e2; }
-A<short>::E a3 = A<short>().h();
-
-
-template<typename T> struct B {
-  enum class E;
-  E v;
-  E f() { return E::e1; }
-  E g();
-};
-
-B<int> b;
-B<int>::E b0 = B<int>().v;
-
-template<typename T> enum class B<T>::E { e1, e2 };
-B<int>::E b1 = B<int>::E::e1;
-
-B<char>::E b2 = B<char>::E::e2;
-
-template<typename T> typename B<T>::E B<T>::g() { return e2; }
-B<short>::E b3 = B<short>().g();
-
-
-// Enumeration members of class templates can be explicitly specialized. For
-// unscoped enumerations, specializations must be defined before the primary
-// template is, since otherwise the primary template will be implicitly
-// instantiated when we parse the nested name specifier.
-template<> enum A<long long>::E : long long { e3, e4 }; // expected-error {{explicit specialization of 'E' after instantiation}} expected-note {{first required here}}
-
-template<> enum class B<long long>::E { e3, e4 };
-B<long long>::E b4 = B<long long>::E::e4;
-
-B<long>::E b5;
-template<> enum class B<long>::E { e5 };
-void fb5() { b5 = decltype(b5)::e5; }
-B<long>::E b6 = B<long>::E::e5;
-
-
-template<typename T> struct C {
-  enum class E : T;
-};
-
-template<> enum class C<long long>::E : long long { e3, e4 };
-C<long long>::E c0 = C<long long>::E::e3;
-
-C<long>::E c1;
-template<> enum class C<long>::E : long { e5 };
-void fc1() { c1 = decltype(c1)::e5; }
-C<long>::E c2 = C<long>::E::e5;
-
-template<> enum class C<int>::E : int { e6 };
-template<typename T> enum class C<T>::E : T { e0 };
-C<int>::E c3 = C<int>::E::e6;
-C<int>::E c4 = C<int>::E::e0; // expected-error {{no member named 'e0' in 'C<int>::E'}}
-
-
-// Enumeration members can't be partially-specialized.
-template<typename T> enum class B<T*>::E { e5, e6 }; // expected-error {{nested name specifier for a declaration cannot depend on a template parameter}}
-
-
-// Explicit specializations can be forward-declared.
-template<typename T>
-struct D {
-  enum class E { e1 };
-};
-template<> enum class D<int>::E;
-D<int>::E d1 = D<int>::E::e1; // expected-error {{incomplete type 'D<int>::E'}}
-template<> enum class D<int>::E { e2 };
-D<int>::E d2 = D<int>::E::e2;
-D<char>::E d3 = D<char>::E::e1; // expected-note {{first required here}}
-D<char>::E d4 = D<char>::E::e2; // expected-error {{no member named 'e2'}}
-template<> enum class D<char>::E { e3 }; // expected-error {{explicit specialization of 'E' after instantiation}}
-
-template<> enum class D<short>::E;
-struct F {
-  // Per C++11 [class.friend]p3, these friend declarations have no effect.
-  // Only classes and functions can be friends.
-  template<typename T> friend enum D<T>::E;
-  template<> friend enum D<short>::E;
-
-  template<> friend enum D<double>::E { e3 }; // expected-error {{cannot define a type in a friend declaration}}
-
-private:
-  static const int n = 1; // expected-note {{private here}}
-};
-template<> enum class D<short>::E {
-  e = F::n // expected-error {{private member}}
-};
-
-class Access {
-  friend class X;
-
-  template<typename T>
-  class Priv {
-    friend class X;
-
-    enum class E : T;
-  };
-
-  class S {
-    typedef int N; // expected-note {{here}}
-    static const int k = 3; // expected-note {{here}}
-
-    friend class Priv<char>;
-  };
-
-  static const int k = 5;
-};
-
-template<> enum class Access::Priv<Access::S::N>::E
-  : Access::S::N { // expected-error {{private member}}
-  a = Access::k, // ok
-  b = Access::S::k // expected-error {{private member}}
-};
-
-template<typename T> enum class Access::Priv<T>::E : T {
-  c = Access::k,
-  d = Access::S::k
-};
-
-class X {
-  Access::Priv<int>::E a = Access::Priv<int>::E::a;
-  Access::Priv<char>::E c = Access::Priv<char>::E::d;
-  // FIXME: We should see an access error for this enumerator.
-  Access::Priv<short>::E b = Access::Priv<short>::E::d;
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1-retmem.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1-retmem.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1-retmem.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T> struct X1 { };
-
-template<typename T>
-struct X0 {
-  typedef int size_type;
-  typedef T value_type;
-  
-  size_type f0() const;
-  value_type *f1();
-  X1<value_type*> f2();
-};
-
-template<typename T>
-typename X0<T>::size_type X0<T>::f0() const { 
-  return 0;
-}
-
-template<typename U>
-typename X0<U>::value_type *X0<U>::f1() { 
-  return 0;
-};
-
-template<typename U>
-X1<typename X0<U>::value_type*> X0<U>::f2() { 
-  return 0;
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, typename U> // expected-note{{previous template}}
-class X0 {
-public:
-  typedef int size_type;
-  
-  X0(int);
-  ~X0();
-  
-  void f0(const T&, const U&);
-  
-  T& operator[](int i) const;
-  
-  void f1(size_type) const;
-  void f2(size_type) const;
-  void f3(size_type) const;
-  void f4() ;
-  
-  operator T*() const;
-  
-  T value;
-};
-
-template<typename T, typename U>
-void X0<T, U>::f0(const T&, const U&) { // expected-note{{previous definition}}
-}
-
-template<class X, class Y>
-X& X0<X, Y>::operator[](int i) const {
-  (void)i;
-  return value;
-}
-
-template<class X, class Y>
-void X0<X, Y>::f1(int) const { }
-
-template<class X, class Y>
-void X0<X, Y>::f2(size_type) const { }
-
-template<class X, class Y, class Z> // expected-error{{too many template parameters}}
-void X0<X, Y>::f3(size_type) const {
-}
-
-template<class X, class Y> 
-void X0<Y, X>::f4() { } // expected-error{{does not refer}}
-
-// FIXME: error message should probably say, "redefinition of 'X0<T, U>::f0'"
-// rather than just "redefinition of 'f0'"
-template<typename T, typename U>
-void X0<T, U>::f0(const T&, const U&) { // expected-error{{redefinition}}
-}
-
-// Test out-of-line constructors, destructors
-template<typename T, typename U>
-X0<T, U>::X0(int x) : value(x) { }
-
-template<typename T, typename U>
-X0<T, U>::~X0() { }
-
-// Test out-of-line conversion functions.
-template<typename T, typename U>
-X0<T, U>::operator T*() const {
-  return &value;
-}
-
-namespace N { template <class X> class A {void a();}; }
-namespace N { template <class X> void A<X>::a() {} }
-
-// PR5566
-template<typename T>
-struct X1 { 
-  template<typename U>
-  struct B { void f(); };
-};
-
-template<typename T>
-template<typename U>
-void X1<T>::template B<U>::f() { }
-
-// PR5527
-template <template <class> class T>
-class X2 {
-  template <class F>
-  class Bar {
-    void Func();
-  };
-};
-
-template <template <class> class T>
-template <class F>
-void X2<T>::Bar<F>::Func() {}
-
-// PR5528
-template <template <class> class T>
-class X3 {
-  void F();
-};
-
-template <template <class> class T>
-void X3<T>::F() {}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1inst.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1inst.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1inst.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// Test instantiation of member functions of class templates defined out-of-line
-template<typename T, typename U>
-struct X0 {
-  void f(T *t, const U &u);
-  void f(T *);
-};
-
-template<typename T, typename U>
-void X0<T, U>::f(T *t, const U &u) {
-  *t = u; // expected-error{{not assignable}}
-}
-
-void test_f(X0<float, int> xfi, X0<void, int> xvi, float *fp, void *vp, int i) {
-  xfi.f(fp, i);
-  xvi.f(vp, i); // expected-note{{instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/pr5056.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/pr5056.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.mem.func/pr5056.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-extern "C" void * malloc(int);
-
-template <typename T> struct A {
-  void *malloc(int);
-};
-
-template <typename T>
-inline void *A<T>::malloc(int)
-{
-  return 0;
-}
-
-void f() {
-  malloc(10);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1-inst.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1-inst.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1-inst.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Test instantiation of static data members declared out-of-line.
-
-template<typename T>
-struct X {
-  static T value;
-};
-
-template<typename T> 
-  T X<T>::value = 17; // expected-error{{no viable conversion}}
-
-struct InitOkay {
-  InitOkay(int) { }
-};
-
-struct CannotInit { }; // expected-note{{candidate constructor (the implicit copy constructor) not viable}}
-
-int &returnInt() { return X<int>::value; }
-float &returnFloat() { return X<float>::value; }
-
-InitOkay &returnInitOkay() { return X<InitOkay>::value; }
-
-unsigned long sizeOkay() { return sizeof(X<CannotInit>::value); }
-  
-CannotInit &returnError() {
-  return X<CannotInit>::value; // expected-note{{instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class/temp.static/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X0 {
-  static T value;
-};
-
-template<typename T>
-T X0<T>::value = 0; // expected-error{{no viable conversion}}
-
-struct X1 { 
-  X1(int);
-};
-
-struct X2 { }; // expected-note{{candidate constructor (the implicit copy constructor) not viable}}
-
-int& get_int() { return X0<int>::value; }
-X1& get_X1() { return X0<X1>::value; }
-
-double*& get_double_ptr() { return X0<int*>::value; } // expected-error{{non-const lvalue reference to type 'double *' cannot bind to a value of unrelated type 'int *'}}
-
-X2& get_X2() { 
-  return X0<X2>::value; // expected-note{{instantiation}}
-}
-  
-template<typename T> T x; // expected-error{{variable 'x' declared as a template}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Test class template partial specializations of member templates.
-template<typename T>
-struct X0 {
-  template<typename U> struct Inner0 {
-    static const unsigned value = 0;
-  };
-  
-  template<typename U> struct Inner0<U*> { 
-    static const unsigned value = 1;
-  };
-};
-
-template<typename T> template<typename U>
-struct X0<T>::Inner0<const U*> {
-  static const unsigned value = 2;
-};
-
-int array0[X0<int>::Inner0<int>::value == 0? 1 : -1];
-int array1[X0<int>::Inner0<int*>::value == 1? 1 : -1];
-int array2[X0<int>::Inner0<const int*>::value == 2? 1 : -1];
-
-// Make sure we can provide out-of-line class template partial specializations
-// for member templates (and instantiate them).
-template<class T> struct A { 
-  struct C {
-    template<class T2> struct B;
-  };
-};
-
-// partial specialization of A<T>::C::B<T2> 
-template<class T> template<class T2> struct A<T>::C::B<T2*> { }; 
-
-A<short>::C::B<int*> absip;
-
-// Check for conflicts during template instantiation. 
-template<typename T, typename U>
-struct Outer {
-  template<typename X, typename Y> struct Inner;
-  template<typename Y> struct Inner<T, Y> {}; // expected-note{{previous}}
-  template<typename Y> struct Inner<U, Y> {}; // expected-error{{cannot be redeclared}}
-};
-
-Outer<int, int> outer; // expected-note{{instantiation}}
-
-// Test specialization of class template partial specialization members.
-template<> template<typename Z>
-struct X0<float>::Inner0<Z*> {
-  static const unsigned value = 3;
-};
-
-int array3[X0<float>::Inner0<int>::value == 0? 1 : -1];
-int array4[X0<float>::Inner0<int*>::value == 3? 1 : -1];
-int array5[X0<float>::Inner0<const int*>::value == 2? 1 : -1];
-
-namespace rdar8651930 {
-  template<typename OuterT>
-  struct Outer {
-    template<typename T, typename U>
-    struct Inner;
-
-    template<typename T>
-    struct Inner<T, T> { 
-      static const bool value = true;
-    };
-
-    template<typename T, typename U>
-    struct Inner { 
-      static const bool value = false;
-    };
-  };
-
-  int array0[Outer<int>::Inner<int, int>::value? 1 : -1];
-  int array1[Outer<int>::Inner<int, float>::value? -1 : 1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p8-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p8-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p8-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<int ...Values> struct X1;
-
-template<int ...Values> 
-struct X1<0, Values+1 ...>; // expected-error{{non-type template argument depends on a template parameter of the partial specialization}}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p9-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p9-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p9-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// -- The argument list of the specialization shall not be identical
-//    to the implicit argument list of the primary template.
-
-template<typename T, typename ...Types>
-struct X1; 
-
-template<typename T, typename ...Types>
-struct X1<T, Types...> // expected-error{{class template partial specialization does not specialize any template argument; to define the primary template, remove the template argument list}}
-{ };
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR8905
-template<char C1, char C2>
-struct X {
-  static const bool value = 0;
-};
-
-template<int C1>
-struct X<C1, C1> {
-  static const bool value = 1;
-};
-
-int check0[X<1, 2>::value == 0? 1 : -1];
-int check1[X<1, 1>::value == 1? 1 : -1];
-
-template<int, int, int> struct int_values {
-  static const unsigned value = 0;
-};
-
-template<unsigned char C1, unsigned char C3>
-struct int_values<C1, 12, C3> {
-  static const unsigned value = 1;
-};
-
-int check2[int_values<256, 12, 3>::value == 0? 1 : -1];  

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.order/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.order/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.order/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-template<int I, int J, class T> struct X { 
-  static const int value = 0;
-};
-
-template<int I, int J> struct X<I, J, int> { 
-  static const int value = 1;
-};
-
-template<int I> struct X<I, I, int> { 
-  static const int value = 2;
-};
-
-int array0[X<0, 0, float>::value == 0? 1 : -1];
-int array1[X<0, 1, int>::value == 1? 1 : -1];
-int array2[X<0, 0, int>::value == 2? 1 : -1];
-
-namespace DependentSubstPartialOrdering {
-  template<typename T, typename U = void, typename V = void>
-  struct X { 
-    static const unsigned value = 1;
-  };
-
-  template<typename T, typename U>
-  struct X<T, U, typename T::is_b> {
-    static const unsigned value = 2;
-  };
-
-  template<typename T>
-  struct X<T, typename T::is_a, typename T::is_b> {
-    static const unsigned value = 3;
-  };
-
-  struct X1 { };
-
-  struct X2 { 
-    typedef void is_b;
-  };
-
-  struct X3 {
-    typedef void is_a;
-    typedef void is_b;
-  };
-
-  int check_X1[X<X1, void, void>::value == 1? 1 : -1];
-  int check_X2[X<X2, void, void>::value == 2? 1 : -1];
-  int check_X3[X<X3, void, void>::value == 3? 1 : -1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1-neg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1-neg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1-neg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T, int N>
-struct A;
-
-template<typename T> // expected-note{{previous template declaration}}
-struct A<T*, 2> {
-  void f0();
-  void f1();
-  void f2();
-};
-
-template<>
-struct A<int, 1> {
-  void g0();
-};
-
-// FIXME: We should probably give more precise diagnostics here, but the
-// diagnostics we give aren't terrible.
-// FIXME: why not point to the first parameter that's "too many"?
-template<typename T, int N> // expected-error{{too many template parameters}}
-void A<T*, 2>::f0() { }
-
-template<typename T, int N>
-void A<T, N>::f1() { } // expected-error{{out-of-line definition}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.class.spec/temp.class.spec.mfunc/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-template<typename T, int N>
-struct A;
-
-template<typename T>
-struct A<T*, 2> {
-  A(T);
-  ~A();
-  
-  void f(T*);
-  
-  operator T*();
-  
-  static T value;
-};
-
-template<class X> void A<X*, 2>::f(X*) { }
-
-template<class X> X A<X*, 2>::value;
-
-template<class X> A<X*, 2>::A(X) { value = 0; }
-
-template<class X> A<X*, 2>::~A() { }
-
-template<class X> A<X*, 2>::operator X*() { return 0; }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-// Core DR 532.
-namespace PR8130 {
-  struct A { };
-
-  template<class T> struct B {
-    template<class R> int &operator*(R&);
-  };
-
-  template<class T, class R> float &operator*(T&, R&);
-  void test() {
-    A a;
-    B<A> b;
-    int &ir = b * a;
-  }
-}
-
-namespace OperatorWithRefQualifier {
-  struct A { };
-  template<class T> struct B {
-    template<class R> int &operator*(R&) &&;
-  };
-
-  template<class T, class R> float &operator*(T&&, R&);
-  void test() {
-    A a;
-    B<A> b;
-    float &ir = b * a;
-    int &ir2 = B<A>() * a;
-  }
-}
-
-namespace OrderWithStaticMember {
-  struct A {
-    template<class T> int g(T**, int=0) { return 0; }
-    template<class T> static int g(T*) { return 1; }
-  };
-  void f() {
-    A a;
-    int **p;
-    a.g(p);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace DeduceVsMember {
-  template<typename T>
-  struct X {
-    template<typename U>
-    int &operator==(const U& other) const;
-  };
-
-  template<typename T, typename U>
-  float &operator==(const T&, const X<U>&);
-
-  void test(X<int> xi, X<float> xf) {
-    float& ir = (xi == xf);
-  }
-}
-
-namespace OrderWithStaticMember {
-  struct A {
-    template<class T> int g(T**, int=0) { return 0; }
-    template<class T> static int g(T*) { return 1; }
-  };
-  void f() {
-    A a;
-    int **p;
-    a.g(p);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<class T> struct A { A(); };
-template<class T> int &f(T); 
-template<class T> float &f(T*); 
-template<class T> double &f(const T*);
-
-template<class T> void g(T); // expected-note{{candidate}}
-template<class T> void g(T&); // expected-note{{candidate}}
-
-template<class T> int &h(const T&); 
-template<class T> float &h(A<T>&);
-
-void m() { 
-  const int *p; 
-  double &dr1 = f(p); 
-  float x; 
-  g(x); // expected-error{{ambiguous}}
-  A<int> z; 
-  float &fr1 = h(z);
-  const A<int> z2; 
-  int &ir1 = h(z2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-template<class T> int &f(T); 
-template<class T> float &f(T*, int=1); 
-
-template<class T> int &g(T); 
-template<class T> float &g(T*, ...);
-
-int main() { 
-  int* ip; 
-  float &fr1 = f(ip); 
-  float &fr2 = g(ip);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p4-neg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p4-neg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p4-neg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> void f0(T) { } // expected-note{{previous}}
-template<class U> void f0(U) { } // expected-error{{redefinition}}
-
-template<int I> void f0() { } // expected-note{{previous}}
-template<int> void f0() { } // expected-error{{redefinition}}
-
-typedef int INT;
-
-template<template<class T, T Value1, INT> class X> 
-  void f0() { } // expected-note{{previous}}
-template<template<typename T, T Value1, int> class> 
-  void f0() { } // expected-error{{redefinition}}
-
-template<typename T>
-struct MetaFun;
-
-template<typename T>
-  typename MetaFun<T*>::type f0(const T&) { while (1) {} } // expected-note{{previous}}
-template<class U>
-  typename MetaFun<U*>::type f0(const U&) { while (1) {} } // expected-error{{redefinition}}
-
-// FIXME: We need canonicalization of expressions for this to work
-// template<int> struct A { };
-// template<int I> void f0(A<I>) { } // Xpected-note{{previous}}
-// template<int J> void f0(A<J>) { } // Xpected-error{{redefinition}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// All of these function templates are distinct.
-template<typename T> void f0(T) { }
-template<typename T, typename U> void f0(T) { }
-template<typename T, typename U> void f0(U) { }
-void f0();
-template<typename T> void f0(T*);
-void f0(int);
-template<int I> void f0();
-template<typename T> void f0();
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.fct/temp.over.link/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<int N, int M>
-struct A0 {
-  void g0();
-};
-
-template<int X, int Y> void f0(A0<X, Y>) { } // expected-note{{previous}}
-template<int N, int M> void f0(A0<M, N>) { }
-template<int V1, int V2> void f0(A0<V1, V2>) { } // expected-error{{redefinition}}
-
-template<int X, int Y> void f1(A0<0, (X + Y)>) { } // expected-note{{previous}}
-template<int X, int Y> void f1(A0<0, (X - Y)>) { }
-template<int A, int B> void f1(A0<0, (A + B)>) { } // expected-error{{redefinition}}
-
-template<int X, int Y> void A0<X, Y>::g0() { }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,361 +0,0 @@
-// RUN: %clang_cc1 -verify -emit-llvm-only %s
-
-namespace test0 {
-template <typename T> struct Num {
-  T value_;
-
-public:
-  Num(T value) : value_(value) {}
-  T get() const { return value_; }
-
-  template <typename U> struct Rep {
-    U count_;
-    Rep(U count) : count_(count) {}
-
-    friend Num operator*(const Num &a, const Rep &n) {
-      Num x = 0;
-      for (U count = n.count_; count; --count)
-        x += a;
-      return x;
-    } 
-  };
-
-  friend Num operator+(const Num &a, const Num &b) {
-    return a.value_ + b.value_;
-  }
-
-  Num& operator+=(const Num& b) {
-    value_ += b.value_;
-    return *this;
-  }
-
-  class Representation {};
-  friend class Representation;
-};
-
-class A {
-  template <typename T> friend bool iszero(const A &a) throw();
-};
-
-template <class T> class B_iterator;
-template <class T> class B {
-  friend class B_iterator<T>;
-};
-
-int calc1() {
-  Num<int> left = -1;
-  Num<int> right = 1;
-  Num<int> result = left + right;
-  return result.get();
-}
-
-int calc2() {
-  Num<int> x = 3;
-  Num<int>::Rep<char> n = (char) 10;
-  Num<int> result = x * n;
-  return result.get();
-}
-}
-
-// Reduced from GNU <locale>
-namespace test1 {
-  class A {
-    bool b; // expected-note {{declared private here}}
-    template <typename T> friend bool has(const A&);
-  };
-  template <typename T> bool has(const A &x) {
-    return x.b;
-  }
-  template <typename T> bool hasnot(const A &x) {
-    return x.b; // expected-error {{'b' is a private member of 'test1::A'}}
-  }
-}
-
-namespace test2 {
-  class A {
-    bool b; // expected-note {{declared private here}}
-    template <typename T> friend class HasChecker;
-  };
-  template <typename T> class HasChecker {
-    bool check(A *a) {
-      return a->b;
-    }
-  };
-  template <typename T> class HasNotChecker {
-    bool check(A *a) {
-      return a->b; // expected-error {{'b' is a private member of 'test2::A'}}
-    }
-  };
-}
-
-namespace test3 {
-  class Bool;
-  template <class T> class User;
-  template <class T> T transform(class Bool, T);
-
-  class Bool {
-    friend class User<bool>;
-    friend bool transform<>(Bool, bool);
-
-    bool value; // expected-note 2 {{declared private here}}
-  };
-
-  template <class T> class User {
-    static T compute(Bool b) {
-      return b.value; // expected-error {{'value' is a private member of 'test3::Bool'}}
-    }
-  };
-
-  template <class T> T transform(Bool b, T value) {
-    if (b.value) // expected-error {{'value' is a private member of 'test3::Bool'}}
-      return value;
-    return value + 1;
-  }
-
-  template bool transform(Bool, bool);
-  template int transform(Bool, int); // expected-note {{requested here}}
-
-  template class User<bool>;
-  template class User<int>; // expected-note {{requested here}}
-}
-
-namespace test4 {
-  template <class T> class A {
-    template <class T0> friend class B;
-    bool foo(const A<T> *) const;
-  };
-
-  template <class T> class B {
-    bool bar(const A<T> *a, const A<T> *b) {
-      return a->foo(b);
-    }
-  };
-
-  template class B<int>;
-}
-
-namespace test5 {
-  template <class T, class U=int> class A {};
-  template <class T> class B {
-    template <class X, class Y> friend class A;
-  };
-  template class B<int>;
-  template class A<int>;
-}
-
-namespace Dependent {
-  template<typename T, typename Traits> class X;
-  template<typename T, typename Traits> 
-  X<T, Traits> operator+(const X<T, Traits>&, const T*);
-
-  template<typename T, typename Traits> class X {
-    typedef typename Traits::value_type value_type;
-    friend X operator+<>(const X&, const value_type*);
-  };
-}
-
-namespace test7 {
-  template <class T> class A { // expected-note {{declared here}}
-    friend class B;
-    int x; // expected-note {{declared private here}}
-  };
-
-  class B {
-    int foo(A<int> &a) {
-      return a.x;
-    }
-  };
-
-  class C {
-    int foo(A<int> &a) {
-      return a.x; // expected-error {{'x' is a private member of 'test7::A<int>'}}
-    }
-  };
-
-  // This shouldn't crash.
-  template <class T> class D {
-    friend class A; // expected-error {{elaborated type refers to a template}}
-  };
-  template class D<int>;
-}
-
-namespace test8 {
-  template <class N> class A {
-    static int x;
-    template <class T> friend void foo();
-  };
-  template class A<int>;
-
-  template <class T> void foo() {
-    A<int>::x = 0;
-  }
-  template void foo<int>();
-}
-
-namespace test9 {
-  template <class T> class A {
-    class B; class C;
-
-    int foo(B *b) {
-      return b->x;
-    }
-
-    int foo(C *c) {
-      return c->x; // expected-error {{'x' is a private member}}
-    }
-
-    class B {
-      int x;
-      friend int A::foo(B*);
-    };
-
-    class C {
-      int x; // expected-note {{declared private here}}
-    };
-  };
-
-  template class A<int>; // expected-note {{in instantiation}}
-}
-
-namespace test10 {
-  template <class T> class A;
-  template <class T> A<T> bar(const T*, const A<T>&);
-  template <class T> class A {
-  private:
-    void foo(); // expected-note {{declared private here}}
-    friend A bar<>(const T*, const A<T>&);
-  };
-
-  template <class T> A<T> bar(const T *l, const A<T> &r) {
-    A<T> l1;
-    l1.foo();
-
-    A<char> l2;
-    l2.foo(); // expected-error {{'foo' is a private member of 'test10::A<char>'}}
-
-    return l1;
-  }
-
-  template A<int> bar<int>(const int *, const A<int> &); // expected-note {{in instantiation}}
-}
-
-// PR6752: this shouldn't crash.
-namespace test11 {
-  struct Foo {
-    template<class A>
-    struct IteratorImpl {
-      template<class T> friend class IteratorImpl;
-    };
-  };
-
-  template struct Foo::IteratorImpl<int>;
-  template struct Foo::IteratorImpl<long>;  
-}
-
-// PR6827
-namespace test12 {
-  template <typename T> class Foo;
-  template <typename T> Foo<T> foo(T* t){ return Foo<T>(t, true); }
-
-  template <typename T> class Foo {
-  public:
-    Foo(T*);
-    friend Foo<T> foo<T>(T*);
-  private:
-    Foo(T*, bool); // expected-note {{declared private here}}
-  };
-
-  // Should work.
-  int globalInt;
-  Foo<int> f = foo(&globalInt);
-
-  // Shouldn't work.
-  long globalLong;
-  template <> Foo<long> foo(long *t) {
-    Foo<int> s(&globalInt, false); // expected-error {{calling a private constructor}}
-    return Foo<long>(t, true);
-  }
-}
-
-// PR6514
-namespace test13 {
-  template <int N, template <int> class Temp>
-  class Role : public Temp<N> {
-    friend class Temp<N>;
-    int x;
-  };
-
-  template <int N> class Foo {
-    void foo(Role<N, test13::Foo> &role) {
-      (void) role.x;
-    }
-  };
-
-  template class Foo<0>;
-}
-
-namespace test14 {
-  template <class T> class B;
-  template <class T> class A {
-    friend void B<T>::foo();
-    static void foo(); // expected-note {{declared private here}}
-  };
-
-  template <class T> class B {
-  public:
-    void foo() { return A<long>::foo(); } // expected-error {{'foo' is a private member of 'test14::A<long>'}}
-  };
-
-  template class B<int>; // expected-note {{in instantiation}}
-}
-
-namespace test15 {
-  template <class T> class B;
-  template <class T> class A {
-    friend void B<T>::foo();
-
-    // This shouldn't be misrecognized as a templated-scoped reference.
-    template <class U> friend void B<T>::bar(U);
-
-    static void foo(); // expected-note {{declared private here}}
-  };
-
-  template <class T> class B {
-  public:
-    void foo() { return A<long>::foo(); } // expected-error {{'foo' is a private member of 'test15::A<long>'}}
-  };
-
-  template <> class B<float> {
-  public:
-    void foo() { return A<float>::foo(); }
-    template <class U> void bar(U u) {
-      (void) A<float>::foo();
-    }
-  };
-
-  template class B<int>; // expected-note {{in instantiation}}
-}
-
-namespace PR10913 {
-  template<class T> class X;
-
-  template<class T> void f(X<T> *x) {
-    x->member = 0;
-  }
-
-  template<class U, class T> void f2(X<T> *x) {
-    x->member = 0; // expected-error{{'member' is a protected member of 'PR10913::X<int>'}}
-  }
-
-  template<class T> class X {
-    friend void f<T>(X<T> *x);
-    friend void f2<T>(X<int> *x);
-
-  protected:
-    int member; // expected-note{{declared protected here}}
-  };
-
-  template void f(X<int> *);
-  template void f2<int>(X<int> *);
-  template void f2<float>(X<int> *); // expected-note{{in instantiation of function template specialization 'PR10913::f2<float, int>' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <class T> class A {
-  typedef int Member;
-};
-
-class B {
-  template <class T> friend class A;
-  template <class T> friend class Undeclared;
-  
-  template <class T> friend typename A<T>::Member; // expected-error {{friend type templates must use an elaborated type}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X1 {
-  friend void f6(int) { } // expected-error{{redefinition of}} \
-                          // expected-note{{previous definition}}
-};
-
-X1<int> x1a; 
-X1<float> x1b; // expected-note {{in instantiation of}}
-
-template<typename T>
-struct X2 {
-  operator int();
-
-  friend void f(int x) { } // expected-error{{redefinition}} \
-                           // expected-note{{previous definition}}
-};
-
-int array0[sizeof(X2<int>)]; 
-int array1[sizeof(X2<float>)]; // expected-note{{instantiation of}}
-
-void g() {
-  X2<int> xi;
-  f(xi);
-  X2<float> xf; 
-  f(xf);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace test0 {
-  template <class T> class A {
-    class Member {};
-  };
-
-  class B {
-    template <class T> friend class A<T>::Member;
-  };
-
-  A<int> a;
-  B b;
-}
-
-// rdar://problem/8204127
-namespace test1 {
-  template <class T> struct A;
-
-  class C {
-    static void foo();
-    template <class T> friend void A<T>::f();
-  };
-
-  template <class T> struct A {
-    void f() { C::foo(); }
-  };
-
-  template <class T> struct A<T*> {
-    void f() { C::foo(); }
-  };
-
-  template <> struct A<char> {
-    void f() { C::foo(); }
-  };
-}
-
-// FIXME: these should fail!
-namespace test2 {
-  template <class T> struct A;
-
-  class C {
-    static void foo();
-    template <class T> friend void A<T>::g();
-  };
-
-  template <class T> struct A {
-    void f() { C::foo(); }
-  };
-
-  template <class T> struct A<T*> {
-    void f() { C::foo(); }
-  };
-
-  template <> struct A<char> {
-    void f() { C::foo(); }
-  };
-}
-
-// Tests 3, 4 and 5 were all noted in <rdar://problem/8540527>.
-namespace test3 {
-  template <class T> struct A {
-    struct Inner {
-      static int foo();
-    };
-  };
-
-  template <class U> class C {
-    int i;
-    template <class T> friend struct A<T>::Inner;
-  };
-
-  template <class T> int A<T>::Inner::foo() {
-    C<int> c;
-    c.i = 0;
-    return 0;
-  }
-
-  int test = A<int>::Inner::foo();
-}
-
-namespace test4 {
-  template <class T> struct X {
-    template <class U> void operator+=(U);
-    
-    template <class V>
-    template <class U>
-    friend void X<V>::operator+=(U);
-  };
-
-  void test() {   
-    X<int>() += 1.0;
-  }
-}
-
-namespace test5 {
-  template<template <class> class T> struct A {
-    template<template <class> class T> friend void A<T>::foo();
-  };
-
-  template <class> struct B {};
-  template class A<B>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.friend/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<class T> class A { }; 
-
-class X {
-  template<class T> friend class A<T*>; // expected-error{{partial specialization cannot be declared as a friend}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template <class T> struct A {
-  static T cond;
-  
-  template <class U> struct B {
-    static T twice(U value) {
-      return (cond ? value + value : value);
-    }
-  };
-};
-
-int foo() {
-  A<bool>::cond = true;
-  return A<bool>::B<int>::twice(4);
-}
-
-namespace PR6376 {
-  template<typename T>
-  struct X {
-    template<typename Y>
-    struct Y1 { }; //
-  };
-
-  template<>
-  struct X<float> {
-    template<typename Y>
-    struct Y1 { };
-  };
-
-  template<typename T, typename U>
-  struct Z : public X<T>::template Y1<U> { };
-
-  Z<float, int> z0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <class T> struct AA { 
-  template <class C> virtual void g(C); // expected-error{{'virtual' can not be specified on member function templates}}
-  virtual void f();
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.mem/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A { 
-  template <class T> operator T*();
-}; 
-
-template <class T> A::operator T*() { return 0; }
-template <> A::operator char*(){ return 0; } // specialization
-template A::operator void*(); // explicit instantiation
-
-int main() { 
-  A a;
-  int *ip; 
-  ip = a.operator int*();
-}
-
-// PR5742
-namespace PR5742 {
-  template <class T> struct A { };
-  template <class T> struct B { };
-
-  struct S {
-    template <class T> operator T();
-  } s;
-
-  void f() {
-    s.operator A<A<int> >();
-    s.operator A<B<int> >();
-    s.operator A<B<A<int> > >();
-  }
-}
-
-// PR5762
-class Foo {
- public:
-  template <typename T> operator T();
-  
-  template <typename T>
-  T As() {
-    return this->operator T();
-  }
-
-  template <typename T>
-  T As2() {
-    return operator T();
-  }
-  
-  int AsInt() {
-    return this->operator int();
-  }
-};
-
-template float Foo::As();
-template double Foo::As2();
-
-// Partial ordering with conversion function templates.
-struct X0 {
-  template<typename T> operator T*() {
-    T x = 1;
-    x = 17; // expected-error{{read-only variable is not assignable}}
-  }
-  
-  template<typename T> operator T*() const; // expected-note{{explicit instantiation refers here}}
-  
-  template<typename T> operator const T*() const {
-    T x = T();
-    return x; // expected-error{{cannot initialize return object of type 'const char *' with an lvalue of type 'char'}} \
-    // expected-error{{cannot initialize return object of type 'const int *' with an lvalue of type 'int'}}
-  }
-};
-
-template X0::operator const char*() const; // expected-note{{'X0::operator const char *<char>' requested here}}
-template X0::operator const int*(); // expected-note{{'X0::operator const int *<const int>' requested here}}
-template X0::operator float*() const; // expected-error{{explicit instantiation of undefined function template}}
-
-void test_X0(X0 x0, const X0 &x0c) {
-  x0.operator const int*(); // expected-note{{in instantiation of function template specialization}}
-  x0.operator float *();
-  x0c.operator const char*();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/deduction.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/deduction.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/deduction.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace DeductionForInstantiation {
-  template<unsigned I, typename ...Types>
-  struct X { };
-
-  template<typename ...Types>
-  void f0(X<sizeof...(Types), Types&...>) { }
-
-  // No explicitly-specified arguments
-  template void f0(X<0>);
-  template void f0(X<1, int&>);
-  template void f0(X<2, int&, short&>);
-
-  // One explicitly-specified argument
-  template void f0<float>(X<1, float&>);
-  template void f0<double>(X<1, double&>);
-
-  // Two explicitly-specialized arguments
-  template void f0<char, unsigned char>(X<2, char&, unsigned char&>);
-  template void f0<signed char, char>(X<2, signed char&, char&>);
-
-  // FIXME: Extension of explicitly-specified arguments
-  //  template void f0<short, int>(X<3, short&, int&, long&>);
-}
-
-namespace DeductionWithConversion {
-  template<char...> struct char_values {
-    static const unsigned value = 0;
-  };
-
-  template<int C1, char C3>
-  struct char_values<C1, 12, C3> {
-    static const unsigned value = 1;
-  };
-
-  int check0[char_values<1, 12, 3>::value == 1? 1 : -1];
-
-  template<int...> struct int_values {
-    static const unsigned value = 0;
-  };
-
-  template<unsigned char C1, unsigned char C3>
-  struct int_values<C1, 12, C3> {
-    static const unsigned value = 1;
-  };
-
-  int check1[int_values<256, 12, 3>::value == 0? 1 : -1];  
-  int check2[int_values<3, 12, 3>::value == 1? 1 : -1];  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-bind.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-bind.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-bind.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,353 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Example bind implementation from the variadic templates proposal,
-// ISO C++ committee document number N2080.
-
-// Helper type traits
-template<typename T>
-struct add_reference {
-  typedef T &type;
-};
-
-template<typename T>
-struct add_reference<T&> {
-  typedef T &type;
-};
-
-template<typename T>
-struct add_const_reference {
-  typedef T const &type;
-};
-
-template<typename T>
-struct add_const_reference<T&> {
-  typedef T &type;
-};
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-template<typename T> 
-class reference_wrapper { 
-  T *ptr;
-
-public:
-  reference_wrapper(T& t) : ptr(&t) { }
-  operator T&() const { return *ptr; }
-};
-
-template<typename T> reference_wrapper<T> ref(T& t) { 
-  return reference_wrapper<T>(t); 
-}
-template<typename T> reference_wrapper<const T> cref(const T& t) {
-  return reference_wrapper<const T>(t); 
-}
-
-template<typename... Values> class tuple;
-
-// Basis case: zero-length tuple
-template<> class tuple<> { };
-
-template<typename Head, typename... Tail> 
-class tuple<Head, Tail...> : private tuple<Tail...> { 
-  typedef tuple<Tail...> inherited;
-
-public: 
-  tuple() { }
-  // implicit copy-constructor is okay
-
-  // Construct tuple from separate arguments. 
-  tuple(typename add_const_reference<Head>::type v,
-        typename add_const_reference<Tail>::type... vtail) 
-    : m_head(v), inherited(vtail...) { }
-
-  // Construct tuple from another tuple. 
-  template<typename... VValues> tuple(const tuple<VValues...>& other)
-    : m_head(other.head()), inherited(other.tail()) { }
-
-  template<typename... VValues> tuple& 
-  operator=(const tuple<VValues...>& other) {
-    m_head = other.head(); 
-    tail() = other.tail(); 
-    return *this;
-  }
-
-  typename add_reference<Head>::type head() { return m_head; } 
-  typename add_reference<const Head>::type head() const { return m_head; }
-  inherited& tail() { return *this; } 
-  const inherited& tail() const { return *this; }
-
-protected: 
-  Head m_head;
-};
-
-// Creation functions
-template<typename T> 
-struct make_tuple_result {
-  typedef T type;
-};
-
-template<typename T> 
-struct make_tuple_result<reference_wrapper<T> > {
-  typedef T& type;
-};
-
-template<typename... Values> 
-tuple<typename make_tuple_result<Values>::type...> 
-make_tuple(const Values&... values) {
-  return tuple<typename make_tuple_result<Values>::type...>(values...);
-}
-
-template<typename... Values> 
-tuple<Values&...> tie(Values&... values) {
-  return tuple<Values&...>(values...);
-}
-
-// Helper classes
-template<typename Tuple> struct tuple_size;
-
-template<typename... Values> struct tuple_size<tuple<Values...> > {
-  static const int value = sizeof...(Values);
-};
-
-template<int I, typename Tuple> struct tuple_element;
-
-template<int I, typename Head, typename... Tail> 
-struct tuple_element<I, tuple<Head, Tail...> > {
-  typedef typename tuple_element<I-1, tuple<Tail...> >::type type;
-};
-
-template<typename Head, typename... Tail> 
-struct tuple_element<0, tuple<Head, Tail...> > {
-  typedef Head type;
-};
-
-// Element access
-template<int I, typename Tuple> class get_impl;
-template<int I, typename Head, typename... Values> 
-class get_impl<I, tuple<Head, Values...> > {
-  typedef typename tuple_element<I-1, tuple<Values...> >::type Element;
-  typedef typename add_reference<Element>::type RJ; 
-  typedef typename add_const_reference<Element>::type PJ;
-  typedef get_impl<I-1, tuple<Values...> > Next;
-public: 
-  static RJ get(tuple<Head, Values...>& t) { return Next::get(t.tail()); }
-  static PJ get(const tuple<Head, Values...>& t) { return Next::get(t.tail()); }
-};
-
-template<typename Head, typename... Values> 
-class get_impl<0, tuple<Head, Values...> > {
-  typedef typename add_reference<Head>::type RJ; 
-  typedef typename add_const_reference<Head>::type PJ;
-public: 
-  static RJ get(tuple<Head, Values...>& t) { return t.head(); } 
-  static PJ get(const tuple<Head, Values...>& t) { return t.head(); }
-};
-
-template<int I, typename... Values> typename add_reference<
-typename tuple_element<I, tuple<Values...> >::type >::type
-get(tuple<Values...>& t) { 
-  return get_impl<I, tuple<Values...> >::get(t);
-}
-
-template<int I, typename... Values> typename add_const_reference<
-typename tuple_element<I, tuple<Values...> >::type >::type
-get(const tuple<Values...>& t) { 
-  return get_impl<I, tuple<Values...> >::get(t);
-}
-
-// Relational operators
-inline bool operator==(const tuple<>&, const tuple<>&) { return true; }
-
-template<typename T, typename... TTail, typename U, typename... UTail> 
-bool operator==(const tuple<T, TTail...>& t, const tuple<U, UTail...>& u) {
-  return t.head() == u.head() && t.tail() == u.tail();
-}
-
-template<typename... TValues, typename... UValues> 
-bool operator!=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
-  return !(t == u); 
-}
-
-inline bool operator<(const tuple<>&, const tuple<>&) { return false; }
-
-template<typename T, typename... TTail, typename U, typename... UTail> 
-bool operator<(const tuple<T, TTail...>& t, const tuple<U, UTail...>& u) {
-  return (t.head() < u.head() || (!(t.head() < u.head()) && t.tail() < u.tail()));
-}
-
-template<typename... TValues, typename... UValues> 
-bool operator>(const tuple<TValues...>& t, const tuple<UValues...>& u) {
-  return u < t;
-}
-
-template<typename... TValues, typename... UValues>
-bool operator<=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
-  return !(u < t);
-}
-
-template<typename... TValues, typename... UValues>
-bool operator>=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
-  return !(t < u);
-}
-
-// make_indices helper
-template<int...> struct int_tuple {};
-// make_indexes impl is a helper for make_indexes 
-template<int I, typename IntTuple, typename... Types> struct make_indexes_impl;
-
-template<int I, int... Indexes, typename T, typename... Types>
-struct make_indexes_impl<I, int_tuple<Indexes...>, T, Types...> {
-  typedef typename make_indexes_impl<I+1, int_tuple<Indexes..., I>, Types...>::type type;
-};
-
-template<int I, int... Indexes> 
-struct make_indexes_impl<I, int_tuple<Indexes...> > {
-  typedef int_tuple<Indexes...> type; 
-};
-
-template<typename... Types>
-struct make_indexes : make_indexes_impl<0, int_tuple<>, Types...> { 
-}; 
-
-// Bind
-template<typename T> struct is_bind_expression {
-  static const bool value = false;
-};
-
-template<typename T> struct is_placeholder {
-  static const int value = 0;
-};
-
-
-template<typename F, typename... BoundArgs> class bound_functor {
-  typedef typename make_indexes<BoundArgs...>::type indexes; 
-public:
-  typedef typename F::result_type result_type; 
-  explicit bound_functor(const F& f, const BoundArgs&... bound_args)
-    : f(f), bound_args(bound_args...) { } template<typename... Args>
-  typename F::result_type operator()(Args&... args);
-private: F f;
-  tuple<BoundArgs...> bound_args;
-};
-
-template<typename F, typename... BoundArgs> 
-inline bound_functor<F, BoundArgs...> bind(const F& f, const BoundArgs&... bound_args) {
-  return bound_functor<F, BoundArgs...>(f, bound_args...);
-}
-
-template<typename F, typename ...BoundArgs>
-struct is_bind_expression<bound_functor<F, BoundArgs...> > {
-  static const bool value = true;
-};
-
-// enable_if helper
-template<bool Cond, typename T = void>
-struct enable_if;
-
-template<typename T>
-struct enable_if<true, T> {
-  typedef T type;
-};
-
-template<typename T>
-struct enable_if<false, T> { };
-
-// safe_tuple_element helper
-template<int I, typename Tuple, typename = void>
-struct safe_tuple_element { };
-
-template<int I, typename... Values> 
-struct safe_tuple_element<I, tuple<Values...>,
-                          typename enable_if<(I >= 0 && I < tuple_size<tuple<Values...> >::value)>::type> { 
-   typedef typename tuple_element<I, tuple<Values...> >::type type;
-};
-
-// mu
-template<typename Bound, typename... Args> 
-inline typename safe_tuple_element<is_placeholder<Bound>::value -1,
-                                   tuple<Args...> >::type 
-mu(Bound& bound_arg, const tuple<Args&...>& args) {
-  return get<is_placeholder<Bound>::value-1>(args);
-}
-
-template<typename T, typename... Args> 
-inline T& mu(reference_wrapper<T>& bound_arg, const tuple<Args&...>&) {
-  return bound_arg.get();
-}
-
-template<typename F, int... Indexes, typename... Args> 
-inline typename F::result_type 
-unwrap_and_forward(F& f, int_tuple<Indexes...>, const tuple<Args&...>& args) {
-  return f(get<Indexes>(args)...);
-}
-
-template<typename Bound, typename... Args> 
-inline typename enable_if<is_bind_expression<Bound>::value,
-                          typename Bound::result_type>::type 
-mu(Bound& bound_arg, const tuple<Args&...>& args) {
-  typedef typename make_indexes<Args...>::type Indexes; 
-  return unwrap_and_forward(bound_arg, Indexes(), args);
-}
-
-template<typename T>
-struct is_reference_wrapper {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_reference_wrapper<reference_wrapper<T>> {
-  static const bool value = true;
-};
-
-template<typename Bound, typename... Args> 
-inline typename enable_if<(!is_bind_expression<Bound>::value 
-                           && !is_placeholder<Bound>::value 
-                           && !is_reference_wrapper<Bound>::value), 
-                           Bound&>::type
-mu(Bound& bound_arg, const tuple<Args&...>&) {
-  return bound_arg;
-}
-
-template<typename F, typename... BoundArgs, int... Indexes, typename... Args> 
-typename F::result_type apply_functor(F& f, tuple<BoundArgs...>& bound_args, 
-                                      int_tuple<Indexes...>, 
-                                      const tuple<Args&...>& args) {
-  return f(mu(get<Indexes>(bound_args), args)...);
-}
-
-template<typename F, typename... BoundArgs> 
-template<typename... Args> 
-typename F::result_type bound_functor<F, BoundArgs...>::operator()(Args&... args) {
-  return apply_functor(f, bound_args, indexes(), tie(args...));
-}
-
-template<int N> struct placeholder { };
-template<int N>
-struct is_placeholder<placeholder<N>> {
-  static const int value = N;
-};
-
-template<typename T>
-struct plus {
-  typedef T result_type;
-
-  T operator()(T x, T y) { return x + y; }
-};
-
-placeholder<1> _1;
-
-// Test bind
-void test_bind() {
-  int x = 17;
-  int y = 25;
-  bind(plus<int>(), x, _1)(y);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Example function implementation from the variadic templates proposal,
-// ISO C++ committee document number N2080.
-
-template<typename Signature> class function;
-
-template<typename R, typename... Args> class invoker_base {
-public: 
-  virtual ~invoker_base() { } 
-  virtual R invoke(Args...) = 0; 
-  virtual invoker_base* clone() = 0;
-};
-
-template<typename F, typename R, typename... Args> 
-class functor_invoker : public invoker_base<R, Args...> {
-public: 
-  explicit functor_invoker(const F& f) : f(f) { } 
-  R invoke(Args... args) { return f(args...); } 
-  functor_invoker* clone() { return new functor_invoker(f); }
-
-private:
-  F f;
-};
-
-template<typename R, typename... Args>
-class function<R (Args...)> {
-public: 
-  typedef R result_type;
-  function() : invoker (0) { }
-  function(const function& other) : invoker(0) { 
-    if (other.invoker)
-      invoker = other.invoker->clone();
-  }
-
-  template<typename F> function(const F& f) : invoker(0) {
-    invoker = new functor_invoker<F, R, Args...>(f);
-  }
-
-  ~function() { 
-    if (invoker)
-      delete invoker;
-  }
-
-  function& operator=(const function& other) { 
-    function(other).swap(*this); 
-    return *this;
-  }
-
-  template<typename F> 
-  function& operator=(const F& f) {
-    function(f).swap(*this); 
-    return *this;
-  }
-
-  void swap(function& other) { 
-    invoker_base<R, Args...>* tmp = invoker; 
-    invoker = other.invoker; 
-    other.invoker = tmp;
-  }
-
-  result_type operator()(Args... args) const { 
-    return invoker->invoke(args...);
-  }
-
-private: 
-  invoker_base<R, Args...>* invoker;
-};
-
-template<typename T>
-struct add {
-  T operator()(T x, T y) { return x + y; }
-};
-
-int add_ints(int x, int y) { return x + y; }
-
-void test_function() {
-  function<int(int, int)> f2a;
-  function<int(int, int)> f2b = add<int>();
-  function<int(int, int)> f2c = add<float>();
-  function<int(int, int)> f2d(f2b);
-  function<int(int, int)> f2e = &add_ints;
-  f2c = f2d;
-  f2d = &add_ints;
-  f2c(1.0, 3);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-tuple.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-tuple.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/example-tuple.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,261 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Example tuple implementation from the variadic templates proposal,
-// ISO C++ committee document number N2080.
-
-// Helper type traits
-template<typename T>
-struct add_reference {
-  typedef T &type;
-};
-
-template<typename T>
-struct add_reference<T&> {
-  typedef T &type;
-};
-
-template<typename T>
-struct add_const_reference {
-  typedef T const &type;
-};
-
-template<typename T>
-struct add_const_reference<T&> {
-  typedef T &type;
-};
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-template<typename T> 
-class reference_wrapper { 
-  T *ptr;
-
-public:
-  reference_wrapper(T& t) : ptr(&t) { }
-  operator T&() const { return *ptr; }
-};
-
-template<typename T> reference_wrapper<T> ref(T& t) { 
-  return reference_wrapper<T>(t); 
-}
-template<typename T> reference_wrapper<const T> cref(const T& t) {
-  return reference_wrapper<const T>(t); 
-}
-
-template<typename... Values> class tuple;
-
-// Basis case: zero-length tuple
-template<> class tuple<> { };
-
-template<typename Head, typename... Tail> 
-class tuple<Head, Tail...> : private tuple<Tail...> { 
-  typedef tuple<Tail...> inherited;
-
-public: 
-  tuple() { }
-  // implicit copy-constructor is okay
-
-  // Construct tuple from separate arguments. 
-  tuple(typename add_const_reference<Head>::type v,
-        typename add_const_reference<Tail>::type... vtail) 
-    : m_head(v), inherited(vtail...) { }
-
-  // Construct tuple from another tuple. 
-  template<typename... VValues> tuple(const tuple<VValues...>& other)
-    : m_head(other.head()), inherited(other.tail()) { }
-
-  template<typename... VValues> tuple& 
-  operator=(const tuple<VValues...>& other) {
-    m_head = other.head(); 
-    tail() = other.tail(); 
-    return *this;
-  }
-
-  typename add_reference<Head>::type head() { return m_head; } 
-  typename add_reference<const Head>::type head() const { return m_head; }
-  inherited& tail() { return *this; } 
-  const inherited& tail() const { return *this; }
-
-protected: 
-  Head m_head;
-};
-
-void test_tuple() {
-  tuple<> t0a;
-  tuple<> t0b(t0a);
-  t0a = t0b;
-
-  tuple<int> t1a;
-  tuple<int> t1b(17);
-  tuple<int> t1c(t1b);
-  t1a = t1b;
-
-  tuple<float> t1d(3.14159);
-  tuple<float> t1e(t1d);
-  t1d = t1e;
-
-  int i;
-  float f;
-  double d;
-  tuple<int*, float*, double*> t3a(&i, &f, &d);
-}
-
-// Creation functions
-template<typename T> 
-struct make_tuple_result {
-  typedef T type;
-};
-
-template<typename T> 
-struct make_tuple_result<reference_wrapper<T> > {
-  typedef T& type;
-};
-
-template<typename... Values> 
-tuple<typename make_tuple_result<Values>::type...> 
-make_tuple(const Values&... values) {
-  return tuple<typename make_tuple_result<Values>::type...>(values...);
-}
-
-template<typename... Values> 
-tuple<Values&...> tie(Values&... values) {
-  return tuple<Values&...>(values...);
-}
-
-template<typename T> const T *addr(const T& ref) { return &ref; }
-void test_creation_functions() {
-  int i;
-  float f;
-  double d;
-  const tuple<int, float&, const double&> *t3p = addr(make_tuple(i, ref(f), cref(d)));
-  const tuple<int&, float&, double&> *t3q = addr(tie(i, f, d));
-}
-
-// Helper classes
-template<typename Tuple> struct tuple_size;
-
-template<typename... Values> struct tuple_size<tuple<Values...> > {
-  static const int value = sizeof...(Values);
-};
-
-int check_tuple_size_0[tuple_size<tuple<> >::value == 0? 1 : -1];
-int check_tuple_size_1[tuple_size<tuple<int>>::value == 1? 1 : -1];
-int check_tuple_size_2[tuple_size<tuple<float, double>>::value == 2? 1 : -1];
-int check_tuple_size_3[tuple_size<tuple<char, unsigned char, signed char>>::value == 3? 1 : -1];
-
-template<int I, typename Tuple> struct tuple_element;
-
-template<int I, typename Head, typename... Tail> 
-struct tuple_element<I, tuple<Head, Tail...> > {
-  typedef typename tuple_element<I-1, tuple<Tail...> >::type type;
-};
-
-template<typename Head, typename... Tail> 
-struct tuple_element<0, tuple<Head, Tail...> > {
-  typedef Head type;
-};
-
-int check_tuple_element_0[is_same<tuple_element<0, tuple<int&, float, double>>::type,
-                                  int&>::value? 1 : -1];
-
-int check_tuple_element_1[is_same<tuple_element<1, tuple<int&, float, double>>::type,
-                                  float>::value? 1 : -1];
-
-int check_tuple_element_2[is_same<tuple_element<2, tuple<int&, float, double>>::type,
-                                  double>::value? 1 : -1];
-
-// Element access
-template<int I, typename Tuple> class get_impl;
-template<int I, typename Head, typename... Values> 
-class get_impl<I, tuple<Head, Values...> > {
-  typedef typename tuple_element<I-1, tuple<Values...> >::type Element;
-  typedef typename add_reference<Element>::type RJ; 
-  typedef typename add_const_reference<Element>::type PJ;
-  typedef get_impl<I-1, tuple<Values...> > Next;
-public: 
-  static RJ get(tuple<Head, Values...>& t) { return Next::get(t.tail()); }
-  static PJ get(const tuple<Head, Values...>& t) { return Next::get(t.tail()); }
-};
-
-template<typename Head, typename... Values> 
-class get_impl<0, tuple<Head, Values...> > {
-  typedef typename add_reference<Head>::type RJ; 
-  typedef typename add_const_reference<Head>::type PJ;
-public: 
-  static RJ get(tuple<Head, Values...>& t) { return t.head(); } 
-  static PJ get(const tuple<Head, Values...>& t) { return t.head(); }
-};
-
-template<int I, typename... Values> typename add_reference<
-typename tuple_element<I, tuple<Values...> >::type >::type
-get(tuple<Values...>& t) { 
-  return get_impl<I, tuple<Values...> >::get(t);
-}
-
-template<int I, typename... Values> typename add_const_reference<
-typename tuple_element<I, tuple<Values...> >::type >::type
-get(const tuple<Values...>& t) { 
-  return get_impl<I, tuple<Values...> >::get(t);
-}
-
-void test_element_access(tuple<int*, float*, double*&> t3) {
-  int i;
-  float f;
-  double d;
-  get<0>(t3) = &i;
-  get<1>(t3) = &f;
-  get<2>(t3) = &d;
-}
-
-// Relational operators
-inline bool operator==(const tuple<>&, const tuple<>&) { return true; }
-
-template<typename T, typename... TTail, typename U, typename... UTail> 
-bool operator==(const tuple<T, TTail...>& t, const tuple<U, UTail...>& u) {
-  return t.head() == u.head() && t.tail() == u.tail();
-}
-
-template<typename... TValues, typename... UValues> 
-bool operator!=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
-  return !(t == u); 
-}
-
-inline bool operator<(const tuple<>&, const tuple<>&) { return false; }
-
-template<typename T, typename... TTail, typename U, typename... UTail> 
-bool operator<(const tuple<T, TTail...>& t, const tuple<U, UTail...>& u) {
-  return (t.head() < u.head() || (!(t.head() < u.head()) && t.tail() < u.tail()));
-}
-
-template<typename... TValues, typename... UValues> 
-bool operator>(const tuple<TValues...>& t, const tuple<UValues...>& u) {
-  return u < t;
-}
-
-template<typename... TValues, typename... UValues>
-bool operator<=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
-  return !(u < t);
-}
-
-template<typename... TValues, typename... UValues>
-bool operator>=(const tuple<TValues...>& t, const tuple<UValues...>& u) {
-  return !(t < u);
-}
-
-void test_relational_operators(tuple<int*, float*, double*> t3) {
-  (void)(t3 == t3);
-  (void)(t3 != t3);
-  (void)(t3 < t3);
-  (void)(t3 <= t3);
-  (void)(t3 >= t3);
-  (void)(t3 > t3);
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/ext-blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/ext-blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/ext-blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fblocks -fsyntax-only -verify %s
-
-// Tests the use of blocks with variadic templates.
-template<typename ...Args>
-int f0(Args ...args) {
-  return ^ {
-    return sizeof...(Args);
-  }() + ^ {
-    return sizeof...(args);
-  }();
-}
-
-template<typename ...Args>
-int f1(Args ...args) {
-  return ^ {
-    return f0(args...);
-  }();
-}
-
-template int f0(int, float, double);
-template int f1(const char*, int, float, double);
-
-template<typename ...Args>
-int f2(Args ...args) {
-  return ^(Args ...block_args) {
-    return f1(block_args...);
-  }(args + 0 ...);
-}
-
-template int f2(const char*, int, float, double);
-
-template<typename ...Args>
-int f3(Args ...args) {
-  return ^(Args *...block_args) {
-    return f1(block_args...);
-  }(&args...);
-}
-
-template int f3(const char*, int, float, double);
-
-template<typename ...Args>
-int PR9953(Args ...args) {
-  return ^(Args *...block_args) {
-    return f1(block_args); // expected-error{{expression contains unexpanded parameter pack 'block_args'}}
-  }(&args...);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/fixed-expansion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/fixed-expansion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/fixed-expansion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,127 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-template<typename T, typename U> struct pair { };
-template<typename ...Types> struct tuple { };
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-namespace ExpandIntoFixed {
-  template<typename T, 
-           typename U, 
-           typename V = pair<T, U>, 
-           typename W = V*> 
-  class X0 { };
-
-  template<typename ...Ts>
-  class X1 {
-  public:
-    typedef X0<Ts...> type;
-  };
-
-  static_assert(is_same<X1<int, int>::type, 
-                        X0<int, int, pair<int, int>, pair<int, int>*>>::value,
-                "fails with two default arguments");
-
-  static_assert(is_same<X1<int, int, float>::type, 
-                        X0<int, int, float, float*>>::value,
-                "fails with one default argument");
-
-  static_assert(is_same<X1<int, int, float, double>::type, 
-                        X0<int, int, float, double>>::value,
-                "fails with no default arguments");
-}
-
-namespace ExpandIntoFixedShifted {
-  template<typename T, 
-           typename U, 
-           typename V = pair<T, U>, 
-           typename W = V*> 
-  class X0 { };
-
-  template<typename ...Ts>
-  class X1 {
-  public:
-    typedef X0<char, Ts...> type;
-  };
-
-  static_assert(is_same<X1<int>::type, 
-                        X0<char, int, pair<char, int>, pair<char, int>*>>::value,
-                "fails with two default arguments");
-
-  static_assert(is_same<X1<int, float>::type, 
-                        X0<char, int, float, float*>>::value,
-                "fails with one default argument");
-
-  static_assert(is_same<X1<int, float, double>::type, 
-                        X0<char, int, float, double>>::value,
-                "fails with no default arguments");
-}
-
-namespace Deduction {
-  template <typename X, typename Y = double> struct Foo {};
-  template <typename ...Args> tuple<Args...> &foo(Foo<Args...>);
-
-  void call_foo(Foo<int, float> foo_if, Foo<int> foo_i) {
-    tuple<int, float> &t1 = foo(foo_if);
-    tuple<int, double> &t2 = foo(foo_i);
-  }
-}
-
-namespace PR9021a {
-  template<typename, typename> 
-  struct A { };
-
-  template<typename ...T>
-  struct B { 
-    A<T...> a1;
-  };
-
-  void test() {
-    B<int, int> c;
-  }
-}
-
-namespace PR9021b {
-  template<class, class>
-  struct t2
-  {
-    
-  };
-  
-  template<template<class...> class M>
-  struct m
-  {
-    template<class... B>
-    using inner = M<B...>;
-  };
-
-  m<t2> sta2;
-}
-
-namespace PartialSpecialization {
-  template<typename T, typename U, typename V = U>
-  struct X0; // expected-note{{template is declared here}}
-
-  template<typename ...Ts>
-  struct X0<Ts...> {
-  };
-
-  X0<int> x0i; // expected-error{{too few template arguments for class template 'X0'}}
-  X0<int, float> x0if;
-  X0<int, float, double> x0ifd;
-}
-
-namespace FixedAliasTemplate {
-  template<typename,typename,typename> struct S {};
-  template<typename T, typename U> using U = S<T, int, U>;
-  template<typename...Ts> U<Ts...> &f(U<Ts...>, Ts...);
-  S<int, int, double> &s1 = f({}, 0, 0.0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/injected-class-name.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/injected-class-name.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/injected-class-name.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Check for declaration matching with out-of-line declarations and
-// variadic templates, which involves proper computation of the
-// injected-class-name.
-template<typename T, typename ...Types>
-struct X0 {
-  typedef T type;
-
-  void f0(T);
-  type f1(T);
-};
-
-template<typename T, typename ...Types>
-void X0<T, Types...>::f0(T) { }
-
-template<typename T, typename ...Types>
-typename X0<T, Types...>::type X0<T, Types...>::f1(T) { }
-
-template<typename T, typename ...Types>
-struct X0<T, T, Types...> {
-  typedef T* result;
-  result f3();
-
-  template<typename... InnerTypes>
-  struct Inner;
-};
-
-template<typename T, typename ...Types>
-typename X0<T, T, Types...>::result X0<T, T, Types...>::f3() { return 0; }
-
-template<typename T, typename ...Types>
-template<typename ...InnerTypes>
-struct X0<T, T, Types...>::Inner {
-  template<typename ...ReallyInner> void f4();
-};
-
-template<typename T, typename ...Types>
-template<typename ...InnerTypes>
-template<typename ...ReallyInner>
-void X0<T, T, Types...>::Inner<InnerTypes...>::f4() { }
-
-namespace rdar8848837 {
-  // Out-of-line definitions that cause rebuilding in the current
-  // instantiation.
-  template<typename F> struct X;
-
-  template<typename R, typename ...ArgTypes>
-  struct X<R(ArgTypes...)> {
-    X<R(ArgTypes...)> f();
-  };
-
-  template<typename R, typename ...ArgTypes>
-  X<R(ArgTypes...)> X<R(ArgTypes...)>::f() { return *this; }
-
-
-  X<int(float, double)> xif;
-
-  template<unsigned> struct unsigned_c { };
-  template<typename ...ArgTypes> int g(ArgTypes...);
-
-  template<typename F> struct X1;
-
-  template<typename R, typename ...ArgTypes>
-  struct X1<R(ArgTypes...)> {
-    unsigned_c<sizeof(1 + g(ArgTypes()...))> f();
-  };
-
-  template<typename R, typename ...ArgTypes>
-  unsigned_c<sizeof(1 + g(ArgTypes()...))> X1<R(ArgTypes...)>::f() { 
-    return unsigned_c<sizeof(int)>();
-  }
-
-  X1<int(float, double)> xif2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/metafunctions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/metafunctions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/metafunctions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,274 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// This is a collection of various template metafunctions involving
-// variadic templates, which are meant to exercise common use cases.
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-template<typename...> struct tuple { };
-template<int ...> struct int_tuple { };
-template<typename T, typename U> struct pair { };
-
-namespace Count {
-  template<typename Head, typename ...Tail>
-  struct count {
-    static const unsigned value = 1 + count<Tail...>::value;
-  };
-
-  template<typename T>
-  struct count<T> {
-    static const unsigned value = 1;
-  };
-
-  int check1[count<int>::value == 1? 1 : -1];
-  int check2[count<float, double>::value == 2? 1 : -1];
-  int check3[count<char, signed char, unsigned char>::value == 3? 1 : -1];
-}
-
-namespace CountWithPackExpansion {
-  template<typename ...> struct count;
-
-  template<typename Head, typename ...Tail>
-  struct count<Head, Tail...> {
-    static const unsigned value = 1 + count<Tail...>::value;
-  };
-
-  template<>
-  struct count<> {
-    static const unsigned value = 0;
-  };
-
-  int check0[count<>::value == 0? 1 : -1];
-  int check1[count<int>::value == 1? 1 : -1];
-  int check2[count<float, double>::value == 2? 1 : -1];
-  int check3[count<char, signed char, unsigned char>::value == 3? 1 : -1];
-}
-
-namespace Replace {
-  // Simple metafunction that replaces the template arguments of
-  // template template parameters with 'int'.
-  template<typename T>
-  struct EverythingToInt;
-
-  template<template<typename ...> class TT, typename T1, typename T2>
-  struct EverythingToInt<TT<T1, T2> > {
-    typedef TT<int, int> type;
-  };
-
-  int check0[is_same<EverythingToInt<tuple<double, float>>::type, 
-             tuple<int, int>>::value? 1 : -1];
-}
-
-namespace Math {
-  template<int ...Values>
-  struct double_values {
-    typedef int_tuple<Values*2 ...> type;
-  };
-
-  int check0[is_same<double_values<1, 2, -3>::type, 
-                     int_tuple<2, 4, -6>>::value? 1 : -1];
-
-  template<int ...Values>
-  struct square {
-    typedef int_tuple<(Values*Values)...> type;
-  };
-
-  int check1[is_same<square<1, 2, -3>::type, 
-                     int_tuple<1, 4, 9>>::value? 1 : -1];
-
-  template<typename IntTuple> struct square_tuple;
-
-  template<int ...Values>
-  struct square_tuple<int_tuple<Values...>> {
-    typedef int_tuple<(Values*Values)...> type;
-  };
-
-  int check2[is_same<square_tuple<int_tuple<1, 2, -3> >::type, 
-                     int_tuple<1, 4, 9>>::value? 1 : -1];
-
-  template<int ...Values> struct sum;
-
-  template<int First, int ...Rest> 
-  struct sum<First, Rest...> {
-    static const int value = First + sum<Rest...>::value;
-  };
-
-  template<>
-  struct sum<> {
-    static const int value = 0;
-  };
-
-  int check3[sum<1, 2, 3, 4, 5>::value == 15? 1 : -1];
-
-  template<int ... Values>
-  struct lazy_sum {
-    int operator()() {
-      return sum<Values...>::value;
-    }
-  };
-
-  void f() {
-    lazy_sum<1, 2, 3, 4, 5>()();
-  }
-}
-
-namespace ListMath {
-  template<typename T, T ... V> struct add;
-
-  template<typename T, T i, T ... V>
-  struct add<T, i, V...> {
-    static const T value = i + add<T, V...>::value; 
-  };
-
-  template<typename T>
-  struct add<T> {
-    static const T value = T(); 
-  };
-
-  template<typename T, T ... V>
-  struct List {
-    struct sum {
-      static const T value = add<T, V...>::value;
-    };
-  };
-
-  template<int ... V>
-  struct ListI : public List<int, V...> {
-  };
-
-  int check0[ListI<1, 2, 3>::sum::value == 6? 1 : -1];
-}
-
-namespace Indices {
-  template<unsigned I, unsigned N, typename IntTuple>
-  struct build_indices_impl;
-
-  template<unsigned I, unsigned N, int ...Indices>
-  struct build_indices_impl<I, N, int_tuple<Indices...> >
-    : build_indices_impl<I+1, N, int_tuple<Indices..., I> > {
-  };
-
-  template<unsigned N, int ...Indices> 
-  struct build_indices_impl<N, N, int_tuple<Indices...> > {
-    typedef int_tuple<Indices...> type;
-  };
-
-  template<unsigned N>
-  struct build_indices : build_indices_impl<0, N, int_tuple<> > { };
-
-  int check0[is_same<build_indices<5>::type,
-                     int_tuple<0, 1, 2, 3, 4>>::value? 1 : -1];
-}
-
-namespace TemplateTemplateApply {
-  template<typename T, template<class> class ...Meta>
-  struct apply_each {
-    typedef tuple<typename Meta<T>::type...> type;
-  };
-
-  template<typename T> 
-  struct add_reference {
-    typedef T& type;
-  };
-
-  template<typename T> 
-  struct add_pointer {
-    typedef T* type;
-  };
-
-  template<typename T> 
-  struct add_const {
-    typedef const T type;
-  };
-
-  int check0[is_same<apply_each<int, 
-                                add_reference, add_pointer, add_const>::type,
-                     tuple<int&, int*, int const>>::value? 1 : -1];
-
-  template<typename T, template<class> class ...Meta>
-  struct apply_each_indirect {
-    typedef typename apply_each<T, Meta...>::type type;
-  };
-
-  int check1[is_same<apply_each_indirect<int, add_reference, add_pointer, 
-                                         add_const>::type,
-                     tuple<int&, int*, int const>>::value? 1 : -1];
-
-  template<typename T, typename ...Meta>
-  struct apply_each_nested {
-    typedef typename apply_each<T, Meta::template apply...>::type type;
-  };
-
-  struct add_reference_meta {
-    template<typename T>
-    struct apply {
-      typedef T& type;
-    };
-  };
-
-  struct add_pointer_meta {
-    template<typename T>
-    struct apply {
-      typedef T* type;
-    };
-  };
-
-  struct add_const_meta {
-    template<typename T>
-    struct apply {
-      typedef const T type;
-    };
-  };
-
-  int check2[is_same<apply_each_nested<int, add_reference_meta, 
-                                       add_pointer_meta, add_const_meta>::type,
-                     tuple<int&, int*, int const>>::value? 1 : -1];
-
-}
-
-namespace FunctionTypes {
-  template<typename FunctionType>
-  struct Arity;
-
-  template<typename R, typename ...Types>
-  struct Arity<R(Types...)> {
-    static const unsigned value = sizeof...(Types);
-  };
-
-  template<typename R, typename ...Types>
-  struct Arity<R(Types......)> {
-    static const unsigned value = sizeof...(Types);
-  };
-
-  template<typename R, typename T1, typename T2, typename T3, typename T4>
-  struct Arity<R(T1, T2, T3, T4)>; // expected-note{{template is declared here}}
-
-  int check0[Arity<int()>::value == 0? 1 : -1];
-  int check1[Arity<int(float, double)>::value == 2? 1 : -1];
-  int check2[Arity<int(float...)>::value == 1? 1 : -1];
-  int check3[Arity<int(float, double, long double...)>::value == 3? 1 : -1];
-  Arity<int(float, double, long double, char)> check4; // expected-error{{implicit instantiation of undefined template 'FunctionTypes::Arity<int (float, double, long double, char)>'}}
-}
-
-namespace SuperReplace {
-  template<typename T>
-  struct replace_with_int {
-    typedef int type;
-  };
-  
-  template<template<typename ...> class TT, typename ...Types>
-  struct replace_with_int<TT<Types...>> {
-    typedef TT<typename replace_with_int<Types>::type...> type;
-  };
-  
-  int check0[is_same<replace_with_int<pair<tuple<float, double, short>,
-                                           pair<char, unsigned char>>>::type,
-                     pair<tuple<int, int, int>, pair<int, int>>>::value? 1 : -1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,318 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<typename T, T ...Values> struct value_tuple {};
-template<typename...> struct tuple { };
-template<typename T, typename U> struct pair { };
-
-template<typename T, T Value> struct value_c;
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-template<typename T>
-struct X0 {
-  template<T ...Values>
-  void f(value_tuple<T, Values...> * = 0);
-};
-
-void test_X0() {
-  X0<int>().f<1, 2, 3, 4, 5>();
-}
-
-namespace PacksAtDifferentLevels {
-
-  template<typename ...Types>
-  struct X {
-    template<typename> struct Inner {
-      static const unsigned value = 1;
-    };
-
-    template<typename ...YTypes>
-    struct Inner<tuple<pair<Types, YTypes>...> > {
-      static const unsigned value = sizeof...(Types) - sizeof...(YTypes);
-    };
-  };
-
-  int check0[X<short, int, long>::Inner<tuple<pair<short, unsigned short>,
-                                             pair<int, unsigned int>,
-                                             pair<long, unsigned long>>
-                                       >::value == 0? 1 : -1];
-
-  int check1[X<short, int>::Inner<tuple<pair<short, unsigned short>,
-                                        pair<int, unsigned int>,
-                                        pair<long, unsigned long>>
-                                       >::value == 1? 1 : -1]; 
-
-  template<unsigned ...Values> struct unsigned_tuple { };
-  template<typename ...Types>
-  struct X1 {
-    template<typename, typename> struct Inner {
-      static const unsigned value = 0;
-    };
-
-    template<typename ...YTypes>
-    struct Inner<tuple<pair<Types, YTypes>...>,
-                 unsigned_tuple<sizeof(Types) + sizeof(YTypes)...>> {
-      static const unsigned value = 1;
-    };
-  };
-
-  int check2[X1<short, int, long>::Inner<tuple<pair<short, unsigned short>,
-                                               pair<int, unsigned int>,
-                                               pair<long, unsigned long>>,
-                      unsigned_tuple<sizeof(short) + sizeof(unsigned short),
-                                     sizeof(int) + sizeof(unsigned int),
-                                     sizeof(long) + sizeof(unsigned long)>
-                                       >::value == 1? 1 : -1];
-  int check3[X1<short, int>::Inner<tuple<pair<short, unsigned short>,
-                                         pair<int, unsigned int>,
-                                         pair<long, unsigned long>>,
-                      unsigned_tuple<sizeof(short) + sizeof(unsigned short),
-                                     sizeof(int) + sizeof(unsigned int),
-                                     sizeof(long) + sizeof(unsigned long)>
-                                       >::value == 0? 1 : -1];
-
-  template<typename ...Types>
-  struct X2 {
-    template<typename> struct Inner {
-      static const unsigned value = 1;
-    };
-
-    template<typename R, typename ...YTypes>
-    struct Inner<R(pair<Types, YTypes>...)> {
-      static const unsigned value = sizeof...(Types) - sizeof...(YTypes);
-    };
-  };
-
-  int check4[X2<short, int, long>::Inner<int(pair<short, unsigned short>,
-                                            pair<int, unsigned int>,
-                                            pair<long, unsigned long>)
-                                     >::value == 0? 1 : -1];
-
-  int check5[X2<short, int>::Inner<int(pair<short, unsigned short>,
-                                       pair<int, unsigned int>,
-                                       pair<long, unsigned long>)
-                                     >::value == 1? 1 : -1]; 
-
-  template<typename T, typename U>
-  struct some_function_object {
-    template<typename>
-    struct result_of;
-  };
-
-  template<template<class> class...> struct metafun_tuple { };
-
-  template<typename ...Types1>
-  struct X3 {
-    template<typename, typename> struct Inner {
-      static const unsigned value = 0;
-    };
-
-    template<typename ...Types2>
-    struct Inner<tuple<pair<Types1, Types2>...>,
-                 metafun_tuple<some_function_object<Types1, Types2>::template result_of...> > {
-      static const unsigned value = 1;
-    };
-  };
-
-  int check6[X3<short, int, long>::Inner<tuple<pair<short, unsigned short>,
-                                               pair<int, unsigned int>,
-                                               pair<long, unsigned long>>,
-                                 metafun_tuple<
-                         some_function_object<short, unsigned short>::result_of,
-                         some_function_object<int, unsigned int>::result_of,
-                         some_function_object<long, unsigned long>::result_of>
-                                     >::value == 1? 1 : -1];
-  int check7[X3<short, int>::Inner<tuple<pair<short, unsigned short>,
-                                               pair<int, unsigned int>,
-                                               pair<long, unsigned long>>,
-                                 metafun_tuple<
-                         some_function_object<short, unsigned short>::result_of,
-                         some_function_object<int, unsigned int>::result_of,
-                         some_function_object<long, unsigned long>::result_of>
-                                     >::value == 0? 1 : -1];
-
-  template<unsigned I, unsigned J> struct unsigned_pair { };
-
-  template<unsigned ...Values1>
-  struct X4 {
-    template<typename> struct Inner {
-      static const unsigned value = 0;
-    };
-
-    template<unsigned ...Values2>
-    struct Inner<tuple<unsigned_pair<Values1, Values2>...>> {
-      static const unsigned value = 1;
-    };
-  };
-
-  int check8[X4<1, 3, 5>::Inner<tuple<unsigned_pair<1, 2>,
-                                      unsigned_pair<3, 4>,
-                                      unsigned_pair<5, 6>>
-                                >::value == 1? 1 : -1];
-  int check9[X4<1, 3>::Inner<tuple<unsigned_pair<1, 2>,
-                                   unsigned_pair<3, 4>,
-                                   unsigned_pair<5, 6>>
-                             >::value == 0? 1 : -1];
-
-  template<class> struct add_reference;
-  template<class> struct add_pointer;
-  template<class> struct add_const;
-
-  template<template<class> class ...Templates>
-  struct X5 {
-    template<typename> struct Inner {
-      static const unsigned value = 0;
-    };
-
-    template<typename ...Types>
-    struct Inner<tuple<Templates<Types>...>> {
-      static const unsigned value = 1;
-    };
-  };
-
-  int check10[X5<add_reference, add_pointer, add_const>
-                ::Inner<tuple<add_reference<int>,
-                              add_pointer<float>,
-                              add_const<double>>>::value == 1? 1 : -1];
-  int check11[X5<add_reference, add_pointer>
-                ::Inner<tuple<add_reference<int>,
-                              add_pointer<float>,
-                              add_const<double>>>::value == 0? 1 : -1];
-
-  namespace PR13811 {
-    constexpr int g(int n, int m) { return n * 10 + m; }
-
-    template<typename...A>
-    struct X6 {
-      template<typename...B>
-      constexpr auto f1(A ...a) const -> decltype(g(A(a + B())...)) { return g(A(a + B())...); }
-
-      template<typename...B>
-      constexpr auto f2(A ...a, B ...b) const -> decltype(g((&a)[b] ...)) { return g((&a)[b] ...); } // expected-note {{past-the-end}}
-
-      template<typename...B> struct Inner {
-        template<typename...C>
-        constexpr auto f(A ...a, B ...b, C ...c) const -> decltype(g(a+b+c...)) { return g(a+b+c...); }
-      };
-    };
-    struct A { constexpr operator int() const { return 2; } };
-    struct B { constexpr operator int() const { return 1; } };
-
-    static_assert(X6<unsigned char, int>().f1<A, B>(255, 1) == 12, "");
-    static_assert(X6<int, int>().f2(3, 4, 0, 0) == 34, "");
-    static_assert(X6<int, int>().f2(3, 4, 0, 1) == 34, ""); // expected-error {{constant expression}} expected-note {{in call}}
-    static_assert(X6<int, int>::Inner<int, int>().f(1, 2, 3, 4, 5, 6) == 102, "");
-  }
-}
-
-namespace ExpandingNonTypeTemplateParameters {
-  template<typename ...Types>
-  struct tuple_of_values {
-    template<Types ...Values> // expected-error{{a non-type template parameter cannot have type 'float'}} \
-    // expected-note{{template parameter is declared here}}
-    struct apply { // expected-note 2{{template is declared here}}
-      typedef tuple<value_c<Types, Values>...> type;
-    };
-  };
-
-  int i;
-  float f;
-  int check_tuple_of_values_1[
-        is_same<tuple_of_values<int&, float&, char, int>::apply<i, f, 'a', 17>
-                  ::type,
-                tuple<value_c<int&, i>, value_c<float&, f>, value_c<char, 'a'>,
-                      value_c<int, 17>>
-                >::value? 1 : -1];
-
-  tuple_of_values<int, float> tv1; // expected-note{{in instantiation of template class 'ExpandingNonTypeTemplateParameters::tuple_of_values<int, float>' requested here}}
-
-  tuple_of_values<int&, float&>::apply<i, i>::type tv2; // expected-error{{non-type template parameter of reference type 'float &' cannot bind to template argument of type 'int'}}
-
-  tuple_of_values<int&, float&>::apply<i>::type tv3; // expected-error{{too few template arguments for class template 'apply'}}
-
-  tuple_of_values<int&, float&>::apply<i, f, i>::type tv4; // expected-error{{too many template arguments for class template 'apply'}}
-}
-
-namespace ExpandingFunctionParameters {
-  template<typename ...T>
-  struct X0 {
-    typedef int type;
-  };
-
-  template<typename ...T>
-  struct X1 {
-    template<typename ... U>
-    typename X0<T(T, U...)...>::type f(U...);
-  };
-
-  void test() {
-    X1<float> x1;
-    x1.f(17, 3.14159);
-  }
-}
-
-namespace PR10230 {
-  template<typename>
-  struct s
-  {
-    template<typename... Args>
-    auto f() -> int(&)[sizeof...(Args)];
-  };
-
-  void main()
-  {
-    int (&ir1)[1] = s<int>().f<int>();
-    int (&ir3)[3] = s<int>().f<int, float, double>();
-  }
-}
-
-namespace PR13386 {
-  template<typename...> struct tuple {};
-  template<typename...T>
-  struct S {
-    template<typename...U>
-    void f(T &&...t, U &&...u) {} // expected-note {{candidate}}
-    template<typename...U>
-    void g(U &&...u, T &&...t) {} // expected-note {{candidate}}
-    template<typename...U>
-    void h(tuple<T, U> &&...) {} // expected-note 2{{candidate}}
-
-    template<typename...U>
-    struct X {
-      template<typename...V>
-      void x(tuple<T, U, V> &&...); // expected-error {{different lengths}}
-    };
-  };
-
-  void test() {
-    S<>().f();
-    S<>().f(0);
-    S<int>().f(0);
-    S<int>().f(0, 1);
-    S<int, int>().f(0); // expected-error {{no matching member function for call}}
-
-    S<>().g();
-    S<>().g(0);
-    S<int>().g(0);
-    S<int>().g(0, 1); // expected-error {{no matching member function for call}}
-    S<int>().g<int>(0, 1);
-    S<int, int>().g(0, 1);
-
-    S<>().h();
-    S<>().h(0); // expected-error {{no matching member function for call}}
-    S<int>().h({}); // expected-error {{no matching member function for call}}
-    S<int>().h<int>({});
-    S<int>().h(tuple<int,int>{});
-    S<int, int>().h(tuple<int,int>{}, tuple<int,int>{});
-
-    S<int, int>::X<char>(); // expected-note {{here}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<class ...Types> struct Tuple;
-
-Tuple<> *t0;
-Tuple<int> *t1;
-Tuple<int, char> *t2a;
-Tuple<int, float> *t2b = t2a; // expected-error{{cannot initialize a variable of type 'Tuple<int, float> *' with an lvalue of type 'Tuple<int, char> *'}}
-Tuple<int, float, double> *t3;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<class ... Types> void f(Types ... args);
-
-void test() {
-  f(); 
-  f(1); 
-  f(2, 1.0);
-}
-
-// Test simple recursive variadic function template
-template<typename Head, typename ...Tail>
-void recurse_until_fail(const Head &, const Tail &...tail) { // expected-note{{candidate function template not viable: requires at least 1 argument, but 0 were provided}}
-  recurse_until_fail(tail...); // expected-error{{no matching function for call to 'recurse_until_fail'}} \
-  // expected-note{{in instantiation of function template specialization 'recurse_until_fail<char [7], >' requested here}} \
-  // expected-note{{in instantiation of function template specialization 'recurse_until_fail<double, char [7]>' requested here}}
-}
-
-void test_recurse_until_fail() {
-  recurse_until_fail(1, 3.14159, "string");   // expected-note{{in instantiation of function template specialization 'recurse_until_fail<int, double, char [7]>' requested here}}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,193 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fexceptions -fcxx-exceptions -verify %s
-
-template<typename... Types> struct tuple;
-template<int I> struct int_c;
-
-template<typename T>
-struct identity {
-  typedef T type;
-};
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-// FIXME: Several more bullets to go
-
-// In a function parameter pack, the pattern is the parameter-declaration
-// without the ellipsis.
-namespace PR11850 {
-  template<typename ...T> struct S {
-    int f(T...a, int b) { return b; }
-  };
-  S<> s;
-  S<int*, char, const double&> t;
-  int k = s.f(0);
-  int l = t.f(&k, 'x', 5.9, 4);
-
-  template<typename ...As> struct A {
-    template<typename ...Bs> struct B {
-      template<typename ...Cs> struct C {
-        C(As..., Bs..., int &k, Cs...);
-      };
-    };
-  };
-  A<>::B<>::C<> c000(k);
-  A<int>::B<>::C<int> c101(1, k, 3);
-  A<>::B<int>::C<int> c011(1, k, 3);
-  A<int>::B<int>::C<> c110(1, 2, k);
-  A<int, int>::B<int, int>::C<int, int> c222(1, 2, 3, 4, k, 5, 6);
-  A<int, int, int>::B<>::C<> c300(1, 2, 3, k);
-
-  int &f();
-  char &f(void*);
-  template<typename ...A> struct U {
-    template<typename ...B> struct V {
-      auto g(A...a, B...b) -> decltype(f(a...));
-    };
-  };
-  U<>::V<int*> v0;
-  U<int*>::V<> v1;
-  int &v0f = v0.g(0);
-  char &v1f = v1.g(0);
-}
-namespace PR12096 {
-  void Foo(int) {}
-  void Foo(int, int) = delete;
-  template<typename ...Args> struct Var {
-    Var(const Args &...args, int *) { Foo(args...); }
-  };
-  Var<int> var(1, 0);
-}
-
-// In an initializer-list (8.5); the pattern is an initializer-clause.
-// Note: this also covers expression-lists, since expression-list is
-// just defined as initializer-list.
-void five_args(int, int, int, int, int); // expected-note{{candidate function not viable: requires 5 arguments, but 6 were provided}}
-
-template<int ...Values>
-void initializer_list_expansion() {
-  int values[5] = { Values... }; // expected-error{{excess elements in array initializer}}
-  five_args(Values...); // expected-error{{no matching function for call to 'five_args'}}
-}
-
-template void initializer_list_expansion<1, 2, 3, 4, 5>();
-template void initializer_list_expansion<1, 2, 3, 4, 5, 6>(); // expected-note{{in instantiation of function template specialization 'initializer_list_expansion<1, 2, 3, 4, 5, 6>' requested here}}
-
-namespace PR8977 {
-  struct A { };
-  template<typename T, typename... Args> void f(Args... args) {
-    // An empty expression-list performs value initialization.
-    constexpr T t(args...);
-  };
-
-  template void f<A>();
-}
-
-// In a base-specifier-list (Clause 10); the pattern is a base-specifier.
-template<typename ...Mixins>
-struct HasMixins : public Mixins... { 
-  HasMixins();
-  HasMixins(const HasMixins&);
-  HasMixins(int i);
-};
-
-struct A { }; // expected-note{{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'int' to 'const A' for 1st argument}} \
-// expected-note{{candidate constructor (the implicit move constructor) not viable: no known conversion from 'int' to 'A' for 1st argument}} \
-// expected-note{{candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided}}
-struct B { };
-struct C { };
-struct D { };
-
-A *checkA = new HasMixins<A, B, C, D>;
-B *checkB = new HasMixins<A, B, C, D>;
-D *checkD = new HasMixins<A, B, C, D>;
-C *checkC = new HasMixins<A, B, D>; // expected-error{{cannot initialize a variable of type 'C *' with an rvalue of type 'HasMixins<A, B, D> *'}}
-HasMixins<> *checkNone = new HasMixins<>;
-
-template<typename Mixins>
-struct BrokenMixins : public Mixins... { }; // expected-error{{pack expansion does not contain any unexpanded parameter packs}}
-
-// In a mem-initializer-list (12.6.2); the pattern is a mem-initializer.
-template<typename ...Mixins>
-HasMixins<Mixins...>::HasMixins(): Mixins()... { }
-
-template<typename ...Mixins>
-HasMixins<Mixins...>::HasMixins(const HasMixins &other): Mixins(other)... { }
-
-template<typename ...Mixins>
-HasMixins<Mixins...>::HasMixins(int i): Mixins(i)... { } // expected-error{{no matching constructor for initialization of 'A'}}
-
-void test_has_mixins() {
-  HasMixins<A, B> ab;
-  HasMixins<A, B> ab2 = ab;
-  HasMixins<A, B> ab3(17); // expected-note{{in instantiation of member function 'HasMixins<A, B>::HasMixins' requested here}}
-}
-
-template<typename T>
-struct X {
-  T member;
-
-  X() : member()... { } // expected-error{{pack expansion for initialization of member 'member'}}
-};
-
-// There was a bug in the delayed parsing code for the
-// following case.
-template<typename ...T>
-struct DelayedParseTest : T...
-{
-  int a;
-  DelayedParseTest(T... i) : T{i}..., a{10} {}
-};
-
-
-// In a template-argument-list (14.3); the pattern is a template-argument.
-template<typename ...Types>
-struct tuple_of_refs {
-  typedef tuple<Types& ...> types;
-};
-
-tuple<int&, float&> *t_int_ref_float_ref;
-tuple_of_refs<int&, float&>::types *t_int_ref_float_ref_2 =  t_int_ref_float_ref;
-
-template<typename ...Types>
-struct extract_nested_types {
-  typedef tuple<typename Types::type...> types;
-};
-
-tuple<int, float> *t_int_float;
-extract_nested_types<identity<int>, identity<float> >::types *t_int_float_2 
-  = t_int_float;
-
-template<int ...N>
-struct tuple_of_ints {
-  typedef tuple<int_c<N>...> type;
-};
-
-int check_temp_arg_1[is_same<tuple_of_ints<1, 2, 3, 4, 5>::type, 
-                             tuple<int_c<1>, int_c<2>, int_c<3>, int_c<4>, 
-                                   int_c<5>>>::value? 1 : -1];
-
-// In a dynamic-exception-specification (15.4); the pattern is a type-id.
-template<typename ...Types>
-struct f_with_except {
-  virtual void f() throw(Types...); // expected-note{{overridden virtual function is here}}
-};
-
-struct check_f_with_except_1 : f_with_except<int, float> {
-  virtual void f() throw(int, float);
-};
-
-struct check_f_with_except_2 : f_with_except<int, float> {
-  virtual void f() throw(int);
-};
-
-struct check_f_with_except_3 : f_with_except<int, float> {
-  virtual void f() throw(int, float, double); // expected-error{{exception specification of overriding function is more lax than base version}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,412 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -std=c++11 -fblocks -fms-extensions -fsyntax-only -verify %s
-
-template<typename T, typename U> struct pair;
-template<typename ...> struct tuple;
-
-// A parameter pack whose name appears within the pattern of a pack
-// expansion is expanded by that pack expansion. An appearance of the
-// name of a parameter pack is only expanded by the innermost
-// enclosing pack expansion. The pattern of a pack expansion shall
-// name one or more parameter packs that are not expanded by a nested
-// pack expansion.
-template<typename... Types>
-struct Expansion {
-  typedef pair<Types..., int> expand_with_pacs; // okay
-  typedef pair<Types, int...> expand_no_packs;  // expected-error{{pack expansion does not contain any unexpanded parameter packs}}
-  typedef pair<pair<Types..., int>..., int> expand_with_expanded_nested; // expected-error{{pack expansion does not contain any unexpanded parameter packs}}
-};
-
-// All of the parameter packs expanded by a pack expansion shall have
-// the same number of arguments specified.
-template<typename ...Types>
-struct ExpansionLengthMismatch {
-  template<typename ...OtherTypes>
-  struct Inner {
-    typedef tuple<pair<Types, OtherTypes>...> type; // expected-error{{pack expansion contains parameter packs 'Types' and 'OtherTypes' that have different lengths (3 vs. 2)}}
-  };
-};
-
-ExpansionLengthMismatch<int, long>::Inner<unsigned int, unsigned long>::type 
-  *il_pairs;
-tuple<pair<int, unsigned int>, pair<long, unsigned long> >*il_pairs_2 = il_pairs;
-
-ExpansionLengthMismatch<short, int, long>::Inner<unsigned int, unsigned long>::type // expected-note{{in instantiation of template class 'ExpansionLengthMismatch<short, int, long>::Inner<unsigned int, unsigned long>' requested here}}
-  *il_pairs_bad; 
-
-
-// An appearance of a name of a parameter pack that is not expanded is
-// ill-formed.
-
-// Test for unexpanded parameter packs in each of the type nodes.
-template<typename T, int N, typename ... Types>
-struct TestPPName 
-  : public Types, public T  // expected-error{{base type contains unexpanded parameter pack 'Types'}}
-{
-  // BuiltinType is uninteresting
-  // FIXME: ComplexType is uninteresting?
-  // PointerType
-  typedef Types *types_pointer; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-
-  // BlockPointerType
-  typedef Types (^block_pointer_1)(int); // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-  typedef int (^block_pointer_2)(Types); // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-
-  // LValueReferenceType
-  typedef Types &lvalue_ref; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-
-  // RValueReferenceType
-  typedef Types &&rvalue_ref; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-
-  // MemberPointerType
-  typedef Types TestPPName::* member_pointer_1; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-  typedef int Types::*member_pointer_2; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // ConstantArrayType
-  typedef Types constant_array[17]; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // IncompleteArrayType
-  typedef Types incomplete_array[]; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // VariableArrayType
-  void f(int i) {
-    Types variable_array[i]; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-  }
-
-  // DependentSizedArrayType
-  typedef Types dependent_sized_array[N]; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // DependentSizedExtVectorType
-  typedef Types dependent_sized_ext_vector __attribute__((ext_vector_type(N))); // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // VectorType is uninteresting
-
-  // ExtVectorType
-  typedef Types ext_vector __attribute__((ext_vector_type(4))); // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // FunctionProtoType
-  typedef Types (function_type_1)(int); // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-  typedef int (function_type_2)(Types); // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // FunctionNoProtoType is uninteresting
-  // UnresolvedUsingType is uninteresting
-  // ParenType is uninteresting
-  // TypedefType is uninteresting
-
-  // TypeOfExprType
-  typedef __typeof__((static_cast<Types>(0))) typeof_expr; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // TypeOfType
-  typedef __typeof__(Types) typeof_type;  // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // DecltypeType
-  typedef decltype((static_cast<Types>(0))) typeof_expr; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // RecordType is uninteresting
-  // EnumType is uninteresting
-  // ElaboratedType is uninteresting
-
-  // TemplateTypeParmType
-  typedef Types template_type_parm; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // SubstTemplateTypeParmType is uninteresting
-
-  // TemplateSpecializationType
-  typedef pair<Types, int> template_specialization; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // InjectedClassName is uninteresting.
-
-  // DependentNameType
-  typedef typename Types::type dependent_name; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // DependentTemplateSpecializationType
-  typedef typename Types::template apply<int> dependent_name_1; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-  typedef typename T::template apply<Types> dependent_name_2; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}} 
-
-  // ObjCObjectType is uninteresting
-  // ObjCInterfaceType is uninteresting
-  // ObjCObjectPointerType is uninteresting
-};
-
-// FIXME: Test for unexpanded parameter packs in each of the expression nodes.
-template<int ...Values>
-void test_unexpanded_in_exprs() {
-  // PredefinedExpr is uninteresting
-  // DeclRefExpr
-  Values; // expected-error{{expression contains unexpanded parameter pack 'Values'}}
-  // IntegerLiteral is uninteresting
-  // FloatingLiteral is uninteresting
-  // ImaginaryLiteral is uninteresting
-  // StringLiteral is uninteresting
-  // CharacterLiteral is uninteresting
-  (Values); // expected-error{{expression contains unexpanded parameter pack 'Values'}}
-  // UnaryOperator
-  -Values; // expected-error{{expression contains unexpanded parameter pack 'Values'}}
-  // OffsetOfExpr
-  struct OffsetMe {
-    int array[17];
-  };
-  __builtin_offsetof(OffsetMe, array[Values]); // expected-error{{expression contains unexpanded parameter pack 'Values'}}
-  // FIXME: continue this...
-}
-
-template<typename ... Types>
-void TestPPNameFunc(int i) {
-  f(static_cast<Types>(i)); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-}
-
-template<typename T, template<class> class ...Meta>
-struct TestUnexpandedTTP {
-  typedef tuple<typename Meta<T>::type> type; // expected-error{{declaration type contains unexpanded parameter pack 'Meta'}}
-};
-
-// Test for unexpanded parameter packs in declarations.
-template<typename T, typename... Types>
-// FIXME: this should test that the diagnostic reads "type contains..."
-struct alignas(Types) TestUnexpandedDecls : T{ // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  void member_function(Types);  // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-  void member_function () throw(Types); // expected-error{{exception type contains unexpanded parameter pack 'Types'}}
-  operator Types() const; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-  Types data_member;  // expected-error{{data member type contains unexpanded parameter pack 'Types'}}
-  static Types static_data_member; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-  unsigned bit_field : static_cast<Types>(0);  // expected-error{{bit-field size contains unexpanded parameter pack 'Types'}}
-  static_assert(static_cast<Types>(0), "Boom"); // expected-error{{static assertion contains unexpanded parameter pack 'Types'}}
-
-  enum E0 : Types {  // expected-error{{fixed underlying type contains unexpanded parameter pack 'Types'}}
-    EnumValue = static_cast<Types>(0) // expected-error{{enumerator value contains unexpanded parameter pack 'Types'}}
-  };
-
-  using typename Types::type; // expected-error{{using declaration contains unexpanded parameter pack 'Types'}}
-  using Types::value; // expected-error{{using declaration contains unexpanded parameter pack 'Types'}}
-  using T::operator Types; // expected-error{{using declaration contains unexpanded parameter pack 'Types'}}
-
-  friend class Types::foo; // expected-error{{friend declaration contains unexpanded parameter pack 'Types'}}
-  friend void friend_func(Types); // expected-error{{friend declaration contains unexpanded parameter pack 'Types'}}
-  friend void Types::other_friend_func(int); // expected-error{{friend declaration contains unexpanded parameter pack 'Types'}}
-
-  void test_initializers() {
-    T copy_init = static_cast<Types>(0); // expected-error{{initializer contains unexpanded parameter pack 'Types'}}
-    T direct_init(0, static_cast<Types>(0)); // expected-error{{initializer contains unexpanded parameter pack 'Types'}}
-    T list_init = { static_cast<Types>(0) }; // expected-error{{initializer contains unexpanded parameter pack 'Types'}}
-  }
-
-  T in_class_member_init = static_cast<Types>(0); // expected-error{{initializer contains unexpanded parameter pack 'Types'}}
-  TestUnexpandedDecls() : 
-    Types(static_cast<Types>(0)), // expected-error{{initializer contains unexpanded parameter pack 'Types'}}
-    Types(static_cast<Types>(0))...,
-    in_class_member_init(static_cast<Types>(0)) {} // expected-error{{initializer contains unexpanded parameter pack 'Types'}}
-
-  void default_function_args(T = static_cast<Types>(0)); // expected-error{{default argument contains unexpanded parameter pack 'Types'}}
-
-  template<typename = Types*> // expected-error{{default argument contains unexpanded parameter pack 'Types'}}
-    struct default_template_args_1; 
-  template<int = static_cast<Types>(0)> // expected-error{{default argument contains unexpanded parameter pack 'Types'}}
-    struct default_template_args_2;
-  template<template<typename> class = Types::template apply> // expected-error{{default argument contains unexpanded parameter pack 'Types'}}
-    struct default_template_args_3;
-
-  template<Types value> // expected-error{{non-type template parameter type contains unexpanded parameter pack 'Types'}}
-  struct non_type_template_param_type;
-
-  void decls_in_stmts() {
-    Types t; // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-    for (Types *t = 0; ; ) { } // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-    for (; Types *t = 0; ) { } // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-    T a[] = { T(), T(), T() };
-    for (Types t : a) { } // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-    switch(Types *t = 0) { } // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-    while(Types *t = 0) { } // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-    if (Types *t = 0) { } // expected-error{{declaration type contains unexpanded parameter pack 'Types'}}
-    try {
-    } catch (Types*) { // expected-error{{exception type contains unexpanded parameter pack 'Types'}}
-    }
-  }
-};
-
-// FIXME: Test for unexpanded parameter packs in each of the statements.
-struct X {
-  void f(int, int);
-  template<typename ...Types>
-  void f(Types...);
-};
-
-namespace std {
-  class type_info;
-}
-
-typedef struct _GUID {
-     unsigned long  Data1;
-     unsigned short Data2;
-     unsigned short Data3;
-     unsigned char  Data4[ 8 ];
-} GUID;
-
-template<typename T, typename ...Types>
-void test_unexpanded_exprs(Types ...values) {
-  // CXXOperatorCallExpr
-  (void)(values + 0); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  (void)(0 + values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // CXXMemberCallExpr
-  values.f(); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  X x;
-  x.f(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  x.Types::f(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  x.f<Types>(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // CXXStaticCastExpr
-  (void)static_cast<Types&>(values); // expected-error{{expression contains unexpanded parameter packs 'Types' and 'values'}}
-
-  // CXXDynamicCastExpr
-  (void)dynamic_cast<Types&>(values); // expected-error{{expression contains unexpanded parameter packs 'Types' and 'values'}}
-
-  // CXXReinterpretCastExpr
-  (void)reinterpret_cast<Types&>(values); // expected-error{{expression contains unexpanded parameter packs 'Types' and 'values'}}
-
-  // CXXConstCastExpr
-  (void)const_cast<Types&>(values); // expected-error{{expression contains unexpanded parameter packs 'Types' and 'values'}}
-
-  // CXXTypeidExpr
-  (void)typeid(Types); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  (void)typeid(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // CXXUuidofExpr
-  (void)__uuidof(Types); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  (void)__uuidof(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // CXXThisExpr is uninteresting
-
-  // CXXThrowExpr
-  throw Types(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  throw values; // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // CXXDefaultArgExpr is uninteresting
-
-  // CXXBindTemporaryExpr is uninteresting
-
-  // CXXConstructExpr is uninteresting
-
-  // CXXFunctionalCastExpr
-  (void)Types(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // CXXTemporaryObjectExpr
-  (void)X(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // CXXScalarValueInitExpr is uninteresting
-
-  // CXXNewExpr
-  (void)new Types; // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  (void)new X(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  (void)new (values) X(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  (void)new X [values]; // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // CXXDeleteExpr
-  delete values; // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  delete [] values; // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // CXXPseudoDestructorExpr
-  T t;
-  values.~T(); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  t.~Types(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  t.Types::~T(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // UnaryTypeTraitExpr
-  __is_pod(Types); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // BinaryTypeTraitExpr
-  __is_base_of(Types, T); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  __is_base_of(T, Types); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // UnresolvedLookupExpr
-  test_unexpanded_exprs(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  test_unexpanded_exprs<Types>(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // DependentScopeDeclRefExpr
-  Types::test_unexpanded_exprs(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  T::template test_unexpanded_exprs<Types>(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // CXXUnresolvedConstructExpr
-  Types(5); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // CXXDependentScopeMemberExpr
-  values.foo(); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-  t.foo(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // FIXME: There's an evil ambiguity here, because we don't know if
-  // Types refers to the template type parameter pack in scope or a
-  // non-pack member.
-  //  t.Types::foo();
-
-  t.template foo<Types>(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-
-  // UnresolvedMemberExpr
-  x.f<Types>(); // expected-error{{expression contains unexpanded parameter pack 'Types'}}
-  x.f(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // CXXNoexceptExpr
-  noexcept(values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  // PackExpansionExpr is uninteresting
-  // SizeOfPackExpr is uninteresting
-
-  // FIXME: Objective-C expressions will need to go elsewhere
-
-  for (auto t : values) { } // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  switch (values) { } // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  do { } while (values); // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-test:
-  goto *values; // expected-error{{expression contains unexpanded parameter pack 'values'}}
-
-  void f(int arg = values); // expected-error{{default argument contains unexpanded parameter pack 'values'}}
-}
-
-// Test unexpanded parameter packs in partial specializations.
-template<typename ...Types>
-struct TestUnexpandedDecls<int, Types>; // expected-error{{partial specialization contains unexpanded parameter pack 'Types'}}
-
-// Test for diagnostics in the presence of multiple unexpanded
-// parameter packs.
-template<typename T, typename U> struct pair;
-
-template<typename ...OuterTypes>
-struct MemberTemplatePPNames {
-  template<typename ...InnerTypes>
-  struct Inner {
-    typedef pair<OuterTypes, InnerTypes>* types; // expected-error{{declaration type contains unexpanded parameter packs 'OuterTypes' and 'InnerTypes'}}
-
-    template<typename ...VeryInnerTypes>
-    struct VeryInner {
-      typedef pair<pair<VeryInnerTypes, OuterTypes>, pair<InnerTypes, OuterTypes> > types; // expected-error{{declaration type contains unexpanded parameter packs 'VeryInnerTypes', 'OuterTypes', ...}}
-    };
-  };
-};
-
-// Example from working paper
-namespace WorkingPaperExample {
-  template<typename...> struct Tuple {}; 
-  template<typename T1, typename T2> struct Pair {};
-  
-  template<class ... Args1> struct zip { 
-    template<class ... Args2> struct with {
-      typedef Tuple<Pair<Args1, Args2> ... > type; // expected-error{{pack expansion contains parameter packs 'Args1' and 'Args2' that have different lengths (1 vs. 2)}}
-    }; 
-  };
-
-  typedef zip<short, int>::with<unsigned short, unsigned>::type T1; // T1 is Tuple<Pair<short, unsigned short>, Pair<int, unsigned>>
-  typedef Tuple<Pair<short, unsigned short>, Pair<int, unsigned>> T1;
-
-  typedef zip<short>::with<unsigned short, unsigned>::type T2; // expected-note{{in instantiation of template class}}
-
-  template<class ... Args> void f(Args...);
-  template<class ... Args> void h(Args...);
-
-  template<class ... Args> 
-  void g(Args ... args) {
-    f(const_cast<const Args*>(&args)...); // OK: "Args" and "args" are expanded within f 
-    f(5 ...); // expected-error{{pack expansion does not contain any unexpanded parameter packs}}
-    f(args); // expected-error{{expression contains unexpanded parameter pack 'args'}}
-    f(h(args ...) + args ...);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p5.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p5.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/p5.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fobjc-exceptions -fexceptions -std=c++11 -fblocks -fsyntax-only -verify %s
-
-template<typename...Types>
-void f(Types ...values) {
-  for (id x in values) { } // expected-error {{expression contains unexpanded parameter pack 'values'}}
-  @synchronized(values) { // expected-error {{expression contains unexpanded parameter pack 'values'}}
-    @throw values; // expected-error {{expression contains unexpanded parameter pack 'values'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// Check for template type parameter pack (mis-)matches with template
-// type parameters.
-template<typename ...T> struct X0t;
-template<typename ...T> struct X0t;
-
-template<typename ...T> struct X1t; // expected-note{{previous template type parameter pack declared here}}
-template<typename T> struct X1t; // expected-error{{template type parameter conflicts with previous template type parameter pack}}
-
-template<typename T> struct X2t; // expected-note{{previous template type parameter declared here}}
-template<typename ...T> struct X2t; // expected-error{{template type parameter pack conflicts with previous template type parameter}}
-
-template<template<typename ...T> class> struct X0t_intt; 
-template<template<typename ...T> class> struct X0t_intt; 
-
-template<template<typename ...T> class> struct X1t_intt; // expected-note{{previous template type parameter pack declared here}}
-template<template<typename T> class> struct X1t_intt; // expected-error{{template type parameter conflicts with previous template type parameter pack}}
-
-template<template<typename T> class> struct X2t_intt; // expected-note{{previous template type parameter declared here}}
-template<template<typename ...T> class> struct X2t_intt; // expected-error{{template type parameter pack conflicts with previous template type parameter}}
-
-template<int ...Values> struct X1nt; // expected-note{{previous non-type template parameter pack declared here}}
-template<int Values> struct X1nt; // expected-error{{non-type template parameter conflicts with previous non-type template parameter pack}}
-
-template<template<class T> class> class X1tt; // expected-note{{previous template template parameter declared here}}
-template<template<class T> class...> class X1tt; // expected-error{{template template parameter pack conflicts with previous template template parameter}}
-
-// Check for matching with out-of-line definitions
-namespace rdar8859985 {
-  template<typename ...> struct tuple { };
-  template<int ...> struct int_tuple { };
-
-  template<typename T>
-  struct X {
-    template<typename ...Args1, int ...Indices1>
-    X(tuple<Args1...>, int_tuple<Indices1...>);
-  };
-
-  template<typename T>
-  template<typename ...Args1, int ...Indices1>
-  X<T>::X(tuple<Args1...>, int_tuple<Indices1...>) {}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.decls/temp.variadic/partial-ordering.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Various tests related to partial ordering of variadic templates.
-template<typename ...Types> struct tuple;
-
-template<typename Tuple> 
-struct X1 {
-  static const unsigned value = 0;
-};
-
-template<typename Head, typename ...Tail>
-struct X1<tuple<Head, Tail...> > {
-  static const unsigned value = 1;
-};
-
-template<typename Head, typename ...Tail>
-struct X1<tuple<Head, Tail&...> > {
-  static const unsigned value = 2;
-};
-
-template<typename Head, typename ...Tail>
-struct X1<tuple<Head&, Tail&...> > {
-  static const unsigned value = 3;
-};
-
-int check0[X1<tuple<>>::value == 0? 1 : -1];
-int check1[X1<tuple<int>>::value == 2? 1 : -1];
-int check2[X1<tuple<int, int>>::value == 1? 1 : -1];
-int check3[X1<tuple<int, int&>>::value == 2? 1 : -1];
-int check4[X1<tuple<int&, int&>>::value == 3? 1 : -1];
-
-// Partial ordering of function templates.
-template<typename T1, typename T2, typename ...Rest>
-int &f0(T1, T2, Rest...);
-
-template<typename T1, typename T2>
-float &f0(T1, T2);
-
-void test_f0() {
-  int &ir1 = f0(1, 2.0, 'a');
-  float &fr1 = f0(1, 2.0);
-}
-
-template<typename T1, typename T2, typename ...Rest>
-int &f1(T1, T2, Rest...);
-
-template<typename T1, typename T2>
-float &f1(T1, T2, ...);
-
-void test_f1() {
-  int &ir1 = f1(1, 2.0, 'a');
-}
-
-template<typename T1, typename T2, typename ...Rest>
-int &f2(T1, T2, Rest...);
-
-float &f2(...);
-
-void test_f2() {
-  int &ir1 = f2(1, 2.0, 'a');
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-template<typename T> struct A { };
-
-template<typename T> T make();
-template<typename T> T make2(const T&);
-
-void test_make() {
-  int& ir0 = make<int&>();
-  A<int> a0 = make< A<int> >();
-  A<int> a1 = make2< A<int> >(A<int>());
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace ParameterPacksWithFunctions {
-  template<typename ...> struct count;
-
-  template<typename Head, typename ...Tail>
-  struct count<Head, Tail...> {
-    static const unsigned value = 1 + count<Tail...>::value;
-  };
-
-  template<>
-  struct count<> {
-    static const unsigned value = 0;
-  };
-  
-  template<unsigned> struct unsigned_c { };
-
-  template<typename ... Types>
-  unsigned_c<count<Types...>::value> f();
-
-  void test_f() {
-    unsigned_c<0> uc0a = f(); // okay, deduced to an empty pack
-    unsigned_c<0> uc0b = f<>();
-    unsigned_c<1> uc1 = f<int>();
-    unsigned_c<2> uc2 = f<float, double>();
-  }
-}
-
-namespace rdar12176336 {
-  typedef void (*vararg_func)(...);
-
-  struct method {
-    vararg_func implementation;
-	
-    method(vararg_func implementation) : implementation(implementation) {}
-	
-    template<typename TReturnType, typename... TArguments, typename TFunctionType = TReturnType (*)(TArguments...)>
-    auto getImplementation() const -> TFunctionType
-    {
-      return reinterpret_cast<TFunctionType>(implementation);
-    }
-  };
-
-  void f() {
-    method m(nullptr);
-    auto imp = m.getImplementation<int, int, int>();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3-nodeduct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3-nodeduct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3-nodeduct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR5811
-template <class F> void Call(F f) { f(1); }
-template <typename T> void f(T);
-void a() { Call(f<int>); }
-
-// Check the conversion of a template-id to a pointer
-template<typename T, T* Address> struct Constant { };
-Constant<void(int), &f<int> > constant0;
-
-template<typename T, T* Address> void constant_func();
-void test_constant_func() {
-  constant_func<void(int), &f<int> >();
-}
-
-
-// Check typeof() on a template-id referring to a single function
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-int typeof0[is_same<__typeof__(f<int>), void (int)>::value? 1 : -1];
-int typeof1[is_same<__typeof__(&f<int>), void (*)(int)>::value? 1 : -1];
-
-template <typename T> void g(T); // expected-note{{possible target for call}}
-template <typename T> void g(T, T); // expected-note{{possible target for call}}
-
-int typeof2[is_same<__typeof__(g<float>), void (int)>::value? 1 : -1]; // \
-     // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<class X, class Y, class Z> X f(Y,Z); // expected-note {{candidate template ignored: couldn't infer template argument 'X'}}
-
-void g() {
-  f<int,char*,double>("aa",3.0); // expected-warning{{conversion from string literal to 'char *' is deprecated}}
-  f<int,char*>("aa",3.0); // Z is deduced to be double  \
-                          // expected-warning{{conversion from string literal to 'char *' is deprecated}}
-  f<int>("aa",3.0);       // Y is deduced to be char*, and
-                          // Z is deduced to be double 
-  f("aa",3.0); // expected-error{{no matching}}
-}
-
-// PR5910
-namespace PR5910 {
-  template <typename T>
-  void Func() {}
-  
-  template <typename R>
-  void Foo(R (*fp)());
-  
-  void Test() {
-    Foo(Func<int>);
-  }
-}
-
-// PR5949
-namespace PR5949 {
-  struct Bar;
-
-  template <class Container>
-  void quuz(const Container &cont) {
-  }
-
-  template<typename T>
-  int Foo(Bar *b, void (*Baz)(const T &t), T * = 0) {
-    return 0;
-  }
-
-  template<typename T>
-  int Quux(Bar *b, T * = 0)
-  {
-    return Foo<T>(b, quuz);
-  }
-}
-
-// PR7641
-namespace PR7641 {
-  namespace N2
-  {
-    template<class>
-    int f0(int);
-  }
-  namespace N
-  {
-    using N2::f0;
-  }
-
-  template<class R,class B1>
-  int
-  f1(R(a)(B1));
-
-  void f2()
-  { f1(N::f0<int>); }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p9-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p9-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.arg.explicit/p9-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Metafunction to extract the Nth type from a set of types.
-template<unsigned N, typename ...Types> struct get_nth_type;
-
-template<unsigned N, typename Head, typename ...Tail>
-struct get_nth_type<N, Head, Tail...> : get_nth_type<N-1, Tail...> { };
-
-template<typename Head, typename ...Tail>
-struct get_nth_type<0, Head, Tail...> {
-  typedef Head type;
-};
-
-// Placeholder type  when get_nth_type fails.
-struct no_type {};
-
-template<unsigned N>
-struct get_nth_type<N> {
-  typedef no_type type;
-};
-
-template<typename ...Args>
-typename get_nth_type<0, Args...>::type first_arg(Args...);
-
-template<typename ...Args>
-typename get_nth_type<1, Args...>::type second_arg(Args...);
-
-// Test explicit specification of function template arguments.
-void test_explicit_spec_simple() {
-  int *ip1 = first_arg<int *>(0);
-  int *ip2 = first_arg<int *, float*>(0, 0);
-  float *fp1 = first_arg<float *, double*, int*>(0, 0, 0);
-}
-
-// Template argument deduction can extend the sequence of template
-// arguments corresponding to a template parameter pack, even when the
-// sequence contains explicitly specified template arguments.
-void test_explicit_spec_extension(double *dp) {
-  int *ip1 = first_arg<int *>(0, 0);
-  int *ip2 = first_arg<int *, float*>(0, 0, 0, 0);
-  float *fp1 = first_arg<float *, double*, int*>(0, 0, 0);  
-  int *i1 = second_arg<float *>(0, (int*)0, 0);  
-  double *dp1 = first_arg<>(dp);
-}
-
-template<typename ...Types> 
-struct tuple { };
-
-template<typename ...Types>
-void accept_tuple(tuple<Types...>);
-
-void test_explicit_spec_extension_targs(tuple<int, float, double> t3) {
-  accept_tuple(t3);
-  accept_tuple<int, float, double>(t3);
-  accept_tuple<int>(t3);
-  accept_tuple<int, float>(t3);
-}
-
-template<typename R, typename ...ParmTypes>
-void accept_function_ptr(R(*)(ParmTypes...));
-
-void test_explicit_spec_extension_funcparms(int (*f3)(int, float, double)) {
-  accept_function_ptr(f3);
-  accept_function_ptr<int>(f3);
-  accept_function_ptr<int, int>(f3);
-  accept_function_ptr<int, int, float>(f3);
-  accept_function_ptr<int, int, float, double>(f3);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/cwg1170.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/cwg1170.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/cwg1170.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-#if !__has_feature(cxx_access_control_sfinae)
-#  error No support for access control as part of SFINAE?
-#endif
-
-typedef char yes_type;
-typedef char (&no_type)[2];
-
-template<unsigned N> struct unsigned_c { };
-
-template<typename T>
-class has_copy_constructor {
-  static T t;
-
-  template<typename U> static yes_type check(unsigned_c<sizeof(U(t))> * = 0);
-  template<typename U> static no_type check(...);
-
-public:
-  static const bool value = (sizeof(check<T>(0)) == sizeof(yes_type));
-};
-
-struct HasCopy { };
-
-struct HasNonConstCopy {
-  HasNonConstCopy(HasNonConstCopy&);
-};
-
-struct HasDeletedCopy {
-  HasDeletedCopy(const HasDeletedCopy&) = delete;
-};
-
-struct HasPrivateCopy {
-private:
-  HasPrivateCopy(const HasPrivateCopy&);
-};
-
-int check0[has_copy_constructor<HasCopy>::value? 1 : -1];
-int check1[has_copy_constructor<HasNonConstCopy>::value? 1 : -1];
-int check2[has_copy_constructor<HasDeletedCopy>::value? -1 : 1];
-int check3[has_copy_constructor<HasPrivateCopy>::value? -1 : 1];

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <int> int f(int);  // expected-note 2{{candidate}}
-template <signed char> int f(int); // expected-note 2{{candidate}}
-int i1 = f<1>(0); // expected-error{{ambiguous}}
-int i2 = f<1000>(0); // expected-error{{ambiguous}}
-
-namespace PR6707 {
-  template<typename T, T Value>
-  struct X { };
-
-  template<typename T, T Value>
-  void f(X<T, Value>);
-
-  void g(X<int, 10> x) {
-    f(x);
-  }
-
-  static const unsigned char ten = 10;
-  template<typename T, T Value, typename U>
-  void f2(X<T, Value>, X<U, Value>);
-
-  void g2() {
-    f2(X<int, 10>(), X<char, ten>());
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-// expected-no-diagnostics
-
-typedef char one_byte;
-struct two_bytes { char data[2]; };
-
-template<typename T> one_byte __is_class_check(int T::*);
-template<typename T> two_bytes __is_class_check(...);
-
-template<typename T> struct is_class {
-  static const bool value = sizeof(__is_class_check<T>(0)) == 1;
-};
-
-struct X { };
-
-int array0[is_class<X>::value? 1 : -1];
-int array1[is_class<int>::value? -1 : 1];
-int array2[is_class<char[3]>::value? -1 : 1];
-
-namespace instantiation_order1 {
-  template<typename T>
-  struct it_is_a_trap { 
-    typedef typename T::trap type;
-  };
-
-  template<bool, typename T = void>
-  struct enable_if {
-    typedef T type;
-  };
-
-  template<typename T>
-  struct enable_if<false, T> { };
-
-  template<typename T>
-  typename enable_if<sizeof(T) == 17>::type 
-  f(const T&, typename it_is_a_trap<T>::type* = 0);
-
-  void f(...);
-
-  void test_f() {
-    f('a');
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/basic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/basic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/basic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> struct A { };
-
-template<typename T> A<T> f0(T*);
-
-void test_f0(int *ip, float const *cfp) {
-  A<int> a0 = f0(ip);
-  A<const float> a1 = f0(cfp);
-}
-
-template<typename T> void f1(T*, int);
-
-void test_f1(int *ip, float fv) {
-  f1(ip, fv);
-}
-
-template<typename T> void f2(T*, T*); // expected-note {{candidate template ignored: could not match 'T *' against 'ConvToIntPtr'}} \
-// expected-note{{candidate template ignored: deduced conflicting types for parameter 'T' ('int' vs. 'float')}}
-
-struct ConvToIntPtr {
-  operator int*() const;
-};
-
-void test_f2(int *ip, float *fp) {
-  f2(ip, ConvToIntPtr()); // expected-error{{no matching function}}
-  f2(ip, ip); // okay
-  f2(ip, fp); // expected-error{{no matching function}}
-}
-
-namespace test3 {
-  template<typename T>
-  struct bar { };
-
-  template<typename T>
-  struct foo {
-    operator bar<T>();
-  };
-
-  template<typename T>
-  void func(bar<T>) { // expected-note {{candidate template ignored: could not match 'bar' against 'foo'}}
-  }
-
-  void test() {
-    func(foo<int>()); // expected-error {{no matching function}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// Metafunction to extract the Nth type from a set of types.
-template<unsigned N, typename ...Types> struct get_nth_type;
-
-template<unsigned N, typename Head, typename ...Tail>
-struct get_nth_type<N, Head, Tail...> : get_nth_type<N-1, Tail...> { };
-
-template<typename Head, typename ...Tail>
-struct get_nth_type<0, Head, Tail...> {
-  typedef Head type;
-};
-
-// Placeholder type  when get_nth_type fails.
-struct no_type {};
-
-template<unsigned N>
-struct get_nth_type<N> {
-  typedef no_type type;
-};
-
-template<typename T, typename U> struct pair { };
-template<typename T, typename U> pair<T, U> make_pair(T, U);
-
-// For a function parameter pack that occurs at the end of the
-// parameter-declaration-list, the type A of each remaining argument
-// of the call is compared with the type P of the declarator-id of the
-// function parameter pack.
-template<typename ...Args>
-typename get_nth_type<0, Args...>::type first_arg(Args...);
-
-template<typename ...Args>
-typename get_nth_type<1, Args...>::type second_arg(Args...);
-
-void test_simple_deduction(int *ip, float *fp, double *dp) {
-  int *ip1 = first_arg(ip);
-  int *ip2 = first_arg(ip, fp);
-  int *ip3 = first_arg(ip, fp, dp);
-  no_type nt1 = first_arg();
-}
-
-template<typename ...Args>
-typename get_nth_type<0, Args...>::type first_arg_ref(Args&...);
-
-template<typename ...Args>
-typename get_nth_type<1, Args...>::type second_arg_ref(Args&...);
-
-void test_simple_ref_deduction(int *ip, float *fp, double *dp) {
-  int *ip1 = first_arg_ref(ip);
-  int *ip2 = first_arg_ref(ip, fp);
-  int *ip3 = first_arg_ref(ip, fp, dp);
-  no_type nt1 = first_arg_ref();
-}
-
-
-// FIXME: Use the template parameter names in this diagnostic.
-template<typename ...Args1, typename ...Args2>
-typename get_nth_type<0, Args1...>::type first_arg_pair(pair<Args1, Args2>...); // expected-note{{candidate template ignored: could not match 'pair<type-parameter-0-0, type-parameter-0-1>' against 'int'}}
-
-template<typename ...Args1, typename ...Args2>
-typename get_nth_type<1, Args1...>::type second_arg_pair(pair<Args1, Args2>...);
-
-void test_pair_deduction(int *ip, float *fp, double *dp) {
-  int *ip1 = first_arg_pair(make_pair(ip, 17));
-  int *ip2 = first_arg_pair(make_pair(ip, 17), make_pair(fp, 17));
-  int *ip3 = first_arg_pair(make_pair(ip, 17), make_pair(fp, 17), 
-                            make_pair(dp, 17));
-  float *fp1 = second_arg_pair(make_pair(ip, 17), make_pair(fp, 17));
-  float *fp2 = second_arg_pair(make_pair(ip, 17), make_pair(fp, 17), 
-                               make_pair(dp, 17));
-  no_type nt1 = first_arg_pair();
-  no_type nt2 = second_arg_pair();
-  no_type nt3 = second_arg_pair(make_pair(ip, 17));
-
-
-  first_arg_pair(make_pair(ip, 17), 16); // expected-error{{no matching function for call to 'first_arg_pair'}}
-}
-
-// For a function parameter pack that does not occur at the end of the
-// parameter-declaration-list, the type of the parameter pack is a
-// non-deduced context.
-template<typename ...Types> struct tuple { };
-
-template<typename ...Types>
-void pack_not_at_end(tuple<Types...>, Types... values, int);
-
-void test_pack_not_at_end(tuple<int*, double*> t2) {
-  pack_not_at_end(t2, 0, 0, 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-template<typename T> struct A { };
-
-// bullet 1
-template<typename T> A<T> f0(T* ptr);
-
-void test_f0_bullet1() {
-  int arr0[6];
-  A<int> a0 = f0(arr0);
-  const int arr1[] = { 1, 2, 3, 4, 5 };
-  A<const int> a1 = f0(arr1);
-}
-
-// bullet 2
-int g0(int, int);
-float g1(float);
-
-void test_f0_bullet2() {
-  A<int(int, int)> a0 = f0(g0);
-  A<float(float)> a1 = f0(g1);
-}
-
-// bullet 3
-struct X { };
-const X get_X();
-
-template<typename T> A<T> f1(T);
-
-void test_f1_bullet3() {
-  A<X> a0 = f1(get_X());
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-
-// If P is an rvalue reference to a cv-unqualified template parameter
-// and the argument is an lvalue, the type "lvalue reference to A" is
-// used in place of A for type deduction.
-template<typename T> struct X { };
-
-template<typename T> X<T> f0(T&&);
-
-struct Y { };
-
-template<typename T> T prvalue();
-template<typename T> T&& xvalue();
-template<typename T> T& lvalue();
-
-void test_f0() {
-  X<int> xi0 = f0(prvalue<int>());
-  X<int> xi1 = f0(xvalue<int>());
-  X<int&> xi2 = f0(lvalue<int>());
-  X<Y> xy0 = f0(prvalue<Y>());
-  X<Y> xy1 = f0(xvalue<Y>());
-  X<Y&> xy2 = f0(lvalue<Y>());
-}
-
-template<typename T> X<T> f1(const T&&); // expected-note{{candidate function [with T = int] not viable: no known conversion from 'int' to 'const int &&' for 1st argument}} \
-// expected-note{{candidate function [with T = Y] not viable: no known conversion from 'Y' to 'const Y &&' for 1st argument}}
-
-void test_f1() {
-  X<int> xi0 = f1(prvalue<int>());
-  X<int> xi1 = f1(xvalue<int>());
-  f1(lvalue<int>()); // expected-error{{no matching function for call to 'f1'}}
-  X<Y> xy0 = f1(prvalue<Y>());
-  X<Y> xy1 = f1(xvalue<Y>());
-  f1(lvalue<Y>()); // expected-error{{no matching function for call to 'f1'}}
-}
-
-namespace std_example {
-  template <class T> int f(T&&); 
-  template <class T> int g(const T&&); // expected-note{{candidate function [with T = int] not viable: no known conversion from 'int' to 'const int &&' for 1st argument}}
-
-  int i;
-  int n1 = f(i);
-  int n2 = f(0);
-  int n3 = g(i); // expected-error{{no matching function for call to 'g'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,148 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> struct A { };
-
-// Top-level cv-qualifiers of P's type are ignored for type deduction.
-template<typename T> A<T> f0(const T);
-
-void test_f0(int i, const int ci) {
-  A<int> a0 = f0(i);
-  A<int> a1 = f0(ci);
-}
-
-// If P is a reference type, the type referred to by P is used for type 
-// deduction.
-template<typename T> A<T> f1(T&);
-
-void test_f1(int i, const int ci, volatile int vi) {
-  A<int> a0 = f1(i);
-  A<const int> a1 = f1(ci);
-  A<volatile int> a2 = f1(vi);
-}
-
-template<typename T, unsigned N> struct B { };
-template<typename T, unsigned N> B<T, N> g0(T (&array)[N]);
-template<typename T, unsigned N> B<T, N> g0b(const T (&array)[N]);
-
-void test_g0() {
-  int array0[5];
-  B<int, 5> b0 = g0(array0);
-  const int array1[] = { 1, 2, 3};
-  B<const int, 3> b1 = g0(array1);
-  B<int, 3> b2 = g0b(array1);
-}
-
-template<typename T> B<T, 0> g1(const A<T>&);
-
-void test_g1(A<float> af) {
-  B<float, 0> b0 = g1(af);
-  B<int, 0> b1 = g1(A<int>());
-}
-
-//   - If the original P is a reference type, the deduced A (i.e., the type
-//     referred to by the reference) can be more cv-qualified than the 
-//     transformed A.
-template<typename T> A<T> f2(const T&);
-
-void test_f2(int i, const int ci, volatile int vi) {
-  A<int> a0 = f2(i);
-  A<int> a1 = f2(ci);
-  A<volatile int> a2 = f2(vi);
-}
-
-// PR5913
-template <typename T, int N>
-void Foo(const T (&a)[N]) {
-  T x;
-  x = 0;
-}
-
-const int a[1] = { 0 };
-
-void Test() {
-  Foo(a);
-}
-
-//   - The transformed A can be another pointer or pointer to member type that 
-//     can be converted to the deduced A via a qualification conversion (4.4).
-template<typename T> A<T> f3(T * * const * const);
-
-void test_f3(int ***ip, volatile int ***vip) {
-  A<int> a0 = f3(ip);
-  A<volatile int> a1 = f3(vip);
-}
-
-// Also accept conversions for pointer types which require removing
-// [[noreturn]].
-namespace noreturn_stripping {
-  template <class R>
-  void f(R (*function)());
-
-  void g() __attribute__ ((__noreturn__));
-  void h();
-  void test() {
-    f(g);
-    f(h);
-  }
-}
-
-//   - If P is a class, and P has the form template-id, then A can be a 
-//     derived class of the deduced A. Likewise, if P is a pointer to a class
-//     of the form template-id, A can be a pointer to a derived class pointed 
-//     to by the deduced A.
-template<typename T, int I> struct C { };
-
-struct D : public C<int, 1> { };
-struct E : public D { };
-struct F : A<float> { };
-struct G : A<float>, C<int, 1> { };
-
-template<typename T, int I>
-  C<T, I> *f4a(const C<T, I>&);
-template<typename T, int I>
-  C<T, I> *f4b(C<T, I>);
-template<typename T, int I>
-  C<T, I> *f4c(C<T, I>*);
-int *f4c(...);
-
-void test_f4(D d, E e, F f, G g) {
-  C<int, 1> *ci1a = f4a(d);
-  C<int, 1> *ci2a = f4a(e);
-  C<int, 1> *ci1b = f4b(d);
-  C<int, 1> *ci2b = f4b(e);
-  C<int, 1> *ci1c = f4c(&d);
-  C<int, 1> *ci2c = f4c(&e);
-  C<int, 1> *ci3c = f4c(&g);
-  int       *ip1 = f4c(&f);
-}
-
-// PR8462
-namespace N {
-  struct T0;
-  struct T1;
-
-  template<typename X, typename Y> struct B {};
-
-  struct J : B<T0,T0> {};
-  struct K : B<T1,T1> {};
-
-  struct D : J, K {};
-
-  template<typename X, typename Y> void F(B<Y,X>);
-
-  void test()
-  {
-    D d; 
-    N::F<T0>(d); // Fails
-    N::F<T1>(d); // OK
-  }
-}
-
-namespace PR9233 {
-  template<typename T> void f(const T **q); // expected-note{{candidate template ignored: substitution failure [with T = int]}}
-
-  void g(int **p) {
-    f(p); // expected-error{{no matching function for call to 'f'}}
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace PR8598 {
-  template<class T> struct identity { typedef T type; };
-
-  template<class T, class C>
-  void f(T C::*, typename identity<T>::type*){}
-  
-  struct X { void f() {}; };
-  
-  void g() { (f)(&X::f, 0); }
-}
-
-namespace PR12132 {
-  template<typename S> void fun(const int* const S::* member) {}
-  struct A { int* x; };
-  void foo() {
-    fun(&A::x);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,128 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace test0 {
-  template<class T> void apply(T x, void (*f)(T)) { f(x); } // expected-note 2 {{candidate template ignored: deduced conflicting types for parameter 'T'}}\
-  // expected-note {{no overload of 'temp2' matching 'void (*)(int)'}}
-
-  template<class A> void temp(A);
-  void test0() {
-    // okay: deduce T=int from first argument, A=int during overload
-    apply(0, &temp);
-    apply(0, &temp<>);
-
-    // okay: deduce T=int from first and second arguments
-    apply(0, &temp<int>);
-
-    // deduction failure: T=int from first, T=long from second
-    apply(0, &temp<long>); // expected-error {{no matching function for call to 'apply'}}
-  }
-
-  void over(int);
-  int over(long);
-
-  void test1() {
-    // okay: deductions match
-    apply(0, &over);
-
-    // deduction failure: deduced T=long from first argument, T=int from second
-    apply(0L, &over); // expected-error {{no matching function for call to 'apply'}}
-  }
-
-  void over(short);
-
-  void test2() {
-    // deduce T=int from first arg, second arg is undeduced context,
-    // pick correct overload of 'over' during overload resolution for 'apply'
-    apply(0, &over);
-  }
-
-  template<class A, class B> B temp2(A);
-  void test3() {
-    // deduce T=int from first arg, A=int B=void during overload resolution
-    apply(0, &temp2);
-    apply(0, &temp2<>);
-    apply(0, &temp2<int>);
-
-    // overload failure
-    apply(0, &temp2<long>); // expected-error {{no matching function for call to 'apply'}}
-  }
-}
-
-namespace test1 {
-  template<class T> void invoke(void (*f)(T)) { f(T()); } // expected-note 6 {{couldn't infer template argument}} \
-  // expected-note {{candidate template ignored: couldn't infer template argument 'T'}}
-
-  template<class T> void temp(T);
-  void test0() {
-    // deduction failure: overload has template => undeduced context
-    invoke(&temp); // expected-error {{no matching function for call to 'invoke'}}
-    invoke(&temp<>); // expected-error {{no matching function for call to 'invoke'}}
-
-    // okay: full template-id
-    invoke(&temp<int>);
-  }
-
-  void over(int);
-  int over(long);
-
-  void test1() {
-    // okay: only one overload matches
-    invoke(&over);
-  }
-
-  void over(short);
-
-  void test2() {
-    // deduction failure: overload has multiple matches => undeduced context
-    invoke(&over); // expected-error {{no matching function for call to 'invoke'}}
-  }
-
-  template<class A, class B> B temp2(A);
-  void test3() {
-    // deduction failure: overload has template => undeduced context
-    // (even though partial application temp2<int> could in theory
-    // let us infer T=int)
-    invoke(&temp2); // expected-error {{no matching function for call to 'invoke'}}
-    invoke(&temp2<>); // expected-error {{no matching function for call to 'invoke'}}
-    invoke(&temp2<int>); // expected-error {{no matching function for call to 'invoke'}}
-
-    // okay: full template-id
-    invoke(&temp2<int, void>);
-
-    // overload failure
-    invoke(&temp2<int, int>); // expected-error {{no matching function for call to 'invoke'}}
-  }
-}
-
-namespace rdar8360106 {
-  template<typename R, typename T> void f0(R (*)(T), T);
-  template<typename R, typename T> void f1(R (&)(T) , T); // expected-note{{candidate template ignored: couldn't infer template argument 'R'}}
-  template<typename R, typename T> void f2(R (* const&)(T), T); // expected-note{{candidate template ignored: couldn't infer template argument 'R'}}
-  
-  int g(int);
-  int g(int, int);
-
-  void h() {
-    f0(g, 1);
-    f0(&g, 1);
-    f1(g, 1);
-    f1(&g, 1); // expected-error{{no matching function for call to 'f1'}}
-    f2(g, 1); // expected-error{{no matching function for call to 'f2'}}
-    f2(&g, 1);
-  }
-}
-
-namespace PR11713 {
-  template<typename T>
-  int f(int, int, int);
-
-  template<typename T>
-  float f(float, float);
-
-  template<typename R, typename B1, typename B2, typename A1, typename A2>
-  R& g(R (*)(B1, B2), A1, A2);
-
-  void h() {
-    float &fr = g(f<int>, 1, 2);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// FIXME: [temp.deduct.conv]p2 bullets 1 and 2 can't actually happen without
-// references?
-// struct ConvertibleToArray {
-//   //  template<typename T, unsigned N>
-//   //  operator T(()[]) const;
-
-// private:
-//   typedef int array[17];
-
-//   operator array() const;
-// };
-
-// void test_array(ConvertibleToArray cta) {
-//   int *ip = cta;
-//   ip = cta;
-//   const float *cfp = cta;
-// }
-
-// bullet 2
-// struct ConvertibleToFunction {
-//   template<typename T, typename A1, typename A2>
-//   operator T(A1, A2) const ()  { };
-// };
-
-// bullet 3
-struct ConvertibleToCVQuals {
-  template<typename T>
-  operator T* const() const;
-};
-
-void test_cvqual_conv(ConvertibleToCVQuals ctcv) {
-  int *ip = ctcv;
-  const int *icp = ctcv;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-struct AnyPtr {
-  template<typename T>
-  operator T*() const;
-};
-
-// If A is a cv-qualified type, the top level cv-qualifiers of A's type
-// are ignored for type deduction.
-void test_cvquals(AnyPtr ap) {
-  int* const ip = ap;
-  const float * const volatile fp = ap;
-}
-
-// If A is a reference type, the type referred to by A is used for
-// type deduction.
-void test_ref_arg(AnyPtr ap) {
-  const int* const &ip = ap;
-  double * const &dp = ap;
-}
-
-struct AnyRef {
-  template<typename T>
-  operator T&() const;
-};
-
-void test_ref_param(AnyRef ar) {
-  int &ir = ar;
-  const float &fr = ar;
-  int i = ar;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.conv/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-struct AnyT {
-  template<typename T>
-  operator T();
-};
-
-void test_cvqual_ref(AnyT any) {
-  const int &cir = any;  
-}
-
-struct AnyThreeLevelPtr {
-  template<typename T>
-  operator T***() const
-  {
-    T x = 0;
-    // FIXME: looks like we get this wrong, too!
-    // x = 0; // will fail if T is deduced to a const type
-           // (EDG and GCC get this wrong)
-    return 0;
-  }
-};
-
-struct X { };
-
-void test_deduce_with_qual(AnyThreeLevelPtr a3) {
-  int * const * const * const ip = a3;
-}
-
-struct AnyPtrMem {
-  template<typename Class, typename T>
-  operator T Class::*() const
-  {
-    T x = 0;
-    // FIXME: looks like we get this wrong, too!
-    // x = 0; // will fail if T is deduced to a const type.
-           // (EDG and GCC get this wrong)
-    return 0;
-  }
-};
-
-void test_deduce_ptrmem_with_qual(AnyPtrMem apm) {
-  const float X::* pm = apm;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.funcaddr/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.funcaddr/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.funcaddr/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-template<typename T>
-  T f0(T, int);
-
-void test_f0() {
-  int (*f0a)(int, int) = f0;
-  int (*f0b)(int, int) = &f0;
-  float (*f0c)(float, int) = &f0;
-}
-
-template<typename T> T f1(T, int);
-template<typename T> T f1(T);
-
-void test_f1() {
-  float (*f1a)(float, int) = f1;
-  float (*f1b)(float, int) = &f1;
-  float (*f1c)(float) = f1;
-  float (*f1d)(float) = (f1);
-  float (*f1e)(float) = &f1;
-  float (*f1f)(float) = (&f1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <class T> T* f(int);	// #1 
-template <class T, class U> T& f(U); // #2 
-
-void g() {
-  int *ip = f<int>(1);	// calls #1
-}
-
-template<typename T>
-struct identity {
-  typedef T type;
-};
-
-template <class T> 
-  T* f2(int, typename identity<T>::type = 0);
-template <class T, class U> 
-  T& f2(U, typename identity<T>::type = 0);
-
-void g2() {
-  int* ip = f2<int>(1);
-}
-
-template<class T, class U> struct A { };
-
-template<class T, class U> inline int *f3( U, A<U,T>* p = 0 ); // #1 expected-note{{candidate function [with T = int, U = int]}}
-template<         class U> inline float *f3( U, A<U,U>* p = 0 ); // #2 expected-note{{candidate function [with U = int]}}
-
-void g3() {
-   float *fp = f3<int>( 42, (A<int,int>*)0 );  // Ok, picks #2.
-   f3<int>( 42 );                  // expected-error{{call to 'f3' is ambiguous}}
-   
-}
-
-namespace PR9006 {
-  struct X {
-    template <class Get>
-    int &f(char const* name, Get fget, char const* docstr = 0);
-  
-    template <class Get, class Set>
-    float &f(char const* name, Get fget, Set fset, char const* docstr = 0);
-  };
-
-  void test(X x) {
-    int &ir = x.f("blah", 0, "blah");
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p12.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p12.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p12.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Note: Partial ordering of function templates containing template
-// parameter packs is independent of the number of deduced arguments
-// for those template parameter packs.
-template<class ...> struct Tuple { }; 
-template<class ... Types> int &g(Tuple<Types ...>); // #1 
-template<class T1, class ... Types> float &g(Tuple<T1, Types ...>); // #2
-template<class T1, class ... Types> double &g(Tuple<T1, Types& ...>); // #3
-
-void test_g() {
-  int &ir1 = g(Tuple<>()); 
-  float &fr1 = g(Tuple<int, float>()); 
-  double &dr1 = g(Tuple<int, float&>()); 
-  double &dr2 = g(Tuple<int>());
-}
-
-template<class ... Types> int &h(int (*)(Types ...)); // #1 
-template<class T1, class ... Types> float &h(int (*)(T1, Types ...)); // #2
-template<class T1, class ... Types> double &h(int (*)(T1, Types& ...)); // #3
-
-void test_h() {
-  int &ir1 = h((int(*)())0); 
-  float &fr1 = h((int(*)(int, float))0);
-  double &dr1 = h((int(*)(int, float&))0);
-  double &dr2 = h((int(*)(int))0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p9-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p9-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.partial/p9-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T> int &f0(T&);
-template<typename T> float &f0(T&&);
-
-// Core issue 1164
-void test_f0(int i) {
-  int &ir0 = f0(i);
-  float &fr0 = f0(5);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p10-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p10-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p10-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-template<typename T> void f(T&&);
-template<> void f(int&) { }
-void (*fp)(int&) = &f;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p17.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p17.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p17.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<int i> class A {  };
-template<short s> void f(A<s>); // expected-note{{candidate template ignored: substitution failure}}
-
-void k1() { 
-  A<1> a;
-  f(a); // expected-error{{no matching function for call}}
-  f<1>(a);
-}
-template<const short cs> class B { }; 
-template<short s> void g(B<s>); 
-void k2() {
-  B<1> b; 
-  g(b); // OK: cv-qualifiers are ignored on template parameter types
-}
-
-template<short s> void h(int (&)[s]); // expected-note{{candidate function template not viable: requires 1 argument, but 2 were provided}}
-void k3() {
-  int array[5];
-  h(array);
-  h<5>(array);
-}
-
-template<short s> void h(int (&)[s], A<s>);  // expected-note{{candidate template ignored: substitution failure}}
-void k4() {
-  A<5> a;
-  int array[5];
-  h(array, a); // expected-error{{no matching function for call}}
-  h<5>(array, a);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// If type deduction cannot be done for any P/A pair, or if for any
-// pair the deduction leads to more than one possible set of deduced
-// values, or if different pairs yield different deduced values, or if
-// any template argument remains neither deduced nor explicitly
-// specified, template argument deduction fails.
-
-template<typename ...> struct tuple;
-
-template<typename T, typename U>
-struct same_tuple {
-  static const bool value = false;
-};
-
-template<typename ...Types1>
-struct same_tuple<tuple<Types1...>, tuple<Types1...> > {
-  static const bool value = true;
-};
-
-int same_tuple_check1[same_tuple<tuple<int, float>, tuple<int, double>>::value? -1 : 1];
-int same_tuple_check2[same_tuple<tuple<float, double>, tuple<float, double>>::value? 1 : -1];
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p21.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p21.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p21.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Note: Template argument deduction involving parameter packs
-// (14.5.3) can deduce zero or more arguments for each parameter pack.
-
-template<class> struct X { 
-  static const unsigned value = 0;
-}; 
-
-template<class R, class ... ArgTypes> struct X<R(int, ArgTypes ...)> { 
-  static const unsigned value = 1;
-}; 
-
-template<class ... Types> struct Y { 
-  static const unsigned value = 0;
-}; 
-
-template<class T, class ... Types> struct Y<T, Types& ...> { 
-  static const unsigned value = 1;
-};
-
-template<class ... Types> int f(void (*)(Types ...)); 
-void g(int, float);
-
-int check0[X<int>::value == 0? 1 : -1]; // uses primary template
-int check1[X<int(int, float, double)>::value == 1? 1 : -1]; // uses partial specialization
-int check2[X<int(float, int)>::value == 0? 1 : -1]; // uses primary template
-int check3[Y<>::value == 0? 1 : -1]; // uses primary template
-int check4[Y<int&, float&, double&>::value == 1? 1 : -1]; // uses partial specialization
-int check5[Y<int, float, double>::value == 0? 1 : -1]; // uses primary template
-int fv = f(g); // okay

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p22.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p22.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p22.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// If the original function parameter associated with A is a function
-// parameter pack and the function parameter associated with P is not
-// a function parameter pack, then template argument deduction fails.
-template<class ... Args> int& f(Args ... args); 
-template<class T1, class ... Args> float& f(T1 a1, Args ... args); 
-template<class T1, class T2> double& f(T1 a1, T2 a2);
-
-void test_f() {
-  int &ir1 = f();
-  float &fr1 = f(1, 2, 3);
-  double &dr1 = f(1, 2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p5-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p5-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p5-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// FIXME: More bullets to go!
-
-template<typename T, typename U>
-struct has_nondeduced_pack_test {
-  static const bool value = false;
-};
-
-template<typename R, typename FirstType, typename ...Types>
-struct has_nondeduced_pack_test<R(FirstType, Types..., int), 
-                                R(FirstType, Types...)> {
-  static const bool value = true;
-};
-
-// - A function parameter pack that does not occur at the end of the
-//   parameter-declaration-clause.
-int check_nondeduced_pack_test0[
-                   has_nondeduced_pack_test<int(float, double, int),
-                                            int(float, double)>::value? 1 : -1];
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p8-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p8-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p8-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Deductions specific to C++0x.
-
-template<typename T>
-struct member_pointer_kind {
-  static const unsigned value = 0;
-};
-
-template<class C, typename R, typename ...Args>
-struct member_pointer_kind<R (C::*)(Args...)> {
-  static const unsigned value = 1;
-};
-
-template<class C, typename R, typename ...Args>
-struct member_pointer_kind<R (C::*)(Args...) &> {
-  static const unsigned value = 2;
-};
-
-template<class C, typename R, typename ...Args>
-struct member_pointer_kind<R (C::*)(Args...) &&> {
-  static const unsigned value = 3;
-};
-
-template<class C, typename R, typename ...Args>
-struct member_pointer_kind<R (C::*)(Args...) const> {
-  static const unsigned value = 4;
-};
-
-template<class C, typename R, typename ...Args>
-struct member_pointer_kind<R (C::*)(Args...) const &> {
-  static const unsigned value = 5;
-};
-
-template<class C, typename R, typename ...Args>
-struct member_pointer_kind<R (C::*)(Args...) const &&> {
-  static const unsigned value = 6;
-};
-
-struct X { };
-
-static_assert(member_pointer_kind<int (X::*)(int)>::value == 1, "");
-static_assert(member_pointer_kind<int (X::*)(int) &>::value == 2, "");
-static_assert(member_pointer_kind<int (X::*)(int) &&>::value == 3, "");
-static_assert(member_pointer_kind<int (X::*)(int) const>::value == 4, "");
-static_assert(member_pointer_kind<int (X::*)(int) const&>::value == 5, "");
-static_assert(member_pointer_kind<int (X::*)(int) const&&>::value == 6, "");

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p9-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p9-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p9-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<typename ...Types> struct tuple;
-template<unsigned> struct unsigned_c;
-
-template<typename T, typename U> 
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-namespace PackExpansionNotAtEnd {
-  template<typename T, typename U>
-  struct tuple_same_with_int {
-    static const bool value = false;
-  };
-
-  template<typename ...Types>
-  struct tuple_same_with_int<tuple<Types...>, tuple<Types..., int>> {
-    static const bool value = true;
-  };
-
-  int tuple_same_with_int_1[tuple_same_with_int<tuple<int, float, double>,
-                                                tuple<int, float, double, int>
-                                                >::value? 1 : -1];
-
-  template<typename ... Types> struct UselessPartialSpec;
-
-  template<typename ... Types, // expected-note{{non-deducible template parameter 'Types'}}
-           typename Tail> // expected-note{{non-deducible template parameter 'Tail'}}
-  struct UselessPartialSpec<Types..., Tail>; // expected-warning{{class template partial specialization contains template parameters that can not be deduced; this partial specialization will never be used}}
-}
-
-namespace DeduceNonTypeTemplateArgsInArray {
-  template<typename ...ArrayTypes>
-  struct split_arrays;
-
-  template<typename ...ElementTypes, unsigned ...Bounds>
-  struct split_arrays<ElementTypes[Bounds]...> {
-    typedef tuple<ElementTypes...> element_types;
-
-    // FIXME: Would like to have unsigned_tuple<Bounds...> here.
-    typedef tuple<unsigned_c<Bounds>...> bounds_types;
-  };
-
-  int check1[is_same<split_arrays<int[1], float[2], double[3]>::element_types,
-                     tuple<int, float, double>>::value? 1 : -1];
-  int check2[is_same<split_arrays<int[1], float[2], double[3]>::bounds_types,
-                     tuple<unsigned_c<1>, unsigned_c<2>, unsigned_c<3>>
-                     >::value? 1 : -1];
-}
-
-namespace DeduceWithDefaultArgs {
-  template<template<typename...> class Container> void f(Container<int>); // expected-note {{substitution failure [with Container = X]}}
-  template<typename, typename = int> struct X {};
-  void g() {
-    // OK, use default argument for the second template parameter.
-    f(X<int>{});
-    f(X<int, int>{});
-
-    // Not OK.
-    f(X<int, double>{}); // expected-error {{no matching function for call to 'f'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Ensure that when enforcing access control an unqualified template name with
-// explicit template arguments, we don't lose the context of the name lookup
-// because of the required early lookup to determine if it names a template.
-namespace PR7163 {
-  template <typename R, typename P> void h(R (*func)(P)) {}
-  class C {
-    template <typename T> static void g(T*) {};
-   public:
-    void f() { h(g<int>); }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-template<int i> class X { /* ... */ };
-X< 1>2 > x1; // expected-error{{expected unqualified-id}}
-X<(1>2)> x2; // OK
-template<class T> class Y { /* ... */ };
-Y<X<1>> x3; // OK, same as Y<X<1> > x3; 
-Y<X<6>>1>> x4; // expected-error{{expected unqualified-id}}
-Y<X<(6>>1)>> x5;
-
-int a, b;
-Y<decltype(a < b)> x6;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.names/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-struct meta {
-  template<typename U>
-  struct apply {
-    typedef U* type;
-  };
-};
-
-template<typename T, typename U>
-void f(typename T::template apply<U>::type);
-
-void test_f(int *ip) {
-  f<meta, int>(ip);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Suppress 'no run line' failure.
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<template<> class C> class D; // expected-error{{template template parameter must have its own template parameters}}
-
-
-struct A {};
-template<class M, 
-         class T = A,  // expected-note{{previous default template argument defined here}}
-         class C> // expected-error{{template parameter missing a default argument}}
-class X0 {}; // expected-note{{template is declared here}}
-X0<int> x0; // expected-error{{too few template arguments for class template 'X0'}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p10-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p10-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p10-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 
-// expected-no-diagnostics
-
-template<typename> struct Y1;
-template<typename, int> struct Y2;
-
-template<class T1, class T2 = int> using B2 = T1;
-template<class T1 = int, class T2> using B2 = T1;
-
-template<template<class> class F, template<class> class G = Y1> using B2t = F<G<int>>;
-template<template<class> class F = Y2, template<class> class G> using B2t = F<G<int>>;
-
-template<int N, int M = 5> using B2n = Y2<int, N + M>;
-template<int N = 5, int M> using B2n = Y2<int, N + M>;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// expected-no-diagnostics
-template<typename> struct Y1;
-template<typename, int> struct Y2;
-
-template<class T1, class T2 = int> class B2; 
-template<class T1 = int, class T2> class B2;
-
-template<template<class, int> class, template<class> class = Y1> class B2t;
-template<template<class, int> class = Y2, template<class> class> class B2t;
-
-template<int N, int M = 5> class B2n;
-template<int N = 5, int M> class B2n;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p11-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p11-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p11-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// If a template-parameter of a class template or alias template has a default
-// template-argument, each subsequent template-parameter shall either have a
-// default template-argument supplied or be a template parameter pack.
-template<typename> struct vector;
-
-template<typename T = int, typename> struct X3t; // expected-error{{template parameter missing a default argument}} expected-note{{previous default template argument defined here}}
-template<typename T = int, typename> using A3t = int; // expected-error{{template parameter missing a default argument}} expected-note{{previous default template argument defined here}}
-template<int V = 0, int> struct X3nt; // expected-error{{template parameter missing a default argument}} expected-note{{previous default template argument defined here}}
-template<int V = 0, int> using A3nt = int; // expected-error{{template parameter missing a default argument}} expected-note{{previous default template argument defined here}}
-template<template<class> class M = vector, template<class> class> struct X3tt; // expected-error{{template parameter missing a default argument}} expected-note{{previous default template argument defined here}}
-template<template<class> class M = vector, template<class> class> using A3tt = int; // expected-error{{template parameter missing a default argument}} expected-note{{previous default template argument defined here}}
-
-template<typename T = int, typename ...Types> struct X2t;
-template<typename T = int, typename ...Types> using A2t = X2t<T, Types...>;
-template<int V = 0, int ...Values> struct X2nt;
-template<int V = 0, int ...Values> using A2nt = X2nt<V, Values...>;
-template<template<class> class M = vector, template<class> class... Metas>
-  struct X2tt;
-template<template<class> class M = vector, template<class> class... Metas>
-  using A2tt = X2tt<M, Metas...>;
-
-// If a template-parameter of a primary class template or alias template is a
-// template parameter pack, it shall be the last template-parameter.
-template<typename ...Types, // expected-error{{template parameter pack must be the last template parameter}}
-         int After, int After2>
-struct X0t;
-X0t<int> pr9789();
-template<typename ...Types, // expected-error{{template parameter pack must be the last template parameter}}
-         int After>
-using A0t = int;
-
-template<int ...Values, // expected-error{{template parameter pack must be the last template parameter}}
-         int After>
-struct X0nt;
-template<int ...Values, // expected-error{{template parameter pack must be the last template parameter}}
-         int After>
-using A0nt = int;
-
-template<template<typename> class ...Templates, // expected-error{{template parameter pack must be the last template parameter}}
-         int After>
-struct X0tt;
-template<template<typename> class ...Templates, // expected-error{{template parameter pack must be the last template parameter}}
-         int After>
-using A0tt = int;
-
-// [ Note: These are not requirements for function templates or class
-// template partial specializations because template arguments can be
-// deduced (14.8.2). -- end note]
-template<typename... Types> struct X1t;
-template<typename ...Types, typename T> struct X1t<T, Types...> { };
-
-template<int... Values> struct X1nt;
-template<int ...Values, int V> struct X1nt<V, Values...> { };
-
-template<template<int> class... Meta> struct X1tt;
-template<template<int> class... Meta, template<int> class M> 
-  struct X1tt<M, Meta...> { };
-
-template<typename ...Types, typename T>
-void f1t(X1t<T, Types...>);
-
-template<int ...Values, int V>
-void f1nt(X1nt<V, Values...>);
-
-template<template<int> class... Meta, template<int> class M> 
-void f1tt(X1tt<M, Meta...>);
-
-namespace DefaultTemplateArgsInFunction {
-  template<typename T = int, typename U>  T &f0(U) { T *x = 0; return *x; }
-
-  void test_f0() {
-    int &ir0 = f0(3.14159);
-    int &ir1 = f0<int>(3.14159);
-    float &fr0 = f0<float>(3.14159);
-  }
-
-  template<> int &f0(int*);
-  template int &f0(double&);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-template<typename> struct Y1;
-template<typename, int> struct Y2;
-
-template<class T1 = int, // expected-note{{previous default template argument defined here}}
-         class T2>  // expected-error{{template parameter missing a default argument}}
-  class B1;
-
-template<template<class> class = Y1, // expected-note{{previous default template argument defined here}}
-         template<class> class> // expected-error{{template parameter missing a default argument}}
-  class B1t;
-
-template<int N = 5,  // expected-note{{previous default template argument defined here}}
-         int M>  // expected-error{{template parameter missing a default argument}}
-  class B1n;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p12.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p12.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p12.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-template<typename> struct Y1; // expected-note{{too few template parameters in template template argument}}
-template<typename, int> struct Y2;
-
-// C++ [temp.param]p12:
-template<class T1, 
-         class T2 = int> // expected-note{{previous default template argument defined here}}
-  class B3;
-template<class T1, typename T2> class B3;
-template<class T1, 
-         typename T2 = float> // expected-error{{template parameter redefines default argument}}
-  class B3;
-
-template<template<class, int> class, 
-         template<class> class = Y1> // expected-note{{previous default template argument defined here}}
-  class B3t;
-
-template<template<class, int> class, template<class> class> class B3t;
-
-template<template<class, int> class, 
-         template<class> class = Y1> // expected-error{{template parameter redefines default argument}}
-  class B3t;
-
-template<int N, 
-         int M = 5> // expected-note{{previous default template argument defined here}}
-  class B3n;
-
-template<int N, int M> class B3n;
-
-template<int N, 
-         int M = 7>  // expected-error{{template parameter redefines default argument}}
-  class B3n;
-
-// Check validity of default arguments
-template<template<class, int> class // expected-note{{previous template template parameter is here}}
-           = Y1> // expected-error{{template template argument has different template parameters than its corresponding template template parameter}}
-  class C1 {};
-
-C1<> c1; // expected-note{{while checking a default template argument}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p13.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p13.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p13.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// expected-no-diagnostics
-
-// The scope of atemplate-parameterextends from its point of
-// declaration until the end of its template. In particular, a
-// template-parameter can be used in the declaration of subsequent
-// template-parameters and their default arguments.
-
-template<class T, T* p, class U = T> class X { /* ... */ }; 
-// FIXME: template<class T> void f(T* p = new T); 
-
-// Check for bogus template parameter shadow warning.
-template<template<class T> class,
-         template<class T> class>
-  class B1noshadow;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p14.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p14.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p14.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// XFAIL: *
-
-// A template-parameter shall not be used in its own default argument.
-template<typename T = typename T::type> struct X; // expected-error{{default}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p15-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p15-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p15-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,178 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-template<typename T> struct X;
-template<int I> struct Y;
-
-X<X<int>> *x1;
-
-Y<(1 >> 2)> *y1;
-Y<1 >> 2> *y2; // FIXME: expected-error{{expected unqualified-id}}
-
-X<X<X<X<X<int>>>>> *x2;
-
-template<> struct X<int> { };
-typedef X<int> X_int;
-struct Z : X_int { };
-
-void f(const X<int> x) {
-  (void)reinterpret_cast<X<int>>(x); // expected-error{{reinterpret_cast from}}
-  (void)reinterpret_cast<X<X<X<int>>>>(x); // expected-error{{reinterpret_cast from}}
-
-  X<X<int>> *x1;
-}
-
-template<typename T = void> struct X1 { };
-X1<X1<>> x1a;
-
-
-namespace ParameterPackExpansions {
-
-// A template parameter pack that [contains an unexpanded parameter pack] is a
-// pack expansion.
-
-template<typename...Ts> struct Outer {
-  // From [temp.variadic]p4:
-  //   In a template parameter pack that is a pack expansion, the pattern is
-  //   [...the template-parameter...] without the ellipsis.
-  // Therefore the resulting sequence of parameters is not a parameter pack,
-  // so is not required to be the last template parameter.
-  template<Ts ...As, template<Ts> class ...Bs, typename ...Cs> struct Inner {
-    struct Check : Bs<As>... {
-      Check(Cs...);
-    };
-  };
-};
-
-template<int> struct TemplateInt {};
-template<char> struct TemplateChar {};
-template<int*> struct TemplateIntPtr {};
-int x;
-
-Outer<int, char, int*>::
-Inner<12345, 'x', &x,
-      TemplateInt, TemplateChar, TemplateIntPtr,
-      int*>::
-Check check(&x);
-
-
-template<typename...Ts> struct types;
-
-enum place { _ };
-template<place...> struct places {};
-
-template<typename P1, typename P2> struct append_places;
-template<place...X1, place...X2>
-struct append_places<places<X1...>, places<X2...>> {
-  typedef places<X1...,X2...> type;
-};
-
-template<unsigned N>
-struct make_places : append_places<typename make_places<N/2>::type,
-                                   typename make_places<N-N/2>::type> {};
-template<> struct make_places<0> { typedef places<> type; };
-template<> struct make_places<1> { typedef places<_> type; };
-
-template<typename T> struct wrap {
-  template<place> struct inner { typedef T type; };
-};
-
-template<typename T> struct takedrop_impl;
-template<place...X> struct takedrop_impl<places<X...>> {
-  template<template<decltype(X)> class ...Take,
-           template<place      > class ...Drop>
-  struct inner { // expected-note 2{{declared}}
-    typedef types<typename Take<_>::type...> take;
-    typedef types<typename Drop<_>::type...> drop;
-  };
-};
-
-template<unsigned N, typename...Ts> struct take {
-  using type = typename takedrop_impl<typename make_places<N>::type>::
-    template inner<wrap<Ts>::template inner...>::take; // expected-error {{too few template arguments}}
-};
-template<unsigned N, typename...Ts> struct drop {
-  using type = typename takedrop_impl<typename make_places<N>::type>::
-    template inner<wrap<Ts>::template inner...>::drop; // expected-error {{too few template arguments}}
-};
-
-using T1 = take<3, int, char, double, long>::type; // expected-note {{previous}}
-// FIXME: Desguar the types on the RHS in this diagnostic.
-// desired-error {{'types<void, void, void, void>' vs 'types<int, char, double, (no argument)>'}}
-using T1 = types<void, void, void, void>; // expected-error {{'types<void, void, void, void>' vs 'types<typename inner<_>::type, typename inner<_>::type, typename inner<_>::type, (no argument)>'}}
-using D1 = drop<3, int, char, double, long>::type;
-using D1 = types<long>;
-
-using T2 = take<4, int, char, double, long>::type; // expected-note {{previous}}
-using T2 = types<int, char, double, long>;
-// FIXME: Desguar the types on the RHS in this diagnostic.
-// desired-error {{'types<void, void, void, void>' vs 'types<int, char, double, long>'}}
-using T2 = types<void, void, void, void>; // expected-error {{'types<void, void, void, void>' vs 'types<typename inner<_>::type, typename inner<_>::type, typename inner<_>::type, typename inner<_>::type>'}}
-using D2 = drop<4, int, char, double, long>::type;
-using D2 = types<>;
-
-using T3 = take<5, int, char, double, long>::type; // expected-note {{in instantiation of}}
-using D3 = drop<5, int, char, double, long>::type; // expected-note {{in instantiation of}}
-
-
-// FIXME: We should accept this code. A parameter pack within a default argument
-// in a template template parameter pack is expanded, because the pack is
-// implicitly a pack expansion.
-template<typename ...Default> struct DefArg {
-  template<template<typename T = Default> class ...Classes> struct Inner { // expected-error {{default argument contains unexpanded parameter pack}} expected-note {{here}}
-    Inner(Classes<>...); // expected-error {{too few}}
-  };
-};
-template<typename T> struct vector {};
-template<typename T> struct list {};
-vector<int> vi;
-list<char> lc;
-DefArg<int, char>::Inner<vector, list> defarg(vi, lc);
-
-
-// FIXME:
-// A template parameter pack that is a pack expansion shall not expand a
-// parameter pack declared in the same template-parameter-list.
-template<typename...Ts, Ts...Vs> void error(); // desired-error
-
-// This case should not produce an error, because in A's instantiation, Cs is
-// not a parameter pack.
-template<typename...Ts> void consume(Ts...);
-template<typename...Ts> struct A {
-  template<template<typename, Ts = 0> class ...Cs, Cs<Ts> ...Vs> struct B { // ok
-    B() {
-      consume([]{
-        int arr[Vs]; // expected-error {{negative size}}
-      }...);
-    }
-  };
-};
-template<typename, int> using Int = int;
-template<typename, short> using Char = char;
-A<int, short>::B<Int, Char, -1, 'x'> b; // expected-note {{here}}
-
-}
-
-namespace PR9023 {
-  template<typename ...T> struct A {
-    template<template<T> class ...> struct B {
-    };
-  };
-
-  template<int> struct C { };
-  template<long> struct D { };
-
-  int main() {
-    A<int, long>::B<C, D> e;
-  }
-}
-
-namespace std_examples {
-  template <class... Types> class Tuple;
-  template <class T, int... Dims> struct multi_array;
-  template <class... T> struct value_holder {
-    template<T... Values> struct apply { };
-  };
-  template <class... T, T... Values> struct static_array; // expected-error {{must be the last}}
-
-  int n;
-  value_holder<int, char, int*>::apply<12345, 'x', &n> test;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p15.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p15.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p15.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++98 -verify %s
-template<typename T> struct X;
-template<int I> struct Y;
-
-X<X<int> > *x1;
-X<X<int>> *x2; // expected-error{{a space is required between consecutive right angle brackets (use '> >')}}
-
-X<X<X<X<int>> // expected-error{{a space is required between consecutive right angle brackets (use '> >')}}
-    >> *x3;   // expected-error{{a space is required between consecutive right angle brackets (use '> >')}}
-
-Y<(1 >> 2)> *y1;
-Y<1 >> 2> *y2; // expected-warning{{use of right-shift operator ('>>') in template argument will require parentheses in C++11}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// There is no semantic difference between class and typename in a
-// template-parameter. typename followed by an unqualified-id names a
-// template type parameter.
-template<class T> struct X;
-template<typename T> struct X;
-
-// typename followed by aqualified-id denotes the type in a non-type
-// parameter-declaration.
-template<typename T, typename T::type Value> struct Y0;
-template<typename T, typename X<T>::type Value> struct Y1;
-
-// A storage class shall not be specified in a template-parameter declaration.
-template<static int Value> struct Z; // FIXME: expect an error
-
-// Make sure that we properly disambiguate non-type template parameters that
-// start with 'class'.
-class X1 { };
-template<class X1 *xptr> struct Y2 { };
-
-// FIXME: add the example from p2

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// A type-parameter defines its identifier to be a type-name (if
-// declared with class or typename) or template-name (if declared with
-// template) in the scope of the template declaration.
-template<typename T> struct X0 {
-  T* value;
-};
-
-template<template<class T> class Y> struct X1 {
-  Y<int> value;
-};
-
-// [Note: because of the name lookup rules, a template-parameter that
-// could be interpreted as either a non-type template-parameter or a
-// type-parameter (because its identifier is the name of an already
-// existing class) is taken as a type-parameter. For example, 
-class T { /* ... */ };  // expected-note{{candidate constructor (the implicit copy constructor) not viable}}
-int i; 
-
-template<class T, T i> struct X2 {
-  void f(T t) 
-  { 
-    T t1 = i; //template-parameters T and i 
-    ::T t2 = ::i; // global namespace members T and i  \
-    // expected-error{{no viable conversion}}
-  } 
-};
-
-namespace PR6831 {
-  namespace NA { struct S; }
-  namespace NB { struct S; }
-
-  using namespace NA;
-  using namespace NB;
-
-  template <typename S> void foo();
-  template <int S> void bar();
-  template <template<typename> class S> void baz();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class X;
-
-// C++ [temp.param]p4
-typedef int INT;
-enum E { enum1, enum2 };
-template<int N> struct A1;
-template<INT N, INT M> struct A2;
-template<enum E x, E y> struct A3;
-template<int &X> struct A4;
-template<int *Ptr> struct A5;
-template<int (&f)(int, int)> struct A6;
-template<int (*fp)(float, double)> struct A7;
-template<int X::*pm> struct A8;
-template<float (X::*pmf)(float, int)> struct A9;
-template<typename T, T x> struct A10;
-
-template<float f> struct A11; // expected-error{{a non-type template parameter cannot have type 'float'}}
-
-template<void *Ptr> struct A12;
-template<int (*IncompleteArrayPtr)[]> struct A13;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -verify %s -std=c++11
-// expected-no-diagnostics
-
-template<const int I> struct S {
-  decltype(I) n;
-  int &&r = I;
-};
-S<5> s;
-
-template<typename T, T v> struct U {
-  decltype(v) n;
-  int &&r = v;
-};
-U<const int, 6> u;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// A non-type template-parameter shall not be declared to have
-// floating point, class, or void type.
-struct A;
-
-template<double d> class X; // expected-error{{cannot have type}}
-template<double* pd> class Y; //OK 
-template<double& rd> class Z; //OK 
-
-template<A a> class X0; // expected-error{{cannot have type}}
-
-typedef void VOID;
-template<VOID a> class X01; // expected-error{{cannot have type}}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-template<int X[10]> struct A;
-template<int *X> struct A;
-template<int f(float, double)> struct B;
-typedef float FLOAT;
-template<int (*f)(FLOAT, double)> struct B;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p9-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p9-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p9-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// A default template-argument may be specified for any kind of
-// template-parameter that is not a template parameter pack.
-template<typename ...Types = int> // expected-error{{template parameter pack cannot have a default argument}}
-struct X0;
-
-template<int ...Values = 0> // expected-error{{template parameter pack cannot have a default argument}}
-struct X1;
-
-template<typename T> struct vector;
-
-template<template<class> class ...Templates = vector> // expected-error{{template parameter pack cannot have a default argument}}
-struct X2; 
-
-struct X3 {
-  template<typename T = int> // expected-error{{default template argument not permitted on a friend template}}
-  friend void f0(X3);
-
-  template<typename T = int>
-  friend void f1(X3) {
-  }
-};
-
-namespace PR8748 {
-  // Testcase 1
-  struct A0 { template<typename U> struct B; }; 
-  template<typename U = int> struct A0::B { };
-  
-  // Testcase 2
-  template<typename T> struct A1 { template<typename U> struct B; }; 
-  template<typename T> template<typename U = int> struct A1<T>::B { }; // expected-error{{cannot add a default template argument to the definition of a member of a class template}}
-
-  // Testcase 3
-  template<typename T>
-  struct X2 {
-    void f0();
-    template<typename U> void f1();
-  };
-  
-  template<typename T = int> void X2<T>::f0() { } // expected-error{{cannot add a default template argument to the definition of a member of a class template}} 
-  template<typename T> template<typename U = int> void X2<T>::f1() { } // expected-error{{cannot add a default template argument to the definition of a member of a class template}}
-
-  namespace Inner {
-    template<typename T> struct X3;
-    template<typename T> void f2();
-  }
-
-  // Okay; not class members.
-  template<typename T = int> struct Inner::X3 { };
-  template<typename T = int> void Inner::f2() {}
-}
-
-namespace PR10069 {
-  template<typename T, T a, T b=0, T c=1>
-  T f(T x);
-
-  void g() {
-    f<unsigned int, 0>(0);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.param/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++98 -verify %s
-
-// A default template-argument shall not be specified in a function
-// template declaration or a function template definition
-template<typename T = int> // expected-warning{{default template arguments for a function template are a C++11 extension}}
-  void foo0(T); 
-template<typename T = int> // expected-warning{{default template arguments for a function template are a C++11 extension}} 
-  void foo1(T) { } 
-
-// [...] nor in the template-parameter-list of the definition of a
-// member of a class template.
-template<int N>
-struct X0 {
-  void f();
-};
-
-template<int N = 0> // expected-error{{cannot add a default template argument}}
-void X0<N>::f() { } 
-
-class X1 {
-  template<template<int> class TT = X0> // expected-error{{not permitted on a friend template}}
-  friend void f2();
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A0 {
-  struct K { };
-};
-
-template <typename T> struct B0: A0 {
-  static void f() {
-    K k;
-  }
-};
-
-namespace E1 {
-  typedef double A; 
-
-  template<class T> class B {
-    typedef int A; 
-  };
-
-  template<class T> 
-  struct X : B<T> {
-    A* blarg(double *dp) {
-      return dp;
-    }
-  };
-}
-
-namespace E2 {
-  struct A { 
-    struct B;
-    int *a;
-    int Y;
-  };
-    
-  int a;
-  template<class T> struct Y : T { 
-    struct B { /* ... */ };
-    B b; 
-    void f(int i) { a = i; } 
-    Y* p;
-  }; 
-  
-  Y<A> ya;
-}
-
-namespace PR14402 {
-  template<typename T>
-  struct A {
-    typedef int n;
-    int f();
-
-    struct B {};
-    struct C : B {
-      // OK, can't be sure whether we derive from A yet.
-      using A::n;
-      int g() { return f(); }
-    };
-
-    struct D {
-      using A::n; // expected-error {{using declaration refers into 'A<T>::', which is not a base class of 'D'}}
-      int g() { return f(); } // expected-error {{call to non-static member function 'f' of 'A' from nested type 'D'}}
-    };
-
-    struct E { char &f(); };
-    struct F : E {
-      // FIXME: Reject this prior to instantiation; f() is known to return int.
-      char &g() { return f(); }
-      // expected-error at -1 {{'PR14402::A<int>::f' is not a member of class 'PR14402::A<int>::F'}}
-      // expected-error at -2 {{non-const lvalue reference to type 'char' cannot bind to a temporary of type 'int'}}
-    };
-  };
-
-  template<> struct A<int>::B : A<int> {};
-  A<int>::C::n n = A<int>::C().g();
-
-  // 'not a member'
-  char &r = A<int>::F().g(); // expected-note {{in instantiation of}}
-  template<> struct A<char>::E : A<char> {};
-  // 'cannot bind to a temporary'
-  char &s = A<char>::F().g(); // expected-note {{in instantiation of}}
-
-  struct X;
-  struct X { void f(); };
-  struct X;
-  template<typename T> struct Y : X {
-    void g() {
-      X::f();
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-// expected-no-diagnostics
-
-template<int n> struct S;
-
-template<int n> struct T {
-  T() {
-    // An identifier is value-dependent if it is:
-    //  - a name declared with a dependent type
-    S<n> s;
-    S<s> check1; // ok, s is value-dependent
-    //  - the name of a non-type template parameter
-    typename S<n>::T check2; // ok, n is value-dependent
-    //  - a constant with literal type and is initialized with an expression
-    //  that is value-dependent.
-    const int k = n;
-    typename S<k>::T check3a; // ok, u is value-dependent
-
-    constexpr const int *p = &k;
-    typename S<*p>::T check3b; // ok, p is value-dependent
-
-    // (missing from the standard)
-    //  - a reference and is initialized with an expression that is
-    //  value-dependent.
-    const int &i = k;
-    typename S<i>::T check4; // ok, i is value-dependent
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -std=c++98 -verify %s
-
-template<int n> struct S;
-
-template<int n> struct T {
-  T() {
-    // An identifier is value-dependent if it is:
-    //  - a name declared with a dependent type
-    S<n> s;
-    S<s> check1; // ok, s is value-dependent
-    //  - the name of a non-type template parameter
-    typename S<n>::T check2; // ok, n is value-dependent
-    //  - a constant with literal type and is initialized with an expression
-    //  that is value-dependent.
-    const int k = n;
-    typename S<k>::T check3; // ok, u is value-dependent
-
-    const int &i = k;
-    typename S<i>::T check4; // expected-error {{not an integral constant expression}} expected-error {{qualified name}}
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.type/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.type/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.type/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 
-
-// Examples from CWG1056.
-namespace Example1 {
-  template<class T> struct A;
-  template<class T> using B = A<T>;
-
-  template<class T> struct A {
-    struct C {};
-    B<T>::C bc; // ok, B<T> is the current instantiation.
-  };
-
-  template<class T> struct A<A<T>> {
-    struct C {};
-    B<B<T>>::C bc; // ok, B<B<T>> is the current instantiation.
-  };
-
-  template<class T> struct A<A<A<T>>> {
-    struct C {};
-    B<B<T>>::C bc; // expected-error {{missing 'typename'}}
-  };
-}
-
-namespace Example2 {
-  template<class T> struct A {
-    void g();
-  };
-  template<class T> using B = A<T>;
-  template<class T> void B<T>::g() {} // ok.
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep.res/temp.point/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep.res/temp.point/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.dep.res/temp.point/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// XFAIL: *
-
-// Note: we fail this test because we perform template instantiation
-// at the end of the translation unit, so argument-dependent lookup
-// finds functions that occur after the point of instantiation. Note
-// that GCC fails this test; EDG passes the test in strict mode, but
-// not in relaxed mode.
-namespace N {
-  struct A { };
-  struct B : public A { };
-
-  int& f0(A&);
-}
-
-template<typename T, typename Result>
-struct X0 {
-  void test_f0(T t) {
-    Result r = f0(t);
-  };
-};
-
-void test_f0() {
-  X0<N::A, int&> xA;
-  xA.test_f0(N::A());
-  X0<N::B, int&> xB;
-  xB.test_f0(N::B());
-}
-
-namespace N {
-  char& f0(B&);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// C++0x [temp.local]p1:
-//   Like normal (non-template) classes, class templates have an
-//   injected-class-name (Clause 9). The injected-class-name can be used with
-//   or without a template-argument-list. When it is used without
-//   a template-argument-list, it is equivalent to the injected-class-name
-//   followed by the template-parameters of the class template enclosed in <>.
-
-template <typename T> struct X0 {
-  X0();
-  ~X0();
-  X0 f(const X0&);
-};
-
-// Test non-type template parameters.
-template <int N1, const int& N2, const int* N3> struct X1 {
-  X1();
-  ~X1();
-  X1 f(const X1& x1a) { X1 x1b(x1a); return x1b; }
-};
-
-//   When it is used with a template-argument-list, it refers to the specified
-//   class template specialization, which could be the current specialization
-//   or another specialization.
-// FIXME: Test this clause.
-
-int i = 42;
-void test() {
-  X0<int> x0; (void)x0;
-  X1<42, i, &i> x1; (void)x1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-template <class T> struct Base { // expected-note 4 {{member found by ambiguous name lookup}}
-  static void f();
-}; 
-
-struct X0 { };
-
-template <class T> struct Derived: Base<int>, Base<char> {
-  typename Derived::Base b;	// expected-error{{member 'Base' found in multiple base classes of different types}}
-  typename Derived::Base<double> d;	// OK
-
-  void g(X0 *t) {
-    t->Derived::Base<T>::f();
-    t->Base<T>::f();
-    t->Base::f(); // expected-error{{member 'Base' found in multiple base classes of different types}} \
-    // expected-error{{no member named 'f' in 'X0'}} \
-    // expected-error{{expected a class or namespace}}
-  }
-};
-
-namespace PR6717 {
-  template <typename T>
-  class WebVector {
-  } // expected-error {{expected ';' after class}}
-
-    WebVector(const WebVector<T>& other) { } // expected-error{{undeclared identifier 'T'}} \
-                                                expected-error{{requires a type specifier}}
-
-  template <typename C>
-  WebVector<T>& operator=(const C& other) { } // expected-error{{undeclared identifier 'T'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<class T> struct A { 
-  int B;
-  int f();
-}; 
-
-template<class B> int A<B>::f() {
-  return B;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace N { 
-  enum { C };
-  template<class T> class B {
-    void f(T);
-  }; 
-}
-
-template<class C> void N::B<C>::f(C) {
-  C b;
-}
-
-namespace N {
-  enum { D };
-  namespace M {
-    enum { C , D };
-    template<typename C> class X {
-      template<typename U> void f(C, U);
-
-      template<typename D> void g(C, D) {
-        C c;
-        D d;
-      }
-    };
-
-    struct Y {
-      template<typename U> void f(U);      
-    };
-  }
-
-  struct Y {
-    template<typename D> void f(D);
-  };
-}
-
-template<typename C> 
-template<typename D>
-void N::M::X<C>::f(C, D) {
-  C c;
-  D d;
-}
-
-template<typename C>
-void N::M::Y::f(C) {
-  C c;
-}
-
-template<typename D> 
-void N::Y::f(D) {
-  D d;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.res/temp.local/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A { 
-  struct B { void f(); }; 
-  int a; 
-  int Y;
-};
-
-template<class B, class a> struct X : A { 
-  B b;  // A's B 
-  a c;  // expected-error{{unknown type name 'a'}} 
-
-  void g() {
-    b.g(); // expected-error{{no member named 'g' in 'A::B'}}
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> inline void f(T) { }
-template void f(int); // expected-note{{previous explicit instantiation}}
-template void f(int); // expected-error{{duplicate explicit instantiation}}
-
-template<typename T>
-struct X0 {
-  union Inner { };
-  
-  void f(T) { }
-  
-  static T value;
-};
-
-template<typename T>
-T X0<T>::value = 3.14; // expected-warning{{implicit conversion from 'double' to 'int' changes value from 3.14 to 3}}
-
-template struct X0<int>; // expected-note{{previous explicit instantiation}} \
-                            expected-note{{requested here}}
-template struct X0<int>; // expected-error{{duplicate explicit instantiation}}
-
-template void X0<float>::f(float); // expected-note{{previous explicit instantiation}}
-template void X0<float>::f(float); // expected-error{{duplicate explicit instantiation}}
-
-template union X0<float>::Inner; // expected-note{{previous explicit instantiation}}
-template union X0<float>::Inner; // expected-error{{duplicate explicit instantiation}}
-
-template float X0<float>::value; // expected-note{{previous explicit instantiation}}
-template float X0<float>::value; // expected-error{{duplicate explicit instantiation}}
-
-// Make sure that we don't get tricked by redeclarations of nested classes.
-namespace NestedClassRedecls {
-  template<typename T>
-  struct X {
-    struct Nested;
-    friend struct Nested;
-
-    struct Nested { 
-      Nested() {}
-    } nested;
-  };
-
-  X<int> xi;
-
-  template struct X<int>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/examples.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/examples.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/examples.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,334 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace PR5907 {
-  template<typename T> struct identity { typedef T type; };
-  struct A { A(); }; 
-  identity<A>::type::A() { }
-
-  struct B { void f(); };
-  template<typename T> struct C { typedef B type; };
-  
-  void C<int>::type::f() { }
-}
-
-namespace PR9421 {
-  namespace N { template<typename T> struct S { void f(); }; }
-  typedef N::S<int> T;
-  namespace N { template<> void T::f() {} }
-}
-
-namespace PR8277 {
-  template< typename S >
-  struct C
-  {
-    template< int >
-    void F( void )
-    {
-    }
-  };
-
-  template< typename S >
-  struct D
-  {
-    typedef C< int > A;
-  };
-
-  typedef D< int >::A A;
-
-  template<>
-  template<>
-  void A::F< 0 >( void )
-  {
-  }
-}
-
-namespace PR8277b {
-  template<typename S> struct C {
-    void f();
-  };
-  template<typename S> struct D {
-    typedef C<int> A;
-  };
-  template<> void D<int>::A::f() {
-  }
-}
-
-namespace PR8708 {
-  template<typename T> struct A { 
-    template<typename U> struct B {
-      // #2
-      void f();     
-    }; 
-  };  
-
-  // #A specialize the member template for 
-  // implicit instantiation of A<int>,
-  // leaving the member template "unspecialized"
-  // (14.7.3/16). Specialization uses the syntax
-  // for explicit specialization (14.7.3/14)
-  template<> template<typename U> 
-  struct A<int>::B {
-    // #1
-    void g();
-  };  
-
-  // #1 define its function g. There is an enclosing
-  // class template, so we write template<> for each 
-  // specialized template (14.7.3/15).
-  template<> template<typename U>
-  void A<int>::B<U>::g() { }
-
-  // #2 define the unspecialized member template's
-  // f
-  template<typename T> template<typename U>
-  void A<T>::B<U>::f() { }
-
-
-  // specialize the member template again, now
-  // specializing the member too. This specializes
-  // #A
-  template<> template<>
-  struct A<int>::B<int> { 
-    // #3
-    void h();
-  };
-
-  // defines #3. There is no enclosing class template, so
-  // we write no "template<>".
-  void A<int>::B<int>::h() { }
-
-  void test() { 
-    // calls #1
-    A<int>::B<float> a; a.g(); 
-
-    // calls #2
-    A<float>::B<int> b; b.f();
-
-    // calls #3
-    A<int>::B<int> c; c.h();
-  }
-}
-
-namespace PR9482 {
-  namespace N1 {
-    template <typename T> struct S {
-      void foo() {}
-    };
-  }
-
-  namespace N2 {
-    typedef N1::S<int> X;
-  }
-
-  namespace N1 {
-    template<> void N2::X::foo() {}
-  }
-}
-
-namespace PR9668 {
-  namespace First
-  {
-    template<class T>
-    class Bar
-    {
-    protected:
-
-      static const bool static_bool;
-    };
-  }
-
-  namespace Second
-  {
-    class Foo;
-  }
-
-  typedef First::Bar<Second::Foo> Special;
-
-  namespace
-  First
-  {
-    template<>
-    const bool Special::static_bool(false);
-  }
-}
-
-namespace PR9877 {
-  template<int>
-  struct X
-  {
-    struct Y;
-  };
-
-  template<> struct X<0>::Y { static const int Z = 1; };
-  template<> struct X<1>::Y { static const int Z = 1; };
-
-  const int X<0>::Y::Z;
-  template<> const int X<1>::Y::Z; // expected-error{{extraneous 'template<>' in declaration of variable 'Z'}}
-}
-
-namespace PR9913 {
-  template<class,class=int>struct S;
-  template<class X>struct S<X> {
-    template<class T> class F;
-  };
-
-  template<class A>
-  template<class B>
-  class S<A>::F{};
-}
-
-namespace template_class_spec_perClassDecl_nested
-{
-  template <typename T1> struct A {
-    template <typename T2> struct B {
-      template <typename T3> struct C {
-        static void foo();
-      };
-    };
-  };
-
-  template <> struct A<int> {
-    template <typename T2> struct B {
-      template <typename T3> struct C {
-        static void foo();
-      };
-    };
-  };
-
-  template <> template <typename T3> struct A<int>::B<int>::C {
-    static void foo();
-  };
-
-  template <> template <> struct A<int>::B<int>::C<int> {
-    static void foo();
-  };
-
-  template <> template<> template <typename T2> struct A<bool>::B<bool>::C {
-    static void foo();
-  };
-}
-
-
-namespace spec_vs_expl_inst {
-
-  // Test all permutations of Specialization,
-  // explicit instantiation Declaration, and explicit instantiation defInition.
-
-  namespace SDI {  // PR11558
-    template <typename STRING_TYPE> class BasicStringPiece;
-    template <> class BasicStringPiece<int> { };
-    extern template class BasicStringPiece<int>;
-    template class BasicStringPiece<int>;
-  }
-
-  namespace SID {
-    template <typename STRING_TYPE> class BasicStringPiece;
-    template <> class BasicStringPiece<int> { };
-    template class BasicStringPiece<int>;  // expected-note {{explicit instantiation definition is here}}
-    extern template class BasicStringPiece<int>;  // expected-error {{explicit instantiation declaration (with 'extern') follows explicit instantiation definition (without 'extern')}}
-  }
-
-  namespace ISD {
-    template <typename STRING_TYPE> class BasicStringPiece;  // expected-note {{template is declared here}}
-    template class BasicStringPiece<int>;  // expected-error {{explicit instantiation of undefined template 'spec_vs_expl_inst::ISD::BasicStringPiece<int>'}}
-    template <> class BasicStringPiece<int> { };
-    extern template class BasicStringPiece<int>;
-  }
-
-  namespace IDS {
-    template <typename STRING_TYPE> class BasicStringPiece;  // expected-note {{template is declared here}}
-    template class BasicStringPiece<int>;  // expected-error {{explicit instantiation of undefined template 'spec_vs_expl_inst::IDS::BasicStringPiece<int>'}}  // expected-note {{explicit instantiation definition is here}}
-    extern template class BasicStringPiece<int>;  // expected-error {{explicit instantiation declaration (with 'extern') follows explicit instantiation definition (without 'extern')}}
-    template <> class BasicStringPiece<int> { };
-  }
-
-  namespace DIS {
-    template <typename STRING_TYPE> class BasicStringPiece;  // expected-note {{template is declared here}}
-    extern template class BasicStringPiece<int>;  // expected-error {{explicit instantiation of undefined template 'spec_vs_expl_inst::DIS::BasicStringPiece<int>'}}
-    template class BasicStringPiece<int>;
-    template <> class BasicStringPiece<int> { };
-  }
-
-  namespace DSI {
-    template <typename STRING_TYPE> class BasicStringPiece;  // expected-note {{template is declared here}}
-    extern template class BasicStringPiece<int>;  // expected-error {{explicit instantiation of undefined template 'spec_vs_expl_inst::DSI::BasicStringPiece<int>'}}
-    template <> class BasicStringPiece<int> { };
-    template class BasicStringPiece<int>;
-  }
-
-  // The same again, with a defined template class.
-
-  namespace SDI_WithDefinedTemplate {
-    template <typename STRING_TYPE> class BasicStringPiece {};
-    template <> class BasicStringPiece<int> { };
-    extern template class BasicStringPiece<int>;
-    template class BasicStringPiece<int>;
-  }
-
-  namespace SID_WithDefinedTemplate {
-    template <typename STRING_TYPE> class BasicStringPiece {};
-    template <> class BasicStringPiece<int> { };
-    template class BasicStringPiece<int>;  // expected-note {{explicit instantiation definition is here}}
-    extern template class BasicStringPiece<int>;  // expected-error {{explicit instantiation declaration (with 'extern') follows explicit instantiation definition (without 'extern')}}
-  }
-
-  namespace ISD_WithDefinedTemplate {
-    template <typename STRING_TYPE> class BasicStringPiece {};
-    template class BasicStringPiece<int>;  // expected-note {{explicit instantiation first required here}}
-    template <> class BasicStringPiece<int> { };  // expected-error {{explicit specialization of 'spec_vs_expl_inst::ISD_WithDefinedTemplate::BasicStringPiece<int>' after instantiation}}
-    extern template class BasicStringPiece<int>;
-  }
-
-  namespace IDS_WithDefinedTemplate {
-    template <typename STRING_TYPE> class BasicStringPiece {};
-    template class BasicStringPiece<int>;  // expected-note {{explicit instantiation definition is here}} expected-note {{previous definition is here}}
-    extern template class BasicStringPiece<int>;  // expected-error {{explicit instantiation declaration (with 'extern') follows explicit instantiation definition (without 'extern')}}
-    template <> class BasicStringPiece<int> { };  // expected-error {{redefinition of 'spec_vs_expl_inst::IDS_WithDefinedTemplate::BasicStringPiece<int>'}}
-  }
-
-  namespace DIS_WithDefinedTemplate {
-    template <typename STRING_TYPE> class BasicStringPiece {};
-    extern template class BasicStringPiece<int>;  // expected-note {{explicit instantiation first required here}}
-    template class BasicStringPiece<int>;
-    template <> class BasicStringPiece<int> { };  // expected-error {{explicit specialization of 'spec_vs_expl_inst::DIS_WithDefinedTemplate::BasicStringPiece<int>' after instantiation}}
-  }
-
-  namespace DSI_WithDefinedTemplate {
-    template <typename STRING_TYPE> class BasicStringPiece {};
-    extern template class BasicStringPiece<int>;  // expected-note {{explicit instantiation first required here}}
-    template <> class BasicStringPiece<int> { };  // expected-error {{explicit specialization of 'spec_vs_expl_inst::DSI_WithDefinedTemplate::BasicStringPiece<int>' after instantiation}}
-    template class BasicStringPiece<int>;
-  }
-
-  // And some more random tests.
-
-  namespace SII_WithDefinedTemplate {
-    template <typename STRING_TYPE> class BasicStringPiece {};
-    template <> class BasicStringPiece<int> { };
-    template class BasicStringPiece<int>;  // expected-note {{previous explicit instantiation is here}}
-    template class BasicStringPiece<int>;  // expected-error {{duplicate explicit instantiation of 'BasicStringPiece<int>'}}
-  }
-
-  namespace SIS {
-    template <typename STRING_TYPE> class BasicStringPiece;
-    template <> class BasicStringPiece<int> { };  // expected-note {{previous definition is here}}
-    template class BasicStringPiece<int>;
-    template <> class BasicStringPiece<int> { };  // expected-error {{redefinition of 'spec_vs_expl_inst::SIS::BasicStringPiece<int>'}}
-  }
-
-  namespace SDS {
-    template <typename STRING_TYPE> class BasicStringPiece;
-    template <> class BasicStringPiece<int> { };  // expected-note {{previous definition is here}}
-    extern template class BasicStringPiece<int>;
-    template <> class BasicStringPiece<int> { };  // expected-error {{redefinition of 'spec_vs_expl_inst::SDS::BasicStringPiece<int>'}}
-  }
-
-  namespace SDIS {
-    template <typename STRING_TYPE> class BasicStringPiece;
-    template <> class BasicStringPiece<int> { };  // expected-note {{previous definition is here}}
-    extern template class BasicStringPiece<int>;
-    template class BasicStringPiece<int>;
-    template <> class BasicStringPiece<int> { };  // expected-error {{redefinition of 'spec_vs_expl_inst::SDIS::BasicStringPiece<int>'}}
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// This test creates cases where implicit instantiations of various entities
-// would cause a diagnostic, but provides expliict specializations for those
-// entities that avoid the diagnostic. The intent is to verify that 
-// implicit instantiations do not occur (because the explicit specialization 
-// is used instead).
-struct NonDefaultConstructible {
-  NonDefaultConstructible(int);
-};
-
-
-// C++ [temp.expl.spec]p1:
-//   An explicit specialization of any of the following:
-
-//     -- function template
-template<typename T> void f0(T) {
-  T t;
-}
-
-template<> void f0(NonDefaultConstructible) { }
-
-void test_f0(NonDefaultConstructible NDC) {
-  f0(NDC);
-}
-
-//     -- class template
-template<typename T>
-struct X0 {
-  static T member;
-  
-  void f1(T t) {
-    t = 17;
-  }
-  
-  struct Inner : public T { };
-  
-  template<typename U>
-  struct InnerTemplate : public T { };
-  
-  template<typename U>
-  void ft1(T t, U u);
-};
-
-template<typename T> 
-template<typename U>
-void X0<T>::ft1(T t, U u) {
-  t = u;
-}
-
-template<typename T> T X0<T>::member;
-
-template<> struct X0<void> { };
-X0<void> test_X0;
-  
-
-//     -- member function of a class template
-template<> void X0<void*>::f1(void *) { }
-
-void test_spec(X0<void*> xvp, void *vp) {
-  xvp.f1(vp);
-}
-
-//     -- static data member of a class template
-template<> 
-NonDefaultConstructible X0<NonDefaultConstructible>::member = 17;
-
-NonDefaultConstructible &get_static_member() {
-  return X0<NonDefaultConstructible>::member;
-}
-
-//    -- member class of a class template
-template<>
-struct X0<void*>::Inner { };
-
-X0<void*>::Inner inner0;
-
-//    -- member class template of a class template
-template<>
-template<>
-struct X0<void*>::InnerTemplate<int> { };
-
-X0<void*>::InnerTemplate<int> inner_template0;
-
-//    -- member function template of a class template
-template<>
-template<>
-void X0<void*>::ft1(void*, const void*) { }
-
-void test_func_template(X0<void *> xvp, void *vp, const void *cvp) {
-  xvp.ft1(vp, cvp);
-}
-
-// example from the standard:
-template<class T> class stream;
-template<> class stream<char> { /* ... */ };
-template<class T> class Array { /* ... */ }; 
-template<class T> void sort(Array<T>& v) { /* ... */ }
-template<> void sort<char*>(Array<char*>&) ;

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<class T> class X; 
-template<> class X<int>; // expected-note{{forward}}
-X<int>* p; 
-
-X<int> x; // expected-error{{incomplete type}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<class T> class Array { /* ... */ }; 
-template<class T> void sort(Array<T>& v);
-
-// explicit specialization for sort(Array<int>&) 
-// with deduced template-argument of type int 
-template<> void sort(Array<int>&);

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p13.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p13.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p13.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-template<typename T> void f(T);
-
-template<> void f(int) { }
-void f(int) { }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p14.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p14.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p14.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s 
-
-template<class T> void f(T) { /* ... */ }
-template<class T> inline void g(T) { /* ... */ }
-
-// CHECK: define void @_Z1gIiEvT_
-template<> void g<>(int) { /* ... */ }
-
-template<class T>
-struct X {
-  void f() { }
-  void g();
-  void h();
-};
-
-template<class T>
-void X<T>::g() {
-}
-
-template<class T>
-inline void X<T>::h() {
-}
-
-// CHECK: define void @_ZN1XIiE1fEv
-template<> void X<int>::f() { }
-
-// CHECK: define void @_ZN1XIiE1hEv
-template<> void X<int>::h() { }
-
-// CHECK: define linkonce_odr void @_Z1fIiEvT_
-template<> inline void f<>(int) { /* ... */ } 
-
-// CHECK: define linkonce_odr void @_ZN1XIiE1gEv
-template<> inline void X<int>::g() { }
-
-void test(X<int> xi) {
-  f(17);
-  g(17);
-  xi.f();
-  xi.g();
-  xi.h();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p15.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p15.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p15.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct NonDefaultConstructible {
-  NonDefaultConstructible(const NonDefaultConstructible&); // expected-note{{candidate constructor}}
-};
-
-template<typename T, typename U>
-struct X {
-  static T member;
-};
-
-template<typename T, typename U>
-T X<T, U>::member; // expected-error{{no matching constructor}}
-
-// Okay; this is a declaration, not a definition.
-template<>
-NonDefaultConstructible X<NonDefaultConstructible, long>::member;
-
-NonDefaultConstructible &test(bool b) {
-  return b? X<NonDefaultConstructible, int>::member // expected-note{{instantiation}}
-          : X<NonDefaultConstructible, long>::member;
-}
-
-namespace rdar9422013 {
-  template<int>
-  struct X {
-    struct Inner {
-      static unsigned array[17];
-    };
-  };
-
-  template<> unsigned X<1>::Inner::array[]; // okay
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p16.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p16.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p16.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<class T> struct A { 
-  void f(T);
-  template<class X1> void g1(T, X1); 
-  template<class X2> void g2(T, X2); 
-  void h(T) { }
-};
-
-// specialization 
-template<> void A<int>::f(int);
-
-// out of class member template definition 
-template<class T> template<class X1> void A<T>::g1(T, X1) { }
-
-// member template specialization 
-template<> template<class X1> void A<int>::g1(int, X1);
-
-// member template specialization 
-template<> template<>
-  void A<int>::g1(int, char);	// X1 deduced as char 
-
-template<> template<>
-  void A<int>::g2<char>(int, char); // X2 specified as char 
-                                    // member specialization even if defined in class definition
-
-template<> void A<int>::h(int) { }
-
-namespace PR10024 {
-  template <typename T> 
-  struct Test{ 
-    template <typename U> 
-    void get(U i) {}
-  }; 
-
-  template <typename T>
-  template <>
-  void Test<T>::get<double>(double i) {}  // expected-error{{cannot specialize (with 'template<>') a member of an unspecialized template}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p17.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p17.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p17.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<class T1> 
-class A {
-  template<class T2> class B {
-    void mf();
-  };
-};
-
-template<> template<> class A<int>::B<double>; 
-template<> template<> void A<char>::B<char>::mf();
-
-template<> void A<char>::B<int>::mf(); // expected-error{{requires 'template<>'}}
-
-namespace test1 {
-  template <class> class A {
-    static int foo;
-    static int bar;
-  };
-  typedef A<int> AA;
-  
-  template <> int AA::foo = 0; 
-  int AA::bar = 1; // expected-error {{template specialization requires 'template<>'}}
-  int A<float>::bar = 2; // expected-error {{template specialization requires 'template<>'}}
-
-  template <> class A<double> { 
-  public:
-    static int foo;
-    static int bar;    
-  };
-
-  typedef A<double> AB;
-  template <> int AB::foo = 0; // expected-error{{extraneous 'template<>'}}
-  int AB::bar = 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p18.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p18.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p18.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<class T1> class A { 
-  template<class T2> class B {
-    template<class T3> void mf1(T3); 
-    void mf2();
-  };
-}; 
-
-template<> template<class X>
-class A<long>::B { }; 
-
-template<> template<> template<class T>
-  void A<int>::B<double>::mf1(T t) { } 
-
-template<> template<> template<class T>
-void A<long>::B<double>::mf1(T t) { } // expected-error{{does not match}}
-
-// FIXME: This diagnostic could probably be better.
-template<class Y> template<>
-  void A<Y>::B<double>::mf2() { } // expected-error{{does not refer}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p19.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p19.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p19.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X {
-  template<typename U> struct Inner { };
-  
-  template<typename U> void f(T, U) { }
-};
-
-template<> template<typename U>
-struct X<int>::Inner {
-  U member;
-};
-
-template<> template<typename U>
-void X<int>::f(int x, U y) { 
-  x = y; // expected-error{{incompatible type}}
-}
-
-void test(X<int> xi, X<long> xl, float *fp) {
-  X<int>::Inner<float*> xii;
-  xii.member = fp;
-  xi.f(17, 25);
-  xi.f(17, 3.14159);
-  xi.f(17, fp); // expected-note{{instantiation}}
-  X<long>::Inner<float*> xli;
-  
-  xli.member = fp; // expected-error{{no member}}
-  xl.f(17, fp); // okay
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,307 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// This test creates cases where implicit instantiations of various entities
-// would cause a diagnostic, but provides expliict specializations for those
-// entities that avoid the diagnostic. The specializations are alternately
-// declarations and definitions, and the intent of this test is to verify
-// that we allow specializations only in the appropriate namespaces (and
-// nowhere else).
-struct NonDefaultConstructible {
-  NonDefaultConstructible(int);
-};
-
-
-// C++ [temp.expl.spec]p1:
-//   An explicit specialization of any of the following:
-
-//     -- function template
-namespace N0 {
-  template<typename T> void f0(T) {
-    T t;
-  }
-
-  template<> void f0(NonDefaultConstructible) { }
-
-  void test_f0(NonDefaultConstructible NDC) {
-    f0(NDC);
-  }
-  
-  template<> void f0(int);
-  template<> void f0(long);
-}
-
-template<> void N0::f0(int) { } // okay
-
-namespace N1 {
-  template<> void N0::f0(long) { } // expected-error{{does not enclose namespace}}
-}
-
-template<> void N0::f0(double) { }
-
-struct X1 {
-  template<typename T> void f(T);
-  
-  template<> void f(int); // expected-error{{in class scope}}
-};
-
-//     -- class template
-namespace N0 {
-  
-template<typename T>
-struct X0 { // expected-note {{here}}
-  static T member;
-  
-  void f1(T t) {
-    t = 17;
-  }
-  
-  struct Inner : public T { }; // expected-note 2{{here}}
-  
-  template<typename U>
-  struct InnerTemplate : public T { }; // expected-note 1{{explicitly specialized}} \
-   // expected-error{{base specifier}}
-  
-  template<typename U>
-  void ft1(T t, U u);
-};
-
-}
-
-template<typename T> 
-template<typename U>
-void N0::X0<T>::ft1(T t, U u) {
-  t = u;
-}
-
-template<typename T> T N0::X0<T>::member;
-
-template<> struct N0::X0<void> { };
-N0::X0<void> test_X0;
-
-namespace N1 {
-  template<> struct N0::X0<const void> { }; // expected-error{{class template specialization of 'X0' must originally be declared in namespace 'N0'}}
-}
-
-namespace N0 {
-  template<> struct X0<volatile void>;
-}
-
-template<> struct N0::X0<volatile void> { 
-  void f1(void *);
-};
-
-//     -- member function of a class template
-template<> void N0::X0<void*>::f1(void *) { }
-
-void test_spec(N0::X0<void*> xvp, void *vp) {
-  xvp.f1(vp);
-}
-
-namespace N0 {
-  template<> void X0<volatile void>::f1(void *) { } // expected-error{{no function template matches}}
-
-  template<> void X0<const volatile void*>::f1(const volatile void*);
-}
-
-void test_x0_cvvoid(N0::X0<const volatile void*> x0, const volatile void *cvp) {
-  x0.f1(cvp); // okay: we've explicitly specialized
-}
-
-//     -- static data member of a class template
-namespace N0 {
-  // This actually tests p15; the following is a declaration, not a definition.
-  template<> 
-  NonDefaultConstructible X0<NonDefaultConstructible>::member;
-  
-  template<> long X0<long>::member = 17;
-
-  template<> float X0<float>::member;
-  
-  template<> double X0<double>::member;
-}
-
-NonDefaultConstructible &get_static_member() {
-  return N0::X0<NonDefaultConstructible>::member;
-}
-
-template<> int N0::X0<int>::member;
-
-template<> float N0::X0<float>::member = 3.14f;
-
-namespace N1 {
-  template<> double N0::X0<double>::member = 3.14; // expected-error{{does not enclose namespace}}
-}
-
-//    -- member class of a class template
-namespace N0 {
-  
-  template<>
-  struct X0<void*>::Inner { };
-
-  template<>
-  struct X0<int>::Inner { };
-
-  template<>
-  struct X0<unsigned>::Inner;
-
-  template<>
-  struct X0<float>::Inner;
-
-  template<>
-  struct X0<double>::Inner; // expected-note{{forward declaration}}
-}
-
-template<>
-struct N0::X0<long>::Inner { };
-
-template<>
-struct N0::X0<float>::Inner { };
-
-namespace N1 {
-  template<>
-  struct N0::X0<unsigned>::Inner { }; // expected-error{{member class specialization}}
-
-  template<>
-  struct N0::X0<unsigned long>::Inner { }; // expected-error{{member class specialization}}
-};
-
-N0::X0<void*>::Inner inner0;
-N0::X0<int>::Inner inner1;
-N0::X0<long>::Inner inner2;
-N0::X0<float>::Inner inner3;
-N0::X0<double>::Inner inner4; // expected-error{{incomplete}}
-
-//    -- member class template of a class template
-namespace N0 {
-  template<>
-  template<>
-  struct X0<void*>::InnerTemplate<int> { };
-  
-  template<> template<>
-  struct X0<int>::InnerTemplate<int>; // expected-note{{forward declaration}}
-
-  template<> template<>
-  struct X0<int>::InnerTemplate<long>;
-
-  template<> template<>
-  struct X0<int>::InnerTemplate<double>;
-}
-
-template<> template<>
-struct N0::X0<int>::InnerTemplate<long> { }; // okay
-
-template<> template<>
-struct N0::X0<int>::InnerTemplate<float> { };
-
-namespace N1 {
-  template<> template<>
-  struct N0::X0<int>::InnerTemplate<double> { }; // expected-error{{enclosing}}
-}
-
-N0::X0<void*>::InnerTemplate<int> inner_template0;
-N0::X0<int>::InnerTemplate<int> inner_template1; // expected-error{{incomplete}}
-N0::X0<int>::InnerTemplate<long> inner_template2;
-N0::X0<int>::InnerTemplate<unsigned long> inner_template3; // expected-note{{instantiation}}
-
-//    -- member function template of a class template
-namespace N0 {
-  template<>
-  template<>
-  void X0<void*>::ft1(void*, const void*) { }
-  
-  template<> template<>
-  void X0<void*>::ft1(void *, int);
-
-  template<> template<>
-  void X0<void*>::ft1(void *, unsigned);
-
-  template<> template<>
-  void X0<void*>::ft1(void *, long);
-}
-
-template<> template<>
-void N0::X0<void*>::ft1(void *, unsigned) { } // okay
-
-template<> template<>
-void N0::X0<void*>::ft1(void *, float) { }
-
-namespace N1 {
-  template<> template<>
-  void N0::X0<void*>::ft1(void *, long) { } // expected-error{{does not enclose namespace}}
-}
-
-
-void test_func_template(N0::X0<void *> xvp, void *vp, const void *cvp,
-                        int i, unsigned u) {
-  xvp.ft1(vp, cvp);
-  xvp.ft1(vp, i);
-  xvp.ft1(vp, u);
-}
-
-namespace has_inline_namespaces {
-  inline namespace inner {
-    template<class T> void f(T&);
-
-    template<class T> 
-    struct X0 {
-      struct MemberClass;
-
-      void mem_func();
-
-      template<typename U>
-      struct MemberClassTemplate;
-
-      template<typename U>
-      void mem_func_template(U&);
-
-      static int value;
-    };
-  }
-
-  struct X1;
-  struct X2;
-
-  // An explicit specialization whose declarator-id is not qualified
-  // shall be declared in the nearest enclosing namespace of the
-  // template, or, if the namespace is inline (7.3.1), any namespace
-  // from its enclosing namespace set.
-  template<> void f(X1&);
-  template<> void f<X2>(X2&);
-
-  template<> struct X0<X1> { };
-
-  template<> struct X0<X2>::MemberClass { };
-
-  template<> void X0<X2>::mem_func();
-
-  template<> template<typename T> struct X0<X2>::MemberClassTemplate { };
-
-  template<> template<typename T> void X0<X2>::mem_func_template(T&) { }
-
-  template<> int X0<X2>::value = 12;
-}
-
-struct X3;
-struct X4;
-
-template<> void has_inline_namespaces::f(X3&);
-template<> void has_inline_namespaces::f<X4>(X4&);
-
-template<> struct has_inline_namespaces::X0<X3> { };
-
-template<> struct has_inline_namespaces::X0<X4>::MemberClass { };
-
-template<> void has_inline_namespaces::X0<X4>::mem_func();
-
-template<> template<typename T> 
-struct has_inline_namespaces::X0<X4>::MemberClassTemplate { };
-
-template<> template<typename T> 
-void has_inline_namespaces::X0<X4>::mem_func_template(T&) { }
-
-template<> int has_inline_namespaces::X0<X4>::value = 13;
-
-namespace PR12938 {
-  template<typename> [[noreturn]] void func();
-  template<> void func<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,252 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// This test creates cases where implicit instantiations of various entities
-// would cause a diagnostic, but provides expliict specializations for those
-// entities that avoid the diagnostic. The specializations are alternately
-// declarations and definitions, and the intent of this test is to verify
-// that we allow specializations only in the appropriate namespaces (and
-// nowhere else).
-struct NonDefaultConstructible {
-  NonDefaultConstructible(int);
-};
-
-
-// C++ [temp.expl.spec]p1:
-//   An explicit specialization of any of the following:
-
-//     -- function template
-namespace N0 {
-  template<typename T> void f0(T) { // expected-note{{here}}
-    T t;
-  }
-
-  template<> void f0(NonDefaultConstructible) { }
-
-  void test_f0(NonDefaultConstructible NDC) {
-    f0(NDC);
-  }
-  
-  template<> void f0(int);
-  template<> void f0(long);
-}
-
-template<> void N0::f0(int) { } // okay
-
-namespace N1 {
-  template<> void N0::f0(long) { } // expected-error{{does not enclose namespace}}
-}
-
-template<> void N0::f0(double); // expected-warning{{C++11 extension}}
-template<> void N0::f0(double) { }
-
-struct X1 {
-  template<typename T> void f(T);
-  
-  template<> void f(int); // expected-error{{in class scope}}
-};
-
-//     -- class template
-namespace N0 {
-  
-template<typename T>
-struct X0 { // expected-note 2{{here}}
-  static T member; // expected-note{{here}}
-  
-  void f1(T t) { // expected-note{{explicitly specialized declaration is here}}
-    t = 17;
-  }
-  
-  struct Inner : public T { }; // expected-note 3{{here}}
-  
-  template<typename U>
-  struct InnerTemplate : public T { }; // expected-note 2{{explicitly specialized}} \
-   // expected-error{{base specifier}}
-  
-  template<typename U>
-  void ft1(T t, U u); // expected-note{{explicitly specialized}}
-};
-
-}
-
-template<typename T> 
-template<typename U>
-void N0::X0<T>::ft1(T t, U u) {
-  t = u;
-}
-
-template<typename T> T N0::X0<T>::member;
-
-template<> struct N0::X0<void> { }; // expected-warning{{C++11 extension}}
-N0::X0<void> test_X0;
-
-namespace N1 {
-  template<> struct N0::X0<const void> { }; // expected-error{{originally}}
-}
-
-namespace N0 {
-  template<> struct X0<volatile void>;
-}
-
-template<> struct N0::X0<volatile void> { 
-  void f1(void *);
-};
-
-//     -- member function of a class template
-template<> void N0::X0<void*>::f1(void *) { } // expected-warning{{member function specialization}}
-
-void test_spec(N0::X0<void*> xvp, void *vp) {
-  xvp.f1(vp);
-}
-
-namespace N0 {
-  template<> void X0<volatile void>::f1(void *) { } // expected-error{{no function template matches}}
-
-  template<> void X0<const volatile void*>::f1(const volatile void*);
-}
-
-void test_x0_cvvoid(N0::X0<const volatile void*> x0, const volatile void *cvp) {
-  x0.f1(cvp); // okay: we've explicitly specialized
-}
-
-//     -- static data member of a class template
-namespace N0 {
-  // This actually tests p15; the following is a declaration, not a definition.
-  template<> 
-  NonDefaultConstructible X0<NonDefaultConstructible>::member;
-  
-  template<> long X0<long>::member = 17;
-
-  template<> float X0<float>::member;
-  
-  template<> double X0<double>::member;
-}
-
-NonDefaultConstructible &get_static_member() {
-  return N0::X0<NonDefaultConstructible>::member;
-}
-
-template<> int N0::X0<int>::member;  // expected-warning{{C++11 extension}}
-
-template<> float N0::X0<float>::member = 3.14f;
-
-namespace N1 {
-  template<> double N0::X0<double>::member = 3.14; // expected-error{{does not enclose namespace}}
-}
-
-//    -- member class of a class template
-namespace N0 {
-  
-  template<>
-  struct X0<void*>::Inner { };
-
-  template<>
-  struct X0<int>::Inner { };
-
-  template<>
-  struct X0<unsigned>::Inner;
-
-  template<>
-  struct X0<float>::Inner;
-
-  template<>
-  struct X0<double>::Inner; // expected-note{{forward declaration}}
-}
-
-template<>
-struct N0::X0<long>::Inner { }; // expected-warning{{C++11 extension}}
-
-template<>
-struct N0::X0<float>::Inner { };
-
-namespace N1 {
-  template<>
-  struct N0::X0<unsigned>::Inner { }; // expected-error{{member class specialization}}
-
-  template<>
-  struct N0::X0<unsigned long>::Inner { }; // expected-error{{member class specialization}}
-};
-
-N0::X0<void*>::Inner inner0;
-N0::X0<int>::Inner inner1;
-N0::X0<long>::Inner inner2;
-N0::X0<float>::Inner inner3;
-N0::X0<double>::Inner inner4; // expected-error{{incomplete}}
-
-//    -- member class template of a class template
-namespace N0 {
-  template<>
-  template<>
-  struct X0<void*>::InnerTemplate<int> { };
-  
-  template<> template<>
-  struct X0<int>::InnerTemplate<int>; // expected-note{{forward declaration}}
-
-  template<> template<>
-  struct X0<int>::InnerTemplate<long>;
-
-  template<> template<>
-  struct X0<int>::InnerTemplate<double>;
-}
-
-template<> template<>
-struct N0::X0<int>::InnerTemplate<long> { }; // okay
-
-template<> template<>
-struct N0::X0<int>::InnerTemplate<float> { }; // expected-warning{{class template specialization}}
-
-namespace N1 {
-  template<> template<>
-  struct N0::X0<int>::InnerTemplate<double> { }; // expected-error{{enclosing}}
-}
-
-N0::X0<void*>::InnerTemplate<int> inner_template0;
-N0::X0<int>::InnerTemplate<int> inner_template1; // expected-error{{incomplete}}
-N0::X0<int>::InnerTemplate<long> inner_template2;
-N0::X0<int>::InnerTemplate<unsigned long> inner_template3; // expected-note{{instantiation}}
-
-//    -- member function template of a class template
-namespace N0 {
-  template<>
-  template<>
-  void X0<void*>::ft1(void*, const void*) { }
-  
-  template<> template<>
-  void X0<void*>::ft1(void *, int);
-
-  template<> template<>
-  void X0<void*>::ft1(void *, unsigned);
-
-  template<> template<>
-  void X0<void*>::ft1(void *, long);
-}
-
-template<> template<>
-void N0::X0<void*>::ft1(void *, unsigned) { } // okay
-
-template<> template<>
-void N0::X0<void*>::ft1(void *, float) { } // expected-warning{{function template specialization}}
-
-namespace N1 {
-  template<> template<>
-  void N0::X0<void*>::ft1(void *, long) { } // expected-error{{does not enclose namespace}}
-}
-
-
-void test_func_template(N0::X0<void *> xvp, void *vp, const void *cvp,
-                        int i, unsigned u) {
-  xvp.ft1(vp, cvp);
-  xvp.ft1(vp, i);
-  xvp.ft1(vp, u);
-}
-
-namespace PR8979 {
-  template<typename Z>
-  struct X0 {
-    template <class T, class U> class Inner;
-    struct OtherInner;
-    template<typename T, typename U> void f(Inner<T, U>&);
-
-    typedef Inner<OtherInner, OtherInner> MyInner;
-    template<> void f(MyInner&); // expected-error{{cannot specialize a function 'f' within class scope}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p20.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p20.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p20.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-void f(T);
-
-template<typename T>
-struct A { };
-
-struct X {
-  template<> friend void f<int>(int); // expected-error{{in a friend}}
-  template<> friend class A<int>; // expected-error{{cannot be a friend}}
-  
-  friend void f<float>(float); // okay
-  friend class A<float>; // okay
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p21.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p21.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p21.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X {
-  void mf1(T);
-  template<typename U> void mf2(T, U); // expected-note{{previous}}
-};
-
-template<>
-void X<int>::mf1(int i = 17) // expected-error{{default}}
-{
-}
-
-template<> template<>
-void X<int>::mf2(int, int = 17) // expected-error{{default}}
-{ }
-
-template<> template<typename U> 
-void X<int>::mf2(int, U = U()) // expected-error{{default}}
-{
-}
-
-template<>
-struct X<float> {
-  void mf1(float);
-};
-
-void X<float>::mf1(float = 3.14f)  // okay
-{
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace N {
-  template<class T> class X; // expected-note {{'N::X' declared here}} \
-                             // expected-note {{explicitly specialized declaration is here}}
-}
-
-// TODO: Don't add a namespace qualifier to the template if it would trigger
-// the warning about the specialization being outside of the namespace.
-template<> class X<int> { /* ... */ };	// expected-error {{no template named 'X'; did you mean 'N::X'?}} \
-                                        // expected-warning {{first declaration of class template specialization of 'X' outside namespace 'N' is a C++11 extension}}
-
-namespace N {
-  
-template<> class X<char*> { /* ... */ };	// OK: X is a template
-  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct IntHolder { // expected-note{{here}} // expected-note 2{{candidate constructor (the implicit copy constructor)}}
-  IntHolder(int); // expected-note 2{{candidate constructor}}
-};
-
-template<typename T, typename U>
-struct X { // expected-note{{here}}
-  void f() { 
-    T t; // expected-error{{no matching}}
-  }
-
-  void g() { }
-  
-  struct Inner {  // expected-error{{implicit default}}
-    T value; 	// expected-note {{member is declared here}}
-  };
-  
-  static T value;
-};
-
-template<typename T, typename U>
-T X<T, U>::value; // expected-error{{no matching constructor}}
-
-IntHolder &test_X_IntHolderInt(X<IntHolder, int> xih) {
-  xih.g(); // okay
-  xih.f(); // expected-note{{instantiation}}
-  
-  X<IntHolder, int>::Inner inner; // expected-note {{first required here}}
-  
-  return X<IntHolder, int>::value; // expected-note{{instantiation}}
-}
-
-// Explicitly specialize the members of X<IntHolder, long> to not cause
-// problems with instantiation.
-template<>
-void X<IntHolder, long>::f() { }
-
-template<>
-struct X<IntHolder, long>::Inner {
-  Inner() : value(17) { }
-  IntHolder value;
-};
-
-template<>
-IntHolder X<IntHolder, long>::value = 17;
-
-IntHolder &test_X_IntHolderInt(X<IntHolder, long> xih) {
-  xih.g(); // okay
-  xih.f(); // okay, uses specialization
-  
-  X<IntHolder, long>::Inner inner; // okay, uses specialization
-  
-  return X<IntHolder, long>::value; // okay, uses specialization
-}
-
-template<>
-X<IntHolder, long>::X() { } // expected-error{{instantiated member}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p5-example.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p5-example.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p5-example.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<class T> struct A {
-       struct B { };
-       template<class U> struct C { };
-};
-     template<> struct A<int> {
-       void f(int);
-};
-void h() {
-  A<int> a;
-  a.f(16);
-}
-// A<int>::f must be defined somewhere
-// template<> not used for a member of an // explicitly specialized class template
-void A<int>::f(int) { /* ... */ }
-  template<> struct A<char>::B {
-    void f();
-};
-// template<> also not used when defining a member of // an explicitly specialized member class
-void A<char>::B::f() { /* ... */ }
-  template<> template<class U> struct A<char>::C {
-    void f();
-};
-
-template<>
-template<class U> void A<char>::C<U>::f() { /* ... */ }
-  template<> struct A<short>::B {
-    void f();
-};
-template<> void A<short>::B::f() { /* ... */ } // expected-error{{no function template matches function template specialization 'f'}}
-  template<> template<class U> struct A<short>::C {
-    void f();
-};
-template<class U> void A<short>::C<U>::f() { /* ... */ } // expected-error{{template parameter list matching the non-templated nested type 'A<short>' should be empty ('template<>')}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct IntHolder {
-  IntHolder(int);
-};
-
-template<typename T, typename U>
-struct X {
-  void f() { 
-    T t;
-  }
-  
-  void g() { }
-  
-  struct Inner { 
-    T value; 
-  };
-  
-  static T value;
-};
-
-template<typename T, typename U>
-T X<T, U>::value;
-
-// Explicitly specialize the members of X<IntHolder, long> to not cause
-// problems with instantiation, but only provide declarations (not definitions).
-template<>
-void X<IntHolder, long>::f();
-
-template<>
-struct X<IntHolder, long>::Inner; // expected-note{{forward declaration}}
-
-template<>
-IntHolder X<IntHolder, long>::value;
-
-IntHolder &test_X_IntHolderInt(X<IntHolder, long> xih) {
-  xih.g(); // okay
-  xih.f(); // okay, uses specialization
-  
-  X<IntHolder, long>::Inner inner; // expected-error {{incomplete}}
-  
-  return X<IntHolder, long>::value; // okay, uses specialization
-}
-
-
-template<class T> struct A {
-  void f(T) { /* ... */ }
-};
-
-template<> struct A<int> { 
-  void f(int);
-};
-
-void h() {
-  A<int> a; 
-  a.f(16); // A<int>::f must be defined somewhere
-}
-
-// explicit specialization syntax not used for a member of 
-// explicitly specialized class template specialization 
-void A<int>::f(int) { /* ... */ }

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X0 {
-  void f();
-  
-  template<typename U>
-  void g(U);
-  
-  struct Nested {
-  };
-  
-  static T member;
-};
-
-int &use_X0_int(X0<int> x0i,  // expected-note{{implicit instantiation first required here}}
-                int i) {
-  x0i.f(); // expected-note{{implicit instantiation first required here}}
-  x0i.g(i); // expected-note{{implicit instantiation first required here}}
-  X0<int>::Nested nested; // expected-note{{implicit instantiation first required here}}
-  return X0<int>::member; // expected-note{{implicit instantiation first required here}}
-}
-
-template<>
-void X0<int>::f() { // expected-error{{after instantiation}}
-}
-
-template<> template<>
-void X0<int>::g(int) { // expected-error{{after instantiation}}
-}
-
-template<>
-struct X0<int>::Nested { }; // expected-error{{after instantiation}}
-
-template<>
-int X0<int>::member = 17; // expected-error{{after instantiation}}
-
-template<>
-struct X0<int> { }; // expected-error{{after instantiation}}
-
-// Example from the standard
-template<class T> class Array { /* ... */ }; 
-
-template<class T> void sort(Array<T>& v) { /* ... */ }
-
-struct String {};
-
-void f(Array<String>& v) {
-  
-  sort(v); // expected-note{{required}}
-           // use primary template 
-           // sort(Array<T>&), T is String
-}
-
-template<> void sort<String>(Array<String>& v); // // expected-error{{after instantiation}}
-template<> void sort<>(Array<char*>& v);	// OK: sort<char*> not yet used
-
-namespace PR6160 {
-  template<typename T> void f(T);
-  template<> void f(int);
-  extern template void f(int);
-  template<> void f(int) { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.expl.spec/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace N { 
-  template<class T> class X { /* ... */ }; 
-  template<class T> class Y { /* ... */ };
-  template<> class X<int> { /* ... */ }; 
-  template<> class Y<double>;
-  
-  const unsigned NumElements = 17;
-} 
-
-template<> class N::Y<double> { 
-  int array[NumElements];
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-template<typename T>
-struct X {
-  void f() {}
-};
-
-template inline void X<int>::f(); // expected-error{{explicit instantiation cannot be 'inline'}}
-
-template<typename T>
-struct Y {
-  constexpr int f() { return 0; } // expected-warning{{C++1y}}
-};
-
-template constexpr int Y<int>::f() const; // expected-error{{explicit instantiation cannot be 'constexpr'}}
-
-template<typename T>
-struct Z {
-  enum E : T { e1, e2 };
-  T t; // expected-note {{refers here}}
-};
-
-template enum Z<int>::E; // expected-error {{enumerations cannot be explicitly instantiated}}
-template int Z<int>::t; // expected-error {{explicit instantiation of 't' does not refer to}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1-emit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10 -o - %s | FileCheck %s
-template<typename T>
-struct X {
-  static T member1;
-  static T member2;
-  static T member3;
-};
-
-template<typename T>
-T X<T>::member1;
-
-template<typename T>
-T X<T>::member2 = 17;
-
-// CHECK: @_ZN1XIiE7member1E = weak_odr global i32 0
-template int X<int>::member1;
-
-// CHECK: @_ZN1XIiE7member2E = weak_odr global i32 17
-template int X<int>::member2;
-
-// For implicit instantiation of 
-long& get(bool Cond1, bool Cond2) {
-  // CHECK: @_ZN1XIlE7member1E = weak_odr global i64 0
-  // CHECK: @_ZN1XIlE7member2E = weak_odr global i64 17
-  // CHECK: @_ZN1XIlE7member3E = external global i64
-  return Cond1? X<long>::member1 
-       : Cond2? X<long>::member2
-              : X<long>::member3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct C { };
-
-template<typename T>
-struct X0 {
-  T value; // expected-error{{incomplete}}
-};
-
-// Explicitly instantiate a class template specialization
-template struct X0<int>;
-template struct X0<void>; // expected-note{{instantiation}}
-
-// Explicitly instantiate a function template specialization
-template<typename T>
-void f0(T t) {
-  ++t; // expected-error{{cannot increment}}
-}
-
-template void f0(int);
-template void f0<long>(long);
-template void f0<>(unsigned);
-template void f0(int C::*); // expected-note{{instantiation}}
-
-// Explicitly instantiate a member template specialization
-template<typename T>
-struct X1 {
-  template<typename U>
-  struct Inner {
-    T member1;
-    U member2; // expected-error{{incomplete}}
-  };
-  
-  template<typename U>
-  void f(T& t, U u) {
-    t = u; // expected-error{{incompatible}}
-  }
-};
-
-template struct X1<int>::Inner<float>;
-template struct X1<int>::Inner<double>;
-template struct X1<int>::Inner<void>; // expected-note{{instantiation}}
-
-template void X1<int>::f(int&, float);
-template void X1<int>::f<long>(int&, long);
-template void X1<int>::f<>(int&, double);
-template void X1<int>::f<>(int&, int*); // expected-note{{instantiation}}
-
-// Explicitly instantiate members of a class template
-struct Incomplete; // expected-note{{forward declaration}}
-struct NonDefaultConstructible { // expected-note{{candidate constructor (the implicit copy constructor) not viable}}
-  NonDefaultConstructible(int); // expected-note{{candidate constructor}}
-};
-
-template<typename T, typename U>
-struct X2 {
-  void f(T &t, U u) { 
-    t = u; // expected-error{{incompatible}}
-  }
-  
-  struct Inner {
-    T member1;
-    U member2; // expected-error{{incomplete}}
-  };
-  
-  static T static_member1;
-  static U static_member2;
-};
-
-template<typename T, typename U>
-T X2<T, U>::static_member1 = 17; // expected-error{{cannot initialize}}
-
-template<typename T, typename U>
-U X2<T, U>::static_member2; // expected-error{{no matching}}
-
-template void X2<int, float>::f(int &, float);
-template void X2<int, float>::f(int &, double); // expected-error{{does not refer}}
-template void X2<int, int*>::f(int&, int*); // expected-note{{instantiation}}
-
-template struct X2<int, float>::Inner;
-template struct X2<int, Incomplete>::Inner; // expected-note{{instantiation}}
-
-template int X2<int, float>::static_member1;
-template int* X2<int*, float>::static_member1; // expected-note{{instantiation}}
-template 
-  NonDefaultConstructible X2<NonDefaultConstructible, int>::static_member1;
-
-template 
-  NonDefaultConstructible X2<int, NonDefaultConstructible>::static_member2; // expected-note{{instantiation}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p10.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p10.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p10.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X0 {
-  void f(T&);
-  
-  struct Inner;
-  
-  static T static_var;
-};
-
-template<typename T>
-void X0<T>::f(T& t) { 
-  t = 1; // expected-error{{incompatible type}}
-}
-
-template<typename T>
-struct X0<T>::Inner {
-  T member;
-};
-
-template<typename T>
-T X0<T>::static_var = 1; // expected-error{{cannot initialize}}
-
-extern template struct X0<void*>;
-template struct X0<void*>; // expected-note 2{{instantiation}}
-
-template struct X0<int>; // expected-note 4{{explicit instantiation definition is here}}
-
-extern template void X0<int>::f(int&); // expected-error{{follows explicit instantiation definition}}
-extern template struct X0<int>::Inner; // expected-error{{follows explicit instantiation definition}}
-extern template int X0<int>::static_var; // expected-error{{follows explicit instantiation definition}}
-extern template struct X0<int>; // expected-error{{follows explicit instantiation definition}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-class X {
-  template <typename T> class Y {};
-};
-
-class A {
-  class B {};
-  class C {};
-};
-
-// C++0x [temp.explicit] 14.7.2/11:
-//   The usual access checking rules do not apply to names used to specify
-//   explicit instantiations.
-template class X::Y<A::B>;
-
-// As an extension, this rule is applied to explicit specializations as well.
-template <> class X::Y<A::C> {};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p12.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p12.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p12.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace test0 {
-  char* p = 0; 
-  template<class T> T g(T x = &p) { return x; }
-  template int g<int>(int);	// OK even though &p isn't an int.
-}
-
-// Don't impose access restrictions on explicit instantiations.
-namespace test1 {
-  class A {
-    class Private {};
-  public:
-    typedef Private Public;
-  };
-
-  template <class T> class Temp {
-    static Temp<A::Public> make() { return Temp<A::Public>(); }
-  };
-  template class Temp<A::Private>;
-
-  // FIXME: this ought to be an error, but it isn't because Sema is
-  // silently failing to create a declaration for the explicit
-  // instantiation.
-  template class Temp<A::Private> Temp<int>::make();
-}
-
-// Don't impose access restrictions on explicit specializations,
-// either.  This goes here because it's an extension of the rule for
-// explicit instantiations and doesn't have any independent support.
-namespace test2 {
-  class A {
-    class Private {}; // expected-note {{implicitly declared private here}}
-  public:
-    typedef Private Public;
-  };
-
-  template <class T> class Temp {
-    static Temp<A::Public> make();
-  };
-  template <> class Temp<A::Private> {
-  public:
-    Temp(int x) {}
-  };
-
-  template <> class Temp<A::Private> Temp<int>::make() { // expected-error {{'Private' is a private member of 'test2::A'}}
-    return Temp<A::Public>(0);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -Wc++11-compat %s
-
-// Example from the standard
-template<class T> class Array { void mf() { } }; 
-
-template class Array<char>; 
-template void Array<int>::mf();
-template<class T> void sort(Array<T>& v) { /* ... */ }
-template void sort(Array<char>&);
-namespace N { 
-  template<class T> void f(T&) { }
-} 
-template void N::f<int>(int&);
-
-
-template<typename T>
-struct X0 {
-  struct Inner {};
-  void f() { }
-  static T value;
-};
-
-template<typename T>
-T X0<T>::value = 17;
-
-typedef X0<int> XInt;
-
-template struct XInt::Inner; // expected-warning{{template-id}}
-template void XInt::f(); // expected-warning{{template-id}}
-template int XInt::value; // expected-warning{{template-id}}
-
-namespace N {
-  template<typename T>
-  struct X1 { // expected-note{{explicit instantiation refers here}}
-  };
-  
-  template<typename T>
-  void f1(T) {} // expected-note{{explicit instantiation refers here}}
-}
-using namespace N;
-
-template struct X1<int>; // expected-warning{{must occur in}}
-template void f1(int); // expected-warning{{must occur in}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p3-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p3-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p3-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-// expected-no-diagnostics
-
-// If the name declared in the explicit instantiation is an
-// unqualified name, the explicit instantiation shall appear in the
-// namespace where its template is declared or, if that namespace is
-// inline (7.3.1), any namespace from its enclosing namespace set.
-
-namespace has_inline_namespaces {
-  inline namespace inner {
-    template<class T> void f(T&) {}
-
-    template<class T> 
-    struct X0 {
-      struct MemberClass {};
-
-      void mem_func() {}
-
-      template<typename U>
-      struct MemberClassTemplate {};
-
-      template<typename U>
-      void mem_func_template(U&) {}
-
-      static int value;
-    };
-  }
-
-  template<typename T> int X0<T>::value = 17;
-
-  struct X1 {};
-  struct X2 {};
-
-  template void f(X1&);
-  template void f<X2>(X2&);
-
-  template struct X0<X1>;
-
-  template struct X0<X2>::MemberClass;
-
-  template void X0<X2>::mem_func();
-
-  template struct X0<X2>::MemberClassTemplate<X1>;
-
-  template void X0<X2>::mem_func_template(X1&);
-
-  template int X0<X2>::value;
-}
-
-struct X3;
-struct X4;
-
-template void has_inline_namespaces::f(X3&);
-template void has_inline_namespaces::f<X4>(X4&);
-
-template struct has_inline_namespaces::X0<X3>;
-
-template struct has_inline_namespaces::X0<X4>::MemberClass;
-
-template void has_inline_namespaces::X0<X4>::mem_func();
-
-template 
-struct has_inline_namespaces::X0<X4>::MemberClassTemplate<X3>;
-
-template
-void has_inline_namespaces::X0<X4>::mem_func_template(X3&);

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wc++11-compat %s
-
-// A declaration of a function template shall be in scope at the point of the 
-// explicit instantiation of the function template.
-template<typename T> void f0(T);
-template void f0(int); // okay
-template<typename T> void f0(T) { }
-
-// A definition of the class or class template containing a member function 
-// template shall be in scope at the point of the explicit instantiation of 
-// the member function template.
-struct X0; // expected-note {{forward declaration}}
-template<typename> struct X1; // expected-note 5{{declared here}}
-
-template void X0::f0<int>(int); // expected-error {{incomplete type}}
-template void X1<int>::f0<int>(int); // expected-error {{implicit instantiation of undefined template}}
-
-// A definition of a class template or class member template shall be in scope 
-// at the point of the explicit instantiation of the class template or class 
-// member template.
-template struct X1<float>; // expected-error{{explicit instantiation of undefined template}}
-
-template<typename T>
-struct X2 { // expected-note 4{{refers here}}
-  template<typename U>
-  struct Inner; // expected-note{{declared here}}
-  
-  struct InnerClass; // expected-note{{forward declaration}}
-};
-
-template struct X2<int>::Inner<float>; // expected-error{{explicit instantiation of undefined template}}
-
-// A definition of a class template shall be in scope at the point of an 
-// explicit instantiation of a member function or a static data member of the
-// class template.
-template void X1<int>::f1(int); // expected-error {{undefined template}}
-template void X1<int>::f1<int>(int); // expected-error {{undefined template}}
-
-template int X1<int>::member; // expected-error {{undefined template}}
-
-// A definition of a member class of a class template shall be in scope at the 
-// point of an explicit instantiation of the member class.
-template struct X2<float>::InnerClass; // expected-error{{undefined member}}
-
-// If the declaration of the explicit instantiation names an implicitly-declared 
-// special member function (Clause 12), the program is ill-formed.
-template X2<int>::X2(); // expected-error{{not an instantiation}}
-template X2<int>::X2(const X2&); // expected-error{{not an instantiation}}
-template X2<int>::~X2(); // expected-error{{not an instantiation}}
-template X2<int> &X2<int>::operator=(const X2<int>&); // expected-error{{not an instantiation}}
-
-
-// A definition of a class template is sufficient to explicitly
-// instantiate a member of the class template which itself is not yet defined.
-namespace PR7979 {
-  template <typename T> struct S {
-    void f();
-    static void g();
-    static int i;
-    struct S2 {
-      void h();
-    };
-  };
-
-  template void S<int>::f();
-  template void S<int>::g();
-  template int S<int>::i;
-  template void S<int>::S2::h();
-
-  template <typename T> void S<T>::f() {}
-  template <typename T> void S<T>::g() {}
-  template <typename T> int S<T>::i;
-  template <typename T> void S<T>::S2::h() {}
-}
-
-namespace PR11599 {
-  template <typename STRING_TYPE> class BasicStringPiece;  // expected-note {{template is declared here}}
-
-  extern template class BasicStringPiece<int>;  // expected-error{{explicit instantiation of undefined template 'PR11599::BasicStringPiece<int>}}
-  template class BasicStringPiece<int>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-template<typename T> void f0(T); // expected-note{{here}}
-template void f0(int); // expected-error{{explicit instantiation of undefined function template}}
-
-template<typename T>
-struct X0 {
-  struct Inner;
-  
-  void f1(); // expected-note{{here}}
-  
-  static T value; // expected-note{{here}}
-};
-
-template void X0<int>::f1(); // expected-error{{explicit instantiation of undefined member function}}
-
-template int X0<int>::value; // expected-error{{explicit instantiation of undefined static data member}}
-
-template<> void f0(long); // expected-note{{previous template specialization is here}}
-template void f0(long); // expected-warning{{explicit instantiation of 'f0<long>' that occurs after an explicit specialization will be ignored}}
-
-template<> void X0<long>::f1(); // expected-note{{previous template specialization is here}}
-template void X0<long>::f1(); // expected-warning{{explicit instantiation of 'f1' that occurs after an explicit specialization will be ignored}}
-
-template<> struct X0<long>::Inner; // expected-note{{previous template specialization is here}}
-template struct X0<long>::Inner; // expected-warning{{explicit instantiation of 'Inner' that occurs after an explicit specialization will be ignored}}
-
-template<> long X0<long>::value; // expected-note{{previous template specialization is here}}
-template long X0<long>::value; // expected-warning{{explicit instantiation of 'value' that occurs after an explicit specialization will be ignored}}
-
-template<> struct X0<double>; // expected-note{{previous template specialization is here}}
-template struct X0<double>; // expected-warning{{explicit instantiation of 'X0<double>' that occurs after an explicit specialization will be ignored}}
-
-// PR 6458
-namespace test0 {
-  template <class T> class foo {
-    int compare(T x, T y);
-  };
-
-  template <> int foo<char>::compare(char x, char y);
-  template <class T> int foo<T>::compare(T x, T y) {
-    // invalid at T=char; if we get a diagnostic here, we're
-    // inappropriately instantiating this template.
-    void *ptr = x;
-  }
-  extern template class foo<char>; // expected-warning {{extern templates are a C++11 extension}}
-  template class foo<char>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wc++11-compat %s
-
-namespace N {
-  template<class T> class Y { // expected-note{{explicit instantiation refers here}}
-    void mf() { } 
-  };
-}
-
-template class Z<int>; // expected-error{{explicit instantiation of non-template class 'Z'}}
-
-// FIXME: This example from the standard is wrong; note posted to CWG reflector
-// on 10/27/2009
-using N::Y; 
-template class Y<int>; // expected-warning{{must occur in}}
-
-template class N::Y<char*>; 
-template void N::Y<double>::mf();

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p6.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p6.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p6.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<class T> class Array { /* ... */ }; 
-template<class T> void sort(Array<T>& v) { }
-
-// instantiate sort(Array<int>&) - template-argument deduced
-template void sort<>(Array<int>&);
-
-template void sort(Array<long>&);
-
-template<typename T, typename U> void f0(T, U*) { }
-
-template void f0<int>(int, float*);
-template void f0<>(double, float*);
-
-template<typename T> struct hash { };
-struct S {
-  bool operator==(const S&) const { return false; }
-};
-
-template<typename T> struct Hash_map {
-  void Method(const T& x) { h(x); }
-  hash<T> h;
-};
-
-Hash_map<S> *x;
-const Hash_map<S> *foo() {
-  return x;
-}
-
-template<> struct hash<S> {
-  int operator()(const S& k) const {
-    return 0;
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p7.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p7.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p7.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X0 {
-  struct MemberClass {
-    T member; // expected-error{{with function type}}
-  };
-  
-  T* f0(T* ptr) { 
-    return ptr + 1; // expected-error{{pointer to the function}}
-  } 
-  
-  static T* static_member;
-};
-
-template<typename T>
-T* X0<T>::static_member = ((T*)0) + 1; // expected-error{{pointer to the function}}
-
-template class X0<int>; // okay
-
-template class X0<int(int)>; // expected-note 3{{requested here}}
-
-// Specialize everything, so that the explicit instantiation does not trigger
-// any diagnostics.
-template<>
-struct X0<int(long)>::MemberClass { };
-
-typedef int int_long_func(long);
-template<>
-int_long_func *X0<int_long_func>::f0(int_long_func *) { return 0; }
-
-template<>
-int_long_func *X0<int(long)>::static_member;
-
-template class X0<int(long)>;
-

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p8.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p8.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p8.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-template<typename T>
-struct X0 {
-  struct MemberClass;
-
-  T* f0(T* ptr);
-
-  static T* static_member;
-};
-
-template class X0<int(int)>; // ok; nothing gets instantiated.
-
-template<typename T>
-struct X0<T>::MemberClass {
-  T member;
-};
-
-template<typename T>
-T* X0<T>::f0(T* ptr) {
-  return ptr + 1;
-}
-
-template<typename T>
-T* X0<T>::static_member = 0;
-
-template class X0<int>; // ok
-
-
-template<typename T>
-struct X1 {
-  enum class E {
-    e = T::error // expected-error 2{{no members}}
-  };
-};
-template struct X1<int>; // expected-note {{here}}
-
-extern template struct X1<char>; // ok
-
-template struct X1<char>; // expected-note {{here}}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p9-linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p9-linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p9-linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -O1 -emit-llvm -std=c++11 -o - %s | FileCheck %s
-
-template<typename T>
-struct X0 {
-  void f(T &t) {
-    t = 0;
-  }
-  
-  void g(T &t);
-  
-  void h(T &t);
-  
-  static T static_var;
-};
-
-template<typename T>
-inline void X0<T>::g(T & t) {
-  t = 0;
-}
-
-template<typename T>
-void X0<T>::h(T & t) {
-  t = 0;
-}
-
-template<typename T>
-T X0<T>::static_var = 0;
-
-extern template struct X0<int*>;
-
-int *&test(X0<int*> xi, int *ip) {
-  // CHECK: define available_externally void @_ZN2X0IPiE1fERS0_
-  xi.f(ip);
-  // CHECK: define available_externally void @_ZN2X0IPiE1gERS0_
-  xi.g(ip);
-  // CHECK: declare void @_ZN2X0IPiE1hERS0_
-  xi.h(ip);
-  return X0<int*>::static_var;
-}
-
-template<typename T>
-void f0(T& t) {
-  t = 0;
-}
-
-template<typename T>
-inline void f1(T& t) {
-  t = 0;
-}
-
-extern template void f0<>(int *&);
-extern template void f1<>(int *&);
-
-void test_f0(int *ip, float *fp) {
-  // CHECK: declare void @_Z2f0IPiEvRT_
-  f0(ip);
-  // CHECK: define linkonce_odr void @_Z2f0IPfEvRT_
-  f0(fp);
-}
-
-void test_f1(int *ip, float *fp) {
-  // CHECK: define available_externally void @_Z2f1IPiEvRT_
-  f1(ip);
-  // CHECK: define linkonce_odr void @_Z2f1IPfEvRT_
-  f1(fp);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p9.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p9.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.explicit/p9.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-template<typename T>
-struct X0 {
-  void f(T &t) {
-    t = 1; // expected-error{{incompatible type}}
-  }
-  
-  void g(T &t);
-  
-  void h(T &t);
-  
-  static T static_var;
-};
-
-template<typename T>
-inline void X0<T>::g(T & t) {
-  t = 1; // expected-error{{incompatible type}}
-}
-
-template<typename T>
-void X0<T>::h(T & t) {
-  t = 1;
-}
-
-template<typename T>
-T X0<T>::static_var = 1;
-
-extern template struct X0<int*>;
-
-int *&test(X0<int*> xi, int *ip) {
-  xi.f(ip); // expected-note{{instantiation}}
-  xi.g(ip); // expected-note{{instantiation}}
-  xi.h(ip);
-  return X0<int*>::static_var;
-}
-
-template<typename T>
-void f0(T& t) {
-  t = 1; // expected-error{{incompatible type}}
-}
-
-template<typename T>
-inline void f1(T& t) {
-  t = 1; // expected-error 2{{incompatible type}}
-}
-
-extern template void f0<>(int *&);
-extern template void f1<>(int *&);
-
-void test_f0(int *ip, float *fp) {
-  f0(ip);
-  f0(fp); // expected-note{{instantiation}}
-}
-
-void test_f1(int *ip, float *fp) {
-  f1(ip); // expected-note{{instantiation}}
-  f1(fp); // expected-note{{instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.inst/p1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.inst/p1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.inst/p1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// The implicit specialization of a class template specialuzation causes the
-// implicit instantiation of the declarations, but not the definitions or
-// default arguments, of:
-
-// FIXME: Many omitted cases
-
-// - scoped member enumerations
-namespace ScopedEnum {
-  template<typename T> struct ScopedEnum1 {
-    enum class E {
-      e = T::error // expected-error {{'double' cannot be used prior to '::'}}
-    };
-  };
-  ScopedEnum1<int> se1; // ok
-
-  template<typename T> struct ScopedEnum2 {
-    enum class E : T { // expected-error {{non-integral type 'void *' is an invalid underlying type}}
-      e = 0
-    };
-  };
-  ScopedEnum2<void*> se2; // expected-note {{here}}
-
-  template<typename T> struct UnscopedEnum3 {
-    enum class E : T {
-      e = 4
-    };
-    int arr[(int)E::e];
-  };
-  UnscopedEnum3<int> ue3; // ok
-
-  ScopedEnum1<double>::E e1; // ok
-  ScopedEnum1<double>::E e2 = decltype(e2)::e; // expected-note {{in instantiation of enumeration 'ScopedEnum::ScopedEnum1<double>::E' requested here}}
-
-  // The behavior for enums defined within function templates is not clearly
-  // specified by the standard. We follow the rules for enums defined within
-  // class templates.
-  template<typename T>
-  int f() {
-    enum class E {
-      e = T::error
-    };
-    return (int)E();
-  }
-  int test1 = f<int>();
-
-  template<typename T>
-  int g() {
-    enum class E {
-      e = T::error // expected-error {{has no members}}
-    };
-    return E::e; // expected-note {{here}}
-  }
-  int test2 = g<int>(); // expected-note {{here}}
-}
-
-// And it cases the implicit instantiations of the definitions of:
-
-// - unscoped member enumerations
-namespace UnscopedEnum {
-  template<typename T> struct UnscopedEnum1 {
-    enum E {
-      e = T::error // expected-error {{'int' cannot be used prior to '::'}}
-    };
-  };
-  UnscopedEnum1<int> ue1; // expected-note {{here}}
-
-  template<typename T> struct UnscopedEnum2 {
-    enum E : T { // expected-error {{non-integral type 'void *' is an invalid underlying type}}
-      e = 0
-    };
-  };
-  UnscopedEnum2<void*> ue2; // expected-note {{here}}
-
-  template<typename T> struct UnscopedEnum3 {
-    enum E : T {
-      e = 4
-    };
-    int arr[E::e];
-  };
-  UnscopedEnum3<int> ue3; // ok
-
-  template<typename T>
-  int f() {
-    enum E {
-      e = T::error // expected-error {{has no members}}
-    };
-    return (int)E();
-  }
-  int test1 = f<int>(); // expected-note {{here}}
-
-  template<typename T>
-  int g() {
-    enum E {
-      e = T::error // expected-error {{has no members}}
-    };
-    return E::e;
-  }
-  int test2 = g<int>(); // expected-note {{here}}
-}
-
-// FIXME:
-//- - member anonymous unions

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.inst/p11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.inst/p11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.spec/temp.inst/p11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -verify -emit-llvm-only %s
-
-// rdar://problem/7838962
-namespace test0 {
-  template<typename T> unsigned f0() {
-    return T::MaxSize; // expected-error {{'int' cannot be used prior to '::'}}
-  };
-  template<typename T> struct A {
-    void Allocate(unsigned Alignment
-                    = f0<T>()) // expected-note {{in instantiation}}
-    {}
-  };
-  void f1(A<int> x) { x.Allocate(); }
-  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.type/p1-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.type/p1-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CXX/temp/temp.type/p1-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-namespace Old {
-  template<template<class> class TT> struct X { };
-  template<class> struct Y { };
-  template<class T> using Z = Y<T>;
-  X<Y> y;
-  X<Z> z;
-
-  using SameType = decltype(y); // expected-note {{here}}
-  using SameType = decltype(z); // expected-error {{different types}}
-}
-
-namespace New {
-  template<class T> struct X { };
-  template<class> struct Y { };
-  template<class T> using Z = Y<T>;
-  X<Y<int>> y;
-  X<Z<int>> z;
-
-  using SameType = decltype(y);
-  using SameType = decltype(z); // ok
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/Inputs/macros.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/Inputs/macros.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/Inputs/macros.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-#define FOO
-#define BAR(X, Y) X, Y
-#define IDENTITY(X) X
-#define WIBBLE(...)
-#define DEAD_MACRO
-#undef DEAD_MACRO
-#define MACRO_WITH_HISTORY a
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY b, c
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY(X, Y) X->Y

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/Inputs/reserved.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/Inputs/reserved.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/Inputs/reserved.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-typedef int _INTEGER_TYPE;
-typedef float FLOATING_TYPE;

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/PR9728.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/PR9728.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/PR9728.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-namespace N {
-struct SFoo;
-}
-
-struct brokenfile_t {
-  brokenfile_t (N::
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:6:20 %s -o - | FileCheck %s
-  // CHECK: SFoo
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/auto.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/auto.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/auto.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -code-completion-at=%s:2:9 %s
-auto i =

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/call.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/call.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/call.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-void f0(float x, float y);
-void f1();
-void test() {
-  f0(0, 0);
-  g0(0, 0);
-  f1(0, 0);
-  // RUN: %clang_cc1 -std=c89 -fsyntax-only  -code-completion-at=%s:6:6 %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: f0(<#float x#>, float y)
-  // RUN: %clang_cc1 -std=c89 -fsyntax-only -code-completion-at=%s:6:9 %s -o - | FileCheck -check-prefix=CC2 %s
-  // CHECK-CC2: f0(float x, <#float y#>)
-  // RUN: %clang_cc1 -std=c89 -fsyntax-only -code-completion-at=%s:8:6 %s -o - | FileCheck -check-prefix=CC3 %s
-  // CHECK-CC3: f1()
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-void f(float x, float y);
-void f(int i, int j, int k);
-struct X { };
-void f(X);
-namespace N {
-  struct Y { 
-    Y(int = 0); 
-    
-    operator int() const;
-  };
-  void f(Y y, int ZZ);
-}
-typedef N::Y Y;
-void f();
-
-void test() {
-  f(Y(), 0, 0);
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-patterns -code-completion-at=%s:19:9 %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: COMPLETION: Pattern : dynamic_cast<<#type#>>(<#expression#>)
-  // CHECK-CC1: f(N::Y y, <#int ZZ#>)
-  // CHECK-CC1-NEXT: f(int i, <#int j#>, int k)
-  // CHECK-CC1-NEXT: f(float x, <#float y#>)
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:19:13 %s -o - | FileCheck -check-prefix=CC2 %s
-  // CHECK-CC2-NOT: f(N::Y y, int ZZ)
-  // CHECK-CC2: f(int i, int j, <#int k#>)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/constexpr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/constexpr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/constexpr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -code-completion-at=%s:12:9 %s -o - | FileCheck %s
-
-// PR14381: need constexpr function bodies always, even if code-completing.
-template<int> struct S;
-template<> struct S<1> {
-  typedef int type;
-};
-constexpr int f() {
-  return 1;
-}
-
-S<f()>::
-// CHECK: COMPLETION: type : type

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/documentation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/documentation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/documentation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
-/// Aaa.
-void T1(float x, float y);
-
-/// Bbb.
-class T2 {
-public:
-  /// Ccc.
-  void T3();
-
-  int T4; ///< Ddd.
-};
-
-/// Eee.
-namespace T5 {
-}
-
-void test() {
-
-  T2 t2;
-  t2.
-}
-
-// RUN: %clang_cc1 -fsyntax-only -code-completion-brief-comments -code-completion-at=%s:21:1 %s -o - | FileCheck -check-prefix=CC1 %s
-// CHECK-CC1: COMPLETION: T1 : [#void#]T1(<#float x#>, <#float y#>) : Aaa.
-// CHECK-CC1: COMPLETION: T2 : T2 : Bbb.
-// CHECK-CC1: COMPLETION: T5 : T5:: : Eee.
-
-// RUN: %clang_cc1 -fsyntax-only -code-completion-brief-comments -code-completion-at=%s:23:6 %s -o - | FileCheck -check-prefix=CC2 %s
-// CHECK-CC2: COMPLETION: T3 : [#void#]T3() : Ccc.
-// CHECK-CC2: COMPLETION: T4 : [#int#]T4 : Ddd.

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case-qualified.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case-qualified.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case-qualified.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-namespace M {
-  
-namespace N {
-  struct C {
-    enum Color {
-      Red,
-      Orange,
-      Yellow,
-      Green,
-      Blue,
-      Indigo,
-      Violet
-    };
-  };
-}
-  
-}
-
-namespace M {
-  
-void test(enum N::C::Color color) {
-  switch (color) {
-  case 
-    // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:23:8 %s -o - | FileCheck -check-prefix=CC1 %s
-    // CHECK-CC1: Blue : [#M::N::C::Color#]N::C::Blue
-    // CHECK-CC1-NEXT: Green : [#M::N::C::Color#]N::C::Green
-    // CHECK-CC1-NEXT: Indigo : [#M::N::C::Color#]N::C::Indigo
-    // CHECK-CC1-NEXT: Orange : [#M::N::C::Color#]N::C::Orange
-    // CHECK-CC1-NEXT: Red : [#M::N::C::Color#]N::C::Red
-    // CHECK-CC1-NEXT: Violet : [#M::N::C::Color#]N::C::Violet
-    // CHECK-CC1: Yellow : [#M::N::C::Color#]N::C::Yellow
-      

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-enum Color {
-  Red,
-  Orange,
-  Yellow,
-  Green,
-  Blue,
-  Indigo,
-  Violet
-};
-
-void test(enum Color color) {
-  switch (color) {
-    case Red:
-      break;
-      
-    case Yellow:
-      break;
-
-    case Green:
-      break;
-  }
-
-  unsigned c2;
-  switch (c2) {
-    case 
-  }
-
-    // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:19:10 %s -o - | FileCheck -check-prefix=CC1 %s
-    // CHECK-CC1: Blue
-    // CHECK-CC1-NEXT: Green
-    // CHECK-CC1-NEXT: Indigo
-    // CHECK-CC1-NEXT: Orange
-    // CHECK-CC1-NEXT: Violet
-
-    // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:25:10 %s -o - | FileCheck -check-prefix=CC2 %s      
-  // CHECK-CC2: COMPLETION: Blue : [#enum Color#]Blue
-  // CHECK-CC2-NEXT: COMPLETION: c2 : [#unsigned int#]c2
-  // CHECK-CC2-NEXT: COMPLETION: color : [#enum Color#]color
-  // CHECK-CC2-NEXT: COMPLETION: Green : [#enum Color#]Green
-  // CHECK-CC2-NEXT: COMPLETION: Indigo : [#enum Color#]Indigo
-  // CHECK-CC2-NEXT: COMPLETION: Orange : [#enum Color#]Orange
-  // CHECK-CC2-NEXT: COMPLETION: Red : [#enum Color#]Red
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
-  // CHECK-CC2-NEXT: COMPLETION: Violet : [#enum Color#]Violet
-  // CHECK-CC2-NEXT: COMPLETION: Yellow : [#enum Color#]Yellow

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/enum-switch-case.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-namespace N {
-  enum Color {
-    Red,
-    Orange,
-    Yellow,
-    Green,
-    Blue,
-    Indigo,
-    Violet
-  };
-}
-
-void test(enum N::Color color) {
-  switch (color) {
-  case N::Red:
-    break;
-    
-  case N::Yellow:
-    break;
-    
-  case 
-    // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:21:8 %s -o - | FileCheck -check-prefix=CC1 %s
-    // CHECK-CC1: Blue : [#N::Color#]N::Blue
-    // CHECK-CC1-NEXT: Green : [#N::Color#]N::Green
-    // CHECK-CC1-NEXT: Indigo : [#N::Color#]N::Indigo
-    // CHECK-CC1-NEXT: Orange : [#N::Color#]N::Orange
-    // CHECK-CC1-NEXT: Violet : [#N::Color#]N::Violet
-    

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/function-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/function-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/function-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-namespace std {
-  template<typename RandomAccessIterator>
-  void sort(RandomAccessIterator first, RandomAccessIterator last);
-  
-  template<class X, class Y>
-  X* dyn_cast(Y *Val);
-}
-
-class Foo {
-public:
-  template<typename T> T &getAs();
-};
-
-void f() {
-  std::sort(1, 2);
-  Foo().getAs<int>();
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:15:8 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
-  // CHECK-CC1: dyn_cast<<#class X#>>(<#Y *Val#>)
-  // CHECK-CC1: sort(<#RandomAccessIterator first#>, <#RandomAccessIterator last#>
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:16:9 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
-  // CHECK-CC2: getAs<<#typename T#>>()
-)
-  

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-void f(int i, int j = 2, int k = 5);
-void f(float x, float y...);
-       
-void test() {
-  ::
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:5:5 %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: f(<#int i#>{#, <#int j#>{#, <#int k#>#}#})
-  // CHECK-CC1: f(<#float x#>, <#float y, ...#>)

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-enum Color {
-  Red, Green, Blue
-};
-
-struct Point {
-  float x, y, z;
-  enum Color color;
-};
-
-void test(struct Point *p) {
-  // RUN: %clang_cc1 -include %S/Inputs/macros.h -fsyntax-only -code-completion-macros -code-completion-at=%s:12:14 %s -o - | FileCheck -check-prefix=CC1 %s
-  switch (p->IDENTITY(color)) {
-  // RUN: %clang_cc1 -include %S/Inputs/macros.h -fsyntax-only -code-completion-macros -code-completion-at=%s:14:9 %s -o - | FileCheck -check-prefix=CC2 %s
-    case 
-  }
-  // RUN: %clang_cc1 -include %S/Inputs/macros.h -fsyntax-only -code-completion-macros -code-completion-at=%s:17:7 %s -o - | FileCheck -check-prefix=CC3 %s
-#ifdef Q
-#endif
-
-  // Run the same tests, this time with macros loaded from the PCH file.
-  // RUN: %clang_cc1 -emit-pch -o %t %S/Inputs/macros.h
-  // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:12:14 %s -o - | FileCheck -check-prefix=CC1 %s
-  // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:14:9 %s -o - | FileCheck -check-prefix=CC2 %s
-  // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:17:7 %s -o - | FileCheck -check-prefix=CC3 %s
-
-  // CC1: color
-  // CC1: x
-  // CC1: y
-  // CC1: z
-
-  // CC2: BAR(<#X#>, <#Y#>)
-  // CC2: Blue
-  // CC2: FOO
-  // CC2: Green
-  // CC2: IDENTITY(<#X#>)
-  // CC2: MACRO_WITH_HISTORY(<#X#>, <#Y#>)
-  // CC2: Red
-  // CC2: WIBBLE
-
-  // CC3: BAR
-  // CC3: DEAD_MACRO
-  // CC3: FOO
-  // CC3: IDENTITY
-  // CC3: MACRO_WITH_HISTORY
-  // CC3: WIBBLE
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/member-access.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/member-access.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/member-access.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-struct Point {
-  float x;
-  float y;
-  float z;
-};
-
-void test(struct Point *p) {
-  p->
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:8:6 %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: x
-  // CHECK-CC1: y
-  // CHECK-CC1: z

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/member-access.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/member-access.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/member-access.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-struct Base1 {
-  int member1;
-  float member2;
-};
-
-struct Base2 {
-  int member1;
-  double member3;
-  void memfun1(int);
-};
-
-struct Base3 : Base1, Base2 {
-  void memfun1(float);
-  void memfun1(double) const;
-  void memfun2(int);
-};
-
-struct Derived : Base3 {
-  int member4;
-  int memfun3(int);
-};
-
-class Proxy {
-public:
-  Derived *operator->() const;
-};
-
-void test(const Proxy &p) {
-  p->
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:29:6 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
-  // CHECK-CC1: Base1 : Base1::
-  // CHECK-CC1: member1 : [#int#][#Base1::#]member1
-  // CHECK-CC1: member1 : [#int#][#Base2::#]member1
-  // CHECK-CC1: member2 : [#float#][#Base1::#]member2
-  // CHECK-CC1: member3
-  // CHECK-CC1: member4
-  // CHECK-CC1: memfun1 : [#void#][#Base3::#]memfun1(<#float#>)
-  // CHECK-CC1: memfun1 : [#void#][#Base3::#]memfun1(<#double#>)[# const#]
-  // CHECK-CC1: memfun1 (Hidden) : [#void#]Base2::memfun1(<#int#>)
-  // CHECK-CC1: memfun2 : [#void#][#Base3::#]memfun2(<#int#>)
-  // CHECK-CC1: memfun3 : [#int#]memfun3(<#int#>)
-  

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/namespace-alias.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/namespace-alias.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/namespace-alias.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-namespace N4 {
-  namespace N3 { }
-}
-
-class N3;
-
-namespace N2 {
-  namespace I1 { }
-  namespace I4 = I1;
-  namespace I5 { }
-  namespace I1 { }
-  
-  namespace New =
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:13:18 %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: I1
-  // CHECK-CC1: I4
-  // CHECK-CC1: I5
-  // CHECK-CC1: N2
-  // CHECK-CC1-NEXT: N4
-  

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/namespace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/namespace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/namespace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-namespace N3 {
-}
-
-namespace N2 {
-  namespace I1 { }
-  namespace I4 = I1;
-  namespace I5 { }
-  namespace I1 { }
-  
-  namespace
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:12 %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: I1
-  // CHECK-CC1-NEXT: I5
-  

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/nested-name-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/nested-name-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/nested-name-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-namespace N {
-  struct A { };
-  namespace M { 
-    struct C { };
-  };
-}
-
-namespace N {
-  struct B { };
-}
-
-N::
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:12:4 %s -o - | FileCheck -check-prefix=CC1 %s
-// CHECK-CC1: A
-// CHECK-CC1: B
-// CHECK-CC1: M
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/objc-expr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/objc-expr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/objc-expr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Note: the run lines follow all tests, since line/column matter here
-
-id testCompleteAfterAtSign() {
-  return @"";
-}
-
-// RUN: %clang_cc1 -fsyntax-only -code-completion-patterns -code-completion-at=%s:4:11 %s -fno-const-strings -o - | FileCheck -check-prefix=AT %s
-// CHECK-AT: COMPLETION: Pattern : [#NSString *#]"<#string#>"
-// CHECK-AT: COMPLETION: Pattern : [#id#](<#expression#>)
-// CHECK-AT: COMPLETION: Pattern : [#NSArray *#][<#objects, ...#>]
-// CHECK-AT: COMPLETION: Pattern : [#char[]#]encode(<#type-name#>)
-// CHECK-AT: COMPLETION: Pattern : [#Protocol *#]protocol(<#protocol-name#>)
-// CHECK-AT: COMPLETION: Pattern : [#SEL#]selector(<#selector#>)
-// CHECK-AT: COMPLETION: Pattern : [#NSDictionary *#]{<#key#>: <#object, ...#>}
-
-// RUN: %clang_cc1 -fsyntax-only -code-completion-patterns -code-completion-at=%s:4:11 %s -fconst-strings -o - | FileCheck -check-prefix=CONST-STRINGS %s
-// CHECK-CONST-STRINGS: COMPLETION: Pattern : [#const char[]#]encode(<#type-name#>)

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/objc-message.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/objc-message.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/objc-message.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
- at protocol FooTestProtocol
-+ protocolClassMethod;
-- protocolInstanceMethod;
- at end
- at interface Foo <FooTestProtocol> {
-  void *isa;
-}
-+ (int)classMethod1:a withKeyword:b;
-+ (void)classMethod2;
-+ new;
-- instanceMethod1;
- at end
-
- at interface Foo (FooTestCategory)
-+ categoryClassMethod;
-- categoryInstanceMethod;
- at end
-
-void func() {
-  Foo *obj = [Foo new];
-  [obj xx];
-}
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:23:19 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: categoryClassMethod
-// CHECK-CC1: classMethod1:withKeyword:
-// CHECK-CC1: classMethod2
-// CHECK-CC1: new
-// CHECK-CC1: protocolClassMethod
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:24:8 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: categoryInstanceMethod
-// CHECK-CC2: instanceMethod1
-// CHECK-CC2: protocolInstanceMethod

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-class T { };
-
-typedef int Integer;
-
-namespace N { }
-
-void f() {
-  typedef float Float;
-  
-  operator
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:10:11 %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: +
-  // CHECK-CC1: Float
-  // CHECK-CC1: Integer
-  // CHECK-CC1: N
-  // CHECK-CC1: short
-  // CHECK-CC1: T

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/ordinary-name.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/ordinary-name.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/ordinary-name.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-#include <reserved.h>
-struct X { int x; };
-typedef struct t TYPEDEF;
-typedef struct t _TYPEDEF;
-void foo() {
-  int y;
-  // RUN: %clang_cc1 -isystem %S/Inputs -fsyntax-only -code-completion-at=%s:6:9 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
-  // CHECK-CC1: _Imaginary
-  // CHECK-CC1-NOT: _INTEGER_TYPE;
-  // CHECK-CC1: _TYPEDEF
-  // CHECK-CC1: FLOATING_TYPE
-  // CHECK-CC1: foo
-  // CHECK-CC1: TYPEDEF
-  // CHECK-CC1: y
-
-  // PR8744
-  // RUN: %clang_cc1 -isystem %S/Inputs -fsyntax-only -code-completion-at=%s:1:11 %s

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/ordinary-name.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/ordinary-name.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/ordinary-name.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,229 +0,0 @@
-struct X { int x; };
-void z(int);
-typedef struct t TYPEDEF;
-
-void foo() {
-  int y = 17;
-  // RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -code-completion-patterns -code-completion-at=%s:6:14 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
-  // CHECK-CC1: COMPLETION: bool
-  // CHECK-CC1-NEXT: COMPLETION: char
-  // CHECK-CC1-NEXT: COMPLETION: class
-  // CHECK-CC1-NEXT: COMPLETION: const
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
-  // CHECK-CC1: COMPLETION: Pattern : [#void#]delete <#expression#>
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : do{<#statements#>
-  // CHECK-CC1: COMPLETION: double
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : dynamic_cast<<#type#>>(<#expression#>)
-  // CHECK-CC1-NEXT: COMPLETION: enum
-  // CHECK-CC1-NEXT: COMPLETION: extern
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]false
-  // CHECK-CC1-NEXT: COMPLETION: float
-  // CHECK-CC1-NEXT: COMPLETION: foo : [#void#]foo()
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : for(<#init-statement#>;<#condition#>;<#inc-expression#>){
-  // CHECK-CC1: COMPLETION: Pattern : goto <#label#>
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : if(<#condition#>){<#statements#>
-  // CHECK-CC1: COMPLETION: int
-  // CHECK-CC1-NEXT: COMPLETION: long
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
-  // CHECK-CC1-NEXT: COMPLETION: operator
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : return
-  // CHECK-CC1-NEXT: COMPLETION: short
-  // CHECK-CC1-NEXT: COMPLETION: signed
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
-  // CHECK-CC1-NEXT: COMPLETION: static
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
-  // CHECK-CC1-NEXT: COMPLETION: struct
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : switch(<#condition#>){
-  // CHECK-CC1: COMPLETION: t : t
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#void#]throw <#expression#>
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]true
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : try{<#statements#>
-  // CHECK-CC1: COMPLETION: TYPEDEF : TYPEDEF
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : typeof <#expression#>
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : typeof(<#type#>)
-  // CHECK-CC1-NEXT: COMPLETION: union
-  // CHECK-CC1-NEXT: COMPLETION: unsigned
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : using namespace <#identifier#>
-  // CHECK-CC1-NEXT: COMPLETION: void
-  // CHECK-CC1-NEXT: COMPLETION: volatile
-  // CHECK-CC1-NEXT: COMPLETION: wchar_t
-  // CHECK-CC1-NEXT: COMPLETION: Pattern : while(<#condition#>){<#statements#>
-  // CHECK-CC1: COMPLETION: X : X
-  // CHECK-CC1-NEXT: COMPLETION: y : [#int#]y
-  // CHECK-CC1-NEXT: COMPLETION: z : [#void#]z(<#int#>)
-
-  // RUN: %clang_cc1 -fsyntax-only  -code-completion-patterns -code-completion-at=%s:4:1 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
-  // CHECK-CC2: COMPLETION: Pattern : asm(<#string-literal#>)
-  // CHECK-CC2-NEXT: COMPLETION: bool
-  // CHECK-CC2-NEXT: COMPLETION: char
-  // CHECK-CC2-NEXT: COMPLETION: class
-  // CHECK-CC2-NEXT: COMPLETION: const
-  // CHECK-CC2-NEXT: COMPLETION: double
-  // CHECK-CC2-NEXT: COMPLETION: enum
-  // CHECK-CC2-NEXT: COMPLETION: extern
-  // CHECK-CC2-NEXT: COMPLETION: float
-  // CHECK-CC2-NEXT: COMPLETION: inline
-  // CHECK-CC2-NEXT: COMPLETION: int
-  // CHECK-CC2-NEXT: COMPLETION: long
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : namespace <#identifier#>{<#declarations#>
-  // CHECK-CC2: COMPLETION: Pattern : namespace <#name#> = <#namespace#>
-  // CHECK-CC2-NEXT: COMPLETION: operator
-  // CHECK-CC2-NEXT: COMPLETION: short
-  // CHECK-CC2-NEXT: COMPLETION: signed
-  // CHECK-CC2-NEXT: COMPLETION: static
-  // CHECK-CC2-NEXT: COMPLETION: struct
-  // CHECK-CC2-NEXT: COMPLETION: t : t
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : template <#declaration#>
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : template<<#parameters#>>
-  // CHECK-CC2-NEXT: COMPLETION: TYPEDEF : TYPEDEF
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : typeof <#expression#>
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : typeof(<#type#>)
-  // CHECK-CC2-NEXT: COMPLETION: union
-  // CHECK-CC2-NEXT: COMPLETION: unsigned
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : using namespace <#identifier#>
-  // CHECK-CC2-NEXT: COMPLETION: Pattern : using <#qualifier#>::<#name#>
-  // CHECK-CC2-NEXT: COMPLETION: void
-  // CHECK-CC2-NEXT: COMPLETION: volatile
-  // CHECK-CC2-NEXT: COMPLETION: wchar_t
-  // CHECK-CC2-NEXT: COMPLETION: X : X
-
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-patterns -code-completion-at=%s:1:19 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
-  // CHECK-CC3: COMPLETION: bool
-  // CHECK-CC3-NEXT: COMPLETION: char
-  // CHECK-CC3-NEXT: COMPLETION: class
-  // CHECK-CC3-NEXT: COMPLETION: const
-  // CHECK-CC3-NEXT: COMPLETION: double
-  // CHECK-CC3-NEXT: COMPLETION: enum
-  // CHECK-CC3-NEXT: COMPLETION: explicit
-  // CHECK-CC3-NEXT: COMPLETION: extern
-  // CHECK-CC3-NEXT: COMPLETION: float
-  // CHECK-CC3-NEXT: COMPLETION: friend
-  // CHECK-CC3-NEXT: COMPLETION: inline
-  // CHECK-CC3-NEXT: COMPLETION: int
-  // CHECK-CC3-NEXT: COMPLETION: long
-  // CHECK-CC3-NEXT: COMPLETION: mutable
-  // CHECK-CC3-NEXT: COMPLETION: operator
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : private: 
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : protected: 
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : public: 
-  // CHECK-CC3-NEXT: COMPLETION: short
-  // CHECK-CC3-NEXT: COMPLETION: signed
-  // CHECK-CC3-NEXT: COMPLETION: static
-  // CHECK-CC3-NEXT: COMPLETION: struct
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : template<<#parameters#>>
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : typeof <#expression#>
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : typeof(<#type#>)
-  // CHECK-CC3-NEXT: COMPLETION: union
-  // CHECK-CC3-NEXT: COMPLETION: unsigned
-  // CHECK-CC3-NEXT: COMPLETION: Pattern : using <#qualifier#>::<#name#>
-  // CHECK-CC3-NEXT: COMPLETION: virtual
-  // CHECK-CC3-NEXT: COMPLETION: void
-  // CHECK-CC3-NEXT: COMPLETION: volatile
-  // CHECK-CC3-NEXT: COMPLETION: wchar_t
-  // CHECK-CC3-NEXT: COMPLETION: X : X
-
-  // RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -code-completion-patterns -code-completion-at=%s:6:11 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
-  // CHECK-CC4: COMPLETION: bool
-  // CHECK-CC4-NEXT: COMPLETION: char
-  // CHECK-CC4-NEXT: COMPLETION: class
-  // CHECK-CC4-NEXT: COMPLETION: const
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]delete <#expression#>
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
-  // CHECK-CC4-NEXT: COMPLETION: double
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : dynamic_cast<<#type#>>(<#expression#>)
-  // CHECK-CC4-NEXT: COMPLETION: enum
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]false
-  // CHECK-CC4-NEXT: COMPLETION: float
-  // CHECK-CC4-NEXT: COMPLETION: foo : [#void#]foo()
-  // CHECK-CC4-NEXT: COMPLETION: int
-  // CHECK-CC4-NEXT: COMPLETION: long
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
-  // CHECK-CC4-NEXT: COMPLETION: operator
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
-  // CHECK-CC4-NEXT: COMPLETION: short
-  // CHECK-CC4-NEXT: COMPLETION: signed
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
-  // CHECK-CC4-NEXT: COMPLETION: struct
-  // CHECK-CC4-NEXT: COMPLETION: t : t
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]throw <#expression#>
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]true
-  // CHECK-CC4-NEXT: COMPLETION: TYPEDEF : TYPEDEF
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : typeof <#expression#>
-  // CHECK-CC4-NEXT: COMPLETION: Pattern : typeof(<#type#>)
-  // CHECK-CC4-NEXT: COMPLETION: union
-  // CHECK-CC4-NEXT: COMPLETION: unsigned
-  // CHECK-CC4-NEXT: COMPLETION: void
-  // CHECK-CC4-NEXT: COMPLETION: volatile
-  // CHECK-CC4-NEXT: COMPLETION: wchar_t
-  // CHECK-CC4-NEXT: COMPLETION: X : X
-  // CHECK-CC4-NEXT: COMPLETION: y : [#int#]y
-  // CHECK-CC4-NEXT: COMPLETION: z : [#void#]z(<#int#>)
-
-  // RUN: %clang_cc1 -fsyntax-only -fno-rtti -code-completion-patterns -code-completion-at=%s:6:14 %s -o - | FileCheck -check-prefix=CHECK-NO-RTTI %s
-  // CHECK-NO-RTTI: COMPLETION: bool
-  // CHECK-NO-RTTI-NEXT: COMPLETION: char
-  // CHECK-NO-RTTI-NEXT: COMPLETION: class
-  // CHECK-NO-RTTI-NEXT: COMPLETION: const
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
-  // CHECK-NO-RTTI: COMPLETION: Pattern : [#void#]delete <#expression#>
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : do{<#statements#>
-  // CHECK-NO-RTTI: COMPLETION: double
-  // CHECK-NO-RTTI-NOT: dynamic_cast
-  // CHECK-NO-RTTI: COMPLETION: enum
-  // CHECK-NO-RTTI-NEXT: COMPLETION: extern
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#bool#]false
-  // CHECK-NO-RTTI-NEXT: COMPLETION: float
-  // CHECK-NO-RTTI-NEXT: COMPLETION: foo : [#void#]foo()
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : for(<#init-statement#>;<#condition#>;<#inc-expression#>){
-  // CHECK-NO-RTTI: COMPLETION: Pattern : goto <#label#>
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : if(<#condition#>){<#statements#>
-  // CHECK-NO-RTTI: COMPLETION: int
-  // CHECK-NO-RTTI-NEXT: COMPLETION: long
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
-  // CHECK-NO-RTTI-NEXT: COMPLETION: operator
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : return
-  // CHECK-NO-RTTI-NEXT: COMPLETION: short
-  // CHECK-NO-RTTI-NEXT: COMPLETION: signed
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
-  // CHECK-NO-RTTI-NEXT: COMPLETION: static
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
-  // CHECK-NO-RTTI-NEXT: COMPLETION: struct
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : switch(<#condition#>){
-  // CHECK-NO-RTTI: COMPLETION: t : t
-  // CHECK-NO-RTTI-NOT: throw
-  // CHECK-NO-RTTI: COMPLETION: Pattern : [#bool#]true
-  // CHECK-NO-RTTI-NOT: try
-  // CHECK-NO-RTTI: COMPLETION: TYPEDEF : TYPEDEF
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>
-  // CHECK-NO-RTTI-NOT: typeid
-  // CHECK-NO-RTTI: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof <#expression#>
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof(<#type#>)
-  // CHECK-NO-RTTI-NEXT: COMPLETION: union
-  // CHECK-NO-RTTI-NEXT: COMPLETION: unsigned
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : using namespace <#identifier#>
-  // CHECK-NO-RTTI-NEXT: COMPLETION: void
-  // CHECK-NO-RTTI-NEXT: COMPLETION: volatile
-  // CHECK-NO-RTTI-NEXT: COMPLETION: wchar_t
-  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : while(<#condition#>){<#statements#>
-  // CHECK-NO-RTTI: COMPLETION: X : X
-  // CHECK-NO-RTTI-NEXT: COMPLETION: y : [#int#]y
-  // CHECK-NO-RTTI-NEXT: COMPLETION: z : [#void#]z(<#int#>)

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/preamble.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/preamble.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/preamble.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-#include "some_struct.h"
-void foo() {
-  struct X x;
-  x.
-
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -code-completion-at=%s:4:5 -Xclang -code-completion-patterns  %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: FieldDecl:{ResultType int}{TypedText m} (35)

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/some_struct.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/some_struct.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/some_struct.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-struct X { int m; };

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/stdin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/stdin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/stdin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-enum X { x };
-enum Y { y };
-
-enum 
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=-:4:6 < %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: X
-  // CHECK-CC1: Y

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/tag.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/tag.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/tag.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-enum X { x };
-enum Y { y };
-struct Z { };
-
-void X();
-
-void test() {
-  enum X { x };
-  enum
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:9:7 %s -o - | FileCheck -check-prefix=CC1 %s
-  // CHECK-CC1: X
-  // CHECK-CC1: Y

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/tag.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/tag.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/tag.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-class X { };
-struct Y { };
-
-namespace N {
-  template<typename> class Z;
-}
-
-namespace M {
-  class A;
-}
-using M::A;
-
-namespace N {
-  class Y;
-  
-  void test() {
-    class
-    // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:17:10 %s -o - | FileCheck -check-prefix=CC1 %s
-    // FIXME: the redundant Y is really annoying... it needs qualification to 
-    // actually be useful. Here, it just looks redundant :(
-    // CHECK-CC1: A
-    // CHECK-CC1: M : M::
-    // CHECK-CC1: N : N::
-    // CHECK-CC1: X
-    // CHECK-CC1: Y
-    // CHECK-CC1: Y
-    // CHECK-CC1: Z

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-namespace std {
-  template<typename T>
-  class allocator { 
-  public:
-    void in_base();
-  };
-  
-  template<typename T, typename Alloc = std::allocator<T> >
-  class vector : Alloc {
-  public:
-    void foo();
-    void stop();
-  };
-  template<typename Alloc> class vector<bool, Alloc>;
-}
-
-void f() {
-  std::vector<int> v;
-  v.foo();
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:18:8 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
-  // CHECK-CC1: allocator<<#typename T#>>
-  // CHECK-CC1-NEXT: vector<<#typename T#>{#, <#typename Alloc#>#}>
-  // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:19:5 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
-  // CHECK-CC2: foo
-  // CHECK-CC2: in_base
-  // CHECK-CC2: stop
-  
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/truncation.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/truncation.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/truncation.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-#include "truncation.c.h"
-
-/* foo */
-
-struct 
-
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s.h:4:8 -o - %s | FileCheck -check-prefix=CC1 %s
-// CHECK-CC1: X
-// CHECK-CC1-NEXT: Y
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:5:8 -o - %s | FileCheck -check-prefix=CC2 %s
-// CHECK-CC2: X
-// CHECK-CC2: Xa
-// CHECK-CC2: Y
-
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:3:3 -o - %s

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/truncation.c.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/truncation.c.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/truncation.c.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-struct X { };
-struct Y { };
-
-struct Xa { };
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/using-namespace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/using-namespace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/using-namespace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-namespace N4 {
-  namespace N3 { }
-}
-
-class N3;
-
-namespace N2 {
-  namespace I1 { }
-  namespace I4 = I1;
-  namespace I5 { }
-  namespace I1 { }
-  
-  void foo() {
-    using namespace
-    // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:14:20 %s -o - | FileCheck -check-prefix=CC1 %s
-    // CHECK-CC1: I1
-    // CHECK-CC1: I4
-    // CHECK-CC1: I5
-    // CHECK-CC1: N2
-    // CHECK-CC1-NEXT: N4

Modified: trunk/contrib/llvm/tools/clang/test/CodeCompletion/using.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeCompletion/using.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeCompletion/using.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-namespace N4 {
-  namespace N3 { }
-}
-
-class N3;
-
-namespace N2 {
-  namespace I1 { }
-  namespace I4 = I1;
-  namespace I5 { }
-  namespace I1 { }
-  
-  void foo() {
-    int N3;
-    
-    using
-    // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:16:10 %s -o - | FileCheck -check-prefix=CC1 %s
-    // CHECK-CC1: I1
-    // CHECK-CC1: I4
-    // CHECK-CC1: I5
-    // CHECK-CC1: N2
-    // CHECK-CC1: N3
-    // CHECK-CC1-NEXT: N4
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-23-LoadQISIReloadFailure.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-23-LoadQISIReloadFailure.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-23-LoadQISIReloadFailure.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* Regression test.  Just compile .c -> .ll to test */
-int foo(void) {
-  unsigned char *pp;
-  unsigned w_cnt;
-
-  w_cnt += *pp;
-
-  return w_cnt;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-24-ComplexSpaceInType.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-24-ComplexSpaceInType.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-24-ComplexSpaceInType.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-// This caused generation of the following type name:
-//   %Array = uninitialized global [10 x %complex int]
-//
-// which caused problems because of the space int the complex int type
-//
-
-struct { int X, Y; } Array[10];
-
-void foo() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-24-HandleCallInsnSEGV.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-24-HandleCallInsnSEGV.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-01-24-HandleCallInsnSEGV.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-void *dlclose(void*);
-
-void ap_os_dso_unload(void *handle)
-{
-    dlclose(handle);
-    return;     /* This return triggers the bug: Weird */
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-ConditionalInCall.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-ConditionalInCall.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-ConditionalInCall.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* Test problem where bad code was generated with a ?: statement was 
-   in a function call argument */
-
-void foo(int, double, float);
-
-void bar(int x) {
-  foo(x, x ? 1.0 : 12.5, 1.0f);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-ReloadProblem.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-ReloadProblem.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-ReloadProblem.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* This triggered a problem in reload, fixed by disabling most of the 
- * steps of compilation in GCC.  Before this change, the code went through
- * the entire backend of GCC, even though it was unnecessary for LLVM output
- * now it is skipped entirely, and since reload doesn't run, it can't cause
- * a problem.
- */
-
-extern int tolower(int);
-
-const char *rangematch(const char *pattern, int test, int c) {
-
-  if ((c <= test) | (tolower(c) <= tolower((unsigned char)test)))
-    return 0;
-
-  return pattern;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-TypeVarNameCollision.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-TypeVarNameCollision.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-TypeVarNameCollision.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* This testcase causes a symbol table collision.  Type names and variable
- * names should be in distinct namespaces
- */
-
-typedef struct foo {
-  int X, Y;
-} FOO;
-
-static FOO foo[100];
-
-int test() {
-  return foo[4].Y;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-UnnamedLocal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-UnnamedLocal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-13-UnnamedLocal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* Testcase for a problem where GCC allocated xqic to a register,
- * and did not have a VAR_DECL that explained the stack slot to LLVM.
- * Now the LLVM code synthesizes a stack slot if one is presented that
- * has not been previously recognized.  This is where alloca's named 
- * 'local' come from now. 
- */
-
-typedef struct {
-  short x;
-} foostruct;
-
-int foo(foostruct ic);
-
-void test() {
-  foostruct xqic;
-  foo(xqic);
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-14-EntryNodePreds.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-14-EntryNodePreds.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-14-EntryNodePreds.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* GCC Used to generate code that contained a branch to the entry node of 
- * the do_merge function.  This is illegal LLVM code.  To fix this, GCC now
- * inserts an entry node regardless of whether or not it has to insert allocas.
- */
-
-struct edge_rec
-{
-  struct VERTEX *v;
-  struct edge_rec *next;
-  int wasseen;
-  int more_data;
-};
-
-typedef struct edge_rec *QUAD_EDGE;
-
-typedef struct {
-  QUAD_EDGE left, right;
-} EDGE_PAIR;
-
-struct EDGE_STACK {
-    int ptr;
-    QUAD_EDGE *elts;
-    int stack_size;
-};
-
-int do_merge(QUAD_EDGE ldo, QUAD_EDGE rdo) {
-  int lvalid;
-  QUAD_EDGE basel,rcand;
-  while (1) {
-    if (!lvalid) {
-      return (int)basel->next;
-    }
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-16-RenamingTest.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-16-RenamingTest.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-16-RenamingTest.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* test that locals are renamed with . notation */
-
-void abc(void *);
-
-void Test5(double X) {
-  abc(&X);
-  {
-    int X;
-    abc(&X);
-    {
-      float X;
-      abc(&X);
-    }
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-17-ArgumentAddress.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-17-ArgumentAddress.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-17-ArgumentAddress.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-int test(int X) {
-  return X;
-}
-
-void abc(int *X);
-int def(int Y, int Z) {
-  abc(&Z);
-  return Y;
-}
-
-struct Test { short X, x; int Y, Z; };
-
-int Testing(struct Test *A) {
-  return A->X+A->Y;
-}
-
-int Test2(int X, struct Test A, int Y) {
-  return X+Y+A.X+A.Y;
-}
-int Test3(struct Test A, struct Test B) {
-  return A.X+A.Y+B.Y+B.Z;
-}
-
-struct Test Test4(struct Test A) {
-  return A;
-}
-
-int Test6() {
-  int B[200];
-  return B[4];
-}
-
-struct STest2 { int X; short Y[4]; double Z; };
-
-struct STest2 Test7(struct STest2 X) {
-  return X;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-18-64bitConstant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-18-64bitConstant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-18-64bitConstant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* GCC wasn't handling 64 bit constants right fixed */
-
-int printf(const char * restrict format, ...);
-
-int main() {
-  long long Var = 123455678902ll;
-  printf("%lld\n", Var);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-18-StaticData.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-18-StaticData.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-02-18-StaticData.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-double FOO = 17;
-double BAR = 12.0;
-float XX = 12.0f;
-
-static char *procnames[] = {
-  "EXIT"
-};
-
-void *Data[] = { &FOO, &BAR, &XX };
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-11-LargeCharInString.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-11-LargeCharInString.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-11-LargeCharInString.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-int strcmp(const char *s1, const char *s2);
-
-int test(char *X) {
-  /* LLVM-GCC used to emit:
-     %.LC0 = internal global [3 x sbyte] c"\1F\FFFFFF8B\00"
-   */
-  return strcmp(X, "\037\213");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-ArrayInitialization.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-ArrayInitialization.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-ArrayInitialization.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* GCC would generate bad code if not enough initializers are 
-   specified for an array.
- */
-
-int a[10] = { 0, 2};
-
-char str[10] = "x";
-
-void *Arr[5] = { 0, 0 };
-
-float F[12] = { 1.23f, 34.7f };
-
-struct Test { int X; double Y; };
-
-struct Test Array[10] = { { 2, 12.0 }, { 3, 24.0 } };
-
-int B[4][4] = { { 1, 2, 3, 4}, { 5, 6, 7 }, { 8, 9 } };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-StructInitialize.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-StructInitialize.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-StructInitialize.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-typedef struct Connection_Type {
-   long    to;
-   char    type[10];
-   long    length;
-} Connection;
-
-Connection link[3]
-= { {1, "link1", 10},
-    {2, "link2", 20},
-    {3, "link3", 30} };
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-StructInitializer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-StructInitializer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-12-StructInitializer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* GCC was not emitting string constants of the correct length when
- * embedded into a structure field like this.  It thought the strlength
- * was -1.
- */
-
-typedef struct Connection_Type {
-   long    to;
-   char    type[10];
-   long    length;
-} Connection;
-
-Connection link[3]
-= { {1, "link1", 10},
-    {2, "link2", 20},
-    {3, "link3", 30} };
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-BrokenPHINode.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-BrokenPHINode.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-BrokenPHINode.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* GCC was generating PHI nodes with an arity < #pred of the basic block the
- * PHI node lived in.  This was breaking LLVM because the number of entries
- * in a PHI node must equal the number of predecessors for a basic block.
- */
-
-int trys(char *s, int x)
-{
-  int asa;
-  double Val;
-  int LLS;
-  if (x) {
-    asa = LLS + asa;
-  } else {
-  }
-  return asa+(int)Val;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-BrokenSSA.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-BrokenSSA.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-BrokenSSA.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* This code used to break GCC's SSA computation code.  It would create
-   uses of B & C that are not dominated by their definitions.  See:
-   http://gcc.gnu.org/ml/gcc/2002-03/msg00697.html
- */
-int bar();
-int foo()
-{
-  int a,b,c;
-
-  a = b + c;
-  b = bar();
-  c = bar();
-  return a + b + c;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-QuotesInStrConst.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-QuotesInStrConst.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-03-14-QuotesInStrConst.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* GCC was not escaping quotes in string constants correctly, so this would
- * get emitted:
- *  %.LC1 = internal global [32 x sbyte] c"*** Word "%s" on line %d is not\00"
- */
-
-const char *Foo() {
-  return "*** Word \"%s\" on line %d is not";
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-07-SwitchStmt.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-07-SwitchStmt.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-07-SwitchStmt.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-int printf(const char *, ...);
-int foo();
-
-int main() {
-  while (foo()) {
-     switch (foo()) {
-     case 0:
-     case 1:
-     case 2:
-     case 3:
-       printf("3");
-     case 4: printf("4");
-     case 5:
-     case 6:
-     default:
-       break;
-     }
-   }
-   return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-08-LocalArray.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-08-LocalArray.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-08-LocalArray.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* GCC is not outputting the static array to the LLVM backend, so bad things
- * happen.  Note that if this is defined static, everything seems fine.
- */
-double test(unsigned X) {
-  double student_t[30]={0.0 , 12.706 , 4.303 , 3.182 , 2.776 , 2.571 ,
-                               2.447 , 2.365 , 2.306 , 2.262 , 2.228 ,
-                               2.201 , 2.179 , 2.160 , 2.145 , 2.131 ,
-                               2.120 , 2.110 , 2.101 , 2.093 , 2.086 ,
-                               2.080 , 2.074 , 2.069 , 2.064 , 2.060 ,
-                               2.056 , 2.052 , 2.048 , 2.045 };
-  return student_t[X];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-09-StructRetVal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-09-StructRetVal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-09-StructRetVal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct S {
-  int i;
-  short s1, s2;
-};
-
-struct S func_returning_struct(void);
-
-void loop(void) {
-  func_returning_struct();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-10-StructParameters.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-10-StructParameters.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-04-10-StructParameters.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-typedef struct {
-  char p;
-  short q;
-  char r;
-  int X;
-  short Y, Z;
-  int Q;
-} foo;
-
-int test(foo X, float);
-int testE(char,short,char,int,int,float);
-void test3(foo *X) {
-  X->q = 1;
-}
-
-void test2(foo Y) {
-  testE(Y.p, Y.q, Y.r, Y.X, Y.Y, 0.1f);
-  test(Y, 0.1f);
-  test2(Y);
-  test3(&Y);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-05-23-StaticValues.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-05-23-StaticValues.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-05-23-StaticValues.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* Make sure the frontend is correctly marking static stuff as internal! */
-
-int X;
-static int Y = 12;
-
-static void foo(int Z) {
-  Y = Z;
-}
-
-void *test() {
-  foo(12);
-  return &Y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-05-23-TypeNameCollision.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-05-23-TypeNameCollision.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-05-23-TypeNameCollision.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* Testcase for when struct tag conflicts with typedef name... grr */
-
-typedef struct foo {
-  struct foo *X;
-  int Y;
-} * foo;
-
-foo F1;
-struct foo *F2;
-
-enum bar { test1, test2 };
-
-typedef float bar;
-
-enum bar B1;
-bar B2;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-06-25-FWriteInterfaceFailure.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-06-25-FWriteInterfaceFailure.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-06-25-FWriteInterfaceFailure.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef struct _IO_FILE FILE;
-extern FILE *stderr;
-int fprintf(FILE * restrict stream, const char * restrict format, ...);
-
-void test() {
-  fprintf(stderr, "testing\n");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscListTests.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscListTests.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscListTests.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-// Test list stuff
-
-void *malloc(unsigned);
-
-// Test opaque structure support.  the list type is defined later
-struct list;
-
-struct list *PassThroughList(struct list *L) {
-  return L;
-}
-
-
-// Recursive data structure tests...
-
-typedef struct list {
-  int Data;
-  struct list *Next;
-} list;
-
-list *Data;
-
-void foo() {
-  static int Foo = 0;            // Test static local variable
-  Foo += 1;                      // Increment static variable
-
-  Data = (list*)malloc(12);      // This is not a proper list allocation
-}
-
-extern list ListNode1;
-list ListNode3 = { 4, 0          };
-list ListNode2 = { 3, &ListNode3 };
-list ListNode0 = { 1, &ListNode1 };
-list ListNode1 = { 2, &ListNode2 };
-
-
-list ListArray[10];
-
-// Iterative insert fn
-void InsertIntoListTail(list **L, int Data) {
-  while (*L)
-    L = &(*L)->Next;
-  *L = (list*)malloc(sizeof(list));
-  (*L)->Data = Data;
-  (*L)->Next = 0;
-}
-
-// Recursive list search fn
-list *FindData(list *L, int Data) {
-  if (L == 0) return 0;
-  if (L->Data == Data) return L;
-  return FindData(L->Next, Data);
-}
-
-void foundIt(void);
-
-// Driver fn...
-void DoListStuff() {
-  list *MyList = 0;
-  InsertIntoListTail(&MyList, 100);
-  InsertIntoListTail(&MyList, 12);
-  InsertIntoListTail(&MyList, 42);
-  InsertIntoListTail(&MyList, 1123);
-  InsertIntoListTail(&MyList, 1213);
-
-  if (FindData(MyList, 75)) foundIt();
-  if (FindData(MyList, 42)) foundIt();
-  if (FindData(MyList, 700)) foundIt();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -w -emit-llvm %s  -o /dev/null
-
-/* These are random tests that I used when working on the GCC frontend 
-   originally. */
-
-// test floating point comparison!
-int floatcomptest(double *X, double *Y, float *x, float *y) {
-  return *X < *Y || *x < *y;
-}
-
-extern void *malloc(unsigned);
-
-// Exposed a bug
-void *memset_impl(void *dstpp, int c, unsigned len) {
-  long long int dstp = (long long int) dstpp;
-
-  while (dstp % 4 != 0)
-    {
-      ((unsigned char *) dstp)[0] = c;
-      dstp += 1;
-      len -= 1;
-    }
-  return dstpp;
-}
-
-// TEST problem with signed/unsigned versions of the same constants being shared
-// incorrectly!
-//
-static char *temp;
-static int remaining;
-static char *localmalloc(int size) {
-  char *blah;
-  
-  if (size>remaining) 
-    {
-      temp = (char *) malloc(32768);
-      remaining = 32768;
-      return temp;
-    }
-  return 0;
-}
-
-typedef struct { double X; double Y; int Z; } PBVTest;
-
-PBVTest testRetStruct(float X, double Y, int Z) {
-  PBVTest T = { X, Y, Z };
-  return T;
-}
-PBVTest testRetStruct2(void);  // external func no inlining
-
-
-double CallRetStruct(float X, double Y, int Z) {
-  PBVTest T = testRetStruct2();
-  return T.X+X+Y+Z;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-// Test ?: in function calls
-extern fp(int, char*);
-char *Ext;
-void
-__bb_exit_func (void)
-{
-  fp (12, Ext ? Ext : "<none>");
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-14-MiscTests3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,182 +0,0 @@
-// RUN: %clang_cc1 -w -emit-llvm %s  -o /dev/null
-
-void *malloc(unsigned);
-int puts(const char *s);
-
-struct FunStructTest {
-  int Test1;
-  char *Pointer;
-  int Array[12];
-};
-
-struct SubStruct {
-  short X, Y;
-};
-
-struct Quad {
-  int w;
-  struct SubStruct SS;
-  struct SubStruct *SSP;
-  char c;
-  int y;
-};
-
-struct Quad GlobalQuad = { 4, {1, 2}, 0, 3, 156 };
-
-typedef int (*FuncPtr)(int);
-
-unsigned PtrFunc(int (*Func)(int), int X) {
-  return Func(X);
-}
-
-char PtrFunc2(FuncPtr FuncTab[30], int Num) {
-  return FuncTab[Num]('b');
-}
-
-extern char SmallArgs2(char w, char x, long long Zrrk, char y, char z);
-extern int SomeFunc(void);
-char SmallArgs(char w, char x, char y, char z) {
-  SomeFunc();
-  return SmallArgs2(w-1, x+1, y, z, w);
-}
-
-static int F0(struct Quad Q, int i) {              /* Pass Q by value */
-  struct Quad R;
-  if (i) R.SS = Q.SS;
-  Q.SSP = &R.SS;
-  Q.w = Q.y = Q.c = 1;
-  return Q.SS.Y + i + R.y - Q.c;
-}
-
-int F1(struct Quad *Q, int i) {             /* Pass Q by address */
-  struct Quad R;
-#if 0
-  if (i) R.SS = Q->SS;
-#else
-  if (i) R = *Q;
-#endif
-  Q->w = Q->y = Q->c = 1;
-  return Q->SS.Y+i+R.y-Q->c;
-}
-
-
-int BadFunc(float Val) {
-  int Result;
-  if (Val > 12.345) Result = 4;
-  return Result;     /* Test use of undefined value */
-}
-
-int RealFunc(void) {
-  return SomeUndefinedFunction(1, 4, 5);
-}
-
-extern int EF1(int *, char *, int *);
-
-int Func(int Param, long long Param2) {
-  int Result = Param;
-
-  {{{{
-      char c; int X;
-      EF1(&Result, &c, &X);
-    }}}
-
-    {   // c & X are duplicate names!
-      char c; int X;
-      EF1(&Result, &c, &X);
-    }
-
-  }
-  return Result;
-}
-
-
-short FunFunc(long long x, char z) {
-  return x+z;
-}
-
-unsigned castTest(int X) { return X; }
-
-double TestAdd(double X, float Y) {
-  return X+Y+.5;
-}
-
-int func(int i, int j) {
-  while (i != 20)
-    i += 2;
-
-  j += func(2, i);
-  return (i * 3 + j*2)*j;
-}
-
-int SumArray(int Array[], int Num) {
-  int i, Result = 0;
-  for (i = 0; i < Num; ++i)
-    Result += Array[i];
-
-  return Result;
-}
-
-int ArrayParam(int Values[100]) {
-  return EF1((int*)Values[50], (char*)1, &Values[50]);
-}
-
-int ArrayToSum(void) {
-  int A[100], i;
-  for (i = 0; i < 100; ++i)
-    A[i] = i*4;
-
-  return A[A[0]]; //SumArray(A, 100);
-}
-
-
-int ExternFunc(long long, unsigned*, short, unsigned char);
-
-int main(int argc, char *argv[]) {
-  unsigned i;
-  puts("Hello world!\n");
-
-  ExternFunc(-1, 0, (short)argc, 2);
-  //func(argc, argc);
-
-  for (i = 0; i < 10; i++)
-    puts(argv[3]);
-  return 0;
-}
-
-double MathFunc(double X, double Y, double Z,
-                double AA, double BB, double CC, double DD,
-                double EE, double FF, double GG, double HH,
-                double aAA, double aBB, double aCC, double aDD,
-                double aEE, double aFF) {
-  return X + Y + Z + AA + BB + CC + DD + EE + FF + GG + HH
-       + aAA + aBB + aCC + aDD + aEE + aFF;
-}
-
-
-
-void strcpy(char *s1, char *s2) {
-  while (*s1++ = *s2++);
-}
-
-void strcat(char *s1, char *s2) {
-  while (*s1++);
-  s1--;
-  while (*s1++ = *s2++);
-}
-
-int strcmp(char *s1, char *s2) {
-  while (*s1++ == *s2++);
-  if (*s1 == 0) {
-    if (*s2 == 0) {
-      return 0;
-    } else {
-      return -1;
-    }
-  } else {
-    if (*s2 == 0) {
-      return 1;
-    } else {
-      return (*(--s1) - *(--s2));
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-16-HardStringInit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-16-HardStringInit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-16-HardStringInit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-  char      auto_kibitz_list[100][20] = {
-                                      {"diepx"},
-                                      {"ferret"},
-                                      {"knightc"},
-                                      {"knightcap"}};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-17-StringConstant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-17-StringConstant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-17-StringConstant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-char * foo() { return "\\begin{"; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-SubregSetAssertion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-SubregSetAssertion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-SubregSetAssertion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-union X {
-  void *B;
-};
-
-union X foo() {
-  union X A;
-  A.B = (void*)123;
-  return A;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-UnionTest.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-UnionTest.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-UnionTest.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-union X;
-struct Empty {};
-union F {};
-union Q { union Q *X; };
-union X {
-  char C;
-  int A, Z;
-  long long B;
-  void *b1;
-  struct { int A; long long Z; } Q;
-};
-
-union X foo(union X A) {
-  A.C = 123;
-  A.A = 39249;
-  //A.B = (void*)123040123321;
-  A.B = 12301230123123LL;
-  A.Z = 1;
-  return A;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-VarArgsCallFailure.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-VarArgsCallFailure.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-30-VarArgsCallFailure.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-int tcount;
-void test(char *, const char*, int);
-void foo() {
-  char Buf[10];
-  test(Buf, "n%%%d", tcount++);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-31-BadAssert.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-31-BadAssert.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-31-BadAssert.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef struct
-{
-        unsigned char type;        /* Indicates, NORMAL, SUBNORMAL, etc. */
-} InternalFPF;
-
-
-static void SetInternalFPFZero(InternalFPF *dest) {
-  dest->type=0;
-}
-
-void denormalize(InternalFPF *ptr) {
-   SetInternalFPFZero(ptr);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-31-SubregFailure.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-31-SubregFailure.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-07-31-SubregFailure.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-typedef union {
-   long (*ap)[4];
-} ptrs;
-
-void DoAssignIteration() {
-  ptrs abase;
-  abase.ap+=27;
-  Assignment(*abase.ap);
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-08-02-UnionTest.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-08-02-UnionTest.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-08-02-UnionTest.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* In this testcase, the return value of foo() is being promoted to a register
- * which breaks stuff
- */
-int printf(const char * restrict format, ...);
-
-union X { char X; void *B; int a, b, c, d;};
-
-union X foo() {
-  union X Global;
-  Global.B = (void*)123;   /* Interesting part */
-  return Global;
-}
-
-int main() {
-  union X test = foo();
-  printf("0x%p", test.B);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-08-19-RecursiveLocals.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-08-19-RecursiveLocals.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-08-19-RecursiveLocals.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-/* This testcase doesn't actually test a bug, it's just the result of me 
- * figuring out the syntax for forward declaring a static variable. */
-struct list {
-  int x;
-  struct list *Next;
-};
-
-static struct list B;  /* Forward declare static */
-static struct list A = { 7, &B };
-static struct list B = { 8, &A };
-
-extern struct list D;  /* forward declare normal var */
-
-struct list C = { 7, &D };
-struct list D = { 8, &C };
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-08-PointerShifts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-08-PointerShifts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-08-PointerShifts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-int foo(int *A, unsigned X) {
-  return A[X];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-18-UnionProblem.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-18-UnionProblem.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-18-UnionProblem.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-struct DWstruct {
-  char high, low;
-};
-
-typedef union {
-  struct DWstruct s;
-  short ll;
-} DWunion;
-
-short __udivmodhi4 (char n1, char bm) {
-  DWunion rr;
-
-  if (bm == 0)
-    {
-      rr.s.high = n1;
-    }
-  else
-    {
-      rr.s.high = bm;
-    }
-
-  return rr.ll;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-19-StarInLabel.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-19-StarInLabel.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-09-19-StarInLabel.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-extern void start() __asm__("start");
-extern void _start() __asm__("_start");
-extern void __start() __asm__("__start");
-void start() {}
-void _start() {}
-void __start() {}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-10-12-TooManyArguments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-10-12-TooManyArguments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-10-12-TooManyArguments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-void foo() {}
-
-void bar() {
-  foo(1, 2, 3);  /* Too many arguments passed */
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalBoolTest.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalBoolTest.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalBoolTest.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-_Bool X = 0;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalConstantTest.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalConstantTest.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalConstantTest.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-const char *W = "foo";
-const int X = 7;
-int Y = 8;
-const char * const Z = "bar";
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalRedefinition.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalRedefinition.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-GlobalRedefinition.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-extern char algbrfile[9];
-char algbrfile[9] = "abcdefgh";
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-StructParameters.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-StructParameters.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2002-12-15-StructParameters.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef struct
-{
-  void *stack;
-  unsigned size;
-  unsigned avail;
-} compile_stack_type;
-
-void foo(void*);
-void bar(compile_stack_type T, unsigned);
-
-void test() {
-  compile_stack_type CST;
-  foo(&CST);
-
-  bar(CST, 12);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-01-30-UnionInit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-01-30-UnionInit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-01-30-UnionInit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
-union foo {
-  struct { char A, B; } X;
-  int C;
-};
-
-union foo V = { {1, 2} };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-03-03-DeferredType.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-03-03-DeferredType.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-03-03-DeferredType.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-
-
-struct foo A;
-
-struct foo {
-  int x;
-double D;
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-22-UnionCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-22-UnionCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-22-UnionCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct Blend_Map_Entry {
-  union {
-   float Colour[5];
-   double Point_Slope[2];
-  } Vals;
-};
-
-void test(struct Blend_Map_Entry* Foo)
-{
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-23-GCC-fold-infinite-recursion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-23-GCC-fold-infinite-recursion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-23-GCC-fold-infinite-recursion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-double Test(double A, double B, double C, double D) {
-  return -(A-B) - (C-D);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-26-CFECrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-26-CFECrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-26-CFECrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef struct min_info {
-  long offset;
-  unsigned file_attr;
-} min_info;
-
-typedef struct Globals {
-  char answerbuf;
-  min_info info[1];
-  min_info *pInfo;
-} Uz_Globs;
-
-extern Uz_Globs G;
-
-int extract_or_test_files() {  
-  G.pInfo = G.info;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-29-MultipleFunctionDefinition.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-29-MultipleFunctionDefinition.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-06-29-MultipleFunctionDefinition.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -std=gnu89 -emit-llvm %s  -o /dev/null
-
-/* This is apparently legal C.
- */
-extern __inline__ void test() { }
-
-void test() {
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-07-22-ArrayAccessTypeSafety.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-07-22-ArrayAccessTypeSafety.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-07-22-ArrayAccessTypeSafety.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-/* RUN: %clang_cc1  %s -emit-llvm -o - | grep -v alloca | not grep bitcast
- */
-
-void test(int* array, long long N) {
-    array[N] = N[array] = 33;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-06-BuiltinSetjmpLongjmp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-06-BuiltinSetjmpLongjmp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-06-BuiltinSetjmpLongjmp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-/* RUN: %clang_cc1  %s -emit-llvm -o - | not grep __builtin_
- *
- * __builtin_longjmp/setjmp should get transformed into llvm.setjmp/longjmp 
- * just like explicit setjmp/longjmp calls are.
- */
-
-void jumpaway(int *ptr) {
-  __builtin_longjmp(ptr,1);
-}
-    
-int main(void) {
-  __builtin_setjmp(0);
-  jumpaway(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-17-DeadCodeShortCircuit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-17-DeadCodeShortCircuit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-17-DeadCodeShortCircuit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -x c %s -emit-llvm -o /dev/null
-
-int test(_Bool pos, _Bool color) {
-  return 0;
-  return (pos && color);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-18-SigSetJmp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-18-SigSetJmp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-18-SigSetJmp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s  -o /dev/null
-
-#define _JBLEN ((9 * 2) + 3 + 16)
-typedef int sigjmp_buf[_JBLEN + 1];
-int sigsetjmp(sigjmp_buf env, int savemask);
-sigjmp_buf B;
-int foo() {
-  sigsetjmp(B, 1);
-  bar();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-18-StructAsValue.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-18-StructAsValue.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-18-StructAsValue.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-typedef struct {
-  int op;
-} event_t;
-
-event_t test(int X) {
-  event_t foo = { 1 }, bar = { 2 };
-  return X ? foo : bar;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-BadBitfieldRef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-BadBitfieldRef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-BadBitfieldRef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-void foo()
-{
-  char *ap;
-  ap[1] == '-' && ap[2] == 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-PrototypeMismatch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-PrototypeMismatch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-PrototypeMismatch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-
-static int foo(int);
-
-static int foo(C)
-char C;
-{
-  return C;
-}
-
-void test() {
-  foo(7);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-vfork-bug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-vfork-bug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-20-vfork-bug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-extern int vfork(void);
-test() {
-  vfork();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-BinOp-Type-Mismatch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-BinOp-Type-Mismatch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-BinOp-Type-Mismatch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct bar;
-
-void foo()
-{
-  unsigned int frame, focus;
-  (struct bar *) focus == (focus ? ((struct bar *) frame) : 0);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-StmtExpr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-StmtExpr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-StmtExpr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-typedef struct {
-  unsigned long val;
-} structty;
-
-void bar(structty new_mask);
-static void foo() {
-  bar(({ structty mask; mask; }));
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-WideString.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-WideString.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-21-WideString.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-// This bit is taken from Sema/wchar.c so we can avoid the wchar.h include.
-typedef __WCHAR_TYPE__ wchar_t;
-#if defined(_WIN32) || defined(_M_IX86) || defined(__CYGWIN__) \
-  || defined(_M_X64) || defined(SHORT_WCHAR)
-  #define WCHAR_T_TYPE unsigned short
-#elif defined(__sun) || defined(__AuroraUX__)
-  #define WCHAR_T_TYPE long
-#else /* Solaris or AuroraUX. */
-  #define WCHAR_T_TYPE int
-#endif
-
-struct {
-  wchar_t *name;
-} syms = { L"NUL" };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-23-LocalUnionTest.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-23-LocalUnionTest.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-23-LocalUnionTest.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-
-union foo { int X; };
-
-int test(union foo* F) {
-  {
-    union foo { float X; } A;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-BitFieldStruct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-BitFieldStruct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-BitFieldStruct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct Word {
-  short bar;
-  short baz;
-  int final:1;
-  short quux;
-} *word_limit;
-
-void foo ()
-{
-  word_limit->final = (word_limit->final && word_limit->final);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-HugeCharConst.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-HugeCharConst.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-HugeCharConst.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-void foo() {
-  unsigned char int_latin1[] = "f\200\372b\200\343\200\340";
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-StructLayoutBug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-StructLayoutBug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-29-StructLayoutBug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct foo {
-  unsigned int I:1;
-  unsigned char J[1];
-  unsigned int K:1;
- };
-
-void test(struct foo *X) {}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-30-AggregateInitializer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-30-AggregateInitializer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-30-AggregateInitializer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
-struct istruct {
-  unsigned char C;
-};
-
-struct foo {
-  unsigned int I:1;
-  struct istruct J;
-  unsigned char L[1];
-  unsigned int K:1;
-};
-
-struct foo F = { 1, { 7 }, { 123 } , 1 };
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-08-30-LargeIntegerBitfieldMember.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct foo {
-  unsigned int I:1;
-  unsigned char J[1][123];
-  unsigned int K:1;
- };
-
-struct foo F;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-09-18-BitfieldTests.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-09-18-BitfieldTests.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-09-18-BitfieldTests.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -w -emit-llvm %s  -o /dev/null
-
-
-typedef struct BF {
-  int A : 1;
-  char B;
-  int C : 13;
-} BF;
-
-char *test1(BF *b) {
-  return &b->B;        // Must be able to address non-bitfield
-}
-
-void test2(BF *b) {    // Increment and decrement operators
-  b->A++;
-  --b->C;
-}
-
-void test3(BF *b) {
-   b->C = 12345;        // Store
-}
-
-int test4(BF *b) {
-  return b->C;         // Load
-}
-
-void test5(BF *b, int i) { // array ref
-  b[i].C = 12345;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-09-30-StructLayout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-09-30-StructLayout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-09-30-StructLayout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-enum En {
-  ENUM_VAL
-};
-
-struct St {
-  unsigned char A;
-  enum En B;
-  unsigned char C;
-  enum En D;
-  float E;
-};
-
-
-void func(struct St* A) {
-  A->D = ENUM_VAL;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-02-UnionLValueError.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-02-UnionLValueError.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-02-UnionLValueError.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-int sprintf(char * restrict str, const char * restrict format, ...);
-union U{
-  int i[8];
-  char s[80];
-};
-
-void format_message(char *buffer, union U *u) {
-  sprintf(buffer, u->s);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-06-NegateExprType.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-06-NegateExprType.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-06-NegateExprType.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-extern int A[10];
-void Func(int *B) { 
-  B - &A[5]; 
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-09-UnionInitializerBug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-09-UnionInitializerBug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-09-UnionInitializerBug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct Foo {
-    unsigned a;
-    unsigned b;
-    unsigned c;
-};
-
-struct Bar {
-    union {
-        void **a;
-        struct Foo b;
-    }u;
-};
-
-struct Bar test = {0};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-28-ident.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-28-ident.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-28-ident.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-#ident "foo"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-29-AsmRename.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-29-AsmRename.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-10-29-AsmRename.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -triple x86_64-apple-darwin -o /dev/null
-
-
-struct foo { int X; };
-struct bar { int Y; };
-
-extern int Func(struct foo*) __asm__("Func64");
-extern int Func64(struct bar*);
-
-int Func(struct foo *F) {
-  return 1;
-}
-
-int Func64(struct bar* B) {
-  return 0;
-}
-
-
-int test() {
-  Func(0);    /* should be renamed to call Func64 */
-  Func64(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-C99-CompoundLiteral.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-C99-CompoundLiteral.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-C99-CompoundLiteral.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef struct { int foo; } spinlock_t;
-typedef struct wait_queue_head_t { spinlock_t lock; } wait_queue_head_t;
-void call_usermodehelper(void) { 
-  struct wait_queue_head_t work = { lock: (spinlock_t) { 0 }, }; 
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-EmptyStructCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-EmptyStructCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-EmptyStructCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef struct { } the_coolest_struct_in_the_world;
-extern the_coolest_struct_in_the_world xyzzy;
-void *foo() { return &xyzzy; }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-GlobalUnionInit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-GlobalUnionInit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-01-GlobalUnionInit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-union bdflush_param {
-    struct { int x; } b_un;
-    int y[1];
-} bdf_prm = {{30}};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-03-AddrArrayElement.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-03-AddrArrayElement.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-03-AddrArrayElement.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// This should be turned into a tasty getelementptr instruction, not a nasty
-// series of casts and address arithmetic.
-
-char Global[100];
-
-char *test1(unsigned i) {
-  // CHECK: getelementptr
-  return &Global[i];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-04-EmptyStruct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-04-EmptyStruct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-04-EmptyStruct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef struct { } rwlock_t;
-struct fs_struct { rwlock_t lock; int umask; };
-void __copy_fs_struct(struct fs_struct *fs) { fs->lock = (rwlock_t) { }; }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-04-OutOfMemory.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-04-OutOfMemory.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-04-OutOfMemory.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-void schedule_timeout(signed long timeout)
-{
- switch (timeout)
- {
- case ((long)(~0UL>>1)): break;
- }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-08-PointerSubNotGetelementptr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-08-PointerSubNotGetelementptr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-08-PointerSubNotGetelementptr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-char *test(char* C) {
-  // CHECK: getelementptr
-  return C-1;   // Should turn into a GEP
-}
-
-int *test2(int* I) {
-  return I-1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-12-VoidString.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-12-VoidString.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-12-VoidString.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-void query_newnamebuf(void) { ((void)"query_newnamebuf"); }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-13-TypeSafety.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-13-TypeSafety.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-13-TypeSafety.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | grep getelementptr
-
-int *test(int *X, int Y) {
-  return X + Y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-16-StaticArrayInit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-16-StaticArrayInit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-16-StaticArrayInit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-void bar () {
- static char x[10];
- static char *xend = x + 10;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-18-CondExprLValue.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-18-CondExprLValue.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-18-CondExprLValue.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef struct { unsigned long pgprot; } pgprot_t;
-
-void split_large_page(unsigned long addr, pgprot_t prot)
-{
-  (addr ? prot : ((pgprot_t) { 0x001 } )).pgprot;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-19-AddressOfRegister.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-19-AddressOfRegister.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-19-AddressOfRegister.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-
-struct item {
-  short delta[4];
-};
-
-int TEST(int nt) {
- register struct item *aa;
- aa[nt].delta;
- return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-19-BitFieldArray.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-19-BitFieldArray.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-19-BitFieldArray.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct _GIOChannel {
-  int write_buf;
-  char partial_write_buf[6];
-  int d :1;
-};
-
-void g_io_channel_init (struct _GIOChannel *channel) {
-  channel->partial_write_buf[0];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-Bitfields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-Bitfields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-Bitfields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct face_cachel {
-  unsigned int reverse :1;
-  unsigned char font_specified[1];
-};
-
-void
-ensure_face_cachel_contains_charset (struct face_cachel *cachel) {
-  cachel->font_specified[0] = 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-ComplexDivision.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-ComplexDivision.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-ComplexDivision.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-int test() {
-  __complex__ double C;
-  double D;
-  C / D;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-UnionBitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-UnionBitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-20-UnionBitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct printf_spec {
-  unsigned int minus_flag:1;
-  char converter;
-};
-
-void parse_doprnt_spec () {
-  struct printf_spec spec;
-  spec.minus_flag = 1;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-26-PointerShift.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-26-PointerShift.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-26-PointerShift.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-unsigned long do_csum(const unsigned char *buff, int len, unsigned long result) {
-  if (2 & (unsigned long) buff) result += 1;
-  return result;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-27-ConstructorCast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-27-ConstructorCast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-27-ConstructorCast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct i387_soft_struct {
-  long cwd;
-};
-union i387_union {
-  struct i387_soft_struct soft;
-};
-struct thread_struct {
-  union i387_union i387;
-};
-void _init_task_union(void) {
-   struct thread_struct thread = (struct thread_struct) { {{0}} };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-27-UnionCtorInitialization.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-27-UnionCtorInitialization.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-11-27-UnionCtorInitialization.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-struct i387_soft_struct {
- long cwd;
- long twd;
- long fip;
-};
-union i387_union {
- struct i387_soft_struct soft;
-};
-struct thread_struct {
- union i387_union i387;
-};
-void _init_task_union(void) {
-  struct thread_struct thread = (struct thread_struct) { {{0}} };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2003-12-14-ExternInlineSupport.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2003-12-14-ExternInlineSupport.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2003-12-14-ExternInlineSupport.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -std=gnu89 %s -emit-llvm -o - | not grep dead_function
-
-extern __inline__ void dead_function() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-01-01-UnknownInitSize.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-01-01-UnknownInitSize.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-01-01-UnknownInitSize.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
-/*
- * This regression test ensures that the C front end can compile initializers
- * even when it cannot determine the size (as below).
-*/
-struct one
-{
-  int a;
-  int values [];
-};
-
-struct one hobbit = {5, {1, 2, 3}};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-01-08-ExternInlineRedefine.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-01-08-ExternInlineRedefine.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-01-08-ExternInlineRedefine.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=gnu89 -emit-llvm %s  -o /dev/null
-
-
-extern __inline long int
-__strtol_l (int a)
-{
-  return 0;
-}
-
-long int
-__strtol_l (int a)
-{
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-12-LargeAggregateCopy.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-12-LargeAggregateCopy.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-12-LargeAggregateCopy.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | FileCheck %s
-
-struct X { int V[10000]; };
-struct X Global1, Global2;
-void test() {
-  // CHECK: llvm.memcpy
-  Global2 = Global1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-BuiltinFrameReturnAddress.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-BuiltinFrameReturnAddress.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-BuiltinFrameReturnAddress.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | FileCheck %s
-
-void *test1() {
-  // CHECK: call i8* @llvm.returnaddress
-  return __builtin_return_address(1);
-}
-void *test2() {
-  // CHECK: call i8* @llvm.frameaddress
-  return __builtin_frame_address(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-IllegalVararg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-IllegalVararg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-IllegalVararg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1  %s -w -emit-llvm -o -
-
-float test(int X, ...) {
-  __builtin_va_list ap;
-  float F;
-  __builtin_va_start(ap, X);
-  F = __builtin_va_arg(ap, float);
-  return F;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-Memset.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-Memset.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-13-Memset.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | grep llvm.memset | count 3
-
-typedef __SIZE_TYPE__ size_t;
-void *memset(void*, int, size_t);
-void bzero(void*, size_t);
-
-void test(int* X, char *Y) {
-  // CHECK: call i8* llvm.memset
-  memset(X, 4, 1000);
-  // CHECK: call void bzero
-  bzero(Y, 100);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-14-ZeroInitializer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-14-ZeroInitializer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-14-ZeroInitializer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: zeroinitializer
-int X[1000];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-20-Builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-20-Builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-02-20-Builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | not grep builtin
-double sqrt(double x);
-void zsqrtxxx(float num) {
-   num = sqrt(num);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-07-ComplexDivEquals.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-07-ComplexDivEquals.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-07-ComplexDivEquals.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-void test(__complex__ double D, double X) {
-  D /= X;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-07-ExternalConstant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-07-ExternalConstant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-07-ExternalConstant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: @a = external constan
-extern const int a[];   // 'a' should be marked constant even though it's external!
-int foo () {
-  return a[0];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-09-LargeArrayInitializers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-09-LargeArrayInitializers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-09-LargeArrayInitializers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-// Test that these initializers are handled efficiently
-
-int test(int x) {
-  const int XX[1000] = { 0, 0 };
-  const char S [1000] = "foo";
-
-  const int array[] = {
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-     17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 17, 23, 123, 123, 49, 
-   };
-   return array[x];
-} 

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-15-SimpleIndirectGoto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-15-SimpleIndirectGoto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-15-SimpleIndirectGoto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-int code[]={0,0,0,0,1};
-void foo(int x) {
-  volatile int b;
-  b = 0xffffffff;
-}
-void bar(int *pc) {
-  static const void *l[] = {&&lab0, &&end};
-
-  foo(0);
-  goto *l[*pc];
- lab0:
-  foo(0);
-  pc++;
-  goto *l[*pc];
- end:
-  return;
-}
-int main() {
-  bar(code);
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-16-AsmRegisterCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-16-AsmRegisterCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-03-16-AsmRegisterCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple armv7-unknown-unknown %s  -o /dev/null
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s  -o /dev/null
-
-int foo() {
-#ifdef __arm__
-  register int X __asm__("r1");
-#else
-  register int X __asm__("ebx");
-#endif
-  return X;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-05-07-VarArrays.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-05-07-VarArrays.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-05-07-VarArrays.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-int foo(int len, char arr[][len], int X) {
-  return arr[X][0];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-05-21-IncompleteEnum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-05-21-IncompleteEnum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-05-21-IncompleteEnum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -w -emit-llvm %s  -o /dev/null
-
-void test(enum foo *X) {
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-08-OpaqueStructArg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-08-OpaqueStructArg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-08-OpaqueStructArg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-   struct fu;
-   void foo(struct fu);
-   void bar() {
-      foo;
-   }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-17-UnorderedBuiltins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-17-UnorderedBuiltins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-17-UnorderedBuiltins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-_Bool A, B, C, D, E, F, G, H;
-void TestF(float X, float Y) {
-  A = __builtin_isgreater(X, Y);
-  B = __builtin_isgreaterequal(X, Y);
-  C = __builtin_isless(X, Y);
-  D = __builtin_islessequal(X, Y);
-  E = __builtin_islessgreater(X, Y);
-  F = __builtin_isunordered(X, Y);
-  //G = __builtin_isordered(X, Y);    // Our current snapshot of GCC doesn't include this builtin
-  H = __builtin_isunordered(X, Y);
-}
-void TestD(double X, double Y) {
-  A = __builtin_isgreater(X, Y);
-  B = __builtin_isgreaterequal(X, Y);
-  C = __builtin_isless(X, Y);
-  D = __builtin_islessequal(X, Y);
-  E = __builtin_islessgreater(X, Y);
-  F = __builtin_isunordered(X, Y);
-  //G = __builtin_isordered(X, Y);    // Our current snapshot doesn't include this builtin.  FIXME
-  H = __builtin_isunordered(X, Y);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-17-UnorderedCompares.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-17-UnorderedCompares.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-17-UnorderedCompares.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1  -std=c99 %s -emit-llvm -o - | grep -v llvm.isunordered | not grep call
-
-_Bool A, B, C, D, E, F;
-void TestF(float X, float Y) {
-  A = __builtin_isgreater(X, Y);
-  B = __builtin_isgreaterequal(X, Y);
-  C = __builtin_isless(X, Y);
-  D = __builtin_islessequal(X, Y);
-  E = __builtin_islessgreater(X, Y);
-  F = __builtin_isunordered(X, Y);
-}
-void TestD(double X, double Y) {
-  A = __builtin_isgreater(X, Y);
-  B = __builtin_isgreaterequal(X, Y);
-  C = __builtin_isless(X, Y);
-  D = __builtin_islessequal(X, Y);
-  E = __builtin_islessgreater(X, Y);
-  F = __builtin_isunordered(X, Y);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-18-VariableLengthArrayOfStructures.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-18-VariableLengthArrayOfStructures.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-06-18-VariableLengthArrayOfStructures.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-struct S { };
-
-int xxxx(int a) {
-  struct S comps[a];
-  comps[0];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-07-06-FunctionCast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-07-06-FunctionCast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-07-06-FunctionCast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-static int unused_func(void) {
-  return 1;
-}
-
-int foo(void) {
-  (void)unused_func; /* avoid compiler warning */
-  return 2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-08-06-LargeStructTest.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-08-06-LargeStructTest.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-08-06-LargeStructTest.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-
-#define A(X) int X;
-#define B(X) A(X##0) A(X##1) A(X##2) A(X##3) A(X##4) A(X##5) A(X##6) A(X##7) \
-             A(X##8) A(X##9) A(X##A) A(X##B) A(X##C) A(X##D) A(X##E) A(X##F)
-#define C(X) B(X##0) B(X##1) B(X##2) B(X##3) B(X##4) B(X##5) B(X##6) B(X##7) \
-             B(X##8) B(X##9) B(X##A) B(X##B) B(X##C) B(X##D) B(X##E) B(X##F)
-
-struct foo {
-  C(x);   // 256
-  C(y);   // 256
-  C(z);
-};
-
-
-int test(struct foo *F) {
-   return F->xA1 + F->yFF + F->zC4;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-25-UnnamedBitfieldPadding.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-25-UnnamedBitfieldPadding.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-25-UnnamedBitfieldPadding.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-// This is a testcase for PR461
-typedef struct {
-  unsigned min_align: 1;
-  unsigned : 1;
-} addr_diff_vec_flags;
-
-addr_diff_vec_flags X;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-27-InvalidConstantExpr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-27-InvalidConstantExpr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-27-InvalidConstantExpr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | not grep {foo\\* sub}
-// This should not produce a subtrace constantexpr of a pointer
-struct foo {
-  int Y;
-  char X[100];
-} F;
-
-int test(char *Y) {
-   return Y - F.X;
-} 

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-27-StaticFunctionRedeclare.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-27-StaticFunctionRedeclare.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2004-11-27-StaticFunctionRedeclare.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | \
-// RUN:   opt -std-compile-opts -emit-llvm | not grep {declare i32.*func}
-
-// There should not be an unresolved reference to func here.  Believe it or not,
-// the "expected result" is a function named 'func' which is internal and 
-// referenced by bar().
-
-// This is PR244
-
-static int func();
-void bar() {
-  int func();
-  foo(func);
-}
-static int func(char** A, char ** B) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-ConstantInits.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-ConstantInits.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-ConstantInits.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-// This tests all kinds of hard cases with initializers and
-// array subscripts.  This corresponds to PR487.
-
-struct X { int a[2]; };
-
-int test() {
-  static int i23 = (int) &(((struct X *)0)->a[1]);
-  return i23;
-}
-
-int i = (int) &( ((struct X *)0) -> a[1]);
-
-int Arr[100];
-
-int foo(int i) { return bar(&Arr[49])+bar(&Arr[i]); }
-int foo2(int i) { 
-  static const int *X = &Arr[49];
-   static int i23 = (int) &( ((struct X *)0) -> a[0]);
-  int *P = Arr;
-  ++P;
-  return bar(Arr+i);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-PointerDifference.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-PointerDifference.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-PointerDifference.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: sdiv exact
-int Diff(int *P, int *Q) { return P-Q; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-VAArgError-ICE.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-VAArgError-ICE.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-01-02-VAArgError-ICE.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// This file is erroneous, but should not cause the compiler to ICE.
-// PR481
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-
-int flags(int a, int b, ...) {
-        __builtin_va_list         args;
-        __builtin_va_start(args,a);       // not the last named arg
-        foo(args);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-02-20-AggregateSAVEEXPR.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-02-20-AggregateSAVEEXPR.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-02-20-AggregateSAVEEXPR.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -o /dev/null -emit-llvm
-
-int foo(__complex float c) {
-    return creal(c);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-02-27-MarkGlobalConstant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-02-27-MarkGlobalConstant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-02-27-MarkGlobalConstant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1  %s -emit-llvm -o - | FileCheck %s
-// PR10414
-
-// The synthetic global made by the CFE for big initializer should be marked
-// constant.
-
-void bar();
-void foo() {
-  // CHECK: private unnamed_addr constant
-  char Blah[] = "asdlfkajsdlfkajsd;lfkajds;lfkjasd;flkajsd;lkfja;sdlkfjasd";
-  bar(Blah);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-05-OffsetOfHack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-05-OffsetOfHack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-05-OffsetOfHack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - 
-
-struct s {
-  unsigned long int field[0];
-};
-
-#define OFFS \
-        (((char *) &((struct s *) 0)->field[0]) - (char *) 0)
-
-int foo[OFFS];
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-06-OffsetOfStructCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-06-OffsetOfStructCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-06-OffsetOfStructCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-struct Y {};
-struct XXX {
-  struct  Y F;
-};
-
-void test1() {
-   (int)&((struct XXX*)(((void *)0)))->F;
-}
-
-void test2() {
-   &((struct XXX*)(((void *)0)))->F;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-11-Prefetch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-11-Prefetch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-03-11-Prefetch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-void foo(int *P) {
-  // CHECK: llvm.prefetch
-  __builtin_prefetch(P);
-  __builtin_prefetch(P, 1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-04-09-ComplexOps.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-04-09-ComplexOps.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-04-09-ComplexOps.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-#define I 1.0iF
-
-double __complex test(double X) { return ~-(X*I); }
-
-_Bool EQ(double __complex A, double __complex B) { return A == B; }
-_Bool NE(double __complex A, double __complex B) { return A != B; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-05-10-GlobalUnionInit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-05-10-GlobalUnionInit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-05-10-GlobalUnionInit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-union A {                    // { uint }
-  union B { double *C; } D;
-} E = { { (double*)12312 } };
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-06-15-ExpandGotoInternalProblem.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=c99 %s -emit-llvm -o - | \
-// RUN:    opt -std-compile-opts -disable-output
-// PR580
-
-int X, Y;
-int foo() {
-  int i;
-        for (i=0; i<100; i++ )
-        {
-                break;
-                i = ( X || Y ) ;
-        }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-20-SqrtNoErrno.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-20-SqrtNoErrno.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-20-SqrtNoErrno.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s
-// llvm.sqrt has undefined behavior on negative inputs, so it is
-// inappropriate to translate C/C++ sqrt to this.
-float sqrtf(float x);
-float foo(float X) {
-  // CHECK: foo
-  // CHECK: call float @sqrtf(float %
-  // Check that this is marked readonly when errno is ignored.
-  return sqrtf(X);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-26-UnionInitCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-26-UnionInitCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-26-UnionInitCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// PR607
-// RUN: %clang_cc1 %s -emit-llvm -o -
-union { char bytes[8]; double alignment; }EQ1 = {0,0,0,0,0,0,0,0};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-28-IncorrectWeakGlobal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-28-IncorrectWeakGlobal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-07-28-IncorrectWeakGlobal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | grep TheGlobal | not grep weak
-
-extern int TheGlobal;
-int foo() { return TheGlobal; }
-int TheGlobal = 1;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-20-ComplexConstants.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-20-ComplexConstants.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-20-ComplexConstants.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm  -o /dev/null
-
-const double _Complex x[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-24-AsmUserPrefix.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-24-AsmUserPrefix.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-24-AsmUserPrefix.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | opt -std-compile-opts | llc | \
-// RUN:    not grep _foo2
-
-void foo() __asm__("foo2");
-
-void bar() {
-  foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-24-BitFieldCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-24-BitFieldCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-09-24-BitFieldCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - 
-
-struct tree_common {};
-
-struct tree_int_cst {
- struct tree_common common;
-  struct tree_int_cst_lowhi {
-    unsigned long long low;
-    long long high;
-  } int_cst;
-};
-
-enum XXX { yyy };
-
-struct tree_function_decl {
-  struct tree_common common;
-  long long locus, y;
-  __extension__ enum  XXX built_in_class : 2;
-
-};
-
-
-union tree_node {
-  struct tree_int_cst int_cst;
-  struct tree_function_decl function_decl;
-};
-
-
-void foo (union tree_node * decl) {
-  decl->function_decl.built_in_class != 0;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-12-04-AttributeUsed.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-12-04-AttributeUsed.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-12-04-AttributeUsed.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: @llvm.used = appending global [2 x i8*] [i8* bitcast (void ()* @foo to i8*), i8* bitcast (i32* @X to i8*)], section "llvm.metadata"
-int X __attribute__((used));
-int Y;
-
-__attribute__((used)) void foo() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2005-12-04-DeclarationLineNumbers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2005-12-04-DeclarationLineNumbers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2005-12-04-DeclarationLineNumbers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -g -o - | grep DW_TAG_compile_unit | count 1
-// PR664: ensure that line #'s are emitted for declarations
-
-
-short test(short br_data_0,
-short br_data_1,
-short br_data_2,
-short br_data_3,
-short br_data_4,
-short br_data_5,
-short br_data_6,
-short br_data_7) {
-
-short sm07 = br_data_0 + br_data_7;
-short sm16 = br_data_1 + br_data_6;
-short sm25 = br_data_2 + br_data_5;
-short sm34 = br_data_3 + br_data_4;
-short s0734 = sm07 + sm34;
-short s1625 = sm16 + sm25;
-
-return s0734 + s1625;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-13-Includes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-13-Includes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-13-Includes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -g -emit-llvm -o - | FileCheck %s
-// PR676
-
-int printf(const char * restrict format, ...);
-
-void test() {
-  printf("Hello World\n");
-}
-
-// CHECK: test{{[\\/]}}CodeGen

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-13-StackSave.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-13-StackSave.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-13-StackSave.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// PR691
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// CHECK: call i8* @llvm.stacksave()
-
-void test(int N) {
-  int i;
-  for (i = 0; i < N; ++i) {
-    int VLA[i];
-    external(VLA);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-16-BitCountIntrinsicsUnsigned.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-16-BitCountIntrinsicsUnsigned.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-16-BitCountIntrinsicsUnsigned.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-unsigned t2(unsigned X) {
-  // CHECK: t2
-  // CHECK: llvm.ctlz.i32
-  return __builtin_clz(X);
-}
-int t1(int X) {
-  // CHECK: t1
-  // CHECK: llvm.ctlz.i32
-  return __builtin_clz(X);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-23-FileScopeAsm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-23-FileScopeAsm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-01-23-FileScopeAsm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: module asm "foo1"
-__asm__ ("foo1");
-// CHECK: module asm "foo2"
-__asm__ ("foo2");
-// CHECK: module asm "foo3"
-__asm__ ("foo3");
-// CHECK: module asm "foo4"
-__asm__ ("foo4");
-// CHECK: module asm "foo5"
-__asm__ ("foo5");

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-03-MissingInitializer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-03-MissingInitializer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-03-MissingInitializer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-struct X { int *XX; int Y;};
-
-void foo() {
-  // CHECK: @foo.nate = internal global i32 0
-  static int nate = 0;
-  struct X bob = { &nate, 14 };
-  bar(&bob);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-16-VectorCtor.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-16-VectorCtor.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-16-VectorCtor.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Test that basic generic vector support works
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-typedef int v4si __attribute__ ((__vector_size__ (16)));
-void test(v4si *P, v4si *Q, float X) {
-  *P = (v4si){ X, X, X, X } * *Q;
-}
-
-v4si G = (v4si){ 0.1, 1.2, 4.2, 17.2 };
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-17-KnRMismatch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-17-KnRMismatch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-03-17-KnRMismatch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-void regnode(int op);
-
-void regnode(op)
-char op;
-{
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-05-19-SingleEltReturn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-05-19-SingleEltReturn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-05-19-SingleEltReturn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// Test returning a single element aggregate value containing a double.
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-struct X {
-  double D;
-};
-
-struct Y { 
-  struct X x; 
-};
-
-struct Y bar();
-
-void foo(struct Y *P) {
-  *P = bar();
-}
-
-struct Y bar() {
-  struct Y a;
-  a.x.D = 0;
-  return a;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-07-31-PR854.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-07-31-PR854.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-07-31-PR854.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple i686-linux-gnu -w %s -emit-llvm -o -
-
-// PR854
-  struct kernel_symbol {
-    unsigned long value;
-  };
-  unsigned long loops_per_jiffy = (1<<12);
-  static const char __kstrtab_loops_per_jiffy[]
-__attribute__((section("__ksymtab_strings"))) = "loops_per_jiffy";
-  static const struct kernel_symbol __ksymtab_loops_per_jiffy
-__attribute__((__used__)) __attribute__((section("__ksymtab"))) = { (unsigned
-long)&loops_per_jiffy, __kstrtab_loops_per_jiffy };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-11-BitfieldRefCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-11-BitfieldRefCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-11-BitfieldRefCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-// PR906
-
-struct state_struct {
-  unsigned long long phys_frame: 50;
-  unsigned valid : 2;
-} s;
-
-int mem_access(struct state_struct *p) {
-  return p->valid;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-18-fwrite-cast-crash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-18-fwrite-cast-crash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-18-fwrite-cast-crash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-// PR910
-
-struct l_struct_2E_FILE { char x; };
-unsigned fwrite(signed char *, unsigned , unsigned , signed char *);
-static signed char str301[39];
-static void Usage(signed char *ltmp_611_6) {
-  struct l_struct_2E_FILE *ltmp_6202_16;
-  unsigned ltmp_6203_92;
-  ltmp_6203_92 =  /*tail*/ ((unsigned  (*) (signed char *, unsigned , unsigned ,
-struct l_struct_2E_FILE *))(void*)fwrite)((&(str301[0u])), 38u, 1u, ltmp_6202_16);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-21-IncompleteElementType.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-21-IncompleteElementType.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-21-IncompleteElementType.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: not %clang_cc1 %s -emit-llvm -o /dev/null
-
-struct A X[(927 - 37) / sizeof(struct A)];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-25-DebugFilename.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-25-DebugFilename.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-25-DebugFilename.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: not %clang_cc1  %s -emit-llvm -o /dev/null
-#include "2006-09-25-DebugFilename.h"
-int func1() { return hfunc1(); }
-int func2() { fluffy; return hfunc1(); } // expected-error {{use of undeclared identifier 'fluffy'}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-25-DebugFilename.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-25-DebugFilename.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-25-DebugFilename.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-extern int exfunc(int a);
-
-static inline int hfunc1()
-{
-  return exfunc(1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-28-SimpleAsm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-28-SimpleAsm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-09-28-SimpleAsm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// PR924
-
-void bar() {
-  // Extended asm
-  // CHECK: call void asm sideeffect "ext: xorl %eax, eax; movl eax, fs; movl eax, gs  %blah
-  asm volatile ("ext: xorl %%eax, eax; movl eax, fs; movl eax, gs  %%blah %= %\
-% " : : "r"(1));
-  // CHECK: call void asm sideeffect "nonext: xorl %eax, %eax; movl %eax, %fs; movl %eax, %gs  %%blah %= %%
-  // Non-extended asm.
-  asm volatile ("nonext: xorl %eax, %eax; movl %eax, %fs; movl %eax, %gs  %%blah %= %% ");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-10-30-ArrayCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-10-30-ArrayCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-10-30-ArrayCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -O3 -emit-llvm -o - %s
-// PR954, PR911
-
-extern void foo();
-
-struct S {
-  short        f1[3];
-  unsigned int f2 : 1;
-};
-
-void bar()
-{
-  struct S *A;
-
-  if (A->f2)
-    foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2006-12-14-ordered_expr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2006-12-14-ordered_expr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2006-12-14-ordered_expr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -O3 -emit-llvm %s -o - | FileCheck %s
-
-int test2(float X, float Y) {
-  // CHECK: fcmp ord float %X, %Y
-  return !__builtin_isunordered(X, Y);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-06-KNR-Proto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-06-KNR-Proto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-06-KNR-Proto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-// PR1083
-
-int svc_register (void (*dispatch) (int));
-
-int svc_register (dispatch)
-     void (*dispatch) ();
-{
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-20-VectorICE.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-20-VectorICE.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-20-VectorICE.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - 
-
-typedef float __m128 __attribute__((__vector_size__(16)));
-typedef long long __v2di __attribute__((__vector_size__(16)));
-typedef int __v4si __attribute__((__vector_size__(16)));
-
-__v2di  bar(void);
-void foo(int X, __v4si *P) {
-	*P = X == 2 ? bar() : bar();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-24-InlineAsmCModifier.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-24-InlineAsmCModifier.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-01-24-InlineAsmCModifier.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Verify that the %c modifier works and strips off any prefixes from
-// immediates.
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-void foo() {
-  // CHECK: i32 789514
-  __asm__         volatile("/* " "pickANumber" ": %c0 */"::"i"(0xC0C0A));
-
-  // Check that non-c modifiers work also
-  // CHECK: i32 123
-   __asm__         volatile("/* " "pickANumber2 " ": %0 */"::"i"(123));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-AddrLValue-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-AddrLValue-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-AddrLValue-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -emit-llvm -o -
-// PR1173
-
-struct S { char s; };
-struct T { struct S t; };
-
-struct S *const p = &((struct T * const) (0x4000))->t;
-
-void
-foo (void)
-{
-  p->s = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-AddrLValue.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-AddrLValue.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-AddrLValue.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -emit-llvm -o -
-// PR1176
-
-typedef struct
-{
-  char *key;
-  char *value;
-} T1;
-
-typedef struct
-{
-  long type;
-  char *value;
-} T3;
-
-T1 a[] =
-{
-  {
-    "",
-    ((char *)&((T3) {1, (char *) 1}))
-  }
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-EmptyStruct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-EmptyStruct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-04-EmptyStruct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -emit-llvm -o -
-// PR1175
-
-struct empty { };
-
-void foo(struct empty *p) {
-   p++;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-07-AddrLabel.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-07-AddrLabel.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-07-AddrLabel.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// PR947
-// RUN: %clang_cc1 %s -emit-llvm -o - 
-
-void foo() {
-    void *ptr;
-  label:
-    ptr = &&label;
-
-    goto *ptr;
-  }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-16-VoidPtrDiff.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-16-VoidPtrDiff.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-16-VoidPtrDiff.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-void foo(void *ptr, int test) {
-  (ptr - ((void *) test + 0x2000));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-25-C-DotDotDot.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-25-C-DotDotDot.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-02-25-C-DotDotDot.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -O0 %s -emit-llvm -o - | FileCheck %s
-
-// Make sure the call to foo is compiled as:
-//  call float @foo()
-// not
-//  call float (...)* bitcast (float ()* @foo to float (...)*)( )
-
-static float foo() { return 0.0; }
-// CHECK: call float @foo
-float bar() { return foo()*10.0;}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-01-VarSizeArrayIdx.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-01-VarSizeArrayIdx.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-01-VarSizeArrayIdx.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -emit-llvm -o - | grep mul
-// PR1233
-
-float foo(int w, float A[][w], int g, int h) {
-  return A[g][0];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-05-DataLayout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-05-DataLayout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-05-DataLayout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// Testcase for PR1242
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep datalayout | \
-// RUN:    not grep {"\[Ee\]-p:\[36\]\[24\]:\[36\]\[24\]"}
-// END.
-
-typedef __SIZE_TYPE__ size_t;
-void * malloc(size_t size);
-#define NDIM 3
-#define BODY 01
-typedef double vector[NDIM];
-typedef struct bnode* bodyptr;
-// { i16, double, [3 x double], i32, i32, [3 x double], [3 x double], [3 x
-// double], double, \2 *, \2 * }
-struct bnode {
-  short int type;
-  double mass;
-  vector pos;
-  int proc;
-  int new_proc;
-  vector vel;
-  vector acc;
-  vector new_acc;
-  double phi;
-  bodyptr next;
-  bodyptr proc_next;
-} body;
-
-#define Type(x) ((x)->type)
-#define Mass(x) ((x)->mass)
-#define Pos(x)  ((x)->pos)
-#define Proc(x) ((x)->proc)
-#define New_Proc(x) ((x)->new_proc)
-#define Vel(x)  ((x)->vel)
-#define Acc(x)  ((x)->acc)
-#define New_Acc(x)  ((x)->new_acc)
-#define Phi(x)  ((x)->phi)
-#define Next(x) ((x)->next)
-#define Proc_Next(x) ((x)->proc_next)
-
-bodyptr ubody_alloc(int p)
-{
-  register bodyptr tmp;
-  tmp = (bodyptr)malloc(sizeof(body));
-
-  Type(tmp) = BODY;
-  Proc(tmp) = p;
-  Proc_Next(tmp) = NULL;
-  New_Proc(tmp) = p;
-  return tmp;
-}
-
-int main(int argc, char** argv) {
-  bodyptr b = ubody_alloc(17);
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-26-BitfieldAfterZeroWidth.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-26-BitfieldAfterZeroWidth.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-26-BitfieldAfterZeroWidth.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-struct W {};
-struct Y {
-  struct W w;
-  int i:1;
-} __attribute__ ((packed)) y;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-26-ZeroWidthBitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-26-ZeroWidthBitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-26-ZeroWidthBitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-struct Z { int :0; } z;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-27-VarLengthArray.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-27-VarLengthArray.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-03-27-VarLengthArray.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: getelementptr inbounds i32* %{{vla|[0-9]}}
-extern void f(int *);
-int e(int m, int n) {
-  int x[n];
-  f(x);
-  return x[m];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedBitFields-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedBitFields-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedBitFields-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-# define pck __attribute__((packed))
-
-
-struct pck F { 
-  unsigned long long i : 12, 
-    j : 23, 
-    k : 27, 
-    l; 
-}; 
-struct F f1;
-
-void foo() {
-	f1.l = 5;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedBitFields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedBitFields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedBitFields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-# define pck __attribute__((packed))
-
-
-struct pck E { 
-  unsigned long long l, 
-    i : 12, 
-    j : 23, 
-    k : 29; };
-
-struct E e1;
-
-void foo() {
-	e1.k = 5;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedStruct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedStruct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PackedStruct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-#pragma pack(push, 2)
-
-enum {
-  tA = 0,
-  tB = 1
-};
-
-struct MyStruct {
-  unsigned long A;
-  char C;
-  void * B;
-};
-
-void bar(){
-struct MyStruct MS = { tB, 0 };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PadBeforeZeroLengthField.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PadBeforeZeroLengthField.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-PadBeforeZeroLengthField.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-struct c__ { unsigned int type:4; };
-union A { struct c__ c;  } __attribute__((aligned(8)));
-struct B {
-    unsigned int retainCount;
-    union A objects[];
-};
-void foo(union A * objects, struct B *array, unsigned long k)
-{  array->objects[k] = objects[k]; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-UnPackedStruct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-UnPackedStruct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-05-UnPackedStruct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-
-enum {
-  tA = 0,
-  tB = 1
-};
-
-struct MyStruct {
-  unsigned long A;
-  void * B;
-};
-
-void bar(){
-struct MyStruct MS = { tB, 0 };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-InlineAsmStruct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-InlineAsmStruct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-InlineAsmStruct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-struct V { short X, Y; };
-int bar() {
-  struct V bar;
-  __asm__ volatile("foo %0\n" : "=r"(bar));
-  return bar.X;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-InlineAsmUnion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-InlineAsmUnion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-InlineAsmUnion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-union U { int x; float p; };
-void foo() {
-  union U bar;
-  __asm__ volatile("foo %0\n" : "=r"(bar));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-PR1321.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-PR1321.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-11-PR1321.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-
-struct X {
-  unsigned int e0 : 17;
-  unsigned int e1 : 17;
-  unsigned int e2 : 17;
-  unsigned int e3 : 17;
-  unsigned int e4 : 17;
-  unsigned int e5 : 17;
-  unsigned int e6 : 17;
-  unsigned int e7 : 17;
-} __attribute__((packed)) x;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-13-InlineAsmStruct2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-13-InlineAsmStruct2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-13-InlineAsmStruct2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-struct V { short X, Y; };
-int bar() {
-  struct V bar;
-  // CHECK: call void asm
-  __asm__ volatile("foo %0\n" :: "r"(bar));
-  return bar.X;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-13-InlineAsmUnion2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-13-InlineAsmUnion2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-13-InlineAsmUnion2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-union U { int x; char* p; };
-void foo() {
-  union U bar;
-  // CHECK: call void asm
-  __asm__ volatile("foo %0\n" :: "r"(bar));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-14-FNoBuiltin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-14-FNoBuiltin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-14-FNoBuiltin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -O2 -fno-builtin -o - | grep call.*printf
-// Check that -fno-builtin is honored.
-
-extern int printf(const char*, ...);
-void foo(const char *msg) {
-	printf("%s\n",msg);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-17-ZeroSizeBitFields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-17-ZeroSizeBitFields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-17-ZeroSizeBitFields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// PR 1332
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-
-struct Z { int a:1; int :0; int c:1; } z;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-VolatileStructCopy.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-VolatileStructCopy.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-VolatileStructCopy.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-// PR1352
-
-struct foo {
-  int x;
-};
-
-void copy(volatile struct foo *p, struct foo *q) {
-  // CHECK: call void @llvm.memcpy
-  *p = *q;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-bit-not-expr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-bit-not-expr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-bit-not-expr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// PR 1346
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-extern bar(void *);
-
-void f(void *cd) {
-  bar(((void *)((unsigned long)(cd) ^ -1)));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-str-const.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-str-const.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-04-24-str-const.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-static char *str;
-
-static const struct {
- const char *name;
- unsigned type;
-} scan_special[] = {
- {"shift", 1},
- {0, 0}
-};
-
-static void
-sb(void)
-{
- while (*str == ' ' || *str == '\t')
-  str++;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-07-PaddingElements.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-07-PaddingElements.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-07-PaddingElements.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// PR 1278
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | grep {struct.s} | not grep "4 x i8] zeroinitializer"
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | not grep "i32 0, i32 2"
-struct s {
-  double d1;
-  int s1;
-};
-
-struct s foo(void) {
-  struct s S = {1.1, 2};
-  return S;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-08-PCH.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-08-PCH.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-08-PCH.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// PR 1400
-// RUN: %clang_cc1 -x c-header %s -o /dev/null
-
-int main() {
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-11-str-const.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-11-str-const.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-11-str-const.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g %s  -o /dev/null
-
-static unsigned char out[]={0,1};
-static const unsigned char str1[]="1";
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-15-PaddingElement.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-15-PaddingElement.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-15-PaddingElement.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// PR 1419
-
-// RUN: %clang_cc1   -O2 %s -emit-llvm -o - | grep "ret i32 1"
-struct A {
-  short x;
-  long long :0;
-};
-
-struct B {
-  char a;
-  char b;
-  unsigned char i;
-};
-
-union X { struct A a; struct B b; };
-
-int check(void) {
-  union X x, y;
-
-  y.b.i = 0xff;
-  x = y;
-  return (x.b.i == 0xff);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-16-EmptyStruct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-16-EmptyStruct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-16-EmptyStruct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// PR 1417
-// RUN: %clang_cc1   %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: global %struct.anon* null
-struct { } *X;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-29-UnionCopy.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-29-UnionCopy.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-05-29-UnionCopy.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | grep memcpy
-// PR1421
-
-struct A {
-  char c;
-  int i;
-};
-
-struct B {
-  int c;
-  unsigned char x;
-};
-
-union U { struct A a; struct B b; };
-
-void check(union U *u, union U *v) {
-  *u = *v;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-05-NoInlineAttribute.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-05-NoInlineAttribute.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-05-NoInlineAttribute.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -O2 -emit-llvm %s -o - | grep call
-
-static int bar(int x, int y) __attribute__((noinline));
-
-static int bar(int x, int y)  
-{
- return x + y;
-}
-
-int foo(int a, int b) {
- return  bar(b, a);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-15-AnnotateAttribute.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-15-AnnotateAttribute.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-15-AnnotateAttribute.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep llvm.global.annotations
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep llvm.var.annotation | count 3
-
-/* Global variable with attribute */
-int X __attribute__((annotate("GlobalValAnnotation")));
-
-/* Function with attribute */
-int foo(int y) __attribute__((annotate("GlobalValAnnotation")))
-               __attribute__((noinline));
-
-int foo(int y __attribute__((annotate("LocalValAnnotation")))) {
-  int x __attribute__((annotate("LocalValAnnotation")));
-  x = 34;
-  return y + x;
-}
-
-int main() {
-  static int a __attribute__((annotate("GlobalValAnnotation")));
-  a = foo(2);
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-18-SextAttrAggregate.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-18-SextAttrAggregate.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-06-18-SextAttrAggregate.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -o - -emit-llvm | FileCheck %s
-// XFAIL: aarch64
-
-// PR1513
-
-// AArch64 ABI actually requires the reverse of what this is testing: the callee
-// does any extensions and remaining bits are unspecified.
-
-// Technically this test wasn't written to test that feature, but it's a
-// valuable check nevertheless.
-
-struct s{
-long a;
-long b;
-};
-
-void f(struct s a, char *b, signed char C) {
-  // CHECK: i8 signext
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-07-29-RestrictPtrArg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-07-29-RestrictPtrArg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-07-29-RestrictPtrArg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep noalias
-
-void foo(int * __restrict myptr1, int * myptr2) {
-  myptr1[0] = 0;
-  myptr2[0] = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-01-LoadStoreAlign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-01-LoadStoreAlign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-01-LoadStoreAlign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-struct p {
-  char a;
-  int b;
-} __attribute__ ((packed));
-
-struct p t = { 1, 10 };
-struct p u;
-
-int main () {
-  // CHECK: align 1
-  // CHECK: align 1
-  int tmp = t.b;
-  u.b = tmp;
-  return tmp;
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-21-ComplexCst.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-21-ComplexCst.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-21-ComplexCst.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -O2 -emit-llvm %s -o /dev/null
-void f(_Complex float z);
-void g() { f(1.0i); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-22-CTTZ.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-22-CTTZ.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-08-22-CTTZ.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-int bork(unsigned long long x) {
-  // CHECK: llvm.cttz.i64
-  // CHECK: llvm.cttz.i64
-  // CHECK-NOT: lshr
-  return __builtin_ctzll(x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-05-ConstCtor.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-05-ConstCtor.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-05-ConstCtor.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1  -Os -emit-llvm %s -o /dev/null
-// PR1641
-
-struct A {
-  unsigned long l;
-};
-
-void bar(struct A *a);
-
-void bork() {
-  const unsigned long vcgt = 1234;
-  struct A a = { vcgt };
-  bar(&a);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-12-PragmaPack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-12-PragmaPack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-12-PragmaPack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-
-#pragma pack(push, 1)
-typedef struct
-{
-        uint32_t        a;
-} foo;
-
-typedef struct {
-        uint8_t         major;
-        uint8_t         minor;
-        uint16_t        build;
-} VERSION;
-
-typedef struct {
-        uint8_t       a[5];
-        VERSION       version;
-        uint8_t       b;
-        foo           d;
-        uint32_t      guard;
-} bar;
-#pragma pack(pop)
-
-
-unsigned barsize(void) {
-  // CHECK: ret i32 18
-  return sizeof(bar);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-14-NegatePointer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-14-NegatePointer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-14-NegatePointer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - 
-// PR1662
-
-int foo(unsigned char *test) {
-  return 0U - (unsigned int )test;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-17-WeakRef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-17-WeakRef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-17-WeakRef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -O1 -emit-llvm %s -o - | grep icmp
-// PR1678
-
-extern void B (void);
-static __typeof(B) A __attribute__ ((__weakref__("B")));
-int active (void)
-{
-  static void *const p = __extension__ (void *) &A;
-  return p != 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-26-Alignment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-26-Alignment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-26-Alignment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-extern p(int *);
-int q(void) {
-  // CHECK: alloca i32, align 16
-  int x __attribute__ ((aligned (16)));
-  p(&x);
-  return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-27-ComplexIntCompare.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-27-ComplexIntCompare.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-27-ComplexIntCompare.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// PR1708
-
-void __attribute__((noreturn)) abort(void);
-
-struct s { _Complex unsigned short x; };
-struct s gs = { 100 + 200i };
-struct s __attribute__((noinline)) foo (void) { return gs; }
-
-int main ()
-{
-  if (foo ().x != gs.x)
-    abort ();
-  exit (0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-28-PackedUnionMember.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-28-PackedUnionMember.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-09-28-PackedUnionMember.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-#pragma pack(push, 2)
-struct H {
-  unsigned long f1;
-  unsigned long f2;
-  union {
-    struct opaque1 *f3;
-    struct opaque2 *f4;
-    struct {
-      struct opaque3 *f5;
-      unsigned short  f6;
-    } f7;
-  } f8;
-};
-#pragma pack(pop)
-
-struct E {
-  unsigned long f1;
-  unsigned long f2;
-};
-
-typedef long (*FuncPtr) ();
-
-extern long bork(FuncPtr handler, const struct E *list);
-
-static long hndlr()
-{
-  struct H cmd = { 4, 412 };
-  struct H cmd2 = { 4, 412, 0 };
-  return 0;
-}
-void foo(void *inWindow) {
-  static const struct E events[] = {
-    { 123124, 1 }
-  };
-  bork(hndlr, events);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-02-VolatileArray.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-02-VolatileArray.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-02-VolatileArray.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep volatile
-// PR1647
-
-void foo(volatile int *p)
-{
-p[0] = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-15-VoidPtr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-15-VoidPtr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-15-VoidPtr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-void bork(void **data) {
-  (*(unsigned short *) (&(data[37])[927]) = 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-30-Volatile.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-30-Volatile.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-10-30-Volatile.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null -Wall -Werror
-void bork() {
-  char * volatile p = 0;
-  volatile int cc = 0;
-  p += cc;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-AlignedMemcpy.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-AlignedMemcpy.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-AlignedMemcpy.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-void bork() {
-  int Qux[33] = {0};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-CopyAggregateAlign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-CopyAggregateAlign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-CopyAggregateAlign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-struct A { char s, t, u, v; short a; };
-// CHECK: %a = alloca %struct.A, align 2
-// CHECK: %b = alloca %struct.A, align 2
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.{{.*}}, i32 2, i1 false)
-
-void q() { struct A a, b; a = b; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-ZeroAggregateAlign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-ZeroAggregateAlign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-07-ZeroAggregateAlign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-struct A { short s; short t; int i; };
-// CHECK: %a = alloca %struct.A, align 4
-// CHECK: call void @llvm.memset.p0i8.{{.*}}i32 4, i1 false)
-void q() { struct A a = {0}; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-28-GlobalInitializer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-28-GlobalInitializer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-28-GlobalInitializer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - 
-// PR1744
-typedef struct foo { int x; char *p; } FOO;
-extern FOO yy[];
-
-int *y = &((yy + 1)->x);
-void *z = &((yy + 1)->x);
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-11-29-ArraySizeFromInitializer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-int array[] = {1, 2, 3, 4, 5};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2007-12-16-AsmNoUnwind.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2007-12-16-AsmNoUnwind.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2007-12-16-AsmNoUnwind.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | grep nounwind
-
-void bar() { asm (""); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-04-WideBitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-04-WideBitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-04-WideBitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-// PR1386
-typedef unsigned long long uint64_t;
-struct X {
-  unsigned char pad : 4;
-  uint64_t a : 64;
-} __attribute__((packed)) x;
-
-uint64_t f(void)
-{
-  return x.a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-07-UnusualIntSize.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-07-UnusualIntSize.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-07-UnusualIntSize.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// FIXME: 32-bit target?
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-// PR1721
-
-struct s {
-  unsigned long long u33: 33;
-} a, b;
-
-// This should have %0 and %1 truncated to 33 bits before any operation.
-// This can be done using i33 or an explicit and.
-_Bool test(void) {
-  // CHECK: and i64 %[[TMP1:[^,]+]], 8589934591
-  // CHECK-NOT: and i64 [[TMP1]], 8589934591
-  // CHECK: and i64 %{{[^,]+}}, 8589934591
-  return a.u33 + b.u33 != 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-11-ChainConsistency.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-11-ChainConsistency.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-11-ChainConsistency.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -fnested-functions | not grep nest
-
-void n1(void) { void a(void) { a(); } a(); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-21-PackedBitFields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-21-PackedBitFields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-21-PackedBitFields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-typedef double Al1Double __attribute__((aligned(1)));
-struct x { int a:23; Al1Double v; };
-struct x X = { 5, 3.0 };
-double foo() { return X.v; }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-21-PackedStructField.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-21-PackedStructField.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-21-PackedStructField.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-struct X { long double b; unsigned char c; double __attribute__((packed)) d; };
-struct X x = { 3.0L, 5, 3.0 };
-
-
-struct S2504 {
-  int e:17;
-    __attribute__((packed)) unsigned long long int f; 
-} ;
-int fails;
- extern struct S2504 s2504; 
-void check2504va (int z) { 
-  struct S2504 arg, *p;
-  long long int i = 0; 
-  arg.f = i;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-24-StructAlignAndBitFields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-24-StructAlignAndBitFields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-24-StructAlignAndBitFields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-struct U { char a; short b; int c:25; char d; } u;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-25-ByValReadNone.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-25-ByValReadNone.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-25-ByValReadNone.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// XFAIL: mips
-
-// CHECK-NOT: readonly
-// CHECK-NOT: readnone
-
-// The struct being passed byval means that we cannot mark the
-// function readnone.  Readnone would allow stores to the arg to
-// be deleted in the caller.  We also don't allow readonly since
-// the callee might write to the byval parameter.  The inliner
-// would have to assume the worse and introduce an explicit
-// temporary when inlining such a function, which is costly for
-// the common case in which the byval argument is not written.
-struct S { int A[1000]; };
-int __attribute__ ((const)) f(struct S x) { x.A[1] = 0; return x.A[0]; }
-int g(struct S x) __attribute__ ((pure));
-int h(struct S x) { return g(x); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-25-ZeroSizedAggregate.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-// REQUIRES: LP64
-
-// Aggregates of size zero should be dropped from argument list.
-typedef long int Tlong;
-struct S2411 {
-  __attribute__((aligned)) Tlong:0;
-};
-
-extern struct S2411 a2411[5];
-extern void checkx2411(struct S2411);
-void test2411(void) {
-  checkx2411(a2411[0]);
-}
-
-// Proper handling of zero sized fields during type conversion.
-typedef unsigned long long int Tal2ullong __attribute__((aligned(2)));
-struct S2525 {
- Tal2ullong: 0;
- struct {
- } e;
-};
-struct S2525 s2525;
-
-struct {
-  signed char f;
-  char :0;
-  struct{}h;
-  char * i[5];
-} data; 
-
-// Taking address of a zero sized field.
-struct Z {};
-struct Y {
-  int i;
-  struct Z z;
-};
-void *f(struct Y *y) {
-  return &y->z;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-28-PragmaMark.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-28-PragmaMark.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-28-PragmaMark.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -Werror -emit-llvm %s -o /dev/null
-#pragma mark LLVM's world
-#ifdef DO_ERROR
-#error LLVM's world
-#endif
-int i;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-28-UnionSize.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-28-UnionSize.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-01-28-UnionSize.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-// PR 1861
-
-typedef unsigned char __u8;
-typedef unsigned int __u32;
-typedef unsigned short u16;
-typedef __u32 __le32;
-struct bcm43xx_plcp_hdr6 {
-  union {
-    __le32 data;
-    __u8 raw[6];
-  }
-    __attribute__((__packed__));
-}
-  __attribute__((__packed__));
-struct bcm43xx_txhdr {
-  union {
-    struct {
-      struct bcm43xx_plcp_hdr6 plcp;
-    };
-  };
-}
-  __attribute__((__packed__));
-static void bcm43xx_generate_rts(struct bcm43xx_txhdr *txhdr ) { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-07-bitfield-bug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-07-bitfield-bug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-07-bitfield-bug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-// PR1990
-
-struct test {
-  char a[3];
-  unsigned char b:1;
-};
-
-void f(struct test *t) {
-  t->b = 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-08-bitfield-bug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-08-bitfield-bug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-08-bitfield-bug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-struct test {
-  unsigned a:1;
-  unsigned b:1;
-};
-
-struct test *t;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-26-inline-asm-bug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-26-inline-asm-bug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-02-26-inline-asm-bug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep "\$0,\$1"
-
-void f() {
-  int d1, d2;
-  asm("%0,%1": "=r" (d1) : "r" (d2));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-03-CtorAttrType.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-03-CtorAttrType.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-03-CtorAttrType.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | grep llvm.global_ctors
-int __attribute__((constructor)) foo(void) {
-  return 0;
-}
-void __attribute__((constructor)) bar(void) {}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-05-syncPtr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-05-syncPtr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-05-syncPtr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s
-
-int* foo(int** a, int* b, int* c) {
-return __sync_val_compare_and_swap (a, b, c);
-}
-// CHECK: define i32* @foo
-// CHECK: cmpxchg 
-
-int foo2(int** a, int* b, int* c) {
-return __sync_bool_compare_and_swap (a, b, c);
-}
-// CHECK: define i32 @foo2
-// CHECK: cmpxchg
-
-int* foo3(int** a, int b) {
-  return __sync_fetch_and_add (a, b);
-}
-// CHECK: define i32* @foo3
-// CHECK: atomicrmw add
-
-
-int* foo4(int** a, int b) {
-  return __sync_fetch_and_sub (a, b);
-}
-// CHECK: define i32* @foo4
-// CHECK: atomicrmw sub
-
-
-int* foo5(int** a, int* b) {
-  return __sync_lock_test_and_set (a, b);
-}
-// CHECK: define i32* @foo5
-// CHECK: atomicrmw xchg
-
-
-int* foo6(int** a, int*** b) {
-  return __sync_lock_test_and_set (a, b);
-}
-// CHECK: define i32* @foo6
-// CHECK: atomicrmw xchg

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-24-BitField-And-Alloca.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-24-BitField-And-Alloca.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-24-BitField-And-Alloca.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -O2 -emit-llvm %s -o - | not grep alloca
-// RUN: %clang_cc1 -m32 -O2 -emit-llvm %s -o - | not grep {store }
-
-enum {
- PP_C,
- PP_D,
- PP_R,
- PP_2D,
- PP_1D,
- PP_SR,
- PP_S2D,
- PP_S1D,
- PP_SC
-};
-
-enum {
- G_VP,
- G_FP,
- G_VS,
- G_GS,
- G_FS
-};
-
-enum {
- G_NONE,
- G_B,
- G_R
-};
-
-typedef union _Key {
- struct {
-  unsigned int count : 2;
-  unsigned int Aconst : 1;
-  unsigned int Bconst : 1;
-  unsigned int Cconst : 1;
-  unsigned int Xused : 1;
-  unsigned int Yused : 1;
-  unsigned int Zused : 1;
-  unsigned int Wused : 1;
-  unsigned int ttype : 3;
-  unsigned int scalar : 1;
-  unsigned int AType : 4;
-  unsigned int BType : 4;
-  unsigned int CType : 4;
-  unsigned int RType : 4;
-  unsigned int Size : 2;
-  unsigned int prec : 1;
-
-  unsigned int ASize : 2;
-  unsigned int BSize : 2;
-  unsigned int CSize : 2;
-  unsigned int tTex : 4;
-  unsigned int proj : 1;
-  unsigned int lod : 2;
-  unsigned int dvts : 1;
-  unsigned int uipad : 18;
- } key_io;
- struct {
-  unsigned int key0;
-  unsigned int key1;
- } key;
- unsigned long long lkey;
-} Key;
-
-static void foo(const Key iospec, int* ret)
-{
-  *ret=0;
- if(((iospec.key_io.lod == G_B) &&
-  (iospec.key_io.ttype != G_VS) &&
-  (iospec.key_io.ttype != G_GS) &&
-  (iospec.key_io.ttype != G_FS)) ||
-
-  (((iospec.key_io.tTex == PP_C) ||
-    (iospec.key_io.tTex == PP_SC)) &&
-   ((iospec.key_io.tTex == PP_SR) ||
-    (iospec.key_io.tTex == PP_S2D) ||
-    (iospec.key_io.tTex == PP_S1D) ||
-    (iospec.key_io.tTex == PP_SC))))
-  *ret=1;
-}
-
-
-extern int bar(unsigned long long key_token2)
-{
- int ret;
- __attribute__ ((unused)) Key iospec = (Key) key_token2;
- foo(iospec, &ret);
- return ret;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-26-PackedBitFields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-26-PackedBitFields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-03-26-PackedBitFields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-
-struct S1757 { 
-  long double c;
-  long int __attribute__((packed)) e:28;
-} x;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-04-08-NoExceptions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-04-08-NoExceptions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-04-08-NoExceptions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s
-
-void f(void);
-void g(void) {
-  // CHECK: define void @g() [[NUW:#[0-9]+]]
-  // CHECK-NOT: call void @f() nounwind
-  f();
-}
-
-// CHECK-NOT: declare void @f() [[NUW]]
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-06-CFECrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-06-CFECrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-06-CFECrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -O2 %s -o /dev/null
-// PR2292.
-__inline__ __attribute__ ((__pure__)) int g (void) {}
-void f (int k) { k = g (); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-12-TempUsedBeforeDef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-12-TempUsedBeforeDef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-12-TempUsedBeforeDef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -w -emit-llvm -o /dev/null %s
-// PR2264.
-unsigned foo = 8L;
-unsigned bar = 0L;
-volatile unsigned char baz = 6L;
-int test() {
-  char qux = 1L;
-  for (; baz >= -29; baz--)
-    bork(bar && foo, qux);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-19-AlwaysInline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-19-AlwaysInline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-05-19-AlwaysInline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -fno-unit-at-a-time -O0 -o - | not grep sabrina
-// RUN: %clang_cc1 %s -emit-llvm -funit-at-a-time -O0 -o - | not grep sabrina
-
-static inline int sabrina (void) __attribute__((always_inline));
-static inline int sabrina (void)
-{
-  return 13;
-}
-int bar (void)
-{
-  return sabrina () + 68;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-17-no-emit-on-error.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-17-no-emit-on-error.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-17-no-emit-on-error.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: rm -f %t1.bc
-// RUN: %clang_cc1 -DPASS %s -emit-llvm-bc -o %t1.bc
-// RUN: opt %t1.bc -disable-output
-// RUN: rm -f %t1.bc
-// RUN: not %clang_cc1 %s -emit-llvm-bc -o %t1.bc
-// RUN: not opt %t1.bc -disable-output
-
-void f() {
-}
-
-#ifndef PASS
-void g() {
-  *10;
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-21-mixed-var-fn-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-int g0, f0();
-int f1(), g1;
-
-// CHECK: @g0 = common global i32 0, align 4
-// CHECK: @g1 = common global i32 0, align 4
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-22-bitfield-init-after-zero-len-array.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-apple-darwin9 -emit-llvm -o - %s | FileCheck %s
-
-struct et7 {
-  float lv7[0];
-  char mv7:6;
-} yv7 = {
-  {}, 
-  52, 
-};
-
-// CHECK: @yv7 = global 
-// CHECK: i8 52,

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-22-packed-bitfield-access.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-22-packed-bitfield-access.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-22-packed-bitfield-access.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-int main () {
-  struct foo {
-    unsigned a:16;
-    unsigned b:32 __attribute__ ((packed));
-  } x;
-  x.b = 0x56789abcL;
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-29-override-alias-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-29-override-alias-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-29-override-alias-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-int x() { return 1; }
-
-// CHECK:  ret i32 1
-
-
-int f() __attribute__((weak, alias("x")));
-
-/* Test that we link to the alias correctly instead of making a new
-   forward definition. */
-int f();
-int h() {
-  return f();
-}
-
-// CHECK:  [[call:%.*]] = call i32 (...)* @f()
-// CHECK:  ret i32 [[call]]
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-30-implicit-initialization.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-30-implicit-initialization.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-30-implicit-initialization.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O1 -emit-llvm -o - %s | FileCheck %s
-// CHECK: define i32 @f0()
-// CHECK:   ret i32 0
-// CHECK: define i32 @f1()
-// CHECK:   ret i32 0
-// CHECK: define i32 @f2()
-// CHECK:   ret i32 0
-// <rdar://problem/6113085>
-
-struct s0 {
-  int x, y;
-};
-
-int f0() {
-  struct s0 x = {0};
-  return x.y;
-}
-
-int f1() {
-  struct s0 x[2] = { {0} };
-  return x[1].x;
-}
-
-int f2() {
-  int x[2] = { 0 };
-  return x[1];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-// <rdar://problem/6108358>
-
-/* For posterity, the issue here begins initial "char []" decl for
- * s. This is a tentative definition and so a global was being
- * emitted, however the mapping in GlobalDeclMap referred to a bitcast
- * of this global.
- *
- * The problem was that later when the correct definition for s is
- * emitted we were doing a RAUW on the old global which was destroying
- * the bitcast in the GlobalDeclMap (since it cannot be replaced
- * properly), leaving a dangling pointer.
- *
- * The purpose of bar is just to trigger a use of the old decl
- * sometime after the dangling pointer has been introduced.
- */
-
-char s[];
-
-static void bar(void *db) {
-  eek(s);
-}
-
-char s[5] = "hi";
-
-int foo() {
-  bar(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-31-asm-labels.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-31-asm-labels.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-31-asm-labels.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: grep "@pipe()" %t | count 0
-// RUN: grep '_thisIsNotAPipe' %t | count 3
-// RUN: grep 'g0' %t | count 0
-// RUN: grep '_renamed' %t | count 2
-// RUN: %clang_cc1 -DUSE_DEF -emit-llvm -o %t %s
-// RUN: grep "@pipe()" %t | count 0
-// RUN: grep '_thisIsNotAPipe' %t | count 3
-// <rdr://6116729>
-
-void pipe() asm("_thisIsNotAPipe");
-
-void f0() {
-  pipe();
-}
-
-void pipe(int);
-
-void f1() {
-  pipe(1);
-}
-
-#ifdef USE_DEF
-void pipe(int arg) {
-  int x = 10;
-}
-#endif
-
-// PR3698
-extern int g0 asm("_renamed");
-int f2() {
-  return g0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-07-31-promotion-of-compound-pointer-arithmetic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O1 -emit-llvm -o - %s | FileCheck %s
-// CHECK: define i32 @f0
-// CHECK:   ret i32 1
-// CHECK: define i32 @f1
-// CHECK:   ret i32 1
-// CHECK: define i32 @f2
-// CHECK:   ret i32 1
-// <rdr://6115726>
-
-int f0() {
-  int x;
-  unsigned short n = 1;
-  int *a = &x;
-  int *b = &x;
-  a = a - n;
-  b -= n;
-  return a == b;
-}
-
-int f1(int *a) {
-  long b = a - (int*) 1;
-  a -= (int*) 1;
-  return b == (long) a;
-}
-
-int f2(long n) {
-  int *b = n + (int*) 1;
-  n += (int*) 1;
-  return b == (int*) n;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-04-void-pointer-arithmetic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-04-void-pointer-arithmetic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-04-void-pointer-arithmetic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-// <rdar://problem/6122967>
-
-int f0(void *a, void *b) {
-  return a - b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-AlignPadding1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-AlignPadding1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-AlignPadding1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-/* RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-darwin -o - | FileCheck %s
-
-The FE must generate padding here both at the end of each PyG_Head and
-between array elements.  Reduced from Python. */
-
-typedef union _gc_head {
-  struct {
-    union _gc_head *gc_next;
-    union _gc_head *gc_prev;
-    long gc_refs;
-  } gc;
-  int dummy __attribute__((aligned(16)));
-} PyGC_Head;
-
-struct gc_generation {
-  PyGC_Head head;
-  int threshold;
-  int count;
-};
-
-#define GEN_HEAD(n) (&generations[n].head)
-
-// The idea is that there are 6 undefs in this structure initializer to cover
-// the padding between elements.
-// CHECK: @generations = global [3 x %struct.gc_generation] [%struct.gc_generation { %union._gc_head { %struct.anon { %union._gc_head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 0), %union._gc_head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 0), i64 0 }, [8 x i8] undef }, i32 700, i32 0, [8 x i8] undef }, %struct.gc_generation { %union._gc_head { %struct.anon { %union._gc_head* bitcast (i8* getelementptr (i8* bitcast ([3 x %struct.gc_generation]* @generations to i8*), i64 48) to %union._gc_head*), %union._gc_head* bitcast (i8* getelementptr (i8* bitcast ([3 x %struct.gc_generation]* @generations to i8*), i64 48) to %union._gc_head*), i64 0 }, [8 x i8] undef }, i32 10, i32 0, [8 x i8] undef }, %struct.gc_generation { %union._gc_head { %struct.anon { %union._gc_head* bitcast (i8* getelementptr (i8* bitcast ([3 x %struct.gc_generation]* @generations to i8*), i64 96) to %union._gc_head*), %union._gc_head* bitcast (i8* getelementptr (i8* bitcast ([3 x %struct.gc_generation]* @generations to i8*), i64 96) to %union._gc_head*), i64 0 }, [8 x i8] undef }, i32 10, i32 0, [8 x i8] undef }]
-/* linked lists of container objects */
-struct gc_generation generations[3] = {
-        /* PyGC_Head,                           threshold,      count */
-        {{{GEN_HEAD(0), GEN_HEAD(0), 0}},       700,            0},
-        {{{GEN_HEAD(1), GEN_HEAD(1), 0}},       10,             0},
-        {{{GEN_HEAD(2), GEN_HEAD(2), 0}},       10,             0},
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-AlignPadding2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-AlignPadding2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-AlignPadding2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-/* RUN: %clang_cc1 %s -emit-llvm -o - -O0 | grep zeroinitializer | count 1
-
-The FE must not generate padding here between array elements.  PR 2533. */
-
-typedef struct {
- const char *name;
- int flags;
- union {
-   int x;
- } u;
-} OptionDef;
-
-const OptionDef options[] = {
- /* main options */
- { "a", 0, {3} },
- { "b", 0, {4} },
- { 0, },
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-GEPIntToPtr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-GEPIntToPtr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-07-GEPIntToPtr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-// PR2603
-
-struct A {
-  char num_fields;
-};
-
-struct B {
-  char a, b[1];
-};
-
-const struct A Foo = {
-  // CHECK: i8 1
-  (char *)(&( (struct B *)(16) )->b[0]) - (char *)(16)
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-19-cast-of-typedef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-19-cast-of-typedef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-08-19-cast-of-typedef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
-typedef short T[4];
-struct s {
-  T f0;
-};
-
-void foo(struct s *x) {
-  bar((long) x->f0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-09-03-WeakAlias.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-09-03-WeakAlias.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-09-03-WeakAlias.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -O1 -o - %s | grep icmp
-// PR1678
-extern void B (void);
-static __typeof(B) A __attribute__ ((__weakref__("B")));
-int active (void)
-{
-  static void *const p = __extension__ (void *) &A;
-  return p != 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-09-22-bad-switch-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-09-22-bad-switch-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-09-22-bad-switch-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// PR2817
-
-void f0(void) {
-  switch (0) {
-  case (unsigned long long) 0 < 0: 
-    break;
-  }
-
-  switch (0) {
-  case (unsigned long long) 0 > 0: 
-    break;
-  }
-
-  switch (0) {
-  case (unsigned long long) 0 <= 0: 
-    break;
-  }
-
-  switch (0) {
-  case (unsigned long long) 0 >= 0: 
-    break;
-  }
-
-  switch (0) {
-  case (unsigned long long) 0 == 0: 
-    break;
-  }
-
-  switch (0) {
-  case (unsigned long long) 0 != 0: 
-    break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-10-13-FrontendCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-10-13-FrontendCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-10-13-FrontendCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-// PR2797
-
-unsigned int
-func_48 (signed char p_49)
-{
-  signed char l_340;
-  func_44 (1&((1 ^ 1 == (lshift_u_s (1)) != (l_340 < 1)) & 1L));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-10-30-ZeroPlacement.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-10-30-ZeroPlacement.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-10-30-ZeroPlacement.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// PR2987
-struct S2045
-{
-  unsigned short int a;
-  union { } b;
-  union __attribute__ ((aligned (4))) { } c[0];
-};
-struct S2045 s2045;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-11-02-WeakAlias.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-11-02-WeakAlias.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-11-02-WeakAlias.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s
-// PR2691
-
-// CHECK: weak
-void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ")));
-void native_init_IRQ(void) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-11-08-InstCombineSelect.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-11-08-InstCombineSelect.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-11-08-InstCombineSelect.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O2 -o -
-// PR3028
-
-int g_187;
-int g_204;
-int g_434;
-
-int func_89 (void)
-{
-  return 1;
-}
-
-void func_20 (int p_22)
-{
-  if (1 & p_22 | g_204 & (1 < g_187) - func_89 ())
-    g_434 = 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2008-12-23-AsmIntPointerTie.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2008-12-23-AsmIntPointerTie.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2008-12-23-AsmIntPointerTie.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O1 -o -
-// REQUIRES: LP64
-
-typedef long intptr_t;
-int test(void *b) {
- intptr_t a;
- __asm__ __volatile__ ("%0 %1 " : "=r" (a): "0" (b));
-  return a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-01-05-BlockInlining.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-01-05-BlockInlining.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-01-05-BlockInlining.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -fblocks -o - | FileCheck %s
-// rdar://5865221
-
-// These will be inlined by the optimizers provided the block descriptors
-// and block literals are internal constants.
-// CHECK: @__block_descriptor_tmp = internal constant
-// CHECK: @__block_literal_global = internal constant
-// CHECK: @__block_descriptor_tmp1 = internal constant
-// CHECK: @__block_literal_global2 = internal constant
-static int fun(int x) {
-	return x+1;
-}
-
-static int block(int x) {
-	return (^(int x){return x+1;})(x);
-}
-
-static void print(int result) {
-    printf("%d\n", result);
-}
-
-int main (int argc, const char * argv[]) {
-    int	x = argc-1;
-    print(fun(x));
-    print(block(x));
-    int	(^block_inline)(int) = ^(int x){return x+1;};
-    print(block_inline(x));
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-01-21-InvalidIterator.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-01-21-InvalidIterator.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-01-21-InvalidIterator.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -g -o /dev/null
-
-typedef long unsigned int size_t;
-typedef unsigned short int uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long int uint64_t;
-typedef uint16_t Elf64_Half;
-typedef uint32_t Elf64_Word;
-typedef uint64_t Elf64_Xword;
-typedef uint64_t Elf64_Addr;
-typedef uint64_t Elf64_Off;
-typedef struct
-{
-  Elf64_Word p_type;
-  Elf64_Off p_offset;
-  Elf64_Addr p_vaddr;
-  Elf64_Xword p_align;
-}
-Elf64_Phdr;
-struct dl_phdr_info
-{
-  const char *dlpi_name;
-  const Elf64_Phdr *dlpi_phdr;
-  Elf64_Half dlpi_phnum;
-  unsigned long long int dlpi_adds;
-};
-typedef unsigned _Unwind_Ptr;
-struct object
-{
-  union
-  {
-    const struct dwarf_fde *single;
-    struct dwarf_fde **array;
-    struct fde_vector *sort;
-  }
-  u;
-  union
-  {
-    struct
-    {
-    }
-    b;
-  }
-  s;
-  struct object *next;
-};
-typedef int sword;
-typedef unsigned int uword;
-struct dwarf_fde
-{
-  uword length;
-  sword CIE_delta;
-  unsigned char pc_begin[];
-};
-typedef struct dwarf_fde fde;
-struct unw_eh_callback_data
-{
-  const fde *ret;
-  struct frame_hdr_cache_element *link;
-}
-frame_hdr_cache[8];
-
-_Unwind_Ptr
-base_from_cb_data (struct unw_eh_callback_data *data)
-{
-}
-
-void
-_Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
-{
-  const unsigned char *p;
-  const struct unw_eh_frame_hdr *hdr;
-  struct object ob;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-02-13-zerosize-union-field-ppc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-02-13-zerosize-union-field-ppc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-02-13-zerosize-union-field-ppc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// REQUIRES: ppc32-registered-target
-// RUN: %clang_cc1 %s -triple powerpc-pc-linux -emit-llvm -o - | grep {i32 32} | count 3
-// XFAIL: *
-//  Every printf has 'i32 0' for the GEP of the string; no point counting those.
-typedef unsigned int Foo __attribute__((aligned(32)));
-typedef union{Foo:0;}a;
-typedef union{int x; Foo:0;}b;
-extern int printf(const char*, ...);
-main() {
-  printf("%ld\n", sizeof(a));
-  printf("%ld\n", __alignof__(a));
-  printf("%ld\n", sizeof(b));
-  printf("%ld\n", __alignof__(b));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-02-13-zerosize-union-field.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-02-13-zerosize-union-field.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-02-13-zerosize-union-field.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -triple i686-apple-darwin -emit-llvm -o - | FileCheck %s
-// Every printf has 'i32 0' for the GEP of the string; no point counting those.
-typedef unsigned int Foo __attribute__((aligned(32)));
-typedef union{Foo:0;}a;
-typedef union{int x; Foo:0;}b;
-extern int printf(const char*, ...);
-int main() {
-  // CHECK: getelementptr inbounds ([5 x i8]* @.str, i32 0, i32 0), i32 0
-  printf("%ld\n", sizeof(a));
-  // CHECK: getelementptr inbounds ([5 x i8]* @.str, i32 0, i32 0), i32 1
-  printf("%ld\n", __alignof__(a));
-  // CHECK: getelementptr inbounds ([5 x i8]* @.str, i32 0, i32 0), i32 4
-  printf("%ld\n", sizeof(b));
-  // CHECK: getelementptr inbounds ([5 x i8]* @.str, i32 0, i32 0), i32 4
-  printf("%ld\n", __alignof__(b));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-01-MallocNoAlias.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-01-MallocNoAlias.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-01-MallocNoAlias.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | grep noalias
-
-void * __attribute__ ((malloc)) foo (void) { return 0; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-08-ZeroEltStructCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-08-ZeroEltStructCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-08-ZeroEltStructCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - 
-// PR3744
-struct Empty {};
-struct Union {
- union {
-   int zero_arr[0];
- } contents;
-};
-static inline void Foo(struct Union *u) {
- int *array = u->contents.zero_arr;
-}
-static void Bar(struct Union *u) {
- Foo(u);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-13-dbg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-13-dbg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-13-dbg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -g -o /dev/null
-void foo() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-22-increment-bitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-22-increment-bitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-03-22-increment-bitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -O1 < %s | grep "ret i32 0"
-
-int a(void) {
-  return ++(struct x {unsigned x : 2;}){3}.x;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-04-23-dbg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-04-23-dbg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-04-23-dbg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -S -g -o %t %s
-# 1 "a.c"
-# 1 "a.c" 1
-# 1 "<built-in>" 1
-# 103 "<built-in>"
-# 103 "<command line>" 1
-
-# 1 "/private/tmp/a.h" 1
-int bar;
-# 105 "<command line>" 2
-# 105 "<built-in>" 2
-# 1 "a.c" 2
-# 1 "/private/tmp/a.h" 1
-int bar;
-# 2 "a.c" 2
-
-int main() {
- bar = 0;
- return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-04-28-UnionArrayCrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-04-28-UnionArrayCrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-04-28-UnionArrayCrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - 
-// PR4082
-union U {
-  int I;
-  double F;
-};
-
-union U arr[] = { { .I = 4 }, { .F = 123.} };
-union U *P = &arr[0];
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-04-EnumInreg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-04-EnumInreg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-04-EnumInreg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i686-apple-darwin -mregparm 3 %s -o - | FileCheck %s
-// PR3967
-
-enum kobject_action {
-        KOBJ_ADD,
-        KOBJ_REMOVE,
-        KOBJ_CHANGE,
-        KOBJ_MOVE,
-        KOBJ_ONLINE,
-        KOBJ_OFFLINE,
-        KOBJ_MAX
-};
-
-struct kobject;
-
-// CHECK: i32 inreg %action
-int kobject_uevent(struct kobject *kobj, enum kobject_action action) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-22-callingconv.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-22-callingconv.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-22-callingconv.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple i386-unknown-unknown | grep call | grep x86_stdcallcc
-void abort(void) __attribute__((__noreturn__));
-typedef void re_string_t;
-typedef void re_dfa_t;
-typedef int reg_errcode_t;
-static reg_errcode_t re_string_construct (re_string_t *pstr, const char *str,
-       int len, char * trans,
-       int icase, const re_dfa_t *dfa)
-     __attribute__ ((regparm (3), stdcall));
-static reg_errcode_t
-re_string_construct (pstr, str, len, trans, icase, dfa)
-     re_string_t *pstr;
-     const char *str;
-     int len, icase;
-     char * trans;
-     const re_dfa_t *dfa;
-{
-        if (dfa != (void*)0x282020c0)
-                abort();
-return 0;
-}
-int main()
-{
-  return re_string_construct(0, 0, 0, 0, 0, (void*)0x282020c0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-28-const-typedef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-28-const-typedef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-05-28-const-typedef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// PR4281
-
-typedef struct {
-        int i;
-} something;
-
-typedef const something const_something;
-
-something fail(void);
-
-int
-main(int argc, char *argv[])
-{
-        const_something R = fail();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-01-addrofknr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-01-addrofknr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-01-addrofknr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -o %t -emit-llvm -verify
-// expected-no-diagnostics
-// PR4289
-
-struct funcptr {
-  int (*func)();
-};
-
-static int func(f)
-  void *f;
-{
-  return 0;
-}
-
-int
-main(int argc, char *argv[])
-{
-  struct funcptr fp;
-
-  fp.func = &func;
-  fp.func = func;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-14-HighlyAligned.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-14-HighlyAligned.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-14-HighlyAligned.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-// PR4332
-
-static int highly_aligned __attribute__((aligned(4096)));
-
-int f() {
-	return highly_aligned;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-14-anonymous-union-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-14-anonymous-union-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-14-anonymous-union-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep "zeroinitializer, i16 16877"
-// PR4390
-struct sysfs_dirent {
- union { struct sysfs_elem_dir {} s_dir; };
- unsigned short s_mode;
-};
-struct sysfs_dirent sysfs_root = { {}, 16877 };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-18-StaticInitTailPadPack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-18-StaticInitTailPadPack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-06-18-StaticInitTailPadPack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-// rdar://6983634
-
-  typedef struct A *Foo;
-#pragma pack(push, 2)
-  struct Bar {
-    Foo             f1;
-    unsigned short  f2;
-    float           f3;
-  };
-  struct Baz {
-    struct Bar   f1;
-    struct Bar   f2;
-  };
-  struct Qux {
-    unsigned long   f1;
-    struct Baz             f2;
-  };
-extern const struct Qux Bork;
-const struct Qux Bork = {
-  0,
-  {
-    {0},
-    {0}
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-14-VoidPtr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-14-VoidPtr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-14-VoidPtr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// PR4556
-
-extern void foo;
-void *bar = &foo;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-15-pad-wchar_t-array.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-15-pad-wchar_t-array.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-15-pad-wchar_t-array.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-// This bit is taken from Sema/wchar.c so we can avoid the wchar.h include.
-typedef __WCHAR_TYPE__ wchar_t;
-#if defined(_WIN32) || defined(_M_IX86) || defined(__CYGWIN__) \
-  || defined(_M_X64) || defined(SHORT_WCHAR)
-  #define WCHAR_T_TYPE unsigned short
-#elif defined(__sun) || defined(__AuroraUX__)
-  #define WCHAR_T_TYPE long
-#else /* Solaris or AuroraUX. */
-  #define WCHAR_T_TYPE int
-#endif
-
-signed short _iodbcdm_sqlerror( )
-{
-  wchar_t _sqlState[6] = { L"\0" };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-22-StructLayout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-22-StructLayout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-22-StructLayout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 %s -triple i686-pc-linux-gnu -emit-llvm -o /dev/null
-// PR4590
-
-typedef unsigned char __u8;
-typedef unsigned int __le32;
-typedef unsigned int __u32;
-typedef unsigned short __le16;
-typedef unsigned short __u16;
-
-struct usb_cdc_ether_desc {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDescriptorSubType;
-
- __u8 iMACAddress;
- __le32 bmEthernetStatistics;
- __le16 wMaxSegmentSize;
- __le16 wNumberMCFilters;
- __u8 bNumberPowerFilters;
-} __attribute__ ((packed));
-
-
-static struct usb_cdc_ether_desc ecm_desc __attribute__ ((__section__(".init.data"))) = {
- .bLength = sizeof ecm_desc,
- .bDescriptorType = ((0x01 << 5) | 0x04),
- .bDescriptorSubType = 0x0f,
-
-
-
- .bmEthernetStatistics = (( __le32)(__u32)(0)),
- .wMaxSegmentSize = (( __le16)(__u16)(1514)),
- .wNumberMCFilters = (( __le16)(__u16)(0)),
- .bNumberPowerFilters = 0,
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-31-DbgDeclare.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-31-DbgDeclare.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-07-31-DbgDeclare.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -S -g -o %t.s %s
-void foo() {
-     int i = 0;
-     i = 42;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-08-14-vararray-crash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-08-14-vararray-crash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-08-14-vararray-crash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s
-
-void sum1(int rb) {
-  typedef unsigned char imgrow[rb];
-  typedef imgrow img[rb];
-
-  const img *br;
-  int y;
-
-  (*br)[y];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-09-24-SqrtErrno.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-09-24-SqrtErrno.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-09-24-SqrtErrno.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - -fmath-errno | FileCheck %s
-// llvm.sqrt has undefined behavior on negative inputs, so it is
-// inappropriate to translate C/C++ sqrt to this.
-
-float sqrtf(float x);
-float foo(float X) {
-// CHECK: foo
-// CHECK-NOT: readonly
-// CHECK: call float @sqrtf
-  // Check that this is not marked readonly when errno is used.
-  return sqrtf(X);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-10-20-GlobalDebug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-10-20-GlobalDebug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-10-20-GlobalDebug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// REQUIRES: x86-registered-target
-// RUN: %clang -target i386-apple-darwin10 -flto -S -g %s -o - | FileCheck %s
-int global;
-int main() { 
-  static int localstatic;
-  return 0;
-}
-
-// CHECK: metadata !{i32 {{.*}}, i32 0, metadata !{{.*}}, metadata !"localstatic", metadata !"localstatic", metadata !"", metadata !{{.*}}, i32 5, metadata !{{.*}}, i32 1, i32 1, i32* @main.localstatic, null} ; [ DW_TAG_variable ]
-// CHECK: metadata !{i32 {{.*}}, i32 0, null, metadata !"global", metadata !"global", metadata !"", metadata !{{.*}}, i32 3, metadata !{{.*}}, i32 0, i32 1, i32* @global, null} ; [ DW_TAG_variable ]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2009-12-07-BitFieldAlignment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2009-12-07-BitFieldAlignment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2009-12-07-BitFieldAlignment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin %s -emit-llvm -o - | FileCheck %s
-// Set alignment on bitfield accesses.
-
-struct S {
-  int a, b;
-  void *c;
-  unsigned d : 8;
-  unsigned e : 8;
-};
-
-void f0(struct S *a) {
-// CHECK: load {{.*}}, align 4
-// CHECK: store {{.*}}, align 4
-  a->e = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-13-MemBarrier.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-13-MemBarrier.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-13-MemBarrier.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// XFAIL: sparc
-// rdar://7536390
-
-typedef unsigned __INT32_TYPE__ uint32_t;
-
-unsigned t(uint32_t *ptr, uint32_t val) {
-  // CHECK:      @t
-  // CHECK: atomicrmw xchg i32* {{.*}} seq_cst
-  return __sync_lock_test_and_set(ptr, val);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-14-FnType-DebugInfo.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-14-FnType-DebugInfo.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-14-FnType-DebugInfo.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -g -o /dev/null
-typedef void (*sigcatch_t)( struct sigcontext *);
-sigcatch_t sigcatch[50] = {(sigcatch_t) 0};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-18-Inlined-Debug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-18-Inlined-Debug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-01-18-Inlined-Debug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// PR: 6058
-// RUN: %clang_cc1 -g -emit-llvm %s  -O0 -o /dev/null
-
-static inline int foo(double) __attribute__ ((always_inline));
-static inline int foo(double __x) { return __x; }
-
-void bar(double x) {
-  foo(x);
-}
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-10-PointerName.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-10-PointerName.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-10-PointerName.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -g -o - | FileCheck %s
-// CHECK: DW_TAG_pointer_type
-// CHECK-NOT: {"char"}
-
-char i = 1;
-void foo() {
-  char *cp = &i;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-15-DbgStaticVar.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-15-DbgStaticVar.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-15-DbgStaticVar.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm %s -o - | grep "metadata ..b., metadata ..b., metadata ...,"
-// Test to check intentionally empty linkage name for a static variable.
-// Radar 7651244.
-static int foo(int a)
-{
-	static int b = 1;
-	return b+a;
-}
-
-int main() {
-	int j = foo(1);
-	return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-16-DbgScopes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-16-DbgScopes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-16-DbgScopes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g < %s | FileCheck %s
-// Test to check number of lexical scope identified in debug info.
-// CHECK: DW_TAG_lexical_block
-// CHECK: DW_TAG_lexical_block
-// CHECK: DW_TAG_lexical_block
-// CHECK: DW_TAG_lexical_block
-
-extern int bar();
-extern void foobar();
-void foo(int s) {
-  unsigned loc = 0;
-  if (s) {
-    if (bar()) {
-      foobar();
-    }
-  } else {
-    loc = 1;
-    if (bar()) {
-      loc = 2;
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-18-Dbg-VectorType.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-18-Dbg-VectorType.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-02-18-Dbg-VectorType.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang -emit-llvm -S -O0 -g %s -o - | grep DW_TAG_typedef | grep float4
-typedef float float4 __attribute__((vector_size(16)));
-
-int main(){
-  volatile float4 x = (float4) { 0.0f, 1.0f, 2.0f, 3.0f };
-  x += x;
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-03-09-DbgInfo.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-03-09-DbgInfo.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-03-09-DbgInfo.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang -emit-llvm -S -O0 -g %s -o - | grep DW_TAG_variable
-unsigned char ctable1[1] = { 0001 };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-03-5-LexicalScope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-03-5-LexicalScope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-03-5-LexicalScope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -O0 -g %s -o - | FileCheck %s
-// CHECK: DW_TAG_lexical_block
-// CHECK: DW_TAG_lexical_block
-int foo(int i) {
-	if (i) {
-		int j = 2;
-	}
-	else {
-		int j = 3;
-	}
-	return i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-05-26-AsmSideEffect.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-05-26-AsmSideEffect.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-05-26-AsmSideEffect.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 %s -emit-llvm -triple arm-apple-darwin -o - | FileCheck %s
-// Radar 8026855
-
-int test (void *src) {
-  register int w0 asm ("0");
-  // CHECK: call i32 asm "ldr $0, [$1]", "={r0}{{.*}}(i8*
-  asm ("ldr %0, [%1]": "=r" (w0): "r" (src));
-  return w0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-06-11-SaveExpr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-06-11-SaveExpr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-06-11-SaveExpr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// Test case by Eric Postpischil!
-void foo(void)
-{
-  char a[1];
-  int t = 1;
-  ((char (*)[t]) a)[0][0] = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-06-17-asmcrash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-06-17-asmcrash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-06-17-asmcrash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -O1 -S -o - %s | FileCheck %s
-
-typedef long long int64_t;
-typedef unsigned char uint8_t;
-typedef int64_t x86_reg;
-
-void avg_pixels8_mmx2(uint8_t *block, const uint8_t *pixels, int line_size, int h)
-{
-	__asm__ volatile("# %0 %1 %2 %3"
-     :"+g"(h), "+S"(pixels), "+D"(block)
-     :"r" ((x86_reg)line_size)         
-     :"%""rax", "memory");
-// CHECK: # %ecx %rsi %rdi %rdx
- }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-08-DeclDebugLineNo.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -O0 -g %s -o - | FileCheck %s
-// Insure that dbg.declare lines for locals refer to correct line number records.
-// Radar 8152866.
-void foo() {
-  int l = 0;    // line #4: CHECK: {{call.*llvm.dbg.declare.*%l.*\!dbg }}[[variable_l:![0-9]+]]
-  int p = 0;    // line #5: CHECK: {{call.*llvm.dbg.declare.*%p.*\!dbg }}[[variable_p:![0-9]+]]
-}
-// Now match the line number records:
-// CHECK: {{^}}[[variable_l]]{{ = metadata ![{]i32 5,}}
-// CHECK: {{^}}[[variable_p]]{{ = metadata ![{]i32 6,}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-14-overconservative-align.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-14-overconservative-align.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-14-overconservative-align.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
-// PR 5995
-struct s {
-  int word;
-  struct {
-    int filler __attribute__ ((aligned (8)));
-  };
-};
-
-void func (struct s *s)
-{
-  // CHECK: load %struct.s**{{.*}}align 8
-  s->word = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-14-ref-off-end.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-14-ref-off-end.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-07-14-ref-off-end.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -triple i386-apple-darwin -o - | FileCheck %s
-extern void abort();
-extern void exit(int);
-struct T
-{
-unsigned i:8;
-unsigned c:24;
-};
-f(struct T t)
-{
-struct T s[1];
-s[0]=t;
-return(char)s->c;
-}
-main()
-{
-// CHECK:  getelementptr inbounds [1 x %struct.T]* %s, i32 0, i32 0
-// CHECK:  getelementptr inbounds [1 x %struct.T]* %s, i32 0, i32 0
-struct T t;
-t.i=0xff;
-t.c=0xffff11;
-if(f(t)!=0x11)abort();
-exit(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-08-10-DbgConstant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-08-10-DbgConstant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-08-10-DbgConstant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -S -emit-llvm -g  %s -o - | grep DW_TAG_variable
-
-static const unsigned int ro = 201;
-void bar(int);
-void foo() { bar(ro); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-08-12-asm-aggr-arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-08-12-asm-aggr-arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-08-12-asm-aggr-arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | FileCheck %s
-// Radar 8288710: A small aggregate can be passed as an integer.  Make sure
-// we don't get an error with "input constraint with a matching output
-// constraint of incompatible type!" 
-
-struct wrapper {
-  int i;
-};
-
-// CHECK: xyz
-int test(int i) {
-  struct wrapper w;
-  w.i = i;
-  __asm__("xyz" : "=r" (w) : "0" (w));
-  return w.i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2010-12-01-CommonGlobal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2010-12-01-CommonGlobal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2010-12-01-CommonGlobal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-// Don't crash on a common-linkage constant global.
-extern const int kABSourceTypeProperty;
-int foo(void) {
-  return kABSourceTypeProperty;
-}
-const int kABSourceTypeProperty;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2011-02-21-DATA-common.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2011-02-21-DATA-common.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2011-02-21-DATA-common.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-struct rtxc_snapshot {
-  int a, b, c, d;
-};
-__attribute__ ((section("__DATA, __common"))) static struct rtxc_snapshot rtxc_log_A[4];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-02-UnionInitializer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-02-UnionInitializer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-02-UnionInitializer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-union { int :3; double f; } u17_017 = {17.17};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-08-ZeroFieldUnionInitializer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-08-ZeroFieldUnionInitializer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-08-ZeroFieldUnionInitializer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-typedef struct {
-  union {
-    struct { } __attribute((packed));
-  };
-} fenv_t;
-const fenv_t _FE_DFL_ENV = {{{ 0, 0, 0, 0 }}};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-31-ArrayRefFolding.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-31-ArrayRefFolding.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/2011-03-31-ArrayRefFolding.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -triple i386-apple-darwin %s | FileCheck %s
-// PR9571
-
-struct t {
-  int x;
-};
-
-extern struct t *cfun;
-
-int f(void) {
-  if (!(cfun + 0))
-    // CHECK: icmp ne %struct.t*
-    return 0;
-  return cfun->x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/3dnow-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/3dnow-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/3dnow-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,156 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-unknown-unknown -target-feature +3dnow -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-__m64 test_m_pavgusb(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pavgusb
-  // CHECK: @llvm.x86.3dnow.pavgusb
-  return _m_pavgusb(m1, m2);
-}
-
-__m64 test_m_pf2id(__m64 m) {
-  // CHECK: define i64 @test_m_pf2id
-  // CHECK: @llvm.x86.3dnow.pf2id
-  return _m_pf2id(m);
-}
-
-__m64 test_m_pfacc(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfacc
-  // CHECK: @llvm.x86.3dnow.pfacc
-  return _m_pfacc(m1, m2);
-}
-
-__m64 test_m_pfadd(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfadd
-  // CHECK: @llvm.x86.3dnow.pfadd
-  return _m_pfadd(m1, m2);
-}
-
-__m64 test_m_pfcmpeq(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfcmpeq
-  // CHECK: @llvm.x86.3dnow.pfcmpeq
-  return _m_pfcmpeq(m1, m2);
-}
-
-__m64 test_m_pfcmpge(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfcmpge
-  // CHECK: @llvm.x86.3dnow.pfcmpge
-  return _m_pfcmpge(m1, m2);
-}
-
-__m64 test_m_pfcmpgt(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfcmpgt
-  // CHECK: @llvm.x86.3dnow.pfcmpgt
-  return _m_pfcmpgt(m1, m2);
-}
-
-__m64 test_m_pfmax(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfmax
-  // CHECK: @llvm.x86.3dnow.pfmax
-  return _m_pfmax(m1, m2);
-}
-
-__m64 test_m_pfmin(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfmin
-  // CHECK: @llvm.x86.3dnow.pfmin
-  return _m_pfmin(m1, m2);
-}
-
-__m64 test_m_pfmul(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfmul
-  // CHECK: @llvm.x86.3dnow.pfmul
-  return _m_pfmul(m1, m2);
-}
-
-__m64 test_m_pfrcp(__m64 m) {
-  // CHECK: define i64 @test_m_pfrcp
-  // CHECK: @llvm.x86.3dnow.pfrcp
-  return _m_pfrcp(m);
-}
-
-__m64 test_m_pfrcpit1(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfrcpit1
-  // CHECK: @llvm.x86.3dnow.pfrcpit1
-  return _m_pfrcpit1(m1, m2);
-}
-
-__m64 test_m_pfrcpit2(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfrcpit2
-  // CHECK: @llvm.x86.3dnow.pfrcpit2
-  return _m_pfrcpit2(m1, m2);
-}
-
-__m64 test_m_pfrsqrt(__m64 m) {
-  // CHECK: define i64 @test_m_pfrsqrt
-  // CHECK: @llvm.x86.3dnow.pfrsqrt
-  return _m_pfrsqrt(m);
-}
-
-__m64 test_m_pfrsqrtit1(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfrsqrtit1
-  // CHECK: @llvm.x86.3dnow.pfrsqit1
-  return _m_pfrsqrtit1(m1, m2);
-}
-
-__m64 test_m_pfsub(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfsub
-  // CHECK: @llvm.x86.3dnow.pfsub
-  return _m_pfsub(m1, m2);
-}
-
-__m64 test_m_pfsubr(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfsubr
-  // CHECK: @llvm.x86.3dnow.pfsubr
-  return _m_pfsubr(m1, m2);
-}
-
-__m64 test_m_pi2fd(__m64 m) {
-  // CHECK: define i64 @test_m_pi2fd
-  // CHECK: @llvm.x86.3dnow.pi2fd
-  return _m_pi2fd(m);
-}
-
-__m64 test_m_pmulhrw(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pmulhrw
-  // CHECK: @llvm.x86.3dnow.pmulhrw
-  return _m_pmulhrw(m1, m2);
-}
-
-__m64 test_m_pf2iw(__m64 m) {
-  // CHECK: define i64 @test_m_pf2iw
-  // CHECK: @llvm.x86.3dnowa.pf2iw
-  return _m_pf2iw(m);
-}
-
-__m64 test_m_pfnacc(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfnacc
-  // CHECK: @llvm.x86.3dnowa.pfnacc
-  return _m_pfnacc(m1, m2);
-}
-
-__m64 test_m_pfpnacc(__m64 m1, __m64 m2) {
-  // CHECK: define i64 @test_m_pfpnacc
-  // CHECK: @llvm.x86.3dnowa.pfpnacc
-  return _m_pfpnacc(m1, m2);
-}
-
-__m64 test_m_pi2fw(__m64 m) {
-  // CHECK: define i64 @test_m_pi2fw
-  // CHECK: @llvm.x86.3dnowa.pi2fw
-  return _m_pi2fw(m);
-}
-
-__m64 test_m_pswapdsf(__m64 m) {
-  // CHECK: define i64 @test_m_pswapdsf
-  // CHECK: @llvm.x86.3dnowa.pswapd
-  return _m_pswapdsf(m);
-}
-
-__m64 test_m_pswapdsi(__m64 m) {
-  // CHECK: define i64 @test_m_pswapdsi
-  // CHECK: @llvm.x86.3dnowa.pswapd
-  return _m_pswapdsi(m);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/Atomics.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/Atomics.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/Atomics.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,203 +0,0 @@
-// Test frontend handling of __sync builtins.
-// Modified from a gcc testcase.
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s
-
-signed char sc;
-unsigned char uc;
-signed short ss;
-unsigned short us;
-signed int si;
-unsigned int ui;
-signed long long sll;
-unsigned long long ull;
-
-void test_op_ignore (void) // CHECK: define void @test_op_ignore
-{
-  (void) __sync_fetch_and_add (&sc, 1); // CHECK: atomicrmw add i8
-  (void) __sync_fetch_and_add (&uc, 1); // CHECK: atomicrmw add i8
-  (void) __sync_fetch_and_add (&ss, 1); // CHECK: atomicrmw add i16
-  (void) __sync_fetch_and_add (&us, 1); // CHECK: atomicrmw add i16
-  (void) __sync_fetch_and_add (&si, 1); // CHECK: atomicrmw add i32
-  (void) __sync_fetch_and_add (&ui, 1); // CHECK: atomicrmw add i32
-  (void) __sync_fetch_and_add (&sll, 1); // CHECK: atomicrmw add i64
-  (void) __sync_fetch_and_add (&ull, 1); // CHECK: atomicrmw add i64
-
-  (void) __sync_fetch_and_sub (&sc, 1); // CHECK: atomicrmw sub i8
-  (void) __sync_fetch_and_sub (&uc, 1); // CHECK: atomicrmw sub i8
-  (void) __sync_fetch_and_sub (&ss, 1); // CHECK: atomicrmw sub i16
-  (void) __sync_fetch_and_sub (&us, 1); // CHECK: atomicrmw sub i16
-  (void) __sync_fetch_and_sub (&si, 1); // CHECK: atomicrmw sub i32
-  (void) __sync_fetch_and_sub (&ui, 1); // CHECK: atomicrmw sub i32
-  (void) __sync_fetch_and_sub (&sll, 1); // CHECK: atomicrmw sub i64
-  (void) __sync_fetch_and_sub (&ull, 1); // CHECK: atomicrmw sub i64
-
-  (void) __sync_fetch_and_or (&sc, 1); // CHECK: atomicrmw or i8
-  (void) __sync_fetch_and_or (&uc, 1); // CHECK: atomicrmw or i8
-  (void) __sync_fetch_and_or (&ss, 1); // CHECK: atomicrmw or i16
-  (void) __sync_fetch_and_or (&us, 1); // CHECK: atomicrmw or i16
-  (void) __sync_fetch_and_or (&si, 1); // CHECK: atomicrmw or i32
-  (void) __sync_fetch_and_or (&ui, 1); // CHECK: atomicrmw or i32
-  (void) __sync_fetch_and_or (&sll, 1); // CHECK: atomicrmw or i64
-  (void) __sync_fetch_and_or (&ull, 1); // CHECK: atomicrmw or i64
-
-  (void) __sync_fetch_and_xor (&sc, 1); // CHECK: atomicrmw xor i8
-  (void) __sync_fetch_and_xor (&uc, 1); // CHECK: atomicrmw xor i8
-  (void) __sync_fetch_and_xor (&ss, 1); // CHECK: atomicrmw xor i16
-  (void) __sync_fetch_and_xor (&us, 1); // CHECK: atomicrmw xor i16
-  (void) __sync_fetch_and_xor (&si, 1); // CHECK: atomicrmw xor i32
-  (void) __sync_fetch_and_xor (&ui, 1); // CHECK: atomicrmw xor i32
-  (void) __sync_fetch_and_xor (&sll, 1); // CHECK: atomicrmw xor i64
-  (void) __sync_fetch_and_xor (&ull, 1); // CHECK: atomicrmw xor i64
-
-  (void) __sync_fetch_and_and (&sc, 1); // CHECK: atomicrmw and i8
-  (void) __sync_fetch_and_and (&uc, 1); // CHECK: atomicrmw and i8
-  (void) __sync_fetch_and_and (&ss, 1); // CHECK: atomicrmw and i16
-  (void) __sync_fetch_and_and (&us, 1); // CHECK: atomicrmw and i16
-  (void) __sync_fetch_and_and (&si, 1); // CHECK: atomicrmw and i32
-  (void) __sync_fetch_and_and (&ui, 1); // CHECK: atomicrmw and i32
-  (void) __sync_fetch_and_and (&sll, 1); // CHECK: atomicrmw and i64
-  (void) __sync_fetch_and_and (&ull, 1); // CHECK: atomicrmw and i64
-
-}
-
-void test_fetch_and_op (void) // CHECK: define void @test_fetch_and_op
-{
-  sc = __sync_fetch_and_add (&sc, 11); // CHECK: atomicrmw add
-  uc = __sync_fetch_and_add (&uc, 11); // CHECK: atomicrmw add
-  ss = __sync_fetch_and_add (&ss, 11); // CHECK: atomicrmw add
-  us = __sync_fetch_and_add (&us, 11); // CHECK: atomicrmw add
-  si = __sync_fetch_and_add (&si, 11); // CHECK: atomicrmw add
-  ui = __sync_fetch_and_add (&ui, 11); // CHECK: atomicrmw add
-  sll = __sync_fetch_and_add (&sll, 11); // CHECK: atomicrmw add
-  ull = __sync_fetch_and_add (&ull, 11); // CHECK: atomicrmw add
-
-  sc = __sync_fetch_and_sub (&sc, 11); // CHECK: atomicrmw sub
-  uc = __sync_fetch_and_sub (&uc, 11); // CHECK: atomicrmw sub
-  ss = __sync_fetch_and_sub (&ss, 11); // CHECK: atomicrmw sub
-  us = __sync_fetch_and_sub (&us, 11); // CHECK: atomicrmw sub
-  si = __sync_fetch_and_sub (&si, 11); // CHECK: atomicrmw sub
-  ui = __sync_fetch_and_sub (&ui, 11); // CHECK: atomicrmw sub
-  sll = __sync_fetch_and_sub (&sll, 11); // CHECK: atomicrmw sub
-  ull = __sync_fetch_and_sub (&ull, 11); // CHECK: atomicrmw sub
-
-  sc = __sync_fetch_and_or (&sc, 11); // CHECK: atomicrmw or
-  uc = __sync_fetch_and_or (&uc, 11); // CHECK: atomicrmw or
-  ss = __sync_fetch_and_or (&ss, 11); // CHECK: atomicrmw or
-  us = __sync_fetch_and_or (&us, 11); // CHECK: atomicrmw or
-  si = __sync_fetch_and_or (&si, 11); // CHECK: atomicrmw or
-  ui = __sync_fetch_and_or (&ui, 11); // CHECK: atomicrmw or
-  sll = __sync_fetch_and_or (&sll, 11); // CHECK: atomicrmw or
-  ull = __sync_fetch_and_or (&ull, 11); // CHECK: atomicrmw or
-
-  sc = __sync_fetch_and_xor (&sc, 11); // CHECK: atomicrmw xor
-  uc = __sync_fetch_and_xor (&uc, 11); // CHECK: atomicrmw xor
-  ss = __sync_fetch_and_xor (&ss, 11); // CHECK: atomicrmw xor
-  us = __sync_fetch_and_xor (&us, 11); // CHECK: atomicrmw xor
-  si = __sync_fetch_and_xor (&si, 11); // CHECK: atomicrmw xor
-  ui = __sync_fetch_and_xor (&ui, 11); // CHECK: atomicrmw xor
-  sll = __sync_fetch_and_xor (&sll, 11); // CHECK: atomicrmw xor
-  ull = __sync_fetch_and_xor (&ull, 11); // CHECK: atomicrmw xor
-
-  sc = __sync_fetch_and_and (&sc, 11); // CHECK: atomicrmw and
-  uc = __sync_fetch_and_and (&uc, 11); // CHECK: atomicrmw and
-  ss = __sync_fetch_and_and (&ss, 11); // CHECK: atomicrmw and
-  us = __sync_fetch_and_and (&us, 11); // CHECK: atomicrmw and
-  si = __sync_fetch_and_and (&si, 11); // CHECK: atomicrmw and
-  ui = __sync_fetch_and_and (&ui, 11); // CHECK: atomicrmw and
-  sll = __sync_fetch_and_and (&sll, 11); // CHECK: atomicrmw and
-  ull = __sync_fetch_and_and (&ull, 11); // CHECK: atomicrmw and
-
-}
-
-void test_op_and_fetch (void)
-{
-  sc = __sync_add_and_fetch (&sc, uc); // CHECK: atomicrmw add
-  uc = __sync_add_and_fetch (&uc, uc); // CHECK: atomicrmw add
-  ss = __sync_add_and_fetch (&ss, uc); // CHECK: atomicrmw add
-  us = __sync_add_and_fetch (&us, uc); // CHECK: atomicrmw add
-  si = __sync_add_and_fetch (&si, uc); // CHECK: atomicrmw add
-  ui = __sync_add_and_fetch (&ui, uc); // CHECK: atomicrmw add
-  sll = __sync_add_and_fetch (&sll, uc); // CHECK: atomicrmw add
-  ull = __sync_add_and_fetch (&ull, uc); // CHECK: atomicrmw add
-
-  sc = __sync_sub_and_fetch (&sc, uc); // CHECK: atomicrmw sub
-  uc = __sync_sub_and_fetch (&uc, uc); // CHECK: atomicrmw sub
-  ss = __sync_sub_and_fetch (&ss, uc); // CHECK: atomicrmw sub
-  us = __sync_sub_and_fetch (&us, uc); // CHECK: atomicrmw sub
-  si = __sync_sub_and_fetch (&si, uc); // CHECK: atomicrmw sub
-  ui = __sync_sub_and_fetch (&ui, uc); // CHECK: atomicrmw sub
-  sll = __sync_sub_and_fetch (&sll, uc); // CHECK: atomicrmw sub
-  ull = __sync_sub_and_fetch (&ull, uc); // CHECK: atomicrmw sub
-
-  sc = __sync_or_and_fetch (&sc, uc); // CHECK: atomicrmw or
-  uc = __sync_or_and_fetch (&uc, uc); // CHECK: atomicrmw or
-  ss = __sync_or_and_fetch (&ss, uc); // CHECK: atomicrmw or
-  us = __sync_or_and_fetch (&us, uc); // CHECK: atomicrmw or
-  si = __sync_or_and_fetch (&si, uc); // CHECK: atomicrmw or
-  ui = __sync_or_and_fetch (&ui, uc); // CHECK: atomicrmw or
-  sll = __sync_or_and_fetch (&sll, uc); // CHECK: atomicrmw or
-  ull = __sync_or_and_fetch (&ull, uc); // CHECK: atomicrmw or
-
-  sc = __sync_xor_and_fetch (&sc, uc); // CHECK: atomicrmw xor
-  uc = __sync_xor_and_fetch (&uc, uc); // CHECK: atomicrmw xor
-  ss = __sync_xor_and_fetch (&ss, uc); // CHECK: atomicrmw xor
-  us = __sync_xor_and_fetch (&us, uc); // CHECK: atomicrmw xor
-  si = __sync_xor_and_fetch (&si, uc); // CHECK: atomicrmw xor
-  ui = __sync_xor_and_fetch (&ui, uc); // CHECK: atomicrmw xor
-  sll = __sync_xor_and_fetch (&sll, uc); // CHECK: atomicrmw xor
-  ull = __sync_xor_and_fetch (&ull, uc); // CHECK: atomicrmw xor
-
-  sc = __sync_and_and_fetch (&sc, uc); // CHECK: atomicrmw and
-  uc = __sync_and_and_fetch (&uc, uc); // CHECK: atomicrmw and
-  ss = __sync_and_and_fetch (&ss, uc); // CHECK: atomicrmw and
-  us = __sync_and_and_fetch (&us, uc); // CHECK: atomicrmw and
-  si = __sync_and_and_fetch (&si, uc); // CHECK: atomicrmw and
-  ui = __sync_and_and_fetch (&ui, uc); // CHECK: atomicrmw and
-  sll = __sync_and_and_fetch (&sll, uc); // CHECK: atomicrmw and
-  ull = __sync_and_and_fetch (&ull, uc); // CHECK: atomicrmw and
-
-}
-
-void test_compare_and_swap (void)
-{
-  sc = __sync_val_compare_and_swap (&sc, uc, sc); // CHECK: cmpxchg i8
-  uc = __sync_val_compare_and_swap (&uc, uc, sc); // CHECK: cmpxchg i8
-  ss = __sync_val_compare_and_swap (&ss, uc, sc); // CHECK: cmpxchg i16
-  us = __sync_val_compare_and_swap (&us, uc, sc); // CHECK: cmpxchg i16
-  si = __sync_val_compare_and_swap (&si, uc, sc); // CHECK: cmpxchg i32
-  ui = __sync_val_compare_and_swap (&ui, uc, sc); // CHECK: cmpxchg i32
-  sll = __sync_val_compare_and_swap (&sll, uc, sc); // CHECK: cmpxchg i64
-  ull = __sync_val_compare_and_swap (&ull, uc, sc); // CHECK: cmpxchg i64
-
-  ui = __sync_bool_compare_and_swap (&sc, uc, sc); // CHECK: cmpxchg
-  ui = __sync_bool_compare_and_swap (&uc, uc, sc); // CHECK: cmpxchg
-  ui = __sync_bool_compare_and_swap (&ss, uc, sc); // CHECK: cmpxchg
-  ui = __sync_bool_compare_and_swap (&us, uc, sc); // CHECK: cmpxchg
-  ui = __sync_bool_compare_and_swap (&si, uc, sc); // CHECK: cmpxchg
-  ui = __sync_bool_compare_and_swap (&ui, uc, sc); // CHECK: cmpxchg
-  ui = __sync_bool_compare_and_swap (&sll, uc, sc); // CHECK: cmpxchg
-  ui = __sync_bool_compare_and_swap (&ull, uc, sc); // CHECK: cmpxchg
-}
-
-void test_lock (void)
-{
-  sc = __sync_lock_test_and_set (&sc, 1); // CHECK: atomicrmw xchg i8
-  uc = __sync_lock_test_and_set (&uc, 1); // CHECK: atomicrmw xchg i8
-  ss = __sync_lock_test_and_set (&ss, 1); // CHECK: atomicrmw xchg i16
-  us = __sync_lock_test_and_set (&us, 1); // CHECK: atomicrmw xchg i16
-  si = __sync_lock_test_and_set (&si, 1); // CHECK: atomicrmw xchg i32
-  ui = __sync_lock_test_and_set (&ui, 1); // CHECK: atomicrmw xchg i32
-  sll = __sync_lock_test_and_set (&sll, 1); // CHECK: atomicrmw xchg i64
-  ull = __sync_lock_test_and_set (&ull, 1); // CHECK: atomicrmw xchg i64
-
-  __sync_synchronize (); // CHECK: fence seq_cst
-
-  __sync_lock_release (&sc); // CHECK: store atomic {{.*}} release, align 1
-  __sync_lock_release (&uc); // CHECK: store atomic {{.*}} release, align 1
-  __sync_lock_release (&ss); // CHECK: store atomic {{.*}} release, align 2
-  __sync_lock_release (&us); /// CHECK: store atomic {{.*}} release, align 2
-  __sync_lock_release (&si); // CHECK: store atomic {{.*}} release, align 4
-  __sync_lock_release (&ui); // CHECK: store atomic {{.*}} release, align 4
-  __sync_lock_release (&sll); // CHECK: store atomic {{.*}} release, align 8
-  __sync_lock_release (&ull); // CHECK: store atomic {{.*}} release, align 8
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/BasicInstrs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/BasicInstrs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/BasicInstrs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// This file can be used to see what a native C compiler is generating for a
-// variety of interesting operations.
-//
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-unsigned int udiv(unsigned int X, unsigned int Y) {
-  return X/Y;
-}
-int sdiv(int X, int Y) {
-  return X/Y;
-}
-unsigned int urem(unsigned int X, unsigned int Y) {
-  return X%Y;
-}
-int srem(int X, int Y) {
-  return X%Y;
-}
-
-_Bool setlt(int X, int Y) {
-  return X < Y;
-}
-
-_Bool setgt(int X, int Y) {
-  return X > Y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/Inputs/stdio.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/Inputs/stdio.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/Inputs/stdio.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-struct FILE;
-extern int vfprintf(struct FILE *s, const char *format, __builtin_va_list arg);
-extern int vprintf(const char *format, __builtin_va_list arg);
-
-extern __inline __attribute__((gnu_inline,always_inline)) int
-vprintf(const char *x, __builtin_va_list y)
-{
-  return vfprintf (0, 0, 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/OpaqueStruct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/OpaqueStruct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/OpaqueStruct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-typedef struct a b;
-
-b* x;
-
-struct a {
-  b* p;
-};
-
-void f() {
-  b* z = x->p;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR2001-bitfield-reload.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR2001-bitfield-reload.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR2001-bitfield-reload.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm -o - %s | FileCheck %s
-// PR2001
-
-/* Test that the result of the assignment properly uses the value *in
-   the bitfield* as opposed to the RHS. */
-static int foo(int i) {
-  struct {
-    int f0 : 2;
-  } x;
-  return (x.f0 = i);
-}
-
-int bar() {
-  // CHECK: ret i32 1
-  return foo(-5) == -1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR2413-void-address-cast-error.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR2413-void-address-cast-error.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR2413-void-address-cast-error.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-void f()
-{
-        void *addr;
-        addr = (void *)( ((long int)addr + 7L) );
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR2643-null-store-to-bitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR2643-null-store-to-bitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR2643-null-store-to-bitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-// PR2643
-
-void foo() {
-  struct {
-    int a : 1;
-    int b : 1;
-  } entry = {0};
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR2743-reference-missing-static.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR2743-reference-missing-static.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR2743-reference-missing-static.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// PR2743
-// <rdr://6094512>
-
-/* CodeGen should handle this even if it makes it past
-   sema. Unfortunately this test will become useless once sema starts
-   rejecting this. */
-
-static void e0();
-void f0() { e0(); }
-
-inline void e1();
-void f1() { e1(); }
-
-void e2() __attribute__((weak));
-void f2() { e2(); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR3130-cond-constant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR3130-cond-constant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR3130-cond-constant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-int a = 2.0 ? 1 : 2;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR3589-freestanding-libcalls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR3589-freestanding-libcalls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR3589-freestanding-libcalls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | grep 'declare i32 @printf' | count 1
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O2 -emit-llvm %s -o - | grep 'declare i32 @puts' | count 1
-// RUN: %clang_cc1 -triple i386-unknown-unknown -ffreestanding -O2 -emit-llvm %s -o - | grep 'declare i32 @puts' | count 0
-
-int printf(const char *, ...);
-
-void f0() {
-  printf("hello\n");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR3613-static-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR3613-static-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR3613-static-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o %t %s
-// RUN: grep '@g0 = internal global %.truct.s0 { i32 3 }' %t | count 1
-
-struct s0 {
-  int a;
-};
-
-static struct s0 g0;
-
-static int f0(void) {
-  return g0.a;
-}
-
-static struct s0 g0 = {3};
-
-void *g1 = f0;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR3709-int-to-pointer-sign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR3709-int-to-pointer-sign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR3709-int-to-pointer-sign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -O1 -triple=x86_64-gnu-linux | grep "i64 -1"
-
-// PR3709
-long long a() { return (long long)(int*)-1;}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR4611-bitfield-layout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR4611-bitfield-layout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR4611-bitfield-layout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-//
-// CHECK: struct.object_entry = type { [4 x i8] }
-
-struct object_entry {
-       unsigned int type:3, pack_id:16, depth:13;
-} entries;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/PR5060-align.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/PR5060-align.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/PR5060-align.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -verify | FileCheck %s
-
-// CHECK: @foo.p = internal global i8 0, align 32
-char *foo(void) {
-  static char p __attribute__((aligned(32)));
-  return &p;
-}
-
-void bar(long n) {
-  // CHECK: align 32
-  char p[n] __attribute__((aligned(32)));
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/_Bool-conversion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/_Bool-conversion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/_Bool-conversion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple i386 -emit-llvm -O2 -o - %s | FileCheck %s
-
-// CHECK: define i32 @f0()
-// CHECK:  ret i32 1
-// CHECK: }
-
-static _Bool f0_0(void *a0) { return (_Bool) a0; }
-int f0() { return f0_0((void*) 0x2); }
-
-_Bool f1(void) {
-  return (_Bool) ({ void (*x)(); x = 0; });
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/a15.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/a15.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/a15.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a15 -emit-llvm -S %s  -o /dev/null
-
-int main() {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/a5.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/a5.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/a5.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-a5 -emit-llvm -S %s  -o /dev/null
-
-int main() {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-arguments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-arguments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-arguments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,194 +0,0 @@
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -w -o - %s | FileCheck -check-prefix=PCS %s
-
-// Sign extension is performed by the callee on AArch64, which means
-// that we *shouldn't* tag arguments and returns with their extension.
-
-// PCS: define i8 @f0(i16 %a)
-char f0(short a) {
-  return a;
-}
-
-// PCS: define [1 x i64] @f1()
-struct s1 { char f0; };
-struct s1 f1(void) {}
-
-// PCS: define [1 x i64] @f2()
-struct s2 { short f0; };
-struct s2 f2(void) {}
-
-// PCS: define [1 x i64] @f3()
-struct s3 { int f0; };
-struct s3 f3(void) {}
-
-// PCS: define [1 x i64] @f4()
-struct s4 { struct s4_0 { int f0; } f0; };
-struct s4 f4(void) {}
-
-// PCS: define [1 x i64] @f5()
-struct s5 { struct { } f0; int f1; };
-struct s5 f5(void) {}
-
-// PCS: define  [1 x i64] @f6()
-struct s6 { int f0[1]; };
-struct s6 f6(void) {}
-
-// PCS: define void @f7()
-struct s7 { struct { int : 0; } f0; };
-struct s7 f7(void) {}
-
-// PCS: define  void @f8()
-struct s8 { struct { int : 0; } f0[1]; };
-struct s8 f8(void) {}
-
-// PCS: define [1 x i64] @f9()
-struct s9 { long f0; int : 0; };
-struct s9 f9(void) {}
-
-// PCS: define [1 x i64] @f10()
-struct s10 { long f0; int : 0; int : 0; };
-struct s10 f10(void) {}
-
-// PCS: define [1 x i64] @f11()
-struct s11 { int : 0; long f0; };
-struct s11 f11(void) {}
-
-// PCS: define [1 x i64] @f12()
-union u12 { char f0; short f1; int f2; long f3; };
-union u12 f12(void) {}
-
-// PCS: define %struct.s13 @f13()
-struct s13 { float f0; };
-struct s13 f13(void) {}
-
-// PCS: define %union.u14 @f14()
-union u14 { float f0; };
-union u14 f14(void) {}
-
-// PCS: define void @f15()
-void f15(struct s7 a0) {}
-
-// PCS: define void @f16()
-void f16(struct s8 a0) {}
-
-// PCS: define [1 x i64] @f17()
-struct s17 { short f0 : 13; char f1 : 4; };
-struct s17 f17(void) {}
-
-// PCS: define [1 x i64] @f18()
-struct s18 { short f0; char f1 : 4; };
-struct s18 f18(void) {}
-
-// PCS: define [1 x i64] @f19()
-struct s19 { long f0; struct s8 f1; };
-struct s19 f19(void) {}
-
-// PCS: define [1 x i64] @f20()
-struct s20 { struct s8 f1; long f0; };
-struct s20 f20(void) {}
-
-// PCS: define [1 x i64] @f21()
-struct s21 { struct {} f1; long f0 : 4; };
-struct s21 f21(void) {}
-
-// PCS: define { float, float } @f22()
-// PCS: define { double, double } @f23(
-_Complex float      f22(void) {}
-_Complex double     f23(void) {}
-
-// PCS: define [1 x i64] @f24()
-struct s24 { _Complex char f0; };
-struct s24 f24() {}
-
-// PCS: define [1 x i64] @f25()
-struct s25 { _Complex short f0; };
-struct s25 f25() {}
-
-// PCS: define [1 x i64] @f26()
-struct s26 { _Complex int f0; };
-struct s26 f26() {}
-
-// PCS: define [2 x i64] @f27()
-struct s27 { _Complex long f0; };
-struct s27 f27() {}
-
-// PCS: define void @f28(i8 %a, i16 %b, i32 %c, i64 %d, float %e, double %f)
-void f28(char a, short b, int c, long d, float e, double f) {}
-
-// PCS: define void @f29([2 x i64] %a
-struct s29 { int arr[4]; };
-void f29(struct s29 a) {}
-
-// PCS: define void @f30(%struct.s30* %a)
-struct s30 { int arr[4]; char c;};
-void f30(struct s30 a) {}
-
-// PCS: define void @f31([4 x double] %a
-struct s31 { double arr[4]; };
-void f31(struct s31 a) {}
-
-// PCS: define void @f32(%struct.s32* %a)
-struct s32 { float arr[5]; };
-void f32(struct s32 a) {}
-
-// Not the only solution, but it *is* an HFA.
-// PCS: define void @f33([3 x float] %a.coerce0, float %a.coerce1)
-struct s33 { float arr[3]; float a; };
-void f33(struct s33 a) {}
-
-// PCS: define void @f34(%struct.s34* noalias sret
-struct s34 { int a[4]; char b };
-struct s34 f34(void) {}
-
-// PCS: define void @f35()
-struct s35 {};
-void f35(struct s35 a) {}
-
-// Check padding is added:
-// PCS: @f36(i32 %x0, i32 %x1, i32 %x2, i32 %x3, i32 %x4, i32 %x5, i32 %x6, [1 x i64], %struct.s36* byval align 8 %stacked)
-struct s36 { long a, b; };
-void f36(int x0, int x1, int x2, int x3, int x4, int x5, int x6, struct s36 stacked) {}
-
-// But only once:
-// PCS: @f37(i32 %x0, i32 %x1, i32 %x2, i32 %x3, i32 %x4, i32 %x5, i32 %x6, [1 x i64], %struct.s37* byval align 8 %stacked, %struct.s37* byval align 8 %stacked2)
-struct s37 { long a, b; };
-void f37(int x0, int x1, int x2, int x3, int x4, int x5, int x6, struct s37 stacked, struct s37 stacked2) {}
-
-// Check for HFA padding args. Also, they should not end up on the stack in a
-// way which will have holes in when lowered further by LLVM. In particular [3 x
-// float] would be unacceptable.
-
-// PCS: @f38(float %s0, double %d1, float %s2, float %s3, float %s4, float %s5, [2 x float], %struct.s38* byval align 4 %stacked)
-struct s38 { float a, b, c; };
-void f38(float s0, double d1, float s2, float s3, float s4, float s5, struct s38 stacked) {}
-
-// Check both VFP and integer arguments are padded (also that pointers and enums
-// get counted as integer types correctly).
-struct s39_int { long a, b; };
-struct s39_float { float a, b, c, d; };
-enum s39_enum { Val1, Val2 };
-// PCS: @f39(float %s0, i32 %x0, float %s1, i32* %x1, float %s2, i32 %x2, float %s3, float %s4, i32 %x3, [3 x float], %struct.s39_float* byval align 4 %stacked, i32 %x4, i32 %x5, i32 %x6, [1 x i64], %struct.s39_int* byval align 8 %stacked2)
-void f39(float s0, int x0, float s1, int *x1, float s2, enum s39_enum x2, float s3, float s4,
-         int x3, struct s39_float stacked, int x4, int x5, int x6,
-         struct s39_int stacked2) {}
-
-struct s40 { __int128 a; };
-// PCS: @f40(i32 %x0, [1 x i128] %x2_3.coerce, i32 %x4, i32 %x5, i32 %x6, [1 x i64], %struct.s40* byval align 16 %stacked)
-void f40(int x0, struct s40 x2_3, int x4, int x5, int x6, struct s40 stacked) {}
-
-// Checking: __int128 will get properly aligned type, with padding so big struct doesn't use x7.
-struct s41 { int arr[5]; };
-// PCS: @f41(i32 %x0, i32 %x1, i32 %x2, i32 %x3, i32 %x4, i32 %x5, i32 %x6, [1 x i64], i128* byval align 16, %struct.s41* %stacked2)
-int f41(int x0, int x1, int x2, int x3, int x4, int x5, int x6, __int128 stacked, struct s41 stacked2) {}
-
-// Checking: __int128 needing to be aligned in registers will consume correct
-// number. Previously padding was inserted before "stacked" because x6_7 was
-// "allocated" to x5 and x6 by clang.
-// PCS: @f42(i32 %x0, i32 %x1, i32 %x2, i32 %x3, i32 %x4, i128 %x6_7, i128* byval align 16)
-void f42(int x0, int x1, int x2, int x3, int x4, __int128 x6_7, __int128 stacked) {}
-
-// Checking: __fp16 is extended to double when calling variadic functions
-void variadic(int a, ...);
-void f43(__fp16 *in) {
-  variadic(42, *in);
-// CHECK: call void @variadic(i32 42, double
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-// The only part clang really deals with is the lvalue/rvalue
-// distinction on constraints. It's sufficient to emit llvm and make
-// sure that's sane.
-
-long var;
-
-void test_generic_constraints(int var32, long var64) {
-    asm("add %0, %1, %1" : "=r"(var32) : "0"(var32));
-// CHECK: [[R32_ARG:%[a-zA-Z0-9]+]] = load i32*
-// CHECK: call i32 asm "add $0, $1, $1", "=r,0"(i32 [[R32_ARG]])
-
-    asm("add %0, %1, %1" : "=r"(var64) : "0"(var64));
-// CHECK: [[R32_ARG:%[a-zA-Z0-9]+]] = load i64*
-// CHECK: call i64 asm "add $0, $1, $1", "=r,0"(i64 [[R32_ARG]])
-
-    asm("ldr %0, %1" : "=r"(var32) : "m"(var));
-    asm("ldr %0, [%1]" : "=r"(var64) : "r"(&var));
-// CHECK: call i32 asm "ldr $0, $1", "=r,*m"(i64* @var)
-// CHECK: call i64 asm "ldr $0, [$1]", "=r,r"(i64* @var)
-}
-
-float f;
-double d;
-void test_constraint_w() {
-    asm("fadd %s0, %s1, %s1" : "=w"(f) : "w"(f));
-// CHECK: [[FLT_ARG:%[a-zA-Z_0-9]+]] = load float* @f
-// CHECK: call float asm "fadd ${0:s}, ${1:s}, ${1:s}", "=w,w"(float [[FLT_ARG]])
-
-    asm("fadd %d0, %d1, %d1" : "=w"(d) : "w"(d));
-// CHECK: [[DBL_ARG:%[a-zA-Z_0-9]+]] = load double* @d
-// CHECK: call double asm "fadd ${0:d}, ${1:d}, ${1:d}", "=w,w"(double [[DBL_ARG]])
-}
-
-void test_constraints_immed(void) {
-    asm("add x0, x0, %0" : : "I"(4095) : "x0");
-    asm("and w0, w0, %0" : : "K"(0xaaaaaaaa) : "w0");
-    asm("and x0, x0, %0" : : "L"(0xaaaaaaaaaaaaaaaa) : "x0");
-// CHECK: call void asm sideeffect "add x0, x0, $0", "I,~{x0}"(i32 4095)
-// CHECK: call void asm sideeffect "and w0, w0, $0", "K,~{w0}"(i32 -1431655766)
-// CHECK: call void asm sideeffect "and x0, x0, $0", "L,~{x0}"(i64 -6148914691236517206)
-}
-
-void test_constraint_S(void) {
-    int *addr;
-    asm("adrp %0, %A1\n\t"
-        "add %0, %0, %L1" : "=r"(addr) : "S"(&var));
-// CHECK: call i32* asm "adrp $0, ${1:A}\0A\09add $0, $0, ${1:L}", "=r,S"(i64* @var)
-}
-
-void test_constraint_Q(void) {
-    int val;
-    asm("ldxr %0, %1" : "=r"(val) : "Q"(var));
-// CHECK: call i32 asm "ldxr $0, $1", "=r,*Q"(i64* @var)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-type-sizes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-type-sizes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-type-sizes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -w -o - %s | FileCheck %s
-
-// char by definition has size 1
-
-int check_short() {
-  return sizeof(short);
-// CHECK: ret i32 2
-}
-
-int check_int() {
-  return sizeof(int);
-// CHECK: ret i32 4
-}
-
-int check_long() {
-// Both 4 and 8 are permitted under the PCS, Linux says 8!
-  return sizeof(long);
-// CHECK: ret i32 8
-}
-
-int check_longlong() {
-  return sizeof(long long);
-// CHECK: ret i32 8
-}
-
-int check_int128() {
-  return sizeof(__int128);
-// CHECK: ret i32 16
-}
-
-int check_fp16() {
-  return sizeof(__fp16);
-// CHECK: ret i32 2
-}
-
-int check_float() {
-  return sizeof(float);
-// CHECK: ret i32 4
-}
-
-int check_double() {
-  return sizeof(double);
-// CHECK: ret i32 8
-}
-
-int check_longdouble() {
-  return sizeof(long double);
-// CHECK: ret i32 16
-}
-
-int check_floatComplex() {
-  return sizeof(float _Complex);
-// CHECK: ret i32 8
-}
-
-int check_doubleComplex() {
-  return sizeof(double _Complex);
-// CHECK: ret i32 16
-}
-
-int check_longdoubleComplex() {
-  return sizeof(long double _Complex);
-// CHECK: ret i32 32
-}
-
-int check_bool() {
-  return sizeof(_Bool);
-// CHECK: ret i32 1
-}
-
-int check_wchar() {
-// PCS allows either unsigned short or unsigned int. Linux again says "bigger!"
-  return sizeof(__WCHAR_TYPE__);
-// CHECK: ret i32 4
-}
-
-int check_wchar_unsigned() {
-  return (__WCHAR_TYPE__)-1 > (__WCHAR_TYPE__)0;
-// CHECK: ret i32 1
-}
-
-enum Small {
-  Item
-};
-
-int foo() {
-  return sizeof(enum Small);
-// CHECK: ret i32 4
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-varargs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-varargs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/aarch64-varargs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,238 +0,0 @@
-// RUN: %clang_cc1 -triple aarch64 -emit-llvm -o - %s | FileCheck %s
-#include <stdarg.h>
-
-// Obviously there's more than one way to implement va_arg. This test should at
-// least prevent unintentional regressions caused by refactoring.
-
-va_list the_list;
-
-int simple_int(void) {
-// CHECK: define i32 @simple_int
-  return va_arg(the_list, int);
-// CHECK: [[GR_OFFS:%[a-z_0-9]+]] = load i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 3)
-// CHECK: [[EARLY_ONSTACK:%[a-z_0-9]+]] = icmp sge i32 [[GR_OFFS]], 0
-// CHECK: br i1 [[EARLY_ONSTACK]], label %[[VAARG_ON_STACK:[a-z_.0-9]+]], label %[[VAARG_MAYBE_REG:[a-z_.0-9]+]]
-
-// CHECK: [[VAARG_MAYBE_REG]]
-// CHECK: [[NEW_REG_OFFS:%[a-z_0-9]+]] = add i32 [[GR_OFFS]], 8
-// CHECK: store i32 [[NEW_REG_OFFS]], i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 3)
-// CHECK: [[INREG:%[a-z_0-9]+]] = icmp sle i32 [[NEW_REG_OFFS]], 0
-// CHECK: br i1 [[INREG]], label %[[VAARG_IN_REG:[a-z_.0-9]+]], label %[[VAARG_ON_STACK]]
-
-// CHECK: [[VAARG_IN_REG]]
-// CHECK: [[REG_TOP:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 1)
-// CHECK: [[REG_ADDR:%[a-z_0-9]+]] = getelementptr i8* [[REG_TOP]], i32 [[GR_OFFS]]
-// CHECK: [[FROMREG_ADDR:%[a-z_0-9]+]] = bitcast i8* [[REG_ADDR]] to i32*
-// CHECK: br label %[[VAARG_END:[a-z._0-9]+]]
-
-// CHECK: [[VAARG_ON_STACK]]
-// CHECK: [[STACK:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[NEW_STACK:%[a-z_0-9]+]] = getelementptr i8* [[STACK]], i32 8
-// CHECK: store i8* [[NEW_STACK]], i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[FROMSTACK_ADDR:%[a-z_0-9]+]] = bitcast i8* [[STACK]] to i32*
-// CHECK: br label %[[VAARG_END]]
-
-// CHECK: [[VAARG_END]]
-// CHECK: [[ADDR:%[a-z._0-9]+]] = phi i32* [ [[FROMREG_ADDR]], %[[VAARG_IN_REG]] ], [ [[FROMSTACK_ADDR]], %[[VAARG_ON_STACK]] ]
-// CHECK: [[RESULT:%[a-z_0-9]+]] = load i32* [[ADDR]]
-// CHECK: ret i32 [[RESULT]]
-}
-
-__int128 aligned_int(void) {
-// CHECK: define i128 @aligned_int
-  return va_arg(the_list, __int128);
-// CHECK: [[GR_OFFS:%[a-z_0-9]+]] = load i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 3)
-// CHECK: [[EARLY_ONSTACK:%[a-z_0-9]+]] = icmp sge i32 [[GR_OFFS]], 0
-// CHECK: br i1 [[EARLY_ONSTACK]], label %[[VAARG_ON_STACK:[a-z_.0-9]+]], label %[[VAARG_MAYBE_REG:[a-z_.0-9]+]]
-
-// CHECK: [[VAARG_MAYBE_REG]]
-// CHECK: [[ALIGN_REGOFFS:%[a-z_0-9]+]] = add i32 [[GR_OFFS]], 15
-// CHECK: [[ALIGNED_REGOFFS:%[a-z_0-9]+]] = and i32 [[ALIGN_REGOFFS]], -16
-// CHECK: [[NEW_REG_OFFS:%[a-z_0-9]+]] = add i32 [[ALIGNED_REGOFFS]], 16
-// CHECK: store i32 [[NEW_REG_OFFS]], i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 3)
-// CHECK: [[INREG:%[a-z_0-9]+]] = icmp sle i32 [[NEW_REG_OFFS]], 0
-// CHECK: br i1 [[INREG]], label %[[VAARG_IN_REG:[a-z_.0-9]+]], label %[[VAARG_ON_STACK]]
-
-// CHECK: [[VAARG_IN_REG]]
-// CHECK: [[REG_TOP:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 1)
-// CHECK: [[REG_ADDR:%[a-z_0-9]+]] = getelementptr i8* [[REG_TOP]], i32 [[ALIGNED_REGOFFS]]
-// CHECK: [[FROMREG_ADDR:%[a-z_0-9]+]] = bitcast i8* [[REG_ADDR]] to i128*
-// CHECK: br label %[[VAARG_END:[a-z._0-9]+]]
-
-// CHECK: [[VAARG_ON_STACK]]
-// CHECK: [[STACK:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[STACKINT:%[a-z_0-9]+]] = ptrtoint i8* [[STACK]] to i64
-// CHECK: [[ALIGN_STACK:%[a-z_0-9]+]] = add i64 [[STACKINT]], 15
-// CHECK: [[ALIGNED_STACK_INT:%[a-z_0-9]+]] = and i64 [[ALIGN_STACK]], -16
-// CHECK: [[ALIGNED_STACK_PTR:%[a-z_0-9]+]] = inttoptr i64 [[ALIGNED_STACK_INT]] to i8*
-// CHECK: [[NEW_STACK:%[a-z_0-9]+]] = getelementptr i8* [[ALIGNED_STACK_PTR]], i32 16
-// CHECK: store i8* [[NEW_STACK]], i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[FROMSTACK_ADDR:%[a-z_0-9]+]] = bitcast i8* [[ALIGNED_STACK_PTR]] to i128*
-// CHECK: br label %[[VAARG_END]]
-
-// CHECK: [[VAARG_END]]
-// CHECK: [[ADDR:%[a-z._0-9]+]] = phi i128* [ [[FROMREG_ADDR]], %[[VAARG_IN_REG]] ], [ [[FROMSTACK_ADDR]], %[[VAARG_ON_STACK]] ]
-// CHECK: [[RESULT:%[a-z_0-9]+]] = load i128* [[ADDR]]
-// CHECK: ret i128 [[RESULT]]
-}
-
-struct bigstruct {
-  int a[10];
-};
-
-struct bigstruct simple_indirect(void) {
-// CHECK: define void @simple_indirect
-  return va_arg(the_list, struct bigstruct);
-// CHECK: [[GR_OFFS:%[a-z_0-9]+]] = load i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 3)
-// CHECK: [[EARLY_ONSTACK:%[a-z_0-9]+]] = icmp sge i32 [[GR_OFFS]], 0
-// CHECK: br i1 [[EARLY_ONSTACK]], label %[[VAARG_ON_STACK:[a-z_.0-9]+]], label %[[VAARG_MAYBE_REG:[a-z_.0-9]+]]
-
-// CHECK: [[VAARG_MAYBE_REG]]
-// CHECK-NOT: and i32
-// CHECK: [[NEW_REG_OFFS:%[a-z_0-9]+]] = add i32 [[GR_OFFS]], 8
-// CHECK: store i32 [[NEW_REG_OFFS]], i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 3)
-// CHECK: [[INREG:%[a-z_0-9]+]] = icmp sle i32 [[NEW_REG_OFFS]], 0
-// CHECK: br i1 [[INREG]], label %[[VAARG_IN_REG:[a-z_.0-9]+]], label %[[VAARG_ON_STACK]]
-
-// CHECK: [[VAARG_IN_REG]]
-// CHECK: [[REG_TOP:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 1)
-// CHECK: [[REG_ADDR:%[a-z_0-9]+]] = getelementptr i8* [[REG_TOP]], i32 [[GR_OFFS]]
-// CHECK: [[FROMREG_ADDR:%[a-z_0-9]+]] = bitcast i8* [[REG_ADDR]] to %struct.bigstruct**
-// CHECK: br label %[[VAARG_END:[a-z._0-9]+]]
-
-// CHECK: [[VAARG_ON_STACK]]
-// CHECK: [[STACK:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK-NOT: and i64
-// CHECK: [[NEW_STACK:%[a-z_0-9]+]] = getelementptr i8* [[STACK]], i32 8
-// CHECK: store i8* [[NEW_STACK]], i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[FROMSTACK_ADDR:%[a-z_0-9]+]] = bitcast i8* [[STACK]] to %struct.bigstruct**
-// CHECK: br label %[[VAARG_END]]
-
-// CHECK: [[VAARG_END]]
-// CHECK: [[ADDR:%[a-z._0-9]+]] = phi %struct.bigstruct** [ [[FROMREG_ADDR]], %[[VAARG_IN_REG]] ], [ [[FROMSTACK_ADDR]], %[[VAARG_ON_STACK]] ]
-// CHECK: load %struct.bigstruct** [[ADDR]]
-}
-
-struct aligned_bigstruct {
-  float a;
-  long double b;
-};
-
-struct aligned_bigstruct simple_aligned_indirect(void) {
-// CHECK: define void @simple_aligned_indirect
-  return va_arg(the_list, struct aligned_bigstruct);
-// CHECK: [[GR_OFFS:%[a-z_0-9]+]] = load i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 3)
-// CHECK: [[EARLY_ONSTACK:%[a-z_0-9]+]] = icmp sge i32 [[GR_OFFS]], 0
-// CHECK: br i1 [[EARLY_ONSTACK]], label %[[VAARG_ON_STACK:[a-z_.0-9]+]], label %[[VAARG_MAYBE_REG:[a-z_.0-9]+]]
-
-// CHECK: [[VAARG_MAYBE_REG]]
-// CHECK: [[NEW_REG_OFFS:%[a-z_0-9]+]] = add i32 [[GR_OFFS]], 8
-// CHECK: store i32 [[NEW_REG_OFFS]], i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 3)
-// CHECK: [[INREG:%[a-z_0-9]+]] = icmp sle i32 [[NEW_REG_OFFS]], 0
-// CHECK: br i1 [[INREG]], label %[[VAARG_IN_REG:[a-z_.0-9]+]], label %[[VAARG_ON_STACK]]
-
-// CHECK: [[VAARG_IN_REG]]
-// CHECK: [[REG_TOP:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 1)
-// CHECK: [[REG_ADDR:%[a-z_0-9]+]] = getelementptr i8* [[REG_TOP]], i32 [[GR_OFFS]]
-// CHECK: [[FROMREG_ADDR:%[a-z_0-9]+]] = bitcast i8* [[REG_ADDR]] to %struct.aligned_bigstruct**
-// CHECK: br label %[[VAARG_END:[a-z._0-9]+]]
-
-// CHECK: [[VAARG_ON_STACK]]
-// CHECK: [[STACK:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[NEW_STACK:%[a-z_0-9]+]] = getelementptr i8* [[STACK]], i32 8
-// CHECK: store i8* [[NEW_STACK]], i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[FROMSTACK_ADDR:%[a-z_0-9]+]] = bitcast i8* [[STACK]] to %struct.aligned_bigstruct**
-// CHECK: br label %[[VAARG_END]]
-
-// CHECK: [[VAARG_END]]
-// CHECK: [[ADDR:%[a-z._0-9]+]] = phi %struct.aligned_bigstruct** [ [[FROMREG_ADDR]], %[[VAARG_IN_REG]] ], [ [[FROMSTACK_ADDR]], %[[VAARG_ON_STACK]] ]
-// CHECK: load %struct.aligned_bigstruct** [[ADDR]]
-}
-
-double simple_double(void) {
-// CHECK: define double @simple_double
-  return va_arg(the_list, double);
-// CHECK: [[VR_OFFS:%[a-z_0-9]+]] = load i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 4)
-// CHECK: [[EARLY_ONSTACK:%[a-z_0-9]+]] = icmp sge i32 [[VR_OFFS]], 0
-// CHECK: br i1 [[EARLY_ONSTACK]], label %[[VAARG_ON_STACK]], label %[[VAARG_MAYBE_REG]]
-
-// CHECK: [[VAARG_MAYBE_REG]]
-// CHECK: [[NEW_REG_OFFS:%[a-z_0-9]+]] = add i32 [[VR_OFFS]], 16
-// CHECK: store i32 [[NEW_REG_OFFS]], i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 4)
-// CHECK: [[INREG:%[a-z_0-9]+]] = icmp sle i32 [[NEW_REG_OFFS]], 0
-// CHECK: br i1 [[INREG]], label %[[VAARG_IN_REG:[a-z_.0-9]+]], label %[[VAARG_ON_STACK]]
-
-// CHECK: [[VAARG_IN_REG]]
-// CHECK: [[REG_TOP:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 2)
-// CHECK: [[REG_ADDR:%[a-z_0-9]+]] = getelementptr i8* [[REG_TOP]], i32 [[VR_OFFS]]
-// CHECK: [[FROMREG_ADDR:%[a-z_0-9]+]] = bitcast i8* [[REG_ADDR]] to double*
-// CHECK: br label %[[VAARG_END]]
-
-// CHECK: [[VAARG_ON_STACK]]
-// CHECK: [[STACK:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[NEW_STACK:%[a-z_0-9]+]] = getelementptr i8* [[STACK]], i32 8
-// CHECK: store i8* [[NEW_STACK]], i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[FROMSTACK_ADDR:%[a-z_0-9]+]] = bitcast i8* [[STACK]] to double*
-// CHECK: br label %[[VAARG_END]]
-
-// CHECK: [[VAARG_END]]
-// CHECK: [[ADDR:%[a-z._0-9]+]] = phi double* [ [[FROMREG_ADDR]], %[[VAARG_IN_REG]] ], [ [[FROMSTACK_ADDR]], %[[VAARG_ON_STACK]] ]
-// CHECK: [[RESULT:%[a-z_0-9]+]] = load double* [[ADDR]]
-// CHECK: ret double [[RESULT]]
-}
-
-struct hfa {
-  float a, b;
-};
-
-struct hfa simple_hfa(void) {
-// CHECK: define %struct.hfa @simple_hfa
-  return va_arg(the_list, struct hfa);
-// CHECK: [[VR_OFFS:%[a-z_0-9]+]] = load i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 4)
-// CHECK: [[EARLY_ONSTACK:%[a-z_0-9]+]] = icmp sge i32 [[VR_OFFS]], 0
-// CHECK: br i1 [[EARLY_ONSTACK]], label %[[VAARG_ON_STACK:[a-z_.0-9]+]], label %[[VAARG_MAYBE_REG:[a-z_.0-9]+]]
-
-// CHECK: [[VAARG_MAYBE_REG]]
-// CHECK: [[NEW_REG_OFFS:%[a-z_0-9]+]] = add i32 [[VR_OFFS]], 32
-// CHECK: store i32 [[NEW_REG_OFFS]], i32* getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 4)
-// CHECK: [[INREG:%[a-z_0-9]+]] = icmp sle i32 [[NEW_REG_OFFS]], 0
-// CHECK: br i1 [[INREG]], label %[[VAARG_IN_REG:[a-z_.0-9]+]], label %[[VAARG_ON_STACK]]
-
-// CHECK: [[VAARG_IN_REG]]
-// CHECK: [[REG_TOP:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 2)
-// CHECK: [[FIRST_REG:%[a-z_0-9]+]] = getelementptr i8* [[REG_TOP]], i32 [[VR_OFFS]]
-// CHECK: [[EL_ADDR:%[a-z_0-9]+]] = getelementptr i8* [[FIRST_REG]], i32 0
-// CHECK: [[EL_TYPED:%[a-z_0-9]+]] = bitcast i8* [[EL_ADDR]] to float*
-// CHECK: [[EL_TMPADDR:%[a-z_0-9]+]] = getelementptr inbounds [2 x float]* %[[TMP_HFA:[a-z_.0-9]+]], i32 0, i32 0
-// CHECK: [[EL:%[a-z_0-9]+]] = load float* [[EL_TYPED]]
-// CHECK: store float [[EL]], float* [[EL_TMPADDR]]
-// CHECK: [[EL_ADDR:%[a-z_0-9]+]] = getelementptr i8* [[FIRST_REG]], i32 16
-// CHECK: [[EL_TYPED:%[a-z_0-9]+]] = bitcast i8* [[EL_ADDR]] to float*
-// CHECK: [[EL_TMPADDR:%[a-z_0-9]+]] = getelementptr inbounds [2 x float]* %[[TMP_HFA]], i32 0, i32 1
-// CHECK: [[EL:%[a-z_0-9]+]] = load float* [[EL_TYPED]]
-// CHECK: store float [[EL]], float* [[EL_TMPADDR]]
-// CHECK: [[FROMREG_ADDR:%[a-z_0-9]+]] = bitcast [2 x float]* %[[TMP_HFA]] to %struct.hfa*
-// CHECK: br label %[[VAARG_END:[a-z_.0-9]+]]
-
-// CHECK: [[VAARG_ON_STACK]]
-// CHECK: [[STACK:%[a-z_0-9]+]] = load i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[NEW_STACK:%[a-z_0-9]+]] = getelementptr i8* [[STACK]], i32 8
-// CHECK: store i8* [[NEW_STACK]], i8** getelementptr inbounds (%struct.__va_list* @the_list, i32 0, i32 0)
-// CHECK: [[FROMSTACK_ADDR:%[a-z_0-9]+]] = bitcast i8* [[STACK]] to %struct.hfa*
-// CHECK: br label %[[VAARG_END]]
-
-// CHECK: [[VAARG_END]]
-// CHECK: [[ADDR:%[a-z._0-9]+]] = phi %struct.hfa* [ [[FROMREG_ADDR]], %[[VAARG_IN_REG]] ], [ [[FROMSTACK_ADDR]], %[[VAARG_ON_STACK]] ]
-}
-
-void check_start(int n, ...) {
-// CHECK: define void @check_start(i32 %n, ...)
-
-  va_list the_list;
-  va_start(the_list, n);
-// CHECK: [[THE_LIST:%[a-z_0-9]+]] = alloca %struct.__va_list
-// CHECK: [[VOIDP_THE_LIST:%[a-z_0-9]+]] = bitcast %struct.__va_list* [[THE_LIST]] to i8*
-// CHECK: call void @llvm.va_start(i8* [[VOIDP_THE_LIST]])
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/address-safety-attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/address-safety-attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/address-safety-attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck -check-prefix=WITHOUT %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s -fsanitize=address | FileCheck -check-prefix=ASAN %s
-// RUN: echo "src:%s" > %t.file.blacklist
-// RUN: echo "fun:*BlacklistedFunction*" > %t.func.blacklist
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s -fsanitize=address -fsanitize-blacklist=%t.file.blacklist | FileCheck -check-prefix=BLFILE %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s -fsanitize=address -fsanitize-blacklist=%t.func.blacklist | FileCheck -check-prefix=BLFUNC %s
-
-// FIXME: %t.file.blacklist is like "src:x:\path\to\clang\test\CodeGen\address-safety-attr.cpp"
-// REQUIRES: shell
-
-// The sanitize_address attribute should be attached to functions
-// when AddressSanitizer is enabled, unless no_sanitize_address attribute
-// is present.
-
-// WITHOUT:  NoAddressSafety1{{.*}}) [[NOATTR:#[0-9]+]]
-// BLFILE:  NoAddressSafety1{{.*}}) [[NOATTR:#[0-9]+]]
-// BLFUNC:  NoAddressSafety1{{.*}}) [[NOATTR:#[0-9]+]]
-// ASAN:  NoAddressSafety1{{.*}}) [[NOATTR:#[0-9]+]]
-__attribute__((no_sanitize_address))
-int NoAddressSafety1(int *a) { return *a; }
-
-// WITHOUT:  NoAddressSafety2{{.*}}) [[NOATTR]]
-// BLFILE:  NoAddressSafety2{{.*}}) [[NOATTR]]
-// BLFUNC:  NoAddressSafety2{{.*}}) [[NOATTR]]
-// ASAN:  NoAddressSafety2{{.*}}) [[NOATTR]]
-__attribute__((no_sanitize_address))
-int NoAddressSafety2(int *a);
-int NoAddressSafety2(int *a) { return *a; }
-
-// WITHOUT:  AddressSafetyOk{{.*}}) [[NOATTR]]
-// BLFILE:  AddressSafetyOk{{.*}}) [[NOATTR]]
-// BLFUNC: AddressSafetyOk{{.*}}) [[WITH:#[0-9]+]]
-// ASAN: AddressSafetyOk{{.*}}) [[WITH:#[0-9]+]]
-int AddressSafetyOk(int *a) { return *a; }
-
-// WITHOUT:  BlacklistedFunction{{.*}}) [[NOATTR]]
-// BLFILE:  BlacklistedFunction{{.*}}) [[NOATTR]]
-// BLFUNC:  BlacklistedFunction{{.*}}) [[NOATTR]]
-// ASAN:  BlacklistedFunction{{.*}}) [[WITH]]
-int BlacklistedFunction(int *a) { return *a; }
-
-// WITHOUT:  TemplateAddressSafetyOk{{.*}}) [[NOATTR]]
-// BLFILE:  TemplateAddressSafetyOk{{.*}}) [[NOATTR]]
-// BLFUNC:  TemplateAddressSafetyOk{{.*}}) [[WITH]]
-// ASAN: TemplateAddressSafetyOk{{.*}}) [[WITH]]
-template<int i>
-int TemplateAddressSafetyOk() { return i; }
-
-// WITHOUT:  TemplateNoAddressSafety{{.*}}) [[NOATTR]]
-// BLFILE:  TemplateNoAddressSafety{{.*}}) [[NOATTR]]
-// BLFUNC:  TemplateNoAddressSafety{{.*}}) [[NOATTR]]
-// ASAN: TemplateNoAddressSafety{{.*}}) [[NOATTR]]
-template<int i>
-__attribute__((no_sanitize_address))
-int TemplateNoAddressSafety() { return i; }
-
-int force_instance = TemplateAddressSafetyOk<42>()
-                   + TemplateNoAddressSafety<42>();
-
-// Check that __cxx_global_var_init* get the sanitize_address attribute.
-int global1 = 0;
-int global2 = *(int*)((char*)&global1+1);
-// WITHOUT: @__cxx_global_var_init{{.*}}[[NOATTR_NO_TF:#[0-9]+]]
-// BLFILE: @__cxx_global_var_init{{.*}}[[NOATTR_NO_TF:#[0-9]+]]
-// BLFUNC: @__cxx_global_var_init{{.*}}[[WITH_NO_TF:#[0-9]+]]
-// ASAN: @__cxx_global_var_init{{.*}}[[WITH_NO_TF:#[0-9]+]]
-
-// WITHOUT: attributes [[NOATTR]] = { nounwind{{.*}} }
-// WITHOUT: attributes [[NOATTR_NO_TF]] = { nounwind }
-
-// BLFILE: attributes [[NOATTR]] = { nounwind{{.*}} }
-// BLFILE: attributes [[NOATTR_NO_TF]] = { nounwind }
-
-// BLFUNC: attributes [[NOATTR]] = { nounwind{{.*}} }
-// BLFUNC: attributes [[WITH]] = { nounwind sanitize_address{{.*}} }
-// BLFUNC: attributes [[WITH_NO_TF]] = { nounwind sanitize_address }
-
-// ASAN: attributes [[NOATTR]] = { nounwind{{.*}} }
-// ASAN: attributes [[WITH]] = { nounwind sanitize_address{{.*}} }
-// ASAN: attributes [[WITH_NO_TF]] = { nounwind sanitize_address }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s
-
-volatile unsigned char* const __attribute__((address_space(1))) serial_ctrl = 0x02;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-compound-literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-compound-literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-compound-literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep "internal addrspace(1) global i32 1"
-
-typedef int a __attribute__((address_space(1)));
-a* x = &(a){1};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-field1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-field1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/address-space-field1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10 < %s -o - | FileCheck %s
-// CHECK:%struct.S = type { i32, i32 }
-// CHECK:define void @test_addrspace(%struct.S addrspace(1)* %p1, %struct.S addrspace(2)* %p2) [[NUW:#[0-9]+]]
-// CHECK:  [[p1addr:%.*]] = alloca %struct.S addrspace(1)*
-// CHECK:  [[p2addr:%.*]] = alloca %struct.S addrspace(2)*
-// CHECK:  store %struct.S addrspace(1)* %p1, %struct.S addrspace(1)** [[p1addr]]
-// CHECK:  store %struct.S addrspace(2)* %p2, %struct.S addrspace(2)** [[p2addr]]
-// CHECK:  [[t0:%.*]] = load %struct.S addrspace(2)** [[p2addr]], align 8 
-// CHECK:  [[t1:%.*]] = getelementptr inbounds %struct.S addrspace(2)* [[t0]], i32 0, i32 1
-// CHECK:  [[t2:%.*]] = load i32 addrspace(2)* [[t1]], align 4
-// CHECK:  [[t3:%.*]] = load %struct.S addrspace(1)** [[p1addr]], align 8  
-// CHECK:  [[t4:%.*]] = getelementptr inbounds %struct.S addrspace(1)* [[t3]], i32 0, i32 0 
-// CHECK:  store i32 [[t2]], i32 addrspace(1)* [[t4]], align 4
-// CHECK:  [[t5:%.*]] = load %struct.S addrspace(2)** [[p2addr]], align 8  
-// CHECK:  [[t6:%.*]] = getelementptr inbounds %struct.S addrspace(2)* [[t5]], i32 0, i32 0 
-// CHECK:  [[t7:%.*]] = load i32 addrspace(2)* [[t6]], align 4            
-// CHECK:  [[t8:%.*]] = load %struct.S addrspace(1)** [[p1addr]], align 8  
-// CHECK:  [[t9:%.*]] = getelementptr inbounds %struct.S addrspace(1)* [[t8]], i32 0, i32 1 
-// CHECK:  store i32 [[t7]], i32 addrspace(1)* [[t9]], align 4
-// CHECK:  ret void
-// CHECK:}
-
-// Check that we don't lose the address space when accessing a member
-// of a structure.
-
-#define __addr1    __attribute__((address_space(1)))
-#define __addr2    __attribute__((address_space(2)))
-
-typedef struct S {
-  int a;
-  int b;
-} S;
-
-void test_addrspace(__addr1 S* p1, __addr2 S*p2) {
-  // swap
-  p1->a = p2->b;
-  p1->b = p2->a;
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/address-space.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/address-space.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/address-space.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm < %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm < %s | grep 'load.*addrspace(2).. @A'
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm < %s | grep 'load.*addrspace(2).. @B'
-
-
-// CHECK: @foo = common addrspace(1) global
-int foo __attribute__((address_space(1)));
-
-// CHECK: @ban = common addrspace(1) global
-int ban[10] __attribute__((address_space(1)));
-
-// CHECK: define i32 @test1() 
-// CHECK: load i32 addrspace(1)* @foo
-int test1() { return foo; }
-
-// CHECK: define i32 @test2(i32 %i) 
-// CHECK: load i32 addrspace(1)*
-// CHECK-NEXT: ret i32
-int test2(int i) { return ban[i]; }
-
-// Both A and B point into addrspace(2).
-__attribute__((address_space(2))) int *A, *B;
-
-// CHECK: define void @test3()
-// CHECK: load i32 addrspace(2)** @B
-// CHECK: load i32 addrspace(2)* 
-// CHECK: load i32 addrspace(2)** @A
-// CHECK: store i32 {{.*}}, i32 addrspace(2)*
-void test3() {
-  *A = *B;
-}
-
-// PR7437
-typedef struct {
-  float aData[1];
-} MyStruct;
-
-// CHECK: define void @test4(
-// CHECK: call void @llvm.memcpy.p0i8.p2i8
-// CHECK: call void @llvm.memcpy.p2i8.p0i8
-void test4(MyStruct __attribute__((address_space(2))) *pPtr) {
-  MyStruct s = pPtr[0];
-  pPtr[0] = s;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/alias.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/alias.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/alias.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o - %s | FileCheck -check-prefix=CHECKBASIC %s
-// RUN: %clang_cc1 -triple armv7a-eabi -mfloat-abi hard -emit-llvm -o - %s | FileCheck -check-prefix=CHECKCC %s
-
-int g0;
-// CHECKBASIC: @g0 = common global i32 0
-static int bar1 = 42;
-// CHECKBASIC: @bar1 = internal global i32 42
-
-extern int g1;
-extern int g1 __attribute((alias("g0")));
-// CHECKBASIC: @g1 = alias i32* @g0
-
-void f0(void) { }
-extern void f1(void);
-extern void f1(void) __attribute((alias("f0")));
-// CHECKBASIC: @f1 = alias void ()* @f0
-// CHECKBASIC: define void @f0() [[NUW:#[0-9]+]] {
-
-// Make sure that aliases cause referenced values to be emitted.
-// PR3200
-static inline int foo1() { return 0; }
-// CHECKBASIC: define internal i32 @foo1()
-int foo() __attribute__((alias("foo1")));
-int bar() __attribute__((alias("bar1")));
-
-extern int test6();
-void test7() { test6(); }  // test6 is emitted as extern.
-
-// test6 changes to alias.
-int test6() __attribute__((alias("test7")));
-
-static int inner(int a) { return 0; }
-static int inner_weak(int a) { return 0; }
-extern __typeof(inner) inner_a __attribute__((alias("inner")));
-static __typeof(inner_weak) inner_weak_a __attribute__((weakref, alias("inner_weak")));
-// CHECKCC: @inner_a = alias i32 (i32)* @inner
-// CHECKCC: define internal arm_aapcs_vfpcc i32 @inner(i32 %a) [[NUW:#[0-9]+]] {
-
-int outer(int a) { return inner(a); }
-// CHECKCC: define arm_aapcs_vfpcc i32 @outer(i32 %a) [[NUW]] {
-// CHECKCC: call arm_aapcs_vfpcc  i32 @inner(i32 %{{.*}})
-
-int outer_weak(int a) { return inner_weak_a(a); }
-// CHECKCC: define arm_aapcs_vfpcc i32 @outer_weak(i32 %a) [[NUW]] {
-// CHECKCC: call arm_aapcs_vfpcc  i32 @inner_weak(i32 %{{.*}})
-// CHECKCC: define internal arm_aapcs_vfpcc i32 @inner_weak(i32 %a) [[NUW]] {
-
-// CHECKBASIC: attributes [[NUW]] = { nounwind{{.*}} }
-
-// CHECKCC: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/align-global-large.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/align-global-large.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/align-global-large.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// PR13606 - Clang crashes with large alignment attribute
-// RUN: %clang -S -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: x
-// CHECK: align
-// CHECK: 1048576
-volatile char x[4000] __attribute__((aligned(0x100000)));
-
-int
-main (int argc, char ** argv) {
-  // CHECK: y
-  // CHECK: align
-  // CHECK: 1048576
-  volatile char y[4000] __attribute__((aligned(0x100000)));
-
-  return y[argc];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/align-local.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/align-local.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/align-local.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep "align 16" | count 2
-
-typedef struct __attribute((aligned(16))) {int x[4];} ff;
-
-int a() {
-  ff a;
-  struct {int x[4];} b __attribute((aligned(16)));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/align-param.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/align-param.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/align-param.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i386-apple-macosx10.7.2 < %s | FileCheck %s
-
-// The preferred alignment for a long long on x86-32 is 8; make sure the
-// alloca for x uses that alignment.
-int test (long long x) {
-  return (int)x;
-}
-// CHECK: define i32 @test
-// CHECK: alloca i64, align 8
-
-
-// Make sure we honor the aligned attribute.
-struct X { int x,y,z,a; };
-int test2(struct X x __attribute((aligned(16)))) {
-  return x.z;
-}
-// CHECK: define i32 @test2
-// CHECK: alloca %struct.X, align 16

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/alignment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/alignment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/alignment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-__attribute((aligned(16))) float a[128];
-union {int a[4]; __attribute((aligned(16))) float b[4];} b;
-
-// CHECK: @a = {{.*}}zeroinitializer, align 16
-// CHECK: @b = {{.*}}zeroinitializer, align 16
-
-
-
-// PR5279 - Reduced alignment on typedef.
-typedef int myint __attribute__((aligned(1)));
-
-void test1(myint *p) {
-  *p = 0;
-}
-// CHECK: @test1(
-// CHECK: store i32 0, i32* {{.*}}, align 1
-// CHECK: ret void
-
-int test1a(myint *p) {
-  return *p;
-}
-// CHECK: @test1a(
-// CHECK: load i32* {{.*}}, align 1
-// CHECK: ret i32
-
-
-// PR5279 - Reduced alignment on typedef.
-typedef float __attribute__((vector_size(16), aligned(4))) packedfloat4;
-
-void test2(packedfloat4 *p) {
-  *p = (packedfloat4) { 3.2f, 2.3f, 0.1f, 0.0f };
-}
-// CHECK: @test2(
-// CHECK: store <4 x float> {{.*}}, align 4
-// CHECK: ret void
-
-
-// PR5279 - Reduced alignment on typedef.
-typedef float __attribute__((ext_vector_type(3), aligned(4))) packedfloat3;
-void test3(packedfloat3 *p) {
-  *p = (packedfloat3) { 3.2f, 2.3f, 0.1f };
-}
-// CHECK: @test3(
-// CHECK: %{{.*}} = bitcast <3 x float>* %{{.*}} to <4 x float>*
-// CHECK: store <4 x float> {{.*}}, align 4
-// CHECK: ret void
-
-
-
-typedef float __attribute__((vector_size(16), aligned(64))) float4align64;
-
-// rdar://10639962 - Typedef alignment lost in p[]-style dereferencing
-void test4(float4align64 *p) {
-  p[0] = (float4align64){ 3.2f, 2.3f, 0.1f, 0.0f };
-}
-// CHECK: @test4(
-// CHECK: store <4 x float> {{.*}}, <4 x float>* {{.*}}, align 64
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/alignof.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/alignof.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/alignof.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O1 -emit-llvm -o %t %s
-// RUN: grep 'ret i32 4' %t
-
-enum e0 { E0 };
-struct s0 {
-  enum e0         a:31;
-};
-
-struct s0 t1_tmp;
-int f0() {
-  return __alignof__(t1_tmp);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/alloca.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/alloca.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/alloca.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s  -o /dev/null
-
-typedef __SIZE_TYPE__ size_t;
-void *alloca(size_t size);
-char *strcpy(char *restrict s1, const char *restrict s2);
-int puts(const char *s);
-int main(int argc, char **argv) {
-  char *C = (char*)alloca(argc);
-  strcpy(C, argv[0]);
-  puts(C);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/altivec.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/altivec.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/altivec.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// REQUIRES: ppc32-registered-target
-// RUN: %clang_cc1 -faltivec -triple powerpc-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-
-// Check initialization
-
-vector int test0 = (vector int)(1);       // CHECK: @test0 = global <4 x i32> <i32 1, i32 1, i32 1, i32 1>
-vector float test1 = (vector float)(1.0); // CHECK: @test1 = global <4 x float> <float 1.000000e+{{0+}}, float 1.000000e+{{0+}}, float 1.000000e+{{0+}}, float 1.000000e+{{0+}}>
-
-// CHECK: @v1 = global <16 x i8> <i8 0, i8 0, i8 0, i8 1, i8 0, i8 0, i8 0, i8 2, i8 0, i8 0, i8 0, i8 3, i8 0, i8 0, i8 0, i8 4>
-vector char v1 = (vector char)((vector int)(1, 2, 3, 4));
-// CHECK: @v2 = global <16 x i8> <i8 63, i8 -128, i8 0, i8 0, i8 64, i8 0, i8 0, i8 0, i8 64, i8 64, i8 0, i8 0, i8 64, i8 -128, i8 0, i8 0>
-vector char v2 = (vector char)((vector float)(1.0f, 2.0f, 3.0f, 4.0f));
-// CHECK: @v3 = global <16 x i8> <i8 0, i8 0, i8 0, i8 97, i8 0, i8 0, i8 0, i8 98, i8 0, i8 0, i8 0, i8 99, i8 0, i8 0, i8 0, i8 100>
-vector char v3 = (vector char)((vector int)('a', 'b', 'c', 'd'));
-// CHECK: @v4 = global <4 x i32> <i32 16909060, i32 0, i32 0, i32 0>
-vector int v4 = (vector char){1, 2, 3, 4};
-
-void test2()
-{
-  vector int vi;
-  vector float vf;
-  vi = (vector int)(1);             // CHECK: <i32 1, i32 1, i32 1, i32 1>
-  vf = (vector float)(1.0);         // CHECK: <float 1.000000e+{{0+}}, float 1.000000e+{{0+}}, float 1.000000e+{{0+}}, float 1.000000e+{{0+}}>
-  vi = (vector int)(1, 2, 3, 4);    // CHECK: <i32 1, i32 2, i32 3, i32 4>
-  vi = (vector int)(1, 2, 3, 4, 5); // CHECK: <i32 1, i32 2, i32 3, i32 4>
-
-  vi = (vector int){1};             // CHECK: <i32 1, i32 0, i32 0, i32 0>
-  vi = (vector int){1, 2};          // CHECK: <i32 1, i32 2, i32 0, i32 0>
-  vi = (vector int){1, 2, 3, 4};    // CHECK: <i32 1, i32 2, i32 3, i32 4>
-
-}
-
-// Check pre/post increment/decrement
-void test3() {
-  vector int vi;
-  vi++;                                    // CHECK: add <4 x i32> {{.*}} <i32 1, i32 1, i32 1, i32 1>
-  vector unsigned int vui;
-  --vui;                                   // CHECK: add <4 x i32> {{.*}} <i32 -1, i32 -1, i32 -1, i32 -1>
-  vector float vf;
-  vf++;                                    // CHECK: fadd <4 x float> {{.*}} <float 1.000000e+{{0+}}, float 1.000000e+{{0+}}, float 1.000000e+{{0+}}, float 1.000000e+{{0+}}>
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/always-inline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/always-inline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/always-inline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-// RUN: %clang_cc1 -fno-inline -emit-llvm %s -o - | FileCheck %s
-
-// CHECK-NOT: foo
-
-void bar() {
-}
-
-inline void __attribute__((__always_inline__)) foo() {
-  bar();
-}
-
-void i_want_bar() {
-  foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/always_inline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/always_inline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/always_inline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang -emit-llvm -S -o %t %s
-// RUN: not grep '@f0' %t
-// RUN: not grep 'call ' %t
-// RUN: %clang -mllvm -disable-llvm-optzns -emit-llvm -S -o %t %s
-// RUN: grep '@f0' %t | count 2
-
-//static int f0() { 
-static int __attribute__((always_inline)) f0() { 
-  return 1;
-}
-
-int f1() {
-  return f0();
-}
-
-// PR4372
-inline int f2() __attribute__((always_inline));
-int f2() { return 7; }
-int f3(void) { return f2(); }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-builtin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-builtin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-builtin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-// END.
-
-static long long llfoo;
-static int intfoo;
-static short shortfoo;
-static char charfoo;
-
-// CHECK: private unnamed_addr constant [13 x i8] {{.*}}annotation_a{{.*}} section "llvm.metadata"
-// CHECK-NOT: {{.*}}annotation_a{{.*}}
-
-static int foo(int a) {
-    return a + 1;
-}
-
-int main(int argc, char **argv) {
-    char barray[16];
-    char *b = (char *) __builtin_annotation((int)barray, "annotation_a");
-// CHECK: ptrtoint i8* {{.*}} to i32
-// CHECK-NEXT: call i32 @llvm.annotation.i32
-// CHECK: inttoptr {{.*}} to i8*
-
-    int call = __builtin_annotation(foo(argc), "annotation_a");
-// CHECK: call {{.*}} @foo
-// CHECK: call i32 @llvm.annotation.i32
-
-    long long lla = __builtin_annotation(llfoo, "annotation_a");
-// CHECK: call i64 @llvm.annotation.i64
-
-    int inta = __builtin_annotation(intfoo, "annotation_a");
-// CHECK: load i32* @intfoo
-// CHECK-NEXT: call i32 @llvm.annotation.i32
-// CHECK-NEXT: store
-
-    short shorta =  __builtin_annotation(shortfoo, "annotation_a");
-// CHECK: call i16 @llvm.annotation.i16
-
-    char chara = __builtin_annotation(charfoo, "annotation_a");
-// CHECK: call i8 @llvm.annotation.i8
-
-    char **arg = (char**) __builtin_annotation((int) argv, "annotation_a");
-// CHECK: ptrtoint i8** {{.*}} to
-// CHECK: call i32 @llvm.annotation.i32
-// CHECK: inttoptr {{.*}} to i8**
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-field.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-field.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-field.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-// END.
-
-// CHECK: private unnamed_addr constant [8 x i8] c"v_ann_{{.}}\00", section "llvm.metadata"
-// CHECK: private unnamed_addr constant [8 x i8] c"v_ann_{{.}}\00", section "llvm.metadata"
-
-struct foo {
-    int v __attribute__((annotate("v_ann_0"))) __attribute__((annotate("v_ann_1")));
-};
-
-static struct foo gf;
-
-int main(int argc, char **argv) {
-    struct foo f;
-    f.v = argc;
-// CHECK: getelementptr inbounds %struct.foo* %f, i32 0, i32 0
-// CHECK-NEXT: bitcast i32* {{.*}} to i8*
-// CHECK-NEXT: call i8* @llvm.ptr.annotation.p0i8({{.*}}str{{.*}}str{{.*}}i32 8)
-// CHECK-NEXT: bitcast i8* {{.*}} to i32*
-// CHECK-NEXT: bitcast i32* {{.*}} to i8*
-// CHECK-NEXT: call i8* @llvm.ptr.annotation.p0i8({{.*}}str{{.*}}str{{.*}}i32 8)
-// CHECK-NEXT: bitcast i8* {{.*}} to i32*
-    gf.v = argc;
-// CHECK: bitcast i32* getelementptr inbounds (%struct.foo* @gf, i32 0, i32 0) to i8*
-// CHECK-NEXT: call i8* @llvm.ptr.annotation.p0i8({{.*}}str{{.*}}str{{.*}}i32 8)
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-global.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-global.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-global.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t1
-// RUN: FileCheck --check-prefix=FOO %s < %t1
-// RUN: FileCheck --check-prefix=A %s < %t1
-// RUN: FileCheck --check-prefix=BAR %s < %t1
-// RUN: FileCheck --check-prefix=FOOS %s < %t1
-// END.
-
-static __attribute((annotate("sfoo_0"))) __attribute((annotate("sfoo_1"))) char sfoo;
-__attribute((annotate("foo_0"))) __attribute((annotate("foo_1"))) char foo;
-
-void __attribute((annotate("ann_a_0"))) __attribute((annotate("ann_a_1"))) __attribute((annotate("ann_a_2"))) __attribute((annotate("ann_a_3"))) a(char *a);
-void __attribute((annotate("ann_a_0"))) __attribute((annotate("ann_a_1"))) a(char *a) {
-  __attribute__((annotate("bar_0"))) __attribute__((annotate("bar_1"))) static char bar;
-  sfoo = 0;
-}
-
-// FOOS: target triple
-// FOOS: private unnamed_addr constant [7 x i8] c"sfoo_{{.}}\00", section "llvm.metadata"
-// FOOS: private unnamed_addr constant [7 x i8] c"sfoo_{{.}}\00", section "llvm.metadata"
-// FOOS-NOT: sfoo_
-// FOOS: @llvm.global.annotations = appending global [10 x { i8*, i8*, i8*, i32 }] {{.*}}i8* @sfoo{{.*}}i8* @sfoo{{.*}}, section "llvm.metadata"
-
-// FOO: target triple
-// FOO: private unnamed_addr constant [6 x i8] c"foo_{{.}}\00", section "llvm.metadata"
-// FOO: private unnamed_addr constant [6 x i8] c"foo_{{.}}\00", section "llvm.metadata"
-// FOO-NOT: foo_
-// FOO: @llvm.global.annotations = appending global [10 x { i8*, i8*, i8*, i32 }] {{.*}}i8* @foo{{.*}}i8* @foo{{.*}}, section "llvm.metadata"
-
-// A: target triple
-// A: private unnamed_addr constant [8 x i8] c"ann_a_{{.}}\00", section "llvm.metadata"
-// A: private unnamed_addr constant [8 x i8] c"ann_a_{{.}}\00", section "llvm.metadata"
-// A: private unnamed_addr constant [8 x i8] c"ann_a_{{.}}\00", section "llvm.metadata"
-// A: private unnamed_addr constant [8 x i8] c"ann_a_{{.}}\00", section "llvm.metadata"
-// A-NOT: ann_a_
-// A: @llvm.global.annotations = appending global [10 x { i8*, i8*, i8*, i32 }] {{.*}}i8* bitcast (void (i8*)* @a to i8*){{.*}}i8* bitcast (void (i8*)* @a to i8*){{.*}}i8* bitcast (void (i8*)* @a to i8*){{.*}}i8* bitcast (void (i8*)* @a to i8*){{.*}}, section "llvm.metadata"
-
-// BAR: target triple
-// BAR: private unnamed_addr constant [6 x i8] c"bar_{{.}}\00", section "llvm.metadata"
-// BAR: private unnamed_addr constant [6 x i8] c"bar_{{.}}\00", section "llvm.metadata"
-// BAR-NOT: bar_
-// BAR: @llvm.global.annotations = appending global [10 x { i8*, i8*, i8*, i32 }] {{.*}}i8* @a.bar{{.*}}i8* @a.bar{{.*}}, section "llvm.metadata"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-loc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-loc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-loc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-// END.
-# 1 "t.c"
-# 1 "<built-in>"
-# 1 "<command-line>"
-# 1 "t.c"
-int __attribute((annotate("foo"))) foo(void) { return 0; }
-
-// CHECK: private unnamed_addr constant [4 x i8] c"t.c\00"
-// CHECK: @llvm.global.annotations = {{.*}}, i32 1 }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-var.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-var.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/annotations-var.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t1 %s
-// RUN: FileCheck --check-prefix=LOCAL %s < %t1
-// RUN: FileCheck --check-prefix=UNDEF %s < %t1
-// RUN: FileCheck --check-prefix=PARAM %s < %t1
-// END.
-
-// LOCAL: private unnamed_addr constant [15 x i8] c"localvar_ann_{{.}}\00", section "llvm.metadata"
-// LOCAL: private unnamed_addr constant [15 x i8] c"localvar_ann_{{.}}\00", section "llvm.metadata"
-
-// UNDEF: private unnamed_addr constant [15 x i8] c"undefvar_ann_0\00", section "llvm.metadata"
-
-// PARAM: private unnamed_addr constant [12 x i8] c"param_ann_{{.}}\00", section "llvm.metadata"
-// PARAM: private unnamed_addr constant [12 x i8] c"param_ann_{{.}}\00", section "llvm.metadata"
-// PARAM: private unnamed_addr constant [12 x i8] c"param_ann_{{.}}\00", section "llvm.metadata"
-// PARAM: private unnamed_addr constant [12 x i8] c"param_ann_{{.}}\00", section "llvm.metadata"
-
-int foo(int v __attribute__((annotate("param_ann_2"))) __attribute__((annotate("param_ann_3"))));
-int foo(int v __attribute__((annotate("param_ann_0"))) __attribute__((annotate("param_ann_1")))) {
-    return v + 1;
-// PARAM: define {{.*}}@foo
-// PARAM:      [[V:%.*]] = alloca i32
-// PARAM:      bitcast i32* [[V]] to i8*
-// PARAM-NEXT: call void @llvm.var.annotation(
-// PARAM-NEXT: bitcast i32* [[V]] to i8*
-// PARAM-NEXT: call void @llvm.var.annotation(
-// PARAM-NEXT: bitcast i32* [[V]] to i8*
-// PARAM-NEXT: call void @llvm.var.annotation(
-// PARAM-NEXT: bitcast i32* [[V]] to i8*
-// PARAM-NEXT: call void @llvm.var.annotation(
-}
-
-void local(void) {
-    int localvar __attribute__((annotate("localvar_ann_0"))) __attribute__((annotate("localvar_ann_1"))) = 3;
-// LOCAL: define void @local()
-// LOCAL:      [[LOCALVAR:%.*]] = alloca i32,
-// LOCAL-NEXT: [[T0:%.*]] = bitcast i32* [[LOCALVAR]] to i8*
-// LOCAL-NEXT: call void @llvm.var.annotation(i8* [[T0]], i8* getelementptr inbounds ([15 x i8]* @{{.*}}), i8* getelementptr inbounds ({{.*}}), i32 33)
-// LOCAL-NEXT: [[T0:%.*]] = bitcast i32* [[LOCALVAR]] to i8*
-// LOCAL-NEXT: call void @llvm.var.annotation(i8* [[T0]], i8* getelementptr inbounds ([15 x i8]* @{{.*}}), i8* getelementptr inbounds ({{.*}}), i32 33)
-}
-
-void undef(void) {
-    int undefvar __attribute__((annotate("undefvar_ann_0")));
-// UNDEF: define void @undef()
-// UNDEF:      [[UNDEFVAR:%.*]] = alloca i32,
-// UNDEF-NEXT: [[T0:%.*]] = bitcast i32* [[UNDEFVAR]] to i8*
-// UNDEF-NEXT: call void @llvm.var.annotation(i8* [[T0]], i8* getelementptr inbounds ([15 x i8]* @{{.*}}), i8* getelementptr inbounds ({{.*}}), i32 43)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-aapcs-vfp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-aapcs-vfp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-aapcs-vfp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple thumbv7-apple-darwin9 \
-// RUN:   -target-abi aapcs \
-// RUN:   -target-cpu cortex-a8 \
-// RUN:   -mfloat-abi hard \
-// RUN:   -ffreestanding \
-// RUN:   -emit-llvm -w -o - %s | FileCheck %s
-
-// RUN: %clang_cc1 -triple armv7-unknown-nacl-gnueabi \
-// RUN:  -target-cpu cortex-a8 \
-// RUN:  -mfloat-abi hard \
-// RUN:  -ffreestanding \
-// RUN:  -emit-llvm -w -o - %s | FileCheck %s
-
-#include <arm_neon.h>
-
-struct homogeneous_struct {
-  float f[2];
-  float f3;
-  float f4;
-};
-// CHECK: define arm_aapcs_vfpcc %struct.homogeneous_struct @test_struct(float %{{.*}}, float %{{.*}}, float %{{.*}}, float %{{.*}})
-extern struct homogeneous_struct struct_callee(struct homogeneous_struct);
-struct homogeneous_struct test_struct(struct homogeneous_struct arg) {
-  return struct_callee(arg);
-}
-
-struct nested_array {
-  double d[4];
-};
-// CHECK: define arm_aapcs_vfpcc void @test_array(double %{{.*}}, double %{{.*}}, double %{{.*}}, double %{{.*}})
-extern void array_callee(struct nested_array);
-void test_array(struct nested_array arg) {
-  array_callee(arg);
-}
-
-extern void complex_callee(__complex__ double);
-// CHECK: define arm_aapcs_vfpcc void @test_complex(double %{{.*}}, double %{{.*}})
-void test_complex(__complex__ double cd) {
-  complex_callee(cd);
-}
-
-// Long double is the same as double on AAPCS, it should be homogeneous.
-extern void complex_long_callee(__complex__ long double);
-// CHECK: define arm_aapcs_vfpcc void @test_complex_long(double %{{.*}}, double %{{.*}})
-void test_complex_long(__complex__ long double cd) {
-  complex_callee(cd);
-}
-
-// Structs with more than 4 elements of the base type are not treated
-// as homogeneous aggregates.  Test that.
-
-struct big_struct {
-  float f1;
-  float f[2];
-  float f3;
-  float f4;
-};
-// CHECK: define arm_aapcs_vfpcc void @test_big([5 x i32] %{{.*}})
-extern void big_callee(struct big_struct);
-void test_big(struct big_struct arg) {
-  big_callee(arg);
-}
-
-// Make sure that aggregates with multiple base types are not treated as
-// homogeneous aggregates.
-
-struct heterogeneous_struct {
-  float f1;
-  int i2;
-};
-// CHECK: define arm_aapcs_vfpcc void @test_hetero([2 x i32] %{{.*}})
-extern void hetero_callee(struct heterogeneous_struct);
-void test_hetero(struct heterogeneous_struct arg) {
-  hetero_callee(arg);
-}
-
-// Neon multi-vector types are homogeneous aggregates.
-// CHECK: define arm_aapcs_vfpcc <16 x i8> @f0(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
-int8x16_t f0(int8x16x4_t v4) {
-  return vaddq_s8(v4.val[0], v4.val[3]);
-}
-
-// ...and it doesn't matter whether the vectors are exactly the same, as long
-// as they have the same size.
-
-struct neon_struct {
-  int8x8x2_t v12;
-  int32x2_t v3;
-  int16x4_t v4;
-};
-// CHECK: define arm_aapcs_vfpcc void @test_neon(<8 x i8> %{{.*}}, <8 x i8> %{{.*}}, <2 x i32> %{{.*}}, <4 x i16> %{{.*}})
-extern void neon_callee(struct neon_struct);
-void test_neon(struct neon_struct arg) {
-  neon_callee(arg);
-}
-
-// CHECK: define arm_aapcs_vfpcc void @f33(%struct.s33* byval %s)
-struct s33 { char buf[32*32]; };
-void f33(struct s33 s) { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-aapcs-zerolength-bitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-aapcs-zerolength-bitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-aapcs-zerolength-bitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,238 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -target-abi aapcs -triple armv7-apple-darwin10 %s -verify
-// expected-no-diagnostics
-
-#include <stddef.h>
-
-struct t1
-{
-  int foo : 1;
-  char : 0;
-  char bar;
-};
-static int arr1_offset[(offsetof(struct t1, bar) == 1) ? 0 : -1];
-static int arr1_sizeof[(sizeof(struct t1) == 4) ? 0 : -1];
-
-struct t2
-{
-  int foo : 1;
-  short : 0;
-  char bar;
-};
-static int arr2_offset[(offsetof(struct t2, bar) == 2) ? 0 : -1];
-static int arr2_sizeof[(sizeof(struct t2) == 4) ? 0 : -1];
-
-struct t3
-{
-  int foo : 1;
-  int : 0;
-  char bar;
-};
-static int arr3_offset[(offsetof(struct t3, bar) == 4) ? 0 : -1];
-static int arr3_sizeof[(sizeof(struct t3) == 8) ? 0 : -1];
-
-struct t4
-{
-  int foo : 1;
-  long : 0;
-  char bar;
-};
-static int arr4_offset[(offsetof(struct t4, bar) == 4) ? 0 : -1];
-static int arr4_sizeof[(sizeof(struct t4) == 8) ? 0 : -1];
-
-struct t5
-{
-  int foo : 1;
-  long long : 0;
-  char bar;
-};
-static int arr5_offset[(offsetof(struct t5, bar) == 8) ? 0 : -1];
-static int arr5_sizeof[(sizeof(struct t5) == 16) ? 0 : -1];
-
-struct t6
-{
-  int foo : 1;
-  char : 0;
-  char bar : 1;
-  char bar2;
-};
-static int arr6_offset[(offsetof(struct t6, bar2) == 2) ? 0 : -1];
-static int arr6_sizeof[(sizeof(struct t6) == 4) ? 0 : -1];
-
-struct t7
-{
-  int foo : 1;
-  short : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr7_offset[(offsetof(struct t7, bar2) == 3) ? 0 : -1];
-static int arr7_sizeof[(sizeof(struct t7) == 4) ? 0 : -1];
-
-struct t8
-{
-  int foo : 1;
-  int : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr8_offset[(offsetof(struct t8, bar2) == 5) ? 0 : -1];
-static int arr8_sizeof[(sizeof(struct t8) == 8) ? 0 : -1];
-
-struct t9
-{
-  int foo : 1;
-  long : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr9_offset[(offsetof(struct t9, bar2) == 5) ? 0 : -1];
-static int arr9_sizeof[(sizeof(struct t9) == 8) ? 0 : -1];
-
-struct t10
-{
-  int foo : 1;
-  long long : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr10_offset[(offsetof(struct t10, bar2) == 9) ? 0 : -1];
-static int arr10_sizeof[(sizeof(struct t10) == 16) ? 0 : -1];
-
-struct t11
-{
-  int foo : 1;
-  long long : 0;
-  char : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr11_offset[(offsetof(struct t11, bar2) == 9) ? 0 : -1];
-static int arr11_sizeof[(sizeof(struct t11) == 16) ? 0 : -1];
-
-struct t12
-{
-  int foo : 1;
-  char : 0;
-  long long : 0;
-  char : 0;
-  char bar;
-};
-static int arr12_offset[(offsetof(struct t12, bar) == 8) ? 0 : -1];
-static int arr12_sizeof[(sizeof(struct t12) == 16) ? 0 : -1];
-
-struct t13
-{
-  char foo;
-  long : 0;
-  char bar;
-};
-static int arr13_offset[(offsetof(struct t13, bar) == 4) ? 0 : -1];
-static int arr13_sizeof[(sizeof(struct t13) == 8) ? 0 : -1];
-
-struct t14
-{
-  char foo1;
-  int : 0;
-  char foo2 : 1;
-  short foo3 : 16;
-  char : 0;
-  short foo4 : 16;
-  char bar1;
-  int : 0;
-  char bar2;
-};
-static int arr14_bar1_offset[(offsetof(struct t14, bar1) == 10) ? 0 : -1];
-static int arr14_bar2_offset[(offsetof(struct t14, bar2) == 12) ? 0 : -1];
-static int arr14_sizeof[(sizeof(struct t14) == 16) ? 0 : -1];
-
-struct t15
-{
-  char foo;
-  char : 0;
-  int : 0;
-  char bar;
-  long : 0;
-  char : 0;
-};
-static int arr15_offset[(offsetof(struct t15, bar) == 4) ? 0 : -1];
-static int arr15_sizeof[(sizeof(struct t15) == 8) ? 0 : -1];
-
-struct t16
-{
-  long : 0;
-  char bar;
-};
-static int arr16_offset[(offsetof(struct t16, bar) == 0) ? 0 : -1];
-static int arr16_sizeof[(sizeof(struct t16) == 4) ? 0 : -1];
-
-struct t17
-{
-  char foo;
-  long : 0;
-  long : 0;
-  char : 0;
-  char bar;
-};
-static int arr17_offset[(offsetof(struct t17, bar) == 4) ? 0 : -1];
-static int arr17_sizeof[(sizeof(struct t17) == 8) ? 0 : -1];
-
-struct t18
-{
-  long : 0;
-  long : 0;
-  char : 0;
-};
-static int arr18_sizeof[(sizeof(struct t18) == 0) ? 0 : -1];
-
-struct t19
-{
-  char foo1;
-  long foo2 : 1;
-  char : 0;
-  long foo3 : 32;
-  char bar;
-};
-static int arr19_offset[(offsetof(struct t19, bar) == 8) ? 0 : -1];
-static int arr19_sizeof[(sizeof(struct t19) == 12) ? 0 : -1];
-
-struct t20
-{
-  short : 0;
-  int foo : 1;
-  long : 0;
-  char bar;
-};
-static int arr20_offset[(offsetof(struct t20, bar) == 4) ? 0 : -1];
-static int arr20_sizeof[(sizeof(struct t20) == 8) ? 0 : -1];
-
-struct t21
-{
-  short : 0;
-  int foo1 : 1;
-  char : 0;
-  int foo2 : 16;
-  long : 0;
-  char bar1;
-  int bar2;
-  long bar3;
-  char foo3 : 8;
-  char : 0;
-  long : 0;
-  int foo4 : 32;
-  short foo5: 1;
-  long bar4;
-  short foo6: 16;
-  short foo7: 16;
-  short foo8: 16;
-};
-static int arr21_bar1_offset[(offsetof(struct t21, bar1) == 4) ? 0 : -1];
-static int arr21_bar2_offset[(offsetof(struct t21, bar2) == 8) ? 0 : -1];
-static int arr21_bar3_offset[(offsetof(struct t21, bar3) == 12) ? 0 : -1];
-static int arr21_bar4_offset[(offsetof(struct t21, bar4) == 28) ? 0 : -1];
-static int arr21_sizeof[(sizeof(struct t21) == 40) ? 0 : -1];
-
-int main() {
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-abi-vector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-abi-vector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-abi-vector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,263 +0,0 @@
-// RUN: %clang_cc1 -triple armv7-apple-darwin -target-abi aapcs -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple armv7-apple-darwin -target-abi apcs-gnu -emit-llvm -o - %s | FileCheck -check-prefix=APCS-GNU %s
-
-#include <stdarg.h>
-
-typedef __attribute__(( ext_vector_type(2) ))  int __int2;
-typedef __attribute__(( ext_vector_type(3) ))  char __char3;
-typedef __attribute__(( ext_vector_type(5) ))  char __char5;
-typedef __attribute__(( ext_vector_type(9) ))  char __char9;
-typedef __attribute__(( ext_vector_type(19) )) char __char19;
-typedef __attribute__(( ext_vector_type(3) ))  short __short3;
-typedef __attribute__(( ext_vector_type(5) ))  short __short5;
-
-// Passing legal vector types as varargs.
-double varargs_vec_2i(int fixed, ...) {
-// CHECK: varargs_vec_2i
-// CHECK: alloca <2 x i32>, align 8
-// CHECK: [[ALIGN:%.*]] = and i32 [[VAR:%.*]], -8
-// CHECK: [[AP_ALIGN:%.*]] = inttoptr i32 [[ALIGN]] to i8*
-// CHECK: [[AP_NEXT:%.*]] = getelementptr i8* [[AP_ALIGN]], i32 8
-// CHECK: bitcast i8* [[AP_ALIGN]] to <2 x i32>*
-// APCS-GNU: varargs_vec_2i
-// APCS-GNU: alloca <2 x i32>, align 8
-// APCS-GNU: [[VAR_ALIGN:%.*]] = alloca <2 x i32>
-// APCS-GNU: [[AP_NEXT:%.*]] = getelementptr i8* {{%.*}}, i32 8
-// APCS-GNU: bitcast <2 x i32>* [[VAR_ALIGN]] to i8*
-// APCS-GNU: call void @llvm.memcpy
-// APCS-GNU: load <2 x i32>* [[VAR_ALIGN]]
-  va_list ap;
-  double sum = fixed;
-  va_start(ap, fixed);
-  __int2 c3 = va_arg(ap, __int2);
-  sum = sum + c3.x + c3.y;
-  va_end(ap);
-  return sum;
-}
-
-double test_2i(__int2 *in) {
-// CHECK: test_2i
-// CHECK: call arm_aapcscc double (i32, ...)* @varargs_vec_2i(i32 3, <2 x i32> {{%.*}})
-// APCS-GNU: test_2i
-// APCS-GNU: call double (i32, ...)* @varargs_vec_2i(i32 3, <2 x i32> {{%.*}})
-  return varargs_vec_2i(3, *in);
-}
-
-double varargs_vec_3c(int fixed, ...) {
-// CHECK: varargs_vec_3c
-// CHECK: alloca <3 x i8>, align 4
-// CHECK: [[AP_NEXT:%.*]] = getelementptr i8* [[AP:%.*]], i32 4
-// CHECK: bitcast i8* [[AP]] to <3 x i8>*
-// APCS-GNU: varargs_vec_3c
-// APCS-GNU: alloca <3 x i8>, align 4
-// APCS-GNU: [[AP_NEXT:%.*]] = getelementptr i8* [[AP:%.*]], i32 4
-// APCS-GNU: bitcast i8* [[AP]] to <3 x i8>*
-  va_list ap;
-  double sum = fixed;
-  va_start(ap, fixed);
-  __char3 c3 = va_arg(ap, __char3);
-  sum = sum + c3.x + c3.y;
-  va_end(ap);
-  return sum;
-}
-
-double test_3c(__char3 *in) {
-// CHECK: test_3c
-// CHECK: call arm_aapcscc double (i32, ...)* @varargs_vec_3c(i32 3, i32 {{%.*}})
-// APCS-GNU: test_3c
-// APCS-GNU: call double (i32, ...)* @varargs_vec_3c(i32 3, i32 {{%.*}})
-  return varargs_vec_3c(3, *in);
-}
-
-double varargs_vec_5c(int fixed, ...) {
-// CHECK: varargs_vec_5c
-// CHECK: alloca <5 x i8>, align 8
-// CHECK: [[ALIGN:%.*]] = and i32 {{%.*}}, -8
-// CHECK: [[AP_ALIGN:%.*]] = inttoptr i32 [[ALIGN]] to i8*
-// CHECK: [[AP_NEXT:%.*]] = getelementptr i8* [[AP_ALIGN]], i32 8
-// CHECK: bitcast i8* [[AP_ALIGN]] to <5 x i8>*
-// APCS-GNU: varargs_vec_5c
-// APCS-GNU: alloca <5 x i8>, align 8
-// APCS-GNU: [[VAR_ALIGN:%.*]] = alloca <5 x i8>
-// APCS-GNU: [[AP_NEXT:%.*]] = getelementptr i8* {{%.*}}, i32 8
-// APCS-GNU: bitcast <5 x i8>* [[VAR_ALIGN]] to i8*
-// APCS-GNU: call void @llvm.memcpy
-// APCS-GNU: load <5 x i8>* [[VAR_ALIGN]]
-  va_list ap;
-  double sum = fixed;
-  va_start(ap, fixed);
-  __char5 c5 = va_arg(ap, __char5);
-  sum = sum + c5.x + c5.y;
-  va_end(ap);
-  return sum;
-}
-
-double test_5c(__char5 *in) {
-// CHECK: test_5c
-// CHECK: call arm_aapcscc double (i32, ...)* @varargs_vec_5c(i32 5, <2 x i32> {{%.*}})
-// APCS-GNU: test_5c
-// APCS-GNU: call double (i32, ...)* @varargs_vec_5c(i32 5, <2 x i32> {{%.*}})
-  return varargs_vec_5c(5, *in);
-}
-
-double varargs_vec_9c(int fixed, ...) {
-// CHECK: varargs_vec_9c
-// CHECK: alloca <9 x i8>, align 16
-// CHECK: [[VAR_ALIGN:%.*]] = alloca <9 x i8>
-// CHECK: [[ALIGN:%.*]] = and i32 {{%.*}}, -8
-// CHECK: [[AP_ALIGN:%.*]] = inttoptr i32 [[ALIGN]] to i8*
-// CHECK: [[AP_NEXT:%.*]] = getelementptr i8* [[AP_ALIGN]], i32 16
-// CHECK: bitcast <9 x i8>* [[VAR_ALIGN]] to i8*
-// CHECK: call void @llvm.memcpy
-// CHECK: load <9 x i8>* [[VAR_ALIGN]]
-// APCS-GNU: varargs_vec_9c
-// APCS-GNU: alloca <9 x i8>, align 16
-// APCS-GNU: [[VAR_ALIGN:%.*]] = alloca <9 x i8>
-// APCS-GNU: [[AP_NEXT:%.*]] = getelementptr i8* {{%.*}}, i32 16
-// APCS-GNU: bitcast <9 x i8>* [[VAR_ALIGN]] to i8*
-// APCS-GNU: call void @llvm.memcpy
-// APCS-GNU: load <9 x i8>* [[VAR_ALIGN]]
-  va_list ap;
-  double sum = fixed;
-  va_start(ap, fixed);
-  __char9 c9 = va_arg(ap, __char9);
-  sum = sum + c9.x + c9.y;
-  va_end(ap);
-  return sum;
-}
-
-double test_9c(__char9 *in) {
-// CHECK: test_9c
-// CHECK: call arm_aapcscc double (i32, ...)* @varargs_vec_9c(i32 9, <4 x i32> {{%.*}})
-// APCS-GNU: test_9c
-// APCS-GNU: call double (i32, ...)* @varargs_vec_9c(i32 9, <4 x i32> {{%.*}})
-  return varargs_vec_9c(9, *in);
-}
-
-double varargs_vec_19c(int fixed, ...) {
-// CHECK: varargs_vec_19c
-// CHECK: [[AP_NEXT:%.*]] = getelementptr i8* [[AP:%.*]], i32 4
-// CHECK: [[VAR:%.*]] = bitcast i8* [[AP]] to i8**
-// CHECK: [[VAR2:%.*]] = load i8** [[VAR]]
-// CHECK: bitcast i8* [[VAR2]] to <19 x i8>*
-// APCS-GNU: varargs_vec_19c
-// APCS-GNU: [[AP_NEXT:%.*]] = getelementptr i8* [[AP:%.*]], i32 4
-// APCS-GNU: [[VAR:%.*]] = bitcast i8* [[AP]] to i8**
-// APCS-GNU: [[VAR2:%.*]] = load i8** [[VAR]]
-// APCS-GNU: bitcast i8* [[VAR2]] to <19 x i8>*
-  va_list ap;
-  double sum = fixed;
-  va_start(ap, fixed);
-  __char19 c19 = va_arg(ap, __char19);
-  sum = sum + c19.x + c19.y;
-  va_end(ap);
-  return sum;
-}
-
-double test_19c(__char19 *in) {
-// CHECK: test_19c
-// CHECK: call arm_aapcscc double (i32, ...)* @varargs_vec_19c(i32 19, <19 x i8>* {{%.*}})
-// APCS-GNU: test_19c
-// APCS-GNU: call double (i32, ...)* @varargs_vec_19c(i32 19, <19 x i8>* {{%.*}})
-  return varargs_vec_19c(19, *in);
-}
-
-double varargs_vec_3s(int fixed, ...) {
-// CHECK: varargs_vec_3s
-// CHECK: alloca <3 x i16>, align 8
-// CHECK: [[ALIGN:%.*]] = and i32 {{%.*}}, -8
-// CHECK: [[AP_ALIGN:%.*]] = inttoptr i32 [[ALIGN]] to i8*
-// CHECK: [[AP_NEXT:%.*]] = getelementptr i8* [[AP_ALIGN]], i32 8
-// CHECK: bitcast i8* [[AP_ALIGN]] to <3 x i16>*
-// APCS-GNU: varargs_vec_3s
-// APCS-GNU: alloca <3 x i16>, align 8
-// APCS-GNU: [[VAR_ALIGN:%.*]] = alloca <3 x i16>
-// APCS-GNU: [[AP_NEXT:%.*]] = getelementptr i8* {{%.*}}, i32 8
-// APCS-GNU: bitcast <3 x i16>* [[VAR_ALIGN]] to i8*
-// APCS-GNU: call void @llvm.memcpy
-// APCS-GNU: load <3 x i16>* [[VAR_ALIGN]]
-  va_list ap;
-  double sum = fixed;
-  va_start(ap, fixed);
-  __short3 c3 = va_arg(ap, __short3);
-  sum = sum + c3.x + c3.y;
-  va_end(ap);
-  return sum;
-}
-
-double test_3s(__short3 *in) {
-// CHECK: test_3s
-// CHECK: call arm_aapcscc double (i32, ...)* @varargs_vec_3s(i32 3, <2 x i32> {{%.*}})
-// APCS-GNU: test_3s
-// APCS-GNU: call double (i32, ...)* @varargs_vec_3s(i32 3, <2 x i32> {{%.*}})
-  return varargs_vec_3s(3, *in);
-}
-
-double varargs_vec_5s(int fixed, ...) {
-// CHECK: varargs_vec_5s
-// CHECK: alloca <5 x i16>, align 16
-// CHECK: [[VAR_ALIGN:%.*]] = alloca <5 x i16>
-// CHECK: [[ALIGN:%.*]] = and i32 {{%.*}}, -8
-// CHECK: [[AP_ALIGN:%.*]] = inttoptr i32 [[ALIGN]] to i8*
-// CHECK: [[AP_NEXT:%.*]] = getelementptr i8* [[AP_ALIGN]], i32 16
-// CHECK: bitcast <5 x i16>* [[VAR_ALIGN]] to i8*
-// CHECK: call void @llvm.memcpy
-// CHECK: load <5 x i16>* [[VAR_ALIGN]]
-// APCS-GNU: varargs_vec_5s
-// APCS-GNU: alloca <5 x i16>, align 16
-// APCS-GNU: [[VAR_ALIGN:%.*]] = alloca <5 x i16>
-// APCS-GNU: [[AP_NEXT:%.*]] = getelementptr i8* {{%.*}}, i32 16
-// APCS-GNU: bitcast <5 x i16>* [[VAR_ALIGN]] to i8*
-// APCS-GNU: call void @llvm.memcpy
-// APCS-GNU: load <5 x i16>* [[VAR_ALIGN]]
-  va_list ap;
-  double sum = fixed;
-  va_start(ap, fixed);
-  __short5 c5 = va_arg(ap, __short5);
-  sum = sum + c5.x + c5.y;
-  va_end(ap);
-  return sum;
-}
-
-double test_5s(__short5 *in) {
-// CHECK: test_5s
-// CHECK: call arm_aapcscc double (i32, ...)* @varargs_vec_5s(i32 5, <4 x i32> {{%.*}})
-// APCS-GNU: test_5s
-// APCS-GNU: call double (i32, ...)* @varargs_vec_5s(i32 5, <4 x i32> {{%.*}})
-  return varargs_vec_5s(5, *in);
-}
-
-// Pass struct as varargs.
-typedef struct
-{
-  __int2 i2;
-  float f;
-} StructWithVec;
-
-double varargs_struct(int fixed, ...) {
-// CHECK: varargs_struct
-// CHECK: [[ALIGN:%.*]] = and i32 {{%.*}}, -8
-// CHECK: [[AP_ALIGN:%.*]] = inttoptr i32 [[ALIGN]] to i8*
-// CHECK: [[AP_NEXT:%.*]] = getelementptr i8* [[AP_ALIGN]], i32 16
-// CHECK: bitcast i8* [[AP_ALIGN]] to %struct.StructWithVec*
-// APCS-GNU: varargs_struct
-// APCS-GNU: [[VAR_ALIGN:%.*]] = alloca %struct.StructWithVec
-// APCS-GNU: [[AP_NEXT:%.*]] = getelementptr i8* {{%.*}}, i32 16
-// APCS-GNU: bitcast %struct.StructWithVec* [[VAR_ALIGN]] to i8*
-// APCS-GNU: call void @llvm.memcpy
-  va_list ap;
-  double sum = fixed;
-  va_start(ap, fixed);
-  StructWithVec c3 = va_arg(ap, StructWithVec);
-  sum = sum + c3.i2.x + c3.i2.y + c3.f;
-  va_end(ap);
-  return sum;
-}
-
-double test_struct(StructWithVec* d) {
-// CHECK: test_struct
-// CHECK: call arm_aapcscc double (i32, ...)* @varargs_struct(i32 3, [2 x i64] {{%.*}})
-// APCS-GNU: test_struct
-// APCS-GNU: call double (i32, ...)* @varargs_struct(i32 3, [2 x i64] {{%.*}})
-  return varargs_struct(3, *d);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-apcs-zerolength-bitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-apcs-zerolength-bitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-apcs-zerolength-bitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,242 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -target-abi apcs-gnu -triple armv7-apple-darwin10 %s -verify
-// expected-no-diagnostics
-//
-// Note: gcc forces the alignment to 4 bytes, regardless of the type of the
-// zero length bitfield.
-// rdar://9859156
-
-#include <stddef.h>
-
-struct t1
-{
-  int foo : 1;
-  char : 0;
-  char bar;
-};
-static int arr1_offset[(offsetof(struct t1, bar) == 4) ? 0 : -1];
-static int arr1_sizeof[(sizeof(struct t1) == 8) ? 0 : -1];
-
-struct t2
-{
-  int foo : 1;
-  short : 0;
-  char bar;
-};
-static int arr2_offset[(offsetof(struct t2, bar) == 4) ? 0 : -1];
-static int arr2_sizeof[(sizeof(struct t2) == 8) ? 0 : -1];
-
-struct t3
-{
-  int foo : 1;
-  int : 0;
-  char bar;
-};
-static int arr3_offset[(offsetof(struct t3, bar) == 4) ? 0 : -1];
-static int arr3_sizeof[(sizeof(struct t3) == 8) ? 0 : -1];
-
-struct t4
-{
-  int foo : 1;
-  long : 0;
-  char bar;
-};
-static int arr4_offset[(offsetof(struct t4, bar) == 4) ? 0 : -1];
-static int arr4_sizeof[(sizeof(struct t4) == 8) ? 0 : -1];
-
-struct t5
-{
-  int foo : 1;
-  long long : 0;
-  char bar;
-};
-static int arr5_offset[(offsetof(struct t5, bar) == 4) ? 0 : -1];
-static int arr5_sizeof[(sizeof(struct t5) == 8) ? 0 : -1];
-
-struct t6
-{
-  int foo : 1;
-  char : 0;
-  char bar : 1;
-  char bar2;
-};
-static int arr6_offset[(offsetof(struct t6, bar2) == 5) ? 0 : -1];
-static int arr6_sizeof[(sizeof(struct t6) == 8) ? 0 : -1];
-
-struct t7
-{
-  int foo : 1;
-  short : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr7_offset[(offsetof(struct t7, bar2) == 5) ? 0 : -1];
-static int arr7_sizeof[(sizeof(struct t7) == 8) ? 0 : -1];
-
-struct t8
-{
-  int foo : 1;
-  int : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr8_offset[(offsetof(struct t8, bar2) == 5) ? 0 : -1];
-static int arr8_sizeof[(sizeof(struct t8) == 8) ? 0 : -1];
-
-struct t9
-{
-  int foo : 1;
-  long : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr9_offset[(offsetof(struct t9, bar2) == 5) ? 0 : -1];
-static int arr9_sizeof[(sizeof(struct t9) == 8) ? 0 : -1];
-
-struct t10
-{
-  int foo : 1;
-  long long : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr10_offset[(offsetof(struct t10, bar2) == 5) ? 0 : -1];
-static int arr10_sizeof[(sizeof(struct t10) == 8) ? 0 : -1];
-
-struct t11
-{
-  int foo : 1;
-  long long : 0;
-  char : 0;
-  char bar1 : 1;
-  char bar2;
-};
-static int arr11_offset[(offsetof(struct t11, bar2) == 5) ? 0 : -1];
-static int arr11_sizeof[(sizeof(struct t11) == 8) ? 0 : -1];
-
-struct t12
-{
-  int foo : 1;
-  char : 0;
-  long long : 0;
-  char : 0;
-  char bar;
-};
-static int arr12_offset[(offsetof(struct t12, bar) == 4) ? 0 : -1];
-static int arr12_sizeof[(sizeof(struct t12) == 8) ? 0 : -1];
-
-struct t13
-{
-  char foo;
-  long : 0;
-  char bar;
-};
-static int arr13_offset[(offsetof(struct t13, bar) == 4) ? 0 : -1];
-static int arr13_sizeof[(sizeof(struct t13) == 8) ? 0 : -1];
-
-struct t14
-{
-  char foo1;
-  int : 0;
-  char foo2 : 1;
-  short foo3 : 16;
-  char : 0;
-  short foo4 : 16;
-  char bar1;
-  int : 0;
-  char bar2;
-};
-static int arr14_bar1_offset[(offsetof(struct t14, bar1) == 10) ? 0 : -1];
-static int arr14_bar2_offset[(offsetof(struct t14, bar2) == 12) ? 0 : -1];
-static int arr14_sizeof[(sizeof(struct t14) == 16) ? 0 : -1];
-
-struct t15
-{
-  char foo;
-  char : 0;
-  int : 0;
-  char bar;
-  long : 0;
-  char : 0;
-};
-static int arr15_offset[(offsetof(struct t15, bar) == 4) ? 0 : -1];
-static int arr15_sizeof[(sizeof(struct t15) == 8) ? 0 : -1];
-
-struct t16
-{
-  long : 0;
-  char bar;
-};
-static int arr16_offset[(offsetof(struct t16, bar) == 0) ? 0 : -1];
-static int arr16_sizeof[(sizeof(struct t16) == 4) ? 0 : -1];
-
-struct t17
-{
-  char foo;
-  long : 0;
-  long : 0;
-  char : 0;
-  char bar;
-};
-static int arr17_offset[(offsetof(struct t17, bar) == 4) ? 0 : -1];
-static int arr17_sizeof[(sizeof(struct t17) == 8) ? 0 : -1];
-
-struct t18
-{
-  long : 0;
-  long : 0;
-  char : 0;
-};
-static int arr18_sizeof[(sizeof(struct t18) == 0) ? 0 : -1];
-
-struct t19
-{
-  char foo1;
-  long foo2 : 1;
-  char : 0;
-  long foo3 : 32;
-  char bar;
-};
-static int arr19_offset[(offsetof(struct t19, bar) == 8) ? 0 : -1];
-static int arr19_sizeof[(sizeof(struct t19) == 12) ? 0 : -1];
-
-struct t20
-{
-  short : 0;
-  int foo : 1;
-  long : 0;
-  char bar;
-};
-static int arr20_offset[(offsetof(struct t20, bar) == 4) ? 0 : -1];
-static int arr20_sizeof[(sizeof(struct t20) == 8) ? 0 : -1];
-
-struct t21
-{
-  short : 0;
-  int foo1 : 1;
-  char : 0;
-  int foo2 : 16;
-  long : 0;
-  char bar1;
-  int bar2;
-  long bar3;
-  char foo3 : 8;
-  char : 0;
-  long : 0;
-  int foo4 : 32;
-  short foo5: 1;
-  long bar4;
-  short foo6: 16;
-  short foo7: 16;
-  short foo8: 16;
-};
-static int arr21_bar1_offset[(offsetof(struct t21, bar1) == 8) ? 0 : -1];
-static int arr21_bar2_offset[(offsetof(struct t21, bar2) == 12) ? 0 : -1];
-static int arr21_bar3_offset[(offsetof(struct t21, bar3) == 16) ? 0 : -1];
-static int arr21_bar4_offset[(offsetof(struct t21, bar4) == 32) ? 0 : -1];
-static int arr21_sizeof[(sizeof(struct t21) == 44) ? 0 : -1];
-
-int main() {
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-arguments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-arguments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-arguments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,225 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7-apple-darwin9 -target-abi apcs-gnu -emit-llvm -w -o - %s | FileCheck -check-prefix=APCS-GNU %s
-// RUN: %clang_cc1 -triple armv7-apple-darwin9 -target-abi aapcs -emit-llvm -w -o - %s | FileCheck -check-prefix=AAPCS %s
-
-// APCS-GNU: define signext i8 @f0()
-// AAPCS: define arm_aapcscc signext i8 @f0()
-char f0(void) {
-  return 0;
-}
-
-// APCS-GNU: define i8 @f1()
-// AAPCS: define arm_aapcscc i8 @f1()
-struct s1 { char f0; };
-struct s1 f1(void) {}
-
-// APCS-GNU: define i16 @f2()
-// AAPCS: define arm_aapcscc i16 @f2()
-struct s2 { short f0; };
-struct s2 f2(void) {}
-
-// APCS-GNU: define i32 @f3()
-// AAPCS: define arm_aapcscc i32 @f3()
-struct s3 { int f0; };
-struct s3 f3(void) {}
-
-// APCS-GNU: define i32 @f4()
-// AAPCS: define arm_aapcscc i32 @f4()
-struct s4 { struct s4_0 { int f0; } f0; };
-struct s4 f4(void) {}
-
-// APCS-GNU: define void @f5(
-// APCS-GNU: struct.s5* noalias sret
-// AAPCS: define arm_aapcscc i32 @f5()
-struct s5 { struct { } f0; int f1; };
-struct s5 f5(void) {}
-
-// APCS-GNU: define void @f6(
-// APCS-GNU: struct.s6* noalias sret
-// AAPCS: define arm_aapcscc i32 @f6()
-struct s6 { int f0[1]; };
-struct s6 f6(void) {}
-
-// APCS-GNU: define void @f7()
-// AAPCS: define arm_aapcscc void @f7()
-struct s7 { struct { int : 0; } f0; };
-struct s7 f7(void) {}
-
-// APCS-GNU: define void @f8(
-// APCS-GNU: struct.s8* noalias sret
-// AAPCS: define arm_aapcscc void @f8()
-struct s8 { struct { int : 0; } f0[1]; };
-struct s8 f8(void) {}
-
-// APCS-GNU: define i32 @f9()
-// AAPCS: define arm_aapcscc i32 @f9()
-struct s9 { int f0; int : 0; };
-struct s9 f9(void) {}
-
-// APCS-GNU: define i32 @f10()
-// AAPCS: define arm_aapcscc i32 @f10()
-struct s10 { int f0; int : 0; int : 0; };
-struct s10 f10(void) {}
-
-// APCS-GNU: define void @f11(
-// APCS-GNU: struct.s11* noalias sret
-// AAPCS: define arm_aapcscc i32 @f11()
-struct s11 { int : 0; int f0; };
-struct s11 f11(void) {}
-
-// APCS-GNU: define i32 @f12()
-// AAPCS: define arm_aapcscc i32 @f12()
-union u12 { char f0; short f1; int f2; };
-union u12 f12(void) {}
-
-// APCS-GNU: define void @f13(
-// APCS-GNU: struct.s13* noalias sret
-
-// FIXME: This should return a float.
-// AAPCS-FIXME: darm_aapcscc efine float @f13()
-struct s13 { float f0; };
-struct s13 f13(void) {}
-
-// APCS-GNU: define void @f14(
-// APCS-GNU: union.u14* noalias sret
-// AAPCS: define arm_aapcscc i32 @f14()
-union u14 { float f0; };
-union u14 f14(void) {}
-
-// APCS-GNU: define void @f15()
-// AAPCS: define arm_aapcscc void @f15()
-void f15(struct s7 a0) {}
-
-// APCS-GNU: define void @f16()
-// AAPCS: define arm_aapcscc void @f16()
-void f16(struct s8 a0) {}
-
-// APCS-GNU: define i32 @f17()
-// AAPCS: define arm_aapcscc i32 @f17()
-struct s17 { short f0 : 13; char f1 : 4; };
-struct s17 f17(void) {}
-
-// APCS-GNU: define i32 @f18()
-// AAPCS: define arm_aapcscc i32 @f18()
-struct s18 { short f0; char f1 : 4; };
-struct s18 f18(void) {}
-
-// APCS-GNU: define void @f19(
-// APCS-GNU: struct.s19* noalias sret
-// AAPCS: define arm_aapcscc i32 @f19()
-struct s19 { int f0; struct s8 f1; };
-struct s19 f19(void) {}
-
-// APCS-GNU: define void @f20(
-// APCS-GNU: struct.s20* noalias sret
-// AAPCS: define arm_aapcscc i32 @f20()
-struct s20 { struct s8 f1; int f0; };
-struct s20 f20(void) {}
-
-// APCS-GNU: define i8 @f21()
-// AAPCS: define arm_aapcscc i32 @f21()
-struct s21 { struct {} f1; int f0 : 4; };
-struct s21 f21(void) {}
-
-// APCS-GNU: define i16 @f22()
-// APCS-GNU: define i32 @f23()
-// APCS-GNU: define i64 @f24()
-// APCS-GNU: define i128 @f25()
-// APCS-GNU: define i64 @f26()
-// APCS-GNU: define i128 @f27()
-// AAPCS: define arm_aapcscc i16 @f22()
-// AAPCS: define arm_aapcscc i32 @f23()
-// AAPCS: define arm_aapcscc void @f24({{.*}} noalias sret
-// AAPCS: define arm_aapcscc void @f25({{.*}} noalias sret
-// AAPCS: define arm_aapcscc void @f26({{.*}} noalias sret
-// AAPCS: define arm_aapcscc void @f27({{.*}} noalias sret
-_Complex char       f22(void) {}
-_Complex short      f23(void) {}
-_Complex int        f24(void) {}
-_Complex long long  f25(void) {}
-_Complex float      f26(void) {}
-_Complex double     f27(void) {}
-
-// APCS-GNU: define i16 @f28()
-// AAPCS: define arm_aapcscc i16 @f28()
-struct s28 { _Complex char f0; };
-struct s28 f28() {}
-
-// APCS-GNU: define i32 @f29()
-// AAPCS: define arm_aapcscc i32 @f29()
-struct s29 { _Complex short f0; };
-struct s29 f29() {}
-
-// APCS-GNU: define void @f30({{.*}} noalias sret
-// AAPCS: define arm_aapcscc void @f30({{.*}} noalias sret
-struct s30 { _Complex int f0; };
-struct s30 f30() {}
-
-// PR11905
-struct s31 { char x; };
-void f31(struct s31 s) { }
-// AAPCS: @f31([1 x i32] %s.coerce)
-// AAPCS: %s = alloca %struct.s31, align 4
-// AAPCS: alloca [1 x i32]
-// AAPCS: store [1 x i32] %s.coerce, [1 x i32]*
-// APCS-GNU: @f31([1 x i32] %s.coerce)
-// APCS-GNU: %s = alloca %struct.s31, align 4
-// APCS-GNU: alloca [1 x i32]
-// APCS-GNU: store [1 x i32] %s.coerce, [1 x i32]*
-
-// PR13562
-struct s32 { double x; };
-void f32(struct s32 s) { }
-// AAPCS: @f32([1 x i64] %s.coerce)
-// APCS-GNU: @f32([2 x i32] %s.coerce)
-
-// PR13350
-struct s33 { char buf[32*32]; };
-void f33(struct s33 s) { }
-// APCS-GNU: define void @f33(%struct.s33* byval %s)
-// AAPCS: define arm_aapcscc void @f33(%struct.s33* byval %s)
-
-// PR14048
-struct s34 { char c; };
-void f34(struct s34 s);
-void g34(struct s34 *s) { f34(*s); }
-// APCS-GNU: @g34(%struct.s34* %s)
-// APCS-GNU: %[[a:.*]] = alloca { [1 x i32] }
-// APCS-GNU: %[[gep:.*]] = getelementptr { [1 x i32] }* %[[a]], i32 0, i32 0
-// APCS-GNU: load [1 x i32]* %[[gep]]
-// AAPCS: @g34(%struct.s34* %s)
-// AAPCS: %[[a:.*]] = alloca { [1 x i32] }
-// AAPCS: %[[gep:.*]] = getelementptr { [1 x i32] }* %[[a]], i32 0, i32 0
-// AAPCS: load [1 x i32]* %[[gep]]
-
-// rdar://12596507
-struct s35
-{
-   float v[18]; //make sure byval is on.
-} __attribute__((aligned(16)));
-typedef struct s35 s35_with_align;
-
-typedef __attribute__((neon_vector_type(4))) float float32x4_t;
-static __attribute__((__always_inline__, __nodebug__)) float32x4_t vaddq_f32(
-       float32x4_t __a, float32x4_t __b) {
- return __a + __b;
-}
-float32x4_t f35(int i, s35_with_align s1, s35_with_align s2) {
-  float32x4_t v = vaddq_f32(*(float32x4_t *)&s1,
-                            *(float32x4_t *)&s2);
-  return v;
-}
-// APCS-GNU: define <4 x float> @f35(i32 %i, %struct.s35* byval, %struct.s35* byval)
-// APCS-GNU: %[[a:.*]] = alloca %struct.s35, align 16
-// APCS-GNU: %[[b:.*]] = bitcast %struct.s35* %[[a]] to i8*
-// APCS-GNU: %[[c:.*]] = bitcast %struct.s35* %0 to i8*
-// APCS-GNU: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %[[b]], i8* %[[c]]
-// APCS-GNU: %[[d:.*]] = bitcast %struct.s35* %[[a]] to <4 x float>*
-// APCS-GNU: load <4 x float>* %[[d]], align 16
-// AAPCS: define arm_aapcscc <4 x float> @f35(i32 %i, %struct.s35* byval, %struct.s35* byval)
-// AAPCS: %[[a:.*]] = alloca %struct.s35, align 16
-// AAPCS: %[[b:.*]] = bitcast %struct.s35* %[[a]] to i8*
-// AAPCS: %[[c:.*]] = bitcast %struct.s35* %0 to i8*
-// AAPCS: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %[[b]], i8* %[[c]]
-// AAPCS: %[[d:.*]] = bitcast %struct.s35* %[[a]] to <4 x float>*
-// AAPCS: load <4 x float>* %[[d]], align 16

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-diag.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-diag.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-diag.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7 %s -S -o /dev/null 2>&1 | FileCheck %s
-
-// rdar://13446483
-typedef __attribute__((neon_vector_type(2))) long long int64x2_t;
-typedef struct int64x2x4_t {
-  int64x2_t val[4];
-} int64x2x4_t;
-int64x2x4_t t1(const long long a[]) {
-  int64x2x4_t r;
-  __asm__("vldm %[a], { %q[r0], %q[r1], %q[r2], %q[r3] }"
-          : [r0] "=r"(r.val[0]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
-            [r1] "=r"(r.val[1]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
-            [r2] "=r"(r.val[2]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
-            [r3] "=r"(r.val[3])  // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
-          : [a] "r"(a));
-  return r;
-}
-// We should see all four errors, rather than report a fatal error after the first.
-// CHECK: error: non-trivial scalar-to-vector conversion, possible invalid constraint for vector type
-// CHECK: error: non-trivial scalar-to-vector conversion, possible invalid constraint for vector type
-// CHECK: error: non-trivial scalar-to-vector conversion, possible invalid constraint for vector type
-// CHECK: error: non-trivial scalar-to-vector conversion, possible invalid constraint for vector type

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-variable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-variable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-variable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -w -o - %s | FileCheck %s
-
-typedef long long int64_t;
-typedef unsigned int uint32_t;
-
-int64_t foo(int64_t v, volatile int64_t *p)
-{
-  register uint32_t rl asm("r1");
-  register uint32_t rh asm("r2");
-
-  int64_t r;
-  uint32_t t;
-
-  __asm__ __volatile__(							\
-		       "ldrexd%[_rl], %[_rh], [%[_p]]"			\
-		       : [_rl] "=&r" (rl), [_rh] "=&r" (rh)		\
-		       : [_p] "p" (p) : "memory");
-
-  // CHECK: call { i32, i32 } asm sideeffect "ldrexd$0, $1, [$2]", "={r1},={r2},r,~{memory}"(i64*
-
-  return r;
-}
-
-// Make sure we translate register names properly.
-void bar (void) {
-  register unsigned int rn asm("r14");
-  register unsigned int d asm("r2");
-
-  // CHECK: call i32 asm sideeffect "sub $1, $1, #32", "={r2},{lr}"
-  asm volatile ("sub %1, %1, #32" : "=r"(d) : "r"(rn));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-warn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-warn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm-warn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7 %s -emit-llvm -o /dev/null
-
-char bar();
-
-void t1(int x, char y) {
-  __asm__ volatile("mcr p15, 0, %1, c9, c12, 5;"
-                   "mrc p15, 0, %0, c9, c13, 2;"
-                   : "=r" (x)
-                   : "r" (bar())); // no warning
-  __asm__ volatile("foo %0, %1"
-                   : "+r" (x),
-                     "+r" (y)
-                   :);
-}
-
-// <rdar://problem/12284092>
-typedef __attribute__((neon_vector_type(2))) long long int64x2_t;
-typedef struct int64x2x4_t {
-  int64x2_t val[4];
-} int64x2x4_t;
-int64x2x4_t t2(const long long a[]) {
-  int64x2x4_t r;
-  __asm__("vldm %[a], { %q[r0], %q[r1], %q[r2], %q[r3] }"
-          : [r0] "=r"(r.val[0]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
-            [r1] "=r"(r.val[1]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
-            [r2] "=r"(r.val[2]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
-            [r3] "=r"(r.val[3])  // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
-          : [a] "r"(a));
-  return r;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple thumb %s -emit-llvm -o - | FileCheck %s
-int t1() {
-    static float k = 1.0f;
-    // CHECK: flds s15
-    __asm__ volatile ("flds s15, %[k] \n" :: [k] "Uv" (k) : "s15");
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-cc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-cc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-cc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7-apple-darwin9 -target-abi apcs-gnu -emit-llvm -w -o - %s | FileCheck -check-prefix=DARWIN-APCS %s
-// RUN: %clang_cc1 -triple armv7-apple-darwin9 -target-abi aapcs  -emit-llvm -w -o - %s | FileCheck -check-prefix=DARWIN-AAPCS %s
-// RUN: %clang_cc1 -triple arm-none-linux-gnueabi -target-abi apcs-gnu -emit-llvm -w -o - %s | FileCheck -check-prefix=LINUX-APCS %s
-// RUN: %clang_cc1 -triple arm-none-linux-gnueabi -target-abi aapcs  -emit-llvm -w -o - %s | FileCheck -check-prefix=LINUX-AAPCS %s
-
-
-// DARWIN-APCS: define void @f()
-// DARWIN-APCS: call void @g
-// DARWIN-AAPCS: define arm_aapcscc void @f()
-// DARWIN-AAPCS: call arm_aapcscc void @g
-// LINUX-APCS: define arm_apcscc void @f()
-// LINUX-APCS: call arm_apcscc void @g
-// LINUX-AAPCS: define void @f()
-// LINUX-AAPCS: call void @g
-void g(void);
-void f(void) {
-  g();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-clear.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-clear.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-clear.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -w -o - %s | FileCheck %s
-
-void clear0(void *ptr) {
-  // CHECK: clear0
-  // CHECK-NOT: load i8**
-  __clear_cache();
-}
-
-void clear1(void *ptr) {
-  // CHECK: clear1
-  // CHECK: load i8**
-  // CHECK-NOT: load i8**
-  __clear_cache(ptr);
-}
-
-void clear2(void *ptr, void *ptr2) {
-  // CHECK: clear2
-  // CHECK: load i8**
-  // CHECK: load i8**
-  __clear_cache(ptr, ptr2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-homogenous.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-homogenous.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-homogenous.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,202 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7---eabi -target-abi aapcs -mfloat-abi hard -emit-llvm %s -o - | FileCheck %s
-
-typedef long long int64_t;
-typedef unsigned int uint32_t;
-
-/* This is not a homogenous aggregate - fundamental types are different */
-typedef union {
-  float       f[4];
-  uint32_t    i[4];
-} union_with_first_floats;
-union_with_first_floats g_u_f;
-
-extern void takes_union_with_first_floats(union_with_first_floats a);
-extern union_with_first_floats returns_union_with_first_floats(void);
-
-void test_union_with_first_floats(void) {
-  takes_union_with_first_floats(g_u_f);
-}
-// CHECK: declare arm_aapcs_vfpcc void @takes_union_with_first_floats([4 x i32])
-
-void test_return_union_with_first_floats(void) {
-  g_u_f = returns_union_with_first_floats();
-}
-// CHECK: declare arm_aapcs_vfpcc void @returns_union_with_first_floats(%union.union_with_first_floats* sret)
-
-/* This is not a homogenous aggregate - fundamental types are different */
-typedef union {
-    uint32_t    i[4];
-    float       f[4];
-} union_with_non_first_floats;
-union_with_non_first_floats g_u_nf_f;
-
-extern void takes_union_with_non_first_floats(union_with_non_first_floats a);
-extern union_with_non_first_floats returns_union_with_non_first_floats(void);
-
-void test_union_with_non_first_floats(void) {
-  takes_union_with_non_first_floats(g_u_nf_f);
-}
-// CHECK: declare arm_aapcs_vfpcc void @takes_union_with_non_first_floats([4 x i32])
-
-void test_return_union_with_non_first_floats(void) {
-  g_u_nf_f = returns_union_with_non_first_floats();
-}
-// CHECK: declare arm_aapcs_vfpcc void @returns_union_with_non_first_floats(%union.union_with_non_first_floats* sret)
-
-/* This is not a homogenous aggregate - fundamental types are different */
-typedef struct {
-  float a;
-  union_with_first_floats b;
-} struct_with_union_with_first_floats;
-struct_with_union_with_first_floats g_s_f;
-
-extern void takes_struct_with_union_with_first_floats(struct_with_union_with_first_floats a);
-extern struct_with_union_with_first_floats returns_struct_with_union_with_first_floats(void);
-
-void test_struct_with_union_with_first_floats(void) {
-  takes_struct_with_union_with_first_floats(g_s_f);
-}
-// CHECK: declare arm_aapcs_vfpcc void @takes_struct_with_union_with_first_floats([5 x i32])
-
-void test_return_struct_with_union_with_first_floats(void) {
-  g_s_f = returns_struct_with_union_with_first_floats();
-}
-// CHECK: declare arm_aapcs_vfpcc void @returns_struct_with_union_with_first_floats(%struct.struct_with_union_with_first_floats* sret)
-
-/* This is not a homogenous aggregate - fundamental types are different */
-typedef struct {
-  float a;
-  union_with_non_first_floats b;
-} struct_with_union_with_non_first_floats;
-struct_with_union_with_non_first_floats g_s_nf_f;
-
-extern void takes_struct_with_union_with_non_first_floats(struct_with_union_with_non_first_floats a);
-extern struct_with_union_with_non_first_floats returns_struct_with_union_with_non_first_floats(void);
-
-void test_struct_with_union_with_non_first_floats(void) {
-  takes_struct_with_union_with_non_first_floats(g_s_nf_f);
-}
-// CHECK: declare arm_aapcs_vfpcc void @takes_struct_with_union_with_non_first_floats([5 x i32])
-
-void test_return_struct_with_union_with_non_first_floats(void) {
-  g_s_nf_f = returns_struct_with_union_with_non_first_floats();
-}
-// CHECK: declare arm_aapcs_vfpcc void @returns_struct_with_union_with_non_first_floats(%struct.struct_with_union_with_non_first_floats* sret)
-
-/* Plain array is not a homogenous aggregate */
-extern void takes_array_of_floats(float a[4]);
-void test_array_of_floats(void) {
-  float a[4] = {1.0, 2.0, 3.0, 4.0};
-  takes_array_of_floats(a);
-}
-// CHECK: declare arm_aapcs_vfpcc void @takes_array_of_floats(float*)
-
-/* Struct-type homogenous aggregate */
-typedef struct {
-  float x, y, z, w;
-} struct_with_fundamental_elems;
-struct_with_fundamental_elems g_s;
-
-extern void takes_struct_with_fundamental_elems(struct_with_fundamental_elems a);
-extern struct_with_fundamental_elems returns_struct_with_fundamental_elems(void);
-
-void test_struct_with_fundamental_elems(void) {
-  takes_struct_with_fundamental_elems(g_s);
-// CHECK:  call arm_aapcs_vfpcc  void @takes_struct_with_fundamental_elems(float {{.*}}, float {{.*}}, float{{.*}}, float {{.*}})
-}
-// CHECK: declare arm_aapcs_vfpcc void @takes_struct_with_fundamental_elems(float, float, float, float)
-
-void test_return_struct_with_fundamental_elems(void) {
-  g_s = returns_struct_with_fundamental_elems();
-// CHECK: call arm_aapcs_vfpcc  %struct.struct_with_fundamental_elems @returns_struct_with_fundamental_elems()
-}
-// CHECK: declare arm_aapcs_vfpcc %struct.struct_with_fundamental_elems @returns_struct_with_fundamental_elems()
-
-/* Array-type homogenous aggregate */
-typedef struct {
-  float xyzw[4];
-} struct_with_array;
-struct_with_array g_s_a;
-
-extern void takes_struct_with_array(struct_with_array a);
-extern struct_with_array returns_struct_with_array(void);
-
-void test_struct_with_array(void) {
-  takes_struct_with_array(g_s_a);
-// CHECK:   call arm_aapcs_vfpcc  void @takes_struct_with_array(float {{.*}}, float {{.*}}, float {{.*}}, float {{.*}})
-}
-// CHECK: declare arm_aapcs_vfpcc void @takes_struct_with_array(float, float, float, float)
-
-void test_return_struct_with_array(void) {
-  g_s_a = returns_struct_with_array();
-// CHECK:   call arm_aapcs_vfpcc  %struct.struct_with_array @returns_struct_with_array()
-}
-// CHECK: declare arm_aapcs_vfpcc %struct.struct_with_array @returns_struct_with_array()
-
-/* This union is a homogenous aggregate. Check that it's passed properly */
-typedef union {
-  struct_with_fundamental_elems xyzw;
-  float a[3];
-} union_with_struct_with_fundamental_elems;
-union_with_struct_with_fundamental_elems g_u_s_fe;
-
-extern void takes_union_with_struct_with_fundamental_elems(union_with_struct_with_fundamental_elems a);
-extern union_with_struct_with_fundamental_elems returns_union_with_struct_with_fundamental_elems(void);
-
-void test_union_with_struct_with_fundamental_elems(void) {
-  takes_union_with_struct_with_fundamental_elems(g_u_s_fe);
-// CHECK: call arm_aapcs_vfpcc  void @takes_union_with_struct_with_fundamental_elems(float {{.*}}, float {{.*}}, float {{.*}}, float {{.*}})
-}
-// CHECK: declare arm_aapcs_vfpcc void @takes_union_with_struct_with_fundamental_elems(float, float, float, float)
-
-void test_return_union_with_struct_with_fundamental_elems(void) {
-  g_u_s_fe = returns_union_with_struct_with_fundamental_elems();
-// CHECK: call arm_aapcs_vfpcc  %union.union_with_struct_with_fundamental_elems @returns_union_with_struct_with_fundamental_elems()
-}
-// CHECK: declare arm_aapcs_vfpcc %union.union_with_struct_with_fundamental_elems @returns_union_with_struct_with_fundamental_elems()
-
-// Make sure HAs that can be partially fit into VFP registers will be allocated
-// on stack and that later VFP candidates will go on stack as well.
-typedef struct {
-  double x;
-  double a2;
-  double a3;
-  double a4;
-} struct_of_four_doubles;
-extern void takes_struct_of_four_doubles(double a, struct_of_four_doubles b, struct_of_four_doubles c, double d);
-struct_of_four_doubles g_s4d;
-
-void test_struct_of_four_doubles(void) {
-// CHECK: test_struct_of_four_doubles
-// CHECK: call arm_aapcs_vfpcc void @takes_struct_of_four_doubles(double {{.*}}, double {{.*}}, double {{.*}}, double {{.*}}, double {{.*}}, [6 x float] undef, double {{.*}}, double {{.*}}, double {{.*}}, double {{.*}}, double {{.*}})
-  takes_struct_of_four_doubles(3.0, g_s4d, g_s4d, 4.0);
-}
-
-extern void takes_struct_with_backfill(float f1, double a, float f2, struct_of_four_doubles b, struct_of_four_doubles c, double d);
-void test_struct_with_backfill(void) {
-// CHECK: test_struct_with_backfill
-// CHECK: call arm_aapcs_vfpcc void @takes_struct_with_backfill(float {{.*}}, double {{.*}}, float {{.*}}, double {{.*}}, double {{.*}}, double {{.*}}, double {{.*}}, [4 x float] undef, double {{.*}}, double {{.*}}, double {{.*}}, double {{.*}}, double {{.*}})
-  takes_struct_with_backfill(3.0, 3.1, 3.2, g_s4d, g_s4d, 4.0);
-}
-
-typedef __attribute__(( ext_vector_type(8) )) char __char8;
-typedef __attribute__(( ext_vector_type(4) ))  short __short4;
-typedef struct {
-  __char8  a1;
-  __short4 a2;
-  __char8  a3;
-  __short4 a4;
-} struct_of_vecs;
-extern void takes_struct_of_vecs(double a, struct_of_vecs b, struct_of_vecs c, double d);
-struct_of_vecs g_vec;
-
-void test_struct_of_vecs(void) {
-// CHECK: test_struct_of_vecs
-// CHECK: call arm_aapcs_vfpcc void @takes_struct_of_vecs(double {{.*}}, <8 x i8> {{.*}}, <4 x i16> {{.*}}, <8 x i8> {{.*}}, <4 x i16> {{.*}}, [6 x float] undef, <8 x i8> {{.*}}, <4 x i16> {{.*}}, <8 x i8> {{.*}}, <4 x i16> {{.*}}, double {{.*}})
-  takes_struct_of_vecs(3.0, g_vec, g_vec, 4.0);
-}
-
-// FIXME: Tests necessary:
-//         - Vectors
-//         - C++ stuff

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -w -o - %s | FileCheck %s
-
-void t1 (void *f, int g) {
-  // CHECK: call void asm "str $1, $0", "=*Q,r"
-  asm("str %1, %0" : "=Q"(f) : "r"(g));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-neon-fma.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-neon-fma.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-neon-fma.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple thumbv7-none-linux-gnueabihf \
-// RUN:   -target-abi aapcs \
-// RUN:   -target-cpu cortex-a8 \
-// RUN:   -mfloat-abi hard \
-// RUN:   -ffreestanding \
-// RUN:   -O3 -S -emit-llvm -o - %s | FileCheck %s
-
-#include <arm_neon.h>
-
-float32x2_t test_fma_order(float32x2_t accum, float32x2_t lhs, float32x2_t rhs) {
-  return vfma_f32(accum, lhs, rhs);
-// CHECK: call <2 x float> @llvm.fma.v2f32(<2 x float> %lhs, <2 x float> %rhs, <2 x float> %accum)
-}
-
-float32x4_t test_fmaq_order(float32x4_t accum, float32x4_t lhs, float32x4_t rhs) {
-  return vfmaq_f32(accum, lhs, rhs);
-// CHECK: call <4 x float> @llvm.fma.v4f32(<4 x float> %lhs, <4 x float> %rhs, <4 x float> %accum)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-neon-misc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-neon-misc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-neon-misc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple thumbv7-apple-darwin \
-// RUN:   -target-abi apcs-gnu \
-// RUN:   -target-cpu cortex-a8 \
-// RUN:   -mfloat-abi soft \
-// RUN:   -target-feature +soft-float-abi \
-// RUN:   -ffreestanding \
-// RUN:   -emit-llvm -w -o - %s | FileCheck %s
-
-#include <arm_neon.h>
-
-// Radar 11998303: Avoid using i64 types for vld1q_lane and vst1q_lane Neon
-// intrinsics with <2 x i64> vectors to avoid poor code for i64 in the backend.
-void t1(uint64_t *src, uint8_t *dst) {
-// CHECK: @t1
-  uint64x2_t q = vld1q_u64(src);
-// CHECK: call <2 x i64> @llvm.arm.neon.vld1.v2i64
-  vst1q_lane_u64(dst, q, 1);
-// CHECK: bitcast <16 x i8> %{{.*}} to <2 x i64>
-// CHECK: shufflevector <2 x i64>
-// CHECK: call void @llvm.arm.neon.vst1.v1i64
-}
-
-void t2(uint64_t *src1, uint8_t *src2, uint64x2_t *dst) {
-// CHECK: @t2
-    uint64x2_t q = vld1q_u64(src1);
-// CHECK: call <2 x i64> @llvm.arm.neon.vld1.v2i64
-    q = vld1q_lane_u64(src2, q, 0);
-// CHECK: shufflevector <2 x i64>
-// CHECK: call <1 x i64> @llvm.arm.neon.vld1.v1i64
-// CHECK: shufflevector <1 x i64>
-    *dst = q;
-// CHECK: store <2 x i64>
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-pcs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-pcs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-pcs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple arm-none-linux-gnueabi -emit-llvm -w -o - < %s | FileCheck %s
-typedef int __attribute__((pcs("aapcs"))) (*aapcs_fn)(void);
-typedef int __attribute__((pcs("aapcs-vfp"))) (*aapcs_vfp_fn)(void);
-
-aapcs_fn bar;
-
-int foo(aapcs_vfp_fn baz) {
-// CHECK: define i32 @foo
-// CHECK: call arm_aapcscc
-// CHECK: call arm_aapcs_vfpcc
-  return bar() + baz();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-pnaclcall.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-pnaclcall.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-pnaclcall.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -triple armv7-unknown-nacl-gnueabi \
-// RUN:   -ffreestanding -mfloat-abi hard -target-cpu cortex-a8 \
-// RUN:   -emit-llvm -w -o - %s | FileCheck %s
-
-// Test that functions with pnaclcall attribute generate portable bitcode
-// like the le32 arch target
-
-typedef struct {
-  int a;
-  int b;
-} s1;
-// CHECK: define i32 @f48(%struct.s1* byval %s)
-int __attribute__((pnaclcall)) f48(s1 s) { return s.a; }
-
-// CHECK: define void @f49(%struct.s1* noalias sret %agg.result)
-s1 __attribute__((pnaclcall)) f49() { s1 s; s.a = s.b = 1; return s; }
-
-union simple_union {
-  int a;
-  char b;
-};
-// Unions should be passed as byval structs
-// CHECK: define void @f50(%union.simple_union* byval %s)
-void __attribute__((pnaclcall)) f50(union simple_union s) {}
-
-typedef struct {
-  int b4 : 4;
-  int b3 : 3;
-  int b8 : 8;
-} bitfield1;
-// Bitfields should be passed as byval structs
-// CHECK: define void @f51(%struct.bitfield1* byval %bf1)
-void __attribute__((pnaclcall)) f51(bitfield1 bf1) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vaarg-align.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vaarg-align.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vaarg-align.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple arm -target-abi aapcs %s -emit-llvm -o - | FileCheck -check-prefix=AAPCS %s
-// RUN: %clang_cc1 -triple arm -target-abi apcs-gnu %s -emit-llvm -o - | FileCheck -check-prefix=APCS-GNU %s
-/* 
- * Check that va_arg accesses stack according to ABI alignment
- * long long and double require 8-byte alignment under AAPCS
- * however, they only require 4-byte alignment under APCS
- */
-long long t1(int i, ...) {
-    // AAPCS: t1
-    // APCS-GNU: t1
-    __builtin_va_list ap;
-    __builtin_va_start(ap, i);
-    // AAPCS: add i32 %{{.*}} 7
-    // AAPCS: and i32 %{{.*}} -8
-    // APCS-GNU-NOT: add i32 %{{.*}} 7
-    // APCS-GNU-NOT: and i32 %{{.*}} -8
-    long long ll = __builtin_va_arg(ap, long long);
-    __builtin_va_end(ap);
-    return ll;
-}
-double t2(int i, ...) {
-    // AAPCS: t2
-    // APCS-GNU: t2
-    __builtin_va_list ap;
-    __builtin_va_start(ap, i);
-    // AAPCS: add i32 %{{.*}} 7
-    // AAPCS: and i32 %{{.*}} -8
-    // APCS-GNU-NOT: add i32 %{{.*}} 7
-    // APCS-GNU-NOT: and i32 %{{.*}} -8
-    double ll = __builtin_va_arg(ap, double);
-    __builtin_va_end(ap);
-    return ll;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vector-align.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vector-align.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vector-align.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple thumbv7-apple-darwin \
-// RUN:   -target-abi apcs-gnu \
-// RUN:   -target-cpu cortex-a8 \
-// RUN:   -mfloat-abi soft \
-// RUN:   -target-feature +soft-float-abi \
-// RUN:   -ffreestanding \
-// RUN:   -emit-llvm -w -o - %s | FileCheck %s
-
-#include <arm_neon.h>
-
-// Radar 9311427: Check that alignment specifier is used in Neon load/store
-// intrinsics.
-typedef float AlignedAddr __attribute__ ((aligned (16)));
-void t1(AlignedAddr *addr1, AlignedAddr *addr2) {
-// CHECK: @t1
-// CHECK: call <4 x float> @llvm.arm.neon.vld1.v4f32(i8* %{{.*}}, i32 16)
-  float32x4_t a = vld1q_f32(addr1);
-// CHECK: call void @llvm.arm.neon.vst1.v4f32(i8* %{{.*}}, <4 x float> %{{.*}}, i32 16)
-  vst1q_f32(addr2, a);
-}
-
-// Radar 10538555: Make sure unaligned load/stores do not gain alignment.
-void t2(char *addr) {
-// CHECK: @t2
-// CHECK: load i32* %{{.*}}, align 1
-  int32x2_t vec = vld1_dup_s32(addr);
-// CHECK: store i32 %{{.*}}, i32* {{.*}}, align 1
-  vst1_lane_s32(addr, vec, 1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vector-arguments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vector-arguments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arm-vector-arguments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple thumbv7-apple-darwin9 \
-// RUN:   -target-abi apcs-gnu \
-// RUN:   -target-cpu cortex-a8 \
-// RUN:   -mfloat-abi soft \
-// RUN:   -target-feature +soft-float-abi \
-// RUN:   -ffreestanding \
-// RUN:   -emit-llvm -w -o - %s | FileCheck %s
-
-#include <arm_neon.h>
-
-// CHECK: define void @f0(%struct.int8x16x2_t* noalias sret %agg.result, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
-int8x16x2_t f0(int8x16_t a0, int8x16_t a1) {
-  return vzipq_s8(a0, a1);
-}
-
-// Test direct vector passing.
-
-typedef float T_float32x2 __attribute__ ((__vector_size__ (8)));
-typedef float T_float32x4 __attribute__ ((__vector_size__ (16)));
-typedef float T_float32x8 __attribute__ ((__vector_size__ (32)));
-typedef float T_float32x16 __attribute__ ((__vector_size__ (64)));
-
-// CHECK: define <2 x float> @f1_0(<2 x float> %{{.*}})
-T_float32x2 f1_0(T_float32x2 a0) { return a0; }
-// CHECK: define <4 x float> @f1_1(<4 x float> %{{.*}})
-T_float32x4 f1_1(T_float32x4 a0) { return a0; }
-// CHECK: define void @f1_2(<8 x float>* noalias sret %{{.*}}, <8 x float> %{{.*}})
-T_float32x8 f1_2(T_float32x8 a0) { return a0; }
-// CHECK: define void @f1_3(<16 x float>* noalias sret %{{.*}}, <16 x float> %{{.*}})
-T_float32x16 f1_3(T_float32x16 a0) { return a0; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/array.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/array.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/array.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-void f() {
- int a[2];
- a[0] = 0;
-}
-
-void f2() {
-  int x = 0;
-  int y = 1;
-  int a[10] = { y, x, 2, 3};
-  int b[10] = { 2,4,x,6,y,8};
-  int c[5] = { 0,1,2,3};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/arrayderef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/arrayderef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/arrayderef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O1 -o - | FileCheck %s
-// The load here was getting lost because this code was close
-// enough to the traditional (wrong) implementation of offsetof
-// to confuse the gcc FE.  8629268.
-
-struct foo {
-  int x;
-  int *y;
-};
-
-struct foo Foo[1];
-
-int * bar(unsigned int ix) {
-// CHECK: load
-  return &Foo->y[ix];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/asm-errors.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/asm-errors.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/asm-errors.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// REQUIRES: x86-registered-target
-
-// RUN: true
-// UN: not %clang_cc1 -triple i386-apple-darwin10 -emit-obj %s -o /dev/null > %t 2>&1
-// UN: FileCheck %s < %t
-
-int test1(int X) {
-// CHECK: error: invalid instruction mnemonic 'abc'
-  __asm__ ("abc incl    %0" : "+r" (X));
-  return X;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/asm-inout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/asm-inout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/asm-inout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-// PR3800
-int *foo(void);
-
-// CHECK: @test1
-void test1() {
-  // CHECK: [[REGCALLRESULT:%[a-zA-Z0-9\.]+]] = call i32* @foo()
-  // CHECK: call void asm "foobar", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(i32* [[REGCALLRESULT]], i32* [[REGCALLRESULT]])
-  asm ("foobar" : "+m"(*foo()));
-}
-
-// CHECK: @test2
-void test2() {
-  // CHECK: [[REGCALLRESULT:%[a-zA-Z0-9\.]+]] = call i32* @foo()
-  // CHECK: load i32* [[REGCALLRESULT]]
-  // CHECK: call i32 asm
-  // CHECK: store i32 {{%[a-zA-Z0-9\.]+}}, i32* [[REGCALLRESULT]]
-  asm ("foobar" : "+r"(*foo()));
-}
-
-// PR7338
-// CHECK: @test3
-void test3(int *vout, int vin)
-{
-  // CHECK: call void asm "opr $0,$1", "=*r|m|r,r|m|r,~{edi},~{dirflag},~{fpsr},~{flags}"
-  asm ("opr %[vout],%[vin]"
-       : [vout] "=r,=m,=r" (*vout)
-       : [vin] "r,m,r" (vin)
-       : "edi");
-}
-
-// PR8959 - This should implicitly truncate the immediate to a byte.
-// CHECK: @test4
-int test4(volatile int *addr) {
-  unsigned char oldval;
-  // CHECK: call i8 asm "frob $0", "=r,0{{.*}}"(i8 -1)
-  __asm__ ("frob %0" : "=r"(oldval) : "0"(0xff));
-  return (int)oldval;
-}
-
-// <rdar://problem/10919182> - This should have both inputs be of type x86_mmx.
-// CHECK: @test5
-typedef long long __m64 __attribute__((__vector_size__(8)));
-__m64 test5(__m64 __A, __m64 __B) {
-  // CHECK: call x86_mmx asm "pmulhuw $1, $0\0A\09", "=y,y,0,~{dirflag},~{fpsr},~{flags}"(x86_mmx %{{.*}}, x86_mmx %{{.*}})
-  asm ("pmulhuw %1, %0\n\t" : "+y" (__A) : "y" (__B));
-  return __A;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/asm-label.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/asm-label.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/asm-label.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s --check-prefix=LINUX
-// RUN: %clang_cc1 -triple=i686-apple-darwin9 -emit-llvm %s -o - | FileCheck %s --check-prefix=DARWIN
-
-char *strerror(int) asm("alias");
-int x __asm("foo");
-
-int *test(void) {
-  static int y __asm("bar");
-  strerror(-1);
-  return &y;
-}
-
-// LINUX: @bar = internal global i32 0
-// LINUX: @foo = common global i32 0
-// LINUX: declare i8* @alias(i32)
-
-// DARWIN: @"\01bar" = internal global i32 0
-// DARWIN: @"\01foo" = common global i32 0
-// DARWIN: declare i8* @"\01alias"(i32)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/asm-reg-var-local.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/asm-reg-var-local.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/asm-reg-var-local.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
-// Exercise various use cases for local asm "register variables".
-
-int foo() {
-// CHECK: [[A:%[a-zA-Z0-9]+]] = alloca i32
-
-  register int a asm("rsi")=5;
-// CHECK: store i32 5, i32* [[A]]
-
-  asm volatile("; %0 This asm defines rsi" : "=r"(a));
-// CHECK: [[Z:%[a-zA-Z0-9]+]] = call i32 asm sideeffect "; $0 This asm defines rsi", "={rsi},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: store i32 [[Z]], i32* [[A]]
-
-  a = 42;
-// CHECK:  store i32 42, i32* [[A]]
-
-  asm volatile("; %0 This asm uses rsi" : : "r"(a));
-// CHECK:  [[TMP:%[a-zA-Z0-9]+]] = load i32* [[A]]
-// CHECK:  call void asm sideeffect "; $0 This asm uses rsi", "{rsi},~{dirflag},~{fpsr},~{flags}"(i32 [[TMP]])
-
-  return a;
-// CHECK:  [[TMP1:%[a-zA-Z0-9]+]] = load i32* [[A]]
-// CHECK:  ret i32 [[TMP1]]
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/asm-variable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/asm-variable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/asm-variable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-
-unsigned long long foo(unsigned long long addr, unsigned long long a0,
-                       unsigned long long a1, unsigned long long a2,
-                       unsigned long long a3, unsigned long long a4,
-                       unsigned long long a5) {
-  register unsigned long long result asm("rax");
-  register unsigned long long b0 asm("rdi");
-  register unsigned long long b1 asm("rsi");
-  register unsigned long long b2 asm("rdx");
-  register unsigned long long b3 asm("rcx");
-  register unsigned long long b4 asm("r8");
-  register unsigned long long b5 asm("r9");
-
-  b0 = a0;
-  b1 = a1;
-  b2 = a2;
-  b3 = a3;
-  b4 = a4;
-  b5 = a5;
-
-  asm("call *%1" : "=r" (result)
-      : "r"(addr), "r" (b0), "r" (b1), "r" (b2), "r" (b3), "r" (b4), "r" (b5));
-  return result;
-}
-
-// CHECK: call i64 asm "call *$1", "={rax},r,{rdi},{rsi},{rdx},{rcx},{r8},{r9},~{dirflag},~{fpsr},~{flags}"
-
-unsigned long long foo2(unsigned long long addr, double a0,
-                       double a1, double a2,
-                       double a3, double a4,
-                       double a5, double a6, double a7) {
-  register double b0 asm("xmm0");
-  register double b1 asm("xmm1");
-  register double b2 asm("xmm2");
-  register double b3 asm("xmm3");
-  register double b4 asm("xmm4");
-  register double b5 asm("xmm5");
-  register double b6 asm("xmm6");
-  register double b7 asm("xmm7");
-
-  register unsigned long long result asm("rax");
-
-  b0 = a0;
-  b1 = a1;
-  b2 = a2;
-  b3 = a3;
-  b4 = a4;
-  b5 = a5;
-  b6 = a6;
-  b7 = a7;
-
-  asm("call *%1" : "=r" (result)
-      : "r"(addr), "x" (b0), "x" (b1), "x" (b2), "x" (b3), "x" (b4), "x" (b5), "x" (b6),
-        "x" (b7));
-  return result;
-}
-
-// CHECK: call i64 asm "call *$1", "={rax},r,{xmm0},{xmm1},{xmm2},{xmm3},{xmm4},{xmm5},{xmm6},{xmm7},~{dirflag},~{fpsr},~{flags}
-
-int randomvar asm("randomvar");
-void foo3() {
-  asm("vartest %0" : : "r"(randomvar));
-}
-// CHECK: call void asm sideeffect "vartest $0", "r,~{dirflag},~{fpsr},~{flags}"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,241 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-
-// PR10415
-__asm__ ("foo1");
-__asm__ ("foo2");
-__asm__ ("foo3");
-// CHECK: module asm "foo1"
-// CHECK-NEXT: module asm "foo2"
-// CHECK-NEXT: module asm "foo3"
-
-void t1(int len) {
-  __asm__ volatile("" : "=&r"(len), "+&r"(len));
-}
-
-void t2(unsigned long long t)  {
-  __asm__ volatile("" : "+m"(t));
-}
-
-void t3(unsigned char *src, unsigned long long temp) {
-  __asm__ volatile("" : "+m"(temp), "+r"(src));
-}
-
-void t4() {
-  unsigned long long a;
-  struct reg { unsigned long long a, b; } b;
-
-  __asm__ volatile ("":: "m"(a), "m"(b));
-}
-
-// PR3417
-void t5(int i) {
-  asm("nop" : "=r"(i) : "0"(t5));
-}
-
-// PR3641
-void t6(void) {
-  __asm__ volatile("" : : "i" (t6));
-}
-
-void t7(int a) {
-  __asm__ volatile("T7 NAMED: %[input]" : "+r"(a): [input] "i" (4));
-  // CHECK: @t7(i32
-  // CHECK: T7 NAMED: $1
-}
-
-void t8() {
-  __asm__ volatile("T8 NAMED MODIFIER: %c[input]" :: [input] "i" (4));
-  // CHECK: @t8()
-  // CHECK: T8 NAMED MODIFIER: ${0:c}
-}
-
-// PR3682
-unsigned t9(unsigned int a) {
-  asm("bswap %0 %1" : "+r" (a));
-  return a;
-}
-
-// PR3908
-void t10(int r) {
-  __asm__("PR3908 %[lf] %[xx] %[li] %[r]" : [r] "+r" (r) : [lf] "mx" (0), [li] "mr" (0), [xx] "x" ((double)(0)));
-
-// CHECK: @t10(
-// CHECK:PR3908 $1 $3 $2 $0
-}
-
-// PR3373
-unsigned t11(signed char input) {
-  unsigned  output;
-  __asm__("xyz"
-          : "=a" (output)
-          : "0" (input));
-  return output;
-}
-
-// PR3373
-unsigned char t12(unsigned input) {
-  unsigned char output;
-  __asm__("xyz"
-          : "=a" (output)
-          : "0" (input));
-  return output;
-}
-
-unsigned char t13(unsigned input) {
-  unsigned char output;
-  __asm__("xyz %1"
-          : "=a" (output)
-          : "0" (input));
-  return output;
-}
-
-struct large {
-  int x[1000];
-};
-
-unsigned long t15(int x, struct large *P) {
-  __asm__("xyz "
-          : "=r" (x)
-          : "m" (*P), "0" (x));
-  return x;
-}
-
-// bitfield destination of an asm.
-struct S {
-  int a : 4;
-};
-
-void t14(struct S *P) {
-  __asm__("abc %0" : "=r"(P->a) );
-}
-
-// PR4938
-int t16() {
-  int a,b;
-  asm ( "nop;"
-       :"=%c" (a)
-       : "r" (b)
-       );
-  return 0;
-}
-
-// PR6475
-void t17() {
-  int i;
-  __asm__ ( "nop": "=m"(i));
-
-// CHECK: @t17()
-// CHECK: call void asm "nop", "=*m,
-}
-
-// <rdar://problem/6841383>
-int t18(unsigned data) {
-  int a, b;
-
-  asm("xyz" :"=a"(a), "=d"(b) : "a"(data));
-  return a + b;
-// CHECK: t18(i32
-// CHECK: = call {{.*}}asm "xyz"
-// CHECK-NEXT: extractvalue
-// CHECK-NEXT: extractvalue
-}
-
-// PR6780
-int t19(unsigned data) {
-  int a, b;
-
-  asm("x{abc|def|ghi}z" :"=r"(a): "r"(data));
-  return a + b;
-  // CHECK: t19(i32
-  // CHECK: = call {{.*}}asm "x$(abc$|def$|ghi$)z"
-}
-
-// PR6845 - Mismatching source/dest fp types.
-double t20(double x) {
-  register long double result;
-  __asm __volatile ("frndint"  : "=t" (result) : "0" (x));
-  return result;
-
-  // CHECK: @t20
-  // CHECK: fpext double {{.*}} to x86_fp80
-  // CHECK-NEXT: call x86_fp80 asm sideeffect "frndint"
-  // CHECK: fptrunc x86_fp80 {{.*}} to double
-}
-
-float t21(long double x) {
-  register float result;
-  __asm __volatile ("frndint"  : "=t" (result) : "0" (x));
-  return result;
-  // CHECK: @t21
-  // CHECK: call x86_fp80 asm sideeffect "frndint"
-  // CHECK-NEXT: fptrunc x86_fp80 {{.*}} to float
-}
-
-// <rdar://problem/8348447> - accept 'l' constraint
-unsigned char t22(unsigned char a, unsigned char b) {
-  unsigned int la = a;
-  unsigned int lb = b;
-  unsigned int bigres;
-  unsigned char res;
-  __asm__ ("0:\n1:\n" : [bigres] "=la"(bigres) : [la] "0"(la), [lb] "c"(lb) :
-                        "edx", "cc");
-  res = bigres;
-  return res;
-}
-
-// <rdar://problem/8348447> - accept 'l' constraint
-unsigned char t23(unsigned char a, unsigned char b) {
-  unsigned int la = a;
-  unsigned int lb = b;
-  unsigned char res;
-  __asm__ ("0:\n1:\n" : [res] "=la"(res) : [la] "0"(la), [lb] "c"(lb) :
-                        "edx", "cc");
-  return res;
-}
-
-void *t24(char c) {
-  void *addr;
-  // CHECK: @t24
-  // CHECK: zext i8 {{.*}} to i32
-  // CHECK-NEXT: call i8* asm "foobar"
-  __asm__ ("foobar" : "=a" (addr) : "0" (c));
-  return addr;
-}
-
-// PR10299 - fpsr, fpcr
-void t25(void)
-{
-  __asm__ __volatile__(					   \
-		       "finit"				   \
-		       :				   \
-		       :				   \
-		       :"st","st(1)","st(2)","st(3)",	   \
-			"st(4)","st(5)","st(6)","st(7)",   \
-			"fpsr","fpcr"			   \
-							   );
-}
-
-// rdar://10510405 - AVX registers
-typedef long long __m256i __attribute__((__vector_size__(32)));
-void t26 (__m256i *p) {
-  __asm__ volatile("vmovaps  %0, %%ymm0" :: "m" (*(__m256i*)p) : "ymm0");
-}
-
-// Check to make sure the inline asm non-standard dialect attribute _not_ is
-// emitted.
-void t27(void) {
-  asm volatile("nop");
-// CHECK: @t27
-// CHECK: call void asm sideeffect "nop"
-// CHECK-NOT: ia_nsdialect
-// CHECK: ret void
-}
-
-// Check handling of '*' and '#' constraint modifiers.
-void t28(void)
-{
-  asm volatile ("/* %0 */" : : "i#*X,*r" (1));
-// CHECK: @t28
-// CHECK: call void asm sideeffect "/* $0 */", "i|r,~{dirflag},~{fpsr},~{flags}"(i32 1)
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/asm_arm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/asm_arm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/asm_arm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv6-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-void test0(void) {
-	asm volatile("mov r0, r0" :: );
-}
-void test1(void) {
-	asm volatile("mov r0, r0" :::
-				 "cc", "memory" );
-}
-void test2(void) {
-	asm volatile("mov r0, r0" :::
-				 "r0", "r1", "r2", "r3");
-	asm volatile("mov r0, r0" :::
-				 "r4", "r5", "r6", "r8");
-}
-void test3(void) {
-	asm volatile("mov r0, r0" :::
-				 "a1", "a2", "a3", "a4");
-	asm volatile("mov r0, r0" :::
-				 "v1", "v2", "v3", "v5");
-}
-
-
-// {} should not be treated as asm variants.
-void test4(float *a, float *b) {
-  // CHECK: @test4
-  // CHECK: call void asm sideeffect "vld1.32 {d8[],d9[]}, 
-  __asm__ volatile (
-                    "vld1.32 {d8[],d9[]}, [%1,:32] \n\t"
-                    "vst1.32 {q4},        [%0,:128] \n\t"
-                    :: "r"(a), "r"(b));
-}
-
-// {sp, lr, pc} are the canonical names for {r13, r14, r15}.
-//
-// CHECK: @test5
-// CHECK: call void asm sideeffect "", "~{sp},~{lr},~{pc},~{sp},~{lr},~{pc}"()
-void test5() {
-  __asm__("" : : : "r13", "r14", "r15", "sp", "lr", "pc");
-}
-
-// CHECK: @test6
-// CHECK: call void asm sideeffect "", "
-// CHECK: ~{s0},~{s1},~{s2},~{s3},~{s4},~{s5},~{s6},~{s7},
-// CHECK: ~{s8},~{s9},~{s10},~{s11},~{s12},~{s13},~{s14},~{s15},
-// CHECK: ~{s16},~{s17},~{s18},~{s19},~{s20},~{s21},~{s22},~{s23},
-// CHECK: ~{s24},~{s25},~{s26},~{s27},~{s28},~{s29},~{s30},~{s31}"()
-void test6() {
-  __asm__("" : : :
-          "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
-          "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15",
-          "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23",
-          "s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/assign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/assign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/assign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64 -emit-llvm -o - %s | FileCheck %s
-
-// Check that we don't generate unnecessary reloads.
-//
-// CHECK: define void @f0()
-// CHECK:      [[x_0:%.*]] = alloca i32, align 4
-// CHECK-NEXT: [[y_0:%.*]] = alloca i32, align 4
-// CHECK-NEXT: store i32 1, i32* [[x_0]]
-// CHECK-NEXT: store i32 1, i32* [[x_0]]
-// CHECK-NEXT: store i32 1, i32* [[y_0]]
-// CHECK: }
-void f0() {
-  int x, y;
-  x = 1;
-  y = (x = 1);
-}
-
-// This used to test that we generate reloads for volatile access,
-// but that does not appear to be correct behavior for C.
-//
-// CHECK: define void @f1()
-// CHECK:      [[x_1:%.*]] = alloca i32, align 4
-// CHECK-NEXT: [[y_1:%.*]] = alloca i32, align 4
-// CHECK-NEXT: store volatile i32 1, i32* [[x_1]]
-// CHECK-NEXT: store volatile i32 1, i32* [[x_1]]
-// CHECK-NEXT: store volatile i32 1, i32* [[y_1]]
-// CHECK: }
-void f1() {
-  volatile int x, y;
-  x = 1;
-  y = (x = 1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/atomic-ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/atomic-ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/atomic-ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,323 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin9 | FileCheck %s
-
-// Also test serialization of atomic operations here, to avoid duplicating the
-// test.
-// RUN: %clang_cc1 %s -emit-pch -o %t -triple=i686-apple-darwin9
-// RUN: %clang_cc1 %s -include-pch %t -triple=i686-apple-darwin9 -emit-llvm -o - | FileCheck %s
-#ifndef ALREADY_INCLUDED
-#define ALREADY_INCLUDED
-
-// Basic IRGen tests for __c11_atomic_* and GNU __atomic_*
-
-typedef enum memory_order {
-  memory_order_relaxed, memory_order_consume, memory_order_acquire,
-  memory_order_release, memory_order_acq_rel, memory_order_seq_cst
-} memory_order;
-
-int fi1(_Atomic(int) *i) {
-  // CHECK: @fi1
-  // CHECK: load atomic i32* {{.*}} seq_cst
-  return __c11_atomic_load(i, memory_order_seq_cst);
-}
-
-int fi1a(int *i) {
-  // CHECK: @fi1a
-  // CHECK: load atomic i32* {{.*}} seq_cst
-  int v;
-  __atomic_load(i, &v, memory_order_seq_cst);
-  return v;
-}
-
-int fi1b(int *i) {
-  // CHECK: @fi1b
-  // CHECK: load atomic i32* {{.*}} seq_cst
-  return __atomic_load_n(i, memory_order_seq_cst);
-}
-
-void fi2(_Atomic(int) *i) {
-  // CHECK: @fi2
-  // CHECK: store atomic i32 {{.*}} seq_cst
-  __c11_atomic_store(i, 1, memory_order_seq_cst);
-}
-
-void fi2a(int *i) {
-  // CHECK: @fi2a
-  // CHECK: store atomic i32 {{.*}} seq_cst
-  int v = 1;
-  __atomic_store(i, &v, memory_order_seq_cst);
-}
-
-void fi2b(int *i) {
-  // CHECK: @fi2b
-  // CHECK: store atomic i32 {{.*}} seq_cst
-  __atomic_store_n(i, 1, memory_order_seq_cst);
-}
-
-int fi3(_Atomic(int) *i) {
-  // CHECK: @fi3
-  // CHECK: atomicrmw and
-  // CHECK-NOT: and
-  return __c11_atomic_fetch_and(i, 1, memory_order_seq_cst);
-}
-
-int fi3a(int *i) {
-  // CHECK: @fi3a
-  // CHECK: atomicrmw xor
-  // CHECK-NOT: xor
-  return __atomic_fetch_xor(i, 1, memory_order_seq_cst);
-}
-
-int fi3b(int *i) {
-  // CHECK: @fi3b
-  // CHECK: atomicrmw add
-  // CHECK: add
-  return __atomic_add_fetch(i, 1, memory_order_seq_cst);
-}
-
-int fi3c(int *i) {
-  // CHECK: @fi3c
-  // CHECK: atomicrmw nand
-  // CHECK-NOT: and
-  return __atomic_fetch_nand(i, 1, memory_order_seq_cst);
-}
-
-int fi3d(int *i) {
-  // CHECK: @fi3d
-  // CHECK: atomicrmw nand
-  // CHECK: and
-  // CHECK: xor
-  return __atomic_nand_fetch(i, 1, memory_order_seq_cst);
-}
-
-_Bool fi4(_Atomic(int) *i) {
-  // CHECK: @fi4
-  // CHECK: cmpxchg i32*
-  int cmp = 0;
-  return __c11_atomic_compare_exchange_strong(i, &cmp, 1, memory_order_acquire, memory_order_acquire);
-}
-
-_Bool fi4a(int *i) {
-  // CHECK: @fi4
-  // CHECK: cmpxchg i32*
-  int cmp = 0;
-  int desired = 1;
-  return __atomic_compare_exchange(i, &cmp, &desired, 0, memory_order_acquire, memory_order_acquire);
-}
-
-_Bool fi4b(int *i) {
-  // CHECK: @fi4
-  // CHECK: cmpxchg i32*
-  int cmp = 0;
-  return __atomic_compare_exchange_n(i, &cmp, 1, 1, memory_order_acquire, memory_order_acquire);
-}
-
-float ff1(_Atomic(float) *d) {
-  // CHECK: @ff1
-  // CHECK: load atomic i32* {{.*}} monotonic
-  return __c11_atomic_load(d, memory_order_relaxed);
-}
-
-void ff2(_Atomic(float) *d) {
-  // CHECK: @ff2
-  // CHECK: store atomic i32 {{.*}} release
-  __c11_atomic_store(d, 1, memory_order_release);
-}
-
-float ff3(_Atomic(float) *d) {
-  return __c11_atomic_exchange(d, 2, memory_order_seq_cst);
-}
-
-int* fp1(_Atomic(int*) *p) {
-  // CHECK: @fp1
-  // CHECK: load atomic i32* {{.*}} seq_cst
-  return __c11_atomic_load(p, memory_order_seq_cst);
-}
-
-int* fp2(_Atomic(int*) *p) {
-  // CHECK: @fp2
-  // CHECK: store i32 4
-  // CHECK: atomicrmw add {{.*}} monotonic
-  return __c11_atomic_fetch_add(p, 1, memory_order_relaxed);
-}
-
-int *fp2a(int **p) {
-  // CHECK: @fp2a
-  // CHECK: store i32 4
-  // CHECK: atomicrmw sub {{.*}} monotonic
-  // Note, the GNU builtins do not multiply by sizeof(T)!
-  return __atomic_fetch_sub(p, 4, memory_order_relaxed);
-}
-
-_Complex float fc(_Atomic(_Complex float) *c) {
-  // CHECK: @fc
-  // CHECK: atomicrmw xchg i64*
-  return __c11_atomic_exchange(c, 2, memory_order_seq_cst);
-}
-
-typedef struct X { int x; } X;
-X fs(_Atomic(X) *c) {
-  // CHECK: @fs
-  // CHECK: atomicrmw xchg i32*
-  return __c11_atomic_exchange(c, (X){2}, memory_order_seq_cst);
-}
-
-X fsa(X *c, X *d) {
-  // CHECK: @fsa
-  // CHECK: atomicrmw xchg i32*
-  X ret;
-  __atomic_exchange(c, d, &ret, memory_order_seq_cst);
-  return ret;
-}
-
-_Bool fsb(_Bool *c) {
-  // CHECK: @fsb
-  // CHECK: atomicrmw xchg i8*
-  return __atomic_exchange_n(c, 1, memory_order_seq_cst);
-}
-
-char flag1;
-volatile char flag2;
-void test_and_set() {
-  // CHECK: atomicrmw xchg i8* @flag1, i8 1 seq_cst
-  __atomic_test_and_set(&flag1, memory_order_seq_cst);
-  // CHECK: atomicrmw volatile xchg i8* @flag2, i8 1 acquire
-  __atomic_test_and_set(&flag2, memory_order_acquire);
-  // CHECK: store atomic volatile i8 0, i8* @flag2 release
-  __atomic_clear(&flag2, memory_order_release);
-  // CHECK: store atomic i8 0, i8* @flag1 seq_cst
-  __atomic_clear(&flag1, memory_order_seq_cst);
-}
-
-struct Sixteen {
-  char c[16];
-} sixteen;
-struct Seventeen {
-  char c[17];
-} seventeen;
-
-int lock_free(struct Incomplete *incomplete) {
-  // CHECK: @lock_free
-
-  // CHECK: call i32 @__atomic_is_lock_free(i32 3, i8* null)
-  __c11_atomic_is_lock_free(3);
-
-  // CHECK: call i32 @__atomic_is_lock_free(i32 16, i8* {{.*}}@sixteen{{.*}})
-  __atomic_is_lock_free(16, &sixteen);
-
-  // CHECK: call i32 @__atomic_is_lock_free(i32 17, i8* {{.*}}@seventeen{{.*}})
-  __atomic_is_lock_free(17, &seventeen);
-
-  // CHECK: call i32 @__atomic_is_lock_free(i32 4, {{.*}})
-  __atomic_is_lock_free(4, incomplete);
-
-  char cs[20];
-  // CHECK: call i32 @__atomic_is_lock_free(i32 4, {{.*}})
-  __atomic_is_lock_free(4, cs+1);
-
-  // CHECK-NOT: call
-  __atomic_always_lock_free(3, 0);
-  __atomic_always_lock_free(16, 0);
-  __atomic_always_lock_free(17, 0);
-  __atomic_always_lock_free(16, &sixteen);
-  __atomic_always_lock_free(17, &seventeen);
-
-  int n;
-  __atomic_is_lock_free(4, &n);
-
-  // CHECK: ret i32 1
-  return __c11_atomic_is_lock_free(sizeof(_Atomic(int)));
-}
-
-// Tests for atomic operations on big values.  These should call the functions
-// defined here:
-// http://gcc.gnu.org/wiki/Atomic/GCCMM/LIbrary#The_Library_interface
-
-struct foo {
-  int big[128];
-};
-struct bar {
-  char c[3];
-};
-
-struct bar smallThing, thing1, thing2;
-struct foo bigThing;
-_Atomic(struct foo) bigAtomic;
-
-void structAtomicStore() {
-  // CHECK: @structAtomicStore
-  struct foo f = {0};
-  __c11_atomic_store(&bigAtomic, f, 5);
-  // CHECK: call void @__atomic_store(i32 512, i8* bitcast ({{.*}} @bigAtomic to i8*),
-
-  struct bar b = {0};
-  __atomic_store(&smallThing, &b, 5);
-  // CHECK: call void @__atomic_store(i32 3, i8* {{.*}} @smallThing
-
-  __atomic_store(&bigThing, &f, 5);
-  // CHECK: call void @__atomic_store(i32 512, i8* {{.*}} @bigThing
-}
-void structAtomicLoad() {
-  // CHECK: @structAtomicLoad
-  struct foo f = __c11_atomic_load(&bigAtomic, 5);
-  // CHECK: call void @__atomic_load(i32 512, i8* bitcast ({{.*}} @bigAtomic to i8*),
-
-  struct bar b;
-  __atomic_load(&smallThing, &b, 5);
-  // CHECK: call void @__atomic_load(i32 3, i8* {{.*}} @smallThing
-
-  __atomic_load(&bigThing, &f, 5);
-  // CHECK: call void @__atomic_load(i32 512, i8* {{.*}} @bigThing
-}
-struct foo structAtomicExchange() {
-  // CHECK: @structAtomicExchange
-  struct foo f = {0};
-  struct foo old;
-  __atomic_exchange(&f, &bigThing, &old, 5);
-  // CHECK: call void @__atomic_exchange(i32 512, {{.*}}, i8* bitcast ({{.*}} @bigThing to i8*),
-
-  return __c11_atomic_exchange(&bigAtomic, f, 5);
-  // CHECK: call void @__atomic_exchange(i32 512, i8* bitcast ({{.*}} @bigAtomic to i8*),
-}
-int structAtomicCmpExchange() {
-  // CHECK: @structAtomicCmpExchange
-  _Bool x = __atomic_compare_exchange(&smallThing, &thing1, &thing2, 1, 5, 5);
-  // CHECK: call zeroext i1 @__atomic_compare_exchange(i32 3, {{.*}} @smallThing{{.*}} @thing1{{.*}} @thing2
-
-  struct foo f = {0};
-  struct foo g = {0};
-  g.big[12] = 12;
-  return x & __c11_atomic_compare_exchange_strong(&bigAtomic, &f, g, 5, 5);
-  // CHECK: call zeroext i1 @__atomic_compare_exchange(i32 512, i8* bitcast ({{.*}} @bigAtomic to i8*),
-}
-
-// Check that no atomic operations are used in any initialisation of _Atomic
-// types.
-_Atomic(int) atomic_init_i = 42;
-
-// CHECK: @atomic_init_foo
-void atomic_init_foo()
-{
-  // CHECK-NOT: }
-  // CHECK-NOT: atomic
-  // CHECK: store
-  _Atomic(int) j = 12;
-
-  // CHECK-NOT: }
-  // CHECK-NOT: atomic
-  // CHECK: store
-  __c11_atomic_init(&j, 42);
-
-  // CHECK-NOT: atomic
-  // CHECK: }
-}
-
-// CHECK: @invalid_atomic
-void invalid_atomic(_Atomic(int) *i) {
-  __c11_atomic_store(i, 1, memory_order_consume);
-  __c11_atomic_store(i, 1, memory_order_acquire);
-  __c11_atomic_store(i, 1, memory_order_acq_rel);
-  __c11_atomic_load(i, memory_order_release);
-  __c11_atomic_load(i, memory_order_acq_rel);
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/atomic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/atomic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/atomic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,109 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin9 | FileCheck %s
-
-int atomic(void) {
-  // non-sensical test for sync functions
-  int old;
-  int val = 1;
-  char valc = 1;
-  _Bool valb = 0;
-  unsigned int uval = 1;
-  int cmp = 0;
-  int* ptrval;
-
-  old = __sync_fetch_and_add(&val, 1);
-  // CHECK: atomicrmw add i32* %val, i32 1 seq_cst
-  
-  old = __sync_fetch_and_sub(&valc, 2);
-  // CHECK: atomicrmw sub i8* %valc, i8 2 seq_cst
-  
-  old = __sync_fetch_and_min(&val, 3);
-  // CHECK: atomicrmw min i32* %val, i32 3 seq_cst
-  
-  old = __sync_fetch_and_max(&val, 4);
-  // CHECK: atomicrmw max i32* %val, i32 4 seq_cst
-  
-  old = __sync_fetch_and_umin(&uval, 5u);
-  // CHECK: atomicrmw umin i32* %uval, i32 5 seq_cst
-  
-  old = __sync_fetch_and_umax(&uval, 6u);
-  // CHECK: atomicrmw umax i32* %uval, i32 6 seq_cst
-  
-  old = __sync_lock_test_and_set(&val, 7);
-  // CHECK: atomicrmw xchg i32* %val, i32 7 seq_cst
-  
-  old = __sync_swap(&val, 8);
-  // CHECK: atomicrmw xchg i32* %val, i32 8 seq_cst
-  
-  old = __sync_val_compare_and_swap(&val, 4, 1976);
-  // CHECK: cmpxchg i32* %val, i32 4, i32 1976 seq_cst
-  
-  old = __sync_bool_compare_and_swap(&val, 4, 1976);
-  // CHECK: cmpxchg i32* %val, i32 4, i32 1976 seq_cst
-
-  old = __sync_fetch_and_and(&val, 0x9);
-  // CHECK: atomicrmw and i32* %val, i32 9 seq_cst
-
-  old = __sync_fetch_and_or(&val, 0xa);
-  // CHECK: atomicrmw or i32* %val, i32 10 seq_cst
-
-  old = __sync_fetch_and_xor(&val, 0xb);
-  // CHECK: atomicrmw xor i32* %val, i32 11 seq_cst
-  
-  old = __sync_add_and_fetch(&val, 1);
-  // CHECK: atomicrmw add i32* %val, i32 1 seq_cst
-
-  old = __sync_sub_and_fetch(&val, 2);
-  // CHECK: atomicrmw sub i32* %val, i32 2 seq_cst
-
-  old = __sync_and_and_fetch(&valc, 3);
-  // CHECK: atomicrmw and i8* %valc, i8 3 seq_cst
-
-  old = __sync_or_and_fetch(&valc, 4);
-  // CHECK: atomicrmw or i8* %valc, i8 4 seq_cst
-
-  old = __sync_xor_and_fetch(&valc, 5);
-  // CHECK: atomicrmw xor i8* %valc, i8 5 seq_cst  
-  
-  __sync_val_compare_and_swap((void **)0, (void *)0, (void *)0);
-  // CHECK: cmpxchg i32* null, i32 0, i32 0 seq_cst
-
-  if ( __sync_val_compare_and_swap(&valb, 0, 1)) {
-    // CHECK: cmpxchg i8* %valb, i8 0, i8 1 seq_cst
-    old = 42;
-  }
-  
-  __sync_bool_compare_and_swap((void **)0, (void *)0, (void *)0);
-  // CHECK: cmpxchg i32* null, i32 0, i32 0 seq_cst
-  
-  __sync_lock_release(&val);
-  // CHECK: store atomic i32 0, {{.*}} release, align 4
-
-  __sync_lock_release(&ptrval);
-  // CHECK: store atomic i32 0, {{.*}} release, align 4
-
-  __sync_synchronize ();
-  // CHECK: fence seq_cst
-
-  return old;
-}
-
-// CHECK: @release_return
-void release_return(int *lock) {
-  // Ensure this is actually returning void all the way through.
-  return __sync_lock_release(lock);
-  // CHECK: store atomic {{.*}} release, align 4
-}
-
-
-// rdar://8461279 - Atomics with address spaces.
-// CHECK: @addrspace
-void addrspace(int  __attribute__((address_space(256))) * P) {
-  __sync_bool_compare_and_swap(P, 0, 1);
-  // CHECK: cmpxchg i32 addrspace(256)*{{.*}}, i32 0, i32 1 seq_cst  
-
-  __sync_val_compare_and_swap(P, 0, 1);
-  // CHECK: cmpxchg i32 addrspace(256)*{{.*}}, i32 0, i32 1 seq_cst  
-
-  __sync_xor_and_fetch(P, 123);
-  // CHECK: atomicrmw xor i32 addrspace(256)*{{.*}}, i32 123 seq_cst  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/atomic_ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/atomic_ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/atomic_ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-void foo(int x)
-{
-  _Atomic(int) i = 0;
-  _Atomic(short) j = 0;
-  // Check that multiply / divides on atomics produce a cmpxchg loop
-  i *= 2;
-  // CHECK: mul nsw i32
-  // CHECK: cmpxchg i32*
-  i /= 2;
-  // CHECK: sdiv i32
-  // CHECK: cmpxchg i32*
-  j /= x;
-  // CHECK: sdiv i32
-  // CHECK: cmpxchg i16*
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/atomics-inlining.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/atomics-inlining.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/atomics-inlining.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -triple powerpc-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=PPC32
-// RUN: %clang_cc1 -triple powerpc64-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=PPC64
-// RUN: %clang_cc1 -triple mipsel-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS32
-// RUN: %clang_cc1 -triple mips64el-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS64
-
-unsigned char c1, c2;
-unsigned short s1, s2;
-unsigned int i1, i2;
-unsigned long long ll1, ll2;
-
-enum memory_order {
-  memory_order_relaxed,
-  memory_order_consume,
-  memory_order_acquire,
-  memory_order_release,
-  memory_order_acq_rel,
-  memory_order_seq_cst
-};
-
-void test1(void) {
-  (void)__atomic_load(&c1, &c2, memory_order_seq_cst);
-  (void)__atomic_load(&s1, &s2, memory_order_seq_cst);
-  (void)__atomic_load(&i1, &i2, memory_order_seq_cst);
-  (void)__atomic_load(&ll1, &ll2, memory_order_seq_cst);
-
-// PPC32: define void @test1
-// PPC32: load atomic i8* @c1 seq_cst
-// PPC32: load atomic i16* @s1 seq_cst
-// PPC32: load atomic i32* @i1 seq_cst
-// PPC32: call void @__atomic_load(i32 8, i8* bitcast (i64* @ll1 to i8*)
-
-// PPC64: define void @test1
-// PPC64: load atomic i8* @c1 seq_cst
-// PPC64: load atomic i16* @s1 seq_cst
-// PPC64: load atomic i32* @i1 seq_cst
-// PPC64: load atomic i64* @ll1 seq_cst
-
-// MIPS32: define void @test1
-// MIPS32: load atomic i8* @c1 seq_cst
-// MIPS32: load atomic i16* @s1 seq_cst
-// MIPS32: load atomic i32* @i1 seq_cst
-// MIPS32: call void @__atomic_load(i32 8, i8* bitcast (i64* @ll1 to i8*)
-
-// MIPS64: define void @test1
-// MIPS64: load atomic i8* @c1 seq_cst
-// MIPS64: load atomic i16* @s1 seq_cst
-// MIPS64: load atomic i32* @i1 seq_cst
-// MIPS64: load atomic i64* @ll1 seq_cst
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-availability.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-availability.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-availability.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fvisibility hidden "-triple" "x86_64-apple-darwin8.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_4 %s
-// RUN: %clang_cc1 -fvisibility hidden "-triple" "x86_64-apple-darwin9.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_5 %s
-// RUN: %clang_cc1 -fvisibility hidden "-triple" "x86_64-apple-darwin10.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_6 %s
-
-// CHECK-10_4: define hidden void @f2
-// CHECK-10_5: define hidden void @f2
-// CHECK-10_6: define hidden void @f2
-void f2();
-void f2() { }
-
-// CHECK-10_4: define void @f3
-// CHECK-10_5: define void @f3
-// CHECK-10_6: define void @f3
-void f3() __attribute__((availability(macosx,introduced=10.5)));
-void f3() { }
-
-// CHECK-10_4: declare extern_weak void @f0
-// CHECK-10_5: declare void @f0
-// CHECK-10_6: declare void @f0
-void f0() __attribute__((availability(macosx,introduced=10.5)));
-
-// CHECK-10_4: declare extern_weak void @f1
-// CHECK-10_5: declare extern_weak void @f1
-// CHECK-10_6: declare void @f1
-void f1() __attribute__((availability(macosx,introduced=10.6)));
-
-void test() {
-  f0();
-  f1();
-  f2();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-cleanup.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-cleanup.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-cleanup.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-// <rdar://problem/6827047>
-void f(void* arg);
-void g() {
-  __attribute__((cleanup(f))) void *g;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-coldhot.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-coldhot.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-coldhot.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-int test1() __attribute__((__cold__)) {
-  return 42;
-
-// Check that we set the optsize attribute on the function.
-// CHECK: @test1{{.*}}[[ATTR:#[0-9]+]]
-// CHECK: ret
-}
-
-// CHECK: attributes [[ATTR]] = { {{.*}}optsize{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-minsize.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-minsize.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-minsize.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -Oz -emit-llvm %s -o - | FileCheck %s -check-prefix=Oz
-// RUN: %clang_cc1 -O0 -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
-// RUN: %clang_cc1 -O1 -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
-// RUN: %clang_cc1 -O2 -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
-// RUN: %clang_cc1 -O3 -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
-// RUN: %clang_cc1 -Os -emit-llvm %s -o - | FileCheck %s -check-prefix=OTHER
-// Check that we set the minsize attribute on each function
-// when Oz optimization level is set.
-
-__attribute__((minsize))
-int test1() {
-  return 42;
-// Oz: @{{.*}}test1{{.*}}[[MINSIZE:#[0-9]+]]
-// OTHER: @{{.*}}test1{{.*}}[[MS:#[0-9]+]]
-}
-
-int test2() {
-  return 42;
-// Oz: @{{.*}}test2{{.*}}[[MINSIZE]]
-// Oz: ret
-// OTHER: @{{.*}}test2
-// OTHER-NOT: [[MS]]
-// OTHER: ret
-}
-
-int test3() {
-  return 42;
-// Oz: @{{.*}}test3{{.*}}[[MINSIZE]]
-// Oz: ret
-// OTHER: @{{.*}}test3
-// OTHER-NOT: [[MS]]
-// OTHER: ret
-}
-
-// Check that the minsize attribute is well propagated through
-// template instantiation
-
-template<typename T>
-__attribute__((minsize))
-void test4(T arg) {
-  return;
-}
-
-template
-void test4<int>(int arg);
-// Oz: define{{.*}}void @{{.*}}test4
-// Oz: [[MINSIZE]]
-// OTHER: define{{.*}}void @{{.*}}test4
-// OTHER: [[MS]]
-
-template
-void test4<float>(float arg);
-// Oz: define{{.*}}void @{{.*}}test4
-// Oz: [[MINSIZE]]
-// OTHER: define{{.*}}void @{{.*}}test4
-// OTHER: [[MS]]
-
-template<typename T>
-void test5(T arg) {
-  return;
-}
-
-template
-void test5<int>(int arg);
-// Oz: define{{.*}}void @{{.*}}test5
-// Oz: [[MINSIZE]]
-// OTHER: define{{.*}}void @{{.*}}test5
-// OTHER-NOT: define{{.*}}void @{{.*}}test5{{.*}}[[MS]]
-
-template
-void test5<float>(float arg);
-// Oz: define{{.*}}void @{{.*}}test5
-// Oz: [[MINSIZE]]
-// OTHER: define{{.*}}void @{{.*}}test5
-// OTHER-NOT: define{{.*}}void @{{.*}}test5{{.*}}[[MS]]
-
-// Oz: attributes [[MINSIZE]] = { minsize{{.*}} }
-
-// OTHER: attributes [[MS]] = { minsize nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-naked.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-naked.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-naked.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 %s -emit-llvm -o - | FileCheck %s
-
-void t1() __attribute__((naked));
-
-// Basic functionality check
-// (Note that naked needs to imply noinline to work properly.)
-// CHECK: define void @t1() [[NAKED:#[0-9]+]] {
-void t1()
-{
-}
-
-// Make sure this doesn't explode in the verifier.
-// (It doesn't really make sense, but it isn't invalid.)
-// CHECK: define void @t2() [[NAKED]] {
-__attribute((naked, always_inline)) void t2()  {
-}
-
-// CHECK: attributes [[NAKED]] = { naked noinline nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-nodebug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-nodebug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-nodebug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm -o %t %s
-// RUN: not grep 'call void @llvm.dbg.func.start' %t
-
-void t1() __attribute__((nodebug));
-
-void t1()
-{
-  int a = 10;
-  
-  a++;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-noinline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-noinline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-noinline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm -o %t %s
-// RUN: grep 'noinline' %t
-
-void t1() __attribute__((noinline));
-
-void t1()
-{
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-used.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-used.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-used.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: grep '@llvm.used = .*@g0' %t
-// RUN: grep '@llvm.used = .*@f0' %t
-// RUN: grep '@llvm.used = .*@f1.l0' %t
-
-
-int g0 __attribute__((used));
-
-static void __attribute__((used)) f0(void) {
-}
-
-void f1() { 
-  static int l0 __attribute__((used)) = 5225; 
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weak-import.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weak-import.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weak-import.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-darwin-apple -emit-llvm -o - %s | FileCheck %s
-// rdar://9538608
-
-extern int A __attribute__((weak_import));
-int A;
-
-extern int B __attribute__((weak_import));
-extern int B;
-
-int C;
-extern int C __attribute__((weak_import));
-
-extern int D __attribute__((weak_import));
-extern int D __attribute__((weak_import));
-int D;
-
-extern int E __attribute__((weak_import));
-int E;
-extern int E __attribute__((weak_import));
-
-// CHECK: @A = global i32
-// CHECK-NOT: @B =
-// CHECK: @C = common global i32
-// CHECK: @D = global i32
-// CHECK: @E = global i32
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weakref.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weakref.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weakref.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i386-linux-gnu -o %t %s
-// RUN: FileCheck --input-file=%t %s
-
-// CHECK: declare extern_weak void @test1_f()
-void test1_f(void);
-static void test1_g(void) __attribute__((weakref("test1_f")));
-void test1_h(void) {
-  test1_g();
-}
-
-// CHECK: define void @test2_f()
-void test2_f(void) {}
-static void test2_g(void) __attribute__((weakref("test2_f")));
-void test2_h(void) {
-  test2_g();
-}
-
-// CHECK: declare void @test3_f()
-void test3_f(void);
-static void test3_g(void) __attribute__((weakref("test3_f")));
-void test3_foo(void) {
-  test3_f();
-}
-void test3_h(void) {
-  test3_g();
-}
-
-// CHECK: define void @test4_f()
-void test4_f(void);
-static void test4_g(void) __attribute__((weakref("test4_f")));
-void test4_h(void) {
-  test4_g();
-}
-void test4_f(void) {}
-
-// CHECK: declare void @test5_f()
-void test5_f(void);
-static void test5_g(void) __attribute__((weakref("test5_f")));
-void test5_h(void) {
-  test5_g();
-}
-void test5_foo(void) {
-  test5_f();
-}
-
-// CHECK: declare extern_weak void @test6_f()
-void test6_f(void) __attribute__((weak));
-static void test6_g(void) __attribute__((weakref("test6_f")));
-void test6_h(void) {
-  test6_g();
-}
-void test6_foo(void) {
-  test6_f();
-}
-
-// CHECK: declare extern_weak void @test8_f()
-static void test8_g(void) __attribute__((weakref("test8_f")));
-void test8_h(void) {
-  if (test8_g)
-    test8_g();
-}
-// CHECK: declare extern_weak void @test7_f()
-void test7_f(void);
-static void test7_g(void) __attribute__((weakref("test7_f")));
-static void *const test7_zed = (void *) &test7_g;
-void* test7_h(void) {
-  return test7_zed;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weakref2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weakref2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attr-weakref2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i386-linux-gnu -o %t %s
-// RUN: FileCheck --input-file=%t %s
-
-// CHECK: @test1_f = extern_weak global i32
-extern int test1_f;
-static int test1_g __attribute__((weakref("test1_f")));
-int test1_h(void) {
-  return test1_g;
-}
-
-// CHECK: @test2_f = common global i32 0, align 4
-int test2_f;
-static int test2_g __attribute__((weakref("test2_f")));
-int test2_h(void) {
-  return test2_g;
-}
-
-// CHECK: @test3_f = external global i32
-extern int test3_f;
-static int test3_g __attribute__((weakref("test3_f")));
-int test3_foo(void) {
-  return test3_f;
-}
-int test3_h(void) {
-  return test3_g;
-}
-
-// CHECK: @test4_f = common global i32 0, align 4
-extern int test4_f;
-static int test4_g __attribute__((weakref("test4_f")));
-int test4_h(void) {
-  return test4_g;
-}
-int test4_f;
-
-// CHECK: @test5_f = external global i32
-extern int test5_f;
-static int test5_g __attribute__((weakref("test5_f")));
-int test5_h(void) {
-  return test5_g;
-}
-int test5_foo(void) {
-  return test5_f;
-}
-
-// CHECK: @test6_f = extern_weak global i32
-extern int test6_f __attribute__((weak));
-static int test6_g __attribute__((weakref("test6_f")));
-int test6_h(void) {
-  return test6_g;
-}
-int test6_foo(void) {
-  return test6_f;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attribute-section-data-common.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attribute-section-data-common.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attribute-section-data-common.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -S %s -o /dev/null
-struct rtxc_snapshot {
-  int a, b, c, d;
-};
-__attribute__ ((section("__DATA, __common"))) struct rtxc_snapshot rtxc_log_A[4];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attribute_constructor.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attribute_constructor.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attribute_constructor.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | grep llvm.global_ctors
-
-void foo() __attribute__((constructor));
-void foo() {
-  bar();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/attributes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/attributes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/attributes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i386-linux-gnu -o %t %s
-// RUN: FileCheck --input-file=%t %s
-
-// CHECK: @t5 = weak global i32 2
-int t5 __attribute__((weak)) = 2;
-
-// CHECK: @t13 = global %struct.s0 zeroinitializer, section "SECT"
-struct s0 { int x; };
-struct s0 t13 __attribute__((section("SECT"))) = { 0 };
-
-// CHECK: @t14.x = internal global i32 0, section "SECT"
-void t14(void) {
-  static int x __attribute__((section("SECT"))) = 0;
-}
-
-// CHECK: @t18 = global i32 1, align 4
-extern int t18 __attribute__((weak_import));
-int t18 = 1;
-
-// CHECK: @t16 = extern_weak global i32
-extern int t16 __attribute__((weak_import));
-
-// CHECK: @t6 = common protected global i32 0
-int t6 __attribute__((visibility("protected")));
-
-// CHECK: @t12 = global i32 0, section "SECT"
-int t12 __attribute__((section("SECT")));
-
-// CHECK: @t9 = alias weak bitcast (void ()* @__t8 to void (...)*)
-void __t8() {}
-void t9() __attribute__((weak, alias("__t8")));
-
-// CHECK: declare extern_weak i32 @t15()
-int __attribute__((weak_import)) t15(void);
-int t17() {
-  return t15() + t16;
-}
-
-// CHECK: define void @t1() [[NR:#[0-9]+]] {
-void t1() __attribute__((noreturn));
-void t1() { while (1) {} }
-
-// CHECK: define void @t2() [[NUW:#[0-9]+]] {
-void t2() __attribute__((nothrow));
-void t2() {}
-
-// CHECK: define weak void @t3() [[NUW]] {
-void t3() __attribute__((weak));
-void t3() {}
-
-// CHECK: define hidden void @t4() [[NUW]] {
-void t4() __attribute__((visibility("hidden")));
-void t4() {}
-
-// CHECK: define void @t7() [[NR]] {
-void t7() __attribute__((noreturn, nothrow));
-void t7() { while (1) {} }
-
-// CHECK: define void @t10() [[NUW]] section "SECT" {
-void t10(void) __attribute__((section("SECT")));
-void t10(void) {}
-// CHECK: define void @t11() [[NUW]] section "SECT" {
-void __attribute__((section("SECT"))) t11(void) {}
-
-// CHECK: define i32 @t19() [[NUW]] {
-extern int t19(void) __attribute__((weak_import));
-int t19(void) {
-  return 10;
-}
-
-// CHECK:define void @t20() [[NUW]] {
-// CHECK: call void @abort()
-// CHECK-NEXT: unreachable
-void t20(void) {
-  __builtin_abort();
-}
-
-void (__attribute__((fastcall)) *fptr)(int);
-void t21(void) {
-  fptr(10);
-}
-// CHECK: [[FPTRVAR:%[a-z0-9]+]] = load void (i32)** @fptr
-// CHECK-NEXT: call x86_fastcallcc void [[FPTRVAR]](i32 inreg 10)
-
-
-// PR9356: We might want to err on this, but for now at least make sure we
-// use the section in the definition.
-void __attribute__((section(".foo"))) t22(void);
-void __attribute__((section(".bar"))) t22(void) {}
-
-// CHECK: define void @t22() [[NUW]] section ".bar"
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
-// CHECK: attributes [[NR]] = { noreturn nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/available-externally-suppress.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/available-externally-suppress.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/available-externally-suppress.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -O0 -triple x86_64-apple-darwin10 %s | FileCheck %s
-
-// Ensure that we don't emit available_externally functions at -O0.
-int x;
-
-inline void f0(int y) { x = y; }
-
-// CHECK: define void @test()
-// CHECK: declare void @f0(i32)
-void test() {
-  f0(17);
-}
-
-inline int __attribute__((always_inline)) f1(int x) {
-  int blarg = 0;
-  for (int i = 0; i < x; ++i)
-    blarg = blarg + x * i;
-  return blarg;
-}
-
-// CHECK: @test1
-int test1(int x) {
-  // CHECK: br i1
-  // CHECK-NOT: call {{.*}} @f1
-  // CHECK: ret i32
-  return f1(x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/avx-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/avx-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/avx-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +avx -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <immintrin.h>
-
-//
-// Test LLVM IR codegen of shuffle instructions
-//
-
-__m256 test__mm256_loadu_ps(void* p) {
-  // CHECK: load <8 x float>* %{{.*}}, align 1
-  return _mm256_loadu_ps(p);
-}
-
-__m256d test__mm256_loadu_pd(void* p) {
-  // CHECK: load <4 x double>* %{{.*}}, align 1
-  return _mm256_loadu_pd(p);
-}
-
-__m256i test__mm256_loadu_si256(void* p) {
-  // CHECK: load <4 x i64>* %{{.+}}, align 1
-  return _mm256_loadu_si256(p);
-}
-
-__m128i test_mm_cmpestrm(__m128i A, int LA, __m128i B, int LB) {
-  // CHECK: @llvm.x86.sse42.pcmpestrm128
-  return _mm_cmpestrm(A, LA, B, LB, 7);
-}
-
-int test_mm_cmpestri(__m128i A, int LA, __m128i B, int LB) {
-  // CHECK: @llvm.x86.sse42.pcmpestri128
-  return _mm_cmpestri(A, LA, B, LB, 7);
-}
-
-int test_mm_cmpestra(__m128i A, int LA, __m128i B, int LB) {
-  // CHECK: @llvm.x86.sse42.pcmpestria128
-  return _mm_cmpestra(A, LA, B, LB, 7);
-}
-
-int test_mm_cmpestrc(__m128i A, int LA, __m128i B, int LB) {
-  // CHECK: @llvm.x86.sse42.pcmpestric128
-  return _mm_cmpestrc(A, LA, B, LB, 7);
-}
-
-int test_mm_cmpestro(__m128i A, int LA, __m128i B, int LB) {
-  // CHECK: @llvm.x86.sse42.pcmpestrio128
-  return _mm_cmpestro(A, LA, B, LB, 7);
-}
-
-int test_mm_cmpestrs(__m128i A, int LA, __m128i B, int LB) {
-  // CHECK: @llvm.x86.sse42.pcmpestris128
-  return _mm_cmpestrs(A, LA, B, LB, 7);
-}
-
-int test_mm_cmpestrz(__m128i A, int LA, __m128i B, int LB) {
-  // CHECK: @llvm.x86.sse42.pcmpestriz128
-  return _mm_cmpestrz(A, LA, B, LB, 7);
-}
-
-__m128i test_mm_cmpistrm(__m128i A, __m128i B) {
-  // CHECK: @llvm.x86.sse42.pcmpistrm128
-  return _mm_cmpistrm(A, B, 7);
-}
-
-int test_mm_cmpistri(__m128i A, __m128i B) {
-  // CHECK: @llvm.x86.sse42.pcmpistri128
-  return _mm_cmpistri(A, B, 7);
-}
-
-int test_mm_cmpistra(__m128i A, __m128i B) {
-  // CHECK: @llvm.x86.sse42.pcmpistria128
-  return _mm_cmpistra(A, B, 7);
-}
-
-int test_mm_cmpistrc(__m128i A, __m128i B) {
-  // CHECK: @llvm.x86.sse42.pcmpistric128
-  return _mm_cmpistrc(A, B, 7);
-}
-
-int test_mm_cmpistro(__m128i A, __m128i B) {
-  // CHECK: @llvm.x86.sse42.pcmpistrio128
-  return _mm_cmpistro(A, B, 7);
-}
-
-int test_mm_cmpistrs(__m128i A, __m128i B) {
-  // CHECK: @llvm.x86.sse42.pcmpistris128
-  return _mm_cmpistrs(A, B, 7);
-}
-
-int test_mm_cmpistrz(__m128i A, __m128i B) {
-  // CHECK: @llvm.x86.sse42.pcmpistriz128
-  return _mm_cmpistrz(A, B, 7);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/avx-cmp-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/avx-cmp-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/avx-cmp-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +avx -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <immintrin.h>
-
-//
-// Test LLVM IR codegen of cmpXY instructions
-//
-
-__m128d test_cmp_pd(__m128d a, __m128d b) {
-  // Expects that the third argument in LLVM IR is immediate expression
-  // CHECK: @llvm.x86.sse2.cmp.pd({{.*}}, i8 13)
-  return _mm_cmp_pd(a, b, _CMP_GE_OS);
-}
-
-__m128d test_cmp_ps(__m128 a, __m128 b) {
-  // Expects that the third argument in LLVM IR is immediate expression
-  // CHECK: @llvm.x86.sse.cmp.ps({{.*}}, i8 13)
-  return _mm_cmp_ps(a, b, _CMP_GE_OS);
-}
-
-__m256d test_cmp_pd256(__m256d a, __m256d b) {
-  // Expects that the third argument in LLVM IR is immediate expression
-  // CHECK: @llvm.x86.avx.cmp.pd.256({{.*}}, i8 13)
-  return _mm256_cmp_pd(a, b, _CMP_GE_OS);
-}
-
-__m256d test_cmp_ps256(__m256 a, __m256 b) {
-  // Expects that the third argument in LLVM IR is immediate expression
-  // CHECK: @llvm.x86.avx.cmp.ps.256({{.*}}, i8 13)
-  return _mm256_cmp_ps(a, b, _CMP_GE_OS);
-}
-
-__m128d test_cmp_sd(__m128d a, __m128d b) {
-  // Expects that the third argument in LLVM IR is immediate expression
-  // CHECK: @llvm.x86.sse2.cmp.sd({{.*}}, i8 13)
-  return _mm_cmp_sd(a, b, _CMP_GE_OS);
-}
-
-__m128d test_cmp_ss(__m128 a, __m128 b) {
-  // Expects that the third argument in LLVM IR is immediate expression
-  // CHECK: @llvm.x86.sse.cmp.ss({{.*}}, i8 13)
-  return _mm_cmp_ss(a, b, _CMP_GE_OS);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/avx-shuffle-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/avx-shuffle-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/avx-shuffle-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +avx -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <immintrin.h>
-
-//
-// Test LLVM IR codegen of shuffle instructions
-//
-
-__m256 x(__m256 a, __m256 b) {
-  // Check if the mask is correct
-  // CHECK: shufflevector{{.*}}<i32 3, i32 2, i32 8, i32 11, i32 7, i32 6, i32 12, i32 15>
-  return _mm256_shuffle_ps(a, b, 203);
-}
-
-__m128d test_mm_permute_pd(__m128d a) {
-  // Check if the mask is correct
-  // CHECK: shufflevector{{.*}}<i32 1, i32 0>
-  return _mm_permute_pd(a, 1);
-}
-
-__m256d test_mm256_permute_pd(__m256d a) {
-  // Check if the mask is correct
-  // CHECK: shufflevector{{.*}}<i32 1, i32 0, i32 3, i32 2>
-  return _mm256_permute_pd(a, 5);
-}
-
-__m128 test_mm_permute_ps(__m128 a) {
-  // Check if the mask is correct
-  // CHECK: shufflevector{{.*}}<i32 3, i32 2, i32 1, i32 0>
-  return _mm_permute_ps(a, 0x1b);
-}
-
-// Test case for PR12401
-__m128 test_mm_permute_ps2(__m128 a) {
-  // Check if the mask is correct
-  // CHECK: shufflevector{{.*}}<i32 2, i32 1, i32 2, i32 3>
-  return _mm_permute_ps(a, 0xe6);
-}
-
-__m256 test_mm256_permute_ps(__m256 a) {
-  // Check if the mask is correct
-  // CHECK: shufflevector{{.*}}<i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
-  return _mm256_permute_ps(a, 0x1b);
-}
-
-__m256d test_mm256_permute2f128_pd(__m256d a, __m256d b) {
-  // Check if the mask is correct
-  // CHECK: @llvm.x86.avx.vperm2f128.pd.256
-  return _mm256_permute2f128_pd(a, b, 0x31);
-}
-
-__m256 test_mm256_permute2f128_ps(__m256 a, __m256 b) {
-  // Check if the mask is correct
-  // CHECK: @llvm.x86.avx.vperm2f128.ps.256
-  return _mm256_permute2f128_ps(a, b, 0x13);
-}
-
-__m256i test_mm256_permute2f128_si256(__m256i a, __m256i b) {
-  // Check if the mask is correct
-  // CHECK: @llvm.x86.avx.vperm2f128.si.256
-  return _mm256_permute2f128_si256(a, b, 0x20);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/avx2-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/avx2-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/avx2-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,938 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +avx2 -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <immintrin.h>
-
-__m256i test_mm256_mpsadbw_epu8(__m256i x, __m256i y) {
-  // CHECK: @llvm.x86.avx2.mpsadbw({{.*}}, {{.*}}, i32 3)
-  return _mm256_mpsadbw_epu8(x, y, 3);
-}
-
-__m256i test_mm256_sad_epu8(__m256i x, __m256i y) {
-  // CHECK: @llvm.x86.avx2.psad.bw
-  return _mm256_sad_epu8(x, y);
-}
-
-__m256i test_mm256_abs_epi8(__m256i a) {
-  // CHECK: @llvm.x86.avx2.pabs.b
-  return _mm256_abs_epi8(a);
-}
-
-__m256i test_mm256_abs_epi16(__m256i a) {
-  // CHECK: @llvm.x86.avx2.pabs.w
-  return _mm256_abs_epi16(a);
-}
-
-__m256i test_mm256_abs_epi32(__m256i a) {
-  // CHECK: @llvm.x86.avx2.pabs.d
-  return _mm256_abs_epi32(a);
-}
-
-__m256i test_mm256_packs_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.packsswb
-  return _mm256_packs_epi16(a, b);
-}
-
-__m256i test_mm256_packs_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.packssdw
-  return _mm256_packs_epi32(a, b);
-}
-
-__m256i test_mm256_packs_epu16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.packuswb
-  return _mm256_packus_epi16(a, b);
-}
-
-__m256i test_mm256_packs_epu32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.packusdw
-  return _mm256_packus_epi32(a, b);
-}
-
-__m256i test_mm256_add_epi8(__m256i a, __m256i b) {
-  // CHECK: add <32 x i8>
-  return _mm256_add_epi8(a, b);
-}
-
-__m256i test_mm256_add_epi16(__m256i a, __m256i b) {
-  // CHECK: add <16 x i16>
-  return _mm256_add_epi16(a, b);
-}
-
-__m256i test_mm256_add_epi32(__m256i a, __m256i b) {
-  // CHECK: add <8 x i32>
-  return _mm256_add_epi32(a, b);
-}
-
-__m256i test_mm256_add_epi64(__m256i a, __m256i b) {
-  // CHECK: add <4 x i64>
-  return _mm256_add_epi64(a, b);
-}
-
-__m256i test_mm256_adds_epi8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.padds.b
-  return _mm256_adds_epi8(a, b);
-}
-
-__m256i test_mm256_adds_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.padds.w
-  return _mm256_adds_epi16(a, b);
-}
-
-__m256i test_mm256_adds_epu8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.paddus.b
-  return _mm256_adds_epu8(a, b);
-}
-
-__m256i test_mm256_adds_epu16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.paddus.w
-  return _mm256_adds_epu16(a, b);
-}
-
-__m256i test_mm256_alignr_epi8(__m256i a, __m256i b) {
-  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 32, i32 33, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 48, i32 49>
-  return _mm256_alignr_epi8(a, b, 2);
-}
-
-__m256i test2_mm256_alignr_epi8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psrl.dq({{.*}}, i32 8)
-  return _mm256_alignr_epi8(a, b, 17);
-}
-
-__m256i test_mm256_sub_epi8(__m256i a, __m256i b) {
-  // CHECK: sub <32 x i8>
-  return _mm256_sub_epi8(a, b);
-}
-
-__m256i test_mm256_sub_epi16(__m256i a, __m256i b) {
-  // CHECK: sub <16 x i16>
-  return _mm256_sub_epi16(a, b);
-}
-
-__m256i test_mm256_sub_epi32(__m256i a, __m256i b) {
-  // CHECK: sub <8 x i32>
-  return _mm256_sub_epi32(a, b);
-}
-
-__m256i test_mm256_sub_epi64(__m256i a, __m256i b) {
-  // CHECK: sub <4 x i64>
-  return _mm256_sub_epi64(a, b);
-}
-
-__m256i test_mm256_subs_epi8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psubs.b
-  return _mm256_subs_epi8(a, b);
-}
-
-__m256i test_mm256_subs_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psubs.w
-  return _mm256_subs_epi16(a, b);
-}
-
-__m256i test_mm256_subs_epu8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psubus.b
-  return _mm256_subs_epu8(a, b);
-}
-
-__m256i test_mm256_subs_epu16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psubus.w
-  return _mm256_subs_epu16(a, b);
-}
-
-__m256i test_mm256_and_si256(__m256i a, __m256i b) {
-  // CHECK: and <4 x i64>
-  return _mm256_and_si256(a, b);
-}
-
-__m256i test_mm256_andnot_si256(__m256i a, __m256i b) {
-  // CHECK: xor <4 x i64>
-  // CHECK: and <4 x i64>
-  return _mm256_andnot_si256(a, b);
-}
-
-__m256i test_mm256_or_si256(__m256i a, __m256i b) {
-  // CHECK: or <4 x i64>
-  return _mm256_or_si256(a, b);
-}
-
-__m256i test_mm256_xor_si256(__m256i a, __m256i b) {
-  // CHECK: xor <4 x i64>
-  return _mm256_xor_si256(a, b);
-}
-
-__m256i test_mm256_avg_epu8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pavg.b
-  return _mm256_avg_epu8(a, b);
-}
-
-__m256i test_mm256_avg_epu16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pavg.w
-  return _mm256_avg_epu16(a, b);
-}
-
-__m256i test_mm256_blendv_epi8(__m256i a, __m256i b, __m256i m) {
-  // CHECK: @llvm.x86.avx2.pblendvb
-  return _mm256_blendv_epi8(a, b, m);
-}
-
-__m256i test_mm256_blend_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pblendw(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, i32 2)
-  return _mm256_blend_epi16(a, b, 2);
-}
-
-__m256i test_mm256_cmpeq_epi8(__m256i a, __m256i b) {
-  // CHECK: icmp eq <32 x i8>
-  return _mm256_cmpeq_epi8(a, b);
-}
-
-__m256i test_mm256_cmpeq_epi16(__m256i a, __m256i b) {
-  // CHECK: icmp eq <16 x i16>
-  return _mm256_cmpeq_epi16(a, b);
-}
-
-__m256i test_mm256_cmpeq_epi32(__m256i a, __m256i b) {
-  // CHECK: icmp eq <8 x i32>
-  return _mm256_cmpeq_epi32(a, b);
-}
-
-__m256i test_mm256_cmpeq_epi64(__m256i a, __m256i b) {
-  // CHECK: icmp eq <4 x i64>
-  return _mm256_cmpeq_epi64(a, b);
-}
-
-__m256i test_mm256_cmpgt_epi8(__m256i a, __m256i b) {
-  // CHECK: icmp sgt <32 x i8>
-  return _mm256_cmpgt_epi8(a, b);
-}
-
-__m256i test_mm256_cmpgt_epi16(__m256i a, __m256i b) {
-  // CHECK: icmp sgt <16 x i16>
-  return _mm256_cmpgt_epi16(a, b);
-}
-
-__m256i test_mm256_cmpgt_epi32(__m256i a, __m256i b) {
-  // CHECK: icmp sgt <8 x i32>
-  return _mm256_cmpgt_epi32(a, b);
-}
-
-__m256i test_mm256_cmpgt_epi64(__m256i a, __m256i b) {
-  // CHECK: icmp sgt <4 x i64>
-  return _mm256_cmpgt_epi64(a, b);
-}
-
-__m256i test_mm256_hadd_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.phadd.w
-  return _mm256_hadd_epi16(a, b);
-}
-
-__m256i test_mm256_hadd_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.phadd.d
-  return _mm256_hadd_epi32(a, b);
-}
-
-__m256i test_mm256_hadds_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.phadd.sw
-  return _mm256_hadds_epi16(a, b);
-}
-
-__m256i test_mm256_hsub_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.phsub.w
-  return _mm256_hsub_epi16(a, b);
-}
-
-__m256i test_mm256_hsub_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.phsub.d
-  return _mm256_hsub_epi32(a, b);
-}
-
-__m256i test_mm256_hsubs_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.phsub.sw
-  return _mm256_hsubs_epi16(a, b);
-}
-
-__m256i test_mm256_maddubs_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmadd.ub.sw
-  return _mm256_maddubs_epi16(a, b);
-}
-
-__m256i test_mm256_madd_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmadd.wd
-  return _mm256_madd_epi16(a, b);
-}
-
-__m256i test_mm256_max_epi8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmaxs.b
-  return _mm256_max_epi8(a, b);
-}
-
-__m256i test_mm256_max_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmaxs.w
-  return _mm256_max_epi16(a, b);
-}
-
-__m256i test_mm256_max_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmaxs.d
-  return _mm256_max_epi32(a, b);
-}
-
-__m256i test_mm256_max_epu8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmaxu.b
-  return _mm256_max_epu8(a, b);
-}
-
-__m256i test_mm256_max_epu16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmaxu.w
-  return _mm256_max_epu16(a, b);
-}
-
-__m256i test_mm256_max_epu32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmaxu.d
-  return _mm256_max_epu32(a, b);
-}
-
-__m256i test_mm256_min_epi8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmins.b
-  return _mm256_min_epi8(a, b);
-}
-
-__m256i test_mm256_min_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmins.w
-  return _mm256_min_epi16(a, b);
-}
-
-__m256i test_mm256_min_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmins.d
-  return _mm256_min_epi32(a, b);
-}
-
-__m256i test_mm256_min_epu8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pminu.b
-  return _mm256_min_epu8(a, b);
-}
-
-__m256i test_mm256_min_epu16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pminu.w
-  return _mm256_min_epu16(a, b);
-}
-
-__m256i test_mm256_min_epu32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pminu.d
-  return _mm256_min_epu32(a, b);
-}
-
-int test_mm256_movemask_epi8(__m256i a) {
-  // CHECK: @llvm.x86.avx2.pmovmskb
-  return _mm256_movemask_epi8(a);
-}
-
-__m256i test_mm256_cvtepi8_epi16(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovsxbw
-  return _mm256_cvtepi8_epi16(a);
-}
-
-__m256i test_mm256_cvtepi8_epi32(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovsxbd
-  return _mm256_cvtepi8_epi32(a);
-}
-
-__m256i test_mm256_cvtepi8_epi64(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovsxbq
-  return _mm256_cvtepi8_epi64(a);
-}
-
-__m256i test_mm256_cvtepi16_epi32(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovsxwd
-  return _mm256_cvtepi16_epi32(a);
-}
-
-__m256i test_mm256_cvtepi16_epi64(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovsxwq
-  return _mm256_cvtepi16_epi64(a);
-}
-
-__m256i test_mm256_cvtepi32_epi64(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovsxdq
-  return _mm256_cvtepi32_epi64(a);
-}
-
-__m256i test_mm256_cvtepu8_epi16(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovzxbw
-  return _mm256_cvtepu8_epi16(a);
-}
-
-__m256i test_mm256_cvtepu8_epi32(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovzxbd
-  return _mm256_cvtepu8_epi32(a);
-}
-
-__m256i test_mm256_cvtepu8_epi64(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovzxbq
-  return _mm256_cvtepu8_epi64(a);
-}
-
-__m256i test_mm256_cvtepu16_epi32(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovzxwd
-  return _mm256_cvtepu16_epi32(a);
-}
-
-__m256i test_mm256_cvtepu16_epi64(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovzxwq
-  return _mm256_cvtepu16_epi64(a);
-}
-
-__m256i test_mm256_cvtepu32_epi64(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pmovzxdq
-  return _mm256_cvtepu32_epi64(a);
-}
-
-__m256i test_mm256_mul_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmul.dq
-  return _mm256_mul_epi32(a, b);
-}
-
-__m256i test_mm256_mulhrs_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmul.hr.sw
-  return _mm256_mulhrs_epi16(a, b);
-}
-
-__m256i test_mm256_mulhi_epu16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmulhu.w
-  return _mm256_mulhi_epu16(a, b);
-}
-
-__m256i test_mm256_mulhi_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmulh.w
-  return _mm256_mulhi_epi16(a, b);
-}
-
-__m256i test_mm256_mullo_epi16(__m256i a, __m256i b) {
-  // CHECK: mul <16 x i16>
-  return _mm256_mullo_epi16(a, b);
-}
-
-__m256i test_mm256_mullo_epi32(__m256i a, __m256i b) {
-  // CHECK: mul <8 x i32>
-  return _mm256_mullo_epi32(a, b);
-}
-
-__m256i test_mm256_mul_epu32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pmulu.dq
-  return _mm256_mul_epu32(a, b);
-}
-
-__m256i test_mm256_shuffle_epi8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pshuf.b
-  return _mm256_shuffle_epi8(a, b);
-}
-
-__m256i test_mm256_shuffle_epi32(__m256i a) {
-  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> undef, <8 x i32> <i32 3, i32 3, i32 0, i32 0, i32 7, i32 7, i32 4, i32 4>
-  return _mm256_shuffle_epi32(a, 15);
-}
-
-__m256i test_mm256_shufflehi_epi16(__m256i a) {
-  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 7, i32 6, i32 6, i32 5, i32 8, i32 9, i32 10, i32 11, i32 15, i32 14, i32 14, i32 13>
-  return _mm256_shufflehi_epi16(a, 107);
-}
-
-__m256i test_mm256_shufflelo_epi16(__m256i a) {
-  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> undef, <16 x i32> <i32 3, i32 0, i32 1, i32 1, i32 4, i32 5, i32 6, i32 7, i32 11, i32 8, i32 9, i32 9, i32 12, i32 13, i32 14, i32 15>
-  return _mm256_shufflelo_epi16(a, 83);
-}
-
-__m256i test_mm256_sign_epi8(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psign.b
-  return _mm256_sign_epi8(a, b);
-}
-
-__m256i test_mm256_sign_epi16(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psign.w
-  return _mm256_sign_epi16(a, b);
-}
-
-__m256i test_mm256_sign_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psign.d
-  return _mm256_sign_epi32(a, b);
-}
-
-__m256i test_mm256_slli_si256(__m256i a) {
-  // CHECK: @llvm.x86.avx2.psll.dq
-  return _mm256_slli_si256(a, 3);
-}
-
-__m256i test_mm256_slli_epi16(__m256i a) {
-  // CHECK: @llvm.x86.avx2.pslli.w
-  return _mm256_slli_epi16(a, 3);
-}
-
-__m256i test_mm256_sll_epi16(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psll.w
-  return _mm256_sll_epi16(a, b);
-}
-
-__m256i test_mm256_slli_epi32(__m256i a) {
-  // CHECK: @llvm.x86.avx2.pslli.d
-  return _mm256_slli_epi32(a, 3);
-}
-
-__m256i test_mm256_sll_epi32(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psll.d
-  return _mm256_sll_epi32(a, b);
-}
-
-__m256i test_mm256_slli_epi64(__m256i a) {
-  // CHECK: @llvm.x86.avx2.pslli.q
-  return _mm256_slli_epi64(a, 3);
-}
-
-__m256i test_mm256_sll_epi64(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psll.q
-  return _mm256_sll_epi64(a, b);
-}
-
-__m256i test_mm256_srai_epi16(__m256i a) {
-  // CHECK: @llvm.x86.avx2.psrai.w
-  return _mm256_srai_epi16(a, 3);
-}
-
-__m256i test_mm256_sra_epi16(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psra.w
-  return _mm256_sra_epi16(a, b);
-}
-
-__m256i test_mm256_srai_epi32(__m256i a) {
-  // CHECK: @llvm.x86.avx2.psrai.d
-  return _mm256_srai_epi32(a, 3);
-}
-
-__m256i test_mm256_sra_epi32(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psra.d
-  return _mm256_sra_epi32(a, b);
-}
-
-__m256i test_mm256_srli_si256(__m256i a) {
-  // CHECK: @llvm.x86.avx2.psrl.dq
-  return _mm256_srli_si256(a, 3);
-}
-
-__m256i test_mm256_srli_epi16(__m256i a) {
-  // CHECK: @llvm.x86.avx2.psrli.w
-  return _mm256_srli_epi16(a, 3);
-}
-
-__m256i test_mm256_srl_epi16(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psrl.w
-  return _mm256_srl_epi16(a, b);
-}
-
-__m256i test_mm256_srli_epi32(__m256i a) {
-  // CHECK: @llvm.x86.avx2.psrli.d
-  return _mm256_srli_epi32(a, 3);
-}
-
-__m256i test_mm256_srl_epi32(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psrl.d
-  return _mm256_srl_epi32(a, b);
-}
-
-__m256i test_mm256_srli_epi64(__m256i a) {
-  // CHECK: @llvm.x86.avx2.psrli.q
-  return _mm256_srli_epi64(a, 3);
-}
-
-__m256i test_mm256_srl_epi64(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psrl.q
-  return _mm256_srl_epi64(a, b);
-}
-
-__m256i test_mm256_unpackhi_epi8(__m256i a, __m256i b) {
-  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
-  return _mm256_unpackhi_epi8(a, b);
-}
-
-__m256i test_mm256_unpackhi_epi16(__m256i a, __m256i b) {
-  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
-  return _mm256_unpackhi_epi16(a, b);
-}
-
-__m256i test_mm256_unpackhi_epi32(__m256i a, __m256i b) {
-  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
-  return _mm256_unpackhi_epi32(a, b);
-}
-
-__m256i test_mm256_unpackhi_epi64(__m256i a, __m256i b) {
-  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>
-  return _mm256_unpackhi_epi64(a, b);
-}
-
-__m256i test_mm256_unpacklo_epi8(__m256i a, __m256i b) {
-  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>
-  return _mm256_unpacklo_epi8(a, b);
-}
-
-__m256i test_mm256_unpacklo_epi16(__m256i a, __m256i b) {
-  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>
-  return _mm256_unpacklo_epi16(a, b);
-}
-
-__m256i test_mm256_unpacklo_epi32(__m256i a, __m256i b) {
-  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
-  return _mm256_unpacklo_epi32(a, b);
-}
-
-__m256i test_mm256_unpacklo_epi64(__m256i a, __m256i b) {
-  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
-  return _mm256_unpacklo_epi64(a, b);
-}
-
-__m256i test_mm256_stream_load_si256(__m256i *a) {
-  // CHECK: @llvm.x86.avx2.movntdqa
-  return _mm256_stream_load_si256(a);
-}
-
-__m128 test_mm_broadcastss_ps(__m128 a) {
-  // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps
-  return _mm_broadcastss_ps(a);
-}
-
-__m256 test_mm256_broadcastss_ps(__m128 a) {
-  // CHECK: @llvm.x86.avx2.vbroadcast.ss.ps.256
-  return _mm256_broadcastss_ps(a);
-}
-
-__m256d test_mm256_broadcastsd_pd(__m128d a) {
-  // check: @llvm.x86.avx2.vbroadcast.sd.pd.256
-  return _mm256_broadcastsd_pd(a);
-}
-
-__m256i test_mm_broadcastsi128_si256(__m128i *a) {
-  // CHECK: @llvm.x86.avx2.vbroadcasti128
-  return _mm_broadcastsi128_si256(a);
-}
-
-__m128i test_mm_blend_epi32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.pblendd.128
-  return _mm_blend_epi32(a, b, 57);
-}
-
-__m256i test_mm256_blend_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.pblendd.256
-  return _mm256_blend_epi32(a, b, 57);
-}
-
-__m256i test_mm256_broadcastb_epi8(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pbroadcastb.256
-  return _mm256_broadcastb_epi8(a);
-}
-
-__m256i test_mm256_broadcastw_epi16(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pbroadcastw.256
-  return _mm256_broadcastw_epi16(a);
-}
-
-__m256i test_mm256_broadcastd_epi32(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pbroadcastd.256
-  return _mm256_broadcastd_epi32(a);
-}
-
-__m256i test_mm256_broadcastq_epi64(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pbroadcastq.256
-  return _mm256_broadcastq_epi64(a);
-}
-
-__m128i test_mm_broadcastb_epi8(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pbroadcastb.128
-  return _mm_broadcastb_epi8(a);
-}
-
-__m128i test_mm_broadcastw_epi16(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pbroadcastw.128
-  return _mm_broadcastw_epi16(a);
-}
-
-__m128i test_mm_broadcastd_epi32(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pbroadcastd.128
-  return _mm_broadcastd_epi32(a);
-}
-
-__m128i test_mm_broadcastq_epi64(__m128i a) {
-  // CHECK: @llvm.x86.avx2.pbroadcastq.128
-  return _mm_broadcastq_epi64(a);
-}
-
-__m256i test_mm256_permutevar8x32_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.permd
-  return _mm256_permutevar8x32_epi32(a, b);
-}
-
-__m256d test_mm256_permute4x64_pd(__m256d a) {
-  // CHECK: shufflevector{{.*}}<i32 1, i32 2, i32 1, i32 0>
-  return _mm256_permute4x64_pd(a, 25);
-}
-
-__m256 test_mm256_permutevar8x32_ps(__m256 a, __m256 b) {
-  // CHECK: @llvm.x86.avx2.permps
-  return _mm256_permutevar8x32_ps(a, b);
-}
-
-__m256i test_mm256_permute4x64_epi64(__m256i a) {
-  // CHECK: shufflevector{{.*}}<i32 3, i32 0, i32 2, i32 0>
-  return _mm256_permute4x64_epi64(a, 35);
-}
-
-__m256i test_mm256_permute2x128_si256(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.vperm2i128
-  return _mm256_permute2x128_si256(a, b, 0x31);
-}
-
-__m128i test_mm256_extracti128_si256(__m256i a) {
-  // CHECK: @llvm.x86.avx2.vextracti128
-  return _mm256_extracti128_si256(a, 1);
-}
-
-__m256i test_mm256_inserti128_si256(__m256i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.vinserti128
-  return _mm256_inserti128_si256(a, b, 1);
-}
-
-__m256i test_mm256_maskload_epi32(int const *a, __m256i m) {
-  // CHECK: @llvm.x86.avx2.maskload.d.256
-  return _mm256_maskload_epi32(a, m);
-}
-
-__m256i test_mm256_maskload_epi64(long long const *a, __m256i m) {
-  // CHECK: @llvm.x86.avx2.maskload.q.256
-  return _mm256_maskload_epi64(a, m);
-}
-
-__m128i test_mm_maskload_epi32(int const *a, __m128i m) {
-  // CHECK: @llvm.x86.avx2.maskload.d
-  return _mm_maskload_epi32(a, m);
-}
-
-__m128i test_mm_maskload_epi64(long long const *a, __m128i m) {
-  // CHECK: @llvm.x86.avx2.maskload.q
-  return _mm_maskload_epi64(a, m);
-}
-
-void test_mm256_maskstore_epi32(int *a, __m256i m, __m256i b) {
-  // CHECK: @llvm.x86.avx2.maskstore.d.256
-  _mm256_maskstore_epi32(a, m, b);
-}
-
-void test_mm256_maskstore_epi64(long long *a, __m256i m, __m256i b) {
-  // CHECK: @llvm.x86.avx2.maskstore.q.256
-  _mm256_maskstore_epi64(a, m, b);
-}
-
-void test_mm_maskstore_epi32(int *a, __m128i m, __m128i b) {
-  // CHECK: @llvm.x86.avx2.maskstore.d
-  _mm_maskstore_epi32(a, m, b);
-}
-
-void test_mm_maskstore_epi64(long long *a, __m128i m, __m128i b) {
-  // CHECK: @llvm.x86.avx2.maskstore.q
-  _mm_maskstore_epi64(a, m, b);
-}
-
-__m256i test_mm256_sllv_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psllv.d.256
-  return _mm256_sllv_epi32(a, b);
-}
-
-__m128i test_mm_sllv_epi32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psllv.d
-  return _mm_sllv_epi32(a, b);
-}
-
-__m256i test_mm256_sllv_epi64(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psllv.q.256
-  return _mm256_sllv_epi64(a, b);
-}
-
-__m128i test_mm_sllv_epi64(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psllv.q
-  return _mm_sllv_epi64(a, b);
-}
-
-__m256i test_mm256_srav_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psrav.d.256
-  return _mm256_srav_epi32(a, b);
-}
-
-__m128i test_mm_srav_epi32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psrav.d
-  return _mm_srav_epi32(a, b);
-}
-
-__m256i test_mm256_srlv_epi32(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psrlv.d.256
-  return _mm256_srlv_epi32(a, b);
-}
-
-__m128i test_mm_srlv_epi32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psrlv.d
-  return _mm_srlv_epi32(a, b);
-}
-
-__m256i test_mm256_srlv_epi64(__m256i a, __m256i b) {
-  // CHECK: @llvm.x86.avx2.psrlv.q.256
-  return _mm256_srlv_epi64(a, b);
-}
-
-__m128i test_mm_srlv_epi64(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.avx2.psrlv.q
-  return _mm_srlv_epi64(a, b);
-}
-
-__m128d test_mm_mask_i32gather_pd(__m128d a, double const *b, __m128i c,
-                                  __m128d d) {
-  // CHECK: @llvm.x86.avx2.gather.d.pd
-  return _mm_mask_i32gather_pd(a, b, c, d, 2);
-}
-
-__m256d test_mm256_mask_i32gather_pd(__m256d a, double const *b, __m128i c,
-                                      __m256d d) {
-  // CHECK: @llvm.x86.avx2.gather.d.pd.256
-  return _mm256_mask_i32gather_pd(a, b, c, d, 2);
-}
-__m128d test_mm_mask_i64gather_pd(__m128d a, double const *b, __m128i c,
-                                  __m128d d) {
-  // CHECK: @llvm.x86.avx2.gather.q.pd
-  return _mm_mask_i64gather_pd(a, b, c, d, 2);
-}
-__m256d test_mm256_mask_i64gather_pd(__m256d a, double const *b, __m256i c,
-                                      __m256d d) {
-  // CHECK: @llvm.x86.avx2.gather.q.pd.256
-  return _mm256_mask_i64gather_pd(a, b, c, d, 2);
-}
-
-__m128 test_mm_mask_i32gather_ps(__m128 a, float const *b, __m128i c,
-                                 __m128 d) {
-  // CHECK: @llvm.x86.avx2.gather.d.ps
-  return _mm_mask_i32gather_ps(a, b, c, d, 2);
-}
-__m256 test_mm256_mask_i32gather_ps(__m256 a, float const *b, __m256i c,
-                                     __m256 d) {
-  // CHECK: @llvm.x86.avx2.gather.d.ps.256
-  return _mm256_mask_i32gather_ps(a, b, c, d, 2);
-}
-__m128 test_mm_mask_i64gather_ps(__m128 a, float const *b, __m128i c,
-                                 __m128 d) {
-  // CHECK: @llvm.x86.avx2.gather.q.ps
-  return _mm_mask_i64gather_ps(a, b, c, d, 2);
-}
-__m128 test_mm256_mask_i64gather_ps(__m128 a, float const *b, __m256i c,
-                                    __m128 d) {
-  // CHECK: @llvm.x86.avx2.gather.q.ps.256
-  return _mm256_mask_i64gather_ps(a, b, c, d, 2);
-}
-
-__m128i test_mm_mask_i32gather_epi32(__m128i a, int const *b, __m128i c,
-                                     __m128i d) {
-  // CHECK: @llvm.x86.avx2.gather.d.d
-  return _mm_mask_i32gather_epi32(a, b, c, d, 2);
-}
-__m256i test_mm256_mask_i32gather_epi32(__m256i a, int const *b, __m256i c,
-                                        __m256i d) {
-  // CHECK: @llvm.x86.avx2.gather.d.d.256
-  return _mm256_mask_i32gather_epi32(a, b, c, d, 2);
-}
-__m128i test_mm_mask_i64gather_epi32(__m128i a, int const *b, __m128i c,
-                                     __m128i d) {
-  // CHECK: @llvm.x86.avx2.gather.q.d
-  return _mm_mask_i64gather_epi32(a, b, c, d, 2);
-}
-__m128i test_mm256_mask_i64gather_epi32(__m128i a, int const *b, __m256i c,
-                                        __m128i d) {
-  // CHECK: @llvm.x86.avx2.gather.q.d.256
-  return _mm256_mask_i64gather_epi32(a, b, c, d, 2);
-}
-
-__m128i test_mm_mask_i32gather_epi64(__m128i a, int const *b, __m128i c,
-                                     __m128i d) {
-  // CHECK: @llvm.x86.avx2.gather.d.q
-  return _mm_mask_i32gather_epi64(a, b, c, d, 2);
-}
-__m256i test_mm256_mask_i32gather_epi64(__m256i a, int const *b, __m128i c,
-                                        __m256i d) {
-  // CHECK: @llvm.x86.avx2.gather.d.q.256
-  return _mm256_mask_i32gather_epi64(a, b, c, d, 2);
-}
-__m128i test_mm_mask_i64gather_epi64(__m128i a, int const *b, __m128i c,
-                                     __m128i d) {
-  // CHECK: @llvm.x86.avx2.gather.q.q
-  return _mm_mask_i64gather_epi64(a, b, c, d, 2);
-}
-__m256i test_mm256_mask_i64gather_epi64(__m256i a, int const *b, __m256i c,
-                                        __m256i d) {
-  // CHECK: @llvm.x86.avx2.gather.q.q.256
-  return _mm256_mask_i64gather_epi64(a, b, c, d, 2);
-}
-
-__m128d test_mm_i32gather_pd(double const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.d.pd
-  return _mm_i32gather_pd(b, c, 2);
-}
-__m256d test_mm256_i32gather_pd(double const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.d.pd.256
-  return _mm256_i32gather_pd(b, c, 2);
-}
-__m128d test_mm_i64gather_pd(double const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.q.pd
-  return _mm_i64gather_pd(b, c, 2);
-}
-__m256d test_mm256_i64gather_pd(double const *b, __m256i c) {
-  // CHECK: @llvm.x86.avx2.gather.q.pd.256
-  return _mm256_i64gather_pd(b, c, 2);
-}
-__m128 test_mm_i32gather_ps(float const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.d.ps
-  return _mm_i32gather_ps(b, c, 2);
-}
-__m256 test_mm256_i32gather_ps(float const *b, __m256i c) {
-  // CHECK: @llvm.x86.avx2.gather.d.ps.256
-  return _mm256_i32gather_ps(b, c, 2);
-}
-__m128 test_mm_i64gather_ps(float const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.q.ps
-  return _mm_i64gather_ps(b, c, 2);
-}
-__m128 test_mm256_i64gather_ps(float const *b, __m256i c) {
-  // CHECK: @llvm.x86.avx2.gather.q.ps.256
-  return _mm256_i64gather_ps(b, c, 2);
-}
-
-__m128i test_mm_i32gather_epi32(int const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.d.d
-  return _mm_i32gather_epi32(b, c, 2);
-}
-__m256i test_mm256_i32gather_epi32(int const *b, __m256i c) {
-  // CHECK: @llvm.x86.avx2.gather.d.d.256
-  return _mm256_i32gather_epi32(b, c, 2);
-}
-__m128i test_mm_i64gather_epi32(int const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.q.d
-  return _mm_i64gather_epi32(b, c, 2);
-}
-__m128i test_mm256_i64gather_epi32(int const *b, __m256i c) {
-  // CHECK: @llvm.x86.avx2.gather.q.d.256
-  return _mm256_i64gather_epi32(b, c, 2);
-}
-__m128i test_mm_i32gather_epi64(int const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.d.q
-  return _mm_i32gather_epi64(b, c, 2);
-}
-__m256i test_mm256_i32gather_epi64(int const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.d.q.256
-  return _mm256_i32gather_epi64(b, c, 2);
-}
-__m128i test_mm_i64gather_epi64(int const *b, __m128i c) {
-  // CHECK: @llvm.x86.avx2.gather.q.q
-  return _mm_i64gather_epi64(b, c, 2);
-}
-__m256i test_mm256_i64gather_epi64(int const *b, __m256i c) {
-  // CHECK: @llvm.x86.avx2.gather.q.q.256
-  return _mm256_i64gather_epi64(b, c, 2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,344 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64 -O3 -o %t.opt.ll %s \
-// RUN:   -fdump-record-layouts 2> %t.dump.txt
-// RUN: FileCheck -check-prefix=CHECK-RECORD < %t.dump.txt %s
-// RUN: FileCheck -check-prefix=CHECK-OPT < %t.opt.ll %s
-
-/****/
-
-// Check that we don't read off the end a packed 24-bit structure.
-// PR6176
-
-// CHECK-RECORD: *** Dumping IRgen Record Layout
-// CHECK-RECORD: Record: RecordDecl{{.*}}s0
-// CHECK-RECORD: Layout: <CGRecordLayout
-// CHECK-RECORD:   LLVMType:%struct.s0 = type <{ [3 x i8] }>
-// CHECK-RECORD:   IsZeroInitializable:1
-// CHECK-RECORD:   BitFields:[
-// CHECK-RECORD:     <CGBitFieldInfo Offset:0 Size:24 IsSigned:1 StorageSize:24 StorageAlignment:1>
-struct __attribute((packed)) s0 {
-  int f0 : 24;
-};
-
-struct s0 g0 = { 0xdeadbeef };
-
-int f0_load(struct s0 *a0) {
-  int size_check[sizeof(struct s0) == 3 ? 1 : -1];
-  return a0->f0;
-}
-int f0_store(struct s0 *a0) {
-  return (a0->f0 = 1);
-}
-int f0_reload(struct s0 *a0) {
-  return (a0->f0 += 1);
-}
-
-// CHECK-OPT: define i64 @test_0()
-// CHECK-OPT:  ret i64 1
-// CHECK-OPT: }
-unsigned long long test_0() {
-  struct s0 g0 = { 0xdeadbeef };
-  unsigned long long res = 0;
-  res ^= g0.f0;
-  res ^= f0_load(&g0) ^ f0_store(&g0) ^ f0_reload(&g0);
-  res ^= g0.f0;
-  return res;
-}
-
-/****/
-
-// PR5591
-
-// CHECK-RECORD: *** Dumping IRgen Record Layout
-// CHECK-RECORD: Record: RecordDecl{{.*}}s1
-// CHECK-RECORD: Layout: <CGRecordLayout
-// CHECK-RECORD:   LLVMType:%struct.s1 = type <{ [3 x i8] }>
-// CHECK-RECORD:   IsZeroInitializable:1
-// CHECK-RECORD:   BitFields:[
-// CHECK-RECORD:     <CGBitFieldInfo Offset:0 Size:10 IsSigned:1 StorageSize:24 StorageAlignment:1>
-// CHECK-RECORD:     <CGBitFieldInfo Offset:10 Size:10 IsSigned:1 StorageSize:24 StorageAlignment:1>
-
-#pragma pack(push)
-#pragma pack(1)
-struct __attribute((packed)) s1 {
-  signed f0 : 10;
-  signed f1 : 10;
-};
-#pragma pack(pop)
-
-struct s1 g1 = { 0xdeadbeef, 0xdeadbeef };
-
-int f1_load(struct s1 *a0) {
-  int size_check[sizeof(struct s1) == 3 ? 1 : -1];
-  return a0->f1;
-}
-int f1_store(struct s1 *a0) {
-  return (a0->f1 = 1234);
-}
-int f1_reload(struct s1 *a0) {
-  return (a0->f1 += 1234);
-}
-
-// CHECK-OPT: define i64 @test_1()
-// CHECK-OPT:  ret i64 210
-// CHECK-OPT: }
-unsigned long long test_1() {
-  struct s1 g1 = { 0xdeadbeef, 0xdeadbeef };
-  unsigned long long res = 0;
-  res ^= g1.f0 ^ g1.f1;
-  res ^= f1_load(&g1) ^ f1_store(&g1) ^ f1_reload(&g1);
-  res ^= g1.f0 ^ g1.f1;
-  return res;
-}
-
-/****/
-
-// Check that we don't access beyond the bounds of a union.
-//
-// PR5567
-
-// CHECK-RECORD: *** Dumping IRgen Record Layout
-// CHECK-RECORD: Record: RecordDecl{{.*}}u2
-// CHECK-RECORD: Layout: <CGRecordLayout
-// CHECK-RECORD:   LLVMType:%union.u2 = type <{ i8 }>
-// CHECK-RECORD:   IsZeroInitializable:1
-// CHECK-RECORD:   BitFields:[
-// CHECK-RECORD:     <CGBitFieldInfo Offset:0 Size:3 IsSigned:0 StorageSize:8 StorageAlignment:1>
-
-union __attribute__((packed)) u2 {
-  unsigned long long f0 : 3;
-};
-
-union u2 g2 = { 0xdeadbeef };
-
-int f2_load(union u2 *a0) {
-  return a0->f0;
-}
-int f2_store(union u2 *a0) {
-  return (a0->f0 = 1234);
-}
-int f2_reload(union u2 *a0) {
-  return (a0->f0 += 1234);
-}
-
-// CHECK-OPT: define i64 @test_2()
-// CHECK-OPT:  ret i64 2
-// CHECK-OPT: }
-unsigned long long test_2() {
-  union u2 g2 = { 0xdeadbeef };
-  unsigned long long res = 0;
-  res ^= g2.f0;
-  res ^= f2_load(&g2) ^ f2_store(&g2) ^ f2_reload(&g2);
-  res ^= g2.f0;
-  return res;
-}
-
-/***/
-
-// PR5039
-
-struct s3 {
-  long long f0 : 32;
-  long long f1 : 32;
-};
-
-struct s3 g3 = { 0xdeadbeef, 0xdeadbeef };
-
-int f3_load(struct s3 *a0) {
-  a0->f0 = 1;
-  return a0->f0;
-}
-int f3_store(struct s3 *a0) {
-  a0->f0 = 1;
-  return (a0->f0 = 1234);
-}
-int f3_reload(struct s3 *a0) {
-  a0->f0 = 1;
-  return (a0->f0 += 1234);
-}
-
-// CHECK-OPT: define i64 @test_3()
-// CHECK-OPT:  ret i64 -559039940
-// CHECK-OPT: }
-unsigned long long test_3() {
-  struct s3 g3 = { 0xdeadbeef, 0xdeadbeef };
-  unsigned long long res = 0;
-  res ^= g3.f0 ^ g3.f1;
-  res ^= f3_load(&g3) ^ f3_store(&g3) ^ f3_reload(&g3);
-  res ^= g3.f0 ^ g3.f1;
-  return res;
-}
-
-/***/
-
-// This is a case where the bitfield access will straddle an alignment boundary
-// of its underlying type.
-
-struct s4 {
-  unsigned f0 : 16;
-  unsigned f1 : 28 __attribute__ ((packed));
-};
-
-struct s4 g4 = { 0xdeadbeef, 0xdeadbeef };
-
-int f4_load(struct s4 *a0) {
-  return a0->f0 ^ a0->f1;
-}
-int f4_store(struct s4 *a0) {
-  return (a0->f0 = 1234) ^ (a0->f1 = 5678);
-}
-int f4_reload(struct s4 *a0) {
-  return (a0->f0 += 1234) ^ (a0->f1 += 5678);
-}
-
-// CHECK-OPT: define i64 @test_4()
-// CHECK-OPT:  ret i64 4860
-// CHECK-OPT: }
-unsigned long long test_4() {
-  struct s4 g4 = { 0xdeadbeef, 0xdeadbeef };
-  unsigned long long res = 0;
-  res ^= g4.f0 ^ g4.f1;
-  res ^= f4_load(&g4) ^ f4_store(&g4) ^ f4_reload(&g4);
-  res ^= g4.f0 ^ g4.f1;
-  return res;
-}
-
-/***/
-
-struct s5 {
-  unsigned f0 : 2;
-  _Bool f1 : 1;
-  _Bool f2 : 1;
-};
-
-struct s5 g5 = { 0xdeadbeef, 0xdeadbeef };
-
-int f5_load(struct s5 *a0) {
-  return a0->f0 ^ a0->f1;
-}
-int f5_store(struct s5 *a0) {
-  return (a0->f0 = 0xF) ^ (a0->f1 = 0xF) ^ (a0->f2 = 0xF);
-}
-int f5_reload(struct s5 *a0) {
-  return (a0->f0 += 0xF) ^ (a0->f1 += 0xF) ^ (a0->f2 += 0xF);
-}
-
-// CHECK-OPT: define i64 @test_5()
-// CHECK-OPT:  ret i64 2
-// CHECK-OPT: }
-unsigned long long test_5() {
-  struct s5 g5 = { 0xdeadbeef, 0xdeadbeef, 0xdeadbeef };
-  unsigned long long res = 0;
-  res ^= g5.f0 ^ g5.f1 ^ g5.f2;
-  res ^= f5_load(&g5) ^ f5_store(&g5) ^ f5_reload(&g5);
-  res ^= g5.f0 ^ g5.f1 ^ g5.f2;
-  return res;
-}
-
-/***/
-
-struct s6 {
-  _Bool f0 : 2;
-};
-
-struct s6 g6 = { 0xF };
-
-int f6_load(struct s6 *a0) {
-  return a0->f0;
-}
-int f6_store(struct s6 *a0) {
-  return a0->f0 = 0x0;
-}
-int f6_reload(struct s6 *a0) {
-  return (a0->f0 += 0xF);
-}
-
-// CHECK-OPT: define zeroext i1 @test_6()
-// CHECK-OPT:  ret i1 true
-// CHECK-OPT: }
-_Bool test_6() {
-  struct s6 g6 = { 0xF };
-  unsigned long long res = 0;
-  res ^= g6.f0;
-  res ^= f6_load(&g6);
-  res ^= g6.f0;
-  return res;
-}
-
-/***/
-
-// Check that we compute the best alignment possible for each access.
-//
-// CHECK-RECORD: *** Dumping IRgen Record Layout
-// CHECK-RECORD: Record: RecordDecl{{.*}}s7
-// CHECK-RECORD: Layout: <CGRecordLayout
-// CHECK-RECORD:   LLVMType:%struct.s7 = type { i32, i32, i32, i8, [3 x i8], [4 x i8], [12 x i8] }
-// CHECK-RECORD:   IsZeroInitializable:1
-// CHECK-RECORD:   BitFields:[
-// CHECK-RECORD:     <CGBitFieldInfo Offset:0 Size:5 IsSigned:1 StorageSize:8 StorageAlignment:4>
-// CHECK-RECORD:     <CGBitFieldInfo Offset:0 Size:29 IsSigned:1 StorageSize:32 StorageAlignment:16>
-
-struct __attribute__((aligned(16))) s7 {
-  int a, b, c;
-  int f0 : 5;
-  int f1 : 29;
-};
-
-int f7_load(struct s7 *a0) {
-  return a0->f0;
-}
-
-/***/
-
-// This is a case where we narrow the access width immediately.
-
-struct __attribute__((packed)) s8 {
-  char f0 : 4;
-  char f1;
-  int  f2 : 4;
-  char f3 : 4;
-};
-
-struct s8 g8 = { 0xF };
-
-int f8_load(struct s8 *a0) {
-  return a0->f0 ^ a0 ->f2 ^ a0->f3;
-}
-int f8_store(struct s8 *a0) {
-  return (a0->f0 = 0xFD) ^ (a0->f2 = 0xFD) ^ (a0->f3 = 0xFD);
-}
-int f8_reload(struct s8 *a0) {
-  return (a0->f0 += 0xFD) ^ (a0->f2 += 0xFD) ^ (a0->f3 += 0xFD);
-}
-
-// CHECK-OPT: define i32 @test_8()
-// CHECK-OPT:  ret i32 -3
-// CHECK-OPT: }
-unsigned test_8() {
-  struct s8 g8 = { 0xdeadbeef, 0xdeadbeef, 0xdeadbeef, 0xdeadbeef };
-  unsigned long long res = 0;
-  res ^= g8.f0 ^ g8.f2 ^ g8.f3;
-  res ^= f8_load(&g8) ^ f8_store(&g8) ^ f8_reload(&g8);
-  res ^= g8.f0 ^ g8.f2 ^ g8.f3;
-  return res;
-}
-
-/***/
-
-// This is another case where we narrow the access width immediately.
-//
-// <rdar://problem/7893760>
-
-struct __attribute__((packed)) s9 {
-  unsigned f0 : 7;
-  unsigned f1 : 7;
-  unsigned f2 : 7;
-  unsigned f3 : 7;
-  unsigned f4 : 7;
-  unsigned f5 : 7;
-  unsigned f6 : 7;
-  unsigned f7 : 7;
-};
-
-int f9_load(struct s9 *a0) {
-  return a0->f7;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-assign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-assign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-assign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-/* Check that the result of a bitfield assignment is properly
-   truncated and does not generate a redundant load. */
-
-/* Check that we get one load for each simple assign and two for the
-   compound assign (load the old value before the add then load again
-   to store back). Also check that our g0 pattern is good. */
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O0 -emit-llvm -o %t %s
-// RUN: grep 'load ' %t | count 5
-// RUN: grep "@g0" %t | count 4
-
-// Check that we got the right value.
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm -o %t %s
-// RUN: grep 'load ' %t | count 0
-// RUN: grep "@g0" %t | count 0
-
-struct s0 {
-  int f0 : 2;
-  _Bool f1 : 1;
-  unsigned f2 : 2;
-};
-
-int g0();
-
-void f0(void) {
-  struct s0 s;  
-  if ((s.f0 = 3) != -1) g0();
-}
-
-void f1(void) {
-  struct s0 s;  
-  if ((s.f1 = 3) != 1) g0();
-}
-
-void f2(void) {
-  struct s0 s;  
-  if ((s.f2 = 3) != 3) g0();
-}
-
-void f3(void) {
-  struct s0 s;
-  // Just check this one for load counts.
-  s.f0 += 3;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-typedef struct { unsigned int i: 1; } c;
-const c d = { 1 };
-
-// PR2310
-struct Token {
-  unsigned n : 31;
-};
-void sqlite3CodeSubselect(){
-  struct Token one = { 1 };
-}
-
-typedef union T0 { char field0 : 2; } T0;
-T0 T0_values = { 0 };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-promote.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-promote.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield-promote.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang -O3 -emit-llvm -S -o - %s | FileCheck %s
-
-long long f0(void) {
- struct { unsigned f0 : 32; } x = { 18 };
- return (long long) (x.f0 - (int) 22);
-}
-// CHECK: @f0()
-// CHECK: ret i64 4294967292
-
-long long f1(void) {
- struct { unsigned f0 : 31; } x = { 18 };
- return (long long) (x.f0 - (int) 22);
-}
-// CHECK: @f1()
-// CHECK: ret i64 -4
-
-long long f2(void) {
- struct { unsigned f0     ; } x = { 18 };
- return (long long) (x.f0 - (int) 22);
-}
-// CHECK: @f2()
-// CHECK: ret i64 4294967292

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o %t -O3
-// RUN: grep "ret i32" %t | count 4
-// RUN: grep "ret i32 1" %t | count 4
-
-static int f0(int n) {
-  struct s0 {
-    int a : 30;
-    int b : 2;
-    long long c : 31;
-  } x = { 0xdeadbeef, 0xdeadbeef, 0xdeadbeef };
-  
-  x.a += n;
-  x.b += n;
-  x.c += n;
-
-  return x.a + x.b + x.c;
-}
-
-int g0(void) {
-  return f0(-1) + 44335655;
-}
-
-static int f1(void) {
-  struct s1 { 
-    int a:13; 
-    char b; 
-    unsigned short c:7;
-  } x;
-  
-  x.a = -40;
-  x.b = 10;
-  x.c = 15;
-
-  return x.a + x.b + x.c;
-}
-
-int g1(void) {
-  return f1() + 16;
-}
-
-static int f2(void) {
-  struct s2 {
-    short a[3];
-    int b : 15;
-  } x;
-  
-  x.a[0] = x.a[1] = x.a[2] = -40;
-  x.b = 10;
-
-  return x.b;
-}
-
-int g2(void) {
-  return f2() - 9;
-}
-
-static int f3(int n) {
-  struct s3 {
-    unsigned a:16;
-    unsigned b:28 __attribute__ ((packed));
-  } x = { 0xdeadbeef, 0xdeadbeef };
-  struct s4 {
-    signed a:16;
-    signed b:28 __attribute__ ((packed));
-  } y;
-  y.a = -0x56789abcL;
-  y.b = -0x56789abcL;
-  return ((y.a += x.a += n) + 
-          (y.b += x.b += n));
-}
-
-int g3(void) {
-  return f3(20) + 130725747;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/block-3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/block-3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/block-3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -fblocks -triple x86_64-apple-darwin10 
-// rdar://10001085
-
-int main() {
-  ^{
-                __attribute__((__blocks__(byref))) int index = ({ int __a; int __b; __a < __b ? __b : __a; });
-   };
-}
-
-// PR13229
-// rdar://11777609
-typedef struct {} Z;
-
-typedef int (^B)(Z);
-
-void testPR13229() {
-  Z z1;
-  B b1 = ^(Z z1) { return 1; };
-  b1(z1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/block-byref-aggr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/block-byref-aggr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/block-byref-aggr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -fblocks -triple x86_64-apple-darwin10 | FileCheck %s
-
-// CHECK: [[AGG:%.*]] = type { i32 }
-typedef struct { int v; } Agg;
-Agg makeAgg(void);
-
-// When assigning into a __block variable, ensure that we compute that
-// address *after* evaluating the RHS when the RHS has the capacity to
-// cause a block copy.  rdar://9309454
-void test0() {
-  __block Agg a = {100};
-
- a = makeAgg();
-}
-// CHECK:    define void @test0()
-// CHECK:      [[A:%.*]] = alloca [[BYREF:%.*]], align 8
-// CHECK-NEXT: [[TEMP:%.*]] = alloca [[AGG]], align 4
-// CHECK:      [[RESULT:%.*]] = call i32 @makeAgg()
-// CHECK-NEXT: [[T0:%.*]] = getelementptr [[AGG]]* [[TEMP]], i32 0, i32 0
-// CHECK-NEXT: store i32 [[RESULT]], i32* [[T0]]
-//   Check that we properly assign into the forwarding pointer.
-// CHECK-NEXT: [[A_FORWARDING:%.*]] = getelementptr inbounds [[BYREF]]* [[A]], i32 0, i32 1
-// CHECK-NEXT: [[T0:%.*]] = load [[BYREF]]** [[A_FORWARDING]]
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[BYREF]]* [[T0]], i32 0, i32 4
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[AGG]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[AGG]]* [[TEMP]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[T2]], i8* [[T3]], i64 4, i32 4, i1 false)
-//   Verify that there's nothing else significant in the function.
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[BYREF]]* [[A]] to i8*
-// CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)
-// CHECK-NEXT: ret void
-
-// When chaining assignments into __block variables, make sure we
-// propagate the actual value into the outer variable.
-// rdar://11757470
-void test1() {
-  __block Agg a, b;
-  a = b = makeAgg();
-}
-// CHECK:    define void @test1()
-// CHECK:      [[A:%.*]] = alloca [[A_BYREF:%.*]], align 8
-// CHECK-NEXT: [[B:%.*]] = alloca [[B_BYREF:%.*]], align 8
-// CHECK-NEXT: [[TEMP:%.*]] = alloca [[AGG]], align 4
-// CHECK:      [[RESULT:%.*]] = call i32 @makeAgg()
-// CHECK-NEXT: [[T0:%.*]] = getelementptr [[AGG]]* [[TEMP]], i32 0, i32 0
-// CHECK-NEXT: store i32 [[RESULT]], i32* [[T0]]
-//   Check that we properly assign into the forwarding pointer, first for b:
-// CHECK-NEXT: [[B_FORWARDING:%.*]] = getelementptr inbounds [[B_BYREF]]* [[B]], i32 0, i32 1
-// CHECK-NEXT: [[T0:%.*]] = load [[B_BYREF]]** [[B_FORWARDING]]
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[B_BYREF]]* [[T0]], i32 0, i32 4
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[AGG]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[AGG]]* [[TEMP]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[T2]], i8* [[T3]], i64 4, i32 4, i1 false)
-//   Then for 'a':
-// CHECK-NEXT: [[A_FORWARDING:%.*]] = getelementptr inbounds [[A_BYREF]]* [[A]], i32 0, i32 1
-// CHECK-NEXT: [[T0:%.*]] = load [[A_BYREF]]** [[A_FORWARDING]]
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A_BYREF]]* [[T0]], i32 0, i32 4
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[AGG]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[AGG]]* [[TEMP]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[T2]], i8* [[T3]], i64 4, i32 4, i1 false)
-//   Verify that there's nothing else significant in the function.
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[B_BYREF]]* [[B]] to i8*
-// CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[A_BYREF]]* [[A]] to i8*
-// CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/block-copy.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/block-copy.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/block-copy.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-/* RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
- This should compile into a memcpy from a global, not 128 stores. */
-
-
-
-void foo();
-
-float bar() {
-  float lookupTable[] = {-1,-1,-1,0, -1,-1,0,-1, -1,-1,0,1, -1,-1,1,0,
-			 -1,0,-1,-1, -1,0,-1,1, -1,0,1,-1, -1,0,1,1,
-			 -1,1,-1,0, -1,1,0,-1, -1,1,0,1, -1,1,1,0,
-			 0,-1,-1,-1, 0,-1,-1,1, 0,-1,1,-1, 0,-1,1,1,
-			 1,-1,-1,0, 1,-1,0,-1, 1,-1,0,1, 1,-1,1,0,
-			 1,0,-1,-1, 1,0,-1,1, 1,0,1,-1, 1,0,1,1,
-			 1,1,-1,0, 1,1,0,-1, 1,1,0,1, 1,1,1,0,
-			 0,1,-1,-1, 0,1,-1,1, 0,1,1,-1, 0,1,1,1};
-  // CHECK: memcpy
-  foo(lookupTable);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t -fblocks
-// RUN: grep "_Block_object_dispose" %t | count 17
-// RUN: grep "__copy_helper_block_" %t | count 14
-// RUN: grep "__destroy_helper_block_" %t | count 14
-// RUN: grep "__Block_byref_object_copy_" %t | count 2
-// RUN: grep "__Block_byref_object_dispose_" %t | count 2
-// RUN: grep "i32 135)" %t | count 2
-// RUN: grep "_Block_object_assign" %t | count 10
-
-int printf(const char *, ...);
-
-void test1() {
-  __block int a;
-  int b=2;
-  a=1;
-  printf("a is %d, b is %d\n", a, b);
-  ^{ a = 10; printf("a is %d, b is %d\n", a, b); }(); // needs copy/dispose
-  printf("a is %d, b is %d\n", a, b);
-  a = 1;
-  printf("a is %d, b is %d\n", a, b);
-}
-
-void test2() {
-  __block int a;
-  a=1;
-  printf("a is %d\n", a);
-  ^{ // needs copy/dispose
-    ^{ // needs copy/dispose
-      a = 10;
-    }();
-  }();
-  printf("a is %d\n", a);
-  a = 1;
-  printf("a is %d\n", a);
-}
-
-void test3() {
-  __block int k;
-  __block int (^j)(int);
-  ^{j=0; k=0;}(); // needs copy/dispose
-}
-
-int test4() {
-  extern int g;
-  static int i = 1;
-  ^(int j){ i = j; g = 0; }(0); // does not need copy/dispose
-  return i + g;
-}
-
-int g;
-
-void test5() {
-  __block struct { int i; } i;
-  ^{ (void)i; }(); // needs copy/dispose
-}
-
-void test6() {
-  __block int i;
-  ^{ i=1; }(); // needs copy/dispose
-  ^{}(); // does not need copy/dispose
-}
-
-void test7() {
-  ^{ // does not need copy/dispose
-    __block int i;
-    ^{ i = 1; }(); // needs copy/dispose
-  }();
-}
-
-int main() {
-  int rv = 0;
-  test1();
-  test2();
-  test3();
-  rv += test4();
-  test5();
-  return rv;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -g %s -emit-llvm -o %t -fblocks
-// RUN: grep "func.start" %t | count 4
-// RUN: %clang_cc1 -g %s -triple i386-unknown-unknown -emit-llvm -o %t -fblocks -fblock-introspection
-// RUN: grep "v8@?0i4" %t | count 1
-// RUN: %clang_cc1 -g %s -triple i386-unknown-unknown -emit-llvm -o %t -fblocks
-// RUN: grep "v8@?0i4" %t | count 0
-// 1 declaration, 1 bar, 1 test_block_dbg and 1 for the block.
-// XFAIL: *
-
-static __inline__ __attribute__((always_inline)) int bar(int va, int vb) { return (va == vb); }
-
-int test_block_dbg() {
-  extern int g;
-  static int i = 1;
-  ^(int j){ i = bar(3,4); }(0);
-  return i + g;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-aligned-byref-variable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-aligned-byref-variable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-aligned-byref-variable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -triple x86_64-apple-darwin10 -fblocks %s
-// RUN: %clang_cc1 -emit-llvm -o - -triple i386-apple-darwin10 -fblocks %s
-typedef int __attribute__((aligned(32)))  ai;
-
-void f() {
-  __block ai a = 10;
-
-  ^{
-    a = 20;
-  }();
-}
-
-void g() {
-  __block double a = 10;
-
-  ^{
-    a = 20;
-  }();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-seq.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-seq.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/blocks-seq.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-// CHECK: [[Vi:%.+]] = alloca %struct.__block_byref_i, align 8
-// CHECK: call i32 (...)* @rhs()
-// CHECK: [[V7:%.+]] = getelementptr inbounds %struct.__block_byref_i* [[Vi]], i32 0, i32 1
-// CHECK: load %struct.__block_byref_i** [[V7]]
-// CHECK: call i32 (...)* @rhs()
-// CHECK: [[V11:%.+]] = getelementptr inbounds %struct.__block_byref_i* [[Vi]], i32 0, i32 1
-// CHECK: load %struct.__block_byref_i** [[V11]]
-
-int rhs();
-
-void foo() {
-  __block int i;
-  i = rhs();
-  i += rhs();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/blocks.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/blocks.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/blocks.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - -fblocks | FileCheck %s
-void (^f)(void) = ^{};
-
-// rdar://6768379
-int f0(int (^a0)()) {
-  return a0(1, 2, 3);
-}
-
-// Verify that attributes on blocks are set correctly.
-typedef struct s0 T;
-struct s0 {
-  int a[64];
-};
-
-// CHECK: define internal void @__f2_block_invoke(%struct.s0* noalias sret {{%.*}}, i8* {{%.*}}, %struct.s0* byval align 4 {{.*}})
-struct s0 f2(struct s0 a0) {
-  return ^(struct s0 a1){ return a1; }(a0);
-}
-
-// This should not crash: rdar://6808051
-void *P = ^{
-  void *Q = __func__;
-};
-
-void (^test1)(void) = ^(void) {
-  __block int i;
-  ^ { i = 1; }();
-};
-
-typedef double ftype(double);
-// It's not clear that we *should* support this syntax, but until that decision
-// is made, we should support it properly and not crash.
-ftype ^test2 = ^ftype {
-  return 0;
-};
-
-// rdar://problem/8605032
-void f3_helper(void (^)(void));
-void f3() {
-  _Bool b = 0;
-  f3_helper(^{ if (b) {} });
-}
-
-// rdar://problem/11322251
-// The bool can fill in between the header and the long long.
-// Add the appropriate amount of padding between them.
-void f4_helper(long long (^)(void));
-// CHECK: define void @f4()
-void f4(void) {
-  _Bool b = 0;
-  long long ll = 0;
-  // CHECK: alloca <{ i8*, i32, i32, i8*, {{%.*}}*, i8, [3 x i8], i64 }>, align 8
-  f4_helper(^{ if (b) return ll; return 0LL; });
-}
-
-// rdar://problem/11354538
-// The alignment after rounding up to the align of F5 is actually
-// greater than the required alignment.  Don't assert.
-struct F5 {
-  char buffer[32] __attribute((aligned));
-};
-void f5_helper(void (^)(struct F5 *));
-// CHECK: define void @f5()
-void f5(void) {
-  struct F5 value;
-  // CHECK: alloca <{ i8*, i32, i32, i8*, {{%.*}}*, [12 x i8], [[F5:%.*]] }>, align 16
-  f5_helper(^(struct F5 *slot) { *slot = value; });
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/blocksignature.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/blocksignature.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/blocksignature.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin9 %s -emit-llvm -o - | FileCheck %s -check-prefix=X64
-// RUN: %clang_cc1 -fblocks -triple i686-apple-darwin9 %s -emit-llvm -o - | FileCheck %s -check-prefix=X32
-
-// X64: @.str = private unnamed_addr constant [6 x i8] c"v8@?0\00" 
-// X64: @__block_literal_global = internal constant {{.*}} { i8** @_NSConcreteGlobalBlock, i32 1342177280,
-// X64: @.str1 = private unnamed_addr constant [12 x i8] c"i16@?0c8f12\00"
-// X64:   store i32 1073741824, i32*
-
-// X32: [[STR1:@.*]] = private unnamed_addr constant [6 x i8] c"v4@?0\00" 
-// X32: @__block_descriptor_tmp = internal constant [[FULL_DESCRIPTOR_T:.*]] { i32 0, i32 20, i8* getelementptr inbounds ([6 x i8]* [[STR1]], i32 0, i32 0), i8* null }
-// X32: @__block_literal_global = internal constant [[GLOBAL_LITERAL_T:.*]] { i8** @_NSConcreteGlobalBlock, i32 1342177280, i32 0, i8* bitcast (void (i8*)* @global_block_invoke{{.*}} to i8*), [[DESCRIPTOR_T:%.*]]* bitcast ([[FULL_DESCRIPTOR_T]]* @__block_descriptor_tmp to {{%.*}}*) }
-// X32: [[STR2:@.*]] = private unnamed_addr constant [11 x i8] c"i12@?0c4f8\00"
-// X32: @__block_descriptor_tmp{{.*}} = internal constant [[FULL_DESCRIPTOR_T]] { i32 0, i32 24, i8* getelementptr inbounds ([11 x i8]* [[STR2]], i32 0, i32 0), i8* null }
-// X32:   store i32 1073741824, i32*
-
-// rdar://7635294
-
-
-int globalInt;
-void (^global)(void) = ^{ ++globalInt; };
-
-    
-void foo(int param) {
-   extern int rand(void);
-   extern void rand_r(int (^b)(char x, float y));   // name a function present at runtime
-   while (param--)
-      rand_r(^(char x, float y){ return x + (int)y + param + rand(); });  // generate a local block binding param
-}
-
-#if 0
-#include <stdio.h>
-enum {
-    BLOCK_HAS_COPY_DISPOSE =  (1 << 25),
-    BLOCK_HAS_CXX_OBJ =       (1 << 26),
-    BLOCK_IS_GLOBAL =         (1 << 28),
-    BLOCK_HAS_DESCRIPTOR =    (1 << 29),
-    BLOCK_HAS_OBJC_TYPE  =    (1 << 30)
-};
-
-struct block_descriptor_big {
-    unsigned long int reserved;
-    unsigned long int size;
-    void (*copy)(void *dst, void *src); // conditional on BLOCK_HAS_COPY_DISPOSE
-    void (*dispose)(void *);            // conditional on BLOCK_HAS_COPY_DISPOSE
-    const char *signature;                  // conditional on BLOCK_HAS_OBJC
-    const char *layout;                 // conditional on BLOCK_HAS_OBJC
-};
-struct block_descriptor_small {
-    unsigned long int reserved;
-    unsigned long int size;
-    const char *signature;              // conditional on BLOCK_HAS_OBJC
-    const char *layout;                 // conditional on BLOCK_HAS_OBJC
-};
-
-struct block_layout_abi { // can't change
-  void *isa;
-  int flags;
-  int reserved; 
-  void (*invoke)(void *, ...);
-  struct block_descriptor_big *descriptor;
-};
-
-const char *getBlockSignature(void *block) {
-   struct block_layout_abi *layout = (struct block_layout_abi *)block;
-   if ((layout->flags & BLOCK_HAS_OBJC_TYPE) != BLOCK_HAS_OBJC_TYPE) return NULL;
-   if (layout->flags & BLOCK_HAS_COPY_DISPOSE) 
-      return layout->descriptor->signature;
-   else
-      return ((struct block_descriptor_small *)layout->descriptor)->signature;
-}
-  
-    
-   
-int main(int argc, char *argv[]) {
-   printf("desired global flags: %d\n", BLOCK_IS_GLOBAL  | BLOCK_HAS_OBJC_TYPE);
-   printf("desired stack flags: %d\n",  BLOCK_HAS_OBJC_TYPE);
-   
-   printf("types for global: %s\n", getBlockSignature(global));
-   printf("types for local: %s\n", getBlockSignature(^int(char x, float y) { return (int)(y + x); }));
-   return 0;
-}
-
-/*
-x86_64
-desired global flags: 1342177280
-desired stack flags: 1073741824
-types for global: v8@?0
-types for local: i16@?0c8f12
-
-i386
-desired global flags: 1342177280
-desired stack flags: 1073741824
-types for global: v4@?0
-types for local: i12@?0c4f8
-*/
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/blockstret.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/blockstret.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/blockstret.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,106 +0,0 @@
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin9 %s -emit-llvm -o - | FileCheck %s -check-prefix=X64
-// RUN: %clang_cc1 -fblocks -triple i686-apple-darwin9 %s -emit-llvm -o - | FileCheck %s -check-prefix=X32
-
-// X64:   internal constant {{.*}} { i8** @_NSConcreteGlobalBlock, i32 1879048192
-// X64:     store i32 1610612736, i32* %want
-
-// X32:   @_NSConcreteGlobalBlock, i32 1879048192, i32 0,
-// X32:   store i32 1610612736, i32* %want
-
-// rdar://7677537
-int printf(const char *, ...);
-void *malloc(__SIZE_TYPE__ size);
-
-typedef struct bigbig {
-   int array[512];
-   char more[32];
-} BigStruct_t;
-
-BigStruct_t (^global)(void) = ^{ return *(BigStruct_t *)malloc(sizeof(struct bigbig)); };
-
-const char * getBlockSignature(void *);
- 
-BigStruct_t foo(int param) {
-   BigStruct_t x;
-   BigStruct_t (^f)(int) = ^(int param) {
-     BigStruct_t *result = malloc(sizeof(BigStruct_t));
-     result->array[23] = param;
-     return *result;
-   };
-   getBlockSignature(f);
-   return x;
-}
-
-enum {
-    BLOCK_HAS_COPY_DISPOSE =  (1 << 25),
-    BLOCK_HAS_CXX_OBJ =       (1 << 26),
-    BLOCK_IS_GLOBAL =         (1 << 28),
-    BLOCK_USE_STRET =    (1 << 29),
-    BLOCK_HAS_OBJC_TYPE  =    (1 << 30)
-};
-
-struct block_descriptor_big {
-    unsigned long int reserved;
-    unsigned long int size;
-    void (*copy)(void *dst, void *src); // conditional on BLOCK_HAS_COPY_DISPOSE
-    void (*dispose)(void *);            // conditional on BLOCK_HAS_COPY_DISPOSE
-    const char *signature;                  // conditional on BLOCK_HAS_OBJC
-    const char *layout;                 // conditional on BLOCK_HAS_OBJC
-};
-struct block_descriptor_small {
-    unsigned long int reserved;
-    unsigned long int size;
-    const char *signature;              // conditional on BLOCK_HAS_OBJC
-    const char *layout;                 // conditional on BLOCK_HAS_OBJC
-};
-
-struct block_layout_abi { // can't change
-  void *isa;
-  int flags;
-  int reserved; 
-  void (*invoke)(void *, ...);
-  struct block_descriptor_big *descriptor;
-};
-
-const char *getBlockSignature(void *block) {
-   struct block_layout_abi *layout = (struct block_layout_abi *)block;
-   if ((layout->flags & BLOCK_HAS_OBJC_TYPE) != BLOCK_HAS_OBJC_TYPE) return 0;
-   if (layout->flags & BLOCK_HAS_COPY_DISPOSE) 
-      return layout->descriptor->signature;
-   else
-      return ((struct block_descriptor_small *)layout->descriptor)->signature;
-}
-
-int usesStruct(void *block) {
-   struct block_layout_abi *layout = (struct block_layout_abi *)block;
-   int want = BLOCK_HAS_OBJC_TYPE | BLOCK_USE_STRET;
-   return (layout->flags & want) == want;
-}
-    
-   
-int main(int argc, char *argv[]) {
-   printf("desired global flags: %d\n", BLOCK_USE_STRET | BLOCK_IS_GLOBAL  | BLOCK_HAS_OBJC_TYPE);
-   printf("desired stack flags: %d\n",  BLOCK_USE_STRET | BLOCK_HAS_OBJC_TYPE);
-   
-   printf("should be non-zero: %d\n", usesStruct(global));
-   BigStruct_t x;
-   BigStruct_t (^local)(int) = ^(int param) {
-     BigStruct_t *result = (BigStruct_t *)malloc(sizeof(BigStruct_t));
-     result->array[23] = argc;
-     return *result;
-   };
-   printf("should be non-zero: %d\n", usesStruct(global));
-   printf("should be non-zero: %d\n", usesStruct(local));
-   printf("should be zero: %d\n", usesStruct(^void(int x){ }));
-   return 0;
-}
-
-/*
-desired global flags: 1879048192
-desired stack flags: 1610612736
-should be non-zero: 1
-should be non-zero: 1
-should be non-zero: 1
-should be zero: 0
-
-*/

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/blockwithlocalstatic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/blockwithlocalstatic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/blockwithlocalstatic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -emit-llvm -o - %s | FileCheck %s
-// pr8707
-
-// CHECK: @block_block_invoke.test = internal global i32
-int (^block)(void) = ^ {
-	static int test=0;
-	return test;
-};
-// CHECK: @block1_block_invoke_2.test = internal global i32
-void (^block1)(void) = ^ {
-	static int test = 2;
-	return;
-};
-// CHECK: @block2_block_invoke_3.test = internal global i32
-int (^block2)(void) = ^ {
-	static int test = 5;
-	return test;
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bmi-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bmi-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bmi-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +bmi -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-unsigned short test__tzcnt_u16(unsigned short __X) {
-  // CHECK: @llvm.cttz.i16
-  return __tzcnt_u16(__X);
-}
-
-unsigned int test__andn_u32(unsigned int __X, unsigned int __Y) {
-  // CHECK: [[DEST:%.*]] = xor i32 %{{.*}}, -1
-  // CHECK-NEXT: %{{.*}} = and i32 %{{.*}}, [[DEST]]
-  return __andn_u32(__X, __Y);
-}
-
-unsigned int test__bextr_u32(unsigned int __X, unsigned int __Y) {
-  // CHECK: @llvm.x86.bmi.bextr.32
-  return __bextr_u32(__X, __Y);
-}
-
-unsigned int test__blsi_u32(unsigned int __X) {
-  // CHECK: [[DEST:%.*]] = sub i32 0, [[SRC:%.*]]
-  // CHECK-NEXT: %{{.*}} = and i32 [[SRC]], [[DEST]]
-  return __blsi_u32(__X);
-}
-
-unsigned int test__blsmsk_u32(unsigned int __X) {
-  // CHECK: [[DEST:%.*]] = add i32 [[SRC:%.*]], -1
-  // CHECK-NEXT: %{{.*}} = xor i32 [[DEST]], [[SRC]]
-  return __blsmsk_u32(__X);
-}
-
-unsigned int test__blsr_u32(unsigned int __X) {
-  // CHECK: [[DEST:%.*]] = add i32 [[SRC:%.*]], -1
-  // CHECK-NEXT: %{{.*}} = and i32 [[DEST]], [[SRC]]
-  return __blsr_u32(__X);
-}
-
-unsigned int test_tzcnt_u32(unsigned int __X) {
-  // CHECK: @llvm.cttz.i32
-  return __tzcnt_u32(__X);
-}
-
-unsigned long long test__andn_u64(unsigned long __X, unsigned long __Y) {
-  // CHECK: [[DEST:%.*]] = xor i64 %{{.*}}, -1
-  // CHECK-NEXT: %{{.*}} = and i64 %{{.*}}, [[DEST]]
-  return __andn_u64(__X, __Y);
-}
-
-unsigned long long test__bextr_u64(unsigned long __X, unsigned long __Y) {
-  // CHECK: @llvm.x86.bmi.bextr.64
-  return __bextr_u64(__X, __Y);
-}
-
-unsigned long long test__blsi_u64(unsigned long long __X) {
-  // CHECK: [[DEST:%.*]] = sub i64 0, [[SRC:%.*]]
-  // CHECK-NEXT: %{{.*}} = and i64 [[SRC]], [[DEST]]
-  return __blsi_u64(__X);
-}
-
-unsigned long long test__blsmsk_u64(unsigned long long __X) {
-  // CHECK: [[DEST:%.*]] = add i64 [[SRC:%.*]], -1
-  // CHECK-NEXT: %{{.*}} = xor i64 [[DEST]], [[SRC]]
-  return __blsmsk_u64(__X);
-}
-
-unsigned long long test__blsr_u64(unsigned long long __X) {
-  // CHECK: [[DEST:%.*]] = add i64 [[SRC:%.*]], -1
-  // CHECK-NEXT: %{{.*}} = and i64 [[DEST]], [[SRC]]
-  return __blsr_u64(__X);
-}
-
-unsigned long long test__tzcnt_u64(unsigned long long __X) {
-  // CHECK: @llvm.cttz.i64
-  return __tzcnt_u64(__X);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bmi2-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bmi2-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bmi2-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +bmi2 -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -O3 -triple=i386-apple-darwin -target-feature +bmi2 -emit-llvm -o - | FileCheck %s --check-prefix=B32
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-unsigned int test_bzhi_u32(unsigned int __X, unsigned int __Y) {
-  // CHECK: @llvm.x86.bmi.bzhi.32
-  return _bzhi_u32(__X, __Y);
-}
-
-unsigned int test_pdep_u32(unsigned int __X, unsigned int __Y) {
-  // CHECK: @llvm.x86.bmi.pdep.32
-  return _pdep_u32(__X, __Y);
-}
-
-unsigned int test_pext_u32(unsigned int __X, unsigned int __Y) {
-  // CHECK: @llvm.x86.bmi.pext.32
-  return _pext_u32(__X, __Y);
-}
-
-unsigned int test_mulx_u32(unsigned int __X, unsigned int __Y,
-                                 unsigned int *__P) {
-  // CHECK: @test_mulx_u32
-  // CHECK-NOT: mul i64
-  // B32: @test_mulx_u32
-  // B32: mul i64
-  return _mulx_u32(__X, __Y, __P);
-}
-
-unsigned long long test_bzhi_u64(unsigned long long __X, unsigned long long __Y) {
-  // CHECK: @llvm.x86.bmi.bzhi.64
-  return _bzhi_u64(__X, __Y);
-}
-
-unsigned long long test_pdep_u64(unsigned long long __X, unsigned long long __Y) {
-  // CHECK: @llvm.x86.bmi.pdep.64
-  return _pdep_u64(__X, __Y);
-}
-
-unsigned long long test_pext_u64(unsigned long long __X, unsigned long long __Y) {
-  // CHECK: @llvm.x86.bmi.pext.64
-  return _pext_u64(__X, __Y);
-}
-
-unsigned long long test_mulx_u64(unsigned long long __X, unsigned long long __Y,
-                                 unsigned long long *__P) {
-  // CHECK: @test_mulx_u64
-  // CHECK: mul i128
-  return _mulx_u64(__X, __Y, __P);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bool-bitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bool-bitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bool-bitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-// From GCC PR19331
-struct SysParams
-{
- unsigned short tag;
- unsigned short version;
- unsigned int seqnum;
- int contrast;
- int igain_1, igain_2;
- int oattn_1, oattn_2;
- int max_out_vltg_1, max_out_vltg_2;
- int max_mains_current;
- int meters_mode;
- int input_select;
- _Bool input_parallelch2:1;
- _Bool cliplmt_ch1:1;
- _Bool cliplmt_ch2:1;
- _Bool gate_ch1:1;
- _Bool gate_ch2:1;
- _Bool mute_ch1:1;
- _Bool mute_ch2:1;
- _Bool brownout:1;
- _Bool power_on:1;
- _Bool pwrup_mute:1;
- _Bool keylock:1;
- _Bool dsp_ch1:1;
- _Bool dsp_ch2:1;
- int dsp_preset;
- long unlock_code;
-};
-extern struct SysParams params;
-
-void foo(void *);
-void kcmd_setParams(void)
-{
- struct {
-  unsigned char igain_1;
-  unsigned char igain_2;
-  unsigned char max_out_vltg_1;
-  unsigned char max_out_vltg_2;
-  unsigned char max_imains;
-  unsigned char cliplmt_ch1:1;
-  unsigned char cliplmt_ch2:1;
-  unsigned char gate_ch1:1;
-  unsigned char gate_ch2:1;
- } msg;
- foo(&msg);
- params.cliplmt_ch1 = msg.cliplmt_ch1;
- params.cliplmt_ch2 = msg.cliplmt_ch2;
- params.gate_ch1 = msg.gate_ch1;
- params.gate_ch2 = msg.gate_ch2;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bool-convert.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bool-convert.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bool-convert.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep i1 | count 1
-// All of these should uses the memory representation of _Bool
-struct teststruct1 {_Bool a, b;} test1;
-_Bool* test2;
-_Bool test3[10];
-_Bool (*test4)[];
-void f(int x) {
-  _Bool test5;
-  _Bool test6[x];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bool-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bool-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bool-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep i1 | count 1
-
-// Check that the type of this global isn't i1
-_Bool test = &test;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bool_test.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bool_test.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bool_test.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// REQUIRES: ppc32-registered-target
-// RUN: %clang_cc1 -triple powerpc-apple-macosx10.4.0 -emit-llvm -o - %s -O2 -disable-llvm-optzns | FileCheck %s
-
-int boolsize = sizeof(_Bool);
-// CHECK: boolsize = global i32 4, align 4
-
-void f(_Bool *x, _Bool *y) {
-  *x = *y;
-}
-
-// CHECK: define void @f(
-// CHECK: [[FROMMEM:%.*]] = load i32* %
-// CHECK: [[BOOLVAL:%.*]] = trunc i32 [[FROMMEM]] to i1
-// CHECK: [[TOMEM:%.*]] = zext i1 [[BOOLVAL]] to i32
-// CHECK: store i32 [[TOMEM]]
-// CHECK: ret void
-
-// CHECK: metadata !{i32 0, i32 2}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/boolassign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/boolassign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/boolassign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-int testBoolAssign(void) {
-  int ss;
-  if ((ss = ss && ss)) {}
-  return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/bounds-checking.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/bounds-checking.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/bounds-checking.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsanitize=bounds -emit-llvm -triple x86_64-apple-darwin10 < %s | FileCheck %s
-
-// CHECK: @f
-double f(int b, int i) {
-  double a[b];
-  // CHECK: trap
-  return a[i];
-}
-
-// CHECK: @f2
-void f2() {
-  // everything is constant; no trap possible
-  // CHECK-NOT: trap
-  int a[2];
-  a[1] = 42;
-  
-  short *b = malloc(64);
-  b[5] = *a + a[1] + 2;
-}
-
-// CHECK: @f3
-void f3() {
-  int a[1];
-  // CHECK: trap
-  a[2] = 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/branch-target-layout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/branch-target-layout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/branch-target-layout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -emit-llvm -o - | FileCheck %s
-//
-// PR13214
-// No assumption may be made about the order that a frontend emits branch
-// targets (basic blocks). However, the backend's basic block layout makes an
-// attempt to preserve source order of control flow, and any bias toward source
-// order must start with the frontend.
-//
-// Note that the frontend inverts branches to simplify the condition, so the
-// order of a branch instruction's labels cannot be used as a source order bias.
-
-void calla();
-void callb();
-void callc();
-
-// CHECK: @test1
-// CHECK: @calla
-// CHECK: @callb
-// CHECK: @callc
-// CHECK: ret void
-void test1(int a) {
-  if (a)
-    calla();
-  else
-    callb();
-  callc();
-}
-
-// CHECK: @test2
-// CHECK: @callb
-// CHECK: @calla
-// CHECK: @callc
-// CHECK: ret void
-void test2(int a) {
-  if (!a)
-    callb();
-  else
-    calla();
-  callc();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-attributes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-attributes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-attributes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple arm-unknown-linux-gnueabi -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: declare i32 @printf(i8*, ...)
-void f0() {
-  printf("a\n");
-}
-
-// CHECK: call void @exit
-// CHECK: unreachable
-void f1() {
-  exit(1);
-}
-
-// CHECK: call i8* @strstr{{.*}} [[NUW:#[0-9]+]]
-char* f2(char* a, char* b) {
-  return __builtin_strstr(a, b);
-}
-
-// frexp is NOT readnone. It writes to its pointer argument.
-// <rdar://problem/10070234>
-//
-// CHECK: f3
-// CHECK: call double @frexp(double %
-// CHECK-NOT: readnone
-// CHECK: call float @frexpf(float %
-// CHECK-NOT: readnone
-// CHECK: call double @frexpl(double %
-// CHECK-NOT: readnone
-//
-// Same thing for modf and friends.
-//
-// CHECK: call double @modf(double %
-// CHECK-NOT: readnone
-// CHECK: call float @modff(float %
-// CHECK-NOT: readnone
-// CHECK: call double @modfl(double %
-// CHECK-NOT: readnone
-//
-// CHECK: call double @remquo(double %
-// CHECK-NOT: readnone
-// CHECK: call float @remquof(float %
-// CHECK-NOT: readnone
-// CHECK: call double @remquol(double %
-// CHECK-NOT: readnone
-// CHECK: ret
-int f3(double x) {
-  int e;
-  __builtin_frexp(x, &e);
-  __builtin_frexpf(x, &e);
-  __builtin_frexpl(x, &e);
-  __builtin_modf(x, &e);
-  __builtin_modff(x, &e);
-  __builtin_modfl(x, &e);
-  __builtin_remquo(x, x, &e);
-  __builtin_remquof(x, x, &e);
-  __builtin_remquol(x, x, &e);
-  return e;
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-count-zeros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-count-zeros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-count-zeros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-// RUN: %clang_cc1 -triple arm-unknown-unknown -emit-llvm %s -o - | FileCheck %s --check-prefix=CHECK-ARM
-
-int a(int a) {return __builtin_ctz(a) + __builtin_clz(a);}
-// CHECK: call i32 @llvm.cttz.i32({{.*}}, i1 true)
-// CHECK: call i32 @llvm.ctlz.i32({{.*}}, i1 true)
-// CHECK-ARM: call i32 @llvm.cttz.i32({{.*}}, i1 false)
-// CHECK-ARM: call i32 @llvm.ctlz.i32({{.*}}, i1 false)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-expect.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-expect.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-expect.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-int x;
-int y(void);
-void foo();
-void FUNC() {
-// CHECK: [[call:%.*]] = call i32 @y
-  if (__builtin_expect (x, y()))
-    foo ();
-}
-
-// rdar://9330105
-void isigprocmask(void);
-long bar();
-
-int main() {
-    (void) __builtin_expect((isigprocmask(), 0), bar());
-}
-
-// CHECK: call void @isigprocmask()
-// CHECK: [[C:%.*]] = call i64 (...)* @bar()
-
-
-// CHECK: @test1
-int test1(int x) {
-// CHECK: @llvm.expect
-  if (__builtin_expect (x, 1))
-    return 0;
-  return x;
-}
-
-// CHECK: @test2
-int test2(int x) {
-// CHECK: @llvm.expect
-  switch(__builtin_expect(x, 5)) {
-  default:
-    return 0;
-  case 0:
-  case 1:
-  case 2:
-    return 1;
-  case 5:
-    return 5;
-  };
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-memfns.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-memfns.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-memfns.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm < %s| FileCheck %s
-
-// CHECK: @test1
-// CHECK: call void @llvm.memset.p0i8.i32
-// CHECK: call void @llvm.memset.p0i8.i32
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.i32
-// CHECK: call void @llvm.memmove.p0i8.p0i8.i32
-// CHECK-NOT: __builtin
-// CHECK: ret
-int test1(int argc, char **argv) {
-  unsigned char a = 0x11223344;
-  unsigned char b = 0x11223344;
-  __builtin_bzero(&a, sizeof(a));
-  __builtin_memset(&a, 0, sizeof(a));
-  __builtin_memcpy(&a, &b, sizeof(a));
-  __builtin_memmove(&a, &b, sizeof(a));
-  return 0;
-}
-
-// rdar://9289468
-
-// CHECK: @test2
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.i32
-char* test2(char* a, char* b) {
-  return __builtin_memcpy(a, b, 4);
-}
-
-// CHECK: @test3
-// CHECK: call void @llvm.memset
-void test3(char *P) {
-  __builtin___memset_chk(P, 42, 128, 128);
-}
-
-// CHECK: @test4
-// CHECK: call void @llvm.memcpy
-void test4(char *P, char *Q) {
-  __builtin___memcpy_chk(P, Q, 128, 128);
-}
-
-// CHECK: @test5
-// CHECK: call void @llvm.memmove
-void test5(char *P, char *Q) {
-  __builtin___memmove_chk(P, Q, 128, 128);
-}
-
-// CHECK: @test6
-// CHECK: call void @llvm.memcpy
-int test6(char *X) {
-  return __builtin___memcpy_chk(X, X, 42, 42) != 0;
-}
-
-// CHECK: @test7
-// PR12094
-int test7(int *p) {
-  struct snd_pcm_hw_params_t* hwparams;  // incomplete type.
-  
-  // CHECK: call void @llvm.memset{{.*}}256, i32 4, i1 false)
-  __builtin_memset(p, 0, 256);  // Should be alignment = 4
-
-  // CHECK: call void @llvm.memset{{.*}}256, i32 1, i1 false)
-  __builtin_memset((char*)p, 0, 256);  // Should be alignment = 1
-
-  __builtin_memset(hwparams, 0, 256);  // No crash alignment = 1
-  // CHECK: call void @llvm.memset{{.*}}256, i32 1, i1 false)
-}
-
-// <rdar://problem/11314941>
-// Make sure we don't over-estimate the alignment of fields of
-// packed structs.
-struct PS {
-  int modes[4];
-} __attribute__((packed));
-struct PS ps;
-void test8(int *arg) {
-  // CHECK: @test8
-  // CHECK: call void @llvm.memcpy{{.*}} 16, i32 1, i1 false)
-  __builtin_memcpy(arg, ps.modes, sizeof(struct PS));
-}
-
-__attribute((aligned(16))) int x[4], y[4];
-void test9() {
-  // CHECK: @test9
-  // CHECK: call void @llvm.memcpy{{.*}} 16, i32 16, i1 false)
-  __builtin_memcpy(x, y, sizeof(y));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-ms-noop.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-ms-noop.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-ms-noop.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-win32 -emit-llvm %s -o - | FileCheck %s
-
-class A {
- public:
-  ~A() {}
-};
-
-void f() {
-// CHECK: @_Z1fv
-// CHECK-NOT: call void @_ZN1AD1Ev
-// CHECK: ret void
-  __noop(A());
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-nanf.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-nanf.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-nanf.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o %t %s
-// RUN: grep 'float 0x7FF8000000000000, float 0x7FF8000000000000, float 0x7FF8000020000000, float 0x7FF8000000000000, float 0x7FF80001E0000000, float 0x7FF8001E00000000, float 0x7FF801E000000000, float 0x7FF81E0000000000, float 0x7FF9E00000000000, float 0x7FFFFFFFE0000000' %t
-
-float n[] = {
-  __builtin_nanf("0"),
-  __builtin_nanf(""),
-  __builtin_nanf("1"),
-  __builtin_nanf("0x7fc00000"),
-  __builtin_nanf("0x7fc0000f"),
-  __builtin_nanf("0x7fc000f0"),
-  __builtin_nanf("0x7fc00f00"),
-  __builtin_nanf("0x7fc0f000"),
-  __builtin_nanf("0x7fcf0000"),
-  __builtin_nanf("0xffffffff"),
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-recursive.cc
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-recursive.cc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-recursive.cc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -nostdsysteminc -nobuiltininc -isystem Inputs -emit-llvm-only %s
-
-// This used to cause a read past the end of a global variable.
-
-#include <stdio.h>
-
-void testcase(void) {
-  vprintf(0, 0);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-rename.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-rename.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-rename.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | grep 'declare.*printf' | count 1
-// PR3612
-
-int printf(const char *, ...);
-
-int foo(void) {
-  return printf(printf);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-stackaddress.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-stackaddress.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-stackaddress.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep "llvm.returnaddress"
-// RUN: %clang_cc1 -emit-llvm < %s | grep "llvm.frameaddress"
-void* a(unsigned x) {
-return __builtin_return_address(0);
-}
-
-void* c(unsigned x) {
-return __builtin_frame_address(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-unwind-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-unwind-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtin-unwind-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s -o - | FileCheck %s
-
-void a() { __builtin_unwind_init(); }
-
-// CHECK:  call void @llvm.eh.unwind.init()

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-aarch64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-aarch64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-aarch64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -O3 -emit-llvm -o - %s | FileCheck %s
-
-void f0(char *a, char *b) {
-	__clear_cache(a,b);
-// CHECK: call {{.*}} @__clear_cache
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-arm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-arm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-arm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -Wall -Werror -triple thumbv7-eabi -target-cpu cortex-a8 -O3 -emit-llvm -o - %s | FileCheck %s
-
-void *f0()
-{
-  return __builtin_thread_pointer();
-}
-
-void f1(char *a, char *b) {
-	__clear_cache(a,b);
-}
-
-// CHECK: call {{.*}} @__clear_cache
-
-void test_eh_return_data_regno()
-{
-  volatile int res;
-  res = __builtin_eh_return_data_regno(0);  // CHECK: store volatile i32 0
-  res = __builtin_eh_return_data_regno(1);  // CHECK: store volatile i32 1
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-mips-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-mips-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-mips-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// REQUIRES: mips-registered-target
-// RUN: %clang_cc1 -triple mips-unknown-linux-gnu -fsyntax-only -verify %s
-
-void foo() {
-  // MIPS DSP Rev 1
-
-  int a = 3;
-  __builtin_mips_wrdsp(2052, a);  // expected-error{{argument to '__builtin_mips_wrdsp' must be a constant integer}}
-  __builtin_mips_rddsp(a);        // expected-error{{argument to '__builtin_mips_rddsp' must be a constant integer}}
-  __builtin_mips_wrdsp(2052, -1); // expected-error{{argument should be a value from 0 to 63}}
-  __builtin_mips_rddsp(-1);       // expected-error{{argument should be a value from 0 to 63}}
-  __builtin_mips_wrdsp(2052, 64); // expected-error{{argument should be a value from 0 to 63}}
-  __builtin_mips_rddsp(64);       // expected-error{{argument should be a value from 0 to 63}}
-
-  // MIPS DSP Rev 2
-
-  __builtin_mips_append(1, 2, a); // expected-error{{argument to '__builtin_mips_append' must be a constant integer}}
-  __builtin_mips_balign(1, 2, a); // expected-error{{argument to '__builtin_mips_balign' must be a constant integer}}
-  __builtin_mips_precr_sra_ph_w(1, 2, a);   // expected-error{{argument to '__builtin_mips_precr_sra_ph_w' must be a constant integer}}
-  __builtin_mips_precr_sra_r_ph_w(1, 2, a); // expected-error{{argument to '__builtin_mips_precr_sra_r_ph_w' must be a constant integer}}
-  __builtin_mips_prepend(1, 2, a);          // expected-error{{argument to '__builtin_mips_prepend' must be a constant integer}}
-
-  __builtin_mips_append(1, 2, -1);  // expected-error{{argument should be a value from 0 to 31}}
-  __builtin_mips_append(1, 2, 32);  // expected-error{{argument should be a value from 0 to 31}}
-
-  __builtin_mips_balign(1, 2, -1);  // expected-error{{argument should be a value from 0 to 3}}
-  __builtin_mips_balign(1, 2, 4);   // expected-error{{argument should be a value from 0 to 3}}
-
-  __builtin_mips_precr_sra_ph_w(1, 2, -1);  // expected-error{{argument should be a value from 0 to 31}}
-  __builtin_mips_precr_sra_ph_w(1, 2, 32);  // expected-error{{argument should be a value from 0 to 31}}
-
-  __builtin_mips_precr_sra_r_ph_w(1, 2, -1);  // expected-error{{argument should be a value from 0 to 31}}
-  __builtin_mips_precr_sra_r_ph_w(1, 2, 32);  // expected-error{{argument should be a value from 0 to 31}}
-
-  __builtin_mips_prepend(1, 2, -1); // expected-error{{argument should be a value from 0 to 31}}
-  __builtin_mips_prepend(1, 2, -1); // expected-error{{argument should be a value from 0 to 31}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-mips.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-mips.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-mips.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,541 +0,0 @@
-// REQUIRES: mips-registered-target
-// RUN: %clang_cc1 -triple mips-unknown-linux-gnu -emit-llvm %s -o - \
-// RUN:   | FileCheck %s
-
-typedef int q31;
-typedef int i32;
-typedef unsigned int ui32;
-typedef long long a64;
-
-typedef signed char v4i8 __attribute__ ((vector_size(4)));
-typedef signed char v4q7 __attribute__ ((vector_size(4)));
-typedef short v2i16 __attribute__ ((vector_size(4)));
-typedef short v2q15 __attribute__ ((vector_size(4)));
-
-void foo() {
-  v2q15 v2q15_r, v2q15_a, v2q15_b, v2q15_c;
-  v2i16 v2i16_r, v2i16_a, v2i16_b, v2i16_c;
-  v4q7 v4q7_r, v4q7_a, v4q7_b;
-  v4i8 v4i8_r, v4i8_a, v4i8_b, v4i8_c;
-  q31 q31_r, q31_a, q31_b, q31_c;
-  i32 i32_r, i32_a, i32_b, i32_c;
-  ui32 ui32_r, ui32_a, ui32_b, ui32_c;
-  a64 a64_r, a64_a, a64_b;
-
-  // MIPS DSP Rev 1
-
-  v4i8_a = (v4i8) {1, 2, 3, 0xFF};
-  v4i8_b = (v4i8) {2, 4, 6, 8};
-  v4i8_r = __builtin_mips_addu_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.addu.qb
-  v4i8_r = __builtin_mips_addu_s_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.addu.s.qb
-  v4i8_r = __builtin_mips_subu_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.subu.qb
-  v4i8_r = __builtin_mips_subu_s_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.subu.s.qb
-
-  v2q15_a = (v2q15) {0x0000, 0x8000};
-  v2q15_b = (v2q15) {0x8000, 0x8000};
-  v2q15_r = __builtin_mips_addq_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.addq.ph
-  v2q15_r = __builtin_mips_addq_s_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.addq.s.ph
-  v2q15_r = __builtin_mips_subq_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.subq.ph
-  v2q15_r = __builtin_mips_subq_s_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.subq.s.ph
-
-  a64_a = 0x12345678;
-  i32_b = 0x80000000;
-  i32_c = 0x11112222;
-  a64_r = __builtin_mips_madd(a64_a, i32_b, i32_c);
-// CHECK: call i64 @llvm.mips.madd
-  a64_a = 0x12345678;
-  ui32_b = 0x80000000;
-  ui32_c = 0x11112222;
-  a64_r = __builtin_mips_maddu(a64_a, ui32_b, ui32_c);
-// CHECK: call i64 @llvm.mips.maddu
-  a64_a = 0x12345678;
-  i32_b = 0x80000000;
-  i32_c = 0x11112222;
-  a64_r = __builtin_mips_msub(a64_a, i32_b, i32_c);
-// CHECK: call i64 @llvm.mips.msub
-  a64_a = 0x12345678;
-  ui32_b = 0x80000000;
-  ui32_c = 0x11112222;
-  a64_r = __builtin_mips_msubu(a64_a, ui32_b, ui32_c);
-// CHECK: call i64 @llvm.mips.msubu
-
-  q31_a = 0x12345678;
-  q31_b = 0x7FFFFFFF;
-  q31_r = __builtin_mips_addq_s_w(q31_a, q31_b);
-// CHECK: call i32 @llvm.mips.addq.s.w
-  q31_r = __builtin_mips_subq_s_w(q31_a, q31_b);
-// CHECK: call i32 @llvm.mips.subq.s.w
-
-  i32_a = 0xFFFFFFFF;
-  i32_b = 1;
-  i32_r = __builtin_mips_addsc(i32_a, i32_b);
-// CHECK: call i32 @llvm.mips.addsc
-  i32_a = 0;
-  i32_b = 1;
-  i32_r = __builtin_mips_addwc(i32_a, i32_b);
-// CHECK: call i32 @llvm.mips.addwc
-
-  i32_a = 20;
-  i32_b = 0x1402;
-  i32_r = __builtin_mips_modsub(i32_a, i32_b);
-// CHECK: call i32 @llvm.mips.modsub
-
-  v4i8_a = (v4i8) {1, 2, 3, 4};
-  i32_r = __builtin_mips_raddu_w_qb(v4i8_a);
-// CHECK: call i32 @llvm.mips.raddu.w.qb
-
-  v2q15_a = (v2q15) {0xFFFF, 0x8000};
-  v2q15_r = __builtin_mips_absq_s_ph(v2q15_a);
-// CHECK: call <2 x i16> @llvm.mips.absq.s.ph
-  q31_a = 0x80000000;
-  q31_r = __builtin_mips_absq_s_w(q31_a);
-// CHECK: call i32 @llvm.mips.absq.s.w
-
-  v2q15_a = (v2q15) {0x1234, 0x5678};
-  v2q15_b = (v2q15) {0x1111, 0x2222};
-  v4i8_r = __builtin_mips_precrq_qb_ph(v2q15_a, v2q15_b);
-// CHECK: call <4 x i8> @llvm.mips.precrq.qb.ph
-
-  v2q15_a = (v2q15) {0x7F79, 0xFFFF};
-  v2q15_b = (v2q15) {0x7F81, 0x2000};
-  v4i8_r = __builtin_mips_precrqu_s_qb_ph(v2q15_a, v2q15_b);
-// CHECK: call <4 x i8> @llvm.mips.precrqu.s.qb.ph
-  q31_a = 0x12345678;
-  q31_b = 0x11112222;
-  v2q15_r = __builtin_mips_precrq_ph_w(q31_a, q31_b);
-// CHECK: call <2 x i16> @llvm.mips.precrq.ph.w
-  q31_a = 0x7000FFFF;
-  q31_b = 0x80000000;
-  v2q15_r = __builtin_mips_precrq_rs_ph_w(q31_a, q31_b);
-// CHECK: call <2 x i16> @llvm.mips.precrq.rs.ph.w
-  v2q15_a = (v2q15) {0x1234, 0x5678};
-  q31_r = __builtin_mips_preceq_w_phl(v2q15_a);
-// CHECK: call i32 @llvm.mips.preceq.w.phl
-  q31_r = __builtin_mips_preceq_w_phr(v2q15_a);
-// CHECK: call i32 @llvm.mips.preceq.w.phr
-  v4i8_a = (v4i8) {0x12, 0x34, 0x56, 0x78};
-  v2q15_r = __builtin_mips_precequ_ph_qbl(v4i8_a);
-// CHECK: call <2 x i16> @llvm.mips.precequ.ph.qbl
-  v2q15_r = __builtin_mips_precequ_ph_qbr(v4i8_a);
-// CHECK: call <2 x i16> @llvm.mips.precequ.ph.qbr
-  v2q15_r = __builtin_mips_precequ_ph_qbla(v4i8_a);
-// CHECK: call <2 x i16> @llvm.mips.precequ.ph.qbla
-  v2q15_r = __builtin_mips_precequ_ph_qbra(v4i8_a);
-// CHECK: call <2 x i16> @llvm.mips.precequ.ph.qbra
-  v2q15_r = __builtin_mips_preceu_ph_qbl(v4i8_a);
-// CHECK: call <2 x i16> @llvm.mips.preceu.ph.qbl
-  v2q15_r = __builtin_mips_preceu_ph_qbr(v4i8_a);
-// CHECK: call <2 x i16> @llvm.mips.preceu.ph.qbr
-  v2q15_r = __builtin_mips_preceu_ph_qbla(v4i8_a);
-// CHECK: call <2 x i16> @llvm.mips.preceu.ph.qbla
-  v2q15_r = __builtin_mips_preceu_ph_qbra(v4i8_a);
-// CHECK: call <2 x i16> @llvm.mips.preceu.ph.qbra
-
-  v4i8_a = (v4i8) {1, 2, 3, 4};
-  v4i8_r = __builtin_mips_shll_qb(v4i8_a, 2);
-// CHECK: call <4 x i8> @llvm.mips.shll.qb
-  v4i8_a = (v4i8) {128, 64, 32, 16};
-  v4i8_r = __builtin_mips_shrl_qb(v4i8_a, 2);
-// CHECK: call <4 x i8> @llvm.mips.shrl.qb
-  v2q15_a = (v2q15) {0x0001, 0x8000};
-  v2q15_r = __builtin_mips_shll_ph(v2q15_a, 2);
-// CHECK: call <2 x i16> @llvm.mips.shll.ph
-  v2q15_r = __builtin_mips_shll_s_ph(v2q15_a, 2);
-// CHECK: call <2 x i16> @llvm.mips.shll.s.ph
-  v2q15_a = (v2q15) {0x7FFF, 0x8000};
-  v2q15_r = __builtin_mips_shra_ph(v2q15_a, 2);
-// CHECK: call <2 x i16> @llvm.mips.shra.ph
-  v2q15_r = __builtin_mips_shra_r_ph(v2q15_a, 2);
-// CHECK: call <2 x i16> @llvm.mips.shra.r.ph
-  q31_a = 0x70000000;
-  q31_r = __builtin_mips_shll_s_w(q31_a, 2);
-// CHECK: call i32 @llvm.mips.shll.s.w
-  q31_a = 0x7FFFFFFF;
-  q31_r = __builtin_mips_shra_r_w(q31_a, 2);
-// CHECK: call i32 @llvm.mips.shra.r.w
-  a64_a = 0x1234567887654321LL;
-  a64_r = __builtin_mips_shilo(a64_a, -8);
-// CHECK: call i64 @llvm.mips.shilo
-
-  v4i8_a = (v4i8) {0x1, 0x3, 0x5, 0x7};
-  v2q15_b = (v2q15) {0x1234, 0x5678};
-  v2q15_r = __builtin_mips_muleu_s_ph_qbl(v4i8_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.muleu.s.ph.qbl
-  v2q15_r = __builtin_mips_muleu_s_ph_qbr(v4i8_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.muleu.s.ph.qbr
-  v2q15_a = (v2q15) {0x7FFF, 0x8000};
-  v2q15_b = (v2q15) {0x7FFF, 0x8000};
-  v2q15_r = __builtin_mips_mulq_rs_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.mulq.rs.ph
-  v2q15_a = (v2q15) {0x1234, 0x8000};
-  v2q15_b = (v2q15) {0x5678, 0x8000};
-  q31_r = __builtin_mips_muleq_s_w_phl(v2q15_a, v2q15_b);
-// CHECK: call i32 @llvm.mips.muleq.s.w.phl
-  q31_r = __builtin_mips_muleq_s_w_phr(v2q15_a, v2q15_b);
-// CHECK: call i32 @llvm.mips.muleq.s.w.phr
-  a64_a = 0;
-  v2q15_a = (v2q15) {0x0001, 0x8000};
-  v2q15_b = (v2q15) {0x0002, 0x8000};
-  a64_r = __builtin_mips_mulsaq_s_w_ph(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.mulsaq.s.w.ph
-  a64_a = 0;
-  v2q15_b = (v2q15) {0x0001, 0x8000};
-  v2q15_c = (v2q15) {0x0002, 0x8000};
-  a64_r = __builtin_mips_maq_s_w_phl(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.maq.s.w.phl
-  a64_r = __builtin_mips_maq_s_w_phr(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.maq.s.w.phr
-  a64_a = 0x7FFFFFF0;
-  a64_r = __builtin_mips_maq_sa_w_phl(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.maq.sa.w.phl
-  a64_r = __builtin_mips_maq_sa_w_phr(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.maq.sa.w.phr
-  i32_a = 0x80000000;
-  i32_b = 0x11112222;
-  a64_r = __builtin_mips_mult(i32_a, i32_b);
-// CHECK: call i64 @llvm.mips.mult
-  ui32_a = 0x80000000;
-  ui32_b = 0x11112222;
-  a64_r = __builtin_mips_multu(ui32_a, ui32_b);
-// CHECK: call i64 @llvm.mips.multu
-
-  a64_a = 0;
-  v4i8_b = (v4i8) {1, 2, 3, 4};
-  v4i8_c = (v4i8) {4, 5, 6, 7};
-  a64_r = __builtin_mips_dpau_h_qbl(a64_a, v4i8_b, v4i8_c);
-// CHECK: call i64 @llvm.mips.dpau.h.qbl
-  a64_r = __builtin_mips_dpau_h_qbr(a64_a, v4i8_b, v4i8_c);
-// CHECK: call i64 @llvm.mips.dpau.h.qbr
-  a64_r = __builtin_mips_dpsu_h_qbl(a64_a, v4i8_b, v4i8_c);
-// CHECK: call i64 @llvm.mips.dpsu.h.qbl
-  a64_r = __builtin_mips_dpsu_h_qbr(a64_a, v4i8_b, v4i8_c);
-// CHECK: call i64 @llvm.mips.dpsu.h.qbr
-  a64_a = 0;
-  v2q15_b = (v2q15) {0x0001, 0x8000};
-  v2q15_c = (v2q15) {0x0002, 0x8000};
-  a64_r = __builtin_mips_dpaq_s_w_ph(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.dpaq.s.w.ph
-  a64_r = __builtin_mips_dpsq_s_w_ph(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.dpsq.s.w.ph
-  a64_a = 0;
-  q31_b = 0x80000000;
-  q31_c = 0x80000000;
-  a64_r = __builtin_mips_dpaq_sa_l_w(a64_a, q31_b, q31_c);
-// CHECK: call i64 @llvm.mips.dpaq.sa.l.w
-  a64_r = __builtin_mips_dpsq_sa_l_w(a64_a, q31_b, q31_c);
-// CHECK: call i64 @llvm.mips.dpsq.sa.l.w
-
-  v4i8_a = (v4i8) {1, 4, 10, 8};
-  v4i8_b = (v4i8) {1, 2, 100, 8};
-  __builtin_mips_cmpu_eq_qb(v4i8_a, v4i8_b);
-// CHECK: call void @llvm.mips.cmpu.eq.qb
-  __builtin_mips_cmpu_lt_qb(v4i8_a, v4i8_b);
-// CHECK: call void @llvm.mips.cmpu.lt.qb
-  __builtin_mips_cmpu_le_qb(v4i8_a, v4i8_b);
-// CHECK: call void @llvm.mips.cmpu.le.qb
-  i32_r = __builtin_mips_cmpgu_eq_qb(v4i8_a, v4i8_b);
-// CHECK: call i32 @llvm.mips.cmpgu.eq.qb
-  i32_r = __builtin_mips_cmpgu_lt_qb(v4i8_a, v4i8_b);
-// CHECK: call i32 @llvm.mips.cmpgu.lt.qb
-  i32_r = __builtin_mips_cmpgu_le_qb(v4i8_a, v4i8_b);
-// CHECK: call i32 @llvm.mips.cmpgu.le.qb
-  v2q15_a = (v2q15) {0x1111, 0x1234};
-  v2q15_b = (v2q15) {0x4444, 0x1234};
-  __builtin_mips_cmp_eq_ph(v2q15_a, v2q15_b);
-// CHECK: call void @llvm.mips.cmp.eq.ph
-  __builtin_mips_cmp_lt_ph(v2q15_a, v2q15_b);
-// CHECK: call void @llvm.mips.cmp.lt.ph
-  __builtin_mips_cmp_le_ph(v2q15_a, v2q15_b);
-// CHECK: call void @llvm.mips.cmp.le.ph
-
-  a64_a = 0xFFFFF81230000000LL;
-  i32_r = __builtin_mips_extr_s_h(a64_a, 4);
-// CHECK: call i32 @llvm.mips.extr.s.h
-  a64_a = 0x8123456712345678LL;
-  i32_r = __builtin_mips_extr_w(a64_a, 31);
-// CHECK: call i32 @llvm.mips.extr.w
-  i32_r = __builtin_mips_extr_rs_w(a64_a, 31);
-// CHECK: call i32 @llvm.mips.extr.rs.w
-  i32_r = __builtin_mips_extr_r_w(a64_a, 31);
-// CHECK: call i32 @llvm.mips.extr.r.w
-  a64_a = 0x1234567887654321LL;
-  i32_r = __builtin_mips_extp(a64_a, 3);
-// CHECK: call i32 @llvm.mips.extp
-  a64_a = 0x123456789ABCDEF0LL;
-  i32_r = __builtin_mips_extpdp(a64_a, 7);
-// CHECK: call i32 @llvm.mips.extpdp
-
-  __builtin_mips_wrdsp(2052, 3);
-// CHECK: call void @llvm.mips.wrdsp
-  i32_r = __builtin_mips_rddsp(3);
-// CHECK: call i32 @llvm.mips.rddsp
-  i32_a = 0xFFFFFFFF;
-  i32_b = 0x12345678;
-  __builtin_mips_wrdsp((16<<7) + 4, 3);
-// CHECK: call void @llvm.mips.wrdsp
-  i32_r = __builtin_mips_insv(i32_a, i32_b);
-// CHECK: call i32 @llvm.mips.insv
-  i32_a = 0x1234;
-  i32_r = __builtin_mips_bitrev(i32_a);
-// CHECK: call i32 @llvm.mips.bitrev
-  v2q15_a = (v2q15) {0x1111, 0x2222};
-  v2q15_b = (v2q15) {0x3333, 0x4444};
-  v2q15_r = __builtin_mips_packrl_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.packrl.ph
-  i32_a = 100;
-  v4i8_r = __builtin_mips_repl_qb(i32_a);
-// CHECK: call <4 x i8> @llvm.mips.repl.qb
-  i32_a = 0x1234;
-  v2q15_r = __builtin_mips_repl_ph(i32_a);
-// CHECK: call <2 x i16> @llvm.mips.repl.ph
-  v4i8_a = (v4i8) {1, 4, 10, 8};
-  v4i8_b = (v4i8) {1, 2, 100, 8};
-  __builtin_mips_cmpu_eq_qb(v4i8_a, v4i8_b);
-// CHECK: call void @llvm.mips.cmpu.eq.qb
-  v4i8_r = __builtin_mips_pick_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.pick.qb
-  v2q15_a = (v2q15) {0x1111, 0x1234};
-  v2q15_b = (v2q15) {0x4444, 0x1234};
-  __builtin_mips_cmp_eq_ph(v2q15_a, v2q15_b);
-// CHECK: call void @llvm.mips.cmp.eq.ph
-  v2q15_r = __builtin_mips_pick_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.pick.ph
-  a64_a = 0x1234567887654321LL;
-  i32_b = 0x11112222;
-  __builtin_mips_wrdsp(0, 1);
-// CHECK: call void @llvm.mips.wrdsp
-  a64_r = __builtin_mips_mthlip(a64_a, i32_b);
-// CHECK: call i64 @llvm.mips.mthlip
-  i32_r = __builtin_mips_bposge32();
-// CHECK: call i32 @llvm.mips.bposge32
-  char array_a[100];
-  i32_r = __builtin_mips_lbux(array_a, 20);
-// CHECK: call i32 @llvm.mips.lbux
-  short array_b[100];
-  i32_r = __builtin_mips_lhx(array_b, 20);
-// CHECK: call i32 @llvm.mips.lhx
-  int array_c[100];
-  i32_r = __builtin_mips_lwx(array_c, 20);
-// CHECK: call i32 @llvm.mips.lwx
-
-  // MIPS DSP Rev 2
-
-  v4q7_a = (v4q7) {0x81, 0xff, 0x80, 0x23};
-  v4q7_r = __builtin_mips_absq_s_qb (v4q7_a);
-// CHECK: call <4 x i8> @llvm.mips.absq.s.qb
-
-  v2q15_a = (v2q15) {0x3334, 0x4444};
-  v2q15_b = (v2q15) {0x1111, 0x2222};
-  v2q15_r = __builtin_mips_addqh_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.addqh.ph
-  v2q15_a = (v2q15) {0x3334, 0x4444};
-  v2q15_b = (v2q15) {0x1111, 0x2222};
-  v2q15_r = __builtin_mips_addqh_r_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.addqh.r.ph
-  q31_a = 0x11111112;
-  q31_b = 0x99999999;
-  q31_r = __builtin_mips_addqh_w(q31_a, q31_b);
-// CHECK: call i32 @llvm.mips.addqh.w
-  q31_a = 0x11111112;
-  q31_b = 0x99999999;
-  q31_r = __builtin_mips_addqh_r_w(q31_a, q31_b);
-// CHECK: call i32 @llvm.mips.addqh.r.w
-
-  v2i16_a = (v2i16) {0xffff, 0x2468};
-  v2i16_b = (v2i16) {0x1234, 0x1111};
-  v2i16_r = __builtin_mips_addu_ph(v2i16_a, v2i16_b);
-// CHECK: call <2 x i16> @llvm.mips.addu.ph
-  v2i16_a = (v2i16) {0xffff, 0x2468};
-  v2i16_b = (v2i16) {0x1234, 0x1111};
-  v2i16_r = __builtin_mips_addu_s_ph(v2i16_a, v2i16_b);
-// CHECK: call <2 x i16> @llvm.mips.addu.s.ph
-  v4i8_a = (v4i8) {0x11, 0x22, 0x33, 0xff};
-  v4i8_b = (v4i8) {0x11, 0x33, 0x99, 0xff};
-  v4i8_r = __builtin_mips_adduh_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.adduh.qb
-  v4i8_a = (v4i8) {0x11, 0x22, 0x33, 0xff};
-  v4i8_b = (v4i8) {0x11, 0x33, 0x99, 0xff};
-  v4i8_r = __builtin_mips_adduh_r_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.adduh.r.qb
-
-  i32_a = 0x12345678;
-  i32_b = 0x87654321;
-  i32_r = __builtin_mips_append(i32_a, i32_b, 16);
-// CHECK: call i32 @llvm.mips.append
-  i32_a = 0x12345678;
-  i32_b = 0x87654321;
-  i32_r = __builtin_mips_balign(i32_a, i32_b, 3);
-// CHECK: call i32 @llvm.mips.balign
-
-  v4i8_a = (v4i8) {0x11, 0x22, 0x33, 0x44};
-  v4i8_b = (v4i8) {0x11, 0x33, 0x33, 0x44};
-  i32_r = __builtin_mips_cmpgdu_eq_qb(v4i8_a, v4i8_b);
-// CHECK: call i32 @llvm.mips.cmpgdu.eq.qb
-  v4i8_a = (v4i8) {0x11, 0x22, 0x33, 0x44};
-  v4i8_b = (v4i8) {0x11, 0x33, 0x33, 0x44};
-  i32_r = __builtin_mips_cmpgdu_lt_qb(v4i8_a, v4i8_b);
-// CHECK: call i32 @llvm.mips.cmpgdu.lt.qb
-  v4i8_a = (v4i8) {0x11, 0x22, 0x33, 0x54};
-  v4i8_b = (v4i8) {0x11, 0x33, 0x33, 0x44};
-  i32_r = __builtin_mips_cmpgdu_le_qb(v4i8_a, v4i8_b);
-// CHECK: call i32 @llvm.mips.cmpgdu.le.qb
-
-  a64_a = 0x12345678;
-  v2i16_b = (v2i16) {0xffff, 0x1555};
-  v2i16_c = (v2i16) {0x1234, 0x3322};
-  a64_r = __builtin_mips_dpa_w_ph(a64_a, v2i16_b, v2i16_c);
-// CHECK: call i64 @llvm.mips.dpa.w.ph
-  a64_a = 0x12345678;
-  v2i16_b = (v2i16) {0xffff, 0x1555};
-  v2i16_c = (v2i16) {0x1234, 0x3322};
-  a64_r = __builtin_mips_dps_w_ph(a64_a, v2i16_b, v2i16_c);
-// CHECK: call i64 @llvm.mips.dps.w.ph
-
-  a64_a = 0x70000000;
-  v2q15_b = (v2q15) {0x4000, 0x2000};
-  v2q15_c = (v2q15) {0x2000, 0x4000};
-  a64_r = __builtin_mips_dpaqx_s_w_ph(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.dpaqx.s.w.ph
-  a64_a = 0x70000000;
-  v2q15_b = (v2q15) {0x4000, 0x2000};
-  v2q15_c = (v2q15) {0x2000, 0x4000};
-  a64_r = __builtin_mips_dpaqx_sa_w_ph(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.dpaqx.sa.w.ph
-  a64_a = 0x1111222212345678LL;
-  v2i16_b = (v2i16) {0x1, 0x2};
-  v2i16_c = (v2i16) {0x3, 0x4};
-  a64_r = __builtin_mips_dpax_w_ph(a64_a, v2i16_b, v2i16_c);
-// CHECK: call i64 @llvm.mips.dpax.w.ph
-  a64_a = 0x9999111112345678LL;
-  v2i16_b = (v2i16) {0x1, 0x2};
-  v2i16_c = (v2i16) {0x3, 0x4};
-  a64_r = __builtin_mips_dpsx_w_ph(a64_a, v2i16_b, v2i16_c);
-// CHECK: call i64 @llvm.mips.dpsx.w.ph
-  a64_a = 0x70000000;
-  v2q15_b = (v2q15) {0x4000, 0x2000};
-  v2q15_c = (v2q15) {0x2000, 0x4000};
-  a64_r = __builtin_mips_dpsqx_s_w_ph(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.dpsqx.s.w.ph
-  a64_a = 0xFFFFFFFF80000000LL;
-  v2q15_b = (v2q15) {0x4000, 0x2000};
-  v2q15_c = (v2q15) {0x2000, 0x4000};
-  a64_r = __builtin_mips_dpsqx_sa_w_ph(a64_a, v2q15_b, v2q15_c);
-// CHECK: call i64 @llvm.mips.dpsqx.sa.w.ph
-
-  v2i16_a = (v2i16) {0xffff, 0x2468};
-  v2i16_b = (v2i16) {0x1234, 0x1111};
-  v2i16_r = __builtin_mips_mul_ph(v2i16_a, v2i16_b);
-// CHECK: call <2 x i16> @llvm.mips.mul.ph
-  v2i16_a = (v2i16) {0x8000, 0x7fff};
-  v2i16_b = (v2i16) {0x1234, 0x1111};
-  v2i16_r = __builtin_mips_mul_s_ph(v2i16_a, v2i16_b);
-// CHECK: call <2 x i16> @llvm.mips.mul.s.ph
-
-  q31_a = 0x80000000;
-  q31_b = 0x80000000; 
-  q31_r = __builtin_mips_mulq_rs_w(q31_a, q31_b);
-// CHECK: call i32 @llvm.mips.mulq.rs.w
-  v2q15_a = (v2q15) {0xffff, 0x8000};
-  v2q15_b = (v2q15) {0x1111, 0x8000};
-  v2q15_r = __builtin_mips_mulq_s_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.mulq.s.ph
-  q31_a = 0x00000002;
-  q31_b = 0x80000000; 
-  q31_r = __builtin_mips_mulq_s_w(q31_a, q31_b);
-// CHECK: call i32 @llvm.mips.mulq.s.w
-  a64_a = 0x19848419;
-  v2i16_b = (v2i16) {0xffff, 0x8000};
-  v2i16_c = (v2i16) {0x1111, 0x8000};
-  a64_r = __builtin_mips_mulsa_w_ph(a64_a, v2i16_b, v2i16_c);
-// CHECK: call i64 @llvm.mips.mulsa.w.ph
-
-  v2i16_a = (v2i16) {0x1234, 0x5678};
-  v2i16_b = (v2i16) {0x2233, 0x5566};
-  v4i8_r = __builtin_mips_precr_qb_ph(v2i16_a, v2i16_b);
-// CHECK: call <4 x i8> @llvm.mips.precr.qb.ph
-  i32_a = 0x12345678;
-  i32_b = 0x33334444;
-  v2i16_r = __builtin_mips_precr_sra_ph_w(i32_a, i32_b, 4);
-// CHECK: call <2 x i16> @llvm.mips.precr.sra.ph.w
-  i32_a = 0x12345678;
-  i32_b = 0x33334444;
-  v2i16_r = __builtin_mips_precr_sra_r_ph_w(i32_a, i32_b, 4);
-// CHECK: call <2 x i16> @llvm.mips.precr.sra.r.ph.w
-
-  i32_a = 0x12345678;
-  i32_b = 0x87654321;
-  i32_r = __builtin_mips_prepend(i32_a, i32_b, 16);
-// CHECK: call i32 @llvm.mips.prepend
-
-  v4i8_a = (v4i8) {0x12, 0x45, 0x77, 0x99};
-  v4i8_r = __builtin_mips_shra_qb(v4i8_a, 1);
-// CHECK: call <4 x i8> @llvm.mips.shra.qb
-  v4i8_a = (v4i8) {0x12, 0x45, 0x77, 0x99};
-  i32_b = 1;  
-  v4i8_r = __builtin_mips_shra_qb(v4i8_a, i32_b);
-// CHECK: call <4 x i8> @llvm.mips.shra.qb
-  v4i8_a = (v4i8) {0x12, 0x45, 0x77, 0x99};
-  v4i8_r = __builtin_mips_shra_r_qb(v4i8_a, 1);
-// CHECK: call <4 x i8> @llvm.mips.shra.r.qb
-  v4i8_a = (v4i8) {0x12, 0x45, 0x77, 0x99};
-  i32_b = 1;  
-  v4i8_r = __builtin_mips_shra_r_qb(v4i8_a, i32_b);
-// CHECK: call <4 x i8> @llvm.mips.shra.r.qb
-  v2i16_a = (v2i16) {0x1357, 0x2468};
-  v2i16_r = __builtin_mips_shrl_ph(v2i16_a, 4);
-// CHECK: call <2 x i16> @llvm.mips.shrl.ph
-  v2i16_a = (v2i16) {0x1357, 0x2468};
-  i32_b = 8;
-  v2i16_r = __builtin_mips_shrl_ph (v2i16_a, i32_b);
-// CHECK: call <2 x i16> @llvm.mips.shrl.ph
-
-  v2q15_a = (v2q15) {0x3334, 0x4444};
-  v2q15_b = (v2q15) {0x1111, 0x2222};
-  v2q15_r = __builtin_mips_subqh_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.subqh.ph
-  v2q15_a = (v2q15) {0x3334, 0x4444};
-  v2q15_b = (v2q15) {0x1111, 0x2222};
-  v2q15_r = __builtin_mips_subqh_r_ph(v2q15_a, v2q15_b);
-// CHECK: call <2 x i16> @llvm.mips.subqh.r.ph
-  q31_a = 0x11111112;
-  q31_b = 0x99999999;
-  q31_r = __builtin_mips_subqh_w(q31_a, q31_b);
-// CHECK: call i32 @llvm.mips.subqh.w
-  q31_a = 0x11111112;
-  q31_b = 0x99999999;
-  q31_r = __builtin_mips_subqh_r_w(q31_a, q31_b);
-// CHECK: call i32 @llvm.mips.subqh.r.w
-
-  v2i16_a = (v2i16) {0x1357, 0x4455};
-  v2i16_b = (v2i16) {0x3333, 0x4444};
-  v2i16_r = __builtin_mips_subu_ph(v2i16_a, v2i16_b);
-// CHECK: call <2 x i16> @llvm.mips.subu.ph
-  v2i16_a = (v2i16) {0x1357, 0x4455};
-  v2i16_b = (v2i16) {0x3333, 0x4444};
-  v2i16_r = __builtin_mips_subu_s_ph(v2i16_a, v2i16_b);
-// CHECK: call <2 x i16> @llvm.mips.subu.s.ph
-
-  v4i8_a = (v4i8) {0x33 ,0x44, 0x55, 0x66};
-  v4i8_b = (v4i8) {0x99 ,0x15, 0x85, 0xff};
-  v4i8_r = __builtin_mips_subuh_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.subuh.qb
-  v4i8_a = (v4i8) {0x33 ,0x44, 0x55, 0x66};
-  v4i8_b = (v4i8) {0x99 ,0x15, 0x85, 0xff};
-  v4i8_r = __builtin_mips_subuh_r_qb(v4i8_a, v4i8_b);
-// CHECK: call <4 x i8> @llvm.mips.subuh.r.qb
-}
-
-void test_eh_return_data_regno()
-{
-  volatile int res;
-  res = __builtin_eh_return_data_regno(0);  // CHECK: store volatile i32 4
-  res = __builtin_eh_return_data_regno(1);  // CHECK: store volatile i32 5
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-multiprecision.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-multiprecision.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-multiprecision.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,150 +0,0 @@
-// RUN: %clang_cc1 -triple "i686-unknown-unknown"   -emit-llvm -x c %s -o - -O3 | FileCheck %s
-// RUN: %clang_cc1 -triple "x86_64-unknown-unknown" -emit-llvm -x c %s -o - -O3 | FileCheck %s
-// RUN: %clang_cc1 -triple "x86_64-mingw32"         -emit-llvm -x c %s -o - -O3 | FileCheck %s
-
-unsigned short test_addcs(unsigned short x, unsigned short y,
-                          unsigned short carryin, unsigned short *z) {
-  // CHECK: @test_addcs
-  // CHECK: %{{.+}} = {{.*}} call { i16, i1 } @llvm.uadd.with.overflow.i16(i16 %x, i16 %y)
-  // CHECK: %{{.+}} = extractvalue { i16, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i16, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = {{.*}} call { i16, i1 } @llvm.uadd.with.overflow.i16(i16 %{{.+}}, i16 %carryin)
-  // CHECK: %{{.+}} = extractvalue { i16, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i16, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = or i1 %{{.+}}, %{{.+}}
-  // CHECK: %{{.+}} = zext i1 %{{.+}} to i16
-  // CHECK: store i16 %{{.+}}, i16* %z, align 2
-
-  unsigned short carryout;
-  *z = __builtin_addcs(x, y, carryin, &carryout);
-
-  return carryout;
-}
-
-unsigned test_addc(unsigned x, unsigned y, unsigned carryin, unsigned *z) {
-  // CHECK: @test_addc
-  // CHECK: %{{.+}} = {{.*}} call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %x, i32 %y)
-  // CHECK: %{{.+}} = extractvalue { i32, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i32, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = {{.*}} call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %{{.+}}, i32 %carryin)
-  // CHECK: %{{.+}} = extractvalue { i32, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i32, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = or i1 %{{.+}}, %{{.+}}
-  // CHECK: %{{.+}} = zext i1 %{{.+}} to i32
-  // CHECK: store i32 %{{.+}}, i32* %z, align 4
-  unsigned carryout;
-  *z = __builtin_addc(x, y, carryin, &carryout);
-
-  return carryout;
-}
-
-unsigned long test_addcl(unsigned long x, unsigned long y,
-                         unsigned long carryin, unsigned long *z) {
-  // long is i32 on i686, i64 on x86_64.
-  // CHECK: @test_addcl([[UL:i32|i64]] %x
-  // CHECK: %{{.+}} = {{.*}} call { [[UL]], i1 } @llvm.uadd.with.overflow.[[UL]]([[UL]] %x, [[UL]] %y)
-  // CHECK: %{{.+}} = extractvalue { [[UL]], i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { [[UL]], i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = {{.*}} call { [[UL]], i1 } @llvm.uadd.with.overflow.[[UL]]([[UL]] %{{.+}}, [[UL]] %carryin)
-  // CHECK: %{{.+}} = extractvalue { [[UL]], i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { [[UL]], i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = or i1 %{{.+}}, %{{.+}}
-  // CHECK: %{{.+}} = zext i1 %{{.+}} to [[UL]]
-  // CHECK: store [[UL]] %{{.+}}, [[UL]]* %z
-  unsigned long carryout;
-  *z = __builtin_addcl(x, y, carryin, &carryout);
-
-  return carryout;
-}
-
-unsigned long long test_addcll(unsigned long long x, unsigned long long y,
-                               unsigned long long carryin,
-                               unsigned long long *z) {
-  // CHECK: @test_addcll
-  // CHECK: %{{.+}} = {{.*}} call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %x, i64 %y)
-  // CHECK: %{{.+}} = extractvalue { i64, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i64, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = {{.*}} call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %{{.+}}, i64 %carryin)
-  // CHECK: %{{.+}} = extractvalue { i64, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i64, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = or i1 %{{.+}}, %{{.+}}
-  // CHECK: %{{.+}} = zext i1 %{{.+}} to i64
-  // CHECK: store i64 %{{.+}}, i64* %z
-  unsigned long long carryout;
-  *z = __builtin_addcll(x, y, carryin, &carryout);
-
-  return carryout;
-}
-
-unsigned short test_subcs(unsigned short x, unsigned short y,
-                          unsigned short carryin, unsigned short *z) {
-  // CHECK: @test_subcs
-  // CHECK: %{{.+}} = {{.*}} call { i16, i1 } @llvm.usub.with.overflow.i16(i16 %x, i16 %y)
-  // CHECK: %{{.+}} = extractvalue { i16, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i16, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = {{.*}} call { i16, i1 } @llvm.usub.with.overflow.i16(i16 %{{.+}}, i16 %carryin)
-  // CHECK: %{{.+}} = extractvalue { i16, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i16, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = or i1 %{{.+}}, %{{.+}}
-  // CHECK: %{{.+}} = zext i1 %{{.+}} to i16
-  // CHECK: store i16 %{{.+}}, i16* %z, align 2
-
-  unsigned short carryout;
-  *z = __builtin_subcs(x, y, carryin, &carryout);
-
-  return carryout;
-}
-
-unsigned test_subc(unsigned x, unsigned y, unsigned carryin, unsigned *z) {
-  // CHECK: @test_subc
-  // CHECK: %{{.+}} = {{.*}} call { i32, i1 } @llvm.usub.with.overflow.i32(i32 %x, i32 %y)
-  // CHECK: %{{.+}} = extractvalue { i32, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i32, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = {{.*}} call { i32, i1 } @llvm.usub.with.overflow.i32(i32 %{{.+}}, i32 %carryin)
-  // CHECK: %{{.+}} = extractvalue { i32, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i32, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = or i1 %{{.+}}, %{{.+}}
-  // CHECK: %{{.+}} = zext i1 %{{.+}} to i32
-  // CHECK: store i32 %{{.+}}, i32* %z, align 4
-  unsigned carryout;
-  *z = __builtin_subc(x, y, carryin, &carryout);
-
-  return carryout;
-}
-
-unsigned long test_subcl(unsigned long x, unsigned long y,
-                         unsigned long carryin, unsigned long *z) {
-  // CHECK: @test_subcl([[UL:i32|i64]] %x
-  // CHECK: %{{.+}} = {{.*}} call { [[UL]], i1 } @llvm.usub.with.overflow.[[UL]]([[UL]] %x, [[UL]] %y)
-  // CHECK: %{{.+}} = extractvalue { [[UL]], i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { [[UL]], i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = {{.*}} call { [[UL]], i1 } @llvm.usub.with.overflow.[[UL]]([[UL]] %{{.+}}, [[UL]] %carryin)
-  // CHECK: %{{.+}} = extractvalue { [[UL]], i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { [[UL]], i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = or i1 %{{.+}}, %{{.+}}
-  // CHECK: %{{.+}} = zext i1 %{{.+}} to [[UL]]
-  // CHECK: store [[UL]] %{{.+}}, [[UL]]* %z
-  unsigned long carryout;
-  *z = __builtin_subcl(x, y, carryin, &carryout);
-
-  return carryout;
-}
-
-unsigned long long test_subcll(unsigned long long x, unsigned long long y,
-                               unsigned long long carryin,
-                               unsigned long long *z) {
-  // CHECK: @test_subcll
-  // CHECK: %{{.+}} = {{.*}} call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %x, i64 %y)
-  // CHECK: %{{.+}} = extractvalue { i64, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i64, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = {{.*}} call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %{{.+}}, i64 %carryin)
-  // CHECK: %{{.+}} = extractvalue { i64, i1 } %{{.+}}, 1
-  // CHECK: %{{.+}} = extractvalue { i64, i1 } %{{.+}}, 0
-  // CHECK: %{{.+}} = or i1 %{{.+}}, %{{.+}}
-  // CHECK: %{{.+}} = zext i1 %{{.+}} to i64
-  // CHECK: store i64 %{{.+}}, i64* %z
-  unsigned long long carryout;
-  *z = __builtin_subcll(x, y, carryin, &carryout);
-
-  return carryout;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-nvptx.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-nvptx.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-nvptx.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-// REQUIRES: nvptx-registered-target
-// REQUIRES: nvptx64-registered-target
-// RUN: %clang_cc1 -triple nvptx-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple nvptx64-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s
-
-int read_tid() {
-
-// CHECK: call i32 @llvm.ptx.read.tid.x()
-// CHECK: call i32 @llvm.ptx.read.tid.y()
-// CHECK: call i32 @llvm.ptx.read.tid.z()
-// CHECK: call i32 @llvm.ptx.read.tid.w()
-
-  int x = __builtin_ptx_read_tid_x();
-  int y = __builtin_ptx_read_tid_y();
-  int z = __builtin_ptx_read_tid_z();
-  int w = __builtin_ptx_read_tid_w();
-
-  return x + y + z + w;
-
-}
-
-int read_ntid() {
-
-// CHECK: call i32 @llvm.ptx.read.ntid.x()
-// CHECK: call i32 @llvm.ptx.read.ntid.y()
-// CHECK: call i32 @llvm.ptx.read.ntid.z()
-// CHECK: call i32 @llvm.ptx.read.ntid.w()
-
-  int x = __builtin_ptx_read_ntid_x();
-  int y = __builtin_ptx_read_ntid_y();
-  int z = __builtin_ptx_read_ntid_z();
-  int w = __builtin_ptx_read_ntid_w();
-
-  return x + y + z + w;
-
-}
-
-int read_ctaid() {
-
-// CHECK: call i32 @llvm.ptx.read.ctaid.x()
-// CHECK: call i32 @llvm.ptx.read.ctaid.y()
-// CHECK: call i32 @llvm.ptx.read.ctaid.z()
-// CHECK: call i32 @llvm.ptx.read.ctaid.w()
-
-  int x = __builtin_ptx_read_ctaid_x();
-  int y = __builtin_ptx_read_ctaid_y();
-  int z = __builtin_ptx_read_ctaid_z();
-  int w = __builtin_ptx_read_ctaid_w();
-
-  return x + y + z + w;
-
-}
-
-int read_nctaid() {
-
-// CHECK: call i32 @llvm.ptx.read.nctaid.x()
-// CHECK: call i32 @llvm.ptx.read.nctaid.y()
-// CHECK: call i32 @llvm.ptx.read.nctaid.z()
-// CHECK: call i32 @llvm.ptx.read.nctaid.w()
-
-  int x = __builtin_ptx_read_nctaid_x();
-  int y = __builtin_ptx_read_nctaid_y();
-  int z = __builtin_ptx_read_nctaid_z();
-  int w = __builtin_ptx_read_nctaid_w();
-
-  return x + y + z + w;
-
-}
-
-int read_ids() {
-
-// CHECK: call i32 @llvm.ptx.read.laneid()
-// CHECK: call i32 @llvm.ptx.read.warpid()
-// CHECK: call i32 @llvm.ptx.read.nwarpid()
-// CHECK: call i32 @llvm.ptx.read.smid()
-// CHECK: call i32 @llvm.ptx.read.nsmid()
-// CHECK: call i32 @llvm.ptx.read.gridid()
-
-  int a = __builtin_ptx_read_laneid();
-  int b = __builtin_ptx_read_warpid();
-  int c = __builtin_ptx_read_nwarpid();
-  int d = __builtin_ptx_read_smid();
-  int e = __builtin_ptx_read_nsmid();
-  int f = __builtin_ptx_read_gridid();
-
-  return a + b + c + d + e + f;
-
-}
-
-int read_lanemasks() {
-
-// CHECK: call i32 @llvm.ptx.read.lanemask.eq()
-// CHECK: call i32 @llvm.ptx.read.lanemask.le()
-// CHECK: call i32 @llvm.ptx.read.lanemask.lt()
-// CHECK: call i32 @llvm.ptx.read.lanemask.ge()
-// CHECK: call i32 @llvm.ptx.read.lanemask.gt()
-
-  int a = __builtin_ptx_read_lanemask_eq();
-  int b = __builtin_ptx_read_lanemask_le();
-  int c = __builtin_ptx_read_lanemask_lt();
-  int d = __builtin_ptx_read_lanemask_ge();
-  int e = __builtin_ptx_read_lanemask_gt();
-
-  return a + b + c + d + e;
-
-}
-
-
-long read_clocks() {
-
-// CHECK: call i32 @llvm.ptx.read.clock()
-// CHECK: call i64 @llvm.ptx.read.clock64()
-
-  int a = __builtin_ptx_read_clock();
-  long b = __builtin_ptx_read_clock64();
-
-  return (long)a + b;
-
-}
-
-int read_pms() {
-
-// CHECK: call i32 @llvm.ptx.read.pm0()
-// CHECK: call i32 @llvm.ptx.read.pm1()
-// CHECK: call i32 @llvm.ptx.read.pm2()
-// CHECK: call i32 @llvm.ptx.read.pm3()
-
-  int a = __builtin_ptx_read_pm0();
-  int b = __builtin_ptx_read_pm1();
-  int c = __builtin_ptx_read_pm2();
-  int d = __builtin_ptx_read_pm3();
-
-  return a + b + c + d;
-
-}
-
-void sync() {
-
-// CHECK: call void @llvm.ptx.bar.sync(i32 0)
-
-  __builtin_ptx_bar_sync(0);
-
-}
-
-
-// NVVM intrinsics
-
-// The idea is not to test all intrinsics, just that Clang is recognizing the
-// builtins defined in BuiltinsNVPTX.def
-void nvvm_math(float f1, float f2, double d1, double d2) {
-// CHECK: call float @llvm.nvvm.fmax.f
-  float t1 = __nvvm_fmax_f(f1, f2);
-// CHECK: call float @llvm.nvvm.fmin.f
-  float t2 = __nvvm_fmin_f(f1, f2);
-// CHECK: call float @llvm.nvvm.sqrt.rn.f
-  float t3 = __nvvm_sqrt_rn_f(f1);
-// CHECK: call float @llvm.nvvm.rcp.rn.f
-  float t4 = __nvvm_rcp_rn_f(f2);
-
-// CHECK: call double @llvm.nvvm.fmax.d
-  double td1 = __nvvm_fmax_d(d1, d2);
-// CHECK: call double @llvm.nvvm.fmin.d
-  double td2 = __nvvm_fmin_d(d1, d2);
-// CHECK: call double @llvm.nvvm.sqrt.rn.d
-  double td3 = __nvvm_sqrt_rn_d(d1);
-// CHECK: call double @llvm.nvvm.rcp.rn.d
-  double td4 = __nvvm_rcp_rn_d(d2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-ppc-altivec.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-ppc-altivec.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-ppc-altivec.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3116 +0,0 @@
-// REQUIRES: ppc32-registered-target
-// RUN: %clang_cc1 -faltivec -triple powerpc-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-
-vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
-vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
-vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
-vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
-vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
-vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
-vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
-vector bool int vbi = { 1, 0, 1, 0 };
-vector int vi = { -1, 2, -3, 4 };
-vector unsigned int vui = { 1, 2, 3, 4 };
-vector float vf = { -1.5, 2.5, -3.5, 4.5 };
-
-vector bool char res_vbc;
-vector signed char res_vsc;
-vector unsigned char res_vuc;
-vector bool short res_vbs;
-vector short res_vs;
-vector unsigned short res_vus;
-vector pixel res_vp;
-vector bool int res_vbi;
-vector int res_vi;
-vector unsigned int res_vui;
-vector float res_vf;
-
-signed char param_sc;
-unsigned char param_uc;
-short param_s;
-unsigned short param_us;
-int param_i;
-unsigned int param_ui;
-float param_f;
-
-int res_sc;
-int res_uc;
-int res_s;
-int res_us;
-int res_i;
-int res_ui;
-int res_f;
-
-// CHECK: define void @test1
-void test1() {
-
-  /* vec_abs */
-  vsc = vec_abs(vsc);                           // CHECK: sub <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vmaxsb
-
-  vs = vec_abs(vs);                             // CHECK: sub <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vmaxsh
-
-  vi = vec_abs(vi);                             // CHECK: sub <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vmaxsw
-
-  vf = vec_abs(vf);                             // CHECK: and <4 x i32>
-
-  /* vec_abs */
-  vsc = vec_abss(vsc);                          // CHECK: @llvm.ppc.altivec.vsubsbs
-                                                // CHECK: @llvm.ppc.altivec.vmaxsb
-
-  vs = vec_abss(vs);                            // CHECK: @llvm.ppc.altivec.vsubshs
-                                                // CHECK: @llvm.ppc.altivec.vmaxsh
-
-  vi = vec_abss(vi);                            // CHECK: @llvm.ppc.altivec.vsubsws
-                                                // CHECK: @llvm.ppc.altivec.vmaxsw
-
-  /*  vec_add */
-  res_vsc = vec_add(vsc, vsc);                  // CHECK: add <16 x i8>
-  res_vsc = vec_add(vbc, vsc);                  // CHECK: add <16 x i8>
-  res_vsc = vec_add(vsc, vbc);                  // CHECK: add <16 x i8>
-  res_vuc = vec_add(vuc, vuc);                  // CHECK: add <16 x i8>
-  res_vuc = vec_add(vbc, vuc);                  // CHECK: add <16 x i8>
-  res_vuc = vec_add(vuc, vbc);                  // CHECK: add <16 x i8>
-  res_vs  = vec_add(vs, vs);                    // CHECK: add <8 x i16>
-  res_vs  = vec_add(vbs, vs);                   // CHECK: add <8 x i16>
-  res_vs  = vec_add(vs, vbs);                   // CHECK: add <8 x i16>
-  res_vus = vec_add(vus, vus);                  // CHECK: add <8 x i16>
-  res_vus = vec_add(vbs, vus);                  // CHECK: add <8 x i16>
-  res_vus = vec_add(vus, vbs);                  // CHECK: add <8 x i16>
-  res_vi  = vec_add(vi, vi);                    // CHECK: add <4 x i32>
-  res_vi  = vec_add(vbi, vi);                   // CHECK: add <4 x i32>
-  res_vi  = vec_add(vi, vbi);                   // CHECK: add <4 x i32>
-  res_vui = vec_add(vui, vui);                  // CHECK: add <4 x i32>
-  res_vui = vec_add(vbi, vui);                  // CHECK: add <4 x i32>
-  res_vui = vec_add(vui, vbi);                  // CHECK: add <4 x i32>
-  res_vf  = vec_add(vf, vf);                    // CHECK: fadd <4 x float>
-  res_vsc = vec_vaddubm(vsc, vsc);              // CHECK: add <16 x i8>
-  res_vsc = vec_vaddubm(vbc, vsc);              // CHECK: add <16 x i8>
-  res_vsc = vec_vaddubm(vsc, vbc);              // CHECK: add <16 x i8>
-  res_vuc = vec_vaddubm(vuc, vuc);              // CHECK: add <16 x i8>
-  res_vuc = vec_vaddubm(vbc, vuc);              // CHECK: add <16 x i8>
-  res_vuc = vec_vaddubm(vuc, vbc);              // CHECK: add <16 x i8>
-  res_vs  = vec_vadduhm(vs, vs);                // CHECK: add <8 x i16>
-  res_vs  = vec_vadduhm(vbs, vs);               // CHECK: add <8 x i16>
-  res_vs  = vec_vadduhm(vs, vbs);               // CHECK: add <8 x i16>
-  res_vus = vec_vadduhm(vus, vus);              // CHECK: add <8 x i16>
-  res_vus = vec_vadduhm(vbs, vus);              // CHECK: add <8 x i16>
-  res_vus = vec_vadduhm(vus, vbs);              // CHECK: add <8 x i16>
-  res_vi  = vec_vadduwm(vi, vi);                // CHECK: add <4 x i32>
-  res_vi  = vec_vadduwm(vbi, vi);               // CHECK: add <4 x i32>
-  res_vi  = vec_vadduwm(vi, vbi);               // CHECK: add <4 x i32>
-  res_vui = vec_vadduwm(vui, vui);              // CHECK: add <4 x i32>
-  res_vui = vec_vadduwm(vbi, vui);              // CHECK: add <4 x i32>
-  res_vui = vec_vadduwm(vui, vbi);              // CHECK: add <4 x i32>
-  res_vf  = vec_vaddfp(vf, vf);                 // CHECK: fadd <4 x float>
-
-  /* vec_addc */
-  res_vui = vec_addc(vui, vui);                 // HECK: @llvm.ppc.altivec.vaddcuw
-  res_vui = vec_vaddcuw(vui, vui);              // HECK: @llvm.ppc.altivec.vaddcuw
-
-  /* vec_adds */
-  res_vsc = vec_adds(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
-  res_vsc = vec_adds(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
-  res_vsc = vec_adds(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
-  res_vuc = vec_adds(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vaddubs
-  res_vuc = vec_adds(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vaddubs
-  res_vuc = vec_adds(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vaddubs
-  res_vs  = vec_adds(vs, vs);                   // CHECK: @llvm.ppc.altivec.vaddshs
-  res_vs  = vec_adds(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vaddshs
-  res_vs  = vec_adds(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vaddshs
-  res_vus = vec_adds(vus, vus);                 // CHECK: @llvm.ppc.altivec.vadduhs
-  res_vus = vec_adds(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vadduhs
-  res_vus = vec_adds(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vadduhs
-  res_vi  = vec_adds(vi, vi);                   // CHECK: @llvm.ppc.altivec.vaddsws
-  res_vi  = vec_adds(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vaddsws
-  res_vi  = vec_adds(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vaddsws
-  res_vui = vec_adds(vui, vui);                 // CHECK: @llvm.ppc.altivec.vadduws
-  res_vui = vec_adds(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vadduws
-  res_vui = vec_adds(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vadduws
-  res_vsc = vec_vaddsbs(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vaddsbs
-  res_vsc = vec_vaddsbs(vbc, vsc);              // CHECK: @llvm.ppc.altivec.vaddsbs
-  res_vsc = vec_vaddsbs(vsc, vbc);              // CHECK: @llvm.ppc.altivec.vaddsbs
-  res_vuc = vec_vaddubs(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vaddubs
-  res_vuc = vec_vaddubs(vbc, vuc);              // CHECK: @llvm.ppc.altivec.vaddubs
-  res_vuc = vec_vaddubs(vuc, vbc);              // CHECK: @llvm.ppc.altivec.vaddubs
-  res_vs  = vec_vaddshs(vs, vs);                // CHECK: @llvm.ppc.altivec.vaddshs
-  res_vs  = vec_vaddshs(vbs, vs);               // CHECK: @llvm.ppc.altivec.vaddshs
-  res_vs  = vec_vaddshs(vs, vbs);               // CHECK: @llvm.ppc.altivec.vaddshs
-  res_vus = vec_vadduhs(vus, vus);              // CHECK: @llvm.ppc.altivec.vadduhs
-  res_vus = vec_vadduhs(vbs, vus);              // CHECK: @llvm.ppc.altivec.vadduhs
-  res_vus = vec_vadduhs(vus, vbs);              // CHECK: @llvm.ppc.altivec.vadduhs
-  res_vi  = vec_vaddsws(vi, vi);                // CHECK: @llvm.ppc.altivec.vaddsws
-  res_vi  = vec_vaddsws(vbi, vi);               // CHECK: @llvm.ppc.altivec.vaddsws
-  res_vi  = vec_vaddsws(vi, vbi);               // CHECK: @llvm.ppc.altivec.vaddsws
-  res_vui = vec_vadduws(vui, vui);              // CHECK: @llvm.ppc.altivec.vadduws
-  res_vui = vec_vadduws(vbi, vui);              // CHECK: @llvm.ppc.altivec.vadduws
-  res_vui = vec_vadduws(vui, vbi);              // CHECK: @llvm.ppc.altivec.vadduws
-
-  /* vec_and */
-  res_vsc = vec_and(vsc, vsc);                  // CHECK: and <16 x i8>
-  res_vsc = vec_and(vbc, vsc);                  // CHECK: and <16 x i8>
-  res_vsc = vec_and(vsc, vbc);                  // CHECK: and <16 x i8>
-  res_vuc = vec_and(vuc, vuc);                  // CHECK: and <16 x i8>
-  res_vuc = vec_and(vbc, vuc);                  // CHECK: and <16 x i8>
-  res_vuc = vec_and(vuc, vbc);                  // CHECK: and <16 x i8>
-  res_vbc = vec_and(vbc, vbc);                  // CHECK: and <16 x i8>
-  res_vs  = vec_and(vs, vs);                    // CHECK: and <8 x i16>
-  res_vs  = vec_and(vbs, vs);                   // CHECK: and <8 x i16>
-  res_vs  = vec_and(vs, vbs);                   // CHECK: and <8 x i16>
-  res_vus = vec_and(vus, vus);                  // CHECK: and <8 x i16>
-  res_vus = vec_and(vbs, vus);                  // CHECK: and <8 x i16>
-  res_vus = vec_and(vus, vbs);                  // CHECK: and <8 x i16>
-  res_vbs = vec_and(vbs, vbs);                  // CHECK: and <8 x i16>
-  res_vi  = vec_and(vi, vi);                    // CHECK: and <4 x i32>
-  res_vi  = vec_and(vbi, vi);                   // CHECK: and <4 x i32>
-  res_vi  = vec_and(vi, vbi);                   // CHECK: and <4 x i32>
-  res_vui = vec_and(vui, vui);                  // CHECK: and <4 x i32>
-  res_vui = vec_and(vbi, vui);                  // CHECK: and <4 x i32>
-  res_vui = vec_and(vui, vbi);                  // CHECK: and <4 x i32>
-  res_vbi = vec_and(vbi, vbi);                  // CHECK: and <4 x i32>
-  res_vsc = vec_vand(vsc, vsc);                 // CHECK: and <16 x i8>
-  res_vsc = vec_vand(vbc, vsc);                 // CHECK: and <16 x i8>
-  res_vsc = vec_vand(vsc, vbc);                 // CHECK: and <16 x i8>
-  res_vuc = vec_vand(vuc, vuc);                 // CHECK: and <16 x i8>
-  res_vuc = vec_vand(vbc, vuc);                 // CHECK: and <16 x i8>
-  res_vuc = vec_vand(vuc, vbc);                 // CHECK: and <16 x i8>
-  res_vbc = vec_vand(vbc, vbc);                 // CHECK: and <16 x i8>
-  res_vs  = vec_vand(vs, vs);                   // CHECK: and <8 x i16>
-  res_vs  = vec_vand(vbs, vs);                  // CHECK: and <8 x i16>
-  res_vs  = vec_vand(vs, vbs);                  // CHECK: and <8 x i16>
-  res_vus = vec_vand(vus, vus);                 // CHECK: and <8 x i16>
-  res_vus = vec_vand(vbs, vus);                 // CHECK: and <8 x i16>
-  res_vus = vec_vand(vus, vbs);                 // CHECK: and <8 x i16>
-  res_vbs = vec_vand(vbs, vbs);                 // CHECK: and <8 x i16>
-  res_vi  = vec_vand(vi, vi);                   // CHECK: and <4 x i32>
-  res_vi  = vec_vand(vbi, vi);                  // CHECK: and <4 x i32>
-  res_vi  = vec_vand(vi, vbi);                  // CHECK: and <4 x i32>
-  res_vui = vec_vand(vui, vui);                 // CHECK: and <4 x i32>
-  res_vui = vec_vand(vbi, vui);                 // CHECK: and <4 x i32>
-  res_vui = vec_vand(vui, vbi);                 // CHECK: and <4 x i32>
-  res_vbi = vec_vand(vbi, vbi);                 // CHECK: and <4 x i32>
-
-  /* vec_andc */
-  res_vsc = vec_andc(vsc, vsc);                 // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vsc = vec_andc(vbc, vsc);                 // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vsc = vec_andc(vsc, vbc);                 // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vuc = vec_andc(vuc, vuc);                 // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vuc = vec_andc(vbc, vuc);                 // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vuc = vec_andc(vuc, vbc);                 // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vbc = vec_andc(vbc, vbc);                 // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vs  = vec_andc(vs, vs);                   // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vs  = vec_andc(vbs, vs);                  // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vs  = vec_andc(vs, vbs);                  // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vus = vec_andc(vus, vus);                 // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vus = vec_andc(vbs, vus);                 // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vus = vec_andc(vus, vbs);                 // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vbs = vec_andc(vbs, vbs);                 // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vi  = vec_andc(vi, vi);                   // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vi  = vec_andc(vbi, vi);                  // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vi  = vec_andc(vi, vbi);                  // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vui = vec_andc(vui, vui);                 // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vui = vec_andc(vbi, vui);                 // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vui = vec_andc(vui, vbi);                 // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vf = vec_andc(vf, vf);                    // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vf = vec_andc(vbi, vf);                   // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vf = vec_andc(vf, vbi);                   // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vsc = vec_vandc(vsc, vsc);                // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vsc = vec_vandc(vbc, vsc);                // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vsc = vec_vandc(vsc, vbc);                // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vuc = vec_vandc(vuc, vuc);                // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vuc = vec_vandc(vbc, vuc);                // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vuc = vec_vandc(vuc, vbc);                // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vbc = vec_vandc(vbc, vbc);                // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-
-  res_vs  = vec_vandc(vs, vs);                  // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vs  = vec_vandc(vbs, vs);                 // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vs  = vec_vandc(vs, vbs);                 // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vus = vec_vandc(vus, vus);                // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vus = vec_vandc(vbs, vus);                // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vus = vec_vandc(vus, vbs);                // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vbs = vec_vandc(vbs, vbs);                // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-
-  res_vi  = vec_vandc(vi, vi);                  // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vi  = vec_vandc(vbi, vi);                 // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vi  = vec_vandc(vi, vbi);                 // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vui = vec_vandc(vui, vui);                // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vui = vec_vandc(vbi, vui);                // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vui = vec_vandc(vui, vbi);                // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vf = vec_vandc(vf, vf);                   // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vf = vec_vandc(vbi, vf);                  // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-  res_vf = vec_vandc(vf, vbi);                  // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-
-}
-
-// CHECK: define void @test2
-void test2() {
-  /* vec_avg */
-  res_vsc = vec_avg(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vavgsb
-  res_vuc = vec_avg(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vavgub
-  res_vs  = vec_avg(vs, vs);                    // CHECK: @llvm.ppc.altivec.vavgsh
-  res_vus = vec_avg(vus, vus);                  // CHECK: @llvm.ppc.altivec.vavguh
-  res_vi  = vec_avg(vi, vi);                    // CHECK: @llvm.ppc.altivec.vavgsw
-  res_vui = vec_avg(vui, vui);                  // CHECK: @llvm.ppc.altivec.vavguw
-  res_vsc = vec_vavgsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vavgsb
-  res_vuc = vec_vavgub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vavgub
-  res_vs  = vec_vavgsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vavgsh
-  res_vus = vec_vavguh(vus, vus);               // CHECK: @llvm.ppc.altivec.vavguh
-  res_vi  = vec_vavgsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vavgsw
-  res_vui = vec_vavguw(vui, vui);               // CHECK: @llvm.ppc.altivec.vavguw
-
-  /* vec_ceil */
-  res_vf = vec_ceil(vf);                        // CHECK: @llvm.ppc.altivec.vrfip
-  res_vf = vec_vrfip(vf);                       // CHECK: @llvm.ppc.altivec.vrfip
-
-  /* vec_cmpb */
-  res_vi = vec_cmpb(vf, vf);                    // CHECK: @llvm.ppc.altivec.vcmpbfp
-  res_vi = vec_vcmpbfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vcmpbfp
-
-  /* vec_cmpeq */
-  res_vbc = vec_cmpeq(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpequb
-  res_vbc = vec_cmpeq(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpequb
-  res_vbs = vec_cmpeq(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh
-  res_vbs = vec_cmpeq(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpequh
-  res_vbi = vec_cmpeq(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw
-  res_vbi = vec_cmpeq(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpequw
-  res_vbi = vec_cmpeq(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp
-
-  /* vec_cmpge */
-  res_vbi = vec_cmpge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp
-  res_vbi = vec_vcmpgefp(vf, vf);               // CHECK: @llvm.ppc.altivec.vcmpgefp
-}
-
-// CHECK: define void @test5
-void test5() {
-  
-  /* vec_cmpgt */
-  res_vbc = vec_cmpgt(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpgtsb
-  res_vbc = vec_cmpgt(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpgtub
-  res_vbs = vec_cmpgt(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh
-  res_vbs = vec_cmpgt(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpgtuh
-  res_vbi = vec_cmpgt(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw
-  res_vbi = vec_cmpgt(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpgtuw
-  res_vbi = vec_cmpgt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp
-  res_vbc = vec_vcmpgtsb(vsc, vsc);             // CHECK: @llvm.ppc.altivec.vcmpgtsb
-  res_vbc = vec_vcmpgtub(vuc, vuc);             // CHECK: @llvm.ppc.altivec.vcmpgtub
-  res_vbs = vec_vcmpgtsh(vs, vs);               // CHECK: @llvm.ppc.altivec.vcmpgtsh
-  res_vbs = vec_vcmpgtuh(vus, vus);             // CHECK: @llvm.ppc.altivec.vcmpgtuh
-  res_vbi = vec_vcmpgtsw(vi, vi);               // CHECK: @llvm.ppc.altivec.vcmpgtsw
-  res_vbi = vec_vcmpgtuw(vui, vui);             // CHECK: @llvm.ppc.altivec.vcmpgtuw
-  res_vbi = vec_vcmpgtfp(vf, vf);               // CHECK: @llvm.ppc.altivec.vcmpgtfp
-
-  /* vec_cmple */
-  res_vbi = vec_cmple(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp
-}
-
-// CHECK: define void @test6
-void test6() {
-  /* vec_cmplt */
-  res_vbc = vec_cmplt(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpgtsb
-  res_vbc = vec_cmplt(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpgtub
-  res_vbs = vec_cmplt(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh
-  res_vbs = vec_cmplt(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpgtuh
-  res_vbi = vec_cmplt(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw
-  res_vbi = vec_cmplt(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpgtuw
-  res_vbi = vec_cmplt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp
-
-  /* vec_ctf */
-  res_vf  = vec_ctf(vi, param_i);               // CHECK: @llvm.ppc.altivec.vcfsx
-  res_vf  = vec_ctf(vui, 0);                    // CHECK: @llvm.ppc.altivec.vcfux
-  res_vf  = vec_vcfsx(vi, 0);                   // CHECK: @llvm.ppc.altivec.vcfsx
-  res_vf  = vec_vcfux(vui, 0);                  // CHECK: @llvm.ppc.altivec.vcfux
-
-  /* vec_cts */
-  res_vi = vec_cts(vf, 0);                      // CHECK: @llvm.ppc.altivec.vctsxs
-  res_vi = vec_vctsxs(vf, 0);                   // CHECK: @llvm.ppc.altivec.vctsxs
-
-  /* vec_ctu */
-  res_vui = vec_ctu(vf, 0);                     // CHECK: @llvm.ppc.altivec.vctuxs
-  res_vui = vec_vctuxs(vf, 0);                  // CHECK: @llvm.ppc.altivec.vctuxs
-
-  /* vec_dss */
-  vec_dss(param_i);                             // CHECK: @llvm.ppc.altivec.dss
-
-  /* vec_dssall */
-  vec_dssall();                                 // CHECK: @llvm.ppc.altivec.dssall
-
-  /* vec_dst */
-  vec_dst(&vsc, 0, 0);                          // CHECK: @llvm.ppc.altivec.dst
-
-  /* vec_dstst */
-  vec_dstst(&vs, 0, 0);                         // CHECK: @llvm.ppc.altivec.dstst
-
-  /* vec_dststt */
-  vec_dststt(&param_i, 0, 0);                   // CHECK: @llvm.ppc.altivec.dststt
-
-  /* vec_dstt */
-  vec_dstt(&vf, 0, 0);                          // CHECK: @llvm.ppc.altivec.dstt
-
-  /* vec_expte */
-  res_vf = vec_expte(vf);                       // CHECK: @llvm.ppc.altivec.vexptefp
-  res_vf = vec_vexptefp(vf);                    // CHECK: @llvm.ppc.altivec.vexptefp
-
-  /* vec_floor */
-  res_vf = vec_floor(vf);                       // CHECK: @llvm.ppc.altivec.vrfim
-  res_vf = vec_vrfim(vf);                       // CHECK: @llvm.ppc.altivec.vrfim
-
-  /* vec_ld */
-  res_vsc = vec_ld(0, &vsc);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vsc = vec_ld(0, &param_sc);               // CHECK: @llvm.ppc.altivec.lvx
-  res_vuc = vec_ld(0, &vuc);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vuc = vec_ld(0, &param_uc);               // CHECK: @llvm.ppc.altivec.lvx
-  res_vbc = vec_ld(0, &vbc);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vs  = vec_ld(0, &vs);                     // CHECK: @llvm.ppc.altivec.lvx
-  res_vs  = vec_ld(0, &param_s);                // CHECK: @llvm.ppc.altivec.lvx
-  res_vus = vec_ld(0, &vus);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vus = vec_ld(0, &param_us);               // CHECK: @llvm.ppc.altivec.lvx
-  res_vbs = vec_ld(0, &vbs);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vp  = vec_ld(0, &vp);                     // CHECK: @llvm.ppc.altivec.lvx
-  res_vi  = vec_ld(0, &vi);                     // CHECK: @llvm.ppc.altivec.lvx
-  res_vi  = vec_ld(0, &param_i);                // CHECK: @llvm.ppc.altivec.lvx
-  res_vui = vec_ld(0, &vui);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vui = vec_ld(0, &param_ui);               // CHECK: @llvm.ppc.altivec.lvx
-  res_vbi = vec_ld(0, &vbi);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vf  = vec_ld(0, &vf);                     // CHECK: @llvm.ppc.altivec.lvx
-  res_vf  = vec_ld(0, &param_f);                // CHECK: @llvm.ppc.altivec.lvx
-  res_vsc = vec_lvx(0, &vsc);                   // CHECK: @llvm.ppc.altivec.lvx
-  res_vsc = vec_lvx(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvx
-  res_vuc = vec_lvx(0, &vuc);                   // CHECK: @llvm.ppc.altivec.lvx
-  res_vuc = vec_lvx(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvx
-  res_vbc = vec_lvx(0, &vbc);                   // CHECK: @llvm.ppc.altivec.lvx
-  res_vs  = vec_lvx(0, &vs);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vs  = vec_lvx(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvx
-  res_vus = vec_lvx(0, &vus);                   // CHECK: @llvm.ppc.altivec.lvx
-  res_vus = vec_lvx(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvx
-  res_vbs = vec_lvx(0, &vbs);                   // CHECK: @llvm.ppc.altivec.lvx
-  res_vp  = vec_lvx(0, &vp);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vi  = vec_lvx(0, &vi);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vi  = vec_lvx(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvx
-  res_vui = vec_lvx(0, &vui);                   // CHECK: @llvm.ppc.altivec.lvx
-  res_vui = vec_lvx(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvx
-  res_vbi = vec_lvx(0, &vbi);                   // CHECK: @llvm.ppc.altivec.lvx
-  res_vf  = vec_lvx(0, &vf);                    // CHECK: @llvm.ppc.altivec.lvx
-  res_vf  = vec_lvx(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvx
-
-  /* vec_lde */
-  res_vsc = vec_lde(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvebx
-  res_vuc = vec_lde(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvebx
-  res_vs  = vec_lde(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvehx
-  res_vus = vec_lde(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvehx
-  res_vi  = vec_lde(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvewx
-  res_vui = vec_lde(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvewx
-  res_vf  = vec_lde(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvewx
-  res_vsc = vec_lvebx(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvebx
-  res_vuc = vec_lvebx(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvebx
-  res_vs  = vec_lvehx(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvehx
-  res_vus = vec_lvehx(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvehx
-  res_vi  = vec_lvewx(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvewx
-  res_vui = vec_lvewx(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvewx
-  res_vf  = vec_lvewx(0, &param_f);             // CHECK: @llvm.ppc.altivec.lvewx
-
-  /* vec_ldl */
-  res_vsc = vec_ldl(0, &vsc);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vsc = vec_ldl(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvxl
-  res_vuc = vec_ldl(0, &vuc);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vuc = vec_ldl(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvxl
-  res_vbc = vec_ldl(0, &vbc);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vs  = vec_ldl(0, &vs);                    // CHECK: @llvm.ppc.altivec.lvxl
-  res_vs  = vec_ldl(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvxl
-  res_vus = vec_ldl(0, &vus);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vus = vec_ldl(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvxl
-  res_vbs = vec_ldl(0, &vbs);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vp  = vec_ldl(0, &vp);                    // CHECK: @llvm.ppc.altivec.lvxl
-  res_vi  = vec_ldl(0, &vi);                    // CHECK: @llvm.ppc.altivec.lvxl
-  res_vi  = vec_ldl(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvxl
-  res_vui = vec_ldl(0, &vui);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vui = vec_ldl(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvxl
-  res_vbi = vec_ldl(0, &vbi);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vf  = vec_ldl(0, &vf);                    // CHECK: @llvm.ppc.altivec.lvxl
-  res_vf  = vec_ldl(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvxl
-  res_vsc = vec_lvxl(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvxl
-  res_vsc = vec_lvxl(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvxl
-  res_vuc = vec_lvxl(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvxl
-  res_vbc = vec_lvxl(0, &vbc);                  // CHECK: @llvm.ppc.altivec.lvxl
-  res_vuc = vec_lvxl(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvxl
-  res_vs  = vec_lvxl(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vs  = vec_lvxl(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvxl
-  res_vus = vec_lvxl(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvxl
-  res_vus = vec_lvxl(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvxl
-  res_vbs = vec_lvxl(0, &vbs);                  // CHECK: @llvm.ppc.altivec.lvxl
-  res_vp  = vec_lvxl(0, &vp);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vi  = vec_lvxl(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vi  = vec_lvxl(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvxl
-  res_vui = vec_lvxl(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvxl
-  res_vui = vec_lvxl(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvxl
-  res_vbi = vec_lvxl(0, &vbi);                  // CHECK: @llvm.ppc.altivec.lvxl
-  res_vf  = vec_lvxl(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvxl
-  res_vf  = vec_lvxl(0, &param_f);              // CHECK: @llvm.ppc.altivec.lvxl
-
-  /* vec_loge */
-  res_vf = vec_loge(vf);                        // CHECK: @llvm.ppc.altivec.vlogefp
-  res_vf = vec_vlogefp(vf);                     // CHECK: @llvm.ppc.altivec.vlogefp
-
-  /* vec_lvsl */
-  res_vuc = vec_lvsl(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvsl
-
-  /* vec_lvsr */
-  res_vuc = vec_lvsr(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvsr
-
-  /* vec_madd */
-  res_vf =vec_madd(vf, vf, vf);                 // CHECK: @llvm.ppc.altivec.vmaddfp
-  res_vf = vec_vmaddfp(vf, vf, vf);             // CHECK: @llvm.ppc.altivec.vmaddfp
-
-  /* vec_madds */
-  res_vs = vec_madds(vs, vs, vs);               // CHECK: @llvm.ppc.altivec.vmhaddshs
-  res_vs = vec_vmhaddshs(vs, vs, vs);           // CHECK: @llvm.ppc.altivec.vmhaddshs
-
-  /* vec_max */
-  res_vsc = vec_max(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
-  res_vsc = vec_max(vbc, vsc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
-  res_vsc = vec_max(vsc, vbc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
-  res_vuc = vec_max(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vmaxub
-  res_vuc = vec_max(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vmaxub
-  res_vuc = vec_max(vuc, vbc);                  // CHECK: @llvm.ppc.altivec.vmaxub
-  res_vs  = vec_max(vs, vs);                    // CHECK: @llvm.ppc.altivec.vmaxsh
-  res_vs  = vec_max(vbs, vs);                   // CHECK: @llvm.ppc.altivec.vmaxsh
-  res_vs  = vec_max(vs, vbs);                   // CHECK: @llvm.ppc.altivec.vmaxsh
-  res_vus = vec_max(vus, vus);                  // CHECK: @llvm.ppc.altivec.vmaxuh
-  res_vus = vec_max(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vmaxuh
-  res_vus = vec_max(vus, vbs);                  // CHECK: @llvm.ppc.altivec.vmaxuh
-  res_vi  = vec_max(vi, vi);                    // CHECK: @llvm.ppc.altivec.vmaxsw
-  res_vi  = vec_max(vbi, vi);                   // CHECK: @llvm.ppc.altivec.vmaxsw
-  res_vi  = vec_max(vi, vbi);                   // CHECK: @llvm.ppc.altivec.vmaxsw
-  res_vui = vec_max(vui, vui);                  // CHECK: @llvm.ppc.altivec.vmaxuw
-  res_vui = vec_max(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vmaxuw
-  res_vui = vec_max(vui, vbi);                  // CHECK: @llvm.ppc.altivec.vmaxuw
-  res_vf  = vec_max(vf, vf);                    // CHECK: @llvm.ppc.altivec.vmaxfp
-  res_vsc = vec_vmaxsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vmaxsb
-  res_vsc = vec_vmaxsb(vbc, vsc);               // CHECK: @llvm.ppc.altivec.vmaxsb
-  res_vsc = vec_vmaxsb(vsc, vbc);               // CHECK: @llvm.ppc.altivec.vmaxsb
-  res_vuc = vec_vmaxub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vmaxub
-  res_vuc = vec_vmaxub(vbc, vuc);               // CHECK: @llvm.ppc.altivec.vmaxub
-  res_vuc = vec_vmaxub(vuc, vbc);               // CHECK: @llvm.ppc.altivec.vmaxub
-  res_vs  = vec_vmaxsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vmaxsh
-  res_vs  = vec_vmaxsh(vbs, vs);                // CHECK: @llvm.ppc.altivec.vmaxsh
-  res_vs  = vec_vmaxsh(vs, vbs);                // CHECK: @llvm.ppc.altivec.vmaxsh
-  res_vus = vec_vmaxuh(vus, vus);               // CHECK: @llvm.ppc.altivec.vmaxuh
-  res_vus = vec_vmaxuh(vbs, vus);               // CHECK: @llvm.ppc.altivec.vmaxuh
-  res_vus = vec_vmaxuh(vus, vbs);               // CHECK: @llvm.ppc.altivec.vmaxuh
-  res_vi  = vec_vmaxsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vmaxsw
-  res_vi  = vec_vmaxsw(vbi, vi);                // CHECK: @llvm.ppc.altivec.vmaxsw
-  res_vi  = vec_vmaxsw(vi, vbi);                // CHECK: @llvm.ppc.altivec.vmaxsw
-  res_vui = vec_vmaxuw(vui, vui);               // CHECK: @llvm.ppc.altivec.vmaxuw
-  res_vui = vec_vmaxuw(vbi, vui);               // CHECK: @llvm.ppc.altivec.vmaxuw
-  res_vui = vec_vmaxuw(vui, vbi);               // CHECK: @llvm.ppc.altivec.vmaxuw
-  res_vf  = vec_vmaxfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vmaxfp
-
-  /* vec_mergeh */
-  res_vsc = vec_mergeh(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_mergeh(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_mergeh(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_mergeh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_mergeh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_mergeh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_mergeh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_mergeh(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_mergeh(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbi = vec_mergeh(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_mergeh(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vsc = vec_vmrghb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_vmrghb(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_vmrghb(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_vmrghh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_vmrghh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_vmrghh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_vmrghh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_vmrghw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_vmrghw(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbi = vec_vmrghw(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_vmrghw(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_mergel */
-  res_vsc = vec_mergel(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_mergel(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_mergel(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_mergel(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_mergeh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_mergel(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_mergel(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_mergel(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_mergel(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbi = vec_mergel(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_mergel(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vsc = vec_vmrglb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_vmrglb(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_vmrglb(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_vmrglh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_vmrglh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_vmrglh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_vmrglh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_vmrglw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_vmrglw(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vbi = vec_vmrglw(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_vmrglw(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_mfvscr */
-  vus = vec_mfvscr();                           // CHECK: @llvm.ppc.altivec.mfvscr
-
-  /* vec_min */
-  res_vsc = vec_min(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vminsb
-  res_vsc = vec_min(vbc, vsc);                  // CHECK: @llvm.ppc.altivec.vminsb
-  res_vsc = vec_min(vsc, vbc);                  // CHECK: @llvm.ppc.altivec.vminsb
-  res_vuc = vec_min(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vminub
-  res_vuc = vec_min(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vminub
-  res_vuc = vec_min(vuc, vbc);                  // CHECK: @llvm.ppc.altivec.vminub
-  res_vs  = vec_min(vs, vs);                    // CHECK: @llvm.ppc.altivec.vminsh
-  res_vs  = vec_min(vbs, vs);                   // CHECK: @llvm.ppc.altivec.vminsh
-  res_vs  = vec_min(vs, vbs);                   // CHECK: @llvm.ppc.altivec.vminsh
-  res_vus = vec_min(vus, vus);                  // CHECK: @llvm.ppc.altivec.vminuh
-  res_vus = vec_min(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vminuh
-  res_vus = vec_min(vus, vbs);                  // CHECK: @llvm.ppc.altivec.vminuh
-  res_vi  = vec_min(vi, vi);                    // CHECK: @llvm.ppc.altivec.vminsw
-  res_vi  = vec_min(vbi, vi);                   // CHECK: @llvm.ppc.altivec.vminsw
-  res_vi  = vec_min(vi, vbi);                   // CHECK: @llvm.ppc.altivec.vminsw
-  res_vui = vec_min(vui, vui);                  // CHECK: @llvm.ppc.altivec.vminuw
-  res_vui = vec_min(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vminuw
-  res_vui = vec_min(vui, vbi);                  // CHECK: @llvm.ppc.altivec.vminuw
-  res_vf  = vec_min(vf, vf);                    // CHECK: @llvm.ppc.altivec.vminfp
-  res_vsc = vec_vminsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vminsb
-  res_vsc = vec_vminsb(vbc, vsc);               // CHECK: @llvm.ppc.altivec.vminsb
-  res_vsc = vec_vminsb(vsc, vbc);               // CHECK: @llvm.ppc.altivec.vminsb
-  res_vuc = vec_vminub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vminub
-  res_vuc = vec_vminub(vbc, vuc);               // CHECK: @llvm.ppc.altivec.vminub
-  res_vuc = vec_vminub(vuc, vbc);               // CHECK: @llvm.ppc.altivec.vminub
-  res_vs  = vec_vminsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vminsh
-  res_vs  = vec_vminsh(vbs, vs);                // CHECK: @llvm.ppc.altivec.vminsh
-  res_vs  = vec_vminsh(vs, vbs);                // CHECK: @llvm.ppc.altivec.vminsh
-  res_vus = vec_vminuh(vus, vus);               // CHECK: @llvm.ppc.altivec.vminuh
-  res_vus = vec_vminuh(vbs, vus);               // CHECK: @llvm.ppc.altivec.vminuh
-  res_vus = vec_vminuh(vus, vbs);               // CHECK: @llvm.ppc.altivec.vminuh
-  res_vi  = vec_vminsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vminsw
-  res_vi  = vec_vminsw(vbi, vi);                // CHECK: @llvm.ppc.altivec.vminsw
-  res_vi  = vec_vminsw(vi, vbi);                // CHECK: @llvm.ppc.altivec.vminsw
-  res_vui = vec_vminuw(vui, vui);               // CHECK: @llvm.ppc.altivec.vminuw
-  res_vui = vec_vminuw(vbi, vui);               // CHECK: @llvm.ppc.altivec.vminuw
-  res_vui = vec_vminuw(vui, vbi);               // CHECK: @llvm.ppc.altivec.vminuw
-  res_vf  = vec_vminfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vminfp
-
-  /* vec_mladd */
-  res_vus = vec_mladd(vus, vus, vus);           // CHECK: mul <8 x i16>
-                                                // CHECK: add <8 x i16>
-
-  res_vs = vec_mladd(vus, vs, vs);              // CHECK: mul <8 x i16>
-                                                // CHECK: add <8 x i16>
-
-  res_vs = vec_mladd(vs, vus, vus);             // CHECK: mul <8 x i16>
-                                                // CHECK: add <8 x i16>
-
-  res_vs = vec_mladd(vs, vs, vs);               // CHECK: mul <8 x i16>
-                                                // CHECK: add <8 x i16>
-
-  /* vec_mradds */
-  res_vs = vec_mradds(vs, vs, vs);              // CHECK: @llvm.ppc.altivec.vmhraddshs
-  res_vs = vec_vmhraddshs(vs, vs, vs);          // CHECK: @llvm.ppc.altivec.vmhraddshs
- 
-  /* vec_msum */
-  res_vi  = vec_msum(vsc, vuc, vi);             // CHECK: @llvm.ppc.altivec.vmsummbm
-  res_vui = vec_msum(vuc, vuc, vui);            // CHECK: @llvm.ppc.altivec.vmsumubm
-  res_vi  = vec_msum(vs, vs, vi);               // CHECK: @llvm.ppc.altivec.vmsumshm
-  res_vui = vec_msum(vus, vus, vui);            // CHECK: @llvm.ppc.altivec.vmsumuhm
-  res_vi  = vec_vmsummbm(vsc, vuc, vi);         // CHECK: @llvm.ppc.altivec.vmsummbm
-  res_vui = vec_vmsumubm(vuc, vuc, vui);        // CHECK: @llvm.ppc.altivec.vmsumubm
-  res_vi  = vec_vmsumshm(vs, vs, vi);           // CHECK: @llvm.ppc.altivec.vmsumshm
-  res_vui = vec_vmsumuhm(vus, vus, vui);        // CHECK: @llvm.ppc.altivec.vmsumuhm
-
-  /* vec_msums */
-  res_vi  = vec_msums(vs, vs, vi);              // CHECK: @llvm.ppc.altivec.vmsumshs
-  res_vui = vec_msums(vus, vus, vui);           // CHECK: @llvm.ppc.altivec.vmsumuhs
-  res_vi  = vec_vmsumshs(vs, vs, vi);           // CHECK: @llvm.ppc.altivec.vmsumshs
-  res_vui = vec_vmsumuhs(vus, vus, vui);        // CHECK: @llvm.ppc.altivec.vmsumuhs
-
-  /* vec_mtvscr */
-  vec_mtvscr(vsc);                              // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vuc);                              // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vbc);                              // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vs);                               // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vus);                              // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vbs);                              // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vp);                               // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vi);                               // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vui);                              // CHECK: @llvm.ppc.altivec.mtvscr
-  vec_mtvscr(vbi);                              // CHECK: @llvm.ppc.altivec.mtvscr
-
-  /* vec_mule */
-  res_vs  = vec_mule(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vmulesb
-  res_vus = vec_mule(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vmuleub
-  res_vi  = vec_mule(vs, vs);                   // CHECK: @llvm.ppc.altivec.vmulesh
-  res_vui = vec_mule(vus, vus);                 // CHECK: @llvm.ppc.altivec.vmuleuh
-  res_vs  = vec_vmulesb(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vmulesb
-  res_vus = vec_vmuleub(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vmuleub
-  res_vi  = vec_vmulesh(vs, vs);                // CHECK: @llvm.ppc.altivec.vmulesh
-  res_vui = vec_vmuleuh(vus, vus);              // CHECK: @llvm.ppc.altivec.vmuleuh
-
-  /* vec_mulo */
-  res_vs  = vec_mulo(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vmulosb
-  res_vus = vec_mulo(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vmuloub
-  res_vi  = vec_mulo(vs, vs);                   // CHECK: @llvm.ppc.altivec.vmulosh
-  res_vui = vec_mulo(vus, vus);                 // CHECK: @llvm.ppc.altivec.vmulouh
-  res_vs  = vec_vmulosb(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vmulosb
-  res_vus = vec_vmuloub(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vmuloub
-  res_vi  = vec_vmulosh(vs, vs);                // CHECK: @llvm.ppc.altivec.vmulosh
-  res_vui = vec_vmulouh(vus, vus);              // CHECK: @llvm.ppc.altivec.vmulouh
-
-  /* vec_nmsub */
-  res_vf = vec_nmsub(vf, vf, vf);               // CHECK: @llvm.ppc.altivec.vnmsubfp
-  res_vf = vec_vnmsubfp(vf, vf, vf);            // CHECK: @llvm.ppc.altivec.vnmsubfp
-
-  /* vec_nor */
-  res_vsc = vec_nor(vsc, vsc);                  // CHECK: or <16 x i8>
-                                                // CHECK: xor <16 x i8>
-
-  res_vuc = vec_nor(vuc, vuc);                  // CHECK: or <16 x i8>
-                                                // CHECK: xor <16 x i8>
-
-  res_vuc = vec_nor(vbc, vbc);                  // CHECK: or <16 x i8>
-                                                // CHECK: xor <16 x i8>
-
-  res_vs  = vec_nor(vs, vs);                    // CHECK: or <8 x i16>
-                                                // CHECK: xor <8 x i16>
-
-  res_vus = vec_nor(vus, vus);                  // CHECK: or <8 x i16>
-                                                // CHECK: xor <8 x i16>
-
-  res_vus = vec_nor(vbs, vbs);                  // CHECK: or <8 x i16>
-                                                // CHECK: xor <8 x i16>
-
-  res_vi  = vec_nor(vi, vi);                    // CHECK: or <4 x i32>
-                                                // CHECK: xor <4 x i32>
-
-  res_vui = vec_nor(vui, vui);                  // CHECK: or <4 x i32>
-                                                // CHECK: xor <4 x i32>
-
-  res_vui = vec_nor(vbi, vbi);                  // CHECK: or <4 x i32>
-                                                // CHECK: xor <4 x i32>
-
-  res_vf  = vec_nor(vf, vf);                    // CHECK: or <4 x i32>
-                                                // CHECK: xor <4 x i32>
-
-  res_vsc = vec_vnor(vsc, vsc);                 // CHECK: or <16 x i8>
-                                                // CHECK: xor <16 x i8>
-
-  res_vuc = vec_vnor(vuc, vuc);                 // CHECK: or <16 x i8>
-                                                // CHECK: xor <16 x i8>
-
-  res_vuc = vec_vnor(vbc, vbc);                 // CHECK: or <16 x i8>
-                                                // CHECK: xor <16 x i8>
-
-  res_vs  = vec_vnor(vs, vs);                   // CHECK: or <8 x i16>
-                                                // CHECK: xor <8 x i16>
-
-  res_vus = vec_vnor(vus, vus);                 // CHECK: or <8 x i16>
-                                                // CHECK: xor <8 x i16>
-
-  res_vus = vec_vnor(vbs, vbs);                 // CHECK: or <8 x i16>
-                                                // CHECK: xor <8 x i16>
-
-  res_vi  = vec_vnor(vi, vi);                   // CHECK: or <4 x i32>
-                                                // CHECK: xor <4 x i32>
-
-  res_vui = vec_vnor(vui, vui);                 // CHECK: or <4 x i32>
-                                                // CHECK: xor <4 x i32>
-
-  res_vui = vec_vnor(vbi, vbi);                 // CHECK: or <4 x i32>
-                                                // CHECK: xor <4 x i32>
-
-  res_vf  = vec_vnor(vf, vf);                   // CHECK: or <4 x i32>
-                                                // CHECK: xor <4 x i32>
-
-  /* vec_or */
-  res_vsc = vec_or(vsc, vsc);                   // CHECK: or <16 x i8>
-  res_vsc = vec_or(vbc, vsc);                   // CHECK: or <16 x i8>
-  res_vsc = vec_or(vsc, vbc);                   // CHECK: or <16 x i8>
-  res_vuc = vec_or(vuc, vuc);                   // CHECK: or <16 x i8>
-  res_vuc = vec_or(vbc, vuc);                   // CHECK: or <16 x i8>
-  res_vuc = vec_or(vuc, vbc);                   // CHECK: or <16 x i8>
-  res_vbc = vec_or(vbc, vbc);                   // CHECK: or <16 x i8>
-  res_vs  = vec_or(vs, vs);                     // CHECK: or <8 x i16>
-  res_vs  = vec_or(vbs, vs);                    // CHECK: or <8 x i16>
-  res_vs  = vec_or(vs, vbs);                    // CHECK: or <8 x i16>
-  res_vus = vec_or(vus, vus);                   // CHECK: or <8 x i16>
-  res_vus = vec_or(vbs, vus);                   // CHECK: or <8 x i16>
-  res_vus = vec_or(vus, vbs);                   // CHECK: or <8 x i16>
-  res_vbs = vec_or(vbs, vbs);                   // CHECK: or <8 x i16>
-  res_vi  = vec_or(vi, vi);                     // CHECK: or <4 x i32>
-  res_vi  = vec_or(vbi, vi);                    // CHECK: or <4 x i32>
-  res_vi  = vec_or(vi, vbi);                    // CHECK: or <4 x i32>
-  res_vui = vec_or(vui, vui);                   // CHECK: or <4 x i32>
-  res_vui = vec_or(vbi, vui);                   // CHECK: or <4 x i32>
-  res_vui = vec_or(vui, vbi);                   // CHECK: or <4 x i32>
-  res_vbi = vec_or(vbi, vbi);                   // CHECK: or <4 x i32>
-  res_vf  = vec_or(vf, vf);                     // CHECK: or <4 x i32>
-  res_vf  = vec_or(vbi, vf);                    // CHECK: or <4 x i32>
-  res_vf  = vec_or(vf, vbi);                    // CHECK: or <4 x i32>
-  res_vsc = vec_vor(vsc, vsc);                  // CHECK: or <16 x i8>
-  res_vsc = vec_vor(vbc, vsc);                  // CHECK: or <16 x i8>
-  res_vsc = vec_vor(vsc, vbc);                  // CHECK: or <16 x i8>
-  res_vuc = vec_vor(vuc, vuc);                  // CHECK: or <16 x i8>
-  res_vuc = vec_vor(vbc, vuc);                  // CHECK: or <16 x i8>
-  res_vuc = vec_vor(vuc, vbc);                  // CHECK: or <16 x i8>
-  res_vbc = vec_vor(vbc, vbc);                  // CHECK: or <16 x i8>
-  res_vs  = vec_vor(vs, vs);                    // CHECK: or <8 x i16>
-  res_vs  = vec_vor(vbs, vs);                   // CHECK: or <8 x i16>
-  res_vs  = vec_vor(vs, vbs);                   // CHECK: or <8 x i16>
-  res_vus = vec_vor(vus, vus);                  // CHECK: or <8 x i16>
-  res_vus = vec_vor(vbs, vus);                  // CHECK: or <8 x i16>
-  res_vus = vec_vor(vus, vbs);                  // CHECK: or <8 x i16>
-  res_vbs = vec_vor(vbs, vbs);                  // CHECK: or <8 x i16>
-  res_vi  = vec_vor(vi, vi);                    // CHECK: or <4 x i32>
-  res_vi  = vec_vor(vbi, vi);                   // CHECK: or <4 x i32>
-  res_vi  = vec_vor(vi, vbi);                   // CHECK: or <4 x i32>
-  res_vui = vec_vor(vui, vui);                  // CHECK: or <4 x i32>
-  res_vui = vec_vor(vbi, vui);                  // CHECK: or <4 x i32>
-  res_vui = vec_vor(vui, vbi);                  // CHECK: or <4 x i32>
-  res_vbi = vec_vor(vbi, vbi);                  // CHECK: or <4 x i32>
-  res_vf  = vec_vor(vf, vf);                    // CHECK: or <4 x i32>
-  res_vf  = vec_vor(vbi, vf);                   // CHECK: or <4 x i32>
-  res_vf  = vec_vor(vf, vbi);                   // CHECK: or <4 x i32>
-
-  /* vec_pack */
-  res_vsc = vec_pack(vs, vs);                   // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_pack(vus, vus);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_pack(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_pack(vi, vi);                   // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_pack(vui, vui);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_pack(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vsc = vec_vpkuhum(vs, vs);                // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_vpkuhum(vus, vus);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_vpkuhum(vbs, vbs);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_vpkuwum(vi, vi);                // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_vpkuwum(vui, vui);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_vpkuwum(vbi, vbi);              // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_packpx */
-  res_vp = vec_packpx(vui, vui);                // CHECK: @llvm.ppc.altivec.vpkpx
-  res_vp = vec_vpkpx(vui, vui);                 // CHECK: @llvm.ppc.altivec.vpkpx
-
-  /* vec_packs */
-  res_vsc = vec_packs(vs, vs);                  // CHECK: @llvm.ppc.altivec.vpkshss
-  res_vuc = vec_packs(vus, vus);                // CHECK: @llvm.ppc.altivec.vpkuhus
-  res_vs  = vec_packs(vi, vi);                  // CHECK: @llvm.ppc.altivec.vpkswss
-  res_vus = vec_packs(vui, vui);                // CHECK: @llvm.ppc.altivec.vpkuwus
-  res_vsc = vec_vpkshss(vs, vs);                // CHECK: @llvm.ppc.altivec.vpkshss
-  res_vuc = vec_vpkuhus(vus, vus);              // CHECK: @llvm.ppc.altivec.vpkuhus
-  res_vs  = vec_vpkswss(vi, vi);                // CHECK: @llvm.ppc.altivec.vpkswss
-  res_vus = vec_vpkuwus(vui, vui);              // CHECK: @llvm.ppc.altivec.vpkuwus
-
-  /* vec_packsu */
-  res_vuc = vec_packsu(vs, vs);                 // CHECK: @llvm.ppc.altivec.vpkshus
-  res_vuc = vec_packsu(vus, vus);               // CHECK: @llvm.ppc.altivec.vpkuhus
-  res_vus = vec_packsu(vi, vi);                 // CHECK: @llvm.ppc.altivec.vpkswus
-  res_vus = vec_packsu(vui, vui);               // CHECK: @llvm.ppc.altivec.vpkuwus
-  res_vuc = vec_vpkshus(vs, vs);                // CHECK: @llvm.ppc.altivec.vpkshus
-  res_vuc = vec_vpkshus(vus, vus);              // CHECK: @llvm.ppc.altivec.vpkuhus
-  res_vus = vec_vpkswus(vi, vi);                // CHECK: @llvm.ppc.altivec.vpkswus
-  res_vus = vec_vpkswus(vui, vui);              // CHECK: @llvm.ppc.altivec.vpkuwus
-
-  /* vec_perm */
-  res_vsc = vec_perm(vsc, vsc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_perm(vuc, vuc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_perm(vbc, vbc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_perm(vs, vs, vuc);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_perm(vus, vus, vuc);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_perm(vbs, vbs, vuc);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_perm(vp, vp, vuc);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_perm(vi, vi, vuc);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_perm(vui, vui, vuc);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vbi = vec_perm(vbi, vbi, vuc);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_perm(vf, vf, vuc);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vsc = vec_vperm(vsc, vsc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_vperm(vuc, vuc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_vperm(vbc, vbc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_vperm(vs, vs, vuc);             // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_vperm(vus, vus, vuc);           // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_vperm(vbs, vbs, vuc);           // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_vperm(vp, vp, vuc);             // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_vperm(vi, vi, vuc);             // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_vperm(vui, vui, vuc);           // CHECK: @llvm.ppc.altivec.vperm
-  res_vbi = vec_vperm(vbi, vbi, vuc);           // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_vperm(vf, vf, vuc);             // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_re */
-  res_vf = vec_re(vf);                          // CHECK: @llvm.ppc.altivec.vrefp
-  res_vf = vec_vrefp(vf);                       // CHECK: @llvm.ppc.altivec.vrefp
-
-  /* vec_rl */
-  res_vsc = vec_rl(vsc, vuc);                   // CHECK: @llvm.ppc.altivec.vrlb
-  res_vuc = vec_rl(vuc, vuc);                   // CHECK: @llvm.ppc.altivec.vrlb
-  res_vs  = vec_rl(vs, vus);                    // CHECK: @llvm.ppc.altivec.vrlh
-  res_vus = vec_rl(vus, vus);                   // CHECK: @llvm.ppc.altivec.vrlh
-  res_vi  = vec_rl(vi, vui);                    // CHECK: @llvm.ppc.altivec.vrlw
-  res_vui = vec_rl(vui, vui);                   // CHECK: @llvm.ppc.altivec.vrlw
-  res_vsc = vec_vrlb(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vrlb
-  res_vuc = vec_vrlb(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vrlb
-  res_vs  = vec_vrlh(vs, vus);                  // CHECK: @llvm.ppc.altivec.vrlh
-  res_vus = vec_vrlh(vus, vus);                 // CHECK: @llvm.ppc.altivec.vrlh
-  res_vi  = vec_vrlw(vi, vui);                  // CHECK: @llvm.ppc.altivec.vrlw
-  res_vui = vec_vrlw(vui, vui);                 // CHECK: @llvm.ppc.altivec.vrlw
-
-  /* vec_round */
-  res_vf = vec_round(vf);                       // CHECK: @llvm.ppc.altivec.vrfin
-  res_vf = vec_vrfin(vf);                       // CHECK: @llvm.ppc.altivec.vrfin
-
-  /* vec_rsqrte */
-  res_vf = vec_rsqrte(vf);                      // CHECK: @llvm.ppc.altivec.vrsqrtefp
-  res_vf = vec_vrsqrtefp(vf);                   // CHECK: @llvm.ppc.altivec.vrsqrtefp
-
-  /* vec_sel */
-  res_vsc = vec_sel(vsc, vsc, vuc);             // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vsc = vec_sel(vsc, vsc, vbc);             // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vuc = vec_sel(vuc, vuc, vuc);             // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vuc = vec_sel(vuc, vuc, vbc);             // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vbc = vec_sel(vbc, vbc, vuc);             // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vbc = vec_sel(vbc, vbc, vbc);             // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vs  = vec_sel(vs, vs, vus);               // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vs  = vec_sel(vs, vs, vbs);               // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vus = vec_sel(vus, vus, vus);             // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vus = vec_sel(vus, vus, vbs);             // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vbs = vec_sel(vbs, vbs, vus);             // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vbs = vec_sel(vbs, vbs, vbs);             // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vi  = vec_sel(vi, vi, vui);               // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vi  = vec_sel(vi, vi, vbi);               // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vui = vec_sel(vui, vui, vui);             // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vui = vec_sel(vui, vui, vbi);             // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vbi = vec_sel(vbi, vbi, vui);             // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vbi = vec_sel(vbi, vbi, vbi);             // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vf  = vec_sel(vf, vf, vui);               // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vf  = vec_sel(vf, vf, vbi);               // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vsc = vec_vsel(vsc, vsc, vuc);            // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vsc = vec_vsel(vsc, vsc, vbc);            // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vuc = vec_vsel(vuc, vuc, vuc);            // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vuc = vec_vsel(vuc, vuc, vbc);            // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vbc = vec_vsel(vbc, vbc, vuc);            // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vbc = vec_vsel(vbc, vbc, vbc);            // CHECK: xor <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: and <16 x i8>
-                                                // CHECK: or <16 x i8>
-
-  res_vs  = vec_vsel(vs, vs, vus);              // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vs  = vec_vsel(vs, vs, vbs);              // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vus = vec_vsel(vus, vus, vus);            // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vus = vec_vsel(vus, vus, vbs);            // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vbs = vec_vsel(vbs, vbs, vus);            // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vbs = vec_vsel(vbs, vbs, vbs);            // CHECK: xor <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: and <8 x i16>
-                                                // CHECK: or <8 x i16>
-
-  res_vi  = vec_vsel(vi, vi, vui);              // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vi  = vec_vsel(vi, vi, vbi);              // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vui = vec_vsel(vui, vui, vui);            // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vui = vec_vsel(vui, vui, vbi);            // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vbi = vec_vsel(vbi, vbi, vui);            // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vbi = vec_vsel(vbi, vbi, vbi);            // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vf  = vec_vsel(vf, vf, vui);              // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  res_vf  = vec_vsel(vf, vf, vbi);              // CHECK: xor <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: and <4 x i32>
-                                                // CHECK: or <4 x i32>
-
-  /* vec_sl */
-  res_vsc = vec_sl(vsc, vuc);                   // CHECK: shl <16 x i8>
-  res_vuc = vec_sl(vuc, vuc);                   // CHECK: shl <16 x i8>
-  res_vs  = vec_sl(vs, vus);                    // CHECK: shl <8 x i16>
-  res_vus = vec_sl(vus, vus);                   // CHECK: shl <8 x i16>
-  res_vi  = vec_sl(vi, vui);                    // CHECK: shl <4 x i32>
-  res_vui = vec_sl(vui, vui);                   // CHECK: shl <4 x i32>
-  res_vsc = vec_vslb(vsc, vuc);                 // CHECK: shl <16 x i8>
-  res_vuc = vec_vslb(vuc, vuc);                 // CHECK: shl <16 x i8>
-  res_vs  = vec_vslh(vs, vus);                  // CHECK: shl <8 x i16>
-  res_vus = vec_vslh(vus, vus);                 // CHECK: shl <8 x i16>
-  res_vi  = vec_vslw(vi, vui);                  // CHECK: shl <4 x i32>
-  res_vui = vec_vslw(vui, vui);                 // CHECK: shl <4 x i32>
-
-  /* vec_sld */
-  res_vsc = vec_sld(vsc, vsc, 0);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_sld(vuc, vuc, 0);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_sld(vs, vs, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_sld(vus, vus, 0);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_sld(vp, vp, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_sld(vi, vi, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_sld(vui, vui, 0);               // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_sld(vf, vf, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vsc = vec_vsldoi(vsc, vsc, 0);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_vsldoi(vuc, vuc, 0);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_vsldoi(vs, vs, 0);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_vsldoi(vus, vus, 0);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_vsldoi(vp, vp, 0);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_vsldoi(vi, vi, 0);              // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_vsldoi(vui, vui, 0);            // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_vsldoi(vf, vf, 0);              // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_sll */
-  res_vsc = vec_sll(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vsc = vec_sll(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vsc = vec_sll(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vuc = vec_sll(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vuc = vec_sll(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vuc = vec_sll(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbc = vec_sll(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbc = vec_sll(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbc = vec_sll(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vs  = vec_sll(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vs  = vec_sll(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vs  = vec_sll(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vus = vec_sll(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vus = vec_sll(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vus = vec_sll(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbs = vec_sll(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbs = vec_sll(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbs = vec_sll(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vp  = vec_sll(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vp  = vec_sll(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vp  = vec_sll(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vi  = vec_sll(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vi  = vec_sll(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vi  = vec_sll(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vui = vec_sll(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vui = vec_sll(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vui = vec_sll(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbi = vec_sll(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbi = vec_sll(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbi = vec_sll(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vsc = vec_vsl(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vsc = vec_vsl(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vsc = vec_vsl(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vuc = vec_vsl(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vuc = vec_vsl(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vuc = vec_vsl(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbc = vec_vsl(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbc = vec_vsl(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbc = vec_vsl(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vs  = vec_vsl(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vs  = vec_vsl(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vs  = vec_vsl(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vus = vec_vsl(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vus = vec_vsl(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vus = vec_vsl(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbs = vec_vsl(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbs = vec_vsl(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbs = vec_vsl(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vp  = vec_vsl(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vp  = vec_vsl(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vp  = vec_vsl(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vi  = vec_vsl(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vi  = vec_vsl(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vi  = vec_vsl(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsl
-  res_vui = vec_vsl(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vui = vec_vsl(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vui = vec_vsl(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbi = vec_vsl(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbi = vec_vsl(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsl
-  res_vbi = vec_vsl(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsl
-
-  /* vec_slo */
-  res_vsc = vec_slo(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vsc = vec_slo(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vuc = vec_slo(vuc, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vuc = vec_slo(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vs  = vec_slo(vs, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
-  res_vs  = vec_slo(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
-  res_vus = vec_slo(vus, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vus = vec_slo(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vp  = vec_slo(vp, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
-  res_vp  = vec_slo(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
-  res_vi  = vec_slo(vi, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
-  res_vi  = vec_slo(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
-  res_vui = vec_slo(vui, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vui = vec_slo(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vf  = vec_slo(vf, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
-  res_vf  = vec_slo(vf, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
-  res_vsc = vec_vslo(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
-  res_vsc = vec_vslo(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
-  res_vuc = vec_vslo(vuc, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
-  res_vuc = vec_vslo(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
-  res_vs  = vec_vslo(vs, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vs  = vec_vslo(vs, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vus = vec_vslo(vus, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
-  res_vus = vec_vslo(vus, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
-  res_vp  = vec_vslo(vp, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vp  = vec_vslo(vp, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vi  = vec_vslo(vi, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vi  = vec_vslo(vi, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vui = vec_vslo(vui, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
-  res_vui = vec_vslo(vui, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
-  res_vf  = vec_vslo(vf, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
-  res_vf  = vec_vslo(vf, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
-
-  /* vec_splat */
-  res_vsc = vec_splat(vsc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_splat(vuc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_splat(vbc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_splat(vs, 0);                   // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_splat(vus, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_splat(vbs, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_splat(vp, 0);                   // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_splat(vi, 0);                   // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_splat(vui, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vbi = vec_splat(vbi, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_splat(vf, 0);                   // CHECK: @llvm.ppc.altivec.vperm
-  res_vsc = vec_vspltb(vsc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vuc = vec_vspltb(vuc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vbc = vec_vspltb(vbc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vs  = vec_vsplth(vs, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vus = vec_vsplth(vus, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vbs = vec_vsplth(vbs, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vp  = vec_vsplth(vp, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vi  = vec_vspltw(vi, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-  res_vui = vec_vspltw(vui, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vbi = vec_vspltw(vbi, 0);                 // CHECK: @llvm.ppc.altivec.vperm
-  res_vf  = vec_vspltw(vf, 0);                  // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_splat_s8 */
-  res_vsc = vec_splat_s8(0x09);                 // TODO: add check
-  res_vsc = vec_vspltisb(0x09);                 // TODO: add check
-
-  /* vec_splat_s16 */
-  res_vs = vec_splat_s16(0x09);                 // TODO: add check
-  res_vs = vec_vspltish(0x09);                  // TODO: add check
-
-  /* vec_splat_s32 */
-  res_vi = vec_splat_s32(0x09);                 // TODO: add check
-  res_vi = vec_vspltisw(0x09);                  // TODO: add check
-
-  /* vec_splat_u8 */
-  res_vuc = vec_splat_u8(0x09);                 // TODO: add check
-
-  /* vec_splat_u16 */
-  res_vus = vec_splat_u16(0x09);                // TODO: add check
-
-  /* vec_splat_u32 */
-  res_vui = vec_splat_u32(0x09);                // TODO: add check
-
-  /* vec_sr */
-  res_vsc = vec_sr(vsc, vuc);                   // CHECK: shr <16 x i8>
-  res_vuc = vec_sr(vuc, vuc);                   // CHECK: shr <16 x i8>
-  res_vs  = vec_sr(vs, vus);                    // CHECK: shr <8 x i16>
-  res_vus = vec_sr(vus, vus);                   // CHECK: shr <8 x i16>
-  res_vi  = vec_sr(vi, vui);                    // CHECK: shr <4 x i32>
-  res_vui = vec_sr(vui, vui);                   // CHECK: shr <4 x i32>
-  res_vsc = vec_vsrb(vsc, vuc);                 // CHECK: shr <16 x i8>
-  res_vuc = vec_vsrb(vuc, vuc);                 // CHECK: shr <16 x i8>
-  res_vs  = vec_vsrh(vs, vus);                  // CHECK: shr <8 x i16>
-  res_vus = vec_vsrh(vus, vus);                 // CHECK: shr <8 x i16>
-  res_vi  = vec_vsrw(vi, vui);                  // CHECK: shr <4 x i32>
-  res_vui = vec_vsrw(vui, vui);                 // CHECK: shr <4 x i32>
-
-  /* vec_sra */
-  res_vsc = vec_sra(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsrab
-  res_vuc = vec_sra(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsrab
-  res_vs  = vec_sra(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsrah
-  res_vus = vec_sra(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsrah
-  res_vi  = vec_sra(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsraw
-  res_vui = vec_sra(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsraw
-  res_vsc = vec_vsrab(vsc, vuc);                // CHECK: @llvm.ppc.altivec.vsrab
-  res_vuc = vec_vsrab(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vsrab
-  res_vs  = vec_vsrah(vs, vus);                 // CHECK: @llvm.ppc.altivec.vsrah
-  res_vus = vec_vsrah(vus, vus);                // CHECK: @llvm.ppc.altivec.vsrah
-  res_vi  = vec_vsraw(vi, vui);                 // CHECK: @llvm.ppc.altivec.vsraw
-  res_vui = vec_vsraw(vui, vui);                // CHECK: @llvm.ppc.altivec.vsraw
-
-  /* vec_srl */
-  res_vsc = vec_srl(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vsc = vec_srl(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vsc = vec_srl(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vuc = vec_srl(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vuc = vec_srl(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vuc = vec_srl(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbc = vec_srl(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbc = vec_srl(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbc = vec_srl(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vs  = vec_srl(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vs  = vec_srl(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vs  = vec_srl(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vus = vec_srl(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vus = vec_srl(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vus = vec_srl(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbs = vec_srl(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbs = vec_srl(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbs = vec_srl(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vp  = vec_srl(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vp  = vec_srl(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vp  = vec_srl(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vi  = vec_srl(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vi  = vec_srl(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vi  = vec_srl(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vui = vec_srl(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vui = vec_srl(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vui = vec_srl(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbi = vec_srl(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbi = vec_srl(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbi = vec_srl(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vsc = vec_vsr(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vsc = vec_vsr(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vsc = vec_vsr(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vuc = vec_vsr(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vuc = vec_vsr(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vuc = vec_vsr(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbc = vec_vsr(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbc = vec_vsr(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbc = vec_vsr(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vs  = vec_vsr(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vs  = vec_vsr(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vs  = vec_vsr(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vus = vec_vsr(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vus = vec_vsr(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vus = vec_vsr(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbs = vec_vsr(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbs = vec_vsr(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbs = vec_vsr(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vp  = vec_vsr(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vp  = vec_vsr(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vp  = vec_vsr(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vi  = vec_vsr(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vi  = vec_vsr(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vi  = vec_vsr(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsr
-  res_vui = vec_vsr(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vui = vec_vsr(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vui = vec_vsr(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbi = vec_vsr(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbi = vec_vsr(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsr
-  res_vbi = vec_vsr(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsr
-
-  /* vec_sro */
-  res_vsc = vec_sro(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vsc = vec_sro(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vuc = vec_sro(vuc, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vuc = vec_sro(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vs  = vec_sro(vs, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
-  res_vs  = vec_sro(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
-  res_vus = vec_sro(vus, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vus = vec_sro(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vp  = vec_sro(vp, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
-  res_vp  = vec_sro(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
-  res_vi  = vec_sro(vi, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
-  res_vi  = vec_sro(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
-  res_vui = vec_sro(vui, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vui = vec_sro(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vf  = vec_sro(vf, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
-  res_vf  = vec_sro(vf, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
-  res_vsc = vec_vsro(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
-  res_vsc = vec_vsro(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
-  res_vuc = vec_vsro(vuc, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
-  res_vuc = vec_vsro(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
-  res_vs  = vec_vsro(vs, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vs  = vec_vsro(vs, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vus = vec_vsro(vus, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
-  res_vus = vec_vsro(vus, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
-  res_vp  = vec_vsro(vp, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vp  = vec_vsro(vp, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vi  = vec_vsro(vi, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vi  = vec_vsro(vi, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vui = vec_vsro(vui, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
-  res_vui = vec_vsro(vui, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
-  res_vf  = vec_vsro(vf, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
-  res_vf  = vec_vsro(vf, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
-
-  /* vec_st */
-  vec_st(vsc, 0, &vsc);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vsc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vuc, 0, &vuc);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vuc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbc, 0, &vbc);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vs, 0, &vs);                          // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vs, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vus, 0, &vus);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vus, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbs, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbs, 0, &vbs);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vp, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vp, 0, &param_us);                    // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vp, 0, &vp);                          // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vi, 0, &vi);                          // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vi, 0, &param_i);                     // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vui, 0, &vui);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vui, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbi, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vbi, 0, &vbi);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vf, 0, &vf);                          // CHECK: @llvm.ppc.altivec.stvx
-  vec_st(vf, 0, &param_f);                     // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbs, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vp, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vp, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vp, 0, &vp);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbi, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.stvx
-  vec_stvx(vf, 0, &param_f);                   // CHECK: @llvm.ppc.altivec.stvx
-
-  /* vec_ste */
-  vec_ste(vsc, 0, &param_sc);                  // CHECK: @llvm.ppc.altivec.stvebx
-  vec_ste(vuc, 0, &param_uc);                  // CHECK: @llvm.ppc.altivec.stvebx
-  vec_ste(vbc, 0, &param_sc);                  // CHECK: @llvm.ppc.altivec.stvebx
-  vec_ste(vbc, 0, &param_uc);                  // CHECK: @llvm.ppc.altivec.stvebx
-  vec_ste(vs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvehx
-  vec_ste(vus, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvehx
-  vec_ste(vbs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvehx
-  vec_ste(vbs, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvehx
-  vec_ste(vp, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvehx
-  vec_ste(vp, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvehx
-  vec_ste(vi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvewx
-  vec_ste(vui, 0, &param_ui);                  // CHECK: @llvm.ppc.altivec.stvewx
-  vec_ste(vbi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvewx
-  vec_ste(vbi, 0, &param_ui);                  // CHECK: @llvm.ppc.altivec.stvewx
-  vec_ste(vf, 0, &param_f);                    // CHECK: @llvm.ppc.altivec.stvewx
-  vec_stvebx(vsc, 0, &param_sc);               // CHECK: @llvm.ppc.altivec.stvebx
-  vec_stvebx(vuc, 0, &param_uc);               // CHECK: @llvm.ppc.altivec.stvebx
-  vec_stvebx(vbc, 0, &param_sc);               // CHECK: @llvm.ppc.altivec.stvebx
-  vec_stvebx(vbc, 0, &param_uc);               // CHECK: @llvm.ppc.altivec.stvebx
-  vec_stvehx(vs, 0, &param_s);                 // CHECK: @llvm.ppc.altivec.stvehx
-  vec_stvehx(vus, 0, &param_us);               // CHECK: @llvm.ppc.altivec.stvehx
-  vec_stvehx(vbs, 0, &param_s);                // CHECK: @llvm.ppc.altivec.stvehx
-  vec_stvehx(vbs, 0, &param_us);               // CHECK: @llvm.ppc.altivec.stvehx
-  vec_stvehx(vp, 0, &param_s);                 // CHECK: @llvm.ppc.altivec.stvehx
-  vec_stvehx(vp, 0, &param_us);                // CHECK: @llvm.ppc.altivec.stvehx
-  vec_stvewx(vi, 0, &param_i);                 // CHECK: @llvm.ppc.altivec.stvewx
-  vec_stvewx(vui, 0, &param_ui);               // CHECK: @llvm.ppc.altivec.stvewx
-  vec_stvewx(vbi, 0, &param_i);                // CHECK: @llvm.ppc.altivec.stvewx
-  vec_stvewx(vbi, 0, &param_ui);               // CHECK: @llvm.ppc.altivec.stvewx
-  vec_stvewx(vf, 0, &param_f);                 // CHECK: @llvm.ppc.altivec.stvewx
-
-  /* vec_stl */
-  vec_stl(vsc, 0, &vsc);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vsc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vuc, 0, &vuc);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vuc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbc, 0, &vbc);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vs, 0, &vs);                          // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vs, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vus, 0, &vus);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vus, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbs, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbs, 0, &vbs);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vp, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vp, 0, &param_us);                    // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vp, 0, &vp);                          // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vi, 0, &vi);                          // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vi, 0, &param_i);                     // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vui, 0, &vui);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vui, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbi, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vbi, 0, &vbi);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vf, 0, &vf);                          // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stl(vf, 0, &param_f);                     // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbs, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vp, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vp, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vp, 0, &vp);                      // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbi, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.stvxl
-  vec_stvxl(vf, 0, &param_f);                   // CHECK: @llvm.ppc.altivec.stvxl
-
-  /* vec_sub */
-  res_vsc = vec_sub(vsc, vsc);                  // CHECK: sub <16 x i8>
-  res_vsc = vec_sub(vbc, vsc);                  // CHECK: sub <16 x i8>
-  res_vsc = vec_sub(vsc, vbc);                  // CHECK: sub <16 x i8>
-  res_vuc = vec_sub(vuc, vuc);                  // CHECK: sub <16 x i8>
-  res_vuc = vec_sub(vbc, vuc);                  // CHECK: sub <16 x i8>
-  res_vuc = vec_sub(vuc, vbc);                  // CHECK: sub <16 x i8>
-  res_vs  = vec_sub(vs, vs);                    // CHECK: sub <8 x i16>
-  res_vs  = vec_sub(vbs, vs);                   // CHECK: sub <8 x i16>
-  res_vs  = vec_sub(vs, vbs);                   // CHECK: sub <8 x i16>
-  res_vus = vec_sub(vus, vus);                  // CHECK: sub <8 x i16>
-  res_vus = vec_sub(vbs, vus);                  // CHECK: sub <8 x i16>
-  res_vus = vec_sub(vus, vbs);                  // CHECK: sub <8 x i16>
-  res_vi  = vec_sub(vi, vi);                    // CHECK: sub <4 x i32>
-  res_vi  = vec_sub(vbi, vi);                   // CHECK: sub <4 x i32>
-  res_vi  = vec_sub(vi, vbi);                   // CHECK: sub <4 x i32>
-  res_vui = vec_sub(vui, vui);                  // CHECK: sub <4 x i32>
-  res_vui = vec_sub(vbi, vui);                  // CHECK: sub <4 x i32>
-  res_vui = vec_sub(vui, vbi);                  // CHECK: sub <4 x i32>
-  res_vf  = vec_sub(vf, vf);                    // CHECK: fsub <4 x float>
-  res_vsc = vec_vsububm(vsc, vsc);              // CHECK: sub <16 x i8>
-  res_vsc = vec_vsububm(vbc, vsc);              // CHECK: sub <16 x i8>
-  res_vsc = vec_vsububm(vsc, vbc);              // CHECK: sub <16 x i8>
-  res_vuc = vec_vsububm(vuc, vuc);              // CHECK: sub <16 x i8>
-  res_vuc = vec_vsububm(vbc, vuc);              // CHECK: sub <16 x i8>
-  res_vuc = vec_vsububm(vuc, vbc);              // CHECK: sub <16 x i8>
-  res_vs  = vec_vsubuhm(vs, vs);                // CHECK: sub <8 x i16>
-  res_vs  = vec_vsubuhm(vbs, vus);              // CHECK: sub <8 x i16>
-  res_vs  = vec_vsubuhm(vus, vbs);              // CHECK: sub <8 x i16>
-  res_vus = vec_vsubuhm(vus, vus);              // CHECK: sub <8 x i16>
-  res_vus = vec_vsubuhm(vbs, vus);              // CHECK: sub <8 x i16>
-  res_vus = vec_vsubuhm(vus, vbs);              // CHECK: sub <8 x i16>
-  res_vi  = vec_vsubuwm(vi, vi);                // CHECK: sub <4 x i32>
-  res_vi  = vec_vsubuwm(vbi, vi);               // CHECK: sub <4 x i32>
-  res_vi  = vec_vsubuwm(vi, vbi);               // CHECK: sub <4 x i32>
-  res_vui = vec_vsubuwm(vui, vui);              // CHECK: sub <4 x i32>
-  res_vui = vec_vsubuwm(vbi, vui);              // CHECK: sub <4 x i32>
-  res_vui = vec_vsubuwm(vui, vbi);              // CHECK: sub <4 x i32>
-  res_vf  = vec_vsubfp(vf, vf);                 // CHECK: fsub <4 x float>
-
-  /* vec_subc */
-  res_vui = vec_subc(vui, vui);                 // CHECK: @llvm.ppc.altivec.vsubcuw
-  res_vui = vec_vsubcuw(vui, vui);              // CHECK: @llvm.ppc.altivec.vsubcuw
-
-  /* vec_subs */
-  res_vsc = vec_subs(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
-  res_vsc = vec_subs(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
-  res_vsc = vec_subs(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
-  res_vuc = vec_subs(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vsububs
-  res_vuc = vec_subs(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vsububs
-  res_vuc = vec_subs(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vsububs
-  res_vs  = vec_subs(vs, vs);                   // CHECK: @llvm.ppc.altivec.vsubshs
-  res_vs  = vec_subs(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vsubshs
-  res_vs  = vec_subs(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vsubshs
-  res_vus = vec_subs(vus, vus);                 // CHECK: @llvm.ppc.altivec.vsubuhs
-  res_vus = vec_subs(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vsubuhs
-  res_vus = vec_subs(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vsubuhs
-  res_vi  = vec_subs(vi, vi);                   // CHECK: @llvm.ppc.altivec.vsubsws
-  res_vi  = vec_subs(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vsubsws
-  res_vi  = vec_subs(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vsubsws
-  res_vui = vec_subs(vui, vui);                 // CHECK: @llvm.ppc.altivec.vsubuws
-  res_vui = vec_subs(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vsubuws
-  res_vui = vec_subs(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vsubuws
-  res_vsc = vec_vsubsbs(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vsubsbs
-  res_vsc = vec_vsubsbs(vbc, vsc);              // CHECK: @llvm.ppc.altivec.vsubsbs
-  res_vsc = vec_vsubsbs(vsc, vbc);              // CHECK: @llvm.ppc.altivec.vsubsbs
-  res_vuc = vec_vsububs(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vsububs
-  res_vuc = vec_vsububs(vbc, vuc);              // CHECK: @llvm.ppc.altivec.vsububs
-  res_vuc = vec_vsububs(vuc, vbc);              // CHECK: @llvm.ppc.altivec.vsububs
-  res_vs  = vec_vsubshs(vs, vs);                // CHECK: @llvm.ppc.altivec.vsubshs
-  res_vs  = vec_vsubshs(vbs, vs);               // CHECK: @llvm.ppc.altivec.vsubshs
-  res_vs  = vec_vsubshs(vs, vbs);               // CHECK: @llvm.ppc.altivec.vsubshs
-  res_vus = vec_vsubuhs(vus, vus);              // CHECK: @llvm.ppc.altivec.vsubuhs
-  res_vus = vec_vsubuhs(vbs, vus);              // CHECK: @llvm.ppc.altivec.vsubuhs
-  res_vus = vec_vsubuhs(vus, vbs);              // CHECK: @llvm.ppc.altivec.vsubuhs
-  res_vi  = vec_vsubsws(vi, vi);                // CHECK: @llvm.ppc.altivec.vsubsws
-  res_vi  = vec_vsubsws(vbi, vi);               // CHECK: @llvm.ppc.altivec.vsubsws
-  res_vi  = vec_vsubsws(vi, vbi);               // CHECK: @llvm.ppc.altivec.vsubsws
-  res_vui = vec_vsubuws(vui, vui);              // CHECK: @llvm.ppc.altivec.vsubuws
-  res_vui = vec_vsubuws(vbi, vui);              // CHECK: @llvm.ppc.altivec.vsubuws
-  res_vui = vec_vsubuws(vui, vbi);              // CHECK: @llvm.ppc.altivec.vsubuws
-
-  /* vec_sum4s */
-  res_vi  = vec_sum4s(vsc, vi);                 // CHECK: @llvm.ppc.altivec.vsum4sbs
-  res_vui = vec_sum4s(vuc, vui);                // CHECK: @llvm.ppc.altivec.vsum4ubs
-  res_vi  = vec_sum4s(vs, vi);                  // CHECK: @llvm.ppc.altivec.vsum4shs
-  res_vi  = vec_vsum4sbs(vsc, vi);              // CHECK: @llvm.ppc.altivec.vsum4sbs
-  res_vui = vec_vsum4ubs(vuc, vui);             // CHECK: @llvm.ppc.altivec.vsum4ubs
-  res_vi  = vec_vsum4shs(vs, vi);               // CHECK: @llvm.ppc.altivec.vsum4shs
-
-  /* vec_sum2s */
-  res_vi = vec_sum2s(vi, vi);                   // CHECK: @llvm.ppc.altivec.vsum2sws
-  res_vi = vec_vsum2sws(vi, vi);                // CHECK: @llvm.ppc.altivec.vsum2sws
-
-  /* vec_sums */
-  res_vi = vec_sums(vi, vi);                    // CHECK: @llvm.ppc.altivec.vsumsws
-  res_vi = vec_vsumsws(vi, vi);                 // CHECK: @llvm.ppc.altivec.vsumsws
-
-  /* vec_trunc */
-  res_vf = vec_trunc(vf);                       // CHECK: @llvm.ppc.altivec.vrfiz
-  res_vf = vec_vrfiz(vf);                       // CHECK: @llvm.ppc.altivec.vrfiz
-
-  /* vec_unpackh */
-  res_vs  = vec_unpackh(vsc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
-  res_vbs = vec_unpackh(vbc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
-  res_vi  = vec_unpackh(vs);                    // CHECK: @llvm.ppc.altivec.vupkhsh
-  res_vbi = vec_unpackh(vbs);                   // CHECK: @llvm.ppc.altivec.vupkhsh
-  res_vui = vec_unpackh(vp);                    // CHECK: @llvm.ppc.altivec.vupkhsh
-  res_vs  = vec_vupkhsb(vsc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
-  res_vbs = vec_vupkhsb(vbc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
-  res_vi  = vec_vupkhsh(vs);                    // CHECK: @llvm.ppc.altivec.vupkhsh
-  res_vbi = vec_vupkhsh(vbs);                   // CHECK: @llvm.ppc.altivec.vupkhsh
-  res_vui = vec_vupkhsh(vp);                    // CHECK: @llvm.ppc.altivec.vupkhsh
-
-  /* vec_unpackl */
-  res_vs  = vec_unpackl(vsc);                   // CHECK: @llvm.ppc.altivec.vupklsb
-  res_vbs = vec_unpackl(vbc);                   // CHECK: @llvm.ppc.altivec.vupklsb
-  res_vi  = vec_unpackl(vs);                    // CHECK: @llvm.ppc.altivec.vupklsh
-  res_vbi = vec_unpackl(vbs);                   // CHECK: @llvm.ppc.altivec.vupklsh
-  res_vui = vec_unpackl(vp);                    // CHECK: @llvm.ppc.altivec.vupklsh
-  res_vs  = vec_vupklsb(vsc);                   // CHECK: @llvm.ppc.altivec.vupklsb
-  res_vbs = vec_vupklsb(vbc);                   // CHECK: @llvm.ppc.altivec.vupklsb
-  res_vi  = vec_vupklsh(vs);                    // CHECK: @llvm.ppc.altivec.vupklsh
-  res_vbi = vec_vupklsh(vbs);                   // CHECK: @llvm.ppc.altivec.vupklsh
-  res_vui = vec_vupklsh(vp);                    // CHECK: @llvm.ppc.altivec.vupklsh
-
-  /* vec_xor */
-  res_vsc = vec_xor(vsc, vsc);                  // CHECK: xor <16 x i8>
-  res_vsc = vec_xor(vbc, vsc);                  // CHECK: xor <16 x i8>
-  res_vsc = vec_xor(vsc, vbc);                  // CHECK: xor <16 x i8>
-  res_vuc = vec_xor(vuc, vuc);                  // CHECK: xor <16 x i8>
-  res_vuc = vec_xor(vbc, vuc);                  // CHECK: xor <16 x i8>
-  res_vuc = vec_xor(vuc, vbc);                  // CHECK: xor <16 x i8>
-  res_vbc = vec_xor(vbc, vbc);                  // CHECK: xor <16 x i8>
-  res_vs  = vec_xor(vs, vs);                    // CHECK: xor <8 x i16>
-  res_vs  = vec_xor(vbs, vs);                   // CHECK: xor <8 x i16>
-  res_vs  = vec_xor(vs, vbs);                   // CHECK: xor <8 x i16>
-  res_vus = vec_xor(vus, vus);                  // CHECK: xor <8 x i16>
-  res_vus = vec_xor(vbs, vus);                  // CHECK: xor <8 x i16>
-  res_vus = vec_xor(vus, vbs);                  // CHECK: xor <8 x i16>
-  res_vbs = vec_xor(vbs, vbs);                  // CHECK: xor <8 x i16>
-  res_vi  = vec_xor(vi, vi);                    // CHECK: xor <4 x i32>
-  res_vi  = vec_xor(vbi, vi);                   // CHECK: xor <4 x i32>
-  res_vi  = vec_xor(vi, vbi);                   // CHECK: xor <4 x i32>
-  res_vui = vec_xor(vui, vui);                  // CHECK: xor <4 x i32>
-  res_vui = vec_xor(vbi, vui);                  // CHECK: xor <4 x i32>
-  res_vui = vec_xor(vui, vbi);                  // CHECK: xor <4 x i32>
-  res_vbi = vec_xor(vbi, vbi);                  // CHECK: xor <4 x i32>
-  res_vf  = vec_xor(vf, vf);                    // CHECK: xor <4 x i32>
-  res_vf  = vec_xor(vbi, vf);                   // CHECK: xor <4 x i32>
-  res_vf  = vec_xor(vf, vbi);                   // CHECK: xor <4 x i32>
-  res_vsc = vec_vxor(vsc, vsc);                 // CHECK: xor <16 x i8>
-  res_vsc = vec_vxor(vbc, vsc);                 // CHECK: xor <16 x i8>
-  res_vsc = vec_vxor(vsc, vbc);                 // CHECK: xor <16 x i8>
-  res_vuc = vec_vxor(vuc, vuc);                 // CHECK: xor <16 x i8>
-  res_vuc = vec_vxor(vbc, vuc);                 // CHECK: xor <16 x i8>
-  res_vuc = vec_vxor(vuc, vbc);                 // CHECK: xor <16 x i8>
-  res_vbc = vec_vxor(vbc, vbc);                 // CHECK: xor <16 x i8>
-  res_vs  = vec_vxor(vs, vs);                   // CHECK: xor <8 x i16>
-  res_vs  = vec_vxor(vbs, vs);                  // CHECK: xor <8 x i16>
-  res_vs  = vec_vxor(vs, vbs);                  // CHECK: xor <8 x i16>
-  res_vus = vec_vxor(vus, vus);                 // CHECK: xor <8 x i16>
-  res_vus = vec_vxor(vbs, vus);                 // CHECK: xor <8 x i16>
-  res_vus = vec_vxor(vus, vbs);                 // CHECK: xor <8 x i16>
-  res_vbs = vec_vxor(vbs, vbs);                 // CHECK: xor <8 x i16>
-  res_vi  = vec_vxor(vi, vi);                   // CHECK: xor <4 x i32>
-  res_vi  = vec_vxor(vbi, vi);                  // CHECK: xor <4 x i32>
-  res_vi  = vec_vxor(vi, vbi);                  // CHECK: xor <4 x i32>
-  res_vui = vec_vxor(vui, vui);                 // CHECK: xor <4 x i32>
-  res_vui = vec_vxor(vbi, vui);                 // CHECK: xor <4 x i32>
-  res_vui = vec_vxor(vui, vbi);                 // CHECK: xor <4 x i32>
-  res_vbi = vec_vxor(vbi, vbi);                 // CHECK: xor <4 x i32>
-  res_vf  = vec_vxor(vf, vf);                   // CHECK: xor <4 x i32>
-  res_vf  = vec_vxor(vbi, vf);                  // CHECK: xor <4 x i32>
-  res_vf  = vec_vxor(vf, vbi);                  // CHECK: xor <4 x i32>
-
-  /* ------------------------------ extensions -------------------------------------- */
-
-  /* vec_extract */
-  res_sc = vec_extract(vsc, param_i);           // CHECK: extractelement <16 x i8>
-  res_uc = vec_extract(vuc, param_i);           // CHECK: extractelement <16 x i8>
-  res_s  = vec_extract(vs, param_i);            // CHECK: extractelement <8 x i16>
-  res_us = vec_extract(vus, param_i);           // CHECK: extractelement <8 x i16>
-  res_i  = vec_extract(vi, param_i);            // CHECK: extractelement <4 x i32>
-  res_ui = vec_extract(vui, param_i);           // CHECK: extractelement <4 x i32>
-  res_f  = vec_extract(vf, param_i);            // CHECK: extractelement <4 x float>
-
-  /* vec_insert */
-  res_vsc = vec_insert(param_sc, vsc, param_i); // CHECK: insertelement <16 x i8>
-  res_vuc = vec_insert(param_uc, vuc, param_i); // CHECK: insertelement <16 x i8>
-  res_vs  = vec_insert(param_s, vs, param_i);   // CHECK: insertelement <8 x i16>
-  res_vus = vec_insert(param_us, vus, param_i); // CHECK: insertelement <8 x i16>
-  res_vi  = vec_insert(param_i, vi, param_i);   // CHECK: insertelement <4 x i32>
-  res_vui = vec_insert(param_ui, vui, param_i); // CHECK: insertelement <4 x i32>
-  res_vf  = vec_insert(param_f, vf, param_i);   // CHECK: insertelement <4 x float>
-
-  /* vec_lvlx */
-  res_vsc = vec_lvlx(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vsc = vec_lvlx(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vuc = vec_lvlx(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vuc = vec_lvlx(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbc = vec_lvlx(0, &vbc);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vs  = vec_lvlx(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vs  = vec_lvlx(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vus = vec_lvlx(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vus = vec_lvlx(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbs = vec_lvlx(0, &vbs);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vp  = vec_lvlx(0, &vp);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vi  = vec_lvlx(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vi  = vec_lvlx(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vui = vec_lvlx(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vui = vec_lvlx(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbi = vec_lvlx(0, &vbi);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vf  = vec_lvlx(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_lvlxl */
-  res_vsc = vec_lvlxl(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vsc = vec_lvlxl(0, &vsc);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vuc = vec_lvlxl(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vuc = vec_lvlxl(0, &vuc);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbc = vec_lvlxl(0, &vbc);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vs  = vec_lvlxl(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vs  = vec_lvlxl(0, &vs);                  // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vus = vec_lvlxl(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vus = vec_lvlxl(0, &vus);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbs = vec_lvlxl(0, &vbs);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vp  = vec_lvlxl(0, &vp);                  // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vi  = vec_lvlxl(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vi  = vec_lvlxl(0, &vi);                  // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vui = vec_lvlxl(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vui = vec_lvlxl(0, &vui);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbi = vec_lvlxl(0, &vbi);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vf  = vec_lvlxl(0, &vf);                  // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_lvrx */
-  res_vsc = vec_lvrx(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vsc = vec_lvrx(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vuc = vec_lvrx(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vuc = vec_lvrx(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbc = vec_lvrx(0, &vbc);                  // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vs  = vec_lvrx(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vs  = vec_lvrx(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vus = vec_lvrx(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vus = vec_lvrx(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbs = vec_lvrx(0, &vbs);                  // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vp  = vec_lvrx(0, &vp);                   // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vi  = vec_lvrx(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vi  = vec_lvrx(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vui = vec_lvrx(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vui = vec_lvrx(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbi = vec_lvrx(0, &vbi);                  // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vf  = vec_lvrx(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_lvrxl */
-  res_vsc = vec_lvrxl(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vsc = vec_lvrxl(0, &vsc);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vuc = vec_lvrxl(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vuc = vec_lvrxl(0, &vuc);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbc = vec_lvrxl(0, &vbc);                 // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vs  = vec_lvrxl(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vs  = vec_lvrxl(0, &vs);                  // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vus = vec_lvrxl(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vus = vec_lvrxl(0, &vus);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbs = vec_lvrxl(0, &vbs);                 // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vp  = vec_lvrxl(0, &vp);                  // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vi  = vec_lvrxl(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vi  = vec_lvrxl(0, &vi);                  // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vui = vec_lvrxl(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vui = vec_lvrxl(0, &vui);                 // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vbi = vec_lvrxl(0, &vbi);                 // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  res_vf  = vec_lvrxl(0, &vf);                  // CHECK: @llvm.ppc.altivec.lvxl
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-
-  /* vec_stvlx */
-  vec_stvlx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vbc, 0, &vbc);                      // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vbs, 0, &vbs);                      // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vp, 0, &vp);                        // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vbi, 0, &vbi);                      // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvlx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  /* vec_stvlxl */
-  vec_stvlxl(vsc, 0, &param_sc);                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vsc, 0, &vsc);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vuc, 0, &param_uc);                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vuc, 0, &vuc);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vbc, 0, &vbc);                     // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vs, 0, &vs);                       // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vus, 0, &param_us);                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vus, 0, &vus);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vbs, 0, &vbs);                     // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vp, 0, &vp);                       // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vi, 0, &vi);                       // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vui, 0, &param_ui);                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vui, 0, &vui);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vbi, 0, &vbi);                     // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvlxl(vf, 0, &vf);                       // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  /* vec_stvrx */
-  vec_stvrx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vp, 0, &vp);                        // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  vec_stvrx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvx
-
-  /* vec_stvrxl */
-  vec_stvrxl(vsc, 0, &param_sc);                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vsc, 0, &vsc);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vuc, 0, &param_uc);                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vuc, 0, &vuc);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vbc, 0, &vbc);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vs, 0, &vs);                       // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vus, 0, &param_us);                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vus, 0, &vus);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vbs, 0, &vbs);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vp, 0, &vp);                       // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vi, 0, &vi);                       // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vui, 0, &param_ui);                // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vui, 0, &vui);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vbi, 0, &vbi);                     // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  vec_stvrxl(vf, 0, &vf);                       // CHECK: @llvm.ppc.altivec.lvx
-                                                // CHECK: @llvm.ppc.altivec.lvsl
-                                                // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.lvsr
-                                                // CHECK: @llvm.ppc.altivec.vperm
-                                                // CHECK: @llvm.ppc.altivec.stvxl
-
-  /* vec_promote */
-  res_vsc = vec_promote(param_sc, 0);           // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: insertelement <16 x i8>
-
-  res_vuc = vec_promote(param_uc, 0);           // CHECK: store <16 x i8> zeroinitializer
-                                                // CHECK: insertelement <16 x i8>
-
-  res_vs  = vec_promote(param_s, 0);            // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: insertelement <8 x i16>
-
-  res_vus = vec_promote(param_us, 0);           // CHECK: store <8 x i16> zeroinitializer
-                                                // CHECK: insertelement <8 x i16>
-
-  res_vi  = vec_promote(param_i, 0);            // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: insertelement <4 x i32>
-
-  res_vui = vec_promote(param_ui, 0);           // CHECK: store <4 x i32> zeroinitializer
-                                                // CHECK: insertelement <4 x i32>
-
-  res_vf  = vec_promote(param_f, 0);            // CHECK: store <4 x float> zeroinitializer
-                                                // CHECK: insertelement <4 x float>
-
-  /* vec_splats */
-  res_vsc = vec_splats(param_sc);               // CHECK: insertelement <16 x i8>
-
-  res_vuc = vec_splats(param_uc);               // CHECK: insertelement <16 x i8>
-
-  res_vs  = vec_splats(param_s);                // CHECK: insertelement <8 x i16>
-
-  res_vus = vec_splats(param_us);               // CHECK: insertelement <8 x i16>
-
-  res_vi  = vec_splats(param_i);                // CHECK: insertelement <4 x i32>
-
-  res_vui = vec_splats(param_ui);               // CHECK: insertelement <4 x i32>
-
-  res_vf  = vec_splats(param_f);                // CHECK: insertelement <4 x float>
-
-  /* ------------------------------ predicates -------------------------------------- */
-
-  /* vec_all_eq */
-  res_i = vec_all_eq(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_eq(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_eq(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_eq(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_eq(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_eq(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_eq(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_eq(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_eq(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_eq(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_eq(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_eq(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_eq(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_eq(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_eq(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_eq(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_eq(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_eq(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_eq(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_eq(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_eq(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_eq(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_eq(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
-
-  /* vec_all_ge */
-  res_i = vec_all_ge(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_all_ge(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_all_ge(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_ge(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_ge(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_ge(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_ge(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_ge(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_all_ge(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_all_ge(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_ge(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_ge(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_ge(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_ge(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_ge(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_all_ge(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_all_ge(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_ge(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_ge(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_ge(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_ge(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_ge(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
-
-  /* vec_all_gt */
-  res_i = vec_all_gt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_all_gt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_all_gt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_gt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_gt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_gt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_gt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_gt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_all_gt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_all_gt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_gt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_gt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_gt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_gt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_gt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_all_gt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_all_gt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_gt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_gt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_gt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_gt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_gt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
-
-  /* vec_all_in */
-  res_i = vec_all_in(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpbfp.p
-
-  /* vec_all_le */
-  res_i = vec_all_le(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_all_le(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_all_le(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_le(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_le(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_le(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_le(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_le(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_all_le(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_all_le(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_le(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_le(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_le(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_le(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_le(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_all_le(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_all_le(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_le(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_le(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_le(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_le(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_le(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
-
-  /* vec_all_lt */
-  res_i = vec_all_lt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_all_lt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_all_lt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_lt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_lt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_lt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_lt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_all_lt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_all_lt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_all_lt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_lt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_lt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_lt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_lt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_all_lt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_all_lt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_all_lt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_lt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_lt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_lt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_lt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_all_lt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
-
-  /* vec_all_nan */
-  res_i = vec_all_nan(vf);                      // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
-
-  /*  vec_all_ne */
-  res_i = vec_all_ne(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_ne(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_ne(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_ne(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_ne(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_ne(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_ne(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_all_ne(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_ne(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_ne(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_ne(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_ne(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_ne(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_ne(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_ne(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_all_ne(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_ne(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_ne(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_ne(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_ne(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_ne(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_ne(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_all_ne(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
-
-  /* vec_all_nge */
-  res_i = vec_all_nge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
-
-  /* vec_all_ngt */
-  res_i = vec_all_ngt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
-
-  /* vec_all_nle */
-  res_i = vec_all_nle(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
-
-  /* vec_all_nlt */
-  res_i = vec_all_nlt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
-
-  /* vec_all_numeric */
-  res_i = vec_all_numeric(vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
-
-  /*  vec_any_eq */
-  res_i = vec_any_eq(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_eq(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_eq(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_eq(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_eq(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_eq(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_eq(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_eq(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_eq(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_eq(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_eq(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_eq(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_eq(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_eq(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_eq(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_eq(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_eq(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_eq(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_eq(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_eq(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_eq(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_eq(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_eq(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
-
-  /* vec_any_ge */
-  res_i = vec_any_ge(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_any_ge(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_any_ge(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_ge(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_ge(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_ge(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_ge(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_ge(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_any_ge(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_any_ge(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_ge(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_ge(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_ge(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_ge(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_ge(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_any_ge(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_any_ge(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_ge(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_ge(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_ge(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_ge(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_ge(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
-
-  /* vec_any_gt */
-  res_i = vec_any_gt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_any_gt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_any_gt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_gt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_gt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_gt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_gt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_gt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_any_gt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_any_gt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_gt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_gt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_gt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_gt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_gt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_any_gt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_any_gt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_gt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_gt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_gt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_gt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_gt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
-
-  /* vec_any_le */
-  res_i = vec_any_le(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_any_le(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_any_le(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_le(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_le(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_le(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_le(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_le(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_any_le(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_any_le(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_le(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_le(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_le(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_le(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_le(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_any_le(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_any_le(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_le(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_le(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_le(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_le(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_le(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
-
-  /* vec_any_lt */
-  res_i = vec_any_lt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_any_lt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
-  res_i = vec_any_lt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_lt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_lt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_lt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_lt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
-  res_i = vec_any_lt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_any_lt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
-  res_i = vec_any_lt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_lt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_lt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_lt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_lt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
-  res_i = vec_any_lt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_any_lt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
-  res_i = vec_any_lt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_lt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_lt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_lt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_lt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
-  res_i = vec_any_lt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
-
-  /* vec_any_nan */
-  res_i = vec_any_nan(vf);                      // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
-
-  /* vec_any_ne */
-  res_i = vec_any_ne(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_ne(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_ne(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_ne(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_ne(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_ne(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_ne(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
-  res_i = vec_any_ne(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_ne(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_ne(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_ne(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_ne(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_ne(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_ne(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_ne(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
-  res_i = vec_any_ne(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_ne(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_ne(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_ne(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_ne(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_ne(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_ne(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
-  res_i = vec_any_ne(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
-
-  /* vec_any_nge */
-  res_i = vec_any_nge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
-
-  /* vec_any_ngt */
-  res_i = vec_any_ngt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
-
-  /* vec_any_nle */
-  res_i = vec_any_nle(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
-
-  /* vec_any_nlt */
-  res_i = vec_any_nlt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
-
-  /* vec_any_numeric */
-  res_i = vec_any_numeric(vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
-
-  /* vec_any_out */
-  res_i = vec_any_out(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpbfp.p
-}
-
-/* ------------------------------ Relational Operators ------------------------------ */
-// CHECK: define void @test7
-void test7() {
-  vector signed char vsc1 = (vector signed char)(-1);
-  vector signed char vsc2 = (vector signed char)(-2);
-  res_i = (vsc1 == vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
-  res_i = (vsc1 != vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
-  res_i = (vsc1 <  vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
-  res_i = (vsc1 >  vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
-  res_i = (vsc1 <= vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
-  res_i = (vsc1 >= vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
-  vector unsigned char vuc1 = (vector unsigned char)(1);
-  vector unsigned char vuc2 = (vector unsigned char)(2);
-  res_i = (vuc1 == vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
-  res_i = (vuc1 != vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
-  res_i = (vuc1 <  vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
-  res_i = (vuc1 >  vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
-  res_i = (vuc1 <= vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
-  res_i = (vuc1 >= vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
-  vector short vs1 = (vector short)(-1);
-  vector short vs2 = (vector short)(-2);
-  res_i = (vs1 == vs2);                    // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
-  res_i = (vs1 != vs2);                    // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
-  res_i = (vs1 <  vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
-  res_i = (vs1 >  vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
-  res_i = (vs1 <= vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
-  res_i = (vs1 >= vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
-  vector unsigned short vus1 = (vector unsigned short)(1);
-  vector unsigned short vus2 = (vector unsigned short)(2);
-  res_i = (vus1 == vus2);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
-  res_i = (vus1 != vus2);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
-  res_i = (vus1 <  vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
-  res_i = (vus1 >  vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
-  res_i = (vus1 <= vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
-  res_i = (vus1 >= vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
-  vector int vi1 = (vector int)(-1);
-  vector int vi2 = (vector int)(-2);
-  res_i = (vi1 == vi2);                    // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
-  res_i = (vi1 != vi2);                    // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
-  res_i = (vi1 <  vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
-  res_i = (vi1 >  vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
-  res_i = (vi1 <= vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
-  res_i = (vi1 >= vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
-  vector unsigned int vui1 = (vector unsigned int)(1);
-  vector unsigned int vui2 = (vector unsigned int)(2);
-  res_i = (vui1 == vui2);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
-  res_i = (vui1 != vui2);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
-  res_i = (vui1 <  vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
-  res_i = (vui1 >  vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
-  res_i = (vui1 <= vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
-  res_i = (vui1 >= vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
-  vector float vf1 = (vector float)(1.0);
-  vector float vf2 = (vector float)(2.0);
-  res_i = (vf1 == vf2);                    // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
-  res_i = (vf1 != vf2);                    // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
-  res_i = (vf1 <  vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
-  res_i = (vf1 >  vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
-  res_i = (vf1 <= vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
-  res_i = (vf1 >= vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-ppc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-ppc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-ppc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// REQUIRES: ppc32-registered-target
-// RUN: %clang_cc1 -triple powerpc-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-
-void test_eh_return_data_regno()
-{
-  volatile int res;
-  res = __builtin_eh_return_data_regno(0);  // CHECK: store volatile i32 3
-  res = __builtin_eh_return_data_regno(1);  // CHECK: store volatile i32 4
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-x86.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-x86.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins-x86.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,495 +0,0 @@
-// RUN: %clang_cc1 -DUSE_64 -triple x86_64-unknown-unknown -emit-llvm -o %t %s
-// RUN: %clang_cc1 -DUSE_ALL -triple x86_64-unknown-unknown -fsyntax-only -o %t %s
-
-#ifdef USE_ALL
-#define USE_3DNOW
-#define USE_64
-#define USE_SSE4
-#endif
-
-// 64-bit
-typedef char V8c __attribute__((vector_size(8 * sizeof(char))));
-typedef signed short V4s __attribute__((vector_size(8)));
-typedef signed int V2i __attribute__((vector_size(8)));
-typedef signed long long V1LLi __attribute__((vector_size(8)));
-
-typedef float V2f __attribute__((vector_size(8)));
-
-// 128-bit
-typedef char V16c __attribute__((vector_size(16)));
-typedef signed short V8s __attribute__((vector_size(16)));
-typedef signed int V4i __attribute__((vector_size(16)));
-typedef signed long long V2LLi __attribute__((vector_size(16)));
-
-typedef float V4f __attribute__((vector_size(16)));
-typedef double V2d __attribute__((vector_size(16)));
-
-// 256-bit
-typedef char V32c __attribute__((vector_size(32)));
-typedef signed int V8i __attribute__((vector_size(32)));
-typedef signed long long V4LLi __attribute__((vector_size(32)));
-
-typedef double V4d __attribute__((vector_size(32)));
-typedef float  V8f __attribute__((vector_size(32)));
-
-void f0() {
-  signed char         tmp_c;
-//  unsigned char       tmp_Uc;
-  signed short        tmp_s;
-#ifdef USE_ALL
-  unsigned short      tmp_Us;
-#endif
-  signed int          tmp_i;
-  unsigned int        tmp_Ui;
-  signed long long    tmp_LLi;
-//  unsigned long long  tmp_ULLi;
-  float               tmp_f;
-  double              tmp_d;
-
-  void*          tmp_vp;
-  const void*    tmp_vCp;
-  char*          tmp_cp; 
-  const char*    tmp_cCp; 
-  int*           tmp_ip;
-  float*         tmp_fp;
-  const float*   tmp_fCp;
-  double*        tmp_dp;
-  const double*  tmp_dCp;
-
-#define imm_i 32
-#define imm_i_0_2 0
-#define imm_i_0_4 3
-#define imm_i_0_8 7
-#define imm_i_0_16 15
-  // Check this.
-#define imm_i_0_256 0
-
-  V2i*   tmp_V2ip;
-  V1LLi* tmp_V1LLip;
-  V2LLi* tmp_V2LLip;
-
-  // 64-bit
-  V8c    tmp_V8c;
-  V4s    tmp_V4s;
-  V2i    tmp_V2i;
-  V1LLi  tmp_V1LLi;
-#ifdef USE_3DNOW
-  V2f    tmp_V2f;
-#endif
-
-  // 128-bit
-  V16c   tmp_V16c;
-  V8s    tmp_V8s;
-  V4i    tmp_V4i;
-  V2LLi  tmp_V2LLi;
-  V4f    tmp_V4f;
-  V2d    tmp_V2d;
-  V2d*   tmp_V2dp;
-  V4f*   tmp_V4fp;
-  const V2d* tmp_V2dCp;
-  const V4f* tmp_V4fCp;
-
-  // 256-bit
-  V32c   tmp_V32c;
-  V4d    tmp_V4d;
-  V8f    tmp_V8f;
-  V4LLi  tmp_V4LLi;
-  V8i    tmp_V8i;
-  V4LLi* tmp_V4LLip;
-  V4d*   tmp_V4dp;
-  V8f*   tmp_V8fp;
-  const V4d* tmp_V4dCp;
-  const V8f* tmp_V8fCp;
-
-  tmp_i = __builtin_ia32_comieq(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_comilt(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_comile(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_comigt(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_comige(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_comineq(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_ucomieq(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_ucomilt(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_ucomile(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_ucomigt(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_ucomige(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_ucomineq(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_comisdeq(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_comisdlt(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_comisdle(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_comisdgt(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_comisdge(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_comisdneq(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_ucomisdeq(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_ucomisdlt(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_ucomisdle(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_ucomisdgt(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_ucomisdge(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_ucomisdneq(tmp_V2d, tmp_V2d);
-  tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 0);
-  tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 1);
-  tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 2);
-  tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 3);
-  tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 4);
-  tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 5);
-  tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 6);
-  tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 7);
-  tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 0);
-  tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 1);
-  tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 2);
-  tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 3);
-  tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 4);
-  tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 5);
-  tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 6);
-  tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 7);
-  tmp_V4f = __builtin_ia32_minps(tmp_V4f, tmp_V4f);
-  tmp_V4f = __builtin_ia32_maxps(tmp_V4f, tmp_V4f);
-  tmp_V4f = __builtin_ia32_minss(tmp_V4f, tmp_V4f);
-  tmp_V4f = __builtin_ia32_maxss(tmp_V4f, tmp_V4f);
-
-  tmp_V8c = __builtin_ia32_paddsb(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_paddsw(tmp_V4s, tmp_V4s);
-  tmp_V8c = __builtin_ia32_psubsb(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_psubsw(tmp_V4s, tmp_V4s);
-  tmp_V8c = __builtin_ia32_paddusb(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_paddusw(tmp_V4s, tmp_V4s);
-  tmp_V8c = __builtin_ia32_psubusb(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_psubusw(tmp_V4s, tmp_V4s);
-  tmp_V4s = __builtin_ia32_pmulhw(tmp_V4s, tmp_V4s);
-  tmp_V4s = __builtin_ia32_pmulhuw(tmp_V4s, tmp_V4s);
-  tmp_V8c = __builtin_ia32_pavgb(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_pavgw(tmp_V4s, tmp_V4s);
-  tmp_V8c = __builtin_ia32_pcmpeqb(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_pcmpeqw(tmp_V4s, tmp_V4s);
-  tmp_V2i = __builtin_ia32_pcmpeqd(tmp_V2i, tmp_V2i);
-  tmp_V8c = __builtin_ia32_pcmpgtb(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_pcmpgtw(tmp_V4s, tmp_V4s);
-  tmp_V2i = __builtin_ia32_pcmpgtd(tmp_V2i, tmp_V2i);
-  tmp_V8c = __builtin_ia32_pmaxub(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_pmaxsw(tmp_V4s, tmp_V4s);
-  tmp_V8c = __builtin_ia32_pminub(tmp_V8c, tmp_V8c);
-  tmp_V4s = __builtin_ia32_pminsw(tmp_V4s, tmp_V4s);
-  tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 0);
-  tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 1);
-  tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 2);
-  tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 3);
-  tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 4);
-  tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 5);
-  tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 6);
-  tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 7);
-  tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 0);
-  tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 1);
-  tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 2);
-  tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 3);
-  tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 4);
-  tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 5);
-  tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 6);
-  tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 7);
-  tmp_V2d = __builtin_ia32_minpd(tmp_V2d, tmp_V2d);
-  tmp_V2d = __builtin_ia32_maxpd(tmp_V2d, tmp_V2d);
-  tmp_V2d = __builtin_ia32_minsd(tmp_V2d, tmp_V2d);
-  tmp_V2d = __builtin_ia32_maxsd(tmp_V2d, tmp_V2d);
-  tmp_V16c = __builtin_ia32_paddsb128(tmp_V16c, tmp_V16c);
-  tmp_V8s = __builtin_ia32_paddsw128(tmp_V8s, tmp_V8s);
-  tmp_V16c = __builtin_ia32_psubsb128(tmp_V16c, tmp_V16c);
-  tmp_V8s = __builtin_ia32_psubsw128(tmp_V8s, tmp_V8s);
-  tmp_V16c = __builtin_ia32_paddusb128(tmp_V16c, tmp_V16c);
-  tmp_V8s = __builtin_ia32_paddusw128(tmp_V8s, tmp_V8s);
-  tmp_V16c = __builtin_ia32_psubusb128(tmp_V16c, tmp_V16c);
-  tmp_V8s = __builtin_ia32_psubusw128(tmp_V8s, tmp_V8s);
-  tmp_V8s = __builtin_ia32_pmulhw128(tmp_V8s, tmp_V8s);
-  tmp_V16c = __builtin_ia32_pavgb128(tmp_V16c, tmp_V16c);
-  tmp_V8s = __builtin_ia32_pavgw128(tmp_V8s, tmp_V8s);
-  tmp_V16c = __builtin_ia32_pmaxub128(tmp_V16c, tmp_V16c);
-  tmp_V8s = __builtin_ia32_pmaxsw128(tmp_V8s, tmp_V8s);
-  tmp_V16c = __builtin_ia32_pminub128(tmp_V16c, tmp_V16c);
-  tmp_V8s = __builtin_ia32_pminsw128(tmp_V8s, tmp_V8s);
-  tmp_V8s = __builtin_ia32_packsswb128(tmp_V8s, tmp_V8s);
-  tmp_V4i = __builtin_ia32_packssdw128(tmp_V4i, tmp_V4i);
-  tmp_V8s = __builtin_ia32_packuswb128(tmp_V8s, tmp_V8s);
-  tmp_V8s = __builtin_ia32_pmulhuw128(tmp_V8s, tmp_V8s);
-  tmp_V4f = __builtin_ia32_addsubps(tmp_V4f, tmp_V4f);
-  tmp_V2d = __builtin_ia32_addsubpd(tmp_V2d, tmp_V2d);
-  tmp_V4f = __builtin_ia32_haddps(tmp_V4f, tmp_V4f);
-  tmp_V2d = __builtin_ia32_haddpd(tmp_V2d, tmp_V2d);
-  tmp_V4f = __builtin_ia32_hsubps(tmp_V4f, tmp_V4f);
-  tmp_V2d = __builtin_ia32_hsubpd(tmp_V2d, tmp_V2d);
-  tmp_V8s = __builtin_ia32_phaddw128(tmp_V8s, tmp_V8s);
-  tmp_V4s = __builtin_ia32_phaddw(tmp_V4s, tmp_V4s);
-  tmp_V4i = __builtin_ia32_phaddd128(tmp_V4i, tmp_V4i);
-  tmp_V2i = __builtin_ia32_phaddd(tmp_V2i, tmp_V2i);
-  tmp_V8s = __builtin_ia32_phaddsw128(tmp_V8s, tmp_V8s);
-  tmp_V4s = __builtin_ia32_phaddsw(tmp_V4s, tmp_V4s);
-  tmp_V8s = __builtin_ia32_phsubw128(tmp_V8s, tmp_V8s);
-  tmp_V4s = __builtin_ia32_phsubw(tmp_V4s, tmp_V4s);
-  tmp_V4i = __builtin_ia32_phsubd128(tmp_V4i, tmp_V4i);
-  tmp_V2i = __builtin_ia32_phsubd(tmp_V2i, tmp_V2i);
-  tmp_V8s = __builtin_ia32_phsubsw128(tmp_V8s, tmp_V8s);
-  tmp_V4s = __builtin_ia32_phsubsw(tmp_V4s, tmp_V4s);
-  tmp_V16c = __builtin_ia32_pmaddubsw128(tmp_V16c, tmp_V16c);
-  tmp_V8c = __builtin_ia32_pmaddubsw(tmp_V8c, tmp_V8c);
-  tmp_V8s = __builtin_ia32_pmulhrsw128(tmp_V8s, tmp_V8s);
-  tmp_V4s = __builtin_ia32_pmulhrsw(tmp_V4s, tmp_V4s);
-  tmp_V16c = __builtin_ia32_pshufb128(tmp_V16c, tmp_V16c);
-  tmp_V8c = __builtin_ia32_pshufb(tmp_V8c, tmp_V8c);
-  tmp_V16c = __builtin_ia32_psignb128(tmp_V16c, tmp_V16c);
-  tmp_V8c = __builtin_ia32_psignb(tmp_V8c, tmp_V8c);
-  tmp_V8s = __builtin_ia32_psignw128(tmp_V8s, tmp_V8s);
-  tmp_V4s = __builtin_ia32_psignw(tmp_V4s, tmp_V4s);
-  tmp_V4i = __builtin_ia32_psignd128(tmp_V4i, tmp_V4i);
-  tmp_V2i = __builtin_ia32_psignd(tmp_V2i, tmp_V2i);
-  tmp_V16c = __builtin_ia32_pabsb128(tmp_V16c);
-  tmp_V8c = __builtin_ia32_pabsb(tmp_V8c);
-  tmp_V8s = __builtin_ia32_pabsw128(tmp_V8s);
-  tmp_V4s = __builtin_ia32_pabsw(tmp_V4s);
-  tmp_V4i = __builtin_ia32_pabsd128(tmp_V4i);
-  tmp_V2i = __builtin_ia32_pabsd(tmp_V2i);
-  tmp_V4s = __builtin_ia32_psllw(tmp_V4s, tmp_V1LLi);
-  tmp_V2i = __builtin_ia32_pslld(tmp_V2i, tmp_V1LLi);
-  tmp_V1LLi = __builtin_ia32_psllq(tmp_V1LLi, tmp_V1LLi);
-  tmp_V4s = __builtin_ia32_psrlw(tmp_V4s, tmp_V1LLi);
-  tmp_V2i = __builtin_ia32_psrld(tmp_V2i, tmp_V1LLi);
-  tmp_V1LLi = __builtin_ia32_psrlq(tmp_V1LLi, tmp_V1LLi);
-  tmp_V4s = __builtin_ia32_psraw(tmp_V4s, tmp_V1LLi);
-  tmp_V2i = __builtin_ia32_psrad(tmp_V2i, tmp_V1LLi);
-  tmp_V2i = __builtin_ia32_pmaddwd(tmp_V4s, tmp_V4s);
-  tmp_V8c = __builtin_ia32_packsswb(tmp_V4s, tmp_V4s);
-  tmp_V4s = __builtin_ia32_packssdw(tmp_V2i, tmp_V2i);
-  tmp_V8c = __builtin_ia32_packuswb(tmp_V4s, tmp_V4s);
-  tmp_i = __builtin_ia32_vec_ext_v2si(tmp_V2i, 0);
-
-  (void) __builtin_ia32_ldmxcsr(tmp_Ui);
-  tmp_Ui = __builtin_ia32_stmxcsr();
-  tmp_V4f = __builtin_ia32_cvtpi2ps(tmp_V4f, tmp_V2i);
-  tmp_V2i = __builtin_ia32_cvtps2pi(tmp_V4f);
-  tmp_i = __builtin_ia32_cvtss2si(tmp_V4f);
-#ifdef USE_64
-  tmp_LLi = __builtin_ia32_cvtss2si64(tmp_V4f);
-#endif
-  tmp_V2i = __builtin_ia32_cvttps2pi(tmp_V4f);
-  (void) __builtin_ia32_maskmovq(tmp_V8c, tmp_V8c, tmp_cp);
-  (void) __builtin_ia32_storeups(tmp_fp, tmp_V4f);
-  (void) __builtin_ia32_storehps(tmp_V2ip, tmp_V4f);
-  (void) __builtin_ia32_storelps(tmp_V2ip, tmp_V4f);
-  tmp_i = __builtin_ia32_movmskps(tmp_V4f);
-  tmp_i = __builtin_ia32_pmovmskb(tmp_V8c);
-  (void) __builtin_ia32_movntps(tmp_fp, tmp_V4f);
-  (void) __builtin_ia32_movntq(tmp_V1LLip, tmp_V1LLi);
-  (void) __builtin_ia32_sfence();
-
-  tmp_V4s = __builtin_ia32_psadbw(tmp_V8c, tmp_V8c);
-  tmp_V4f = __builtin_ia32_rcpps(tmp_V4f);
-  tmp_V4f = __builtin_ia32_rcpss(tmp_V4f);
-  tmp_V4f = __builtin_ia32_rsqrtps(tmp_V4f);
-  tmp_V4f = __builtin_ia32_rsqrtss(tmp_V4f);
-  tmp_V4f = __builtin_ia32_sqrtps(tmp_V4f);
-  tmp_V4f = __builtin_ia32_sqrtss(tmp_V4f);
-  (void) __builtin_ia32_maskmovdqu(tmp_V16c, tmp_V16c, tmp_cp);
-  (void) __builtin_ia32_storeupd(tmp_dp, tmp_V2d);
-  tmp_i = __builtin_ia32_movmskpd(tmp_V2d);
-  tmp_i = __builtin_ia32_pmovmskb128(tmp_V16c);
-  (void) __builtin_ia32_movnti(tmp_ip, tmp_i);
-  (void) __builtin_ia32_movntpd(tmp_dp, tmp_V2d);
-  (void) __builtin_ia32_movntdq(tmp_V2LLip, tmp_V2LLi);
-  tmp_V2LLi = __builtin_ia32_psadbw128(tmp_V16c, tmp_V16c);
-  tmp_V2d = __builtin_ia32_sqrtpd(tmp_V2d);
-  tmp_V2d = __builtin_ia32_sqrtsd(tmp_V2d);
-  tmp_V2d = __builtin_ia32_cvtdq2pd(tmp_V4i);
-  tmp_V4f = __builtin_ia32_cvtdq2ps(tmp_V4i);
-  tmp_V2LLi = __builtin_ia32_cvtpd2dq(tmp_V2d);
-  tmp_V2i = __builtin_ia32_cvtpd2pi(tmp_V2d);
-  tmp_V4f = __builtin_ia32_cvtpd2ps(tmp_V2d);
-  tmp_V4i = __builtin_ia32_cvttpd2dq(tmp_V2d);
-  tmp_V2i = __builtin_ia32_cvttpd2pi(tmp_V2d);
-  tmp_V2d = __builtin_ia32_cvtpi2pd(tmp_V2i);
-  tmp_i = __builtin_ia32_cvtsd2si(tmp_V2d);
-#ifdef USE_64
-  tmp_LLi = __builtin_ia32_cvtsd2si64(tmp_V2d);
-#endif
-  tmp_V4i = __builtin_ia32_cvtps2dq(tmp_V4f);
-  tmp_V2d = __builtin_ia32_cvtps2pd(tmp_V4f);
-  tmp_V4i = __builtin_ia32_cvttps2dq(tmp_V4f);
-  (void) __builtin_ia32_clflush(tmp_vCp);
-  (void) __builtin_ia32_lfence();
-  (void) __builtin_ia32_mfence();
-  (void) __builtin_ia32_storedqu(tmp_cp, tmp_V16c);
-  tmp_V4s = __builtin_ia32_psllwi(tmp_V4s, tmp_i);
-  tmp_V2i = __builtin_ia32_pslldi(tmp_V2i, tmp_i);
-  tmp_V1LLi = __builtin_ia32_psllqi(tmp_V1LLi, tmp_i);
-  tmp_V4s = __builtin_ia32_psrawi(tmp_V4s, tmp_i);
-  tmp_V2i = __builtin_ia32_psradi(tmp_V2i, tmp_i);
-  tmp_V4s = __builtin_ia32_psrlwi(tmp_V4s, tmp_i);
-  tmp_V2i = __builtin_ia32_psrldi(tmp_V2i, tmp_i);
-  tmp_V1LLi = __builtin_ia32_psrlqi(tmp_V1LLi, tmp_i);
-  tmp_V1LLi = __builtin_ia32_pmuludq(tmp_V2i, tmp_V2i);
-  tmp_V2LLi = __builtin_ia32_pmuludq128(tmp_V4i, tmp_V4i);
-  tmp_V8s = __builtin_ia32_psraw128(tmp_V8s, tmp_V8s);
-  tmp_V4i = __builtin_ia32_psrad128(tmp_V4i, tmp_V4i);
-  tmp_V8s = __builtin_ia32_psrlw128(tmp_V8s, tmp_V8s);
-  tmp_V4i = __builtin_ia32_psrld128(tmp_V4i, tmp_V4i);
-  tmp_V2LLi = __builtin_ia32_psrlq128(tmp_V2LLi, tmp_V2LLi);
-  tmp_V8s = __builtin_ia32_psllw128(tmp_V8s, tmp_V8s);
-  tmp_V4i = __builtin_ia32_pslld128(tmp_V4i, tmp_V4i);
-  tmp_V2LLi = __builtin_ia32_psllq128(tmp_V2LLi, tmp_V2LLi);
-  tmp_V8s = __builtin_ia32_psllwi128(tmp_V8s, tmp_i);
-  tmp_V4i = __builtin_ia32_pslldi128(tmp_V4i, tmp_i);
-  tmp_V2LLi = __builtin_ia32_psllqi128(tmp_V2LLi, tmp_i);
-  tmp_V8s = __builtin_ia32_psrlwi128(tmp_V8s, tmp_i);
-  tmp_V4i = __builtin_ia32_psrldi128(tmp_V4i, tmp_i);
-  tmp_V2LLi = __builtin_ia32_psrlqi128(tmp_V2LLi, tmp_i);
-  tmp_V8s = __builtin_ia32_psrawi128(tmp_V8s, tmp_i);
-  tmp_V4i = __builtin_ia32_psradi128(tmp_V4i, tmp_i);
-  tmp_V8s = __builtin_ia32_pmaddwd128(tmp_V8s, tmp_V8s);
-  (void) __builtin_ia32_monitor(tmp_vp, tmp_Ui, tmp_Ui);
-  (void) __builtin_ia32_mwait(tmp_Ui, tmp_Ui);
-  tmp_V16c = __builtin_ia32_lddqu(tmp_cCp);
-  tmp_V2LLi = __builtin_ia32_palignr128(tmp_V2LLi, tmp_V2LLi, imm_i);
-  tmp_V1LLi = __builtin_ia32_palignr(tmp_V1LLi, tmp_V1LLi, imm_i);
-#ifdef USE_SSE4
-  tmp_V16c = __builtin_ia32_pblendvb128(tmp_V16c, tmp_V16c, tmp_V16c);
-  tmp_V8s = __builtin_ia32_pblendw128(tmp_V8s, tmp_V8s, imm_i_0_256);
-  tmp_V2d = __builtin_ia32_blendpd(tmp_V2d, tmp_V2d, imm_i_0_256);
-  tmp_V4f = __builtin_ia32_blendps(tmp_V4f, tmp_V4f, imm_i_0_256);
-  tmp_V2d = __builtin_ia32_blendvpd(tmp_V2d, tmp_V2d, tmp_V2d);
-  tmp_V4f = __builtin_ia32_blendvps(tmp_V4f, tmp_V4f, tmp_V4f);
-  tmp_V8s = __builtin_ia32_packusdw128(tmp_V4i, tmp_V4i);
-  tmp_V16c = __builtin_ia32_pmaxsb128(tmp_V16c, tmp_V16c);
-  tmp_V4i = __builtin_ia32_pmaxsd128(tmp_V4i, tmp_V4i);
-  tmp_V4i = __builtin_ia32_pmaxud128(tmp_V4i, tmp_V4i);
-  tmp_V8s = __builtin_ia32_pmaxuw128(tmp_V8s, tmp_V8s);
-  tmp_V16c = __builtin_ia32_pminsb128(tmp_V16c, tmp_V16c);
-  tmp_V4i = __builtin_ia32_pminsd128(tmp_V4i, tmp_V4i);
-  tmp_V4i = __builtin_ia32_pminud128(tmp_V4i, tmp_V4i);
-  tmp_V8s = __builtin_ia32_pminuw128(tmp_V8s, tmp_V8s);
-  tmp_V4i = __builtin_ia32_pmovsxbd128(tmp_V16c);
-  tmp_V2LLi = __builtin_ia32_pmovsxbq128(tmp_V16c);
-  tmp_V8s = __builtin_ia32_pmovsxbw128(tmp_V16c);
-  tmp_V2LLi = __builtin_ia32_pmovsxdq128(tmp_V4i);
-  tmp_V4i = __builtin_ia32_pmovsxwd128(tmp_V8s);
-  tmp_V2LLi = __builtin_ia32_pmovsxwq128(tmp_V8s);
-  tmp_V4i = __builtin_ia32_pmovzxbd128(tmp_V16c);
-  tmp_V2LLi = __builtin_ia32_pmovzxbq128(tmp_V16c);
-  tmp_V8s = __builtin_ia32_pmovzxbw128(tmp_V16c);
-  tmp_V2LLi = __builtin_ia32_pmovzxdq128(tmp_V4i);
-  tmp_V4i = __builtin_ia32_pmovzxwd128(tmp_V8s);
-  tmp_V2LLi = __builtin_ia32_pmovzxwq128(tmp_V8s);
-  tmp_V2LLi = __builtin_ia32_pmuldq128(tmp_V4i, tmp_V4i);
-  tmp_V4i = __builtin_ia32_pmulld128(tmp_V4i, tmp_V4i);
-  tmp_V4f = __builtin_ia32_roundps(tmp_V4f, imm_i_0_16);
-  tmp_V4f = __builtin_ia32_roundss(tmp_V4f, tmp_V4f, imm_i_0_16);
-  tmp_V2d = __builtin_ia32_roundsd(tmp_V2d, tmp_V2d, imm_i_0_16);
-  tmp_V2d = __builtin_ia32_roundpd(tmp_V2d, imm_i_0_16);
-  tmp_V4f = __builtin_ia32_insertps128(tmp_V4f, tmp_V4f, tmp_i);
-#endif
-
-  tmp_V4d = __builtin_ia32_addsubpd256(tmp_V4d, tmp_V4d);
-  tmp_V8f = __builtin_ia32_addsubps256(tmp_V8f, tmp_V8f);
-  tmp_V4d = __builtin_ia32_haddpd256(tmp_V4d, tmp_V4d);
-  tmp_V8f = __builtin_ia32_hsubps256(tmp_V8f, tmp_V8f);
-  tmp_V4d = __builtin_ia32_hsubpd256(tmp_V4d, tmp_V4d);
-  tmp_V8f = __builtin_ia32_haddps256(tmp_V8f, tmp_V8f);
-  tmp_V4d = __builtin_ia32_maxpd256(tmp_V4d, tmp_V4d);
-  tmp_V8f = __builtin_ia32_maxps256(tmp_V8f, tmp_V8f);
-  tmp_V4d = __builtin_ia32_minpd256(tmp_V4d, tmp_V4d);
-  tmp_V8f = __builtin_ia32_minps256(tmp_V8f, tmp_V8f);
-  tmp_V2d = __builtin_ia32_vpermilvarpd(tmp_V2d, tmp_V2LLi);
-  tmp_V4f = __builtin_ia32_vpermilvarps(tmp_V4f, tmp_V4i);
-  tmp_V4d = __builtin_ia32_vpermilvarpd256(tmp_V4d, tmp_V4LLi);
-  tmp_V8f = __builtin_ia32_vpermilvarps256(tmp_V8f, tmp_V8i);
-  tmp_V4d = __builtin_ia32_blendpd256(tmp_V4d, tmp_V4d, 0x7);
-  tmp_V8f = __builtin_ia32_blendps256(tmp_V8f, tmp_V8f, 0x7);
-  tmp_V4d = __builtin_ia32_blendvpd256(tmp_V4d, tmp_V4d, tmp_V4d);
-  tmp_V8f = __builtin_ia32_blendvps256(tmp_V8f, tmp_V8f, tmp_V8f);
-  tmp_V8f = __builtin_ia32_dpps256(tmp_V8f, tmp_V8f, 0x7);
-  tmp_V4d = __builtin_ia32_cmppd256(tmp_V4d, tmp_V4d, 0);
-  tmp_V8f = __builtin_ia32_cmpps256(tmp_V8f, tmp_V8f, 0);
-  tmp_V2d = __builtin_ia32_vextractf128_pd256(tmp_V4d, 0x7);
-  tmp_V4f = __builtin_ia32_vextractf128_ps256(tmp_V8f, 0x7);
-  tmp_V4i = __builtin_ia32_vextractf128_si256(tmp_V8i, 0x7);
-  tmp_V4d = __builtin_ia32_cvtdq2pd256(tmp_V4i);
-  tmp_V8f = __builtin_ia32_cvtdq2ps256(tmp_V8i);
-  tmp_V4f = __builtin_ia32_cvtpd2ps256(tmp_V4d);
-  tmp_V8i = __builtin_ia32_cvtps2dq256(tmp_V8f);
-  tmp_V4d = __builtin_ia32_cvtps2pd256(tmp_V4f);
-  tmp_V4i = __builtin_ia32_cvttpd2dq256(tmp_V4d);
-  tmp_V4i = __builtin_ia32_cvtpd2dq256(tmp_V4d);
-  tmp_V8i = __builtin_ia32_cvttps2dq256(tmp_V8f);
-  tmp_V4d = __builtin_ia32_vperm2f128_pd256(tmp_V4d, tmp_V4d, 0x7);
-  tmp_V8f = __builtin_ia32_vperm2f128_ps256(tmp_V8f, tmp_V8f, 0x7);
-  tmp_V8i = __builtin_ia32_vperm2f128_si256(tmp_V8i, tmp_V8i, 0x7);
-  tmp_V4d = __builtin_ia32_vinsertf128_pd256(tmp_V4d, tmp_V2d, 0x7);
-  tmp_V8f = __builtin_ia32_vinsertf128_ps256(tmp_V8f, tmp_V4f, 0x7);
-  tmp_V8i = __builtin_ia32_vinsertf128_si256(tmp_V8i, tmp_V4i, 0x7);
-  tmp_V4d = __builtin_ia32_sqrtpd256(tmp_V4d);
-  tmp_V8f = __builtin_ia32_sqrtps256(tmp_V8f);
-  tmp_V8f = __builtin_ia32_rsqrtps256(tmp_V8f);
-  tmp_V8f = __builtin_ia32_rcpps256(tmp_V8f);
-  tmp_V4d = __builtin_ia32_roundpd256(tmp_V4d, 0x1);
-  tmp_V8f = __builtin_ia32_roundps256(tmp_V8f, 0x1);
-  tmp_i = __builtin_ia32_vtestzpd(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_vtestcpd(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_vtestnzcpd(tmp_V2d, tmp_V2d);
-  tmp_i = __builtin_ia32_vtestzps(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_vtestcps(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_vtestnzcps(tmp_V4f, tmp_V4f);
-  tmp_i = __builtin_ia32_vtestzpd256(tmp_V4d, tmp_V4d);
-  tmp_i = __builtin_ia32_vtestcpd256(tmp_V4d, tmp_V4d);
-  tmp_i = __builtin_ia32_vtestnzcpd256(tmp_V4d, tmp_V4d);
-  tmp_i = __builtin_ia32_vtestzps256(tmp_V8f, tmp_V8f);
-  tmp_i = __builtin_ia32_vtestcps256(tmp_V8f, tmp_V8f);
-  tmp_i = __builtin_ia32_vtestnzcps256(tmp_V8f, tmp_V8f);
-  tmp_i = __builtin_ia32_ptestz256(tmp_V4LLi, tmp_V4LLi);
-  tmp_i = __builtin_ia32_ptestc256(tmp_V4LLi, tmp_V4LLi);
-  tmp_i = __builtin_ia32_ptestnzc256(tmp_V4LLi, tmp_V4LLi);
-  tmp_i = __builtin_ia32_movmskpd256(tmp_V4d);
-  tmp_i = __builtin_ia32_movmskps256(tmp_V8f);
-  __builtin_ia32_vzeroall();
-  __builtin_ia32_vzeroupper();
-  tmp_V4f = __builtin_ia32_vbroadcastss(tmp_fCp);
-  tmp_V4d = __builtin_ia32_vbroadcastsd256(tmp_dCp);
-  tmp_V8f = __builtin_ia32_vbroadcastss256(tmp_fCp);
-  tmp_V4d = __builtin_ia32_vbroadcastf128_pd256(tmp_V2dCp);
-  tmp_V8f = __builtin_ia32_vbroadcastf128_ps256(tmp_V4fCp);
-  __builtin_ia32_storeupd256(tmp_dp, tmp_V4d);
-  __builtin_ia32_storeups256(tmp_fp, tmp_V8f);
-  __builtin_ia32_storedqu256(tmp_cp, tmp_V32c);
-  tmp_V32c = __builtin_ia32_lddqu256(tmp_cCp);
-  __builtin_ia32_movntdq256(tmp_V4LLip, tmp_V4LLi);
-  __builtin_ia32_movntpd256(tmp_dp, tmp_V4d);
-  __builtin_ia32_movntps256(tmp_fp, tmp_V8f);
-  tmp_V2d = __builtin_ia32_maskloadpd(tmp_V2dCp, tmp_V2d);
-  tmp_V4f = __builtin_ia32_maskloadps(tmp_V4fCp, tmp_V4f);
-  tmp_V4d = __builtin_ia32_maskloadpd256(tmp_V4dCp, tmp_V4d);
-  tmp_V8f = __builtin_ia32_maskloadps256(tmp_V8fCp, tmp_V8f);
-  __builtin_ia32_maskstorepd(tmp_V2dp, tmp_V2d, tmp_V2d);
-  __builtin_ia32_maskstoreps(tmp_V4fp, tmp_V4f, tmp_V4f);
-  __builtin_ia32_maskstorepd256(tmp_V4dp, tmp_V4d, tmp_V4d);
-  __builtin_ia32_maskstoreps256(tmp_V8fp, tmp_V8f, tmp_V8f);
-
-#ifdef USE_3DNOW
-  tmp_V8c = __builtin_ia32_pavgusb(tmp_V8c, tmp_V8c);
-  tmp_V2i = __builtin_ia32_pf2id(tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfacc(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfadd(tmp_V2f, tmp_V2f);
-  tmp_V2i = __builtin_ia32_pfcmpeq(tmp_V2f, tmp_V2f);
-  tmp_V2i = __builtin_ia32_pfcmpge(tmp_V2f, tmp_V2f);
-  tmp_V2i = __builtin_ia32_pfcmpgt(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfmax(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfmin(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfmul(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfrcp(tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfrcpit1(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfrcpit2(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfrsqrt(tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfrsqit1(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfsub(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfsubr(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pi2fd(tmp_V2i);
-  tmp_V4s = __builtin_ia32_pmulhrw(tmp_V4s, tmp_V4s);
-  tmp_V2i = __builtin_ia32_pf2iw(tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfnacc(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pfpnacc(tmp_V2f, tmp_V2f);
-  tmp_V2f = __builtin_ia32_pi2fw(tmp_V2i);
-  tmp_V2f = __builtin_ia32_pswapdsf(tmp_V2f);
-  tmp_V2i = __builtin_ia32_pswapdsi(tmp_V2i);
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,212 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: not grep __builtin %t
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple x86_64-darwin-apple | FileCheck %s
-
-int printf(const char *, ...);
-
-void p(char *str, int x) {
-  printf("%s: %d\n", str, x);
-}
-void q(char *str, double x) {
-  printf("%s: %f\n", str, x);
-}
-void r(char *str, void *ptr) {
-  printf("%s: %p\n", str, ptr);
-}
-
-int random(void);
-
-int main() {
-  int N = random();
-#define P(n,args) p(#n #args, __builtin_##n args)
-#define Q(n,args) q(#n #args, __builtin_##n args)
-#define R(n,args) r(#n #args, __builtin_##n args)
-#define V(n,args) p(#n #args, (__builtin_##n args, 0))
-  P(types_compatible_p, (int, float));
-  P(choose_expr, (0, 10, 20));
-  P(constant_p, (sizeof(10)));
-  P(expect, (N == 12, 0)); 
-  V(prefetch, (&N));
-  V(prefetch, (&N, 1));
-  V(prefetch, (&N, 1, 0));
-  
-  // Numeric Constants
-
-  Q(huge_val, ());
-  Q(huge_valf, ());
-  Q(huge_vall, ());
-  Q(inf, ());
-  Q(inff, ());
-  Q(infl, ());
-
-  P(fpclassify, (0, 1, 2, 3, 4, 1.0));
-  P(fpclassify, (0, 1, 2, 3, 4, 1.0f));
-  P(fpclassify, (0, 1, 2, 3, 4, 1.0l));
-  // FIXME:
-  //  P(isinf_sign, (1.0));
-
-  Q(nan, (""));
-  Q(nanf, (""));
-  Q(nanl, (""));
-  Q(nans, (""));
-  Q(nan, ("10"));
-  Q(nanf, ("10"));
-  Q(nanl, ("10"));
-  Q(nans, ("10"));
-
-  P(isgreater, (1., 2.));
-  P(isgreaterequal, (1., 2.));
-  P(isless, (1., 2.));
-  P(islessequal, (1., 2.));
-  P(islessgreater, (1., 2.));
-  P(isunordered, (1., 2.));
-
-  P(isnan, (1.));
-
-  // Bitwise & Numeric Functions
-
-  P(abs, (N));
-
-  P(clz, (N));
-  P(clzl, (N));
-  P(clzll, (N));
-  P(ctz, (N));
-  P(ctzl, (N));
-  P(ctzll, (N));
-  P(ffs, (N));
-  P(ffsl, (N));
-  P(ffsll, (N));
-  P(parity, (N));
-  P(parityl, (N));
-  P(parityll, (N));
-  P(popcount, (N));
-  P(popcountl, (N));
-  P(popcountll, (N));
-  Q(powi, (1.2f, N));
-  Q(powif, (1.2f, N));
-  Q(powil, (1.2f, N));
-
-  // Lib functions
-  int a, b, n = random(); // Avoid optimizing out.
-  char s0[10], s1[] = "Hello";
-  V(strcat, (s0, s1));
-  V(strcmp, (s0, s1));
-  V(strncat, (s0, s1, n));
-  V(strchr, (s0, s1[0]));
-  V(strrchr, (s0, s1[0]));
-  V(strcpy, (s0, s1));
-  V(strncpy, (s0, s1, n));
-  
-  // Object size checking
-  V(__memset_chk, (s0, 0, sizeof s0, n));
-  V(__memcpy_chk, (s0, s1, sizeof s0, n));
-  V(__memmove_chk, (s0, s1, sizeof s0, n));
-  V(__mempcpy_chk, (s0, s1, sizeof s0, n));
-  V(__strncpy_chk, (s0, s1, sizeof s0, n));
-  V(__strcpy_chk, (s0, s1, n));
-  s0[0] = 0;
-  V(__strcat_chk, (s0, s1, n));
-  P(object_size, (s0, 0));
-  P(object_size, (s0, 1));
-  P(object_size, (s0, 2));
-  P(object_size, (s0, 3));
-
-  // Whatever
-
-  P(bswap16, (N));
-  P(bswap32, (N));
-  P(bswap64, (N));
-  // FIXME
-  // V(clear_cache, (&N, &N+1));
-  V(trap, ());
-  R(extract_return_addr, (&N));
-  P(signbit, (1.0));
-
-  return 0;
-}
-
-
-
-void foo() {
- __builtin_strcat(0, 0);
-}
-
-// CHECK: define void @bar(
-void bar() {
-  float f;
-  double d;
-  long double ld;
-
-  // LLVM's hex representation of float constants is really unfortunate;
-  // basically it does a float-to-double "conversion" and then prints the
-  // hex form of that.  That gives us weird artifacts like exponents
-  // that aren't numerically similar to the original exponent and
-  // significand bit-patterns that are offset by three bits (because
-  // the exponent was expanded from 8 bits to 11).
-  //
-  // 0xAE98 == 1010111010011000
-  // 0x15D3 == 1010111010011
-
-  f = __builtin_huge_valf();     // CHECK: float    0x7FF0000000000000
-  d = __builtin_huge_val();      // CHECK: double   0x7FF0000000000000
-  ld = __builtin_huge_vall();    // CHECK: x86_fp80 0xK7FFF8000000000000000
-  f = __builtin_nanf("");        // CHECK: float    0x7FF8000000000000
-  d = __builtin_nan("");         // CHECK: double   0x7FF8000000000000
-  ld = __builtin_nanl("");       // CHECK: x86_fp80 0xK7FFFC000000000000000
-  f = __builtin_nanf("0xAE98");  // CHECK: float    0x7FF815D300000000
-  d = __builtin_nan("0xAE98");   // CHECK: double   0x7FF800000000AE98
-  ld = __builtin_nanl("0xAE98"); // CHECK: x86_fp80 0xK7FFFC00000000000AE98
-  f = __builtin_nansf("");       // CHECK: float    0x7FF4000000000000
-  d = __builtin_nans("");        // CHECK: double   0x7FF4000000000000
-  ld = __builtin_nansl("");      // CHECK: x86_fp80 0xK7FFFA000000000000000
-  f = __builtin_nansf("0xAE98"); // CHECK: float    0x7FF015D300000000
-  d = __builtin_nans("0xAE98");  // CHECK: double   0x7FF000000000AE98
-  ld = __builtin_nansl("0xAE98");// CHECK: x86_fp80 0xK7FFF800000000000AE98
-
-}
-// CHECK: }
-
-
-// CHECK: define void @test_float_builtins
-void test_float_builtins(float F, double D, long double LD) {
-  volatile int res;
-  res = __builtin_isinf(F);
-  // CHECK:  call float @fabsf(float
-  // CHECK:  fcmp oeq float {{.*}}, 0x7FF0000000000000
-
-  res = __builtin_isinf(D);
-  // CHECK:  call double @fabs(double
-  // CHECK:  fcmp oeq double {{.*}}, 0x7FF0000000000000
-  
-  res = __builtin_isinf(LD);
-  // CHECK:  call x86_fp80 @fabsl(x86_fp80
-  // CHECK:  fcmp oeq x86_fp80 {{.*}}, 0xK7FFF8000000000000000
-  
-  res = __builtin_isfinite(F);
-  // CHECK: fcmp oeq float 
-  // CHECK: call float @fabsf
-  // CHECK: fcmp une float {{.*}}, 0x7FF0000000000000
-  // CHECK: and i1 
-
-  res = __builtin_isnormal(F);
-  // CHECK: fcmp oeq float
-  // CHECK: call float @fabsf
-  // CHECK: fcmp ult float {{.*}}, 0x7FF0000000000000
-  // CHECK: fcmp uge float {{.*}}, 0x3810000000000000
-  // CHECK: and i1
-  // CHECK: and i1
-}
-
-// CHECK: define void @test_builtin_longjmp
-void test_builtin_longjmp(void **buffer) {
-  // CHECK: [[BITCAST:%.*]] = bitcast
-  // CHECK-NEXT: call void @llvm.eh.sjlj.longjmp(i8* [[BITCAST]])
-  __builtin_longjmp(buffer, 1);
-  // CHECK-NEXT: unreachable
-}
-
-// CHECK: define i64 @test_builtin_readcyclecounter
-long long test_builtin_readcyclecounter() {
-  // CHECK: call i64 @llvm.readcyclecounter()
-  return __builtin_readcyclecounter();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtinshufflevector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtinshufflevector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtinshufflevector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep 'shufflevector' | count 1
-// RUN: %clang_cc1 -emit-llvm -ftrapv < %s | grep 'shufflevector' | count 1
-typedef int v4si __attribute__ ((vector_size (16)));
-
-v4si a(v4si x, v4si y) {return __builtin_shufflevector(x, y, 3, 2, 5, (2*3)+1);}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/builtinshufflevector2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/builtinshufflevector2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/builtinshufflevector2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang -emit-llvm -S -o - %s | FileCheck %s
-
-typedef float float4 __attribute__((ext_vector_type(4)));
-typedef unsigned int uint4 __attribute__((ext_vector_type(4)));
-
-// CHECK: define void @clang_shufflevector_v_v(
-void clang_shufflevector_v_v( float4* A, float4 x, uint4 mask ) {
-// CHECK: [[MASK:%.*]] = and <4 x i32> {{%.*}}, <i32 3, i32 3, i32 3, i32 3>
-// CHECK: [[I:%.*]] = extractelement <4 x i32> [[MASK]], i32 0
-// CHECK: [[E:%.*]] = extractelement <4 x float> [[X:%.*]], i32 [[I]]
-//
-// Here is where ToT Clang code generation makes a mistake.  
-// It uses [[I]] as the insertion index instead of 0.
-// Similarly on the remaining insertelement.
-// CHECK: [[V:%[a-zA-Z0-9._]+]] = insertelement <4 x float> undef, float [[E]], i32 0
-
-// CHECK: [[I:%.*]] = extractelement <4 x i32> [[MASK]], i32 1
-// CHECK: [[E:%.*]] = extractelement <4 x float> [[X]], i32 [[I]]
-// CHECK: [[V2:%.*]] = insertelement <4 x float> [[V]], float [[E]], i32 1
-// CHECK: [[I:%.*]] = extractelement <4 x i32> [[MASK]], i32 2
-// CHECK: [[E:%.*]] = extractelement <4 x float> [[X]], i32 [[I]]
-// CHECK: [[V3:%.*]] = insertelement <4 x float> [[V2]], float [[E]], i32 2
-// CHECK: [[I:%.*]] = extractelement <4 x i32> [[MASK]], i32 3
-// CHECK: [[E:%.*]] = extractelement <4 x float> [[X]], i32 [[I]]
-// CHECK: [[V4:%.*]] = insertelement <4 x float> [[V3]], float [[E]], i32 3
-// CHECK: store <4 x float> [[V4]], <4 x float>* {{%.*}},
-  *A = __builtin_shufflevector( x, mask );
-}
-
-// CHECK: define void @clang_shufflevector_v_v_c(
-void clang_shufflevector_v_v_c( float4* A, float4 x, float4 y, uint4 mask ) {
-// CHECK: [[V:%.*]] = shufflevector <4 x float> {{%.*}}, <4 x float> {{%.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
-// CHECK: store <4 x float> [[V]], <4 x float>* {{%.*}}
-  *A = __builtin_shufflevector( x, y, 0, 4, 1, 5 );
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/byval-memcpy-elim.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/byval-memcpy-elim.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/byval-memcpy-elim.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10 < %s | FileCheck %s
-
-struct Test1S {
- long NumDecls;
- long X;
- long Y;
-};
-struct Test2S {
- long NumDecls;
- long X;
-};
-
-// Make sure we don't generate extra memcpy for lvalues
-void test1a(struct Test1S, struct Test2S);
-// CHECK: define void @test1(
-// CHECK-NOT: memcpy
-// CHECK: call void @test1a
-void test1(struct Test1S *A, struct Test2S *B) {
-  test1a(*A, *B);
-}
-
-// The above gets tricker when the byval argument requires higher alignment
-// than the natural alignment of the type in question.
-// rdar://9483886
-
-// Make sure we do generate a memcpy when we cannot guarantee alignment.
-struct Test3S {
-  int a,b,c,d,e,f,g,h,i,j,k,l;
-};
-void test2a(struct Test3S q);
-// CHECK: define void @test2(
-// CHECK: alloca %struct.Test3S, align 8
-// CHECK: memcpy
-// CHECK: call void @test2a
-void test2(struct Test3S *q) {
-  test2a(*q);
-}
-
-// But make sure we don't generate a memcpy when we can guarantee alignment.
-void fooey(void);
-// CHECK: define void @test3(
-// CHECK: alloca %struct.Test3S, align 8
-// CHECK: call void @fooey
-// CHECK-NOT: memcpy
-// CHECK: call void @test2a
-// CHECK-NOT: memcpy
-// CHECK: call void @test2a
-void test3(struct Test3S a) {
-  struct Test3S b = a;
-  fooey();
-  test2a(a);
-  test2a(b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/c-strings.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/c-strings.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/c-strings.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// Should be 3 hello strings, two global (of different sizes), the rest are
-// shared.
-
-// CHECK: @align = global i8 [[ALIGN:[0-9]+]]
-// CHECK: @.str = private unnamed_addr constant [6 x i8] c"hello\00"
-// CHECK: @f1.x = internal global i8* getelementptr inbounds ([6 x i8]* @.str, i32 0, i32 0)
-// CHECK: @f2.x = internal global [6 x i8] c"hello\00", align [[ALIGN]]
-// CHECK: @f3.x = internal global [8 x i8] c"hello\00\00\00", align [[ALIGN]]
-// CHECK: @f4.x = internal global %struct.s { i8* getelementptr inbounds ([6 x i8]* @.str, i32 0, i32 0) }
-// CHECK: @x = global [3 x i8] c"ola", align [[ALIGN]]
-
-#if defined(__s390x__)
-unsigned char align = 2;
-#else
-unsigned char align = 1;
-#endif
-
-void bar(const char *);
-
-// CHECK: define void @f0()
-void f0() {
-  bar("hello");
-  // CHECK: call void @bar({{.*}} @.str
-}
-
-// CHECK: define void @f1()
-void f1() {
-  static char *x = "hello";
-  bar(x);
-  // CHECK: [[T1:%.*]] = load i8** @f1.x
-  // CHECK: call void @bar(i8* [[T1:%.*]])
-}
-
-// CHECK: define void @f2()
-void f2() {
-  static char x[] = "hello";
-  bar(x);
-  // CHECK: call void @bar({{.*}} @f2.x
-}
-
-// CHECK: define void @f3()
-void f3() {
-  static char x[8] = "hello";
-  bar(x);
-  // CHECK: call void @bar({{.*}} @f3.x
-}
-
-void gaz(void *);
-
-// CHECK: define void @f4()
-void f4() {
-  static struct s {
-    char *name;
-  } x = { "hello" };
-  gaz(&x);
-  // CHECK: call void @gaz({{.*}} @f4.x
-}
-
-char x[3] = "ola";
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/c11atomics-ios.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/c11atomics-ios.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/c11atomics-ios.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,214 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-apple-ios -std=c11 | FileCheck %s
-
-// There isn't really anything special about iOS; it just happens to
-// only deploy on processors with native atomics support, so it's a good
-// way to test those code-paths.
-
-// This work was done in pursuit of <rdar://13338582>.
-
-// CHECK: define arm_aapcscc void @testFloat(float*
-void testFloat(_Atomic(float) *fp) {
-// CHECK:      [[FP:%.*]] = alloca float*
-// CHECK-NEXT: [[X:%.*]] = alloca float
-// CHECK-NEXT: [[F:%.*]] = alloca float
-// CHECK-NEXT: store float* {{%.*}}, float** [[FP]]
-
-// CHECK-NEXT: [[T0:%.*]] = load float** [[FP]]
-// CHECK-NEXT: store float 1.000000e+00, float* [[T0]], align 4
-  __c11_atomic_init(fp, 1.0f);
-
-// CHECK-NEXT: store float 2.000000e+00, float* [[X]], align 4
-  _Atomic(float) x = 2.0f;
-
-// CHECK-NEXT: [[T0:%.*]] = load float** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast float* [[T0]] to i32*
-// CHECK-NEXT: [[T2:%.*]] = load atomic i32* [[T1]] seq_cst, align 4
-// CHECK-NEXT: [[T3:%.*]] = bitcast i32 [[T2]] to float
-// CHECK-NEXT: store float [[T3]], float* [[F]]
-  float f = *fp;
-
-// CHECK-NEXT: [[T0:%.*]] = load float* [[F]], align 4
-// CHECK-NEXT: [[T1:%.*]] = load float** [[FP]], align 4
-// CHECK-NEXT: [[T2:%.*]] = bitcast float [[T0]] to i32
-// CHECK-NEXT: [[T3:%.*]] = bitcast float* [[T1]] to i32*
-// CHECK-NEXT: store atomic i32 [[T2]], i32* [[T3]] seq_cst, align 4
-  *fp = f;
-
-// CHECK-NEXT: ret void
-}
-
-// CHECK: define arm_aapcscc void @testComplexFloat([[CF:{ float, float }]]*
-void testComplexFloat(_Atomic(_Complex float) *fp) {
-// CHECK:      [[FP:%.*]] = alloca [[CF]]*, align 4
-// CHECK-NEXT: [[X:%.*]] = alloca [[CF]], align 8
-// CHECK-NEXT: [[F:%.*]] = alloca [[CF]], align 4
-// CHECK-NEXT: [[TMP0:%.*]] = alloca [[CF]], align 8
-// CHECK-NEXT: [[TMP1:%.*]] = alloca [[CF]], align 8
-// CHECK-NEXT: store [[CF]]*
-
-// CHECK-NEXT: [[P:%.*]] = load [[CF]]** [[FP]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[P]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[CF]]* [[P]], i32 0, i32 1
-// CHECK-NEXT: store float 1.000000e+00, float* [[T0]]
-// CHECK-NEXT: store float 0.000000e+00, float* [[T1]]
-  __c11_atomic_init(fp, 1.0f);
-
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[X]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[CF]]* [[X]], i32 0, i32 1
-// CHECK-NEXT: store float 2.000000e+00, float* [[T0]]
-// CHECK-NEXT: store float 0.000000e+00, float* [[T1]]
-  _Atomic(_Complex float) x = 2.0f;
-
-// CHECK-NEXT: [[T0:%.*]] = load [[CF]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[CF]]* [[T0]] to i64*
-// CHECK-NEXT: [[T2:%.*]] = load atomic i64* [[T1]] seq_cst, align 8
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[CF]]* [[TMP0]] to i64*
-// CHECK-NEXT: store i64 [[T2]], i64* [[T3]], align 8
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[TMP0]], i32 0, i32 0
-// CHECK-NEXT: [[R:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[TMP0]], i32 0, i32 1
-// CHECK-NEXT: [[I:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[F]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[CF]]* [[F]], i32 0, i32 1
-// CHECK-NEXT: store float [[R]], float* [[T0]]
-// CHECK-NEXT: store float [[I]], float* [[T1]]
-  _Complex float f = *fp;
-
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[F]], i32 0, i32 0
-// CHECK-NEXT: [[R:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[F]], i32 0, i32 1
-// CHECK-NEXT: [[I:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[DEST:%.*]] = load [[CF]]** [[FP]], align 4
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[TMP1]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[CF]]* [[TMP1]], i32 0, i32 1
-// CHECK-NEXT: store float [[R]], float* [[T0]]
-// CHECK-NEXT: store float [[I]], float* [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[CF]]* [[TMP1]] to i64*
-// CHECK-NEXT: [[T1:%.*]] = load i64* [[T0]], align 8
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[CF]]* [[DEST]] to i64*
-// CHECK-NEXT: store atomic i64 [[T1]], i64* [[T2]] seq_cst, align 8
-  *fp = f;
-
-// CHECK-NEXT: ret void
-}
-
-typedef struct { short x, y, z, w; } S;
-// CHECK: define arm_aapcscc void @testStruct([[S:.*]]*
-void testStruct(_Atomic(S) *fp) {
-// CHECK:      [[FP:%.*]] = alloca [[S]]*, align 4
-// CHECK-NEXT: [[X:%.*]] = alloca [[S]], align 8
-// CHECK-NEXT: [[F:%.*]] = alloca [[S:%.*]], align 2
-// CHECK-NEXT: [[TMP0:%.*]] = alloca [[S]], align 8
-// CHECK-NEXT: store [[S]]*
-
-// CHECK-NEXT: [[P:%.*]] = load [[S]]** [[FP]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[S]]* [[P]] to i8*
-// CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 8, i32 8, i1 false)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[P]], i32 0, i32 0
-// CHECK-NEXT: store i16 1, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[P]], i32 0, i32 1
-// CHECK-NEXT: store i16 2, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[P]], i32 0, i32 2
-// CHECK-NEXT: store i16 3, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[P]], i32 0, i32 3
-// CHECK-NEXT: store i16 4, i16* [[T0]], align 2
-  __c11_atomic_init(fp, (S){1,2,3,4});
-
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[S]]* [[X]] to i8*
-// CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 8, i32 8, i1 false)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[X]], i32 0, i32 0
-// CHECK-NEXT: store i16 1, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[X]], i32 0, i32 1
-// CHECK-NEXT: store i16 2, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[X]], i32 0, i32 2
-// CHECK-NEXT: store i16 3, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[X]], i32 0, i32 3
-// CHECK-NEXT: store i16 4, i16* [[T0]], align 2
-  _Atomic(S) x = (S){1,2,3,4};
-
-// CHECK-NEXT: [[T0:%.*]] = load [[S]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[S]]* [[T0]] to i64*
-// CHECK-NEXT: [[T2:%.*]] = load atomic i64* [[T1]] seq_cst, align 8
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[S]]* [[F]] to i64*
-// CHECK-NEXT: store i64 [[T2]], i64* [[T3]], align 2
-  S f = *fp;
-
-// CHECK-NEXT: [[T0:%.*]] = load [[S]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[S]]* [[TMP0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[S]]* [[F]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[T1]], i8* [[T2]], i32 8, i32 2, i1 false)
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[S]]* [[TMP0]] to i64*
-// CHECK-NEXT: [[T4:%.*]] = load i64* [[T3]], align 8
-// CHECK-NEXT: [[T5:%.*]] = bitcast [[S]]* [[T0]] to i64*
-// CHECK-NEXT: store atomic i64 [[T4]], i64* [[T5]] seq_cst, align 8
-  *fp = f;
-
-// CHECK-NEXT: ret void
-}
-
-typedef struct { short x, y, z; } PS;
-// CHECK: define arm_aapcscc void @testPromotedStruct([[APS:.*]]*
-void testPromotedStruct(_Atomic(PS) *fp) {
-// CHECK:      [[FP:%.*]] = alloca [[APS]]*, align 4
-// CHECK-NEXT: [[X:%.*]] = alloca [[APS]], align 8
-// CHECK-NEXT: [[F:%.*]] = alloca [[PS:%.*]], align 2
-// CHECK-NEXT: [[TMP0:%.*]] = alloca [[APS]], align 8
-// CHECK-NEXT: [[TMP1:%.*]] = alloca [[APS]], align 8
-// CHECK-NEXT: store [[APS]]*
-
-// CHECK-NEXT: [[P:%.*]] = load [[APS]]** [[FP]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[APS]]* [[P]] to i8*
-// CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 8, i32 8, i1 false)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[APS]]* [[P]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 0
-// CHECK-NEXT: store i16 1, i16* [[T1]], align 2
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 1
-// CHECK-NEXT: store i16 2, i16* [[T1]], align 2
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 2
-// CHECK-NEXT: store i16 3, i16* [[T1]], align 2
-  __c11_atomic_init(fp, (PS){1,2,3});
-
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[APS]]* [[X]] to i8*
-// CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 8, i32 8, i1 false)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[APS]]* [[X]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 0
-// CHECK-NEXT: store i16 1, i16* [[T1]], align 2
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 1
-// CHECK-NEXT: store i16 2, i16* [[T1]], align 2
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 2
-// CHECK-NEXT: store i16 3, i16* [[T1]], align 2
-  _Atomic(PS) x = (PS){1,2,3};
-
-// CHECK-NEXT: [[T0:%.*]] = load [[APS]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[APS]]* [[T0]] to i64*
-// CHECK-NEXT: [[T2:%.*]] = load atomic i64* [[T1]] seq_cst, align 8
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[APS]]* [[TMP0]] to i64*
-// CHECK-NEXT: store i64 [[T2]], i64* [[T3]], align 8
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[APS]]* [[TMP0]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[PS]]* [[F]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[PS]]* [[T0]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[T1]], i8* [[T2]], i32 6, i32 2, i1 false)
-  PS f = *fp;
-
-// CHECK-NEXT: [[T0:%.*]] = load [[APS]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[APS]]* [[TMP1]], i32 0, i32 0
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[PS]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[PS]]* [[F]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[T2]], i8* [[T3]], i32 6, i32 2, i1 false)
-// CHECK-NEXT: [[T4:%.*]] = bitcast [[APS]]* [[TMP1]] to i64*
-// CHECK-NEXT: [[T5:%.*]] = load i64* [[T4]], align 8
-// CHECK-NEXT: [[T6:%.*]] = bitcast [[APS]]* [[T0]] to i64*
-// CHECK-NEXT: store atomic i64 [[T5]], i64* [[T6]] seq_cst, align 8
-  *fp = f;
-
-// CHECK-NEXT: ret void
-}
-
-void testPromotedStructOps(_Atomic(PS) *p) {
-  PS a = __c11_atomic_load(p, 5);
-  __c11_atomic_store(p, a, 5);
-  PS b = __c11_atomic_exchange(p, a, 5);
-
-  _Bool v = __c11_atomic_compare_exchange_strong(p, &b, a, 5, 5);
-  v = __c11_atomic_compare_exchange_weak(p, &b, a, 5, 5);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/c11atomics.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/c11atomics.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/c11atomics.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,344 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-freebsd -std=c11 | FileCheck %s
-
-// Test that we are generating atomicrmw instructions, rather than
-// compare-exchange loops for common atomic ops.  This makes a big difference
-// on RISC platforms, where the compare-exchange loop becomes a ll/sc pair for
-// the load and then another ll/sc in the loop, expanding to about 30
-// instructions when it should be only 4.  It has a smaller, but still
-// noticeable, impact on platforms like x86 and RISC-V, where there are atomic
-// RMW instructions.
-//
-// We currently emit cmpxchg loops for most operations on _Bools, because
-// they're sufficiently rare that it's not worth making sure that the semantics
-// are correct.
-
-typedef int __attribute__((vector_size(16))) vector;
-
-_Atomic(_Bool) b;
-_Atomic(int) i;
-_Atomic(long long) l;
-_Atomic(short) s;
-_Atomic(char*) p;
-_Atomic(float) f;
-_Atomic(vector) v;
-
-// CHECK: testinc
-void testinc(void)
-{
-  // Special case for suffix bool++, sets to true and returns the old value.
-  // CHECK: atomicrmw xchg i8* @b, i8 1 seq_cst
-  b++;
-  // CHECK: atomicrmw add i32* @i, i32 1 seq_cst
-  i++;
-  // CHECK: atomicrmw add i64* @l, i64 1 seq_cst
-  l++;
-  // CHECK: atomicrmw add i16* @s, i16 1 seq_cst
-  s++;
-  // Prefix increment
-  // Special case for bool: set to true and return true
-  // CHECK: store atomic i8 1, i8* @b seq_cst, align 1
-  ++b;
-  // Currently, we have no variant of atomicrmw that returns the new value, so
-  // we have to generate an atomic add, which returns the old value, and then a
-  // non-atomic add.
-  // CHECK: atomicrmw add i32* @i, i32 1 seq_cst
-  // CHECK: add i32 
-  ++i;
-  // CHECK: atomicrmw add i64* @l, i64 1 seq_cst
-  // CHECK: add i64
-  ++l;
-  // CHECK: atomicrmw add i16* @s, i16 1 seq_cst
-  // CHECK: add i16
-  ++s;
-}
-// CHECK: testdec
-void testdec(void)
-{
-  // CHECK: cmpxchg i8* @b
-  b--;
-  // CHECK: atomicrmw sub i32* @i, i32 1 seq_cst
-  i--;
-  // CHECK: atomicrmw sub i64* @l, i64 1 seq_cst
-  l--;
-  // CHECK: atomicrmw sub i16* @s, i16 1 seq_cst
-  s--;
-  // CHECK: cmpxchg i8* @b
-  --b;
-  // CHECK: atomicrmw sub i32* @i, i32 1 seq_cst
-  // CHECK: sub i32
-  --i;
-  // CHECK: atomicrmw sub i64* @l, i64 1 seq_cst
-  // CHECK: sub i64
-  --l;
-  // CHECK: atomicrmw sub i16* @s, i16 1 seq_cst
-  // CHECK: sub i16
-  --s;
-}
-// CHECK: testaddeq
-void testaddeq(void)
-{
-  // CHECK: cmpxchg i8* @b
-  // CHECK: atomicrmw add i32* @i, i32 42 seq_cst
-  // CHECK: atomicrmw add i64* @l, i64 42 seq_cst
-  // CHECK: atomicrmw add i16* @s, i16 42 seq_cst
-  b += 42;
-  i += 42;
-  l += 42;
-  s += 42;
-}
-// CHECK: testsubeq
-void testsubeq(void)
-{
-  // CHECK: cmpxchg i8* @b
-  // CHECK: atomicrmw sub i32* @i, i32 42 seq_cst
-  // CHECK: atomicrmw sub i64* @l, i64 42 seq_cst
-  // CHECK: atomicrmw sub i16* @s, i16 42 seq_cst
-  b -= 42;
-  i -= 42;
-  l -= 42;
-  s -= 42;
-}
-// CHECK: testxoreq
-void testxoreq(void)
-{
-  // CHECK: cmpxchg i8* @b
-  // CHECK: atomicrmw xor i32* @i, i32 42 seq_cst
-  // CHECK: atomicrmw xor i64* @l, i64 42 seq_cst
-  // CHECK: atomicrmw xor i16* @s, i16 42 seq_cst
-  b ^= 42;
-  i ^= 42;
-  l ^= 42;
-  s ^= 42;
-}
-// CHECK: testoreq
-void testoreq(void)
-{
-  // CHECK: cmpxchg i8* @b
-  // CHECK: atomicrmw or i32* @i, i32 42 seq_cst
-  // CHECK: atomicrmw or i64* @l, i64 42 seq_cst
-  // CHECK: atomicrmw or i16* @s, i16 42 seq_cst
-  b |= 42;
-  i |= 42;
-  l |= 42;
-  s |= 42;
-}
-// CHECK: testandeq
-void testandeq(void)
-{
-  // CHECK: cmpxchg i8* @b
-  // CHECK: atomicrmw and i32* @i, i32 42 seq_cst
-  // CHECK: atomicrmw and i64* @l, i64 42 seq_cst
-  // CHECK: atomicrmw and i16* @s, i16 42 seq_cst
-  b &= 42;
-  i &= 42;
-  l &= 42;
-  s &= 42;
-}
-
-// CHECK: define arm_aapcscc void @testFloat(float*
-void testFloat(_Atomic(float) *fp) {
-// CHECK:      [[FP:%.*]] = alloca float*
-// CHECK-NEXT: [[X:%.*]] = alloca float
-// CHECK-NEXT: [[F:%.*]] = alloca float
-// CHECK-NEXT: [[TMP0:%.*]] = alloca float
-// CHECK-NEXT: [[TMP1:%.*]] = alloca float
-// CHECK-NEXT: store float* {{%.*}}, float** [[FP]]
-
-// CHECK-NEXT: [[T0:%.*]] = load float** [[FP]]
-// CHECK-NEXT: store float 1.000000e+00, float* [[T0]], align 4
-  __c11_atomic_init(fp, 1.0f);
-
-// CHECK-NEXT: store float 2.000000e+00, float* [[X]], align 4
-  _Atomic(float) x = 2.0f;
-
-// CHECK-NEXT: [[T0:%.*]] = load float** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast float* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = bitcast float* [[TMP0]] to i8*
-// CHECK-NEXT: call arm_aapcscc void @__atomic_load(i32 4, i8* [[T1]], i8* [[T2]], i32 5)
-// CHECK-NEXT: [[T3:%.*]] = load float* [[TMP0]], align 4
-// CHECK-NEXT: store float [[T3]], float* [[F]]
-  float f = *fp;
-
-// CHECK-NEXT: [[T0:%.*]] = load float* [[F]], align 4
-// CHECK-NEXT: [[T1:%.*]] = load float** [[FP]], align 4
-// CHECK-NEXT: store float [[T0]], float* [[TMP1]], align 4
-// CHECK-NEXT: [[T2:%.*]] = bitcast float* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = bitcast float* [[TMP1]] to i8*
-// CHECK-NEXT: call arm_aapcscc void @__atomic_store(i32 4, i8* [[T2]], i8* [[T3]], i32 5)
-  *fp = f;
-
-// CHECK-NEXT: ret void
-}
-
-// CHECK: define arm_aapcscc void @testComplexFloat([[CF:{ float, float }]]*
-void testComplexFloat(_Atomic(_Complex float) *fp) {
-// CHECK:      [[FP:%.*]] = alloca [[CF]]*, align 4
-// CHECK-NEXT: [[X:%.*]] = alloca [[CF]], align 8
-// CHECK-NEXT: [[F:%.*]] = alloca [[CF]], align 4
-// CHECK-NEXT: [[TMP0:%.*]] = alloca [[CF]], align 8
-// CHECK-NEXT: [[TMP1:%.*]] = alloca [[CF]], align 8
-// CHECK-NEXT: store [[CF]]*
-
-// CHECK-NEXT: [[P:%.*]] = load [[CF]]** [[FP]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[P]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[CF]]* [[P]], i32 0, i32 1
-// CHECK-NEXT: store float 1.000000e+00, float* [[T0]]
-// CHECK-NEXT: store float 0.000000e+00, float* [[T1]]
-  __c11_atomic_init(fp, 1.0f);
-
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[X]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[CF]]* [[X]], i32 0, i32 1
-// CHECK-NEXT: store float 2.000000e+00, float* [[T0]]
-// CHECK-NEXT: store float 0.000000e+00, float* [[T1]]
-  _Atomic(_Complex float) x = 2.0f;
-
-// CHECK-NEXT: [[T0:%.*]] = load [[CF]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[CF]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[CF]]* [[TMP0]] to i8*
-// CHECK-NEXT: call arm_aapcscc void @__atomic_load(i32 8, i8* [[T1]], i8* [[T2]], i32 5)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[TMP0]], i32 0, i32 0
-// CHECK-NEXT: [[R:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[TMP0]], i32 0, i32 1
-// CHECK-NEXT: [[I:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[F]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[CF]]* [[F]], i32 0, i32 1
-// CHECK-NEXT: store float [[R]], float* [[T0]]
-// CHECK-NEXT: store float [[I]], float* [[T1]]
-  _Complex float f = *fp;
-
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[F]], i32 0, i32 0
-// CHECK-NEXT: [[R:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[F]], i32 0, i32 1
-// CHECK-NEXT: [[I:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[DEST:%.*]] = load [[CF]]** [[FP]], align 4
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[CF]]* [[TMP1]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[CF]]* [[TMP1]], i32 0, i32 1
-// CHECK-NEXT: store float [[R]], float* [[T0]]
-// CHECK-NEXT: store float [[I]], float* [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[CF]]* [[DEST]] to i8*
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[CF]]* [[TMP1]] to i8*
-// CHECK-NEXT: call arm_aapcscc void @__atomic_store(i32 8, i8* [[T0]], i8* [[T1]], i32 5)
-  *fp = f;
-
-// CHECK-NEXT: ret void
-}
-
-typedef struct { short x, y, z, w; } S;
-// CHECK: define arm_aapcscc void @testStruct([[S:.*]]*
-void testStruct(_Atomic(S) *fp) {
-// CHECK:      [[FP:%.*]] = alloca [[S]]*, align 4
-// CHECK-NEXT: [[X:%.*]] = alloca [[S]], align 8
-// CHECK-NEXT: [[F:%.*]] = alloca [[S:%.*]], align 2
-// CHECK-NEXT: [[TMP0:%.*]] = alloca [[S]], align 8
-// CHECK-NEXT: store [[S]]*
-
-// CHECK-NEXT: [[P:%.*]] = load [[S]]** [[FP]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[S]]* [[P]] to i8*
-// CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 8, i32 8, i1 false)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[P]], i32 0, i32 0
-// CHECK-NEXT: store i16 1, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[P]], i32 0, i32 1
-// CHECK-NEXT: store i16 2, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[P]], i32 0, i32 2
-// CHECK-NEXT: store i16 3, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[P]], i32 0, i32 3
-// CHECK-NEXT: store i16 4, i16* [[T0]], align 2
-  __c11_atomic_init(fp, (S){1,2,3,4});
-
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[S]]* [[X]] to i8*
-// CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 8, i32 8, i1 false)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[X]], i32 0, i32 0
-// CHECK-NEXT: store i16 1, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[X]], i32 0, i32 1
-// CHECK-NEXT: store i16 2, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[X]], i32 0, i32 2
-// CHECK-NEXT: store i16 3, i16* [[T0]], align 2
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[S]]* [[X]], i32 0, i32 3
-// CHECK-NEXT: store i16 4, i16* [[T0]], align 2
-  _Atomic(S) x = (S){1,2,3,4};
-
-// CHECK-NEXT: [[T0:%.*]] = load [[S]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[S]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[S]]* [[F]] to i8*
-// CHECK-NEXT: call arm_aapcscc void @__atomic_load(i32 8, i8* [[T1]], i8* [[T2]], i32 5)
-  S f = *fp;
-
-// CHECK-NEXT: [[T0:%.*]] = load [[S]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[S]]* [[TMP0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[S]]* [[F]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[T1]], i8* [[T2]], i32 8, i32 2, i1 false)
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[S]]* [[T0]] to i8*
-// CHECK-NEXT: [[T4:%.*]] = bitcast [[S]]* [[TMP0]] to i8*
-// CHECK-NEXT: call arm_aapcscc void @__atomic_store(i32 8, i8* [[T3]], i8* [[T4]], i32 5)
-  *fp = f;
-
-// CHECK-NEXT: ret void
-}
-
-typedef struct { short x, y, z; } PS;
-// CHECK: define arm_aapcscc void @testPromotedStruct([[APS:.*]]*
-void testPromotedStruct(_Atomic(PS) *fp) {
-// CHECK:      [[FP:%.*]] = alloca [[APS]]*, align 4
-// CHECK-NEXT: [[X:%.*]] = alloca [[APS]], align 8
-// CHECK-NEXT: [[F:%.*]] = alloca [[PS:%.*]], align 2
-// CHECK-NEXT: [[TMP0:%.*]] = alloca [[APS]], align 8
-// CHECK-NEXT: [[TMP1:%.*]] = alloca [[APS]], align 8
-// CHECK-NEXT: store [[APS]]*
-
-// CHECK-NEXT: [[P:%.*]] = load [[APS]]** [[FP]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[APS]]* [[P]] to i8*
-// CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 8, i32 8, i1 false)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[APS]]* [[P]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 0
-// CHECK-NEXT: store i16 1, i16* [[T1]], align 2
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 1
-// CHECK-NEXT: store i16 2, i16* [[T1]], align 2
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 2
-// CHECK-NEXT: store i16 3, i16* [[T1]], align 2
-  __c11_atomic_init(fp, (PS){1,2,3});
-
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[APS]]* [[X]] to i8*
-// CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 8, i32 8, i1 false)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[APS]]* [[X]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 0
-// CHECK-NEXT: store i16 1, i16* [[T1]], align 2
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 1
-// CHECK-NEXT: store i16 2, i16* [[T1]], align 2
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[PS]]* [[T0]], i32 0, i32 2
-// CHECK-NEXT: store i16 3, i16* [[T1]], align 2
-  _Atomic(PS) x = (PS){1,2,3};
-
-// CHECK-NEXT: [[T0:%.*]] = load [[APS]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[APS]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[APS]]* [[TMP0]] to i8*
-// CHECK-NEXT: call arm_aapcscc void @__atomic_load(i32 8, i8* [[T1]], i8* [[T2]], i32 5)
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[APS]]* [[TMP0]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[PS]]* [[F]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[PS]]* [[T0]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[T1]], i8* [[T2]], i32 6, i32 2, i1 false)
-  PS f = *fp;
-
-// CHECK-NEXT: [[T0:%.*]] = load [[APS]]** [[FP]]
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[APS]]* [[TMP1]], i32 0, i32 0
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[PS]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[PS]]* [[F]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[T2]], i8* [[T3]], i32 6, i32 2, i1 false)
-// CHECK-NEXT: [[T4:%.*]] = bitcast [[APS]]* [[T0]] to i8*
-// CHECK-NEXT: [[T5:%.*]] = bitcast [[APS]]* [[TMP1]] to i8*
-// CHECK-NEXT: call arm_aapcscc void @__atomic_store(i32 8, i8* [[T4]], i8* [[T5]], i32 5)
-  *fp = f;
-
-// CHECK-NEXT: ret void
-}
-
-// CHECK: define arm_aapcscc void @testPromotedStructOps([[APS:.*]]*
-
-// FIXME: none of these look right, but we can leave the "test" here
-// to make sure they at least don't crash.
-void testPromotedStructOps(_Atomic(PS) *p) {
-  PS a = __c11_atomic_load(p, 5);
-  __c11_atomic_store(p, a, 5);
-  PS b = __c11_atomic_exchange(p, a, 5);
-  _Bool v = __c11_atomic_compare_exchange_strong(p, &b, a, 5, 5);
-  v = __c11_atomic_compare_exchange_weak(p, &b, a, 5, 5);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/call.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/call.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/call.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang %s -O0 -emit-llvm -S -o - | FileCheck %s
-
-// This should call rb_define_global_function, not rb_f_chop.
-void rb_define_global_function (const char*,void(*)(),int);
-static void rb_f_chop();
-void Init_String() {
-  rb_define_global_function("chop", rb_f_chop, 0);
-}
-static void rb_f_chop() {
-}
-
-// CHECK: call{{.*}}rb_define_global_function
-
-// PR10335
-typedef   void (* JSErrorCallback)(void);
-void js_GetErrorMessage(void);
-void JS_ReportErrorNumber(JSErrorCallback errorCallback, ...);
-void Interpret() {
-  JS_ReportErrorNumber(js_GetErrorMessage, 0);
-  
-  // CHECK: call void ({{.*}}, ...)* @JS_ReportErrorNumber({{.*}}@js_GetErrorMessage
-}
-
-
-
-
-// PR10337
-struct sigaction { int (*_sa_handler)(int); };
-typedef int SigHandler ();
-typedef struct sigaction sighandler_cxt;
-SigHandler *rl_set_sighandler(ohandler)
-sighandler_cxt *ohandler;  {
-  return 0;
-}
-
-void rl_set_signals() {
-  SigHandler *oh;
-  oh = rl_set_sighandler(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/capture-complex-expr-in-block.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/capture-complex-expr-in-block.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/capture-complex-expr-in-block.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -fblocks -triple x86_64-apple-darwin10 | FileCheck %s
-// rdar://10033986
-
-typedef void (^BLOCK)(void);
-int main ()
-{
-    _Complex double c;
-    BLOCK b =  ^() {
-      _Complex double z;
-      z = z + c;
-    };
-    b();
-}
-
-// CHECK: define internal void @__main_block_invoke
-// CHECK:  [[C1:%.*]] = alloca { double, double }, align 8
-// CHECK:  [[RP:%.*]] = getelementptr inbounds { double, double }* [[C1]], i32 0, i32 0
-// CHECK-NEXT:  [[R:%.*]] = load double* [[RP]]
-// CHECK-NEXT:  [[IP:%.*]] = getelementptr inbounds { double, double }* [[C1]], i32 0, i32 1
-// CHECK-NEXT:  [[I:%.*]] = load double* [[IP]]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/cast-emit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/cast-emit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/cast-emit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-typedef union {
-  int    i;
-  float  f;
-} MyUnion;
-void unionf(MyUnion a);
-void uniontest(float a) {
-  f((MyUnion)1.0f);
-// CHECK: store float 1.000000e+00
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-extern void go(const void *p);
-float v[2] = { 0.0, 1.0 };
-void foo(void) { go(v); }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/catch-undef-behavior.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/catch-undef-behavior.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/catch-undef-behavior.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,437 +0,0 @@
-// RUN: %clang_cc1 -fsanitize=alignment,null,object-size,shift,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s
-// RUN: %clang_cc1 -fsanitize-undefined-trap-on-error -fsanitize=alignment,null,object-size,shift,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s --check-prefix=CHECK-TRAP
-// RUN: %clang_cc1 -fsanitize=null -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s --check-prefix=CHECK-NULL
-// RUN: %clang_cc1 -fsanitize=signed-integer-overflow -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s --check-prefix=CHECK-OVERFLOW
-
-// CHECK: @[[INT:.*]] = private unnamed_addr constant { i16, i16, [6 x i8] } { i16 0, i16 11, [6 x i8] c"'int'\00" }
-
-// FIXME: When we only emit each type once, use [[INT]] more below.
-// CHECK: @[[LINE_100:.*]] = private unnamed_addr global {{.*}}, i32 100, i32 5 {{.*}} @[[INT]], i64 4, i8 1
-// CHECK: @[[LINE_200:.*]] = {{.*}}, i32 200, i32 10 {{.*}}, i64 4, i8 0
-// CHECK: @[[LINE_300:.*]] = {{.*}}, i32 300, i32 12 {{.*}} @{{.*}}, {{.*}} @{{.*}}
-// CHECK: @[[LINE_400:.*]] = {{.*}}, i32 400, i32 12 {{.*}} @{{.*}}, {{.*}} @{{.*}}
-// CHECK: @[[LINE_500:.*]] = {{.*}}, i32 500, i32 10 {{.*}} @{{.*}}, i64 4, i8 0 }
-// CHECK: @[[LINE_600:.*]] = {{.*}}, i32 600, i32 3 {{.*}} @{{.*}}, i64 4, i8 1 }
-
-// CHECK: @[[STRUCT_S:.*]] = private unnamed_addr constant { i16, i16, [11 x i8] } { i16 -1, i16 0, [11 x i8] c"'struct S'\00" }
-
-// CHECK: @[[LINE_700:.*]] = {{.*}}, i32 700, i32 14 {{.*}} @[[STRUCT_S]], i64 4, i8 3 }
-// CHECK: @[[LINE_800:.*]] = {{.*}}, i32 800, i32 12 {{.*}} @{{.*}} }
-// CHECK: @[[LINE_900:.*]] = {{.*}}, i32 900, i32 11 {{.*}} @{{.*}} }
-
-// CHECK-NULL: @[[LINE_100:.*]] = private unnamed_addr global {{.*}}, i32 100, i32 5 {{.*}}
-
-// PR6805
-// CHECK: @foo
-// CHECK-NULL: @foo
-// CHECK-TRAP: @foo
-void foo() {
-  union { int i; } u;
-  // CHECK:      %[[CHECK0:.*]] = icmp ne {{.*}}* %[[PTR:.*]], null
-  // CHECK-TRAP: %[[CHECK0:.*]] = icmp ne {{.*}}* %[[PTR:.*]], null
-
-  // CHECK:      %[[I8PTR:.*]] = bitcast i32* %[[PTR]] to i8*
-  // CHECK-NEXT: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64(i8* %[[I8PTR]], i1 false)
-  // CHECK-NEXT: %[[CHECK1:.*]] = icmp uge i64 %[[SIZE]], 4
-  // CHECK-NEXT: %[[CHECK01:.*]] = and i1 %[[CHECK0]], %[[CHECK1]]
-
-  // CHECK-TRAP:      %[[I8PTR:.*]] = bitcast i32* %[[PTR]] to i8*
-  // CHECK-TRAP-NEXT: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64(i8* %[[I8PTR]], i1 false)
-  // CHECK-TRAP-NEXT: %[[CHECK1:.*]] = icmp uge i64 %[[SIZE]], 4
-  // CHECK-TRAP-NEXT: %[[CHECK01:.*]] = and i1 %[[CHECK0]], %[[CHECK1]]
-
-  // CHECK:      %[[PTRTOINT:.*]] = ptrtoint {{.*}}* %[[PTR]] to i64
-  // CHECK-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRTOINT]], 3
-  // CHECK-NEXT: %[[CHECK2:.*]] = icmp eq i64 %[[MISALIGN]], 0
-
-  // CHECK-TRAP:      %[[PTRTOINT:.*]] = ptrtoint {{.*}}* %[[PTR]] to i64
-  // CHECK-TRAP-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRTOINT]], 3
-  // CHECK-TRAP-NEXT: %[[CHECK2:.*]] = icmp eq i64 %[[MISALIGN]], 0
-
-  // CHECK:      %[[OK:.*]] = and i1 %[[CHECK01]], %[[CHECK2]]
-  // CHECK-NEXT: br i1 %[[OK]], {{.*}} !prof ![[WEIGHT_MD:.*]]
-
-  // CHECK-TRAP:      %[[OK:.*]] = and i1 %[[CHECK01]], %[[CHECK2]]
-  // CHECK-TRAP-NEXT: br i1 %[[OK]], {{.*}}
-
-  // CHECK:      %[[ARG:.*]] = ptrtoint {{.*}} %[[PTR]] to i64
-  // CHECK-NEXT: call void @__ubsan_handle_type_mismatch(i8* bitcast ({{.*}} @[[LINE_100]] to i8*), i64 %[[ARG]])
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW:#[0-9]+]]
-  // CHECK-TRAP-NEXT: unreachable
-
-  // With -fsanitize=null, only perform the null check.
-  // CHECK-NULL: %[[NULL:.*]] = icmp ne {{.*}}, null
-  // CHECK-NULL: br i1 %[[NULL]]
-  // CHECK-NULL: call void @__ubsan_handle_type_mismatch(i8* bitcast ({{.*}} @[[LINE_100]] to i8*), i64 %{{.*}})
-#line 100
-  u.i=1;
-}
-
-// CHECK: @bar
-// CHECK-TRAP: @bar
-int bar(int *a) {
-  // CHECK:      %[[SIZE:.*]] = call i64 @llvm.objectsize.i64
-  // CHECK-NEXT: icmp uge i64 %[[SIZE]], 4
-
-  // CHECK-TRAP:      %[[SIZE:.*]] = call i64 @llvm.objectsize.i64
-  // CHECK-TRAP-NEXT: icmp uge i64 %[[SIZE]], 4
-
-  // CHECK:      %[[PTRINT:.*]] = ptrtoint
-  // CHECK-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRINT]], 3
-  // CHECK-NEXT: icmp eq i64 %[[MISALIGN]], 0
-
-  // CHECK-TRAP:      %[[PTRINT:.*]] = ptrtoint
-  // CHECK-TRAP-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRINT]], 3
-  // CHECK-TRAP-NEXT: icmp eq i64 %[[MISALIGN]], 0
-
-  // CHECK:      %[[ARG:.*]] = ptrtoint
-  // CHECK-NEXT: call void @__ubsan_handle_type_mismatch(i8* bitcast ({{.*}} @[[LINE_200]] to i8*), i64 %[[ARG]])
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-
-#line 200
-  return *a;
-}
-
-// CHECK: @addr_space
-int addr_space(int __attribute__((address_space(256))) *a) {
-  // CHECK-NOT: __ubsan
-  return *a;
-}
-
-// CHECK: @lsh_overflow
-// CHECK-TRAP: @lsh_overflow
-int lsh_overflow(int a, int b) {
-  // CHECK:      %[[INBOUNDS:.*]] = icmp ule i32 %[[RHS:.*]], 31
-  // CHECK-NEXT: br i1 %[[INBOUNDS]], label %[[CHECKBB:.*]], label %[[CONTBB:.*]]
-
-  // CHECK-TRAP:      %[[INBOUNDS:.*]] = icmp ule i32 %[[RHS:.*]], 31
-  // CHECK-TRAP-NEXT: br i1 %[[INBOUNDS]], label %[[CHECKBB:.*]], label %[[CONTBB:.*]]
-
-  // CHECK:      %[[SHIFTED_OUT_WIDTH:.*]] = sub nuw nsw i32 31, %[[RHS]]
-  // CHECK-NEXT: %[[SHIFTED_OUT:.*]] = lshr i32 %[[LHS:.*]], %[[SHIFTED_OUT_WIDTH]]
-  // CHECK-NEXT: %[[NO_OVERFLOW:.*]] = icmp eq i32 %[[SHIFTED_OUT]], 0
-  // CHECK-NEXT: br label %[[CONTBB]]
-
-  // CHECK-TRAP:      %[[SHIFTED_OUT_WIDTH:.*]] = sub nuw nsw i32 31, %[[RHS]]
-  // CHECK-TRAP-NEXT: %[[SHIFTED_OUT:.*]] = lshr i32 %[[LHS:.*]], %[[SHIFTED_OUT_WIDTH]]
-  // CHECK-TRAP-NEXT: %[[NO_OVERFLOW:.*]] = icmp eq i32 %[[SHIFTED_OUT]], 0
-  // CHECK-TRAP-NEXT: br label %[[CONTBB]]
-
-  // CHECK:      %[[VALID:.*]] = phi i1 [ %[[INBOUNDS]], {{.*}} ], [ %[[NO_OVERFLOW]], %[[CHECKBB]] ]
-  // CHECK-NEXT: br i1 %[[VALID]], {{.*}} !prof ![[WEIGHT_MD]]
-
-  // CHECK-TRAP:      %[[VALID:.*]] = phi i1 [ %[[INBOUNDS]], {{.*}} ], [ %[[NO_OVERFLOW]], %[[CHECKBB]] ]
-  // CHECK-TRAP-NEXT: br i1 %[[VALID]]
-
-
-  // CHECK:      %[[ARG1:.*]] = zext
-  // CHECK-NEXT: %[[ARG2:.*]] = zext
-  // CHECK-NEXT: call void @__ubsan_handle_shift_out_of_bounds(i8* bitcast ({{.*}} @[[LINE_300]] to i8*), i64 %[[ARG1]], i64 %[[ARG2]])
-  // CHECK-NOT:  call void @__ubsan_handle_shift_out_of_bounds
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP:      unreachable
-  // CHECK-TRAP-NOT:  call void @llvm.trap()
-
-  // CHECK:      %[[RET:.*]] = shl i32 %[[LHS]], %[[RHS]]
-  // CHECK-NEXT: ret i32 %[[RET]]
-
-  // CHECK-TRAP:      %[[RET:.*]] = shl i32 %[[LHS]], %[[RHS]]
-  // CHECK-TRAP-NEXT: ret i32 %[[RET]]
-#line 300
-  return a << b;
-}
-
-// CHECK: @rsh_inbounds
-// CHECK-TRAP: @rsh_inbounds
-int rsh_inbounds(int a, int b) {
-  // CHECK:      %[[INBOUNDS:.*]] = icmp ule i32 %[[RHS:.*]], 31
-  // CHECK:      br i1 %[[INBOUNDS]]
-
-  // CHECK-TRAP: %[[INBOUNDS:.*]] = icmp ule i32 %[[RHS:.*]], 31
-  // CHECK-TRAP: br i1 %[[INBOUNDS]]
-
-  // CHECK:      %[[ARG1:.*]] = zext
-  // CHECK-NEXT: %[[ARG2:.*]] = zext
-  // CHECK-NEXT: call void @__ubsan_handle_shift_out_of_bounds(i8* bitcast ({{.*}} @[[LINE_400]] to i8*), i64 %[[ARG1]], i64 %[[ARG2]])
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-
-  // CHECK:      %[[RET:.*]] = ashr i32 %[[LHS]], %[[RHS]]
-  // CHECK-NEXT: ret i32 %[[RET]]
-
-  // CHECK-TRAP:      %[[RET:.*]] = ashr i32 %[[LHS]], %[[RHS]]
-  // CHECK-TRAP-NEXT: ret i32 %[[RET]]
-#line 400
-  return a >> b;
-}
-
-// CHECK: @load
-// CHECK-TRAP: @load
-int load(int *p) {
-  // CHECK: call void @__ubsan_handle_type_mismatch(i8* bitcast ({{.*}} @[[LINE_500]] to i8*), i64 %{{.*}})
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-#line 500
-  return *p;
-}
-
-// CHECK: @store
-// CHECK-TRAP: @store
-void store(int *p, int q) {
-  // CHECK: call void @__ubsan_handle_type_mismatch(i8* bitcast ({{.*}} @[[LINE_600]] to i8*), i64 %{{.*}})
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-#line 600
-  *p = q;
-}
-
-struct S { int k; };
-
-// CHECK: @member_access
-// CHECK-TRAP: @member_access
-int *member_access(struct S *p) {
-  // CHECK: call void @__ubsan_handle_type_mismatch(i8* bitcast ({{.*}} @[[LINE_700]] to i8*), i64 %{{.*}})
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-#line 700
-  return &p->k;
-}
-
-// CHECK: @signed_overflow
-// CHECK-TRAP: @signed_overflow
-int signed_overflow(int a, int b) {
-  // CHECK:      %[[ARG1:.*]] = zext
-  // CHECK-NEXT: %[[ARG2:.*]] = zext
-  // CHECK-NEXT: call void @__ubsan_handle_add_overflow(i8* bitcast ({{.*}} @[[LINE_800]] to i8*), i64 %[[ARG1]], i64 %[[ARG2]])
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-#line 800
-  return a + b;
-}
-
-// CHECK: @no_return
-// CHECK-TRAP: @no_return
-int no_return() {
-  // Reaching the end of a noreturn function is fine in C.
-  // FIXME: If the user explicitly requests -fsanitize=return, we should catch
-  //        that here even though it's not undefined behavior.
-  // CHECK-NOT: call
-  // CHECK-NOT: unreachable
-  // CHECK: ret i32
-
-  // CHECK-TRAP-NOT: call
-  // CHECK-TRAP-NOT: unreachable
-  // CHECK-TRAP: ret i32
-}
-
-// CHECK: @vla_bound
-void vla_bound(int n) {
-  // CHECK:      icmp sgt i32 %[[PARAM:.*]], 0
-  //
-  // CHECK:      %[[ARG:.*]] = zext i32 %[[PARAM]] to i64
-  // CHECK-NEXT: call void @__ubsan_handle_vla_bound_not_positive(i8* bitcast ({{.*}} @[[LINE_900]] to i8*), i64 %[[ARG]])
-#line 900
-  int arr[n * 3];
-}
-
-// CHECK: @int_float_no_overflow
-float int_float_no_overflow(__int128 n) {
-  // CHECK-NOT: call void @__ubsan_handle
-  return n;
-}
-
-// CHECK: @int_float_overflow
-// CHECK-TRAP: @int_float_overflow
-float int_float_overflow(unsigned __int128 n) {
-  // This is 2**104. FLT_MAX is 2**128 - 2**104.
-  // CHECK: icmp ule i128 %{{.*}}, -20282409603651670423947251286016
-  // CHECK: call void @__ubsan_handle_float_cast_overflow(
-
-  // CHECK-TRAP: %[[INBOUNDS:.*]] = icmp ule i128 %{{.*}}, -20282409603651670423947251286016
-  // CHECK-TRAP-NEXT: br i1 %[[INBOUNDS]]
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-  return n;
-}
-
-// CHECK: @int_fp16_overflow
-// CHECK-TRAP: @int_fp16_overflow
-void int_fp16_overflow(int n, __fp16 *p) {
-  // CHECK: %[[GE:.*]] = icmp sge i32 %{{.*}}, -65504
-  // CHECK: %[[LE:.*]] = icmp sle i32 %{{.*}}, 65504
-  // CHECK: and i1 %[[GE]], %[[LE]]
-  // CHECK: call void @__ubsan_handle_float_cast_overflow(
-
-  // CHECK-TRAP: %[[GE:.*]] = icmp sge i32 %{{.*}}, -65504
-  // CHECK-TRAP: %[[LE:.*]] = icmp sle i32 %{{.*}}, 65504
-  // CHECK-TRAP: %[[INBOUNDS:.*]] = and i1 %[[GE]], %[[LE]]
-  // CHECK-TRAP-NEXT: br i1 %[[INBOUNDS]]
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-  *p = n;
-}
-
-// CHECK: @float_int_overflow
-// CHECK-TRAP: @float_int_overflow
-int float_int_overflow(float f) {
-  // CHECK: %[[GE:.*]] = fcmp ogt float %[[F:.*]], 0xC1E0000020000000
-  // CHECK: %[[LE:.*]] = fcmp olt float %[[F]], 0x41E0000000000000
-  // CHECK: and i1 %[[GE]], %[[LE]]
-
-  // CHECK: %[[CAST:.*]] = bitcast float %[[F]] to i32
-  // CHECK: %[[ARG:.*]] = zext i32 %[[CAST]] to i64
-  // CHECK: call void @__ubsan_handle_float_cast_overflow({{.*}}, i64 %[[ARG]]
-
-  // CHECK-TRAP: %[[GE:.*]] = fcmp ogt float %[[F:.*]], 0xC1E0000020000000
-  // CHECK-TRAP: %[[LE:.*]] = fcmp olt float %[[F]], 0x41E0000000000000
-  // CHECK-TRAP: %[[INBOUNDS:.*]] = and i1 %[[GE]], %[[LE]]
-  // CHECK-TRAP-NEXT: br i1 %[[INBOUNDS]]
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-  return f;
-}
-
-// CHECK: @long_double_int_overflow
-// CHECK-TRAP: @long_double_int_overflow
-int long_double_int_overflow(long double ld) {
-  // CHECK: alloca x86_fp80
-  // CHECK: %[[GE:.*]] = fcmp ogt x86_fp80 %[[F:.*]], 0xKC01E8000000100000000
-  // CHECK: %[[LE:.*]] = fcmp olt x86_fp80 %[[F]], 0xK401E8000000000000000
-  // CHECK: and i1 %[[GE]], %[[LE]]
-
-  // CHECK: store x86_fp80 %[[F]], x86_fp80* %[[ALLOCA:.*]]
-  // CHECK: %[[ARG:.*]] = ptrtoint x86_fp80* %[[ALLOCA]] to i64
-  // CHECK: call void @__ubsan_handle_float_cast_overflow({{.*}}, i64 %[[ARG]]
-
-  // CHECK-TRAP: %[[GE:.*]] = fcmp ogt x86_fp80 %[[F:.*]], 0xKC01E800000010000000
-  // CHECK-TRAP: %[[LE:.*]] = fcmp olt x86_fp80 %[[F]], 0xK401E800000000000000
-  // CHECK-TRAP: %[[INBOUNDS:.*]] = and i1 %[[GE]], %[[LE]]
-  // CHECK-TRAP-NEXT: br i1 %[[INBOUNDS]]
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-  return ld;
-}
-
-// CHECK: @float_uint_overflow
-// CHECK-TRAP: @float_uint_overflow
-unsigned float_uint_overflow(float f) {
-  // CHECK: %[[GE:.*]] = fcmp ogt float %[[F:.*]], -1.{{0*}}e+00
-  // CHECK: %[[LE:.*]] = fcmp olt float %[[F]], 0x41F0000000000000
-  // CHECK: and i1 %[[GE]], %[[LE]]
-  // CHECK: call void @__ubsan_handle_float_cast_overflow(
-
-  // CHECK-TRAP: %[[GE:.*]] = fcmp ogt float %[[F:.*]], -1.{{0*}}e+00
-  // CHECK-TRAP: %[[LE:.*]] = fcmp olt float %[[F]], 0x41F0000000000000
-  // CHECK-TRAP: %[[INBOUNDS:.*]] = and i1 %[[GE]], %[[LE]]
-  // CHECK-TRAP-NEXT: br i1 %[[INBOUNDS]]
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-  return f;
-}
-
-// CHECK: @fp16_char_overflow
-// CHECK-TRAP: @fp16_char_overflow
-signed char fp16_char_overflow(__fp16 *p) {
-  // CHECK: %[[GE:.*]] = fcmp ogt float %[[F:.*]], -1.29{{0*}}e+02
-  // CHECK: %[[LE:.*]] = fcmp olt float %[[F]], 1.28{{0*}}e+02
-  // CHECK: and i1 %[[GE]], %[[LE]]
-  // CHECK: call void @__ubsan_handle_float_cast_overflow(
-
-  // CHECK-TRAP: %[[GE:.*]] = fcmp ogt float %[[F:.*]], -1.29{{0*}}e+02
-  // CHECK-TRAP: %[[LE:.*]] = fcmp olt float %[[F]], 1.28{{0*}}e+02
-  // CHECK-TRAP: %[[INBOUNDS:.*]] = and i1 %[[GE]], %[[LE]]
-  // CHECK-TRAP-NEXT: br i1 %[[INBOUNDS]]
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-  return *p;
-}
-
-// CHECK: @float_float_overflow
-// CHECK-TRAP: @float_float_overflow
-float float_float_overflow(double f) {
-  // CHECK: %[[F:.*]] = call double @llvm.fabs.f64(
-  // CHECK: %[[GE:.*]] = fcmp ogt double %[[F]], 0x47EFFFFFE0000000
-  // CHECK: %[[LE:.*]] = fcmp olt double %[[F]], 0x7FF0000000000000
-  // CHECK: and i1 %[[GE]], %[[LE]]
-  // CHECK: call void @__ubsan_handle_float_cast_overflow(
-
-  // CHECK-TRAP: %[[F:.*]] = call double @llvm.fabs.f64(
-  // CHECK-TRAP: %[[GE:.*]] = fcmp ogt double %[[F]], 0x47EFFFFFE0000000
-  // CHECK-TRAP: %[[LE:.*]] = fcmp olt double %[[F]], 0x7FF0000000000000
-  // CHECK-TRAP: %[[OUTOFBOUNDS:.*]] = and i1 %[[GE]], %[[LE]]
-  // CHECK-TRAP: %[[INBOUNDS:.*]] = xor i1 %[[OUTOFBOUNDS]], true
-  // CHECK-TRAP-NEXT: br i1 %[[INBOUNDS]]
-
-  // CHECK-TRAP:      call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP-NEXT: unreachable
-  return f;
-}
-
-// CHECK:          @int_divide_overflow
-// CHECK-OVERFLOW: @int_divide_overflow
-int int_divide_overflow(int a, int b) {
-  // CHECK:               %[[ZERO:.*]] = icmp ne i32 %[[B:.*]], 0
-  // CHECK-OVERFLOW-NOT:  icmp ne i32 %{{.*}}, 0
-  // CHECK-TRAP:          %[[ZERO:.*]] = icmp ne i32 %[[B:.*]], 0
-
-  // CHECK:               %[[AOK:.*]] = icmp ne i32 %[[A:.*]], -2147483648
-  // CHECK-NEXT:          %[[BOK:.*]] = icmp ne i32 %[[B]], -1
-  // CHECK-NEXT:          %[[OVER:.*]] = or i1 %[[AOK]], %[[BOK]]
-
-  // CHECK-OVERFLOW:      %[[AOK:.*]] = icmp ne i32 %[[A:.*]], -2147483648
-  // CHECK-OVERFLOW-NEXT: %[[BOK:.*]] = icmp ne i32 %[[B:.*]], -1
-  // CHECK-OVERFLOW-NEXT: %[[OK:.*]] = or i1 %[[AOK]], %[[BOK]]
-
-  // CHECK-TRAP:          %[[AOK:.*]] = icmp ne i32 %[[A:.*]], -2147483648
-  // CHECK-TRAP-NEXT:     %[[BOK:.*]] = icmp ne i32 %[[B]], -1
-  // CHECK-TRAP-NEXT:     %[[OVER:.*]] = or i1 %[[AOK]], %[[BOK]]
-
-  // CHECK:               %[[OK:.*]] = and i1 %[[ZERO]], %[[OVER]]
-
-  // CHECK:               br i1 %[[OK]]
-  // CHECK-OVERFLOW:      br i1 %[[OK]]
-
-  // CHECK-TRAP:          %[[OK:.*]] = and i1 %[[ZERO]], %[[OVER]]
-  // CHECK-TRAP:          br i1 %[[OK]]
-
-  // CHECK-TRAP: call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP: unreachable
-  return a / b;
-
-  // CHECK:          }
-  // CHECK-OVERFLOW: }
-  // CHECK-TRAP:     }
-}
-
-// CHECK: @sour_bool
-_Bool sour_bool(_Bool *p) {
-  // CHECK: %[[OK:.*]] = icmp ule i8 {{.*}}, 1
-  // CHECK: br i1 %[[OK]]
-  // CHECK: call void @__ubsan_handle_load_invalid_value(i8* bitcast ({{.*}}), i64 {{.*}})
-
-  // CHECK-TRAP: %[[OK:.*]] = icmp ule i8 {{.*}}, 1
-  // CHECK-TRAP: br i1 %[[OK]]
-
-  // CHECK-TRAP: call void @llvm.trap() [[NR_NUW]]
-  // CHECK-TRAP: unreachable
-  return *p;
-}
-
-// CHECK: ![[WEIGHT_MD]] = metadata !{metadata !"branch_weights", i32 1048575, i32 1}
-
-// CHECK-TRAP: attributes [[NR_NUW]] = { noreturn nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/cfstring.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/cfstring.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/cfstring.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-// <rdar://problem/10657500>: Check that the backing store of CFStrings are
-// constant with the -fwritable-strings flag.
-//
-// RUN: %clang_cc1 -fwritable-strings -emit-llvm %s -o - | FileCheck %s
-//
-// CHECK: @.str = linker_private unnamed_addr constant [14 x i8] c"Hello, World!\00", align 1
-// CHECK: @.str1 = linker_private unnamed_addr constant [7 x i8] c"yo joe\00", align 1
-// CHECK: @.str3 = linker_private unnamed_addr constant [16 x i8] c"Goodbye, World!\00", align 1
-
-#define CFSTR __builtin___CFStringMakeConstantString
-
-void f() {
-  CFSTR("Hello, World!");
-}
-
-// rdar://6248329
-void *G = CFSTR("yo joe");
-
-void h() {
-  static void* h = CFSTR("Goodbye, World!");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/cfstring2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/cfstring2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/cfstring2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-typedef const struct __CFString * CFStringRef;
-
-#define CFSTR(x) (CFStringRef) __builtin___CFStringMakeConstantString (x)
-
-void f() {
-  CFSTR("Hello, World!");
-}
-
-// rdar://6151192
-void *G = CFSTR("yo joe");
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/char-literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/char-literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/char-literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=C %s
-// RUN: %clang_cc1 -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=C %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=CPP0X %s
-
-#include <stddef.h>
-
-int main() {
-  // CHECK-C: store i8 97
-  // CHECK-CPP0X: store i8 97
-  char a = 'a';
-
-  // Should truncate value (equal to last character).
-  // CHECK-C: store i8 98
-  // CHECK-CPP0X: store i8 98
-  char b = 'ab';
-
-  // Should get concatenated characters
-  // CHECK-C: store i32 24930
-  // CHECK-CPP0X: store i32 24930
-  int b1 = 'ab';
-
-  // Should get concatenated characters
-  // CHECK-C: store i32 808464432
-  // CHECK-CPP0X: store i32 808464432
-  int b2 = '0000';
-
-  // Should get truncated value (last four characters concatenated)
-  // CHECK-C: store i32 1919512167
-  // CHECK-CPP0X: store i32 1919512167
-  int b3 = 'somesillylongstring';
-
-  // CHECK-C: store i32 97
-  // CHECK-CPP0X: store i32 97
-  wchar_t wa = L'a';
-
-  // Should pick second character.
-  // CHECK-C: store i32 98
-  // CHECK-CPP0X: store i32 98
-  wchar_t wb = L'ab';
-
-#if __cplusplus >= 201103L
-  // CHECK-CPP0X: store i16 97
-  char16_t ua = u'a';
-
-  // CHECK-CPP0X: store i32 97
-  char32_t Ua = U'a';
-
-  // CHECK-CPP0X: store i16 1047
-  char16_t ua1 = u'З';
-  // CHECK-CPP0X: store i16 12538
-  char16_t ua2 = u'ヺ';
-  // CHECK-CPP0X: store i16 -27177
-  char16_t ua3 = u'闗';
-
-  // CHECK-CPP0X: store i32 181
-  char32_t Ua1 = U'µ';
-  // CHECK-CPP0X: store i32 38359
-  char32_t Ua2 = U'闗';
-  // CHECK-CPP0X: store i32 128128
-  char32_t Ua3 = U'💀';
-
-#endif
-
-  // CHECK-C: store i32 61451
-  // CHECK-CPP0X: store i32 61451
-  wchar_t wc = L'\uF00B';
-
-#if __cplusplus >= 201103L
-  // -4085 == 0xf00b
-  // CHECK-CPP0X: store i16 -4085
-  char16_t uc = u'\uF00B';
-
-  // CHECK-CPP0X: store i32 61451
-  char32_t Uc = U'\uF00B';
-#endif
-
-  // CHECK-C: store i32 1110027
-  // CHECK-CPP0X: store i32 1110027
-  wchar_t wd = L'\U0010F00B';
-
-#if __cplusplus >= 201103L
-  // CHECK-CPP0X: store i32 1110027
-  char32_t Ud = U'\U0010F00B';
-#endif
-
-  // Should pick second character.
-  // CHECK-C: store i32 1110027
-  // CHECK-CPP0X: store i32 1110027
-  wchar_t we = L'\u1234\U0010F00B';
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/cleanup-stack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/cleanup-stack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/cleanup-stack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm %s -o %t
-// RUN: grep "ret i32 9" %t
-
-struct s0 {
-  int *var;
-  int addend;
-};
-
-static void f0(struct s0 *p) {
-  *p->var += p->addend;
-}
-
-int f1(void) {
-  int var = 0;
-  
-  {
-    struct s0 x __attribute__((cleanup(f0))) = { &var, 2 };  
-    struct s0 y __attribute__((cleanup(f0))) = { &var, 3 };
-    {
-      struct s0 y __attribute__((cleanup(f0))) = { &var, 4 };
-    }
-  }
-
-  return var;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/code-coverage.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/code-coverage.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/code-coverage.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -disable-red-zone -femit-coverage-data %s -o - | FileCheck %s
-// RUN: %clang_cc1 -emit-llvm -disable-red-zone -femit-coverage-data -coverage-no-function-names-in-data %s -o - | FileCheck %s --check-prefix WITHOUTNAMES
-
-// <rdar://problem/12843084>
-
-int test1(int a) {
-  switch (a % 2) {
-  case 0:
-    ++a;
-  case 1:
-    a /= 2;
-  }
-  return a;
-}
-
-// Check that the noredzone flag is set on the generated functions.
-
-// CHECK: void @__llvm_gcov_indirect_counter_increment(i32* %{{.*}}, i64** %{{.*}}) unnamed_addr [[NRZ:#[0-9]+]]
-
-// Inside llvm_gcov_writeout, check that -coverage-no-function-names-in-data
-// passes null as the function name.
-// CHECK: void @__llvm_gcov_writeout() unnamed_addr [[NRZ]]
-// CHECK: call void @llvm_gcda_emit_function({{.*}}, i8* getelementptr {{.*}}, {{.*}})
-// WITHOUTNAMES: void @__llvm_gcov_writeout() unnamed_addr
-// WITHOUTNAMES: call void @llvm_gcda_emit_function({{.*}}, i8* null, {{.*}})
-
-// CHECK: void @__llvm_gcov_flush() unnamed_addr [[NRZ]]
-// CHECK: void @__llvm_gcov_init() unnamed_addr [[NRZ]]
-
-// CHECK: attributes [[NRZ]] = { {{.*}}noredzone{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/complex-builtints.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/complex-builtints.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/complex-builtints.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 %s -O1 -emit-llvm -o - | FileCheck %s
-// rdar://8315199
-
-/* Test for builtin conj, creal, cimag.  */
-/* Origin: Joseph Myers <jsm28 at cam.ac.uk> */
-
-extern float _Complex conjf (float _Complex);
-extern double _Complex conj (double _Complex);
-extern long double _Complex conjl (long double _Complex);
-
-extern float crealf (float _Complex);
-extern double creal (double _Complex);
-extern long double creall (long double _Complex);
-
-extern float cimagf (float _Complex);
-extern double cimag (double _Complex);
-extern long double cimagl (long double _Complex);
-
-extern void abort (void);
-extern void link_error (void);
-
-int
-main ()
-{
-  /* For each type, test both runtime and compile time (constant folding)
-     optimization.  */
-  volatile float _Complex fc = 1.0F + 2.0iF;
-  volatile double _Complex dc = 1.0 + 2.0i;
-  volatile long double _Complex ldc = 1.0L + 2.0iL;
-  /* Test floats.  */
-  if (__builtin_conjf (fc) != 1.0F - 2.0iF)
-    abort ();
-  if (__builtin_conjf (1.0F + 2.0iF) != 1.0F - 2.0iF)
-    link_error ();
-  if (__builtin_crealf (fc) != 1.0F)
-    abort ();
-  if (__builtin_crealf (1.0F + 2.0iF) != 1.0F)
-    link_error ();
-  if (__builtin_cimagf (fc) != 2.0F)
-    abort ();
-  if (__builtin_cimagf (1.0F + 2.0iF) != 2.0F)
-    link_error ();
-  /* Test doubles.  */
-  if (__builtin_conj (dc) != 1.0 - 2.0i)
-    abort ();
-  if (__builtin_conj (1.0 + 2.0i) != 1.0 - 2.0i)
-    link_error ();
-  if (__builtin_creal (dc) != 1.0)
-    abort ();
-  if (__builtin_creal (1.0 + 2.0i) != 1.0)
-    link_error ();
-  if (__builtin_cimag (dc) != 2.0)
-    abort ();
-  if (__builtin_cimag (1.0 + 2.0i) != 2.0)
-    link_error ();
-  /* Test long doubles.  */
-  if (__builtin_conjl (ldc) != 1.0L - 2.0iL)
-    abort ();
-  if (__builtin_conjl (1.0L + 2.0iL) != 1.0L - 2.0iL)
-    link_error ();
-  if (__builtin_creall (ldc) != 1.0L)
-    abort ();
-  if (__builtin_creall (1.0L + 2.0iL) != 1.0L)
-    link_error ();
-  if (__builtin_cimagl (ldc) != 2.0L)
-    abort ();
-  if (__builtin_cimagl (1.0L + 2.0iL) != 2.0L)
-    link_error ();
-}
-
-// CHECK-NOT: link_error

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/complex-convert.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/complex-convert.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/complex-convert.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,717 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// Test conversions between complex integer types and standard integer
-// types.  Tests binary operator conversion and assignment conversion
-// with widening, narrowing, and equal-size operands.  Signed and unsigned
-// variations.  Attempts to work for all targets.  Assumptions:
-//
-//  * "char" and "long long" are of different lengths (CHSIZE and LLSIZE).
-//  * Arithmetic is not performed directly on "char" type.
-
-void foo(signed char sc, unsigned char uc, signed long long sll,
-         unsigned long long ull, _Complex signed char csc,
-         _Complex unsigned char cuc, _Complex signed long long csll,
-         _Complex unsigned long long cull) {
-
-  signed char sc1;
-  unsigned char uc1;
-  signed long long sll1;
-  unsigned long long ull1;
-  _Complex signed char csc1;
-  _Complex unsigned char cuc1;
-  _Complex signed long long csll1;
-  _Complex unsigned long long cull1;
-  // CHECK: define void @foo(
-  // CHECK: alloca i[[CHSIZE:[0-9]+]], align [[CHALIGN:[0-9]+]]
-  // CHECK-NEXT: alloca i[[CHSIZE]], align [[CHALIGN]]
-  // CHECK-NEXT: alloca i[[LLSIZE:[0-9]+]], align [[LLALIGN:[0-9]+]]
-
-  sc1 = csc;
-  // CHECK: %[[VAR1:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]]  }* %[[CSC:[A-Za-z0-9.]+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR2:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR1]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR2]], i[[CHSIZE]]* %[[SC1:[A-Za-z0-9.]+]], align [[CHALIGN]]
-
-  sc1 = cuc;
-  // CHECK-NEXT: %[[VAR3:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]]  }* %[[CUC:[A-Za-z0-9.]+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR4:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR3]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR4]], i[[CHSIZE]]* %[[SC1]], align [[CHALIGN]]
-
-  sc1 = csll;
-  // CHECK-NEXT: %[[VAR5:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]]  }* %[[CSLL:[A-Za-z0-9.]+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR6:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR5]]
-  // CHECK-NEXT: %[[VAR7:[A-Za-z0-9.]+]] = trunc i[[LLSIZE]] %[[VAR6]] to i[[CHSIZE]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR7]], i[[CHSIZE]]* %[[SC1]], align [[CHALIGN]]
-
-  sc1 = cull;
-  // CHECK-NEXT: %[[VAR8:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]]  }* %[[CULL:[A-Za-z0-9.]+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR9:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR8]]
-  // CHECK-NEXT: %[[VAR10:[A-Za-z0-9.]+]] = trunc i[[LLSIZE]] %[[VAR9]] to i[[CHSIZE]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR10]], i[[CHSIZE]]* %[[SC1]], align [[CHALIGN]]
-  
-  uc1 = csc;
-  // CHECK-NEXT: %[[VAR11:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]]  }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR12:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR11]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR12]], i[[CHSIZE]]* %[[UC1:[A-Za-z0-9.]+]], align [[CHALIGN]]
-
-  uc1 = cuc;
-  // CHECK-NEXT: %[[VAR13:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]]  }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR14:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR13]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR14]], i[[CHSIZE]]* %[[UC1]], align [[CHALIGN]]
-
-  uc1 = csll;
-  // CHECK-NEXT: %[[VAR15:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]]  }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR16:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR15]]
-  // CHECK-NEXT: %[[VAR17:[A-Za-z0-9.]+]] = trunc i[[LLSIZE]] %[[VAR16]] to i[[CHSIZE]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR17]], i[[CHSIZE]]* %[[UC1]], align [[CHALIGN]]
-
-  uc1 = cull;
-  // CHECK-NEXT: %[[VAR18:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]]  }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR19:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR18]]
-  // CHECK-NEXT: %[[VAR20:[A-Za-z0-9.]+]] = trunc i[[LLSIZE]] %[[VAR19]] to i[[CHSIZE]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR20]], i[[CHSIZE]]* %[[UC1]], align [[CHALIGN]]
-
-  sll1 = csc;
-  // CHECK-NEXT: %[[VAR21:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]]  }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR22:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR21]]
-  // CHECK-NEXT: %[[VAR23:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR22]] to i[[LLSIZE]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR23]], i[[LLSIZE]]* %[[SLL1:[A-Za-z0-9]+]], align [[LLALIGN]]
-
-  sll1 = cuc;
-  // CHECK-NEXT: %[[VAR24:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]]  }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR25:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR24]]
-  // CHECK-NEXT: %[[VAR26:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR25]] to i[[LLSIZE]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR26]], i[[LLSIZE]]* %[[SLL1]], align [[LLALIGN]]
-
-  sll1 = csll;
-  // CHECK-NEXT: %[[VAR27:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR28:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR27]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR28]], i[[LLSIZE]]* %[[SLL1]], align [[LLALIGN]]
-
-  sll1 = cull;
-  // CHECK-NEXT: %[[VAR29:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR30:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR29]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR30]], i[[LLSIZE]]* %[[SLL1]], align [[LLALIGN]]
-  
-  ull1 = csc;
-  // CHECK-NEXT: %[[VAR31:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR32:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR31]]
-  // CHECK-NEXT: %[[VAR33:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR32]] to i[[LLSIZE]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR33]], i[[LLSIZE]]* %[[ULL1:[A-Za-z0-9]+]], align [[LLALIGN]]
-
-  ull1 = cuc;
-  // CHECK-NEXT: %[[VAR34:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR35:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR34]]
-  // CHECK-NEXT: %[[VAR36:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR35]] to i[[LLSIZE]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR36]], i[[LLSIZE]]* %[[ULL1]], align [[LLALIGN]]
-
-  ull1 = csll;
-  // CHECK-NEXT: %[[VAR37:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR38:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR37]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR38]], i[[LLSIZE]]* %[[ULL1]], align [[LLALIGN]]
-
-  ull1 = cull;
-  // CHECK-NEXT: %[[VAR39:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR40:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR39]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR40]], i[[LLSIZE]]* %[[ULL1]], align [[LLALIGN]]
-
-  csc1 = sc;
-  // CHECK-NEXT: %[[VAR41:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR:[A-Za-z0-9.]+]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR42:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1:[A-Za-z0-9.]+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR43:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR41]], i[[CHSIZE]]* %[[VAR42]]
-  // CHECK-NEXT: store i[[CHSIZE]] 0, i[[CHSIZE]]* %[[VAR43]]
-
-  csc1 = uc;
-  // CHECK-NEXT: %[[VAR44:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR:[A-Za-z0-9.]+]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR45:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR46:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR44]], i[[CHSIZE]]* %[[VAR45]]
-  // CHECK-NEXT: store i[[CHSIZE]] 0, i[[CHSIZE]]* %[[VAR46]]
-
-  csc1 = sll;
-  // CHECK-NEXT: %[[VAR47:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR:[A-Za-z0-9.]+]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR48:[A-Za-z0-9.]+]] = trunc i[[LLSIZE]] %[[VAR47]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR49:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR50:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR48]], i[[CHSIZE]]* %[[VAR49]]
-  // CHECK-NEXT: store i[[CHSIZE]] 0, i[[CHSIZE]]* %[[VAR50]]
-
-  csc1 = ull;
-  // CHECK-NEXT: %[[VAR51:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR:[A-Za-z0-9.]+]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR52:[A-Za-z0-9.]+]] = trunc i[[LLSIZE]] %[[VAR51]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR53:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR54:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR52]], i[[CHSIZE]]* %[[VAR53]]
-  // CHECK-NEXT: store i[[CHSIZE]] 0, i[[CHSIZE]]* %[[VAR54]]
-  
-  cuc1 = sc;
-  // CHECK-NEXT: %[[VAR55:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR56:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1:[A-Za-z0-9.]+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR57:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR55]], i[[CHSIZE]]* %[[VAR56]]
-  // CHECK-NEXT: store i[[CHSIZE]] 0, i[[CHSIZE]]* %[[VAR57]]
-
-  cuc1 = uc;
-  // CHECK-NEXT: %[[VAR58:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR59:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR60:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR58]], i[[CHSIZE]]* %[[VAR59]]
-  // CHECK-NEXT: store i[[CHSIZE]] 0, i[[CHSIZE]]* %[[VAR60]]
-
-  cuc1 = sll;
-  // CHECK-NEXT: %[[VAR61:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR62:[A-Za-z0-9.]+]] = trunc i[[LLSIZE]] %[[VAR61]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR63:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR64:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR62]], i[[CHSIZE]]* %[[VAR63]]
-  // CHECK-NEXT: store i[[CHSIZE]] 0, i[[CHSIZE]]* %[[VAR64]]
-
-  cuc1 = ull;
-  // CHECK-NEXT: %[[VAR65:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR66:[A-Za-z0-9.]+]] = trunc i[[LLSIZE]] %[[VAR65]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR67:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR68:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR66]], i[[CHSIZE]]* %[[VAR67]]
-  // CHECK-NEXT: store i[[CHSIZE]] 0, i[[CHSIZE]]* %[[VAR68]]
-
-  csll1 = sc;
-  // CHECK-NEXT: %[[VAR69:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR70:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR69]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR71:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1:[A-Za-z0-9.]+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR72:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR70]], i[[LLSIZE]]* %[[VAR71]]
-  // CHECK-NEXT: store i[[LLSIZE]] 0, i[[LLSIZE]]* %[[VAR72]]
-
-  csll1 = uc;
-  // CHECK-NEXT: %[[VAR73:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR74:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR73]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR75:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR76:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR74]], i[[LLSIZE]]* %[[VAR75]]
-  // CHECK-NEXT: store i[[LLSIZE]] 0, i[[LLSIZE]]* %[[VAR76]]
-
-  csll1 = sll;
-  // CHECK-NEXT: %[[VAR77:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR78:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR79:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR77]], i[[LLSIZE]]* %[[VAR78]]
-  // CHECK-NEXT: store i[[LLSIZE]] 0, i[[LLSIZE]]* %[[VAR79]]
-
-  csll1 = ull;
-  // CHECK-NEXT: %[[VAR77:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR78:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR79:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR77]], i[[LLSIZE]]* %[[VAR78]]
-  // CHECK-NEXT: store i[[LLSIZE]] 0, i[[LLSIZE]]* %[[VAR79]]
-
-  cull1 = sc;
-  // CHECK-NEXT: %[[VAR80:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR81:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR80]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR82:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1:[A-Za-z0-9.]+]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR83:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR81]], i[[LLSIZE]]* %[[VAR82]]
-  // CHECK-NEXT: store i[[LLSIZE]] 0, i[[LLSIZE]]* %[[VAR83]]
-
-  cull1 = uc;
-  // CHECK-NEXT: %[[VAR84:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR85:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR84]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR86:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR87:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR85]], i[[LLSIZE]]* %[[VAR86]]
-  // CHECK-NEXT: store i[[LLSIZE]] 0, i[[LLSIZE]]* %[[VAR87]]
-
-  cull1 = sll;
-  // CHECK-NEXT: %[[VAR88:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR89:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR90:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR88]], i[[LLSIZE]]* %[[VAR89]]
-  // CHECK-NEXT: store i[[LLSIZE]] 0, i[[LLSIZE]]* %[[VAR90]]
-
-  cull1 = ull;
-  // CHECK-NEXT: %[[VAR91:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR92:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR93:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR91]], i[[LLSIZE]]* %[[VAR92]]
-  // CHECK-NEXT: store i[[LLSIZE]] 0, i[[LLSIZE]]* %[[VAR93]]
-
-  csc1 = sc + csc;
-  // CHECK-NEXT: %[[VAR94:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR95:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR94]] to i[[ARSIZE:[0-9]+]]
-  // CHECK-NEXT: %[[VAR96:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR97:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR96]]
-  // CHECK-NEXT: %[[VAR98:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR99:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR98]]
-  // CHECK-NEXT: %[[VAR100:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR97]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR101:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR99]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR102:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR95]], %[[VAR100]]
-  // CHECK-NEXT: %[[VAR103:[A-Za-z0-9.]+]] = add i[[ARSIZE]] 0, %[[VAR101]]
-  // CHECK-NEXT: %[[VAR104:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR102]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR105:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR103]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR106:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR107:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR104]], i[[CHSIZE]]* %[[VAR106]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR105]], i[[CHSIZE]]* %[[VAR107]]
-
-  cuc1 = sc + cuc;
-  // CHECK-NEXT: %[[VAR108:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR109:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR108]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR110:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR111:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR110]]
-  // CHECK-NEXT: %[[VAR112:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR113:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR112]]
-  // CHECK-NEXT: %[[VAR114:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR111]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR115:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR113]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR116:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR109]], %[[VAR114]]
-  // CHECK-NEXT: %[[VAR117:[A-Za-z0-9.]+]] = add i[[ARSIZE]] 0, %[[VAR115]]
-  // CHECK-NEXT: %[[VAR118:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR116]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR119:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR117]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR120:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR121:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR118]], i[[CHSIZE]]* %[[VAR120]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR119]], i[[CHSIZE]]* %[[VAR121]]
-
-  csll1 = sc + csll;
-  // CHECK-NEXT: %[[VAR122:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR123:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR122]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR124:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR125:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR124]]
-  // CHECK-NEXT: %[[VAR126:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR127:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR126]]
-  // CHECK-NEXT: %[[VAR128:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR123]], %[[VAR125]]
-  // CHECK-NEXT: %[[VAR129:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR127]]
-  // CHECK-NEXT: %[[VAR130:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR131:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR128]], i[[LLSIZE]]* %[[VAR130]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR129]], i[[LLSIZE]]* %[[VAR131]]
-
-  cull1 = sc + cull;
-  // CHECK-NEXT: %[[VAR132:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR133:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR132]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR134:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR135:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR134]]
-  // CHECK-NEXT: %[[VAR136:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR137:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR136]]
-  // CHECK-NEXT: %[[VAR138:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR133]], %[[VAR135]]
-  // CHECK-NEXT: %[[VAR139:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR137]]
-  // CHECK-NEXT: %[[VAR140:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR141:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR138]], i[[LLSIZE]]* %[[VAR140]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR139]], i[[LLSIZE]]* %[[VAR141]]
-  
-  csc1 = uc + csc;
-  // CHECK-NEXT: %[[VAR142:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR143:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR142]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR144:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR145:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR144]]
-  // CHECK-NEXT: %[[VAR146:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR147:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR146]]
-  // CHECK-NEXT: %[[VAR148:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR145]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR149:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR147]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR150:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR143]], %[[VAR148]]
-  // CHECK-NEXT: %[[VAR151:[A-Za-z0-9.]+]] = add i[[ARSIZE]] 0, %[[VAR149]]
-  // CHECK-NEXT: %[[VAR152:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR150]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR153:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR151]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR154:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR155:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR152]], i[[CHSIZE]]* %[[VAR154]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR153]], i[[CHSIZE]]* %[[VAR155]]
-
-  cuc1 = uc + cuc;
-  // CHECK-NEXT: %[[VAR156:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR157:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR156]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR158:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR159:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR158]]
-  // CHECK-NEXT: %[[VAR160:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR161:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR160]]
-  // CHECK-NEXT: %[[VAR162:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR159]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR163:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR161]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR164:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR157]], %[[VAR162]]
-  // CHECK-NEXT: %[[VAR165:[A-Za-z0-9.]+]] = add i[[ARSIZE]] 0, %[[VAR163]]
-  // CHECK-NEXT: %[[VAR166:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR164]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR167:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR165]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR168:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR169:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR166]], i[[CHSIZE]]* %[[VAR168]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR167]], i[[CHSIZE]]* %[[VAR169]]
-
-  csll1 = uc + csll;
-  // CHECK-NEXT: %[[VAR170:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR171:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR170]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR172:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR173:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR172]]
-  // CHECK-NEXT: %[[VAR174:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR175:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR174]]
-  // CHECK-NEXT: %[[VAR176:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR171]], %[[VAR173]]
-  // CHECK-NEXT: %[[VAR177:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR175]]
-  // CHECK-NEXT: %[[VAR178:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR179:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR176]], i[[LLSIZE]]* %[[VAR178]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR177]], i[[LLSIZE]]* %[[VAR179]]
-
-  cull1 = uc + cull;
-  // CHECK-NEXT: %[[VAR180:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR181:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR180]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR182:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR183:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR182]]
-  // CHECK-NEXT: %[[VAR184:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR185:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR184]]
-  // CHECK-NEXT: %[[VAR186:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR181]], %[[VAR183]]
-  // CHECK-NEXT: %[[VAR187:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR185]]
-  // CHECK-NEXT: %[[VAR188:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR189:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR186]], i[[LLSIZE]]* %[[VAR188]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR187]], i[[LLSIZE]]* %[[VAR189]]
-
-  csll1 = sll + csc;
-  // CHECK-NEXT: %[[VAR190:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR191:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR192:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR191]]
-  // CHECK-NEXT: %[[VAR193:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR194:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR193]]
-  // CHECK-NEXT: %[[VAR195:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR192]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR196:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR194]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR197:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR190]], %[[VAR195]]
-  // CHECK-NEXT: %[[VAR198:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR196]]
-  // CHECK-NEXT: %[[VAR199:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR200:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR197]], i[[LLSIZE]]* %[[VAR199]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR198]], i[[LLSIZE]]* %[[VAR200]]
-
-  csll1 = sll + cuc;
-  // CHECK-NEXT: %[[VAR201:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR202:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR203:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR202]]
-  // CHECK-NEXT: %[[VAR204:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR205:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR204]]
-  // CHECK-NEXT: %[[VAR206:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR203]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR207:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR205]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR208:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR201]], %[[VAR206]]
-  // CHECK-NEXT: %[[VAR209:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR207]]
-  // CHECK-NEXT: %[[VAR210:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR211:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR208]], i[[LLSIZE]]* %[[VAR210]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR209]], i[[LLSIZE]]* %[[VAR211]]
-
-  csll1 = sll + csll;
-  // CHECK-NEXT: %[[VAR212:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR213:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR214:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR213]]
-  // CHECK-NEXT: %[[VAR215:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR216:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR215]]
-  // CHECK-NEXT: %[[VAR217:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR212]], %[[VAR214]]
-  // CHECK-NEXT: %[[VAR218:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR216]]
-  // CHECK-NEXT: %[[VAR219:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR220:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR217]], i[[LLSIZE]]* %[[VAR219]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR218]], i[[LLSIZE]]* %[[VAR220]]
-
-  csll1 = sll + cull;
-  // CHECK-NEXT: %[[VAR221:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR222:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR223:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR222]]
-  // CHECK-NEXT: %[[VAR224:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR225:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR224]]
-  // CHECK-NEXT: %[[VAR226:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR221]], %[[VAR223]]
-  // CHECK-NEXT: %[[VAR227:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR225]]
-  // CHECK-NEXT: %[[VAR228:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR229:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR226]], i[[LLSIZE]]* %[[VAR228]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR227]], i[[LLSIZE]]* %[[VAR229]]
-  
-  csll1 = ull + csc;
-  // CHECK-NEXT: %[[VAR230:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR231:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR232:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR231]]
-  // CHECK-NEXT: %[[VAR233:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR234:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR233]]
-  // CHECK-NEXT: %[[VAR235:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR232]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR236:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR234]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR237:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR230]], %[[VAR235]]
-  // CHECK-NEXT: %[[VAR238:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR236]]
-  // CHECK-NEXT: %[[VAR239:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR240:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR237]], i[[LLSIZE]]* %[[VAR239]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR238]], i[[LLSIZE]]* %[[VAR240]]
-
-  cull1 = ull + cuc;
-  // CHECK-NEXT: %[[VAR241:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR242:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR243:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR242]]
-  // CHECK-NEXT: %[[VAR244:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR245:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR244]]
-  // CHECK-NEXT: %[[VAR246:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR243]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR247:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR245]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR248:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR241]], %[[VAR246]]
-  // CHECK-NEXT: %[[VAR249:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR247]]
-  // CHECK-NEXT: %[[VAR250:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR251:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR248]], i[[LLSIZE]]* %[[VAR250]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR249]], i[[LLSIZE]]* %[[VAR251]]
-
-  csll1 = ull + csll;
-  // CHECK-NEXT: %[[VAR252:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR253:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR254:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR253]]
-  // CHECK-NEXT: %[[VAR255:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR256:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR255]]
-  // CHECK-NEXT: %[[VAR257:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR252]], %[[VAR254]]
-  // CHECK-NEXT: %[[VAR258:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR256]]
-  // CHECK-NEXT: %[[VAR259:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR260:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR257]], i[[LLSIZE]]* %[[VAR259]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR258]], i[[LLSIZE]]* %[[VAR260]]
-
-  cull1 = ull + cull;
-  // CHECK-NEXT: %[[VAR261:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR262:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR263:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR262]]
-  // CHECK-NEXT: %[[VAR264:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR265:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR264]]
-  // CHECK-NEXT: %[[VAR266:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR261]], %[[VAR263]]
-  // CHECK-NEXT: %[[VAR267:[A-Za-z0-9.]+]] = add i[[LLSIZE]] 0, %[[VAR265]]
-  // CHECK-NEXT: %[[VAR268:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR269:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR266]], i[[LLSIZE]]* %[[VAR268]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR267]], i[[LLSIZE]]* %[[VAR269]]
-
-  csc1 = csc + sc;
-  // CHECK-NEXT: %[[VAR270:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR271:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR270]]
-  // CHECK-NEXT: %[[VAR272:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR273:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR272]]
-  // CHECK-NEXT: %[[VAR274:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR271]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR275:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR273]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR276:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR277:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR276]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR278:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR274]], %[[VAR277]]
-  // CHECK-NEXT: %[[VAR279:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR275]], 0
-  // CHECK-NEXT: %[[VAR280:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR278]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR281:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR279]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR282:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR283:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR280]], i[[CHSIZE]]* %[[VAR282]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR281]], i[[CHSIZE]]* %[[VAR283]]
-
-  csc1 = csc + uc;
-  // CHECK-NEXT: %[[VAR284:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR285:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR284]]
-  // CHECK-NEXT: %[[VAR286:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR287:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR286]]
-  // CHECK-NEXT: %[[VAR288:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR285]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR289:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR287]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR290:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR291:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR290]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR292:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR288]], %[[VAR291]]
-  // CHECK-NEXT: %[[VAR293:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR289]], 0
-  // CHECK-NEXT: %[[VAR294:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR292]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR295:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR293]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR296:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR297:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR294]], i[[CHSIZE]]* %[[VAR296]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR295]], i[[CHSIZE]]* %[[VAR297]]
-
-  csll1 = csc + sll;
-  // CHECK-NEXT: %[[VAR298:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR299:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR298]]
-  // CHECK-NEXT: %[[VAR300:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR301:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR300]]
-  // CHECK-NEXT: %[[VAR302:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR299]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR303:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR301]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR304:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR305:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR302]], %[[VAR304]]
-  // CHECK-NEXT: %[[VAR306:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR303]], 0
-  // CHECK-NEXT: %[[VAR307:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR308:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR305]], i[[LLSIZE]]* %[[VAR307]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR306]], i[[LLSIZE]]* %[[VAR308]]
-
-  csll1 = csc + ull;
-  // CHECK-NEXT: %[[VAR309:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR310:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR309]]
-  // CHECK-NEXT: %[[VAR311:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR312:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR311]]
-  // CHECK-NEXT: %[[VAR313:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR310]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR314:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR312]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR315:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR316:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR313]], %[[VAR315]]
-  // CHECK-NEXT: %[[VAR317:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR314]], 0
-  // CHECK-NEXT: %[[VAR318:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR319:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR316]], i[[LLSIZE]]* %[[VAR318]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR317]], i[[LLSIZE]]* %[[VAR319]]
-  
-  csc1 = cuc + sc;
-  // CHECK-NEXT: %[[VAR320:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR321:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR320]]
-  // CHECK-NEXT: %[[VAR322:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR323:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR322]]
-  // CHECK-NEXT: %[[VAR324:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR321]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR325:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR323]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR326:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR327:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR326]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR328:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR324]], %[[VAR327]]
-  // CHECK-NEXT: %[[VAR329:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR325]], 0
-  // CHECK-NEXT: %[[VAR330:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR328]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR331:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR329]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR332:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR333:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CSC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR330]], i[[CHSIZE]]* %[[VAR332]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR331]], i[[CHSIZE]]* %[[VAR333]]
-
-  cuc1 = cuc + uc;
-  // CHECK-NEXT: %[[VAR334:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR335:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR334]]
-  // CHECK-NEXT: %[[VAR336:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR337:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR336]]
-  // CHECK-NEXT: %[[VAR338:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR335]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR339:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR337]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR340:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR341:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR340]] to i[[ARSIZE]]
-  // CHECK-NEXT: %[[VAR342:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR338]], %[[VAR341]]
-  // CHECK-NEXT: %[[VAR343:[A-Za-z0-9.]+]] = add i[[ARSIZE]] %[[VAR339]], 0
-  // CHECK-NEXT: %[[VAR344:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR342]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR345:[A-Za-z0-9.]+]] = trunc i[[ARSIZE]] %[[VAR343]] to i[[CHSIZE]]
-  // CHECK-NEXT: %[[VAR346:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR347:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR344]], i[[CHSIZE]]* %[[VAR346]]
-  // CHECK-NEXT: store i[[CHSIZE]] %[[VAR345]], i[[CHSIZE]]* %[[VAR347]]
-
-  csll1 = cuc + sll;
-  // CHECK-NEXT: %[[VAR348:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR349:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR348]]
-  // CHECK-NEXT: %[[VAR350:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR351:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR350]]
-  // CHECK-NEXT: %[[VAR352:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR349]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR353:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR351]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR354:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR355:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR352]], %[[VAR354]]
-  // CHECK-NEXT: %[[VAR356:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR353]], 0
-  // CHECK-NEXT: %[[VAR357:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR358:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR355]], i[[LLSIZE]]* %[[VAR357]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR356]], i[[LLSIZE]]* %[[VAR358]]
-
-  cull1 = cuc + ull;
-  // CHECK-NEXT: %[[VAR357:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR358:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR357]]
-  // CHECK-NEXT: %[[VAR359:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[CHSIZE]], i[[CHSIZE]] }* %[[CUC]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR360:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[VAR359]]
-  // CHECK-NEXT: %[[VAR361:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR358]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR362:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR360]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR363:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR364:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR361]], %[[VAR363]]
-  // CHECK-NEXT: %[[VAR365:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR362]], 0
-  // CHECK-NEXT: %[[VAR366:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR367:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR364]], i[[LLSIZE]]* %[[VAR366]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR365]], i[[LLSIZE]]* %[[VAR367]]
-
-  csll1 = csll + sc;
-  // CHECK-NEXT: %[[VAR368:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR369:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR368]]
-  // CHECK-NEXT: %[[VAR370:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR371:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR370]]
-  // CHECK-NEXT: %[[VAR372:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR373:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR372]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR374:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR369]], %[[VAR373]]
-  // CHECK-NEXT: %[[VAR375:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR371]], 0
-  // CHECK-NEXT: %[[VAR376:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR377:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR374]], i[[LLSIZE]]* %[[VAR376]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR375]], i[[LLSIZE]]* %[[VAR377]]
-
-  csll1 = csll + uc;
-  // CHECK-NEXT: %[[VAR378:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR379:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR378]]
-  // CHECK-NEXT: %[[VAR380:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR381:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR380]]
-  // CHECK-NEXT: %[[VAR382:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR383:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR382]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR384:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR379]], %[[VAR383]]
-  // CHECK-NEXT: %[[VAR385:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR381]], 0
-  // CHECK-NEXT: %[[VAR386:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR387:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR384]], i[[LLSIZE]]* %[[VAR386]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR385]], i[[LLSIZE]]* %[[VAR387]]
-
-  csll1 = csll + sll;
-  // CHECK-NEXT: %[[VAR388:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR389:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR388]]
-  // CHECK-NEXT: %[[VAR390:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR391:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR390]]
-  // CHECK-NEXT: %[[VAR392:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR393:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR389]], %[[VAR392]]
-  // CHECK-NEXT: %[[VAR394:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR391]], 0
-  // CHECK-NEXT: %[[VAR395:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR396:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR393]], i[[LLSIZE]]* %[[VAR395]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR394]], i[[LLSIZE]]* %[[VAR396]]
-
-  csll1 = csll + ull;
-  // CHECK-NEXT: %[[VAR397:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR398:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR397]]
-  // CHECK-NEXT: %[[VAR399:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR400:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR399]]
-  // CHECK-NEXT: %[[VAR401:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR402:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR398]], %[[VAR401]]
-  // CHECK-NEXT: %[[VAR403:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR400]], 0
-  // CHECK-NEXT: %[[VAR404:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR405:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR402]], i[[LLSIZE]]* %[[VAR404]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR403]], i[[LLSIZE]]* %[[VAR405]]
-  
-  csll1 = cull + sc;
-  // CHECK-NEXT: %[[VAR406:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR407:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR406]]
-  // CHECK-NEXT: %[[VAR408:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR409:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR408]]
-  // CHECK-NEXT: %[[VAR410:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[SCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR411:[A-Za-z0-9.]+]] = sext i[[CHSIZE]] %[[VAR410]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR412:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR407]], %[[VAR411]]
-  // CHECK-NEXT: %[[VAR413:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR409]], 0
-  // CHECK-NEXT: %[[VAR414:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR415:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR412]], i[[LLSIZE]]* %[[VAR414]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR413]], i[[LLSIZE]]* %[[VAR415]]
-
-  cull1 = cull + uc;
-  // CHECK-NEXT: %[[VAR416:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR417:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR416]]
-  // CHECK-NEXT: %[[VAR418:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR419:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR418]]
-  // CHECK-NEXT: %[[VAR420:[A-Za-z0-9.]+]] = load i[[CHSIZE]]* %[[UCADDR]], align [[CHALIGN]]
-  // CHECK-NEXT: %[[VAR421:[A-Za-z0-9.]+]] = zext i[[CHSIZE]] %[[VAR420]] to i[[LLSIZE]]
-  // CHECK-NEXT: %[[VAR422:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR417]], %[[VAR421]]
-  // CHECK-NEXT: %[[VAR423:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR419]], 0
-  // CHECK-NEXT: %[[VAR424:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR425:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR422]], i[[LLSIZE]]* %[[VAR424]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR423]], i[[LLSIZE]]* %[[VAR425]]
-
-  csll1 = cull + sll;
-  // CHECK-NEXT: %[[VAR426:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR427:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR426]]
-  // CHECK-NEXT: %[[VAR428:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR429:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR428]]
-  // CHECK-NEXT: %[[VAR430:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[SLLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR431:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR427]], %[[VAR430]]
-  // CHECK-NEXT: %[[VAR432:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR429]], 0
-  // CHECK-NEXT: %[[VAR433:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR434:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CSLL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR431]], i[[LLSIZE]]* %[[VAR433]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR432]], i[[LLSIZE]]* %[[VAR434]]
-
-  cull1 = cull + ull;
-  // CHECK-NEXT: %[[VAR435:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR436:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR435]]
-  // CHECK-NEXT: %[[VAR437:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: %[[VAR438:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[VAR437]]
-  // CHECK-NEXT: %[[VAR439:[A-Za-z0-9.]+]] = load i[[LLSIZE]]* %[[ULLADDR]], align [[LLALIGN]]
-  // CHECK-NEXT: %[[VAR440:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR436]], %[[VAR439]]
-  // CHECK-NEXT: %[[VAR441:[A-Za-z0-9.]+]] = add i[[LLSIZE]] %[[VAR438]], 0
-  // CHECK-NEXT: %[[VAR442:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 0
-  // CHECK-NEXT: %[[VAR443:[A-Za-z0-9.]+]] = getelementptr inbounds { i[[LLSIZE]], i[[LLSIZE]] }* %[[CULL1]], i{{[0-9]+}} 0, i{{[0-9]+}} 1
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR440]], i[[LLSIZE]]* %[[VAR442]]
-  // CHECK-NEXT: store i[[LLSIZE]] %[[VAR441]], i[[LLSIZE]]* %[[VAR443]]
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/complex-indirect.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/complex-indirect.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/complex-indirect.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t -triple=x86_64-apple-darwin10
-// RUN: FileCheck < %t %s
-
-// Make sure this doesn't crash. We used to generate a byval here and wanted to
-// verify a valid alignment, but we now realize we can use an i16 and let the
-// backend guarantee the alignment.
-
-void a(int,int,int,int,int,int,__complex__ char);
-void b(__complex__ char *y) { a(0,0,0,0,0,0,*y); }
-// CHECK: define void @b
-// CHECK: alloca { i8, i8 }*, align 8
-// CHECK: call void @a(i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i16 {{.*}})

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/complex-init-list.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/complex-init-list.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/complex-init-list.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 | FileCheck %s
-
-// This file tests the clang extension which allows initializing the components
-// of a complex number individually using an initialization list.  (There is a
-// extensive description and test in test/Sema/complex-init-list.c.)
-
-_Complex float x = { 1.0f, 1.0f/0.0f };
-// CHECK: @x = global { float, float } { float 1.000000e+00, float 0x7FF0000000000000 }, align 4
-
-_Complex float f(float x, float y) { _Complex float z = { x, y }; return z; }
-// CHECK: define <2 x float> @f
-// CHECK: alloca { float, float }
-// CHECK: alloca { float, float }
-
-_Complex float f2(float x, float y) { return (_Complex float){ x, y }; }
-// CHECK: define <2 x float> @f2
-// CHECK: alloca { float, float }
-// CHECK: alloca { float, float }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/complex.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/complex.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/complex.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-int main(void)
-{
-  double _Complex a = 5;
-  double _Complex b = 42;
-
-  return a * b != b * a;
-}
-
-_Complex double bar(int);
-void test(_Complex double*);
-void takecomplex(_Complex double);
-
-void test2(int c) {
-  _Complex double X;
-  X = bar(1);
-  test(&X);
-  takecomplex(X);
-}
-
-_Complex double g1, g2;
-_Complex float cf;
-double D;
-
-void test3() {
-  g1 = g1 + g2;
-  g1 = g1 - g2;
-  g1 = g1 * g2;
-  g1 = +-~g1;
-
-  double Gr = __real g1;
-
-  cf += D;
-  // FIXME: Currently unsupported!
-  //D += cf;
-  cf /= g1;
-  g1 = g1 + D;
-  g1 = D + g1;
-}
-
-__complex__ int ci1, ci2;
-__complex__ short cs;
-int i;
-void test3int() {
-  ci1 = ci1 + ci2;
-  ci1 = ci1 - ci2;
-  ci1 = ci1 * ci2;
-  ci1 = +-~ci1;
-
-  i = __real ci1;
-
-  cs += i;
-  // FIXME: Currently unsupported!
-  //D += cf;
-  cs /= ci1;
-  ci1 = ci1 + i;
-  ci1 = i + ci1;
-}
-
-void t1() {
-  (__real__ cf) = 4.0;
-}
-
-void t2() {
-  (__imag__ cf) = 4.0;
-}
-
-// PR1960
-void t3() {
-  __complex__ long long v = 2;
-}
-
-// PR3131
-float _Complex t4();
-
-void t5() {
-  float _Complex x = t4();
-}
-
-void t6() {
-  g1++;
-  g1--;
-  ++g1;
-  --g1;
-  ci1++;
-  ci1--;
-  ++ci1;
-  --ci1;
-}
-
-// <rdar://problem/7958272>
-double t7(double _Complex c) {
-  return __builtin_fabs(__real__(c));
-}
-
-void t8() {
-  __complex__ int *x = &(__complex__ int){1};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/compound-assign-overflow.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/compound-assign-overflow.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/compound-assign-overflow.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// Verify proper type emitted for compound assignments
-// RUN: %clang_cc1 -ffreestanding -triple x86_64-apple-darwin10 -emit-llvm -o - %s  -fsanitize=signed-integer-overflow,unsigned-integer-overflow | FileCheck %s
-
-#include <stdint.h>
-
-// CHECK: @[[INT:.*]] = private unnamed_addr constant { i16, i16, [6 x i8] } { i16 0, i16 11, [6 x i8] c"'int'\00" }
-// CHECK: @[[LINE_100:.*]] = private unnamed_addr global {{.*}}, i32 100, i32 5 {{.*}} @[[INT]]
-// CHECK: @[[UINT:.*]] = private unnamed_addr constant { i16, i16, [15 x i8] } { i16 0, i16 10, [15 x i8] c"'unsigned int'\00" }
-// CHECK: @[[LINE_200:.*]] = private unnamed_addr global {{.*}}, i32 200, i32 5 {{.*}} @[[UINT]]
-// CHECK: @[[DIVINT:.*]] = private unnamed_addr constant { i16, i16, [6 x i8] } { i16 0, i16 11, [6 x i8] c"'int'\00" }
-// CHECK: @[[LINE_300:.*]] = private unnamed_addr global {{.*}}, i32 300, i32 5 {{.*}} @[[DIVINT]]
-
-int32_t x;
-
-// CHECK: @compaddsigned
-void compaddsigned() {
-#line 100
-  x += ((int32_t)1);
-  // CHECK: @__ubsan_handle_add_overflow(i8* bitcast ({{.*}} @[[LINE_100]] to i8*), {{.*}})
-}
-
-// CHECK: @compaddunsigned
-void compaddunsigned() {
-#line 200
-  x += ((uint32_t)1U);
-  // CHECK: @__ubsan_handle_add_overflow(i8* bitcast ({{.*}} @[[LINE_200]] to i8*), {{.*}})
-}
-
-int8_t a, b;
-
-// CHECK: @compdiv
-void compdiv() {
-#line 300
-  a /= b;
-  // CHECK: @__ubsan_handle_divrem_overflow(i8* bitcast ({{.*}} @[[LINE_300]] to i8*), {{.*}})
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/compound-literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/compound-literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/compound-literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s
-
-int* a = &(int){1};
-struct s {int a, b, c;} * b = &(struct s) {1, 2, 3};
-_Complex double * x = &(_Complex double){1.0f};
-typedef int v4i32 __attribute((vector_size(16)));
-v4i32 *y = &(v4i32){1,2,3,4};
-
-void xxx() {
-int* a = &(int){1};
-struct s {int a, b, c;} * b = &(struct s) {1, 2, 3};
-_Complex double * x = &(_Complex double){1.0f};
-}
-
-// CHECK: define void @f()
-void f() {
-  typedef struct S { int x,y; } S;
-  // CHECK: [[S:%[a-zA-Z0-9.]+]] = alloca [[STRUCT:%[a-zA-Z0-9.]+]],
-  struct S s;
-  // CHECK-NEXT: [[COMPOUNDLIT:%[a-zA-Z0-9.]+]] = alloca [[STRUCT]]
-  // CHECK-NEXT: [[CX:%[a-zA-Z0-9.]+]] = getelementptr inbounds [[STRUCT]]* [[COMPOUNDLIT]], i32 0, i32 0
-  // CHECK-NEXT: [[SY:%[a-zA-Z0-9.]+]] = getelementptr inbounds [[STRUCT]]* [[S]], i32 0, i32 1
-  // CHECK-NEXT: [[TMP:%[a-zA-Z0-9.]+]] = load i32* [[SY]]
-  // CHECK-NEXT: store i32 [[TMP]], i32* [[CX]]
-  // CHECK-NEXT: [[CY:%[a-zA-Z0-9.]+]] = getelementptr inbounds [[STRUCT]]* [[COMPOUNDLIT]], i32 0, i32 1
-  // CHECK-NEXT: [[SX:%[a-zA-Z0-9.]+]] = getelementptr inbounds [[STRUCT]]* [[S]], i32 0, i32 0
-  // CHECK-NEXT: [[TMP:%[a-zA-Z0-9.]+]] = load i32* [[SX]]
-  // CHECK-NEXT: store i32 [[TMP]], i32* [[CY]]
-  // CHECK-NEXT: [[SI8:%[a-zA-Z0-9.]+]] = bitcast [[STRUCT]]* [[S]] to i8*
-  // CHECK-NEXT: [[COMPOUNDLITI8:%[a-zA-Z0-9.]+]] = bitcast [[STRUCT]]* [[COMPOUNDLIT]] to i8*
-  // CHECK-NEXT: call void @llvm.memcpy{{.*}}(i8* [[SI8]], i8* [[COMPOUNDLITI8]]
-  s = (S){s.y,s.x};
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define i48 @g(
-struct G { short x, y, z; };
-struct G g(int x, int y, int z) {
-  // CHECK:      [[RESULT:%.*]] = alloca [[G:%.*]], align 2
-  // CHECK-NEXT: [[X:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[Y:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[Z:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[COERCE_TEMP:%.*]] = alloca i48
-  // CHECK-NEXT: store i32
-  // CHECK-NEXT: store i32
-  // CHECK-NEXT: store i32
-
-  // Evaluate the compound literal directly in the result value slot.
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[G]]* [[RESULT]], i32 0, i32 0
-  // CHECK-NEXT: [[T1:%.*]] = load i32* [[X]], align 4
-  // CHECK-NEXT: [[T2:%.*]] = trunc i32 [[T1]] to i16
-  // CHECK-NEXT: store i16 [[T2]], i16* [[T0]], align 2
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[G]]* [[RESULT]], i32 0, i32 1
-  // CHECK-NEXT: [[T1:%.*]] = load i32* [[Y]], align 4
-  // CHECK-NEXT: [[T2:%.*]] = trunc i32 [[T1]] to i16
-  // CHECK-NEXT: store i16 [[T2]], i16* [[T0]], align 2
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[G]]* [[RESULT]], i32 0, i32 2
-  // CHECK-NEXT: [[T1:%.*]] = load i32* [[Z]], align 4
-  // CHECK-NEXT: [[T2:%.*]] = trunc i32 [[T1]] to i16
-  // CHECK-NEXT: store i16 [[T2]], i16* [[T0]], align 2
-  return (struct G) { x, y, z };
-
-  // CHECK-NEXT: [[T0:%.*]] = bitcast i48* [[COERCE_TEMP]] to i8*
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[G]]* [[RESULT]] to i8*
-  // CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[T0]], i8* [[T1]], i64 6
-  // CHECK-NEXT: [[T0:%.*]] = load i48* [[COERCE_TEMP]]
-  // CHECK-NEXT: ret i48 [[T0]]
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/compound-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/compound-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/compound-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 < %s -emit-llvm -triple i686-pc-linux-gnu > %t
-// RUN: grep "div i32" %t
-// RUN: grep "shl i32" %t
-
-unsigned char a,b;
-void c(void) {a <<= b;}
-void d(void) {a /= b;}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/compound.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/compound.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/compound.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 < %s -emit-llvm
-int A;
-long long B;
-int C;
-int *P;
-void test1() {
-  C = (A /= B);
-
-  P -= 4;
-
-  C = P - (P+10);
-}
-
-short x; 
-void test2(char c) { x += c; }
-
-void foo(char *strbuf) {
-  int stufflen = 4;
-  strbuf += stufflen;
-}
-
-
-// Aggregate cast to void
-union uu { int a;}; void f(union uu p) { (void) p;}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/conditional-gnu-ext.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/conditional-gnu-ext.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/conditional-gnu-ext.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-// PR1824
-
-int foo(int x, short y) {
-  return x ?: y;
-}
-
-// rdar://6586493
-float test(float x, int Y) {
-  return Y != 0 ? : x;
-}
-
-// rdar://8446940
-extern void abort();
-void  test1 () {
-  char x[1];
-  char *y = x ? : 0;
-
-  if (x != y)
-    abort();
-}
-
-// rdar://8453812
-_Complex int getComplex(_Complex int val) {
-  static int count;
-  if (count++)
-    abort();
-  return val;
-}
-
-_Complex int complx() {
-    _Complex int cond;
-    _Complex int rhs;
-
-    return getComplex(1+2i) ? : rhs;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/conditional.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/conditional.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/conditional.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-float test1(int cond, float a, float b) {
-  return cond ? a : b;
-}
-
-double test2(int cond, float a, double b) {
-  return cond ? a : b;
-}
-
-void f();
-
-void test3(){
-   1 ? f() : (void)0;
-}
-
-void test4() {
-  int i; short j;
-  float* k = 1 ? &i : &j;
-}
-
-void test5() {
-  const int* cip;
-  void* vp;
-  cip = 0 ? vp : cip;
-}
-
-void test6();
-void test7(int);
-void* test8() {return 1 ? test6 : test7;}
-
-
-void _efree(void *ptr);
-
-void _php_stream_free3() {
-  (1 ? free(0) : _efree(0));
-}
-
-void _php_stream_free4() {
-  1 ? _efree(0) : free(0);
-}
-
-// PR5526
-struct test9 { int a; };
-void* test9spare();
-void test9(struct test9 *p) {
-  p ? p : test9spare();
-}
-
-// CHECK: @test10
-// CHECK: select i1 {{.*}}, i32 4, i32 5
-int test10(int c) {
-  return c ? 4 : 5;
-}
-enum { Gronk = 5 };
-
-// rdar://9289603
-// CHECK: @test11
-// CHECK: select i1 {{.*}}, i32 4, i32 5
-int test11(int c) {
-  return c ? 4 : Gronk;
-}
-
-// CHECK: @test12
-// CHECK: select i1 {{.*}}, double 4.0{{.*}}, double 2.0
-double test12(int c) {
-  return c ? 4.0 : 2.0;
-}
-// CHECK: @test13
-// CHECK: call {{.*}} @f2(
-int f2(void);
-void test13() {
-  f2() ? (void)0 : (void)0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/const-arithmetic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/const-arithmetic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/const-arithmetic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @g1 = global [2 x i8*] [i8* getelementptr (i8* getelementptr inbounds ([0 x %struct.anon]* @g0, i32 0, i32 0, i32 0), i64 -2), i8* getelementptr (i8* getelementptr inbounds ([0 x %struct.anon]* @g0, i32 0, i32 0, i32 0), i64 -46)], align 16
-// CHECK: @g2 = global [2 x i8*] [i8* getelementptr (i8* getelementptr inbounds ([0 x %struct.anon]* @g0, i32 0, i32 0, i32 0), i64 -2), i8* getelementptr (i8* getelementptr inbounds ([0 x %struct.anon]* @g0, i32 0, i32 0, i32 0), i64 -46)], align 16
-
-extern struct { unsigned char a, b; } g0[];
-void *g1[] = {g0 + -1, g0 + -23 };
-void *g2[] = {g0 - 1, g0 - 23 };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/const-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/const-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/const-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,161 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -ffreestanding -verify -emit-llvm -o - %s | FileCheck %s
-
-#include <stdint.h>
-
-// Brace-enclosed string array initializers
-char a[] = { "asdf" };
-// CHECK: @a = global [5 x i8] c"asdf\00"
-
-char a2[2][5] = { "asdf" };
-// CHECK: @a2 = global [2 x [5 x i8]] {{\[}}[5 x i8] c"asdf\00", [5 x i8] zeroinitializer]
-
-// Double-implicit-conversions of array/functions (not legal C, but
-// clang accepts it for gcc compat).
-intptr_t b = a; // expected-warning {{incompatible pointer to integer conversion}}
-int c();
-void *d = c;
-intptr_t e = c; // expected-warning {{incompatible pointer to integer conversion}}
-
-int f, *g = __extension__ &f, *h = (1 != 1) ? &f : &f;
-
-union s2 {
-  struct {
-    struct { } *f0;
-  } f0;
-};
-
-int g0 = (int)(&(((union s2 *) 0)->f0.f0) - 0);
-
-// CHECK: @g1x = global { double, double } { double 1.000000e+00{{[0]*}}, double 0.000000e+00{{[0]*}} }
-_Complex double g1x = 1.0f;
-// CHECK: @g1y = global { double, double } { double 0.000000e+00{{[0]*}}, double 1.000000e+00{{[0]*}} }
-_Complex double g1y = 1.0fi;
-// CHECK: @g1 = global { i8, i8 } { i8 1, i8 10 }
-_Complex char g1 = (char) 1 + (char) 10 * 1i;
-// CHECK: @g2 = global { i32, i32 } { i32 1, i32 10 }
-_Complex int g2 = 1 + 10i;
-// CHECK: @g3 = global { float, float } { float 1.000000e+00{{[0]*}}, float 1.000000e+0{{[0]*}}1 }
-_Complex float g3 = 1.0 + 10.0i;
-// CHECK: @g4 = global { double, double } { double 1.000000e+00{{[0]*}}, double 1.000000e+0{{[0]*}}1 }
-_Complex double g4 = 1.0 + 10.0i;
-// CHECK: @g5 = global { i32, i32 } zeroinitializer
-_Complex int g5 = (2 + 3i) == (5 + 7i);
-// CHECK: @g6 = global { double, double } { double -1.100000e+0{{[0]*}}1, double 2.900000e+0{{[0]*}}1 }
-_Complex double g6 = (2.0 + 3.0i) * (5.0 + 7.0i);
-// CHECK: @g7 = global i32 1
-int g7 = (2 + 3i) * (5 + 7i) == (-11 + 29i);
-// CHECK: @g8 = global i32 1
-int g8 = (2.0 + 3.0i) * (5.0 + 7.0i) == (-11.0 + 29.0i);
-// CHECK: @g9 = global i32 0
-int g9 = (2 + 3i) * (5 + 7i) != (-11 + 29i);
-// CHECK: @g10 = global i32 0
-int g10 = (2.0 + 3.0i) * (5.0 + 7.0i) != (-11.0 + 29.0i);
-
-// PR5108
-// CHECK: @gv1 = global %struct.anon <{ i32 0, i8 7 }>, align 1
-struct {
-  unsigned long a;
-  unsigned long b:3;
-} __attribute__((__packed__)) gv1  = { .a = 0x0, .b = 7,  };
-
-// PR5118
-// CHECK: @gv2 = global %struct.anon.0 <{ i8 1, i8* null }>, align 1 
-struct {
-  unsigned char a;
-  char *b;
-} __attribute__((__packed__)) gv2 = { 1, (void*)0 };
-
-// Global references
-// CHECK: @g11.l0 = internal global i32 ptrtoint (i32 ()* @g11 to i32)
-long g11() { 
-  static long l0 = (long) g11;
-  return l0; 
-}
-
-// CHECK: @g12 = global i32 ptrtoint (i8* @g12_tmp to i32)
-static char g12_tmp;
-long g12 = (long) &g12_tmp;
-
-// CHECK: @g13 = global [1 x %struct.g13_s0] [%struct.g13_s0 { i32 ptrtoint (i8* @g12_tmp to i32) }]
-struct g13_s0 {
-   long a;
-};
-struct g13_s0 g13[] = {
-   { (long) &g12_tmp }
-};
-
-// CHECK: @g14 = global i8* inttoptr (i64 100 to i8*)
-void *g14 = (void*) 100;
-
-// CHECK: @g15 = global i32 -1
-int g15 = (int) (char) ((void*) 0 + 255);
-
-// CHECK: @g16 = global i64 4294967295
-long long g16 = (long long) ((void*) 0xFFFFFFFF);
-
-// CHECK: @g17 = global i32* @g15
-int *g17 = (int *) ((long) &g15);
-
-// CHECK: @g18.p = internal global [1 x i32*] [i32* @g19]
-void g18(void) {
-  extern int g19;
-  static int *p[] = { &g19 };
-}
-
-// CHECK: @g20.l0 = internal global %struct.g20_s1 { %struct.g20_s0* null, %struct.g20_s0** getelementptr inbounds (%struct.g20_s1* @g20.l0, i32 0, i32 0) }
-struct g20_s0;
-struct g20_s1 {
-  struct g20_s0 *f0, **f1;
-};
-void *g20(void) {
-  static struct g20_s1 l0 = { ((void*) 0), &l0.f0 };
-  return l0.f1;
-}
-
-// PR4108
-struct g21 {int g21;};
-const struct g21 g21 = (struct g21){1};
-
-// PR5474
-struct g22 {int x;} __attribute((packed));
-struct g23 {char a; short b; char c; struct g22 d;};
-struct g23 g24 = {1,2,3,4};
-
-// CHECK: @g25.g26 = internal global i8* getelementptr inbounds ([4 x i8]* @__func__.g25, i32 0, i32 0)
-// CHECK: @__func__.g25 = private unnamed_addr constant [4 x i8] c"g25\00"
-int g25() {
-  static const char *g26 = __func__;
-  return *g26;
-}
-
-// CHECK: @g27.x = internal global i8* bitcast (i8** @g27.x to i8*), align 4
-void g27() { // PR8073
-  static void *x = &x;
-}
-
-void g28() {
-  typedef long long v1i64 __attribute((vector_size(8)));
-  typedef short v12i16 __attribute((vector_size(24)));
-  typedef long double v2f80 __attribute((vector_size(24)));
-  // CHECK: @g28.a = internal global <1 x i64> <i64 10>
-  // CHECK: @g28.b = internal global <12 x i16> <i16 0, i16 0, i16 0, i16 -32768, i16 16383, i16 0, i16 0, i16 0, i16 0, i16 -32768, i16 16384, i16 0>
-  // CHECK: @g28.c = internal global <2 x x86_fp80> <x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK40008000000000000000>, align 32
-  static v1i64 a = (v1i64)10LL;
-  static v12i16 b = (v2f80){1,2};
-  static v2f80 c = (v12i16){0,0,0,-32768,16383,0,0,0,0,-32768,16384,0};
-}
-
-// PR13643
-void g29() {
-  typedef char DCC_PASSWD[2];
-  typedef struct
-  {
-      DCC_PASSWD passwd;
-  } DCC_SRVR_NM;
-  // CHECK: @g29.a = internal global %struct.DCC_SRVR_NM { [2 x i8] c"@\00" }, align 1
-  // CHECK: @g29.b = internal global [1 x i32] [i32 ptrtoint ([5 x i8]* @.str to i32)], align 4
-  // CHECK: @g29.c = internal global [1 x i32] [i32 97], align 4
-  static DCC_SRVR_NM a = { {"@"} };
-  static int b[1] = { "asdf" };
-  static int c[1] = { L"a" };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/const-label-addr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/const-label-addr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/const-label-addr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// REQUIRES: asserts
-
-// CHECK: @a.a = internal global i8* blockaddress(@a, %A)
-int a() {
-A:;static void* a = &&A;
-}
-
-// PR14005
-// CHECK: @b.ar = internal global {{.*}} sub (i{{..}} ptrtoint (i8* blockaddress(@b, %l2) to i{{..}}), i{{..}} ptrtoint (i8* blockaddress(@b, %l1) to i{{..}}))
-int b() {
-  static int ar = &&l2 - &&l1;
-l1:
-  return 10;
-l2:
-  return 11;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/const-unordered-compare.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/const-unordered-compare.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/const-unordered-compare.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// Checks folding of an unordered comparison
-int nan_ne_check() {
-  // CHECK: ret i32 1
-  return (__builtin_nanf("") != __builtin_nanf("")) ? 1 : 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/constant-comparison.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/constant-comparison.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/constant-comparison.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - 2>&1 | not grep warning
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep @b | count 1
-
-int a, b;
-int *c1 = 1 < 2 ? &a : &b;
-int *c2 = 3 != 3LL ? &b : &a;
-int *c3 = !(3 <= 4.0) ? &b : &a;
-int *c4 = &a - (6 * 5 > 30);
-int *c5 = &a + (6 * 5 >= 30);
-int c6 = 44 < 33;
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/constructor-attribute.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/constructor-attribute.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/constructor-attribute.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: grep -e "global_ctors.*@A" %t
-// RUN: grep -e "global_dtors.*@B" %t
-// RUN: grep -e "global_ctors.*@C" %t
-// RUN: grep -e "global_dtors.*@D" %t
-
-int printf(const char *, ...);
-
-void A() __attribute__((constructor));
-void B() __attribute__((destructor));
-
-void A() {
-  printf("A\n");
-}
-
-void B() {
-  printf("B\n");
-}
-
-static void C() __attribute__((constructor));
-
-static void D() __attribute__((destructor));
-
-static int foo() {
-  return 10;
-}
-
-static void C() {
-  printf("A: %d\n", foo());
-}
-
-static void D() {
-  printf("B\n");
-}
-
-int main() {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/count-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/count-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/count-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-int leading, trailing, pop;
-
-void test_i16(short P) {
-  leading = __builtin_clzs(P);
-  trailing = __builtin_ctzs(P);
-
-// CHECK: @test_i16
-// CHECK: call i16 @llvm.ctlz.i16
-// CHECK: call i16 @llvm.cttz.i16
-}
-
-void test_i32(int P) {
-  leading = __builtin_clz(P);
-  trailing = __builtin_ctz(P);
-  pop = __builtin_popcount(P);
-
-// CHECK: @test_i32
-// CHECK: call i32 @llvm.ctlz.i32
-// CHECK: call i32 @llvm.cttz.i32
-// CHECK: call i32 @llvm.ctpop.i32
-}
-
-void test_i64(float P) {
-  leading = __builtin_clzll(P);
-  trailing = __builtin_ctzll(P);
-  pop = __builtin_popcountll(P);
-// CHECK: @test_i64
-// CHECK: call i64 @llvm.ctlz.i64
-// CHECK: call i64 @llvm.cttz.i64
-// CHECK: call i64 @llvm.ctpop.i64
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-condition.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-condition.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-condition.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-void f() {
-  int a;
-  if (int x=a) ++a; else a=x;
-  while (int x=a) ++a;
-  for (; int x=a; --a) ;
-  switch (int x=0) { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-default-arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-default-arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-default-arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-// Note: define CLANG_GENERATE_KNOWN_GOOD and compile to generate code
-// that makes all of the defaulted arguments explicit. The resulting
-// byte code should be identical to the compilation without
-// CLANG_GENERATE_KNOWN_GOOD.
-#ifdef CLANG_GENERATE_KNOWN_GOOD
-#  define DEFARG(...) __VA_ARGS__
-#else
-#  define DEFARG(...)
-#endif
-
-extern int x;
-struct S { float x; float y; } s;
-double _Complex c;
-
-void f(int i = 0, int j = 1, int k = x, struct S t = s, double _Complex d = c);
-
-void g() {
-  f(0, 1, x, s DEFARG(, c));
-  f(0, 1, x DEFARG(, s, c));
-  f(0, 1 DEFARG(, x, s, c));
-  f(0 DEFARG(, 1, x, s, c));
-  f(DEFARG(0, 1, x, s, c));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-value-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-value-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/cxx-value-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-enum E {};
-int v1 = E();
-float v2 = float();
-
-void f() {
-  int v3 = int();
-  _Complex int v4 = typeof(_Complex int)();
-  _Complex float v5 = typeof(_Complex float)();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/darwin-string-literals.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/darwin-string-literals.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/darwin-string-literals.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix LSB %s
-
-// CHECK-LSB: @.str = private unnamed_addr constant [8 x i8] c"string0\00"
-// CHECK-LSB: @.str1 = linker_private unnamed_addr constant [8 x i8] c"string1\00"
-// CHECK-LSB: @.str2 = internal unnamed_addr constant [18 x i16] [i16 104, i16 101, i16 108, i16 108, i16 111, i16 32, i16 8594, i16 32, i16 9731, i16 32, i16 8592, i16 32, i16 119, i16 111, i16 114, i16 108, i16 100, i16 0], align 2
-// CHECK-LSB: @.str4 = internal unnamed_addr constant [6 x i16] [i16 116, i16 101, i16 115, i16 116, i16 8482, i16 0], align 2
-
-
-// RUN: %clang_cc1 -triple powerpc-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix MSB %s
-
-// CHECK-MSB: @.str = private unnamed_addr constant [8 x i8] c"string0\00"
-// CHECK-MSB: @.str1 = linker_private unnamed_addr constant [8 x i8] c"string1\00"
-// CHECK-MSB: @.str2 = internal unnamed_addr constant [18 x i16] [i16 104, i16 101, i16 108, i16 108, i16 111, i16 32, i16 8594, i16 32, i16 9731, i16 32, i16 8592, i16 32, i16 119, i16 111, i16 114, i16 108, i16 100, i16 0], align 2
-// CHECK-MSB: @.str4 = internal unnamed_addr constant [6 x i16] [i16 116, i16 101, i16 115, i16 116, i16 8482, i16 0], align 2
-
-const char *g0 = "string0";
-const void *g1 = __builtin___CFStringMakeConstantString("string1");
-const void *g2 = __builtin___CFStringMakeConstantString("hello \u2192 \u2603 \u2190 world");
-const void *g3 = __builtin___CFStringMakeConstantString("test™");

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/darwin-thread-specifier.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/darwin-thread-specifier.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/darwin-thread-specifier.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 -emit-llvm -o - %s | FileCheck %s
-// CHECK: @b = thread_local global i32 5, align 4
-__thread int b = 5;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-dead-local-var.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-dead-local-var.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-dead-local-var.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -mllvm -asm-verbose -S -O2 -g %s -o - | FileCheck %s
-// Radar 8122864
-
-// Code is not generated for function foo, but preserve type information of
-// local variable xyz.
-static void foo() {
-// CHECK: DW_TAG_structure_type 
-  struct X { int a; int b; } xyz;
-}
-
-int bar() {
-  foo();
-  return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unk-unk -o - -emit-llvm -g %s | FileCheck %s
-
-int somefunc(char *x, int y, double z) {
-  
-  // CHECK: metadata ![[NUM:[^,]*]], i32 0, i32 0} ; [ DW_TAG_subroutine_type
-  // CHECK: ![[NUM]] = {{metadata !{metadata ![^,]*, metadata ![^,]*, metadata ![^,]*, metadata ![^,]*}}}
-  
-  return y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-block.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-block.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-block.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fblocks -g -emit-llvm -o - %s | FileCheck %s
-// APPLE LOCAL file 5939894 */
-// Verify that the desired debugging type is generated for a structure
-//  member that is a pointer to a block. 
-
-// CHECK: __block_literal_generic{{.*}}DW_TAG_structure_type
-// CHECK: __block_descriptor{{.*}}DW_TAG_structure_type
-struct inStruct {
-  void (^genericBlockPtr)();
-} is;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-compilation-dir.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-compilation-dir.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-compilation-dir.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fdebug-compilation-dir /nonsense -emit-llvm -g %s -o - | FileCheck -check-prefix=CHECK-NONSENSE %s
-// CHECK-NONSENSE: nonsense
-
-// RUN: %clang_cc1 -emit-llvm -g %s -o - | FileCheck -check-prefix=CHECK-DIR %s
-// CHECK-DIR: CodeGen
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-crash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-crash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-crash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// REQUIRES: x86-registered-target
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -fblocks -g -S %s -o -
-
-// rdar://7590323
-typedef struct dispatch_queue_s *dispatch_queue_t;
-__attribute__((visibility("default")))
-extern struct dispatch_queue_s _dispatch_main_q;
-typedef struct dispatch_item_s *dispatch_item_t;
-typedef void (^dispatch_legacy_block_t)(dispatch_item_t);
-dispatch_item_t LEGACY_dispatch_call(dispatch_queue_t dq,
-                                     dispatch_legacy_block_t dispatch_block,
-                                     dispatch_legacy_block_t callback_block) {
-  dispatch_queue_t lq = _dispatch_queue_get_current() ?: (&_dispatch_main_q);
-  dispatch_async(dq, ^{
-      if (callback_block) {
-        dispatch_async(lq, ^{
-          }
-          );
-      }
-    }
-    );
-}
-
-// radar://9008853
-typedef struct P {
-  int x;
-} PS;
-# 1 ""
-void foo() {
-  PS p2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1  -emit-llvm -g %s -o %t
-// RUN: grep DW_TAG_enumeration_type %t
-// Radar 8195980
-
-enum vtag {
-  VT_ONE
-};
-
-int foo(int i) {
-  return i == VT_ONE;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-gline-tables-only.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-gline-tables-only.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-gline-tables-only.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -gline-tables-only -S -emit-llvm -o - | FileCheck %s
-// Checks that clang with "-gline-tables-only" doesn't emit debug info
-// for variables and types.
-
-// CHECK-NOT: DW_TAG_variable
-int global = 42;
-
-// CHECK-NOT: DW_TAG_typedef
-// CHECK-NOT: DW_TAG_const_type
-// CHECK-NOT: DW_TAG_pointer_type
-// CHECK-NOT: DW_TAG_array_type
-typedef const char* constCharPtrArray[10];
-
-// CHECK-NOT: DW_TAG_structure_type
-struct S {
-  // CHECK-NOT: DW_TAG_member
-  char a;
-  double b;
-  constCharPtrArray c;
-};
-
-// CHECK-NOT: DW_TAG_enumerator
-// CHECK-NOT: DW_TAG_enumeration_type
-enum E { ZERO = 0, ONE = 1 };
-
-// CHECK-NOT: DW_TAG_arg_variable
-int sum(int p, int q) {
-  // CHECK-NOT: DW_TAG_auto_variable
-  int r = p + q;
-  struct S s;
-  enum E e;
-  return r;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-gline-tables-only2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-gline-tables-only2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-gline-tables-only2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -gline-tables-only -S -emit-llvm -o - | FileCheck %s
-// Checks that clang with "-gline-tables-only" emits metadata for
-// compile unit, subprogram and file.
-
-int main() {
-  // CHECK: ret i32 0, !dbg
-  return 0;
-}
-
-// CHECK: !llvm.dbg.cu = !{!0}
-// CHECK: DW_TAG_compile_unit
-// CHECK: {{.*main.* DW_TAG_subprogram}}
-// CHECK: DW_TAG_file_type

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-iv.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-iv.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-iv.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -Os -S -g  -o - %s | FileCheck %s
-// REQUIRES: x86-registered-target
-
-int calculate(int);
-static void test_indvars(int *Array1, int Array2[100][200]) {
-  unsigned i, j;
-  Array1[1] = Array2[3][6] = 12345;
-
-  for (i = 0; i < 100; i+=2)
-    Array1[i] = i;           /* Step by non unit amount */
-
-  for (i = 3; i < 103; i++)
-    Array1[i] = i+4;         /* Step with an offset */
-
-  for (i = 13; i < 100; i++)
-    for (j = 0; j < 100; j+=3)       /* 2d array access */
-      Array2[i][j/3] = Array2[i][i];
-}
-
-
-int main() {
-  int Array[100][200], i, j;
-  double sum = 0.0;
-
-  for (i=0; i < 100; i+=2)
-    for (j=0; j < 200; j++)
-      Array[i][j] = 0;
-  test_indvars(Array[0], Array);
-
-//CHECK:	.loc	2 31
-  for (i=0; i < 100; i+=2)
-    for (j=0; j < 200; j++)
-      sum += Array[i][j];
-
-  return calculate(sum);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang -emit-llvm -S -g %s -o - | FileCheck %s
-
-// Radar 8396182
-// There are no lexical blocks, but we need two DILexicalBlockFiles to
-// correctly represent file info.
-
-int foo() {
-  int i = 1;
-# 4 "m.c"
-# 1 "m.h" 1
-  int j = 2;
-# 2 "m.h"
-# 5 "m.c" 2
-  return i + j;
-}
-
-// CHECK: DW_TAG_lexical_block
-// CHECK: !"m.h"
-// CHECK: DW_TAG_lexical_block
-// CHECK: !"m.c"
-// CHECK-NOT: DW_TAG_lexical_block

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-darwin-apple -g -emit-llvm -o - %s | FileCheck %s
-// Radar 9199234
-
-int bar();
-int foo(int i) {
-	int j = 0;
-	if (i) {
-		j = bar();
-	} 
-	else
-	{
-          // CHECK: add nsw
-          // CHECK-NEXT: store i32 %{{[a-zA-Z0-9]+}}
-          // CHECK-NOT:  br label %{{[a-zA-Z0-9\.]+}}, !dbg 
-		j = bar() + 2;
-	}
-	return j;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -g -S -emit-llvm %s -o - | FileCheck %s
-
-void func(char c, char* d)
-{
-  *d = c + 1;
-  return;
-  
-
-  
-  
-  
-  
-}
-
-// CHECK: ret void, !dbg [[LINE:.*]]
-// CHECK: [[LINE]] = metadata !{i32 6,

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line4.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line4.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-line4.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang %s -g -gcolumn-info -S -emit-llvm -o - | FileCheck %s
-// Checks that clang emits column information when -gcolumn-info is passed.
-
-int foo(int a, int b) { int c = a + b;
-
-
-  return c;
-}
-
-// Without column information we wouldn't change locations for b.
-// CHECK: metadata !{i32 4, i32 20,

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-member.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-member.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-member.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g < %s | grep DW_TAG_member 
-
-struct A { int x; } a;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-scope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-scope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-scope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm < %s | FileCheck %s
-// Two variables with same name in separate scope.
-// Radar 8330217.
-int main() {
-	int j = 0;
-	int k = 0;
-// CHECK: DW_TAG_auto_variable ] [i]
-// CHECK-NEXT: DW_TAG_lexical_block
-	for (int i = 0; i < 10; i++)
-		j++;
-// CHECK: DW_TAG_auto_variable ] [i]
-// CHECK-NEXT: DW_TAG_lexical_block
-	for (int i = 0; i < 10; i++)
-		k++;
-	return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-static.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-static.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-static.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1  -g -emit-llvm -o - %s | FileCheck %s
-
-// CHECK:  xyzzy, null} ; [ DW_TAG_variable ]
-void f(void)
-{
-   static int xyzzy;
-   xyzzy += 3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-var-location.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-var-location.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-var-location.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang -S -g -fverbose-asm %s -o - | FileCheck %s
-// Radar 8461032
-// CHECK: DW_AT_location
-// CHECK-NEXT: byte 145
-
-// 145 is DW_OP_fbreg
-struct s {
-  int a;
-  struct s *next;
-};
-
-int foo(struct  s *s) {
-  switch (s->a) {
-  case 1:
-  case 2: {
-    struct s *sp = s->next;
-  }
-    break;
-  }
-  return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-vector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-vector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-vector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g %s -o - | FileCheck %s
-typedef int v4si __attribute__((__vector_size__(16)));
-
-v4si a;
-
-// Test that we get an array type that's also a vector out of debug.
-// CHECK: [ DW_TAG_array_type ] [line 0, size 128, align 128, offset 0] [vector] [from int]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-vla.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-vla.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info-vla.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-// CHECK: metadata !{i32 {{.*}}, metadata {{.*}}, metadata !"vla", metadata {{.*}}, i32 7, metadata {{.*}}, i32 0, i32 0, i64 2} ; [ DW_TAG_auto_variable ]
-
-void testVLAwithSize(int s)
-{
-  int vla[s];
-  int i;
-  for (i = 0; i < s; i++) {
-    vla[i] = i*i;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-info.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unk-unk -o - -emit-llvm -g %s | FileCheck %s
-
-// PR3023
-void convert(void) {
-  struct { typeof(0) f0; } v0;
-}
-
-
-// PR2784
-struct OPAQUE; // CHECK: DW_TAG_structure_type
-typedef struct OPAQUE *PTR;
-PTR p;
-
-
-// PR2950
-struct s0;
-struct s0 { struct s0 *p; } g0;
-
-struct s0 *f0(struct s0 *a0) {
-  return a0->p;
-}
-
-
-// PR3134
-char xpto[];
-
-
-// PR3427
-struct foo {
-  int a;
-  void *ptrs[];
-};
-struct foo bar;
-
-
-// PR4143
-struct foo2 {
-  enum bar *bar;
-};
-
-struct foo2 foo2;
-
-
-// Radar 7325611
-// CHECK: "barfoo"
-typedef int barfoo;
-barfoo foo() {
-}
-
-// CHECK: __uint128_t
-__uint128_t foo128 ()
-{
-  __uint128_t int128 = 44;
-  return int128;
-}
-
-// CHECK: uint64x2_t
-typedef unsigned long long uint64_t;
-typedef uint64_t uint64x2_t __attribute__((ext_vector_type(2)));
-uint64x2_t extvectbar[4];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/debug-line-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/debug-line-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/debug-line-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -o - -emit-llvm -g %s | FileCheck %s
-// REQUIRES: asserts
-// PR9796
-
-// Check to make sure that we emit the block for the break so that we can count the line.
-// CHECK: sw.bb:                                            ; preds = %entry
-// CHECK: br label %sw.epilog, !dbg !
-  
-extern int atoi(const char *);
-
-int f(char* arg) {
-  int x = atoi(arg);
-  
-  switch(x) {
-    case 1:
-      break;
-  }
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/decl-in-prototype.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/decl-in-prototype.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/decl-in-prototype.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -emit-llvm -S -o - %s | FileCheck %s
-
-const int AA = 5;
-
-// CHECK: define i32 @f1
-int f1(enum {AA,BB} E) {
-    // CHECK: ret i32 1
-    return BB;
-}
-
-// CHECK: define i32 @f2
-int f2(enum {AA=7,BB} E) {
-    // CHECK: ret i32 7
-    return AA;
-}
-
-// Check nested function declarators work.
-int f(void (*g)(), enum {AA,BB} h) {
-    // CHECK: ret i32 0
-    return AA;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,119 +0,0 @@
-// RUN: %clang_cc1 -w -emit-llvm < %s | FileCheck %s
-
-// CHECK: @test1.x = internal constant [12 x i32] [i32 1
-// CHECK: @test2.x = private unnamed_addr constant [13 x i32] [i32 1,
-// CHECK: @test5w = global { i32, [4 x i8] } { i32 2, [4 x i8] undef }
-// CHECK: @test5y = global { double } { double 7.300000e+0{{[0]*}}1 }
-
-// CHECK: @test6.x = private unnamed_addr constant %struct.SelectDest { i8 1, i8 2, i32 3, i32 0 }
-
-// CHECK: @test7 = global [2 x %struct.test7s] [%struct.test7s { i32 1, i32 2 }, %struct.test7s { i32 4, i32 0 }]
-
-void test1() {
-  // This should codegen as a "@test1.x" global.
-  const int x[] = { 1, 2, 3, 4, 6, 8, 9, 10, 123, 231, 123,23 };
-  foo(x);
-
-// CHECK: @test1()
-// CHECK: {{call.*@foo.*@test1.x}}
-}
-
-
-// rdar://7346691
-void test2() {
-  // This should codegen as a "@test2.x" global + memcpy.
-  int x[] = { 1, 2, 3, 4, 6, 8, 9, 10, 123, 231, 123,23, 24 };
-  foo(x);
-
-  // CHECK: @test2()
-  // CHECK: %x = alloca [13 x i32]
-  // CHECK: call void @llvm.memcpy
-  // CHECK: call{{.*}}@foo{{.*}}i32* %
-}
-
-
-void test3() {
-  // This should codegen as a memset.
-  int x[100] = { 0 };
-  foo(x);
-
-  // CHECK: @test3()
-  // CHECK: %x = alloca [100 x i32]
-  // CHECK: call void @llvm.memset
-}
-
-void test4(void) {
-  char a[10] = "asdf";
-  char b[10] = { "asdf" };
-  // CHECK: @test4()
-  // CHECK: %a = alloca [10 x i8]
-  // CHECK: %b = alloca [10 x i8]
-  // CHECK: call void @llvm.memcpy
-  // CHECK: call void @llvm.memcpy
-}
-
-
-union test5u { int i; double d; };
-
-void test5() {
-  union test5u ola = (union test5u) 351;
-  union test5u olb = (union test5u) 1.0;
-}
-
-union test5u test5w = (union test5u)2;
-union test5u test5y = (union test5u)73.0;
-
-
-
-// PR6660 - sqlite miscompile
-struct SelectDest {
-  unsigned char eDest;
-  unsigned char affinity;
-  int iParm;
-  int iMem;
-};
-
-void test6() {
-  struct SelectDest x = {1, 2, 3};
-  test6f(&x);
-}
-
-// rdar://7657600
-struct test7s { int a; int b; } test7[] = {
-  {1, 2},
-  {4},
-};
-
-// rdar://7872531
-#pragma pack(push, 2)
-struct test8s { int f0; char f1; } test8g = {};
-
-
-// PR7519
-
-struct S {
-  void (*x) (struct S *);
-};
-
-extern struct S *global_dc;
-void cp_diagnostic_starter(struct S *);
-
-void init_error(void) {
-  global_dc->x = cp_diagnostic_starter;
-}
-
-
-
-// rdar://8147692 - ABI crash in recursive struct-through-function-pointer.
-typedef struct {
-  int x5a;
-} x5;
-
-typedef struct x2 *x0;
-typedef long (*x1)(x0 x0a, x5 x6);
-struct x2 {
-  x1 x4;
-};
-long x3(x0 x0a, x5 a) {
-  return x0a->x4(x0a, a);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/designated-initializers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/designated-initializers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/designated-initializers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-struct foo {
-    void *a;
-    int b;
-};
-
-// CHECK: @u = global %union.anon zeroinitializer
-union { int i; float f; } u = { };
-
-// CHECK: @u2 = global { i32, [4 x i8] } { i32 0, [4 x i8] undef }
-union { int i; double f; } u2 = { };
-
-// CHECK: @u3 = global  %union.anon.1 zeroinitializer
-union { double f; int i; } u3 = { };
-
-// CHECK: @b = global [2 x i32] [i32 0, i32 22]
-int b[2] = {
-  [1] = 22
-};
-
-// PR6955
-
-struct ds {
-  struct {
-    struct {
-      short a;
-    };
-    short b;
-    struct {
-      short c;
-    };
-  };
-};
-
-// Traditional C anonymous member init
-struct ds ds0 = { { { .a = 0 } } };
-// C1X lookup-based anonymous member init cases
-struct ds ds1 = { { .a = 1 } };
-struct ds ds2 = { { .b = 1 } };
-struct ds ds3 = { .a = 0 };
-// CHECK: @ds4 = global %struct.ds { %struct.anon.3 { %struct.anon zeroinitializer, i16 0, %struct.anon.2 { i16 1 } } }
-struct ds ds4 = { .c = 1 };
-struct ds ds5 = { { { .a = 0 } }, .b = 1 };
-struct ds ds6 = { { .a = 0, .b = 1 } };
-// CHECK: @ds7 = global %struct.ds { %struct.anon.3 { %struct.anon { i16 2 }, i16 3, %struct.anon.2 zeroinitializer } }
-struct ds ds7 = {
-  { {
-      .a = 1
-    } },
-  .a = 2,
-  .b = 3
-};
-
-void test1(int argc, char **argv)
-{
-  // CHECK: internal global %struct.foo { i8* null, i32 1024 }
-  static struct foo foo = {
-    .b = 1024,
-  };
-
-  // CHECK: bitcast %union.anon.4* %u2
-  // CHECK: call void @llvm.memset
-   union { int i; float f; } u2 = { };
-
-  // CHECK-NOT: call void @llvm.memset
-  union { int i; float f; } u3;
-
-  // CHECK: ret void
-}
-
-
-// PR7151
-struct S {
-  int nkeys;
-  int *keys;
-  union {
-    void *data;
-  };
-};
-
-void test2() {
-  struct S *btkr;
-  
-  *btkr = (struct S) {
-    .keys  = 0,
-    { .data  = 0 },
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/dllimport-dllexport.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/dllimport-dllexport.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/dllimport-dllexport.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple i386-mingw32 -emit-llvm < %s | FileCheck %s
-
-void __attribute__((dllimport)) foo1();
-void __attribute__((dllexport)) foo1(){}
-// CHECK: define dllexport void @foo1
-void __attribute__((dllexport)) foo2();
-
-// PR6269
-__declspec(dllimport) void foo3();
-__declspec(dllexport) void foo3(){}
-// CHECK: define dllexport void @foo3
-__declspec(dllexport) void foo4();

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/dostmt.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/dostmt.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/dostmt.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-int bar();
-int test0() {
-  int i;
-  i = 1 + 2;
-  do {
-    i = bar();
-    i = bar();
-  } while(0);
-  return i;
-}
-
-
-int test1() {
-  int i;
-  i = 1 + 2;
-  do {
-    i = bar();
-    if (i == 42)
-      break;
-    i = bar();
-  } while(1);
-  return i;
-}
-
-
-int test2() {
-  int i;
-  i = 1 + 2;
-  do {
-    i = bar();
-    if (i == 42)
-      continue;
-    i = bar();
-  } while(1);
-  return i;
-}
-
-
-int test3() {
-  int i;
-  i = 1 + 2;
-  do {
-    i = bar();
-    if (i == 42)
-      break;
-  } while(0);
-  return i;
-}
-
-
-int test4() {
-  int i;
-  i = 1 + 2;
-  do {
-    i = bar();
-    if (i == 42)
-      continue;
-  } while(0);
-  return i;
-}
-
-// rdar://6103124
-void test5() {
-  do { break; } while(0);
-}
-
-// PR14191
-void test6f(void);
-void test6() {
-  do {
-  } while (test6f(), 0);
-  // CHECK: call void @test6f()
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/emit-all-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/emit-all-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/emit-all-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: not grep "@foo" %t
-// RUN: %clang_cc1 -femit-all-decls -emit-llvm -o %t %s
-// RUN: grep "@foo" %t
-
-static void foo() {
-  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/empty-union-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/empty-union-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/empty-union-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s -o -
-// PR2419
-
-struct Mem {
-        union {
-        } u;
-};
-
-struct Mem *columnMem(){
-        static const struct Mem nullMem = { {} };
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -O3 -emit-llvm -o - | grep 'ret i32 6'
-// RUN: %clang_cc1 -triple i386-unknown-unknown -x c++ %s -O3 -emit-llvm -o - | grep 'ret i32 7'
-
-// This test case illustrates a peculiarity of the promotion of
-// enumeration types in C and C++. In particular, the enumeration type
-// "z" below promotes to an unsigned int in C but int in C++.
-static enum { foo, bar = 1U } z;
-
-int main (void)
-{
-  int r = 0;
-
-  if (bar - 2 < 0)
-    r += 4;
-  if (foo - 1 < 0)
-    r += 2;
-  if (z - 1 < 0)
-    r++;
-
-  return r;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/enum2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/enum2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/enum2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -g -emit-llvm -o /dev/null
-int v;
-enum e { MAX };
-
-void foo (void)
-{
-  v = MAX;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/exact-div-expr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/exact-div-expr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/exact-div-expr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -O1 | grep ashr
-// RUN: %clang_cc1 -emit-llvm %s -o - -O1 | not grep sdiv
-
-long long test(int *A, int *B) {
-  return A-B;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/exceptions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/exceptions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/exceptions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s -fexceptions -fblocks | FileCheck %s
-// RUN: %clang_cc1 -triple armv7-apple-unknown -emit-llvm -o - %s -fexceptions -fsjlj-exceptions -fblocks | FileCheck %s -check-prefix=CHECK-ARM
-
-// rdar://problem/8621849
-void test1() {
-  extern void test1_helper(void (^)(int));
-
-  // CHECK:     define void @test1()
-  // CHECK-ARM: define arm_aapcscc void @test1()
-
-  __block int x = 10;
-
-  // CHECK:     invoke void @test1_helper(
-  // CHECK-ARM: invoke arm_aapcscc void @test1_helper(
-  test1_helper(^(int v) { x = v; });
-
-  // CHECK:          landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gcc_personality_v0 to i8*)
-  // CHECK-NEXT:       cleanup
-  // CHECK-ARM:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gcc_personality_sj0 to i8*)
-  // CHECK-ARM-NEXT:   cleanup
-}
-
-void test2_helper();
-void test2() {
-  __block int x = 10;
-  test2_helper(5, 6, 7);
-}
-void test2_helper(int x, int y) {
-}
-// CHECK: invoke void @test2_helper(i32 5, i32 6)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/exprs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/exprs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/exprs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,186 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-// PR1895
-// sizeof function
-int zxcv(void);
-int x=sizeof(zxcv);
-int y=__alignof__(zxcv);
-
-
-void *test(int *i) {
- short a = 1;
- i += a;
- i + a;
- a + i;
-}
-
-_Bool test2b; 
-int test2() { if (test2b); return 0; }
-
-// PR1921
-int test3() {
-  const unsigned char *bp;
-  bp -= (short)1;
-}
-
-// PR2080 - sizeof void
-int t1 = sizeof(void);
-int t2 = __alignof__(void);
-void test4() {
-  t1 = sizeof(void);
-  t2 = __alignof__(void);
-  
-  t1 = sizeof(test4());
-  t2 = __alignof__(test4());
-}
-
-// 'const float' promotes to double in varargs.
-int test5(const float x, float float_number) {
-  return __builtin_isless(x, float_number);
-}
-
-// this one shouldn't fold
-int ola() {
-  int a=2;
-  if ((0, (int)a) & 2) { return 1; }
-  return 2;
-}
-
-// this one shouldn't fold as well
-void eMaisUma() {
-  double t[1];
-  if (*t)
-    return;
-}
-
-// rdar://6520707
-void f0(void (*fp)(void), void (*fp2)(void)) {
-  int x = fp - fp2;
-}
-
-// noop casts as lvalues.
-struct X {
-  int Y;
-};
-struct X foo();
-int bar() {
-  return ((struct X)foo()).Y + 1;
-}
-
-// PR3809: INC/DEC of function pointers.
-void f2(void);
-unsigned f1(void) {
-  void (*fp)(void) = f2;
-  
-  ++fp;
-  fp++;
-  --fp;
-  fp--;
-  return (unsigned) fp;
-}  
-
-union f3_x {int x; float y;};
-int f3() {return ((union f3_x)2).x;}
-
-union f4_y {int x; _Complex float y;};
-_Complex float f4() {return ((union f4_y)(_Complex float)2.0).y;}
-
-struct f5_a { int a; } f5_a;
-union f5_z {int x; struct f5_a y;};
-struct f5_a f5() {return ((union f5_z)f5_a).y;}
-
-// ?: in "lvalue"
-struct s6 { int f0; };
-int f6(int a0, struct s6 a1, struct s6 a2) {
-  return (a0 ? a1 : a2).f0;
-}
-
-// PR4026
-void f7() {
-  __func__;
-}
-
-// PR4067
-int f8() {
-  return ({ foo(); }).Y;
-}
-
-// rdar://6880558
-struct S;
-struct C {
-  int i;
-  struct S *tab[];
-};
-struct S { struct C c; };
-void f9(struct S *x) {
-  foo(((void)1, x->c).tab[0]);
-}
-
-void f10() {
-  __builtin_sin(0);
-}
-
-// rdar://7530813
-// CHECK: define i32 @f11
-int f11(long X) {
-  int A[100];
-  return A[X];
-
-// CHECK: [[Xaddr:%[^ ]+]] = alloca i64, align 8
-// CHECK: load {{.*}}* [[Xaddr]]
-// CHECK-NEXT: getelementptr inbounds [100 x i32]* %A, i32 0, 
-// CHECK-NEXT: load i32*
-}
-
-int f12() {
-  // PR3150
-  // CHECK: define i32 @f12
-  // CHECK: ret i32 1
-  return 1||1;
-}
-
-// Make sure negate of fp uses -0.0 for proper -0 handling.
-double f13(double X) {
-  // CHECK: define double @f13
-  // CHECK: fsub double -0.0
-  return -X;
-}
-
-// Check operations on incomplete types.
-void f14(struct s14 *a) {
-  (void) &*a;
-}
-
-// CHECK: define void @f15
-void f15() {
-  extern void f15_start(void);
-  f15_start();
-  // CHECK: call void @f15_start()
-
-  extern void *f15_v(void);
-  extern const void *f15_cv(void);
-  extern volatile void *f15_vv(void);
-  *f15_v(); *f15_v(), *f15_v(); f15_v() ? *f15_v() : *f15_v();
-  *f15_cv(); *f15_cv(), *f15_cv(); f15_cv() ? *f15_cv() : *f15_cv();
-  *f15_vv(); *f15_vv(), *f15_vv(); f15_vv() ? *f15_vv() : *f15_vv();
-  // CHECK-NOT: load
-  // CHECK: ret void
-}
-
-// PR8967: this was crashing
-// CHECK: define void @f16()
-void f16() {
-  __extension__({ goto lbl; });
- lbl:
-  ;
-}
-
-// PR13704: negative increment in i128 is not preserved.
-// CHECK: define void @f17()
-void f17() {
-  extern void extfunc(__int128);
-  __int128 x = 2;
-  x--;
-  extfunc(x);
-// CHECK: add nsw i128 %{{.}}, -1
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ext-vector-member-alignment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ext-vector-member-alignment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ext-vector-member-alignment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-typedef float float4 __attribute__((ext_vector_type(4)));
-
-struct __attribute__((packed, aligned(4))) struct1 {
-  float4 position;
-};
-int x = __alignof(struct struct1);
-
-float4 f(struct struct1* x) { return x->position; }
-
-void func(struct struct1* p, float *a, float *b, float c) {
-  p->position.x = c;
-  *a = p->position.y;
-  *b = p->position[0];
-  p->position[2] = c;
-  // FIXME: We should be able to come up with a more aggressive alignment
-  // estimate.
-  // CHECK: @func
-  // CHECK: load <4 x float>* {{%.*}}, align 1
-  // CHECK: store <4 x float> {{%.*}}, <4 x float>* {{%.*}}, align 1
-  // CHECK: load <4 x float>* {{%.*}}, align 1
-  // CHECK: load <4 x float>* {{%.*}}, align 1
-  // CHECK: load <4 x float>* {{%.*}}, align 1
-  // CHECK: store <4 x float> {{%.*}}, <4 x float>* {{%.*}}, align 1
-  // CHECK: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ext-vector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ext-vector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ext-vector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,288 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-typedef __attribute__(( ext_vector_type(4) )) float float4;
-typedef __attribute__(( ext_vector_type(2) )) float float2;
-typedef __attribute__(( ext_vector_type(4) )) int int4;
-typedef __attribute__(( ext_vector_type(4) )) unsigned int uint4;
-
-// CHECK: @foo = global <4 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00>
-float4 foo = (float4){ 1.0, 2.0, 3.0, 4.0 };
-
-// CHECK: @bar = constant <4 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 0x7FF0000000000000>
-const float4 bar = (float4){ 1.0, 2.0, 3.0, __builtin_inff() };
-
-// CHECK: @test1
-// CHECK: fadd <4 x float>
-float4 test1(float4 V) {
-  return V.wzyx+V;
-}
-
-float2 vec2, vec2_2;
-float4 vec4, vec4_2;
-float f;
-
-// CHECK: @test2
-// CHECK: shufflevector {{.*}} <i32 0, i32 1>
-// CHECK: extractelement
-// CHECK: shufflevector {{.*}} <i32 1, i32 1, i32 1, i32 1>
-// CHECK: insertelement
-// CHECK: shufflevector {{.*}} <i32 1, i32 0>
-void test2() {
-    vec2 = vec4.xy;  // shorten
-    f = vec2.x;      // extract elt
-    vec4 = vec4.yyyy;  // splat
-    
-    vec2.x = f;      // insert one.
-    vec2.yx = vec2; // reverse
-}
-
-// CHECK: @test3
-// CHECK: store <4 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00>
-void test3(float4 *out) {
-  *out = ((float4) {1.0f, 2.0f, 3.0f, 4.0f });
-}
-
-// CHECK: @test4
-// CHECK: store <4 x float>
-// CHECK: store <4 x float>
-void test4(float4 *out) {
-  float a = 1.0f;
-  float b = 2.0f;
-  float c = 3.0f;
-  float d = 4.0f;
-  *out = ((float4) {a,b,c,d});
-}
-
-// CHECK: @test5
-// CHECK: shufflevector {{.*}} <4 x i32> zeroinitializer
-// CHECK: fmul <4 x float>
-// CHECK: fmul <4 x float>
-// CHECK: shufflevector {{.*}} <4 x i32> zeroinitializer
-// CHECK: fmul <4 x float>
-void test5(float4 *out) {
-  float a;
-  float4 b;
-  
-  a = 1.0f;
-  b = a;
-  b = b * 5.0f;
-  b = 5.0f * b;
-  b *= a;
-  
-  *out = b;
-}
-
-// CHECK: @test6
-void test6(float4 *ap, float4 *bp, float c) {
-  float4 a = *ap;
-  float4 b = *bp;
-
-  // CHECK: fadd <4 x float>
-  // CHECK: fsub <4 x float>
-  // CHECK: fmul <4 x float>
-  // CHECK: fdiv <4 x float>
-  a = a + b;
-  a = a - b;
-  a = a * b;
-  a = a / b;
-
-  // CHECK: fadd <4 x float>
-  // CHECK: fsub <4 x float>
-  // CHECK: fmul <4 x float>
-  // CHECK: fdiv <4 x float>
-  a = a + c;
-  a = a - c;
-  a = a * c;
-  a = a / c;
-
-  // CHECK: fadd <4 x float>
-  // CHECK: fsub <4 x float>
-  // CHECK: fmul <4 x float>
-  // CHECK: fdiv <4 x float>
-  a += b;
-  a -= b;
-  a *= b;
-  a /= b;
-
-  // CHECK: fadd <4 x float>
-  // CHECK: fsub <4 x float>
-  // CHECK: fmul <4 x float>
-  // CHECK: fdiv <4 x float>
-  a += c;
-  a -= c;
-  a *= c;
-  a /= c;
-
-  // Vector comparisons can sometimes crash the x86 backend: rdar://6326239,
-  // reject them until the implementation is stable.
-#if 0
-  int4 cmp;
-  cmp = a < b;
-  cmp = a <= b;
-  cmp = a < b;
-  cmp = a >= b;
-  cmp = a == b;
-  cmp = a != b;
-#endif
-}
-
-// CHECK: @test7
-void test7(int4 *ap, int4 *bp, int c) {
-  int4 a = *ap;
-  int4 b = *bp;
-
-  // CHECK: add <4 x i32>
-  // CHECK: sub <4 x i32>
-  // CHECK: mul <4 x i32>
-  // CHECK: sdiv <4 x i32>
-  // CHECK: srem <4 x i32>
-  a = a + b;
-  a = a - b;
-  a = a * b;
-  a = a / b;
-  a = a % b;
-
-  // CHECK: add <4 x i32>
-  // CHECK: sub <4 x i32>
-  // CHECK: mul <4 x i32>
-  // CHECK: sdiv <4 x i32>
-  // CHECK: srem <4 x i32>
-  a = a + c;
-  a = a - c;
-  a = a * c;
-  a = a / c;
-  a = a % c;
-
-  // CHECK: add <4 x i32>
-  // CHECK: sub <4 x i32>
-  // CHECK: mul <4 x i32>
-  // CHECK: sdiv <4 x i32>
-  // CHECK: srem <4 x i32>
-  a += b;
-  a -= b;
-  a *= b;
-  a /= b;
-  a %= b;
-
-  // CHECK: add <4 x i32>
-  // CHECK: sub <4 x i32>
-  // CHECK: mul <4 x i32>
-  // CHECK: sdiv <4 x i32>
-  // CHECK: srem <4 x i32>
-  a += c;
-  a -= c;
-  a *= c;
-  a /= c;
-  a %= c;
-
-
-  // Vector comparisons.
-  // CHECK: icmp slt
-  // CHECK: icmp sle
-  // CHECK: icmp sgt
-  // CHECK: icmp sge
-  // CHECK: icmp eq
-  // CHECK: icmp ne
-  int4 cmp;
-  cmp = a < b;
-  cmp = a <= b;
-  cmp = a > b;
-  cmp = a >= b;
-  cmp = a == b;
-  cmp = a != b;
-}
-
-// CHECK: @test8
-void test8(float4 *ap, float4 *bp, int c) {
-  float4 a = *ap;
-  float4 b = *bp;
-
-  // Vector comparisons.
-  // CHECK: fcmp olt
-  // CHECK: fcmp ole
-  // CHECK: fcmp ogt
-  // CHECK: fcmp oge
-  // CHECK: fcmp oeq
-  // CHECK: fcmp une
-  int4 cmp;
-  cmp = a < b;
-  cmp = a <= b;
-  cmp = a > b;
-  cmp = a >= b;
-  cmp = a == b;
-  cmp = a != b;
-}
-
-// CHECK: @test9
-// CHECK: extractelement <4 x i32>
-int test9(int4 V) {
-  return V.xy.x;
-}
-
-// CHECK: @test10
-// CHECK: add <4 x i32>
-// CHECK: extractelement <4 x i32>
-int test10(int4 V) {
-  return (V+V).x;
-}
-
-// CHECK: @test11
-// CHECK: extractelement <4 x i32>
-int4 test11a();
-int test11() {
-  return test11a().x;
-}
-
-// CHECK: @test12
-// CHECK: shufflevector {{.*}} <i32 2, i32 1, i32 0>
-// CHECK: shufflevector {{.*}} <i32 0, i32 1, i32 2, i32 undef>
-// CHECK: shufflevector {{.*}} <i32 4, i32 5, i32 6, i32 3>
-int4 test12(int4 V) {
-  V.xyz = V.zyx;
-  return V;
-}
-
-// CHECK: @test13
-// CHECK: shufflevector {{.*}} <i32 2, i32 1, i32 0, i32 3>
-int4 test13(int4 *V) {
-  return V->zyxw;
-}
-
-// CHECK: @test14
-void test14(uint4 *ap, uint4 *bp, unsigned c) {
-  uint4 a = *ap;
-  uint4 b = *bp;
-  int4 d;
-  
-  // CHECK: udiv <4 x i32>
-  // CHECK: urem <4 x i32>
-  a = a / b;
-  a = a % b;
-
-  // CHECK: udiv <4 x i32>
-  // CHECK: urem <4 x i32>
-  a = a / c;
-  a = a % c;
-
-  // CHECK: icmp ult
-  // CHECK: icmp ule
-  // CHECK: icmp ugt
-  // CHECK: icmp uge
-  // CHECK: icmp eq
-  // CHECK: icmp ne
-  d = a < b;
-  d = a <= b;
-  d = a > b;
-  d = a >= b;
-  d = a == b;
-  d = a != b;
-}
-
-// CHECK: @test15
-int4 test15(uint4 V0) {
-  // CHECK: icmp eq <4 x i32>
-  int4 V = !V0;
-  V = V && V;
-  V = V || V;
-  return V;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/extern-block-var.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/extern-block-var.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/extern-block-var.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-int f() {
-  extern int a;
-  return a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/extern-inline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/extern-inline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/extern-inline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -S -emit-llvm -std=gnu89 -o - %s | FileCheck %s
-// RUN: %clang -target i386-unknown-unknown -S -emit-llvm -fgnu89-inline -o - %s | FileCheck %s
-// PR5253
-
-// If an extern inline function is redefined, functions should call the
-// redefinition.
-extern inline int f(int a) {return a;}
-int g(void) {return f(0);}
-// CHECK: call i32 @f
-int f(int b) {return 1+b;}
-// CHECK: load i32* %{{.*}}
-// CHECK: add nsw i32 1, %{{.*}}
-int h(void) {return f(1);}
-// CHECK: call i32 @f
-
-// It shouldn't matter if the function was redefined static.
-extern inline int f2(int a, int b) {return a+b;}
-int g2(void) {return f2(0,1);}
-// CHECK: call i32 @f2
-static int f2(int a, int b) {return a*b;}
-// CHECK: load i32* %{{.*}}
-// CHECK: load i32* %{{.*}}
-// CHECK: mul nsw i32 %{{.*}}, %{{.*}}
-int h2(void) {return f2(1,2);}
-// CHECK: call i32 @f2
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/extern-weak.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/extern-weak.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/extern-weak.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -O3 -emit-llvm -o - %s | grep extern_weak
-// RUN: %clang_cc1 -O3 -emit-llvm -o - %s | llc
-
-#if !defined(__linux__) && !defined(__FreeBSD__) && \
-    !defined(__OpenBSD__) && !defined(__CYGWIN__) && !defined(__DragonFly__)
-void foo() __attribute__((weak_import));
-#else
-void foo() __attribute__((weak));
-#endif
-
-void bar() { foo(); }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/f16c-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/f16c-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/f16c-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +f16c -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-__m128 test_mm_cvtph_ps(__m128i a) {
-  // CHECK: @llvm.x86.vcvtph2ps.128
-  return _mm_cvtph_ps(a);
-}
-
-__m256 test_mm256_cvtph_ps(__m128i a) {
-  // CHECK: @llvm.x86.vcvtph2ps.256
-  return _mm256_cvtph_ps(a);
-}
-
-__m128i test_mm_cvtps_ph(__m128 a) {
-  // CHECK: @llvm.x86.vcvtps2ph.128
-  return _mm_cvtps_ph(a, 0);
-}
-
-__m128i test_mm256_cvtps_ph(__m256 a) {
-  // CHECK: @llvm.x86.vcvtps2ph.256
-  return _mm256_cvtps_ph(a, 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/fast-math.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/fast-math.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/fast-math.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -ffast-math -emit-llvm -o - %s | FileCheck %s
-float f0, f1, f2;
-
-void foo(void) {
-  // CHECK: define void @foo()
-
-  // CHECK: fadd fast
-  f0 = f1 + f2;
-
-  // CHECK: ret
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ffp-contract-option.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ffp-contract-option.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ffp-contract-option.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -O3 -ffp-contract=fast -triple=powerpc-apple-darwin10 -S -o - %s | FileCheck %s
-// REQUIRES: ppc32-registered-target
-
-float fma_test1(float a, float b, float c) {
-// CHECK: fmadds
-  float x = a * b;
-  float y = x + c;
-  return y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/finite-math.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/finite-math.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/finite-math.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -ffinite-math-only -emit-llvm -o - %s | FileCheck %s
-float f0, f1, f2;
-
-void foo(void) {
-  // CHECK: define void @foo()
-
-  // CHECK: fadd nnan ninf
-  f0 = f1 + f2;
-
-  // CHECK: ret
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/flexible-array-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/flexible-array-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/flexible-array-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-struct { int x; int y[]; } a = { 1, 7, 11 };
-// CHECK: @a = global { i32, [2 x i32] } { i32 1, [2 x i32] [i32 7, i32 11] }
-
-struct { int x; int y[]; } b = { 1, { 13, 15 } };
-// CHECK: @b = global { i32, [2 x i32] } { i32 1, [2 x i32] [i32 13, i32 15] }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/fma-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/fma-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/fma-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,166 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +fma -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <immintrin.h>
-
-__m128 test_mm_fmadd_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmadd.ps
-  return _mm_fmadd_ps(a, b, c);
-}
-
-__m128d test_mm_fmadd_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmadd.pd
-  return _mm_fmadd_pd(a, b, c);
-}
-
-__m128 test_mm_fmadd_ss(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmadd.ss
-  return _mm_fmadd_ss(a, b, c);
-}
-
-__m128d test_mm_fmadd_sd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmadd.sd
-  return _mm_fmadd_sd(a, b, c);
-}
-
-__m128 test_mm_fmsub_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmsub.ps
-  return _mm_fmsub_ps(a, b, c);
-}
-
-__m128d test_mm_fmsub_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmsub.pd
-  return _mm_fmsub_pd(a, b, c);
-}
-
-__m128 test_mm_fmsub_ss(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmsub.ss
-  return _mm_fmsub_ss(a, b, c);
-}
-
-__m128d test_mm_fmsub_sd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmsub.sd
-  return _mm_fmsub_sd(a, b, c);
-}
-
-__m128 test_mm_fnmadd_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.ps
-  return _mm_fnmadd_ps(a, b, c);
-}
-
-__m128d test_mm_fnmadd_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.pd
-  return _mm_fnmadd_pd(a, b, c);
-}
-
-__m128 test_mm_fnmadd_ss(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.ss
-  return _mm_fnmadd_ss(a, b, c);
-}
-
-__m128d test_mm_fnmadd_sd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.sd
-  return _mm_fnmadd_sd(a, b, c);
-}
-
-__m128 test_mm_fnmsub_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.ps
-  return _mm_fnmsub_ps(a, b, c);
-}
-
-__m128d test_mm_fnmsub_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.pd
-  return _mm_fnmsub_pd(a, b, c);
-}
-
-__m128 test_mm_fnmsub_ss(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.ss
-  return _mm_fnmsub_ss(a, b, c);
-}
-
-__m128d test_mm_fnmsub_sd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.sd
-  return _mm_fnmsub_sd(a, b, c);
-}
-
-__m128 test_mm_fmaddsub_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmaddsub.ps
-  return _mm_fmaddsub_ps(a, b, c);
-}
-
-__m128d test_mm_fmaddsub_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmaddsub.pd
-  return _mm_fmaddsub_pd(a, b, c);
-}
-
-__m128 test_mm_fmsubadd_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmsubadd.ps
-  return _mm_fmsubadd_ps(a, b, c);
-}
-
-__m128d test_mm_fmsubadd_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmsubadd.pd
-  return _mm_fmsubadd_pd(a, b, c);
-}
-
-__m256 test_mm256_fmadd_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfmadd.ps.256
-  return _mm256_fmadd_ps(a, b, c);
-}
-
-__m256d test_mm256_fmadd_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfmadd.pd.256
-  return _mm256_fmadd_pd(a, b, c);
-}
-
-__m256 test_mm256_fmsub_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfmsub.ps.256
-  return _mm256_fmsub_ps(a, b, c);
-}
-
-__m256d test_mm256_fmsub_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfmsub.pd.256
-  return _mm256_fmsub_pd(a, b, c);
-}
-
-__m256 test_mm256_fnmadd_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.ps.256
-  return _mm256_fnmadd_ps(a, b, c);
-}
-
-__m256d test_mm256_fnmadd_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.pd.256
-  return _mm256_fnmadd_pd(a, b, c);
-}
-
-__m256 test_mm256_fnmsub_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.ps.256
-  return _mm256_fnmsub_ps(a, b, c);
-}
-
-__m256d test_mm256_fnmsub_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.pd.256
-  return _mm256_fnmsub_pd(a, b, c);
-}
-
-__m256 test_mm256_fmaddsub_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfmaddsub.ps.256
-  return _mm256_fmaddsub_ps(a, b, c);
-}
-
-__m256d test_mm256_fmaddsub_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfmaddsub.pd.256
-  return _mm256_fmaddsub_pd(a, b, c);
-}
-
-__m256 test_mm256_fmsubadd_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfmsubadd.ps.256
-  return _mm256_fmsubadd_ps(a, b, c);
-}
-
-__m256d test_mm256_fmsubadd_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfmsubadd.pd.256
-  return _mm256_fmsubadd_pd(a, b, c);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/fma4-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/fma4-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/fma4-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,166 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +fma4 -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-__m128 test_mm_macc_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmadd.ps
-  return _mm_macc_ps(a, b, c);
-}
-
-__m128d test_mm_macc_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmadd.pd
-  return _mm_macc_pd(a, b, c);
-}
-
-__m128 test_mm_macc_ss(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmadd.ss
-  return _mm_macc_ss(a, b, c);
-}
-
-__m128d test_mm_macc_sd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmadd.sd
-  return _mm_macc_sd(a, b, c);
-}
-
-__m128 test_mm_msub_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmsub.ps
-  return _mm_msub_ps(a, b, c);
-}
-
-__m128d test_mm_msub_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmsub.pd
-  return _mm_msub_pd(a, b, c);
-}
-
-__m128 test_mm_msub_ss(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmsub.ss
-  return _mm_msub_ss(a, b, c);
-}
-
-__m128d test_mm_msub_sd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmsub.sd
-  return _mm_msub_sd(a, b, c);
-}
-
-__m128 test_mm_nmacc_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.ps
-  return _mm_nmacc_ps(a, b, c);
-}
-
-__m128d test_mm_nmacc_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.pd
-  return _mm_nmacc_pd(a, b, c);
-}
-
-__m128 test_mm_nmacc_ss(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.ss
-  return _mm_nmacc_ss(a, b, c);
-}
-
-__m128d test_mm_nmacc_sd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.sd
-  return _mm_nmacc_sd(a, b, c);
-}
-
-__m128 test_mm_nmsub_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.ps
-  return _mm_nmsub_ps(a, b, c);
-}
-
-__m128d test_mm_nmsub_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.pd
-  return _mm_nmsub_pd(a, b, c);
-}
-
-__m128 test_mm_nmsub_ss(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.ss
-  return _mm_nmsub_ss(a, b, c);
-}
-
-__m128d test_mm_nmsub_sd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.sd
-  return _mm_nmsub_sd(a, b, c);
-}
-
-__m128 test_mm_maddsub_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmaddsub.ps
-  return _mm_maddsub_ps(a, b, c);
-}
-
-__m128d test_mm_maddsub_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmaddsub.pd
-  return _mm_maddsub_pd(a, b, c);
-}
-
-__m128 test_mm_msubadd_ps(__m128 a, __m128 b, __m128 c) {
-  // CHECK: @llvm.x86.fma.vfmsubadd.ps
-  return _mm_msubadd_ps(a, b, c);
-}
-
-__m128d test_mm_msubadd_pd(__m128d a, __m128d b, __m128d c) {
-  // CHECK: @llvm.x86.fma.vfmsubadd.pd
-  return _mm_msubadd_pd(a, b, c);
-}
-
-__m256 test_mm256_macc_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfmadd.ps.256
-  return _mm256_macc_ps(a, b, c);
-}
-
-__m256d test_mm256_macc_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfmadd.pd.256
-  return _mm256_macc_pd(a, b, c);
-}
-
-__m256 test_mm256_msub_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfmsub.ps.256
-  return _mm256_msub_ps(a, b, c);
-}
-
-__m256d test_mm256_msub_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfmsub.pd.256
-  return _mm256_msub_pd(a, b, c);
-}
-
-__m256 test_mm256_nmacc_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.ps.256
-  return _mm256_nmacc_ps(a, b, c);
-}
-
-__m256d test_mm256_nmacc_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfnmadd.pd.256
-  return _mm256_nmacc_pd(a, b, c);
-}
-
-__m256 test_mm256_nmsub_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.ps.256
-  return _mm256_nmsub_ps(a, b, c);
-}
-
-__m256d test_mm256_nmsub_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfnmsub.pd.256
-  return _mm256_nmsub_pd(a, b, c);
-}
-
-__m256 test_mm256_maddsub_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfmaddsub.ps.256
-  return _mm256_maddsub_ps(a, b, c);
-}
-
-__m256d test_mm256_maddsub_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfmaddsub.pd.256
-  return _mm256_maddsub_pd(a, b, c);
-}
-
-__m256 test_mm256_msubadd_ps(__m256 a, __m256 b, __m256 c) {
-  // CHECK: @llvm.x86.fma.vfmsubadd.ps.256
-  return _mm256_msubadd_ps(a, b, c);
-}
-
-__m256d test_mm256_msubadd_pd(__m256d a, __m256d b, __m256d c) {
-  // CHECK: @llvm.x86.fma.vfmsubadd.pd.256
-  return _mm256_msubadd_pd(a, b, c);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/fold-const-declref.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/fold-const-declref.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/fold-const-declref.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -verify -emit-llvm-only %s
-
-// PR7242: Check that this doesn't crash.
-int main(void)
-{
-  int __negative = 1;
-  const int __max = __negative && 0 ;
-  __max / 0;  // expected-warning{{expression result unused}} expected-warning{{division by zero is undefined}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/forceinline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/forceinline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/forceinline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple i686-win32 -emit-llvm -fms-extensions < %s | FileCheck %s
-
-void bar() {
-}
-
-// CHECK-NOT: foo
-__forceinline void foo() {
-  bar();
-}
-
-void i_want_bar() {
-// CHECK: call void @bar
-  foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/fp-contract-pragma.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/fp-contract-pragma.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/fp-contract-pragma.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -O3 -emit-llvm -o - %s | FileCheck %s
-
-// Is FP_CONTRACT is honored in a simple case?
-float fp_contract_1(float a, float b, float c) {
-// CHECK: _Z13fp_contract_1fff
-// CHECK: tail call float @llvm.fmuladd
-  #pragma STDC FP_CONTRACT ON
-  return a * b + c;
-}
-
-// Is FP_CONTRACT state cleared on exiting compound statements?
-float fp_contract_2(float a, float b, float c) {
-// CHECK: _Z13fp_contract_2fff
-// CHECK: %[[M:.+]] = fmul float %a, %b
-// CHECK-NEXT: fadd float %[[M]], %c
-  {
-    #pragma STDC FP_CONTRACT ON
-  }
-  return a * b + c;  
-}
-
-// Does FP_CONTRACT survive template instatiation?
-class Foo {};
-Foo operator+(Foo, Foo);
-
-template <typename T>
-T template_muladd(T a, T b, T c) {
-  #pragma STDC FP_CONTRACT ON
-  return a * b + c;
-}
-
-float fp_contract_3(float a, float b, float c) {
-// CHECK: _Z13fp_contract_3fff
-// CHECK: tail call float @llvm.fmuladd
-  return template_muladd<float>(a, b, c);
-}
-
-template<typename T> class fp_contract_4 {
-  float method(float a, float b, float c) {
-    #pragma STDC FP_CONTRACT ON
-    return a * b + c;
-  }
-};
-
-template class fp_contract_4<int>;
-// CHECK: _ZN13fp_contract_4IiE6methodEfff
-// CHECK: tail call float @llvm.fmuladd
-
-// Check file-scoped FP_CONTRACT
-#pragma STDC FP_CONTRACT ON
-float fp_contract_5(float a, float b, float c) {
-// CHECK: _Z13fp_contract_5fff
-// CHECK: tail call float @llvm.fmuladd
-  return a * b + c;
-}
-
-#pragma STDC FP_CONTRACT OFF
-float fp_contract_6(float a, float b, float c) {
-// CHECK: _Z13fp_contract_6fff
-// CHECK: %[[M:.+]] = fmul float %a, %b
-// CHECK-NEXT: fadd float %[[M]], %c
-  return a * b + c;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/fp16-ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/fp16-ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/fp16-ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,284 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi %s | FileCheck %s
-typedef unsigned cond_t;
-
-volatile cond_t test;
-volatile __fp16 h0 = 0.0, h1 = 1.0, h2;
-volatile float f0, f1, f2;
-
-void foo(void) {
-  // CHECK: define void @foo()
-
-  // Check unary ops
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK fptoi float
-  test = (h0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp une float
-  test = (!h1);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fsub float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = -h1;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = +h1;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1++;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  ++h1;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  --h1;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1--;
-
-  // Check binary ops with various operands
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fmul float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = h0 * h2;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call i16 @llvm.convert.to.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fmul float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = h0 * (__fp16) -2.0;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fmul float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = h0 * f2;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fmul float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = f0 * h2;
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fdiv float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (h0 / h2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fdiv float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (h0 / (__fp16) -2.0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fdiv float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (h0 / f2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fdiv float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (f0 / h2);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (h2 + h0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = ((__fp16)-2.0 + h0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (h2 + f0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (f2 + h0);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fsub float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (h2 - h0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fsub float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = ((__fp16)-2.0 - h0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fsub float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (h2 - f0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fsub float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (f2 - h0);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp olt
-  test = (h2 < h0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp olt
-  test = (h2 < (__fp16)42.0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp olt
-  test = (h2 < f0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp olt
-  test = (f2 < h0);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp ogt
-  test = (h0 > h2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp ogt
-  test = ((__fp16)42.0 > h2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp ogt
-  test = (h0 > f2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp ogt
-  test = (f0 > h2);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp ole
-  test = (h2 <= h0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp ole
-  test = (h2 <= (__fp16)42.0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp ole
-  test = (h2 <= f0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp ole
-  test = (f2 <= h0);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp oge
-  test = (h0 >= h2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp oge
-  test = (h0 >= (__fp16)-2.0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp oge
-  test = (h0 >= f2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp oge
-  test = (f0 >= h2);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp oeq
-  test = (h1 == h2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp oeq
-  test = (h1 == (__fp16)1.0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp oeq
-  test = (h1 == f1);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp oeq
-  test = (f1 == h1);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp une
-  test = (h1 != h2);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp une
-  test = (h1 != (__fp16)1.0);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp une
-  test = (h1 != f1);
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp une
-  test = (f1 != h1);
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fcmp une
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h1 = (h1 ? h2 : h0);
-  // Check assignments (inc. compound)
-  h0 = h1;
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 = (__fp16)-2.0;
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 = f0;
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd float
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 += h1;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 += (__fp16)1.0;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fadd
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 += f2;
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fsub
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 -= h1;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fsub
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 -= (__fp16)1.0;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fsub
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 -= f2;
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fmul
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 *= h1;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fmul
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 *= (__fp16)1.0;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fmul
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 *= f2;
-
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fdiv
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 /= h1;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fdiv
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 /= (__fp16)1.0;
-  // CHECK: call float @llvm.convert.from.fp16
-  // CHECK: fdiv
-  // CHECK: call i16 @llvm.convert.to.fp16
-  h0 /= f2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/func-aligned.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/func-aligned.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/func-aligned.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s
-
-// rdar://7270273
-void foo() __attribute__((aligned (64)));
-void foo() {
-// CHECK: define void @foo() {{.*}} align 64
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/func-decl-cleanup.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/func-decl-cleanup.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/func-decl-cleanup.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-
-// PR2360
-typedef void fn_t();
-
-fn_t a,b;
-
-void b()
-{
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/func-in-block.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/func-in-block.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/func-in-block.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -emit-llvm -o - %s | FileCheck %s
-// rdar: // 7860965
-
-extern void PRINTF(const char *);
-extern void B(void (^)(void));
-
-int main()
-{
-    PRINTF(__func__);
-    B(
-       ^{
-            PRINTF(__func__);
-        }
-    );
-    return 0; // not reached
-}
-
-// CHECK: @__func__.__main_block_invoke = private unnamed_addr constant [20 x i8] c"__main_block_invoke\00"
-// CHECK: call void @PRINTF({{.*}}@__func__.__main_block_invoke 

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/func-ptr-cast-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/func-ptr-cast-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/func-ptr-cast-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s -verify
-// expected-no-diagnostics
-// PR5882
-
-int q_sk_num(void *a);
-typedef int (*fptr)(double);
-void a() { ((fptr)q_sk_num)(0); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/func-return-member.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/func-return-member.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/func-return-member.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s
-
-struct frk { float _Complex c; int x; };
-struct faz { struct frk f; };
-struct fuz { struct faz f; };
-
-extern struct fuz foo(void);
-
-int X;
-struct frk F;
-float _Complex C;
-
-// CHECK: define void @bar
-void bar(void) {
-  X = foo().f.f.x;
-}
-
-// CHECK: define void @bun
-void bun(void) {
-  F = foo().f.f;
-}
-
-// CHECK: define void @ban
-void ban(void) {
-  C = foo().f.f.c;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/funccall.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/funccall.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/funccall.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-
-static int q;
-
-void foo() {
-  int t = q;
-  q = t + 1;
-}
-int main() {
-  q = 0;
-  foo();
-  q = q - 1;
-
-  return q;
-}
-
-// This is the source that corresponds to funccall.ll
-// RUN: echo foo

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/function-attributes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/function-attributes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/function-attributes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,126 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -Os -o - %s | FileCheck %s
-// CHECK: define signext i8 @f0(i32 %x) [[NUW:#[0-9]+]]
-// CHECK: define zeroext i8 @f1(i32 %x) [[NUW]]
-// CHECK: define void @f2(i8 signext %x) [[NUW]]
-// CHECK: define void @f3(i8 zeroext %x) [[NUW]]
-// CHECK: define signext i16 @f4(i32 %x) [[NUW]]
-// CHECK: define zeroext i16 @f5(i32 %x) [[NUW]]
-// CHECK: define void @f6(i16 signext %x) [[NUW]]
-// CHECK: define void @f7(i16 zeroext %x) [[NUW]]
-
-signed char f0(int x) { return x; }
-
-unsigned char f1(int x) { return x; }
-
-void f2(signed char x) { }
-
-void f3(unsigned char x) { }
-
-signed short f4(int x) { return x; }
-
-unsigned short f5(int x) { return x; }
-
-void f6(signed short x) { }
-
-void f7(unsigned short x) { }
-
-// CHECK: define void @f8()
-// CHECK: [[AI:#[0-9]+]]
-// CHECK: {
-void __attribute__((always_inline)) f8(void) { }
-
-// CHECK: call void @f9_t()
-// CHECK: [[NR:#[0-9]+]]
-// CHECK: }
-void __attribute__((noreturn)) f9_t(void);
-void f9(void) { f9_t(); }
-
-// CHECK: call void @f9a()
-// CHECK: [[NR]]
-// CHECK: }
-_Noreturn void f9a(void);
-void f9b(void) { f9a(); }
-
-// FIXME: We should be setting nounwind on calls.
-// CHECK: call i32 @f10_t()
-// CHECK: [[NUW_RN:#[0-9]+]]
-// CHECK: {
-int __attribute__((const)) f10_t(void);
-int f10(void) { return f10_t(); }
-int f11(void) {
- exit:
-  return f10_t();
-}
-int f12(int arg) {
-  return arg ? 0 : f10_t();
-}
-
-// CHECK: define void @f13() [[NUW]]
-void f13(void) __attribute__((pure)) __attribute__((const));
-void f13(void){}
-
-
-// Ensure that these get inlined: rdar://6853279
-// CHECK: define void @f14
-// CHECK-NOT: @ai_
-// CHECK: call void @f14_end
-static __inline__ __attribute__((always_inline))
-int ai_1() {  return 4; }
-
-static __inline__ __attribute__((always_inline))
-struct {
-  int a, b, c, d, e;
-} ai_2() { while (1) {} }
-
-void f14(int a) {
-  extern void f14_end(void);
-  if (a)
-    ai_2();
-  ai_1();
-  f14_end();
-}
-
-// <rdar://problem/7102668> [irgen] clang isn't setting the optsize bit on functions
-// CHECK: define void @f15
-// CHECK: [[NUW]]
-// CHECK: {
-void f15(void) {
-}
-
-// PR5254
-// CHECK: define void @f16
-// CHECK: [[ALIGN:#[0-9]+]]
-// CHECK: {
-void __attribute__((force_align_arg_pointer)) f16(void) {
-}
-
-// PR11038
-// CHECK: define void @f18()
-// CHECK: [[RT:#[0-9]+]]
-// CHECK: {
-// CHECK: call void @f17()
-// CHECK: [[RT_CALL:#[0-9]+]]
-// CHECK: ret void
-__attribute__ ((returns_twice)) void f17(void);
-__attribute__ ((returns_twice)) void f18(void) {
-        f17();
-}
-
-// CHECK: define void @f19()
-// CHECK: {
-// CHECK: call i32 @setjmp(i32* null)
-// CHECK: [[RT_CALL]]
-// CHECK: ret void
-typedef int jmp_buf[((9 * 2) + 3 + 16)];
-int setjmp(jmp_buf);
-void f19(void) {
-  setjmp(0);
-}
-
-// CHECK: attributes [[NUW]] = { nounwind optsize readnone{{.*}} }
-// CHECK: attributes [[AI]] = { alwaysinline nounwind optsize readnone{{.*}} }
-// CHECK: attributes [[ALIGN]] = { nounwind optsize readnone alignstack=16{{.*}} }
-// CHECK: attributes [[RT]] = { nounwind optsize returns_twice{{.*}} }
-// CHECK: attributes [[NR]] = { noreturn nounwind optsize }
-// CHECK: attributes [[NUW_RN]] = { nounwind optsize readnone }
-// CHECK: attributes [[RT_CALL]] = { nounwind optsize returns_twice }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/functions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/functions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/functions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - -verify | FileCheck %s
-
-int g();
-
-int foo(int i) {
-  return g(i);
-}
-
-int g(int i) {
-  return g(i);
-}
-
-// rdar://6110827
-typedef void T(void);
-void test3(T f) {
-  f();
-}
-
-int a(int);
-int a() {return 1;}
-
-void f0() {}
-// CHECK: define void @f0()
-
-void f1();
-void f2(void) {
-// CHECK: call void @f1()
-  f1(1, 2, 3);
-}
-// CHECK: define void @f1()
-void f1() {}
-
-// CHECK: define {{.*}} @f3{{\(\)|\(.*sret.*\)}}
-struct foo { int X, Y, Z; } f3() {
-  while (1) {}
-}
-
-// PR4423 - This shouldn't crash in codegen
-void f4() {}
-void f5() { f4(42); } //expected-warning {{too many arguments}}
-
-// Qualifiers on parameter types shouldn't make a difference.
-static void f6(const float f, const float g) {
-}
-void f7(float f, float g) {
-  f6(f, g);
-// CHECK: define void @f7(float{{.*}}, float{{.*}})
-// CHECK: call void @f6(float{{.*}}, float{{.*}})
-}
-
-// PR6911 - incomplete function types
-struct Incomplete;
-void f8_callback(struct Incomplete);
-void f8_user(void (*callback)(struct Incomplete));
-void f8_test() {
-  f8_user(&f8_callback);
-// CHECK: define void @f8_test()
-// CHECK: call void @f8_user({{.*}}* bitcast (void ()* @f8_callback to {{.*}}*))
-// CHECK: declare void @f8_user({{.*}}*)
-// CHECK: declare void @f8_callback()
-}
-
-// PR10204: don't crash
-static void test9_helper(void) {}
-void test9() {
-  (void) test9_helper;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/global-blocks-lines.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/global-blocks-lines.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/global-blocks-lines.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -fblocks -g -emit-llvm %s -o - | FileCheck %s
-// Make sure we do not generate line info for debugging-related frame setup.
-// CHECK: define {{.*}}block_invoke
-// CHECK-NOT: store {{.*}}%struct.__block_descriptor*{{.*}}dbg
-// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align
-// CHECK: ret
-// CHECK: define {{.*}}block_invoke
-// CHECK-NOT: store {{.*}}%struct.__block_descriptor*{{.*}}dbg
-// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align
-// CHECK: ret
-// CHECK: define {{.*}}block_invoke
-// CHECK-NOT: store {{.*}}%struct.__block_descriptor*{{.*}}dbg
-// CHECK: store {{.*}}%struct.__block_descriptor*{{.*}}, align
-// CHECK: ret
-int printf(const char*, ...);
-
-static void* _NSConcreteGlobalBlock;
-
-
-typedef void (^ HelloBlock_t)(const char * name);
-
-  /* Breakpoint for first Block function.  */
-HelloBlock_t helloBlock = ^(const char * name) {
-  printf("Hello there, %s!\n", name);
-};
-
-  /* Breakpoint for second Block function.  */
-static HelloBlock_t s_helloBlock = ^(const char * name) {
-  printf("Hello there, %s!\n", name);
-};
-
-/* Breakpoint for third Block function.  */
-int X = 1234;
-int (^CP)(void) = ^{ X = X+1;  return X; };
-
-int
-main(int argc, char * argv[])
-{
-  helloBlock("world");
-  s_helloBlock("world");
-
-  CP();
-  printf ("X = %d\n", X);
-  return X - 1235;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/global-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/global-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/global-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o %t %s
-
-// RUN: grep '@g0_ext = extern_weak global i32' %t
-extern int g0_ext __attribute__((weak));
-// RUN: grep 'declare extern_weak i32 @g1_ext()' %t
-extern int __attribute__((weak)) g1_ext (void);
-
-// RUN: grep '@g0_common = weak global i32' %t
-int g0_common __attribute__((weak));
-
-// RUN: grep '@g0_def = weak global i32' %t
-int g0_def __attribute__((weak)) = 52;
-// RUN: grep 'define weak i32 @g1_def()' %t
-int __attribute__((weak)) g1_def (void) { return 0; }
-
-// Force _ext references
-void f0() {
-  int a = g0_ext;
-  int b = g1_ext();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/global-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/global-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/global-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -triple i386-linux-gnu %s | FileCheck %s
-
-// This checks that the global won't be marked as common. 
-// (It shouldn't because it's being initialized).
-
-int a;
-int a = 242;
-// CHECK: @a = global i32 242
-
-// This should get normal weak linkage.
-int c __attribute__((weak))= 0;
-// CHECK: @c = weak global i32 0
-
-
-// Since this is marked const, it should get weak_odr linkage, since all
-// definitions have to be the same.
-// CHECK: @d = weak_odr constant i32 0
-const int d __attribute__((weak))= 0;
-
-// PR6168 "too many undefs"
-struct ManyFields {
-  int a;
-  int b;
-  int c;
-  char d;
-  int e;
-  int f;
-};
-
-// CHECK: global %struct.ManyFields { i32 1, i32 2, i32 0, i8 0, i32 0, i32 0 }
-struct ManyFields FewInits = {1, 2};
-
-
-// PR6766
-// CHECK: @l = global %struct.K { [6 x i32] [i32 102, i32 111, i32 111, i32 0, i32 0, i32 0], i32 1 }
-typedef __WCHAR_TYPE__ wchar_t;
-struct K {
-  wchar_t L[6];
-  int M;
-} l =  { { L"foo" }, 1 };
-
-
-// CHECK: @yuv_types = global [4 x [6 x i8]] {{\[}}[6 x i8] c"4:0:0\00", [6 x i8] c"4:2:0\00", [6 x i8] c"4:2:2\00", [6 x i8] c"4:4:4\00"]
-char yuv_types[4][6]= {"4:0:0","4:2:0","4:2:2","4:4:4"};
-
-
-// NOTE: tentative definitions are processed at the end of the translation unit.
-
-// This shouldn't be emitted as common because it has an explicit section.
-// rdar://7119244
-// CHECK: @b = global i32 0, section "foo"
-int b __attribute__((section("foo")));

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/global-with-initialiser.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/global-with-initialiser.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/global-with-initialiser.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-const int globalInt = 1;
-int globalIntWithFloat = 1.5f;
-int globalIntArray[5] = { 1, 2 };
-int globalIntFromSizeOf = sizeof(globalIntArray);
-char globalChar = 'a';
-char globalCharArray[5] = { 'a', 'b' };
-float globalFloat = 1.0f;
-float globalFloatWithInt = 1;
-float globalFloatArray[5] = { 1.0f, 2.0f };
-double globalDouble = 1.0;
-double globalDoubleArray[5] = { 1.0, 2.0 };
-char *globalString = "abc";
-char *globalStringArray[5] = { "123", "abc" };
-long double globalLongDouble = 1;
-long double globalLongDoubleArray[5] = { 1.0, 2.0 };
-
-struct Struct {
-  int member1;
-  float member2;
-  char *member3; 
-};
-
-struct Struct globalStruct = { 1, 2.0f, "foobar"};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/globalinit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/globalinit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/globalinit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-int A[10] = { 1,2,3,4,5 };
-
-
-extern int x[];
-void foo() { x[0] = 1; }
-int x[10];
-void bar() { x[0] = 1; }
-
-
-extern int y[];
-void *g = y;
-
-int latin_ptr2len (char *p);
-int (*mb_ptr2len) (char *p) = latin_ptr2len;
-
-
-char string[8] = "string";   // extend init
-char string2[4] = "string";  // truncate init
-
-char *test(int c) {
- static char buf[10];
- static char *bufptr = buf;
-
- return c ? buf : bufptr;
-}
-
-
-_Bool booltest = 0;
-void booltest2() {
-  static _Bool booltest3 = 4;
-}
-
-// Scalars in braces.
-static int a = { 1 };
-
-// References to enums.
-enum {
-  EnumA, EnumB
-};
-
-int c[] = { EnumA, EnumB };
-
-// Binary operators
-int d[] = { EnumA | EnumB };
-
-// PR1968
-static int array[];
-static int array[4];
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/hidden-visibility.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/hidden-visibility.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/hidden-visibility.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: hidden global
-int X __attribute__ ((__visibility__ ("hidden"))) = 123;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/imaginary.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/imaginary.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/imaginary.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -verify -emit-llvm-only %s
-
-// Just verify that we don't crash until we support _Imaginary.
-double _Imaginary foo; // expected-error {{imaginary types are not supported}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/implicit-arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/implicit-arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/implicit-arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o -
-// RUN: %clang_cc1 %s -emit-llvm -O1 -o -
-// rdar://6518089
-
-static int bar();
-void foo() {
-  int a = bar();
-}
-int bar(unsigned a) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/incomplete-function-type-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/incomplete-function-type-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/incomplete-function-type-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s
-
-// PR14355: don't crash
-// Keep this test in its own file because CodeGenTypes has global state.
-// CHECK: define void @test10_foo({}* %p1.coerce) [[NUW:#[0-9]+]] {
-struct test10_B;
-typedef struct test10_B test10_F3(double);
-void test10_foo(test10_F3 p1);
-struct test10_B test10_b(double);
-void test10_bar() {
-  test10_foo(test10_b);
-}
-struct test10_B {};
-void test10_foo(test10_F3 p1)
-{
-  p1(0.0);
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/incomplete-function-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/incomplete-function-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/incomplete-function-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s
-// CHECK: ModuleID
-// CHECK-NOT: opaque
-// CHECK: define void @f0
-
-enum teste1 test1f(void), (*test1)(void) = test1f;
-struct tests2 test2f(), (*test2)() = test2f;
-struct tests3;
-void test3f(struct tests3), (*test3)(struct tests3) = test3f;
-enum teste1 { TEST1 };
-struct tests2 { int x,y,z,a,b,c,d,e,f,g; };
-struct tests3 { float x; };
-
-void f0() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/indirect-goto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/indirect-goto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/indirect-goto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm -o - %s | grep "ret i32 2520"
-
-static int foo(unsigned i) {
-  void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 };
-  int res = 1;
-
-  goto *addrs[i];
- L5: res *= 11;
- L4: res *= 7;
- L3: res *= 5;
- L2: res *= 3;
- L1: res *= 2; 
-  return res;
-}
-
-static int foo2(unsigned i) {
-  static const void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 };
-  int res = 1;
-  
-  goto *addrs[i];
-L5: res *= 11;
-L4: res *= 7;
-L3: res *= 5;
-L2: res *= 3;
-L1: res *= 2; 
-  return res;
-}
-
-int main() {
-  return foo(3)+foo2(4);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/init-with-member-expr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/init-with-member-expr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/init-with-member-expr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 < %s -emit-llvm
-struct test {
-  int a;
-};
-
-extern struct test t;
-
-int *b=&t.a;
-
-
-// PR2049
-typedef struct mark_header_tag {
- unsigned char mark[7];
-} mark_header_t;
-int is_rar_archive(int fd) {
-        const mark_header_t rar_hdr[2] = {{0x52, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00}, {'U', 'n', 'i', 'q', 'u', 'E', '!'}};
-        foo(rar_hdr);
-
-        return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,134 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-
-void f1() {
-  // Scalars in braces.
-  int a = { 1 };
-}
-
-void f2() {
-  int a[2][2] = { { 1, 2 }, { 3, 4 } };
-  int b[3][3] = { { 1, 2 }, { 3, 4 } };
-  int *c[2] = { &a[1][1], &b[2][2] };
-  int *d[2][2] = { {&a[1][1], &b[2][2]}, {&a[0][0], &b[1][1]} };
-  int *e[3][3] = { {&a[1][1], &b[2][2]}, {&a[0][0], &b[1][1]} };
-  char ext[3][3] = {".Y",".U",".V"};
-}
-
-typedef void (* F)(void);
-extern void foo(void);
-struct S { F f; };
-void f3() {
-  struct S a[1] = { { foo } };
-}
-
-// Constants
-// CHECK: @g3 = constant i32 10
-// CHECK: @f4.g4 = internal constant i32 12
-const int g3 = 10;
-int f4() {
-  static const int g4 = 12;
-  return g4;
-}
-
-// PR6537
-typedef union vec3 {
-  struct { double x, y, z; };
-  double component[3];
-} vec3;
-vec3 f5(vec3 value) {
-  return (vec3) {{
-    .x = value.x
-  }};
-}
-
-// rdar://problem/8154689
-void f6() {
-  int x;
-  long ids[] = { (long) &x };  
-}
-
-
-
-
-// CHECK: @test7 = global{{.*}}{ i32 0, [4 x i8] c"bar\00" }
-// PR8217
-struct a7 {
-  int  b;
-  char v[];
-};
-
-struct a7 test7 = { .b = 0, .v = "bar" };
-
-
-// PR279 comment #3
-char test8(int X) {
-  char str[100000] = "abc"; // tail should be memset.
-  return str[X];
-// CHECK: @test8(
-// CHECK: call void @llvm.memset
-// CHECK: store i8 97
-// CHECK: store i8 98
-// CHECK: store i8 99
-// CHECK-NOT: getelementptr
-// CHECK: load
-}
-
-void bar(void*);
-
-// PR279
-int test9(int X) {
-  int Arr[100] = { X };     // Should use memset
-  bar(Arr);
-// CHECK: @test9
-// CHECK: call void @llvm.memset
-// CHECK-NOT: store i32 0
-// CHECK: call void @bar
-}
-
-struct a {
-  int a, b, c, d, e, f, g, h, i, j, k, *p;
-};
-
-struct b {
-  struct a a,b,c,d,e,f,g;
-};
-
-int test10(int X) {
-  struct b S = { .a.a = X, .d.e = X, .f.e = 0, .f.f = 0, .f.p = 0 };
-  bar(&S);
-
-  // CHECK: @test10
-  // CHECK: call void @llvm.memset
-  // CHECK-NOT: store i32 0
-  // CHECK: call void @bar
-}
-
-
-// PR9257
-struct test11S {
-  int A[10];
-};
-void test11(struct test11S *P) {
-  *P = (struct test11S) { .A = { [0 ... 3] = 4 } };
-  // CHECK: @test11
-  // CHECK: store i32 4
-  // CHECK: store i32 4
-  // CHECK: store i32 4
-  // CHECK: store i32 4
-  // CHECK: ret void
-}
-
-
-// Verify that we can convert a recursive struct with a memory that returns
-// an instance of the struct we're converting.
-struct test12 {
-  struct test12 (*p)(void);
-} test12g;
-
-
-void test13(int x) {
-  struct X { int a; int b : 10; int c; };
-  struct X y = {.c = x};
-  // CHECK: @test13
-  // CHECK: and i16 {{.*}}, -1024
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/inline-asm-mrv.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/inline-asm-mrv.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/inline-asm-mrv.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -O | not grep alloca
-// PR2094
-
-int sad16_sse2(void *v, unsigned char *blk2, unsigned char *blk1,
-               int stride, int h) {
-    int ret;
-    asm volatile( "%0 %1 %2 %3"
-        : "+r" (h), "+r" (blk1), "+r" (blk2)
-        : "r" ((long)stride));
-    asm volatile("set %0 %1" : "=r"(ret) : "r"(blk1));
-    return ret;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/inline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/inline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/inline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-// RUN: echo "GNU89 tests:"
-// RUN: %clang %s -target i386-unknown-unknown -O1 -emit-llvm -S -o - -std=gnu89 | FileCheck %s --check-prefix=CHECK1
-// CHECK1: define i32 @foo()
-// CHECK1: define i32 @bar()
-// CHECK1: define void @unreferenced1()
-// CHECK1-NOT: unreferenced2
-// CHECK1: define void @gnu_inline()
-// CHECK1: define i32 @test1
-// CHECK1: define i32 @test2
-// CHECK1: define void @test3()
-// CHECK1: define available_externally i32 @test4
-// CHECK1: define available_externally i32 @test5
-// CHECK1: define i32 @test6
-// CHECK1: define void @test7
-// CHECK1: define i{{..}} @strlcpy
-// CHECK1-NOT: test9
-// CHECK1: define void @testA
-// CHECK1: define void @testB
-// CHECK1: define void @testC
-// CHECK1: define available_externally void @gnu_ei_inline()
-// CHECK1: define available_externally i32 @ei()
-
-// RUN: echo "C99 tests:"
-// RUN: %clang %s -target i386-unknown-unknown -O1 -emit-llvm -S -o - -std=gnu99 | FileCheck %s --check-prefix=CHECK2
-// CHECK2: define i32 @ei()
-// CHECK2: define i32 @bar()
-// CHECK2-NOT: unreferenced1
-// CHECK2: define void @unreferenced2()
-// CHECK2: define void @gnu_inline()
-// CHECK2: define i32 @test1
-// CHECK2: define i32 @test2
-// CHECK2: define void @test3
-// CHECK2: define available_externally i32 @test4
-// CHECK2: define available_externally i32 @test5
-// CHECK2: define i32 @test6
-// CHECK2: define void @test7
-// CHECK2: define available_externally i{{..}} @strlcpy
-// CHECK2: define void @test9
-// CHECK2: define void @testA
-// CHECK2: define void @testB
-// CHECK2: define void @testC
-// CHECK2: define available_externally void @gnu_ei_inline()
-// CHECK2: define available_externally i32 @foo()
-
-// RUN: echo "C++ tests:"
-// RUN: %clang -x c++ %s -target i386-unknown-unknown -O1 -emit-llvm -S -o - -std=c++98 | FileCheck %s --check-prefix=CHECK3
-// CHECK3: define i32 @_Z3barv()
-// CHECK3: define linkonce_odr i32 @_Z3foov()
-// CHECK3-NOT: unreferenced
-// CHECK3: define void @_Z10gnu_inlinev()
-// CHECK3: define available_externally void @_Z13gnu_ei_inlinev()
-// CHECK3: define linkonce_odr i32 @_Z2eiv()
-
-extern __inline int ei() { return 123; }
-
-__inline int foo() {
-  return ei();
-}
-
-int bar() { return foo(); }
-
-
-__inline void unreferenced1() {}
-extern __inline void unreferenced2() {}
-
-__inline __attribute((__gnu_inline__)) void gnu_inline() {}
-
-// PR3988
-extern __inline __attribute__((gnu_inline)) void gnu_ei_inline() {}
-void (*P)() = gnu_ei_inline;
-
-// <rdar://problem/6818429>
-int test1();
-__inline int test1() { return 4; }
-__inline int test2() { return 5; }
-__inline int test2();
-int test2();
-
-void test_test1() { test1(); }
-void test_test2() { test2(); }
-
-// PR3989
-extern __inline void test3() __attribute__((gnu_inline));
-__inline void __attribute__((gnu_inline)) test3() {}
-
-extern int test4(void);
-extern __inline __attribute__ ((__gnu_inline__)) int test4(void)
-{
-  return 0;
-}
-
-void test_test4() { test4(); }
-
-extern __inline int test5(void)  __attribute__ ((__gnu_inline__));
-extern __inline int __attribute__ ((__gnu_inline__)) test5(void)
-{
-  return 0;
-}
-
-void test_test5() { test5(); }
-
-// PR10233
-
-__inline int test6() { return 0; }
-extern int test6();
-
-
-// No PR#, but this once crashed clang in C99 mode due to buggy extern inline
-// redeclaration detection.
-void test7() { }
-void test7();
-
-// PR11062; the fact that the function is named strlcpy matters here.
-inline __typeof(sizeof(int)) strlcpy(char *dest, const char *src, __typeof(sizeof(int)) size) { return 3; }
-void test8() { strlcpy(0,0,0); }
-
-// PR10657; the test crashed in C99 mode
-extern inline void test9() { }
-void test9();
-
-inline void testA() {}
-void testA();
-
-void testB();
-inline void testB() {}
-extern void testB();
-
-extern inline void testC() {}
-inline void testC();

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/inline2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/inline2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/inline2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -O1 -std=gnu89 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix GNU89 %s
-// RUN: %clang_cc1 -O1 -std=c99 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix C99 %s
-
-// CHECK-GNU89: define i32 @f0()
-// CHECK-C99: define i32 @f0()
-int f0(void);
-int f0(void) { return 0; }
-
-// CHECK-GNU89: define i32 @f1()
-// CHECK-C99: define i32 @f1()
-inline int f1(void);
-int f1(void) { return 0; }
-
-// CHECK-GNU89: define i32 @f2()
-// CHECK-C99: define i32 @f2()
-int f2(void);
-inline int f2(void) { return 0; }
-
-// CHECK-GNU89: define i32 @f3()
-// CHECK-C99: define i32 @f3()
-extern inline int f3(void);
-int f3(void) { return 0; }
-
-// CHECK-GNU89: define i32 @f5()
-// CHECK-C99: define i32 @f5()
-extern inline int f5(void);
-inline int f5(void) { return 0; }
-
-// CHECK-GNU89: define i32 @f6()
-// CHECK-C99: define i32 @f6()
-inline int f6(void);
-extern inline int f6(void) { return 0; }
-
-// CHECK-GNU89: define i32 @f7()
-// CHECK-C99: define i32 @f7()
-extern inline int f7(void);
-extern int f7(void) { return 0; }
-
-// CHECK-GNU89: define i32 @fA()
-inline int fA(void) { return 0; }
-
-// CHECK-GNU89: define available_externally i32 @f4()
-// CHECK-C99: define i32 @f4()
-int f4(void);
-extern inline int f4(void) { return 0; }
-
-// CHECK-GNU89: define available_externally i32 @f8()
-// CHECK-C99: define i32 @f8()
-extern int f8(void);
-extern inline int f8(void) { return 0; }
-
-// CHECK-GNU89: define available_externally i32 @f9()
-// CHECK-C99: define i32 @f9()
-extern inline int f9(void);
-extern inline int f9(void) { return 0; }
-
-// CHECK-C99: define available_externally i32 @fA()
-
-int test_all() { 
-  return f0() + f1() + f2() + f3() + f4() + f5() + f6() + f7() + f8() + f9() 
-    + fA();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/instrument-functions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/instrument-functions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/instrument-functions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -S -emit-llvm -o - %s -finstrument-functions | FileCheck %s
-
-// CHECK: @test1
-int test1(int x) {
-// CHECK: __cyg_profile_func_enter
-// CHECK: __cyg_profile_func_exit
-// CHECK: ret
-  return x;
-}
-
-// CHECK: @test2
-int test2(int) __attribute__((no_instrument_function));
-int test2(int x) {
-// CHECK-NOT: __cyg_profile_func_enter
-// CHECK-NOT: __cyg_profile_func_exit
-// CHECK: ret
-  return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/int-to-pointer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/int-to-pointer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/int-to-pointer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-void *test(int i)
-{
-  return (void *)i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/integer-overflow.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/integer-overflow.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/integer-overflow.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s --check-prefix=DEFAULT
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - -fwrapv | FileCheck %s --check-prefix=WRAPV
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - -ftrapv | FileCheck %s --check-prefix=TRAPV
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - -fsanitize=signed-integer-overflow | FileCheck %s --check-prefix=CATCH_UB
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - -ftrapv -ftrapv-handler foo | FileCheck %s --check-prefix=TRAPV_HANDLER
-
-
-// Tests for signed integer overflow stuff.
-// rdar://7432000 rdar://7221421
-void test1() {
-  // DEFAULT: define void @test1
-  // WRAPV: define void @test1
-  // TRAPV: define void @test1
-  extern volatile int f11G, a, b;
-  
-  // DEFAULT: add nsw i32
-  // WRAPV: add i32
-  // TRAPV: llvm.sadd.with.overflow.i32
-  // CATCH_UB: llvm.sadd.with.overflow.i32
-  // TRAPV_HANDLER: foo(
-  f11G = a + b;
-  
-  // DEFAULT: sub nsw i32
-  // WRAPV: sub i32
-  // TRAPV: llvm.ssub.with.overflow.i32
-  // CATCH_UB: llvm.ssub.with.overflow.i32
-  // TRAPV_HANDLER: foo(
-  f11G = a - b;
-  
-  // DEFAULT: mul nsw i32
-  // WRAPV: mul i32
-  // TRAPV: llvm.smul.with.overflow.i32
-  // CATCH_UB: llvm.smul.with.overflow.i32
-  // TRAPV_HANDLER: foo(
-  f11G = a * b;
-
-  // DEFAULT: sub nsw i32 0, 
-  // WRAPV: sub i32 0, 
-  // TRAPV: llvm.ssub.with.overflow.i32(i32 0
-  // CATCH_UB: llvm.ssub.with.overflow.i32(i32 0
-  // TRAPV_HANDLER: foo(
-  f11G = -a;
-  
-  // PR7426 - Overflow checking for increments.
-  
-  // DEFAULT: add nsw i32 {{.*}}, 1
-  // WRAPV: add i32 {{.*}}, 1
-  // TRAPV: llvm.sadd.with.overflow.i32({{.*}}, i32 1)
-  // CATCH_UB: llvm.sadd.with.overflow.i32({{.*}}, i32 1)
-  // TRAPV_HANDLER: foo(
-  ++a;
-  
-  // DEFAULT: add nsw i32 {{.*}}, -1
-  // WRAPV: add i32 {{.*}}, -1
-  // TRAPV: llvm.sadd.with.overflow.i32({{.*}}, i32 -1)
-  // CATCH_UB: llvm.sadd.with.overflow.i32({{.*}}, i32 -1)
-  // TRAPV_HANDLER: foo(
-  --a;
-  
-  // -fwrapv should turn off inbounds for GEP's, PR9256
-  extern int* P;
-  ++P;
-  // DEFAULT: getelementptr inbounds i32*
-  // WRAPV: getelementptr i32*
-  // TRAPV: getelementptr inbounds i32*
-  // CATCH_UB: getelementptr inbounds i32*
-
-  // PR9350: char increment never overflows.
-  extern volatile signed char PR9350;
-  // DEFAULT: add i8 {{.*}}, 1
-  // WRAPV: add i8 {{.*}}, 1
-  // TRAPV: add i8 {{.*}}, 1
-  // CATCH_UB: add i8 {{.*}}, 1
-  ++PR9350;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/intel_ocl_bicc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/intel_ocl_bicc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/intel_ocl_bicc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-void __attribute__((intel_ocl_bicc)) f1(void);
-
-void f2(void) {
-  f1();
-// CHECK: call intel_ocl_bicc void @f1()
-}
-
-// CHECK: declare intel_ocl_bicc void @f1()

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/kr-func-promote.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/kr-func-promote.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/kr-func-promote.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | grep "i32 @a(i32)"
-
-int a();
-int a(x) short x; {return x;}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/kr-style-block.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/kr-style-block.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/kr-style-block.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t -fblocks
-
-void foo (void(^)());
-
-int main()
-{
-foo(
-  ^() { }
-);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/le32-arguments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/le32-arguments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/le32-arguments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -triple le32-unknown-nacl %s -emit-llvm -o - | FileCheck %s
-
-// Basic argument/attribute tests for le32/PNaCl
-
-// CHECK: define void @f0(i32 %i, i32 %j, double %k)
-void f0(int i, long j, double k) {}
-
-typedef struct {
-  int aa;
-  int bb;
-} s1;
-// Structs should be passed byval and not split up
-// CHECK: define void @f1(%struct.s1* byval %i)
-void f1(s1 i) {}
-
-typedef struct {
-  int cc;
-} s2;
-// Structs should be returned sret and not simplified by the frontend
-// CHECK: define void @f2(%struct.s2* noalias sret %agg.result)
-s2 f2() {
-  s2 foo;
-  return foo;
-}
-
-// CHECK: define void @f3(i64 %i)
-void f3(long long i) {}
-
-// i8/i16 should be signext, i32 and higher should not
-// CHECK: define void @f4(i8 signext %a, i16 signext %b)
-void f4(char a, short b) {}
-
-// CHECK: define void @f5(i8 zeroext %a, i16 zeroext %b)
-void f5(unsigned char a, unsigned short b) {}
-
-
-enum my_enum {
-  ENUM1,
-  ENUM2,
-  ENUM3,
-};
-// Enums should be treated as the underlying i32
-// CHECK: define void @f6(i32 %a)
-void f6(enum my_enum a) {}
-
-union simple_union {
-  int a;
-  char b;
-};
-// Unions should be passed as byval structs
-// CHECK: define void @f7(%union.simple_union* byval %s)
-void f7(union simple_union s) {}
-
-typedef struct {
-  int b4 : 4;
-  int b3 : 3;
-  int b8 : 8;
-} bitfield1;
-// Bitfields should be passed as byval structs
-// CHECK: define void @f8(%struct.bitfield1* byval %bf1)
-void f8(bitfield1 bf1) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/le32-regparm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/le32-regparm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/le32-regparm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -triple le32-unknown-nacl %s -fsyntax-only -verify
-
-void __attribute__((regparm(2))) fc_f1(int i, int j, int k) {} // expected-error{{'regparm' is not valid on this platform}}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/libcall-declarations.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/libcall-declarations.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/libcall-declarations.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,195 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -S -o - -emit-llvm %s | FileCheck %s -check-prefix=CHECK-NOERRNO
-// RUN: %clang_cc1 -triple x86_64-linux-gnu -S -o - -emit-llvm -fmath-errno %s | FileCheck %s -check-prefix=CHECK-ERRNO
-
-// Prototypes.
-double acos(double);
-long double acosl(long double);
-float acosf(float);
-double asin(double);
-long double asinl(long double);
-float asinf(float);
-double atan(double);
-long double atanl(long double);
-float atanf(float);
-double atan2(double, double);
-long double atan2l(long double, long double);
-float atan2f(float, float);
-double ceil(double);
-long double ceill(long double);
-float ceilf(float);
-double copysign(double, double);
-long double copysignl(long double, long double);
-float copysignf(float, float);
-double cos(double);
-long double cosl(long double);
-float cosf(float);
-double exp(double);
-long double expl(long double);
-float expf(float);
-double exp2(double);
-long double exp2l(long double);
-float exp2f(float);
-double fabs(double);
-long double fabsl(long double);
-float fabsf(float);
-double floor(double);
-long double floorl(long double);
-float floorf(float);
-double fma(double, double, double);
-long double fmal(long double, long double, long double);
-float fmaf(float, float, float);
-double fmax(double, double);
-long double fmaxl(long double, long double);
-float fmaxf(float, float);
-double fmin(double, double);
-long double fminl(long double, long double);
-float fminf(float, float);
-double log(double);
-long double logl(long double);
-float logf(float);
-double log2(double);
-long double log2l(long double);
-float log2f(float);
-double nearbyint(double);
-long double nearbyintl(long double);
-float nearbyintf(float);
-double pow(double, double);
-long double powl(long double, long double);
-float powf(float, float);
-double rint(double);
-long double rintl(long double);
-float rintf(float);
-double round(double);
-long double roundl(long double);
-float roundf(float);
-double sin(double);
-long double sinl(long double);
-float sinf(float);
-double sqrt(double);
-long double sqrtl(long double);
-float sqrtf(float);
-double tan(double);
-long double tanl(long double);
-float tanf(float);
-double trunc(double);
-long double truncl(long double);
-float truncf(float);
-
-// Force emission of the declare statements.
-void *use[] = {
-  acos, acosl, acosf, asin, asinl, asinf, atan, atanl, atanf, atan2, atan2l,
-  atan2f, ceil, ceill, ceilf, copysign, copysignl, copysignf, cos, cosl, cosf,
-  exp, expl, expf, exp2, exp2l, exp2f, fabs, fabsl, fabsf, floor, floorl,
-  floorf, fma, fmal, fmaf, fmax, fmaxl, fmaxf, fmin, fminl, fminf, log, logl,
-  logf, log2, log2l, log2f, nearbyint, nearbyintl, nearbyintf, pow, powl, powf,
-  rint, rintl, rintf, round, roundl, roundf, sin, sinl, sinf, sqrt, sqrtl,
-  sqrtf, tan, tanl, tanf, trunc, truncl, truncf
-};
-
-// CHECK-NOERRNO: declare double @acos(double) [[NUW:#[0-9]+]]
-// CHECK-NOERRNO: declare x86_fp80 @acosl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @acosf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @asin(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @asinl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @asinf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @atan(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @atanl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @atanf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @atan2(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @atan2f(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @ceil(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @ceilf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @copysign(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @copysignf(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @cos(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @cosl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @cosf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @exp(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @expl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @expf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @exp2(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @exp2l(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @exp2f(float) [[NUW]]
-// CHECK-NOERRNO: declare double @fabs(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @fabsf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @floor(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @floorl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @floorf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @fma(double, double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @fmal(x86_fp80, x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @fmaf(float, float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @fmax(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @fmaxf(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @fmin(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @fminf(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @log(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @logl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @logf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @log2(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @log2l(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @log2f(float) [[NUW]]
-// CHECK-NOERRNO: declare double @nearbyint(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @nearbyintf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @pow(double, double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @powl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @powf(float, float) [[NUW]]
-// CHECK-NOERRNO: declare double @rint(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @rintl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @rintf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @round(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @roundl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @roundf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @sin(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @sinl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @sinf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @sqrt(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @sqrtl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @sqrtf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @tan(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @tanl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @tanf(float) [[NUW]]
-// CHECK-NOERRNO: declare double @trunc(double) [[NUW]]
-// CHECK-NOERRNO: declare x86_fp80 @truncl(x86_fp80) [[NUW]]
-// CHECK-NOERRNO: declare float @truncf(float) [[NUW]]
-
-// CHECK-ERRNO: declare double @ceil(double) [[NUW:#[0-9]+]]
-// CHECK-ERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @ceilf(float) [[NUW]]
-// CHECK-ERRNO: declare double @copysign(double, double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @copysignf(float, float) [[NUW]]
-// CHECK-ERRNO: declare double @fabs(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @fabsf(float) [[NUW]]
-// CHECK-ERRNO: declare double @floor(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @floorl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @floorf(float) [[NUW]]
-// CHECK-ERRNO: declare double @fmax(double, double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @fmaxf(float, float) [[NUW]]
-// CHECK-ERRNO: declare double @fmin(double, double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @fminf(float, float) [[NUW]]
-// CHECK-ERRNO: declare double @nearbyint(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @nearbyintf(float) [[NUW]]
-// CHECK-ERRNO: declare double @rint(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @rintl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @rintf(float) [[NUW]]
-// CHECK-ERRNO: declare double @round(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @roundl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @roundf(float) [[NUW]]
-// CHECK-ERRNO: declare double @trunc(double) [[NUW]]
-// CHECK-ERRNO: declare x86_fp80 @truncl(x86_fp80) [[NUW]]
-// CHECK-ERRNO: declare float @truncf(float) [[NUW]]
-
-// CHECK-NOERRNO: attributes [[NUW]] = { nounwind readnone{{.*}} }
-
-// CHECK-ERRNO: attributes [[NUW]] = { nounwind readnone{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-complex.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-complex.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-complex.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fno-builtin -emit-llvm -o - %s -triple i386-unknown-unknown | FileCheck -check-prefix YES %s
-// RUN: %clang_cc1 -emit-llvm -o - %s -triple i386-unknown-unknown | FileCheck -check-prefix NO %s
-
-extern float crealf(float _Complex);
-extern double creal(double _Complex);
-extern long double creall(long double _Complex);
-
-extern float cimagf(float _Complex);
-extern double cimag(double _Complex);
-extern long double cimagl(long double _Complex);
-
-double test_creal(double _Complex z) {
-  return creal(z);
-  // CHECK-NO-NOT: call double @creal
-  // CHECK-YES: call double @creal
-}
-
-long double test_creall(double _Complex z) {
-  return creall(z);
-  // CHECK-NO-NOT: call x86_fp80 @creall
-  // CHECK-YES: call x86_fp80 @creall
-}
-
-float test_crealf(double _Complex z) {
-  return crealf(z);
-  // CHECK-NO-NOT: call float @crealf
-  // CHECK-YES: call float @crealf
-}
-
-double test_cimag(double _Complex z) {
-  return cimag(z);
-  // CHECK-NO-NOT: call double @cimag
-  // CHECK-YES: call double @cimag
-}
-
-long double test_cimagl(double _Complex z) {
-  return cimagl(z);
-  // CHECK-NO-NOT: call x86_fp80 @cimagl
-  // CHECK-YES: call x86_fp80 @cimagl
-}
-
-float test_cimagf(double _Complex z) {
-  return cimagf(z);
-  // CHECK-NO-NOT: call float @cimagf
-  // CHECK-YES: call float @cimagf
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-d.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-d.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-d.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// llvm-gcc -O1+ should run simplify libcalls, O0 shouldn't
-// and -fno-builtins shouldn't.
-// -fno-math-errno should emit an llvm intrinsic, -fmath-errno should not.
-// RUN: %clang_cc1 %s -emit-llvm -fno-math-errno -O0 -o - | grep {call.*exp2\\.f64}
-// RUN: %clang_cc1 %s -emit-llvm -fmath-errno -O0 -o - | grep {call.*exp2}
-// RUN: %clang_cc1 %s -emit-llvm -O1 -o - | grep {call.*ldexp}
-// RUN: %clang_cc1 %s -emit-llvm -O3 -fno-builtin -o - | grep {call.*exp2}
-
-// clang doesn't support this yet.
-// XFAIL: *
-
-double exp2(double);
-
-double t4(unsigned char x) {
-  return exp2(x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-fno-builtin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-fno-builtin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-fno-builtin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: %clang_cc1 -S -O3 -fno-builtin -o - %s | FileCheck %s
-// rdar://10551066
-
-typedef __SIZE_TYPE__ size_t;
-
-double ceil(double x);
-double copysign(double,double);
-double cos(double x);
-double fabs(double x);
-double floor(double x);
-char *strcat(char *s1, const char *s2);
-char *strncat(char *s1, const char *s2, size_t n);
-char *strchr(const char *s, int c);
-char *strrchr(const char *s, int c);
-int strcmp(const char *s1, const char *s2);
-int strncmp(const char *s1, const char *s2, size_t n);
-char *strcpy(char *s1, const char *s2);
-char *stpcpy(char *s1, const char *s2);
-char *strncpy(char *s1, const char *s2, size_t n);
-size_t strlen(const char *s);
-char *strpbrk(const char *s1, const char *s2);
-size_t strspn(const char *s1, const char *s2);
-double strtod(const char *nptr, char **endptr);
-float strtof(const char *nptr, char **endptr);
-long double strtold(const char *nptr, char **endptr);
-long int strtol(const char *nptr, char **endptr, int base);
-long long int strtoll(const char *nptr, char **endptr, int base);
-unsigned long int strtoul(const char *nptr, char **endptr, int base);
-unsigned long long int strtoull(const char *nptr, char **endptr, int base);
-
-double t1(double x) { return ceil(x); }
-// CHECK: t1
-// CHECK: ceil
-
-double t2(double x, double y) { return copysign(x,y); }
-// CHECK: t2
-// CHECK: copysign
-
-double t3(double x) { return cos(x); }
-// CHECK: t3
-// CHECK: cos
-
-double t4(double x) { return fabs(x); }
-// CHECK: t4
-// CHECK: fabs
-
-double t5(double x) { return floor(x); }
-// CHECK: t5
-// CHECK: floor
-
-char *t6(char *x) { return strcat(x, ""); }
-// CHECK: t6
-// CHECK: strcat
-
-char *t7(char *x) { return strncat(x, "", 1); }
-// CHECK: t7
-// CHECK: strncat
-
-char *t8(void) { return strchr("hello, world", 'w'); }
-// CHECK: t8
-// CHECK: strchr
-
-char *t9(void) { return strrchr("hello, world", 'w'); }
-// CHECK: t9
-// CHECK: strrchr
-
-int t10(void) { return strcmp("foo", "bar"); }
-// CHECK: t10
-// CHECK: strcmp
-
-int t11(void) { return strncmp("foo", "bar", 3); }
-// CHECK: t11
-// CHECK: strncmp
-
-char *t12(char *x) { return strcpy(x, "foo"); }
-// CHECK: t12
-// CHECK: strcpy
-
-char *t13(char *x) { return stpcpy(x, "foo"); }
-// CHECK: t13
-// CHECK: stpcpy
-
-char *t14(char *x) { return strncpy(x, "foo", 3); }
-// CHECK: t14
-// CHECK: strncpy
-
-size_t t15(void) { return strlen("foo"); }
-// CHECK: t15
-// CHECK: strlen
-
-char *t16(char *x) { return strpbrk(x, ""); }
-// CHECK: t16
-// CHECK: strpbrk
-
-size_t t17(char *x) { return strspn(x, ""); }
-// CHECK: t17
-// CHECK: strspn
-
-double t18(char **x) { return strtod("123.4", x); }
-// CHECK: t18
-// CHECK: strtod
-
-float t19(char **x) { return strtof("123.4", x); }
-// CHECK: t19
-// CHECK: strtof
-
-long double t20(char **x) { return strtold("123.4", x); }
-// CHECK: t20
-// CHECK: strtold
-
-long int t21(char **x) { return strtol("1234", x, 10); }
-// CHECK: t21
-// CHECK: strtol
-
-long int t22(char **x) { return strtoll("1234", x, 10); }
-// CHECK: t22
-// CHECK: strtoll
-
-long int t23(char **x) { return strtoul("1234", x, 10); }
-// CHECK: t23
-// CHECK: strtoul
-
-long int t24(char **x) { return strtoull("1234", x, 10); }
-// CHECK: t24
-// CHECK: strtoull

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-ld.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-ld.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls-ld.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// llvm-gcc -O1+ should run simplify libcalls, O0 shouldn't
-// and -fno-builtins shouldn't.
-// -fno-math-errno should emit an llvm intrinsic, -fmath-errno should not.
-// RUN: %clang_cc1 %s -emit-llvm -fno-math-errno -O0 -o - | grep {call.*exp2\\..*f}
-// RUN: %clang_cc1 %s -emit-llvm -fmath-errno -O0 -o - | grep {call.*exp2l}
-// RUN: %clang_cc1 %s -emit-llvm -O1 -o - | grep {call.*ldexp}
-// RUN: %clang_cc1 %s -emit-llvm -O3 -fno-builtin -o - | grep {call.*exp2l}
-
-// clang doesn't support this yet.
-// XFAIL: *
-
-// If this fails for you because your target doesn't support long double,
-// please xfail the test.
-
-long double exp2l(long double);
-
-long double t4(unsigned char x) {
-  return exp2l(x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/libcalls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: %clang_cc1 -fmath-errno -emit-llvm -o - %s -triple i386-unknown-unknown | FileCheck -check-prefix YES %s
-// RUN: %clang_cc1 -emit-llvm -o - %s -triple i386-unknown-unknown | FileCheck -check-prefix NO %s
-
-// CHECK-YES: define void @test_sqrt
-// CHECK-NO: define void @test_sqrt
-void test_sqrt(float a0, double a1, long double a2) {
-  // Following llvm-gcc's lead, we never emit these as intrinsics;
-  // no-math-errno isn't good enough.  We could probably use intrinsics
-  // with appropriate guards if it proves worthwhile.
-
-  // CHECK-YES: call float @sqrtf
-  // CHECK-NO: call float @sqrtf
-  float l0 = sqrtf(a0);
-
-  // CHECK-YES: call double @sqrt
-  // CHECK-NO: call double @sqrt
-  double l1 = sqrt(a1);
-
-  // CHECK-YES: call x86_fp80 @sqrtl
-  // CHECK-NO: call x86_fp80 @sqrtl
-  long double l2 = sqrtl(a2);
-}
-
-// CHECK-YES: declare float @sqrtf(float)
-// CHECK-YES: declare double @sqrt(double)
-// CHECK-YES: declare x86_fp80 @sqrtl(x86_fp80)
-// CHECK-NO: declare float @sqrtf(float) [[NUW_RN:#[0-9]+]]
-// CHECK-NO: declare double @sqrt(double) [[NUW_RN]]
-// CHECK-NO: declare x86_fp80 @sqrtl(x86_fp80) [[NUW_RN]]
-
-// CHECK-YES: define void @test_pow
-// CHECK-NO: define void @test_pow
-void test_pow(float a0, double a1, long double a2) {
-  // CHECK-YES: call float @powf
-  // CHECK-NO: call float @llvm.pow.f32
-  float l0 = powf(a0, a0);
-
-  // CHECK-YES: call double @pow
-  // CHECK-NO: call double @llvm.pow.f64
-  double l1 = pow(a1, a1);
-
-  // CHECK-YES: call x86_fp80 @powl
-  // CHECK-NO: call x86_fp80 @llvm.pow.f80
-  long double l2 = powl(a2, a2);
-}
-
-// CHECK-YES: declare float @powf(float, float)
-// CHECK-YES: declare double @pow(double, double)
-// CHECK-YES: declare x86_fp80 @powl(x86_fp80, x86_fp80)
-// CHECK-NO: declare float @llvm.pow.f32(float, float) [[NUW_RO:#[0-9]+]]
-// CHECK-NO: declare double @llvm.pow.f64(double, double) [[NUW_RO]]
-// CHECK-NO: declare x86_fp80 @llvm.pow.f80(x86_fp80, x86_fp80) [[NUW_RO]]
-
-// CHECK-YES: define void @test_fma
-// CHECK-NO: define void @test_fma
-void test_fma(float a0, double a1, long double a2) {
-    // CHECK-YES: call float @llvm.fma.f32
-    // CHECK-NO: call float @llvm.fma.f32
-    float l0 = fmaf(a0, a0, a0);
-
-    // CHECK-YES: call double @llvm.fma.f64
-    // CHECK-NO: call double @llvm.fma.f64
-    double l1 = fma(a1, a1, a1);
-
-    // CHECK-YES: call x86_fp80 @llvm.fma.f80
-    // CHECK-NO: call x86_fp80 @llvm.fma.f80
-    long double l2 = fmal(a2, a2, a2);
-}
-
-// CHECK-YES: declare float @llvm.fma.f32(float, float, float) [[NUW_RN:#[0-9]+]]
-// CHECK-YES: declare double @llvm.fma.f64(double, double, double) [[NUW_RN]]
-// CHECK-YES: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[NUW_RN]]
-// CHECK-NO: declare float @llvm.fma.f32(float, float, float) [[NUW_RN2:#[0-9]+]]
-// CHECK-NO: declare double @llvm.fma.f64(double, double, double) [[NUW_RN2]]
-// CHECK-NO: declare x86_fp80 @llvm.fma.f80(x86_fp80, x86_fp80, x86_fp80) [[NUW_RN2]]
-
-// Just checking to make sure these library functions are marked readnone
-void test_builtins(double d, float f, long double ld) {
-// CHEC-NO: @test_builtins
-// CHEC-YES: @test_builtins
-  double atan_ = atan(d);
-  long double atanl_ = atanl(ld);
-  float atanf_ = atanf(f);
-// CHECK-NO: declare double @atan(double) [[NUW_RN]]
-// CHECK-NO: declare x86_fp80 @atanl(x86_fp80) [[NUW_RN]]
-// CHECK-NO: declare float @atanf(float) [[NUW_RN]]
-// CHECK-YES-NOT: declare double @atan(double) [[NUW_RN]]
-// CHECK-YES-NOT: declare x86_fp80 @atanl(x86_fp80) [[NUW_RN]]
-// CHECK-YES-NOT: declare float @atanf(float) [[NUW_RN]]
-
-  double atan2_ = atan2(d, 2);
-  long double atan2l_ = atan2l(ld, ld);
-  float atan2f_ = atan2f(f, f);
-// CHECK-NO: declare double @atan2(double, double) [[NUW_RN]]
-// CHECK-NO: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NUW_RN]]
-// CHECK-NO: declare float @atan2f(float, float) [[NUW_RN]]
-// CHECK-YES-NOT: declare double @atan2(double, double) [[NUW_RN]]
-// CHECK-YES-NOT: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NUW_RN]]
-// CHECK-YES-NOT: declare float @atan2f(float, float) [[NUW_RN]]
-
-  double exp_ = exp(d);
-  long double expl_ = expl(ld);
-  float expf_ = expf(f);
-// CHECK-NO: declare double @exp(double) [[NUW_RN]]
-// CHECK-NO: declare x86_fp80 @expl(x86_fp80) [[NUW_RN]]
-// CHECK-NO: declare float @expf(float) [[NUW_RN]]
-// CHECK-YES-NOT: declare double @exp(double) [[NUW_RN]]
-// CHECK-YES-NOT: declare x86_fp80 @expl(x86_fp80) [[NUW_RN]]
-// CHECK-YES-NOT: declare float @expf(float) [[NUW_RN]]
-
-  double log_ = log(d);
-  long double logl_ = logl(ld);
-  float logf_ = logf(f);
-// CHECK-NO: declare double @log(double) [[NUW_RN]]
-// CHECK-NO: declare x86_fp80 @logl(x86_fp80) [[NUW_RN]]
-// CHECK-NO: declare float @logf(float) [[NUW_RN]]
-// CHECK-YES-NOT: declare double @log(double) [[NUW_RN]]
-// CHECK-YES-NOT: declare x86_fp80 @logl(x86_fp80) [[NUW_RN]]
-// CHECK-YES-NOT: declare float @logf(float) [[NUW_RN]]
-}
-
-// CHECK-YES: attributes [[NUW_RN]] = { nounwind readnone }
-
-// CHECK-NO: attributes [[NUW_RN]] = { nounwind readnone{{.*}} }
-// CHECK-NO: attributes [[NUW_RO]] = { nounwind readonly }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/lifetime.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/lifetime.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/lifetime.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang -S -emit-llvm -o - -O0 %s | FileCheck %s -check-prefix=O0
-// RUN: %clang -S -emit-llvm -o - -O1 %s | FileCheck %s -check-prefix=O1
-// RUN: %clang -S -emit-llvm -o - -O2 %s | FileCheck %s -check-prefix=O2
-// RUN: %clang -S -emit-llvm -o - -O3 %s | FileCheck %s -check-prefix=O3
-
-extern void use(char *a);
-
-__attribute__((always_inline)) void helper_no_markers() {
-  char a;
-  use(&a);
-}
-
-void lifetime_test() {
-// O0: lifetime_test
-// O1: lifetime_test
-// O2: lifetime_test
-// O3: lifetime_test
-// O0-NOT: @llvm.lifetime.start
-// O1: @llvm.lifetime.start
-// O2: @llvm.lifetime.start
-// O3: @llvm.lifetime.start
-  helper_no_markers();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/lifetime2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/lifetime2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/lifetime2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang -S -emit-llvm -o - -O2 %s | FileCheck %s -check-prefix=O2
-// RUN: %clang -S -emit-llvm -o - -O0 %s | FileCheck %s -check-prefix=O0
-
-extern int bar(char *A, int n);
-
-// O0-NOT: @llvm.lifetime.start
-int foo (int n) {
-  if (n) {
-// O2: @llvm.lifetime.start
-    char A[100];
-    return bar(A, 1);
-  } else {
-// O2: @llvm.lifetime.start
-    char A[100];
-    return bar(A, 2);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/lineno-dbginfo.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/lineno-dbginfo.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/lineno-dbginfo.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: echo "#include <stddef.h>" > %t.h
-// RUN: %clang -S -g -include %t.h %s -emit-llvm -o %t.ll
-// RUN: grep "i32 5" %t.ll
-// outer is at line number 5.
-int outer = 42;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/linetable-endscope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/linetable-endscope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/linetable-endscope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin10 %s -o - | FileCheck %s
-
-// Check the line numbers for the ret instruction. We expect it to be
-// at the closing of the lexical scope in this case. See the comments in
-// CodeGenFunction::FinishFunction() for more details.
-
-// CHECK: define {{.*}}foo
-// CHECK: store {{.*}}, !dbg ![[CONV:[0-9]+]]
-// CHECK: ret {{.*}}, !dbg ![[RET:[0-9]+]]
-
-void foo(char c)
-{
-  int i;
-  // CHECK: ![[CONV]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  i = c;
-  // CHECK: ![[RET]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/link-bitcode-file.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/link-bitcode-file.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/link-bitcode-file.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -DBITCODE -emit-llvm-bc -o %t.bc %s
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -mlink-bitcode-file %t.bc -O3 -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-NO-BC %s
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -DBITCODE -mlink-bitcode-file %t.bc -O3 -emit-llvm -o - %s 2>&1 | FileCheck -check-prefix=CHECK-BC %s
-
-int f(void);
-
-#ifdef BITCODE
-
-// CHECK-BC: 'f': symbol multiply defined
-int f(void) {
-  return 42;
-}
-
-#else
-
-// CHECK-NO-BC: define i32 @g
-// CHECK-NO-BC: ret i32 42
-int g(void) {
-  return f();
-}
-
-// CHECK-NO-BC: define i32 @f
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/linkage-redecl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/linkage-redecl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/linkage-redecl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: @test2_i = internal global i32 99
-static int test2_i = 99;
-int test2_f() {
-  extern int test2_i;
-  return test2_i;
-}
-
-// C99 6.2.2p3
-// PR3425
-static void f(int x);
-
-void g0() {
-  f(5);
-}
-
-extern void f(int x) { } // still has internal linkage
-// CHECK: define internal void @f

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/linux-arm-atomic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/linux-arm-atomic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/linux-arm-atomic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-linux | FileCheck %s
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-linux | FileCheck %s
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=thumbv7-unknown-linux | FileCheck %s
-
-typedef int _Atomic_word;
-_Atomic_word exchange_and_add(volatile _Atomic_word *__mem, int __val) {
-  return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL);
-}
-
-// CHECK: define {{.*}} @exchange_and_add
-// CHECK: atomicrmw {{.*}} add

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/long-double-x86-nacl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/long-double-x86-nacl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/long-double-x86-nacl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-unknown-nacl | FileCheck %s
-
-long double x = 0;
-int checksize[sizeof(x) == 8 ? 1 : -1];
-
-// CHECK: define void @s1(double %a)
-void s1(long double a) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/long-double-x86.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/long-double-x86.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/long-double-x86.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin9 | grep x86_fp80
-
-long double x = 0;
-int checksize[sizeof(x) == 16 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/lzcnt-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/lzcnt-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/lzcnt-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +lzcnt -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-unsigned short test__lzcnt16(unsigned short __X)
-{
-  // CHECK: @llvm.ctlz.i16
-  return __lzcnt16(__X);
-}
-
-unsigned int test_lzcnt32(unsigned int __X)
-{
-  // CHECK: @llvm.ctlz.i32
-  return __lzcnt32(__X);
-}
-
-unsigned long long test__lzcnt64(unsigned long long __X)
-{
-  // CHECK: @llvm.ctlz.i64
-  return __lzcnt64(__X);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mandel.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mandel.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mandel.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-/* Sparc is not C99-compliant */
-#if defined(sparc) || defined(__sparc__) || defined(__sparcv9)
-
-int main() { return 0; }
-
-#else /* sparc */
-
-#define ESCAPE 2
-#define IMAGE_WIDTH 150
-#define IMAGE_HEIGHT 50
-#if 1
-#define IMAGE_SIZE 60
-#else
-#define IMAGE_SIZE 5000
-#endif
-#define START_X -2.1
-#define END_X 1.0
-#define START_Y -1.25
-#define MAX_ITER 100
-
-#define step_X ((END_X - START_X)/IMAGE_WIDTH)
-#define step_Y ((-START_Y - START_Y)/IMAGE_HEIGHT)
-
-#define I 1.0iF
-
-int putchar(char c);
-
-volatile double __complex__ accum;
-
-void mandel() {
-  int x, y, n;
-  for (y = 0; y < IMAGE_HEIGHT; ++y) {
-    for (x = 0; x < IMAGE_WIDTH; ++x) {
-      double __complex__ c = (START_X+x*step_X) + (START_Y+y*step_Y) * I;
-      double __complex__ z = 0.0;
-
-      for (n = 0; n < MAX_ITER; ++n) {
-        z = z * z + c;
-        if (hypot(__real__ z, __imag__ z) >= ESCAPE)
-          break;
-      }
-
-      if (n == MAX_ITER)
-        putchar(' ');
-      else if (n > 6)
-        putchar('.');
-      else if (n > 3)
-        putchar('+');
-      else if (n > 2)
-        putchar('x');
-      else
-        putchar('*');
-    }
-    putchar('\n');
-  }
-}
-
-int main() {
-  mandel();
-  return 0;
-}
-
-#endif /* sparc */

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mangle.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mangle.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mangle.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @foo
-
-// Make sure we mangle overloadable, even in C system headers.
-# 1 "somesystemheader.h" 1 3 4
-// CHECK: @_Z2f0i
-void __attribute__((__overloadable__)) f0(int a) {}
-// CHECK: @_Z2f0l
-void __attribute__((__overloadable__)) f0(long b) {}
-
-// CHECK: @bar
-
-// These should get merged.
-void foo() __asm__("bar");
-void foo2() __asm__("bar");
-
-int nux __asm__("foo");
-extern float nux2 __asm__("foo");
-
-int test() { 
-  foo();
-  foo2();
-  
-  return nux + nux2;
-}
-
-
-// Function becomes a variable.
-void foo3() __asm__("var");
-
-void test2() {
-  foo3();
-}
-int foo4 __asm__("var") = 4;
-
-
-// Variable becomes a function
-extern int foo5 __asm__("var2");
-
-void test3() {
-  foo5 = 1;
-}
-
-void foo6() __asm__("var2");
-void foo6() {
-}
-
-
-
-int foo7 __asm__("foo7") __attribute__((used));
-float foo8 __asm__("foo7") = 42;
-
-// PR4412
-int func(void);
-extern int func (void) __asm__ ("FUNC");
-
-// CHECK: @FUNC
-int func(void) {
-  return 42;
-}
-
-// CHECK: @_Z4foo9Dv4_f
-typedef __attribute__(( vector_size(16) )) float float4;
-void __attribute__((__overloadable__)) foo9(float4 f) {}
-
-// Intrinsic calls.
-extern int llvm_cas(volatile int*, int, int)
-  __asm__("llvm.atomic.cmp.swap.i32.p0i32");
-
-int foo10(volatile int* add, int from, int to) {
-  // CHECK: call i32 @llvm.atomic.cmp.swap.i32.p0i32
-  return llvm_cas(add, from, to);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/may-alias.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/may-alias.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/may-alias.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -Werror -triple i386-unknown-unknown -emit-llvm -O1 -disable-llvm-optzns -o - %s | FileCheck %s
-// RUN: %clang_cc1 -Werror -triple i386-unknown-unknown -emit-llvm -O1 -struct-path-tbaa -disable-llvm-optzns -o - %s | FileCheck %s -check-prefix=PATH
-
-// Types with the may_alias attribute should be considered equivalent
-// to char for aliasing.
-
-typedef int __attribute__((may_alias)) aliasing_int;
-
-void test0(aliasing_int *ai, int *i)
-{
-// CHECK: store i32 0, i32* %{{.*}}, !tbaa !1
-// PATH: store i32 0, i32* %{{.*}}, !tbaa [[TAG_CHAR:!.*]]
-  *ai = 0;
-// CHECK: store i32 1, i32* %{{.*}}, !tbaa !3
-// PATH: store i32 1, i32* %{{.*}}, !tbaa [[TAG_INT:!.*]]
-  *i = 1;
-}
-
-// PR9307
-struct Test1 { int x; };
-struct Test1MA { int x; } __attribute__((may_alias));
-void test1(struct Test1MA *p1, struct Test1 *p2) {
-  // CHECK: store i32 2, i32* {{%.*}}, !tbaa !1
-  // PATH: store i32 2, i32* {{%.*}}, !tbaa [[TAG_CHAR]]
-  p1->x = 2;
-  // CHECK: store i32 3, i32* {{%.*}}, !tbaa !3
-  // PATH: store i32 3, i32* {{%.*}}, !tbaa [[TAG_test1_x:!.*]]
-  p2->x = 3;
-}
-
-// CHECK: !0 = metadata !{metadata !"any pointer", metadata !1}
-// CHECK: !1 = metadata !{metadata !"omnipotent char", metadata !2}
-// CHECK: !2 = metadata !{metadata !"Simple C/C++ TBAA"}
-// CHECK: !3 = metadata !{metadata !"int", metadata !1}
-
-// PATH: [[TYPE_CHAR:!.*]] = metadata !{metadata !"omnipotent char", metadata !{{.*}}
-// PATH: [[TAG_CHAR]] = metadata !{metadata [[TYPE_CHAR]], metadata [[TYPE_CHAR]], i64 0}
-// PATH: [[TAG_INT]] = metadata !{metadata [[TYPE_INT:!.*]], metadata [[TYPE_INT]], i64 0}
-// PATH: [[TYPE_INT]] = metadata !{metadata !"int", metadata [[TYPE_CHAR]]
-// PATH: [[TAG_test1_x]] = metadata !{metadata [[TYPE_test1:!.*]], metadata [[TYPE_INT]], i64 0}
-// PATH: [[TYPE_test1]] = metadata !{metadata !"_ZTS5Test1", metadata [[TYPE_INT]], i64 0}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mcount.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mcount.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mcount.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -pg -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-void foo(void) {
-// CHECK: call void @mcount()
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/merge-attrs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/merge-attrs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/merge-attrs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-void *malloc(__SIZE_TYPE__ size) __attribute__ ((__nothrow__));
-
-inline static void __zend_malloc() {
-    malloc(1);
-}
-
-void *malloc(__SIZE_TYPE__ size) __attribute__ ((__nothrow__));
-
-void fontFetch() {
-    __zend_malloc(1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/merge-statics.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/merge-statics.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/merge-statics.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 < %s -emit-llvm | grep internal | count 1
-
-// The two decls for 'a' should merge into one llvm GlobalVariable.
-
-struct s { int x; };
-static struct s a;
-
-struct s *ap1 = &a;
-
-static struct s a =  {
-    10
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/microsoft-call-conv-x64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/microsoft-call-conv-x64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/microsoft-call-conv-x64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-win32 -emit-llvm < %s | FileCheck %s
-
-void __fastcall f1(void);
-void __stdcall f2(void);
-void __fastcall f4(void) {
-// CHECK: define void @f4()
-  f1();
-// CHECK: call void @f1()
-}
-void __stdcall f5(void) {
-// CHECK: define void @f5()
-  f2();
-// CHECK: call void @f2()
-}
-
-// PR5280
-void (__fastcall *pf1)(void) = f1;
-void (__stdcall *pf2)(void) = f2;
-void (__fastcall *pf4)(void) = f4;
-void (__stdcall *pf5)(void) = f5;
-
-int main(void) {
-    f4(); f5();
-    // CHECK: call void @f4()
-    // CHECK: call void @f5()
-    pf1(); pf2(); pf4(); pf5();
-    // CHECK: call void %{{.*}}()
-    // CHECK: call void %{{.*}}()
-    // CHECK: call void %{{.*}}()
-    // CHECK: call void %{{.*}}()
-    return 0;
-}
-
-// PR7117
-void __stdcall f7(foo) int foo; {}
-void f8(void) {
-  f7(0);
-  // CHECK: call void @f7(i32 0)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/microsoft-call-conv.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/microsoft-call-conv.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/microsoft-call-conv.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux -emit-llvm < %s | FileCheck %s
-
-void __fastcall f1(void);
-void __stdcall f2(void);
-void __thiscall f3(void);
-void __fastcall f4(void) {
-// CHECK: define x86_fastcallcc void @f4()
-  f1();
-// CHECK: call x86_fastcallcc void @f1()
-}
-void __stdcall f5(void) {
-// CHECK: define x86_stdcallcc void @f5()
-  f2();
-// CHECK: call x86_stdcallcc void @f2()
-}
-void __thiscall f6(void) {
-// CHECK: define x86_thiscallcc void @f6()
-  f3();
-// CHECK: call x86_thiscallcc void @f3()
-}
-
-// PR5280
-void (__fastcall *pf1)(void) = f1;
-void (__stdcall *pf2)(void) = f2;
-void (__thiscall *pf3)(void) = f3;
-void (__fastcall *pf4)(void) = f4;
-void (__stdcall *pf5)(void) = f5;
-void (__thiscall *pf6)(void) = f6;
-
-int main(void) {
-    f4(); f5(); f6();
-    // CHECK: call x86_fastcallcc void @f4()
-    // CHECK: call x86_stdcallcc void @f5()
-    // CHECK: call x86_thiscallcc void @f6()
-    pf1(); pf2(); pf3(); pf4(); pf5(); pf6();
-    // CHECK: call x86_fastcallcc void %{{.*}}()
-    // CHECK: call x86_stdcallcc void %{{.*}}()
-    // CHECK: call x86_thiscallcc void %{{.*}}()
-    // CHECK: call x86_fastcallcc void %{{.*}}()
-    // CHECK: call x86_stdcallcc void %{{.*}}()
-    // CHECK: call x86_thiscallcc void %{{.*}}()
-    return 0;
-}
-
-// PR7117
-void __stdcall f7(foo) int foo; {}
-void f8(void) {
-  f7(0);
-  // CHECK: call x86_stdcallcc void @f7(i32 0)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips-byval-arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips-byval-arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips-byval-arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang -target mipsel-unknown-linux -O3 -S -o - -emit-llvm %s | FileCheck %s -check-prefix=O32
-// RUN: %clang -target mips64el-unknown-linux -O3 -S -mabi=n64 -o - -emit-llvm %s | FileCheck %s -check-prefix=N64
-
-typedef struct {
-  float f[3];
-} S0;
-
-extern void foo2(S0);
-
-// O32: define void @foo1(i32 %a0.coerce0, i32 %a0.coerce1, i32 %a0.coerce2)
-// N64: define void @foo1(i64 %a0.coerce0, i32 %a0.coerce1)
-
-void foo1(S0 a0) {
-  foo2(a0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips-clobber-reg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips-clobber-reg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips-clobber-reg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang -target mipsel-unknown-linux -S -o - -emit-llvm %s 
-
-/*
-    This checks that the frontend will accept both
-    enumerated and symbolic Mips GPR register names.
-    
-    Any bad names will make the frontend choke.
- */
-
-main()
-{
-
-    __asm__ __volatile__ (".set noat \n\t addi $7,$at,77":::"at"); 
-    __asm__ __volatile__ ("addi $7,$v0,77":::"v0"); 
-    __asm__ __volatile__ ("addi $7,$v1,77":::"v1"); 
-    __asm__ __volatile__ ("addi $7,$a0,77":::"a0"); 
-    __asm__ __volatile__ ("addi $7,$a1,77":::"a1"); 
-    __asm__ __volatile__ ("addi $7,$a2,77":::"a2"); 
-    __asm__ __volatile__ ("addi $7,$a3,77":::"a3"); 
-    __asm__ __volatile__ ("addi $7,$t0,77":::"t0"); 
-    __asm__ __volatile__ ("addi $7,$t1,77":::"t1"); 
-    __asm__ __volatile__ ("addi $7,$t2,77":::"t2"); 
-    __asm__ __volatile__ ("addi $7,$t3,77":::"t3"); 
-    __asm__ __volatile__ ("addi $7,$t4,77":::"t4"); 
-    __asm__ __volatile__ ("addi $7,$t5,77":::"t5"); 
-    __asm__ __volatile__ ("addi $7,$t6,77":::"t6"); 
-    __asm__ __volatile__ ("addi $7,$t7,77":::"t7"); 
-    __asm__ __volatile__ ("addi $7,$s0,77":::"s0"); 
-    __asm__ __volatile__ ("addi $7,$s1,77":::"s1"); 
-    __asm__ __volatile__ ("addi $7,$s2,77":::"s2"); 
-    __asm__ __volatile__ ("addi $7,$s3,77":::"s3"); 
-    __asm__ __volatile__ ("addi $7,$s4,77":::"s4"); 
-    __asm__ __volatile__ ("addi $7,$s5,77":::"s5"); 
-    __asm__ __volatile__ ("addi $7,$s6,77":::"s6"); 
-    __asm__ __volatile__ ("addi $7,$s7,77":::"s7"); 
-    __asm__ __volatile__ ("addi $7,$t8,77":::"t8"); 
-    __asm__ __volatile__ ("addi $7,$t9,77":::"t9"); 
-    __asm__ __volatile__ ("addi $7,$k0,77":::"k0"); 
-    __asm__ __volatile__ ("addi $7,$k1,77":::"k1"); 
-    __asm__ __volatile__ ("addi $7,$gp,77":::"gp"); 
-    __asm__ __volatile__ ("addi $7,$sp,77":::"sp"); 
-    __asm__ __volatile__ ("addi $7,$fp,77":::"fp"); 
-    __asm__ __volatile__ ("addi $7,$sp,77":::"$sp"); 
-    __asm__ __volatile__ ("addi $7,$fp,77":::"$fp"); 
-    __asm__ __volatile__ ("addi $7,$ra,77":::"ra"); 
-
-    __asm__ __volatile__ ("addi $7,$0,77":::"$0"); 
-    __asm__ __volatile__ (".set noat \n\t addi $7,$1,77":::"$1"); 
-    __asm__ __volatile__ ("addi $7,$2,77":::"$2"); 
-    __asm__ __volatile__ ("addi $7,$3,77":::"$3"); 
-    __asm__ __volatile__ ("addi $7,$4,77":::"$4"); 
-    __asm__ __volatile__ ("addi $7,$5,77":::"$5"); 
-    __asm__ __volatile__ ("addi $7,$6,77":::"$6"); 
-    __asm__ __volatile__ ("addi $7,$7,77":::"$7"); 
-    __asm__ __volatile__ ("addi $7,$8,77":::"$8"); 
-    __asm__ __volatile__ ("addi $7,$9,77":::"$9"); 
-    __asm__ __volatile__ ("addi $7,$10,77":::"$10"); 
-    __asm__ __volatile__ ("addi $7,$11,77":::"$10"); 
-    __asm__ __volatile__ ("addi $7,$12,77":::"$12"); 
-    __asm__ __volatile__ ("addi $7,$13,77":::"$13"); 
-    __asm__ __volatile__ ("addi $7,$14,77":::"$14"); 
-    __asm__ __volatile__ ("addi $7,$15,77":::"$15"); 
-    __asm__ __volatile__ ("addi $7,$16,77":::"$16"); 
-    __asm__ __volatile__ ("addi $7,$17,77":::"$17"); 
-    __asm__ __volatile__ ("addi $7,$18,77":::"$18"); 
-    __asm__ __volatile__ ("addi $7,$19,77":::"$19"); 
-    __asm__ __volatile__ ("addi $7,$20,77":::"$20"); 
-    __asm__ __volatile__ ("addi $7,$21,77":::"$21"); 
-    __asm__ __volatile__ ("addi $7,$22,77":::"$22"); 
-    __asm__ __volatile__ ("addi $7,$23,77":::"$23"); 
-    __asm__ __volatile__ ("addi $7,$24,77":::"$24"); 
-    __asm__ __volatile__ ("addi $7,$25,77":::"$25"); 
-    __asm__ __volatile__ ("addi $7,$26,77":::"$26"); 
-    __asm__ __volatile__ ("addi $7,$27,77":::"$27"); 
-    __asm__ __volatile__ ("addi $7,$28,77":::"$28"); 
-    __asm__ __volatile__ ("addi $7,$29,77":::"$29"); 
-    __asm__ __volatile__ ("addi $7,$30,77":::"$30"); 
-    __asm__ __volatile__ ("addi $7,$31,77":::"$31"); 
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips-constraint-regs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips-constraint-regs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips-constraint-regs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang -target mipsel-unknown-linux -S -o - -emit-llvm %s \
-// RUN: | FileCheck %s
-
-// This checks that the frontend will accept inline asm constraints
-// c', 'l' and 'x'.
-
-int main()
-{
-  // 'c': 16 bit address register for Mips16, GPR for all others
-  // I am using 'c' to constrain both the target and one of the source
-  // registers. We are looking for syntactical correctness.
-  // CHECK: %{{[0-9]+}} = call i32 asm sideeffect "addi $0,$1,$2 \0A\09\09", "=c,c,I"(i32 %{{[0-9]+}}, i32 %{{[0-9]+}}) [[NUW:#[0-9]+]], !srcloc !{{[0-9]+}}
-  int __s, __v = 17;
-  int __t;
-  __asm__ __volatile__(
-      "addi %0,%1,%2 \n\t\t"
-      : "=c" (__t)
-        : "c" (__s), "I" (__v));
-
-  // 'l': lo register
-  // We are making it clear that destination register is lo with the
-  // use of the 'l' constraint ("=l").
-  // CHECK:   %{{[0-9]+}} = call i32 asm sideeffect "mtlo $1 \0A\09\09", "=l,r,~{lo}"(i32 %{{[0-9]+}}) [[NUW]], !srcloc !{{[0-9]+}}
-  int i_temp = 44;
-  int i_result;
-  __asm__ __volatile__(
-      "mtlo %1 \n\t\t"
-      : "=l" (i_result)
-        : "r" (i_temp)
-          : "lo");
-
-  // 'x': Combined lo/hi registers
-  // We are specifying that destination registers are the hi/lo pair with the
-  // use of the 'x' constraint ("=x").
-  // CHECK:  %{{[0-9]+}} = call i64 asm sideeffect "mthi $1 \0A\09\09mtlo $2 \0A\09\09", "=x,r,r"(i32 %{{[0-9]+}}, i32 %{{[0-9]+}}) [[NUW]], !srcloc !{{[0-9]+}}
-  int i_hi = 3;
-  int i_lo = 2;
-  long long ll_result = 0;
-  __asm__ __volatile__(
-      "mthi %1 \n\t\t"
-      "mtlo %2 \n\t\t"
-      : "=x" (ll_result)
-        : "r" (i_hi), "r" (i_lo)
-          : );
-
-  return 0;
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips-constraints-mem.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips-constraints-mem.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips-constraints-mem.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang -target mipsel-unknown-linux -S -o - -emit-llvm %s \
-// RUN: | FileCheck %s
-
-// This checks that the frontend will accept inline asm memory constraints.
-
-int foo()
-{
-
- // 'R': An address that can be used in a non-macro load or stor'
- // This test will result in the higher and lower nibbles being
- // switched due to the lwl/lwr instruction pairs.
- // CHECK:   %{{[0-9]+}} = call i32 asm sideeffect  "lwl $0, 1 + $1\0A\09lwr $0, 2 + $1\0A\09", "=r,*R"(i32* %{{[0-9,a-f]+}}) #1, !srcloc !0
-
-  int c = 0xffbbccdd;
-
-  int *p = &c;
-  int out = 0;
-
-  __asm volatile (
-    "lwl %0, 1 + %1\n\t"
-    "lwr %0, 2 + %1\n\t"
-    : "=r"(out)
-    : "R"(*p)
-    );
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips-inline-asm-modifiers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips-inline-asm-modifiers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips-inline-asm-modifiers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang -target mipsel-unknown-linux -S -o - -emit-llvm %s \
-// RUN: | FileCheck %s
-
-// This checks that the frontend will accept inline asm operand modifiers
-
-int printf(const char*, ...);
-
-  // CHECK: %{{[0-9]+}} = call i32 asm ".set noreorder;\0Alw    $0,$1;\0A.set reorder;\0A", "=r,*m"(i32* getelementptr inbounds ([8 x i32]* @b, i32 {{[0-9]+}}, i32 {{[0-9]+}})) #2, !srcloc !0
-  // CHECK: %{{[0-9]+}} = call i32 asm "lw    $0,${1:D};\0A", "=r,*m"(i32* getelementptr inbounds ([8 x i32]* @b, i32 {{[0-9]+}}, i32 {{[0-9]+}})) #2, !srcloc !1
-int b[8] = {0,1,2,3,4,5,6,7};
-int  main()
-{
-  int i;
-
-  // The first word. Notice, no 'D'
-  {asm (
-  ".set noreorder;\n"
-  "lw    %0,%1;\n"
-  ".set reorder;\n"
-  : "=r" (i)
-  : "m" (*(b+4)));}
-
-  printf("%d\n",i);
-
-  // The second word
-  {asm (
-  "lw    %0,%D1;\n"
-  : "=r" (i)
-  : "m" (*(b+4))
-  );}
-
-  printf("%d\n",i);
-
-  return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips-target-data.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips-target-data.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips-target-data.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang -target mipsel-linux-gnu -o - -emit-llvm -S %s |\
-// RUN: FileCheck %s -check-prefix=32EL
-// RUN: %clang -target mips-linux-gnu -o - -emit-llvm -S %s |\
-// RUN: FileCheck %s -check-prefix=32EB
-// RUN: %clang -target mips64el-linux-gnu -o - -emit-llvm -S %s |\
-// RUN: FileCheck %s -check-prefix=64EL
-// RUN: %clang -target mips64-linux-gnu -o - -emit-llvm -S %s |\
-// RUN: FileCheck %s -check-prefix=64EB
-
-// 32EL: e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64
-// 32EB: E-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64
-// 64EL: e-p:64:64:64-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v64:64:64-n32:64-S128
-// 64EB: E-p:64:64:64-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v64:64:64-n32:64-S128
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips-vector-arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips-vector-arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips-vector-arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang -target mipsel-unknown-linux -O3 -S -o - -emit-llvm %s | FileCheck %s -check-prefix=O32
-// RUN: %clang -target mips64el-unknown-linux -O3 -S -mabi=n64 -o - -emit-llvm %s | FileCheck %s -check-prefix=N64
-
-// check that
-// 1. vector arguments are passed in integer registers
-// 2. argument alignment is no larger than 8-byte for O32 and 16-byte for N64.
-
-typedef float  v4sf __attribute__ ((__vector_size__ (16)));
-typedef int v4i32 __attribute__ ((__vector_size__ (16)));
-
-// O32: define void @test_v4sf(i32 %a1.coerce0, i32 %a1.coerce1, i32 %a1.coerce2, i32 %a1.coerce3, i32 %a2, i32, i32 %a3.coerce0, i32 %a3.coerce1, i32 %a3.coerce2, i32 %a3.coerce3) [[NUW:#[0-9]+]]
-// O32: declare i32 @test_v4sf_2(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)
-// N64: define void @test_v4sf(i64 %a1.coerce0, i64 %a1.coerce1, i32 %a2, i64, i64 %a3.coerce0, i64 %a3.coerce1) [[NUW:#[0-9]+]]
-// N64: declare i32 @test_v4sf_2(i64, i64, i32, i64, i64, i64)
-extern test_v4sf_2(v4sf, int, v4sf);
-void test_v4sf(v4sf a1, int a2, v4sf a3) {
-  test_v4sf_2(a3, a2, a1);
-}
-
-// O32: define void @test_v4i32(i32 %a1.coerce0, i32 %a1.coerce1, i32 %a1.coerce2, i32 %a1.coerce3, i32 %a2, i32, i32 %a3.coerce0, i32 %a3.coerce1, i32 %a3.coerce2, i32 %a3.coerce3) [[NUW]]
-// O32: declare i32 @test_v4i32_2(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)
-// N64: define void @test_v4i32(i64 %a1.coerce0, i64 %a1.coerce1, i32 %a2, i64, i64 %a3.coerce0, i64 %a3.coerce1) [[NUW]]
-// N64: declare i32 @test_v4i32_2(i64, i64, i32, i64, i64, i64)
-extern test_v4i32_2(v4i32, int, v4i32);
-void test_v4i32(v4i32 a1, int a2, v4i32 a3) {
-  test_v4i32_2(a3, a2, a1);
-}
-
-// O32: attributes [[NUW]] = { nounwind{{.*}} }
-
-// N64: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips-vector-return.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips-vector-return.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips-vector-return.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang -target mipsel-unknown-linux -O3 -S -o - -emit-llvm %s | FileCheck %s -check-prefix=O32
-// RUN: %clang -target mips64el-unknown-linux -O3 -S -mabi=n64 -o - -emit-llvm %s | FileCheck %s -check-prefix=N64
-
-// vectors larger than 16-bytes are returned via the hidden pointer argument. 
-// N64/N32 returns vectors whose size is equal to or smaller than 16-bytes in
-// integer registers. 
-typedef float  v4sf __attribute__ ((__vector_size__ (16)));
-typedef double v4df __attribute__ ((__vector_size__ (32)));
-typedef int v4i32 __attribute__ ((__vector_size__ (16)));
-
-// O32: define void @test_v4sf(<4 x float>* noalias nocapture sret
-// N64: define { i64, i64 } @test_v4sf
-v4sf test_v4sf(float a) {
-  return (v4sf){0.0f, a, 0.0f, 0.0f};
-}
-
-// O32: define void @test_v4df(<4 x double>* noalias nocapture sret
-// N64: define void @test_v4df(<4 x double>* noalias nocapture sret
-v4df test_v4df(double a) {
-  return (v4df){0.0, a, 0.0, 0.0};
-}
-
-// O32 returns integer vectors whose size is equal to or smaller than 16-bytes
-// in integer registers.
-//
-// O32: define { i32, i32, i32, i32 } @test_v4i32
-// N64: define { i64, i64 } @test_v4i32
-v4i32 test_v4i32(int a) {
-  return (v4i32){0, a, 0, 0};
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips16-attr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips16-attr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips16-attr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple mipsel-linux-gnu -emit-llvm  -o  - %s | FileCheck %s
-void __attribute__((mips16)) foo (void) {
-
-}
-
-// CHECK: define void @foo() [[MIPS16:#[0-9]+]]
-
-void __attribute__((nomips16)) nofoo (void) {
-
-}
-
-// CHECK: define void @nofoo() [[NOMIPS16:#[0-9]+]]
-
-// CHECK: attributes [[MIPS16]] = { nounwind {{.*}} "mips16" {{.*}} }
-
-// CHECK: attributes [[NOMIPS16]]  = { nounwind {{.*}} "nomips16" {{.*}} }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-class-return.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-class-return.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-class-return.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang -target mips64el-unknown-linux -O3 -S -mabi=n64 -o - -emit-llvm %s | FileCheck %s
-
-class B0 {
-  double d;
-};
-
-class D0 : public B0 {
-  float f;
-};
-
-class B1 {
-};
-
-class D1 : public B1 {
-  double d;
-  float f;
-};
-
-class D2 : public B0 {
-  double d2;
-};
-
-extern D0 gd0;
-extern D1 gd1;
-extern D2 gd2;
-
-// CHECK: define { i64, i64 } @_Z4foo1v() 
-D0 foo1(void) {
-  return gd0;
-}
-
-// CHECK: define { double, float } @_Z4foo2v() 
-D1 foo2(void) {
-  return gd1;
-}
-
-// CHECK: define void @_Z4foo32D2(i64 %a0.coerce0, double %a0.coerce1) 
-void foo3(D2 a0) {
-  gd2 = a0;
-}
-
-// CHECK: define void @_Z4foo42D0(i64 %a0.coerce0, i64 %a0.coerce1)
-void foo4(D0 a0) {
-  gd0 = a0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-f128-literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-f128-literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-f128-literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang -target mips64el-unknown-linux -O3 -S -mabi=n64 -o - -emit-llvm %s | FileCheck %s
-
-typedef long double LD;
-
-// CHECK: ret fp128
-
-LD foo0() {
-  return 2.625L;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-nontrivial-return.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-nontrivial-return.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-nontrivial-return.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang -target mips64el-unknown-linux -O3 -S -mabi=n64 -o - -emit-llvm %s | FileCheck %s
-
-class B {
-public:
-  virtual ~B() {}
-};
-
-class D : public B {
-};
-
-extern D gd0;
-
-// CHECK: _Z4foo1v(%class.D* noalias nocapture sret
-
-D foo1(void) {
-  return gd0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-padding-arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-padding-arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mips64-padding-arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang -target mipsel-unknown-linux -O3 -S -o - -emit-llvm %s | FileCheck %s -check-prefix=O32
-// RUN: %clang -target mips64el-unknown-linux -O3 -S -mabi=n64 -o - -emit-llvm %s | FileCheck %s -check-prefix=N64
-
-typedef struct {
-  double d;
-  long double ld;
-} S0;
-
-// Insert padding to ensure arguments of type S0 are aligned to 16-byte boundaries.
-
-// N64: define void @foo1(i32 %a0, i64, double %a1.coerce0, i64 %a1.coerce1, i64 %a1.coerce2, i64 %a1.coerce3, double %a2.coerce0, i64 %a2.coerce1, i64 %a2.coerce2, i64 %a2.coerce3, i32 %b, i64, double %a3.coerce0, i64 %a3.coerce1, i64 %a3.coerce2, i64 %a3.coerce3)
-// N64: tail call void @foo2(i32 1, i32 2, i32 %a0, i64 undef, double %a1.coerce0, i64 %a1.coerce1, i64 %a1.coerce2, i64 %a1.coerce3, double %a2.coerce0, i64 %a2.coerce1, i64 %a2.coerce2, i64 %a2.coerce3, i32 3, i64 undef, double %a3.coerce0, i64 %a3.coerce1, i64 %a3.coerce2, i64 %a3.coerce3)
-// N64: declare void @foo2(i32, i32, i32, i64, double, i64, i64, i64, double, i64, i64, i64, i32, i64, double, i64, i64, i64)
-
-extern void foo2(int, int, int, S0, S0, int, S0);
-
-void foo1(int a0, S0 a1, S0 a2, int b, S0 a3) {
-  foo2(1, 2, a0, a1, a2, 3, a3);
-}
-
-// Insert padding before long double argument.
-//
-// N64: define void @foo3(i32 %a0, i64, fp128 %a1)
-// N64: tail call void @foo4(i32 1, i32 2, i32 %a0, i64 undef, fp128 %a1)
-// N64: declare void @foo4(i32, i32, i32, i64, fp128)
-
-extern void foo4(int, int, int, long double);
-
-void foo3(int a0, long double a1) {
-  foo4(1, 2, a0, a1);
-}
-
-// Insert padding after hidden argument.
-//
-// N64: define void @foo5(%struct.S0* noalias sret %agg.result, i64, fp128 %a0)
-// N64: call void @foo6(%struct.S0* sret %agg.result, i32 1, i32 2, i64 undef, fp128 %a0)
-// N64: declare void @foo6(%struct.S0* sret, i32, i32, i64, fp128)
-
-extern S0 foo6(int, int, long double);
-
-S0 foo5(long double a0) {
-  return foo6(1, 2, a0);
-}
-
-// Do not insert padding if ABI is O32.
-//
-// O32: define void @foo7(float %a0, double %a1)
-// O32: declare void @foo8(float, double)
-
-extern void foo8(float, double);
-
-void foo7(float a0, double a1) {
-  foo8(a0 + 1.0f, a1 + 2.0);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/misaligned-param.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/misaligned-param.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/misaligned-param.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -triple i386-apple-darwin -emit-llvm -o - | FileCheck %s
-// Misaligned parameter must be memcpy'd to correctly aligned temporary.
-
-struct s { int x; long double y; };
-long double foo(struct s x, int i, struct s y) {
-// CHECK: foo
-// CHECK: %x = alloca %struct.s, align 16
-// CHECK: %y = alloca %struct.s, align 16
-// CHECK: memcpy
-// CHECK: memcpy
-// CHECK: bar
-  return bar(&x, &y);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mms-bitfields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mms-bitfields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mms-bitfields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -mms-bitfields -emit-llvm %s -o - | FileCheck %s
-
-struct s1 {
-  int       f32;
-  long long f64;
-} s1;
-
-// CHECK: %struct.s1 = type { i32, [4 x i8], i64 }
-
-struct s2 {
-  int       f32;
-  long long f64[4];
-} s2;
-
-// CHECK: %struct.s2 = type { i32, [4 x i8], [4 x i64] }
-
-struct s3 {
-  int       f32;
-  struct s1 s;
-} s3;
-
-// CHECK: %struct.s3 = type { i32, [4 x i8], %struct.s1 }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,453 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +ssse3 -S -o - | FileCheck %s
-
-// FIXME: Disable inclusion of mm_malloc.h, our current implementation is broken
-// on win32 since we don't generally know how to find errno.h.
-#define __MM_MALLOC_H
-
-#include <tmmintrin.h>
-
-__m64 test1(__m64 a, __m64 b) {
-  // CHECK: phaddw
-  return _mm_hadd_pi16(a, b);
-}
-
-__m64 test2(__m64 a, __m64 b) {
-  // CHECK: phaddd
-  return _mm_hadd_pi32(a, b);
-}
-
-__m64 test3(__m64 a, __m64 b) {
-  // CHECK: phaddsw
-  return _mm_hadds_pi16(a, b);
-}
-
-__m64 test4(__m64 a, __m64 b) {
-  // CHECK: phsubw
-  return _mm_hsub_pi16(a, b);
-}
-
-__m64 test5(__m64 a, __m64 b) {
-  // CHECK: phsubd
-  return _mm_hsub_pi32(a, b);
-}
-
-__m64 test6(__m64 a, __m64 b) {
-  // CHECK: phsubsw
-  return _mm_hsubs_pi16(a, b);
-}
-
-__m64 test7(__m64 a, __m64 b) {
-  // CHECK: pmaddubsw
-  return _mm_maddubs_pi16(a, b);
-}
-
-__m64 test8(__m64 a, __m64 b) {
-  // CHECK: pmulhrsw
-  return _mm_mulhrs_pi16(a, b);
-}
-
-__m64 test9(__m64 a, __m64 b) {
-  // CHECK: pshufb
-  return _mm_shuffle_pi8(a, b);
-}
-
-__m64 test10(__m64 a, __m64 b) {
-  // CHECK: psignb
-  return _mm_sign_pi8(a, b);
-}
-
-__m64 test11(__m64 a, __m64 b) {
-  // CHECK: psignw
-  return _mm_sign_pi16(a, b);
-}
-
-__m64 test12(__m64 a, __m64 b) {
-  // CHECK: psignd
-  return _mm_sign_pi32(a, b);
-}
-
-__m64 test13(__m64 a) {
-  // CHECK: pabsb
-  return _mm_abs_pi8(a);
-}
-
-__m64 test14(__m64 a) {
-  // CHECK: pabsw
-  return _mm_abs_pi16(a);
-}
-
-__m64 test15(__m64 a) {
-  // CHECK: pabsd
-  return _mm_abs_pi32(a);
-}
-
-__m64 test16(__m64 a, __m64 b) {
-  // CHECK: palignr
-  return _mm_alignr_pi8(a, b, 2);
-}
-
-__m64 test17(__m128d a) {
-  // CHECK: cvtpd2pi
-  return _mm_cvtpd_pi32(a);
-}
-
-__m64 test18(__m128d a) {
-  // CHECK: cvttpd2pi
-  return _mm_cvttpd_pi32(a);
-}
-
-__m128d test19(__m64 a) {
-  // CHECK: cvtpi2pd
-  return _mm_cvtpi32_pd(a);
-}
-
-__m64 test20(__m64 a, __m64 b) {
-  // CHECK: pmuludq
-  return _mm_mul_su32(a, b);
-}
-
-__m64 test21(__m64 a) {
-  // CHECK: pshufw
-  return _mm_shuffle_pi16(a, 3);
-}
-
-__m64 test22(__m64 a, __m64 b) {
-  // CHECK: pmulhuw
-  return _mm_mulhi_pu16(a, b);
-}
-
-void test23(__m64 d, __m64 n, char *p) {
-  // CHECK: maskmovq
-  _mm_maskmove_si64(d, n, p);
-}
-
-int test24(__m64 a) {
-  // CHECK: pmovmskb
-  return _mm_movemask_pi8(a);
-}
-
-void test25(__m64 *p, __m64 a) {
-  // CHECK: movntq
-  _mm_stream_pi(p, a);
-}
-
-__m64 test26(__m64 a, __m64 b) {
-  // CHECK: pavgb
-  return _mm_avg_pu8(a, b);
-}
-
-__m64 test27(__m64 a, __m64 b) {
-  // CHECK: pavgw
-  return _mm_avg_pu16(a, b);
-}
-
-__m64 test28(__m64 a, __m64 b) {
-  // CHECK: pmaxub
-  return _mm_max_pu8(a, b);
-}
-
-__m64 test29(__m64 a, __m64 b) {
-  // CHECK: pmaxsw
-  return _mm_max_pi16(a, b);
-}
-
-__m64 test30(__m64 a, __m64 b) {
-  // CHECK: pminub
-  return _mm_min_pu8(a, b);
-}
-
-__m64 test31(__m64 a, __m64 b) {
-  // CHECK: pminsw
-  return _mm_min_pi16(a, b);
-}
-
-__m64 test32(__m64 a, __m64 b) {
-  // CHECK: psadbw
-  return _mm_sad_pu8(a, b);
-}
-
-__m64 test33(__m64 a, __m64 b) {
-  // CHECK: paddb
-  return _mm_add_pi8(a, b);
-}
-
-__m64 test34(__m64 a, __m64 b) {
-  // CHECK: paddw
-  return _mm_add_pi16(a, b);
-}
-
-__m64 test35(__m64 a, __m64 b) {
-  // CHECK: paddd
-  return _mm_add_pi32(a, b);
-}
-
-__m64 test36(__m64 a, __m64 b) {
-  // CHECK: paddq
-  return __builtin_ia32_paddq(a, b);
-}
-
-__m64 test37(__m64 a, __m64 b) {
-  // CHECK: paddsb
-  return _mm_adds_pi8(a, b);
-}
-
-__m64 test38(__m64 a, __m64 b) {
-  // CHECK: paddsw
-  return _mm_adds_pi16(a, b);
-}
-
-__m64 test39(__m64 a, __m64 b) {
-  // CHECK: paddusb
-  return _mm_adds_pu8(a, b);
-}
-
-__m64 test40(__m64 a, __m64 b) {
-  // CHECK: paddusw
-  return _mm_adds_pu16(a, b);
-}
-
-__m64 test41(__m64 a, __m64 b) {
-  // CHECK: psubb
-  return _mm_sub_pi8(a, b);
-}
-
-__m64 test42(__m64 a, __m64 b) {
-  // CHECK: psubw
-  return _mm_sub_pi16(a, b);
-}
-
-__m64 test43(__m64 a, __m64 b) {
-  // CHECK: psubd
-  return _mm_sub_pi32(a, b);
-}
-
-__m64 test44(__m64 a, __m64 b) {
-  // CHECK: psubq
-  return __builtin_ia32_psubq(a, b);
-}
-
-__m64 test45(__m64 a, __m64 b) {
-  // CHECK: psubsb
-  return _mm_subs_pi8(a, b);
-}
-
-__m64 test46(__m64 a, __m64 b) {
-  // CHECK: psubsw
-  return _mm_subs_pi16(a, b);
-}
-
-__m64 test47(__m64 a, __m64 b) {
-  // CHECK: psubusb
-  return _mm_subs_pu8(a, b);
-}
-
-__m64 test48(__m64 a, __m64 b) {
-  // CHECK: psubusw
-  return _mm_subs_pu16(a, b);
-}
-
-__m64 test49(__m64 a, __m64 b) {
-  // CHECK: pmaddwd
-  return _mm_madd_pi16(a, b);
-}
-
-__m64 test50(__m64 a, __m64 b) {
-  // CHECK: pmulhw
-  return _mm_mulhi_pi16(a, b);
-}
-
-__m64 test51(__m64 a, __m64 b) {
-  // CHECK: pmullw
-  return _mm_mullo_pi16(a, b);
-}
-
-__m64 test52(__m64 a, __m64 b) {
-  // CHECK: pmullw
-  return _mm_mullo_pi16(a, b);
-}
-
-__m64 test53(__m64 a, __m64 b) {
-  // CHECK: pand
-  return _mm_and_si64(a, b);
-}
-
-__m64 test54(__m64 a, __m64 b) {
-  // CHECK: pandn
-  return _mm_andnot_si64(a, b);
-}
-
-__m64 test55(__m64 a, __m64 b) {
-  // CHECK: por
-  return _mm_or_si64(a, b);
-}
-
-__m64 test56(__m64 a, __m64 b) {
-  // CHECK: pxor
-  return _mm_xor_si64(a, b);
-}
-
-__m64 test57(__m64 a, __m64 b) {
-  // CHECK: pavgb
-  return _mm_avg_pu8(a, b);
-}
-
-__m64 test58(__m64 a, __m64 b) {
-  // CHECK: pavgw
-  return _mm_avg_pu16(a, b);
-}
-
-__m64 test59(__m64 a, __m64 b) {
-  // CHECK: psllw
-  return _mm_sll_pi16(a, b);
-}
-
-__m64 test60(__m64 a, __m64 b) {
-  // CHECK: pslld
-  return _mm_sll_pi32(a, b);
-}
-
-__m64 test61(__m64 a, __m64 b) {
-  // CHECK: psllq
-  return _mm_sll_si64(a, b);
-}
-
-__m64 test62(__m64 a, __m64 b) {
-  // CHECK: psrlw
-  return _mm_srl_pi16(a, b);
-}
-
-__m64 test63(__m64 a, __m64 b) {
-  // CHECK: psrld
-  return _mm_srl_pi32(a, b);
-}
-
-__m64 test64(__m64 a, __m64 b) {
-  // CHECK: psrlq
-  return _mm_srl_si64(a, b);
-}
-
-__m64 test65(__m64 a, __m64 b) {
-  // CHECK: psraw
-  return _mm_sra_pi16(a, b);
-}
-
-__m64 test66(__m64 a, __m64 b) {
-  // CHECK: psrad
-  return _mm_sra_pi32(a, b);
-}
-
-__m64 test67(__m64 a) {
-  // CHECK: psllw
-  return _mm_slli_pi16(a, 3);
-}
-
-__m64 test68(__m64 a) {
-  // CHECK: pslld
-  return _mm_slli_pi32(a, 3);
-}
-
-__m64 test69(__m64 a) {
-  // CHECK: psllq
-  return _mm_slli_si64(a, 3);
-}
-
-__m64 test70(__m64 a) {
-  // CHECK: psrlw
-  return _mm_srli_pi16(a, 3);
-}
-
-__m64 test71(__m64 a) {
-  // CHECK: psrld
-  return _mm_srli_pi32(a, 3);
-}
-
-__m64 test72(__m64 a) {
-  // CHECK: psrlq
-  return _mm_srli_si64(a, 3);
-}
-
-__m64 test73(__m64 a) {
-  // CHECK: psraw
-  return _mm_srai_pi16(a, 3);
-}
-
-__m64 test74(__m64 a) {
-  // CHECK: psrad
-  return _mm_srai_pi32(a, 3);
-}
-
-__m64 test75(__m64 a, __m64 b) {
-  // CHECK: packsswb
-  return _mm_packs_pi16(a, b);
-}
-
-__m64 test76(__m64 a, __m64 b) {
-  // CHECK: packssdw
-  return _mm_packs_pi32(a, b);
-}
-
-__m64 test77(__m64 a, __m64 b) {
-  // CHECK: packuswb
-  return _mm_packs_pu16(a, b);
-}
-
-__m64 test78(__m64 a, __m64 b) {
-  // CHECK: punpckhbw
-  return _mm_unpackhi_pi8(a, b);
-}
-
-__m64 test79(__m64 a, __m64 b) {
-  // CHECK: punpckhwd
-  return _mm_unpackhi_pi16(a, b);
-}
-
-__m64 test80(__m64 a, __m64 b) {
-  // CHECK: punpckhdq
-  return _mm_unpackhi_pi32(a, b);
-}
-
-__m64 test81(__m64 a, __m64 b) {
-  // CHECK: punpcklbw
-  return _mm_unpacklo_pi8(a, b);
-}
-
-__m64 test82(__m64 a, __m64 b) {
-  // CHECK: punpcklwd
-  return _mm_unpacklo_pi16(a, b);
-}
-
-__m64 test83(__m64 a, __m64 b) {
-  // CHECK: punpckldq
-  return _mm_unpacklo_pi32(a, b);
-}
-
-__m64 test84(__m64 a, __m64 b) {
-  // CHECK: pcmpeqb
-  return _mm_cmpeq_pi8(a, b);
-}
-
-__m64 test85(__m64 a, __m64 b) {
-  // CHECK: pcmpeqw
-  return _mm_cmpeq_pi16(a, b);
-}
-
-__m64 test86(__m64 a, __m64 b) {
-  // CHECK: pcmpeqd
-  return _mm_cmpeq_pi32(a, b);
-}
-
-__m64 test87(__m64 a, __m64 b) {
-  // CHECK: pcmpgtb
-  return _mm_cmpgt_pi8(a, b);
-}
-
-__m64 test88(__m64 a, __m64 b) {
-  // CHECK: pcmpgtw
-  return _mm_cmpgt_pi16(a, b);
-}
-
-__m64 test89(__m64 a, __m64 b) {
-  // CHECK: pcmpgtd
-  return _mm_cmpgt_pi32(a, b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang -mmmx -target i386-unknown-unknown -emit-llvm -S %s -o - | FileCheck %s
-// <rdar://problem/9091220>
-#include <mmintrin.h>
-
-// CHECK: { x86_mmx, x86_mmx, x86_mmx, x86_mmx, x86_mmx, x86_mmx, x86_mmx }
-
-void foo(long long fill) {
-  __m64 vfill = _mm_cvtsi64_m64(fill);
-  __m64 v1, v2, v3, v4, v5, v6, v7;
-
-  __asm__ __volatile__ (
-    "\tmovq  %7, %0\n"
-    "\tmovq  %7, %1\n"
-    "\tmovq  %7, %2\n"
-    "\tmovq  %7, %3\n"
-    "\tmovq  %7, %4\n"
-    "\tmovq  %7, %5\n"
-    "\tmovq  %7, %6"
-    : "=&y" (v1), "=&y" (v2), "=&y" (v3),
-      "=&y" (v4), "=&y" (v5), "=&y" (v6), "=y" (v7)
-    : "y" (vfill));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-shift-with-immediate.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-shift-with-immediate.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mmx-shift-with-immediate.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang -mmmx -target i386-unknown-unknown -emit-llvm -S %s -o - | FileCheck %s
-#include <mmintrin.h>
-
-void shift(__m64 a, __m64 b, int c) {
-  // CHECK: x86_mmx @llvm.x86.mmx.pslli.w(x86_mmx %{{.*}}, i32 {{.*}})
-  _mm_slli_pi16(a, c);
-  // CHECK: x86_mmx @llvm.x86.mmx.pslli.d(x86_mmx %{{.*}}, i32 {{.*}})
-  _mm_slli_pi32(a, c);
-  // CHECK: x86_mmx @llvm.x86.mmx.pslli.q(x86_mmx %{{.*}}, i32 {{.*}})
-  _mm_slli_si64(a, c);
-
-  // CHECK: x86_mmx @llvm.x86.mmx.psrli.w(x86_mmx %{{.*}}, i32 {{.*}})
-  _mm_srli_pi16(a, c);
-  // CHECK: x86_mmx @llvm.x86.mmx.psrli.d(x86_mmx %{{.*}}, i32 {{.*}})
-  _mm_srli_pi32(a, c);
-  // CHECK: x86_mmx @llvm.x86.mmx.psrli.q(x86_mmx %{{.*}}, i32 {{.*}})
-  _mm_srli_si64(a, c);
-
-  // CHECK: x86_mmx @llvm.x86.mmx.psrai.w(x86_mmx %{{.*}}, i32 {{.*}})
-  _mm_srai_pi16(a, c);
-  // CHECK: x86_mmx @llvm.x86.mmx.psrai.d(x86_mmx %{{.*}}, i32 {{.*}})
-  _mm_srai_pi32(a, c);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mrtd.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mrtd.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mrtd.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -mrtd -triple i386-unknown-freebsd9.0 -emit-llvm -o - %s | FileCheck %s
-
-void baz(int arg);
-
-// CHECK: define x86_stdcallcc void @foo(i32 %arg) [[NUW:#[0-9]+]]
-void foo(int arg) {
-// CHECK: call x86_stdcallcc i32 bitcast (i32 (...)* @bar to i32 (i32)*)(
-  bar(arg);
-// CHECK: call x86_stdcallcc void @baz(i32
-  baz(arg);
-}
-
-// CHECK: declare x86_stdcallcc i32 @bar(...)
-
-// CHECK: declare x86_stdcallcc void @baz(i32)
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms-anonymous-struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms-anonymous-struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms-anonymous-struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: %struct.test = type { i32, %struct.nested2, i32 }
-// CHECK: %struct.nested2 = type { i32, %struct.nested1, i32 }
-// CHECK: %struct.nested1 = type { i32, i32 }
-typedef struct nested1 {
-    int a1;
-    int b1;
-} NESTED1;
-
-struct nested2 {
-    int a;
-    NESTED1; 
-    int b;
-};
-
-struct test {
-    int    x;
-    struct nested2; 
-    int    y;
-};
-
-
-void foo()
-{
-  // CHECK: %var = alloca %struct.test, align 4
-  struct test var;
-
-  // CHECK: getelementptr inbounds %struct.test* %var, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested2* %{{.*}}, i32 0, i32 0
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var.a;
-
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %var, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested2* %{{.*}}, i32 0, i32 2
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var.b;
-
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %var, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested2* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested1* %{{.*}}, i32 0, i32 0
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var.a1;
-
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %{{.*}}var, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested2* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested1* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var.b1;
-
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %var, i32 0, i32 0
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var.x;
-
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %var, i32 0, i32 2
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var.y;
-}
-
-void foo2(struct test* var)
-{
-  // CHECK: alloca %struct.test*, align
-  // CHECK-NEXT: store %struct.test* %var, %struct.test** %{{.*}}, align
-  // CHECK-NEXT: load %struct.test** %{{.*}}, align
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested2* %{{.*}}, i32 0, i32 0
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var->a;
-
-  // CHECK-NEXT: load %struct.test** %{{.*}}, align
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested2* %{{.*}}, i32 0, i32 2
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var->b;
-
-  // CHECK-NEXT: load %struct.test** %{{.*}}, align
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested2* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested1* %{{.*}}, i32 0, i32 0
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var->a1;
-
-  // CHECK-NEXT: load %struct.test** %{{.*}}, align
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested2* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: getelementptr inbounds %struct.nested1* %{{.*}}, i32 0, i32 1
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var->b1;
-
-  // CHECK-NEXT: load %struct.test** %{{.*}}, align
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %{{.*}}, i32 0, i32 0
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var->x;
-
-  // CHECK-NEXT: load %struct.test** %{{.*}}, align
-  // CHECK-NEXT: getelementptr inbounds %struct.test* %{{.*}}, i32 0, i32 2
-  // CHECK-NEXT: load i32* %{{.*}}, align 4
-  var->y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms-declspecs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms-declspecs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms-declspecs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-win32 %s -emit-llvm -fms-compatibility -o - | FileCheck %s
-
-struct __declspec(align(16)) S {
-  char x;
-};
-union { struct S s; } u;
-
-// CHECK: @u = {{.*}}zeroinitializer, align 16
-
-
-// CHECK: define void @t3() [[NAKED:#[0-9]+]] {
-__declspec(naked) void t3() {}
-
-// CHECK: define void @t22() [[NUW:#[0-9]+]]
-void __declspec(nothrow) t22();
-void t22() {}
-
-// CHECK: define void @t2() [[NI:#[0-9]+]] {
-__declspec(noinline) void t2() {}
-
-// CHECK: call void @f20_t() [[NR:#[0-9]+]]
-__declspec(noreturn) void f20_t(void);
-void f20(void) { f20_t(); }
-
-// CHECK: attributes [[NAKED]] = { naked noinline nounwind{{.*}} }
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
-// CHECK: attributes [[NI]] = { noinline nounwind{{.*}} }
-// CHECK: attributes [[NR]] = { noreturn }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm-64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm-64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm-64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -O0 -fasm-blocks -emit-llvm -o - | FileCheck %s
-
-void t1() {
-  int var = 10;
-  __asm mov rax, offset var ; rax = address of myvar
-// CHECK: t1
-// CHECK: call void asm sideeffect inteldialect "mov rax, $0", "r,~{rax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-}
-
-void t2() {
-  int var = 10;
-  __asm mov [eax], offset var
-// CHECK: t2
-// CHECK: call void asm sideeffect inteldialect "mov [eax], $0", "r,~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-}
-
-struct t3_type { int a, b; };
-
-int t3() {
-  struct t3_type foo;
-  foo.a = 1;
-  foo.b = 2;
-  __asm {
-     lea ebx, foo
-     mov eax, [ebx].0
-     mov [ebx].4, ecx
-  }
-  return foo.b;
-// CHECK: t3
-// CHECK: call void asm sideeffect inteldialect "lea ebx, qword ptr $0\0A\09mov eax, [ebx].0\0A\09mov [ebx].4, ecx", "*m,~{eax},~{ebx},~{dirflag},~{fpsr},~{flags}"(%struct.t3_type* %{{.*}})
-}
-
-int t4() {
-  struct t3_type foo;
-  foo.a = 1;
-  foo.b = 2;
-  __asm {
-     lea ebx, foo
-     mov eax, [ebx].foo.a
-     mov [ebx].foo.b, ecx
-  }
-  return foo.b;
-// CHECK: t4
-// CHECK: call void asm sideeffect inteldialect "lea ebx, qword ptr $0\0A\09mov eax, [ebx].0\0A\09mov [ebx].4, ecx", "*m,~{eax},~{ebx},~{dirflag},~{fpsr},~{flags}"(%struct.t3_type* %{{.*}})
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,440 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 %s -triple i386-apple-darwin10 -O0 -fasm-blocks -emit-llvm -o - | FileCheck %s
-
-void t1() {
-// CHECK: @t1
-// CHECK: call void asm sideeffect inteldialect "", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: ret void
-  __asm {}
-}
-
-void t2() {
-// CHECK: @t2
-// CHECK: call void asm sideeffect inteldialect "nop", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "nop", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "nop", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: ret void
-  __asm nop
-  __asm nop
-  __asm nop
-}
-
-void t3() {
-// CHECK: @t3
-// CHECK: call void asm sideeffect inteldialect "nop\0A\09nop\0A\09nop", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: ret void
-  __asm nop __asm nop __asm nop
-}
-
-void t4(void) {
-// CHECK: @t4
-// CHECK: call void asm sideeffect inteldialect "mov ebx, eax", "~{ebx},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov ecx, ebx", "~{ecx},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: ret void
-  __asm mov ebx, eax
-  __asm mov ecx, ebx
-}
-
-void t5(void) {
-// CHECK: @t5
-// CHECK: call void asm sideeffect inteldialect "mov ebx, eax\0A\09mov ecx, ebx", "~{ebx},~{ecx},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: ret void
-  __asm mov ebx, eax __asm mov ecx, ebx
-}
-
-void t6(void) {
-  __asm int 0x2c
-// CHECK: t6
-// CHECK: call void asm sideeffect inteldialect "int $$0x2c", "~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t7() {
-  __asm {
-    int 0x2c ; } asm comments are fun! }{
-  }
-  __asm {}
-// CHECK: t7
-// CHECK: call void asm sideeffect inteldialect "int $$0x2c", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "", "~{dirflag},~{fpsr},~{flags}"()
-}
-
-int t8() {
-  __asm int 4 ; } comments for single-line asm
-  __asm {}
-  __asm int 4
-  return 10;
-// CHECK: t8
-// CHECK: call void asm sideeffect inteldialect "int $$4", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "int $$4", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: ret i32 10
-}
-
-void t9() {
-  __asm {
-    push ebx
-    mov ebx, 0x07
-    pop ebx
-  }
-// CHECK: t9
-// CHECK: call void asm sideeffect inteldialect "push ebx\0A\09mov ebx, $$0x07\0A\09pop ebx", "~{ebx},~{dirflag},~{fpsr},~{flags}"()
-}
-
-unsigned t10(void) {
-  unsigned i = 1, j;
-  __asm {
-    mov eax, i
-    mov j, eax
-  }
-  return j;
-// CHECK: t10
-// CHECK: [[I:%[a-zA-Z0-9]+]] = alloca i32, align 4
-// CHECK: [[J:%[a-zA-Z0-9]+]] = alloca i32, align 4
-// CHECK: store i32 1, i32* [[I]], align 4
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $1\0A\09mov dword ptr $0, eax", "=*m,*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}}, i32* %{{.*}})
-// CHECK: [[RET:%[a-zA-Z0-9]+]] = load i32* [[J]], align 4
-// CHECK: ret i32 [[RET]]
-}
-
-void t11(void) {
-  __asm mov eax, 1
-// CHECK: t11
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-}
-
-unsigned t12(void) {
-  unsigned i = 1, j, l = 1, m;
-  __asm {
-    mov eax, i
-    mov j, eax
-    mov eax, l
-    mov m, eax
-  }
-  return j + m;
-// CHECK: t12
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $2\0A\09mov dword ptr $0, eax\0A\09mov eax, dword ptr $3\0A\09mov dword ptr $1, eax", "=*m,=*m,*m,*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}}, i32* %{{.*}}, i32* %{{.*}}, i32* %{{.*}})
-}
-
-void t13() {
-  char i = 1;
-  short j = 2;
-  __asm movzx eax, i
-  __asm movzx eax, j
-// CHECK: t13
-// CHECK: call void asm sideeffect inteldialect "movzx eax, byte ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i8* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "movzx eax, word ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i16* %{{.*}})
-}
-
-void t14() {
-  unsigned i = 1, j = 2;
-  __asm {
-    .if 1
-    mov eax, i
-    .else
-    mov ebx, j
-    .endif
-  }
-// CHECK: t14
-// CHECK: call void asm sideeffect inteldialect ".if 1\0A\09mov eax, dword ptr $0\0A\09.else\0A\09mov ebx, j\0A\09.endif", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-}
-
-int gvar = 10;
-void t15() {
-  int lvar = 10;
-  __asm mov eax, lvar        ; eax = 10
-  __asm mov eax, offset lvar ; eax = address of lvar
-  __asm mov eax, offset gvar ; eax = address of gvar
-// CHECK: t15
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, $0", "r,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, $0", "r,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* @{{.*}})
-}
-
-void t16() {
-  int var = 10;
-  __asm mov [eax], offset var
-// CHECK: t16
-// CHECK: call void asm sideeffect inteldialect "mov [eax], $0", "r,~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-}
-
-void t17() {
-  __asm _emit 0x4A
-  __asm _emit 0x43
-  __asm _emit 0x4B
-  __asm _EMIT 0x4B
-// CHECK: t17
-// CHECK:  call void asm sideeffect inteldialect ".byte 0x4A", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK:  call void asm sideeffect inteldialect ".byte 0x43", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK:  call void asm sideeffect inteldialect ".byte 0x4B", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK:  call void asm sideeffect inteldialect ".byte 0x4B", "~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t20() {
-  char bar;
-  int foo;
-  char _bar[2];
-  int _foo[4];
-
-  __asm mov eax, LENGTH foo
-  __asm mov eax, LENGTH bar
-  __asm mov eax, LENGTH _foo
-  __asm mov eax, LENGTH _bar
-// CHECK: t20
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$2", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-
-  __asm mov eax, TYPE foo
-  __asm mov eax, TYPE bar
-  __asm mov eax, TYPE _foo
-  __asm mov eax, TYPE _bar
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-
-  __asm mov eax, SIZE foo
-  __asm mov eax, SIZE bar
-  __asm mov eax, SIZE _foo
-  __asm mov eax, SIZE _bar
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$16", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$2", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t21() {
-  __asm {
-    __asm push ebx
-    __asm mov ebx, 0x07
-    __asm pop ebx
-  }
-// CHECK: t21
-// CHECK: call void asm sideeffect inteldialect "push ebx\0A\09mov ebx, $$0x07\0A\09pop ebx", "~{ebx},~{dirflag},~{fpsr},~{flags}"()
-}
-
-extern void t22_helper(int x);
-void t22() {
-  int x = 0;
-  __asm {
-    __asm push ebx
-    __asm mov ebx, esp
-  }
-  t22_helper(x);
-  __asm {
-    __asm mov esp, ebx
-    __asm pop ebx
-  }
-// CHECK: t22
-// CHECK: call void asm sideeffect inteldialect "push ebx\0A\09mov ebx, esp", "~{ebx},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void @t22_helper
-// CHECK: call void asm sideeffect inteldialect "mov esp, ebx\0A\09pop ebx", "~{ebx},~{esp},~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t23() {
-  __asm {
-  the_label:
-  }
-// CHECK: t23
-// CHECK: call void asm sideeffect inteldialect "the_label:", "~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t24_helper(void) {}
-void t24() {
-  __asm call t24_helper
-// CHECK: t24
-// CHECK: call void asm sideeffect inteldialect "call $0", "r,~{dirflag},~{fpsr},~{flags}"(void ()* @t24_helper)
-}
-
-void t25() {
-  __asm mov eax, 0ffffffffh
-  __asm mov eax, 0fh
-  __asm mov eax, 0a2h
-  __asm mov eax, 0xa2h
-  __asm mov eax, 0xa2
-// CHECK: t25
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4294967295", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$15", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$162", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$0xa2h", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$0xa2", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t26() {
-  __asm pushad
-  __asm mov eax, 0
-  __asm __emit 0fh
-  __asm __emit 0a2h
-  __asm __EMIT 0a2h
-  __asm popad
-// CHECK: t26
-// CHECK: call void asm sideeffect inteldialect "pushad", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$0", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect ".byte 0fh", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect ".byte 0a2h", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect ".byte 0a2h", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "popad", "~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t27() {
-  __asm mov eax, fs:[0h]
-// CHECK: t27
-// CHECK: call void asm sideeffect inteldialect "mov eax, fs:[$$0h]", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t28() {
-  __asm align 8
-  __asm align 16;
-  __asm align 128;
-  __asm ALIGN 256;
-// CHECK: t28
-// CHECK: call void asm sideeffect inteldialect ".align 3", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect ".align 4", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect ".align 7", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect ".align 8", "~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t29() {
-  int arr[2] = {0, 0};
-  int olen = 0, osize = 0, otype = 0;
-  __asm mov olen, LENGTH arr
-  __asm mov osize, SIZE arr
-  __asm mov otype, TYPE arr
-// CHECK: t29
-// CHECK: call void asm sideeffect inteldialect "mov dword ptr $0, $$2", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov dword ptr $0, $$8", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov dword ptr $0, $$4", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-}
-
-int results[2] = {13, 37};
-int *t30()
-{
-  int *res;
-  __asm lea edi, results
-  __asm mov res, edi
-  return res;
-// CHECK: t30
-// CHECK: call void asm sideeffect inteldialect "lea edi, dword ptr $0", "*m,~{edi},~{dirflag},~{fpsr},~{flags}"([2 x i32]* @{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov dword ptr $0, edi", "=*m,~{dirflag},~{fpsr},~{flags}"(i32** %{{.*}})
-}
-
-void t31() {
-  __asm pushad
-  __asm popad
-// CHECK: t31
-// CHECK: call void asm sideeffect inteldialect "pushad", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "popad", "~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t32() {
-  int i;
-  __asm mov eax, i
-  __asm mov eax, dword ptr i
-  __asm mov ax, word ptr i
-  __asm mov al, byte ptr i
-// CHECK: t32
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov ax, word ptr $0", "*m,~{ax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov al, byte ptr $0", "*m,~{al},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-}
-
-void t33() {
-  int i;
-  __asm mov eax, [i]
-  __asm mov eax, dword ptr [i]
-  __asm mov ax, word ptr [i]
-  __asm mov al, byte ptr [i]
-// CHECK: t33
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov ax, word ptr $0", "*m,~{ax},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov al, byte ptr $0", "*m,~{al},~{dirflag},~{fpsr},~{flags}"(i32* %{{.*}})
-}
-
-void t34() {
-  __asm prefetchnta 64[eax]
-  __asm mov eax, dword ptr 4[eax]
-// CHECK: t34
-// CHECK: call void asm sideeffect inteldialect "prefetchnta $$64[eax]", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$4[eax]", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t35() {
-  __asm prefetchnta [eax + (200*64)]
-  __asm mov eax, dword ptr [eax + (200*64)]
-// CHECK: t35
-// CHECK: call void asm sideeffect inteldialect "prefetchnta [eax + ($$200*$$64)]", "~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr [eax + ($$200*$$64)]", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t36() {
-  int arr[4];
-  __asm mov eax, 4[arr]
-  __asm mov eax, 4[arr + 4]
-  __asm mov eax, 8[arr + 4 + 32*2 - 4]
-  __asm mov eax, 12[4 + arr]
-  __asm mov eax, 4[4 + arr + 4]
-  __asm mov eax, 4[64 + arr + (2*32)]
-  __asm mov eax, 4[64 + arr - 2*32]
-  __asm mov eax, [arr + 4]
-  __asm mov eax, [arr + 4 + 32*2 - 4]
-  __asm mov eax, [4 + arr]
-  __asm mov eax, [4 + arr + 4]
-  __asm mov eax, [64 + arr + (2*32)]
-  __asm mov eax, [64 + arr - 2*32]
-// CHECK: t36
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$4$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$8$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$72$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$16$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$12$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$132$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$4$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$4$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$64$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$4$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$8$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$128$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-}
-
-void t37() {
-  __asm mov eax, 4 + 8
-  __asm mov eax, 4 + 8 * 16
-  __asm mov eax, -4 + 8 * 16
-  __asm mov eax, (4 + 4) * 16
-  __asm mov eax, 4 + 8 * -16
-  __asm mov eax, 4 + 16 / -8
-  __asm mov eax, (16 + 16) / -8
-// CHECK: t37
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$12", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$132", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$124", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$128", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4294967172", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$2", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4294967292", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-}
-
-void t38() {
-  int arr[4];
-  __asm mov eax, 4+4[arr]
-  __asm mov eax, (4+4)[arr + 4]
-  __asm mov eax, 8*2[arr + 4 + 32*2 - 4]
-  __asm mov eax, 12+20[4 + arr]
-  __asm mov eax, 4*16+4[4 + arr + 4]
-  __asm mov eax, 4*4[64 + arr + (2*32)]
-  __asm mov eax, 4*(4-2)[64 + arr - 2*32]
-  __asm mov eax, 32*(4-2)[arr - 2*32]
-// CHECK: t38
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$8$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$12$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$80$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$36$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$76$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$144$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$8$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $$0$0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"([4 x i32]* %{{.*}})
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms-inline-asm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,105 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -x c++ %s -triple i386-apple-darwin10 -O0 -fasm-blocks -emit-llvm -o - | FileCheck %s
-
-// rdar://13645930
-
-struct Foo {
-  static int *ptr;
-  static int a, b;
-  int arr[4];
-  struct Bar {
-    static int *ptr;
-    char arr[2];
-  };
-};
-
-void t1() {
-  Foo::ptr = (int *)0xDEADBEEF;
-  Foo::Bar::ptr = (int *)0xDEADBEEF;
-  __asm mov eax, Foo ::ptr
-  __asm mov eax, Foo :: Bar :: ptr
-  __asm mov eax, [Foo:: ptr]
-  __asm mov eax, dword ptr [Foo :: ptr]
-  __asm mov eax, dword ptr [Foo :: ptr]
-// CHECK: @_Z2t1v
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32** @_ZN3Foo3ptrE)
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32** @_ZN3Foo3Bar3ptrE)
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32** @_ZN3Foo3ptrE)
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32** @_ZN3Foo3ptrE)
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32** @_ZN3Foo3ptrE)
-}
-
-int gvar = 10;
-void t2() {
-  int lvar = 10;
-  __asm mov eax, offset Foo::ptr
-  __asm mov eax, offset Foo::Bar::ptr
-// CHECK: t2
-// CHECK: call void asm sideeffect inteldialect "mov eax, $0", "r,~{eax},~{dirflag},~{fpsr},~{flags}"(i32** @_ZN3Foo3ptrE)
-// CHECK: call void asm sideeffect inteldialect "mov eax, $0", "r,~{eax},~{dirflag},~{fpsr},~{flags}"(i32** @_ZN3Foo3Bar3ptrE)
-}
-
-// CHECK: define void @_Z2t3v()
-void t3() {
-  __asm mov eax, LENGTH Foo::ptr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, LENGTH Foo::Bar::ptr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, LENGTH Foo::arr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, LENGTH Foo::Bar::arr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$2", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-
-  __asm mov eax, TYPE Foo::ptr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, TYPE Foo::Bar::ptr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, TYPE Foo::arr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, TYPE Foo::Bar::arr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$1", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-
-  __asm mov eax, SIZE Foo::ptr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, SIZE Foo::Bar::ptr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$4", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, SIZE Foo::arr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$16", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-  __asm mov eax, SIZE Foo::Bar::arr
-// CHECK: call void asm sideeffect inteldialect "mov eax, $$2", "~{eax},~{dirflag},~{fpsr},~{flags}"()
-
-}
-
-struct T4 {
-  int x;
-  static int y;
-  void test();
-};
-
-// CHECK: define void @_ZN2T44testEv(
-void T4::test() {
-// CHECK: [[T0:%.*]] = alloca [[T4:%.*]]*,
-// CHECK: [[THIS:%.*]] = load [[T4]]** [[T0]]
-// CHECK: [[X:%.*]] = getelementptr inbounds [[T4]]* [[THIS]], i32 0, i32 0
-  __asm mov eax, x;
-// CHECK: call void asm sideeffect inteldialect "mov eax, dword ptr $0", "*m,~{eax},~{dirflag},~{fpsr},~{flags}"(i32* [[X]])
-  __asm mov y, eax;
-// CHECK: call void asm sideeffect inteldialect "mov dword ptr $0, eax", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* @_ZN2T41yE)
-}
-
-template <class T> struct T5 {
-  template <class U> static T create(U);
-  void run();
-};
-// CHECK: define void @_Z5test5v()
-void test5() {
-  // CHECK: [[X:%.*]] = alloca i32
-  // CHECK: [[Y:%.*]] = alloca i32
-  int x, y;
-  __asm push y
-  // CHECK: call void asm sideeffect inteldialect "push dword ptr $0", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* [[Y]])
-  __asm call T5<int>::create<float>
-  // CHECK: call void asm sideeffect inteldialect "call $0", "r,~{dirflag},~{fpsr},~{flags}"(i32 (float)* @_ZN2T5IiE6createIfEEiT_)
-  __asm mov x, eax
-  // CHECK: call void asm sideeffect inteldialect "mov dword ptr $0, eax", "=*m,~{dirflag},~{fpsr},~{flags}"(i32* [[X]])
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only  -triple x86_64-apple-darwin9 %s
-// rdar://8823265
-
-#define ATTR __attribute__((__ms_struct__))
-
-struct {
-  unsigned int bf_1 : 12;
-  unsigned int : 0;
-  unsigned int bf_2 : 12;
-} ATTR t1;
-static int a1[(sizeof(t1) == 8) -1];
-
-struct
-{
-  char foo : 4;
-  short : 0;
-  char bar;
-} ATTR t2;
-static int a2[(sizeof(t2) == 4) -1];
-
-#pragma ms_struct on
-struct
-{
-  char foo : 4;
-  short : 0;
-  char bar;
-} t3;
-#pragma ms_struct off
-static int a3[(sizeof(t3) == 4) -1];
-
-struct
-{
-  char foo : 6;
-  long : 0;
-} ATTR t4;
-static int a4[(sizeof(t4) == 8) -1];
-
-struct
-{
-  char foo : 4;
-  short : 0;
-  char bar : 8;
-} ATTR t5;
-static int a5[(sizeof(t5) == 4) -1];
-
-struct
-{
-  char foo : 4;
-  short : 0;
-  long  : 0;
-  char bar;
-} ATTR t6;
-static int a6[(sizeof(t6) == 4) -1];
-
-struct
-{
-  char foo : 4;
-  long  : 0;
-  short : 0;
-  char bar;
-} ATTR t7;
-static int a7[(sizeof(t7) == 16) -1];
-
-struct
-{
-  char foo : 4;
-  short : 0;
-  long  : 0;
-  char bar:7;
-} ATTR t8;
-static int a8[(sizeof(t8) == 4) -1];
-
-struct
-{
-  char foo : 4;
-  long  : 0;
-  short : 0;
-  char bar: 8;
-} ATTR t9;
-static int a9[(sizeof(t9) == 16) -1];
-
-struct
-{
-  char foo : 4;
-  char : 0;
-  short : 0;
-  int : 0;
-  long  :0;
-  char bar;
-} ATTR t10;
-static int a10[(sizeof(t10) == 2) -1];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only  -triple x86_64-apple-darwin9 %s
-// rdar://8823265
-
-#define ATTR __attribute__((__ms_struct__))
-
-#define size_struct_0 1
-#define size_struct_1 4
-#define size_struct_2 24
-#define size_struct_3 8
-#define size_struct_4 32
-#define size_struct_5 12
-#define size_struct_6 40
-#define size_struct_7 8
-#define size_struct_8 20
-#define size_struct_9 32
-
-struct _struct_0
-{
-  char member_0;
-} ATTR;
-typedef struct _struct_0 struct_0;
-
-struct _struct_1
-{
-  char member_0;
-  short member_1:13;
-} ATTR;
-typedef struct _struct_1 struct_1;
-
-struct _struct_2
-{
-  double member_0;
-  unsigned char member_1:8;
-  int member_2:32;
-  unsigned char member_3:5;
-  short member_4:14;
-  short member_5:13;
-  unsigned char:0;
-} ATTR;
-typedef struct _struct_2 struct_2;
-
-struct _struct_3
-{
-  unsigned int member_0:26;
-  unsigned char member_1:2;
-
-} ATTR;
-typedef struct _struct_3 struct_3;
-
-struct _struct_4
-{
-  unsigned char member_0:7;
-  double member_1;
-  double member_2;
-  short member_3:5;
-  char member_4:2;
-
-} ATTR;
-typedef struct _struct_4 struct_4;
-
-struct _struct_5
-{
-  unsigned short member_0:12;
-  int member_1:1;
-  unsigned short member_2:6;
-
-} ATTR;
-typedef struct _struct_5 struct_5;
-
-struct _struct_6
-{
-  unsigned char member_0:7;
-  unsigned int member_1:25;
-  char member_2:1;
-  double member_3;
-  short member_4:9;
-  double member_5;
-
-} ATTR;
-typedef struct _struct_6 struct_6;
-
-struct _struct_7
-{
-  double member_0;
-
-} ATTR;
-typedef struct _struct_7 struct_7;
-
-struct _struct_8
-{
-  unsigned char member_0:7;
-  int member_1:11;
-  int member_2:5;
-  int:0;
-  char member_4:8;
-  unsigned short member_5:4;
-  unsigned char member_6:3;
-  int member_7:23;
-
-} ATTR;
-typedef struct _struct_8 struct_8;
-
-struct _struct_9
-{
-  double member_0;
-  unsigned int member_1:6;
-  int member_2:17;
-  double member_3;
-  unsigned int member_4:22;
-
-} ATTR;
-typedef struct _struct_9 struct_9;
-
-struct_0 test_struct_0 = { 123 };
-struct_1 test_struct_1 = { 82, 1081 };
-struct_2 test_struct_2 = { 20.0, 31, 407760, 1, 14916, 6712 };
-struct_3 test_struct_3 = { 64616999, 1 };
-struct_4 test_struct_4 = { 61, 20.0, 20.0, 12, 0 };
-struct_5 test_struct_5 = { 909, 1, 57 };
-struct_6 test_struct_6 = { 12, 21355796, 0, 20.0, 467, 20.0 };
-struct_7 test_struct_7 = { 20.0 };
-struct_8 test_struct_8 = { 126, 1821, 22, 125, 6, 0, 2432638 };
-struct_9 test_struct_9 = { 20.0, 3, 23957, 20.0, 1001631 };
-
-
-static int a0[(sizeof (struct_0) == size_struct_0) -1];
-static int a1[(sizeof (struct_1) == size_struct_1) -1];
-static int a2[(sizeof (struct_2) == size_struct_2) -1];
-static int a3[(sizeof (struct_3) == size_struct_3) -1];
-static int a4[(sizeof (struct_4) == size_struct_4) -1];
-static int a5[(sizeof (struct_5) == size_struct_5) -1];
-static int a6[(sizeof (struct_6) == size_struct_6) -1];
-static int a7[(sizeof (struct_7) == size_struct_7) -1];
-static int a8[(sizeof (struct_8) == size_struct_8) -1];
-static int a9[(sizeof (struct_9) == size_struct_9) -1];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only  -triple i386-apple-darwin9 %s
-// rdar://8823265
-
-#define ATTR __attribute__((__ms_struct__))
-
-struct _struct_0
-{
-  int  member_0   : 25 ;
-  short  member_1   : 6 ;
-  char  member_2   : 2 ;
-  unsigned  short  member_3   : 1 ;
-  unsigned  char  member_4   : 7 ;
-  short  member_5   : 16 ;
-  int  : 0 ;
-  char  member_7  ;
-
-} ATTR;
-
-typedef struct _struct_0 struct_0;
-
-#define size_struct_0 20
-
-struct_0 test_struct_0 = { 18557917, 17, 3, 0, 80, 6487, 93 };
-static int a[(size_struct_0 == sizeof (struct_0)) -1];
-
-struct _struct_1 {
-  int d;
-  unsigned char a;
-  unsigned short b:7;
-  char c;
-} ATTR;
-
-typedef struct _struct_1 struct_1;
-
-#define size_struct_1 12
-
-struct_1 test_struct_1 = { 18557917, 'a', 3, 'b' };
-
-static int a1[(size_struct_1 == sizeof (struct_1)) -1];
-
-struct ten {
-  long long a:3;
-  long long b:3;
-  char c;
-} __attribute__ ((ms_struct));
-
-#define size_struct_2 16
-
-static int a2[(size_struct_2 == sizeof (struct ten)) -1];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only  -triple x86_64-apple-darwin9 %s
-// rdar://8823265
-
-extern void abort(void);
-#define ATTR __attribute__((__ms_struct__))
-
-struct
-{
-   char foo;
-   long : 0;
-   char : 0;
-   int : 0;
-   char bar;
-} ATTR t1 = {'a', 'b'};
-
-struct
-{
-   char bar0;
-   long : 0;
-   int : 0;
-   char bar1;
-   char bar2;
-   long : 0;
-   char bar3;
-   char bar4;
-   char : 0;
-   char bar5;
-   char bar6;
-   char : 0;
-   char bar7;
-   char bar8;
-} ATTR t2 = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'};
-
-struct {
-  int : 0;
-  int i1;
-  int : 0;
-  int i2;
-  int : 0;
-  int i3;
-  int : 0;
-  int i4;
-} t3 = {1,2,3,4};
-
-int main() {
-  if (sizeof(t1) != 2)
-    abort();
-  if (t1.foo != 'a')
-    abort();
-  if (t1.bar != 'b')
-    abort();
-  t1.foo = 'c';
-  t1.bar = 'd';
-  if (t1.foo != 'c')
-    abort();
-  if (t1.bar != 'd')
-    abort();
-  if (sizeof(t2) != 9)
-    abort();
-  if (t2.bar0 != 'a' || t2.bar8 != 'i')
-    abort();
-  if (sizeof(t3) != 16)
-    abort();
-  if (t3.i1 != 1 || t3.i4 != 4)
-    abort();
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-bitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,131 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only  -triple x86_64-apple-darwin9 %s
-// rdar://8823265
-
-#define ATTR __attribute__((__ms_struct__))
-
-struct
-{
-   char foo;
-   long : 0;
-   char bar;
-} ATTR t1;
-
-struct
-{
-   char foo;
-   long : 0;
-   char : 0;
-   int : 0;
-   char bar;
-} ATTR t2;
-
-struct
-{
-   char foo;
-   long : 0;
-   char : 0;
-   int : 0;
-   char bar;
-   long : 0;
-   char : 0;
-} ATTR t3;
-
-struct
-{
-   long : 0;
-   char bar;
-} ATTR t4;
-
-struct
-{
-   long : 0;
-   long : 0;
-   char : 0;
-   char bar;
-} ATTR t5;
-
-struct
-{
-   long : 0;
-   long : 0;
-   char : 0;
-   char bar;
-} ATTR t6;
-
-struct
-{
-   char foo;
-   long : 0;
-   int : 0;
-   char bar;
-   char bar1;
-   long : 0;
-   char bar2;
-   char bar3;
-   char : 0;
-   char bar4;
-   char bar5;
-   char : 0;
-   char bar6;
-   char bar7;
-} ATTR t7;
-
-struct
-{
-   long : 0;
-   long : 0;
-   char : 0;
-} ATTR t8;
-
-struct
-{
-   char foo;
-   long : 0;
-   int : 0;
-   char bar;
-   char bar1;
-   long : 0;
-   char bar2;
-   char bar3;
-   char : 0;
-   char bar4;
-   char bar5;
-   char : 0;
-   char bar6;
-   char bar7;
-   int  i1;
-   char : 0;
-   long : 0;
-   char :4;
-   char bar8;
-   char : 0;
-   char bar9;
-   char bar10;
-   int  i2;
-   char : 0;
-   long : 0;
-   char :4;
-} ATTR t9;
-
-struct
-{
-   char foo: 8;
-   long : 0;
-   char bar;
-} ATTR t10;
-
-static int arr1[(sizeof(t1) == 2) -1];
-static int arr2[(sizeof(t2) == 2) -1];
-static int arr3[(sizeof(t3) == 2) -1];
-static int arr4[(sizeof(t4) == 1) -1];
-static int arr5[(sizeof(t5) == 1) -1];
-static int arr6[(sizeof(t6) == 1) -1];
-static int arr7[(sizeof(t7) == 9) -1];
-static int arr8[(sizeof(t8) == 0) -1];
-static int arr9[(sizeof(t9) == 28) -1];
-static int arr10[(sizeof(t10) == 16) -1];
-
-int main() {
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-pack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-pack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct-pack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only  -triple i386-apple-darwin9 %s
-// rdar://8823265
-
-#pragma pack(1)
-struct _one_ms {
-        short m:9;      // size is 2
-        int q:27;       // size is 6
-        short w:13;     // size is 8
-        short e:3;      // size is 8
-        char r:4;       // size is 9
-        char t:7;       // size is 10
-        short y:16;     // size is 12
-        short u:1;      // size is 14
-        char i:2;       // size is 15
-        int a;          // size is 19
-        char o:6;       // size is 20
-        char s:2;       // size is 20
-        short d:10;     // size is 22
-        short f:4;      // size is 22
-        char b;         // size is 23
-        char g:1;       // size is 24
-        short h:13;     // size is 26
-        char j:8;       // size is 27
-        char k:5;       // size is 28
-        char c;         // size is 29
-        int l:28;       // size is 33
-        char z:7;       // size is 34
-        int x:20;       // size is 38
-} __attribute__((__ms_struct__));
-typedef struct _one_ms one_ms;
-
-static int a1[(sizeof(one_ms) == 38) - 1];
-
-#pragma pack(2)
-struct _two_ms {
-        short m:9;      
-        int q:27;       
-        short w:13;     
-        short e:3;      
-        char r:4;       
-        char t:7;       
-        short y:16;     
-        short u:1;      
-        char i:2;       
-        int a;          
-        char o:6;       
-        char s:2;       
-        short d:10;     
-        short f:4;      
-        char b;         
-        char g:1;       
-        short h:13;     
-        char j:8;       
-        char k:5;       
-        char c;         
-        int l:28;       
-        char z:7;       
-        int x:20;       
-} __attribute__((__ms_struct__));
-
-typedef struct _two_ms two_ms;
-
-static int a2[(sizeof(two_ms) == 42) - 1];
-
-#pragma pack(4)
-struct _four_ms {
-        short m:9;      
-        int q:27;       
-        short w:13;     
-        short e:3;      
-        char r:4;       
-        char t:7;       
-        short y:16;     
-        short u:1;      
-        char i:2;       
-        int a;          
-        char o:6;       
-        char s:2;       
-        short d:10;     
-        short f:4;      
-        char b;         
-        char g:1;       
-        short h:13;     
-        char j:8;       
-        char k:5;       
-        char c;         
-        int l:28;       
-        char z:7;       
-        int x:20;       
-} __attribute__((__ms_struct__));
-typedef struct _four_ms four_ms;
-
-static int a4[(sizeof(four_ms) == 48) - 1];
-
-#pragma pack(8)
-struct _eight_ms {
-        short m:9;      
-        int q:27;       
-        short w:13;     
-        short e:3;      
-        char r:4;       
-        char t:7;       
-        short y:16;     
-        short u:1;      
-        char i:2;       
-        int a;          
-        char o:6;       
-        char s:2;       
-        short d:10;     
-        short f:4;      
-        char b;         
-        char g:1;       
-        short h:13;     
-        char j:8;       
-        char k:5;       
-        char c;         
-        int l:28;       
-        char z:7;       
-        int x:20;       
-} __attribute__((__ms_struct__));
-
-typedef struct _eight_ms eight_ms;
-
-static int a8[(sizeof(eight_ms) == 48) - 1];
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ms_struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -emit-llvm %s -o - | FileCheck %s
-
-#define ATTR __attribute__((__ms_struct__))
-struct s1 {
-  int       f32;
-  long long f64;
-} ATTR s1;
-
-// CHECK: %struct.s1 = type { i32, [4 x i8], i64 }
-
-struct s2 {
-  int       f32;
-  long long f64[4];
-} ATTR s2;
-
-// CHECK: %struct.s2 = type { i32, [4 x i8], [4 x i64] }
-
-struct s3 {
-  int       f32;
-  struct s1 s;
-} ATTR s3;
-
-// CHECK: %struct.s3 = type { i32, [4 x i8], %struct.s1 }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mult-alt-generic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mult-alt-generic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mult-alt-generic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,282 +0,0 @@
-// RUN: %clang_cc1 -triple i686 %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64 %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple arm %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple mblaze %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple mips %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple mipsel %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple powerpc %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple powerpc64 %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple s390x %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple sparc %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple sparcv9 %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple thumb %s -emit-llvm -o - | FileCheck %s
-
-int mout0;
-int min1;
-int marray[2];
-
-// CHECK: @single_m
-void single_m()
-{
-  // CHECK: call void asm "foo $1,$0", "=*m,*m[[CLOBBERS:[a-zA-Z0-9@%{},~_ ]*\"]](i32* {{[a-zA-Z0-9@%]+}}, i32* {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=m" (mout0) : "m" (min1));
-}
-
-// CHECK: @single_o
-void single_o()
-{
-  register int out0 = 0;
-  register int index = 1;
-  // Doesn't really do an offset...
-  //asm("foo %1, %2,%0" : "=r" (out0) : "o" (min1));
-}
-
-// CHECK: @single_V
-void single_V()
-{
-//  asm("foo %1,%0" : "=m" (mout0) : "V" (min1));
-}
-
-// CHECK: @single_lt
-void single_lt()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r,<r[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : "<r" (in1));
-  // CHECK: call i32 asm "foo $1,$0", "=r,r<[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : "r<" (in1));
-}
-
-// CHECK: @single_gt
-void single_gt()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r,>r[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : ">r" (in1));
-  // CHECK: call i32 asm "foo $1,$0", "=r,r>[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : "r>" (in1));
-}
-
-// CHECK: @single_r
-void single_r()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r,r[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : "r" (in1));
-}
-
-// CHECK: @single_i
-void single_i()
-{
-  register int out0 = 0;
-  // CHECK: call i32 asm "foo $1,$0", "=r,i[[CLOBBERS]](i32 1)
-  asm("foo %1,%0" : "=r" (out0) : "i" (1));
-}
-
-// CHECK: @single_n
-void single_n()
-{
-  register int out0 = 0;
-  // CHECK: call i32 asm "foo $1,$0", "=r,n[[CLOBBERS]](i32 1)
-  asm("foo %1,%0" : "=r" (out0) : "n" (1));
-}
-
-// CHECK: @single_E
-void single_E()
-{
-  register double out0 = 0.0;
-  // CHECK: call double asm "foo $1,$0", "=r,E[[CLOBBERS]](double {{[0-9.eE+-]+}})
-  asm("foo %1,%0" : "=r" (out0) : "E" (1.0e+01));
-}
-
-// CHECK: @single_F
-void single_F()
-{
-  register double out0 = 0.0;
-  // CHECK: call double asm "foo $1,$0", "=r,F[[CLOBBERS]](double {{[0-9.eE+-]+}})
-  asm("foo %1,%0" : "=r" (out0) : "F" (1.0));
-}
-
-// CHECK: @single_s
-void single_s()
-{
-  register int out0 = 0;
-  //asm("foo %1,%0" : "=r" (out0) : "s" (single_s));
-}
-
-// CHECK: @single_g
-void single_g()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r,imr[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : "g" (in1));
-  // CHECK: call i32 asm "foo $1,$0", "=r,imr[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : "g" (min1));
-  // CHECK: call i32 asm "foo $1,$0", "=r,imr[[CLOBBERS]](i32 1)
-  asm("foo %1,%0" : "=r" (out0) : "g" (1));
-}
-
-// CHECK: @single_X
-void single_X()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r,X[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : "X" (in1));
-  // CHECK: call i32 asm "foo $1,$0", "=r,X[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r" (out0) : "X" (min1));
-  // CHECK: call i32 asm "foo $1,$0", "=r,X[[CLOBBERS]](i32 1)
-  asm("foo %1,%0" : "=r" (out0) : "X" (1));
-  // CHECK: call i32 asm "foo $1,$0", "=r,X[[CLOBBERS]](i32* getelementptr inbounds ([2 x i32]* {{[a-zA-Z0-9@%]+}}, i32 0, i32 0))
-  asm("foo %1,%0" : "=r" (out0) : "X" (marray));
-  // CHECK: call i32 asm "foo $1,$0", "=r,X[[CLOBBERS]](double {{[0-9.eE+-]+}})
-  asm("foo %1,%0" : "=r" (out0) : "X" (1.0e+01));
-  // CHECK: call i32 asm "foo $1,$0", "=r,X[[CLOBBERS]](double {{[0-9.eE+-]+}})
-  asm("foo %1,%0" : "=r" (out0) : "X" (1.0));
-}
-
-// CHECK: @single_p
-void single_p()
-{
-  register int out0 = 0;
-  // Constraint converted differently on different platforms moved to platform-specific.
-  // : call i32 asm "foo $1,$0", "=r,im[[CLOBBERS]](i32* getelementptr inbounds ([2 x i32]* {{[a-zA-Z0-9@%]+}}, i32 0, i32 0))
-  asm("foo %1,%0" : "=r" (out0) : "p" (marray));
-}
-
-// CHECK: @multi_m
-void multi_m()
-{
-  // CHECK: call void asm "foo $1,$0", "=*m|r,m|r[[CLOBBERS]](i32* {{[a-zA-Z0-9@%]+}}, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=m,r" (mout0) : "m,r" (min1));
-}
-
-// CHECK: @multi_o
-void multi_o()
-{
-  register int out0 = 0;
-  register int index = 1;
-  // Doesn't really do an offset...
-  //asm("foo %1, %2,%0" : "=r,r" (out0) : "r,o" (min1));
-}
-
-// CHECK: @multi_V
-void multi_V()
-{
-//  asm("foo %1,%0" : "=m,r" (mout0) : "r,V" (min1));
-}
-
-// CHECK: @multi_lt
-void multi_lt()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|<r[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,<r" (in1));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|r<[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,r<" (in1));
-}
-
-// CHECK: @multi_gt
-void multi_gt()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|>r[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,>r" (in1));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|r>[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,r>" (in1));
-}
-
-// CHECK: @multi_r
-void multi_r()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|m[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,m" (in1));
-}
-
-// CHECK: @multi_i
-void multi_i()
-{
-  register int out0 = 0;
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|i[[CLOBBERS]](i32 1)
-  asm("foo %1,%0" : "=r,r" (out0) : "r,i" (1));
-}
-
-// CHECK: @multi_n
-void multi_n()
-{
-  register int out0 = 0;
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|n[[CLOBBERS]](i32 1)
-  asm("foo %1,%0" : "=r,r" (out0) : "r,n" (1));
-}
-
-// CHECK: @multi_E
-void multi_E()
-{
-  register double out0 = 0.0;
-  // CHECK: call double asm "foo $1,$0", "=r|r,r|E[[CLOBBERS]](double {{[0-9.eE+-]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,E" (1.0e+01));
-}
-
-// CHECK: @multi_F
-void multi_F()
-{
-  register double out0 = 0.0;
-  // CHECK: call double asm "foo $1,$0", "=r|r,r|F[[CLOBBERS]](double {{[0-9.eE+-]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,F" (1.0));
-}
-
-// CHECK: @multi_s
-void multi_s()
-{
-  register int out0 = 0;
-  //asm("foo %1,%0" : "=r,r" (out0) : "r,s" (multi_s));
-}
-
-// CHECK: @multi_g
-void multi_g()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|imr[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,g" (in1));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|imr[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,g" (min1));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|imr[[CLOBBERS]](i32 1)
-  asm("foo %1,%0" : "=r,r" (out0) : "r,g" (1));
-}
-
-// CHECK: @multi_X
-void multi_X()
-{
-  register int out0 = 0;
-  register int in1 = 1;
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|X[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,X" (in1));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|X[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,X" (min1));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|X[[CLOBBERS]](i32 1)
-  asm("foo %1,%0" : "=r,r" (out0) : "r,X" (1));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|X[[CLOBBERS]](i32* getelementptr inbounds ([2 x i32]* {{[a-zA-Z0-9@%]+}}, i32 0, i32 0))
-  asm("foo %1,%0" : "=r,r" (out0) : "r,X" (marray));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|X[[CLOBBERS]](double {{[0-9.eE+-]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,X" (1.0e+01));
-  // CHECK: call i32 asm "foo $1,$0", "=r|r,r|X[[CLOBBERS]](double {{[0-9.eE+-]+}})
-  asm("foo %1,%0" : "=r,r" (out0) : "r,X" (1.0));
-}
-
-// CHECK: @multi_p
-void multi_p()
-{
-  register int out0 = 0;
-  // Constraint converted differently on different platforms moved to platform-specific.
-  // : call i32 asm "foo $1,$0", "=r|r,r|im[[CLOBBERS]](i32* getelementptr inbounds ([2 x i32]* {{[a-zA-Z0-9@%]+}}, i32 0, i32 0))
-  asm("foo %1,%0" : "=r,r" (out0) : "r,p" (marray));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/mult-alt-x86.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/mult-alt-x86.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/mult-alt-x86.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,374 +0,0 @@
-// RUN: %clang_cc1 -triple i686 -emit-llvm %s -o - | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64 -emit-llvm %s -o - | FileCheck %s
-
-int mout0;
-int min1;
-int marray[2];
-double dout0;
-double din1;
-
-// CHECK: @single_R
-void single_R()
-{
-  // CHECK: asm "foo $1,$0", "=R,R[[CLOBBERS:[a-zA-Z0-9@%{},~_ ]*\"]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=R" (mout0) : "R" (min1));
-}
-
-// CHECK: @single_q
-void single_q()
-{
-  // CHECK: asm "foo $1,$0", "=q,q[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=q" (mout0) : "q" (min1));
-}
-
-// CHECK: @single_Q
-void single_Q()
-{
-  // CHECK: asm "foo $1,$0", "=Q,Q[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=Q" (mout0) : "Q" (min1));
-}
-
-// CHECK: @single_a
-void single_a()
-{
-  // CHECK: asm "foo $1,$0", "={ax},{ax}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=a" (mout0) : "a" (min1));
-}
-
-// CHECK: @single_b
-void single_b()
-{
-  // CHECK: asm "foo $1,$0", "={bx},{bx}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=b" (mout0) : "b" (min1));
-}
-
-// CHECK: @single_c
-void single_c()
-{
-  // CHECK: asm "foo $1,$0", "={cx},{cx}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=c" (mout0) : "c" (min1));
-}
-
-// CHECK: @single_d
-void single_d()
-{
-  // CHECK: asm "foo $1,$0", "={dx},{dx}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=d" (mout0) : "d" (min1));
-}
-
-// CHECK: @single_S
-void single_S()
-{
-  // CHECK: asm "foo $1,$0", "={si},{si}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=S" (mout0) : "S" (min1));
-}
-
-// CHECK: @single_D
-void single_D()
-{
-  // CHECK: asm "foo $1,$0", "={di},{di}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=D" (mout0) : "D" (min1));
-}
-
-// CHECK: @single_A
-void single_A()
-{
-  // CHECK: asm "foo $1,$0", "=A,A[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=A" (mout0) : "A" (min1));
-}
-
-// CHECK: @single_f
-void single_f()
-{
-//FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
-}
-
-// CHECK: @single_t
-void single_t()
-{
-//FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
-}
-
-// CHECK: @single_u
-void single_u()
-{
-//FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
-}
-
-// CHECK: @single_y
-void single_y()
-{
-  // CHECK: call double asm "foo $1,$0", "=y,y[[CLOBBERS]](double {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=y" (dout0) : "y" (din1));
-}
-
-// CHECK: @single_x
-void single_x()
-{
-  // CHECK: asm "foo $1,$0", "=x,x[[CLOBBERS]](double {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=x" (dout0) : "x" (din1));
-}
-
-// CHECK: @single_Y
-void single_Y0()
-{
-  // Y constraint currently broken.
-  //asm("foo %1,%0" : "=Y0" (mout0) : "Y0" (min1));
-  //asm("foo %1,%0" : "=Yz" (mout0) : "Yz" (min1));
-  //asm("foo %1,%0" : "=Yt" (mout0) : "Yt" (min1));
-  //asm("foo %1,%0" : "=Yi" (mout0) : "Yi" (min1));
-  //asm("foo %1,%0" : "=Ym" (mout0) : "Ym" (min1));
-}
-
-// CHECK: @single_I
-void single_I()
-{
-  // CHECK: asm "foo $1,$0", "=*m,I[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=m" (mout0) : "I" (1));
-}
-
-// CHECK: @single_J
-void single_J()
-{
-  // CHECK: asm "foo $1,$0", "=*m,J[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=m" (mout0) : "J" (1));
-}
-
-// CHECK: @single_K
-void single_K()
-{
-  // CHECK: asm "foo $1,$0", "=*m,K[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=m" (mout0) : "K" (1));
-}
-
-// CHECK: @single_L
-void single_L()
-{
-  // CHECK: asm "foo $1,$0", "=*m,L[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=m" (mout0) : "L" (1));
-}
-
-// CHECK: @single_M
-void single_M()
-{
-  // CHECK: asm "foo $1,$0", "=*m,M[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=m" (mout0) : "M" (1));
-}
-
-// CHECK: @single_N
-void single_N()
-{
-  // CHECK: asm "foo $1,$0", "=*m,N[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=m" (mout0) : "N" (1));
-}
-
-// CHECK: @single_G
-void single_G()
-{
-  // CHECK: asm "foo $1,$0", "=*m,G[[CLOBBERS]](i32* @mout0, double {{1.[0]+e[+]*[0]+}})
-  asm("foo %1,%0" : "=m" (mout0) : "G" (1.0));
-}
-
-// CHECK: @single_C
-void single_C()
-{
-  // CHECK: asm "foo $1,$0", "=*m,C[[CLOBBERS]](i32* @mout0, double {{1.[0]+e[+]*[0]+}})
-  asm("foo %1,%0" : "=m" (mout0) : "C" (1.0));
-}
-
-// CHECK: @single_e
-void single_e()
-{
-  // CHECK: asm "foo $1,$0", "=*m,e[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=m" (mout0) : "e" (1));
-}
-
-// CHECK: @single_Z
-void single_Z()
-{
-  // CHECK: asm "foo $1,$0", "=*m,Z[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=m" (mout0) : "Z" (1));
-}
-
-// CHECK: @multi_R
-void multi_R()
-{
-  // CHECK: asm "foo $1,$0", "=*r|R|m,r|R|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,R,m" (mout0) : "r,R,m" (min1));
-}
-
-// CHECK: @multi_q
-void multi_q()
-{
-  // CHECK: asm "foo $1,$0", "=*r|q|m,r|q|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,q,m" (mout0) : "r,q,m" (min1));
-}
-
-// CHECK: @multi_Q
-void multi_Q()
-{
-  // CHECK: asm "foo $1,$0", "=*r|Q|m,r|Q|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,Q,m" (mout0) : "r,Q,m" (min1));
-}
-
-// CHECK: @multi_a
-void multi_a()
-{
-  // CHECK: asm "foo $1,$0", "=*r|{ax}|m,r|{ax}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,a,m" (mout0) : "r,a,m" (min1));
-}
-
-// CHECK: @multi_b
-void multi_b()
-{
-  // CHECK: asm "foo $1,$0", "=*r|{bx}|m,r|{bx}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,b,m" (mout0) : "r,b,m" (min1));
-}
-
-// CHECK: @multi_c
-void multi_c()
-{
-  // CHECK: asm "foo $1,$0", "=*r|{cx}|m,r|{cx}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,c,m" (mout0) : "r,c,m" (min1));
-}
-
-// CHECK: @multi_d
-void multi_d()
-{
-  // CHECK: asm "foo $1,$0", "=*r|{dx}|m,r|{dx}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,d,m" (mout0) : "r,d,m" (min1));
-}
-
-// CHECK: @multi_S
-void multi_S()
-{
-  // CHECK: asm "foo $1,$0", "=*r|{si}|m,r|{si}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,S,m" (mout0) : "r,S,m" (min1));
-}
-
-// CHECK: @multi_D
-void multi_D()
-{
-  // CHECK: asm "foo $1,$0", "=*r|{di}|m,r|{di}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,D,m" (mout0) : "r,D,m" (min1));
-}
-
-// CHECK: @multi_A
-void multi_A()
-{
-  // CHECK: asm "foo $1,$0", "=*r|A|m,r|A|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,A,m" (mout0) : "r,A,m" (min1));
-}
-
-// CHECK: @multi_f
-void multi_f()
-{
-//FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
-}
-
-// CHECK: @multi_t
-void multi_t()
-{
-//FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
-}
-
-// CHECK: @multi_u
-void multi_u()
-{
-//FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
-}
-
-// CHECK: @multi_y
-void multi_y()
-{
-  // CHECK: asm "foo $1,$0", "=*r|y|m,r|y|m[[CLOBBERS]](double* @dout0, double {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,y,m" (dout0) : "r,y,m" (din1));
-}
-
-// CHECK: @multi_x
-void multi_x()
-{
-  // CHECK: asm "foo $1,$0", "=*r|x|m,r|x|m[[CLOBBERS]](double* @dout0, double {{[a-zA-Z0-9@%]+}})
-  asm("foo %1,%0" : "=r,x,m" (dout0) : "r,x,m" (din1));
-}
-
-// CHECK: @multi_Y
-void multi_Y0()
-{
-  // Y constraint currently broken.
-  //asm("foo %1,%0" : "=r,Y0,m" (mout0) : "r,Y0,m" (min1));
-  //asm("foo %1,%0" : "=r,Yz,m" (mout0) : "r,Yz,m" (min1));
-  //asm("foo %1,%0" : "=r,Yt,m" (mout0) : "r,Yt,m" (min1));
-  //asm("foo %1,%0" : "=r,Yi,m" (mout0) : "r,Yi,m" (min1));
-  //asm("foo %1,%0" : "=r,Ym,m" (mout0) : "r,Ym,m" (min1));
-}
-
-// CHECK: @multi_I
-void multi_I()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|I|m[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,I,m" (1));
-}
-
-// CHECK: @multi_J
-void multi_J()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|J|m[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,J,m" (1));
-}
-
-// CHECK: @multi_K
-void multi_K()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|K|m[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,K,m" (1));
-}
-
-// CHECK: @multi_L
-void multi_L()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|L|m[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,L,m" (1));
-}
-
-// CHECK: @multi_M
-void multi_M()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|M|m[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,M,m" (1));
-}
-
-// CHECK: @multi_N
-void multi_N()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|N|m[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,N,m" (1));
-}
-
-// CHECK: @multi_G
-void multi_G()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|G|m[[CLOBBERS]](i32* @mout0, double {{1.[0]+e[+]*[0]+}})
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,G,m" (1.0));
-}
-
-// CHECK: @multi_C
-void multi_C()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|C|m[[CLOBBERS]](i32* @mout0, double {{1.[0]+e[+]*[0]+}})
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,C,m" (1.0));
-}
-
-// CHECK: @multi_e
-void multi_e()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|e|m[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,e,m" (1));
-}
-
-// CHECK: @multi_Z
-void multi_Z()
-{
-  // CHECK: asm "foo $1,$0", "=*r|m|m,r|Z|m[[CLOBBERS]](i32* @mout0, i32 1)
-  asm("foo %1,%0" : "=r,m,m" (mout0) : "r,Z,m" (1));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/no-common.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/no-common.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/no-common.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-DEFAULT
-// RUN: %clang_cc1 %s -fno-common -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-NOCOMMON
-
-// CHECK-DEFAULT: @x = common global
-// CHECK-NOCOMMON: @x = global
-int x;
-
-// CHECK-DEFAULT: @ABC = global
-// CHECK-NOCOMMON: @ABC = global
-typedef void* (*fn_t)(long a, long b, char *f, int c);
-fn_t ABC __attribute__ ((nocommon));
-
-// CHECK-DEFAULT: @y = common global
-// CHECK-NOCOMMON: @y = common global
-int y __attribute__((common));

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/no-opt-volatile-memcpy.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/no-opt-volatile-memcpy.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/no-opt-volatile-memcpy.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -O0 -triple=x86_64-apple-darwin  -emit-llvm -o - %s | FileCheck %s
-// rdar://11861085
-
-struct s {
-  char filler [128];
-  volatile int x;
-};
-
-struct s gs;
-
-void foo (void) {
-  struct s ls;
-  ls = ls;
-  gs = gs;
-  ls = gs;
-}
-// CHECK: define void @foo()
-// CHECK: %[[LS:.*]] = alloca %struct.s, align 4
-// CHECK-NEXT: %[[ZERO:.*]] = bitcast %struct.s* %[[LS]] to i8*
-// CHECK-NEXT: %[[ONE:.*]] = bitcast %struct.s* %[[LS]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(i8* %[[ZERO]], i8* %[[ONE]], i64 132, i32 4, i1 true)
-// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(i8* getelementptr inbounds (%struct.s* @gs, i32 0, i32 0, i32 0), i8* getelementptr inbounds (%struct.s* @gs, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)
-// CHECK-NEXT: %[[TWO:.*]] = bitcast %struct.s* %[[LS]] to i8*
-// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(i8* %[[TWO]], i8* getelementptr inbounds (%struct.s* @gs, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)
-
-
-struct s1 {
-  struct s y;
-};
-
-struct s1 s;
-
-void fee (void) {
-  s = s;
-  s.y = gs;
-}
-// CHECK: define void @fee()
-// CHECK: call void @llvm.memcpy.{{.*}}(i8* getelementptr inbounds (%struct.s1* @s, i32 0, i32 0, i32 0, i32 0), i8* getelementptr inbounds (%struct.s1* @s, i32 0, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)
-// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(i8* getelementptr inbounds (%struct.s1* @s, i32 0, i32 0, i32 0, i32 0), i8* getelementptr inbounds (%struct.s* @gs, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/nobuiltin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/nobuiltin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/nobuiltin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fno-builtin -O1 -S -o - %s | FileCheck %s
-
-void PR13497() {
-  char content[2];
-  // make sure we don't optimize this call to strcpy()
-  // CHECK: __strcpy_chk
-  __builtin___strcpy_chk(content, "", 1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/noinline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/noinline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/noinline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// Make sure -fno-inline-functions is behaving correctly.
-// rdar://10972766
-
-// RUN: %clang_cc1 -O3 -fno-inline -fno-inline-functions -emit-llvm %s -o - | FileCheck -check-prefix=NOINLINE %s
-
-inline int dont_inline_me(int a, int b) { return(a+b); }
-
-volatile int *pa = (int*) 0x1000;
-void foo() {
-// NOINLINE: @foo
-// NOINLINE: dont_inline_me
-// NOINLINE-NOT: inlinehint
-    pa[0] = dont_inline_me(pa[1],pa[2]);	
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-cc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-cc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-cc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple nvptx-unknown-unknown -O3 -S -o %t %s -emit-llvm
-// RUN: %clang_cc1 -triple nvptx64-unknown-unknown -O3 -S -o %t %s -emit-llvm
-
-// Just make sure Clang uses the proper calling convention for the NVPTX back-end.
-// If something is wrong, the back-end will fail.
-void foo(float* a,
-         float* b) {
-  a[0] = b[0];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-cpus.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-cpus.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-cpus.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_20 -O3 -S -o %t %s -emit-llvm
-// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_21 -O3 -S -o %t %s -emit-llvm
-// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_30 -O3 -S -o %t %s -emit-llvm
-// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_35 -O3 -S -o %t %s -emit-llvm
-
-// Make sure clang accepts all supported architectures.
-
-void foo(float* a,
-         float* b) {
-  a[0] = b[0];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-inlineasm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-inlineasm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/nvptx-inlineasm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple nvptx-unknown-unknown -O3 -S -o - %s -emit-llvm | FileCheck %s
-// RUN: %clang_cc1 -triple nvptx64-unknown-unknown -O3 -S -o - %s -emit-llvm | FileCheck %s
-
-int bar(int a) {
-  int result;
-  // CHECK: call i32 asm sideeffect "{ {{.*}}
-  asm __volatile__ ("{ \n\t"
-                    ".reg .pred \t%%p1; \n\t"
-                    ".reg .pred \t%%p2; \n\t"
-                    "setp.ne.u32 \t%%p1, %1, 0; \n\t"
-                    "vote.any.pred \t%%p2, %%p1; \n\t"
-                    "selp.s32 \t%0, 1, 0, %%p2; \n\t"
-                    "}" : "=r"(result) : "r"(a));
-  return result;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/object-size.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/object-size.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/object-size.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,148 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s -o - 2>&1 | FileCheck %s
-
-#define strcpy(dest, src) \
-  ((__builtin_object_size(dest, 0) != -1ULL) \
-   ? __builtin___strcpy_chk (dest, src, __builtin_object_size(dest, 1)) \
-   : __inline_strcpy_chk(dest, src))
-
-static char *__inline_strcpy_chk (char *dest, const char *src) {
-  return __builtin___strcpy_chk(dest, src, __builtin_object_size(dest, 1));
-}
-
-char gbuf[63];
-char *gp;
-int gi, gj;
-
-// CHECK: define void @test1
-void test1() {
-  // CHECK:     = call i8* @__strcpy_chk(i8* getelementptr inbounds ([63 x i8]* @gbuf, i32 0, i64 4), i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0), i64 59)
-  strcpy(&gbuf[4], "Hi there");
-}
-
-// CHECK: define void @test2
-void test2() {
-  // CHECK:     = call i8* @__strcpy_chk(i8* getelementptr inbounds ([63 x i8]* @gbuf, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0), i64 63)
-  strcpy(gbuf, "Hi there");
-}
-
-// CHECK: define void @test3
-void test3() {
-  // CHECK:     = call i8* @__strcpy_chk(i8* getelementptr inbounds ([63 x i8]* @gbuf, i64 1, i64 37), i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0), i64 0)
-  strcpy(&gbuf[100], "Hi there");
-}
-
-// CHECK: define void @test4
-void test4() {
-  // CHECK:     = call i8* @__strcpy_chk(i8* getelementptr inbounds ([63 x i8]* @gbuf, i32 0, i64 -1), i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0), i64 0)
-  strcpy((char*)(void*)&gbuf[-1], "Hi there");
-}
-
-// CHECK: define void @test5
-void test5() {
-  // CHECK:     = load i8** @gp
-  // CHECK-NEXT:= call i64 @llvm.objectsize.i64(i8* %{{.*}}, i1 false)
-  strcpy(gp, "Hi there");
-}
-
-// CHECK: define void @test6
-void test6() {
-  char buf[57];
-
-  // CHECK:       = call i8* @__strcpy_chk(i8* %{{.*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0), i64 53)
-  strcpy(&buf[4], "Hi there");
-}
-
-// CHECK: define void @test7
-void test7() {
-  int i;
-  // Ensure we only evaluate the side-effect once.
-  // CHECK:     = add
-  // CHECK-NOT: = add
-  // CHECK:     = call i8* @__strcpy_chk(i8* getelementptr inbounds ([63 x i8]* @gbuf, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0), i64 63)
-  strcpy((++i, gbuf), "Hi there");
-}
-
-// CHECK: define void @test8
-void test8() {
-  char *buf[50];
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* %{{.*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy(buf[++gi], "Hi there");
-}
-
-// CHECK: define void @test9
-void test9() {
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* %{{.*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy((char *)((++gi) + gj), "Hi there");
-}
-
-// CHECK: define void @test10
-char **p;
-void test10() {
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* %{{.*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy(*(++p), "Hi there");
-}
-
-// CHECK: define void @test11
-void test11() {
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* getelementptr inbounds ([63 x i8]* @gbuf, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy(gp = gbuf, "Hi there");
-}
-
-// CHECK: define void @test12
-void test12() {
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* %{{.*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy(++gp, "Hi there");
-}
-
-// CHECK: define void @test13
-void test13() {
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* %{{.*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy(gp++, "Hi there");
-}
-
-// CHECK: define void @test14
-void test14() {
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* %{{.*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy(--gp, "Hi there");
-}
-
-// CHECK: define void @test15
-void test15() {
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* %{{..*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy(gp--, "Hi there");
-}
-
-// CHECK: define void @test16
-void test16() {
-  // CHECK-NOT:   __strcpy_chk
-  // CHECK:       = call i8* @__inline_strcpy_chk(i8* %{{.*}}, i8* getelementptr inbounds ([9 x i8]* @.str, i32 0, i32 0))
-  strcpy(gp += 1, "Hi there");
-}
-
-// CHECK: @test17
-void test17() {
-  // CHECK: store i32 -1
-  gi = __builtin_object_size(gp++, 0);
-  // CHECK: store i32 -1
-  gi = __builtin_object_size(gp++, 1);
-  // CHECK: store i32 0
-  gi = __builtin_object_size(gp++, 2);
-  // CHECK: store i32 0
-  gi = __builtin_object_size(gp++, 3);
-}
-
-// CHECK: @test18
-unsigned test18(int cond) {
-  int a[4], b[4];
-  // CHECK: phi i32*
-  // CHECK: call i64 @llvm.objectsize.i64
-  return __builtin_object_size(cond ? a : b, 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/offsetof.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/offsetof.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/offsetof.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-// PR2910
-struct sockaddr_un {
- unsigned char sun_len;
- char sun_path[104];
-};
-
-int test(int len) {
-  return __builtin_offsetof(struct sockaddr_un, sun_path[len+1]);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/opaque-pointer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/opaque-pointer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/opaque-pointer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-struct test;
-
-typedef void (*my_func) (struct test *);
-my_func handler;
-
-struct test {
-  char a;
-};
-
-char f(struct test *t) {
-  return t->a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/overloadable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/overloadable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/overloadable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep _Z1fPA10_1X
-int __attribute__((overloadable)) f(int x) { return x; }
-float __attribute__((overloadable)) f(float x) { return x; }
-double __attribute__((overloadable)) f(double x) { return x; }
-double _Complex __attribute__((overloadable)) f(double _Complex x) { return x; }
-typedef short v4hi __attribute__ ((__vector_size__ (8)));
-v4hi __attribute__((overloadable)) f(v4hi x) { return x; }
-
-struct X { };
-void  __attribute__((overloadable)) f(struct X (*ptr)[10]) { }
-
-void __attribute__((overloadable)) f(int x, int y, ...) { }
-
-int main() {
-  int iv = 17;
-  float fv = 3.0f;
-  double dv = 4.0;
-  double _Complex cdv;
-  v4hi vv;
-
-  iv = f(iv);
-  fv = f(fv);
-  dv = f(dv);
-  cdv = f(cdv);
-  vv = f(vv);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/override-layout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/override-layout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/override-layout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,174 +0,0 @@
-// RUN: %clang_cc1 -w -fdump-record-layouts %s 2> %t.layouts
-// RUN: %clang_cc1 -w -fdump-record-layouts-simple %s > %t.before 2>&1
-// RUN: %clang_cc1 -w -DPACKED= -DALIGNED16= -fdump-record-layouts-simple -foverride-record-layout=%t.layouts %s > %t.after 2>&1
-// RUN: diff %t.before %t.after
-// RUN: FileCheck %s < %t.after
-
-// If not explicitly disabled, set PACKED to the packed attribute.
-#ifndef PACKED
-#  define PACKED __attribute__((packed))
-#endif
-
-// If not explicitly disabled, set ALIGNED16 to 16-byte alignment.
-#ifndef ALIGNED16
-#  define ALIGNED16 __attribute__((aligned(16)))
-#endif
-
-// CHECK: Type: struct X0
-struct X0 { 
-  int x[6] PACKED; 
-};
-
-// CHECK: Type: struct X1
-struct X1 { 
-  char x[13]; 
-  struct X0 y; 
-} PACKED;
-
-// CHECK: Type: struct X2
-struct PACKED X2 {
-  short x;
-  int y;
-};
-
-// CHECK: Type: struct X3
-struct X3 {
-  short x PACKED;
-  int y;
-};
-
-#pragma pack(push,2)
-// CHECK: Type: struct X4
-struct X4 {
-  int x;
-  int y;
-};
-#pragma pack(pop)
-
-// CHECK: Type: struct X5
-struct PACKED X5 { double a[19];  signed char b; };
-
-// CHECK: Type: struct X6
-struct PACKED X6 { long double a; char b; };
-
-// CHECK: Type: struct X7
-struct X7 {
-        unsigned x;
-        unsigned char y;
-} PACKED;
-
-// CHECK: Type: union X8
-union X8 {
-  struct X7 x;
-  unsigned y;
-} PACKED;
-
-// CHECK: Type: struct X9
-struct X9 {
-  unsigned int x[2] PACKED;
-  unsigned int y;
-  unsigned int z PACKED;
-};
-
-// CHECK: Type: struct X10
-struct X10 {
-  unsigned int x[2] PACKED;
-  unsigned int y PACKED;
-  unsigned int z PACKED;
-};
-
-// CHECK: Type: struct X11
-struct PACKED X11 {
-  unsigned int x[2];
-  unsigned int y;
-  unsigned int z;
-};
-
-// CHECK: Type: struct X12
-struct PACKED X12 {
-  int x : 24;
-};
-
-// CHECK: Type: struct X13
-struct PACKED X13 {
-  signed x : 10;
-  signed y : 10;
-};
-
-// CHECK: Type: union X14
-union PACKED X14 {
-  unsigned long long x : 3;
-};
-
-// CHECK: Type: struct X15
-struct X15 {
-  unsigned x : 16;
-  unsigned y : 28 PACKED;
-};
-
-// CHECK: Type: struct X16
-struct ALIGNED16 X16 {
-  int a, b, c;
-  int x : 5;
-  int y : 29;
-};
-
-void use_structs() {
-  struct X0 x0;
-  x0.x[5] = sizeof(struct X0);
-
-  struct X1 x1;
-  x1.x[5] = sizeof(struct X1);
-
-  struct X2 x2;
-  x2.y = sizeof(struct X2);
-
-  struct X3 x3;
-  x3.y = sizeof(struct X3);
-
-  struct X4 x4;
-  x4.y = sizeof(struct X4);
-
-  struct X5 x5;
-  x5.b = sizeof(struct X5);
-
-  struct X6 x6;
-  x6.b = sizeof(struct X6);
-
-  struct X7 x7;
-  typedef int X7array[sizeof(struct X7)];
-  x7.x = sizeof(struct X7);
-  x7.y = x7.x;
-
-  union X8 x8;
-  typedef int X8array[sizeof(union X8)];
-  x8.y = sizeof(union X8);
-  x8.x.x = x8.y;
-
-  struct X9 x9;
-  typedef int X9array[sizeof(struct X9)];
-  x9.y = sizeof(struct X9);
-
-  struct X10 x10;
-  typedef int X10array[sizeof(struct X10)];
-  x10.y = sizeof(struct X10);
-
-  struct X11 x11;
-  typedef int X11array[sizeof(struct X11)];
-  x11.y = sizeof(struct X11);
-
-  struct X12 x12;
-  x12.x = sizeof(struct X12);
-
-  struct X13 x13;
-  x13.x = sizeof(struct X13);
-
-  union X14 x14;
-  x14.x = sizeof(union X14);
-
-  struct X15 x15;
-  x15.x = sizeof(struct X15);
-
-  struct X16 x16;
-  x16.x = sizeof(struct X16);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/packed-arrays.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/packed-arrays.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/packed-arrays.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,155 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unk-unk -emit-llvm -Os -o %t %s
-// RUN: FileCheck < %t %s
-
-struct s0 {
-  unsigned int x[2] __attribute__((packed));
-};
-
-struct s1 {
-  unsigned int x[2] __attribute__((packed));
-  unsigned int y;
-  unsigned int z __attribute__((packed));
-};
-
-struct s2 {
-  unsigned int x[2] __attribute__((packed));
-  unsigned int y __attribute__((packed));
-  unsigned int z __attribute__((packed));
-};
-
-struct __attribute__((packed)) s3 {
-  unsigned int x[2];
-  unsigned int y;
-  unsigned int z;
-};
-
-// CHECK: @align0 = global i32 1
-int align0 = __alignof(struct s0);
-// CHECK: @align1 = global i32 4
-int align1 = __alignof(struct s1);
-// CHECK: @align2 = global i32 1
-int align2 = __alignof(struct s2);
-// CHECK: @align3 = global i32 1
-int align3 = __alignof(struct s3);
-
-// CHECK: @align0_x = global i32 1
-int align0_x = __alignof(((struct s0*) 0)->x);
-//
-// CHECK: @align1_x = global i32 1
-int align1_x = __alignof(((struct s1*) 0)->x);
-// CHECK: @align2_x = global i32 1
-int align2_x = __alignof(((struct s2*) 0)->x);
-// CHECK: @align3_x = global i32 1
-int align3_x = __alignof(((struct s3*) 0)->x);
-
-// CHECK: @align0_x0 = global i32 4
-int align0_x0 = __alignof(((struct s0*) 0)->x[0]);
-// CHECK: @align1_x0 = global i32 4
-int align1_x0 = __alignof(((struct s1*) 0)->x[0]);
-// CHECK: @align2_x0 = global i32 4
-int align2_x0 = __alignof(((struct s2*) 0)->x[0]);
-// CHECK: @align3_x0 = global i32 4
-int align3_x0 = __alignof(((struct s3*) 0)->x[0]);
-
-// CHECK: define i32 @f0_a
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-// CHECK: define i32 @f0_b
-// CHECK:   load i32* %{{.*}}, align 4
-// CHECK: }
-int f0_a(struct s0 *a) {
-  return a->x[1];
-}
-int f0_b(struct s0 *a) {
-  return *(a->x + 1);
-}
-
-// Note that we are incompatible with GCC on this example.
-// 
-// CHECK: define i32 @f1_a
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-// CHECK: define i32 @f1_b
-// CHECK:   load i32* %{{.*}}, align 4
-// CHECK: }
-
-// Note that we are incompatible with GCC on this example.
-//
-// CHECK: define i32 @f1_c
-// CHECK:   load i32* %{{.*}}, align 4
-// CHECK: }
-// CHECK: define i32 @f1_d
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-int f1_a(struct s1 *a) {
-  return a->x[1];
-}
-int f1_b(struct s1 *a) {
-  return *(a->x + 1);
-}
-int f1_c(struct s1 *a) {
-  return a->y;
-}
-int f1_d(struct s1 *a) {
-  return a->z;
-}
-
-// CHECK: define i32 @f2_a
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-// CHECK: define i32 @f2_b
-// CHECK:   load i32* %{{.*}}, align 4
-// CHECK: }
-// CHECK: define i32 @f2_c
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-// CHECK: define i32 @f2_d
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-int f2_a(struct s2 *a) {
-  return a->x[1];
-}
-int f2_b(struct s2 *a) {
-  return *(a->x + 1);
-}
-int f2_c(struct s2 *a) {
-  return a->y;
-}
-int f2_d(struct s2 *a) {
-  return a->z;
-}
-
-// CHECK: define i32 @f3_a
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-// CHECK: define i32 @f3_b
-// CHECK:   load i32* %{{.*}}, align 4
-// CHECK: }
-// CHECK: define i32 @f3_c
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-// CHECK: define i32 @f3_d
-// CHECK:   load i32* %{{.*}}, align 1
-// CHECK: }
-int f3_a(struct s3 *a) {
-  return a->x[1];
-}
-int f3_b(struct s3 *a) {
-  return *(a->x + 1);
-}
-int f3_c(struct s3 *a) {
-  return a->y;
-}
-int f3_d(struct s3 *a) {
-  return a->z;
-}
-
-// Verify we don't claim things are overaligned.
-//
-// CHECK: define double @f4
-// CHECK:   load double* {{.*}}, align 8
-// CHECK: }
-extern double g4[5] __attribute__((aligned(16)));
-double f4() {
-  return g4[1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/packed-nest-unpacked.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/packed-nest-unpacked.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/packed-nest-unpacked.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-macosx10.7.2 -emit-llvm -o - | FileCheck %s
-
-struct X { int x[6]; };
-struct Y { char x[13]; struct X y; } __attribute((packed));
-struct Y g;
-void f(struct X);
-struct X foo(void);
-
-// <rdar://problem/10463337>
-struct X test1() {
-  // CHECK: @test1
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* bitcast (%struct.X* getelementptr inbounds (%struct.Y* @g, i32 0, i32 1) to i8*), i64 24, i32 1, i1 false)
-  return g.y;
-}
-struct X test2() {
-  // CHECK: @test2
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* bitcast (%struct.X* getelementptr inbounds (%struct.Y* @g, i32 0, i32 1) to i8*), i64 24, i32 1, i1 false)
-  struct X a = g.y;
-  return a;
-}
-
-void test3(struct X a) {
-  // CHECK: @test3
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* bitcast (%struct.X* getelementptr inbounds (%struct.Y* @g, i32 0, i32 1) to i8*), i8* {{.*}}, i64 24, i32 1, i1 false)
-  g.y = a;
-}
-
-// <rdar://problem/10530444>
-void test4() {
-  // CHECK: @test4
-  // FIXME: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* bitcast (%struct.X* getelementptr inbounds (%struct.Y* @g, i32 0, i32 1) to i8*), i64 24, i32 1, i1 false)
-  f(g.y);
-}
-
-// PR12395
-int test5() {
-  // CHECK: @test5
-  // CHECK: load i32* getelementptr inbounds (%struct.Y* @g, i32 0, i32 1, i32 0, i64 0), align 1
-  return g.y.x[0];
-}
-
-// <rdar://problem/11220251>
-void test6() {
-  // CHECK: @test6
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* bitcast (%struct.X* getelementptr inbounds (%struct.Y* @g, i32 0, i32 1) to i8*), i8* %{{.*}}, i64 24, i32 1, i1 false)
-  g.y = foo();
-}
-
-
-struct XBitfield {
-  unsigned b1 : 10;
-  unsigned b2 : 12;
-  unsigned b3 : 10;
-};
-struct YBitfield {
-  char x;
-  struct XBitfield y;
-} __attribute((packed));
-struct YBitfield gbitfield;
-
-unsigned test7() {
-  // CHECK: @test7
-  // CHECK: load i32* bitcast (%struct.XBitfield* getelementptr inbounds (%struct.YBitfield* @gbitfield, i32 0, i32 1) to i32*), align 4
-  return gbitfield.y.b2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/packed-structure.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/packed-structure.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/packed-structure.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64 -emit-llvm -o - %s | opt -S -strip -o %t
-// RUN: FileCheck --check-prefix=CHECK-GLOBAL < %t %s
-// RUN: FileCheck --check-prefix=CHECK-FUNCTIONS < %t %s
-
-struct s0 {
-  int x;
-  int y __attribute__((packed));
-};
-
-// CHECK-GLOBAL: @s0_align_x = global i32 4
-
-// CHECK-GLOBAL: @s0_align_y = global i32 1
-
-// CHECK-GLOBAL: @s0_align = global i32 4
-int s0_align_x = __alignof(((struct s0*)0)->x);
-int s0_align_y = __alignof(((struct s0*)0)->y);
-int s0_align   = __alignof(struct s0);
-
-// CHECK-FUNCTIONS: define i32 @s0_load_x
-// CHECK-FUNCTIONS: [[s0_load_x:%.*]] = load i32* {{.*}}, align 4
-// CHECK-FUNCTIONS: ret i32 [[s0_load_x]]
-int s0_load_x(struct s0 *a) { return a->x; }
-// FIXME: This seems like it should be align 1. This is actually something which
-// has changed in llvm-gcc recently, previously both x and y would be loaded
-// with align 1 (in 2363.1 at least).
-//
-// CHECK-FUNCTIONS: define i32 @s0_load_y
-// CHECK-FUNCTIONS: [[s0_load_y:%.*]] = load i32* {{.*}}, align 1
-// CHECK-FUNCTIONS: ret i32 [[s0_load_y]]
-int s0_load_y(struct s0 *a) { return a->y; }
-// CHECK-FUNCTIONS: define void @s0_copy
-// CHECK-FUNCTIONS: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* {{.*}}, i64 8, i32 4, i1 false)
-void s0_copy(struct s0 *a, struct s0 *b) { *b = *a; }
-
-//
-
-struct s1 {
-  int x;
-  int y;
-} __attribute__((packed));
-
-// CHECK-GLOBAL: @s1_align_x = global i32 1
-// CHECK-GLOBAL: @s1_align_y = global i32 1
-// CHECK-GLOBAL: @s1_align = global i32 1
-int s1_align_x = __alignof(((struct s1*)0)->x);
-int s1_align_y = __alignof(((struct s1*)0)->y);
-int s1_align   = __alignof(struct s1);
-
-// CHECK-FUNCTIONS: define i32 @s1_load_x
-// CHECK-FUNCTIONS: [[s1_load_x:%.*]] = load i32* {{.*}}, align 1
-// CHECK-FUNCTIONS: ret i32 [[s1_load_x]]
-int s1_load_x(struct s1 *a) { return a->x; }
-// CHECK-FUNCTIONS: define i32 @s1_load_y
-// CHECK-FUNCTIONS: [[s1_load_y:%.*]] = load i32* {{.*}}, align 1
-// CHECK-FUNCTIONS: ret i32 [[s1_load_y]]
-int s1_load_y(struct s1 *a) { return a->y; }
-// CHECK-FUNCTIONS: define void @s1_copy
-// CHECK-FUNCTIONS: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* {{.*}}, i64 8, i32 1, i1 false)
-void s1_copy(struct s1 *a, struct s1 *b) { *b = *a; }
-
-//
-
-#pragma pack(push,2)
-struct s2 {
-  int x;
-  int y;
-};
-#pragma pack(pop)
-
-// CHECK-GLOBAL: @s2_align_x = global i32 2
-// CHECK-GLOBAL: @s2_align_y = global i32 2
-// CHECK-GLOBAL: @s2_align = global i32 2
-int s2_align_x = __alignof(((struct s2*)0)->x);
-int s2_align_y = __alignof(((struct s2*)0)->y);
-int s2_align   = __alignof(struct s2);
-
-// CHECK-FUNCTIONS: define i32 @s2_load_x
-// CHECK-FUNCTIONS: [[s2_load_y:%.*]] = load i32* {{.*}}, align 2
-// CHECK-FUNCTIONS: ret i32 [[s2_load_y]]
-int s2_load_x(struct s2 *a) { return a->x; }
-// CHECK-FUNCTIONS: define i32 @s2_load_y
-// CHECK-FUNCTIONS: [[s2_load_y:%.*]] = load i32* {{.*}}, align 2
-// CHECK-FUNCTIONS: ret i32 [[s2_load_y]]
-int s2_load_y(struct s2 *a) { return a->y; }
-// CHECK-FUNCTIONS: define void @s2_copy
-// CHECK-FUNCTIONS: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* {{.*}}, i64 8, i32 2, i1 false)
-void s2_copy(struct s2 *a, struct s2 *b) { *b = *a; }
-
-struct __attribute__((packed, aligned)) s3 {
-  short aShort;
-  int anInt;
-};
-// CHECK-GLOBAL: @s3_1 = global i32 1
-int s3_1 = __alignof(((struct s3*) 0)->anInt);
-// CHECK-FUNCTIONS: define i32 @test3(
-int test3(struct s3 *ptr) {
-  // CHECK-FUNCTIONS:      [[PTR:%.*]] = getelementptr inbounds {{%.*}}* {{%.*}}, i32 0, i32 1
-  // CHECK-FUNCTIONS-NEXT: load i32* [[PTR]], align 1
-  return ptr->anInt;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/packed-union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/packed-union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/packed-union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm %s -o %t
-
-typedef struct _attrs {
-        unsigned file_attributes;
-        unsigned char filename_length;
-} __attribute__((__packed__)) attrs;
-
-// RUN: grep "union._attr_union = type <{ i32, i8 }>" %t
-typedef union _attr_union {
-  attrs file_attrs;
-  unsigned owner_id;
-} __attribute__((__packed__)) attr_union;
-
-attr_union u;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/palignr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/palignr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/palignr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// REQUIRES: x86-registered-target
-// RUN: %clang_cc1 %s -triple=i686-apple-darwin -target-feature +ssse3 -O1 -S -o - | FileCheck %s
-
-#define _mm_alignr_epi8(a, b, n) (__builtin_ia32_palignr128((a), (b), (n)))
-typedef __attribute__((vector_size(16))) int int4;
-
-// CHECK: palignr
-int4 align1(int4 a, int4 b) { return _mm_alignr_epi8(a, b, 15); }
-// CHECK: ret
-// CHECK: ret
-// CHECK-NOT: palignr
-int4 align2(int4 a, int4 b) { return _mm_alignr_epi8(a, b, 16); }
-// CHECK: psrldq
-int4 align3(int4 a, int4 b) { return _mm_alignr_epi8(a, b, 17); }
-// CHECK: xor
-int4 align4(int4 a, int4 b) { return _mm_alignr_epi8(a, b, 32); }
-
-#define _mm_alignr_pi8(a, b, n) (__builtin_ia32_palignr((a), (b), (n)))
-typedef __attribute__((vector_size(8))) int int2;
-
-// CHECK: palignr
-int2 align5(int2 a, int2 b) { return _mm_alignr_pi8(a, b, 8); }
-
-// CHECK: palignr
-int2 align6(int2 a, int2 b) { return _mm_alignr_pi8(a, b, 9); }
-
-// CHECK: palignr
-int2 align7(int2 a, int2 b) { return _mm_alignr_pi8(a, b, 16); }
-
-// CHECK: palignr
-int2 align8(int2 a, int2 b) { return _mm_alignr_pi8(a, b, 7); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/parameter-passing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/parameter-passing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/parameter-passing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// Check the various ways in which the three classes of values
-// (scalar, complex, aggregate) interact with parameter passing
-// (function entry, function return, call argument, call result).
-//
-// We also check _Bool and empty structures, as these can have annoying
-// corner cases.
-
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -O3 -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple x86_64-unknown-unknown -O3 -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple powerpc-unknown-unknown -O3 -emit-llvm -o - | FileCheck %s
-// CHECK-NOT: @g0
-
-typedef _Bool BoolTy;
-typedef int ScalarTy;
-typedef _Complex int ComplexTy;
-typedef struct { int a, b, c; } AggrTy;
-typedef struct { int a[0]; } EmptyTy;
-
-static int result;
-
-static BoolTy bool_id(BoolTy a) { return a; }
-static AggrTy aggr_id(AggrTy a) { return a; }
-static EmptyTy empty_id(EmptyTy a) { return a; }
-static ScalarTy scalar_id(ScalarTy a) { return a; }
-static ComplexTy complex_id(ComplexTy a) { return a; }
-
-static void bool_mul(BoolTy a) { result *= a; }
-
-static void aggr_mul(AggrTy a) { result *= a.a * a.b * a.c; }
-
-static void empty_mul(EmptyTy a) { result *= 53; }
-
-static void scalar_mul(ScalarTy a) { result *= a; }
-
-static void complex_mul(ComplexTy a) { result *= __real a * __imag a; }
-
-extern void g0(void);
-
-void f0(void) {
-  result = 1;
-  
-  bool_mul(bool_id(1));
-  aggr_mul(aggr_id((AggrTy) { 2, 3, 5}));
-  empty_mul(empty_id((EmptyTy) {}));
-  scalar_mul(scalar_id(7));
-  complex_mul(complex_id(11 + 13i));
-  
-  // This call should be eliminated.
-  if (result != 2 * 3 * 5 * 7 * 11 * 13 * 53)
-    g0();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pascal-string.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pascal-string.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pascal-string.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s -fpascal-strings | grep "05Hello"
-
-unsigned char * Foo( void )
-{
-  static unsigned char s[256] = "\pHello";
-  return s;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pascal-wchar-string.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pascal-wchar-string.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pascal-wchar-string.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o -  %s -fpascal-strings -fshort-wchar  | FileCheck %s
-// rdar://8020384
-
-#include <stddef.h>
-
-extern void abort (void);
-
-typedef unsigned short UInt16;
-
-typedef UInt16 UniChar;
-
-int main(int argc, char* argv[])
-{
-
-        char st[] = "\pfoo";            // pascal string
-        UniChar wt[] = L"\pbar";        // pascal Unicode string
-	UniChar wt1[] = L"\p";
-	UniChar wt2[] = L"\pgorf";
-
-        if (st[0] != 3)
-          abort ();
-        if (wt[0] != 3)
-          abort ();
-        if (wt1[0] != 0)
-          abort ();
-        if (wt2[0] != 4)
-          abort ();
-        
-        return 0;
-}
-
-// CHECK: [i16 3, i16 98, i16 97, i16 114, i16 0]
-// CHECK: [i16 4, i16 103, i16 111, i16 114, i16 102, i16 0]
-
-
-// PR8856 - -fshort-wchar makes wchar_t be unsigned.
-// CHECK: @test2
-// CHECK: store volatile i32 1, i32* %isUnsigned
-void test2() {
-  volatile int isUnsigned = (wchar_t)-1 > (wchar_t)0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pclmul-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pclmul-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pclmul-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +pclmul -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <wmmintrin.h>
-
-__m128i test_mm_clmulepi64_si128(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.pclmulqdq
-  return _mm_clmulepi64_si128(a, b, 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-arithmetic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-arithmetic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-arithmetic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -S %s -o -
-
-typedef int Int;
-
-int f0(int *a, Int *b) { return a - b; }
-
-int f1(const char *a, char *b) { return b - a; }
-
-// GNU extensions
-typedef void (*FP)(void);
-void *f2(void *a, int b) { return a + b; }
-void *f2_0(void *a, int b) { return &a[b]; }
-void *f2_1(void *a, int b) { return (a += b); }
-void *f3(int a, void *b) { return a + b; }
-void *f3_1(int a, void *b) { return (a += b); }
-void *f4(void *a, int b) { return a - b; }
-void *f4_1(void *a, int b) { return (a -= b); }
-FP f5(FP a, int b) { return a + b; }
-FP f5_1(FP a, int b) { return (a += b); }
-FP f6(int a, FP b) { return a + b; }
-FP f6_1(int a, FP b) { return (a += b); }
-FP f7(FP a, int b) { return a - b; }
-FP f7_1(FP a, int b) { return (a -= b); }
-void f8(void *a, int b) { return *(a + b); }
-void f8_1(void *a, int b) { return a[b]; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-cmp-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-cmp-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-cmp-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep "icmp ult"
-
-int a(char* a, char* b) {return a<b;}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-signext.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-signext.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-signext.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-win32 -emit-llvm -O2 -o - %s | FileCheck %s
-
-// Under Windows 64, int and long are 32-bits.  Make sure pointer math doesn't
-// cause any sign extensions.
-
-// CHECK:      [[P:%.*]] = add i64 %param, -8
-// CHECK-NEXT: [[Q:%.*]] = inttoptr i64 [[P]] to [[R:%.*\*]]
-// CHECK-NEXT: {{%.*}} = getelementptr inbounds [[R]] [[Q]], i64 0, i32 0
-
-#define CR(Record, TYPE, Field) \
-  ((TYPE *) ((unsigned char *) (Record) - (unsigned char *) &(((TYPE *) 0)->Field)))
-
-typedef struct _LIST_ENTRY {
-  struct _LIST_ENTRY  *ForwardLink;
-  struct _LIST_ENTRY  *BackLink;
-} LIST_ENTRY;
-
-typedef struct {
-  unsigned long long    Signature;
-  LIST_ENTRY            Link;
-} MEMORY_MAP;
-
-int test(unsigned long long param)
-{
-  LIST_ENTRY      *Link;
-  MEMORY_MAP      *Entry;
-
-  Link = (LIST_ENTRY *) param;
-
-  Entry = CR (Link, MEMORY_MAP, Link);
-  return (int) Entry->Signature;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-to-int.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-to-int.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pointer-to-int.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-int test(void* i)
-{
-  return (int)i;
-}
-
-// rdar://6093986
-int test2(void) {
-  float x[2];
-  return x;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/popcnt-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/popcnt-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/popcnt-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +popcnt -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-unsigned int test_mm_popcnt_u32(unsigned int __X) {
-  // CHECK: @llvm.ctpop.i32
-  return _mm_popcnt_u32(__X);
-}
-
-unsigned long long test_mm_popcnt_u64(unsigned long long __X) {
-  // CHECK: @llvm.ctpop.i64
-  return _mm_popcnt_u64(__X);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/powerpc_types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/powerpc_types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/powerpc_types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// REQUIRES: ppc32-registered-target
-// RUN: %clang_cc1 -triple powerpc-unknown-freebsd -emit-llvm -o - %s| FileCheck -check-prefix=SVR4-CHECK %s
-
-#include <stdarg.h>
-
-int va_list_size = sizeof(va_list);
-// SVR4-CHECK: va_list_size = global i32 12, align 4
-int long_double_size = sizeof(long double);
-// SVR4-CHECK: long_double_size = global i32 8, align 4
-int double_size = sizeof(double);
-// SVR4-CHECK: double_size = global i32 8, align 4

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-align-long-double.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-align-long-double.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-align-long-double.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: -f128:128:128-
-
-struct S {
-  double a;
-  long double b;
-};
-
-// CHECK: %struct.{{[a-zA-Z0-9]+}} = type { double, ppc_fp128 }
-
-long double test (struct S x)
-{
-  return x.b;
-}
-
-// CHECK: %{{[0-9]}} = load ppc_fp128* %{{[a-zA-Z0-9]+}}, align 16

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-complex-parms.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-complex-parms.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-complex-parms.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,184 +0,0 @@
-// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-float crealf(_Complex float);
-double creal(_Complex double);
-long double creall(_Complex long double);
-
-float foo_float(_Complex float x) {
-  return crealf(x);
-}
-
-// CHECK: define float @foo_float(float {{[%A-Za-z0-9.]+}}, float {{[%A-Za-z0-9.]+}}) [[NUW:#[0-9]+]] {
-
-double foo_double(_Complex double x) {
-  return creal(x);
-}
-
-// CHECK: define double @foo_double(double {{[%A-Za-z0-9.]+}}, double {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-long double foo_long_double(_Complex long double x) {
-  return creall(x);
-}
-
-// CHECK: define ppc_fp128 @foo_long_double(ppc_fp128 {{[%A-Za-z0-9.]+}}, ppc_fp128 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-int foo_int(_Complex int x) {
-  return __real__ x;
-}
-
-// CHECK: define signext i32 @foo_int(i32 {{[%A-Za-z0-9.]+}}, i32 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-short foo_short(_Complex short x) {
-  return __real__ x;
-}
-
-// CHECK: define signext i16 @foo_short(i16 {{[%A-Za-z0-9.]+}}, i16 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-signed char foo_char(_Complex signed char x) {
-  return __real__ x;
-}
-
-// CHECK: define signext i8 @foo_char(i8 {{[%A-Za-z0-9.]+}}, i8 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-long foo_long(_Complex long x) {
-  return __real__ x;
-}
-
-// CHECK: define i64 @foo_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-long long foo_long_long(_Complex long long x) {
-  return __real__ x;
-}
-
-// CHECK: define i64 @foo_long_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-void bar_float(void) {
-  foo_float(2.0f - 2.5fi);
-}
-
-// CHECK: define void @bar_float() [[NUW]] {
-// CHECK: %[[VAR1:[A-Za-z0-9.]+]] = alloca { float, float }, align 4
-// CHECK: %[[VAR2:[A-Za-z0-9.]+]] = getelementptr inbounds { float, float }* %[[VAR1]], i32 0, i32 0
-// CHECK: %[[VAR3:[A-Za-z0-9.]+]] = getelementptr inbounds { float, float }* %[[VAR1]], i32 0, i32 1
-// CHECK: store float 2.000000e+00, float* %[[VAR2]]
-// CHECK: store float -2.500000e+00, float* %[[VAR3]]
-// CHECK: %[[VAR4:[A-Za-z0-9.]+]] = getelementptr { float, float }* %[[VAR1]], i32 0, i32 0
-// CHECK: %[[VAR5:[A-Za-z0-9.]+]] = load float* %[[VAR4]], align 1
-// CHECK: %[[VAR6:[A-Za-z0-9.]+]] = getelementptr { float, float }* %[[VAR1]], i32 0, i32 1
-// CHECK: %[[VAR7:[A-Za-z0-9.]+]] = load float* %[[VAR6]], align 1
-// CHECK: %{{[A-Za-z0-9.]+}} = call float @foo_float(float %[[VAR5]], float %[[VAR7]])
-
-void bar_double(void) {
-  foo_double(2.0 - 2.5i);
-}
-
-// CHECK: define void @bar_double() [[NUW]] {
-// CHECK: %[[VAR11:[A-Za-z0-9.]+]] = alloca { double, double }, align 8
-// CHECK: %[[VAR12:[A-Za-z0-9.]+]] = getelementptr inbounds { double, double }* %[[VAR11]], i32 0, i32 0
-// CHECK: %[[VAR13:[A-Za-z0-9.]+]] = getelementptr inbounds { double, double }* %[[VAR11]], i32 0, i32 1
-// CHECK: store double 2.000000e+00, double* %[[VAR12]]
-// CHECK: store double -2.500000e+00, double* %[[VAR13]]
-// CHECK: %[[VAR14:[A-Za-z0-9.]+]] = getelementptr { double, double }* %[[VAR11]], i32 0, i32 0
-// CHECK: %[[VAR15:[A-Za-z0-9.]+]] = load double* %[[VAR14]], align 1
-// CHECK: %[[VAR16:[A-Za-z0-9.]+]] = getelementptr { double, double }* %[[VAR11]], i32 0, i32 1
-// CHECK: %[[VAR17:[A-Za-z0-9.]+]] = load double* %[[VAR16]], align 1
-// CHECK: %{{[A-Za-z0-9.]+}} = call double @foo_double(double %[[VAR15]], double %[[VAR17]])
-
-void bar_long_double(void) {
-  foo_long_double(2.0L - 2.5Li);
-}
-
-// CHECK: define void @bar_long_double() [[NUW]] {
-// CHECK: %[[VAR21:[A-Za-z0-9.]+]] = alloca { ppc_fp128, ppc_fp128 }, align 16
-// CHECK: %[[VAR22:[A-Za-z0-9.]+]] = getelementptr inbounds { ppc_fp128, ppc_fp128 }* %[[VAR21]], i32 0, i32 0
-// CHECK: %[[VAR23:[A-Za-z0-9.]+]] = getelementptr inbounds { ppc_fp128, ppc_fp128 }* %[[VAR21]], i32 0, i32 1
-// CHECK: store ppc_fp128 0xM40000000000000000000000000000000, ppc_fp128* %[[VAR22]]
-// CHECK: store ppc_fp128 0xMC0040000000000000000000000000000, ppc_fp128* %[[VAR23]]
-// CHECK: %[[VAR24:[A-Za-z0-9.]+]] = getelementptr { ppc_fp128, ppc_fp128 }* %[[VAR21]], i32 0, i32 0
-// CHECK: %[[VAR25:[A-Za-z0-9.]+]] = load ppc_fp128* %[[VAR24]], align 1
-// CHECK: %[[VAR26:[A-Za-z0-9.]+]] = getelementptr { ppc_fp128, ppc_fp128 }* %[[VAR21]], i32 0, i32 1
-// CHECK: %[[VAR27:[A-Za-z0-9.]+]] = load ppc_fp128* %[[VAR26]], align 1
-// CHECK: %{{[A-Za-z0-9.]+}} = call ppc_fp128 @foo_long_double(ppc_fp128 %[[VAR25]], ppc_fp128 %[[VAR27]])
-
-void bar_int(void) {
-  foo_int(2 - 3i);
-}
-
-// CHECK: define void @bar_int() [[NUW]] {
-// CHECK: %[[VAR31:[A-Za-z0-9.]+]] = alloca { i32, i32 }, align 4
-// CHECK: %[[VAR32:[A-Za-z0-9.]+]] = getelementptr inbounds { i32, i32 }* %[[VAR31]], i32 0, i32 0
-// CHECK: %[[VAR33:[A-Za-z0-9.]+]] = getelementptr inbounds { i32, i32 }* %[[VAR31]], i32 0, i32 1
-// CHECK: store i32 2, i32* %[[VAR32]]
-// CHECK: store i32 -3, i32* %[[VAR33]]
-// CHECK: %[[VAR34:[A-Za-z0-9.]+]] = getelementptr { i32, i32 }* %[[VAR31]], i32 0, i32 0
-// CHECK: %[[VAR35:[A-Za-z0-9.]+]] = load i32* %[[VAR34]], align 1
-// CHECK: %[[VAR36:[A-Za-z0-9.]+]] = getelementptr { i32, i32 }* %[[VAR31]], i32 0, i32 1
-// CHECK: %[[VAR37:[A-Za-z0-9.]+]] = load i32* %[[VAR36]], align 1
-// CHECK: %{{[A-Za-z0-9.]+}} = call signext i32 @foo_int(i32 %[[VAR35]], i32 %[[VAR37]])
-
-void bar_short(void) {
-  foo_short(2 - 3i);
-}
-
-// CHECK: define void @bar_short() [[NUW]] {
-// CHECK: %[[VAR41:[A-Za-z0-9.]+]] = alloca { i16, i16 }, align 2
-// CHECK: %[[VAR42:[A-Za-z0-9.]+]] = getelementptr inbounds { i16, i16 }* %[[VAR41]], i32 0, i32 0
-// CHECK: %[[VAR43:[A-Za-z0-9.]+]] = getelementptr inbounds { i16, i16 }* %[[VAR41]], i32 0, i32 1
-// CHECK: store i16 2, i16* %[[VAR42]]
-// CHECK: store i16 -3, i16* %[[VAR43]]
-// CHECK: %[[VAR44:[A-Za-z0-9.]+]] = getelementptr { i16, i16 }* %[[VAR41]], i32 0, i32 0
-// CHECK: %[[VAR45:[A-Za-z0-9.]+]] = load i16* %[[VAR44]], align 1
-// CHECK: %[[VAR46:[A-Za-z0-9.]+]] = getelementptr { i16, i16 }* %[[VAR41]], i32 0, i32 1
-// CHECK: %[[VAR47:[A-Za-z0-9.]+]] = load i16* %[[VAR46]], align 1
-// CHECK: %{{[A-Za-z0-9.]+}} = call signext i16 @foo_short(i16 %[[VAR45]], i16 %[[VAR47]])
-
-void bar_char(void) {
-  foo_char(2 - 3i);
-}
-
-// CHECK: define void @bar_char() [[NUW]] {
-// CHECK: %[[VAR51:[A-Za-z0-9.]+]] = alloca { i8, i8 }, align 1
-// CHECK: %[[VAR52:[A-Za-z0-9.]+]] = getelementptr inbounds { i8, i8 }* %[[VAR51]], i32 0, i32 0
-// CHECK: %[[VAR53:[A-Za-z0-9.]+]] = getelementptr inbounds { i8, i8 }* %[[VAR51]], i32 0, i32 1
-// CHECK: store i8 2, i8* %[[VAR52]]
-// CHECK: store i8 -3, i8* %[[VAR53]]
-// CHECK: %[[VAR54:[A-Za-z0-9.]+]] = getelementptr { i8, i8 }* %[[VAR51]], i32 0, i32 0
-// CHECK: %[[VAR55:[A-Za-z0-9.]+]] = load i8* %[[VAR54]], align 1
-// CHECK: %[[VAR56:[A-Za-z0-9.]+]] = getelementptr { i8, i8 }* %[[VAR51]], i32 0, i32 1
-// CHECK: %[[VAR57:[A-Za-z0-9.]+]] = load i8* %[[VAR56]], align 1
-// CHECK: %{{[A-Za-z0-9.]+}} = call signext i8 @foo_char(i8 %[[VAR55]], i8 %[[VAR57]])
-
-void bar_long(void) {
-  foo_long(2L - 3Li);
-}
-
-// CHECK: define void @bar_long() [[NUW]] {
-// CHECK: %[[VAR61:[A-Za-z0-9.]+]] = alloca { i64, i64 }, align 8
-// CHECK: %[[VAR62:[A-Za-z0-9.]+]] = getelementptr inbounds { i64, i64 }* %[[VAR61]], i32 0, i32 0
-// CHECK: %[[VAR63:[A-Za-z0-9.]+]] = getelementptr inbounds { i64, i64 }* %[[VAR61]], i32 0, i32 1
-// CHECK: store i64 2, i64* %[[VAR62]]
-// CHECK: store i64 -3, i64* %[[VAR63]]
-// CHECK: %[[VAR64:[A-Za-z0-9.]+]] = getelementptr { i64, i64 }* %[[VAR61]], i32 0, i32 0
-// CHECK: %[[VAR65:[A-Za-z0-9.]+]] = load i64* %[[VAR64]], align 1
-// CHECK: %[[VAR66:[A-Za-z0-9.]+]] = getelementptr { i64, i64 }* %[[VAR61]], i32 0, i32 1
-// CHECK: %[[VAR67:[A-Za-z0-9.]+]] = load i64* %[[VAR66]], align 1
-// CHECK: %{{[A-Za-z0-9.]+}} = call i64 @foo_long(i64 %[[VAR65]], i64 %[[VAR67]])
-
-void bar_long_long(void) {
-  foo_long_long(2LL - 3LLi);
-}
-
-// CHECK: define void @bar_long_long() [[NUW]] {
-// CHECK: %[[VAR71:[A-Za-z0-9.]+]] = alloca { i64, i64 }, align 8
-// CHECK: %[[VAR72:[A-Za-z0-9.]+]] = getelementptr inbounds { i64, i64 }* %[[VAR71]], i32 0, i32 0
-// CHECK: %[[VAR73:[A-Za-z0-9.]+]] = getelementptr inbounds { i64, i64 }* %[[VAR71]], i32 0, i32 1
-// CHECK: store i64 2, i64* %[[VAR72]]
-// CHECK: store i64 -3, i64* %[[VAR73]]
-// CHECK: %[[VAR74:[A-Za-z0-9.]+]] = getelementptr { i64, i64 }* %[[VAR71]], i32 0, i32 0
-// CHECK: %[[VAR75:[A-Za-z0-9.]+]] = load i64* %[[VAR74]], align 1
-// CHECK: %[[VAR76:[A-Za-z0-9.]+]] = getelementptr { i64, i64 }* %[[VAR71]], i32 0, i32 1
-// CHECK: %[[VAR77:[A-Za-z0-9.]+]] = load i64* %[[VAR76]], align 1
-// CHECK: %{{[A-Za-z0-9.]+}} = call i64 @foo_long_long(i64 %[[VAR75]], i64 %[[VAR77]])
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-complex-return.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-complex-return.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-complex-return.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-float crealf(_Complex float);
-double creal(_Complex double);
-long double creall(_Complex long double);
-
-_Complex float foo_float(_Complex float x) {
-  return x;
-}
-
-// CHECK: define { float, float } @foo_float(float {{[%A-Za-z0-9.]+}}, float {{[%A-Za-z0-9.]+}}) [[NUW:#[0-9]+]] {
-
-_Complex double foo_double(_Complex double x) {
-  return x;
-}
-
-// CHECK: define { double, double } @foo_double(double {{[%A-Za-z0-9.]+}}, double {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-_Complex long double foo_long_double(_Complex long double x) {
-  return x;
-}
-
-// CHECK: define { ppc_fp128, ppc_fp128 } @foo_long_double(ppc_fp128 {{[%A-Za-z0-9.]+}}, ppc_fp128 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-_Complex int foo_int(_Complex int x) {
-  return x;
-}
-
-// CHECK: define { i32, i32 } @foo_int(i32 {{[%A-Za-z0-9.]+}}, i32 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-_Complex short foo_short(_Complex short x) {
-  return x;
-}
-
-// CHECK: define { i16, i16 } @foo_short(i16 {{[%A-Za-z0-9.]+}}, i16 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-_Complex signed char foo_char(_Complex signed char x) {
-  return x;
-}
-
-// CHECK: define { i8, i8 } @foo_char(i8 {{[%A-Za-z0-9.]+}}, i8 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-_Complex long foo_long(_Complex long x) {
-  return x;
-}
-
-// CHECK: define { i64, i64 } @foo_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-_Complex long long foo_long_long(_Complex long long x) {
-  return x;
-}
-
-// CHECK: define { i64, i64 } @foo_long_long(i64 {{[%A-Za-z0-9.]+}}, i64 {{[%A-Za-z0-9.]+}}) [[NUW]] {
-
-float bar_float(void) {
-  return crealf(foo_float(2.0f - 2.5fi));
-}
-
-// CHECK: define float @bar_float() [[NUW]] {
-// CHECK: [[VAR1:[%A-Za-z0-9.]+]] = call { float, float } @foo_float
-// CHECK: extractvalue { float, float } [[VAR1]], 0
-// CHECK: extractvalue { float, float } [[VAR1]], 1
-
-double bar_double(void) {
-  return creal(foo_double(2.0 - 2.5i));
-}
-
-// CHECK: define double @bar_double() [[NUW]] {
-// CHECK: [[VAR2:[%A-Za-z0-9.]+]] = call { double, double } @foo_double
-// CHECK: extractvalue { double, double } [[VAR2]], 0
-// CHECK: extractvalue { double, double } [[VAR2]], 1
-
-long double bar_long_double(void) {
-  return creall(foo_long_double(2.0L - 2.5Li));
-}
-
-// CHECK: define ppc_fp128 @bar_long_double() [[NUW]] {
-// CHECK: [[VAR3:[%A-Za-z0-9.]+]] = call { ppc_fp128, ppc_fp128 } @foo_long_double
-// CHECK: extractvalue { ppc_fp128, ppc_fp128 } [[VAR3]], 0
-// CHECK: extractvalue { ppc_fp128, ppc_fp128 } [[VAR3]], 1
-
-int bar_int(void) {
-  return __real__(foo_int(2 - 3i));
-}
-
-// CHECK: define signext i32 @bar_int() [[NUW]] {
-// CHECK: [[VAR4:[%A-Za-z0-9.]+]] = call { i32, i32 } @foo_int
-// CHECK: extractvalue { i32, i32 } [[VAR4]], 0
-// CHECK: extractvalue { i32, i32 } [[VAR4]], 1
-
-short bar_short(void) {
-  return __real__(foo_short(2 - 3i));
-}
-
-// CHECK: define signext i16 @bar_short() [[NUW]] {
-// CHECK: [[VAR5:[%A-Za-z0-9.]+]] = call { i16, i16 } @foo_short
-// CHECK: extractvalue { i16, i16 } [[VAR5]], 0
-// CHECK: extractvalue { i16, i16 } [[VAR5]], 1
-
-signed char bar_char(void) {
-  return __real__(foo_char(2 - 3i));
-}
-
-// CHECK: define signext i8 @bar_char() [[NUW]] {
-// CHECK: [[VAR6:[%A-Za-z0-9.]+]] = call { i8, i8 } @foo_char
-// CHECK: extractvalue { i8, i8 } [[VAR6]], 0
-// CHECK: extractvalue { i8, i8 } [[VAR6]], 1
-
-long bar_long(void) {
-  return __real__(foo_long(2L - 3Li));
-}
-
-// CHECK: define i64 @bar_long() [[NUW]] {
-// CHECK: [[VAR7:[%A-Za-z0-9.]+]] = call { i64, i64 } @foo_long
-// CHECK: extractvalue { i64, i64 } [[VAR7]], 0
-// CHECK: extractvalue { i64, i64 } [[VAR7]], 1
-
-long long bar_long_long(void) {
-  return __real__(foo_long_long(2LL - 3LLi));
-}
-
-// CHECK: define i64 @bar_long_long() [[NUW]] {
-// CHECK: [[VAR8:[%A-Za-z0-9.]+]] = call { i64, i64 } @foo_long_long
-// CHECK: extractvalue { i64, i64 } [[VAR8]], 0
-// CHECK: extractvalue { i64, i64 } [[VAR8]], 1
-
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-extend.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-extend.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-extend.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -O0 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-void f1(int x) { return; }
-// CHECK: define void @f1(i32 signext %x) [[NUW:#[0-9]+]]
-
-void f2(unsigned int x) { return; }
-// CHECK: define void @f2(i32 zeroext %x) [[NUW]]
-
-int f3(void) { return 0; }
-// CHECK: define signext i32 @f3() [[NUW]]
-
-unsigned int f4(void) { return 0; }
-// CHECK: define zeroext i32 @f4() [[NUW]]
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-struct-onefloat.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-struct-onefloat.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-struct-onefloat.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -O0 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-typedef struct s1 { float f; } Sf;
-typedef struct s2 { double d; } Sd;
-typedef struct s4 { Sf fs; } SSf;
-typedef struct s5 { Sd ds; } SSd;
-
-void bar(Sf a, Sd b, SSf d, SSd e) {}
-
-// CHECK: define void @bar
-// CHECK:  %a = alloca %struct.s1, align 4
-// CHECK:  %b = alloca %struct.s2, align 8
-// CHECK:  %d = alloca %struct.s4, align 4
-// CHECK:  %e = alloca %struct.s5, align 8
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s1* %a, i32 0, i32 0
-// CHECK:  store float %a.coerce, float* %{{[a-zA-Z0-9.]+}}, align 1
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s2* %b, i32 0, i32 0
-// CHECK:  store double %b.coerce, double* %{{[a-zA-Z0-9.]+}}, align 1
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s4* %d, i32 0, i32 0
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s1* %{{[a-zA-Z0-9.]+}}, i32 0, i32 0
-// CHECK:  store float %d.coerce, float* %{{[a-zA-Z0-9.]+}}, align 1
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s5* %e, i32 0, i32 0
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s2* %{{[a-zA-Z0-9.]+}}, i32 0, i32 0
-// CHECK:  store double %e.coerce, double* %{{[a-zA-Z0-9.]+}}, align 1
-// CHECK:  ret void
-
-void foo(void) 
-{
-  Sf p1 = { 22.63f };
-  Sd p2 = { 19.47 };
-  SSf p4 = { { 22.63f } };
-  SSd p5 = { { 19.47 } };
-  bar(p1, p2, p4, p5);
-}
-
-// CHECK: define void @foo
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s1* %p1, i32 0, i32 0
-// CHECK:  %{{[0-9]+}} = load float* %{{[a-zA-Z0-9.]+}}, align 1
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s2* %p2, i32 0, i32 0
-// CHECK:  %{{[0-9]+}} = load double* %{{[a-zA-Z0-9.]+}}, align 1
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s4* %p4, i32 0, i32 0
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s1* %{{[a-zA-Z0-9.]+}}, i32 0, i32 0
-// CHECK:  %{{[0-9]+}} = load float* %{{[a-zA-Z0-9.]+}}, align 1
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s5* %p5, i32 0, i32 0
-// CHECK:  %{{[a-zA-Z0-9.]+}} = getelementptr %struct.s2* %{{[a-zA-Z0-9.]+}}, i32 0, i32 0
-// CHECK:  %{{[0-9]+}} = load double* %{{[a-zA-Z0-9.]+}}, align 1
-// CHECK:  call void @bar(float inreg %{{[0-9]+}}, double inreg %{{[0-9]+}}, float inreg %{{[0-9]+}}, double inreg %{{[0-9]+}})
-// CHECK:  ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-varargs-complex.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-varargs-complex.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-varargs-complex.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-#include <stdarg.h>
-
-void testva (int n, ...)
-{
-  va_list ap;
-
-  _Complex int i   = va_arg(ap, _Complex int);
-  // CHECK: %[[VAR40:[A-Za-z0-9.]+]] = load i8** %[[VAR100:[A-Za-z0-9.]+]]
-  // CHECK-NEXT: %[[VAR41:[A-Za-z0-9.]+]] = getelementptr i8* %[[VAR40]], i64 16
-  // CHECK-NEXT: store i8* %[[VAR41]], i8** %[[VAR100]]
-  // CHECK-NEXT: %[[VAR1:[A-Za-z0-9.]+]] = ptrtoint i8* %[[VAR40]] to i64
-  // CHECK-NEXT: %[[VAR2:[A-Za-z0-9.]+]] = add i64 %[[VAR1]], 4
-  // CHECK-NEXT: %[[VAR3:[A-Za-z0-9.]+]] = add i64 %[[VAR1]], 12
-  // CHECK-NEXT: %[[VAR4:[A-Za-z0-9.]+]] = inttoptr i64 %[[VAR2]] to i32*
-  // CHECK-NEXT: %[[VAR5:[A-Za-z0-9.]+]] = inttoptr i64 %[[VAR3]] to i32*
-  // CHECK-NEXT: %[[VAR6:[A-Za-z0-9.]+]] = load i32* %[[VAR4]]
-  // CHECK-NEXT: %[[VAR7:[A-Za-z0-9.]+]] = load i32* %[[VAR5]]
-  // CHECK-NEXT: %[[VAR8:[A-Za-z0-9.]+]] = getelementptr inbounds { i32, i32 }* %[[VAR0:[A-Za-z0-9.]+]], i32 0, i32 0
-  // CHECK-NEXT: %[[VAR9:[A-Za-z0-9.]+]] = getelementptr inbounds { i32, i32 }* %[[VAR0]], i32 0, i32 1
-  // CHECK-NEXT: store i32 %[[VAR6]], i32* %[[VAR8]]
-  // CHECK-NEXT: store i32 %[[VAR7]], i32* %[[VAR9]]
-
-  _Complex short s = va_arg(ap, _Complex short);
-  // CHECK: %[[VAR50:[A-Za-z0-9.]+]] = load i8** %[[VAR100:[A-Za-z0-9.]+]]
-  // CHECK-NEXT: %[[VAR51:[A-Za-z0-9.]+]] = getelementptr i8* %[[VAR50]], i64 16
-  // CHECK-NEXT: store i8* %[[VAR51]], i8** %[[VAR100]]
-  // CHECK: %[[VAR11:[A-Za-z0-9.]+]] = ptrtoint i8* %{{[A-Za-z0-9.]+}} to i64
-  // CHECK-NEXT: %[[VAR12:[A-Za-z0-9.]+]] = add i64 %[[VAR11]], 6
-  // CHECK-NEXT: %[[VAR13:[A-Za-z0-9.]+]] = add i64 %[[VAR11]], 14
-  // CHECK-NEXT: %[[VAR14:[A-Za-z0-9.]+]] = inttoptr i64 %[[VAR12]] to i16*
-  // CHECK-NEXT: %[[VAR15:[A-Za-z0-9.]+]] = inttoptr i64 %[[VAR13]] to i16*
-  // CHECK-NEXT: %[[VAR16:[A-Za-z0-9.]+]] = load i16* %[[VAR14]]
-  // CHECK-NEXT: %[[VAR17:[A-Za-z0-9.]+]] = load i16* %[[VAR15]]
-  // CHECK-NEXT: %[[VAR18:[A-Za-z0-9.]+]] = getelementptr inbounds { i16, i16 }* %[[VAR10:[A-Za-z0-9.]+]], i32 0, i32 0
-  // CHECK-NEXT: %[[VAR19:[A-Za-z0-9.]+]] = getelementptr inbounds { i16, i16 }* %[[VAR10]], i32 0, i32 1
-  // CHECK-NEXT: store i16 %[[VAR16]], i16* %[[VAR18]]
-  // CHECK-NEXT: store i16 %[[VAR17]], i16* %[[VAR19]]
-
-  _Complex char c  = va_arg(ap, _Complex char);
-  // CHECK: %[[VAR60:[A-Za-z0-9.]+]] = load i8** %[[VAR100:[A-Za-z0-9.]+]]
-  // CHECK-NEXT: %[[VAR61:[A-Za-z0-9.]+]] = getelementptr i8* %[[VAR60]], i64 16
-  // CHECK-NEXT: store i8* %[[VAR61]], i8** %[[VAR100]]
-  // CHECK: %[[VAR21:[A-Za-z0-9.]+]] = ptrtoint i8* %{{[A-Za-z0-9.]+}} to i64
-  // CHECK-NEXT: %[[VAR22:[A-Za-z0-9.]+]] = add i64 %[[VAR21]], 7
-  // CHECK-NEXT: %[[VAR23:[A-Za-z0-9.]+]] = add i64 %[[VAR21]], 15
-  // CHECK-NEXT: %[[VAR24:[A-Za-z0-9.]+]] = inttoptr i64 %[[VAR22]] to i8*
-  // CHECK-NEXT: %[[VAR25:[A-Za-z0-9.]+]] = inttoptr i64 %[[VAR23]] to i8*
-  // CHECK-NEXT: %[[VAR26:[A-Za-z0-9.]+]] = load i8* %[[VAR24]]
-  // CHECK-NEXT: %[[VAR27:[A-Za-z0-9.]+]] = load i8* %[[VAR25]]
-  // CHECK-NEXT: %[[VAR28:[A-Za-z0-9.]+]] = getelementptr inbounds { i8, i8 }* %[[VAR20:[A-Za-z0-9.]+]], i32 0, i32 0
-  // CHECK-NEXT: %[[VAR29:[A-Za-z0-9.]+]] = getelementptr inbounds { i8, i8 }* %[[VAR20]], i32 0, i32 1
-  // CHECK-NEXT: store i8 %[[VAR26]], i8* %[[VAR28]]
-  // CHECK-NEXT: store i8 %[[VAR27]], i8* %[[VAR29]]
-
-  _Complex float f = va_arg(ap, _Complex float);
-  // CHECK: %[[VAR70:[A-Za-z0-9.]+]] = load i8** %[[VAR100:[A-Za-z0-9.]+]]
-  // CHECK-NEXT: %[[VAR71:[A-Za-z0-9.]+]] = getelementptr i8* %[[VAR70]], i64 16
-  // CHECK-NEXT: store i8* %[[VAR71]], i8** %[[VAR100]]
-  // CHECK: %[[VAR31:[A-Za-z0-9.]+]] = ptrtoint i8* %{{[A-Za-z0-9.]+}} to i64
-  // CHECK-NEXT: %[[VAR32:[A-Za-z0-9.]+]] = add i64 %[[VAR31]], 4
-  // CHECK-NEXT: %[[VAR33:[A-Za-z0-9.]+]] = add i64 %[[VAR31]], 12
-  // CHECK-NEXT: %[[VAR34:[A-Za-z0-9.]+]] = inttoptr i64 %[[VAR32]] to float*
-  // CHECK-NEXT: %[[VAR35:[A-Za-z0-9.]+]] = inttoptr i64 %[[VAR33]] to float*
-  // CHECK-NEXT: %[[VAR36:[A-Za-z0-9.]+]] = load float* %[[VAR34]]
-  // CHECK-NEXT: %[[VAR37:[A-Za-z0-9.]+]] = load float* %[[VAR35]]
-  // CHECK-NEXT: %[[VAR38:[A-Za-z0-9.]+]] = getelementptr inbounds { float, float }* %[[VAR30:[A-Za-z0-9.]+]], i32 0, i32 0
-  // CHECK-NEXT: %[[VAR39:[A-Za-z0-9.]+]] = getelementptr inbounds { float, float }* %[[VAR30]], i32 0, i32 1
-  // CHECK-NEXT: store float %[[VAR36]], float* %[[VAR38]]
-  // CHECK-NEXT: store float %[[VAR37]], float* %[[VAR39]]
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-varargs-struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-varargs-struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ppc64-varargs-struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-#include <stdarg.h>
-
-struct x {
-  long a;
-  double b;
-};
-
-void testva (int n, ...)
-{
-  va_list ap;
-
-  struct x t = va_arg (ap, struct x);
-// CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x*
-// CHECK: bitcast %struct.x* %t to i8*
-// CHECK: bitcast %struct.x* %{{[0-9]+}} to i8*
-// CHECK: call void @llvm.memcpy
-
-  int v = va_arg (ap, int);
-// CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64
-// CHECK: add i64 %{{[0-9]+}}, 4
-// CHECK: inttoptr i64 %{{[0-9]+}} to i8*
-// CHECK: bitcast i8* %{{[0-9]+}} to i32*
-
-  __int128_t u = va_arg (ap, __int128_t);
-// CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128*
-// CHECK-NEXT: load i128* %{{[0-9]+}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pr12251.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pr12251.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pr12251.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -O1 -relaxed-aliasing -o - | FileCheck %s
-
-enum e1 {e1_a = -1 };
-enum e1 g1(enum e1 *x) {
-  return *x;
-}
-
-// CHECK: define i32 @g1
-// CHECK: load i32* %x, align 4
-// CHECK-NOT: range
-// CHECK: ret

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pr13168.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pr13168.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pr13168.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-typedef int (*_MD_Open64)(int oflag, ...);
-_MD_Open64 _open64;
-void PR_OpenFile(int mode) {
-_open64(0, mode);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pr2394.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pr2394.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pr2394.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-struct __attribute((packed)) x {int a : 24;};
-int a(struct x* g) {
-  // CHECK: load i24
-  return g->a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pr3518.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pr3518.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pr3518.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | FileCheck %s
-// PR 3518
-// Some of the objects were coming out as unintialized (external) before 3518
-// was fixed.  Internal names are different between llvm-gcc and clang so they
-// are not tested.
-
-extern void abort (void);
-
-// CHECK: @.compoundliteral = internal global %struct.A { i32 1, i32 2 }
-// CHECK: @.compoundliteral1 = internal global %struct.A { i32 3, i32 4 }
-// CHECK: @.compoundliteral2 = internal global %struct.B { %struct.A* @.compoundliteral, %struct.A* @.compoundliteral1 }
-// CHECK: @.compoundliteral3 = internal global %struct.A { i32 5, i32 6 }
-
-struct A { int i; int j; };
-struct B { struct A *a; struct A *b; };
-struct C { struct B *c; struct A *d; };
-struct C e = { &(struct B) { &(struct A) { 1, 2 }, &(struct A) { 3, 4 } }, &(struct A) { 5, 6 } };
-
-int
-main (void)
-{
-  if (e.c->a->i != 1 || e.c->a->j != 2)
-    abort ();
-  if (e.c->b->i != 3 || e.c->b->j != 4)
-    abort ();
-  if (e.d->i != 5 || e.d->j != 6)
-    abort ();
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pr4349.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pr4349.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pr4349.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | FileCheck %s
-// PR 4349
-
-union reg
-{
-    unsigned char b[2][2];
-    unsigned short w[2];
-    unsigned int d;
-};
-struct cpu
-{
-    union reg pc;
-};
-extern struct cpu cpu;
-struct svar
-{
-    void *ptr;
-};
-// CHECK: @svars1 = global [1 x %struct.svar] [%struct.svar { i8* bitcast (%struct.cpu* @cpu to i8*) }]
-struct svar svars1[] =
-{
-    { &((cpu.pc).w[0]) }
-};
-// CHECK: @svars2 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8* bitcast (%struct.cpu* @cpu to i8*), i64 1) }]
-struct svar svars2[] =
-{
-    { &((cpu.pc).b[0][1]) }
-};
-// CHECK: @svars3 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8* bitcast (%struct.cpu* @cpu to i8*), i64 2) }]
-struct svar svars3[] =
-{
-    { &((cpu.pc).w[1]) }
-};
-// CHECK: @svars4 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8* bitcast (%struct.cpu* @cpu to i8*), i64 3) }]
-struct svar svars4[] =
-{
-    { &((cpu.pc).b[1][1]) }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pr5406.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pr5406.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pr5406.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 %s -emit-llvm -triple arm-apple-darwin -o - | FileCheck %s
-// PR 5406
-
-typedef struct { char x[3]; } A0;
-void foo (int i, ...);
-
-
-// CHECK: call arm_aapcscc  void (i32, ...)* @foo(i32 1, [1 x i32] {{.*}})
-int main (void)
-{
-  A0 a3;
-  a3.x[0] = 0;
-  a3.x[0] = 0;
-  a3.x[2] = 26;
-  foo (1,  a3 );
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pr9614.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pr9614.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pr9614.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm %s -o - | FileCheck %s
-
-extern void foo_alias (void) __asm ("foo");
-inline void foo (void) {
-  return foo_alias ();
-}
-extern void bar_alias (void) __asm ("bar");
-inline __attribute__ ((__always_inline__)) void bar (void) {
-  return bar_alias ();
-}
-extern char *strrchr_foo (const char *__s, int __c)  __asm ("strrchr");
-extern inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * strrchr_foo (const char *__s, int __c)  {
-  return __builtin_strrchr (__s, __c);
-}
-void f(void) {
-  foo();
-  bar();
-  strrchr_foo("", '.');
-}
-
-// CHECK: define void @f()
-// CHECK: call void @foo()
-// CHECK-NEXT: call void @bar()
-// CHECK-NEXT: call i8* @strrchr(
-// CHECK-NEXT: ret void
-
-// CHECK: declare void @foo()
-// CHECK: declare void @bar()
-// CHECK: declare i8* @strrchr(i8*, i32)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 -emit-llvm -o - %s | FileCheck %s
-
-// PR4610
-#pragma pack(4)
-struct ref {
-        struct ref *next;
-} refs;
-
-// PR13580
-struct S
-{
-  char a[3];
-#pragma pack(1)
-  struct T
-  {
-    char b;
-    int c;
-  } d;
-#pragma pack()
-  struct T2
-  {
-    char b;
-    int c;
-  } d2;
-} ss;
-
-struct S3
-{
-  char a[3];
-#pragma pack(push, 2)
-  struct T3
-  {
-    char b;
-    int c;
-  } d;
-#pragma pack(pop)
-  struct T32
-  {
-    char b;
-    int c;
-  } e;
-} s3;
-
-struct S4
-{
-  char a[3];
-#pragma align=packed
-  struct T4
-  {
-    char b;
-    int c;
-  } d;
-  int e;
-} s4;
-
-// CHECK: [[struct_ref:%[a-zA-Z0-9_.]+]] = type <{ [[struct_ref]]* }>
-// CHECK: [[struct_S:%[a-zA-Z0-9_.]+]] = type { [3 x i8], [[struct_T:%[a-zA-Z0-9_.]+]], [[struct_T2:%[a-zA-Z0-9_.]+]] }
-// CHECK: [[struct_T]] = type <{ i8, i32 }>
-// CHECK: [[struct_T2]] = type { i8, i32 }
-
-// CHECK: %struct.S3 = type <{ [3 x i8], i8, %struct.T3, [2 x i8], %struct.T32 }>
-// CHECK: %struct.T3 = type <{ i8, i8, i32 }>
-// CHECK: %struct.T32 = type { i8, i32 }
-// CHECK: %struct.S4 = type { [3 x i8], %struct.T4, i32 }
-// CHECK: %struct.T4 = type <{ i8, i32 }>
-
-// CHECK: @refs = common global [[struct_ref]]
-// CHECK: @ss = common global [[struct_S]]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 %s -emit-llvm -o - | FileCheck -check-prefix X32 %s
-// CHECK-X32: %struct.s0 = type { i64, i64, i32, [12 x i32] }
-// CHECK-X32: %struct.s1 = type { [15 x i32], %struct.s0 }
-
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -emit-llvm -o - | FileCheck -check-prefix X64 %s
-// CHECK-X64: %struct.s0 = type <{ i64, i64, i32, [12 x i32] }>
-// CHECK-X64: %struct.s1 = type <{ [15 x i32], %struct.s0 }>
-
-// rdar://problem/7095436
-#pragma pack(4)
-
-struct s0 {
-  long long a __attribute__((aligned(8)));
-  long long b __attribute__((aligned(8)));
-  unsigned int c __attribute__((aligned(8)));
-  int d[12];
-} a;
-
-struct s1 {
-  int a[15];
-  struct s0 b;
-} b;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-pack-3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 %s -emit-llvm -o - | FileCheck -check-prefix X32 %s
-// CHECK-X32: %union.command = type <{ i8*, [2 x i8] }>
-
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -emit-llvm -o - | FileCheck -check-prefix X64 %s
-// CHECK-X64: %union.command = type <{ i8*, [2 x i8] }>
-
-// <rdar://problem/7184250>
-#pragma pack(push, 2)
-typedef union command {
-  void *windowRef;
-  struct menu {
-    void *menuRef;
-    unsigned char menuItemIndex;
-  } menu;
-} command;
-
-command c;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-visibility.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-visibility.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-visibility.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s
-
-#pragma GCC visibility push(hidden)
-int x = 2;
-// CHECK: @x = hidden global
-
-extern int y;
-#pragma GCC visibility pop
-int y = 4;
-// CHECK: @y = hidden global
-
-#pragma GCC visibility push(hidden)
-extern __attribute((visibility("default"))) int z;
-int z = 0;
-// CHECK: @z = global
-#pragma GCC visibility pop
-
-#pragma GCC visibility push(hidden)
-void f() {}
-// CHECK: define hidden void @f
-
-__attribute((visibility("default"))) void g();
-void g() {}
-// CHECK: define void @g

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-weak.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-weak.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/pragma-weak.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,184 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm %s -o - -verify | FileCheck %s
-
-// CHECK: @weakvar = weak global
-// CHECK: @__weakvar_alias = common global
-// CHECK: @correct_linkage = weak global
-
-
-// CHECK: @both = alias void ()* @__both
-// CHECK: @both2 = alias void ()* @__both2
-// CHECK: @both3 = alias weak void ()* @__both3
-// CHECK: @a3 = alias weak void ()* @__a3
-// CHECK: @weakvar_alias = alias weak i32* @__weakvar_alias
-// CHECK: @foo = alias weak void ()* @__foo
-// CHECK: @foo2 = alias weak void ()* @__foo2
-// CHECK: @stutter = alias weak void ()* @__stutter
-// CHECK: @stutter2 = alias weak void ()* @__stutter2
-// CHECK: @declfirst = alias weak void ()* @__declfirst
-// CHECK: @declfirstattr = alias weak void ()* @__declfirstattr
-// CHECK: @mix2 = alias weak void ()* @__mix2
-// CHECK: @a1 = alias weak void ()* @__a1
-// CHECK: @xxx = alias weak void ()* @__xxx
-
-
-
-// CHECK: define weak void @weakdef()
-
-
-#pragma weak weakvar
-int weakvar;
-
-#pragma weak weakdef
-void weakdef(void) {}
-
-#pragma weak param // expected-warning {{weak identifier 'param' never declared}}
-#pragma weak correct_linkage
-void f(int param) {
-  int correct_linkage;
-}
-
-#pragma weak weakvar_alias = __weakvar_alias
-int __weakvar_alias;
-
-#pragma weak foo = __foo
-void __foo(void) {}
-// CHECK: define void @__foo()
-
-
-void __foo2(void) {}
-#pragma weak foo2 = __foo2
-// CHECK: define void @__foo2()
-
-
-///// test errors
-
-#pragma weak unused // expected-warning {{weak identifier 'unused' never declared}}
-#pragma weak unused_alias = __unused_alias  // expected-warning {{weak identifier '__unused_alias' never declared}}
-
-#pragma weak td // expected-warning {{weak identifier 'td' never declared}}
-typedef int td;
-
-#pragma weak td2 = __td2 // expected-warning {{weak identifier '__td2' never declared}}
-typedef int __td2;
-
-
-///// test weird cases
-
-// test repeats
-
-#pragma weak stutter = __stutter
-#pragma weak stutter = __stutter
-void __stutter(void) {}
-// CHECK: define void @__stutter()
-
-void __stutter2(void) {}
-#pragma weak stutter2 = __stutter2
-#pragma weak stutter2 = __stutter2
-// CHECK: define void @__stutter2()
-
-
-// test decl/pragma weak order
-
-void __declfirst(void);
-#pragma weak declfirst = __declfirst
-void __declfirst(void) {}
-// CHECK: define void @__declfirst()
-
-void __declfirstattr(void) __attribute((noinline));
-#pragma weak declfirstattr = __declfirstattr
-void __declfirstattr(void) {}
-// CHECK: define void @__declfirstattr()
-
-//// test that other attributes are preserved
-
-//// ensure that pragma weak/__attribute((weak)) play nice
-
-void mix(void);
-#pragma weak mix
-__attribute((weak)) void mix(void) { }
-// CHECK: define weak void @mix()
-
-// ensure following __attributes are preserved and that only a single
-// alias is generated
-#pragma weak mix2 = __mix2
-void __mix2(void) __attribute((noinline));
-void __mix2(void) __attribute((noinline));
-void __mix2(void) {}
-// CHECK: define void @__mix2()
-
-////////////// test #pragma weak/__attribute combinations
-
-// if the SAME ALIAS is already declared then it overrides #pragma weak
-// resulting in a non-weak alias in this case
-void both(void) __attribute((alias("__both")));
-#pragma weak both = __both
-void __both(void) {}
-// CHECK: define void @__both()
-
-// if the TARGET is previously declared then whichever aliasing method
-// comes first applies and subsequent aliases are discarded.
-// TODO: warn about this
-
-void __both2(void);
-void both2(void) __attribute((alias("__both2"))); // first, wins
-#pragma weak both2 = __both2
-void __both2(void) {}
-// CHECK: define void @__both2()
-
-void __both3(void);
-#pragma weak both3 = __both3 // first, wins
-void both3(void) __attribute((alias("__both3")));
-void __both3(void) {}
-// CHECK: define void @__both3()
-
-///////////// ensure that #pragma weak does not alter existing __attributes()
-
-void __a1(void) __attribute((noinline));
-#pragma weak a1 = __a1
-void __a1(void) {}
-// CHECK: define void @__a1() [[NI:#[0-9]+]]
-
-// attributes introduced BEFORE a combination of #pragma weak and alias()
-// hold...
-void __a3(void) __attribute((noinline));
-#pragma weak a3 = __a3
-void a3(void) __attribute((alias("__a3")));
-void __a3(void) {}
-// CHECK: define void @__a3() [[NI]]
-
-#pragma weak xxx = __xxx
-__attribute((pure,noinline,const,fastcall)) void __xxx(void) { }
-// CHECK: void @__xxx() [[RN:#[0-9]+]]
-
-///////////// PR10878: Make sure we can call a weak alias
-void SHA512Pad(void *context) {}
-#pragma weak SHA384Pad = SHA512Pad
-void PR10878() { SHA384Pad(0); }
-// CHECK: call void @SHA384Pad(i8* null)
-
-
-// PR14046: Parse #pragma weak in function-local context
-extern int PR14046e(void);
-void PR14046f() {
-#pragma weak PR14046e
-  PR14046e();
-}
-// CHECK: declare extern_weak i32 @PR14046e()
-
-
-///////////// TODO: stuff that still doesn't work
-
-// due to the fact that disparate TopLevelDecls cannot affect each other
-// (due to clang's Parser and ASTConsumer behavior, and quite reasonable)
-// #pragma weak must appear before or within the same TopLevelDecl as it
-// references.
-void yyy(void){}
-void zzz(void){}
-#pragma weak yyy
-// NOTE: weak doesn't apply, not before or in same TopLevelDec(!)
-// CHECK: define void @yyy()
-
-int correct_linkage;
-
-// CHECK: attributes [[NI]] = { noinline nounwind{{.*}} }
-// CHECK: attributes [[RN]] = { noinline nounwind readnone{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/predefined-expr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/predefined-expr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/predefined-expr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: @__func__.plainFunction = private unnamed_addr constant [14 x i8] c"plainFunction\00"
-// CHECK: @__PRETTY_FUNCTION__.plainFunction = private unnamed_addr constant [21 x i8] c"void plainFunction()\00"
-// CHECK: @__func__.externFunction = private unnamed_addr constant [15 x i8] c"externFunction\00"
-// CHECK: @__PRETTY_FUNCTION__.externFunction = private unnamed_addr constant [22 x i8] c"void externFunction()\00"
-// CHECK: @__func__.privateExternFunction = private unnamed_addr constant [22 x i8] c"privateExternFunction\00"
-// CHECK: @__PRETTY_FUNCTION__.privateExternFunction = private unnamed_addr constant [29 x i8] c"void privateExternFunction()\00"
-// CHECK: @__func__.staticFunction = private unnamed_addr constant [15 x i8] c"staticFunction\00"
-// CHECK: @__PRETTY_FUNCTION__.staticFunction = private unnamed_addr constant [22 x i8] c"void staticFunction()\00"
-
-int printf(const char *, ...);
-
-void plainFunction() {
-  printf("__func__ %s\n", __func__);
-  printf("__FUNCTION__ %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-extern void externFunction() {
-  printf("__func__ %s\n", __func__);
-  printf("__FUNCTION__ %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-__private_extern__ void privateExternFunction() {
-  printf("__func__ %s\n", __func__);
-  printf("__FUNCTION__ %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-static void staticFunction() {
-  printf("__func__ %s\n", __func__);
-  printf("__FUNCTION__ %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-int main() {
-  plainFunction();
-  externFunction();
-  privateExternFunction();
-  staticFunction();
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/prefetchw-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/prefetchw-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/prefetchw-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-feature +prfchw -emit-llvm -o - %s | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-void prefetch_w(void *p) {
-  return _m_prefetchw(p);
-// CHECK: @prefetch_w
-// CHECK: call void @llvm.prefetch({{.*}}, i32 1, i32 3, i32 1)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/private-extern-redef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/private-extern-redef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/private-extern-redef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-darwin-apple -emit-llvm -o - %s | FileCheck %s
-// rdar://9609649
-
-__private_extern__ const int I;
-__private_extern__ const int J = 927;
-
-__private_extern__ const int K;
-const int K = 37;
-
-const int L = 10;
-__private_extern__ const int L;
-
-__private_extern__ int M;
-int M = 20;
-
-__private_extern__ int N;
-int N;
-
-__private_extern__ int O;
-int O=1;
-
-__private_extern__ int P;
-extern int P;
-
-void bar(int);
-
-void foo() {
-  bar(I);
-}
-
-// CHECK: @J = hidden constant
-// CHECK: @K = hidden constant
-// CHECK: @L = constant
-// CHECK: @M = hidden global
-// CHECK: @O = hidden global
-// CHECK: @I = external hidden
-// CHECK: @N = common hidden global
-// CHECK-NOT: @P
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/private-extern.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/private-extern.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/private-extern.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: grep '@g0 = external hidden constant i32' %t
-// RUN: grep '@g1 = hidden constant i32 1' %t
-
-__private_extern__ const int g0;
-__private_extern__ const int g1 = 1;
-
-int f0(void) {
-  return g0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/r5.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/r5.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/r5.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -target armv7-none-linux-gnueabi -mcpu=cortex-r5 -emit-llvm -S %s  -o /dev/null
-
-int main() {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/rdrand-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/rdrand-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/rdrand-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -target-feature +rdrnd -target-feature +rdseed -emit-llvm -o - %s | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-int rdrand16(unsigned short *p) {
-  return _rdrand16_step(p);
-// CHECK: @rdrand16
-// CHECK: call { i16, i32 } @llvm.x86.rdrand.16
-// CHECK: store i16
-}
-
-int rdrand32(unsigned *p) {
-  return _rdrand32_step(p);
-// CHECK: @rdrand32
-// CHECK: call { i32, i32 } @llvm.x86.rdrand.32
-// CHECK: store i32
-}
-
-int rdrand64(unsigned long long *p) {
-  return _rdrand64_step(p);
-// CHECK: @rdrand64
-// CHECK: call { i64, i32 } @llvm.x86.rdrand.64
-// CHECK: store i64
-}
-
-int rdseed16(unsigned short *p) {
-  return _rdseed16_step(p);
-// CHECK: @rdseed16
-// CHECK: call { i16, i32 } @llvm.x86.rdseed.16
-// CHECK: store i16
-}
-
-int rdseed32(unsigned *p) {
-  return _rdseed32_step(p);
-// CHECK: @rdseed32
-// CHECK: call { i32, i32 } @llvm.x86.rdseed.32
-// CHECK: store i32
-}
-
-int rdseed64(unsigned long long *p) {
-  return _rdseed64_step(p);
-// CHECK: @rdseed64
-// CHECK: call { i64, i32 } @llvm.x86.rdseed.64
-// CHECK: store i64
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/redef-ext-inline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/redef-ext-inline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/redef-ext-inline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -std=gnu89
-// rdar://7208839
-
-extern inline int f1 (void) {return 1;}
-int f3 (void) {return f1();}
-int f1 (void) {return 0;}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/redefine_extname.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/redefine_extname.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/redefine_extname.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple=i386-pc-solaris2.11 -w -emit-llvm %s -o - | FileCheck %s
-
-#pragma redefine_extname fake real
-#pragma redefine_extname name alias
-
-extern int fake(void);
-
-int name;
-
-// __PRAGMA_REDEFINE_EXTNAME should be defined.  This will fail if it isn't...
-int fish() { return fake() + __PRAGMA_REDEFINE_EXTNAME + name; }
-// Check that the call to fake() is emitted as a call to real()
-// CHECK:   call i32 @real()
-// Check that this also works with variables names
-// CHECK:   load i32* @alias

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/regparm-flag.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/regparm-flag.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/regparm-flag.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -mregparm 4 %s -emit-llvm -o - | FileCheck %s
-
-void f1(int a, int b, int c, int d,
-        int e, int f, int g, int h);
-
-void f2(int a, int b) __attribute((regparm(0)));
-
-void f0() {
-// CHECK: call void @f1(i32 inreg 1, i32 inreg 2, i32 inreg 3, i32 inreg 4,
-// CHECK: i32 5, i32 6, i32 7, i32 8)
-  f1(1, 2, 3, 4, 5, 6, 7, 8);
-// CHECK: call void @f2(i32 1, i32 2)
-  f2(1, 2);
-}
-
-// CHECK: declare void @f1(i32 inreg, i32 inreg, i32 inreg, i32 inreg,
-// CHECK: i32, i32, i32, i32)
-// CHECK: declare void @f2(i32, i32)
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/regparm-struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/regparm-struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/regparm-struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,177 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-__attribute__((regparm(3))) void f1(int a, int b, int c, int d);
-// CHECK: declare void @f1(i32 inreg, i32 inreg, i32 inreg, i32)
-void g1() {
-  f1(41, 42, 43, 44);
-}
-
-struct s1 {
-  int x1;
-};
-__attribute__((regparm(3))) void f2(int a, int b, struct s1 c, int d);
-// CHECK: declare void @f2(i32 inreg, i32 inreg, i32 inreg, i32)
-void g2() {
-  struct s1 x = {43};
-  f2(41, 42, x, 44);
-}
-
-struct s2 {
-  int x1;
-  int x2;
-};
-__attribute__((regparm(3))) void f3(int a, int b, struct s2 c, int d);
-// CHECK: declare void @f3(i32 inreg, i32 inreg, i32, i32, i32)
-void g3() {
-  struct s2 x = {43, 44};
-  f3(41, 42, x, 45);
-}
-__attribute__((regparm(3))) void f4(int a, struct s2 b, int c);
-// CHECK: declare void @f4(i32 inreg, i32 inreg, i32 inreg, i32)
-void g4() {
-  struct s2 x = {42, 43};
-  f4(41, x, 44);
-}
-
-struct s3 {
-  int x1;
-  int x2;
-  int x3;
-};
-__attribute__((regparm(3))) void f5(int a, struct s3 b, int c);
-// CHECK: declare void @f5(i32 inreg, i32, i32, i32, i32)
-void g5() {
-  struct s3 x = {42, 43, 44};
-  f5(41, x, 45);
-}
-__attribute__((regparm(3))) void f6(struct s3 a, int b);
-// CHECK: declare void @f6(i32 inreg, i32 inreg, i32 inreg, i32)
-void g6() {
-  struct s3 x = {41, 42, 43};
-  f6(x, 44);
-}
-
-struct s4 {
-  int x1;
-  int x2;
-  int x3;
-  int x4;
-};
-__attribute__((regparm(3))) void f7(struct s4 a, int b);
-// CHECK: declare void @f7(i32, i32, i32, i32, i32)
-void g7() {
-  struct s4 x = {41, 42, 43, 44};
-  f7(x, 45);
-}
-
-__attribute__((regparm(3))) void f8(float a, int b);
-// CHECK: declare void @f8(float, i32 inreg)
-void g8(void) {
-  f8(41, 42);
-}
-
-struct s5 {
-  float x1;
-};
-__attribute__((regparm(3))) void f9(struct s5 a, int b);
-// CHECK: declare void @f9(float, i32 inreg)
-void g9(void) {
-  struct s5 x = {41};
-  f9(x, 42);
-}
-
-struct s6 {
-  float x1;
-  int x2;
-};
-__attribute__((regparm(3))) void f10(struct s6 a, int b);
-// CHECK: declare void @f10(i32 inreg, i32 inreg, i32 inreg)
-void g10(void) {
-  struct s6 x = {41, 42};
-  f10(x, 43);
-}
-
-struct s7 {
-  float x1;
-  int x2;
-  float x3;
-};
-__attribute__((regparm(3))) void f11(struct s7 a, int b);
-// CHECK: declare void @f11(i32 inreg, i32 inreg, i32 inreg, i32)
-void g11(void) {
-  struct s7 x = {41, 42, 43};
-  f11(x, 44);
-}
-
-struct s8 {
-  float x1;
-  float x2;
-};
-__attribute__((regparm(3))) void f12(struct s8 a, int b);
-// CHECK: declare void @f12(i32 inreg, i32 inreg, i32 inreg)
-void g12(void) {
-  struct s8 x = {41, 42};
-  f12(x, 43);
-}
-
-struct s9 {
-  float x1;
-  float x2;
-  float x3;
-};
-__attribute__((regparm(3))) void f13(struct s9 a, int b);
-// CHECK: declare void @f13(i32 inreg, i32 inreg, i32 inreg, i32)
-void g13(void) {
-  struct s9 x = {41, 42, 43};
-  f13(x, 44);
-}
-
-struct s10 {
-  double x1;
-};
-__attribute__((regparm(3))) void f14(struct s10 a, int b, int c);
-// CHECK: declare void @f14(double, i32 inreg, i32 inreg)
-void g14(void) {
-  struct s10 x = { 41 };
-  f14(x, 42, 43);
-}
-
-struct s11 {
-  double x1;
-  double x2;
-};
-__attribute__((regparm(3))) void f15(struct s11 a, int b);
-// CHECK: declare void @f15(double, double, i32)
-void g15(void) {
-  struct s11 x = { 41, 42 };
-  f15(x, 43);
-}
-
-struct s12 {
-  double x1;
-  float x2;
-};
-__attribute__((regparm(3))) void f16(struct s12 a, int b);
-// CHECK: declare void @f16(i32 inreg, i32 inreg, i32 inreg, i32)
-void g16(void) {
-  struct s12 x = { 41, 42 };
-  f16(x, 43);
-}
-
-__attribute__((regparm(3))) struct s12 f17(int a, int b, int c);
-// CHECK: declare void @f17(%struct.s12* inreg sret, i32 inreg, i32 inreg, i32)
-void g17(void) {
-  f17(41, 42, 43);
-}
-
-struct s13 {
-  struct inner {
-    float x;
-  } y;
-};
-__attribute__((regparm(3))) void f18(struct s13 a, int b, int c, int d);
-// CHECK: declare void @f18(%struct.s13* byval align 4, i32 inreg, i32 inreg, i32 inreg)
-void g18(void) {
-  struct s13 x = {{41}};
-  f18(x, 42, 43, 44);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/regparm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/regparm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/regparm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-#define FASTCALL __attribute__((regparm(2)))
-
-typedef struct {
-  int aaa;
-  double bbbb;
-  int ccc[200];
-} foo;
-
-typedef void (*FType)(int, int)      __attribute ((regparm (3), stdcall));
-FType bar;
-
-extern void FASTCALL reduced(char b, double c, foo* d, double e, int f);
-
-// PR7025
-void FASTCALL f1(int i, int j, int k);
-// CHECK: define void @f1(i32 inreg %i, i32 inreg %j, i32 %k)
-void f1(int i, int j, int k) { }
-
-int
-main(void) {
-  // CHECK: call void @reduced(i8 inreg signext 0, {{.*}} %struct.foo* inreg null
-  reduced(0, 0.0, 0, 0.0, 0);
-  // CHECK: call x86_stdcallcc void {{.*}}(i32 inreg 1, i32 inreg 2)
-  bar(1,2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/restrict.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/restrict.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/restrict.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-darwin-apple -emit-llvm %s -o - | FileCheck %s
-
-// PR6695
-
-// CHECK: define void @test0(i32* %{{.*}}, i32 %{{.*}})
-void test0(int *x, int y) {
-}
-
-// CHECK: define void @test1(i32* noalias %{{.*}}, i32 %{{.*}})
-void test1(int * restrict x, int y) {
-}
-
-// CHECK: define void @test2(i32* %{{.*}}, i32* noalias %{{.*}})
-void test2(int *x, int * restrict y) {
-}
-
-typedef int * restrict rp;
-
-// CHECK: define void @test3(i32* noalias %{{.*}}, i32 %{{.*}})
-void test3(rp x, int y) {
-}
-
-// CHECK: define void @test4(i32* %{{.*}}, i32* noalias %{{.*}})
-void test4(int *x, rp y) {
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/rtm-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/rtm-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/rtm-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +rtm -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <immintrin.h>
-
-unsigned int test_xbegin(void) {
-  // CHECK: i32 @llvm.x86.xbegin()
-  return _xbegin();
-}
-
-void
-test_xend(void) {
-  // CHECK: void @llvm.x86.xend()
-  _xend();
-}
-
-void
-test_xabort(void) {
-  // CHECK: void @llvm.x86.xabort(i8 2)
-  _xabort(2);
-}
-
-unsigned int test_xtest(void) {
-  // CHECK: i32 @llvm.x86.xtest()
-  return _xtest();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-init-order.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-init-order.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-init-order.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsanitize=address,init-order -emit-llvm -o - %s | FileCheck %s
-
-struct PODStruct {
-  int x;
-};
-PODStruct s1;
-
-struct PODWithDtor {
-  ~PODWithDtor() { }
-  int x;
-};
-PODWithDtor s2;
-
-struct PODWithCtorAndDtor {
-  PODWithCtorAndDtor() { }
-  ~PODWithCtorAndDtor() { }
-  int x;
-};
-PODWithCtorAndDtor s3;
-
-// Check that ASan init-order checking ignores structs with trivial default
-// constructor.
-// CHECK: !llvm.asan.dynamically_initialized_globals = !{[[GLOB:![0-9]+]]}
-// CHECK: [[GLOB]] = metadata !{%struct.PODWithCtorAndDtor

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-recover.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-recover.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-recover.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsanitize=unsigned-integer-overflow %s -emit-llvm -o - | FileCheck %s --check-prefix=RECOVER
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsanitize=unsigned-integer-overflow -fno-sanitize-recover %s -emit-llvm -o - | FileCheck %s --check-prefix=ABORT
-
-
-// RECOVER: @test
-// ABORT: @test
-void test() {
-  extern volatile unsigned x, y, z;
-
-  // RECOVER: uadd.with.overflow.i32
-  // RECOVER: ubsan_handle_add_overflow(
-  // RECOVER-NOT: unreachable
-  // ABORT: uadd.with.overflow.i32
-  // ABORT: ubsan_handle_add_overflow_abort(
-  // ABORT: unreachable
-  x = y + z;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-thread-attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-thread-attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-thread-attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck -check-prefix=WITHOUT %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s -fsanitize=thread | FileCheck -check-prefix=TSAN %s
-// RUN: echo "src:%s" > %t
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s -fsanitize=thread -fsanitize-blacklist=%t | FileCheck -check-prefix=BL %s
-
-// REQUIRES: shell
-
-// The sanitize_thread attribute should be attached to functions
-// when ThreadSanitizer is enabled, unless no_sanitize_thread attribute
-// is present.
-
-// WITHOUT:  NoTSAN1{{.*}}) [[NOATTR:#[0-9]+]]
-// BL:  NoTSAN1{{.*}}) [[NOATTR:#[0-9]+]]
-// TSAN:  NoTSAN1{{.*}}) [[NOATTR:#[0-9]+]]
-__attribute__((no_sanitize_thread))
-int NoTSAN1(int *a) { return *a; }
-
-// WITHOUT:  NoTSAN2{{.*}}) [[NOATTR]]
-// BL:  NoTSAN2{{.*}}) [[NOATTR]]
-// TSAN:  NoTSAN2{{.*}}) [[NOATTR]]
-__attribute__((no_sanitize_thread))
-int NoTSAN2(int *a);
-int NoTSAN2(int *a) { return *a; }
-
-// WITHOUT:  TSANOk{{.*}}) [[NOATTR]]
-// BL:  TSANOk{{.*}}) [[NOATTR]]
-// TSAN: TSANOk{{.*}}) [[WITH:#[0-9]+]]
-int TSANOk(int *a) { return *a; }
-
-// WITHOUT:  TemplateTSANOk{{.*}}) [[NOATTR]]
-// BL:  TemplateTSANOk{{.*}}) [[NOATTR]]
-// TSAN: TemplateTSANOk{{.*}}) [[WITH]]
-template<int i>
-int TemplateTSANOk() { return i; }
-
-// WITHOUT:  TemplateNoTSAN{{.*}}) [[NOATTR]]
-// BL:  TemplateNoTSAN{{.*}}) [[NOATTR]]
-// TSAN: TemplateNoTSAN{{.*}}) [[NOATTR]]
-template<int i>
-__attribute__((no_sanitize_thread))
-int TemplateNoTSAN() { return i; }
-
-int force_instance = TemplateTSANOk<42>()
-                   + TemplateNoTSAN<42>();
-
-// Check that __cxx_global_var_init* get the sanitize_thread attribute.
-int global1 = 0;
-int global2 = *(int*)((char*)&global1+1);
-// WITHOUT: @__cxx_global_var_init{{.*}}[[NOATTR_NO_TF:#[0-9]+]]
-// BL: @__cxx_global_var_init{{.*}}[[NOATTR_NO_TF:#[0-9]+]]
-// TSAN: @__cxx_global_var_init{{.*}}[[WITH_NO_TF:#[0-9]+]]
-
-// WITHOUT: attributes [[NOATTR]] = { nounwind{{.*}} }
-// WITHOUT: attributes [[NOATTR_NO_TF]] = { nounwind }
-
-// BL: attributes [[NOATTR]] = { nounwind{{.*}} }
-// BL: attributes [[NOATTR_NO_TF]] = { nounwind{{.*}} }
-
-// TSAN: attributes [[NOATTR]] = { nounwind{{.*}} }
-// TSAN: attributes [[WITH]] = { nounwind sanitize_thread{{.*}} }
-// TSAN: attributes [[WITH_NO_TF]] = { nounwind sanitize_thread }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-use-after-scope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-use-after-scope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sanitize-use-after-scope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -S -emit-llvm -o - -fsanitize=address,use-after-scope %s \
-// RUN:     | FileCheck %s -check-prefix=USE-AFTER-SCOPE
-// RUN: %clang_cc1 -S -emit-llvm -o - -fsanitize=address %s \
-// RUN:     | FileCheck %s -check-prefix=ADDRESS-ONLY
-
-extern int bar(char *A, int n);
-
-// ADDRESS-ONLY-NOT: @llvm.lifetime.start
-int foo (int n) {
-  if (n) {
-    // USE-AFTER-SCOPE: @llvm.lifetime.start(i64 10, i8* {{.*}})
-    char A[10];
-    return bar(A, 1);
-    // USE-AFTER-SCOPE: @llvm.lifetime.end(i64 10, i8* {{.*}})
-  } else {
-    // USE-AFTER-SCOPE: @llvm.lifetime.start(i64 20, i8* {{.*}})
-    char A[20];
-    return bar(A, 2);
-    // USE-AFTER-SCOPE: @llvm.lifetime.end(i64 20, i8* {{.*}})
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/shared-string-literals.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/shared-string-literals.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/shared-string-literals.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-char *globalString = "abc";
-char *globalStringArray[5] = { "123", "abc" };
-char *anotherGlobalString = "123";
-
-int main() {
-    printf("123");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sizeof-vla.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sizeof-vla.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sizeof-vla.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o %t %s
-
-// PR3442
-
-void *g(unsigned long len);
-
-void
-f(int n)
-{
- unsigned begin_set[n];
- 
- g(sizeof(begin_set));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sparc-target-data.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sparc-target-data.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sparc-target-data.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -target sparc-sun-solaris   -o - -emit-llvm -S %s | FileCheck %s -check-prefix=V8
-// RUN: %clang -target sparcv9-sun-solaris -o - -emit-llvm -S %s | FileCheck %s -check-prefix=V9
-
-// V8: E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64
-// V9: E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32:64-S128

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/split-debug-filename.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/split-debug-filename.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/split-debug-filename.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang -target x86_64-linux-gnu -gsplit-dwarf -S -emit-llvm -o - %s | FileCheck %s
-int main (void) {
-  return 0;
-}
-
-// Testing to ensure that the dwo name gets output into the compile unit.
-// CHECK: split-debug-filename.dwo

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sret.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sret.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sret.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | grep sret | count 5
-
-struct abc {
- long a;
- long b;
- long c;
-};
- 
-struct abc foo1(void);
-struct abc foo2();
-
-void bar() {
-  struct abc dummy1 = foo1();
-  struct abc dummy2 = foo2();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sret2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sret2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sret2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | grep sret | count 2
-
-struct abc {
- long a;
- long b;
- long c;
-};
- 
-struct abc foo2(){}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sse-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sse-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sse-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,190 +0,0 @@
-// RUN: %clang_cc1 -ffreestanding -triple i386-apple-darwin9 -target-cpu pentium4 -target-feature +sse4.1 -g -emit-llvm %s -o - | FileCheck %s
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <smmintrin.h>
-
-__m128 test_rsqrt_ss(__m128 x) {
-  // CHECK: define {{.*}} @test_rsqrt_ss
-  // CHECK: call <4 x float> @llvm.x86.sse.rsqrt.ss
-  // CHECK: extractelement <4 x float> {{.*}}, i32 0
-  // CHECK: extractelement <4 x float> {{.*}}, i32 1
-  // CHECK: extractelement <4 x float> {{.*}}, i32 2
-  // CHECK: extractelement <4 x float> {{.*}}, i32 3
-  return _mm_rsqrt_ss(x);
-}
-
-__m128 test_rcp_ss(__m128 x) {
-  // CHECK: define {{.*}} @test_rcp_ss
-  // CHECK: call <4 x float> @llvm.x86.sse.rcp.ss
-  // CHECK: extractelement <4 x float> {{.*}}, i32 0
-  // CHECK: extractelement <4 x float> {{.*}}, i32 1
-  // CHECK: extractelement <4 x float> {{.*}}, i32 2
-  // CHECK: extractelement <4 x float> {{.*}}, i32 3
-  return _mm_rcp_ss(x);
-}
-
-__m128 test_sqrt_ss(__m128 x) {
-  // CHECK: define {{.*}} @test_sqrt_ss
-  // CHECK: call <4 x float> @llvm.x86.sse.sqrt.ss
-  // CHECK: extractelement <4 x float> {{.*}}, i32 0
-  // CHECK: extractelement <4 x float> {{.*}}, i32 1
-  // CHECK: extractelement <4 x float> {{.*}}, i32 2
-  // CHECK: extractelement <4 x float> {{.*}}, i32 3
-  return _mm_sqrt_ss(x);
-}
-
-__m128 test_loadl_pi(__m128 x, void* y) {
-  // CHECK: define {{.*}} @test_loadl_pi
-  // CHECK: load <2 x float>* {{.*}}, align 1{{$}}
-  // CHECK: shufflevector {{.*}} <4 x i32> <i32 0, i32 1
-  // CHECK: shufflevector {{.*}} <4 x i32> <i32 4, i32 5, i32 2, i32 3>
-  return _mm_loadl_pi(x,y);
-}
-
-__m128 test_loadh_pi(__m128 x, void* y) {
-  // CHECK: define {{.*}} @test_loadh_pi
-  // CHECK: load <2 x float>* {{.*}}, align 1{{$}}
-  // CHECK: shufflevector {{.*}} <4 x i32> <i32 0, i32 1
-  // CHECK: shufflevector {{.*}} <4 x i32> <i32 0, i32 1, i32 4, i32 5>
-  return _mm_loadh_pi(x,y);
-}
-
-__m128 test_load_ss(void* y) {
-  // CHECK: define {{.*}} @test_load_ss
-  // CHECK: load float* {{.*}}, align 1{{$}}
-  return _mm_load_ss(y);
-}
-
-__m128 test_load1_ps(void* y) {
-  // CHECK: define {{.*}} @test_load1_ps
-  // CHECK: load float* {{.*}}, align 1{{$}}
-  return _mm_load1_ps(y);
-}
-
-void test_store_ss(__m128 x, void* y) {
-  // CHECK: define void @test_store_ss
-  // CHECK: store {{.*}} float* {{.*}}, align 1,
-  _mm_store_ss(y, x);
-}
-
-__m128d test_load1_pd(__m128 x, void* y) {
-  // CHECK: define {{.*}} @test_load1_pd
-  // CHECK: load double* {{.*}}, align 1{{$}}
-  return _mm_load1_pd(y);
-}
-
-__m128d test_loadr_pd(__m128 x, void* y) {
-  // CHECK: define {{.*}} @test_loadr_pd
-  // CHECK: load <2 x double>* {{.*}}, align 16{{$}}
-  return _mm_loadr_pd(y);
-}
-
-__m128d test_load_sd(void* y) {
-  // CHECK: define {{.*}} @test_load_sd
-  // CHECK: load double* {{.*}}, align 1{{$}}
-  return _mm_load_sd(y);
-}
-
-__m128d test_loadh_pd(__m128d x, void* y) {
-  // CHECK: define {{.*}} @test_loadh_pd
-  // CHECK: load double* {{.*}}, align 1{{$}}
-  return _mm_loadh_pd(x, y);
-}
-
-__m128d test_loadl_pd(__m128d x, void* y) {
-  // CHECK: define {{.*}} @test_loadl_pd
-  // CHECK: load double* {{.*}}, align 1{{$}}
-  return _mm_loadl_pd(x, y);
-}
-
-void test_store_sd(__m128d x, void* y) {
-  // CHECK: define void @test_store_sd
-  // CHECK: store {{.*}} double* {{.*}}, align 1{{$}}
-  _mm_store_sd(y, x);
-}
-
-void test_store1_pd(__m128d x, void* y) {
-  // CHECK: define void @test_store1_pd
-  // CHECK: store {{.*}} double* {{.*}}, align 1{{$}}
-  // CHECK: store {{.*}} double* {{.*}}, align 1{{$}}
-  _mm_store1_pd(y, x);
-}
-
-void test_storer_pd(__m128d x, void* y) {
-  // CHECK: define void @test_storer_pd
-  // CHECK: store {{.*}} <2 x double>* {{.*}}, align 16{{$}}
-  _mm_storer_pd(y, x);
-}
-
-void test_storeh_pd(__m128d x, void* y) {
-  // CHECK: define void @test_storeh_pd
-  // CHECK: store {{.*}} double* {{.*}}, align 1{{$}}
-  _mm_storeh_pd(y, x);
-}
-
-void test_storel_pd(__m128d x, void* y) {
-  // CHECK: define void @test_storel_pd
-  // CHECK: store {{.*}} double* {{.*}}, align 1{{$}}
-  _mm_storel_pd(y, x);
-}
-
-__m128i test_loadl_epi64(void* y) {
-  // CHECK: define {{.*}} @test_loadl_epi64
-  // CHECK: load i64* {{.*}}, align 1{{$}}
-  return _mm_loadl_epi64(y);
-}
-
-__m128i test_mm_minpos_epu16(__m128i x) {
-  // CHECK: define {{.*}} @test_mm_minpos_epu16
-  // CHECK: @llvm.x86.sse41.phminposuw
-  return _mm_minpos_epu16(x);
-}
-
-__m128i test_mm_mpsadbw_epu8(__m128i x, __m128i y) {
-  // CHECK: define {{.*}} @test_mm_mpsadbw_epu8
-  // CHECK: @llvm.x86.sse41.mpsadbw
-  return _mm_mpsadbw_epu8(x, y, 1);
-}
-
-__m128 test_mm_dp_ps(__m128 x, __m128 y) {
-  // CHECK: define {{.*}} @test_mm_dp_ps
-  // CHECK: @llvm.x86.sse41.dpps
-  return _mm_dp_ps(x, y, 2);
-}
-
-__m128d test_mm_dp_pd(__m128d x, __m128d y) {
-  // CHECK: define {{.*}} @test_mm_dp_pd
-  // CHECK: @llvm.x86.sse41.dppd
-  return _mm_dp_pd(x, y, 2);
-}
-
-__m128 test_mm_round_ps(__m128 x) {
-  // CHECK: define {{.*}} @test_mm_round_ps
-  // CHECK: @llvm.x86.sse41.round.ps
-  return _mm_round_ps(x, 2);
-}
-
-__m128 test_mm_round_ss(__m128 x, __m128 y) {
-  // CHECK: define {{.*}} @test_mm_round_ss
-  // CHECK: @llvm.x86.sse41.round.ss
-  return _mm_round_ss(x, y, 2);
-}
-
-__m128d test_mm_round_pd(__m128d x) {
-  // CHECK: define {{.*}} @test_mm_round_pd
-  // CHECK: @llvm.x86.sse41.round.pd
-  return _mm_round_pd(x, 2);
-}
-
-__m128d test_mm_round_sd(__m128d x, __m128d y) {
-  // CHECK: define {{.*}} @test_mm_round_sd
-  // CHECK: @llvm.x86.sse41.round.sd
-  return _mm_round_sd(x, y, 2);
-}
-
-void test_storel_epi64(__m128i x, void* y) {
-  // CHECK: define void @test_storel_epi64
-  // CHECK: store {{.*}} i64* {{.*}}, align 1{{$}}
-  _mm_storel_epi64(y, x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/sse4a-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/sse4a-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/sse4a-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -ffreestanding -triple i386-apple-darwin9 -target-cpu pentium4 -target-feature +sse4a -g -emit-llvm %s -o - | FileCheck %s
-
-#include <ammintrin.h>
-
-__m128i test_extracti_si64(__m128i x) {
-  return _mm_extracti_si64(x, 3, 2);
-// CHECK: @test_extracti_si64
-// CHECK: @llvm.x86.sse4a.extrqi(<2 x i64> %{{[^,]+}}, i8 3, i8 2)
-}
-
-__m128i test_extract_si64(__m128i x, __m128i y) {
-  return _mm_extract_si64(x, y);
-// CHECK: @test_extract_si64
-// CHECK: @llvm.x86.sse4a.extrq(<2 x i64> %{{[^,]+}}, <16 x i8> %{{[^,]+}})
-}
-
-__m128i test_inserti_si64(__m128i x, __m128i y) {
-  return _mm_inserti_si64(x, y, 5, 6);
-// CHECK: @test_inserti_si64
-// CHECK: @llvm.x86.sse4a.insertqi(<2 x i64> %{{[^,]+}}, <2 x i64> %{{[^,]+}}, i8 5, i8 6)
-}
-
-__m128i test_insert_si64(__m128i x, __m128i y) {
-  return _mm_insert_si64(x, y);
-// CHECK: @test_insert_si64
-// CHECK: @llvm.x86.sse4a.insertq(<2 x i64> %{{[^,]+}}, <2 x i64> %{{[^,]+}})
-}
-
-void test_stream_sd(double *p, __m128d a) {
-  _mm_stream_sd(p, a);
-// CHECK: @test_stream_sd
-// CHECK: @llvm.x86.sse4a.movnt.sd(i8* %{{[^,]+}}, <2 x double> %{{[^,]+}})
-}
-
-void test_stream_ss(float *p, __m128 a) {
-  _mm_stream_ss(p, a);
-// CHECK: @test_stream_ss
-// CHECK: @llvm.x86.sse4a.movnt.ss(i8* %{{[^,]+}}, <4 x float> %{{[^,]+}})
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/stack-protector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/stack-protector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/stack-protector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 0 | FileCheck -check-prefix=NOSSP %s
-// NOSSP: define void @test1(i8* %msg) #0 {
-// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 1 | FileCheck -check-prefix=WITHSSP %s
-// WITHSSP: define void @test1(i8* %msg) #0 {
-// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 2 | FileCheck -check-prefix=SSPREQ %s
-// SSPREQ: define void @test1(i8* %msg) #0 {
-
-typedef __SIZE_TYPE__ size_t;
-
-int printf(const char * _Format, ...);
-size_t strlen(const char *s);
-char *strcpy(char *s1, const char *s2);
-
-void test1(const char *msg) {
-  char a[strlen(msg) + 1];
-  strcpy(a, msg);
-  printf("%s\n", a);
-}
-
-// NOSSP: attributes #{{.*}} = { nounwind{{.*}} }
-
-// WITHSSP: attributes #{{.*}} = { nounwind ssp{{.*}} }
-
-// SSPREQ: attributes #{{.*}} = { nounwind sspreq{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/statements.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/statements.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/statements.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -Wno-error=return-type %s -emit-llvm-only
-// REQUIRES: LP64
-
-void test1(int x) {
-switch (x) {
-case 111111111111111111111111111111111111111:
-bar();
-}
-}
-
-// Mismatched type between return and function result.
-int test2() { return; }
-void test3() { return 4; }
-
-
-void test4() {
-bar:
-baz:
-blong:
-bing:
- ;
-
-// PR5131
-static long x = &&bar - &&baz;
-static long y = &&baz;
-  &&bing;
-  &&blong;
-  if (y)
-    goto *y;
-
-  goto *x;
-}
-
-// PR3869
-int test5(long long b) {
-  static void *lbls[] = { &&lbl };
-  goto *b;
- lbl:
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/static-forward-decl-fun.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/static-forward-decl-fun.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/static-forward-decl-fun.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-static int staticfun(void);
-int (*staticuse1)(void) = staticfun;
-static int staticfun() {return 1;}
-int (*staticuse2)(void) = staticfun;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/static-forward-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/static-forward-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/static-forward-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin9 | grep "global i32 10"
-
-static int i;
-int*j=&i;
-static int i = 10;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/static-local-union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/static-local-union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/static-local-union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s
-
-int a() {static union{int a;} r[2] = {1,2};return r[1].a;}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/static-order.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/static-order.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/static-order.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-// CHECK: ModuleID
-// CHECK-NOT: zeroinitializer
-// CHECK: define i8* @f
-
-struct s {
-    int a;
-};
-
-static void *v;
-
-static struct s a;
-
-static struct s a = {
-    10
-};
-
-void *f()
-{
-  if (a.a)
-    return v;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/staticinit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/staticinit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/staticinit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm -o %t %s
-// RUN: grep "g.b = internal global i8. getelementptr" %t
-
-struct AStruct { 
-  int i;
-  char *s;
-  double d;
-};
-
-void f() {
-  static int i = 42;
-  static int is[] = { 1, 2, 3, 4 };
-  static char* str = "forty-two";
-  static char* strs[] = { "one", "two", "three", "four" };
-  static struct AStruct myStruct = { 1, "two", 3.0 };
-}
-
-void g() {
-  static char a[10];
-  static char *b = a;
-}
-
-struct s { void *p; };
-
-void foo(void) {
-  static struct s var = {((void*)&((char*)0)[0])};
-}
-
-// RUN: grep "f1.l0 = internal global i32 ptrtoint (i32 ()\* @f1 to i32)" %t
-int f1(void) { static int l0 = (unsigned) f1; }
-
-// PR7044
-char *f2(char key) {
-  switch (key) {
-    static char _msg[40];
-  case '\014':
-    return _msg;
-  }
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/stdcall-fastcall.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/stdcall-fastcall.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/stdcall-fastcall.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,146 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm < %s | FileCheck %s
-
-void __attribute__((fastcall)) f1(void);
-void __attribute__((stdcall)) f2(void);
-void __attribute__((thiscall)) f3(void);
-void __attribute__((fastcall)) f4(void) {
-// CHECK: define x86_fastcallcc void @f4()
-  f1();
-// CHECK: call x86_fastcallcc void @f1()
-}
-void __attribute__((stdcall)) f5(void) {
-// CHECK: define x86_stdcallcc void @f5()
-  f2();
-// CHECK: call x86_stdcallcc void @f2()
-}
-void __attribute__((thiscall)) f6(void) {
-// CHECK: define x86_thiscallcc void @f6()
-  f3();
-// CHECK: call x86_thiscallcc void @f3()
-}
-
-// PR5280
-void (__attribute__((fastcall)) *pf1)(void) = f1;
-void (__attribute__((stdcall)) *pf2)(void) = f2;
-void (__attribute__((thiscall)) *pf3)(void) = f3;
-void (__attribute__((fastcall)) *pf4)(void) = f4;
-void (__attribute__((stdcall)) *pf5)(void) = f5;
-void (__attribute__((thiscall)) *pf6)(void) = f6;
-
-int main(void) {
-    f4(); f5(); f6();
-    // CHECK: call x86_fastcallcc void @f4()
-    // CHECK: call x86_stdcallcc void @f5()
-    // CHECK: call x86_thiscallcc void @f6()
-    pf1(); pf2(); pf3(); pf4(); pf5(); pf6();
-    // CHECK: call x86_fastcallcc void %{{.*}}()
-    // CHECK: call x86_stdcallcc void %{{.*}}()
-    // CHECK: call x86_thiscallcc void %{{.*}}()
-    // CHECK: call x86_fastcallcc void %{{.*}}()
-    // CHECK: call x86_stdcallcc void %{{.*}}()
-    // CHECK: call x86_thiscallcc void %{{.*}}()
-    return 0;
-}
-
-// PR7117
-void __attribute((stdcall)) f7(foo) int foo; {}
-void f8(void) {
-  f7(0);
-  // CHECK: call x86_stdcallcc void @f7(i32 0)
-}
-
-void __attribute__((fastcall)) foo1(int y);
-void bar1(int y) {
-  // CHECK: define void @bar1
-  // CHECK: call x86_fastcallcc void @foo1(i32 inreg %
-  foo1(y);
-}
-
-struct S1 {
-  int x;
-};
-void __attribute__((fastcall)) foo2(struct S1 y);
-void bar2(struct S1 y) {
-  // CHECK: define void @bar2
-  // CHECK: call x86_fastcallcc void @foo2(i32 inreg undef, i32 %
-  foo2(y);
-}
-
-void __attribute__((fastcall)) foo3(int *y);
-void bar3(int *y) {
-  // CHECK: define void @bar3
-  // CHECK: call x86_fastcallcc void @foo3(i32* inreg %
-  foo3(y);
-}
-
-enum Enum {Eval};
-void __attribute__((fastcall)) foo4(enum Enum y);
-void bar4(enum Enum y) {
-  // CHECK: define void @bar4
-  // CHECK: call x86_fastcallcc void @foo4(i32 inreg %
-  foo4(y);
-}
-
-struct S2 {
-  int x1;
-  double x2;
-  double x3;
-};
-void __attribute__((fastcall)) foo5(struct S2 y);
-void bar5(struct S2 y) {
-  // CHECK: define void @bar5
-  // CHECK: call x86_fastcallcc void @foo5(%struct.S2* byval align 4 %
-  foo5(y);
-}
-
-void __attribute__((fastcall)) foo6(long long y);
-void bar6(long long y) {
-  // CHECK: define void @bar6
-  // CHECK: call x86_fastcallcc void @foo6(i64 %
-  foo6(y);
-}
-
-void __attribute__((fastcall)) foo7(int a, struct S1 b, int c);
-void bar7(int a, struct S1 b, int c) {
-  // CHECK: define void @bar7
-  // CHECK: call x86_fastcallcc void @foo7(i32 inreg %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
-  foo7(a, b, c);
-}
-
-void __attribute__((fastcall)) foo8(struct S1 a, int b);
-void bar8(struct S1 a, int b) {
-  // CHECK: define void @bar8
-  // CHECK: call x86_fastcallcc void @foo8(i32 inreg undef, i32 %{{.*}}, i32 inreg %
-  foo8(a, b);
-}
-
-void __attribute__((fastcall)) foo9(struct S2 a, int b);
-void bar9(struct S2 a, int b) {
-  // CHECK: define void @bar9
-  // CHECK: call x86_fastcallcc void @foo9(%struct.S2* byval align 4 %{{.*}}, i32 %
-  foo9(a, b);
-}
-
-void __attribute__((fastcall)) foo10(float y, int x);
-void bar10(float y, int x) {
-  // CHECK: define void @bar10
-  // CHECK: call x86_fastcallcc void @foo10(float %{{.*}}, i32 inreg %
-  foo10(y, x);
-}
-
-void __attribute__((fastcall)) foo11(double y, int x);
-void bar11(double y, int x) {
-  // CHECK: define void @bar11
-  // CHECK: call x86_fastcallcc void @foo11(double %{{.*}}, i32 inreg %
-  foo11(y, x);
-}
-
-struct S3 {
-  float x;
-};
-void __attribute__((fastcall)) foo12(struct S3 y, int x);
-void bar12(struct S3 y, int x) {
-  // CHECK: define void @bar12
-  // CHECK: call x86_fastcallcc void @foo12(float %{{.*}}, i32 inreg %
-  foo12(y, x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal-short-wstring.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal-short-wstring.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal-short-wstring.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -x c++ -emit-llvm -fshort-wchar %s -o - | FileCheck %s
-// Runs in c++ mode so that wchar_t is available.
-
-int main() {
-  // This should convert to utf8.
-  // CHECK: private unnamed_addr constant [10 x i8] c"\E1\84\A0\C8\A0\F4\82\80\B0\00", align 1
-  char b[10] = "\u1120\u0220\U00102030";
-
-  // CHECK: private unnamed_addr constant [3 x i16] [i16 65, i16 66, i16 0]
-  const wchar_t *foo = L"AB";
-
-  // This should convert to utf16.
-  // CHECK: private unnamed_addr constant [5 x i16] [i16 4384, i16 544, i16 -9272, i16 -9168, i16 0]
-  const wchar_t *bar = L"\u1120\u0220\U00102030";
-
-
-
-  // Should pick second character.
-  // CHECK: store i8 98
-  char c = 'ab';
-
-  // CHECK: store i16 97
-  wchar_t wa = L'a';
-
-  // Should pick second character.
-  // CHECK: store i16 98
-  wchar_t wb = L'ab';
-
-  // -4085 == 0xf00b
-  // CHECK: store i16 -4085
-  wchar_t wc = L'\uF00B';
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal-unicode-conversion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal-unicode-conversion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal-unicode-conversion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=C %s
-// RUN: %clang_cc1 -x c++ -std=c++0x -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=CPP0X %s
-// RUN: %clang_cc1 -x c++ -std=c++0x -fshort-wchar -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=SHORTWCHAR %s
-
-// This file contains a mix of ISO-8859-1 and UTF-8 encoded data.
-// the literal assigned to 'aa' should be the ISO-8859-1 encoding for the code
-// points U+00C0 U+00E9 U+00EE U+00F5 U+00FC
-
-// The rest of the literals should contain the UTF-8 encoding for U+041A U+043E
-// U+0448 U+043A U+0430
-
-#ifndef __cplusplus
-#include <stddef.h>
-#endif
-
-#ifdef __cplusplus
-extern "C"
-#endif
-void f() {
-  // CHECK-C: private unnamed_addr constant [6 x i8] c"\C0\E9\EE\F5\FC\00", align 1
-  // CHECK-CPP0X: private unnamed_addr constant [6 x i8] c"\C0\E9\EE\F5\FC\00", align 1
-  char const *aa = "\xC0\xE9\xEE\xF5\xFC";
-  
-  // CHECK-C: private unnamed_addr constant [11 x i8] c"\D0\9A\D0\BE\D1\88\D0\BA\D0\B0\00", align 1
-  // CHECK-CPP0X: private unnamed_addr constant [11 x i8] c"\D0\9A\D0\BE\D1\88\D0\BA\D0\B0\00", align 1
-  char const *a = "Кошка";
-  
-  // CHECK-C: private unnamed_addr constant [6 x i32] [i32 1050, i32 1086, i32 1096, i32 1082, i32 1072, i32 0], align 4
-  // CHECK-SHORTWCHAR: private unnamed_addr constant [6 x i16] [i16 1050, i16 1086, i16 1096, i16 1082, i16 1072, i16 0], align 2
-  // CHECK-CPP0X: private unnamed_addr constant [6 x i32] [i32 1050, i32 1086, i32 1096, i32 1082, i32 1072, i32 0], align 4
-  wchar_t const *b = L"Кошка";
-
-  // CHECK-C: private unnamed_addr constant [4 x i32] [i32 20320, i32 22909, i32 66304, i32 0], align 4
-  // CHECK-SHORTWCHAR: private unnamed_addr constant [4 x i16] [i16 20320, i16 22909, i16 768, i16 0], align 2
-  // CHECK-CPP0X: private unnamed_addr constant [4 x i32] [i32 20320, i32 22909, i32 66304, i32 0], align 4
-  wchar_t const *b2 = L"\x4f60\x597d\x10300";
-  
-#if __cplusplus >= 201103L
-  
-  // CHECK-CPP0X: private unnamed_addr constant [12 x i8] c"1\D0\9A\D0\BE\D1\88\D0\BA\D0\B0\00", align 1
-  char const *c = u8"1Кошка";
-    
-  // CHECK-CPP0X: private unnamed_addr constant [7 x i16] [i16 50, i16 1050, i16 1086, i16 1096, i16 1082, i16 1072, i16 0], align 2
-  char16_t const *e = u"2Кошка";
-  
-  // CHECK-CPP0X: private unnamed_addr constant [7 x i32] [i32 51, i32 1050, i32 1086, i32 1096, i32 1082, i32 1072, i32 0], align 4
-  char32_t const *f = U"3Кошка";
-
-  // CHECK-CPP0X: private unnamed_addr constant [12 x i8] c"4\D0\9A\D0\BE\D1\88\D0\BA\D0\B0\00", align 1
-  char const *d = u8R"(4Кошка)";
-  
-  // CHECK-CPP0X: private unnamed_addr constant [7 x i16] [i16 53, i16 1050, i16 1086, i16 1096, i16 1082, i16 1072, i16 0], align 2
-  char16_t const *g = uR"(5Кошка)";
-  
-  // CHECK-CPP0X: private unnamed_addr constant [7 x i32] [i32 54, i32 1050, i32 1086, i32 1096, i32 1082, i32 1072, i32 0], align 4
-  char32_t const *h = UR"(6Кошка)";
-  
-  // CHECK-SHORTWCHAR: private unnamed_addr constant [7 x i16] [i16 55, i16 1050, i16 1086, i16 1096, i16 1082, i16 1072, i16 0], align 2
-  // CHECK-CPP0X: private unnamed_addr constant [7 x i32] [i32 55, i32 1050, i32 1086, i32 1096, i32 1082, i32 1072, i32 0], align 4
-  wchar_t const *i = LR"(7Кошка)";
-  
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/string-literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,107 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-C %s
-// RUN: %clang_cc1 -x c++ -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-C %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-CXX11 %s
-// RUN: %clang_cc1 -x c -std=c11 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-C11 %s
-
-#include <stddef.h>
-
-#ifndef __cplusplus
-typedef __WCHAR_TYPE__ wchar_t;
-typedef __CHAR16_TYPE__ char16_t;
-typedef __CHAR32_TYPE__ char32_t;
-#endif
-
-int main() {
-  // CHECK-C: private unnamed_addr constant [10 x i8] c"abc\00\00\00\00\00\00\00", align 1
-  // CHECK-C11: private unnamed_addr constant [10 x i8] c"abc\00\00\00\00\00\00\00", align 1
-  // CHECK-CXX11: private unnamed_addr constant [10 x i8] c"abc\00\00\00\00\00\00\00", align 1
-  char a[10] = "abc";
-
-  // This should convert to utf8.
-  // CHECK-C: private unnamed_addr constant [10 x i8] c"\E1\84\A0\C8\A0\F4\82\80\B0\00", align 1
-  // CHECK-C11: private unnamed_addr constant [10 x i8] c"\E1\84\A0\C8\A0\F4\82\80\B0\00", align 1
-  // CHECK-CXX11: private unnamed_addr constant [10 x i8] c"\E1\84\A0\C8\A0\F4\82\80\B0\00", align 1
-  char b[10] = "\u1120\u0220\U00102030";
-
-  // CHECK-C: private unnamed_addr constant [3 x i32] [i32 65, i32 66, i32 0], align 4
-  // CHECK-C11: private unnamed_addr constant [3 x i32] [i32 65, i32 66, i32 0], align 4
-  // CHECK-CXX11: private unnamed_addr constant [3 x i32] [i32 65, i32 66, i32 0], align 4
-  const wchar_t *foo = L"AB";
-
-  // CHECK-C: private unnamed_addr constant [3 x i32] [i32 4660, i32 1110027, i32 0], align 4
-  // CHECK-C11: private unnamed_addr constant [3 x i32] [i32 4660, i32 1110027, i32 0], align 4
-  // CHECK-CXX11: private unnamed_addr constant [3 x i32] [i32 4660, i32 1110027, i32 0], align 4
-  const wchar_t *bar = L"\u1234\U0010F00B";
-
-  // CHECK-C: private unnamed_addr constant [3 x i32] [i32 4660, i32 1110028, i32 0], align 4
-  // CHECK-C11: private unnamed_addr constant [3 x i32] [i32 4660, i32 1110028, i32 0], align 4
-  // CHECK-CXX11: private unnamed_addr constant [3 x i32] [i32 4660, i32 1110028, i32 0], align 4
-  const wchar_t *baz = L"\u1234" "\U0010F00C";
-
-#if __cplusplus >= 201103L || __STDC_VERSION__ >= 201112L
-  // CHECK-C11: private unnamed_addr constant [3 x i32] [i32 67, i32 68, i32 0], align 4
-  // CHECK-CXX11: private unnamed_addr constant [3 x i32] [i32 67, i32 68, i32 0], align 4
-  const char32_t *c = U"CD";
-
-  // CHECK-C11: private unnamed_addr constant [3 x i32] [i32 4661, i32 1110028, i32 0], align 4
-  // CHECK-CXX11: private unnamed_addr constant [3 x i32] [i32 4661, i32 1110028, i32 0], align 4
-  const char32_t *d = U"\u1235\U0010F00C";
-
-  // CHECK-C11: private unnamed_addr constant [3 x i32] [i32 4661, i32 1110027, i32 0], align 4
-  // CHECK-CXX11: private unnamed_addr constant [3 x i32] [i32 4661, i32 1110027, i32 0], align 4
-  const char32_t *o = "\u1235" U"\U0010F00B";
-
-  // CHECK-C11: private unnamed_addr constant [3 x i16] [i16 69, i16 70, i16 0], align 2
-  // CHECK-CXX11: private unnamed_addr constant [3 x i16] [i16 69, i16 70, i16 0], align 2
-  const char16_t *e = u"EF";
-
-  // This should convert to utf16.
-  // CHECK-C11: private unnamed_addr constant [5 x i16] [i16 4384, i16 544, i16 -9272, i16 -9168, i16 0], align 2
-  // CHECK-CXX11: private unnamed_addr constant [5 x i16] [i16 4384, i16 544, i16 -9272, i16 -9168, i16 0], align 2
-  const char16_t *f = u"\u1120\u0220\U00102030";
-
-  // This should convert to utf16.
-  // CHECK-C11: private unnamed_addr constant [5 x i16] [i16 4384, i16 800, i16 -9272, i16 -9168, i16 0], align 2
-  // CHECK-CXX11: private unnamed_addr constant [5 x i16] [i16 4384, i16 800, i16 -9272, i16 -9168, i16 0], align 2
-  const char16_t *p = u"\u1120\u0320" "\U00102030";
-
-  // CHECK-C11: private unnamed_addr constant [4 x i8] c"def\00", align 1
-  // CHECK-CXX11: private unnamed_addr constant [4 x i8] c"def\00", align 1
-  const char *g = u8"def";
-
-#ifdef __cplusplus
-  // CHECK-CXX11: private unnamed_addr constant [4 x i8] c"ghi\00", align 1
-  const char *h = R"foo(ghi)foo";
-
-  // CHECK-CXX11: private unnamed_addr constant [4 x i8] c"jkl\00", align 1
-  const char *i = u8R"bar(jkl)bar";
-
-  // CHECK-CXX11: private unnamed_addr constant [3 x i16] [i16 71, i16 72, i16 0], align 2
-  const char16_t *j = uR"foo(GH)foo";
-
-  // CHECK-CXX11: private unnamed_addr constant [3 x i32] [i32 73, i32 74, i32 0], align 4
-  const char32_t *k = UR"bar(IJ)bar";
-
-  // CHECK-CXX11: private unnamed_addr constant [3 x i32] [i32 75, i32 76, i32 0], align 4
-  const wchar_t *l = LR"bar(KL)bar";
-
-  // CHECK-CXX11: private unnamed_addr constant [9 x i8] c"abc\5Cndef\00", align 1
-  const char *m = R"(abc\ndef)";
-
-  // CHECK-CXX11: private unnamed_addr constant [8 x i8] c"abc\0Adef\00", align 1
-  const char *n = R"(abc
-def)";
-
-  // CHECK-CXX11: private unnamed_addr constant [11 x i8] c"abc\0Adefghi\00", align 1
-  const char *q = R"(abc
-def)" "ghi";
-
-  // CHECK-CXX11: private unnamed_addr constant [13 x i8] c"abc\5C\0A??=\0Adef\00", align 1
-  const char *r = R\
-"(abc\
-??=
-def)";
-
-#endif
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/struct-comma.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/struct-comma.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/struct-comma.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-struct S {int a, b;} x;
-void a(struct S* b) {*b = (r(), x);}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/struct-copy.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/struct-copy.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/struct-copy.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep 'call.*llvm.memcpy'
-struct x { int a[100]; };
-
-
-void foo(struct x *P, struct x *Q) {
-  *P = *Q;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/struct-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/struct-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/struct-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -S -triple armv7-apple-darwin %s -emit-llvm -o - | FileCheck %s
-
-typedef struct _zend_ini_entry zend_ini_entry;
-struct _zend_ini_entry {
-  void *mh_arg1;
-};
-
-char a;
-
-const zend_ini_entry ini_entries[] = {
-  {  ((char*)&((zend_ini_entry*)0)->mh_arg1 - (char*)(void*)0)},
-};
-
-// PR7564
-struct GLGENH {
-  int : 27;
-  int EMHJAA : 1;
-};
-
-struct GLGENH ABHFBF = {1};
-
-typedef __attribute__(( ext_vector_type(2) )) unsigned int uint2;
-typedef __attribute__(( __vector_size__(8) )) unsigned int __neon_uint32x2_t;
-
-// rdar://8183908
-typedef unsigned int uint32_t;
-typedef __attribute__((neon_vector_type(2)))  uint32_t uint32x2_t;
-void foo() {
-    const uint32x2_t signBit = { (uint2) 0x80000000 };
-}
-
-// CHECK: %struct.fp_struct_foo = type { void ([1 x i32])* }
-struct fp_struct_bar { int a; };
-
-struct fp_struct_foo {
-  void (*FP)(struct fp_struct_bar);
-} G;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/struct-matching-constraint.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/struct-matching-constraint.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/struct-matching-constraint.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -S -emit-llvm -triple armv7a-apple-darwin %s -o /dev/null
-typedef unsigned short uint16_t;
-typedef __attribute__((neon_vector_type(8))) uint16_t uint16x8_t;
-
-void b(uint16x8_t sat, uint16x8_t luma)
-{
-  __asm__("vmov.16 %1, %0   \n\t"
-                                           "vtrn.16 %0, %1   \n\t"
-   :"=w"(luma), "=w"(sat)
-   :"0"(luma)
-   );
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/struct-passing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/struct-passing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/struct-passing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// This verifies that structs returned from functions by value are passed
-// correctly according to their attributes and the ABI.
-// SEE: PR3835
-
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-
-typedef int T0;
-typedef struct { int a[16]; } T1;
-
-T0 __attribute__((const)) f0(void);
-T0 __attribute__((pure)) f1(void);
-T1 __attribute__((const)) f2(void);
-T1 __attribute__((pure)) f3(void);
-void __attribute__((const)) f4(T1 a);
-void __attribute__((pure)) f5(T1 a);
-
-void *ps[] = { f0, f1, f2, f3, f4, f5 };
-
-// CHECK: declare i32 @f0() [[RN:#[0-9]+]]
-// CHECK: declare i32 @f1() [[RO:#[0-9]+]]
-// CHECK: declare void @f2({{.*}} sret)
-// CHECK: declare void @f3({{.*}} sret)
-// CHECK: declare void @f4({{.*}} byval align 4)
-// CHECK: declare void @f5({{.*}} byval align 4)
-
-// CHECK: attributes [[RN]] = { nounwind readnone{{.*}} }
-// CHECK: attributes [[RO]] = { nounwind readonly{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/struct-x86-darwin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/struct-x86-darwin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/struct-x86-darwin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 < %s -emit-llvm > %t1 -triple=i686-apple-darwin9
-// RUN: grep "STest1 = type { i32, \[4 x i16\], double }" %t1
-// RUN: grep "STest2 = type { i16, i16, i32, i32 }" %t1
-// RUN: grep "STest3 = type { i8, i16, i32 }" %t1
-// RUN: grep "STestB1 = type { i8, i8 }" %t1
-// RUN: grep "STestB2 = type { i8, i8, i8 }" %t1
-// RUN: grep "STestB3 = type { i8, i8 }" %t1
-// RUN: grep "STestB4 = type { i8, i8, i8, i8 }" %t1
-// RUN: grep "STestB5 = type { i8, i8, \[2 x i8\], i8, i8 }" %t1
-// RUN: grep "STestB6 = type { i8, i8, \[2 x i8\] }" %t1
-// Test struct layout for x86-darwin target
-
-struct STest1 {int x; short y[4]; double z; } st1;
-struct STest2 {short a,b; int c,d; } st2;
-struct STest3 {char a; short b; int c; } st3;
-
-// Bitfields 
-struct STestB1 {char a; char b:2; } stb1;
-struct STestB2 {char a; char b:5; char c:4; } stb2;
-struct STestB3 {char a; char b:2; } stb3;
-struct STestB4 {char a; short b:2; char c; } stb4;
-struct STestB5 {char a; short b:10; char c; } stb5;
-struct STestB6 {int a:1; char b; int c:13 } stb6;
-
-// Packed struct STestP1 {char a; short b; int c; } __attribute__((__packed__)) stp1;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,196 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o -
-
-struct  {
-  int x;
-  int y;
-} point;
-
-void fn1() {
-  point.x = 42;
-}
-
-/* Nested member */
-struct  {
-  struct {
-    int a;
-    int b;
-  } p1;
-} point2;
-
-void fn2() {
-  point2.p1.a = 42;
-}
-
-/* Indirect reference */
-typedef struct __sf {
- unsigned char *c;
- short flags;
-} F;
-
-typedef struct __sf2 {
-  F *ff;
-} F2;
-
-int fn3(F2 *c) {
-  if (c->ff->c >= 0)
-    return 1;
-  else
-    return 0;
-}
-
-/* Nested structs */
-typedef struct NA {
-  int data;
-  struct NA *next;
-} NA;
-void f1() {  NA a; }
-
-typedef struct NB {
-  int d1;
-  struct _B2 {
-    int d2;
-    struct NB *n2;
-  } B2;
-} NB;
-
-void f2() { NB b; }
-
-extern NB *f3();
-void f4() {
-  f3()->d1 = 42;
-}
-
-void f5() {
-  (f3())->d1 = 42;
-}
-
-/* Function calls */
-typedef struct {
-  int location;
-  int length;
-} range;
-extern range f6();
-void f7() {
-  range r = f6();
-}
-
-/* Member expressions */
-typedef struct {
-  range range1;
-  range range2;
-} rangepair;
-
-void f8() {
-  rangepair p;
-
-  range r = p.range1;
-}
-
-void f9(range *p) {
-  range r = *p;
-}
-
-void f10(range *p) {
-  range r = p[0];
-}
-
-/* _Bool types */
-
-struct _w {
-  short a,b;
-  short c,d;
-  short e,f;
-  short g;
-
-  unsigned int h,i;
-
-  _Bool j,k;
-} ws;
-
-/* Implicit casts (due to typedefs) */
-typedef struct _a {
-  int a;
-} a;
-
-void f11() {
-  struct _a a1;
-  a a2;
-    
-  a1 = a2;
-  a2 = a1;
-}
-
-/* Implicit casts (due to const) */
-void f12() {
-  struct _a a1;
-  const struct _a a2;
-
-  a1 = a2;
-}
-
-/* struct initialization */
-struct a13 {int b; int c;};
-struct a13 c13 = {5};
-typedef struct a13 a13;
-struct a14 { short a; int b; } x = {1, 1};
-
-/* flexible array members */
-struct a15 {char a; int b[];} c15;
-int a16(void) {c15.a = 1;}
-
-/* compound literals */
-void f13() {
-  a13 x; x = (a13){1,2};
-}
-
-/* va_arg */
-int f14(int i, ...) {
-  __builtin_va_list l;
-  __builtin_va_start(l,i);
-  a13 b = __builtin_va_arg(l, a13);
-  int c = __builtin_va_arg(l, a13).c;
-  return b.b;
-}
-
-/* Attribute packed */
-struct __attribute__((packed)) S2839 { double a[19];  signed char b; } s2839[5];
-
-struct __attribute__((packed)) SS { long double a; char b; } SS;
-
-
-/* As lvalue */
-
-int f15() {
-  extern range f15_ext();
-  return f15_ext().location;
-}
-
-range f16() {
-  extern rangepair f16_ext();
-  return f16_ext().range1;
-}
-
-int f17() {
-  extern range f17_ext();
-  range r;
-  return (r = f17_ext()).location;
-}
-
-range f18() {
-  extern rangepair f18_ext();
-  rangepair rp;
-  return (rp = f18_ext()).range1;
-}
-
-
-
-// Complex forward reference of struct.
-struct f19S;
-extern struct f19T {
-  struct f19S (*p)(void);
-} t;
-struct f19S { int i; };
-void f19(void) {
-  t.p();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/switch-dce.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/switch-dce.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/switch-dce.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,234 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O0 %s -emit-llvm -o - | FileCheck %s
-
-// PR9322 and rdar://6970405
-
-// CHECK: @test1
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: add nsw i32 {{.*}}, 1
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: ret void
-int i;
-void dead();
-
-void test1() {
-  switch (1)
-    case 1:
-      ++i;
-
-  switch (0)
-    case 1:
-      dead();
-} 
-
-
-// CHECK: @test2
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: add nsw i32 {{.*}}, 2
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: ret void
-void test2() {
-  switch (4) {
-  case 1:
-    dead();
-    break;
-  case 4:
-    i += 2;
-    // Fall off the end of the switch.
-  } 
-}
-
-
-// CHECK: @test3
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: add nsw i32 {{.*}}, 2
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: ret void
-void test3() {
-  switch (4) {
-  case 1:
-    dead();
-    break;
-  case 4: {
-    i += 2;
-    break;
-  }
-  } 
-}
-
-// CHECK: @test4
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: add nsw i32 {{.*}}, 2
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: ret void
-void test4() {
-  switch (4) {
-    case 1:
-      dead();
-      break;
-    default: {
-      i += 2;
-      break;
-    }
-  } 
-}
-
-// This shouldn't crash codegen, but we don't have to optimize out the switch
-// in this case.
-void test5() {
-  switch (1) {
-    int x;  // eliding var decl?
-    case 1:
-      x = 4;
-      i = x;
-      break;
-  } 
-}
-
-// CHECK: @test6
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: ret void
-void test6() {
-  // Neither case is reachable.
-  switch (40) {
-  case 1:
-   dead();
-    break;
-  case 4: {
-    dead();
-    break;
-  }
-  } 
-}
-
-// CHECK: @test7
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: add nsw i32
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: ret void
-void test7() {
-  switch (4) {
-  case 1:
-      dead();
-    break;
-    {
-      case 4:   // crazy brace scenario
-        ++i;
-    }
-    break;
-  } 
-}
-
-// CHECK: @test8
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: add nsw i32
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: ret void
-void test8() {
-  switch (4) {
-  case 1:
-    dead();
-    break;
-  case 4:
-    ++i;
-    // Fall off the end of the switch.
-  } 
-}
-
-// CHECK: @test9
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: add nsw i32
-// CHECK: add nsw i32
-// CHECK-NOT: switch
-// CHECK-NOT: @dead
-// CHECK: ret void
-void test9(int i) {
-  switch (1) {
-  case 5:
-    dead();
-  case 1:
-    ++i;
-    // Fall through is fine.
-  case 4:
-    ++i;
-    break;
-  } 
-}
-
-// CHECK: @test10
-// CHECK-NOT: switch
-// CHECK: ret i32
-int test10(void) {
-	switch(8) {
-		case 8:
-			break;
-		case 4:
-			break;
-		default:
-			dead();
-	}
-	
-	return 0;
-}
-
-// CHECK: @test11
-// CHECK-NOT: switch
-// CHECK: ret void
-void test11() {
-  switch (1) {
-    case 1:
-      break;
-    case 42: ;
-      int x;  // eliding var decl?
-      x = 4;
-      break;
-  }
-}
-
-// CHECK: @test12
-// CHECK-NOT: switch
-// CHECK: ret void
-void test12() {
-  switch (1) {
-  case 2: {
-     int a;   // Ok to skip this vardecl.
-     a = 42;
-   }
-  case 1:
-    break;
-  case 42: ;
-    int x;  // eliding var decl?
-    x = 4;
-    break;
-  }
-}
-
-// Verify that case 42 only calls test14 once.
-// CHECK: @test13
-// CHECK: call void @test13(i32 97)
-// CHECK-NEXT: br label %[[EPILOG2:[0-9.a-z]+]]
-// CHECK: [[EPILOG2]]
-// CHECK-NEXT: br label [[EPILOG:%[0-9.a-z]+]]
-// CHECK: call void @test13(i32 42)
-// CHECK-NEXT: br label [[EPILOG]]
-void test13(int x) {
-  switch (x) {
-    case 42: test13(97);  // fallthrough
-    case 11: break;
-    default: test13(42); break;
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/switch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/switch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/switch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,213 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -O3 %s -emit-llvm -o - | FileCheck %s
-
-int foo(int i) {
-  int j = 0;
-  switch (i) {
-  case -1:
-    j = 1; break;
-  case 1 :
-    j = 2; break;
-  case 2:
-    j = 3; break;
-  default:
-    j = 42; break;
-  }
-  j = j + 1;
-  return j;
-}
-
-int foo2(int i) {
-  int j = 0;
-  switch (i) {
-  case 1 :
-    j = 2; break;
-  case 2 ... 10:
-    j = 3; break;
-  default:
-    j = 42; break;
-  }
-  j = j + 1;
-  return j;
-}
-
-int foo3(int i) {
-  int j = 0;
-  switch (i) {
-  default:
-    j = 42; break;
-  case 111:
-    j = 111; break;
-  case 0 ... 100:
-    j = 1; break;
-  case 222:
-    j = 222; break;
-  }
-  return j;
-}
-
-
-static int foo4(int i) {
-  int j = 0;
-  switch (i) {
-  case 111:
-    j = 111; break;
-  case 0 ... 100:
-    j = 1; break;
-  case 222:
-    j = 222; break;
-  default:
-    j = 42; break;
-  case 501 ... 600:
-    j = 5; break;
-  }
-  return j;
-}
-
-// CHECK: define i32 @foo4t()
-// CHECK: ret i32 376
-// CHECK: }
-int foo4t() {
-  // 111 + 1 + 222 + 42 = 376
-  return foo4(111) + foo4(99) + foo4(222) + foo4(601);
-}
-
-// CHECK: define void @foo5()
-// CHECK-NOT: switch
-// CHECK: }
-void foo5(){
-    switch(0){
-    default:
-        if (0) {
-
-        }
-    }
-}
-
-// CHECK: define void @foo6()
-// CHECK-NOT: switch
-// CHECK: }
-void foo6(){
-    switch(0){
-    }
-}
-
-// CHECK: define void @foo7()
-// CHECK-NOT: switch
-// CHECK: }
-void foo7(){
-    switch(0){
-      foo7();
-    }
-}
-
-
-// CHECK: define i32 @f8(
-// CHECK: ret i32 3
-// CHECK: }
-int f8(unsigned x) {
-  switch(x) {
-  default:
-    return 3;
-  case 0xFFFFFFFF ... 1: // This range should be empty because x is unsigned.
-    return 0;
-  }
-}
-
-// Ensure that default after a case range is not ignored.
-//
-// CHECK: define i32 @f9()
-// CHECK: ret i32 10
-// CHECK: }
-static int f9_0(unsigned x) {
-  switch(x) {
-  case 10 ... 0xFFFFFFFF:
-    return 0;
-  default:
-    return 10;
-  }
-}
-int f9() {
-  return f9_0(2);
-}
-
-// Ensure that this doesn't compile to infinite loop in g() due to
-// miscompilation of fallthrough from default to a (tested) case
-// range.
-//
-// CHECK: define i32 @f10()
-// CHECK: ret i32 10
-// CHECK: }
-static int f10_0(unsigned x) {
-  switch(x) {
-  default:
-    x += 1;
-  case 10 ... 0xFFFFFFFF:
-    return 0;
-  }
-}
-
-int f10() {
-  f10_0(1);
-  return 10;
-}
-
-// This generated incorrect code because of poor switch chaining.
-//
-// CHECK: define i32 @f11(
-// CHECK: ret i32 3
-// CHECK: }
-int f11(int x) {
-  switch(x) {
-  default:
-    return 3;
-  case 10 ... 0xFFFFFFFF:
-    return 0;
-  }
-}
-
-// This just asserted because of the way case ranges were calculated.
-//
-// CHECK: define i32 @f12(
-// CHECK: ret i32 3
-// CHECK: }
-int f12(int x) {
-  switch (x) {
-  default:
-    return 3;
-  case 10 ... -1: 
-    return 0;
-  }
-}
-
-// Make sure return is not constant (if empty range is skipped or miscompiled)
-//
-// CHECK: define i32 @f13(
-// CHECK: ret i32 %
-// CHECK: }
-int f13(unsigned x) {
-  switch(x) {
-  case 2:
-    // fallthrough empty range
-  case 10 ... 9:
-    return 10;
-  default:
-    return 0;
-  }
-}
-
-// Don't delete a basic block that we want to introduce later references to.
-// This isn't really specific to switches, but it's easy to show with them.
-// rdar://problem/8837067
-int f14(int x) {
-  switch (x) {
-
-  // case range so that the case block has no predecessors
-  case 0 ... 15:
-    // any expression which doesn't introduce a new block
-    (void) 0;
-    // kaboom
-
-  default:
-    return x;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/systemz-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/systemz-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/systemz-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,131 +0,0 @@
-// RUN: %clang_cc1 -triple s390x-linux-gnu -O2 -emit-llvm -o - %s | FileCheck %s
-
-unsigned int gi;
-unsigned long gl;
-
-void test_store_m(unsigned int i) {
-  asm("st %1, %0" : "=m" (gi) : "r" (i));
-// CHECK: define void @test_store_m(i32 zeroext %i)
-// CHECK: call void asm "st $1, $0", "=*m,r"(i32* @gi, i32 %i)
-}
-
-void test_store_Q(unsigned int i) {
-  asm("st %1, %0" : "=Q" (gi) : "r" (i));
-// CHECK: define void @test_store_Q(i32 zeroext %i)
-// CHECK: call void asm "st $1, $0", "=*Q,r"(i32* @gi, i32 %i)
-}
-
-void test_store_R(unsigned int i) {
-  asm("st %1, %0" : "=R" (gi) : "r" (i));
-// CHECK: define void @test_store_R(i32 zeroext %i)
-// CHECK: call void asm "st $1, $0", "=*R,r"(i32* @gi, i32 %i)
-}
-
-void test_store_S(unsigned int i) {
-  asm("st %1, %0" : "=S" (gi) : "r" (i));
-// CHECK: define void @test_store_S(i32 zeroext %i)
-// CHECK: call void asm "st $1, $0", "=*S,r"(i32* @gi, i32 %i)
-}
-
-void test_store_T(unsigned int i) {
-  asm("st %1, %0" : "=T" (gi) : "r" (i));
-// CHECK: define void @test_store_T(i32 zeroext %i)
-// CHECK: call void asm "st $1, $0", "=*T,r"(i32* @gi, i32 %i)
-}
-
-int test_load_m() {
-  unsigned int i;
-  asm("l %0, %1" : "=r" (i) : "m" (gi));
-  return i;
-// CHECK: define signext i32 @test_load_m()
-// CHECK: call i32 asm "l $0, $1", "=r,*m"(i32* @gi)
-}
-
-int test_load_Q() {
-  unsigned int i;
-  asm("l %0, %1" : "=r" (i) : "Q" (gi));
-  return i;
-// CHECK: define signext i32 @test_load_Q()
-// CHECK: call i32 asm "l $0, $1", "=r,*Q"(i32* @gi)
-}
-
-int test_load_R() {
-  unsigned int i;
-  asm("l %0, %1" : "=r" (i) : "R" (gi));
-  return i;
-// CHECK: define signext i32 @test_load_R()
-// CHECK: call i32 asm "l $0, $1", "=r,*R"(i32* @gi)
-}
-
-int test_load_S() {
-  unsigned int i;
-  asm("l %0, %1" : "=r" (i) : "S" (gi));
-  return i;
-// CHECK: define signext i32 @test_load_S()
-// CHECK: call i32 asm "l $0, $1", "=r,*S"(i32* @gi)
-}
-
-int test_load_T() {
-  unsigned int i;
-  asm("l %0, %1" : "=r" (i) : "T" (gi));
-  return i;
-// CHECK: define signext i32 @test_load_T()
-// CHECK: call i32 asm "l $0, $1", "=r,*T"(i32* @gi)
-}
-
-void test_mI(unsigned char *c) {
-  asm volatile("cli %0, %1" :: "Q" (*c), "I" (100));
-// CHECK: define void @test_mI(i8* %c)
-// CHECK: call void asm sideeffect "cli $0, $1", "*Q,I"(i8* %c, i32 100)
-}
-
-unsigned int test_dJa(unsigned int i, unsigned int j) {
-  asm("sll %0, %2(%3)" : "=d" (i) : "0" (i), "J" (1000), "a" (j));
-  return i;
-// CHECK: define zeroext i32 @test_dJa(i32 zeroext %i, i32 zeroext %j)
-// CHECK: call i32 asm "sll $0, $2($3)", "=d,0,J,a"(i32 %i, i32 1000, i32 %j)
-}
-
-unsigned long test_rK(unsigned long i) {
-  asm("aghi %0, %2" : "=r" (i) : "0" (i), "K" (-30000));
-  return i;
-// CHECK: define i64 @test_rK(i64 %i)
-// CHECK: call i64 asm "aghi $0, $2", "=r,0,K"(i64 %i, i32 -30000)
-}
-
-unsigned long test_rL(unsigned long i) {
-  asm("sllg %0, %1, %2" : "=r" (i) : "r" (i), "L" (500000));
-  return i;
-// CHECK: define i64 @test_rL(i64 %i)
-// CHECK: call i64 asm "sllg $0, $1, $2", "=r,r,L"(i64 %i, i32 500000)
-}
-
-void test_M() {
-  asm volatile("#FOO %0" :: "M"(0x7fffffff));
-// CHECK: define void @test_M()
-// CHECK: call void asm sideeffect "#FOO $0", "M"(i32 2147483647)
-}
-
-float test_f32(float f, float g) {
-  asm("aebr %0, %2" : "=f" (f) : "0" (f), "f" (g));
-  return f;
-// CHECK: define float @test_f32(float %f, float %g)
-// CHECK: call float asm "aebr $0, $2", "=f,0,f"(float %f, float %g)
-}
-
-double test_f64(double f, double g) {
-  asm("adbr %0, %2" : "=f" (f) : "0" (f), "f" (g));
-  return f;
-// CHECK: define double @test_f64(double %f, double %g)
-// CHECK: call double asm "adbr $0, $2", "=f,0,f"(double %f, double %g)
-}
-
-long double test_f128(long double f, long double g) {
-  asm("axbr %0, %2" : "=f" (f) : "0" (f), "f" (g));
-  return f;
-// CHECK: define void @test_f128(fp128* noalias nocapture sret [[DEST:%.*]], fp128* byval nocapture, fp128* byval nocapture)
-// CHECK: %f = load fp128* %0
-// CHECK: %g = load fp128* %1
-// CHECK: [[RESULT:%.*]] = tail call fp128 asm "axbr $0, $2", "=f,0,f"(fp128 %f, fp128 %g)
-// CHECK: store fp128 [[RESULT]], fp128* [[DEST]]
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/target-data.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/target-data.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/target-data.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple i686-unknown-unknown -emit-llvm -o %t %s
-// RUN: grep 'target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128"' %t
-// RUN: %clang_cc1 -triple i686-apple-darwin9 -emit-llvm -o %t %s
-// RUN: grep 'target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128"' %t
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o %t %s
-// RUN: grep 'target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"' %t

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,226 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -O1 -disable-llvm-optzns %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -O1 -struct-path-tbaa -disable-llvm-optzns %s -emit-llvm -o - | FileCheck %s -check-prefix=PATH
-// Test TBAA metadata generated by front-end.
-
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-class StructA
-{
-public:
-   uint16_t f16;
-   uint32_t f32;
-   uint16_t f16_2;
-   uint32_t f32_2;
-};
-class StructB
-{
-public:
-   uint16_t f16;
-   StructA a;
-   uint32_t f32;
-};
-class StructC
-{
-public:
-   uint16_t f16;
-   StructB b;
-   uint32_t f32;
-};
-class StructD
-{
-public:
-   uint16_t f16;
-   StructB b;
-   uint32_t f32;
-   uint8_t f8;
-};
-
-class StructS
-{
-public:
-   uint16_t f16;
-   uint32_t f32;
-};
-class StructS2 : public StructS
-{
-public:
-   uint16_t f16_2;
-   uint32_t f32_2;
-};
-
-uint32_t g(uint32_t *s, StructA *A, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_i32:!.*]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32:!.*]]
-  *s = 1;
-  A->f32 = 4;
-  return *s;
-}
-
-uint32_t g2(uint32_t *s, StructA *A, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_i32]]
-// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa [[TAG_A_f16:!.*]]
-  *s = 1;
-  A->f16 = 4;
-  return *s;
-}
-
-uint32_t g3(StructA *A, StructB *B, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_B_a_f32:!.*]]
-  A->f32 = 1;
-  B->a.f32 = 4;
-  return A->f32;
-}
-
-uint32_t g4(StructA *A, StructB *B, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa [[TAG_B_a_f16:!.*]]
-  A->f32 = 1;
-  B->a.f16 = 4;
-  return A->f32;
-}
-
-uint32_t g5(StructA *A, StructB *B, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_B_f32:!.*]]
-  A->f32 = 1;
-  B->f32 = 4;
-  return A->f32;
-}
-
-uint32_t g6(StructA *A, StructB *B, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_B_a_f32_2:!.*]]
-  A->f32 = 1;
-  B->a.f32_2 = 4;
-  return A->f32;
-}
-
-uint32_t g7(StructA *A, StructS *S, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32:!.*]]
-  A->f32 = 1;
-  S->f32 = 4;
-  return A->f32;
-}
-
-uint32_t g8(StructA *A, StructS *S, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa [[TAG_S_f16:!.*]]
-  A->f32 = 1;
-  S->f16 = 4;
-  return A->f32;
-}
-
-uint32_t g9(StructS *S, StructS2 *S2, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32:!.*]]
-  S->f32 = 1;
-  S2->f32 = 4;
-  return S->f32;
-}
-
-uint32_t g10(StructS *S, StructS2 *S2, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_S2_f32_2:!.*]]
-  S->f32 = 1;
-  S2->f32_2 = 4;
-  return S->f32;
-}
-
-uint32_t g11(StructC *C, StructD *D, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_C_b_a_f32:!.*]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_D_b_a_f32:!.*]]
-  C->b.a.f32 = 1;
-  D->b.a.f32 = 4;
-  return C->b.a.f32;
-}
-
-uint32_t g12(StructC *C, StructD *D, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// TODO: differentiate the two accesses.
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_B_a_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_B_a_f32]]
-  StructB *b1 = &(C->b);
-  StructB *b2 = &(D->b);
-  // b1, b2 have different context.
-  b1->a.f32 = 1;
-  b2->a.f32 = 4;
-  return b1->a.f32;
-}
-
-// CHECK: !1 = metadata !{metadata !"omnipotent char", metadata !2}
-// CHECK: !2 = metadata !{metadata !"Simple C/C++ TBAA"}
-// CHECK: !4 = metadata !{metadata !"int", metadata !1}
-// CHECK: !5 = metadata !{metadata !"short", metadata !1}
-
-// PATH: [[TYPE_CHAR:!.*]] = metadata !{metadata !"omnipotent char", metadata !3
-// PATH: [[TAG_i32]] = metadata !{metadata [[TYPE_INT:!.*]], metadata [[TYPE_INT]], i64 0}
-// PATH: [[TYPE_INT]] = metadata !{metadata !"int", metadata [[TYPE_CHAR]]
-// PATH: [[TAG_A_f32]] = metadata !{metadata [[TYPE_A:!.*]], metadata [[TYPE_INT]], i64 4}
-// PATH: [[TYPE_A]] = metadata !{metadata !"_ZTS7StructA", metadata [[TYPE_SHORT:!.*]], i64 0, metadata [[TYPE_INT]], i64 4, metadata [[TYPE_SHORT]], i64 8, metadata [[TYPE_INT]], i64 12}
-// PATH: [[TYPE_SHORT:!.*]] = metadata !{metadata !"short", metadata [[TYPE_CHAR]]
-// PATH: [[TAG_A_f16]] = metadata !{metadata [[TYPE_A]], metadata [[TYPE_SHORT]], i64 0}
-// PATH: [[TAG_B_a_f32]] = metadata !{metadata [[TYPE_B:!.*]], metadata [[TYPE_INT]], i64 8}
-// PATH: [[TYPE_B]] = metadata !{metadata !"_ZTS7StructB", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_A]], i64 4, metadata [[TYPE_INT]], i64 20}
-// PATH: [[TAG_B_a_f16]] = metadata !{metadata [[TYPE_B]], metadata [[TYPE_SHORT]], i64 4}
-// PATH: [[TAG_B_f32]] = metadata !{metadata [[TYPE_B]], metadata [[TYPE_INT]], i64 20}
-// PATH: [[TAG_B_a_f32_2]] = metadata !{metadata [[TYPE_B]], metadata [[TYPE_INT]], i64 16}
-// PATH: [[TAG_S_f32]] = metadata !{metadata [[TYPE_S:!.*]], metadata [[TYPE_INT]], i64 4}
-// PATH: [[TYPE_S]] = metadata !{metadata !"_ZTS7StructS", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_INT]], i64 4}
-// PATH: [[TAG_S_f16]] = metadata !{metadata [[TYPE_S]], metadata [[TYPE_SHORT]], i64 0}
-// PATH: [[TAG_S2_f32_2]] = metadata !{metadata [[TYPE_S2:!.*]], metadata [[TYPE_INT]], i64 12}
-// PATH: [[TYPE_S2]] = metadata !{metadata !"_ZTS8StructS2", metadata [[TYPE_SHORT]], i64 8, metadata [[TYPE_INT]], i64 12}
-// PATH: [[TAG_C_b_a_f32]] = metadata !{metadata [[TYPE_C:!.*]], metadata [[TYPE_INT]], i64 12}
-// PATH: [[TYPE_C]] = metadata !{metadata !"_ZTS7StructC", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_B]], i64 4, metadata [[TYPE_INT]], i64 28}
-// PATH: [[TAG_D_b_a_f32]] = metadata !{metadata [[TYPE_D:!.*]], metadata [[TYPE_INT]], i64 12}
-// PATH: [[TYPE_D]] = metadata !{metadata !"_ZTS7StructD", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_B]], i64 4, metadata [[TYPE_INT]], i64 28, metadata [[TYPE_CHAR]], i64 32}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-for-vptr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-for-vptr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-for-vptr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -O0 -fsanitize=thread %s | FileCheck %s
-// RUN: %clang_cc1 -emit-llvm -o - -O1 %s | FileCheck %s
-// RUN: %clang_cc1 -emit-llvm -o - -O1  -relaxed-aliasing -fsanitize=thread %s | FileCheck %s
-//
-// RUN: %clang_cc1 -emit-llvm -o - -O0 %s | FileCheck %s --check-prefix=NOTBAA
-// RUN: %clang_cc1 -emit-llvm -o - -O2  -relaxed-aliasing %s | FileCheck %s --check-prefix=NOTBAA
-//
-// Check that we generate TBAA for vtable pointer loads and stores.
-// When -fthread-sanitizer is used TBAA should be generated at all opt levels
-// even if -relaxed-aliasing is present.
-struct A {
-  virtual int foo() const ;
-  virtual ~A();
-};
-
-void CreateA() {
-  new A;
-}
-
-void CallFoo(A *a) {
-  a->foo();
-}
-
-// CHECK: %{{.*}} = load {{.*}} !tbaa ![[NUM:[0-9]+]]
-// CHECK: store {{.*}} !tbaa ![[NUM]]
-// CHECK: [[NUM]] = metadata !{metadata !"vtable pointer", metadata !{{.*}}}
-// NOTBAA-NOT: = metadata !{metadata !"Simple C/C++ TBAA"}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-struct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-struct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa-struct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - -O1 %s | FileCheck %s
-//
-// Check that we generate !tbaa.struct metadata for struct copies.
-struct A {
-  short s;
-  int i;
-  char c;
-  int j;
-};
-
-void copy(struct A *a, struct A *b) {
-  *a = *b;
-}
-
-// CHECK: target datalayout = "{{.*}}p:[[P:64|32]]
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.i[[P]](i8* %{{.*}}, i8* %{{.*}}, i[[P]] 16, i32 4, i1 false), !tbaa.struct [[TS:!.*]]
-
-struct B {
-  char c1;
-  struct A a;
-  int ii;
-};
-
-void copy2(struct B *a, struct B *b) {
-  *a = *b;
-}
-
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.i[[P]](i8* %{{.*}}, i8* %{{.*}}, i[[P]] 24, i32 4, i1 false), !tbaa.struct [[TS2:!.*]]
-
-typedef _Complex int T2;
-typedef _Complex char T5;
-typedef _Complex int T7;
-typedef struct T4 { T5 field0; T7 field1; } T4;
-typedef union T1 { T2 field0; T4 field1; } T1;
-
-void copy3 (T1 *a, T1 *b) {
-  *a = *b;
-}
-
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.i[[P]](i8* %{{.*}}, i8* %{{.*}}, i[[P]] 12, i32 4, i1 false), !tbaa.struct [[TS3:!.*]]
-
-// Make sure that zero-length bitfield works.
-#define ATTR __attribute__ ((ms_struct))
-struct five {
-  char a;
-  int :0;        /* ignored; prior field is not a bitfield. */
-  char b;
-  char c;
-} ATTR;
-void copy4(struct five *a, struct five *b) {
-  *a = *b;
-}
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.i[[P]](i8* %{{.*}}, i8* %{{.*}}, i[[P]] 3, i32 1, i1 false), !tbaa.struct [[TS4:!.*]]
-
-struct six {
-  char a;
-  int :0;
-  char b;
-  char c;
-};
-void copy5(struct six *a, struct six *b) {
-  *a = *b;
-}
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.i[[P]](i8* %{{.*}}, i8* %{{.*}}, i[[P]] 6, i32 1, i1 false), !tbaa.struct [[TS5:!.*]]
-
-// CHECK: [[TS]] = metadata !{i64 0, i64 2, metadata !{{.*}}, i64 4, i64 4, metadata !{{.*}}, i64 8, i64 1, metadata !{{.*}}, i64 12, i64 4, metadata !{{.*}}}
-// CHECK: [[CHAR:!.*]] = metadata !{metadata !"omnipotent char", metadata !{{.*}}}
-// CHECK: [[INT:!.*]] = metadata !{metadata !"int", metadata [[CHAR]]}
-// (offset, size) = (0,1) char; (4,2) short; (8,4) int; (12,1) char; (16,4) int; (20,4) int
-// CHECK: [[TS2]] = metadata !{i64 0, i64 1, metadata !{{.*}}, i64 4, i64 2, metadata !{{.*}}, i64 8, i64 4, metadata !{{.*}}, i64 12, i64 1, metadata !{{.*}}, i64 16, i64 4, metadata {{.*}}, i64 20, i64 4, metadata {{.*}}}
-// (offset, size) = (0,8) char; (0,2) char; (4,8) char
-// CHECK: [[TS3]] = metadata !{i64 0, i64 8, metadata !{{.*}}, i64 0, i64 2, metadata !{{.*}}, i64 4, i64 8, metadata !{{.*}}}
-// CHECK: [[TS4]] = metadata !{i64 0, i64 1, metadata [[CHAR]], i64 1, i64 1, metadata [[CHAR]], i64 2, i64 1, metadata [[CHAR]]}
-// CHECK: [[TS5]] = metadata !{i64 0, i64 1, metadata [[CHAR]], i64 4, i64 4, metadata [[INT]], i64 4, i64 1, metadata [[CHAR]], i64 5, i64 1, metadata [[CHAR]]}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/tbaa.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,255 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -O1 -disable-llvm-optzns %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -O1 -struct-path-tbaa -disable-llvm-optzns %s -emit-llvm -o - | FileCheck %s -check-prefix=PATH
-// Test TBAA metadata generated by front-end.
-
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-typedef struct
-{
-   uint16_t f16;
-   uint32_t f32;
-   uint16_t f16_2;
-   uint32_t f32_2;
-} StructA;
-typedef struct
-{
-   uint16_t f16;
-   StructA a;
-   uint32_t f32;
-} StructB;
-typedef struct
-{
-   uint16_t f16;
-   StructB b;
-   uint32_t f32;
-} StructC;
-typedef struct
-{
-   uint16_t f16;
-   StructB b;
-   uint32_t f32;
-   uint8_t f8;
-} StructD;
-
-typedef struct
-{
-   uint16_t f16;
-   uint32_t f32;
-} StructS;
-typedef struct
-{
-   uint16_t f16;
-   uint32_t f32;
-} StructS2;
-
-uint32_t g(uint32_t *s, StructA *A, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_i32:!.*]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32:!.*]]
-  *s = 1;
-  A->f32 = 4;
-  return *s;
-}
-
-uint32_t g2(uint32_t *s, StructA *A, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_i32]]
-// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa [[TAG_A_f16:!.*]]
-  *s = 1;
-  A->f16 = 4;
-  return *s;
-}
-
-uint32_t g3(StructA *A, StructB *B, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_B_a_f32:!.*]]
-  A->f32 = 1;
-  B->a.f32 = 4;
-  return A->f32;
-}
-
-uint32_t g4(StructA *A, StructB *B, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa [[TAG_B_a_f16:!.*]]
-  A->f32 = 1;
-  B->a.f16 = 4;
-  return A->f32;
-}
-
-uint32_t g5(StructA *A, StructB *B, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_B_f32:!.*]]
-  A->f32 = 1;
-  B->f32 = 4;
-  return A->f32;
-}
-
-uint32_t g6(StructA *A, StructB *B, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_B_a_f32_2:!.*]]
-  A->f32 = 1;
-  B->a.f32_2 = 4;
-  return A->f32;
-}
-
-uint32_t g7(StructA *A, StructS *S, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32:!.*]]
-  A->f32 = 1;
-  S->f32 = 4;
-  return A->f32;
-}
-
-uint32_t g8(StructA *A, StructS *S, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_A_f32]]
-// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa [[TAG_S_f16:!.*]]
-  A->f32 = 1;
-  S->f16 = 4;
-  return A->f32;
-}
-
-uint32_t g9(StructS *S, StructS2 *S2, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_S2_f32:!.*]]
-  S->f32 = 1;
-  S2->f32 = 4;
-  return S->f32;
-}
-
-uint32_t g10(StructS *S, StructS2 *S2, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i16 4, i16* %{{.*}}, align 2, !tbaa !5
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_S_f32]]
-// PATH: store i16 4, i16* %{{.*}}, align 2, !tbaa [[TAG_S2_f16:!.*]]
-  S->f32 = 1;
-  S2->f16 = 4;
-  return S->f32;
-}
-
-uint32_t g11(StructC *C, StructD *D, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_C_b_a_f32:!.*]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_D_b_a_f32:!.*]]
-  C->b.a.f32 = 1;
-  D->b.a.f32 = 4;
-  return C->b.a.f32;
-}
-
-uint32_t g12(StructC *C, StructD *D, uint64_t count) {
-// CHECK: define i32 @{{.*}}(
-// CHECK: store i32 1, i32* %{{.*}}, align 4, !tbaa !4
-// CHECK: store i32 4, i32* %{{.*}}, align 4, !tbaa !4
-// TODO: differentiate the two accesses.
-// PATH: define i32 @{{.*}}(
-// PATH: store i32 1, i32* %{{.*}}, align 4, !tbaa [[TAG_B_a_f32]]
-// PATH: store i32 4, i32* %{{.*}}, align 4, !tbaa [[TAG_B_a_f32]]
-  StructB *b1 = &(C->b);
-  StructB *b2 = &(D->b);
-  // b1, b2 have different context.
-  b1->a.f32 = 1;
-  b2->a.f32 = 4;
-  return b1->a.f32;
-}
-
-// Make sure that zero-length bitfield works.
-#define ATTR __attribute__ ((ms_struct))
-struct five {
-  char a;
-  int :0;        /* ignored; prior field is not a bitfield. */
-  char b;
-  char c;
-} ATTR;
-char g13(struct five *a, struct five *b) {
-  return a->b;
-// CHECK: define signext i8 @{{.*}}(
-// CHECK: load i8* %{{.*}}, align 1, !tbaa !1
-// PATH: define signext i8 @{{.*}}(
-// PATH: load i8* %{{.*}}, align 1, !tbaa [[TAG_five_b:!.*]]
-}
-
-struct six {
-  char a;
-  int :0;
-  char b;
-  char c;
-};
-char g14(struct six *a, struct six *b) {
-// CHECK: define signext i8 @{{.*}}(
-// CHECK: load i8* %{{.*}}, align 1, !tbaa !1
-// PATH: define signext i8 @{{.*}}(
-// PATH: load i8* %{{.*}}, align 1, !tbaa [[TAG_six_b:!.*]]
-  return a->b;
-}
-
-// CHECK: !1 = metadata !{metadata !"omnipotent char", metadata !2}
-// CHECK: !2 = metadata !{metadata !"Simple C/C++ TBAA"}
-// CHECK: !4 = metadata !{metadata !"int", metadata !1}
-// CHECK: !5 = metadata !{metadata !"short", metadata !1}
-
-// PATH: [[TYPE_CHAR:!.*]] = metadata !{metadata !"omnipotent char", metadata !3
-// PATH: [[TAG_i32]] = metadata !{metadata [[TYPE_INT:!.*]], metadata [[TYPE_INT]], i64 0}
-// PATH: [[TYPE_INT]] = metadata !{metadata !"int", metadata [[TYPE_CHAR]]
-// PATH: [[TAG_A_f32]] = metadata !{metadata [[TYPE_A:!.*]], metadata [[TYPE_INT]], i64 4}
-// PATH: [[TYPE_A]] = metadata !{metadata !"_ZTS7StructA", metadata [[TYPE_SHORT:!.*]], i64 0, metadata [[TYPE_INT]], i64 4, metadata [[TYPE_SHORT]], i64 8, metadata [[TYPE_INT]], i64 12}
-// PATH: [[TYPE_SHORT:!.*]] = metadata !{metadata !"short", metadata [[TYPE_CHAR]]
-// PATH: [[TAG_A_f16]] = metadata !{metadata [[TYPE_A]], metadata [[TYPE_SHORT]], i64 0}
-// PATH: [[TAG_B_a_f32]] = metadata !{metadata [[TYPE_B:!.*]], metadata [[TYPE_INT]], i64 8}
-// PATH: [[TYPE_B]] = metadata !{metadata !"_ZTS7StructB", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_A]], i64 4, metadata [[TYPE_INT]], i64 20}
-// PATH: [[TAG_B_a_f16]] = metadata !{metadata [[TYPE_B]], metadata [[TYPE_SHORT]], i64 4}
-// PATH: [[TAG_B_f32]] = metadata !{metadata [[TYPE_B]], metadata [[TYPE_INT]], i64 20}
-// PATH: [[TAG_B_a_f32_2]] = metadata !{metadata [[TYPE_B]], metadata [[TYPE_INT]], i64 16}
-// PATH: [[TAG_S_f32]] = metadata !{metadata [[TYPE_S:!.*]], metadata [[TYPE_INT]], i64 4}
-// PATH: [[TYPE_S]] = metadata !{metadata !"_ZTS7StructS", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_INT]], i64 4}
-// PATH: [[TAG_S_f16]] = metadata !{metadata [[TYPE_S]], metadata [[TYPE_SHORT]], i64 0}
-// PATH: [[TAG_S2_f32]] = metadata !{metadata [[TYPE_S2:!.*]], metadata [[TYPE_INT]], i64 4}
-// PATH: [[TYPE_S2]] = metadata !{metadata !"_ZTS8StructS2", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_INT]], i64 4}
-// PATH: [[TAG_S2_f16]] = metadata !{metadata [[TYPE_S2]], metadata [[TYPE_SHORT]], i64 0}
-// PATH: [[TAG_C_b_a_f32]] = metadata !{metadata [[TYPE_C:!.*]], metadata [[TYPE_INT]], i64 12}
-// PATH: [[TYPE_C]] = metadata !{metadata !"_ZTS7StructC", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_B]], i64 4, metadata [[TYPE_INT]], i64 28}
-// PATH: [[TAG_D_b_a_f32]] = metadata !{metadata [[TYPE_D:!.*]], metadata [[TYPE_INT]], i64 12}
-// PATH: [[TYPE_D]] = metadata !{metadata !"_ZTS7StructD", metadata [[TYPE_SHORT]], i64 0, metadata [[TYPE_B]], i64 4, metadata [[TYPE_INT]], i64 28, metadata [[TYPE_CHAR]], i64 32}
-// PATH: [[TAG_five_b]] = metadata !{metadata [[TYPE_five:!.*]], metadata [[TYPE_CHAR]], i64 1}
-// PATH: [[TYPE_five]] = metadata !{metadata !"_ZTS4five", metadata [[TYPE_CHAR]], i64 0, metadata [[TYPE_CHAR]], i64 1, metadata [[TYPE_CHAR]], i64 2}
-// PATH: [[TAG_six_b]] = metadata !{metadata [[TYPE_six:!.*]], metadata [[TYPE_CHAR]], i64 4}
-// PATH: [[TYPE_six]] = metadata !{metadata !"_ZTS3six", metadata [[TYPE_CHAR]], i64 0, metadata [[TYPE_INT]], i64 4, metadata [[TYPE_CHAR]], i64 4, metadata [[TYPE_CHAR]], i64 5}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/tentative-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/tentative-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/tentative-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
-// RUN: grep '@r = common global \[1 x .*\] zeroinitializer' %t
-
-int r[];
-int (*a)[] = &r;
-
-struct s0;
-struct s0 x;
-// RUN: grep '@x = common global .struct.s0 zeroinitializer' %t
-
-struct s0 y;
-// RUN: grep '@y = common global .struct.s0 zeroinitializer' %t
-struct s0 *f0() {
-  return &y;
-}
-
-struct s0 {
-  int x;
-};
-
-// RUN: grep '@b = common global \[1 x .*\] zeroinitializer' %t
-int b[];
-int *f1() {
-  return b;
-}
-
-// Check that the most recent tentative definition wins.
-// RUN: grep '@c = common global \[4 x .*\] zeroinitializer' %t
-int c[];
-int c[4];
-
-// Check that we emit static tentative definitions
-// RUN: grep '@c5 = internal global \[1 x .*\] zeroinitializer' %t
-static int c5[];
-static int func() { return c5[0]; }
-int callfunc() { return func(); }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/thread-specifier.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/thread-specifier.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/thread-specifier.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @b = external thread_local global
-// CHECK: @d.e = internal thread_local global
-// CHECK: @d.f = internal thread_local global
-// CHECK: @f.a = internal thread_local(initialexec) global
-// CHECK: @a = thread_local global
-// CHECK: @g = thread_local global
-// CHECK: @h = thread_local(localdynamic) global
-// CHECK: @i = thread_local(initialexec) global
-// CHECK: @j = thread_local(localexec) global
-
-// CHECK-NOT: @_ZTW
-// CHECK-NOT: @_ZTH
-
-__thread int a;
-extern __thread int b;
-int c() { return *&b; }
-int d() {
-  __thread static int e;
-  __thread static union {float a; int b;} f = {.b = 1};
-  return 0;
-}
-
-__thread int g __attribute__((tls_model("global-dynamic")));
-__thread int h __attribute__((tls_model("local-dynamic")));
-__thread int i __attribute__((tls_model("initial-exec")));
-__thread int j __attribute__((tls_model("local-exec")));
-
-int f() {
-  __thread static int a __attribute__((tls_model("initial-exec")));
-  return a++;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/tls-model.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/tls-model.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/tls-model.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-GD
-// RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ftls-model=global-dynamic -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-GD
-// RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ftls-model=local-dynamic -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-LD
-// RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ftls-model=initial-exec -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-IE
-// RUN: %clang_cc1 %s -triple x86_64-pc-linux-gnu -ftls-model=local-exec -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-LE
-
-int __thread x;
-int f() {
-  static int __thread y;
-  return y++;
-}
-int __thread __attribute__((tls_model("initial-exec"))) z;
-
-// CHECK-GD: @f.y = internal thread_local global i32 0
-// CHECK-GD: @x = thread_local global i32 0
-// CHECK-GD: @z = thread_local(initialexec) global i32 0
-
-// CHECK-LD: @f.y = internal thread_local(localdynamic) global i32 0
-// CHECK-LD: @x = thread_local(localdynamic) global i32 0
-// CHECK-LD: @z = thread_local(initialexec) global i32 0
-
-// CHECK-IE: @f.y = internal thread_local(initialexec) global i32 0
-// CHECK-IE: @x = thread_local(initialexec) global i32 0
-// CHECK-IE: @z = thread_local(initialexec) global i32 0
-
-// CHECK-LE: @f.y = internal thread_local(localexec) global i32 0
-// CHECK-LE: @x = thread_local(localexec) global i32 0
-// CHECK-LE: @z = thread_local(initialexec) global i32 0

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/transparent-union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/transparent-union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/transparent-union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -Werror -triple i386-unknown-unknown -emit-llvm -o %t %s
-// RUN: FileCheck < %t %s
-//
-// FIXME: Note that we don't currently get the ABI right here. f0() should be
-// f0(i8*).
-
-typedef union {
-  void *f0;
-} transp_t0 __attribute__((transparent_union));
-
-void f0(transp_t0 obj);
-
-// CHECK: define void @f1_0(i32* %a0) 
-// CHECK:  call void @f0(%union.transp_t0* byval align 4 %{{.*}})
-// CHECK:  call void %{{.*}}(i8* %{{[a-z0-9]*}})
-// CHECK: }
-void f1_0(int *a0) {
-  void (*f0p)(void *) = f0;
-  f0(a0);
-  f0p(a0);
-}
-
-void f1_1(int *a0) {
-  f0((transp_t0) { a0 });
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/trapv.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/trapv.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/trapv.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -ftrapv %s -emit-llvm -o - | FileCheck %s
-
-unsigned int ui, uj, uk;
-int i, j, k;
-
-// CHECK: define void @test0()
-void test0() {
-  // -ftrapv doesn't affect unsigned arithmetic.
-  // CHECK:      [[T1:%.*]] = load i32* @uj
-  // CHECK-NEXT: [[T2:%.*]] = load i32* @uk
-  // CHECK-NEXT: [[T3:%.*]] = add i32 [[T1]], [[T2]]
-  // CHECK-NEXT: store i32 [[T3]], i32* @ui
-  ui = uj + uk;
-
-  // CHECK:      [[T1:%.*]] = load i32* @j
-  // CHECK-NEXT: [[T2:%.*]] = load i32* @k
-  // CHECK-NEXT: [[T3:%.*]] = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 [[T1]], i32 [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i32, i1 } [[T3]], 0
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i32, i1 } [[T3]], 1
-  // CHECK-NEXT: [[T6:%.*]] = xor i1 [[T5]], true
-  // CHECK-NEXT: br i1 [[T6]]
-  // CHECK:      call void @llvm.trap()
-  i = j + k;
-}
-
-// CHECK: define void @test1()
-void test1() {
-  extern void opaque(int);
-  opaque(i++);
-
-  // CHECK:      [[T1:%.*]] = load i32* @i
-  // CHECK-NEXT: [[T2:%.*]] = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 [[T1]], i32 1)
-  // CHECK-NEXT: [[T3:%.*]] = extractvalue { i32, i1 } [[T2]], 0
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i32, i1 } [[T2]], 1
-  // CHECK-NEXT: [[T5:%.*]] = xor i1 [[T4]], true
-  // CHECK-NEXT: br i1 [[T5]]
-  // CHECK:      call void @llvm.trap()
-}
-
-// CHECK: define void @test2()
-void test2() {
-  extern void opaque(int);
-  opaque(++i);
-
-  // CHECK:      [[T1:%.*]] = load i32* @i
-  // CHECK-NEXT: [[T2:%.*]] = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 [[T1]], i32 1)
-  // CHECK-NEXT: [[T3:%.*]] = extractvalue { i32, i1 } [[T2]], 0
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i32, i1 } [[T2]], 1
-  // CHECK-NEXT: [[T5:%.*]] = xor i1 [[T4]], true
-  // CHECK-NEXT: br i1 [[T5]]
-  // CHECK:      call void @llvm.trap()
-}
-
-// CHECK: define void @test3(
-void test3(int a, int b, float c, float d) {
-  // CHECK-NOT:  @llvm.trap
-  (void)(a / b);
-  (void)(a % b);
-  (void)(c / d);
-  // CHECK: }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/typedef-func.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/typedef-func.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/typedef-func.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s
-
-// PR2414
-struct mad_frame{};
-enum mad_flow {ont};
-
-typedef enum mad_flow filter_func_t(void *, struct mad_frame *);
-
-filter_func_t mono_filter;
-
-void addfilter2(filter_func_t *func){}
-
-void setup_filters()
-{
-  addfilter2( mono_filter);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/typedef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/typedef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/typedef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-typedef struct { int i; } Value;
-typedef Value *PValue;
-
-int get_value(PValue v) {
-  return v->i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm <%s
-
-struct FileName {
-    struct FileName *next;
-} *fnhead;
-
-
-struct ieeeExternal {
-    struct ieeeExternal *next;
-} *exthead;
-
-
-void test1()
-{
-    struct ieeeExternal *exttmp = exthead;
-}
-
-struct MpegEncContext;
-typedef struct MpegEncContext {int pb;} MpegEncContext;
-static void test2(void) {MpegEncContext s; s.pb;}
-
-
-struct Village;
-
-struct List {
-  struct Village *v;
-};
-
-struct Village {
-  struct List returned;
-};
-
-void test3(struct List a) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ubsan-blacklist.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ubsan-blacklist.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ubsan-blacklist.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// Verify ubsan doesn't emit checks for blacklisted functions and files
-// RUN: echo "fun:hash" > %t-func.blacklist
-// RUN: echo "src:%s" > %t-file.blacklist
-// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow -emit-llvm %s -o - | FileCheck %s --check-prefix=DEFAULT
-// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow -fsanitize-blacklist=%t-func.blacklist -emit-llvm %s -o - | FileCheck %s --check-prefix=FUNC
-// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow -fsanitize-blacklist=%t-file.blacklist -emit-llvm %s -o - | FileCheck %s --check-prefix=FILE
-
-// FIXME: %t-file.blacklist contains DOSish paths.
-// REQUIRES: shell
-
-unsigned i;
-
-// DEFAULT: @hash
-// FUNC: @hash
-// FILE: @hash
-unsigned hash() {
-// DEFAULT: call void @__ubsan
-// FUNC-NOT: call void @__ubsan
-// FILE-NOT: call void @__ubsan
-  return i * 37;
-}
-
-// DEFAULT: @add
-// FUNC: @add
-// FILE: @add
-unsigned add() {
-// DEFAULT: call void @__ubsan
-// FUNC: call void @__ubsan
-// FILE-NOT: call void @__ubsan
-  return i + 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/ucn-identifiers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/ucn-identifiers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/ucn-identifiers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null -x c++
-// This file contains UTF-8; please do not fix!
-
-
-extern void \u00FCber(int);
-extern void \U000000FCber(int); // redeclaration, no warning
-
-void goodCalls() {
-  \u00FCber(0);
-  \u00fcber(1);
-  über(2);
-  \U000000FCber(3);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/uint128_t.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/uint128_t.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/uint128_t.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-apple-darwin9
-
-typedef unsigned long long uint64_t;
-extern uint64_t numer;
-extern uint64_t denom;
-
-uint64_t
-f(uint64_t val)
-{
-    __uint128_t tmp;
-
-    tmp = val;
-    tmp *= numer;
-    tmp /= denom;
-
-    return tmp;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/unaligned-memcpy.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/unaligned-memcpy.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/unaligned-memcpy.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-void bork() {
-  char Qux[33] = {0};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/union-align.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/union-align.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/union-align.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep load | grep "4 x float" | not grep "align 4"
-// RUN: %clang_cc1 -emit-llvm %s -o - | grep load | grep "4 x float" | grep "align 16"
-// PR3432
-// rdar://6536377
-
-typedef float __m128 __attribute__ ((__vector_size__ (16)));
-
-typedef union
-{
-  int i[4];
-  float f[4];
-  __m128 v;
-} u_t;
-
-__m128 t(u_t *a) {
-  return a->v;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/union-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/union-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/union-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s -o -
-
-// A nice and complicated initialization example with unions from Python
-typedef int Py_ssize_t;
-
-typedef union _gc_head {
-  struct {
-    union _gc_head *gc_next;
-    union _gc_head *gc_prev;
-    Py_ssize_t gc_refs;
-  } gc;
-  long double dummy;  /* force worst-case alignment */
-} PyGC_Head;
-
-struct gc_generation {
-  PyGC_Head head;
-  int threshold; /* collection threshold */
-  int count;     /* count of allocations or collections of younger
-                    generations */
-};
-
-#define NUM_GENERATIONS 3
-#define GEN_HEAD(n) (&generations[n].head)
-
-/* linked lists of container objects */
-struct gc_generation generations[NUM_GENERATIONS] = {
-  /* PyGC_Head,                     threshold,      count */
-  {{{GEN_HEAD(0), GEN_HEAD(0), 0}}, 700,            0},
-  {{{GEN_HEAD(1), GEN_HEAD(1), 0}},  10,            0},
-  {{{GEN_HEAD(2), GEN_HEAD(2), 0}},  10,            0},
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/union-init2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/union-init2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/union-init2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple i686-pc-linux-gnu | FileCheck %s
-
-// Make sure we generate something sane instead of a ptrtoint
-// CHECK: bitcast ({ %union.x*, [4 x i8] }* @r to %union.x*), [4 x i8] undef
-union x {long long b;union x* a;} r = {.a = &r};
-
-
-// CHECK: global { [3 x i8], [5 x i8] } { [3 x i8] zeroinitializer, [5 x i8] undef }
-union z {
-  char a[3];
-  long long b;
-};
-union z y = {};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-union u_tag {
-  int a;
-  float b;
-} u;
-
-void f() {
-  u.b = 11;
-}
-
-float get_b(union u_tag *my_u) {
-  return my_u->b;
-}
-
-int f2( float __x ) { 
-  union{ 
-    float __f; 
-    unsigned int __u; 
-  }__u;
-  return (int)(__u.__u >> 31); 
-}
-
-typedef union { int i; int *j; } value;
-
-int f3(value v) {
-  return *v.j;
-}
-
-enum E9 { one, two };
-union S65 { enum E9 a; } ; union S65 s65;
-void fS65() { enum E9 e = s65.a; } 
-
-typedef union{
-  unsigned char x[65536];
-} q;
-int qfunc() {q buf; unsigned char* x = buf.x;}
-
-union RR {_Bool a : 1;} RRU;
-int RRF(void) {return RRU.a;}
-
-// PR6164
-typedef union T0 { unsigned int : 0; } T0;
-T0 t0;
-
-union { int large_bitfield: 31; char c } u2;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/unreachable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/unreachable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/unreachable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-// CHECK-NOT: @unreachable
-
-extern void abort() __attribute__((noreturn));
-extern int unreachable();
-
-int f0() {
-  return 0;
-  unreachable();
-}
-
-int f1(int i) {
-  goto L0;
-  int a = unreachable();
- L0:
-  return 0;
-}
-
-int f2(int i) {
-  goto L0;
-  unreachable();
-  int a;
-  unreachable();
- L0:
-  a = i + 1;
-  return a;
-}
-
-int f3(int i) {
-  if (i) {
-    return 0;
-  } else {
-    abort();
-  }
-  unreachable();
-  return 3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-overflow.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-overflow.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-overflow.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsanitize=unsigned-integer-overflow %s -emit-llvm -o - | FileCheck %s
-// Verify checked operations are emitted for integers and longs.
-// unsigned short/char's tested in unsigned-promotion.c
-
-unsigned long li, lj, lk;
-unsigned int ii, ij, ik;
-
-extern void opaquelong(unsigned long);
-extern void opaqueint(unsigned int);
-
-// CHECK: define void @testlongadd()
-void testlongadd() {
-
-  // CHECK:      [[T1:%.*]] = load i64* @lj
-  // CHECK-NEXT: [[T2:%.*]] = load i64* @lk
-  // CHECK-NEXT: [[T3:%.*]] = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 [[T1]], i64 [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i64, i1 } [[T3]], 0
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i64, i1 } [[T3]], 1
-  // CHECK: call void @__ubsan_handle_add_overflow
-  li = lj + lk;
-}
-
-// CHECK: define void @testlongsub()
-void testlongsub() {
-
-  // CHECK:      [[T1:%.*]] = load i64* @lj
-  // CHECK-NEXT: [[T2:%.*]] = load i64* @lk
-  // CHECK-NEXT: [[T3:%.*]] = call { i64, i1 } @llvm.usub.with.overflow.i64(i64 [[T1]], i64 [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i64, i1 } [[T3]], 0
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i64, i1 } [[T3]], 1
-  // CHECK: call void @__ubsan_handle_sub_overflow
-  li = lj - lk;
-}
-
-// CHECK: define void @testlongmul()
-void testlongmul() {
-
-  // CHECK:      [[T1:%.*]] = load i64* @lj
-  // CHECK-NEXT: [[T2:%.*]] = load i64* @lk
-  // CHECK-NEXT: [[T3:%.*]] = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 [[T1]], i64 [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i64, i1 } [[T3]], 0
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i64, i1 } [[T3]], 1
-  // CHECK: call void @__ubsan_handle_mul_overflow
-  li = lj * lk;
-}
-
-// CHECK: define void @testlongpostinc()
-void testlongpostinc() {
-  opaquelong(li++);
-
-  // CHECK:      [[T1:%.*]] = load i64* @li
-  // CHECK-NEXT: [[T2:%.*]] = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 [[T1]], i64 1)
-  // CHECK-NEXT: [[T3:%.*]] = extractvalue { i64, i1 } [[T2]], 0
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i64, i1 } [[T2]], 1
-  // CHECK:      call void @__ubsan_handle_add_overflow
-}
-
-// CHECK: define void @testlongpreinc()
-void testlongpreinc() {
-  opaquelong(++li);
-
-  // CHECK:      [[T1:%.*]] = load i64* @li
-  // CHECK-NEXT: [[T2:%.*]] = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 [[T1]], i64 1)
-  // CHECK-NEXT: [[T3:%.*]] = extractvalue { i64, i1 } [[T2]], 0
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i64, i1 } [[T2]], 1
-  // CHECK:      call void @__ubsan_handle_add_overflow
-}
-
-// CHECK: define void @testintadd()
-void testintadd() {
-
-  // CHECK:      [[T1:%.*]] = load i32* @ij
-  // CHECK-NEXT: [[T2:%.*]] = load i32* @ik
-  // CHECK-NEXT: [[T3:%.*]] = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 [[T1]], i32 [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i32, i1 } [[T3]], 0
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i32, i1 } [[T3]], 1
-  // CHECK:      call void @__ubsan_handle_add_overflow
-  ii = ij + ik;
-}
-
-// CHECK: define void @testintsub()
-void testintsub() {
-
-  // CHECK:      [[T1:%.*]] = load i32* @ij
-  // CHECK-NEXT: [[T2:%.*]] = load i32* @ik
-  // CHECK-NEXT: [[T3:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[T1]], i32 [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i32, i1 } [[T3]], 0
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i32, i1 } [[T3]], 1
-  // CHECK:      call void @__ubsan_handle_sub_overflow
-  ii = ij - ik;
-}
-
-// CHECK: define void @testintmul()
-void testintmul() {
-
-  // CHECK:      [[T1:%.*]] = load i32* @ij
-  // CHECK-NEXT: [[T2:%.*]] = load i32* @ik
-  // CHECK-NEXT: [[T3:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[T1]], i32 [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i32, i1 } [[T3]], 0
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i32, i1 } [[T3]], 1
-  // CHECK:      call void @__ubsan_handle_mul_overflow
-  ii = ij * ik;
-}
-
-// CHECK: define void @testintpostinc()
-void testintpostinc() {
-  opaqueint(ii++);
-
-  // CHECK:      [[T1:%.*]] = load i32* @ii
-  // CHECK-NEXT: [[T2:%.*]] = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 [[T1]], i32 1)
-  // CHECK-NEXT: [[T3:%.*]] = extractvalue { i32, i1 } [[T2]], 0
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i32, i1 } [[T2]], 1
-  // CHECK:      call void @__ubsan_handle_add_overflow
-}
-
-// CHECK: define void @testintpreinc()
-void testintpreinc() {
-  opaqueint(++ii);
-
-  // CHECK:      [[T1:%.*]] = load i32* @ii
-  // CHECK-NEXT: [[T2:%.*]] = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 [[T1]], i32 1)
-  // CHECK-NEXT: [[T3:%.*]] = extractvalue { i32, i1 } [[T2]], 0
-  // CHECK-NEXT: [[T4:%.*]] = extractvalue { i32, i1 } [[T2]], 1
-  // CHECK:      call void @__ubsan_handle_add_overflow
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-promotion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-promotion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-promotion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,143 +0,0 @@
-// Check -fsanitize=signed-integer-overflow and
-// -fsanitize=unsigned-integer-overflow with promoted unsigned types
-//
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s \
-// RUN:   -fsanitize=signed-integer-overflow | FileCheck %s --check-prefix=CHECKS
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s \
-// RUN:   -fsanitize=unsigned-integer-overflow | FileCheck %s --check-prefix=CHECKU
-
-unsigned short si, sj, sk;
-unsigned char ci, cj, ck;
-
-extern void opaqueshort(unsigned short);
-extern void opaquechar(unsigned char);
-
-// CHECKS:   define void @testshortadd()
-// CHECKU: define void @testshortadd()
-void testshortadd() {
-  // CHECKS:        load i16* @sj
-  // CHECKS:        load i16* @sk
-  // CHECKS:        [[T1:%.*]] = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 [[T2:%.*]], i32 [[T3:%.*]])
-  // CHECKS-NEXT:   [[T4:%.*]] = extractvalue { i32, i1 } [[T1]], 0
-  // CHECKS-NEXT:   [[T5:%.*]] = extractvalue { i32, i1 } [[T1]], 1
-  // CHECKS:        call void @__ubsan_handle_add_overflow
-  //
-  // CHECKU:      [[T1:%.*]] = load i16* @sj
-  // CHECKU:      [[T2:%.*]] = zext i16 [[T1]]
-  // CHECKU:      [[T3:%.*]] = load i16* @sk
-  // CHECKU:      [[T4:%.*]] = zext i16 [[T3]]
-  // CHECKU-NOT:  llvm.sadd
-  // CHECKU-NOT:  llvm.uadd
-  // CHECKU:      [[T5:%.*]] = add nsw i32 [[T2]], [[T4]]
-
-  si = sj + sk;
-}
-
-// CHECKS:   define void @testshortsub()
-// CHECKU: define void @testshortsub()
-void testshortsub() {
-
-  // CHECKS:        load i16* @sj
-  // CHECKS:        load i16* @sk
-  // CHECKS:        [[T1:%.*]] = call { i32, i1 } @llvm.ssub.with.overflow.i32(i32 [[T2:%.*]], i32 [[T3:%.*]])
-  // CHECKS-NEXT:   [[T4:%.*]] = extractvalue { i32, i1 } [[T1]], 0
-  // CHECKS-NEXT:   [[T5:%.*]] = extractvalue { i32, i1 } [[T1]], 1
-  // CHECKS:        call void @__ubsan_handle_sub_overflow
-  //
-  // CHECKU:      [[T1:%.*]] = load i16* @sj
-  // CHECKU:      [[T2:%.*]] = zext i16 [[T1]]
-  // CHECKU:      [[T3:%.*]] = load i16* @sk
-  // CHECKU:      [[T4:%.*]] = zext i16 [[T3]]
-  // CHECKU-NOT:  llvm.ssub
-  // CHECKU-NOT:  llvm.usub
-  // CHECKU:      [[T5:%.*]] = sub nsw i32 [[T2]], [[T4]]
-
-  si = sj - sk;
-}
-
-// CHECKS:   define void @testshortmul()
-// CHECKU: define void @testshortmul()
-void testshortmul() {
-
-  // CHECKS:        load i16* @sj
-  // CHECKS:        load i16* @sk
-  // CHECKS:        [[T1:%.*]] = call { i32, i1 } @llvm.smul.with.overflow.i32(i32 [[T2:%.*]], i32 [[T3:%.*]])
-  // CHECKS-NEXT:   [[T4:%.*]] = extractvalue { i32, i1 } [[T1]], 0
-  // CHECKS-NEXT:   [[T5:%.*]] = extractvalue { i32, i1 } [[T1]], 1
-  // CHECKS:        call void @__ubsan_handle_mul_overflow
-  //
-  // CHECKU:      [[T1:%.*]] = load i16* @sj
-  // CHECKU:      [[T2:%.*]] = zext i16 [[T1]]
-  // CHECKU:      [[T3:%.*]] = load i16* @sk
-  // CHECKU:      [[T4:%.*]] = zext i16 [[T3]]
-  // CHECKU-NOT:  llvm.smul
-  // CHECKU-NOT:  llvm.umul
-  // CHECKU:      [[T5:%.*]] = mul nsw i32 [[T2]], [[T4]]
-  si = sj * sk;
-}
-
-// CHECKS:   define void @testcharadd()
-// CHECKU: define void @testcharadd()
-void testcharadd() {
-
-  // CHECKS:        load i8* @cj
-  // CHECKS:        load i8* @ck
-  // CHECKS:        [[T1:%.*]] = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 [[T2:%.*]], i32 [[T3:%.*]])
-  // CHECKS-NEXT:   [[T4:%.*]] = extractvalue { i32, i1 } [[T1]], 0
-  // CHECKS-NEXT:   [[T5:%.*]] = extractvalue { i32, i1 } [[T1]], 1
-  // CHECKS:        call void @__ubsan_handle_add_overflow
-  //
-  // CHECKU:      [[T1:%.*]] = load i8* @cj
-  // CHECKU:      [[T2:%.*]] = zext i8 [[T1]]
-  // CHECKU:      [[T3:%.*]] = load i8* @ck
-  // CHECKU:      [[T4:%.*]] = zext i8 [[T3]]
-  // CHECKU-NOT:  llvm.sadd
-  // CHECKU-NOT:  llvm.uadd
-  // CHECKU:      [[T5:%.*]] = add nsw i32 [[T2]], [[T4]]
-
-  ci = cj + ck;
-}
-
-// CHECKS:   define void @testcharsub()
-// CHECKU: define void @testcharsub()
-void testcharsub() {
-
-  // CHECKS:        load i8* @cj
-  // CHECKS:        load i8* @ck
-  // CHECKS:        [[T1:%.*]] = call { i32, i1 } @llvm.ssub.with.overflow.i32(i32 [[T2:%.*]], i32 [[T3:%.*]])
-  // CHECKS-NEXT:   [[T4:%.*]] = extractvalue { i32, i1 } [[T1]], 0
-  // CHECKS-NEXT:   [[T5:%.*]] = extractvalue { i32, i1 } [[T1]], 1
-  // CHECKS:        call void @__ubsan_handle_sub_overflow
-  //
-  // CHECKU:      [[T1:%.*]] = load i8* @cj
-  // CHECKU:      [[T2:%.*]] = zext i8 [[T1]]
-  // CHECKU:      [[T3:%.*]] = load i8* @ck
-  // CHECKU:      [[T4:%.*]] = zext i8 [[T3]]
-  // CHECKU-NOT:  llvm.ssub
-  // CHECKU-NOT:  llvm.usub
-  // CHECKU:      [[T5:%.*]] = sub nsw i32 [[T2]], [[T4]]
-
-  ci = cj - ck;
-}
-
-// CHECKS:   define void @testcharmul()
-// CHECKU: define void @testcharmul()
-void testcharmul() {
-
-  // CHECKS:        load i8* @cj
-  // CHECKS:        load i8* @ck
-  // CHECKS:        [[T1:%.*]] = call { i32, i1 } @llvm.smul.with.overflow.i32(i32 [[T2:%.*]], i32 [[T3:%.*]])
-  // CHECKS-NEXT:   [[T4:%.*]] = extractvalue { i32, i1 } [[T1]], 0
-  // CHECKS-NEXT:   [[T5:%.*]] = extractvalue { i32, i1 } [[T1]], 1
-  // CHECKS:        call void @__ubsan_handle_mul_overflow
-  //
-  // CHECKU:      [[T1:%.*]] = load i8* @cj
-  // CHECKU:      [[T2:%.*]] = zext i8 [[T1]]
-  // CHECKU:      [[T3:%.*]] = load i8* @ck
-  // CHECKU:      [[T4:%.*]] = zext i8 [[T3]]
-  // CHECKU-NOT:  llvm.smul
-  // CHECKU-NOT:  llvm.umul
-  // CHECKU:      [[T5:%.*]] = mul nsw i32 [[T2]], [[T4]]
-
-  ci = cj * ck;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-trapv.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-trapv.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/unsigned-trapv.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - -fsanitize=unsigned-integer-overflow | FileCheck %s --check-prefix=UNSIGNED
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - -ftrapv | FileCheck %s --check-prefix=TRAPV
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - -fsanitize=unsigned-integer-overflow -ftrapv | FileCheck %s --check-prefix=BOTH
-// Verify that -ftrapv and -fsanitize=unsigned-integer-overflow
-// work together as expected
-
-
-// UNSIGNED: @test_signed
-// TRAPV: @test_signed
-// BOTH: @test_signed
-void test_signed() {
-  extern volatile int a, b, c;
-  // UNSIGNED: add nsw i32
-  // UNSIGNED-NOT: overflow
-  // TRAPV: sadd.with.overflow.i32
-  // TRAPV-NOT: ubsan
-  // TRAPV: llvm.trap
-  // BOTH: sadd.with.overflow.i32
-  // BOTH-NOT: ubsan
-  // BOTH: llvm.trap
-  a = b + c;
-}
-
-// UNSIGNED: @test_unsigned
-// TRAPV: @test_unsigned
-// BOTH: @test_unsigned
-void test_unsigned() {
-  extern volatile unsigned x, y, z;
-  // UNSIGNED: uadd.with.overflow.i32
-  // UNSIGNED-NOT: llvm.trap
-  // UNSIGNED: ubsan
-  // TRAPV-NOT: overflow
-  // TRAPV-NOT: llvm.trap
-  // BOTH: uadd.with.overflow.i32
-  // BOTH: ubsan
-  // BOTH-NOT: llvm.trap
-  x = y + z;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/unwind-attr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/unwind-attr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/unwind-attr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fexceptions -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck -check-prefix NOEXC %s
-
-int opaque();
-
-// CHECK:       define [[INT:i.*]] @test0() [[TF:#[0-9]+]] {
-// CHECK-NOEXC: define [[INT:i.*]] @test0() [[NUW:#[0-9]+]] {
-int test0(void) {
-  return opaque();
-}
-
-// <rdar://problem/8087431>: locally infer nounwind at -O0
-// CHECK:       define [[INT:i.*]] @test1() [[NUW:#[0-9]+]] {
-// CHECK-NOEXC: define [[INT:i.*]] @test1() [[NUW]] {
-int test1(void) {
-  return 0;
-}
-
-// <rdar://problem/8283071>: not for weak functions
-// CHECK:       define weak [[INT:i.*]] @test2() [[TF]] {
-// CHECK-NOEXC: define weak [[INT:i.*]] @test2() [[NUW]] {
-__attribute__((weak)) int test2(void) {
-  return 0;
-}
-
-// CHECK: attributes [[TF]] = { "{{.*}} }
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }
-
-// CHECK-NOEXC: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/utf16-cfstrings.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/utf16-cfstrings.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/utf16-cfstrings.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s
-// <rdar://problem/10655949>
-
-// CHECK: @.str = internal unnamed_addr constant [9 x i16] [i16 252, i16 98, i16 101, i16 114, i16 104, i16 117, i16 110, i16 100, i16 0], align 2
-
-#define CFSTR __builtin___CFStringMakeConstantString
-
-void foo() {
-  CFSTR("überhund");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/varargs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/varargs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/varargs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-
-// PR6433 - Don't crash on va_arg(typedef).
-typedef double gdouble;
-void focus_changed_cb () {
-    __builtin_va_list pa;
-    double mfloat;
-    mfloat = __builtin_va_arg((pa), gdouble);
-}
-
-void vararg(int, ...);
-void function_as_vararg() {
-  // CHECK: define {{.*}}function_as_vararg
-  // CHECK-NOT: llvm.trap
-  vararg(0, focus_changed_cb);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/variable-array.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/variable-array.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/variable-array.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep puts | count 4
-
-// PR3248
-int a(int x)
-{
-  int (*y)[x];
-  return sizeof(*(puts("asdf"),y));
-}
-
-// PR3247
-int b() {
-  return sizeof(*(char(*)[puts("asdf")])0);
-}
-
-// PR3247
-int c() {
-  static int (*y)[puts("asdf")];
-  return sizeof(*y);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/vector-alignment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/vector-alignment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/vector-alignment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -w -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-// rdar://11759609
-
-// At or below target max alignment with no aligned attribute should align based
-// on the size of vector.
-double __attribute__((vector_size(16))) v1;
-// CHECK: @v1 {{.*}}, align 16
-double __attribute__((vector_size(32))) v2;
-// CHECK: @v2 {{.*}}, align 32
-
-// Alignment above target max alignment with no aligned attribute should align
-// based on the target max.
-double __attribute__((vector_size(64))) v3;
-// CHECK: @v3 {{.*}}, align 32
-double __attribute__((vector_size(1024))) v4;
-// CHECK: @v4 {{.*}}, align 32
-
-// Aliged attribute should always override.
-double __attribute__((vector_size(16), aligned(16))) v5;
-// CHECK: @v5 {{.*}}, align 16
-double __attribute__((vector_size(16), aligned(64))) v6;
-// CHECK: @v6 {{.*}}, align 64
-double __attribute__((vector_size(32), aligned(16))) v7;
-// CHECK: @v7 {{.*}}, align 16
-double __attribute__((vector_size(32), aligned(64))) v8;
-// CHECK: @v8 {{.*}}, align 64
-
-// Check non-power of 2 widths.
-double __attribute__((vector_size(24))) v9;
-// CHECK: @v9 {{.*}}, align 32
-double __attribute__((vector_size(40))) v10;
-// CHECK: @v10 {{.*}}, align 32
-
-// Check non-power of 2 widths with aligned attribute.
-double __attribute__((vector_size(24), aligned(64))) v11;
-// CHECK: @v11 {{.*}}, align 64
-double __attribute__((vector_size(80), aligned(16))) v12;
-// CHECK: @v12 {{.*}}, align 16

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/vector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/vector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/vector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -O1 -target-cpu pentium4 -target-feature +sse4.1 -g -emit-llvm %s -o - | FileCheck %s
-typedef short __v4hi __attribute__ ((__vector_size__ (8)));
-
-void test1() {
-  __v4hi A = (__v4hi)0LL;
-}
-
-__v4hi x = {1,2,3};
-__v4hi y = {1,2,3,4};
-
-typedef int vty __attribute((vector_size(16)));
-int test2() { vty b; return b[2LL]; }
-
-// PR4339
-typedef float vec4 __attribute__((vector_size(16)));
-
-void test3 ( vec4* a, char b, float c ) {
-  (*a)[b] = c;
-}
-
-
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <mmintrin.h>
-
-int test4(int argc, char *argv[]) {
-  int array[16] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
-  __m64 *p = (__m64 *)array;
-
-  __m64 accum = _mm_setzero_si64();
-
-  for (int i=0; i<8; ++i)
-     accum = _mm_add_pi32(p[i], accum);
-
-  __m64 accum2 = _mm_unpackhi_pi32(accum, accum);
-  accum = _mm_add_pi32(accum, accum2);
-
-  int result = _mm_cvtsi64_si32(accum);
-  _mm_empty();
-
-  return result;
-}
-
-#include <smmintrin.h>
-
-unsigned long test_epi8(__m128i x) { return _mm_extract_epi8(x, 4); }
-// CHECK: @test_epi8
-// CHECK: extractelement <16 x i8> {{.*}}, i32 4
-// CHECK: zext i8 {{.*}} to i32
-
-unsigned long test_epi16(__m128i x) { return _mm_extract_epi16(x, 3); }
-
-// CHECK: @test_epi16
-// CHECK: extractelement <8 x i16> {{.*}}, i32 3
-// CHECK: zext i16 {{.*}} to i32

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/vfprintf.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/vfprintf.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/vfprintf.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-typedef struct _IO_FILE FILE;
-int vfprintf(FILE*restrict,const char*restrict, __builtin_va_list);
-void foo(__builtin_va_list ap) {
-  vfprintf(0, " ", ap);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/visibility.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/visibility.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/visibility.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -fvisibility default -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-DEFAULT
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -fvisibility protected -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-PROTECTED
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -fvisibility hidden -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-HIDDEN
-
-// CHECK-DEFAULT: @g_def = global i32 0
-// CHECK-DEFAULT: @g_com = common global i32 0
-// CHECK-DEFAULT: @g_ext = external global i32
-// CHECK-DEFAULT: @g_deferred = internal global
-// CHECK-PROTECTED: @g_def = protected global i32 0
-// CHECK-PROTECTED: @g_com = common protected global i32 0
-// CHECK-PROTECTED: @g_ext = external global i32
-// CHECK-PROTECTED: @g_deferred = internal global
-// CHECK-HIDDEN: @g_def = hidden global i32 0
-// CHECK-HIDDEN: @g_com = common hidden global i32 0
-// CHECK-HIDDEN: @g_ext = external global i32
-// CHECK-HIDDEN: @g_deferred = internal global
-int g_com;
-int g_def = 0;
-extern int g_ext;
-static char g_deferred[] = "hello";
-
-// CHECK-DEFAULT: @test4 = hidden global i32 10
-// CHECK-PROTECTED: @test4 = hidden global i32 10
-// CHECK-HIDDEN: @test4 = hidden global i32 10
-
-// CHECK-DEFAULT: define i32 @f_def()
-// CHECK-DEFAULT: declare void @f_ext()
-// CHECK-DEFAULT: define internal void @f_deferred()
-// CHECK-PROTECTED: define protected i32 @f_def()
-// CHECK-PROTECTED: declare void @f_ext()
-// CHECK-PROTECTED: define internal void @f_deferred()
-// CHECK-HIDDEN: define hidden i32 @f_def()
-// CHECK-HIDDEN: declare void @f_ext()
-// CHECK-HIDDEN: define internal void @f_deferred()
-
-extern void f_ext(void);
-
-static void f_deferred(void) {
-}
-
-int f_def(void) {
-  f_ext();
-  f_deferred();
-  return g_com + g_def + g_ext + g_deferred[0];
-}
-
-// PR8457
-// CHECK-DEFAULT: define void @test1(
-// CHECK-PROTECTED: define void @test1(
-// CHECK-HIDDEN: define void @test1(
-struct Test1 { int field; };
-void  __attribute__((visibility("default"))) test1(struct Test1 *v) { }
-
-// rdar://problem/8595231
-// CHECK-DEFAULT: define void @test2()
-// CHECK-PROTECTED: define void @test2()
-// CHECK-HIDDEN: define void @test2()
-void test2(void);
-void __attribute__((visibility("default"))) test2(void) {}
-
-// CHECK-DEFAULT: define hidden void @test3()
-// CHECK-PROTECTED: define hidden void @test3()
-// CHECK-HIDDEN: define hidden void @test3()
-extern void test3(void);
-__private_extern__ void test3(void) {}
-
-// Top of file.
-extern int test4;
-__private_extern__ int test4 = 10;
-
-// rdar://12399248
-// CHECK-DEFAULT: define hidden void @test5()
-// CHECK-PROTECTED: define hidden void @test5()
-// CHECK-HIDDEN: define hidden void @test5()
-__attribute__((availability(macosx,introduced=10.5,deprecated=10.6)))
-__private_extern__ void test5(void) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/vla-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/vla-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/vla-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -std=gnu99 %s -emit-llvm -o - | grep ".*alloca.*align 16"
-
-extern void bar(int[]);
-
-void foo(int a)
-{
-  int var[a] __attribute__((__aligned__(16)));
-  bar(var);
-  return;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/vla-3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/vla-3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/vla-3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -std=gnu99 %s -emit-llvm -o - | grep ".*alloca.*align 16"
-
-void adr(char *);
-
-void vlaalign(int size)
-{
-    char __attribute__((aligned(16))) tmp[size+32];
-    char tmp2[size+16];
-
-    adr(tmp);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/vla-4.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/vla-4.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/vla-4.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-int f();
-int h();
-
-void t1() {
-  _Atomic(typeof((int (*)[f()]) h())) v;
-  // CHECK:      [[N:%.*]] = alloca i32*, align 4
-  // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @f to i32 ()*)()
-  // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @h to i32 ()*)()
-}
-
-void t2() {
-  typeof(typeof((int (*)[f()]) h())) v;
-  // CHECK:      [[N:%.*]] = alloca i32*, align 4
-  // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @f to i32 ()*)()
-  // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @h to i32 ()*)()
-}
-
-void t3(typeof((int (*)[f()]) h()) v) {
-  // CHECK:      store i32* %v, i32** %{{[.0-9A-Za-z]+}}, align 4
-  // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @f to i32 ()*)()
-  // CHECK-NEXT: [[P:%.*]] = call i32 bitcast (i32 (...)* @h to i32 ()*)()
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/vla.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/vla.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/vla.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,197 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-int b(char* x);
-
-// Extremely basic VLA test
-void a(int x) {
-  char arry[x];
-  arry[0] = 10;
-  b(arry);
-}
-
-int c(int n)
-{
-  return sizeof(int[n]);
-}
-
-int f0(int x) {
-  int vla[x];
-  return vla[x-1];
-}
-
-void
-f(int count)
-{
- int a[count];
-
-  do {  } while (0);
-
-  if (a[0] != 3) {
-  }
-}
-
-void g(int count) {
-  // Make sure we emit sizes correctly in some obscure cases
-  int (*a[5])[count];
-  int (*b)[][count];
-}
-
-// rdar://8403108
-// CHECK: define void @f_8403108
-void f_8403108(unsigned x) {
-  // CHECK: call i8* @llvm.stacksave()
-  char s1[x];
-  while (1) {
-    // CHECK: call i8* @llvm.stacksave()
-    char s2[x];
-    if (1)
-      break;
-  // CHECK: call void @llvm.stackrestore(i8*
-  }
-  // CHECK: call void @llvm.stackrestore(i8*
-}
-
-// pr7827
-void function(short width, int data[][width]) {} // expected-note {{passing argument to parameter 'data' here}}
-
-void test() {
-     int bork[4][13];
-     // CHECK: call void @function(i16 signext 1, i32* null)
-     function(1, 0);
-     // CHECK: call void @function(i16 signext 1, i32* inttoptr
-     function(1, 0xbadbeef); // expected-warning {{incompatible integer to pointer conversion passing}}
-     // CHECK: call void @function(i16 signext 1, i32* {{.*}})
-     function(1, bork);
-}
-
-void function1(short width, int data[][width][width]) {}
-void test1() {
-     int bork[4][13][15];
-     // CHECK: call void @function1(i16 signext 1, i32* {{.*}})
-     function1(1, bork);
-     // CHECK: call void @function(i16 signext 1, i32* {{.*}}) 
-     function(1, bork[2]);
-}
-
-// rdar://8476159
-static int GLOB;
-int test2(int n)
-{
-  GLOB = 0;
-  char b[1][n+3];			/* Variable length array.  */
-  // CHECK:  [[tmp_1:%.*]] = load i32* @GLOB, align 4
-  // CHECK-NEXT: add nsw i32 [[tmp_1]], 1
-  __typeof__(b[GLOB++]) c;
-  return GLOB;
-}
-
-// http://llvm.org/PR8567
-// CHECK: define double @test_PR8567
-double test_PR8567(int n, double (*p)[n][5]) {
-  // CHECK:      [[NV:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[PV:%.*]] = alloca [5 x double]*, align 4
-  // CHECK-NEXT: store
-  // CHECK-NEXT: store
-  // CHECK-NEXT: [[N:%.*]] = load i32* [[NV]], align 4
-  // CHECK-NEXT: [[P:%.*]] = load [5 x double]** [[PV]], align 4
-  // CHECK-NEXT: [[T0:%.*]] = mul nsw i32 1, [[N]]
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [5 x double]* [[P]], i32 [[T0]]
-  // CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [5 x double]* [[T1]], i32 2
-  // CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds [5 x double]* [[T2]], i32 0, i32 3
-  // CHECK-NEXT: [[T4:%.*]] = load double* [[T3]]
-  // CHECK-NEXT: ret double [[T4]]
- return p[1][2][3];
-}
-
-int test4(unsigned n, char (*p)[n][n+1][6]) {
-  // CHECK:    define i32 @test4(
-  // CHECK:      [[N:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[P:%.*]] = alloca [6 x i8]*, align 4
-  // CHECK-NEXT: [[P2:%.*]] = alloca [6 x i8]*, align 4
-  // CHECK-NEXT: store i32
-  // CHECK-NEXT: store [6 x i8]*
-
-  // VLA captures.
-  // CHECK-NEXT: [[DIM0:%.*]] = load i32* [[N]], align 4
-  // CHECK-NEXT: [[T0:%.*]] = load i32* [[N]], align 4
-  // CHECK-NEXT: [[DIM1:%.*]] = add i32 [[T0]], 1
-
-  // CHECK-NEXT: [[T0:%.*]] = load [6 x i8]** [[P]], align 4
-  // CHECK-NEXT: [[T1:%.*]] = load i32* [[N]], align 4
-  // CHECK-NEXT: [[T2:%.*]] = udiv i32 [[T1]], 2
-  // CHECK-NEXT: [[T3:%.*]] = mul nuw i32 [[DIM0]], [[DIM1]]
-  // CHECK-NEXT: [[T4:%.*]] = mul nsw i32 [[T2]], [[T3]]
-  // CHECK-NEXT: [[T5:%.*]] = getelementptr inbounds [6 x i8]* [[T0]], i32 [[T4]]
-  // CHECK-NEXT: [[T6:%.*]] = load i32* [[N]], align 4
-  // CHECK-NEXT: [[T7:%.*]] = udiv i32 [[T6]], 4
-  // CHECK-NEXT: [[T8:%.*]] = sub i32 0, [[T7]]
-  // CHECK-NEXT: [[T9:%.*]] = mul nuw i32 [[DIM0]], [[DIM1]]
-  // CHECK-NEXT: [[T10:%.*]] = mul nsw i32 [[T8]], [[T9]]
-  // CHECK-NEXT: [[T11:%.*]] = getelementptr inbounds [6 x i8]* [[T5]], i32 [[T10]]
-  // CHECK-NEXT: store [6 x i8]* [[T11]], [6 x i8]** [[P2]], align 4
-  __typeof(p) p2 = (p + n/2) - n/4;
-
-  // CHECK-NEXT: [[T0:%.*]] = load [6 x i8]** [[P2]], align 4
-  // CHECK-NEXT: [[T1:%.*]] = load [6 x i8]** [[P]], align 4
-  // CHECK-NEXT: [[T2:%.*]] = ptrtoint [6 x i8]* [[T0]] to i32
-  // CHECK-NEXT: [[T3:%.*]] = ptrtoint [6 x i8]* [[T1]] to i32
-  // CHECK-NEXT: [[T4:%.*]] = sub i32 [[T2]], [[T3]]
-  // CHECK-NEXT: [[T5:%.*]] = mul nuw i32 [[DIM0]], [[DIM1]]
-  // CHECK-NEXT: [[T6:%.*]] = mul nuw i32 6, [[T5]]
-  // CHECK-NEXT: [[T7:%.*]] = sdiv exact i32 [[T4]], [[T6]]
-  // CHECK-NEXT: ret i32 [[T7]]
-  return p2 - p;
-}
-
-// rdar://11485774
-void test5(void)
-{
-  // CHECK: define void @test5(
-  int a[5], i = 0;
-  // CHECK: [[A:%.*]] = alloca [5 x i32], align 4
-  // CHECK-NEXT: [[I:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[CL:%.*]] = alloca i32*, align 4
-  // CHECK-NEXT: store i32 0, i32* [[I]], align 4
-
-  (typeof(++i, (int (*)[i])a)){&a} += 0;
-  // CHECK-NEXT: [[Z:%.*]] = load i32* [[I]], align 4
-  // CHECK-NEXT: [[INC:%.*]]  = add nsw i32 [[Z]], 1
-  // CHECK-NEXT: store i32 [[INC]], i32* [[I]], align 4
-  // CHECK-NEXT: [[O:%.*]] = load i32* [[I]], align 4
-  // CHECK-NEXT: [[AR:%.*]] = getelementptr inbounds [5 x i32]* [[A]], i32 0, i32 0
-  // CHECK-NEXT: [[T:%.*]] = bitcast [5 x i32]* [[A]] to i32*
-  // CHECK-NEXT: store i32* [[T]], i32** [[CL]]
-  // CHECK-NEXT: [[TH:%.*]] = load i32** [[CL]]
-  // CHECK-NEXT: [[VLAIX:%.*]] = mul nsw i32 0, [[O]]
-  // CHECK-NEXT: [[ADDPTR:%.*]] = getelementptr inbounds i32* [[TH]], i32 [[VLAIX]]
-  // CHECK-NEXT: store i32* [[ADDPTR]], i32** [[CL]]
-}
-
-void test6(void)
-{
-  // CHECK: define void @test6(
-  int n = 20, **a, i=0;
-  // CHECK: [[N:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[A:%.*]] = alloca i32**, align 4
-  // CHECK-NEXT: [[I:%.*]] = alloca i32, align 4
- (int (**)[i]){&a}[0][1][5] = 0;
-  // CHECK-NEXT: [[CL:%.*]] = alloca i32**, align 4
-  // CHECK-NEXT: store i32 20, i32* [[N]], align 4
-  // CHECK-NEXT: store i32 0, i32* [[I]], align 4
-  // CHECK-NEXT: [[Z:%.*]] = load i32* [[I]], align 4
-  // CHECK-NEXT: [[O:%.*]] = bitcast i32*** [[A]] to i32**
-  // CHECK-NEXT: store i32** [[O]], i32*** [[CL]]
-  // CHECK-NEXT: [[T:%.*]] = load i32*** [[CL]]
-  // CHECK-NEXT: [[IX:%.*]] = getelementptr inbounds i32** [[T]], i32 0
-  // CHECK-NEXT: [[TH:%.*]] = load i32** [[IX]], align 4
-  // CHECK-NEXT: [[F:%.*]] = mul nsw i32 1, [[Z]]
-  // CHECK-NEXT: [[IX1:%.*]] = getelementptr inbounds i32* [[TH]], i32 [[F]]
-  // CHECK-NEXT: [[IX2:%.*]] = getelementptr inbounds i32* [[IX1]], i32 5
-  // CHECK-NEXT: store i32 0, i32* [[IX2]], align 4
-}
-
-// Follow gcc's behavior for VLAs in parameter lists.  PR9559.
-void test7(int a[b(0)]) {
-  // CHECK: define void @test7(
-  // CHECK: call i32 @b(i8* null)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/vld_dup.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/vld_dup.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/vld_dup.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// REQUIRES: arm-registered-target
-// RUN: %clang_cc1 -triple armv7a-linux-gnueabi \
-// RUN:   -target-cpu cortex-a8 \
-// RUN:   -emit-llvm -O0 -o - %s | FileCheck %s
-#include <arm_neon.h>
-int main(){
-    int32_t v0[3];
-    int32x2x3_t v1;
-    int32_t v2[4];
-    int32x2x4_t v3;
-    int64x1x3_t v4;
-    int64x1x4_t v5;
-    int64_t v6[3];
-    int64_t v7[4];
-
-    v1 = vld3_dup_s32(v0);
-// CHECK: [[T168:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.arm.neon.vld3lane.v2i32(i8* {{.*}}, <2 x i32> undef, <2 x i32> undef, <2 x i32> undef, i32 {{[0-9]+}}, i32 {{[0-9]+}})
-// CHECK-NEXT: [[T169:%.*]] = extractvalue { <2 x i32>, <2 x i32>, <2 x i32> } [[T168]], 0
-// CHECK-NEXT: [[T170:%.*]] = shufflevector <2 x i32> [[T169]], <2 x i32> [[T169]], <2 x i32> zeroinitializer
-// CHECK-NEXT: [[T171:%.*]] = insertvalue { <2 x i32>, <2 x i32>, <2 x i32> } [[T168]], <2 x i32> [[T170]], 0
-// CHECK-NEXT: [[T172:%.*]] = extractvalue { <2 x i32>, <2 x i32>, <2 x i32> } [[T171]], 1
-// CHECK-NEXT: [[T173:%.*]] = shufflevector <2 x i32> [[T172]], <2 x i32> [[T172]], <2 x i32> zeroinitializer
-// CHECK-NEXT: [[T174:%.*]] = insertvalue { <2 x i32>, <2 x i32>, <2 x i32> } [[T171]], <2 x i32> [[T173]], 1
-// CHECK-NEXT: [[T175:%.*]] = extractvalue { <2 x i32>, <2 x i32>, <2 x i32> } [[T174]], 2
-// CHECK-NEXT: [[T176:%.*]] = shufflevector <2 x i32> [[T175]], <2 x i32> [[T175]], <2 x i32> zeroinitializer
-// CHECK-NEXT: [[T177:%.*]] = insertvalue { <2 x i32>, <2 x i32>, <2 x i32> } [[T174]], <2 x i32> [[T176]], 2
-
-    v3 = vld4_dup_s32(v2);
-// CHECK: [[T178:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.arm.neon.vld4lane.v2i32(i8* {{.*}}, <2 x i32> undef, <2 x i32> undef, <2 x i32> undef, <2 x i32> undef, i32 {{[0-9]+}}, i32 {{[0-9]+}})
-// CHECK-NEXT: [[T179:%.*]] = extractvalue { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[T178]], 0
-// CHECK-NEXT: [[T180:%.*]] = shufflevector <2 x i32> [[T179]], <2 x i32> [[T179]], <2 x i32> zeroinitializer
-// CHECK-NEXT: [[T181:%.*]] = insertvalue { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[T178]], <2 x i32> [[T180]], 0
-// CHECK-NEXT: [[T182:%.*]] = extractvalue { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[T181]], 1
-// CHECK-NEXT: [[T183:%.*]] = shufflevector <2 x i32> [[T182]], <2 x i32> [[T182]], <2 x i32> zeroinitializer
-// CHECK-NEXT: [[T184:%.*]] = insertvalue { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[T181]], <2 x i32> [[T183]], 1
-// CHECK-NEXT: [[T185:%.*]] = extractvalue { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[T184]], 2
-// CHECK-NEXT: [[T186:%.*]] = shufflevector <2 x i32> [[T185]], <2 x i32> [[T185]], <2 x i32> zeroinitializer
-// CHECK-NEXT: [[T187:%.*]] = insertvalue { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[T184]], <2 x i32> [[T186]], 2
-// CHECK-NEXT: [[T188:%.*]] = extractvalue { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[T187]], 3
-// CHECK-NEXT: [[T189:%.*]] = shufflevector <2 x i32> [[T188]], <2 x i32> [[T188]], <2 x i32> zeroinitializer
-// CHECK-NEXT: [[T190:%.*]] = insertvalue { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[T187]], <2 x i32> [[T189]], 3
-
-    v4 = vld3_dup_s64(v6);
-// CHECK: {{%.*}} = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.arm.neon.vld3.v1i64(i8* {{.*}}, i32 {{[0-9]+}})
-
-    v5 = vld4_dup_s64(v7);
-// CHECK: {{%.*}} = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.arm.neon.vld4.v1i64(i8* {{.*}}, i32 {{[0-9]+}})
-
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/volatile-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/volatile-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/volatile-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,315 +0,0 @@
-// RUN: %clang_cc1 -Wno-return-type -Wno-unused-value -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: @i = common global [[INT:i[0-9]+]] 0
-volatile int i, j, k;
-volatile int ar[5];
-volatile char c;
-// CHECK: @ci = common global [[CINT:.*]] zeroinitializer
-volatile _Complex int ci;
-volatile struct S {
-#ifdef __cplusplus
-  void operator =(volatile struct S&o) volatile;
-#endif
-  int i;
-} a, b;
-
-//void operator =(volatile struct S&o1, volatile struct S&o2) volatile;
-int printf(const char *, ...);
-
-
-// Note that these test results are very much specific to C!
-// Assignments in C++ yield l-values, not r-values, and the situations
-// that do implicit lvalue-to-rvalue conversion are substantially
-// reduced.
-
-// CHECK: define void @test()
-void test() {
-  // CHECK: load volatile [[INT]]* @i
-  i;
-  // CHECK-NEXT: load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: sitofp [[INT]]
-  (float)(ci);
-  // CHECK-NEXT: load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  (void)ci;
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: memcpy
-  (void)a;
-  // CHECK-NEXT: [[R:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  (void)(ci=ci);
-  // CHECK-NEXT: [[T:%.*]] = load volatile [[INT]]* @j
-  // CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* @i
-  (void)(i=j);
-  // CHECK-NEXT: [[R1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // Not sure why they're ordered this way.
-  // CHECK-NEXT: [[R:%.*]] = add [[INT]] [[R2]], [[R1]]
-  // CHECK-NEXT: [[I:%.*]] = add [[INT]] [[I2]], [[I1]]
-  // CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  ci+=ci;
-
-  // CHECK-NEXT: [[R1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R:%.*]] = add [[INT]] [[R2]], [[R1]]
-  // CHECK-NEXT: [[I:%.*]] = add [[INT]] [[I2]], [[I1]]
-  // CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // These additions can be elided
-  // CHECK-NEXT: add [[INT]] [[R]], [[R2]]
-  // CHECK-NEXT: add [[INT]] [[I]], [[I2]]
-  (ci += ci) + ci;
-  // CHECK-NEXT: call void asm
-  asm("nop");
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-  (i += j) + k;
-  // CHECK-NEXT: call void asm
-  asm("nop");
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: add nsw [[INT]]
-  (i += j) + 1;
-  // CHECK-NEXT: call void asm
-  asm("nop");
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add [[INT]]
-  // CHECK-NEXT: add [[INT]]
-  ci+ci;
-
-  // CHECK-NEXT: load volatile
-  __real i;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  +ci;
-  // CHECK-NEXT: call void asm
-  asm("nop");
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  (void)(i=i);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: sitofp
-  (float)(i=i);
-  // CHECK-NEXT: load volatile
-  (void)i;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  i=i;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  i=i=i;
-#ifndef __cplusplus
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  (void)__builtin_choose_expr(0, i=i, j=j);
-#endif
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: icmp
-  // CHECK-NEXT: br i1
-  // CHECK: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: br label
-  // CHECK: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: br label
-  k ? (i=i) : (j=j);
-  // CHECK: phi
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  (void)(i,(i=i));
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  i=i,i;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  (i=j,k=j);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  (i=j,k);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  (i,j);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: trunc
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: sext
-  // CHECK-NEXT: store volatile
-  i=c=k;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-  // CHECK-NEXT: store volatile
-  i+=k;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  ci;
-#ifndef __cplusplus
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  (int)ci;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: icmp ne
-  // CHECK-NEXT: icmp ne
-  // CHECK-NEXT: or i1
-  (_Bool)ci;
-#endif
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  ci=ci;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  ci=ci=ci;
-  // CHECK-NEXT: [[T:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  __imag ci = __imag ci = __imag ci;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  __real (i = j);
-  // CHECK-NEXT: load volatile
-  __imag i;
-  
-  // ============================================================
-  // FIXME: Test cases we get wrong.
-
-  // A use.  We load all of a into a copy of a, then load i.  gcc forgets to do
-  // the assignment.
-  // (a = a).i;
-
-  // ============================================================
-  // Test cases where we intentionally differ from gcc, due to suspected bugs in
-  // gcc.
-
-  // Not a use.  gcc forgets to do the assignment.
-  // CHECK-NEXT: call void @llvm.memcpy{{.*}}, i1 true
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: call void @llvm.memcpy{{.*}}, i1 true
-  ((a=a),a);
-
-  // Not a use.  gcc gets this wrong, it doesn't emit the copy!  
-  // (void)(a=a);
-
-  // Not a use.  gcc got this wrong in 4.2 and omitted the side effects
-  // entirely, but it is fixed in 4.4.0.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  __imag (i = j);
-
-#ifndef __cplusplus
-  // A use of the real part
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: sitofp
-  (float)(ci=ci);
-  // Not a use, bug?  gcc treats this as not a use, that's probably a bug due to
-  // tree folding ignoring volatile.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  (int)(ci=ci);
-#endif
-
-  // A use.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: sitofp
-  (float)(i=i);
-  // A use.  gcc treats this as not a use, that's probably a bug due to tree
-  // folding ignoring volatile.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  (int)(i=i);
-
-  // A use.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: sub
-  -(i=j);
-  // A use.  gcc treats this a not a use, that's probably a bug due to tree
-  // folding ignoring volatile.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  +(i=k);
-
-  // A use. gcc treats this a not a use, that's probably a bug due to tree
-  // folding ignoring volatile.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  __real (ci=ci);
-
-  // A use.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add
-  i + 0;
-  // A use.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add
-  (i=j) + i;
-  // A use.  gcc treats this as not a use, that's probably a bug due to tree
-  // folding ignoring volatile.
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: add
-  (i=j) + 0;
-
-#ifdef __cplusplus
-  (i,j)=k;
-  (j=k,i)=i;
-  struct { int x; } s, s1;
-  printf("s is at %p\n", &s);
-  printf("s is at %p\n", &(s = s1));
-  printf("s.x is at %p\n", &((s = s1).x));
-#endif
-}
-
-extern volatile enum X x;
-// CHECK: define void @test1()
-void test1() {
-  extern void test1_helper(void);
-  test1_helper();
-  // CHECK: call void @test1_helper()
-  // CHECK-NEXT: ret void
-  x;
-  (void) x;
-  return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/volatile-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/volatile-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/volatile-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-void test0() {
-  // CHECK: define void @test0()
-  // CHECK:      [[F:%.*]] = alloca float
-  // CHECK-NEXT: [[REAL:%.*]] = load volatile float* getelementptr inbounds ({ float, float }* @test0_v, i32 0, i32 0)
-  // CHECK-NEXT: load volatile float* getelementptr inbounds ({{.*}} @test0_v, i32 0, i32 1)
-  // CHECK-NEXT: store float [[REAL]], float* [[F]], align 4
-  // CHECK-NEXT: ret void
-  extern volatile _Complex float test0_v;
-  float f = (float) test0_v;
-}
-
-void test1() {
-  // CHECK: define void @test1()
-  // CHECK:      [[REAL:%.*]] = load volatile float* getelementptr inbounds ({{.*}} @test1_v, i32 0, i32 0)
-  // CHECK-NEXT: [[IMAG:%.*]] = load volatile float* getelementptr inbounds ({{.*}} @test1_v, i32 0, i32 1)
-  // CHECK-NEXT: store volatile float [[REAL]], float* getelementptr inbounds ({{.*}} @test1_v, i32 0, i32 0)
-  // CHECK-NEXT: store volatile float [[IMAG]], float* getelementptr inbounds ({{.*}} @test1_v, i32 0, i32 1)
-  // CHECK-NEXT: ret void
-  extern volatile _Complex float test1_v;
-  test1_v = test1_v;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/volatile.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/volatile.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/volatile.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,207 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | FileCheck %s
-
-int S;
-volatile int vS;
-
-int* pS;
-volatile int* pvS;
-
-int A[10];
-volatile int vA[10];
-
-struct { int x; } F;
-struct { volatile int x; } vF;
-
-struct { int x; } F2;
-volatile struct { int x; } vF2;
-volatile struct { int x; } *vpF2;
-
-struct { struct { int y; } x; } F3;
-volatile struct { struct { int y; } x; } vF3;
-
-struct { int x:3; } BF;
-struct { volatile int x:3; } vBF;
-
-typedef int v4si __attribute__ ((vector_size (16)));
-v4si V;
-volatile v4si vV;
-
-typedef __attribute__(( ext_vector_type(4) )) int extv4;
-extv4 VE;
-volatile extv4 vVE;
-
-volatile struct {int x;} aggFct(void);
-
-typedef volatile int volatile_int;
-volatile_int vtS;
-
-int main() {
-  int i;
-// CHECK: [[I:%[a-zA-Z0-9_.]+]] = alloca i32
-  // load
-  i=S;
-// CHECK: load i32* @S
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vS;
-// CHECK: load volatile i32* @vS
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=*pS;
-// CHECK: [[PS_VAL:%[a-zA-Z0-9_.]+]] = load i32** @pS
-// CHECK: load i32* [[PS_VAL]]
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=*pvS;
-// CHECK: [[PVS_VAL:%[a-zA-Z0-9_.]+]] = load i32** @pvS
-// CHECK: load volatile i32* [[PVS_VAL]]
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=A[2];
-// CHECK: load i32* getelementptr {{.*}} @A
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vA[2];
-// CHECK: load volatile i32* getelementptr {{.*}} @vA
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=F.x;
-// CHECK: load i32* getelementptr {{.*}} @F
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vF.x;
-// CHECK: load volatile i32* getelementptr {{.*}} @vF
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=F2.x;
-// CHECK: load i32* getelementptr {{.*}} @F2
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vF2.x;
-// CHECK: load volatile i32* getelementptr {{.*}} @vF2
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vpF2->x;
-// CHECK: [[VPF2_VAL:%[a-zA-Z0-9_.]+]] = load {{%[a-zA-Z0-9_.]+}}** @vpF2
-// CHECK: [[ELT:%[a-zA-Z0-9_.]+]] = getelementptr {{.*}} [[VPF2_VAL]]
-// CHECK: load volatile i32* [[ELT]]
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=F3.x.y;
-// CHECK: load i32* getelementptr {{.*}} @F3
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vF3.x.y;
-// CHECK: load volatile i32* getelementptr {{.*}} @vF3
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=BF.x;
-// CHECK: load i8* getelementptr {{.*}} @BF
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vBF.x;
-// CHECK: load volatile i8* getelementptr {{.*}} @vBF
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=V[3];
-// CHECK: load <4 x i32>* @V
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vV[3];
-// CHECK: load volatile <4 x i32>* @vV
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=VE.yx[1];
-// CHECK: load <4 x i32>* @VE
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vVE.zy[1];
-// CHECK: load volatile <4 x i32>* @vVE
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i = aggFct().x; // Note: not volatile
-  // N.b. Aggregate return is extremely target specific, all we can
-  // really say here is that there probably shouldn't be a volatile
-  // load.
-// CHECK-NOT: load volatile
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i=vtS;
-// CHECK: load volatile i32* @vtS
-// CHECK: store i32 {{.*}}, i32* [[I]]
-
-
-  // store
-  S=i;
-// CHECK: load i32* [[I]]
-// CHECK: store i32 {{.*}}, i32* @S
-  vS=i;
-// CHECK: load i32* [[I]]
-// CHECK: store volatile i32 {{.*}}, i32* @vS
-  *pS=i;
-// CHECK: load i32* [[I]]
-// CHECK: [[PS_VAL:%[a-zA-Z0-9_.]+]] = load i32** @pS
-// CHECK: store i32 {{.*}}, i32* [[PS_VAL]]
-  *pvS=i;
-// CHECK: load i32* [[I]]
-// CHECK: [[PVS_VAL:%[a-zA-Z0-9_.]+]] = load i32** @pvS
-// CHECK: store volatile i32 {{.*}}, i32* [[PVS_VAL]]
-  A[2]=i;
-// CHECK: load i32* [[I]]
-// CHECK: store i32 {{.*}}, i32* getelementptr {{.*}} @A
-  vA[2]=i;
-// CHECK: load i32* [[I]]
-// CHECK: store volatile i32 {{.*}}, i32* getelementptr {{.*}} @vA
-  F.x=i;
-// CHECK: load i32* [[I]]
-// CHECK: store i32 {{.*}}, i32* getelementptr {{.*}} @F
-  vF.x=i;
-// CHECK: load i32* [[I]]
-// CHECK: store volatile i32 {{.*}}, i32* getelementptr {{.*}} @vF
-  F2.x=i;
-// CHECK: load i32* [[I]]
-// CHECK: store i32 {{.*}}, i32* getelementptr {{.*}} @F2
-  vF2.x=i;
-// CHECK: load i32* [[I]]
-// CHECK: store volatile i32 {{.*}}, i32* getelementptr {{.*}} @vF2
-  vpF2->x=i;
-// CHECK: load i32* [[I]]
-// CHECK: [[VPF2_VAL:%[a-zA-Z0-9_.]+]] = load {{%[a-zA-Z0-9._]+}}** @vpF2
-// CHECK: [[ELT:%[a-zA-Z0-9_.]+]] = getelementptr {{.*}} [[VPF2_VAL]]
-// CHECK: store volatile i32 {{.*}}, i32* [[ELT]]
-  vF3.x.y=i;
-// CHECK: load i32* [[I]]
-// CHECK: store volatile i32 {{.*}}, i32* getelementptr {{.*}} @vF3
-  BF.x=i;
-// CHECK: load i32* [[I]]
-// CHECK: load i8* getelementptr {{.*}} @BF
-// CHECK: store i8 {{.*}}, i8* getelementptr {{.*}} @BF
-  vBF.x=i;
-// CHECK: load i32* [[I]]
-// CHECK: load volatile i8* getelementptr {{.*}} @vBF
-// CHECK: store volatile i8 {{.*}}, i8* getelementptr {{.*}} @vBF
-  V[3]=i;
-// CHECK: load i32* [[I]]
-// CHECK: load <4 x i32>* @V
-// CHECK: store <4 x i32> {{.*}}, <4 x i32>* @V
-  vV[3]=i;
-// CHECK: load i32* [[I]]
-// CHECK: load volatile <4 x i32>* @vV
-// CHECK: store volatile <4 x i32> {{.*}}, <4 x i32>* @vV
-  vtS=i;
-// CHECK: load i32* [[I]]
-// CHECK: store volatile i32 {{.*}}, i32* @vtS
-
-  // other ops:
-  ++S;
-// CHECK: load i32* @S
-// CHECK: store i32 {{.*}}, i32* @S
-  ++vS;
-// CHECK: load volatile i32* @vS
-// CHECK: store volatile i32 {{.*}}, i32* @vS
-  i+=S;
-// CHECK: load i32* @S
-// CHECK: load i32* [[I]]
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  i+=vS;
-// CHECK: load volatile i32* @vS
-// CHECK: load i32* [[I]]
-// CHECK: store i32 {{.*}}, i32* [[I]]
-  ++vtS;
-// CHECK: load volatile i32* @vtS
-// CHECK: store volatile i32 {{.*}}, i32* @vtS
-  (void)vF2;
-  // From vF2 to a temporary
-// CHECK: call void @llvm.memcpy.{{.*}}(i8* %{{.*}}, i8* {{.*}} @vF2 {{.*}}, i1 true)
-  vF2 = vF2;
-  // vF2 to itself
-// CHECK: call void @llvm.memcpy.{{.*}}(i8* {{.*@vF2.*}}, i8* {{.*@vF2.*}}, i1 true)
-  vF2 = vF2 = vF2;
-  // vF2 to itself twice
-// CHECK: call void @llvm.memcpy.{{.*}}(i8* {{.*@vF2.*}}, i8* {{.*@vF2.*}}, i1 true)
-// CHECK: call void @llvm.memcpy.{{.*}}(i8* {{.*@vF2.*}}, i8* {{.*@vF2.*}}, i1 true)
-  vF2 = (vF2, vF2);
-  // vF2 to a temporary, then vF2 to itself
-// CHECK: call void @llvm.memcpy.{{.*}}(i8* %{{.*}}, i8* {{.*@vF2.*}}, i1 true)
-// CHECK: call void @llvm.memcpy.{{.*}}(i8* {{.*@vF2.*}}, i8* {{.*@vF2.*}}, i1 true)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/wchar-const.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/wchar-const.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/wchar-const.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple i386-pc-win32 | FileCheck %s --check-prefix=WIN
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple x86_64-apple-darwin | FileCheck %s --check-prefix=DAR
-// This should pass for any endianness combination of host and target.
-
-// This bit is taken from Sema/wchar.c so we can avoid the wchar.h include.
-typedef __WCHAR_TYPE__ wchar_t;
-#if defined(_WIN32) || defined(_M_IX86) || defined(__CYGWIN__) \
-  || defined(_M_X64) || defined(SHORT_WCHAR)
-  #define WCHAR_T_TYPE unsigned short
-#elif defined(__sun) || defined(__AuroraUX__)
-  #define WCHAR_T_TYPE long
-#else /* Solaris or AuroraUX. */
-  #define WCHAR_T_TYPE int
-#endif
-
-
-// CHECK-DAR: private unnamed_addr constant [18 x i32] [i32 84,
-// CHECK-WIN: private unnamed_addr constant [18 x i16] [i16 84,
-extern void foo(const wchar_t* p);
-int main (int argc, const char * argv[])
-{
- foo(L"This is some text");
- return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/weak-global.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/weak-global.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/weak-global.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep common
-
-int i;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/weak-incomplete.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/weak-incomplete.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/weak-incomplete.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm < %s | grep 'extern_weak' | count 1
-
-struct S;
-void __attribute__((weak)) foo1(struct S);
-void (*foo2)(struct S) = foo1;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/weak_constant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/weak_constant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/weak_constant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -w -emit-llvm %s -O1 -o - | FileCheck %s
-// Check for bug compatibility with gcc.
-
-const int x __attribute((weak)) = 123;
-
-int* f(void) {
-  return &x;
-}
-
-int g(void) {
-  // CHECK: ret i32 123
-  return *f();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/whilestmt.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/whilestmt.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/whilestmt.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-int bar();
-int foo() {
-  int i;
-  i = 1 + 2;
-  while(1) {
-    i = bar();
-    i = bar();
-  };
-  return i;
-}
-
-
-int foo1() {
-  int i;
-  i = 1 + 2;
-  while(1) {
-    i = bar();
-    if (i == 42)
-      break;
-    i = bar();
-  };
-  return i;
-}
-
-
-int foo2() {
-  int i;
-  i = 1 + 2;
-  while(1) {
-    i = bar();
-    if (i == 42)
-      continue;
-    i = bar();
-  };
-  return i;
-}
-
-
-int foo3() {
-  int i;
-  i = 1 + 2;
-  while(1) {
-    i = bar();
-    if (i == 42)
-      break;
-  };
-  return i;
-}
-
-
-int foo4() {
-  int i;
-  i = 1 + 2;
-  while(1) {
-    i = bar();
-    if (i == 42)
-      continue;
-  };
-  return i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/writable-strings.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/writable-strings.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/writable-strings.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -fwritable-strings %s
-
-int main() {
-    char *str = "abc";
-    str[0] = '1';
-    printf("%s", str);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -triple=i686-pc-linux-gnu -emit-llvm -o - > %t1
-// RUN: grep "ax" %t1
-// RUN: grep "bx" %t1
-// RUN: grep "cx" %t1
-// RUN: grep "dx" %t1
-// RUN: grep "di" %t1
-// RUN: grep "si" %t1
-// RUN: grep "st" %t1
-// RUN: grep "st(1)" %t1
-
-void test1() {
-  int d1, d2;
-  asm ("" : "=a" (d1), "=b" (d2) :
-       "c" (0), "d" (0), "S" (0), "D" (0), "t" (0), "u" (0));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-darwin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-darwin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-darwin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,344 +0,0 @@
-// RUN: %clang_cc1 -w -fblocks -triple i386-apple-darwin9 -target-cpu yonah -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: define signext i8 @f0()
-char f0(void) {
-  return 0;
-}
-
-// CHECK: define signext i16 @f1()
-short f1(void) {
-  return 0;
-}
-
-// CHECK: define i32 @f2()
-int f2(void) {
-  return 0;
-}
-
-// CHECK: define float @f3()
-float f3(void) {
-  return 0;
-}
-
-// CHECK: define double @f4()
-double f4(void) {
-  return 0;
-}
-
-// CHECK: define x86_fp80 @f5()
-long double f5(void) {
-  return 0;
-}
-
-// CHECK: define void @f6(i8 signext %a0, i16 signext %a1, i32 %a2, i64 %a3, i8* %a4)
-void f6(char a0, short a1, int a2, long long a3, void *a4) {}
-
-// CHECK: define void @f7(i32 %a0)
-typedef enum { A, B, C } e7;
-void f7(e7 a0) {}
-
-// CHECK: define i64 @f8_1()
-// CHECK: define void @f8_2(i32 %a0.0, i32 %a0.1)
-struct s8 {
-  int a;
-  int b;
-};
-struct s8 f8_1(void) { while (1) {} }
-void f8_2(struct s8 a0) {}
-
-// This should be passed just as s8.
-
-// CHECK: define i64 @f9_1()
-
-// FIXME: llvm-gcc expands this, this may have some value for the
-// backend in terms of optimization but doesn't change the ABI.
-// CHECK: define void @f9_2(%struct.s9* byval align 4 %a0)
-struct s9 {
-  int a : 17;
-  int b;
-};
-struct s9 f9_1(void) { while (1) {} }
-void f9_2(struct s9 a0) {}
-
-// Return of small structures and unions
-
-// CHECK: float @f10()
-struct s10 {
-  union { };
-  float f;
-} f10(void) { while (1) {} }
-
-// Small vectors and 1 x {i64,double} are returned in registers
-
-// CHECK: i32 @f11()
-// CHECK: void @f12(<2 x i32>* noalias sret %agg.result)
-// CHECK: i64 @f13()
-// CHECK: i64 @f14()
-// CHECK: <2 x i64> @f15()
-// CHECK: <2 x i64> @f16()
-typedef short T11 __attribute__ ((vector_size (4)));
-T11 f11(void) { while (1) {} }
-typedef int T12 __attribute__ ((vector_size (8)));
-T12 f12(void) { while (1) {} }
-typedef long long T13 __attribute__ ((vector_size (8)));
-T13 f13(void) { while (1) {} }
-typedef double T14 __attribute__ ((vector_size (8)));
-T14 f14(void) { while (1) {} }
-typedef long long T15 __attribute__ ((vector_size (16)));
-T15 f15(void) { while (1) {} }
-typedef double T16 __attribute__ ((vector_size (16)));
-T16 f16(void) { while (1) {} }
-
-// And when the single element in a struct (but not for 64 and
-// 128-bits).
-
-// CHECK: i32 @f17()
-// CHECK: void @f18(%{{.*}}* noalias sret %agg.result)
-// CHECK: void @f19(%{{.*}}* noalias sret %agg.result)
-// CHECK: void @f20(%{{.*}}* noalias sret %agg.result)
-// CHECK: void @f21(%{{.*}}* noalias sret %agg.result)
-// CHECK: void @f22(%{{.*}}* noalias sret %agg.result)
-struct { T11 a; } f17(void) { while (1) {} }
-struct { T12 a; } f18(void) { while (1) {} }
-struct { T13 a; } f19(void) { while (1) {} }
-struct { T14 a; } f20(void) { while (1) {} }
-struct { T15 a; } f21(void) { while (1) {} }
-struct { T16 a; } f22(void) { while (1) {} }
-
-// Single element structures are handled specially
-
-// CHECK: float @f23()
-// CHECK: float @f24()
-// CHECK: float @f25()
-struct { float a; } f23(void) { while (1) {} }
-struct { float a[1]; } f24(void) { while (1) {} }
-struct { struct {} a; struct { float a[1]; } b; } f25(void) { while (1) {} }
-
-// Small structures are handled recursively
-// CHECK: i32 @f26()
-// CHECK: void @f27(%struct.s27* noalias sret %agg.result)
-struct s26 { struct { char a, b; } a; struct { char a, b; } b; } f26(void) { while (1) {} }
-struct s27 { struct { char a, b, c; } a; struct { char a; } b; } f27(void) { while (1) {} }
-
-// CHECK: void @f28(%struct.s28* noalias sret %agg.result)
-struct s28 { int a; int b[]; } f28(void) { while (1) {} }
-
-// CHECK: define i16 @f29()
-struct s29 { struct { } a[1]; char b; char c; } f29(void) { while (1) {} }
-
-// CHECK: define i16 @f30()
-struct s30 { char a; char b : 4; } f30(void) { while (1) {} }
-
-// CHECK: define float @f31()
-struct s31 { char : 0; float b; char : 0; } f31(void) { while (1) {} }
-
-// CHECK: define i32 @f32()
-struct s32 { char a; unsigned : 0; } f32(void) { while (1) {} }
-
-// CHECK: define float @f33()
-struct s33 { float a; long long : 0; } f33(void) { while (1) {} }
-
-// CHECK: define float @f34()
-struct s34 { struct { int : 0; } a; float b; } f34(void) { while (1) {} }
-
-// CHECK: define i16 @f35()
-struct s35 { struct { int : 0; } a; char b; char c; } f35(void) { while (1) {} }
-
-// CHECK: define i16 @f36()
-struct s36 { struct { int : 0; } a[2][10]; char b; char c; } f36(void) { while (1) {} }
-
-// CHECK: define float @f37()
-struct s37 { float c[1][1]; } f37(void) { while (1) {} }
-
-// CHECK: define void @f38(%struct.s38* noalias sret %agg.result)
-struct s38 { char a[3]; short b; } f38(void) { while (1) {} }
-
-// CHECK: define void @f39(%struct.s39* byval align 16 %x)
-typedef int v39 __attribute((vector_size(16)));
-struct s39 { v39 x; };
-void f39(struct s39 x) {}
-
-// <rdar://problem/7247671>
-// CHECK: define i32 @f40()
-enum e40 { ec0 = 0 };
-enum e40 f40(void) { }
-
-// CHECK: define void ()* @f41()
-typedef void (^vvbp)(void);
-vvbp f41(void) { }
-
-// CHECK: define i32 @f42()
-struct s42 { enum e40 f0; } f42(void) {  }
-
-// CHECK: define i64 @f43()
-struct s43 { enum e40 f0; int f1; } f43(void) {  }
-
-// CHECK: define void ()* @f44()
-struct s44 { vvbp f0; } f44(void) {  }
-
-// CHECK: define i64 @f45()
-struct s45 { vvbp f0; int f1; } f45(void) {  }
-
-// CHECK: define void @f46(i32 %a0)
-void f46(enum e40 a0) { }
-
-// CHECK: define void @f47(void ()* %a1)
-void f47(vvbp a1) { }
-
-// CHECK: define void @f48(i32 %a0.0)
-struct s48 { enum e40 f0; };
-void f48(struct s48 a0) { }
-
-// CHECK: define void @f49(i32 %a0.0, i32 %a0.1)
-struct s49 { enum e40 f0; int f1; };
-void f49(struct s49 a0) { }
-
-// CHECK: define void @f50(void ()* %a0.0)
-struct s50 { vvbp f0; };
-void f50(struct s50 a0) { }
-
-// CHECK: define void @f51(void ()* %a0.0, i32 %a0.1)
-struct s51 { vvbp f0; int f1; };
-void f51(struct s51 a0) { }
-
-// CHECK: define void @f52(%struct.s52* byval align 4)
-struct s52 {
-  long double a;
-};
-void f52(struct s52 x) {}
-
-// CHECK: define void @f53(%struct.s53* byval align 4)
-struct __attribute__((aligned(32))) s53 {
-  int x;
-  int y;
-};
-void f53(struct s53 x) {}
-
-typedef unsigned short v2i16 __attribute__((__vector_size__(4)));
-
-// CHECK: define i32 @f54(i32 %arg.coerce)
-// rdar://8359483
-v2i16 f54(v2i16 arg) { return arg+arg; }
-
-
-typedef int v4i32 __attribute__((__vector_size__(16)));
-
-// CHECK: define <2 x i64> @f55(<4 x i32> %arg)
-// PR8029
-v4i32 f55(v4i32 arg) { return arg+arg; }
-
-// CHECK: define void @f56(
-// CHECK: i8 signext %a0, %struct.s56_0* byval align 4 %a1,
-// CHECK: i64 %a2.coerce, %struct.s56_1* byval align 4,
-// CHECK: i64 %a4.coerce, %struct.s56_2* byval align 4,
-// CHECK: <4 x i32> %a6, %struct.s56_3* byval align 16 %a7,
-// CHECK: <2 x double> %a8, %struct.s56_4* byval align 16 %a9,
-// CHECK: <8 x i32> %a10, %struct.s56_5* byval align 4,
-// CHECK: <4 x double> %a12, %struct.s56_6* byval align 4)
-
-// CHECK:   call void (i32, ...)* @f56_0(i32 1,
-// CHECK: i32 %{{[^ ]*}}, %struct.s56_0* byval align 4 %{{[^ ]*}},
-// CHECK: i64 %{{[^ ]*}}, %struct.s56_1* byval align 4 %{{[^ ]*}},
-// CHECK: i64 %{{[^ ]*}}, %struct.s56_2* byval align 4 %{{[^ ]*}},
-// CHECK: <4 x i32> %{{[^ ]*}}, %struct.s56_3* byval align 16 %{{[^ ]*}},
-// CHECK: <2 x double> %{{[^ ]*}}, %struct.s56_4* byval align 16 %{{[^ ]*}},
-// CHECK: <8 x i32> {{[^ ]*}}, %struct.s56_5* byval align 4 %{{[^ ]*}},
-// CHECK: <4 x double> {{[^ ]*}}, %struct.s56_6* byval align 4 %{{[^ ]*}})
-// CHECK: }
-//
-// <rdar://problem/7964854> [i386] clang misaligns long double in structures
-// when passed byval
-// <rdar://problem/8431367> clang misaligns parameters on stack
-typedef int __attribute__((vector_size (8))) t56_v2i;
-typedef double __attribute__((vector_size (8))) t56_v1d;
-typedef int __attribute__((vector_size (16))) t56_v4i;
-typedef double __attribute__((vector_size (16))) t56_v2d;
-typedef int __attribute__((vector_size (32))) t56_v8i;
-typedef double __attribute__((vector_size (32))) t56_v4d;
-
-struct s56_0 { char a; };
-struct s56_1 { t56_v2i a; };
-struct s56_2 { t56_v1d a; };
-struct s56_3 { t56_v4i a; };
-struct s56_4 { t56_v2d a; };
-struct s56_5 { t56_v8i a; };
-struct s56_6 { t56_v4d a; };
-
-void f56(char a0, struct s56_0 a1, 
-         t56_v2i a2, struct s56_1 a3, 
-         t56_v1d a4, struct s56_2 a5, 
-         t56_v4i a6, struct s56_3 a7, 
-         t56_v2d a8, struct s56_4 a9, 
-         t56_v8i a10, struct s56_5 a11, 
-         t56_v4d a12, struct s56_6 a13) {
-  extern void f56_0(int x, ...);
-  f56_0(1, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,
-        a10, a11, a12, a13);
-}
-
-// CHECK: define void @f57(i32 %x.0, i32 %x.1)
-// CHECK: call void @f57(
-struct s57 { _Complex int x; };
-void f57(struct s57 x) {} void f57a(void) { f57((struct s57){1}); }
-
-// CHECK: define void @f58()
-union u58 {};
-void f58(union u58 x) {}
-
-// CHECK: define i64 @f59()
-struct s59 { float x __attribute((aligned(8))); };
-struct s59 f59() { while (1) {} }
-
-// CHECK: define void @f60(%struct.s60* byval align 4, i32 %y)
-struct s60 { int x __attribute((aligned(8))); };
-void f60(struct s60 x, int y) {}
-
-// CHECK: define void @f61(i32 %x, %struct.s61* byval align 16 %y)
-typedef int T61 __attribute((vector_size(16)));
-struct s61 { T61 x; int y; };
-void f61(int x, struct s61 y) {}
-
-// CHECK: define void @f62(i32 %x, %struct.s62* byval align 4)
-typedef int T62 __attribute((vector_size(16)));
-struct s62 { T62 x; int y; } __attribute((packed, aligned(8)));
-void f62(int x, struct s62 y) {}
-
-// CHECK: define i32 @f63
-// CHECK: ptrtoint
-// CHECK: and {{.*}}, -16
-// CHECK: inttoptr
-typedef int T63 __attribute((vector_size(16)));
-struct s63 { T63 x; int y; };
-int f63(int i, ...) {
-  __builtin_va_list ap;
-  __builtin_va_start(ap, i);
-  struct s63 s = __builtin_va_arg(ap, struct s63);
-  __builtin_va_end(ap);
-  return s.y;
-}
-
-// CHECK: define void @f64(%struct.s64* byval align 4 %x)
-struct s64 { signed char a[0]; signed char b[]; };
-void f64(struct s64 x) {}
-
-// CHECK: define float @f65()
-struct s65 { signed char a[0]; float b; };
-struct s65 f65() { return (struct s65){{},2}; }
-
-// CHECK: define <2 x i64> @f66
-// CHECK: ptrtoint
-// CHECK: and {{.*}}, -16
-// CHECK: inttoptr
-typedef int T66 __attribute((vector_size(16)));
-T66 f66(int i, ...) {
-  __builtin_va_list ap;
-  __builtin_va_start(ap, i);
-  T66 v = __builtin_va_arg(ap, T66);
-  __builtin_va_end(ap);
-  return v;
-}
-
-// PR14453
-struct s67 { _Complex unsigned short int a; };
-void f67(struct s67 x) {}
-// CHECK: define void @f67(%struct.s67* byval align 4 %x)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-linux.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-linux.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-linux.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -w -fblocks -triple i386-pc-linux-gnu -target-cpu pentium4 -emit-llvm -o %t %s
-// RUN: FileCheck < %t %s
-
-// CHECK: define void @f56(
-// CHECK: i8 signext %a0, %struct.s56_0* byval align 4 %a1,
-// CHECK: i64 %a2.coerce, %struct.s56_1* byval align 4,
-// CHECK: <1 x double> %a4, %struct.s56_2* byval align 4,
-// CHECK: <4 x i32> %a6, %struct.s56_3* byval align 4,
-// CHECK: <2 x double> %a8, %struct.s56_4* byval align 4,
-// CHECK: <8 x i32> %a10, %struct.s56_5* byval align 4,
-// CHECK: <4 x double> %a12, %struct.s56_6* byval align 4)
-
-// CHECK: call void (i32, ...)* @f56_0(i32 1,
-// CHECK: i32 %{{.*}}, %struct.s56_0* byval align 4 %{{[^ ]*}},
-// CHECK: i64 %{{[^ ]*}}, %struct.s56_1* byval align 4 %{{[^ ]*}},
-// CHECK: <1 x double> %{{[^ ]*}}, %struct.s56_2* byval align 4 %{{[^ ]*}},
-// CHECK: <4 x i32> %{{[^ ]*}}, %struct.s56_3* byval align 4 %{{[^ ]*}},
-// CHECK: <2 x double> %{{[^ ]*}}, %struct.s56_4* byval align 4 %{{[^ ]*}},
-// CHECK: <8 x i32> %{{[^ ]*}}, %struct.s56_5* byval align 4 %{{[^ ]*}},
-// CHECK: <4 x double> %{{[^ ]*}}, %struct.s56_6* byval align 4 %{{[^ ]*}})
-// CHECK: }
-//
-// <rdar://problem/7964854> [i386] clang misaligns long double in structures
-// when passed byval
-// <rdar://problem/8431367> clang misaligns parameters on stack
-typedef int __attribute__((vector_size (8))) t56_v2i;
-typedef double __attribute__((vector_size (8))) t56_v1d;
-typedef int __attribute__((vector_size (16))) t56_v4i;
-typedef double __attribute__((vector_size (16))) t56_v2d;
-typedef int __attribute__((vector_size (32))) t56_v8i;
-typedef double __attribute__((vector_size (32))) t56_v4d;
-
-struct s56_0 { char a; };
-struct s56_1 { t56_v2i a; };
-struct s56_2 { t56_v1d a; };
-struct s56_3 { t56_v4i a; };
-struct s56_4 { t56_v2d a; };
-struct s56_5 { t56_v8i a; };
-struct s56_6 { t56_v4d a; };
-
-void f56(char a0, struct s56_0 a1, 
-         t56_v2i a2, struct s56_1 a3, 
-         t56_v1d a4, struct s56_2 a5, 
-         t56_v4i a6, struct s56_3 a7, 
-         t56_v2d a8, struct s56_4 a9, 
-         t56_v8i a10, struct s56_5 a11, 
-         t56_v4d a12, struct s56_6 a13) {
-  extern void f56_0(int x, ...);
-  f56_0(1, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9,
-        a10, a11, a12, a13);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-nommx.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-nommx.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-nommx.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -target-feature -mmx -target-feature +sse2 -triple i686-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-// no-mmx should put mmx into memory
-typedef int __attribute__((vector_size (8))) i32v2;
-int a(i32v2 x) { return x[0]; }
-// CHECK: define i32 @a(i64 %x.coerce)
-
-// but SSE2 vectors should still go into an SSE2 register 
-typedef int __attribute__((vector_size (16))) i32v4;
-int b(i32v4 x) { return x[0]; }
-// CHECK: define i32 @b(<4 x i32> %x)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-realign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-realign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-realign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -w -fblocks -triple i386-apple-darwin9 -emit-llvm -o %t %s
-// RUN: FileCheck < %t %s
-
-// CHECK: define void @f0(%struct.s0* byval align 4)
-// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i32(i8* %{{.*}}, i8* %{{.*}}, i32 16, i32 4, i1 false)
-// CHECK: }
-struct s0 { long double a; };
-void f0(struct s0 a0) {
-  extern long double f0_g0;
-  f0_g0 = a0.a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-win32.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-win32.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-arguments-win32.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -w -triple i386-pc-win32 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: define i64 @f1_1()
-// CHECK: define void @f1_2(%struct.s1* byval align 4 %a0)
-struct s1 {
-  int a;
-  int b;
-};
-struct s1 f1_1(void) { while (1) {} }
-void f1_2(struct s1 a0) {}
-
-// CHECK: define i32 @f2_1()
-struct s2 {
-  short a;
-  short b;
-};
-struct s2 f2_1(void) { while (1) {} }
-
-// CHECK: define i16 @f3_1()
-struct s3 {
-  char a;
-  char b;
-};
-struct s3 f3_1(void) { while (1) {} }
-
-// CHECK: define i8 @f4_1()
-struct s4 {
-  char a:4;
-  char b:4;
-};
-struct s4 f4_1(void) { while (1) {} }
-
-// CHECK: define i64 @f5_1()
-// CHECK: define void @f5_2(%struct.s5* byval align 4)
-struct s5 {
-  double a;
-};
-struct s5 f5_1(void) { while (1) {} }
-void f5_2(struct s5 a0) {}
-
-// CHECK: define i32 @f6_1()
-// CHECK: define void @f6_2(%struct.s6* byval align 4 %a0)
-struct s6 {
-  float a;
-};
-struct s6 f6_1(void) { while (1) {} }
-void f6_2(struct s6 a0) {}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_32-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -verify %s
-// <rdar://problem/12415959>
-
-typedef unsigned int u_int32_t;
-typedef u_int32_t uint32_t;
-
-typedef unsigned long long u_int64_t;
-typedef u_int64_t uint64_t;
-
-int func1() {
-  // Error out if size is > 32-bits.
-  uint32_t msr = 0x8b;
-  uint64_t val = 0;
-  __asm__ volatile("wrmsr"
-                   :
-                   : "c" (msr),
-                     "a" ((val & 0xFFFFFFFFUL)), // expected-error {{invalid input size for constraint 'a'}}
-                     "d" (((val >> 32) & 0xFFFFFFFFUL)));
-
-  // Don't error out if the size of the destination is <= 32 bits.
-  unsigned char data;
-  unsigned int port;
-  __asm__ volatile("outb %0, %w1" : : "a" (data), "Nd" (port)); // No error expected.
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments-darwin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments-darwin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments-darwin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s| FileCheck %s
-
-// rdar://9122143
-// CHECK: declare void @func(i64, double)
-typedef struct _str {
-  union {
-    long double a;
-    long c;
-  };
-} str;
-
-void func(str s);
-str ss;
-void f9122143()
-{
-  func(ss);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments-nacl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments-nacl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments-nacl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-nacl -emit-llvm -o - %s| FileCheck %s
-#include <stdarg.h>
-// Test for x86-64 structure representation (instead of pnacl representation),
-// in particular for unions. Also crib a few tests from x86 Linux.
-
-union PP_VarValue {
-  int as_int;
-  double as_double;
-  long long as_i64;
-};
-
-struct PP_Var {
-  int type;
-  int padding;
-  union PP_VarValue value;
-};
-
-// CHECK: define { i64, i64 } @f0()
-struct PP_Var f0() {
-  struct PP_Var result = { 0, 0, 0 };
-  return result;
-}
-
-// CHECK: define void @f1(i64 %p1.coerce0, i64 %p1.coerce1)
-void f1(struct PP_Var p1) { while(1) {} }
-
-// long doubles are 64 bits on NaCl
-// CHECK: define double @f5()
-long double f5(void) {
-  return 0;
-}
-
-// CHECK: define void @f6(i8 signext %a0, i16 signext %a1, i32 %a2, i64 %a3, i8* %a4)
-void f6(char a0, short a1, int a2, long long a3, void *a4) {
-}
-
-// CHECK: define i64 @f8_1()
-// CHECK: define void @f8_2(i64 %a0.coerce)
-union u8 {
-  long double a;
-  int b;
-};
-union u8 f8_1() { while (1) {} }
-void f8_2(union u8 a0) {}
-
-// CHECK: define i64 @f9()
-struct s9 { int a; int b; int : 0; } f9(void) { while (1) {} }
-
-// CHECK: define void @f10(i64 %a0.coerce)
-struct s10 { int a; int b; int : 0; };
-void f10(struct s10 a0) {}
-
-// CHECK: define double @f11()
-union { long double a; float b; } f11() { while (1) {} }
-
-// CHECK: define i32 @f12_0()
-// CHECK: define void @f12_1(i32 %a0.coerce)
-struct s12 { int a __attribute__((aligned(16))); };
-struct s12 f12_0(void) { while (1) {} }
-void f12_1(struct s12 a0) {}
-
-// Check that sret parameter is accounted for when checking available integer
-// registers.
-// CHECK: define void @f13(%struct.s13_0* noalias sret %agg.result, i32 %a, i32 %b, i32 %c, i32 %d, {{.*}}* byval align 8 %e, i32 %f)
-
-struct s13_0 { long long f0[3]; };
-struct s13_1 { long long f0[2]; };
-struct s13_0 f13(int a, int b, int c, int d,
-                 struct s13_1 e, int f) { while (1) {} }
-
-// CHECK: define void @f20(%struct.s20* byval align 32 %x)
-struct __attribute__((aligned(32))) s20 {
-  int x;
-  int y;
-};
-void f20(struct s20 x) {}
-
-
-// CHECK: declare void @func(i64)
-typedef struct _str {
-  union {
-    long double a;
-    long c;
-  };
-} str;
-
-void func(str s);
-str ss;
-void f9122143()
-{
-  func(ss);
-}
-
-
-typedef struct {
-  int a;
-  int b;
-} s1;
-// CHECK: define i32 @f48(%struct.s1* byval %s)
-int __attribute__((pnaclcall)) f48(s1 s) { return s.a; }
-
-// CHECK: define void @f49(%struct.s1* noalias sret %agg.result)
-s1 __attribute__((pnaclcall)) f49() { s1 s; s.a = s.b = 1; return s; }
-
-union simple_union {
-  int a;
-  char b;
-};
-// Unions should be passed as byval structs
-// CHECK: define void @f50(%union.simple_union* byval %s)
-void __attribute__((pnaclcall)) f50(union simple_union s) {}
-
-typedef struct {
-  int b4 : 4;
-  int b3 : 3;
-  int b8 : 8;
-} bitfield1;
-// Bitfields should be passed as byval structs
-// CHECK: define void @f51(%struct.bitfield1* byval %bf1)
-void __attribute__((pnaclcall)) f51(bitfield1 bf1) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/x86_64-arguments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,394 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s| FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | FileCheck %s -check-prefix=AVX
-#include <stdarg.h>
-
-// CHECK: define signext i8 @f0()
-char f0(void) {
-  return 0;
-}
-
-// CHECK: define signext i16 @f1()
-short f1(void) {
-  return 0;
-}
-
-// CHECK: define i32 @f2()
-int f2(void) {
-  return 0;
-}
-
-// CHECK: define float @f3()
-float f3(void) {
-  return 0;
-}
-
-// CHECK: define double @f4()
-double f4(void) {
-  return 0;
-}
-
-// CHECK: define x86_fp80 @f5()
-long double f5(void) {
-  return 0;
-}
-
-// CHECK: define void @f6(i8 signext %a0, i16 signext %a1, i32 %a2, i64 %a3, i8* %a4)
-void f6(char a0, short a1, int a2, long long a3, void *a4) {
-}
-
-// CHECK: define void @f7(i32 %a0)
-typedef enum { A, B, C } e7;
-void f7(e7 a0) {
-}
-
-// Test merging/passing of upper eightbyte with X87 class.
-//
-// CHECK: define void @f8_1(%union.u8* noalias sret %agg.result)
-// CHECK: define void @f8_2(%union.u8* byval align 16 %a0)
-union u8 {
-  long double a;
-  int b;
-};
-union u8 f8_1() { while (1) {} }
-void f8_2(union u8 a0) {}
-
-// CHECK: define i64 @f9()
-struct s9 { int a; int b; int : 0; } f9(void) { while (1) {} }
-
-// CHECK: define void @f10(i64 %a0.coerce)
-struct s10 { int a; int b; int : 0; };
-void f10(struct s10 a0) {}
-
-// CHECK: define void @f11(%union.anon* noalias sret %agg.result)
-union { long double a; float b; } f11() { while (1) {} }
-
-// CHECK: define i32 @f12_0()
-// CHECK: define void @f12_1(i32 %a0.coerce)
-struct s12 { int a __attribute__((aligned(16))); };
-struct s12 f12_0(void) { while (1) {} }
-void f12_1(struct s12 a0) {}
-
-// Check that sret parameter is accounted for when checking available integer
-// registers.
-// CHECK: define void @f13(%struct.s13_0* noalias sret %agg.result, i32 %a, i32 %b, i32 %c, i32 %d, {{.*}}* byval align 8 %e, i32 %f)
-
-struct s13_0 { long long f0[3]; };
-struct s13_1 { long long f0[2]; };
-struct s13_0 f13(int a, int b, int c, int d,
-                 struct s13_1 e, int f) { while (1) {} }
-
-// CHECK: define void @f14({{.*}}, i8 signext %X)
-void f14(int a, int b, int c, int d, int e, int f, char X) {}
-
-// CHECK: define void @f15({{.*}}, i8* %X)
-void f15(int a, int b, int c, int d, int e, int f, void *X) {}
-
-// CHECK: define void @f16({{.*}}, float %X)
-void f16(float a, float b, float c, float d, float e, float f, float g, float h,
-         float X) {}
-
-// CHECK: define void @f17({{.*}}, x86_fp80 %X)
-void f17(float a, float b, float c, float d, float e, float f, float g, float h,
-         long double X) {}
-
-// Check for valid coercion.  The struct should be passed/returned as i32, not
-// as i64 for better code quality.
-// rdar://8135035
-// CHECK: define void @f18(i32 %a, i32 %f18_arg1.coerce) 
-struct f18_s0 { int f0; };
-void f18(int a, struct f18_s0 f18_arg1) { while (1) {} }
-
-// Check byval alignment.
-
-// CHECK: define void @f19(%struct.s19* byval align 16 %x)
-struct s19 {
-  long double a;
-};
-void f19(struct s19 x) {}
-
-// CHECK: define void @f20(%struct.s20* byval align 32 %x)
-struct __attribute__((aligned(32))) s20 {
-  int x;
-  int y;
-};
-void f20(struct s20 x) {}
-
-struct StringRef {
-  long x;
-  const char *Ptr;
-};
-
-// rdar://7375902
-// CHECK: define i8* @f21(i64 %S.coerce0, i8* %S.coerce1) 
-const char *f21(struct StringRef S) { return S.x+S.Ptr; }
-
-// PR7567
-typedef __attribute__ ((aligned(16))) struct f22s { unsigned long long x[2]; } L;
-void f22(L x, L y) { }
-// CHECK: @f22
-// CHECK: %x = alloca{{.*}}, align 16
-// CHECK: %y = alloca{{.*}}, align 16
-
-
-
-// PR7714
-struct f23S {
-  short f0;
-  unsigned f1;
-  int f2;
-};
-
-
-void f23(int A, struct f23S B) {
-  // CHECK: define void @f23(i32 %A, i64 %B.coerce0, i32 %B.coerce1)
-}
-
-struct f24s { long a; int b; };
-
-struct f23S f24(struct f23S *X, struct f24s *P2) {
-  return *X;
-  
-  // CHECK: define { i64, i32 } @f24(%struct.f23S* %X, %struct.f24s* %P2)
-}
-
-// rdar://8248065
-typedef float v4f32 __attribute__((__vector_size__(16)));
-v4f32 f25(v4f32 X) {
-  // CHECK: define <4 x float> @f25(<4 x float> %X)
-  // CHECK-NOT: alloca
-  // CHECK: alloca <4 x float>
-  // CHECK-NOT: alloca
-  // CHECK: store <4 x float> %X, <4 x float>*
-  // CHECK-NOT: store
-  // CHECK: ret <4 x float>
-  return X+X;
-}
-
-struct foo26 {
-  int *X;
-  float *Y;
-};
-
-struct foo26 f26(struct foo26 *P) {
-  // CHECK: define { i32*, float* } @f26(%struct.foo26* %P)
-  return *P;
-}
-
-
-struct v4f32wrapper {
-  v4f32 v;
-};
-
-struct v4f32wrapper f27(struct v4f32wrapper X) {
-  // CHECK: define <4 x float> @f27(<4 x float> %X.coerce)
-  return X;
-}
-
-// rdar://5711709
-struct f28c {
-  double x;
-  int y;
-};
-void f28(struct f28c C) {
-  // CHECK: define void @f28(double %C.coerce0, i32 %C.coerce1)
-}
-
-struct f29a {
-  struct c {
-    double x;
-    int y;
-  } x[1];
-};
-
-void f29a(struct f29a A) {
-  // CHECK: define void @f29a(double %A.coerce0, i32 %A.coerce1)
-}
-
-// rdar://8249586
-struct S0 { char f0[8]; char f2; char f3; char f4; };
-void f30(struct S0 p_4) {
-  // CHECK: define void @f30(i64 %p_4.coerce0, i24 %p_4.coerce1)
-}
-
-// Pass the third element as a float when followed by tail padding.
-// rdar://8251384
-struct f31foo { float a, b, c; };
-float f31(struct f31foo X) {
-  // CHECK: define float @f31(<2 x float> %X.coerce0, float %X.coerce1)
-  return X.c;
-}
-
-_Complex float f32(_Complex float A, _Complex float B) {
-  // rdar://6379669
-  // CHECK: define <2 x float> @f32(<2 x float> %A.coerce, <2 x float> %B.coerce)
-  return A+B;
-}
-
-
-// rdar://8357396
-struct f33s { long x; float c,d; };
-
-void f33(va_list X) {
-  va_arg(X, struct f33s);
-}
-
-typedef unsigned long long v1i64 __attribute__((__vector_size__(8)));
-
-// rdar://8359248
-// CHECK: define i64 @f34(i64 %arg.coerce)
-v1i64 f34(v1i64 arg) { return arg; }
-
-
-// rdar://8358475
-// CHECK: define i64 @f35(i64 %arg.coerce)
-typedef unsigned long v1i64_2 __attribute__((__vector_size__(8)));
-v1i64_2 f35(v1i64_2 arg) { return arg+arg; }
-
-// rdar://9122143
-// CHECK: declare void @func(%struct._str* byval align 16)
-typedef struct _str {
-  union {
-    long double a;
-    long c;
-  };
-} str;
-
-void func(str s);
-str ss;
-void f9122143()
-{
-  func(ss);
-}
-
-// CHECK: define double @f36(double %arg.coerce)
-typedef unsigned v2i32 __attribute((__vector_size__(8)));
-v2i32 f36(v2i32 arg) { return arg; }
-
-// AVX: declare void @f38(<8 x float>)
-// AVX: declare void @f37(<8 x float>)
-// CHECK: declare void @f38(%struct.s256* byval align 32)
-// CHECK: declare void @f37(<8 x float>* byval align 32)
-typedef float __m256 __attribute__ ((__vector_size__ (32)));
-typedef struct {
-  __m256 m;
-} s256;
-
-s256 x38;
-__m256 x37;
-
-void f38(s256 x);
-void f37(__m256 x);
-void f39() { f38(x38); f37(x37); }
-
-// The two next tests make sure that the struct below is passed
-// in the same way regardless of avx being used
-
-// CHECK: declare void @func40(%struct.t128* byval align 16)
-typedef float __m128 __attribute__ ((__vector_size__ (16)));
-typedef struct t128 {
-  __m128 m;
-  __m128 n;
-} two128;
-
-extern void func40(two128 s);
-void func41(two128 s) {
-  func40(s);
-}
-
-// CHECK: declare void @func42(%struct.t128_2* byval align 16)
-typedef struct xxx {
-  __m128 array[2];
-} Atwo128;
-typedef struct t128_2 {
-  Atwo128 x;
-} SA;
-
-extern void func42(SA s);
-void func43(SA s) {
-  func42(s);
-}
-
-// CHECK: define i32 @f44
-// CHECK: ptrtoint
-// CHECK-NEXT: and {{.*}}, -32
-// CHECK-NEXT: inttoptr
-typedef int T44 __attribute((vector_size(32)));
-struct s44 { T44 x; int y; };
-int f44(int i, ...) {
-  __builtin_va_list ap;
-  __builtin_va_start(ap, i);
-  struct s44 s = __builtin_va_arg(ap, struct s44);
-  __builtin_va_end(ap);
-  return s.y;
-}
-
-// Text that vec3 returns the correct LLVM IR type.
-// AVX: define i32 @foo(<3 x i64> %X)
-typedef long long3 __attribute((ext_vector_type(3)));
-int foo(long3 X)
-{
-  return 0;
-}
-
-// Make sure we don't use a varargs convention for a function without a
-// prototype where AVX types are involved.
-// AVX: @test45
-// AVX: call i32 bitcast (i32 (...)* @f45 to i32 (<8 x float>)*)
-int f45();
-__m256 x45;
-void test45() { f45(x45); }
-
-// Make sure we use byval to pass 64-bit vectors in memory; the LLVM call
-// lowering can't handle this case correctly because it runs after legalization.
-// CHECK: @test46
-// CHECK: call void @f46({{.*}}<2 x float>* byval align 8 {{.*}}, <2 x float>* byval align 8 {{.*}})
-typedef float v46 __attribute((vector_size(8)));
-void f46(v46,v46,v46,v46,v46,v46,v46,v46,v46,v46);
-void test46() { v46 x = {1,2}; f46(x,x,x,x,x,x,x,x,x,x); }
-
-// Check that we pass the struct below without using byval, which helps out
-// codegen.
-//
-// CHECK: @test47
-// CHECK: call void @f47(i32 {{.*}}, i32 {{.*}}, i32 {{.*}}, i32 {{.*}}, i32 {{.*}}, i32 {{.*}}, i32 {{.*}})
-struct s47 { unsigned a; };
-void f47(int,int,int,int,int,int,struct s47);
-void test47(int a, struct s47 b) { f47(a, a, a, a, a, a, b); }
-
-// rdar://12723368
-// In the following example, there are holes in T4 at the 3rd byte and the 4th
-// byte, however, T2 does not have those holes. T4 is chosen to be the
-// representing type for union T1, but we can't use load or store of T4 since
-// it will skip the 3rd byte and the 4th byte.
-// In general, Since we don't accurately represent the data fields of a union,
-// do not use load or store of the representing llvm type for the union.
-typedef _Complex int T2;
-typedef _Complex char T5;
-typedef _Complex int T7;
-typedef struct T4 { T5 field0; T7 field1; } T4;
-typedef union T1 { T2 field0; T4 field1; } T1;
-extern T1 T1_retval;
-T1 test48(void) {
-// CHECK: @test48
-// CHECK: memcpy
-// CHECK: memcpy
-  return T1_retval;
-}
-
-void test49_helper(double, ...);
-void test49(double d, double e) {
-  test49_helper(d, e);
-}
-// CHECK:    define void @test49(
-// CHECK:      [[T0:%.*]] = load double*
-// CHECK-NEXT: [[T1:%.*]] = load double*
-// CHECK-NEXT: call void (double, ...)* @test49_helper(double [[T0]], double [[T1]])
-
-void test50_helper();
-void test50(double d, double e) {
-  test50_helper(d, e);
-}
-// CHECK:    define void @test50(
-// CHECK:      [[T0:%.*]] = load double*
-// CHECK-NEXT: [[T1:%.*]] = load double*
-// CHECK-NEXT: call void (double, double, ...)* bitcast (void (...)* @test50_helper to void (double, double, ...)*)(double [[T0]], double [[T1]])

Modified: trunk/contrib/llvm/tools/clang/test/CodeGen/xop-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGen/xop-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGen/xop-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,326 +0,0 @@
-// RUN: %clang_cc1 %s -O3 -triple=x86_64-apple-darwin -target-feature +xop -emit-llvm -o - | FileCheck %s
-
-// Don't include mm_malloc.h, it's system specific.
-#define __MM_MALLOC_H
-
-#include <x86intrin.h>
-
-__m128i test_mm_maccs_epi16(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacssww
-  return _mm_maccs_epi16(a, b, c);
-}
-
-__m128i test_mm_macc_epi16(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacsww
-  return _mm_macc_epi16(a, b, c);
-}
-
-__m128i test_mm_maccsd_epi16(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacsswd
-  return _mm_maccsd_epi16(a, b, c);
-}
-
-__m128i test_mm_maccd_epi16(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacswd
-  return _mm_maccd_epi16(a, b, c);
-}
-
-__m128i test_mm_maccs_epi32(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacssdd
-  return _mm_maccs_epi32(a, b, c);
-}
-
-__m128i test_mm_macc_epi32(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacsdd
-  return _mm_macc_epi32(a, b, c);
-}
-
-__m128i test_mm_maccslo_epi32(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacssdql
-  return _mm_maccslo_epi32(a, b, c);
-}
-
-__m128i test_mm_macclo_epi32(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacsdql
-  return _mm_macclo_epi32(a, b, c);
-}
-
-__m128i test_mm_maccshi_epi32(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacssdqh
-  return _mm_maccshi_epi32(a, b, c);
-}
-
-__m128i test_mm_macchi_epi32(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmacsdqh
-  return _mm_macchi_epi32(a, b, c);
-}
-
-__m128i test_mm_maddsd_epi16(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmadcsswd
-  return _mm_maddsd_epi16(a, b, c);
-}
-
-__m128i test_mm_maddd_epi16(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpmadcswd
-  return _mm_maddd_epi16(a, b, c);
-}
-
-__m128i test_mm_haddw_epi8(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddbw
-  return _mm_haddw_epi8(a);
-}
-
-__m128i test_mm_haddd_epi8(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddbd
-  return _mm_haddd_epi8(a);
-}
-
-__m128i test_mm_haddq_epi8(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddbq
-  return _mm_haddq_epi8(a);
-}
-
-__m128i test_mm_haddd_epi16(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddwd
-  return _mm_haddd_epi16(a);
-}
-
-__m128i test_mm_haddq_epi16(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddwq
-  return _mm_haddq_epi16(a);
-}
-
-__m128i test_mm_haddq_epi32(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphadddq
-  return _mm_haddq_epi32(a);
-}
-
-__m128i test_mm_haddw_epu8(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddubw
-  return _mm_haddw_epu8(a);
-}
-
-__m128i test_mm_haddd_epu8(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddubd
-  return _mm_haddd_epu8(a);
-}
-
-__m128i test_mm_haddq_epu8(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddubq
-  return _mm_haddq_epu8(a);
-}
-
-__m128i test_mm_haddd_epu16(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphadduwd
-  return _mm_haddd_epu16(a);
-}
-
-__m128i test_mm_haddq_epu16(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphadduwq
-  return _mm_haddq_epu16(a);
-}
-
-__m128i test_mm_haddq_epu32(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphaddudq
-  return _mm_haddq_epu32(a);
-}
-
-__m128i test_mm_hsubw_epi8(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphsubbw
-  return _mm_hsubw_epi8(a);
-}
-
-__m128i test_mm_hsubd_epi16(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphsubwd
-  return _mm_hsubd_epi16(a);
-}
-
-__m128i test_mm_hsubq_epi32(__m128i a) {
-  // CHECK: @llvm.x86.xop.vphsubdq
-  return _mm_hsubq_epi32(a);
-}
-
-__m128i test_mm_cmov_si128(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpcmov
-  return _mm_cmov_si128(a, b, c);
-}
-
-__m256i test_mm256_cmov_si256(__m256i a, __m256i b, __m256i c) {
-  // CHECK: @llvm.x86.xop.vpcmov.256
-  return _mm256_cmov_si256(a, b, c);
-}
-
-__m128i test_mm_perm_epi8(__m128i a, __m128i b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpperm
-  return _mm_perm_epi8(a, b, c);
-}
-
-__m128i test_mm_rot_epi8(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vprotb
-  return _mm_rot_epi8(a, b);
-}
-
-__m128i test_mm_rot_epi16(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vprotw
-  return _mm_rot_epi16(a, b);
-}
-
-__m128i test_mm_rot_epi32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vprotd
-  return _mm_rot_epi32(a, b);
-}
-
-__m128i test_mm_rot_epi64(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vprotq
-  return _mm_rot_epi64(a, b);
-}
-
-__m128i test_mm_roti_epi8(__m128i a) {
-  // CHECK: @llvm.x86.xop.vprotbi
-  return _mm_roti_epi8(a, 1);
-}
-
-__m128i test_mm_roti_epi16(__m128i a) {
-  // CHECK: @llvm.x86.xop.vprotwi
-  return _mm_roti_epi16(a, 50);
-}
-
-__m128i test_mm_roti_epi32(__m128i a) {
-  // CHECK: @llvm.x86.xop.vprotdi
-  return _mm_roti_epi32(a, -30);
-}
-
-__m128i test_mm_roti_epi64(__m128i a) {
-  // CHECK: @llvm.x86.xop.vprotqi
-  return _mm_roti_epi64(a, 100);
-}
-
-__m128i test_mm_shl_epi8(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpshlb
-  return _mm_shl_epi8(a, b);
-}
-
-__m128i test_mm_shl_epi16(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpshlw
-  return _mm_shl_epi16(a, b);
-}
-
-__m128i test_mm_shl_epi32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpshld
-  return _mm_shl_epi32(a, b);
-}
-
-__m128i test_mm_shl_epi64(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpshlq
-  return _mm_shl_epi64(a, b);
-}
-
-__m128i test_mm_sha_epi8(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpshab
-  return _mm_sha_epi8(a, b);
-}
-
-__m128i test_mm_sha_epi16(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpshaw
-  return _mm_sha_epi16(a, b);
-}
-
-__m128i test_mm_sha_epi32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpshad
-  return _mm_sha_epi32(a, b);
-}
-
-__m128i test_mm_sha_epi64(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpshaq
-  return _mm_sha_epi64(a, b);
-}
-
-__m128i test_mm_com_epu8(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpcomub
-  return _mm_com_epu8(a, b, 0);
-}
-
-__m128i test_mm_com_epu16(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpcomuw
-  return _mm_com_epu16(a, b, 0);
-}
-
-__m128i test_mm_com_epu32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpcomud
-  return _mm_com_epu32(a, b, 0);
-}
-
-__m128i test_mm_com_epu64(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpcomuq
-  return _mm_com_epu64(a, b, 0);
-}
-
-__m128i test_mm_com_epi8(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpcomb
-  return _mm_com_epi8(a, b, 0);
-}
-
-__m128i test_mm_com_epi16(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpcomw
-  return _mm_com_epi16(a, b, 0);
-}
-
-__m128i test_mm_com_epi32(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpcomd
-  return _mm_com_epi32(a, b, 0);
-}
-
-__m128i test_mm_com_epi64(__m128i a, __m128i b) {
-  // CHECK: @llvm.x86.xop.vpcomq
-  return _mm_com_epi64(a, b, 0);
-}
-
-__m128d test_mm_permute2_pd(__m128d a, __m128d b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpermil2pd
-  return _mm_permute2_pd(a, b, c, 0);
-}
-
-__m256d test_mm256_permute2_pd(__m256d a, __m256d b, __m256i c) {
-  // CHECK: @llvm.x86.xop.vpermil2pd.256
-  return _mm256_permute2_pd(a, b, c, 0);
-}
-
-__m128 test_mm_permute2_ps(__m128 a, __m128 b, __m128i c) {
-  // CHECK: @llvm.x86.xop.vpermil2ps
-  return _mm_permute2_ps(a, b, c, 0);
-}
-
-__m256 test_mm256_permute2_ps(__m256 a, __m256 b, __m256i c) {
-  // CHECK: @llvm.x86.xop.vpermil2ps.256
-  return _mm256_permute2_ps(a, b, c, 0);
-}
-
-__m128 test_mm_frcz_ss(__m128 a) {
-  // CHECK: @llvm.x86.xop.vfrcz.ss
-  return _mm_frcz_ss(a);
-}
-
-__m128d test_mm_frcz_sd(__m128d a) {
-  // CHECK: @llvm.x86.xop.vfrcz.sd
-  return _mm_frcz_sd(a);
-}
-
-__m128 test_mm_frcz_ps(__m128 a) {
-  // CHECK: @llvm.x86.xop.vfrcz.ps
-  return _mm_frcz_ps(a);
-}
-
-__m128d test_mm_frcz_pd(__m128d a) {
-  // CHECK: @llvm.x86.xop.vfrcz.pd
-  return _mm_frcz_pd(a);
-}
-
-__m256 test_mm256_frcz_ps(__m256 a) {
-  // CHECK: @llvm.x86.xop.vfrcz.ps.256
-  return _mm256_frcz_ps(a);
-}
-
-__m256d test_mm256_frcz_pd(__m256d a) {
-  // CHECK: @llvm.x86.xop.vfrcz.pd.256
-  return _mm256_frcz_pd(a);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/address-spaces.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/address-spaces.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/address-spaces.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -fcuda-is-device -triple nvptx-unknown-unknown | FileCheck %s
-
-#include "../SemaCUDA/cuda.h"
-
-// CHECK: @i = addrspace(1) global
-__device__ int i;
-
-// CHECK: @j = addrspace(4) global
-__constant__ int j;
-
-// CHECK: @k = addrspace(3) global
-__shared__ int k;
-
-__device__ void foo() {
-  // CHECK: load i32* bitcast (i32 addrspace(1)* @i to i32*)
-  i++;
-
-  // CHECK: load i32* bitcast (i32 addrspace(4)* @j to i32*)
-  j++;
-
-  // CHECK: load i32* bitcast (i32 addrspace(3)* @k to i32*)
-  k++;
-
-  static int li;
-  // CHECK: load i32 addrspace(1)* @_ZZ3foovE2li
-  li++;
-
-  __constant__ int lj;
-  // CHECK: load i32 addrspace(4)* @_ZZ3foovE2lj
-  lj++;
-
-  __shared__ int lk;
-  // CHECK: load i32 addrspace(3)* @_ZZ3foovE2lk
-  lk++;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/device-stub.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/device-stub.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/device-stub.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-#include "../SemaCUDA/cuda.h"
-
-// Test that we build the correct number of calls to cudaSetupArgument followed
-// by a call to cudaLaunch.
-
-// CHECK: define{{.*}}kernelfunc
-// CHECK: call{{.*}}cudaSetupArgument
-// CHECK: call{{.*}}cudaSetupArgument
-// CHECK: call{{.*}}cudaSetupArgument
-// CHECK: call{{.*}}cudaLaunch
-__global__ void kernelfunc(int i, int j, int k) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/filter-decl.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/filter-decl.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/filter-decl.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-HOST %s
-// RUN: %clang_cc1 -emit-llvm %s -o - -fcuda-is-device | FileCheck -check-prefix=CHECK-DEVICE %s
-
-#include "../SemaCUDA/cuda.h"
-
-// CHECK-HOST-NOT: constantdata = global
-// CHECK-DEVICE: constantdata = global
-__constant__ char constantdata[256];
-
-// CHECK-HOST-NOT: devicedata = global
-// CHECK-DEVICE: devicedata = global
-__device__ char devicedata[256];
-
-// CHECK-HOST-NOT: shareddata = global
-// CHECK-DEVICE: shareddata = global
-__shared__ char shareddata[256];
-
-// CHECK-HOST: hostdata = global
-// CHECK-DEVICE-NOT: hostdata = global
-char hostdata[256];
-
-// CHECK-HOST: define{{.*}}implicithostonlyfunc
-// CHECK-DEVICE-NOT: define{{.*}}implicithostonlyfunc
-void implicithostonlyfunc(void) {}
-
-// CHECK-HOST: define{{.*}}explicithostonlyfunc
-// CHECK-DEVICE-NOT: define{{.*}}explicithostonlyfunc
-__host__ void explicithostonlyfunc(void) {}
-
-// CHECK-HOST-NOT: define{{.*}}deviceonlyfunc
-// CHECK-DEVICE: define{{.*}}deviceonlyfunc
-__device__ void deviceonlyfunc(void) {}
-
-// CHECK-HOST: define{{.*}}hostdevicefunc
-// CHECK-DEVICE: define{{.*}}hostdevicefunc
-__host__  __device__ void hostdevicefunc(void) {}
-
-// CHECK-HOST: define{{.*}}globalfunc
-// CHECK-DEVICE: define{{.*}}globalfunc
-__global__ void globalfunc(void) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/kernel-call.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/kernel-call.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/kernel-call.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-#include "../SemaCUDA/cuda.h"
-
-__global__ void g1(int x) {}
-
-int main(void) {
-  // CHECK: call{{.*}}cudaConfigureCall
-  // CHECK: icmp
-  // CHECK: br
-  // CHECK: call{{.*}}g1
-  g1<<<1, 1>>>(42);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/ptx-kernels.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/ptx-kernels.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCUDA/ptx-kernels.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -triple nvptx-unknown-unknown -fcuda-is-device -emit-llvm -o - | FileCheck %s
-
-#include "../SemaCUDA/cuda.h"
-
-// CHECK: define void @device_function
-extern "C"
-__device__ void device_function() {}
-
-// CHECK: define void @global_function
-extern "C"
-__global__ void global_function() {
-  // CHECK: call void @device_function
-  device_function();
-}
-
-// CHECK: !{{[0-9]+}} = metadata !{void ()* @global_function, metadata !"kernel", i32 1}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-02-WeakLinkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-02-WeakLinkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-02-WeakLinkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-// The template should compile to linkonce linkage, not weak linkage.
-
-// CHECK-NOT: weak
-template<class T>
-void thefunc();
-
-template<class T>
-inline void thefunc() {}
-
-void test() {
-  thefunc<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-18-PtrMemConstantInitializer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-18-PtrMemConstantInitializer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-18-PtrMemConstantInitializer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-struct Gfx {
-  void opMoveSetShowText();
-};
-
-struct Operator {
-  void (Gfx::*func)();
-};
-
-Operator opTab[] = {
-  {&Gfx::opMoveSetShowText},
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-27-MultipleInheritanceThunk.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-27-MultipleInheritanceThunk.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-27-MultipleInheritanceThunk.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-
-struct CallSite {
-  int X;
-
-  CallSite(const CallSite &CS);
-};
-
-struct AliasAnalysis {
-  int TD;
-
-  virtual int getModRefInfo(CallSite CS);
-};
-
-
-struct Pass {
-  int X;
-  virtual int foo();
-};
-
-struct AliasAnalysisCounter : public Pass, public AliasAnalysis {
-  int getModRefInfo(CallSite CS) {
-    return 0;
-  }
-};
-
-AliasAnalysisCounter AAC;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-29-DuplicatedCleanupTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-29-DuplicatedCleanupTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-11-29-DuplicatedCleanupTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-
-void doesntThrow() throw();
-struct F {
-  ~F() { doesntThrow(); }
-};
-
-void atest() {
-  F A;
-lab:
-  F B;
-  goto lab;
-}
-
-void test(int val) {
-label: {
-   F A;
-   F B;
-   if (val == 0) goto label;
-   if (val == 1) goto label;
-}
-}
-
-void test3(int val) {
-label: {
-   F A;
-   F B;
-   if (val == 0) { doesntThrow(); goto label; }
-   if (val == 1) { doesntThrow(); goto label; }
-}
-}
-
-void test4(int val) {
-label: {
-   F A;
-   F B;
-   if (val == 0) { F C; goto label; }
-   if (val == 1) { F D; goto label; }
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-12-08-ArrayOfPtrToMemberFunc.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-12-08-ArrayOfPtrToMemberFunc.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2003-12-08-ArrayOfPtrToMemberFunc.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-struct Evil {
- void fun ();
-};
-int foo();
-typedef void (Evil::*memfunptr) ();
-static memfunptr jumpTable[] = { &Evil::fun };
-
-void Evil::fun() {
- (this->*jumpTable[foo()]) ();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-01-11-DynamicInitializedConstant.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-01-11-DynamicInitializedConstant.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-01-11-DynamicInitializedConstant.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK-NOT: constant
-extern int X;
-const int Y = X;
-const int* foo() { return &Y; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-08-ReinterpretCastCopy.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-08-ReinterpretCastCopy.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-08-ReinterpretCastCopy.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-struct A {
-  virtual void Method() = 0;
-};
-
-struct B : public A {
-  virtual void Method() { }
-};
-
-typedef void (A::*fn_type_a)(void);
-typedef void (B::*fn_type_b)(void);
-
-int main(int argc, char **argv)
-{
-  fn_type_a f = reinterpret_cast<fn_type_a>(&B::Method);
-  fn_type_b g = reinterpret_cast<fn_type_b>(f);
-  B b;
-  (b.*g)();
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-09-UnmangledBuiltinMethods.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-09-UnmangledBuiltinMethods.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-09-UnmangledBuiltinMethods.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: _ZN11AccessFlags6strlenEv
-struct AccessFlags {
-  void strlen();
-};
-
-void AccessFlags::strlen() { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-15-CleanupsAndGotos.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-15-CleanupsAndGotos.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-03-15-CleanupsAndGotos.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-// Testcase from Bug 291
-
-struct X {
-  ~X();
-};
-
-void foo() {
-  X v;
-
-TryAgain:
-  goto TryAgain;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-06-08-LateTemplateInstantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-06-08-LateTemplateInstantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-06-08-LateTemplateInstantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-
-template<typename Ty>
-struct normal_iterator {
-  int FIELD;
-};
-
-void foo(normal_iterator<int>);
-normal_iterator<int> baz();
-
-void bar() {
-  foo(baz());
-}
-
-void *bar2() {
-  return (void*)foo;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-09-27-DidntEmitTemplate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-09-27-DidntEmitTemplate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-09-27-DidntEmitTemplate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-// This is a testcase for LLVM PR445, which was a problem where the
-// instantiation of callDefaultCtor was not being emitted correctly.
-
-// CHECK-NOT: declare{{.*}}callDefaultCtor
-struct Pass {};
-
-template<typename PassName>
-Pass *callDefaultCtor() { return new Pass(); }
-
-void foo(Pass *(*C)());
-
-struct basic_string {
-  bool empty() const { return true; }
-};
-
-
-bool foo2(basic_string &X) {
-  return X.empty();
-}
-void baz() { foo(callDefaultCtor<Pass>); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-11-27-ExceptionCleanupAssertion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-11-27-ExceptionCleanupAssertion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-11-27-ExceptionCleanupAssertion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-
-// This is PR421
-
-struct Strongbad {
-    Strongbad(const char *str );
-    ~Strongbad();
-    operator const char *() const;
-};
-
-void TheCheat () {
-  Strongbad foo(0);
-  Strongbad dirs[] = { Strongbad(0) + 1};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-11-27-FriendDefaultArgCrash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-11-27-FriendDefaultArgCrash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2004-11-27-FriendDefaultArgCrash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
-// PR447
-
-namespace nm {
-  struct str {
-    friend int foo(int arg = 0);
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-01-03-StaticInitializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-01-03-StaticInitializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-01-03-StaticInitializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-// REQUIRES: LP64
-
-struct S {
-  int  A[2];
-};
-
-// CHECK-NOT: llvm.global_ctor
-int XX = (int)(long)&(((struct S*)0)->A[1]);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-11-AnonymousUnion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-11-AnonymousUnion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-11-AnonymousUnion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-// Test anonymous union with members of the same size.
-int test1(float F) {
-  union {
-     float G;
-     int i;
-  };
-  G = F;
-  return i;
-}
-
-// test anonymous union with members of differing size.
-int test2(short F) {
-  volatile union {
-     short G;
-     int i;
-  };
-  G = F;
-  return i;
-}
-
-// Make sure that normal unions work.  duh :)
-volatile union U_t {
-  short S;
-  int i;
-} U;
-
-int test3(short s) {
-  U.S = s;
-  return U.i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-13-BadDynamicInit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-13-BadDynamicInit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-13-BadDynamicInit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// This testcase corresponds to PR509
-struct Data {
-  unsigned *data;
-  unsigned array[1];
-};
-
-// CHECK-NOT: llvm.global_ctors
-Data shared_null = { shared_null.array };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-14-BitFieldOffset.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-14-BitFieldOffset.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-14-BitFieldOffset.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-// CHECK-NOT: i32 6
-struct QVectorTypedData {
-    int size;
-    unsigned int sharable : 1;
-    unsigned short array[1];
-};
-
-void foo(QVectorTypedData *X) {
-  X->array[0] = 123;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-19-BitfieldStructCrash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-19-BitfieldStructCrash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-19-BitfieldStructCrash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-struct QChar {unsigned short X; QChar(unsigned short); } ;
-
-struct Command {
-        Command(QChar c) : c(c) {}
-        unsigned int type : 4;
-        QChar c;
-    };
-
-Command X(QChar('c'));
-
-void Foo(QChar );
-void bar() { Foo(X.c); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-19-UnnamedVirtualThunkArgument.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-19-UnnamedVirtualThunkArgument.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-19-UnnamedVirtualThunkArgument.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
-struct Foo  {
-    Foo();
-    virtual ~Foo();
-};
-
-struct Bar  {
-    Bar();
-    virtual ~Bar();
-    virtual bool test(bool) const;
-};
-
-struct Baz : public Foo, public Bar  {
-    Baz();
-    virtual ~Baz();
-    virtual bool test(bool) const;
-};
-
-bool Baz::test(bool) const  {
-    return true;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-20-BrokenReferenceTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-20-BrokenReferenceTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2005-02-20-BrokenReferenceTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
-void test(unsigned char *b, int rb) {
-  typedef unsigned char imgfoo[10][rb];
-  imgfoo &br = *(imgfoo *)b;
-
-  br[0][0] = 1;
-
-  rb = br[0][0];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-03-01-GimplifyCrash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-03-01-GimplifyCrash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-03-01-GimplifyCrash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-struct PrefMapElem {
-  virtual ~PrefMapElem();
-  unsigned int fPrefId;
-};
-
-int foo() {
-  PrefMapElem* fMap;
-  if (fMap[0].fPrefId == 1)
-    return 1;
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-03-06-C++RecurseCrash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-03-06-C++RecurseCrash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-03-06-C++RecurseCrash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-namespace std {
-  class exception { };
-
-  class type_info {
-  public:
-    virtual ~type_info();
-  };
-
-}
-
-namespace __cxxabiv1 {
-  class __si_class_type_info : public std::type_info {
-    ~__si_class_type_info();
-  };
-}
-
-class recursive_init: public std::exception {
-public:
-  virtual ~recursive_init() throw ();
-};
-
-recursive_init::~recursive_init() throw() { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-09-12-OpaqueStructCrash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-09-12-OpaqueStructCrash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-09-12-OpaqueStructCrash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-
-struct A {
-   virtual ~A();
-};
-
-template <typename Ty>
-struct B : public A {
-   ~B () { delete [] val; }
-private:
-     Ty* val;
-};
-
-template <typename Ty>
-struct C : public A {
-   C ();
-   ~C ();
-};
-
-template <typename Ty>
-struct D : public A {
-     D () {}
-   private:
-     B<C<Ty> > blocks;
-};
-
-template class D<double>;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-10-30-ClassBitfield.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-10-30-ClassBitfield.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-10-30-ClassBitfield.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// PR954
-
-struct _Refcount_Base   {
-  unsigned long _M_ref_count;
-  int _M_ref_count_lock;
-  _Refcount_Base() : _M_ref_count(0) {}
-};
-
-struct _Rope_RopeRep : public _Refcount_Base
-{
-public:
-  int _M_tag:8;
-};
-
-int foo(_Rope_RopeRep* r) { return r->_M_tag; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-11-20-GlobalSymbols.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-11-20-GlobalSymbols.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-11-20-GlobalSymbols.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// PR1013
-// Check to make sure debug symbols use the correct name for globals and
-// functions.  Will not assemble if it fails to.
-// RUN: %clang_cc1 -emit-llvm -g -o - %s | FileCheck %s
-
-// CHECK: f\01oo"
-int foo __asm__("f\001oo");
-
-int bar() {
-  return foo;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-11-30-ConstantExprCrash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-11-30-ConstantExprCrash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2006-11-30-ConstantExprCrash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-// PR1027
-
-struct sys_var {
-  unsigned name_length;
-
-  bool no_support_one_shot;
-  sys_var() {}
-};
-
-
-struct sys_var_thd : public sys_var {
-};
-
-extern sys_var_thd sys_auto_is_null;
-
-sys_var *getsys_variables() {
-  return &sys_auto_is_null;
-}
-
-sys_var *sys_variables = &sys_auto_is_null;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-01-02-UnboundedArray.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-01-02-UnboundedArray.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-01-02-UnboundedArray.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// Make sure unbounded arrays compile with debug information.
-//
-// RUN: %clang_cc1 -emit-llvm -g %s -o -
-
-// PR1068
-
-struct Object {
-  char buffer[];
-};
-
-int main(int argc, char** argv) {
-  new Object;
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-01-06-PtrMethodInit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-01-06-PtrMethodInit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-01-06-PtrMethodInit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple i386-apple-macosx10.7.2
-// PR1084
-
-extern "C"
-{
-  typedef unsigned char PRUint8;
-  typedef unsigned int PRUint32;
-}
-typedef PRUint32 nsresult;
-struct nsID
-{
-};
-typedef nsID nsIID;
-class nsISupports
-{
-};
-extern "C++"
-{
-  template < class T > struct nsCOMTypeInfo
-  {
-    static const nsIID & GetIID ()
-    {
-    }
-  };
-}
-
-class nsIDOMEvent:public nsISupports
-{
-};
-class nsIDOMEventListener:public nsISupports
-{
-public:static const nsIID & GetIID ()
-  {
-  }
-  virtual nsresult
-    __attribute__ ((regparm (0), cdecl)) HandleEvent (nsIDOMEvent * event) =
-    0;
-};
-class nsIDOMMouseListener:public nsIDOMEventListener
-{
-public:static const nsIID & GetIID ()
-  {
-    static const nsIID iid = {
-    };
-  }
-  virtual nsresult
-    __attribute__ ((regparm (0),
-		    cdecl)) MouseDown (nsIDOMEvent * aMouseEvent) = 0;
-};
-typedef
-typeof (&nsIDOMEventListener::HandleEvent)
-  GenericHandler;
-     struct EventDispatchData
-     {
-       PRUint32 message;
-       GenericHandler method;
-       PRUint8 bits;
-     };
-     struct EventTypeData
-     {
-       const EventDispatchData *events;
-       int numEvents;
-       const nsIID *iid;
-     };
-     static const EventDispatchData sMouseEvents[] = {
-       {
-	(300 + 2),
-	reinterpret_cast < GenericHandler > (&nsIDOMMouseListener::MouseDown),
-	0x01}
-     };
-static const EventTypeData sEventTypes[] = {
-  {
-   sMouseEvents, (sizeof (sMouseEvents) / sizeof (sMouseEvents[0])),
-   &nsCOMTypeInfo < nsIDOMMouseListener >::GetIID ()}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFields-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFields-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFields-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-#ifdef PACKED
-#define P __attribute__((packed))
-#else
-#define P
-#endif
-
-struct P M_Packed {
-  unsigned int l_Packed;
-  unsigned short k_Packed : 6,
-    i_Packed : 15,
-    j_Packed : 11;
-
-};
-
-struct M_Packed sM_Packed;
-
-int testM_Packed (void) {
-  struct M_Packed x;
-  return (x.i_Packed != 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsOverlap-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsOverlap-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsOverlap-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-#ifdef PACKED
-#define P __attribute__((packed))
-#else
-#define P
-#endif
-
-struct P M_Packed {
-  unsigned long sorted : 1;
-  unsigned long from_array : 1;
-  unsigned long mixed_encoding : 1;
-  unsigned long encoding : 8;
-  unsigned long count : 21;
-
-};
-
-struct M_Packed sM_Packed;
-
-int testM_Packed (void) {
-  struct M_Packed x;
-  return (x.count != 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsOverlap.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsOverlap.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsOverlap.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-
-#ifdef PACKED
-#define P __attribute__((packed))
-#else
-#define P
-#endif
-
-struct P M_Packed {
-  unsigned int l_Packed;
-  unsigned short k_Packed : 6,
-    i_Packed : 15;
-  char c;
-
-};
-
-struct M_Packed sM_Packed;
-
-int testM_Packed (void) {
-  struct M_Packed x;
-  return (x.i_Packed != 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsSmall.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsSmall.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-PackedBitFieldsSmall.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-
-#ifdef PACKED
-// This is an example where size of Packed struct is smaller then
-// the size of bit field type.
-#define P __attribute__((packed))
-#else
-#define P
-#endif
-
-struct P M_Packed {
-  unsigned long long X:50;
-  unsigned Y:2;
-};
-
-struct M_Packed sM_Packed;
-
-int testM_Packed (void) {
-  struct M_Packed x;
-  return (0 != x.Y);
-}
-
-int testM_Packed2 (void) {
-  struct M_Packed x;
-  return (0 != x.X);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-StructPackedFieldUnpacked.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-StructPackedFieldUnpacked.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-05-StructPackedFieldUnpacked.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-
-#ifdef PACKED
-#define P __attribute__((packed))
-#else
-#define P
-#endif
-
-struct UnPacked {
- 	int X;
-	int Y;
-};
-
-struct P M_Packed {
-  unsigned char A;
-  struct UnPacked B;
-};
-
-struct M_Packed sM_Packed;
-
-int testM_Packed (void) {
-  struct M_Packed x;
-  return (x.B.Y != 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-10-PackedUnion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-10-PackedUnion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-10-PackedUnion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-extern "C" {
-
-#pragma pack(push, 2)
-  typedef struct ABC* abc;
-
-  struct ABCS {
-    float red;
-    float green;
-    float blue;
-    float alpha;
-  };
-
-  typedef void (*XYZ)();
-#pragma pack(pop)
-}
-
-
-union ABCU {
-  ABCS color;
-  XYZ bg;
-};
-
-struct AData {
-  ABCU data;
-};
-
-class L {
- public:
-  L() {}
-  L(const L& other);
-
- private:
-  AData fdata;
-};
-
-
-L::L(const L& other)
-{
-  fdata = other.fdata;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-14-FNoBuiltin.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-14-FNoBuiltin.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-04-14-FNoBuiltin.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -fno-builtin -o - | FileCheck %s
-// Check that -fno-builtin is honored.
-
-extern "C" int printf(const char*, ...);
-void foo(const char *msg) {
-  // CHECK: call{{.*}}printf
-	printf("%s\n",msg);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-05-03-VectorInit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-05-03-VectorInit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-05-03-VectorInit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -O0 -o -
-// PR1378
-
-typedef float v4sf __attribute__((vector_size(16)));
-
-typedef v4sf float4;
-
-static float4 splat4(float a)
-{
-  float4 tmp = {a,a,a,a};
-  return tmp;
-}
-
-float4 foo(float a)
-{
-  return splat4(a);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-07-29-RestrictPtrArg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-07-29-RestrictPtrArg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-07-29-RestrictPtrArg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-void foo(int * __restrict myptr1, int * myptr2) {
-  // CHECK: noalias
-  myptr1[0] = 0;
-  myptr2[0] = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-07-29-RestrictRefArg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-07-29-RestrictRefArg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-07-29-RestrictRefArg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-void foo(int & __restrict myptr1, int & myptr2) {
-  // CHECK: noalias
-  myptr1 = 0;
-  myptr2 = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-09-10-RecursiveTypeResolution.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-09-10-RecursiveTypeResolution.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-09-10-RecursiveTypeResolution.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// PR1634
-
-namespace Manta
-{
-  class CallbackHandle
-  {
-  protected:virtual ~ CallbackHandle (void)
-    {
-    }
-  };
-template < typename Data1 > class CallbackBase_1Data:public CallbackHandle
-  {
-  };
-}
-
-namespace __gnu_cxx
-{
-  template < typename _Iterator, typename _Container >
-  class __normal_iterator
-  {
-    _Iterator _M_current;
-  };
-}
-
-namespace std
-{
-  template < typename _Tp > struct allocator
-  {
-    typedef _Tp *pointer;
-  };
-  template < typename _InputIterator,
-    typename _Tp > inline void find (_InputIterator __last,
-					       const _Tp & __val)
-  {
-  };
-}
-
-namespace Manta
-{
-  template < typename _Tp, typename _Alloc> struct _Vector_base
-  {
-    struct _Vector_impl
-    {
-      _Tp *_M_start;
-    };
-  public:
-    _Vector_impl _M_impl;
-  };
-  template < typename _Tp, typename _Alloc = std::allocator < _Tp > >
-  class vector:protected _Vector_base < _Tp,_Alloc >
-  {
-  public:
-    typedef __gnu_cxx::__normal_iterator < typename _Alloc::pointer,
-      vector < _Tp, _Alloc > > iterator;
-    iterator end ()
-    {
-    }
-  };
-  class MantaInterface
-  {
-  };
-  class RTRT
-  {
-    virtual CallbackHandle *registerTerminationCallback (CallbackBase_1Data <
-							 MantaInterface * >*);
-    virtual void unregisterCallback (CallbackHandle *);
-    typedef vector < CallbackBase_1Data < int >*>PRCallbackMapType;
-    PRCallbackMapType parallelPreRenderCallbacks;
-  };
-}
-using namespace Manta;
-CallbackHandle *
-RTRT::registerTerminationCallback (CallbackBase_1Data < MantaInterface * >*cb)
-{
-  return cb;
-}
-
-void
-RTRT::unregisterCallback (CallbackHandle * callback)
-{
-  {
-    typedef CallbackBase_1Data < int > callback_t;
-    callback_t *cb = static_cast < callback_t * >(callback);
-    find (parallelPreRenderCallbacks.end (), cb);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-10-01-StructResize.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-10-01-StructResize.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2007-10-01-StructResize.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
-#pragma pack(4)
-
-struct Bork {
-  unsigned int f1 : 3;
-  unsigned int f2 : 30;
-};
-
-int Foo(Bork *hdr) {
-  hdr->f1 = 7;
-  hdr->f2 = 927;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2008-01-12-VecInit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2008-01-12-VecInit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2008-01-12-VecInit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// rdar://5685492
-
-typedef int __attribute__((vector_size(16))) v;
-v vt = {1, 2, 3, 4};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2008-05-07-CrazyOffsetOf.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2008-05-07-CrazyOffsetOf.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2008-05-07-CrazyOffsetOf.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// rdar://5914926
-
-struct bork {
-  struct bork *next_local;
-  char * query;
-};
-int offset =  (char *) &(((struct bork *) 0x10)->query) - (char *) 0x10;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-03-17-dbg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-03-17-dbg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-03-17-dbg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null -g
-
-template <typename T1,typename T2>
-inline void f(const T1&,const T2&) { }
-
-template <typename T1,typename T2,void F(const T1&,const T2&)>
-struct A {
-    template <typename T> void g(T& i) { }
-};
-
-int main() {
-    int i;
-    A<int,int,f> a;
-    a.g(i);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-04-23-bool2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-04-23-bool2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-04-23-bool2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-// g++.old-deja/g++.jason/bool2.C from gcc testsuite.
-// Crashed before 67975 went in.
-struct F {
-  bool b1 : 1;
-  bool b2 : 7;
-};
-
-int main()
-{
-  F f = { true, true };
-
-  if (int (f.b1) != 1)
-    return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-05-04-PureConstNounwind.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-05-04-PureConstNounwind.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-05-04-PureConstNounwind.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fexceptions -emit-llvm %s -o - | FileCheck %s
-int c(void) __attribute__((const));
-int p(void) __attribute__((pure));
-int t(void);
-
-// CHECK: define i32 @_Z1fv() [[TF:#[0-9]+]] {
-int f(void) {
-  // CHECK: call i32 @_Z1cv() [[NUW_RN_CALL:#[0-9]+]]
-  // CHECK: call i32 @_Z1pv() [[NUW_RO_CALL:#[0-9]+]]
-  return c() + p() + t();
-}
-
-// CHECK: declare i32 @_Z1cv() [[NUW_RN:#[0-9]+]]
-// CHECK: declare i32 @_Z1pv() [[NUW_RO:#[0-9]+]]
-// CHECK: declare i32 @_Z1tv() [[TF]]
-
-// CHECK: attributes [[TF]] = { {{.*}} }
-// CHECK: attributes [[NUW_RN]] = { nounwind readnone{{.*}} }
-// CHECK: attributes [[NUW_RO]] = { nounwind readonly{{.*}} }
-// CHECK: attributes [[NUW_RN_CALL]] = { nounwind readnone }
-// CHECK: attributes [[NUW_RO_CALL]] = { nounwind readonly }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-06-16-DebugInfoCrash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-06-16-DebugInfoCrash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-06-16-DebugInfoCrash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null -g
-// This crashes if we try to emit debug info for TEMPLATE_DECL members.
-template <class T> class K2PtrVectorBase {};
-template <class T> class K2Vector {};
-template <class U > class K2Vector<U*> : public K2PtrVectorBase<U*> {};
-class ScriptInfoManager {
-  void PostRegister() ;
-  template <class SI> short ReplaceExistingElement(K2Vector<SI*>& v);
-};
-void ScriptInfoManager::PostRegister() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-07-16-Using.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-07-16-Using.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-07-16-Using.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
-namespace A {
-  typedef int B;
-}
-struct B {
-};
-using ::A::B;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-08-05-ZeroInitWidth.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-08-05-ZeroInitWidth.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-08-05-ZeroInitWidth.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-// rdar://7114564
-struct A {
-  unsigned long long : (sizeof(unsigned long long) * 8) - 16;
-};
-struct B {
-  A a;
-};
-struct B b = {
-  {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-08-11-VectorRetTy.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-08-11-VectorRetTy.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-08-11-VectorRetTy.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o /dev/null
-// <rdar://problem/7096460>
-typedef void (*Func) ();
-typedef long long m64 __attribute__((__vector_size__(8), __may_alias__));
-static inline m64 __attribute__((__always_inline__, __nodebug__)) _mm_set1_pi16() {}
-template <class MM>
-static void Bork() {
-  const m64 mmx_0x00ff = _mm_set1_pi16();
-}
-struct A {};
-Func arr[] = {
-  Bork<A>
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-09-09-packed-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-09-09-packed-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-09-09-packed-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i386-apple-darwin11 %s -o /dev/null
-class X {
- public:
-  virtual ~X();
-  short y;
-};
-#pragma pack(push, 1)
-class Z : public X {
- public: enum { foo = ('x') };
- virtual int y() const;
-};
-#pragma pack(pop)
-class Y : public X {
-public: enum { foo = ('y'), bar = 0 };
-};
-X x;
-Y y;
-Z z;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-10-27-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-10-27-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-10-27-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-// Radar 7328944
-
-typedef struct
-{
-	unsigned short a : 1;
-	unsigned short b : 2;
-	unsigned short c : 1;
-	unsigned short d : 1;
-	unsigned short e : 1;
-	unsigned short f : 1;
-	unsigned short g : 2;
-	unsigned short : 7;
-	union
-	{
-		struct
-		{
-			unsigned char h : 1;
-			unsigned char i : 1;
-			unsigned char j : 1;
-			unsigned char : 5;
-		};
-		struct
-		{
-			unsigned char k : 3;
-			unsigned char : 5;
-		};
-	};
-	unsigned char : 8;
-} tt;
-
-typedef struct
-{
- unsigned char s;
- tt t;
- unsigned int u;
-} ttt;
-
-ttt X = {
-    4,
-       { 0 },
-	55,
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-12-23-MissingSext.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-12-23-MissingSext.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2009-12-23-MissingSext.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-unknown-unknown -emit-llvm -o - | FileCheck %s
-// The store of p.y into the temporary was not
-// getting extended to 32 bits, so uninitialized
-// bits of the temporary were used.  7366161.
-struct foo {
-  char x:8;
-  signed int y:24;
-};
-int bar(struct foo p, int x) {
-// CHECK: bar
-// CHECK: %[[val:.*]] = load i32* {{.*}}
-// CHECK-NEXT:          ashr i32 %[[val]]
-// CHECK:             = load i32* {{.*}}
-// CHECK:             = load i32* {{.*}}
-// CHECK: %[[val:.*]] = load i32* {{.*}}
-// CHECK-NEXT:          ashr i32 %[[val]]
-  x = (p.y > x ? x : p.y);
-  return x;
-// CHECK: ret
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-03-09-AnonAggregate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-03-09-AnonAggregate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-03-09-AnonAggregate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -g -S -o %t %s
-// PR: 6554
-// More then one anonymous aggregates on one line creates chaos when MDNode uniquness is 
-// combined with RAUW operation.
-// This test case causes crashes if malloc is configured to trip buffer overruns.
-class MO {
-
-  union {       struct {       union {    int BA;       } Val;       int Offset;     } OffsetedInfo;   } Contents; 
-
-};
-
-class MO m;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-10-Var-DbgInfo.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-10-Var-DbgInfo.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-10-Var-DbgInfo.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -O0 -g %s -o /dev/null
-// PR 7104
-
-struct A {
-  int Ai;
-};
-
-struct B : public A {};
-struct C : public B {};
-
-const char * f(int C::*){ return ""; }
-int f(int B::*) { return 1; }
-
-struct D : public C {};
-
-const char * g(int B::*){ return ""; }
-int g(int D::*) { return 1; }
-
-void test()
-{
-  int i = f(&A::Ai);
-
-  const char * str = g(&A::Ai);
-}
-
-// conversion of B::* to C::* is better than conversion of A::* to C::*
-typedef void (A::*pmfa)();
-typedef void (B::*pmfb)();
-typedef void (C::*pmfc)();
-
-struct X {
-  operator pmfa();
-  operator pmfb();
-};
-
-
-void g(pmfc);
-
-void test2(X x)
-{
-  g(x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-11-alwaysinlineinstantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-11-alwaysinlineinstantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-11-alwaysinlineinstantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-// CHECK-NOT: ZN12basic_stringIcEC1Ev
-// CHECK: ZN12basic_stringIcED1Ev
-// CHECK: ZN12basic_stringIcED1Ev
-template<class charT>
-class basic_string
-{
-public:
-	basic_string();
-	~basic_string();
-};
-
-template <class charT>
-__attribute__ ((__visibility__("hidden"), __always_inline__)) inline
-basic_string<charT>::basic_string()
-{
-}
-
-template <class charT>
-inline
-basic_string<charT>::~basic_string()
-{
-}
-
-typedef basic_string<char> string;
-
-extern template class basic_string<char>;
-
-int main()
-{
-	string s;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-12-PtrToMember-Dbg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-12-PtrToMember-Dbg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-05-12-PtrToMember-Dbg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-//RUN: %clang_cc1 -emit-llvm -g -o - %s | FileCheck %s
-//CHECK: DW_TAG_auto_variable
-class Foo
-{
- public:
-  int x;
-  int y;
-  Foo (int i, int j) { x = i; y = j; }
-};
-
-
-Foo foo(10, 11);
-
-int main() {
-  int Foo::* pmi = &Foo::y;
-  return foo.*pmi;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-21-LocalVarDbg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-21-LocalVarDbg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-21-LocalVarDbg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm %s -o - | FileCheck %s
-// Do not use function name to create named metadata used to hold
-// local variable info. For example. llvm.dbg.lv.~A is an invalid name.
-
-// CHECK-NOT: llvm.dbg.lv.~A
-class A {
-public:
-  ~A() { int i = 0; i++; }
-};
-
-int foo(int i) {
-  A a;
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-22-BitfieldInit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-22-BitfieldInit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-22-BitfieldInit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g %s -o -
-struct TEST2
-{
-  int subid:32;
-  int :0;
-};
-
-typedef struct _TEST3
-{
-  TEST2 foo;
-  TEST2 foo2;
-} TEST3;
-
-TEST3 test =
-  {
-    {0},
-    {0}
-  };
-
-int main() { return 0; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-22-ZeroBitfield.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-22-ZeroBitfield.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-06-22-ZeroBitfield.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g %s -o -
-struct s8_0 { unsigned : 0; };
-struct s8_1 { double x; };
-struct s8 { s8_0 a; s8_1 b; };
-s8 f8() { return s8(); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-07-23-DeclLoc.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-07-23-DeclLoc.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2010-07-23-DeclLoc.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g %s -o - | FileCheck %s
-// Require the template function declaration refer to the correct filename.
-// First, locate the function decl in metadata, and pluck out the file handle:
-// CHECK: metadata [[filehandle:![0-9]+]], {{[^,]*}}, {{.*extract_dwarf_data_from_header.*extract_dwarf_data_from_header.*extract_dwarf_data_from_header.*[^ ]+", }}
-// Second: Require that filehandle refer to the correct filename:
-// CHECK: [[filehandle]] = {{.*}}decl_should_be_here.hpp"
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-typedef unsigned char uint8_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-namespace std {
-  template<typename _Tp>   class auto_ptr   {
-    _Tp* _M_ptr;
-  public:
-    typedef _Tp element_type;
-    auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) {    }
-    element_type&     operator*() const throw()     {    }
-  };
-}
-class Pointer32 {
-public:
-  typedef uint32_t ptr_t;
-  typedef uint32_t size_t;
-};
-class Pointer64 {
-public:
-  typedef uint64_t ptr_t;
-  typedef uint64_t size_t;
-};
-class BigEndian {};
-class LittleEndian {};
-template <typename _SIZE, typename _ENDIANNESS> class SizeAndEndianness {
-public:
-  typedef _SIZE SIZE;
-};
-typedef SizeAndEndianness<Pointer32, LittleEndian> ISA32Little;
-typedef SizeAndEndianness<Pointer32, BigEndian> ISA32Big;
-typedef SizeAndEndianness<Pointer64, LittleEndian> ISA64Little;
-typedef SizeAndEndianness<Pointer64, BigEndian> ISA64Big;
-template <typename SIZE> class TRange {
-protected:
-  typename SIZE::ptr_t _location;
-  typename SIZE::size_t _length;
-  TRange(typename SIZE::ptr_t location, typename SIZE::size_t length) : _location(location), _length(length) {  }
-};
-template <typename SIZE, typename T> class TRangeValue : public TRange<SIZE> {
-  T _value;
-public:
-  TRangeValue(typename SIZE::ptr_t location, typename SIZE::size_t length, T value) : TRange<SIZE>(location, length), _value(value) {};
-};
-template <typename SIZE> class TAddressRelocator {};
-class CSCppSymbolOwner{};
-class CSCppSymbolOwnerData{};
-template <typename SIZE> class TRawSymbolOwnerData
-{
-  TRangeValue< SIZE, uint8_t* > _TEXT_text_section;
-  const char* _dsym_path;
-  uint32_t _dylib_current_version;
-  uint32_t _dylib_compatibility_version;
-public:
-  TRawSymbolOwnerData() :
-    _TEXT_text_section(0, 0, __null), _dsym_path(__null), _dylib_current_version(0), _dylib_compatibility_version(0) {}
-};
-template <typename SIZE_AND_ENDIANNESS> class TExtendedMachOHeader {};
-# 16 "decl_should_be_here.hpp"
-template <typename SIZE_AND_ENDIANNESS> void extract_dwarf_data_from_header(TExtendedMachOHeader<SIZE_AND_ENDIANNESS>& header,
-                                                                            TRawSymbolOwnerData<typename SIZE_AND_ENDIANNESS::SIZE>& symbol_owner_data,
-                                                                            TAddressRelocator<typename SIZE_AND_ENDIANNESS::SIZE>* address_relocator) {}
-struct CSCppSymbolOwnerHashFunctor {
-  size_t operator()(const CSCppSymbolOwner& symbol_owner) const {
-# 97 "wrong_place_for_decl.cpp"
-  }
-};
-template <typename SIZE_AND_ENDIANNESS> CSCppSymbolOwnerData* create_symbol_owner_data_arch_specific(CSCppSymbolOwner* symbol_owner, const char* dsym_path) {
-  typedef typename SIZE_AND_ENDIANNESS::SIZE SIZE;
-  std::auto_ptr< TRawSymbolOwnerData<SIZE> > data(new TRawSymbolOwnerData<SIZE>());
-  std::auto_ptr< TExtendedMachOHeader<SIZE_AND_ENDIANNESS> > header;
-  extract_dwarf_data_from_header(*header, *data, (TAddressRelocator<typename SIZE_AND_ENDIANNESS::SIZE>*)__null);
-}
-CSCppSymbolOwnerData* create_symbol_owner_data2(CSCppSymbolOwner* symbol_owner, const char* dsym_path) {
-  create_symbol_owner_data_arch_specific< ISA32Little >(symbol_owner, dsym_path);
-  create_symbol_owner_data_arch_specific< ISA32Big >(symbol_owner, dsym_path);
-  create_symbol_owner_data_arch_specific< ISA64Little >(symbol_owner, dsym_path);
-  create_symbol_owner_data_arch_specific< ISA64Big >(symbol_owner, dsym_path);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2011-12-19-init-list-ctor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2011-12-19-init-list-ctor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2011-12-19-init-list-ctor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple x86_64-linux-gnu | FileCheck %s
-
-struct A {
-  A(const char *);
-};
-
-// CHECK: @arr = global [3 x %struct.S] zeroinitializer
-// CHECK: @.str = {{.*}}constant [6 x i8] c"hello\00"
-// CHECK: @.str1 = {{.*}}constant [6 x i8] c"world\00"
-// CHECK: @.str2 = {{.*}}constant [8 x i8] c"goodbye\00"
-
-struct S {
-  int n;
-  A s;
-} arr[] = {
-  { 0, "hello" },
-  { 1, "world" },
-  { 2, "goodbye" }
-};
-
-// CHECK: store i32 0, i32* getelementptr inbounds ([3 x %struct.S]* @arr, i64 0, i64 0, i32 0)
-// CHECK: call void @_ZN1AC1EPKc(%struct.A* getelementptr inbounds ([3 x %struct.S]* @arr, i64 0, i64 0, i32 1), i8* getelementptr inbounds ([6 x i8]* @.str, i32 0, i32 0))
-// CHECK: store i32 1, i32* getelementptr inbounds ([3 x %struct.S]* @arr, i64 0, i64 1, i32 0)
-// CHECK: call void @_ZN1AC1EPKc(%struct.A* getelementptr inbounds ([3 x %struct.S]* @arr, i64 0, i64 1, i32 1), i8* getelementptr inbounds ([6 x i8]* @.str1, i32 0, i32 0))
-// CHECK: store i32 2, i32* getelementptr inbounds ([3 x %struct.S]* @arr, i64 0, i64 2, i32 0)
-// CHECK: call void @_ZN1AC1EPKc(%struct.A* getelementptr inbounds ([3 x %struct.S]* @arr, i64 0, i64 2, i32 1), i8* getelementptr inbounds ([8 x i8]* @.str2, i32 0, i32 0))

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2012-02-06-VecInitialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2012-02-06-VecInitialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2012-02-06-VecInitialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -triple i386-apple-darwin %s | FileCheck %s
-// PR11930
-
-typedef char vec_t __attribute__ ((__ext_vector_type__ (8)));
-void h() {
-// CHECK: store <8 x i8>
-  vec_t v(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2012-03-16-StoreAlign.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2012-03-16-StoreAlign.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/2012-03-16-StoreAlign.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -triple x86_64-apple-darwin %s | FileCheck %s
-// <rdar://problem/11043589>
-
-struct Length {
-  Length(double v) {
-    m_floatValue = static_cast<float>(v);
-  }
-
-  bool operator==(const Length& o) const {
-    return getFloatValue() == o.getFloatValue();
-  }
-  bool operator!=(const Length& o) const { return !(*this == o); }
-private:
-  float getFloatValue() const {
-    return m_floatValue;
-  }
-  float m_floatValue;
-};
-
-
-struct Foo {
-  static Length inchLength(double inch);
-  static bool getPageSizeFromName(const Length &A) {
-    static const Length legalWidth = inchLength(8.5);
-    if (A != legalWidth) return true;
-    return false;
-  }
-};
-
-// CHECK: @_ZZN3Foo19getPageSizeFromNameERK6LengthE10legalWidth = linkonce_odr global %struct.Length zeroinitializer, align 4
-// CHECK: store float %{{.*}}, float* getelementptr inbounds (%struct.Length* @_ZZN3Foo19getPageSizeFromNameERK6LengthE10legalWidth, i32 0, i32 0), align 1
-
-bool bar(Length &b) {
-  Foo f;
-  return f.getPageSizeFromName(b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/DynArrayInit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/DynArrayInit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/DynArrayInit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -O3 -emit-llvm -o - %s | FileCheck %s
-// PR7490
-
-// CHECK: define signext i8 @_Z2f0v
-// CHECK: ret i8 0
-// CHECK: }
-inline void* operator new[](unsigned long, void* __p)  { return __p; }
-static void f0_a(char *a) {
-  new (a) char[4]();
-}
-char f0() {
-  char a[4];
-  f0_a(a);
-  return a[0] + a[1] + a[2] + a[3];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR4827-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR4827-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR4827-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-struct A;
-struct B;
-extern A *f();
-void a() { (B *) f(); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR4983-constructor-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR4983-constructor-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR4983-constructor-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-struct A {
-  A(const char *s){}
-};
-
-struct B {
-  A a;
-  
-  B() : a("test") { }
-};
-
-void f() {
-    A a("test");
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5050-constructor-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5050-constructor-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5050-constructor-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-struct A { A(const A&, int i1 = 1); };
-
-struct B : A { };
-
-A f(const B &b) {
-  return b;
-}
-
-// CHECK-LP64: callq    __ZN1AC1ERKS_i
-
-// CHECK-LP32: calll     L__ZN1AC1ERKS_i
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5093-static-member-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5093-static-member-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5093-static-member-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-struct a {
-  static void f();
-};
-
-void g(a *a) {
-  // CHECK: call void @_ZN1a1fEv()
-  a->f();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5834-constructor-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5834-constructor-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5834-constructor-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-
-// PR5834
-struct ASTMultiMover {};
-struct ASTMultiPtr {
-  ASTMultiPtr();
-  ASTMultiPtr(ASTMultiPtr&);
-  ASTMultiPtr(ASTMultiMover mover);
-  operator ASTMultiMover();
-};
-void f1() {
-  extern void f0(ASTMultiPtr);
-  f0(ASTMultiPtr());
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5863-unreachable-block.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5863-unreachable-block.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR5863-unreachable-block.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -emit-llvm-only %s
-
-// PR5863
-class E { };
-
-void P1() {
- try {
-  int a=0, b=0;
-  if (a > b) // simply filling in 0 or 1 doesn't trigger the assertion
-    throw E(); // commenting out 'if' or 'throw' 'fixes' the assertion failure
-  try { } catch (...) { } // empty try/catch block needed for failure
- } catch (...) { } // this try/catch block needed for failure
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR6474.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR6474.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/PR6474.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-
-namespace test0 {
-template <typename T> struct X {
-  virtual void foo();
-  virtual void bar();
-  virtual void baz();
-};
-
-template <typename T> void X<T>::foo() {}
-template <typename T> void X<T>::bar() {}
-template <typename T> void X<T>::baz() {}
-
-template <> void X<char>::foo() {}
-template <> void X<char>::bar() {}
-}
-
-namespace test1 {
-template <typename T> struct X {
-  virtual void foo();
-  virtual void bar();
-  virtual void baz();
-};
-
-template <typename T> void X<T>::foo() {}
-template <typename T> void X<T>::bar() {}
-template <typename T> void X<T>::baz() {}
-
-template <> void X<char>::bar() {}
-template <> void X<char>::foo() {}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/__null.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/__null.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/__null.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-int* a = __null;
-int b = __null;
-
-void f() {
-  int* c = __null;
-  int d = __null;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/aarch64-arguments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/aarch64-arguments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/aarch64-arguments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple aarch64-none-linux -emit-llvm -w -o - %s | FileCheck -check-prefix=PCS %s
-
-// PCS: define void @{{.*}}(i8 %a
-struct s0 {};
-void f0(s0 a) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/aarch64-cxxabi.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/aarch64-cxxabi.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/aarch64-cxxabi.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -w -o - %s | FileCheck %s
-
-// Check differences between the generic Itanium ABI, the AArch32 version and
-// the AArch64 version.
-
-////////////////////////////////////////////////////////////////////////////////
-
-// The ABI says that the key function is the "textually first, non-inline,
-// non-pure, virtual member function". The generic version decides this after
-// the completion of the class definition; the AArch32 version decides this at
-// the end of the translation unit.
-
-// We construct a class which needs a VTable here under generic ABI, but not
-// AArch32.
-
-// (see next section for explanation of guard)
-// CHECK: @_ZGVZ15guard_variablesiE4mine = internal global i64 0
-
-// CHECK: @_ZTV16CheckKeyFunction =
-struct CheckKeyFunction {
-  virtual void foo();
-};
-
-// This is not inline when CheckKeyFunction is completed, so
-// CheckKeyFunction::foo is the key function. VTables should be emitted.
-inline void CheckKeyFunction::foo() {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-// Guard variables only specify and use the low bit to determine status, rather
-// than the low byte as in the generic Itanium ABI. However, unlike 32-bit ARM,
-// they *are* 64-bits wide so check that in case confusion has occurred.
-
-class Guarded {
-public:
-  Guarded(int i);
-  ~Guarded();
-};
-
-void guard_variables(int a) {
-  static Guarded mine(a);
-// CHECK: [[GUARDBIT:%[0-9]+]] = and i64 {{%[0-9]+}}, 1
-// CHECK: icmp eq i64 [[GUARDBIT]], 0
-
-  // As guards are 64-bit, these helpers should take 64-bit pointers.
-// CHECK: call i32 @__cxa_guard_acquire(i64*
-// CHECK: call void @__cxa_guard_release(i64*
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-// Member function pointers use the adj field to distinguish between virtual and
-// nonvirtual members. As a result the adjustment is shifted (if ptr was used, a
-// mask would be expected instead).
-
-class C {
-  int a();
-  virtual int b();
-};
-
-
-int member_pointer(C &c, int (C::*func)()) {
-// CHECK: ashr i64 %[[MEMPTRADJ:[0-9a-z.]+]], 1
-// CHECK: %[[ISVIRTUAL:[0-9]+]] = and i64 %[[MEMPTRADJ]], 1
-// CHECK: icmp ne i64 %[[ISVIRTUAL]], 0
-  return (c.*func)();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-// AArch64 PCS says that va_list type is based on "struct __va_list ..." in the
-// std namespace, which means it should mangle as "St9__va_list".
-
-// CHECK: @_Z7va_funcSt9__va_list
-void va_func(__builtin_va_list l) {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-// AArch64 constructors (like generic Itanium, but unlike AArch32) do not return
-// "this".
-
-void test_constructor() {
-  Guarded g(42);
-// CHECK: call void @_ZN7GuardedC1Ei
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-// In principle the AArch32 ABI allows this to be accomplished via a call to
-// __aeabi_atexit instead of __cxa_atexit. Clang doesn't make use of this at the
-// moment, but it's definitely not allowed for AArch64.
-
-// CHECK: call i32 @__cxa_atexit
-Guarded g(42);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/abstract-class-ctors-dtors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/abstract-class-ctors-dtors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/abstract-class-ctors-dtors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// Check that we dont emit the complete constructor/destructor for this class.
-struct A {
-  virtual void f() = 0;
-  A();
-  ~A();
-};
-
-// CHECK-NOT: define void @_ZN1AC1Ev
-// CHECK: define void @_ZN1AC2Ev
-// CHECK: define void @_ZN1AD1Ev
-// CHECK: define void @_ZN1AD2Ev
-A::A() { }
-
-A::~A() { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/address-of-fntemplate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/address-of-fntemplate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/address-of-fntemplate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-template <typename T> void f(T) {}
-template <typename T> void f() { }
-
-void test() {
-  // CHECK: @_Z1fIiEvT_
-  void (*p)(int) = &f;
-  
-  // CHECK: @_Z1fIiEvv
-  void (*p2)() = f<int>;
-}
-// CHECK: define linkonce_odr void @_Z1fIiEvT_
-// CHECK: define linkonce_odr void @_Z1fIiEvv
-
-namespace PR6973 {
-  template<typename T>
-  struct X {
-    void f(const T&);
-  };
-
-  template<typename T>
-  int g();
-
-  void h(X<int (*)()> xf) {
-    xf.f(&g<int>);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/alloca-align.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/alloca-align.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/alloca-align.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-struct s0 {
-  int Start, End;
-  unsigned Alignment;
-  int TheStores __attribute__((aligned(16)));
-};
-
-// CHECK: define void @f0
-// CHECK: alloca %struct.s0, align 16
-extern "C" void f0() {
-  (void) s0();
-}
-
-// CHECK: define void @f1
-// CHECK: alloca %struct.s0, align 16
-extern "C" void f1() {
-  (void) (struct s0) { 0, 0, 0, 0 };
-}
-
-// CHECK: define i32 @f2
-// CHECK: alloca %struct.s1, align 2
-struct s1 { short x; short y; };
-extern "C" struct s1 f2(int a, struct s1 *x, struct s1 *y) {
-  if (a)
-    return *x;
-  return *y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/anonymous-namespaces.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/anonymous-namespaces.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/anonymous-namespaces.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 -emit-llvm %s -o - > %t
-// RUN: FileCheck %s -check-prefix=1 < %t
-// RUN: FileCheck %s -check-prefix=2 < %t
-
-int f();
-
-namespace {
-  // CHECK-1: @_ZN12_GLOBAL__N_11bE = internal global i32 0
-  // CHECK-1: @_ZN12_GLOBAL__N_1L1cE = internal global i32 0
-  // CHECK-1: @_ZN12_GLOBAL__N_11D1dE = internal global i32 0
-  // CHECK-1: @_ZN12_GLOBAL__N_11aE = internal global i32 0
-  int a = 0;
-
-  int b = f();
-
-  static int c = f();
-
-  class D {
-    static int d;
-  };
-  
-  int D::d = f();
-
-  // Check for generation of a VTT with internal linkage
-  // CHECK-1: @_ZTSN12_GLOBAL__N_11X1EE = internal constant
-  struct X { 
-    struct EBase { };
-    struct E : public virtual EBase { virtual ~E() {} };
-  };
-
-  // CHECK-1: define internal i32 @_ZN12_GLOBAL__N_13fooEv()
-  int foo() {
-    return 32;
-  }
-
-  // CHECK-1: define internal i32 @_ZN12_GLOBAL__N_11A3fooEv()
-  namespace A {
-    int foo() {
-      return 45;
-    }
-  }
-}
-
-int concrete() {
-  return a + foo() + A::foo();
-}
-
-void test_XE() { throw X::E(); }
-
-// Miscompile on llvmc plugins.
-namespace test2 {
-  struct A {
-    template <class T> struct B {
-      static void foo() {}
-    };
-  };
-  namespace {
-    struct C;
-  }
-
-  // CHECK-2: define void @_ZN5test24testEv()
-  // CHECK-2:   call void @_ZN5test21A1BINS_12_GLOBAL__N_11CEE3fooEv()
-  void test() {
-    A::B<C>::foo();
-  }
-
-  // CHECK-2: define internal void @_ZN5test21A1BINS_12_GLOBAL__N_11CEE3fooEv()
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/anonymous-union-member-initializer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/anonymous-union-member-initializer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/anonymous-union-member-initializer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,191 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-// rdar://8818236
-namespace rdar8818236 {
-struct S {
-  char c2;
-  union {
-    char c;
-    int i;
-  };
-};
-
-// CHECK: @_ZN11rdar88182363fooE = global i64 4
-char S::*foo  = &S::c;
-}
-
-struct A {
-  union {
-    int a;
-    void* b;
-  };
-  
-  A() : a(0) { }
-};
-
-A a;
-
-namespace PR7021 {
-  struct X
-  {
-    union { long l; };
-  };
-
-  // CHECK: define void @_ZN6PR70211fENS_1XES0_
-  void f(X x, X z) {
-    X x1;
-
-    // CHECK: store i64 1, i64
-    x1.l = 1;
-
-    // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-    X x2(x1);
-
-    X x3;
-    // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-    x3 = x1;
-
-    // CHECK: ret void
-  }
-}
-
-namespace test2 {
-  struct A {
-    struct {
-      union {
-        int b;
-      };
-    };
-
-    A();
-  };
-
-  A::A() : b(10) { }
-  // CHECK: define void @_ZN5test21AC2Ev(
-  // CHECK-NOT: }
-  // CHECK: store i32 10
-  // CHECK: }
-}
-
-namespace PR10512 {
-  struct A {
-    A();
-    A(int);
-    A(long);
-
-    struct {
-      struct {int x;};
-      struct {int y;};
-    };
-  };
-
-  // CHECK: define void @_ZN7PR105121AC2Ev
-  // CHECK: [[THISADDR:%[a-zA-z0-9.]+]] = alloca [[A:%"struct[A-Za-z0-9:.]+"]]
-  // CHECK-NEXT: store [[A]]* [[THIS:%[a-zA-z0-9.]+]], [[A]]** [[THISADDR]]
-  // CHECK-NEXT: [[THIS1:%[a-zA-z0-9.]+]] = load [[A]]** [[THISADDR]]
-  // CHECK-NEXT: ret void
-  A::A() {}
-
-  // CHECK: define void @_ZN7PR105121AC2Ei
-  // CHECK: [[THISADDR:%[a-zA-z0-9.]+]] = alloca [[A:%"struct[A-Za-z0-9:.]+"]]
-  // CHECK-NEXT: [[XADDR:%[a-zA-z0-9.]+]] = alloca i32
-  // CHECK-NEXT: store [[A]]* [[THIS:%[a-zA-z0-9.]+]], [[A]]** [[THISADDR]]
-  // CHECK-NEXT: store i32 [[X:%[a-zA-z0-9.]+]], i32* [[XADDR]]
-  // CHECK-NEXT: [[THIS1:%[a-zA-z0-9.]+]] = load [[A]]** [[THISADDR]]
-  // CHECK-NEXT: {{getelementptr inbounds.*i32 0, i32 0}}
-  // CHECK-NEXT: {{getelementptr inbounds.*i32 0, i32 0}}
-  // CHECK-NEXT: {{getelementptr inbounds.*i32 0, i32 0}}
-  // CHECK-NEXT: [[TMP:%[a-zA-z0-9.]+]] = load i32* [[XADDR]]
-  // CHECK-NEXT: store i32 [[TMP]]
-  // CHECK-NEXT: ret void
-  A::A(int x) : x(x) { }
-
-  // CHECK: define void @_ZN7PR105121AC2El
-  // CHECK: [[THISADDR:%[a-zA-z0-9.]+]] = alloca [[A:%"struct[A-Za-z0-9:.]+"]]
-  // CHECK-NEXT: [[XADDR:%[a-zA-z0-9.]+]] = alloca i64
-  // CHECK-NEXT: store [[A]]* [[THIS:%[a-zA-z0-9.]+]], [[A]]** [[THISADDR]]
-  // CHECK-NEXT: store i64 [[X:%[a-zA-z0-9.]+]], i64* [[XADDR]]
-  // CHECK-NEXT: [[THIS1:%[a-zA-z0-9.]+]] = load [[A]]** [[THISADDR]]
-  // CHECK-NEXT: {{getelementptr inbounds.*i32 0, i32 0}}
-  // CHECK-NEXT: {{getelementptr inbounds.*i32 0, i32 1}}
-  // CHECK-NEXT: {{getelementptr inbounds.*i32 0, i32 0}}
-  // CHECK-NEXT: [[TMP:%[a-zA-z0-9.]+]] = load i64* [[XADDR]]
-  // CHECK-NEXT: [[CONV:%[a-zA-z0-9.]+]] = trunc i64 [[TMP]] to i32
-  // CHECK-NEXT: store i32 [[CONV]]
-  // CHECK-NEXT: ret void
-  A::A(long y) : y(y) { }
-}
-
-namespace test3 {
-  struct A {
-    union {
-      mutable char fibers[100];
-      struct {
-        void (*callback)(void*);
-        void *callback_value;
-      };
-    };
-
-    A();
-  };
-
-  A::A() : callback(0), callback_value(0) {}
-  // CHECK: define void @_ZN5test31AC2Ev(
-  // CHECK: [[THIS:%.*]] = load
-  // CHECK-NEXT: [[UNION:%.*]] = getelementptr inbounds {{.*}} [[THIS]], i32 0, i32 0
-  // CHECK-NEXT: [[STRUCT:%.*]] = bitcast {{.*}}* [[UNION]] to 
-  // CHECK-NEXT: [[CALLBACK:%.*]] = getelementptr inbounds {{.*}} [[STRUCT]], i32 0, i32 0
-  // CHECK: store 
-  // CHECK-NEXT: [[UNION:%.*]] = getelementptr inbounds {{.*}} [[THIS]], i32 0, i32 0
-  // CHECK-NEXT: [[STRUCT:%.*]] = bitcast {{.*}}* [[UNION]] to 
-  // CHECK-NEXT: [[CVALUE:%.*]] = getelementptr inbounds {{.*}} [[STRUCT]], i32 0, i32 1
-  // CHECK-NEXT: store i8* null, i8** [[CVALUE]]
-}
-
-struct S {
-  // CHECK: store i32 42
-  // CHECK: store i32 55
-  S() : x(42), y(55) {}
-  union {
-    struct {
-      int x;
-      union { int y; };
-    };
-  };
-} s;
-
-
-//PR8760 
-template <typename T> struct Foo {
-  Foo() : ptr(__nullptr) {}
-  union {
-    T *ptr;
-  };
-};
-Foo<int> f;
-
-namespace PR9683 {
-  struct QueueEntry {
-    union {
-      struct {
-        void* mPtr;
-        union {
-          unsigned mSubmissionTag;
-        };
-      };
-      unsigned mValue;
-    };
-    QueueEntry() {}
-  };
-  QueueEntry QE;
-}
-
-namespace PR13154 {
-  struct IndirectReferenceField {
-      struct {
-          float &x;
-      };
-      IndirectReferenceField(float &x);
-  };
-  IndirectReferenceField::IndirectReferenceField(float &xx) : x(xx) {}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-guard-variable.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-guard-variable.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-guard-variable.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 -S -o %t.s -mkernel -Xclang -verify %s
-
-// rdar://problem/9143356
-
-int foo();
-void test() {
-  static int y = 0;
-  static int x = foo(); // expected-error {{this initialization requires a guard variable, which the kernel does not support}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-call-2.C
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-call-2.C	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-call-2.C	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -fno-rtti -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @_ZTV1A = unnamed_addr constant [4 x i8*] [i8* null, i8* null, i8* bitcast (i8* (%struct.A*)* @_ZNK1A3abcEv to i8*), i8* null]
-// CHECK: @_ZTV4Base = unnamed_addr constant [4 x i8*] [i8* null, i8* null, i8* bitcast (i8* (%struct.A*)* @_ZNK4Base3abcEv to i8*), i8* null]
-// CHECK: @_ZTV8Derived2 = unnamed_addr constant [5 x i8*] [i8* null, i8* null, i8* null, i8* bitcast (i8* (%struct.A*)* @_ZNK8Derived23efgEv to i8*), i8* null]
-// CHECK: @_ZTV2D2 = unnamed_addr constant [5 x i8*] [i8* null, i8* null, i8* null, i8* bitcast (i8* (%struct.A*)* @_ZNK2D23abcEv to i8*), i8* null]
-
-struct A {
-  virtual const char* abc(void) const;
-};
-
-const char* A::abc(void) const {return "A"; };
-
-struct B : virtual A {
-  virtual void VF();
-};
-
-void B::VF() {}
-
-void FUNC(B* p) {
-// CHECK: [[T1:%.*]] = load i8* (%struct.A*)** getelementptr inbounds (i8* (%struct.A*)** bitcast ([4 x i8*]* @_ZTV1A to i8* (%struct.A*)**), i64 2)
-// CHECK-NEXT:  [[T2:%.*]] = call i8* [[T1]]
-  const char* c = p->A::abc();
-}
-
-
-// Test2
-struct Base { virtual char* abc(void) const; };
-
-char* Base::abc() const { return 0; }
-
-struct Derived : public Base {
-};
-
-void FUNC1(Derived* p) {
-// CHECK: [[U1:%.*]] = load i8* (%struct.A*)** getelementptr inbounds (i8* (%struct.A*)** bitcast ([4 x i8*]* @_ZTV4Base to i8* (%struct.A*)**), i64 2)
-// CHECK-NEXT:  [[U2:%.*]] = call i8* [[U1]]
-  char* c = p->Base::abc();
-}
-
-
-// Test3
-struct Base2 { };
-
-struct Derived2 : virtual Base2 {
-  virtual char* efg(void) const;
-};
-
-char* Derived2::efg(void) const { return 0; }
-
-void FUNC2(Derived2* p) {
-// CHECK: [[V1:%.*]] = load i8* (%struct.A*)** getelementptr inbounds (i8* (%struct.A*)** bitcast ([5 x i8*]* @_ZTV8Derived2 to i8* (%struct.A*)**), i64 3)
-// CHECK-NEXT:  [[V2:%.*]] = call i8* [[V1]]
-  char* c = p->Derived2::efg();
-}
-
-// Test4
-struct Base3 { };
-
-struct D1 : virtual Base3 {
-};
-
-struct D2 : virtual Base3 {
- virtual char *abc(void) const;
-};
-
-struct Sub : D1, D2 {
-};
-
-char* D2::abc(void) const { return 0; }
-
-void FUNC3(Sub* p) {
-// CHECK: [[W1:%.*]] = load i8* (%struct.A*)** getelementptr inbounds (i8* (%struct.A*)** bitcast ([5 x i8*]* @_ZTV2D2 to i8* (%struct.A*)**), i64 3)
-// CHECK-NEXT:  [[W2:%.*]] = call i8* [[W1]]
-  char* c = p->D2::abc();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-call.C
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-call.C	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-call.C	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -emit-llvm -o - %s | FileCheck %s
-
-struct Base { 
-  virtual void abc(void) const; 
-};
-
-void Base::abc(void) const {}
-
-void FUNC(Base* p) {
-  p->Base::abc();
-}
-
-// CHECK: getelementptr inbounds (void (%struct.Base*)** bitcast ([3 x i8*]* @_ZTV4Base to void (%struct.Base*)**), i64 2)
-// CHECK-NOT: call void @_ZNK4Base3abcEv

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -fno-rtti -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: define void @_ZN2B1D0Ev
-// CHECK: [[T1:%.*]] = load void (%struct.B1*)** getelementptr inbounds (void (%struct.B1*)** bitcast ([5 x i8*]* @_ZTV2B1 to void (%struct.B1*)**), i64 2)
-// CHECK-NEXT: call void [[T1]](%struct.B1* [[T2:%.*]])
-// CHECK: define void @_Z6DELETEP2B1
-// CHECK: [[T3:%.*]] = load void (%struct.B1*)** getelementptr inbounds (void (%struct.B1*)** bitcast ([5 x i8*]* @_ZTV2B1 to void (%struct.B1*)**), i64 2)
-// CHECK-NEXT:  call void [[T3]](%struct.B1* [[T4:%.*]])
-
-
-struct B1 { 
-  virtual ~B1(); 
-};
-
-B1::~B1() {}
-
-void DELETE(B1 *pb1) {
-  pb1->B1::~B1();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-linkage.C
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-linkage.C	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-linkage.C	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -emit-llvm -o - %s | FileCheck %s
-
-struct Base {
-  virtual ~Base();
-} ;
-
-struct Derived : Base {
-  void operator delete(void *) { }
-  Derived();
-};
-
-void foo() {
-  Derived d1;			// ok
-}
-
-// CHECK: define internal i32 @_Z1fj(
-inline unsigned f(unsigned n) { return n == 0 ? 0 : n + f(n-1); }
-
-unsigned g(unsigned n) { return f(n); }
-
-// rdar://problem/10133200: give explicit instantiations external linkage in kernel mode
-// CHECK: define void @_Z3barIiEvv()
-template <typename T> void bar() {}
-template void bar<int>();
-
-// CHECK: define internal i32 @_Z5identIiET_S0_(
-template <typename X> X ident(X x) { return x; }
-
-int foo(int n) { return ident(n); }
-
-// CHECK: define internal void @_ZN7DerivedD1Ev(
-// CHECK: define internal void @_ZN7DerivedD0Ev(
-// CHECK: define internal void @_ZN7DeriveddlEPv(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-no-staticinit-section.C
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-no-staticinit-section.C	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext-no-staticinit-section.C	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fapple-kext -fno-rtti -emit-llvm -o - %s | FileCheck %s
-// rdar://8825235
-/**
-1) Normally, global object construction code ends up in __StaticInit segment of text section
-   .section __TEXT,__StaticInit,regular,pure_instructions
-   In kext mode, they end up in the __text segment.
-*/
-
-class foo {
-public:
-  foo();
-  virtual ~foo();
-};
-
-foo a;
-foo b;
-foo c;
-foo::~foo() {}
-
-// CHECK-NOT: __TEXT,__StaticInit,regular,pure_instructions

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/apple-kext.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fno-use-cxa-atexit -fapple-kext -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @_ZN5test01aE = global [[A:%.*]] zeroinitializer
-// CHECK: @llvm.global_ctors = appending global {{.*}} { i32 65535, void ()* [[CTOR0:@.*]] }
-// CHECK: @llvm.global_dtors = appending global {{.*}} { i32 65535, void ()* [[DTOR0:@.*]] }
-
-// rdar://11241230
-namespace test0 {
-  struct A { A(); ~A(); };
-  A a;
-}
-// CHECK:    define internal void [[CTOR0_:@.*]]()
-// CHECK:      call void @_ZN5test01AC1Ev([[A]]* @_ZN5test01aE)
-// CHECK-NEXT: ret void
-
-// CHECK:    define internal void [[CTOR0]]()
-// CHECK:      call void [[CTOR0_]]()
-// CHECK-NEXT: ret void
-
-// CHECK:    define internal void [[DTOR0]]()
-// CHECK:      call void @_ZN5test01AD1Ev([[A]]* @_ZN5test01aE)
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/arm-cc.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/arm-cc.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/arm-cc.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -triple=arm-unknown-linux-gnueabi -target-abi aapcs -emit-llvm -o - | FileCheck %s
-
-class SMLoc {
- const char *Ptr;
-public:
- SMLoc();
- SMLoc(const SMLoc &RHS);
-};
-SMLoc foo(void *p);
-void bar(void *x) {
- foo(x);
-}
-void zed(SMLoc x);
-void baz() {
-  SMLoc a;
-  zed(a);
-}
-
-// CHECK: declare void @_Z3fooPv(%class.SMLoc* sret, i8*)
-// CHECK: declare void @_Z3zed5SMLoc(%class.SMLoc*)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/arm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/arm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/arm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,421 +0,0 @@
-// RUN: %clang_cc1 %s -triple=thumbv7-apple-ios3.0 -fno-use-cxa-atexit -target-abi apcs-gnu -emit-llvm -o - -fexceptions | FileCheck %s
-
-// CHECK: @_ZZN5test74testEvE1x = internal global i32 0, align 4
-// CHECK: @_ZGVZN5test74testEvE1x = internal global i32 0
-// CHECK: @_ZZN5test84testEvE1x = internal global [[TEST8A:.*]] zeroinitializer, align 1
-// CHECK: @_ZGVZN5test84testEvE1x = internal global i32 0
-
-typedef typeof(sizeof(int)) size_t;
-
-class foo {
-public:
-    foo();
-    virtual ~foo();
-};
-
-class bar : public foo {
-public:
-	bar();
-};
-
-// The global dtor needs the right calling conv with -fno-use-cxa-atexit
-// rdar://7817590
-bar baz;
-
-// PR9593
-// Make sure atexit(3) is used for global dtors.
-
-// CHECK:      call [[BAR:%.*]]* @_ZN3barC1Ev(
-// CHECK-NEXT: call i32 @atexit(void ()* @__dtor_baz)
-
-// CHECK: define internal void @__dtor_baz()
-// CHECK: call [[BAR]]* @_ZN3barD1Ev([[BAR]]* @baz)
-
-// Destructors and constructors must return this.
-namespace test1 {
-  void foo();
-
-  struct A {
-    A(int i) { foo(); }
-    ~A() { foo(); }
-    void bar() { foo(); }
-  };
-
-  // CHECK: define void @_ZN5test14testEv()
-  void test() {
-    // CHECK: [[AV:%.*]] = alloca [[A:%.*]], align 1
-    // CHECK: call [[A]]* @_ZN5test11AC1Ei([[A]]* [[AV]], i32 10)
-    // CHECK: invoke void @_ZN5test11A3barEv([[A]]* [[AV]])
-    // CHECK: call [[A]]* @_ZN5test11AD1Ev([[A]]* [[AV]])
-    // CHECK: ret void
-    A a = 10;
-    a.bar();
-  }
-
-  // CHECK: define linkonce_odr [[A]]* @_ZN5test11AC1Ei([[A]]* %this, i32 %i) unnamed_addr
-  // CHECK:   [[THIS:%.*]] = alloca [[A]]*, align 4
-  // CHECK:   store [[A]]* {{.*}}, [[A]]** [[THIS]]
-  // CHECK:   [[THIS1:%.*]] = load [[A]]** [[THIS]]
-  // CHECK:   [[THIS2:%.*]] = call [[A]]* @_ZN5test11AC2Ei(
-  // CHECK:   ret [[A]]* [[THIS2]]
-
-  // CHECK: define linkonce_odr [[A]]* @_ZN5test11AD1Ev([[A]]* %this) unnamed_addr
-  // CHECK:   [[THIS:%.*]] = alloca [[A]]*, align 4
-  // CHECK:   store [[A]]* {{.*}}, [[A]]** [[THIS]]
-  // CHECK:   [[THIS1:%.*]] = load [[A]]** [[THIS]]
-  // CHECK:   [[THIS2:%.*]] = call [[A]]* @_ZN5test11AD2Ev(
-  // CHECK:   ret [[A]]* [[THIS2]]
-}
-
-// Awkward virtual cases.
-namespace test2 {
-  void foo();
-
-  struct A {
-    int x;
-
-    A(int);
-    virtual ~A() { foo(); }
-  };
-
-  struct B {
-    int y;
-    int z;
-
-    B(int);
-    virtual ~B() { foo(); }
-  };
-
-  struct C : A, virtual B {
-    int q;
-
-    C(int i) : A(i), B(i) { foo(); }
-    ~C() { foo(); }
-  };
-
-  void test() {
-    C c = 10;
-  }
-
-  // Tests at eof
-}
-
-namespace test3 {
-  struct A {
-    int x;
-    ~A();
-  };
-
-  void a() {
-    // CHECK: define void @_ZN5test31aEv()
-    // CHECK: call noalias i8* @_Znam(i32 48)
-    // CHECK: store i32 4
-    // CHECK: store i32 10
-    A *x = new A[10];
-  }
-
-  void b(int n) {
-    // CHECK: define void @_ZN5test31bEi(
-    // CHECK: [[N:%.*]] = load i32*
-    // CHECK: @llvm.umul.with.overflow.i32(i32 [[N]], i32 4)
-    // CHECK: @llvm.uadd.with.overflow.i32(i32 {{.*}}, i32 8)
-    // CHECK: [[OR:%.*]] = or i1
-    // CHECK: [[SZ:%.*]] = select i1 [[OR]]
-    // CHECK: call noalias i8* @_Znam(i32 [[SZ]])
-    // CHECK: store i32 4
-    // CHECK: store i32 [[N]]
-    A *x = new A[n];
-  }
-
-  void c() {
-    // CHECK: define void @_ZN5test31cEv()
-    // CHECK: call  noalias i8* @_Znam(i32 808)
-    // CHECK: store i32 4
-    // CHECK: store i32 200
-    A (*x)[20] = new A[10][20];
-  }
-
-  void d(int n) {
-    // CHECK: define void @_ZN5test31dEi(
-    // CHECK: [[N:%.*]] = load i32*
-    // CHECK: @llvm.umul.with.overflow.i32(i32 [[N]], i32 80)
-    // CHECK: [[NE:%.*]] = mul i32 [[N]], 20
-    // CHECK: @llvm.uadd.with.overflow.i32(i32 {{.*}}, i32 8)
-    // CHECK: [[SZ:%.*]] = select
-    // CHECK: call noalias i8* @_Znam(i32 [[SZ]])
-    // CHECK: store i32 4
-    // CHECK: store i32 [[NE]]
-    A (*x)[20] = new A[n][20];
-  }
-
-  void e(A *x) {
-    // CHECK: define void @_ZN5test31eEPNS_1AE(
-    // CHECK: icmp eq {{.*}}, null
-    // CHECK: getelementptr {{.*}}, i64 -8
-    // CHECK: getelementptr {{.*}}, i64 4
-    // CHECK: bitcast {{.*}} to i32*
-    // CHECK: load
-    // CHECK: invoke {{.*}} @_ZN5test31AD1Ev
-    // CHECK: call void @_ZdaPv
-    delete [] x;
-  }
-
-  void f(A (*x)[20]) {
-    // CHECK: define void @_ZN5test31fEPA20_NS_1AE(
-    // CHECK: icmp eq {{.*}}, null
-    // CHECK: getelementptr {{.*}}, i64 -8
-    // CHECK: getelementptr {{.*}}, i64 4
-    // CHECK: bitcast {{.*}} to i32*
-    // CHECK: load
-    // CHECK: invoke {{.*}} @_ZN5test31AD1Ev
-    // CHECK: call void @_ZdaPv
-    delete [] x;
-  }
-}
-
-namespace test4 {
-  struct A {
-    int x;
-    void operator delete[](void *, size_t sz);
-  };
-
-  void a() {
-    // CHECK: define void @_ZN5test41aEv()
-    // CHECK: call noalias i8* @_Znam(i32 48)
-    // CHECK: store i32 4
-    // CHECK: store i32 10
-    A *x = new A[10];
-  }
-
-  void b(int n) {
-    // CHECK: define void @_ZN5test41bEi(
-    // CHECK: [[N:%.*]] = load i32*
-    // CHECK: @llvm.umul.with.overflow.i32(i32 [[N]], i32 4)
-    // CHECK: @llvm.uadd.with.overflow.i32(i32 {{.*}}, i32 8)
-    // CHECK: [[SZ:%.*]] = select
-    // CHECK: call noalias i8* @_Znam(i32 [[SZ]])
-    // CHECK: store i32 4
-    // CHECK: store i32 [[N]]
-    A *x = new A[n];
-  }
-
-  void c() {
-    // CHECK: define void @_ZN5test41cEv()
-    // CHECK: call  noalias i8* @_Znam(i32 808)
-    // CHECK: store i32 4
-    // CHECK: store i32 200
-    A (*x)[20] = new A[10][20];
-  }
-
-  void d(int n) {
-    // CHECK: define void @_ZN5test41dEi(
-    // CHECK: [[N:%.*]] = load i32*
-    // CHECK: @llvm.umul.with.overflow.i32(i32 [[N]], i32 80)
-    // CHECK: [[NE:%.*]] = mul i32 [[N]], 20
-    // CHECK: @llvm.uadd.with.overflow.i32(i32 {{.*}}, i32 8)
-    // CHECK: [[SZ:%.*]] = select
-    // CHECK: call noalias i8* @_Znam(i32 [[SZ]])
-    // CHECK: store i32 4
-    // CHECK: store i32 [[NE]]
-    A (*x)[20] = new A[n][20];
-  }
-
-  void e(A *x) {
-    // CHECK: define void @_ZN5test41eEPNS_1AE(
-    // CHECK: [[ALLOC:%.*]] = getelementptr inbounds {{.*}}, i64 -8
-    // CHECK: getelementptr inbounds {{.*}}, i64 4
-    // CHECK: bitcast
-    // CHECK: [[T0:%.*]] = load i32*
-    // CHECK: [[T1:%.*]] = mul i32 4, [[T0]]
-    // CHECK: [[T2:%.*]] = add i32 [[T1]], 8
-    // CHECK: call void @_ZN5test41AdaEPvm(i8* [[ALLOC]], i32 [[T2]])
-    delete [] x;
-  }
-
-  void f(A (*x)[20]) {
-    // CHECK: define void @_ZN5test41fEPA20_NS_1AE(
-    // CHECK: [[ALLOC:%.*]] = getelementptr inbounds {{.*}}, i64 -8
-    // CHECK: getelementptr inbounds {{.*}}, i64 4
-    // CHECK: bitcast
-    // CHECK: [[T0:%.*]] = load i32*
-    // CHECK: [[T1:%.*]] = mul i32 4, [[T0]]
-    // CHECK: [[T2:%.*]] = add i32 [[T1]], 8
-    // CHECK: call void @_ZN5test41AdaEPvm(i8* [[ALLOC]], i32 [[T2]])
-    delete [] x;
-  }
-}
-
-// <rdar://problem/8386802>: don't crash
-namespace test5 {
-  struct A {
-    ~A();
-  };
-
-  // CHECK: define void @_ZN5test54testEPNS_1AE
-  void test(A *a) {
-    // CHECK:      [[PTR:%.*]] = alloca [[A:%.*]]*, align 4
-    // CHECK-NEXT: store [[A]]* {{.*}}, [[A]]** [[PTR]], align 4
-    // CHECK-NEXT: [[TMP:%.*]] = load [[A]]** [[PTR]], align 4
-    // CHECK-NEXT: call [[A]]* @_ZN5test51AD1Ev([[A]]* [[TMP]])
-    // CHECK-NEXT: ret void
-    a->~A();
-  }
-}
-
-namespace test6 {
-  struct A {
-    virtual ~A();
-  };
-
-  // CHECK: define void @_ZN5test64testEPNS_1AE
-  void test(A *a) {
-    // CHECK:      [[AVAR:%.*]] = alloca [[A:%.*]]*, align 4
-    // CHECK-NEXT: store [[A]]* {{.*}}, [[A]]** [[AVAR]], align 4
-    // CHECK-NEXT: [[V:%.*]] = load [[A]]** [[AVAR]], align 4
-    // CHECK-NEXT: [[ISNULL:%.*]] = icmp eq [[A]]* [[V]], null
-    // CHECK-NEXT: br i1 [[ISNULL]]
-    // CHECK:      [[T0:%.*]] = bitcast [[A]]* [[V]] to void ([[A]]*)***
-    // CHECK-NEXT: [[T1:%.*]] = load void ([[A]]*)*** [[T0]]
-    // CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds void ([[A]]*)** [[T1]], i64 1
-    // CHECK-NEXT: [[T3:%.*]] = load void ([[A]]*)** [[T2]]
-    // CHECK-NEXT: call void [[T3]]([[A]]* [[V]])
-    // CHECK-NEXT: br label
-    // CHECK:      ret void
-    delete a;
-  }
-}
-
-namespace test7 {
-  int foo();
-
-  // Static and guard tested at top of file
-
-  // CHECK: define void @_ZN5test74testEv()
-  void test() {
-    // CHECK:      [[T0:%.*]] = load i32* @_ZGVZN5test74testEvE1x
-    // CHECK-NEXT: [[T1:%.*]] = and i32 [[T0]], 1
-    // CHECK-NEXT: [[T2:%.*]] = icmp eq i32 [[T1]], 0
-    // CHECK-NEXT: br i1 [[T2]]
-    //   -> fallthrough, end
-    // CHECK:      [[T3:%.*]] = call i32 @__cxa_guard_acquire(i32* @_ZGVZN5test74testEvE1x)
-    // CHECK-NEXT: [[T4:%.*]] = icmp ne i32 [[T3]], 0
-    // CHECK-NEXT: br i1 [[T4]]
-    //   -> fallthrough, end
-    // CHECK:      [[INIT:%.*]] = invoke i32 @_ZN5test73fooEv()
-    // CHECK:      store i32 [[INIT]], i32* @_ZZN5test74testEvE1x, align 4
-    // CHECK-NEXT: call void @__cxa_guard_release(i32* @_ZGVZN5test74testEvE1x)
-    // CHECK-NEXT: br label
-    //   -> end
-    // end:
-    // CHECK:      ret void
-    static int x = foo();
-
-    // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-    // CHECK-NEXT:   cleanup
-    // CHECK:      call void @__cxa_guard_abort(i32* @_ZGVZN5test74testEvE1x)
-    // CHECK:      resume { i8*, i32 }
-  }
-}
-
-namespace test8 {
-  struct A {
-    A();
-    ~A();
-  };
-
-  // Static and guard tested at top of file
-
-  // CHECK: define void @_ZN5test84testEv()
-  void test() {
-    // CHECK:      [[T0:%.*]] = load i32* @_ZGVZN5test84testEvE1x
-    // CHECK-NEXT: [[T1:%.*]] = and i32 [[T0]], 1
-    // CHECK-NEXT: [[T2:%.*]] = icmp eq i32 [[T1]], 0
-    // CHECK-NEXT: br i1 [[T2]]
-    //   -> fallthrough, end
-    // CHECK:      [[T3:%.*]] = call i32 @__cxa_guard_acquire(i32* @_ZGVZN5test84testEvE1x)
-    // CHECK-NEXT: [[T4:%.*]] = icmp ne i32 [[T3]], 0
-    // CHECK-NEXT: br i1 [[T4]]
-    //   -> fallthrough, end
-    // CHECK:      [[INIT:%.*]] = invoke [[TEST8A]]* @_ZN5test81AC1Ev([[TEST8A]]* @_ZZN5test84testEvE1x)
-
-    // FIXME: Here we register a global destructor that
-    // unconditionally calls the destructor.  That's what we've always
-    // done for -fno-use-cxa-atexit here, but that's really not
-    // semantically correct at all.
-
-    // CHECK:      call void @__cxa_guard_release(i32* @_ZGVZN5test84testEvE1x)
-    // CHECK-NEXT: br label
-    //   -> end
-    // end:
-    // CHECK:      ret void
-    static A x;
-
-    // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-    // CHECK-NEXT:   cleanup
-    // CHECK:      call void @__cxa_guard_abort(i32* @_ZGVZN5test84testEvE1x)
-    // CHECK:      resume { i8*, i32 }
-  }
-}
-
-//   rdar://12836470
-// Use a larger-than-mandated array cookie when allocating an
-// array whose type is overaligned.
-namespace test9 {
-  class __attribute__((aligned(16))) A {
-    float data[4];
-  public:
-    A();
-    ~A();
-  };
-
-  A *testNew(unsigned n) {
-    return new A[n];
-  }
-// CHECK:    define [[TEST9:%.*]]* @_ZN5test97testNewEj(i32
-// CHECK:      [[N_VAR:%.*]] = alloca i32, align 4
-// CHECK:      [[N:%.*]] = load i32* [[N_VAR]], align 4
-// CHECK-NEXT: [[T0:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[N]], i32 16)
-// CHECK-NEXT: [[O0:%.*]] = extractvalue { i32, i1 } [[T0]], 1
-// CHECK-NEXT: [[T1:%.*]] = extractvalue { i32, i1 } [[T0]], 0
-// CHECK-NEXT: [[T2:%.*]] = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 [[T1]], i32 16)
-// CHECK-NEXT: [[O1:%.*]] = extractvalue { i32, i1 } [[T2]], 1
-// CHECK-NEXT: [[OVERFLOW:%.*]] = or i1 [[O0]], [[O1]]
-// CHECK-NEXT: [[T3:%.*]] = extractvalue { i32, i1 } [[T2]], 0
-// CHECK-NEXT: [[T4:%.*]] = select i1 [[OVERFLOW]], i32 -1, i32 [[T3]]
-// CHECK-NEXT: [[ALLOC:%.*]] = call noalias i8* @_Znam(i32 [[T4]])
-// CHECK-NEXT: [[T0:%.*]] = bitcast i8* [[ALLOC]] to i32*
-// CHECK-NEXT: store i32 16, i32* [[T0]]
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i32* [[T0]], i32 1
-// CHECK-NEXT: store i32 [[N]], i32* [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8* [[ALLOC]], i64 16
-// CHECK-NEXT: bitcast i8* [[T0]] to [[TEST9]]*
-//   Array allocation follows.
-
-  void testDelete(A *array) {
-    delete[] array;
-  }
-// CHECK:    define void @_ZN5test910testDeleteEPNS_1AE(
-// CHECK:      [[BEGIN:%.*]] = load [[TEST9]]**
-// CHECK-NEXT: [[T0:%.*]] = icmp eq [[TEST9]]* [[BEGIN]], null
-// CHECK-NEXT: br i1 [[T0]],
-// CHECK:      [[T0:%.*]] = bitcast [[TEST9]]* [[BEGIN]] to i8*
-// CHECK-NEXT: [[ALLOC:%.*]] = getelementptr inbounds i8* [[T0]], i64 -16
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8* [[ALLOC]], i64 4
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to i32*
-// CHECK-NEXT: [[N:%.*]] = load i32* [[T1]]
-// CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [[TEST9]]* [[BEGIN]], i32 [[N]]
-// CHECK-NEXT: [[T0:%.*]] = icmp eq [[TEST9]]* [[BEGIN]], [[END]]
-// CHECK-NEXT: br i1 [[T0]],
-//   Array deallocation follows.
-}
-
-  // CHECK: define linkonce_odr [[C:%.*]]* @_ZTv0_n12_N5test21CD1Ev(
-  // CHECK:   call [[C]]* @_ZN5test21CD1Ev(
-  // CHECK:   ret [[C]]* undef
-
-  // CHECK: define linkonce_odr void @_ZTv0_n12_N5test21CD0Ev(
-  // CHECK:   call void @_ZN5test21CD0Ev(
-  // CHECK:   ret void
-
-// CH_ECK: @_GLOBAL__D_a()
-// CH_ECK: call %class.bar* @_ZN3barD1Ev(%class.bar* @baz)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-construction.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-construction.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-construction.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-extern "C" int printf(...);
-
-static int count;
-static float fcount;
-
-class xpto {
-public:
-  xpto() : i(count++), f(fcount++) {
-    printf("xpto::xpto()\n");
-  }
-  int i;
-  float f;
-
-  ~xpto() {
-    printf("xpto::~xpto()\n");
-  }
-};
-
-int main() {
-  xpto array[2][3][4];
-  for (int h = 0; h < 2; h++)
-   for (int i = 0; i < 3; i++)
-    for (int j = 0; j < 4; j++)
-       printf("array[%d][%d][%d] = {%d, %f}\n", 
-              h, i, j, array[h][i][j].i, array[h][i][j].f);
-}
-
-// CHECK-LP64: callq    __ZN4xptoC1Ev
-
-// CHECK-LP32: calll     L__ZN4xptoC1Ev
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-operator-delete-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-operator-delete-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-operator-delete-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-extern "C" int printf(...);
-
-int count;
-
-struct S {
-  S() : iS (++count) { printf("S::S(%d)\n", iS); }
-  ~S() { printf("S::~S(%d)\n", iS); }
-  int iS;
-};
-
-struct V {
-  V() : iV (++count) { printf("V::V(%d)\n", iV); }
-  virtual ~V() { printf("V::~V(%d)\n", iV); }
-  int iV;
-};
-
-struct COST
-{
-  S *cost;
-  V *vcost;
-  unsigned *cost_val;
-
-  ~COST();
-  COST();
-};
-
-
-COST::COST()
-{
-  cost = new S[3];
-  vcost = new V[4];
-  cost_val = new unsigned[10];
-}
-
-COST::~COST()
-{
-  if (cost) {
-   delete [] cost;
-  }
-  if (vcost) {
-   delete [] vcost;
-  }
-  if (cost_val)
-    delete [] cost_val;
-}
-
-COST c1;
-
-int main()
-{
-  COST c3;
-}
-COST c2;
-
-// CHECK-LP64: callq    __ZdaPv
-
-// CHECK-LP32: calll     L__ZdaPv
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-pointer-decay.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-pointer-decay.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-pointer-decay.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
-void f(const char*);
-
-void g() {
-  f("hello");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-value-initialize.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-value-initialize.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/array-value-initialize.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -emit-llvm -o - %s
-
-// PR5463
-extern "C" int printf(...);
-
-struct S {
-  double filler;
-};
-
-struct Foo {
-        Foo(void) : bar_(), dbar_(), sbar_() { 
-	  for (int i = 0; i < 5; i++) {
-	    printf("bar_[%d] = %d\n", i, bar_[i]);
-	    printf("dbar_[%d] = %f\n", i, dbar_[i]);
-	    printf("sbar_[%d].filler = %f\n", i, sbar_[i].filler);
-	  }
-        } 
-
-        int bar_[5];
-        double dbar_[5];
-        S sbar_[5];
-};
-
-int test1(void) {
-        Foo a;
-}
-
-// PR7063
-
-
-struct Unit
-{
-  Unit() {}
-  Unit(const Unit& v)  {}
-};
-
-
-struct Stuff
-{
-  Unit leafPos[1];
-};
-
-
-int main()
-{
-  
-  Stuff a;
-  Stuff b = a;
-  
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/asm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/asm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/asm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-
-struct A
-{
-    ~A();
-};
-int foo(A);
-
-void bar(A &a)
-{
-    // CHECK: call void asm
-    asm("" : : "r"(foo(a)) ); // rdar://8540491
-    // CHECK: call void @_ZN1AD1Ev
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/assign-construct-memcpy.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/assign-construct-memcpy.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/assign-construct-memcpy.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -emit-llvm -o - -std=c++11 %s -DPOD | FileCheck %s -check-prefix=CHECK-POD
-// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -emit-llvm -o - -std=c++11 %s | FileCheck %s -check-prefix=CHECK-NONPOD
-
-// Declare the reserved placement operators.
-typedef __typeof__(sizeof(0)) size_t;
-void *operator new(size_t, void*) throw();
-void operator delete(void*, void*) throw();
-void *operator new[](size_t, void*) throw();
-void operator delete[](void*, void*) throw();
-template<typename T> T &&move(T&);
-
-struct foo {
-#ifndef POD
-  foo() {} // non-POD
-#endif
-  void *a, *b;
-  bool c;
-};
-
-// It is not legal to copy the tail padding in all cases, but if it is it can
-// yield better codegen.
-
-foo *test1(void *f, const foo &x) {
-  return new (f) foo(x);
-// CHECK-POD: test1
-// CHECK-POD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-
-// CHECK-NONPOD: test1
-// CHECK-NONPOD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-}
-
-foo *test2(const foo &x) {
-  return new foo(x);
-// CHECK-POD: test2
-// CHECK-POD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-
-// CHECK-NONPOD: test2
-// CHECK-NONPOD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-}
-
-foo test3(const foo &x) {
-  foo f = x;
-  return f;
-// CHECK-POD: test3
-// CHECK-POD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-
-// CHECK-NONPOD: test3
-// CHECK-NONPOD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-}
-
-foo *test4(foo &&x) {
-  return new foo(x);
-// CHECK-POD: test4
-// CHECK-POD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-
-// CHECK-NONPOD: test4
-// CHECK-NONPOD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-}
-
-void test5(foo &f, const foo &x) {
-  f = x;
-// CHECK-POD: test5
-// CHECK-POD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-
-// CHECK-NONPOD: test5
-// CHECK-NONPOD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 17, i32 8
-}
-
-extern foo globtest;
-
-void test6(foo &&x) {
-  globtest = move(x);
-// CHECK-POD: test6
-// CHECK-POD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-
-// CHECK-NONPOD: test6
-// CHECK-NONPOD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 17, i32 8
-}
-
-void byval(foo f);
-
-void test7(const foo &x) {
-  byval(x);
-// CHECK-POD: test7
-// CHECK-POD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-
-// CHECK-NONPOD: test7
-// CHECK-NONPOD: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 24, i32 8
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/assign-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/assign-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/assign-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - -std=c++11 |FileCheck %s
-
-class x {
-public: int operator=(int);
-};
-void a() {
-  x a;
-  a = 1u;
-}
-
-void f(int i, int j) {
-  // CHECK: load i32
-  // CHECK: load i32
-  // CHECK: add nsw i32
-  // CHECK: store i32
-  // CHECK: store i32 17, i32
-  // CHECK: ret
-  (i += j) = 17;
-}
-
-// Taken from g++.old-deja/g++.jason/net.C
-namespace test1 {
-  template <class T> void fn (T t) { }
-  template <class T> struct A {
-    void (*p)(T);
-    A() { p = fn; }
-  };
-
-  A<int> a;
-}
-
-// Ensure that we use memcpy when we would have selected a trivial assignment
-// operator, even for a non-trivially-copyable type.
-struct A {
-  A &operator=(const A&);
-};
-struct B {
-  B(const B&);
-  B &operator=(const B&) = default;
-  int n;
-};
-struct C {
-  A a;
-  B b[16];
-};
-void b(C &a, C &b) {
-  // CHECK: define {{.*}} @_ZN1CaSERKS_(
-  // CHECK: call {{.*}} @_ZN1AaSERKS_(
-  // CHECK-NOT: call {{.*}} @_ZN1BaSERKS_(
-  // CHECK: call {{.*}} @{{.*}}memcpy
-  // CHECK-NOT: call {{.*}} @_ZN1BaSERKS_(
-  // CHECK: }
-  a = b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/atomic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/atomic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/atomic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin9 | FileCheck %s
-
-namespace PR11411 {
-  template<typename _Tp> struct Ptr {
-    void f();
-  };
-
-  // CHECK: define linkonce_odr void @_ZN7PR114113PtrIiE1fEv
-  // CHECK-NOT: ret
-  template<typename _Tp> inline void Ptr<_Tp>::f() {
-    int* _refcount;
-    // CHECK: atomicrmw add i32*
-    __sync_fetch_and_add(_refcount, 1);
-    // CHECK-NEXT: ret void
-  }
-  void f(Ptr<int> *a) { a->f(); }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/atomicinit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/atomicinit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/atomicinit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O1 -o - -triple=i686-apple-darwin9 | FileCheck %s
-struct A {
-  _Atomic(int) i;
-  A(int j);
-  void v(int j);
-};
-// Storing to atomic values should be atomic
-// CHECK: store atomic i32
-void A::v(int j) { i = j; }
-// Initialising atomic values should not be atomic
-// CHECK-NOT: store atomic 
-A::A(int j) : i(j) {}
-
-struct B {
-  int i;
-  B(int x) : i(x) {}
-};
-
-_Atomic(B) b;
-
-// CHECK: define void @_Z11atomic_initR1Ai
-void atomic_init(A& a, int i) {
-  // CHECK-NOT: atomic
-  // CHECK: tail call void @_ZN1BC1Ei
-  __c11_atomic_init(&b, B(i));
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @_Z16atomic_init_boolPU7_Atomicbb
-void atomic_init_bool(_Atomic(bool) *ab, bool b) {
-  // CHECK-NOT: atomic
-  // CHECK: {{zext i1.*to i8}}
-  // CHECK-NEXT: store i8
-  __c11_atomic_init(ab, b);
-  // CHECK-NEXT: ret void
-}
-
-struct AtomicBoolMember {
-  _Atomic(bool) ab;
-  AtomicBoolMember(bool b);
-};
-
-// CHECK: define void @_ZN16AtomicBoolMemberC2Eb
-// CHECK: {{zext i1.*to i8}}
-// CHECK-NEXT: store i8
-// CHECK-NEXT: ret void
-AtomicBoolMember::AtomicBoolMember(bool b) : ab(b) { }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/attr-used.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/attr-used.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/attr-used.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// <rdar://problem/8684363>: clang++ not respecting __attribute__((used)) on destructors
-struct X0 {
-  // CHECK: define linkonce_odr {{.*}} @_ZN2X0C1Ev
-  __attribute__((used)) X0() {}
-  // CHECK: define linkonce_odr {{.*}} @_ZN2X0D1Ev
-  __attribute__((used)) ~X0() {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @test2 = alias i32 ()* @_Z5test1v
-
-// CHECK: define i32 @_Z3foov() [[NUW:#[0-9]+]] align 1024
-int foo() __attribute__((aligned(1024)));
-int foo() { }
-
-class C {
-  virtual void bar1() __attribute__((aligned(1)));
-  virtual void bar2() __attribute__((aligned(2)));
-  virtual void bar3() __attribute__((aligned(1024)));
-  void bar4() __attribute__((aligned(1024)));
-} c;
-
-// CHECK: define void @_ZN1C4bar1Ev(%class.C* %this) unnamed_addr [[NUW]] align 2
-void C::bar1() { }
-
-// CHECK: define void @_ZN1C4bar2Ev(%class.C* %this) unnamed_addr [[NUW]] align 2
-void C::bar2() { }
-
-// CHECK: define void @_ZN1C4bar3Ev(%class.C* %this) unnamed_addr [[NUW]] align 1024
-void C::bar3() { }
-
-// CHECK: define void @_ZN1C4bar4Ev(%class.C* %this) [[NUW]] align 1024
-void C::bar4() { }
-
-// PR6635
-// CHECK: define i32 @_Z5test1v()
-int test1() { return 10; }
-// CHECK at top of file
-extern "C" int test2() __attribute__((alias("_Z5test1v")));
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bitfield-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bitfield-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bitfield-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - -O3 | FileCheck -check-prefix LP64 %s
-// RUN: %clang_cc1 %s -triple=i386-apple-darwin10 -emit-llvm -o - -O3 | FileCheck -check-prefix LP32 %s
-
-// CHECK-LP64: %union.Test1 = type { i32, [4 x i8] }
-union Test1 {
-  int a;
-  int b: 39;
-} t1;
-
-// CHECK-LP64: %union.Test2 = type { i8 }
-union Test2 {
-  int : 6;
-} t2;
-
-// CHECK-LP64: %union.Test3 = type { [2 x i8] }
-union Test3 {
-  int : 9;
-} t3;
-
-
-#define CHECK(x) if (!(x)) return __LINE__
-
-int f() {
-  struct {
-    int a;
-
-    unsigned long long b : 65;
-
-    int c;
-  } c;
-  
-  c.a = 0;
-  c.b = (unsigned long long)-1;
-  c.c = 0;
-
-  CHECK(c.a == 0);
-  CHECK(c.b == (unsigned long long)-1);
-  CHECK(c.c == 0);
-
-// CHECK-LP64: ret i32 0
-// CHECK-LP32: ret i32 0
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bitfield.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bitfield.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bitfield.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,428 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -verify -emit-llvm -o - %s \
-// RUN:   | FileCheck -check-prefix=CHECK-X86-64 %s
-// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -verify -emit-llvm -o - %s \
-// RUN:   | FileCheck -check-prefix=CHECK-PPC64 %s
-//
-// Tests for bitfield access patterns in C++ with special attention to
-// conformance to C++11 memory model requirements.
-
-namespace N0 {
-  // Test basic bitfield layout access across interesting byte and word
-  // boundaries on both little endian and big endian platforms.
-  struct __attribute__((packed)) S {
-    unsigned b00 : 14;
-    unsigned b01 : 2;
-    unsigned b20 : 6;
-    unsigned b21 : 2;
-    unsigned b30 : 30;
-    unsigned b31 : 2;
-    unsigned b70 : 6;
-    unsigned b71 : 2;
-  };
-  unsigned read00(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N06read00
-    // CHECK-X86-64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-X86-64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-X86-64:   %[[and:.*]]   = and i64 %[[val]], 16383
-    // CHECK-X86-64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-X86-64:                   ret i32 %[[trunc]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N06read00
-    // CHECK-PPC64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-PPC64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]]   = lshr i64 %[[val]], 50
-    // CHECK-PPC64:   %[[trunc:.*]] = trunc i64 %[[shr]] to i32
-    // CHECK-PPC64:                   ret i32 %[[trunc]]
-    return s->b00;
-  }
-  unsigned read01(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N06read01
-    // CHECK-X86-64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-X86-64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-X86-64:   %[[shr:.*]]   = lshr i64 %[[val]], 14
-    // CHECK-X86-64:   %[[and:.*]]   = and i64 %[[shr]], 3
-    // CHECK-X86-64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-X86-64:                   ret i32 %[[trunc]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N06read01
-    // CHECK-PPC64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-PPC64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]]   = lshr i64 %[[val]], 48
-    // CHECK-PPC64:   %[[and:.*]]   = and i64 %[[shr]], 3
-    // CHECK-PPC64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-PPC64:                   ret i32 %[[trunc]]
-    return s->b01;
-  }
-  unsigned read20(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N06read20
-    // CHECK-X86-64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-X86-64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-X86-64:   %[[shr:.*]]   = lshr i64 %[[val]], 16
-    // CHECK-X86-64:   %[[and:.*]]   = and i64 %[[shr]], 63
-    // CHECK-X86-64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-X86-64:                   ret i32 %[[trunc]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N06read20
-    // CHECK-PPC64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-PPC64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]]   = lshr i64 %[[val]], 42
-    // CHECK-PPC64:   %[[and:.*]]   = and i64 %[[shr]], 63
-    // CHECK-PPC64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-PPC64:                   ret i32 %[[trunc]]
-    return s->b20;
-  }
-  unsigned read21(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N06read21
-    // CHECK-X86-64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-X86-64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-X86-64:   %[[shr:.*]]   = lshr i64 %[[val]], 22
-    // CHECK-X86-64:   %[[and:.*]]   = and i64 %[[shr]], 3
-    // CHECK-X86-64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-X86-64:                   ret i32 %[[trunc]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N06read21
-    // CHECK-PPC64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-PPC64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]]   = lshr i64 %[[val]], 40
-    // CHECK-PPC64:   %[[and:.*]]   = and i64 %[[shr]], 3
-    // CHECK-PPC64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-PPC64:                   ret i32 %[[trunc]]
-    return s->b21;
-  }
-  unsigned read30(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N06read30
-    // CHECK-X86-64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-X86-64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-X86-64:   %[[shr:.*]]   = lshr i64 %[[val]], 24
-    // CHECK-X86-64:   %[[and:.*]]   = and i64 %[[shr]], 1073741823
-    // CHECK-X86-64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-X86-64:                   ret i32 %[[trunc]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N06read30
-    // CHECK-PPC64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-PPC64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]]   = lshr i64 %[[val]], 10
-    // CHECK-PPC64:   %[[and:.*]]   = and i64 %[[shr]], 1073741823
-    // CHECK-PPC64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-PPC64:                   ret i32 %[[trunc]]
-    return s->b30;
-  }
-  unsigned read31(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N06read31
-    // CHECK-X86-64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-X86-64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-X86-64:   %[[shr:.*]]   = lshr i64 %[[val]], 54
-    // CHECK-X86-64:   %[[and:.*]]   = and i64 %[[shr]], 3
-    // CHECK-X86-64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-X86-64:                   ret i32 %[[trunc]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N06read31
-    // CHECK-PPC64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-PPC64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]]   = lshr i64 %[[val]], 8
-    // CHECK-PPC64:   %[[and:.*]]   = and i64 %[[shr]], 3
-    // CHECK-PPC64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-PPC64:                   ret i32 %[[trunc]]
-    return s->b31;
-  }
-  unsigned read70(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N06read70
-    // CHECK-X86-64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-X86-64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-X86-64:   %[[shr:.*]]   = lshr i64 %[[val]], 56
-    // CHECK-X86-64:   %[[and:.*]]   = and i64 %[[shr]], 63
-    // CHECK-X86-64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-X86-64:                   ret i32 %[[trunc]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N06read70
-    // CHECK-PPC64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-PPC64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]]   = lshr i64 %[[val]], 2
-    // CHECK-PPC64:   %[[and:.*]]   = and i64 %[[shr]], 63
-    // CHECK-PPC64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-PPC64:                   ret i32 %[[trunc]]
-    return s->b70;
-  }
-  unsigned read71(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N06read71
-    // CHECK-X86-64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-X86-64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-X86-64:   %[[shr:.*]]   = lshr i64 %[[val]], 62
-    // CHECK-X86-64:   %[[trunc:.*]] = trunc i64 %[[shr]] to i32
-    // CHECK-X86-64:                   ret i32 %[[trunc]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N06read71
-    // CHECK-PPC64:   %[[ptr:.*]]   = bitcast %{{.*}}* %{{.*}} to i64*
-    // CHECK-PPC64:   %[[val:.*]]   = load i64* %[[ptr]]
-    // CHECK-PPC64:   %[[and:.*]]   = and i64 %[[val]], 3
-    // CHECK-PPC64:   %[[trunc:.*]] = trunc i64 %[[and]] to i32
-    // CHECK-PPC64:                   ret i32 %[[trunc]]
-    return s->b71;
-  }
-}
-
-namespace N1 {
-  // Ensure that neither loads nor stores to bitfields are not widened into
-  // other memory locations. (PR13691)
-  //
-  // NOTE: We could potentially widen loads based on their alignment if we are
-  // comfortable requiring that subsequent memory locations within the
-  // alignment-widened load are not volatile.
-  struct S {
-    char a;
-    unsigned b : 1;
-    char c;
-  };
-  unsigned read(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N14read
-    // CHECK-X86-64:   %[[ptr:.*]] = getelementptr inbounds %{{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-X86-64:   %[[val:.*]] = load i8* %[[ptr]]
-    // CHECK-X86-64:   %[[and:.*]] = and i8 %[[val]], 1
-    // CHECK-X86-64:   %[[ext:.*]] = zext i8 %[[and]] to i32
-    // CHECK-X86-64:                 ret i32 %[[ext]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N14read
-    // CHECK-PPC64:   %[[ptr:.*]] = getelementptr inbounds %{{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-PPC64:   %[[val:.*]] = load i8* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]] = lshr i8 %[[val]], 7
-    // CHECK-PPC64:   %[[ext:.*]] = zext i8 %[[shr]] to i32
-    // CHECK-PPC64:                 ret i32 %[[ext]]
-    return s->b;
-  }
-  void write(S* s, unsigned x) {
-    // CHECK-X86-64: define void @_ZN2N15write
-    // CHECK-X86-64:   %[[ptr:.*]]     = getelementptr inbounds %{{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-X86-64:   %[[x_trunc:.*]] = trunc i32 %{{.*}} to i8
-    // CHECK-X86-64:   %[[old:.*]]     = load i8* %[[ptr]]
-    // CHECK-X86-64:   %[[x_and:.*]]   = and i8 %[[x_trunc]], 1
-    // CHECK-X86-64:   %[[old_and:.*]] = and i8 %[[old]], -2
-    // CHECK-X86-64:   %[[new:.*]]     = or i8 %[[old_and]], %[[x_and]]
-    // CHECK-X86-64:                     store i8 %[[new]], i8* %[[ptr]]
-    // CHECK-PPC64: define void @_ZN2N15write
-    // CHECK-PPC64:   %[[ptr:.*]]     = getelementptr inbounds %{{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-PPC64:   %[[x_trunc:.*]] = trunc i32 %{{.*}} to i8
-    // CHECK-PPC64:   %[[old:.*]]     = load i8* %[[ptr]]
-    // CHECK-PPC64:   %[[x_and:.*]]   = and i8 %[[x_trunc]], 1
-    // CHECK-PPC64:   %[[x_shl:.*]]   = shl i8 %[[x_and]], 7
-    // CHECK-PPC64:   %[[old_and:.*]] = and i8 %[[old]], 127
-    // CHECK-PPC64:   %[[new:.*]]     = or i8 %[[old_and]], %[[x_shl]]
-    // CHECK-PPC64:                     store i8 %[[new]], i8* %[[ptr]]
-    s->b = x;
-  }
-}
-
-namespace N2 {
-  // Do widen loads and stores to bitfields when those bitfields have padding
-  // within the struct following them.
-  struct S {
-    unsigned b : 24;
-    void *p;
-  };
-  unsigned read(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N24read
-    // CHECK-X86-64:   %[[ptr:.*]] = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-X86-64:   %[[val:.*]] = load i32* %[[ptr]]
-    // CHECK-X86-64:   %[[and:.*]] = and i32 %[[val]], 16777215
-    // CHECK-X86-64:                 ret i32 %[[and]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N24read
-    // CHECK-PPC64:   %[[ptr:.*]] = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-PPC64:   %[[val:.*]] = load i32* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]] = lshr i32 %[[val]], 8
-    // CHECK-PPC64:                 ret i32 %[[shr]]
-    return s->b;
-  }
-  void write(S* s, unsigned x) {
-    // CHECK-X86-64: define void @_ZN2N25write
-    // CHECK-X86-64:   %[[ptr:.*]]     = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-X86-64:   %[[old:.*]]     = load i32* %[[ptr]]
-    // CHECK-X86-64:   %[[x_and:.*]]   = and i32 %{{.*}}, 16777215
-    // CHECK-X86-64:   %[[old_and:.*]] = and i32 %[[old]], -16777216
-    // CHECK-X86-64:   %[[new:.*]]     = or i32 %[[old_and]], %[[x_and]]
-    // CHECK-X86-64:                     store i32 %[[new]], i32* %[[ptr]]
-    // CHECK-PPC64: define void @_ZN2N25write
-    // CHECK-PPC64:   %[[ptr:.*]]     = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-PPC64:   %[[old:.*]]     = load i32* %[[ptr]]
-    // CHECK-PPC64:   %[[x_and:.*]]   = and i32 %{{.*}}, 16777215
-    // CHECK-PPC64:   %[[x_shl:.*]]   = shl i32 %[[x_and]], 8
-    // CHECK-PPC64:   %[[old_and:.*]] = and i32 %[[old]], 255
-    // CHECK-PPC64:   %[[new:.*]]     = or i32 %[[old_and]], %[[x_shl]]
-    // CHECK-PPC64:                     store i32 %[[new]], i32* %[[ptr]]
-    s->b = x;
-  }
-}
-
-namespace N3 {
-  // Do widen loads and stores to bitfields through the trailing padding at the
-  // end of a struct.
-  struct S {
-    unsigned b : 24;
-  };
-  unsigned read(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N34read
-    // CHECK-X86-64:   %[[ptr:.*]] = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-X86-64:   %[[val:.*]] = load i32* %[[ptr]]
-    // CHECK-X86-64:   %[[and:.*]] = and i32 %[[val]], 16777215
-    // CHECK-X86-64:                 ret i32 %[[and]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N34read
-    // CHECK-PPC64:   %[[ptr:.*]] = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-PPC64:   %[[val:.*]] = load i32* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]] = lshr i32 %[[val]], 8
-    // CHECK-PPC64:                 ret i32 %[[shr]]
-    return s->b;
-  }
-  void write(S* s, unsigned x) {
-    // CHECK-X86-64: define void @_ZN2N35write
-    // CHECK-X86-64:   %[[ptr:.*]]     = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-X86-64:   %[[old:.*]]     = load i32* %[[ptr]]
-    // CHECK-X86-64:   %[[x_and:.*]]   = and i32 %{{.*}}, 16777215
-    // CHECK-X86-64:   %[[old_and:.*]] = and i32 %[[old]], -16777216
-    // CHECK-X86-64:   %[[new:.*]]     = or i32 %[[old_and]], %[[x_and]]
-    // CHECK-X86-64:                     store i32 %[[new]], i32* %[[ptr]]
-    // CHECK-PPC64: define void @_ZN2N35write
-    // CHECK-PPC64:   %[[ptr:.*]]     = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-PPC64:   %[[old:.*]]     = load i32* %[[ptr]]
-    // CHECK-PPC64:   %[[x_and:.*]]   = and i32 %{{.*}}, 16777215
-    // CHECK-PPC64:   %[[x_shl:.*]]   = shl i32 %[[x_and]], 8
-    // CHECK-PPC64:   %[[old_and:.*]] = and i32 %[[old]], 255
-    // CHECK-PPC64:   %[[new:.*]]     = or i32 %[[old_and]], %[[x_shl]]
-    // CHECK-PPC64:                     store i32 %[[new]], i32* %[[ptr]]
-    s->b = x;
-  }
-}
-
-namespace N4 {
-  // Do NOT widen loads and stores to bitfields into padding at the end of
-  // a class which might end up with members inside of it when inside a derived
-  // class.
-  struct Base {
-    virtual ~Base() {}
-
-    unsigned b : 24;
-  };
-  // Imagine some other translation unit introduces:
-#if 0
-  struct Derived : public Base {
-    char c;
-  };
-#endif
-  unsigned read(Base* s) {
-    // FIXME: We should widen this load as long as the function isn't being
-    // instrumented by thread-sanitizer.
-    //
-    // CHECK-X86-64: define i32 @_ZN2N44read
-    // CHECK-X86-64:   %[[gep:.*]] = getelementptr inbounds {{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-X86-64:   %[[ptr:.*]] = bitcast [3 x i8]* %[[gep]] to i24*
-    // CHECK-X86-64:   %[[val:.*]] = load i24* %[[ptr]]
-    // CHECK-X86-64:   %[[ext:.*]] = zext i24 %[[val]] to i32
-    // CHECK-X86-64:                 ret i32 %[[ext]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N44read
-    // CHECK-PPC64:   %[[gep:.*]] = getelementptr inbounds {{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-PPC64:   %[[ptr:.*]] = bitcast [3 x i8]* %[[gep]] to i24*
-    // CHECK-PPC64:   %[[val:.*]] = load i24* %[[ptr]]
-    // CHECK-PPC64:   %[[ext:.*]] = zext i24 %[[val]] to i32
-    // CHECK-PPC64:                 ret i32 %[[ext]]
-    return s->b;
-  }
-  void write(Base* s, unsigned x) {
-    // CHECK-X86-64: define void @_ZN2N45write
-    // CHECK-X86-64:   %[[gep:.*]] = getelementptr inbounds {{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-X86-64:   %[[ptr:.*]] = bitcast [3 x i8]* %[[gep]] to i24*
-    // CHECK-X86-64:   %[[new:.*]] = trunc i32 %{{.*}} to i24
-    // CHECK-X86-64:                 store i24 %[[new]], i24* %[[ptr]]
-    // CHECK-PPC64: define void @_ZN2N45write
-    // CHECK-PPC64:   %[[gep:.*]] = getelementptr inbounds {{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-PPC64:   %[[ptr:.*]] = bitcast [3 x i8]* %[[gep]] to i24*
-    // CHECK-PPC64:   %[[new:.*]] = trunc i32 %{{.*}} to i24
-    // CHECK-PPC64:                 store i24 %[[new]], i24* %[[ptr]]
-    s->b = x;
-  }
-}
-
-namespace N5 {
-  // Widen through padding at the end of a struct even if that struct
-  // participates in a union with another struct which has a separate field in
-  // that location. The reasoning is that if the operation is storing to that
-  // member of the union, it must be the active member, and thus we can write
-  // through the padding. If it is a load, it might be a load of a common
-  // prefix through a non-active member, but in such a case the extra bits
-  // loaded are masked off anyways.
-  union U {
-    struct X { unsigned b : 24; char c; } x;
-    struct Y { unsigned b : 24; } y;
-  };
-  unsigned read(U* u) {
-    // CHECK-X86-64: define i32 @_ZN2N54read
-    // CHECK-X86-64:   %[[ptr:.*]] = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-X86-64:   %[[val:.*]] = load i32* %[[ptr]]
-    // CHECK-X86-64:   %[[and:.*]] = and i32 %[[val]], 16777215
-    // CHECK-X86-64:                 ret i32 %[[and]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N54read
-    // CHECK-PPC64:   %[[ptr:.*]] = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-PPC64:   %[[val:.*]] = load i32* %[[ptr]]
-    // CHECK-PPC64:   %[[shr:.*]] = lshr i32 %[[val]], 8
-    // CHECK-PPC64:                 ret i32 %[[shr]]
-    return u->y.b;
-  }
-  void write(U* u, unsigned x) {
-    // CHECK-X86-64: define void @_ZN2N55write
-    // CHECK-X86-64:   %[[ptr:.*]]     = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-X86-64:   %[[old:.*]]     = load i32* %[[ptr]]
-    // CHECK-X86-64:   %[[x_and:.*]]   = and i32 %{{.*}}, 16777215
-    // CHECK-X86-64:   %[[old_and:.*]] = and i32 %[[old]], -16777216
-    // CHECK-X86-64:   %[[new:.*]]     = or i32 %[[old_and]], %[[x_and]]
-    // CHECK-X86-64:                     store i32 %[[new]], i32* %[[ptr]]
-    // CHECK-PPC64: define void @_ZN2N55write
-    // CHECK-PPC64:   %[[ptr:.*]]     = bitcast %{{.*}}* %{{.*}} to i32*
-    // CHECK-PPC64:   %[[old:.*]]     = load i32* %[[ptr]]
-    // CHECK-PPC64:   %[[x_and:.*]]   = and i32 %{{.*}}, 16777215
-    // CHECK-PPC64:   %[[x_shl:.*]]   = shl i32 %[[x_and]], 8
-    // CHECK-PPC64:   %[[old_and:.*]] = and i32 %[[old]], 255
-    // CHECK-PPC64:   %[[new:.*]]     = or i32 %[[old_and]], %[[x_shl]]
-    // CHECK-PPC64:                     store i32 %[[new]], i32* %[[ptr]]
-    u->y.b = x;
-  }
-}
-
-namespace N6 {
-  // Zero-length bitfields partition the memory locations of bitfields for the
-  // purposes of the memory model. That means stores must not span zero-length
-  // bitfields and loads may only span them when we are not instrumenting with
-  // thread sanitizer.
-  // FIXME: We currently don't widen loads even without thread sanitizer, even
-  // though we could.
-  struct S {
-    unsigned b1 : 24;
-    unsigned char : 0;
-    unsigned char b2 : 8;
-  };
-  unsigned read(S* s) {
-    // CHECK-X86-64: define i32 @_ZN2N64read
-    // CHECK-X86-64:   %[[ptr1:.*]] = bitcast {{.*}}* %{{.*}} to i24*
-    // CHECK-X86-64:   %[[val1:.*]] = load i24* %[[ptr1]]
-    // CHECK-X86-64:   %[[ext1:.*]] = zext i24 %[[val1]] to i32
-    // CHECK-X86-64:   %[[ptr2:.*]] = getelementptr inbounds {{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-X86-64:   %[[val2:.*]] = load i8* %[[ptr2]]
-    // CHECK-X86-64:   %[[ext2:.*]] = zext i8 %[[val2]] to i32
-    // CHECK-X86-64:   %[[add:.*]]  = add nsw i32 %[[ext1]], %[[ext2]]
-    // CHECK-X86-64:                  ret i32 %[[add]]
-    // CHECK-PPC64: define zeroext i32 @_ZN2N64read
-    // CHECK-PPC64:   %[[ptr1:.*]] = bitcast {{.*}}* %{{.*}} to i24*
-    // CHECK-PPC64:   %[[val1:.*]] = load i24* %[[ptr1]]
-    // CHECK-PPC64:   %[[ext1:.*]] = zext i24 %[[val1]] to i32
-    // CHECK-PPC64:   %[[ptr2:.*]] = getelementptr inbounds {{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-PPC64:   %[[val2:.*]] = load i8* %[[ptr2]]
-    // CHECK-PPC64:   %[[ext2:.*]] = zext i8 %[[val2]] to i32
-    // CHECK-PPC64:   %[[add:.*]]  = add nsw i32 %[[ext1]], %[[ext2]]
-    // CHECK-PPC64:                  ret i32 %[[add]]
-    return s->b1 + s->b2;
-  }
-  void write(S* s, unsigned x) {
-    // CHECK-X86-64: define void @_ZN2N65write
-    // CHECK-X86-64:   %[[ptr1:.*]] = bitcast {{.*}}* %{{.*}} to i24*
-    // CHECK-X86-64:   %[[new1:.*]] = trunc i32 %{{.*}} to i24
-    // CHECK-X86-64:                  store i24 %[[new1]], i24* %[[ptr1]]
-    // CHECK-X86-64:   %[[new2:.*]] = trunc i32 %{{.*}} to i8
-    // CHECK-X86-64:   %[[ptr2:.*]] = getelementptr inbounds {{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-X86-64:                  store i8 %[[new2]], i8* %[[ptr2]]
-    // CHECK-PPC64: define void @_ZN2N65write
-    // CHECK-PPC64:   %[[ptr1:.*]] = bitcast {{.*}}* %{{.*}} to i24*
-    // CHECK-PPC64:   %[[new1:.*]] = trunc i32 %{{.*}} to i24
-    // CHECK-PPC64:                  store i24 %[[new1]], i24* %[[ptr1]]
-    // CHECK-PPC64:   %[[new2:.*]] = trunc i32 %{{.*}} to i8
-    // CHECK-PPC64:   %[[ptr2:.*]] = getelementptr inbounds {{.*}}* %{{.*}}, i32 0, i32 1
-    // CHECK-PPC64:                  store i8 %[[new2]], i8* %[[ptr2]]
-    s->b1 = x;
-    s->b2 = x;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-byref-cxx-objc.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-byref-cxx-objc.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-byref-cxx-objc.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -fblocks | FileCheck %s
-// rdar://8594790
-
-struct A {
-	int x;
-	A(const A &);
-	A();
-	~A();
-};
-
-int main()
-{
-	__block A BYREF_VAR;
-        ^{ BYREF_VAR.x = 1234; };
-	return 0;
-}
-
-// CHECK: define internal void @__Block_byref_object_copy_
-// CHECK: call {{.*}} @_ZN1AC1ERKS_
-// CHECK: define internal void @__Block_byref_object_dispose_
-// CHECK: call {{.*}} @_ZN1AD1Ev
-// CHECK: define internal void @__copy_helper_block_
-// CHECK: call void @_Block_object_assign
-// CHECK: define internal void @__destroy_helper_block_
-// CHECK: call void @_Block_object_dispose
-
-// rdar://problem/11135650
-namespace test1 {
-  struct A { int x; A(); ~A(); };
-
-  void test() {
-    return;
-    __block A a;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-destruct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-destruct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-destruct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
-
-struct A { ~A(); };
-
-void f() {
-  __block A a;
-}
-
-// CHECK: call void @_ZN1AD1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-in-ctor-dtor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-in-ctor-dtor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block-in-ctor-dtor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
-
-typedef void (^dispatch_block_t)(void);
-
-void dispatch_once(dispatch_block_t);
-
-class Zone {
-public:
-  Zone();
-  ~Zone();
-};
-
-Zone::Zone() {
-    dispatch_once(^{});
-    dispatch_once(^{});
-}
-
-Zone::~Zone() {
-    dispatch_once(^{});
-    dispatch_once(^{});
-}
-
-class X : public virtual Zone {
-  X();
-  ~X();
-};
-
-X::X() {
-    dispatch_once(^{});
-    dispatch_once(^{});
-};
-
-X::~X() {
-    dispatch_once(^{});
-    dispatch_once(^{});
-};
-
-
-// CHECK: define internal void @___ZN4ZoneC2Ev_block_invoke
-// CHECK: define internal void @___ZN4ZoneC2Ev_block_invoke_
-// CHECK: define internal void @___ZN4ZoneD2Ev_block_invoke
-// CHECK: define internal void @___ZN4ZoneD2Ev_block_invoke_
-// CHECK: define internal void @___ZN1XC1Ev_block_invoke
-// CHECK: define internal void @___ZN1XC1Ev_block_invoke_
-// CHECK: define internal void @___ZN1XC2Ev_block_invoke
-// CHECK: define internal void @___ZN1XC2Ev_block_invoke_
-// CHECK: define internal void @___ZN1XD2Ev_block_invoke
-// CHECK: define internal void @___ZN1XD2Ev_block_invoke_

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/block.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -fblocks 
-// Just test that this doesn't crash the compiler...
-
-void func(void*);
-
-struct Test
-{
-  virtual void use() { func((void*)this); }
-  Test(Test&c) { func((void*)this); }
-  Test() { func((void*)this); }
-};
-
-void useBlock(void (^)(void));
-
-int main (void) {
-  __block Test t;
-  useBlock(^(void) { t.use(); });
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/blocks-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/blocks-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/blocks-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,114 +0,0 @@
-// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -std=c++11 -emit-llvm -o - | FileCheck %s
-
-template <class T> void takeItByValue(T);
-void takeABlock(void (^)());
-
-// rdar://problem/11022704
-namespace test_int {
-  void test() {
-    const int x = 100;
-    takeABlock(^{ takeItByValue(x); });
-    // CHECK: call void @_Z13takeItByValueIiEvT_(i32 100)
-  }
-}
-
-namespace test_int_ref {
-  void test() {
-    const int y = 200;
-    const int &x = y;
-    takeABlock(^{ takeItByValue(x); });
-
-    // TODO: there's no good reason that this isn't foldable.
-    // CHECK: call void @_Z13takeItByValueIiEvT_(i32 {{%.*}})
-  }
-}
-
-namespace test_float {
-  void test() {
-    const float x = 1;
-    takeABlock(^{ takeItByValue(x); });
-    // CHECK: call void @_Z13takeItByValueIfEvT_(float 1.0
-  }
-}
-
-namespace test_float_ref {
-  void test() {
-    const float y = 100;
-    const float &x = y;
-    takeABlock(^{ takeItByValue(x); });
-
-    // TODO: there's no good reason that this isn't foldable.
-    // CHECK: call void @_Z13takeItByValueIfEvT_(float {{%.*}})
-  }
-}
-
-namespace test_complex_int {
-  void test() {
-    constexpr _Complex int x = 500;
-    takeABlock(^{ takeItByValue(x); });
-    // CHECK:      store i32 500,
-
-    // CHECK:      store i32 500,
-    // CHECK-NEXT: store i32 0,
-    // CHECK-NEXT: [[COERCE:%.*]] = bitcast
-    // CHECK-NEXT: [[CVAL:%.*]] = load i64* [[COERCE]]
-    // CHECK-NEXT: call void @_Z13takeItByValueICiEvT_(i64 [[CVAL]])
-  }
-}
-
-namespace test_complex_int_ref {
-  void test() {
-    const _Complex int y = 100;
-    const _Complex int &x = y;
-    takeABlock(^{ takeItByValue(x); });
-    // CHECK: call void @_Z13takeItByValueICiEvT_(i64
-  }
-}
-
-namespace test_complex_int_ref_mutable {
-  _Complex int y = 100;
-  void test() {
-    const _Complex int &x = y;
-    takeABlock(^{ takeItByValue(x); });
-    // CHECK:      [[R:%.*]] = load i32* getelementptr inbounds ({ i32, i32 }* @_ZN28test_complex_int_ref_mutable1yE, i32 0, i32 0)
-    // CHECK-NEXT: [[I:%.*]] = load i32* getelementptr inbounds ({ i32, i32 }* @_ZN28test_complex_int_ref_mutable1yE, i32 0, i32 1)
-    // CHECK-NEXT: [[RSLOT:%.*]] = getelementptr inbounds { i32, i32 }* [[CSLOT:%.*]], i32 0, i32 0
-    // CHECK-NEXT: [[ISLOT:%.*]] = getelementptr inbounds { i32, i32 }* [[CSLOT]], i32 0, i32 1
-    // CHECK-NEXT: store i32 [[R]], i32* [[RSLOT]]
-    // CHECK-NEXT: store i32 [[I]], i32* [[ISLOT]]
-    // CHECK-NEXT: [[COERCE:%.*]] = bitcast { i32, i32 }* [[CSLOT]] to i64*
-    // CHECK-NEXT: [[CVAL:%.*]] = load i64* [[COERCE]],
-    // CHECK-NEXT: call void @_Z13takeItByValueICiEvT_(i64 [[CVAL]])
-  }
-}
-
-// rdar://13295759
-namespace test_block_in_lambda {
-  void takeBlock(void (^block)());
-
-  // The captured variable has to be non-POD so that we have a copy expression.
-  struct A {
-    void *p;
-    A(const A &);
-    ~A();
-    void use() const;
-  };
-
-  void test(A a) {
-    auto lambda = [a]() {
-      takeBlock(^{ a.use(); });
-    };
-    lambda(); // make sure we emit the invocation function
-  }
-  // CHECK:    define internal void @"_ZZN20test_block_in_lambda4testENS_1AEENK3$_0clEv"(
-  // CHECK:      [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]], align 8
-  // CHECK:      [[THIS:%.*]] = load [[LAMBDA_T:%.*]]**
-  // CHECK:      [[TO_DESTROY:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[LAMBDA_T]]* [[THIS]], i32 0, i32 0
-  // CHECK-NEXT: call void @_ZN20test_block_in_lambda1AC1ERKS0_({{.*}}* [[T0]], {{.*}}* [[T1]])
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*
-  // CHECK-NEXT: call void @_ZN20test_block_in_lambda9takeBlockEU13block_pointerFvvE(void ()* [[T0]])
-  // CHECK-NEXT: call void @_ZN20test_block_in_lambda1AD1Ev({{.*}}* [[TO_DESTROY]])
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,255 +0,0 @@
-// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
-
-namespace test0 {
-  // CHECK: define void @_ZN5test04testEi(
-  // CHECK: define internal void @___ZN5test04testEi_block_invoke{{.*}}(
-  // CHECK: define internal void @___ZN5test04testEi_block_invoke_2{{.*}}(
-  void test(int x) {
-    ^{ ^{ (void) x; }; };
-  }
-}
-
-extern void (^out)();
-
-namespace test1 {
-  // Capturing const objects doesn't require a local block.
-  // CHECK: define void @_ZN5test15test1Ev()
-  // CHECK:   store void ()* bitcast ({{.*}} @__block_literal_global{{.*}} to void ()*), void ()** @out
-  void test1() {
-    const int NumHorsemen = 4;
-    out = ^{ (void) NumHorsemen; };
-  }
-
-  // That applies to structs too...
-  // CHECK: define void @_ZN5test15test2Ev()
-  // CHECK:   store void ()* bitcast ({{.*}} @__block_literal_global{{.*}} to void ()*), void ()** @out
-  struct loc { double x, y; };
-  void test2() {
-    const loc target = { 5, 6 };
-    out = ^{ (void) target; };
-  }
-
-  // ...unless they have mutable fields...
-  // CHECK: define void @_ZN5test15test3Ev()
-  // CHECK:   [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK:   [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*
-  // CHECK:   store void ()* [[T0]], void ()** @out
-  struct mut { mutable int x; };
-  void test3() {
-    const mut obj = { 5 };
-    out = ^{ (void) obj; };
-  }
-
-  // ...or non-trivial destructors...
-  // CHECK: define void @_ZN5test15test4Ev()
-  // CHECK:   [[OBJ:%.*]] = alloca
-  // CHECK:   [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK:   [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*
-  // CHECK:   store void ()* [[T0]], void ()** @out
-  struct scope { int x; ~scope(); };
-  void test4() {
-    const scope obj = { 5 };
-    out = ^{ (void) obj; };
-  }
-
-  // ...or non-trivial copy constructors, but it's not clear how to do
-  // that and still have a constant initializer in '03.
-}
-
-namespace test2 {
-  struct A {
-    A();
-    A(const A &);
-    ~A();
-  };
-
-  struct B {
-    B();
-    B(const B &);
-    ~B();
-  };
-
-  // CHECK: define void @_ZN5test24testEv()
-  void test() {
-    __block A a;
-    __block B b;
-  }
-
-  // CHECK: define internal void @__Block_byref_object_copy
-  // CHECK: call void @_ZN5test21AC1ERKS0_(
-
-  // CHECK: define internal void @__Block_byref_object_dispose
-  // CHECK: call void @_ZN5test21AD1Ev(
-
-  // CHECK: define internal void @__Block_byref_object_copy
-  // CHECK: call void @_ZN5test21BC1ERKS0_(
-
-  // CHECK: define internal void @__Block_byref_object_dispose
-  // CHECK: call void @_ZN5test21BD1Ev(
-}
-
-// rdar://problem/9334739
-// Make sure we mark destructors for parameters captured in blocks.
-namespace test3 {
-  struct A {
-    A(const A&);
-    ~A();
-  };
-
-  struct B : A {
-  };
-
-  void test(B b) {
-    extern void consume(void(^)());
-    consume(^{ (void) b; });
-  }
-}
-
-// rdar://problem/9971485
-namespace test4 {
-  struct A {
-    A();
-    ~A();
-  };
-
-  void foo(A a);
-
-  void test() {
-    extern void consume(void(^)());
-    consume(^{ return foo(A()); });
-  }
-  // CHECK: define void @_ZN5test44testEv()
-  // CHECK: define internal void @___ZN5test44testEv_block_invoke
-  // CHECK: [[TMP:%.*]] = alloca [[A:%.*]], align 1
-  // CHECK-NEXT: store i8* [[BLOCKDESC:%.*]], i8** {{.*}}, align 8
-  // CHECK-NEXT: load i8*
-  // CHECK-NEXT: bitcast i8* [[BLOCKDESC]] to <{ i8*, i32, i32, i8*, %struct.__block_descriptor* }>*
-  // CHECK:      call void @_ZN5test41AC1Ev([[A]]* [[TMP]])
-  // CHECK-NEXT: call void @_ZN5test43fooENS_1AE([[A]]* [[TMP]])
-  // CHECK-NEXT: call void @_ZN5test41AD1Ev([[A]]* [[TMP]])
-  // CHECK-NEXT: ret void
-}
-
-namespace test5 {
-  struct A {
-    unsigned afield;
-    A();
-    A(const A&);
-    ~A();
-    void foo() const;
-  };
-
-  void doWithBlock(void(^)());
-
-  void test(bool cond) {
-    A x;
-    void (^b)() = (cond ? ^{ x.foo(); } : (void(^)()) 0);
-    doWithBlock(b);
-  }
-
-  // CHECK:    define void @_ZN5test54testEb(
-  // CHECK:      [[COND:%.*]] = alloca i8
-  // CHECK-NEXT: [[X:%.*]] = alloca [[A:%.*]], align 4
-  // CHECK-NEXT: [[B:%.*]] = alloca void ()*, align 8
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:.*]], align 8
-  // CHECK-NEXT: [[CLEANUP_ACTIVE:%.*]] = alloca i1
-  // CHECK-NEXT: [[T0:%.*]] = zext i1
-  // CHECK-NEXT: store i8 [[T0]], i8* [[COND]], align 1
-  // CHECK-NEXT: call void @_ZN5test51AC1Ev([[A]]* [[X]])
-  // CHECK-NEXT: [[CLEANUP_ADDR:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK-NEXT: [[T0:%.*]] = load i8* [[COND]], align 1
-  // CHECK-NEXT: [[T1:%.*]] = trunc i8 [[T0]] to i1
-  // CHECK-NEXT: store i1 false, i1* [[CLEANUP_ACTIVE]]
-  // CHECK-NEXT: br i1 [[T1]],
-
-  // CHECK-NOT:  br
-  // CHECK:      [[CAPTURE:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK-NEXT: call void @_ZN5test51AC1ERKS0_([[A]]* [[CAPTURE]], [[A]]* [[X]])
-  // CHECK-NEXT: store i1 true, i1* [[CLEANUP_ACTIVE]]
-  // CHECK-NEXT: bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*
-  // CHECK-NEXT: br label
-  // CHECK:      br label
-  // CHECK:      phi
-  // CHECK-NEXT: store
-  // CHECK-NEXT: load
-  // CHECK-NEXT: call void @_ZN5test511doWithBlockEU13block_pointerFvvE(
-  // CHECK-NEXT: [[T0:%.*]] = load i1* [[CLEANUP_ACTIVE]]
-  // CHECK-NEXT: br i1 [[T0]]
-  // CHECK:      call void @_ZN5test51AD1Ev([[A]]* [[CLEANUP_ADDR]])
-  // CHECK-NEXT: br label
-  // CHECK:      call void @_ZN5test51AD1Ev([[A]]* [[X]])
-  // CHECK-NEXT: ret void
-}
-
-namespace test6 {
-  struct A {
-    A();
-    ~A();
-  };
-
-  void foo(const A &, void (^)());
-  void bar();
-
-  void test() {
-    // Make sure that the temporary cleanup isn't somehow captured
-    // within the block.
-    foo(A(), ^{ bar(); });
-    bar();
-  }
-
-  // CHECK:    define void @_ZN5test64testEv()
-  // CHECK:      [[TEMP:%.*]] = alloca [[A:%.*]], align 1
-  // CHECK-NEXT: call void @_ZN5test61AC1Ev([[A]]* [[TEMP]])
-  // CHECK-NEXT: call void @_ZN5test63fooERKNS_1AEU13block_pointerFvvE(
-  // CHECK-NEXT: call void @_ZN5test61AD1Ev([[A]]* [[TEMP]])
-  // CHECK-NEXT: call void @_ZN5test63barEv()
-  // CHECK-NEXT: ret void
-}
-
-namespace test7 {
-  int f() {
-    static int n;
-    int *const p = &n;
-    return ^{ return *p; }();
-  }
-}
-
-namespace test8 {
-  // <rdar://problem/10832617>: failure to capture this after skipping rebuild
-  // of the 'this' pointer.
-  struct X {
-    int x;
-
-    template<typename T>
-    int foo() {
-      return ^ { return x; }();
-    }
-  };
-
-  template int X::foo<int>();
-}
-
-// rdar://13459289
-namespace test9 {
-  struct B {
-    void *p;
-    B();
-    B(const B&);
-    ~B();
-  };
-
-  void use_block(void (^)());
-  void use_block_2(void (^)(), const B &a);
-
-  // Ensuring that creating a non-trivial capture copy expression
-  // doesn't end up stealing the block registration for the block we
-  // just parsed.  That block must have captures or else it won't
-  // force registration.  Must occur within a block for some reason.
-  void test() {
-    B x;
-    use_block(^{
-        int y;
-        use_block_2(^{ (void)y; }, x);
-    });
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bool-bitfield.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bool-bitfield.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/bool-bitfield.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -verify -emit-llvm -o - %s \
-// RUN:   | FileCheck %s
-
-// PR14638; make sure this doesn't crash.
-struct A {
-    bool m_sorted : 1;
-};
-void func1(bool b, A& a1)
-{
-    if ((a1.m_sorted = b)) {}
-}
-// CHECK: define void @_Z5func1bR1A
-// CHECK: br i1
-// CHECK: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/builtins.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/builtins.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/builtins.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// PR8839
-extern "C" char memmove();
-
-int main() {
-  // CHECK: call {{signext i8|i8}} @memmove()
-  return memmove();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/c-linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/c-linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/c-linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-// pr6644
-
-extern "C" {
-  namespace N {
-    struct X { 
-      virtual void f();
-    };
-    void X::f() { }
-  }
-}
-
-// CHECK: define void @_ZN1N1X1fEv
-
-extern "C" {
-  static void test2_f() {
-  }
-  // CHECK: define internal void @_Z7test2_fv
-  static void test2_f(int x) {
-  }
-  // CHECK: define internal void @_Z7test2_fi
-  void test2_use() {
-    test2_f();
-    test2_f(42);
-  }
-}
-
-extern "C" {
-  struct test3_s {
-  };
-  bool operator==(const int& a, const test3_s& b)  {
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/c99-variable-length-array.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/c99-variable-length-array.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/c99-variable-length-array.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-struct X {
-  X();
-  ~X();
-};
-
-struct Y {
-  Y();
-  ~Y();
-};
-
-// CHECK: define void @_Z1fiPPKc(
-void f(int argc, const char* argv[]) {
-  // CHECK: call void @_ZN1XC1Ev
-  X x;
-  // CHECK: call i8* @llvm.stacksave(
-  const char *argv2[argc];
-  // CHECK: call void @_ZN1YC1Ev
-  Y y;
-  for (int i = 0; i != argc; ++i)
-    argv2[i] = argv[i];
-
-  // CHECK: call void @_ZN1YD1Ev
-  // CHECK: call void @llvm.stackrestore
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: ret void
-}
-
-namespace PR11744 {
-  // Make sure this doesn't crash; there was a use-after-free issue
-  // for this testcase.
-  template<typename T> int f(int n) {
-    T arr[3][n];
-    return 3;
-  }
-  int test = f<int>(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/call-arg-zero-temp.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/call-arg-zero-temp.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/call-arg-zero-temp.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-
-extern "C" int printf(...);
-
-struct obj{ int a; float b; double d; };
-
-void foo(obj o) {
-  printf("%d  %f  %f\n", o.a, o.b, o.d);
-}
-
-int main() {
-  obj o = obj();
-  foo(obj());
-}
-
-// CHECK-LP64: callq    __Z3foo3obj
-
-// CHECK-LP32: calll     __Z3foo3obj

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cast-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cast-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cast-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-struct A {
-  A(int);
-};
-
-struct B {
-  B(A);
-};
-
-int main () {
-  (B)10;
-  B(10);
-  static_cast<B>(10);
-}
-
-// CHECK-LP64: callq    __ZN1AC1Ei
-// CHECK-LP64: callq    __ZN1BC1E1A
-// CHECK-LP64: callq    __ZN1AC1Ei
-// CHECK-LP64: callq    __ZN1BC1E1A
-// CHECK-LP64: callq    __ZN1AC1Ei
-// CHECK-LP64: callq    __ZN1BC1E1A
-
-// CHECK-LP32: calll     L__ZN1AC1Ei
-// CHECK-LP32: calll     L__ZN1BC1E1A
-// CHECK-LP32: calll     L__ZN1AC1Ei
-// CHECK-LP32: calll     L__ZN1BC1E1A
-// CHECK-LP32: calll     L__ZN1AC1Ei
-// CHECK-LP32: calll     L__ZN1BC1E1A

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/casts.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/casts.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/casts.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-// PR5248
-namespace PR5248 {
-struct A {
-  void copyFrom(const A &src);
-  void addRef(void);
-
-  A& operator=(int);
-};
-
-void A::copyFrom(const A &src) {
-  ((A &)src).addRef();
-}
-}
-
-// reinterpret_cast to self
-void test(PR5248::A* a) {
-  reinterpret_cast<PR5248::A&>(*a) = 17;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/catch-undef-behavior.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/catch-undef-behavior.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/catch-undef-behavior.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,324 +0,0 @@
-// RUN: %clang_cc1 -fsanitize=signed-integer-overflow,integer-divide-by-zero,float-divide-by-zero,shift,unreachable,return,vla-bound,alignment,null,vptr,object-size,float-cast-overflow,bool,enum,bounds -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s
-
-struct S {
-  double d;
-  int a, b;
-  virtual int f();
-};
-
-struct T : S {};
-
-// CHECK: @_Z17reference_binding
-void reference_binding(int *p, S *q) {
-  // C++ core issue 453: If an lvalue to which a reference is directly bound
-  // designates neither an existing object or function of an appropriate type,
-  // nor a region of storage of suitable size and alignment to contain an object
-  // of the reference's type, the behavior is undefined.
-
-  // CHECK: icmp ne {{.*}}, null
-
-  // CHECK: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64
-  // CHECK-NEXT: icmp uge i64 %[[SIZE]], 4
-
-  // CHECK: %[[PTRINT:.*]] = ptrtoint
-  // CHECK-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRINT]], 3
-  // CHECK-NEXT: icmp eq i64 %[[MISALIGN]], 0
-  int &r = *p;
-
-  // A reference is not required to refer to an object within its lifetime.
-  // CHECK-NOT: __ubsan_handle_dynamic_type_cache_miss
-  S &r2 = *q;
-}
-
-// CHECK: @_Z13member_access
-void member_access(S *p) {
-  // (1a) Check 'p' is appropriately sized and aligned for member access.
-
-  // CHECK: icmp ne {{.*}}, null
-
-  // CHECK: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64
-  // CHECK-NEXT: icmp uge i64 %[[SIZE]], 24
-
-  // CHECK: %[[PTRINT:.*]] = ptrtoint
-  // CHECK-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRINT]], 7
-  // CHECK-NEXT: icmp eq i64 %[[MISALIGN]], 0
-
-  // (1b) Check that 'p' actually points to an 'S'.
-
-  // CHECK: %[[VPTRADDR:.*]] = bitcast {{.*}} to i64*
-  // CHECK-NEXT: %[[VPTR:.*]] = load i64* %[[VPTRADDR]]
-  //
-  // hash_16_bytes:
-  //
-  // If this number changes, it indicates that either the mangled name of ::S
-  // has changed, or that LLVM's hashing function has changed. The latter case
-  // is OK if the hashing function is still stable.
-  //
-  // The two hash values are for 64- and 32-bit Clang binaries, respectively.
-  // FIXME: We should produce a 64-bit value either way.
-  //
-  // CHECK-NEXT: xor i64 {{-4030275160588942838|2562089159}}, %[[VPTR]]
-  // CHECK-NEXT: mul i64 {{.*}}, -7070675565921424023
-  // CHECK-NEXT: lshr i64 {{.*}}, 47
-  // CHECK-NEXT: xor i64
-  // CHECK-NEXT: xor i64 %[[VPTR]]
-  // CHECK-NEXT: mul i64 {{.*}}, -7070675565921424023
-  // CHECK-NEXT: lshr i64 {{.*}}, 47
-  // CHECK-NEXT: xor i64
-  // CHECK-NEXT: %[[HASH:.*]] = mul i64 {{.*}}, -7070675565921424023
-  //
-  // Check the hash against the table:
-  //
-  // CHECK-NEXT: %[[IDX:.*]] = and i64 %{{.*}}, 127
-  // CHECK-NEXT: getelementptr inbounds [128 x i64]* @__ubsan_vptr_type_cache, i32 0, i64 %[[IDX]]
-  // CHECK-NEXT: %[[CACHEVAL:.*]] = load i64*
-  // CHECK-NEXT: icmp eq i64 %[[CACHEVAL]], %[[HASH]]
-  // CHECK-NEXT: br i1
-
-  // CHECK: call void @__ubsan_handle_dynamic_type_cache_miss({{.*}}, i64 %{{.*}}, i64 %[[HASH]])
-  // CHECK-NOT: unreachable
-  // CHECK: {{.*}}:
-
-  // (2) Check 'p->b' is appropriately sized and aligned for a load.
-
-  // FIXME: Suppress this in the trivial case of a member access, because we
-  // know we've just checked the member access expression itself.
-
-  // CHECK: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64
-  // CHECK-NEXT: icmp uge i64 %[[SIZE]], 4
-
-  // CHECK: %[[PTRINT:.*]] = ptrtoint
-  // CHECK-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRINT]], 3
-  // CHECK-NEXT: icmp eq i64 %[[MISALIGN]], 0
-  int k = p->b;
-
-  // (3a) Check 'p' is appropriately sized and aligned for member function call.
-
-  // CHECK: icmp ne {{.*}}, null
-
-  // CHECK: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64
-  // CHECK-NEXT: icmp uge i64 %[[SIZE]], 24
-
-  // CHECK: %[[PTRINT:.*]] = ptrtoint
-  // CHECK-NEXT: %[[MISALIGN:.*]] = and i64 %[[PTRINT]], 7
-  // CHECK-NEXT: icmp eq i64 %[[MISALIGN]], 0
-
-  // (3b) Check that 'p' actually points to an 'S'
-
-  // CHECK: load i64*
-  // CHECK-NEXT: xor i64 {{-4030275160588942838|2562089159}},
-  // [...]
-  // CHECK: getelementptr inbounds [128 x i64]* @__ubsan_vptr_type_cache, i32 0, i64 %
-  // CHECK: br i1
-  // CHECK: call void @__ubsan_handle_dynamic_type_cache_miss({{.*}}, i64 %{{.*}}, i64 %{{.*}})
-  // CHECK-NOT: unreachable
-  // CHECK: {{.*}}:
-
-  k = p->f();
-}
-
-// CHECK: @_Z12lsh_overflow
-int lsh_overflow(int a, int b) {
-  // CHECK: %[[INBOUNDS:.*]] = icmp ule i32 %[[RHS:.*]], 31
-  // CHECK-NEXT: br i1 %[[INBOUNDS]]
-
-  // CHECK: %[[SHIFTED_OUT_WIDTH:.*]] = sub nuw nsw i32 31, %[[RHS]]
-  // CHECK-NEXT: %[[SHIFTED_OUT:.*]] = lshr i32 %[[LHS:.*]], %[[SHIFTED_OUT_WIDTH]]
-
-  // This is present for C++11 but not for C: C++ core issue 1457 allows a '1'
-  // to be shifted into the sign bit, but not out of it.
-  // CHECK-NEXT: %[[SHIFTED_OUT_NOT_SIGN:.*]] = lshr i32 %[[SHIFTED_OUT]], 1
-
-  // CHECK-NEXT: %[[NO_OVERFLOW:.*]] = icmp eq i32 %[[SHIFTED_OUT_NOT_SIGN]], 0
-
-  // CHECK: %[[VALID:.*]] = phi i1 [ %[[INBOUNDS]], {{.*}} ], [ %[[NO_OVERFLOW]], {{.*}} ]
-  // CHECK-NEXT: br i1 %[[VALID]]
-
-  // CHECK: call void @__ubsan_handle_shift_out_of_bounds
-  // CHECK-NOT: call void @__ubsan_handle_shift_out_of_bounds
-
-  // CHECK: %[[RET:.*]] = shl i32 %[[LHS]], %[[RHS]]
-  // CHECK-NEXT: ret i32 %[[RET]]
-  return a << b;
-}
-
-// CHECK: @_Z9no_return
-int no_return() {
-  // CHECK:      call void @__ubsan_handle_missing_return(i8* bitcast ({{.*}}* @{{.*}} to i8*)) [[NR_NUW:#[0-9]+]]
-  // CHECK-NEXT: unreachable
-}
-
-// CHECK: @_Z9sour_bool
-bool sour_bool(bool *p) {
-  // CHECK: %[[OK:.*]] = icmp ule i8 {{.*}}, 1
-  // CHECK: br i1 %[[OK]]
-  // CHECK: call void @__ubsan_handle_load_invalid_value(i8* bitcast ({{.*}}), i64 {{.*}})
-  return *p;
-}
-
-enum E1 { e1a = 0, e1b = 127 } e1;
-enum E2 { e2a = -1, e2b = 64 } e2;
-enum E3 { e3a = (1u << 31) - 1 } e3;
-
-// CHECK: @_Z14bad_enum_value
-int bad_enum_value() {
-  // CHECK: %[[E1:.*]] = icmp ule i32 {{.*}}, 127
-  // CHECK: br i1 %[[E1]]
-  // CHECK: call void @__ubsan_handle_load_invalid_value(
-  int a = e1;
-
-  // CHECK: %[[E2HI:.*]] = icmp sle i32 {{.*}}, 127
-  // CHECK: %[[E2LO:.*]] = icmp sge i32 {{.*}}, -128
-  // CHECK: %[[E2:.*]] = and i1 %[[E2HI]], %[[E2LO]]
-  // CHECK: br i1 %[[E2]]
-  // CHECK: call void @__ubsan_handle_load_invalid_value(
-  int b = e2;
-
-  // CHECK: %[[E3:.*]] = icmp ule i32 {{.*}}, 2147483647
-  // CHECK: br i1 %[[E3]]
-  // CHECK: call void @__ubsan_handle_load_invalid_value(
-  int c = e3;
-  return a + b + c;
-}
-
-// CHECK: @_Z20bad_downcast_pointer
-void bad_downcast_pointer(S *p) {
-  // CHECK: %[[NONNULL:.*]] = icmp ne {{.*}}, null
-  // CHECK: br i1 %[[NONNULL]],
-
-  // CHECK: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64(
-  // CHECK: %[[E1:.*]] = icmp uge i64 %[[SIZE]], 24
-  // CHECK: %[[MISALIGN:.*]] = and i64 %{{.*}}, 7
-  // CHECK: %[[E2:.*]] = icmp eq i64 %[[MISALIGN]], 0
-  // CHECK: %[[E12:.*]] = and i1 %[[E1]], %[[E2]]
-  // CHECK: br i1 %[[E12]],
-
-  // CHECK: call void @__ubsan_handle_type_mismatch
-  // CHECK: br label
-
-  // CHECK: br i1 %{{.*}},
-
-  // CHECK: call void @__ubsan_handle_dynamic_type_cache_miss
-  // CHECK: br label
-  (void) static_cast<T*>(p);
-}
-
-// CHECK: @_Z22bad_downcast_reference
-void bad_downcast_reference(S &p) {
-  // CHECK: %[[E1:.*]] = icmp ne {{.*}}, null
-  // CHECK-NOT: br i1
-  // CHECK: %[[SIZE:.*]] = call i64 @llvm.objectsize.i64(
-  // CHECK: %[[E2:.*]] = icmp uge i64 %[[SIZE]], 24
-  // CHECK: %[[E12:.*]] = and i1 %[[E1]], %[[E2]]
-  // CHECK: %[[MISALIGN:.*]] = and i64 %{{.*}}, 7
-  // CHECK: %[[E3:.*]] = icmp eq i64 %[[MISALIGN]], 0
-  // CHECK: %[[E123:.*]] = and i1 %[[E12]], %[[E3]]
-  // CHECK: br i1 %[[E123]],
-
-  // CHECK: call void @__ubsan_handle_type_mismatch
-  // CHECK: br label
-
-  // CHECK: br i1 %{{.*}},
-
-  // CHECK: call void @__ubsan_handle_dynamic_type_cache_miss
-  // CHECK: br label
-  (void) static_cast<T&>(p);
-}
-
-// CHECK: @_Z11array_index
-int array_index(const int (&a)[4], int n) {
-  // CHECK: %[[K1_OK:.*]] = icmp ult i64 %{{.*}}, 4
-  // CHECK: br i1 %[[K1_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  int k1 = a[n];
-
-  // CHECK: %[[R1_OK:.*]] = icmp ule i64 %{{.*}}, 4
-  // CHECK: br i1 %[[R1_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  const int *r1 = &a[n];
-
-  // CHECK: %[[K2_OK:.*]] = icmp ult i64 %{{.*}}, 8
-  // CHECK: br i1 %[[K2_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  int k2 = ((const int(&)[8])a)[n];
-
-  // CHECK: %[[K3_OK:.*]] = icmp ult i64 %{{.*}}, 4
-  // CHECK: br i1 %[[K3_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  int k3 = n[a];
-
-  return k1 + *r1 + k2;
-}
-
-// CHECK: @_Z17multi_array_index
-int multi_array_index(int n, int m) {
-  int arr[4][6];
-
-  // CHECK: %[[IDX2_OK:.*]] = icmp ult i64 %{{.*}}, 6
-  // CHECK: br i1 %[[IDX2_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-
-  // CHECK: %[[IDX1_OK:.*]] = icmp ult i64 %{{.*}}, 4
-  // CHECK: br i1 %[[IDX1_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  return arr[n][m];
-}
-
-// CHECK: @_Z11array_arith
-int array_arith(const int (&a)[4], int n) {
-  // CHECK: %[[K1_OK:.*]] = icmp ule i64 %{{.*}}, 4
-  // CHECK: br i1 %[[K1_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  const int *k1 = a + n;
-
-  // CHECK: %[[K2_OK:.*]] = icmp ule i64 %{{.*}}, 8
-  // CHECK: br i1 %[[K2_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  const int *k2 = (const int(&)[8])a + n;
-
-  return *k1 + *k2;
-}
-
-struct ArrayMembers {
-  int a1[5];
-  int a2[1];
-};
-// CHECK: @_Z18struct_array_index
-int struct_array_index(ArrayMembers *p, int n) {
-  // CHECK: %[[IDX_OK:.*]] = icmp ult i64 %{{.*}}, 5
-  // CHECK: br i1 %[[IDX_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  return p->a1[n];
-}
-
-// CHECK: @_Z16flex_array_index
-int flex_array_index(ArrayMembers *p, int n) {
-  // CHECK-NOT: call void @__ubsan_handle_out_of_bounds(
-  return p->a2[n];
-}
-
-extern int incomplete[];
-// CHECK: @_Z22incomplete_array_index
-int incomplete_array_index(int n) {
-  // CHECK-NOT: call void @__ubsan_handle_out_of_bounds(
-  return incomplete[n];
-}
-
-typedef __attribute__((ext_vector_type(4))) int V4I;
-// CHECK: @_Z12vector_index
-int vector_index(V4I v, int n) {
-  // CHECK: %[[IDX_OK:.*]] = icmp ult i64 %{{.*}}, 4
-  // CHECK: br i1 %[[IDX_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  return v[n];
-}
-
-// CHECK: @_Z12string_index
-char string_index(int n) {
-  // CHECK: %[[IDX_OK:.*]] = icmp ult i64 %{{.*}}, 6
-  // CHECK: br i1 %[[IDX_OK]]
-  // CHECK: call void @__ubsan_handle_out_of_bounds(
-  return "Hello"[n];
-}
-
-// CHECK: attributes [[NR_NUW]] = { noreturn nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/class-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/class-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/class-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,93 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// An extra byte should be allocated for an empty class.
-namespace Test1 {
-  // CHECK: %"struct.Test1::A" = type { i8 }
-  struct A { } *a;
-}
-
-namespace Test2 {
-  // No need to add tail padding here.
-  // CHECK: %"struct.Test2::A" = type { i8*, i32 }
-  struct A { void *a; int b; } *a;
-}
-
-namespace Test3 {
-  // C should have a vtable pointer.
-  // CHECK: %"struct.Test3::A" = type { i32 (...)**, i32 }
-  struct A { virtual void f(); int a; } *a;
-}
-
-namespace Test4 {
-  // Test from PR5589.
-  // CHECK: %"struct.Test4::B" = type { %"struct.Test4::A", i16, double }
-  // CHECK: %"struct.Test4::A" = type { i32, i8, float }
-  struct A {
-    int a;
-    char c;
-    float b;
-  };
-  struct B : public A {
-    short d;
-    double e;
-  } *b;
-}
-
-namespace Test5 {
-  struct A {
-    virtual void f();
-    char a;
-  };
-
-  // CHECK: %"struct.Test5::B" = type { [9 x i8], i8, i8, [5 x i8] }
-  struct B : A {
-    char b : 1;
-    char c;
-  } *b;
-}
-
-// PR10912: don't crash
-namespace Test6 {
-  template <typename T> class A {
-    // If T is complete, IR-gen will want to translate it recursively
-    // when translating T*.
-    T *foo;
-  };
-
-  class B;
-
-  // This causes IR-gen to have an incomplete translation of A<B>
-  // sitting around.
-  A<B> *a;
-
-  class C {};
-  class B : public C {
-    // This forces Sema to instantiate A<B>, which triggers a callback
-    // to IR-gen.  Because of the previous, incomplete translation,
-    // IR-gen actually cares, and it immediately tries to complete
-    // A<B>'s IR type.  That, in turn, causes the translation of B*.
-    // B isn't complete yet, but it has a definition, and if we try to
-    // compute a record layout for that definition then we'll really
-    // regret it later.
-    A<B> a;
-  };
-
-  // The derived class E and empty base class C are required to
-  // provoke the original assertion.
-  class E : public B {};
-  E *e;
-}
-
-// <rdar://problem/11324125>: Make sure this doesn't crash.  (It's okay
-// if we start rejecting it at some point.)
-namespace Test7 {
-  #pragma pack (1)
-  class A {};
-  // CHECK: %"class.Test7::B" = type <{ i32 (...)**, %"class.Test7::A" }>
-  class B {
-     virtual ~B();
-     A a;
-  };
-  B* b;
-  #pragma pack ()
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/compound-literals.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/compound-literals.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/compound-literals.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -triple armv7-none-eabi -emit-llvm -o - %s | FileCheck %s
-
-struct X {
-  X();
-  X(const X&);
-  X(const char*);
-  ~X();
-};
-
-struct Y { 
-  int i;
-  X x;
-};
-
-// CHECK: define i32 @_Z1fv()
-int f() {
-  // CHECK: [[LVALUE:%[a-z0-9.]+]] = alloca
-  // CHECK-NEXT: [[I:%[a-z0-9]+]] = getelementptr inbounds {{.*}}* [[LVALUE]], i32 0, i32 0
-  // CHECK-NEXT: store i32 17, i32* [[I]]
-  // CHECK-NEXT: [[X:%[a-z0-9]+]] = getelementptr inbounds {{.*}} [[LVALUE]], i32 0, i32 1
-  // CHECK-NEXT: call %struct.X* @_ZN1XC1EPKc({{.*}}[[X]]
-  // CHECK-NEXT: [[I:%[a-z0-9]+]] = getelementptr inbounds {{.*}} [[LVALUE]], i32 0, i32 0
-  // CHECK-NEXT: [[RESULT:%[a-z0-9]+]] = load i32*
-  // CHECK-NEXT: call %struct.Y* @_ZN1YD1Ev
-  // CHECK-NEXT: ret i32 [[RESULT]]
-  return ((Y){17, "seventeen"}).i;
-}
-
-// CHECK: define i32 @_Z1gv()
-int g() {
-  // CHECK: store [2 x i32]* %{{[a-z0-9.]+}}, [2 x i32]** [[V:%[a-z0-9.]+]]
-  const int (&v)[2] = (int [2]) {1,2};
-
-  // CHECK: [[A:%[a-z0-9.]+]] = load [2 x i32]** [[V]]
-  // CHECK-NEXT: [[A0ADDR:%[a-z0-9.]+]] = getelementptr inbounds [2 x i32]* [[A]], i32 0, {{.*}} 0
-  // CHECK-NEXT: [[A0:%[a-z0-9.]+]] = load i32* [[A0ADDR]]
-  // CHECK-NEXT: ret i32 [[A0]]
-  return v[0];
-}
-
-struct Z { int i[3]; };
-int *p = (Z){ {1, 2, 3} }.i;
-// CHECK: define {{.*}}__cxx_global_var_init()
-// CHECK: store i32* getelementptr inbounds (%struct.Z* @.compoundliteral, i32 0, i32 0, i32 0), i32** @p

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/condition.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/condition.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/condition.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,317 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-void *f();
-
-template <typename T> T* g() {
- if (T* t = f())
-   return t;
-
- return 0;
-}
-
-void h() {
- void *a = g<void>();
-}
-
-struct X {
-  X();
-  X(const X&);
-  ~X();
-  operator bool();
-};
-
-struct Y {
-  Y();
-  ~Y();
-};
-
-X getX();
-
-// CHECK: define void @_Z11if_destructi(
-void if_destruct(int z) {
-  // Verify that the condition variable is destroyed at the end of the
-  // "if" statement.
-  // CHECK: call void @_ZN1XC1Ev
-  // CHECK: call zeroext i1 @_ZN1XcvbEv
-  if (X x = X()) {
-    // CHECK: store i32 18
-    z = 18;
-  }
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: store i32 17
-  z = 17;
-
-  // CHECK: call void @_ZN1XC1Ev
-  if (X x = X())
-    Y y;
-  // CHECK: br
-  // CHECK: call  void @_ZN1YC1Ev
-  // CHECK: call  void @_ZN1YD1Ev
-  // CHECK: br
-  // CHECK: call  void @_ZN1XD1Ev
-
-  // CHECK: call void @_Z4getXv
-  // CHECK: call zeroext i1 @_ZN1XcvbEv
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: br
-  if (getX()) { }
-
-  // CHECK: ret
-}
-
-struct ConvertibleToInt {
-  ConvertibleToInt();
-  ~ConvertibleToInt();
-  operator int();
-};
-
-ConvertibleToInt getConvToInt();
-
-void switch_destruct(int z) {
-  // CHECK: call void @_ZN16ConvertibleToIntC1Ev
-  switch (ConvertibleToInt conv = ConvertibleToInt()) {
-  case 0:
-    break;
-
-  default:
-    // CHECK: store i32 19
-    z = 19;
-    break;
-  }
-  // CHECK: call void @_ZN16ConvertibleToIntD1Ev
-  // CHECK: store i32 20
-  z = 20;
-
-  // CHECK: call void @_Z12getConvToIntv
-  // CHECK: call i32 @_ZN16ConvertibleToIntcviEv
-  // CHECK: call void @_ZN16ConvertibleToIntD1Ev
-  switch(getConvToInt()) {
-  case 0:
-    break;
-  }
-  // CHECK: store i32 27
-  z = 27;
-  // CHECK: ret
-}
-
-int foo();
-
-// CHECK: define void @_Z14while_destructi
-void while_destruct(int z) {
-  // CHECK: [[Z:%.*]] = alloca i32
-  // CHECK: [[CLEANUPDEST:%.*]] = alloca i32
-  while (X x = X()) {
-    // CHECK: call void @_ZN1XC1Ev
-    // CHECK-NEXT: [[COND:%.*]] = call zeroext i1 @_ZN1XcvbEv
-    // CHECK-NEXT: br i1 [[COND]]
-
-    // Loop-exit staging block.
-    // CHECK: store i32 3, i32* [[CLEANUPDEST]]
-    // CHECK-NEXT: br
-
-    // While body.
-    // CHECK: store i32 21, i32* [[Z]]
-    // CHECK: store i32 0, i32* [[CLEANUPDEST]]
-    // CHECK-NEXT: br
-    z = 21;
-
-    // Cleanup.
-    // CHECK: call void @_ZN1XD1Ev
-    // CHECK-NEXT: [[DEST:%.*]] = load i32* [[CLEANUPDEST]]
-    // CHECK-NEXT: switch i32 [[DEST]]
-  }
-
-  // CHECK: store i32 22, i32* [[Z]]
-  z = 22;
-
-  // CHECK: call void @_Z4getXv
-  // CHECK-NEXT: call zeroext i1 @_ZN1XcvbEv
-  // CHECK-NEXT: call void @_ZN1XD1Ev
-  // CHECK-NEXT: br
-  while(getX()) { }
-
-  // CHECK: store i32 25, i32* [[Z]]
-  z = 25;
-
-  // CHECK: ret
-}
-
-// CHECK: define void @_Z12for_destructi(
-void for_destruct(int z) {
-  // CHECK: [[Z:%.*]] = alloca i32
-  // CHECK: [[CLEANUPDEST:%.*]] = alloca i32
-  // CHECK: [[I:%.*]] = alloca i32
-  // CHECK: call void @_ZN1YC1Ev
-  // CHECK-NEXT: br
-  // -> %for.cond
-
-  for(Y y = Y(); X x = X(); ++z) {
-    // %for.cond: The loop condition.
-    // CHECK: call void @_ZN1XC1Ev
-    // CHECK-NEXT: [[COND:%.*]] = call zeroext i1 @_ZN1XcvbEv(
-    // CHECK-NEXT: br i1 [[COND]]
-    // -> %for.body, %for.cond.cleanup
-
-    // %for.cond.cleanup: Exit cleanup staging.
-    // CHECK: store i32 2, i32* [[CLEANUPDEST]]
-    // CHECK-NEXT: br
-    // -> %cleanup
-
-    // %for.body:
-    // CHECK: store i32 23, i32* [[Z]]
-    // CHECK-NEXT: br
-    // -> %for.inc
-    z = 23;
-
-    // %for.inc:
-    // CHECK: [[TMP:%.*]] = load i32* [[Z]]
-    // CHECK-NEXT: [[INC:%.*]] = add nsw i32 [[TMP]], 1
-    // CHECK-NEXT: store i32 [[INC]], i32* [[Z]]
-    // CHECK-NEXT: store i32 0, i32* [[CLEANUPDEST]]
-    // CHECK-NEXT: br
-    // -> %cleanup
-
-    // %cleanup:  Destroys X.
-    // CHECK: call void @_ZN1XD1Ev
-    // CHECK-NEXT: [[YDESTTMP:%.*]] = load i32* [[CLEANUPDEST]]
-    // CHECK-NEXT: switch i32 [[YDESTTMP]]
-    // 0 -> %cleanup.cont, default -> %cleanup1
-
-    // %cleanup.cont:  (eliminable)
-    // CHECK: br
-    // -> %for.cond
-
-    // %cleanup1: Destroys Y.
-    // CHECK: call void @_ZN1YD1Ev(
-    // CHECK-NEXT: br
-    // -> %for.end
-  }
-
-  // %for.end:
-  // CHECK: store i32 24
-  z = 24;
-
-  // CHECK-NEXT: store i32 0, i32* [[I]]
-  // CHECK-NEXT: br
-  // -> %for.cond6
-
-  // %for.cond6:
-  // CHECK: call void @_Z4getXv
-  // CHECK-NEXT: call zeroext i1 @_ZN1XcvbEv
-  // CHECK-NEXT: call void @_ZN1XD1Ev
-  // CHECK-NEXT: br
-  // -> %for.body10, %for.end16
-
-  // %for.body10:
-  // CHECK: br
-  // -> %for.inc11
-
-  // %for.inc11:
-  // CHECK: call void @_Z4getXv
-  // CHECK-NEXT: load i32* [[I]]
-  // CHECK-NEXT: add
-  // CHECK-NEXT: store
-  // CHECK-NEXT: call void @_ZN1XD1Ev
-  // CHECK-NEXT: br
-  // -> %for.cond6
-  int i = 0;
-  for(; getX(); getX(), ++i) { }
-
-  // %for.end16
-  // CHECK: store i32 26
-  z = 26;
-
-  // CHECK-NEXT: ret void
-}
-
-void do_destruct(int z) {
-  // CHECK: define void @_Z11do_destruct
-  do {
-    // CHECK: store i32 77
-    z = 77;
-    // CHECK: call void @_Z4getXv
-    // CHECK: call zeroext i1 @_ZN1XcvbEv
-    // CHECK: call void @_ZN1XD1Ev
-    // CHECK: br
-  } while (getX());
-  // CHECK: store i32 99
-  z = 99;
-  // CHECK: ret
-}
-
-int f(X); 
-
-template<typename T>
-int instantiated(T x) { 
-  int result;
-
-  // CHECK: call void @_ZN1XC1ERKS_
-  // CHECK: call i32 @_Z1f1X
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: br
-  // CHECK: store i32 2
-  // CHECK: br
-  // CHECK: store i32 3
-  if (f(x)) { result = 2; } else { result = 3; }
-
-  // CHECK: call void @_ZN1XC1ERKS_
-  // CHECK: call i32 @_Z1f1X
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: br
-  // CHECK: store i32 4
-  // CHECK: br
-  while (f(x)) { result = 4; }
-
-  // CHECK: call void @_ZN1XC1ERKS_
-  // CHECK: call i32 @_Z1f1X
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: br
-  // CHECK: store i32 6
-  // CHECK: br
-  // CHECK: call void @_ZN1XC1ERKS_
-  // CHECK: call i32 @_Z1f1X
-  // CHECK: store i32 5
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: br
-  for (; f(x); f(x), result = 5) {
-    result = 6;
-  }
-
-  // CHECK: call void @_ZN1XC1ERKS_
-  // CHECK: call i32 @_Z1f1X
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: switch i32
-  // CHECK: store i32 7
-  // CHECK: store i32 8
-  switch (f(x)) {
-  case 0: 
-    result = 7;
-    break;
-
-  case 1:
-    result = 8;
-  }
-
-  // CHECK: store i32 9
-  // CHECK: br
-  // CHECK: call void @_ZN1XC1ERKS_
-  // CHECK: call i32 @_Z1f1X
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: br
-  do {
-    result = 9;
-  } while (f(x));
-
-  // CHECK: store i32 10
-  // CHECK: call void @_ZN1XC1ERKS_
-  // CHECK: call zeroext i1 @_ZN1XcvbEv
-  // CHECK: call void @_ZN1XD1Ev
-  // CHECK: br
-  do {
-    result = 10;
-  } while (X(x));
-
-  // CHECK: ret i32
-  return result;
-}
-
-template int instantiated(X);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-expr-lvalue.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-expr-lvalue.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-expr-lvalue.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-void f(bool flag) {
-  int a = 1;
-  int b = 2;
-  
-  (flag ? a : b) = 3;
-}
-
-// PR10756
-namespace test0 {
-  struct A {
-    A(const A &);
-    A &operator=(const A &);
-    A sub() const;
-    void foo() const;
-  };
-  void foo(bool cond, const A &a) {
-    (cond ? a : a.sub()).foo();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-gnu-ext.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-gnu-ext.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-gnu-ext.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,150 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-// rdar: // 8353567
-// pr7726
-
-extern "C" int printf(...);
-
-void test0() {
-// CHECK: call i32 (...)* @printf({{.*}}, i8* inttoptr (i64 3735928559 to i8*))
-    printf("%p\n", (void *)0xdeadbeef ? : (void *)0xaaaaaa);
-}
-
-// rdar://8446940
-namespace radar8446940 {
-extern "C" void abort();
-
-int main () {
-  char x[1];
-  char *y = x ? : 0;
-
-  if (x != y)
-    abort();
-}
-}
-
-namespace radar8453812 {
-extern "C" void abort();
-_Complex int getComplex(_Complex int val) {
-  static int count;
-  if (count++)
-    abort();
-  return val;
-}
-
-_Complex int cmplx() {
-    _Complex int cond;
-    _Complex int rhs;
-
-    return getComplex(1+2i) ? : rhs;
-}
-
-// lvalue test
-void foo (int& lv) {
-  ++lv;
-}
-
-int global = 1;
-
-int &cond() {
-  static int count;
-  if (count++)
-    abort();
-  return global;
-}
-
-
-int main() {
-  cmplx();
-  int rhs = 10;
-  foo (cond()? : rhs);
-  return  global-2;
-}
-}
-
-namespace test3 {
-  struct A {
-    A();
-    A(const A&);
-    ~A();
-  };
-
-  struct B {
-    B();
-    B(const B&);
-    ~B();
-    operator bool();
-    operator A();
-  };
-
-  B test0(B &x) {
-    // CHECK:    define void @_ZN5test35test0ERNS_1BE(
-    // CHECK:      [[X:%.*]] = alloca [[B:%.*]]*,
-    // CHECK-NEXT: store [[B]]* {{%.*}}, [[B]]** [[X]]
-    // CHECK-NEXT: [[T0:%.*]] = load [[B]]** [[X]]
-    // CHECK-NEXT: [[BOOL:%.*]] = call zeroext i1 @_ZN5test31BcvbEv([[B]]* [[T0]])
-    // CHECK-NEXT: br i1 [[BOOL]]
-    // CHECK:      call void @_ZN5test31BC1ERKS0_([[B]]* [[RESULT:%.*]], [[B]]* [[T0]])
-    // CHECK-NEXT: br label
-    // CHECK:      call void @_ZN5test31BC1Ev([[B]]* [[RESULT]])
-    // CHECK-NEXT: br label
-    // CHECK:      ret void
-    return x ?: B();
-  }
-
-  B test1() {
-    // CHECK:    define void @_ZN5test35test1Ev(
-    // CHECK:      [[TEMP:%.*]] = alloca [[B]],
-    // CHECK-NEXT: call  void @_ZN5test312test1_helperEv([[B]]* sret [[TEMP]])
-    // CHECK-NEXT: [[BOOL:%.*]] = call zeroext i1 @_ZN5test31BcvbEv([[B]]* [[TEMP]])
-    // CHECK-NEXT: br i1 [[BOOL]]
-    // CHECK:      call void @_ZN5test31BC1ERKS0_([[B]]* [[RESULT:%.*]], [[B]]* [[TEMP]])
-    // CHECK-NEXT: br label
-    // CHECK:      call void @_ZN5test31BC1Ev([[B]]* [[RESULT]])
-    // CHECK-NEXT: br label
-    // CHECK:      call void @_ZN5test31BD1Ev([[B]]* [[TEMP]])
-    // CHECK-NEXT: ret void
-    extern B test1_helper();
-    return test1_helper() ?: B();
-  }
-
-
-  A test2(B &x) {
-    // CHECK:    define void @_ZN5test35test2ERNS_1BE(
-    // CHECK:      [[X:%.*]] = alloca [[B]]*,
-    // CHECK-NEXT: store [[B]]* {{%.*}}, [[B]]** [[X]]
-    // CHECK-NEXT: [[T0:%.*]] = load [[B]]** [[X]]
-    // CHECK-NEXT: [[BOOL:%.*]] = call zeroext i1 @_ZN5test31BcvbEv([[B]]* [[T0]])
-    // CHECK-NEXT: br i1 [[BOOL]]
-    // CHECK:      call void @_ZN5test31BcvNS_1AEEv([[A:%.*]]* sret [[RESULT:%.*]], [[B]]* [[T0]])
-    // CHECK-NEXT: br label
-    // CHECK:      call void @_ZN5test31AC1Ev([[A]]* [[RESULT]])
-    // CHECK-NEXT: br label
-    // CHECK:      ret void
-    return x ?: A();
-  }
-
-  A test3() {
-    // CHECK:    define void @_ZN5test35test3Ev(
-    // CHECK:      [[TEMP:%.*]] = alloca [[B]],
-    // CHECK-NEXT: call  void @_ZN5test312test3_helperEv([[B]]* sret [[TEMP]])
-    // CHECK-NEXT: [[BOOL:%.*]] = call zeroext i1 @_ZN5test31BcvbEv([[B]]* [[TEMP]])
-    // CHECK-NEXT: br i1 [[BOOL]]
-    // CHECK:      call void @_ZN5test31BcvNS_1AEEv([[A]]* sret [[RESULT:%.*]], [[B]]* [[TEMP]])
-    // CHECK-NEXT: br label
-    // CHECK:      call void @_ZN5test31AC1Ev([[A]]* [[RESULT]])
-    // CHECK-NEXT: br label
-    // CHECK:      call void @_ZN5test31BD1Ev([[B]]* [[TEMP]])
-    // CHECK-NEXT: ret void
-    extern B test3_helper();
-    return test3_helper() ?: A();
-  }
-
-}
-
-namespace test4 {
-  // Make sure this doesn't crash.
-  void f() {
-    const int a = 10, b = 20;
-    const int *c = &(a ?: b);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-temporaries.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-temporaries.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conditional-temporaries.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 -O3 | FileCheck %s
-
-namespace {
-
-static int ctorcalls;
-static int dtorcalls;
-  
-struct A {
-  A() : i(0) { ctorcalls++; }
-  ~A() { dtorcalls++; }
-  int i;
-  
-  friend const A& operator<<(const A& a, int n) {
-    return a;
-  }
-};
-
-void g(int) { }
-void g(const A&) { }
-
-void f1(bool b) {
-  g(b ? A().i : 0);
-  g(b || A().i);
-  g(b && A().i);
-  g(b ? A() << 1 : A() << 2);
-}
-
-struct Checker {
-  Checker() {
-    f1(true);
-    f1(false);
-  }
-};
-
-Checker c;
-
-}
-
-// CHECK: define i32 @_Z12getCtorCallsv()
-int getCtorCalls() {
-  // CHECK: ret i32 5
-  return ctorcalls;
-}
-
-// CHECK: define i32 @_Z12getDtorCallsv()
-int getDtorCalls() {
-  // CHECK: ret i32 5
-  return dtorcalls;
-}
-
-// CHECK: define zeroext i1 @_Z7successv()
-bool success() {
-  // CHECK: ret i1 true
-  return ctorcalls == dtorcalls;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-base-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-base-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-base-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-// Check that the following construct, which is similar to one which occurs
-// in Firefox, is folded correctly.
-struct A { char x; };
-struct B { char y; };
-struct C : A,B {};
-unsigned char x = ((char*)(B*)(C*)0x1000) - (char*)0x1000;
-
-// CHECK: @x = global i8 1

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-global-linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-global-linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-global-linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-const int x = 10;
-const int y = 20;
-const volatile int z = 30;
-// CHECK-NOT: @x
-// CHECK: @z = constant i32 30
-// CHECK: @_ZL1y = internal constant i32 20
-const int& b() { return y; }
-
-const char z1[] = "asdf";
-const char z2[] = "zxcv";
-const volatile char z3[] = "zxcv";
-// CHECK-NOT: @z1
-// CHECK: @z3 = constant
-// CHECK: @_ZL2z2 = internal constant
-const char* b2() { return z2; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-init-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-init-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-init-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,456 +0,0 @@
-// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin -emit-llvm -o - %s -std=c++11 | FileCheck %s
-
-// FIXME: The padding in all these objects should be zero-initialized.
-namespace StructUnion {
-  struct A {
-    int n;
-    double d;
-    union U {
-      constexpr U(int x) : x(x) {}
-      constexpr U(const char *y) : y(y) {}
-      int x;
-      const char *y;
-    } u;
-
-    constexpr A(int n, double d, int x) : n(n), d(d), u(x) {}
-    constexpr A(int n, double d, const char *y) : n(n), d(d), u(y) {}
-  };
-
-  // CHECK: @_ZN11StructUnion1aE = constant {{.*}} { i32 1, double 2.000000e+00, {{.*}} { i32 3, [4 x i8] undef } }
-  extern constexpr A a(1, 2.0, 3);
-
-  // CHECK: @_ZN11StructUnion1bE = constant {{.*}} { i32 4, double 5.000000e+00, {{.*}} { i8* getelementptr inbounds ([6 x i8]* @{{.*}}, i32 0, i32 0) } }
-  extern constexpr A b(4, 5, "hello");
-
-  struct B {
-    int n;
-  };
-
-  // CHECK: @_ZN11StructUnion1cE = global {{.*}} zeroinitializer
-  // CHECK: @_ZN11StructUnion2c2E = global {{.*}} zeroinitializer
-  B c;
-  B c2 = B();
-
-  // CHECK: @_ZN11StructUnion1dE = global {{.*}} zeroinitializer
-  B d[10];
-
-  struct C {
-    constexpr C() : c(0) {}
-    int c;
-  };
-
-  // CHECK: @_ZN11StructUnion1eE = global {{.*}} zeroinitializer
-  C e[10];
-
-  struct D {
-    constexpr D() : d(5) {}
-    int d;
-  };
-
-  // CHECK: @_ZN11StructUnion1fE = global {{.*}} { i32 5 }
-  D f;
-
-  union E {
-    int a;
-    void *b = &f;
-  };
-
-  // CHECK: @_ZN11StructUnion1gE = global {{.*}} @_ZN11StructUnion1fE
-  E g;
-
-  // CHECK: @_ZN11StructUnion1hE = global {{.*}} @_ZN11StructUnion1fE
-  E h = E();
-}
-
-namespace BaseClass {
-  template<typename T, unsigned> struct X : T {};
-  struct C { char c = 1; };
-  template<unsigned... Ns> struct Cs : X<C,Ns>... {};
-  struct N { int n = 3; };
-  struct D { double d = 4.0; };
-
-  template<typename ...Ts>
-  struct Test : Ts... { constexpr Test() : Ts()..., n(5) {} int n; };
-
-  using Test1 = Test<N, C, Cs<1,2>, D, X<C,1>>;
-  // CHECK: @_ZN9BaseClass2t1E = constant {{.*}} { i32 3, i8 1, i8 1, i8 1, double 4.000000e+00, i8 1, i32 5 }, align 8
-  extern constexpr Test1 t1 = Test1();
-
-  struct DN : D, N {};
-  struct DND : DN, X<D,0> {};
-  struct DNN : DN, X<N,0> {};
-  // CHECK: @_ZN9BaseClass3dndE = constant {{.*}} { double 4.000000e+00, i32 3, double 4.000000e+00 }
-  extern constexpr DND dnd = DND();
-  // Note, N subobject is laid out in DN subobject's tail padding.
-  // CHECK: @_ZN9BaseClass3dnnE = constant {{.*}} { double 4.000000e+00, i32 3, i32 3 }
-  extern constexpr DNN dnn = DNN();
-
-  struct E {};
-  struct Test2 : X<E,0>, X<E,1>, X<E,2>, X<E,3> {};
-  // CHECK: @_ZN9BaseClass2t2E = constant {{.*}} undef
-  extern constexpr Test2 t2 = Test2();
-
-  struct __attribute((packed)) PackedD { double y = 2; };
-  struct Test3 : C, PackedD { constexpr Test3() {} };
-  // CHECK: @_ZN9BaseClass2t3E = constant <{ i8, double }> <{ i8 1, double 2.000000e+00 }>
-  extern constexpr Test3 t3 = Test3();
-}
-
-namespace Array {
-  // CHECK: @_ZN5Array3arrE = constant [2 x i32] [i32 4, i32 0]
-  extern constexpr int arr[2] = { 4 };
-
-  // CHECK: @_ZN5Array1cE = constant [6 x [4 x i8]] [{{.*}} c"foo\00", [4 x i8] c"a\00\00\00", [4 x i8] c"bar\00", [4 x i8] c"xyz\00", [4 x i8] c"b\00\00\00", [4 x i8] c"123\00"]
-  extern constexpr char c[6][4] = { "foo", "a", { "bar" }, { 'x', 'y', 'z' }, { "b" }, '1', '2', '3' };
-
-  // CHECK: @_ZN5Array2ucE = constant [4 x i8] c"foo\00"
-  extern constexpr unsigned char uc[] = { "foo" };
-
-  struct C { constexpr C() : n(5) {} int n, m = 3 * n + 1; };
-  // CHECK: @_ZN5Array5ctorsE = constant [3 x {{.*}}] [{{.*}} { i32 5, i32 16 }, {{.*}} { i32 5, i32 16 }, {{.*}} { i32 5, i32 16 }]
-  extern const C ctors[3];
-  constexpr C ctors[3];
-
-  // CHECK: @_ZN5Array1dE = constant {{.*}} { [2 x i32] [i32 1, i32 2], [3 x i32] [i32 3, i32 4, i32 5] }
-  struct D { int n[2]; int m[3]; } extern constexpr d = { 1, 2, 3, 4, 5 };
-
-  struct E {
-    char c[4];
-    char d[4];
-    constexpr E() : c("foo"), d("x") {}
-  };
-  // CHECK: @_ZN5Array1eE = constant {{.*}} { [4 x i8] c"foo\00", [4 x i8] c"x\00\00\00" }
-  extern constexpr E e = E();
-
-  // PR13290
-  struct F { constexpr F() : n(4) {} int n; };
-  // CHECK: @_ZN5Array2f1E = global {{.*}} zeroinitializer
-  F f1[1][1][0] = { };
-  // CHECK: @_ZN5Array2f2E = global {{.* i32 4 .* i32 4 .* i32 4 .* i32 4 .* i32 4 .* i32 4 .* i32 4 .* i32 4}}
-  F f2[2][2][2] = { };
-}
-
-namespace MemberPtr {
-  struct B1 {
-    int a, b;
-    virtual void f();
-    void g();
-  };
-  struct B2 {
-    int c, d;
-    virtual void h();
-    void i();
-  };
-  struct C : B1 {
-    int e;
-    virtual void j();
-    void k();
-  };
-  struct D : C, B2 {
-    int z;
-    virtual void l();
-    void m();
-  };
-
-  // CHECK: @_ZN9MemberPtr2daE = constant i64 8
-  // CHECK: @_ZN9MemberPtr2dbE = constant i64 12
-  // CHECK: @_ZN9MemberPtr2dcE = constant i64 32
-  // CHECK: @_ZN9MemberPtr2ddE = constant i64 36
-  // CHECK: @_ZN9MemberPtr2deE = constant i64 16
-  // CHECK: @_ZN9MemberPtr2dzE = constant i64 40
-  extern constexpr int (D::*da) = &B1::a;
-  extern constexpr int (D::*db) = &C::b;
-  extern constexpr int (D::*dc) = &B2::c;
-  extern constexpr int (D::*dd) = &D::d;
-  extern constexpr int (D::*de) = &C::e;
-  extern constexpr int (D::*dz) = &D::z;
-
-  // CHECK: @_ZN9MemberPtr2baE = constant i64 8
-  // CHECK: @_ZN9MemberPtr2bbE = constant i64 12
-  // CHECK: @_ZN9MemberPtr2bcE = constant i64 8
-  // CHECK: @_ZN9MemberPtr2bdE = constant i64 12
-  // CHECK: @_ZN9MemberPtr2beE = constant i64 16
-  // CHECK: @_ZN9MemberPtr3b1zE = constant i64 40
-  // CHECK: @_ZN9MemberPtr3b2zE = constant i64 16
-  extern constexpr int (B1::*ba) = (int(B1::*))&B1::a;
-  extern constexpr int (B1::*bb) = (int(B1::*))&C::b;
-  extern constexpr int (B2::*bc) = (int(B2::*))&B2::c;
-  extern constexpr int (B2::*bd) = (int(B2::*))&D::d;
-  extern constexpr int (B1::*be) = (int(B1::*))&C::e;
-  extern constexpr int (B1::*b1z) = (int(B1::*))&D::z;
-  extern constexpr int (B2::*b2z) = (int(B2::*))&D::z;
-
-  // CHECK: @_ZN9MemberPtr2dfE = constant {{.*}} { i64 1, i64 0 }
-  // CHECK: @_ZN9MemberPtr2dgE = constant {{.*}} { i64 {{.*}}2B11gEv{{.*}}, i64 0 }
-  // CHECK: @_ZN9MemberPtr2dhE = constant {{.*}} { i64 1, i64 24 }
-  // CHECK: @_ZN9MemberPtr2diE = constant {{.*}} { i64 {{.*}}2B21iEv{{.*}}, i64 24 }
-  // CHECK: @_ZN9MemberPtr2djE = constant {{.*}} { i64 9, i64 0 }
-  // CHECK: @_ZN9MemberPtr2dkE = constant {{.*}} { i64 {{.*}}1C1kEv{{.*}}, i64 0 }
-  // CHECK: @_ZN9MemberPtr2dlE = constant {{.*}} { i64 17, i64 0 }
-  // CHECK: @_ZN9MemberPtr2dmE = constant {{.*}} { i64 {{.*}}1D1mEv{{.*}}, i64 0 }
-  extern constexpr void (D::*df)() = &C::f;
-  extern constexpr void (D::*dg)() = &B1::g;
-  extern constexpr void (D::*dh)() = &B2::h;
-  extern constexpr void (D::*di)() = &D::i;
-  extern constexpr void (D::*dj)() = &C::j;
-  extern constexpr void (D::*dk)() = &C::k;
-  extern constexpr void (D::*dl)() = &D::l;
-  extern constexpr void (D::*dm)() = &D::m;
-
-  // CHECK: @_ZN9MemberPtr2bfE = constant {{.*}} { i64 1, i64 0 }
-  // CHECK: @_ZN9MemberPtr2bgE = constant {{.*}} { i64 {{.*}}2B11gEv{{.*}}, i64 0 }
-  // CHECK: @_ZN9MemberPtr2bhE = constant {{.*}} { i64 1, i64 0 }
-  // CHECK: @_ZN9MemberPtr2biE = constant {{.*}} { i64 {{.*}}2B21iEv{{.*}}, i64 0 }
-  // CHECK: @_ZN9MemberPtr2bjE = constant {{.*}} { i64 9, i64 0 }
-  // CHECK: @_ZN9MemberPtr2bkE = constant {{.*}} { i64 {{.*}}1C1kEv{{.*}}, i64 0 }
-  // CHECK: @_ZN9MemberPtr3b1lE = constant {{.*}} { i64 17, i64 0 }
-  // CHECK: @_ZN9MemberPtr3b1mE = constant {{.*}} { i64 {{.*}}1D1mEv{{.*}}, i64 0 }
-  // CHECK: @_ZN9MemberPtr3b2lE = constant {{.*}} { i64 17, i64 -24 }
-  // CHECK: @_ZN9MemberPtr3b2mE = constant {{.*}} { i64 {{.*}}1D1mEv{{.*}}, i64 -24 }
-  extern constexpr void (B1::*bf)()  = (void(B1::*)())&C::f;
-  extern constexpr void (B1::*bg)()  = (void(B1::*)())&B1::g;
-  extern constexpr void (B2::*bh)()  = (void(B2::*)())&B2::h;
-  extern constexpr void (B2::*bi)()  = (void(B2::*)())&D::i;
-  extern constexpr void (B1::*bj)()  = (void(B1::*)())&C::j;
-  extern constexpr void (B1::*bk)()  = (void(B1::*)())&C::k;
-  extern constexpr void (B1::*b1l)() = (void(B1::*)())&D::l;
-  extern constexpr void (B1::*b1m)() = (void(B1::*)())&D::m;
-  extern constexpr void (B2::*b2l)() = (void(B2::*)())&D::l;
-  extern constexpr void (B2::*b2m)() = (void(B2::*)())&D::m;
-}
-
-namespace LiteralReference {
-  struct Lit {
-    constexpr Lit() : n(5) {}
-    int n;
-  };
-  // FIXME: This should have static initialization, but we do not implement
-  // that yet. For now, just check that we don't set the (pointer) value of
-  // the reference to 5!
-  //
-  // CHECK: @_ZN16LiteralReference3litE = global {{.*}} null
-  const Lit &lit = Lit();
-}
-
-namespace NonLiteralConstexpr {
-  constexpr int factorial(int n) {
-    return n ? factorial(n-1) * n : 1;
-  }
-  extern void f(int *p);
-
-  struct NonTrivialDtor {
-    constexpr NonTrivialDtor() : n(factorial(5)), p(&n) {}
-    ~NonTrivialDtor() {
-      f(p);
-    }
-
-    int n;
-    int *p;
-  };
-  static_assert(!__is_literal(NonTrivialDtor), "");
-  // CHECK: @_ZN19NonLiteralConstexpr3ntdE = global {{.*}} { i32 120, i32* getelementptr
-  NonTrivialDtor ntd;
-
-  struct VolatileMember {
-    constexpr VolatileMember() : n(5) {}
-    volatile int n;
-  };
-  static_assert(!__is_literal(VolatileMember), "");
-  // CHECK: @_ZN19NonLiteralConstexpr2vmE = global {{.*}} { i32 5 }
-  VolatileMember vm;
-
-  struct Both {
-    constexpr Both() : n(10) {}
-    ~Both();
-    volatile int n;
-  };
-  // CHECK: @_ZN19NonLiteralConstexpr1bE = global {{.*}} { i32 10 }
-  Both b;
-
-  void StaticVars() {
-    // CHECK: @_ZZN19NonLiteralConstexpr10StaticVarsEvE3ntd = {{.*}} { i32 120, i32* getelementptr {{.*}}
-    // CHECK: @_ZGVZN19NonLiteralConstexpr10StaticVarsEvE3ntd =
-    static NonTrivialDtor ntd;
-    // CHECK: @_ZZN19NonLiteralConstexpr10StaticVarsEvE2vm = {{.*}} { i32 5 }
-    // CHECK-NOT: @_ZGVZN19NonLiteralConstexpr10StaticVarsEvE2vm =
-    static VolatileMember vm;
-    // CHECK: @_ZZN19NonLiteralConstexpr10StaticVarsEvE1b = {{.*}} { i32 10 }
-    // CHECK: @_ZGVZN19NonLiteralConstexpr10StaticVarsEvE1b =
-    static Both b;
-  }
-}
-
-// PR12067
-namespace VirtualMembers {
-  struct A {
-    constexpr A(double d) : d(d) {}
-    virtual void f();
-    double d;
-  };
-  struct B : A {
-    constexpr B() : A(2.0), c{'h', 'e', 'l', 'l', 'o'} {}
-    constexpr B(int n) : A(n), c{'w', 'o', 'r', 'l', 'd'} {}
-    virtual void g();
-    char c[5];
-  };
-  struct C {
-    constexpr C() : n(64) {}
-    int n;
-  };
-  struct D : C, A, B {
-    constexpr D() : A(1.0), B(), s(5) {}
-    short s;
-  };
-  struct E : D, B {
-    constexpr E() : B(3), c{'b','y','e'} {}
-    char c[3];
-  };
-
-  // CHECK: @_ZN14VirtualMembers1eE = global { i8**, double, i32, i8**, double, [5 x i8], i16, i8**, double, [5 x i8], [3 x i8] } { i8** getelementptr inbounds ([11 x i8*]* @_ZTVN14VirtualMembers1EE, i64 0, i64 2), double 1.000000e+00, i32 64, i8** getelementptr inbounds ([11 x i8*]* @_ZTVN14VirtualMembers1EE, i64 0, i64 5), double 2.000000e+00, [5 x i8] c"hello", i16 5, i8** getelementptr inbounds ([11 x i8*]* @_ZTVN14VirtualMembers1EE, i64 0, i64 9), double 3.000000e+00, [5 x i8] c"world", [3 x i8] c"bye" }
-  E e;
-
-  struct nsMemoryImpl {
-    virtual void f();
-  };
-  // CHECK: @_ZN14VirtualMembersL13sGlobalMemoryE = internal global { i8** } { i8** getelementptr inbounds ([3 x i8*]* @_ZTVN14VirtualMembers12nsMemoryImplE, i64 0, i64 2) }
-  static nsMemoryImpl sGlobalMemory;
-}
-
-namespace PR13273 {
-  struct U {
-    int t;
-    U() = default;
-  };
-
-  struct S : U {
-    S() = default;
-  };
-
-  // CHECK: @_ZN7PR132731sE = {{.*}} zeroinitializer
-  extern const S s {};
-}
-
-// Constant initialization tests go before this point,
-// dynamic initialization tests go after.
-
-// We must emit a constant initializer for NonLiteralConstexpr::ntd, but also
-// emit an initializer to register its destructor.
-// CHECK: define {{.*}}cxx_global_var_init{{.*}}
-// CHECK-NOT: NonLiteralConstexpr
-// CHECK: call {{.*}}cxa_atexit{{.*}} @_ZN19NonLiteralConstexpr14NonTrivialDtorD1Ev {{.*}} @_ZN19NonLiteralConstexpr3ntdE
-// CHECK-NEXT: ret void
-
-// We don't need to emit any dynamic initialization for NonLiteralConstexpr::vm.
-// CHECK-NOT: NonLiteralConstexpr2vm
-
-// We must emit a constant initializer for NonLiteralConstexpr::b, but also
-// emit an initializer to register its destructor.
-// CHECK: define {{.*}}cxx_global_var_init{{.*}}
-// CHECK-NOT: NonLiteralConstexpr
-// CHECK: call {{.*}}cxa_atexit{{.*}} @_ZN19NonLiteralConstexpr4BothD1Ev {{.*}} @_ZN19NonLiteralConstexpr1bE
-// CHECK-NEXT: ret void
-
-// CHECK: define {{.*}}NonLiteralConstexpr10StaticVars
-// CHECK-NOT: }
-// CHECK: call {{.*}}cxa_atexit{{.*}}@_ZN19NonLiteralConstexpr14NonTrivialDtorD1Ev
-// CHECK-NOT: }
-// CHECK: call {{.*}}cxa_atexit{{.*}}@_ZN19NonLiteralConstexpr4BothD1Ev
-
-namespace CrossFuncLabelDiff {
-  // Make sure we refuse to constant-fold the variable b.
-  constexpr long a(bool x) { return x ? 0 : (long)&&lbl + (0 && ({lbl: 0;})); }
-  void test() { static long b = (long)&&lbl - a(false); lbl: return; }
-  // CHECK: sub nsw i64 ptrtoint (i8* blockaddress(@_ZN18CrossFuncLabelDiff4testEv, {{.*}}) to i64),
-  // CHECK: store i64 {{.*}}, i64* @_ZZN18CrossFuncLabelDiff4testEvE1b, align 8
-}
-
-// PR12012
-namespace VirtualBase {
-  struct B {};
-  struct D : virtual B {};
-  D d;
-  // CHECK: call {{.*}}@_ZN11VirtualBase1DC1Ev
-
-  template<typename T> struct X : T {
-    constexpr X() : T() {}
-  };
-  X<D> x;
-  // CHECK: call {{.*}}@_ZN11VirtualBase1XINS_1DEEC1Ev
-}
-
-// PR12145
-namespace Unreferenced {
-  int n;
-  constexpr int *p = &n;
-  // We must not emit a load of 'p' here, since it's not odr-used.
-  int q = *p;
-  // CHECK-NOT: _ZN12Unreferenced1pE
-  // CHECK: = load i32* @_ZN12Unreferenced1nE
-  // CHECK-NEXT: store i32 {{.*}}, i32* @_ZN12Unreferenced1qE
-  // CHECK-NOT: _ZN12Unreferenced1pE
-
-  // Technically, we are not required to substitute variables of reference types
-  // initialized by constant expressions, because the special case for odr-use
-  // of variables in [basic.def.odr]p2 only applies to objects. But we do so
-  // anyway.
-
-  constexpr int &r = n;
-  // CHECK-NOT: _ZN12Unreferenced1rE
-  int s = r;
-
-  const int t = 1;
-  const int &rt = t;
-  int f(int);
-  int u = f(rt);
-  // CHECK: call i32 @_ZN12Unreferenced1fEi(i32 1)
-}
-
-namespace InitFromConst {
-  template<typename T> void consume(T);
-
-  const bool b = true;
-  const int n = 5;
-  constexpr double d = 4.3;
-
-  struct S { int n = 7; S *p = 0; };
-  constexpr S s = S();
-  const S &r = s;
-  constexpr const S *p = &r;
-  constexpr int S::*mp = &S::n;
-  constexpr int a[3] = { 1, 4, 9 };
-
-  void test() {
-    // CHECK: call void @_ZN13InitFromConst7consumeIbEEvT_(i1 zeroext true)
-    consume(b);
-
-    // CHECK: call void @_ZN13InitFromConst7consumeIiEEvT_(i32 5)
-    consume(n);
-
-    // CHECK: call void @_ZN13InitFromConst7consumeIdEEvT_(double 4.300000e+00)
-    consume(d);
-
-    // CHECK: call void @_ZN13InitFromConst7consumeIRKNS_1SEEEvT_(%"struct.InitFromConst::S"* @_ZN13InitFromConstL1sE)
-    consume<const S&>(s);
-
-    // CHECK: call void @_ZN13InitFromConst7consumeIRKNS_1SEEEvT_(%"struct.InitFromConst::S"* @_ZN13InitFromConstL1sE)
-    consume<const S&>(r);
-
-    // CHECK: call void @_ZN13InitFromConst7consumeIPKNS_1SEEEvT_(%"struct.InitFromConst::S"* @_ZN13InitFromConstL1sE)
-    consume(p);
-
-    // CHECK: call void @_ZN13InitFromConst7consumeIMNS_1SEiEEvT_(i64 0)
-    consume(mp);
-
-    // CHECK: call void @_ZN13InitFromConst7consumeIPKiEEvT_(i32* getelementptr inbounds ([3 x i32]* @_ZN13InitFromConstL1aE, i32 0, i32 0))
-    consume(a);
-  }
-}
-
-namespace Null {
-  decltype(nullptr) null();
-  // CHECK: call {{.*}} @_ZN4Null4nullEv(
-  int *p = null();
-  struct S {};
-  // CHECK: call {{.*}} @_ZN4Null4nullEv(
-  int S::*q = null();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/const-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @a = global i32 10
-int a = 10;
-// CHECK: @ar = constant i32* @a
-int &ar = a;
-
-void f();
-// CHECK: @fr = constant void ()* @_Z1fv
-void (&fr)() = f;
-
-struct S { int& a; };
-// CHECK: @s = global %struct.S { i32* @a }
-S s = { a };
-
-// PR5581
-namespace PR5581 {
-class C {
-public:
-  enum { e0, e1 };
-  unsigned f;
-};
-
-// CHECK: @_ZN6PR55812g0E = global %"class.PR5581::C" { i32 1 }
-C g0 = { C::e1 };
-}
-
-namespace test2 {
-  struct A {
-    static const double d = 1.0;
-    static const float f = d / 2;
-    static int g();
-  } a;
-
-  // CHECK: @_ZN5test22t0E = global double {{1\.0+e\+0+}}, align 8
-  // CHECK: @_ZN5test22t1E = global [2 x double] [double {{1\.0+e\+0+}}, double {{5\.0+e-0*}}1], align 16
-  // CHECK: @_ZN5test22t2E = global double* @_ZN5test21A1d
-  // CHECK: @_ZN5test22t3E = global {{.*}} @_ZN5test21A1g
-  double t0 = A::d;
-  double t1[] = { A::d, A::f };
-  const double *t2 = &a.d;
-  int (*t3)() = &a.g;
-}
-
-// We don't expect to fold this in the frontend, but make sure it doesn't crash.
-// CHECK: @PR9558 = global float 0.000000e+0
-float PR9558 = reinterpret_cast<const float&>("asd");
-
-// An initialized const automatic variable cannot be promoted to a constant
-// global if it has a mutable member.
-struct MutableMember {
-  mutable int n;
-};
-int writeToMutable() {
-  // CHECK-NOT: {{.*}}MM{{.*}} = {{.*}}constant
-  const MutableMember MM = { 0 };
-  return ++MM.n;
-}
-
-// Make sure we don't try to fold this in the frontend; the backend can't
-// handle it.
-// CHECK: @PR11705 = global i128 0
-__int128_t PR11705 = (__int128_t)&PR11705;
-
-// Make sure we don't try to fold this either.
-// CHECK: @_ZZ23UnfoldableAddrLabelDiffvE1x = internal global i128 0
-void UnfoldableAddrLabelDiff() { static __int128_t x = (long)&&a-(long)&&b; a:b:return;}
-
-// But make sure we do fold this.
-// CHECK: @_ZZ21FoldableAddrLabelDiffvE1x = internal global i64 sub (i64 ptrtoint (i8* blockaddress(@_Z21FoldableAddrLabelDiffv
-void FoldableAddrLabelDiff() { static long x = (long)&&a-(long)&&b; a:b:return;}
-
-// CHECK: @i = constant i32* bitcast (float* @PR9558 to i32*)
-int &i = reinterpret_cast<int&>(PR9558);
-
-int arr[2];
-// CHECK: @pastEnd = constant i32* bitcast (i8* getelementptr (i8* bitcast ([2 x i32]* @arr to i8*), i64 8) to i32*)
-int &pastEnd = arr[2];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-alias.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-alias.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-alias.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple mipsel--linux-gnu -mconstructor-aliases -o - %s | FileCheck %s
-
-// The target attribute code used to get confused with aliases. Make sure
-// we don't crash when an alias is used.
-
-struct B {
-  B();
-};
-B::B() {
-}
-
-// CHECK: @_ZN1BC1Ev = alias void (%struct.B*)* @_ZN1BC2Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @llvm.global_ctors
-
-// PR6521
-void bar();
-struct Foo {
-  // CHECK: define linkonce_odr void @_ZN3Foo3fooEv
-  static void foo() __attribute__((constructor)) {
-    bar();
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-extern "C" int printf(...);
-
-class X { // ...
-public: 
-  X(int) : iX(2), fX(2.3) , name("HELLO\n") {  }
-
-  X(const char* arg, int ix=0) { iX = ix; fX = 6.0; name = arg+ix; }
-  X(): iX(100), fX(1.2) {}
-  int iX;
-  float fX;
-  const char *name;
-  void pr(void) {
-    printf("iX = %d  fX = %f name = %s\n", iX, fX, name);
-  }
-};
-
-void g(X arg) {
-  arg.pr();
-}
-
-void f(X arg) {
-  X a = 1;        // a = X(1)
-
-  a.pr();
-
-  X b = "Jessie"; //  b=X("Jessie",0)
-
-  b.pr();
-
-
-  a = 2;          // a = X(2)
-
-  a.pr();
-}
-
-
-int main() {
-  X x;
-  f(x);
-  g(3);           // g(X(3))
-}
-
-// CHECK-LP64: callq    __ZN1XC1Ei
-// CHECK-LP64: callq    __ZN1XC1EPKci
-// CHECK-LP64: callq    __ZN1XC1Ev
-
-// CHECK-LP32: calll     L__ZN1XC1Ei
-// CHECK-LP32: calll     L__ZN1XC1EPKci
-// CHECK-LP32: calll     L__ZN1XC1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-convert.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-convert.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-convert.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-
-// PR5775
-class Twine {
-public:
-  Twine(const char *Str) { }
-};
-
-static void error(const Twine &Message) {}
-
-template<typename>
-struct opt_storage {
-  void f() {
-    error("cl::location(x) specified more than once!");
-  }
-};
-
-void f(opt_storage<int> o) {
-  o.f();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-default-arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-default-arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-default-arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-extern "C" int printf(...);
-
-
-struct C {
-  C() : iC(6) {}
-  int iC;
-};
-
-int foo() {
-  return 6;
-};
-
-class X { // ...
-public: 
-  X(int) {}
-  X(const X&, int i = 1, int j = 2, int k = foo()) {
-    printf("X(const X&, %d, %d, %d)\n", i, j, k);
-  }
-};
-
-int main() {
-  X a(1);
-  X b(a, 2);
-  X c = b;
-  X d(a, 5, 6);
-}
-
-// CHECK-LP64: callq __ZN1XC1ERKS_iii
-// CHECK-LP64: callq __ZN1XC1ERKS_iii
-// CHECK-LP64: callq __ZN1XC1ERKS_iii
-
-// CHECK-LP32: calll L__ZN1XC1ERKS_iii
-// CHECK-LP32: calll L__ZN1XC1ERKS_iii
-// CHECK-LP32: calll L__ZN1XC1ERKS_iii

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-destructor-return-this.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-destructor-return-this.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-destructor-return-this.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-//RUN: %clang_cc1 %s -emit-llvm -o - -triple=thumbv7-apple-ios3.0 -target-abi apcs-gnu | FileCheck %s
-
-// For constructors/desctructors that return 'this', if there exists a callsite
-// that returns 'this' and is immediately before the return instruction, make
-// sure we are using the return value from the callsite.
-// rdar://12818789
-
-// CHECK: define linkonce_odr [[A:%.*]] @_ZN11ObjectCacheC1Ev([[A]] %this) unnamed_addr
-// CHECK: [[THIS1:%.*]] = call [[A]] @_ZN11ObjectCacheC2Ev(
-// CHECK-NEXT: ret [[A]] [[THIS1]]
-
-// CHECK: define linkonce_odr [[A:%.*]] @_ZN5TimerI11ObjectCacheEC1EPS0_MS0_FvPS1_E([[A]] %this
-// CHECK: [[THIS1:%.*]] = call [[A]] @_ZN5TimerI11ObjectCacheEC2EPS0_MS0_FvPS1_E(
-// CHECK-NEXT: ret [[A]] [[THIS1]]
-
-// CHECK: define linkonce_odr [[A:%.*]] @_ZN5TimerI11ObjectCacheED1Ev([[A]] %this) unnamed_addr
-// CHECK: [[THIS1:%.*]] = call [[A]] @_ZN5TimerI11ObjectCacheED2Ev(
-// CHECK-NEXT: ret [[A]] [[THIS1]]
-
-// CHECK: define linkonce_odr [[A:%.*]] @_ZN5TimerI11ObjectCacheED2Ev([[A]] %this) unnamed_addr
-// CHECK: [[THIS1:%.*]] = call [[B:%.*]] @_ZN9TimerBaseD2Ev(
-// CHECK-NEXT: [[THIS2:%.*]] = bitcast [[B]] [[THIS1]] to [[A]]
-// CHECK-NEXT: ret [[A]] [[THIS2]]
-
-class TimerBase {
-public:
-    TimerBase();
-    virtual ~TimerBase();
-};
-
-template <typename TimerFiredClass> class Timer : public TimerBase {
-public:
-    typedef void (TimerFiredClass::*TimerFiredFunction)(Timer*);
-
-    Timer(TimerFiredClass* o, TimerFiredFunction f)
-        : m_object(o), m_function(f) { }
-
-private:
-    virtual void fired() { (m_object->*m_function)(this); }
-
-    TimerFiredClass* m_object;
-    TimerFiredFunction m_function;
-};
-
-class ObjectCache {
-public:
-    explicit ObjectCache();
-    ~ObjectCache();
-
-private:
-    Timer<ObjectCache> m_notificationPostTimer;
-};
-
-inline ObjectCache::ObjectCache() : m_notificationPostTimer(this, 0) { }
-inline ObjectCache::~ObjectCache() { }
-
-ObjectCache *test() {
-  ObjectCache *dd = new ObjectCache();
-  return dd;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-direct-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-direct-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-direct-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-win32 -fms-extensions -Wmicrosoft %s -emit-llvm -o - | FileCheck %s
-
-class Test1 {
-public:
-   int a;
-};
-
-void f1() {
-  Test1 var;
-  var.Test1::Test1();
-
-  // CHECK:   call void @llvm.memcpy.p0i8.p0i8.i32(i8* %{{.*}}, i8* %{{.*}}, i32 4, i32 4, i1 false)
-  var.Test1::Test1(var);
-}
-
-class Test2 {
-public:
-  Test2() { a = 10; b = 10; }
-   int a;
-   int b;
-};
-
-void f2() {
-  // CHECK:  %var = alloca %class.Test2, align 4
-  // CHECK-NEXT:  call void @_ZN5Test2C1Ev(%class.Test2* %var)
-  Test2 var;
-
-  // CHECK-NEXT:  call void @_ZN5Test2C1Ev(%class.Test2* %var)
-  var.Test2::Test2();
-
-  // CHECK:  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %{{.*}}, i8* %{{.*}}, i32 8, i32 4, i1 false)
-  var.Test2::Test2(var);
-}
-
-
-
-
-class Test3 {
-public:
-  Test3() { a = 10; b = 15; c = 20; }
-  Test3(const Test3& that) { a = that.a; b = that.b; c = that.c; }
-   int a;
-   int b;
-   int c;
-};
-
-void f3() {
-  // CHECK: call void @_ZN5Test3C1Ev(%class.Test3* %var)
-  Test3 var;
-
-  // CHECK-NEXT: call void @_ZN5Test3C1Ev(%class.Test3* %var2)
-  Test3 var2;
-
-  // CHECK-NEXT: call void @_ZN5Test3C1Ev(%class.Test3* %var)
-  var.Test3::Test3();
-
-  // CHECK-NEXT: call void @_ZN5Test3C1ERKS_(%class.Test3* %var, %class.Test3* %var2)
-  var.Test3::Test3(var2);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-for-array-members.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-for-array-members.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-for-array-members.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-extern "C" int printf(...);
-
-int i = 1234;
-float vf = 1.00;
-
-struct S {
-  S() : iS(i++), f1(vf++) {printf("S::S()\n");}
-  ~S(){printf("S::~S(iS = %d  f1 = %f)\n", iS, f1); }
-  int iS;
-  float f1;
-};
-
-struct M {
-  double dM;
-  S ARR_S[3];
-  void pr() {
-    for (int i = 0; i < 3; i++)
-     printf("ARR_S[%d].iS = %d ARR_S[%d].f1 = %f\n", i, ARR_S[i].iS, i, ARR_S[i].f1);
-
-    for (int i = 0; i < 2; i++)
-      for (int j = 0; j < 3; j++)
-        for (int k = 0; k < 4; k++)
-           printf("MULTI_ARR[%d][%d][%d].iS = %d MULTI_ARR[%d][%d][%d].f1 = %f\n", 
-                  i,j,k, MULTI_ARR[i][j][k].iS, i,j,k, MULTI_ARR[i][j][k].f1);
-
-  }
-
- S MULTI_ARR[2][3][4];
-};
-
-int main() {
-  M m1;
-  m1.pr();
-}
-
-// CHECK-LP64: callq __ZN1SC1Ev
-
-// CHECK-LP32: calll L__ZN1SC1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-init-reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-init-reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-init-reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | grep "store i32\* @x, i32\*\*"
-
-int x;
-struct A {
-  int& y;
-  A() : y(x) {}
-};
-A z;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,242 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 %s -emit-llvm -o %t
-// RUN: FileCheck %s < %t
-// RUN: FileCheck -check-prefix=CHECK-PR10720 %s < %t
-
-extern "C" int printf(...);
-
-struct M {
-  M() { printf("M()\n"); }
-  M(int i) { iM = i; printf("M(%d)\n", i); }
-  int iM;
-  void MPR() {printf("iM = %d\n", iM); };
-};
-
-struct P {
-  P() { printf("P()\n"); }
-  P(int i) { iP = i; printf("P(%d)\n", i); }
-  int iP;
-  void PPR() {printf("iP = %d\n", iP); };
-};
-
-struct Q {
-  Q() { printf("Q()\n"); }
-  Q(int i) { iQ = i; printf("Q(%d)\n", i); }
-  int iQ;
-  void QPR() {printf("iQ = %d\n", iQ); };
-};
-
-struct N : M , P, Q {
-  N() : f1(1.314), P(2000), ld(00.1234+f1), M(1000), Q(3000),
-        d1(3.4567), i1(1234), m1(100) { printf("N()\n"); }
-  M m1;
-  M m2;
-  float f1;
-  int i1;
-  float d1;
-  void PR() {
-    printf("f1 = %f d1 = %f i1 = %d ld = %f \n", f1,d1,i1, ld); 
-    MPR();
-    PPR();
-    QPR();
-    printf("iQ = %d\n", iQ);
-    printf("iP = %d\n", iP);
-    printf("iM = %d\n", iM);
-    // FIXME. We don't yet support this syntax.
-    // printf("iQ = %d\n", (*this).iQ);
-    printf("iQ = %d\n", this->iQ);
-    printf("iP = %d\n", this->iP);
-    printf("iM = %d\n", this->iM);
-  }
-  float ld;
-  float ff;
-  M arr_m[3];
-  P arr_p[1][3];
-  Q arr_q[2][3][4];
-};
-
-int main() {
-  M m1;
-
-  N n1;
-  n1.PR();
-}
-
-// PR5826
-template <class T> struct A {
-  A() {}
-  A(int) {}
-  A(const A&) {}
-  ~A() {}
-  operator int() {return 0;}
-};
-
-// CHECK: define void @_Z1fv()
-void f() {
-  // CHECK: call void @_ZN1AIsEC1Ei
-  A<short> a4 = 97;
-
-  // CHECK-NEXT: store i32 17
-  int i = 17;
-
-  // CHECK-NEXT: call void @_ZN1AIsED1Ev
-  // CHECK-NOT: call void @_ZN1AIsED1Ev
-  // CHECK: ret void
-}
-
-// Make sure we initialize the vtable pointer if it's required by a
-// base initializer.
-namespace InitVTable {
-  struct A { A(int); };
-  struct B : A {
-    virtual int foo();
-    B();
-    B(int);
-  };
-
-  // CHECK: define void @_ZN10InitVTable1BC2Ev(%"struct.InitVTable::B"* %this) unnamed_addr
-  // CHECK:      [[T0:%.*]] = bitcast [[B:%.*]]* [[THIS:%.*]] to i8***
-  // CHECK-NEXT: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN10InitVTable1BE, i64 0, i64 2), i8*** [[T0]]
-  // CHECK:      [[VTBL:%.*]] = load i32 ([[B]]*)*** {{%.*}}
-  // CHECK-NEXT: [[FNP:%.*]] = getelementptr inbounds i32 ([[B]]*)** [[VTBL]], i64 0
-  // CHECK-NEXT: [[FN:%.*]] = load i32 ([[B]]*)** [[FNP]]
-  // CHECK-NEXT: [[ARG:%.*]] = call i32 [[FN]]([[B]]* [[THIS]])
-  // CHECK-NEXT: call void @_ZN10InitVTable1AC2Ei({{.*}}* {{%.*}}, i32 [[ARG]])
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[B]]* [[THIS]] to i8***
-  // CHECK-NEXT: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN10InitVTable1BE, i64 0, i64 2), i8*** [[T0]]
-  // CHECK-NEXT: ret void
-  B::B() : A(foo()) {}
-
-  // CHECK: define void @_ZN10InitVTable1BC2Ei(%"struct.InitVTable::B"* %this, i32 %x) unnamed_addr
-  // CHECK:      [[ARG:%.*]] = add nsw i32 {{%.*}}, 5
-  // CHECK-NEXT: call void @_ZN10InitVTable1AC2Ei({{.*}}* {{%.*}}, i32 [[ARG]])
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[B]]* {{%.*}} to i8***
-  // CHECK-NEXT: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN10InitVTable1BE, i64 0, i64 2), i8*** [[T0]]
-  // CHECK-NEXT: ret void
-  B::B(int x) : A(x + 5) {}
-}
-
-namespace rdar9694300 {
-  struct X {
-    int x;
-  };
-
-  // CHECK: define void @_ZN11rdar96943001fEv
-  void f() {
-    // CHECK: alloca
-    X x;
-    // CHECK-NEXT: [[I:%.*]] = alloca i32
-    // CHECK-NEXT: store i32 17, i32* [[I]]
-    int i = 17;
-    // CHECK-NEXT: ret void
-  }
-}
-
-// Check that we emit a zero initialization step for list-value-initialization
-// which calls a trivial default constructor.
-namespace PR13273 {
-  struct U {
-    int t;
-    U() = default;
-  };
-
-  struct S : U {
-    S() = default;
-  };
-
-  // CHECK: define {{.*}}@_ZN7PR132731fEv(
-  int f() {
-    // CHECK-NOT: }
-    // CHECK: llvm.memset{{.*}}i8 0
-    return (new S{})->t;
-  }
-}
-
-template<typename T>
-struct X {
-  X(const X &);
-
-  T *start;
-  T *end;
-};
-
-template<typename T> struct X;
-
-// Make sure that the instantiated constructor initializes start and
-// end properly.
-// CHECK: define linkonce_odr void @_ZN1XIiEC2ERKS0_(%struct.X* %this, %struct.X* %other) unnamed_addr
-// CHECK: {{store.*null}}
-// CHECK: {{store.*null}}
-// CHECK: ret
-template<typename T>
-X<T>::X(const X &other) : start(0), end(0) { }
-
-X<int> get_X(X<int> x) { return x; }
-
-namespace PR10720 {
-  struct X { 
-    X(const X&); 
-    X(X&&); 
-    X& operator=(const X&);
-    X& operator=(X&&);
-    ~X(); 
-  };
-
-  struct pair2 {
-    X second[4];
-
-    // CHECK-PR10720: define linkonce_odr {{.*}} @_ZN7PR107205pair2aSERKS0_
-    // CHECK-PR10720: load
-    // CHECK-PR10720: icmp ne
-    // CHECK-PR10720-NEXT: br i1
-    // CHECK-PR10720: call {{.*}} @_ZN7PR107201XaSERKS0_
-    // CHECK-PR10720: ret
-    pair2 &operator=(const pair2&) = default;
-
-    // CHECK-PR10720: define linkonce_odr {{.*}} @_ZN7PR107205pair2aSEOS0_
-    // CHECK-PR10720: load
-    // CHECK-PR10720: icmp ne
-    // CHECK-PR10720-NEXT: br i1
-    // CHECK-PR10720: call {{.*}} @_ZN7PR107201XaSEOS0_
-    // CHECK-PR10720: ret
-    pair2 &operator=(pair2&&) = default;
-
-    // CHECK-PR10720: define linkonce_odr void @_ZN7PR107205pair2C2EOS0_
-    // CHECK-PR10720-NOT: ret
-    // CHECK-PR10720: load
-    // CHECK-PR10720: icmp ult
-    // CHECK-PR10720-NEXT: br i1
-    // CHECK-PR10720: call void @_ZN7PR107201XC1EOS0_
-    // CHECK-PR10720-NEXT: br label
-    // CHECK-PR10720: ret void
-    pair2(pair2&&) = default;
-
-    // CHECK-PR10720: define linkonce_odr void @_ZN7PR107205pair2C2ERKS0_
-    // CHECK-PR10720-NOT: ret
-    // CHECK-PR10720: load
-    // CHECK-PR10720: icmp ult
-    // CHECK-PR10720-NEXT: br i1
-    // CHECK-PR10720: call void @_ZN7PR107201XC1ERKS0_
-    // CHECK-PR10720-NEXT: br label
-    // CHECK-PR10720: ret void
-    pair2(const pair2&) = default;
-  };
-
-  struct pair : X { // Make the copy constructor non-trivial, so we actually generate it.
-    int second[4];
-    // CHECK-PR10720: define linkonce_odr void @_ZN7PR107204pairC2ERKS0_
-    // CHECK-PR10720-NOT: ret
-    // CHECK-PR10720: call void @llvm.memcpy
-    // CHECK-PR10720-NEXT: ret void
-    pair(const pair&) = default;
-  };
-
-  void foo(const pair &x, const pair2 &x2) {
-    pair y(x);
-    pair2 y2(x2);
-    pair2 y2m(static_cast<pair2&&>(y2));
-
-    y2 = x2;
-    y2m = static_cast<pair2&&>(y2);
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructor-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-// PR4826
-struct A {
-  A() {
-  }
-};
-
-template<typename T>
-struct B {
-  B(T) {}
-  
-  A nodes;
-};
-
-
-// PR4853
-template <typename T> class List {
-public:
-  List(){ }     // List<BinomialNode<int>*>::List() remains undefined.
-  ~List() {}
-};
-
-template <typename T> class Node {
- int i;
-public:
- Node(){ }      // Node<BinomialNode<int>*>::Node() remains undefined.
- ~Node() {}
-};
-
-
-template<typename T> class BinomialNode : Node<BinomialNode<T>*> {
-public:
-  BinomialNode(T value) {}
-  List<BinomialNode<T>*> nodes;
-};
-
-int main() {
-  B<int> *n = new B<int>(4);
-  BinomialNode<int> *node = new BinomialNode<int>(1);
-  delete node;
-}
-
-// CHECK-LP64: __ZN4NodeIP12BinomialNodeIiEEC2Ev:
-// CHECK-LP64: __ZN4ListIP12BinomialNodeIiEEC1Ev:
-// CHECK-LP64: __ZN4ListIP12BinomialNodeIiEED1Ev:
-
-// CHECK-LP32: __ZN4NodeIP12BinomialNodeIiEEC2Ev:
-// CHECK-LP32: __ZN4ListIP12BinomialNodeIiEEC1Ev:
-// CHECK-LP32: __ZN4ListIP12BinomialNodeIiEED1Ev:

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/constructors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,115 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -emit-llvm -o - | FileCheck %s
-
-struct Member { int x; Member(); Member(int); Member(const Member &); };
-struct VBase { int x; VBase(); VBase(int); VBase(const VBase &); };
-
-struct ValueClass {
-  ValueClass(int x, int y) : x(x), y(y) {}
-  int x;
-  int y;
-}; // subject to ABI trickery
-
-
-
-/* Test basic functionality. */
-struct A {
-  A(struct Undeclared &);
-  A(ValueClass);
-  Member mem;
-};
-
-A::A(struct Undeclared &ref) : mem(0) {}
-
-// Check that delegation works.
-// CHECK: define void @_ZN1AC1ER10Undeclared(%struct.A* %this, %struct.Undeclared* %ref) unnamed_addr
-// CHECK: call void @_ZN1AC2ER10Undeclared(
-
-// CHECK: define void @_ZN1AC2ER10Undeclared(%struct.A* %this, %struct.Undeclared* %ref) unnamed_addr
-// CHECK: call void @_ZN6MemberC1Ei(
-
-A::A(ValueClass v) : mem(v.y - v.x) {}
-
-// CHECK: define void @_ZN1AC1E10ValueClass(%struct.A* %this, i64 %v.coerce) unnamed_addr
-// CHECK: call void @_ZN1AC2E10ValueClass(
-
-// CHECK: define void @_ZN1AC2E10ValueClass(%struct.A* %this, i64 %v.coerce) unnamed_addr
-// CHECK: call void @_ZN6MemberC1Ei(
-
-
-/* Test that things work for inheritance. */
-struct B : A {
-  B(struct Undeclared &);
-  Member mem;
-};
-
-B::B(struct Undeclared &ref) : A(ref), mem(1) {}
-
-// CHECK: define void @_ZN1BC1ER10Undeclared(%struct.B* %this, %struct.Undeclared* %ref) unnamed_addr
-// CHECK: call void @_ZN1BC2ER10Undeclared(
-
-// CHECK: define void @_ZN1BC2ER10Undeclared(%struct.B* %this, %struct.Undeclared* %ref) unnamed_addr
-// CHECK: call void @_ZN1AC2ER10Undeclared(
-// CHECK: call void @_ZN6MemberC1Ei(
-
-
-
-/* Test that the delegation optimization is disabled for classes with
-   virtual bases (for now).  This is necessary because a vbase
-   initializer could access one of the parameter variables by
-   reference.  That's a solvable problem, but let's not solve it right
-   now. */
-struct C : virtual A {
-  C(int);
-  Member mem;
-};
-C::C(int x) : A(ValueClass(x, x+1)), mem(x * x) {}
-
-// CHECK: define void @_ZN1CC1Ei(%struct.C* %this, i32 %x) unnamed_addr
-// CHECK: call void @_ZN10ValueClassC1Eii(
-// CHECK: call void @_ZN1AC2E10ValueClass(
-// CHECK: call void @_ZN6MemberC1Ei(
-
-// CHECK: define void @_ZN1CC2Ei(%struct.C* %this, i8** %vtt, i32 %x) unnamed_addr
-// CHECK: call void @_ZN6MemberC1Ei(
-
-
-
-/* Test that the delegation optimization is disabled for varargs
-   constructors. */
-struct D : A {
-  D(int, ...);
-  Member mem;
-};
-
-D::D(int x, ...) : A(ValueClass(x, x+1)), mem(x*x) {}
-
-// CHECK: define void @_ZN1DC1Eiz(%struct.D* %this, i32 %x, ...) unnamed_addr
-// CHECK: call void @_ZN10ValueClassC1Eii(
-// CHECK: call void @_ZN1AC2E10ValueClass(
-// CHECK: call void @_ZN6MemberC1Ei(
-
-// CHECK: define void @_ZN1DC2Eiz(%struct.D* %this, i32 %x, ...) unnamed_addr
-// CHECK: call void @_ZN10ValueClassC1Eii(
-// CHECK: call void @_ZN1AC2E10ValueClass(
-// CHECK: call void @_ZN6MemberC1Ei(
-
-
-// PR6622:  this shouldn't crash
-namespace test0 {
-  struct A {};
-  struct B : virtual A { int x; };
-  struct C : B {};
-  
-  void test(C &in) {
-    C tmp = in;
-  }
-}
-
-namespace test1 {
-  struct A { A(); void *ptr; };
-  struct B { B(); int x; A a[0]; };
-  B::B() {}
-  // CHECK:    define void @_ZN5test11BC2Ev(
-  // CHECK:      [[THIS:%.*]] = load [[B:%.*]]**
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conversion-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conversion-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conversion-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-// XFAIL: *
-extern "C" int printf(...);
-struct S {
-  operator int();
-};
-
-S::operator int() {
-  return 10;
-}
-
-int f(S s) {
-  return s;
-}
-
-class X { // ...
-  public: operator int() { printf("operator int()\n"); return iX; }
-  public: operator float() { printf("operator float()\n"); return fX; }
-  X() : iX(100), fX(1.234)  {}
-  int iX;
-  float fX;
-};
-
-X x;
-
-struct Z {
-    operator X() { printf("perator X()\n"); x.iX += iZ; x.fX += fZ; return x; }
-    int iZ;
-    float fZ;
-    Z() : iZ(1), fZ(1.00) {}
-};
-
-Z z;
-
-class Y { // ...
-  public: operator Z(){printf("perator Z()\n"); return z; }
-};
-
-Y y;
-
-int count=0;
-class O { // ...
-public: 
-  operator int(){ return ++iO; }
-  O() : iO(count++) {}
-  int iO;
-};
-
-void g(O a, O b) {
-  int i = (a) ? 1+a : 0; 
-  int j = (a&&b) ? a+b : i; 
-  if (a) { }
-  printf("i = %d j = %d a.iO = %d b.iO = %d\n", i, j, a.iO, b.iO);
-}
-
-int main() {
-  int c = X(Z(y)); // OK: y.operator Z().operator X().operator int()
-  printf("c = %d\n", c);
-  float f = X(Z(y));
-  printf("f = %f\n", f);
-  int i = x;
-  printf("i = %d float = %f\n", i, float(x));
-  i = int(X(Z(y)));
-  f = float(X(Z(y)));
-  printf("i = %d float = %f\n", i,f);
-  f = (float)x;
-  i = (int)x;
-  printf("i = %d float = %f\n", i,f);
-
-  int d = (X)((Z)y);
-  printf("d = %d\n", d);
-
-  int e = (int)((X)((Z)y));
-  printf("e = %d\n", e);
-  O o1, o2;
-  g(o1, o2);
-}
-
-// Test. Conversion in base class is visible in derived class.
-class XB {
-  int a;
-public:
-  operator int();
-};
-
-class Yb : public XB {
-  double b;
-public:
-  operator char();
-};
-
-void f(Yb& a) {
-  int i = a; // OK. calls XB::operator int();
-  char ch = a;  // OK. calls Yb::operator char();
-}
-
-struct A {
-  operator int() const;
-};
-
-// CHECK-LP64: .globl __ZN1ScviEv
-// CHECK-LP64-NEXT: __ZN1ScviEv:
-// CHECK-LP64: callq __ZN1Ycv1ZEv
-// CHECK-LP64: callq __ZN1Zcv1XEv
-// CHECK-LP64: callq __ZN1XcviEv
-// CHECK-LP64: callq __ZN1XcvfEv
-// CHECK-LP64: callq __ZN2XBcviEv
-// CHECK-LP64: callq __ZN2YbcvcEv
-
-// CHECK-LP32: .globl  __ZN1ScviEv
-// CHECK-LP32-NEXT: __ZN1ScviEv:
-// CHECK-LP32: call L__ZN1Ycv1ZEv
-// CHECK-LP32: call L__ZN1Zcv1XEv
-// CHECK-LP32: call L__ZN1XcviEv
-// CHECK-LP32: call L__ZN1XcvfEv
-// CHECK-LP32: call L__ZN2XBcviEv
-// CHECK-LP32: call L__ZN2YbcvcEv

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conversion-operator-base.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conversion-operator-base.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/conversion-operator-base.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s -verify
-// expected-no-diagnostics
-// PR5730
-
-struct A { operator int(); float y; };
-struct B : A { double z; };
-void a() { switch(B()) {} }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/convert-to-fptr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/convert-to-fptr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/convert-to-fptr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-extern "C" int printf(...);
-
-int f1(int arg)  { return arg; }; 
-
-int f2(float arg) { return int(arg); }; 
-
-typedef int (*fp1)(int); 
-
-typedef int (*fp2)(float); 
-
-struct A {
-  operator fp1() { return f1; }
-  operator fp2() { return f2; } 
-} a;
-
-
-// Test for function reference.
-typedef int (&fr1)(int); 
-typedef int (&fr2)(float); 
-
-struct B {
-  operator fr1() { return f1; }
-  operator fr2() { return f2; } 
-} b;
-
-int main()
-{
- int i = a(10); // Calls f1 via pointer returned from conversion function
- printf("i = %d\n", i);
-
- int j = b(20); // Calls f1 via pointer returned from conversion function
- printf("j = %d\n", j);
- return 0;
-}
-
-// CHECK-LP64: callq __ZN1AcvPFiiEEv
-// CHECK-LP64: callq __ZN1BcvRFiiEEv
-
-// CHECK-LP32: calll L__ZN1AcvPFiiEEv
-// CHECK-LP32: calll L__ZN1BcvRFiiEEv
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-extern "C" int printf(...);
-
-struct B {
-  B() : B1(3.14), B2(3.15), auB2(3.16)  {} 
-  float B1;
-  float B2;
-  void pr() {
-    printf("B1 = %f B2 = %f auB1 = %f\n", B1, B2, auB1);
-  }
-
-  B& operator=(const B& arg) { B1 = arg.B1; B2 = arg.B2; 
-                               auB1 = arg.auB1; return *this; }
-  union {
-    float auB1;
-    float auB2;
-  };
-};
-
-struct M {
-  M() : M1(10), M2(11) , auM1(12) {} 
-  int M1;
-  int M2;
-  void pr() {
-    printf("M1 = %d M2 = %d auM1 = %d auM2 = %d\n", M1, M2, auM1, auM2);
-  }
-  union {
-    int auM1;
-    int auM2;
-  };
-};
-
-struct N  : B {
-  N() : N1(20), N2(21) {} 
-  int N1;
-  int N2;
-  void pr() {
-    printf("N1 = %d N2 = %d\n", N1, N2);
-    for (unsigned i = 0; i < 3; i++)
-      for (unsigned j = 0; j < 2; j++)
-        printf("arr_b[%d][%d] = %f\n", i,j,arr_b[i][j].B1);
-    B::pr();
-  }
-  N& operator=(const N& arg) {
-    N1 = arg.N1; N2 = arg.N2; 
-    for (unsigned i = 0; i < 3; i++)
-      for (unsigned j = 0; j < 2; j++)
-        arr_b[i][j] = arg.arr_b[i][j];
-    return *this;
-  }
-  B arr_b[3][2];
-};
-
-struct Q  : B {
-  Q() : Q1(30), Q2(31) {} 
-  int Q1;
-  int Q2;
-  void pr() {
-    printf("Q1 = %d Q2 = %d\n", Q1, Q2);
-  }
-};
-
-
-struct X : M , N { 
-  X() : d(0.0), d1(1.1), d2(1.2), d3(1.3) {}
-  double d;
-  double d1;
-  double d2;
-  double d3;
-  void pr() {
-    printf("d = %f d1 = %f d2 = %f d3 = %f\n", d, d1,d2,d3);
-    M::pr(); N::pr();
-    q1.pr(); q2.pr();
-  }
-
- Q q1, q2;
-}; 
-
-
-X srcX; 
-X dstX; 
-X dstY; 
-
-int main() {
-  dstY = dstX = srcX;
-  srcX.pr();
-  dstX.pr();
-  dstY.pr();
-}
-
-// CHECK-LP64: .globl   __ZN1XaSERKS_
-// CHECK-LP64: .weak_definition  __ZN1XaSERKS_
-// CHECK-LP64: __ZN1XaSERKS_:
-
-// CHECK-LP32: .globl   __ZN1XaSERKS_
-// CHECK-LP32: .weak_definition  __ZN1XaSERKS_
-// CHECK-LP32: __ZN1XaSERKS_:
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-struct A {};
-A& (A::*x)(const A&) = &A::operator=;
-// CHECK: define linkonce_odr %struct.A* @_ZN1AaSERKS_

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis-3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-// expected-no-diagnostics
-
-struct A {
-  A& operator=(A&);
-};
-
-struct B {
-  void operator=(B);
-};
-
-struct C {
-  A a;
-  B b;
-  float c;
-  int (A::*d)();
-  _Complex float e;
-  int f[10];
-  A g[2];
-  B h[2];
-};
-void a(C& x, C& y) {
-  x = y;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-synthesis.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: grep "_ZN1XaSERK1X" %t | count 0
-
-extern "C" int printf(...);
-
-struct B {
-  B() : B1(3.14), B2(3.15), auB2(3.16)  {} 
-  float B1;
-  float B2;
-  void pr() {
-    printf("B1 = %f B2 = %f auB1 = %f\n", B1, B2, auB1);
-  }
-
-  union {
-    float auB1;
-    float auB2;
-  };
-};
-
-struct M {
-  M() : M1(10), M2(11) , auM1(12) {} 
-  int M1;
-  int M2;
-  void pr() {
-    printf("M1 = %d M2 = %d auM1 = %d auM2 = %d\n", M1, M2, auM1, auM2);
-  }
-  union {
-    int auM1;
-    int auM2;
-  };
-};
-
-struct N  : B {
-  N() : N1(20), N2(21) {} 
-  int N1;
-  int N2;
-  void pr() {
-    printf("N1 = %d N2 = %d\n", N1, N2);
-    B::pr();
-  }
-};
-
-struct Q {
-  Q() : Q1(30), Q2(31) {} 
-  int Q1;
-  int Q2;
-  void pr() {
-    printf("Q1 = %d Q2 = %d\n", Q1, Q2);
-  }
-};
-
-
-struct X : M , N { 
-  X() : d(0.0), d1(1.1), d2(1.2), d3(1.3) {}
-  double d;
-  double d1;
-  double d2;
-  double d3;
-  void pr() {
-    printf("d = %f d1 = %f d2 = %f d3 = %f\n", d, d1,d2,d3);
-    M::pr(); N::pr();
-    q1.pr(); q2.pr();
-  }
-
- Q q1, q2;
-}; 
-
-
-X srcX; 
-X dstX; 
-X dstY; 
-
-int main() {
-  dstY = dstX = srcX;
-  srcX.pr();
-  dstX.pr();
-  dstY.pr();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-volatile-synthesis.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-volatile-synthesis.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-assign-volatile-synthesis.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-// rdar://9894548
-
-typedef unsigned long word_t;
-typedef unsigned long u64_t;
-typedef unsigned int u32_t;
-
-class ioapic_redir_t {
-public:
- union {
-  struct {
-   word_t vector : 8;
-
-   word_t delivery_mode : 3;
-   word_t dest_mode : 1;
-
-   word_t delivery_status : 1;
-   word_t polarity : 1;
-   word_t irr : 1;
-   word_t trigger_mode : 1;
-
-   word_t mask : 1;
-   word_t _pad0 : 15;
-
-   word_t dest : 8;
-  };
-  volatile u32_t raw[2];
-  volatile u64_t raw64;
- };
-};
-
-struct ioapic_shadow_struct
-{
- ioapic_redir_t redirs[24];
-} ioapic_shadow[16];
-
-void init_ioapic(unsigned long ioapic_id)
-{
-     ioapic_redir_t entry;
-     ioapic_shadow[ioapic_id].redirs[3] = entry;
-}
-
-// CHECK: call void @llvm.memcpy

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-elim-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-elim-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-elim-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -triple armv7-none-eabi -emit-llvm -o - %s | FileCheck %s
-
-struct A { int x; A(int); ~A(); };
-A f() { return A(0); }
-// CHECK: define void @_Z1fv
-// CHECK: call {{.*}} @_ZN1AC1Ei
-// CHECK-NEXT: ret void
-
-// Verify that we do not elide copies when constructing a base class.
-namespace no_elide_base {
-  struct Base { 
-    Base(const Base&);
-    ~Base();
-  };
-
-  struct Other {
-    operator Base() const;
-  };
-
-  struct Derived : public virtual Base { 
-    Derived(const Other &O);
-  };
-
-  // CHECK: define {{.*}} @_ZN13no_elide_base7DerivedC1ERKNS_5OtherE(%"struct.no_elide_base::Derived"* %this, %"struct.no_elide_base::Other"* %O) unnamed_addr
-  Derived::Derived(const Other &O) 
-    // CHECK: call {{.*}} @_ZNK13no_elide_base5OthercvNS_4BaseEEv
-    // CHECK: call {{.*}} @_ZN13no_elide_base4BaseC2ERKS0_
-    // CHECK: call {{.*}} @_ZN13no_elide_base4BaseD1Ev
-    : Base(O)
-  {
-    // CHECK: ret
-  }
-}
-
-// PR8683.
-
-namespace PR8683 {
-
-struct A {
-  A();
-  A(const A&);
-  A& operator=(const A&);
-};
-
-struct B {
-  A a;
-};
-
-void f() {
-  // Verify that we don't mark the copy constructor in this expression as elidable.
-  // CHECK: call {{.*}} @_ZN6PR86831AC1ERKS0_
-  A a = (B().a);
-}
-
-}
-
-namespace PR12139 {
-  struct A {
-    A() : value(1) { }
-    A(A const &, int value = 2) : value(value) { }
-    int value;
-
-    static A makeA() { A a; a.value = 2; return a; }
-  };
-
-  // CHECK: define i32 @_ZN7PR121394testEv
-  int test() {
-    // CHECK: call void @_ZN7PR121391A5makeAEv
-    // CHECK-NEXT: call %"struct.PR12139::A"* @_ZN7PR121391AC1ERKS0_i
-    A a(A::makeA(), 3);
-    // CHECK-NEXT: getelementptr inbounds
-    // CHECK-NEXT: load
-    // CHECK-NEXT: ret i32
-    return a.value;
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-elim.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-elim.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-elim.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: grep "_ZN1CC1ERK1C" %t | count 0
-// RUN: grep "_ZN1SC1ERK1S" %t | count 0
-
-extern "C" int printf(...);
-
-
-struct C {
-  C() : iC(6) {printf("C()\n"); }
-  C(const C& c) { printf("C(const C& c)\n"); }
-  int iC;
-};
-
-C foo() {
-  return C();
-};
-
-class X { // ...
-public: 
-  X(int) {}
-  X(const X&, int i = 1, int j = 2, C c = foo()) {
-    printf("X(const X&, %d, %d, %d)\n", i, j, c.iC);
-  }
-};
-
-
-struct S {
-  S();
-};
-
-S::S() { printf("S()\n"); }
-
-void Call(S) {};
-
-int main() {
-  X a(1);
-  X b(a, 2);
-  X c = b;
-  X d(a, 5, 6);
-  S s;
-  Call(s);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-synthesis-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-synthesis-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-synthesis-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-struct A { virtual void a(); };
-A x(A& y) { return y; }
-
-// CHECK: define linkonce_odr {{.*}} @_ZN1AC1ERKS_(%struct.A* %this, %struct.A*) unnamed_addr
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1A, i64 0, i64 2)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-synthesis.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-synthesis.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-constructor-synthesis.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,156 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s | FileCheck %s
-
-extern "C" int printf(...);
-
-int init = 100;
-
-struct M {
-  int iM;
-  M() : iM(init++) {}
-};
-
-struct N {
-  int iN;
-  N() : iN(200) {}
-  N(N const & arg){this->iN = arg.iN; }
-};
-
-struct P {
-  int iP;
-  P() : iP(init++) {}
-};
-
-
-// CHECK: define linkonce_odr void @_ZN1XC1ERKS_(%struct.X* %this, %struct.X*) unnamed_addr
-struct X  : M, N, P { // ...
-  X() : f1(1.0), d1(2.0), i1(3), name("HELLO"), bf1(0xff), bf2(0xabcd),
-        au_i1(1234), au1_4("MASKED") {}
-  P p0;
-  void pr() {
-    printf("iM = %d iN = %d, m1.iM = %d\n", iM, iN, m1.iM); 
-    printf("im = %d p0.iP = %d, p1.iP = %d\n", iP, p0.iP, p1.iP); 
-    printf("f1 = %f  d1 = %f  i1 = %d name(%s) \n", f1, d1, i1, name);
-    printf("bf1 = %x  bf2 = %x\n", bf1, bf2);
-    printf("au_i2 = %d\n", au_i2); 
-    printf("au1_1 = %s\n", au1_1); 
-  }
-  M m1;
-  P p1;
-  float f1;
-  double d1;
-  int i1;
-  const char *name;
-  unsigned bf1 : 8;
-  unsigned bf2 : 16;
-  int arr[2];
-  _Complex float complex;
-
-  union {
-    int au_i1;
-    int au_i2;
-  };
-  union {
-    const char * au1_1;
-    float au1_2;
-    int au1_3;
-    const char * au1_4;
-  };
-};
-
-static int ix = 1;
-// class with user-defined copy constructor.
-struct S {
-  S() : iS(ix++) {  }
-  S(const S& arg) { *this = arg; }
-  int iS;
-};
-
-// class with trivial copy constructor.
-struct I {
-  I() : iI(ix++) {  }
-  int iI;
-};
-
-struct XM {
-  XM() {  }
-  double dXM;
-  S ARR_S[3][4][2];
-  void pr() {
-   for (unsigned i = 0; i < 3; i++)
-     for (unsigned j = 0; j < 4; j++)
-      for (unsigned k = 0; k < 2; k++)
-        printf("ARR_S[%d][%d][%d] = %d\n", i,j,k, ARR_S[i][j][k].iS);
-   for (unsigned i = 0; i < 3; i++)
-      for (unsigned k = 0; k < 2; k++)
-        printf("ARR_I[%d][%d] = %d\n", i,k, ARR_I[i][k].iI);
-  }
-  I ARR_I[3][2];
-};
-
-int main() {
-  X a;
-  X b(a);
-  b.pr();
-  X x;
-  X c(x);
-  c.pr();
-
-  XM m0;
-  XM m1 = m0;
-  m1.pr();
-}
-
-struct A {
-};
-
-struct B : A {
-  A &a;
-};
-
-void f(const B &b1) {
-  B b2(b1);
-}
-
-// PR6628
-namespace PR6628 {
-
-struct T {
-  T();
-  ~T();
-
-  double d;
-};
-
-struct A {
-  A(const A &other, const T &t = T(), const T& t2 = T());
-};
-
-struct B : A {
-  A a1;
-  A a2;
-  A a[10];
-};
-
-// Force the copy constructor to be synthesized.
-void f(B b1) {
-  B b2 = b1;
-}
-
-// CHECK: define linkonce_odr void @_ZN6PR66281BC2ERKS0_(%"struct.PR6628::B"* %this, %"struct.PR6628::B"*) unnamed_addr
-// CHECK: call void @_ZN6PR66281TC1Ev
-// CHECK: call void @_ZN6PR66281TC1Ev
-// CHECK: call void @_ZN6PR66281AC2ERKS0_RKNS_1TES5_
-// CHECK: call void @_ZN6PR66281TD1Ev
-// CHECK: call void @_ZN6PR66281TD1Ev
-// CHECK: call void @_ZN6PR66281TC1Ev
-// CHECK: call void @_ZN6PR66281TC1Ev
-// CHECK: call void @_ZN6PR66281AC1ERKS0_RKNS_1TES5_
-// CHECK: call void @_ZN6PR66281TD1Ev
-// CHECK: call void @_ZN6PR66281TD1Ev
-// CHECK: call void @_ZN6PR66281TC1Ev
-// CHECK: call void @_ZN6PR66281TC1Ev
-// CHECK: call void @_ZN6PR66281AC1ERKS0_RKNS_1TES5_
-// CHECK: call void @_ZN6PR66281TD1Ev
-// CHECK: call void @_ZN6PR66281TD1Ev
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-in-cplus-object.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-in-cplus-object.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-in-cplus-object.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
-
-struct S {
-  S(const char *);
-  ~S();
-};
-
-struct TestObject
-{
-	TestObject(const TestObject& inObj, int def = 100,  const S &Silly = "silly");
-	TestObject();
-	~TestObject();
-	TestObject& operator=(const TestObject& inObj);
-	int version() const;
-
-};
-
-void testRoutine() {
-    TestObject one;
-    int (^V)() = ^{ return one.version(); };
-}
-
-// CHECK: call void @_ZN10TestObjectC1Ev
-// CHECK: call void @_ZN1SC1EPKc
-// CHECK: call void @_ZN10TestObjectC1ERKS_iRK1S
-// CHECK: call void @_ZN1SD1Ev
-// CHECK: call void @_ZN10TestObjectD1Ev
-// CHECK: call void @_ZN10TestObjectD1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-initialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-initialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/copy-initialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-struct Foo {
-  Foo();
-  Foo(const Foo&);
-};
-
-struct Bar {
-  Bar();
-  operator const Foo&() const;
-};
-
-void f(Foo);
-
-// CHECK: define void @_Z1g3Foo(%struct.Foo* %foo)
-void g(Foo foo) {
-  // CHECK: call void @_ZN3BarC1Ev
-  // CHECK: @_ZNK3BarcvRK3FooEv
-  // CHECK: call void @_Z1f3Foo
-  f(Bar());
-  // CHECK: call void @_ZN3FooC1Ev
-  // CHECK: call void @_Z1f3Foo
-  f(Foo());
-  // CHECK: call void @_ZN3FooC1ERKS_
-  // CHECK: call void @_Z1f3Foo
-  f(foo);
-  // CHECK: ret
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/coverage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/coverage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/coverage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -test-coverage -femit-coverage-notes | FileCheck %s
-
-extern "C" void test_name1() {}
-void test_name2() {}
-
-// CHECK: metadata !"test_name1", metadata !"test_name1", metadata !"",{{.*}}DW_TAG_subprogram
-// CHECK: metadata !"test_name2", metadata !"test_name2", metadata !"_Z10test_name2v",{{.*}}DW_TAG_subprogram

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cp-blocks-linetables.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cp-blocks-linetables.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cp-blocks-linetables.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -fblocks -g -emit-llvm %s -o - | FileCheck %s
-// Ensure that we generate a line table entry for the block cleanup.
-// CHECK: define {{.*}} @__main_block_invoke
-// CHECK: _NSConcreteStackBlock
-// CHECK: = bitcast {{.*}}, !dbg ![[L1:[0-9]+]]
-// CHECK-NOT:  call {{.*}} @_Block_object_dispose{{.*}}, !dbg ![[L1]]
-// CHECK: ret
-
-void * _NSConcreteStackBlock;
-#ifdef __cplusplus
-extern "C" void exit(int);
-#else
-extern void exit(int);
-#endif
-
-enum numbers {
-  zero, one, two, three, four
-};
-
-typedef enum numbers (^myblock)(enum numbers);
-
-
-double test(myblock I) {
-  return I(three);
-}
-
-int main() {
-  __block enum numbers x = one;
-  __block enum numbers y = two;
-
-  /* Breakpoint for first Block function.  */
-  myblock CL = ^(enum numbers z)
-    { enum numbers savex = x;
-      { __block enum numbers x = savex;
-	y = z;
-	if (y != three)
-	  exit (6);
-	test (
-	      /* Breakpoint for second Block function.  */
-	      ^ (enum numbers z) {
-		if (y != three) {
-		  exit(1);
-		}
-		if (x != one)
-		  exit(2);
-		x = z;
-		if (x != three)
-		  exit(3);
-		if (y != three)
-		  exit(4);
-		return (enum numbers) four;
-	      });}
-      return x;
-    };
-
-  enum numbers res = (enum numbers)test(CL);
-
-  if (res != one)
-    exit (5);
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx-apple-kext.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx-apple-kext.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx-apple-kext.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clangxx -target x86_64-apple-darwin10 %s -flto -S -o - |\
-// RUN:   FileCheck --check-prefix=CHECK-NO-KEXT %s
-// RUN: %clangxx -target x86_64-apple-darwin10 %s -fapple-kext -flto -S -o - |\
-// RUN:   FileCheck --check-prefix=CHECK-KEXT %s
-
-// CHECK-NO-KEXT-NOT: _GLOBAL__D_a
-// CHECK-NO-KEXT: @is_hosted = global
-// CHECK-NO-KEXT: @_ZTI3foo = {{.*}} @_ZTVN10__cxxabiv117
-// CHECK-NO-KEXT: call i32 @__cxa_atexit({{.*}} @_ZN3fooD1Ev
-// CHECK-NO-KEXT: declare i32 @__cxa_atexit
-
-// CHECK-KEXT: @_ZTV3foo = 
-// CHECK-KEXT-NOT: @_ZTVN10__cxxabiv117
-// CHECK-KEXT-NOT: call i32 @__cxa_atexit({{.*}} @_ZN3fooD1Ev
-// CHECK-KEXT-NOT: declare i32 @__cxa_atexit
-// CHECK-KEXT: @is_freestanding = global
-// CHECK-KEXT: _GLOBAL__D_a
-// CHECK-KEXT: call void @_ZN3fooD1Ev(%class.foo* @a)
-
-class foo {
-public:
-  foo();
-  virtual ~foo();
-};
-
-foo a;
-foo::~foo() {}
-
-#if !(__STDC_HOSTED__ == 1)
-int is_freestanding = 1;
-#else
-int is_hosted = 1;
-#endif
-
-extern "C" void f1() {
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx-block-objects.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx-block-objects.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx-block-objects.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s
-// rdar://8594790
-
-extern "C" {
-extern "C" void *_Block_copy(const void *aBlock);
-extern "C" void _Block_release(const void *aBlock);
-}
-
-class A {
-public:
-        int x;
-        A(const A &o);
-        A();
-        virtual ~A();
-        void hello() const;
-};
-
-int
-main()
-{
-        A a;
-        void (^c)(void) = ((__typeof(^{ a.hello(); }))_Block_copy((const void *)(^{ a.hello(); })));
-        c();
-        _Block_release((const void *)(c));
-        return 0;
-}
-
-// CHECK: define internal void @__copy_helper_block_
-// CHECK: call void @_ZN1AC1ERKS_
-
-
-// CHECK:define internal void @__destroy_helper_block_
-// CHECK: call void @_ZN1AD1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-defaulted-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-defaulted-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-defaulted-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -o - %s | FileCheck %s
-
-template <typename T>
-struct X {
-  X();
-};
-
-// CHECK: define {{.*}} @_ZN1XIbEC1Ev
-// CHECK: define {{.*}} @_ZN1XIbEC2Ev
-template <> X<bool>::X() = default;
-
-// CHECK: define weak_odr {{.*}} @_ZN1XIiEC1Ev
-// CHECK: define weak_odr {{.*}} @_ZN1XIiEC2Ev
-template <typename T> X<T>::X() = default;
-template X<int>::X();
-
-// CHECK: define linkonce_odr {{.*}} @_ZN1XIcEC1Ev
-// CHECK: define linkonce_odr {{.*}} @_ZN1XIcEC2Ev
-X<char> x;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-delegating-ctors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-delegating-ctors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-delegating-ctors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -fexceptions -fcxx-exceptions -std=c++11 -o - %s | FileCheck %s
-
-struct non_trivial {
-  non_trivial();
-  ~non_trivial() noexcept(false);
-};
-non_trivial::non_trivial() {}
-non_trivial::~non_trivial() noexcept(false) {}
-
-// We use a virtual base to ensure that the constructor
-// delegation optimization (complete->base) can't be
-// performed.
-struct delegator {
-  non_trivial n; 
-  delegator();
-  delegator(int);
-  delegator(char);
-  delegator(bool);
-};
-
-delegator::delegator() {
-  throw 0;
-}
-
-
-delegator::delegator(bool)
-{}
-
-// CHECK: define {{.*}} @_ZN9delegatorC1Ec
-// CHECK: {{.*}} @_ZN9delegatorC1Eb
-// CHECK: void @__cxa_throw
-// CHECK: void @__clang_call_terminate
-// CHECK: {{.*}} @_ZN9delegatorD1Ev
-// CHECK: define {{.*}} @_ZN9delegatorC2Ec
-// CHECK: {{.*}} @_ZN9delegatorC2Eb
-// CHECK: void @__cxa_throw
-// CHECK: void @__clang_call_terminate
-// CHECK: {{.*}} @_ZN9delegatorD2Ev
-delegator::delegator(char)
-  : delegator(true) {
-  throw 0;
-}
-
-// CHECK: define {{.*}} @_ZN9delegatorC1Ei
-// CHECK: {{.*}} @_ZN9delegatorC1Ev
-// CHECK-NOT: void @_ZSt9terminatev
-// CHECK: ret
-// CHECK-NOT: void @_ZSt9terminatev
-// CHECK: define {{.*}} @_ZN9delegatorC2Ei
-// CHECK: {{.*}} @_ZN9delegatorC2Ev
-// CHECK-NOT: void @_ZSt9terminatev
-// CHECK: ret
-// CHECK-NOT: void @_ZSt9terminatev
-delegator::delegator(int)
-  : delegator()
-{}
-
-namespace PR12890 {
-  class X {
-    int x;
-    X() = default;
-    X(int);
-  };
-  X::X(int) : X() {}
-}
-// CHECK: define {{.*}} @_ZN7PR128901XC1Ei(%"class.PR12890::X"* %this, i32)
-// CHECK: call void @llvm.memset.p0i8.{{i32|i64}}(i8* {{.*}}, i8 0, {{i32|i64}} 4, i32 4, i1 false)
-
-namespace PR14588 {
-  void other();
-
-  class Base {
-  public:
-    Base() { squawk(); }
-    virtual ~Base() {}
-
-    virtual void squawk() { other(); }
-  };
-
-
-  class Foo : public virtual Base {
-  public:
-    Foo();
-    Foo(const void * inVoid);
-    virtual ~Foo() {}
-
-    virtual void squawk() { other(); }
-  };
-
-  // CHECK: define void @_ZN7PR145883FooC1Ev(%"class.PR14588::Foo"*
-  // CHECK: call void @_ZN7PR145883FooC1EPKv(
-  // CHECK: invoke void @_ZN7PR145885otherEv()
-  // CHECK: call void @_ZN7PR145883FooD1Ev
-  // CHECK: resume
-
-  Foo::Foo() : Foo(__null) { other(); }
-  Foo::Foo(const void *inVoid) {
-    squawk();
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -std=c++11 -S -emit-llvm -o - %s -Wno-address-of-temporary | FileCheck %s
-
-// CHECK: @[[THREE_NULL_MEMPTRS:.*]] = private constant [3 x i32] [i32 -1, i32 -1, i32 -1]
-
-struct A { int a[1]; };
-typedef A x[];
-int f() {
-  x{{{1}}};
-  // CHECK: define i32 @_Z1fv
-  // CHECK: store i32 1
-  // (It's okay if the output changes here, as long as we don't crash.)
-  return 0;
-}
-
-namespace ValueInitArrayOfMemPtr {
-  struct S {};
-  typedef int (S::*p);
-  typedef p a[3];
-  void f(const a &);
-
-  struct Agg1 {
-    int n;
-    p x;
-  };
-
-  struct Agg2 {
-    int n;
-    a x;
-  };
-
-  struct S1 {
-    p x;
-    S1();
-  };
-
-  // CHECK: define void @_ZN22ValueInitArrayOfMemPtr1fEi
-  void f(int n) {
-    Agg1 a = { n };
-    // CHECK: store i32 -1,
-
-    Agg2 b = { n };
-    // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %{{.*}}, i8* bitcast ([3 x i32]* @[[THREE_NULL_MEMPTRS]] to i8*), i32 12, i32 4, i1 false)
-  }
-
-  // CHECK: define void @_ZN22ValueInitArrayOfMemPtr1gEv
-  void g() {
-    // CHECK: store i32 -1,
-    f(a{});
-  }
-}
-
-namespace array_dtor {
-  struct S { S(); ~S(); };
-  using T = S[3];
-  void f(const T &);
-  void f(T *);
-  // CHECK: define void @_ZN10array_dtor1gEv(
-  void g() {
-    // CHECK: %[[ARRAY:.*]] = alloca [3 x
-    // CHECK: br
-
-    // Construct loop.
-    // CHECK: call void @_ZN10array_dtor1SC1Ev(
-    // CHECK: br i1
-
-    // CHECK: call void @_ZN10array_dtor1fERA3_KNS_1SE(
-    // CHECK: br
-
-    // Destruct loop.
-    // CHECK: call void @_ZN10array_dtor1SD1Ev(
-    // CHECK: br i1
-    f(T{});
-
-    // CHECK: ret void
-  }
-  // CHECK: define void @_ZN10array_dtor1hEv(
-  void h() {
-    // CHECK: %[[ARRAY:.*]] = alloca [3 x
-    // CHECK: br
-
-    // CHECK: call void @_ZN10array_dtor1SC1Ev(
-    // CHECK: br i1
-    T &&t = T{};
-
-    // CHECK: call void @_ZN10array_dtor1fERA3_KNS_1SE(
-    // CHECK: br
-    f(t);
-
-    // CHECK: call void @_ZN10array_dtor1SD1Ev(
-    // CHECK: br i1
-
-    // CHECK: ret void
-  }
-  // CHECK: define void @_ZN10array_dtor1iEv(
-  void i() {
-    // CHECK: %[[ARRAY:.*]] = alloca [3 x
-    // CHECK: br
-
-    // CHECK: call void @_ZN10array_dtor1SC1Ev(
-    // CHECK: br i1
-
-    // CHECK: call void @_ZN10array_dtor1fEPA3_NS_1SE(
-    // CHECK: br
-
-    // CHECK: call void @_ZN10array_dtor1SD1Ev(
-    // CHECK: br i1
-    f(&T{});
-
-    // CHECK: ret void
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-constructors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-constructors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-constructors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -S -triple x86_64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-struct S {
-  S(int x) { }
-  S(int x, double y, double z) { }
-};
-
-void fn1() {
-  // CHECK: define void @_Z3fn1v
-  S s { 1 };
-  // CHECK: alloca %struct.S, align 1
-  // CHECK: call void @_ZN1SC1Ei(%struct.S* %s, i32 1)
-}
-
-void fn2() {
-  // CHECK: define void @_Z3fn2v
-  S s { 1, 2.0, 3.0 };
-  // CHECK: alloca %struct.S, align 1
-  // CHECK: call void @_ZN1SC1Eidd(%struct.S* %s, i32 1, double 2.000000e+00, double 3.000000e+00)
-}
-
-void fn3() {
-  // CHECK: define void @_Z3fn3v
-  S sa[] { { 1 }, { 2 }, { 3 } };
-  // CHECK: alloca [3 x %struct.S], align 1
-  // CHECK: call void @_ZN1SC1Ei(%struct.S* %{{.+}}, i32 1)
-  // CHECK: call void @_ZN1SC1Ei(%struct.S* %{{.+}}, i32 2)
-  // CHECK: call void @_ZN1SC1Ei(%struct.S* %{{.+}}, i32 3)
-}
-
-void fn4() {
-  // CHECK: define void @_Z3fn4v
-  S sa[] { { 1, 2.0, 3.0 }, { 4, 5.0, 6.0 } };
-  // CHECK: alloca [2 x %struct.S], align 1
-  // CHECK: call void @_ZN1SC1Eidd(%struct.S* %{{.+}}, i32 1, double 2.000000e+00, double 3.000000e+00)
-  // CHECK: call void @_ZN1SC1Eidd(%struct.S* %{{.+}}, i32 4, double 5.000000e+00, double 6.000000e+00)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-references.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-references.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-references.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -S -triple armv7-none-eabi -emit-llvm -o - %s | FileCheck %s
-
-namespace reference {
-  struct A {
-    int i1, i2;
-  };
-
-  void single_init() {
-    // No superfluous instructions allowed here, they could be
-    // hiding extra temporaries.
-
-    // CHECK: store i32 1, i32*
-    // CHECK-NEXT: store i32* %{{.*}}, i32**
-    const int &cri2a = 1;
-
-    // CHECK-NEXT: store i32 1, i32*
-    // CHECK-NEXT: store i32* %{{.*}}, i32**
-    const int &cri1a = {1};
-
-    // CHECK-NEXT: store i32 1, i32*
-    int i = 1;
-    // CHECK-NEXT: store i32* %{{.*}}, i32**
-    int &ri1a = {i};
-
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: memcpy
-    A a{1, 2};
-    // CHECK-NEXT: store %{{.*}}* %{{.*}}, %{{.*}}** %
-    A &ra1a = {a};
-
-    using T = A&;
-    // CHECK-NEXT: store %{{.*}}* %{{.*}}, %{{.*}}** %
-    A &ra1b = T{a};
-
-    // CHECK-NEXT: ret
-  }
-
-  void reference_to_aggregate() {
-    // CHECK: getelementptr {{.*}}, i32 0, i32 0
-    // CHECK-NEXT: store i32 1
-    // CHECK-NEXT: getelementptr {{.*}}, i32 0, i32 1
-    // CHECK-NEXT: store i32 2
-    // CHECK-NEXT: store %{{.*}}* %{{.*}}, %{{.*}}** %{{.*}}, align
-    const A &ra1{1, 2};
-
-    // CHECK-NEXT: getelementptr inbounds [3 x i32]* %{{.*}}, i{{32|64}} 0, i{{32|64}} 0
-    // CHECK-NEXT: store i32 1
-    // CHECK-NEXT: getelementptr inbounds i32* %{{.*}}, i{{32|64}} 1
-    // CHECK-NEXT: store i32 2
-    // CHECK-NEXT: getelementptr inbounds i32* %{{.*}}, i{{32|64}} 1
-    // CHECK-NEXT: store i32 3
-    // CHECK-NEXT: store [3 x i32]* %{{.*}}, [3 x i32]** %{{.*}}, align
-    const int (&arrayRef)[] = {1, 2, 3};
-
-    // CHECK-NEXT: ret
-  }
-
-  struct B {
-    B();
-    ~B();
-  };
-
-  void single_init_temp_cleanup()
-  {
-    // Ensure lifetime extension.
-
-    // CHECK: call %"struct.reference::B"* @_ZN9reference1BC1Ev
-    // CHECK-NEXT: store %{{.*}}* %{{.*}}, %{{.*}}** %
-    const B &rb{ B() };
-    // CHECK: call %"struct.reference::B"* @_ZN9reference1BD1Ev
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-scalars.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-scalars.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-scalars.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -S -emit-llvm -o - %s | FileCheck %s
-
-void f()
-{
-  // CHECK: store i32 0
-  int i{};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -o - -verify %s
-
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  // libc++'s implementation
-  template <class _E>
-  class initializer_list
-  {
-    const _E* __begin_;
-    size_t    __size_;
-
-    initializer_list(const _E* __b, size_t __s)
-      : __begin_(__b),
-        __size_(__s)
-    {}
-
-  public:
-    typedef _E        value_type;
-    typedef const _E& reference;
-    typedef const _E& const_reference;
-    typedef size_t    size_type;
-
-    typedef const _E* iterator;
-    typedef const _E* const_iterator;
-
-    initializer_list() : __begin_(nullptr), __size_(0) {}
-
-    size_t    size()  const {return __size_;}
-    const _E* begin() const {return __begin_;}
-    const _E* end()   const {return __begin_ + __size_;}
-  };
-}
-
-std::initializer_list<std::initializer_list<int>> pleasefail = {
-  {1, 2}, {3, 4}, {5, 6} // expected-error {{cannot compile}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -S -triple x86_64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  // libc++'s implementation with __size_ replaced by __end_
-  template <class _E>
-  class initializer_list
-  {
-    const _E* __begin_;
-    const _E* __end_;
-
-    initializer_list(const _E* __b, const _E* __e)
-      : __begin_(__b),
-        __end_(__e)
-    {}
-
-  public:
-    typedef _E        value_type;
-    typedef const _E& reference;
-    typedef const _E& const_reference;
-    typedef size_t    size_type;
-
-    typedef const _E* iterator;
-    typedef const _E* const_iterator;
-
-    initializer_list() : __begin_(nullptr), __end_(nullptr) {}
-
-    size_t    size()  const {return __end_ - __begin_;}
-    const _E* begin() const {return __begin_;}
-    const _E* end()   const {return __end_;}
-  };
-}
-
-// CHECK: @_ZL25globalInitList1__initlist = internal global [3 x i32] [i32 1, i32 2, i32 3]
-// CHECK: @globalInitList1 = global {{[^ ]+}} { i32* getelementptr inbounds ([3 x i32]* @_ZL25globalInitList1__initlist, {{[^)]*}}), i32*
-std::initializer_list<int> globalInitList1 = {1, 2, 3};
-
-void fn1(int i) {
-  // CHECK: define void @_Z3fn1i
-  // temporary array
-  // CHECK: [[array:%[^ ]+]] = alloca [3 x i32]
-  // CHECK: getelementptr inbounds [3 x i32]* [[array]], i{{32|64}} 0
-  // CHECK-NEXT: store i32 1, i32*
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: store
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: load
-  // CHECK-NEXT: store
-  // init the list
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: getelementptr inbounds [3 x i32]*
-  // CHECK-NEXT: store i32*
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: getelementptr inbounds [3 x i32]* [[array]], i{{32|64}} 0, i{{32|64}} 3
-  // CHECK-NEXT: store i32*
-  std::initializer_list<int> intlist{1, 2, i};
-}
-
-struct destroyme1 {
-  ~destroyme1();
-};
-struct destroyme2 {
-  ~destroyme2();
-};
-
-
-void fn2() {
-  // CHECK: define void @_Z3fn2v
-  void target(std::initializer_list<destroyme1>);
-  // objects should be destroyed before dm2, after call returns
-  target({ destroyme1(), destroyme1() });
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-}
-
-void fn3() {
-  // CHECK: define void @_Z3fn3v
-  // objects should be destroyed after dm2
-  auto list = { destroyme1(), destroyme1() };
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-  // CHECK: call void @_ZN10destroyme1D1Ev
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,277 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -S -triple x86_64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  // libc++'s implementation
-  template <class _E>
-  class initializer_list
-  {
-    const _E* __begin_;
-    size_t    __size_;
-
-    initializer_list(const _E* __b, size_t __s)
-      : __begin_(__b),
-        __size_(__s)
-    {}
-
-  public:
-    typedef _E        value_type;
-    typedef const _E& reference;
-    typedef const _E& const_reference;
-    typedef size_t    size_type;
-
-    typedef const _E* iterator;
-    typedef const _E* const_iterator;
-
-    initializer_list() : __begin_(nullptr), __size_(0) {}
-
-    size_t    size()  const {return __size_;}
-    const _E* begin() const {return __begin_;}
-    const _E* end()   const {return __begin_ + __size_;}
-  };
-}
-
-struct destroyme1 {
-  ~destroyme1();
-};
-struct destroyme2 {
-  ~destroyme2();
-};
-struct witharg1 {
-  witharg1(const destroyme1&);
-  ~witharg1();
-};
-struct wantslist1 {
-  wantslist1(std::initializer_list<destroyme1>);
-  ~wantslist1();
-};
-
-// CHECK: @_ZL25globalInitList1__initlist = internal global [3 x i32] [i32 1, i32 2, i32 3]
-// CHECK: @globalInitList1 = global %{{[^ ]+}} { i32* getelementptr inbounds ([3 x i32]* @_ZL25globalInitList1__initlist, i32 0, i32 0), i{{32|64}} 3 }
-std::initializer_list<int> globalInitList1 = {1, 2, 3};
-
-namespace thread_local_global_array {
-  // CHECK: @_ZN25thread_local_global_arrayL11x__initlistE = internal thread_local global [4 x i32] [i32 1, i32 2, i32 3, i32 4]
-  // CHECK: @_ZN25thread_local_global_array1xE = thread_local global {{.*}} @_ZN25thread_local_global_arrayL11x__initlistE, {{.*}} i64 4
-  std::initializer_list<int> thread_local x = { 1, 2, 3, 4 };
-}
-
-// CHECK: @_ZL25globalInitList2__initlist = internal global [2 x %{{[^ ]*}}] zeroinitializer
-// CHECK: @globalInitList2 = global %{{[^ ]+}} { %[[WITHARG:[^ *]+]]* getelementptr inbounds ([2 x
-// CHECK: appending global
-// CHECK: define internal void
-// CHECK: call void @_ZN8witharg1C1ERK10destroyme1(%[[WITHARG]]* getelementptr inbounds ([2 x %[[WITHARG]]]* @_ZL25globalInitList2__initlist, i{{32|64}} 0, i{{32|64}} 0
-// CHECK: call void @_ZN8witharg1C1ERK10destroyme1(%[[WITHARG]]* getelementptr inbounds ([2 x %[[WITHARG]]]* @_ZL25globalInitList2__initlist, i{{32|64}} 0, i{{32|64}} 1
-// CHECK: __cxa_atexit
-// CHECK: call void @_ZN10destroyme1D1Ev
-// CHECK: call void @_ZN10destroyme1D1Ev
-std::initializer_list<witharg1> globalInitList2 = {
-  witharg1(destroyme1()), witharg1(destroyme1())
-};
-
-void fn1(int i) {
-  // CHECK: define void @_Z3fn1i
-  // temporary array
-  // CHECK: [[array:%[^ ]+]] = alloca [3 x i32]
-  // CHECK: getelementptr inbounds [3 x i32]* [[array]], i{{32|64}} 0
-  // CHECK-NEXT: store i32 1, i32*
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: store
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: load
-  // CHECK-NEXT: store
-  // init the list
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: getelementptr inbounds [3 x i32]*
-  // CHECK-NEXT: store i32*
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: store i{{32|64}} 3
-  std::initializer_list<int> intlist{1, 2, i};
-}
-
-void fn2() {
-  // CHECK: define void @_Z3fn2v
-  void target(std::initializer_list<destroyme1>);
-  // objects should be destroyed before dm2, after call returns
-  // CHECK: call void @_Z6targetSt16initializer_listI10destroyme1E
-  target({ destroyme1(), destroyme1() });
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-}
-
-void fn3() {
-  // CHECK: define void @_Z3fn3v
-  // objects should be destroyed after dm2
-  auto list = { destroyme1(), destroyme1() };
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-  // CHECK: call void @_ZN10destroyme1D1Ev
-}
-
-void fn4() {
-  // CHECK: define void @_Z3fn4v
-  void target(std::initializer_list<witharg1>);
-  // objects should be destroyed before dm2, after call returns
-  // CHECK: call void @_ZN8witharg1C1ERK10destroyme1
-  // CHECK: call void @_Z6targetSt16initializer_listI8witharg1E
-  target({ witharg1(destroyme1()), witharg1(destroyme1()) });
-  // CHECK: call void @_ZN8witharg1D1Ev
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-}
-
-void fn5() {
-  // CHECK: define void @_Z3fn5v
-  // temps should be destroyed before dm2
-  // objects should be destroyed after dm2
-  // CHECK: call void @_ZN8witharg1C1ERK10destroyme1
-  auto list = { witharg1(destroyme1()), witharg1(destroyme1()) };
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-  // CHECK: call void @_ZN8witharg1D1Ev
-}
-
-void fn6() {
-  // CHECK: define void @_Z3fn6v
-  void target(const wantslist1&);
-  // objects should be destroyed before dm2, after call returns
-  // CHECK: call void @_ZN10wantslist1C1ESt16initializer_listI10destroyme1E
-  // CHECK: call void @_Z6targetRK10wantslist1
-  target({ destroyme1(), destroyme1() });
-  // CHECK: call void @_ZN10wantslist1D1Ev
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-}
-
-void fn7() {
-  // CHECK: define void @_Z3fn7v
-  // temps should be destroyed before dm2
-  // object should be destroyed after dm2
-  // CHECK: call void @_ZN10wantslist1C1ESt16initializer_listI10destroyme1E
-  wantslist1 wl = { destroyme1(), destroyme1() };
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-  // CHECK: call void @_ZN10wantslist1D1Ev
-}
-
-void fn8() {
-  // CHECK: define void @_Z3fn8v
-  void target(std::initializer_list<std::initializer_list<destroyme1>>);
-  // objects should be destroyed before dm2, after call returns
-  // CHECK: call void @_Z6targetSt16initializer_listIS_I10destroyme1EE
-  std::initializer_list<destroyme1> inner;
-  target({ inner, { destroyme1() } });
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  // Only one destroy loop, since only one inner init list is directly inited.
-  // CHECK-NOT: call void @_ZN10destroyme1D1Ev
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-}
-
-void fn9() {
-  // CHECK: define void @_Z3fn9v
-  // objects should be destroyed after dm2
-  std::initializer_list<destroyme1> inner;
-  std::initializer_list<std::initializer_list<destroyme1>> list =
-      { inner, { destroyme1() } };
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  // Only one destroy loop, since only one inner init list is directly inited.
-  // CHECK-NOT: call void @_ZN10destroyme1D1Ev
-  // CHECK: ret void
-}
-
-struct haslist1 {
-  std::initializer_list<int> il;
-  haslist1();
-};
-
-// CHECK: define void @_ZN8haslist1C2Ev
-haslist1::haslist1()
-// CHECK: alloca [3 x i32]
-// CHECK: store i32 1
-// CHECK: store i32 2
-// CHECK: store i32 3
-// CHECK: store i{{32|64}} 3
-  : il{1, 2, 3}
-{
-  destroyme2 dm2;
-}
-
-struct haslist2 {
-  std::initializer_list<destroyme1> il;
-  haslist2();
-};
-
-// CHECK: define void @_ZN8haslist2C2Ev
-haslist2::haslist2()
-  : il{destroyme1(), destroyme1()}
-{
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-  // CHECK: call void @_ZN10destroyme1D1Ev
-}
-
-void fn10() {
-  // CHECK: define void @_Z4fn10v
-  // CHECK: alloca [3 x i32]
-  // CHECK: call noalias i8* @_Znw{{[jm]}}
-  // CHECK: store i32 1
-  // CHECK: store i32 2
-  // CHECK: store i32 3
-  // CHECK: store i32*
-  // CHECK: store i{{32|64}} 3
-  (void) new std::initializer_list<int> {1, 2, 3};
-}
-
-void fn11() {
-  // CHECK: define void @_Z4fn11v
-  (void) new std::initializer_list<destroyme1> {destroyme1(), destroyme1()};
-  // CHECK: call void @_ZN10destroyme1D1Ev
-  destroyme2 dm2;
-  // CHECK: call void @_ZN10destroyme2D1Ev
-}
-
-namespace PR12178 {
-  struct string {
-    string(int);
-    ~string();
-  };
-
-  struct pair {
-    string a;
-    int b;
-  };
-
-  struct map {
-    map(std::initializer_list<pair>);
-  };
-
-  map m{ {1, 2}, {3, 4} };
-}
-
-namespace rdar13325066 {
-  struct X { ~X(); };
-
-  // CHECK: define void @_ZN12rdar133250664loopERNS_1XES1_
-  void loop(X &x1, X &x2) {
-    // CHECK: br label
-    // CHECK: br i1
-    // CHECK: br label
-    // CHECK call void @_ZN12rdar133250661XD1Ev
-    // CHECK: br label
-    // CHECK: br label
-    // CHECK: call void @_ZN12rdar133250661XD1Ev
-    // CHECK: br i1
-    // CHECK: br label
-    // CHECK: ret void
-    for (X x : { x1, x2 }) { }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-exception-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-exception-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-exception-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,123 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -verify -fexceptions -fcxx-exceptions -triple x86_64-linux-gnu | FileCheck %s
-
-void h();
-
-template<typename T> void f() noexcept(sizeof(T) == 4) { h(); }
-template<typename T> void g() noexcept(sizeof(T) == 4);
-
-template<typename T> struct S {
-  static void f() noexcept(sizeof(T) == 4) { h(); }
-  static void g() noexcept(sizeof(T) == 4);
-};
-
-// CHECK: define {{.*}} @_Z1fIsEvv() [[NONE:#[0-9]+]] {
-template<> void f<short>() { h(); }
-// CHECK: define {{.*}} @_Z1fIA2_sEvv() [[NUW:#[0-9]+]] {
-template<> void f<short[2]>() noexcept { h(); }
-
-// CHECK: define {{.*}} @_ZN1SIsE1fEv()
-// CHECK-NOT: [[NUW]]
-template<> void S<short>::f() { h(); }
-// CHECK: define {{.*}} @_ZN1SIA2_sE1fEv() [[NUW]]
-template<> void S<short[2]>::f() noexcept { h(); }
-
-// CHECK: define {{.*}} @_Z1fIDsEvv() [[NONE]] {
-template void f<char16_t>();
-// CHECK: define {{.*}} @_Z1fIA2_DsEvv() [[NUW]]  {
-template void f<char16_t[2]>();
-
-// CHECK: define {{.*}} @_ZN1SIDsE1fEv()
-// CHECK-NOT: [[NUW]]
-template void S<char16_t>::f();
-// CHECK: define {{.*}} @_ZN1SIA2_DsE1fEv() [[NUW]]
-template void S<char16_t[2]>::f();
-
-void h() {
-  // CHECK: define {{.*}} @_Z1fIiEvv() [[NUW]] {
-  f<int>();
-  // CHECK: define {{.*}} @_Z1fIA2_iEvv() [[NONE]] {
-  f<int[2]>();
-
-  // CHECK: define {{.*}} @_ZN1SIiE1fEv() [[NUW]]
-  S<int>::f();
-  // CHECK: define {{.*}} @_ZN1SIA2_iE1fEv()
-  // CHECK-NOT: [[NUW]]
-  S<int[2]>::f();
-
-  // CHECK: define {{.*}} @_Z1fIfEvv() [[NUW]] {
-  void (*f1)() = &f<float>;
-  // CHECK: define {{.*}} @_Z1fIdEvv() [[NONE]] {
-  void (*f2)() = &f<double>;
-
-  // CHECK: define {{.*}} @_ZN1SIfE1fEv() [[NUW]]
-  void (*f3)() = &S<float>::f;
-  // CHECK: define {{.*}} @_ZN1SIdE1fEv()
-  // CHECK-NOT: [[NUW]]
-  void (*f4)() = &S<double>::f;
-
-  // CHECK: define {{.*}} @_Z1fIA4_cEvv() [[NUW]] {
-  (void)&f<char[4]>;
-  // CHECK: define {{.*}} @_Z1fIcEvv() [[NONE]] {
-  (void)&f<char>;
-
-  // CHECK: define {{.*}} @_ZN1SIA4_cE1fEv() [[NUW]]
-  (void)&S<char[4]>::f;
-  // CHECK: define {{.*}} @_ZN1SIcE1fEv()
-  // CHECK-NOT: [[NUW]]
-  (void)&S<char>::f;
-}
-
-// CHECK: define {{.*}} @_Z1iv
-void i() {
-  // CHECK: declare {{.*}} @_Z1gIiEvv() [[NUW]]
-  g<int>();
-  // CHECK: declare {{.*}} @_Z1gIA2_iEvv()
-  // CHECK-NOT: [[NUW]]
-  g<int[2]>();
-
-  // CHECK: declare {{.*}} @_ZN1SIiE1gEv() [[NUW]]
-  S<int>::g();
-  // CHECK: declare {{.*}} @_ZN1SIA2_iE1gEv()
-  // CHECK-NOT: [[NUW]]
-  S<int[2]>::g();
-
-  // CHECK: declare {{.*}} @_Z1gIfEvv() [[NUW]]
-  void (*g1)() = &g<float>;
-  // CHECK: declare {{.*}} @_Z1gIdEvv()
-  // CHECK-NOT: [[NUW]]
-  void (*g2)() = &g<double>;
-
-  // CHECK: declare {{.*}} @_ZN1SIfE1gEv() [[NUW]]
-  void (*g3)() = &S<float>::g;
-  // CHECK: declare {{.*}} @_ZN1SIdE1gEv()
-  // CHECK-NOT: [[NUW]]
-  void (*g4)() = &S<double>::g;
-
-  // CHECK: declare {{.*}} @_Z1gIA4_cEvv() [[NUW]]
-  (void)&g<char[4]>;
-  // CHECK: declare {{.*}} @_Z1gIcEvv()
-  // CHECK-NOT: [[NUW]]
-  (void)&g<char>;
-
-  // CHECK: declare {{.*}} @_ZN1SIA4_cE1gEv() [[NUW]]
-  (void)&S<char[4]>::g;
-  // CHECK: declare {{.*}} @_ZN1SIcE1gEv()
-  // CHECK-NOT: [[NUW]]
-  (void)&S<char>::g;
-}
-
-template<typename T> struct Nested {
-  template<bool b, typename U> void f() noexcept(sizeof(T) == sizeof(U));
-};
-
-// CHECK: define {{.*}} @_Z1jv
-void j() {
-  // CHECK: declare {{.*}} @_ZN6NestedIiE1fILb1EcEEvv(
-  // CHECK-NOT: [[NUW]]
-  Nested<int>().f<true, char>();
-  // CHECK: declare {{.*}} @_ZN6NestedIlE1fILb0ElEEvv({{.*}}) [[NUW]]
-  Nested<long>().f<false, long>();
-}
-
-// CHECK: attributes [[NONE]] = { {{.*}} }
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-initializer-aggregate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-initializer-aggregate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-initializer-aggregate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -S -emit-llvm -o - %s -triple x86_64-linux-gnu | FileCheck %s
-
-struct A { int a, b; int f(); };
-
-// CHECK: define {{.*}}@_Z3fn1i(
-int fn1(int x) {
-  // CHECK: %[[INITLIST:.*]] = alloca %struct.A
-  // CHECK: %[[A:.*]] = getelementptr inbounds %struct.A* %[[INITLIST]], i32 0, i32 0
-  // CHECK: store i32 %{{.*}}, i32* %[[A]], align 4
-  // CHECK: %[[B:.*]] = getelementptr inbounds %struct.A* %[[INITLIST]], i32 0, i32 1
-  // CHECK: store i32 5, i32* %[[B]], align 4
-  // CHECK: call i32 @_ZN1A1fEv(%struct.A* %[[INITLIST]])
-  return A{x, 5}.f();
-}
-
-struct B { int &r; int &f() { return r; } };
-
-// CHECK: define {{.*}}@_Z3fn2Ri(
-int &fn2(int &v) {
-  // CHECK: %[[INITLIST2:.*]] = alloca %struct.B, align 8
-  // CHECK: %[[R:.*]] = getelementptr inbounds %struct.B* %[[INITLIST2:.*]], i32 0, i32 0
-  // CHECK: store i32* %{{.*}}, i32** %[[R]], align 8
-  // CHECK: call i32* @_ZN1B1fEv(%struct.B* %[[INITLIST2:.*]])
-  return B{v}.f();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-noreturn.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-noreturn.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-noreturn.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -std=c++11 %s -o - | FileCheck %s
-
-int g();
-
-// CHECK: _Z1fv(){{.*}} [[NR:#[0-9]+]]
-[[noreturn]] int f() {
-  while (g()) {}
-}
-
-// CHECK: attributes [[NR]] = { noreturn nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-special-members.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-special-members.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-special-members.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=i686-linux-gnu | FileCheck %s
-
-struct A {
-  A(const A&);
-  A &operator=(const A&);
-};
-
-struct B {
-  A a;
-  B(B&&) = default;
-  B &operator=(B&&) = default;
-};
-
-// CHECK: define {{.*}} @_Z2f1
-void f1(B &x) {
-  // CHECK-NOT: memcpy
-  // CHECK: call {{.*}} @_ZN1BC1EOS_(
-  B b(static_cast<B&&>(x));
-}
-
-// CHECK: define {{.*}} @_Z2f2
-void f2(B &x, B &y) {
-  // CHECK-NOT: memcpy
-  // CHECK: call {{.*}} @_ZN1BaSEOS_(
-  x = static_cast<B&&>(y);
-}
-
-// CHECK: define {{.*}} @_ZN1BaSEOS_(
-// CHECK: call {{.*}} @_ZN1AaSERKS_(
-
-// CHECK: define {{.*}} @_ZN1BC2EOS_(
-// CHECK: call {{.*}} @_ZN1AC1ERKS_(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s
-
-int &f();
-
-// CHECK: @r = thread_local global i32* null
-thread_local int &r = f();
-
-// CHECK: @_ZTH1r = alias void ()* @__tls_init
-
-int &g() { return r; }
-
-// CHECK: define {{.*}} @[[R_INIT:.*]]()
-// CHECK: call i32* @_Z1fv()
-// CHECK: store i32* %{{.*}}, i32** @r, align 8
-
-// CHECK: define i32* @_Z1gv()
-// CHECK: call i32* @_ZTW1r()
-// CHECK: ret i32* %{{.*}}
-
-// CHECK: define weak_odr hidden i32* @_ZTW1r() {
-// CHECK: call void @_ZTH1r()
-// CHECK: load i32** @r, align 8
-// CHECK: ret i32* %{{.*}}
-
-// CHECK: define internal void @__tls_init()
-// CHECK: call void @[[R_INIT]]()

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-thread-local.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-thread-local.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-thread-local.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,173 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s
-
-int f();
-int g();
-
-// CHECK: @a = thread_local global i32 0
-thread_local int a = f();
-extern thread_local int b;
-// CHECK: @c = global i32 0
-int c = b;
-// CHECK: @_ZL1d = internal thread_local global i32 0
-static thread_local int d = g();
-
-struct U { static thread_local int m; };
-// CHECK: @_ZN1U1mE = thread_local global i32 0
-thread_local int U::m = f();
-
-template<typename T> struct V { static thread_local int m; };
-template<typename T> thread_local int V<T>::m = g();
-
-// CHECK: @e = global i32 0
-int e = V<int>::m;
-
-// CHECK: @_ZN1VIiE1mE = weak_odr thread_local global i32 0
-
-// CHECK: @_ZZ1fvE1n = internal thread_local global i32 0
-
-// CHECK: @_ZGVZ1fvE1n = internal thread_local global i8 0
-
-// CHECK: @_ZZ8tls_dtorvE1s = internal thread_local global
-// CHECK: @_ZGVZ8tls_dtorvE1s = internal thread_local global i8 0
-
-// CHECK: @_ZZ8tls_dtorvE1t = internal thread_local global
-// CHECK: @_ZGVZ8tls_dtorvE1t = internal thread_local global i8 0
-
-// CHECK: @_ZZ8tls_dtorvE1u = internal thread_local global
-// CHECK: @_ZGVZ8tls_dtorvE1u = internal thread_local global i8 0
-// CHECK: @_ZGRZ8tls_dtorvE1u = internal thread_local global
-
-// CHECK: @_ZGVN1VIiE1mE = weak_odr thread_local global i64 0
-
-// CHECK: @__tls_guard = internal thread_local global i8 0
-
-// CHECK: @llvm.global_ctors = appending global {{.*}} @[[GLOBAL_INIT:[^ ]*]]
-
-// CHECK: @_ZTH1a = alias void ()* @__tls_init
-// CHECK: @_ZTHL1d = alias internal void ()* @__tls_init
-// CHECK: @_ZTHN1U1mE = alias void ()* @__tls_init
-// CHECK: @_ZTHN1VIiE1mE = alias weak_odr void ()* @__tls_init
-
-
-// Individual variable initialization functions:
-
-// CHECK: define {{.*}} @[[A_INIT:.*]]()
-// CHECK: call i32 @_Z1fv()
-// CHECK-NEXT: store i32 {{.*}}, i32* @a, align 4
-
-// CHECK: define i32 @_Z1fv()
-int f() {
-  // CHECK: %[[GUARD:.*]] = load i8* @_ZGVZ1fvE1n, align 1
-  // CHECK: %[[NEED_INIT:.*]] = icmp eq i8 %[[GUARD]], 0
-  // CHECK: br i1 %[[NEED_INIT]]
-
-  // CHECK: %[[CALL:.*]] = call i32 @_Z1gv()
-  // CHECK: store i32 %[[CALL]], i32* @_ZZ1fvE1n, align 4
-  // CHECK: store i8 1, i8* @_ZGVZ1fvE1n
-  // CHECK: br label
-  static thread_local int n = g();
-
-  // CHECK: load i32* @_ZZ1fvE1n, align 4
-  return n;
-}
-
-// CHECK: define {{.*}} @[[C_INIT:.*]]()
-// CHECK: call i32* @_ZTW1b()
-// CHECK-NEXT: load i32* %{{.*}}, align 4
-// CHECK-NEXT: store i32 %{{.*}}, i32* @c, align 4
-
-// CHECK: define weak_odr hidden i32* @_ZTW1b()
-// CHECK: br i1 icmp ne (void ()* @_ZTH1b, void ()* null),
-// not null:
-// CHECK: call void @_ZTH1b()
-// CHECK: br label
-// finally:
-// CHECK: ret i32* @b
-
-// CHECK: define {{.*}} @[[D_INIT:.*]]()
-// CHECK: call i32 @_Z1gv()
-// CHECK-NEXT: store i32 %{{.*}}, i32* @_ZL1d, align 4
-
-// CHECK: define {{.*}} @[[U_M_INIT:.*]]()
-// CHECK: call i32 @_Z1fv()
-// CHECK-NEXT: store i32 %{{.*}}, i32* @_ZN1U1mE, align 4
-
-// CHECK: define {{.*}} @[[E_INIT:.*]]()
-// CHECK: call i32* @_ZTWN1VIiE1mE()
-// CHECK-NEXT: load i32* %{{.*}}, align 4
-// CHECK-NEXT: store i32 %{{.*}}, i32* @e, align 4
-
-// CHECK: define weak_odr hidden i32* @_ZTWN1VIiE1mE()
-// CHECK: call void @_ZTHN1VIiE1mE()
-// CHECK: ret i32* @_ZN1VIiE1mE
-
-
-struct S { S(); ~S(); };
-struct T { ~T(); };
-
-// CHECK: define void @_Z8tls_dtorv()
-void tls_dtor() {
-  // CHECK: load i8* @_ZGVZ8tls_dtorvE1s
-  // CHECK: call void @_ZN1SC1Ev(%struct.S* @_ZZ8tls_dtorvE1s)
-  // CHECK: call i32 @__cxa_thread_atexit({{.*}}@_ZN1SD1Ev {{.*}} @_ZZ8tls_dtorvE1s{{.*}} @__dso_handle
-  // CHECK: store i8 1, i8* @_ZGVZ8tls_dtorvE1s
-  static thread_local S s;
-
-  // CHECK: load i8* @_ZGVZ8tls_dtorvE1t
-  // CHECK-NOT: _ZN1T
-  // CHECK: call i32 @__cxa_thread_atexit({{.*}}@_ZN1TD1Ev {{.*}}@_ZZ8tls_dtorvE1t{{.*}} @__dso_handle
-  // CHECK: store i8 1, i8* @_ZGVZ8tls_dtorvE1t
-  static thread_local T t;
-
-  // CHECK: load i8* @_ZGVZ8tls_dtorvE1u
-  // CHECK: call void @_ZN1SC1Ev(%struct.S* @_ZGRZ8tls_dtorvE1u)
-  // CHECK: call i32 @__cxa_thread_atexit({{.*}}@_ZN1SD1Ev {{.*}} @_ZGRZ8tls_dtorvE1u{{.*}} @__dso_handle
-  // CHECK: store i8 1, i8* @_ZGVZ8tls_dtorvE1u
-  static thread_local const S &u = S();
-}
-
-// CHECK: declare i32 @__cxa_thread_atexit(void (i8*)*, i8*, i8*)
-
-// CHECK: define {{.*}} @[[V_M_INIT:.*]]()
-// CHECK: load i8* bitcast (i64* @_ZGVN1VIiE1mE to i8*)
-// CHECK: %[[V_M_INITIALIZED:.*]] = icmp eq i8 %{{.*}}, 0
-// CHECK: br i1 %[[V_M_INITIALIZED]],
-// need init:
-// CHECK: call i32 @_Z1gv()
-// CHECK: store i32 %{{.*}}, i32* @_ZN1VIiE1mE, align 4
-// CHECK: store i64 1, i64* @_ZGVN1VIiE1mE
-// CHECK: br label
-
-// CHECK: define {{.*}}@[[GLOBAL_INIT:.*]]()
-// CHECK: call void @[[C_INIT]]()
-// CHECK: call void @[[E_INIT]]()
-
-
-// CHECK: define {{.*}}@__tls_init()
-// CHECK: load i8* @__tls_guard
-// CHECK: %[[NEED_TLS_INIT:.*]] = icmp eq i8 %{{.*}}, 0
-// CHECK: store i8 1, i8* @__tls_guard
-// CHECK: br i1 %[[NEED_TLS_INIT]],
-// init:
-// CHECK: call void @[[A_INIT]]()
-// CHECK: call void @[[D_INIT]]()
-// CHECK: call void @[[U_M_INIT]]()
-// CHECK: call void @[[V_M_INIT]]()
-
-
-// CHECK: define weak_odr hidden i32* @_ZTW1a() {
-// CHECK:   call void @_ZTH1a()
-// CHECK:   ret i32* @a
-// CHECK: }
-
-
-// CHECK: declare extern_weak void @_ZTH1b()
-
-
-// CHECK: define internal hidden i32* @_ZTWL1d()
-// CHECK: call void @_ZTHL1d()
-// CHECK: ret i32* @_ZL1d
-
-// CHECK: define weak_odr hidden i32* @_ZTWN1U1mE()
-// CHECK: call void @_ZTHN1U1mE()
-// CHECK: ret i32* @_ZN1U1mE

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-trivial-initializer-struct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-trivial-initializer-struct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-trivial-initializer-struct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -S -emit-llvm -o %t-c++11.ll %s -triple x86_64-apple-darwin10 
-// RUN: FileCheck %s < %t-c++11.ll
-// RUN: %clang_cc1  -std=c++98 -S -emit-llvm -o %t.ll %s -triple x86_64-apple-darwin10 
-// RUN: diff %t.ll  %t-c++11.ll
-
-// rdar://12897704
-
-struct sAFSearchPos {
-    unsigned char *pos;
-    unsigned char count;
-};
-
-static volatile struct sAFSearchPos testPositions;
-// CHECK: @_ZL13testPositions = internal global %struct.sAFSearchPos zeroinitializer
-
-static volatile struct sAFSearchPos arrayPositions[100][10][5];
-// CHECK: @_ZL14arrayPositions = internal global [100 x [10 x [5 x %struct.sAFSearchPos]]] zeroinitializer
-
-int main() {
-  return testPositions.count + arrayPositions[10][4][3].count; 
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-unrestricted-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-unrestricted-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-unrestricted-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - | FileCheck %s
-
-struct A {
-  A(); A(const A&); A(A&&); A &operator=(const A&); A &operator=(A&&); ~A();
-};
-struct B {
-  B(); B(const B&); B(B&&); B &operator=(const B&); B &operator=(B&&); ~B();
-};
-
-union U {
-  U();
-  U(const U &);
-  U(U &&);
-  U &operator=(const U&);
-  U &operator=(U&&);
-  ~U();
-
-  A a;
-  int n;
-};
-
-// CHECK-NOT: _ZN1A
-U::U() {}
-U::U(const U&) {}
-U::U(U&&) {}
-U &U::operator=(const U&) { return *this; }
-U &U::operator=(U &&) { return *this; }
-U::~U() {}
-
-struct S {
-  S();
-  S(const S &);
-  S(S &&);
-  S &operator=(const S&);
-  S &operator=(S&&);
-  ~S();
-
-  union {
-    A a;
-    int n;
-  };
-  B b;
-  int m;
-};
-
-// CHECK: _ZN1SC2Ev
-// CHECK-NOT: _ZN1A
-// CHECK: _ZN1BC1Ev
-S::S() {}
-
-// CHECK-NOT: _ZN1A
-
-// CHECK: _ZN1SC2ERKS_
-// CHECK-NOT: _ZN1A
-// CHECK: _ZN1BC1Ev
-S::S(const S&) {}
-
-// CHECK-NOT: _ZN1A
-
-// CHECK: _ZN1SC2EOS_
-// CHECK-NOT: _ZN1A
-// CHECK: _ZN1BC1Ev
-S::S(S&&) {}
-
-// CHECK-NOT: _ZN1A
-// CHECK-NOT: _ZN1B
-S &S::operator=(const S&) { return *this; }
-
-S &S::operator=(S &&) { return *this; }
-
-// CHECK: _ZN1SD2Ev
-// CHECK-NOT: _ZN1A
-// CHECK: _ZN1BD1Ev
-S::~S() {}
-
-// CHECK-NOT: _ZN1A

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-user-defined-literal.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-user-defined-literal.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-user-defined-literal.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-linux-gnu -emit-llvm %s -o - | FileCheck %s
-
-struct S { S(); ~S(); S(const S &); void operator()(int); };
-using size_t = decltype(sizeof(int));
-S operator"" _x(const char *, size_t);
-S operator"" _y(wchar_t);
-S operator"" _z(unsigned long long);
-S operator"" _f(long double);
-S operator"" _r(const char *);
-template<char...Cs> S operator"" _t() { return S(); }
-
-// CHECK: @[[s_foo:.*]] = {{.*}} constant [4 x i8] c"foo\00"
-// CHECK: @[[s_bar:.*]] = {{.*}} constant [4 x i8] c"bar\00"
-// CHECK: @[[s_123:.*]] = {{.*}} constant [4 x i8] c"123\00"
-// CHECK: @[[s_4_9:.*]] = {{.*}} constant [4 x i8] c"4.9\00"
-// CHECK: @[[s_0xffffeeee:.*]] = {{.*}} constant [11 x i8] c"0xffffeeee\00"
-
-void f() {
-  // CHECK: call void @_Zli2_xPKcm({{.*}}, i8* getelementptr inbounds ([4 x i8]* @[[s_foo]], i32 0, i32 0), i64 3)
-  // CHECK: call void @_Zli2_xPKcm({{.*}}, i8* getelementptr inbounds ([4 x i8]* @[[s_bar]], i32 0, i32 0), i64 3)
-  // CHECK: call void @_Zli2_yw({{.*}} 97)
-  // CHECK: call void @_Zli2_zy({{.*}} 42)
-  // CHECK: call void @_Zli2_fe({{.*}} x86_fp80 0xK3FFF8000000000000000)
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  "foo"_x, "bar"_x, L'a'_y, 42_z, 1.0_f;
-
-  // CHECK: call void @_Zli2_rPKc({{.*}}, i8* getelementptr inbounds ([4 x i8]* @[[s_123]], i32 0, i32 0))
-  // CHECK: call void @_Zli2_rPKc({{.*}}, i8* getelementptr inbounds ([4 x i8]* @[[s_4_9]], i32 0, i32 0))
-  // CHECK: call void @_Zli2_rPKc({{.*}}, i8* getelementptr inbounds ([11 x i8]* @[[s_0xffffeeee]], i32 0, i32 0))
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  123_r, 4.9_r, 0xffff\
-eeee_r;
-
-  // FIXME: This mangling is insane. Maybe we should have a special case for
-  // char parameter packs?
-  // CHECK: call void @_Zli2_tIJLc48ELc120ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56EEE1Sv({{.*}})
-  // CHECK: call void @_ZN1SD1Ev({{.*}})
-  0x12345678_t;
-}
-
-// CHECK: define {{.*}} @_Zli2_tIJLc48ELc120ELc49ELc50ELc51ELc52ELc53ELc54ELc55ELc56EEE1Sv(
-
-template<typename T> auto g(T t) -> decltype("foo"_x(t)) { return "foo"_x(t); }
-template<typename T> auto i(T t) -> decltype(operator"" _x("foo", 3)(t)) { return operator"" _x("foo", 3)(t); }
-
-void h() {
-  g(42);
-  i(42);
-}
-
-// CHECK: define {{.*}} @_Z1hv()
-// CHECK:   call void @_Z1gIiEDTclclL_Zli2_xPKcmELA4_S0_ELm3EEfp_EET_(i32 42)
-// CHECK:   call void @_Z1iIiEDTclclL_Zli2_xPKcmELA4_S0_ELi3EEfp_EET_(i32 42)
-
-// CHECK: define {{.*}} @_Z1gIiEDTclclL_Zli2_xPKcmELA4_S0_ELm3EEfp_EET_(i32
-// CHECK:   call void @_Zli2_xPKcm({{.*}}, i8* getelementptr inbounds ([4 x i8]* @{{.*}}, i32 0, i32 0), i64 3)
-// CHECK:   call void @_ZN1SclEi
-// CHECK:   call void @_ZN1SD1Ev
-
-// CHECK: define {{.*}} @_Z1iIiEDTclclL_Zli2_xPKcmELA4_S0_ELi3EEfp_EET_(i32
-// CHECK:   call void @_Zli2_xPKcm({{.*}}, i8* getelementptr inbounds ([4 x i8]* @{{.*}}, i32 0, i32 0), i64 3)
-// CHECK:   call void @_ZN1SclEi
-// CHECK:   call void @_ZN1SD1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-vtable-key-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-vtable-key-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx11-vtable-key-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - -std=c++11 | FileCheck %s
-// PR13424
-
-namespace Test1 {
-struct X {
-  virtual ~X(); // Key function.
-  virtual void f(); // Not a key function.
-};
-
-X::~X() = default;
-
-// Verify that the vtable is emitted.
-// CHECK: @_ZTVN5Test11XE = unnamed_addr constant
-}
-
-namespace Test2 {
-struct X {
-  virtual ~X() = default; // Not a key function.
-  virtual void f(); // Key function.
-};
-
-void X::f() {}
-
-// Verify that the vtable is emitted.
-// CHECK: @_ZTVN5Test21XE = unnamed_addr constant
-}
-
-namespace Test3 {
-struct X {
-  virtual ~X() = delete; // Not a key function.
-  virtual void f(); // Key function.
-};
-
-void X::f() {}
-
-// Verify that the vtable is emitted.
-// CHECK: @_ZTVN5Test31XE = unnamed_addr constant
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx1y-initializer-aggregate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx1y-initializer-aggregate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/cxx1y-initializer-aggregate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -std=c++1y %s -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s
-
-struct A {
-  int n = 0;
-  const char *p;
-  char k = p[n];
-  int f();
-  int x = f();
-  union {
-    char c;
-    double d = 1.0;
-  };
-};
-
-int f();
-
-union B {
-  int a;
-  int f();
-  int b = f();
-};
-
-A a { .p = "foobar" };
-A b { 4, "bazquux", .x = 42, .c = 9 };
-A c { 1, 0, 'A', f(), { 3 } };
-
-// CHECK: @[[STR_A:.*]] = {{.*}} [7 x i8] c"foobar\00"
-// CHECK: @[[STR_B:.*]] = {{.*}} [8 x i8] c"bazquux\00"
-
-B x;
-B y {};
-B z { 1 };
-// CHECK: @z = global {{.*}} { i32 1 }
-
-// Initialization of 'a':
-
-// CHECK: store i32 0, i32* getelementptr inbounds ({{.*}} @a, i32 0, i32 0)
-// CHECK: store i8* {{.*}} @[[STR_A]]{{.*}}, i8** getelementptr inbounds ({{.*}} @a, i32 0, i32 1)
-// CHECK: load i32* getelementptr inbounds ({{.*}} @a, i32 0, i32 0)
-// CHECK: load i8** getelementptr inbounds ({{.*}} @a, i32 0, i32 1)
-// CHECK: getelementptr inbounds i8* %{{.*}}, {{.*}} %{{.*}}
-// CHECK: store i8 %{{.*}}, i8* getelementptr inbounds ({{.*}} @a, i32 0, i32 2)
-// CHECK: call i32 @_ZN1A1fEv({{.*}} @a)
-// CHECK: store i32 %{{.*}}, i32* getelementptr inbounds ({{.*}}* @a, i32 0, i32 3)
-// CHECK: call void @{{.*}}C1Ev({{.*}} getelementptr inbounds (%struct.A* @a, i32 0, i32 4))
-
-// Initialization of 'b':
-
-// CHECK: store i32 4, i32* getelementptr inbounds ({{.*}} @b, i32 0, i32 0)
-// CHECK: store i8* {{.*}} @[[STR_B]]{{.*}}, i8** getelementptr inbounds ({{.*}} @b, i32 0, i32 1)
-// CHECK: load i32* getelementptr inbounds ({{.*}} @b, i32 0, i32 0)
-// CHECK: load i8** getelementptr inbounds ({{.*}} @b, i32 0, i32 1)
-// CHECK: getelementptr inbounds i8* %{{.*}}, {{.*}} %{{.*}}
-// CHECK: store i8 %{{.*}}, i8* getelementptr inbounds ({{.*}} @b, i32 0, i32 2)
-// CHECK-NOT: @_ZN1A1fEv
-// CHECK: store i32 42, i32* getelementptr inbounds ({{.*}}* @b, i32 0, i32 3)
-// CHECK-NOT: C1Ev
-// CHECK: store i8 9, i8* {{.*}} @b, i32 0, i32 4)
-
-// Initialization of 'c':
-
-// CHECK: store i32 1, i32* getelementptr inbounds ({{.*}} @c, i32 0, i32 0)
-// CHECK: store i8* null, i8** getelementptr inbounds ({{.*}} @c, i32 0, i32 1)
-// CHECK-NOT: load
-// CHECK: store i8 65, i8* getelementptr inbounds ({{.*}} @c, i32 0, i32 2)
-// CHECK: call i32 @_Z1fv()
-// CHECK: store i32 %{{.*}}, i32* getelementptr inbounds ({{.*}}* @c, i32 0, i32 3)
-// CHECK-NOT: C1Ev
-// CHECK: store i8 3, i8* {{.*}} @c, i32 0, i32 4)
-
-// CHECK: call void @_ZN1BC1Ev({{.*}} @x)
-
-// CHECK: call i32 @_ZN1B1fEv({{.*}} @y)
-// CHECK: store i32 %{{.*}}, i32* getelementptr inbounds ({{.*}} @y, i32 0, i32 0)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-artificial-arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-artificial-arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-artificial-arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-template<class X> class B {
-public:
-  explicit B(X* p = 0);
-};
-
-class A
-{
-public:
-  A(int value) : m_a_value(value) {};
-  A(int value, A* client_A) : m_a_value (value), m_client_A (client_A) {}
-
-  virtual ~A() {}
-
-private:
-  int m_a_value;
-  B<A> m_client_A;
-};
-
-int main(int argc, char **argv) {
-  A reallyA (500);
-}
-
-// CHECK: ![[ARTARG:.*]] = {{.*}} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from A]
-// CHECK: ![[CLASSTYPE:.*]] = {{.*}} ; [ DW_TAG_class_type ] [A]
-// CHECK: metadata ![[CLASSTYPE]], {{.*}} ; [ DW_TAG_subprogram ] [line 12] [A]
-// CHECK: metadata [[FUNCTYPE:![0-9]*]], i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
-// CHECK: [[FUNCTYPE]] = metadata !{null, metadata ![[ARTARG]], metadata !{{.*}}, metadata !{{.*}}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -gline-tables-only -fblocks -S -emit-llvm -o - | FileCheck %s
-
-struct A {
-  A();
-  A(const A &);
-  ~A();
-};
-
-void test() {
-  __block A a;
-}
-
-// CHECK: [ DW_TAG_subprogram ] [line 10] [local] [def] [__Block_byref_object_copy_]
-// CHECK: [ DW_TAG_subprogram ] [line 10] [local] [def] [__Block_byref_object_dispose_]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-byval.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-byval.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-byval.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang -g -S %s -o - | FileCheck %s
-// Test to check presence of debug info for byval parameter.
-// Radar 8350436.
-class DAG {
-public:
-  int i;
-  int j;
-};
-
-class EVT {
-public:
-  int a;
-  int b;
-  int c;
-};
-
-class VAL {
-public:
-  int x;
-  int y;
-};
-void foo(EVT e);
-EVT bar();
-
-void get(int *i, unsigned dl, VAL v, VAL *p, unsigned n, EVT missing_arg) {
-//CHECK: .{{asciz|string}} "missing_arg"
-  EVT e = bar();
-  if (dl == n)
-    foo(missing_arg);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-char16.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-char16.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-char16.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -std=c++11 -g %s -o -| FileCheck %s
-
-// 16 is DW_ATE_UTF (0x10) encoding attribute.
-char16_t char_a = u'h';
-
-// CHECK: !{{.*}} = {{.*}} ; [ DW_TAG_base_type ] [char16_t]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-struct foo;
-void func(foo *f) {
-}
-class bar;
-void func(bar *f) {
-}
-union baz;
-void func(baz *f) {
-}
-
-class B {
-public:
-  virtual ~B();
-};
-struct A {
-  int one;
-  static const int HdrSize = 52;
-  int two;
-  A() {
-    int x = 1;
-  }
-};
-
-
-int main(int argc, char **argv) {
-  B b;
-  if (argc) {
-    A a;
-  }
-  return 0;
-}
-
-// RUN: %clang -target x86_64-unknown_unknown -emit-llvm -g -S %s -o - | FileCheck %s
-// RUN: %clang -target i686-cygwin -emit-llvm -g -S %s -o - | FileCheck %s
-// RUN: %clang -target armv7l-unknown-linux-gnueabihf -emit-llvm -g -S %s -o - | FileCheck %s
-
-// CHECK: invoke {{.+}} @_ZN1BD1Ev(%class.B* %b)
-// CHECK-NEXT: unwind label %{{.+}}, !dbg ![[EXCEPTLOC:.*]]
-// CHECK: store i32 0, i32* %{{.+}}, !dbg ![[RETLOC:.*]]
-// CHECK: DW_TAG_structure_type ] [foo]
-// CHECK: DW_TAG_class_type ] [bar]
-// CHECK: DW_TAG_union_type ] [baz]
-// CHECK: DW_TAG_structure_type ] [A]
-// CHECK: HdrSize
-// CHECK: DW_TAG_class_type ] [B]
-// CHECK: metadata !"_vptr$B", {{.*}}, i32 64, metadata !{{.*}}} ; [ DW_TAG_member ]
-// CHECK: ![[EXCEPTLOC]] = metadata !{i32 31,
-// CHECK: ![[RETLOC]] = metadata !{i32 30,

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-context.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-context.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-context.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-// PR11345
-
-class locale {
-private:
-  void _M_add_reference() const throw() {
-  }
-};
-class ios_base {
-  locale _M_ios_locale;
-public:
-  class Init {
-  };
-};
-static ios_base::Init __ioinit;
-
-// CHECK-NOT: _M_ios_locale

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-ctor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-ctor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-ctor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s
-
-struct X {
-  X(int v);
-
-  int value;
-};
-
-X::X(int v) {
-  // CHECK_TEMPORARILY_DISABLED: call void @_ZN1XC2Ei(%struct.X* %this1, i32 %tmp), !dbg
-  // TEMPORARY CHECK: X
-  value = v;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-ctor2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-ctor2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-ctor2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang -fverbose-asm -g -S %s -o - | grep AT_explicit
-
-
-class MyClass
-{
-public:
-    explicit MyClass (int i) : 
-        m_i (i)
-    {}
-private:
-    int m_i;
-};
-
-MyClass m(1);
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -std=c++11 -g %s
-
-namespace PR9414 {
-  int f() {
-    auto x = 0;
-    return x;
-  }
-}
-
-// Don't crash.
-namespace PR13570 {
-  template<typename T, typename U> struct P {};
-  template<typename T> struct A {
-    template<typename U> static P<T,U> isa(U);
-    decltype(isa(int())) f() {}
-  };
-  template struct A<int>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-determinism.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-determinism.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-determinism.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -S -emit-llvm -g -o %t1.ll %s
-// RUN: %clang_cc1 -S -emit-llvm -g -o %t2.ll %s
-// RUN: diff %t1.ll %t2.ll
-
-template <int N> struct C {
-  template <int M> int f() {
-    int arr[M] = {};
-    return arr[M/2] + C<M/2>().template f<M-1>();
-  }
-};
-template <> template <> int C<0>::f<0>() { return 0; }
-template <> template <> int C<0>::f<1>() { return 0; }
-template <> template <> int C<1>::f<0>() { return 0; }
-template <> template <> int C<1>::f<1>() { return 0; }
-
-int x = C<0>().f<64>();

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-dup-fwd-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-dup-fwd-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-dup-fwd-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin -fno-limit-debug-info %s -o - | FileCheck %s
-
-class Test
-{
-public:
-    Test () : reserved (new data()) {}
-
-    unsigned
-    getID() const
-    {
-        return reserved->objectID;
-    }
-protected:
-    struct data {
-        unsigned objectID;
-    };
-    data* reserved;
-};
-
-Test t;
-
-// CHECK: ; [ DW_TAG_pointer_type ]
-// CHECK: ; [ DW_TAG_structure_type ] [data]
-// CHECK-NOT: ; [ DW_TAG_structure_type ] [data]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-enum-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-enum-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-enum-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin -std=c++11 %s -o - | FileCheck %s
-
-enum class A { A1=1 };                 // underlying type is int by default
-enum class B: unsigned long { B1=1 };  // underlying type is unsigned long
-enum C { C1 = 1 };
-enum D : short; // enum forward declaration
-A a;
-B b;
-C c;
-D d;
-
-// CHECK: ; [ DW_TAG_enumeration_type ] [A] [line 3, size 32, align 32, offset 0] [from int]
-// CHECK: ; [ DW_TAG_enumeration_type ] [B] [line 4, size 64, align 64, offset 0] [from long unsigned int]
-// CHECK: ; [ DW_TAG_enumeration_type ] [C] [line 5, size 32, align 32, offset 0] [from ]
-// CHECK: ; [ DW_TAG_enumeration_type ] [D] [line 6, size 16, align 16, offset 0] [fwd] [from ]
-
-namespace PR14029 {
-  // Make sure this doesn't crash/assert.
-  template <typename T> struct Test {
-    enum class Tag {
-      test = 0
-    };
-    Test() {
-      auto t = Tag::test;
-    }
-    Tag tag() const { return static_cast<Tag>(1); }
-  };
-  Test<int> t;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -fverbose-asm -S -g %s -o - | grep DW_TAG_enumeration_type
-
-int v;
-enum index  { MAX };
-void foo(void)
-{
-  v = MAX;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-flex-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-flex-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-flex-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-// CHECK: metadata !{i32 {{.*}}, i64 0, i64 -1}        ; [ DW_TAG_subrange_type ]
-
-struct StructName {
-  int member[];
-};
-
-struct StructName SN;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-fn-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-fn-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-fn-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s
-
-template<typename T>
-struct XF {
-  T member;
-};
-
-template<typename T>
-T fx(XF<T> xi) {
-  return xi.member;
-}
-
-//CHECK: XF<int>
-//CHECK: DW_TAG_template_type_parameter
-template int fx(XF<int>);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-friend.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-friend.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-friend.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang -fverbose-asm -S -g %s -o - | grep DW_TAG_friend
-
-class MyFriend;
-
-class SomeClass
-{
- friend class MyFriend;
-};
-
-SomeClass sc;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-fwd-ref.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-fwd-ref.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-fwd-ref.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-struct baz {
-    int h;
-    baz(int a) : h(a) {}
-};
-
-struct bar {
-    baz b;
-    baz& b_ref;
-    bar(int x) : b(x), b_ref(b) {}
-};
-
-int main(int argc, char** argv) {
-    bar myBar(1);
-    return 0;
-}
-
-// Make sure we have two DW_TAG_structure_types for baz and bar and no forward
-// references.
-// CHECK-NOT: [fwd]
-// CHECK: [ DW_TAG_structure_type ] [bar]
-// CHECK: [ DW_TAG_structure_type ] [baz]
-// CHECK-NOT: [fwd]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-gline-tables-only.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -O0 -gline-tables-only -S -emit-llvm -o - | FileCheck %s
-// Checks that clang with "-gline-tables-only" doesn't emit debug info
-// for variables and types.
-
-// CHECK-NOT: DW_TAG_namespace
-namespace NS {
-// CHECK-NOT: DW_TAG_class_type
-// CHECK-NOT: DW_TAG_friend
-class C { friend class D; };
-class D {};
-// CHECK-NOT: DW_TAG_inheritance
-class E : public C {
-  // CHECK-NOT: DW_TAG_reference type
-  void x(const D& d);
-};
-}
-
-// CHECK-NOT: DW_TAG_variable
-NS::C c;
-NS::D d;
-NS::E e;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -g -fno-use-cxa-atexit -S -emit-llvm -o - \
-// RUN:     | FileCheck %s --check-prefix=CHECK-NOKEXT
-// RUN: %clang_cc1 %s -g -fno-use-cxa-atexit -fapple-kext -S -emit-llvm -o - \
-// RUN:     | FileCheck %s --check-prefix=CHECK-KEXT
-
-class A {
- public:
-  A() {}
-  virtual ~A() {}
-};
-
-A glob;
-A array[2];
-
-void foo() {
-  static A stat;
-}
-
-// CHECK-NOKEXT: [ DW_TAG_subprogram ] [line 12] [local] [def] [__cxx_global_var_init]
-// CHECK-NOKEXT: [ DW_TAG_subprogram ] [line 12] [local] [def] [__dtor_glob]
-// CHECK-NOKEXT: [ DW_TAG_subprogram ] [line 13] [local] [def] [__cxx_global_var_init1]
-// CHECK-NOKEXT: [ DW_TAG_subprogram ] [line 13] [local] [def] [__cxx_global_array_dtor]
-// CHECK-NOKEXT: [ DW_TAG_subprogram ] [line 13] [local] [def] [__dtor_]
-// CHECK-NOKEXT: [ DW_TAG_subprogram ] [line 16] [local] [def] [__dtor__ZZ3foovE4stat]
-// CHECK-NOKEXT: [ DW_TAG_subprogram ] [line {{.*}}] [local] [def] [_GLOBAL__I_a]
-
-// CHECK-KEXT: [ DW_TAG_subprogram ] [line {{.*}}] [local] [def] [_GLOBAL__D_a]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-globalinit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-globalinit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-globalinit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s -std=c++11 -g | FileCheck %s
-
-void crash() {
-  volatile char *ptr = 0;
-  char x = *ptr;
-}
-
-int test() {
-  crash();
-  return 1;
-}
-
-static int i = test();
-__attribute__((nodebug)) static int j = test();
-
-int main(void) {}
-
-// CHECK: define internal void @__cxx_global_var_init()
-// CHECK-NOT: __cxx_global_var_init
-// CHECK: %[[C0:.+]] = call i32 @_Z4testv(), !dbg ![[LINE:.*]]
-// CHECK-NOT: __cxx_global_var_init
-// CHECK: store i32 %[[C0]], i32* @_ZL1i, align 4, !dbg
-// 
-// CHECK: define internal void @__cxx_global_var_init1()
-// CHECK-NOT: dbg
-// CHECK: %[[C1:.+]] = call i32 @_Z4testv()
-// CHECK-NOT: dbg
-// CHECK: store i32 %[[C1]], i32* @_ZL1j, align 4
-// 
-// CHECK: ![[LINE]] = metadata !{i32 13, i32

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-large-constant.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-large-constant.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-large-constant.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -g -triple=x86_64-apple-darwin %s -o /dev/null
-// PR 8913
-
-typedef __uint128_t word128;
-static const word128 m126 = 0xffffffffffffffffULL;
-word128 foo() {
-  return m126;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-limit-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-limit-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-limit-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang  -emit-llvm -g -S %s -o - | FileCheck %s
-// XFAIL: *
-
-class B {
-public:
-  int bb;
-  void fn2() {}
-};
-
-class A {
-public:
-  int aa;
-  void fn1(B b) { b.fn2(); }
-};
-
-void foo(A *aptr) {
-}
-
-void bar() {
-  A a;
-}
-
-// B should only be emitted as a forward reference (i32 4).
-// CHECK: metadata !"B", metadata !6, i32 3, i32 0, i32 0, i32 0, i32 4} ; [ DW_TAG_class_type ]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-limit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-limit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-limit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang  -emit-llvm -g -S %s -o - | FileCheck %s
-
-// TAG_member is used to encode debug info for class constructor.
-// CHECK: TAG_member
-class A {
-public:
-  int z;
-};
-
-A *foo (A* x) {
-  A *a = new A(*x);
-  return a;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -fverbose-asm -g -S %s -o - | grep DW_ACCESS_public
-class A {
-public:
-  int x;
-}; 
-A a;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang -fverbose-asm -g -S %s -o - | grep DW_AT_specification
-// Radar 9254491
-class A {
-public:
-  void doSomething(int i) { ++i; }
-};
-
-void foo(A *a) {
-  a->doSomething(2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -std=c++11 -g %s -o - | FileCheck %s
-// CHECK: ![[THISTYPE:[0-9]+]] = {{.*}} ; [ DW_TAG_pointer_type ] {{.*}} [artificial] [from A]
-// CHECK: metadata !"_ZN1A3fooEiS_3$_0", {{.*}} [protected]
-// CHECK: DW_TAG_ptr_to_member_type
-// CHECK: {{.*}}metadata ![[MEMFUNTYPE:[0-9]+]], metadata !{{.*}}} ; [ DW_TAG_ptr_to_member_type ] {{.*}} [from ]
-// CHECK: ![[MEMFUNTYPE]] = {{.*}}metadata ![[MEMFUNARGS:[0-9]+]], i32 0, i32 0} ; [ DW_TAG_subroutine_type ] {{.*}} [from ]
-// CHECK: ![[MEMFUNARGS]] = {{.*}}, metadata ![[THISTYPE]],
-// CHECK: ""{{.*}}DW_TAG_arg_variable
-// CHECK: ""{{.*}}DW_TAG_arg_variable
-// CHECK: ""{{.*}}DW_TAG_arg_variable
-union {
-  int a;
-  float b;
-} u;
-
-class A {
-protected:
-  void foo(int, A, decltype(u));
-}; 
-
-void A::foo(int, A, decltype(u)) {
-}
-
-A a;
-
-int A::*x = 0;
-int (A::*y)(int) = 0;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-method2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -flimit-debug-info -x c++ -g -S -emit-llvm < %s | FileCheck %s
-// rdar://10336845
-// Preserve type qualifiers in -flimit-debug-info mode.
-
-// CHECK:  DW_TAG_const_type
-class A {
-public:
-  int bar(int arg) const;
-};
-
-int A::bar(int arg) const{
-  return arg+2;
-}
-
-int main() {
-  A a;
-  int i = a.bar(2);
-  return i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-namespace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-namespace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-namespace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang  -g -S -emit-llvm %s -o - | FileCheck %s
-
-namespace A {
-#line 1 "foo.cpp"
-namespace B {
-int i;
-}
-using namespace B;
-}
-
-using namespace A;
-
-int func(bool b) {
-  if (b) {
-    using namespace A::B;
-    return i;
-  }
-  using namespace A;
-  return B::i;
-}
-
-// CHECK: [[CU:![0-9]*]] = {{.*}}[[MODULES:![0-9]*]], metadata !""} ; [ DW_TAG_compile_unit ]
-// CHECK: [[FILE:![0-9]*]] {{.*}}debug-info-namespace.cpp"
-// CHECK: [[FUNC:![0-9]*]] {{.*}} ; [ DW_TAG_subprogram ] [line 9] [def] [func]
-// CHECK: [[FILE2:![0-9]*]]} ; [ DW_TAG_file_type ] [{{.*}}foo.cpp]
-// CHECK: [[VAR:![0-9]*]] = {{.*}}, metadata [[NS:![0-9]*]], metadata !"i", {{.*}} ; [ DW_TAG_variable ] [i]
-// CHECK: [[NS]] = {{.*}}, metadata [[FILE2]], metadata [[CTXT:![0-9]*]], {{.*}} ; [ DW_TAG_namespace ] [B] [line 1]
-// CHECK: [[CTXT]] = {{.*}}, metadata [[FILE]], null, {{.*}} ; [ DW_TAG_namespace ] [A] [line 3]
-// CHECK: [[MODULES]] = metadata !{metadata [[M1:![0-9]*]], metadata [[M2:![0-9]*]], metadata [[M3:![0-9]*]], metadata [[M4:![0-9]*]]}
-// CHECK: [[M1]] = metadata !{i32 {{[0-9]*}}, metadata [[CTXT]], metadata [[NS]], i32 4} ; [ DW_TAG_imported_module ]
-// CHECK: [[M2]] = metadata !{i32 {{[0-9]*}}, metadata [[CU]], metadata [[CTXT]], i32 7} ; [ DW_TAG_imported_module ]
-// CHECK: [[M3]] = metadata !{i32 {{[0-9]*}}, metadata [[LEX:![0-9]*]], metadata [[NS]], i32 11} ; [ DW_TAG_imported_module ]
-// CHECK: [[LEX]] = metadata !{i32 {{[0-9]*}}, metadata [[FILE2]], metadata [[FUNC]], i32 10, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
-// CHECK: [[M4]] = metadata !{i32 {{[0-9]*}}, metadata [[FUNC]], metadata [[CTXT]], i32 14} ; [ DW_TAG_imported_module ]
-
-// FIXME: It is confused on win32 to generate file entry when dosish filename is given.
-// REQUIRES: shell

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-nullptr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-nullptr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-nullptr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -std=c++11 -g %s -o -| FileCheck %s
-
-void foo() {
-  decltype(nullptr) t = 0;
-}
-
-// CHECK: [ DW_TAG_unspecified_type ] [nullptr_t]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-pubtypes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-pubtypes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-pubtypes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -g -fno-limit-debug-info -S %s -o %t
-// RUN: FileCheck %s < %t
-
-// FIXME: This testcase shouldn't rely on assembly emission.
-//CHECK: Lpubtypes_begin[[SECNUM:[0-9]:]]
-//CHECK:         .asciz   "G"
-//CHECK-NEXT:    .long   0
-//CHECK-NEXT: Lpubtypes_end[[SECNUM]]
-
-class G {
-public:
-	void foo();
-};
-
-void G::foo() {
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-rvalue-ref.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-rvalue-ref.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-rvalue-ref.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-extern "C" {
-extern int printf(const char * format, ...);
-}
-void foo (int &&i)
-{
-  printf("%d\n", i);
-}
-
-// CHECK: metadata !{i32 {{.*}}, null, null, null, i32 0, i64 0, i64 0, i64 0, i32 0, metadata !{{.*}}} ; [ DW_TAG_rvalue_reference_type ]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-same-line.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-same-line.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-same-line.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm -o - %s | FileCheck %s
-
-// Make sure that clang outputs distinct debug info for a function
-// that is inlined twice on the same line. Otherwise it would appear
-// as if the function was only inlined once.
-
-#define INLINE inline __attribute__((always_inline))
-
-INLINE int
-product (int x, int y)
-{
-    int result = x * y;
-    return result;
-}
-
-INLINE int
-sum (int a, int b)
-{
-    int result = a + b;
-    return result;
-}
-
-int
-strange_max (int m, int n)
-{
-    if (m > n)
-        return m;
-    else if (n > m)
-        return n;
-    else
-        return 0;
-}
-
-int
-foo (int i, int j)
-{
-    if (strange_max (i, j) == i)
-        return product (i, j);
-    else if (strange_max  (i, j) == j)
-        return sum (i, j);
-    else
-        return product (sum (i, i), sum (j, j));
-}
-
-int
-main(int argc, char const *argv[])
-{
-
-    int array[3];
-    int n;
-
-    array[0] = foo (1238, 78392);
-    array[1] = foo (379265, 23674);
-    array[2] = foo (872934, 234);
-
-    n = strange_max(array[0], strange_max(array[1], array[2]));
-
-    return n & 0xf;
-}
-
-// CHECK: define {{.*}} @_Z3fooii
-// i
-// CHECK: call void @llvm.dbg.declare
-// j
-// CHECK: call void @llvm.dbg.declare
-// x
-// CHECK: call void @llvm.dbg.declare
-// y
-// CHECK: call void @llvm.dbg.declare
-// result
-// CHECK: call void @llvm.dbg.declare
-
-// CHECK: call void @llvm.dbg.declare(metadata !{i32* %{{.*}}}, metadata ![[A_MD:[0-9]+]]), !dbg ![[A_DI:[0-9]+]]
-// CHECK: call void @llvm.dbg.declare(metadata !{i32* %{{.*}}}, metadata ![[B_MD:[0-9]+]]), !dbg ![[B_DI:[0-9]+]]
-// result
-// CHECK: call void @llvm.dbg.declare
-
-// We want to see a distinct !dbg node.
-// CHECK-NOT: call void @llvm.dbg.declare(metadata !{i32* %{{.*}}}, metadata ![[A_MD]]), !dbg ![[A_DI]]
-// CHECK:     call void @llvm.dbg.declare(metadata !{i32* %{{.*}}}, metadata ![[A_MD]]), !dbg !{{.*}}
-// CHECK-NOT: call void @llvm.dbg.declare(metadata !{i32* %{{.*}}}, metadata ![[B_MD]]), !dbg ![[B_DI]]
-// CHECK:     call void @llvm.dbg.declare(metadata !{i32* %{{.*}}}, metadata ![[B_MD]]), !dbg !{{.*}}
-// result
-// CHECK: call void @llvm.dbg.declare
-
-// CHECK: define {{.*}} @main
-// CHECK: call {{.*}} @_Z3fooii
-// CHECK: call {{.*}} @_Z3fooii
-// CHECK: call {{.*}} @_Z3fooii
-// CHECK: store
-// CHECK: getelementptr
-// We want to see the same !dbg node for non-inlined functions. 
-// Needed for GDB compatibility.
-// CHECK: load {{.*}} !dbg ![[DBG:.*]]
-// CHECK: load {{.*}} !dbg ![[DBG]]
-// CHECK: load {{.*}} !dbg ![[DBG]]
-// CHECK: call {{.*}} @_Z11strange_maxii(i32 {{.*}}, i32 {{.*}}), !dbg ![[DBG]]
-// CHECK: call {{.*}} @_Z11strange_maxii(i32 {{.*}}, i32 {{.*}}), !dbg ![[DBG]]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-static-fns.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-static-fns.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-static-fns.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-namespace A {
-  static int a(int b) { return b + 4; }
-
-  int b(int c) { return c + a(c); }
-}
-
-// Verify that a is present and mangled.
-// CHECK: metadata !"_ZN1AL1aEi", {{.*}}, i32 (i32)* @_ZN1AL1aEi, {{.*}} ; [ DW_TAG_subprogram ] [line 4] [local] [def] [a]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-static-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-static-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-static-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clangxx -target x86_64-unknown-unknown -g -O0 %s -emit-llvm -S -o - | FileCheck %s
-// PR14471
-
-
-class C
-{
-  static int a;
-  const static bool const_a = true;
-protected:
-  static int b;
-  const static float const_b = 3.14;
-public:
-  static int c;
-  const static int const_c = 18;
-  int d;
-};
-
-int C::a = 4;
-int C::b = 2;
-int C::c = 1;
-
-int main()
-{
-        C instance_C;
-        instance_C.d = 8;
-        return C::c;
-}
-
-// The definition of C::a drives the emission of class C, which is
-// why the definition of "a" comes before the declarations while
-// "b" and "c" come after.
-
-// CHECK: metadata !"a", {{.*}} @_ZN1C1aE, metadata ![[DECL_A:[0-9]+]]} ; [ DW_TAG_variable ] [a] {{.*}} [def]
-// CHECK: ![[DECL_A]] = metadata {{.*}} [ DW_TAG_member ] [a] [line {{.*}}, size 0, align 0, offset 0] [private] [static]
-// CHECK: metadata !"const_a", {{.*}}, i1 true} ; [ DW_TAG_member ] [const_a] [line {{.*}}, size 0, align 0, offset 0] [private] [static]
-// CHECK: ![[DECL_B:[0-9]+]] {{.*}} metadata !"b", {{.*}} [ DW_TAG_member ] [b] [line {{.*}}, size 0, align 0, offset 0] [protected] [static]
-// CHECK: metadata !"const_b", {{.*}}, float 0x{{.*}}} ; [ DW_TAG_member ] [const_b] [line {{.*}}, size 0, align 0, offset 0] [protected] [static]
-// CHECK: ![[DECL_C:[0-9]+]] {{.*}} metadata !"c", {{.*}} [ DW_TAG_member ] [c] [line {{.*}}, size 0, align 0, offset 0] [static]
-// CHECK: metadata !"const_c", {{.*}} [ DW_TAG_member ] [const_c] [line {{.*}}, size 0, align 0, offset 0] [static]
-// CHECK: metadata !"b", {{.*}} @_ZN1C1bE, metadata ![[DECL_B]]} ; [ DW_TAG_variable ] [b] {{.*}} [def]
-// CHECK: metadata !"c", {{.*}} @_ZN1C1cE, metadata ![[DECL_C]]} ; [ DW_TAG_variable ] [c] {{.*}} [def]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-array.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-array.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-array.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang -emit-llvm -g -S %s -o -
-// PR13531
-template <typename>
-struct unique_ptr {
-  unique_ptr() {}
-};
-
-template <unsigned>
-struct Vertex {};
-
-void crash() // Asserts
-{
-  unique_ptr<Vertex<2>[]> v = unique_ptr<Vertex<2>[]>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-limit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-limit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-limit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang -flimit-debug-info -emit-llvm -g -S %s -o - | FileCheck %s
-
-// Check that this pointer type is TC<int>
-// CHECK: ![[LINE:[0-9]+]]} ; [ DW_TAG_pointer_type ]{{.*}}[from TC<int>]
-// CHECK-NEXT: ![[LINE]] ={{.*}}"TC<int>"
-
-template<typename T>
-class TC {
-public:
-  TC(const TC &) {}
-  TC() {}
-};
-
-TC<int> tci;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-class MyClass
-{
-public:
-    int add2(int j)
-    {
-        return add<2>(j);
-    }
-private:
-    template <int i> int add(int j)
-    {
-        return i + j;
-    }
-};
-
-MyClass m;
-
-// CHECK: metadata [[C_MEM:![0-9]*]], i32 0, null, null} ; [ DW_TAG_class_type ] [MyClass]
-// CHECK: [[C_MEM]] = metadata !{metadata {{.*}}, metadata [[C_TEMP:![0-9]*]], metadata {{.*}}}
-// CHECK: [[C_TEMP]] = {{.*}} ; [ DW_TAG_subprogram ] [line 11] [private] [add<2>]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-quals.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-quals.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-quals.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-template<typename _CharT>
-struct basic_string {
-
-  basic_string&
-  assign(const _CharT* __s, const basic_string<_CharT> &x)
-  {
-    return *this;
-  }
-};
-
-void foo (const char *c) {
-  basic_string<char> str;
-  str.assign(c, str);
-}
-
-// CHECK: [[P:.*]] = {{.*}}, metadata [[CON:![0-9]*]]} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from ]
-// CHECK: [[CON]] = {{.*}}, metadata [[CH:![0-9]*]]} ; [ DW_TAG_const_type ] [line 0, size 0, align 0, offset 0] [from char]
-// CHECK: [[CH]] = {{.*}} ; [ DW_TAG_base_type ] [char] [line 0, size 8, align 8, offset 0, enc DW_ATE_signed_char]
-
-// CHECK: {{.*}} metadata [[TYPE:![0-9]*]], {{.*}}, metadata !{{[0-9]*}}, metadata !{{[0-9]*}}, i32 8} ; [ DW_TAG_subprogram ] [line 7] [def] [scope 8] [assign]
-// CHECK: [[TYPE]] = metadata !{i32 {{.*}}, metadata [[ARGS:.*]], i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
-// CHECK: [[ARGS]] = metadata !{metadata !{{.*}}, metadata !{{.*}}, metadata [[P]], metadata [[R:.*]]}
-// CHECK: [[BS:.*]] = {{.*}} ; [ DW_TAG_structure_type ] [basic_string<char>] [line 4, size 8, align 8, offset 0] [from ]
-// CHECK: [[R]] = {{.*}}, metadata [[CON2:![0-9]*]]} ; [ DW_TAG_reference_type ] [line 0, size 0, align 0, offset 0] [from ]
-// CHECK: [[CON2]] = {{.*}}, metadata [[BS]]} ; [ DW_TAG_const_type ] [line 0, size 0, align 0, offset 0] [from basic_string<char>]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-recursive.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-recursive.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template-recursive.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
-
-class base { };
-
-template <class T> class foo : public base  {
-  void operator=(const foo r) { }
-};
-
-class bar : public foo<void> { };
-bar filters;
-
-// For now check that it simply doesn't crash.
-// CHECK: {{.*}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s
-
-//CHECK: TC<int>
-//CHECK: DW_TAG_template_type_parameter
-
-template<typename T>
-class TC {
-public:
-  TC(const TC &) {}
-  TC() {}
-};
-
-TC<int> tci;
-
-//CHECK: TU<2>
-//CHECK: DW_TAG_template_value_parameter
-template<unsigned >
-class TU {
-  int b;
-};
-
-TU<2> u2;
-
-// PR9600
-template<typename T> class vector {};
-class Foo;
-typedef vector<Foo*> FooVector[3];
-struct Test {
-  virtual void foo(FooVector *);
-};
-static Test test;
-
-// PR9608
-template <int i> struct TheTemplate {
-  struct Empty2 {}; 
-  typedef const Empty2 DependentType[i]; 
-  TheTemplate() {} 
-}; 
-
-class TheTemplateTest : public TheTemplate<42> { 
-  TheTemplateTest(); 
-  void method(const TheTemplate<42>::DependentType *) {} 
-}; 
-
-TheTemplateTest::TheTemplateTest() : TheTemplate<42>() {} 
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-this.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-this.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-this.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s
-// Radar 9239104
-class Class
-{
-public:
-//CHECK: DW_TAG_const_type
-    int foo (int p) const {
-        return p+m_int;
-    }  
-
-protected:
-    int m_int;
-};
-
-Class c;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-thunk.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-thunk.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-thunk.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -g -S -emit-llvm -o - | FileCheck %s
-
-struct A {
-  virtual void f();
-};
-
-struct B {
-  virtual void f();
-};
-
-struct C : A, B {
-  virtual void f();
-};
-
-void C::f() { }
-
-// CHECK: [ DW_TAG_subprogram ] [line 15] [def] [_ZThn{{4|8}}_N1C1fEv]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-union-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-union-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-union-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-linux-gnu  %s -o - | FileCheck %s
-
-// Make sure that the union type has template parameters.
-
-namespace PR15637 {
-  template <typename T> union Value { int a; };
-  void g(float value) {
-    Value<float> tempValue;
-  }
-  Value<float> f;
-}
-
-// CHECK: {{.*}}, metadata !"Value<float>", {{.*}}, null, metadata [[TTPARAM:.*]]} ; [ DW_TAG_union_type ] [Value<float>]
-// CHECK: [[TTPARAM]] = metadata !{metadata [[PARAMS:.*]]}
-// CHECK: [[PARAMS]] = metadata !{{{.*}}metadata !"T",{{.*}}} ; [ DW_TAG_template_type_parameter ]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin -std=c++11 %s -o - | FileCheck %s
-
-union E {
-  int a;
-  float b;
-  int bb() { return a;}
-  float aa() { return b;}
-  E() { a = 0; }
-};
-
-E e;
-
-// CHECK: {{.*}} ; [ DW_TAG_union_type ] [E] [line 3, size 32, align 32, offset 0]
-// CHECK: {{.*}} ; [ DW_TAG_subprogram ] [line 6] [bb]
-// CHECK: {{.*}} ; [ DW_TAG_subprogram ] [line 7] [aa]
-// CHECK: {{.*}} ; [ DW_TAG_subprogram ] [line 8] [E]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-use-after-free.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-use-after-free.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-use-after-free.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,313 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm-only %s
-// Check that we don't crash.
-// PR12305, PR12315
-
-# 1 "a.h"  3
-template < typename T1 > struct Types1
-{
-  typedef T1 Head;
-};
-template < typename > struct Types;
-template < template < typename > class Tmpl > struct TemplateSel
-{
-  template < typename T > struct Bind
-  {
-    typedef Tmpl < T > type;
-  };
-};
-template < typename > struct NoneT;
-template < template < typename > class T1, template < typename > class > struct Templates2
-{
-  typedef TemplateSel < T1 > Head;
-};
-template < template < typename > class, template < typename > class =
-  NoneT, template < typename > class = NoneT, template < typename > class =
-  NoneT > struct Templates;
-template < template < typename > class T1,
-  template < typename > class T2 > struct Templates <T1, T2 >
-{
-  typedef Templates2 < T1, T2 > type;
-};
-template < typename T > struct TypeList
-{
-  typedef Types1 < T > type;
-};
-template < template < typename > class, class TestSel,
-  typename Types > class TypeParameterizedTest
-{
-public:static bool Register ()
-  {
-    typedef typename Types::Head Type;
-    typename TestSel::template Bind < Type >::type TestClass;
-}};
-
-template < template < typename > class Fixture, typename Tests,
-  typename Types > class TypeParameterizedTestCase
-{
-public:static bool Register (char *, char *, int *)
-  {
-    typedef typename Tests::Head Head;
-    TypeParameterizedTest < Fixture, Head, Types >::Register;
-}};
-
-template < typename > class TypedTestP1
-{
-};
-
-namespace gtest_case_TypedTestP1_
-{
-  template < typename gtest_TypeParam_ > class A:TypedTestP1 <
-    gtest_TypeParam_ >
-  {
-  };
-template < typename gtest_TypeParam_ > class B:TypedTestP1 <
-    gtest_TypeParam_ >
-  {
-  };
-  typedef Templates < A >::type gtest_AllTests_;
-}
-
-template < typename > class TypedTestP2
-{
-};
-
-namespace gtest_case_TypedTestP2_
-{
-  template < typename gtest_TypeParam_ > class A:TypedTestP2 <
-    gtest_TypeParam_ >
-  {
-  };
-  typedef Templates < A >::type gtest_AllTests_;
-}
-
-bool gtest_Int_TypedTestP1 =
-  TypeParameterizedTestCase < TypedTestP1,
-  gtest_case_TypedTestP1_::gtest_AllTests_,
-  TypeList < int >::type >::Register ("Int", "TypedTestP1", 0);
-bool gtest_Int_TypedTestP2 =
-  TypeParameterizedTestCase < TypedTestP2,
-  gtest_case_TypedTestP2_::gtest_AllTests_,
-  TypeList < Types < int > >::type >::Register ("Int", "TypedTestP2", 0);
-
-template < typename _Tp > struct new_allocator
-{
-  typedef _Tp *pointer;
-  template < typename > struct rebind {
-    typedef new_allocator other;
-  };
-};
-template < typename _Tp > struct allocator:new_allocator < _Tp > {
-};
-template < typename _Tp, typename _Alloc > struct _Vector_base {
-  typedef typename _Alloc::template rebind < _Tp >::other _Tp_alloc_type;
-  struct _Vector_impl {
-    typename _Tp_alloc_type::pointer _M_end_of_storage;
-  };
-  _Vector_base () {
-    foo((int *) this->_M_impl._M_end_of_storage);
-  }
-  void foo(int *);
-  _Vector_impl _M_impl;
-};
-template < typename _Tp, typename _Alloc =
-allocator < _Tp > >struct vector:_Vector_base < _Tp, _Alloc > { };
-
-
-template < class T> struct HHH {};
-struct DDD { int x_;};
-struct Data;
-struct X1;
-struct CCC:DDD {   virtual void xxx (HHH < X1 >); };
-template < class SSS > struct EEE:vector < HHH < SSS > > { };
-template < class SSS, class = EEE < SSS > >class FFF { };
-template < class SSS, class GGG = EEE < SSS > >class AAA:FFF <GGG> { };
-class BBB:virtual CCC {
-  void xxx (HHH < X1 >);
-  vector < HHH < X1 > >aaa;
-};
-class ZZZ:AAA < Data >, BBB { virtual ZZZ *ppp () ; };
-ZZZ * ZZZ::ppp () { return new ZZZ; }
-
-namespace std
-{
-  template < class, class > struct pair;
-}
-namespace __gnu_cxx {
-template < typename > class new_allocator;
-}
-namespace std {
-template < typename _Tp > class allocator:__gnu_cxx::new_allocator < _Tp > {
-};
-template < typename, typename > struct _Vector_base {
-};
-template < typename _Tp, typename _Alloc = std::allocator < _Tp > >class vector:_Vector_base < _Tp,
-  _Alloc
-        > {
-        };
-}
-
-namespace
-std {
-  template <
-      typename,
-      typename > struct unary_function;
-  template <
-      typename,
-      typename,
-      typename > struct binary_function;
-  template <
-      typename
-      _Tp > struct equal_to:
-        binary_function <
-        _Tp,
-        _Tp,
-        bool > {
-        };
-  template <
-      typename
-      _Pair > struct _Select1st:
-        unary_function <
-        _Pair,
-        typename
-        _Pair::first_type > {
-        };
-}
-# 1 "f.h"  3
-using
-std::pair;
-namespace
-__gnu_cxx {
-  template <
-      class > struct hash;
-  template <
-      class,
-      class,
-      class,
-      class,
-      class
-          _EqualKey,
-      class >
-          class
-          hashtable {
-           public:
-            typedef _EqualKey
-                key_equal;
-            typedef void key_type;
-          };
-  using
-      std::equal_to;
-  using
-      std::allocator;
-  using
-      std::_Select1st;
-  template < class _Key, class _Tp, class _HashFn =
-      hash < _Key >, class _EqualKey = equal_to < _Key >, class _Alloc =
-      allocator < _Tp > >class hash_map {
-        typedef
-            hashtable <
-            pair <
-            _Key,
-        _Tp >,
-        _Key,
-        _HashFn,
-        _Select1st <
-            pair <
-            _Key,
-        _Tp > >,
-        _EqualKey,
-        _Alloc >
-            _Ht;
-       public:
-        typedef typename _Ht::key_type key_type;
-        typedef typename
-            _Ht::key_equal
-            key_equal;
-      };
-}
-using
-__gnu_cxx::hash_map;
-class
-C2;
-template < class > class scoped_ptr {
-};
-namespace {
-class
-    AAA {
-      virtual ~
-          AAA () {
-          }};
-}
-template < typename > class EEE;
-template < typename CCC, typename =
-typename CCC::key_equal, typename =
-EEE < CCC > >class III {
-};
-namespace
-util {
-  class
-      EEE {
-      };
-}
-namespace {
-class
-    C1:
-      util::EEE {
-       public:
-        class
-            C3:
-              AAA {
-                struct FFF;
-                typedef
-                    III <
-                    hash_map <
-                    C2,
-                    FFF > >
-                        GGG;
-                GGG
-                    aaa;
-                friend
-                    C1;
-              };
-        void
-            HHH (C3::GGG &);
-      };
-}
-namespace
-n1 {
-  class
-      Test {
-      };
-  template <
-      typename >
-      class
-      C7 {
-      };
-  class
-      C4:
-        n1::Test {
-          vector <
-              C1::C3 * >
-              a1;
-        };
-  enum C5 { };
-  class
-      C6:
-        C4,
-        n1::C7 <
-        C5 > {
-        };
-  class
-      C8:
-        C6 {
-        };
-  class
-      C9:
-        C8 {
-          void
-              TestBody ();
-        };
-  void
-      C9::TestBody () {
-        scoped_ptr < C1::C3 > context;
-      }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-wchar.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-wchar.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-wchar.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g %s -o -| FileCheck %s
-void foo() {
-// CHECK: metadata !"wchar_t",
-  const wchar_t w = L'x';
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-zero-length-arrays.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-zero-length-arrays.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info-zero-length-arrays.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang -target x86_64-unknown-unknown -fverbose-asm -g -O0 -S -emit-llvm %s -o - | FileCheck %s
-// <rdar://problem/12566646>
-
-class A {
-  int x[];
-};
-A a;
-
-// CHECK: metadata [[ARRAY_TYPE:![0-9]*]]} ; [ DW_TAG_member ] [x]
-// CHECK: metadata [[ELEM_TYPE:![0-9]*]], i32 0, i32 0} ; [ DW_TAG_array_type ] [line 0, size 0, align 32, offset 0] [from int]
-// CHECK: [[ELEM_TYPE]] = metadata !{metadata [[SUBRANGE:.*]]}
-// CHECK: [[SUBRANGE]] = metadata !{i32 786465, i64 0, i64 -1} ; [ DW_TAG_subrange_type ] [unbounded]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-info.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -g %s
-template<typename T> struct Identity {
-  typedef T Type;
-};
-
-void f(Identity<int>::Type a) {}
-void f(Identity<int> a) {}
-void f(int& a) { }
-
-template<typename T> struct A {
-  A<T> *next;
-};
-void f(A<int>) { }
-
-struct B { };
-
-void f() {
-  int B::*a = 0;
-  void (B::*b)() = 0;
-}
-
-namespace EmptyNameCrash {
-  struct A { A(); };
-  typedef struct { A x; } B;
-  B x;
-}
-
-// PR4890
-namespace PR4890 {
-  struct X {
-    ~X();
-  };
-
-  X::~X() { }
-}
-
-namespace VirtualDtor {
-  struct Y {
-    virtual ~Y();
-  };
-  
-  Y::~Y() { }
-}
-
-namespace VirtualBase {
-  struct A { };
-  struct B : virtual A { };
-
-  void f() {
-    B b;
-  }
-}
-
-void foo() {
-  const wchar_t c = L'x';
-  wchar_t d = c;
-}
-
-namespace b5249287 {
-template <typename T> class A {
-  struct B;
-};
-
-class Cls {
-  template <typename T> friend class A<T>::B;
-};
-
-Cls obj;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-lambda-expressions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-lambda-expressions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-lambda-expressions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s -fexceptions -std=c++11 -g | FileCheck %s
-
-auto var = [](int i) { return i+1; };
-void *use = &var;
-
-extern "C" auto cvar = []{};
-
-int a() { return []{ return 1; }(); }
-
-int b(int x) { return [x]{return x;}(); }
-
-int c(int x) { return [&x]{return x;}(); }
-
-struct D { D(); D(const D&); int x; };
-int d(int x) { D y[10]; [x,y] { return y[x].x; }(); }
-
-// Randomness for file. -- 6
-// CHECK: [[FILE:.*]] = {{.*}} [ DW_TAG_file_type ] [{{.*}}debug-lambda-expressions.cpp]
-
-// A: 10
-// CHECK: [[A_FUNC:.*]] = {{.*}} [ DW_TAG_subprogram ] [line [[A_LINE:.*]]] [def] [a]
-
-// B: 14
-// CHECK: [[B_FUNC:.*]] = {{.*}} [ DW_TAG_subprogram ] [line [[B_LINE:.*]]] [def] [b]
-
-// C: 17
-// CHECK: [[C_FUNC:.*]] = {{.*}} [ DW_TAG_subprogram ] [line [[C_LINE:.*]]] [def] [c]
-
-// D: 18
-// CHECK: [[D_FUNC:.*]] = {{.*}} [ DW_TAG_subprogram ] [line [[D_LINE:.*]]] [def] [d]
-
-// Back to D. -- 24
-// CHECK: [[LAM_D:.*]] = {{.*}}, metadata [[D_FUNC]], {{.*}}, metadata [[LAM_D_ARGS:.*]], i32 0, null, null} ; [ DW_TAG_class_type ] [line [[D_LINE]],
-// CHECK: [[LAM_D_ARGS]] = metadata !{metadata [[CAP_D_X:.*]], metadata [[CAP_D_Y:.*]], metadata [[CON_LAM_D:.*]], metadata [[DES_LAM_D:.*]]}
-// CHECK: [[CAP_D_X]] = {{.*}}, metadata [[LAM_D]], {{.*}} [ DW_TAG_member ] [x] [line [[D_LINE]],
-// CHECK: [[CAP_D_Y]] = {{.*}}, metadata [[LAM_D]], {{.*}} [ DW_TAG_member ] [y] [line [[D_LINE]],
-// CHECK: [[CON_LAM_D]] = {{.*}}, metadata [[LAM_D]], {{.*}} [ DW_TAG_subprogram ] [line [[D_LINE]]] [operator()]
-// CHECK: [[DES_LAM_D]] = {{.*}}, metadata [[LAM_D]], {{.*}} [ DW_TAG_subprogram ] [line [[D_LINE]]] [~]
-
-
-// Back to C. -- 55
-// CHECK: [[LAM_C:.*]] = {{.*}}, metadata [[C_FUNC]], {{.*}}, metadata [[LAM_C_ARGS:.*]], i32 0, null, null} ; [ DW_TAG_class_type ] [line [[C_LINE]],
-// CHECK: [[LAM_C_ARGS]] = metadata !{metadata [[CAP_C:.*]], metadata [[CON_LAM_C:.*]], metadata [[DES_LAM_C:.*]]}
-// Ignoring the member type for now.
-// CHECK: [[CAP_C]] = {{.*}}, metadata [[LAM_C]], {{.*}}} ; [ DW_TAG_member ] [x] [line [[C_LINE]],
-// CHECK: [[CON_LAM_C]] = {{.*}}, metadata [[LAM_C]], {{.*}} [ DW_TAG_subprogram ] [line [[C_LINE]]] [operator()]
-// CHECK: [[DES_LAM_C]] = {{.*}}, metadata [[LAM_C]], {{.*}} [ DW_TAG_subprogram ] [line [[C_LINE]]] [~]
-
-
-// Back to B. -- 67
-// CHECK: [[LAM_B:.*]] = {{.*}}, metadata [[B_FUNC]], {{.*}}, metadata [[LAM_B_ARGS:.*]], i32 0, null, null} ; [ DW_TAG_class_type ] [line [[B_LINE]],
-// CHECK: [[LAM_B_ARGS]] = metadata !{metadata [[CAP_B:.*]], metadata [[CON_LAM_B:.*]], metadata [[DES_LAM_B:.*]]}
-// CHECK: [[CAP_B]] = {{.*}}, metadata [[LAM_B]], {{.*}}} ; [ DW_TAG_member ] [x] [line [[B_LINE]],
-// CHECK: [[CON_LAM_B]] = {{.*}}, metadata [[LAM_B]], {{.*}} [ DW_TAG_subprogram ] [line [[B_LINE]]] [operator()]
-// CHECK: [[DES_LAM_B]] = {{.*}}, metadata [[LAM_B]], {{.*}} [ DW_TAG_subprogram ] [line [[B_LINE]]] [~]
-
-// Back to A. -- 78
-// CHECK: [[LAM_A:.*]] = {{.*}}, metadata [[A_FUNC]], {{.*}}, metadata [[LAM_A_ARGS:.*]], i32 0, null, null} ; [ DW_TAG_class_type ] [line [[A_LINE]],
-// CHECK: [[LAM_A_ARGS]] = metadata !{metadata [[CON_LAM_A:.*]], metadata [[DES_LAM_A:.*]]}
-// CHECK: [[CON_LAM_A]] = {{.*}}, metadata [[LAM_A]], {{.*}} [ DW_TAG_subprogram ] [line [[A_LINE]]] [operator()]
-// CHECK: [[DES_LAM_A]] = {{.*}}, metadata [[LAM_A]], {{.*}} [ DW_TAG_subprogram ] [line [[A_LINE]]] [~]
-
-// CVAR:
-// CHECK: {{.*}} metadata [[CVAR_T:![0-9]*]], {{.*}} ; [ DW_TAG_variable ] [cvar] [line [[CVAR_LINE:[0-9]*]]] 
-// CHECK: [[CVAR_T]] = {{.*}}, metadata ![[CVAR_ARGS:.*]], i32 0, null, null} ; [ DW_TAG_class_type ] [line [[CVAR_LINE]],
-// CHECK: [[CVAR_ARGS]] = metadata !{metadata !{{.*}}, metadata !{{.*}}, metadata !{{.*}}}
-
-// VAR:
-// CHECK: {{.*}} metadata [[VAR_T:![0-9]*]], {{.*}} ; [ DW_TAG_variable ] [var] [line [[VAR_LINE:[0-9]*]]]
-// CHECK: [[VAR_T]] = {{.*}}, metadata [[VAR_ARGS:![0-9]*]], i32 0, null, null} ; [ DW_TAG_class_type ] [line [[VAR_LINE]],
-// CHECK: [[VAR_ARGS]] = metadata !{metadata !{{.*}}, metadata !{{.*}}, metadata !{{.*}}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-lambda-this.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-lambda-this.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/debug-lambda-this.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s -fexceptions -std=c++11 -g | FileCheck %s
-
-struct D {
-  D();
-  D(const D&);
-  int x;
-  int d(int x);
-};
-int D::d(int x) {
-  [=] {
-    return this->x;
-  }();
-}
-
-// CHECK: {{.*}} [ DW_TAG_member ] [this] [line 11, size 64, align 64, offset 0] [private] [from ]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/decl-ref-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/decl-ref-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/decl-ref-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-struct A {};
-
-struct B 
-{ 
-  operator A&();
-}; 
-
-
-struct D : public B {
-  operator A();
-};
-
-extern B f(); 
-extern D d(); 
-
-int main() {
-	const A& rca = f();
-	const A& rca2 = d();
-}
-
-// CHECK-LP64: callq    __ZN1BcvR1AEv
-// CHECK-LP64: callq    __ZN1BcvR1AEv
-
-// CHECK-LP32: calll     L__ZN1BcvR1AEv
-// CHECK-LP32: calll     L__ZN1BcvR1AEv

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-arg-temps.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-arg-temps.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-arg-temps.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
-
-struct T {
-  T();
-  ~T();
-};
-
-void f(const T& t = T());
-
-class X { // ...
-public:
-        X();
-        X(const X&, const T& t = T());
-};
-
-// CHECK: define void @_Z1gv()
-void g() {
-  // CHECK:      call void @_ZN1TC1Ev([[T:%.*]]* [[AGG1:%.*]])
-  // CHECK-NEXT: call void @_Z1fRK1T([[T]]* [[AGG1]])
-  // CHECK-NEXT: call void @_ZN1TD1Ev([[T]]* [[AGG1]])
-  f();
-
-  // CHECK-NEXT: call void @_ZN1TC1Ev([[T:%.*]]* [[AGG2:%.*]])
-  // CHECK-NEXT: call void @_Z1fRK1T([[T]]* [[AGG2]])
-  // CHECK-NEXT: call void @_ZN1TD1Ev([[T]]* [[AGG2]])
-  f();
-
-  // CHECK-NEXT: call void @_ZN1XC1Ev(
-  X a;
-
-  // CHECK-NEXT: call void @_ZN1TC1Ev(
-  // CHECK-NEXT: call void @_ZN1XC1ERKS_RK1T(
-  // CHECK-NEXT: call void @_ZN1TD1Ev(
-  X b(a);
-
-  // CHECK-NEXT: call void @_ZN1TC1Ev(
-  // CHECK-NEXT: call void @_ZN1XC1ERKS_RK1T(
-  // CHECK-NEXT: call void @_ZN1TD1Ev(
-  X c = a;
-}
-
-
-class obj{ int a; float b; double d; };
-// CHECK: define void @_Z1hv()
-void h() {
-  // CHECK: call void @llvm.memset.p0i8.i64(
-  obj o = obj();
-}
-
-// PR7028 - mostly this shouldn't crash
-namespace test1 {
-  struct A { A(); };
-  struct B { B(); ~B(); };
-
-  struct C {
-    C(const B &file = B());
-  };
-  C::C(const B &file) {}
-
-  struct D {
-    C c;
-    A a;
-
-    // CHECK: define linkonce_odr void @_ZN5test11DC2Ev(%"struct.test1::D"* %this) unnamed_addr
-    // CHECK:      call void @_ZN5test11BC1Ev(
-    // CHECK-NEXT: call void @_ZN5test11CC1ERKNS_1BE(
-    // CHECK-NEXT: call void @_ZN5test11BD1Ev(
-    // CHECK:      call void @_ZN5test11AC1Ev(
-    D() : c(), a() {}
-  };
-
-  D d;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-arguments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-arguments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-arguments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// PR5484
-namespace PR5484 {
-struct A { };
-extern A a;
-
-void f(const A & = a);
-
-void g() {
-  f();
-}
-}
-
-struct A1 {
- A1();
- ~A1();
-};
-
-struct A2 {
- A2();
- ~A2();
-};
-
-struct B {
- B(const A1& = A1(), const A2& = A2());
-};
-
-// CHECK: define void @_Z2f1v()
-void f1() {
-
- // CHECK: call void @_ZN2A1C1Ev(
- // CHECK: call void @_ZN2A2C1Ev(
- // CHECK: call void @_ZN1BC1ERK2A1RK2A2(
- // CHECK: call void @_ZN2A2D1Ev
- // CHECK: call void @_ZN2A1D1Ev
- B bs[2];
-}
-
-struct C {
- B bs[2];
- C();
-};
-
-// CHECK: define void @_ZN1CC1Ev(%struct.C* %this) unnamed_addr
-// CHECK: call void @_ZN1CC2Ev(
-
-// CHECK: define void @_ZN1CC2Ev(%struct.C* %this) unnamed_addr
-// CHECK: call void @_ZN2A1C1Ev(
-// CHECK: call void @_ZN2A2C1Ev(
-// CHECK: call void @_ZN1BC1ERK2A1RK2A2(
-// CHECK: call void @_ZN2A2D1Ev
-// CHECK: call void @_ZN2A1D1Ev
-C::C() { }
-
-// CHECK: define void @_Z2f3v()
-void f3() {
- // CHECK: call void @_ZN2A1C1Ev(
- // CHECK: call void @_ZN2A2C1Ev(
- // CHECK: call void @_ZN1BC1ERK2A1RK2A2(
- // CHECK: call void @_ZN2A2D1Ev
- // CHECK: call void @_ZN2A1D1Ev
- B *bs = new B[2];
- delete bs;
-}
-
-void f4() {
-  void g4(int a, int b = 7);
-  {
-    void g4(int a, int b = 5);
-  }
-  void g4(int a = 5, int b);
-
-  // CHECK: call void @_Z2g4ii(i32 5, i32 7)
-  g4();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-default-argument.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-default-argument.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-default-argument.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// Check that call to constructor for struct A is generated correctly.
-struct A { A(int x = 2); };
-struct B : public A {};
-B x;
-
-// CHECK: call {{.*}} @_ZN1AC2Ei

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-for-members.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-for-members.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-for-members.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
-extern "C" int printf(...);
-
-struct S {
-  S() { printf("S::S()\n"); }
-  int iS;
-};
-
-struct M {
-  S ARR_S; 
-};
-
-int main() {
-  M m1;
-}
-
-// CHECK-LP64: callq __ZN1SC1Ev
-
-// CHECK-LP32: calll L__ZN1SC1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-template-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-template-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-constructor-template-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-template <class T> struct A { A(); };
-struct B { A<int> x; };
-void a() {   
-  B b;
-}
-// CHECK: call {{.*}} @_ZN1BC1Ev
-// CHECK: define linkonce_odr {{.*}} @_ZN1BC1Ev(%struct.B* %this) unnamed_addr
-// CHECK: call {{.*}} @_ZN1AIiEC1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-destructor-nested.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-destructor-nested.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-destructor-nested.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-// PR6294
-
-class A {
-public: virtual ~A();
-};
-class B {
-  class C;
-};
-class B::C : public A {
-  C();
-};
-B::C::C() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-destructor-synthesis.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-destructor-synthesis.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/default-destructor-synthesis.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O2 -o - | FileCheck %s
-static int count = 0;
-
-struct S {
-  S() { count++; }
-  ~S() { count--; }
-};
-
-struct P {
-  P() { count++; }
-  ~P() { count--; }
-};
-
-struct Q {
-  Q() { count++; }
-  ~Q() { count--; }
-};
-
-struct M : Q, P {
-  S s;
-  Q q;
-  P p;
-  P p_arr[3];
-  Q q_arr[2][3];
-};
-  
-// CHECK: define i32 @_Z1fv() [[NUW:#[0-9]+]]
-int f() {
-  {
-    count = 1;
-    M a;
-  }
-
-  // CHECK: ret i32 1
-  return count;
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/deferred-global-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/deferred-global-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/deferred-global-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// PR5967
-
-extern void* foo;
-static void* const a = foo;
-void* bar() { return a; }
-
-// CHECK: @_ZL1a = internal global i8* null
-
-// CHECK: define internal void @__cxx_global_var_init
-// CHECK: load i8** @foo
-// CHECK: ret void
-
-// CHECK: define internal void @_GLOBAL__I_a
-// CHECK: call void @__cxx_global_var_init()
-// CHECK: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/delete-two-arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/delete-two-arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/delete-two-arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,70 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu %s -o - -emit-llvm -verify | FileCheck %s
-
-typedef __typeof(sizeof(int)) size_t;
-
-namespace test1 {
-  struct A { void operator delete(void*,size_t); int x; };
-
-  // CHECK: define void @_ZN5test11aEPNS_1AE(
-  void a(A *x) {
-    // CHECK:      load
-    // CHECK-NEXT: icmp eq {{.*}}, null
-    // CHECK-NEXT: br i1
-    // CHECK:      call void @_ZN5test11AdlEPvj(i8* %{{.*}}, i32 4)
-    delete x;
-  }
-}
-
-// Check that we make cookies for the two-arg delete even when using
-// the global allocator and deallocator.
-namespace test2 {
-  struct A {
-    int x;
-    void *operator new[](size_t);
-    void operator delete[](void *, size_t);
-  };
-
-  // CHECK: define [[A:%.*]]* @_ZN5test24testEv()
-  A *test() {
-    // CHECK:      [[NEW:%.*]] = call noalias i8* @_Znaj(i32 44)
-    // CHECK-NEXT: [[T0:%.*]] = bitcast i8* [[NEW]] to i32*
-    // CHECK-NEXT: store i32 10, i32* [[T0]]
-    // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8* [[NEW]], i64 4
-    // CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[A]]*
-    // CHECK-NEXT: ret [[A]]* [[T2]]
-    return ::new A[10];
-  }
-
-  // CHECK: define void @_ZN5test24testEPNS_1AE(
-  void test(A *p) {
-    // CHECK:      [[P:%.*]] = alloca [[A]]*, align 4
-    // CHECK-NEXT: store [[A]]* {{%.*}}, [[A]]** [[P]], align 4
-    // CHECK-NEXT: [[T0:%.*]] = load [[A]]** [[P]], align 4
-    // CHECK-NEXT: [[T1:%.*]] = icmp eq [[A]]* [[T0]], null
-    // CHECK-NEXT: br i1 [[T1]],
-    // CHECK:      [[T2:%.*]] = bitcast [[A]]* [[T0]] to i8*
-    // CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 -4
-    // CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i32*
-    // CHECK-NEXT: [[T5:%.*]] = load i32* [[T4]]
-    // CHECK-NEXT: call void @_ZdaPv(i8* [[T3]])
-    // CHECK-NEXT: br label
-    ::delete[] p;
-  }
-}
-
-// rdar://problem/8913519
-namespace test3 {
-  struct A {
-    int x;
-    void operator delete[](void *, size_t);
-  };  
-  struct B : A {};
-
-  // CHECK: define void @_ZN5test34testEv()
-  void test() {
-    // CHECK:      call noalias i8* @_Znaj(i32 24)
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: store i32 5
-    (void) new B[5];
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/delete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/delete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/delete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,148 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 %s -emit-llvm -o - | FileCheck %s
-
-void t1(int *a) {
-  delete a;
-}
-
-struct S {
-  int a;
-};
-
-// POD types.
-void t3(S *s) {
-  delete s;
-}
-
-// Non-POD
-struct T {
-  ~T();
-  int a;
-};
-
-// CHECK: define void @_Z2t4P1T
-void t4(T *t) {
-  // CHECK: call void @_ZN1TD1Ev
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: call void @_ZdlPv
-  delete t;
-}
-
-// PR5102
-template <typename T>
-class A {
-  public: operator T *() const;
-};
-
-void f() {
-  A<char*> a;
-  
-  delete a;
-}
-
-namespace test0 {
-  struct A {
-    void *operator new(__SIZE_TYPE__ sz);
-    void operator delete(void *p) { ::operator delete(p); }
-    ~A() {}
-  };
-
-  // CHECK: define void @_ZN5test04testEPNS_1AE(
-  void test(A *a) {
-    // CHECK: call void @_ZN5test01AD1Ev
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: call void @_ZN5test01AdlEPv
-    delete a;
-  }
-
-  // CHECK: define linkonce_odr void @_ZN5test01AD1Ev(%"struct.test0::A"* %this) unnamed_addr
-  // CHECK: define linkonce_odr void @_ZN5test01AdlEPv
-}
-
-namespace test1 {
-  struct A {
-    int x;
-    ~A();
-  };
-
-  // CHECK: define void @_ZN5test14testEPA10_A20_NS_1AE(
-  void test(A (*arr)[10][20]) {
-    delete [] arr;
-    // CHECK:      icmp eq [10 x [20 x [[A:%.*]]]]* [[PTR:%.*]], null
-    // CHECK-NEXT: br i1
-
-    // CHECK:      [[BEGIN:%.*]] = getelementptr inbounds [10 x [20 x [[A]]]]* [[PTR]], i32 0, i32 0, i32 0
-    // CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]* [[BEGIN]] to i8*
-    // CHECK-NEXT: [[ALLOC:%.*]] = getelementptr inbounds i8* [[T0]], i64 -8
-    // CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[ALLOC]] to i64*
-    // CHECK-NEXT: [[COUNT:%.*]] = load i64* [[T1]]
-    // CHECK:      [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 [[COUNT]]
-    // CHECK-NEXT: [[ISEMPTY:%.*]] = icmp eq [[A]]* [[BEGIN]], [[END]]
-    // CHECK-NEXT: br i1 [[ISEMPTY]],
-    // CHECK:      [[PAST:%.*]] = phi [[A]]* [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]
-    // CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds [[A]]* [[PAST]], i64 -1
-    // CHECK-NEXT: call void @_ZN5test11AD1Ev([[A]]* [[CUR]])
-    // CHECK-NEXT: [[ISDONE:%.*]] = icmp eq [[A]]* [[CUR]], [[BEGIN]]
-    // CHECK-NEXT: br i1 [[ISDONE]]
-    // CHECK:      call void @_ZdaPv(i8* [[ALLOC]])
-  }
-}
-
-namespace test2 {
-  // CHECK: define void @_ZN5test21fEPb
-  void f(bool *b) {
-    // CHECK: call void @_ZdlPv(i8*
-    delete b;
-    // CHECK: call void @_ZdaPv(i8*
-    delete [] b;
-  }
-}
-
-namespace test3 {
-  void f(int a[10][20]) {
-    // CHECK: call void @_ZdaPv(i8*
-    delete a;
-  }
-}
-
-namespace test4 {
-  // PR10341: ::delete with a virtual destructor
-  struct X {
-    virtual ~X();
-    void operator delete (void *);
-  };
-
-  // CHECK: define void @_ZN5test421global_delete_virtualEPNS_1XE
-  void global_delete_virtual(X *xp) {
-    //   Load the offset-to-top from the vtable and apply it.
-    //   This has to be done first because the dtor can mess it up.
-    // CHECK:      [[T0:%.*]] = bitcast [[X:%.*]]* [[XP:%.*]] to i64**
-    // CHECK-NEXT: [[VTABLE:%.*]] = load i64** [[T0]]
-    // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i64* [[VTABLE]], i64 -2
-    // CHECK-NEXT: [[OFFSET:%.*]] = load i64* [[T0]], align 8
-    // CHECK-NEXT: [[T0:%.*]] = bitcast [[X]]* [[XP]] to i8*
-    // CHECK-NEXT: [[ALLOCATED:%.*]] = getelementptr inbounds i8* [[T0]], i64 [[OFFSET]]
-    //   Load the complete-object destructor (not the deleting destructor)
-    //   and call it.
-    // CHECK-NEXT: [[T0:%.*]] = bitcast [[X:%.*]]* [[XP:%.*]] to void ([[X]]*)***
-    // CHECK-NEXT: [[VTABLE:%.*]] = load void ([[X]]*)*** [[T0]]
-    // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds void ([[X]]*)** [[VTABLE]], i64 0
-    // CHECK-NEXT: [[DTOR:%.*]] = load void ([[X]]*)** [[T0]]
-    // CHECK-NEXT: call void [[DTOR]]([[X]]* [[OBJ:%.*]])
-    //   Call the global operator delete.
-    // CHECK-NEXT: call void @_ZdlPv(i8* [[ALLOCATED]]) [[NUW:#[0-9]+]]
-    ::delete xp;
-  }
-}
-
-namespace test5 {
-  struct Incomplete;
-  // CHECK: define void @_ZN5test523array_delete_incompleteEPNS_10IncompleteES1_
-  void array_delete_incomplete(Incomplete *p1, Incomplete *p2) {
-    // CHECK: call void @_ZdlPv
-    delete p1;
-    // CHECK: call void @_ZdaPv
-    delete [] p2;
-  }
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dependent-type-member-pointer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dependent-type-member-pointer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dependent-type-member-pointer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-// expected-no-diagnostics
-// PR7736
-
-template <class scriptmemberptr> int InitMember(scriptmemberptr);
-
-template <class> 
-struct contentmap
-{
-  static void InitDataMap()
-  { InitMember(&contentmap::SizeHolder); }
-  int SizeHolder;
-};
-
-void ReadFrom( )
-{
-  contentmap<int>::InitDataMap();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-base-conv.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-base-conv.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-base-conv.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | FileCheck %s
-
-struct A {
-  A(const A&);
-  A();
-  ~A();
-}; 
-
-struct B : public A {
-  B();
-  B(const B& Other);
-  ~B();
-};
-
-struct C : public B {
-  C();
-  C(const C& Other);
-  ~C();
-}; 
-
-struct X {
-  operator B&();
-  operator C&();
-  X(const X&);
-  X();
-  ~X();
-  B b;
-  C c;
-};
-
-void test0_helper(A);
-void test0(X x) {
-  test0_helper(x);
-  // CHECK:    define void @_Z5test01X(
-  // CHECK:      [[TMP:%.*]] = alloca [[A:%.*]], align
-  // CHECK-NEXT: [[T0:%.*]] = call [[B:%.*]]* @_ZN1XcvR1BEv(
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[B]]* [[T0]] to [[A]]*
-  // CHECK-NEXT: call void @_ZN1AC1ERKS_([[A]]* [[TMP]], [[A]]* [[T1]])
-  // CHECK-NEXT: call void @_Z12test0_helper1A([[A]]* [[TMP]])
-  // CHECK-NEXT: call void @_ZN1AD1Ev([[A]]* [[TMP]])
-  // CHECK-NEXT: ret void
-}
-
-struct Base;
-
-struct Root {
-  operator Base&();
-};
-
-struct Derived;
-
-struct Base : Root {
-  Base(const Base &);
-  Base();
-  operator Derived &();
-};
-
-struct Derived : Base {
-};
-
-void test1_helper(Base);
-void test1(Derived bb) {
-  // CHECK:     define void @_Z5test17Derived(
-  // CHECK-NOT: call {{.*}} @_ZN4BasecvR7DerivedEv(
-  // CHECK:     call void @_ZN4BaseC1ERKS_(
-  // CHECK-NOT: call {{.*}} @_ZN4BasecvR7DerivedEv(
-  // CHECK:     call void @_Z12test1_helper4Base(
-  test1_helper(bb);
-}
-
-// Don't crash after devirtualizing a derived-to-base conversion
-// to an empty base allocated at offset zero.
-// rdar://problem/11993704
-class Test2a {};
-class Test2b final : public virtual Test2a {};
-void test2(Test2b &x) {
-  Test2a &y = x;
-  // CHECK:    define void @_Z5test2R6Test2b(
-  // CHECK:      [[X:%.*]] = alloca [[B:%.*]]*, align 8
-  // CHECK-NEXT: [[Y:%.*]] = alloca [[A:%.*]]*, align 8
-  // CHECK-NEXT: store [[B]]* {{%.*}}, [[B]]** [[X]], align 8
-  // CHECK-NEXT: [[T0:%.*]] = load [[B]]** [[X]], align 8
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[B]]* [[T0]] to [[A]]*
-  // CHECK-NEXT: store [[A]]* [[T1]], [[A]]** [[Y]], align 8
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-base.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-base.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-base.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-struct A { 
-  void f(); 
-  
-  int a;
-};
-
-struct B : A { 
-  double b;
-};
-
-void f() {
-  B b;
-  
-  b.f();
-}
-
-// CHECK: define %struct.B* @_Z1fP1A(%struct.A* %a) [[NUW:#[0-9]+]]
-B *f(A *a) {
-  // CHECK-NOT: br label
-  // CHECK: ret %struct.B*
-  return static_cast<B*>(a);
-}
-
-// PR5965
-namespace PR5965 {
-
-// CHECK: define %struct.A* @_ZN6PR59651fEP1B(%struct.B* %b) [[NUW]]
-A *f(B* b) {
-  // CHECK-NOT: br label
-  // CHECK: ret %struct.A*
-  return b;
-}
-
-}
-
-// Don't crash on a derived-to-base conversion of an r-value
-// aggregate.
-namespace test3 {
-  struct A {};
-  struct B : A {};
-
-  void foo(A a);
-  void test() {
-    foo(B());
-  }
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-virtual-base-class-calls-final.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-virtual-base-class-calls-final.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/derived-to-virtual-base-class-calls-final.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-struct A { int i; };
-struct B { char j; };
-struct C : A, B { int k; };
-
-struct D final : virtual C { 
-  D(); 
-  virtual void f();
-};
-
-// CHECK: define %struct.B* @_Z1fR1D
-B &f(D &d) {
-  // CHECK-NOT: load i8**
-  return d;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-calls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-calls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-calls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-extern "C" int printf(...);
-
-static int val;
-
-struct B {
-  B() : iB(++val) { printf("B()\n"); }
-  int iB;
-  ~B() { printf("~B(%d)\n", iB); --val; }
-};
-
-struct M : B {
-  M() : iM(++val) { printf("M()\n"); }
-  int iM;
-  ~M() { printf("~M(%d)\n", iM); --val; }
-};
-
-struct P {
-  P() : iP(++val) { printf("P()\n"); }
-  int iP;
-  ~P() { printf("~P(%d)\n", iP); --val; }
-};
-
-struct N : M, P {
-  N() { printf("N()\n"); iN = ++val; }
-  ~N() { printf("~N(%d) val = %d\n", iN, --val);  }
-  int iN;
-  M m;
-  P p;
-};
-
-struct O : B { 
-  ~O() { return; } 
-};
-
-int main() {
-  N n1;
-  N n2;
-  O o;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-debug-info.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-debug-info.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-debug-info.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -g -S -emit-llvm %s -o - | FileCheck %s
-
-class A { int a; };
-class B {
-public:
-  B() { a = new A; }
-  ~B() { delete a; }
-private:
-  A *a;
-};
-
-void fn(B b);
-
-int i;
-void foo() {
-  if (i) {
-    B b1;
-    fn (b1);
-  }
-}
-// Check there is a line number entry for line 19 where b1 is destructed.
-// CHECK: i32 19, i32 0, metadata

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-exception-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-exception-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructor-exception-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s -std=c++11
-
-// PR13479: don't crash with -fno-exceptions.
-namespace {
-  struct SchedulePostRATDList {
-    virtual ~SchedulePostRATDList();
-  };
-
-  SchedulePostRATDList::~SchedulePostRATDList() {}
-
-  SchedulePostRATDList Scheduler;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/destructors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,421 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - -mconstructor-aliases -fcxx-exceptions -fexceptions | FileCheck %s
-
-// CHECK: @_ZN5test01AD1Ev = alias {{.*}} @_ZN5test01AD2Ev
-// CHECK: @_ZN5test11MD2Ev = alias {{.*}} @_ZN5test11AD2Ev
-// CHECK: @_ZN5test11ND2Ev = alias {{.*}} @_ZN5test11AD2Ev
-// CHECK: @_ZN5test11OD2Ev = alias {{.*}} @_ZN5test11AD2Ev
-// CHECK: @_ZN5test11SD2Ev = alias bitcast {{.*}} @_ZN5test11AD2Ev
-
-// CHECK: @_ZN5test312_GLOBAL__N_11DD1Ev = alias internal {{.*}} @_ZN5test312_GLOBAL__N_11DD2Ev
-// CHECK: @_ZN5test312_GLOBAL__N_11DD2Ev = alias internal bitcast {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev
-// CHECK: @_ZN5test312_GLOBAL__N_11CD1Ev = alias internal {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev
-
-struct A {
-  int a;
-  
-  ~A();
-};
-
-// Base with non-trivial destructor
-struct B : A {
-  ~B();
-};
-
-B::~B() { }
-
-// Field with non-trivial destructor
-struct C {
-  A a;
-  
-  ~C();
-};
-
-C::~C() { }
-
-namespace PR7526 {
-  extern void foo();
-  struct allocator {
-    ~allocator() throw();
-  };
-
-  struct allocator_derived : allocator { };
-
-  // CHECK: define void @_ZN6PR75269allocatorD2Ev(%"struct.PR7526::allocator"* %this) unnamed_addr
-  // CHECK: call void @__cxa_call_unexpected
-  allocator::~allocator() throw() { foo(); }
-
-  // CHECK: define linkonce_odr void @_ZN6PR752617allocator_derivedD1Ev(%"struct.PR7526::allocator_derived"* %this) unnamed_addr
-  // CHECK-NOT: call void @__cxa_call_unexpected
-  // CHECK:     }
-  void foo() {
-    allocator_derived ad;
-  }
-}
-
-// PR5084
-template<typename T>
-class A1 {
-  ~A1();
-};
-
-template<> A1<char>::~A1();
-
-// PR5529
-namespace PR5529 {
-  struct A {
-    ~A();
-  };
-  
-  A::~A() { }
-  struct B : A {
-    virtual ~B();
-  };
-  
-  B::~B()  {}
-}
-
-// FIXME: there's a known problem in the codegen here where, if one
-// destructor throws, the remaining destructors aren't run.  Fix it,
-// then make this code check for it.
-namespace test0 {
-  void foo();
-  struct VBase { ~VBase(); };
-  struct Base { ~Base(); };
-  struct Member { ~Member(); };
-
-  struct A : Base {
-    Member M;
-    ~A();
-  };
-
-  // The function-try-block won't suppress -mconstructor-aliases here.
-  A::~A() try { } catch (int i) {}
-
-// complete destructor alias tested above
-
-// CHECK: define void @_ZN5test01AD2Ev(%"struct.test0::A"* %this) unnamed_addr
-// CHECK: invoke void @_ZN5test06MemberD1Ev
-// CHECK:   unwind label [[MEM_UNWIND:%[a-zA-Z0-9.]+]]
-// CHECK: invoke void @_ZN5test04BaseD2Ev
-// CHECK:   unwind label [[BASE_UNWIND:%[a-zA-Z0-9.]+]]
-
-  struct B : Base, virtual VBase {
-    Member M;
-    ~B();
-  };
-  B::~B() try { } catch (int i) {}
-  // It will suppress the delegation optimization here, though.
-
-// CHECK: define void @_ZN5test01BD1Ev(%"struct.test0::B"* %this) unnamed_addr
-// CHECK: invoke void @_ZN5test06MemberD1Ev
-// CHECK:   unwind label [[MEM_UNWIND:%[a-zA-Z0-9.]+]]
-// CHECK: invoke void @_ZN5test04BaseD2Ev
-// CHECK:   unwind label [[BASE_UNWIND:%[a-zA-Z0-9.]+]]
-// CHECK: invoke void @_ZN5test05VBaseD2Ev
-// CHECK:   unwind label [[VBASE_UNWIND:%[a-zA-Z0-9.]+]]
-
-// CHECK: define void @_ZN5test01BD2Ev(%"struct.test0::B"* %this, i8** %vtt) unnamed_addr
-// CHECK: invoke void @_ZN5test06MemberD1Ev
-// CHECK:   unwind label [[MEM_UNWIND:%[a-zA-Z0-9.]+]]
-// CHECK: invoke void @_ZN5test04BaseD2Ev
-// CHECK:   unwind label [[BASE_UNWIND:%[a-zA-Z0-9.]+]]
-}
-
-// Test base-class aliasing.
-namespace test1 {
-  struct A { ~A(); char ***m; }; // non-trivial destructor
-  struct B { ~B(); }; // non-trivial destructor
-  struct Empty { }; // trivial destructor, empty
-  struct NonEmpty { int x; }; // trivial destructor, non-empty
-
-  // There must be a definition in this translation unit for the alias
-  // optimization to apply.
-  A::~A() { delete m; }
-
-  struct M : A { ~M(); };
-  M::~M() {} // alias tested above
-
-  struct N : A, Empty { ~N(); };
-  N::~N() {} // alias tested above
-
-  struct O : Empty, A { ~O(); };
-  O::~O() {} // alias tested above
-
-  struct P : NonEmpty, A { ~P(); };
-  P::~P() {} // CHECK: define void @_ZN5test11PD2Ev(%"struct.test1::P"* %this) unnamed_addr
-
-  struct Q : A, B { ~Q(); };
-  Q::~Q() {} // CHECK: define void @_ZN5test11QD2Ev(%"struct.test1::Q"* %this) unnamed_addr
-
-  struct R : A { ~R(); };
-  R::~R() { A a; } // CHECK: define void @_ZN5test11RD2Ev(%"struct.test1::R"* %this) unnamed_addr
-
-  struct S : A { ~S(); int x; };
-  S::~S() {} // alias tested above
-
-  struct T : A { ~T(); B x; };
-  T::~T() {} // CHECK: define void @_ZN5test11TD2Ev(%"struct.test1::T"* %this) unnamed_addr
-
-  // The VTT parameter prevents this.  We could still make this work
-  // for calling conventions that are safe against extra parameters.
-  struct U : A, virtual B { ~U(); };
-  U::~U() {} // CHECK: define void @_ZN5test11UD2Ev(%"struct.test1::U"* %this, i8** %vtt) unnamed_addr
-}
-
-// PR6471
-namespace test2 {
-  struct A { ~A(); char ***m; };
-  struct B : A { ~B(); };
-
-  B::~B() {}
-  // CHECK: define void @_ZN5test21BD2Ev(%"struct.test2::B"* %this) unnamed_addr
-  // CHECK: call void @_ZN5test21AD2Ev
-}
-
-// PR7142
-namespace test3 {
-  struct A { virtual ~A(); };
-  struct B { virtual ~B(); };
-  namespace { // internal linkage => deferred
-    struct C : A, B {}; // ~B() in D requires a this-adjustment thunk
-    struct D : C {};    // D::~D() is an alias to C::~C()
-  }
-
-  void test() {
-    new D; // Force emission of D's vtable
-  }
-
-  // Checked at top of file:
-  // @_ZN5test312_GLOBAL__N_11CD1Ev = alias internal {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev
-
-  // More checks at end of file.
-
-}
-
-namespace test4 {
-  struct A { ~A(); };
-
-  // CHECK: define void @_ZN5test43fooEv()
-  // CHECK: call void @_ZN5test41AD1Ev
-  // CHECK: ret void
-  void foo() {
-    {
-      A a;
-      goto failure;
-    }
-
-  failure:
-    return;
-  }
-
-  // CHECK: define void @_ZN5test43barEi(
-  // CHECK:      [[X:%.*]] = alloca i32
-  // CHECK-NEXT: [[A:%.*]] = alloca
-  // CHECK:      br label
-  // CHECK:      [[TMP:%.*]] = load i32* [[X]]
-  // CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[TMP]], 0
-  // CHECK-NEXT: br i1
-  // CHECK:      call void @_ZN5test41AD1Ev(
-  // CHECK:      br label
-  // CHECK:      [[TMP:%.*]] = load i32* [[X]]
-  // CHECK:      [[TMP2:%.*]] = add nsw i32 [[TMP]], -1
-  // CHECK:      store i32 [[TMP2]], i32* [[X]]
-  // CHECK:      br label
-  // CHECK:      ret void
-  void bar(int x) {
-    for (A a; x; ) {
-      x--;
-    }
-  }
-}
-
-// PR7575
-namespace test5 {
-  struct A { ~A(); };
-
-  // CHECK: define void @_ZN5test53fooEv()
-  // CHECK:      [[ELEMS:%.*]] = alloca [5 x [[A:%.*]]], align
-  // CHECK-NEXT: [[EXN:%.*]] = alloca i8*
-  // CHECK-NEXT: [[SEL:%.*]] = alloca i32
-  // CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [5 x [[A]]]* [[ELEMS]], i32 0, i32 0
-  // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 5
-  // CHECK-NEXT: br label
-  // CHECK:      [[POST:%.*]] = phi [[A]]* [ [[END]], {{%.*}} ], [ [[ELT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[ELT]] = getelementptr inbounds [[A]]* [[POST]], i64 -1
-  // CHECK-NEXT: invoke void @_ZN5test51AD1Ev([[A]]* [[ELT]])
-  // CHECK:      [[T0:%.*]] = icmp eq [[A]]* [[ELT]], [[BEGIN]]
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      ret void
-  // lpad
-  // CHECK:      [[EMPTY:%.*]] = icmp eq [[A]]* [[BEGIN]], [[ELT]]
-  // CHECK-NEXT: br i1 [[EMPTY]]
-  // CHECK:      [[AFTER:%.*]] = phi [[A]]* [ [[ELT]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds [[A]]* [[AFTER]], i64 -1
-  // CHECK-NEXT: invoke void @_ZN5test51AD1Ev([[A]]* [[CUR]])
-  // CHECK:      [[DONE:%.*]] = icmp eq [[A]]* [[CUR]], [[BEGIN]]
-  // CHECK-NEXT: br i1 [[DONE]],
-  void foo() {
-    A elems[5];
-  }
-}
-
-namespace test6 {
-  void opaque();
-
-  struct A { ~A(); };
-  template <unsigned> struct B { B(); ~B(); int _; };
-  struct C : B<0>, B<1>, virtual B<2>, virtual B<3> {
-    A x, y, z;
-
-    C();
-    ~C();
-  };
-
-  C::C() { opaque(); }
-  // CHECK: define void @_ZN5test61CC1Ev(%"struct.test6::C"* %this) unnamed_addr
-  // CHECK:   call void @_ZN5test61BILj2EEC2Ev
-  // CHECK:   invoke void @_ZN5test61BILj3EEC2Ev
-  // CHECK:   invoke void @_ZN5test61BILj0EEC2Ev
-  // CHECK:   invoke void @_ZN5test61BILj1EEC2Ev
-  // CHECK:   invoke void @_ZN5test66opaqueEv
-  // CHECK:   ret void
-  // FIXME: way too much EH cleanup code follows
-
-  C::~C() { opaque(); }
-  // CHECK: define void @_ZN5test61CD1Ev(%"struct.test6::C"* %this) unnamed_addr
-  // CHECK:   invoke void @_ZN5test61CD2Ev
-  // CHECK:   invoke void @_ZN5test61BILj3EED2Ev
-  // CHECK:   call void @_ZN5test61BILj2EED2Ev
-  // CHECK:   ret void
-  // CHECK:   invoke void @_ZN5test61BILj3EED2Ev
-  // CHECK:   invoke void @_ZN5test61BILj2EED2Ev
-
-  // CHECK: define void @_ZN5test61CD2Ev(%"struct.test6::C"* %this, i8** %vtt) unnamed_addr
-  // CHECK:   invoke void @_ZN5test66opaqueEv
-  // CHECK:   invoke void @_ZN5test61AD1Ev
-  // CHECK:   invoke void @_ZN5test61AD1Ev
-  // CHECK:   invoke void @_ZN5test61AD1Ev
-  // CHECK:   invoke void @_ZN5test61BILj1EED2Ev
-  // CHECK:   call void @_ZN5test61BILj0EED2Ev
-  // CHECK:   ret void
-  // CHECK:   invoke void @_ZN5test61AD1Ev
-  // CHECK:   invoke void @_ZN5test61AD1Ev
-  // CHECK:   invoke void @_ZN5test61AD1Ev
-  // CHECK:   invoke void @_ZN5test61BILj1EED2Ev
-  // CHECK:   invoke void @_ZN5test61BILj0EED2Ev
-}
-
-// PR 9197
-namespace test7 {
-  struct D { ~D(); };
-
-  struct A { ~A(); };
-  A::~A() { }
-
-  struct B : public A {
-    ~B();
-    D arr[1];
-  };
-
-  // Verify that this doesn't get emitted as an alias
-  // CHECK: define void @_ZN5test71BD2Ev(
-  // CHECK:   invoke void @_ZN5test71DD1Ev(
-  // CHECK:   call void @_ZN5test71AD2Ev(
-  B::~B() {}
-}
-
-// PR10467
-namespace test8 {
-  struct A { A(); ~A(); };
-
-  void die() __attribute__((noreturn));
-  void test() {
-    A x;
-    while (1) {
-      A y;
-      goto l;
-    }
-  l: die();
-  }
-
-  // CHECK:    define void @_ZN5test84testEv()
-  // CHECK:      [[X:%.*]] = alloca [[A:%.*]], align 1
-  // CHECK-NEXT: [[Y:%.*]] = alloca [[A:%.*]], align 1
-  // CHECK:      call void @_ZN5test81AC1Ev([[A]]* [[X]])
-  // CHECK-NEXT: br label
-  // CHECK:      invoke void @_ZN5test81AC1Ev([[A]]* [[Y]])
-  // CHECK:      invoke void @_ZN5test81AD1Ev([[A]]* [[Y]])
-  // CHECK-NOT:  switch
-  // CHECK:      invoke void @_ZN5test83dieEv()
-  // CHECK:      unreachable
-}
-
-// PR12710
-namespace test9 {
-  struct ArgType {
-    ~ArgType();
-  };
-  template<typename T>
-  void f1(const ArgType& = ArgType());
-  void f2();
-  void bar() {
-    f1<int>();
-    f2();
-  }
-  // CHECK: call void @_ZN5test97ArgTypeD1Ev(%"struct.test9::ArgType"* %
-  // CHECK: call void @_ZN5test92f2Ev()
-}
-
-// Checks from test3:
-
-  // CHECK: define internal void @_ZN5test312_GLOBAL__N_11DD0Ev(%"struct.test3::<anonymous namespace>::D"* %this) unnamed_addr
-  // CHECK: invoke void @_ZN5test312_GLOBAL__N_11DD1Ev(
-  // CHECK: call void @_ZdlPv({{.*}}) [[NUW:#[0-9]+]]
-  // CHECK: ret void
-  // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-NEXT: cleanup
-  // CHECK: call void @_ZdlPv({{.*}}) [[NUW]]
-  // CHECK: resume { i8*, i32 }
-
-  // Checked at top of file:
-  // @_ZN5test312_GLOBAL__N_11DD1Ev = alias internal {{.*}} @_ZN5test312_GLOBAL__N_11DD2Ev
-  // @_ZN5test312_GLOBAL__N_11DD2Ev = alias internal bitcast {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev
-
-  // CHECK: define internal void @_ZThn8_N5test312_GLOBAL__N_11DD1Ev(
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 -8
-  // CHECK: call void @_ZN5test312_GLOBAL__N_11DD1Ev(
-  // CHECK: ret void
-
-  // CHECK: define internal void @_ZThn8_N5test312_GLOBAL__N_11DD0Ev(
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 -8
-  // CHECK: call void @_ZN5test312_GLOBAL__N_11DD0Ev(
-  // CHECK: ret void
-
-  // CHECK: define internal void @_ZN5test312_GLOBAL__N_11CD2Ev(%"struct.test3::<anonymous namespace>::C"* %this) unnamed_addr
-  // CHECK: invoke void @_ZN5test31BD2Ev(
-  // CHECK: call void @_ZN5test31AD2Ev(
-  // CHECK: ret void
-
-  // CHECK: declare void @_ZN5test31BD2Ev(
-  // CHECK: declare void @_ZN5test31AD2Ev(
-
-  // CHECK: define internal void @_ZN5test312_GLOBAL__N_11CD0Ev(%"struct.test3::<anonymous namespace>::C"* %this) unnamed_addr
-  // CHECK: invoke void @_ZN5test312_GLOBAL__N_11CD1Ev(
-  // CHECK: call void @_ZdlPv({{.*}}) [[NUW]]
-  // CHECK: ret void
-  // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-NEXT: cleanup
-  // CHECK: call void @_ZdlPv({{.*}}) [[NUW]]
-  // CHECK: resume { i8*, i32 }
-
-  // CHECK: define internal void @_ZThn8_N5test312_GLOBAL__N_11CD1Ev(
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 -8
-  // CHECK: call void @_ZN5test312_GLOBAL__N_11CD1Ev(
-  // CHECK: ret void
-
-  // CHECK: define internal void @_ZThn8_N5test312_GLOBAL__N_11CD0Ev(
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 -8
-  // CHECK: call void @_ZN5test312_GLOBAL__N_11CD0Ev(
-  // CHECK: ret void
-
-  // CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,187 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -std=c++11 %s -emit-llvm -o - | FileCheck %s
-
-namespace Test1 {
-  struct A {
-    virtual int f() final;
-  };
-
-  // CHECK: define i32 @_ZN5Test11fEPNS_1AE
-  int f(A *a) {
-    // CHECK: call i32 @_ZN5Test11A1fEv
-    return a->f();
-  }
-}
-
-namespace Test2 {
-  struct A final {
-    virtual int f();
-  };
-
-  // CHECK: define i32 @_ZN5Test21fEPNS_1AE
-  int f(A *a) {
-    // CHECK: call i32 @_ZN5Test21A1fEv
-    return a->f();
-  }
-}
-
-namespace Test3 {
-  struct A {
-    virtual int f();
-  };
-
-  struct B final : A { };
-
-  // CHECK: define i32 @_ZN5Test31fEPNS_1BE
-  int f(B *b) {
-    // CHECK: call i32 @_ZN5Test31A1fEv
-    return b->f();
-  }
-
-  // CHECK: define i32 @_ZN5Test31fERNS_1BE
-  int f(B &b) {
-    // CHECK: call i32 @_ZN5Test31A1fEv
-    return b.f();
-  }
-
-  // CHECK: define i32 @_ZN5Test31fEPv
-  int f(void *v) {
-    // CHECK: call i32 @_ZN5Test31A1fEv
-    return static_cast<B*>(v)->f();
-  }
-}
-
-namespace Test4 {
-  struct A {
-    virtual void f();
-  };
-
-  struct B final : A {
-    virtual void f();
-  };
-
-  // CHECK: define void @_ZN5Test41fEPNS_1BE
-  void f(B* d) {
-    // CHECK: call void @_ZN5Test41B1fEv
-    static_cast<A*>(d)->f();
-  }
-}
-
-namespace Test5 {
-  struct A {
-    virtual void f();
-  };
-
-  struct B : A {
-    virtual void f();
-  };
-
-  struct C final : B {
-  };
-
-  // CHECK: define void @_ZN5Test51fEPNS_1CE
-  void f(C* d) {
-    // FIXME: It should be possible to devirtualize this case, but that is
-    // not implemented yet.
-    // CHECK: getelementptr
-    // CHECK-NEXT: %[[FUNC:.*]] = load
-    // CHECK-NEXT: call void %[[FUNC]]
-    static_cast<A*>(d)->f();
-  }
-}
-
-namespace Test6 {
-  struct A {
-    virtual ~A();
-  };
-
-  struct B : public A {
-    virtual ~B();
-  };
-
-  struct C {
-    virtual ~C();
-  };
-
-  struct D final : public C, public B {
-  };
-
-  // CHECK: define void @_ZN5Test61fEPNS_1DE
-  void f(D* d) {
-    // CHECK: call void @_ZN5Test61DD1Ev
-    static_cast<A*>(d)->~A();
-  }
-}
-
-namespace Test7 {
-  struct foo {
-    virtual void g() {}
-  };
-
-  struct bar {
-    virtual int f() { return 0; }
-  };
-
-  struct zed final : public foo, public bar {
-    int z;
-    virtual int f() {return z;}
-  };
-
-  // CHECK: define i32 @_ZN5Test71fEPNS_3zedE
-  int f(zed *z) {
-    // CHECK: alloca
-    // CHECK-NEXT: store
-    // CHECK-NEXT: load
-    // CHECK-NEXT: call i32 @_ZN5Test73zed1fEv
-    // CHECK-NEXT: ret
-    return static_cast<bar*>(z)->f();
-  }
-}
-
-namespace Test8 {
-  struct A { virtual ~A() {} };
-  struct B {
-    int b;
-    virtual int foo() { return b; }
-  };
-  struct C final : A, B {  };
-  // CHECK: define i32 @_ZN5Test84testEPNS_1CE
-  int test(C *c) {
-    // CHECK: %[[THIS:.*]] = phi
-    // CHECK-NEXT: call i32 @_ZN5Test81B3fooEv(%"struct.Test8::B"* %[[THIS]])
-    return static_cast<B*>(c)->foo();
-  }
-}
-
-namespace Test9 {
-  struct A {
-    int a;
-  };
-  struct B {
-    int b;
-  };
-  struct C : public B, public A {
-  };
-  struct RA {
-    virtual A *f() {
-      return 0;
-    }
-  };
-  struct RC final : public RA {
-    virtual C *f() {
-      C *x = new C();
-      x->a = 1;
-      x->b = 2;
-      return x;
-    }
-  };
-  // CHECK: define {{.*}} @_ZN5Test91fEPNS_2RCE
-  A *f(RC *x) {
-    // FIXME: It should be possible to devirtualize this case, but that is
-    // not implemented yet.
-    // CHECK: getelementptr
-    // CHECK-NEXT: %[[FUNC:.*]] = load
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: = call {{.*}} %[[FUNC]]
-    return static_cast<RA*>(x)->f();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// RUN: %clang_cc1 %s -triple armv7-none-eabi -emit-llvm -o - | FileCheck %s
-
-struct A {
-  virtual void f();
-  virtual void f_const() const;
-
-  A h();
-};
-
-A g();
-
-void f(A a, A *ap, A& ar) {
-  // This should not be a virtual function call.
-  
-  // CHECK: call void @_ZN1A1fEv(%struct.A* %a)
-  a.f();
-
-  // CHECK: call void %  
-  ap->f();
-
-  // CHECK: call void %  
-  ar.f();
-  
-  // CHECK: call void @_ZN1A1fEv
-  A().f();
-
-  // CHECK: call void @_ZN1A1fEv
-  g().f();
-  
-  // CHECK: call void @_ZN1A1fEv
-  a.h().f();
-
-  // CHECK: call void @_ZNK1A7f_constEv
-  a.f_const();
-
-  // CHECK: call void @_ZN1A1fEv
-  (a).f();
-}
-
-struct B {
-  virtual void f();
-  ~B();
-  
-  B h();
-};
-
-
-void f() {
-  // CHECK: call void @_ZN1B1fEv
-  B().f();
-  
-  // CHECK: call void @_ZN1B1fEv
-  B().h().f();
-}
-
-namespace test2 {
-  struct foo {
-    virtual void f();
-    virtual ~foo();
-  };
-
-  struct bar : public foo {
-    virtual void f();
-    virtual ~bar();
-  };
-
-  void f(bar *b) {
-    // CHECK: call void @_ZN5test23foo1fEv
-    // CHECK: call %"struct.test2::foo"* @_ZN5test23fooD1Ev
-    b->foo::f();
-    b->foo::~foo();
-  }
-}
-
-namespace test3 {
-  // Test that we don't crash in this case.
-  struct B {
-  };
-  struct D : public B {
-  };
-  void f(D d) {
-    // CHECK: define void @_ZN5test31fENS_1DE
-    d.B::~B();
-  }
-}
-
-namespace test4 {
-  struct Animal {
-    virtual void eat();
-  };
-  struct Fish : Animal {
-    virtual void eat();
-  };
-  struct Wrapper {
-    Fish fish;
-  };
-  extern Wrapper *p;
-  void test() {
-    // CHECK: call void @_ZN5test44Fish3eatEv
-    p->fish.eat();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast-always-null.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast-always-null.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast-always-null.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -I%S %s -triple x86_64-apple-darwin10 -emit-llvm -fcxx-exceptions -fexceptions -std=c++11 -o - | FileCheck %s
-struct A { virtual ~A(); };
-struct B final : A { };
-struct C { virtual ~C(); int c; };
-
-// CHECK: @_Z1fP1B
-C *f(B* b) {
-  // CHECK-NOT: call i8* @__dynamic_cast
-  // CHECK: ret %struct.C* null
-  return dynamic_cast<C*>(b);
-}
-
-// CHECK: @_Z1fR1B
-C &f(B& b) {
-  // CHECK-NOT: call i8* @__dynamic_cast
-  // CHECK: call void @__cxa_bad_cast() [[NR:#[0-9]+]]
-  // CHECK: ret %struct.C* undef
-  return dynamic_cast<C&>(b);
-}
-
-void dont_crash() {
-  (void) dynamic_cast<void*>((A*)0);
-  (void) dynamic_cast<void*>((B*)0);
-}
-
-// CHECK: attributes [[NR]] = { noreturn }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast-hint.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast-hint.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast-hint.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -emit-llvm -o - %s | FileCheck %s
-
-class A { virtual ~A() {} };
-class B { virtual ~B() {} };
-
-class C : A { char x; };
-class D : public A { short y; };
-class E : public A, public B { int z; };
-class F : public virtual A { long long w; };
-class G : virtual A { long long w; };
-
-class H : public E { int a; };
-class I : public F { char b; };
-
-class J : public H { char q; };
-class K : public C, public B { char q; };
-
-class XA : public A { };
-class XB : public A { };
-class XC : public virtual A { };
-class X : public XA, public XB, public XC { };
-
-void test(A *a, B *b) {
-  volatile C *ac = dynamic_cast<C *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64 }* @_ZTI1C to i8*), i64 -2)
-  volatile D *ad = dynamic_cast<D *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i8* }* @_ZTI1D to i8*), i64 0)
-  volatile E *ae = dynamic_cast<E *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64, i8*, i64 }* @_ZTI1E to i8*), i64 0)
-  volatile F *af = dynamic_cast<F *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64 }* @_ZTI1F to i8*), i64 -1)
-  volatile G *ag = dynamic_cast<G *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64 }* @_ZTI1G to i8*), i64 -2)
-  volatile H *ah = dynamic_cast<H *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i8* }* @_ZTI1H to i8*), i64 0)
-  volatile I *ai = dynamic_cast<I *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i8* }* @_ZTI1I to i8*), i64 -1)
-  volatile J *aj = dynamic_cast<J *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i8* }* @_ZTI1J to i8*), i64 0)
-  volatile K *ak = dynamic_cast<K *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64, i8*, i64 }* @_ZTI1K to i8*), i64 -2)
-  volatile X *ax = dynamic_cast<X *>(a);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64, i8*, i64, i8*, i64 }* @_ZTI1X to i8*), i64 -1)
-
-  volatile E *be = dynamic_cast<E *>(b);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1B to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64, i8*, i64 }* @_ZTI1E to i8*), i64 8)
-  volatile G *bg = dynamic_cast<G *>(b);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1B to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64 }* @_ZTI1G to i8*), i64 -2)
-  volatile J *bj = dynamic_cast<J *>(b);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1B to i8*), i8* bitcast ({ i8*, i8*, i8* }* @_ZTI1J to i8*), i64 8)
-  volatile K *bk = dynamic_cast<K *>(b);
-// CHECK: i8* bitcast ({ i8*, i8* }* @_ZTI1B to i8*), i8* bitcast ({ i8*, i8*, i32, i32, i8*, i64, i8*, i64 }* @_ZTI1K to i8*), i64 16)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/dynamic-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -I%S %s -triple x86_64-apple-darwin10 -emit-llvm -fcxx-exceptions -fexceptions -o - | FileCheck %s
-struct A { virtual void f(); };
-struct B : A { };
-
-// CHECK: {{define.*@_Z1fP1A}}
-B fail;
-const B& f(A *a) {
-  try {
-    // CHECK: call i8* @__dynamic_cast
-    // CHECK: br i1
-    // CHECK: invoke void @__cxa_bad_cast() [[NR:#[0-9]+]]
-    dynamic_cast<const B&>(*a);
-  } catch (...) {
-    // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-    // CHECK-NEXT:   catch i8* null
-  }
-  return fail;
-}
-
-// CHECK: declare i8* @__dynamic_cast(i8*, i8*, i8*, i64) [[NUW_RO:#[0-9]+]]
-
-// CHECK: attributes [[NUW_RO]] = { nounwind readonly }
-// CHECK: attributes [[NR]] = { noreturn }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/eh.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/eh.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/eh.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,449 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o %t.ll
-// RUN: FileCheck --input-file=%t.ll %s
-
-struct test1_D {
-  double d;
-} d1;
-
-void test1() {
-  throw d1;
-}
-
-// CHECK:     define void @_Z5test1v()
-// CHECK:       [[EXNOBJ:%.*]] = call i8* @__cxa_allocate_exception(i64 8)
-// CHECK-NEXT:  [[EXN:%.*]] = bitcast i8* [[EXNOBJ]] to [[DSTAR:%[^*]*\*]]
-// CHECK-NEXT:  [[EXN2:%.*]] = bitcast [[DSTAR]] [[EXN]] to i8*
-// CHECK-NEXT:  call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[EXN2]], i8* bitcast ([[DSTAR]] @d1 to i8*), i64 8, i32 8, i1 false)
-// CHECK-NEXT:  call void @__cxa_throw(i8* [[EXNOBJ]], i8* bitcast ({ i8*, i8* }* @_ZTI7test1_D to i8*), i8* null) [[NR:#[0-9]+]]
-// CHECK-NEXT:  unreachable
-
-
-struct test2_D {
-  test2_D(const test2_D&o);
-  test2_D();
-  virtual void bar() { }
-  int i; int j;
-} d2;
-
-void test2() {
-  throw d2;
-}
-
-// CHECK:     define void @_Z5test2v()
-// CHECK:       [[EXNVAR:%.*]] = alloca i8*
-// CHECK-NEXT:  [[SELECTORVAR:%.*]] = alloca i32
-// CHECK-NEXT:  [[EXNOBJ:%.*]] = call i8* @__cxa_allocate_exception(i64 16)
-// CHECK-NEXT:  [[EXN:%.*]] = bitcast i8* [[EXNOBJ]] to [[DSTAR:%[^*]*\*]]
-// CHECK-NEXT:  invoke void @_ZN7test2_DC1ERKS_([[DSTAR]] [[EXN]], [[DSTAR]] @d2)
-// CHECK-NEXT:     to label %[[CONT:.*]] unwind label %{{.*}}
-//      :     [[CONT]]:   (can't check this in Release-Asserts builds)
-// CHECK:       call void @__cxa_throw(i8* [[EXNOBJ]], i8* bitcast ({{.*}}* @_ZTI7test2_D to i8*), i8* null) [[NR]]
-// CHECK-NEXT:  unreachable
-
-
-struct test3_D {
-  test3_D() { }
-  test3_D(volatile test3_D&o);
-  virtual void bar();
-};
-
-void test3() {
-  throw (volatile test3_D *)0;
-}
-
-// CHECK:     define void @_Z5test3v()
-// CHECK:       [[EXNOBJ:%.*]] = call i8* @__cxa_allocate_exception(i64 8)
-// CHECK-NEXT:  [[EXN:%.*]] = bitcast i8* [[EXNOBJ]] to [[D:%[^*]+]]**
-// CHECK-NEXT:  store [[D]]* null, [[D]]** [[EXN]]
-// CHECK-NEXT:  call void @__cxa_throw(i8* [[EXNOBJ]], i8* bitcast ({ i8*, i8*, i32, i8* }* @_ZTIPV7test3_D to i8*), i8* null) [[NR]]
-// CHECK-NEXT:  unreachable
-
-
-void test4() {
-  throw;
-}
-
-// CHECK:     define void @_Z5test4v()
-// CHECK:        call void @__cxa_rethrow() [[NR]]
-// CHECK-NEXT:   unreachable
-
-
-// rdar://problem/7696549
-namespace test5 {
-  struct A {
-    A();
-    A(const A&);
-    ~A();
-  };
-
-  void test() {
-    try { throw A(); } catch (A &x) {}
-  }
-// CHECK:      define void @_ZN5test54testEv()
-// CHECK:      [[EXNOBJ:%.*]] = call i8* @__cxa_allocate_exception(i64 1)
-// CHECK:      [[EXNCAST:%.*]] = bitcast i8* [[EXNOBJ]] to [[A:%[^*]*]]*
-// CHECK-NEXT: invoke void @_ZN5test51AC1Ev([[A]]* [[EXNCAST]])
-// CHECK:      invoke void @__cxa_throw(i8* [[EXNOBJ]], i8* bitcast ({{.*}}* @_ZTIN5test51AE to i8*), i8* bitcast (void ([[A]]*)* @_ZN5test51AD1Ev to i8*)) [[NR]]
-// CHECK-NEXT:   to label {{%.*}} unwind label %[[HANDLER:[^ ]*]]
-//      :    [[HANDLER]]:  (can't check this in Release-Asserts builds)
-// CHECK:      {{%.*}} = call i32 @llvm.eh.typeid.for(i8* bitcast ({{.*}}* @_ZTIN5test51AE to i8*))
-}
-
-namespace test6 {
-  template <class T> struct allocator {
-    ~allocator() throw() { }
-  };
-
-  void foo() {
-    allocator<int> a;
-  }
-}
-
-// PR7127
-namespace test7 {
-// CHECK:      define i32 @_ZN5test73fooEv() 
-  int foo() {
-// CHECK:      [[CAUGHTEXNVAR:%.*]] = alloca i8*
-// CHECK-NEXT: [[SELECTORVAR:%.*]] = alloca i32
-// CHECK-NEXT: [[INTCATCHVAR:%.*]] = alloca i32
-    try {
-      try {
-// CHECK-NEXT: [[EXNALLOC:%.*]] = call i8* @__cxa_allocate_exception
-// CHECK-NEXT: bitcast i8* [[EXNALLOC]] to i32*
-// CHECK-NEXT: store i32 1, i32*
-// CHECK-NEXT: invoke void @__cxa_throw(i8* [[EXNALLOC]], i8* bitcast (i8** @_ZTIi to i8*), i8* null
-        throw 1;
-      }
-
-// CHECK:      [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-// CHECK-NEXT:   catch i8* bitcast (i8** @_ZTIi to i8*)
-// CHECK-NEXT:   catch i8* null
-// CHECK-NEXT: [[CAUGHTEXN:%.*]] = extractvalue { i8*, i32 } [[CAUGHTVAL]], 0
-// CHECK-NEXT: store i8* [[CAUGHTEXN]], i8** [[CAUGHTEXNVAR]]
-// CHECK-NEXT: [[SELECTOR:%.*]] = extractvalue { i8*, i32 } [[CAUGHTVAL]], 1
-// CHECK-NEXT: store i32 [[SELECTOR]], i32* [[SELECTORVAR]]
-// CHECK-NEXT: br label
-// CHECK:      [[SELECTOR:%.*]] = load i32* [[SELECTORVAR]]
-// CHECK-NEXT: [[T0:%.*]] = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*))
-// CHECK-NEXT: icmp eq i32 [[SELECTOR]], [[T0]]
-// CHECK-NEXT: br i1
-// CHECK:      [[T0:%.*]] = load i8** [[CAUGHTEXNVAR]]
-// CHECK-NEXT: [[T1:%.*]] = call i8* @__cxa_begin_catch(i8* [[T0]])
-// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to i32*
-// CHECK-NEXT: [[T3:%.*]] = load i32* [[T2]]
-// CHECK-NEXT: store i32 [[T3]], i32* {{%.*}}, align 4
-// CHECK-NEXT: invoke void @__cxa_rethrow
-      catch (int) {
-        throw;
-      }
-    }
-// CHECK:      [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-// CHECK-NEXT:   catch i8* null
-// CHECK-NEXT: [[CAUGHTEXN:%.*]] = extractvalue { i8*, i32 } [[CAUGHTVAL]], 0
-// CHECK-NEXT: store i8* [[CAUGHTEXN]], i8** [[CAUGHTEXNVAR]]
-// CHECK-NEXT: [[SELECTOR:%.*]] = extractvalue { i8*, i32 } [[CAUGHTVAL]], 1
-// CHECK-NEXT: store i32 [[SELECTOR]], i32* [[SELECTORVAR]]
-// CHECK-NEXT: call void @__cxa_end_catch()
-// CHECK-NEXT: br label
-// CHECK:      load i8** [[CAUGHTEXNVAR]]
-// CHECK-NEXT: call i8* @__cxa_begin_catch
-// CHECK-NEXT: call void @__cxa_end_catch
-    catch (...) {
-    }
-// CHECK:      ret i32 0
-    return 0;
-  }
-}
-
-// Ordering of destructors in a catch handler.
-namespace test8 {
-  struct A { A(const A&); ~A(); };
-  void bar();
-
-  // CHECK: define void @_ZN5test83fooEv()
-  void foo() {
-    try {
-      // CHECK:      invoke void @_ZN5test83barEv()
-      bar();
-    } catch (A a) {
-      // CHECK:      call i8* @__cxa_get_exception_ptr
-      // CHECK-NEXT: bitcast
-      // CHECK-NEXT: invoke void @_ZN5test81AC1ERKS0_(
-      // CHECK:      call i8* @__cxa_begin_catch
-      // CHECK-NEXT: call void @_ZN5test81AD1Ev(
-      // CHECK:      call void @__cxa_end_catch()
-      // CHECK:      ret void
-    }
-  }
-}
-
-// Constructor function-try-block must rethrow on fallthrough.
-// rdar://problem/7696603
-namespace test9 {
-  void opaque();
-
-  struct A { A(); };
-
-  // CHECK:      define void @_ZN5test91AC1Ev(%"struct.test9::A"* %this) unnamed_addr
-  // CHECK:      call void @_ZN5test91AC2Ev
-  // CHECK-NEXT: ret void
-
-  // CHECK: define void @_ZN5test91AC2Ev(%"struct.test9::A"* %this) unnamed_addr
-  A::A() try {
-  // CHECK:      invoke void @_ZN5test96opaqueEv()
-    opaque();
-  } catch (int x) {
-  // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-NEXT:   catch i8* bitcast (i8** @_ZTIi to i8*)
-
-  // CHECK:      call i8* @__cxa_begin_catch
-  // CHECK:      invoke void @_ZN5test96opaqueEv()
-  // CHECK:      invoke void @__cxa_rethrow()
-    opaque();
-  }
-}
-
-// __cxa_end_catch can throw for some kinds of caught exceptions.
-namespace test10 {
-  void opaque();
-
-  struct A { ~A(); };
-  struct B { int x; };
-
-  // CHECK: define void @_ZN6test103fooEv()
-  void foo() {
-    A a; // force a cleanup context
-
-    try {
-    // CHECK:      invoke void @_ZN6test106opaqueEv()
-      opaque();
-    } catch (int i) {
-    // CHECK:      call i8* @__cxa_begin_catch
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: load i32*
-    // CHECK-NEXT: store i32
-    // CHECK-NEXT: call void @__cxa_end_catch() [[NUW:#[0-9]+]]
-    } catch (B a) {
-    // CHECK:      call i8* @__cxa_begin_catch
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: call void @llvm.memcpy
-    // CHECK-NEXT: invoke void @__cxa_end_catch()
-    } catch (...) {
-    // CHECK:      call i8* @__cxa_begin_catch
-    // CHECK-NEXT: invoke void @__cxa_end_catch()
-    }
-
-    // CHECK: call void @_ZN6test101AD1Ev(
-  }
-}
-
-// __cxa_begin_catch returns pointers by value, even when catching by reference
-// <rdar://problem/8212123>
-namespace test11 {
-  void opaque();
-
-  // CHECK: define void @_ZN6test113fooEv()
-  void foo() {
-    try {
-      // CHECK:      invoke void @_ZN6test116opaqueEv()
-      opaque();
-    } catch (int**&p) {
-      // CHECK:      [[EXN:%.*]] = load i8**
-      // CHECK-NEXT: call i8* @__cxa_begin_catch(i8* [[EXN]]) [[NUW]]
-      // CHECK-NEXT: [[ADJ1:%.*]] = getelementptr i8* [[EXN]], i32 32
-      // CHECK-NEXT: [[ADJ2:%.*]] = bitcast i8* [[ADJ1]] to i32***
-      // CHECK-NEXT: store i32*** [[ADJ2]], i32**** [[P:%.*]]
-      // CHECK-NEXT: call void @__cxa_end_catch() [[NUW]]
-    }
-  }
-
-  struct A {};
-
-  // CHECK: define void @_ZN6test113barEv()
-  void bar() {
-    try {
-      // CHECK:      [[EXNSLOT:%.*]] = alloca i8*
-      // CHECK-NEXT: [[SELECTORSLOT:%.*]] = alloca i32
-      // CHECK-NEXT: [[P:%.*]] = alloca [[A:%.*]]**,
-      // CHECK-NEXT: [[TMP:%.*]] = alloca [[A]]*
-      // CHECK-NEXT: invoke void @_ZN6test116opaqueEv()
-      opaque();
-    } catch (A*&p) {
-      // CHECK:      [[EXN:%.*]] = load i8** [[EXNSLOT]]
-      // CHECK-NEXT: [[ADJ1:%.*]] = call i8* @__cxa_begin_catch(i8* [[EXN]]) [[NUW]]
-      // CHECK-NEXT: [[ADJ2:%.*]] = bitcast i8* [[ADJ1]] to [[A]]*
-      // CHECK-NEXT: store [[A]]* [[ADJ2]], [[A]]** [[TMP]]
-      // CHECK-NEXT: store [[A]]** [[TMP]], [[A]]*** [[P]]
-      // CHECK-NEXT: call void @__cxa_end_catch() [[NUW]]
-    }
-  }
-}
-
-// PR7686
-namespace test12 {
-  struct A { ~A() noexcept(false); };
-  bool opaque(const A&);
-
-  // CHECK: define void @_ZN6test124testEv()
-  void test() {
-    // CHECK: [[X:%.*]] = alloca [[A:%.*]],
-    // CHECK: [[EHCLEANUPDEST:%.*]] = alloca i32
-    // CHECK: [[Y:%.*]] = alloca [[A]]
-    // CHECK: [[Z:%.*]] = alloca [[A]]
-    // CHECK: [[CLEANUPDEST:%.*]] = alloca i32
-
-    A x;
-    // CHECK: invoke zeroext i1 @_ZN6test126opaqueERKNS_1AE(
-    if (opaque(x)) {
-      A y;
-      A z;
-
-      // CHECK: invoke void @_ZN6test121AD1Ev([[A]]* [[Z]])
-      // CHECK: invoke void @_ZN6test121AD1Ev([[A]]* [[Y]])
-      // CHECK-NOT: switch
-      goto success;
-    }
-
-  success:
-    bool _ = true;
-
-    // CHECK: call void @_ZN6test121AD1Ev([[A]]* [[X]])
-    // CHECK-NEXT: ret void
-  }
-}
-
-// Reduced from some TableGen code that was causing a self-host crash.
-namespace test13 {
-  struct A { ~A(); };
-
-  void test0(int x) {
-    try {
-      switch (x) {
-      case 0:
-        break;
-      case 1:{
-        A a;
-        break;
-      }
-      default:
-        return;
-      }
-      return;
-    } catch (int x) {
-    }
-    return;
-  }
-
-  void test1(int x) {
-    A y;
-    try {
-      switch (x) {
-      default: break;
-      }
-    } catch (int x) {}
-  }
-}
-
-// rdar://problem/8231514
-namespace test14 {
-  struct A { ~A(); };
-  struct B { ~B(); };
-
-  B b();
-  void opaque();
-
-  void foo() {
-    A a;
-    try {
-      B str = b();
-      opaque();
-    } catch (int x) {
-    }
-  }
-}
-
-// rdar://problem/8231514
-// JumpDests shouldn't get confused by scopes that aren't normal cleanups.
-namespace test15 {
-  struct A { ~A(); };
-
-  bool opaque(int);
-
-  // CHECK: define void @_ZN6test153fooEv()
-  void foo() {
-    A a;
-
-    try {
-      // CHECK:      [[X:%.*]] = alloca i32
-      // CHECK:      store i32 10, i32* [[X]]
-      // CHECK-NEXT: br label
-      //   -> while.cond
-      int x = 10;
-
-      while (true) {
-        // CHECK:      load i32* [[X]]
-        // CHECK-NEXT: [[COND:%.*]] = invoke zeroext i1 @_ZN6test156opaqueEi
-        // CHECK:      br i1 [[COND]]
-        if (opaque(x))
-        // CHECK:      br label
-          break;
-
-        // CHECK:      br label
-      }
-      // CHECK:      br label
-    } catch (int x) { }
-
-    // CHECK: call void @_ZN6test151AD1Ev
-  }
-}
-
-namespace test16 {
-  struct A { A(); ~A() noexcept(false); };
-  struct B { int x; B(const A &); ~B() noexcept(false); };
-  void foo();
-  bool cond();
-
-  // CHECK: define void @_ZN6test163barEv()
-  void bar() {
-    // CHECK:      [[EXN_SAVE:%.*]] = alloca i8*
-    // CHECK-NEXT: [[EXN_ACTIVE:%.*]] = alloca i1
-    // CHECK-NEXT: [[TEMP:%.*]] = alloca [[A:%.*]],
-    // CHECK-NEXT: [[EXNSLOT:%.*]] = alloca i8*
-    // CHECK-NEXT: [[SELECTORSLOT:%.*]] = alloca i32
-    // CHECK-NEXT: [[TEMP_ACTIVE:%.*]] = alloca i1
-
-    cond() ? throw B(A()) : foo();
-
-    // CHECK-NEXT: [[COND:%.*]] = call zeroext i1 @_ZN6test164condEv()
-    // CHECK-NEXT: store i1 false, i1* [[EXN_ACTIVE]]
-    // CHECK-NEXT: store i1 false, i1* [[TEMP_ACTIVE]]
-    // CHECK-NEXT: br i1 [[COND]],
-
-    // CHECK:      [[EXN:%.*]] = call i8* @__cxa_allocate_exception(i64 4)
-    // CHECK-NEXT: store i8* [[EXN]], i8** [[EXN_SAVE]]
-    // CHECK-NEXT: store i1 true, i1* [[EXN_ACTIVE]]
-    // CHECK-NEXT: [[T0:%.*]] = bitcast i8* [[EXN]] to [[B:%.*]]*
-    // CHECK-NEXT: invoke void @_ZN6test161AC1Ev([[A]]* [[TEMP]])
-    // CHECK:      store i1 true, i1* [[TEMP_ACTIVE]]
-    // CHECK-NEXT: invoke void @_ZN6test161BC1ERKNS_1AE([[B]]* [[T0]], [[A]]* [[TEMP]])
-    // CHECK:      store i1 false, i1* [[EXN_ACTIVE]]
-    // CHECK-NEXT: invoke void @__cxa_throw(i8* [[EXN]],
-
-    // CHECK:      invoke void @_ZN6test163fooEv()
-    // CHECK:      br label
-
-    // CHECK:      invoke void @_ZN6test161AD1Ev([[A]]* [[TEMP]])
-    // CHECK:      ret void
-
-    // CHECK:      [[T0:%.*]] = load i1* [[EXN_ACTIVE]]
-    // CHECK-NEXT: br i1 [[T0]]
-    // CHECK:      [[T1:%.*]] = load i8** [[EXN_SAVE]]
-    // CHECK-NEXT: call void @__cxa_free_exception(i8* [[T1]])
-    // CHECK-NEXT: br label
-  }
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }
-// CHECK: attributes [[NR]] = { noreturn }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/elide-call-reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/elide-call-reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/elide-call-reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// PR5695
-
-struct A { A(const A&); ~A(); };
-A& a();
-void b() {
-  A x = a();
-}
-
-// CHECK: call {{.*}} @_ZN1AC1ERKS_
-// CHECK: call {{.*}} @_ZN1AD1Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/empty-classes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/empty-classes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/empty-classes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
-
-struct Empty { };
-
-struct A { 
-  explicit A(unsigned a = 0xffffffff) : a(a) { }
-  
-  unsigned a;
-};
-
-struct B : A, Empty { 
-  B() : A(), Empty() { }
-};
-
-struct C : A, Empty {
-  C() : A(), Empty() { }
-  C(const C& other) : A(0x12345678), Empty(other) { }
-};
-
-struct D : A, Empty {
-  D& operator=(const D& other) {
-    a = 0x87654321;
-    Empty::operator=(other);
-    
-    return *this;
-  }
-};
-
-#define CHECK(x) if (!(x)) return __LINE__
-
-// PR7012
-// CHECK: define i32 @_Z1fv()
-int f() {
-  B b1;
-
-  // Check that A::a is not overwritten by the Empty default constructor.
-  CHECK(b1.a == 0xffffffff);
-  
-  C c1;
-  C c2(c1);
-  
-  // Check that A::a has the value set in the C::C copy constructor.
-  CHECK(c2.a == 0x12345678);
-  
-  D d1, d2;
-  d2 = d1;
-
-  // Check that A::as has the value set in the D copy assignment operator.
-  CHECK(d2.a == 0x87654321);
-  
-  // Success!
-  // CHECK: ret i32 0
-  return 0;
-}
-
-namespace PR8796 {
-  struct FreeCell {
-  };
-  union ThingOrCell {
-    FreeCell t;
-    FreeCell cell;
-  };
-  struct Things {
-    ThingOrCell things;
-  };
-  Things x;
-}
-
-#ifdef HARNESS
-extern "C" void printf(const char *, ...);
-
-int main() {
-  int result = f();
-  
-  if (result == 0)
-    printf("success!\n");
-  else
-    printf("test on line %d failed!\n", result);
-
-  return result;
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/empty-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/empty-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/empty-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-
-union sigval { };
-union sigval Test1;
-
-union NonPODUnion { ~NonPODUnion(); };
-union NonPODUnion Test2;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-// expected-no-diagnostics
-
-enum A { a } __attribute((packed));
-int func(A x) { return x==a; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/eval-recursive-constant.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/eval-recursive-constant.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/eval-recursive-constant.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-
-extern const int a,b;
-const int a=b,b=a;
-int c() { if (a) return 1; return 0; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exception-spec-decay.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exception-spec-decay.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exception-spec-decay.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions %s -triple=i686-unknown-linux -emit-llvm -o - | FileCheck %s
-typedef int Array[10];
-
-void foo() throw (Array) {
-  throw 0;
-  // CHECK: landingpad
-  // CHECK-NEXT: filter {{.*}} @_ZTIPi
-}
-
-struct S {
-  void foo() throw (S[10]) {
-    throw 0;
-  }
-};
-
-template <typename T>
-struct S2 {
-  void foo() throw (T) {
-    throw 0;
-  }
-};
-
-int main() {
-  S s;
-  s.foo();
-  // CHECK: landingpad
-  // CHECK-NEXT: filter {{.*}} @_ZTIP1S
-
-  S2 <int[10]> s2;
-  s2.foo();
-  // CHECK: landingpad
-  // CHECK-NEXT: filter {{.*}} @_ZTIPi
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exceptions-no-rtti.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exceptions-no-rtti.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exceptions-no-rtti.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fno-rtti -fcxx-exceptions -fexceptions %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// CHECK: @_ZTIN5test11AE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTIN5test11BE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTIN5test11CE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTIN5test11DE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTIPN5test11DE = linkonce_odr unnamed_addr constant {{.*}} @_ZTIN5test11DE
-
-// PR6974: this shouldn't crash
-namespace test0 {
-  class err {};
-
-  void f(void) {
-    try {
-    } catch (err &) {
-    }
-  }
-}
-
-namespace test1 {
-  // These classes have key functions defined out-of-line.  Under
-  // normal circumstances, we wouldn't generate RTTI for them; under
-  // -fno-rtti, we generate RTTI only when required by EH.  But
-  // everything gets hidden visibility because we assume that all
-  // users are also compiled under -fno-rtti and therefore will be
-  // emitting RTTI regardless of key function.
-  class A { virtual void foo(); };
-  class B { virtual void foo(); };
-  class C { virtual void foo(); };
-  class D { virtual void foo(); };
-
-  void opaque();
-
-  void test0() {
-    throw A();
-  }
-
-  void test1() throw(B) {
-    opaque();
-  }
-
-  void test2() {
-    try {
-      opaque();
-    } catch (C&) {}
-  }
-
-  void test3(D *ptr) {
-    throw ptr;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,529 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - -fcxx-exceptions -fexceptions | FileCheck %s
-
-typedef typeof(sizeof(0)) size_t;
-
-// This just shouldn't crash.
-namespace test0 {
-  struct allocator {
-    allocator();
-    allocator(const allocator&);
-    ~allocator();
-  };
-
-  void f();
-  void g(bool b, bool c) {
-    if (b) {
-      if (!c)
-        throw allocator();
-
-      return;
-    }
-    f();
-  }
-}
-
-namespace test1 {
-  struct A { A(int); A(int, int); ~A(); void *p; };
-
-  A *a() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test11aEv()
-    // CHECK:      [[NEW:%.*]] = call noalias i8* @_Znwm(i64 8)
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: invoke void @_ZN5test11AC1Ei([[A]]* [[CAST]], i32 5)
-    // CHECK:      ret [[A]]* [[CAST]]
-    // CHECK:      call void @_ZdlPv(i8* [[NEW]])
-    return new A(5);
-  }
-
-  A *b() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test11bEv()
-    // CHECK:      [[NEW:%.*]] = call noalias i8* @_Znwm(i64 8)
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: [[FOO:%.*]] = invoke i32 @_ZN5test13fooEv()
-    // CHECK:      invoke void @_ZN5test11AC1Ei([[A]]* [[CAST]], i32 [[FOO]])
-    // CHECK:      ret [[A]]* [[CAST]]
-    // CHECK:      call void @_ZdlPv(i8* [[NEW]])
-    extern int foo();
-    return new A(foo());
-  }
-
-  struct B { B(); ~B(); operator int(); int x; };
-  B makeB();
-
-  A *c() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test11cEv()
-    // CHECK:      [[ACTIVE:%.*]] = alloca i1
-    // CHECK-NEXT: [[NEW:%.*]] = call noalias i8* @_Znwm(i64 8)
-    // CHECK-NEXT: store i1 true, i1* [[ACTIVE]] 
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: invoke void @_ZN5test11BC1Ev([[B:%.*]]* [[T0:%.*]])
-    // CHECK:      [[T1:%.*]] = getelementptr inbounds [[B]]* [[T0]], i32 0, i32 0
-    // CHECK-NEXT: [[T2:%.*]] = load i32* [[T1]], align 4
-    // CHECK-NEXT: invoke void @_ZN5test11AC1Ei([[A]]* [[CAST]], i32 [[T2]])
-    // CHECK:      store i1 false, i1* [[ACTIVE]]
-    // CHECK-NEXT: invoke void @_ZN5test11BD1Ev([[B]]* [[T0]])
-    // CHECK:      ret [[A]]* [[CAST]]
-    // CHECK:      [[ISACTIVE:%.*]] = load i1* [[ACTIVE]]
-    // CHECK-NEXT: br i1 [[ISACTIVE]]
-    // CHECK:      call void @_ZdlPv(i8* [[NEW]])
-    return new A(B().x);
-  }
-
-  //   rdar://11904428
-  //   Terminate landing pads should call __cxa_begin_catch first.
-  // CHECK:      define linkonce_odr hidden void @__clang_call_terminate(i8*) [[NI_NR_NUW:#[0-9]+]]
-  // CHECK-NEXT:   [[T0:%.*]] = call i8* @__cxa_begin_catch(i8* %0) [[NUW:#[0-9]+]]
-  // CHECK-NEXT:   call void @_ZSt9terminatev() [[NR_NUW:#[0-9]+]]
-  // CHECK-NEXT:   unreachable
-
-  A *d() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test11dEv()
-    // CHECK:      [[ACTIVE:%.*]] = alloca i1
-    // CHECK-NEXT: [[NEW:%.*]] = call noalias i8* @_Znwm(i64 8)
-    // CHECK-NEXT: store i1 true, i1* [[ACTIVE]] 
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: invoke void @_ZN5test11BC1Ev([[B:%.*]]* [[T0:%.*]])
-    // CHECK:      [[T1:%.*]] = invoke i32 @_ZN5test11BcviEv([[B]]* [[T0]])
-    // CHECK:      invoke void @_ZN5test11AC1Ei([[A]]* [[CAST]], i32 [[T1]])
-    // CHECK:      store i1 false, i1* [[ACTIVE]]
-    // CHECK-NEXT: invoke void @_ZN5test11BD1Ev([[B]]* [[T0]])
-    // CHECK:      ret [[A]]* [[CAST]]
-    // CHECK:      [[ISACTIVE:%.*]] = load i1* [[ACTIVE]]
-    // CHECK-NEXT: br i1 [[ISACTIVE]]
-    // CHECK:      call void @_ZdlPv(i8* [[NEW]])
-    return new A(B());
-  }
-
-  A *e() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test11eEv()
-    // CHECK:      [[ACTIVE:%.*]] = alloca i1
-    // CHECK-NEXT: [[NEW:%.*]] = call noalias i8* @_Znwm(i64 8)
-    // CHECK-NEXT: store i1 true, i1* [[ACTIVE]] 
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: invoke void @_ZN5test11BC1Ev([[B:%.*]]* [[T0:%.*]])
-    // CHECK:      [[T1:%.*]] = invoke i32 @_ZN5test11BcviEv([[B]]* [[T0]])
-    // CHECK:      invoke void @_ZN5test11BC1Ev([[B]]* [[T2:%.*]])
-    // CHECK:      [[T3:%.*]] = invoke i32 @_ZN5test11BcviEv([[B]]* [[T2]])
-    // CHECK:      invoke void @_ZN5test11AC1Eii([[A]]* [[CAST]], i32 [[T1]], i32 [[T3]])
-    // CHECK:      store i1 false, i1* [[ACTIVE]]
-    // CHECK-NEXT: invoke void @_ZN5test11BD1Ev([[B]]* [[T2]])
-    // CHECK:      invoke void @_ZN5test11BD1Ev([[B]]* [[T0]])
-    // CHECK:      ret [[A]]* [[CAST]]
-    // CHECK:      [[ISACTIVE:%.*]] = load i1* [[ACTIVE]]
-    // CHECK-NEXT: br i1 [[ISACTIVE]]
-    // CHECK:      call void @_ZdlPv(i8* [[NEW]])
-    return new A(B(), B());
-  }
-  A *f() {
-    return new A(makeB().x);
-  }
-  A *g() {
-    return new A(makeB());
-  }
-  A *h() {
-    return new A(makeB(), makeB());
-  }
-
-  A *i() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test11iEv()
-    // CHECK:      [[X:%.*]] = alloca [[A]]*, align 8
-    // CHECK:      [[ACTIVE:%.*]] = alloca i1
-    // CHECK:      [[NEW:%.*]] = call noalias i8* @_Znwm(i64 8)
-    // CHECK-NEXT: store i1 true, i1* [[ACTIVE]] 
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: invoke void @_ZN5test15makeBEv([[B:%.*]]* sret [[T0:%.*]])
-    // CHECK:      [[T1:%.*]] = invoke i32 @_ZN5test11BcviEv([[B]]* [[T0]])
-    // CHECK:      invoke void @_ZN5test11AC1Ei([[A]]* [[CAST]], i32 [[T1]])
-    // CHECK:      store i1 false, i1* [[ACTIVE]]
-    // CHECK-NEXT: store [[A]]* [[CAST]], [[A]]** [[X]], align 8
-    // CHECK:      invoke void @_ZN5test15makeBEv([[B:%.*]]* sret [[T2:%.*]])
-    // CHECK:      [[RET:%.*]] = load [[A]]** [[X]], align 8
-    // CHECK:      invoke void @_ZN5test11BD1Ev([[B]]* [[T2]])
-    // CHECK:      invoke void @_ZN5test11BD1Ev([[B]]* [[T0]])
-    // CHECK:      ret [[A]]* [[RET]]
-    // CHECK:      [[ISACTIVE:%.*]] = load i1* [[ACTIVE]]
-    // CHECK-NEXT: br i1 [[ISACTIVE]]
-    // CHECK:      call void @_ZdlPv(i8* [[NEW]])
-    A *x;
-    return (x = new A(makeB()), makeB(), x);
-  }
-}
-
-namespace test2 {
-  struct A {
-    A(int); A(int, int); ~A();
-    void *p;
-    void *operator new(size_t);
-    void operator delete(void*, size_t);
-  };
-
-  A *a() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test21aEv()
-    // CHECK:      [[NEW:%.*]] = call i8* @_ZN5test21AnwEm(i64 8)
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: invoke void @_ZN5test21AC1Ei([[A]]* [[CAST]], i32 5)
-    // CHECK:      ret [[A]]* [[CAST]]
-    // CHECK:      invoke void @_ZN5test21AdlEPvm(i8* [[NEW]], i64 8)
-    // CHECK:      call void @__clang_call_terminate(i8* {{%.*}}) [[NR_NUW]]
-    return new A(5);
-  }
-}
-
-namespace test3 {
-  struct A {
-    A(int); A(int, int); A(const A&); ~A();
-    void *p;
-    void *operator new(size_t, void*, double);
-    void operator delete(void*, void*, double);
-  };
-
-  void *foo();
-  double bar();
-  A makeA(), *makeAPtr();
-
-  A *a() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test31aEv()
-    // CHECK:      [[FOO:%.*]] = call i8* @_ZN5test33fooEv()
-    // CHECK:      [[BAR:%.*]] = call double @_ZN5test33barEv()
-    // CHECK:      [[NEW:%.*]] = call i8* @_ZN5test31AnwEmPvd(i64 8, i8* [[FOO]], double [[BAR]])
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: invoke void @_ZN5test31AC1Ei([[A]]* [[CAST]], i32 5)
-    // CHECK:      ret [[A]]* [[CAST]]
-    // CHECK:      invoke void @_ZN5test31AdlEPvS1_d(i8* [[NEW]], i8* [[FOO]], double [[BAR]])
-    // CHECK:      call void @__clang_call_terminate(i8* {{%.*}}) [[NR_NUW]]
-    return new(foo(),bar()) A(5);
-  }
-
-  // rdar://problem/8439196
-  A *b(bool cond) {
-
-    // CHECK:    define [[A:%.*]]* @_ZN5test31bEb(i1 zeroext
-    // CHECK:      [[SAVED0:%.*]] = alloca i8*
-    // CHECK-NEXT: [[SAVED1:%.*]] = alloca i8*
-    // CHECK-NEXT: [[CLEANUPACTIVE:%.*]] = alloca i1
-
-    // CHECK:      [[COND:%.*]] = trunc i8 {{.*}} to i1
-    // CHECK-NEXT: store i1 false, i1* [[CLEANUPACTIVE]]
-    // CHECK-NEXT: br i1 [[COND]]
-    return (cond ?
-
-    // CHECK:      [[FOO:%.*]] = call i8* @_ZN5test33fooEv()
-    // CHECK-NEXT: [[NEW:%.*]] = call i8* @_ZN5test31AnwEmPvd(i64 8, i8* [[FOO]], double [[CONST:.*]])
-    // CHECK-NEXT: store i8* [[NEW]], i8** [[SAVED0]]
-    // CHECK-NEXT: store i8* [[FOO]], i8** [[SAVED1]]
-    // CHECK-NEXT: store i1 true, i1* [[CLEANUPACTIVE]]
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: invoke void @_ZN5test35makeAEv([[A]]* sret [[CAST]])
-    // CHECK: br label
-    //   -> cond.end
-            new(foo(),10.0) A(makeA()) :
-
-    // CHECK:      [[MAKE:%.*]] = call [[A]]* @_ZN5test38makeAPtrEv()
-    // CHECK:      br label
-    //   -> cond.end
-            makeAPtr());
-
-    // cond.end:
-    // CHECK:      [[RESULT:%.*]] = phi [[A]]* {{.*}}[[CAST]]{{.*}}[[MAKE]]
-    // CHECK:      ret [[A]]* [[RESULT]]
-
-    // in the EH path:
-    // CHECK:      [[ISACTIVE:%.*]] = load i1* [[CLEANUPACTIVE]]
-    // CHECK-NEXT: br i1 [[ISACTIVE]]
-    // CHECK:      [[V0:%.*]] = load i8** [[SAVED0]]
-    // CHECK-NEXT: [[V1:%.*]] = load i8** [[SAVED1]]
-    // CHECK-NEXT: invoke void @_ZN5test31AdlEPvS1_d(i8* [[V0]], i8* [[V1]], double [[CONST]])
-  }
-}
-
-namespace test4 {
-  struct A {
-    A(int); A(int, int); ~A();
-    void *p;
-    void *operator new(size_t, void*, void*);
-    void operator delete(void*, size_t, void*, void*); // not a match
-  };
-
-  A *a() {
-    // CHECK:    define [[A:%.*]]* @_ZN5test41aEv()
-    // CHECK:      [[FOO:%.*]] = call i8* @_ZN5test43fooEv()
-    // CHECK-NEXT: [[BAR:%.*]] = call i8* @_ZN5test43barEv()
-    // CHECK-NEXT: [[NEW:%.*]] = call i8* @_ZN5test41AnwEmPvS1_(i64 8, i8* [[FOO]], i8* [[BAR]])
-    // CHECK-NEXT: [[CAST:%.*]] = bitcast i8* [[NEW]] to [[A]]*
-    // CHECK-NEXT: call void @_ZN5test41AC1Ei([[A]]* [[CAST]], i32 5)
-    // CHECK-NEXT: ret [[A]]* [[CAST]]
-    extern void *foo(), *bar();
-
-    return new(foo(),bar()) A(5);
-  }
-}
-
-// PR7908
-namespace test5 {
-  struct T { T(); ~T(); };
-
-  struct A {
-    A(const A &x, const T &t = T());
-    ~A();
-  };
-
-  void foo();
-
-  // CHECK:    define void @_ZN5test54testEv()
-  // CHECK:      [[EXNSLOT:%.*]] = alloca i8*
-  // CHECK-NEXT: [[SELECTORSLOT:%.*]] = alloca i32
-  // CHECK-NEXT: [[A:%.*]] = alloca [[A_T:%.*]], align 1
-  // CHECK-NEXT: [[T:%.*]] = alloca [[T_T:%.*]], align 1
-  // CHECK-NEXT: invoke void @_ZN5test53fooEv()
-  // CHECK:      [[EXN:%.*]] = load i8** [[EXNSLOT]]
-  // CHECK-NEXT: [[ADJ:%.*]] = call i8* @__cxa_get_exception_ptr(i8* [[EXN]])
-  // CHECK-NEXT: [[SRC:%.*]] = bitcast i8* [[ADJ]] to [[A_T]]*
-  // CHECK-NEXT: invoke void @_ZN5test51TC1Ev([[T_T]]* [[T]])
-  // CHECK:      invoke void @_ZN5test51AC1ERKS0_RKNS_1TE([[A_T]]* [[A]], [[A_T]]* [[SRC]], [[T_T]]* [[T]])
-  // CHECK:      invoke void @_ZN5test51TD1Ev([[T_T]]* [[T]])
-  // CHECK:      call i8* @__cxa_begin_catch(i8* [[EXN]]) [[NUW]]
-  // CHECK-NEXT: invoke void @_ZN5test51AD1Ev([[A_T]]* [[A]])
-  // CHECK:      call void @__cxa_end_catch()
-  void test() {
-    try {
-      foo();
-    } catch (A a) {
-    }
-  }
-}
-
-// PR9303: invalid assert on this
-namespace test6 {
-  bool cond();
-  void test() {
-    try {
-    lbl:
-      if (cond()) goto lbl;
-    } catch (...) {
-    }
-  }
-}
-
-// PR9298
-namespace test7 {
-  struct A { A(); ~A(); };
-  struct B {
-    // The throw() operator means that a bad allocation is signalled
-    // with a null return, which means that the initializer is
-    // evaluated conditionally.
-    static void *operator new(size_t size) throw();
-    B(const A&, B*);
-    ~B();
-  };
-
-  B *test() {
-    // CHECK: define [[B:%.*]]* @_ZN5test74testEv()
-    // CHECK:      [[OUTER_NEW:%.*]] = alloca i1
-    // CHECK-NEXT: alloca [[A:%.*]],
-    // CHECK-NEXT: alloca i8*
-    // CHECK-NEXT: alloca i32
-    // CHECK-NEXT: [[OUTER_A:%.*]] = alloca i1
-    // CHECK-NEXT: alloca i8*
-    // CHECK-NEXT: [[INNER_NEW:%.*]] = alloca i1
-    // CHECK-NEXT: alloca [[A]]
-    // CHECK-NEXT: [[INNER_A:%.*]] = alloca i1
-
-    // Allocate the outer object.
-    // CHECK-NEXT: [[NEW:%.*]] = call i8* @_ZN5test71BnwEm(
-    // CHECK-NEXT: icmp eq i8* [[NEW]], null
-
-    // These stores, emitted before the outermost conditional branch,
-    // deactivate the temporary cleanups.
-    // CHECK-NEXT: store i1 false, i1* [[OUTER_NEW]]
-    // CHECK-NEXT: store i1 false, i1* [[OUTER_A]]
-    // CHECK-NEXT: store i1 false, i1* [[INNER_NEW]]
-    // CHECK-NEXT: store i1 false, i1* [[INNER_A]]
-    // CHECK-NEXT: br i1
-
-    // We passed the first null check; activate that cleanup and continue.
-    // CHECK:      store i1 true, i1* [[OUTER_NEW]]
-    // CHECK-NEXT: bitcast
-
-    // Create the first A temporary and activate that cleanup.
-    // CHECK-NEXT: invoke void @_ZN5test71AC1Ev(
-    // CHECK:      store i1 true, i1* [[OUTER_A]]
-
-    // Allocate the inner object.
-    // CHECK-NEXT: [[NEW:%.*]] = call i8* @_ZN5test71BnwEm(
-    // CHECK-NEXT: icmp eq i8* [[NEW]], null
-    // CHECK-NEXT: br i1
-
-    // We passed the second null check; save that pointer, activate
-    // that cleanup, and continue.
-    // CHECK:      store i8* [[NEW]]
-    // CHECK-NEXT: store i1 true, i1* [[INNER_NEW]]
-    // CHECK-NEXT: bitcast
-
-    // Build the second A temporary and activate that cleanup.
-    // CHECK-NEXT: invoke void @_ZN5test71AC1Ev(
-    // CHECK:      store i1 true, i1* [[INNER_A]]
-
-    // Build the inner B object and deactivate the inner delete cleanup.
-    // CHECK-NEXT: invoke void @_ZN5test71BC1ERKNS_1AEPS0_(
-    // CHECK:      store i1 false, i1* [[INNER_NEW]]
-    // CHECK:      phi
-
-    // Build the outer B object and deactivate the outer delete cleanup.
-    // CHECK-NEXT: invoke void @_ZN5test71BC1ERKNS_1AEPS0_(
-    // CHECK:      store i1 false, i1* [[OUTER_NEW]]
-    // CHECK:      phi
-    // CHECK-NEXT: store [[B]]*
-
-    // Destroy the inner A object.
-    // CHECK-NEXT: load i1* [[INNER_A]]
-    // CHECK-NEXT: br i1
-    // CHECK:      invoke void @_ZN5test71AD1Ev(
-
-    // Destroy the outer A object.
-    // CHECK:      load i1* [[OUTER_A]]
-    // CHECK-NEXT: br i1
-    // CHECK:      invoke void @_ZN5test71AD1Ev(
-
-    return new B(A(), new B(A(), 0));
-  }
-}
-
-// Just don't crash.
-namespace test8 {
-  struct A {
-    // Having both of these is required to trigger the assert we're
-    // trying to avoid.
-    A(const A&);
-    A&operator=(const A&);
-
-    ~A();
-  };
-
-  A makeA();
-  void test() {
-    throw makeA();
-  }
-  // CHECK: define void @_ZN5test84testEv
-}
-
-// Make sure we generate the correct code for the delete[] call which
-// happens if A::A() throws.  (We were previously calling delete[] on
-// a pointer to the first array element, not the pointer returned by new[].)
-// PR10870
-namespace test9 {
-  struct A {
-    A();
-    ~A();
-  };
-  A* test() {
-    return new A[10];
-  }
-  // CHECK: define {{%.*}}* @_ZN5test94testEv
-  // CHECK: [[TEST9_NEW:%.*]] = call noalias i8* @_Znam
-  // CHECK: call void @_ZdaPv(i8* [[TEST9_NEW]])
-}
-
-// In a destructor with a function-try-block, a return statement in a
-// catch handler behaves differently from running off the end of the
-// catch handler.  PR13102.
-namespace test10 {
-  extern void cleanup();
-  extern bool suppress;
-
-  struct A { ~A(); };
-  A::~A() try { cleanup(); } catch (...) { return; }
-  // CHECK:    define void @_ZN6test101AD1Ev(
-  // CHECK:      invoke void @_ZN6test107cleanupEv()
-  // CHECK-NOT:  rethrow
-  // CHECK:      ret void
-
-  struct B { ~B(); };
-  B::~B() try { cleanup(); } catch (...) {}
-  // CHECK:    define void @_ZN6test101BD1Ev(
-  // CHECK:      invoke void @_ZN6test107cleanupEv()
-  // CHECK:      call i8* @__cxa_begin_catch
-  // CHECK-NEXT: invoke void @__cxa_rethrow()
-  // CHECK:      unreachable
-
-  struct C { ~C(); };
-  C::~C() try { cleanup(); } catch (...) { if (suppress) return; }
-  // CHECK:    define void @_ZN6test101CD1Ev(
-  // CHECK:      invoke void @_ZN6test107cleanupEv()
-  // CHECK:      call i8* @__cxa_begin_catch
-  // CHECK-NEXT: load i8* @_ZN6test108suppressE, align 1
-  // CHECK-NEXT: trunc
-  // CHECK-NEXT: br i1
-  // CHECK:      call void @__cxa_end_catch()
-  // CHECK-NEXT: br label
-  // CHECK:      invoke void @__cxa_rethrow()
-  // CHECK:      unreachable
-}
-
-// Ensure that an exception in a constructor destroys
-// already-constructed array members.  PR14514
-namespace test11 {
-  struct A {
-    A();
-    ~A() {}
-  };
-
-  struct C {
-    A single;
-    A array[2][3];
-
-    C();
-  };
-
-  C::C() {
-    throw 0;
-  }
-  // CHECK:    define void @_ZN6test111CC2Ev(
-  // CHECK:      [[THIS:%.*]] = load [[C:%.*]]** {{%.*}}
-  //   Construct single.
-  // CHECK-NEXT: [[SINGLE:%.*]] = getelementptr inbounds [[C]]* [[THIS]], i32 0, i32 0
-  // CHECK-NEXT: call void @_ZN6test111AC1Ev([[A:%.*]]* [[SINGLE]])
-  //   Construct array.
-  // CHECK-NEXT: [[ARRAY:%.*]] = getelementptr inbounds [[C]]* [[THIS]], i32 0, i32 1
-  // CHECK-NEXT: [[ARRAYBEGIN:%.*]] = getelementptr inbounds [2 x [3 x [[A]]]]* [[ARRAY]], i32 0, i32 0, i32 0
-  // CHECK-NEXT: [[ARRAYEND:%.*]] = getelementptr inbounds [[A]]* [[ARRAYBEGIN]], i64 6
-  // CHECK-NEXT: br label
-  // CHECK:      [[CUR:%.*]] = phi [[A]]* [ [[ARRAYBEGIN]], {{%.*}} ], [ [[NEXT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: invoke void @_ZN6test111AC1Ev([[A:%.*]]* [[CUR]])
-  // CHECK:      [[NEXT]] = getelementptr inbounds [[A]]* [[CUR]], i64 1
-  // CHECK-NEXT: [[DONE:%.*]] = icmp eq [[A]]* [[NEXT]], [[ARRAYEND]]
-  // CHECK-NEXT: br i1 [[DONE]],
-  //   throw 0;
-  // CHECK:      invoke void @__cxa_throw(
-  //   Landing pad 1, from constructor in array-initialization loop:
-  // CHECK:      landingpad
-  //     - First, destroy already-constructed bits of array.
-  // CHECK:      [[EMPTY:%.*]] = icmp eq [[A]]* [[ARRAYBEGIN]], [[CUR]]
-  // CHECK-NEXT: br i1 [[EMPTY]]
-  // CHECK:      [[AFTER:%.*]] = phi [[A]]* [ [[CUR]], {{%.*}} ], [ [[ELT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[ELT]] = getelementptr inbounds [[A]]* [[AFTER]], i64 -1
-  // CHECK-NEXT: invoke void @_ZN6test111AD1Ev([[A]]* [[ELT]])
-  // CHECK:      [[DONE:%.*]] = icmp eq [[A]]* [[ELT]], [[ARRAYBEGIN]]
-  // CHECK-NEXT: br i1 [[DONE]],
-  //     - Next, chain to cleanup for single.
-  // CHECK:      br label
-  //   Landing pad 2, from throw site.
-  // CHECK:      landingpad
-  //     - First, destroy all of array.
-  // CHECK:      [[ARRAYBEGIN:%.*]] = getelementptr inbounds [2 x [3 x [[A]]]]* [[ARRAY]], i32 0, i32 0, i32 0
-  // CHECK-NEXT: [[ARRAYEND:%.*]] = getelementptr inbounds [[A]]* [[ARRAYBEGIN]], i64 6
-  // CHECK-NEXT: br label
-  // CHECK:      [[AFTER:%.*]] = phi [[A]]* [ [[ARRAYEND]], {{%.*}} ], [ [[ELT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[ELT]] = getelementptr inbounds [[A]]* [[AFTER]], i64 -1
-  // CHECK-NEXT: invoke void @_ZN6test111AD1Ev([[A]]* [[ELT]])
-  // CHECK:      [[DONE:%.*]] = icmp eq [[A]]* [[ELT]], [[ARRAYBEGIN]]
-  // CHECK-NEXT: br i1 [[DONE]],
-  //     - Next, chain to cleanup for single.
-  // CHECK:      br label
-  //   Finally, the cleanup for single.
-  // CHECK:      invoke void @_ZN6test111AD1Ev([[A]]* [[SINGLE]])
-  // CHECK:      br label
-  // CHECK:      resume
-  //   (After this is a terminate landingpad.)
-}
-
-// CHECK: attributes [[NI_NR_NUW]] = { noinline noreturn nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/explicit-instantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/explicit-instantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/explicit-instantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i686-pc-linux-gnu -o - %s | FileCheck %s
-
-// This check logically is attached to 'template int S<int>::i;' below.
-// CHECK: @_ZN1SIiE1iE = weak_odr global i32
-
-template<typename T, typename U, typename Result>
-struct plus {
-  Result operator()(const T& t, const U& u) const;
-};
-
-template<typename T, typename U, typename Result>
-Result plus<T, U, Result>::operator()(const T& t, const U& u) const {
-  return t + u;
-}
-
-// CHECK: define weak_odr i32 @_ZNK4plusIillEclERKiRKl
-template struct plus<int, long, long>;
-
-// Check that we emit definitions from explicit instantiations even when they
-// occur prior to the definition itself.
-template <typename T> struct S {
-  void f();
-  static void g();
-  static int i;
-  struct S2 {
-    void h();
-  };
-};
-
-// CHECK: define weak_odr void @_ZN1SIiE1fEv
-template void S<int>::f();
-
-// CHECK: define weak_odr void @_ZN1SIiE1gEv
-template void S<int>::g();
-
-// See the check line at the top of the file.
-template int S<int>::i;
-
-// CHECK: define weak_odr void @_ZN1SIiE2S21hEv
-template void S<int>::S2::h();
-
-template <typename T> void S<T>::f() {}
-template <typename T> void S<T>::g() {}
-template <typename T> int S<T>::i;
-template <typename T> void S<T>::S2::h() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -x c++ < %s
-
-void test0(int x) {
-          if (x != 0) return;
-}
-
-
-// PR5211
-void test1() {
-  char *xpto;
-  while ( true && xpto[0] );
-}
-
-// PR5514
-int a;
-void test2() { ++a+=10; }
-
-// PR7892
-int test3(const char*);
-int test3g = test3(__PRETTY_FUNCTION__);
-
-
-// PR7889
-struct test4A {
-  int j : 2;
-};
-int test4() {
-  test4A a;
-  (a.j = 2) = 3;
-}
-
-// Incomplete type in conditional operator.
-// Check operations on incomplete types.
-struct s5;
-struct s5 &f5_0(bool cond, struct s5 &a, struct s5 &b) {
-  return cond ? a : b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/extern-c.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/extern-c.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/extern-c.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-namespace foo {
-
-// CHECK-NOT: @a = global i32
-extern "C" int a;
-
-// CHECK-NOT: @_ZN3foo1bE = global i32
-extern int b;
-
-// CHECK: @_ZN3foo1cE = global i32
-int c = 5;
-
-// CHECK-NOT: @_ZN3foo1dE
-extern "C" struct d;
-
-}
-
-namespace test1 {
-  namespace {
-    struct X {};
-  }
-  extern "C" {
-    // CHECK: @test1_b = global
-    X test1_b = X();
-  }
-  void *use = &test1_b;
-  // CHECK: @_ZN5test13useE = global
-}
-
-namespace test2 {
-  namespace {
-    struct X {};
-  }
-
-  // CHECK: @test2_b = global
-  extern "C" X test2_b;
-  X test2_b;
-}
-
-extern "C" {
-  static int unused_var;
-  static int unused_fn() { return 0; }
-
-  __attribute__((used)) static int internal_var;
-  __attribute__((used)) static int internal_fn() { return 0; }
-
-  __attribute__((used)) static int duplicate_internal_var;
-  __attribute__((used)) static int duplicate_internal_fn() { return 0; }
-
-  namespace N {
-    __attribute__((used)) static int duplicate_internal_var;
-    __attribute__((used)) static int duplicate_internal_fn() { return 0; }
-  }
-
-  // CHECK: @llvm.used = appending global {{.*}} @internal_var {{.*}} @internal_fn 
-
-  // CHECK-NOT: @unused
-  // CHECK-NOT: @duplicate_internal
-  // CHECK: @internal_var = alias internal i32* @_Z12internal_var
-  // CHECK-NOT: @unused
-  // CHECK-NOT: @duplicate_internal
-  // CHECK: @internal_fn = alias internal i32 ()* @_Z11internal_fnv
-  // CHECK-NOT: @unused
-  // CHECK-NOT: @duplicate_internal
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fastcall.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fastcall.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fastcall.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-void __attribute__((fastcall)) foo1(int &y);
-void bar1(int &y) {
-  // CHECK: define void @_Z4bar1Ri
-  // CHECK: call x86_fastcallcc void @_Z4foo1Ri(i32* inreg %
-  foo1(y);
-}
-
-struct S1 {
-  int x;
-  S1(const S1 &y);
-};
-
-void __attribute__((fastcall)) foo2(S1 a, int b);
-void bar2(S1 a, int b) {
-  // CHECK: define void @_Z4bar22S1i
-  // CHECK: call x86_fastcallcc void @_Z4foo22S1i(%struct.S1* inreg %{{.*}}, i32 inreg %
-  foo2(a, b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/field-access-debug-info.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/field-access-debug-info.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/field-access-debug-info.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -g -S -masm-verbose -o - %s | FileCheck %s
-
-// CHECK: abbrev_begin:
-// CHECK: DW_AT_accessibility
-// CHECK-NEXT: DW_FORM_data1
-
-class A {
-public:
-  int p;
-private:
-  int pr;
-};
-
-A a;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/for-range-temporaries.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/for-range-temporaries.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/for-range-temporaries.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,146 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - -UDESUGAR %s | opt -instnamer -S | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - -DDESUGAR %s | opt -instnamer -S | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - -UDESUGAR -DTEMPLATE %s | opt -instnamer -S | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - -DDESUGAR -DTEMPLATE %s | opt -instnamer -S | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - -UDESUGAR -DTEMPLATE -DDEPENDENT %s | opt -instnamer -S | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - -DDESUGAR -DTEMPLATE -DDEPENDENT %s | opt -instnamer -S | FileCheck %s
-
-struct A {
-  A();
-  A(const A &);
-  ~A();
-};
-
-struct B {
-  B();
-  B(const B &);
-  ~B();
-};
-
-struct C {
-  C(const B &);
-  C(const C &);
-  ~C();
-};
-
-struct E;
-struct D {
-  D(const C &);
-  D(const D &);
-  ~D();
-};
-E begin(D);
-E end(D);
-
-struct F;
-struct G;
-struct H;
-struct E {
-  E(const E &);
-  ~E();
-  F operator*();
-  G operator++();
-  H operator!=(const E &o);
-};
-
-struct I;
-struct F {
-  F(const F &);
-  ~F();
-  operator I();
-};
-
-struct G {
-  G(const G &);
-  ~G();
-  operator bool();
-};
-
-struct H {
-  H(const H &);
-  ~H();
-  operator bool();
-};
-
-struct I {
-  I(const I &);
-  ~I();
-};
-
-void body(const I &);
-
-#ifdef TEMPLATE
-#ifdef DEPENDENT
-template<typename D>
-#else
-template<typename>
-#endif
-#endif
-void for_temps() {
-  A a;
-#ifdef DESUGAR
-  {
-    auto && __range = D(B());
-    for (auto __begin = begin(__range), __end = end(__range);
-         __begin != __end; ++__begin) {
-      I i = *__begin;
-      body(i);
-    }
-  }
-#else
-  for (I i : D(B())) {
-    body(i);
-  }
-#endif
-}
-
-#ifdef TEMPLATE
-template void for_temps<D>();
-#endif
-
-// CHECK: define {{.*}}for_temps
-// CHECK: call void @_ZN1AC1Ev(
-// CHECK: call void @_ZN1BC1Ev(
-// CHECK: call void @_ZN1CC1ERK1B(
-// CHECK: call void @_ZN1DC1ERK1C(
-// CHECK: call void @_ZN1CD1Ev(
-// CHECK: call void @_ZN1BD1Ev(
-// CHECK: call void @_ZN1DC1ERKS_(
-// CHECK: call void @_Z5begin1D(
-// CHECK: call void @_ZN1DD1Ev(
-// CHECK: call void @_ZN1DC1ERKS_(
-// CHECK: call void @_Z3end1D(
-// CHECK: call void @_ZN1DD1Ev(
-// CHECK: br label %[[COND:.*]]
-
-// CHECK: [[COND]]:
-// CHECK: call void @_ZN1EneERKS_(
-// CHECK: %[[CMP:.*]] = call zeroext i1 @_ZN1HcvbEv(
-// CHECK: call void @_ZN1HD1Ev(
-// CHECK: br i1 %[[CMP]], label %[[BODY:.*]], label %[[CLEANUP:.*]]
-
-// CHECK: [[CLEANUP]]:
-// CHECK: call void @_ZN1ED1Ev(
-// CHECK: call void @_ZN1ED1Ev(
-// In for-range:
-// call void @_ZN1DD1Ev(
-// CHECK: br label %[[END:.*]]
-
-// CHECK: [[BODY]]:
-// CHECK: call void @_ZN1EdeEv(
-// CHECK: call void @_ZN1Fcv1IEv(
-// CHECK: call void @_ZN1FD1Ev(
-// CHECK: call void @_Z4bodyRK1I(
-// CHECK: call void @_ZN1ID1Ev(
-// CHECK: br label %[[INC:.*]]
-
-// CHECK: [[INC]]:
-// CHECK: call void @_ZN1EppEv(
-// CHECK: call void @_ZN1GD1Ev(
-// CHECK: br label %[[COND]]
-
-// CHECK: [[END]]:
-// In desugared version:
-// call void @_ZN1DD1Ev(
-// CHECK: call void @_ZN1AD1Ev(
-// CHECK: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/for-range.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/for-range.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/for-range.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,126 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - %s | opt -instnamer -S | FileCheck %s
-
-struct A {
-  A();
-  A(const A&);
-  ~A();
-};
-
-struct B {
-  B();
-  B(const B&);
-  ~B();
-};
-
-struct C {
-  C();
-  C(const C&);
-  ~C();
-};
-
-struct D {
-  D();
-  D(const D&);
-  ~D();
-
-  B *begin();
-  B *end();
-};
-
-B *begin(C&);
-B *end(C&);
-
-extern B array[5];
-
-// CHECK: define void @_Z9for_arrayv(
-void for_array() {
-  // CHECK: call void @_ZN1AC1Ev(%struct.A* [[A:.*]])
-  A a;
-  for (B b : array) {
-    // CHECK-NOT: 5begin
-    // CHECK-NOT: 3end
-    // CHECK: getelementptr {{.*}}, i32 0
-    // CHECK: getelementptr {{.*}}, i64 1, i64 0
-    // CHECK: br label %[[COND:.*]]
-
-    // CHECK: [[COND]]:
-    // CHECK: %[[CMP:.*]] = icmp ne
-    // CHECK: br i1 %[[CMP]], label %[[BODY:.*]], label %[[END:.*]]
-
-    // CHECK: [[BODY]]:
-    // CHECK: call void @_ZN1BC1ERKS_(
-    // CHECK: call void @_ZN1BD1Ev(
-    // CHECK: br label %[[INC:.*]]
-
-    // CHECK: [[INC]]:
-    // CHECK: getelementptr {{.*}} i32 1
-    // CHECK: br label %[[COND]]
-  }
-  // CHECK: [[END]]:
-  // CHECK: call void @_ZN1AD1Ev(%struct.A* [[A]])
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z9for_rangev(
-void for_range() {
-  // CHECK: call void @_ZN1AC1Ev(%struct.A* [[A:.*]])
-  A a;
-  for (B b : C()) {
-    // CHECK: call void @_ZN1CC1Ev(
-    // CHECK: = call %struct.B* @_Z5beginR1C(
-    // CHECK: = call %struct.B* @_Z3endR1C(
-    // CHECK: br label %[[COND:.*]]
-
-    // CHECK: [[COND]]:
-    // CHECK: %[[CMP:.*]] = icmp ne
-    // CHECK: br i1 %[[CMP]], label %[[BODY:.*]], label %[[CLEANUP:.*]]
-
-    // CHECK: [[CLEANUP]]:
-    // CHECK: call void @_ZN1CD1Ev(
-    // CHECK: br label %[[END:.*]]
-
-    // CHECK: [[BODY]]:
-    // CHECK: call void @_ZN1BC1ERKS_(
-    // CHECK: call void @_ZN1BD1Ev(
-    // CHECK: br label %[[INC:.*]]
-
-    // CHECK: [[INC]]:
-    // CHECK: getelementptr {{.*}} i32 1
-    // CHECK: br label %[[COND]]
-  }
-  // CHECK: [[END]]:
-  // CHECK: call void @_ZN1AD1Ev(%struct.A* [[A]])
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z16for_member_rangev(
-void for_member_range() {
-  // CHECK: call void @_ZN1AC1Ev(%struct.A* [[A:.*]])
-  A a;
-  for (B b : D()) {
-    // CHECK: call void @_ZN1DC1Ev(
-    // CHECK: = call %struct.B* @_ZN1D5beginEv(
-    // CHECK: = call %struct.B* @_ZN1D3endEv(
-    // CHECK: br label %[[COND:.*]]
-
-    // CHECK: [[COND]]:
-    // CHECK: %[[CMP:.*]] = icmp ne
-    // CHECK: br i1 %[[CMP]], label %[[BODY:.*]], label %[[CLEANUP:.*]]
-
-    // CHECK: [[CLEANUP]]:
-    // CHECK: call void @_ZN1DD1Ev(
-    // CHECK: br label %[[END:.*]]
-
-    // CHECK: [[BODY]]:
-    // CHECK: call void @_ZN1BC1ERKS_(
-    // CHECK: call void @_ZN1BD1Ev(
-    // CHECK: br label %[[INC:.*]]
-
-    // CHECK: [[INC]]:
-    // CHECK: getelementptr {{.*}} i32 1
-    // CHECK: br label %[[COND]]
-  }
-  // CHECK: [[END]]:
-  // CHECK: call void @_ZN1AD1Ev(%struct.A* [[A]])
-  // CHECK: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/forward-enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/forward-enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/forward-enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin11.0.0 -emit-llvm -o - %s | FileCheck %s
-
-enum MyEnum : char;
-void bar(MyEnum value) { }
-
-// CHECK: define void @_Z3foo6MyEnum
-void foo(MyEnum value)
-{
-  // CHECK: call void @_Z3bar6MyEnum(i8 signext
-  bar(value);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fp16-mangle.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fp16-mangle.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fp16-mangle.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi %s | FileCheck %s
-
-// CHECK: @_ZN1SIDhDhE1iE = global i32 3
-template <typename T, typename U> struct S { static int i; };
-template <> int S<__fp16, __fp16>::i = 3;
-
-// CHECK: define void @_Z1fPDh(i16* %x)
-void f (__fp16 *x) { }
-
-// CHECK: define void @_Z1gPDhS_(i16* %x, i16* %y)
-void g (__fp16 *x, __fp16 *y) { }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fp16-overload.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fp16-overload.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/fp16-overload.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -triple arm-none-linux-gnueabi %s | FileCheck %s
-
-extern int foo(float x);
-extern int foo(double x);
-
-__fp16 a;
-
-// CHECK: call i32 @_Z3foof
-// CHECK-NOT: call i32 @_Z3food
-int bar (void) { return foo(a); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/friend-redecl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/friend-redecl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/friend-redecl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm %s -o - | FileCheck %s
-// PR8864
-
-struct Foo {
-  friend bool TryFoo(Foo *f2) { return TryFoo(0, f2); }
-
-// CHECK: define{{.*}}Z6TryFooP3Foo
-// CHECK-NOT: ret
-// CHECK: call{{.*}}Z6TryFooiP3Foo
-// CHECK: ret
-
-  friend bool TryFoo(int, Foo *f3);
-};
-bool TryFoo(Foo *f5);
-int main(void) {
-  Foo f;
-  TryFoo(&f);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/function-template-explicit-specialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/function-template-explicit-specialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/function-template-explicit-specialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-template<typename T> void a(T);
-template<> void a(int) {}
-
-// CHECK: define void @_Z1aIiEvT_
-
-namespace X {
-template<typename T> void b(T);
-template<> void b(int) {}
-}
-
-// CHECK: define void @_ZN1X1bIiEEvT_

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/function-template-specialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/function-template-specialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/function-template-specialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-template<typename T, typename U>
-T* next(T* ptr, const U& diff);
-
-template<typename T, typename U>
-T* next(T* ptr, const U& diff) { 
-  return ptr + diff; 
-}
-
-void test(int *iptr, float *fptr, int diff) {
-  // CHECK: _Z4nextIiiEPT_S1_RKT0_
-  iptr = next(iptr, diff);
-
-  // CHECK: _Z4nextIfiEPT_S1_RKT0_
-  fptr = next(fptr, diff);
-}
-
-template<typename T, typename U>
-T* next(T* ptr, const U& diff);
-
-void test2(int *iptr, double *dptr, int diff) {
-  iptr = next(iptr, diff);
-
-  // CHECK: _Z4nextIdiEPT_S1_RKT0_
-  dptr = next(dptr, diff);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-array-destruction.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-array-destruction.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-array-destruction.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | FileCheck %s
-
-extern "C" int printf(...);
-
-int count;
-
-struct S {
-  S() : iS(++count) { printf("S::S(%d)\n", iS); }
-  ~S() { printf("S::~S(%d)\n", iS); }
-  int iS;
-};
-
-
-S arr[2][1];
-S s1;
-S arr1[3];
-static S sarr[4];
-
-int main () {}
-S arr2[2];
-static S sarr1[4];
-S s2;
-S arr3[3];
-
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: call {{.*}} @__cxa_atexit
-
-struct T {
-  double d;
-  int n;
-  ~T();
-};
-T t[2][3] = { 1.0, 2, 3.0, 4, 5.0, 6, 7.0, 8, 9.0, 10, 11.0, 12 };
-
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: getelementptr inbounds ({{.*}} bitcast {{.*}}* @t to %struct.T*), i64 6
-// CHECK: call void @_ZN1TD1Ev
-// CHECK: icmp eq {{.*}} @t
-// CHECK: br i1 {{.*}}
-
-static T t2[2][3] = { 1.0, 2, 3.0, 4, 5.0, 6, 7.0, 8, 9.0, 10, 11.0, 12 };
-
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: getelementptr inbounds ({{.*}} bitcast {{.*}}* @_ZL2t2 to %struct.T*), i64 6
-// CHECK: call void @_ZN1TD1Ev
-// CHECK: icmp eq {{.*}} @_ZL2t
-// CHECK: br i1 {{.*}}
-
-using U = T[2][3];
-U &&u = U{ {{1.0, 2}, {3.0, 4}, {5.0, 6}}, {{7.0, 8}, {9.0, 10}, {11.0, 12}} };
-
-// CHECK: call {{.*}} @__cxa_atexit
-// CHECK: getelementptr inbounds ([2 x [3 x {{.*}}]]* @_ZGR1u, i64 1, i64 0, i64 0)
-// CHECK: call void @_ZN1TD1Ev
-// CHECK: icmp eq {{.*}} @_ZGR1u
-// CHECK: br i1 {{.*}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-block-literal-helpers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-block-literal-helpers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-block-literal-helpers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -fblocks -o - -triple x86_64-apple-darwin10 %s | FileCheck %s
-// rdar://11343499
-
-namespace N {
-  typedef void (^BL)();
-  int func(BL, BL, BL);
-
-// CHECK: define internal void @_ZN1N8ArrBlockE_block_invoke(
-// CHECK: define internal void @_ZN1N8ArrBlockE_block_invoke_2(
-// CHECK: define internal void @_ZN1N8ArrBlockE_block_invoke_3
-  BL ArrBlock [] = { ^{}, ^{}, ^{} };
-
-// CHECK: define internal void @_ZN1N4ivalE_block_invoke_4(
-// CHECK: define internal void @_ZN1N4ivalE_block_invoke_5(
-// CHECK: define internal void @_ZN1N4ivalE_block_invoke_6(
-  int ival = func(^{}, ^{}, ^{});
-
-// CHECK: define internal void @_ZN1N9gvarlobalE_block_invoke_7(
-  void (^gvarlobal)(void) = ^{};
-
-  struct S {
-    BL field = ^{};
-  };
-
-// CHECK: define internal void @_ZN1N3blfE_block_invoke_8(
-  S blf;
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-dtor-no-atexit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-dtor-no-atexit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-dtor-no-atexit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64 %s -fno-use-cxa-atexit -emit-llvm -o - | FileCheck %s
-
-// PR7097
-// RUN: %clang_cc1 -triple x86_64 %s -fno-use-cxa-atexit -mconstructor-aliases -emit-llvm -o - | FileCheck %s
-
-// CHECK:      call void @_ZN1AC1Ev([[A:%.*]]* @a)
-// CHECK-NEXT: call i32 @atexit(void ()* @__dtor_a)
-// CHECK:      define internal void @__dtor_a() [[NUW:#[0-9]+]]
-// CHECK:      call void @_ZN1AD1Ev([[A]]* @a)
-
-// CHECK:      call void @_ZN1AC1Ev([[A]]* @b)
-// CHECK-NEXT: call i32 @atexit(void ()* @__dtor_b)
-// CHECK:      define internal void @__dtor_b() [[NUW]]
-// CHECK:      call void @_ZN1AD1Ev([[A]]* @b)
-
-class A {
-public:
-  A();
-  ~A();
-};
-
-A a, b;
-
-// PR9593
-// CHECK:      define void @_Z4funcv()
-// CHECK:      call i32 @__cxa_guard_acquire(i64* @_ZGVZ4funcvE2a1)
-// CHECK:      call void @_ZN1AC1Ev([[A]]* @_ZZ4funcvE2a1)
-// CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a1)
-// CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a1)
-
-// CHECK:      call i32 @__cxa_guard_acquire(i64* @_ZGVZ4funcvE2a2)
-// CHECK:      call void @_ZN1AC1Ev([[A]]* @_ZZ4funcvE2a2)
-// CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a2)
-// CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a2)
-
-// CHECK:      define internal void @__dtor__ZZ4funcvE2a1() [[NUW]]
-// CHECK:      call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a1)
-
-// CHECK:      define internal void @__dtor__ZZ4funcvE2a2() [[NUW]]
-// CHECK:      call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a2)
-
-void func() {
-  static A a1, a2;
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-init-darwin.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-init-darwin.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-init-darwin.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm %s -o - |FileCheck %s
-
-struct A {
-  A();
-  ~A();
-};
-
-A a;
-A as[2];
-
-struct B {
-  B();
-  ~B();
-  int f();
-};
-
-int i = B().f();
-
-// CHECK: "__TEXT,__StaticInit,regular,pure_instructions" {
-// CHECK: "__TEXT,__StaticInit,regular,pure_instructions" {
-// CHECK: "__TEXT,__StaticInit,regular,pure_instructions" {
-// CHECK: "__TEXT,__StaticInit,regular,pure_instructions" {
-// CHECK: "__TEXT,__StaticInit,regular,pure_instructions" {

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,205 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm -fexceptions %s -o - |FileCheck %s
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm %s -o - |FileCheck -check-prefix NOEXC %s
-
-struct A {
-  A();
-  ~A();
-};
-
-struct B { B(); ~B(); };
-
-struct C { void *field; };
-
-struct D { ~D(); };
-
-// CHECK: @__dso_handle = external unnamed_addr global i8
-// CHECK: @c = global %struct.C zeroinitializer, align 8
-
-// It's okay if we ever implement the IR-generation optimization to remove this.
-// CHECK: @_ZN5test3L3varE = internal constant i8* getelementptr inbounds ([7 x i8]* 
-
-// PR6205: The casts should not require global initializers
-// CHECK: @_ZN6PR59741cE = external global %"struct.PR5974::C"
-// CHECK: @_ZN6PR59741aE = global %"struct.PR5974::A"* getelementptr inbounds (%"struct.PR5974::C"* @_ZN6PR59741cE, i32 0, i32 0)
-// CHECK: @_ZN6PR59741bE = global %"struct.PR5974::B"* bitcast (i8* getelementptr (i8* bitcast (%"struct.PR5974::C"* @_ZN6PR59741cE to i8*), i64 4) to %"struct.PR5974::B"*), align 8
-
-// CHECK: call void @_ZN1AC1Ev(%struct.A* @a)
-// CHECK: call i32 @__cxa_atexit(void (i8*)* bitcast (void (%struct.A*)* @_ZN1AD1Ev to void (i8*)*), i8* getelementptr inbounds (%struct.A* @a, i32 0, i32 0), i8* @__dso_handle)
-A a;
-
-// CHECK: call void @_ZN1BC1Ev(%struct.B* @b)
-// CHECK: call i32 @__cxa_atexit(void (i8*)* bitcast (void (%struct.B*)* @_ZN1BD1Ev to void (i8*)*), i8* getelementptr inbounds (%struct.B* @b, i32 0, i32 0), i8* @__dso_handle)
-B b;
-
-// PR6205: this should not require a global initializer
-// CHECK-NOT: call void @_ZN1CC1Ev(%struct.C* @c)
-C c;
-
-// CHECK: call i32 @__cxa_atexit(void (i8*)* bitcast (void (%struct.D*)* @_ZN1DD1Ev to void (i8*)*), i8* getelementptr inbounds (%struct.D* @d, i32 0, i32 0), i8* @__dso_handle)
-D d;
-
-// <rdar://problem/7458115>
-namespace test1 {
-  int f();
-  const int x = f();   // This has side-effects and gets emitted immediately.
-  const int y = x - 1; // This gets deferred.
-  const int z = ~y;    // This also gets deferred, but gets "undeferred" before y.
-  int test() { return z; }
-// CHECK:      define i32 @_ZN5test14testEv()
-
-  // All of these initializers end up delayed, so we check them later.
-}
-
-// <rdar://problem/8246444>
-namespace test2 {
-  struct allocator { allocator(); ~allocator(); };
-  struct A { A(const allocator &a = allocator()); ~A(); };
-
-  A a;
-// CHECK: call void @_ZN5test29allocatorC1Ev(
-// CHECK: invoke void @_ZN5test21AC1ERKNS_9allocatorE(
-// CHECK: call void @_ZN5test29allocatorD1Ev(
-// CHECK: call i32 @__cxa_atexit({{.*}} @_ZN5test21AD1Ev {{.*}} @_ZN5test21aE
-}
-
-namespace test3 {
-  // Tested at the beginning of the file.
-  const char * const var = "string";
-  extern const char * const var;
-
-  const char *test() { return var; }
-}
-
-namespace test4 {
-  struct A {
-    A();
-  };
-  extern int foo();
-
-  // This needs an initialization function and guard variables.
-  // CHECK: load i8* bitcast (i64* @_ZGVN5test41xE
-  // CHECK: [[CALL:%.*]] = call i32 @_ZN5test43fooEv
-  // CHECK-NEXT: store i32 [[CALL]], i32* @_ZN5test41xE
-  // CHECK-NEXT: store i64 1, i64* @_ZGVN5test41xE
-  __attribute__((weak)) int x = foo();
-}
-
-namespace PR5974 {
-  struct A { int a; };
-  struct B { int b; };
-  struct C : A, B { int c; };
-
-  extern C c;
-
-  // These should not require global initializers.
-  A* a = &c;
-  B* b = &c;
-}
-
-// PR9570: the indirect field shouldn't crash IR gen.
-namespace test5 {
-  static union {
-    unsigned bar[4096] __attribute__((aligned(128)));
-  };
-}
-
-namespace std { struct type_info; }
-
-namespace test6 {
-  struct A { virtual ~A(); };
-  struct B : A {};
-  extern A *p;
-
-  // We must emit a dynamic initializer for 'q', because it could throw.
-  B *const q = &dynamic_cast<B&>(*p);
-  // CHECK: call void @__cxa_bad_cast()
-  // CHECK: store {{.*}} @_ZN5test6L1qE
-
-  // We don't need to emit 'r' at all, because it has internal linkage, is
-  // unused, and its initialization has no side-effects.
-  B *const r = dynamic_cast<B*>(p);
-  // CHECK-NOT: call void @__cxa_bad_cast()
-  // CHECK-NOT: store {{.*}} @_ZN5test6L1rE
-
-  // This can throw, so we need to emit it.
-  const std::type_info *const s = &typeid(*p);
-  // CHECK: store {{.*}} @_ZN5test6L1sE
-
-  // This can't throw, so we don't.
-  const std::type_info *const t = &typeid(p);
-  // CHECK-NOT: @_ZN5test6L1tE
-
-  extern B *volatile v;
-  // CHECK: store {{.*}} @_ZN5test6L1wE
-  B *const w = dynamic_cast<B*>(v);
-
-  // CHECK: load volatile
-  // CHECK: store {{.*}} @_ZN5test6L1xE
-  const int x = *(volatile int*)0x1234;
-
-  namespace {
-    int a = int();
-    volatile int b = int();
-    int c = a;
-    int d = b;
-    // CHECK-NOT: store {{.*}} @_ZN5test6{{[A-Za-z0-9_]*}}1aE
-    // CHECK-NOT: store {{.*}} @_ZN5test6{{[A-Za-z0-9_]*}}1bE
-    // CHECK-NOT: store {{.*}} @_ZN5test6{{[A-Za-z0-9_]*}}1cE
-    // CHECK: load volatile {{.*}} @_ZN5test6{{[A-Za-z0-9_]*}}1bE
-    // CHECK: store {{.*}} @_ZN5test6{{[A-Za-z0-9_]*}}1dE
-  }
-}
-
-namespace test7 {
-  struct A { A(); };
-  struct B { ~B(); int n; };
-  struct C { C() = default; C(const C&); int n; };
-  struct D {};
-
-  // CHECK: call void @_ZN5test71AC1Ev({{.*}}@_ZN5test7L1aE)
-  const A a = A();
-
-  // CHECK: call i32 @__cxa_atexit({{.*}} @_ZN5test71BD1Ev{{.*}} @_ZN5test7L2b1E
-  // CHECK: call i32 @__cxa_atexit({{.*}} @_ZN5test71BD1Ev{{.*}} @_ZGRN5test72b2E
-  // CHECK: call void @_ZN5test71BD1Ev(
-  // CHECK: store {{.*}} @_ZN5test7L2b3E
-  const B b1 = B();
-  const B &b2 = B();
-  const int b3 = B().n;
-
-  // CHECK-NOT: @_ZN5test7L2c1E
-  // CHECK: @_ZN5test7L2c2E
-  // CHECK-NOT: @_ZN5test7L2c3E
-  // CHECK: @_ZN5test7L2c4E
-  const C c1 = C();
-  const C c2 = static_cast<const C&>(C());
-  const int c3 = C().n;
-  const int c4 = C(C()).n;
-
-  // CHECK-NOT: @_ZN5test7L1dE
-  const D d = D();
-
-  // CHECK: store {{.*}} @_ZN5test71eE
-  int f(), e = f();
-}
-
-
-// At the end of the file, we check that y is initialized before z.
-
-// CHECK:      define internal void [[TEST1_Z_INIT:@.*]]()
-// CHECK:        load i32* @_ZN5test1L1yE
-// CHECK-NEXT:   xor
-// CHECK-NEXT:   store i32 {{.*}}, i32* @_ZN5test1L1zE
-// CHECK:      define internal void [[TEST1_Y_INIT:@.*]]()
-// CHECK:        load i32* @_ZN5test1L1xE
-// CHECK-NEXT:   sub
-// CHECK-NEXT:   store i32 {{.*}}, i32* @_ZN5test1L1yE
-
-// CHECK: define internal void @_GLOBAL__I_a() section "__TEXT,__StaticInit,regular,pure_instructions" {
-// CHECK:   call void [[TEST1_Y_INIT]]
-// CHECK:   call void [[TEST1_Z_INIT]]
-
-// rdar://problem/8090834: this should be nounwind
-// CHECK-NOEXC: define internal void @_GLOBAL__I_a() [[NUW:#[0-9]+]] section "__TEXT,__StaticInit,regular,pure_instructions" {
-
-// CHECK-NOEXC: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-llvm-constant.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-llvm-constant.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/global-llvm-constant.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-struct A {
-  A() { x = 10; }
-  int x;
-};
-
-const A x;
-
-// CHECK: @_ZL1x = internal global
-
-struct X {
-  int (*fp)(int, int);
-};
-
-int add(int x, int y) { return x + y; }
-
-// CHECK: @x2 = constant
-extern const X x2;
-const X x2 = { &add };
-
-struct X1 {
-  mutable int i;
-};
-
-struct X2 {
-  X1 array[3];
-};
-
-// CHECK: @x2b = global
-extern const X2 x2b;
-const X2 x2b = { { { 1 }, { 2 }, { 3 } } };

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/goto.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/goto.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/goto.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -fcxx-exceptions -fexceptions -emit-llvm -o - | FileCheck %s
-
-// Reduced from a crash on boost::interprocess's node_allocator_test.cpp.
-namespace test0 {
-  struct A { A(); ~A(); };
-  struct V { V(const A &a = A()); ~V(); };
-
-  // CHECK: define linkonce_odr i32 @_ZN5test04testILi0EEEii
-  template<int X> int test(int x) {
-    // CHECK:      [[RET:%.*]] = alloca i32
-    // CHECK-NEXT: [[X:%.*]] = alloca i32
-    // CHECK-NEXT: [[Y:%.*]] = alloca [[A:%.*]],
-    // CHECK-NEXT: [[Z:%.*]] = alloca [[A]]
-    // CHECK-NEXT: [[EXN:%.*]] = alloca i8*
-    // CHECK-NEXT: [[SEL:%.*]] = alloca i32
-    // CHECK-NEXT: [[V:%.*]] = alloca [[V:%.*]]*,
-    // CHECK-NEXT: [[TMP:%.*]] = alloca [[A]]
-    // CHECK-NEXT: [[CLEANUPACTIVE:%.*]] = alloca i1
-    // CHECK:      call void @_ZN5test01AC1Ev([[A]]* [[Y]])
-    // CHECK-NEXT: invoke void @_ZN5test01AC1Ev([[A]]* [[Z]])
-    // CHECK:      [[NEW:%.*]] = invoke noalias i8* @_Znwm(i64 1)
-    // CHECK:      store i1 true, i1* [[CLEANUPACTIVE]]
-    // CHECK:      [[NEWCAST:%.*]] = bitcast i8* [[NEW]] to [[V]]*
-    // CHECK-NEXT: invoke void @_ZN5test01AC1Ev([[A]]* [[TMP]])
-    // CHECK:      invoke void @_ZN5test01VC1ERKNS_1AE([[V]]* [[NEWCAST]], [[A]]* [[TMP]])
-    // CHECK:      store i1 false, i1* [[CLEANUPACTIVE]]
-    // CHECK-NEXT: invoke void @_ZN5test01AD1Ev([[A]]* [[TMP]])
-    A y;
-    try {
-      A z;
-      V *v = new V();
-
-      if (x) return 1;
-    } catch (int ex) {
-      return 1;
-    }
-    return 0;
-  }
-
-  int test() {
-    return test<0>(5);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-copy-assign-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-copy-assign-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-copy-assign-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10.0.0 -o - %s | FileCheck %s
-struct A { 
-  A &operator=(const A&);
-  A &operator=(A&);
-};
-
-struct B {
-  B &operator=(B&);
-};
-
-struct C {
-  virtual C& operator=(const C&);
-};
-
-struct POD {
-  int array[3][4];
-};
-
-struct CopyByValue {
-  CopyByValue(const CopyByValue&);
-  CopyByValue &operator=(CopyByValue);
-};
-
-struct D : A, B, virtual C { 
-  int scalar;
-  int scalar_array[2][3];
-  B class_member;
-  C class_member_array[2][3];
-  POD pod_array[2][3];
-
-  union {
-    int x;
-    float f[3];
-  };
-
-  CopyByValue by_value;
-};
-
-void test_D(D d1, D d2) {
-  d1 = d2;
-}
-
-// CHECK: define linkonce_odr %struct.D* @_ZN1DaSERS_
-// CHECK: {{call.*_ZN1AaSERS_}}
-// CHECK: {{call.*_ZN1BaSERS_}}
-// CHECK: {{call.*_ZN1CaSERKS_}}
-// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 28}}
-// CHECK: {{call.*_ZN1BaSERS_}}
-// CHECK: br
-// CHECK: {{call.*_ZN1CaSERKS_}}
-// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 288}}
-// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 12}}
-// CHECK: call void @_ZN11CopyByValueC1ERKS_
-// CHECK: {{call.*_ZN11CopyByValueaSES_}}
-// CHECK: ret
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-copy-constructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-copy-constructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-copy-constructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,107 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s -std=c++11 | FileCheck %s
-
-struct A { 
-  A();
-  A(const A&);
-  A(A&);
-  ~A();
-};
-
-struct B {
-  B();
-  B(B&);
-};
-
-struct C {
-  C() {}
-  C(C& other, A a = A());
-  int i, j;
-};
-
-struct POD {
-  int array[3][4];
-};
-
-struct D : A, B, virtual C { 
-  D();
-  int scalar;
-  int scalar_array[2][3];
-  B class_member;
-  C class_member_array[2][3];
-  POD pod_array[2][3];
-
-  union {
-    int x;
-    float f[3];
-  };
-};
-
-void f(D d) {
-  D d2(d);
-}
-
-// CHECK: define linkonce_odr void @_ZN1DC1ERS_(%struct.D* %this, %struct.D*) unnamed_addr
-// CHECK: call void @_ZN1AC1Ev
-// CHECK: call void @_ZN1CC2ERS_1A
-// CHECK: call void @_ZN1AD1Ev
-// CHECK: call void @_ZN1AC2ERS_
-// CHECK: call void @_ZN1BC2ERS_
-// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 28}}
-// CHECK: call void @_ZN1BC1ERS_
-// CHECK: br
-// CHECK: {{icmp ult.*, 2}}
-// CHECK: {{icmp ult.*, 3}}
-// CHECK: call void @_ZN1AC1Ev
-// CHECK: call void @_ZN1CC1ERS_1A
-// CHECK: call void @_ZN1AD1Ev
-// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 300}}
-// CHECK: ret void
-
-
-template<class T> struct X0 { void f0(T * ) { } };
-template <class > struct X1 { X1( X1& , int = 0 ) { } };
-struct X2 { X1<int> result; };
-void test_X2()
-{
-  typedef X2 impl;
-  typedef X0<impl> pimpl;
-  impl* i;
-  pimpl pdata;
-  pdata.f0( new impl(*i));
-}
-
-// rdar://problem/9598341
-namespace test3 {
-  struct A { A(const A&); A&operator=(const A&); };
-  struct B { A a; unsigned : 0; };
-  void test(const B &x) {
-    B y = x;
-    y = x;
-  }
-}
-
-namespace test4 {
-  // When determining whether to implement an array copy as a memcpy, look at
-  // whether the *selected* constructor is trivial.
-  struct S {
-    int arr[5][5];
-    S(S &);
-    S(const S &) = default;
-  };
-  // CHECK: @_ZN5test42f1
-  void f1(S a) {
-    // CHECK-NOT: memcpy
-    // CHECK: call void @_ZN5test41SC1ERS0_
-    // CHECK-NOT: memcpy
-    S b(a);
-    // CHECK: }
-  }
-  // CHECK: @_ZN5test42f2
-  void f2(const S a) {
-    // CHECK-NOT: call void @_ZN5test41SC1ERS0_
-    // CHECK: memcpy
-    // CHECK-NOT: call void @_ZN5test41SC1ERS0_
-    S b(a);
-    // CHECK: }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-instantiation-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-instantiation-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/implicit-instantiation-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-template<typename T>
-struct X {
-  void f(T) { }
-  void f(char) { }
-  
-  void g(T) { }
-  
-  void h(T) { }
-};
-
-void foo(X<int> &xi, X<float> *xfp, int i, float f) {
-  // RUN: grep "linkonce_odr.*_ZN1XIiE1fEi" %t | count 1
-  xi.f(i);
-  
-  // RUN: grep "linkonce_odr.*_ZN1XIiE1gEi" %t | count 1
-  xi.g(f);
-  
-  // RUN: grep "linkonce_odr.*_ZN1XIfE1fEf" %t | count 1
-  xfp->f(f);
-  
-  // RUN: grep "linkonce_odr.*_ZN1XIfE1hEf" %t | count 0
-  
-}
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/incomplete-member-function-pointer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/incomplete-member-function-pointer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/incomplete-member-function-pointer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-// PR7040
-struct fake_tuple;
-struct connection {
-    void bar(fake_tuple);
-};
-void (connection::*a)(fake_tuple) = &connection::bar;
-void f() {
-  void (connection::*b)(fake_tuple) = &connection::bar;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/incomplete-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/incomplete-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/incomplete-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only -verify
-// expected-no-diagnostics
-// PR5489
-
-template<typename E>
-struct Bar {
- int x_;
-};
-
-static struct Bar<int> bar[1] = {
-  { 0 }
-};
-
-
-
-namespace incomplete_type_refs {
-  struct A;
-  extern A g[];
-  void foo(A*);
-  void f(void) {
-    foo(g);    // Reference to array with unknown element type.
-  }
-
-  struct A {   // define the element type.
-    int a,b,c;
-  };
-
-  A *f2() {
-    return &g[1];
-  }
-
-}
-
-namespace PR10395 {
-  struct T;
-  extern T x[];
-  T* f() { return x; }
-}
-
-namespace PR10384 {
-  struct X;
-  extern X x[1];
-  X* f() { return x; }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/inheriting-constructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/inheriting-constructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/inheriting-constructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-// PR12219
-struct A { A(int); virtual ~A(); };
-struct B : A { using A::A; ~B(); };
-B::~B() {}
-
-B b(123);
-
-struct C { template<typename T> C(T); };
-struct D : C { using C::C; };
-D d(123);
-
-// CHECK: define void @_ZN1BD0Ev
-// CHECK: define void @_ZN1BD1Ev
-// CHECK: define void @_ZN1BD2Ev
-
-// CHECK: define linkonce_odr void @_ZN1BC1Ei(
-// CHECK: call void @_ZN1BC2Ei(
-
-// CHECK: define linkonce_odr void @_ZN1DC1IiEET_(
-// CHECK: call void @_ZN1DC2IiEET_(
-
-// CHECK: define linkonce_odr void @_ZN1DC2IiEET_(
-// CHECK: call void @_ZN1CC2IiEET_(
-
-// CHECK: define linkonce_odr void @_ZN1BC2Ei(
-// CHECK: call void @_ZN1AC2Ei(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/init-invariant.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/init-invariant.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/init-invariant.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -triple i686-linux-gnu -emit-llvm %s -O0 -o - | FileCheck %s --check-prefix=CHECK-O0
-// RUN: %clang_cc1 -triple i686-linux-gnu -emit-llvm %s -O1 -o - | FileCheck %s
-
-// Check that we add an llvm.invariant.start to mark when a global becomes
-// read-only. If globalopt can fold the initializer, it will then mark the
-// variable as constant.
-
-// Do not produce markers at -O0.
-// CHECK-O0-NOT: llvm.invariant.start
-
-struct A {
-  A();
-  int n;
-};
-
-// CHECK: @a = global {{.*}} zeroinitializer
-extern const A a = A();
-
-struct B {
-  B();
-  mutable int n;
-};
-
-// CHECK: @b = global {{.*}} zeroinitializer
-extern const B b = B();
-
-struct C {
-  C();
-  ~C();
-  int n;
-};
-
-// CHECK: @c = global {{.*}} zeroinitializer
-extern const C c = C();
-
-int f();
-// CHECK: @d = global i32 0
-extern const int d = f();
-
-void e() {
-  static const A a = A();
-}
-
-// CHECK: call void @_ZN1AC1Ev({{.*}}* @a)
-// CHECK: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @a to i8*))
-
-// CHECK: call void @_ZN1BC1Ev({{.*}}* @b)
-// CHECK-NOT: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @b to i8*))
-
-// CHECK: call void @_ZN1CC1Ev({{.*}}* @c)
-// CHECK-NOT: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @c to i8*))
-
-// CHECK: call i32 @_Z1fv(
-// CHECK: store {{.*}}, i32* @d
-// CHECK: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @d to i8*))
-
-// CHECK: define void @_Z1ev(
-// CHECK: call void @_ZN1AC1Ev(%struct.A* @_ZZ1evE1a)
-// CHECK: call {{.*}}@llvm.invariant.start(i64 4, i8* bitcast ({{.*}} @_ZZ1evE1a to i8*))
-// CHECK-NOT: llvm.invariant.end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/init-priority-attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/init-priority-attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/init-priority-attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-// PR
-
-void foo(int);
-
-class A {
-public:
-  A() { foo(1); }
-};
-
-class A1 {
-public:
-  A1() { foo(2); }
-};
-
-class B {
-public:
-  B() { foo(3); }
-};
-
-class C {
-public:
-  static A a;
-  C() { foo(4); }
-};
-
-
-A C::a = A();
-
-// CHECK: @llvm.global_ctors = appending global [3 x { i32, void ()* }] [{ i32, void ()* } { i32 200, void ()* @_GLOBAL__I_000200 }, { i32, void ()* } { i32 300, void ()* @_GLOBAL__I_000300 }, { i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
-
-// CHECK: _GLOBAL__I_000200()
-// CHECK_NEXT: _Z3fooi(i32 3)
-
-// CHECK: _GLOBAL__I_000300()
-// CHECK_NEXT: _Z3fooi(i32 2)
-// CHECK_NEXT: _Z3fooi(i32 1)
-
-// CHECK: _GLOBAL__I_a()
-// CHECK_NEXT: _Z3fooi(i32 1)
-// CHECK_NEXT: _Z3fooi(i32 4)
-
-C c;
-A1 a1 __attribute__((init_priority (300)));
-A a __attribute__((init_priority (300)));
-B b __attribute__((init_priority (200)));

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/inline-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/inline-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/inline-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-// CHECK: ; ModuleID 
-
-struct A {
-    inline void f();
-};
-
-// CHECK-NOT: define void @_ZN1A1fEv
-void A::f() { }
-
-template<typename> struct B { };
-
-template<> struct B<char> {
-  inline void f();
-};
-
-// CHECK-NOT: _ZN1BIcE1fEv
-void B<char>::f() { }
-
-// We need a final CHECK line here.
-
-// CHECK: define void @_Z1fv
-void f() { }
-
-// <rdar://problem/8740363>
-inline void f1(int);
-
-// CHECK: define linkonce_odr void @_Z2f1i
-void f1(int) { }
-
-void test_f1() { f1(17); }
-
-// PR8789
-namespace test1 {
-  template <typename T> class ClassTemplate {
-  private:
-    friend void T::func();
-    void g() {}
-  };
-
-  // CHECK: define linkonce_odr void @_ZN5test11C4funcEv(
-
-  class C {
-  public:
-    void func() {
-      ClassTemplate<C> ct;
-      ct.g();
-    }
-  };
-
-  void f() {
-    C c;
-    c.func();
-  }
-}
-
-// PR13252
-namespace test2 {
-  struct A;
-  void f(const A& a);
-  struct A {
-    friend void f(const A& a) { } 
-  };
-  void g() {
-    A a;
-    f(a);
-  }
-  // CHECK: define linkonce_odr void @_ZN5test21fERKNS_1AE
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fblocks -emit-llvm -o - %s
-// rdar : // 6182276
-
-template <typename T> T foo(T t)
-{
-    void (^block)(int);
-    return 1;
-}
-
-int test1(void)
-{
-    int i = 1;
-    int b = 2;
-    i = foo(b);
-    return 0;
-}
-
-template <typename T, typename T1> void foo(T t, T1 r)
-{
-    T block_arg;
-    __block T1 byref_block_arg;
-
-    T1 (^block)(char, T, T1, double) =  
-	^ T1 (char ch, T arg, T1 arg2, double d1) { byref_block_arg = arg2;
-           					    return byref_block_arg + block_arg + arg; };
-
-    void (^block2)() = ^{};
-}
-
-void test2(void)
-{
-    foo(100, 'a');
-}
-
-namespace rdar6182276 {
-extern "C" {
-int printf(const char *, ...);
-}
-
-template <typename T> T foo(T t)
-{
-    void (^testing)(int) = ^(int bar) { printf("bar is %d\n", bar); };
-    printf("bar is\n");
-    return 1;
-}
-
-template <typename T> void gorf(T t)
-{
-    foo(t);
-}
-
-
-void test(void)
-{
-    gorf(2);
-}
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-init-list.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-init-list.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-init-list.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only -verify
-// expected-no-diagnostics
-
-struct F {
-  void (*x)();
-};
-void G();
-template<class T> class A {
-public: A();
-};
-template<class T> A<T>::A() {
-  static F f = { G };
-}
-A<int> a;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-temporaries.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-temporaries.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instantiate-temporaries.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.0 -emit-llvm -o - %s | FileCheck %s
-
-struct X {
-  X();
-  ~X();
-};
-
-struct Y {
-  X get();
-};
-
-struct X2 {
-  X x;
-};
-
-template<typename T>
-void call() {
-  Y().get();
-}
-
-// CHECK: define weak_odr void @_Z4callIiEvv
-// CHECK: call void @_ZN1Y3getEv
-// CHECK-NEXT: call void @_ZN1XD1Ev
-// CHECK-NEXT: ret void
-template void call<int>();  
-
-template<typename T>
-void compound_literal() {
-  (X2){};
-}
-
-// CHECK: define weak_odr void @_Z16compound_literalIiEvv
-// CHECK: call void @_ZN1XC1Ev
-// CHECK-NEXT: call void @_ZN2X2D1Ev
-// CHECK-NEXT: ret void
-template void compound_literal<int>();  
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instrument-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instrument-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/instrument-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -S -emit-llvm -o - %s -finstrument-functions | FileCheck %s
-
-// CHECK: @_Z5test1i
-int test1(int x) {
-// CHECK: __cyg_profile_func_enter
-// CHECK: __cyg_profile_func_exit
-// CHECK: ret
-  return x;
-}
-
-// CHECK: @_Z5test2i
-int test2(int) __attribute__((no_instrument_function));
-int test2(int x) {
-// CHECK-NOT: __cyg_profile_func_enter
-// CHECK-NOT: __cyg_profile_func_exit
-// CHECK: ret
-  return x;
-}
-
-// This test case previously crashed code generation.  It exists solely
-// to test -finstrument-function does not crash codegen for this trivial
-// case.
-namespace rdar9445102 {
-  class Rdar9445102 {
-    public:
-      Rdar9445102();
-  };
-}
-static rdar9445102::Rdar9445102 s_rdar9445102Initializer;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/internal-linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/internal-linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/internal-linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-struct Global { Global(); };
-template<typename T> struct X { X() {} };
-
-
-namespace {
-  struct Anon { Anon() {} };
-
-  // CHECK: @_ZN12_GLOBAL__N_15anon0E = internal global
-  Global anon0;
-}
-
-// CHECK: @anon1 = internal global
-Anon anon1;
-
-// CHECK: @anon2 = internal global
-X<Anon> anon2;
-
-// rdar: // 8071804
-char const * const xyzzy = "Hello, world!";
-extern char const * const xyzzy;
-
-char const * const *test1()
-{
-   // CHECK: @_ZL5xyzzy = internal constant
-    return &xyzzy;
-}
-
-static char const * const static_xyzzy = "Hello, world!";
-extern char const * const static_xyzzy;
-
-char const * const *test2()
-{
-    // CHECK: @_ZL12static_xyzzy = internal constant
-    return &static_xyzzy;
-}
-
-static char const * static_nonconst_xyzzy = "Hello, world!";
-extern char const * static_nonconst_xyzzy;
-
-char const * *test3()
-{
-    // CHECK: @_ZL21static_nonconst_xyzzy = internal global
-    return &static_nonconst_xyzzy;
-}
-
-
-char const * extern_nonconst_xyzzy = "Hello, world!";
-extern char const * extern_nonconst_xyzzy;
-
-char const * *test4()
-{
-    // CHECK: @extern_nonconst_xyzzy = global
-    return &extern_nonconst_xyzzy;
-}
-
-// PR10120
-template <typename T> class klass {
-    virtual void f();
-};
-namespace { struct S; }
-void foo () { klass<S> x; }
-// CHECK: @_ZTV5klassIN12_GLOBAL__N_11SEE = internal unnamed_addr constant

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/key-function-vtable.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/key-function-vtable.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/key-function-vtable.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-none-linux-gnu %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -triple arm-apple-darwin %s -emit-llvm -o - | FileCheck %s
-
-// Simple key function test
-struct testa { virtual void a(); };
-void testa::a() {}
-
-// Simple key function test
-struct testb { virtual void a() {} };
-testb *testbvar = new testb;
-
-// Key function with out-of-line inline definition
-struct testc { virtual void a(); };
-inline void testc::a() {}
-
-// Functions with inline specifier are not key functions (PR5705)
-struct testd { inline virtual void a(); };
-void testd::a() {}
-
-// Functions with inline specifier are not key functions (PR5705)
-struct teste { inline virtual void a(); };
-teste *testevar = new teste;
-
-// Key functions with namespace (PR5711)
-namespace {
-  struct testf { virtual void a(); };
-}
-void testf::a() {}
-
-// Key functions with namespace (PR5711)
-namespace {
-  struct testg { virtual void a(); };
-}
-void testg::a() {}
-testg *testgvar = new testg;
-
-struct X0 { virtual ~X0(); };
-struct X1 : X0 {
-  virtual void f();
-};
-
-inline void X1::f() { }
-
-void use_X1(X1 *x1) { x1->f(); }
-
-// FIXME: The checks are extremely difficult to get right when the globals
-// aren't alphabetized
-// CHECK: @_ZTV2X1 = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTV5testa = unnamed_addr constant [3 x i8*] [i8* null
-// CHECK: @_ZTV5testc = linkonce_odr unnamed_addr constant [3 x i8*] [i8* null
-// CHECK: @_ZTVN12_GLOBAL__N_15testgE = internal unnamed_addr constant [3 x i8*] [i8* null
-// CHECK: @_ZTV5teste = linkonce_odr unnamed_addr constant [3 x i8*] [i8* null
-// CHECK: @_ZTV5testb = linkonce_odr unnamed_addr constant [3 x i8*] [i8* null

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/lambda-expressions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/lambda-expressions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/lambda-expressions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -fblocks -emit-llvm -o - %s -fexceptions -std=c++11 | FileCheck %s
-
-// CHECK-NOT: @unused
-auto unused = [](int i) { return i+1; };
-
-// CHECK: @used = internal global
-auto used = [](int i) { return i+1; };
-void *use = &used;
-
-// CHECK: @cvar = global
-extern "C" auto cvar = []{};
-
-int a() { return []{ return 1; }(); }
-// CHECK: define i32 @_Z1av
-// CHECK: call i32 @"_ZZ1avENK3$_0clEv"
-// CHECK: define internal i32 @"_ZZ1avENK3$_0clEv"
-// CHECK: ret i32 1
-
-int b(int x) { return [x]{return x;}(); }
-// CHECK: define i32 @_Z1bi
-// CHECK: store i32
-// CHECK: load i32*
-// CHECK: store i32
-// CHECK: call i32 @"_ZZ1biENK3$_1clEv"
-// CHECK: define internal i32 @"_ZZ1biENK3$_1clEv"
-// CHECK: load i32*
-// CHECK: ret i32
-
-int c(int x) { return [&x]{return x;}(); }
-// CHECK: define i32 @_Z1ci
-// CHECK: store i32
-// CHECK: store i32*
-// CHECK: call i32 @"_ZZ1ciENK3$_2clEv"
-// CHECK: define internal i32 @"_ZZ1ciENK3$_2clEv"
-// CHECK: load i32**
-// CHECK: load i32*
-// CHECK: ret i32
-
-struct D { D(); D(const D&); int x; };
-int d(int x) { D y[10]; [x,y] { return y[x].x; }(); }
-
-// CHECK: define i32 @_Z1di
-// CHECK: call void @_ZN1DC1Ev
-// CHECK: icmp ult i64 %{{.*}}, 10
-// CHECK: call void @_ZN1DC1ERKS_
-// CHECK: call i32 @"_ZZ1diENK3$_3clEv"
-// CHECK: define internal i32 @"_ZZ1diENK3$_3clEv"
-// CHECK: load i32*
-// CHECK: load i32*
-// CHECK: ret i32
-
-struct E { E(); E(const E&); ~E(); int x; };
-int e(E a, E b, bool cond) { [a,b,cond](){ return (cond ? a : b).x; }(); }
-// CHECK: define i32 @_Z1e1ES_b
-// CHECK: call void @_ZN1EC1ERKS_
-// CHECK: invoke void @_ZN1EC1ERKS_
-// CHECK: invoke i32 @"_ZZ1e1ES_bENK3$_4clEv"
-// CHECK: call void @"_ZZ1e1ES_bEN3$_4D1Ev"
-// CHECK: call void @"_ZZ1e1ES_bEN3$_4D1Ev"
-
-// CHECK: define internal i32 @"_ZZ1e1ES_bENK3$_4clEv"
-// CHECK: trunc i8
-// CHECK: load i32*
-// CHECK: ret i32
-
-void f() {
-  // CHECK: define void @_Z1fv()
-  // CHECK: @"_ZZ1fvENK3$_5cvPFiiiEEv"
-  // CHECK-NEXT: store i32 (i32, i32)*
-  // CHECK-NEXT: ret void
-  int (*fp)(int, int) = [](int x, int y){ return x + y; };
-}
-
-static int k;
-int g() {
-  int &r = k;
-  // CHECK: define internal i32 @"_ZZ1gvENK3$_6clEv"(
-  // CHECK-NOT: }
-  // CHECK: load i32* @_ZL1k,
-  return [] { return r; } ();
-};
-
-// PR14773
-// CHECK: [[ARRVAL:%[0-9a-zA-Z]*]] = load i32* getelementptr inbounds ([0 x i32]* bitcast (<{}>* @_ZZ14staticarrayrefvE5array to [0 x i32]*), i32 0, i64 0), align 4
-// CHECK-NEXT: store i32 [[ARRVAL]]
-void staticarrayref(){
-  static int array[] = {};
-  (void)[](){
-    int (&xxx)[0] = array;
-    int y = xxx[0];
-  }();
-}
-
-// CHECK: define internal void @"_ZZ1hvEN3$_88__invokeEv"(%struct.A* noalias sret %agg.result) {{.*}} {
-// CHECK-NOT: =
-// CHECK: call void @"_ZZ1hvENK3$_8clEv"(%struct.A* sret %agg.result,
-// CHECK-NEXT: ret void
-struct A { ~A(); };
-void h() {
-  A (*h)() = [] { return A(); };
-}
-
-// CHECK: define internal i32 @"_ZZ1fvEN3$_58__invokeEii"
-// CHECK: store i32
-// CHECK-NEXT: store i32
-// CHECK-NEXT: load i32*
-// CHECK-NEXT: load i32*
-// CHECK-NEXT: call i32 @"_ZZ1fvENK3$_5clEii"
-// CHECK-NEXT: ret i32
-
-// CHECK: define internal void @"_ZZ1e1ES_bEN3$_4D2Ev"
-
-// <rdar://problem/12778708>
-struct XXX {};
-void nestedCapture () {
-  XXX localKey;
-  ^() {
-    [&]() {
-      ^{ XXX k = localKey; };
-    };
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/linetable-cleanup.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/linetable-cleanup.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/linetable-cleanup.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin10 %s -o - | FileCheck %s
-
-// Check the line numbers for cleanup code with EH in combinatin with
-// simple return expressions.
-
-// CHECK: define {{.*}}foo
-// CHECK: call void @_ZN1CD1Ev(%class.C* {{.*}}), !dbg ![[CLEANUP:[0-9]+]]
-// CHECK: ret i32 0, !dbg ![[RET:[0-9]+]]
-
-class C {
-public:
-  ~C() {}
-  int i;
-};
-
-int foo()
-{
-  C c;
-  c.i = 42;
-  // This breakpoint should be at/before the cleanup code.
-  // CHECK: ![[CLEANUP]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  return 0;
-  // CHECK: ![[RET]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/lvalue-bitcasts.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/lvalue-bitcasts.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/lvalue-bitcasts.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,163 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s | FileCheck %s
-
-struct X { int i; float f; };
-struct Y { X x; };
-
-// CHECK: define void @_Z21reinterpret_cast_testRiRfR1X
-void reinterpret_cast_test(int &ir, float &fr, X &xr) {
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: load i32*
-  ir = reinterpret_cast<int&>(fr);
-  // CHECK: load
-  // CHECK: {{bitcast.*to i32\*}}
-  // CHECK: load i32*
-  ir = reinterpret_cast<int&>(xr);
-  // CHECK: load i32
-  // CHECK: {{bitcast.*to float\*}}
-  // CHECK: load float*
-  fr = reinterpret_cast<float&>(ir);
-  // CHECK: load
-  // CHECK: {{bitcast.*to float\*}}
-  // CHECK: load float*
-  fr = reinterpret_cast<float&>(xr);
-  // CHECK: load i32**
-  // CHECK: bitcast i32*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-  xr = reinterpret_cast<X&>(ir);
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-  xr = reinterpret_cast<X&>(fr);
-  _Complex float cf;
-  _Complex float &cfr = cf;
-  // CHECK: load i32**
-  // CHECK: bitcast i32*
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = reinterpret_cast<_Complex float&>(ir);
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = reinterpret_cast<_Complex float&>(fr);
-  // CHECK: bitcast
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = reinterpret_cast<_Complex float&>(xr);
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z6c_castRiRfR1X
-void c_cast(int &ir, float &fr, X &xr) {
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: load i32*
-  ir = (int&)fr;
-  // CHECK: load
-  // CHECK: {{bitcast.*to i32\*}}
-  // CHECK: load i32*
-  ir = (int&)xr;
-  // CHECK: load i32
-  // CHECK: {{bitcast.*to float\*}}
-  // CHECK: load float*
-  fr = (float&)ir;
-  // CHECK: load
-  // CHECK: {{bitcast.*to float\*}}
-  // CHECK: load float*
-  fr = (float&)xr;
-  // CHECK: load i32**
-  // CHECK: bitcast i32*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-  xr = (X&)ir;
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-  xr = (X&)fr;
-  _Complex float cf;
-  _Complex float &cfr = cf;
-  // CHECK: load i32**
-  // CHECK: bitcast i32*
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = (_Complex float&)ir;
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = (_Complex float&)fr;
-  // CHECK: bitcast
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = (_Complex float&)xr;
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z15functional_castRiRfR1X
-void functional_cast(int &ir, float &fr, X &xr) {
-  typedef int &intref;
-  typedef float &floatref;
-  typedef X &Xref;
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: load i32*
-  ir = intref(fr);
-  // CHECK: load
-  // CHECK: {{bitcast.*to i32\*}}
-  // CHECK: load i32*
-  ir = intref(xr);
-  // CHECK: load i32
-  // CHECK: {{bitcast.*to float\*}}
-  // CHECK: load float*
-  fr = floatref(ir);
-  // CHECK: load
-  // CHECK: {{bitcast.*to float\*}}
-  // CHECK: load float*
-  fr = floatref(xr);
-  // CHECK: load i32**
-  // CHECK: bitcast i32*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-  xr = Xref(ir);
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-  xr = Xref(fr);
-  typedef _Complex float &complex_float_ref;
-  _Complex float cf;
-  _Complex float &cfr = cf;
-  // CHECK: load i32**
-  // CHECK: bitcast i32*
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = complex_float_ref(ir);
-  // CHECK: load float**
-  // CHECK: bitcast float*
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = complex_float_ref(fr);
-  // CHECK: bitcast
-  // CHECK: load float*
-  // CHECK: load float*
-  cfr = complex_float_ref(xr);
-  // CHECK: ret void
-}
-
-namespace PR6437 {
-  struct in_addr {};
-  void copy( const struct in_addr &new_addr ) {
-    int addr = (int&)new_addr;
-  }
-}
-
-namespace PR7593 {
-  void foo(double &X, char *A) {
-    X = reinterpret_cast<double&>(A[4]);
-  }
-}
-
-namespace PR7344 {
-  void serialize_annotatable_id( void*& id )
-  {
-    unsigned long l_id = (unsigned long&)id;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/m64-ptr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/m64-ptr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/m64-ptr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-darwin -o - | FileCheck %s
-
-// Make sure pointers are passed as pointers, not converted to int.
-// The first load should be of type i8** in either 32 or 64 bit mode.
-// This formerly happened on x86-64, 7375899.
-
-class StringRef {
-public:
-  const char *Data;
-  long Len;
-};
-void foo(StringRef X);
-void bar(StringRef &A) {
-// CHECK: @_Z3barR9StringRef
-// CHECK: load i8**
-  foo(A);
-// CHECK: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 -std=c++98 | FileCheck %s
-
-template <bool B> struct S3 {};
-
-// CHECK: define void @_Z1f2S3ILb1EE
-void f(S3<true>) {}
-
-// CHECK: define void @_Z1f2S3ILb0EE
-void f(S3<false>) {}
-
-// CHECK: define void @_Z2f22S3ILb1EE
-void f2(S3<100>) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-abi-examples.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-abi-examples.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-abi-examples.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: @_ZTVZ3foovEN1C1DE =
-// CHECK: @_ZTVZN1A3fooEiE1B =
-// CHECK: define {{.*}} @_ZZZ3foovEN1C3barEvEN1E3bazEv(
-
-// Itanium C++ ABI examples.
-struct A {
-  void foo (int) {
-    struct B { virtual ~B() {} };
-    B();
-  }
-};
-void foo () {
-  struct C {
-    struct D { virtual ~D() {} };
-    void bar () {
-      struct E {
-        void baz() { }
-      };
-      E().baz();
-    }
-  };
-  A().foo(0);
-  C::D();
-  C().bar();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-address-space.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-address-space.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-address-space.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: define void @_Z2f0Pc
-void f0(char *p) { }
-// CHECK: define void @_Z2f0PU3AS1c
-void f0(char __attribute__((address_space(1))) *p) { }
-
-struct OpaqueType;
-typedef OpaqueType __attribute__((address_space(100))) * OpaqueTypePtr;
-
-// CHECK: define void @_Z2f0PU5AS10010OpaqueType
-void f0(OpaqueTypePtr) { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-alias-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-alias-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-alias-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-template<typename T> struct alloc {};
-template<typename T> using Alloc = alloc<T>;
-template<typename T, typename A = Alloc<T>> struct vector {};
-
-template<typename T> using Vec = vector<T>;
-
-template<typename T> void f(Vec<T> v);
-template<typename T> void g(T);
-
-template<template<typename> class F> void h(F<int>);
-
-template<typename,typename,typename> struct S {};
-template<typename T, typename U> using U = S<T, int, U>;
-template<typename...Ts> void h(U<Ts...>, Ts...);
-
-// CHECK: define void @_Z1zv(
-void z() {
-  vector<int> VI;
-  f(VI);
-  // CHECK: call void @_Z1fIiEv6vectorIT_5allocIS1_EE(
-
-  Vec<double> VD;
-  g(VD);
-  // CHECK: call void @_Z1gI6vectorId5allocIdEEEvT_(
-
-  h<Vec>(VI);
-  // CHECK: call void @_Z1hI3VecEvT_IiE(
-
-  Alloc<int> AC;
-  h(AC);
-  // CHECK: call void @_Z1hI5allocEvT_IiE(
-
-  h<Alloc>(AC);
-  // CHECK: call void @_Z1hI5AllocEvT_IiE(
-
-  Vec<char> VC;
-  g<Vec<char>>(VC);
-  // CHECK: call void @_Z1gI6vectorIc5allocIcEEEvT_(
-
-  Vec<Vec<int>> VVI;
-  g(VVI);
-  // CHECK: call void @_Z1gI6vectorIS0_Ii5allocIiEES1_IS3_EEEvT_(
-
-  // CHECK: call void @_Z1hIJidEEv1UIDpT_ES2_
-  h({}, 0, 0.0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-exprs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-exprs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-exprs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,200 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
-
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  // libc++'s implementation
-  template <class _E>
-  class initializer_list
-  {
-    const _E* __begin_;
-    size_t    __size_;
-
-    initializer_list(const _E* __b, size_t __s)
-      : __begin_(__b),
-        __size_(__s)
-    {}
-
-  public:
-    typedef _E        value_type;
-    typedef const _E& reference;
-    typedef const _E& const_reference;
-    typedef size_t    size_type;
-
-    typedef const _E* iterator;
-    typedef const _E* const_iterator;
-
-    initializer_list() : __begin_(nullptr), __size_(0) {}
-
-    size_t    size()  const {return __size_;}
-    const _E* begin() const {return __begin_;}
-    const _E* end()   const {return __begin_ + __size_;}
-  };
-}
-
-template < bool condition, typename T = void >
-struct enable_if { typedef T type; };
-
-template< typename T >
-struct enable_if< false, T > {};
-
-// PR5876
-namespace Casts {
-  template< unsigned O >
-  void implicit(typename enable_if< O <= 4 >::type* = 0) {
-  }
-  
-  template< unsigned O >
-  void cstyle(typename enable_if< O <= (unsigned)4 >::type* = 0) {
-  }
-
-  template< unsigned O >
-  void functional(typename enable_if< O <= unsigned(4) >::type* = 0) {
-  }
-  
-  template< unsigned O >
-  void static_(typename enable_if< O <= static_cast<unsigned>(4) >::type* = 0) {
-  }
-
-  template< typename T >
-  void auto_(decltype(new auto(T()))) {
-  }
-
-  template< typename T >
-  void scalar_(decltype(T(), int())) {
-  }
-
-  // FIXME: Test const_cast, reinterpret_cast, dynamic_cast, which are
-  // a bit harder to use in template arguments.
-  template <unsigned N> struct T {};
-
-  template <int N> T<N> f() { return T<N>(); }
-  
-  // CHECK: define weak_odr void @_ZN5Casts8implicitILj4EEEvPN9enable_ifIXleT_Li4EEvE4typeE
-  template void implicit<4>(void*);
-  // CHECK: define weak_odr void @_ZN5Casts6cstyleILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE
-  template void cstyle<4>(void*);
-  // CHECK: define weak_odr void @_ZN5Casts10functionalILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE
-  template void functional<4>(void*);
-  // CHECK: define weak_odr void @_ZN5Casts7static_ILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE
-  template void static_<4>(void*);
-
-  // CHECK: define weak_odr void @_ZN5Casts1fILi6EEENS_1TIXT_EEEv
-  template T<6> f<6>();
-
-  // CHECK: define weak_odr void @_ZN5Casts5auto_IiEEvDTnw_DapicvT__EEE(
-  template void auto_<int>(int*);
-
-  // CHECK: define weak_odr void @_ZN5Casts7scalar_IiEEvDTcmcvT__Ecvi_EE(
-  template void scalar_<int>(int);
-}
-
-namespace test1 {
-  short foo(short);
-  int foo(int);
-
-  // CHECK: define linkonce_odr signext i16 @_ZN5test11aIsEEDTcl3foocvT__EEES1_(
-  template <class T> auto a(T t) -> decltype(foo(T())) { return foo(t); }
-
-  // CHECK: define linkonce_odr signext i16 @_ZN5test11bIsEEDTcp3foocvT__EEES1_(
-  template <class T> auto b(T t) -> decltype((foo)(T())) { return (foo)(t); }
-
-  void test(short s) {
-    a(s);
-    b(s);
-  }
-}
-
-namespace test2 {
-  template <class T> void a(T x, decltype(x()) y) {}
-  template <class T> auto b(T x) -> decltype(x()) { return x(); }
-  template <class T> void c(T x, void (*p)(decltype(x()))) {}
-  template <class T> void d(T x, auto (*p)() -> decltype(x())) {}
-  template <class T> void e(auto (*p)(T y) -> decltype(y())) {}
-  template <class T> void f(void (*p)(T x, decltype(x()) y)) {}
-  template <class T> void g(T x, decltype(x()) y) {
-    static decltype(x()) variable;
-    variable = 0;
-  }
-  template <class T> void h(T x, decltype((decltype(x())(*)()) 0) y) {}
-  template <class T> void i(decltype((auto (*)(T x) -> decltype(x())) 0) y) {}
-
-  float foo();
-  void bar(float);
-  float baz(float(*)());
-  void fred(float(*)(), float);
-
-  // CHECK: define void @_ZN5test211instantiateEv
-  void instantiate() {
-    // CHECK: call void @_ZN5test21aIPFfvEEEvT_DTclfL0p_EE(
-    a(foo, 0.0f);
-    // CHECK: call float @_ZN5test21bIPFfvEEEDTclfp_EET_(
-    (void) b(foo);
-    // CHECK: call void @_ZN5test21cIPFfvEEEvT_PFvDTclfL1p_EEE(
-    c(foo, bar);
-    // CHECK: call void @_ZN5test21dIPFfvEEEvT_PFDTclfL0p_EEvE(
-    d(foo, foo);
-    // CHECK: call void @_ZN5test21eIPFfvEEEvPFDTclfp_EET_E(
-    e(baz);
-    // CHECK: call void @_ZN5test21fIPFfvEEEvPFvT_DTclfL0p_EEE(
-    f(fred);
-    // CHECK: call void @_ZN5test21gIPFfvEEEvT_DTclfL0p_EE(
-    g(foo, 0.0f);
-    // CHECK: call void @_ZN5test21hIPFfvEEEvT_DTcvPFDTclfL0p_EEvELi0EE(
-    h(foo, foo);
-    // CHECK: call void @_ZN5test21iIPFfvEEEvDTcvPFDTclfp_EET_ELi0EE(
-    i<float(*)()>(baz);
-  }
-
-  // CHECK: store float {{.*}}, float* @_ZZN5test21gIPFfvEEEvT_DTclfL0p_EEE8variable,
-}
-
-namespace test3 {
-  template <class T, class U> void a(T x, U y, decltype(x.*y) z) {}  
-
-  struct X {
-    int *member;
-  };
-
-  // CHECK: define void @_ZN5test311instantiateEv
-  void instantiate() {
-    X x;
-    int *ip;
-    // CHECK: call void @_ZN5test31aINS_1XEMS1_PiEEvT_T0_DTdsfL0p_fL0p0_E
-    a(x, &X::member, ip);
-  }
-}
-
-namespace test4 {
-  struct X {
-    X(int);
-  };
-
-  template <typename T>
-  void tf1(decltype(new T(1)) p)
-  {}
-
-  template <typename T>
-  void tf2(decltype(new T({1})) p)
-  {}
-
-  template <typename T>
-  void tf3(decltype(new T{1}) p)
-  {}
-
-  // CHECK: void @_ZN5test43tf1INS_1XEEEvDTnw_T_piLi1EEE
-  template void tf1<X>(X*);
-
-  // CHECK: void @_ZN5test43tf2INS_1XEEEvDTnw_T_piilLi1EEEE
-  template void tf2<X>(X*);
-
-  // CHECK: void @_ZN5test43tf3INS_1XEEEvDTnw_T_ilLi1EEE
-  template void tf3<X>(X*);
-
-}
-
-namespace test5 {
-  template <typename T> void a(decltype(noexcept(T()))) {}
-  template void a<int>(decltype(noexcept(int())));
-  // CHECK: void @_ZN5test51aIiEEvDTnxcvT__EE(
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-extern-local.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-extern-local.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-extern-local.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - | FileCheck %s
-
-// CHECK: @var1 = external global i32
-// CHECK: @_ZN1N4var2E = external global i32
-// CHECK: @var5 = external global i32
-// CHECK: @_ZN1N4var3E = external global i32
-// CHECK: @_ZN1N4var4E = external global i32
-
-// CHECK: declare i32 @_Z5func1v()
-// CHECK: declare i32 @_ZN1N5func2Ev()
-// CHECK: declare i32 @func4()
-// CHECK: declare i32 @_ZN1N5func3Ev()
-
-int f1() {
-  extern int var1, func1();
-  return var1 + func1();
-}
-
-namespace N {
-
-int f2() {
-  extern int var2, func2();
-  return var2 + func2();
-}
-
-struct S {
-  static int f3() {
-    extern int var3, func3();
-    struct LC { int localfunc() { extern int var4; return var4; } };
-    LC localobj;
-    return var3 + func3() + localobj.localfunc();
-  }
-};
-
-int anchorf3() { return S::f3(); } 
-
-extern "C" {
-int f4() {
-  extern int var5, func4();
-  return var5 + func4();
-}
-}
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-extreme.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-extreme.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-extreme.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
-
-struct X { };
-
-// CHECK: define void @_Z1fPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP1XS13_S12_S11_S10_SZ_SY_SX_SW_SV_SU_ST_SS_SR_SQ_SP_SO_SN_SM_SL_SK_SJ_SI_SH_SG_SF_SE_SD_SC_SB_SA_S9_S8_S7_S6_S5_S4_S3_S2_S1_S0_S_(
-void f(X****************************************,
-       X****************************************,
-       X***************************************,
-       X**************************************,
-       X*************************************,
-       X************************************,
-       X***********************************,
-       X**********************************,
-       X*********************************,
-       X********************************,
-       X*******************************,
-       X******************************,
-       X*****************************,
-       X****************************,
-       X***************************,
-       X**************************,
-       X*************************,
-       X************************,
-       X***********************,
-       X**********************,
-       X*********************,
-       X********************,
-       X*******************,
-       X******************,
-       X*****************,
-       X****************,
-       X***************,
-       X**************,
-       X*************,
-       X************,
-       X***********,
-       X**********,
-       X*********,
-       X********,
-       X*******,
-       X******,
-       X*****,
-       X****,
-       X***,
-       X**,
-       X*,
-       X) { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-lambdas.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-lambdas.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-lambdas.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,252 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-macosx10.7.0 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @_ZZNK7PR12917IJiiEE1nMUlvE_clEvE1n = linkonce_odr global i32 0
-// CHECK: @_ZZN7PR12917IJicdEEC1EicdEd_N1nE = linkonce_odr global i32 0
-// CHECK: @_ZZN7PR12917IJicdEEC1EicdEd0_N1nE = linkonce_odr global i32 0
-// CHECK: @_ZZN7PR12917IJicdEEC1EicdEd1_N1nE = linkonce_odr global i32 0
-
-// CHECK: define linkonce_odr void @_Z11inline_funci
-inline void inline_func(int n) {
-  // CHECK: call i32 @_ZZ11inline_funciENKUlvE_clEv
-  int i = []{ return 1; }();
-
-  // CHECK: call i32 @_ZZ11inline_funciENKUlvE0_clEv
-  int j = [=] { return n + i; }();
-
-  // CHECK: call double @_ZZ11inline_funciENKUlvE1_clEv
-  int k = [=] () -> double { return n + i; }();
-
-  // CHECK: call i32 @_ZZ11inline_funciENKUliE_clEi
-  int l = [=] (int x) -> int { return x + i; }(n);
-
-  int inner(int i = []{ return 17; }());
-  // CHECK: call i32 @_ZZ11inline_funciENKUlvE2_clEv
-  // CHECK-NEXT: call i32 @_Z5inneri
-  inner();
-
-  // CHECK-NEXT: ret void
-}
-
-void call_inline_func() {
-  inline_func(17);
-}
-
-struct S {
-  void f(int = []{return 1;}()
-             + []{return 2;}(),
-         int = []{return 3;}());
-  void g(int, int);
-};
-
-void S::g(int i = []{return 1;}(),
-          int j = []{return 2; }()) {}
-
-// CHECK: define void @_Z6test_S1S
-void test_S(S s) {
-  // CHECK: call i32 @_ZZN1S1fEiiEd0_NKUlvE_clEv
-  // CHECK-NEXT: call i32 @_ZZN1S1fEiiEd0_NKUlvE0_clEv
-  // CHECK-NEXT: add nsw i32
-  // CHECK-NEXT: call i32 @_ZZN1S1fEiiEd_NKUlvE_clEv
-  // CHECK-NEXT: call void @_ZN1S1fEii
-  s.f();
-
-  // NOTE: These manglings don't actually matter that much, because
-  // the lambdas in the default arguments of g() won't be seen by
-  // multiple translation units. We check them mainly to ensure that they don't 
-  // get the special mangling for lambdas in in-class default arguments.
-  // CHECK: call i32 @"_ZNK1S3$_0clEv"
-  // CHECK-NEXT: call i32 @"_ZNK1S3$_1clEv"
-  // CHECK-NEXT: call void @_ZN1S1gEi
-  s.g();
-
-  // CHECK-NEXT: ret void
-}
-
-// Check the linkage of the lambda call operators used in test_S.
-// CHECK: define linkonce_odr i32 @_ZZN1S1fEiiEd0_NKUlvE_clEv
-// CHECK: ret i32 1
-// CHECK: define linkonce_odr i32 @_ZZN1S1fEiiEd0_NKUlvE0_clEv
-// CHECK: ret i32 2
-// CHECK: define linkonce_odr i32 @_ZZN1S1fEiiEd_NKUlvE_clEv
-// CHECK: ret i32 3
-// CHECK: define internal i32 @"_ZNK1S3$_0clEv"
-// CHECK: ret i32 1
-// CHECK: define internal i32 @"_ZNK1S3$_1clEv"
-// CHECK: ret i32 2
-
-template<typename T>
-struct ST {
-  void f(T = []{return T() + 1;}()
-           + []{return T() + 2;}(),
-         T = []{return T(3);}());
-};
-
-// CHECK: define void @_Z7test_ST2STIdE
-void test_ST(ST<double> st) {
-  // CHECK: call double @_ZZN2STIdE1fEddEd0_NKUlvE_clEv
-  // CHECK-NEXT: call double @_ZZN2STIdE1fEddEd0_NKUlvE0_clEv
-  // CHECK-NEXT: fadd double
-  // CHECK-NEXT: call double @_ZZN2STIdE1fEddEd_NKUlvE_clEv
-  // CHECK-NEXT: call void @_ZN2STIdE1fEdd
-  st.f();
-
-  // CHECK-NEXT: ret void
-}
-
-// Check the linkage of the lambda call operators used in test_ST.
-// CHECK: define linkonce_odr double @_ZZN2STIdE1fEddEd0_NKUlvE_clEv
-// CHECK: ret double 1
-// CHECK: define linkonce_odr double @_ZZN2STIdE1fEddEd0_NKUlvE0_clEv
-// CHECK: ret double 2
-// CHECK: define linkonce_odr double @_ZZN2STIdE1fEddEd_NKUlvE_clEv
-// CHECK: ret double 3
-
-template<typename T> 
-struct StaticMembers {
-  static T x;
-  static T y;
-  static T z;
-};
-
-template<typename T> int accept_lambda(T);
-
-template<typename T>
-T StaticMembers<T>::x = []{return 1;}() + []{return 2;}();
-
-template<typename T>
-T StaticMembers<T>::y = []{return 3;}();
-
-template<typename T>
-T StaticMembers<T>::z = accept_lambda([]{return 4;});
-
-// CHECK: define internal void @__cxx_global_var_init()
-// CHECK: call i32 @_ZNK13StaticMembersIfE1xMUlvE_clEv
-// CHECK-NEXT: call i32 @_ZNK13StaticMembersIfE1xMUlvE0_clEv
-// CHECK-NEXT: add nsw
-// CHECK: define linkonce_odr i32 @_ZNK13StaticMembersIfE1xMUlvE_clEv
-// CHECK: ret i32 1
-// CHECK: define linkonce_odr i32 @_ZNK13StaticMembersIfE1xMUlvE0_clEv
-// CHECK: ret i32 2
-template float StaticMembers<float>::x;
-
-// CHECK: define internal void @__cxx_global_var_init1()
-// CHECK: call i32 @_ZNK13StaticMembersIfE1yMUlvE_clEv
-// CHECK: define linkonce_odr i32 @_ZNK13StaticMembersIfE1yMUlvE_clEv
-// CHECK: ret i32 3
-template float StaticMembers<float>::y;
-
-// CHECK: define internal void @__cxx_global_var_init2()
-// CHECK: call i32 @_Z13accept_lambdaIN13StaticMembersIfE1zMUlvE_EEiT_
-// CHECK: declare i32 @_Z13accept_lambdaIN13StaticMembersIfE1zMUlvE_EEiT_()
-template float StaticMembers<float>::z;
-
-// CHECK: define internal void @__cxx_global_var_init3
-// CHECK: call i32 @"_ZNK13StaticMembersIdE3$_2clEv"
-// CHECK: define internal i32 @"_ZNK13StaticMembersIdE3$_2clEv"
-// CHECK: ret i32 42
-template<> double StaticMembers<double>::z = []{return 42; }();
-
-template<typename T>
-void func_template(T = []{ return T(); }());
-
-// CHECK: define void @_Z17use_func_templatev()
-void use_func_template() {
-  // CHECK: call i32 @"_ZZ13func_templateIiEvT_ENKS_IiE3$_3clEv"
-  func_template<int>();
-}
-
-
-template<typename...T> struct PR12917 {
-  PR12917(T ...t = []{ static int n = 0; return ++n; }());
-
-  static int n[3];
-};
-template<typename...T> int PR12917<T...>::n[3] = {
-  []{ static int n = 0; return ++n; }()
-};
-
-// CHECK: call i32 @_ZZN7PR12917IJicdEEC1EicdEd1_NKUlvE_clEv(
-// CHECK: call i32 @_ZZN7PR12917IJicdEEC1EicdEd0_NKUlvE_clEv(
-// CHECK: call i32 @_ZZN7PR12917IJicdEEC1EicdEd_NKUlvE_clEv(
-// CHECK: call void @_ZN7PR12917IJicdEEC1Eicd(
-PR12917<int, char, double> pr12917;
-int *pr12917_p = PR12917<int, int>::n;
-
-namespace std {
-  struct type_info;
-}
-namespace PR12123 {
-  struct A { virtual ~A(); } g;
-  struct B {
-    void f(const std::type_info& x = typeid([]()->A& { return g; }()));
-    void h();
-  };
-  void B::h() { f(); }
-}
-// CHECK: define linkonce_odr %"struct.PR12123::A"* @_ZZN7PR121231B1fERKSt9type_infoEd_NKUlvE_clEv
-
-namespace PR12808 {
-  template <typename> struct B {
-    int a;
-    template <typename L> constexpr B(L&& x) : a(x()) { }
-  };
-  template <typename> void b(int) {
-    [&]{ (void)B<int>([&]{ return 1; }); }();
-  }
-  void f() {
-    b<int>(1);
-  }
-  // CHECK: define linkonce_odr void @_ZZN7PR128081bIiEEviENKS0_IiEUlvE_clEv
-  // CHECK: define linkonce_odr i32 @_ZZZN7PR128081bIiEEviENKS0_IiEUlvE_clEvENKUlvE_clEv
-}
-
-// CHECK: define linkonce_odr void @_Z1fIZZNK23TestNestedInstantiationclEvENKUlvE_clEvEUlvE_EvT_
-
-struct Members {
-  int x = [] { return 1; }() + [] { return 2; }();
-  int y = [] { return 3; }();
-};
-
-void test_Members() {
-  // CHECK: define linkonce_odr void @_ZN7MembersC2Ev
-  // CHECK: call i32 @_ZNK7Members1xMUlvE_clEv
-  // CHECK-NEXT: call i32 @_ZNK7Members1xMUlvE0_clE
-  // CHECK-NEXT: add nsw i32
-  // CHECK: call i32 @_ZNK7Members1yMUlvE_clEv
-  Members members;
-  // CHECK: ret void
-}
-
-template<typename P> void f(P) { }
-
-struct TestNestedInstantiation {
-   void operator()() const {
-     []() -> void {
-       return f([]{});
-     }();
-   }
-};
-
-void test_NestedInstantiation() {
-  TestNestedInstantiation()();
-}
-
-// Check the linkage of the lambdas used in test_Members.
-// CHECK: define linkonce_odr i32 @_ZNK7Members1xMUlvE_clEv
-// CHECK: ret i32 1
-// CHECK: define linkonce_odr i32 @_ZNK7Members1xMUlvE0_clEv
-// CHECK: ret i32 2
-// CHECK: define linkonce_odr i32 @_ZNK7Members1yMUlvE_clEv
-// CHECK: ret i32 3
-
-// Check linkage of the various lambdas.
-// CHECK: define linkonce_odr i32 @_ZZ11inline_funciENKUlvE_clEv
-// CHECK: ret i32 1
-// CHECK: define linkonce_odr i32 @_ZZ11inline_funciENKUlvE0_clEv
-// CHECK: ret i32
-// CHECK: define linkonce_odr double @_ZZ11inline_funciENKUlvE1_clEv
-// CHECK: ret double
-// CHECK: define linkonce_odr i32 @_ZZ11inline_funciENKUliE_clEi
-// CHECK: ret i32
-// CHECK: define linkonce_odr i32 @_ZZ11inline_funciENKUlvE2_clEv
-// CHECK: ret i32 17

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-class-names.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-class-names.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-class-names.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK:  @_ZZ4FUNCvEN4SSSSC1ERKf
-// CHECK: @_ZZ4FUNCvEN4SSSSC2E_0RKf
-// CHECK:  @_ZZ4GORFfEN4SSSSC1ERKf
-// CHECK: @_ZZ4GORFfEN4SSSSC2E_0RKf
-
-void FUNC ()
-{
-  {
-    float IVAR1 ;
-
-    struct SSSS 
-    {
-      float bv;
-      SSSS( const float& from): bv(from) { }
-    };
-
-    SSSS VAR1(IVAR1);
-   }
-
-   {
-    float IVAR2 ;
-
-    struct SSSS
-    {
-     SSSS( const float& from) {}
-    };
-
-    SSSS VAR2(IVAR2);
-   }
-}
-
-void GORF (float IVAR1)
-{
-  {
-    struct SSSS 
-    {
-      float bv;
-      SSSS( const float& from): bv(from) { }
-    };
-
-    SSSS VAR1(IVAR1);
-   }
-
-   {
-    float IVAR2 ;
-
-    struct SSSS
-    {
-     SSSS( const float& from) {}
-    };
-
-    SSSS VAR2(IVAR2);
-   }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-class-vtables.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-class-vtables.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-class-vtables.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: @_ZTVZN1J1KEvE1C = {{.*}} @_ZTIZN1J1KEvE1C {{.*}} @_ZZN1J1KEvENK1C1FEv 
-// CHECK: @_ZTIZN1J1KEvE1C = {{.*}} @_ZTSZN1J1KEvE1C
-// CHECK: @_ZTVZ1GvE1C_1 = {{.*}} @_ZTIZ1GvE1C_1 {{.*}} @_ZZ1GvENK1C1FE_1v 
-// CHECK: @_ZTIZ1GvE1C_1 = {{.*}} @_ZTSZ1GvE1C_1
-// CHECK: @_ZTVZ1GvE1C_0 = {{.*}} @_ZTIZ1GvE1C_0 {{.*}} @_ZZ1GvENK1C1FE_0v 
-// CHECK: @_ZTIZ1GvE1C_0 = {{.*}} @_ZTSZ1GvE1C_0
-// CHECK: @_ZTVZ1GvE1C = {{.*}} @_ZTIZ1GvE1C {{.*}} @_ZZ1GvENK1C1FEv 
-// CHECK: @_ZTIZ1GvE1C = {{.*}} @_ZTSZ1GvE1C
-
-// CHECK: define {{.*}} @_ZZN1J1KEvEN1CC2Ev(
-// CHECK: define {{.*}} @_ZZN1J1KEvENK1C1FEv(
-// CHECK: define {{.*}} @_ZZ1GvEN1CC2E_1v(
-// CHECK: define {{.*}} @_ZZ1GvENK1C1FE_1v(
-// CHECK: define {{.*}} @_ZZ1GvENK1C1HE_1v(
-// CHECK: define {{.*}} @_ZZ1GvEN1CC2E_0v(
-// CHECK: define {{.*}} @_ZZ1GvENK1C1FE_0v(
-// CHECK: define {{.*}} @_ZZ1GvENK1C1GE_0v(
-// CHECK: define {{.*}} @_ZZ1GvEN1CC2Ev(
-// CHECK: define {{.*}} @_ZZ1GvENK1C1FEv(
-
-struct I { 
-  virtual void F() const = 0;
-};
-
-void Go(const I &i);
-
-void G() { 
-  { 
-    struct C : I { 
-      void F() const {}
-    };
-    Go(C());
-  }
-  { 
-    struct C : I { 
-      void F() const { G(); }
-      void G() const {}
-    };
-    Go(C());
-  }
-  { 
-    struct C : I { 
-      void F() const { H(); }
-      void H() const {}
-    };
-    Go(C());
-  }
-}
-
-struct J {
-  void K();
-};
-
-void J::K() {
-  struct C : I {
-    void F() const {}
-  };
-  Go(C());
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-classes-nested.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-classes-nested.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-local-classes-nested.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: @_ZTVZZ1HvEN1S1IEvE1S = 
-
-// CHECK: define {{.*}} @_Z2L1v(
-// CHECK: define {{.*}} @_ZZ2L1vEN1S2L2Ev(
-// CHECK: define {{.*}} @_ZZ2L1vEN1S2L2E_0v(
-// CHECK: define {{.*}} @_ZZ1FvEN1S1T1S1T1GEv(
-// CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2E_0vEN1S3L3cEv(
-// CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2E_0vEN1S3L3dE_0v(
-// CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2EvEN1S3L3aEv(
-// CHECK: define {{.*}} @_ZZZ2L1vEN1S2L2EvEN1S3L3bE_0v(
-
-void L1() {
-  {
-    struct S {
-      void L2() {
-        {
-          struct S {
-            void L3a() {}
-          };
-          S().L3a();
-        }
-        {
-          struct S {
-            void L3b() {}
-          };
-          S().L3b();
-        }
-      }
-    };
-    S().L2();
-  }
-  {
-    struct S {
-      void L2() {
-        {
-          struct S {
-            void L3c() {}
-          };
-          S().L3c();
-        }
-        {
-          struct S {
-            void L3d() {}
-          };
-          S().L3d();
-        }
-      }
-    };
-    S().L2();
-  }
-}
-
-void F() {
-  struct S {
-    struct T {
-      struct S {
-        struct T {
-          void G() {}
-        };
-      };
-    };
-  };
-  S::T::S::T().G();
-}
-
-struct B { virtual void Foo() = 0; };
-void G(const B &);
-
-void H() {
-  struct S {
-    void I() {
-      struct S : B {
-        virtual void Foo() {}
-      };
-      G(S());
-    }
-  };
-  S().I();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-abi-examples.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-abi-examples.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-abi-examples.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -fno-rtti -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-// CHECK: @"\01??_7D at C@?1??foo@@YAXXZ at 6B@" =
-// CHECK: @"\01??_7B@?1??foo at A@@QAEXH at Z@6B@" =
-// CHECK: define {{.*}} @"\01?baz at E@?3??bar at C@?1??foo@@YAXXZ at QAEXXZ@QAEXXZ"(
-
-// Microsoft Visual C++ ABI examples.
-struct A {
-  void foo (int) {
-    struct B { virtual ~B() {} };
-    B();
-  }
-};
-void foo () {
-  struct C {
-    struct D { virtual ~D() {} };
-    void bar () {
-      struct E {
-        void baz() { }
-      };
-      E().baz();
-    }
-  };
-  A().foo(0);
-  C::D();
-  C().bar();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,123 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-void foo(const unsigned int) {}
-// CHECK: "\01?foo@@YAXI at Z"
-
-void foo(const double) {}
-// CHECK: "\01?foo@@YAXN at Z"
-
-void bar(const volatile double) {}
-// CHECK: "\01?bar@@YAXN at Z"
-
-void foo_pad(char * x) {}
-// CHECK: "\01?foo_pad@@YAXPAD at Z"
-
-void foo_pbd(const char * x) {}
-// CHECK: "\01?foo_pbd@@YAXPBD at Z"
-
-void foo_pcd(volatile char * x) {}
-// CHECK: "\01?foo_pcd@@YAXPCD at Z"
-
-void foo_qad(char * const x) {}
-// CHECK: "\01?foo_qad@@YAXQAD at Z"
-
-void foo_rad(char * volatile x) {}
-// CHECK: "\01?foo_rad@@YAXRAD at Z"
-
-void foo_sad(char * const volatile x) {}
-// CHECK: "\01?foo_sad@@YAXSAD at Z"
-
-void foo_papad(char ** x) {}
-// CHECK: "\01?foo_papad@@YAXPAPAD at Z"
-
-void foo_papbd(char const ** x) {}
-// CHECK: "\01?foo_papbd@@YAXPAPBD at Z"
-
-void foo_papcd(char volatile ** x) {}
-// CHECK: "\01?foo_papcd@@YAXPAPCD at Z"
-
-void foo_pbqad(char * const* x) {}
-// CHECK: "\01?foo_pbqad@@YAXPBQAD at Z"
-
-void foo_pcrad(char * volatile* x) {}
-// CHECK: "\01?foo_pcrad@@YAXPCRAD at Z"
-
-void foo_qapad(char ** const x) {}
-// CHECK: "\01?foo_qapad@@YAXQAPAD at Z"
-
-void foo_rapad(char ** volatile x) {}
-// CHECK: "\01?foo_rapad@@YAXRAPAD at Z"
-
-void foo_pbqbd(const char * const* x) {}
-// CHECK: "\01?foo_pbqbd@@YAXPBQBD at Z"
-
-void foo_pbqcd(volatile char * const* x) {}
-// CHECK: "\01?foo_pbqcd@@YAXPBQCD at Z"
-
-void foo_pcrbd(const char * volatile* x) {}
-// CHECK: "\01?foo_pcrbd@@YAXPCRBD at Z"
-
-void foo_pcrcd(volatile char * volatile* x) {}
-// CHECK: "\01?foo_pcrcd@@YAXPCRCD at Z"
-
-void foo_aad(char &x) {}
-// CHECK: "\01?foo_aad@@YAXAAD at Z"
-
-void foo_abd(const char &x) {}
-// CHECK: "\01?foo_abd@@YAXABD at Z"
-
-void foo_aapad(char *&x) {}
-// CHECK: "\01?foo_aapad@@YAXAAPAD at Z"
-
-void foo_aapbd(const char *&x) {}
-// CHECK: "\01?foo_aapbd@@YAXAAPBD at Z"
-
-void foo_abqad(char * const &x) {}
-// CHECK: "\01?foo_abqad@@YAXABQAD at Z"
-
-void foo_abqbd(const char * const &x) {}
-// CHECK: "\01?foo_abqbd@@YAXABQBD at Z"
-
-void foo_aay144h(int (&x)[5][5]) {}
-// CHECK: "\01?foo_aay144h@@YAXAAY144H at Z"
-
-void foo_aay144cbh(const int (&x)[5][5]) {}
-// CHECK: "\01?foo_aay144cbh@@YAXAAY144$$CBH at Z"
-
-void foo_qay144h(int (&&x)[5][5]) {}
-// CHECK: "\01?foo_qay144h@@YAX$$QAY144H at Z"
-
-void foo_qay144cbh(const int (&&x)[5][5]) {}
-// CHECK: "\01?foo_qay144cbh@@YAX$$QAY144$$CBH at Z"
-
-void foo_p6ahxz(int x()) {}
-// CHECK: "\01?foo_p6ahxz@@YAXP6AHXZ at Z"
-
-void foo_a6ahxz(int (&x)()) {}
-// CHECK: "\01?foo_a6ahxz@@YAXA6AHXZ at Z"
-
-void foo_q6ahxz(int (&&x)()) {}
-// CHECK: "\01?foo_q6ahxz@@YAX$$Q6AHXZ at Z"
-
-void foo_qay04h(int x[5][5]) {}
-// CHECK: "\01?foo_qay04h@@YAXQAY04H at Z"
-
-void foo_qay04cbh(const int x[5][5]) {}
-// CHECK: "\01?foo_qay04cbh@@YAXQAY04$$CBH at Z"
-
-typedef double Vector[3];
-
-void foo(Vector*) {}
-// CHECK: "\01?foo@@YAXPAY02N at Z"
-
-void foo(Vector) {}
-// CHECK: "\01?foo@@YAXQAN at Z"
-
-void foo_const(const Vector) {}
-// CHECK: "\01?foo_const@@YAXQBN at Z"
-
-void foo_volatile(volatile Vector) {}
-// CHECK: "\01?foo_volatile@@YAXQCN at Z"
-
-void foo(Vector*, const Vector, const double) {}
-// CHECK: "\01?foo@@YAXPAY02NQBNN at Z"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-back-references-pr13207.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-back-references-pr13207.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-back-references-pr13207.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,165 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-template<class X, class Y, class Z>
-class A {};
-template<class X>
-class B {};
-template<class X>
-class C {};
-
-void foo_abbb(A<B<char>, B<char>, B<char> >) {}
-// CHECK: "\01?foo_abbb@@YAXV?$A at V?$B at D@@V1 at V1@@@@Z"
-void foo_abb(A<char, B<char>, B<char> >) {}
-// CHECK: "\01?foo_abb@@YAXV?$A at DV?$B at D@@V1@@@@Z"
-void foo_abc(A<char, B<char>, C<char> >) {}
-// CHECK: "\01?foo_abc@@YAXV?$A at DV?$B at D@@V?$C at D@@@@@Z"
-void foo_bt(bool a, B<bool(bool)> b) {}
-// CHECK: "\01?foo_bt@@YAX_NV?$B@$$A6A_N_N at Z@@@Z"
-
-namespace N {
-template<class X, class Y, class Z>
-class A {};
-template<class X>
-class B {};
-template<class X>
-class C {};
-template<class X, class Y>
-class D {};
-class Z {};
-}
-
-void foo_abbb(N::A<N::B<char>, N::B<char>, N::B<char> >) {}
-// CHECK: "\01?foo_abbb@@YAXV?$A at V?$B at D@N@@V12 at V12@@N@@@Z"
-void foo_abb(N::A<char, N::B<char>, N::B<char> >) {}
-// CHECK: "\01?foo_abb@@YAXV?$A at DV?$B at D@N@@V12@@N@@@Z"
-void foo_abc(N::A<char, N::B<char>, N::C<char> >) {}
-// CHECK: "\01?foo_abc@@YAXV?$A at DV?$B at D@N@@V?$C at D@2@@N@@@Z"
-
-N::A<char, N::B<char>, N::C<char> > abc_foo() {
-// CHECK: ?abc_foo@@YA?AV?$A at DV?$B at D@N@@V?$C at D@2@@N@@XZ
-  return N::A<char, N::B<char>, N::C<char> >();
-}
-
-N::Z z_foo(N::Z arg) {
-// CHECK: ?z_foo@@YA?AVZ at N@@V12@@Z
-  return arg;
-}
-
-N::B<char> b_foo(N::B<char> arg) {
-// CHECK: ?b_foo@@YA?AV?$B at D@N@@V12@@Z
-  return arg;
-}
-
-N::D<char, char> d_foo(N::D<char, char> arg) {
-// CHECK: ?d_foo@@YA?AV?$D at DD@N@@V12@@Z
-  return arg;
-}
-
-N::A<char, N::B<char>, N::C<char> > abc_foo_abc(N::A<char, N::B<char>, N::C<char> >) {
-// CHECK: ?abc_foo_abc@@YA?AV?$A at DV?$B at D@N@@V?$C at D@2@@N@@V12@@Z
-  return N::A<char, N::B<char>, N::C<char> >();
-}
-
-namespace NA {
-class X {};
-template<class T> class Y {};
-}
-
-namespace NB {
-class X {};
-template<class T> class Y {};
-}
-
-void foo5(NA::Y<NB::Y<NA::Y<NB::Y<NA::X> > > > arg) {}
-// CHECK: "\01?foo5@@YAXV?$Y at V?$Y at V?$Y at V?$Y at VX@NA@@@NB@@@NA@@@NB@@@NA@@@Z"
-
-void foo11(NA::Y<NA::X>, NB::Y<NA::X>) {}
-// CHECK: "\01?foo11@@YAXV?$Y at VX@NA@@@NA@@V1NB@@@Z"
-
-void foo112(NA::Y<NA::X>, NB::Y<NB::X>) {}
-// CHECK: "\01?foo112@@YAXV?$Y at VX@NA@@@NA@@V?$Y at VX@NB@@@NB@@@Z"
-
-void foo22(NA::Y<NB::Y<NA::X> >, NB::Y<NA::Y<NA::X> >) {}
-// CHECK: "\01?foo22@@YAXV?$Y at V?$Y at VX@NA@@@NB@@@NA@@V?$Y at V?$Y at VX@NA@@@NA@@@NB@@@Z"
-
-namespace PR13207 {
-class A {};
-class B {};
-class C {};
-
-template<class X>
-class F {};
-template<class X>
-class I {};
-template<class X, class Y>
-class J {};
-template<class X, class Y, class Z>
-class K {};
-
-class L {
- public:
-  void foo(I<A> x) {}
-};
-// CHECK: "\01?foo at L@PR13207@@QAEXV?$I at VA@PR13207@@@2@@Z"
-
-void call_l_foo(L* l) { l->foo(I<A>()); }
-
-void foo(I<A> x) {}
-// CHECK: "\01?foo at PR13207@@YAXV?$I at VA@PR13207@@@1@@Z"
-void foo2(I<A> x, I<A> y) { }
-// CHECK "\01?foo2 at PR13207@@YAXV?$I at VA@PR13207@@@1 at 0@Z"
-void bar(J<A,B> x) {}
-// CHECK: "\01?bar at PR13207@@YAXV?$J at VA@PR13207@@VB at 2@@1@@Z"
-void spam(K<A,B,C> x) {}
-// CHECK: "\01?spam at PR13207@@YAXV?$K at VA@PR13207@@VB at 2@VC at 2@@1@@Z"
-
-void baz(K<char, F<char>, I<char> >) {}
-// CHECK: "\01?baz at PR13207@@YAXV?$K at DV?$F at D@PR13207@@V?$I at D@2@@1@@Z"
-void qux(K<char, I<char>, I<char> >) {}
-// CHECK: "\01?qux at PR13207@@YAXV?$K at DV?$I at D@PR13207@@V12@@1@@Z"
-
-namespace NA {
-class X {};
-template<class T> class Y {};
-void foo(Y<X> x) {}
-// CHECK: "\01?foo at NA@PR13207@@YAXV?$Y at VX@NA at PR13207@@@12@@Z"
-void foofoo(Y<Y<X> > x) {}
-// CHECK: "\01?foofoo at NA@PR13207@@YAXV?$Y at V?$Y at VX@NA at PR13207@@@NA at PR13207@@@12@@Z"
-}
-
-namespace NB {
-class X {};
-template<class T> class Y {};
-void foo(Y<NA::X> x) {}
-// CHECK: "\01?foo at NB@PR13207@@YAXV?$Y at VX@NA at PR13207@@@12@@Z"
-
-void bar(NA::Y<X> x) {}
-// CHECK: "\01?bar at NB@PR13207@@YAXV?$Y at VX@NB at PR13207@@@NA at 2@@Z"
-
-void spam(NA::Y<NA::X> x) {}
-// CHECK: "\01?spam at NB@PR13207@@YAXV?$Y at VX@NA at PR13207@@@NA at 2@@Z"
-
-void foobar(NA::Y<Y<X> > a, Y<Y<X> >) {}
-// CHECK: "\01?foobar at NB@PR13207@@YAXV?$Y at V?$Y at VX@NB at PR13207@@@NB at PR13207@@@NA at 2@V312@@Z"
-
-void foobarspam(Y<X> a, NA::Y<Y<X> > b, Y<Y<X> >) {}
-// CHECK: "\01?foobarspam at NB@PR13207@@YAXV?$Y at VX@NB at PR13207@@@12 at V?$Y at V?$Y at VX@NB at PR13207@@@NB at PR13207@@@NA at 2@V412@@Z"
-
-void foobarbaz(Y<X> a, NA::Y<Y<X> > b, Y<Y<X> >, Y<Y<X> > c) {}
-// CHECK: "\01?foobarbaz at NB@PR13207@@YAXV?$Y at VX@NB at PR13207@@@12 at V?$Y at V?$Y at VX@NB at PR13207@@@NB at PR13207@@@NA at 2@V412 at 2@Z"
-
-void foobarbazqux(Y<X> a, NA::Y<Y<X> > b, Y<Y<X> >, Y<Y<X> > c , NA::Y<Y<Y<X> > > d) {}
-// CHECK: "\01?foobarbazqux at NB@PR13207@@YAXV?$Y at VX@NB at PR13207@@@12 at V?$Y at V?$Y at VX@NB at PR13207@@@NB at PR13207@@@NA at 2@V412 at 2V?$Y at V?$Y at V?$Y at VX@NB at PR13207@@@NB at PR13207@@@NB at PR13207@@@52@@Z"
-}
-
-namespace NC {
-class X {};
-template<class T> class Y {};
-
-void foo(Y<NB::X> x) {}
-// CHECK: "\01?foo at NC@PR13207@@YAXV?$Y at VX@NB at PR13207@@@12@@Z"
-
-void foobar(NC::Y<NB::Y<NA::Y<NA::X> > > x) {}
-// CHECK: "\01?foobar at NC@PR13207@@YAXV?$Y at V?$Y at V?$Y at VX@NA at PR13207@@@NA at PR13207@@@NB at PR13207@@@12@@Z"
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-back-references.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-back-references.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-back-references.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -fblocks -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-void f1(const char* a, const char* b) {}
-// CHECK: "\01?f1@@YAXPBD0 at Z"
-
-void f2(const char* a, char* b) {}
-// CHECK: "\01?f2@@YAXPBDPAD at Z"
-
-void f3(int a, const char* b, const char* c) {}
-// CHECK: "\01?f3@@YAXHPBD0 at Z"
-
-const char *f4(const char* a, const char* b) { return 0; }
-// CHECK: "\01?f4@@YAPBDPBD0 at Z"
-
-void f5(char const* a, unsigned int b, char c, void const* d, char const* e, unsigned int f) {}
-// CHECK: "\01?f5@@YAXPBDIDPBX0I at Z"
-
-void f6(bool a, bool b) {}
-// CHECK: "\01?f6@@YAX_N0 at Z"
-
-void f7(int a, int* b, int c, int* d, bool e, bool f, bool* g) {}
-// CHECK: "\01?f7@@YAXHPAHH0_N1PA_N at Z"
-
-// FIXME: tests for more than 10 types?
-
-struct S {
-  void mbb(bool a, bool b) {}
-};
-
-void g1(struct S a) {}
-// CHECK: "\01?g1@@YAXUS@@@Z"
-
-void g2(struct S a, struct S b) {}
-// CHECK: "\01?g2@@YAXUS@@0 at Z"
-
-void g3(struct S a, struct S b, struct S* c, struct S* d) {}
-// CHECK: "\01?g3@@YAXUS@@0PAU1 at 1@Z"
-
-void g4(const char* a, struct S* b, const char* c, struct S* d) {
-// CHECK: "\01?g4@@YAXPBDPAUS@@01 at Z"
-  b->mbb(false, false);
-// CHECK: "\01?mbb at S@@QAEX_N0 at Z"
-}
-
-// Make sure that different aliases of built-in types end up mangled as the
-// built-ins.
-typedef unsigned int uintptr_t;
-typedef unsigned int size_t;
-void *h(size_t a, uintptr_t b) { return 0; }
-// CHECK: "\01?h@@YAPAXII at Z"
-
-// Function pointers might be mangled in a complex way.
-typedef void (*VoidFunc)();
-typedef int* (*PInt3Func)(int* a, int* b);
-
-void h1(const char* a, const char* b, VoidFunc c, VoidFunc d) {}
-// CHECK: "\01?h1@@YAXPBD0P6AXXZ1 at Z"
-
-void h2(void (*f_ptr)(void *), void *arg) {}
-// CHECK: "\01?h2@@YAXP6AXPAX at Z0@Z"
-
-PInt3Func h3(PInt3Func x, PInt3Func y, int* z) { return 0; }
-// CHECK: "\01?h3@@YAP6APAHPAH0 at ZP6APAH00@Z10 at Z"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fms-extensions -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-// CHECK: "\01?LRef@@YAXAAH at Z"
-void LRef(int& a) { }
-
-// CHECK: "\01?RRef@@YAH$$QAH at Z"
-int RRef(int&& a) { return a; }
-
-// CHECK: "\01?Null@@YAX$$T at Z"
-namespace std { typedef decltype(__nullptr) nullptr_t; }
-void Null(std::nullptr_t) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-return-qualifiers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-return-qualifiers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-return-qualifiers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,179 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-void a1() {}
-// CHECK: "\01?a1@@YAXXZ"
-
-int a2() { return 0; }
-// CHECK: "\01?a2@@YAHXZ"
-
-const int a3() { return 0; }
-// CHECK: "\01?a3@@YA?BHXZ"
-
-volatile int a4() { return 0; }
-// CHECK: "\01?a4@@YA?CHXZ"
-
-const volatile int a5() { return 0; }
-// CHECK: "\01?a5@@YA?DHXZ"
-
-float a6() { return 0.0f; }
-// CHECK: "\01?a6@@YAMXZ"
-
-int *b1() { return 0; }
-// CHECK: "\01?b1@@YAPAHXZ"
-
-const char *b2() { return 0; }
-// CHECK: "\01?b2@@YAPBDXZ"
-
-float *b3() { return 0; }
-// CHECK: "\01?b3@@YAPAMXZ"
-
-const float *b4() { return 0; }
-// CHECK: "\01?b4@@YAPBMXZ"
-
-volatile float *b5() { return 0; }
-// CHECK: "\01?b5@@YAPCMXZ"
-
-const volatile float *b6() { return 0; }
-// CHECK: "\01?b6@@YAPDMXZ"
-
-float &b7() { return *(float*)0; }
-// CHECK: "\01?b7@@YAAAMXZ"
-
-const float &b8() { return *(float*)0; }
-// CHECK: "\01?b8@@YAABMXZ"
-
-volatile float &b9() { return *(float*)0; }
-// CHECK: "\01?b9@@YAACMXZ"
-
-const volatile float &b10() { return *(float*)0; }
-// CHECK: "\01?b10@@YAADMXZ"
-
-const char** b11() { return 0; }
-// CHECK: "\01?b11@@YAPAPBDXZ"
-
-class A {};
-
-A c1() { return A(); }
-// CHECK: "\01?c1@@YA?AVA@@XZ"
-
-const A c2() { return A(); }
-// CHECK: "\01?c2@@YA?BVA@@XZ"
-
-volatile A c3() { return A(); }
-// CHECK: "\01?c3@@YA?CVA@@XZ"
-
-const volatile A c4() { return A(); }
-// CHECK: "\01?c4@@YA?DVA@@XZ"
-
-const A* c5() { return 0; }
-// CHECK: "\01?c5@@YAPBVA@@XZ"
-
-volatile A* c6() { return 0; }
-// CHECK: "\01?c6@@YAPCVA@@XZ"
-
-const volatile A* c7() { return 0; }
-// CHECK: "\01?c7@@YAPDVA@@XZ"
-
-A &c8() { return *(A*)0; }
-// CHECK: "\01?c8@@YAAAVA@@XZ"
-
-const A &c9() { return *(A*)0; }
-// CHECK: "\01?c9@@YAABVA@@XZ"
-
-volatile A &c10() { return *(A*)0; }
-// CHECK: "\01?c10@@YAACVA@@XZ"
-
-const volatile A &c11() { return *(A*)0; }
-// CHECK: "\01?c11@@YAADVA@@XZ"
-
-template<typename T> class B {};
-
-B<int> d1() { return B<int>(); }
-// CHECK: "\01?d1@@YA?AV?$B at H@@XZ"
-
-B<const char*> d2() {return B<const char*>(); }
-// CHECK: "\01?d2@@YA?AV?$B at PBD@@XZ"
-
-B<A> d3() {return B<A>(); }
-// CHECK: "\01?d3@@YA?AV?$B at VA@@@@XZ"
-
-B<A>* d4() { return 0; }
-// CHECK: "\01?d4@@YAPAV?$B at VA@@@@XZ"
-
-const B<A>* d5() { return 0; }
-// CHECK: "\01?d5@@YAPBV?$B at VA@@@@XZ"
-
-volatile B<A>* d6() { return 0; }
-// CHECK: "\01?d6@@YAPCV?$B at VA@@@@XZ"
-
-const volatile B<A>* d7() { return 0; }
-// CHECK: "\01?d7@@YAPDV?$B at VA@@@@XZ"
-
-B<A>& d8() { return *(B<A>*)0; }
-// CHECK: "\01?d8@@YAAAV?$B at VA@@@@XZ"
-
-const B<A>& d9() { return *(B<A>*)0; }
-// CHECK: "\01?d9@@YAABV?$B at VA@@@@XZ"
-
-volatile B<A>& d10() { return *(B<A>*)0; }
-// CHECK: "\01?d10@@YAACV?$B at VA@@@@XZ"
-
-const volatile B<A>& d11() { return *(B<A>*)0; }
-// CHECK: "\01?d11@@YAADV?$B at VA@@@@XZ"
-
-enum Enum { DEFAULT };
-
-Enum e1() { return DEFAULT; }
-// CHECK: "\01?e1@@YA?AW4Enum@@XZ"
-
-const Enum e2() { return DEFAULT; }
-// CHECK: "\01?e2@@YA?BW4Enum@@XZ"
-
-Enum* e3() { return 0; }
-// CHECK: "\01?e3@@YAPAW4Enum@@XZ"
-
-Enum& e4() { return *(Enum*)0; }
-// CHECK: "\01?e4@@YAAAW4Enum@@XZ"
-
-struct S {};
-
-struct S f1() { struct S s; return s; }
-// CHECK: "\01?f1@@YA?AUS@@XZ"
-
-const struct S f2() { struct S s; return s; }
-// CHECK: "\01?f2@@YA?BUS@@XZ"
-
-struct S* f3() { return 0; }
-// CHECK: "\01?f3@@YAPAUS@@XZ"
-
-const struct S* f4() { return 0; }
-// CHECK: "\01?f4@@YAPBUS@@XZ"
-
-const volatile struct S* f5() { return 0; }
-// CHECK: "\01?f5@@YAPDUS@@XZ"
-
-struct S& f6() { return *(struct S*)0; }
-// CHECK: "\01?f6@@YAAAUS@@XZ"
-
-struct S* const f7() { return 0; }
-// CHECK: "\01?f7@@YAQAUS@@XZ"
-
-int S::* f8() { return 0; }
-// CHECK: "\01?f8@@YAPQS@@HXZ"
-
-int S::* const f9() { return 0; }
-// CHECK: "\01?f9@@YAQQS@@HXZ"
-
-typedef int (*function_pointer)(int);
-
-function_pointer g1() { return 0; }
-// CHECK: "\01?g1@@YAP6AHH at ZXZ"
-
-const function_pointer g2() { return 0; }
-// CHECK: "\01?g2@@YAQ6AHH at ZXZ"
-
-function_pointer* g3() { return 0; }
-// CHECK: "\01?g3@@YAPAP6AHH at ZXZ"
-
-const function_pointer* g4() { return 0; }
-// CHECK: "\01?g4@@YAPBQ6AHH at ZXZ"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-template-callback.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-template-callback.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-template-callback.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -fblocks -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-template<typename Signature>
-class C;
-
-template<typename Ret>
-class C<Ret(void)> {};
-typedef C<void(void)> C0;
-
-template<typename Ret, typename Arg1>
-class C<Ret(Arg1)> {};
-
-template<typename Ret, typename Arg1, typename Arg2>
-class C<Ret(Arg1, Arg2)> {};
-
-C0 callback_void;
-// CHECK: "\01?callback_void@@3V?$C@$$A6AXXZ@@A"
-
-volatile C0 callback_void_volatile;
-// CHECK: "\01?callback_void_volatile@@3V?$C@$$A6AXXZ@@C"
-
-class Type {};
-
-C<int(void)> callback_int;
-// CHECK: "\01?callback_int@@3V?$C@$$A6AHXZ@@A"
-C<Type(void)> callback_Type;
-// CHECK: "\01?callback_Type@@3V?$C@$$A6A?AVType@@XZ@@A"
-
-C<void(int)> callback_void_int;
-// CHECK: "\01?callback_void_int@@3V?$C@$$A6AXH at Z@@A"
-C<int(int)> callback_int_int;
-// CHECK: "\01?callback_int_int@@3V?$C@$$A6AHH at Z@@A"
-C<void(Type)> callback_void_Type;
-// CHECK: "\01?callback_void_Type@@3V?$C@$$A6AXVType@@@Z@@A"
-
-void foo(C0 c) {}
-// CHECK: "\01?foo@@YAXV?$C@$$A6AXXZ@@@Z"
-
-// Here be dragons!
-// Let's face the magic of template partial specialization...
-
-void function(C<void(void)>) {}
-// CHECK: "\01?function@@YAXV?$C@$$A6AXXZ@@@Z"
-
-template<typename Ret> class C<Ret(*)(void)> {};
-void function_pointer(C<void(*)(void)>) {}
-// CHECK: "\01?function_pointer@@YAXV?$C at P6AXXZ@@@Z"
-
-// Block equivalent to the previous definitions.
-template<typename Ret> class C<Ret(^)(void)> {};
-void block(C<void(^)(void)>) {}
-// CHECK: "\01?block@@YAXV?$C at P_EAXXZ@@@Z"
-// FYI blocks are not present in MSVS, so we're free to choose the spec.
-
-template<typename T> class C<void (T::*)(void)> {};
-class Z {
- public:
-  void method() {}
-};
-void member_pointer(C<void (Z::*)(void)>) {}
-// CHECK: "\01?member_pointer@@YAXV?$C at P8Z@@AEXXZ@@@Z"
-
-template<typename T> void bar(T) {}
-
-void call_bar() {
-  bar<int (*)(int)>(0);
-// CHECK: "\01??$bar at P6AHH@Z@@YAXP6AHH at Z@Z"
-
-  bar<int (^)(int)>(0);
-// CHECK: "\01??$bar at P_EAHH@Z@@YAXP_EAHH at Z@Z"
-// FYI blocks are not present in MSVS, so we're free to choose the spec.
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-template<typename T>
-class Class {
- public:
-  Class() {}
-};
-
-class Typename { };
-
-template<typename T>
-class Nested { };
-
-template<bool flag>
-class BoolTemplate {
- public:
-  BoolTemplate() {}
-};
-
-template<int param>
-class IntTemplate {
- public:
-  IntTemplate() {}
-};
-
-template<>
-class BoolTemplate<true> {
- public:
-  BoolTemplate() {}
-  template<class T> void Foo(T arg) {}
-};
-
-void template_mangling() {
-  Class<Typename> c1;
-// CHECK: call {{.*}} @"\01??0?$Class at VTypename@@@@QAE at XZ"
-
-  Class<const Typename> c1_const;
-// CHECK: call {{.*}} @"\01??0?$Class@$$CBVTypename@@@@QAE at XZ"
-  Class<volatile Typename> c1_volatile;
-// CHECK: call {{.*}} @"\01??0?$Class@$$CCVTypename@@@@QAE at XZ"
-  Class<const volatile Typename> c1_cv;
-// CHECK: call {{.*}} @"\01??0?$Class@$$CDVTypename@@@@QAE at XZ"
-
-  Class<Nested<Typename> > c2;
-// CHECK: call {{.*}} @"\01??0?$Class at V?$Nested at VTypename@@@@@@QAE at XZ"
-
-  Class<int * const> c_intpc;
-// CHECK: call {{.*}} @"\01??0?$Class at QAH@@QAE at XZ"
-  Class<int()> c_ft;
-// CHECK: call {{.*}} @"\01??0?$Class@$$A6AHXZ@@QAE at XZ"
-  Class<int[]> c_inti;
-// CHECK: call {{.*}} @"\01??0?$Class@$$BY0A at H@@QAE at XZ"
-  Class<int[5]> c_int5;
-// CHECK: call {{.*}} @"\01??0?$Class@$$BY04H@@QAE at XZ"
-  Class<const int[5]> c_intc5;
-// CHECK: call {{.*}} @"\01??0?$Class@$$BY04$$CBH@@QAE at XZ"
-  Class<int * const[5]> c_intpc5;
-// CHECK: call {{.*}} @"\01??0?$Class@$$BY04QAH@@QAE at XZ"
-
-  BoolTemplate<false> _false;
-// CHECK: call {{.*}} @"\01??0?$BoolTemplate@$0A@@@QAE at XZ"
-
-  BoolTemplate<true> _true;
-  // PR13158
-  _true.Foo(1);
-// CHECK: call {{.*}} @"\01??0?$BoolTemplate@$00@@QAE at XZ"
-// CHECK: call {{.*}} @"\01??$Foo at H@?$BoolTemplate@$00@@QAEXH at Z"
-
-  IntTemplate<0> zero;
-// CHECK: call {{.*}} @"\01??0?$IntTemplate@$0A@@@QAE at XZ"
-
-  IntTemplate<5> five;
-// CHECK: call {{.*}} @"\01??0?$IntTemplate@$04@@QAE at XZ"
-
-  IntTemplate<11> eleven;
-// CHECK: call {{.*}} @"\01??0?$IntTemplate@$0L@@@QAE at XZ"
-
-  IntTemplate<256> _256;
-// CHECK: call {{.*}} @"\01??0?$IntTemplate@$0BAA@@@QAE at XZ"
-
-  IntTemplate<513> _513;
-// CHECK: call {{.*}} @"\01??0?$IntTemplate@$0CAB@@@QAE at XZ"
-
-  IntTemplate<1026> _1026;
-// CHECK: call {{.*}} @"\01??0?$IntTemplate@$0EAC@@@QAE at XZ"
-
-  IntTemplate<65535> ffff;
-// CHECK: call {{.*}} @"\01??0?$IntTemplate@$0PPPP@@@QAE at XZ"
-}
-
-namespace space {
-  template<class T> const T& foo(const T& l) { return l; }
-}
-// CHECK: "\01??$foo at H@space@@YAABHABH at Z"
-
-void use() {
-  space::foo(42);
-}
-
-// PR13455
-typedef void (*FunctionPointer)(void);
-
-template <FunctionPointer function>
-void FunctionPointerTemplate() {
-  function();
-}
-
-void spam() {
-  FunctionPointerTemplate<spam>();
-// CHECK: "\01??$FunctionPointerTemplate@$1?spam@@YAXXZ@@YAXXZ"
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-vector-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-vector-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms-vector-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -ffreestanding -target-feature +avx -emit-llvm %s -o - -cxx-abi microsoft -triple=i686-pc-win32 | FileCheck %s
-
-#include <xmmintrin.h>
-#include <emmintrin.h>
-#include <immintrin.h>
-
-void foo64(__m64) {}
-// CHECK: define void @"\01?foo64@@YAXT__m64@@@Z"
-
-void foo128(__m128) {}
-// CHECK: define void @"\01?foo128@@YAXT__m128@@@Z"
-
-void foo128d(__m128d) {}
-// CHECK: define void @"\01?foo128d@@YAXU__m128d@@@Z"
-
-void foo128i(__m128i) {}
-// CHECK: define void @"\01?foo128i@@YAXT__m128i@@@Z"
-
-void foo256(__m256) {}
-// CHECK: define void @"\01?foo256@@YAXT__m256@@@Z"
-
-void foo256d(__m256d) {}
-// CHECK: define void @"\01?foo256d@@YAXU__m256d@@@Z"
-
-void foo256i(__m256i) {}
-// CHECK: define void @"\01?foo256i@@YAXT__m256i@@@Z"
-
-// We have a custom mangling for vector types not standardized by Intel.
-void foov8hi(__v8hi) {}
-// CHECK: define void @"\01?foov8hi@@YAXT__clang_vec8_F@@@Z"
-
-// Clang does not support vectors of complex types, so we can't test the
-// mangling of them.

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ms.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,197 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -fblocks -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-// RUN: %clang_cc1 -fms-compatibility -fblocks -emit-llvm %s -o - -cxx-abi microsoft -triple=x86_64-pc-win32 | FileCheck -check-prefix X64 %s
-
-// CHECK: @"\01?a@@3HA"
-// CHECK: @"\01?b at N@@3HA"
-// CHECK: @"\01?anonymous@?A at N@@3HA"
-// CHECK: @c
-// CHECK: @"\01?d at foo@@0FB"
-// CHECK: @"\01?e at foo@@1JC"
-// CHECK: @"\01?f at foo@@2DD"
-// CHECK: @"\01?g at bar@@2HA"
-// CHECK: @"\01?h1@@3QAHA"
-// CHECK: @"\01?h2@@3QBHB"
-// CHECK: @"\01?i@@3PAY0BE at HA"
-// CHECK: @"\01?j@@3P6GHCE at ZA"
-// CHECK: @"\01?k@@3PTfoo@@DA"
-// CHECK: @"\01?l@@3P8foo@@AEHH at ZA"
-// CHECK: @"\01?color1@@3PANA"
-// CHECK: @"\01?color2@@3QBNB"
-// CHECK: @"\01?color3@@3QAY02$$CBNA"
-// CHECK: @"\01?color4@@3QAY02$$CBNA"
-
-int a;
-
-namespace N {
-  int b;
-
-  namespace {
-    int anonymous;
-  }
-}
-
-static int c;
-int _c(void) {return N::anonymous + c;}
-// CHECK: @"\01?_c@@YAHXZ"
-
-class foo {
-  static const short d;
-protected:
-  static volatile long e;
-public:
-  static const volatile char f;
-  int operator+(int a);
-  foo(){}
-//CHECK: @"\01??0foo@@QAE at XZ"
-
-  ~foo(){}
-//CHECK: @"\01??1foo@@QAE at XZ"
-
-  foo(int i){}
-//CHECK: @"\01??0foo@@QAE at H@Z"
-
-  foo(char *q){}
-//CHECK: @"\01??0foo@@QAE at PAD@Z"
-
-  static foo* static_method() { return 0; }
-
-}f,s1(1),s2((char*)0);
-
-typedef foo (foo2);
-
-struct bar {
-  static int g;
-};
-
-union baz {
-  int a;
-  char b;
-  double c;
-};
-
-enum quux {
-  qone,
-  qtwo,
-  qthree
-};
-
-foo bar() { return foo(); }
-//CHECK: @"\01?bar@@YA?AVfoo@@XZ"
-
-int foo::operator+(int a) {
-//CHECK: @"\01??Hfoo@@QAEHH at Z"
-
-  foo::static_method();
-//CHECK: @"\01?static_method at foo@@SAPAV1 at XZ"
-  bar();
-  return a;
-}
-
-const short foo::d = 0;
-volatile long foo::e;
-const volatile char foo::f = 'C';
-
-int bar::g;
-
-extern int * const h1 = &a;
-extern const int * const h2 = &a;
-
-int i[10][20];
-
-int (__stdcall *j)(signed char, unsigned char);
-
-const volatile char foo2::*k;
-
-int (foo2::*l)(int);
-
-// Static functions are mangled, too.
-// Also make sure calling conventions, arglists, and throw specs work.
-static void __stdcall alpha(float a, double b) throw() {}
-bool __fastcall beta(long long a, wchar_t b) throw(signed char, unsigned char) {
-// CHECK: @"\01?beta@@YI_N_J_W at Z"
-  alpha(0.f, 0.0);
-  return false;
-}
-
-// CHECK: @"\01?alpha@@YGXMN at Z"
-// X64: @"\01?alpha@@YAXMN at Z"
-
-// Make sure tag-type mangling works.
-void gamma(class foo, struct bar, union baz, enum quux) {}
-// CHECK: @"\01?gamma@@YAXVfoo@@Ubar@@Tbaz@@W4quux@@@Z"
-
-// Make sure pointer/reference-type mangling works.
-void delta(int * const a, const long &) {}
-// CHECK: @"\01?delta@@YAXQAHABJ at Z"
-
-// Array mangling.
-void epsilon(int a[][10][20]) {}
-// CHECK: @"\01?epsilon@@YAXQAY19BE at H@Z"
-
-void zeta(int (*)(int, int)) {}
-// CHECK: @"\01?zeta@@YAXP6AHHH at Z@Z"
-
-// Blocks mangling (Clang extension). A block should be mangled slightly
-// differently from a similar function pointer.
-void eta(int (^)(int, int)) {}
-// CHECK: @"\01?eta@@YAXP_EAHHH at Z@Z"
-
-typedef int theta_arg(int,int);
-void theta(theta_arg^ block) {}
-// CHECK: @"\01?theta@@YAXP_EAHHH at Z@Z"
-
-void operator_new_delete() {
-  char *ptr = new char;
-// CHECK: @"\01??2 at YAPAXI@Z"
-
-  delete ptr;
-// CHECK: @"\01??3 at YAXPAX@Z"
-
-  char *array = new char[42];
-// CHECK: @"\01??_U at YAPAXI@Z"
-
-  delete [] array;
-// CHECK: @"\01??_V at YAXPAX@Z"
-}
-
-// PR13022
-void (redundant_parens)();
-void redundant_parens_use() { redundant_parens(); }
-// CHECK: @"\01?redundant_parens@@YAXXZ"
-
-// PR13047
-typedef double RGB[3];
-RGB color1;
-extern const RGB color2 = {};
-extern RGB const color3[5] = {};
-extern RGB const ((color4)[5]) = {};
-
-// PR12603
-enum E {};
-// CHECK: "\01?fooE@@YA?AW4E@@XZ"
-E fooE() { return E(); }
-
-class X {};
-// CHECK: "\01?fooX@@YA?AVX@@XZ"
-X fooX() { return X(); }
-
-namespace PR13182 {
-  extern char s0[];
-  // CHECK: @"\01?s0 at PR13182@@3PADA"
-  extern char s1[42];
-  // CHECK: @"\01?s1 at PR13182@@3PADA"
-  extern const char s2[];
-  // CHECK: @"\01?s2 at PR13182@@3QBDB"
-  extern const char s3[42];
-  // CHECK: @"\01?s3 at PR13182@@3QBDB"
-  extern volatile char s4[];
-  // CHECK: @"\01?s4 at PR13182@@3RCDC"
-  extern const volatile char s5[];
-  // CHECK: @"\01?s5 at PR13182@@3SDDD"
-  extern const char* const* s6;
-  // CHECK: @"\01?s6 at PR13182@@3PBQBDB"
-
-  char foo() {
-    return s0[0] + s1[0] + s2[0] + s3[0] + s4[0] + s5[0] + s6[0][0];
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-neon-vectors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-neon-vectors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-neon-vectors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-typedef float float32_t;
-typedef signed char poly8_t;
-typedef short poly16_t;
-typedef unsigned long long uint64_t;
-
-typedef __attribute__((neon_vector_type(2))) int int32x2_t;
-typedef __attribute__((neon_vector_type(4))) int int32x4_t;
-typedef __attribute__((neon_vector_type(1))) uint64_t uint64x1_t;
-typedef __attribute__((neon_vector_type(2))) uint64_t uint64x2_t;
-typedef __attribute__((neon_vector_type(2))) float32_t float32x2_t;
-typedef __attribute__((neon_vector_type(4))) float32_t float32x4_t;
-typedef __attribute__((neon_polyvector_type(16))) poly8_t  poly8x16_t;
-typedef __attribute__((neon_polyvector_type(8)))  poly16_t poly16x8_t;
-
-// CHECK: 16__simd64_int32_t
-void f1(int32x2_t v) { }
-// CHECK: 17__simd128_int32_t
-void f2(int32x4_t v) { }
-// CHECK: 17__simd64_uint64_t
-void f3(uint64x1_t v) { }
-// CHECK: 18__simd128_uint64_t
-void f4(uint64x2_t v) { }
-// CHECK: 18__simd64_float32_t
-void f5(float32x2_t v) { }
-// CHECK: 19__simd128_float32_t
-void f6(float32x4_t v) { }
-// CHECK: 17__simd128_poly8_t
-void f7(poly8x16_t v) { }
-// CHECK: 18__simd128_poly16_t
-void f8(poly16x8_t v) { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-nullptr-arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-nullptr-arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-nullptr-arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -o - %s | FileCheck %s
-
-template<int *ip> struct IP {};
-
-// CHECK: define void @_Z5test12IPILPi0EE
-void test1(IP<nullptr>) {}
-
-struct X{ };
-template<int X::*pm> struct PM {};
-
-// CHECK: define void @_Z5test22PMILM1Xi0EE
-void test2(PM<nullptr>) { }
-
-// CHECK: define void @_Z5test316DependentTypePtrIPiLS0_0EE
-template<typename T, T x> struct DependentTypePtr {};
-void test3(DependentTypePtr<int*,nullptr>) { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ref-qualifiers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ref-qualifiers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-ref-qualifiers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-struct X {
-  int f() &;
-  int g() &&;
-  int h() const &&;
-};
-
-// CHECK: define i32 @_ZNR1X1fEv
-int X::f() & { return 0; }
-// CHECK: define i32 @_ZNO1X1gEv
-int X::g() && { return 0; }
-// CHECK: define i32 @_ZNKO1X1hEv
-int X::h() const && { return 0; }
-
-// CHECK: define void @_Z1fM1XFivREMS_FivOEMS_KFivOE
-void f(int (X::*)() &, int (X::*)() &&, int (X::*)() const&&) { }
-
-// CHECK: define void @_Z1g1AIFivEES_IFivREES_IFivOEES_IKFivEES_IKFivREES_IKFivOEES_IVKFivEES_IVKFivREES_IVKFivOEE()
-template <class T> struct A {};
-void g(A<int()>, A<int()&>, A<int()&&>,
-       A<int() const>, A<int() const &>, A<int() const &&>,
-       A<int() const volatile>, A<int() const volatile &>, A<int() const volatile &&>) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-std-externc.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-std-externc.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-std-externc.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -DNS=std -emit-llvm -o - | FileCheck %s --check-prefix=CHECK-STD
-// RUN: %clang_cc1 %s -DNS=n -emit-llvm -o - | FileCheck %s --check-prefix=CHECK-N
-
-// _ZNSt1DISt1CE1iE = std::D<std::C>::i
-// CHECK-STD: @_ZNSt1DISt1CE1iE = 
-
-// _ZN1n1DINS_1CEE1iE == n::D<n::C>::i
-// CHECK-N: @_ZN1n1DINS_1CEE1iE = 
-
-namespace NS {
-  extern "C" {
-    class C {
-    };
-  }
-
-  template <class T>
-  class D {
-  public:
-    static int i;
-  };
-
-}
-
-
-int f() {
-  return NS::D<NS::C>::i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-subst-std.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-subst-std.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-subst-std.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,112 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
-
-// Check mangling of Vtables, VTTs, and construction vtables that
-// involve standard substitutions.
-
-// CHECK: @_ZTVSd = linkonce_odr unnamed_addr constant 
-// CHECK: @_ZTTSd = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTCSd0_Si = linkonce_odr unnamed_addr constant 
-// CHECK: @_ZTCSd16_So = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTVSo = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTTSo = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTVSi = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTTSi = linkonce_odr unnamed_addr constant
-
-namespace std {
-  struct A { A(); };
-  
-  // CHECK: define void @_ZNSt1AC1Ev(%"struct.std::A"* %this) unnamed_addr
-  // CHECK: define void @_ZNSt1AC2Ev(%"struct.std::A"* %this) unnamed_addr
-  A::A() { }
-};
-
-namespace std {
-  template<typename> struct allocator { };
-}
-
-// CHECK: define void @_Z1fSaIcESaIiE
-void f(std::allocator<char>, std::allocator<int>) { }
-
-namespace std {
-  template<typename, typename, typename> struct basic_string { };
-}
-
-// CHECK: define void @_Z1fSbIcciE
-void f(std::basic_string<char, char, int>) { }
-
-namespace std {
-  template<typename> struct char_traits { };
-  
-  typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> > string;
-}
-
-// CHECK: _Z1fSs
-void f(std::string) { }
-
-namespace std {
-  template<typename, typename> struct basic_ios { 
-    basic_ios(int);
-    virtual ~basic_ios();
-  };
-  template<typename charT, typename traits = char_traits<charT> > 
-  struct basic_istream : virtual public basic_ios<charT, traits> { 
-    basic_istream(int x) : basic_ios<charT, traits>(x), stored(x) { }
-
-    int stored;
-  };
-  template<typename charT, typename traits = char_traits<charT> > 
-  struct basic_ostream : virtual public basic_ios<charT, traits> { 
-    basic_ostream(int x) : basic_ios<charT, traits>(x), stored(x) { }
-
-    float stored;
-  };
-
-  template<typename charT, typename traits = char_traits<charT> > 
-    struct basic_iostream : public basic_istream<charT, traits>, 
-                            public basic_ostream<charT, traits> { 
-    basic_iostream(int x) : basic_istream<charT, traits>(x),
-                            basic_ostream<charT, traits>(x),
-                            basic_ios<charT, traits>(x) { }
-  };
-}
-
-// CHECK: _Z1fSi
-void f(std::basic_istream<char, std::char_traits<char> >) { }
-
-// CHECK: _Z1fSo
-void f(std::basic_ostream<char, std::char_traits<char> >) { }
-
-// CHECK: _Z1fSd
-void f(std::basic_iostream<char, std::char_traits<char> >) { }
-
-extern "C++" {
-namespace std
-{
-  typedef void (*terminate_handler) ();
-  
-  // CHECK: _ZSt13set_terminatePFvvE
-  terminate_handler set_terminate(terminate_handler) { return 0; }
-}
-}
-
-// Make sure we don't treat the following like std::string
-// CHECK: define void @_Z1f12basic_stringIcSt11char_traitsIcESaIcEE
-template<typename, typename, typename> struct basic_string { };
-typedef basic_string<char, std::char_traits<char>, std::allocator<char> > not_string;
-void f(not_string) { }
-
-// Manglings for instantiations caused by this function are at the
-// top of the test.
-void create_streams() {
-  std::basic_iostream<char> bio(17);
-}
-
-// Make sure we don't mangle 'std' as 'St' here.
-namespace N {
-  namespace std {
-    struct A { void f(); };
-    
-    // CHECK: define void @_ZN1N3std1A1fEv
-    void A::f() { }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-subst.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-subst.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-subst.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
-
-struct X {};
-
-// CHECK: define void @_Z1f1XS_(
-void f(X, X) { }
-
-// CHECK: define void @_Z1fR1XS0_(
-void f(X&, X&) { }
-
-// CHECK: define void @_Z1fRK1XS1_(
-void f(const X&, const X&) { }
-
-typedef void T();
-struct S {};
-
-// CHECK: define void @_Z1fPFvvEM1SFvvE(
-void f(T*, T (S::*)) {}
-
-namespace A {
-  struct A { };
-  struct B { };
-};
-
-// CHECK: define void @_Z1fN1A1AENS_1BE(
-void f(A::A a, A::B b) { }
-
-struct C {
-  struct D { };
-};
-
-// CHECK: define void @_Z1fN1C1DERS_PS_S1_(
-void f(C::D, C&, C*, C&) { }
-
-template<typename T>
-struct V {
-  typedef int U;
-};
-
-template <typename T> void f1(typename V<T>::U, V<T>) { }
-
-// CHECK: @_Z2f1IiEvN1VIT_E1UES2_
-template void f1<int>(int, V<int>);
-
-template <typename T> void f2(V<T>, typename V<T>::U) { }
-
-// CHECK: @_Z2f2IiEv1VIT_ENS2_1UE
-template void f2<int>(V<int>, int);
-
-namespace NS {
-template <typename T> struct S1 {};
-template<typename T> void ft3(S1<T>, S1<char>) {  }
-
-// CHECK: @_ZN2NS3ft3IiEEvNS_2S1IT_EENS1_IcEE
-template void ft3<int>(S1<int>, S1<char>);
-}
-
-// PR5196
-// CHECK: @_Z1fPKcS0_
-void f(const char*, const char*) {}
-
-namespace NS {
-  class C;
-}
-
-namespace NS {
-  // CHECK: @_ZN2NS1fERNS_1CE
-  void f(C&) { } 
-}
-
-namespace Test1 {
-
-struct A { };
-struct B { };
-
-// CHECK: @_ZN5Test11fEMNS_1BEFvvENS_1AES3_
-void f(void (B::*)(), A, A) { }
-
-// CHECK: @_ZN5Test11fEMNS_1BEFvvENS_1AES3_MS0_FvS3_EMS3_FvvE
-void f(void (B::*)(), A, A, void (B::*)(A), void (A::*)()) { }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-system-header.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-system-header.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-system-header.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
-
-// PR5420
-
-# 1 "fake_system_header.h" 1 3 4
-// CHECK: define void @_ZdlPvS_(
-void operator delete (void*, void*) {}
-
-// PR6217
-// CHECK: define void @_Z3barv() 
-void bar() { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,184 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-namespace test1 {
-int x;
-template <int& D> class T { };
-// CHECK: void @_ZN5test12f0ENS_1TILZNS_1xEEEE(
-void f0(T<x> a0) {}
-}
-
-namespace test1 {
-// CHECK: void @_ZN5test12f0Ef
-void f0(float) {}
-template<void (&)(float)> struct t1 {};
-// CHECK: void @_ZN5test12f1ENS_2t1ILZNS_2f0EfEEE(
-void f1(t1<f0> a0) {}
-}
-
-namespace test2 {
-// CHECK: void @_ZN5test22f0Ef
-void f0(float) {}
-template<void (*)(float)> struct t1 {};
-// FIXME: Fails because we don't treat as an expression.
-// CHECK-FIXME: void @_ZN5test22f1ENS_2t1IXadL_ZNS_2f0EfEEEE(
-void f1(t1<f0> a0) {}
-}
-
-namespace test3 {
-// CHECK: void @test3_f0
-extern "C" void test3_f0(float) {}
-template<void (&)(float)> struct t1 {};
-// FIXME: Fails because we tack on a namespace.
-// CHECK-FIXME: void @_ZN5test32f1ENS_2t1ILZ8test3_f0EEE(
-void f1(t1<test3_f0> a0) {}
-}
-
-namespace test4 {
-// CHECK: void @test4_f0
-extern "C" void test4_f0(float) {}
-template<void (*)(float)> struct t1 {};
-// FIXME: Fails because we don't treat as an expression.
-// CHECK-FIXME: void @_ZN5test42f1ENS_2t1IXadL_Z8test4_f0EEEE(
-void f1(t1<test4_f0> a0) {}
-}
-
-// CHECK: void @test5_f0
-extern "C" void test5_f0(float) {}
-int main(int) {}
-
-namespace test5 {
-template<void (&)(float)> struct t1 {};
-// CHECK: void @_ZN5test52f1ENS_2t1ILZ8test5_f0EEE(
-void f1(t1<test5_f0> a0) {}
-
-template<int (&)(int)> struct t2 {};
-// CHECK: void @_ZN5test52f2ENS_2t2ILZ4mainEEE
-void f2(t2<main> a0) {}
-}
-
-// FIXME: This fails.
-namespace test6 {
-struct A { void im0(float); };
-// CHECK: void @_ZN5test61A3im0Ef
-void A::im0(float) {}
-template <void(A::*)(float)> class T { };
-// FIXME: Fails because we don't treat as an expression.
-// CHECK-FAIL: void @_ZN5test62f0ENS_1TIXadL_ZNS_1A3im0EfEEEE(
-void f0(T<&A::im0> a0) {}
-}
-
-namespace test7 {
-  template<typename T>
-  struct meta {
-    static const unsigned value = sizeof(T);
-  };
-
-  template<unsigned> struct int_c { 
-    typedef float type;
-  };
-
-  template<typename T>
-  struct X {
-    template<typename U>
-    X(U*, typename int_c<(meta<T>::value + meta<U>::value)>::type *) { }
-  };
-
-  // CHECK: define weak_odr {{.*}} @_ZN5test71XIiEC1IdEEPT_PNS_5int_cIXplL_ZNS_4metaIiE5valueEEsr4metaIS3_EE5valueEE4typeE(%"struct.test7::X"* %this, double*, float*) unnamed_addr
-  template X<int>::X(double*, float*);
-}
-
-namespace test8 {
-  template<typename T>
-  struct meta {
-    struct type {
-      static const unsigned value = sizeof(T);
-    };
-  };
-
-  template<unsigned> struct int_c { 
-    typedef float type;
-  };
-
-  template<typename T>
-  void f(int_c<meta<T>::type::value>) { }
-
-  // CHECK: define weak_odr void @_ZN5test81fIiEEvNS_5int_cIXsr4metaIT_E4typeE5valueEEE
-  template void f<int>(int_c<sizeof(int)>);
-}
-
-namespace test9 {
-  template<typename T>
-  struct supermeta {
-    template<typename U>
-    struct apply {
-      typedef T U::*type;
-    };
-  };
-
-  struct X { };
-
-  template<typename T, typename U>
-  typename supermeta<T>::template apply<U>::type f();
-
-  void test_f() {
-    // CHECK: @_ZN5test91fIiNS_1XEEENS_9supermetaIT_E5applyIT0_E4typeEv()
-    // Note: GCC incorrectly mangles this as
-    // _ZN5test91fIiNS_1XEEENS_9supermetaIT_E5apply4typeEv, while EDG
-    // gets it right.
-    f<int, X>();
-  }
-}
-
-namespace test10 {
-  template<typename T>
-  struct X {
-    template<typename U>
-    struct definition {
-    };
-  };
-
-  // CHECK: _ZN6test101fIidEENS_1XIT_E10definitionIT0_EES2_S5_
-  template<typename T, typename U>
-  typename X<T>::template definition<U> f(T, U) { }
-
-  void g(int i, double d) {
-    f(i, d);
-  }
-}
-
-// Report from Jason Merrill on cxx-abi-dev, 2012.01.04.
-namespace test11 {
-  int cmp(char a, char b);
-  template <typename T, int (*cmp)(T, T)> struct A {};
-  template <typename T> void f(A<T,cmp> &) {}
-  template void f<char>(A<char,cmp> &);
-  // CHECK: @_ZN6test111fIcEEvRNS_1AIT_L_ZNS_3cmpEccEEE(
-}
-
-namespace test12 {
-  // Make sure we can mangle non-type template args with internal linkage.
-  static int f();
-  const int n = 10;
-  template<typename T, T v> void test() {}
-  void use() {
-    // CHECK: define internal void @_ZN6test124testIFivEXadL_ZNS_L1fEvEEEEvv(
-    test<int(), &f>();
-    // CHECK: define internal void @_ZN6test124testIRFivELZNS_L1fEvEEEvv(
-    test<int(&)(), f>();
-    // CHECK: define internal void @_ZN6test124testIPKiXadL_ZNS_L1nEEEEEvv(
-    test<const int*, &n>();
-    // CHECK: define internal void @_ZN6test124testIRKiLZNS_L1nEEEEvv(
-    test<const int&, n>();
-  }
-}
-
-// rdar://problem/12072531
-// Test the boundary condition of minimal signed integers.
-namespace test13 {
-  template <char c> char returnChar() { return c; }
-  template char returnChar<-128>();
-  // CHECK: @_ZN6test1310returnCharILcn128EEEcv()
-
-  template <short s> short returnShort() { return s; }
-  template short returnShort<-32768>();
-  // CHECK: @_ZN6test1311returnShortILsn32768EEEsv()
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-this-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-this-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-this-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
-
-struct B {
- template <class U> U f();
-};
-
-struct A {
- B b;
- // implicitly rewritten to (*this).b.f<U>()
- template <class U> auto f() -> decltype (b.f<U>());
- template <class U> auto g() -> decltype (this->b.f<U>());
-};
-
-int main() {
-  A a;
-  // CHECK: call i32 @_ZN1A1fIiEEDTcldtdtdefpT1b1fIT_EEEv
-  a.f<int>();
-  // CHECK: call i32 @_ZN1A1gIiEEDTcldtptfpT1b1fIT_EEEv
-  a.g<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-unnameable-conversions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-unnameable-conversions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-unnameable-conversions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-template<typename T> using id = T;
-struct S {
-  template<typename T, int N>
-    operator id<T[N]>&();
-  template<typename T, typename U>
-    operator id<T (U::*)()>() const;
-};
-
-void f() {
-  int (&a)[42] = S(); // CHECK: @_ZN1ScvRAT0__T_IiLi42EEEv(
-  char (S::*fp)() = S(); // CHECK: @_ZNK1ScvMT0_FT_vEIcS_EEv(
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-unnamed.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-unnamed.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-unnamed.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,92 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 | FileCheck %s
-
-struct S {
-  virtual ~S() { }
-};
-
-// PR5706
-// Make sure this doesn't crash; the mangling doesn't matter because the name
-// doesn't have linkage.
-static struct : S { } obj8;
-
-void f() {
-  // Make sure this doesn't crash; the mangling doesn't matter because the
-  // generated vtable/etc. aren't modifiable (although it would be nice for
-  // codesize to make it consistent inside inline functions).
-  static struct : S { } obj8;
-}
-
-inline int f2() {
-  // FIXME: We don't mangle the names of a or x correctly!
-  static struct { int a() { static int x; return ++x; } } obj;
-  return obj.a();
-}
-
-int f3() { return f2(); }
-
-struct A {
-  typedef struct { int x; } *ptr;
-  ptr m;
-  int a() {
-    static struct x {
-      // FIXME: We don't mangle the names of a or x correctly!
-      int a(ptr A::*memp) { static int x; return ++x; }
-    } a;
-    return a.a(&A::m);
-  }
-};
-
-int f4() { return A().a(); }
-
-int f5() {
-  static union {
-    int a;
-  };
-  
-  // CHECK: _ZZ2f5vE1a
-  return a;
-}
-
-int f6() {
-  static union {
-    union {
-      int : 1;
-    };
-    int b;
-  };
-  
-  // CHECK: _ZZ2f6vE1b
-  return b;
-}
-
-int f7() {
-  static union {
-    union {
-      int b;
-    } a;
-  };
-  
-  // CHECK: _ZZ2f7vE1a
-  return a.b;
-}
-
-// This used to cause an assert because the typedef-for-anonymous-tag
-// code was trying to claim the enum for the template.
-enum { T8 };
-template <class T> struct Test8 {
-  typedef T type;
-  Test8(type t) {} // tested later
-};
-template <class T> void make_test8(T value) { Test8<T> t(value); }
-void test8() { make_test8(T8); }
-
-// CHECK: define internal void @"_ZNV3$_35test9Ev"(
-typedef volatile struct {
-  void test9() volatile {}
-} Test9;
-void test9() {
-  Test9 a;
-  a.test9();
-}
-
-// CHECK: define internal void @"_ZN5Test8I3$_2EC1ES0_"(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-valist.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-valist.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-valist.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-#include "stdarg.h"
-
-namespace test1 {
-  void test1(const char *fmt, va_list ap) {
-  }
-}
-
-class Test2 {
-public:
-  void test2(const char *fmt, va_list ap);
-};
-
-void Test2::test2(const char *fmt, va_list ap) {
-}
-
-// RUN: %clang_cc1 %s -emit-llvm -o - \
-// RUN:     -triple armv7-unknown-linux \
-// RUN:   | FileCheck -check-prefix=MANGLE-ARM-AAPCS %s
-// CHECK-MANGLE-ARM-AAPCS: @_ZN5test15test1EPKcSt9__va_list
-// CHECK-MANGLE-ARM-AAPCS: @_ZN5Test25test2EPKcSt9__va_list
-
-// RUN: %clang_cc1 %s -emit-llvm -o - \
-// RUN:     -triple armv7-unknown-linux -target-abi apcs-gnu \
-// RUN:   | FileCheck -check-prefix=MANGLE-ARM-APCS %s
-// CHECK-MANGLE-ARM-APCS: @_ZN5test15test1EPKcPv
-// CHECK-MANGLE-ARM-APCS: @_ZN5Test25test2EPKcPv
-
-// RUN: %clang_cc1 %s -emit-llvm -o - \
-// RUN:     -triple mipsel-unknown-linux \
-// RUN:   | FileCheck -check-prefix=MANGLE-MIPSEL %s
-// CHECK-MANGLE-MIPSEL: @_ZN5test15test1EPKcPv
-// CHECK-MANGLE-MIPSEL: @_ZN5Test25test2EPKcPv
-
-// RUN: %clang_cc1 %s -emit-llvm -o - \
-// RUN:     -triple i686-unknown-linux \
-// RUN:   | FileCheck -check-prefix=MANGLE-X86 %s
-// CHECK-MANGLE-X86: @_ZN5test15test1EPKcPc
-// CHECK-MANGLE-X86: @_ZN5Test25test2EPKcPc
-
-// RUN: %clang_cc1 %s -emit-llvm -o - \
-// RUN:     -triple x86_64-unknown-linux \
-// RUN:   | FileCheck -check-prefix=MANGLE-X86-64 %s
-// CHECK-MANGLE-X86-64: @_ZN5test15test1EPKcP13__va_list_tag
-// CHECK-MANGLE-X86-64: @_ZN5Test25test2EPKcP13__va_list_tag

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-variadic-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-variadic-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle-variadic-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -triple=x86_64-apple-darwin9 -o - %s | FileCheck %s
-
-template<unsigned I, typename ...Types>
-struct X { };
-
-template<typename T> struct identity { };
-template<typename T> struct add_reference;
-template<typename ...Types> struct tuple { };
-template<int ...Values> struct int_tuple { };
-template<template<typename> class ...Templates> struct template_tuple { };
-
-// CHECK: define weak_odr void @_Z2f0IJEEv1XIXsZT_EJDpRT_EE
-template<typename ...Types>
-void f0(X<sizeof...(Types), Types&...>) { }
-
-template void f0(X<0>);
-
-// CHECK: define weak_odr void @_Z2f0IJifdEEv1XIXsZT_EJDpRT_EE
-template void f0<int, float, double>(X<3, int&, float&, double&>);
-
-// Mangling for template argument packs
-template<typename ...Types> void f1() {}
-// CHECK: define weak_odr void @_Z2f1IJEEvv
-template void f1<>();
-// CHECK: define weak_odr void @_Z2f1IJiEEvv
-template void f1<int>();
-// CHECK: define weak_odr void @_Z2f1IJifEEvv
-template void f1<int, float>();
-
-// Mangling function parameter packs
-template<typename ...Types> void f2(Types...) {}
-// CHECK: define weak_odr void @_Z2f2IJEEvDpT_
-template void f2<>();
-// CHECK: define weak_odr void @_Z2f2IJiEEvDpT_
-template void f2<int>(int);
-// CHECK: define weak_odr void @_Z2f2IJifEEvDpT_
-template void f2<int, float>(int, float);
-
-// Mangling non-trivial function parameter packs
-template<typename ...Types> void f3(const Types *...) {}
-// CHECK: define weak_odr void @_Z2f3IJEEvDpPKT_
-template void f3<>();
-// CHECK: define weak_odr void @_Z2f3IJiEEvDpPKT_
-template void f3<int>(const int*);
-// CHECK: define weak_odr void @_Z2f3IJifEEvDpPKT_
-template void f3<int, float>(const int*, const float*);
-
-// Mangling of type pack expansions in a template argument
-template<typename ...Types> tuple<Types...> f4() {}
-// CHECK: define weak_odr void @_Z2f4IJifdEE5tupleIJDpT_EEv
-template tuple<int, float, double> f4();
-
-// Mangling of type pack expansions in a function type
-template<typename R, typename ...ArgTypes> identity<R(ArgTypes...)> f5() {}
-// CHECK: define weak_odr void @_Z2f5IiJifdEE8identityIFT_DpT0_EEv
-template identity<int(int, float, double)> f5();
-
-// Mangling of non-type template argument expansions
-template<int ...Values> int_tuple<Values...> f6() {}
-// CHECK: define weak_odr void @_Z2f6IJLi1ELi2ELi3EEE9int_tupleIJXspT_EEEv
-template int_tuple<1, 2, 3> f6();
-
-// Mangling of template template argument expansions
-template<template<typename> class ...Templates> 
-template_tuple<Templates...> f7() {}
-// CHECK: define weak_odr void @_Z2f7IJ8identity13add_referenceEE14template_tupleIJDpT_EEv
-template template_tuple<identity, add_reference> f7();

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/mangle.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,877 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 -fblocks -std=c++11 | FileCheck %s
-struct X { };
-struct Y { };
-
-// CHECK: @unmangled_variable = global
-// CHECK: @_ZN1N1iE = global
-// CHECK: @_ZZN1N1fEiiE1b = internal global
-// CHECK: @_ZZN1N1gEvE1a = internal global
-// CHECK: @_ZGVZN1N1gEvE1a = internal global
-
-//CHECK: @pr5966_i = external global
-//CHECK: @_ZL8pr5966_i = internal global
-
-// CHECK: define zeroext i1 @_ZplRK1YRA100_P1X
-bool operator+(const Y&, X* (&xs)[100]) { return false; }
-
-// CHECK: define void @_Z1f1s
-typedef struct { int a; } s;
-void f(s) { }
-
-// CHECK: define void @_Z1f1e
-typedef enum { foo } e;
-void f(e) { }
-
-// CHECK: define void @_Z1f1u
-typedef union { int a; } u;
-void f(u) { }
-
-// CHECK: define void @_Z1f1x
-typedef struct { int a; } x,y;
-void f(y) { }
-
-// CHECK: define void @_Z1fv
-void f() { }
-
-// CHECK: define void @_ZN1N1fEv
-namespace N { void f() { } }
-
-// CHECK: define void @_ZN1N1N1fEv
-namespace N { namespace N { void f() { } } }
-
-// CHECK: define void @unmangled_function
-extern "C" { namespace N { void unmangled_function() { } } }
-
-extern "C" { namespace N { int unmangled_variable = 10; } }
-
-namespace N { int i; }
-
-namespace N { int f(int, int) { static int b; return b; } }
-
-namespace N { int h(); void g() { static int a = h(); } }
-
-// CHECK: define void @_Z1fno
-void f(__int128_t, __uint128_t) { } 
-
-template <typename T> struct S1 {};
-
-// CHECK: define void @_Z1f2S1IiE
-void f(S1<int>) {}
-
-// CHECK: define void @_Z1f2S1IdE
-void f(S1<double>) {}
-
-template <int N> struct S2 {};
-// CHECK: define void @_Z1f2S2ILi100EE
-void f(S2<100>) {}
-
-// CHECK: define void @_Z1f2S2ILin100EE
-void f(S2<-100>) {}
-
-template <bool B> struct S3 {};
-
-// CHECK: define void @_Z1f2S3ILb1EE
-void f(S3<true>) {}
-
-// CHECK: define void @_Z1f2S3ILb0EE
-void f(S3<false>) {}
-
-struct S;
-
-// CHECK: define void @_Z1fM1SKFvvE
-void f(void (S::*)() const) {}
-
-// CHECK: define void @_Z1fM1SFvvE
-void f(void (S::*)()) {}
-
-// CHECK: define void @_Z1fi
-void f(const int) { }
-
-template<typename T, typename U> void ft1(U u, T t) { }
-
-template<typename T> void ft2(T t, void (*)(T), void (*)(T)) { }
-
-template<typename T, typename U = S1<T> > struct S4 { };
-template<typename T> void ft3(S4<T>*) {  }
-
-namespace NS {
-  template<typename T> void ft1(T) { }
-}
-
-void g1() {
-  // CHECK: @_Z3ft1IidEvT0_T_
-  ft1<int, double>(1, 0);
-  
-  // CHECK: @_Z3ft2IcEvT_PFvS0_ES2_
-  ft2<char>(1, 0, 0);
-  
-  // CHECK: @_Z3ft3IiEvP2S4IT_2S1IS1_EE
-  ft3<int>(0);
-  
-  // CHECK: @_ZN2NS3ft1IiEEvT_
-  NS::ft1<int>(1);
-}
-
-// Expressions
-template<int I> struct S5 { };
-
-template<int I> void ft4(S5<I>) { }
-void g2() {
-  // CHECK: @_Z3ft4ILi10EEv2S5IXT_EE
-  ft4(S5<10>());
-  
-  // CHECK: @_Z3ft4ILi20EEv2S5IXT_EE
-  ft4(S5<20>());
-}
-
-extern "C++" {
-  // CHECK: @_Z1hv
- void h() { } 
-}
-
-// PR5019
-extern "C" { struct a { int b; }; }
-
-// CHECK: @_Z1fP1a
-int f(struct a *x) {
-    return x->b;
-}
-
-// PR5017
-extern "C" {
-struct Debug {
-  const Debug& operator<< (unsigned a) const { return *this; }
-};
-Debug dbg;
-// CHECK: @_ZNK5DebuglsEj
-int main(void) {  dbg << 32 ;}
-}
-
-template<typename T> struct S6 {
-  typedef int B;
-};
-
-template<typename T> void ft5(typename S6<T>::B) { }
-// CHECK: @_Z3ft5IiEvN2S6IT_E1BE
-template void ft5<int>(int);
-
-template<typename T> class A {};
-
-namespace NS {
-template<typename T> bool operator==(const A<T>&, const A<T>&) { return true; }
-}
-
-// CHECK: @_ZN2NSeqIcEEbRK1AIT_ES5_
-template bool NS::operator==(const ::A<char>&, const ::A<char>&);
-
-namespace std {
-template<typename T> bool operator==(const A<T>&, const A<T>&) { return true; }
-}
-
-// CHECK: @_ZSteqIcEbRK1AIT_ES4_
-template bool std::operator==(const ::A<char>&, const ::A<char>&);
-
-struct S {
-  typedef int U;
-};
-
-template <typename T> typename T::U ft6(const T&) { return 0; }
-
-// CHECK: @_Z3ft6I1SENT_1UERKS1_
-template int ft6<S>(const S&);
-
-template<typename> struct __is_scalar_type {
-  enum { __value = 1 };
-};
-
-template<bool, typename> struct __enable_if { };
-
-template<typename T> struct __enable_if<true, T> {
-  typedef T __type;
-};
-
-// PR5063
-template<typename T> typename __enable_if<__is_scalar_type<T>::__value, void>::__type ft7() { }
-
-// CHECK: @_Z3ft7IiEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv
-template void ft7<int>();
-// CHECK: @_Z3ft7IPvEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv
-template void ft7<void*>();
-
-// PR5144
-extern "C" {
-void extern_f(void);
-};
-
-// CHECK: @extern_f
-void extern_f(void) { }
-
-struct S7 {
-  S7();
-  
-  struct S { S(); };
-  struct {
-    S s;
-  } a;
-};
-
-// PR5139
-// CHECK: @_ZN2S7C1Ev
-// CHECK: @_ZN2S7C2Ev
-// CHECK: @_ZN2S7Ut_C1Ev
-S7::S7() {}
-
-// PR5063
-template<typename T> typename __enable_if<(__is_scalar_type<T>::__value), void>::__type ft8() { }
-// CHECK: @_Z3ft8IiEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv
-template void ft8<int>();
-// CHECK: @_Z3ft8IPvEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv
-template void ft8<void*>();
-
-// PR5796
-namespace PR5796 {
-template<typename> struct __is_scalar_type {
-  enum { __value = 0 };
-};
-
-template<bool, typename> struct __enable_if {};
-template<typename T> struct __enable_if<true, T> { typedef T __type; };
-template<typename T>
-
-// CHECK: define linkonce_odr void @_ZN6PR57968__fill_aIiEENS_11__enable_ifIXntsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv
-typename __enable_if<!__is_scalar_type<T>::__value, void>::__type __fill_a() { };
-
-void f() { __fill_a<int>(); }
-}
-
-namespace Expressions {
-// Unary operators.
-
-// CHECK: define weak_odr void @_ZN11Expressions2f1ILi1EEEvPAplngT_Li2E_i
-template <int i> void f1(int (*)[(-i) + 2]) { };
-template void f1<1>(int (*)[1]);
-
-// CHECK: define weak_odr void @_ZN11Expressions2f2ILi1EEEvPApsT__i
-template <int i> void f2(int (*)[+i]) { };
-template void f2<1>(int (*)[1]);
-
-// Binary operators.
-
-// CHECK: define weak_odr void @_ZN11Expressions2f3ILi1EEEvPAplT_T__i
-template <int i> void f3(int (*)[i+i]) { };
-template void f3<1>(int (*)[2]);
-
-// CHECK: define weak_odr void @_ZN11Expressions2f4ILi1EEEvPAplplLi2ET_T__i
-template <int i> void f4(int (*)[2 + i+i]) { };
-template void f4<1>(int (*)[4]);
-
-// The ternary operator.
-// CHECK: define weak_odr void @_ZN11Expressions2f4ILb1EEEvPAquT_Li1ELi2E_i
-template <bool b> void f4(int (*)[b ? 1 : 2]) { };
-template void f4<true>(int (*)[1]);
-}
-
-struct Ops {
-  Ops& operator+(const Ops&);
-  Ops& operator-(const Ops&);
-  Ops& operator&(const Ops&);
-  Ops& operator*(const Ops&);
-  
-  void *v;
-};
-
-// CHECK: define %struct.Ops* @_ZN3OpsplERKS_
-Ops& Ops::operator+(const Ops&) { return *this; }
-// CHECK: define %struct.Ops* @_ZN3OpsmiERKS_
-Ops& Ops::operator-(const Ops&) { return *this; }
-// CHECK: define %struct.Ops* @_ZN3OpsanERKS_
-Ops& Ops::operator&(const Ops&) { return *this; }
-// CHECK: define %struct.Ops* @_ZN3OpsmlERKS_
-Ops& Ops::operator*(const Ops&) { return *this; }
-
-// PR5861
-namespace PR5861 {
-template<bool> class P;
-template<> class P<true> {};
-
-template<template <bool> class, bool>
-struct Policy { };
-
-template<typename T, typename = Policy<P, true> > class Alloc
-{
-  T *allocate(int, const void*) { return 0; }
-};
-
-// CHECK: define weak_odr i8* @_ZN6PR58615AllocIcNS_6PolicyINS_1PELb1EEEE8allocateEiPKv
-template class Alloc<char>;
-}
-
-// CHECK: define void @_Z1fU13block_pointerFiiiE
-void f(int (^)(int, int)) { }
-
-void pr5966_foo() {
-  extern int pr5966_i;
-  pr5966_i = 0;
-}
-
-static int pr5966_i;
-
-void pr5966_bar() {
-  pr5966_i = 0;
-}
-
-namespace test0 {
-  int ovl(int x);
-  char ovl(double x);
-
-  template <class T> void f(T, char (&buffer)[sizeof(ovl(T()))]) {}
-
-  void test0() {
-    char buffer[1];
-    f(0.0, buffer);
-  }
-  // CHECK: define void @_ZN5test05test0Ev()
-  // CHECK: define linkonce_odr void @_ZN5test01fIdEEvT_RAszcl3ovlcvS1__EE_c(
-
-  void test1() {
-    char buffer[sizeof(int)];
-    f(1, buffer);
-  }
-  // CHECK: define void @_ZN5test05test1Ev()
-  // CHECK: define linkonce_odr void @_ZN5test01fIiEEvT_RAszcl3ovlcvS1__EE_c(
-
-  template <class T> void g(char (&buffer)[sizeof(T() + 5.0f)]) {}
-  void test2() {
-    char buffer[sizeof(float)];
-    g<float>(buffer);
-  }
-  // CHECK: define linkonce_odr void @_ZN5test01gIfEEvRAszplcvT__ELf40a00000E_c(
-
-  template <class T> void h(char (&buffer)[sizeof(T() + 5.0)]) {}
-  void test3() {
-    char buffer[sizeof(double)];
-    h<float>(buffer);
-  }
-  // CHECK: define linkonce_odr void @_ZN5test01hIfEEvRAszplcvT__ELd4014000000000000E_c(
-
-  template <class T> void j(char (&buffer)[sizeof(T().buffer)]) {}
-  struct A { double buffer[128]; };
-  void test4() {
-    char buffer[1024];
-    j<A>(buffer);
-  }
-  // CHECK: define linkonce_odr void @_ZN5test01jINS_1AEEEvRAszdtcvT__E6buffer_c(
-
-  template <class T> void k(char (&buffer)[sizeof(T() + 0.0f)]) {}
-  void test5() {
-    char buffer[sizeof(float)];
-    k<float>(buffer);
-  }
-  // CHECK: define linkonce_odr void @_ZN5test01kIfEEvRAszplcvT__ELf00000000E_c(
-
-}
-
-namespace test1 {
-  template<typename T> struct X { };
-  template<template<class> class Y, typename T> void f(Y<T>) { }
-  // CHECK: define weak_odr void @_ZN5test11fINS_1XEiEEvT_IT0_E
-  template void f(X<int>);
-}
-
-// CHECK: define internal void @_ZL27functionWithInternalLinkagev()
-static void functionWithInternalLinkage() {  }
-void g() { functionWithInternalLinkage(); }
-
-namespace test2 {
-  template <class T> decltype(((T*) 0)->member) read_member(T& obj) {
-    return obj.member;
-  }
-
-  struct A { int member; } obj;
-  int test() {
-    return read_member(obj);
-  }
-
-  // CHECK: define linkonce_odr i32 @_ZN5test211read_memberINS_1AEEEDtptcvPT_Li0E6memberERS2_(
-}
-
-// rdar://problem/9280586
-namespace test3 {
-  struct AmbiguousBase { int ab; };
-  struct Path1 : AmbiguousBase { float p; };
-  struct Path2 : AmbiguousBase { double p; };
-  struct Derived : Path1, Path2 { };
-
-  // CHECK: define linkonce_odr i32 @_ZN5test38get_ab_1INS_7DerivedEEEDtptcvPT_Li0Esr5Path1E2abERS2_(
-  template <class T> decltype(((T*) 0)->Path1::ab) get_ab_1(T &ref) { return ref.Path1::ab; }
-
-  // CHECK: define linkonce_odr i32 @_ZN5test38get_ab_2INS_7DerivedEEEDtptcvPT_Li0Esr5Path2E2abERS2_(
-  template <class T> decltype(((T*) 0)->Path2::ab) get_ab_2(T &ref) { return ref.Path2::ab; }
-
-  // CHECK: define linkonce_odr float @_ZN5test37get_p_1INS_7DerivedEEEDtptcvPT_Li0Esr5Path1E1pERS2_(
-  template <class T> decltype(((T*) 0)->Path1::p) get_p_1(T &ref) { return ref.Path1::p; }
-
-  // CHECK: define linkonce_odr double @_ZN5test37get_p_2INS_7DerivedEEEDtptcvPT_Li0Esr5Path2E1pERS2_(
-  template <class T> decltype(((T*) 0)->Path2::p) get_p_2(T &ref) { return ref.Path2::p; }
-
-  Derived obj;
-  void test() {
-    get_ab_1(obj);
-    get_ab_2(obj);
-    get_p_1(obj);
-    get_p_2(obj);
-  }
-}
-
-// CHECK: define void @_ZN5test41gEPNS_3zedIXadL_ZNS_3foo3barEEEEE
-namespace test4 {
-  struct foo { int bar; };
-  template <int (foo::*)>
-  struct zed {};
-  void g(zed<&foo::bar>*)
-  {}
-}
-// CHECK: define void @_ZN5test51gEPNS_3zedIXadL_ZNS_3foo3barEEEEE
-namespace test5 {
-  struct foo { static int bar; };
-  template <int *>
-  struct zed {};
-  void g(zed<&foo::bar>*)
-  {}
-}
-// CHECK: define void @_ZN5test61gEPNS_3zedIXadL_ZNS_3foo3barEvEEEE
-namespace test6 {
-  struct foo { int bar(); };
-  template <int (foo::*)()>
-  struct zed {};
-  void g(zed<&foo::bar>*)
-  {}
-}
-// CHECK: define void @_ZN5test71gEPNS_3zedIXadL_ZNS_3foo3barEvEEEE
-namespace test7 {
-  struct foo { static int bar(); };
-  template <int (*f)()>
-  struct zed {};
-  void g(zed<&foo::bar>*)
-  {}
-}
-// CHECK: define weak_odr void @_ZN5test81AILZNS_1B5valueEEE3incEv
-namespace test8 {
-  template <int &counter> class A { void inc() { counter++; } };
-  class B { public: static int value; };
-  template class A<B::value>;
-}
-// CHECK: declare void @_ZN5test91fIiNS_3barEEEvRKNT0_3baz1XE
-namespace test9 {
-  template<class T>
-  struct foo {
-    typedef T X;
-  };
-  struct bar {
-    typedef foo<int> baz;
-  };
-  template <class zaz, class zed>
-  void f(const typename zed::baz::X&);
-  void g() {
-    f<int, bar>( 0);
-  }
-}
-
-// <rdar://problem/7825453>
-namespace test10 {
-  template <char P1> struct S {};
-  template <char P2> void f(struct S<false ? 'a' : P2> ) {}
-
-  // CHECK: define weak_odr void @_ZN6test101fILc3EEEvNS_1SIXquLb0ELc97ET_EEE(
-  template void f<(char) 3>(struct S<3>);
-}
-
-namespace test11 {
-  // CHECK: @_ZN6test111fEz
-  void f(...) { }
-
-  struct A {
-    void f(...);
-  };
-  
-  // CHECK: @_ZN6test111A1fEz
-  void A::f(...) { }
-}
-
-namespace test12 {
-
-  // CHECK: _ZN6test121fENS_1AILt33000EEE
-  template <unsigned short> struct A { };
-  void f(A<33000>) { }
-}
-
-// PR7446
-namespace test13 {
-  template <template <class> class T> class A {};
-  template <class U> class B {};
-
-  template <template<class> class T> void foo(const A<T> &a) {}
-
-  // CHECK: define weak_odr void @_ZN6test133fooINS_1BEEEvRKNS_1AIT_EE(
-  template void foo(const A<B> &a);
-}
-
-namespace test14 {
-  extern "C" {
-    struct S {
-      static int a(), x;
-    };
-    // CHECK: define i32 @_ZN6test141S1aEv
-    // CHECK: load i32* @_ZN6test141S1xE
-    int S::a() { return S::x; }
-  }
-}
-
-// rdar://problem/8204122
-namespace test15 {
-  enum E { e = 3 };
-  template <int I> struct S {};
-
-  template <int I> void f(S<I + e>) {}
-
-  // CHECK: define weak_odr void @_ZN6test151fILi7EEEvNS_1SIXplT_LNS_1EE3EEEE(
-  template void f<7>(S<7 + e>);
-}
-
-// rdar://problem/8302148
-namespace test17 {
-  template <int N> struct A {};
-
-  struct B {
-    static int foo(void);
-  };
-
-  template <class T> A<sizeof(T::foo())> func(void);
-
-  // CHECK: define void @_ZN6test174testEv()
-  // CHECK: call {{.*}} @_ZN6test174funcINS_1BEEENS_1AIXszclsrT_3fooEEEEv()
-  void test() {
-    func<B>();
-  }
-}
-
-// PR7891
-namespace test18 {
-  struct A {
-    int operator+();
-    int operator-();
-    int operator*();
-    int operator&();
-  };
-  template <int (A::*)()> struct S {};
-
-  template <typename T> void f(S<&T::operator+>) {}
-  template void f<A>(S<&A::operator+>);
-
-  template <typename T> void f(S<&T::operator- >) {}
-  template void f<A>(S<&A::operator- >);
-
-  template <typename T> void f(S<&T::operator*>) {}
-  template void f<A>(S<&A::operator*>);
-
-  template <typename T> void f(S<&T::operator&>) {}
-  template void f<A>(S<&A::operator&>);
-
-  // CHECK: define weak_odr void @_ZN6test181fINS_1AEEEvNS_1SIXadsrT_plEEE
-  // CHECK: define weak_odr void @_ZN6test181fINS_1AEEEvNS_1SIXadsrT_miEEE
-  // CHECK: define weak_odr void @_ZN6test181fINS_1AEEEvNS_1SIXadsrT_mlEEE
-  // CHECK: define weak_odr void @_ZN6test181fINS_1AEEEvNS_1SIXadsrT_anEEE
-}
-
-// rdar://problem/8332117
-namespace test19 {
-  struct A {
-    template <typename T> int f();
-    int operator+();
-    operator int();
-    template <typename T> int operator-();
-  };
-
-  template <int (A::*)()> struct S {};
-
-  template <typename T> void g (S<&T::template f<int> >) {}
-  template <typename T> void g (S<&T::operator+ >) {}
-  template <typename T> void g (S<&T::operator int>) {}
-  template <typename T> void g (S<&T::template operator- <double> >) {}
-
-  // CHECK: define weak_odr void @_ZN6test191gINS_1AEEEvNS_1SIXadsrT_1fIiEEEE(
-  template void g<A>(S<&A::f<int> >);
-  // CHECK: define weak_odr void @_ZN6test191gINS_1AEEEvNS_1SIXadsrT_plEEE(
-  template void g<A>(S<&A::operator+>);
-  // CHECK: define weak_odr void @_ZN6test191gINS_1AEEEvNS_1SIXadsrT_cviEEE(
-  template void g<A>(S<&A::operator int>);
-  // CHECK: define weak_odr void @_ZN6test191gINS_1AEEEvNS_1SIXadsrT_miIdEEEE(
-  template void g<A>(S<&A::operator-<double> >);
-}
-
-namespace test20 {
-  template <class T> T *f(const T&);
-  template <class T> T *f(T*);
-
-  // CHECK: define weak_odr void @_ZN6test205test0IiEEvDTcl1fIPT_ELi0EEE(
-  template <class T> void test0(decltype(f<T*>(0))) {}
-  template void test0<int>(decltype(f<int*>(0)));
-
-  // CHECK: define weak_odr void @_ZN6test205test1IiEEvDTcl1fIEcvT__EEE(
-  template <class T> void test1(decltype(f<>(T()))) {}
-  template void test1<int>(decltype(f<>(int())));
-}
-
-// rdar:// 8620510
-namespace test21 {
-  // CHECK: define void @_ZN6test2112vla_arg_funcEiPA_i(
-  void vla_arg_func(int X, int a[X][X]) {}
-}
-
-namespace test22 {
-  // CHECK: define void @_ZN6test221fEDn(
-  void f(decltype(nullptr)) { }
-}
-
-// rdar://problem/8913416
-namespace test23 {
-  typedef void * const vpc;
-
-  // CHECK: define void @_ZN6test231fERA10_KPv(
-  void f(vpc (&)[10]) {}
-
-  typedef vpc vpca5[5];
-  void f(vpca5 volatile (&)[10]) {}
-  // CHECK: define void @_ZN6test231fERA10_A5_VKPv(
-}
-
-namespace test24 {
-  void test0() {
-    extern int foo();
-    // CHECK: call i32 @_ZN6test243fooEv()
-    foo();
-  }
-
-  static char foo() {}
-  void test1() {
-    // CHECK: call signext i8 @_ZN6test24L3fooEv()
-    foo();
-  }
-}
-
-// rdar://problem/8806641
-namespace test25 {
-  template <void (*fn)()> struct A {
-    static void call() { fn(); }
-  };
-  void foo();
-  void test() {
-    // CHECK: call void @_ZN6test251AIXadL_ZNS_3fooEvEEE4callEv()
-    A<foo>::call();
-  }
-}
-
-namespace test26 {
-  template <template <class> class T> void foo(decltype(T<float>::object) &object) {}
-
-  template <class T> struct holder { static T object; };
-
-  void test() {
-    float f;
-
-    // CHECK: call void @_ZN6test263fooINS_6holderEEEvRDtsrT_IfE6objectE(
-    foo<holder>(f);
-  }
-}
-
-namespace test27 {
-  struct A {
-    struct inner {
-      float object;
-    };
-
-    float meth();
-  };
-  typedef A Alias;
-
-  template <class T> void a(decltype(T::inner::object) &object) {}
-  template <class T> void b(decltype(T().Alias::meth()) &object) {}
-
-  void test() {
-    float f;
-    // CHECK: call void @_ZN6test271aINS_1AEEEvRDtsrNT_5innerE6objectE(
-    a<A>(f);
-    // CHECK: call void @_ZN6test271bINS_1AEEEvRDTcldtcvT__Esr5AliasE4methEE(
-    b<A>(f);
-  }
-}
-
-// An injected class name type in a unresolved-name.
-namespace test28 {
-  template <class T> struct A {
-    enum { bit };
-  };
-
-  template <class T> void foo(decltype(A<T>::A::bit) x);
-
-  void test() {
-    foo<char>(A<char>::bit);
-    // CHECK: call void @_ZN6test283fooIcEEvDtsr1AIT_E1AE3bitE(
-  }
-}
-
-// An enclosing template type parameter in an unresolved-name.
-namespace test29 {
-  template <class T> struct A {
-    template <class U> static void foo(decltype(T::fn(U())) x);
-  };
-  struct B { static int fn(int); static long fn(long); };
-
-  void test() {
-    A<B>::foo<int>(0);
-    // CHECK: call void @_ZN6test291AINS_1BEE3fooIiEEvDTclsrS1_2fncvT__EEE(
-  }
-}
-
-// An enclosing template template parameter in an unresolved-name.
-namespace test30 {
-  template <template <class> class T> struct A {
-    template <class U> static void foo(decltype(T<U>::fn()) x);
-  };
-  template <class T> struct B { static T fn(); };
-
-  void test() {
-    A<B>::foo<int>(0);
-    // CHECK: call void @_ZN6test301AINS_1BEE3fooIiEEvDTclsrS1_IT_EE2fnEE(
-  }
-}
-
-namespace test31 { // instantiation-dependent mangling of decltype
-  int x;
-  template<class T> auto f1(T p)->decltype(x) { return 0; }
-  // The return type in the mangling of the template signature
-  // is encoded as "i".
-  template<class T> auto f2(T p)->decltype(p) { return 0; }
-  // The return type in the mangling of the template signature
-  // is encoded as "Dtfp_E".
-  void g(int);
-  template<class T> auto f3(T p)->decltype(g(p)) {}
-
-  // CHECK: define weak_odr i32 @_ZN6test312f1IiEEiT_(
-  template int f1(int);
-  // CHECK: define weak_odr i32 @_ZN6test312f2IiEEDtfp_ET_
-  template int f2(int);
-  // CHECK: define weak_odr void @_ZN6test312f3IiEEDTcl1gfp_EET_
-  template void f3(int);
-}
-
-// PR10205
-namespace test32 {
-  template<typename T, int=T::value> struct A {
-    typedef int type;
-  };
-  struct B { enum { value = 4 }; };
-
-  template <class T> typename A<T>::type foo() { return 0; }
-  void test() {
-    foo<B>();
-    // CHECK: call i32 @_ZN6test323fooINS_1BEEENS_1AIT_XsrS3_5valueEE4typeEv()
-  }
-}
-
-namespace test33 {
-  template <class T> struct X {
-    enum { value = T::value };
-  };
-
-  template<typename T, int=X<T>::value> struct A {
-    typedef int type;
-  };
-  struct B { enum { value = 4 }; };
-
-  template <class T> typename A<T>::type foo() { return 0; }
-
-  void test() {
-    foo<B>();
-    // CHECK: call i32 @_ZN6test333fooINS_1BEEENS_1AIT_Xsr1XIS3_EE5valueEE4typeEv()
-  }
-}
-
-namespace test34 {
-  // Mangling for instantiation-dependent decltype expressions.
-  template<typename T>
-  void f(decltype(sizeof(decltype(T() + T())))) {}
-
-  // CHECK: define weak_odr void @_ZN6test341fIiEEvDTstDTplcvT__EcvS1__EEE
-  template void f<int>(decltype(sizeof(1)));
-
-  // Mangling for non-instantiation-dependent sizeof expressions.
-  template<unsigned N>
-  void f2(int (&)[N + sizeof(int*)]) {}
-
-  // CHECK: define weak_odr void @_ZN6test342f2ILj4EEEvRAplT_Lm8E_i
-  template void f2<4>(int (&)[4 + sizeof(int*)]);
-
-  // Mangling for non-instantiation-dependent sizeof expressions
-  // involving an implicit conversion of the result of the sizeof.
-  template<unsigned long long N>
-  void f3(int (&)[N + sizeof(int*)]) {}
-
-  // CHECK: define weak_odr void @_ZN6test342f3ILy4EEEvRAplT_Ly8E_i
-  template void f3<4>(int (&)[4 + sizeof(int*)]);
-
-  // Mangling for instantiation-dependent sizeof() expressions as
-  // template arguments.
-  template<unsigned> struct A { };
-
-  template<typename T> void f4(::test34::A<sizeof(sizeof(decltype(T() + T())))>) { }
-
-  // CHECK: define weak_odr void @_ZN6test342f4IiEEvNS_1AIXszstDTplcvT__EcvS2__EEEEE
-  template void f4<int>(A<sizeof(sizeof(int))>);
-}
-
-namespace test35 {
-  // Dependent operator names of unknown arity.
-  struct A { 
-    template<typename U> A operator+(U) const;
-  };
-
-  template<typename T>
-  void f1(decltype(sizeof(&T::template operator+<int>))) {}
-
-  // CHECK: define weak_odr void @_ZN6test352f1INS_1AEEEvDTszadsrT_plIiEE
-  template void f1<A>(__SIZE_TYPE__);
-}
-
-namespace test36 {
-  template<unsigned> struct A { };
-
-  template<typename ...Types>
-  auto f1(Types... values) -> A<sizeof...(values)> { }
-
-  // CHECK: define weak_odr {{.*}} @_ZN6test362f1IJifEEENS_1AIXsZfp_EEEDpT_
-  template A<2> f1(int, float);
-}
-
-namespace test37 {
-  struct foo {
-    struct {
-    } a;
-    typedef struct { } b;
-    typedef struct { } *c;
-    struct {
-    } d;
-  };
-  template<typename T> void func(T) { }
-  void test() {
-    // CHECK: define linkonce_odr void @_ZN6test374funcINS_3fooUt_EEEvT_
-    func(foo().a);
-    // CHECK: define linkonce_odr void @_ZN6test374funcINS_3fooUt0_EEEvT_
-    func(*foo::c());
-    // CHECK: define linkonce_odr void @_ZN6test374funcINS_3fooUt1_EEEvT_
-    func(foo().d);
-  }
-}
-
-// CHECK: define void @_Z6ASfuncPU3AS3i
-void ASfunc(__attribute__((address_space(3))) int* x) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-alignment.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-alignment.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-alignment.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-// rdar://7268289
-
-class t {
-public:
-  virtual void foo(void);
-  void bar(void);
-};
-
-void
-t::bar(void) {
-// CHECK: _ZN1t3barEv{{.*}} align 2
-}
-
-void
-t::foo(void) {
-// CHECK: _ZN1t3fooEv{{.*}} align 2
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-call-parens.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-call-parens.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-call-parens.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-// expected-no-diagnostics
-
-struct A { int a(); };
-typedef int B;
-void a() {
-  A x;
-  ((x.a))();
-  ((x.*&A::a))();
-  B y;
-  // FIXME: Sema doesn't like this for some reason...
-  //(y.~B)();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-data-pointers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-data-pointers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-data-pointers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-unknown-unknown | FileCheck -check-prefix GLOBAL-LP64 %s
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-unknown | FileCheck -check-prefix GLOBAL-LP32 %s
-
-struct A;
-typedef int A::*param_t;
-struct {
-  const char *name;
-  param_t par;
-} *ptr;
-void test_ptr() { (void) ptr; } // forced use
-
-// GLOBAL-LP64: type { i8*, i64 }
-// GLOBAL-LP32: type { i8*, i32 }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-expressions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-expressions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-expressions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 | FileCheck %s
-
-// PR5392
-namespace PR5392 {
-struct A
-{
-  static int a;
-};
-
-A a1;
-void f()
-{
-  // CHECK: store i32 10, i32* @_ZN6PR53921A1aE
-  a1.a = 10;
-  // CHECK: store i32 20, i32* @_ZN6PR53921A1aE
-  A().a = 20;
-}
-
-}
-
-struct A {
-  A();
-  ~A();
-  enum E { Foo };
-};
-
-A *g();
-
-void f(A *a) {
-  A::E e1 = a->Foo;
-  
-  // CHECK: call %struct.A* @_Z1gv()
-  A::E e2 = g()->Foo;
-  // CHECK: call void @_ZN1AC1Ev(
-  // CHECK: call void @_ZN1AD1Ev(
-  A::E e3 = A().Foo;
-}
-
-namespace test3 {
-struct A {
-  static int foo();
-};
-int f() {
-  return A().foo();
-}
-}
-
-namespace test4 {
-  struct A {
-    int x;
-  };
-  struct B {
-    int x;
-    void foo();
-  };
-  struct C : A, B {
-  };
-
-  extern C *c_ptr;
-
-  // CHECK: define i32 @_ZN5test44testEv()
-  int test() {
-    // CHECK: load {{.*}} @_ZN5test45c_ptrE
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: getelementptr
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: call void @_ZN5test41B3fooEv
-    c_ptr->B::foo();
-
-    // CHECK: load {{.*}} @_ZN5test45c_ptrE
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: getelementptr
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: getelementptr
-    // CHECK-NEXT: store i32 5
-    c_ptr->B::x = 5;
-
-    // CHECK: load {{.*}} @_ZN5test45c_ptrE
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: getelementptr
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: getelementptr
-    // CHECK-NEXT: load i32*
-    return c_ptr->B::x;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-function-pointer-calls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-function-pointer-calls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-function-pointer-calls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
-struct A {
-  virtual int vf1() { return 1; }
-  virtual int vf2() { return 2; }
-};
-
-int f(A* a, int (A::*fp)()) {
-  return (a->*fp)();
-}
-
-// CHECK: define i32 @_Z2g1v()
-// CHECK: ret i32 1
-int g1() {
-  A a;
-  return f(&a, &A::vf1);
-}
-
-// CHECK: define i32 @_Z2g2v()
-// CHECK: ret i32 2
-int g2() {
-  A a;
-  return f(&a, &A::vf2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-function-pointers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-function-pointers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-function-pointers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,289 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-unknown-unknown | FileCheck -check-prefix CODE-LP64 %s
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i386-unknown-unknown | FileCheck -check-prefix CODE-LP32 %s
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-unknown-unknown | FileCheck -check-prefix GLOBAL-LP64 %s
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i386-unknown-unknown | FileCheck -check-prefix GLOBAL-LP32 %s
-// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-unknown | FileCheck -check-prefix GLOBAL-ARM %s
-
-struct A { int a; void f(); virtual void vf1(); virtual void vf2(); };
-struct B { int b; virtual void g(); };
-struct C : B, A { };
-
-void (A::*pa)();
-void (A::*volatile vpa)();
-void (B::*pb)();
-void (C::*pc)();
-
-// GLOBAL-LP64: @pa2 = global { i64, i64 } { i64 ptrtoint (void (%struct.A*)* @_ZN1A1fEv to i64), i64 0 }, align 8
-void (A::*pa2)() = &A::f;
-
-// GLOBAL-LP64: @pa3 = global { i64, i64 } { i64 1, i64 0 }, align 8
-// GLOBAL-LP32: @pa3 = global { i32, i32 } { i32 1, i32 0 }, align 4
-void (A::*pa3)() = &A::vf1;
-
-// GLOBAL-LP64: @pa4 = global { i64, i64 } { i64 9, i64 0 }, align 8
-// GLOBAL-LP32: @pa4 = global { i32, i32 } { i32 5, i32 0 }, align 4
-void (A::*pa4)() = &A::vf2;
-
-// GLOBAL-LP64: @pc2 = global { i64, i64 } { i64 ptrtoint (void (%struct.A*)* @_ZN1A1fEv to i64), i64 16 }, align 8
-void (C::*pc2)() = &C::f;
-
-// GLOBAL-LP64: @pc3 = global { i64, i64 } { i64 1, i64 0 }, align 8
-void (A::*pc3)() = &A::vf1;
-
-void f() {
-  // CODE-LP64: store { i64, i64 } zeroinitializer, { i64, i64 }* @pa
-  pa = 0;
-
-  // Is this okay?  What are LLVM's volatile semantics for structs?
-  // CODE-LP64: store volatile { i64, i64 } zeroinitializer, { i64, i64 }* @vpa
-  vpa = 0;
-
-  // CODE-LP64: [[TMP:%.*]] = load { i64, i64 }* @pa, align 8
-  // CODE-LP64: [[TMPADJ:%.*]] = extractvalue { i64, i64 } [[TMP]], 1
-  // CODE-LP64: [[ADJ:%.*]] = add nsw i64 [[TMPADJ]], 16
-  // CODE-LP64: [[RES:%.*]] = insertvalue { i64, i64 } [[TMP]], i64 [[ADJ]], 1
-  // CODE-LP64: store { i64, i64 } [[RES]], { i64, i64 }* @pc, align 8
-  pc = pa;
-
-  // CODE-LP64: [[TMP:%.*]] = load { i64, i64 }* @pc, align 8
-  // CODE-LP64: [[TMPADJ:%.*]] = extractvalue { i64, i64 } [[TMP]], 1
-  // CODE-LP64: [[ADJ:%.*]] = sub nsw i64 [[TMPADJ]], 16
-  // CODE-LP64: [[RES:%.*]] = insertvalue { i64, i64 } [[TMP]], i64 [[ADJ]], 1
-  // CODE-LP64: store { i64, i64 } [[RES]], { i64, i64 }* @pa, align 8
-  pa = static_cast<void (A::*)()>(pc);
-}
-
-void f2() {
-  // CODE-LP64: store { i64, i64 } { i64 ptrtoint (void (%struct.A*)* @_ZN1A1fEv to i64), i64 0 }
-  void (A::*pa2)() = &A::f;
-  
-  // CODE-LP64: store { i64, i64 } { i64 1, i64 0 }
-  // CODE-LP32: store { i32, i32 } { i32 1, i32 0 }
-  void (A::*pa3)() = &A::vf1;
-  
-  // CODE-LP64: store { i64, i64 } { i64 9, i64 0 }
-  // CODE-LP32: store { i32, i32 } { i32 5, i32 0 }
-  void (A::*pa4)() = &A::vf2;
-}
-
-void f3(A *a, A &ar) {
-  (a->*pa)();
-  (ar.*pa)();
-}
-
-bool f4() {
-  return pa;
-}
-
-// PR5177
-namespace PR5177 {
-  struct A {
-   bool foo(int*) const;
-  } a;
-
-  struct B1 {
-   bool (A::*pmf)(int*) const;
-   const A* pa;
-
-   B1() : pmf(&A::foo), pa(&a) {}
-   bool operator()() const { return (pa->*pmf)(new int); }
-  };
-
-  void bar(B1 b2) { while (b2()) ; }
-}
-
-// PR5138
-namespace PR5138 {
-  struct foo {
-      virtual void bar(foo *);
-  };
-
-  extern "C" {
-    void baz(foo *);
-  }
-  
-  void (foo::*ptr1)(void *) = (void (foo::*)(void *))&foo::bar;
-  void (*ptr2)(void *) = (void (*)(void *))&baz;
-
-  void (foo::*ptr3)(void) = (void (foo::*)(void))&foo::bar;
-}
-
-// PR5593
-namespace PR5593 {
-  struct A { };
-  
-  bool f(void (A::*f)()) {
-    return f && f;
-  }
-}
-
-namespace PR5718 {
-  struct A { };
-  
-  bool f(void (A::*f)(), void (A::*g)()) {
-    return f == g;
-  }
-}
-
-namespace BoolMemberPointer {
-  struct A { };
-  
-  bool f(void (A::*f)()) {
-    return !f;
-  }
-
-  bool g(void (A::*f)()) {
-    if (!!f)
-      return true;
-    return false;
-  }
-}
-
-// PR5940
-namespace PR5940 {
-  class foo {
-  public:
-    virtual void baz(void);
-  };
-
-  void foo::baz(void) {
-       void (foo::*ptr)(void) = &foo::baz;
-  }
-}
-
-namespace MemberPointerImpCast {
-  struct A {
-    int x;
-  };
-  struct B : public A {
-  };
-  void f(B* obj, void (A::*method)()) {
-    (obj->*method)();
-  }
-}
-
-// PR6258
-namespace PR6258 {
-
-  struct A {
-    void f(bool);
-  };
-
-  void (A::*pf)(bool) = &A::f;
-
-  void f() {
-    void (A::*pf)(bool) = &A::f;
-  }
-}
-
-// PR7027 
-namespace PR7027 {
-  struct X { void test( ); };
-  void testX() { &X::test; }
-}
-
-namespace test7 {
-  struct A { void foo(); virtual void vfoo(); };
-  struct B { void foo(); virtual void vfoo(); };
-  struct C : A, B { void foo(); virtual void vfoo(); };
-
-  // GLOBAL-ARM: @_ZN5test74ptr0E = global {{.*}} { i32 ptrtoint ({{.*}}* @_ZN5test71A3fooEv to i32), i32 0 }
-  // GLOBAL-ARM: @_ZN5test74ptr1E = global {{.*}} { i32 ptrtoint ({{.*}}* @_ZN5test71B3fooEv to i32), i32 8 }
-  // GLOBAL-ARM: @_ZN5test74ptr2E = global {{.*}} { i32 ptrtoint ({{.*}}* @_ZN5test71C3fooEv to i32), i32 0 }
-  // GLOBAL-ARM: @_ZN5test74ptr3E = global {{.*}} { i32 0, i32 1 }
-  // GLOBAL-ARM: @_ZN5test74ptr4E = global {{.*}} { i32 0, i32 9 }
-  // GLOBAL-ARM: @_ZN5test74ptr5E = global {{.*}} { i32 0, i32 1 }
-  void (C::*ptr0)() = &A::foo;
-  void (C::*ptr1)() = &B::foo;
-  void (C::*ptr2)() = &C::foo;
-  void (C::*ptr3)() = &A::vfoo;
-  void (C::*ptr4)() = &B::vfoo;
-  void (C::*ptr5)() = &C::vfoo;
-}
-
-namespace test8 {
-  struct X { };
-  typedef int (X::*pmf)(int);
-  
-  // CHECK: {{define.*_ZN5test81fEv}}
-  pmf f() {
-    // CHECK: {{ret.*zeroinitializer}}
-    return pmf();
-  }
-}
-
-namespace test9 {
-  struct A {
-    void foo();
-  };
-  struct B : A {
-    void foo();
-  };
-
-  typedef void (A::*fooptr)();
-
-  struct S {
-    fooptr p;
-  };
-
-  // CODE-LP64:    define void @_ZN5test94testEv(
-  // CODE-LP64:      alloca i32
-  // CODE-LP64-NEXT: ret void
-  void test() {
-    int x;
-    static S array[] = { (fooptr) &B::foo };
-  }
-}
-
-// rdar://problem/10815683 - Verify that we can emit reinterprets of
-// member pointers as constant initializers.  For added trickiness,
-// we also add some non-trivial adjustments.
-namespace test10 {
-  struct A {
-    int nonEmpty;
-    void foo();
-  };
-  struct B : public A {
-    virtual void requireNonZeroAdjustment();
-  };
-  struct C {
-    int nonEmpty;
-  };
-  struct D : public C {
-    virtual void requireNonZeroAdjustment();
-  };
-
-
-// It's not that the offsets are doubled on ARM, it's that they're left-shifted by 1.
-
-// GLOBAL-LP64: @_ZN6test101aE = global { i64, i64 } { i64 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i64), i64 0 }, align 8
-// GLOBAL-LP32: @_ZN6test101aE = global { i32, i32 } { i32 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i32), i32 0 }, align 4
-// GLOBAL-ARM:  @_ZN6test101aE = global { i32, i32 } { i32 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i32), i32 0 }, align 4
-  void (A::*a)() = &A::foo;
-
-// GLOBAL-LP64: @_ZN6test101bE = global { i64, i64 } { i64 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i64), i64 8 }, align 8
-// GLOBAL-LP32: @_ZN6test101bE = global { i32, i32 } { i32 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i32), i32 4 }, align 4
-// GLOBAL-ARM:  @_ZN6test101bE = global { i32, i32 } { i32 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i32), i32 8 }, align 4
-  void (B::*b)() = (void (B::*)()) &A::foo;
-
-// GLOBAL-LP64: @_ZN6test101cE = global { i64, i64 } { i64 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i64), i64 8 }, align 8
-// GLOBAL-LP32: @_ZN6test101cE = global { i32, i32 } { i32 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i32), i32 4 }, align 4
-// GLOBAL-ARM:  @_ZN6test101cE = global { i32, i32 } { i32 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i32), i32 8 }, align 4
-  void (C::*c)() = (void (C::*)()) (void (B::*)()) &A::foo;
-
-// GLOBAL-LP64: @_ZN6test101dE = global { i64, i64 } { i64 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i64), i64 16 }, align 8
-// GLOBAL-LP32: @_ZN6test101dE = global { i32, i32 } { i32 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i32), i32 8 }, align 4
-// GLOBAL-ARM:  @_ZN6test101dE = global { i32, i32 } { i32 ptrtoint (void (%"struct.test10::A"*)* @_ZN6test101A3fooEv to i32), i32 16 }, align 4
-  void (D::*d)() = (void (C::*)()) (void (B::*)()) &A::foo;
-}
-
-namespace test11 {
-  struct A { virtual void a(); };
-  struct B : A {};
-  struct C : B { virtual void a(); };
-  void (C::*x)() = &C::a;
-
-  // GLOBAL-LP64: @_ZN6test111xE = global { i64, i64 } { i64 1, i64 0 }
-  // GLOBAL-LP32: @_ZN6test111xE = global { i32, i32 } { i32 1, i32 0 }
-  // GLOBAL-ARM:  @_ZN6test111xE = global { i32, i32 } { i32 0, i32 1 }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin9 -o - %s | FileCheck %s
-
-struct C {
-  void f();
-  void g(int, ...);
-};
-
-// CHECK: define void @_ZN1C1fEv
-void C::f() {
-}
-
-// CHECK: define void @_Z5test1v
-void test1() {
-  C c;
-
-  // CHECK: call void @_ZN1C1fEv
-  c.f();
-
-  // CHECK: call void (%struct.C*, i32, ...)* @_ZN1C1gEiz
-  c.g(1, 2, 3);
-}
-
-
-struct S {
-  inline S() { }
-  inline ~S() { }
-
-  void f_inline1() { }
-  inline void f_inline2() { }
-
-  static void g() { }
-  static void f();
-
-  virtual void v() {}
-};
-
-// CHECK: define void @_ZN1S1fEv
-void S::f() {
-}
-
-void test2() {
-  S s;
-
-  s.f_inline1();
-  s.f_inline2();
-
-  S::g();
-}
-
-// S::S()
-// CHECK: define linkonce_odr void @_ZN1SC1Ev{{.*}} unnamed_addr
-
-// S::f_inline1()
-// CHECK: define linkonce_odr void @_ZN1S9f_inline1Ev
-
-// S::f_inline2()
-// CHECK: define linkonce_odr void @_ZN1S9f_inline2Ev
-
-// S::g()
-// CHECK: define linkonce_odr void @_ZN1S1gEv
-
-// S::~S()
-// CHECK: define linkonce_odr void @_ZN1SD1Ev{{.*}} unnamed_addr
-
-struct T {
-  T operator+(const T&);
-};
-
-// CHECK: define void @_Z5test3v
-void test3() {
-  T t1, t2;
-
-  // CHECK: call void @_ZN1TplERKS_
-  T result = t1 + t2;
-}
-
-// S::~S()
-// CHECK: define linkonce_odr void @_ZN1SD2Ev{{.*}} unnamed_addr
-
-// S::S()
-// CHECK: define linkonce_odr void @_ZN1SC2Ev{{.*}} unnamed_addr
-
-// S::v()
-// CHECK: define linkonce_odr void @_ZN1S1vEv{{.*}}unnamed_addr
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-anon-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-anon-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-anon-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - | FileCheck %s
-
-// PR10531.
-
-int make_a();
-
-static union {
-  int a = make_a();
-  char *b;
-};
-
-int f() { return a; }
-
-// CHECK: define internal void @__cxx_global_var_init
-// CHECK-NOT: }
-// CHECK: call {{.*}}@"[[CONSTRUCT_GLOBAL:.*]]C1Ev"
-
-
-int g() {
-  union {
-    int a;
-    int b = 81;
-  };
-  // CHECK: define {{.*}}_Z1gv
-  // CHECK-NOT: }
-  // CHECK: call {{.*}}@"[[CONSTRUCT_LOCAL:.*]]C1Ev"
-  return b;
-}
-
-
-// CHECK: define {{.*}}@"[[CONSTRUCT_LOCAL]]C2Ev"
-// CHECK-NOT: }
-// CHECK: store i32 81
-
-// CHECK: define {{.*}}@"[[CONSTRUCT_GLOBAL]]C2Ev"
-// CHECK-NOT: }
-// CHECK: call {{.*}}@_Z6make_a

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-assignment.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-assignment.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-assignment.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - | FileCheck %s
-// PR7291
-
-struct Foo {
-  unsigned file_id;
-
-  Foo(unsigned arg);
-};
-
-Foo::Foo(unsigned arg) : file_id(arg = 42)
-{ }
-
-// CHECK: define {{.*}} @_ZN3FooC2Ej(%struct.Foo* %this, i32 %arg) unnamed_addr
-// CHECK: [[ARG:%.*]] = alloca i32
-// CHECK: store i32 42, i32* [[ARG]]
-// CHECK: store i32 42, i32* %{{.*}}
-// CHECK: ret {{void|%struct.Foo}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-struct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-struct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-struct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only -verify
-// expected-no-diagnostics
-
-struct A {int a;};
-struct B {float a;};
-struct C {
-  union {
-    A a;
-    B b[10];
-  };
-  _Complex float c;
-  int d[10];
-  void (C::*e)();
-  C() : a(), c(), d(), e() {}
-  C(A x) : a(x) {}
-  C(void (C::*x)(), int y) : b(), c(y), e(x) {}
-};
-A x;
-C a, b(x), c(0, 2);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-init-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only -verify
-// expected-no-diagnostics
-
-union x {
-  int a;
-  float b;
-  x(float y) : b(y) {}
-  x(int y) : a(y) {}
-};
-x a(1), b(1.0f);
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 -O3 | FileCheck %s
-
-struct A {
-  virtual int f() { return 1; }
-};
-
-struct B : A {
-  B() : i(f()) { }
-  
-  virtual int f() { return 2; }
-  
-  int i;
-};
-
-// CHECK: define i32 @_Z1fv() #0
-int f() {
-  B b;
-  
-  // CHECK: ret i32 2
-  return b.i;
-}
-
-// Test that we don't try to fold the default value of j when initializing i.
-// CHECK: define i32 @_Z9test_foldv() [[NUW_RN:#[0-9]+]]
-int test_fold() {
-  struct A {
-    A(const int j = 1) : i(j) { } 
-    int i;
-  };
-
-  // CHECK: ret i32 2
-  return A(2).i;
-}
-
-// CHECK: attributes [[NUW_RN]] = { nounwind readnone{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/member-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// CHECK: ; ModuleID
-struct A {
-  template<typename T>
-  A(T);
-};
-
-template<typename T> A::A(T) {}
-
-struct B {
-  template<typename T>
-  B(T);
-};
-
-template<typename T> B::B(T) {}
-
-// CHECK: define weak_odr void @_ZN1BC1IiEET_(%struct.B* %this, i32) unnamed_addr
-// CHECK: define weak_odr void @_ZN1BC2IiEET_(%struct.B* %this, i32) unnamed_addr
-template B::B(int);
-
-template<typename T>
-struct C {
-  void f() {
-    int a[] = { 1, 2, 3 };
-  }
-};
-
-void f(C<int>& c) {
-  c.f();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-array-cookies.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-array-cookies.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-array-cookies.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-struct ClassWithoutDtor {
-  char x;
-};
-
-void check_array_no_cookies() {
-// CHECK: define void @"\01?check_array_no_cookies@@YAXXZ"() [[NUW:#[0-9]+]]
-
-// CHECK: call noalias i8* @"\01??_U at YAPAXI@Z"(i32 42)
-  ClassWithoutDtor *array = new ClassWithoutDtor[42];
-
-// CHECK: call void @"\01??_V at YAXPAX@Z"(
-  delete [] array;
-
-}
-
-struct ClassWithDtor {
-  char x;
-  ~ClassWithDtor() {}
-};
-
-void check_array_cookies_simple() {
-// CHECK: define {{.*}} @"\01?check_array_cookies_simple@@YAXXZ"()
-
-  ClassWithDtor *array = new ClassWithDtor[42];
-// CHECK: [[ALLOCATED:%.*]] = call noalias i8* @"\01??_U at YAPAXI@Z"(i32 46)
-// 46 = 42 + size of cookie (4)
-// CHECK: [[COOKIE:%.*]] = bitcast i8* [[ALLOCATED]] to i32*
-// CHECK: store i32 42, i32* [[COOKIE]]
-// CHECK: [[ARRAY:%.*]] = getelementptr inbounds i8* [[ALLOCATED]], i64 4
-// CHECK: bitcast i8* [[ARRAY]] to [[CLASS:%.*]]*
-
-  delete [] array;
-// CHECK: [[ARRAY_AS_CHAR:%.*]] = bitcast [[CLASS]]* {{%.*}} to i8*
-// CHECK: getelementptr inbounds i8* [[ARRAY_AS_CHAR]], i64 -4
-}
-
-struct __attribute__((aligned(8))) ClassWithAlignment {
-  // FIXME: replace __attribute__((aligned(8))) with __declspec(align(8)) once
-  // http://llvm.org/bugs/show_bug.cgi?id=12631 is fixed.
-  int *x, *y;
-  ~ClassWithAlignment() {}
-};
-
-void check_array_cookies_aligned() {
-// CHECK: define {{.*}} @"\01?check_array_cookies_aligned@@YAXXZ"()
-  ClassWithAlignment *array = new ClassWithAlignment[42];
-// CHECK: [[ALLOCATED:%.*]] = call noalias i8* @"\01??_U at YAPAXI@Z"(i32 344)
-//   344 = 42*8 + size of cookie (8, due to alignment)
-// CHECK: [[COOKIE:%.*]] = bitcast i8* [[ALLOCATED]] to i32*
-// CHECK: store i32 42, i32* [[COOKIE]]
-// CHECK: [[ARRAY:%.*]] = getelementptr inbounds i8* [[ALLOCATED]], i64 8
-// CHECK: bitcast i8* [[ARRAY]] to [[CLASS:%.*]]*
-
-  delete [] array;
-// CHECK: [[ARRAY_AS_CHAR:%.*]] = bitcast [[CLASS]]*
-// CHECK: getelementptr inbounds i8* [[ARRAY_AS_CHAR]], i64 -8
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-default-cc.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-default-cc.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-default-cc.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck -check-prefix GCABI %s
-// RUN: %clang_cc1 -emit-llvm %s -o - -DMS_ABI -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck -check-prefix MSABI %s
-
-#ifdef MS_ABI
-# define METHOD_CC __thiscall
-#else
-# define METHOD_CC __attribute__ ((cdecl))
-#endif
-
-// Test that it's OK to have multiple function declarations with the default CC
-// both mentioned explicitly and implied.
-void foo();
-void __cdecl foo();
-void __cdecl foo() {}
-// GCABI: define void @_Z3foov()
-// MSABI: define void @"\01?foo@@YAXXZ"
-
-void __cdecl bar();
-void bar();
-void bar() {}
-// GCABI: define void @_Z3barv()
-// MSABI: define void @"\01?bar@@YAXXZ"
-
-// Test that it's OK to mark either the method declaration or method definition
-// with a default CC explicitly.
-class A {
-public:
-  void baz();
-  void METHOD_CC qux();
-
-  static void static_baz();
-  static void __cdecl static_qux();
-};
-
-void METHOD_CC A::baz() {}
-// GCABI: define void @_ZN1A3bazEv
-// MSABI: define x86_thiscallcc void @"\01?baz at A@@QAEXXZ"
-void A::qux() {}
-// GCABI: define void @_ZN1A3quxEv
-// MSABI: define x86_thiscallcc void @"\01?qux at A@@QAEXXZ"
-
-void __cdecl static_baz() {}
-// GCABI: define void @_Z10static_bazv
-// MSABI: define void @"\01?static_baz@@YAXXZ"
-void static_qux() {}
-// GCABI: define void @_Z10static_quxv
-// MSABI: define void @"\01?static_qux@@YAXXZ"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-member-pointers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-member-pointers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-member-pointers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,363 +0,0 @@
-// RUN: %clang_cc1 -fno-rtti -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-struct B1 {
-  void foo();
-  int b;
-};
-struct B2 {
-  void foo();
-};
-struct Single : B1 {
-  void foo();
-};
-struct Multiple : B1, B2 {
-  void foo();
-};
-struct Virtual : virtual B1 {
-  int v;
-  void foo();
-};
-
-struct POD {
-  int a;
-  int b;
-};
-
-struct Polymorphic {
-  virtual void myVirtual();
-  int a;
-  int b;
-};
-
-// This class uses the virtual inheritance model, yet its vbptr offset is not 0.
-// We still use zero for the null field offset, despite it being a valid field
-// offset.
-struct NonZeroVBPtr : POD, Virtual {
-  int n;
-};
-
-struct Unspecified;
-
-// Check that we can lower the LLVM types and get the null initializers right.
-int Single     ::*s_d_memptr;
-int Polymorphic::*p_d_memptr;
-int Multiple   ::*m_d_memptr;
-int Virtual    ::*v_d_memptr;
-int NonZeroVBPtr::*n_d_memptr;
-int Unspecified::*u_d_memptr;
-// CHECK: @"\01?s_d_memptr@@3PQSingle@@HA" = global i32 -1, align 4
-// CHECK: @"\01?p_d_memptr@@3PQPolymorphic@@HA" = global i32 0, align 4
-// CHECK: @"\01?m_d_memptr@@3PQMultiple@@HA" = global i32 -1, align 4
-// CHECK: @"\01?v_d_memptr@@3PQVirtual@@HA" = global { i32, i32 }
-// CHECK:   { i32 0, i32 -1 }, align 4
-// CHECK: @"\01?n_d_memptr@@3PQNonZeroVBPtr@@HA" = global { i32, i32 }
-// CHECK:   { i32 0, i32 -1 }, align 4
-// CHECK: @"\01?u_d_memptr@@3PQUnspecified@@HA" = global { i32, i32, i32 }
-// CHECK:   { i32 0, i32 0, i32 -1 }, align 4
-
-void (Single  ::*s_f_memptr)();
-void (Multiple::*m_f_memptr)();
-void (Virtual ::*v_f_memptr)();
-// CHECK: @"\01?s_f_memptr@@3P8Single@@AEXXZA" = global i8* null, align 4
-// CHECK: @"\01?m_f_memptr@@3P8Multiple@@AEXXZA" = global { i8*, i32 } zeroinitializer, align 4
-// CHECK: @"\01?v_f_memptr@@3P8Virtual@@AEXXZA" = global { i8*, i32, i32 } zeroinitializer, align 4
-
-// We can define Unspecified after locking in the inheritance model.
-struct Unspecified : Virtual {
-  void foo();
-  int u;
-};
-
-struct UnspecWithVBPtr;
-int UnspecWithVBPtr::*forceUnspecWithVBPtr;
-struct UnspecWithVBPtr : B1, virtual B2 {
-  int u;
-  void foo();
-};
-
-// Test emitting non-virtual member pointers in a non-constexpr setting.
-void EmitNonVirtualMemberPointers() {
-  void (Single     ::*s_f_memptr)() = &Single::foo;
-  void (Multiple   ::*m_f_memptr)() = &Multiple::foo;
-  void (Virtual    ::*v_f_memptr)() = &Virtual::foo;
-  void (Unspecified::*u_f_memptr)() = &Unspecified::foo;
-  void (UnspecWithVBPtr::*u2_f_memptr)() = &UnspecWithVBPtr::foo;
-// CHECK: define void @"\01?EmitNonVirtualMemberPointers@@YAXXZ"() #0 {
-// CHECK:   alloca i8*, align 4
-// CHECK:   alloca { i8*, i32 }, align 4
-// CHECK:   alloca { i8*, i32, i32 }, align 4
-// CHECK:   alloca { i8*, i32, i32, i32 }, align 4
-// CHECK:   store i8* bitcast (void (%{{.*}}*)* @"\01?foo at Single@@QAEXXZ" to i8*), i8** %{{.*}}, align 4
-// CHECK:   store { i8*, i32 }
-// CHECK:     { i8* bitcast (void (%{{.*}}*)* @"\01?foo at Multiple@@QAEXXZ" to i8*), i32 0 },
-// CHECK:     { i8*, i32 }* %{{.*}}, align 4
-// CHECK:   store { i8*, i32, i32 }
-// CHECK:     { i8* bitcast (void (%{{.*}}*)* @"\01?foo at Virtual@@QAEXXZ" to i8*), i32 0, i32 0 },
-// CHECK:     { i8*, i32, i32 }* %{{.*}}, align 4
-// CHECK:   store { i8*, i32, i32, i32 }
-// CHECK:     { i8* bitcast (void (%{{.*}}*)* @"\01?foo at Unspecified@@QAEXXZ" to i8*), i32 0, i32 0, i32 0 },
-// CHECK:     { i8*, i32, i32, i32 }* %{{.*}}, align 4
-// CHECK:   store { i8*, i32, i32, i32 }
-// CHECK:     { i8* bitcast (void (%{{.*}}*)* @"\01?foo at UnspecWithVBPtr@@QAEXXZ" to i8*),
-// CHECK:       i32 0, i32 4, i32 0 },
-// CHECK:     { i8*, i32, i32, i32 }* %{{.*}}, align 4
-// CHECK:   ret void
-// CHECK: }
-}
-
-void podMemPtrs() {
-  int POD::*memptr;
-  memptr = &POD::a;
-  memptr = &POD::b;
-  if (memptr)
-    memptr = 0;
-// Check that member pointers use the right offsets and that null is -1.
-// CHECK:      define void @"\01?podMemPtrs@@YAXXZ"() #0 {
-// CHECK:        %[[memptr:.*]] = alloca i32, align 4
-// CHECK-NEXT:   store i32 0, i32* %[[memptr]], align 4
-// CHECK-NEXT:   store i32 4, i32* %[[memptr]], align 4
-// CHECK-NEXT:   %[[memptr_val:.*]] = load i32* %[[memptr]], align 4
-// CHECK-NEXT:   %{{.*}} = icmp ne i32 %[[memptr_val]], -1
-// CHECK-NEXT:   br i1 %{{.*}}, label %{{.*}}, label %{{.*}}
-// CHECK:        store i32 -1, i32* %[[memptr]], align 4
-// CHECK:        ret void
-// CHECK:      }
-}
-
-void polymorphicMemPtrs() {
-  int Polymorphic::*memptr;
-  memptr = &Polymorphic::a;
-  memptr = &Polymorphic::b;
-  if (memptr)
-    memptr = 0;
-// Member pointers for polymorphic classes include the vtable slot in their
-// offset and use 0 to represent null.
-// CHECK:      define void @"\01?polymorphicMemPtrs@@YAXXZ"() #0 {
-// CHECK:        %[[memptr:.*]] = alloca i32, align 4
-// CHECK-NEXT:   store i32 4, i32* %[[memptr]], align 4
-// CHECK-NEXT:   store i32 8, i32* %[[memptr]], align 4
-// CHECK-NEXT:   %[[memptr_val:.*]] = load i32* %[[memptr]], align 4
-// CHECK-NEXT:   %{{.*}} = icmp ne i32 %[[memptr_val]], 0
-// CHECK-NEXT:   br i1 %{{.*}}, label %{{.*}}, label %{{.*}}
-// CHECK:        store i32 0, i32* %[[memptr]], align 4
-// CHECK:        ret void
-// CHECK:      }
-}
-
-bool nullTestDataUnspecified(int Unspecified::*mp) {
-  return mp;
-// CHECK: define zeroext i1 @"\01?nullTestDataUnspecified@@YA_NPQUnspecified@@H at Z"{{.*}} {
-// CHECK:   %{{.*}} = load { i32, i32, i32 }* %{{.*}}, align 4
-// CHECK:   store { i32, i32, i32 } {{.*}} align 4
-// CHECK:   %[[mp:.*]] = load { i32, i32, i32 }* %{{.*}}, align 4
-// CHECK:   %[[mp0:.*]] = extractvalue { i32, i32, i32 } %[[mp]], 0
-// CHECK:   %[[cmp0:.*]] = icmp ne i32 %[[mp0]], 0
-// CHECK:   %[[mp1:.*]] = extractvalue { i32, i32, i32 } %[[mp]], 1
-// CHECK:   %[[cmp1:.*]] = icmp ne i32 %[[mp1]], 0
-// CHECK:   %[[and0:.*]] = and i1 %[[cmp0]], %[[cmp1]]
-// CHECK:   %[[mp2:.*]] = extractvalue { i32, i32, i32 } %[[mp]], 2
-// CHECK:   %[[cmp2:.*]] = icmp ne i32 %[[mp2]], -1
-// CHECK:   %[[and1:.*]] = and i1 %[[and0]], %[[cmp2]]
-// CHECK:   ret i1 %[[and1]]
-// CHECK: }
-}
-
-bool nullTestFunctionUnspecified(void (Unspecified::*mp)()) {
-  return mp;
-// CHECK: define zeroext i1 @"\01?nullTestFunctionUnspecified@@YA_NP8Unspecified@@AEXXZ at Z"{{.*}} {
-// CHECK:   %{{.*}} = load { i8*, i32, i32, i32 }* %{{.*}}, align 4
-// CHECK:   store { i8*, i32, i32, i32 } {{.*}} align 4
-// CHECK:   %[[mp:.*]] = load { i8*, i32, i32, i32 }* %{{.*}}, align 4
-// CHECK:   %[[mp0:.*]] = extractvalue { i8*, i32, i32, i32 } %[[mp]], 0
-// CHECK:   %[[cmp0:.*]] = icmp ne i8* %[[mp0]], null
-// CHECK:   ret i1 %[[cmp0]]
-// CHECK: }
-}
-
-int loadDataMemberPointerVirtual(Virtual *o, int Virtual::*memptr) {
-  return o->*memptr;
-// Test that we can unpack this aggregate member pointer and load the member
-// data pointer.
-// CHECK: define i32 @"\01?loadDataMemberPointerVirtual@@YAHPAUVirtual@@PQ1 at H@Z"{{.*}} {
-// CHECK:   %[[o:.*]] = load %{{.*}}** %{{.*}}, align 4
-// CHECK:   %[[memptr:.*]] = load { i32, i32 }* %{{.*}}, align 4
-// CHECK:   %[[memptr0:.*]] = extractvalue { i32, i32 } %[[memptr:.*]], 0
-// CHECK:   %[[memptr1:.*]] = extractvalue { i32, i32 } %[[memptr:.*]], 1
-// CHECK:   %[[v6:.*]] = bitcast %{{.*}}* %[[o]] to i8*
-// CHECK:   %[[vbptr:.*]] = getelementptr inbounds i8* %[[v6]], i32 0
-// CHECK:   %[[vbptr_a:.*]] = bitcast i8* %[[vbptr]] to i8**
-// CHECK:   %[[vbtable:.*]] = load i8** %[[vbptr_a:.*]]
-// CHECK:   %[[v7:.*]] = getelementptr inbounds i8* %[[vbtable]], i32 %[[memptr1]]
-// CHECK:   %[[v8:.*]] = bitcast i8* %[[v7]] to i32*
-// CHECK:   %[[vbase_offs:.*]] = load i32* %[[v8]]
-// CHECK:   %[[v10:.*]] = getelementptr inbounds i8* %[[vbptr]], i32 %[[vbase_offs]]
-// CHECK:   %[[offset:.*]] = getelementptr inbounds i8* %[[v10]], i32 %[[memptr0]]
-// CHECK:   %[[v11:.*]] = bitcast i8* %[[offset]] to i32*
-// CHECK:   %[[v12:.*]] = load i32* %[[v11]]
-// CHECK:   ret i32 %[[v12]]
-// CHECK: }
-}
-
-int loadDataMemberPointerUnspecified(Unspecified *o, int Unspecified::*memptr) {
-  return o->*memptr;
-// Test that we can unpack this aggregate member pointer and load the member
-// data pointer.
-// CHECK: define i32 @"\01?loadDataMemberPointerUnspecified@@YAHPAUUnspecified@@PQ1 at H@Z"{{.*}} {
-// CHECK:   %[[o:.*]] = load %{{.*}}** %{{.*}}, align 4
-// CHECK:   %[[memptr:.*]] = load { i32, i32, i32 }* %{{.*}}, align 4
-// CHECK:   %[[memptr0:.*]] = extractvalue { i32, i32, i32 } %[[memptr:.*]], 0
-// CHECK:   %[[memptr1:.*]] = extractvalue { i32, i32, i32 } %[[memptr:.*]], 1
-// CHECK:   %[[memptr2:.*]] = extractvalue { i32, i32, i32 } %[[memptr:.*]], 2
-// CHECK:   %[[base:.*]] = bitcast %{{.*}}* %[[o]] to i8*
-// CHECK:   %[[is_vbase:.*]] = icmp ne i32 %[[memptr2]], 0
-// CHECK:   br i1 %[[is_vbase]], label %[[vadjust:.*]], label %[[skip:.*]]
-//
-// CHECK: [[vadjust]]
-// CHECK:   %[[vbptr:.*]] = getelementptr inbounds i8* %[[base]], i32 %[[memptr1]]
-// CHECK:   %[[vbptr_a:.*]] = bitcast i8* %[[vbptr]] to i8**
-// CHECK:   %[[vbtable:.*]] = load i8** %[[vbptr_a:.*]]
-// CHECK:   %[[v7:.*]] = getelementptr inbounds i8* %[[vbtable]], i32 %[[memptr2]]
-// CHECK:   %[[v8:.*]] = bitcast i8* %[[v7]] to i32*
-// CHECK:   %[[vbase_offs:.*]] = load i32* %[[v8]]
-// CHECK:   %[[base_adj:.*]] = getelementptr inbounds i8* %[[vbptr]], i32 %[[vbase_offs]]
-//
-// CHECK: [[skip]]
-// CHECK:   %[[new_base:.*]] = phi i8* [ %[[base]], %{{.*}} ], [ %[[base_adj]], %[[vadjust]] ]
-// CHECK:   %[[offset:.*]] = getelementptr inbounds i8* %[[new_base]], i32 %[[memptr0]]
-// CHECK:   %[[v11:.*]] = bitcast i8* %[[offset]] to i32*
-// CHECK:   %[[v12:.*]] = load i32* %[[v11]]
-// CHECK:   ret i32 %[[v12]]
-// CHECK: }
-}
-
-void callMemberPointerSingle(Single *o, void (Single::*memptr)()) {
-  (o->*memptr)();
-// Just look for an indirect thiscall.
-// CHECK: define void @"\01?callMemberPointerSingle@@{{.*}} #0 {
-// CHECK:   call x86_thiscallcc void %{{.*}}(%{{.*}} %{{.*}})
-// CHECK:   ret void
-// CHECK: }
-}
-
-void callMemberPointerMultiple(Multiple *o, void (Multiple::*memptr)()) {
-  (o->*memptr)();
-// CHECK: define void @"\01?callMemberPointerMultiple@@{{.*}} #0 {
-// CHECK:   %[[memptr0:.*]] = extractvalue { i8*, i32 } %{{.*}}, 0
-// CHECK:   %[[memptr1:.*]] = extractvalue { i8*, i32 } %{{.*}}, 1
-// CHECK:   %[[this_adjusted:.*]] = getelementptr inbounds i8* %{{.*}}, i32 %[[memptr1]]
-// CHECK:   %[[this:.*]] = bitcast i8* %[[this_adjusted]] to {{.*}}
-// CHECK:   %[[fptr:.*]] = bitcast i8* %[[memptr0]] to {{.*}}
-// CHECK:   call x86_thiscallcc void %[[fptr]](%{{.*}} %[[this]])
-// CHECK:   ret void
-// CHECK: }
-}
-
-void callMemberPointerVirtualBase(Virtual *o, void (Virtual::*memptr)()) {
-  (o->*memptr)();
-// This shares a lot with virtual data member pointers.
-// CHECK: define void @"\01?callMemberPointerVirtualBase@@{{.*}} #0 {
-// CHECK:   %[[memptr0:.*]] = extractvalue { i8*, i32, i32 } %{{.*}}, 0
-// CHECK:   %[[memptr1:.*]] = extractvalue { i8*, i32, i32 } %{{.*}}, 1
-// CHECK:   %[[memptr2:.*]] = extractvalue { i8*, i32, i32 } %{{.*}}, 2
-// CHECK:   %[[vbptr:.*]] = getelementptr inbounds i8* %{{.*}}, i32 0
-// CHECK:   %[[vbptr_a:.*]] = bitcast i8* %[[vbptr]] to i8**
-// CHECK:   %[[vbtable:.*]] = load i8** %[[vbptr_a:.*]]
-// CHECK:   %[[v7:.*]] = getelementptr inbounds i8* %[[vbtable]], i32 %[[memptr2]]
-// CHECK:   %[[v8:.*]] = bitcast i8* %[[v7]] to i32*
-// CHECK:   %[[vbase_offs:.*]] = load i32* %[[v8]]
-// CHECK:   %[[v10:.*]] = getelementptr inbounds i8* %[[vbptr]], i32 %[[vbase_offs]]
-// CHECK:   %[[this_adjusted:.*]] = getelementptr inbounds i8* %[[v10]], i32 %[[memptr1]]
-// CHECK:   %[[fptr:.*]] = bitcast i8* %[[memptr0]] to void ({{.*}})
-// CHECK:   %[[this:.*]] = bitcast i8* %[[this_adjusted]] to {{.*}}
-// CHECK:   call x86_thiscallcc void %[[fptr]](%{{.*}} %[[this]])
-// CHECK:   ret void
-// CHECK: }
-}
-
-bool compareSingleFunctionMemptr(void (Single::*l)(), void (Single::*r)()) {
-  return l == r;
-// Should only be one comparison here.
-// CHECK: define zeroext i1 @"\01?compareSingleFunctionMemptr@@YA_NP8Single@@AEXXZ0 at Z"{{.*}} {
-// CHECK-NOT: icmp
-// CHECK:   %[[r:.*]] = icmp eq
-// CHECK-NOT: icmp
-// CHECK:   ret i1 %[[r]]
-// CHECK: }
-}
-
-bool compareNeqSingleFunctionMemptr(void (Single::*l)(), void (Single::*r)()) {
-  return l != r;
-// Should only be one comparison here.
-// CHECK: define zeroext i1 @"\01?compareNeqSingleFunctionMemptr@@YA_NP8Single@@AEXXZ0 at Z"{{.*}} {
-// CHECK-NOT: icmp
-// CHECK:   %[[r:.*]] = icmp ne
-// CHECK-NOT: icmp
-// CHECK:   ret i1 %[[r]]
-// CHECK: }
-}
-
-bool unspecFuncMemptrEq(void (Unspecified::*l)(), void (Unspecified::*r)()) {
-  return l == r;
-// CHECK: define zeroext i1 @"\01?unspecFuncMemptrEq@@YA_NP8Unspecified@@AEXXZ0 at Z"{{.*}} {
-// CHECK:   %[[lhs0:.*]] = extractvalue { i8*, i32, i32, i32 } %[[l:.*]], 0
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[r:.*]], 0
-// CHECK:   %[[cmp0:.*]] = icmp eq i8* %[[lhs0]], %{{.*}}
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[l]], 1
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[r]], 1
-// CHECK:   %[[cmp1:.*]] = icmp eq i32
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[l]], 2
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[r]], 2
-// CHECK:   %[[cmp2:.*]] = icmp eq i32
-// CHECK:   %[[res12:.*]] = and i1 %[[cmp1]], %[[cmp2]]
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[l]], 3
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[r]], 3
-// CHECK:   %[[cmp3:.*]] = icmp eq i32
-// CHECK:   %[[res123:.*]] = and i1 %[[res12]], %[[cmp3]]
-// CHECK:   %[[iszero:.*]] = icmp eq i8* %[[lhs0]], null
-// CHECK:   %[[bits_or_null:.*]] = or i1 %[[res123]], %[[iszero]]
-// CHECK:   %{{.*}} = and i1 %[[bits_or_null]], %[[cmp0]]
-// CHECK:   ret i1 %{{.*}}
-// CHECK: }
-}
-
-bool unspecFuncMemptrNeq(void (Unspecified::*l)(), void (Unspecified::*r)()) {
-  return l != r;
-// CHECK: define zeroext i1 @"\01?unspecFuncMemptrNeq@@YA_NP8Unspecified@@AEXXZ0 at Z"{{.*}} {
-// CHECK:   %[[lhs0:.*]] = extractvalue { i8*, i32, i32, i32 } %[[l:.*]], 0
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[r:.*]], 0
-// CHECK:   %[[cmp0:.*]] = icmp ne i8* %[[lhs0]], %{{.*}}
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[l]], 1
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[r]], 1
-// CHECK:   %[[cmp1:.*]] = icmp ne i32
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[l]], 2
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[r]], 2
-// CHECK:   %[[cmp2:.*]] = icmp ne i32
-// CHECK:   %[[res12:.*]] = or i1 %[[cmp1]], %[[cmp2]]
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[l]], 3
-// CHECK:   %{{.*}} = extractvalue { i8*, i32, i32, i32 } %[[r]], 3
-// CHECK:   %[[cmp3:.*]] = icmp ne i32
-// CHECK:   %[[res123:.*]] = or i1 %[[res12]], %[[cmp3]]
-// CHECK:   %[[iszero:.*]] = icmp ne i8* %[[lhs0]], null
-// CHECK:   %[[bits_or_null:.*]] = and i1 %[[res123]], %[[iszero]]
-// CHECK:   %{{.*}} = or i1 %[[bits_or_null]], %[[cmp0]]
-// CHECK:   ret i1 %{{.*}}
-// CHECK: }
-}
-
-bool unspecDataMemptrEq(int Unspecified::*l, int Unspecified::*r) {
-  return l == r;
-// CHECK: define zeroext i1 @"\01?unspecDataMemptrEq@@YA_NPQUnspecified@@H0 at Z"{{.*}} {
-// CHECK:   extractvalue { i32, i32, i32 } %{{.*}}, 0
-// CHECK:   extractvalue { i32, i32, i32 } %{{.*}}, 0
-// CHECK:   icmp eq i32
-// CHECK:   extractvalue { i32, i32, i32 } %{{.*}}, 1
-// CHECK:   extractvalue { i32, i32, i32 } %{{.*}}, 1
-// CHECK:   icmp eq i32
-// CHECK:   extractvalue { i32, i32, i32 } %{{.*}}, 2
-// CHECK:   extractvalue { i32, i32, i32 } %{{.*}}, 2
-// CHECK:   icmp eq i32
-// CHECK:   and i1
-// CHECK:   and i1
-// CHECK:   ret i1
-// CHECK: }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-methods.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-methods.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-methods.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-class C {
- public:
-  void simple_method() {}
-
-  void __cdecl cdecl_method() {}
-
-  void vararg_method(const char *fmt, ...) {}
-
-  static void static_method() {}
-
-  int a;
-};
-
-void call_simple_method() {
-  C instance;
-
-  instance.simple_method();
-// Make sure that the call uses the right calling convention:
-// CHECK: call x86_thiscallcc void @"\01?simple_method at C@@QAEXXZ"
-// CHECK: ret
-
-// Make sure that the definition uses the right calling convention:
-// CHECK: define linkonce_odr x86_thiscallcc void @"\01?simple_method at C@@QAEXXZ"
-// CHECK: ret
-}
-
-void call_cdecl_method() {
-  C instance;
-  instance.cdecl_method();
-// Make sure that the call uses the right calling convention:
-// CHECK: call void @"\01?cdecl_method at C@@QAAXXZ"
-// CHECK: ret
-
-// Make sure that the definition uses the right calling convention:
-// CHECK: define linkonce_odr void @"\01?cdecl_method at C@@QAAXXZ"
-// CHECK: ret
-}
-
-void call_vararg_method() {
-  C instance;
-  instance.vararg_method("Hello");
-// Make sure that the call uses the right calling convention:
-// CHECK: call void (%class.C*, i8*, ...)* @"\01?vararg_method at C@@QAAXPBDZZ"
-// CHECK: ret
-
-// Make sure that the definition uses the right calling convention:
-// CHECK: define linkonce_odr void @"\01?vararg_method at C@@QAAXPBDZZ"
-}
-
-void call_static_method() {
-  C::static_method();
-// Make sure that the call uses the right calling convention:
-// CHECK: call void @"\01?static_method at C@@SAXXZ"
-// CHECK: ret
-
-// Make sure that the definition uses the right calling convention:
-// CHECK: define linkonce_odr void @"\01?static_method at C@@SAXXZ"
-}
-
-class Base {
- public:
-  Base() {}
-  ~Base() {}
-};
-
-class Child: public Base { };
-
-void constructors() {
-  Child c;
-// Make sure that the Base constructor call in the Child constructor uses
-// the right calling convention:
-// CHECK: define linkonce_odr x86_thiscallcc %class.Child* @"\01??0Child@@QAE at XZ"
-// CHECK: %{{[.0-9A-Z_a-z]+}} = call x86_thiscallcc %class.Base* @"\01??0Base@@QAE at XZ"
-// CHECK: ret
-
-// Make sure that the Base destructor call in the Child denstructor uses
-// the right calling convention:
-// CHECK: define linkonce_odr x86_thiscallcc void @"\01??1Child@@QAE at XZ"
-// CHECK: call x86_thiscallcc void @"\01??1Base@@QAE at XZ"
-// CHECK: ret
-
-// Make sure that the Base destructor definition uses the right CC:
-// CHECK: define linkonce_odr x86_thiscallcc void @"\01??1Base@@QAE at XZ"
-
-// Make sure that the Base constructor definition uses the right CC:
-// CHECK: define linkonce_odr x86_thiscallcc %class.Base* @"\01??0Base@@QAE at XZ"
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,169 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-pc-linux | FileCheck -check-prefix LINUX %s
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-pc-win32 -cxx-abi microsoft | FileCheck -check-prefix WIN32 %s
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-pc-win32 -cxx-abi microsoft | FileCheck -check-prefix WIN64 %s
-
-struct Empty {};
-
-struct EmptyWithCtor {
-  EmptyWithCtor() {}
-};
-
-struct Small {
-  int x;
-};
-
-// This is a C++11 trivial and standard-layout struct but not a C++03 POD.
-struct SmallCpp11NotCpp03Pod : Empty {
-  int x;
-};
-
-struct SmallWithCtor {
-  SmallWithCtor() {}
-  int x;
-};
-
-struct SmallWithVftable {
-  int x;
-  virtual void foo();
-};
-
-struct Medium {
-  int x, y;
-};
-
-struct MediumWithCopyCtor {
-  MediumWithCopyCtor();
-  MediumWithCopyCtor(const struct MediumWithCopyCtor &);
-  int x, y;
-};
-
-struct Big {
-  int a, b, c, d, e, f;
-};
-
-// Returning structs that fit into a register.
-Small small_return() { return Small(); }
-// LINUX: define void @_Z12small_returnv(%struct.Small* noalias sret %agg.result)
-// WIN32: define i32 @"\01?small_return@@YA?AUSmall@@XZ"()
-// WIN64: define i32 @"\01?small_return@@YA?AUSmall@@XZ"()
-
-Medium medium_return() { return Medium(); }
-// LINUX: define void @_Z13medium_returnv(%struct.Medium* noalias sret %agg.result)
-// WIN32: define i64 @"\01?medium_return@@YA?AUMedium@@XZ"()
-// WIN64: define i64 @"\01?medium_return@@YA?AUMedium@@XZ"()
-
-// Returning structs that fit into a register but are not POD.
-SmallCpp11NotCpp03Pod small_non_pod_return() { return SmallCpp11NotCpp03Pod(); }
-// LINUX: define void @_Z20small_non_pod_returnv(%struct.SmallCpp11NotCpp03Pod* noalias sret %agg.result)
-// WIN32: define void @"\01?small_non_pod_return@@YA?AUSmallCpp11NotCpp03Pod@@XZ"(%struct.SmallCpp11NotCpp03Pod* noalias sret %agg.result)
-// WIN64: define void @"\01?small_non_pod_return@@YA?AUSmallCpp11NotCpp03Pod@@XZ"(%struct.SmallCpp11NotCpp03Pod* noalias sret %agg.result)
-
-SmallWithCtor small_with_ctor_return() { return SmallWithCtor(); }
-// LINUX: define void @_Z22small_with_ctor_returnv(%struct.SmallWithCtor* noalias sret %agg.result)
-// WIN32: define void @"\01?small_with_ctor_return@@YA?AUSmallWithCtor@@XZ"(%struct.SmallWithCtor* noalias sret %agg.result)
-// WIN64: define void @"\01?small_with_ctor_return@@YA?AUSmallWithCtor@@XZ"(%struct.SmallWithCtor* noalias sret %agg.result)
-
-SmallWithVftable small_with_vftable_return() { return SmallWithVftable(); }
-// LINUX: define void @_Z25small_with_vftable_returnv(%struct.SmallWithVftable* noalias sret %agg.result)
-// WIN32: define void @"\01?small_with_vftable_return@@YA?AUSmallWithVftable@@XZ"(%struct.SmallWithVftable* noalias sret %agg.result)
-// WIN64: define void @"\01?small_with_vftable_return@@YA?AUSmallWithVftable@@XZ"(%struct.SmallWithVftable* noalias sret %agg.result)
-
-MediumWithCopyCtor medium_with_copy_ctor_return() { return MediumWithCopyCtor(); }
-// LINUX: define void @_Z28medium_with_copy_ctor_returnv(%struct.MediumWithCopyCtor* noalias sret %agg.result)
-// WIN32: define void @"\01?medium_with_copy_ctor_return@@YA?AUMediumWithCopyCtor@@XZ"(%struct.MediumWithCopyCtor* noalias sret %agg.result)
-// WIN64: define void @"\01?medium_with_copy_ctor_return@@YA?AUMediumWithCopyCtor@@XZ"(%struct.MediumWithCopyCtor* noalias sret %agg.result)
-
-// Returning a large struct that doesn't fit into a register.
-Big big_return() { return Big(); }
-// LINUX: define void @_Z10big_returnv(%struct.Big* noalias sret %agg.result)
-// WIN32: define void @"\01?big_return@@YA?AUBig@@XZ"(%struct.Big* noalias sret %agg.result)
-// WIN64: define void @"\01?big_return@@YA?AUBig@@XZ"(%struct.Big* noalias sret %agg.result)
-
-
-void small_arg(Small s) {}
-// LINUX: define void @_Z9small_arg5Small(%struct.Small* byval align 4 %s)
-// WIN32: define void @"\01?small_arg@@YAXUSmall@@@Z"(%struct.Small* byval align 4 %s)
-// WIN64: define void @"\01?small_arg@@YAXUSmall@@@Z"(i32 %s.coerce)
-
-void medium_arg(Medium s) {}
-// LINUX: define void @_Z10medium_arg6Medium(%struct.Medium* byval align 4 %s)
-// WIN32: define void @"\01?medium_arg@@YAXUMedium@@@Z"(%struct.Medium* byval align 4 %s)
-// WIN64: define void @"\01?medium_arg@@YAXUMedium@@@Z"(i64 %s.coerce)
-
-void small_arg_with_ctor(SmallWithCtor s) {}
-// LINUX: define void @_Z19small_arg_with_ctor13SmallWithCtor(%struct.SmallWithCtor* byval align 4 %s)
-// WIN32: define void @"\01?small_arg_with_ctor@@YAXUSmallWithCtor@@@Z"(%struct.SmallWithCtor* byval align 4 %s)
-// WIN64: define void @"\01?small_arg_with_ctor@@YAXUSmallWithCtor@@@Z"(i32 %s.coerce)
-
-void small_arg_with_vftable(SmallWithVftable s) {}
-// LINUX: define void @_Z22small_arg_with_vftable16SmallWithVftable(%struct.SmallWithVftable* %s)
-// WIN32: define void @"\01?small_arg_with_vftable@@YAXUSmallWithVftable@@@Z"(%struct.SmallWithVftable* byval align 4 %s)
-// WIN64: define void @"\01?small_arg_with_vftable@@YAXUSmallWithVftable@@@Z"(%struct.SmallWithVftable* byval %s)
-
-void medium_arg_with_copy_ctor(MediumWithCopyCtor s) {}
-// LINUX: define void @_Z25medium_arg_with_copy_ctor18MediumWithCopyCtor(%struct.MediumWithCopyCtor* %s)
-// WIN32: define void @"\01?medium_arg_with_copy_ctor@@YAXUMediumWithCopyCtor@@@Z"(%struct.MediumWithCopyCtor* byval align 4 %s)
-// WIN64: define void @"\01?medium_arg_with_copy_ctor@@YAXUMediumWithCopyCtor@@@Z"(%struct.MediumWithCopyCtor* byval %s)
-
-void big_arg(Big s) {}
-// LINUX: define void @_Z7big_arg3Big(%struct.Big* byval align 4 %s)
-// WIN32: define void @"\01?big_arg@@YAXUBig@@@Z"(%struct.Big* byval align 4 %s)
-// WIN64: define void @"\01?big_arg@@YAXUBig@@@Z"(%struct.Big* %s)
-
-// FIXME: Add WIN64 tests. Currently, even the method manglings are wrong (sic!).
-class Class {
- public:
-  Small thiscall_method_small() { return Small(); }
-  // LINUX: define {{.*}} void @_ZN5Class21thiscall_method_smallEv(%struct.Small* noalias sret %agg.result, %class.Class* %this)
-  // WIN32: define {{.*}} x86_thiscallcc void @"\01?thiscall_method_small at Class@@QAE?AUSmall@@XZ"(%struct.Small* noalias sret %agg.result, %class.Class* %this)
-
-  SmallWithCtor thiscall_method_small_with_ctor() { return SmallWithCtor(); }
-  // LINUX: define {{.*}} void @_ZN5Class31thiscall_method_small_with_ctorEv(%struct.SmallWithCtor* noalias sret %agg.result, %class.Class* %this)
-  // WIN32: define {{.*}} x86_thiscallcc void @"\01?thiscall_method_small_with_ctor at Class@@QAE?AUSmallWithCtor@@XZ"(%struct.SmallWithCtor* noalias sret %agg.result, %class.Class* %this)
-
-  Small __cdecl cdecl_method_small() { return Small(); }
-  // LINUX: define {{.*}} void @_ZN5Class18cdecl_method_smallEv(%struct.Small* noalias sret %agg.result, %class.Class* %this)
-  // FIXME: Interesting, cdecl returns structures differently for instance
-  // methods and global functions. This is not supported by Clang yet...
-  // FIXME: Replace WIN32-NOT with WIN32 when this is fixed.
-  // WIN32-NOT: define {{.*}} void @"\01?cdecl_method_small at Class@@QAA?AUSmall@@XZ"(%struct.Small* noalias sret %agg.result, %class.Class* %this)
-
-  Big __cdecl cdecl_method_big() { return Big(); }
-  // LINUX: define {{.*}} void @_ZN5Class16cdecl_method_bigEv(%struct.Big* noalias sret %agg.result, %class.Class* %this)
-  // WIN32: define {{.*}} void @"\01?cdecl_method_big at Class@@QAA?AUBig@@XZ"(%struct.Big* noalias sret %agg.result, %class.Class* %this)
-
-  void thiscall_method_arg(Empty s) {}
-  // LINUX: define {{.*}} void @_ZN5Class19thiscall_method_argE5Empty(%class.Class* %this)
-  // WIN32: define {{.*}} void @"\01?thiscall_method_arg at Class@@QAEXUEmpty@@@Z"(%class.Class* %this, %struct.Empty* byval align 4 %s)
-
-  void thiscall_method_arg(EmptyWithCtor s) {}
-  // LINUX: define {{.*}} void @_ZN5Class19thiscall_method_argE13EmptyWithCtor(%class.Class* %this)
-  // WIN32: define {{.*}} void @"\01?thiscall_method_arg at Class@@QAEXUEmptyWithCtor@@@Z"(%class.Class* %this, %struct.EmptyWithCtor* byval align 4 %s)
-
-  void thiscall_method_arg(Small s) {}
-  // LINUX: define {{.*}} void @_ZN5Class19thiscall_method_argE5Small(%class.Class* %this, %struct.Small* byval align 4 %s)
-  // WIN32: define {{.*}} void @"\01?thiscall_method_arg at Class@@QAEXUSmall@@@Z"(%class.Class* %this, %struct.Small* byval align 4 %s)
-
-  void thiscall_method_arg(SmallWithCtor s) {}
-  // LINUX: define {{.*}} void @_ZN5Class19thiscall_method_argE13SmallWithCtor(%class.Class* %this, %struct.SmallWithCtor* byval align 4 %s)
-  // WIN32: define {{.*}} void @"\01?thiscall_method_arg at Class@@QAEXUSmallWithCtor@@@Z"(%class.Class* %this, %struct.SmallWithCtor* byval align 4 %s)
-
-  void thiscall_method_arg(Big s) {}
-  // LINUX: define {{.*}} void @_ZN5Class19thiscall_method_argE3Big(%class.Class* %this, %struct.Big* byval align 4 %s)
-  // WIN32: define {{.*}} void @"\01?thiscall_method_arg at Class@@QAEXUBig@@@Z"(%class.Class* %this, %struct.Big* byval align 4 %s)
-};
-
-void use_class() {
-  Class c;
-  c.thiscall_method_small();
-  c.thiscall_method_small_with_ctor();
-
-  c.cdecl_method_small();
-  c.cdecl_method_big();
-
-  c.thiscall_method_arg(Empty());
-  c.thiscall_method_arg(EmptyWithCtor());
-  c.thiscall_method_arg(Small());
-  c.thiscall_method_arg(SmallWithCtor());
-  c.thiscall_method_arg(Big());
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-static-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 | FileCheck %s
-
-struct S {
-  S() {}
-  ~S() {}
-} s;
-
-// CHECK: define internal void [[INIT_s:@.*global_var.*]] [[NUW:#[0-9]+]]
-// CHECK: %{{[.0-9A-Z_a-z]+}} = call x86_thiscallcc %struct.S* @"\01??0S@@QAE at XZ"
-// CHECK: call i32 @atexit(void ()* @"__dtor_\01?s@@3US@@A")
-// CHECK: ret void
-
-// CHECK: define internal void @"__dtor_\01?s@@3US@@A"() [[NUW]] {
-// CHECK: call x86_thiscallcc void @"\01??1S@@QAE at XZ"
-// CHECK: ret void
-
-// Force WeakODRLinkage by using templates
-class A {
- public:
-  A() {}
-  ~A() {}
-};
-
-template<typename T>
-class B {
- public:
-  static A foo;
-};
-
-template<typename T> A B<T>::foo;
-
-void force_usage() {
-  (void)B<int>::foo;  // (void) - force usage
-}
-
-// CHECK: define internal void [[INIT_foo:@.*global_var.*]] [[NUW]]
-// CHECK: %{{[.0-9A-Z_a-z]+}} = call x86_thiscallcc %class.A* @"\01??0A@@QAE at XZ"
-// CHECK: call i32 @atexit(void ()* [[FOO_DTOR:@"__dtor_.*foo at .*]])
-// CHECK: ret void
-
-// CHECK: define linkonce_odr x86_thiscallcc %class.A* @"\01??0A@@QAE at XZ"
-
-// CHECK: define linkonce_odr x86_thiscallcc void @"\01??1A@@QAE at XZ"
-
-// CHECK: define internal void [[FOO_DTOR]]
-// CHECK: call x86_thiscallcc void @"\01??1A@@QAE at XZ"{{.*}}foo
-// CHECK: ret void
-
-// CHECK: define internal void @_GLOBAL__I_a() [[NUW]] {
-// CHECK: call void [[INIT_s]]
-// CHECK: call void [[INIT_foo]]
-// CHECK: ret void
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-structors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-structors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-structors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,215 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -cxx-abi microsoft -triple=i386-pc-win32 -fno-rtti > %t 2>&1
-// RUN: FileCheck %s < %t
-// Using a different check prefix as the inline destructors might be placed
-// anywhere in the output.
-// RUN: FileCheck --check-prefix=DTORS %s < %t
-
-namespace basic {
-
-class A {
- public:
-  A() { }
-  ~A() { }
-};
-
-void no_constructor_destructor_infinite_recursion() {
-  A a;
-
-// CHECK:      define linkonce_odr x86_thiscallcc %"class.basic::A"* @"\01??0A at basic@@QAE at XZ"(%"class.basic::A"* %this)
-// CHECK:        [[THIS_ADDR:%[.0-9A-Z_a-z]+]] = alloca %"class.basic::A"*, align 4
-// CHECK-NEXT:   store %"class.basic::A"* %this, %"class.basic::A"** [[THIS_ADDR]], align 4
-// CHECK-NEXT:   [[T1:%[.0-9A-Z_a-z]+]] = load %"class.basic::A"** [[THIS_ADDR]]
-// CHECK-NEXT:   ret %"class.basic::A"* [[T1]]
-// CHECK-NEXT: }
-
-// Make sure that the destructor doesn't call itself:
-// CHECK: define {{.*}} @"\01??1A at basic@@QAE at XZ"
-// CHECK-NOT: call void @"\01??1A at basic@@QAE at XZ"
-// CHECK: ret
-}
-
-struct B {
-  B();
-};
-
-// Tests that we can define constructors outside the class (PR12784).
-B::B() {
-  // CHECK: define x86_thiscallcc %"struct.basic::B"* @"\01??0B at basic@@QAE at XZ"(%"struct.basic::B"* %this)
-  // CHECK: ret
-}
-
-struct C {
-  virtual ~C() {
-// Complete destructor first:
-// DTORS: define {{.*}} x86_thiscallcc void @"\01??1C at basic@@UAE at XZ"(%"struct.basic::C"* %this)
-
-// Then, the scalar deleting destructor (used in the vtable):
-// FIXME: add a test that verifies that the out-of-line scalar deleting
-// destructor is linkonce_odr too.
-// DTORS:      define linkonce_odr x86_thiscallcc void @"\01??_GC at basic@@UAEPAXI at Z"(%"struct.basic::C"* %this, i1 zeroext %should_call_delete)
-// DTORS:        %[[FROMBOOL:[0-9a-z]+]] = zext i1 %should_call_delete to i8
-// DTORS-NEXT:   store i8 %[[FROMBOOL]], i8* %[[SHOULD_DELETE_VAR:[0-9a-z._]+]], align 1
-// DTORS:        %[[SHOULD_DELETE_VALUE:[0-9a-z._]+]] = load i8* %[[SHOULD_DELETE_VAR]]
-// DTORS:        call x86_thiscallcc void @"\01??1C at basic@@UAE at XZ"(%"struct.basic::C"* %[[THIS:[0-9a-z]+]])
-// DTORS-NEXT:   %[[CONDITION:[0-9]+]] = icmp eq i8 %[[SHOULD_DELETE_VALUE]], 0
-// DTORS-NEXT:   br i1 %[[CONDITION]], label %[[CONTINUE_LABEL:[0-9a-z._]+]], label %[[CALL_DELETE_LABEL:[0-9a-z._]+]]
-//
-// DTORS:      [[CALL_DELETE_LABEL]]
-// DTORS-NEXT:   %[[THIS_AS_VOID:[0-9a-z]+]] = bitcast %"struct.basic::C"* %[[THIS]] to i8*
-// DTORS-NEXT:   call void @"\01??3 at YAXPAX@Z"(i8* %[[THIS_AS_VOID]]) [[NUW:#[0-9]+]]
-// DTORS-NEXT:   br label %[[CONTINUE_LABEL]]
-//
-// DTORS:      [[CONTINUE_LABEL]]
-// DTORS-NEXT:   ret void
-  }
-  virtual void foo();
-};
-
-// Emits the vftable in the output.
-void C::foo() {}
-
-void check_vftable_offset() {
-  C c;
-// The vftable pointer should point at the beginning of the vftable.
-// CHECK: [[THIS_PTR:%[0-9]+]] = bitcast %"struct.basic::C"* {{.*}} to i8***
-// CHECK: store i8** getelementptr inbounds ([2 x i8*]* @"\01??_7C at basic@@6B@", i64 0, i64 0), i8*** [[THIS_PTR]]
-}
-
-void call_complete_dtor(C *obj_ptr) {
-// CHECK: define void @"\01?call_complete_dtor at basic@@YAXPAUC at 1@@Z"(%"struct.basic::C"* %obj_ptr)
-  obj_ptr->~C();
-// CHECK: %[[OBJ_PTR_VALUE:.*]] = load %"struct.basic::C"** %{{.*}}, align 4
-// CHECK-NEXT: %[[PVTABLE:.*]] = bitcast %"struct.basic::C"* %[[OBJ_PTR_VALUE]] to void (%"struct.basic::C"*, i1)***
-// CHECK-NEXT: %[[VTABLE:.*]] = load void (%"struct.basic::C"*, i1)*** %[[PVTABLE]]
-// CHECK-NEXT: %[[PVDTOR:.*]] = getelementptr inbounds void (%"struct.basic::C"*, i1)** %[[VTABLE]], i64 0
-// CHECK-NEXT: %[[VDTOR:.*]] = load void (%"struct.basic::C"*, i1)** %[[PVDTOR]]
-// CHECK-NEXT: call x86_thiscallcc void %[[VDTOR]](%"struct.basic::C"* %[[OBJ_PTR_VALUE]], i1 zeroext false)
-// CHECK-NEXT: ret void
-}
-
-void call_deleting_dtor(C *obj_ptr) {
-// CHECK: define void @"\01?call_deleting_dtor at basic@@YAXPAUC at 1@@Z"(%"struct.basic::C"* %obj_ptr)
-  delete obj_ptr;
-// CHECK:      %[[OBJ_PTR_VALUE:.*]] = load %"struct.basic::C"** %{{.*}}, align 4
-// CHECK:      br i1 {{.*}}, label %[[DELETE_NULL:.*]], label %[[DELETE_NOTNULL:.*]]
-
-// CHECK:      [[DELETE_NOTNULL]]
-// CHECK-NEXT:   %[[PVTABLE:.*]] = bitcast %"struct.basic::C"* %[[OBJ_PTR_VALUE]] to void (%"struct.basic::C"*, i1)***
-// CHECK-NEXT:   %[[VTABLE:.*]] = load void (%"struct.basic::C"*, i1)*** %[[PVTABLE]]
-// CHECK-NEXT:   %[[PVDTOR:.*]] = getelementptr inbounds void (%"struct.basic::C"*, i1)** %[[VTABLE]], i64 0
-// CHECK-NEXT:   %[[VDTOR:.*]] = load void (%"struct.basic::C"*, i1)** %[[PVDTOR]]
-// CHECK-NEXT:   call x86_thiscallcc void %[[VDTOR]](%"struct.basic::C"* %[[OBJ_PTR_VALUE]], i1 zeroext true)
-// CHECK:      ret void
-}
-
-struct D {
-  static int foo();
-
-  D() {
-    static int ctor_static = foo();
-    // CHECK that the static in the ctor gets mangled correctly:
-    // CHECK: @"\01?ctor_static@?1???0D at basic@@QAE at XZ@4HA"
-  }
-  ~D() {
-    static int dtor_static = foo();
-    // CHECK that the static in the dtor gets mangled correctly:
-    // CHECK: @"\01?dtor_static@?1???1D at basic@@QAE at XZ@4HA"
-  }
-};
-
-void use_D() { D c; }
-
-// DTORS: attributes [[NUW]] = { nounwind{{.*}} }
-
-} // end namespace basic
-
-
-namespace constructors {
-
-struct A {
-  A() {}
-};
-
-struct B : A {
-  B();
-  ~B();
-};
-
-B::B() {
-  // CHECK: define x86_thiscallcc %"struct.constructors::B"* @"\01??0B at constructors@@QAE at XZ"(%"struct.constructors::B"* %this)
-  // CHECK: call x86_thiscallcc %"struct.constructors::A"* @"\01??0A at constructors@@QAE at XZ"(%"struct.constructors::A"* %{{.*}})
-  // CHECK: ret
-}
-
-struct C : virtual A {
-  C();
-};
-
-C::C() {
-  // CHECK: define x86_thiscallcc %"struct.constructors::C"* @"\01??0C at constructors@@QAE at XZ"(%"struct.constructors::C"* %this, i32 %is_most_derived)
-  // TODO: make sure this works in the Release build too;
-  // CHECK: store i32 %is_most_derived, i32* %[[IS_MOST_DERIVED_VAR:.*]], align 4
-  // CHECK: %[[IS_MOST_DERIVED_VAL:.*]] = load i32* %[[IS_MOST_DERIVED_VAR]]
-  // CHECK: %[[SHOULD_CALL_VBASE_CTORS:.*]] = icmp ne i32 %[[IS_MOST_DERIVED_VAL]], 0
-  // CHECK: br i1 %[[SHOULD_CALL_VBASE_CTORS]], label %[[INIT_VBASES:.*]], label %[[SKIP_VBASES:.*]]
-  //
-  // CHECK: [[INIT_VBASES]]
-  // CHECK-NEXT: bitcast %"struct.constructors::C"* %{{.*}} to %"struct.constructors::A"*
-  // CHECK-NEXT: call x86_thiscallcc %"struct.constructors::A"* @"\01??0A at constructors@@QAE at XZ"(%"struct.constructors::A"* %{{.*}})
-  // CHECK-NEXT: br label %[[SKIP_VBASES]]
-  //
-  // CHECK: [[SKIP_VBASES]]
-  // CHECK: @"\01??_7C at constructors@@6B@"
-  // CHECK: ret
-}
-
-void create_C() {
-  C c;
-  // CHECK: define void @"\01?create_C at constructors@@YAXXZ"()
-  // CHECK: call x86_thiscallcc %"struct.constructors::C"* @"\01??0C at constructors@@QAE at XZ"(%"struct.constructors::C"* %c, i32 1)
-  // CHECK: ret
-}
-
-struct D : C {
-  D();
-};
-
-D::D() {
-  // CHECK: define x86_thiscallcc %"struct.constructors::D"* @"\01??0D at constructors@@QAE at XZ"(%"struct.constructors::D"* %this, i32 %is_most_derived) unnamed_addr
-  // CHECK: store i32 %is_most_derived, i32* %[[IS_MOST_DERIVED_VAR:.*]], align 4
-  // CHECK: %[[IS_MOST_DERIVED_VAL:.*]] = load i32* %[[IS_MOST_DERIVED_VAR]]
-  // CHECK: %[[SHOULD_CALL_VBASE_CTORS:.*]] = icmp ne i32 %[[IS_MOST_DERIVED_VAL]], 0
-  // CHECK: br i1 %[[SHOULD_CALL_VBASE_CTORS]], label %[[INIT_VBASES:.*]], label %[[SKIP_VBASES:.*]]
-  //
-  // CHECK: [[INIT_VBASES]]
-  // CHECK-NEXT: bitcast %"struct.constructors::D"* %{{.*}} to %"struct.constructors::A"*
-  // CHECK-NEXT: call x86_thiscallcc %"struct.constructors::A"* @"\01??0A at constructors@@QAE at XZ"(%"struct.constructors::A"* %{{.*}})
-  // CHECK-NEXT: br label %[[SKIP_VBASES]]
-  //
-  // CHECK: [[SKIP_VBASES]]
-  // CHECK: call x86_thiscallcc %"struct.constructors::C"* @"\01??0C at constructors@@QAE at XZ"(%"struct.constructors::C"* %{{.*}}, i32 0)
-  // CHECK: ret
-}
-
-struct E : virtual C {
-  E();
-};
-
-E::E() {
-  // CHECK: define x86_thiscallcc %"struct.constructors::E"* @"\01??0E at constructors@@QAE at XZ"(%"struct.constructors::E"* %this, i32 %is_most_derived) unnamed_addr
-  // CHECK: store i32 %is_most_derived, i32* %[[IS_MOST_DERIVED_VAR:.*]], align 4
-  // CHECK: %[[IS_MOST_DERIVED_VAL:.*]] = load i32* %[[IS_MOST_DERIVED_VAR]]
-  // CHECK: %[[SHOULD_CALL_VBASE_CTORS:.*]] = icmp ne i32 %[[IS_MOST_DERIVED_VAL]], 0
-  // CHECK: br i1 %[[SHOULD_CALL_VBASE_CTORS]], label %[[INIT_VBASES:.*]], label %[[SKIP_VBASES:.*]]
-  //
-  // CHECK: [[INIT_VBASES]]
-  // CHECK-NEXT: bitcast %"struct.constructors::E"* %{{.*}} to %"struct.constructors::A"*
-  // CHECK-NEXT: call x86_thiscallcc %"struct.constructors::A"* @"\01??0A at constructors@@QAE at XZ"(%"struct.constructors::A"* %{{.*}})
-  // CHECK: call x86_thiscallcc %"struct.constructors::C"* @"\01??0C at constructors@@QAE at XZ"(%"struct.constructors::C"* %{{.*}}, i32 0)
-  // CHECK-NEXT: br label %[[SKIP_VBASES]]
-  //
-  // CHECK: [[SKIP_VBASES]]
-  // CHECK: ret
-}
-
-} // end namespace constructors

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-abi-vtables-single-inheritance.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,113 +0,0 @@
-// RUN: %clang_cc1 %s -fno-rtti -cxx-abi microsoft -triple=i386-pc-win32 -emit-llvm -fdump-vtable-layouts -o - > %t 2>&1
-// RUN: FileCheck --check-prefix=EMITS-VTABLE %s < %t
-// RUN: FileCheck --check-prefix=CHECK-A %s < %t
-// RUN: FileCheck --check-prefix=CHECK-B %s < %t
-// RUN: FileCheck --check-prefix=CHECK-C %s < %t
-// RUN: FileCheck --check-prefix=CHECK-D %s < %t
-// RUN: FileCheck --check-prefix=CHECK-E %s < %t
-// RUN: FileCheck --check-prefix=CHECK-F %s < %t
-// RUN: FileCheck --check-prefix=CHECK-G %s < %t
-
-struct A {
-  // CHECK-A: Vtable for 'A' (3 entries)
-  // CHECK-A-NEXT: 0 | void A::f()
-  // CHECK-A-NEXT: 1 | void A::g()
-  // CHECK-A-NEXT: 2 | void A::h()
-  // EMITS-VTABLE: @"\01??_7A@@6B@" = unnamed_addr constant [3 x i8*]
-  virtual void f();
-  virtual void g();
-  virtual void h();
-  int ia;
-};
-void A::f() {}
-
-struct B : A {
-  // CHECK-B: Vtable for 'B' (5 entries)
-  // CHECK-B-NEXT: 0 | void B::f()
-  // CHECK-B-NEXT: 1 | void A::g()
-  // CHECK-B-NEXT: 2 | void A::h()
-  // CHECK-B-NEXT: 3 | void B::i()
-  // CHECK-B-NEXT: 4 | void B::j()
-  // EMITS-VTABLE: @"\01??_7B@@6B@" = unnamed_addr constant [5 x i8*]
-  virtual void f();  // overrides A::f()
-  virtual void i();
-  virtual void j();
-};
-void B::f() {}
-
-struct C {
-  // CHECK-C: Vtable for 'C' (2 entries)
-  // CHECK-C-NEXT: 0 | C::~C() [scalar deleting]
-  // CHECK-C-NEXT: 1 | void C::f()
-  // CHECK-C: VTable indices for 'C' (2 entries).
-  // CHECK-C-NEXT: 0 | C::~C() [scalar deleting]
-  // CHECK-C-NEXT: 1 | void C::f()
-  // Never used, so doesn't emit a vtable.
-  virtual ~C();
-
-  virtual void f();
-};
-void C::f() {}
-
-struct D {
-  // CHECK-D: Vtable for 'D' (2 entries)
-  // CHECK-D-NEXT: 0 | void D::f()
-  // CHECK-D-NEXT: 1 | D::~D() [scalar deleting]
-  // EMITS-VTABLE: @"\01??_7D@@6B@" = unnamed_addr constant [2 x i8*]
-  virtual void f();
-
-  virtual ~D();
-};
-void D::f() {}
-
-struct E : A {
-  // CHECK-E: Vtable for 'E' (5 entries)
-  // CHECK-E-NEXT: 0 | void A::f()
-  // CHECK-E-NEXT: 1 | void A::g()
-  // CHECK-E-NEXT: 2 | void A::h()
-  // CHECK-E-NEXT: 3 | E::~E() [scalar deleting]
-  // CHECK-E-NEXT: 4 | void E::i()
-  // CHECK-E: VTable indices for 'E' (2 entries).
-  // CHECK-E-NEXT: 3 | E::~E() [scalar deleting]
-  // CHECK-E-NEXT: 4 | void E::i()
-
-  // Never used, so doesn't emit a vtable.
-  virtual ~E();
-  virtual void i();
-};
-void E::i() {}
-
-struct F : A {
-  // CHECK-F: Vtable for 'F' (5 entries)
-  // CHECK-F-NEXT: 0 | void A::f()
-  // CHECK-F-NEXT: 1 | void A::g()
-  // CHECK-F-NEXT: 2 | void A::h()
-  // CHECK-F-NEXT: 3 | void F::i()
-  // CHECK-F-NEXT: 4 | F::~F() [scalar deleting]
-  // CHECK-F: VTable indices for 'F' (2 entries).
-  // CHECK-F-NEXT: 3 | void F::i()
-  // CHECK-F-NEXT: 4 | F::~F() [scalar deleting]
-  // EMITS-VTABLE: @"\01??_7F@@6B@" = unnamed_addr constant [5 x i8*]
-  virtual void i();
-  virtual ~F();
-};
-void F::i() {}
-
-struct G : E {
-  // CHECK-G: Vtable for 'G' (6 entries)
-  // CHECK-G-NEXT: 0 | void G::f()
-  // CHECK-G-NEXT: 1 | void A::g()
-  // CHECK-G-NEXT: 2 | void A::h()
-  // CHECK-G-NEXT: 3 | G::~G() [scalar deleting]
-  // CHECK-G-NEXT: 4 | void E::i()
-  // CHECK-G-NEXT: 5 | void G::j()
-  // CHECK-G: VTable indices for 'G' (3 entries).
-  // CHECK-G-NEXT: 0 | void G::f()
-  // CHECK-G-NEXT: 3 | G::~G() [scalar deleting]
-  // CHECK-G-NEXT: 5 | void G::j()
-  // Never used, so doesn't emit a vtable.
-  virtual void f();  // overrides A::f()
-  virtual ~G();
-  virtual void j();
-};
-void G::j() {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-interface.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-interface.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-interface.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fms-extensions -Wno-microsoft -triple=i386-pc-win32 -emit-llvm %s -o - | FileCheck %s
-
-__interface I {
-  int test() {
-    return 1;
-  }
-};
-
-struct S : I {
-  virtual int test() override {
-    return I::test();
-  }
-};
-
-int fn() {
-  S s;
-  return s.test();
-}
-
-// CHECK: @_ZTV1S = linkonce_odr unnamed_addr constant [3 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTI1S to i8*), i8* bitcast (i32 (%struct.S*)* @_ZN1S4testEv to i8*)]
-
-// CHECK: define i32 @_Z2fnv()
-// CHECK:   call void @_ZN1SC1Ev(%struct.S* %s)
-// CHECK:   %{{[.0-9A-Z_a-z]+}} = call i32 @_ZN1S4testEv(%struct.S* %s)
-
-// CHECK: define linkonce_odr void @_ZN1SC1Ev(%struct.S* %this)
-// CHECK:   call void @_ZN1SC2Ev(%struct.S* %{{[.0-9A-Z_a-z]+}})
-
-// CHECK: define linkonce_odr i32 @_ZN1S4testEv(%struct.S* %this)
-// CHECK:   %{{[.0-9A-Z_a-z]+}} = call i32 @_ZN1I4testEv(%__interface.I* %{{[.0-9A-Z_a-z]+}})
-
-// CHECK: define linkonce_odr i32 @_ZN1I4testEv(%__interface.I* %this)
-// CHECK:   ret i32 1
-
-// CHECK: define linkonce_odr void @_ZN1SC2Ev(%struct.S* %this)
-// CHECK:   call void @_ZN1IC2Ev(%__interface.I* %{{[.0-9A-Z_a-z]+}})
-// CHECK:   store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1S, i64 0, i64 2), i8*** %{{[.0-9A-Z_a-z]+}}
-
-// CHECK: define linkonce_odr void @_ZN1IC2Ev(%__interface.I* %this)
-// CHECK:   store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1I, i64 0, i64 2), i8*** %{{[.0-9A-Z_a-z]+}}
-
-// CHECK-NOT: define linkonce_odr %__interface.I* @_ZN1IaSERKS_(%__interface.I* %this, %__interface.I*)
-// CHECK-NOT: define linkonce_odr %__interface.I* @_ZN1IaSEOS_(%__interface.I* %this, %__interface.I*)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-uuidof-unsupported-target.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-uuidof-unsupported-target.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-uuidof-unsupported-target.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-macosx10.8.0 -fms-extensions -verify
-
-typedef struct _GUID
-{
-    unsigned long  Data1;
-    unsigned short Data2;
-    unsigned short Data3;
-    unsigned char  Data4[8];
-} GUID;
-
-struct __declspec(uuid("87654321-4321-4321-4321-ba0987654321")) S { };
-
-GUID g = __uuidof(S);  // expected-error {{__uuidof codegen is not supported on this architecture}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-uuidof.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-uuidof.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/microsoft-uuidof.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-pc-win32 -fms-extensions | FileCheck %s
-
-typedef struct _GUID
-{
-    unsigned long  Data1;
-    unsigned short Data2;
-    unsigned short Data3;
-    unsigned char  Data4[8];
-} GUID;
-
-struct __declspec(uuid("12345678-1234-1234-1234-1234567890ab")) S1 { } s1;
-struct __declspec(uuid("87654321-4321-4321-4321-ba0987654321")) S2 { };
-
-// This gets initialized in a static initializer.
-// CHECK: @g = global %struct._GUID zeroinitializer, align 4
-GUID g = __uuidof(S1);
-
-// First global use of __uuidof(S1) forces the creation of the global.
-// CHECK: @__uuid_12345678-1234-1234-1234-1234567890ab = private unnamed_addr constant %struct._GUID { i32 305419896, i16 4660, i16 4660, [8 x i8] c"\124\124Vx\90\AB" }
-// CHECK: @gr = constant %struct._GUID* @__uuid_12345678-1234-1234-1234-1234567890ab, align 4
-const GUID& gr = __uuidof(S1);
-
-// CHECK: @gp = global %struct._GUID* @__uuid_12345678-1234-1234-1234-1234567890ab, align 4
-const GUID* gp = &__uuidof(S1);
-
-// Special case: _uuidof(0)
-// CHECK: @zeroiid = constant %struct._GUID* @__uuid_00000000-0000-0000-0000-000000000000, align 4
-const GUID& zeroiid = __uuidof(0);
-
-// __uuidof(S2) hasn't been used globally yet, so it's emitted when it's used
-// in a function and is emitted at the end of the globals section.
-// CHECK: @__uuid_87654321-4321-4321-4321-ba0987654321 = private unnamed_addr constant %struct._GUID { i32 -2023406815, i16 17185, i16 17185, [8 x i8] c"C!\BA\09\87eC!" }
-
-// The static initializer for g.
-// CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* bitcast (%struct._GUID* @g to i8*), i8* bitcast (%struct._GUID* @__uuid_12345678-1234-1234-1234-1234567890ab to i8*), i32 16, i32 4, i1 false)
-
-void fun() {
-  // CHECK: %s1_1 = alloca %struct._GUID, align 4
-  // CHECK: %s1_2 = alloca %struct._GUID, align 4
-  // CHECK: %s1_3 = alloca %struct._GUID, align 4
-
-  // CHECK: [[U1:%.+]] = bitcast %struct._GUID* %s1_1 to i8*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[U1]], i8* bitcast (%struct._GUID* @__uuid_12345678-1234-1234-1234-1234567890ab to i8*), i32 16, i32 4, i1 false)
-  GUID s1_1 = __uuidof(S1);
-
-  // CHECK: [[U2:%.+]] = bitcast %struct._GUID* %s1_2 to i8*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[U2]], i8* bitcast (%struct._GUID* @__uuid_12345678-1234-1234-1234-1234567890ab to i8*), i32 16, i32 4, i1 false)
-  GUID s1_2 = __uuidof(S1);
-
-  // CHECK: [[U3:%.+]] = bitcast %struct._GUID* %s1_3 to i8*
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[U3]], i8* bitcast (%struct._GUID* @__uuid_12345678-1234-1234-1234-1234567890ab to i8*), i32 16, i32 4, i1 false)
-  GUID s1_3 = __uuidof(s1);
-}
-
-void gun() {
-  // CHECK: %s2_1 = alloca %struct._GUID, align 4
-  // CHECK: %s2_2 = alloca %struct._GUID, align 4
-  // CHECK: %r = alloca %struct._GUID*, align 4
-  // CHECK: %p = alloca %struct._GUID*, align 4
-  // CHECK: %zeroiid = alloca %struct._GUID*, align 4
-  GUID s2_1 = __uuidof(S2);
-  GUID s2_2 = __uuidof(S2);
-
-  // CHECK: store %struct._GUID* @__uuid_87654321-4321-4321-4321-ba0987654321, %struct._GUID** %r, align 4
-  const GUID& r = __uuidof(S2);
-  // CHECK: store %struct._GUID* @__uuid_87654321-4321-4321-4321-ba0987654321, %struct._GUID** %p, align 4
-  const GUID* p = &__uuidof(S2);
-
-  // Special case _uuidof(0), local scope version.
-  // CHECK: store %struct._GUID* @__uuid_00000000-0000-0000-0000-000000000000, %struct._GUID** %zeroiid, align 4
-  const GUID& zeroiid = __uuidof(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ms_wide_predefined_expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ms_wide_predefined_expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ms_wide_predefined_expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -fms-extensions -triple i686-pc-win32 -emit-llvm -o - | FileCheck %s
-
-// CHECK: @L__FUNCTION__._Z4funcv = private constant [5 x i16] [i16 102, i16 117, i16 110, i16 99, i16 0], align 2
-
-void wprint(const wchar_t*);
-
-#define __STR2WSTR(str) L##str
-#define _STR2WSTR(str) __STR2WSTR(str)
-#define STR2WSTR(str) _STR2WSTR(str)
-
-void func() {
-  wprint(STR2WSTR(__FUNCTION__));
-}
-
-int main() {
-  func();
-
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/multi-dim-operator-new.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/multi-dim-operator-new.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/multi-dim-operator-new.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-unknown-unknown -emit-llvm -o - | FileCheck %s
-// PR6641
-
-extern "C" int printf(const char *, ...);
-
-struct Foo {
- Foo() : iFoo (2) {
-  printf("%p\n", this);
- }
- int iFoo;
-};
-
-
-typedef Foo (*T)[3][4];
-
-T bar() {
- return new Foo[2][3][4];
-}
-
-T bug(int i) {
-  return new Foo[i][3][4];
-}
-
-void pr(T a) {
-  for (int i = 0; i < 3; i++)
-   for (int j = 0; j < 4; j++)
-     printf("%p\n", a[i][j]);
-}
-
-Foo *test() {
-  return new Foo[5];
-}
-
-int main() {
- T f =  bar();
- pr(f);
- f = bug(3);
- pr(f);
-
- Foo * g = test();
- for (int i = 0; i < 5; i++)
- printf("%d\n", g[i].iFoo);
- return 0;
-}
-
-// CHECK: call noalias i8* @_Znam
-// CHECK: call noalias i8* @_Znam
-// CHECK: call noalias i8* @_Znam
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/namespace-aliases.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/namespace-aliases.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/namespace-aliases.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-namespace A { }
-namespace B = A;
-
-namespace b {}
-
-void foo() {
-    namespace a = b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nested-base-member-access.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nested-base-member-access.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nested-base-member-access.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-extern "C" int printf(...);
-
-struct M {
-  M(int i){ iM = i; }
-  int iM;
-  void MPR() { printf("iM = %d\n", iM); }
-
-};
-
-struct Q {
-  Q(int i){ iQ = i; }
-  int iQ;
-  void QPR() { printf("iQ = %d\n", iQ); }
-};
-
-struct IQ {
-  IQ(int i) { iIQ = i; }
-  void IQPR() { printf("iIQ = %d\n", iIQ); }
-  int iIQ;
-};
-
-struct L : IQ {
-  L(int i) : IQ(i+100) { iL = i; }
-  int iL;
-};
-
-struct P : Q, L  {
-  P(int i) : Q(i+100), L(i+200) { iP = i; }
-  int iP;
-  void PPR() { printf("iP = %d\n", iP); }
-};
-
-
-struct N : M,P {
-  N() : M(100), P(200) {}
-  void PR() {
-    this->MPR(); this->PPR(); this->QPR(); 
-    IQPR();
-    printf("iM = %d\n", iM); 
-    printf("iP = %d\n", iP);
-    printf("iQ = %d\n", iQ);
-    printf("iL = %d\n", iL);
-    printf("iIQ = %d\n", iIQ);
-  }
-};
-
-int main() {
-  N n1;
-  n1.PR();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-array-init-exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-array-init-exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-array-init-exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple i386-unknown-unknown -fexceptions -fcxx-exceptions %s -emit-llvm -o - | FileCheck %s
-// REQUIRES: asserts
-
-struct Throws {
-  Throws(int);
-  Throws();
-  ~Throws();
-};
-
-// CHECK: define void @_Z7cleanupi
-void cleanup(int n) {
-  // CHECK: invoke void @_ZN6ThrowsC1Ei
-  // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD:[^ ]+]]
-  // CHECK: invoke void @_ZN6ThrowsC1Ei
-  // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]]
-  // CHECK: invoke void @_ZN6ThrowsC1Ei
-  // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]]
-  // CHECK: invoke void @_ZN6ThrowsC1Ev
-  // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD]]
-  new Throws[n] { 1, 2, 3 };
-  // CHECK: [[LPAD]]:
-  // CHECK-NEXT: landingpad
-  // CHECK: call void @_ZN6ThrowsD1Ev
-  // CHECK: call void @_ZdaPv
-}
-
-
-// CHECK: define void @_Z7cleanupv
-void cleanup() {
-  // CHECK: invoke void @_ZN6ThrowsC1Ei
-  // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2:[^ ]+]]
-  // CHECK: invoke void @_ZN6ThrowsC1Ei
-  // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2]]
-  // CHECK: invoke void @_ZN6ThrowsC1Ei
-  // CHECK-NEXT: to label %{{[^ ]+}} unwind label %[[LPAD2]]
-  new Throws[3] { 1, 2, 3 };
-  // CHECK: [[LPAD2]]:
-  // CHECK-NEXT: landingpad
-  // CHECK: call void @_ZN6ThrowsD1Ev
-  // CHECK: call void @_ZdaPv
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-array-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-array-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-array-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: define void @_Z2fni
-void fn(int n) {
-  // CHECK: icmp ult i{{32|64}} %{{[^ ]+}}, 3
-  // CHECK: store i32 1
-  // CHECK: store i32 2
-  // CHECK: store i32 3
-  // CHECK: icmp eq i32*
-  // CHECK-NEXT: br i1
-  new int[n] { 1, 2, 3 };
-}
-
-// CHECK: define void @_Z15const_underflowv
-void const_underflow() {
-  // CHECK-NOT: icmp ult i{{32|64}} %{{[^ ]+}}, 3
-  // CHECK: call noalias i8* @_Zna{{.}}(i{{32|64}} -1)
-  new int[2] { 1, 2, 3 };
-}
-
-// CHECK: define void @_Z11const_exactv
-void const_exact() {
-  // CHECK-NOT: icmp ult i{{32|64}} %{{[^ ]+}}, 3
-  // CHECK-NOT: icmp eq i32*
-  new int[3] { 1, 2, 3 };
-}
-
-// CHECK: define void @_Z16const_sufficientv
-void const_sufficient() {
-  // CHECK-NOT: icmp ult i{{32|64}} %{{[^ ]+}}, 3
-  new int[4] { 1, 2, 3 };
-  // CHECK: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-operator-phi.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-operator-phi.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-operator-phi.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-// expected-no-diagnostics
-// PR5454
-#include <stddef.h>
-
-struct X {static void * operator new(size_t size) throw(); X(int); };
-int a(), b();
-void b(int x)
-{
-  new X(x ? a() : b());
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-overflow.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-overflow.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-overflow.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,209 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-// rdar://problem/9246208
-
-// Basic test.
-namespace test0 {
-  struct A {
-    A();
-    int x;
-  };
-
-  typedef A elt;
-
-  // CHECK:    define [[A:%.*]]* @_ZN5test04testEs(i16 signext
-  // CHECK:      [[N:%.*]] = sext i16 {{%.*}} to i32
-  // CHECK-NEXT: [[T0:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[N]], i32 4)
-  // CHECK-NEXT: [[T1:%.*]] = extractvalue { i32, i1 } [[T0]], 1
-  // CHECK-NEXT: [[T2:%.*]] = extractvalue { i32, i1 } [[T0]], 0
-  // CHECK-NEXT: [[T3:%.*]] = select i1 [[T1]], i32 -1, i32 [[T2]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T3]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[N]]
-  elt *test(short s) {
-    return new elt[s];
-  }
-}
-
-// test0 with a nested array.
-namespace test1 {
-  struct A {
-    A();
-    int x;
-  };
-
-  typedef A elt[100];
-
-  // CHECK:    define [100 x [[A:%.*]]]* @_ZN5test14testEs(i16 signext
-  // CHECK:      [[N:%.*]] = sext i16 {{%.*}} to i32
-  // CHECK-NEXT: [[T0:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[N]], i32 400)
-  // CHECK-NEXT: [[T1:%.*]] = extractvalue { i32, i1 } [[T0]], 1
-  // CHECK-NEXT: [[T2:%.*]] = extractvalue { i32, i1 } [[T0]], 0
-  // CHECK-NEXT: [[T3:%.*]] = mul i32 [[N]], 100
-  // CHECK-NEXT: [[T4:%.*]] = select i1 [[T1]], i32 -1, i32 [[T2]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T4]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[T3]]
-  elt *test(short s) {
-    return new elt[s];
-  }
-}
-
-// test1 with an array cookie.
-namespace test2 {
-  struct A {
-    A();
-    ~A();
-    int x;
-  };
-
-  typedef A elt[100];
-
-  // CHECK:    define [100 x [[A:%.*]]]* @_ZN5test24testEs(i16 signext
-  // CHECK:      [[N:%.*]] = sext i16 {{%.*}} to i32
-  // CHECK-NEXT: [[T0:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[N]], i32 400)
-  // CHECK-NEXT: [[T1:%.*]] = extractvalue { i32, i1 } [[T0]], 1
-  // CHECK-NEXT: [[T2:%.*]] = extractvalue { i32, i1 } [[T0]], 0
-  // CHECK-NEXT: [[T3:%.*]] = mul i32 [[N]], 100
-  // CHECK-NEXT: [[T4:%.*]] = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 [[T2]], i32 4)
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i32, i1 } [[T4]], 1
-  // CHECK-NEXT: [[T6:%.*]] = or i1 [[T1]], [[T5]]
-  // CHECK-NEXT: [[T7:%.*]] = extractvalue { i32, i1 } [[T4]], 0
-  // CHECK-NEXT: [[T8:%.*]] = select i1 [[T6]], i32 -1, i32 [[T7]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T8]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[T3]]
-  elt *test(short s) {
-    return new elt[s];
-  }
-}
-
-// test0 with a 1-byte element.
-namespace test4 {
-  struct A {
-    A();
-  };
-
-  typedef A elt;
-
-  // CHECK:    define [[A:%.*]]* @_ZN5test44testEs(i16 signext
-  // CHECK:      [[N:%.*]] = sext i16 {{%.*}} to i32
-  // CHECK-NEXT: [[T0:%.*]] = icmp slt i32 [[N]], 0
-  // CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 -1, i32 [[N]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T1]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[N]]
-  elt *test(short s) {
-    return new elt[s];
-  }
-}
-
-// test4 with no sext required.
-namespace test5 {
-  struct A {
-    A();
-  };
-
-  typedef A elt;
-
-  // CHECK:    define [[A:%.*]]* @_ZN5test54testEi(i32
-  // CHECK:      [[N:%.*]] = load i32*
-  // CHECK-NEXT: [[T0:%.*]] = icmp slt i32 [[N]], 0
-  // CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i32 -1, i32 [[N]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T1]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[N]]
-  elt *test(int s) {
-    return new elt[s];
-  }
-}
-
-// test0 with an unsigned size.
-namespace test6 {
-  struct A {
-    A();
-    int x;
-  };
-
-  typedef A elt;
-
-  // CHECK:    define [[A:%.*]]* @_ZN5test64testEt(i16 zeroext
-  // CHECK:      [[N:%.*]] = zext i16 {{%.*}} to i32
-  // CHECK-NEXT: [[T0:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[N]], i32 4)
-  // CHECK-NEXT: [[T1:%.*]] = extractvalue { i32, i1 } [[T0]], 1
-  // CHECK-NEXT: [[T2:%.*]] = extractvalue { i32, i1 } [[T0]], 0
-  // CHECK-NEXT: [[T3:%.*]] = select i1 [[T1]], i32 -1, i32 [[T2]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T3]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[N]]
-  elt *test(unsigned short s) {
-    return new elt[s];
-  }
-}
-
-// test1 with an unsigned size.
-namespace test7 {
-  struct A {
-    A();
-    int x;
-  };
-
-  typedef A elt[100];
-
-  // CHECK:    define [100 x [[A:%.*]]]* @_ZN5test74testEt(i16 zeroext
-  // CHECK:      [[N:%.*]] = zext i16 {{%.*}} to i32
-  // CHECK-NEXT: [[T0:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[N]], i32 400)
-  // CHECK-NEXT: [[T1:%.*]] = extractvalue { i32, i1 } [[T0]], 1
-  // CHECK-NEXT: [[T2:%.*]] = extractvalue { i32, i1 } [[T0]], 0
-  // CHECK-NEXT: [[T3:%.*]] = mul i32 [[N]], 100
-  // CHECK-NEXT: [[T4:%.*]] = select i1 [[T1]], i32 -1, i32 [[T2]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T4]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[T3]]
-  elt *test(unsigned short s) {
-    return new elt[s];
-  }
-}
-
-// test0 with a signed type larger than size_t.
-namespace test8 {
-  struct A {
-    A();
-    int x;
-  };
-
-  typedef A elt;
-
-  // CHECK:    define [[A:%.*]]* @_ZN5test84testEx(i64
-  // CHECK:      [[N:%.*]] = load i64*
-  // CHECK-NEXT: [[T0:%.*]] = icmp uge i64 [[N]], 4294967296
-  // CHECK-NEXT: [[T1:%.*]] = trunc i64 [[N]] to i32
-  // CHECK-NEXT: [[T2:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[T1]], i32 4)
-  // CHECK-NEXT: [[T3:%.*]] = extractvalue { i32, i1 } [[T2]], 1
-  // CHECK-NEXT: [[T4:%.*]] = or i1 [[T0]], [[T3]]
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i32, i1 } [[T2]], 0
-  // CHECK-NEXT: [[T6:%.*]] = select i1 [[T4]], i32 -1, i32 [[T5]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T6]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[T1]]
-  elt *test(long long s) {
-    return new elt[s];
-  }
-}
-
-// test8 with an unsigned type.
-namespace test9 {
-  struct A {
-    A();
-    int x;
-  };
-
-  typedef A elt;
-
-  // CHECK:    define [[A:%.*]]* @_ZN5test94testEy(i64
-  // CHECK:      [[N:%.*]] = load i64*
-  // CHECK-NEXT: [[T0:%.*]] = icmp uge i64 [[N]], 4294967296
-  // CHECK-NEXT: [[T1:%.*]] = trunc i64 [[N]] to i32
-  // CHECK-NEXT: [[T2:%.*]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 [[T1]], i32 4)
-  // CHECK-NEXT: [[T3:%.*]] = extractvalue { i32, i1 } [[T2]], 1
-  // CHECK-NEXT: [[T4:%.*]] = or i1 [[T0]], [[T3]]
-  // CHECK-NEXT: [[T5:%.*]] = extractvalue { i32, i1 } [[T2]], 0
-  // CHECK-NEXT: [[T6:%.*]] = select i1 [[T4]], i32 -1, i32 [[T5]]
-  // CHECK-NEXT: call noalias i8* @_Znaj(i32 [[T6]])
-  // CHECK:      getelementptr inbounds {{.*}}, i32 [[T1]]
-  elt *test(unsigned long long s) {
-    return new elt[s];
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-with-default-arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-with-default-arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new-with-default-arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-// pr5547
-
-struct A {
-  void* operator new(__typeof(sizeof(int)));
-  A();
-};
-
-A* x() {
-  return new A;
-}
-
-struct B {
-  void* operator new(__typeof(sizeof(int)), int = 1, int = 4);
-  B(float);
-};
-
-B* y() {
-  new (3,4) B(1);
-  return new(1) B(2);
-}
-
-struct C {
-  void* operator new(__typeof(sizeof(int)), int, int = 4);
-  C();
-};
-
-C* z() {
-  new (3,4) C;
-  return new(1) C;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/new.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,262 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-typedef __typeof__(sizeof(0)) size_t;
-
-void t1() {
-  int* a = new int;
-}
-
-// Declare the reserved placement operators.
-void *operator new(size_t, void*) throw();
-void operator delete(void*, void*) throw();
-void *operator new[](size_t, void*) throw();
-void operator delete[](void*, void*) throw();
-
-void t2(int* a) {
-  int* b = new (a) int;
-}
-
-struct S {
-  int a;
-};
-
-// POD types.
-void t3() {
-  int *a = new int(10);
-  _Complex int* b = new _Complex int(10i);
-  
-  S s;
-  s.a = 10;
-  S *sp = new S(s);
-}
-
-// Non-POD
-struct T {
-  T();
-  int a;
-};
-
-void t4() {
-  // CHECK: call void @_ZN1TC1Ev
-  T *t = new T;
-}
-
-struct T2 {
-  int a;
-  T2(int, int);
-};
-
-void t5() { 
-  // CHECK: call void @_ZN2T2C1Eii
-  T2 *t2 = new T2(10, 10);
-}
-
-int *t6() {
-  // Null check.
-  return new (0) int(10);
-}
-
-void t7() {
-  new int();
-}
-
-struct U {
-  ~U();
-};
-  
-void t8(int n) {
-  new int[10];
-  new int[n];
-  
-  // Non-POD
-  new T[10];
-  new T[n];
-  
-  // Cookie required
-  new U[10];
-  new U[n];
-}
-
-// noalias
-// CHECK: declare noalias i8* @_Znam
-void *operator new[](size_t);
-
-void t9() {
-  bool b;
-
-  new bool(true);  
-  new (&b) bool(true);
-}
-
-struct A {
-  void* operator new(__typeof(sizeof(int)), int, float, ...);
-  A();
-};
-
-A* t10() {
-   // CHECK: @_ZN1AnwEmifz
-  return new(1, 2, 3.45, 100) A;
-}
-
-// CHECK: define void @_Z3t11i
-struct B { int a; };
-struct Bmemptr { int Bmemptr::* memptr; int a; };
-
-void t11(int n) {
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK: call void @llvm.memset.p0i8.i64(
-  B* b = new B();
-
-  // CHECK: call noalias i8* @_Znam
-  // CHECK: {{call void.*llvm.memset.p0i8.i64.*i8 0, i64 %}}
-  B *b2 = new B[n]();
-
-  // CHECK: call noalias i8* @_Znam
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-  // CHECK: br
-  Bmemptr *b_memptr = new Bmemptr[n]();
-  
-  // CHECK: ret void
-}
-
-struct Empty { };
-
-// We don't need to initialize an empty class.
-// CHECK: define void @_Z3t12v
-void t12() {
-  // CHECK: call noalias i8* @_Znam
-  // CHECK-NOT: br
-  (void)new Empty[10];
-
-  // CHECK: call noalias i8* @_Znam
-  // CHECK-NOT: br
-  (void)new Empty[10]();
-
-  // CHECK: ret void
-}
-
-// Zero-initialization
-// CHECK: define void @_Z3t13i
-void t13(int n) {
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK: store i32 0, i32*
-  (void)new int();
-
-  // CHECK: call noalias i8* @_Znam
-  // CHECK: {{call void.*llvm.memset.p0i8.i64.*i8 0, i64 %}}
-  (void)new int[n]();
-
-  // CHECK-NEXT: ret void
-}
-
-struct Alloc{
-  int x;
-  void* operator new[](size_t size);
-  void operator delete[](void* p);
-  ~Alloc();
-};
-
-void f() {
-  // CHECK: call i8* @_ZN5AllocnaEm(i64 808)
-  // CHECK: store i64 200
-  // CHECK: call void @_ZN5AllocD1Ev(
-  // CHECK: call void @_ZN5AllocdaEPv(i8*
-  delete[] new Alloc[10][20];
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK: call void @_ZdlPv(i8*
-  delete new bool;
-  // CHECK: ret void
-}
-
-namespace test15 {
-  struct A { A(); ~A(); };
-
-  // CHECK:    define void @_ZN6test155test0EPv(
-  // CHECK:      [[P:%.*]] = load i8*
-  // CHECK-NEXT: icmp eq i8* [[P]], null
-  // CHECK-NEXT: br i1
-  // CHECK:      [[T0:%.*]] = bitcast i8* [[P]] to [[A:%.*]]*
-  // CHECK-NEXT: call void @_ZN6test151AC1Ev([[A]]* [[T0]])
-  void test0(void *p) {
-    new (p) A();
-  }
-
-  // CHECK:    define void @_ZN6test155test1EPv(
-  // CHECK:      [[P:%.*]] = load i8**
-  // CHECK-NEXT: icmp eq i8* [[P]], null
-  // CHECK-NEXT: br i1
-  // CHECK:      [[BEGIN:%.*]] = bitcast i8* [[P]] to [[A:%.*]]*
-  // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 5
-  // CHECK-NEXT: br label
-  // CHECK:      [[CUR:%.*]] = phi [[A]]* [ [[BEGIN]], {{%.*}} ], [ [[NEXT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: call void @_ZN6test151AC1Ev([[A]]* [[CUR]])
-  // CHECK-NEXT: [[NEXT]] = getelementptr inbounds [[A]]* [[CUR]], i64 1
-  // CHECK-NEXT: [[DONE:%.*]] = icmp eq [[A]]* [[NEXT]], [[END]]
-  // CHECK-NEXT: br i1 [[DONE]]
-  void test1(void *p) {
-    new (p) A[5];
-  }
-
-  // TODO: it's okay if all these size calculations get dropped.
-  // FIXME: maybe we should try to throw on overflow?
-  // CHECK:    define void @_ZN6test155test2EPvi(
-  // CHECK:      [[N:%.*]] = load i32*
-  // CHECK-NEXT: [[T0:%.*]] = sext i32 [[N]] to i64
-  // CHECK-NEXT: [[T1:%.*]] = icmp slt i64 [[T0]], 0
-  // CHECK-NEXT: [[T2:%.*]] = select i1 [[T1]], i64 -1, i64 [[T0]]
-  // CHECK-NEXT: [[P:%.*]] = load i8*
-  // CHECK-NEXT: icmp eq i8* [[P]], null
-  // CHECK-NEXT: br i1
-  // CHECK:      [[BEGIN:%.*]] = bitcast i8* [[P]] to [[A:%.*]]*
-  // CHECK-NEXT: [[ISEMPTY:%.*]] = icmp eq i64 [[T0]], 0
-  // CHECK-NEXT: br i1 [[ISEMPTY]],
-  // CHECK:      [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 [[T0]]
-  // CHECK-NEXT: br label
-  // CHECK:      [[CUR:%.*]] = phi [[A]]* [ [[BEGIN]],
-  // CHECK-NEXT: call void @_ZN6test151AC1Ev([[A]]* [[CUR]])
-  void test2(void *p, int n) {
-    new (p) A[n];
-  }
-}
-
-namespace PR10197 {
-  // CHECK: define weak_odr void @_ZN7PR101971fIiEEvv()
-  template<typename T>
-  void f() {
-    // CHECK: [[CALL:%.*]] = call noalias i8* @_Znwm
-    // CHECK-NEXT: [[CASTED:%.*]] = bitcast i8* [[CALL]] to 
-    new T;
-    // CHECK-NEXT: ret void
-  }
-
-  template void f<int>();
-}
-
-namespace PR11523 {
-  class MyClass;
-  typedef int MyClass::* NewTy;
-  // CHECK: define i64* @_ZN7PR115231fEv
-  // CHECK: store i64 -1
-  NewTy* f() { return new NewTy[2](); }
-}
-
-namespace PR11757 {
-  // Make sure we elide the copy construction.
-  struct X { X(); X(const X&); };
-  X* a(X* x) { return new X(X()); }
-  // CHECK: define {{.*}} @_ZN7PR117571aEPNS_1XE
-  // CHECK: [[CALL:%.*]] = call noalias i8* @_Znwm
-  // CHECK-NEXT: [[CASTED:%.*]] = bitcast i8* [[CALL]] to
-  // CHECK-NEXT: call void @_ZN7PR117571XC1Ev({{.*}}* [[CASTED]])
-  // CHECK-NEXT: ret {{.*}} [[CASTED]]
-}
-
-namespace PR13380 {
-  struct A { A() {} };
-  struct B : public A { int x; };
-  // CHECK: define i8* @_ZN7PR133801fEv
-  // CHECK: call noalias i8* @_Znam(
-  // CHECK: call void @llvm.memset.p0i8
-  // CHECK-NEXT: call void @_ZN7PR133801BC1Ev
-  void* f() { return new B[2](); }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/no-exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/no-exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/no-exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-void g();
-
-// CHECK: define void @_Z1fv() [[NUW:#[0-9]+]]
-void f() throw (int) { 
-
-  // CHECK-NOT: invoke void @_Z1gv
-  g();
-  // CHECK: call void @_Z1gv()
-  // CHECK: ret void
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/no-opt-volatile-memcpy.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/no-opt-volatile-memcpy.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/no-opt-volatile-memcpy.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -O0 -triple=x86_64-apple-darwin  -emit-llvm -o - %s | FileCheck %s
-// rdar://11861085
-
-struct s {
-  char filler [128];
-  volatile int x;
-};
-
-struct s gs;
-
-void foo (void) {
-  struct s ls;
-  ls = ls;
-  gs = gs;
-  ls = gs;
-}
-// CHECK: define void @_Z3foov()
-// CHECK: %[[LS:.*]] = alloca %struct.s, align 4
-// CHECK-NEXT: %[[ZERO:.*]] = bitcast %struct.s* %[[LS]] to i8*
-// CHECK-NEXT:  %[[ONE:.*]] = bitcast %struct.s* %[[LS]] to i8*
-// CHECK-NEXT:  call void @llvm.memcpy.{{.*}}(i8* %[[ZERO]], i8* %[[ONE]], i64 132, i32 4, i1 true)
-// CHECK-NEXT:  call void @llvm.memcpy.{{.*}}(i8* getelementptr inbounds (%struct.s* @gs, i32 0, i32 0, i32 0), i8* getelementptr inbounds (%struct.s* @gs, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)
-// CHECK-NEXT:  %[[TWO:.*]] = bitcast %struct.s* %[[LS]] to i8*
-// CHECK-NEXT:  call void @llvm.memcpy.{{.*}}(i8* %[[TWO]], i8* getelementptr inbounds (%struct.s* @gs, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)
-
-
-struct s1 {
-  struct s y;
-};
-
-struct s1 s;
-
-void fee (void) {
-  s = s;
-  s.y = gs;
-}
-// CHECK: define void @_Z3feev()
-// CHECK: call void @llvm.memcpy.{{.*}}(i8* getelementptr inbounds (%struct.s1* @s, i32 0, i32 0, i32 0, i32 0), i8* getelementptr inbounds (%struct.s1* @s, i32 0, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)
-// CHECK-NEXT: call void @llvm.memcpy.{{.*}}(i8* getelementptr inbounds (%struct.s1* @s, i32 0, i32 0, i32 0, i32 0), i8* getelementptr inbounds (%struct.s* @gs, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)
-
-struct d : s1 {
-};
-
-d gd;
-
-void gorf(void) {
-  gd = gd;
-}
-// CHECK: define void @_Z4gorfv()
-// CHECK:   call void @llvm.memcpy.{{.*}}(i8* getelementptr inbounds (%struct.d* @gd, i32 0, i32 0, i32 0, i32 0, i32 0), i8* getelementptr inbounds (%struct.d* @gd, i32 0, i32 0, i32 0, i32 0, i32 0), i64 132, i32 4, i1 true)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/noinline-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/noinline-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/noinline-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s  -emit-llvm -o - | FileCheck %s
-
-// This was a problem in Sema, but only shows up as noinline missing
-// in CodeGen.
-
-// CHECK: define linkonce_odr void @_ZN6VectorIiE13growStorageByEv(%struct.Vector* %this) [[NI:#[0-9]+]]
-
-template <class Ty> struct Vector  {
-  void growStorageBy();
-};
-template <class T> __attribute__((noinline)) void Vector<T>::growStorageBy() {
-}
-void foo() {
- Vector<int> strs;
- strs.growStorageBy();
-}
-
-// CHECK: attributes [[NI]] = { noinline nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nonconst-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nonconst-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nonconst-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-int a();
-// CHECK: call i32 @_Z1av()
-struct x {int x, y : 10;} x = {1, a()};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nrvo-noreturn.cc
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nrvo-noreturn.cc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nrvo-noreturn.cc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-// PR9178
-
-void abort() __attribute__((__noreturn__));
-struct CoinModelLink {
-  CoinModelLink();
-  ~CoinModelLink();
-};
-class CoinModel {
-  CoinModelLink firstInQuadraticColumn();
-};
-CoinModelLink CoinModel::firstInQuadraticColumn() {
-  abort();
-  CoinModelLink x;
-  return x;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nrvo.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nrvo.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nrvo.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O1 -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O1 -fcxx-exceptions -fexceptions -o - %s | FileCheck --check-prefix=CHECK-EH %s
-
-// Test code generation for the named return value optimization.
-class X {
-public:
-  X();
-  X(const X&);
-  ~X();
-};
-
-// CHECK: define void @_Z5test0v
-// CHECK-EH: define void @_Z5test0v
-X test0() {
-  X x;
-  // CHECK:          call {{.*}} @_ZN1XC1Ev
-  // CHECK-NEXT:     ret void
-
-  // CHECK-EH:       call {{.*}} @_ZN1XC1Ev
-  // CHECK-EH-NEXT:  ret void
-  return x;
-}
-
-// CHECK: define void @_Z5test1b(
-// CHECK-EH: define void @_Z5test1b(
-X test1(bool B) {
-  // CHECK:      tail call {{.*}} @_ZN1XC1Ev
-  // CHECK-NEXT: ret void
-  X x;
-  if (B)
-    return (x);
-  return x;
-  // CHECK-EH:      tail call {{.*}} @_ZN1XC1Ev
-  // CHECK-EH-NEXT: ret void
-}
-
-// CHECK: define void @_Z5test2b
-// CHECK-EH: define void @_Z5test2b
-X test2(bool B) {
-  // No NRVO.
-
-  X x;
-  X y;
-  if (B)
-    return y;
-  return x;
-
-  // CHECK: call {{.*}} @_ZN1XC1Ev
-  // CHECK-NEXT: call {{.*}} @_ZN1XC1Ev
-  // CHECK: call {{.*}} @_ZN1XC1ERKS_
-  // CHECK: call {{.*}} @_ZN1XC1ERKS_
-  // CHECK: call {{.*}} @_ZN1XD1Ev
-  // CHECK: call {{.*}} @_ZN1XD1Ev
-  // CHECK: ret void
-
-  // The block ordering in the -fexceptions IR is unfortunate.
-
-  // CHECK-EH:      call {{.*}} @_ZN1XC1Ev
-  // CHECK-EH-NEXT: invoke {{.*}} @_ZN1XC1Ev
-  // -> %invoke.cont, %lpad
-
-  // %invoke.cont:
-  // CHECK-EH:      br i1
-  // -> %if.then, %if.end
-
-  // %if.then: returning 'x'
-  // CHECK-EH:      invoke {{.*}} @_ZN1XC1ERKS_
-  // -> %cleanup, %lpad1
-
-  // %lpad: landing pad for ctor of 'y', dtor of 'y'
-  // CHECK-EH:      [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-EH-NEXT:   cleanup
-  // CHECK-EH-NEXT: extractvalue { i8*, i32 } [[CAUGHTVAL]], 0
-  // CHECK-EH-NEXT: extractvalue { i8*, i32 } [[CAUGHTVAL]], 1
-  // CHECK-EH-NEXT: br label
-  // -> %eh.cleanup
-
-  // %lpad1: landing pad for return copy ctors, EH cleanup for 'y'
-  // CHECK-EH: invoke {{.*}} @_ZN1XD1Ev
-  // -> %eh.cleanup, %terminate.lpad
-
-  // %if.end: returning 'y'
-  // CHECK-EH: invoke {{.*}} @_ZN1XC1ERKS_
-  // -> %cleanup, %lpad1
-
-  // %cleanup: normal cleanup for 'y'
-  // CHECK-EH: invoke {{.*}} @_ZN1XD1Ev
-  // -> %invoke.cont11, %lpad
-
-  // %invoke.cont11: normal cleanup for 'x'
-  // CHECK-EH:      call {{.*}} @_ZN1XD1Ev
-  // CHECK-EH-NEXT: ret void
-
-  // %eh.cleanup:  EH cleanup for 'x'
-  // CHECK-EH: invoke {{.*}} @_ZN1XD1Ev
-  // -> %invoke.cont17, %terminate.lpad
-
-  // %invoke.cont17: rethrow block for %eh.cleanup.
-  // This really should be elsewhere in the function.
-  // CHECK-EH:      resume { i8*, i32 }
-
-  // %terminate.lpad: terminate landing pad.
-  // CHECK-EH:      [[T0:%.*]] = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-EH-NEXT:   catch i8* null
-  // CHECK-EH-NEXT: [[T1:%.*]] = extractvalue { i8*, i32 } [[T0]], 0
-  // CHECK-EH-NEXT: call void @__clang_call_terminate(i8* [[T1]]) [[NR_NUW:#[0-9]+]]
-  // CHECK-EH-NEXT: unreachable
-
-}
-
-X test3(bool B) {
-  // FIXME: We don't manage to apply NRVO here, although we could.
-  {
-    X y;
-    return y;
-  }
-  X x;
-  return x;
-}
-
-extern "C" void exit(int) throw();
-
-// CHECK: define void @_Z5test4b
-X test4(bool B) {
-  {
-    // CHECK: tail call {{.*}} @_ZN1XC1Ev
-    X x;
-    // CHECK: br i1
-    if (B)
-      return x;
-  }
-  // CHECK: tail call {{.*}} @_ZN1XD1Ev
-  // CHECK: tail call void @exit(i32 1)
-  exit(1);
-}
-
-#ifdef __EXCEPTIONS
-// CHECK-EH: define void @_Z5test5
-void may_throw();
-X test5() {
-  try {
-    may_throw();
-  } catch (X x) {
-    // CHECK-EH: invoke {{.*}} @_ZN1XC1ERKS_
-    // CHECK-EH: call void @__cxa_end_catch()
-    // CHECK-EH: ret void
-    return x;
-  }
-}
-#endif
-
-// rdar://problem/10430868
-// CHECK: define void @_Z5test6v
-X test6() {
-  X a __attribute__((aligned(8)));
-  return a;
-  // CHECK:      [[A:%.*]] = alloca [[X:%.*]], align 8
-  // CHECK-NEXT: call {{.*}} @_ZN1XC1Ev([[X]]* [[A]])
-  // CHECK-NEXT: call {{.*}} @_ZN1XC1ERKS_([[X]]* {{%.*}}, [[X]]* [[A]])
-  // CHECK-NEXT: call {{.*}} @_ZN1XD1Ev([[X]]* [[A]])
-  // CHECK-NEXT: ret void
-}
-
-// CHECK-EH: attributes [[NR_NUW]] = { noreturn nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nullptr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nullptr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/nullptr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -I%S -emit-llvm -o - %s | FileCheck %s
-
-#include <typeinfo>
-
-// CHECK: @_ZTIDn = external constant i8*
-int* a = nullptr;
-
-void f() {
-  int* a = nullptr;
-}
-
-typedef decltype(nullptr) nullptr_t;
-
-nullptr_t get_nullptr();
-
-struct X { };
-void g() {
-  // CHECK: call i8* @_Z11get_nullptrv()
-  int (X::*pmf)(int) = get_nullptr();
-}
-
-const std::type_info& f2() {
-  return typeid(nullptr_t);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/operator-new.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/operator-new.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/operator-new.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -o %t-1.ll %s
-// RUN: FileCheck -check-prefix SANE --input-file=%t-1.ll %s
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -fno-assume-sane-operator-new -o %t-2.ll %s
-// RUN: FileCheck -check-prefix SANENOT --input-file=%t-2.ll %s
-
-
-class teste {
-  int A;
-public:
-  teste() : A(2) {}
-};
-
-void f1() {
-  // SANE: declare noalias i8* @_Znwj(
-  // SANENOT: declare i8* @_Znwj(
-  new teste();
-}
-
-
-// rdar://5739832 - operator new should check for overflow in multiply.
-void *f2(long N) {
-  return new int[N];
-  
-// SANE:      [[UWO:%.*]] = call {{.*}} @llvm.umul.with.overflow
-// SANE-NEXT: [[OVER:%.*]] = extractvalue {{.*}} [[UWO]], 1
-// SANE-NEXT: [[SUM:%.*]] = extractvalue {{.*}} [[UWO]], 0
-// SANE-NEXT: [[RESULT:%.*]] = select i1 [[OVER]], i32 -1, i32 [[SUM]]
-// SANE-NEXT: call noalias i8* @_Znaj(i32 [[RESULT]])
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/overload-binop-implicitconvert.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/overload-binop-implicitconvert.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/overload-binop-implicitconvert.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-class T
-{};
-
-void print(const char *t);
-
-T& operator<< (T& t,const char* c)
-{
-  print(c);
-  return t;
-}
-
-
-int main()
-{
-  T t;
-  print("foo");
-  t<<"foo";
-  
-  return 0;
-}
-  

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/override-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/override-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/override-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -fdump-record-layouts-simple %s 2> %t.layouts
-// RUN: %clang_cc1 -fdump-record-layouts-simple %s > %t.before 2>&1
-// RUN: %clang_cc1 -DPACKED= -DALIGNED16= -fdump-record-layouts-simple -foverride-record-layout=%t.layouts %s > %t.after 2>&1
-// RUN: diff -u %t.before %t.after
-// RUN: FileCheck %s < %t.after
-
-// If not explicitly disabled, set PACKED to the packed attribute.
-#ifndef PACKED
-#  define PACKED __attribute__((packed))
-#endif
-
-struct Empty1 { };
-struct Empty2 { };
-
-// CHECK: Type: struct X0
-struct X0 : public Empty1 { 
-  int x[6] PACKED; 
-};
-
-// CHECK: Type: struct X1
-struct X1 : public X0, public Empty2 { 
-  char x[13]; 
-  struct X0 y; 
-} PACKED;
-
-// CHECK: Type: struct X2
-struct PACKED X2 :  public X1, public X0, public Empty1 {
-  short x;
-  int y;
-};
-
-// CHECK: Type: struct X3
-struct PACKED X3 : virtual public X1, public X0 {
-  short x;
-  int y;
-};
-
-// CHECK: Type: struct X4
-struct PACKED X4 {
-  unsigned int a : 1;
-  unsigned int b : 1;
-  unsigned int c : 1;
-  unsigned int d : 1;
-  unsigned int e : 1;
-  unsigned int f : 1;
-  unsigned int g : 1;
-  unsigned int h : 1;
-  unsigned int i : 1;
-  unsigned int j : 1;
-  unsigned int k : 1;
-  unsigned int l : 1;
-  unsigned int m : 1;
-  unsigned int n : 1;
-  X4();
-};
-
-// CHECK: Type: struct X5
-struct PACKED X5 {
-  union {
-    long a;
-    long b;
-  };
-  short l;
-  short r;
-};
-
-void use_structs() {
-  X0 x0s[sizeof(X0)];
-  X1 x1s[sizeof(X1)];
-  X2 x2s[sizeof(X2)];
-  X3 x3s[sizeof(X3)];
-  X4 x4s[sizeof(X4)];
-  X5 x5s[sizeof(X5)];
-  x4s[1].a = 1;
-  x5s[1].a = 17;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/partial-destruction.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/partial-destruction.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/partial-destruction.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,172 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - -fcxx-exceptions -fexceptions | FileCheck %s
-
-// Test IR generation for partial destruction of aggregates.
-
-void opaque();
-
-// Initializer lists.
-namespace test0 {
-  struct A { A(int); A(); ~A(); void *v; };
-  void test() {
-    A as[10] = { 5, 7 };
-    opaque();
-  }
-  // CHECK:    define void @_ZN5test04testEv()
-  // CHECK:      [[AS:%.*]] = alloca [10 x [[A:%.*]]], align
-  // CHECK-NEXT: [[ENDVAR:%.*]] = alloca [[A]]*
-  // CHECK-NEXT: [[EXN:%.*]] = alloca i8*
-  // CHECK-NEXT: [[SEL:%.*]] = alloca i32
-
-  // Initialize.
-  // CHECK-NEXT: [[E_BEGIN:%.*]] = getelementptr inbounds [10 x [[A]]]* [[AS]], i64 0, i64 0
-  // CHECK-NEXT: store [[A]]* [[E_BEGIN]], [[A]]** [[ENDVAR]]
-  // CHECK-NEXT: invoke void @_ZN5test01AC1Ei([[A]]* [[E_BEGIN]], i32 5)
-  // CHECK:      [[E1:%.*]] = getelementptr inbounds [[A]]* [[E_BEGIN]], i64 1
-  // CHECK-NEXT: store [[A]]* [[E1]], [[A]]** [[ENDVAR]]
-  // CHECK-NEXT: invoke void @_ZN5test01AC1Ei([[A]]* [[E1]], i32 7)
-  // CHECK:      [[E2:%.*]] = getelementptr inbounds [[A]]* [[E1]], i64 1
-  // CHECK-NEXT: store [[A]]* [[E2]], [[A]]** [[ENDVAR]]
-  // CHECK-NEXT: [[E_END:%.*]] = getelementptr inbounds [[A]]* [[E_BEGIN]], i64 10
-  // CHECK-NEXT: br label
-  // CHECK:      [[E_CUR:%.*]] = phi [[A]]* [ [[E2]], {{%.*}} ], [ [[E_NEXT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: invoke void @_ZN5test01AC1Ev([[A]]* [[E_CUR]])
-  // CHECK:      [[E_NEXT]] = getelementptr inbounds [[A]]* [[E_CUR]], i64 1
-  // CHECK-NEXT: store [[A]]* [[E_NEXT]], [[A]]** [[ENDVAR]]
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq [[A]]* [[E_NEXT]], [[E_END]]
-  // CHECK-NEXT: br i1 [[T0]],
-
-  // Run.
-  // CHECK:      invoke void @_Z6opaquev()
-
-  // Normal destroy.
-  // CHECK:      [[ED_BEGIN:%.*]] = getelementptr inbounds [10 x [[A]]]* [[AS]], i32 0, i32 0
-  // CHECK-NEXT: [[ED_END:%.*]] = getelementptr inbounds [[A]]* [[ED_BEGIN]], i64 10
-  // CHECK-NEXT: br label
-  // CHECK:      [[ED_AFTER:%.*]] = phi [[A]]* [ [[ED_END]], {{%.*}} ], [ [[ED_CUR:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[ED_CUR]] = getelementptr inbounds [[A]]* [[ED_AFTER]], i64 -1
-  // CHECK-NEXT: invoke void @_ZN5test01AD1Ev([[A]]* [[ED_CUR]])
-  // CHECK:      [[T0:%.*]] = icmp eq [[A]]* [[ED_CUR]], [[ED_BEGIN]]
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      ret void
-
-  // Partial destroy for initialization.
-  // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-NEXT:   cleanup
-  // CHECK:      [[PARTIAL_END:%.*]] = load [[A]]** [[ENDVAR]]
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq [[A]]* [[E_BEGIN]], [[PARTIAL_END]]
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[E_AFTER:%.*]] = phi [[A]]* [ [[PARTIAL_END]], {{%.*}} ], [ [[E_CUR:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[E_CUR]] = getelementptr inbounds [[A]]* [[E_AFTER]], i64 -1
-  // CHECK-NEXT: invoke void @_ZN5test01AD1Ev([[A]]* [[E_CUR]])
-  // CHECK:      [[T0:%.*]] = icmp eq [[A]]* [[E_CUR]], [[E_BEGIN]]
-  // CHECK-NEXT: br i1 [[T0]],
-
-  // Primary EH destructor.
-  // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-NEXT:   cleanup
-  // CHECK:      [[E0:%.*]] = getelementptr inbounds [10 x [[A]]]* [[AS]], i32 0, i32 0
-  // CHECK-NEXT: [[E_END:%.*]] = getelementptr inbounds [[A]]* [[E0]], i64 10
-  // CHECK-NEXT: br label
-
-  // Partial destructor for primary normal destructor.
-  // FIXME: There's some really bad block ordering here which causes
-  // the partial destroy for the primary normal destructor to fall
-  // within the primary EH destructor.
-  // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-NEXT:   cleanup
-  // CHECK:      [[T0:%.*]] = icmp eq [[A]]* [[ED_BEGIN]], [[ED_CUR]]
-  // CHECK-NEXT: br i1 [[T0]]
-  // CHECK:      [[EDD_AFTER:%.*]] = phi [[A]]* [ [[ED_CUR]], {{%.*}} ], [ [[EDD_CUR:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[EDD_CUR]] = getelementptr inbounds [[A]]* [[EDD_AFTER]], i64 -1
-  // CHECK-NEXT: invoke void @_ZN5test01AD1Ev([[A]]* [[EDD_CUR]])
-  // CHECK:      [[T0:%.*]] = icmp eq [[A]]* [[EDD_CUR]], [[ED_BEGIN]]
-  // CHECK-NEXT: br i1 [[T0]]
-
-  // Back to the primary EH destructor.
-  // CHECK:      [[E_AFTER:%.*]] = phi [[A]]* [ [[E_END]], {{%.*}} ], [ [[E_CUR:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[E_CUR]] = getelementptr inbounds [[A]]* [[E_AFTER]], i64 -1
-  // CHECK-NEXT: invoke void @_ZN5test01AD1Ev([[A]]* [[E_CUR]])
-  // CHECK:      [[T0:%.*]] = icmp eq [[A]]* [[E_CUR]], [[E0]]
-  // CHECK-NEXT: br i1 [[T0]],
-
-}
-
-namespace test1 {
-  struct A { A(); A(int); ~A(); };
-  struct B { A x, y, z; int w; };
-
-  void test() {
-    B v = { 5, 6, 7, 8 };
-  }
-  // CHECK:    define void @_ZN5test14testEv()
-  // CHECK:      [[V:%.*]] = alloca [[B:%.*]], align 4
-  // CHECK-NEXT: alloca i8*
-  // CHECK-NEXT: alloca i32
-  // CHECK-NEXT: [[X:%.*]] = getelementptr inbounds [[B]]* [[V]], i32 0, i32 0
-  // CHECK-NEXT: call void @_ZN5test11AC1Ei([[A:%.*]]* [[X]], i32 5)
-  // CHECK-NEXT: [[Y:%.*]] = getelementptr inbounds [[B]]* [[V]], i32 0, i32 1
-  // CHECK-NEXT: invoke void @_ZN5test11AC1Ei([[A]]* [[Y]], i32 6)
-  // CHECK:      [[Z:%.*]] = getelementptr inbounds [[B]]* [[V]], i32 0, i32 2
-  // CHECK-NEXT: invoke void @_ZN5test11AC1Ei([[A]]* [[Z]], i32 7)
-  // CHECK:      [[W:%.*]] = getelementptr inbounds [[B]]* [[V]], i32 0, i32 3
-  // CHECK-NEXT: store i32 8, i32* [[W]], align 4
-  // CHECK-NEXT: call void @_ZN5test11BD1Ev([[B]]* [[V]])
-  // CHECK-NEXT: ret void
-
-  // FIXME: again, the block ordering is pretty bad here
-  // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-NEXT:   cleanup
-  // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK-NEXT:   cleanup
-  // CHECK:      invoke void @_ZN5test11AD1Ev([[A]]* [[Y]])
-  // CHECK:      invoke void @_ZN5test11AD1Ev([[A]]* [[X]])
-}
-
-namespace test2 {
-  struct A { A(); ~A(); };
-
-  void test() {
-    A v[4][7];
-
-    // CHECK:    define void @_ZN5test24testEv()
-    // CHECK:      [[V:%.*]] = alloca [4 x [7 x [[A:%.*]]]], align 1
-    // CHECK-NEXT: alloca i8*
-    // CHECK-NEXT: alloca i32
-
-    // Main initialization loop.
-    // CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [4 x [7 x [[A]]]]* [[V]], i32 0, i32 0, i32 0
-    // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 28
-    // CHECK-NEXT: br label
-    // CHECK:      [[CUR:%.*]] = phi [[A]]* [ [[BEGIN]], {{%.*}} ], [ [[NEXT:%.*]], {{%.*}} ]
-    // CHECK-NEXT: invoke void @_ZN5test21AC1Ev([[A]]* [[CUR]])
-    // CHECK:      [[NEXT:%.*]] = getelementptr inbounds [[A]]* [[CUR]], i64 1
-    // CHECK-NEXT: [[DONE:%.*]] = icmp eq [[A]]* [[NEXT]], [[END]]
-    // CHECK-NEXT: br i1 [[DONE]],
-
-    // Partial destruction landing pad.
-    // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-    // CHECK-NEXT:   cleanup
-    // CHECK:      [[EMPTY:%.*]] = icmp eq [[A]]* [[BEGIN]], [[CUR]]
-    // CHECK-NEXT: br i1 [[EMPTY]],
-    // CHECK:      [[PAST:%.*]] = phi [[A]]* [ [[CUR]], {{%.*}} ], [ [[DEL:%.*]], {{%.*}} ]
-    // CHECK-NEXT: [[DEL]] = getelementptr inbounds [[A]]* [[PAST]], i64 -1
-    // CHECK-NEXT: invoke void @_ZN5test21AD1Ev([[A]]* [[DEL]])
-    // CHECK:      [[T0:%.*]] = icmp eq [[A]]* [[DEL]], [[BEGIN]]
-    // CHECK-NEXT: br i1 [[T0]],
-  }
-
-}
-
-// PR10351
-namespace test3 {
-  struct A { A(); ~A(); void *p; };
-  struct B {
-    B() {}
-    A a;
-  };
-
-  B *test() {
-    return new B[10];
-    // invoke void @_ZN5test31BD1Ev(
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pod-member-memcpys.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pod-member-memcpys.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pod-member-memcpys.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,256 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -std=c++03 -fexceptions -fcxx-exceptions -O1 -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -emit-llvm -std=c++03 -O0 -o - %s | FileCheck --check-prefix=CHECK-2 %s
-
-struct POD {
-  int w, x, y, z;
-};
-
-struct PODLike {
-  int w, x, y, z;
-  PODLike();
-  ~PODLike();
-};
-
-struct NonPOD {
-  NonPOD();
-  NonPOD(const NonPOD&);
-  NonPOD& operator=(const NonPOD&);
-};
-
-struct Basic {
-  int a, b, c, d;
-  NonPOD np;
-  int w, x, y, z;
-};
-
-struct PODMember {
-  int a, b, c, d;
-  POD p;
-  NonPOD np;
-  int w, x, y, z;
-};
-
-struct PODLikeMember {
-  int a, b, c, d;
-  PODLike pl;
-  NonPOD np;
-  int w, x, y, z;
-};
-
-struct ArrayMember {
-  int a, b, c, d;
-  int e[12];
-  NonPOD np;
-  int f[12];
-  int w, x, y, z;
-};
-
-struct VolatileMember {
-  int a, b, c, d;
-  volatile int v;
-  NonPOD np;
-  int w, x, y, z;
-};
-
-struct BitfieldMember {
-  int a, b, c, d;
-  NonPOD np;
-  int w : 6;
-  int x : 6;
-  int y : 6;
-  int z : 6;
-};
-
-struct BitfieldMember2 {
-  unsigned a : 1;
-  unsigned b, c, d;
-  NonPOD np;
-};
-
-struct InnerClassMember {
-  struct {
-    int a, b, c, d;
-  } a;
-  int b, c, d, e;
-  NonPOD np;
-  int w, x, y, z;
-};
-
-struct ReferenceMember {
-  ReferenceMember(int &a, int &b, int &c, int &d)
-    : a(a), b(b), c(c), d(d) {}
-  int &a;
-  int &b;
-  NonPOD np;
-  int &c;
-  int &d;
-};
-
-struct __attribute__((packed)) PackedMembers {
-  char c;
-  NonPOD np;
-  int w, x, y, z;
-};
-
-// COPY-ASSIGNMENT OPERATORS:
-
-// Assignment operators are output in the order they're encountered.
-
-#define CALL_AO(T) void callAO##T(T& a, const T& b) { a = b; } 
-
-CALL_AO(Basic)
-CALL_AO(PODMember)
-CALL_AO(PODLikeMember)
-CALL_AO(ArrayMember)
-CALL_AO(VolatileMember)
-CALL_AO(BitfieldMember)
-CALL_AO(InnerClassMember)
-CALL_AO(PackedMembers)
-
-// Basic copy-assignment:
-// CHECK: define linkonce_odr %struct.Basic* @_ZN5BasicaSERKS_(%struct.Basic* %this, %struct.Basic*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: tail call %struct.NonPOD* @_ZN6NonPODaSERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret %struct.Basic* %this
-
-// PODMember copy-assignment:
-// CHECK: define linkonce_odr %struct.PODMember* @_ZN9PODMemberaSERKS_(%struct.PODMember* %this, %struct.PODMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 32, i32 4{{.*}})
-// CHECK: tail call %struct.NonPOD* @_ZN6NonPODaSERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret %struct.PODMember* %this
-
-// PODLikeMember copy-assignment:
-// CHECK: define linkonce_odr %struct.PODLikeMember* @_ZN13PODLikeMemberaSERKS_(%struct.PODLikeMember* %this, %struct.PODLikeMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 32, i32 4{{.*}})
-// CHECK: tail call %struct.NonPOD* @_ZN6NonPODaSERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret %struct.PODLikeMember* %this
-
-// ArrayMember copy-assignment:
-// CHECK: define linkonce_odr %struct.ArrayMember* @_ZN11ArrayMemberaSERKS_(%struct.ArrayMember* %this, %struct.ArrayMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 64, i32 4{{.*}})
-// CHECK: tail call %struct.NonPOD* @_ZN6NonPODaSERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 64, i32 4{{.*}})
-// CHECK: ret %struct.ArrayMember* %this
-
-// VolatileMember copy-assignment:
-// CHECK: define linkonce_odr %struct.VolatileMember* @_ZN14VolatileMemberaSERKS_(%struct.VolatileMember* %this, %struct.VolatileMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: load volatile i32* {{.*}}, align 4
-// CHECK: store volatile i32 {{.*}}, align 4
-// CHECK: tail call %struct.NonPOD* @_ZN6NonPODaSERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret %struct.VolatileMember* %this
-
-// BitfieldMember copy-assignment:
-// CHECK: define linkonce_odr %struct.BitfieldMember* @_ZN14BitfieldMemberaSERKS_(%struct.BitfieldMember* %this, %struct.BitfieldMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: tail call %struct.NonPOD* @_ZN6NonPODaSERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 3, i32 1{{.*}})
-// CHECK: ret %struct.BitfieldMember* %this
-
-// InnerClass copy-assignment:
-// CHECK: define linkonce_odr %struct.InnerClassMember* @_ZN16InnerClassMemberaSERKS_(%struct.InnerClassMember* %this, %struct.InnerClassMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 32, i32 4{{.*}})
-// CHECK: tail call %struct.NonPOD* @_ZN6NonPODaSERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret %struct.InnerClassMember* %this
-
-// PackedMembers copy-assignment:
-// CHECK: define linkonce_odr %struct.PackedMembers* @_ZN13PackedMembersaSERKS_(%struct.PackedMembers* %this, %struct.PackedMembers*)
-// CHECK: tail call %struct.NonPOD* @_ZN6NonPODaSERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 1{{.*}})
-// CHECK: ret %struct.PackedMembers* %this
-
-// COPY-CONSTRUCTORS:
-
-// Clang outputs copy-constructors in the reverse of the order that
-// copy-constructor calls are encountered. Add functions that call the copy
-// constructors of the classes above in reverse order here.
-
-#define CALL_CC(T) T callCC##T(const T& b) { return b; }
-
-CALL_CC(PackedMembers)
-CALL_CC(BitfieldMember2)
-CALL_CC(ReferenceMember)
-CALL_CC(InnerClassMember)
-CALL_CC(BitfieldMember)
-CALL_CC(VolatileMember)
-CALL_CC(ArrayMember)
-CALL_CC(PODLikeMember)
-CALL_CC(PODMember)
-CALL_CC(Basic)
-
-// Basic copy-constructor:
-// CHECK: define linkonce_odr void @_ZN5BasicC2ERKS_(%struct.Basic* %this, %struct.Basic*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: tail call void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret void
-
-// PODMember copy-constructor:
-// CHECK: define linkonce_odr void @_ZN9PODMemberC2ERKS_(%struct.PODMember* %this, %struct.PODMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 32, i32 4{{.*}})
-// CHECK: tail call void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret void
-
-// PODLikeMember copy-constructor:
-// CHECK: define linkonce_odr void @_ZN13PODLikeMemberC2ERKS_(%struct.PODLikeMember* %this, %struct.PODLikeMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 32, i32 4{{.*}})
-// CHECK: invoke void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret void
-// CHECK: landingpad
-// CHECK: invoke void @_ZN7PODLikeD1Ev
-
-// ArrayMember copy-constructor:
-// CHECK: define linkonce_odr void @_ZN11ArrayMemberC2ERKS_(%struct.ArrayMember* %this, %struct.ArrayMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 64, i32 4{{.*}})
-// CHECK: tail call void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 64, i32 4{{.*}})
-// CHECK: ret void
-
-// VolatileMember copy-constructor:
-// CHECK: define linkonce_odr void @_ZN14VolatileMemberC2ERKS_(%struct.VolatileMember* %this, %struct.VolatileMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: load volatile i32* {{.*}}, align 4
-// CHECK: store volatile i32 {{.*}}, align 4
-// CHECK: tail call void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret void
-
-// BitfieldMember copy-constructor:
-// CHECK: define linkonce_odr void @_ZN14BitfieldMemberC2ERKS_(%struct.BitfieldMember* %this, %struct.BitfieldMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: tail call void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 3, i32 1{{.*}})
-// CHECK: ret void
-
-// InnerClass copy-constructor:
-// CHECK: define linkonce_odr void @_ZN16InnerClassMemberC2ERKS_(%struct.InnerClassMember* %this, %struct.InnerClassMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 32, i32 4{{.*}})
-// CHECK: tail call void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4{{.*}})
-// CHECK: ret void
-
-// ReferenceMember copy-constructor:
-// CHECK: define linkonce_odr void @_ZN15ReferenceMemberC2ERKS_(%struct.ReferenceMember* %this, %struct.ReferenceMember*)
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 8{{.*}})
-// CHECK: tail call void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 8{{.*}})
-// CHECK: ret void
-
-// BitfieldMember2 copy-constructor:
-// CHECK-2: define linkonce_odr void @_ZN15BitfieldMember2C2ERKS_(%struct.BitfieldMember2* %this, %struct.BitfieldMember2*)
-// CHECK-2: call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 4, i1 false)
-// CHECK-2: call void @_ZN6NonPODC1ERKS_
-// CHECK-2: ret void
-
-// PackedMembers copy-assignment:
-// CHECK: define linkonce_odr void @_ZN13PackedMembersC2ERKS_(%struct.PackedMembers* %this, %struct.PackedMembers*)
-// CHECK: tail call void @_ZN6NonPODC1ERKS_
-// CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64({{.*}}i64 16, i32 1{{.*}})
-// CHECK: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pointers-to-data-members.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pointers-to-data-members.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pointers-to-data-members.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,258 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t.ll -triple=x86_64-apple-darwin10
-// RUN: FileCheck %s < %t.ll
-// RUN: FileCheck -check-prefix=CHECK-GLOBAL %s < %t.ll
-// RUN: %clang_cc1 %s -emit-llvm -o %t-opt.ll -triple=x86_64-apple-darwin10 -O3
-// RUN: FileCheck --check-prefix=CHECK-O3 %s < %t-opt.ll
-
-struct A { int a; int b; };
-struct B { int b; };
-struct C : B, A { };
-
-// Zero init.
-namespace ZeroInit {
-  // CHECK-GLOBAL: @_ZN8ZeroInit1aE = global i64 -1
-  int A::* a;
-  
-  // CHECK-GLOBAL: @_ZN8ZeroInit2aaE = global [2 x i64] [i64 -1, i64 -1]
-  int A::* aa[2];
-  
-  // CHECK-GLOBAL: @_ZN8ZeroInit3aaaE = global [2 x [2 x i64]] {{\[}}[2 x i64] [i64 -1, i64 -1], [2 x i64] [i64 -1, i64 -1]]
-  int A::* aaa[2][2];
-  
-  // CHECK-GLOBAL: @_ZN8ZeroInit1bE = global i64 -1,
-  int A::* b = 0;
-
-  // CHECK-GLOBAL: @_ZN8ZeroInit2saE = internal global %struct.anon { i64 -1 }
-  struct {
-    int A::*a;
-  } sa;
-  void test_sa() { (void) sa; } // force emission
-  
-  // CHECK-GLOBAL: @_ZN8ZeroInit3ssaE = internal
-  // CHECK-GLOBAL: [2 x i64] [i64 -1, i64 -1]
-  struct {
-    int A::*aa[2];
-  } ssa[2];
-  void test_ssa() { (void) ssa; }
-  
-  // CHECK-GLOBAL: @_ZN8ZeroInit2ssE = internal global %struct.anon.1 { %struct.anon.2 { i64 -1 } }
-  struct {
-    struct {
-      int A::*pa;
-    } s;
-  } ss;
-  void test_ss() { (void) ss; }
-  
-  struct A {
-    int A::*a;
-    int b;
-  };
-
-  struct B {
-    A a[10];
-    char c;
-    int B::*b;
-  };
-
-  struct C : A, B { int j; };
-  // CHECK-GLOBAL: @_ZN8ZeroInit1cE = global {{%.*}} { %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::B" { [10 x %"struct.ZeroInit::A"] [%"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }, %"struct.ZeroInit::A" { i64 -1, i32 0 }], i8 0, i64 -1 }, i32 0 }, align 8
-  C c;
-}
-
-// PR5674
-namespace PR5674 {
-  // CHECK-GLOBAL: @_ZN6PR56742pbE = global i64 4
-  int A::*pb = &A::b;
-}
-
-// Casts.
-namespace Casts {
-
-int A::*pa;
-int C::*pc;
-
-void f() {
-  // CHECK:      store i64 -1, i64* @_ZN5Casts2paE
-  pa = 0;
-
-  // CHECK-NEXT: [[TMP:%.*]] = load i64* @_ZN5Casts2paE, align 8
-  // CHECK-NEXT: [[ADJ:%.*]] = add nsw i64 [[TMP]], 4
-  // CHECK-NEXT: [[ISNULL:%.*]] = icmp eq i64 [[TMP]], -1
-  // CHECK-NEXT: [[RES:%.*]] = select i1 [[ISNULL]], i64 [[TMP]], i64 [[ADJ]]
-  // CHECK-NEXT: store i64 [[RES]], i64* @_ZN5Casts2pcE
-  pc = pa;
-
-  // CHECK-NEXT: [[TMP:%.*]] = load i64* @_ZN5Casts2pcE, align 8
-  // CHECK-NEXT: [[ADJ:%.*]] = sub nsw i64 [[TMP]], 4
-  // CHECK-NEXT: [[ISNULL:%.*]] = icmp eq i64 [[TMP]], -1
-  // CHECK-NEXT: [[RES:%.*]] = select i1 [[ISNULL]], i64 [[TMP]], i64 [[ADJ]]
-  // CHECK-NEXT: store i64 [[RES]], i64* @_ZN5Casts2paE
-  pa = static_cast<int A::*>(pc);
-}
-
-}
-
-// Comparisons
-namespace Comparisons {
-  void f() {
-    int A::*a;
-
-    // CHECK: icmp ne i64 {{.*}}, -1
-    if (a) { }
-
-    // CHECK: icmp ne i64 {{.*}}, -1
-    if (a != 0) { }
-    
-    // CHECK: icmp ne i64 -1, {{.*}}
-    if (0 != a) { }
-
-    // CHECK: icmp eq i64 {{.*}}, -1
-    if (a == 0) { }
-
-    // CHECK: icmp eq i64 -1, {{.*}}
-    if (0 == a) { }
-  }
-}
-
-namespace ValueInit {
-
-struct A {
-  int A::*a;
-
-  char c;
-
-  A();
-};
-
-// CHECK: define void @_ZN9ValueInit1AC2Ev(%"struct.ValueInit::A"* %this) unnamed_addr
-// CHECK: store i64 -1, i64*
-// CHECK: ret void
-A::A() : a() {}
-
-}
-
-namespace PR7139 {
-
-struct pair {
-  int first;
-  int second;
-};
-
-typedef int pair::*ptr_to_member_type;
-
-struct ptr_to_member_struct { 
-  ptr_to_member_type data;
-  int i;
-};
-
-struct A {
-  ptr_to_member_struct a;
-
-  A() : a() {}
-};
-
-// CHECK-O3: define zeroext i1 @_ZN6PR71395checkEv() [[NUW:#[0-9]+]]
-bool check() {
-  // CHECK-O3: ret i1 true
-  return A().a.data == 0;
-}
-
-// CHECK-O3: define zeroext i1 @_ZN6PR71396check2Ev() [[NUW]]
-bool check2() {
-  // CHECK-O3: ret i1 true
-  return ptr_to_member_type() == 0;
-}
-
-}
-
-namespace VirtualBases {
-
-struct A {
-  char c;
-  int A::*i;
-};
-
-// CHECK-GLOBAL: @_ZN12VirtualBases1bE = global %"struct.VirtualBases::B" { i32 (...)** null, %"struct.VirtualBases::A" { i8 0, i64 -1 } }, align 8
-struct B : virtual A { };
-B b;
-
-// CHECK-GLOBAL: @_ZN12VirtualBases1cE = global %"struct.VirtualBases::C" { i32 (...)** null, i64 -1, %"struct.VirtualBases::A" { i8 0, i64 -1 } }, align 8
-struct C : virtual A { int A::*i; };
-C c;
-
-// CHECK-GLOBAL: @_ZN12VirtualBases1dE = global %"struct.VirtualBases::D" { %"struct.VirtualBases::C.base" { i32 (...)** null, i64 -1 }, i64 -1, %"struct.VirtualBases::A" { i8 0, i64 -1 } }, align 8
-struct D : C { int A::*i; };
-D d;
-
-}
-
-namespace Test1 {
-
-// Don't crash when A contains a bit-field.
-struct A {
-  int A::* a;
-  int b : 10;
-};
-A a;
-
-}
-
-namespace BoolPtrToMember {
-  struct X {
-    bool member;
-  };
-
-  // CHECK: define i8* @_ZN15BoolPtrToMember1fERNS_1XEMS0_b
-  bool &f(X &x, bool X::*member) {
-    // CHECK: {{bitcast.* to i8\*}}
-    // CHECK-NEXT: getelementptr inbounds i8*
-    // CHECK-NEXT: ret i8*
-    return x.*member;
-  }
-}
-
-namespace PR8507 {
-  
-struct S;
-void f(S* p, double S::*pm) {
-  if (0 < p->*pm) {
-  }
-}
-
-}
-
-namespace test4 {
-  struct A             { int A_i; };
-  struct B : virtual A { int A::*B_p; };
-  struct C : virtual B { int    *C_p; };
-  struct D :         C { int    *D_p; };
-
-  // CHECK-GLOBAL: @_ZN5test41dE = global %"struct.test4::D" { %"struct.test4::C.base" zeroinitializer, i32* null, %"struct.test4::B.base" { i32 (...)** null, i64 -1 }, %"struct.test4::A" zeroinitializer }, align 8
-  D d;
-}
-
-namespace PR11487 {
-  union U
-  {
-    int U::* mptr;
-    char x[16];
-  } x;
-  // CHECK-GLOBAL: @_ZN7PR114871xE = global %"union.PR11487::U" { i64 -1, [8 x i8] zeroinitializer }, align 8
-  
-}
-
-namespace PR13097 {
-  struct X { int x; X(const X&); };
-  struct A {
-    int qq;
-      X x;
-  };
-  A f();
-  X g() { return f().*&A::x; }
-  // CHECK: define void @_ZN7PR130971gEv
-  // CHECK: call void @_ZN7PR130971fEv
-  // CHECK-NOT: memcpy
-  // CHECK: call void @_ZN7PR130971XC1ERKS0_
-}
-
-// CHECK-O3: attributes [[NUW]] = { nounwind readnone{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr11676.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr11676.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr11676.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -emit-llvm-only
-// CHECK that we don't crash.
-
-// PR11676's example is ill-formed:
-/*
-union _XEvent {
-};
-void ProcessEvent() {
-  _XEvent pluginEvent = _XEvent();
-}
-*/
-
-// Example from PR11665:
-void f() {
-  union U { int field; } u = U();
-  (void)U().field;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr11797.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr11797.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr11797.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -fvisibility hidden -emit-llvm -o - | FileCheck %s
-
-namespace std __attribute__ ((__visibility__ ("default"))) {}
-#pragma GCC visibility push(default)
-void foo() {
-}
-#pragma GCC visibility pop
-// CHECK: define void @_Z3foov()

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12104.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12104.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12104.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -include %S/pr12104.h %s -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 -x c++ -emit-pch -o %t %S/pr12104.h
-// RUN: %clang_cc1 -include-pch %t %s -emit-llvm -o - | FileCheck %s
-
-template struct Patch<1>;
-
-// CHECK: _ZN5PatchILi1EE11no_neighborE

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12104.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12104.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12104.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-template <int dimm> struct Patch {
-  static const unsigned int no_neighbor = 1;
-};
-template <int dim>
-const unsigned int Patch<dim>::no_neighbor;
-void f(const unsigned int);
-void g() {
-  f(Patch<1>::no_neighbor);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12251.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12251.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr12251.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,146 +0,0 @@
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -O1 -relaxed-aliasing -fstrict-enums -std=c++11 -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -O1 -relaxed-aliasing -std=c++11 -o - | FileCheck --check-prefix=NO-STRICT-ENUMS %s
-
-bool f(bool *x) {
-  return *x;
-}
-// CHECK: define zeroext i1 @_Z1fPb
-// CHECK: load i8* %{{.*}}, align 1, !range !0
-
-// Only enum-tests follow. Ensure that after the bool test, no further range
-// metadata shows up when strict enums are disabled.
-// NO-STRICT-ENUMS: define zeroext i1 @_Z1fPb
-// NO-STRICT-ENUMS: load i8* %{{.*}}, align 1, !range !0
-// NO-STRICT-ENUMS-NOT: !range
-
-enum e1 { };
-e1 g1(e1 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g1P2e1
-// CHECK: load i32* %x, align 4, !range !1
-
-enum e2 { e2_a = 0 };
-e2 g2(e2 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g2P2e2
-// CHECK: load i32* %x, align 4, !range !1
-
-enum e3 { e3_a = 16 };
-e3 g3(e3 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g3P2e3
-// CHECK: load i32* %x, align 4, !range !2
-
-enum e4 { e4_a = -16};
-e4 g4(e4 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g4P2e4
-// CHECK: load i32* %x, align 4, !range !3
-
-enum e5 { e5_a = -16, e5_b = 16};
-e5 g5(e5 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g5P2e5
-// CHECK: load i32* %x, align 4, !range !4
-
-enum e6 { e6_a = -1 };
-e6 g6(e6 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g6P2e6
-// CHECK: load i32* %x, align 4, !range !5
-
-enum e7 { e7_a = -16, e7_b = 2};
-e7 g7(e7 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g7P2e7
-// CHECK: load i32* %x, align 4, !range !3
-
-enum e8 { e8_a = -17};
-e8 g8(e8 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g8P2e8
-// CHECK: load i32* %x, align 4, !range !4
-
-enum e9 { e9_a = 17};
-e9 g9(e9 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z2g9P2e9
-// CHECK: load i32* %x, align 4, !range !2
-
-enum e10 { e10_a = -16, e10_b = 32};
-e10 g10(e10 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z3g10P3e10
-// CHECK: load i32* %x, align 4, !range !6
-
-enum e11 {e11_a = 4294967296 };
-enum e11 g11(enum e11 *x) {
-  return *x;
-}
-// CHECK: define i64 @_Z3g11P3e11
-// CHECK: load i64* %x, align {{[84]}}, !range !7
-
-enum e12 {e12_a = 9223372036854775808U };
-enum e12 g12(enum e12 *x) {
-  return *x;
-}
-// CHECK: define i64 @_Z3g12P3e12
-// CHECK: load i64* %x, align {{[84]}}
-// CHECK-NOT: range
-// CHECK: ret
-
-enum e13 : char {e13_a = -1 };
-e13 g13(e13 *x) {
-  return *x;
-}
-// CHECK: define signext i8 @_Z3g13P3e13
-// CHECK: load i8* %x, align 1
-// CHECK-NOT: range
-// CHECK: ret
-
-enum class e14 {e14_a = 1};
-e14 g14(e14 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z3g14P3e14
-// CHECK: load i32* %x, align 4
-// CHECK-NOT: range
-// CHECK: ret
-
-enum e15 { e15_a = 2147483648 };
-e15 g15(e15 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z3g15P3e15
-// CHECK: load i32* %x, align 4
-// CHECK-NOT: range
-// CHECK: ret
-
-enum e16 { e16_a = -2147483648 };
-e16 g16(e16 *x) {
-  return *x;
-}
-// CHECK: define i32 @_Z3g16P3e16
-// CHECK: load i32* %x, align 4
-// CHECK-NOT: range
-// CHECK: ret
-
-
-// CHECK: !0 = metadata !{i8 0, i8 2}
-// CHECK: !1 = metadata !{i32 0, i32 1}
-// CHECK: !2 = metadata !{i32 0, i32 32}
-// CHECK: !3 = metadata !{i32 -16, i32 16}
-// CHECK: !4 = metadata !{i32 -32, i32 32}
-// CHECK: !5 = metadata !{i32 -1, i32 1}
-// CHECK: !6 = metadata !{i32 -64, i32 64}
-// CHECK: !7 = metadata !{i64 0, i64 8589934592}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr13396.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr13396.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr13396.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu %s -emit-llvm -o - | FileCheck %s
-struct foo {
-  template<typename T>
-  __attribute__ ((regparm (3))) foo(T x) {}
-  __attribute__ ((regparm (3))) foo();
-  __attribute__ ((regparm (3))) ~foo();
-};
-
-foo::foo() {
-  // CHECK: define void @_ZN3fooC1Ev(%struct.foo* inreg %this)
-  // CHECK: define void @_ZN3fooC2Ev(%struct.foo* inreg %this)
-}
-
-foo::~foo() {
-  // CHECK: define void @_ZN3fooD1Ev(%struct.foo* inreg %this)
-  // CHECK: define void @_ZN3fooD2Ev(%struct.foo* inreg %this)
-}
-
-void dummy() {
-  // FIXME: how can we explicitly instantiate a template constructor? Gcc and
-  // older clangs accept:
-  // template foo::foo(int x);
-  foo x(10);
-  // CHECK: define linkonce_odr void @_ZN3fooC1IiEET_(%struct.foo* inreg %this, i32 inreg %x)
-  // CHECK: define linkonce_odr void @_ZN3fooC2IiEET_(%struct.foo* inreg %this, i32 inreg %x)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr15753.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr15753.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr15753.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-template <typename T> static int Foo(T t);
-template <typename T>
-int Foo(T t) {
-  return t;
-}
-template<> int Foo<int>(int i) {
-  return i;
-}
-
-// CHECK-NOT: define

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr9130.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr9130.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr9130.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-class nsOggCodecState {
-  virtual int StartTime() {
-    return -1;
-  }
-};
-class nsVorbisState : public nsOggCodecState {
-  virtual ~nsVorbisState();
-};
-nsVorbisState::~nsVorbisState() {
-}
-
-// CHECK: define linkonce_odr i32 @_ZN15nsOggCodecState9StartTimeEv

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr9965.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr9965.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pr9965.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -o - %s | FileCheck %s
-struct A { A(); };
-template<typename T>
-struct X : A // default constructor is not trivial
-{
-    X() = default;
-    ~X() {} // not a literal type
-};
-
-X<int> x;
-// CHECK: define internal void @__cxx_global_var_init()
-// CHECK: call {{.*}} @_ZN1XIiEC1Ev
-// CHECK: define linkonce_odr {{.*}} @_ZN1XIiEC1Ev
-// CHECK: define linkonce_odr {{.*}} @_ZN1XIiEC2Ev

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-pack-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-pack-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-pack-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.7.2 %s -emit-llvm -o - | FileCheck %s
-// <rdar://problem/10551376>
-
-struct FOO {
-	unsigned int x;
-};
-
-#pragma pack(push, 2)
-
-// CHECK: %struct.BAR = type <{ %struct.FOO, i8, i8 }>
-struct BAR : FOO {
-	char y;
-};
-
-#pragma pack(pop)
-
-BAR* x = 0;
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-pack.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-pack.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-pack.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -triple=i686-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-struct Base {
-  virtual ~Base();
-  int x;
-};
-
-#pragma pack(1)
-struct Sub : virtual Base {
-  char c;
-};
-
-// CHECK: %struct.Sub = type <{ i32 (...)**, i8, %struct.Base }>
-void f(Sub*) { }
-
-static int i[sizeof(Sub) == 13 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-visibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-visibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-visibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-#pragma GCC visibility push(hidden)
-struct x {
-  static int y;
-};
-#pragma GCC visibility pop
-int x::y = 10;
-// CHECK: @_ZN1x1yE = hidden global
-
-#pragma GCC visibility push(hidden)
-struct __attribute((visibility("default"))) x2 {
-  static int y;
-};
-int x2::y = 10;
-// CHECK: @_ZN2x21yE = global
-#pragma GCC visibility pop
-
-#pragma GCC visibility push(hidden)
-template<class T> struct x4 {
-  static int y;
-};
-#pragma GCC visibility pop
-template<> int x4<int>::y = 10;
-// CHECK: @_ZN2x4IiE1yE = hidden global i32
-
-#pragma GCC visibility push(hidden)
-template<int x> int f() { return x; }
-extern "C" int g() { return f<3>(); }
-#pragma GCC visibility pop
-// CHECK: define hidden i32 @g()
-// CHECK: define linkonce_odr hidden i32 @_Z1fILi3EEiv()
-
-#pragma GCC visibility push(hidden)
-template<class T> struct x5 {
-  void y();
-};
-#pragma GCC visibility pop
-template<> void x5<int>::y() {}
-// CHECK: define hidden void @_ZN2x5IiE1yEv
-
-#pragma GCC visibility push(hidden)
-namespace n __attribute((visibility("default"))) {
-  void f() {}
-  // CHECK: define void @_ZN1n1fEv
-}
-#pragma GCC visibility pop
-
-namespace n __attribute((visibility("default")))  {
-#pragma GCC visibility push(hidden)
-  void g() {}
-  // CHECK: define hidden void @_ZN1n1gEv
-#pragma GCC visibility pop
-}
-
-namespace test2 {
-#pragma GCC visibility push(default)
-#pragma GCC visibility push(hidden)
-  struct foo { // foo is hidden
-  };
-#pragma GCC visibility pop
-  struct foo; // declaration is ok, we ignore the default in the stack
-  template<typename T>
-  struct bar { // bar is default
-    static void f(){}
-  };
-#pragma GCC visibility pop
-  void zed() {
-    bar<foo>::f();
-    bar<int>::f();
-  }
-  // CHECK: define linkonce_odr hidden void @_ZN5test23barINS_3fooEE1fEv
-  // CHECK: define linkonce_odr void @_ZN5test23barIiE1fEv
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-weak.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-weak.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/pragma-weak.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-
-#pragma weak zex
-int zex;
-// GCC produces a weak symbol for this because it matches mangled names.
-// Different c++ ABIs may or may not mangle this, so we produce a strong
-// symbol.
-// CHECK: @zex = global i32
-
-#pragma weak foo
-struct S {  void foo(); };
-void S::foo() {}
-// CHECK: define void @_ZN1S3fooEv(
-
-#pragma weak zed
-namespace bar {  void zed() {} }
-// CHECK: define void @_ZN3bar3zedEv(
-
-#pragma weak bah
-void bah() {}
-// CHECK: define void @_Z3bahv(
-
-#pragma weak baz
-extern "C" void baz() {}
-// CHECK: define weak void @baz(
-
-#pragma weak _Z3baxv
-void bax() {}
-// GCC produces a weak symbol for this one, but it doesn't look like a good
-// idea to expose the mangling to the pragma unless we really have to.
-// CHECK: define void @_Z3baxv(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/predefined-expr-sizeof.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/predefined-expr-sizeof.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/predefined-expr-sizeof.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: store i32 59, i32* %size
-// CHECK: store i32 65, i32* %size
-template<typename T>
-class TemplateClass {
-public:
-  void templateClassFunction() {
-    int size = sizeof(__PRETTY_FUNCTION__);
-  }
-};
-
-// CHECK: store i32 35, i32* %size
-// CHECK: store i32 38, i32* %size
-template<typename T>
-void functionTemplate(T t) {
-  int size = sizeof(__PRETTY_FUNCTION__);
-}
-
-int main() {
-  TemplateClass<int> t1;
-  t1.templateClassFunction();
-  TemplateClass<double> t2;
-  t2.templateClassFunction();
-
-  functionTemplate<int>(0);
-  functionTemplate(0.0);
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/predefined-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/predefined-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/predefined-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,517 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: private unnamed_addr constant [15 x i8] c"externFunction\00"
-// CHECK: private unnamed_addr constant [26 x i8] c"void NS::externFunction()\00"
-// CHECK: private unnamed_addr constant [49 x i8] c"void functionTemplateExplicitSpecialization(int)\00"
-
-// CHECK: private unnamed_addr constant [95 x i8] c"void SpecializedClassTemplate<char>::memberFunctionTemplate(T, U) const [T = char, U = double]\00"
-// CHECK: private unnamed_addr constant [85 x i8] c"void SpecializedClassTemplate<int>::memberFunctionTemplate(int, U) const [U = float]\00"
-// CHECK: private unnamed_addr constant [57 x i8] c"void NonTypeTemplateParam<42>::size() const [Count = 42]\00"
-// CHECK: private unnamed_addr constant [122 x i8] c"static void ClassWithTemplateTemplateParam<char, NS::ClassTemplate>::staticMember() [T = char, Param = NS::ClassTemplate]\00"
-// CHECK: private unnamed_addr constant [106 x i8] c"void OuterClass<int *>::MiddleClass::InnerClass<float>::memberFunction(T, U) const [T = int *, U = float]\00"
-// CHECK: private unnamed_addr constant [65 x i8] c"void functionTemplateWithUnnamedTemplateParameter(T) [T = float]\00"
-
-// CHECK: private unnamed_addr constant [60 x i8] c"void functionTemplateExplicitSpecialization(T) [T = double]\00"
-// CHECK: private unnamed_addr constant [52 x i8] c"T *functionTemplateWithCompoundTypes(T *) [T = int]\00" 
-// CHECK: private unnamed_addr constant [54 x i8] c"T functionTemplateWithTemplateReturnType() [T = char]\00"
-// CHECK: private unnamed_addr constant [57 x i8] c"void functionTemplateWithoutParameterList() [T = double]\00"
-// CHECK: private unnamed_addr constant [62 x i8] c"void functionTemplateWithTwoParams(T, U) [T = int, U = float]\00"
-
-// CHECK: private unnamed_addr constant [22 x i8] c"classTemplateFunction\00"
-// CHECK: private unnamed_addr constant [77 x i8] c"void NS::ClassTemplate<NS::Base *>::classTemplateFunction() [T = NS::Base *]\00"
-// CHECK: private unnamed_addr constant [63 x i8] c"void NS::ClassTemplate<int>::classTemplateFunction() [T = int]\00"
-
-// CHECK: private unnamed_addr constant [18 x i8] c"functionTemplate1\00"
-// CHECK: private unnamed_addr constant [53 x i8] c"void NS::Base::functionTemplate1(T) [T = NS::Base *]\00"
-// CHECK: private unnamed_addr constant [46 x i8] c"void NS::Base::functionTemplate1(T) [T = int]\00"
-
-// CHECK: private unnamed_addr constant [23 x i8] c"anonymousUnionFunction\00"
-// CHECK: private unnamed_addr constant [83 x i8] c"void NS::ContainerForAnonymousRecords::<anonymous union>::anonymousUnionFunction()\00"
-
-// CHECK: private unnamed_addr constant [24 x i8] c"anonymousStructFunction\00"
-// CHECK: private unnamed_addr constant [85 x i8] c"void NS::ContainerForAnonymousRecords::<anonymous struct>::anonymousStructFunction()\00"
-
-// CHECK: private unnamed_addr constant [23 x i8] c"anonymousClassFunction\00"
-// CHECK: private unnamed_addr constant [83 x i8] c"void NS::ContainerForAnonymousRecords::<anonymous class>::anonymousClassFunction()\00"
-
-// CHECK: private unnamed_addr constant [12 x i8] c"~Destructor\00"
-// CHECK: private unnamed_addr constant [30 x i8] c"NS::Destructor::~Destructor()\00"
-
-// CHECK: private unnamed_addr constant [12 x i8] c"Constructor\00"
-// CHECK: private unnamed_addr constant [41 x i8] c"NS::Constructor::Constructor(NS::Base *)\00"
-// CHECK: private unnamed_addr constant [34 x i8] c"NS::Constructor::Constructor(int)\00"
-// CHECK: private unnamed_addr constant [31 x i8] c"NS::Constructor::Constructor()\00"
-
-// CHECK: private unnamed_addr constant [16 x i8] c"virtualFunction\00"
-// CHECK: private unnamed_addr constant [44 x i8] c"virtual void NS::Derived::virtualFunction()\00"
-
-// CHECK: private unnamed_addr constant [21 x i8] c"refQualifiedFunction\00"
-// CHECK: private unnamed_addr constant [41 x i8] c"void NS::Base::refQualifiedFunction() &&\00"
-// CHECK: private unnamed_addr constant [40 x i8] c"void NS::Base::refQualifiedFunction() &\00"
-
-// CHECK: private unnamed_addr constant [22 x i8] c"constVolatileFunction\00"
-// CHECK: private unnamed_addr constant [54 x i8] c"void NS::Base::constVolatileFunction() const volatile\00"
-
-// CHECK: private unnamed_addr constant [17 x i8] c"volatileFunction\00"
-// CHECK: private unnamed_addr constant [43 x i8] c"void NS::Base::volatileFunction() volatile\00"
-
-// CHECK: private unnamed_addr constant [14 x i8] c"constFunction\00"
-// CHECK: private unnamed_addr constant [37 x i8] c"void NS::Base::constFunction() const\00"
-
-// CHECK: private unnamed_addr constant [26 x i8] c"functionReturingTemplate2\00"
-// CHECK: private unnamed_addr constant [64 x i8] c"ClassTemplate<NS::Base *> NS::Base::functionReturingTemplate2()\00"
-
-// CHECK: private unnamed_addr constant [26 x i8] c"functionReturingTemplate1\00"
-// CHECK: private unnamed_addr constant [57 x i8] c"ClassTemplate<int> NS::Base::functionReturingTemplate1()\00"
-
-// CHECK: private unnamed_addr constant [23 x i8] c"withTemplateParameter2\00"
-// CHECK: private unnamed_addr constant [65 x i8] c"void NS::Base::withTemplateParameter2(ClassTemplate<NS::Base *>)\00"
-
-// CHECK: private unnamed_addr constant [23 x i8] c"withTemplateParameter1\00"
-// CHECK: private unnamed_addr constant [58 x i8] c"void NS::Base::withTemplateParameter1(ClassTemplate<int>)\00"
-
-// CHECK: private unnamed_addr constant [23 x i8] c"functionReturningClass\00"
-// CHECK: private unnamed_addr constant [45 x i8] c"NS::Base *NS::Base::functionReturningClass()\00"
-
-// CHECK: private unnamed_addr constant [23 x i8] c"functionWithParameters\00"
-// CHECK: private unnamed_addr constant [64 x i8] c"void NS::Base::functionWithParameters(int, float *, NS::Base *)\00"
-
-// CHECK: private unnamed_addr constant [17 x i8] c"variadicFunction\00"
-// CHECK: private unnamed_addr constant [42 x i8] c"void NS::Base::variadicFunction(int, ...)\00"
-
-// CHECK: private unnamed_addr constant [41 x i8] c"virtual void NS::Base::virtualFunction()\00"
-
-// CHECK: private unnamed_addr constant [15 x i8] c"inlineFunction\00"
-// CHECK: private unnamed_addr constant [32 x i8] c"void NS::Base::inlineFunction()\00"
-
-// CHECK: private unnamed_addr constant [15 x i8] c"staticFunction\00"
-// CHECK: private unnamed_addr constant [39 x i8] c"static void NS::Base::staticFunction()\00"
-
-// CHECK: private unnamed_addr constant [26 x i8] c"topLevelNamespaceFunction\00"
-// CHECK: private unnamed_addr constant [59 x i8] c"void ClassInTopLevelNamespace::topLevelNamespaceFunction()\00"
-
-// CHECK: private unnamed_addr constant [27 x i8] c"anonymousNamespaceFunction\00"
-// CHECK: private unnamed_addr constant [84 x i8] c"void <anonymous namespace>::ClassInAnonymousNamespace::anonymousNamespaceFunction()\00"
-
-// CHECK: private unnamed_addr constant [19 x i8] c"localClassFunction\00"
-// CHECK: private unnamed_addr constant [59 x i8] c"void NS::localClass(int)::LocalClass::localClassFunction()\00"
-
-
-
-int printf(const char * _Format, ...);
-
-class ClassInTopLevelNamespace {
-public:
-  void topLevelNamespaceFunction() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-namespace {
-
-  class ClassInAnonymousNamespace {
-  public:
-    void anonymousNamespaceFunction() {
-      printf("__func__ %s\n", __func__);
-      printf("__FUNCTION__ %s\n", __FUNCTION__);
-      printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-    }
-  };
-
-} // end anonymous namespace
-
-namespace NS {
-
-template<typename T>
-class ClassTemplate {
-public:
-  void classTemplateFunction() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-class Base {
-public:
-  static void staticFunction() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  inline void (inlineFunction)() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  virtual void virtualFunction() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  void functionWithParameters(int, float*, Base* base) {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  Base *functionReturningClass() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-    return 0;
-  }
-
-  void variadicFunction(int, ...) {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  void withTemplateParameter1(ClassTemplate<int>) {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  void withTemplateParameter2(ClassTemplate<Base *>) {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  ClassTemplate<int> functionReturingTemplate1() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-    return ClassTemplate<int>();
-  }
-
-  ClassTemplate<Base *> functionReturingTemplate2() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-    return ClassTemplate<Base *>();
-  }
-
-  template<typename T>
-  void functionTemplate1(T t) {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  void constFunction() const {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  void volatileFunction() volatile {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-  
-  void constVolatileFunction() const volatile {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  void refQualifiedFunction() & {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  void refQualifiedFunction() && {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-class Derived : public Base {
-public:
-  // Virtual function without being explicitly written.
-  void virtualFunction() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-class Constructor {
-public:
-  Constructor() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  Constructor(int) {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-
-  Constructor(Base *) {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-class Destructor {
-public:
-  ~Destructor() {
-    printf("__func__ %s\n", __func__);
-    printf("__FUNCTION__ %s\n", __FUNCTION__);
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-class ContainerForAnonymousRecords {
-public:
-  class {
-  public:
-    void anonymousClassFunction() {
-      printf("__func__ %s\n", __func__);
-      printf("__FUNCTION__ %s\n", __FUNCTION__);
-      printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-    }
-  } anonymousClass;
-
-  struct {
-    void anonymousStructFunction() {
-      printf("__func__ %s\n", __func__);
-      printf("__FUNCTION__ %s\n", __FUNCTION__);
-      printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-    }
-  } anonymousStruct;
-
-  union {
-    void anonymousUnionFunction() {
-      printf("__func__ %s\n", __func__);
-      printf("__FUNCTION__ %s\n", __FUNCTION__);
-      printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-    }
-  } anonymousUnion;
-};
-
-void localClass(int) {
-  class LocalClass {
-  public:
-    void localClassFunction() {
-      printf("__func__ %s\n", __func__);
-      printf("__FUNCTION__ %s\n", __FUNCTION__);
-      printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-    }
-  };
-  LocalClass lc;
-  lc.localClassFunction();
-}
-
-extern void externFunction() {
-  printf("__func__ %s\n", __func__);
-  printf("__FUNCTION__ %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-} // end NS namespace
-
-// additional tests for __PRETTY_FUNCTION__
-template <typename T, typename U>
-void functionTemplateWithTwoParams(T, U)
-{
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-template <typename T>
-void functionTemplateWithoutParameterList()
-{
-  T t = T();
-
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-template <typename T>
-T functionTemplateWithTemplateReturnType()
-{
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-
-  return T();
-}
-
-template <typename T>
-T * functionTemplateWithCompoundTypes(T a[])
-{
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-
-  return 0;
-}
-
-template <typename T>
-void functionTemplateExplicitSpecialization(T t)
-{
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-template <>
-void functionTemplateExplicitSpecialization<int>(int i)
-{
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-template <typename, typename T>
-void functionTemplateWithUnnamedTemplateParameter(T t)
-{
-  printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-}
-
-template <typename T>
-class OuterClass
-{
-public:
-  class MiddleClass
-  {
-  public:
-    template <typename U>
-    class InnerClass
-    {
-    public:
-      void memberFunction(T x, U y) const
-      {
-        printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-      }
-    };
-  };
-};
-
-template <typename T, template <typename> class Param = NS::ClassTemplate>
-class ClassWithTemplateTemplateParam
-{
-public:
-  static void staticMember()
-  {
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-template <int Count>
-class NonTypeTemplateParam
-{
-public:
-  void size() const
-  {
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-template <typename T>
-class SpecializedClassTemplate
-{
-public:
-  template <typename U>
-  void memberFunctionTemplate(T t, U u) const
-  {
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-template <>
-class SpecializedClassTemplate<int>
-{
-public:
-  template <typename U>
-  void memberFunctionTemplate(int i, U u) const
-  {
-    printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
-  }
-};
-
-int main() {
-  ClassInAnonymousNamespace anonymousNamespace;
-  anonymousNamespace.anonymousNamespaceFunction();
-
-  ClassInTopLevelNamespace topLevelNamespace;
-  topLevelNamespace.topLevelNamespaceFunction();
-
-  NS::Base::staticFunction();
-  
-  NS::Base b;
-  b.inlineFunction();
-  b.virtualFunction();
-  b.variadicFunction(0);
-  b.functionWithParameters(0, 0, 0);
-  b.functionReturningClass();
-  
-  b.withTemplateParameter1(NS::ClassTemplate<int>());
-  b.withTemplateParameter2(NS::ClassTemplate<NS::Base *>());
-  b.functionReturingTemplate1();
-  b.functionReturingTemplate2();
-  b.functionTemplate1<int>(0);
-  b.functionTemplate1<NS::Base *>(0);
-  b.constFunction();
-  b.volatileFunction();
-  b.constVolatileFunction();
-  b.refQualifiedFunction();
-  NS::Base().refQualifiedFunction();
-
-  NS::Derived d;
-  d.virtualFunction();
-  
-  NS::ClassTemplate<int> t1;
-  t1.classTemplateFunction();
-  NS::ClassTemplate<NS::Base *> t2;
-  t2.classTemplateFunction();
-  
-  NS::Constructor c1;
-  NS::Constructor c2(0);
-  NS::Constructor c3((NS::Base *)0);
-  
-  {
-    NS::Destructor destructor;
-  }
-
-  NS::ContainerForAnonymousRecords anonymous; 
-  anonymous.anonymousClass.anonymousClassFunction();
-  anonymous.anonymousStruct.anonymousStructFunction();
-  anonymous.anonymousUnion.anonymousUnionFunction();
-
-  NS::localClass(0);
-
-  NS::externFunction();
-
-  // additional tests for __PRETTY_FUNCTION__
-
-  functionTemplateWithTwoParams(0, 0.0f);
-  functionTemplateWithoutParameterList<double>();
-  functionTemplateWithTemplateReturnType<char>();
-  int array[] = { 1, 2, 3 };
-  functionTemplateWithCompoundTypes(array);
-  functionTemplateExplicitSpecialization(0);
-  functionTemplateExplicitSpecialization(0.0);
-  functionTemplateWithUnnamedTemplateParameter<int, float>(0.0f);
-
-  OuterClass<int *>::MiddleClass::InnerClass<float> omi;
-  omi.memberFunction(0, 0.0f);
-
-  ClassWithTemplateTemplateParam<char>::staticMember();
-
-  NonTypeTemplateParam<42> ntt;
-  ntt.size();
-
-  SpecializedClassTemplate<int> sct1;
-  sct1.memberFunctionTemplate(0, 0.0f);
-  SpecializedClassTemplate<char> sct2;
-  sct2.memberFunctionTemplate('0', 0.0);
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ptr-to-datamember.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ptr-to-datamember.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ptr-to-datamember.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s
-
-extern "C" int printf(...);
-
-struct F {
-  F() : iF(1), fF(2.0) {}
-  int iF;
-  float fF;
-};
-
-struct V {
-  double d;
-  int iV;
-};
-
-struct B  : virtual V{
-  double d;
-  int iB;
-};
-
-struct B1  : virtual V{
-  double d;
-  int iB1;
-};
-
-class A  : public B, public B1 {
-public:
-  A() : f(1.0), d(2.0), Ai(3) {}
-  float f;
-  double d;
-  int Ai;
-  F Af;
-}; 
-
-template <typename T> struct TT {
-  int T::t::*pti;
-};
-
-struct I {
-  typedef I t;
-  int x;
-};
-
-void pr(const F& b) {
-  printf(" %d %f\n", b.iF, b.fF);
-}
-
-void test_aggr_pdata(A& a1) {
-  F A::* af = &A::Af;
-  pr(a1.*af);
-
-  (a1.*af).iF = 100;
-  (a1.*af).fF = 200.00;
-  printf(" %d %f\n", (a1.*af).iF, (a1.*af).fF);
-  pr(a1.*af);
-
-  (a1.*af).iF++;
-  (a1.*af).fF--;
-  --(a1.*af).fF;
-  pr(a1.*af);
-}
-
-void test_aggr_pdata_1(A* pa) {
-  F A::* af = &A::Af;
-  pr(pa->*af);
-
-  (pa->*af).iF = 100;
-  (pa->*af).fF = 200.00;
-  printf(" %d %f\n", (pa->*af).iF, (pa->*af).fF);
-  pr(pa->*af);
-
-  (pa->*af).iF++;
-  (pa->*af).fF--;
-  --(pa->*af).fF;
-  pr(pa->*af);
-}
-
-int main() 
-{
-  A a1;
-  TT<I> tt;
-  I i;
-  int A::* pa = &A::Ai;
-  float A::* pf = &A::f;
-  double A::* pd = &A::d;
-  tt.pti = &I::x;
-  printf("%d %d %d\n", &A::Ai, &A::f, &A::d);
-  printf("%d\n", &A::B::iB);
-  printf("%d\n", &A::B1::iB1);
-  printf("%d\n", &A::f);
-  printf("%d\n", &A::B::iV);
-  printf("%d\n", &A::B1::iV);
-  printf("%d\n", &A::B::V::iV);
-  printf("%d\n", &A::B1::V::iV);
-  printf("%d, %f, %f  \n", a1.*pa, a1.*pf, a1.*pd);
-  printf("%d\n", i.*tt.pti);
-  test_aggr_pdata(a1);
-  test_aggr_pdata_1(&a1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ptr-to-member-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ptr-to-member-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/ptr-to-member-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-// 13.3.3.2 Ranking implicit conversion sequences
-
-extern "C" int printf(...);
-
-struct A {
-int Ai;
-bool foo(int* arg) const;
-}; 
-
-bool A::foo(int* arg) const {
-    printf("A::foo(%d)\n", *arg);
-    return true;
-}
-
-struct B : public A {
-  void bf() { printf("B::bf called\n"); }
-}; 
-
-struct C : public B { }; 
-
-// conversion of B::* to C::* is better than conversion of A::* to C::*
-typedef void (A::*pmfa)();
-typedef void (B::*pmfb)();
-typedef void (C::*pmfc)();
-
-struct X {
-	operator pmfa();
-	operator pmfb() {
-	  return &B::bf;
-        }
-};
-
-
-void g(pmfc pm) {
-  C c;
-  (c.*pm)();
-}
-
-void test2(X x) 
-{
-    g(x);
-}
-
-struct B1 {
-  bool (A::*pmf)(int*) const;
-
-  B1(int i) : pmf(&A::foo), im(i) {
-    ((A*)this->*pmf)(&im);
-  }
-
-  int im;
-};
-
-int main()
-{
-	X x;
-	test2(x);
-        B1 b = B1(1);
-  	B1 c = B1(2);
-}
-
-// CHECK-LP64: callq	__ZN1XcvM1BFvvEEv
-// CHECK-LP64: callq	__Z1gM1CFvvE
-
-// CHECK-LP32: calll	L__ZN1XcvM1BFvvEEv
-// CHECK-LP32: calll	__Z1gM1CFvvE

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-bind-default-argument.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-bind-default-argument.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-bind-default-argument.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only -verify
-// expected-no-diagnostics
-
-struct A {};
-struct B : A {};
-void a(const A& x = B());
-void b() { a(); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,196 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10 -o - %s | FileCheck %s
-
-// PR6024
-extern int i;
-
-// CHECK: define i32* @_Z16lvalue_noop_castv() [[NUW:#[0-9]+]]
-const int &lvalue_noop_cast() {
-  if (i == 0)
-    // CHECK: store i32 17, i32*
-    return (const int&)17;
-  else if (i == 1)
-    // CHECK: store i32 17, i32*
-    return static_cast<const int&>(17);
-    // CHECK: store i32 17, i32*
-  return 17;
-}
-
-// CHECK: define i16* @_Z20lvalue_integral_castv() 
-const short &lvalue_integral_cast() {
-  if (i == 0)
-    // CHECK: store i16 17, i16*
-    return (const short&)17;
-  else if (i == 1)
-    // CHECK: store i16 17, i16*
-    return static_cast<const short&>(17);
-  // CHECK: store i16 17, i16*
-  return 17;
-}
-
-// CHECK: define i16* @_Z29lvalue_floating_integral_castv()
-const short &lvalue_floating_integral_cast() {
-  if (i == 0)
-    // CHECK: store i16 17, i16*
-    return (const short&)17.5;
-  else if (i == 1)
-    // CHECK: store i16 17, i16*
-    return static_cast<const short&>(17.5);
-  // CHECK: store i16 17, i16*
-  return 17.5;
-}
-
-// CHECK: define float* @_Z29lvalue_integral_floating_castv()
-const float &lvalue_integral_floating_cast() {
-  if (i == 0)
-    // CHECK: store float 1.700000e+{{0*}}1, float*
-    return (const float&)17;
-  else if (i == 1)
-    // CHECK: store float 1.700000e+{{0*}}1, float*
-    return static_cast<const float&>(17);
-  // CHECK: store float 1.700000e+{{0*}}1, float*
-  return 17;
-}
-
-// CHECK: define float* @_Z20lvalue_floating_castv()
-const float &lvalue_floating_cast() {
-  if (i == 0)
-    // CHECK: store float 1.700000e+{{0*}}1, float*
-    return (const float&)17.0;
-  else if (i == 1)
-    // CHECK: store float 1.700000e+{{0*}}1, float*
-    return static_cast<const float&>(17.0);
-  // CHECK: store float 1.700000e+{{0*}}1, float*
-  return 17.0;
-}
-
-int get_int();
-
-// CHECK: define i8* @_Z24lvalue_integer_bool_castv()
-const bool &lvalue_integer_bool_cast() {
-  if (i == 0)
-    // CHECK: call i32 @_Z7get_intv()
-    // CHECK: store i8
-    return (const bool&)get_int();
-  else if (i == 1)
-    // CHECK: call i32 @_Z7get_intv()
-    // CHECK: store i8
-    return static_cast<const bool&>(get_int());
-  // CHECK: call i32 @_Z7get_intv()
-  // CHECK: store i8
-  return get_int();
-}
-
-float get_float();
-
-// CHECK: define i8* @_Z25lvalue_floating_bool_castv()
-const bool &lvalue_floating_bool_cast() {
-  if (i == 0)
-    // CHECK: call float @_Z9get_floatv()
-    // CHECK: fcmp une float
-    // CHECK: store i8
-    return (const bool&)get_float();
-  else if (i == 1)
-    // CHECK: call float @_Z9get_floatv()
-    // CHECK: fcmp une float
-    // CHECK: store i8
-    return static_cast<const bool&>(get_float());
-  // CHECK: call float @_Z9get_floatv()
-  // CHECK: fcmp une float
-  // CHECK: store i8
-  return get_float();
-}
-
-struct X { };
-typedef int X::*pm;
-typedef int (X::*pmf)(int);
-
-pm get_pointer_to_member_data();
-pmf get_pointer_to_member_function();
-
-// CHECK: define i8* @_Z26lvalue_ptrmem_to_bool_castv()
-const bool &lvalue_ptrmem_to_bool_cast() {
-  if (i == 0)
-    // CHECK: call i64 @_Z26get_pointer_to_member_datav()
-    // CHECK: store i8
-    // CHECK: store i8*
-    return (const bool&)get_pointer_to_member_data();
-  else if (i == 1)
-    // CHECK: call i64 @_Z26get_pointer_to_member_datav()
-    // CHECK: store i8
-    // CHECK: store i8*
-    return static_cast<const bool&>(get_pointer_to_member_data());
-  // CHECK: call i64 @_Z26get_pointer_to_member_datav()
-  // CHECK: store i8
-  // CHECK: store i8*
-  return get_pointer_to_member_data();
-}
-
-// CHECK: define i8* @_Z27lvalue_ptrmem_to_bool_cast2v
-const bool &lvalue_ptrmem_to_bool_cast2() {
-  if (i == 0)
-    // CHECK: {{call.*_Z30get_pointer_to_member_functionv}}
-    // CHECK: store i8
-    // CHECK: store i8*
-    return (const bool&)get_pointer_to_member_function();
-  else if (i == 1)
-    // CHECK: {{call.*_Z30get_pointer_to_member_functionv}}
-    // CHECK: store i8
-    // CHECK: store i8*
-    return static_cast<const bool&>(get_pointer_to_member_function());
-  // CHECK: {{call.*_Z30get_pointer_to_member_functionv}}
-  // CHECK: store i8
-  // CHECK: store i8*
-  return get_pointer_to_member_function();
-}
-
-_Complex double get_complex_double();
-
-// CHECK: {{define.*_Z2f1v}}
-const _Complex float &f1() {
-  if (i == 0)
-    // CHECK: {{call.*_Z18get_complex_doublev}}
-    // CHECK: fptrunc
-    // CHECK: fptrunc
-    // CHECK: store float
-    // CHECK: store float
-    return (const _Complex float&)get_complex_double();
-  else if (i == 1)
-    // CHECK: {{call.*_Z18get_complex_doublev}}
-    // CHECK: fptrunc
-    // CHECK: fptrunc
-    // CHECK: store float
-    // CHECK: store float
-    return static_cast<const _Complex float&>(get_complex_double());
-  // CHECK: {{call.*_Z18get_complex_doublev}}
-  // CHECK: fptrunc
-  // CHECK: fptrunc
-  // CHECK: store float
-  // CHECK: store float
-  return get_complex_double();
-}
-
-// CHECK: define i32 @_Z7pr10592RKi(i32*
-unsigned pr10592(const int &v) {
-  // CHECK: [[VADDR:%[a-zA-Z0-9.]+]] = alloca i32*
-  // CHECK-NEXT: [[REFTMP:%[a-zA-Z0-9.]+]] = alloca i32
-  // CHECK-NEXT: store i32* [[V:%[a-zA-Z0-9.]+]], i32** [[VADDR]]
-  // CHECK-NEXT: [[VADDR_1:%[a-zA-Z0-9.]+]] = load i32** [[VADDR]]
-  // CHECK-NEXT: [[VVAL:%[a-zA-Z0-9.]+]] = load i32* [[VADDR_1]]
-  // CHECK-NEXT: store i32 [[VVAL]], i32* [[REFTMP]]
-  // CHECK-NEXT: [[VVAL_I:%[a-zA-Z0-9.]+]] = load i32* [[REFTMP]]
-  // CHECK-NEXT: ret i32 [[VVAL_I]]
-  return static_cast<const unsigned &>(v);
-}
-
-namespace PR10650 {
-  struct Helper {
-    unsigned long long id();
-  };
-  unsigned long long test(Helper *obj) {
-    return static_cast<const unsigned long long&>(obj->id());
-  }
-  // CHECK: define i64 @_ZN7PR106504testEPNS_6HelperE
-  // CHECK: store i64
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-field.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-field.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-field.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s -O2 | grep "@_Z1bv"
-
-// Make sure the call to b() doesn't get optimized out.
-extern struct x {char& x,y;}y;
-int b();      
-int a() { if (!&y.x) b(); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-in-block-args.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-in-block-args.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-in-block-args.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t
-// rdar: // 8041962
-
-extern "C" int printf(const char*, ...);
-
-struct ST {
-     int filler; 
-     int referrer;
-};
-
-void OUTER_BLOCK(void (^fixer)(ST& ref)) {
-    ST ref = {2, 100};
-    fixer(ref);
-}
-  
-void INNER_BLOCK(int (^largeDo) ()) {
-	printf("%d\n", largeDo());
-}
-
-void scan() {
-            OUTER_BLOCK(^(ST &ref) {
-                INNER_BLOCK(^() { return ref.referrer + ref.filler; });
-            });
-
-}
-
-int main() {
-    scan();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-in-blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-in-blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-in-blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t
-
-extern "C" int printf(const char*, ...);
-
-template<typename T> class range {
-public:
-T _i;
-        range(T i) {_i = i;};
-        T get() {return _i;};
-};
-
-// rdar: // 7495203
-class A {
-    public:
-	A() : field(10), d1(3.14) {}
-	void F();
-	void S() {
-	  printf(" field = %d\n", field);
-	  printf(" field = %f\n", d1);
-	}
-	int field;
-	double d1;
-};
-
-void A::F()
-    {
-	__block A &tlc = *this;
-	// crashed in code gen (radar 7495203)
-        ^{ tlc.S(); }();
-    }
-
-int main() {
-
-        // works
-        void (^bl)(range<int> ) = ^(range<int> i){printf("Hello Blocks %d\n", i.get()); };
-
-        //crashes in godegen?
-        void (^bl2)(range<int>& ) = ^(range<int>& i){printf("Hello Blocks %d\n", i.get()); };
-
-	A *a = new A;
-	a->F();
-        return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reference-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-// expected-no-diagnostics
-
-struct XPTParamDescriptor {};
-struct nsXPTParamInfo {
-  nsXPTParamInfo(const XPTParamDescriptor& desc);
-};
-void a(XPTParamDescriptor *params) {
-  const nsXPTParamInfo& paramInfo = params[0];
-}
-
-// CodeGen of reference initialized const arrays.
-namespace PR5911 {
-  template <typename T, int N> int f(const T (&a)[N]) { return N; }
-  int iarr[] = { 1 };
-  int test() { return f(iarr); }
-}
-
-// radar 7574896
-struct Foo { int foo; };
-Foo& ignoreSetMutex = *(new Foo);
-
-// Binding to a bit-field that requires a temporary. 
-struct { int bitfield : 3; } s = { 3 };
-const int &s2 = s.bitfield;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/references.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/references.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/references.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,312 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -verify -emit-llvm -o - %s | FileCheck %s
-void t1() {
-  // CHECK: define void @_Z2t1v
-  // CHECK: [[REFLOAD:%.*]] = load i32** @a, align 8
-  // CHECK: load i32* [[REFLOAD]], align 4
-  extern int& a;
-  int b = a; 
-}
-
-void t2(int& a) {
-  // CHECK: define void @_Z2t2Ri
-  // CHECK: [[REFLOAD2:%.*]] = load i32** {{.*}}, align 8
-  // CHECK: load i32* [[REFLOAD2]], align 4
-  int b = a;
-}
-
-int g;
-int& gr = g;
-int& grr = gr;
-void t3() {
-  int b = gr;
-}
-
-// Test reference binding.
-
-struct C { int a; };
-void f(const bool&);
-void f(const int&);
-void f(const _Complex int&);
-void f(const C&);
-
-C aggregate_return();
-
-bool& bool_reference_return();
-int& int_reference_return();
-_Complex int& complex_int_reference_return();
-C& aggregate_reference_return();
-
-void test_bool() {
-  bool a = true;
-  f(a);
-
-  f(true);
-  
-  bool_reference_return() = true;
-  a = bool_reference_return();
-  
-  struct { const bool& b; } b = { true };
-}
-
-void test_scalar() {
-  int a = 10;
-  f(a);
-  
-  struct { int bitfield : 3; } s = { 3 };
-  f(s.bitfield);
-  
-  f(10);
-
-  __attribute((vector_size(16))) typedef int vec4;
-  f((vec4){1,2,3,4}[0]);
-  
-  int_reference_return() = 10;
-  a = int_reference_return();
-  
-  struct { const int& a; } agg = { 10 };
-}
-
-void test_complex() {
-  _Complex int a = 10i;
-  f(a);
-  
-  f(10i);
-  
-  complex_int_reference_return() = 10i;
-  a = complex_int_reference_return();
-  
-  struct { const _Complex int &a; } agg = { 10i };
-}
-
-void test_aggregate() {
-  C c;
-  f(c);
-
-  f(aggregate_return());
-  aggregate_reference_return().a = 10;
-
-  c = aggregate_reference_return();
-  
-  struct { const C& a; } agg = { C() };
-}
-
-int& reference_return() {
-  return g;
-}
-
-int reference_decl() {
-  int& a = g;
-  const int& b = 1;
-  return a+b;
-}
-
-struct A {
-  int& b();
-};
-
-void f(A* a) {
-  int b = a->b();
-}
-
-// PR5122
-void *foo = 0;
-void * const & kFoo = foo;
-
-struct D : C { D(); ~D(); };
-
-void h() {
-  // CHECK: call void @_ZN1DD1Ev
-  const C& c = D();
-}
-
-namespace T {
-  struct A {
-    A();
-    ~A();
-  };
-
-  struct B {
-    B();
-    ~B();
-    A f();
-  };
-
-  void f() {
-    // CHECK: call void @_ZN1T1BC1Ev
-    // CHECK: call void @_ZN1T1B1fEv
-    // CHECK: call void @_ZN1T1BD1Ev
-    const A& a = B().f();
-    // CHECK: call void @_ZN1T1fEv
-    f();
-    // CHECK: call void @_ZN1T1AD1Ev
-  }
-}
-
-// PR5227.
-namespace PR5227 {
-void f(int &a) {
-  (a = 10) = 20;
-}
-}
-
-// PR5590
-struct s0;
-struct s1 { struct s0 &s0; };
-void f0(s1 a) { s1 b = a; }
-
-// PR6024
-// CHECK: @_Z2f2v()
-// CHECK: alloca i32,
-// CHECK-NEXT: store
-// CHECK-NEXT: ret
-const int &f2() { return 0; }
-
-// Don't constant fold const reference parameters with default arguments to
-// their default arguments.
-namespace N1 {
-  const int foo = 1;
-  // CHECK: @_ZN2N14test
-  void test(const int& arg = foo) {
-    // Ensure this array is on the stack where we can set values instead of
-    // being a global constant.
-    // CHECK: %args_array = alloca
-    const int* const args_array[] = { &arg };
-  }
-}
-
-// Bind to subobjects while extending the life of the complete object.
-namespace N2 {
-  class X {
-  public:
-    X(const X&);
-    X &operator=(const X&);
-    ~X();
-  };
-
-  struct P {
-    X first;
-  };
-
-  P getP();
-
-  // CHECK: define void @_ZN2N21fEi
-  // CHECK: call void @_ZN2N24getPEv
-  // CHECK: getelementptr inbounds
-  // CHECK: store i32 17
-  // CHECK: call void @_ZN2N21PD1Ev
-  void f(int i) {
-    const X& xr = getP().first;
-    i = 17;
-  }
-
-  struct SpaceWaster {
-    int i, j;
-  };
-
-  struct ReallyHasX {
-    X x;
-  };
-
-  struct HasX : ReallyHasX { };
-
-  struct HasXContainer {
-    HasX has;
-  };
-
-  struct Y : SpaceWaster, HasXContainer { };
-  struct Z : SpaceWaster, Y { };
-
-  Z getZ();
-
-  // CHECK: define void @_ZN2N21gEi
-  // CHECK: call void @_ZN2N24getZEv
-  // CHECK: {{getelementptr inbounds.*i32 0, i32 0}}
-  // CHECK: {{getelementptr inbounds.*i32 0, i32 0}}
-  // CHECK: store i32 19
-  // CHECK: call void @_ZN2N21ZD1Ev
-  // CHECK: ret void
-  void g(int i) {
-    const X &xr = getZ().has.x;
-    i = 19;    
-  }
-}
-
-namespace N3 {
-
-// PR7326
-
-struct A {
-  explicit A(int);
-  ~A();
-};
-
-// CHECK: define internal void @__cxx_global_var_init
-// CHECK: call void @_ZN2N31AC1Ei(%"struct.N3::A"* @_ZGRN2N35sA123E, i32 123)
-// CHECK: call i32 @__cxa_atexit
-// CHECK: ret void
-const A &sA123 = A(123);
-}
-
-namespace N4 {
-  
-struct A {
-  A();
-  ~A();
-};
-
-void f() {
-  // CHECK: define void @_ZN2N41fEv
-  // CHECK: call void @_ZN2N41AC1Ev(%"struct.N4::A"* @_ZGRZN2N41fEvE2ar)
-  // CHECK: call i32 @__cxa_atexit
-  // CHECK: ret void
-  static const A& ar = A();
-  
-}
-}
-
-// PR9494
-namespace N5 {
-struct AnyS { bool b; };
-void f(const bool&);
-AnyS g();
-void h() {
-  // CHECK: call i8 @_ZN2N51gEv()
-  // CHECK: call void @_ZN2N51fERKb(i8*
-  f(g().b);
-}
-}
-
-// PR9565
-namespace PR9565 {
-  struct a { int a : 10, b : 10; };
-  // CHECK: define void @_ZN6PR95651fEv()
-  void f() {
-    // CHECK: call void @llvm.memcpy
-    a x = { 0, 0 };
-    // CHECK: [[WITH_SEVENTEEN:%[.a-zA-Z0-9]+]] = or i32 [[WITHOUT_SEVENTEEN:%[.a-zA-Z0-9]+]], 17
-    // CHECK: store i32 [[WITH_SEVENTEEN]], i32* [[XA:%[.a-zA-Z0-9]+]]
-    x.a = 17;
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: load
-    // CHECK-NEXT: shl
-    // CHECK-NEXT: ashr
-    // CHECK-NEXT: store i32
-    // CHECK-NEXT: store i32*
-    const int &y = x.a;
-    // CHECK-NEXT: bitcast
-    // CHECK-NEXT: load
-    // CHECK-NEXT: and
-    // CHECK-NEXT: or i32 {{.*}}, 19456
-    // CHECK-NEXT: store i32
-    x.b = 19;
-    // CHECK-NEXT: ret void
-  }
-}
-
-namespace N6 {
-  extern struct x {char& x;}y;
-  int a() { return y.x; }
-  // CHECK: define i32 @_ZN2N61aEv
-  // CHECK: [[REFLOAD3:%.*]] = load i8** getelementptr inbounds (%"struct.N6::x"* @_ZN2N61yE, i32 0, i32 0), align 8
-  // CHECK: load i8* [[REFLOAD3]], align 1
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/regparm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/regparm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/regparm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
-
-
-// CHECK: _Z3fooRi(i32* inreg
-void __attribute__ ((regparm (1)))  foo(int &a) {
-}
-
-struct S1 {
-  int x;
-  S1(const S1 &y);
-};
-
-void __attribute__((regparm(3))) foo2(S1 a, int b);
-// CHECK: declare void @_Z4foo22S1i(%struct.S1* inreg, i32 inreg)
-void bar2(S1 a, int b) {
-  foo2(a, b);
-}
-
-struct S2 {
-  int x;
-};
-
-void __attribute__((regparm(3))) foo3(struct S2 a, int b);
-// CHECK: declare void @_Z4foo32S2i(i32 inreg, i32 inreg)
-void bar3(struct S2 a, int b) {
-  foo3(a, b);
-}
-
-struct S3 {
-  struct {
-    struct {} b[0];
-  } a;
-};
-__attribute((regparm(2))) void foo4(S3 a, int b);
-// CHECK: declare void @_Z4foo42S3i(%struct.S3* byval align 4, i32 inreg)
-void bar3(S3 a, int b) {
-  foo4(a, b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reinterpret-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reinterpret-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/reinterpret-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s -std=c++11
-// REQUIRES: LP64
-
-void *f1(unsigned long l) {
-  return reinterpret_cast<void *>(l);
-}
-
-unsigned long f2() {
-  return reinterpret_cast<unsigned long>(nullptr);
-}
-
-unsigned long f3(void *p) {
-  return reinterpret_cast<unsigned long>(p);
-}
-
-void f4(int*&);
-void f5(void*& u) {
-  f4(reinterpret_cast<int*&>(u));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/return.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/return.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/return.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -O0 -o - %s | FileCheck %s
-// RUN: %clang_cc1 -emit-llvm -O -o - %s | FileCheck %s --check-prefix=CHECK-OPT
-
-// CHECK:     @_Z9no_return
-// CHECK-OPT: @_Z9no_return
-int no_return() {
-  // CHECK:      call void @llvm.trap
-  // CHECK-NEXT: unreachable
-
-  // CHECK-OPT-NOT: call void @llvm.trap
-  // CHECK-OPT:     unreachable
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-fundamental.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-fundamental.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-fundamental.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-#include <typeinfo>
-
-std::type_info foo() {
-  return typeid(void);
-}
-
-namespace __cxxabiv1 {
-  struct __fundamental_type_info {
-    virtual ~__fundamental_type_info();
-  };
-
-  __fundamental_type_info::~__fundamental_type_info() { }
-}
-
-// void
-// CHECK: @_ZTIv = unnamed_addr constant
-// CHECK: @_ZTIPv = unnamed_addr constant
-// CHECK: @_ZTIPKv = unnamed_addr constant
-
-// std::nullptr_t
-// CHECK: @_ZTIDn = unnamed_addr constant
-// CHECK: @_ZTIPDn = unnamed_addr constant
-// CHECK: @_ZTIPKDn = unnamed_addr constant
-
-// bool
-// CHECK: @_ZTIb = unnamed_addr constant
-// CHECK: @_ZTIPb = unnamed_addr constant
-// CHECK: @_ZTIPKb = unnamed_addr constant
-
-// wchar_t
-// CHECK: @_ZTIw = unnamed_addr constant
-// CHECK: @_ZTIPw = unnamed_addr constant
-// CHECK: @_ZTIPKw = unnamed_addr constant
-
-// char
-// CHECK: @_ZTIc = unnamed_addr constant
-// CHECK: @_ZTIPc = unnamed_addr constant
-// CHECK: @_ZTIPKc = unnamed_addr constant
-
-// unsigned char
-// CHECK: @_ZTIh = unnamed_addr constant
-// CHECK: @_ZTIPh = unnamed_addr constant
-// CHECK: @_ZTIPKh = unnamed_addr constant
-
-// signed char
-// CHECK: @_ZTIa = unnamed_addr constant
-// CHECK: @_ZTIPa = unnamed_addr constant
-// CHECK: @_ZTIPKa = unnamed_addr constant
-
-// short
-// CHECK: @_ZTIs = unnamed_addr constant
-// CHECK: @_ZTIPs = unnamed_addr constant
-// CHECK: @_ZTIPKs = unnamed_addr constant
-
-// unsigned short
-// CHECK: @_ZTIt = unnamed_addr constant
-// CHECK: @_ZTIPt = unnamed_addr constant
-// CHECK: @_ZTIPKt = unnamed_addr constant
-
-// int
-// CHECK: @_ZTIi = unnamed_addr constant
-// CHECK: @_ZTIPi = unnamed_addr constant
-// CHECK: @_ZTIPKi = unnamed_addr constant
-
-// unsigned int
-// CHECK: @_ZTIj = unnamed_addr constant
-// CHECK: @_ZTIPj = unnamed_addr constant
-// CHECK: @_ZTIPKj = unnamed_addr constant
-
-// long
-// CHECK: @_ZTIl = unnamed_addr constant
-// CHECK: @_ZTIPl = unnamed_addr constant
-// CHECK: @_ZTIPKl = unnamed_addr constant
-
-// unsigned long
-// CHECK: @_ZTIm = unnamed_addr constant
-// CHECK: @_ZTIPm = unnamed_addr constant
-// CHECK: @_ZTIPKm = unnamed_addr constant
-
-// long long
-// CHECK: @_ZTIx = unnamed_addr constant
-// CHECK: @_ZTIPx = unnamed_addr constant
-// CHECK: @_ZTIPKx = unnamed_addr constant
-
-// unsigned long long
-// CHECK: @_ZTIy = unnamed_addr constant
-// CHECK: @_ZTIPy = unnamed_addr constant
-// CHECK: @_ZTIPKy = unnamed_addr constant
-
-// float
-// CHECK: @_ZTIf = unnamed_addr constant
-// CHECK: @_ZTIPf = unnamed_addr constant
-// CHECK: @_ZTIPKf = unnamed_addr constant
-
-// double
-// CHECK: @_ZTId = unnamed_addr constant
-// CHECK: @_ZTIPd = unnamed_addr constant
-// CHECK: @_ZTIPKd = unnamed_addr constant
-
-// long double
-// CHECK: @_ZTIe = unnamed_addr constant
-// CHECK: @_ZTIPe = unnamed_addr constant
-// CHECK: @_ZTIPKe = unnamed_addr constant
-
-// char16_t
-// CHECK: @_ZTIDs = unnamed_addr constant
-// CHECK: @_ZTIPDs = unnamed_addr constant
-// CHECK: @_ZTIPKDs = unnamed_addr constant
-
-// char32_t
-// CHECK: @_ZTIDi = unnamed_addr constant
-// CHECK: @_ZTIPDi = unnamed_addr constant
-// CHECK: @_ZTIPKDi = unnamed_addr constant
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,205 +0,0 @@
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
-#include <typeinfo>
-
-// vtables.
-extern "C" {
-  const void *_ZTVN10__cxxabiv123__fundamental_type_infoE;
-  const void *_ZTVN10__cxxabiv117__class_type_infoE;
-  const void *_ZTVN10__cxxabiv120__si_class_type_infoE;
-  const void *_ZTVN10__cxxabiv121__vmi_class_type_infoE;
-  const void *_ZTVN10__cxxabiv119__pointer_type_infoE;
-  const void *_ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
-};
-#define fundamental_type_info_vtable _ZTVN10__cxxabiv123__fundamental_type_infoE
-#define class_type_info_vtable _ZTVN10__cxxabiv117__class_type_infoE
-#define si_class_type_info_vtable _ZTVN10__cxxabiv120__si_class_type_infoE
-#define vmi_class_type_info_vtable _ZTVN10__cxxabiv121__vmi_class_type_infoE
-#define pointer_type_info_vtable _ZTVN10__cxxabiv119__pointer_type_infoE
-#define pointer_to_member_type_info_vtable _ZTVN10__cxxabiv129__pointer_to_member_type_infoE
-
-class __pbase_type_info : public std::type_info {
-public:
-  unsigned int __flags;
-  const std::type_info *__pointee;
-
-  enum __masks {
-    __const_mask = 0x1,
-    __volatile_mask = 0x2,
-    __restrict_mask = 0x4,
-    __incomplete_mask = 0x8,
-    __incomplete_class_mask = 0x10
-  };
-};
-
-class __class_type_info : public std::type_info { };
-
-class __si_class_type_info : public __class_type_info {
-public:
-  const __class_type_info *__base_type;
-};
-
-struct __base_class_type_info {
-public:
- const __class_type_info *__base_type;
- long __offset_flags;
-
- enum __offset_flags_masks {
-   __virtual_mask = 0x1,
-   __public_mask = 0x2,
-   __offset_shift = 8
- };
-};
-
-class __vmi_class_type_info : public __class_type_info {
-public:
-  unsigned int __flags;
-  unsigned int __base_count;
-  __base_class_type_info __base_info[1];
-
-  enum __flags_masks {
-    __non_diamond_repeat_mask = 0x1,
-    __diamond_shaped_mask = 0x2
-  };
-};
-
-template<typename T> const T& to(const std::type_info &info) {
-return static_cast<const T&>(info);
-}
-struct Incomplete;
-
-struct A { int a; };
-struct Empty { };
-
-struct SI1 : A { };
-struct SI2 : Empty { };
-struct SI3 : Empty { virtual void f() { } };
-
-struct VMI1 : private A { };
-struct VMI2 : virtual A { };
-struct VMI3 : A { virtual void f() { } };
-struct VMI4 : A, Empty { };
-
-struct VMIBase1 { int a; };
-struct VMIBase2 : VMIBase1 { int a; };
-struct VMI5 : VMIBase1, VMIBase2 { int a; };
-
-struct VMIBase3 : virtual VMIBase1 { int a; };
-struct VMI6 : virtual VMIBase1, VMIBase3 { int a; };
-
-struct VMI7 : VMIBase1, VMI5, private VMI6 { };
-
-#define CHECK(x) if (!(x)) return __LINE__
-#define CHECK_VTABLE(type, vtable) CHECK(&vtable##_type_info_vtable + 2 == (((void **)&(typeid(type)))[0]))
-#define CHECK_BASE_INFO_TYPE(type, index, base) CHECK(to<__vmi_class_type_info>(typeid(type)).__base_info[(index)].__base_type == &typeid(base))
-#define CHECK_BASE_INFO_OFFSET_FLAGS(type, index, offset, flags) CHECK(to<__vmi_class_type_info>(typeid(type)).__base_info[(index)].__offset_flags == (((offset) << 8) | (flags)))
-
-struct B {
-  static int const volatile (*a)[10];
-  static int (*b)[10];
-  
-  static int const volatile (B::*c)[10];
-  static int (B::*d)[10];
-};
-
-// CHECK: define i32 @_Z1fv()
-int f() {
-  // Vectors should be treated as fundamental types.
-  typedef short __v4hi __attribute__ ((__vector_size__ (8)));
-  CHECK_VTABLE(__v4hi, fundamental);
-
-  // A does not have any bases.
-  CHECK_VTABLE(A, class);
-  
-  // SI1 has a single public base.
-  CHECK_VTABLE(SI1, si_class);
-  CHECK(to<__si_class_type_info>(typeid(SI1)).__base_type == &typeid(A));
-  
-  // SI2 has a single public empty base.
-  CHECK_VTABLE(SI2, si_class);
-  CHECK(to<__si_class_type_info>(typeid(SI2)).__base_type == &typeid(Empty));
-
-  // SI3 has a single public empty base. SI3 is dynamic whereas Empty is not, but since Empty is
-  // an empty class, it will still be at offset zero.
-  CHECK_VTABLE(SI3, si_class);
-  CHECK(to<__si_class_type_info>(typeid(SI3)).__base_type == &typeid(Empty));
-
-  // VMI1 has a single base, but it is private.
-  CHECK_VTABLE(VMI1, vmi_class);
-
-  // VMI2 has a single base, but it is virtual.
-  CHECK_VTABLE(VMI2, vmi_class);
-
-  // VMI3 has a single base, but VMI3 is dynamic whereas A is not, and A is not empty.
-  CHECK_VTABLE(VMI3, vmi_class);
-
-  // VMI4 has two bases.
-  CHECK_VTABLE(VMI4, vmi_class);
-
-  // VMI5 has non-diamond shaped inheritance.
-  CHECK_VTABLE(VMI5, vmi_class);
-  CHECK(to<__vmi_class_type_info>(typeid(VMI5)).__flags == __vmi_class_type_info::__non_diamond_repeat_mask);
-  CHECK(to<__vmi_class_type_info>(typeid(VMI5)).__base_count == 2);
-  CHECK_BASE_INFO_TYPE(VMI5, 0, VMIBase1);
-  CHECK_BASE_INFO_OFFSET_FLAGS(VMI5, 0, 0, __base_class_type_info::__public_mask);
-  CHECK_BASE_INFO_TYPE(VMI5, 1, VMIBase2);
-  CHECK_BASE_INFO_OFFSET_FLAGS(VMI5, 1, 4, __base_class_type_info::__public_mask);
-  
-  // VMI6 has diamond shaped inheritance.
-  CHECK_VTABLE(VMI6, vmi_class);
-  CHECK(to<__vmi_class_type_info>(typeid(VMI6)).__flags == __vmi_class_type_info::__diamond_shaped_mask);
-  CHECK(to<__vmi_class_type_info>(typeid(VMI6)).__base_count == 2);
-  CHECK_BASE_INFO_TYPE(VMI6, 0, VMIBase1);
-  CHECK_BASE_INFO_OFFSET_FLAGS(VMI6, 0, -24, __base_class_type_info::__public_mask | __base_class_type_info::__virtual_mask);
-  CHECK_BASE_INFO_TYPE(VMI6, 1, VMIBase3);
-  CHECK_BASE_INFO_OFFSET_FLAGS(VMI6, 1, 0, __base_class_type_info::__public_mask);
-  
-  // VMI7 has both non-diamond and diamond shaped inheritance.
-  CHECK_VTABLE(VMI7, vmi_class);
-  CHECK(to<__vmi_class_type_info>(typeid(VMI7)).__flags == (__vmi_class_type_info::__non_diamond_repeat_mask | __vmi_class_type_info::__diamond_shaped_mask));
-  CHECK(to<__vmi_class_type_info>(typeid(VMI7)).__base_count == 3);
-  CHECK_BASE_INFO_TYPE(VMI7, 0, VMIBase1);
-  CHECK_BASE_INFO_OFFSET_FLAGS(VMI7, 0, 16, __base_class_type_info::__public_mask);
-  CHECK_BASE_INFO_TYPE(VMI7, 1, VMI5);
-  CHECK_BASE_INFO_OFFSET_FLAGS(VMI7, 1, 20, __base_class_type_info::__public_mask);
-  CHECK_BASE_INFO_TYPE(VMI7, 2, VMI6);
-  CHECK_BASE_INFO_OFFSET_FLAGS(VMI7, 2, 0, 0);
-  
-  // Pointers to incomplete classes.
-  CHECK_VTABLE(Incomplete *, pointer);
-  CHECK(to<__pbase_type_info>(typeid(Incomplete *)).__flags == __pbase_type_info::__incomplete_mask);
-  CHECK(to<__pbase_type_info>(typeid(Incomplete **)).__flags == __pbase_type_info::__incomplete_mask);
-  CHECK(to<__pbase_type_info>(typeid(Incomplete ***)).__flags == __pbase_type_info::__incomplete_mask);
-
-  // Member pointers.
-  CHECK_VTABLE(int Incomplete::*, pointer_to_member);
-  CHECK(to<__pbase_type_info>(typeid(int Incomplete::*)).__flags == __pbase_type_info::__incomplete_class_mask);
-  CHECK(to<__pbase_type_info>(typeid(Incomplete Incomplete::*)).__flags == (__pbase_type_info::__incomplete_class_mask | __pbase_type_info::__incomplete_mask));
-  CHECK(to<__pbase_type_info>(typeid(Incomplete A::*)).__flags == (__pbase_type_info::__incomplete_mask));
-
-  // Check that when stripping qualifiers off the pointee type, we correctly handle arrays.
-  CHECK(to<__pbase_type_info>(typeid(B::a)).__flags == (__pbase_type_info::__const_mask | __pbase_type_info::__volatile_mask));
-  CHECK(to<__pbase_type_info>(typeid(B::a)).__pointee == to<__pbase_type_info>(typeid(B::b)).__pointee);
-  CHECK(to<__pbase_type_info>(typeid(B::c)).__flags == (__pbase_type_info::__const_mask | __pbase_type_info::__volatile_mask));
-  CHECK(to<__pbase_type_info>(typeid(B::c)).__pointee == to<__pbase_type_info>(typeid(B::d)).__pointee);
-
-  // Success!
-  // CHECK: ret i32 0
-  return 0;
-}
-
-#ifdef HARNESS
-extern "C" void printf(const char *, ...);
-
-int main() {
-  int result = f();
-  
-  if (result == 0)
-    printf("success!\n");
-  else
-    printf("test on line %d failed!\n", result);
-
-  return result;
-}
-#endif
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,140 +0,0 @@
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -fhidden-weak-vtables -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -fvisibility hidden -fhidden-weak-vtables -emit-llvm -o - | FileCheck -check-prefix=CHECK-WITH-HIDDEN %s
-
-#include <typeinfo>
-
-// CHECK-WITH-HIDDEN: _ZTSFN12_GLOBAL__N_11DEvE = internal constant
-// CHECK-WITH-HIDDEN: @_ZTSPK2T4 = linkonce_odr hidden constant 
-// CHECK-WITH-HIDDEN: @_ZTS2T4 = linkonce_odr hidden constant 
-// CHECK-WITH-HIDDEN: @_ZTI2T4 = linkonce_odr hidden unnamed_addr constant 
-// CHECK-WITH-HIDDEN: @_ZTIPK2T4 = linkonce_odr hidden unnamed_addr constant 
-
-// CHECK: _ZTSP1C = internal constant
-// CHECK: _ZTS1C = internal constant
-// CHECK: _ZTI1C = internal unnamed_addr constant
-// CHECK: _ZTIP1C = internal unnamed_addr constant
-// CHECK: _ZTSPP1C = internal constant
-// CHECK: _ZTIPP1C = internal unnamed_addr constant
-// CHECK: _ZTSM1Ci = internal constant
-// CHECK: _ZTIM1Ci = internal unnamed_addr constant
-// CHECK: _ZTSPM1Ci = internal constant
-// CHECK: _ZTIPM1Ci = internal unnamed_addr constant
-// CHECK: _ZTSM1CS_ = internal constant
-// CHECK: _ZTIM1CS_ = internal unnamed_addr constant
-// CHECK: _ZTSM1CPS_ = internal constant
-// CHECK: _ZTIM1CPS_ = internal unnamed_addr constant
-// CHECK: _ZTSM1A1C = internal constant
-// CHECK: _ZTS1A = linkonce_odr constant
-// CHECK: _ZTI1A = linkonce_odr hidden unnamed_addr constant
-// CHECK: _ZTIM1A1C = internal unnamed_addr constant
-// CHECK: _ZTSM1AP1C = internal constant
-// CHECK: _ZTIM1AP1C = internal unnamed_addr constant
-// CHECK: _ZTSN12_GLOBAL__N_11DE = internal constant
-// CHECK: _ZTIN12_GLOBAL__N_11DE = internal unnamed_addr constant
-// CHECK: _ZTSPN12_GLOBAL__N_11DE = internal constant
-// CHECK: _ZTIPN12_GLOBAL__N_11DE = internal unnamed_addr constant
-// CHECK: _ZTSFN12_GLOBAL__N_11DEvE = internal constant
-// CHECK: _ZTIFN12_GLOBAL__N_11DEvE = internal unnamed_addr constant
-// CHECK: _ZTSFvN12_GLOBAL__N_11DEE = internal constant
-// CHECK: _ZTIFvN12_GLOBAL__N_11DEE = internal unnamed_addr constant
-// CHECK: _ZTSPFvvE = linkonce_odr constant
-// CHECK: _ZTSFvvE = linkonce_odr constant
-// CHECK: _ZTIFvvE = linkonce_odr hidden unnamed_addr constant
-// CHECK: _ZTIPFvvE = linkonce_odr hidden unnamed_addr constant
-// CHECK: _ZTSN12_GLOBAL__N_11EE = internal constant
-// CHECK: _ZTIN12_GLOBAL__N_11EE = internal unnamed_addr constant
-// CHECK: _ZTSA10_i = linkonce_odr constant
-// CHECK: _ZTIA10_i = linkonce_odr hidden unnamed_addr constant
-// CHECK: _ZTI1TILj0EE = linkonce_odr unnamed_addr constant
-// CHECK: _ZTI1TILj1EE = weak_odr unnamed_addr constant
-// CHECK: _ZTI1TILj2EE = external constant
-// CHECK: _ZTS1B = constant
-// CHECK: _ZTI1B = unnamed_addr constant
-// CHECK: _ZTS1F = linkonce_odr constant
-
-// CHECK: _ZTIN12_GLOBAL__N_11DE to
-
-// A has no key function, so its RTTI data should be linkonce_odr.
-struct A { };
-
-// B has a key function defined in the translation unit, so the RTTI data should
-// be emitted in this translation unit and have external linkage.
-struct B : A {
-  virtual void f();
-};
-void B::f() { }
-
-// C is an incomplete class type, so any direct or indirect pointer types should have 
-// internal linkage, as should the type info for C itself.
-struct C;
-
-void t1() {
-  (void)typeid(C*);
-  (void)typeid(C**);
-  (void)typeid(int C::*);
-  (void)typeid(int C::**);
-  (void)typeid(C C::*);
-  (void)typeid(C *C::*);
-  (void)typeid(C A::*);
-  (void)typeid(C* A::*);
-}
-
-namespace {
-  // D is inside an anonymous namespace, so all type information related to D should have
-  // internal linkage.
-  struct D { };
-  
-  // E is also inside an anonymous namespace.
-  enum E { };
-  
-};
-
-// F has a key function defined in the translation unit, but it is inline so the RTTI
-// data should be emitted with linkonce_odr linkage.
-struct F {
-  virtual void f();
-};
-
-inline void F::f() { }
-const D getD();
-
-const std::type_info &t2() {
-  (void)typeid(const D);
-  (void)typeid(D *);
-  (void)typeid(D (*)());
-  (void)typeid(void (*)(D));
-  (void)typeid(void (*)(D&));
-  // The exception specification is not part of the RTTI descriptor, so it should not have
-  // internal linkage.
-  (void)typeid(void (*)() throw (D));
-  
-  (void)typeid(E);
-  
-  return typeid(getD());  
-}
-
-namespace Arrays {
-  struct A {
-    static const int a[10];
-  };
-  const std::type_info &f() {
-    return typeid(A::a);
-  }
-}
-
-template <unsigned N> class T {
-  virtual void anchor() {}
-};
-template class T<1>;
-template <> class T<2> { virtual void anchor(); };
-void t3() {
-  (void) typeid(T<0>);
-  (void) typeid(T<1>);
-  (void) typeid(T<2>);
-}
-
-// rdar://problem/8778973
-struct T4 {};
-void t4(const T4 *ptr) {
-  const void *value = &typeid(ptr);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-visibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-visibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rtti-visibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o %t
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -fhidden-weak-vtables -emit-llvm -o %t.hidden
-// RUN: FileCheck --check-prefix=CHECK-TEST1 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-TEST2 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-TEST2-HIDDEN %s < %t.hidden
-
-#include <typeinfo>
-
-namespace Test1 {
-  // A is explicitly marked hidden, so all RTTI data should also be marked hidden.
-  // CHECK-TEST1: @_ZTSN5Test11AE = linkonce_odr hidden constant
-  // CHECK-TEST1: @_ZTIN5Test11AE = linkonce_odr hidden unnamed_addr constant
-  // CHECK-TEST1: @_ZTSPN5Test11AE = linkonce_odr hidden constant
-  // CHECK-TEST1: @_ZTIPN5Test11AE = linkonce_odr hidden unnamed_addr constant
-  struct __attribute__((visibility("hidden"))) A { };
-
-  void f() {
-    (void)typeid(A);
-    (void)typeid(A *);
-  }
-}
-
-namespace Test2 {
-  // A is weak, so its linkage should be linkoce_odr, but not marked hidden.
-  // CHECK-TEST2: @_ZTSN5Test21AE = linkonce_odr constant
-  // CHECK-TEST2: @_ZTIN5Test21AE = linkonce_odr unnamed_addr constant
-  struct A { };
-
-  // With -fhidden-weak-vtables, the typeinfo for A is marked hidden, but not its name.
-  // CHECK-TEST2-HIDDEN: _ZTSN5Test21AE = linkonce_odr constant
-  // CHECK-TEST2-HIDDEN: @_ZTIN5Test21AE = linkonce_odr hidden unnamed_addr constant
-  void f() {
-    (void)typeid(A);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/runtimecc.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/runtimecc.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/runtimecc.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 %s -triple=armv7-apple-darwin10 -emit-llvm -o - -fexceptions -fcxx-exceptions | FileCheck %s
-
-// Check that we annotate all compiler-synthesized runtime calls and
-// functions with the actual ABI-determined CC.  This usually doesn't
-// matter as long as we're internally consistent (and the LLVM-default
-// CC is consistent with the real one), but it's possible for user
-// translation units to define these runtime functions (or, equivalently,
-// for us to get LTO'ed with such a translation unit), and then the
-// mismatch will kill us.
-//
-// rdar://12818655
-
-// CHECK: [[A:%.*]] = type { double }
-
-namespace test0 {
-  struct A {
-    double d;
-    A();
-    ~A();
-  };
-
-  A global;
-// CHECK:    define internal arm_aapcscc void @__cxx_global_var_init()
-// CHECK:      call arm_aapcscc [[A]]* @_ZN5test01AC1Ev([[A]]* @_ZN5test06globalE)
-// CHECK-NEXT: call arm_aapcscc i32 @__cxa_atexit(void (i8*)* bitcast ([[A]]* ([[A]]*)* @_ZN5test01AD1Ev to void (i8*)*), i8* bitcast ([[A]]* @_ZN5test06globalE to i8*), i8* @__dso_handle) [[NOUNWIND:#[0-9]+]]
-// CHECK-NEXT: ret void
-}
-
-// CHECK: declare arm_aapcscc i32 @__cxa_atexit(void (i8*)*, i8*, i8*) [[NOUNWIND]]
-
-namespace test1 {
-  void test() {
-    throw 0;
-  }
-
-// CHECK:    define arm_aapcscc void @_ZN5test14testEv()
-// CHECK:      [[T0:%.*]] = call arm_aapcscc i8* @__cxa_allocate_exception(i32 4) [[NOUNWIND]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to i32*
-// CHECK-NEXT: store i32 0, i32* [[T1]]
-// CHECK-NEXT: call arm_aapcscc void @__cxa_throw(i8* [[T0]], i8* bitcast (i8** @_ZTIi to i8*), i8* null) [[NORETURN:#[0-9]+]]
-// CHECK-NEXT: unreachable
-}
-
-// CHECK: declare arm_aapcscc i8* @__cxa_allocate_exception(i32)
-
-// CHECK: declare arm_aapcscc void @__cxa_throw(i8*, i8*, i8*)
-
-// CHECK: define internal arm_aapcscc void @_GLOBAL__I_a()
-// CHECK:   call arm_aapcscc void @__cxx_global_var_init()
-
-
-// CHECK: attributes [[NOUNWIND]] = { nounwind }
-// CHECK: attributes [[NORETURN]] = { noreturn }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rvalue-references.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rvalue-references.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/rvalue-references.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-
-struct Spacer { int x; };
-struct A { double array[2]; };
-struct B : Spacer, A { };
-
-B &getB();
-
-// CHECK: define %struct.A* @_Z4getAv()
-// CHECK: call %struct.B* @_Z4getBv()
-// CHECK-NEXT: bitcast %struct.B*
-// CHECK-NEXT: getelementptr inbounds i8*
-// CHECK-NEXT: bitcast i8* {{.*}} to %struct.A*
-// CHECK-NEXT: ret %struct.A*
-A &&getA() { return static_cast<A&&>(getB()); }
-
-int &getIntLValue();
-int &&getIntXValue();
-int getIntPRValue();
-
-// CHECK: define i32* @_Z2f0v()
-// CHECK: call i32* @_Z12getIntLValuev()
-// CHECK-NEXT: ret i32*
-int &&f0() { return static_cast<int&&>(getIntLValue()); }
-
-// CHECK: define i32* @_Z2f1v()
-// CHECK: call i32* @_Z12getIntXValuev()
-// CHECK-NEXT: ret i32*
-int &&f1() { return static_cast<int&&>(getIntXValue()); }
-
-// CHECK: define i32* @_Z2f2v
-// CHECK: call i32 @_Z13getIntPRValuev()
-// CHECK-NEXT: store i32 {{.*}}, i32*
-// CHECK-NEXT: ret i32*
-int &&f2() { return static_cast<int&&>(getIntPRValue()); }
-
-bool ok;
-
-class C
-{
-   int* state_;
-
-   C(const C&) = delete;
-   C& operator=(const C&) = delete;
-public:
-  C(int state) : state_(new int(state)) { }
-  
-  C(C&& a) {
-    state_ = a.state_; 
-    a.state_ = 0;
-  }
-
-  ~C() {
-    delete state_; 
-    state_ = 0;
-  }
-};
-
-C test();
-
-// CHECK: define void @_Z15elide_copy_initv
-void elide_copy_init() {
-  ok = false;
-  // CHECK: call void @_Z4testv
-  C a = test();
-  // CHECK-NEXT: call void @_ZN1CD1Ev
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @_Z16test_move_returnv
-C test_move_return() {
-  // CHECK: call void @_ZN1CC1Ei
-  C a1(3);
-  // CHECK: call void @_ZN1CC1Ei
-  C a2(4);
-  if (ok)
-    // CHECK: call void @_ZN1CC1EOS_
-    return a1;
-  // CHECK: call void @_ZN1CC1EOS_
-  return a2;
-  // CHECK: call void @_ZN1CD1Ev
-  // CHECK: call void @_ZN1CD1Ev
-  //CHECK:  ret void
-}
-
-// PR10800: don't crash
-namespace test1 {
-  int &&move(int&);
-
-  struct A { A(int); };
-  struct B {
-    A a;
-    B(int i);
-  };
-
-  // CHECK:    define void @_ZN5test11BC2Ei(
-  // CHECK:      [[T0:%.*]] = call i32* @_ZN5test14moveERi(
-  // CHECK-NEXT: [[T1:%.*]] = load i32* [[T0]]
-  // CHECK-NEXT: call void @_ZN5test11AC1Ei({{.*}}, i32 [[T1]])
-  // CHECK-NEXT: ret void
-  B::B(int i) : a(move(i)) {}
-}
-
-// PR11009
-struct MoveConvertible {
-  operator int&& () const;
-};
-void moveConstruct() {
-  (void)(int)MoveConvertible();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/scoped-enums-debug-info.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/scoped-enums-debug-info.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/scoped-enums-debug-info.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -g -o - %s | FileCheck %s
-// Test that we are emitting debug info and base types for scoped enums.
-
-// CHECK: [ DW_TAG_enumeration_type ] [Color] {{.*}} [from int]
-enum class Color { gray };
-
-void f(Color);
-void g() {
-  f(Color::gray);
-}
-
-// CHECK: [ DW_TAG_enumeration_type ] [Colour] {{.*}} [from int]
-enum struct Colour { grey };
-
-void h(Colour);
-void i() {
-  h(Colour::grey);
-}
-
-// CHECK: [ DW_TAG_enumeration_type ] [Couleur] {{.*}} [from unsigned char]
-enum class Couleur : unsigned char { gris };
-
-void j(Couleur);
-void k() {
-  j(Couleur::gris);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/scoped-enums.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/scoped-enums.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/scoped-enums.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -emit-llvm -o - %s
-
-// PR9923
-enum class Color { red, blue, green };
-
-void f(Color);
-void g() {
-  f(Color::red);
-}
-
-// See that struct is handled equally.
-enum struct Colour { grey };
-
-void h(Colour);
-void i() {
-  h(Colour::grey);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/sel-address.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/sel-address.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/sel-address.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -verify -emit-llvm -o %t
-// pr7390
-
-void f(const SEL& v2) {}
-void g() {
-  f(@selector(dealloc));
-
-  SEL s = @selector(dealloc);
- SEL* ps = &s;
-
- @selector(dealloc) = s;  // expected-error {{expression is not assignable}}
-
- SEL* ps2 = &@selector(dealloc);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/sizeof-unwind-exception.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/sizeof-unwind-exception.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/sizeof-unwind-exception.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fcxx-exceptions -fexceptions %s -O2 -o - | FileCheck %s --check-prefix=X86-64
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fcxx-exceptions -fexceptions %s -O2 -o - | FileCheck %s --check-prefix=X86-32
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fcxx-exceptions -fexceptions %s -O2 -o - | FileCheck %s --check-prefix=ARM-DARWIN
-// RUN: %clang_cc1 -triple arm-unknown-gnueabi -emit-llvm -fcxx-exceptions -fexceptions %s -O2 -o - | FileCheck %s --check-prefix=ARM-EABI
-// RUN: %clang_cc1 -triple mipsel-unknown-unknown -emit-llvm -fcxx-exceptions -fexceptions %s -O2 -o - | FileCheck %s --check-prefix=MIPS
-
-void foo();
-void test() {
-  try {
-    foo();
-  } catch (int *&i) {
-    *i = 5;
-  }
-}
-
-// PR10789: different platforms have different sizes for struct UnwindException.
-
-// X86-64:          [[T0:%.*]] = tail call i8* @__cxa_begin_catch(i8* [[EXN:%.*]]) [[NUW:#[0-9]+]]
-// X86-64-NEXT:     [[T1:%.*]] = getelementptr i8* [[EXN]], i64 32
-// X86-32:          [[T0:%.*]] = tail call i8* @__cxa_begin_catch(i8* [[EXN:%.*]]) [[NUW:#[0-9]+]]
-// X86-32-NEXT:     [[T1:%.*]] = getelementptr i8* [[EXN]], i64 32
-// ARM-DARWIN:      [[T0:%.*]] = tail call i8* @__cxa_begin_catch(i8* [[EXN:%.*]]) [[NUW:#[0-9]+]]
-// ARM-DARWIN-NEXT: [[T1:%.*]] = getelementptr i8* [[EXN]], i64 32
-// ARM-EABI:        [[T0:%.*]] = tail call i8* @__cxa_begin_catch(i8* [[EXN:%.*]]) [[NUW:#[0-9]+]]
-// ARM-EABI-NEXT:   [[T1:%.*]] = getelementptr i8* [[EXN]], i32 88
-// MIPS:            [[T0:%.*]] = tail call i8* @__cxa_begin_catch(i8* [[EXN:%.*]]) [[NUW:#[0-9]+]]
-// MIPS-NEXT:       [[T1:%.*]] = getelementptr i8* [[EXN]], i32 24
-
-// X86-64: attributes [[NUW]] = { nounwind }
-// X86-32: attributes [[NUW]] = { nounwind }
-// ARM-DARWIN: attributes [[NUW]] = { nounwind }
-// ARM-EABI: attributes [[NUW]] = { nounwind }
-// MIPS: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/skip-vtable-pointer-initialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/skip-vtable-pointer-initialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/skip-vtable-pointer-initialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,200 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// See Test9 for test description.
-// CHECK: @_ZTTN5Test91BE = linkonce_odr unnamed_addr constant
-namespace Test1 {
-
-// Check that we don't initialize the vtable pointer in A::~A(), since the destructor body is trivial.
-struct A {
-  virtual void f();
-  ~A();
-};
-
-// CHECK: define void @_ZN5Test11AD2Ev
-// CHECK-NOT: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN5Test11AE, i64 0, i64 2), i8***
-A::~A() 
-{
-}
-
-}
-
-namespace Test2 {
-
-// Check that we do initialize the vtable pointer in A::~A() since the destructor body isn't trivial.
-struct A {
-  virtual void f();
-  ~A();
-};
-
-// CHECK: define void @_ZN5Test21AD2Ev
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN5Test21AE, i64 0, i64 2), i8***
-A::~A() {
-  f();
-}
-
-}
-
-namespace Test3 {
-
-// Check that we don't initialize the vtable pointer in A::~A(), since the destructor body is trivial
-// and Field's destructor body is also trivial.
-struct Field {
-  ~Field() { }
-};
-
-struct A {
-  virtual void f();
-  ~A();
-
-  Field field;
-};
-
-// CHECK: define void @_ZN5Test31AD2Ev
-// CHECK-NOT: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN5Test31AE, i64 0, i64 2), i8***
-A::~A() {
-  
-}
-
-}
-
-namespace Test4 {
-
-// Check that we do initialize the vtable pointer in A::~A(), since Field's destructor body
-// isn't trivial.
-
-void f();
-
-struct Field {
-  ~Field() { f(); }
-};
-
-struct A {
-  virtual void f();
-  ~A();
-
-  Field field;
-};
-
-// CHECK: define void @_ZN5Test41AD2Ev
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN5Test41AE, i64 0, i64 2), i8***
-A::~A()
-{
-}
-
-}
-
-namespace Test5 {
-
-// Check that we do initialize the vtable pointer in A::~A(), since Field's destructor isn't
-// available in this translation unit.
-
-struct Field {
-  ~Field();
-};
-
-struct A {
-  virtual void f();
-  ~A();
-
-  Field field;
-};
-
-// CHECK: define void @_ZN5Test51AD2Ev
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN5Test51AE, i64 0, i64 2), i8***
-A::~A()
-{
-}
-
-}
-
-namespace Test6 {
-
-// Check that we do initialize the vtable pointer in A::~A(), since Field has a member
-// variable with a non-trivial destructor body.
-
-struct NonTrivialDestructorBody {
-  ~NonTrivialDestructorBody();
-};
-
-struct Field {
-  NonTrivialDestructorBody nonTrivialDestructorBody;
-};
-
-struct A {
-  virtual void f();
-  ~A();
-
-  Field field;
-};
-
-// CHECK: define void @_ZN5Test61AD2Ev
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN5Test61AE, i64 0, i64 2), i8***
-A::~A()
-{
-}
-
-}
-
-namespace Test7 {
-
-// Check that we do initialize the vtable pointer in A::~A(), since Field has a base
-// class with a non-trivial destructor body.
-
-struct NonTrivialDestructorBody {
-  ~NonTrivialDestructorBody();
-};
-
-struct Field : NonTrivialDestructorBody { };
-
-struct A {
-  virtual void f();
-  ~A();
-
-  Field field;
-};
-
-// CHECK: define void @_ZN5Test71AD2Ev
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN5Test71AE, i64 0, i64 2), i8***
-A::~A()
-{
-}
-
-}
-
-namespace Test8 {
-
-// Check that we do initialize the vtable pointer in A::~A(), since Field has a virtual base
-// class with a non-trivial destructor body.
-
-struct NonTrivialDestructorBody {
-  ~NonTrivialDestructorBody();
-};
-
-struct Field : virtual NonTrivialDestructorBody { };
-
-struct A {
-  virtual void f();
-  ~A();
-
-  Field field;
-};
-
-// CHECK: define void @_ZN5Test81AD2Ev
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTVN5Test81AE, i64 0, i64 2), i8***
-A::~A()
-{
-}
-
-}
-
-namespace Test9 {
-
-// Check that we emit a VTT for B, even though we don't initialize the vtable pointer in the destructor.
-struct A { virtual ~A () { } };
-struct B : virtual A {};
-struct C : virtual B { 
-  virtual ~C();
-};
-C::~C() {}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/specialized-static-data-mem-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/specialized-static-data-mem-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/specialized-static-data-mem-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// rdar: // 8562966
-// pr8409
-
-// CHECK: @_ZN1CIiE11needs_guardE = weak_odr global
-// CHECK: @_ZGVN1CIiE11needs_guardE = weak_odr global
-
-struct K
-{
-  K();
-  K(const K &);
-  ~K();
-  void PrintNumK();
-};
-
-template<typename T>
-struct C
-{
-  void Go() { needs_guard.PrintNumK(); }
-  static K needs_guard;
-};
-
-template<typename T> K C<T>::needs_guard;
-
-void F()
-{
-  C<int>().Go();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-assert.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-assert.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-assert.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -std=c++11 -verify
-// expected-no-diagnostics
-
-static_assert(true, "");
-
-void f() {
-  static_assert(true, "");
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-data-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-data-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-data-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @_ZN5test11A1aE = constant i32 10, align 4
-// CHECK: @_ZN5test212_GLOBAL__N_11AIiE1xE = internal global i32 0, align 4
-// CHECK: @_ZN5test31AIiE1xE = weak_odr global i32 0, align 4
-// CHECK: @_ZGVN5test31AIiE1xE = weak_odr global i64 0
-
-// CHECK: _ZN5test51U2k0E = global i32 0
-// CHECK: _ZN5test51U2k1E = global i32 0
-// CHECK: _ZN5test51U2k2E = constant i32 76
-// CHECK-NOT: test51U2k3E
-// CHECK-NOT: test51U2k4E
-
-// PR5564.
-namespace test1 {
-  struct A {
-    static const int a = 10;
-  };
-
-  const int A::a;
-
-  struct S { 
-    static int i;
-  };
-
-  void f() { 
-    int a = S::i;
-  }
-}
-
-// Test that we don't use guards for initializing template static data
-// members with internal linkage.
-namespace test2 {
-  int foo();
-
-  namespace {
-    template <class T> struct A {
-      static int x;
-    };
-
-    template <class T> int A<T>::x = foo();
-    template struct A<int>;
-  }
-
-  // CHECK: define internal void @__cxx_global_var_init()
-  // CHECK:      [[TMP:%.*]] = call i32 @_ZN5test23fooEv()
-  // CHECK-NEXT: store i32 [[TMP]], i32* @_ZN5test212_GLOBAL__N_11AIiE1xE, align 4
-  // CHECK-NEXT: ret void
-}
-
-// Test that we don't use threadsafe statics when initializing
-// template static data members.
-namespace test3 {
-  int foo();
-
-  template <class T> struct A {
-    static int x;
-  };
-
-  template <class T> int A<T>::x = foo();
-  template struct A<int>;
-
-  // CHECK: define internal void @__cxx_global_var_init1()
-  // CHECK:      [[GUARDBYTE:%.*]] = load i8* bitcast (i64* @_ZGVN5test31AIiE1xE to i8*)
-  // CHECK-NEXT: [[UNINITIALIZED:%.*]] = icmp eq i8 [[GUARDBYTE]], 0
-  // CHECK-NEXT: br i1 [[UNINITIALIZED]]
-  // CHECK:      [[TMP:%.*]] = call i32 @_ZN5test33fooEv()
-  // CHECK-NEXT: store i32 [[TMP]], i32* @_ZN5test31AIiE1xE, align 4
-  // CHECK-NEXT: store i64 1, i64* @_ZGVN5test31AIiE1xE
-  // CHECK-NEXT: br label
-  // CHECK:      ret void
-}
-
-// Test that we can fold member lookup expressions which resolve to static data
-// members.
-namespace test4 {
-  struct A {
-    static const int n = 76;
-  };
-
-  int f(A *a) {
-    // CHECK: define i32 @_ZN5test41fEPNS_1AE
-    // CHECK: ret i32 76
-    return a->n;
-  }
-}
-
-// Test that static data members in unions behave properly.
-namespace test5 {
-  union U {
-    static int k0;
-    static const int k1;
-    static const int k2 = 76;
-    static const int k3;
-    static const int k4 = 81;
-  };
-  int U::k0;
-  const int U::k1 = (k0 = 9, 42);
-  const int U::k2;
-
-  // CHECK: store i32 9, i32* @_ZN5test51U2k0E
-  // CHECK: store i32 {{.*}}, i32* @_ZN5test51U2k1E
-  // CHECK-NOT: store {{.*}} i32* @_ZN5test51U2k2E
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin9 -emit-llvm %s -o %t
-// RUN: grep "call i32 @_Z5func1i" %t | count 3
-
-extern "C" int printf(...);
-
-static int count;
-
-int func2(int c) { return printf("loading the func2(%d)\n", c); };
-int func1(int c) { return printf("loading the func1(%d)\n", c); }
-
-static int loader_1 = func1(++count);
-
-int loader_2 = func2(++count);
-
-static int loader_3 = func1(++count);
-
-
-int main() {}
-
-int loader_4 = func2(++count);
-static int loader_5 = func1(++count);
-int loader_6 = func2(++count);
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-// expected-no-diagnostics
-
-// Make sure we don't crash generating y; its value is constant, but the
-// initializer has side effects, so EmitConstantExpr should fail.
-int x();
-int y = x() & 0;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init-3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10.0.0 -o - %s | FileCheck %s
-
-// PR7050
-template<class T> struct X0 : public T { };
-
-template <class T>
-struct X1
-{
-     static T & instance;
-    // include this to provoke instantiation at pre-execution time
-    static void use(T const &) {}
-     static T & get() {
-        static X0<T> t;
-        use(instance);
-        return static_cast<T &>(t);
-    }
-};
-
-// CHECK: @_ZN2X1I2X2I1BEE8instanceE = weak_odr global %struct.X2* null, align 8
-// CHECJ: @_ZN2X1I2X2I1AEE8instanceE = weak_odr global %struct.X2* null, align 8
-template<class T> T & X1<T>::instance = X1<T>::get();
-
-class A { };
-class B : public A { };
-
-template<typename T> struct X2 {};
-X2< B > bg = X1< X2< B > >::get(); 
-X2< A > ag = X1< X2< A > >::get();

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,154 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// CHECK: @_ZZ1hvE1i = internal global i32 0, align 4
-// CHECK: @base_req = global [4 x i8] c"foo\00", align 1
-// CHECK: @base_req_uchar = global [4 x i8] c"bar\00", align 1
-
-// CHECK: @_ZZN5test31BC1EvE1u = internal global { i8, [3 x i8] } { i8 97, [3 x i8] undef }, align 4
-// CHECK: @_ZZN5test1L6getvarEiE3var = internal constant [4 x i32] [i32 1, i32 0, i32 2, i32 4], align 16
-// CHECK: @_ZZ2h2vE1i = linkonce_odr global i32 0
-// CHECK: @_ZGVZ2h2vE1i = linkonce_odr global i64 0
-
-struct A {
-  A();
-  ~A();
-};
-
-void f() {
-  // CHECK: load atomic i8* bitcast (i64* @_ZGVZ1fvE1a to i8*) acquire, align 1
-  // CHECK: call i32 @__cxa_guard_acquire
-  // CHECK: call void @_ZN1AC1Ev
-  // CHECK: call i32 @__cxa_atexit(void (i8*)* bitcast (void (%struct.A*)* @_ZN1AD1Ev to void (i8*)*), i8* getelementptr inbounds (%struct.A* @_ZZ1fvE1a, i32 0, i32 0), i8* @__dso_handle)
-  // CHECK: call void @__cxa_guard_release
-  static A a;
-}
-
-void g() {
-  // CHECK: call noalias i8* @_Znwm(i64 1)
-  // CHECK: call void @_ZN1AC1Ev(
-  static A& a = *new A;
-}
-
-int a();
-void h() {
-  static const int i = a();
-}
-
-inline void h2() {
-  static int i = a();
-}
-
-void h3() {
-  h2();
-}
-
-// PR6980: this shouldn't crash
-namespace test0 {
-  struct A { A(); };
-  __attribute__((noreturn)) int throw_exception();
-
-  void test() {
-    throw_exception();
-    static A r;
-  }
-}
-
-namespace test1 {
-  // CHECK: define internal i32 @_ZN5test1L6getvarEi(
-  static inline int getvar(int index) {
-    static const int var[] = { 1, 0, 2, 4 };
-    return var[index];
-  }
-
-  void test() { (void) getvar(2); }
-}
-
-// Make sure we emit the initializer correctly for the following:
-char base_req[] = { "foo" };
-unsigned char base_req_uchar[] = { "bar" };
-
-namespace union_static_local {
-  // CHECK: define internal void @_ZZN18union_static_local4testEvEN1c4mainEv
-  // CHECK: call void @_ZN18union_static_local1fEPNS_1xE(%"union.union_static_local::x"* bitcast ({ [2 x i8*] }* @_ZZN18union_static_local4testEvE3foo to %"union.union_static_local::x"*))
-  union x { long double y; const char *x[2]; };
-  void f(union x*);
-  void test() {
-    static union x foo = { .x = { "a", "b" } };
-    struct c {
-      static void main() {
-        f(&foo);
-      }
-    };
-    c::main();
-  }
-}
-
-// rdar://problem/11091093
-//   Static variables should be consistent across constructor
-//   or destructor variants.
-namespace test2 {
-  struct A {
-    A();
-    ~A();
-  };
-
-  struct B : virtual A {
-    B();
-    ~B();
-  };
-
-  // If we ever implement this as a delegate ctor call, just change
-  // this to take variadic arguments or something.
-  extern int foo();
-  B::B() {
-    static int x = foo();
-  }
-  // CHECK: define void @_ZN5test21BC1Ev
-  // CHECK:   load atomic i8* bitcast (i64* @_ZGVZN5test21BC1EvE1x to i8*) acquire,
-  // CHECK:   call i32 @__cxa_guard_acquire(i64* @_ZGVZN5test21BC1EvE1x)
-  // CHECK:   [[T0:%.*]] = call i32 @_ZN5test23fooEv()
-  // CHECK:   store i32 [[T0]], i32* @_ZZN5test21BC1EvE1x,
-  // CHECK:   call void @__cxa_guard_release(i64* @_ZGVZN5test21BC1EvE1x)
-
-  // CHECK: define void @_ZN5test21BC2Ev
-  // CHECK:   load atomic i8* bitcast (i64* @_ZGVZN5test21BC1EvE1x to i8*) acquire,
-  // CHECK:   call i32 @__cxa_guard_acquire(i64* @_ZGVZN5test21BC1EvE1x)
-  // CHECK:   [[T0:%.*]] = call i32 @_ZN5test23fooEv()
-  // CHECK:   store i32 [[T0]], i32* @_ZZN5test21BC1EvE1x,
-  // CHECK:   call void @__cxa_guard_release(i64* @_ZGVZN5test21BC1EvE1x)
-
-  // This is just for completeness, because we actually emit this
-  // using a delegate dtor call.
-  B::~B() {
-    static int y = foo();
-  }
-  // CHECK: define void @_ZN5test21BD1Ev(
-  // CHECK:   call void @_ZN5test21BD2Ev(
-
-  // CHECK: define void @_ZN5test21BD2Ev(
-  // CHECK:   load atomic i8* bitcast (i64* @_ZGVZN5test21BD1EvE1y to i8*) acquire,
-  // CHECK:   call i32 @__cxa_guard_acquire(i64* @_ZGVZN5test21BD1EvE1y)
-  // CHECK:   [[T0:%.*]] = call i32 @_ZN5test23fooEv()
-  // CHECK:   store i32 [[T0]], i32* @_ZZN5test21BD1EvE1y,
-  // CHECK:   call void @__cxa_guard_release(i64* @_ZGVZN5test21BD1EvE1y)
-}
-
-// This shouldn't error out.
-namespace test3 {
-  struct A {
-    A();
-    ~A();
-  };
-
-  struct B : virtual A {
-    B();
-    ~B();
-  };
-
-  B::B() {
-    union U { char x; int i; };
-    static U u = { 'a' };
-  }
-  // CHECK: define void @_ZN5test31BC1Ev(
-  // CHECK: define void @_ZN5test31BC2Ev(
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-local-in-local-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-local-in-local-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-local-in-local-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// PR6769
-
-struct X {
-  static void f();
-};
-
-void X::f() {
-  static int *i;
-  {
-    struct Y {
-      static void g() {
-        i = new int();
-	*i = 100;
-	(*i) = (*i) +1;
-      }
-    };
-    (void)Y::g();
-  }
-  (void)i;
-}
-
-// pr7101
-void foo() {
-    static int n = 0;
-    struct Helper {
-        static void Execute() {
-            n++;
-        }
-    };
-    Helper::Execute();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-member-variable-explicit-specialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-member-variable-explicit-specialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-member-variable-explicit-specialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-// CHECK: ; ModuleID
-template<typename> struct A { static int a; };
-
-// CHECK-NOT: @_ZN1AIcE1aE
-template<> int A<char>::a;
-
-// CHECK: @_ZN1AIbE1aE = global i32 10
-template<> int A<bool>::a = 10;
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-mutable.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-mutable.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/static-mutable.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -triple=i686-linux-gnu -emit-llvm -o - | FileCheck %s
-
-struct S {
-  mutable int n;
-};
-int f() {
-  // The purpose of this test is to ensure that this variable is a global
-  // not a constant.
-  // CHECK: @_ZZ1fvE1s = internal global {{.*}} { i32 12 }
-  static const S s = { 12 };
-  return ++s.n;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/stmtexpr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/stmtexpr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/stmtexpr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -Wno-unused-value -emit-llvm -o - %s | FileCheck %s
-// rdar: //8540501
-extern "C" int printf(...);
-extern "C" void abort();
-
-struct A
-{
-  int i;
-  A (int j) : i(j) {printf("this = %p A(%d)\n", this, j);}
-  A (const A &j) : i(j.i) {printf("this = %p const A&(%d)\n", this, i);}
-  A& operator= (const A &j) { i = j.i; abort(); return *this; }
-  ~A() { printf("this = %p ~A(%d)\n", this, i); }
-};
-
-struct B
-{
-  int i;
-  B (const A& a) { i = a.i; }
-  B() {printf("this = %p B()\n", this);}
-  B (const B &j) : i(j.i) {printf("this = %p const B&(%d)\n", this, i);}
-  ~B() { printf("this = %p ~B(%d)\n", this, i); }
-};
-
-A foo(int j)
-{
-  return ({ j ? A(1) : A(0); });
-}
-
-
-void foo2()
-{
-  A b = ({ A a(1); A a1(2); A a2(3); a1; a2; a; });
-  if (b.i != 1)
-    abort(); 
-  A c = ({ A a(1); A a1(2); A a2(3); a1; a2; a; A a3(4); a2; a3; });
-  if (c.i != 4)
-    abort(); 
-}
-
-void foo3()
-{
-  const A &b = ({ A a(1); a; });
-  if (b.i != 1)
-    abort();
-}
-
-void foo4()
-{
-// CHECK: call {{.*}} @_ZN1AC1Ei
-// CHECK: call {{.*}} @_ZN1AC1ERKS_
-// CHECK: call {{.*}} @_ZN1AD1Ev
-// CHECK: call {{.*}} @_ZN1BC1ERK1A
-// CHECK: call {{.*}} @_ZN1AD1Ev
-  const B &b = ({ A a(1); a; });
-  if (b.i != 1)
-    abort();
-}
-
-int main()
-{
-  foo2();
-  foo3();
-  foo4();
-  return foo(1).i-1;
-}
-
-// rdar: // 8600553
-int a[128];
-int* foo5() {
-// CHECK-NOT: memcpy
-  // Check that array-to-pointer conversion occurs in a
-  // statement-expression.
-  return (({ a; }));
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-// CHECK that we don't crash.
-
-int test(int val){
-	int x = 12;
-	// Make sure we don't crash when constant folding the case 4
-	// statement due to the case 5 statement contained in the do loop
-	switch (val) {
-		case 4: do { 
-                     switch (6)  {
-                       case 6: {
-                         case 5: x++;
-                       };
-                     };
-                } while (x < 100);
-	}
-	return x;
-}
-
-int main(void) {
-  return test(4);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-// CHECK that we don't crash.
-
-extern int printf(const char*, ...);
-int test(int val){
- switch (val) {
- case 4:
-   do {
-     switch (6) {
-       case 6: do { case 5: printf("bad\n"); } while (0);
-     };
-   } while (0);
- }
- return 0;
-}
-
-int main(void) {
- return test(5);
-}
-
-// CHECK: call i32 (i8*, ...)* @_Z6printfPKcz

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/switch-case-folding.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-// CHECK that we don't crash.
-
-int main(void){
-	int x = 12;
-	// Make sure we don't crash when constant folding the case 4
-	// statement due to the case 5 statement contained in the do loop
-	switch (4) {
-		case 4: do { 
-                     switch (6)  {
-                       case 6: {
-                         case 5: x++;
-                       };
-                     };
-                } while (x < 100);
-	}
-	return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/temp-order.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/temp-order.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/temp-order.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,226 +0,0 @@
-// Output file should have no calls to error() with folding.
-// RUN: %clang_cc1 -triple i386-unknown-unknown -mllvm -inline-threshold=1024 -O3 -emit-llvm -o %t %s
-// RUN: FileCheck %s < %t
-
-static unsigned pow(unsigned Base, unsigned Power) {
-  unsigned Val = 1;
-  while (Power--)
-    Val *= Base;
-  return Val;
-}
-
-struct TempTracker {
-  unsigned Product, Index;
-
-  TempTracker() : Product(1), Index(0) {}
-
-};
-
-// FIXME: This can be used to check elision as well, if P = 0 hacks are removed.
-struct A {
-  TempTracker &TT;
-  mutable unsigned P;
-  bool Truth;
-
-  A(TempTracker &_TT, unsigned _P, bool _Truth = true)
-    : TT(_TT), P(_P), Truth(_Truth) {}
-  A(const A &RHS) : TT(RHS.TT), P(RHS.P), Truth(RHS.Truth) { RHS.P = 0; }
-  ~A() {
-    if (P)
-      TT.Product *= pow(P, ++TT.Index);
-  }
-
-  A &operator=(const A &RHS) {
-    TT = RHS.TT;
-    P = RHS.P;
-    Truth = RHS.Truth;
-    RHS.P = 0;
-    return *this;
-  }
-
-  operator bool () { return Truth; }
-};
-
-// 3, 7, 2
-static unsigned f0(bool val = false) {
-  TempTracker tt;
-  {
-    A a(tt, 2);
-    if ((A(tt, 3), val))
-      A b(tt, 5);
-    A c(tt, 7);
-  }
-  return tt.Product;
-}
-
-// 3, 5, 7, 2
-static unsigned f1(bool val = true) {
-  TempTracker tt;
-  {
-    A a(tt, 2);
-    if ((A(tt, 3), val))
-      A b(tt, 5);
-    A c(tt, 7);
-  }
-  return tt.Product;
-}
-
-// 5, 3, 7, 2
-static unsigned f2() {
-  TempTracker tt;
-  {
-    A a(tt, 2);
-    if (A b = A(tt, 3))
-      A c(tt, 5);
-    A d(tt, 7);
-  }
-  return tt.Product;
-}
-
-// 7, 3, 11, 2
-static unsigned f3() {
-  TempTracker tt;
-  {
-    A a(tt, 2);
-    if (A b = A(tt, 3, false))
-      A c(tt, 5);
-    else
-      A c(tt, 7);
-    A d(tt, 11);
-  }
-  return tt.Product;
-}
-
-// 3, 7, 2
-static unsigned f4() {
-  TempTracker tt;
-  {
-    A a(tt, 2);
-    while (A b = A(tt, 3, false))
-      A c(tt, 5);
-    A c(tt, 7);
-  }
-  return tt.Product;
-}
-
-// 5, 3, 7, 2
-static unsigned f5() {
-  TempTracker tt;
-  {
-    A a(tt, 2);
-    while (A b = A(tt, 3, true)) {
-      A c(tt, 5);
-      break;
-    }
-    A c(tt, 7);
-  }
-  return tt.Product;
-}
-
-// 3, 7, 11, 5, 13, 2
-static unsigned f6() {
-  TempTracker tt;
-  {
-    A a(tt, 2);
-    for (A b = (A(tt, 3), A(tt, 5)), c = (A(tt, 7), A(tt, 11));;)
-      break;
-    A c(tt, 13);
-  }
-  return tt.Product;
-}
-
-// 5, 2
-static unsigned f7() {
-  TempTracker tt;
-  {
-    (void)((A(tt, 2, false) && A(tt, 3, false)) || A(tt, 5, false));
-  }
-  return tt.Product;
-}
-
-// 5, 2
-static unsigned f8() {
-  TempTracker tt;
-  
-  {
-    (void)((A(tt, 2) || A(tt, 3)) && A(tt, 5));
-  }
-  return tt.Product;
-}
-
-extern "C" void error();
-extern "C" void print(const char *Name, unsigned N);
-
-#define ORDER2(a, b) (pow(a, 1) * pow(b, 2))
-#define ORDER3(a, b, c) (ORDER2(a, b) * pow(c, 3))
-#define ORDER4(a, b, c, d) (ORDER3(a, b, c) * pow(d, 4))
-#define ORDER5(a, b, c, d, e) (ORDER4(a, b, c, d) * pow(e, 5))
-#define ORDER6(a, b, c, d, e, f) (ORDER5(a, b, c, d, e) * pow(f, 6))
-void test() {
-// CHECK: call void @print(i8* {{.*}}, i32 1176)
-  print("f0", f0());
-  if (f0() != ORDER3(3, 7, 2))
-    error();
-
-// CHECK: call void @print(i8* {{.*}}, i32 411600)
-  print("f1", f1());
-  if (f1() != ORDER4(3, 5, 7, 2))
-    error();
-
-// CHECK: call void @print(i8* {{.*}}, i32 246960)
-  print("f2", f2());
-  if (f2() != ORDER4(5, 3, 7, 2))
-    error();
-
-// CHECK: call void @print(i8* {{.*}}, i32 1341648)
-  print("f3", f3());
-  if (f3() != ORDER4(7, 3, 11, 2))
-    error();
-
-// CHECK: call void @print(i8* {{.*}}, i32 1176)
-  print("f4", f4());
-  if (f4() != ORDER3(3, 7, 2))
-    error();
-
-// CHECK: call void @print(i8* {{.*}}, i32 246960)
-  print("f5", f5());
-  if (f5() != ORDER4(5, 3, 7, 2))
-    error();
-
-// CHECK: call void @print(i8* {{.*}}, i32 1251552576)
-  print("f6", f6());
-  if (f6() != ORDER6(3, 7, 11, 5, 13, 2))
-    error();
-
-//  CHECK: call void @print(i8* {{.*}}, i32 20)
-  print("f7", f7());
-  if (f7() != ORDER2(5, 2))
-    error();
-
-//  CHECK: call void @print(i8* {{.*}}, i32 20)
-  print("f8", f8());
-  if (f8() != ORDER2(5, 2))
-    error();
-}
-
-
-
-#ifdef HARNESS
-
-#include <cstdlib>
-#include <cstdio>
-
-extern "C" void error() {
-  abort();
-}
-
-extern "C" void print(const char *name, unsigned N) {
-  printf("%s: %d\n", name, N);
-}
-
-int main() {
-  test();
-  return 0;
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-anonymous-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-anonymous-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-anonymous-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -emit-llvm -w -o - | FileCheck %s
-
-struct S {
-  enum { FOO = 42 };
-  enum { BAR = 42 };
-};
-
-template <typename T> struct X {
-  T value;
-  X(T t) : value(t) {}
-  int f() { return value; }
-};
-
-template <typename T> int f(T t) {
-  X<T> x(t);
-  return x.f();
-}
-
-void test() {
-  // Look for two instantiations, one for FOO's
-  // type and one for BAR's.
-  // CHECK: define linkonce_odr i32 @_Z1fIN1SUt_EEiT_(i32 %t)
-  (void)f(S::FOO);
-  // CHECK: define linkonce_odr i32 @_Z1fIN1SUt0_EEiT_(i32 %t)
-  (void)f(S::BAR);
-
-  // Now check for the class template instantiations. Annoyingly, they are in
-  // reverse order.
-  //
-  // BAR's instantiation of X:
-  // CHECK: define linkonce_odr i32 @_ZN1XIN1SUt0_EE1fEv(%struct.X* %this)
-  // CHECK: define linkonce_odr void @_ZN1XIN1SUt0_EEC2ES1_(%struct.X* %this, i32 %t) unnamed_addr
-  //
-  // FOO's instantiation of X:
-  // CHECK: define linkonce_odr i32 @_ZN1XIN1SUt_EE1fEv(%struct.X.0* %this)
-  // CHECK: define linkonce_odr void @_ZN1XIN1SUt_EEC2ES1_(%struct.X.0* %this, i32 %t) unnamed_addr
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-anonymous-union-member-initializer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-anonymous-union-member-initializer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-anonymous-union-member-initializer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-template <typename T>
-class A
-{
-    union { void *d; };
-
-public:
-    A() : d(0) { }
-};
-
-A<int> a0;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-dependent-bind-temporary.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-dependent-bind-temporary.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-dependent-bind-temporary.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// rdar: //8620524
-// PR7851
-struct string {
-  string (const string& );
-  string ();
-  ~string();
-};
-
-string operator + (char ch, const string&);
-
-template <class T>
-void IntToString(T a)
-{
- string result;
- T digit; 
- char((digit < 10 ? '0' : 'a') + digit) + result;
-}
-
-int main() {
-// CHECK: define linkonce_odr void @_Z11IntToStringIcEvT_(
-  IntToString('a');
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-inner-struct-visibility-hidden.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-inner-struct-visibility-hidden.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-inner-struct-visibility-hidden.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fvisibility hidden -emit-llvm -o - %s | FileCheck %s
-
-// Verify that symbols are hidden.
-// CHECK: @_ZN1CIiE5Inner6Inner26StaticE = weak_odr hidden global
-// CHECK: define weak_odr hidden void @_ZN1CIiE5Inner1fEv
-// CHECK: define weak_odr hidden void @_ZN1CIiE5Inner6Inner21gEv
-
-template<typename T>
-struct C {
-  struct Inner {
-    void f();
-    struct Inner2 {
-      void g();
-      static int Static;
-    };
-  };
-};
-
-template<typename T> void C<T>::Inner::f() { }
-template<typename T> void C<T>::Inner::Inner2::g() { }
-template<typename T> int C<T>::Inner::Inner2::Static;
-
-extern template struct C<int>;
-template struct C<int>;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-instantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-instantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-instantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,190 +0,0 @@
-// RUN: %clang_cc1 %s -O1 -disable-llvm-optzns -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// CHECK: @_ZN7PR100011xE = global
-// CHECK-NOT: @_ZN7PR100014kBarE = external global i32
-//
-// CHECK-NOT: @_ZTVN5test118stdio_sync_filebufIwEE = constant
-// CHECK-NOT: _ZTVN5test315basic_fstreamXXIcEE
-// CHECK: @_ZTVN5test018stdio_sync_filebufIwEE = unnamed_addr constant
-
-// CHECK: @_ZN7PR100011SIiE3arrE = weak_odr global [3 x i32]
-// CHECK-NOT: @_ZN7PR100011SIiE3arr2E = weak_odr global [3 x i32]A
-
-// CHECK-NOT: _ZTVN5test31SIiEE
-// CHECK-NOT: _ZTSN5test31SIiEE
-
-// CHECK: define linkonce_odr void @_ZN5test21CIiEC1Ev(%"class.test2::C"* %this) unnamed_addr
-// CHECK: define linkonce_odr void @_ZN5test21CIiE6foobarIdEEvT_(
-// CHECK: define available_externally void @_ZN5test21CIiE6zedbarEd(
-
-// CHECK: define linkonce_odr void @_ZN7PR106662g1ENS_1SILi1EEE()
-// CHECK: define linkonce_odr void @_ZN7PR106662g1ENS_1SILi2EEE()
-// CHECK: define linkonce_odr void @_ZN7PR106662g1ENS_1SILi3EEE()
-// CHECK: define linkonce_odr void @_ZN7PR106662g2ENS_1SILi1EEE()
-// CHECK: define linkonce_odr void @_ZN7PR106662g2ENS_1SILi2EEE()
-// CHECK: define linkonce_odr void @_ZN7PR106662g2ENS_1SILi3EEE()
-// CHECK: declare void @_ZN7PR106662h1ENS_1SILi1EEE()
-// CHECK: declare void @_ZN7PR106662h1ENS_1SILi2EEE()
-// CHECK: declare void @_ZN7PR106662h1ENS_1SILi3EEE()
-// CHECK: declare void @_ZN7PR106662h2ENS_1SILi1EEE()
-// CHECK: declare void @_ZN7PR106662h2ENS_1SILi2EEE()
-// CHECK: declare void @_ZN7PR106662h2ENS_1SILi3EEE()
-
-namespace test0 {
-  struct  basic_streambuf   {
-    virtual       ~basic_streambuf();
-  };
-  template<typename _CharT >
-  struct stdio_sync_filebuf : public basic_streambuf {
-    virtual void      xsgetn();
-  };
-
-  // This specialization should cause the vtable to be emitted, even with
-  // the following extern template declaration.
-  template<> void stdio_sync_filebuf<wchar_t>::xsgetn()  {
-  }
-  extern template class stdio_sync_filebuf<wchar_t>;
-}
-
-namespace test1 {
-  struct  basic_streambuf   {
-    virtual       ~basic_streambuf();
-  };
-  template<typename _CharT >
-  struct stdio_sync_filebuf : public basic_streambuf {
-    virtual void      xsgetn();
-  };
-
-  // Just a declaration should not force the vtable to be emitted.
-  template<> void stdio_sync_filebuf<wchar_t>::xsgetn();
-}
-
-namespace test2 {
-  template<typename T1>
-  class C {
-  public:
-    virtual ~C();
-    void zedbar(double) {
-    }
-    template<typename T2>
-    void foobar(T2 foo) {
-    }
-  };
-  extern template class C<int>;
-  void g() {
-    // The extern template declaration should not prevent us from producing
-    // the implicit constructor (test at the top).
-    C<int> a;
-
-    // or foobar(test at the top).
-    a.foobar(0.0);
-
-    // But it should prevent zebbar
-    // (test at the top).
-    a.zedbar(0.0);
-  }
-}
-
-namespace test3 {
-  template<typename T>
-  class basic_fstreamXX  {
-    virtual void foo(){}
-    virtual void is_open() const  { }
-  };
-
-  extern template class basic_fstreamXX<char>;
-  // This template instantiation should not cause us to produce a vtable.
-  // (test at the top).
-  template void basic_fstreamXX<char>::is_open() const;
-}
-
-namespace test3 {
-  template <typename T>
-  struct S  {
-      virtual void m();
-  };
-  
-  template<typename T>
-  void S<T>::m() { }
-
-  // Should not cause us to produce vtable because template instantiations
-  // don't have key functions.
-  template void S<int>::m();
-}
-
-namespace test4 {
-  template <class T> struct A { static void foo(); };
-
-  class B {
-    template <class T> friend void A<T>::foo();
-    B();
-  };
-
-  template <class T> void A<T>::foo() {
-    B b;
-  }
-
-  unsigned test() {
-    A<int>::foo();
-  }
-}
-
-namespace PR8505 {
-// Hits an assertion due to bogus instantiation of class B.
-template <int i> class A {
-  class B* g;
-};
-class B {
-  void f () {}
-};
-// Should not instantiate class B since it is introduced in namespace scope.
-// CHECK-NOT: _ZN6PR85051AILi0EE1B1fEv
-template class A<0>;
-}
-
-// Ensure that when instantiating initializers for static data members to
-// complete their type in an unevaluated context, we *do* emit initializers with
-// side-effects, but *don't* emit initializers and variables which are otherwise
-// unused in the program.
-namespace PR10001 {
-  template <typename T> struct S {
-    static const int arr[];
-    static const int arr2[];
-    static const int x, y;
-    static int f();
-  };
-
-  extern int foo();
-  extern int kBar;
-
-  template <typename T> const int S<T>::arr[] = { 1, 2, foo() }; // possible side effects
-  template <typename T> const int S<T>::arr2[] = { 1, 2, kBar }; // no side effects
-  template <typename T> const int S<T>::x = sizeof(arr) / sizeof(arr[0]);
-  template <typename T> const int S<T>::y = sizeof(arr2) / sizeof(arr2[0]);
-  template <typename T> int S<T>::f() { return x + y; }
-
-  int x = S<int>::f();
-}
-
-// Ensure that definitions are emitted for all friend functions defined within
-// class templates. Order of declaration is extremely important here. Different
-// instantiations of the class happen at different points during the deferred
-// method body parsing and afterward. Those different points of instantiation
-// change the exact form the class template appears to have.
-namespace PR10666 {
-  template <int N> struct S {
-    void f1() { S<1> s; }
-    friend void g1(S s) {}
-    friend void h1(S s);
-    void f2() { S<2> s; }
-    friend void g2(S s) {}
-    friend void h2(S s);
-    void f3() { S<3> s; }
-  };
-  void test(S<1> s1, S<2> s2, S<3> s3) {
-    g1(s1); g1(s2); g1(s3);
-    g2(s1); g2(s2); g2(s3);
-    h1(s1); h1(s2); h1(s3);
-    h2(s1); h2(s2); h2(s3);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// CHECK: Outer5Inner{{.*}}localE6memberE = external global
-
-template<typename T> struct A {
-  virtual void f(T) { }
-  inline void g() { } 
-};
-
-// Explicit instantiations have external linkage.
-
-// CHECK: define weak_odr void @_ZN1AIiE1gEv(
-template void A<int>::g();
-
-// CHECK: define weak_odr void @_ZN1AIfE1fEf(
-// CHECK: define weak_odr void @_ZN1AIfE1gEv(
-// FIXME: This should also emit the vtable.
-template struct A<float>;
-
-// CHECK: define weak_odr void @_Z1fIiEvT_
-template <typename T> void f(T) { }
-template void f<int>(int);
-
-// CHECK: define weak_odr void @_Z1gIiEvT_
-template <typename T> inline void g(T) { }
-template void g<int>(int);
-
-template<typename T>
-struct X0 {
-  virtual ~X0() { }
-};
-
-template<typename T>
-struct X1 : X0<T> {
-  virtual void blarg();
-};
-
-template<typename T> void X1<T>::blarg() { }
-
-extern template struct X0<char>;
-extern template struct X1<char>;
-
-// CHECK: define linkonce_odr void @_ZN2X1IcED1Ev(%struct.X1* %this) unnamed_addr
-void test_X1() {
-  X1<char> i1c;
-}
-
-namespace PR14825 {
-struct Outer {
-  template <typename T> struct Inner {
-    static int member;
-  };
-  template <typename T> void Get() {
-    int m = Inner<T>::member;
-  }
-};
-
-void test() {
-  struct local {};
-  Outer o;
-  typedef void (Outer::*mptr)();
-  mptr method = &Outer::Get<local>;
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-static-var-defer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-static-var-defer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/template-static-var-defer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | not grep define
-// PR7415
-class X {
-  template <class Dummy> struct COMTypeInfo {
-    static const int kIID;
-  };
-  static const int& GetIID() {return COMTypeInfo<int>::kIID;}
-};
-template <class Dummy> const int X::COMTypeInfo<Dummy>::kIID = 10;
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/temporaries.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/temporaries.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/temporaries.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,560 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s
-struct A {
-  A();
-  ~A();
-  void f();
-};
-
-void f1() {
-  // CHECK: call void @_ZN1AC1Ev
-  // CHECK: call void @_ZN1AD1Ev
-  (void)A();
-
-  // CHECK: call void @_ZN1AC1Ev
-  // CHECK: call void @_ZN1AD1Ev
-  A().f();
-}
-
-// Function calls
-struct B {
-  B();
-  ~B();
-};
-
-B g();
-
-void f2() {
-  // CHECK-NOT: call void @_ZN1BC1Ev
-  // CHECK: call void @_ZN1BD1Ev
-  (void)g();
-}
-
-// Member function calls
-struct C {
-  C();
-  ~C();
-  
-  C f();
-};
-
-void f3() {
-  // CHECK: call void @_ZN1CC1Ev
-  // CHECK: call void @_ZN1CD1Ev
-  // CHECK: call void @_ZN1CD1Ev
-  C().f();
-}
-
-// Function call operator
-struct D {
-  D();
-  ~D();
-  
-  D operator()();
-};
-
-void f4() {
-  // CHECK: call void @_ZN1DC1Ev
-  // CHECK: call void @_ZN1DD1Ev
-  // CHECK: call void @_ZN1DD1Ev
-  D()();
-}
-
-// Overloaded operators
-struct E {
-  E();
-  ~E();
-  E operator+(const E&);
-  E operator!();
-};
-
-void f5() {
-  // CHECK: call void @_ZN1EC1Ev
-  // CHECK: call void @_ZN1EC1Ev
-  // CHECK: call void @_ZN1ED1Ev
-  // CHECK: call void @_ZN1ED1Ev
-  // CHECK: call void @_ZN1ED1Ev
-  E() + E();
-  
-  // CHECK: call void @_ZN1EC1Ev
-  // CHECK: call void @_ZN1ED1Ev
-  // CHECK: call void @_ZN1ED1Ev
-  !E();
-}
-
-struct F {
-  F();
-  ~F();
-  F& f();
-};
-
-void f6() {
-  // CHECK: call void @_ZN1FC1Ev
-  // CHECK: call void @_ZN1FD1Ev
-  F().f();
-}
-
-struct G {
-  G();
-  G(A);
-  ~G();
-  operator A();
-};
-
-void a(const A&);
-
-void f7() {
-  // CHECK: call void @_ZN1AC1Ev
-  // CHECK: call void @_Z1aRK1A
-  // CHECK: call void @_ZN1AD1Ev
-  a(A());
-  
-  // CHECK: call void @_ZN1GC1Ev
-  // CHECK: call void @_ZN1Gcv1AEv
-  // CHECK: call void @_Z1aRK1A
-  // CHECK: call void @_ZN1AD1Ev
-  // CHECK: call void @_ZN1GD1Ev
-  a(G());
-}
-
-namespace PR5077 {
-
-struct A {
-  A();
-  ~A();
-  int f();
-};
-
-void f();
-int g(const A&);
-
-struct B {
-  int a1;
-  int a2;
-  B();
-  ~B();
-};
-
-B::B()
-  // CHECK: call void @_ZN6PR50771AC1Ev
-  // CHECK: call i32 @_ZN6PR50771A1fEv
-  // CHECK: call void @_ZN6PR50771AD1Ev
-  : a1(A().f())
-  // CHECK: call void @_ZN6PR50771AC1Ev
-  // CHECK: call i32 @_ZN6PR50771gERKNS_1AE
-  // CHECK: call void @_ZN6PR50771AD1Ev
-  , a2(g(A()))
-{
-  // CHECK: call void @_ZN6PR50771fEv
-  f();
-}
-  
-struct C {
-  C();
-  
-  const B& b;
-};
-
-C::C() 
-  // CHECK: call void @_ZN6PR50771BC1Ev
-  : b(B()) {
-  // CHECK: call void @_ZN6PR50771fEv
-  f();
-  
-  // CHECK: call void @_ZN6PR50771BD1Ev
-}
-}
-
-A f8() {
-  // CHECK: call void @_ZN1AC1Ev
-  // CHECK-NOT: call void @_ZN1AD1Ev
-  return A();
-  // CHECK: ret void
-}
-
-struct H {
-  H();
-  ~H();
-  H(const H&);
-};
-
-void f9(H h) {
-  // CHECK: call void @_ZN1HC1Ev
-  // CHECK: call void @_Z2f91H
-  // CHECK: call void @_ZN1HD1Ev
-  f9(H());
-  
-  // CHECK: call void @_ZN1HC1ERKS_
-  // CHECK: call void @_Z2f91H
-  // CHECK: call void @_ZN1HD1Ev
-  f9(h);
-}
-
-void f10(const H&);
-
-void f11(H h) {
-  // CHECK: call void @_ZN1HC1Ev
-  // CHECK: call void @_Z3f10RK1H
-  // CHECK: call void @_ZN1HD1Ev
-  f10(H());
-  
-  // CHECK: call void @_Z3f10RK1H
-  // CHECK-NOT: call void @_ZN1HD1Ev
-  // CHECK: ret void
-  f10(h);
-}
-
-// PR5808
-struct I {
-  I(const char *);
-  ~I();
-};
-
-// CHECK: _Z3f12v
-I f12() {
-  // CHECK: call void @_ZN1IC1EPKc
-  // CHECK-NOT: call void @_ZN1ID1Ev
-  // CHECK: ret void
-  return "Hello";
-}
-
-// PR5867
-namespace PR5867 {
-  struct S {
-    S();
-    S(const S &);
-    ~S();
-  };
-
-  void f(S, int);
-  // CHECK: define void @_ZN6PR58671gEv
-  void g() {
-    // CHECK: call void @_ZN6PR58671SC1Ev
-    // CHECK-NEXT: call void @_ZN6PR58671fENS_1SEi
-    // CHECK-NEXT: call void @_ZN6PR58671SD1Ev
-    // CHECK-NEXT: ret void
-    (f)(S(), 0);
-  }
-
-  // CHECK: define linkonce_odr void @_ZN6PR58672g2IiEEvT_
-  template<typename T>
-  void g2(T) {
-    // CHECK: call void @_ZN6PR58671SC1Ev
-    // CHECK-NEXT: call void @_ZN6PR58671fENS_1SEi
-    // CHECK-NEXT: call void @_ZN6PR58671SD1Ev
-    // CHECK-NEXT: ret void
-    (f)(S(), 0);
-  }
-
-  void h() {
-    g2(17);
-  }
-}
-
-// PR6199
-namespace PR6199 {
-  struct A { ~A(); };
-
-  struct B { operator A(); };
-
-  // CHECK: define weak_odr void @_ZN6PR61992f2IiEENS_1AET_
-  template<typename T> A f2(T) {
-    B b;
-    // CHECK: call void @_ZN6PR61991BcvNS_1AEEv
-    // CHECK-NEXT: ret void
-    return b;
-  }
-
-  template A f2<int>(int);
-  
-}
-
-namespace T12 {
-
-struct A { 
-  A(); 
-  ~A();
-  int f();
-};
-
-int& f(int);
-
-// CHECK: define void @_ZN3T121gEv
-void g() {
-  // CHECK: call void @_ZN3T121AC1Ev
-  // CHECK-NEXT: call i32 @_ZN3T121A1fEv(
-  // CHECK-NEXT: call i32* @_ZN3T121fEi(
-  // CHECK-NEXT: call void @_ZN3T121AD1Ev(
-  int& i = f(A().f());
-}
-
-}
-
-namespace PR6648 {
-  struct B {
-    ~B();
-  };
-  B foo;
-  struct D;
-  D& zed(B);
-  void foobar() {
-    // CHECK: call %"struct.PR6648::D"* @_ZN6PR66483zedENS_1BE
-    zed(foo);
-  }
-}
-
-namespace UserConvertToValue {
-  struct X {
-    X(int);
-    X(const X&);
-    ~X();
-  };
-
-  void f(X);
-
-  // CHECK: void @_ZN18UserConvertToValue1gEv() 
-  void g() {
-    // CHECK: call void @_ZN18UserConvertToValue1XC1Ei
-    // CHECK: call void @_ZN18UserConvertToValue1fENS_1XE
-    // CHECK: call void @_ZN18UserConvertToValue1XD1Ev
-    // CHECK: ret void
-    f(1);
-  }
-}
-
-namespace PR7556 {
-  struct A { ~A(); }; 
-  struct B { int i; ~B(); }; 
-  struct C { int C::*pm; ~C(); }; 
-  // CHECK: define void @_ZN6PR75563fooEv()
-  void foo() { 
-    // CHECK: call void @_ZN6PR75561AD1Ev
-    A(); 
-    // CHECK: call void @llvm.memset.p0i8.i64
-    // CHECK: call void @_ZN6PR75561BD1Ev
-    B();
-    // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-    // CHECK: call void @_ZN6PR75561CD1Ev
-    C();
-    // CHECK-NEXT: ret void
-  }
-}
-
-namespace Elision {
-  struct A {
-    A(); A(const A &); ~A();
-    void *p;
-    void foo() const;
-  };
-
-  void foo();
-  A fooA();
-  void takeA(A a);
-
-  // CHECK: define void @_ZN7Elision5test0Ev()
-  void test0() {
-    // CHECK:      [[I:%.*]] = alloca [[A:%.*]], align 8
-    // CHECK-NEXT: [[J:%.*]] = alloca [[A]], align 8
-    // CHECK-NEXT: [[T0:%.*]] = alloca [[A]], align 8
-    // CHECK-NEXT: [[K:%.*]] = alloca [[A]], align 8
-    // CHECK-NEXT: [[T1:%.*]] = alloca [[A]], align 8
-
-    // CHECK-NEXT: call void @_ZN7Elision3fooEv()
-    // CHECK-NEXT: call void @_ZN7Elision1AC1Ev([[A]]* [[I]])
-    A i = (foo(), A());
-
-    // CHECK-NEXT: call void @_ZN7Elision4fooAEv([[A]]* sret [[T0]])
-    // CHECK-NEXT: call void @_ZN7Elision1AC1Ev([[A]]* [[J]])
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[T0]])
-    A j = (fooA(), A());
-
-    // CHECK-NEXT: call void @_ZN7Elision1AC1Ev([[A]]* [[T1]])
-    // CHECK-NEXT: call void @_ZN7Elision4fooAEv([[A]]* sret [[K]])
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[T1]])
-    A k = (A(), fooA());
-
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[K]])
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[J]])
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[I]])
-  }
-
-
-  // CHECK: define void @_ZN7Elision5test1EbNS_1AE(
-  void test1(bool c, A x) {
-    // CHECK:      [[I:%.*]] = alloca [[A]], align 8
-    // CHECK-NEXT: [[J:%.*]] = alloca [[A]], align 8
-
-    // CHECK:      call void @_ZN7Elision1AC1Ev([[A]]* [[I]])
-    // CHECK:      call void @_ZN7Elision1AC1ERKS0_([[A]]* [[I]], [[A]]* [[X:%.*]])
-    A i = (c ? A() : x);
-
-    // CHECK:      call void @_ZN7Elision1AC1ERKS0_([[A]]* [[J]], [[A]]* [[X]])
-    // CHECK:      call void @_ZN7Elision1AC1Ev([[A]]* [[J]])
-    A j = (c ? x : A());
-
-    // CHECK:      call void @_ZN7Elision1AD1Ev([[A]]* [[J]])
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[I]])
-  }
-
-  // CHECK: define void @_ZN7Elision5test2Ev([[A]]* noalias sret
-  A test2() {
-    // CHECK:      call void @_ZN7Elision3fooEv()
-    // CHECK-NEXT: call void @_ZN7Elision1AC1Ev([[A]]* [[RET:%.*]])
-    // CHECK-NEXT: ret void
-    return (foo(), A());
-  }
-
-  // CHECK: define void @_ZN7Elision5test3EiNS_1AE([[A]]* noalias sret
-  A test3(int v, A x) {
-    if (v < 5)
-    // CHECK:      call void @_ZN7Elision1AC1Ev([[A]]* [[RET:%.*]])
-    // CHECK:      call void @_ZN7Elision1AC1ERKS0_([[A]]* [[RET]], [[A]]* [[X:%.*]])
-      return (v < 0 ? A() : x);
-    else
-    // CHECK:      call void @_ZN7Elision1AC1ERKS0_([[A]]* [[RET]], [[A]]* [[X]])
-    // CHECK:      call void @_ZN7Elision1AC1Ev([[A]]* [[RET]])
-      return (v > 10 ? x : A());
-
-    // CHECK:      ret void
-  }
-
-  // CHECK: define void @_ZN7Elision5test4Ev()
-  void test4() {
-    // CHECK:      [[X:%.*]] = alloca [[A]], align 8
-    // CHECK-NEXT: [[XS:%.*]] = alloca [2 x [[A]]], align 16
-
-    // CHECK-NEXT: call void @_ZN7Elision1AC1Ev([[A]]* [[X]])
-    A x;
-
-    // CHECK-NEXT: [[XS0:%.*]] = getelementptr inbounds [2 x [[A]]]* [[XS]], i64 0, i64 0
-    // CHECK-NEXT: call void @_ZN7Elision1AC1Ev([[A]]* [[XS0]])
-    // CHECK-NEXT: [[XS1:%.*]] = getelementptr inbounds [[A]]* [[XS0]], i64 1
-    // CHECK-NEXT: call void @_ZN7Elision1AC1ERKS0_([[A]]* [[XS1]], [[A]]* [[X]])
-    A xs[] = { A(), x };
-
-    // CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [2 x [[A]]]* [[XS]], i32 0, i32 0
-    // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 2
-    // CHECK-NEXT: br label
-    // CHECK:      [[AFTER:%.*]] = phi [[A]]*
-    // CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds [[A]]* [[AFTER]], i64 -1
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[CUR]])
-    // CHECK-NEXT: [[T0:%.*]] = icmp eq [[A]]* [[CUR]], [[BEGIN]]
-    // CHECK-NEXT: br i1 [[T0]],
-
-    // CHECK:      call void @_ZN7Elision1AD1Ev([[A]]* [[X]])
-  }
-
-  // rdar://problem/8433352
-  // CHECK: define void @_ZN7Elision5test5Ev([[A]]* noalias sret
-  struct B { A a; B(); };
-  A test5() {
-    // CHECK:      [[AT0:%.*]] = alloca [[A]], align 8
-    // CHECK-NEXT: [[BT0:%.*]] = alloca [[B:%.*]], align 8
-    // CHECK-NEXT: [[X:%.*]] = alloca [[A]], align 8
-    // CHECK-NEXT: [[BT1:%.*]] = alloca [[B]], align 8
-    // CHECK-NEXT: [[BT2:%.*]] = alloca [[B]], align 8
-
-    // CHECK:      call void @_ZN7Elision1BC1Ev([[B]]* [[BT0]])
-    // CHECK-NEXT: [[AM:%.*]] = getelementptr inbounds [[B]]* [[BT0]], i32 0, i32 0
-    // CHECK-NEXT: call void @_ZN7Elision1AC1ERKS0_([[A]]* [[AT0]], [[A]]* [[AM]])
-    // CHECK-NEXT: call void @_ZN7Elision5takeAENS_1AE([[A]]* [[AT0]])
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[AT0]])
-    // CHECK-NEXT: call void @_ZN7Elision1BD1Ev([[B]]* [[BT0]])
-    takeA(B().a);
-
-    // CHECK-NEXT: call void @_ZN7Elision1BC1Ev([[B]]* [[BT1]])
-    // CHECK-NEXT: [[AM:%.*]] = getelementptr inbounds [[B]]* [[BT1]], i32 0, i32 0
-    // CHECK-NEXT: call void @_ZN7Elision1AC1ERKS0_([[A]]* [[X]], [[A]]* [[AM]])
-    // CHECK-NEXT: call void @_ZN7Elision1BD1Ev([[B]]* [[BT1]])
-    A x = B().a;
-
-    // CHECK-NEXT: call void @_ZN7Elision1BC1Ev([[B]]* [[BT2]])
-    // CHECK-NEXT: [[AM:%.*]] = getelementptr inbounds [[B]]* [[BT2]], i32 0, i32 0
-    // CHECK-NEXT: call void @_ZN7Elision1AC1ERKS0_([[A]]* [[RET:%.*]], [[A]]* [[AM]])
-    // CHECK-NEXT: call void @_ZN7Elision1BD1Ev([[B]]* [[BT2]])
-    return B().a;
-
-    // CHECK:      call void @_ZN7Elision1AD1Ev([[A]]* [[X]])
-  }
-
-  // Reduced from webkit.
-  // CHECK: define void @_ZN7Elision5test6EPKNS_1CE([[C:%.*]]*
-  struct C { operator A() const; };
-  void test6(const C *x) {
-    // CHECK:      [[T0:%.*]] = alloca [[A]], align 8
-    // CHECK:      [[X:%.*]] = load [[C]]** {{%.*}}, align 8
-    // CHECK-NEXT: call void @_ZNK7Elision1CcvNS_1AEEv([[A]]* sret [[T0]], [[C]]* [[X]])
-    // CHECK-NEXT: call void @_ZNK7Elision1A3fooEv([[A]]* [[T0]])
-    // CHECK-NEXT: call void @_ZN7Elision1AD1Ev([[A]]* [[T0]])
-    // CHECK-NEXT: ret void
-    A(*x).foo();
-  }
-}
-
-namespace PR8623 {
-  struct A { A(int); ~A(); };
-
-  // CHECK: define void @_ZN6PR86233fooEb(
-  void foo(bool b) {
-    // CHECK:      [[TMP:%.*]] = alloca [[A:%.*]], align 1
-    // CHECK-NEXT: [[LCONS:%.*]] = alloca i1
-    // CHECK-NEXT: [[RCONS:%.*]] = alloca i1
-    // CHECK:      store i1 false, i1* [[LCONS]]
-    // CHECK-NEXT: store i1 false, i1* [[RCONS]]
-    // CHECK-NEXT: br i1
-    // CHECK:      call void @_ZN6PR86231AC1Ei([[A]]* [[TMP]], i32 2)
-    // CHECK-NEXT: store i1 true, i1* [[LCONS]]
-    // CHECK-NEXT: br label
-    // CHECK:      call void @_ZN6PR86231AC1Ei([[A]]* [[TMP]], i32 3)
-    // CHECK-NEXT: store i1 true, i1* [[RCONS]]
-    // CHECK-NEXT: br label
-    // CHECK:      load i1* [[RCONS]]
-    // CHECK-NEXT: br i1
-    // CHECK:      call void @_ZN6PR86231AD1Ev([[A]]* [[TMP]])
-    // CHECK-NEXT: br label
-    // CHECK:      load i1* [[LCONS]]
-    // CHECK-NEXT: br i1
-    // CHECK:      call void @_ZN6PR86231AD1Ev([[A]]* [[TMP]])
-    // CHECK-NEXT: br label
-    // CHECK:      ret void
-    b ? A(2) : A(3);
-  }
-}
-
-namespace PR11365 {
-  struct A { A(); ~A(); };
-
-  // CHECK: define void @_ZN7PR113653fooEv(
-  void foo() {
-    // CHECK: [[BEGIN:%.*]] = getelementptr inbounds [3 x [[A:%.*]]]* {{.*}}, i32 0, i32 0
-    // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [[A]]* [[BEGIN]], i64 3
-    // CHECK-NEXT: br label
-
-    // CHECK: [[PHI:%.*]] = phi
-    // CHECK-NEXT: [[ELEM:%.*]] = getelementptr inbounds [[A]]* [[PHI]], i64 -1
-    // CHECK-NEXT: call void @_ZN7PR113651AD1Ev([[A]]* [[ELEM]])
-    // CHECK-NEXT: icmp eq [[A]]* [[ELEM]], [[BEGIN]]
-    // CHECK-NEXT: br i1
-    (void) (A [3]) {};
-  }
-}
-
-namespace AssignmentOp {
-  struct A { ~A(); };
-  struct B { A operator=(const B&); };
-  struct C : B { B b1, b2; };
-  // CHECK: define void @_ZN12AssignmentOp1fE
-  void f(C &c1, const C &c2) {
-    // CHECK: call {{.*}} @_ZN12AssignmentOp1CaSERKS0_(
-    c1 = c2;
-  }
-
-  // Ensure that each 'A' temporary is destroyed before the next subobject is
-  // copied.
-  // CHECK: define {{.*}} @_ZN12AssignmentOp1CaSERKS0_(
-  // CHECK: call {{.*}} @_ZN12AssignmentOp1BaSERKS
-  // CHECK: call {{.*}} @_ZN12AssignmentOp1AD1Ev(
-  // CHECK: call {{.*}} @_ZN12AssignmentOp1BaSERKS
-  // CHECK: call {{.*}} @_ZN12AssignmentOp1AD1Ev(
-  // CHECK: call {{.*}} @_ZN12AssignmentOp1BaSERKS
-  // CHECK: call {{.*}} @_ZN12AssignmentOp1AD1Ev(
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thiscall-struct-return.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thiscall-struct-return.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thiscall-struct-return.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// For MSVC ABI compatibility, all structures returned by value using the
-// thiscall calling convention must use the hidden parameter.
-//
-// RUN: %clang_cc1 -triple i386-PC-Win32 %s -fms-compatibility -O0 -emit-llvm -o - | FileCheck %s
-
-// This structure would normally be returned via EAX
-struct S {
-  int i;
-};
-
-// This structure would normally be returned via EAX/EDX
-struct M {
-  int i;
-  int j;
-};
-
-class C {
-public:
-  C() {}
-
-  struct S __attribute__((thiscall)) Small() const {
-    struct S s = { 0 };
-    return s;
-  }
-
-  struct M __attribute__((thiscall)) Medium() const {
-    struct M m = { 0 };
-    return m;
-  }
-};
-
-// CHECK: define void @_Z4testv()
-void test( void ) {
-// CHECK: call void @_ZN1CC1Ev(%class.C* [[C:%.+]])
-  C c;
-
-// CHECK: call x86_thiscallcc void @_ZNK1C5SmallEv(%struct.S* sret %{{.+}}, %class.C* [[C]])
-  (void)c.Small();
-// CHECK: call x86_thiscallcc void @_ZNK1C6MediumEv(%struct.M* sret %{{.+}}, %class.C* [[C]])
-  (void)c.Medium();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/threadsafe-statics-exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/threadsafe-statics-exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/threadsafe-statics-exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 %s | FileCheck %s
-
-struct X {
-  X();
-  ~X();
-};
-
-struct Y { };
-
-// CHECK: define void @_Z1fv
-void f() {
-  // CHECK: call i32 @__cxa_guard_acquire(i64* @_ZGVZ1fvE1x)
-  // CHECK: invoke void @_ZN1XC1Ev
-  // CHECK: call i32 @__cxa_atexit
-  // CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ1fvE1x)
-  // CHECK: br
-  static X x;
-
-  // CHECK: call i8* @__cxa_allocate_exception
-  // CHECK: call void @__cxa_throw
-  throw Y();
-
-  // Finally, the landing pad.
-  // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-  // CHECK:   cleanup
-  // CHECK: call void @__cxa_guard_abort(i64* @_ZGVZ1fvE1x)
-  // CHECK: resume { i8*, i32 }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/threadsafe-statics.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/threadsafe-statics.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/threadsafe-statics.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple=x86_64-apple-darwin10 -o - %s | FileCheck -check-prefix=WITH-TSS %s
-// RUN: %clang_cc1 -emit-llvm -triple=x86_64-apple-darwin10 -o - %s -fno-threadsafe-statics | FileCheck -check-prefix=NO-TSS %s
-
-int f();
-
-// WITH-TSS: @_ZZ1gvE1a = internal global i32 0, align 4
-// WITH-TSS: @_ZGVZ1gvE1a = internal global i64 0
-
-// WITH-TSS: define void @_Z1gv() [[NUW:#[0-9]+]]
-// WITH-TSS: call i32 @__cxa_guard_acquire
-// WITH-TSS: call void @__cxa_guard_release
-// WITH-TSS: ret void
-void g() { 
-  static int a = f();
-}
-
-// NO-TSS: @_ZZ1gvE1a = internal global i32 0, align 4
-// NO-TSS: @_ZGVZ1gvE1a = internal global i8 0
-
-// NO-TSS: define void @_Z1gv() [[NUW:#[0-9]+]]
-// NO-TSS-NOT: call i32 @__cxa_guard_acquire
-// NO-TSS-NOT: call void @__cxa_guard_release
-// NO-TSS: ret void
-
-// WITH-TSS: attributes [[NUW]] = { nounwind{{.*}} }
-
-// NO-TSS: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expression-cleanup.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expression-cleanup.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expression-cleanup.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-none-linux-gnu -emit-llvm -fcxx-exceptions -fexceptions -std=c++11 -o - | FileCheck %s
-// PR13359
-
-struct X {
-  ~X();
-};
-struct Error {
-  Error(const X&) noexcept;
-};
-
-void f() {
-  try {
-    throw Error(X());
-  } catch (...) { }
-}
-
-// CHECK: define void @_Z1fv
-// CHECK: call void @_ZN5ErrorC1ERK1X
-// CHECK: invoke void @__cxa_throw
-// CHECK: landingpad
-// CHECK: call void @_ZN1XD1Ev
-// CHECK-NOT: __cxa_free_exception

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expression-dtor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expression-dtor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expression-dtor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only -verify -fcxx-exceptions -fexceptions
-// expected-no-diagnostics
-// PR7281
-
-class A {
-public:
-    ~A();
-};
-class B : public A {
-    void ice_throw();
-};
-void B::ice_throw() {
-    throw *this;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expressions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expressions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/throw-expressions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -Wno-unreachable-code -Werror -triple x86_64-linux-gnu -emit-llvm -o - %s | FileCheck %s
-
-int val = 42;
-int& test1() {
-  return throw val, val;
-}
-
-int test2() {
-  return val ? throw val : val;
-}
-
-// rdar://problem/8608801
-void test3() {
-  throw false;
-}
-
-// PR10582
-int test4() {
-  return 1 ? throw val : val;
-}
-
-// PR15923
-int test5(bool x, bool y, int z) {
-  return (x ? throw 1 : y) ? z : throw 2;
-}
-// CHECK: define i32 @_Z5test5bbi(
-// CHECK: br i1
-//
-// x.true:
-// CHECK: call void @__cxa_throw(
-// CHECK-NEXT: unreachable
-//
-// x.false:
-// CHECK: br i1
-//
-// y.true:
-// CHECK: load i32*
-// CHECK: br label
-//
-// y.false:
-// CHECK: call void @__cxa_throw(
-// CHECK-NEXT: unreachable
-//
-// end:
-// CHECK: ret i32

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunk-linkonce-odr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunk-linkonce-odr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunk-linkonce-odr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - | FileCheck %s
-// <rdar://problem/7929157> & <rdar://problem/8104369>
-
-struct A {
-  virtual int f() { return 1; }
-};
-
-struct B {
-  virtual int f() { return 2; }
-};
-
-struct C : A, B {
-  virtual int f() { return 3; }
-};
-
-struct D : C {
-  virtual int f() { return 4; }
-};
-
-static int f(D* d) {
-  B* b = d;
-  return b->f();
-};
-
-int g() {
-  D d;
-  return f(&d);
-}
-
-// Thunks should be marked as "linkonce ODR" not "weak".
-//
-// CHECK: define linkonce_odr i32 @_ZThn{{[48]}}_N1D1fEv
-// CHECK: define linkonce_odr i32 @_ZThn{{[48]}}_N1C1fEv

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunk-use-after-free.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunk-use-after-free.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunk-use-after-free.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -O1 %s
-// This used to crash under asan and valgrind.
-// PR12284
-
-template < typename _Tp > struct new_allocator
-{
-  typedef _Tp *pointer;
-  template < typename > struct rebind {
-    typedef new_allocator other;
-  };
-};
-template < typename _Tp > struct allocator:new_allocator < _Tp > {
-};
-template < typename _Tp, typename _Alloc > struct _Vector_base {
-  typedef typename _Alloc::template rebind < _Tp >::other _Tp_alloc_type;
-  struct _Vector_impl {
-    typename _Tp_alloc_type::pointer _M_end_of_storage;
-  };
-  _Vector_base () {
-    foo((int *) this->_M_impl._M_end_of_storage);
-  }
-  void foo(int *);
-  _Vector_impl _M_impl;
-};
-template < typename _Tp, typename _Alloc =
-allocator < _Tp > >struct vector:_Vector_base < _Tp, _Alloc > { };
-
-
-template < class T> struct HHH {};
-struct DDD { int x_;};
-struct Data;
-struct X1;
-struct CCC:DDD {   virtual void xxx (HHH < X1 >); };
-template < class SSS > struct EEE:vector < HHH < SSS > > { };
-template < class SSS, class = EEE < SSS > >class FFF { };
-template < class SSS, class GGG = EEE < SSS > >class AAA:FFF <GGG> { };
-class BBB:virtual CCC {
-  void xxx (HHH < X1 >);
-  vector < HHH < X1 > >aaa;
-};
-class ZZZ:AAA < Data >, BBB { virtual ZZZ *ppp () ; };
-ZZZ * ZZZ::ppp () { return new ZZZ; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunks-available-externally.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunks-available-externally.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunks-available-externally.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o - | FileCheck %s
-
-// Check that we don't assert on this case.
-namespace Test1 {
-
-struct Incomplete;
-
-struct A {
-  virtual void f();
-  virtual void g(Incomplete);
-  virtual void h();
-  virtual void i();
-  int a;
-};
-
-struct B {
-  virtual void f();
-  virtual void g(Incomplete);
-  virtual void h();
-  virtual void i();
-  int b;
-};
-
-struct C : A, B {
-  C();
-
-  virtual void f();
-  virtual void g(Incomplete);
-  virtual void h();
-  virtual void i();
-};
-
-void C::h() { }
-
-C::C() { }
-
-void C::i() { }
-
-}
-
-namespace Test2 {
-
-struct A {
-  virtual void f();
-  int a;
-};
-
-struct B {
-  virtual void f();
-  int b;
-};
-
-struct C : A, B {
-  virtual void f();
-};
-
-static void f(B* b) {
-  b->f();
-}
-
-// CHECK: define void @_ZN5Test21fEv()
-// CHECK: call void @_ZN5Test21C1fEv
-// CHECK: ret void
-// CHECK: define available_externally void @_ZThn16_N5Test21C1fEv
-void f() {
-  C c;
-  f(&c);
-}
-
-}
-
-// Test that we don't assert.
-namespace Test3 {
-
-struct A {
-  virtual ~A();
-
-  int a;
-};
-
-struct B : A { };
-struct C : virtual B { };
-
-void f() {
-  C c;
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/thunks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,351 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-pc-linux-gnu -munwind-tables -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple=x86_64-pc-linux-gnu -munwind-tables -fhidden-weak-vtables -emit-llvm -o - | FileCheck -check-prefix=HIDDEN %s
-
-namespace Test1 {
-
-// Check that we emit a non-virtual thunk for C::f.
-
-struct A {
-  virtual void f();
-};
-
-struct B {
-  virtual void f();
-};
-
-struct C : A, B {
-  virtual void c();
-  
-  virtual void f();
-};
-
-// CHECK: define void @_ZThn8_N5Test11C1fEv(
-void C::f() { }
-
-}
-
-namespace Test2 {
-
-// Check that we emit a thunk for B::f since it's overriding a virtual base.
-
-struct A {
-  virtual void f();
-};
-
-struct B : virtual A {
-  virtual void b();
-  virtual void f();
-};
-
-// CHECK: define void @_ZTv0_n24_N5Test21B1fEv(
-void B::f() { }
-
-}
-
-namespace Test3 {
-
-// Check that we emit a covariant thunk for B::f.
-
-struct V1 { };
-struct V2 : virtual V1 { };
-
-struct A {
-  virtual V1 *f();
-};
-
-struct B : A {
-  virtual void b();
-  
-  virtual V2 *f();
-};
-
-// CHECK: define %{{.*}}* @_ZTch0_v0_n24_N5Test31B1fEv(
-V2 *B::f() { return 0; }
-
-}
-
-namespace Test4 {
-
-// Check that the thunk for 'C::f' has the same visibility as the function itself.
-
-struct A {
-  virtual void f();
-};
-
-struct B {
-  virtual void f();
-};
-
-struct __attribute__((visibility("protected"))) C : A, B {
-  virtual void c();
-  
-  virtual void f();
-};
-
-// CHECK: define protected void @_ZThn8_N5Test41C1fEv(
-void C::f() { }
-
-}
-
-// Check that the thunk gets internal linkage.
-namespace Test4B {
-  struct A {
-    virtual void f();
-  };
-
-  struct B {
-    virtual void f();
-  };
-
-  namespace {
-    struct C : A, B {
-      virtual void c();
-      virtual void f();
-    };
-  }
-  void C::c() {}
-  void C::f() {}
-
-  // Force C::f to be used.
-  void f() { 
-    C c; 
-    c.f();
-  }
-}
-
-namespace Test5 {
-
-// Check that the thunk for 'B::f' gets the same linkage as the function itself.
-struct A {
-  virtual void f();
-};
-
-struct B : virtual A {
-  virtual void f() { }
-};
-
-void f(B b) {
-  b.f();
-}
-}
-
-namespace Test6 {
-  struct X {
-    X();
-    X(const X&);
-    X &operator=(const X&);
-    ~X();
-  };
-
-  struct P {
-    P();
-    P(const P&);
-    ~P();
-    X first;
-    X second;
-  };
-
-  P getP();
-
-  struct Base1 {
-    int i;
-
-    virtual X f() { return X(); }
-  };
-
-  struct Base2 {
-    float real;
-
-    virtual X f() { return X(); }
-  };
-
-  struct Thunks : Base1, Base2 {
-    long l;
-
-    virtual X f();
-  };
-
-  // CHECK: define void @_ZThn16_N5Test66Thunks1fEv
-  // CHECK-NOT: memcpy
-  // CHECK: {{call void @_ZN5Test66Thunks1fEv.*sret}}
-  // CHECK: ret void
-  X Thunks::f() { return X(); }
-}
-
-namespace Test7 {
-  // PR7188
-  struct X {
-    X();
-    X(const X&);
-    X &operator=(const X&);
-    ~X();
-  };
-
-  struct Small { short s; };
-  struct Large {
-    char array[1024];
-  };
-
-  class A {
-  protected:
-    virtual void foo() = 0;
-  };
-
-  class B : public A {
-  protected:
-    virtual void bar() = 0;
-  };
-
-  class C : public A  {
-  protected:
-    virtual void baz(X, X&, _Complex float, Small, Small&, Large) = 0;
-  };
-
-  class D : public B,
-            public C {
-
-    void foo() {}
-    void bar() {}
-    void baz(X, X&, _Complex float, Small, Small&, Large);
-  };
-
-  void D::baz(X, X&, _Complex float, Small, Small&, Large) { }
-
-  // CHECK: define void @_ZThn8_N5Test71D3bazENS_1XERS1_CfNS_5SmallERS4_NS_5LargeE(
-  // CHECK-NOT: memcpy
-  // CHECK: ret void
-  void testD() { D d; }
-}
-
-namespace Test8 {
-  struct NonPOD { ~NonPOD(); int x, y, z; };
-  struct A { virtual void foo(); };
-  struct B { virtual void bar(NonPOD); };
-  struct C : A, B { virtual void bar(NonPOD); static void helper(NonPOD); };
-
-  // CHECK: define void @_ZN5Test81C6helperENS_6NonPODE([[NONPODTYPE:%.*]]*
-  void C::helper(NonPOD var) {}
-
-  // CHECK: define void @_ZThn8_N5Test81C3barENS_6NonPODE(
-  // CHECK-NOT: load [[NONPODTYPE]]*
-  // CHECK-NOT: memcpy
-  // CHECK: ret void
-  void C::bar(NonPOD var) {}
-}
-
-// PR7241: Emitting thunks for a method shouldn't require the vtable for
-// that class to be emitted.
-namespace Test9 {
-  struct A { virtual ~A() { } };
-  struct B : A { virtual void test() const {} };
-  struct C : B { C(); ~C(); };
-  struct D : C { D() {} };
-  void test() {
-    D d;
-  }
-}
-
-namespace Test10 {
-  struct A { virtual void foo(); };
-  struct B { virtual void foo(); };
-  struct C : A, B { void foo() {} };
-
-  // CHECK-HIDDEN: define linkonce_odr void @_ZN6Test101C3fooEv
-  // CHECK-HIDDEN: define linkonce_odr hidden void @_ZThn8_N6Test101C3fooEv
-
-  void test() {
-    C c;
-  }
-}
-
-// PR7611
-namespace Test11 {
-  struct A {             virtual A* f(); };
-  struct B : virtual A { virtual A* f(); };
-  struct C : B         { virtual C* f(); };
-  C* C::f() { return 0; }
-
-  //  C::f itself.
-  // CHECK: define {{.*}} @_ZN6Test111C1fEv(
-
-  //  The this-adjustment and return-adjustment thunk required when
-  //  C::f appears in a vtable where A is at a nonzero offset from C.
-  // CHECK: define {{.*}} @_ZTcv0_n24_v0_n32_N6Test111C1fEv(
-
-  //  The return-adjustment thunk required when C::f appears in a vtable
-  //  where A is at a zero offset from C.
-  // CHECK: define {{.*}} @_ZTch0_v0_n32_N6Test111C1fEv(
-}
-
-// Varargs thunk test.
-namespace Test12 {
-  struct A {
-    virtual A* f(int x, ...);
-  };
-  struct B {
-    virtual B* f(int x, ...);
-  };
-  struct C : A, B {
-    virtual void c();
-    virtual C* f(int x, ...);
-  };
-  C* C::f(int x, ...) { return this; }
-
-  // C::f
-  // CHECK: define {{.*}} @_ZN6Test121C1fEiz
-
-  // Varargs thunk; check that both the this and covariant adjustments
-  // are generated.
-  // CHECK: define {{.*}} @_ZTchn8_h8_N6Test121C1fEiz
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 -8
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 8
-}
-
-// PR13832
-namespace Test13 {
-  struct B1 {
-    virtual B1 &foo1();
-  };
-  struct Pad1 {
-    virtual ~Pad1();
-  };
-  struct Proxy1 : Pad1, B1 {
-    virtual ~Proxy1();
-  };
-  struct D : virtual Proxy1 {
-    virtual ~D();
-    virtual D &foo1();
-  };
-  D& D::foo1() {
-    return *this;
-  }
-  // CHECK: define {{.*}} @_ZTcvn8_n32_v8_n24_N6Test131D4foo1Ev
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 -8
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 -32
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 -24
-  // CHECK: getelementptr inbounds i8* {{.*}}, i64 8
-  // CHECK: ret %"struct.Test13::D"*
-}
-
-namespace Test14 {
-  class A {
-    virtual void f();
-  };
-  class B {
-    virtual void f();
-  };
-  class C : public A, public B  {
-    virtual void f();
-  };
-  void C::f() {
-  }
-  // CHECK: define void @_ZThn8_N6Test141C1fEv({{.*}}) unnamed_addr [[NUW:#[0-9]+]]
-}
-
-/**** The following has to go at the end of the file ****/
-
-// This is from Test5:
-// CHECK: define linkonce_odr void @_ZTv0_n24_N5Test51B1fEv
-// CHECK: define internal void @_ZThn8_N6Test4B12_GLOBAL__N_11C1fEv(
-
-// CHECK: attributes [[NUW]] = { nounwind uwtable{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/tls-init-funcs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/tls-init-funcs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/tls-init-funcs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.8 -std=c++11 -S -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: @a = internal thread_local global
-// CHECK: @_tlv_atexit({{.*}}@_ZN1AD1Ev
-
-struct A {
-  ~A();
-};
-
-thread_local A a;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/trivial-constructor-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/trivial-constructor-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/trivial-constructor-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -std=c++11 | FileCheck %s
-
-extern "C" int printf(...);
-
-struct S {
-  S() { printf("S::S\n"); }
-};
-
-struct A {
-  double x;
-  A() : x(), y(), s() { printf("x = %f y = %x \n", x, y); }
-  int *y;
-  S s;
-};
-
-A a;
-
-struct B {
-  B() = default;
-  B(const B&);
-};
-
-// CHECK-NOT: _ZL1b
-static B b;
-
-struct C {
-  ~C();
-};
-
-// CHECK: _ZL1c
-static C c[4];
-
-int main() {
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/try-catch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/try-catch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/try-catch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - -fcxx-exceptions -fexceptions | FileCheck %s
-
-struct X { };
-
-const X g();
-
-void f() {
-  try {
-    throw g();
-    // CHECK: @_ZTI1X to i8
-  } catch (const X x) {
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/type_visibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/type_visibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/type_visibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,170 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -triple=x86_64-apple-darwin10 -emit-llvm -o %t.ll
-// RUN: FileCheck %s -check-prefix=FUNS < %t.ll
-// RUN: FileCheck %s -check-prefix=VARS < %t.ll
-// RUN: %clang_cc1 %s -std=c++11 -triple=x86_64-apple-darwin10 -fvisibility hidden -emit-llvm -o %t.ll
-// RUN: FileCheck %s -check-prefix=FUNS-HIDDEN < %t.ll
-// RUN: FileCheck %s -check-prefix=VARS-HIDDEN < %t.ll
-
-#define HIDDEN __attribute__((visibility("hidden")))
-#define PROTECTED __attribute__((visibility("protected")))
-#define DEFAULT __attribute__((visibility("default")))
-#define TYPE_HIDDEN __attribute__((type_visibility("hidden")))
-#define TYPE_PROTECTED __attribute__((type_visibility("protected")))
-#define TYPE_DEFAULT __attribute__((type_visibility("default")))
-
-// type_visibility is rdar://11880378
-
-#if !__has_attribute(type_visibility)
-#error No type_visibility attribute!
-#endif
-
-// The template tests come first because IR-gen reorders RTTI wierdly.
-namespace temp0 {
-  struct A;
-  template <class T> struct TYPE_DEFAULT B {
-    virtual void foo() {}
-  };
-
-  template struct B<A>;
-  // FUNS:        define weak_odr void @_ZN5temp01BINS_1AEE3fooEv(
-  // VARS:        @_ZTVN5temp01BINS_1AEEE = weak_odr unnamed_addr constant
-  // VARS:        @_ZTSN5temp01BINS_1AEEE = weak_odr constant
-  // VARS:        @_ZTIN5temp01BINS_1AEEE = weak_odr unnamed_addr constant
-  // FUNS-HIDDEN: define weak_odr hidden void @_ZN5temp01BINS_1AEE3fooEv(
-  // VARS-HIDDEN: @_ZTVN5temp01BINS_1AEEE = weak_odr hidden unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5temp01BINS_1AEEE = weak_odr hidden constant
-  // VARS-HIDDEN: @_ZTIN5temp01BINS_1AEEE = weak_odr hidden unnamed_addr constant
-}
-
-namespace temp1 {
-  struct TYPE_DEFAULT A;
-  template <class T> struct TYPE_DEFAULT B {
-    virtual void foo() {}
-  };
-
-  template struct B<A>;
-  // FUNS:        define weak_odr void @_ZN5temp11BINS_1AEE3fooEv(
-  // VARS:        @_ZTVN5temp11BINS_1AEEE = weak_odr unnamed_addr constant
-  // VARS:        @_ZTSN5temp11BINS_1AEEE = weak_odr constant
-  // VARS:        @_ZTIN5temp11BINS_1AEEE = weak_odr unnamed_addr constant
-  // FUNS-HIDDEN: define weak_odr hidden void @_ZN5temp11BINS_1AEE3fooEv(
-  // VARS-HIDDEN: @_ZTVN5temp11BINS_1AEEE = weak_odr unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5temp11BINS_1AEEE = weak_odr constant
-  // VARS-HIDDEN: @_ZTIN5temp11BINS_1AEEE = weak_odr unnamed_addr constant
-}
-
-namespace temp2 {
-  struct TYPE_DEFAULT A;
-  template <class T> struct B {
-    virtual void foo() {}
-  };
-
-  template struct B<A>;
-  // FUNS:        define weak_odr void @_ZN5temp21BINS_1AEE3fooEv(
-  // VARS:        @_ZTVN5temp21BINS_1AEEE = weak_odr unnamed_addr constant
-  // VARS:        @_ZTSN5temp21BINS_1AEEE = weak_odr constant
-  // VARS:        @_ZTIN5temp21BINS_1AEEE = weak_odr unnamed_addr constant
-  // FUNS-HIDDEN: define weak_odr hidden void @_ZN5temp21BINS_1AEE3fooEv(
-  // VARS-HIDDEN: @_ZTVN5temp21BINS_1AEEE = weak_odr hidden unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5temp21BINS_1AEEE = weak_odr hidden constant
-  // VARS-HIDDEN: @_ZTIN5temp21BINS_1AEEE = weak_odr hidden unnamed_addr constant
-}
-
-namespace temp3 {
-  struct TYPE_HIDDEN A;
-  template <class T> struct TYPE_DEFAULT B {
-    virtual void foo() {}
-  };
-
-  template struct B<A>;
-  // FUNS:        define weak_odr hidden void @_ZN5temp31BINS_1AEE3fooEv(
-  // VARS:        @_ZTVN5temp31BINS_1AEEE = weak_odr hidden unnamed_addr constant
-  // VARS:        @_ZTSN5temp31BINS_1AEEE = weak_odr hidden constant
-  // VARS:        @_ZTIN5temp31BINS_1AEEE = weak_odr hidden unnamed_addr constant
-  // FUNS-HIDDEN: define weak_odr hidden void @_ZN5temp31BINS_1AEE3fooEv(
-  // VARS-HIDDEN: @_ZTVN5temp31BINS_1AEEE = weak_odr hidden unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5temp31BINS_1AEEE = weak_odr hidden constant
-  // VARS-HIDDEN: @_ZTIN5temp31BINS_1AEEE = weak_odr hidden unnamed_addr constant
-}
-
-namespace temp4 {
-  struct TYPE_DEFAULT A;
-  template <class T> struct TYPE_HIDDEN B {
-    virtual void foo() {}
-  };
-
-  template struct B<A>;
-  // FUNS:        define weak_odr void @_ZN5temp41BINS_1AEE3fooEv(
-  // VARS:        @_ZTVN5temp41BINS_1AEEE = weak_odr hidden unnamed_addr constant
-  // VARS:        @_ZTSN5temp41BINS_1AEEE = weak_odr hidden constant
-  // VARS:        @_ZTIN5temp41BINS_1AEEE = weak_odr hidden unnamed_addr constant
-  // FUNS-HIDDEN: define weak_odr hidden void @_ZN5temp41BINS_1AEE3fooEv(
-  // VARS-HIDDEN: @_ZTVN5temp41BINS_1AEEE = weak_odr hidden unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5temp41BINS_1AEEE = weak_odr hidden constant
-  // VARS-HIDDEN: @_ZTIN5temp41BINS_1AEEE = weak_odr hidden unnamed_addr constant
-}
-
-namespace type0 {
-  struct TYPE_DEFAULT A {
-    virtual void foo();
-  };
-
-  void A::foo() {}
-  // FUNS:        define void @_ZN5type01A3fooEv(
-  // VARS:        @_ZTVN5type01AE = unnamed_addr constant
-  // VARS:        @_ZTSN5type01AE = constant
-  // VARS:        @_ZTIN5type01AE = unnamed_addr constant
-  // FUNS-HIDDEN: define hidden void @_ZN5type01A3fooEv(
-  // VARS-HIDDEN: @_ZTVN5type01AE = unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5type01AE = constant
-  // VARS-HIDDEN: @_ZTIN5type01AE = unnamed_addr constant
-}
-
-namespace type1 {
-  struct HIDDEN TYPE_DEFAULT A {
-    virtual void foo();
-  };
-
-  void A::foo() {}
-  // FUNS:        define hidden void @_ZN5type11A3fooEv(
-  // VARS:        @_ZTVN5type11AE = unnamed_addr constant
-  // VARS:        @_ZTSN5type11AE = constant
-  // VARS:        @_ZTIN5type11AE = unnamed_addr constant
-  // FUNS-HIDDEN: define hidden void @_ZN5type11A3fooEv(
-  // VARS-HIDDEN: @_ZTVN5type11AE = unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5type11AE = constant
-  // VARS-HIDDEN: @_ZTIN5type11AE = unnamed_addr constant
-}
-
-namespace type2 {
-  struct TYPE_HIDDEN A {
-    virtual void foo();
-  };
-
-  void A::foo() {}
-  // FUNS:        define void @_ZN5type21A3fooEv(
-  // VARS:        @_ZTVN5type21AE = hidden unnamed_addr constant
-  // VARS:        @_ZTSN5type21AE = hidden constant
-  // VARS:        @_ZTIN5type21AE = hidden unnamed_addr constant
-  // FUNS-HIDDEN: define hidden void @_ZN5type21A3fooEv(
-  // VARS-HIDDEN: @_ZTVN5type21AE = hidden unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5type21AE = hidden constant
-  // VARS-HIDDEN: @_ZTIN5type21AE = hidden unnamed_addr constant
-}
-
-namespace type3 {
-  struct DEFAULT TYPE_HIDDEN A {
-    virtual void foo();
-  };
-
-  void A::foo() {}
-  // FUNS:        define void @_ZN5type31A3fooEv(
-  // VARS:        @_ZTVN5type31AE = hidden unnamed_addr constant
-  // VARS:        @_ZTSN5type31AE = hidden constant
-  // VARS:        @_ZTIN5type31AE = hidden unnamed_addr constant
-  // FUNS-HIDDEN: define void @_ZN5type31A3fooEv(
-  // VARS-HIDDEN: @_ZTVN5type31AE = hidden unnamed_addr constant
-  // VARS-HIDDEN: @_ZTSN5type31AE = hidden constant
-  // VARS-HIDDEN: @_ZTIN5type31AE = hidden unnamed_addr constant
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeid-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeid-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeid-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -I%S %s -triple x86_64-apple-darwin10 -emit-llvm -std=c++11 -o - | FileCheck %s
-#include <typeinfo>
-
-namespace Test1 {
-
-struct Item {
-  const std::type_info &ti;
-  const char *name;
-  void *(*make)();
-};
-
-template<typename T> void *make_impl() { return new T; }
-template<typename T> constexpr Item item(const char *name) {
-  return { typeid(T), name, make_impl<T> };
-}
-
-struct A { virtual ~A(); };
-struct B : virtual A {};
-struct C { int n; };
-
-// CHECK: @_ZN5Test1L5itemsE = internal constant [4 x {{.*}}] [{{.*}} @_ZTIN5Test11AE {{.*}}, {{.*}}, {{.*}} @_ZN5Test19make_implINS_1AEEEPvv }, {{.*}} @_ZTIN5Test11BE {{.*}} @_ZN5Test19make_implINS_1BEEEPvv {{.*}} @_ZTIN5Test11CE {{.*}} @_ZN5Test19make_implINS_1CEEEPvv {{.*}} @_ZTIi {{.*}} @_ZN5Test19make_implIiEEPvv }]
-constexpr Item items[] = {
-  item<A>("A"), item<B>("B"), item<C>("C"), item<int>("int")
-};
-
-// CHECK: @_ZN5Test11xE = constant %"class.std::type_info"* bitcast ({{.*}}* @_ZTIN5Test11AE to %"class.std::type_info"*), align 8
-constexpr auto &x = items[0].ti;
-
-// CHECK: @_ZN5Test11yE = constant %"class.std::type_info"* bitcast ({{.*}}* @_ZTIN5Test11BE to %"class.std::type_info"*), align 8
-constexpr auto &y = typeid(B{});
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -I%S %s -triple x86_64-apple-darwin10 -emit-llvm -fcxx-exceptions -fexceptions -o - | FileCheck %s
-#include <typeinfo>
-
-namespace Test1 {
-
-// PR7400
-struct A { virtual void f(); };
-
-// CHECK: @_ZN5Test16int_tiE = constant %"class.std::type_info"* bitcast (i8** @_ZTIi to %"class.std::type_info"*), align 8
-const std::type_info &int_ti = typeid(int);
-
-// CHECK: @_ZN5Test14A_tiE = constant %"class.std::type_info"* bitcast (i8** @_ZTIN5Test11AE to %"class.std::type_info"*), align 8
-const std::type_info &A_ti = typeid(const volatile A &);
-
-volatile char c;
-
-// CHECK: @_ZN5Test14c_tiE = constant %"class.std::type_info"* bitcast (i8** @_ZTIc to %"class.std::type_info"*), align 8
-const std::type_info &c_ti = typeid(c);
-
-extern const double &d;
-
-// CHECK: @_ZN5Test14d_tiE = constant %"class.std::type_info"* bitcast (i8** @_ZTId to %"class.std::type_info"*), align 8
-const std::type_info &d_ti = typeid(d);
-
-extern A &a;
-
-// CHECK: @_ZN5Test14a_tiE = global
-const std::type_info &a_ti = typeid(a);
-
-// CHECK: define i8* @_ZN5Test11fEv
-const char *f() {
-  try {
-    // CHECK: br i1
-    // CHECK: invoke void @__cxa_bad_typeid() [[NR:#[0-9]+]]
-    return typeid(*static_cast<A *>(0)).name();
-  } catch (...) {
-    // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-    // CHECK-NEXT:   catch i8* null
-  }
-
-  return 0;
-}
-
-}
-
-// CHECK: attributes [[NR]] = { noreturn }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeinfo
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeinfo	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/typeinfo	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-namespace std {
-  class type_info {
-  public:
-    virtual ~type_info();
-    const char* name() const { return __name; }
-    bool operator==(const type_info& __arg) const {
-     return __name == __arg.__name;
-    }
-
-    bool operator!=(const type_info& __arg) const {
-      return !operator==(__arg);
-    }
-  protected:
-    const char *__name;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/unary-type-trait.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/unary-type-trait.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/unary-type-trait.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -verify %s
-// expected-no-diagnostics
-
-bool a() { return __is_pod(int); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/uncode-string.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/uncode-string.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/uncode-string.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-// rdar://8360841
-
-wchar_t s[] = L"\u2722";
-
-// CHECK: @s = global [2 x i32] [i32 10018, i32 0], align 4

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/union-dtor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/union-dtor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/union-dtor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -S -o - -emit-llvm | FileCheck %s
-
-// PR10304: destructors should not call destructors for variant members.
-
-template<bool b = false>
-struct Foo {
-  Foo() { static_assert(b, "Foo::Foo used"); }
-  ~Foo() { static_assert(b, "Foo::~Foo used"); }
-};
-
-struct Bar {
-  Bar();
-  ~Bar();
-};
-
-union FooBar {
-  FooBar() {}
-  ~FooBar() {}
-  Foo<> foo;
-  Bar bar;
-};
-
-struct Variant {
-  Variant() {}
-  ~Variant() {}
-  union {
-    Foo<> foo;
-    Bar bar;
-  };
-};
-
-FooBar foobar;
-Variant variant;
-
-// The ctor and dtor of Foo<> and Bar should not be mentioned in the resulting
-// code.
-//
-// CHECK-NOT: 3FooILb1EEC1
-// CHECK-NOT: 3BarC1
-//
-// CHECK-NOT: 3FooILb1EED1
-// CHECK-NOT: 3BarD1

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/unknown-anytype.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/unknown-anytype.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/unknown-anytype.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -funknown-anytype -emit-llvm -o - %s | FileCheck %s
-
-int test0() {
-  extern __unknown_anytype test0_any;
-  // CHECK: load i32* @test0_any
-  return (int) test0_any;
-}
-
-int test1() {
-  extern __unknown_anytype test1_any();
-  // CHECK: call i32 @_Z9test1_anyv()
-  return (int) test1_any();
-}
-
-extern "C" __unknown_anytype test2_any(...);
-float test2() {
-  // CHECK: call float (...)* @test2_any(double {{[^,]+}})
-  return (float) test2_any(0.5f);
-}
-
-extern "C" __unknown_anytype test2a_any(...);
-float test2a() {
-  // CHECK: call float (...)* @test2a_any(float {{[^,]+}})
-  return (float) test2a_any((float) 0.5f);
-}
-
-float test3() {
-  extern __unknown_anytype test3_any;
-  // CHECK: [[FN:%.*]] = load float (i32)** @test3_any,
-  // CHECK: call float [[FN]](i32 5)
-  return ((float(*)(int)) test3_any)(5);
-}
-
-namespace test4 {
-  extern __unknown_anytype test4_any1;
-  extern __unknown_anytype test4_any2;
-
-  int test() {
-    // CHECK: load i32* @_ZN5test410test4_any1E
-    // CHECK: load i8* @_ZN5test410test4_any2E
-    return (int) test4_any1 + (char) test4_any2;
-  }
-}
-
-extern "C" __unknown_anytype test5_any();
-void test5() {
-  // CHECK: call void @test5_any()
-  return (void) test5_any();
-}
-
-extern "C" __unknown_anytype test6_any(float *);
-long test6() {
-  // CHECK: call i64 @test6_any(float* null)
-  return (long) test6_any(0);
-}
-
-struct Test7 {
-  ~Test7();
-};
-extern "C" __unknown_anytype test7_any(int);
-Test7 test7() {
-  // CHECK: call void @test7_any({{%.*}}* sret {{%.*}}, i32 5)
-  return (Test7) test7_any(5);
-}
-
-struct Test8 {
-  __unknown_anytype foo();
-  __unknown_anytype foo(int);
-
-  void test();
-};
-void Test8::test() {
-  float f;
-  // CHECK: call i32 @_ZN5Test83fooEv(
-  f = (int) foo();
-  // CHECK: call i32 @_ZN5Test83fooEi(
-  f = (int) foo(5);
-  // CHECK: call i32 @_ZN5Test83fooEv(
-  f = (float) this->foo();
-  // CHECK: call i32 @_ZN5Test83fooEi(
-  f = (float) this->foo(5);
-}
-void test8(Test8 *p) {
-  double d;
-  // CHECK: call i32 @_ZN5Test83fooEv(
-  d = (double) p->foo();
-  // CHECK: call i32 @_ZN5Test83fooEi(
-  d = (double) p->foo(5);
-  // CHECK: call i32 @_ZN5Test83fooEv(
-  d = (bool) (*p).foo();
-  // CHECK: call i32 @_ZN5Test83fooEi(
-  d = (bool) (*p).foo(5);
-}
-
-extern "C" __unknown_anytype test9_foo;
-void *test9() {
-  // CHECK: ret i8* bitcast (i32* @test9_foo to i8*)
-  return (int*) &test9_foo;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/value-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/value-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/value-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,268 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-struct A {
-  virtual ~A();
-};
-
-struct B : A { };
-
-struct C {
-  int i;
-  B b;
-};
-
-// CHECK: _Z15test_value_initv
-void test_value_init() {
-  // This value initialization requires zero initialization of the 'B'
-  // subobject followed by a call to its constructor.
-  // PR5800
-
-  // CHECK: store i32 17
-  // CHECK: call void @llvm.memset.p0i8.i64
-  // CHECK: call void @_ZN1BC1Ev
-  C c = { 17 } ;
-  // CHECK: call void @_ZN1CD1Ev
-}
-
-enum enum_type { negative_number = -1, magic_number = 42 };
-
-class enum_holder
-{
-  enum_type m_enum;
-
-public:
-  enum_holder() : m_enum(magic_number) { }
-};
-
-struct enum_holder_and_int
-{
-  enum_holder e;
-  int i;
-};
-
-// CHECK: _Z24test_enum_holder_and_intv()
-void test_enum_holder_and_int() {
-  // CHECK: alloca
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: call void @llvm.memset
-  // CHECK-NEXT: call void @_ZN19enum_holder_and_intC1Ev
-  enum_holder_and_int();
-  // CHECK-NEXT: ret void
-}
-
-// PR7834: don't crash.
-namespace test1 {
-  struct A {
-    int A::*f;
-    A();
-    A(const A&);
-    A &operator=(const A &);
-  };
-
-  struct B {
-    A base;
-  };
-
-  void foo() {
-    B();
-  }
-}
-
-namespace ptrmem {
-  struct S {
-    int mem1;
-    int S::*mem2;
-  };
-
-  // CHECK: define i32 @_ZN6ptrmem4testEPNS_1SE
-  int test(S *s) {
-    // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64
-    // CHECK: getelementptr
-    // CHECK: ret
-    return s->*S().mem2;
-  }
-}
-
-namespace PR9801 {
-
-struct Test {
-  Test() : i(10) {}
-  Test(int i) : i(i) {}
-  int i;
-private:
-  int j;
-};
-
-struct Test2 {
-  Test t;
-};
-
-struct Test3 : public Test { };
-
-// CHECK: define void @_ZN6PR98011fEv
-void f() {
-  // CHECK-NOT: call void @llvm.memset.p0i8.i64
-  // CHECK: call void @_ZN6PR98014TestC1Ei
-  // CHECK-NOT: call void @llvm.memset.p0i8.i64
-  // CHECK: call void @_ZN6PR98014TestC1Ev
-  Test partial[3] = { 1 };
-
-  // CHECK-NOT: call void @llvm.memset.p0i8.i64
-  // CHECK: call void @_ZN6PR98014TestC1Ev
-  // CHECK-NOT: call void @_ZN6PR98014TestC1Ev
-  Test empty[3] = {};
-
-  // CHECK: call void @llvm.memset.p0i8.i64
-  // CHECK-NOT: call void @llvm.memset.p0i8.i64
-  // CHECK: call void @_ZN6PR98015Test2C1Ev
-  // CHECK-NOT: call void @_ZN6PR98015Test2C1Ev
-  Test2 empty2[3] = {};
-
-  // CHECK: call void @llvm.memset.p0i8.i64
-  // CHECK-NOT: call void @llvm.memset.p0i8.i64
-  // CHECK: call void @_ZN6PR98015Test3C1Ev
-  // CHECK-NOT: call void @llvm.memset.p0i8.i64
-  // CHECK-NOT: call void @_ZN6PR98015Test3C1Ev
-  Test3 empty3[3] = {};
-}
-
-}
-
-namespace zeroinit {
-  struct S { int i; };
-
-  // CHECK: define i32 @_ZN8zeroinit4testEv()
-  int test() {
-    // CHECK: call void @llvm.memset.p0i8.i64
-    // CHECK: ret i32 0
-    return S().i;
-  }
-
-  struct X0 {
-    X0() { }
-    int x;
-  };
-
-  struct X1 : X0 {
-    int x1;
-    void f();
-  };
-
-  // CHECK: define void @_ZN8zeroinit9testX0_X1Ev
-  void testX0_X1() {
-    // CHECK: call void @llvm.memset.p0i8.i64
-    // CHECK-NEXT: call void @_ZN8zeroinit2X1C1Ev
-    // CHECK-NEXT: call void @_ZN8zeroinit2X11fEv
-    X1().f();
-  }
-
-  template<typename>
-  struct X2 : X0 {
-    int x2;
-    void f();
-  };
-
-  template<typename>
-  struct X3 : X2<int> { 
-    X3() : X2<int>() { }
-    int i;
-  };
-  
-
-  // CHECK: define void @_ZN8zeroinit9testX0_X3Ev
-  void testX0_X3() {
-    // CHECK-NOT: call void @llvm.memset
-    // CHECK: call void @_ZN8zeroinit2X3IiEC1Ev
-    // CHECK: call void @_ZN8zeroinit2X2IiE1fEv
-    // CHECK-NEXT: ret void
-    X3<int>().f();
-  }
-
-  // More checks at EOF
-}
-
-namespace PR8726 {
-class C;
-struct S {
-  const C &c1;
-  int i;
-  const C &c2;
-};
-void f(const C& c) {
-  S s = {c, 42, c};
-}
-
-}
-
-// rdar://problem/9355931
-namespace test6 {
-  struct A { A(); A(int); };
-
-  void test() {
-    A arr[10][20] = { 5 };
-  };
-  // CHECK:    define void @_ZN5test64testEv()
-  // CHECK:      [[ARR:%.*]] = alloca [10 x [20 x [[A:%.*]]]],
-
-  // CHECK-NEXT: [[INNER:%.*]] = getelementptr inbounds [10 x [20 x [[A]]]]* [[ARR]], i64 0, i64 0
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [20 x [[A]]]* [[INNER]], i64 0, i64 0
-  // CHECK-NEXT: call void @_ZN5test61AC1Ei([[A]]* [[T0]], i32 5)
-  // CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [[A]]* [[T0]], i64 1
-  // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [[A]]* [[T0]], i64 20
-  // CHECK-NEXT: br label
-  // CHECK:      [[CUR:%.*]] = phi [[A]]* [ [[BEGIN]], {{%.*}} ], [ [[NEXT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: call void @_ZN5test61AC1Ev([[A]]* [[CUR]])
-  // CHECK-NEXT: [[NEXT]] = getelementptr inbounds [[A]]* [[CUR]], i64 1
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq [[A]]* [[NEXT]], [[END]]
-  // CHECK-NEXT: br i1
-
-  // CHECK:      [[BEGIN:%.*]] = getelementptr inbounds [20 x [[A]]]* [[INNER]], i64 1
-  // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds [20 x [[A]]]* [[INNER]], i64 10
-  // CHECK-NEXT: br label
-  // CHECK:      [[CUR:%.*]] = phi [20 x [[A]]]* [ [[BEGIN]], {{%.*}} ], [ [[NEXT:%.*]], {{%.*}} ]
-
-  // Inner loop.
-  // CHECK-NEXT: [[IBEGIN:%.*]] = getelementptr inbounds [20 x [[A]]]* [[CUR]], i32 0, i32 0
-  // CHECK-NEXT: [[IEND:%.*]] = getelementptr inbounds [[A]]* [[IBEGIN]], i64 20
-  // CHECK-NEXT: br label
-  // CHECK:      [[ICUR:%.*]] = phi [[A]]* [ [[IBEGIN]], {{%.*}} ], [ [[INEXT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: call void @_ZN5test61AC1Ev([[A]]* [[ICUR]])
-  // CHECK-NEXT: [[INEXT:%.*]] = getelementptr inbounds [[A]]* [[ICUR]], i64 1
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq [[A]]* [[INEXT]], [[IEND]]
-  // CHECK-NEXT: br i1 [[T0]],
-
-  // CHECK:      [[NEXT]] = getelementptr inbounds [20 x [[A]]]* [[CUR]], i64 1
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq [20 x [[A]]]* [[NEXT]], [[END]]
-  // CHECK-NEXT: br i1 [[T0]]
-  // CHECK:      ret void
-}
-
-namespace PR11124 {
-  // Make sure C::C doesn't overwrite parts of A while it is zero-initializing B
-  struct A { int a; A(); A(int); };
-  struct B : virtual A { int b; };
-  struct C : B { C(); };      
-  C::C() : A(3), B() {}
-  // CHECK: define void @_ZN7PR111241CC1Ev
-  // CHECK: call void @llvm.memset.p0i8.i64(i8* {{.*}}, i8 0, i64 12, i32 8, i1 false)
-  // CHECK-NEXT: call void @_ZN7PR111241BC2Ev
-  // Make sure C::C doesn't overwrite parts of A while it is zero-initializing B
-
-  struct B2 : virtual A { int B::*b; };
-  struct C2 : B2 { C2(); };      
-  C2::C2() : A(3), B2() {}
-  // CHECK: define void @_ZN7PR111242C2C1Ev
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %{{.*}}, i8* {{.*}}, i64 16, i32 8, i1 false)
-  // CHECK-NEXT: call void @_ZN7PR111242B2C2Ev
-}
-
-// Ensure we produce an i1 here, and don't assert.
-// CHECK: define void @_Z9r170806_bv(
-// CHECK: call void @_Z9r170806_ab(i1 zeroext false)
-void r170806_a(bool b = bool());
-void r170806_b() { r170806_a(); }
-
-// CHECK: define linkonce_odr void @_ZN8zeroinit2X3IiEC2Ev(%"struct.zeroinit::X3"* %this) unnamed_addr
-// CHECK: call void @llvm.memset.p0i8.i64
-// CHECK-NEXT: call void @_ZN8zeroinit2X2IiEC2Ev
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vararg-conversion-ctor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vararg-conversion-ctor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vararg-conversion-ctor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o %t-64.ll
-// RUN: FileCheck -check-prefix LPLL64 --input-file=%t-64.ll %s
-
-extern "C" int printf(...);
-
-struct A { 
-  A(...) {
-    printf("A::A(...)\n"); 
-  } 
-};
-
-A a(1.34);
-
-A b = 2.34;
-
-int main()
-{
-  A c[3];
-}
-
-// CHECK-LPLL64: call void (%struct.A*, ...)
-// CHECK-LPLL64: call void (%struct.A*, ...)
-// CHECK-LPLL64: call void (%struct.A*, ...)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vararg-non-pod.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vararg-non-pod.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vararg-non-pod.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -Wno-error=non-pod-varargs -emit-llvm -o - %s | FileCheck %s
-
-struct X {
-  X();
-  X(const X&);
-  ~X();
-};
-
-void vararg(...);
-
-// CHECK: define void @_Z4test1X
-void test(X x) {
-  // CHECK: call void @llvm.trap()
-  vararg(x);
-  // CHECK: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/varargs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/varargs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/varargs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm %s -o - | FileCheck %s
-
-// rdar://7309675
-// PR4678
-namespace test0 {
-  // test1 should be compmiled to be a varargs function in the IR even
-  // though there is no way to do a va_begin.  Otherwise, the optimizer
-  // will warn about 'dropped arguments' at the call site.
-
-  // CHECK: define i32 @_ZN5test05test1Ez(...)
-  int test1(...) {
-    return -1;
-  }
-
-  // CHECK: call i32 (...)* @_ZN5test05test1Ez(i32 0)
-  void test() {
-    test1(0);
-  }
-}
-
-namespace test1 {
-  struct A {
-    int x;
-    int y;
-  };
-
-  void foo(...);
-
-  void test() {
-    A x;
-    foo(x);
-  }
-  // CHECK:    define void @_ZN5test14testEv()
-  // CHECK:      [[X:%.*]] = alloca [[A:%.*]], align 4
-  // CHECK-NEXT: [[TMP:%.*]] = alloca [[A]], align 4
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]* [[TMP]] to i8*
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[X]] to i8*
-  // CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* [[T0]], i8* [[T1]], i64 8, i32 4, i1 false)
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]* [[TMP]] to i64*
-  // CHECK-NEXT: [[T1:%.*]] = load i64* [[T0]], align 1
-  // CHECK-NEXT: call void (...)* @_ZN5test13fooEz(i64 [[T1]])
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/variadic-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/variadic-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/variadic-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-template<typename ...Types>
-int get_num_types(Types...) {
-  return sizeof...(Types);
-}
-
-// CHECK: define weak_odr i32 @_Z13get_num_typesIJifdEEiDpT_
-// CHECK: ret i32 3
-template int get_num_types(int, float, double);
-
-// PR10260 - argument packs that expand to nothing
-namespace test1 {
-  template <class... T> void foo() {
-    int values[sizeof...(T)+1] = { T::value... };
-    // CHECK: define linkonce_odr void @_ZN5test13fooIJEEEvv()
-    // CHECK: alloca [1 x i32], align 4
-  }
-
-  void test() {
-    foo<>();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-canonical-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-canonical-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-canonical-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-
-class Base {
-public:
-   virtual ~Base();
-};
-
-Base::~Base()
-{
-}
-
-class Foo : public Base {
-public:
-   virtual ~Foo();
-};
-
-Foo::~Foo()
-{
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-dtor-gen.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-dtor-gen.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-dtor-gen.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck %s
-// PR5483
-
-// Make sure we generate all three forms of the destructor when it is virtual.
-class Foo {
-  virtual ~Foo();
-};
-Foo::~Foo() {}
-
-// CHECK: define void @_ZN3FooD0Ev(%class.Foo* %this) unnamed_addr

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-dtor-key.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-dtor-key.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-dtor-key.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-// CHECK: @_ZTI3foo = unnamed_addr constant
-class foo {
-   foo();
-   virtual ~foo();
-};
-
-foo::~foo() {
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-template-vtable.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-template-vtable.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-template-vtable.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-template<class T> class A {
-public:
-  A() {}
-  virtual void a() {}
-};
-class B : A<int> {
-  B();
-};
-B::B() {}
-
-template class A<long>;
-
-extern template class A<short>;
-template class A<short>;
-
-
-// CHECK: @_ZTV1B = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTV1AIlE = weak_odr unnamed_addr constant
-// CHECK: @_ZTV1AIsE = weak_odr unnamed_addr constant
-// CHECK: @_ZTV1AIiE = linkonce_odr unnamed_addr constant
-
-template<class T> struct C {
-  virtual void c() {}
-};
-struct D : C<int> {
-  virtual void d();
-};
-void D::d() {}
-
-// CHECK: define {{.*}}@_ZN1CIiE1cEv(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-thunk-reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-thunk-reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virt-thunk-reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-struct A { int a; virtual void aa(int&); };
-struct B { int b; virtual void bb(int&); };
-struct C : A,B { virtual void aa(int&), bb(int&); };
-void C::aa(int&) {}
-void C::bb(int&) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple i686-pc-linux-gnu | FileCheck %s
-
-struct A { int a; virtual int aa(); };
-struct B { int b; virtual int bb(); };
-struct C : virtual A, virtual B { int c; virtual int aa(); virtual int bb(); };
-struct AA { int a; virtual int aa(); };
-struct BB { int b; virtual int bb(); };
-struct CC : AA, BB { virtual int aa(); virtual int bb(); virtual int cc(); };
-struct D : virtual C, virtual CC { int e; };
-
-D* x;
-
-A* a() { return x; }
-// CHECK: @_Z1av() [[NUW:#[0-9]+]]
-// CHECK: [[VBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -16
-// CHECK: [[CASTVBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRA]] to i32*
-// CHECK: load i32* [[CASTVBASEOFFSETPTRA]]
-// CHECK: }
-
-B* b() { return x; }
-// CHECK: @_Z1bv() [[NUW]]
-// CHECK: [[VBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -20
-// CHECK: [[CASTVBASEOFFSETPTRA:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRA]] to i32*
-// CHECK: load i32* [[CASTVBASEOFFSETPTRA]]
-// CHECK: }
-
-BB* c() { return x; }
-// CHECK: @_Z1cv() [[NUW]]
-// CHECK: [[VBASEOFFSETPTRC:%[a-zA-Z0-9\.]+]] = getelementptr i8* {{.*}}, i64 -24
-// CHECK: [[CASTVBASEOFFSETPTRC:%[a-zA-Z0-9\.]+]] = bitcast i8* [[VBASEOFFSETPTRC]] to i32*
-// CHECK: [[VBASEOFFSETC:%[a-zA-Z0-9\.]+]] = load i32* [[CASTVBASEOFFSETPTRC]]
-// CHECK: add i32 [[VBASEOFFSETC]], 8
-// CHECK: }
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-ctor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-ctor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-ctor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -O2 | FileCheck %s
-
-struct B;
-extern B x;
-char y;
-typedef __typeof(sizeof(int)) size_t;
-struct A { int a; A() { y = ((size_t)this - (size_t)&x) / sizeof(void*); } };
-struct B : virtual A { void* x; };    
-B x;
-
-// CHECK: @y = global i8 2

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-destructor-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-destructor-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-base-destructor-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-struct basic_ios{~basic_ios(); };
-
-template<typename _CharT> struct basic_istream : virtual public basic_ios {
-  virtual ~basic_istream(){}
-};
-
-template<typename _CharT> struct basic_iostream : public basic_istream<_CharT>
-{
-  virtual ~basic_iostream(){}
-};
-
-basic_iostream<char> res;
-
-int main() {
-}
-
-// basic_iostream's complete dtor calls its base dtor, then its
-// virtual base's dtor.
-//  CHECK: define linkonce_odr {{.*}} @_ZN14basic_iostreamIcED1Ev(%struct.basic_iostream* %this) unnamed_addr
-//  CHECK: call {{.*}} @_ZN14basic_iostreamIcED2Ev
-//  CHECK: call {{.*}} @_ZN9basic_iosD2Ev
-
-// basic_iostream's base dtor calls its non-virtual base dtor.
-//  CHECK: define linkonce_odr {{.*}} @_ZN14basic_iostreamIcED2Ev(%struct.basic_iostream* %this, i8** %vtt) unnamed_addr
-//  CHECK: call {{.*}} @_ZN13basic_istreamIcED2Ev
-//  CHECK: }
-
-// basic_iostream's deleting dtor calls its complete dtor, then
-// operator delete().
-//  CHECK: define linkonce_odr {{.*}} @_ZN14basic_iostreamIcED0Ev(%struct.basic_iostream* %this) unnamed_addr
-//  CHECK: call {{.*}} @_ZN14basic_iostreamIcED1Ev
-//  CHECK: call {{.*}} @_ZdlPv
-
-// basic_istream's complete dtor calls the base dtor,
-// then its virtual base's base dtor.
-//  CHECK: define linkonce_odr {{.*}} @_ZN13basic_istreamIcED1Ev(%struct.basic_istream* %this) unnamed_addr
-//  CHECK: call {{.*}} @_ZN13basic_istreamIcED2Ev
-//  CHECK: call {{.*}} @_ZN9basic_iosD2Ev
-
-// basic_istream's deleting dtor calls the complete dtor, then
-// operator delete().
-//  CHECK: define linkonce_odr {{.*}} @_ZN13basic_istreamIcED0Ev(%struct.basic_istream* %this) unnamed_addr
-//  CHECK: call {{.*}} @_ZN13basic_istreamIcED1Ev
-//  CHECK: call {{.*}} @_ZdlPv
-
-// basic_istream's base dtor is a no-op.
-//  CHECK: define linkonce_odr {{.*}} @_ZN13basic_istreamIcED2Ev(%struct.basic_istream* %this, i8** %vtt) unnamed_addr
-//  CHECK-NOT: call
-//  CHECK: }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-bases.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-bases.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-bases.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 -mconstructor-aliases | FileCheck %s
-
-struct A { 
-  A();
-};
-
-// CHECK: @_ZN1AC1Ev = alias {{.*}} @_ZN1AC2Ev
-// CHECK: define void @_ZN1AC2Ev(%struct.A* %this) unnamed_addr
-A::A() { }
-
-struct B : virtual A { 
-  B();
-};
-
-// CHECK: define void @_ZN1BC1Ev(%struct.B* %this) unnamed_addr
-// CHECK: define void @_ZN1BC2Ev(%struct.B* %this, i8** %vtt) unnamed_addr
-B::B() { }
-
-struct C : virtual A {
-  C(bool);
-};
-
-// CHECK: define void @_ZN1CC1Eb(%struct.C* %this, i1 zeroext) unnamed_addr
-// CHECK: define void @_ZN1CC2Eb(%struct.C* %this, i8** %vtt, i1 zeroext) unnamed_addr
-C::C(bool) { }
-
-// PR6251
-namespace PR6251 {
-
-// Test that we don't call the A<char> constructor twice.
-
-template<typename T>
-struct A { A(); };
-
-struct B : virtual A<char> { };
-struct C : virtual A<char> { };
-
-struct D : B, C  {
-  D();
-};
-
-// CHECK: define void @_ZN6PR62511DC1Ev(%"struct.PR6251::D"* %this) unnamed_addr
-// CHECK: call void @_ZN6PR62511AIcEC2Ev
-// CHECK-NOT: call void @_ZN6PR62511AIcEC2Ev
-// CHECK: ret void
-D::D() { }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-destructor-calls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-destructor-calls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-destructor-calls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin10 -mconstructor-aliases | FileCheck %s
-
-struct Member {
-  ~Member();
-};
-
-struct A {
-  virtual ~A();
-};
-
-struct B : A {
-  Member m;
-  virtual ~B();
-};
-
-// Complete dtor: just an alias because there are no virtual bases.
-// CHECK: @_ZN1BD1Ev = alias {{.*}} @_ZN1BD2Ev
-
-// (aliases from C)
-// CHECK: @_ZN1CD1Ev = alias {{.*}} @_ZN1CD2Ev
-// CHECK: @_ZN1CD2Ev = alias bitcast {{.*}} @_ZN1BD2Ev
-
-// Deleting dtor: defers to the complete dtor.
-// CHECK: define void @_ZN1BD0Ev(%struct.B* %this) unnamed_addr
-// CHECK: call void @_ZN1BD1Ev
-// CHECK: call void @_ZdlPv
-
-// Base dtor: actually calls A's base dtor.
-// CHECK: define void @_ZN1BD2Ev(%struct.B* %this) unnamed_addr
-// CHECK: call void @_ZN6MemberD1Ev
-// CHECK: call void @_ZN1AD2Ev
-
-B::~B() { }
-
-struct C : B {
-  ~C();
-};
-
-C::~C() { }
-
-// Complete dtor: just an alias (checked above).
-
-// Deleting dtor: defers to the complete dtor.
-// CHECK: define void @_ZN1CD0Ev(%struct.C* %this) unnamed_addr
-// CHECK: call void @_ZN1CD1Ev
-// CHECK: call void @_ZdlPv
-
-// Base dtor: just an alias to B's base dtor.
-
-namespace PR12798 {
-  // A qualified call to a base class destructor should not undergo virtual
-  // dispatch. Template instantiation used to lose the qualifier.
-  struct A { virtual ~A(); };
-  template<typename T> void f(T *p) { p->A::~A(); }
-
-  // CHECK: define {{.*}} @_ZN7PR127981fINS_1AEEEvPT_(
-  // CHECK: call void @_ZN7PR127981AD1Ev(
-  template void f(A*);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-destructor-synthesis.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-destructor-synthesis.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-destructor-synthesis.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-struct box {
-  virtual ~box();
-};
-
-struct pile_box : public box {
-  pile_box(box *);
-};
-
-pile_box::pile_box(box *pp)
-{
-}
-
-// CHECK: call void @_ZdlPv
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-function-calls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-function-calls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-function-calls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - | FileCheck %s
-
-// PR5021
-namespace PR5021 {
-
-struct A {
-  virtual void f(char);
-};
-
-void f(A *a) {
-  // CHECK: call void %
-  a->f('c');
-}
-
-struct B : virtual A { 
-  virtual void f();
-};
-
-void f(B * b) {
-  b->f();
-}
-
-}
-
-namespace Test1 {
-  struct A { 
-    virtual ~A(); 
-  };
-
-  struct B : A {
-    virtual ~B();
-    virtual void f();
-  };
-
-  void f(B *b) {
-    b->f();
-  }
-}
-
-namespace VirtualNoreturn {
-  struct A {
-    [[noreturn]] virtual void f();
-  };
-
-  // CHECK: @_ZN15VirtualNoreturn1f
-  void f(A *p) {
-    p->f();
-    // CHECK: call void %{{[^#]*$}}
-    // CHECK-NOT: unreachable
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-functions-incomplete-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-functions-incomplete-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-functions-incomplete-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-struct A;
-
-struct B {
-  virtual void f();
-  virtual A g();
-};
-
-void B::f() { }
-
-// CHECK: define i32 @_ZN1D1gEv(%struct.D* %this)
-// CHECK: declare void @_ZN1B1gEv()
-
-struct C;
-
-struct D {
-  virtual void f();
-  virtual C g();
-};
-
-void D::f() { }
-
-struct C {
-  int a;
-};
-
-C D::g() {
-  return C();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-implicit-copy-assignment.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-implicit-copy-assignment.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-implicit-copy-assignment.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-struct D;
-struct B {
- virtual D& operator = (const D&);
-};
-struct D : B { D(); virtual void a(); };
-void D::a() {}
-
-// CHECK: @_ZTV1D = {{.*}} @_ZN1DaSERKS_ 
-// CHECK: define linkonce_odr {{.*}} @_ZN1DaSERKS_

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-implicit-move-assignment.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-implicit-move-assignment.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-implicit-move-assignment.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -std=c++11 -o - %s | FileCheck %s
-
-struct D;
-struct B {
- virtual D &operator=(D&&) = 0;
-};
-struct D : B { D(); virtual void a(); };
-void D::a() {}
-D d;
-
-// CHECK: @_ZTV1D = {{.*}} @_ZN1DaSEOS_ 
-// CHECK: define linkonce_odr {{.*}} @_ZN1DaSEOS_

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-inherited-destructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-inherited-destructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-inherited-destructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm-only
-
-struct A { virtual ~A(); };
-struct B : A {
-  ~B() { }
-};
-B x;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-operator-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-operator-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-operator-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - | FileCheck %s
-
-struct A {
-  virtual int operator-() = 0;
-};
-
-void f(A *a) {
-  // CHECK: call i32 %
-  -*a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-pseudo-destructor-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-pseudo-destructor-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/virtual-pseudo-destructor-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-struct A {
-  virtual ~A();
-};
-
-void f(A *a) {
-  // CHECK: define {{.*}} @_Z1fP1A
-  // CHECK: load
-  // CHECK: load
-  // CHECK: [[CALLEE:%[a-zA-Z0-9.]*]] = load
-  // CHECK: call {{.*}} [[CALLEE]](
-  a->~A();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-hidden-extern-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-hidden-extern-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-hidden-extern-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -O1 -emit-llvm -o - -fvisibility hidden %s | FileCheck %s
-
-template<typename T>
-struct X {
-  void f();
-  void g() { }
-};
-
-template<typename T> void X<T>::f() { }
-
-extern template struct X<int>;
-template struct X<int>;
-extern template struct X<char>;
-
-// <rdar://problem/8109763>
-void test_X(X<int> xi, X<char> xc) {
-  // CHECK: define weak_odr hidden void @_ZN1XIiE1fEv
-  xi.f();
-  // CHECK: define weak_odr hidden void @_ZN1XIiE1gEv
-  xi.g();
-  // CHECK: declare void @_ZN1XIcE1fEv
-  xc.f();
-  // CHECK: define available_externally void @_ZN1XIcE1gEv
-  xc.g();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-inlines-hidden.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-inlines-hidden.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-inlines-hidden.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -std=c++11 -fvisibility-inlines-hidden -emit-llvm -o - %s -O2 -disable-llvm-optzns | FileCheck %s
-
-// The trickery with optimization in the run line is to get IR
-// generation to emit available_externally function bodies, but not
-// actually inline them (and thus remove the emitted bodies).
-
-struct X0 {
-  void __attribute__((visibility("default"))) f1() { }
-  void f2() { }
-  void f3();
-  static void f5() { }
-  virtual void f6() { }
-};
-
-inline void X0::f3() { }
-
-template<typename T>
-struct X1 {
-  void __attribute__((visibility("default"))) f1() { }
-  void f2() { }
-  void f3();
-  void f4();
-  static void f5() { }
-  virtual void f6() { }
-};
-
-template<typename T>
-inline void X1<T>::f3() { }
-
-template<>
-inline void X1<int>::f4() { }
-
-struct __attribute__((visibility("default"))) X2 {
-  void f2() { }
-};
-
-extern template struct X1<float>;
-
-void use(X0 *x0, X1<int> *x1, X2 *x2, X1<float> *x3) {
-  // CHECK: define linkonce_odr void @_ZN2X02f1Ev
-  x0->f1();
-  // CHECK: define linkonce_odr hidden void @_ZN2X02f2Ev
-  x0->f2();
-  // CHECK: define linkonce_odr hidden void @_ZN2X02f3Ev
-  x0->f3();
-  // CHECK: define linkonce_odr hidden void @_ZN2X02f5Ev
-  X0::f5();
-  // CHECK: define linkonce_odr hidden void @_ZN2X02f6Ev
-  x0->X0::f6();
-  // CHECK: define linkonce_odr void @_ZN2X1IiE2f1Ev
-  x1->f1();
-  // CHECK: define linkonce_odr hidden void @_ZN2X1IiE2f2Ev
-  x1->f2();
-  // CHECK: define linkonce_odr hidden void @_ZN2X1IiE2f3Ev
-  x1->f3();
-  // CHECK: define linkonce_odr hidden void @_ZN2X1IiE2f4Ev
-  x1->f4();
-  // CHECK: define linkonce_odr hidden void @_ZN2X1IiE2f5Ev
-  X1<int>::f5();
-  // CHECK: define linkonce_odr hidden void @_ZN2X1IiE2f6Ev
-  x1->X1::f6();
-  // CHECK: define linkonce_odr hidden void @_ZN2X22f2Ev
-  x2->f2();
-  // CHECK: define available_externally void @_ZN2X1IfE2f2Ev
-  x3->f2();
-}
-
-// rdar://problem/8614470
-namespace test1 {
-  struct __attribute__((visibility("default"))) A {
-    inline void foo();
-    ~A();
-  };
-
-  void test() {
-    A a;
-    a.foo();
-  }
-// CHECK: declare void @_ZN5test11A3fooEv
-// CHECK: declare {{.*}} @_ZN5test11AD1Ev
-}
-
-// PR8713
-namespace test2 {
-  struct A {};
-  template <class T> class B {};
-  typedef B<A> arg;
-
-  namespace ns __attribute__((visibility("default"))) {
-    template <class T> inline void foo() {}
-    extern template void foo<arg>();
-  }
-
-  void test() {
-    ns::foo<arg>();
-  }
-
-  // CHECK: define available_externally void @_ZN5test22ns3fooINS_1BINS_1AEEEEEvv()
-}
-
-namespace PR11642 {
-  template <typename T>
-  class Foo {
-  public:
-    T foo(T x) { return x; }
-  };
-  extern template class Foo<int>;
-  template class Foo<int>;
-  // CHECK: define weak_odr i32 @_ZN7PR116423FooIiE3fooEi
-}
-
-// Test that clang implements the new gcc behaviour for inline functions.
-// GCC PR30066.
-namespace test3 {
-  inline void foo(void) {
-  }
-  template<typename T>
-  inline void zed() {
-  }
-  template void zed<float>();
-  void bar(void) {
-    foo();
-    zed<int>();
-  }
-  // CHECK: define weak_odr void @_ZN5test33zedIfEEvv
-  // CHECK: define linkonce_odr hidden void @_ZN5test33fooEv
-  // CHECK: define linkonce_odr hidden void @_ZN5test33zedIiEEvv
-}
-
-namespace test4 {
-  extern inline __attribute__ ((__gnu_inline__))
-  void foo() {}
-  void bar() {
-    foo();
-  }
-  // CHECK: define available_externally void @_ZN5test43fooE
-}
-
-namespace test5 {
-  // just don't crash.
-  template <int> inline void Op();
-  class UnaryInstruction {
-    UnaryInstruction() {
-      Op<0>();
-    }
-  };
-  template <int Idx_nocapture> void Op() {
-  }
-}
-
-namespace test6 {
-  // just don't crash.
-  template <typename T>
-  void f(T x) {
-  }
-  struct C {
-    static void g() {
-      f([](){});
-    }
-  };
-  void g() {
-    C::g();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-ms-compat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-ms-compat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility-ms-compat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,112 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -triple=x86_64-apple-darwin10 -fvisibility hidden -ftype-visibility default -emit-llvm -o %t
-// RUN: FileCheck %s < %t
-// RUN: FileCheck -check-prefix=CHECK-GLOBAL %s < %t
-
-// The two visibility options above are how we translate
-// -fvisibility-ms-compat in the driver.
-
-// rdar://13079314
-
-#define HIDDEN __attribute__((visibility("hidden")))
-#define PROTECTED __attribute__((visibility("protected")))
-#define DEFAULT __attribute__((visibility("default")))
-
-namespace std {
-  class type_info;
-};
-
-namespace test0 {
-  struct A {
-    static void foo();
-    static void bar();
-  };
-
-  void A::foo() { bar(); }
-  // CHECK: define hidden void @_ZN5test01A3fooEv()
-  // CHECK: declare void @_ZN5test01A3barEv()
-
-  const std::type_info &ti = typeid(A);
-  // CHECK-GLOBAL: @_ZTSN5test01AE = linkonce_odr constant
-  // CHECK-GLOBAL: @_ZTIN5test01AE = linkonce_odr unnamed_addr constant
-  // CHECK-GLOBAL: @_ZN5test02tiE = hidden constant
-}
-
-namespace test1 {
-  struct HIDDEN A {
-    static void foo();
-    static void bar();
-  };
-
-  void A::foo() { bar(); }
-  // CHECK: define hidden void @_ZN5test11A3fooEv()
-  // CHECK: declare hidden void @_ZN5test11A3barEv()
-
-  const std::type_info &ti = typeid(A);
-  // CHECK-GLOBAL: @_ZTSN5test11AE = linkonce_odr hidden constant
-  // CHECK-GLOBAL: @_ZTIN5test11AE = linkonce_odr hidden unnamed_addr constant
-  // CHECK-GLOBAL: @_ZN5test12tiE = hidden constant
-}
-
-namespace test2 {
-  struct DEFAULT A {
-    static void foo();
-    static void bar();
-  };
-
-  void A::foo() { bar(); }
-  // CHECK: define void @_ZN5test21A3fooEv()
-  // CHECK: declare void @_ZN5test21A3barEv()
-
-  const std::type_info &ti = typeid(A);
-  // CHECK-GLOBAL: @_ZTSN5test21AE = linkonce_odr constant
-  // CHECK-GLOBAL: @_ZTIN5test21AE = linkonce_odr unnamed_addr constant
-  // CHECK-GLOBAL: @_ZN5test22tiE = hidden constant
-}
-
-namespace test3 {
-  struct A { int x; };
-  template <class T> struct B {
-    static void foo() { bar(); }
-    static void bar();
-  };
-
-  template void B<A>::foo();
-  // CHECK: define weak_odr hidden void @_ZN5test31BINS_1AEE3fooEv()
-  // CHECK: declare void @_ZN5test31BINS_1AEE3barEv()
-
-  const std::type_info &ti = typeid(B<A>);
-  // CHECK-GLOBAL: @_ZTSN5test31BINS_1AEEE = linkonce_odr constant
-  // CHECK-GLOBAL: @_ZTIN5test31BINS_1AEEE = linkonce_odr unnamed_addr constant
-}
-
-namespace test4 {
-  struct A { int x; };
-  template <class T> struct DEFAULT B {
-    static void foo() { bar(); }
-    static void bar();
-  };
-
-  template void B<A>::foo();
-  // CHECK: define weak_odr void @_ZN5test41BINS_1AEE3fooEv()
-  // CHECK: declare void @_ZN5test41BINS_1AEE3barEv()
-
-  const std::type_info &ti = typeid(B<A>);
-  // CHECK-GLOBAL: @_ZTSN5test41BINS_1AEEE = linkonce_odr constant
-  // CHECK-GLOBAL: @_ZTIN5test41BINS_1AEEE = linkonce_odr unnamed_addr constant
-}
-
-namespace test5 {
-  struct A { int x; };
-  template <class T> struct HIDDEN B {
-    static void foo() { bar(); }
-    static void bar();
-  };
-
-  template void B<A>::foo();
-  // CHECK: define weak_odr hidden void @_ZN5test51BINS_1AEE3fooEv()
-  // CHECK: declare hidden void @_ZN5test51BINS_1AEE3barEv()
-
-  const std::type_info &ti = typeid(B<A>);
-  // CHECK-GLOBAL: @_ZTSN5test51BINS_1AEEE = linkonce_odr hidden constant
-  // CHECK-GLOBAL: @_ZTIN5test51BINS_1AEEE = linkonce_odr hidden unnamed_addr constant
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/visibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1279 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -std=c++11 -triple=x86_64-apple-darwin10 -fvisibility hidden -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-HIDDEN
-
-#define HIDDEN __attribute__((visibility("hidden")))
-#define PROTECTED __attribute__((visibility("protected")))
-#define DEFAULT __attribute__((visibility("default")))
-
-namespace test30 {
-  // When H is hidden, it should make X hidden, even if the template argument
-  // is not.
-  struct H {
-  };
-  template<H *T>
-  struct X {
-  };
-  H DEFAULT a;
-  X<&a> b;
-  // CHECK: _ZN6test301bE = global
-  // CHECK-HIDDEN: _ZN6test301bE = hidden global
-}
-
-namespace test25 {
-  template<typename T>
-  struct X {
-    template<typename U>
-    struct definition {
-    };
-  };
-
-  class DEFAULT A { };
-
-  X<int>::definition<A> a;
-  // CHECK: @_ZN6test251aE = global
-  // CHECK-HIDDEN: @_ZN6test251aE = hidden global
-}
-
-namespace test28 {
-  class DEFAULT foo {
-  };
-  foo myvec;
-  // CHECK: @_ZN6test285myvecE = global
-  // CHECK-HIDDEN: @_ZN6test285myvecE = hidden global
-}
-
-namespace test29 {
-#pragma GCC visibility push(hidden)
-  struct RECT {
-    int top;
-  };
-  DEFAULT extern RECT data_rect;
-  RECT data_rect = { -1};
-#pragma GCC visibility pop
-  // CHECK: @_ZN6test299data_rectE = global
-  // CHECK-HIDDEN: @_ZN6test299data_rectE = global
-}
-
-namespace test40 {
-  template<typename T>
-  struct foo {
-    DEFAULT static int bar;
-  };
-  template<typename T>
-  int foo<T>::bar;
-  template struct foo<int>;
-  // CHECK: _ZN6test403fooIiE3barE = weak_odr global
-  // CHECK-HIDDEN: _ZN6test403fooIiE3barE = weak_odr global
-}
-
-namespace test41 {
-  // Unlike gcc we propagate the information that foo not only is hidden, but
-  // has been explicitly marked as so. This lets us produce a hidden undefined
-  // reference to bar.
-  struct HIDDEN foo {};
-  extern foo bar;
-  foo *zed() {
-    return &bar;
-  }
-  // CHECK: @_ZN6test413barE = external hidden global
-  // CHECK-HIDDEN: @_ZN6test413barE = external hidden global
-}
-
-namespace test48 {
-  // Test that we use the visibility of struct foo when instantiating the
-  // template. Note that is a case where we disagree with gcc, it produces
-  // a default symbol.
-  struct HIDDEN foo {
-  };
-  DEFAULT foo x;
-
-  struct bar {
-    template<foo *z>
-    struct zed {
-    };
-  };
-
-  bar::zed<&x> y;
-  // CHECK: _ZN6test481yE = hidden global
-  // CHECK-HIDDEN: _ZN6test481yE = hidden global
-}
-
-// CHECK: @_ZN5Test425VariableInHiddenNamespaceE = hidden global i32 10
-// CHECK: @_ZN5Test71aE = hidden global
-// CHECK: @_ZN5Test71bE = global
-// CHECK: @test9_var = global
-// CHECK-HIDDEN: @test9_var = global
-// CHECK: @_ZN6Test121A6hiddenE = external hidden global
-// CHECK: @_ZN6Test121A7visibleE = external global
-// CHECK-HIDDEN: @_ZN6Test121A6hiddenE = external hidden global
-// CHECK-HIDDEN: @_ZN6Test121A7visibleE = external global
-// CHECK: @_ZN6Test131B1aE = hidden global
-// CHECK: @_ZN6Test131C1aE = global
-// CHECK-HIDDEN: @_ZN6Test131B1aE = hidden global
-// CHECK-HIDDEN: @_ZN6Test131C1aE = global
-// CHECK: @_ZN6Test143varE = external global
-// CHECK-HIDDEN: @_ZN6Test143varE = external global
-// CHECK: @_ZN6Test154TempINS_1AEE5Inner6bufferE = external global [0 x i8]
-// CHECK-HIDDEN: @_ZN6Test154TempINS_1AEE5Inner6bufferE = external global [0 x i8]
-
-namespace test27 {
-  template<typename T>
-  class C {
-    class DEFAULT D {
-      void f();
-    };
-  };
-
-  template<>
-  class C<int>::D {
-    virtual void g();
-  };
-
-  void C<int>::D::g() {
-  }
-  // CHECK: _ZTVN6test271CIiE1DE = unnamed_addr constant
-  // CHECK-HIDDEN: _ZTVN6test271CIiE1DE = unnamed_addr constant
-}
-
-// CHECK: @_ZZN6Test193fooIiEEvvE1a = linkonce_odr global
-// CHECK: @_ZGVZN6Test193fooIiEEvvE1a = linkonce_odr global i64
-// CHECK-HIDDEN: @_ZZN6Test193fooIiEEvvE1a = linkonce_odr hidden global
-// CHECK-HIDDEN: @_ZGVZN6Test193fooIiEEvvE1a = linkonce_odr hidden global i64
-// CHECK-HIDDEN: @_ZTVN6Test161AIcEE = external unnamed_addr constant
-// CHECK-HIDDEN: @_ZTTN6Test161AIcEE = external unnamed_addr constant
-// CHECK: @_ZTVN5Test63fooE = linkonce_odr hidden unnamed_addr constant 
-
-namespace Test1 {
-  // CHECK: define hidden void @_ZN5Test11fEv
-  void HIDDEN f() { }
-  
-}
-
-namespace Test2 {
-  struct HIDDEN A {
-    void f();
-  };
-
-  // A::f is a member function of a hidden class.
-  // CHECK: define hidden void @_ZN5Test21A1fEv
-  void A::f() { }
-}
- 
-namespace Test3 {
-  struct HIDDEN A {
-    struct B {
-      void f();
-    };
-  };
-
-  // B is a nested class where its parent class is hidden.
-  // CHECK: define hidden void @_ZN5Test31A1B1fEv
-  void A::B::f() { }  
-}
-
-namespace Test4 HIDDEN {
-  int VariableInHiddenNamespace = 10;
-
-  // Test4::g is in a hidden namespace.
-  // CHECK: define hidden void @_ZN5Test41gEv
-  void g() { } 
-  
-  struct DEFAULT A {
-    void f();
-  };
-  
-  // A has default visibility.
-  // CHECK: define void @_ZN5Test41A1fEv
-  void A::f() { } 
-}
-
-namespace Test5 {
-
-  namespace NS HIDDEN {
-    // f is in NS which is hidden.
-    // CHECK: define hidden void @_ZN5Test52NS1fEv()
-    void f() { }
-  }
-  
-  namespace NS {
-    // g is in NS, but this NS decl is not hidden.
-    // CHECK: define void @_ZN5Test52NS1gEv
-    void g() { }
-  }
-}
-
-// <rdar://problem/8091955>
-namespace Test6 {
-  struct HIDDEN foo {
-    foo() { }
-    void bonk();
-    virtual void bar() = 0;
-
-    virtual void zonk() {}
-  };
-
-  struct barc : public foo {
-    barc();
-    virtual void bar();
-  };
-
-  barc::barc() {}
-}
-
-namespace Test7 {
-  class HIDDEN A {};
-  A a; // top of file
-
-  template <A&> struct Aref {
-    static void foo() {}
-  };
-
-  class B : public A {};
-  B b; // top of file
-
-  // CHECK: define linkonce_odr hidden void @_ZN5Test74ArefILZNS_1aEEE3fooEv()
-  void test() {
-    Aref<a>::foo();
-  }
-}
-
-namespace Test8 {
-  void foo();
-  void bar() {}
-  // CHECK-HIDDEN: define hidden void @_ZN5Test83barEv()
-  // CHECK-HIDDEN: declare void @_ZN5Test83fooEv()
-
-  void test() {
-    foo();
-    bar();
-  }
-}
-
-// PR8457
-namespace Test9 {
-  extern "C" {
-    struct A { int field; };
-    void DEFAULT test9_fun(struct A *a) { }
-    struct A DEFAULT test9_var; // above
-  }
-  // CHECK: define void @test9_fun(
-  // CHECK-HIDDEN: define void @test9_fun(
-
-  void test() {
-    A a = test9_var;
-    test9_fun(&a);
-  }
-}
-
-// PR8478
-namespace Test10 {
-  struct A;
-
-  class DEFAULT B {
-    void foo(A*);
-  };
-
-  // CHECK: define void @_ZN6Test101B3fooEPNS_1AE(
-  // CHECK-HIDDEN: define void @_ZN6Test101B3fooEPNS_1AE(
-  void B::foo(A*) {}
-}
-
-// PR8492
-namespace Test11 {
-  struct A {
-    void foo() {}
-    void DEFAULT bar() {}
-  };
-
-  void test() {
-    A a;
-    a.foo();
-    a.bar();
-  }
-
-  // CHECK: define linkonce_odr void @_ZN6Test111A3fooEv(
-  // CHECK: define linkonce_odr void @_ZN6Test111A3barEv(
-  // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6Test111A3fooEv(
-  // CHECK-HIDDEN: define linkonce_odr void @_ZN6Test111A3barEv(
-}
-
-// Tested at top of file.
-namespace Test12 {
-  struct A {
-    // This is hidden in all cases: the explicit attribute takes
-    // priority over -fvisibility on the parent.
-    static int hidden HIDDEN;
-
-    // This is default in all cases because it's only a declaration.
-    static int visible;
-  };
-
-  void test() {
-    A::hidden = 0;
-    A::visible = 0;
-  }
-}
-
-// Tested at top of file.
-namespace Test13 {
-  struct HIDDEN A {};
-
-  // Should be hidden in all cases.
-  struct B {
-    static A a;
-  };
-  A B::a;
-
-  // Should be default in all cases.
-  struct DEFAULT C {
-    static A a;
-  };
-  A C::a;
-};
-
-// Tested at top of file.
-namespace Test14 {
-  // Neither the visibility of the type nor -fvisibility=hidden should
-  // apply to declarations.
-  extern struct A *var;
-
-  struct A *test() { return var; }
-}
-
-// rdar://problem/8613093
-namespace Test15 {
-  struct A {};
-  template <class T> struct Temp {
-    struct Inner {
-      static char buffer[0];
-    };
-  };
-
-  char *test() {
-    return Temp<A>::Inner::buffer;
-  }
-}
-
-namespace Test16 {
-  struct Base1 { virtual void foo(); };
-  struct Base2 : virtual Base1 { virtual void foo(); };
-  template <class T> struct A : virtual Base1, Base2 {
-    virtual void foo();
-  };
-  extern template struct A<char>;
-
-  void test() {
-    A<char> a;
-    a.foo();
-  }
-}
-
-namespace Test17 {
-  struct HIDDEN A {
-    static void foo();
-    static void DEFAULT bar();
-    static void HIDDEN baz();
-
-    struct DEFAULT B {
-      static void foo();
-      static void DEFAULT bar();
-      static void HIDDEN baz();
-    };
-  };
-
-  void test() {
-    A::foo();
-    A::bar();
-    A::baz();
-    A::B::foo();
-    A::B::bar();
-    A::B::baz();
-  }
-  // CHECK: declare hidden void @_ZN6Test171A3fooEv()
-  // CHECK: declare void @_ZN6Test171A3barEv()
-  // CHECK: declare hidden void @_ZN6Test171A3bazEv()
-  // CHECK: declare void @_ZN6Test171A1B3fooEv()
-  // CHECK: declare void @_ZN6Test171A1B3barEv()
-  // CHECK: declare hidden void @_ZN6Test171A1B3bazEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test171A3fooEv()
-  // CHECK-HIDDEN: declare void @_ZN6Test171A3barEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test171A3bazEv()
-  // CHECK-HIDDEN: declare void @_ZN6Test171A1B3fooEv()
-  // CHECK-HIDDEN: declare void @_ZN6Test171A1B3barEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test171A1B3bazEv()
-}
-
-namespace Test18 {
-  template <class T> struct HIDDEN A {
-    static void foo();
-    static void DEFAULT bar();
-    static void HIDDEN baz();
-
-    struct DEFAULT B {
-      static void foo();
-      static void DEFAULT bar();
-      static void HIDDEN baz();
-    };
-  };
-  struct HIDDEN H;
-
-  void test() {
-    A<int>::foo();
-    A<int>::bar();
-    A<int>::baz();
-    A<int>::B::foo();
-    A<int>::B::bar();
-    A<int>::B::baz();
-    A<H>::foo();
-    A<H>::bar();
-    A<H>::baz();
-    A<H>::B::foo();
-    A<H>::B::bar();
-    A<H>::B::baz();
-  }
-  // CHECK: declare hidden void @_ZN6Test181AIiE3fooEv()
-  // CHECK: declare void @_ZN6Test181AIiE3barEv()
-  // CHECK: declare hidden void @_ZN6Test181AIiE3bazEv()
-  // CHECK: declare void @_ZN6Test181AIiE1B3fooEv()
-  // CHECK: declare void @_ZN6Test181AIiE1B3barEv()
-  // CHECK: declare hidden void @_ZN6Test181AIiE1B3bazEv()
-  // CHECK: declare hidden void @_ZN6Test181AINS_1HEE3fooEv()
-  // CHECK: declare hidden void @_ZN6Test181AINS_1HEE3barEv()
-  // CHECK: declare hidden void @_ZN6Test181AINS_1HEE3bazEv()
-  // CHECK: declare hidden void @_ZN6Test181AINS_1HEE1B3fooEv()
-  // CHECK: declare hidden void @_ZN6Test181AINS_1HEE1B3barEv()
-  // CHECK: declare hidden void @_ZN6Test181AINS_1HEE1B3bazEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AIiE3fooEv()
-  // CHECK-HIDDEN: declare void @_ZN6Test181AIiE3barEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AIiE3bazEv()
-  // CHECK-HIDDEN: declare void @_ZN6Test181AIiE1B3fooEv()
-  // CHECK-HIDDEN: declare void @_ZN6Test181AIiE1B3barEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AIiE1B3bazEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AINS_1HEE3fooEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AINS_1HEE3barEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AINS_1HEE3bazEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AINS_1HEE1B3fooEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AINS_1HEE1B3barEv()
-  // CHECK-HIDDEN: declare hidden void @_ZN6Test181AINS_1HEE1B3bazEv()
-}
-
-namespace Test19 {
-  struct A { A(); ~A(); };
-
-  // Tested at top of file.
-  template <class T> void foo() {
-    static A a;
-  }
-
-  void test() {
-    foo<int>();
-  }
-}
-
-// Various things with class template specializations.
-namespace Test20 {
-  template <unsigned> struct HIDDEN A {};
-
-  // An explicit specialization inherits the explicit visibility of
-  // the template.
-  template <> struct A<0> {
-    static void test0();
-    static void test1();
-  };
-
-  // CHECK: define hidden void @_ZN6Test201AILj0EE5test0Ev()
-  void A<0>::test0() {}
-
-  // CHECK: declare hidden void @_ZN6Test201AILj0EE5test1Ev()
-  void test1() {
-    A<0>::test1();
-  }
-
-  // ...unless that's explicitly overridden.
-  template <> struct DEFAULT A<1> {
-    static void test2();
-    static void test3();
-  };
-
-  // CHECK: define void @_ZN6Test201AILj1EE5test2Ev()
-  void A<1>::test2() {}
-
-  // CHECK: declare void @_ZN6Test201AILj1EE5test3Ev()
-  void test3() {
-    A<1>::test3();
-  }
-
-  // <rdar://problem/8778497>
-  // But we should assume that an unknown specialization has the
-  // explicit visibility settings of the template.
-  template <class T> struct B {
-    static void test4() {}
-    static void test5();
-  };
-
-  // CHECK: define linkonce_odr hidden void @_ZN6Test201BINS_1AILj2EEEE5test4Ev()
-  void test4() {
-    B<A<2> >::test4();
-  }
-
-  // CHECK: declare hidden void @_ZN6Test201BINS_1AILj2EEEE5test5Ev()
-  void test5() {
-    B<A<2> >::test5();
-  }
-}
-
-// PR9371
-namespace test21 {
-  enum En { en };
-  template<En> struct A {
-    DEFAULT void foo() {}
-  };
-
-  // CHECK: define weak_odr void @_ZN6test211AILNS_2EnE0EE3fooEv(
-  template void A<en>::foo();
-}
-
-// rdar://problem/9616154
-// Visibility on explicit specializations should take precedence.
-namespace test22 {
-  class A1 {};
-  class A2 {};
-
-  template <class T> struct B {};
-  template <> struct DEFAULT B<A1> {
-    static void foo();
-    static void bar() {}
-  };
-  template <> struct B<A2> {
-    static void foo();
-    static void bar() {}
-  };
-
-  void test() {
-    B<A1>::foo();
-    B<A1>::bar();
-    B<A2>::foo();
-    B<A2>::bar();
-  }
-  // CHECK: declare void @_ZN6test221BINS_2A1EE3fooEv()
-  // CHECK: define linkonce_odr void @_ZN6test221BINS_2A1EE3barEv()
-  // CHECK: declare void @_ZN6test221BINS_2A2EE3fooEv()
-  // CHECK: define linkonce_odr void @_ZN6test221BINS_2A2EE3barEv()
-  // CHECK-HIDDEN: declare void @_ZN6test221BINS_2A1EE3fooEv()
-  // CHECK-HIDDEN: define linkonce_odr void @_ZN6test221BINS_2A1EE3barEv()
-  // CHECK-HIDDEN: declare void @_ZN6test221BINS_2A2EE3fooEv()
-  // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test221BINS_2A2EE3barEv()
-}
-
-namespace PR10113 {
-  namespace foo DEFAULT {
-    template<typename T>
-      class bar {
-      void zed() {}
-    };
-  }
-  template class foo::bar<char>;
-  // CHECK: define weak_odr void @_ZN7PR101133foo3barIcE3zedEv
-  // CHECK-HIDDEN: define weak_odr void @_ZN7PR101133foo3barIcE3zedEv
-
-  struct zed {
-  };
-  template class foo::bar<zed>;
-  // CHECK: define weak_odr void @_ZN7PR101133foo3barINS_3zedEE3zedEv
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN7PR101133foo3barINS_3zedEE3zedEv
-}
-
-namespace PR11690 {
-  template<class T> struct Class {
-    void size() const {
-    }
-  };
-  template class DEFAULT Class<char>;
-  // CHECK: define weak_odr void @_ZNK7PR116905ClassIcE4sizeEv
-  // CHECK-HIDDEN: define weak_odr void @_ZNK7PR116905ClassIcE4sizeEv
-
-  template<class T> void Method() {}
-  template  DEFAULT void Method<char>();
-  // CHECK: define weak_odr void @_ZN7PR116906MethodIcEEvv
-  // CHECK-HIDDEN: define weak_odr void @_ZN7PR116906MethodIcEEvv
-}
-
-namespace PR11690_2 {
-  namespace foo DEFAULT {
-    class bar;
-    template<typename T1, typename T2 = bar>
-    class zed {
-      void bar() {
-      }
-    };
-  }
-  struct baz {
-  };
-  template class foo::zed<baz>;
-  // CHECK: define weak_odr void @_ZN9PR11690_23foo3zedINS_3bazENS0_3barEE3barEv
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN9PR11690_23foo3zedINS_3bazENS0_3barEE3barEv
-}
-
-namespace test23 {
-  // Having a template argument that is explicitly visible should not make
-  // the template instantiation visible.
-  template <typename T>
-  struct X {
-    static void f() {
-    }
-  };
-
-  class DEFAULT A;
-
-  void g() {
-    X<A> y;
-    y.f();
-  }
-  // CHECK: define linkonce_odr void @_ZN6test231XINS_1AEE1fEv
-  // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test231XINS_1AEE1fEv
-}
-
-namespace PR12001 {
-  template <typename P1>
-  void Bind(const P1& p1) {
-  }
-
-  class DEFAULT Version { };
-
-  void f() {
-    Bind(Version());
-  }
-  // CHECK: define linkonce_odr void @_ZN7PR120014BindINS_7VersionEEEvRKT_
-  // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN7PR120014BindINS_7VersionEEEvRKT_
-}
-
-namespace test24 {
-  class DEFAULT A { };
-
-  struct S {
-    template <typename T>
-    void mem() {}
-  };
-
-  void test() {
-    S s;
-    s.mem<A>();
-  }
-  // CHECK: define linkonce_odr void @_ZN6test241S3memINS_1AEEEvv
-  // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test241S3memINS_1AEEEvv
-}
-
-namespace test26 {
-  template<typename T>
-  class C {
-    DEFAULT  void f();
-  };
-
-  template<>
-  void C<int>::f() { }
-
-  // CHECK: define void @_ZN6test261CIiE1fEv
-  // CHECK-HIDDEN: define void @_ZN6test261CIiE1fEv
-}
-
-namespace test31 {
-  struct A {
-    struct HIDDEN B {
-      static void DEFAULT baz();
-    };
-  };
-  void f() {
-    A::B::baz();
-  }
-  // CHECK: declare void @_ZN6test311A1B3bazEv()
-  // CHECK-HIDDEN: declare void @_ZN6test311A1B3bazEv()
-}
-
-namespace test32 {
-  struct HIDDEN A {
-    struct DEFAULT B {
-      void DEFAULT baz();
-    };
-  };
-  void A::B::baz() {
-  }
-  // CHECK: define void @_ZN6test321A1B3bazEv
-  // CHECK-HIDDEN: define void @_ZN6test321A1B3bazEv
-}
-
-namespace test33 {
-  template<typename T>
-  class foo {
-    void bar() {}
-  };
-  struct HIDDEN zed {
-  };
-  template class DEFAULT foo<zed>;
-  // CHECK: define weak_odr void @_ZN6test333fooINS_3zedEE3barEv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test333fooINS_3zedEE3barEv
-}
-
-namespace test34 {
-  struct foo {
-  };
-  template<class T>
-  void bar() {}
-  template DEFAULT void bar<foo>();
-  // CHECK: define weak_odr void @_ZN6test343barINS_3fooEEEvv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test343barINS_3fooEEEvv
-}
-
-namespace test35 {
-  // This is a really ugly testcase. GCC propagates the DEFAULT in zed's
-  // definition. It's not really clear what we can do here, because we
-  // produce the symbols before even seeing the DEFAULT definition of zed.
-  // FIXME: Maybe the best thing to do here is error?  It's certainly hard
-  // to argue that this ought to be valid.
-  template<typename T>
-  struct DEFAULT foo {
-    void bar() {}
-  };
-  class zed;
-  template class foo<zed>;
-  class DEFAULT zed {
-  };
-  // CHECK: define weak_odr void @_ZN6test353fooINS_3zedEE3barEv
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN6test353fooINS_3zedEE3barEv
-}
-
-namespace test36 {
-  template<typename T1, typename T2>
-  class foo {
-    void bar() {}
-  };
-  class DEFAULT S1 {};
-  struct HIDDEN S2 {};
-  template class foo<S1, S2>;
-  // CHECK: define weak_odr hidden void @_ZN6test363fooINS_2S1ENS_2S2EE3barEv
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN6test363fooINS_2S1ENS_2S2EE3barEv
-}
-
-namespace test37 {
-  struct HIDDEN foo {
-  };
-  template<class T>
-  DEFAULT void bar() {}
-  template DEFAULT void bar<foo>();
-  // CHECK: define weak_odr void @_ZN6test373barINS_3fooEEEvv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test373barINS_3fooEEEvv
-}
-
-namespace test38 {
-  template<typename T>
-  class DEFAULT foo {
-    void bar() {}
-  };
-  struct HIDDEN zed {
-  };
-  template class foo<zed>;
-  // CHECK: define weak_odr hidden void @_ZN6test383fooINS_3zedEE3barEv
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN6test383fooINS_3zedEE3barEv
-}
-
-namespace test39 {
-  class DEFAULT default_t;
-  class HIDDEN hidden_t;
-  template <class T> class A {
-    template <class U> class B {
-      HIDDEN void hidden() {}
-      void noattr() {}
-      template <class V> void temp() {}
-    };
-  };
-  template class DEFAULT A<hidden_t>;
-  template class DEFAULT A<hidden_t>::B<hidden_t>;
-  template void A<hidden_t>::B<hidden_t>::temp<default_t>();
-  template void A<hidden_t>::B<hidden_t>::temp<hidden_t>();
-
-  // CHECK: define weak_odr hidden void @_ZN6test391AINS_8hidden_tEE1BIS1_E6hiddenEv
-  // CHECK: define weak_odr void @_ZN6test391AINS_8hidden_tEE1BIS1_E6noattrEv
-  // CHECK: define weak_odr void @_ZN6test391AINS_8hidden_tEE1BIS1_E4tempINS_9default_tEEEvv
-
-  // GCC produces a default for this one. Why?
-  // CHECK: define weak_odr hidden void @_ZN6test391AINS_8hidden_tEE1BIS1_E4tempIS1_EEvv
-
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN6test391AINS_8hidden_tEE1BIS1_E6hiddenEv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test391AINS_8hidden_tEE1BIS1_E6noattrEv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test391AINS_8hidden_tEE1BIS1_E4tempINS_9default_tEEEvv
-
-  // GCC produces a default for this one. Why?
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN6test391AINS_8hidden_tEE1BIS1_E4tempIS1_EEvv
-}
-
-namespace test42 {
-  struct HIDDEN foo {
-  };
-  template <class P>
-  struct bar {
-  };
-  template <>
-  struct HIDDEN bar<foo> {
-    DEFAULT static void zed();
-  };
-  void bar<foo>::zed() {
-  }
-  // CHECK: define void @_ZN6test423barINS_3fooEE3zedEv
-  // CHECK-HIDDEN: define void @_ZN6test423barINS_3fooEE3zedEv
-}
-
-namespace test43 {
-  struct HIDDEN foo {
-  };
-  template <class P>
-  void bar() {
-  }
-  template <>
-  DEFAULT void bar<foo>() {
-  }
-  // CHECK: define void @_ZN6test433barINS_3fooEEEvv
-  // CHECK-HIDDEN: define void @_ZN6test433barINS_3fooEEEvv
-}
-
-namespace test44 {
-  template <typename T>
-  struct foo {
-    foo() {}
-  };
-  namespace {
-    struct bar;
-  }
-  template struct DEFAULT foo<bar>;
-  foo<bar> x;
-  // CHECK: define internal void @_ZN6test443fooINS_12_GLOBAL__N_13barEEC1Ev
-  // CHECK-HIDDEN: define internal void @_ZN6test443fooINS_12_GLOBAL__N_13barEEC1Ev
-}
-
-namespace test45 {
-  template <typename T>
-  struct foo {
-    template <typename T2>
-    struct bar {
-      bar() {};
-    };
-  };
-  namespace {
-    struct zed;
-  }
-  template struct DEFAULT foo<int>::bar<zed>;
-  foo<int>::bar<zed> x;
-  // CHECK: define internal void @_ZN6test453fooIiE3barINS_12_GLOBAL__N_13zedEEC1Ev
-  // CHECK-HIDDEN: define internal void @_ZN6test453fooIiE3barINS_12_GLOBAL__N_13zedEEC1Ev
-}
-
-namespace test46 {
-  template <typename T>
-  void foo() {
-  }
-  namespace {
-    struct bar;
-  }
-  template DEFAULT void foo<bar>();
-  void zed() {
-    foo<bar>();
-  }
-  // CHECK: define internal void @_ZN6test463fooINS_12_GLOBAL__N_13barEEEvv
-  // CHECK-HIDDEN: define internal void @_ZN6test463fooINS_12_GLOBAL__N_13barEEEvv
-}
-
-namespace test47 {
-  struct foo {
-    template <typename T>
-    static void bar() {
-    }
-  };
-  namespace {
-    struct zed;
-  }
-  template DEFAULT void foo::bar<zed>();
-  void baz() {
-    foo::bar<zed>();
-  }
-  // CHECK: define internal void @_ZN6test473foo3barINS_12_GLOBAL__N_13zedEEEvv
-  // CHECK-HIDDEN: define internal void @_ZN6test473foo3barINS_12_GLOBAL__N_13zedEEEvv
-}
-
-namespace test49 {
-  // Test that we use the visibility of struct foo when instantiating the
-  // template. Note that is a case where we disagree with gcc, it produces
-  // a default symbol.
-
-  struct HIDDEN foo {
-  };
-
-  DEFAULT foo x;
-
-  struct bar {
-    template<foo *z>
-    void zed() {
-    }
-  };
-
-  template void bar::zed<&x>();
-  // CHECK: define weak_odr hidden void @_ZN6test493bar3zedIXadL_ZNS_1xEEEEEvv
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN6test493bar3zedIXadL_ZNS_1xEEEEEvv
-}
-
-namespace test50 {
-  // Test that we use the visibility of struct foo when instantiating the
-  // template. Note that is a case where we disagree with gcc, it produces
-  // a default symbol.
-
-  struct HIDDEN foo {
-  };
-  DEFAULT foo x;
-  template<foo *z>
-  struct DEFAULT bar {
-    void zed() {
-    }
-  };
-  template void bar<&x>::zed();
-  // CHECK: define weak_odr hidden void @_ZN6test503barIXadL_ZNS_1xEEEE3zedEv
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN6test503barIXadL_ZNS_1xEEEE3zedEv
-}
-
-namespace test51 {
-  // Test that we use the visibility of struct foo when instantiating the
-  // template. Note that is a case where we disagree with gcc, it produces
-  // a default symbol.
-
-  struct HIDDEN foo {
-  };
-  DEFAULT foo x;
-  template<foo *z>
-  void DEFAULT zed() {
-  }
-  template void zed<&x>();
-  // CHECK: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_1xEEEEEvv
-  // CHECK-HIDDEN: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_1xEEEEEvv
-}
-
-namespace test52 {
-  // Test that we use the linkage of struct foo when instantiating the
-  // template. Note that is a case where we disagree with gcc, it produces
-  // an external symbol.
-
-  namespace {
-    struct foo {
-    };
-  }
-  template<foo *x>
-  void zed() {
-  }
-  void f() {
-    zed<nullptr>();
-  }
-  // CHECK: define internal void @_ZN6test523zedILPNS_12_GLOBAL__N_13fooE0EEEvv
-  // CHECK-HIDDEN: define internal void @_ZN6test523zedILPNS_12_GLOBAL__N_13fooE0EEEvv
-}
-
-namespace test53 {
-  template<typename _Tp > struct vector   {
-    static void       _M_fill_insert();
-  };
-#pragma GCC visibility push(hidden)
-  // GCC doesn't seem to use the visibility of enums at all, we do.
-  enum zed {v1};
-
-  // GCC fails to mark this specialization hidden, we mark it.
-  template<>
-  struct vector<int> {
-    static void       _M_fill_insert();
-  };
-  void foo() {
-    vector<unsigned>::_M_fill_insert();
-    vector<int>::_M_fill_insert();
-    vector<zed>::_M_fill_insert();
-  }
-#pragma GCC visibility pop
-  // CHECK: declare void @_ZN6test536vectorIjE14_M_fill_insertEv
-  // CHECK-HIDDEN: declare void @_ZN6test536vectorIjE14_M_fill_insertEv
-  // CHECK: declare hidden void @_ZN6test536vectorIiE14_M_fill_insertEv
-  // CHECK-HIDDEN: declare hidden void @_ZN6test536vectorIiE14_M_fill_insertEv
-  // CHECK: declare hidden void @_ZN6test536vectorINS_3zedEE14_M_fill_insertEv
-  // CHECK-HIDDEN: declare hidden void @_ZN6test536vectorINS_3zedEE14_M_fill_insertEv
-}
-
-namespace test54 {
-  template <class T>
-  struct foo {
-    static void bar();
-  };
-#pragma GCC visibility push(hidden)
-  class zed {
-    zed(const zed &);
-  };
-  void bah() {
-    foo<zed>::bar();
-  }
-#pragma GCC visibility pop
-  // CHECK: declare hidden void @_ZN6test543fooINS_3zedEE3barEv
-  // CHECK-HIDDEN: declare hidden void @_ZN6test543fooINS_3zedEE3barEv
-}
-
-namespace test55 {
-  template <class T>
-  struct HIDDEN foo {
-    static void bar();
-  };
-  template <class T> struct foo;
-  void foobar() {
-    foo<int>::bar();
-  }
-  // CHECK: declare hidden void @_ZN6test553fooIiE3barEv
-  // CHECK-HIDDEN: declare hidden void @_ZN6test553fooIiE3barEv
-}
-
-namespace test56 {
-  template <class T> struct foo;
-  template <class T>
-  struct HIDDEN foo {
-    static void bar();
-  };
-  void foobar() {
-    foo<int>::bar();
-  }
-  // CHECK: declare hidden void @_ZN6test563fooIiE3barEv
-  // CHECK-HIDDEN: declare hidden void @_ZN6test563fooIiE3barEv
-}
-
-namespace test57 {
-#pragma GCC visibility push(hidden)
-  template <class T>
-  struct foo;
-  void bar(foo<int>*);
-  template <class T>
-  struct foo {
-    static void zed();
-  };
-  void bah() {
-    foo<int>::zed();
-  }
-#pragma GCC visibility pop
-  // CHECK: declare hidden void @_ZN6test573fooIiE3zedEv
-  // CHECK-HIDDEN: declare hidden void @_ZN6test573fooIiE3zedEv
-}
-
-namespace test58 {
-#pragma GCC visibility push(hidden)
-  struct foo;
-  template<typename T>
-  struct DEFAULT bar {
-    static void zed() {
-    }
-  };
-  void bah() {
-    bar<foo>::zed();
-  }
-#pragma GCC visibility pop
-  // CHECK: define linkonce_odr hidden void @_ZN6test583barINS_3fooEE3zedEv
-  // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test583barINS_3fooEE3zedEv
-}
-
-namespace test59 {
-  DEFAULT int f();
-  HIDDEN int g();
-  typedef int (*foo)();
-  template<foo x, foo y>
-  void test() {}
-  void use() {
-    test<&g, &f>();
-    // CHECK: define linkonce_odr hidden void @_ZN6test594testIXadL_ZNS_1gEvEEXadL_ZNS_1fEvEEEEvv
-    // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test594testIXadL_ZNS_1gEvEEXadL_ZNS_1fEvEEEEvv
-
-    test<&f, &g>();
-    // CHECK: define linkonce_odr hidden void @_ZN6test594testIXadL_ZNS_1fEvEEXadL_ZNS_1gEvEEEEvv
-    // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test594testIXadL_ZNS_1fEvEEXadL_ZNS_1gEvEEEEvv
-  }
-}
-
-namespace test60 {
-  template<int i>
-  class HIDDEN a {};
-  template<int i>
-  class DEFAULT b {};
-  template<template<int> class x, template<int> class y>
-  void test() {}
-  void use() {
-    test<a, b>();
-    // CHECK: define linkonce_odr hidden void @_ZN6test604testINS_1aENS_1bEEEvv
-    // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test604testINS_1aENS_1bEEEvv
-
-    test<b, a>();
-    // CHECK: define linkonce_odr hidden void @_ZN6test604testINS_1bENS_1aEEEvv
-    // CHECK-HIDDEN: define linkonce_odr hidden void @_ZN6test604testINS_1bENS_1aEEEvv
-  }
-}
-
-namespace test61 {
-  template <typename T1>
-  struct Class1
-  {
-    void f1() { f2(); }
-    inline void f2();
-  };
-  template<>
-  inline void Class1<int>::f2()
-  {
-  }
-  void g(Class1<int> *x) {
-    x->f1();
-  }
-}
-namespace test61 {
-  // Just test that we don't crash. Currently we apply this attribute. Current
-  // gcc issues a warning about it being unused since "the type is already
-  // defined". We should probably do the same.
-  template class HIDDEN Class1<int>;
-}
-
-namespace test62 {
-  template <typename T1>
-  struct Class1
-  {
-    void f1() { f2(); }
-    inline void f2() {}
-  };
-  template<>
-  inline void Class1<int>::f2()
-  {
-  }
-  void g(Class1<int> *x) {
-    x->f2();
-  }
-}
-namespace test62 {
-  template class HIDDEN Class1<int>;
-  // Just test that we don't crash. Currently we apply this attribute. Current
-  // gcc issues a warning about it being unused since "the type is already
-  // defined". We should probably do the same.
-}
-
-namespace test63 {
-  enum HIDDEN E { E0 };
-  struct A {
-    template <E> static void foo() {}
-
-    template <E> struct B {
-      static void foo() {}
-    };
-  };
-
-  void test() {
-    A::foo<E0>();
-    A::B<E0>::foo();
-  }
-  // CHECK: define linkonce_odr hidden void @_ZN6test631A3fooILNS_1EE0EEEvv()
-  // CHECK: define linkonce_odr hidden void @_ZN6test631A1BILNS_1EE0EE3fooEv()
-}
-
-// Don't ignore the visibility of template arguments just because we
-// explicitly instantiated something.
-namespace test64 {
-  struct HIDDEN A {};
-  template <class P> struct B {
-    static DEFAULT void foo() {}
-  };
-
-  template class B<A>;
-  // CHECK: define weak_odr hidden void @_ZN6test641BINS_1AEE3fooEv()
-}
-
-namespace test65 {
-  class HIDDEN A {};
-  template <class T> struct B {
-    static void func();
-    template <class U> static void funcT1();
-    template <class U> static void funcT2();
-    class Inner {};
-    template <class U> class InnerT {};
-  };
-  template <template <class T> class Temp> struct C {
-    static void foo() {}
-  };
-
-  // CHECK: define void @_ZN6test651BINS_1AEE4funcEv()
-  template <> DEFAULT void B<A>::func() {}
-
-  // CHECK: define void @_ZN6test651BINS_1AEE6funcT2IS1_EEvv()
-  template <> template <> DEFAULT void B<A>::funcT2<A>() {}
-
-  // CHECK: define linkonce_odr void @_ZN6test651BINS_1AEE6funcT1IiEEvv()
-  // CHECK: define linkonce_odr hidden void @_ZN6test651BINS_1AEE6funcT1IS1_EEvv()
-  template <> template <class T> DEFAULT void B<A>::funcT1() {}
-
-  // CHECK: define linkonce_odr void @_ZN6test651BINS_1AEE5Inner3fooEv()
-  template <> struct DEFAULT B<A>::Inner {
-    static void foo() {}
-  };
-
-  // CHECK: define linkonce_odr void @_ZN6test651BINS_1AEE6InnerTIiE3fooEv()
-  // CHECK: define linkonce_odr hidden void @_ZN6test651BINS_1AEE6InnerTIS1_E3fooEv()
-  template <> template <class U> struct DEFAULT B<A>::InnerT {
-    static void foo() {}
-  };
-
-  void test() {
-    B<A>::funcT1<int>();
-    B<A>::funcT1<A>();
-    B<A>::Inner::foo();
-    B<A>::InnerT<int>::foo();
-    B<A>::InnerT<A>::foo();
-  }
-
-  template class C<B<A>::InnerT>;
-}
-
-namespace test66 {
-  template <typename T>
-  struct DEFAULT barT {
-    static void zed() {}
-  };
-  class foo;
-  class DEFAULT foo;
-  template struct barT<foo>;
-  // CHECK: define weak_odr void @_ZN6test664barTINS_3fooEE3zedEv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test664barTINS_3fooEE3zedEv
-
-  template <int* I>
-  struct DEFAULT barI {
-    static void zed() {}
-  };
-  extern int I;
-  extern int I DEFAULT;
-  template struct barI<&I>;
-  // CHECK: define weak_odr void @_ZN6test664barIIXadL_ZNS_1IEEEE3zedEv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test664barIIXadL_ZNS_1IEEEE3zedEv
-
-  typedef void (*fType)(void);
-  template<fType F>
-  struct DEFAULT barF {
-    static void zed() {}
-  };
-  void F();
-  void F() DEFAULT;
-  template struct barF<F>;
-  // CHECK: define weak_odr void @_ZN6test664barFIXadL_ZNS_1FEvEEE3zedEv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test664barFIXadL_ZNS_1FEvEEE3zedEv
-}
-
-namespace test67 {
-  template <typename T>
-  struct DEFAULT bar {
-    static void zed() {}
-  };
-
-  class foo;
-  class compute {
-    void f(foo *rootfoo);
-  };
-  class DEFAULT foo;
-
-  template struct bar<foo>;
-  // CHECK: define weak_odr void @_ZN6test673barINS_3fooEE3zedEv
-  // CHECK-HIDDEN: define weak_odr void @_ZN6test673barINS_3fooEE3zedEv
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vla.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vla.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vla.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin %s -emit-llvm -o - | FileCheck %s
-
-template<typename T>
-struct S {
-  static int n;
-};
-template<typename T> int S<T>::n = 5;
-
-int f() {
-  // Make sure that the reference here is enough to trigger the instantiation of
-  // the static data member.
-  // CHECK: @_ZN1SIiE1nE = weak_odr global i32 5
-  int a[S<int>::n];
-  return sizeof a;
-}
-
-// rdar://problem/9506377
-void test0(void *array, int n) {
-  // CHECK: define void @_Z5test0Pvi(
-  // CHECK:      [[ARRAY:%.*]] = alloca i8*, align 8
-  // CHECK-NEXT: [[N:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[REF:%.*]] = alloca i16*, align 8
-  // CHECK-NEXT: [[S:%.*]] = alloca i16, align 2
-  // CHECK-NEXT: store i8* 
-  // CHECK-NEXT: store i32
-
-  // Capture the bounds.
-  // CHECK-NEXT: [[T0:%.*]] = load i32* [[N]], align 4
-  // CHECK-NEXT: [[DIM0:%.*]] = zext i32 [[T0]] to i64
-  // CHECK-NEXT: [[T0:%.*]] = load i32* [[N]], align 4
-  // CHECK-NEXT: [[T1:%.*]] = add nsw i32 [[T0]], 1
-  // CHECK-NEXT: [[DIM1:%.*]] = zext i32 [[T1]] to i64
-  typedef short array_t[n][n+1];
-
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[ARRAY]], align 8
-  // CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to i16*
-  // CHECK-NEXT: store i16* [[T1]], i16** [[REF]], align 8
-  array_t &ref = *(array_t*) array;
-
-  // CHECK-NEXT: [[T0:%.*]] = load i16** [[REF]]
-  // CHECK-NEXT: [[T1:%.*]] = mul nsw i64 1, [[DIM1]]
-  // CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds i16* [[T0]], i64 [[T1]]
-  // CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i16* [[T2]], i64 2
-  // CHECK-NEXT: store i16 3, i16* [[T3]]
-  ref[1][2] = 3;
-
-  // CHECK-NEXT: [[T0:%.*]] = load i16** [[REF]]
-  // CHECK-NEXT: [[T1:%.*]] = mul nsw i64 4, [[DIM1]]
-  // CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds i16* [[T0]], i64 [[T1]]
-  // CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i16* [[T2]], i64 5
-  // CHECK-NEXT: [[T4:%.*]] = load i16* [[T3]]
-  // CHECK-NEXT: store i16 [[T4]], i16* [[S]], align 2
-  short s = ref[4][5];
-
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/volatile-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/volatile-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/volatile-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,352 +0,0 @@
-// RUN: %clang_cc1 -Wno-unused-value -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: @i = global [[INT:i[0-9]+]] 0
-volatile int i, j, k;
-volatile int ar[5];
-volatile char c;
-// CHECK: @ci = global [[CINT:.*]] zeroinitializer
-volatile _Complex int ci;
-volatile struct S {
-#ifdef __cplusplus
-  void operator =(volatile struct S&o) volatile;
-#endif
-  int i;
-} a, b;
-
-//void operator =(volatile struct S&o1, volatile struct S&o2) volatile;
-int printf(const char *, ...);
-
-
-// CHECK: define void @{{.*}}test
-void test() {
-
-  asm("nop"); // CHECK: call void asm
-
-  // should not load
-  i;
-
-  (float)(ci);
-  // CHECK-NEXT: load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: sitofp [[INT]]
-
-  // These are not uses in C++:
-  //   [expr.static.cast]p6:
-  //     The lvalue-to-rvalue . . . conversions are not applied to the expression.
-  (void)ci;
-  (void)a;
-
-  (void)(ci=ci);
-  // CHECK-NEXT: [[R:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-
-  (void)(i=j);
-  // CHECK-NEXT: [[T:%.*]] = load volatile [[INT]]* @j
-  // CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* @i
-
-  ci+=ci;
-  // CHECK-NEXT: [[R1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // Not sure why they're ordered this way.
-  // CHECK-NEXT: [[R:%.*]] = add [[INT]] [[R2]], [[R1]]
-  // CHECK-NEXT: [[I:%.*]] = add [[INT]] [[I2]], [[I1]]
-  // CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-
-  // Note that C++ requires an extra load volatile over C from the LHS of the '+'.
-  (ci += ci) + ci;
-  // CHECK-NEXT: [[R1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R:%.*]] = add [[INT]] [[R2]], [[R1]]
-  // CHECK-NEXT: [[I:%.*]] = add [[INT]] [[I2]], [[I1]]
-  // CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I1:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 0)
-  // CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // These additions can be elided.
-  // CHECK-NEXT: add [[INT]] [[R1]], [[R2]]
-  // CHECK-NEXT: add [[INT]] [[I1]], [[I2]]
-
-  asm("nop"); // CHECK-NEXT: call void asm
-
-  // Extra load volatile in C++.
-  (i += j) + k;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-
-  asm("nop"); // CHECK-NEXT: call void asm
-
-  // Extra load volatile in C++.
-  (i += j) + 1;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-
-  asm("nop"); // CHECK-NEXT: call void asm
-
-  ci+ci;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add [[INT]]
-  // CHECK-NEXT: add [[INT]]
-
-  __real i;
-
-  +ci;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-
-  asm("nop"); // CHECK-NEXT: call void asm
-
-  (void)(i=i);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-
-  (float)(i=i);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: sitofp
-
-  (void)i;
-
-  i=i;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-
-  // Extra load volatile in C++.
-  i=i=i;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-
-  (void)__builtin_choose_expr(0, i=i, j=j);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-
-  k ? (i=i) : (j=j);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: icmp
-  // CHECK-NEXT: br i1
-  // CHECK: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: br label
-  // CHECK: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: br label
-  // CHECK:      phi
-
-  (void)(i,(i=i));
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-
-  i=i,k;
-  // CHECK-NEXT: load volatile [[INT]]* @i
-  // CHECK-NEXT: store volatile {{.*}}, [[INT]]* @i
-
-  (i=j,k=j);
-  // CHECK-NEXT: load volatile [[INT]]* @j
-  // CHECK-NEXT: store volatile {{.*}}, [[INT]]* @i
-  // CHECK-NEXT: load volatile [[INT]]* @j
-  // CHECK-NEXT: store volatile {{.*}}, [[INT]]* @k
-
-  (i=j,k);
-  // CHECK-NEXT: load volatile [[INT]]* @j
-  // CHECK-NEXT: store volatile {{.*}}, [[INT]]* @i
-
-  (i,j);
-
-  // Extra load in C++.
-  i=c=k;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: trunc
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: sext
-  // CHECK-NEXT: store volatile
-
-  i+=k;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add nsw [[INT]]
-  // CHECK-NEXT: store volatile
-
-  ci;
-
-  asm("nop"); // CHECK-NEXT: call void asm
-
-  (int)ci;
-  // CHECK-NEXT: load volatile {{.*}} @ci, i32 0, i32 0
-  // CHECK-NEXT: load volatile {{.*}} @ci, i32 0, i32 1
-
-  (bool)ci;
-  // CHECK-NEXT: load volatile {{.*}} @ci, i32 0, i32 0
-  // CHECK-NEXT: load volatile {{.*}} @ci, i32 0, i32 1
-  // CHECK-NEXT: icmp ne
-  // CHECK-NEXT: icmp ne
-  // CHECK-NEXT: or i1
-
-  ci=ci;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-
-  asm("nop"); // CHECK-NEXT: call void asm
-
-  // Extra load in C++.
-  ci=ci=ci;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-
-  __imag ci = __imag ci = __imag ci;
-  // CHECK-NEXT: [[T:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: [[T:%.*]] = load volatile [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-  // CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* getelementptr inbounds ([[CINT]]* @ci, i32 0, i32 1)
-
-  __real (i = j);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-
-  __imag i;
-  
-  // ============================================================
-  // FIXME: Test cases we get wrong.
-
-  // A use.  We load all of a into a copy of a, then load i.  gcc forgets to do
-  // the assignment.
-  // (a = a).i;
-
-  // ============================================================
-  // Test cases where we intentionally differ from gcc, due to suspected bugs in
-  // gcc.
-
-  // Not a use.  gcc forgets to do the assignment.
-  // CHECK-NEXT: call
-  ((a=a),a);
-
-  // Not a use.  gcc gets this wrong, it doesn't emit the copy!  
-  // CHECK-NEXT: call
-  (void)(a=a);
-
-  // Not a use.  gcc got this wrong in 4.2 and omitted the side effects
-  // entirely, but it is fixed in 4.4.0.
-  __imag (i = j);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-
-  // C++ does an extra load here.  Note that we have to do full loads.
-  (float)(ci=ci);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: sitofp
-
-  // Not a use, bug?  gcc treats this as not a use, that's probably a
-  // bug due to tree folding ignoring volatile.
-  (int)(ci=ci);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-
-  // A use.
-  (float)(i=i);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: sitofp
-
-  // A use.  gcc treats this as not a use, that's probably a bug due to tree
-  // folding ignoring volatile.
-  (int)(i=i);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-
-  // A use.
-  -(i=j);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: sub
-
-  // A use.  gcc treats this a not a use, that's probably a bug due to tree
-  // folding ignoring volatile.
-  +(i=k);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-
-  // A use. gcc treats this a not a use, that's probably a bug due to tree
-  // folding ignoring volatile.
-  __real (ci=ci);
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: store volatile
-
-  // A use.
-  i + 0;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add
-
-  // A use.
-  (i=j) + i;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add
-
-  // A use.  gcc treats this as not a use, that's probably a bug due to tree
-  // folding ignoring volatile.
-  (i=j) + 0;
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: store volatile
-  // CHECK-NEXT: load volatile
-  // CHECK-NEXT: add
-
-  (i,j)=k;
-  // CHECK-NEXT: load volatile [[INT]]* @k
-  // CHECK-NEXT: store volatile {{.*}}, [[INT]]* @j
-
-  (j=k,i)=i;
-  // CHECK-NEXT: load volatile [[INT]]* @i
-  // CHECK-NEXT: load volatile [[INT]]* @k
-  // CHECK-NEXT: store volatile {{.*}}, [[INT]]* @j
-  // CHECK-NEXT: store volatile {{.*}}, [[INT]]* @i
-
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/volatile.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/volatile.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/volatile.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// Check that IR gen doesn't try to do an lvalue-to-rvalue conversion
-// on a volatile reference result.  rdar://problem/8338198
-namespace test0 {
-  struct A {
-    A(const A& t);
-    A& operator=(const A& t);
-    volatile A& operator=(const volatile A& t) volatile;
-  };
-
-  volatile A *array;
-
-  // CHECK: define void @_ZN5test04testENS_1AE(
-  void test(A t) {
-    // CHECK:      [[ARR:%.*]] = load [[A:%.*]]** @_ZN5test05arrayE, align 8
-    // CHECK-NEXT: [[IDX:%.*]] = getelementptr inbounds [[A]]* [[ARR]], i64 0
-    // CHECK-NEXT: [[TMP:%.*]] = call [[A]]* @_ZNV5test01AaSERVKS0_([[A]]* [[IDX]], [[A]]* [[T:%.*]])
-    // CHECK-NEXT: ret void
-    array[0] = t;
-  }
-}
-
-namespace test1 {
-  volatile int *x;
-
-  // CHECK: define void @_ZN5test14testEv()
-  void test() {
-    // CHECK:      [[TMP:%.*]] = load i32** @_ZN5test11xE, align 8
-    // CHECK-NEXT: ret void
-    *x;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-available-externally.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-available-externally.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-available-externally.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,172 +0,0 @@
-// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -O3 -o %t 
-// RUN: FileCheck --check-prefix=CHECK-TEST1 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-TEST2 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-TEST5 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-TEST7 %s < %t
-
-#include <typeinfo>
-
-// Test1::A's key function (f) is not defined in this translation
-// unit, but in order to devirtualize calls, we emit the v-table with
-// available_externally linkage.
-//
-// There's no real reason to do this to the RTTI, though.
-
-// CHECK-TEST1: @_ZTVN5Test11AE = available_externally
-// CHECK-TEST1: @_ZTIN5Test11AE = external constant i8*
-namespace Test1 {
-
-struct A {
-  A();
-  virtual void f();
-  virtual ~A() { }
-};
-
-A::A() { }
-
-void f(A* a) {
-  a->f();
-};
-
-// CHECK: define void @_ZN5Test11gEv
-// CHECK: call void @_ZN5Test11A1fEv
-void g() {
-  A a;
-  f(&a);
-}
-
-}
-
-// Test2::A's key function (f) is defined in this translation unit, but when
-// we're doing codegen for the typeid(A) call, we don't know that yet.
-// This tests mainly that the typeinfo and typename constants have their linkage
-// updated correctly.
-
-// CHECK-TEST2: @_ZTSN5Test21AE = constant
-// CHECK-TEST2: @_ZTIN5Test21AE = unnamed_addr constant
-// CHECK-TEST2: @_ZTVN5Test21AE = unnamed_addr constant
-namespace Test2 {
-  struct A {
-    virtual void f();
-  };
-
-  const std::type_info &g() {
-    return typeid(A);
-  };
-
-  void A::f() { }
-}
-
-// Test that we don't assert on this test.
-namespace Test3 {
-
-struct A {
-  virtual void f();
-  virtual ~A() { }
-};
-
-struct B : A {
-  B();
-  virtual void f();
-};
-
-B::B() { }
-
-void g(A* a) {
-  a->f();
-};
-
-}
-
-// PR9114, test that we don't try to instantiate RefPtr<Node>.
-namespace Test4 {
-
-template <class T> struct RefPtr {
-  T* p;
-  ~RefPtr() {
-    p->deref();
-  }
-};
-
-struct A {
-  virtual ~A();
-};
-
-struct Node;
-
-struct B : A {
-  virtual void deref();
-  RefPtr<Node> m;
-};
-
-void f() {
-  RefPtr<B> b;
-}
-
-}
-
-// PR9130, test that we emit a definition of A::f.
-// CHECK-TEST5: define linkonce_odr void @_ZN5Test51A1fEv
-namespace Test5 {
-
-struct A {
-  virtual void f() { }
-};
-
-struct B : A { 
-  virtual ~B();
-};
-
-B::~B() { }
-
-}
-
-// Check that we don't assert on this test.
-namespace Test6 {
-
-struct A {
-  virtual ~A();
-  int a;
-};
-
-struct B {
-  virtual ~B();
-  int b;
-};
-
-struct C : A, B { 
-  C();
-};
-
-struct D : C {
-  virtual void f();
-  D();
-};
-
-D::D() { }
-
-}
-
-namespace Test7 {
-
-struct c1 {};
-struct c10 : c1{
-  virtual void foo ();
-};
-struct c11 : c10, c1{
-  virtual void f6 ();
-};
-struct c28 : virtual c11{
-  void f6 ();
-};
-
-// CHECK-TEST7: define void @_ZN5Test79check_c28Ev
-// CHECK-TEST7: call void @_ZN5Test73c282f6Ev
-// CHECK-TEST7: ret void
-void check_c28 () {
-  c28 obj;
-  c11 *ptr = &obj;
-  ptr->f6 ();
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-cast-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-cast-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-cast-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-struct A
-{
-A();    
-virtual ~A();
-};
-
-struct B: A
-{
-  B();
-  ~B();
-};
-
-B::B()
-{
-}
-
-B::~B()
-{
-}
-                         

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-debug-info.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-debug-info.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-debug-info.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,319 +0,0 @@
-// RUN: %clang -emit-llvm -S -g %s -o /dev/null
-// Radar 8730409
-// XFAIL: win32
-
-// FIXME: This test crashes on *-pc-win32
-// for lack of debugging support on -integrated-as (MCCOFF).
-#ifdef _MSC_VER
-
-#error this test must xfail
-
-#else
-class foo {
-public:
-#define x(a) virtual void v ## a (void)
-x(1);
-x(2);
-x(3);
-x(4);
-x(5);
-x(6);
-x(7);
-x(8);
-x(9);
-x(10);
-x(11);
-x(12);
-x(13);
-x(14);
-x(15);
-x(16);
-x(17);
-x(18);
-x(19);
-x(20);
-x(21);
-x(22);
-x(23);
-x(24);
-x(25);
-x(26);
-x(27);
-x(28);
-x(29);
-x(30);
-x(31);
-x(32);
-x(33);
-x(34);
-x(35);
-x(36);
-x(37);
-x(38);
-x(39);
-x(40);
-x(41);
-x(42);
-x(43);
-x(44);
-x(45);
-x(46);
-x(47);
-x(48);
-x(49);
-x(50);
-x(51);
-x(52);
-x(53);
-x(54);
-x(55);
-x(56);
-x(57);
-x(58);
-x(59);
-x(60);
-x(61);
-x(62);
-x(63);
-x(64);
-x(65);
-x(66);
-x(67);
-x(68);
-x(69);
-x(70);
-x(71);
-x(72);
-x(73);
-x(74);
-x(75);
-x(76);
-x(77);
-x(78);
-x(79);
-x(80);
-x(81);
-x(82);
-x(83);
-x(84);
-x(85);
-x(86);
-x(87);
-x(88);
-x(89);
-x(90);
-x(91);
-x(92);
-x(93);
-x(94);
-x(95);
-x(96);
-x(97);
-x(98);
-x(99);
-x(100);
-x(101);
-x(102);
-x(103);
-x(104);
-x(105);
-x(106);
-x(107);
-x(108);
-x(109);
-x(110);
-x(111);
-x(112);
-x(113);
-x(114);
-x(115);
-x(116);
-x(117);
-x(118);
-x(119);
-x(120);
-x(121);
-x(122);
-x(123);
-x(124);
-x(125);
-x(126);
-x(127);
-x(128);
-x(129);
-x(130);
-x(131);
-x(132);
-x(133);
-x(134);
-x(135);
-x(136);
-x(137);
-x(138);
-x(139);
-x(140);
-x(141);
-x(142);
-x(143);
-x(144);
-x(145);
-x(146);
-x(147);
-x(148);
-x(149);
-x(150);
-x(151);
-x(152);
-x(153);
-x(154);
-x(155);
-x(156);
-x(157);
-x(158);
-x(159);
-x(160);
-x(161);
-x(162);
-x(163);
-x(164);
-x(165);
-x(166);
-x(167);
-x(168);
-x(169);
-x(170);
-x(171);
-x(172);
-x(173);
-x(174);
-x(175);
-x(176);
-x(177);
-x(178);
-x(179);
-x(180);
-x(181);
-x(182);
-x(183);
-x(184);
-x(185);
-x(186);
-x(187);
-x(188);
-x(189);
-x(190);
-x(191);
-x(192);
-x(193);
-x(194);
-x(195);
-x(196);
-x(197);
-x(198);
-x(199);
-x(200);
-x(201);
-x(202);
-x(203);
-x(204);
-x(205);
-x(206);
-x(207);
-x(208);
-x(209);
-x(210);
-x(211);
-x(212);
-x(213);
-x(214);
-x(215);
-x(216);
-x(217);
-x(218);
-x(219);
-x(220);
-x(221);
-x(222);
-x(223);
-x(224);
-x(225);
-x(226);
-x(227);
-x(228);
-x(229);
-x(230);
-x(231);
-x(232);
-x(233);
-x(234);
-x(235);
-x(236);
-x(237);
-x(238);
-x(239);
-x(240);
-x(241);
-x(242);
-x(243);
-x(244);
-x(245);
-x(246);
-x(247);
-x(248);
-x(249);
-x(250);
-x(251);
-x(252);
-x(253);
-x(254);
-x(255);
-x(256);
-x(257);
-x(258);
-x(259);
-x(260);
-x(261);
-x(262);
-x(263);
-x(264);
-x(265);
-x(266);
-x(267);
-x(268);
-x(269);
-x(270);
-x(271);
-x(272);
-x(273);
-x(274);
-x(275);
-x(276);
-x(277);
-x(278);
-x(279);
-x(280);
-x(281);
-x(282);
-x(283);
-x(284);
-x(285);
-x(286);
-x(287);
-x(288);
-x(289);
-x(290);
-x(291);
-x(292);
-x(293);
-x(294);
-x(295);
-x(296);
-x(297);
-x(298);
-x(299);
-x(300);
-};
-
-foo b;
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function-arm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function-arm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function-arm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,307 +0,0 @@
-// RUN: %clang_cc1 %s -triple=armv7-unknown-unknown -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple=armv7-unknown-unknown -emit-llvm -o - | FileCheck -check-prefix=CHECK-LATE %s
-
-// The 'a' variants ask for the v-table first.
-// The 'b' variants ask for the v-table second.
-// The 'c' variants ask for the v-table third.
-// We do a separate CHECK-LATE pass because the RTTI defintion gets
-// changed after the fact, which causes reordering of the globals.
-
-// These are not separated into namespaces because the way that Sema
-// currently reports namespaces to IR-generation (i.e., en masse for
-// the entire namespace at once) subverts the ordering that we're
-// trying to test.
-
-namespace std { class type_info; }
-extern void use(const std::type_info &rtti);
-
-/*** Test0a ******************************************************************/
-
-struct Test0a {
-  Test0a();
-  virtual inline void foo();
-  virtual void bar();
-};
-
-// V-table should be defined externally.
-Test0a::Test0a() { use(typeid(Test0a)); }
-// CHECK: @_ZTV6Test0a = external unnamed_addr constant 
-// CHECK: @_ZTI6Test0a = external constant
-
-// This is still not a key function.
-void Test0a::foo() {}
-
-/*** Test0b ******************************************************************/
-
-struct Test0b {
-  Test0b();
-  virtual inline void foo();
-  virtual void bar();
-};
-
-// This is still not a key function.
-void Test0b::foo() {}
-
-// V-table should be defined externally.
-Test0b::Test0b() { use(typeid(Test0b)); }
-// CHECK: @_ZTV6Test0b = external unnamed_addr constant 
-// CHECK: @_ZTI6Test0b = external constant
-
-/*** Test1a ******************************************************************/
-
-struct Test1a {
-  Test1a();
-  virtual void foo();
-  virtual void bar();
-};
-
-// V-table should be defined externally.
-Test1a::Test1a() { use(typeid(Test1a)); }
-// CHECK: @_ZTV6Test1a = external unnamed_addr constant 
-// CHECK: @_ZTI6Test1a = external constant
-
-// 'bar' becomes the key function when 'foo' is defined inline.
-inline void Test1a::foo() {}
-
-/*** Test1b ******************************************************************/
-
-struct Test1b {
-  Test1b();
-  virtual void foo();
-  virtual void bar();
-};
-
-// 'bar' becomes the key function when 'foo' is defined inline.
-inline void Test1b::foo() {}
-
-// V-table should be defined externally.
-Test1b::Test1b() { use(typeid(Test1b)); }
-// CHECK: @_ZTV6Test1b = external unnamed_addr constant 
-// CHECK: @_ZTI6Test1b = external constant
-
-/*** Test2a ******************************************************************/
-
-struct Test2a {
-  Test2a();
-  virtual void foo();
-  virtual void bar();
-};
-
-// V-table should be defined with strong linkage.
-Test2a::Test2a() { use(typeid(Test2a)); }
-// CHECK:      @_ZTV6Test2a = unnamed_addr constant
-// CHECK-LATE: @_ZTS6Test2a = constant
-// CHECK-LATE: @_ZTI6Test2a = unnamed_addr constant
-
-// 'bar' becomes the key function when 'foo' is defined inline.
-void Test2a::bar() {}
-inline void Test2a::foo() {}
-
-/*** Test2b ******************************************************************/
-
-struct Test2b {
-  Test2b();
-  virtual void foo();
-  virtual void bar();
-};
-
-// 'bar' becomes the key function when 'foo' is defined inline.
-void Test2b::bar() {}
-
-// V-table should be defined with strong linkage.
-Test2b::Test2b() { use(typeid(Test2b)); }
-// CHECK:      @_ZTV6Test2b = unnamed_addr constant
-// CHECK-LATE: @_ZTS6Test2b = constant
-// CHECK-LATE: @_ZTI6Test2b = unnamed_addr constant
-
-inline void Test2b::foo() {}
-
-/*** Test2c ******************************************************************/
-
-struct Test2c {
-  Test2c();
-  virtual void foo();
-  virtual void bar();
-};
-
-// 'bar' becomes the key function when 'foo' is defined inline.
-void Test2c::bar() {}
-inline void Test2c::foo() {}
-
-// V-table should be defined with strong linkage.
-Test2c::Test2c() { use(typeid(Test2c)); }
-// CHECK: @_ZTV6Test2c = unnamed_addr constant
-// CHECK: @_ZTS6Test2c = constant
-// CHECK: @_ZTI6Test2c = unnamed_addr constant
-
-/*** Test3a ******************************************************************/
-
-struct Test3a {
-  Test3a();
-  virtual void foo();
-  virtual void bar();
-};
-
-// V-table should be defined with weak linkage.
-Test3a::Test3a() { use(typeid(Test3a)); }
-// CHECK:      @_ZTV6Test3a = linkonce_odr unnamed_addr constant
-// CHECK-LATE: @_ZTS6Test3a = linkonce_odr constant
-// CHECK-LATE: @_ZTI6Test3a = linkonce_odr unnamed_addr constant
-
-// There ceases to be a key function after these declarations.
-inline void Test3a::bar() {}
-inline void Test3a::foo() {}
-
-/*** Test3b ******************************************************************/
-
-struct Test3b {
-  Test3b();
-  virtual void foo();
-  virtual void bar();
-};
-
-// There ceases to be a key function after these declarations.
-inline void Test3b::bar() {}
-
-// V-table should be defined with weak linkage.
-Test3b::Test3b() { use(typeid(Test3b)); }
-// CHECK:      @_ZTV6Test3b = linkonce_odr unnamed_addr constant
-// CHECK-LATE: @_ZTS6Test3b = linkonce_odr constant
-// CHECK-LATE: @_ZTI6Test3b = linkonce_odr unnamed_addr constant
-
-inline void Test3b::foo() {}
-
-/*** Test3c ******************************************************************/
-
-struct Test3c {
-  Test3c();
-  virtual void foo();
-  virtual void bar();
-};
-
-// There ceases to be a key function after these declarations.
-inline void Test3c::bar() {}
-inline void Test3c::foo() {}
-
-// V-table should be defined with weak linkage.
-Test3c::Test3c() { use(typeid(Test3c)); }
-// CHECK: @_ZTV6Test3c = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test3c = linkonce_odr constant
-// CHECK: @_ZTI6Test3c = linkonce_odr unnamed_addr constant
-
-/*** Test4a ******************************************************************/
-
-template <class T> struct Test4a {
-  Test4a();
-  virtual void foo();
-  virtual void bar();
-};
-
-// V-table should be defined with weak linkage.
-template <> Test4a<int>::Test4a() { use(typeid(Test4a)); }
-// CHECK: @_ZTV6Test4aIiE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test4aIiE = linkonce_odr constant
-// CHECK: @_ZTI6Test4aIiE = linkonce_odr unnamed_addr constant
-
-// There ceases to be a key function after these declarations.
-template <> inline void Test4a<int>::bar() {}
-template <> inline void Test4a<int>::foo() {}
-
-/*** Test4b ******************************************************************/
-
-template <class T> struct Test4b {
-  Test4b();
-  virtual void foo();
-  virtual void bar();
-};
-
-// There ceases to be a key function after these declarations.
-template <> inline void Test4b<int>::bar() {}
-
-// V-table should be defined with weak linkage.
-template <> Test4b<int>::Test4b() { use(typeid(Test4b)); }
-// CHECK: @_ZTV6Test4bIiE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test4bIiE = linkonce_odr constant
-// CHECK: @_ZTI6Test4bIiE = linkonce_odr unnamed_addr constant
-
-template <> inline void Test4b<int>::foo() {}
-
-/*** Test4c ******************************************************************/
-
-template <class T> struct Test4c {
-  Test4c();
-  virtual void foo();
-  virtual void bar();
-};
-
-// There ceases to be a key function after these declarations.
-template <> inline void Test4c<int>::bar() {}
-template <> inline void Test4c<int>::foo() {}
-
-// V-table should be defined with weak linkage.
-template <> Test4c<int>::Test4c() { use(typeid(Test4c)); }
-// CHECK: @_ZTV6Test4cIiE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test4cIiE = linkonce_odr constant
-// CHECK: @_ZTI6Test4cIiE = linkonce_odr unnamed_addr constant
-
-/*** Test5a ******************************************************************/
-
-template <class T> struct Test5a {
-  Test5a();
-  virtual void foo();
-  virtual void bar();
-};
-
-template <> inline void Test5a<int>::bar();
-template <> inline void Test5a<int>::foo();
-
-// V-table should be defined with weak linkage.
-template <> Test5a<int>::Test5a() { use(typeid(Test5a)); }
-// CHECK: @_ZTV6Test5aIiE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test5aIiE = linkonce_odr constant
-// CHECK: @_ZTI6Test5aIiE = linkonce_odr unnamed_addr constant
-
-// There ceases to be a key function after these declarations.
-template <> inline void Test5a<int>::bar() {}
-template <> inline void Test5a<int>::foo() {}
-
-/*** Test5b ******************************************************************/
-
-template <class T> struct Test5b {
-  Test5b();
-  virtual void foo();
-  virtual void bar();
-};
-
-// There ceases to be a key function after these declarations.
-template <> inline void Test5a<int>::bar();
-template <> inline void Test5b<int>::bar() {}
-
-// V-table should be defined with weak linkage.
-template <> Test5b<int>::Test5b() { use(typeid(Test5b)); }
-// CHECK: @_ZTV6Test5bIiE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test5bIiE = linkonce_odr constant
-// CHECK: @_ZTI6Test5bIiE = linkonce_odr unnamed_addr constant
-
-template <> inline void Test5a<int>::foo();
-template <> inline void Test5b<int>::foo() {}
-
-/*** Test5c ******************************************************************/
-
-template <class T> struct Test5c {
-  Test5c();
-  virtual void foo();
-  virtual void bar();
-};
-
-// There ceases to be a key function after these declarations.
-template <> inline void Test5a<int>::bar();
-template <> inline void Test5a<int>::foo();
-template <> inline void Test5c<int>::bar() {}
-template <> inline void Test5c<int>::foo() {}
-
-// V-table should be defined with weak linkage.
-template <> Test5c<int>::Test5c() { use(typeid(Test5c)); }
-// CHECK: @_ZTV6Test5cIiE = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test5cIiE = linkonce_odr constant
-// CHECK: @_ZTI6Test5cIiE = linkonce_odr unnamed_addr constant

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function-ios.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function-ios.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function-ios.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,189 +0,0 @@
-// RUN: %clang_cc1 %s -triple=armv7-apple-darwin -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple=armv7-apple-darwin -emit-llvm -o - | FileCheck -check-prefix=CHECK-LATE %s
-
-// The 'a' variants ask for the v-table first.
-// The 'b' variants ask for the v-table second.
-// The 'c' variants ask for the v-table third.
-// We do a separate CHECK-LATE pass because the RTTI defintion gets
-// changed after the fact, which causes reordering of the globals.
-
-// These are not separated into namespaces because the way that Sema
-// currently reports namespaces to IR-generation (i.e., en masse for
-// the entire namespace at once) subverts the ordering that we're
-// trying to test.
-
-namespace std { class type_info; }
-extern void use(const std::type_info &rtti);
-
-/*** Test0a ******************************************************************/
-
-struct Test0a {
-  Test0a();
-  virtual inline void foo();
-  virtual void bar();
-};
-
-// V-table should be defined externally.
-Test0a::Test0a() { use(typeid(Test0a)); }
-// CHECK: @_ZTV6Test0a = external unnamed_addr constant 
-// CHECK: @_ZTI6Test0a = external constant
-
-// This is not a key function.
-void Test0a::foo() {}
-
-/*** Test0b ******************************************************************/
-
-struct Test0b {
-  Test0b();
-  virtual inline void foo();
-  virtual void bar();
-};
-
-// This is not a key function.
-void Test0b::foo() {}
-
-// V-table should be defined externally.
-Test0b::Test0b() { use(typeid(Test0b)); }
-// CHECK: @_ZTV6Test0b = external unnamed_addr constant 
-// CHECK: @_ZTI6Test0b = external constant
-
-/*** Test1a ******************************************************************/
-
-struct Test1a {
-  Test1a();
-  virtual void foo();
-  virtual void bar();
-};
-
-// V-table needs to be defined weakly.
-Test1a::Test1a() { use(typeid(Test1a)); }
-// CHECK:      @_ZTV6Test1a = linkonce_odr unnamed_addr constant 
-// CHECK-LATE: @_ZTS6Test1a = linkonce_odr constant
-// CHECK-LATE: @_ZTI6Test1a = linkonce_odr unnamed_addr constant
-
-// This defines the key function.
-inline void Test1a::foo() {}
-
-/*** Test1b ******************************************************************/
-
-struct Test1b {
-  Test1b();
-  virtual void foo();
-  virtual void bar();
-};
-
-// This defines the key function.
-inline void Test1b::foo() {}
-
-// V-table should be defined weakly..
-Test1b::Test1b() { use(typeid(Test1b)); }
-// CHECK: @_ZTV6Test1b = linkonce_odr unnamed_addr constant 
-// CHECK: @_ZTS6Test1b = linkonce_odr constant
-// CHECK: @_ZTI6Test1b = linkonce_odr unnamed_addr constant
-
-/*** Test2a ******************************************************************/
-
-struct Test2a {
-  Test2a();
-  virtual void foo();
-  virtual void bar();
-};
-
-// V-table should be defined with weak linkage.
-Test2a::Test2a() { use(typeid(Test2a)); }
-// CHECK:      @_ZTV6Test2a = linkonce_odr unnamed_addr constant
-// CHECK-LATE: @_ZTS6Test2a = linkonce_odr constant
-// CHECK-LATE: @_ZTI6Test2a = linkonce_odr unnamed_addr constant
-
-void Test2a::bar() {}
-inline void Test2a::foo() {}
-
-/*** Test2b ******************************************************************/
-
-struct Test2b {
-  Test2b();
-  virtual void foo();
-  virtual void bar();
-};
-
-void Test2b::bar() {}
-
-// V-table should be defined with weak linkage.
-Test2b::Test2b() { use(typeid(Test2b)); }
-// CHECK:      @_ZTV6Test2b = linkonce_odr unnamed_addr constant
-// CHECK-LATE: @_ZTS6Test2b = linkonce_odr constant
-// CHECK-LATE: @_ZTI6Test2b = linkonce_odr unnamed_addr constant
-
-inline void Test2b::foo() {}
-
-/*** Test2c ******************************************************************/
-
-struct Test2c {
-  Test2c();
-  virtual void foo();
-  virtual void bar();
-};
-
-void Test2c::bar() {}
-inline void Test2c::foo() {}
-
-// V-table should be defined with weak linkage.
-Test2c::Test2c() { use(typeid(Test2c)); }
-// CHECK: @_ZTV6Test2c = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test2c = linkonce_odr constant
-// CHECK: @_ZTI6Test2c = linkonce_odr unnamed_addr constant
-
-/*** Test3a ******************************************************************/
-
-struct Test3a {
-  Test3a();
-  virtual void foo();
-  virtual void bar();
-};
-
-// V-table should be defined with weak linkage.
-Test3a::Test3a() { use(typeid(Test3a)); }
-// CHECK:      @_ZTV6Test3a = linkonce_odr unnamed_addr constant
-// CHECK-LATE: @_ZTS6Test3a = linkonce_odr constant
-// CHECK-LATE: @_ZTI6Test3a = linkonce_odr unnamed_addr constant
-
-// This defines the key function.
-inline void Test3a::bar() {}
-inline void Test3a::foo() {}
-
-/*** Test3b ******************************************************************/
-
-struct Test3b {
-  Test3b();
-  virtual void foo();
-  virtual void bar();
-};
-
-inline void Test3b::bar() {}
-
-// V-table should be defined with weak linkage.
-Test3b::Test3b() { use(typeid(Test3b)); }
-// CHECK:      @_ZTV6Test3b = linkonce_odr unnamed_addr constant
-// CHECK-LATE: @_ZTS6Test3b = linkonce_odr constant
-// CHECK-LATE: @_ZTI6Test3b = linkonce_odr unnamed_addr constant
-
-// This defines the key function.
-inline void Test3b::foo() {}
-
-/*** Test3c ******************************************************************/
-
-struct Test3c {
-  Test3c();
-  virtual void foo();
-  virtual void bar();
-};
-
-// This defines the key function.
-inline void Test3c::bar() {}
-inline void Test3c::foo() {}
-
-// V-table should be defined with weak linkage.
-Test3c::Test3c() { use(typeid(Test3c)); }
-// CHECK: @_ZTV6Test3c = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS6Test3c = linkonce_odr constant
-// CHECK: @_ZTI6Test3c = linkonce_odr unnamed_addr constant

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-key-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-// PR5697
-namespace PR5697 {
-struct A {
-  virtual void f() { } 
-  A();
-  A(int);
-};
-
-// A does not have a key function, so the first constructor we emit should
-// cause the vtable to be defined (without assertions.)
-// CHECK: @_ZTVN6PR56971AE = linkonce_odr unnamed_addr constant
-A::A() { }
-A::A(int) { }
-}
-
-// Make sure that we don't assert when building the vtable for a class
-// template specialization or explicit instantiation with a key
-// function.
-template<typename T>
-struct Base {
-  virtual ~Base();
-};
-
-template<typename T>
-struct Derived : public Base<T> { };
-
-template<>
-struct Derived<char> : public Base<char> {
-  virtual void anchor();
-};
-
-void Derived<char>::anchor() { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,322 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm-only -fdump-vtable-layouts > %t 2>&1
-// RUN: FileCheck --check-prefix=CHECK-1 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-2 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-3 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-4 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-5 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-6 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-7 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-8 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-9 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-10 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-11 %s < %t
-
-/// Examples from the Itanium C++ ABI specification.
-/// http://www.codesourcery.com/public/cxx-abi/
-
-namespace Test1 {
-  
-// This is from http://www.codesourcery.com/public/cxx-abi/cxx-vtable-ex.html
-
-// CHECK-1:      Vtable for 'Test1::A' (5 entries).
-// CHECK-1-NEXT:    0 | offset_to_top (0)
-// CHECK-1-NEXT:    1 | Test1::A RTTI
-// CHECK-1-NEXT:        -- (Test1::A, 0) vtable address --
-// CHECK-1-NEXT:    2 | void Test1::A::f()
-// CHECK-1-NEXT:    3 | void Test1::A::g()
-// CHECK-1-NEXT:    4 | void Test1::A::h()
-struct A {
-  virtual void f ();
-  virtual void g ();
-  virtual void h ();
-  int ia;
-};
-void A::f() {}
-
-// CHECK-2:      Vtable for 'Test1::B' (13 entries).
-// CHECK-2-NEXT:    0 | vbase_offset (16)
-// CHECK-2-NEXT:    1 | offset_to_top (0)
-// CHECK-2-NEXT:    2 | Test1::B RTTI
-// CHECK-2-NEXT:        -- (Test1::B, 0) vtable address --
-// CHECK-2-NEXT:    3 | void Test1::B::f()
-// CHECK-2-NEXT:    4 | void Test1::B::h()
-// CHECK-2-NEXT:    5 | vcall_offset (-16)
-// CHECK-2-NEXT:    6 | vcall_offset (0)
-// CHECK-2-NEXT:    7 | vcall_offset (-16)
-// CHECK-2-NEXT:    8 | offset_to_top (-16)
-// CHECK-2-NEXT:    9 | Test1::B RTTI
-// CHECK-2-NEXT:        -- (Test1::A, 16) vtable address --
-// CHECK-2-NEXT:   10 | void Test1::B::f()
-// CHECK-2-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-2-NEXT:   11 | void Test1::A::g()
-// CHECK-2-NEXT:   12 | void Test1::B::h()
-// CHECK-2-NEXT:        [this adjustment: 0 non-virtual, -40 vcall offset offset]
-struct B: public virtual A {
-  void f ();
-  void h ();
-  int ib;
-};
-void B::f() {}
-
-// CHECK-3:      Vtable for 'Test1::C' (13 entries).
-// CHECK-3-NEXT:    0 | vbase_offset (16)
-// CHECK-3-NEXT:    1 | offset_to_top (0)
-// CHECK-3-NEXT:    2 | Test1::C RTTI
-// CHECK-3-NEXT:        -- (Test1::C, 0) vtable address --
-// CHECK-3-NEXT:    3 | void Test1::C::g()
-// CHECK-3-NEXT:    4 | void Test1::C::h()
-// CHECK-3-NEXT:    5 | vcall_offset (-16)
-// CHECK-3-NEXT:    6 | vcall_offset (-16)
-// CHECK-3-NEXT:    7 | vcall_offset (0)
-// CHECK-3-NEXT:    8 | offset_to_top (-16)
-// CHECK-3-NEXT:    9 | Test1::C RTTI
-// CHECK-3-NEXT:        -- (Test1::A, 16) vtable address --
-// CHECK-3-NEXT:   10 | void Test1::A::f()
-// CHECK-3-NEXT:   11 | void Test1::C::g()
-// CHECK-3-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-// CHECK-3-NEXT:   12 | void Test1::C::h()
-// CHECK-3-NEXT:        [this adjustment: 0 non-virtual, -40 vcall offset offset]
-struct C: public virtual A {
-  void g ();
-  void h ();
-  int ic;
-};
-void C::g() {}
-
-// CHECK-4:      Vtable for 'Test1::D' (18 entries).
-// CHECK-4-NEXT:    0 | vbase_offset (32)
-// CHECK-4-NEXT:    1 | offset_to_top (0)
-// CHECK-4-NEXT:    2 | Test1::D RTTI
-// CHECK-4-NEXT:        -- (Test1::B, 0) vtable address --
-// CHECK-4-NEXT:        -- (Test1::D, 0) vtable address --
-// CHECK-4-NEXT:    3 | void Test1::B::f()
-// CHECK-4-NEXT:    4 | void Test1::D::h()
-// CHECK-4-NEXT:    5 | vbase_offset (16)
-// CHECK-4-NEXT:    6 | offset_to_top (-16)
-// CHECK-4-NEXT:    7 | Test1::D RTTI
-// CHECK-4-NEXT:        -- (Test1::C, 16) vtable address --
-// CHECK-4-NEXT:    8 | void Test1::C::g()
-// CHECK-4-NEXT:    9 | void Test1::D::h()
-// CHECK-4-NEXT:        [this adjustment: -16 non-virtual]
-// CHECK-4-NEXT:   10 | vcall_offset (-32)
-// CHECK-4-NEXT:   11 | vcall_offset (-16)
-// CHECK-4-NEXT:   12 | vcall_offset (-32)
-// CHECK-4-NEXT:   13 | offset_to_top (-32)
-// CHECK-4-NEXT:   14 | Test1::D RTTI
-// CHECK-4-NEXT:        -- (Test1::A, 32) vtable address --
-// CHECK-4-NEXT:   15 | void Test1::B::f()
-// CHECK-4-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-4-NEXT:   16 | void Test1::C::g()
-// CHECK-4-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-// CHECK-4-NEXT:   17 | void Test1::D::h()
-// CHECK-4-NEXT:        [this adjustment: 0 non-virtual, -40 vcall offset offset]
-struct D: public B, public C {
-  void h ();
-  int id;
-};
-void D::h() { }
-
-struct X {
-  int ix;
-  virtual void x();
-};
-
-// CHECK-5:      Vtable for 'Test1::E' (24 entries).
-// CHECK-5-NEXT:    0 | vbase_offset (56)
-// CHECK-5-NEXT:    1 | offset_to_top (0)
-// CHECK-5-NEXT:    2 | Test1::E RTTI
-// CHECK-5-NEXT:        -- (Test1::E, 0) vtable address --
-// CHECK-5-NEXT:        -- (Test1::X, 0) vtable address --
-// CHECK-5-NEXT:    3 | void Test1::X::x()
-// CHECK-5-NEXT:    4 | void Test1::E::f()
-// CHECK-5-NEXT:    5 | void Test1::E::h()
-// CHECK-5-NEXT:    6 | vbase_offset (40)
-// CHECK-5-NEXT:    7 | offset_to_top (-16)
-// CHECK-5-NEXT:    8 | Test1::E RTTI
-// CHECK-5-NEXT:        -- (Test1::B, 16) vtable address --
-// CHECK-5-NEXT:        -- (Test1::D, 16) vtable address --
-// CHECK-5-NEXT:    9 | void Test1::E::f()
-// CHECK-5-NEXT:        [this adjustment: -16 non-virtual]
-// CHECK-5-NEXT:   10 | void Test1::E::h()
-// CHECK-5-NEXT:        [this adjustment: -16 non-virtual]
-// CHECK-5-NEXT:   11 | vbase_offset (24)
-// CHECK-5-NEXT:   12 | offset_to_top (-32)
-// CHECK-5-NEXT:   13 | Test1::E RTTI
-// CHECK-5-NEXT:        -- (Test1::C, 32) vtable address --
-// CHECK-5-NEXT:   14 | void Test1::C::g()
-// CHECK-5-NEXT:   15 | void Test1::E::h()
-// CHECK-5-NEXT:        [this adjustment: -32 non-virtual]
-// CHECK-5-NEXT:   16 | vcall_offset (-56)
-// CHECK-5-NEXT:   17 | vcall_offset (-24)
-// CHECK-5-NEXT:   18 | vcall_offset (-56)
-// CHECK-5-NEXT:   19 | offset_to_top (-56)
-// CHECK-5-NEXT:   20 | Test1::E RTTI
-// CHECK-5-NEXT:        -- (Test1::A, 56) vtable address --
-// CHECK-5-NEXT:   21 | void Test1::E::f()
-// CHECK-5-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-5-NEXT:   22 | void Test1::C::g()
-// CHECK-5-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-// CHECK-5-NEXT:   23 | void Test1::E::h()
-// CHECK-5-NEXT:        [this adjustment: 0 non-virtual, -40 vcall offset offset]
-struct E : X, D {
-  int ie;
-  void f();
-  void h ();
-};
-void E::f() { } 
-
-}
-
-namespace Test2 {
-
-// From http://www.codesourcery.com/public/cxx-abi/abi.html#class-types.
-
-struct A { virtual void f(); };
-struct B : virtual public A { int i; };
-struct C : virtual public A { int j; };
-
-// CHECK-6:      Vtable for 'Test2::D' (11 entries).
-// CHECK-6-NEXT:    0 | vbase_offset (0)
-// CHECK-6-NEXT:    1 | vcall_offset (0)
-// CHECK-6-NEXT:    2 | offset_to_top (0)
-// CHECK-6-NEXT:    3 | Test2::D RTTI
-// CHECK-6-NEXT:        -- (Test2::A, 0) vtable address --
-// CHECK-6-NEXT:        -- (Test2::B, 0) vtable address --
-// CHECK-6-NEXT:        -- (Test2::D, 0) vtable address --
-// CHECK-6-NEXT:    4 | void Test2::A::f()
-// CHECK-6-NEXT:    5 | void Test2::D::d()
-// CHECK-6-NEXT:    6 | vbase_offset (-16)
-// CHECK-6-NEXT:    7 | vcall_offset (-16)
-// CHECK-6-NEXT:    8 | offset_to_top (-16)
-// CHECK-6-NEXT:    9 | Test2::D RTTI
-// CHECK-6-NEXT:        -- (Test2::C, 16) vtable address --
-// CHECK-6-NEXT:   10 | [unused] void Test2::A::f()
-struct D : public B, public C {
-  virtual void d();
-};
-void D::d() { } 
-
-}
-
-namespace Test3 {
-
-// From http://www.codesourcery.com/public/cxx-abi/abi-examples.html#vtable-ctor
-
-struct V1 {
-  int v1;
-  virtual void f();
-};
-
-struct V2 : virtual V1 {
-  int v2;
-  virtual void f();
-};
-
-// CHECK-7:      Vtable for 'Test3::C' (14 entries).
-// CHECK-7-NEXT:    0 | vbase_offset (32)
-// CHECK-7-NEXT:    1 | vbase_offset (16)
-// CHECK-7-NEXT:    2 | offset_to_top (0)
-// CHECK-7-NEXT:    3 | Test3::C RTTI
-// CHECK-7-NEXT:        -- (Test3::C, 0) vtable address --
-// CHECK-7-NEXT:    4 | void Test3::C::f()
-// CHECK-7-NEXT:    5 | vcall_offset (-16)
-// CHECK-7-NEXT:    6 | offset_to_top (-16)
-// CHECK-7-NEXT:    7 | Test3::C RTTI
-// CHECK-7-NEXT:        -- (Test3::V1, 16) vtable address --
-// CHECK-7-NEXT:    8 | void Test3::C::f()
-// CHECK-7-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-7-NEXT:    9 | vcall_offset (-32)
-// CHECK-7-NEXT:   10 | vbase_offset (-16)
-// CHECK-7-NEXT:   11 | offset_to_top (-32)
-// CHECK-7-NEXT:   12 | Test3::C RTTI
-// CHECK-7-NEXT:        -- (Test3::V2, 32) vtable address --
-// CHECK-7-NEXT:   13 | void Test3::C::f()
-// CHECK-7-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-
-// CHECK-8:      Construction vtable for ('Test3::V2', 32) in 'Test3::C' (9 entries).
-// CHECK-8-NEXT:    0 | vcall_offset (0)
-// CHECK-8-NEXT:    1 | vbase_offset (-16)
-// CHECK-8-NEXT:    2 | offset_to_top (0)
-// CHECK-8-NEXT:    3 | Test3::V2 RTTI
-// CHECK-8-NEXT:        -- (Test3::V2, 32) vtable address --
-// CHECK-8-NEXT:    4 | void Test3::V2::f()
-// CHECK-8-NEXT:    5 | vcall_offset (16)
-// CHECK-8-NEXT:    6 | offset_to_top (16)
-// CHECK-8-NEXT:    7 | Test3::V2 RTTI
-// CHECK-8-NEXT:        -- (Test3::V1, 16) vtable address --
-// CHECK-8-NEXT:    8 | void Test3::V2::f()
-// CHECK-8-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-struct C : virtual V1, virtual V2 {
-  int c;
-  virtual void f();
-};
-void C::f() { }
-
-struct B {
-  int b;
-};
-
-// CHECK-9:      Vtable for 'Test3::D' (15 entries).
-// CHECK-9-NEXT:    0 | vbase_offset (40)
-// CHECK-9-NEXT:    1 | vbase_offset (24)
-// CHECK-9-NEXT:    2 | offset_to_top (0)
-// CHECK-9-NEXT:    3 | Test3::D RTTI
-// CHECK-9-NEXT:        -- (Test3::C, 0) vtable address --
-// CHECK-9-NEXT:        -- (Test3::D, 0) vtable address --
-// CHECK-9-NEXT:    4 | void Test3::C::f()
-// CHECK-9-NEXT:    5 | void Test3::D::g()
-// CHECK-9-NEXT:    6 | vcall_offset (-24)
-// CHECK-9-NEXT:    7 | offset_to_top (-24)
-// CHECK-9-NEXT:    8 | Test3::D RTTI
-// CHECK-9-NEXT:        -- (Test3::V1, 24) vtable address --
-// CHECK-9-NEXT:    9 | void Test3::C::f()
-// CHECK-9-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-9-NEXT:   10 | vcall_offset (-40)
-// CHECK-9-NEXT:   11 | vbase_offset (-16)
-// CHECK-9-NEXT:   12 | offset_to_top (-40)
-// CHECK-9-NEXT:   13 | Test3::D RTTI
-// CHECK-9-NEXT:        -- (Test3::V2, 40) vtable address --
-// CHECK-9-NEXT:   14 | void Test3::C::f()
-// CHECK-9-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-
-// CHECK-10:      Construction vtable for ('Test3::C', 0) in 'Test3::D' (14 entries).
-// CHECK-10-NEXT:    0 | vbase_offset (40)
-// CHECK-10-NEXT:    1 | vbase_offset (24)
-// CHECK-10-NEXT:    2 | offset_to_top (0)
-// CHECK-10-NEXT:    3 | Test3::C RTTI
-// CHECK-10-NEXT:        -- (Test3::C, 0) vtable address --
-// CHECK-10-NEXT:    4 | void Test3::C::f()
-// CHECK-10-NEXT:    5 | vcall_offset (-24)
-// CHECK-10-NEXT:    6 | offset_to_top (-24)
-// CHECK-10-NEXT:    7 | Test3::C RTTI
-// CHECK-10-NEXT:        -- (Test3::V1, 24) vtable address --
-// CHECK-10-NEXT:    8 | void Test3::C::f()
-// CHECK-10-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-10-NEXT:    9 | vcall_offset (-40)
-// CHECK-10-NEXT:   10 | vbase_offset (-16)
-// CHECK-10-NEXT:   11 | offset_to_top (-40)
-// CHECK-10-NEXT:   12 | Test3::C RTTI
-// CHECK-10-NEXT:        -- (Test3::V2, 40) vtable address --
-// CHECK-10-NEXT:   13 | void Test3::C::f()
-// CHECK-10-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-
-// CHECK-11:      Construction vtable for ('Test3::V2', 40) in 'Test3::D' (9 entries).
-// CHECK-11-NEXT:    0 | vcall_offset (0)
-// CHECK-11-NEXT:    1 | vbase_offset (-16)
-// CHECK-11-NEXT:    2 | offset_to_top (0)
-// CHECK-11-NEXT:    3 | Test3::V2 RTTI
-// CHECK-11-NEXT:        -- (Test3::V2, 40) vtable address --
-// CHECK-11-NEXT:    4 | void Test3::V2::f()
-// CHECK-11-NEXT:    5 | vcall_offset (16)
-// CHECK-11-NEXT:    6 | offset_to_top (16)
-// CHECK-11-NEXT:    7 | Test3::V2 RTTI
-// CHECK-11-NEXT:        -- (Test3::V1, 24) vtable address --
-// CHECK-11-NEXT:    8 | void Test3::V2::f()
-// CHECK-11-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-struct D : B, C {
-  int d;
-  virtual void g();
-};
-void D::g() { }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout-extreme.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout-extreme.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout-extreme.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,210 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm-only -fdump-vtable-layouts 2>&1 | FileCheck %s
-
-// A collection of big class hierarchies and their vtables.
-
-namespace Test1 {
-
-class C0
-{
-};
-class C1
- :  virtual public C0
-{
-  int k0;
-};
-class C2
- :  public C0
- ,  virtual public C1
-{
-  int k0;
-};
-class C3
- :  virtual public C0
- ,  virtual public C1
- ,  public C2
-{
-  int k0;
-  int k1;
-  int k2;
-  int k3;
-};
-class C4
- :  public C2
- ,  virtual public C3
- ,  public C0
-{
-  int k0;
-};
-class C5
- :  public C0
- ,  virtual public C4
- ,  public C2
- ,  public C1
- ,  virtual public C3
-{
-  int k0;
-};
-class C6
- :  virtual public C3
- ,  public C0
- ,  public C5
- ,  public C4
- ,  public C1
-{
-  int k0;
-};
-class C7
- :  virtual public C5
- ,  virtual public C6
- ,  virtual public C3
- ,  public C4
- ,  virtual public C2
-{
-  int k0;
-  int k1;
-};
-class C8
- :  public C7
- ,  public C5
- ,  public C3
- ,  virtual public C4
- ,  public C1
- ,  public C2
-{
-  int k0;
-  int k1;
-};
-
-// CHECK:     Vtable for 'Test1::C9' (87 entries).
-// CHECK-NEXT:   0 | vbase_offset (344)
-// CHECK-NEXT:   1 | vbase_offset (312)
-// CHECK-NEXT:   2 | vbase_offset (184)
-// CHECK-NEXT:   3 | vbase_offset (168)
-// CHECK-NEXT:   4 | vbase_offset (120)
-// CHECK-NEXT:   5 | vbase_offset (48)
-// CHECK-NEXT:   6 | vbase_offset (148)
-// CHECK-NEXT:   7 | vbase_offset (152)
-// CHECK-NEXT:   8 | offset_to_top (0)
-// CHECK-NEXT:   9 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 0) vtable address --
-// CHECK-NEXT:       -- (Test1::C9, 0) vtable address --
-// CHECK-NEXT:  10 | void Test1::C9::f()
-// CHECK-NEXT:  11 | vbase_offset (104)
-// CHECK-NEXT:  12 | vbase_offset (132)
-// CHECK-NEXT:  13 | vbase_offset (136)
-// CHECK-NEXT:  14 | offset_to_top (-16)
-// CHECK-NEXT:  15 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 16) vtable address --
-// CHECK-NEXT:       -- (Test1::C4, 16) vtable address --
-// CHECK-NEXT:  16 | vbase_offset (72)
-// CHECK-NEXT:  17 | vbase_offset (120)
-// CHECK-NEXT:  18 | vbase_offset (100)
-// CHECK-NEXT:  19 | vbase_offset (104)
-// CHECK-NEXT:  20 | offset_to_top (-48)
-// CHECK-NEXT:  21 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 48) vtable address --
-// CHECK-NEXT:       -- (Test1::C5, 48) vtable address --
-// CHECK-NEXT:       -- (Test1::C6, 48) vtable address --
-// CHECK-NEXT:  22 | vbase_offset (84)
-// CHECK-NEXT:  23 | offset_to_top (-64)
-// CHECK-NEXT:  24 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C1, 64) vtable address --
-// CHECK-NEXT:  25 | vbase_offset (32)
-// CHECK-NEXT:  26 | vbase_offset (60)
-// CHECK-NEXT:  27 | vbase_offset (64)
-// CHECK-NEXT:  28 | offset_to_top (-88)
-// CHECK-NEXT:  29 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 88) vtable address --
-// CHECK-NEXT:       -- (Test1::C4, 88) vtable address --
-// CHECK-NEXT:  30 | vbase_offset (44)
-// CHECK-NEXT:  31 | offset_to_top (-104)
-// CHECK-NEXT:  32 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C1, 104) vtable address --
-// CHECK-NEXT:  33 | vbase_offset (28)
-// CHECK-NEXT:  34 | vbase_offset (32)
-// CHECK-NEXT:  35 | offset_to_top (-120)
-// CHECK-NEXT:  36 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 120) vtable address --
-// CHECK-NEXT:       -- (Test1::C3, 120) vtable address --
-// CHECK-NEXT:  37 | vbase_offset (-4)
-// CHECK-NEXT:  38 | offset_to_top (-152)
-// CHECK-NEXT:  39 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C1, 152) vtable address --
-// CHECK-NEXT:  40 | vbase_offset (-48)
-// CHECK-NEXT:  41 | vbase_offset (-20)
-// CHECK-NEXT:  42 | vbase_offset (-16)
-// CHECK-NEXT:  43 | offset_to_top (-168)
-// CHECK-NEXT:  44 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 168) vtable address --
-// CHECK-NEXT:       -- (Test1::C4, 168) vtable address --
-// CHECK-NEXT:  45 | vbase_offset (160)
-// CHECK-NEXT:  46 | vbase_offset (-136)
-// CHECK-NEXT:  47 | vbase_offset (-16)
-// CHECK-NEXT:  48 | vbase_offset (128)
-// CHECK-NEXT:  49 | vbase_offset (-64)
-// CHECK-NEXT:  50 | vbase_offset (-36)
-// CHECK-NEXT:  51 | vbase_offset (-32)
-// CHECK-NEXT:  52 | offset_to_top (-184)
-// CHECK-NEXT:  53 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 184) vtable address --
-// CHECK-NEXT:       -- (Test1::C4, 184) vtable address --
-// CHECK-NEXT:       -- (Test1::C7, 184) vtable address --
-// CHECK-NEXT:       -- (Test1::C8, 184) vtable address --
-// CHECK-NEXT:  54 | vbase_offset (-88)
-// CHECK-NEXT:  55 | vbase_offset (-40)
-// CHECK-NEXT:  56 | vbase_offset (-60)
-// CHECK-NEXT:  57 | vbase_offset (-56)
-// CHECK-NEXT:  58 | offset_to_top (-208)
-// CHECK-NEXT:  59 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 208) vtable address --
-// CHECK-NEXT:       -- (Test1::C5, 208) vtable address --
-// CHECK-NEXT:  60 | vbase_offset (-76)
-// CHECK-NEXT:  61 | offset_to_top (-224)
-// CHECK-NEXT:  62 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C1, 224) vtable address --
-// CHECK-NEXT:  63 | vbase_offset (-92)
-// CHECK-NEXT:  64 | vbase_offset (-88)
-// CHECK-NEXT:  65 | offset_to_top (-240)
-// CHECK-NEXT:  66 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 240) vtable address --
-// CHECK-NEXT:       -- (Test1::C3, 240) vtable address --
-// CHECK-NEXT:  67 | vbase_offset (-124)
-// CHECK-NEXT:  68 | offset_to_top (-272)
-// CHECK-NEXT:  69 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C1, 272) vtable address --
-// CHECK-NEXT:  70 | vbase_offset (-140)
-// CHECK-NEXT:  71 | vbase_offset (-136)
-// CHECK-NEXT:  72 | offset_to_top (-288)
-// CHECK-NEXT:  73 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 288) vtable address --
-// CHECK-NEXT:  74 | vbase_offset (-192)
-// CHECK-NEXT:  75 | vbase_offset (-144)
-// CHECK-NEXT:  76 | vbase_offset (-164)
-// CHECK-NEXT:  77 | vbase_offset (-160)
-// CHECK-NEXT:  78 | offset_to_top (-312)
-// CHECK-NEXT:  79 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C2, 312) vtable address --
-// CHECK-NEXT:       -- (Test1::C5, 312) vtable address --
-// CHECK-NEXT:  80 | vbase_offset (-180)
-// CHECK-NEXT:  81 | offset_to_top (-328)
-// CHECK-NEXT:  82 | Test1::C9 RTTI
-// CHECK-NEXT:       -- (Test1::C1, 328) vtable address --
-// CHECK-NEXT:  83 | vbase_offset (-196)
-// CHECK-NEXT:  84 | vbase_offset (-192)
-// CHECK-NEXT:  85 | offset_to_top (-344)
-// CHECK-NEXT:  86 | Test1::C9 RTTI
-class C9
- :  virtual public C6
- ,  public C2
- ,  public C4
- ,  virtual public C8
-{
-  int k0;
-  int k1;
-  int k2;
-  int k3;
-  virtual void f();
-};
-void C9::f() { }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1750 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm-only -fdump-vtable-layouts > %t 2>&1 
-// RUN: FileCheck --check-prefix=CHECK-1 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-2 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-3 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-4 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-5 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-6 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-7 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-8 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-9 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-10 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-11 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-12 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-13 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-14 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-15 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-16 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-17 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-18 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-19 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-20 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-21 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-22 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-23 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-24 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-25 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-26 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-27 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-28 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-29 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-30 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-31 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-32 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-33 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-34 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-35 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-36 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-37 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-38 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-39 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-40 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-41 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-42 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-43 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-44 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-45 %s < %t
-
-// For now, just verify this doesn't crash.
-namespace test0 {
-  struct Obj {};
-
-  struct Base {           virtual const Obj *foo() = 0; };
-  struct Derived : Base { virtual       Obj *foo() { return new Obj(); } };
-
-  void test(Derived *D) { D->foo(); }
-}
-
-namespace Test1 {
-// CHECK-1:      Vtable for 'Test1::A' (3 entries).
-// CHECK-1-NEXT:   0 | offset_to_top (0)
-// CHECK-1-NEXT:   1 | Test1::A RTTI
-// CHECK-1-NEXT:       -- (Test1::A, 0) vtable address --
-// CHECK-1-NEXT:   2 | void Test1::A::f()
-struct A {
-  virtual void f();
-};
-void A::f() { }
-
-}
-
-namespace Test2 {
-
-// This is a smoke test of the vtable dumper.
-// CHECK-2:      Vtable for 'Test2::A' (9 entries).
-// CHECK-2-NEXT:   0 | offset_to_top (0)
-// CHECK-2-NEXT:   1 | Test2::A RTTI
-// CHECK-2-NEXT:       -- (Test2::A, 0) vtable address --
-// CHECK-2-NEXT:   2 | void Test2::A::f()
-// CHECK-2-NEXT:   3 | void Test2::A::f() const
-// CHECK-2-NEXT:   4 | Test2::A *Test2::A::g(int)
-// CHECK-2-NEXT:   5 | Test2::A::~A() [complete]
-// CHECK-2-NEXT:   6 | Test2::A::~A() [deleting]
-// CHECK-2-NEXT:   7 | void Test2::A::h()
-// CHECK-2-NEXT:   8 | Test2::A &Test2::A::operator=(const Test2::A &)
-struct A {
-  virtual void f();
-  virtual void f() const;
-  
-  virtual A* g(int a);
-  virtual ~A();
-  virtual void h();
-  virtual A& operator=(const A&);
-};
-void A::f() { }
-
-// Another simple vtable dumper test.
-
-// CHECK-3:     Vtable for 'Test2::B' (6 entries).
-// CHECK-3-NEXT:  0 | offset_to_top (0)
-// CHECK-3-NEXT:  1 | Test2::B RTTI
-// CHECK-3-NEXT:    -- (Test2::B, 0) vtable address --
-// CHECK-3-NEXT:  2 | void Test2::B::f()
-// CHECK-3-NEXT:  3 | void Test2::B::g() [pure]
-// CHECK-3-NEXT:  4 | Test2::B::~B() [complete] [pure]
-// CHECK-3-NEXT:  5 | Test2::B::~B() [deleting] [pure]
-struct B {
-  virtual void f();
-  virtual void g() = 0;
-  virtual ~B() = 0;
-};
-void B::f() { }
-
-}
-
-namespace Test3 {
-
-// If a function in a derived class overrides a function in a primary base,
-// then the function should not have an entry in the derived class (unless the return
-// value requires adjusting).
-
-// CHECK-4:      Vtable for 'Test3::A' (3 entries).
-// CHECK-4-NEXT:   0 | offset_to_top (0)
-// CHECK-4-NEXT:   1 | Test3::A RTTI
-// CHECK-4-NEXT:       -- (Test3::A, 0) vtable address --
-// CHECK-4-NEXT:   2 | void Test3::A::f()
-struct A {
-  virtual void f();
-};
-void A::f() { } 
-
-// CHECK-5:     Vtable for 'Test3::B' (4 entries).
-// CHECK-5-NEXT:  0 | offset_to_top (0)
-// CHECK-5-NEXT:  1 | Test3::B RTTI
-// CHECK-5-NEXT:      -- (Test3::A, 0) vtable address --
-// CHECK-5-NEXT:      -- (Test3::B, 0) vtable address --
-// CHECK-5-NEXT:  2 | void Test3::B::f()
-// CHECK-5-NEXT:  3 | void Test3::B::g()
-struct B : A {
-  virtual void f();
-  virtual void g();
-};
-void B::f() { }
-
-// CHECK-6:     Vtable for 'Test3::C' (5 entries).
-// CHECK-6-NEXT:  0 | offset_to_top (0)
-// CHECK-6-NEXT:  1 | Test3::C RTTI
-// CHECK-6-NEXT:     -- (Test3::A, 0) vtable address --
-// CHECK-6-NEXT:     -- (Test3::C, 0) vtable address --
-// CHECK-6-NEXT:  2 | void Test3::A::f()
-// CHECK-6-NEXT:  3 | void Test3::C::g()
-// CHECK-6-NEXT:  4 | void Test3::C::h()
-struct C : A {
-  virtual void g();
-  virtual void h();
-};
-void C::g() { }
-
-// CHECK-7:     Vtable for 'Test3::D' (5 entries).
-// CHECK-7-NEXT:  0 | offset_to_top (0)
-// CHECK-7-NEXT:  1 | Test3::D RTTI
-// CHECK-7-NEXT:     -- (Test3::A, 0) vtable address --
-// CHECK-7-NEXT:     -- (Test3::B, 0) vtable address --
-// CHECK-7-NEXT:     -- (Test3::D, 0) vtable address --
-// CHECK-7-NEXT:  2 | void Test3::D::f()
-// CHECK-7-NEXT:  3 | void Test3::D::g()
-// CHECK-7-NEXT:  4 | void Test3::D::h()
-struct D : B {
-  virtual void f();
-  virtual void g();
-  virtual void h();
-};
-
-void D::f() { } 
-}
-
-namespace Test4 {
-
-// Test non-virtual result adjustments.
-
-struct R1 { int r1; };
-struct R2 { int r2; };
-struct R3 : R1, R2 { int r3; };
-
-struct A {
-  virtual R2 *f();
-};
-
-// CHECK-8:     Vtable for 'Test4::B' (4 entries).
-// CHECK-8-NEXT:  0 | offset_to_top (0)
-// CHECK-8-NEXT:  1 | Test4::B RTTI
-// CHECK-8-NEXT:      -- (Test4::A, 0) vtable address --
-// CHECK-8-NEXT:      -- (Test4::B, 0) vtable address --
-// CHECK-8-NEXT:  2 | Test4::R3 *Test4::B::f()
-// CHECK-8-NEXT:      [return adjustment: 4 non-virtual]
-// CHECK-8-NEXT:  3 | Test4::R3 *Test4::B::f()
-
-struct B : A {
-  virtual R3 *f();
-};
-R3 *B::f() { return 0; }
-
-// Test virtual result adjustments.
-struct V1 { int v1; };
-struct V2 : virtual V1 { int v1; };
-
-struct C {
-  virtual V1 *f(); 
-};
-
-// CHECK-9:     Vtable for 'Test4::D' (4 entries).
-// CHECK-9-NEXT:   0 | offset_to_top (0)
-// CHECK-9-NEXT:   1 | Test4::D RTTI
-// CHECK-9-NEXT:       -- (Test4::C, 0) vtable address --
-// CHECK-9-NEXT:       -- (Test4::D, 0) vtable address --
-// CHECK-9-NEXT:   2 | Test4::V2 *Test4::D::f()
-// CHECK-9-NEXT:       [return adjustment: 0 non-virtual, -24 vbase offset offset]
-// CHECK-9-NEXT:   3 | Test4::V2 *Test4::D::f()
-struct D : C {
-  virtual V2 *f();
-};
-V2 *D::f() { return 0; };
-
-// Virtual result adjustments with an additional non-virtual adjustment.
-struct V3 : virtual R3 { int r3; };
-
-// CHECK-10:     Vtable for 'Test4::E' (4 entries).
-// CHECK-10-NEXT:   0 | offset_to_top (0)
-// CHECK-10-NEXT:   1 | Test4::E RTTI
-// CHECK-10-NEXT:       -- (Test4::A, 0) vtable address --
-// CHECK-10-NEXT:       -- (Test4::E, 0) vtable address --
-// CHECK-10-NEXT:   2 | Test4::V3 *Test4::E::f()
-// CHECK-10-NEXT:       [return adjustment: 4 non-virtual, -24 vbase offset offset]
-// CHECK-10-NEXT:   3 | Test4::V3 *Test4::E::f()
-
-struct E : A {
-  virtual V3 *f();
-};
-V3 *E::f() { return 0;}
-
-// Test that a pure virtual member doesn't get a thunk.
-
-// CHECK-11:     Vtable for 'Test4::F' (5 entries).
-// CHECK-11-NEXT:   0 | offset_to_top (0)
-// CHECK-11-NEXT:   1 | Test4::F RTTI
-// CHECK-11-NEXT:       -- (Test4::A, 0) vtable address --
-// CHECK-11-NEXT:       -- (Test4::F, 0) vtable address --
-// CHECK-11-NEXT:   2 | Test4::R3 *Test4::F::f() [pure]
-// CHECK-11-NEXT:   3 | void Test4::F::g()
-// CHECK-11-NEXT:   4 | Test4::R3 *Test4::F::f() [pure]
-struct F : A {
-  virtual void g();
-  virtual R3 *f() = 0;
-};
-void F::g() { }
-
-}
-
-namespace Test5 {
-
-// Simple secondary vtables without 'this' pointer adjustments.
-struct A {
-  virtual void f();
-  virtual void g();
-  int a;
-};
-
-struct B1 : A {
-  virtual void f();
-  int b1;
-};
-
-struct B2 : A {
-  virtual void g();
-  int b2;
-};
-
-// CHECK-12:     Vtable for 'Test5::C' (9 entries).
-// CHECK-12-NEXT:   0 | offset_to_top (0)
-// CHECK-12-NEXT:   1 | Test5::C RTTI
-// CHECK-12-NEXT:       -- (Test5::A, 0) vtable address --
-// CHECK-12-NEXT:       -- (Test5::B1, 0) vtable address --
-// CHECK-12-NEXT:       -- (Test5::C, 0) vtable address --
-// CHECK-12-NEXT:   2 | void Test5::B1::f()
-// CHECK-12-NEXT:   3 | void Test5::A::g()
-// CHECK-12-NEXT:   4 | void Test5::C::h()
-// CHECK-12-NEXT:   5 | offset_to_top (-16)
-// CHECK-12-NEXT:   6 | Test5::C RTTI
-// CHECK-12-NEXT:       -- (Test5::A, 16) vtable address --
-// CHECK-12-NEXT:       -- (Test5::B2, 16) vtable address --
-// CHECK-12-NEXT:   7 | void Test5::A::f()
-// CHECK-12-NEXT:   8 | void Test5::B2::g()
-struct C : B1, B2 {
-  virtual void h();
-};
-void C::h() { }  
-}
-
-namespace Test6 {
-
-// Simple non-virtual 'this' pointer adjustments.
-struct A1 {
-  virtual void f();
-  int a;
-};
-
-struct A2 {
-  virtual void f();
-  int a;
-};
-
-// CHECK-13:     Vtable for 'Test6::C' (6 entries).
-// CHECK-13-NEXT:   0 | offset_to_top (0)
-// CHECK-13-NEXT:   1 | Test6::C RTTI
-// CHECK-13-NEXT:       -- (Test6::A1, 0) vtable address --
-// CHECK-13-NEXT:       -- (Test6::C, 0) vtable address --
-// CHECK-13-NEXT:   2 | void Test6::C::f()
-// CHECK-13-NEXT:   3 | offset_to_top (-16)
-// CHECK-13-NEXT:   4 | Test6::C RTTI
-// CHECK-13-NEXT:       -- (Test6::A2, 16) vtable address --
-// CHECK-13-NEXT:   5 | void Test6::C::f()
-// CHECK-13-NEXT:       [this adjustment: -16 non-virtual]
-struct C : A1, A2 {
-  virtual void f();
-};
-void C::f() { }
-
-}
-
-namespace Test7 {
-
-// Test that the D::f overrider for A::f have different 'this' pointer
-// adjustments in the two A base subobjects.
-
-struct A {
-  virtual void f();
-  int a;
-};
-
-struct B1 : A { };
-struct B2 : A { };
-
-struct C { virtual void c(); };
-
-// CHECK-14:     Vtable for 'Test7::D' (10 entries).
-// CHECK-14-NEXT:   0 | offset_to_top (0)
-// CHECK-14-NEXT:   1 | Test7::D RTTI
-// CHECK-14-NEXT:       -- (Test7::C, 0) vtable address --
-// CHECK-14-NEXT:       -- (Test7::D, 0) vtable address --
-// CHECK-14-NEXT:   2 | void Test7::C::c()
-// CHECK-14-NEXT:   3 | void Test7::D::f()
-// CHECK-14-NEXT:   4 | offset_to_top (-8)
-// CHECK-14-NEXT:   5 | Test7::D RTTI
-// CHECK-14-NEXT:       -- (Test7::A, 8) vtable address --
-// CHECK-14-NEXT:       -- (Test7::B1, 8) vtable address --
-// CHECK-14-NEXT:   6 | void Test7::D::f()
-// CHECK-14-NEXT:       [this adjustment: -8 non-virtual]
-// CHECK-14-NEXT:   7 | offset_to_top (-24)
-// CHECK-14-NEXT:   8 | Test7::D RTTI
-// CHECK-14-NEXT:       -- (Test7::A, 24) vtable address --
-// CHECK-14-NEXT:       -- (Test7::B2, 24) vtable address --
-// CHECK-14-NEXT:   9 | void Test7::D::f()
-// CHECK-14-NEXT:       [this adjustment: -24 non-virtual]
-struct D : C, B1, B2 {
-  virtual void f();
-};
-void D::f() { }
-
-}
-
-namespace Test8 {
-
-// Test that we don't try to layout vtables for classes that don't have
-// virtual bases or virtual member functions.
-
-struct A { };
-
-// CHECK-15:     Vtable for 'Test8::B' (3 entries).
-// CHECK-15-NEXT:   0 | offset_to_top (0)
-// CHECK-15-NEXT:   1 | Test8::B RTTI
-// CHECK-15-NEXT:       -- (Test8::B, 0) vtable address --
-// CHECK-15-NEXT:   2 | void Test8::B::f()
-struct B : A { 
-  virtual void f();
-};
-void B::f() { }
-
-}
-
-namespace Test9 {
-
-// Simple test of vbase offsets.
-
-struct A1 { int a1; };
-struct A2 { int a2; };
-
-// CHECK-16:     Vtable for 'Test9::B' (5 entries).
-// CHECK-16-NEXT:   0 | vbase_offset (16)
-// CHECK-16-NEXT:   1 | vbase_offset (12)
-// CHECK-16-NEXT:   2 | offset_to_top (0)
-// CHECK-16-NEXT:   3 | Test9::B RTTI
-// CHECK-16-NEXT:       -- (Test9::B, 0) vtable address --
-// CHECK-16-NEXT:   4 | void Test9::B::f()
-struct B : virtual A1, virtual A2 {
-  int b;
-
-  virtual void f();
-};
-
-
-void B::f() { }
-
-}
-
-namespace Test10 {
-
-// Test for a bug where we would not emit secondary vtables for bases
-// of a primary base.
-struct A1 { virtual void a1(); };
-struct A2 { virtual void a2(); };
-
-// CHECK-17:     Vtable for 'Test10::C' (7 entries).
-// CHECK-17-NEXT:   0 | offset_to_top (0)
-// CHECK-17-NEXT:   1 | Test10::C RTTI
-// CHECK-17-NEXT:       -- (Test10::A1, 0) vtable address --
-// CHECK-17-NEXT:       -- (Test10::B, 0) vtable address --
-// CHECK-17-NEXT:       -- (Test10::C, 0) vtable address --
-// CHECK-17-NEXT:   2 | void Test10::A1::a1()
-// CHECK-17-NEXT:   3 | void Test10::C::f()
-// CHECK-17-NEXT:   4 | offset_to_top (-8)
-// CHECK-17-NEXT:   5 | Test10::C RTTI
-// CHECK-17-NEXT:       -- (Test10::A2, 8) vtable address --
-// CHECK-17-NEXT:   6 | void Test10::A2::a2()
-struct B : A1, A2 {
-  int b;
-};
-
-struct C : B {
-  virtual void f();
-};
-void C::f() { }
-
-}
-
-namespace Test11 {
-
-// Very simple test of vtables for virtual bases.
-struct A1 { int a; };
-struct A2 { int b; };
-
-struct B : A1, virtual A2 {
-  int b;
-};
-
-// CHECK-18:     Vtable for 'Test11::C' (8 entries).
-// CHECK-18-NEXT:   0 | vbase_offset (24)
-// CHECK-18-NEXT:   1 | vbase_offset (8)
-// CHECK-18-NEXT:   2 | offset_to_top (0)
-// CHECK-18-NEXT:   3 | Test11::C RTTI
-// CHECK-18-NEXT:       -- (Test11::C, 0) vtable address --
-// CHECK-18-NEXT:   4 | void Test11::C::f()
-// CHECK-18-NEXT:   5 | vbase_offset (16)
-// CHECK-18-NEXT:   6 | offset_to_top (-8)
-// CHECK-18-NEXT:   7 | Test11::C RTTI
-struct C : virtual B {
-  virtual void f();
-};
-void C::f() { }
-
-}
-
-namespace Test12 {
-
-// Test that the right vcall offsets are generated in the right order.
-
-// CHECK-19:      Vtable for 'Test12::B' (19 entries).
-// CHECK-19-NEXT:    0 | vbase_offset (8)
-// CHECK-19-NEXT:    1 | offset_to_top (0)
-// CHECK-19-NEXT:    2 | Test12::B RTTI
-// CHECK-19-NEXT:        -- (Test12::B, 0) vtable address --
-// CHECK-19-NEXT:    3 | void Test12::B::f()
-// CHECK-19-NEXT:    4 | void Test12::B::a()
-// CHECK-19-NEXT:    5 | vcall_offset (32)
-// CHECK-19-NEXT:    6 | vcall_offset (16)
-// CHECK-19-NEXT:    7 | vcall_offset (-8)
-// CHECK-19-NEXT:    8 | vcall_offset (0)
-// CHECK-19-NEXT:    9 | offset_to_top (-8)
-// CHECK-19-NEXT:   10 | Test12::B RTTI
-// CHECK-19-NEXT:        -- (Test12::A, 8) vtable address --
-// CHECK-19-NEXT:        -- (Test12::A1, 8) vtable address --
-// CHECK-19-NEXT:   11 | void Test12::A1::a1()
-// CHECK-19-NEXT:   12 | void Test12::B::a()
-// CHECK-19-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-// CHECK-19-NEXT:   13 | offset_to_top (-24)
-// CHECK-19-NEXT:   14 | Test12::B RTTI
-// CHECK-19-NEXT:        -- (Test12::A2, 24) vtable address --
-// CHECK-19-NEXT:   15 | void Test12::A2::a2()
-// CHECK-19-NEXT:   16 | offset_to_top (-40)
-// CHECK-19-NEXT:   17 | Test12::B RTTI
-// CHECK-19-NEXT:        -- (Test12::A3, 40) vtable address --
-// CHECK-19-NEXT:   18 | void Test12::A3::a3()
-struct A1 {
-  virtual void a1();
-  int a;
-};
-
-struct A2 {
-  virtual void a2();
-  int a;
-};
-
-struct A3 {
-  virtual void a3();
-  int a;
-};
-
-struct A : A1, A2, A3 {
-  virtual void a();
-  int i;
-};
-
-struct B : virtual A {
-  virtual void f();
-
-  virtual void a();
-};
-void B::f() { } 
-
-}
-
-namespace Test13 {
-
-// Test that we don't try to emit a vtable for 'A' twice.
-struct A {
-  virtual void f();
-};
-
-struct B : virtual A {
-  virtual void f();
-};
-
-// CHECK-20:      Vtable for 'Test13::C' (6 entries).
-// CHECK-20-NEXT:    0 | vbase_offset (0)
-// CHECK-20-NEXT:    1 | vbase_offset (0)
-// CHECK-20-NEXT:    2 | vcall_offset (0)
-// CHECK-20-NEXT:    3 | offset_to_top (0)
-// CHECK-20-NEXT:    4 | Test13::C RTTI
-// CHECK-20-NEXT:        -- (Test13::A, 0) vtable address --
-// CHECK-20-NEXT:        -- (Test13::B, 0) vtable address --
-// CHECK-20-NEXT:        -- (Test13::C, 0) vtable address --
-// CHECK-20-NEXT:    5 | void Test13::C::f()
-struct C : virtual B, virtual A {
-  virtual void f();
-};
-void C::f() { }
-
-}
-
-namespace Test14 {
-
-// Verify that we handle A being a non-virtual base of B, which is a virtual base.
-
-struct A { 
-  virtual void f(); 
-};
-
-struct B : A { };
-
-struct C : virtual B { };
-
-// CHECK-21:      Vtable for 'Test14::D' (5 entries).
-// CHECK-21-NEXT:    0 | vbase_offset (0)
-// CHECK-21-NEXT:    1 | vcall_offset (0)
-// CHECK-21-NEXT:    2 | offset_to_top (0)
-// CHECK-21-NEXT:    3 | Test14::D RTTI
-// CHECK-21-NEXT:        -- (Test14::A, 0) vtable address --
-// CHECK-21-NEXT:        -- (Test14::B, 0) vtable address --
-// CHECK-21-NEXT:        -- (Test14::C, 0) vtable address --
-// CHECK-21-NEXT:        -- (Test14::D, 0) vtable address --
-// CHECK-21-NEXT:    4 | void Test14::D::f()
-struct D : C, virtual B {
- virtual void f();
-};
-void D::f() { }
-
-}
-
-namespace Test15 {
-
-// Test that we don't emit an extra vtable for B since it's a primary base of C.
-struct A { virtual void a(); };
-struct B { virtual void b(); };
-
-struct C : virtual B { };
-
-// CHECK-22:      Vtable for 'Test15::D' (11 entries).
-// CHECK-22-NEXT:    0 | vbase_offset (8)
-// CHECK-22-NEXT:    1 | vbase_offset (8)
-// CHECK-22-NEXT:    2 | offset_to_top (0)
-// CHECK-22-NEXT:    3 | Test15::D RTTI
-// CHECK-22-NEXT:        -- (Test15::A, 0) vtable address --
-// CHECK-22-NEXT:        -- (Test15::D, 0) vtable address --
-// CHECK-22-NEXT:    4 | void Test15::A::a()
-// CHECK-22-NEXT:    5 | void Test15::D::f()
-// CHECK-22-NEXT:    6 | vbase_offset (0)
-// CHECK-22-NEXT:    7 | vcall_offset (0)
-// CHECK-22-NEXT:    8 | offset_to_top (-8)
-// CHECK-22-NEXT:    9 | Test15::D RTTI
-// CHECK-22-NEXT:        -- (Test15::B, 8) vtable address --
-// CHECK-22-NEXT:        -- (Test15::C, 8) vtable address --
-// CHECK-22-NEXT:   10 | void Test15::B::b()
-struct D : A, virtual B, virtual C { 
-  virtual void f();
-};
-void D::f() { } 
-
-}
-
-namespace Test16 {
-
-// Test that destructors share vcall offsets.
-
-struct A { virtual ~A(); };
-struct B { virtual ~B(); };
-
-struct C : A, B { virtual ~C(); };
-
-// CHECK-23:      Vtable for 'Test16::D' (15 entries).
-// CHECK-23-NEXT:    0 | vbase_offset (8)
-// CHECK-23-NEXT:    1 | offset_to_top (0)
-// CHECK-23-NEXT:    2 | Test16::D RTTI
-// CHECK-23-NEXT:        -- (Test16::D, 0) vtable address --
-// CHECK-23-NEXT:    3 | void Test16::D::f()
-// CHECK-23-NEXT:    4 | Test16::D::~D() [complete]
-// CHECK-23-NEXT:    5 | Test16::D::~D() [deleting]
-// CHECK-23-NEXT:    6 | vcall_offset (-8)
-// CHECK-23-NEXT:    7 | offset_to_top (-8)
-// CHECK-23-NEXT:    8 | Test16::D RTTI
-// CHECK-23-NEXT:        -- (Test16::A, 8) vtable address --
-// CHECK-23-NEXT:        -- (Test16::C, 8) vtable address --
-// CHECK-23-NEXT:    9 | Test16::D::~D() [complete]
-// CHECK-23-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-23-NEXT:   10 | Test16::D::~D() [deleting]
-// CHECK-23-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-23-NEXT:   11 | offset_to_top (-16)
-// CHECK-23-NEXT:   12 | Test16::D RTTI
-// CHECK-23-NEXT:        -- (Test16::B, 16) vtable address --
-// CHECK-23-NEXT:   13 | Test16::D::~D() [complete]
-// CHECK-23-NEXT:        [this adjustment: -8 non-virtual, -24 vcall offset offset]
-// CHECK-23-NEXT:   14 | Test16::D::~D() [deleting]
-// CHECK-23-NEXT:        [this adjustment: -8 non-virtual, -24 vcall offset offset]
-struct D : virtual C {
-  virtual void f();
-};
-void D::f() { } 
-
-}
-
-namespace Test17 {
-
-// Test that we don't mark E::f in the C-in-E vtable as unused.
-struct A { virtual void f(); };
-struct B : virtual A { virtual void f(); };
-struct C : virtual A { virtual void f(); };
-struct D : virtual B, virtual C { virtual void f(); };
-
-// CHECK-24:      Vtable for 'Test17::E' (13 entries).
-// CHECK-24-NEXT:    0 | vbase_offset (0)
-// CHECK-24-NEXT:    1 | vbase_offset (8)
-// CHECK-24-NEXT:    2 | vbase_offset (0)
-// CHECK-24-NEXT:    3 | vbase_offset (0)
-// CHECK-24-NEXT:    4 | vcall_offset (0)
-// CHECK-24-NEXT:    5 | offset_to_top (0)
-// CHECK-24-NEXT:    6 | Test17::E RTTI
-// CHECK-24-NEXT:        -- (Test17::A, 0) vtable address --
-// CHECK-24-NEXT:        -- (Test17::B, 0) vtable address --
-// CHECK-24-NEXT:        -- (Test17::D, 0) vtable address --
-// CHECK-24-NEXT:        -- (Test17::E, 0) vtable address --
-// CHECK-24-NEXT:    7 | void Test17::E::f()
-// CHECK-24-NEXT:    8 | vbase_offset (-8)
-// CHECK-24-NEXT:    9 | vcall_offset (-8)
-// CHECK-24-NEXT:   10 | offset_to_top (-8)
-// CHECK-24-NEXT:   11 | Test17::E RTTI
-// CHECK-24-NEXT:        -- (Test17::C, 8) vtable address --
-// CHECK-24-NEXT:   12 | void Test17::E::f()
-// CHECK-24-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-class E : virtual D {
-  virtual void f();  
-};
-void E::f() {}
-
-}
-
-namespace Test18 {
-
-// Test that we compute the right 'this' adjustment offsets.
-
-struct A {
-  virtual void f();
-  virtual void g();
-};
-
-struct B : virtual A {
-  virtual void f();
-};
-
-struct C : A, B {
-  virtual void g();
-};
-
-// CHECK-25:      Vtable for 'Test18::D' (24 entries).
-// CHECK-25-NEXT:    0 | vbase_offset (8)
-// CHECK-25-NEXT:    1 | vbase_offset (0)
-// CHECK-25-NEXT:    2 | vbase_offset (0)
-// CHECK-25-NEXT:    3 | vcall_offset (8)
-// CHECK-25-NEXT:    4 | vcall_offset (0)
-// CHECK-25-NEXT:    5 | offset_to_top (0)
-// CHECK-25-NEXT:    6 | Test18::D RTTI
-// CHECK-25-NEXT:        -- (Test18::A, 0) vtable address --
-// CHECK-25-NEXT:        -- (Test18::B, 0) vtable address --
-// CHECK-25-NEXT:        -- (Test18::D, 0) vtable address --
-// CHECK-25-NEXT:    7 | void Test18::D::f()
-// CHECK-25-NEXT:    8 | void Test18::C::g()
-// CHECK-25-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-// CHECK-25-NEXT:    9 | void Test18::D::h()
-// CHECK-25-NEXT:   10 | vcall_offset (0)
-// CHECK-25-NEXT:   11 | vcall_offset (-8)
-// CHECK-25-NEXT:   12 | vbase_offset (-8)
-// CHECK-25-NEXT:   13 | offset_to_top (-8)
-// CHECK-25-NEXT:   14 | Test18::D RTTI
-// CHECK-25-NEXT:        -- (Test18::A, 8) vtable address --
-// CHECK-25-NEXT:        -- (Test18::C, 8) vtable address --
-// CHECK-25-NEXT:   15 | void Test18::D::f()
-// CHECK-25-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-// CHECK-25-NEXT:   16 | void Test18::C::g()
-// CHECK-25-NEXT:   17 | vbase_offset (-16)
-// CHECK-25-NEXT:   18 | vcall_offset (-8)
-// CHECK-25-NEXT:   19 | vcall_offset (-16)
-// CHECK-25-NEXT:   20 | offset_to_top (-16)
-// CHECK-25-NEXT:   21 | Test18::D RTTI
-// CHECK-25-NEXT:        -- (Test18::B, 16) vtable address --
-// CHECK-25-NEXT:   22 | void Test18::D::f()
-// CHECK-25-NEXT:        [this adjustment: -8 non-virtual, -32 vcall offset offset]
-// CHECK-25-NEXT:   23 | [unused] void Test18::C::g()
-
-// CHECK-25:      Construction vtable for ('Test18::B', 0) in 'Test18::D' (7 entries).
-// CHECK-25-NEXT:    0 | vbase_offset (0)
-// CHECK-25-NEXT:    1 | vcall_offset (0)
-// CHECK-25-NEXT:    2 | vcall_offset (0)
-// CHECK-25-NEXT:    3 | offset_to_top (0)
-// CHECK-25-NEXT:    4 | Test18::B RTTI
-// CHECK-25-NEXT:        -- (Test18::A, 0) vtable address --
-// CHECK-25-NEXT:        -- (Test18::B, 0) vtable address --
-// CHECK-25-NEXT:    5 | void Test18::B::f()
-// CHECK-25-NEXT:    6 | void Test18::A::g()
-
-// CHECK-25:      Construction vtable for ('Test18::C', 8) in 'Test18::D' (20 entries).
-// CHECK-25-NEXT:    0 | vcall_offset (0)
-// CHECK-25-NEXT:    1 | vcall_offset (0)
-// CHECK-25-NEXT:    2 | vbase_offset (-8)
-// CHECK-25-NEXT:    3 | offset_to_top (0)
-// CHECK-25-NEXT:    4 | Test18::C RTTI
-// CHECK-25-NEXT:        -- (Test18::A, 8) vtable address --
-// CHECK-25-NEXT:        -- (Test18::C, 8) vtable address --
-// CHECK-25-NEXT:    5 | void Test18::A::f()
-// CHECK-25-NEXT:    6 | void Test18::C::g()
-// CHECK-25-NEXT:    7 | vbase_offset (-16)
-// CHECK-25-NEXT:    8 | vcall_offset (-8)
-// CHECK-25-NEXT:    9 | vcall_offset (0)
-// CHECK-25-NEXT:   10 | offset_to_top (-8)
-// CHECK-25-NEXT:   11 | Test18::C RTTI
-// CHECK-25-NEXT:        -- (Test18::B, 16) vtable address --
-// CHECK-25-NEXT:   12 | void Test18::B::f()
-// CHECK-25-NEXT:   13 | [unused] void Test18::C::g()
-// CHECK-25-NEXT:   14 | vcall_offset (8)
-// CHECK-25-NEXT:   15 | vcall_offset (16)
-// CHECK-25-NEXT:   16 | offset_to_top (8)
-// CHECK-25-NEXT:   17 | Test18::C RTTI
-// CHECK-25-NEXT:        -- (Test18::A, 0) vtable address --
-// CHECK-25-NEXT:   18 | void Test18::B::f()
-// CHECK-25-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-25-NEXT:   19 | void Test18::C::g()
-// CHECK-25-NEXT:        [this adjustment: 0 non-virtual, -32 vcall offset offset]
-
-// CHECK-25:      Construction vtable for ('Test18::B', 16) in 'Test18::D' (13 entries).
-// CHECK-25-NEXT:    0 | vbase_offset (-16)
-// CHECK-25-NEXT:    1 | vcall_offset (-16)
-// CHECK-25-NEXT:    2 | vcall_offset (0)
-// CHECK-25-NEXT:    3 | offset_to_top (0)
-// CHECK-25-NEXT:    4 | Test18::B RTTI
-// CHECK-25-NEXT:        -- (Test18::B, 16) vtable address --
-// CHECK-25-NEXT:    5 | void Test18::B::f()
-// CHECK-25-NEXT:    6 | [unused] void Test18::A::g()
-// CHECK-25-NEXT:    7 | vcall_offset (0)
-// CHECK-25-NEXT:    8 | vcall_offset (16)
-// CHECK-25-NEXT:    9 | offset_to_top (16)
-// CHECK-25-NEXT:   10 | Test18::B RTTI
-// CHECK-25-NEXT:        -- (Test18::A, 0) vtable address --
-// CHECK-25-NEXT:   11 | void Test18::B::f()
-// CHECK-25-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-25-NEXT:   12 | void Test18::A::g()
-struct D : virtual B, virtual C, virtual A 
-{
-  virtual void f();
-  virtual void h();
-};
-void D::f() {}
-
-}
-
-namespace Test19 {
-
-// Another 'this' adjustment test.
-
-struct A {
-  int a;
-
-  virtual void f();
-};
-
-struct B : A {
-  int b;
-
-  virtual void g();
-};
-
-struct C {
-  virtual void c();
-};
-
-// CHECK-26:      Vtable for 'Test19::D' (13 entries).
-// CHECK-26-NEXT:    0 | vbase_offset (24)
-// CHECK-26-NEXT:    1 | offset_to_top (0)
-// CHECK-26-NEXT:    2 | Test19::D RTTI
-// CHECK-26-NEXT:        -- (Test19::C, 0) vtable address --
-// CHECK-26-NEXT:        -- (Test19::D, 0) vtable address --
-// CHECK-26-NEXT:    3 | void Test19::C::c()
-// CHECK-26-NEXT:    4 | void Test19::D::f()
-// CHECK-26-NEXT:    5 | offset_to_top (-8)
-// CHECK-26-NEXT:    6 | Test19::D RTTI
-// CHECK-26-NEXT:        -- (Test19::A, 8) vtable address --
-// CHECK-26-NEXT:        -- (Test19::B, 8) vtable address --
-// CHECK-26-NEXT:    7 | void Test19::D::f()
-// CHECK-26-NEXT:        [this adjustment: -8 non-virtual]
-// CHECK-26-NEXT:    8 | void Test19::B::g()
-// CHECK-26-NEXT:    9 | vcall_offset (-24)
-// CHECK-26-NEXT:   10 | offset_to_top (-24)
-// CHECK-26-NEXT:   11 | Test19::D RTTI
-// CHECK-26-NEXT:        -- (Test19::A, 24) vtable address --
-// CHECK-26-NEXT:   12 | void Test19::D::f()
-// CHECK-26-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-struct D : C, B, virtual A {
-  virtual void f();
-};
-void D::f() { }
-
-}
-
-namespace Test20 {
-
-// pure virtual member functions should never have 'this' adjustments.
-
-struct A {
-  virtual void f() = 0;
-  virtual void g();
-};
-
-struct B : A { };
-
-// CHECK-27:      Vtable for 'Test20::C' (9 entries).
-// CHECK-27-NEXT:    0 | offset_to_top (0)
-// CHECK-27-NEXT:    1 | Test20::C RTTI
-// CHECK-27-NEXT:        -- (Test20::A, 0) vtable address --
-// CHECK-27-NEXT:        -- (Test20::C, 0) vtable address --
-// CHECK-27-NEXT:    2 | void Test20::C::f() [pure]
-// CHECK-27-NEXT:    3 | void Test20::A::g()
-// CHECK-27-NEXT:    4 | void Test20::C::h()
-// CHECK-27-NEXT:    5 | offset_to_top (-8)
-// CHECK-27-NEXT:    6 | Test20::C RTTI
-// CHECK-27-NEXT:        -- (Test20::A, 8) vtable address --
-// CHECK-27-NEXT:        -- (Test20::B, 8) vtable address --
-// CHECK-27-NEXT:    7 | void Test20::C::f() [pure]
-// CHECK-27-NEXT:    8 | void Test20::A::g()
-struct C : A, B { 
-  virtual void f() = 0;
-  virtual void h();
-};
-void C::h() { }
-
-}
-
-namespace Test21 {
-
-// Test that we get vbase offsets right in secondary vtables.
-struct A { 
-  virtual void f();
-};
-
-struct B : virtual A { };
-class C : virtual B { };
-class D : virtual C { };
-
-class E : virtual C { };
-
-// CHECK-28:      Vtable for 'Test21::F' (16 entries).
-// CHECK-28-NEXT:    0 | vbase_offset (8)
-// CHECK-28-NEXT:    1 | vbase_offset (0)
-// CHECK-28-NEXT:    2 | vbase_offset (0)
-// CHECK-28-NEXT:    3 | vbase_offset (0)
-// CHECK-28-NEXT:    4 | vbase_offset (0)
-// CHECK-28-NEXT:    5 | vcall_offset (0)
-// CHECK-28-NEXT:    6 | offset_to_top (0)
-// CHECK-28-NEXT:    7 | Test21::F RTTI
-// CHECK-28-NEXT:        -- (Test21::A, 0) vtable address --
-// CHECK-28-NEXT:        -- (Test21::B, 0) vtable address --
-// CHECK-28-NEXT:        -- (Test21::C, 0) vtable address --
-// CHECK-28-NEXT:        -- (Test21::D, 0) vtable address --
-// CHECK-28-NEXT:        -- (Test21::F, 0) vtable address --
-// CHECK-28-NEXT:    8 | void Test21::F::f()
-// CHECK-28-NEXT:    9 | vbase_offset (-8)
-// CHECK-28-NEXT:   10 | vbase_offset (-8)
-// CHECK-28-NEXT:   11 | vbase_offset (-8)
-// CHECK-28-NEXT:   12 | vcall_offset (-8)
-// CHECK-28-NEXT:   13 | offset_to_top (-8)
-// CHECK-28-NEXT:   14 | Test21::F RTTI
-// CHECK-28-NEXT:        -- (Test21::E, 8) vtable address --
-// CHECK-28-NEXT:   15 | [unused] void Test21::F::f()
-//
-// CHECK-28:      Virtual base offset offsets for 'Test21::F' (5 entries).
-// CHECK-28-NEXT:    Test21::A | -32
-// CHECK-28-NEXT:    Test21::B | -40
-// CHECK-28-NEXT:    Test21::C | -48
-// CHECK-28-NEXT:    Test21::D | -56
-// CHECK-28-NEXT:    Test21::E | -64
-class F : virtual D, virtual E {
-  virtual void f();
-};
-void F::f() { }
-
-}
-
-namespace Test22 {
-
-// Very simple construction vtable test.
-struct V1 {
-  int v1;
-}; 
-
-struct V2 : virtual V1 {
-  int v2; 
-};
-
-// CHECK-29:      Vtable for 'Test22::C' (8 entries).
-// CHECK-29-NEXT:    0 | vbase_offset (16)
-// CHECK-29-NEXT:    1 | vbase_offset (12)
-// CHECK-29-NEXT:    2 | offset_to_top (0)
-// CHECK-29-NEXT:    3 | Test22::C RTTI
-// CHECK-29-NEXT:        -- (Test22::C, 0) vtable address --
-// CHECK-29-NEXT:    4 | void Test22::C::f()
-// CHECK-29-NEXT:    5 | vbase_offset (-4)
-// CHECK-29-NEXT:    6 | offset_to_top (-16)
-// CHECK-29-NEXT:    7 | Test22::C RTTI
-// CHECK-29-NEXT:        -- (Test22::V2, 16) vtable address --
-
-// CHECK-29:      Construction vtable for ('Test22::V2', 16) in 'Test22::C' (3 entries).
-// CHECK-29-NEXT:    0 | vbase_offset (-4)
-// CHECK-29-NEXT:    1 | offset_to_top (0)
-// CHECK-29-NEXT:    2 | Test22::V2 RTTI
-
-struct C : virtual V1, virtual V2 {
-  int c; 
-  virtual void f(); 
-};
-void C::f() { } 
-
-}
-
-namespace Test23 {
-
-struct A {
-  int a;
-};
-
-struct B : virtual A {
-  int b;
-};
-
-struct C : A, virtual B {
-  int c;
-};
-
-// CHECK-30:      Vtable for 'Test23::D' (7 entries).
-// CHECK-30-NEXT:    0 | vbase_offset (20)
-// CHECK-30-NEXT:    1 | vbase_offset (24)
-// CHECK-30-NEXT:    2 | offset_to_top (0)
-// CHECK-30-NEXT:    3 | Test23::D RTTI
-// CHECK-30-NEXT:        -- (Test23::C, 0) vtable address --
-// CHECK-30-NEXT:        -- (Test23::D, 0) vtable address --
-// CHECK-30-NEXT:    4 | vbase_offset (-4)
-// CHECK-30-NEXT:    5 | offset_to_top (-24)
-// CHECK-30-NEXT:    6 | Test23::D RTTI
-// CHECK-30-NEXT:        -- (Test23::B, 24) vtable address --
-
-// CHECK-30:      Construction vtable for ('Test23::C', 0) in 'Test23::D' (7 entries).
-// CHECK-30-NEXT:    0 | vbase_offset (20)
-// CHECK-30-NEXT:    1 | vbase_offset (24)
-// CHECK-30-NEXT:    2 | offset_to_top (0)
-// CHECK-30-NEXT:    3 | Test23::C RTTI
-// CHECK-30-NEXT:        -- (Test23::C, 0) vtable address --
-// CHECK-30-NEXT:    4 | vbase_offset (-4)
-// CHECK-30-NEXT:    5 | offset_to_top (-24)
-// CHECK-30-NEXT:    6 | Test23::C RTTI
-// CHECK-30-NEXT:        -- (Test23::B, 24) vtable address --
-
-// CHECK-30:      Construction vtable for ('Test23::B', 24) in 'Test23::D' (3 entries).
-// CHECK-30-NEXT:    0 | vbase_offset (-4)
-// CHECK-30-NEXT:    1 | offset_to_top (0)
-// CHECK-30-NEXT:    2 | Test23::B RTTI
-// CHECK-30-NEXT:        -- (Test23::B, 24) vtable address --
-
-struct D : virtual A, virtual B, C {
-  int d;
-
-  void f();
-};
-void D::f() { } 
-  D d;
-}
-
-namespace Test24 {
-
-// Another construction vtable test.
-
-struct A {
-  virtual void f();
-};
-
-struct B : virtual A { };
-struct C : virtual A { };
-
-// CHECK-31:      Vtable for 'Test24::D' (10 entries).
-// CHECK-31-NEXT:    0 | vbase_offset (0)
-// CHECK-31-NEXT:    1 | vcall_offset (0)
-// CHECK-31-NEXT:    2 | offset_to_top (0)
-// CHECK-31-NEXT:    3 | Test24::D RTTI
-// CHECK-31-NEXT:        -- (Test24::A, 0) vtable address --
-// CHECK-31-NEXT:        -- (Test24::B, 0) vtable address --
-// CHECK-31-NEXT:        -- (Test24::D, 0) vtable address --
-// CHECK-31-NEXT:    4 | void Test24::D::f()
-// CHECK-31-NEXT:    5 | vbase_offset (-8)
-// CHECK-31-NEXT:    6 | vcall_offset (-8)
-// CHECK-31-NEXT:    7 | offset_to_top (-8)
-// CHECK-31-NEXT:    8 | Test24::D RTTI
-// CHECK-31-NEXT:        -- (Test24::C, 8) vtable address --
-// CHECK-31-NEXT:    9 | [unused] void Test24::D::f()
-
-// CHECK-31:      Construction vtable for ('Test24::B', 0) in 'Test24::D' (5 entries).
-// CHECK-31-NEXT:    0 | vbase_offset (0)
-// CHECK-31-NEXT:    1 | vcall_offset (0)
-// CHECK-31-NEXT:    2 | offset_to_top (0)
-// CHECK-31-NEXT:    3 | Test24::B RTTI
-// CHECK-31-NEXT:        -- (Test24::A, 0) vtable address --
-// CHECK-31-NEXT:        -- (Test24::B, 0) vtable address --
-// CHECK-31-NEXT:    4 | void Test24::A::f()
-
-// CHECK-31:      Construction vtable for ('Test24::C', 8) in 'Test24::D' (9 entries).
-// CHECK-31-NEXT:    0 | vbase_offset (-8)
-// CHECK-31-NEXT:    1 | vcall_offset (-8)
-// CHECK-31-NEXT:    2 | offset_to_top (0)
-// CHECK-31-NEXT:    3 | Test24::C RTTI
-// CHECK-31-NEXT:        -- (Test24::C, 8) vtable address --
-// CHECK-31-NEXT:    4 | [unused] void Test24::A::f()
-// CHECK-31-NEXT:    5 | vcall_offset (0)
-// CHECK-31-NEXT:    6 | offset_to_top (8)
-// CHECK-31-NEXT:    7 | Test24::C RTTI
-// CHECK-31-NEXT:        -- (Test24::A, 0) vtable address --
-// CHECK-31-NEXT:    8 | void Test24::A::f()
-struct D : B, C {
-  virtual void f();
-};
-void D::f() { }
-
-}
-
-namespace Test25 {
-  
-// This mainly tests that we don't assert on this class hierarchy.
-
-struct V {
-  virtual void f();
-};
-
-struct A : virtual V { };
-struct B : virtual V { };
-
-// CHECK-32:      Vtable for 'Test25::C' (11 entries).
-// CHECK-32-NEXT:    0 | vbase_offset (0)
-// CHECK-32-NEXT:    1 | vcall_offset (0)
-// CHECK-32-NEXT:    2 | offset_to_top (0)
-// CHECK-32-NEXT:    3 | Test25::C RTTI
-// CHECK-32-NEXT:        -- (Test25::A, 0) vtable address --
-// CHECK-32-NEXT:        -- (Test25::C, 0) vtable address --
-// CHECK-32-NEXT:        -- (Test25::V, 0) vtable address --
-// CHECK-32-NEXT:    4 | void Test25::V::f()
-// CHECK-32-NEXT:    5 | void Test25::C::g()
-// CHECK-32-NEXT:    6 | vbase_offset (-8)
-// CHECK-32-NEXT:    7 | vcall_offset (-8)
-// CHECK-32-NEXT:    8 | offset_to_top (-8)
-// CHECK-32-NEXT:    9 | Test25::C RTTI
-// CHECK-32-NEXT:        -- (Test25::B, 8) vtable address --
-// CHECK-32-NEXT:   10 | [unused] void Test25::V::f()
-
-// CHECK-32:      Construction vtable for ('Test25::A', 0) in 'Test25::C' (5 entries).
-// CHECK-32-NEXT:    0 | vbase_offset (0)
-// CHECK-32-NEXT:    1 | vcall_offset (0)
-// CHECK-32-NEXT:    2 | offset_to_top (0)
-// CHECK-32-NEXT:    3 | Test25::A RTTI
-// CHECK-32-NEXT:        -- (Test25::A, 0) vtable address --
-// CHECK-32-NEXT:        -- (Test25::V, 0) vtable address --
-// CHECK-32-NEXT:    4 | void Test25::V::f()
-
-// CHECK-32:      Construction vtable for ('Test25::B', 8) in 'Test25::C' (9 entries).
-// CHECK-32-NEXT:    0 | vbase_offset (-8)
-// CHECK-32-NEXT:    1 | vcall_offset (-8)
-// CHECK-32-NEXT:    2 | offset_to_top (0)
-// CHECK-32-NEXT:    3 | Test25::B RTTI
-// CHECK-32-NEXT:        -- (Test25::B, 8) vtable address --
-// CHECK-32-NEXT:    4 | [unused] void Test25::V::f()
-// CHECK-32-NEXT:    5 | vcall_offset (0)
-// CHECK-32-NEXT:    6 | offset_to_top (8)
-// CHECK-32-NEXT:    7 | Test25::B RTTI
-// CHECK-32-NEXT:        -- (Test25::V, 0) vtable address --
-// CHECK-32-NEXT:    8 | void Test25::V::f()
-struct C : A, virtual V, B {
-  virtual void g();
-};
-void C::g() { }
-
-}
-
-namespace Test26 {
-
-// Test that we generate the right number of entries in the C-in-D construction vtable, and that
-// we don't mark A::a as unused.
-
-struct A {
-  virtual void a();
-};
-
-struct B {
-  virtual void c();
-};
-
-struct C : virtual A {
-  virtual void b();
-};
-
-// CHECK-33:      Vtable for 'Test26::D' (15 entries).
-// CHECK-33-NEXT:    0 | vbase_offset (8)
-// CHECK-33-NEXT:    1 | vbase_offset (8)
-// CHECK-33-NEXT:    2 | vbase_offset (0)
-// CHECK-33-NEXT:    3 | vcall_offset (0)
-// CHECK-33-NEXT:    4 | offset_to_top (0)
-// CHECK-33-NEXT:    5 | Test26::D RTTI
-// CHECK-33-NEXT:        -- (Test26::B, 0) vtable address --
-// CHECK-33-NEXT:        -- (Test26::D, 0) vtable address --
-// CHECK-33-NEXT:    6 | void Test26::B::c()
-// CHECK-33-NEXT:    7 | void Test26::D::d()
-// CHECK-33-NEXT:    8 | vcall_offset (0)
-// CHECK-33-NEXT:    9 | vbase_offset (0)
-// CHECK-33-NEXT:   10 | vcall_offset (0)
-// CHECK-33-NEXT:   11 | offset_to_top (-8)
-// CHECK-33-NEXT:   12 | Test26::D RTTI
-// CHECK-33-NEXT:        -- (Test26::A, 8) vtable address --
-// CHECK-33-NEXT:        -- (Test26::C, 8) vtable address --
-// CHECK-33-NEXT:   13 | void Test26::A::a()
-// CHECK-33-NEXT:   14 | void Test26::C::b()
-
-// CHECK-33:      Construction vtable for ('Test26::C', 8) in 'Test26::D' (7 entries).
-// CHECK-33-NEXT:    0 | vcall_offset (0)
-// CHECK-33-NEXT:    1 | vbase_offset (0)
-// CHECK-33-NEXT:    2 | vcall_offset (0)
-// CHECK-33-NEXT:    3 | offset_to_top (0)
-// CHECK-33-NEXT:    4 | Test26::C RTTI
-// CHECK-33-NEXT:        -- (Test26::A, 8) vtable address --
-// CHECK-33-NEXT:        -- (Test26::C, 8) vtable address --
-// CHECK-33-NEXT:    5 | void Test26::A::a()
-// CHECK-33-NEXT:    6 | void Test26::C::b()
-class D : virtual B, virtual C {
-  virtual void d();
-};
-void D::d() { } 
-
-}
-
-namespace Test27 {
-
-// Test that we don't generate a secondary vtable for C in the D-in-E vtable, since
-// C doesn't have any virtual bases.
-
-struct A {
-  virtual void a();
-};
-
-struct B {
-  virtual void b();
-};
-
-struct C {
-  virtual void c();
-};
-
-struct D : A, virtual B, C {
-  virtual void d();
-};
-
-// CHECK-34:      Vtable for 'Test27::E' (13 entries).
-// CHECK-34-NEXT:    0 | vbase_offset (16)
-// CHECK-34-NEXT:    1 | offset_to_top (0)
-// CHECK-34-NEXT:    2 | Test27::E RTTI
-// CHECK-34-NEXT:        -- (Test27::A, 0) vtable address --
-// CHECK-34-NEXT:        -- (Test27::D, 0) vtable address --
-// CHECK-34-NEXT:        -- (Test27::E, 0) vtable address --
-// CHECK-34-NEXT:    3 | void Test27::A::a()
-// CHECK-34-NEXT:    4 | void Test27::D::d()
-// CHECK-34-NEXT:    5 | void Test27::E::e()
-// CHECK-34-NEXT:    6 | offset_to_top (-8)
-// CHECK-34-NEXT:    7 | Test27::E RTTI
-// CHECK-34-NEXT:        -- (Test27::C, 8) vtable address --
-// CHECK-34-NEXT:    8 | void Test27::C::c()
-// CHECK-34-NEXT:    9 | vcall_offset (0)
-// CHECK-34-NEXT:   10 | offset_to_top (-16)
-// CHECK-34-NEXT:   11 | Test27::E RTTI
-// CHECK-34-NEXT:        -- (Test27::B, 16) vtable address --
-// CHECK-34-NEXT:   12 | void Test27::B::b()
-
-// CHECK-34:      Construction vtable for ('Test27::D', 0) in 'Test27::E' (9 entries).
-// CHECK-34-NEXT:    0 | vbase_offset (16)
-// CHECK-34-NEXT:    1 | offset_to_top (0)
-// CHECK-34-NEXT:    2 | Test27::D RTTI
-// CHECK-34-NEXT:        -- (Test27::A, 0) vtable address --
-// CHECK-34-NEXT:        -- (Test27::D, 0) vtable address --
-// CHECK-34-NEXT:    3 | void Test27::A::a()
-// CHECK-34-NEXT:    4 | void Test27::D::d()
-// CHECK-34-NEXT:    5 | vcall_offset (0)
-// CHECK-34-NEXT:    6 | offset_to_top (-16)
-// CHECK-34-NEXT:    7 | Test27::D RTTI
-// CHECK-34-NEXT:        -- (Test27::B, 16) vtable address --
-// CHECK-34-NEXT:    8 | void Test27::B::b()
-struct E : D {
-  virtual void e();
-};
-void E::e() { }
-
-}
-
-namespace Test28 {
-
-// Check that we do include the vtable for B in the D-in-E construction vtable, since
-// B is a base class of a virtual base (C).
-
-struct A {
-  virtual void a();
-};
-
-struct B {
-  virtual void b();
-};
-
-struct C : A, B {
-  virtual void c();
-};
-
-struct D : virtual C {
-};
-
-// CHECK-35:      Vtable for 'Test28::E' (14 entries).
-// CHECK-35-NEXT:    0 | vbase_offset (8)
-// CHECK-35-NEXT:    1 | offset_to_top (0)
-// CHECK-35-NEXT:    2 | Test28::E RTTI
-// CHECK-35-NEXT:        -- (Test28::D, 0) vtable address --
-// CHECK-35-NEXT:        -- (Test28::E, 0) vtable address --
-// CHECK-35-NEXT:    3 | void Test28::E::e()
-// CHECK-35-NEXT:    4 | vcall_offset (8)
-// CHECK-35-NEXT:    5 | vcall_offset (0)
-// CHECK-35-NEXT:    6 | vcall_offset (0)
-// CHECK-35-NEXT:    7 | offset_to_top (-8)
-// CHECK-35-NEXT:    8 | Test28::E RTTI
-// CHECK-35-NEXT:        -- (Test28::A, 8) vtable address --
-// CHECK-35-NEXT:        -- (Test28::C, 8) vtable address --
-// CHECK-35-NEXT:    9 | void Test28::A::a()
-// CHECK-35-NEXT:   10 | void Test28::C::c()
-// CHECK-35-NEXT:   11 | offset_to_top (-16)
-// CHECK-35-NEXT:   12 | Test28::E RTTI
-// CHECK-35-NEXT:        -- (Test28::B, 16) vtable address --
-// CHECK-35-NEXT:   13 | void Test28::B::b()
-
-// CHECK-35:      Construction vtable for ('Test28::D', 0) in 'Test28::E' (13 entries).
-// CHECK-35-NEXT:    0 | vbase_offset (8)
-// CHECK-35-NEXT:    1 | offset_to_top (0)
-// CHECK-35-NEXT:    2 | Test28::D RTTI
-// CHECK-35-NEXT:        -- (Test28::D, 0) vtable address --
-// CHECK-35-NEXT:    3 | vcall_offset (8)
-// CHECK-35-NEXT:    4 | vcall_offset (0)
-// CHECK-35-NEXT:    5 | vcall_offset (0)
-// CHECK-35-NEXT:    6 | offset_to_top (-8)
-// CHECK-35-NEXT:    7 | Test28::D RTTI
-// CHECK-35-NEXT:        -- (Test28::A, 8) vtable address --
-// CHECK-35-NEXT:        -- (Test28::C, 8) vtable address --
-// CHECK-35-NEXT:    8 | void Test28::A::a()
-// CHECK-35-NEXT:    9 | void Test28::C::c()
-// CHECK-35-NEXT:   10 | offset_to_top (-16)
-// CHECK-35-NEXT:   11 | Test28::D RTTI
-// CHECK-35-NEXT:        -- (Test28::B, 16) vtable address --
-// CHECK-35-NEXT:   12 | void Test28::B::b()
-struct E : D {
-  virtual void e();
-};
-void E::e() { }
-
-}
-
-namespace Test29 {
-
-// Test that the covariant return thunk for B::f will have a virtual 'this' adjustment,
-// matching gcc.
-
-struct V1 { };
-struct V2 : virtual V1 { };
-
-struct A {
-  virtual V1 *f();
-};
-
-// CHECK-36:      Vtable for 'Test29::B' (6 entries).
-// CHECK-36-NEXT:    0 | vbase_offset (0)
-// CHECK-36-NEXT:    1 | vcall_offset (0)
-// CHECK-36-NEXT:    2 | offset_to_top (0)
-// CHECK-36-NEXT:    3 | Test29::B RTTI
-// CHECK-36-NEXT:        -- (Test29::A, 0) vtable address --
-// CHECK-36-NEXT:        -- (Test29::B, 0) vtable address --
-// CHECK-36-NEXT:    4 | Test29::V2 *Test29::B::f()
-// CHECK-36-NEXT:        [return adjustment: 0 non-virtual, -24 vbase offset offset]
-// CHECK-36-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-// CHECK-36-NEXT:    5 | Test29::V2 *Test29::B::f()
-struct B : virtual A {
-  virtual V2 *f();
-};
-V2 *B::f() { return 0; }
-
-}
-
-namespace Test30 {
-
-// Test that we don't assert when generating a vtable for F.
-struct A { };
-
-struct B : virtual A {
- int i;
-};
-
-struct C {
- virtual void f();
-};
-
-struct D : virtual C, B { };
-struct E : virtual D { };
-
-struct F : E {
- virtual void f();
-};
-void F::f() { }
-
-}
-
-namespace Test31 {
-
-// Test that we don't add D::f twice to the primary vtable.
-struct A {
-  int a;
-};
-
-struct B {
-  virtual void f();
-};
-
-struct C : A, virtual B {
-  virtual void f();
-};
-
-// CHECK-37:      Vtable for 'Test31::D' (11 entries).
-// CHECK-37-NEXT:    0 | vbase_offset (0)
-// CHECK-37-NEXT:    1 | vbase_offset (8)
-// CHECK-37-NEXT:    2 | vcall_offset (0)
-// CHECK-37-NEXT:    3 | offset_to_top (0)
-// CHECK-37-NEXT:    4 | Test31::D RTTI
-// CHECK-37-NEXT:        -- (Test31::B, 0) vtable address --
-// CHECK-37-NEXT:        -- (Test31::D, 0) vtable address --
-// CHECK-37-NEXT:    5 | void Test31::D::f()
-// CHECK-37-NEXT:    6 | vbase_offset (-8)
-// CHECK-37-NEXT:    7 | vcall_offset (-8)
-// CHECK-37-NEXT:    8 | offset_to_top (-8)
-// CHECK-37-NEXT:    9 | Test31::D RTTI
-// CHECK-37-NEXT:        -- (Test31::C, 8) vtable address --
-// CHECK-37-NEXT:   10 | void Test31::D::f()
-// CHECK-37-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-struct D : virtual C {
-  virtual void f();
-};
-void D::f() { }
-
-}
-
-namespace Test32 {
-
-// Check that we correctly lay out the virtual bases of 'Test32::D'.
-
-struct A {
-  virtual void f();
-};
-
-struct B : virtual A { };
-struct C : A, virtual B { };
-struct D : virtual B { };
-
-// CHECK-38:      Virtual base offset offsets for 'Test32::E' (3 entries).
-// CHECK-38-NEXT:    Test32::A | -32
-// CHECK-38-NEXT:    Test32::B | -24
-// CHECK-38-NEXT:    Test32::D | -40
-struct E : C, virtual D {
-  virtual void f();
-};
-void E::f() { }
-
-}
-
-namespace Test33 {
-
-// Test that we don't emit too many vcall offsets in 'Test32::F'.
-
-struct A {
-  virtual void a();
-};
-
-struct B {
-  virtual void b();
-};
-
-struct C : virtual A, virtual B {
-  virtual void c();
-};
-
-struct D : virtual C { };
-
-struct E : A, D { 
-  virtual void e();
-};
-
-// CHECK-39:      Vtable for 'Test33::F' (30 entries).
-// CHECK-39-NEXT:    0 | vbase_offset (24)
-// CHECK-39-NEXT:    1 | vbase_offset (16)
-// CHECK-39-NEXT:    2 | vbase_offset (16)
-// CHECK-39-NEXT:    3 | vbase_offset (8)
-// CHECK-39-NEXT:    4 | offset_to_top (0)
-// CHECK-39-NEXT:    5 | Test33::F RTTI
-// CHECK-39-NEXT:        -- (Test33::A, 0) vtable address --
-// CHECK-39-NEXT:        -- (Test33::F, 0) vtable address --
-// CHECK-39-NEXT:    6 | void Test33::A::a()
-// CHECK-39-NEXT:    7 | void Test33::F::f()
-// CHECK-39-NEXT:    8 | vcall_offset (0)
-// CHECK-39-NEXT:    9 | vcall_offset (0)
-// CHECK-39-NEXT:   10 | vbase_offset (16)
-// CHECK-39-NEXT:   11 | vbase_offset (8)
-// CHECK-39-NEXT:   12 | vbase_offset (8)
-// CHECK-39-NEXT:   13 | offset_to_top (-8)
-// CHECK-39-NEXT:   14 | Test33::F RTTI
-// CHECK-39-NEXT:        -- (Test33::A, 8) vtable address --
-// CHECK-39-NEXT:        -- (Test33::E, 8) vtable address --
-// CHECK-39-NEXT:   15 | void Test33::A::a()
-// CHECK-39-NEXT:   16 | void Test33::E::e()
-// CHECK-39-NEXT:   17 | vbase_offset (0)
-// CHECK-39-NEXT:   18 | vcall_offset (0)
-// CHECK-39-NEXT:   19 | vbase_offset (8)
-// CHECK-39-NEXT:   20 | vbase_offset (0)
-// CHECK-39-NEXT:   21 | vcall_offset (0)
-// CHECK-39-NEXT:   22 | offset_to_top (-16)
-// CHECK-39-NEXT:   23 | Test33::F RTTI
-// CHECK-39-NEXT:        -- (Test33::A, 16) vtable address --
-// CHECK-39-NEXT:        -- (Test33::C, 16) vtable address --
-// CHECK-39-NEXT:        -- (Test33::D, 16) vtable address --
-// CHECK-39-NEXT:   24 | void Test33::A::a()
-// CHECK-39-NEXT:   25 | void Test33::C::c()
-// CHECK-39-NEXT:   26 | vcall_offset (0)
-// CHECK-39-NEXT:   27 | offset_to_top (-24)
-// CHECK-39-NEXT:   28 | Test33::F RTTI
-// CHECK-39-NEXT:        -- (Test33::B, 24) vtable address --
-// CHECK-39-NEXT:   29 | void Test33::B::b()
-struct F : virtual E, A {
-  virtual void f();
-};
-void F::f() { }
-
-}
-
-namespace Test34 {
-
-// Test that we lay out the construction vtable for 'Test34::E' in 'Test34::F' correctly.
-
-struct A {
-  virtual void a();
-};
-struct B : virtual A { };
-
-struct C : B, A {
-  virtual void c();
-};
-
-struct D : A, C { };
-
-struct E : virtual D {
-  virtual void e();
-};
-
-// CHECK-40:      Construction vtable for ('Test34::E', 0) in 'Test34::F' (22 entries).
-// CHECK-40-NEXT:    0 | vbase_offset (0)
-// CHECK-40-NEXT:    1 | vbase_offset (8)
-// CHECK-40-NEXT:    2 | vcall_offset (0)
-// CHECK-40-NEXT:    3 | offset_to_top (0)
-// CHECK-40-NEXT:    4 | Test34::E RTTI
-// CHECK-40-NEXT:        -- (Test34::A, 0) vtable address --
-// CHECK-40-NEXT:        -- (Test34::E, 0) vtable address --
-// CHECK-40-NEXT:    5 | void Test34::A::a()
-// CHECK-40-NEXT:    6 | void Test34::E::e()
-// CHECK-40-NEXT:    7 | vcall_offset (8)
-// CHECK-40-NEXT:    8 | vcall_offset (0)
-// CHECK-40-NEXT:    9 | vbase_offset (-8)
-// CHECK-40-NEXT:   10 | offset_to_top (-8)
-// CHECK-40-NEXT:   11 | Test34::E RTTI
-// CHECK-40-NEXT:        -- (Test34::A, 8) vtable address --
-// CHECK-40-NEXT:        -- (Test34::D, 8) vtable address --
-// CHECK-40-NEXT:   12 | void Test34::A::a()
-// CHECK-40-NEXT:   13 | vbase_offset (-16)
-// CHECK-40-NEXT:   14 | vcall_offset (-16)
-// CHECK-40-NEXT:   15 | offset_to_top (-16)
-// CHECK-40-NEXT:   16 | Test34::E RTTI
-// CHECK-40-NEXT:        -- (Test34::B, 16) vtable address --
-// CHECK-40-NEXT:        -- (Test34::C, 16) vtable address --
-// CHECK-40-NEXT:   17 | [unused] void Test34::A::a()
-// CHECK-40-NEXT:   18 | void Test34::C::c()
-// CHECK-40-NEXT:   19 | offset_to_top (-24)
-// CHECK-40-NEXT:   20 | Test34::E RTTI
-// CHECK-40-NEXT:        -- (Test34::A, 24) vtable address --
-// CHECK-40-NEXT:   21 | void Test34::A::a()
-struct F : E {
-  virtual void f();
-};
-void F::f() { }
-
-}
-
-namespace Test35 {
-
-// Test that we lay out the virtual bases of 'Test35::H' in the correct order.
-
-struct A {
- virtual void a();
-
- int i;
-};
-
-struct B : virtual A {
- virtual void b();
-};
-
-struct C {
- virtual void c();
-};
-
-struct D : C, virtual B {
- virtual void d();
-};
-
-struct E : D {
- virtual void e();
-
- bool b;
-};
-
-struct F : virtual D { };
-struct G : virtual E { };
-
-// CHECK-41:      Vtable for 'Test35::H' (32 entries).
-// CHECK-41-NEXT:    0 | vbase_offset (32)
-// CHECK-41-NEXT:    1 | vbase_offset (0)
-// CHECK-41-NEXT:    2 | vcall_offset (0)
-// CHECK-41-NEXT:    3 | vcall_offset (0)
-// CHECK-41-NEXT:    4 | vbase_offset (16)
-// CHECK-41-NEXT:    5 | vbase_offset (8)
-// CHECK-41-NEXT:    6 | offset_to_top (0)
-// CHECK-41-NEXT:    7 | Test35::H RTTI
-// CHECK-41-NEXT:        -- (Test35::C, 0) vtable address --
-// CHECK-41-NEXT:        -- (Test35::D, 0) vtable address --
-// CHECK-41-NEXT:        -- (Test35::F, 0) vtable address --
-// CHECK-41-NEXT:        -- (Test35::H, 0) vtable address --
-// CHECK-41-NEXT:    8 | void Test35::C::c()
-// CHECK-41-NEXT:    9 | void Test35::D::d()
-// CHECK-41-NEXT:   10 | void Test35::H::h()
-// CHECK-41-NEXT:   11 | vbase_offset (0)
-// CHECK-41-NEXT:   12 | vbase_offset (24)
-// CHECK-41-NEXT:   13 | vcall_offset (0)
-// CHECK-41-NEXT:   14 | vbase_offset (8)
-// CHECK-41-NEXT:   15 | offset_to_top (-8)
-// CHECK-41-NEXT:   16 | Test35::H RTTI
-// CHECK-41-NEXT:        -- (Test35::B, 8) vtable address --
-// CHECK-41-NEXT:        -- (Test35::G, 8) vtable address --
-// CHECK-41-NEXT:   17 | void Test35::B::b()
-// CHECK-41-NEXT:   18 | vcall_offset (0)
-// CHECK-41-NEXT:   19 | offset_to_top (-16)
-// CHECK-41-NEXT:   20 | Test35::H RTTI
-// CHECK-41-NEXT:        -- (Test35::A, 16) vtable address --
-// CHECK-41-NEXT:   21 | void Test35::A::a()
-// CHECK-41-NEXT:   22 | vcall_offset (0)
-// CHECK-41-NEXT:   23 | vcall_offset (0)
-// CHECK-41-NEXT:   24 | vcall_offset (0)
-// CHECK-41-NEXT:   25 | vbase_offset (-16)
-// CHECK-41-NEXT:   26 | vbase_offset (-24)
-// CHECK-41-NEXT:   27 | offset_to_top (-32)
-// CHECK-41-NEXT:   28 | Test35::H RTTI
-// CHECK-41-NEXT:        -- (Test35::C, 32) vtable address --
-// CHECK-41-NEXT:        -- (Test35::D, 32) vtable address --
-// CHECK-41-NEXT:        -- (Test35::E, 32) vtable address --
-// CHECK-41-NEXT:   29 | void Test35::C::c()
-// CHECK-41-NEXT:   30 | void Test35::D::d()
-// CHECK-41-NEXT:   31 | void Test35::E::e()
-
-// CHECK-41:      Virtual base offset offsets for 'Test35::H' (4 entries).
-// CHECK-41-NEXT:    Test35::A | -32
-// CHECK-41-NEXT:    Test35::B | -24
-// CHECK-41-NEXT:    Test35::D | -56
-// CHECK-41-NEXT:    Test35::E | -64
-struct H : F, G {
- virtual void h();
-};
-void H::h() { }
-
-}
-
-namespace Test36 {
-
-// Test that we don't mark B::f as unused in the vtable for D.
-
-struct A {
- virtual void f();
-};
-
-struct B : virtual A { };
-
-struct C : virtual A {
- virtual void f();
-};
-
-// CHECK-42:      Vtable for 'Test36::D' (12 entries).
-// CHECK-42-NEXT:    0 | vbase_offset (8)
-// CHECK-42-NEXT:    1 | vbase_offset (8)
-// CHECK-42-NEXT:    2 | vcall_offset (0)
-// CHECK-42-NEXT:    3 | offset_to_top (0)
-// CHECK-42-NEXT:    4 | Test36::D RTTI
-// CHECK-42-NEXT:        -- (Test36::C, 0) vtable address --
-// CHECK-42-NEXT:        -- (Test36::D, 0) vtable address --
-// CHECK-42-NEXT:    5 | void Test36::C::f()
-// CHECK-42-NEXT:    6 | void Test36::D::g()
-// CHECK-42-NEXT:    7 | vbase_offset (0)
-// CHECK-42-NEXT:    8 | vcall_offset (-8)
-// CHECK-42-NEXT:    9 | offset_to_top (-8)
-// CHECK-42-NEXT:   10 | Test36::D RTTI
-// CHECK-42-NEXT:        -- (Test36::A, 8) vtable address --
-// CHECK-42-NEXT:        -- (Test36::B, 8) vtable address --
-// CHECK-42-NEXT:   11 | void Test36::C::f()
-// CHECK-42-NEXT:        [this adjustment: 0 non-virtual, -24 vcall offset offset]
-struct D : virtual B, C {
- virtual void g();
-};
-void D::g() { }
-
-}
-
-namespace Test37 {
-
-// Test that we give C::f the right vtable index. (PR9660).
-struct A {
-	virtual A* f() = 0; 
-};
-
-struct B : virtual A {
-  virtual B* f();
-};
-
-// CHECK-43:      VTable indices for 'Test37::C' (1 entries).
-// CHECK-43-NEXT:    1 | Test37::C *Test37::C::f()
-struct C : B {
-  virtual C* f();
-};
-
-C* C::f() { return 0; }
-
-}
-
-// rdar://problem/10959710
-namespace Test38 {
-  struct A {
-    virtual void *foo();
-    virtual const void *foo() const;
-  };
-
-  // CHECK-44:      Vtable for 'Test38::B' (7 entries).
-  // CHECK-44-NEXT:    0 | vbase_offset (0)
-  // CHECK-44-NEXT:    1 | vcall_offset (0)
-  // CHECK-44-NEXT:    2 | vcall_offset (0)
-  // CHECK-44-NEXT:    3 | offset_to_top (0)
-  // CHECK-44-NEXT:    4 | Test38::B RTTI
-  // CHECK-44-NEXT:        -- (Test38::A, 0) vtable address --
-  // CHECK-44-NEXT:        -- (Test38::B, 0) vtable address --
-  // CHECK-44-NEXT:    5 | void *Test38::B::foo()
-  // CHECK-44-NEXT:    6 | const void *Test38::B::foo() const
-  class B : virtual public A {
-    void *foo();
-    const void *foo() const;
-  };
-
-  void *B::foo() { return 0; }
-}
-
-namespace Test39 {
-  struct A {
-    virtual void foo() = delete;
-  };
-
-  // CHECK-45:      Vtable for 'Test39::B' (4 entries).
-  // CHECK-45-NEXT:    0 | offset_to_top (0)
-  // CHECK-45-NEXT:    1 | Test39::B RTTI
-  // CHECK-45-NEXT:        -- (Test39::A, 0) vtable address --
-  // CHECK-45-NEXT:        -- (Test39::B, 0) vtable address --
-  // CHECK-45-NEXT:    2 | void Test39::A::foo() [deleted]
-  // CHECK-45-NEXT:    3 | void Test39::B::foo2()
-  struct B: A {
-    virtual void foo2();
-  };
-
-  void B::foo2() {
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,242 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o %t
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -fhidden-weak-vtables -emit-llvm -o %t.hidden
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -disable-llvm-optzns -O3 -emit-llvm -o %t.opt
-// RUN: FileCheck --check-prefix=CHECK-1 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-2 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-2-HIDDEN %s < %t.hidden
-// RUN: FileCheck --check-prefix=CHECK-3 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-4 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-5 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-5-HIDDEN %s < %t.hidden
-// RUN: FileCheck --check-prefix=CHECK-6 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-6-HIDDEN %s < %t.hidden
-// RUN: FileCheck --check-prefix=CHECK-7 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-8 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-9 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-9-OPT %s < %t.opt
-// RUN: FileCheck --check-prefix=CHECK-10 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-10-OPT %s < %t.opt
-// RUN: FileCheck --check-prefix=CHECK-11 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-12 %s < %t
-// RUN: FileCheck --check-prefix=CHECK-13 %s < %t
-
-namespace {
-  struct A {
-    virtual void f() { }
-  };
-}
-
-void f() { A b; }
-
-struct B {
-  B();
-  virtual void f();
-};
-
-B::B() { }
-
-struct C : virtual B {
-  C();
-  virtual void f() { } 
-};
-
-C::C() { } 
-
-struct D {
-  virtual void f();
-};
-
-void D::f() { }
-
-static struct : D { } e;
-
-// The destructor is the key function.
-template<typename T>
-struct E {
-  virtual ~E();
-};
-
-template<typename T> E<T>::~E() { }
-
-// Anchor is the key function
-template<>
-struct E<char> {
-  virtual void anchor();
-};
-
-void E<char>::anchor() { }
-
-template struct E<short>;
-extern template struct E<int>;
-
-void use_E() {
-  E<int> ei;
-  (void)ei;
-  E<long> el;
-  (void)el;
-}
-
-// No key function
-template<typename T>
-struct F {
-  virtual void foo() { }
-};
-
-// No key function
-template<>
-struct F<char> {
-  virtual void foo() { }
-};
-
-template struct F<short>;
-extern template struct F<int>;
-
-void use_F() {
-  F<char> fc;
-  fc.foo();
-  F<int> fi;
-  fi.foo();
-  F<long> fl;
-  (void)fl;
-}
-
-// B has a key function that is not defined in this translation unit so its vtable
-// has external linkage.
-// CHECK-1: @_ZTV1B = external unnamed_addr constant
-
-// C has no key function, so its vtable should have weak_odr linkage
-// and hidden visibility (rdar://problem/7523229).
-// CHECK-2: @_ZTV1C = linkonce_odr unnamed_addr constant
-// CHECK-2: @_ZTS1C = linkonce_odr constant
-// CHECK-2: @_ZTI1C = linkonce_odr unnamed_addr constant
-// CHECK-2: @_ZTT1C = linkonce_odr unnamed_addr constant
-// CHECK-2-HIDDEN: @_ZTV1C = linkonce_odr hidden unnamed_addr constant
-// CHECK-2-HIDDEN: @_ZTS1C = linkonce_odr constant
-// CHECK-2-HIDDEN: @_ZTI1C = linkonce_odr hidden unnamed_addr constant
-// CHECK-2-HIDDEN: @_ZTT1C = linkonce_odr hidden unnamed_addr constant
-
-// D has a key function that is defined in this translation unit so its vtable is
-// defined in the translation unit.
-// CHECK-3: @_ZTV1D = unnamed_addr constant
-// CHECK-3: @_ZTS1D = constant
-// CHECK-3: @_ZTI1D = unnamed_addr constant
-
-// E<char> is an explicit specialization with a key function defined
-// in this translation unit, so its vtable should have external
-// linkage.
-// CHECK-4: @_ZTV1EIcE = unnamed_addr constant
-// CHECK-4: @_ZTS1EIcE = constant
-// CHECK-4: @_ZTI1EIcE = unnamed_addr constant
-
-// E<short> is an explicit template instantiation with a key function
-// defined in this translation unit, so its vtable should have
-// weak_odr linkage.
-// CHECK-5: @_ZTV1EIsE = weak_odr unnamed_addr constant
-// CHECK-5: @_ZTS1EIsE = weak_odr constant
-// CHECK-5: @_ZTI1EIsE = weak_odr unnamed_addr constant
-// CHECK-5-HIDDEN: @_ZTV1EIsE = weak_odr unnamed_addr constant
-// CHECK-5-HIDDEN: @_ZTS1EIsE = weak_odr constant
-// CHECK-5-HIDDEN: @_ZTI1EIsE = weak_odr unnamed_addr constant
-
-// F<short> is an explicit template instantiation without a key
-// function, so its vtable should have weak_odr linkage
-// CHECK-6: @_ZTV1FIsE = weak_odr unnamed_addr constant
-// CHECK-6: @_ZTS1FIsE = weak_odr constant
-// CHECK-6: @_ZTI1FIsE = weak_odr unnamed_addr constant
-// CHECK-6-HIDDEN: @_ZTV1FIsE = weak_odr unnamed_addr constant
-// CHECK-6-HIDDEN: @_ZTS1FIsE = weak_odr constant
-// CHECK-6-HIDDEN: @_ZTI1FIsE = weak_odr unnamed_addr constant
-
-// E<long> is an implicit template instantiation with a key function
-// defined in this translation unit, so its vtable should have
-// linkonce_odr linkage.
-// CHECK-7: @_ZTV1EIlE = linkonce_odr unnamed_addr constant
-// CHECK-7: @_ZTS1EIlE = linkonce_odr constant
-// CHECK-7: @_ZTI1EIlE = linkonce_odr unnamed_addr constant
-
-// F<long> is an implicit template instantiation with no key function,
-// so its vtable should have linkonce_odr linkage.
-// CHECK-8: @_ZTV1FIlE = linkonce_odr unnamed_addr constant
-// CHECK-8: @_ZTS1FIlE = linkonce_odr constant
-// CHECK-8: @_ZTI1FIlE = linkonce_odr unnamed_addr constant
-
-// F<int> is an explicit template instantiation declaration without a
-// key function, so its vtable should have external linkage.
-// CHECK-9: @_ZTV1FIiE = external unnamed_addr constant
-// CHECK-9-OPT: @_ZTV1FIiE = available_externally unnamed_addr constant
-
-// E<int> is an explicit template instantiation declaration. It has a
-// key function that is not instantiated, so we should only reference
-// its vtable, not define it.
-// CHECK-10: @_ZTV1EIiE = external unnamed_addr constant
-// CHECK-10-OPT: @_ZTV1EIiE = available_externally unnamed_addr constant
-
-// The anonymous struct for e has no linkage, so the vtable should have
-// internal linkage.
-// CHECK-11: @"_ZTV3$_0" = internal unnamed_addr constant
-// CHECK-11: @"_ZTS3$_0" = internal constant
-// CHECK-11: @"_ZTI3$_0" = internal unnamed_addr constant
-
-// The A vtable should have internal linkage since it is inside an anonymous 
-// namespace.
-// CHECK-12: @_ZTVN12_GLOBAL__N_11AE = internal unnamed_addr constant
-// CHECK-12: @_ZTSN12_GLOBAL__N_11AE = internal constant
-// CHECK-12: @_ZTIN12_GLOBAL__N_11AE = internal unnamed_addr constant
-
-// F<char> is an explicit specialization without a key function, so
-// its vtable should have linkonce_odr linkage.
-// CHECK-13: @_ZTV1FIcE = linkonce_odr unnamed_addr constant
-// CHECK-13: @_ZTS1FIcE = linkonce_odr constant
-// CHECK-13: @_ZTI1FIcE = linkonce_odr unnamed_addr constant
-
-// RUN: FileCheck --check-prefix=CHECK-G %s < %t
-//
-// CHECK-G: @_ZTV1GIiE = linkonce_odr unnamed_addr constant
-template <typename T>
-class G {
-public:
-  G() {}
-  virtual void f0();
-  virtual void f1();
-};
-template <>
-void G<int>::f1() {}
-template <typename T>
-void G<T>::f0() {}
-void G_f0()  { new G<int>(); }
-
-// RUN: FileCheck --check-prefix=CHECK-H %s < %t
-
-// H<int> has a key function without a body but it's a template instantiation
-// so its VTable must be emitted.
-// CHECK-H: @_ZTV1HIiE = linkonce_odr unnamed_addr constant
-template <typename T>
-class H {
-public:
-  virtual ~H();
-};
-
-void use_H() {
-  H<int> h;
-}
-
-// RUN: FileCheck --check-prefix=CHECK-I %s < %t
-// RUN: FileCheck --check-prefix=CHECK-I-OPT %s < %t.opt
-
-// I<int> has an explicit instantiation declaration and needs a VTT and
-// construction vtables. We emit the VTT available_externally, but point it at
-// internal construction vtables because there is no way to form a reference to
-// the real construction vtables.
-
-// CHECK-I: @_ZTV1IIiE = external unnamed_addr constant
-// CHECK-I: @_ZTT1IIiE = external unnamed_addr constant
-// CHECK-I-NOT: @_ZTC1IIiE
-//
-// CHECK-I-OPT: @_ZTV1IIiE = available_externally unnamed_addr constant
-// CHECK-I-OPT: @_ZTT1IIiE = available_externally unnamed_addr constant {{.*}} @_ZTC1IIiE0_6VBase2
-// CHECK-I-OPT: @_ZTC1IIiE0_6VBase2 = internal unnamed_addr constant
-struct VBase1 { virtual void f(); }; struct VBase2 : virtual VBase1 {};
-template<typename T>
-struct I : VBase2 {};
-extern template struct I<int>;
-I<int> i;

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-struct Field {
-  Field();
-  ~Field();
-};
-
-struct Base {
-  Base();
-  ~Base();
-};
-
-struct A : Base {
-  A();
-  ~A();
-
-  virtual void f();
-  
-  Field field;
-};
-
-// CHECK: define void @_ZN1AC2Ev(%struct.A* %this) unnamed_addr
-// CHECK: call void @_ZN4BaseC2Ev(
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1A, i64 0, i64 2)
-// CHECK: call void @_ZN5FieldC1Ev(
-// CHECK: ret void
-A::A() { }
-
-// CHECK: define void @_ZN1AD2Ev(%struct.A* %this) unnamed_addr
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1A, i64 0, i64 2)
-// CHECK: call void @_ZN5FieldD1Ev(
-// CHECK: call void @_ZN4BaseD2Ev(
-// CHECK: ret void
-A::~A() { } 
-
-struct B : Base {
-  virtual void f();
-  
-  Field field;
-};
-
-void f() { B b; }
-
-// CHECK: define linkonce_odr void @_ZN1BC1Ev(%struct.B* %this) unnamed_addr
-// CHECK: call void @_ZN1BC2Ev(
-
-// CHECK: define linkonce_odr void @_ZN1BD1Ev(%struct.B* %this) unnamed_addr
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2)
-// CHECK: call void @_ZN5FieldD1Ev(
-// CHECK: call void @_ZN4BaseD2Ev(
-// CHECK: ret void
-
-// CHECK: define linkonce_odr void @_ZN1BC2Ev(%struct.B* %this) unnamed_addr
-// CHECK: call void @_ZN4BaseC2Ev(
-// CHECK: store i8** getelementptr inbounds ([3 x i8*]* @_ZTV1B, i64 0, i64 2)
-// CHECK: call void @_ZN5FieldC1Ev
-// CHECK: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtt-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtt-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/vtt-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - | FileCheck %s
-
-// Test1::B should just have a single entry in its VTT, which points to the vtable.
-namespace Test1 {
-struct A { };
-
-struct B : virtual A { 
-  virtual void f();
-};
-
-void B::f() { } 
-}
-
-// Check that we don't add a secondary virtual pointer for Test2::A, since Test2::A doesn't have any virtual member functions or bases.
-namespace Test2 {
-  struct A { };
-
-  struct B : A { virtual void f(); };
-  struct C : virtual B { };
-
-  C c;
-}
-
-// This is the sample from the C++ Itanium ABI, p2.6.2.
-namespace Test3 {
-  class A1 { int i; };
-  class A2 { int i; virtual void f(); };
-  class V1 : public A1, public A2 { int i; };
-  class B1 { int i; };
-  class B2 { int i; };
-  class V2 : public B1, public B2, public virtual V1 { int i; };
-  class V3 {virtual void g(); };
-  class C1 : public virtual V1 { int i; };
-  class C2 : public virtual V3, virtual V2 { int i; };
-  class X1 { int i; };
-  class C3 : public X1 { int i; };
-  class D : public C1, public C2, public C3 { int i;  };
-  
-  D d;
-}
-
-// This is the sample from the C++ Itanium ABI, p2.6.2, with the change suggested
-// (making A2 a virtual base of V1)
-namespace Test4 {
-  class A1 { int i; };
-  class A2 { int i; virtual void f(); };
-  class V1 : public A1, public virtual A2 { int i; };
-  class B1 { int i; };
-  class B2 { int i; };
-  class V2 : public B1, public B2, public virtual V1 { int i; };
-  class V3 {virtual void g(); };
-  class C1 : public virtual V1 { int i; };
-  class C2 : public virtual V3, virtual V2 { int i; };
-  class X1 { int i; };
-  class C3 : public X1 { int i; };
-  class D : public C1, public C2, public C3 { int i;  };
-  
-  D d;
-}
-
-namespace Test5 {
-  struct A {
-    virtual void f() = 0;
-    virtual void anchor();
-  };
-
-  void A::anchor() {
-  }
-}
-
-namespace Test6 {
-  struct A {
-    virtual void f() = delete;
-    virtual void anchor();
-  };
-
-  void A::anchor() {
-  }
-}
-
-// CHECK: @_ZTTN5Test11BE = unnamed_addr constant [1 x i8*] [i8* bitcast (i8** getelementptr inbounds ([4 x i8*]* @_ZTVN5Test11BE, i64 0, i64 3) to i8*)]
-// CHECK: @_ZTVN5Test51AE = unnamed_addr constant [4 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTIN5Test51AE to i8*), i8* bitcast (void ()* @__cxa_pure_virtual to i8*), i8* bitcast (void (%"struct.Test5::A"*)* @_ZN5Test51A6anchorEv to i8*)]
-// CHECK: @_ZTVN5Test61AE = unnamed_addr constant [4 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTIN5Test61AE to i8*), i8* bitcast (void ()* @__cxa_deleted_virtual to i8*), i8* bitcast (void (%"struct.Test6::A"*)* @_ZN5Test61A6anchorEv to i8*)]
-// CHECK: @_ZTTN5Test41DE = linkonce_odr unnamed_addr constant [19 x i8*] [i8* bitcast (i8** getelementptr inbounds ([25 x i8*]* @_ZTVN5Test41DE, i64 0, i64 6) to i8*), i8* bitcast (i8** getelementptr inbounds ([11 x i8*]* @_ZTCN5Test41DE0_NS_2C1E, i64 0, i64 4) to i8*), i8* bitcast (i8** getelementptr inbounds ([11 x i8*]* @_ZTCN5Test41DE0_NS_2C1E, i64 0, i64 7) to i8*), i8* bitcast (i8** getelementptr inbounds ([11 x i8*]* @_ZTCN5Test41DE0_NS_2C1E, i64 0, i64 10) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTCN5Test41DE16_NS_2C2E, i64 0, i64 7) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTCN5Test41DE16_NS_2C2E, i64 0, i64 7) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTCN5Test41DE16_NS_2C2E, i64 0, i64 12) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTCN5Test41DE16_NS_2C2E, i64 0, i64 15) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTCN5Test41DE16_NS_2C2E, i64 0, i64 18) to i8*), i8* bitcast (i8** getelementptr inbounds ([25 x i8*]* @_ZTVN5Test41DE, i64 0, i64 17) to i8*), i8* bitcast (i8** getelementptr inbounds ([25 x i8*]* @_ZTVN5Test41DE, i64 0, i64 20) to i8*), i8* bitcast (i8** getelementptr inbounds ([25 x i8*]* @_ZTVN5Test41DE, i64 0, i64 13) to i8*), i8* bitcast (i8** getelementptr inbounds ([25 x i8*]* @_ZTVN5Test41DE, i64 0, i64 13) to i8*), i8* bitcast (i8** getelementptr inbounds ([25 x i8*]* @_ZTVN5Test41DE, i64 1, i64 0) to i8*), i8* bitcast (i8** getelementptr inbounds ([7 x i8*]* @_ZTCN5Test41DE40_NS_2V1E, i64 0, i64 3) to i8*), i8* bitcast (i8** getelementptr inbounds ([7 x i8*]* @_ZTCN5Test41DE40_NS_2V1E, i64 0, i64 6) to i8*), i8* bitcast (i8** getelementptr inbounds ([11 x i8*]* @_ZTCN5Test41DE72_NS_2V2E, i64 0, i64 4) to i8*), i8* bitcast (i8** getelementptr inbounds ([11 x i8*]* @_ZTCN5Test41DE72_NS_2V2E, i64 0, i64 7) to i8*), i8* bitcast (i8** getelementptr inbounds ([11 x i8*]* @_ZTCN5Test41DE72_NS_2V2E, i64 0, i64 10) to i8*)] 
-// CHECK: @_ZTTN5Test31DE = linkonce_odr unnamed_addr constant [13 x i8*] [i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTVN5Test31DE, i64 0, i64 5) to i8*), i8* bitcast (i8** getelementptr inbounds ([7 x i8*]* @_ZTCN5Test31DE0_NS_2C1E, i64 0, i64 3) to i8*), i8* bitcast (i8** getelementptr inbounds ([7 x i8*]* @_ZTCN5Test31DE0_NS_2C1E, i64 0, i64 6) to i8*), i8* bitcast (i8** getelementptr inbounds ([14 x i8*]* @_ZTCN5Test31DE16_NS_2C2E, i64 0, i64 6) to i8*), i8* bitcast (i8** getelementptr inbounds ([14 x i8*]* @_ZTCN5Test31DE16_NS_2C2E, i64 0, i64 6) to i8*), i8* bitcast (i8** getelementptr inbounds ([14 x i8*]* @_ZTCN5Test31DE16_NS_2C2E, i64 0, i64 10) to i8*), i8* bitcast (i8** getelementptr inbounds ([14 x i8*]* @_ZTCN5Test31DE16_NS_2C2E, i64 0, i64 13) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTVN5Test31DE, i64 0, i64 15) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTVN5Test31DE, i64 0, i64 11) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTVN5Test31DE, i64 0, i64 11) to i8*), i8* bitcast (i8** getelementptr inbounds ([19 x i8*]* @_ZTVN5Test31DE, i64 1, i64 0) to i8*), i8* bitcast (i8** getelementptr inbounds ([7 x i8*]* @_ZTCN5Test31DE64_NS_2V2E, i64 0, i64 3) to i8*), i8* bitcast (i8** getelementptr inbounds ([7 x i8*]* @_ZTCN5Test31DE64_NS_2V2E, i64 0, i64 6) to i8*)] 
-// CHECK: @_ZTTN5Test21CE = linkonce_odr unnamed_addr constant [2 x i8*] [i8* bitcast (i8** getelementptr inbounds ([5 x i8*]* @_ZTVN5Test21CE, i64 0, i64 4) to i8*), i8* bitcast (i8** getelementptr inbounds ([5 x i8*]* @_ZTVN5Test21CE, i64 0, i64 4) to i8*)] 

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/warn-padded-packed.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/warn-padded-packed.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/warn-padded-packed.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-none-none -Wpadded -Wpacked -verify %s -emit-llvm-only
-
-struct S1 {
-  char c;
-  short s; // expected-warning {{padding struct 'S1' with 1 byte to align 's'}}
-  long l; // expected-warning {{padding struct 'S1' with 4 bytes to align 'l'}}
-};
-
-struct S2 { // expected-warning {{padding size of 'S2' with 3 bytes to alignment boundary}}
-  int i;
-  char c;
-};
-
-struct S3 {
-  char c;
-  int i;
-} __attribute__((packed));
-
-struct S4 {
-  int i; // expected-warning {{packed attribute is unnecessary for 'i'}}
-  char c;
-} __attribute__((packed));
-
-struct S5 {
-  char c;
-  union {
-    char c;
-    int i;
-  } u; // expected-warning {{padding struct 'S5' with 3 bytes to align 'u'}}
-};
-
-struct S6 { // expected-warning {{padding size of 'S6' with 30 bits to alignment boundary}}
-  int i : 2;
-};
-
-struct S7 { // expected-warning {{padding size of 'S7' with 7 bytes to alignment boundary}}
-  char c;
-  virtual void m();
-};
-
-struct B {
-  char c;
-};
-
-struct S8 : B {
-  int i; // expected-warning {{padding struct 'S8' with 3 bytes to align 'i'}}
-};
-
-struct S9 { // expected-warning {{packed attribute is unnecessary for 'S9'}}
-  int x; // expected-warning {{packed attribute is unnecessary for 'x'}}
-  int y; // expected-warning {{packed attribute is unnecessary for 'y'}}
-} __attribute__((packed));
-
-struct S10 { // expected-warning {{packed attribute is unnecessary for 'S10'}}
-  int x; // expected-warning {{packed attribute is unnecessary for 'x'}}
-  char a,b,c,d;
-} __attribute__((packed));
-
-
-struct S11 {
-  bool x;
-  char a,b,c,d;
-} __attribute__((packed));
-
-struct S12 {
-  bool b : 1;
-  char c; // expected-warning {{padding struct 'S12' with 7 bits to align 'c'}}
-};
-
-struct S13 { // expected-warning {{padding size of 'S13' with 6 bits to alignment boundary}}
-  char c;
-  bool b : 10; // expected-warning {{size of bit-field 'b' (10 bits) exceeds the size of its type}}
-};
-
-// The warnings are emitted when the layout of the structs is computed, so we have to use them.
-void f(S1*, S2*, S3*, S4*, S5*, S6*, S7*, S8*, S9*, S10*, S11*, S12*, S13*) { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/weak-extern-typeinfo.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/weak-extern-typeinfo.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/weak-extern-typeinfo.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-// rdar://10246395
-
-#define WEAK __attribute__ ((weak)) 
-
-class WEAK A {
-  virtual void foo();
-};
-
-class B : public A {
-  virtual void foo();
-};
-void A::foo() { }
-void B::foo() { }
-
-class T {};
-class T1 {};
-
-class C : public T1, public B, public T {
-  virtual void foo();
-};
-void C::foo() { }
-
-class V1 : public virtual A {
-  virtual void foo();
-};
-
-class V2 : public virtual V1 {
-  virtual void foo();
-};
-void V1::foo() { }
-void V2::foo() { }
-
-// CHECK: @_ZTS1A = weak_odr constant
-// CHECK: @_ZTI1A = weak_odr unnamed_addr constant
-// CHECK: @_ZTS1B = weak_odr constant
-// CHECK: @_ZTI1B = weak_odr unnamed_addr constant
-// CHECK: @_ZTS1C = weak_odr constant
-// CHECK: @_ZTS2T1 = linkonce_odr constant
-// CHECK: @_ZTI2T1 = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTS1T = linkonce_odr constant
-// CHECK: @_ZTI1T = linkonce_odr unnamed_addr constant
-// CHECK: @_ZTI1C = weak_odr unnamed_addr constant
-// CHECK: @_ZTS2V1 = weak_odr constant
-// CHECK: @_ZTI2V1 = weak_odr unnamed_addr constant
-// CHECK: @_ZTS2V2 = weak_odr constant
-// CHECK: @_ZTI2V2 = weak_odr unnamed_addr constant

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/weak-external.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/weak-external.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/weak-external.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang -fexceptions %s -S -emit-llvm -o - | FileCheck %s
-// PR4262
-
-// CHECK-NOT: _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag
-
-// The "basic_string" extern template instantiation declaration is supposed to
-// suppress the implicit instantiation of non-inline member functions. Make sure
-// that we suppress the implicit instantiation of non-inline member functions
-// defined out-of-line. That we aren't instantiating the basic_string
-// constructor when we shouldn't be. Such an instantiation forces the implicit
-// instantiation of _S_construct<const char*>. Since _S_construct is a member
-// template, it's instantiation is *not* suppressed (despite being in
-// basic_string<char>), so we would emit it as a weak definition.
-
-#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default")))
-#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__))
-#define _LIBCPP_VISIBLE __attribute__ ((__visibility__("default")))
-#if (__has_feature(cxx_noexcept))
-#  define _NOEXCEPT noexcept
-#  define _NOEXCEPT_(x) noexcept(x)
-#else
-#  define _NOEXCEPT throw()
-#  define _NOEXCEPT_(x)
-#endif
-
-namespace std  // purposefully not using versioning namespace
-{
-
-template<class charT> struct char_traits;
-template<class T>     class allocator;
-template <class _CharT,
-          class _Traits = char_traits<_CharT>,
-          class _Allocator = allocator<_CharT> >
-    class _LIBCPP_VISIBLE basic_string;
-typedef basic_string<char, char_traits<char>, allocator<char> > string;
-
-class _LIBCPP_EXCEPTION_ABI exception
-{
-public:
-    _LIBCPP_INLINE_VISIBILITY exception() _NOEXCEPT {}
-    virtual ~exception() _NOEXCEPT;
-    virtual const char* what() const _NOEXCEPT;
-};
-
-class _LIBCPP_EXCEPTION_ABI runtime_error
-    : public exception
-{
-private:
-    void* __imp_;
-public:
-    explicit runtime_error(const string&);
-    explicit runtime_error(const char*);
-
-    runtime_error(const runtime_error&) _NOEXCEPT;
-    runtime_error& operator=(const runtime_error&) _NOEXCEPT;
-
-    virtual ~runtime_error() _NOEXCEPT;
-
-    virtual const char* what() const _NOEXCEPT;
-};
-
-}
-
-void dummysymbol() {
-  throw(std::runtime_error("string"));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/x86_32-arguments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/x86_32-arguments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/x86_32-arguments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -emit-llvm -o - %s | FileCheck %s
-
-// Non-trivial dtors, should both be passed indirectly.
-struct S {
-  ~S();
-  short s;
-};
-
-// CHECK: define void @_Z1fv(%struct.S* noalias sret %
-S f() { return S(); }
-// CHECK: define void @_Z1f1S(%struct.S*)
-void f(S) { }
-
-// Non-trivial dtors, should both be passed indirectly.
-class C {
-public:
-  ~C();
-  double c;
-};
-
-// CHECK: define void @_Z1gv(%class.C* noalias sret %
-C g() { return C(); }
-
-// CHECK: define void @_Z1f1C(%class.C*) 
-void f(C) { }
-
-
-
-
-// PR7058 - Missing byval on MI thunk definition.
-
-// CHECK: define void @_ZThn4_N18BasicAliasAnalysis13getModRefInfoE8CallSite
-// ...
-// CHECK: %struct.CallSite* byval align 4 %CS)
-struct CallSite {
-  unsigned Ptr;
-  CallSite(unsigned XX) : Ptr(XX) {}
-};
-
-struct AliasAnalysis {
-  virtual void xyz();
-  virtual void getModRefInfo(CallSite CS) = 0;
-};
-
-struct ModulePass {
-  virtual void xx();
-};
-
-struct BasicAliasAnalysis : public ModulePass, public AliasAnalysis {
-  void getModRefInfo(CallSite CS);
-};
-
-void BasicAliasAnalysis::getModRefInfo(CallSite CS) {
-}
-
-// Check various single element struct type conditions.
-//
-// PR7098.
-
-// CHECK: define i64 @_Z2f0v()
-struct s0_0 { int x; };
-struct s0_1 : s0_0 { int* y; };
-s0_1 f0() { return s0_1(); }
-
-// CHECK: define i32 @_Z2f1v()
-struct s1_0 { int x; };
-struct s1_1 : s1_0 { };
-s1_1 f1() { return s1_1(); }
-
-// CHECK: define double @_Z2f2v()
-struct s2_0 { double x; };
-struct s2_1 : s2_0 { };
-s2_1 f2() { return s2_1(); }
-
-// CHECK: define double @_Z2f3v()
-struct s3_0 { };
-struct s3_1 { double x; };
-struct s3_2 : s3_0, s3_1 { };
-s3_2 f3() { return s3_2(); }
-
-// CHECK: define i64 @_Z2f4v()
-struct s4_0 { float x; };
-struct s4_1 { float x; };
-struct s4_2 : s4_0, s4_1 { };
-s4_2 f4() { return s4_2(); }
-
-// CHECK: define i32* @_Z2f5v()
-struct s5 { s5(); int &x; };
-s5 f5() { return s5(); }
-
-// CHECK: define i32 @_Z4f6_0M2s6i(i32 %a)
-// CHECK: define i64 @_Z4f6_1M2s6FivE({ i32, i32 }* byval align 4)
-// FIXME: It would be nice to avoid byval on the previous case.
-struct s6 {};
-typedef int s6::* s6_mdp;
-typedef int (s6::*s6_mfp)();
-s6_mdp f6_0(s6_mdp a) { return a; }
-s6_mfp f6_1(s6_mfp a) { return a; }
-
-// CHECK: define double @_Z2f7v()
-struct s7_0 { unsigned : 0; };
-struct s7_1 { double x; };
-struct s7 : s7_0, s7_1 { };
-s7 f7() { return s7(); }
-
-// CHECK: define void @_Z2f8v(%struct.s8* noalias sret %agg.result)
-struct s8_0 { };
-struct s8_1 { double x; };
-struct s8 { s8_0 a; s8_1 b; };
-s8 f8() { return s8(); }
-
-// CHECK: define void @_Z2f9v(%struct.s9* noalias sret %agg.result)
-struct s9_0 { unsigned : 0; };
-struct s9_1 { double x; };
-struct s9 { s9_0 a; s9_1 b; };
-s9 f9() { return s9(); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenCXX/x86_64-arguments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenCXX/x86_64-arguments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenCXX/x86_64-arguments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,183 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-// Basic base class test.
-struct f0_s0 { unsigned a; };
-struct f0_s1 : public f0_s0 { void *b; };
-// CHECK: define void @_Z2f05f0_s1(i32 %a0.coerce0, i8* %a0.coerce1)
-void f0(f0_s1 a0) { }
-
-// Check with two eight-bytes in base class.
-struct f1_s0 { unsigned a; unsigned b; float c; };
-struct f1_s1 : public f1_s0 { float d;};
-// CHECK: define void @_Z2f15f1_s1(i64 %a0.coerce0, <2 x float> %a0.coerce1)
-void f1(f1_s1 a0) { }
-
-// Check with two eight-bytes in base class and merge.
-struct f2_s0 { unsigned a; unsigned b; float c; };
-struct f2_s1 : public f2_s0 { char d;};
-// CHECK: define void @_Z2f25f2_s1(i64 %a0.coerce0, i64 %a0.coerce1)
-void f2(f2_s1 a0) { }
-
-// PR5831
-// CHECK: define void @_Z2f34s3_1(i64 %x.coerce)
-struct s3_0 {};
-struct s3_1 { struct s3_0 a; long b; };
-void f3(struct s3_1 x) {}
-
-// CHECK: define i64 @_Z4f4_0M2s4i(i64 %a)
-// CHECK: define {{.*}} @_Z4f4_1M2s4FivE(i64 %a.coerce0, i64 %a.coerce1)
-struct s4 {};
-typedef int s4::* s4_mdp;
-typedef int (s4::*s4_mfp)();
-s4_mdp f4_0(s4_mdp a) { return a; }
-s4_mfp f4_1(s4_mfp a) { return a; }
-
-
-namespace PR7523 {
-struct StringRef {
-  char *a;
-};
-
-void AddKeyword(StringRef, int x);
-
-void foo() {
-  // CHECK: define void @_ZN6PR75233fooEv()
-  // CHECK: call void @_ZN6PR752310AddKeywordENS_9StringRefEi(i8* {{.*}}, i32 4)
-  AddKeyword(StringRef(), 4);
-}
-}
-
-namespace PR7742 { // Also rdar://8250764
-  struct s2 {
-    float a[2];
-  };
-  
-  struct c2 : public s2 {};
-  
-  // CHECK: define <2 x float> @_ZN6PR77423fooEPNS_2c2E(%"struct.PR7742::c2"* %P)
-  c2 foo(c2 *P) {
-    return c2();
-  }
-  
-}
-
-namespace PR5179 {
-  struct B {};
-
-  struct B1 : B {
-    int* pa;
-  };
-
-  struct B2 : B {
-    B1 b1;
-  };
-
-  // CHECK: define i8* @_ZN6PR51793barENS_2B2E(i32* %b2.coerce)
-  const void *bar(B2 b2) {
-    return b2.b1.pa;
-  }
-}
-
-namespace test5 {
-  struct Xbase { };
-  struct Empty { };
-  struct Y;
-  struct X : public Xbase {
-    Empty empty;
-    Y f();
-  };
-  struct Y : public X { 
-    Empty empty;
-  };
-  X getX();
-  int takeY(const Y&, int y);
-  void g() {
-    // rdar://8340348 - The temporary for the X object needs to have a defined
-    // address when passed into X::f as 'this'.
-    takeY(getX().f(), 42);
-  }
-  // CHECK: void @_ZN5test51gEv()
-  // CHECK: alloca %"struct.test5::Y"
-  // CHECK: alloca %"struct.test5::X"
-  // CHECK: alloca %"struct.test5::Y"
-}
-
-
-// rdar://8360877
-namespace test6 {
-  struct outer {
-    int x;
-    struct epsilon_matcher {} e;
-    int f;
-  };
-
-  int test(outer x) {
-    return x.x + x.f;
-  }
-  // CHECK: define i32 @_ZN5test64testENS_5outerE(i64 %x.coerce0, i32 %x.coerce1)
-}
-
-namespace test7 {
-  struct StringRef {char* ptr; long len; };
-  class A { public: ~A(); };
-  A x(A, A, long, long, StringRef) { return A(); }
-  // Check that the StringRef is passed byval instead of expanded
-  // (which would split it between registers and memory).
-  // rdar://problem/9686430
-  // CHECK: define void @_ZN5test71xENS_1AES0_llNS_9StringRefE({{.*}} byval align 8)
-
-  // And a couple extra related tests:
-  A y(A, long double, long, long, StringRef) { return A(); }
-  // CHECK: define void @_ZN5test71yENS_1AEellNS_9StringRefE({{.*}} i8*
-  struct StringDouble {char * ptr; double d;};
-  A z(A, A, A, A, A, StringDouble) { return A(); }
-  A zz(A, A, A, A, StringDouble) { return A(); }
-  // CHECK: define void @_ZN5test71zENS_1AES0_S0_S0_S0_NS_12StringDoubleE({{.*}} byval align 8)
-  // CHECK: define void @_ZN5test72zzENS_1AES0_S0_S0_NS_12StringDoubleE({{.*}} i8*
-}
-
-namespace test8 {
-  // CHECK: declare void @_ZN5test83fooENS_1BE(%"class.test8::B"* byval align 8)
-  class A {
-   char big[17];
-  };
-
-  class B : public A {};
-
-  void foo(B b);
-  void bar() {
-   B b;
-   foo(b);
-  }
-}
-
-// PR4242
-namespace test9 {
-  // Large enough to be passed indirectly.
-  struct S { void *data[3]; };
-
-  struct T { void *data[2]; };
-
-  // CHECK: define void @_ZN5test93fooEPNS_1SEPNS_1TE([[S:%.*]]*, [[T:%.*]]*)
-  void foo(S*, T*) {}
-
-  // CHECK: define void @_ZN5test91aEiiiiNS_1TEPv([[S]]* noalias sret {{%.*}}, i32, i32, i32, i32, [[T]]* byval align 8, i8*)
-  S a(int, int, int, int, T, void*) {
-    return S();
-  }
-
-  // CHECK: define [[S]]* @_ZN5test91bEPNS_1SEiiiiNS_1TEPv([[S]]* {{%.*}}, i32, i32, i32, i32, [[T:%.*]]* byval align 8, i8*)
-  S* b(S* sret, int, int, int, int, T, void*) {
-    return sret;
-  }
-
-  // CHECK: define void @_ZN5test91cEiiiNS_1TEPv([[S]]* noalias sret {{%.*}}, i32, i32, i32, i8* {{%.*}}, i8* {{%.*}}, i8*)
-  S c(int, int, int, T, void*) {
-    return S();
-  }
-
-  // CHECK: define [[S]]* @_ZN5test91dEPNS_1SEiiiNS_1TEPv([[S]]* {{%.*}}, i32, i32, i32, i8* {{%.*}}, i8* {{%.*}}, i8*)
-  S* d(S* sret, int, int, int, T, void*) {
-    return sret;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-04-03-ObjcEH.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-04-03-ObjcEH.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-04-03-ObjcEH.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang -fexceptions -S -emit-llvm %s -o -
-
- at interface B 
--(int)bar;
- at end
-
- at interface A
--(void) Foo:(int) state;
- at end
-
- at implementation A 
-- (void) Foo:(int) state {
-
-        int wasResponded = 0;
-        @try {
-        if (state) {
-           B * b = 0;
-           @try { }
-           @finally {
-             wasResponded = ![b bar];
-           }
-        }
-        }
-        @finally {
-        }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-05-02-Strong.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-05-02-Strong.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-05-02-Strong.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -S %s -fobjc-gc -o /dev/null
-typedef int NSInteger;
-typedef struct _NSRect {
-  int origin;
-  int size;
-} NSRect;
-
-__attribute__((objc_gc(strong))) NSRect *_cachedRectArray;
-extern const NSRect NSZeroRect;
- at interface A{
-}
--(void)bar:(NSInteger *)rectCount;
- at end
-
- at implementation A
-
--(void)bar:(NSInteger *)rectCount {
-  NSRect appendRect = NSZeroRect;
-
-  _cachedRectArray[*rectCount - 1] = NSZeroRect;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-10-18-ProDescriptor.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-10-18-ProDescriptor.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-10-18-ProDescriptor.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
- at protocol O
- at end
- at interface O < O > {
-}
- at end
-struct A {
-};
- at protocol AB
-- (unsigned) ver;
- at end
- at interface AGy:O < AB > {
-}
- at end
- at implementation AGy
-- (unsigned) ver {
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-10-23-GC-WriteBarrier.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-10-23-GC-WriteBarrier.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2007-10-23-GC-WriteBarrier.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null -fobjc-gc
-// rdar://5541393
-
-typedef unsigned int NSUInteger;
-__attribute__((objc_gc(strong))) float *_scores;
-
-void foo(int i, float f) {
-  _scores[i] = f; 
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-08-25-incompatible-cond-expr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-08-25-incompatible-cond-expr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-08-25-incompatible-cond-expr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at protocol P0
- at end
- at interface A <P0>
- at end
-
-id f0(int a, id<P0> x, A* p) {
-  return a ? x : p;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-10-23-invalid-icmp.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-10-23-invalid-icmp.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-10-23-invalid-icmp.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at protocol P @end
-
-int f0(id<P> d) {
-  return (d != ((void*) 0));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-10-3-EhValue.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-10-3-EhValue.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-10-3-EhValue.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang -fexceptions -fobjc-exceptions -S -emit-llvm  %s -o /dev/null
-
- at interface Object {
- at public
-     Class isa;
-}
-+initialize;
-+alloc;
-+new;
-+free;
--free;
-+(Class)class;
--(Class)class;
--init;
--superclass;
--(const char *)name;
- at end
-
- at interface Frob: Object
- at end
-
- at implementation Frob: Object
- at end
-
-static Frob* _connection = ((void *)0);
-
-extern void abort(void);
-
-void test (Object* sendPort)
-{
- int cleanupPorts = 1;
- Frob* receivePort = ((void *)0);
-
- @try {
-  receivePort = (Frob *) -1;
-  _connection = (Frob *) -1;
-  receivePort = ((void *)0);
-  sendPort = ((void *)0);
-  cleanupPorts = 0;
-  @throw [Object new];
- }
- @catch(Frob *obj) {
-  if(!(0)) abort();
- }
- @catch(id exc) {
-  if(!(!receivePort)) abort();
-  if(!(!sendPort)) abort();
-  if(!(!cleanupPorts)) abort();
- }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-12-Metadata.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-12-Metadata.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-12-Metadata.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 %s -o /dev/null
-
- at interface A
- at end
- at protocol P
- at end
- at interface B : A <P>
-{
-}
- at end
- at implementation B
-- (void)test {
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-24-ConstCFStrings.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-24-ConstCFStrings.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-24-ConstCFStrings.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 %s -o - | FileCheck %s
-
-// CHECK: _unnamed_cfstring_
-
- at class NSString;
-
- at interface A
-- (void)bork:(NSString*)msg;
- at end
-
-void func(A *a) {
-  [a bork:@"Hello world!"];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-25-Blocks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-25-Blocks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2008-11-25-Blocks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fblocks -emit-llvm %s -o /dev/null
-// rdar://6394879
-
- at interface bork
-- (id)B:(void (^)())blk;
-- (void)C;
- at end
- at implementation bork
-- (id)B:(void (^)())blk {
-  __attribute__((__blocks__(byref))) bork* new = ((void *)0);
-  blk();
-}
-- (void)C {
-  __attribute__((__blocks__(byref))) id var;
-  [self B:^() {}];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-01-21-invalid-debug-info.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-01-21-invalid-debug-info.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-01-21-invalid-debug-info.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -S -g -o %t.s %s
-
-// FIXME: This test case can be removed at some point (since it will
-// no longer effectively test anything). The reason it was causing
-// trouble was the synthesized self decl in im1 was causing the debug
-// info for I1* to be generated, but referring to an invalid compile
-// unit. This was later referred to by f1 and created ill formed debug
-// information.
-
- at interface I1 @end
-
- at implementation I1
--im0 { return 0; }
- at end
-
-I1 *f1(void) { return 0; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-01-26-WriteBarrier-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-01-26-WriteBarrier-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-01-26-WriteBarrier-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fblocks -emit-llvm %s -fobjc-gc -o - | FileCheck %s
-
-// CHECK: objc_assign_strongCast
-// rdar://5541393
-
-typedef __SIZE_TYPE__ size_t;
-void * malloc(size_t size);
-
-typedef struct {
-    void (^ivarBlock)(void);
-} StructWithBlock_t;
-
-int main(int argc, char *argv[]) {
-   StructWithBlock_t *swbp = (StructWithBlock_t *)malloc(sizeof(StructWithBlock_t*));
-   __block   int i = 10;
-   // assigning a Block into an struct slot should elicit a write-barrier under GC
-   swbp->ivarBlock = ^ { ++i; };
-   return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-02-05-VolatileProp.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-02-05-VolatileProp.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-02-05-VolatileProp.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang -fexceptions -S -emit-llvm %s -o /dev/null -pedantic-errors
-// rdar://6551276
-
-void foo(const unsigned short *);
-void bar() {
-  unsigned short *s[3];
-  int i;
-  @try { } @catch (id anException) { }
-  foo(2+s[i]);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-08-05-utf16.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-08-05-utf16.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2009-08-05-utf16.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -w -x objective-c %s -o - | FileCheck %s
-// rdar://7095855 rdar://7115749
-
-// CHECK: internal unnamed_addr constant [6 x i16] [i16 105, i16 80, i16 111, i16 100, i16 8482, i16 0], align 2
-void *P = @"iPod™";

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-01-utf16-with-null.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-01-utf16-with-null.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-01-utf16-with-null.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
-// rdar://7589850
-
-// CHECK-NOT: __ustring
-void *P = @"good\0bye";

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-09-DbgSelf.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-09-DbgSelf.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-09-DbgSelf.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -emit-llvm -g < %s | grep  "\"self\", metadata" 
-// Test to check that "self" argument is assigned a location.
-
- at interface Foo 
--(void) Bar: (int)x ;
- at end
-
-
- at implementation Foo
--(void) Bar: (int)x 
-{
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-15-Dbg-MethodStart.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-15-Dbg-MethodStart.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-15-Dbg-MethodStart.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -emit-llvm -g < %s | grep  subprogram | grep "i32 9"
-// Test to check that subprogram start location.
-
- at interface Foo
--(int) barMethod;
- at end
-
- at implementation Foo
--(int) barMethod {
-  int i = 0;
-  int j = 1;
-  int k = 1;
-  return i + j + k;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-23-DbgInheritance.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-23-DbgInheritance.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-02-23-DbgInheritance.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -g -o - | FileCheck %s
-// CHECK-NOT: DW_TAG_member
-// Interface P should not be a member of interface I in debug info.
- at interface P 
- at end
-
- at interface I : P 
- at end
-
-void fn(I *iptr) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-03-17-StructRef.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-03-17-StructRef.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2010-03-17-StructRef.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -o - | FileCheck %s
-// Bitfield references must not touch memory outside of the enclosing
-// struct.   Radar 7639995
-typedef signed char BOOL;
- at protocol NSObject
-- (id)init;
- at end
- at interface NSObject <NSObject> {}
- at end
- at interface IMAVChatParticipant : NSObject {
-  int _ardRole;
-  int _state;
-  int _avRelayStatus;
-  int _chatEndedReason;
-  int _chatError;
-  unsigned _sendingAudio:1;
-  unsigned _sendingVideo:1;
-  unsigned _sendingAuxVideo:1;
-  unsigned _audioMuted:1;
-  unsigned _videoPaused:1;
-  unsigned _networkStalled:1;
-  unsigned _isInitiator:1;
-  unsigned _isAOLInterop:1;
-  unsigned _isRecording:1;
-  unsigned _isUsingICE:1;
-}
- at end
- at implementation IMAVChatParticipant
-- (id) init {
-  self = [super init];
-  if ( self ) {
-    BOOL blah = (BOOL)1;
-    // We're expecting these three bitfield assignments will generate i8 stores.
-    _sendingAudio = (BOOL)1;
-    _isUsingICE = (BOOL)1;
-    _isUsingICE = blah;
-    // CHECK: store i8
-    // CHECK: store i8
-    // CHECK: store i8
-  }
-  return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2011-03-08-IVarLookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2011-03-08-IVarLookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/2011-03-08-IVarLookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang -S -emit-llvm -m64 -fobjc-abi-version=2 %s -o /dev/null
-
-typedef unsigned int UInt_t;
-
- at interface A
-{
- at protected
-  UInt_t _f1;
-}
- at end
-
- at interface B : A { }
- at end
-
- at interface A ()
- at property (assign) UInt_t f1;
- at end
-
- at interface B ()
- at property (assign) int x;
- at end
-
- at implementation B
- at synthesize x;
-- (id) init
-{
-  _f1 = 0;
-  return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/Inputs/literal-support.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/Inputs/literal-support.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/Inputs/literal-support.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-#ifndef OBJC_LITERAL_SUPPORT_H
-#define OBJC_LITERAL_SUPPORT_H
-
-typedef unsigned char BOOL;
-
- at interface NSNumber @end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
- at end
-
- at interface NSArray
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
- at end
-
-#endif // OBJC_LITERAL_SUPPORT_H

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-arm.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-arm.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-arm.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple armv7-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -o - %s | FileCheck %s
-
-id test0(void) {
-  extern id test0_helper(void);
-  // CHECK:      [[T0:%.*]] = call arm_aapcscc i8* @test0_helper()
-  // CHECK-NEXT: ret i8* [[T0]]
-  return test0_helper();
-}
-
-void test1(void) {
-  extern id test1_helper(void);
-  // CHECK:      [[T0:%.*]] = call arm_aapcscc i8* @test1_helper()
-  // CHECK-NEXT: call void asm sideeffect "mov\09r7, r7
-  // CHECK-NEXT: [[T1:%.*]] = call arm_aapcscc i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: store i8* [[T1]],
-  // CHECK-NEXT: call arm_aapcscc void @objc_storeStrong(
-  // CHECK-NEXT: ret void
-  id x = test1_helper();
-}
-
-// rdar://problem/12133032
- at class A;
-A *test2(void) {
-  extern A *test2_helper(void);
-  // CHECK:      [[T0:%.*]] = call arm_aapcscc [[A:%.*]]* @test2_helper()
-  // CHECK-NEXT: ret [[A]]* [[T0]]
-  return test2_helper();
-}
-
-id test3(void) {
-  extern A *test3_helper(void);
-  // CHECK:      [[T0:%.*]] = call arm_aapcscc [[A:%.*]]* @test3_helper()
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*
-  // CHECK-NEXT: ret i8* [[T1]]
-  return test3_helper();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-block-copy-escape.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-block-copy-escape.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-block-copy-escape.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -fblocks -emit-llvm %s -o - | FileCheck %s
-
-typedef void (^block_t)(void);
-void use_block(block_t);
-void use_int(int);
-
-// rdar://problem/10211676
-
-void test0(int i) {
-  block_t block = ^{ use_int(i); };
-  // CHECK:   define void @test0(
-  // CHECK:     call i8* @objc_retainBlock(i8* {{%.*}}) [[NUW:#[0-9]+]], !clang.arc.copy_on_escape
-  // CHECK:     ret void
-}
-
-void test1(int i) {
-  id block = ^{ use_int(i); };
-  // CHECK:   define void @test1(
-  // CHECK:     call i8* @objc_retainBlock(i8* {{%.*}}) [[NUW]]
-  // CHECK-NOT: !clang.arc.copy_on_escape
-  // CHECK:     ret void
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-blocks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-blocks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-blocks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,693 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=CHECK-UNOPT %s
-
-// This shouldn't crash.
-void test0(id (^maker)(void)) {
-  maker();
-}
-
-int (^test1(int x))(void) {
-  // CHECK:    define i32 ()* @test1(
-  // CHECK:      [[X:%.*]] = alloca i32,
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK-NEXT: store i32 {{%.*}}, i32* [[X]]
-  // CHECK:      [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to i32 ()*
-  // CHECK-NEXT: [[T1:%.*]] = bitcast i32 ()* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]]) [[NUW:#[0-9]+]]
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i32 ()*
-  // CHECK-NEXT: [[T4:%.*]] = bitcast i32 ()* [[T3]] to i8*
-  // CHECK-NEXT: [[T5:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T4]]) [[NUW]]
-  // CHECK-NEXT: [[T6:%.*]] = bitcast i8* [[T5]] to i32 ()*
-  // CHECK-NEXT: ret i32 ()* [[T6]]
-  return ^{ return x; };
-}
-
-void test2(id x) {
-// CHECK:    define void @test2(
-// CHECK:      [[X:%.*]] = alloca i8*,
-// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-// CHECK-NEXT: [[PARM:%.*]] = call i8* @objc_retain(i8* {{%.*}})
-// CHECK-NEXT: store i8* [[PARM]], i8** [[X]]
-// CHECK-NEXT: [[SLOTREL:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK:      [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[X]],
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-// CHECK-NEXT: store i8* [[T1]], i8** [[SLOT]],
-// CHECK-NEXT: bitcast
-// CHECK-NEXT: call void @test2_helper(
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[SLOTREL]]
-// CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[X]]
-// CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release
-// CHECK-NEXT: ret void
-  extern void test2_helper(id (^)(void));
-  test2_helper(^{ return x; });
-
-// CHECK:    define internal void @__copy_helper_block_
-// CHECK:      [[T0:%.*]] = load i8**
-// CHECK-NEXT: [[SRC:%.*]] = bitcast i8* [[T0]] to [[BLOCK_T]]*
-// CHECK-NEXT: [[T0:%.*]] = load i8**
-// CHECK-NEXT: [[DST:%.*]] = bitcast i8* [[T0]] to [[BLOCK_T]]*
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[SRC]], i32 0, i32 5
-// CHECK-NEXT: [[T1:%.*]] = load i8** [[T0]]
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]]) [[NUW]]
-// CHECK-NEXT: ret void
-
-// CHECK:    define internal void @__destroy_helper_block_
-// CHECK:      [[T0:%.*]] = load i8**
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[BLOCK_T]]*
-// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[T1]], i32 0, i32 5
-// CHECK-NEXT: [[T3:%.*]] = load i8** [[T2]]
-// CHECK-NEXT: call void @objc_release(i8* [[T3]])
-// CHECK-NEXT: ret void
-}
-
-void test3(void (^sink)(id*)) {
-  __strong id strong;
-  sink(&strong);
-
-  // CHECK:    define void @test3(
-  // CHECK:      [[SINK:%.*]] = alloca void (i8**)*
-  // CHECK-NEXT: [[STRONG:%.*]] = alloca i8*
-  // CHECK-NEXT: [[TEMP:%.*]] = alloca i8*
-  // CHECK-NEXT: bitcast void (i8**)* {{%.*}} to i8*
-  // CHECK-NEXT: call i8* @objc_retain(
-  // CHECK-NEXT: bitcast i8*
-  // CHECK-NEXT: store void (i8**)* {{%.*}}, void (i8**)** [[SINK]]
-  // CHECK-NEXT: store i8* null, i8** [[STRONG]]
-
-  // CHECK-NEXT: load void (i8**)** [[SINK]]
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: [[BLOCK:%.*]] = bitcast
-  // CHECK-NEXT: [[V:%.*]] = load i8** [[STRONG]]
-  // CHECK-NEXT: store i8* [[V]], i8** [[TEMP]]
-  // CHECK-NEXT: [[F0:%.*]] = load i8**
-  // CHECK-NEXT: [[F1:%.*]] = bitcast i8* [[F0]] to void (i8*, i8**)*
-  // CHECK-NEXT: call void [[F1]](i8* [[BLOCK]], i8** [[TEMP]])
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[TEMP]]
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-  // CHECK-NEXT: call void (...)* @clang.arc.use(i8* [[V]]) [[NUW]]
-  // CHECK-NEXT: [[T2:%.*]] = load i8** [[STRONG]]
-  // CHECK-NEXT: store i8* [[T1]], i8** [[STRONG]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T2]])
-
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[STRONG]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-
-  // CHECK-NEXT: load void (i8**)** [[SINK]]
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: call void @objc_release
-  // CHECK-NEXT: ret void
-
-}
-
-void test4(void) {
-  id test4_source(void);
-  void test4_helper(void (^)(void));
-  __block id var = test4_source();
-  test4_helper(^{ var = 0; });
-
-  // CHECK:    define void @test4()
-  // CHECK:      [[VAR:%.*]] = alloca [[BYREF_T:%.*]],
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_T]]* [[VAR]], i32 0, i32 2
-  // 0x02000000 - has copy/dispose helpers strong
-  // CHECK-NEXT: store i32 838860800, i32* [[T0]]
-  // CHECK:      [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]]* [[VAR]], i32 0, i32 6
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @test4_source()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: store i8* [[T1]], i8** [[SLOT]]
-  // CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]]* [[VAR]], i32 0, i32 6
-  // 0x42800000 - has signature, copy/dispose helpers, as well as BLOCK_HAS_EXTENDED_LAYOUT
-  // CHECK:      store i32 -1040187392,
-  // CHECK:      [[T0:%.*]] = bitcast [[BYREF_T]]* [[VAR]] to i8*
-  // CHECK-NEXT: store i8* [[T0]], i8**
-  // CHECK:      call void @test4_helper(
-  // CHECK:      [[T0:%.*]] = bitcast [[BYREF_T]]* [[VAR]] to i8*
-  // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[SLOT]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK: ret void
-
-  // CHECK:    define internal void @__Block_byref_object_copy_
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_T]]* {{%.*}}, i32 0, i32 6
-  // CHECK-NEXT: load i8**
-  // CHECK-NEXT: bitcast i8* {{%.*}} to [[BYREF_T]]*
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[BYREF_T]]* {{%.*}}, i32 0, i32 6
-  // CHECK-NEXT: [[T2:%.*]] = load i8** [[T1]]
-  // CHECK-NEXT: store i8* [[T2]], i8** [[T0]]
-  // CHECK-NEXT: store i8* null, i8** [[T1]]
-
-  // CHECK:    define internal void @__Block_byref_object_dispose_
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_T]]* {{%.*}}, i32 0, i32 6
-  // CHECK-NEXT: [[T1:%.*]] = load i8** [[T0]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-
-  // CHECK:    define internal void @__test4_block_invoke
-  // CHECK:      [[SLOT:%.*]] = getelementptr inbounds {{.*}}, i32 0, i32 6
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[SLOT]], align 8
-  // CHECK-NEXT: store i8* null, i8** [[SLOT]],
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: ret void
-
-  // CHECK:    define internal void @__copy_helper_block_
-  // CHECK:      call void @_Block_object_assign(i8* {{%.*}}, i8* {{%.*}}, i32 8)
-
-  // CHECK:    define internal void @__destroy_helper_block_
-  // CHECK:      call void @_Block_object_dispose(i8* {{%.*}}, i32 8)
-}
-
-void test5(void) {
-  extern id test5_source(void);
-  void test5_helper(void (^)(void));
-  __unsafe_unretained id var = test5_source();
-  test5_helper(^{ (void) var; });
-
-  // CHECK:    define void @test5()
-  // CHECK:      [[VAR:%.*]] = alloca i8*
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK: [[T0:%.*]] = call i8* @test5_source()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: store i8* [[T1]], i8** [[VAR]],
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  // 0x40800000 - has signature but no copy/dispose, as well as BLOCK_HAS_EXTENDED_LAYOUT
-  // CHECK:      store i32 -1073741824, i32*
-  // CHECK:      [[CAPTURE:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[VAR]]
-  // CHECK-NEXT: store i8* [[T0]], i8** [[CAPTURE]]
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to
-  // CHECK: call void @test5_helper
-  // CHECK-NEXT: ret void
-}
-
-void test6(void) {
-  id test6_source(void);
-  void test6_helper(void (^)(void));
-  __block __weak id var = test6_source();
-  test6_helper(^{ var = 0; });
-
-  // CHECK:    define void @test6()
-  // CHECK:      [[VAR:%.*]] = alloca [[BYREF_T:%.*]],
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_T]]* [[VAR]], i32 0, i32 2
-  // 0x02000000 - has copy/dispose helpers weak
-  // CHECK-NEXT: store i32 1107296256, i32* [[T0]]
-  // CHECK:      [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]]* [[VAR]], i32 0, i32 6
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @test6_source()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: call i8* @objc_initWeak(i8** [[SLOT]], i8* [[T1]])
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  // CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]]* [[VAR]], i32 0, i32 6
-  // 0x42800000 - has signature, copy/dispose helpers, as well as BLOCK_HAS_EXTENDED_LAYOUT
-  // CHECK:      store i32 -1040187392,
-  // CHECK:      [[T0:%.*]] = bitcast [[BYREF_T]]* [[VAR]] to i8*
-  // CHECK-NEXT: store i8* [[T0]], i8**
-  // CHECK:      call void @test6_helper(
-  // CHECK:      [[T0:%.*]] = bitcast [[BYREF_T]]* [[VAR]] to i8*
-  // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)
-  // CHECK-NEXT: call void @objc_destroyWeak(i8** [[SLOT]])
-  // CHECK: ret void
-
-  // CHECK:    define internal void @__Block_byref_object_copy_
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_T]]* {{%.*}}, i32 0, i32 6
-  // CHECK-NEXT: load i8**
-  // CHECK-NEXT: bitcast i8* {{%.*}} to [[BYREF_T]]*
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[BYREF_T]]* {{%.*}}, i32 0, i32 6
-  // CHECK-NEXT: call void @objc_moveWeak(i8** [[T0]], i8** [[T1]])
-
-  // CHECK:    define internal void @__Block_byref_object_dispose_
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_T]]* {{%.*}}, i32 0, i32 6
-  // CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]])
-
-  // CHECK:    define internal void @__test6_block_invoke
-  // CHECK:      [[SLOT:%.*]] = getelementptr inbounds {{.*}}, i32 0, i32 6
-  // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[SLOT]], i8* null)
-  // CHECK-NEXT: ret void
-
-  // CHECK:    define internal void @__copy_helper_block_
-  // 0x8 - FIELD_IS_BYREF (no FIELD_IS_WEAK because clang in control)
-  // CHECK:      call void @_Block_object_assign(i8* {{%.*}}, i8* {{%.*}}, i32 8)
-
-  // CHECK:    define internal void @__destroy_helper_block_
-  // 0x8 - FIELD_IS_BYREF (no FIELD_IS_WEAK because clang in control)
-  // CHECK:      call void @_Block_object_dispose(i8* {{%.*}}, i32 8)
-}
-
-void test7(void) {
-  id test7_source(void);
-  void test7_helper(void (^)(void));
-  void test7_consume(id);
-  __weak id var = test7_source();
-  test7_helper(^{ test7_consume(var); });
-
-  // CHECK:    define void @test7()
-  // CHECK:      [[VAR:%.*]] = alloca i8*,
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK:      [[T0:%.*]] = call i8* @test7_source()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: call i8* @objc_initWeak(i8** [[VAR]], i8* [[T1]])
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  // 0x42800000 - has signature, copy/dispose helpers, as well as BLOCK_HAS_EXTENDED_LAYOUT
-  // CHECK:      store i32 -1040187392,
-  // CHECK:      [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_loadWeakRetained(i8** [[VAR]])
-  // CHECK-NEXT: call i8* @objc_initWeak(i8** [[SLOT]], i8* [[T0]])
-  // CHECK:      call void @test7_helper(
-  // CHECK-NEXT: call void @objc_destroyWeak(i8** {{%.*}})
-  // CHECK-NEXT: call void @objc_destroyWeak(i8** [[VAR]])
-  // CHECK: ret void
-
-  // CHECK:    define internal void @__test7_block_invoke
-  // CHECK:      [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]]* {{%.*}}, i32 0, i32 5
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_loadWeakRetained(i8** [[SLOT]])
-  // CHECK-NEXT: call void @test7_consume(i8* [[T0]])
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK: ret void
-
-  // CHECK:    define internal void @__copy_helper_block_
-  // CHECK:      getelementptr
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: call void @objc_copyWeak(
-
-  // CHECK:    define internal void @__destroy_helper_block_
-  // CHECK:      getelementptr
-  // CHECK-NEXT: call void @objc_destroyWeak(
-}
-
- at interface Test8 @end
- at implementation Test8
-- (void) test {
-// CHECK:    define internal void @"\01-[Test8 test]"
-// CHECK:      [[SELF:%.*]] = alloca [[TEST8:%.*]]*,
-// CHECK-NEXT: alloca i8*
-// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-// CHECK: store
-// CHECK-NEXT: store
-// CHECK:      [[D0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK:      [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-NEXT: [[T1:%.*]] = load [[TEST8]]** [[SELF]],
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST8]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]])
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[TEST8]]*
-// CHECK-NEXT: store [[TEST8]]* [[T4]], [[TEST8]]** [[T0]]
-// CHECK-NEXT: bitcast [[BLOCK_T]]* [[BLOCK]] to
-// CHECK: call void @test8_helper(
-// CHECK-NEXT: [[T1:%.*]] = load [[TEST8]]** [[D0]]
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST8]]* [[T1]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T2]])
-// CHECK: ret void
-
-  extern void test8_helper(void (^)(void));
-  test8_helper(^{ (void) self; });
-}
- at end
-
-id test9(void) {
-  typedef id __attribute__((ns_returns_retained)) blocktype(void);
-  extern void test9_consume_block(blocktype^);
-  return ^blocktype {
-      extern id test9_produce(void);
-      return test9_produce();
-  }();
-
-// CHECK:    define i8* @test9(
-// CHECK:      load i8** getelementptr
-// CHECK-NEXT: bitcast i8*
-// CHECK-NEXT: call i8* 
-// CHECK-NEXT: tail call i8* @objc_autoreleaseReturnValue
-// CHECK-NEXT: ret i8*
-
-// CHECK:      call i8* @test9_produce()
-// CHECK-NEXT: call i8* @objc_retain
-// CHECK-NEXT: ret i8*
-}
-
-// rdar://problem/9814099
-// Test that we correctly initialize __block variables
-// when the initialization captures the variable.
-void test10a(void) {
-  __block void (^block)(void) = ^{ block(); };
-  // CHECK:    define void @test10a()
-  // CHECK:      [[BYREF:%.*]] = alloca [[BYREF_T:%.*]],
-
-  // Zero-initialization before running the initializer.
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_T]]* [[BYREF]], i32 0, i32 6
-  // CHECK-NEXT: store void ()* null, void ()** [[T0]], align 8
-
-  // Run the initializer as an assignment.
-  // CHECK:      [[T0:%.*]] = bitcast void ()* {{%.*}} to i8*
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainBlock(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to void ()*
-  // CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds [[BYREF_T]]* [[BYREF]], i32 0, i32 1
-  // CHECK-NEXT: [[T4:%.*]] = load [[BYREF_T]]** [[T3]]
-  // CHECK-NEXT: [[T5:%.*]] = getelementptr inbounds [[BYREF_T]]* [[T4]], i32 0, i32 6
-  // CHECK-NEXT: [[T6:%.*]] = load void ()** [[T5]], align 8
-  // CHECK-NEXT: store void ()* {{%.*}}, void ()** [[T5]], align 8
-  // CHECK-NEXT: [[T7:%.*]] = bitcast void ()* [[T6]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T7]])
-
-  // Destroy at end of function.
-  // CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]]* [[BYREF]], i32 0, i32 6
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[BYREF_T]]* [[BYREF]] to i8*
-  // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)
-  // CHECK-NEXT: [[T1:%.*]] = load void ()** [[SLOT]]
-  // CHECK-NEXT: [[T2:%.*]] = bitcast void ()* [[T1]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T2]])
-  // CHECK: ret void
-}
-
-// <rdar://problem/10402698>: do this copy and dispose with
-// objc_retainBlock/release instead of _Block_object_assign/destroy.
-// We can also use _Block_object_assign/destroy with
-// BLOCK_FIELD_IS_BLOCK as long as we don't pass BLOCK_BYREF_CALLER.
-
-// CHECK: define internal void @__Block_byref_object_copy
-// CHECK:      [[D0:%.*]] = load i8** {{%.*}}
-// CHECK-NEXT: [[D1:%.*]] = bitcast i8* [[D0]] to [[BYREF_T]]*
-// CHECK-NEXT: [[D2:%.*]] = getelementptr inbounds [[BYREF_T]]* [[D1]], i32 0, i32 6
-// CHECK-NEXT: [[S0:%.*]] = load i8** {{%.*}}
-// CHECK-NEXT: [[S1:%.*]] = bitcast i8* [[S0]] to [[BYREF_T]]*
-// CHECK-NEXT: [[S2:%.*]] = getelementptr inbounds [[BYREF_T]]* [[S1]], i32 0, i32 6
-// CHECK-NEXT: [[T0:%.*]] = load void ()** [[S2]], align 8
-// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*
-// CHECK-NEXT: store void ()* [[T3]], void ()** [[D2]], align 8
-// CHECK: ret void
-
-// CHECK: define internal void @__Block_byref_object_dispose
-// CHECK:      [[T0:%.*]] = load i8** {{%.*}}
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[BYREF_T]]*
-// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[BYREF_T]]* [[T1]], i32 0, i32 6
-// CHECK-NEXT: [[T3:%.*]] = load void ()** [[T2]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast void ()* [[T3]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T4]])
-// CHECK-NEXT: ret void
-
-// Test that we correctly assign to __block variables when the
-// assignment captures the variable.
-void test10b(void) {
-  __block void (^block)(void);
-  block = ^{ block(); };
-
-  // CHECK:    define void @test10b()
-  // CHECK:      [[BYREF:%.*]] = alloca [[BYREF_T:%.*]],
-
-  // Zero-initialize.
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_T]]* [[BYREF]], i32 0, i32 6
-  // CHECK-NEXT: store void ()* null, void ()** [[T0]], align 8
-
-  // CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]]* [[BYREF]], i32 0, i32 6
-
-  // The assignment.
-  // CHECK:      [[T0:%.*]] = bitcast void ()* {{%.*}} to i8*
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainBlock(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to void ()*
-  // CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds [[BYREF_T]]* [[BYREF]], i32 0, i32 1
-  // CHECK-NEXT: [[T4:%.*]] = load [[BYREF_T]]** [[T3]]
-  // CHECK-NEXT: [[T5:%.*]] = getelementptr inbounds [[BYREF_T]]* [[T4]], i32 0, i32 6
-  // CHECK-NEXT: [[T6:%.*]] = load void ()** [[T5]], align 8
-  // CHECK-NEXT: store void ()* {{%.*}}, void ()** [[T5]], align 8
-  // CHECK-NEXT: [[T7:%.*]] = bitcast void ()* [[T6]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T7]])
-
-  // Destroy at end of function.
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[BYREF_T]]* [[BYREF]] to i8*
-  // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)
-  // CHECK-NEXT: [[T1:%.*]] = load void ()** [[SLOT]]
-  // CHECK-NEXT: [[T2:%.*]] = bitcast void ()* [[T1]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T2]])
-  // CHECK: ret void
-}
-
-// rdar://problem/10088932
-void test11_helper(id);
-void test11a(void) {
-  int x;
-  test11_helper(^{ (void) x; });
-
-  // CHECK:    define void @test11a()
-  // CHECK:      [[X:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]], align 8
-  // CHECK:      [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*
-  // CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*
-  // CHECK-NEXT: [[T4:%.*]] = bitcast void ()* [[T3]] to i8*
-  // CHECK-NEXT: call void @test11_helper(i8* [[T4]])
-  // CHECK-NEXT: [[T5:%.*]] = bitcast void ()* [[T3]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T5]])
-  // CHECK: ret void
-}
-void test11b(void) {
-  int x;
-  id b = ^{ (void) x; };
-
-  // CHECK:    define void @test11b()
-  // CHECK:      [[X:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[B:%.*]] = alloca i8*, align 8
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]], align 8
-  // CHECK:      [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*
-  // CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*
-  // CHECK-NEXT: [[T4:%.*]] = bitcast void ()* [[T3]] to i8*
-  // CHECK-NEXT: store i8* [[T4]], i8** [[B]], align 8
-  // CHECK-NEXT: [[T5:%.*]] = load i8** [[B]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T5]])
-  // CHECK: ret void
-}
-
-// rdar://problem/9979150
- at interface Test12
- at property (strong) void(^ablock)(void);
- at property (nonatomic, strong) void(^nblock)(void);
- at end
- at implementation Test12
- at synthesize ablock, nblock;
-// CHECK:    define internal void ()* @"\01-[Test12 ablock]"(
-// CHECK:    call i8* @objc_getProperty(i8* {{%.*}}, i8* {{%.*}}, i64 {{%.*}}, i1 zeroext true)
-
-// CHECK:    define internal void @"\01-[Test12 setAblock:]"(
-// CHECK:    call void @objc_setProperty(i8* {{%.*}}, i8* {{%.*}}, i64 {{%.*}}, i8* {{%.*}}, i1 zeroext true, i1 zeroext true)
-
-// CHECK:    define internal void ()* @"\01-[Test12 nblock]"(
-// CHECK:    call i8* @objc_getProperty(i8* {{%.*}}, i8* {{%.*}}, i64 {{%.*}}, i1 zeroext false)
-
-// CHECK:    define internal void @"\01-[Test12 setNblock:]"(
-// CHECK:    call void @objc_setProperty(i8* {{%.*}}, i8* {{%.*}}, i64 {{%.*}}, i8* {{%.*}}, i1 zeroext false, i1 zeroext true)
- at end
-
-// rdar://problem/10131784
-void test13(id x) {
-  extern void test13_helper(id);
-  extern void test13_use(void(^)(void));
-
-  void (^b)(void) = (x ? ^{test13_helper(x);} : 0);
-  test13_use(b);
-
-  // CHECK:    define void @test13(
-  // CHECK:      [[X:%.*]] = alloca i8*, align 8
-  // CHECK-NEXT: [[B:%.*]] = alloca void ()*, align 8
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:.*]], align 8
-  // CHECK-NEXT: [[CLEANUP_ACTIVE:%.*]] = alloca i1
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* {{%.*}})
-  // CHECK-NEXT: store i8* [[T0]], i8** [[X]], align 8
-  // CHECK-NEXT: [[CLEANUP_ADDR:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]], align 8
-  // CHECK-NEXT: [[T1:%.*]] = icmp ne i8* [[T0]], null
-  // CHECK-NEXT: store i1 false, i1* [[CLEANUP_ACTIVE]]
-  // CHECK-NEXT: br i1 [[T1]],
-
-  // CHECK-NOT:  br
-  // CHECK:      [[CAPTURE:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]], align 8
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-  // CHECK-NEXT: store i8* [[T1]], i8** [[CAPTURE]], align 8
-  // CHECK-NEXT: store i1 true, i1* [[CLEANUP_ACTIVE]]
-  // CHECK-NEXT: bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*
-  // CHECK-NEXT: br label
-  // CHECK:      br label
-  // CHECK:      [[T0:%.*]] = phi void ()*
-  // CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*
-  // CHECK-NEXT: store void ()* [[T3]], void ()** [[B]], align 8
-  // CHECK-NEXT: [[T0:%.*]] = load void ()** [[B]], align 8
-  // CHECK-NEXT: call void @test13_use(void ()* [[T0]])
-  // CHECK-NEXT: [[T0:%.*]] = load void ()** [[B]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-
-  // CHECK-NEXT: [[T0:%.*]] = load i1* [[CLEANUP_ACTIVE]]
-  // CHECK-NEXT: br i1 [[T0]]
-  // CHECK:      [[T0:%.*]] = load i8** [[CLEANUP_ADDR]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: br label
-
-  // CHECK:      [[T0:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: ret void
-}
-
-// <rdar://problem/10907510>
-void test14() {
-  void (^const x[1])(void) = { ^{} };
-}
-
-// rdar://11149025
-// Don't make invalid ASTs and crash.
-void test15_helper(void (^block)(void), int x);
-void test15(int a) {
-  test15_helper(^{ (void) a; }, ({ a; }));
-}
-
-// rdar://11016025
-void test16() {
-  void (^BLKVAR)(void) = ^{ BLKVAR(); };
-
-  // CHECK: define void @test16(
-  // CHECK: [[BLKVAR:%.*]]  = alloca void ()*, align 8
-  // CHECK-NEXT:  [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK-NEXT:  [[SLOTREL:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-  // CHECK-NEXT:  store void ()* null, void ()** [[BLKVAR]], align 8
-}
-
-// rdar://12151005
-//
-// This is an intentional exception to our conservative jump-scope
-// checking for full-expressions containing block literals with
-// non-trivial cleanups: if the block literal appears in the operand
-// of a return statement, there's no need to extend its lifetime.
-id (^test17(id self, int which))(void) {
-  switch (which) {
-  case 1: return ^{ return self; };
-  case 0: return ^{ return self; };
-  }
-  return (void*) 0;
-}
-// CHECK:    define i8* ()* @test17(
-// CHECK:      [[RET:%.*]] = alloca i8* ()*, align
-// CHECK-NEXT: [[SELF:%.*]] = alloca i8*,
-// CHECK:      [[B0:%.*]] = alloca [[BLOCK:<.*>]], align
-// CHECK:      [[B1:%.*]] = alloca [[BLOCK]], align
-// CHECK:      [[T0:%.*]] = call i8* @objc_retain(i8*
-// CHECK-NEXT: store i8* [[T0]], i8** [[SELF]], align
-// CHECK-NOT:  objc_retain
-// CHECK-NOT:  objc_release
-// CHECK:      [[DESTROY:%.*]] = getelementptr inbounds [[BLOCK]]* [[B0]], i32 0, i32 5
-// CHECK-NOT:  objc_retain
-// CHECK-NOT:  objc_release
-// CHECK:      [[T0:%.*]] = getelementptr inbounds [[BLOCK]]* [[B0]], i32 0, i32 5
-// CHECK-NEXT: [[T1:%.*]] = load i8** [[SELF]], align
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-// CHECK-NEXT: store i8* [[T2]], i8** [[T0]],
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[BLOCK]]* [[B0]] to i8* ()*
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* ()* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i8* ()*
-// CHECK-NEXT: store i8* ()* [[T3]], i8* ()** [[RET]]
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[DESTROY]]
-// CHECK-NEXT: call void @objc_release(i8* [[T0]])
-// CHECK-NEXT: store i32
-// CHECK-NEXT: br label
-// CHECK-NOT:  objc_retain
-// CHECK-NOT:  objc_release
-// CHECK:      [[DESTROY:%.*]] = getelementptr inbounds [[BLOCK]]* [[B1]], i32 0, i32 5
-// CHECK-NOT:  objc_retain
-// CHECK-NOT:  objc_release
-// CHECK:      [[T0:%.*]] = getelementptr inbounds [[BLOCK]]* [[B1]], i32 0, i32 5
-// CHECK-NEXT: [[T1:%.*]] = load i8** [[SELF]], align
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-// CHECK-NEXT: store i8* [[T2]], i8** [[T0]],
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[BLOCK]]* [[B1]] to i8* ()*
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* ()* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i8* ()*
-// CHECK-NEXT: store i8* ()* [[T3]], i8* ()** [[RET]]
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[DESTROY]]
-// CHECK-NEXT: call void @objc_release(i8* [[T0]])
-// CHECK-NEXT: store i32
-// CHECK-NEXT: br label
-
-void test18(id x) {
-// CHECK-UNOPT:    define void @test18(
-// CHECK-UNOPT:      [[X:%.*]] = alloca i8*,
-// CHECK-UNOPT-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-// CHECK-UNOPT-NEXT: store i8* null, i8** [[X]]
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[X]], 
-// CHECK-UNOPT-NEXT: [[SLOTREL:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-UNOPT:      [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-UNOPT-NEXT: [[T0:%.*]] = load i8** [[X]],
-// CHECK-UNOPT-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-// CHECK-UNOPT-NEXT: store i8* [[T1]], i8** [[SLOT]],
-// CHECK-UNOPT-NEXT: bitcast
-// CHECK-UNOPT-NEXT: call void @test18_helper(
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[SLOTREL]], i8* null) [[NUW:#[0-9]+]]
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null) [[NUW]]
-// CHECK-UNOPT-NEXT: ret void
-  extern void test18_helper(id (^)(void));
-  test18_helper(^{ return x; });
-
-// CHECK-UNOPT:    define internal void @__copy_helper_block_
-// CHECK-UNOPT:      [[T0:%.*]] = load i8**
-// CHECK-UNOPT-NEXT: [[SRC:%.*]] = bitcast i8* [[T0]] to [[BLOCK_T]]*
-// CHECK-UNOPT-NEXT: [[T0:%.*]] = load i8**
-// CHECK-UNOPT-NEXT: [[DST:%.*]] = bitcast i8* [[T0]] to [[BLOCK_T]]*
-// CHECK-UNOPT-NEXT: [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[SRC]], i32 0, i32 5
-// CHECK-UNOPT-NEXT: [[T1:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[DST]], i32 0, i32 5
-// CHECK-UNOPT-NEXT: [[T2:%.*]] = load i8** [[T0]]
-// CHECK-UNOPT-NEXT: store i8* null, i8** [[T1]]
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[T1]], i8* [[T2]]) [[NUW]]
-// CHECK-UNOPT-NEXT: ret void
-
-// CHECK-UNOPT:    define internal void @__destroy_helper_block_
-// CHECK-UNOPT:      [[T0:%.*]] = load i8**
-// CHECK-UNOPT-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[BLOCK_T]]*
-// CHECK-UNOPT-NEXT: [[T2:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[T1]], i32 0, i32 5
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[T2]], i8* null)
-// CHECK-UNOPT-NEXT: ret void
-}
-
-// rdar://13588325
-void test19_sink(void (^)(int));
-void test19(void (^b)(void)) {
-// CHECK:    define void @test19(
-//   Prologue.
-// CHECK:      [[B:%.*]] = alloca void ()*,
-// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-// CHECK-NEXT: [[T0:%.*]] = bitcast void ()* {{%.*}} to i8*
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to void ()*
-// CHECK-NEXT: store void ()* [[T2]], void ()** [[B]]
-
-//   Block setup.  We skip most of this.  Note the bare retain.
-// CHECK-NEXT: [[SLOTREL:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK:      [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-NEXT: [[T0:%.*]] = load void ()** [[B]],
-// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*
-// CHECK-NEXT: store void ()* [[T3]], void ()** [[SLOT]],
-//   Call.
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to void (i32)*
-// CHECK-NEXT: call void @test19_sink(void (i32)* [[T0]])
-
-  test19_sink(^(int x) { b(); });
-
-//   Block teardown.
-// CHECK-NEXT: [[T0:%.*]] = load void ()** [[SLOTREL]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T1]])
-
-//   Local cleanup.
-// CHECK-NEXT: [[T0:%.*]] = load void ()** [[B]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T1]])
-
-// CHECK-NEXT: ret void
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }
-// CHECK-UNOPT: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-bridged-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-bridged-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-bridged-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-
-typedef const void *CFTypeRef;
-typedef const struct __CFString *CFStringRef;
-
- at interface NSString
- at end
-
-CFTypeRef CFCreateSomething(void);
-CFStringRef CFCreateString(void);
-CFTypeRef CFGetSomething(void);
-CFStringRef CFGetString(void);
-
-id CreateSomething(void);
-NSString *CreateNSString(void);
-
-// CHECK: define void @bridge_transfer_from_cf
-void bridge_transfer_from_cf(int *i) {
-  // CHECK: store i32 7
-  *i = 7;
-  // CHECK: call i8* @CFCreateSomething()
-  id obj1 = (__bridge_transfer id)CFCreateSomething();
-  // CHECK-NOT: retain
-  // CHECK: store i32 11
-  *i = 11;
-  // CHECK: call i8* @CFCreateSomething()
-  // CHECK-NOT: retain
-  // CHECK: store i32 13
-  (void)(__bridge_transfer id)CFCreateSomething(), *i = 13;
-  // CHECK: call void @objc_release
-  // CHECK: store i32 17
-  *i = 17;
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @bridge_from_cf
-void bridge_from_cf(int *i) {
-  // CHECK: store i32 7
-  *i = 7;
-  // CHECK: call i8* @CFCreateSomething()
-  id obj1 = (__bridge id)CFCreateSomething();
-  // CHECK: objc_retainAutoreleasedReturnValue
-  // CHECK: store i32 11
-  *i = 11;
-  // CHECK: call i8* @CFCreateSomething()
-  // CHECK-NOT: release
-  // CHECK: store i32 13
-  (void)(__bridge id)CFCreateSomething(), *i = 13;
-  // CHECK: store i32 17
-  *i = 17;
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @bridge_retained_of_cf
-void bridge_retained_of_cf(int *i) {
-  *i = 7;
-  // CHECK: call i8* @CreateSomething()
-  CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething();
-  // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue
-  // CHECK: store i32 11
-  *i = 11;
-  // CHECK: call i8* @CreateSomething()
-  (__bridge_retained CFTypeRef)CreateSomething(), *i = 13;
-  // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue
-  // CHECK: store i32 13
-  // CHECK: store i32 17
-  *i = 17;
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @bridge_of_cf
-void bridge_of_cf(int *i) {
-  // CHECK: store i32 7
-  *i = 7;
-  // CHECK: call i8* @CreateSomething()
-  CFTypeRef cf1 = (__bridge CFTypeRef)CreateSomething();
-  // CHECK-NOT: retain
-  // CHECK: store i32 11
-  *i = 11;
-  // CHECK: call i8* @CreateSomething
-  (__bridge CFTypeRef)CreateSomething(), *i = 13;
-  // CHECK: store i32 13
-  // CHECK-NOT: release
-  // CHECK: store i32 17
-  *i = 17;
-  // CHECK-NEXT: ret void
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-32bit-block-var-layout-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-32bit-block-var-layout-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-32bit-block-var-layout-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -triple i386-apple-darwin -O0 -print-ivar-layout -emit-llvm -o /dev/null %s > %t-32.layout
-// RUN: FileCheck --input-file=%t-32.layout %s
-// rdar://12184410
-// rdar://12752901
-
- at class NSString;
-extern void NSLog(NSString *format, ...);
-extern int printf(const char *, ...);
-
-int main() {
-  NSString *strong;
-  unsigned long long eightByte = 0x8001800181818181ull;
-  // Test1
-// CHECK: block variable layout: BL_NON_OBJECT_WORD:3, BL_STRONG:1, BL_OPERATOR:0
-  void (^block1)() = ^{ printf("%#llx", eightByte); NSLog(@"%@", strong); };
-
-  // Test2
-  int i = 1;
-// CHECK:  block variable layout: BL_NON_OBJECT_WORD:3, BL_STRONG:1, BL_OPERATOR:0
-  void (^block2)() = ^{ printf("%#llx, %d", eightByte, i); NSLog(@"%@", strong); };
-
-  //  Test3
-  char ch = 'a';
-// CHECK: block variable layout: BL_NON_OBJECT_WORD:3, BL_STRONG:1, BL_OPERATOR:0
-  void (^block3)() = ^{ printf("%c %#llx", ch, eightByte); NSLog(@"%@", strong); };
-
-  // Test4
-  unsigned long fourByte = 0x8001ul;
-// block variable layout: BL_NON_OBJECT_WORD:1, BL_STRONG:1, BL_OPERATOR:0
-// CHECK: Inline instruction for block variable layout: 0x0100
-  void (^block4)() = ^{ printf("%c %#lx", ch, fourByte); NSLog(@"%@", strong); };
-
-  // Test5
-// CHECK: block variable layout: BL_NON_OBJECT_WORD:3, BL_STRONG:1, BL_OPERATOR:0
-  void (^block5)() = ^{ NSLog(@"%@", strong); printf("%c %#llx", ch, eightByte); };
-
-  // Test6
-// CHECK: block variable layout: BL_OPERATOR:0
-  void (^block6)() = ^{ printf("%#llx", eightByte); };
-}
-
-/**
-struct __block_literal_generic { // 32bytes (64bit) and 20 bytes (32bit).
-0  void *__isa;
-4  int __flags;
-8  int __reserved;
-12  void (*__invoke)(void *);
-16  struct __block_descriptor *__descriptor;
-};
-*/

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-32bit-block-var-layout.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-32bit-block-var-layout.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-32bit-block-var-layout.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,404 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -triple i386-apple-darwin -O0 -print-ivar-layout -emit-llvm -o /dev/null %s > %t-32.layout
-// RUN: FileCheck --input-file=%t-32.layout %s
-// rdar://12184410
-// rdar://12752901
-
-void x(id y) {}
-void y(int a) {}
-
-extern id opaque_id();
-
-void f() {
-    __weak id wid;
-    __block int byref_int = 0;
-    char ch = 'a';
-    char ch1 = 'b';
-    char ch2 = 'c';
-    short sh = 2;
-    const id bar = (id) opaque_id();
-    id baz = 0;
-    __strong id strong_void_sta;
-    __block id byref_bab = (id)0;
-    __block id bl_var1;
-    int i; double dob;
-
-// The patterns here are a sequence of bytes, each saying first how
-// many sizeof(void*) chunks to skip (high nibble) and then how many
-// to scan (low nibble).  A zero byte says that we've reached the end
-// of the pattern.
-//
-// All of these patterns start with 01 3x because the block header on
-// LP64 consists of an isa pointer (which we're supposed to scan for
-// some reason) followed by three words (2 ints, a function pointer,
-// and a descriptor pointer).
-
-// Test 1
-// CHECK: Inline instruction for block variable layout: 0x0320
-    void (^b)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x((id)strong_void_sta);
-        x(byref_bab);
-    };    
-    b();
-
-// Test 2
-// CHECK: Inline instruction for block variable layout: 0x0331
-    void (^c)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x((id)strong_void_sta);
-        x(wid);
-        bl_var1 = 0;
-        x(byref_bab);
-    };    
-}
-
- at class NSString, NSNumber;
-void g() {
-  NSString *foo;
-   NSNumber *bar;
-   unsigned int bletch;
-   __weak id weak_delegate;
-  unsigned int i;
-  NSString *y;
-  NSString *z;
-// CHECK: Inline instruction for block variable layout: 0x0401
-  void (^c)() = ^{
-   int j = i + bletch;
-   x(foo);
-   x(bar);
-   x(weak_delegate);
-   x(y);
-   x(z); 
-  };
-  c();
-}
-
-// Test 5 (unions/structs and their nesting):
-void h() {
-  struct S5 {
-    int i1;
-    __unsafe_unretained id o1;
-    struct V {
-     int i2;
-     __unsafe_unretained id o2;
-    } v1;
-    int i3;
-    union UI {
-        void * i1;
-        __unsafe_unretained id o1;
-        int i3;
-        __unsafe_unretained id o3;
-    }ui;
-  };
-
-  union U {
-        void * i1;
-        __unsafe_unretained id o1;
-        int i3;
-        __unsafe_unretained id o3;
-  }ui;
-
-  struct S5 s2;
-  union U u2;
-  __block id block_id;
-
-/**
-block variable layout: BL_NON_OBJECT_WORD:1, BL_UNRETAINE:1, BL_NON_OBJECT_WORD:1, 
-                       BL_UNRETAINE:1, BL_NON_OBJECT_WORD:3, BL_BYREF:1, BL_OPERATOR:0
-*/
-// CHECK: block variable layout: BL_BYREF:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_OPERATOR:0
-  void (^c)() = ^{
-    x(s2.ui.o1);
-    x(u2.o1);
-    block_id = 0;
-  };
-  c();
-}
-
-// Test for array of stuff.
-void arr1() {
-  struct S {
-    __unsafe_unretained id unsafe_unretained_var[4];
- } imported_s;
-
-// CHECK: block variable layout: BL_UNRETAINED:4, BL_OPERATOR:0
-    void (^c)() = ^{
-        x(imported_s.unsafe_unretained_var[2]);
-    };    
-
-   c();
-}
-
-// Test2 for array of stuff.
-void arr2() {
-  struct S {
-   int a;
-    __unsafe_unretained id unsafe_unretained_var[4];
- } imported_s;
-
-// CHECK: block variable layout: BL_NON_OBJECT_WORD:1, BL_UNRETAINED:4, BL_OPERATOR:0
-    void (^c)() = ^{
-        x(imported_s.unsafe_unretained_var[2]);
-    };    
-
-   c();
-}
-
-// Test3 for array of stuff.
-void arr3() {
-  struct S {
-   int a;
-    __unsafe_unretained id unsafe_unretained_var[0];
- } imported_s;
-
-// CHECK: block variable layout: BL_OPERATOR:0
-    void (^c)() = ^{
-      int i = imported_s.a;
-    };    
-
-   c();
-}
-
-
-// Test4 for array of stuff.
- at class B;
-void arr4() {
-  struct S {
-    struct s0 {
-      __unsafe_unretained id s_f0;
-      __unsafe_unretained id s_f1;
-    } f0;
-
-    __unsafe_unretained id f1;
-
-    struct s1 {
-      int *f0;
-      __unsafe_unretained B *f1;
-    } f4[2][2];
-  } captured_s;
-
-// CHECK: block variable layout: BL_UNRETAINED:3, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_OPERATOR:0
-  void (^c)() = ^{
-      id i = captured_s.f0.s_f1;
-  };
-
-   c();
-}
-
-// Test1 bitfield in cpatured aggregate.
-void bf1() {
-  struct S {
-    int flag : 25;
-    int flag1: 7;
-    int flag2 :1;
-    int flag3: 7;
-    int flag4: 24;
-  } s;
-
-// CHECK:  block variable layout: BL_OPERATOR:0
-  int (^c)() = ^{
-      return s.flag;
-  };
-  c();
-}
-
-// Test2 bitfield in cpatured aggregate.
-void bf2() {
-  struct S {
-    int flag : 1;
-  } s;
-
-// CHECK: block variable layout: BL_OPERATOR:0
-  int (^c)() = ^{
-      return s.flag;
-  };
-  c();
-}
-
-// Test3 bitfield in cpatured aggregate.
-void bf3() {
-
-     struct {
-        unsigned short _reserved : 16;
-
-        unsigned char _draggedNodesAreDeletable: 1;
-        unsigned char _draggedOutsideOutlineView : 1;
-        unsigned char _adapterRespondsTo_addRootPaths : 1;
-        unsigned char _adapterRespondsTo_moveDataNodes : 1;
-        unsigned char _adapterRespondsTo_removeRootDataNode : 1;
-        unsigned char _adapterRespondsTo_doubleClickDataNode : 1;
-        unsigned char _adapterRespondsTo_selectDataNode : 1;
-        unsigned char _adapterRespondsTo_textDidEndEditing : 1;
-        unsigned char _adapterRespondsTo_updateAndSaveRoots : 1;
-        unsigned char _adapterRespondsTo_askToDeleteRootNodes : 1;
-        unsigned char _adapterRespondsTo_contextMenuForSelectedNodes : 1;
-        unsigned char _adapterRespondsTo_pasteboardFilenamesForNodes : 1;
-        unsigned char _adapterRespondsTo_writeItemsToPasteboard : 1;
-        unsigned char _adapterRespondsTo_writeItemsToPasteboardXXXX : 1;
-
-        unsigned int _filler : 32;
-    } _flags;
-
-// CHECK: block variable layout: BL_OPERATOR:0
-  unsigned char (^c)() = ^{
-      return _flags._draggedNodesAreDeletable;
-  };
-
-   c();
-}
-
-// Test4 unnamed bitfield
-void bf4() {
-
-     struct {
-        unsigned short _reserved : 16;
-
-        unsigned char _draggedNodesAreDeletable: 1;
-        unsigned char _draggedOutsideOutlineView : 1;
-        unsigned char _adapterRespondsTo_addRootPaths : 1;
-        unsigned char _adapterRespondsTo_moveDataNodes : 1;
-        unsigned char _adapterRespondsTo_removeRootDataNode : 1;
-        unsigned char _adapterRespondsTo_doubleClickDataNode : 1;
-        unsigned char _adapterRespondsTo_selectDataNode : 1;
-        unsigned char _adapterRespondsTo_textDidEndEditing : 1;
-
-        unsigned long long : 64;
-
-        unsigned char _adapterRespondsTo_updateAndSaveRoots : 1;
-        unsigned char _adapterRespondsTo_askToDeleteRootNodes : 1;
-        unsigned char _adapterRespondsTo_contextMenuForSelectedNodes : 1;
-        unsigned char _adapterRespondsTo_pasteboardFilenamesForNodes : 1;
-        unsigned char _adapterRespondsTo_writeItemsToPasteboard : 1;
-        unsigned char _adapterRespondsTo_writeItemsToPasteboardXXXX : 1;
-
-        unsigned int _filler : 32;
-    } _flags;
-
-// CHECK:  block variable layout: BL_OPERATOR:0
-  unsigned char (^c)() = ^{
-      return _flags._draggedNodesAreDeletable;
-  };
-
-   c();
-}
-
-
-
-// Test5 unnamed bitfield.
-void bf5() {
-     struct {
-        unsigned char flag : 1;
-        unsigned int  : 32;
-        unsigned char flag1 : 1;
-    } _flags;
-
-// CHECK:  block variable layout: BL_OPERATOR:0
-  unsigned char (^c)() = ^{
-      return _flags.flag;
-  };
-
-   c();
-}
-
-
-// Test6 0 length bitfield.
-void bf6() {
-     struct {
-        unsigned char flag : 1;
-        unsigned int  : 0;
-        unsigned char flag1 : 1;
-    } _flags;
-
-// CHECK: block variable layout: BL_OPERATOR:0
-  unsigned char (^c)() = ^{
-      return _flags.flag;
-  };
-
-   c();
-}
-
-// Test7 large number of captured variables.
-void Test7() {
-    __weak id wid;
-    __weak id wid1, wid2, wid3, wid4;
-    __weak id wid5, wid6, wid7, wid8;
-    __weak id wid9, wid10, wid11, wid12;
-    __weak id wid13, wid14, wid15, wid16;
-    const id bar = (id) opaque_id();
-// CHECK: block variable layout: BL_STRONG:1, BL_WEAK:16, BL_OPERATOR:0
-    void (^b)() = ^{
-      x(bar);
-      x(wid1);
-      x(wid2);
-      x(wid3);
-      x(wid4);
-      x(wid5);
-      x(wid6);
-      x(wid7);
-      x(wid8);
-      x(wid9);
-      x(wid10);
-      x(wid11);
-      x(wid12);
-      x(wid13);
-      x(wid14);
-      x(wid15);
-      x(wid16);
-    };    
-}
-
-
-// Test 8 very large number of captured variables.
-void Test8() {
-__weak id wid;
-    __weak id wid1, wid2, wid3, wid4;
-    __weak id wid5, wid6, wid7, wid8;
-    __weak id wid9, wid10, wid11, wid12;
-    __weak id wid13, wid14, wid15, wid16;
-    __weak id w1, w2, w3, w4;
-    __weak id w5, w6, w7, w8;
-    __weak id w9, w10, w11, w12;
-    __weak id w13, w14, w15, w16;
-    const id bar = (id) opaque_id();
-// CHECK: block variable layout: BL_STRONG:1, BL_WEAK:16, BL_WEAK:16, BL_WEAK:1, BL_OPERATOR:0
-    void (^b)() = ^{
-      x(bar);
-      x(wid1);
-      x(wid2);
-      x(wid3);
-      x(wid4);
-      x(wid5);
-      x(wid6);
-      x(wid7);
-      x(wid8);
-      x(wid9);
-      x(wid10);
-      x(wid11);
-      x(wid12);
-      x(wid13);
-      x(wid14);
-      x(wid15);
-      x(wid16);
-      x(w1);
-      x(w2);
-      x(w3);
-      x(w4);
-      x(w5);
-      x(w6);
-      x(w7);
-      x(w8);
-      x(w9);
-      x(w10);
-      x(w11);
-      x(w12);
-      x(w13);
-      x(w14);
-      x(w15);
-      x(w16);
-      x(wid);
-    };  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-block-var-inlined-layout.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-block-var-inlined-layout.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-block-var-inlined-layout.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -triple x86_64-apple-darwin -O0 -print-ivar-layout -emit-llvm -o /dev/null %s > %t-64.layout
-// RUN: FileCheck --input-file=%t-64.layout %s
-// RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -triple i386-apple-darwin -O0 -print-ivar-layout -emit-llvm -o /dev/null  %s > %t-32.layout
-// RUN: FileCheck -check-prefix=CHECK-i386 --input-file=%t-32.layout %s
-// rdar://12184410
-
-void x(id y) {}
-void y(int a) {}
-
-extern id opaque_id();
-
-void f() {
-    __block int byref_int = 0;
-    const id bar = (id) opaque_id();
-    id baz = 0;
-    __strong id strong_void_sta;
-    __block id byref_bab = (id)0;
-    __block id bl_var1;
-
-// CHECK: Inline instruction for block variable layout: 0x0100
-// CHECK-i386: Inline instruction for block variable layout: 0x0100
-    void (^b)() = ^{
-        x(bar);
-    };    
-
-// CHECK: Inline instruction for block variable layout: 0x0210
-// CHECK-i386: Inline instruction for block variable layout: 0x0210
-    void (^c)() = ^{
-        x(bar);
-        x(baz);
-        byref_int = 1;
-    };    
-
-// CHECK: Inline instruction for block variable layout: 0x0230
-// CHECK-i386: Inline instruction for block variable layout: 0x0230
-    void (^d)() = ^{
-        x(bar);
-        x(baz);
-        byref_int = 1;
-        bl_var1 = 0;
-        byref_bab = 0;
-    };
-
-// CHECK: Inline instruction for block variable layout: 0x0231
-// CHECK-i386: Inline instruction for block variable layout: 0x0231
-    __weak id wid;
-    id (^e)() = ^{
-        x(bar);
-        x(baz);
-        byref_int = 1;
-        bl_var1 = 0;
-        byref_bab = 0;
-        return wid;
-    };
-
-// CHECK: Inline instruction for block variable layout: 0x0235
-// CHECK-i386: Inline instruction for block variable layout: 0x0235
-    __weak id wid1, wid2, wid3, wid4;
-    id (^f)() = ^{
-        x(bar);
-        x(baz);
-        byref_int = 1;
-        bl_var1 = 0;
-        byref_bab = 0;
-        x(wid1);
-        x(wid2);
-        x(wid3);
-        x(wid4);
-        return wid;
-    };
-
-// CHECK: Inline instruction for block variable layout: 0x035
-// CHECK-i386: Inline instruction for block variable layout: 0x035
-    id (^g)() = ^{
-        byref_int = 1;
-        bl_var1 = 0;
-        byref_bab = 0;
-        x(wid1);
-        x(wid2);
-        x(wid3);
-        x(wid4);
-        return wid;
-    };
-
-// CHECK: Inline instruction for block variable layout: 0x01
-// CHECK-i386: Inline instruction for block variable layout: 0x01
-    id (^h)() = ^{
-        return wid;
-    };
-
-// CHECK: Inline instruction for block variable layout: 0x020
-// CHECK-i386: Inline instruction for block variable layout: 0x020
-    void (^ii)() = ^{
-       byref_int = 1;
-       byref_bab = 0;
-    };
-
-// CHECK: Inline instruction for block variable layout: 0x0102
-// CHECK-i386: Inline instruction for block variable layout: 0x0102
-    void (^jj)() = ^{
-      x(bar);
-      x(wid1);
-      x(wid2);
-    };
-}
-
-// rdar://12752901
- at class NSString;
-extern void NSLog(NSString *format, ...);
-typedef void (^dispatch_block_t)(void);
-int main() {
-        __strong NSString *s1 = 0;
-        __strong NSString *s2 = 0;
-        __weak NSString *w1 = 0;
-
-
-// CHECK: Inline instruction for block variable layout: 0x0201
-// CHECK-i386: Inline instruction for block variable layout: 0x0201
-        dispatch_block_t block2 = ^{
-                NSLog(@"%@, %@, %@", s1, w1, s2);
-        };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-block-var-layout.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-block-var-layout.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-captured-block-var-layout.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,403 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -triple x86_64-apple-darwin -O0 -print-ivar-layout -emit-llvm -o /dev/null %s > %t-64.layout
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.layout %s
-// rdar://12184410
-// rdar://12752901
-
-void x(id y) {}
-void y(int a) {}
-
-extern id opaque_id();
-
-void f() {
-    __weak id wid;
-    __block int byref_int = 0;
-    char ch = 'a';
-    char ch1 = 'b';
-    char ch2 = 'c';
-    short sh = 2;
-    const id bar = (id) opaque_id();
-    id baz = 0;
-    __strong id strong_void_sta;
-    __block id byref_bab = (id)0;
-    __block id bl_var1;
-    int i; double dob;
-
-// The patterns here are a sequence of bytes, each saying first how
-// many sizeof(void*) chunks to skip (high nibble) and then how many
-// to scan (low nibble).  A zero byte says that we've reached the end
-// of the pattern.
-//
-// All of these patterns start with 01 3x because the block header on
-// LP64 consists of an isa pointer (which we're supposed to scan for
-// some reason) followed by three words (2 ints, a function pointer,
-// and a descriptor pointer).
-
-// Test 1
-// Inline instruction for block variable layout: 0x0320 (3 strong 2 byref)
-// CHECK-LP64: Inline instruction for block variable layout: 0x0320
-    void (^b)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x((id)strong_void_sta);
-        x(byref_bab);
-    };    
-    b();
-
-// Test 2
-// Inline instruction for block variable layout: 0x0331 (3 strong 3 byref 1 weak)
-// CHECK-LP64: Inline instruction for block variable layout: 0x0331
-    void (^c)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x((id)strong_void_sta);
-        x(wid);
-        bl_var1 = 0;
-        x(byref_bab);
-    };    
-}
-
- at class NSString, NSNumber;
-void g() {
-  NSString *foo;
-   NSNumber *bar;
-   unsigned int bletch;
-   __weak id weak_delegate;
-  unsigned int i;
-  NSString *y;
-  NSString *z;
-// Inline instruction for block variable layout: 0x0401 (4 strong 0 byref 1 weak)
-// CHECK-LP64: Inline instruction for block variable layout: 0x0401
-  void (^c)() = ^{
-   int j = i + bletch;
-   x(foo);
-   x(bar);
-   x(weak_delegate);
-   x(y);
-   x(z); 
-  };
-  c();
-}
-
-// Test 5 (unions/structs and their nesting):
-void h() {
-  struct S5 {
-    int i1;
-    __unsafe_unretained id o1;
-    struct V {
-     int i2;
-     __unsafe_unretained id o2;
-    } v1;
-    int i3;
-    union UI {
-        void * i1;
-        __unsafe_unretained id o1;
-        int i3;
-        __unsafe_unretained id o3;
-    }ui;
-  };
-
-  union U {
-        void * i1;
-        __unsafe_unretained id o1;
-        int i3;
-        __unsafe_unretained id o3;
-  }ui;
-
-  struct S5 s2;
-  union U u2;
-  __block id block_id;
-
-// CHECK-LP64: block variable layout: BL_BYREF:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_OPERATOR:0
-  void (^c)() = ^{
-    x(s2.ui.o1);
-    x(u2.o1);
-    block_id = 0;
-  };
-  c();
-}
-
-// Test for array of stuff.
-void arr1() {
-  struct S {
-    __unsafe_unretained id unsafe_unretained_var[4];
- } imported_s;
-
-// CHECK-LP64: block variable layout: BL_UNRETAINED:4, BL_OPERATOR:0
-    void (^c)() = ^{
-        x(imported_s.unsafe_unretained_var[2]);
-    };    
-
-   c();
-}
-
-// Test2 for array of stuff.
-void arr2() {
-  struct S {
-   int a;
-    __unsafe_unretained id unsafe_unretained_var[4];
- } imported_s;
-
-// CHECK-LP64: block variable layout: BL_NON_OBJECT_WORD:1, BL_UNRETAINED:4, BL_OPERATOR:0
-    void (^c)() = ^{
-        x(imported_s.unsafe_unretained_var[2]);
-    };    
-
-   c();
-}
-
-// Test3 for array of stuff.
-void arr3() {
-  struct S {
-   int a;
-    __unsafe_unretained id unsafe_unretained_var[0];
- } imported_s;
-
-// CHECK-LP64: block variable layout: BL_OPERATOR:0
-    void (^c)() = ^{
-      int i = imported_s.a;
-    };    
-
-   c();
-}
-
-
-// Test4 for array of stuff.
- at class B;
-void arr4() {
-  struct S {
-    struct s0 {
-      __unsafe_unretained id s_f0;
-      __unsafe_unretained id s_f1;
-    } f0;
-
-    __unsafe_unretained id f1;
-
-    struct s1 {
-      int *f0;
-      __unsafe_unretained B *f1;
-    } f4[2][2];
-  } captured_s;
-
-// CHECK-LP64: block variable layout: BL_UNRETAINED:3, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_NON_OBJECT_WORD:1, BL_UNRETAINED:1, BL_OPERATOR:0
-  void (^c)() = ^{
-      id i = captured_s.f0.s_f1;
-  };
-
-   c();
-}
-
-// Test1 bitfield in cpatured aggregate.
-void bf1() {
-  struct S {
-    int flag : 25;
-    int flag1: 7;
-    int flag2 :1;
-    int flag3: 7;
-    int flag4: 24;
-  } s;
-
-// CHECK-LP64: block variable layout: BL_OPERATOR:0
-  int (^c)() = ^{
-      return s.flag;
-  };
-  c();
-}
-
-// Test2 bitfield in cpatured aggregate.
-void bf2() {
-  struct S {
-    int flag : 1;
-  } s;
-
-// CHECK-LP64: block variable layout: BL_OPERATOR:0
-  int (^c)() = ^{
-      return s.flag;
-  };
-  c();
-}
-
-// Test3 bitfield in cpatured aggregate.
-void bf3() {
-
-     struct {
-        unsigned short _reserved : 16;
-
-        unsigned char _draggedNodesAreDeletable: 1;
-        unsigned char _draggedOutsideOutlineView : 1;
-        unsigned char _adapterRespondsTo_addRootPaths : 1;
-        unsigned char _adapterRespondsTo_moveDataNodes : 1;
-        unsigned char _adapterRespondsTo_removeRootDataNode : 1;
-        unsigned char _adapterRespondsTo_doubleClickDataNode : 1;
-        unsigned char _adapterRespondsTo_selectDataNode : 1;
-        unsigned char _adapterRespondsTo_textDidEndEditing : 1;
-        unsigned char _adapterRespondsTo_updateAndSaveRoots : 1;
-        unsigned char _adapterRespondsTo_askToDeleteRootNodes : 1;
-        unsigned char _adapterRespondsTo_contextMenuForSelectedNodes : 1;
-        unsigned char _adapterRespondsTo_pasteboardFilenamesForNodes : 1;
-        unsigned char _adapterRespondsTo_writeItemsToPasteboard : 1;
-        unsigned char _adapterRespondsTo_writeItemsToPasteboardXXXX : 1;
-
-        unsigned int _filler : 32;
-    } _flags;
-
-// CHECK-LP64: block variable layout: BL_OPERATOR:0
-  unsigned char (^c)() = ^{
-      return _flags._draggedNodesAreDeletable;
-  };
-
-   c();
-}
-
-// Test4 unnamed bitfield
-void bf4() {
-
-     struct {
-        unsigned short _reserved : 16;
-
-        unsigned char _draggedNodesAreDeletable: 1;
-        unsigned char _draggedOutsideOutlineView : 1;
-        unsigned char _adapterRespondsTo_addRootPaths : 1;
-        unsigned char _adapterRespondsTo_moveDataNodes : 1;
-        unsigned char _adapterRespondsTo_removeRootDataNode : 1;
-        unsigned char _adapterRespondsTo_doubleClickDataNode : 1;
-        unsigned char _adapterRespondsTo_selectDataNode : 1;
-        unsigned char _adapterRespondsTo_textDidEndEditing : 1;
-
-        unsigned long long : 64;
-
-        unsigned char _adapterRespondsTo_updateAndSaveRoots : 1;
-        unsigned char _adapterRespondsTo_askToDeleteRootNodes : 1;
-        unsigned char _adapterRespondsTo_contextMenuForSelectedNodes : 1;
-        unsigned char _adapterRespondsTo_pasteboardFilenamesForNodes : 1;
-        unsigned char _adapterRespondsTo_writeItemsToPasteboard : 1;
-        unsigned char _adapterRespondsTo_writeItemsToPasteboardXXXX : 1;
-
-        unsigned int _filler : 32;
-    } _flags;
-
-// CHECK-LP64: block variable layout: BL_OPERATOR:0
-  unsigned char (^c)() = ^{
-      return _flags._draggedNodesAreDeletable;
-  };
-
-   c();
-}
-
-
-
-// Test5 unnamed bitfield.
-void bf5() {
-     struct {
-        unsigned char flag : 1;
-        unsigned int  : 32;
-        unsigned char flag1 : 1;
-    } _flags;
-
-// CHECK-LP64: block variable layout: BL_OPERATOR:0
-  unsigned char (^c)() = ^{
-      return _flags.flag;
-  };
-
-   c();
-}
-
-
-// Test6 0 length bitfield.
-void bf6() {
-     struct {
-        unsigned char flag : 1;
-        unsigned int  : 0;
-        unsigned char flag1 : 1;
-    } _flags;
-
-// CHECK-LP64: block variable layout: BL_OPERATOR:0
-  unsigned char (^c)() = ^{
-      return _flags.flag;
-  };
-
-   c();
-}
-
-// Test7 large number of captured variables.
-void Test7() {
-    __weak id wid;
-    __weak id wid1, wid2, wid3, wid4;
-    __weak id wid5, wid6, wid7, wid8;
-    __weak id wid9, wid10, wid11, wid12;
-    __weak id wid13, wid14, wid15, wid16;
-    const id bar = (id) opaque_id();
-// CHECK-LP64: block variable layout: BL_STRONG:1, BL_WEAK:16, BL_OPERATOR:0
-    void (^b)() = ^{
-      x(bar);
-      x(wid1);
-      x(wid2);
-      x(wid3);
-      x(wid4);
-      x(wid5);
-      x(wid6);
-      x(wid7);
-      x(wid8);
-      x(wid9);
-      x(wid10);
-      x(wid11);
-      x(wid12);
-      x(wid13);
-      x(wid14);
-      x(wid15);
-      x(wid16);
-    };    
-}
-
-
-// Test 8 very large number of captured variables.
-void Test8() {
-__weak id wid;
-    __weak id wid1, wid2, wid3, wid4;
-    __weak id wid5, wid6, wid7, wid8;
-    __weak id wid9, wid10, wid11, wid12;
-    __weak id wid13, wid14, wid15, wid16;
-    __weak id w1, w2, w3, w4;
-    __weak id w5, w6, w7, w8;
-    __weak id w9, w10, w11, w12;
-    __weak id w13, w14, w15, w16;
-    const id bar = (id) opaque_id();
-// CHECK-LP64: block variable layout: BL_STRONG:1, BL_WEAK:16, BL_WEAK:16, BL_WEAK:1, BL_OPERATOR:0
-    void (^b)() = ^{
-      x(bar);
-      x(wid1);
-      x(wid2);
-      x(wid3);
-      x(wid4);
-      x(wid5);
-      x(wid6);
-      x(wid7);
-      x(wid8);
-      x(wid9);
-      x(wid10);
-      x(wid11);
-      x(wid12);
-      x(wid13);
-      x(wid14);
-      x(wid15);
-      x(wid16);
-      x(w1);
-      x(w2);
-      x(w3);
-      x(w4);
-      x(w5);
-      x(w6);
-      x(w7);
-      x(w8);
-      x(w9);
-      x(w10);
-      x(w11);
-      x(w12);
-      x(w13);
-      x(w14);
-      x(w15);
-      x(w16);
-      x(wid);
-    };  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-compound-stmt.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-compound-stmt.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-compound-stmt.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -o - %s
-// rdar://9694706
-
-typedef unsigned long NSUInteger;
-
- at interface NSString
-- (NSString *)stringByAppendingString:(NSString *)aString;
-- (NSString *)substringFromIndex:(NSUInteger)from;
- at end
-
- at interface MyClass
-- (void)inst;
- at end
-
- at implementation MyClass
-
-- (void)inst;
-{
-    NSString *propName;
-
-    NSString *capitalPropName = ({
-        NSString *cap;
-        if (propName)
-            cap = [cap stringByAppendingString:[propName substringFromIndex:1]];
-        cap;
-    });
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-cond-stmt.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-cond-stmt.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-cond-stmt.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -o - %s
-// rdar://10327068
-
- at class NSString;
-
- at interface NSAssertionHandler {
-}
-
-+ (NSAssertionHandler *)currentHandler;
-
-- (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(int)line ,...;
-
- at end
-
-typedef enum
-{
- MWRaceOrder_MeetName,
- MWRaceOrder_MeetPosition,
- MWRaceOrder_MeetDistance,
- MWRaceOrder_Name,
- MWRaceOrder_Position,
- MWRaceOrder_Distance,
- MWRaceOrder_Default = MWRaceOrder_Name,
- MWRaceOrder_MeetDefault = MWRaceOrder_MeetName,
-} MWRaceOrder;
-
- at interface MWViewMeetController
- at property (nonatomic, assign) MWRaceOrder raceOrder;
- at end
-
- at implementation MWViewMeetController
-
-- (int)orderSegment
-{
- switch (self.raceOrder)
- {
-
-  default:
-  { [(NSAssertionHandler *)0 handleFailureInMethod:_cmd object:self file:(NSString*)0 lineNumber:192 ]; };
-   break;
- }
-
- return 0;
-}
-
- at synthesize raceOrder;
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-exceptions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-exceptions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-exceptions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fexceptions -fobjc-exceptions -fobjc-runtime-has-weak -o - %s | FileCheck %s
-
- at class Ety;
-
-// These first two tests are all PR11732 / rdar://problem/10667070.
-
-void test0_helper(void);
-void test0(void) {
-  @try {
-    test0_helper();
-  } @catch (Ety *e) {
-  }
-}
-// CHECK: define void @test0()
-// CHECK:      [[E:%.*]] = alloca [[ETY:%.*]]*, align 8
-// CHECK-NEXT: invoke void @test0_helper()
-// CHECK:      [[T0:%.*]] = call i8* @objc_begin_catch(
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]]) [[NUW:#[0-9]+]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[ETY]]*
-// CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) [[NUW]]
-// CHECK-NEXT: call void @objc_end_catch() [[NUW]]
-
-void test1_helper(void);
-void test1(void) {
-  @try {
-    test1_helper();
-  } @catch (__weak Ety *e) {
-  }
-}
-// CHECK: define void @test1()
-// CHECK:      [[E:%.*]] = alloca [[ETY:%.*]]*, align 8
-// CHECK-NEXT: invoke void @test1_helper()
-// CHECK:      [[T0:%.*]] = call i8* @objc_begin_catch(
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[ETY]]* [[T1]] to i8*
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) [[NUW]]
-// CHECK-NEXT: call void @objc_end_catch() [[NUW]]
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-foreach.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-foreach.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-foreach.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,175 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -triple x86_64-apple-darwin -O0 -emit-llvm %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// rdar://9503326
-// rdar://9606600
-
-extern void use(id);
-extern void use_block(void (^)(void));
-
-struct NSFastEnumerationState;
- at interface NSArray
-- (unsigned long) countByEnumeratingWithState: (struct NSFastEnumerationState*) state
-                  objects: (id*) buffer
-                  count: (unsigned long) bufferSize;
- at end;
-
-void test0(NSArray *array) {
-  // 'x' should be initialized without a retain.
-  // We should actually do a non-constant capture, and that
-  // capture should require a retain.
-  for (id x in array) {
-    use_block(^{ use(x); });
-  }
-}
-
-// CHECK-LP64:    define void @test0(
-// CHECK-LP64:      [[ARRAY:%.*]] = alloca [[ARRAY_T:%.*]]*,
-// CHECK-LP64-NEXT: [[X:%.*]] = alloca i8*,
-// CHECK-LP64-NEXT: [[STATE:%.*]] = alloca [[STATE_T:%.*]],
-// CHECK-LP64-NEXT: [[BUFFER:%.*]] = alloca [16 x i8*], align 8
-// CHECK-LP64-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-
-// Initialize 'array'.
-// CHECK-LP64-NEXT: store [[ARRAY_T]]* null, [[ARRAY_T]]** [[ARRAY]]
-// CHECK-LP64-NEXT: [[ZERO:%.*]] = bitcast [[ARRAY_T]]** [[ARRAY]] to i8**
-// CHECK-LP64-NEXT: [[ONE:%.*]] = bitcast [[ARRAY_T]]* {{%.*}} to i8*
-// CHECK-LP64-NEXT: call void @objc_storeStrong(i8** [[ZERO]], i8* [[ONE]]) [[NUW:#[0-9]+]]
-
-// Initialize the fast enumaration state.
-// CHECK-LP64-NEXT: [[T0:%.*]] = bitcast [[STATE_T]]* [[STATE]] to i8*
-// CHECK-LP64-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 64, i32 8, i1 false)
-
-// Evaluate the collection expression and retain.
-// CHECK-LP64-NEXT: [[T0:%.*]] = load [[ARRAY_T]]** [[ARRAY]], align 8
-// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[ARRAY_T]]* [[T0]] to i8*
-// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-// CHECK-LP64-NEXT: [[SAVED_ARRAY:%.*]] = bitcast i8* [[T2]] to [[ARRAY_T]]*
-
-// Call the enumeration method.
-// CHECK-LP64-NEXT: [[T0:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[ARRAY_T]]* [[SAVED_ARRAY]] to i8*
-// CHECK-LP64-NEXT: [[SIZE:%.*]] = call i64 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i64 (i8*, i8*, [[STATE_T]]*, [16 x i8*]*, i64)*)(i8* [[T1]], i8* [[T0]], [[STATE_T]]* [[STATE]], [16 x i8*]* [[BUFFER]], i64 16)
-
-// Check for a nonzero result.
-// CHECK-LP64-NEXT: [[T0:%.*]] = icmp eq i64 [[SIZE]], 0
-// CHECK-LP64-NEXT: br i1 [[T0]]
-
-// CHECK-LP64:      [[T0:%.*]] = getelementptr inbounds [[STATE_T]]* [[STATE]], i32 0, i32 1
-// CHECK-LP64-NEXT: [[T1:%.*]] = load i8*** [[T0]]
-// CHECK-LP64-NEXT: [[T2:%.*]] = getelementptr i8** [[T1]], i64
-// CHECK-LP64-NEXT: [[T3:%.*]] = load i8** [[T2]]
-// CHECK-LP64-NEXT: store i8* [[T3]], i8** [[X]]
-
-// CHECK-LP64:      [[D0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-LP64:      [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-LP64-NEXT: [[T1:%.*]] = load i8** [[X]]
-// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-// CHECK-LP64-NEXT: store i8* [[T2]], i8** [[T0]]
-// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] 
-// CHECK-LP64: call void @use_block(
-// CHECK-LP64-NEXT: call void @objc_storeStrong(i8** [[D0]], i8* null)
-
-// CHECK-LP64:      [[T0:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[ARRAY_T]]* [[SAVED_ARRAY]] to i8*
-// CHECK-LP64-NEXT: [[SIZE:%.*]] = call i64 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i64 (i8*, i8*, [[STATE_T]]*, [16 x i8*]*, i64)*)(i8* [[T1]], i8* [[T0]], [[STATE_T]]* [[STATE]], [16 x i8*]* [[BUFFER]], i64 16)
-
-// Release the array.
-// CHECK-LP64:      [[T0:%.*]] = bitcast [[ARRAY_T]]* [[SAVED_ARRAY]] to i8*
-// CHECK-LP64-NEXT: call void @objc_release(i8* [[T0]])
-
-// Destroy 'array'.
-// CHECK-LP64:      [[T0:%.*]] = bitcast [[ARRAY_T]]** [[ARRAY]] to i8**
-// CHECK-LP64-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)
-// CHECK-LP64-NEXT: ret void
-
-// CHECK-LP64:    define internal void @__test0_block_invoke
-// CHECK-LP64:      [[BLOCK:%.*]] = bitcast i8* {{%.*}} to [[BLOCK_T]]*
-// CHECK-LP64-NOT:  ret
-// CHECK-LP64:      [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-LP64-NEXT: [[T2:%.*]] = load i8** [[T0]], align 8 
-// CHECK-LP64-NEXT: call void @use(i8* [[T2]])
-
-void test1(NSArray *array) {
-  for (__weak id x in array) {
-    use_block(^{ use(x); });
-  }
-}
-
-// CHECK-LP64:    define void @test1(
-// CHECK-LP64:      alloca [[ARRAY_T:%.*]]*,
-// CHECK-LP64-NEXT: [[X:%.*]] = alloca i8*,
-// CHECK-LP64-NEXT: [[STATE:%.*]] = alloca [[STATE_T:%.*]],
-// CHECK-LP64-NEXT: alloca [16 x i8*], align 8
-// CHECK-LP64-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-
-// CHECK-LP64:      [[T0:%.*]] = getelementptr inbounds [[STATE_T]]* [[STATE]], i32 0, i32 1
-// CHECK-LP64-NEXT: [[T1:%.*]] = load i8*** [[T0]]
-// CHECK-LP64-NEXT: [[T2:%.*]] = getelementptr i8** [[T1]], i64
-// CHECK-LP64-NEXT: [[T3:%.*]] = load i8** [[T2]]
-// CHECK-LP64-NEXT: call i8* @objc_initWeak(i8** [[X]], i8* [[T3]])
-
-// CHECK-LP64:      [[D0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-LP64:      [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-LP64-NEXT: [[T1:%.*]] = call i8* @objc_loadWeakRetained(i8** [[X]])
-// CHECK-LP64-NEXT: call i8* @objc_initWeak(i8** [[T0]], i8* [[T1]])
-// CHECK-LP64-NEXT: call void @objc_release(i8* [[T1]]) 
-// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to
-// CHECK-LP64: call void @use_block
-// CHECK-LP64-NEXT: call void @objc_destroyWeak(i8** [[D0]])
-// CHECK-LP64-NEXT: call void @objc_destroyWeak(i8** [[X]])
-
-// rdar://problem/9817306
- at interface Test2
-- (NSArray *) array;
- at end
-void test2(Test2 *a) {
-  for (id x in a.array) {
-    use(x);
-  }
-}
-
-// CHECK-LP64:    define void @test2(
-// CHECK-LP64:      [[T0:%.*]] = call [[ARRAY_T]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to [[ARRAY_T]]* (i8*, i8*)*)(
-// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[ARRAY_T]]* [[T0]] to i8*
-// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
-// CHECK-LP64-NEXT: [[COLL:%.*]] = bitcast i8* [[T2]] to [[ARRAY_T]]*
-
-// Make sure it's not immediately released before starting the iteration.
-// CHECK-LP64-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-// CHECK-LP64-NEXT: [[T0:%.*]] = bitcast [[ARRAY_T]]* [[COLL]] to i8*
-// CHECK-LP64-NEXT: @objc_msgSend
-
-// This bitcast is for the mutation check.
-// CHECK-LP64:      [[T0:%.*]] = bitcast [[ARRAY_T]]* [[COLL]] to i8*
-// CHECK-LP64-NEXT: @objc_enumerationMutation
-
-// This bitcast is for the 'next' message send.
-// CHECK-LP64:      [[T0:%.*]] = bitcast [[ARRAY_T]]* [[COLL]] to i8*
-// CHECK-LP64-NEXT: @objc_msgSend
-
-// This bitcast is for the final release.
-// CHECK-LP64:      [[T0:%.*]] = bitcast [[ARRAY_T]]* [[COLL]] to i8*
-// CHECK-LP64-NEXT: call void @objc_release(i8* [[T0]])
-
-
-// Check that the 'continue' label is positioned appropriately
-// relative to the collection clenaup.
-void test3(NSArray *array) {
-  for (id x in array) {
-    if (!x) continue;
-    use(x);
-  }
-
-  // CHECK-LP64:    define void @test3(
-  // CHECK-LP64:      [[ARRAY:%.*]] = alloca [[ARRAY_T]]*, align 8
-  // CHECK-LP64-NEXT: [[X:%.*]] = alloca i8*, align 8
-  // CHECK-LP64:      [[T0:%.*]] = load i8** [[X]], align 8
-  // CHECK-LP64-NEXT: [[T1:%.*]] = icmp ne i8* [[T0]], null
-  // CHECK-LP64-NEXT: br i1 [[T1]],
-  // CHECK-LP64:      br label [[L:%[^ ]+]]
-  // CHECK-LP64:      [[T0:%.*]] = load i8** [[X]], align 8
-  // CHECK-LP64-NEXT: call void @use(i8* [[T0]])
-  // CHECK-LP64-NEXT: br label [[L]]
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-ivar-layout.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-ivar-layout.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-ivar-layout.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -fobjc-runtime-has-weak -triple x86_64-apple-darwin -O0 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// REQUIRES: x86-64-registered-target
-// rdar://8991729
-
- at interface NSObject {
-  id isa;
-}
- at end
-
- at interface AllPointers : NSObject {
-    id foo;
-    id __strong bar;    
-    NSObject *bletch;
-}
- at end
-
- at implementation AllPointers
- at end
-// CHECK-LP64: L_OBJC_CLASS_NAME_1:
-// CHECK-LP64-NEXT: .asciz	"\003"
-
- at class NSString, NSNumber;
- at interface A : NSObject {
-   NSString *foo;
-   NSNumber *bar;
-   unsigned int bletch;
-   __weak id delegate;
-}
- at end
-
- at interface B : A {
-  unsigned int x;
-  NSString *y;
-  NSString *z;
-}
- at end
-
- at implementation A @end
-
- at implementation B @end
-
-// CHECK-LP64: L_OBJC_CLASS_NAME_15:
-// CHECK-LP64-NEXT: .asciz	"\022"
-
- at interface UnsafePerson {
- at public
-    __unsafe_unretained id name;
-    __unsafe_unretained id age;
-    id value;
-}
- at end
-
- at implementation UnsafePerson @end
-// CHECK-LP64: L_OBJC_CLASS_NAME_20:
-// CHECK-LP64-NEXT: .asciz      "!"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-linetable.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-linetable.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-linetable.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -fblocks -fobjc-arc -g -triple x86_64-apple-darwin10 %s -o - | FileCheck %s
-
-// Legend: EXP = Return expression, RET = ret instruction
-
-// CHECK: define {{.*}}testNoSideEffect
-// CHECK: call void @objc_storeStrong{{.*}}
-// CHECK: call void @objc_storeStrong{{.*}} !dbg ![[ARC1:[0-9]+]]
-// CHECK: ret {{.*}} !dbg ![[RET1:[0-9]+]]
-
-// CHECK: define {{.*}}testNoCleanup
-// CHECK: ret {{.*}} !dbg ![[RET2:[0-9]+]]
-
-// CHECK: define {{.*}}testSideEffect
-// CHECK: @objc_msgSend{{.*}} !dbg ![[MSG3:[0-9]+]]
-// CHECK: ret {{.*}} !dbg ![[RET3:[0-9]+]]
-
-// CHECK: define {{.*}}testMultiline
-// CHECK: @objc_msgSend{{.*}} !dbg ![[MSG4:[0-9]+]]
-// CHECK: load{{.*}} !dbg ![[EXP4:[0-9]+]]
-// CHECK: ret {{.*}} !dbg ![[RET4:[0-9]+]]
-
-// CHECK: define {{.*}}testVoid
-// CHECK: call void @objc_storeStrong{{.*}}
-// CHECK: call void @objc_storeStrong{{.*}} !dbg ![[ARC5:[0-9]+]]
-// CHECK: ret {{.*}} !dbg ![[RET5:[0-9]+]]
-
-// CHECK: define {{.*}}testVoidNoReturn
-// CHECK: @objc_msgSend{{.*}} !dbg ![[MSG6:[0-9]+]]
-// CHECK: ret {{.*}} !dbg ![[RET6:[0-9]+]]
-
-// CHECK: define {{.*}}testNoCleanupSideEffect
-// CHECK: @objc_msgSend{{.*}} !dbg ![[MSG7:[0-9]+]]
-// CHECK: ret {{.*}} !dbg ![[RET7:[0-9]+]]
-
-
- at interface NSObject
-+ (id)alloc;
-- (id)init;
-- (id)retain;
- at end
-
- at class NSString;
-
- at interface AppDelegate : NSObject
-
- at end
-
- at implementation AppDelegate : NSObject
-
-- (int)testNoSideEffect:(NSString *)foo {
-  // CHECK: ![[ARC1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  return 1; // Return expression
-  // CHECK: ![[RET1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-}           // Cleanup + Ret
-
-- (int)testNoCleanup {
-  // CHECK: ![[RET2]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  return 1;
-}
-
-- (int)testSideEffect:(NSString *)foo {
-  // CHECK: ![[MSG3]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  return [self testNoSideEffect :foo];
-  // CHECK: ![[RET3]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-}
-
-- (int)testMultiline:(NSString *)foo {
-  // CHECK: ![[MSG4]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  int r = [self testSideEffect :foo];
-  // CHECK: ![[EXP4]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  return r;
-  // CHECK: ![[RET4]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-}
-
-- (void)testVoid:(NSString *)foo {
-  // CHECK: ![[ARC5]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  return;
-  // CHECK: ![[RET5]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-}
-
-- (void)testVoidNoReturn:(NSString *)foo {
-  // CHECK: ![[MSG6]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  [self testVoid :foo];
-  // CHECK: ![[RET6]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-}
-
-- (int)testNoCleanupSideEffect {
-  // CHECK: ![[MSG7]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  [self testVoid :@"foo"];
-  // CHECK: ![[RET7]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
-  return 1;
-}
-
-
- at end
-
-
-int main(int argc, const char** argv) {
-  AppDelegate *o = [[AppDelegate alloc] init];
-  return [o testMultiline :@"foo"];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-literals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-literals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-literals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -I %S/Inputs -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-
-#include "literal-support.h"
-
-// Check the various selector names we'll be using, in order.
-
-// CHECK: c"numberWithInt:\00"
-// CHECK: c"numberWithUnsignedInt:\00"
-// CHECK: c"numberWithUnsignedLongLong:\00"
-// CHECK: c"numberWithChar:\00"
-// CHECK: c"arrayWithObjects:count:\00"
-// CHECK: c"dictionaryWithObjects:forKeys:count:\00"
-// CHECK: c"prop\00"
-
-// CHECK: define void @test_numeric()
-void test_numeric() {
-  // CHECK: {{call.*objc_msgSend.*i32 17}}
-  // CHECK: call i8* @objc_retainAutoreleasedReturnValue
-  id ilit = @17;
-  // CHECK: {{call.*objc_msgSend.*i32 25}}
-  // CHECK: call i8* @objc_retainAutoreleasedReturnValue
-  id ulit = @25u;
-  // CHECK: {{call.*objc_msgSend.*i64 42}}
-  // CHECK: call i8* @objc_retainAutoreleasedReturnValue
-  id ulllit = @42ull;
-  // CHECK: {{call.*objc_msgSend.*i8 signext 97}}
-  // CHECK: call i8* @objc_retainAutoreleasedReturnValue
-  id charlit = @'a';
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @test_array
-void test_array(id a, id b) {
-  // CHECK: [[A:%.*]] = alloca i8*,
-  // CHECK: [[B:%.*]] = alloca i8*,
-
-  // Retaining parameters
-  // CHECK: call i8* @objc_retain(i8*
-  // CHECK: call i8* @objc_retain(i8*
-
-  // Constructing the array
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [2 x i8*]* [[OBJECTS:%[A-Za-z0-9]+]], i32 0, i32 0
-  // CHECK-NEXT: [[V0:%.*]] = load i8** [[A]],
-  // CHECK-NEXT: store i8* [[V0]], i8** [[T0]]
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [2 x i8*]* [[OBJECTS]], i32 0, i32 1
-  // CHECK-NEXT: [[V1:%.*]] = load i8** [[B]],
-  // CHECK-NEXT: store i8* [[V1]], i8** [[T0]]
-
-  // CHECK-NEXT: [[T0:%.*]] = load [[CLASS_T:%.*]]** @"\01L_OBJC_CLASSLIST
-  // CHECK-NEXT: [[SEL:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[CLASS_T]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = bitcast [2 x i8*]* [[OBJECTS]] to i8**
-  // CHECK-NEXT: [[T3:%.*]] = call i8* bitcast ({{.*@objc_msgSend.*}})(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i64 2)
-  // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]])
-  // CHECK: call void (...)* @clang.arc.use(i8* [[V0]], i8* [[V1]])
-  id arr = @[a, b];
-
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @test_dictionary
-void test_dictionary(id k1, id o1, id k2, id o2) {
-  // CHECK: [[K1:%.*]] = alloca i8*,
-  // CHECK: [[O1:%.*]] = alloca i8*,
-  // CHECK: [[K2:%.*]] = alloca i8*,
-  // CHECK: [[O2:%.*]] = alloca i8*,
-
-  // Retaining parameters
-  // CHECK: call i8* @objc_retain(i8*
-  // CHECK: call i8* @objc_retain(i8*
-  // CHECK: call i8* @objc_retain(i8*
-  // CHECK: call i8* @objc_retain(i8*
-
-  // Constructing the arrays
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [2 x i8*]* [[KEYS:%[A-Za-z0-9]+]], i32 0, i32 0
-  // CHECK-NEXT: [[V0:%.*]] = load i8** [[K1]],
-  // CHECK-NEXT: store i8* [[V0]], i8** [[T0]]
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [2 x i8*]* [[OBJECTS:%[A-Za-z0-9]+]], i32 0, i32 0
-  // CHECK-NEXT: [[V1:%.*]] = load i8** [[O1]],
-  // CHECK-NEXT: store i8* [[V1]], i8** [[T0]]
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [2 x i8*]* [[KEYS]], i32 0, i32 1
-  // CHECK-NEXT: [[V2:%.*]] = load i8** [[K2]],
-  // CHECK-NEXT: store i8* [[V2]], i8** [[T0]]
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [2 x i8*]* [[OBJECTS]], i32 0, i32 1
-  // CHECK-NEXT: [[V3:%.*]] = load i8** [[O2]],
-  // CHECK-NEXT: store i8* [[V3]], i8** [[T0]]
-
-  // Constructing the dictionary
-  // CHECK-NEXT: [[T0:%.*]] = load [[CLASS_T:%.*]]** @"\01L_OBJC_CLASSLIST
-  // CHECK-NEXT: [[SEL:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[CLASS_T]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = bitcast [2 x i8*]* [[OBJECTS]] to i8**
-  // CHECK-NEXT: [[T3:%.*]] = bitcast [2 x i8*]* [[KEYS]] to i8**
-  // CHECK-NEXT: [[T4:%.*]] = call i8* bitcast ({{.*@objc_msgSend.*}})(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i8** [[T3]], i64 2)
-  // CHECK-NEXT: [[T5:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T4]])
-  // CHECK-NEXT: call void (...)* @clang.arc.use(i8* [[V0]], i8* [[V1]], i8* [[V2]], i8* [[V3]])
-
-  id dict = @{ k1 : o1, k2 : o2 };
-
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}
-
- at interface A
- at end
-
- at interface B
- at property (retain) A* prop;
- at end
-
-// CHECK: define void @test_property
-void test_property(B *b) {
-  // Retain parameter
-  // CHECK: call i8* @objc_retain
-
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [1 x i8*]* [[OBJECTS:%.*]], i32 0, i32 0
-
-  // Invoke 'prop'
-  // CHECK:      [[SEL:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-  // CHECK-NEXT: [[T1:%.*]] = bitcast
-  // CHECK-NEXT: [[T2:%.*]] = call [[B:%.*]]* bitcast ({{.*}} @objc_msgSend to {{.*}})(i8* [[T1]], i8* [[SEL]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast [[B]]* [[T2]] to i8*
-  // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]])
-  // CHECK-NEXT: [[V0:%.*]] = bitcast i8* [[T4]] to [[B]]*
-  // CHECK-NEXT: [[V1:%.*]] = bitcast [[B]]* [[V0]] to i8*
-
-  // Store to array.
-  // CHECK-NEXT: store i8* [[V1]], i8** [[T0]]
-
-  // Invoke arrayWithObjects:count:
-  // CHECK-NEXT: [[T0:%.*]] = load [[CLASS_T]]** @"\01L_OBJC_CLASSLIST
-  // CHECK-NEXT: [[SEL:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[CLASS_T]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = bitcast [1 x i8*]* [[OBJECTS]] to i8**
-  // CHECK-NEXT: [[T3:%.*]] = call i8* bitcast ({{.*}} @objc_msgSend to {{.*}}(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i64 1)
-  // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]])
-  // CHECK-NEXT: call void (...)* @clang.arc.use(i8* [[V1]])
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: store
-  id arr = @[ b.prop ];
-
-  // Release b.prop
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[B]]* [[V0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-
-  // Destroy arr
-  // CHECK: call void @objc_release
-
-  // Destroy b
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-loadweakretained-release.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-loadweakretained-release.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-loadweakretained-release.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck %s
-// rdar://10849570
-
- at interface NSObject @end
-
- at interface SomeClass : NSObject
-- (id) init;
- at end
-
- at implementation SomeClass
-- (void)foo {
-}
-- (id) init {
-    return 0;
-}
-+ alloc { return 0; }
- at end
-
-int main (int argc, const char * argv[]) {
-    @autoreleasepool {
-        SomeClass *objPtr1 = [[SomeClass alloc] init];
-        __weak SomeClass *weakRef = objPtr1;
-
-        [weakRef foo];
-
-        objPtr1 = (void *)0;
-        return 0;
-    }
-}
-
-// CHECK: [[SIXTEEN:%.*]]  = call i8* @objc_loadWeakRetained(i8** {{%.*}})
-// CHECK-NEXT:  [[SEVENTEEN:%.*]] = bitcast i8* [[SIXTEEN]] to {{%.*}}
-// CHECK-NEXT:  [[EIGHTEEN:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_6"
-// CHECK-NEXT:  [[NINETEEN:%.*]] = bitcast %0* [[SEVENTEEN]] to i8*
-// CHECK-NEXT:  call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK-NEXT:  [[TWENTY:%.*]] = bitcast %0* [[SEVENTEEN]] to i8*
-// CHECK-NEXT:  call void @objc_release(i8* [[TWENTY]])
-
-void test1(int cond) {
-  extern void test34_sink(id *);
-  __weak id weak;
-  test34_sink(cond ? &weak : 0);
-}
-
-// CHECK: define void @test1(
-// CHECK: [[CONDADDR:%.*]] = alloca i32
-// CHECK-NEXT: [[WEAK:%.*]] = alloca i8*
-// CHECK-NEXT: [[INCRTEMP:%.*]] = alloca i8*
-// CHECK-NEXT: [[CONDCLEANUPSAVE:%.*]] = alloca i8*
-// CHECK-NEXT: [[CONDCLEANUP:%.*]] = alloca i1
-// CHECK-NEXT: store i32
-// CHECK-NEXT: store i8* null, i8** [[WEAK]]
-// CHECK:  [[COND1:%.*]] = phi i8**
-// CHECK-NEXT: [[ICRISNULL:%.*]] = icmp eq i8** [[COND1]], null
-// CHECK-NEXT: [[ICRARGUMENT:%.*]] = select i1 [[ICRISNULL]], i8** null, i8** [[INCRTEMP]]
-// CHECK-NEXT: store i1 false, i1* [[CONDCLEANUP]]
-// CHECK-NEXT: br i1 [[ICRISNULL]], label [[ICRCONT:%.*]], label [[ICRCOPY:%.*]]
-// CHECK:  [[ONE:%.*]] = call i8* @objc_loadWeakRetained(
-// CHECK-NEXT: store i8* [[ONE]], i8** [[CONDCLEANUPSAVE]]
-// CHECK-NEXT: store i1 true, i1* [[CONDCLEANUP]]
-// CHECK-NEXT: store i8* [[ONE]], i8** [[INCRTEMP]]
-// CHECK-NEXT: br label
-
-// CHECK: call void @test34_sink(
-// CHECK-NEXT: [[ICRISNULL1:%.*]] = icmp eq i8** [[COND1]], null
-// CHECK-NEXT: br i1 [[ICRISNULL1]], label [[ICRDONE:%.*]], label [[ICRWRITEBACK:%.*]]
-// CHECK:  [[TWO:%.*]] = load i8** [[INCRTEMP]]
-// CHECK-NEXT:  [[THREE:%.*]] = call i8* @objc_storeWeak(
-// CHECK-NEXT  br label [[ICRDONE]]
-// CHECK:  [[CLEANUPISACTIVE:%.*]] = load i1* [[CONDCLEANUP]]
-// CHECK-NEXT:  br i1 [[CLEANUPISACTIVE]], label [[CLEASNUPACTION:%.*]], label [[CLEANUPDONE:%.*]]
-
-// CHECK: [[FOUR:%.*]] = load i8** [[CONDCLEANUPSAVE]]
-// CHECK-NEXT: call void @objc_release(i8* [[FOUR]])
-// CHECK-NEXT:  br label
-// CHECK:  call void @objc_destroyWeak(i8** [[WEAK]])
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-no-arc-exceptions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-no-arc-exceptions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-no-arc-exceptions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fblocks -fexceptions -fobjc-exceptions -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fblocks -fexceptions -fobjc-exceptions -O0 -disable-llvm-optzns -o - %s | FileCheck -check-prefix=NO-METADATA %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fblocks -fexceptions -fobjc-exceptions -O2 -disable-llvm-optzns -o - %s -fobjc-arc-exceptions | FileCheck -check-prefix=NO-METADATA %s
-
-// The front-end should emit clang.arc.no_objc_arc_exceptions in -fobjc-arc-exceptions
-// mode when optimization is enabled, and not otherwise.
-
-void thrower(void);
-void not(void) __attribute__((nothrow));
-
-// CHECK: define void @test0(
-// CHECK: call void @thrower(), !clang.arc.no_objc_arc_exceptions !
-// CHECK: call void @not() [[NUW:#[0-9]+]], !clang.arc.no_objc_arc_exceptions !
-// NO-METADATA: define void @test0(
-// NO-METADATA-NOT: !clang.arc.no_objc_arc_exceptions
-// NO-METADATA: }
-void test0(void) {
-  thrower();
-  not();
-}
-
-// CHECK: define void @test1(
-// CHECK: call void @thrower(), !clang.arc.no_objc_arc_exceptions !
-// CHECK: call void @not() [[NUW]], !clang.arc.no_objc_arc_exceptions !
-// NO-METADATA: define void @test1(
-// NO-METADATA-NOT: !clang.arc.no_objc_arc_exceptions
-// NO-METADATA: }
-void test1(id x) {
-  id y = x;
-  thrower();
-  not();
-}
-
-void NSLog(id, ...);
-
-// CHECK: define void @test2(
-// CHECK: invoke void (i8*, ...)* @NSLog(i8* bitcast (%struct.NSConstantString* @_unnamed_cfstring_ to i8*), i32* %{{.*}})
-// CHECK:   to label %{{.*}} unwind label %{{.*}}, !clang.arc.no_objc_arc_exceptions !
-// NO-METADATA: define void @test2(
-// NO-METADATA-NOT: !clang.arc.no_objc_arc_exceptions
-// NO-METADATA: }
-void test2(void) {
-    @autoreleasepool {
-        __attribute__((__blocks__(byref))) int x;
-        NSLog(@"Address of x outside of block: %p", &x);
-    }
-}
-
-// CHECK: define void @test3(
-// CHECK: invoke void %{{.*}}(i8* %{{.*}})
-// CHECK:   to label %{{.*}} unwind label %{{.*}}, !clang.arc.no_objc_arc_exceptions !
-// NO-METADATA: define void @test3(
-// NO-METADATA-NOT: !clang.arc.no_objc_arc_exceptions
-// NO-METADATA: }
-void test3(void) {
-    @autoreleasepool {
-        __attribute__((__blocks__(byref))) int x;
-        ^{
-            NSLog(@"Address of x in non-assigned block: %p", &x);
-        }();
-    }
-}
-
-// CHECK: define void @test4(
-// CHECK: invoke void %{{.*}}(i8* %{{.*}})
-// CHECK:   to label %{{.*}} unwind label %{{.*}}, !clang.arc.no_objc_arc_exceptions !
-// NO-METADATA: define void @test4(
-// NO-METADATA-NOT: !clang.arc.no_objc_arc_exceptions
-// NO-METADATA: }
-void test4(void) {
-    @autoreleasepool {
-        __attribute__((__blocks__(byref))) int x;
-        void (^b)(void) = ^{
-            NSLog(@"Address of x in assigned block: %p", &x);
-        };
-        b();
-    }
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-no-runtime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-no-runtime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-no-runtime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc -emit-llvm %s -o - | FileCheck %s
-
-// rdar://problem/9224855
-id make(void) __attribute__((ns_returns_retained));
-void test0() {
-  make();
-  id x = 0;
-  // CHECK: call void @objc_release(
-  // CHECK: call void @objc_storeStrong(
-}
-
-// CHECK: declare extern_weak void @objc_release(
-// CHECK: declare extern_weak void @objc_storeStrong(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-precise-lifetime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-precise-lifetime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-precise-lifetime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-
-#define PRECISE_LIFETIME __attribute__((objc_precise_lifetime))
-
-id test0_helper(void) __attribute__((ns_returns_retained));
-void test0() {
-  PRECISE_LIFETIME id x = test0_helper();
-  x = 0;
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: [[CALL:%.*]] = call i8* @test0_helper()
-  // CHECK-NEXT: store i8* [[CALL]], i8** [[X]]
-
-  // CHECK-NEXT: [[T1:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: store i8* null, i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW:#[0-9]+]]
-  // CHECK-NOT:  clang.imprecise_release
-
-  // CHECK-NEXT: [[T1:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW:#[0-9]+]]
-  // CHECK-NOT:  clang.imprecise_release
-
-  // CHECK-NEXT: ret void
-}
-
-// rdar://problem/9821110
- at interface Test1
-- (char*) interior __attribute__((objc_returns_inner_pointer));
-// Should we allow this on properties?
- at end
-extern Test1 *test1_helper(void);
-
-// CHECK: define void @test1a()
-void test1a(void) {
-  // CHECK:      [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*
-  // CHECK-NEXT: store [[TEST1]]* [[T3]]
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]**
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutorelease(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*
-  // CHECK-NEXT: [[T4:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[T5:%.*]] = bitcast [[TEST1]]* [[T3]] to i8*
-  // CHECK-NEXT: [[T6:%.*]] = call i8* bitcast
-  // CHECK-NEXT: store i8* [[T6]], i8**
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]**
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: ret void
-  Test1 *ptr = test1_helper();
-  char *c = [(ptr) interior];
-}
-
-// CHECK: define void @test1b()
-void test1b(void) {
-  // CHECK:      [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*
-  // CHECK-NEXT: store [[TEST1]]* [[T3]]
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]**
-  // CHECK-NEXT: [[T1:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T3:%.*]] = call i8* bitcast
-  // CHECK-NEXT: store i8* [[T3]], i8**
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]**
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]]
-  // CHECK-NOT:  clang.imprecise_release
-  // CHECK-NEXT: ret void
-  __attribute__((objc_precise_lifetime)) Test1 *ptr = test1_helper();
-  char *c = [ptr interior];
-}
-
- at interface Test2 {
- at public
-  id ivar;
-}
- at end
-// CHECK:      define void @test2(
-void test2(Test2 *x) {
-  x->ivar = 0;
-  // CHECK:      [[X:%.*]] = alloca [[TEST2:%.*]]*
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST2]]* {{%.*}} to i8*
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]]) [[NUW]]
-  // CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[TEST2]]*
-  // CHECK-NEXT: store [[TEST2]]* [[T2]], [[TEST2]]** [[X]],
-
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST2]]** [[X]],
-  // CHECK-NEXT: [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test2.ivar"
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST2]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds i8* [[T1]], i64 [[OFFSET]]
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i8**
-  // CHECK-NEXT: [[T4:%.*]] = load i8** [[T3]],
-  // CHECK-NEXT: store i8* null, i8** [[T3]],
-  // CHECK-NEXT: call void @objc_release(i8* [[T4]]) [[NUW]]
-  // CHECK-NOT:  imprecise
-
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST2]]** [[X]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST2]]* [[T0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release
-
-  // CHECK-NEXT: ret void
-}
-
-// CHECK:      define void @test3(i8*
-void test3(PRECISE_LIFETIME id x) {
-  // CHECK:      [[X:%.*]] = alloca i8*,
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* {{%.*}}) [[NUW]]
-  // CHECK-NEXT: store i8* [[T0]], i8** [[X]],
-
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]
-  // CHECK-NOT:  imprecise_release
-
-  // CHECK-NEXT: ret void  
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,134 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc -emit-llvm %s -o - | FileCheck %s
-
-// rdar://problem/10290317
- at interface Test0
-- (void) setValue: (id) x;
- at end
-void test0(Test0 *t0, id value) {
-  t0.value = value;
-}
-// CHECK: define void @test0(
-// CHECK: call void @objc_storeStrong
-// CHECK: call void @objc_storeStrong
-// CHECK: @objc_msgSend
-// CHECK: call void @objc_storeStrong(
-// CHECK: call void @objc_storeStrong(
-
-struct S1 { Class isa; };
- at interface Test1
- at property (nonatomic, strong) __attribute__((NSObject)) struct S1 *pointer;
- at end
- at implementation Test1
- at synthesize pointer;
- at end
-//   The getter should be a simple load.
-// CHECK:    define internal [[S1:%.*]]* @"\01-[Test1 pointer]"(
-// CHECK:      [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test1.pointer"
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST1:%.*]]* {{%.*}} to i8*
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8* [[T0]], i64 [[OFFSET]]
-// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[S1]]**
-// CHECK-NEXT: [[T3:%.*]] = load [[S1]]** [[T2]], align 8
-// CHECK-NEXT: ret [[S1]]* [[T3]]
-
-//   The setter should be using objc_setProperty.
-// CHECK:    define internal void @"\01-[Test1 setPointer:]"(
-// CHECK:      [[T0:%.*]] = bitcast [[TEST1]]* {{%.*}} to i8*
-// CHECK-NEXT: [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test1.pointer"
-// CHECK-NEXT: [[T1:%.*]] = load [[S1]]** {{%.*}}
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[S1]]* [[T1]] to i8*
-// CHECK-NEXT: call void @objc_setProperty(i8* [[T0]], i8* {{%.*}}, i64 [[OFFSET]], i8* [[T2]], i1 zeroext false, i1 zeroext false)
-// CHECK-NEXT: ret void
-
-
-// rdar://problem/12039404
- at interface Test2 {
- at private
-  Class _theClass;
-}
- at property (copy) Class theClass;
- at end
-
-static Class theGlobalClass;
- at implementation Test2
- at synthesize theClass = _theClass;
-- (void) test {
-  _theClass = theGlobalClass;
-}
- at end
-// CHECK:    define internal void @"\01-[Test2 test]"(
-// CHECK:      [[T0:%.*]] = load i8** @theGlobalClass, align 8
-// CHECK-NEXT: [[T1:%.*]] = load [[TEST2:%.*]]**
-// CHECK-NEXT: [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test2._theClass"
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST2]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 [[OFFSET]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T4]], i8* [[T0]]) [[NUW:#[0-9]+]]
-// CHECK-NEXT: ret void
-
-// CHECK:    define internal i8* @"\01-[Test2 theClass]"(
-// CHECK:      [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test2._theClass"
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_getProperty(i8* {{.*}}, i8* {{.*}}, i64 [[OFFSET]], i1 zeroext true)
-// CHECK-NEXT: ret i8* [[T0]]
-
-// CHECK:    define internal void @"\01-[Test2 setTheClass:]"(
-// CHECK:      [[T0:%.*]] = bitcast [[TEST2]]* {{%.*}} to i8*
-// CHECK-NEXT: [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test2._theClass"
-// CHECK-NEXT: [[T1:%.*]] = load i8** {{%.*}}
-// CHECK-NEXT: call void @objc_setProperty(i8* [[T0]], i8* {{%.*}}, i64 [[OFFSET]], i8* [[T1]], i1 zeroext true, i1 zeroext true)
-// CHECK-NEXT: ret void
-
-// CHECK:    define internal void @"\01-[Test2 .cxx_destruct]"(
-// CHECK:      [[T0:%.*]] = load [[TEST2]]**
-// CHECK-NEXT: [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test2._theClass"
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST2]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds i8* [[T1]], i64 [[OFFSET]]
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T3]], i8* null) [[NUW]]
-// CHECK-NEXT: ret void
-
-// rdar://13115896
- at interface Test3
- at property id copyMachine;
- at end
-
-void test3(Test3 *t) {
-  id x = t.copyMachine;
-  x = [t copyMachine];
-}
-// CHECK:    define void @test3([[TEST3:%.*]]*
-//   Prologue.
-// CHECK:      [[T:%.*]] = alloca [[TEST3]]*,
-// CHECK-NEXT: [[X:%.*]] = alloca i8*,
-//   Property access.
-// CHECK:      [[T0:%.*]] = load [[TEST3]]** [[T]],
-// CHECK-NEXT: [[SEL:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST3]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* bitcast ({{.*}} @objc_msgSend to {{.*}})(i8* [[T1]], i8* [[SEL]])
-// CHECK-NEXT: store i8* [[T2]], i8** [[X]],
-//   Message send.
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST3]]** [[T]],
-// CHECK-NEXT: [[SEL:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST3]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* bitcast ({{.*}} @objc_msgSend to {{.*}})(i8* [[T1]], i8* [[SEL]])
-// CHECK-NEXT: [[T3:%.*]] = load i8** [[X]],
-// CHECK-NEXT: store i8* [[T2]], i8** [[X]],
-// CHECK-NEXT: call void @objc_release(i8* [[T3]])
-//   Epilogue.
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST3]]** [[T]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)
-// CHECK-NEXT: ret void
-
- at implementation Test3
-- (id) copyMachine {
-  extern id test3_helper(void);
-  return test3_helper();
-}
-// CHECK:    define internal i8* @"\01-[Test3 copyMachine]"(
-// CHECK:      [[T0:%.*]] = call i8* @test3_helper()
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-// CHECK-NEXT: ret i8* [[T1]]
-- (void) setCopyMachine: (id) x {}
- at end
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-related-result-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-related-result-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-related-result-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -o - %s | FileCheck %s
-
- at interface Test0
-- (id) self;
- at end
-void test0(Test0 *val) {
-  Test0 *x = [val self];
-
-// CHECK:    define void @test0(
-// CHECK:      [[VAL:%.*]] = alloca [[TEST0:%.*]]*
-// CHECK-NEXT: [[X:%.*]] = alloca [[TEST0]]*
-// CHECK-NEXT: store [[TEST0]]* null
-// CHECK-NEXT: bitcast
-// CHECK-NEXT: bitcast
-// CHECK-NEXT: call void @objc_storeStrong(
-// CHECK-NEXT: load [[TEST0]]** [[VAL]],
-// CHECK-NEXT: load
-// CHECK-NEXT: bitcast
-// CHECK-NEXT: [[T0:%.*]] = call i8* bitcast (
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[TEST0]]*
-// CHECK-NEXT: store [[TEST0]]* [[T2]], [[TEST0]]** [[X]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST0]]** [[X]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST0]]** [[VAL]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)
-// CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-ternary-op.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-ternary-op.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-ternary-op.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,138 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-
-void test0(_Bool cond) {
-  id test0_helper(void) __attribute__((ns_returns_retained));
-
-  // CHECK:      define void @test0(
-  // CHECK:      [[COND:%.*]] = alloca i8,
-  // CHECK-NEXT: [[X:%.*]] = alloca i8*,
-  // CHECK-NEXT: [[RELVAL:%.*]] = alloca i8*
-  // CHECK-NEXT: [[RELCOND:%.*]] = alloca i1
-  // CHECK-NEXT: zext
-  // CHECK-NEXT: store
-  // CHECK-NEXT: [[T0:%.*]] = load i8* [[COND]]
-  // CHECK-NEXT: [[T1:%.*]] = trunc i8 [[T0]] to i1
-  // CHECK-NEXT: store i1 false, i1* [[RELCOND]]
-  // CHECK-NEXT: br i1 [[T1]],
-  // CHECK:      br label
-  // CHECK:      [[CALL:%.*]] = call i8* @test0_helper()
-  // CHECK-NEXT: store i8* [[CALL]], i8** [[RELVAL]]
-  // CHECK-NEXT: store i1 true, i1* [[RELCOND]]
-  // CHECK-NEXT: br label
-  // CHECK:      [[T0:%.*]] = phi i8* [ null, {{%.*}} ], [ [[CALL]], {{%.*}} ]
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]]) [[NUW:#[0-9]+]]
-  // CHECK-NEXT: store i8* [[T1]], i8** [[X]],
-  // CHECK-NEXT: [[REL:%.*]] = load i1* [[RELCOND]]
-  // CHECK-NEXT: br i1 [[REL]],
-  // CHECK:      [[T0:%.*]] = load i8** [[RELVAL]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]
-  // CHECK-NEXT: br label
-  // CHECK:      [[T0:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]
-  // CHECK-NEXT: ret void
-  id x = (cond ? 0 : test0_helper());
-}
-
-void test1(int cond) {
-  __strong id strong;
-  __weak id weak;
-  extern void test1_sink(id *);
-  test1_sink(cond ? &strong : 0);
-  test1_sink(cond ? &weak : 0);
-
-  // CHECK:    define void @test1(
-  // CHECK:      [[COND:%.*]] = alloca i32
-  // CHECK-NEXT: [[STRONG:%.*]] = alloca i8*
-  // CHECK-NEXT: [[WEAK:%.*]] = alloca i8*
-  // CHECK-NEXT: [[TEMP1:%.*]] = alloca i8*
-  // CHECK-NEXT: [[TEMP2:%.*]] = alloca i8*
-  // CHECK-NEXT: [[CONDCLEANUPSAVE:%.*]] = alloca i8*
-  // CHECK-NEXT: [[CONDCLEANUP:%.*]] = alloca i1
-  // CHECK-NEXT: store i32
-  // CHECK-NEXT: store i8* null, i8** [[STRONG]]
-  // CHECK-NEXT: call i8* @objc_initWeak(i8** [[WEAK]], i8* null)
-
-  // CHECK-NEXT: [[T0:%.*]] = load i32* [[COND]]
-  // CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 0
-  // CHECK:      [[ARG:%.*]] = phi i8**
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null
-  // CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i8** null, i8** [[TEMP1]]
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[T0:%.*]] = load i8** [[ARG]]
-  // CHECK-NEXT: store i8* [[T0]], i8** [[TEMP1]]
-  // CHECK-NEXT: br label
-  // CHECK:      [[W:%.*]] = phi i8* [ [[T0]], {{%.*}} ], [ undef, {{%.*}} ]
-  // CHECK-NEXT: call void @test1_sink(i8** [[T1]])
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[T0:%.*]] = load i8** [[TEMP1]]
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-  // CHECK-NEXT: call void (...)* @clang.arc.use(i8* [[W]]) [[NUW]]
-  // CHECK-NEXT: [[T2:%.*]] = load i8** [[ARG]]
-  // CHECK-NEXT: store i8* [[T1]], i8** [[ARG]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T2]])
-  // CHECK-NEXT: br label
-
-  // CHECK:      [[T0:%.*]] = load i32* [[COND]]
-  // CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 0
-  // CHECK:      [[ARG:%.*]] = phi i8**
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null
-  // CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i8** null, i8** [[TEMP2]]
-  // CHECK-NEXT: store i1 false, i1* [[CONDCLEANUP]]
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[T0:%.*]] = call i8* @objc_loadWeakRetained(i8** [[ARG]])
-  // CHECK-NEXT: store i8* [[T0]], i8** [[CONDCLEANUPSAVE]]
-  // CHECK-NEXT: store i1 true, i1* [[CONDCLEANUP]]
-  // CHECK-NEXT: store i8* [[T0]], i8** [[TEMP2]]
-  // CHECK-NEXT: br label
-  // CHECK:      call void @test1_sink(i8** [[T1]])
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[T0:%.*]] = load i8** [[TEMP2]]
-  // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[ARG]], i8* [[T0]])
-  // CHECK-NEXT: br label
-
-  // CHECK:      call void @objc_destroyWeak(i8** [[WEAK]])
-  // CHECK:      ret void
-}
-
-// rdar://13113981
-// Test that, when emitting an expression at +1 that we can't peephole,
-// we emit the retain inside the full-expression.  If we ever peephole
-// +1s of conditional expressions (which we probably ought to), we'll
-// need to find another example of something we need to do this for.
-void test2(int cond) {
-  extern id test2_producer(void);
-  for (id obj in cond ? test2_producer() : (void*) 0) {
-  }
-
-  // CHECK:    define void @test2(
-  // CHECK:      [[COND:%.*]] = alloca i32,
-  // CHECK:      alloca i8*
-  // CHECK:      [[CLEANUP_SAVE:%.*]] = alloca i8*
-  // CHECK:      [[RUN_CLEANUP:%.*]] = alloca i1
-  //   Evaluate condition; cleanup disabled by default.
-  // CHECK:      [[T0:%.*]] = load i32* [[COND]],
-  // CHECK-NEXT: icmp ne i32 [[T0]], 0
-  // CHECK-NEXT: store i1 false, i1* [[RUN_CLEANUP]]
-  // CHECK-NEXT: br i1
-  //   Within true branch, cleanup enabled.
-  // CHECK:      [[T0:%.*]] = call i8* @test2_producer()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: store i8* [[T1]], i8** [[CLEANUP_SAVE]]
-  // CHECK-NEXT: store i1 true, i1* [[RUN_CLEANUP]]
-  // CHECK-NEXT: br label
-  //   Join point for conditional operator; retain immediately.
-  // CHECK:      [[T0:%.*]] = phi i8* [ [[T1]], {{%.*}} ], [ null, {{%.*}} ]
-  // CHECK-NEXT: [[RESULT:%.*]] = call i8* @objc_retain(i8* [[T0]])
-  //   Leaving full-expression; run conditional cleanup.
-  // CHECK-NEXT: [[T0:%.*]] = load i1* [[RUN_CLEANUP]]
-  // CHECK-NEXT: br i1 [[T0]]
-  // CHECK:      [[T0:%.*]] = load i8** [[CLEANUP_SAVE]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: br label
-  //   And way down at the end of the loop:
-  // CHECK:      call void @objc_release(i8* [[RESULT]])
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unbridged-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unbridged-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unbridged-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -emit-llvm  -fobjc-arc -o - %s | FileCheck %s
-// rdar://9744349
-
-typedef const struct __CFString * CFStringRef;
-
- at interface I 
- at property CFStringRef P;
-- (CFStringRef) CFMeth __attribute__((cf_returns_retained));
-- (CFStringRef) newSomething;
-- (CFStringRef) P __attribute__((cf_returns_retained));
- at end
-
- at implementation I
- at synthesize P;
-- (id) Meth {
-    I* p1 = (id)[p1 P];
-    id p2 = (id)[p1 CFMeth];
-    id p3 = (id)[p1 newSomething];
-    return (id) p1.P;
-}
-- (CFStringRef) CFMeth { return 0; }
-- (CFStringRef) newSomething { return 0; }
-- (CFStringRef) P { return 0; }
-- (void) setP : (CFStringRef)arg {}
- at end
-
-// rdar://9544832
-CFStringRef SomeOtherFunc() __attribute__((cf_returns_retained));
-id MMM()
-{
-  id obj = (id)((CFStringRef) __builtin___CFStringMakeConstantString ("" "Some CF String" ""));
-  return 0;
-}
-
-// CHECK-NOT: call i8* @objc_retainAutoreleasedReturnValue

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unopt.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unopt.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unopt.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-runtime-has-weak -fblocks -fobjc-arc -o - %s | FileCheck %s
-
-// A test to ensure that we generate fused calls at -O0.
-
- at class Test0;
-Test0 *test0(void) {
-  extern Test0 *test0_helper;
-  return test0_helper;
-
-  // CHECK:      [[LD:%.*]] = load [[TEST0:%.*]]** @test0_helper
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST0]]* [[LD]] to i8*
-  // CHECK-NEXT: [[T1:%.*]] = tail call i8* @objc_retainAutoreleaseReturnValue(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[TEST0]]*
-  // CHECK-NEXT: ret [[TEST0]]* [[T2]]
-}
-
-id test1(void) {
-  extern id test1_helper;
-  return test1_helper;
-
-  // CHECK:      [[LD:%.*]] = load i8** @test1_helper
-  // CHECK-NEXT: [[T0:%.*]] = tail call i8* @objc_retainAutoreleaseReturnValue(i8* [[LD]])
-  // CHECK-NEXT: ret i8* [[T0]]
-}
-
-void test2(void) {
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: store i8* null, i8** [[X]]
-  // CHECK-NEXT: call void @objc_destroyWeak(i8** [[X]])
-  // CHECK-NEXT: ret void
-  __weak id x;
-}
-
-id test3(void) {
-  extern id test3_helper(void);
-  // CHECK:      [[T0:%.*]] = call i8* @test3_helper()
-  // CHECK-NEXT: ret i8* [[T0]]
-  return test3_helper();
-}
-
- at interface Test4 { id x; } @end
- at interface Test4_sub : Test4 { id y; } @end
-Test4 *test4(void) {
-  extern Test4_sub *test4_helper(void);
-  // CHECK:      [[T0:%.*]] = call [[TEST4S:%.*]]* @test4_helper()
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST4S]]* [[T0]] to [[TEST4:%.*]]*
-  // CHECK-NEXT: ret [[TEST4]]* [[T1]]
-  return test4_helper();
-}
-
-// rdar://problem/9418404
- at class Test5;
-void test5(void) {
-  Test5 *x, *y;
-  if ((x = y))
-    y = 0;
-
-// CHECK:    define void @test5()
-// CHECK:      [[X:%.*]] = alloca [[TEST5:%.*]]*,
-// CHECK-NEXT: [[Y:%.*]] = alloca [[TEST5:%.*]]*,
-// CHECK-NEXT: store [[TEST5]]* null, [[TEST5]]** [[X]],
-// CHECK-NEXT: store [[TEST5]]* null, [[TEST5]]** [[Y]],
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST5]]** [[Y]],
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST5]]** [[X]] to i8**
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST5]]* [[T0]] to i8*
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T1]], i8* [[T2]])
-// CHECK-NEXT: [[T3:%.*]] = icmp ne [[TEST5]]* [[T0]], null
-// CHECK-NEXT: br i1 [[T3]],
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unoptimized-byref-var.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unoptimized-byref-var.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-unoptimized-byref-var.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=CHECK-UNOPT %s
-// rdar://12530881
-
-void test19() {
-   __block id x;
-// CHECK-UNOPT: define internal void @__Block_byref_object_copy
-// CHECK-UNOPT: [[X:%.*]] = getelementptr inbounds [[BYREF_T:%.*]]* [[VAR:%.*]], i32 0, i32 6
-// CHECK-UNOPT: [[X2:%.*]] = getelementptr inbounds [[BYREF_T:%.*]]* [[VAR1:%.*]], i32 0, i32 6
-// CHECK-UNOPT-NEXT: [[SIX:%.*]] = load i8** [[X2]], align 8
-// CHECK-UNOPT-NEXT: store i8* null, i8** [[X]], align 8
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[X]], i8* [[SIX]]) [[NUW:#[0-9]+]]
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[X2]], i8* null) [[NUW]]
-// CHECK-UNOPT-NEXT: ret void
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-weak-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-weak-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-weak-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-runtime-has-weak -fblocks -fobjc-arc -o - %s | FileCheck %s
-// rdar://8899430
-
- at interface WeakPropertyTest {
-    __weak id PROP;
-}
- at property () __weak id PROP;
- at end
-
- at implementation WeakPropertyTest
- at synthesize PROP;
- at end
-
-// CHECK:     define internal i8* @"\01-[WeakPropertyTest PROP]"
-// CHECK:       [[SELF:%.*]] = alloca [[WPT:%.*]]*,
-// CHECK-NEXT:  [[CMD:%.*]] = alloca i8*,
-// CHECK-NEXT:  store [[WPT]]* {{%.*}}, [[WPT]]** [[SELF]]
-// CHECK-NEXT:  store i8* {{%.*}}, i8** [[CMD]]
-// CHECK-NEXT:  [[T0:%.*]] = load [[WPT]]** [[SELF]]
-// CHECK-NEXT:  [[T1:%.*]] = load i64* @"OBJC_IVAR_$_WeakPropertyTest.PROP"
-// CHECK-NEXT:  [[T2:%.*]] = bitcast [[WPT]]* [[T0]] to i8*
-// CHECK-NEXT:  [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 [[T1]]
-// CHECK-NEXT:  [[T4:%.*]] = bitcast i8* [[T3]] to i8**
-// CHECK-NEXT:  [[T5:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T4]])
-// CHECK-NEXT:  [[T6:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T5]])
-// CHECK-NEXT:  ret i8* [[T6]]
-
-// CHECK:     define internal void @"\01-[WeakPropertyTest setPROP:]"
-// CHECK:       [[SELF:%.*]] = alloca [[WPT:%.*]]*,
-// CHECK-NEXT:  [[CMD:%.*]] = alloca i8*,
-// CHECK-NEXT:  [[PROP:%.*]] = alloca i8*,
-// CHECK-NEXT:  store [[WPT]]* {{%.*}}, [[WPT]]** [[SELF]]
-// CHECK-NEXT:  store i8* {{%.*}}, i8** [[CMD]]
-// CHECK-NEXT:  store i8* {{%.*}}, i8** [[PROP]]
-// CHECK-NEXT:  [[V:%.*]] = load i8** [[PROP]]
-// CHECK-NEXT:  [[T0:%.*]] = load [[WPT]]** [[SELF]]
-// CHECK-NEXT:  [[T1:%.*]] = load i64* @"OBJC_IVAR_$_WeakPropertyTest.PROP"
-// CHECK-NEXT:  [[T2:%.*]] = bitcast [[WPT]]* [[T0]] to i8*
-// CHECK-NEXT:  [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 [[T1]]
-// CHECK-NEXT:  [[T4:%.*]] = bitcast i8* [[T3]] to i8**
-// CHECK-NEXT:  call i8* @objc_storeWeak(i8** [[T4]], i8* [[V]])
-// CHECK-NEXT:  ret void
-
-// CHECK:     define internal void @"\01-[WeakPropertyTest .cxx_destruct]"
-// CHECK:       [[SELF:%.*]] = alloca [[WPT:%.*]]*,
-// CHECK-NEXT:  [[CMD:%.*]] = alloca i8*,
-// CHECK-NEXT:  store [[WPT]]* {{%.*}}, [[WPT]]** [[SELF]]
-// CHECK-NEXT:  store i8* {{%.*}}, i8** [[CMD]]
-// CHECK-NEXT:  [[T0:%.*]] = load [[WPT]]** [[SELF]]
-// CHECK-NEXT:  [[T1:%.*]] = load i64* @"OBJC_IVAR_$_WeakPropertyTest.PROP"
-// CHECK-NEXT:  [[T2:%.*]] = bitcast [[WPT]]* [[T0]] to i8*
-// CHECK-NEXT:  [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 [[T1]]
-// CHECK-NEXT:  [[T4:%.*]] = bitcast i8* [[T3]] to i8**
-// CHECK-NEXT:  call void @objc_destroyWeak(i8** [[T4]])
-// CHECK-NEXT:  ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-with-atthrow.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-with-atthrow.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc-with-atthrow.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fobjc-exceptions -o - %s | FileCheck %s
-// pr10411
-// rdar://10042689
-
-id make(void);
-void test() { 
-  @throw make();
-}
-
-// TODO: We should probably emit this specific pattern without the reclaim.
-
-// CHECK:    define void @test()
-// CHECK:      [[T0:%.*]] = call i8* @make()
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_autorelease(i8* [[T1]])
-// CHECK-NEXT: call void @objc_exception_throw(i8* [[T2]]) [[NR:#[0-9]+]]
-// CHECK-NEXT: unreachable
-
-// CHECK: attributes [[NR]] = { noreturn }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1430 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=CHECK-GLOBALS %s
-
-// rdar://13129783. Check both native/non-native arc platforms. Here we check
-// that they treat nonlazybind differently.
-// RUN: %clang_cc1 -fobjc-runtime=macosx-10.6.0 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=ARC-ALIEN %s
-// RUN: %clang_cc1 -fobjc-runtime=macosx-10.7.0 -triple x86_64-apple-darwin11 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=ARC-NATIVE %s
-
-// ARC-ALIEN: declare extern_weak void @objc_storeStrong(i8**, i8*)
-// ARC-ALIEN: declare extern_weak i8* @objc_retain(i8*)
-// ARC-ALIEN: declare extern_weak i8* @objc_autoreleaseReturnValue(i8*)
-// ARC-ALIEN: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]
-// ARC-ALIEN: declare extern_weak void @objc_release(i8*)
-// ARC-ALIEN: declare extern_weak i8* @objc_retainAutoreleasedReturnValue(i8*)
-// ARC-ALIEN: declare extern_weak i8* @objc_initWeak(i8**, i8*)
-// ARC-ALIEN: declare extern_weak i8* @objc_storeWeak(i8**, i8*)
-// ARC-ALIEN: declare extern_weak i8* @objc_loadWeakRetained(i8**)
-// ARC-ALIEN: declare extern_weak void @objc_destroyWeak(i8**)
-// ARC-ALIEN: declare extern_weak i8* @objc_autorelease(i8*)
-// ARC-ALIEN: declare extern_weak i8* @objc_retainAutorelease(i8*)
-
-// ARC-NATIVE: declare void @objc_storeStrong(i8**, i8*)
-// ARC-NATIVE: declare i8* @objc_retain(i8*) [[NLB:#[0-9]+]]
-// ARC-NATIVE: declare i8* @objc_autoreleaseReturnValue(i8*)
-// ARC-NATIVE: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB]]
-// ARC-NATIVE: declare void @objc_release(i8*) [[NLB]]
-// ARC-NATIVE: declare i8* @objc_retainAutoreleasedReturnValue(i8*)
-// ARC-NATIVE: declare i8* @objc_initWeak(i8**, i8*)
-// ARC-NATIVE: declare i8* @objc_storeWeak(i8**, i8*)
-// ARC-NATIVE: declare i8* @objc_loadWeakRetained(i8**)
-// ARC-NATIVE: declare void @objc_destroyWeak(i8**)
-// ARC-NATIVE: declare i8* @objc_autorelease(i8*)
-// ARC-NATIVE: declare i8* @objc_retainAutorelease(i8*)
-
-// CHECK: define void @test0
-void test0(id x) {
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: [[PARM:%.*]] = call i8* @objc_retain(i8* {{.*}})
-  // CHECK-NEXT: store i8* [[PARM]], i8** [[X]]
-  // CHECK-NEXT: [[TMP:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[TMP]])
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define i8* @test1(i8*
-id test1(id x) {
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: [[Y:%.*]] = alloca i8*
-  // CHECK-NEXT: alloca i32
-  // CHECK-NEXT: [[PARM:%.*]] = call i8* @objc_retain(i8* {{%.*}})
-  // CHECK-NEXT: store i8* [[PARM]], i8** [[X]]
-  // CHECK-NEXT: store i8* null, i8** [[Y]]
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[Y]]
-  // CHECK-NEXT: [[RET:%.*]] = call i8* @objc_retain(i8* [[T0]])
-  // CHECK-NEXT: store i32
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[Y]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: [[T1:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  // CHECK-NEXT: [[T1:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[RET]])
-  // CHECK-NEXT: ret i8* [[T1]]
-  id y;
-  return y;
-}
-
- at interface Test2
-+ (void) class_method;
-- (void) inst_method;
- at end
- at implementation Test2
-
-// The self pointer of a class method is not retained.
-// CHECK: define internal void @"\01+[Test2 class_method]"
-// CHECK:      alloca
-// CHECK-NEXT: alloca
-// CHECK-NEXT: store
-// CHECK-NEXT: store
-// CHECK-NEXT: ret void
-+ (void) class_method {}
-
-// The self pointer of an instance method is not retained.
-// CHECK: define internal void @"\01-[Test2 inst_method]"
-// CHECK:      alloca
-// CHECK-NEXT: alloca
-// CHECK-NEXT: store
-// CHECK-NEXT: store
-// CHECK-NEXT: ret void
-- (void) inst_method {}
- at end
-
- at interface Test3
-+ (id) alloc;
-- (id) initWith: (int) x;
-- (id) copy;
- at end
-
-// CHECK: define void @test3_unelided()
-void test3_unelided() {
-  extern void test3_helper(void);
-
-  // CHECK:      [[X:%.*]] = alloca [[TEST3:%.*]]*
-  // CHECK-NEXT: store [[TEST3]]* null, [[TEST3]]** [[X]], align
-  Test3 *x;
-
-  // Call to +alloc.
-  // CHECK-NEXT: load {{.*}}* @"\01L_OBJC_CLASSLIST_REFERENCES_
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: [[ALLOC:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: call void @objc_release(i8*
-  [Test3 alloc];
-
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST3]]** [[X]]
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST3]]* [[T0]] to i8*
-  // CHECK-NEXT: [[COPY:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend {{.*}})(i8* [[T1]],
-  // CHECK-NEXT: call void @objc_release(i8* [[COPY]]) [[NUW:#[0-9]+]]
-  [x copy];
-
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST3]]** [[X]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST3]]* [[T0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]]
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @test3()
-void test3() {
-  // CHECK:      [[X:%.*]] = alloca i8*
-
-  id x = [[Test3 alloc] initWith: 5];
-
-  // Call to +alloc.
-  // CHECK-NEXT: load {{.*}}* @"\01L_OBJC_CLASSLIST_REFERENCES_
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: [[ALLOC:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-  // CHECK-NEXT: bitcast
-
-  // Call to -initWith: with elided retain of consumed argument.
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: [[INIT:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i32)*)(i8* 
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: [[INIT:%.*]] = bitcast
-  // Assignment for initialization, retention elided.
-  // CHECK-NEXT: store i8* [[INIT]], i8** [[X]]
-
-  // Call to -copy.
-  // CHECK-NEXT: [[V:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[COPY:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend {{.*}})(i8* [[V]],
-
-  // Assignment to x.
-  // CHECK-NEXT: [[TMP:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: store i8* [[COPY]], i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]
-
-  x = [x copy];
-
-  // Cleanup for x.
-  // CHECK-NEXT: [[TMP:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]
-  
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define i8* @test4()
-id test4() {
-  // Call to +alloc.
-  // CHECK:      load {{.*}}* @"\01L_OBJC_CLASSLIST_REFERENCES_
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: [[ALLOC:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-  // CHECK-NEXT: [[ALLOC:%.*]] = bitcast
-
-  // Call to -initWith: with elided retain of consumed argument.
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[ALLOC:%.*]] = bitcast
-  // CHECK-NEXT: [[INIT:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i32)*)(i8* [[ALLOC]],
-
-  // Initialization of return value, occuring within full-expression.
-  // Retain/release elided.
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: [[INIT:%.*]] = bitcast
-  // CHECK-NEXT: [[RET:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[INIT]])
-
-  // CHECK-NEXT: ret i8* [[RET]]
-
-  return [[Test3 alloc] initWith: 6];
-}
-
- at interface Test5 {
- at public
-  id var;
-}
- at end
-
-// CHECK: define void @test5
-void test5(Test5 *x, id y) {
-  // Prologue.
-  // CHECK:      [[X:%.*]] = alloca [[TEST5:%.*]]*,
-  // CHECK-NEXT: [[Y:%.*]] = alloca i8*
-  // CHECK-NEXT: bitcast [[TEST5]]* {{%.*}} to i8*
-  // CHECK-NEXT: call i8* @objc_retain
-  // CHECK-NEXT: [[PARMX:%.*]] = bitcast i8* {{%.*}} to [[TEST5]]*
-  // CHECK-NEXT: store [[TEST5]]* [[PARMX]], [[TEST5]]** [[X]]
-  // CHECK-NEXT: call i8* @objc_retain
-  // CHECK-NEXT: store
-
-  // CHECK-NEXT: load [[TEST5]]** [[X]]
-  // CHECK-NEXT: load i64* @"OBJC_IVAR_$_Test5.var"
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: [[VAR:%.*]] = bitcast
-  // CHECK-NEXT: [[TMP:%.*]] = load i8** [[VAR]]
-  // CHECK-NEXT: store i8* null, i8** [[VAR]]
-  // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]
-  x->var = 0;
-
-  // CHECK-NEXT: [[YVAL:%.*]] = load i8** [[Y]]
-  // CHECK-NEXT: load [[TEST5]]** [[X]]
-  // CHECK-NEXT: load i64* @"OBJC_IVAR_$_Test5.var"
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: [[VAR:%.*]] = bitcast
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[YVAL]]) [[NUW]]
-  // CHECK-NEXT: [[TMP:%.*]] = load i8** [[VAR]]
-  // CHECK-NEXT: store i8* [[T0]], i8** [[VAR]]
-  // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]
-  x->var = y;
-
-  // Epilogue.
-  // CHECK-NEXT: [[TMP:%.*]] = load i8** [[Y]]
-  // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST5]]** [[X]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST5]]* [[T0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]]
-  // CHECK-NEXT: ret void
-}
-
-id test6_helper(void) __attribute__((ns_returns_retained));
-// CHECK: define void @test6()
-void test6() {
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: [[CALL:%.*]] = call i8* @test6_helper()
-  // CHECK-NEXT: store i8* [[CALL]], i8** [[X]]
-  // CHECK-NEXT: [[T1:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: ret void
-  id x = test6_helper();
-}
-
-void test7_helper(id __attribute__((ns_consumed)));
-// CHECK: define void @test7()
-void test7() {
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: store i8* null, i8** [[X]]
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]]) [[NUW]]
-  // CHECK-NEXT: call void @test7_helper(i8* [[T1]])
-  // CHECK-NEXT: [[T1:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: ret void
-  id x;
-  test7_helper(x);
-}
-
-id test8_helper(void) __attribute__((ns_returns_retained));
-void test8() {
-  __unsafe_unretained id x = test8_helper();
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @test8_helper()
-  // CHECK-NEXT: store i8* [[T0]], i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: ret void
-}
-
- at interface Test10
- at property (retain) Test10 *me;
- at end
-void test10() {
-  Test10 *x;
-  id y = x.me.me;
-
-  // CHECK:      define void @test10()
-  // CHECK:      [[X:%.*]] = alloca [[TEST10:%.*]]*, align
-  // CHECK-NEXT: [[Y:%.*]] = alloca i8*, align
-  // CHECK-NEXT: store [[TEST10]]* null, [[TEST10]]** [[X]]
-  // CHECK-NEXT: load [[TEST10]]** [[X]], align
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_{{[0-9]*}}"
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: [[T0:%.*]] = call [[TEST10]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST10]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
-  // CHECK-NEXT: [[V:%.*]] = bitcast i8* [[T2]] to [[TEST10]]*
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_{{[0-9]*}}"
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: [[T0:%.*]] = call [[TEST10]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST10]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST10]]*
-  // CHECK-NEXT: [[T4:%.*]] = bitcast [[TEST10]]* [[T3]] to i8*
-  // CHECK-NEXT: store i8* [[T4]], i8** [[Y]]
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST10]]* [[V]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[Y]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST10]]** [[X]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST10]]* [[T0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  // CHECK-NEXT: ret void
-}
-
-void test11(id (*f)(void) __attribute__((ns_returns_retained))) {
-  // CHECK:      define void @test11(
-  // CHECK:      [[F:%.*]] = alloca i8* ()*, align
-  // CHECK-NEXT: [[X:%.*]] = alloca i8*, align
-  // CHECK-NEXT: store i8* ()* {{%.*}}, i8* ()** [[F]], align
-  // CHECK-NEXT: [[T0:%.*]] = load i8* ()** [[F]], align
-  // CHECK-NEXT: [[T1:%.*]] = call i8* [[T0]]()
-  // CHECK-NEXT: store i8* [[T1]], i8** [[X]], align
-  // CHECK-NEXT: [[T3:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T3]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: ret void
-  id x = f();
-}
-
-void test12(void) {
-  extern id test12_helper(void);
-
-  // CHECK:      define void @test12()
-  // CHECK:      [[X:%.*]] = alloca i8*, align
-  // CHECK-NEXT: [[Y:%.*]] = alloca i8*, align
-
-  __weak id x = test12_helper();
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @test12_helper()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: call i8* @objc_initWeak(i8** [[X]], i8* [[T1]])
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-
-  x = test12_helper();
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @test12_helper()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[X]], i8* [[T1]])
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-
-  id y = x;
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_loadWeakRetained(i8** [[X]])
-  // CHECK-NEXT: store i8* [[T2]], i8** [[Y]], align
-
-  // CHECK-NEXT: [[T4:%.*]] = load i8** [[Y]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T4]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: call void @objc_destroyWeak(i8** [[X]])
-  // CHECK: ret void
-}
-
-// Indirect consuming calls.
-void test13(void) {
-  // CHECK:      define void @test13()
-  // CHECK:      [[X:%.*]] = alloca i8*, align
-  // CHECK-NEXT: store i8* null, i8** [[X]], align
-  id x;
-
-  typedef void fnty(id __attribute__((ns_consumed)));
-  extern fnty *test13_func;
-  // CHECK-NEXT: [[FN:%.*]] = load void (i8*)** @test13_func, align
-  // CHECK-NEXT: [[X_VAL:%.*]] = load i8** [[X]], align
-  // CHECK-NEXT: [[X_TMP:%.*]] = call i8* @objc_retain(i8* [[X_VAL]]) [[NUW]]
-  // CHECK-NEXT: call void [[FN]](i8* [[X_TMP]])
-  test13_func(x);
-
-  extern fnty ^test13_block;
-  // CHECK-NEXT: [[TMP:%.*]] = load void (i8*)** @test13_block, align
-  // CHECK-NEXT: [[BLOCK:%.*]] = bitcast void (i8*)* [[TMP]] to [[BLOCKTY:%.*]]*
-  // CHECK-NEXT: [[BLOCK_FN_PTR:%.*]] = getelementptr inbounds [[BLOCKTY]]* [[BLOCK]], i32 0, i32 3
-  // CHECK-NEXT: [[BLOCK_OPAQUE:%.*]] = bitcast [[BLOCKTY]]* [[BLOCK]] to i8*
-  // CHECK-NEXT: [[X_VAL:%.*]] = load i8** [[X]], align
-  // CHECK-NEXT: [[X_TMP:%.*]] = call i8* @objc_retain(i8* [[X_VAL]]) [[NUW]]
-  // CHECK-NEXT: [[BLOCK_FN_TMP:%.*]] = load i8** [[BLOCK_FN_PTR]]
-  // CHECK-NEXT: [[BLOCK_FN:%.*]] = bitcast i8* [[BLOCK_FN_TMP]] to void (i8*, i8*)*
-  // CHECK-NEXT: call void [[BLOCK_FN]](i8* [[BLOCK_OPAQUE]], i8* [[X_TMP]])
-  test13_block(x);
-
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]
-  // CHECK-NEXT: ret void
-}
-
- at interface Test16_super @end
- at interface Test16 : Test16_super {
-  id z;
-}
- at property (assign) int x;
- at property (retain) id y;
-- (void) dealloc;
- at end
- at implementation Test16
- at synthesize x;
- at synthesize y;
-- (void) dealloc {
-  // CHECK:    define internal void @"\01-[Test16 dealloc]"(
-  // CHECK:      [[SELF:%.*]] = alloca [[TEST16:%.*]]*, align
-  // CHECK-NEXT: [[CMD:%.*]] = alloca i8*, align
-  // CHECK-NEXT: alloca
-  // CHECK-NEXT: store [[TEST16]]* {{%.*}}, [[TEST16]]** [[SELF]], align
-  // CHECK-NEXT: store i8* {{%.*}}, i8** [[CMD]]
-  // CHECK-NEXT: [[BASE:%.*]] = load [[TEST16]]** [[SELF]]
-
-  // Call super.
-  // CHECK-NEXT: [[BASE2:%.*]] = bitcast [[TEST16]]* [[BASE]] to i8*
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr
-  // CHECK-NEXT: store i8* [[BASE2]], i8** [[T0]]
-  // CHECK-NEXT: load {{%.*}}** @"\01L_OBJC_CLASSLIST_SUP_REFS_$_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: store
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: call void bitcast (i8* ({{.*}})* @objc_msgSendSuper2 to void (
-  // CHECK-NEXT: ret void
-}
-
-// .cxx_destruct
-  // CHECK:    define internal void @"\01-[Test16 .cxx_destruct]"(
-  // CHECK:      [[SELF:%.*]] = alloca [[TEST16:%.*]]*, align
-  // CHECK-NEXT: [[CMD:%.*]] = alloca i8*, align
-  // CHECK-NEXT: store [[TEST16]]* {{%.*}}, [[TEST16]]** [[SELF]], align
-  // CHECK-NEXT: store i8* {{%.*}}, i8** [[CMD]]
-  // CHECK-NEXT: [[BASE:%.*]] = load [[TEST16]]** [[SELF]]
-
-  // Destroy y.
-  // CHECK-NEXT: [[Y_OFF:%.*]] = load i64* @"OBJC_IVAR_$_Test16.y"
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST16]]* [[BASE]] to i8*
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8* [[T0]], i64 [[Y_OFF]]
-  // CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to i8**
-  // CHECK-NEXT: call void @objc_storeStrong(i8** [[T2]], i8* null) [[NUW]]
-
-  // Destroy z.
-  // CHECK-NEXT: [[Z_OFF:%.*]] = load i64* @"OBJC_IVAR_$_Test16.z"
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST16]]* [[BASE]] to i8*
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8* [[T0]], i64 [[Z_OFF]]
-  // CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to i8**
-  // CHECK-NEXT: call void @objc_storeStrong(i8** [[T2]], i8* null) [[NUW]]
-
-  // CHECK-NEXT: ret void
-
- at end
-
-// This shouldn't crash.
- at interface Test17A
- at property (assign) int x;
- at end
- at interface Test17B : Test17A
- at end
- at implementation Test17B
-- (int) x { return super.x + 1; }
- at end
-
-void test19() {
-  // CHECK: define void @test19()
-  // CHECK:      [[X:%.*]] = alloca [5 x i8*], align 16
-  // CHECK: call void @llvm.lifetime.start
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [5 x i8*]* [[X]] to i8*
-  // CHECK: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 40, i32 16, i1 false)
-  id x[5];
-
-  extern id test19_helper(void);
-  x[2] = test19_helper();
-
-  // CHECK-NEXT: [[CALL:%.*]] = call i8* @test19_helper()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[CALL]]) [[NUW]]
-  // CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [5 x i8*]* [[X]], i32 0, i64 2
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[SLOT]]
-  // CHECK-NEXT: store i8* [[T1]], i8** [[SLOT]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]
-
-  // CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [5 x i8*]* [[X]], i32 0, i32 0
-  // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds i8** [[BEGIN]], i64 5
-  // CHECK-NEXT: br label
-
-  // CHECK:      [[AFTER:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[NEXT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds i8** [[AFTER]], i64 -1
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[CUR]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: [[EQ:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]]
-  // CHECK-NEXT: br i1 [[EQ]],
-
-  // CHECK:      ret void
-}
-
-void test20(unsigned n) {
-  // CHECK: define void @test20
-  // CHECK:      [[N:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[SAVED_STACK:%.*]] = alloca i8*
-  // CHECK-NEXT: store i32 {{%.*}}, i32* [[N]], align 4
-
-  id x[n];
-
-  // Capture the VLA size.
-  // CHECK-NEXT: [[T0:%.*]] = load i32* [[N]], align 4
-  // CHECK-NEXT: [[DIM:%.*]] = zext i32 [[T0]] to i64
-
-  // Save the stack pointer.
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.stacksave()
-  // CHECK-NEXT: store i8* [[T0]], i8** [[SAVED_STACK]]
-
-  // Allocate the VLA.
-  // CHECK-NEXT: [[VLA:%.*]] = alloca i8*, i64 [[DIM]], align 16
-
-  // Zero-initialize.
-  // CHECK-NEXT: [[T0:%.*]] = bitcast i8** [[VLA]] to i8*
-  // CHECK-NEXT: [[T1:%.*]] = mul nuw i64 [[DIM]], 8
-  // CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 [[T1]], i32 8, i1 false)
-
-  // Destroy.
-  // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds i8** [[VLA]], i64 [[DIM]]
-  // CHECK-NEXT: [[EMPTY:%.*]] = icmp eq i8** [[VLA]], [[END]]
-  // CHECK-NEXT: br i1 [[EMPTY]]
-
-  // CHECK:      [[AFTER:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds i8** [[AFTER]], i64 -1
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[CUR]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: [[EQ:%.*]] = icmp eq i8** [[CUR]], [[VLA]]
-  // CHECK-NEXT: br i1 [[EQ]],
-
-  // CHECK:      [[T0:%.*]] = load i8** [[SAVED_STACK]]
-  // CHECK-NEXT: call void @llvm.stackrestore(i8* [[T0]])
-  // CHECK-NEXT: ret void
-}
-
-void test21(unsigned n) {
-  // CHECK: define void @test21
-  // CHECK:      [[N:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[SAVED_STACK:%.*]] = alloca i8*
-  // CHECK-NEXT: store i32 {{%.*}}, i32* [[N]], align 4
-
-  id x[2][n][3];
-
-  // Capture the VLA size.
-  // CHECK-NEXT: [[T0:%.*]] = load i32* [[N]], align 4
-  // CHECK-NEXT: [[DIM:%.*]] = zext i32 [[T0]] to i64
-
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.stacksave()
-  // CHECK-NEXT: store i8* [[T0]], i8** [[SAVED_STACK]]
-
-
-  // Allocate the VLA.
-  // CHECK-NEXT: [[T0:%.*]] = mul nuw i64 2, [[DIM]]
-  // CHECK-NEXT: [[VLA:%.*]] = alloca [3 x i8*], i64 [[T0]], align 16
-
-  // Zero-initialize.
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [3 x i8*]* [[VLA]] to i8*
-  // CHECK-NEXT: [[T1:%.*]] = mul nuw i64 2, [[DIM]]
-  // CHECK-NEXT: [[T2:%.*]] = mul nuw i64 [[T1]], 24
-  // CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 [[T2]], i32 8, i1 false)
-
-  // Destroy.
-  // CHECK-NEXT: [[T0:%.*]] = mul nuw i64 2, [[DIM]]
-  // CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [3 x i8*]* [[VLA]], i32 0, i32 0
-  // CHECK-NEXT: [[T1:%.*]] = mul nuw i64 [[T0]], 3
-  // CHECK-NEXT: [[END:%.*]] = getelementptr inbounds i8** [[BEGIN]], i64 [[T1]]
-  // CHECK-NEXT: [[EMPTY:%.*]] = icmp eq i8** [[BEGIN]], [[END]]
-  // CHECK-NEXT: br i1 [[EMPTY]]
-
-  // CHECK:      [[AFTER:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds i8** [[AFTER]], i64 -1
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[CUR]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release
-  // CHECK-NEXT: [[EQ:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]]
-  // CHECK-NEXT: br i1 [[EQ]],
-
-  // CHECK:      [[T0:%.*]] = load i8** [[SAVED_STACK]]
-  // CHECK-NEXT: call void @llvm.stackrestore(i8* [[T0]])
-  // CHECK-NEXT: ret void
-}
-
-// rdar://problem/8922540
-//   Note that we no longer emit .release_ivars flags.
-// rdar://problem/12492434
-//   Note that we set the flag saying that we need destruction *and*
-//   the flag saying that we don't also need construction.
-// CHECK-GLOBALS: @"\01l_OBJC_CLASS_RO_$_Test23" = internal global [[RO_T:%.*]] { i32 390,
- at interface Test23 { id x; } @end
- at implementation Test23 @end
-
-// CHECK-GLOBALS: @"\01l_OBJC_CLASS_RO_$_Test24" = internal global [[RO_T:%.*]] { i32 130,
- at interface Test24 {} @end
- at implementation Test24 @end
-
-// rdar://problem/8941012
- at interface Test26 { id x[4]; } @end
- at implementation Test26 @end
-// CHECK:    define internal void @"\01-[Test26 .cxx_destruct]"(
-// CHECK:      [[SELF:%.*]] = load [[TEST26:%.*]]**
-// CHECK-NEXT: [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test26.x"
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST26]]* [[SELF]] to i8*
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8* [[T0]], i64 [[OFFSET]]
-// CHECK-NEXT: [[X:%.*]] = bitcast i8* [[T1]] to [4 x i8*]*
-// CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [4 x i8*]* [[X]], i32 0, i32 0
-// CHECK-NEXT: [[END:%.*]] = getelementptr inbounds i8** [[BEGIN]], i64 4
-// CHECK-NEXT: br label
-// CHECK:      [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]
-// CHECK-NEXT: [[CUR]] = getelementptr inbounds i8** [[PAST]], i64 -1
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[CUR]], i8* null)
-// CHECK-NEXT: [[ISDONE:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]]
-// CHECK-NEXT: br i1 [[ISDONE]],
-// CHECK:      ret void
-
-// Check that 'init' retains self.
- at interface Test27
-- (id) init;
- at end
- at implementation Test27
-- (id) init { return self; }
-// CHECK:    define internal i8* @"\01-[Test27 init]"
-// CHECK:      [[SELF:%.*]] = alloca [[TEST27:%.*]]*,
-// CHECK-NEXT: [[CMD:%.*]] = alloca i8*,
-// CHECK-NEXT: [[DEST:%.*]] = alloca i32
-// CHECK-NEXT: store [[TEST27]]* {{%.*}}, [[TEST27]]** [[SELF]]
-// CHECK-NEXT: store i8* {{%.*}}, i8** [[CMD]]
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST27]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST27]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST27]]*
-// CHECK-NEXT: [[RET:%.*]] = bitcast [[TEST27]]* [[T3]] to i8*
-// CHECK-NEXT: store i32 {{[0-9]+}}, i32* [[DEST]]
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST27]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST27]]* [[T0]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T1]])
-// CHECK-NEXT: ret i8* [[RET]]
-
- at end
-
-// rdar://problem/8087194
- at interface Test28
- at property (copy) id prop;
- at end
- at implementation Test28
- at synthesize prop;
- at end
-// CHECK:    define internal void @"\01-[Test28 .cxx_destruct]"
-// CHECK:      [[SELF:%.*]] = load [[TEST28:%.*]]**
-// CHECK-NEXT: [[OFFSET:%.*]] = load i64* @"OBJC_IVAR_$_Test28.prop"
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST28]]* [[SELF]] to i8*
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8* [[T0]], i64 [[OFFSET]]
-// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T2]], i8* null)
-// CHECK-NEXT: ret void
-
- at interface Test29_super
-- (id) initWithAllocator: (id) allocator;
- at end
- at interface Test29 : Test29_super
-- (id) init;
-- (id) initWithAllocator: (id) allocator;
- at end
- at implementation Test29
-static id _test29_allocator = 0;
-- (id) init {
-// CHECK:    define internal i8* @"\01-[Test29 init]"([[TEST29:%[^*]*]]* {{%.*}},
-// CHECK:      [[SELF:%.*]] = alloca [[TEST29]]*, align 8
-// CHECK-NEXT: [[CMD:%.*]] = alloca i8*, align 8
-// CHECK-NEXT: [[CLEANUP:%.*]] = alloca i32
-// CHECK-NEXT: store [[TEST29]]* {{%.*}}, [[TEST29]]** [[SELF]]
-// CHECK-NEXT: store i8* {{%.*}}, i8** [[CMD]]
-
-// Evaluate arguments.  Note that the send argument is evaluated
-// before the zeroing of self.
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST29]]** [[SELF]], align 8
-// CHECK-NEXT: [[T1:%.*]] = load i8** @_test29_allocator, align 8
-
-// Implicit null of 'self', i.e. direct transfer of ownership.
-// CHECK-NEXT: store [[TEST29]]* null, [[TEST29]]** [[SELF]]
-
-// Actual message send.
-// CHECK-NEXT: [[T2:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*
-// CHECK-NEXT: [[CALL:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i8*)*)(i8* [[T3]], i8* [[T2]], i8* [[T1]])
-
-// Implicit write of result back into 'self'.  This is not supposed to
-// be detectable because we're supposed to ban accesses to the old
-// self value past the delegate init call.
-// CHECK-NEXT: [[T0:%.*]] = bitcast i8* [[CALL]] to [[TEST29]]*
-// CHECK-NEXT: store [[TEST29]]* [[T0]], [[TEST29]]** [[SELF]]
-
-// Return statement.
-// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[CALL]]
-// CHECK-NEXT: [[CALL:%.*]] = bitcast
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[CALL]]) [[NUW]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[TEST29]]*
-// CHECK-NEXT: [[RET:%.*]] = bitcast [[TEST29]]* [[T1]] to i8*
-// CHECK-NEXT: store i32 1, i32* [[CLEANUP]]
-
-// Cleanup.
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST29]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release
-
-// Return.
-// CHECK-NEXT: ret i8* [[RET]]
-  return [self initWithAllocator: _test29_allocator];
-}
-- (id) initWithAllocator: (id) allocator {
-// CHECK:    define internal i8* @"\01-[Test29 initWithAllocator:]"(
-// CHECK:      [[SELF:%.*]] = alloca [[TEST29]]*, align 8
-// CHECK-NEXT: [[CMD:%.*]] = alloca i8*, align 8
-// CHECK-NEXT: [[ALLOCATOR:%.*]] = alloca i8*, align 8
-// CHECK-NEXT: alloca
-// CHECK-NEXT: [[CLEANUP:%.*]] = alloca i32
-// CHECK-NEXT: store [[TEST29]]* {{%.*}}, [[TEST29]]** [[SELF]]
-// CHECK-NEXT: store i8* {{%.*}}, i8** [[CMD]]
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* {{%.*}})
-// CHECK-NEXT: store i8* [[T0]], i8** [[ALLOCATOR]]
-
-// Evaluate arguments.  Note that the send argument is evaluated
-// before the zeroing of self.
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST29]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = load i8** [[ALLOCATOR]], align 8
-
-// Implicit null of 'self', i.e. direct transfer of ownership.
-// CHECK-NEXT: store [[TEST29]]* null, [[TEST29]]** [[SELF]]
-
-// Actual message send.
-// CHECK:      [[CALL:%.*]] = call {{.*}} @objc_msgSendSuper2
-
-// Implicit write of result back into 'self'.  This is not supposed to
-// be detectable because we're supposed to ban accesses to the old
-// self value past the delegate init call.
-// CHECK-NEXT: [[T0:%.*]] = bitcast i8* [[CALL]] to [[TEST29]]*
-// CHECK-NEXT: store [[TEST29]]* [[T0]], [[TEST29]]** [[SELF]]
-
-// Assignment.
-// CHECK-NEXT: [[T0:%.*]] = bitcast i8* [[CALL]] to [[TEST29]]*
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]]) [[NUW]]
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST29]]*
-// CHECK-NEXT: [[T4:%.*]] = load [[TEST29]]** [[SELF]], align
-// CHECK-NEXT: store [[TEST29]]* [[T3]], [[TEST29]]** [[SELF]], align
-// CHECK-NEXT: [[T5:%.*]] = bitcast [[TEST29]]* [[T4]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T5]])
-
-// Return statement.
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST29]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[T1]]) [[NUW]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[TEST29]]*
-// CHECK-NEXT: [[RET:%.*]] = bitcast [[TEST29]]* [[T1]] to i8*
-// CHECK-NEXT: store i32 1, i32* [[CLEANUP]]
-
-// Cleanup.
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[ALLOCATOR]]
-// CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release
-
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST29]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release
-
-// Return.
-// CHECK-NEXT: ret i8* [[RET]]
-  self = [super initWithAllocator: allocator];
-  return self;
-}
- at end
-
-typedef struct Test30_helper Test30_helper;
- at interface Test30
-- (id) init;
-- (Test30_helper*) initHelper;
- at end
- at implementation Test30 {
-char *helper;
-}
-- (id) init {
-// CHECK:    define internal i8* @"\01-[Test30 init]"([[TEST30:%[^*]*]]* {{%.*}},
-// CHECK:      [[RET:%.*]] = alloca [[TEST30]]*
-// CHECK-NEXT: alloca i8*
-// CHECK-NEXT: alloca i32
-// CHECK-NEXT: store [[TEST30]]* {{%.*}}, [[TEST30]]** [[SELF]]
-// CHECK-NEXT: store
-
-// Call.
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST30]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST30]]* [[T0]] to i8*
-// CHECK-NEXT: [[CALL:%.*]] = call [[TEST30_HELPER:%.*]]* bitcast {{.*}} @objc_msgSend {{.*}}(i8* [[T2]], i8* [[T1]])
-
-// Assignment.
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST30_HELPER]]* [[CALL]] to i8*
-// CHECK-NEXT: [[T1:%.*]] = load [[TEST30]]** [[SELF]]
-// CHECK-NEXT: [[IVAR:%.*]] = load i64* @"OBJC_IVAR_$_Test30.helper"
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST30]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 [[IVAR]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**
-// CHECK-NEXT#: [[T5:%.*]] = load i8** [[T4]]
-// CHECK-NEXT#: [[T6:%.*]] = call i8* @objc_retain(i8* [[T0]])
-// CHECK-NEXT#: call void @objc_release(i8* [[T5]])
-// CHECK-NEXT: store i8* [[T0]], i8** [[T4]]
-
-// Return.
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST30]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST30]]* [[T0]] to i8*
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[T1]])
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[TEST30]]*
-// CHECK-NEXT: [[RET:%.*]] = bitcast [[TEST30]]* [[T1]] to i8*
-// CHECK-NEXT: store i32 1
-
-// Cleanup.
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST30]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST30]]* [[T0]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T1]])
-
-// Epilogue.
-// CHECK-NEXT: ret i8* [[RET]]
-  self->helper = [self initHelper];
-  return self;
-}
-- (Test30_helper*) initHelper {
-// CHECK:    define internal [[TEST30_HELPER]]* @"\01-[Test30 initHelper]"(
-// CHECK:      alloca
-// CHECK-NEXT: alloca
-// CHECK-NEXT: store
-// CHECK-NEXT: store
-// CHECK-NEXT: ret [[TEST30_HELPER]]* null
-  return 0;
-}
-
- at end
-
-__attribute__((ns_returns_retained)) id test32(void) {
-// CHECK:    define i8* @test32()
-// CHECK:      [[CALL:%.*]] = call i8* @test32_helper()
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[CALL]])
-// CHECK-NEXT: ret i8* [[T0]]
-  extern id test32_helper(void);
-  return test32_helper();
-}
-
- at class Test33_a;
- at interface Test33
-- (void) give: (Test33_a **) x;
-- (void) take: (Test33_a **) x;
-- (void) giveStrong: (out __strong Test33_a **) x;
-- (void) takeStrong: (inout __strong Test33_a **) x;
-- (void) giveOut: (out Test33_a **) x;
- at end
-void test33(Test33 *ptr) {
-  Test33_a *a;
-  [ptr give: &a];
-  [ptr take: &a];
-  [ptr giveStrong: &a];
-  [ptr takeStrong: &a];
-  [ptr giveOut: &a];
-
-  // CHECK:    define void @test33([[TEST33:%.*]]*
-  // CHECK:      [[PTR:%.*]] = alloca [[TEST33]]*
-  // CHECK-NEXT: [[A:%.*]] = alloca [[A_T:%.*]]*
-  // CHECK-NEXT: [[TEMP0:%.*]] = alloca [[A_T]]*
-  // CHECK-NEXT: [[TEMP1:%.*]] = alloca [[A_T]]*
-  // CHECK-NEXT: [[TEMP2:%.*]] = alloca [[A_T]]*
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: objc_retain
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: store
-  // CHECK-NEXT: store [[A_T]]* null, [[A_T]]** [[A]]
-
-  // CHECK-NEXT: load [[TEST33]]** [[PTR]]
-  // CHECK-NEXT: [[W0:%.*]] = load [[A_T]]** [[A]]
-  // CHECK-NEXT: store [[A_T]]* [[W0]], [[A_T]]** [[TEMP0]]
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: objc_msgSend{{.*}}, [[A_T]]** [[TEMP0]])
-  // CHECK-NEXT: [[T0:%.*]] = load [[A_T]]** [[TEMP0]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[A_T]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A_T]]*
-  // CHECK-NEXT: call void (...)* @clang.arc.use([[A_T]]* [[W0]]) [[NUW]]
-  // CHECK-NEXT: [[T4:%.*]] = load [[A_T]]** [[A]]
-  // CHECK-NEXT: store [[A_T]]* [[T3]], [[A_T]]** [[A]]
-  // CHECK-NEXT: [[T5:%.*]] = bitcast [[A_T]]* [[T4]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T5]])
-
-  // CHECK-NEXT: load [[TEST33]]** [[PTR]]
-  // CHECK-NEXT: [[W0:%.*]] = load [[A_T]]** [[A]]
-  // CHECK-NEXT: store [[A_T]]* [[W0]], [[A_T]]** [[TEMP1]]
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: objc_msgSend{{.*}}, [[A_T]]** [[TEMP1]])
-  // CHECK-NEXT: [[T0:%.*]] = load [[A_T]]** [[TEMP1]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[A_T]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A_T]]*
-  // CHECK-NEXT: call void (...)* @clang.arc.use([[A_T]]* [[W0]]) [[NUW]]
-  // CHECK-NEXT: [[T4:%.*]] = load [[A_T]]** [[A]]
-  // CHECK-NEXT: store [[A_T]]* [[T3]], [[A_T]]** [[A]]
-  // CHECK-NEXT: [[T5:%.*]] = bitcast [[A_T]]* [[T4]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T5]])
-
-  // CHECK-NEXT: load [[TEST33]]** [[PTR]]
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: objc_msgSend{{.*}}, [[A_T]]** [[A]])
-
-  // CHECK-NEXT: load [[TEST33]]** [[PTR]]
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: objc_msgSend{{.*}}, [[A_T]]** [[A]])
-
-  // 'out'
-  // CHECK-NEXT: load [[TEST33]]** [[PTR]]
-  // CHECK-NEXT: store [[A_T]]* null, [[A_T]]** [[TEMP2]]
-  // CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: objc_msgSend{{.*}}, [[A_T]]** [[TEMP2]])
-  // CHECK-NEXT: [[T0:%.*]] = load [[A_T]]** [[TEMP2]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[A_T]]* [[T0]] to i8*
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A_T]]*
-  // CHECK-NEXT: [[T4:%.*]] = load [[A_T]]** [[A]]
-  // CHECK-NEXT: store [[A_T]]* [[T3]], [[A_T]]** [[A]]
-  // CHECK-NEXT: [[T5:%.*]] = bitcast [[A_T]]* [[T4]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T5]])
-
-  // CHECK-NEXT: load
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: objc_release
-  // CHECK-NEXT: load
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: objc_release
-  // CHECK-NEXT: ret void
-}
-
-
-// CHECK: define void @test36
-void test36(id x) {
-  // CHECK: [[X:%.*]] = alloca i8*
-
-  // CHECK: call i8* @objc_retain
-  // CHECK: call i8* @objc_retain
-  // CHECK: call i8* @objc_retain
-  id array[3] = { @"A", x, @"y" };
-
-  // CHECK:      [[T0:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: store i8* null, i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  x = 0;
-
-  // CHECK: br label
-  // CHECK: call void @objc_release
-  // CHECK: br i1
-
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}
-
- at class Test37;
-void test37(void) {
-  extern void test37_helper(id *);
-  Test37 *var;
-  test37_helper(&var);
-
-  // CHECK:    define void @test37()
-  // CHECK:      [[VAR:%.*]] = alloca [[TEST37:%.*]]*,
-  // CHECK-NEXT: [[TEMP:%.*]] = alloca i8*
-  // CHECK-NEXT: store [[TEST37]]* null, [[TEST37]]** [[VAR]]
-
-  // CHECK-NEXT: [[W0:%.*]] = load [[TEST37]]** [[VAR]]
-  // CHECK-NEXT: [[W1:%.*]] = bitcast [[TEST37]]* [[W0]] to i8*
-  // CHECK-NEXT: store i8* [[W1]], i8** [[TEMP]]
-  // CHECK-NEXT: call void @test37_helper(i8** [[TEMP]])
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[TEMP]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[TEST37]]*
-  // CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST37]]* [[T1]] to i8*
-  // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[TEST37]]*
-  // CHECK-NEXT: call void (...)* @clang.arc.use(i8* [[W1]]) [[NUW]]
-  // CHECK-NEXT: [[T5:%.*]] = load [[TEST37]]** [[VAR]]
-  // CHECK-NEXT: store [[TEST37]]* [[T4]], [[TEST37]]** [[VAR]]
-  // CHECK-NEXT: [[T6:%.*]] = bitcast [[TEST37]]* [[T5]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T6]])
-
-  // CHECK-NEXT: [[T0:%.*]] = load [[TEST37]]** [[VAR]]
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST37]]* [[T0]] to i8*
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  // CHECK-NEXT: ret void
-}
-
- at interface Test43 @end
- at implementation Test43
-- (id) test __attribute__((ns_returns_retained)) {
-  extern id test43_produce(void);
-  return test43_produce();
-  // CHECK:      call i8* @test43_produce()
-  // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue(
-  // CHECK-NEXT: ret 
-}
- at end
-
- at interface Test45
- at property (retain) id x;
- at end
- at implementation Test45
- at synthesize x;
- at end
-// CHECK:    define internal i8* @"\01-[Test45 x]"(
-// CHECK:      [[CALL:%.*]] = call i8* @objc_getProperty(
-// CHECK-NEXT: ret i8* [[CALL]]
-
-// rdar://problem/9315552
-void test46(__weak id *wp, __weak volatile id *wvp) {
-  extern id test46_helper(void);
-
-  // TODO: this is sub-optimal, we should retain at the actual call site.
-
-  // CHECK:      [[T0:%.*]] = call i8* @test46_helper()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = load i8*** {{%.*}}, align 8
-  // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])
-  // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retain(i8* [[T3]])
-  // CHECK-NEXT: store i8* [[T4]], i8**
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  id x = *wp = test46_helper();
-
-  // CHECK:      [[T0:%.*]] = call i8* @test46_helper()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = load i8*** {{%.*}}, align 8
-  // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])
-  // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retain(i8* [[T3]])
-  // CHECK-NEXT: store i8* [[T4]], i8**
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  id y = *wvp = test46_helper();
-}
-
-// rdar://problem/9378887
-void test47(void) {
-  extern id test47_helper(void);
-  id x = x = test47_helper();
-
-  // CHECK:    define void @test47()
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: store i8* null, i8** [[X]]
-  // CHECK-NEXT: [[CALL:%.*]] = call i8* @test47_helper()
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[CALL]])
-  // CHECK-NEXT: [[T1:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: store i8* [[T0]], i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T0]])
-  // CHECK-NEXT: [[T3:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: store i8* [[T2]], i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T3]])
-  // CHECK-NEXT: [[T4:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T4]])
-  // CHECK-NEXT: ret void
-}
-
-void test48(void) {
-  extern id test48_helper(void);
-  __weak id x = x = test48_helper();
-  // CHECK:    define void @test48()
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_initWeak(i8** [[X]], i8* null)
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @test48_helper()
-  // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
-  // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[X]], i8* [[T2]])
-  // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_storeWeak(i8** [[X]], i8* [[T3]])
-  // CHECK-NEXT: call void @objc_release(i8* [[T2]])
-  // CHECK-NEXT: call void @objc_destroyWeak(i8** [[X]])
-  // CHECK-NEXT: ret void
-}
-
-void test49(void) {
-  extern id test49_helper(void);
-  __autoreleasing id x = x = test49_helper();
-  // CHECK:    define void @test49()
-  // CHECK:      [[X:%.*]] = alloca i8*
-  // CHECK-NEXT: store i8* null, i8** [[X]]
-  // CHECK-NEXT: [[CALL:%.*]] = call i8* @test49_helper()
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[CALL]])
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_autorelease(i8* [[T0]])
-  // CHECK-NEXT: store i8* [[T2]], i8** [[X]]
-  // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retainAutorelease(i8* [[T1]])
-  // CHECK-NEXT: store i8* [[T3]], i8** [[X]]
-  // CHECK-NEXT: ret void
-}
-
-// rdar://9380136
-id x();
-void test50(id y) {
-  ({x();});
-// CHECK: [[T0:%.*]] = call i8* @objc_retain
-// CHECK: call void @objc_release
-}
-
-
-// rdar://9400762
-struct CGPoint {
-  float x;
-  float y;
-};
-typedef struct CGPoint CGPoint;
-
- at interface Foo
- at property (assign) CGPoint point;
- at end
-
- at implementation Foo
- at synthesize point;
- at end
-
-// rdar://problem/9400398
-id test52(void) {
-  id test52_helper(int) __attribute__((ns_returns_retained));
-  return ({ int x = 5; test52_helper(x); });
-
-// CHECK:    define i8* @test52()
-// CHECK:      [[X:%.*]] = alloca i32
-// CHECK-NEXT: store i32 5, i32* [[X]],
-// CHECK-NEXT: [[T0:%.*]] = load i32* [[X]],
-// CHECK-NEXT: [[T1:%.*]] = call i8* @test52_helper(i32 [[T0]])
-// CHECK-NEXT: [[T2:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T1]])
-// CHECK-NEXT: ret i8* [[T2]]
-}
-
-// rdar://problem/9400644
-void test53(void) {
-  id test53_helper(void);
-  id x = ({ id y = test53_helper(); y; });
-  (void) x;
-// CHECK:    define void @test53()
-// CHECK:      [[X:%.*]] = alloca i8*,
-// CHECK-NEXT: [[Y:%.*]] = alloca i8*,
-// CHECK-NEXT: [[T0:%.*]] = call i8* @test53_helper()
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-// CHECK-NEXT: store i8* [[T1]], i8** [[Y]],
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[Y]],
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-// CHECK-NEXT: [[T2:%.*]] = load i8** [[Y]]
-// CHECK-NEXT: call void @objc_release(i8* [[T2]])
-// CHECK-NEXT: store i8* [[T1]], i8** [[X]],
-// CHECK-NEXT: load i8** [[X]],
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[X]]
-// CHECK-NEXT: call void @objc_release(i8* [[T0]])
-// CHECK-NEXT: ret void
-}
-
-// <rdar://problem/9758798>
-// CHECK: define void @test54(i32 %first, ...)
-void test54(int first, ...) {
-  __builtin_va_list arglist;
-  // CHECK: call void @llvm.va_start
-  __builtin_va_start(arglist, first);
-  // CHECK: call i8* @objc_retain
-  id obj = __builtin_va_arg(arglist, id);
-  // CHECK: call void @llvm.va_end
-  __builtin_va_end(arglist);
-  // CHECK: call void @objc_release
-  // CHECK: ret void
-}
-
-// PR10228
- at interface Test55Base @end
- at interface Test55 : Test55Base @end
- at implementation Test55 (Category)
-- (void) dealloc {}
- at end
-// CHECK:   define internal void @"\01-[Test55(Category) dealloc]"(
-// CHECK-NOT: ret
-// CHECK:     call void bitcast (i8* ({{%.*}}*, i8*, ...)* @objc_msgSendSuper2 to void ({{%.*}}*, i8*)*)(
-
-// rdar://problem/8024350
- at protocol Test56Protocol
-+ (id) make __attribute__((ns_returns_retained));
- at end
- at interface Test56<Test56Protocol> @end
- at implementation Test56
-// CHECK: define internal i8* @"\01+[Test56 make]"(
-+ (id) make {
-  extern id test56_helper(void);
-  // CHECK:      [[T0:%.*]] = call i8* @test56_helper()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: ret i8* [[T1]]
-  return test56_helper();
-}
- at end
-void test56_test(void) {
-  id x = [Test56 make];
-  // CHECK: define void @test56_test()
-  // CHECK:      [[X:%.*]] = alloca i8*, align 8
-  // CHECK:      [[T0:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(
-  // CHECK-NEXT: store i8* [[T0]], i8** [[X]]
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: ret void
-}
-
-// rdar://problem/9784964
- at interface Test57
- at property (nonatomic, strong) id strong;
- at property (nonatomic, weak) id weak;
- at property (nonatomic, unsafe_unretained) id unsafe;
- at end
- at implementation Test57
- at synthesize strong, weak, unsafe;
- at end
-// CHECK: define internal i8* @"\01-[Test57 strong]"(
-// CHECK:      [[T0:%.*]] = load [[TEST57:%.*]]** {{%.*}}
-// CHECK-NEXT: [[T1:%.*]] = load i64* @"OBJC_IVAR_$_Test57.strong"
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST57]]* [[T0]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 [[T1]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**
-// CHECK-NEXT: [[T5:%.*]] = load i8** [[T4]]
-// CHECK-NEXT: ret i8* [[T5]]
-
-// CHECK: define internal i8* @"\01-[Test57 weak]"(
-// CHECK:      [[T0:%.*]] = load [[TEST57]]** {{%.*}}
-// CHECK-NEXT: [[T1:%.*]] = load i64* @"OBJC_IVAR_$_Test57.weak"
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST57]]* [[T0]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 [[T1]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**
-// CHECK-NEXT: [[T5:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T4]])
-// CHECK-NEXT: [[T6:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T5]])
-// CHECK-NEXT: ret i8* [[T6]]
-
-// CHECK: define internal i8* @"\01-[Test57 unsafe]"(
-// CHECK:      [[T0:%.*]] = load [[TEST57]]** {{%.*}}
-// CHECK-NEXT: [[T1:%.*]] = load i64* @"OBJC_IVAR_$_Test57.unsafe"
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST57]]* [[T0]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8* [[T2]], i64 [[T1]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**
-// CHECK-NEXT: [[T5:%.*]] = load i8** [[T4]]
-// CHECK-NEXT: ret i8* [[T5]]
-
-// rdar://problem/9842343
-void test59(void) {
-  extern id test59_getlock(void);
-  extern void test59_body(void);
-  @synchronized (test59_getlock()) {
-    test59_body();
-  }
-
-  // CHECK:    define void @test59()
-  // CHECK:      [[T0:%.*]] = call i8* @test59_getlock()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: call i32 @objc_sync_enter(i8* [[T1]])
-  // CHECK-NEXT: call void @test59_body()
-  // CHECK-NEXT: call i32 @objc_sync_exit(i8* [[T1]])
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  // CHECK-NEXT: ret void
-}
-
-// Verify that we don't try to reclaim the result of performSelector.
-// rdar://problem/9887545
- at interface Test61
-- (id) performSelector: (SEL) selector;
-- (void) test61_void;
-- (id) test61_id;
- at end
-void test61(void) {
-  // CHECK:    define void @test61()
-  // CHECK:      [[Y:%.*]] = alloca i8*, align 8
-
-  extern id test61_make(void);
-
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @test61_make()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[T3:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[T4:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i8*)*)(i8* [[T1]], i8* [[T3]], i8* [[T2]])
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  [test61_make() performSelector: @selector(test61_void)];
-
-  // CHECK-NEXT: [[T0:%.*]] = call i8* @test61_make()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[T3:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-  // CHECK-NEXT: [[T4:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i8*)*)(i8* [[T1]], i8* [[T3]], i8* [[T2]])
-  // CHECK-NEXT: [[T5:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T4]])
-  // CHECK-NEXT: store i8* [[T5]], i8** [[Y]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  id y = [test61_make() performSelector: @selector(test61_id)];
-
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[Y]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  // CHECK-NEXT: ret void
-}
-
-// rdar://problem/9891815
-void test62(void) {
-  // CHECK:    define void @test62()
-  // CHECK:      [[I:%.*]] = alloca i32, align 4
-  // CHECK-NEXT: [[CLEANUP_VALUE:%.*]] = alloca i8*
-  // CHECK-NEXT: [[CLEANUP_REQUIRED:%.*]] = alloca i1
-  extern id test62_make(void);
-  extern void test62_body(void);
-
-  // CHECK-NEXT: store i32 0, i32* [[I]], align 4
-  // CHECK-NEXT: br label
-
-  // CHECK:      [[T0:%.*]] = load i32* [[I]], align 4
-  // CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 20
-  // CHECK-NEXT: br i1 [[T1]],
-
-  for (unsigned i = 0; i != 20; ++i) {
-    // CHECK:      [[T0:%.*]] = load i32* [[I]], align 4
-    // CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 0
-    // CHECK-NEXT: store i1 false, i1* [[CLEANUP_REQUIRED]]
-    // CHECK-NEXT: br i1 [[T1]],
-    // CHECK:      [[T0:%.*]] = call i8* @test62_make()
-    // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-    // CHECK-NEXT: store i8* [[T1]], i8** [[CLEANUP_VALUE]]
-    // CHECK-NEXT: store i1 true, i1* [[CLEANUP_REQUIRED]]
-    // CHECK-NEXT: [[T2:%.*]] = icmp ne i8* [[T1]], null
-    // CHECK-NEXT: br label
-    // CHECK:      [[COND:%.*]] = phi i1 [ false, {{%.*}} ], [ [[T2]], {{%.*}} ]
-    // CHECK-NEXT: [[T0:%.*]] = load i1* [[CLEANUP_REQUIRED]]
-    // CHECK-NEXT: br i1 [[T0]],
-    // CHECK:      [[T0:%.*]] = load i8** [[CLEANUP_VALUE]]
-    // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-    // CHECK-NEXT: br label
-    // CHECK:      br i1 [[COND]]
-    // CHECK:      call void @test62_body()
-    // CHECK-NEXT: br label
-    // CHECK:      br label
-    if (i != 0 && test62_make() != 0)
-      test62_body();
-  }
-
-  // CHECK:      [[T0:%.*]] = load i32* [[I]], align 4
-  // CHECK-NEXT: [[T1:%.*]] = add i32 [[T0]], 1
-  // CHECK-NEXT: store i32 [[T1]], i32* [[I]]
-  // CHECK-NEXT: br label
-
-  // CHECK:      ret void
-}
-
-// rdar://9971982
- at class NSString;
-
- at interface Person  {
-  NSString *name;
-}
- at property NSString *address;
- at end
-
- at implementation Person
- at synthesize address;
- at end
-// CHECK: call i8* @objc_getProperty
-// CHECK: call void @objc_setProperty 
-
-// Verify that we successfully parse and preserve this attribute in
-// this position.
- at interface Test66
-- (void) consume: (id __attribute__((ns_consumed))) ptr;
- at end
-void test66(void) {
-  extern Test66 *test66_receiver(void);
-  extern id test66_arg(void);
-  [test66_receiver() consume: test66_arg()];
-}
-// CHECK:    define void @test66()
-// CHECK:      [[T0:%.*]] = call [[TEST66:%.*]]* @test66_receiver()
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST66]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST66]]*
-// CHECK-NEXT: [[T4:%.*]] = call i8* @test66_arg()
-// CHECK-NEXT: [[T5:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T4]])
-// CHECK-NEXT: [[T6:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T7:%.*]] = bitcast [[TEST66]]* [[T3]] to i8*
-// CHECK-NEXT: [[SIX:%.*]] = icmp eq i8* [[T7]], null
-// CHECK-NEXT: br i1 [[SIX]], label [[NULINIT:%.*]], label [[CALL:%.*]]
-// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i8*)*)(i8* [[T7]], i8* [[T6]], i8* [[T5]])
-// CHECK-NEXT: br label [[CONT:%.*]]
-// CHECK: call void @objc_release(i8* [[T5]]) [[NUW]]
-// CHECK-NEXT: br label [[CONT:%.*]]
-// CHECK: [[T8:%.*]] = bitcast [[TEST66]]* [[T3]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T8]])
-// CHECK-NEXT: ret void
-
-// rdar://problem/9953540
-Class test67_helper(void);
-void test67(void) {
-  Class cl = test67_helper();
-}
-// CHECK:    define void @test67()
-// CHECK:      [[CL:%.*]] = alloca i8*, align 8
-// CHECK-NEXT: [[T0:%.*]] = call i8* @test67_helper()
-// CHECK-NEXT: store i8* [[T0]], i8** [[CL]], align 8
-// CHECK-NEXT: ret void
-
-Class test68_helper(void);
-void test68(void) {
-  __strong Class cl = test67_helper();
-}
-// CHECK:    define void @test68()
-// CHECK:      [[CL:%.*]] = alloca i8*, align 8
-// CHECK-NEXT: [[T0:%.*]] = call i8* @test67_helper()
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-// CHECK-NEXT: store i8* [[T1]], i8** [[CL]], align 8
-// CHECK-NEXT: [[T2:%.*]] = load i8** [[CL]]
-// CHECK-NEXT: call void @objc_release(i8* [[T2]])
-// CHECK-NEXT: ret void
-
-// rdar://problem/10564852
- at interface Test69 @end
- at implementation Test69
-- (id) foo { return self; }
- at end
-// CHECK: define internal i8* @"\01-[Test69 foo]"(
-// CHECK:      [[SELF:%.*]] = alloca [[TEST69:%.*]]*, align 8
-// CHECK:      [[T0:%.*]] = load [[TEST69]]** [[SELF]], align 8
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST69]]* [[T0]] to i8*
-// CHECK-NEXT: ret i8* [[T1]]
-
-// rdar://problem/10907547
-void test70(id i) {
-  // CHECK: define void @test70
-  // CHECK: store i8* null, i8**
-  // CHECK: store i8* null, i8**
-  // CHECK: [[ID:%.*]] = call i8* @objc_retain(i8*
-  // CHECK: store i8* [[ID]], i8**
-  id x[3] = {
-    [2] = i
-  };
-}
-
-// ARC-ALIEN: attributes [[NLB]] = { nonlazybind }
-// ARC-NATIVE: attributes [[NLB]] = { nonlazybind }
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arm-atomic-scalar-setter-getter.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arm-atomic-scalar-setter-getter.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/arm-atomic-scalar-setter-getter.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple armv7-apple-darwin10 -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-ARM %s
-// rdar://7761305
-
- at interface I
- at property long long LONG_PROP;
- at end
-
- at implementation I
- at synthesize LONG_PROP;
- at end
-// CHECK-ARM: call arm_aapcscc  void @objc_copyStruct(i8* %{{.*}}, i8* %{{.*}}, i32 8, i1 zeroext true, i1 zeroext false)
-// CHECK-ARM: call arm_aapcscc  void @objc_copyStruct(i8* %{{.*}}, i8* %{{.*}}, i32 8, i1 zeroext true, i1 zeroext false)
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/assign.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/assign.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/assign.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-struct s0 {
-  int x;
-};
-
- at interface C0
- at property int x0;
- at property _Complex int x1;
- at property struct s0 x2;
- at end
-
-// Check that we get exactly the message sends we expect, and no more.
-//
-// CHECK: define void @f0
-void f0(C0 *a) {
-// CHECK: objc_msgSend
-  int l0 = (a.x0 = 1);
-
-// CHECK: objc_msgSend
-  _Complex int l1 = (a.x1 = 1);
-
-// CHECK: objc_msgSend
-  struct s0 l2 = (a.x2 = (struct s0) { 1 });
-
-// CHECK: objc_msgSend
-// CHECK: objc_msgSend
-  int l3 = (a.x0 += 1);
-
-// CHECK: objc_msgSend
-// CHECK: objc_msgSend
-  _Complex int l4 = (a.x1 += 1);
-
-// CHECK-NOT: objc_msgSend
-// CHECK: }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/atomic-aggregate-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/atomic-aggregate-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/atomic-aggregate-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fobjc-gc -emit-llvm -o - %s | FileCheck -check-prefix LP64 %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10  -fobjc-gc -emit-llvm -o - %s | FileCheck -check-prefix LP64 %s
-// rdar: // 7849824
-// <rdar://problem/12547611>
-
-struct s {
-  double a, b, c, d;  
-};
-
-struct s1 {
-    int i;
-    id j;
-    id k;
-};
-
-struct s2 {};
-
- at interface A 
- at property (readwrite) double x;
- at property (readwrite) struct s y;
- at property (nonatomic, readwrite) struct s1 z;
- at property (readwrite) struct s2 a;
- at end
-
- at implementation A
- at synthesize x;
- at synthesize y;
- at synthesize z;
- at synthesize a;
- at end
-// CHECK-LP64: define internal double @"\01-[A x]"(
-// CHECK-LP64: load atomic i64* {{%.*}} unordered, align 8
-
-// CHECK-LP64: define internal void @"\01-[A setX:]"(
-// CHECK-LP64: store atomic i64 {{%.*}}, i64* {{%.*}} unordered, align 8
-
-// CHECK-LP64: define internal void @"\01-[A y]"(
-// CHECK-LP64: call void @objc_copyStruct(i8* {{%.*}}, i8* {{%.*}}, i64 32, i1 zeroext true, i1 zeroext false)
-
-// CHECK-LP64: define internal void @"\01-[A setY:]"(
-// CHECK-LP64: call void @objc_copyStruct(i8* {{%.*}}, i8* {{%.*}}, i64 32, i1 zeroext true, i1 zeroext false)
-
-// CHECK-LP64: define internal void @"\01-[A z]"(
-// CHECK-LP64: call i8* @objc_memmove_collectable(
-
-// CHECK-LP64: define internal void @"\01-[A setZ:]"(
-// CHECK-LP64: call i8* @objc_memmove_collectable(
-
-// CHECK-LP64: define internal void @"\01-[A a]"(
-// (do nothing)
-
-// CHECK-LP64: define internal void @"\01-[A setA:]"(
-// (do nothing)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-availability.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-availability.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-availability.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fvisibility hidden "-triple" "x86_64-apple-darwin8.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_4 %s
-// RUN: %clang_cc1 -fvisibility hidden "-triple" "x86_64-apple-darwin9.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_5 %s
-// RUN: %clang_cc1 -fvisibility hidden "-triple" "x86_64-apple-darwin10.0.0" -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-10_6 %s
-
-// CHECK-10_4: @"OBJC_CLASS_$_WeakClass1" = extern_weak global
-// CHECK-10_5: @"OBJC_CLASS_$_WeakClass1" = external global
-// CHECK-10_6: @"OBJC_CLASS_$_WeakClass1" = external global
-__attribute__((availability(macosx,introduced=10.5)))
- at interface WeakClass1 @end
-
- at implementation WeakClass1(MyCategory) @end
-
- at implementation WeakClass1(YourCategory) @end
-
-// CHECK-10_4: @"OBJC_CLASS_$_WeakClass2" = extern_weak global 
-// CHECK-10_5: @"OBJC_CLASS_$_WeakClass2" = extern_weak global 
-// CHECK-10_6: @"OBJC_CLASS_$_WeakClass2" = external global 
-__attribute__((availability(macosx,introduced=10.6)))
- at interface WeakClass2 @end
-
- at implementation WeakClass2(MyCategory) @end
-
- at implementation WeakClass2(YourCategory) @end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-exception.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-exception.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-exception.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -fobjc-exceptions -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -fobjc-exceptions -fvisibility hidden -o - %s | FileCheck -check-prefix=CHECK-HIDDEN %s
-
-__attribute__((objc_root_class)) 
- at interface Root {
-  Class isa;
-}
- at end
-
-__attribute__((objc_exception))
- at interface A : Root
- at end
-
- at implementation A
- at end
-// CHECK: @"OBJC_EHTYPE_$_A" = global {{%.*}} { i8** getelementptr (i8** @objc_ehtype_vtable, i32 2)
-// CHECK-HIDDEN: @"OBJC_EHTYPE_$_A" = hidden global {{%.*}} { i8** getelementptr (i8** @objc_ehtype_vtable, i32 2)
-
-__attribute__((objc_exception))
-__attribute__((visibility("default")))
- at interface B : Root
- at end
-
- at implementation B
- at end
-// CHECK: @"OBJC_EHTYPE_$_B" = global {{%.*}} { i8** getelementptr (i8** @objc_ehtype_vtable, i32 2)
-// CHECK-HIDDEN: @"OBJC_EHTYPE_$_B" = global {{%.*}} { i8** getelementptr (i8** @objc_ehtype_vtable, i32 2)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-minsize.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-minsize.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-minsize.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
- at interface Test
-- (void)test;
- at end
-
- at implementation Test
-- (void)test __attribute__((minsize)) {
-    // CHECK: define{{.*}}Test test
-    // CHECK: minsize
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-strong.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-strong.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/attr-strong.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang -emit-llvm -S -o %t %s
-
-struct s0 {
-  void *a;
-};
-struct s0 * __attribute__((objc_gc(strong))) g0;
-void f0(void) {
-  g0->a = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/auto-property-synthesize-protocol.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/auto-property-synthesize-protocol.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/auto-property-synthesize-protocol.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fobjc-default-synthesize-properties -emit-llvm  %s -o - | FileCheck %s
-// rdar://10907410
-
- at protocol P
- at optional
- at property int auto_opt_window;
- at property int no_auto_opt_window;
- at end
-
- at interface I<P>
- at property int auto_opt_window;
- at end
-
- at implementation I
- at end
-
- at protocol P1
- at property int auto_req_window;
- at property int no_auto_req_window; // expected-note {{property declared here}}
- at end
-
- at interface I1<P1>
- at property int auto_req_window;
- at end
-
- at implementation I1 // expected-warning {{auto property synthesis will not synthesize property declared in a protocol}}
- at end
-
-// CHECK: define internal i32 @"\01-[I auto_opt_window]"(
-// CHECK: define internal void @"\01-[I setAuto_opt_window:]"(
-// CHECK: define internal i32 @"\01-[I1 auto_req_window]"(
-// CHECK: define internal void @"\01-[I1 setAuto_req_window:]"(
-
-// CHECK-NOT: define internal i32 @"\01-[I1 no_auto_opt_window]"(
-// CHECK-NOT: define internal void @"\01-[I1 setNo_auto_opt_window:]"(
-// CHECK-NOT: define internal i32 @"\01-[I no_auto_req_window]"(
-// CHECK-NOT: define internal void @"\01-[I setNo_auto_req_window:]"(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/autorelease.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/autorelease.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/autorelease.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fobjc-runtime=macosx-10.7 -fexceptions -fobjc-exceptions -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -emit-llvm -fobjc-runtime=macosx-10.7 -fexceptions -fobjc-exceptions -o - %s | FileCheck %s
-// rdar://8881826
-// rdar://9412038
-
- at interface I
-{
-  id ivar;
-}
-- (id) Meth;
-+ (id) MyAlloc;;
- at end
-
- at implementation I
-- (id) Meth {
-   @autoreleasepool {
-      id p = [I MyAlloc];
-      if (!p)
-        return ivar;
-   }
-  return 0;
-}
-+ (id) MyAlloc {
-    return 0;
-}
- at end
-
-// CHECK: call i8* @objc_autoreleasePoolPush
-// CHECK: [[T:%.*]] = load i8** [[A:%.*]]
-// CHECK: call void @objc_autoreleasePoolPop
-
-// rdar://13660038
-int tryTo(int (*f)(void)) {
-  @try {
-    @autoreleasepool {
-      return f();
-    }
-  } @catch (...) {
-    return 0;
-  }
-}
-// CHECK:    define i32 @tryTo(i32 ()*
-// CHECK:      [[RET:%.*]] = alloca i32,
-// CHECK:      [[T0:%.*]] = call i8* @objc_autoreleasePoolPush()
-// CHECK-NEXT: [[T1:%.*]] = load i32 ()** {{%.*}},
-// CHECK-NEXT: [[T2:%.*]] = invoke i32 [[T1]]()
-// CHECK:      store i32 [[T2]], i32* [[RET]]
-// CHECK:      invoke void @objc_autoreleasePoolPop(i8* [[T0]])
-// CHECK:      landingpad { i8*, i32 } personality
-// CHECK-NEXT:   catch i8* null
-// CHECK:      call i8* @objc_begin_catch
-// CHECK-NEXT: store i32 0, i32* [[RET]]
-// CHECK:      call void @objc_end_catch()

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-
- at interface Object
-- (id) alloc;
-- (id) init;
- at end
-
-extern void abort(void);
-
-#define CHECK_IF(expr) if(!(expr)) abort();
-
- at interface Base: Object 
-{
-    int full;
-    int full2: 32;
-    int _refs: 8;
-    int field2: 3;
-    unsigned f3: 8;
-    short cc;
-    unsigned g: 16;
-    int r2: 8;
-    int r3: 8;
-    int r4: 2;
-    int r5: 8;
-    char c;
-}
-- (void)setValues;
- at end
-
- at interface Derived: Base
-{
-    char d;
-    int _field3: 6;
-}
-- (void)checkValues;
- at end
-
- at implementation Base
--(void)setValues {
-  full = 1;
-  full2 = 2;
-  _refs = 3;
-  field2 = 1;
-  f3 = 6;
-  cc = 7;
-  g = 8;
-  r2 = 9;
-  r3 = 10;
-  r4 = 1;
-  r5 = 12;
-  c = 13;
-}
- at end
-
- at implementation Derived
--(void)checkValues {
-  CHECK_IF(full == 1);
-  CHECK_IF(full2 == 2);
-  CHECK_IF(_refs == 3);
-  CHECK_IF(field2 == 1);
-  CHECK_IF(f3 == 6);
-  CHECK_IF(cc == 7);
-  CHECK_IF(g == 8);
-  CHECK_IF(r2 == 9);
-  CHECK_IF(r3 == 10);
-  CHECK_IF(r4 == 1);
-  CHECK_IF(r5 == 12);
-  CHECK_IF(c == 13);
-}
- at end
-
-int main(void) {
-  Derived *obj = [[Derived alloc] init];
-
-  [obj setValues];
-  [obj checkValues];
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-access.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-access.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-access.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t1 %s
-// RUN: FileCheck -check-prefix=CHECK-I386 < %t1 %s
-
-// RUN: %clang_cc1 -triple armv6-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -target-abi apcs-gnu -emit-llvm -o %t2 %s
-// RUN: FileCheck -check-prefix=CHECK-ARM < %t2 %s
-
- at interface I0 { 
- at public
-    unsigned x:15;
-    unsigned y: 1;
-} 
- at end
-
-// Check that we don't try to use an i32 load here, which would reach beyond the
-// end of the structure.
-//
-// CHECK-I386: define i32 @f0(
-// CHECK-I386:   [[t0_0:%.*]] = load i8* {{.*}}, align 1
-// CHECK-I386:   lshr i8 [[t0_0]], 7
-// CHECK-I386: }
-int f0(I0 *a) {
-  return a->y;
-}
-
-// Check that we can handled straddled loads.
-//
-// CHECK-ARM: define i32 @f1(
-// CHECK-ARM:    [[t1_ptr:%.*]] = getelementptr
-// CHECK-ARM:    [[t1_base:%.*]] = bitcast i8* [[t1_ptr]] to i40*
-// CHECK-ARM:    [[t1_0:%.*]] = load i40* [[t1_base]], align 1
-// CHECK-ARM:    [[t1_1:%.*]] = lshr i40 [[t1_0]], 1
-// CHECK-ARM:    [[t1_2:%.*]] = and i40 [[t1_1]],
-// CHECK-ARM:                   trunc i40 [[t1_2]] to i32
-// CHECK-ARM: }
- at interface I1 {
- at public
-    unsigned x: 1;
-    unsigned y:32;
-}
- at end
-
-int f1(I1 *a) { return a->y; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-gnu.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-gnu.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-gnu.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -S -emit-llvm -fobjc-runtime=gcc -o %t %s
-typedef enum { A1, A2 } A;
-typedef struct { A a : 1; } B;
- at interface Obj { B *b; } @end
- at implementation Obj @end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-ivar-metadata.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-ivar-metadata.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-ivar-metadata.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface INTF
-{
-    unsigned ivar1;
-    unsigned ivar2;
-    unsigned char BDIVAR3:1;
-    unsigned char BDIVAR4:1;
-}
- at end
-
- at implementation INTF
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-ivar-offsets.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-ivar-offsets.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield-ivar-offsets.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
-// RUN: grep -F '@"OBJC_IVAR_$_I0._b0" = global i64 0, section "__DATA, __objc_ivar", align 8' %t
-// RUN: grep -F '@"OBJC_IVAR_$_I0._b1" = global i64 0, section "__DATA, __objc_ivar", align 8' %t
-// RUN: grep -F '@"OBJC_IVAR_$_I0._b2" = global i64 1, section "__DATA, __objc_ivar", align 8' %t
-// RUN: grep -F '@"OBJC_IVAR_$_I0._x" = global i64 2, section "__DATA, __objc_ivar", align 8' %t
-// RUN: grep -F '@"OBJC_IVAR_$_I0._b3" = global i64 4, section "__DATA, __objc_ivar", align 8' %t
-// RUN: grep -F '@"OBJC_IVAR_$_I0._y" = global i64 6, section "__DATA, __objc_ivar", align 8' %t
-// RUN: grep -F '@"OBJC_IVAR_$_I0._b4" = global i64 7, section "__DATA, __objc_ivar", align 8' %t
-// RUN: grep -F '@"OBJC_IVAR_$_I0." = global' %t | count 0
-
- at interface I0 {
-  unsigned _b0:4;
-  unsigned _b1:5;
-  unsigned _b2:5;
-  char _x;
-  unsigned _b3:9;
-  char _y;
-  char _b4:3;
-  char : 0;
-}
- at end
-
- at implementation I0
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield_encoding.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield_encoding.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/bitfield_encoding.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-// RUN: grep "ib1b14" %t | count 1
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -fobjc-runtime=gcc -emit-llvm -o %t %s
-// RUN: grep "ib32i1b33i14" %t | count 1
-
-struct foo{
-	int a;
-	int b:1;
-	int c:14;
-};
-
-const char *encoding = @encode(struct foo);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-6.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-6.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-6.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -fblocks -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s
-// rdar://8893785
-
-void MYFUNC() {
-// CHECK:    define void @MYFUNC()
-// CHECK:      [[OBSERVER_SLOT:%.*]] = alloca [[OBSERVER_T:%.*]], align 8
-
-// CHECK:      [[T0:%.*]] = getelementptr inbounds [[OBSERVER_T]]* [[OBSERVER_SLOT]], i32 0, i32 1
-// CHECK:      store [[OBSERVER_T]]* [[OBSERVER_SLOT]], [[OBSERVER_T]]** [[T0]]
-
-// CHECK:      [[T1:%.*]] = bitcast i8* ()*
-// CHECK:      [[FORWARDING:%.*]] = getelementptr inbounds [[OBSERVER_T]]* [[OBSERVER_SLOT]], i32 0, i32 1
-// CHECK-NEXT: [[T0:%.*]] = load [[OBSERVER_T]]** [[FORWARDING]]
-// CHECK-NEXT: [[OBSERVER:%.*]] = getelementptr inbounds [[OBSERVER_T]]* [[T0]], i32 0, i32 6
-// CHECK-NEXT: store i8* [[T1]], i8** [[OBSERVER]]
-  __block id observer = ^{ return observer; };
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-byref-variable-layout.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-byref-variable-layout.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-byref-variable-layout.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak -triple x86_64-apple-darwin -O0 -emit-llvm %s -o - | FileCheck %s
-
-// rdar://12759433
- at class NSString;
-
-void Test12759433() {
- __block __unsafe_unretained NSString *uuByref = (__bridge NSString *)(void*)0x102030405060708;
- void (^block)() = ^{ uuByref = 0; };
- block();
-}
-// CHECK: %struct.__block_byref_uuByref = type { i8*, %struct.__block_byref_uuByref*, i32, i32, [[ZERO:%.*]]* }
-int main() {
-  __block __weak id wid;
-  __block long XXX;
-  __block id ID;
-  __block struct S {
-     int iS;
-     double iD;
-     void *pv;
-     __unsafe_unretained id unsunr;
-  } import;
-  void (^c)() = ^{
-// Inline flag for BYREF variable layout (1107296256): BLOCK_BYREF_HAS_COPY_DISPOSE BLOCK_BYREF_LAYOUT_WEAK
-// CHECK: store i32 1107296256, i32* [[T0:%.*]]
-  wid = 0;
-
-// Inline flag for BYREF variable layout (536870912): BLOCK_BYREF_LAYOUT_NON_OBJECT
-// CHECK: store i32 536870912, i32* [[T1:%.*]]
-    XXX = 12345;
-
-// Inline flag for BYREF variable layout (838860800): BLOCK_BYREF_HAS_COPY_DISPOSE BLOCK_BYREF_LAYOUT_STRONG
-// CHECK: store i32 838860800, i32* [[T2:%.*]]
-    ID = 0;
-
-// Inline flag for BYREF variable layout (268435456): BLOCK_BYREF_LAYOUT_EXTENDED
-// BYREF variable layout: BL_NON_OBJECT_WORD:3, BL_UNRETAINED:1, BL_OPERATOR:0
-// CHECK: store i32 268435456, i32* [[T3:%.*]]
-    import.iD = 3.14;
-
-  };
-  c();
-}
-
-// rdar://12787751
-typedef char mds_path_t[1024];
-void directVolumePerfWaitForStoreState()
-{
- __block mds_path_t path;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-var-layout.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-var-layout.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/block-var-layout.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,166 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-gc -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -O0 -print-ivar-layout -emit-llvm -o /dev/null %s > %t-64.layout
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.layout %s
-// rdar://12752901
-
-struct S {
-    int i1;
-    id o1;
-    struct V {
-     int i2;
-     id o2;
-    } v1;
-    int i3;
-    id o3;
-};
-
-__weak id wid;
-void x(id y) {}
-void y(int a) {}
-
-extern id opaque_id();
-
-void f() {
-    __block int byref_int = 0;
-    char ch = 'a';
-    char ch1 = 'b';
-    char ch2 = 'c';
-    short sh = 2;
-    const id bar = (id) opaque_id();
-    id baz = 0;
-    __strong void *strong_void_sta;
-    __block id byref_bab = (id)0;
-    __block void *bl_var1;
-    int i; double dob;
-
-// The patterns here are a sequence of bytes, each saying first how
-// many sizeof(void*) chunks to skip (high nibble) and then how many
-// to scan (low nibble).  A zero byte says that we've reached the end
-// of the pattern.
-//
-// All of these patterns start with 01 3x because the block header on
-// LP64 consists of an isa pointer (which we're supposed to scan for
-// some reason) followed by three words (2 ints, a function pointer,
-// and a descriptor pointer).
-
-// FIXME: do these really have to be named L_OBJC_CLASS_NAME_xxx?
-// FIXME: sequences should never end in x0 00 instead of just 00
-
-// Test 1
-// byref int, short, char, char, char, id, id, strong void*, byref id
-// CHECK-LP64: block variable layout for block: 0x01, 0x35, 0x10, 0x00
-    void (^b)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x((id)strong_void_sta);
-        x(byref_bab);
-    };    
-    b();
-
-// Test 2
-// byref int, short, char, char, char, id, id, strong void*, byref void*, byref id
-// 01 36 10 00
-// CHECK-LP64: block variable layout for block: 0x01, 0x36, 0x10, 0x00
-    void (^c)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x((id)strong_void_sta);
-        x(wid);
-        bl_var1 = 0;
-        x(byref_bab);
-    };    
-    c();
-
-// Test 3
-// byref int, short, char, char, char, id, id, byref void*, int, double, byref id
-// 01 34 11 30 00
-// FIXME: we'd get a better format here if we sorted by scannability, not just alignment
-// CHECK-LP64: block variable layout for block: 0x01, 0x35, 0x30, 0x00
-    void (^d)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x(wid);
-        bl_var1 = 0; 
-        y(i + dob);
-        x(byref_bab);
-    };    
-    d();
-
-// Test 4
-// struct S (int, id, int, id, int, id)
-// 01 41 11 11 00
-// CHECK-LP64: block variable layout for block: 0x01, 0x41, 0x11, 0x11, 0x00
-    struct S s2;
-    void (^e)() = ^{
-        x(s2.o1);
-    };    
-    e();
-}
-
-// Test 5 (unions/structs and their nesting):
-void Test5() {
-  struct S5 {
-    int i1;
-    id o1;
-    struct V {
-     int i2;
-     id o2;
-    } v1;
-    int i3;
-    union UI {
-        void * i1;
-        id o1;
-        int i3;
-        id o3;
-    }ui;
-  };
-
-  union U {
-        void * i1;
-        id o1;
-        int i3;
-        id o3;
-  }ui;
-
-  struct S5 s2;
-  union U u2;
-
-// struct s2 (int, id, int, id, int, id?), union u2 (id?)
-// 01 41 11 12 00
-// CHECK-LP64: block variable layout for block: 0x01, 0x41, 0x11, 0x12, 0x00
-  void (^c)() = ^{
-    x(s2.ui.o1);
-    x(u2.o1);
-  };
-  c();
-}
-
-// rdar: //8417746
-void CFRelease(id);
-void notifyBlock(id dependentBlock) {
- id singleObservationToken;
- id token;
- void (^b)();
-
-// id, id, void(^)()
-// 01 33 00
-// CHECK-LP64: block variable layout for block: 0x01, 0x33, 0x00
- void (^wrapperBlock)() = ^() {
-     CFRelease(singleObservationToken);
-     CFRelease(singleObservationToken);
-     CFRelease(token);
-     CFRelease(singleObservationToken);
-     b();
-    };
- wrapperBlock();
-}
-
-void test_empty_block() {
-// 01 00
-// CHECK-LP64: block variable layout for block: 0x01, 0x00
-  void (^wrapperBlock)() = ^() {
-  };
- wrapperBlock();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t -fobjc-gc -fblocks -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5
-// RUN: grep "_Block_object_dispose" %t | count 6
-// RUN: grep "__copy_helper_block_" %t | count 4
-// RUN: grep "__destroy_helper_block_" %t | count 4
-// RUN: grep "__Block_byref_object_copy_" %t | count 2
-// RUN: grep "__Block_byref_object_dispose_" %t | count 2
-// RUN: grep "i32 135)" %t | count 0
-// RUN: grep "_Block_object_assign" %t | count 4
-// RUN: grep "objc_read_weak" %t | count 2
-// RUN: grep "objc_assign_weak" %t | count 3
-// RUN: %clang_cc1 -x objective-c++ %s -emit-llvm -o %t -fobjc-gc -fblocks -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5
-// RUN: grep "_Block_object_dispose" %t | count 6
-// RUN: grep "__copy_helper_block_" %t | count 4
-// RUN: grep "__destroy_helper_block_" %t | count 4
-// RUN: grep "__Block_byref_object_copy_" %t | count 2
-// RUN: grep "__Block_byref_object_dispose_" %t | count 2
-// RUN: grep "i32 135)" %t | count 0
-// RUN: grep "_Block_object_assign" %t | count 4
-// RUN: grep "objc_read_weak" %t | count 2
-// RUN: grep "objc_assign_weak" %t | count 3
-
- at interface NSDictionary @end
-
-void test1(NSDictionary * dict) {
-  ^{ (void)dict; }();
-}
-
- at interface D
- at end
-
-void foo() {
-  __block __weak D *weakSelf;
-  D *l;
-  l = weakSelf;
-  weakSelf = l;
-}
-
-void (^__weak b)(void);
-
-void test2() {
-  __block int i = 0;
-  b = ^ {  ++i; };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// We run this twice, once as Objective-C and once as Objective-C++.
-// RUN: %clang_cc1 %s -emit-llvm -o - -fobjc-gc -fblocks -fexceptions -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s
-// RUN: %clang_cc1 %s -emit-llvm -o - -fobjc-gc -fblocks -fexceptions -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -x objective-c++ | FileCheck %s
-
-
-// CHECK: define i8* @{{.*}}test0
-// CHECK: define internal void @{{.*}}_block_invoke(
-// CHECK:      call i8* @objc_assign_strongCast(
-// CHECK-NEXT: ret void
-id test0(id x) {
-  __block id result;
-  ^{ result = x; }();
-  return result;
-}
-
-// <rdar://problem/8224178>: cleanup __block variables on EH path
-// CHECK: define void @{{.*}}test1
-void test1() {
-  extern void test1_help(void (^x)(void));
-
-  // CHECK:      [[N:%.*]] = alloca [[N_T:%.*]], align 8
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[N_T]]* [[N]], i32 0, i32 4
-  // CHECK-NEXT: store double 1.000000e+{{0?}}01, double* [[T0]], align 8
-  __block double n = 10;
-
-  // CHECK:      invoke void @{{.*}}test1_help
-  test1_help(^{ n = 20; });
-
-  // CHECK:      [[T1:%.*]] = bitcast [[N_T]]* [[N]] to i8*
-  // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T1]], i32 8)
-  // CHECK-NEXT: ret void
-
-  // CHECK:      landingpad { i8*, i32 } personality
-  // CHECK-NEXT:   cleanup
-  // CHECK:      [[T1:%.*]] = bitcast [[N_T]]* [[N]] to i8*
-  // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T1]], i32 8)
-  // CHECK:      resume { i8*, i32 }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fblocks -o %t %s
-
-// 1x for the declaration
-// 1x for the object-pointer byref copy helper
-// 1x for the block-pointer byref copy helper
-// 8x for the block copy helper
-// RUN: grep 'object_assign' %t | count 11
-
-// RUN: grep 'object_dispose' %t | count 29
-
-int main() {
-  typedef id aid __attribute__((aligned(1)));
-  __block aid a1;
-  __block id a2 __attribute__((aligned(2)));
-  __block id a3 __attribute__((aligned(4)));
-  __block id a4 __attribute__((aligned(8)));
-  __block id a5, a6, a7;
-  __block void (^b)();
-  ^{ a1=a2=a3=a4=a5=a6=a7=0; b = 0; }();
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fobjc-exceptions -fblocks -o %t %s
-// rdar://7590273
-
-void EXIT(id e);
-
- at interface NSBlockOperation {
-}
-+(id)blockOperationWithBlock:(void (^)(void))block ;
- at end
-
-void FUNC() {
-        [NSBlockOperation blockOperationWithBlock:^{
-            @try {
-
-            }
-            @catch (id exception) {
-		EXIT(exception);
-            }
-        }];
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fblocks -o %t %s
-
-// rdar: // 8064140
-
- at interface IDEWorkspaceDocument 
-{
-  id _defaultEditorStateTree;
-}
-- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, unsigned char *stop))block ;
- at end
-
-
-
-int foo();
-extern void DVT (volatile const void * object, volatile const void * selector, const char * functionName); 
- at implementation IDEWorkspaceDocument
-
-- (void)stateSavingDefaultEditorStatesForURLs {
- [_defaultEditorStateTree enumerateKeysAndObjectsUsingBlock:^(id identifier, id urlsToEditorStates, unsigned char *stop) {
-  do{ 
-if (foo() ) 
-  DVT(&self,&_cmd,__PRETTY_FUNCTION__);
-
-}while(0); 
-
-  do{ 
-       DVT(&self,&_cmd,__PRETTY_FUNCTION__);
-    }while(0); 
-
-
- }];
-
-}
-
-- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, unsigned char *stop))block {}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-ivar-debug.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-ivar-debug.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks-ivar-debug.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -g %s -fblocks -S -o %t
-// Radar 7959934
-
- at interface NSObject {
-  struct objc_object *isa;
-}
- at end
- at interface Foo : NSObject {
-  int _prop;
-}
- at end
-
- at implementation Foo
-- (int)doSomething {
-  int (^blk)(void) = ^{ return _prop; };
-  return blk();
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/blocks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fblocks -o - %s | FileCheck %s
-
-// test1.  All of this is somehow testing rdar://6676764
-struct S {
-  void (^F)(struct S*);
-} P;
-
-
- at interface T
-  - (int)foo: (T (^)(T*)) x;
- at end
-
-void foo(T *P) {
- [P foo: 0];
-}
-
- at interface A 
--(void) im0;
- at end
-
-// CHECK: define internal i32 @"__8-[A im0]_block_invoke"(
- at implementation A
--(void) im0 {
-  (void) ^{ return 1; }();
-}
- at end
-
- at interface B : A @end
- at implementation B
--(void) im1 {
-  ^(void) { [self im0]; }();
-}
--(void) im2 {
-  ^{ [super im0]; }();
-}
--(void) im3 {
-  ^{ ^{[super im0];}(); }();
-}
- at end
-
-// rdar://problem/9006315
-// In-depth test for the initialization of a __weak __block variable.
- at interface Test2 -(void) destroy; @end
-void test2(Test2 *x) {
-  extern void test2_helper(void (^)(void));
-  // CHECK:    define void @test2(
-  // CHECK:      [[X:%.*]] = alloca [[TEST2:%.*]]*,
-  // CHECK-NEXT: [[WEAKX:%.*]] = alloca [[WEAK_T:%.*]],
-  // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],
-  // CHECK-NEXT: store [[TEST2]]*
-
-  // isa=1 for weak byrefs.
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[WEAK_T]]* [[WEAKX]], i32 0, i32 0
-  // CHECK-NEXT: store i8* inttoptr (i32 1 to i8*), i8** [[T0]]
-
-  // Forwarding.
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[WEAK_T]]* [[WEAKX]], i32 0, i32 1
-  // CHECK-NEXT: store [[WEAK_T]]* [[WEAKX]], [[WEAK_T]]** [[T1]]
-
-  // Flags.  This is just BLOCK_HAS_COPY_DISPOSE BLOCK_BYREF_LAYOUT_UNRETAINED
-  // CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[WEAK_T]]* [[WEAKX]], i32 0, i32 2
-  // CHECK-NEXT: store i32 1375731712, i32* [[T2]]
-
-  // Size.
-  // CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds [[WEAK_T]]* [[WEAKX]], i32 0, i32 3
-  // CHECK-NEXT: store i32 28, i32* [[T3]]
-
-  // Copy and dipose helpers.
-  // CHECK-NEXT: [[T4:%.*]] = getelementptr inbounds [[WEAK_T]]* [[WEAKX]], i32 0, i32 4
-  // CHECK-NEXT: store i8* bitcast (void (i8*, i8*)* @__Block_byref_object_copy_{{.*}} to i8*), i8** [[T4]]
-  // CHECK-NEXT: [[T5:%.*]] = getelementptr inbounds [[WEAK_T]]* [[WEAKX]], i32 0, i32 5
-  // CHECK-NEXT: store i8* bitcast (void (i8*)* @__Block_byref_object_dispose_{{.*}} to i8*), i8** [[T5]]
-
-  // Actually capture the value.
-  // CHECK-NEXT: [[T6:%.*]] = getelementptr inbounds [[WEAK_T]]* [[WEAKX]], i32 0, i32 6
-  // CHECK-NEXT: [[CAPTURE:%.*]] = load [[TEST2]]** [[X]]
-  // CHECK-NEXT: store [[TEST2]]* [[CAPTURE]], [[TEST2]]** [[T6]]
-
-  // Then we initialize the block, blah blah blah.
-  // CHECK:      call void @test2_helper(
-
-  // Finally, kill the variable with BLOCK_FIELD_IS_BYREF.  We're not
-  // supposed to pass BLOCK_FIELD_IS_WEAK here.
-  // CHECK:      [[T0:%.*]] = bitcast [[WEAK_T]]* [[WEAKX]] to i8*
-  // CHECK:      call void @_Block_object_dispose(i8* [[T0]], i32 8)
-
-  __weak __block Test2 *weakX = x;
-  test2_helper(^{ [weakX destroy]; });
-}
-
-// rdar://problem/9124263
-// In the test above, check that the use in the invocation function
-// doesn't require a read barrier.
-// CHECK:    define internal void @__test2_block_invoke
-// CHECK:      [[BLOCK:%.*]] = bitcast i8* {{%.*}} to [[BLOCK_T]]*
-// CHECK-NOT:  bitcast
-// CHECK:      [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5
-// CHECK-NEXT: [[T1:%.*]] = load i8** [[T0]]
-// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[WEAK_T]]{{.*}}*
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds [[WEAK_T]]{{.*}}* [[T2]], i32 0, i32 1
-// CHECK-NEXT: [[T4:%.*]] = load [[WEAK_T]]{{.*}}** [[T3]]
-// CHECK-NEXT: [[WEAKX:%.*]] = getelementptr inbounds [[WEAK_T]]{{.*}}* [[T4]], i32 0, i32 6
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST2]]** [[WEAKX]], align 4
-
-// rdar://problem/12722954
-// Make sure that ... is appropriately positioned in a block call.
-void test3(void (^block)(int, ...)) {
-  block(0, 1, 2, 3);
-}
-// CHECK:    define void @test3(
-// CHECK:      [[BLOCK:%.*]] = alloca void (i32, ...)*, align 4
-// CHECK-NEXT: store void (i32, ...)*
-// CHECK-NEXT: [[T0:%.*]] = load void (i32, ...)** [[BLOCK]], align 4
-// CHECK-NEXT: [[T1:%.*]] = bitcast void (i32, ...)* [[T0]] to [[BLOCK_T:%.*]]*
-// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[T1]], i32 0, i32 3
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[BLOCK_T]]* [[T1]] to i8*
-// CHECK-NEXT: [[T4:%.*]] = load i8** [[T2]]
-// CHECK-NEXT: [[T5:%.*]] = bitcast i8* [[T4]] to void (i8*, i32, ...)*
-// CHECK-NEXT: call void (i8*, i32, ...)* [[T5]](i8* [[T3]], i32 0, i32 1, i32 2, i32 3)
-// CHECK-NEXT: ret void
-
-void test4(void (^block)()) {
-  block(0, 1, 2, 3);
-}
-// CHECK:    define void @test4(
-// CHECK:      [[BLOCK:%.*]] = alloca void (...)*, align 4
-// CHECK-NEXT: store void (...)*
-// CHECK-NEXT: [[T0:%.*]] = load void (...)** [[BLOCK]], align 4
-// CHECK-NEXT: [[T1:%.*]] = bitcast void (...)* [[T0]] to [[BLOCK_T:%.*]]*
-// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[BLOCK_T]]* [[T1]], i32 0, i32 3
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[BLOCK_T]]* [[T1]] to i8*
-// CHECK-NEXT: [[T4:%.*]] = load i8** [[T2]]
-// CHECK-NEXT: [[T5:%.*]] = bitcast i8* [[T4]] to void (i8*, i32, i32, i32, i32)*
-// CHECK-NEXT: call void [[T5]](i8* [[T3]], i32 0, i32 1, i32 2, i32 3)
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/boxing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/boxing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/boxing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-- (id)initWithChar:(char)value;
-- (id)initWithUnsignedChar:(unsigned char)value;
-- (id)initWithShort:(short)value;
-- (id)initWithUnsignedShort:(unsigned short)value;
-- (id)initWithInt:(int)value;
-- (id)initWithUnsignedInt:(unsigned int)value;
-- (id)initWithLong:(long)value;
-- (id)initWithUnsignedLong:(unsigned long)value;
-- (id)initWithLongLong:(long long)value;
-- (id)initWithUnsignedLongLong:(unsigned long long)value;
-- (id)initWithFloat:(float)value;
-- (id)initWithDouble:(double)value;
-- (id)initWithBool:(BOOL)value;
-- (id)initWithInteger:(NSInteger)value;
-- (id)initWithUnsignedInteger:(NSUInteger)value;
-
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
- at end
-
- at interface NSString : NSObject
- at end
-
- at interface NSString (NSStringExtensionMethods)
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end
-
-// CHECK: [[WithIntMeth:@".*"]] = internal global [15 x i8] c"numberWithInt:\00"
-// CHECK: [[WithIntSEL:@".*"]] = internal externally_initialized global i8* getelementptr inbounds ([15 x i8]* [[WithIntMeth]]
-// CHECK: [[WithCharMeth:@".*"]] = internal global [16 x i8] c"numberWithChar:\00"
-// CHECK: [[WithCharSEL:@".*"]] = internal externally_initialized global i8* getelementptr inbounds ([16 x i8]* [[WithCharMeth]]
-// CHECK: [[WithBoolMeth:@".*"]] = internal global [16 x i8] c"numberWithBool:\00"
-// CHECK: [[WithBoolSEL:@".*"]] = internal externally_initialized global i8* getelementptr inbounds ([16 x i8]* [[WithBoolMeth]]
-// CHECK: [[WithIntegerMeth:@".*"]] = internal global [19 x i8] c"numberWithInteger:\00"
-// CHECK: [[WithIntegerSEL:@".*"]] = internal externally_initialized global i8* getelementptr inbounds ([19 x i8]* [[WithIntegerMeth]]
-// CHECK: [[WithUnsignedIntegerMeth:@".*"]] = internal global [27 x i8] c"numberWithUnsignedInteger:\00"
-// CHECK: [[WithUnsignedIntegerSEL:@".*"]] = internal externally_initialized global i8* getelementptr inbounds ([27 x i8]* [[WithUnsignedIntegerMeth]]
-// CHECK: [[stringWithUTF8StringMeth:@".*"]] = internal global [22 x i8] c"stringWithUTF8String:\00"
-// CHECK: [[stringWithUTF8StringSEL:@".*"]] = internal externally_initialized global i8* getelementptr inbounds ([22 x i8]* [[stringWithUTF8StringMeth]]
-
-int main() {
-  // CHECK: load i8** [[WithIntSEL]]
-  int i; @(i);
-  // CHECK: load i8** [[WithCharSEL]]
-  signed char sc; @(sc);
-  // CHECK: load i8** [[WithBoolSEL]]
-  BOOL b; @(b);
-  // CHECK: load i8** [[WithBoolSEL]]
-  typeof(b) b2; @(b2);
-  // CHECK: load i8** [[WithBoolSEL]]
-  typedef const typeof(b) MyBOOL; MyBOOL b3; @(b3);
-  // CHECK: load i8** [[WithBoolSEL]]
-  @((BOOL)i);
-  // CHECK: load i8** [[WithIntegerSEL]]
-  @((NSInteger)i);
-  // CHECK: load i8** [[WithUnsignedIntegerSEL]]
-  @((NSUInteger)i);
-  // CHECK: load i8** [[stringWithUTF8StringSEL]]
-  const char *s; @(s);
-
-  typedef enum : NSInteger { Red, Green, Blue } Color;
-  // CHECK: load i8** [[WithIntegerSEL]]
-  @(Red);
-  Color col = Red;
-  // CHECK: load i8** [[WithIntegerSEL]]
-  @(col);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/builtin-memfns.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/builtin-memfns.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/builtin-memfns.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.8.0 -emit-llvm -o - %s | FileCheck %s
-
-void *memcpy(void *restrict s1, const void *restrict s2, unsigned long n);
-
-// PR13697
-void test1(int *a, id b) {
-  // CHECK: @test1
-  // CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* {{.*}}, i8* {{.*}}, i64 8, i32 1, i1 false)
-  memcpy(a, b, 8);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/builtins.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/builtins.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/builtins.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-void test0(id receiver, SEL sel, const char *str) {
-  short s = ((short (*)(id, SEL, const char*)) objc_msgSend)(receiver, sel, str);
-}
-// CHECK: define void @test0(
-// CHECK:   call signext i16 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i16 (i8*, i8*, i8*)*)(

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/catch-lexical-block.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/catch-lexical-block.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/catch-lexical-block.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -g -fobjc-exceptions -emit-llvm %s -o - | FileCheck %s
- at interface Foo @end
-void f0() {
-  @try {
-    @throw @"a";
-  } @catch(Foo *e) {
-  }
-}
-
-// We should have 3 lexical blocks here at the moment, including one
-// for the catch block.
-// CHECK: lexical_block
-// CHECK: lexical_block
-// CHECK: auto_variable
-// CHECK: lexical_block

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/category-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/category-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/category-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5  -emit-llvm -o - %s | FileCheck %s
-// PR7431
-
-// CHECK: module asm "\09.lazy_reference .objc_class_name_A"
-// CHECK: module asm "\09.objc_category_name_A_foo=0"
-// CHECK: module asm "\09.globl .objc_category_name_A_foo"
-
- at interface A
- at end
- at interface A(foo)
-- (void)foo_myStuff;
- at end
- at implementation A(foo)
-- (void)foo_myStuff {
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/category-super-class-meth.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/category-super-class-meth.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/category-super-class-meth.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-darwin -o - | FileCheck %s
-// rdar://12459358
- at interface NSObject 
--(id)copy;
-+(id)copy;
- at end
-
- at interface Sub1 : NSObject @end
-
- at implementation Sub1
--(id)copy { return [super copy]; }  // ok: instance method in class
-+(id)copy { return [super copy]; }  // ok: class method in class
- at end
-
- at interface Sub2 : NSObject @end
-
- at interface Sub2 (Category) @end
-
- at implementation Sub2 (Category)
--(id)copy { return [super copy]; }  // ok: instance method in category
-+(id)copy { return [super copy]; }  // BAD: class method in category
- at end
-
-// CHECK: define internal i8* @"\01+[Sub2(Category) copy]
-// CHECK: [[ONE:%.*]] = load %struct._class_t** @"\01L_OBJC_CLASSLIST_SUP_REFS_$_3"
-// CHECK: [[TWO:%.*]] = bitcast %struct._class_t* [[ONE]] to i8*
-// CHECK: [[THREE:%.*]] = getelementptr inbounds %struct._objc_super* [[OBJC_SUPER:%.*]], i32 0, i32 1
-// CHECK: store i8* [[TWO]], i8** [[THREE]]
-// CHECK: [[FOUR:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/class-getter-dotsyntax.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/class-getter-dotsyntax.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/class-getter-dotsyntax.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface Test { }
-+ (Test *)crash;
-+ (void)setCrash: (int)value;
- at end
-
- at implementation Test
-static int _value;
-- (void)cachesPath
-{
- static Test *cachesPath;
-
- if (!cachesPath) {
-  Test *crash = Test.crash;
- }
-}
-+ (Test *)crash{ return 0; }
-+ (void)setCrash: (int)value{ _value = value; }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/class-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/class-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/class-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s
-
-
- at interface I0 {
-  struct { int a; } a;
-}
- at end 
-
- at class I2;
-
- at interface I1 {
-  I2 *_imageBrowser;
-}
- at end 
-
- at implementation I1 
- at end 
-
- at interface I2 : I0 
- at end 
-
- at implementation I2 
- at end 
-
-
-// Implementations without interface declarations.
-// rdar://6804402
- at class foo;
- at implementation foo 
- at end
-
- at implementation bar
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/compatibility-alias.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/compatibility-alias.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/compatibility-alias.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface Int1 @end
-
-typedef Int1 Int1Typedef;
- at compatibility_alias Int1Alias Int1Typedef;
-
- at implementation Int1Alias @end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/complex-double-abi.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/complex-double-abi.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/complex-double-abi.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i386-apple-macosx10.7.2 %s -o - | FileCheck %s 
-// rdar://10331109
-
- at interface CNumber
-- (double _Complex)sum;
- at end
-
-double _Complex foo(CNumber *x) {
-  return [x sum];
-}
-
-// CHECK:      [[R:%.*]] = phi double [ [[R1:%.*]], [[MSGCALL:%.*]] ], [ 0.000000e+00, [[NULLINIT:%.*]] ]
-// CHECK-NEXT: [[I:%.*]] = phi double [ [[I1:%.*]], [[MSGCALL]] ], [ 0.000000e+00, [[NULLINIT]] ]
-// CHECK: store double [[R]]
-// CHECK: store double [[I]]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/complex-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/complex-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/complex-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -emit-llvm -o - %s | FileCheck -check-prefix LP64 %s
-// rdar: // 7351147
-
- at interface A
- at property __complex int COMPLEX_PROP;
-- (__complex int)y;
-- (void) setY : (__complex int)rhs;
- at end
-
-void f0(A *a) {  
-  _Complex int a1 = 25 + 10i;
-  a.COMPLEX_PROP += a1;
-  a.y += a1;
-}
-
-// CHECK-LP64: internal global [13 x i8] c"COMPLEX_PROP
-// CHECK-LP64: internal global [17 x i8] c"setCOMPLEX_PROP
-
-// rdar: // 7351147
- at interface B
- at property (assign) _Complex float f_complex_ivar;
- at end
-
- at implementation B
-
- at synthesize f_complex_ivar = _f_complex_ivar;
--(void) unary_f_complex: (_Complex float) a0 {
-  self.f_complex_ivar = a0;
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-string-class-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-string-class-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-string-class-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fno-constant-cfstrings -fconstant-string-class OFConstantString  -emit-llvm -o %t %s
-// pr9914
-
- at interface OFConstantString 
-+ class;
- at end
-
- at interface OFString
-- (void)XMLElementBySerializing;
- at end
-
- at implementation OFString
-
-- (void)XMLElementBySerializing
-{
- id str = @"object";
-
- [OFConstantString class];
-}
-
- at end
-
-// CHECK: @"OBJC_CLASS_$_OFConstantString" = external global

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-string-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-string-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-string-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fno-constant-cfstrings -fconstant-string-class Foo -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix CHECK-FRAGILE < %t %s
-
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fno-constant-cfstrings -fconstant-string-class Foo -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix CHECK-NONFRAGILE < %t %s
-
-// rdar: // 8564463
-// PR6056
-
- at interface Object {
-  id isa;
-}
- at end
-
- at interface Foo : Object{
-  char *cString;
-  unsigned int len;
-}
-- (char *)customString;
- at end
-
-id _FooClassReference[20];
-
- at implementation Foo 
-- (char *)customString { return cString ; }
- at end
-
-int main () {
-  Foo *string = @"bla";
-  return 0;
-}
-
-// CHECK-FRAGILE: @_FooClassReference = common global
-// CHECK-NONFRAGILE: @"OBJC_CLASS_$_Object" = external global
-// CHECK-NONFRAGILE: "OBJC_CLASS_$_Foo" = global

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-strings.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-strings.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/constant-strings.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix=CHECK-NEXT < %t %s
-
-// Check that we set alignment 1 on the string.
-//
-// CHECK-NEXT: @.str = {{.*}}constant [13 x i8] c"Hello World!\00", align 1
-
-// RUN: %clang_cc1 -fobjc-runtime=gcc -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix=CHECK-GNU < %t %s
-// CHECK-GNU: NXConstantString
-
-// RUN: %clang_cc1 -fobjc-runtime=gcc -fconstant-string-class NSConstantString -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix=CHECK-GNU-WITH-CLASS < %t %s
-// CHECK-GNU-WITH-CLASS: NSConstantString
-id a = @"Hello World!";
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/continuation-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/continuation-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/continuation-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface Object
-- (id)new;
- at end
-
- at interface ReadOnly : Object
-{
-  int _object;
-  int _Anotherobject;
-}
- at property(readonly) int object;
- at property(readonly) int Anotherobject;
- at end
-
- at interface ReadOnly ()
- at property(readwrite) int object;
- at property(readwrite, setter = myAnotherobjectSetter:) int Anotherobject;
- at end
-
- at implementation ReadOnly
- at synthesize object = _object;
- at synthesize  Anotherobject = _Anotherobject;
-- (void) myAnotherobjectSetter : (int)val {
-    _Anotherobject = val;
-}
- at end
-
-int main(int argc, char **argv) {
-    ReadOnly *test = [ReadOnly new];
-    test.object = 12345;
-    test.Anotherobject = 200;
-    return test.object - 12345 + test.Anotherobject - 200;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/deadcode_strip_used_var.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/deadcode_strip_used_var.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/deadcode_strip_used_var.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5
-// RUN: grep "llvm.used" %t | count 1
-// RUN: %clang_cc1 %s -emit-llvm -o %t -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5
-// RUN: grep "llvm.used" %t | count 1 
-
-
-__attribute__((used)) static int  XXXXXX  __attribute__ ((section ("__DATA,__Xinterpose"))) ;
-__attribute__((used)) static int  YYYY  __attribute__ ((section ("__DATA,__Xinterpose"))) ;
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-captured-self.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-captured-self.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-captured-self.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -fblocks -g -emit-llvm -triple x86_64-apple-darwin -o - %s | FileCheck %s
-//
-// Test that debug location is generated for a captured "self" inside
-// a block.
-//
-// This test is split into two parts, this one for the frontend, and
-// then llvm/test/DebugInfo/debug-info-block-captured-self.ll to
-// ensure that DW_AT_location is generated for the captured self.
- at class T;
- at interface S
- at end
- at interface Mode
--(int) count;
- at end
- at interface Context
- at end
- at interface ViewController
- at property (nonatomic, readwrite, strong) Context *context;
- at end
-typedef enum {
-    Unknown = 0,
-} State;
- at interface Main : ViewController
-{
-    T * t1;
-    T * t2;
-}
- at property(readwrite, nonatomic) State state;
- at end
- at implementation Main
-- (id) initWithContext:(Context *) context
-{
-    t1 = [self.context withBlock:^(id obj){
-        id *mode1;
-	t2 = [mode1 withBlock:^(id object){
-	    Mode *mode2 = object;
-	    if ([mode2 count] != 0) {
-	      self.state = 0;
-	    }
-	  }];
-      }];
-}
- at end
-// The important part of this test is that there is a dbg.value
-// intrinsic associated with the implicit .block_descriptor argument
-// of the block. We also test that this value gets alloca'd, so the
-// register llocator won't accidentally kill it.
-
-// outer block:
-// CHECK: define internal void {{.*}}_block_invoke{{.*}}
-
-// inner block:
-// CHECK: define internal void {{.*}}_block_invoke{{.*}}
-// CHECK:        %[[MEM1:.*]] = alloca i8*, align 8
-// CHECK-NEXT:   %[[MEM2:.*]] = alloca i8*, align 8
-// CHECK:        store i8* [[BLOCK_DESC:%.*]], i8** %[[MEM1]], align 8
-// CHECK:        %[[TMP0:.*]] = load i8** %[[MEM1]]
-// CHECK:        call void @llvm.dbg.value(metadata !{i8* %[[TMP0]]}, i64 0, metadata ![[BDMD:[0-9]+]])
-// CHECK:        call void @llvm.dbg.declare(metadata !{i8* [[BLOCK_DESC]]}, metadata ![[BDMD:[0-9]+]])
-// CHECK:        %[[TMP1:.*]] = bitcast
-// CHECK-NEXT:   store
-// CHECK:        call void @llvm.dbg.declare(metadata !{<{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>** {{.*}}}, metadata ![[SELF:.*]])
-// make sure we are still in the same function
-// CHECK: define {{.*}}__copy_helper_block_
-// Metadata
-// CHECK:        ![[MAIN:.*]] = {{.*}}!"Main"{{.*}}DW_TAG_structure_type{{.*}}line 23
-// CHECK:        ![[PMAIN:.*]] = {{.*}}![[MAIN]]} ; [ DW_TAG_pointer_type ]{{.*}}from Main
-// CHECK:        ![[BDMD]] = metadata {{.*}}.block_descriptor
-// CHECK:        ![[SELF]] = {{.*}}![[PMAIN]]{{.*}}[ DW_TAG_auto_variable ] [self] [line 40]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-helper.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-helper.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-helper.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -emit-llvm -fblocks -g -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 %s -o - | FileCheck %s
-extern void foo(void(^)(void));
-
-// CHECK: [ DW_TAG_subprogram ] {{.*}} [__destroy_helper_block_]
-
- at interface NSObject {
-  struct objc_object *isa;
-}
- at end
-
- at interface A:NSObject @end
- at implementation A
-- (void) helper {
- int master = 0;
- __block int m2 = 0;
- __block int dbTransaction = 0;
- int (^x)(void) = ^(void) { (void) self; 
-	(void) master; 
-	(void) dbTransaction; 
-	m2++;
-	return m2;
-
-	};
-  master = x();
-}
- at end
-
-void foo(void(^x)(void)) {}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-line.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-line.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-block-line.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,92 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -emit-llvm -fblocks -fobjc-default-synthesize-properties -fobjc-arc -O0 -g -triple x86_64-apple-darwin10 %s -o - | FileCheck %s
-
-// rdar://11562117
-typedef unsigned int NSUInteger;
-typedef long NSInteger;
-typedef signed char BOOL;
-
-#define nil ((void*) 0)
-#define YES             ((BOOL)1)
-#define NO              ((BOOL)0)
-
- at interface NSObject
-- (id)init;
- at end
-
- at interface NSError : NSObject
- at end
-
- at interface NSString : NSObject
- at end
-
- at interface NSString (NSStringExtensionMethods)
-- (void)enumerateLinesUsingBlock:(void (^)(NSString *line, BOOL *stop))block;
- at end
-
- at interface NSData : NSObject
- at end
-
- at interface NSData (ASBase64)
-- (NSString *)encodedString:(NSInteger)position;
-- (NSData *)compressedData;
- at end
-
-typedef void (^TDataCompletionBlock)(NSData *data, NSError *error);
- at interface TMap : NSObject
-- (NSString *)identifier;
-- (NSString *)name;
-+ (TMap *)mapForID:(NSString *)identifier;
-- (void)dataWithCompletionBlock:(TDataCompletionBlock)block;
- at end
-
-typedef enum : NSUInteger {
-    TOK                = 100,
-    TError = 125,
-} TResponseCode;
-
- at interface TConnection : NSObject
-- (void)sendString:(NSString *)string;
-- (void)sendFormat:(NSString *)format, ...;
-- (void)sendResponseCode:(TResponseCode)responseCode dataFollows:(BOOL)flag
-                         format:(NSString *)format, ...;
- at end
-
- at interface TServer : NSObject
- at end
-
- at implementation TServer
-- (void)serverConnection:(TConnection *)connection getCommand:(NSString *)str
-{
-    NSString    *mapID = nil;
-    TMap       *map = [TMap mapForID:mapID];
-// Make sure we do not map code generated for the block to the above line.
-// CHECK: define internal void @"__39-[TServer serverConnection:getCommand:]_block_invoke"
-// CHECK: call void @objc_storeStrong(i8** [[ZERO:%.*]], i8* [[ONE:%.*]]) [[NUW:#[0-9]+]]
-// CHECK: call void @objc_storeStrong(i8** [[TWO:%.*]], i8* [[THREE:%.*]]) [[NUW]]
-// CHECK: call {{.*}}@objc_msgSend{{.*}}, !dbg ![[LINE_ABOVE:[0-9]+]]
-// CHECK: getelementptr
-// CHECK-NOT: !dbg, ![[LINE_ABOVE]]
-// CHECK: bitcast %5** [[TMP:%.*]] to i8**
-// CHECK-NOT: !dbg, ![[LINE_ABOVE]]
-// CHECK: call void @objc_storeStrong(i8** [[VAL1:%.*]], i8* null) [[NUW]]
-// CHECK-NEXT: bitcast %4** [[TMP:%.*]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[VAL2:%.*]], i8* null) [[NUW]]
-// CHECK-NEXT: ret
-// CHECK: attributes [[NUW]] = { nounwind }
-    [map dataWithCompletionBlock:^(NSData *data, NSError *error) {
-        if (data) {
-            NSString    *encoded = [[data compressedData] encodedString:18];
-            [connection sendResponseCode:TOK dataFollows:YES
-                format:@"Sending \"%@\" (%@)", [map name], [map identifier]];
-            [encoded enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
-                [connection sendFormat:@"%@\r\n", line];
-            }];
-            [connection sendString:@".\r\n"];
-        } else {
-            [connection sendResponseCode:TError dataFollows:NO
-                format:@"Failed \"%@\" (%@)", [map name], [map identifier]];
-        }
-    }];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-blocks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -fblocks -g  -triple x86_64-apple-darwin10 -fobjc-dispatch-method=mixed  %s -o - | FileCheck %s
-
-// rdar://problem/9279956
-// Test that we generate the proper debug location for a captured self.
-// The second half of this patch is in llvm/tests/DebugInfo/debug-info-blocks.ll
-
-// CHECK: define {{.*}}_block_invoke
-// CHECK: %[[BLOCK:.*]] = bitcast i8* %.block_descriptor to <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>*, !dbg
-// CHECK-NEXT: store <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>* %[[BLOCK]], <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>** %[[ALLOCA:.*]], align
-// CHECK-NEXT: call void @llvm.dbg.declare(metadata !{<{ i8*, i32, i32, i8*, %struct.__block_descriptor*, %0* }>** %[[ALLOCA]]}, metadata ![[SELF:[0-9]+]])
-// CHECK-NEXT: call void @llvm.dbg.declare(metadata !{%1** %d}, metadata ![[D:[0-9]+]])
-// CHECK: ![[SELF]] = {{.*}} [ DW_TAG_auto_variable ] [self] [line 51]
-// CHECK: ![[D]] = {{.*}} [d] [line 49]
-
-typedef unsigned int NSUInteger;
-
- at protocol NSObject
- at end  
-   
- at interface NSObject <NSObject>
-- (id)init;
-+ (id)alloc;
- at end 
-
- at interface NSDictionary : NSObject 
-- (NSUInteger)count;
- at end    
-
- at interface NSMutableDictionary : NSDictionary  
- at end       
-
- at interface A : NSObject {
- at public
-    int ivar;
-}
- at end
-
-static void run(void (^block)(void))
-{
-    block();
-}
-
- at implementation A
-
-- (id)init
-{
-    if ((self = [super init])) {
-      run(^{
-          NSMutableDictionary *d = [[NSMutableDictionary alloc] init]; 
-          ivar = 42 + (int)[d count];
-        });
-    }
-    return self;
-}
-
- at end
-
-int main()
-{
-	A *a = [[A alloc] init];
-	return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -masm-verbose -S -g %s -o - | FileCheck %s
-
-// CHECK: AT_APPLE_objc_complete_type
-
- at interface I1
- at end
-
- at implementation I1 {
-int myi2;
-}
-int myi;
- at end
-
-void foo(I1 *iptr) {}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1  -masm-verbose -S -g %s -o - | FileCheck %s
-// CHECK: AT_APPLE_objc_complete_type
-
- at interface Foo {} @end
-
- at interface Foo () {
-    int *bar;
-}
- at end
-
- at implementation Foo
- at end
-
-void bar(Foo *fptr) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-class-extension3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -masm-verbose -S -g %s -o - | FileCheck %s
-
-// CHECK-NOT: AT_APPLE_objc_complete_type
-
- at interface Foo {} @end
-
- at interface Foo () {
-    int *bar;
-}
- at end
-
-void bar(Foo *fptr) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-crash-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-crash-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-crash-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -g -S %s -o -
-// REQUIRES: x86-64-registered-target
-
- at class Bar;
- at interface Foo
- at property (strong, nonatomic) Bar *window;
- at end
-
- at interface Foo__ : Foo
- at end
- at implementation Foo__
- at end
-
- at implementation Foo
- at synthesize window = _window;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-crash.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-crash.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-crash.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// REQUIRES: x86-registered-target
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fblocks -g -S %s -o -
-
-// rdar://7556129
- at implementation test
-- (void)wait {
-  ^{};
-}
- at end
-
-// PR4894
- at interface I0 {
-  I0 *_iv0;
-}
- at end
- at protocol P0 @end
-
- at interface I1 @end
- at implementation I1
-- (I0<P0> *) im0 {
-  // CHECK: @"\01-[I1 im0]"
-  // CHECK: llvm.dbg.func.start
-  return 0;
-}
- at end
-
-// PR4541
- at class NSString;
- at interface NSAttributedString 
-- (NSString *)string;
- at end 
- at interface NSMutableAttributedString : NSAttributedString 
- at end 
- at class NSImage;
- at implementation CYObjectsController 
-+ (void)initialize {
-}
-+ (NSAttributedString *)attributedStringWithString:(id)string image:(NSImage *)image  {
-  NSMutableAttributedString *attrStr;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-default-synth-ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-default-synth-ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-default-synth-ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-default-synthesize-properties -emit-llvm -g %s -o %t 
-// RUN: grep DW_TAG_member %t | count 5
-// rdar://8493239
-
- at class NSString;
-
- at interface InstanceVariablesEverywhereButTheInterface 
- at end
-
- at interface InstanceVariablesEverywhereButTheInterface()
-{
-  NSString *_someString;
-}
-
- at property(readonly) NSString *someString;
- at property(readonly) unsigned long someNumber;
- at end
-
- at implementation InstanceVariablesEverywhereButTheInterface
-{
-  unsigned long _someNumber;
-}
- at synthesize someString = _someString, someNumber = _someNumber;
- at end
-
- at interface AutomaticSynthesis
-{
-  int real_ivar;
-}
- at property(copy) NSString *someString;
- at property unsigned long someNumber;
- at end
-
- at implementation AutomaticSynthesis
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-fwddecl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-fwddecl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-fwddecl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -fverbose-asm -g -S -emit-llvm %s -o - | FileCheck %s
- at class ForwardObjcClass;
-ForwardObjcClass *ptr = 0;
-
-// CHECK: {{.*}} [ DW_TAG_structure_type ] [ForwardObjcClass] [line 2, size 0, align 0, offset 0] [fwd]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-getter-name.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-getter-name.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-getter-name.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10 -fexceptions -fobjc-exceptions -g %s -o - | FileCheck %s
-
-// CHECK: {{.*}}, metadata !"-[InstanceVariablesEverywhereButTheInterface someString]", {{.*}}} ; [ DW_TAG_subprogram ]
-
-//rdar: //8498026
-
- at class NSString;
-
- at interface InstanceVariablesEverywhereButTheInterface 
- at end
-
- at interface InstanceVariablesEverywhereButTheInterface()
-{
-  NSString *_someString;
-}
-
- at property(readonly) NSString *someString;
- at property(readonly) unsigned long someNumber;
- at end
-
- at implementation InstanceVariablesEverywhereButTheInterface
-{
-  unsigned long _someNumber;
-}
-
- at synthesize someString = _someString, someNumber = _someNumber;
-
-- init {
-  return self;
-}
- at end
-
- at interface AutomaticSynthesis 
-{
-  int real_ivar;
-}
- at property(copy) NSString *someString;
- at property unsigned long someNumber;
- at end
-
- at implementation AutomaticSynthesis
- at synthesize someString;
- at synthesize someNumber;
-- init
-{
-  return self;
-}
- at end
-
-int main()
-{
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-id-with-protocol.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-id-with-protocol.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-id-with-protocol.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-default-synthesize-properties -emit-llvm -g %s -o - | FileCheck %s
-__attribute((objc_root_class)) @interface NSObject {
-	id isa;
-}
-+ (id)alloc;
-- (id)init;
-- (id)retain;
- at end
-
-void NSLog(id, ...);
-
- at protocol MyProtocol
-
--(const char *)hello;
-
- at end
-
- at interface MyClass : NSObject {
-}
-
- at property (nonatomic, assign) id <MyProtocol> bad_carrier;
- at property (nonatomic, assign) id good_carrier;
-
- at end
-
- at implementation MyClass
- at end
-
-int main()
-{
-    @autoreleasepool
-    {
-        MyClass *my_class = [MyClass alloc];
-        NSLog(@"%p\n", my_class.bad_carrier);
-        NSLog(@"%p\n", my_class.good_carrier);
-    }
-}
-// Verify that the debug type for both variables is 'id'.
-// CHECK: metadata !{i32 {{[0-9]+}}, metadata !{{[0-9]+}}, metadata !"bad_carrier", metadata !{{[0-9]+}}, i32 {{[0-9]+}}, metadata ![[IDTYPE:[0-9]+]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [bad_carrier] [line 21]
-// CHECK: metadata !{i32 {{[0-9]+}}, metadata !{{[0-9]+}}, metadata !"good_carrier", metadata !{{[0-9]+}}, i32 {{[0-9]+}}, metadata !{{.*}}[[IDTYPE]], i32 0, i32 0} ; [ DW_TAG_arg_variable ] [good_carrier] [line 22]
-// CHECK !{{.*}}[[IDTYPE]] = metadata !{i32 {{[0-9]+}}, null, metadata !"id", metadata !{{[0-9]+}}, i32 !{{[0-9]+}}, i64 0, i64 0, i64 0, i32 0, metadata !{{[0-9]+}}} ; [ DW_TAG_typedef ] [id]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-impl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-impl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-impl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -g -S -emit-llvm %s -o - | FileCheck %s
-// CHECK: {{.*}} [ DW_TAG_structure_type ] [Circle] [line 11,
- at interface NSObject {
-  struct objc_object *isa;
-}
- at end
-
- at interface Shape : NSObject
-
- at end
- at interface Circle : Shape
-
- at end
- at implementation Circle
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -g %s -o - | FileCheck %s
-
-// Make sure we generate debug symbols for ivars added by a class extension.
-
- at interface I
-{
-    @public int a;
-}
- at end
-
-void foo(I* pi) {
-    // poking into pi for primary class ivars.
-    int _a = pi->a;
-}
-
- at interface I()
-{
-    @public int b;
-}
- at end
-
-void gorf (I* pg) {
-    // poking into pg for ivars for class extension
-    int _b = pg->b;
-}
-
-// CHECK: {{.*}} [ DW_TAG_structure_type ] [I]
-// Check for "a".
-// CHECK: {{.*}} [ DW_TAG_member ] [a] [line 7, size 32, align 32, offset 0] [from int]
-// Make sure we don't output the same type twice.
-// CHECK-NOT: {{.*}} [ DW_TAG_structure_type ] [I]
-// Check for "b".
-// CHECK: {{.*}} [ DW_TAG_member ] [b] [line 18, size 32, align 32, offset 0] [from int]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-indirect.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-indirect.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-indirect.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -g %s -o - | FileCheck %s
-
-// Make sure we generate debug symbols for an indirectly referenced
-// extension to an interface.
-
- at interface I
-{
-    @public int a;
-}
- at end
-
-void foo(I* pi) {
-    int _a = pi->a;
-}
-
-// another layer of indirection
-struct S
-{
-    I* i;
-};
-
- at interface I()
-{
-    @public int b;
-}
- at end
-
-void gorf (struct S* s) {
-    int _b = s->i->b;
-}
-
-// CHECK: {{.*}} [ DW_TAG_member ] [b] [line 24, size 32, align 32, offset 0] [from int]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-private.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-private.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars-private.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -g %s -o - | FileCheck %s
-
-// Debug symbols for private ivars. This test ensures that we are
-// generating debug info for ivars added by the implementation.
-__attribute((objc_root_class)) @interface NSObject {
-  id isa;
-}
- at end
-
- at protocol Protocol
- at end
-
- at interface Delegate : NSObject<Protocol> {
-  @protected int foo;
-}
- at end
-
- at interface Delegate(NSObject)
-- (void)f;
- at end
-
- at implementation Delegate(NSObject)
-- (void)f { return; }
- at end
-
- at implementation Delegate {
-  int bar;
-}
-
-- (void)g:(NSObject*) anObject {
-  bar = foo;
-}
- at end
-
-// CHECK: {{.*}} [ DW_TAG_member ] [foo] [line 14, size 32, align 32, offset 0] [protected] [from int]
-// CHECK: {{.*}} [ DW_TAG_member ] [bar] [line 27, size 32, align 32, offset 0] [private] [from int]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-ivars.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -g %s -o - | FileCheck %s
-
-__attribute((objc_root_class)) @interface NSObject {
-    id isa;
-}
- at end
-
- at interface BaseClass : NSObject
-{
-    int i;
-    unsigned flag_1 : 9;
-    unsigned flag_2 : 9;
-    unsigned : 1;
-    unsigned flag_3 : 9;
-}
- at end
-
- at implementation BaseClass
- at end
-
-// CHECK: {{.*}} [ DW_TAG_member ] [i] [line 10, size 32, align 32, offset 0] [protected] [from int]
-// CHECK: {{.*}} [ DW_TAG_member ] [flag_1] [line 11, size 9, align 32, offset 0] [protected] [from unsigned int]
-// CHECK: {{.*}} [ DW_TAG_member ] [flag_2] [line 12, size 9, align 32, offset 1] [protected] [from unsigned int]
-// CHECK: {{.*}} [ DW_TAG_member ] [flag_3] [line 14, size 9, align 32, offset 3] [protected] [from unsigned int]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-linkagename.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-linkagename.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-linkagename.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1  -g -S -o %t %s
-// RUN: not grep "001-[F bar" %t
-// Linkage name should not use 001 prefix in debug info.
-
- at interface F 
--(int) bar;
- at end
-
- at implementation F
--(int) bar {
-	return 42;
-}
- at end
-
-extern int f(F *fn) {
-	return [fn bar];
-}
-	

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -masm-verbose -S -g %s -o - | FileCheck %s
-
-// CHECK: AT_APPLE_property_name
-// CHECK: AT_APPLE_property_attribute
-// CHECK: AT_APPLE_property
- at interface I1 {
-int p1;
-}
- at property int p1;
- at end
-
- at implementation I1
- at synthesize p1;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -masm-verbose -S -g %s -o - | FileCheck %s
-
-// CHECK: AT_APPLE_property_name
- at interface C {
-  int _base;
-}
- at property int base;
- at end
-
- at implementation C
- at synthesize base = _base;
- at end
-
-void foo(C *cptr) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -S -emit-llvm -g %s -o - | FileCheck %s
-
-// CHECK: metadata !"p1", metadata !{{.*}}, i32 5, metadata !"", metadata !"", i32 2316, metadata !{{.*}}} ; [ DW_TAG_APPLE_property ]
- at interface I1
- at property int p1;
- at end
-
- at implementation I1
- at synthesize p1;
- at end
-
-void foo(I1 *iptr) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fobjc-default-synthesize-properties -masm-verbose -S -g %s -o - | FileCheck %s
-
-// CHECK: AT_APPLE_property_name
-// CHECK-NOT: AT_APPLE_property_getter
-// CHECK-NOT: AT_APPLE_property_setter
-// CHECK: AT_APPLE_property_attribute
-// CHECK: AT_APPLE_property
-
-
- at interface I1
- at property int p1;
- at end
-
- at implementation I1
- at end
-
-void foo(I1 *ptr) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-property5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fobjc-default-synthesize-properties -masm-verbose -S -g %s -o - | FileCheck %s
-
-// CHECK: AT_APPLE_property_name
-// CHECK: AT_APPLE_property_getter
-// CHECK: AT_APPLE_property_setter
-// CHECK: AT_APPLE_property_attribute
-// CHECK: AT_APPLE_property
-
- at interface BaseClass2 
-{
-	int _baseInt;
-}
-- (int) myGetBaseInt;
-- (void) mySetBaseInt: (int) in_int;
- at property(getter=myGetBaseInt,setter=mySetBaseInt:) int baseInt;
- at end
-
- at implementation BaseClass2
-
-- (int) myGetBaseInt
-{
-        return _baseInt;
-}
-
-- (void) mySetBaseInt: (int) in_int
-{
-    _baseInt = 2 * in_int;
-}
- at end
-
-
-void foo(BaseClass2 *ptr) {}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-pubtypes.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-pubtypes.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-pubtypes.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -g -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: {{.*}} [ DW_TAG_structure_type ] [H] [line 6,
-
- at interface H
--(void) foo;
- at end
-
- at implementation H
--(void) foo {
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-selector.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-selector.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-selector.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm  -g %s -o - | FileCheck %s
-// Radar 8494540
-
-// CHECK: objc_selector
- at interface MyClass {
-}
-- (id)init;
- at end
-
- at implementation MyClass
-- (id) init
-{
-  return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-self.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-self.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-self.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g %s -o - | FileCheck %s
-// self and _cmd are marked as DW_AT_artificial. 
-// myarg is not marked as DW_AT_artificial.
-
- at interface MyClass {
-}
-- (id)init:(int) myarg;
- at end
-
- at implementation MyClass
-- (id) init:(int) myarg
-{
-    return self;
-}
- at end
-
-// It's weird that the first two parameters are recorded as being in a
-// different, ("<unknown>") file compared to the third parameter which is 'in'
-// the actual source file. (see the metadata node after the arg name in each
-// line)
-// CHECK: metadata !{i32 {{.*}}, metadata ![[CTOR:.*]], metadata !"self", metadata ![[UNKFILE:.*]], i32 16777227, metadata !{{.*}}, i32 1088, i32 0} ; [ DW_TAG_arg_variable ] [self] [line 11]
-// CHECK: metadata !{i32 {{.*}}, metadata ![[CTOR]], metadata !"_cmd", metadata ![[UNKFILE]], i32 33554443, metadata !{{.*}}, i32 64, i32 0} ; [ DW_TAG_arg_variable ] [_cmd] [line 11]
-// CHECK: metadata !{i32 {{.*}}, metadata ![[CTOR]], metadata !"myarg", metadata !{{.*}}, i32 50331659, metadata !{{.*}}, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [myarg] [line 11]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-static-var.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-static-var.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-static-var.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm -o - %s | FileCheck %s
-// Radar 8801045
-// Do not emit AT_MIPS_linkage_name for static variable i
-
-// CHECK: metadata !"i", metadata !"i", metadata !""
-
- at interface A {
-}
--(void) foo;
- at end
-
- at implementation A 
--(void)foo {
-  static int i = 1;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-synthesis.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-synthesis.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-info-synthesis.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -g -w -triple x86_64-apple-darwin10 %s -o - | FileCheck %s
-# 1 "foo.m" 1
-# 1 "foo.m" 2
-# 1 "./foo.h" 1
- at interface NSObject {
-  struct objc_object *isa;
-}
- at end
- at class NSDictionary;
-
- at interface Foo : NSObject {}
- at property (strong, nonatomic) NSDictionary *dict;
- at end
-# 2 "foo.m" 2
-
-
-
-
- at implementation Foo
- at synthesize dict = _dict;
-
-- (void) bork {
-}
- at end
-
-int main(int argc, char *argv[]) {
-  @autoreleasepool {
-    Foo *f = [Foo new];
-    [f bork];
-  }
-}
-
-// CHECK: ![[FILE:.*]] = {{.*}}[ DW_TAG_file_type ] [{{.*}}/foo.h]
-// CHECK: metadata ![[FILE]], {{.*}} ; [ DW_TAG_subprogram ] [line 8] [local] [def] [-[Foo dict]]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-property-synth.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-property-synth.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/debug-property-synth.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -masm-verbose -S -g %s -o - | FileCheck %s
-// Radar 9468526
- at interface I {
-  int _p1;
-}
- at property int p1;
- at end
-
- at implementation I
- at synthesize p1 = _p1;
- at end
-
-int main() {
-  I *myi;
-  myi.p1 = 2;
-  return 0;
-}
-
-// FIXME: Make this test ir files.
-// CHECK:       .loc    2 6 0

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/default-property-synthesis.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/default-property-synthesis.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/default-property-synthesis.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
-// rdar://7923851.
-
-// Superclass declares property. Subclass redeclares the same property.
-// Do not @synthesize-by-default in the subclass. P1
-// Superclass declares a property. Subclass declares a different property with the same name
-// (such as different type or attributes). Do not @synthesize-by-default in the subclass. P2
-// Superclass conforms to a protocol that declares a property. Subclass redeclares the 
-// same property.  Do not @synthesize-by-default in the subclass. P3
-// Superclass conforms to a protocol that declares a property. Subclass conforms to the 
-// same protocol or a derived protocol. Do not @synthesize-by-default in the subclass. P4
-
-
- at protocol PROTO
-  @property int P3;
-  @property int P4;
- at end
-
- at protocol PROTO1 <PROTO> 
-  @property int IMP1;
- at end
-
- at interface Super <PROTO>
-  @property int P1;
-  @property (copy) id P2;
- at end
-
- at interface Sub : Super <PROTO1>
-  @property int P1;
-  @property (nonatomic, retain) id P2; // expected-warning {{property 'P2' 'copy' attribute does not match the property inherited from 'Super'}} \
-				       // expected-warning {{property 'P2' 'atomic' attribute does not match the property inherited from 'Super'}}
-  @property int P3;
-  @property int IMP2;
- at end
-
- at implementation Sub 
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,264 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
-int printf(const char *, ...);
-
- at interface Root
--(id) alloc;
--(id) init;
- at end
-
-// Property above methods...
-
- at interface Top0 : Root
- at property(getter=_getX,setter=_setX:) int x;
- at end
-
- at interface Bot0 : Top0
--(int) x;
--(void) setX: (int) arg;
- at end
-
- at implementation Top0
--(int) _getX {
-  printf("-[ Top0 _getX ]\n");
-  return 0;
-}
--(void) _setX: (int) arg {
-  printf("-[ Top0 _setX: %d ]\n", arg);
-}
- at end
-
- at implementation Bot0
--(int) x {
-  printf("-[ Bot0 _getX ]\n");
-  return 0;
-}
--(void) setX: (int) arg {
-  printf("-[ Bot0 _setX: %d ]\n", arg);
-}
- at end
-
-// Methods above property...
-
- at interface Top1 : Root
--(int) x;
--(void) setX: (int) arg;
- at end
-
- at interface Bot1 : Top1
- at property(getter=_getX,setter=_setX:) int x;
- at end
-
- at implementation Top1
--(int) x {
-  printf("-[ Top1 x ]\n");
-  return 0;
-}
--(void) setX: (int) arg {
-  printf("-[ Top1 setX: %d ]\n", arg);
-}
- at end
-
- at implementation Bot1
--(int) _getX {
-  printf("-[ Bot1 _getX ]\n");
-  return 0;
-}
--(void) _setX: (int) arg {
-  printf("-[ Bot1 _setX: %d ]\n", arg);
-}
- at end
-
-// Mixed setter & getter (variant 1)
-
- at interface Top2 : Root
--(int) x;
--(void) _setX: (int) arg;
- at end
-
- at interface Bot2 : Top2
- at property(getter=_getX,setter=_setX:) int x;
- at end
-
- at implementation Top2
--(int) x {
-  printf("-[ Top2 x ]\n");
-  return 0;
-}
--(void) _setX: (int) arg {
-  printf("-[ Top2 _setX: %d ]\n", arg);
-}
- at end
-
- at implementation Bot2
--(int) _getX {
-  printf("-[ Bot2 _getX ]\n");
-  return 0;
-}
--(void) setX: (int) arg {
-  printf("-[ Bot2 setX: %d ]\n", arg);
-}
- at end
-
-// Mixed setter & getter (variant 2)
-
- at interface Top3 : Root
--(int) _getX;
--(void) setX: (int) arg;
- at end
-
- at interface Bot3 : Top3
- at property(getter=_getX,setter=_setX:) int x;
- at end
-
- at implementation Top3
--(int) _getX {
-  printf("-[ Top3 _getX ]\n");
-  return 0;
-}
--(void) setX: (int) arg {
-  printf("-[ Top3 setX: %d ]\n", arg);
-}
- at end
-
- at implementation Bot3
--(int) x {
-  printf("-[ Bot3 x ]\n");
-  return 0;
-}
--(void) _setX: (int) arg {
-  printf("-[ Bot3 _setX: %d ]\n", arg);
-}
- at end
-
-// Mixed setter & getter (variant 3)
-
- at interface Top4 : Root
- at property(getter=_getX,setter=_setX:) int x;
- at end
-
- at interface Bot4 : Top4
--(int) _getX;
--(void) setX: (int) arg;
- at end
-
- at implementation Top4
--(int) x {
-  printf("-[ Top4 x ]\n");
-  return 0;
-}
--(void) _setX: (int) arg {
-  printf("-[ Top4 _setX: %d ]\n", arg);
-}
- at end
-
- at implementation Bot4
--(int) _getX {
-  printf("-[ Bot4 _getX ]\n");
-  return 0;
-}
--(void) setX: (int) arg {
-  printf("-[ Bot4 setX: %d ]\n", arg);
-}
- at end
-
-// Mixed setter & getter (variant 4)
-
- at interface Top5 : Root
- at property(getter=_getX,setter=_setX:) int x;
- at end
-
- at interface Bot5 : Top5
--(int) x;
--(void) _setX: (int) arg;
- at end
-
- at implementation Top5
--(int) _getX {
-  printf("-[ Top5 _getX ]\n");
-  return 0;
-}
--(void) setX: (int) arg {
-  printf("-[ Top5 setX: %d ]\n", arg);
-}
- at end
-
- at implementation Bot5
--(int) x {
-  printf("-[ Bot5 x ]\n");
-  return 0;
-}
--(void) _setX: (int) arg {
-  printf("-[ Bot5 _setX: %d ]\n", arg);
-}
- at end
-
-// Mixed level calls (variant 1)
-
- at interface Top6 : Root
--(int) x;
- at end
-
- at interface Bot6 : Top6
--(void) setX: (int) arg;
- at end
-
- at implementation Top6
--(int) x {
-  printf("-[ Top6 x ]\n");
-  return 0;
-}
- at end
-
- at implementation Bot6
--(void) setX: (int) arg {
-  printf("-[ Bot5 setX: %d ]\n", arg);
-}
- at end
-
-// Mixed level calls (variant 1)
-
- at interface Top7 : Root
--(void) setX: (int) arg;
- at end
-
- at interface Bot7 : Top7
--(int) x;
- at end
-
- at implementation Top7
--(void) setX: (int) arg {
-  printf("-[ Top7 setX: %d ]\n", arg);
-}
- at end
-
- at implementation Bot7
--(int) x {
-  printf("-[ Bot7 x ]\n");
-  return 0;
-}
- at end
-
-//
-
-// FIXME: Two more (thats it?) interesting cases. Method access on
-// getter w/o setter and method access on setter w/o getter.
-
-int main() {
-#define test(N) { \
-  Bot##N *ob = [[Bot##N alloc] init]; \
-  int x = ob.x; \
-  ob.x = 10; }
-
-  test(0);
-  test(1);
-  test(2);
-  test(3);
-  test(4);
-  test(5);
-  //  test(6);
-  //  test(7);
-
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// rdar: // 8062778
-
- at interface NSDictionary @end
-
- at interface NSMutableDictionary : NSDictionary
- at end
-
- at interface MutableMyClass 
-- (NSMutableDictionary *)myDict;
-- (void)setMyDict:(NSDictionary *)myDict;
-
-- (NSMutableDictionary *)myLang;
-- (void)setMyLang:(NSDictionary *)myLang;
- at end
-
- at interface AnotherClass @end
-
- at implementation AnotherClass
-- (void)foo
-{
-    MutableMyClass * myObject;
-    NSDictionary * newDict;
-    myObject.myDict = newDict; 
-    myObject.myLang = newDict;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/dot-syntax.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
-int printf(const char *, ...);
-
- at interface Root
--(id) alloc;
--(id) init;
- at end
-
-typedef struct {
-  float x, y, z[2];
-} S;
-
- at interface A : Root {
-  int myX;
-  //  __complex myY;
-  S myZ;
-}
-
- at property int x;
-//@property __complex int y;
- at property S z;
- at end
-
- at implementation A
--(int) x {
-  printf("-[A x] = %d\n", myX);
-  return myX;
-}
--(void) setX: (int) arg {
-  myX = arg;
-  printf("-[A setX: %d]\n", myX);
-}
-
-// FIXME: Add back
-#if 0
--(__complex int) y {
-  printf("-[A y] = (%d, %d)\n", __real myY, __imag myY);
-  return myY;
-}
--(void) setY: (__complex int) arg {
-  myY = arg;
-  printf("-[A setY: (%d, %d)]\n", __real myY, __imag myY);
-}
-#endif
-
--(S) z {
-  printf("-[A z] = { %f, %f, { %f, %f } }\n", 
-         myZ.x, myZ.y, myZ.z[0], myZ.z[1]);
-  return myZ;
-}
--(void) setZ: (S) arg {
-  myZ = arg;
-  printf("-[A setZ: { %f, %f, { %f, %f } } ]\n", 
-         myZ.x, myZ.y, myZ.z[0], myZ.z[1]);
-}
-
- at end
-
-int main() {
-#define SWAP(T,a,b) { T a_tmp = a; a = b; b = a_tmp; }
-  A *a = [[A alloc] init];
-  A *b = [[A alloc] init];
-  int a0 = 23;
-  //  __complex a1 = 25 + 10i;
-  S a2 =  { 246, 458, {275, 12} };
-  int b0 = 42673;
-  //  __complex b1 = 15 + 13i;
-  S b2 =  { 26, 2, {367, 13} };
-
-  a.x = a0;
-  //  a.y = a1;
-  a.z = a2;
-
-  a.x += a0;
-  //  a.y += a1;
-  // Yay, no compound assign of structures. A GCC extension in the
-  // works, perhaps?
-
-  b.x = b0;
-  //  b.y = b1;
-  b.z = b2;
-
-  int x0 = (b.x = b0);
-  printf("(b.x = b0): %d\n", x0);
-
-  //  int x1 = __real (b.y = b1);
-  //  printf("__real (b.y = b1) = %d\n", x1);
-
-  float x2 = (b.z = b2).x;
-  printf("(b.z = b2).x: %f\n", x2);
-
-  SWAP(int, a.x, b.x);
-  //  SWAP(__complex int, a.y, b.y);
-  SWAP(S, a.z, b.z);
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-cstyle-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-cstyle-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-cstyle-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5  -emit-llvm -o - %s | FileCheck -check-prefix LP64 %s
-// rdar: // 7445205
-
- at interface Foo 
-- (id)test:(id)one, id two;
- at end
-
- at implementation Foo
-- (id)test:(id )one, id two {return two; } @end
-
-// CHECK-LP64: internal global [11 x i8] c"@24 at 0:8 at 16

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-apple-darwin9 -emit-llvm -o %t %s
-// RUN: grep -e "@\\\22<X>\\\22" %t
-// RUN: grep -e "@\\\22<X><Y>\\\22" %t
-// RUN: grep -e "@\\\22<X><Y><Z>\\\22" %t
-// RUN: grep -e "@\\\22Foo<X><Y><Z>\\\22" %t
-// RUN: grep -e "{Intf=@@@@#}" %t  
-
- at protocol X, Y, Z;
- at class Foo;
-
- at protocol Proto
- at end
-
- at interface Intf <Proto>
-{
-id <X> IVAR_x;
-id <X, Y> IVAR_xy;
-id <X, Y, Z> IVAR_xyz;
-Foo <X, Y, Z> *IVAR_Fooxyz;
-Class <X> IVAR_Classx;
-}
- at end
-
- at implementation Intf 
- at end
-
-int main()
-{
-	const char * en = @encode(Intf);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-apple-darwin9 -emit-llvm -o - %s | FileCheck %s
-
-int main() {
-  int n;
-  
-  const char * inc = @encode(int[]);
-// CHECK: ^i
-// CHECK-NOT: ^i
-  const char * vla = @encode(int[n]);
-// CHECK: [0i]
-// CHECK-NOT: [0i]
-}
-
-// PR3648
-int a[sizeof(@encode(int)) == 2 ? 1 : -1]; // Type is char[2]
-const char *B = @encode(int);
-char (*c)[2] = &@encode(int); // @encode is an lvalue
-
-char d[] = @encode(int);   // infer size.
-char e[1] = @encode(int);  // truncate
-char f[2] = @encode(int);  // fits
-char g[3] = @encode(int);  // zero fill
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s -O2 | grep "ret i32 1"
-typedef long Integer;
-typedef enum : Integer { Red, Green, Blue} Color;
-typedef enum { Cyan, Magenta, Yellow, Key } PrintColor;
-
-int a() {
-  return @encode(int) == @encode(int) &&
-    @encode(Color) == @encode(long) &&
-    @encode(PrintColor) == @encode(int);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin9 -emit-llvm -o %t %s
-
-// RUN: grep ji.00 %t | count 1
-char *a = @encode(_Complex int);
-
-// RUN: grep jf.00 %t | count 1
-char *b = @encode(_Complex float);
-
-// RUN: grep jd.00 %t | count 1
-char *c = @encode(_Complex double);
-
-// RUN: grep "t.00" %t | count 1
-char *e = @encode(__int128_t);
-
-// RUN: grep "T.00" %t | count 1
-char *f = @encode(__uint128_t);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-6.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-6.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test-6.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o %t %s
-// RUN: FileCheck < %t %s
-// rdar://11777609
-
-typedef struct {} Z;
-
- at interface A
--(void)bar:(Z)a;
--(void)foo:(Z)a : (char*)b : (Z)c : (double) d;
- at end
-
- at implementation A
--(void)bar:(Z)a {}
--(void)foo:(Z)a: (char*)b : (Z)c : (double) d {}
- at end
-
-// CHECK: internal global [14 x i8] c"v16 at 0:8{?=}16
-// CHECK: internal global [26 x i8] c"v32 at 0:8{?=}16*16{?=}24d24
-
-
-// rdar://13190095
- at interface NSObject @end
-
- at class BABugExample;
-typedef BABugExample BABugExampleRedefinition;
-
- at interface BABugExample : NSObject {
-    BABugExampleRedefinition *_property; // .asciz   "^{BABugExample=^{BABugExample}}"
-}
- at property (copy) BABugExampleRedefinition *property;
- at end
-
- at implementation BABugExample
- at synthesize property = _property;
- at end
-
-// CHECK: internal global [24 x i8] c"^{BABugExample=@}16

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/encode-test.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,171 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-// RUN: FileCheck < %t %s
-//
-// CHECK: @"\01L_OBJC_METH_VAR_TYPE_34" = internal global [16 x i8] c"v12 at 0:4[3[4@]]8\00"
-
- at class Int1;
-
-struct Innermost {
-  unsigned char a, b;
-};
-
- at interface Int1 {
-  signed char a, b;
-  struct Innermost *innermost;
-}
- at end
-
- at implementation Int1
- at end
-
- at interface Base
-{
-    struct objc_class *isa;
-    int full;
-    int full2: 32;
-    int _refs: 8;
-    int field2: 3;
-    unsigned f3: 8;
-    short cc;
-    unsigned g: 16;
-    int r2: 8;
-    int r3: 8;
-    int r4: 2;
-    int r5: 8;
-    char c;
-}
- at end
-
- at interface Derived: Base
-{
-    char d;
-    int _field3: 6;
-}
- at end
-
- at implementation Base
- at end
-
- at implementation Derived
- at end
-
- at interface B1 
-{
-    struct objc_class *isa;
-    Int1 *sBase;
-    char c;
-}
- at end
-
- at implementation B1
- at end
-
- at interface Test 
-{
-	int ivar;
-         __attribute__((objc_gc(weak))) SEL selector;
-}
--(void) test3: (Test*  [3] [4])b ; 
-- (SEL**) meth : (SEL) arg : (SEL*****) arg1 : (SEL*)arg2 : (SEL**) arg3;
- at end
-
- at implementation Test
--(void) test3: (Test* [3] [4])b {}
-- (SEL**) meth : (SEL) arg : (SEL*****) arg1 : (SEL*)arg2 : (SEL**) arg3 {}
- at end
-
-struct S { int iS; };
-
- at interface Object
-{
- Class isa;
-}
- at end
-typedef Object MyObj;
-
-int main()
-{
-	const char *en = @encode(Derived);
-	const char *eb = @encode(B1);
-        const char *es = @encode(const struct S *);
-        const char *ec = @encode(const struct S);
-        const char *ee = @encode(MyObj *const);
-}
-
-// CHECK: @g0 = constant [15 x i8] c"{Innermost=CC}\00"
-const char g0[] = @encode(struct Innermost);
-
-// CHECK: @g1 = constant [38 x i8] c"{Derived=#ib32b8b3b8sb16b8b8b2b8ccb6}\00"
-const char g1[] = @encode(Derived);
-
-// CHECK: @g2 = constant [9 x i8] c"{B1=#@c}\00"
-const char g2[] = @encode(B1);
-
-// CHECK: @g3 = constant [8 x i8] c"r^{S=i}\00"
-const char g3[] = @encode(const struct S *);
-
-// CHECK: @g4 = constant [6 x i8] c"{S=i}\00"
-const char g4[] = @encode(const struct S);
-
-// CHECK: @g5 = constant [12 x i8] c"^{Object=#}\00"
-const char g5[] = @encode(MyObj * const);
-
-////
-
-enum Enum1X { one, two, three, four };
-
- at interface Base1X {
-  unsigned a: 2;
-  int b: 3;
-  enum Enum1X c: 4;
-  unsigned d: 5;
-} 
- at end
-
- at interface Derived1X: Base1X {
-  signed e: 5;
-  int f: 4;
-  enum Enum1X g: 3;
-} 
- at end
-
- at implementation Base1X @end
-
- at implementation Derived1X @end
-
-// CHECK: @g6 = constant [18 x i8] c"{Base1X=b2b3b4b5}\00"
-const char g6[] = @encode(Base1X);
-
-// CHECK: @g7 = constant [27 x i8] c"{Derived1X=b2b3b4b5b5b4b3}\00"
-const char g7[] = @encode(Derived1X);
-
-// CHECK: @g8 = constant [7 x i8] c"{s8=D}\00"
-struct s8 {
-  long double x;
-};
-const char g8[] = @encode(struct s8);
-
-// CHECK: @g9 = constant [11 x i8] c"{S9=i[0i]}\00"
-struct S9 {
-  int x;
-  int flex[];
-};
-const char g9[] = @encode(struct S9);
-
-struct f
-{
-  int i;
-  struct{} g[4];
-  int tt;
-};
-
-// CHECK: @g10 = constant [14 x i8] c"{f=i[0{?=}]i}\00"
-const char g10[] = @encode(struct f);
-
-// rdar://9622422
-// CHECK: @g11 = constant [2 x i8] c"v\00"
-const char g11[] = @encode(void);
-
-// PR14628
-// CHECK: @g12 = constant [3 x i8] c"Ai\00"
-const char g12[] = @encode(_Atomic(int));

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/exceptions-nonfragile.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/exceptions-nonfragile.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/exceptions-nonfragile.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -fobjc-exceptions -o - %s | FileCheck %s
-
-// rdar://problem/8535238
-// CHECK: declare void @objc_exception_rethrow()
-
-void protos() {
-  extern void foo();
-  @try {
-    foo();
-  } @catch (id e) {
-    @throw;
-  }
-}
-
-void throwing() {
-  @throw(@"error!");
-}
-
-// rdar://problem/9431547
-void die(void) __attribute__((nothrow, noreturn));
-void test2(void) {
-  @try {
-    die();
-  } @finally {
-    extern void test2_helper(void);
-    test2_helper();
-  }
-
-  // CHECK: define void @test2()
-  // CHECK-NOT: call void @test2_helper()
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/exceptions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/exceptions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/exceptions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,183 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fobjc-exceptions -O2 -o - %s | FileCheck %s
-//
-// <rdar://problem/7471679> [irgen] [eh] Exception code built with clang (x86_64) crashes
-
-// Just check that we don't emit any dead blocks.
- at interface NSArray @end
-void f0() {
-  @try {
-    @try {
-      @throw @"a";
-    } @catch(NSArray *e) {
-    }
-  } @catch (id e) {
-  }
-}
-
-// CHECK: define void @f1()
-void f1() {
-  extern void foo(void);
-
-  while (1) {
-    // CHECK:      call void @objc_exception_try_enter
-    // CHECK-NEXT: getelementptr
-    // CHECK-NEXT: call i32 @_setjmp(
-    // CHECK-NEXT: icmp
-    // CHECK-NEXT: br i1
-    @try {
-    // CHECK:      call void asm sideeffect "", "*m"
-    // CHECK-NEXT: call void @foo()
-      foo();
-    // CHECK:      call void @objc_exception_try_exit
-
-    // CHECK:      call void asm sideeffect "", "=*m"
-    } @finally {
-      break;
-    }
-  }
-}
-
-// Test that modifications to local variables are respected under
-// optimization.  rdar://problem/8160285
-
-// CHECK: define i32 @f2()
-int f2() {
-  extern void foo(void);
-
-  // CHECK:        [[X:%.*]] = alloca i32
-  // CHECK:        store i32 5, i32* [[X]]
-  int x = 0;
-  x += 5;
-
-  // CHECK:        [[SETJMP:%.*]] = call i32 @_setjmp
-  // CHECK-NEXT:   [[CAUGHT:%.*]] = icmp eq i32 [[SETJMP]], 0
-  // CHECK-NEXT:   br i1 [[CAUGHT]]
-  @try {
-    // CHECK: store i32 6, i32* [[X]]
-    x++;
-    // CHECK-NEXT: call void asm sideeffect "", "*m,*m"(i32* [[X]]
-    // CHECK-NEXT: call void @foo()
-    // CHECK-NEXT: call void @objc_exception_try_exit
-    // CHECK-NEXT: [[T:%.*]] = load i32* [[X]]
-    foo();
-  } @catch (id) {
-    // Landing pad.  Note that we elide the re-enter.
-    // CHECK:      call void asm sideeffect "", "=*m,=*m"(i32* [[X]]
-    // CHECK-NEXT: call i8* @objc_exception_extract
-    // CHECK-NEXT: [[T1:%.*]] = load i32* [[X]]
-    // CHECK-NEXT: [[T2:%.*]] = add nsw i32 [[T1]], -1
-
-    // This store is dead.
-    // CHECK-NEXT: store i32 [[T2]], i32* [[X]]
-    x--;
-  }
-
-  return x;
-}
-
-// Test that the cleanup destination is saved when entering a finally
-// block.  rdar://problem/8293901
-// CHECK: define void @f3()
-void f3() {
-  extern void f3_helper(int, int*);
-
-  // CHECK:      [[X:%.*]] = alloca i32
-  // CHECK:      store i32 0, i32* [[X]]
-  int x = 0;
-
-  // CHECK:      call void @objc_exception_try_enter(
-  // CHECK:      call i32 @_setjmp
-  // CHECK-NEXT: icmp eq
-  // CHECK-NEXT: br i1
-
-  @try {
-    // CHECK:    call void @f3_helper(i32 0, i32* [[X]])
-    // CHECK:    call void @objc_exception_try_exit(
-    f3_helper(0, &x);
-  } @finally {
-    // CHECK:    [[DEST1:%.*]] = phi i32 [ 0, {{%.*}} ], [ 3, {{%.*}} ]
-    // CHECK:    call void @objc_exception_try_enter
-    // CHECK:    call i32 @_setjmp
-    @try {
-      // CHECK:  call void @f3_helper(i32 1, i32* [[X]])
-      // CHECK:  call void @objc_exception_try_exit(
-      f3_helper(1, &x);
-    } @finally {
-      // CHECK:  [[DEST2:%.*]] = phi i32 [ 0, {{%.*}} ], [ 5, {{%.*}} ]
-      // CHECK:  call void @f3_helper(i32 2, i32* [[X]])
-      f3_helper(2, &x);
-
-      // This loop is large enough to dissuade the optimizer from just
-      // duplicating the finally block.
-      while (x) f3_helper(3, &x);
-
-      // This is a switch or maybe some chained branches, but relying
-      // on a specific result from the optimizer is really unstable.
-      // CHECK:  [[DEST2]]
-    }
-
-      // This is a switch or maybe some chained branches, but relying
-      // on a specific result from the optimizer is really unstable.
-    // CHECK:    [[DEST1]]
-  }
-
-  // CHECK:      call void @f3_helper(i32 4, i32* [[X]])
-  // CHECK-NEXT: ret void
-  f3_helper(4, &x);
-}
-
-// rdar://problem/8440970
-void f4() {
-  extern void f4_help(int);
-
-  // CHECK: define void @f4()
-  // CHECK:      [[EXNDATA:%.*]] = alloca [[EXNDATA_T:%.*]], align
-  // CHECK:      call void @objc_exception_try_enter([[EXNDATA_T]]* [[EXNDATA]])
-  // CHECK:      call i32 @_setjmp
-  @try {
-  // CHECK:      call void @f4_help(i32 0)
-    f4_help(0);
-
-  // The finally cleanup has two threaded entrypoints after optimization:
-
-  // finally.no-call-exit:  Predecessor is when the catch throws.
-  // CHECK:      call i8* @objc_exception_extract([[EXNDATA_T]]* [[EXNDATA]])
-  // CHECK-NEXT: call void @f4_help(i32 2)
-  // CHECK-NEXT: br label
-  //   -> rethrow
-
-  // finally.call-exit:  Predecessors are the @try and @catch fallthroughs
-  // as well as the no-match case in the catch mechanism.  The i1 is whether
-  // to rethrow and should be true only in the last case.
-  // CHECK:      phi i8*
-  // CHECK-NEXT: phi i1
-  // CHECK-NEXT: call void @objc_exception_try_exit([[EXNDATA_T]]* [[EXNDATA]])
-  // CHECK-NEXT: call void @f4_help(i32 2)
-  // CHECK-NEXT: br i1
-  //   -> ret, rethrow
-
-  // ret:
-  // CHECK:      ret void
-
-  // Catch mechanism:
-  // CHECK:      call i8* @objc_exception_extract([[EXNDATA_T]]* [[EXNDATA]])
-  // CHECK-NEXT: call void @objc_exception_try_enter([[EXNDATA_T]]* [[EXNDATA]])
-  // CHECK:      call i32 @_setjmp
-  //   -> next, finally.no-call-exit
-  // CHECK:      call i32 @objc_exception_match
-  //   -> finally.call-exit, match
-  } @catch (NSArray *a) {
-  // match:
-  // CHECK:      call void @f4_help(i32 1)
-  // CHECK-NEXT: br label
-  //   -> finally.call-exit
-    f4_help(1);
-  } @finally {
-    f4_help(2);
-  }
-
-  // rethrow:
-  // CHECK:      phi i8*
-  // CHECK-NEXT: call void @objc_exception_throw(i8*
-  // CHECK-NEXT: unreachable
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/extended-block-signature-encode.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/extended-block-signature-encode.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/extended-block-signature-encode.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fencode-extended-block-signature -emit-llvm %s -o - | FileCheck %s
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s -check-prefix=BRIEF
-// rdar://12109031
-
- at class NSString, NSArray;
-
-typedef NSString*(^BBB)(NSArray*);
-
-int main ()
-{
-  BBB b1;
-  ^(BBB arg1, double arg2){ return b1; }(0, 3.14);
-}
-// CHECK: @{{.*}} = private unnamed_addr constant [64 x i8] c"@?<@\22NSString\22@?@\22NSArray\22>24@?0@?<@\22NSString\22@?@\22NSArray\22>8d16\00"
-// CHECK-BRIEF: @{{.*}} = private unnamed_addr constant [14 x i8] c"@?24@?0@?8d16\00"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/externally-initialized-selectors.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/externally-initialized-selectors.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/externally-initialized-selectors.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck %s
-// RUN: %clang_cc1 -cc1 -o - -emit-llvm %s | FileCheck %s
-
-// CHECK: @"\01L_OBJC_SELECTOR_REFERENCES_" = internal externally_initialized global
-
-void test(id x) {
-  [x doSomething];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/for-in.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/for-in.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/for-in.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-void p(const char*, ...);
-
- at interface NSArray
-+(NSArray*) arrayWithObjects: (id) first, ...;
--(unsigned) count;
- at end
- at interface NSString
--(const char*) cString;
- at end
-
-#define S(n) @#n
-#define L1(n) S(n+0),S(n+1)
-#define L2(n) L1(n+0),L1(n+2)
-#define L3(n) L2(n+0),L2(n+4)
-#define L4(n) L3(n+0),L3(n+8)
-#define L5(n) L4(n+0),L4(n+16)
-#define L6(n) L5(n+0),L5(n+32)
-
-void t0() {
-  NSArray *array = [NSArray arrayWithObjects: L1(0), (void*)0];
-
-  p("array.length: %d\n", [array count]);
-  unsigned index = 0;
-  for (NSString *i in array) {	// expected-warning {{collection expression type 'NSArray *' may not respond}}
-    p("element %d: %s\n", index++, [i cString]);
-  }
-}
-
-void t1() {
-  NSArray *array = [NSArray arrayWithObjects: L6(0), (void*)0];
-
-  p("array.length: %d\n", [array count]);
-  unsigned index = 0;
-  for (NSString *i in array) {	// expected-warning {{collection expression type 'NSArray *' may not respond}}
-    index++;
-    if (index == 10)
-      continue;
-    p("element %d: %s\n", index, [i cString]);
-    if (index == 55)
-      break;
-  }
-}
-
-// rdar://problem/9027663
-void t2(NSArray *array) {
-  for (NSArray *array in array) { // expected-warning {{collection expression type 'NSArray *' may not respond}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/forward-class-impl-metadata.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/forward-class-impl-metadata.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/forward-class-impl-metadata.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface BASE  {
- at private
-    void* _reserved;
-}
- at end
-
- at class PVR;
-
- at interface PVRHandldler 
-{
-          PVR *_imageBrowser;
-}
- at end
-
- at implementation PVRHandldler @end
-
-
- at interface PVR   : BASE
- at end
-
- at implementation PVR
- at end
-
-// Reopen of an interface after use.
-
- at interface A { 
- at public 
-  int x; 
-} 
- at property int p0;
- at end
-
-int f0(A *a) { 
-  return a.p0; 
-}
-
- at implementation A
- at synthesize p0 = _p0;
- at end
-
- at interface B
- at end
- at class B;
- at implementation B
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/forward-decl-param.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/forward-decl-param.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/forward-decl-param.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - 
-
-// <rdar://problem/9123036> crash due to forward-declared struct in
-// protocol method parameter.
-
- at protocol P
-- (void) A:(struct z) z;
- at end
- at interface I < P >
- at end
- at implementation I
- at end
-
- at interface I2
-- (void) A:(struct z2) z2;
- at end
- at implementation I2
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/fp2ret.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/fp2ret.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/fp2ret.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | \
-// RUN:   FileCheck --check-prefix=CHECK-X86_32 %s
-//
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | \
-// RUN:   FileCheck --check-prefix=CHECK-X86_64 %s
-//
-// RUN: %clang_cc1 -triple armv7-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -target-abi apcs-gnu -o - %s | \
-// RUN:   FileCheck --check-prefix=CHECK-ARMV7 %s
-
- at interface A
--(_Complex long double) complexLongDoubleValue;
- at end
-
-
-// CHECK-X86_32: define void @t0()
-// CHECK-X86_32: call void bitcast {{.*}} @objc_msgSend_stret to
-// CHECK-X86_32: }
-//
-// CHECK-X86_64: define void @t0()
-// CHECK-X86_64: call { x86_fp80, x86_fp80 } bitcast {{.*}} @objc_msgSend_fp2ret to
-// CHECK-X86_64: }
-//
-// CHECK-ARMV7: define void @t0()
-// CHECK-ARMV7: call i128 bitcast {{.*}} @objc_msgSend to
-// CHECK-ARMV7: }
-void t0() {
-  [(A*)0 complexLongDoubleValue];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/fpret.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/fpret.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/fpret.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | \
-// RUN:   FileCheck --check-prefix=CHECK-X86_32 %s
-//
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | \
-// RUN:   FileCheck --check-prefix=CHECK-X86_64 %s
-//
-// RUN: %clang_cc1 -triple armv7-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -target-abi apcs-gnu -o - %s | \
-// RUN:   FileCheck --check-prefix=CHECK-ARMV7 %s
-
- at interface A
--(float) floatValue;
--(double) doubleValue;
--(long double) longDoubleValue;
- at end
-
-
-// CHECK-X86_32: define void @t0()
-// CHECK-X86_32: call float bitcast {{.*}} @objc_msgSend_fpret to
-// CHECK-X86_32: call double bitcast {{.*}} @objc_msgSend_fpret to
-// CHECK-X86_32: call x86_fp80 bitcast {{.*}} @objc_msgSend_fpret to
-// CHECK-X86_32: }
-//
-// CHECK-X86_64: define void @t0()
-// CHECK-X86_64: call float bitcast {{.*}} @objc_msgSend to
-// CHECK-X86_64: call double bitcast {{.*}} @objc_msgSend to
-// CHECK-X86_64: call x86_fp80 bitcast {{.*}} @objc_msgSend_fpret to
-// CHECK-X86_64: }
-//
-// CHECK-ARMV7: define void @t0()
-// CHECK-ARMV7: call float bitcast {{.*}} @objc_msgSend to
-// CHECK-ARMV7: call double bitcast {{.*}} @objc_msgSend to
-// CHECK-ARMV7: call double bitcast {{.*}} @objc_msgSend to
-// CHECK-ARMV7: }
-void t0() {
-  [(A*)0 floatValue];
-  [(A*)0 doubleValue];
-  [(A*)0 longDoubleValue];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/function-decay.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/function-decay.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/function-decay.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o -
-
- at interface I0 @end
- at implementation I0
-- (void) im0: (int (void)) a0 {
-}
- at end
-
-void func(int pf(void)) {
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gc-weak-attribute.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gc-weak-attribute.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gc-weak-attribute.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck %s
-// rdar://10073896
-
- at interface I
-{
-  __weak id wObject;
-}
- at property (readwrite, weak) id representedObject;
- at property (readwrite, weak) id wObject;
- at property (readwrite, weak) __weak id wRandom;
- at property (readwrite, assign) __weak id wAnother;
- at end
-
- at implementation I
- at synthesize representedObject;
- at synthesize wObject;
- at synthesize wRandom;
- at synthesize wAnother;
- at end
-// CHECK:  call i8* @objc_read_weak
-// CHECK:  call i8* @objc_assign_weak
-// CHECK:  call i8* @objc_read_weak
-// CHECK:  call i8* @objc_assign_weak
-// CHECK:  call i8* @objc_read_weak
-// CHECK:  call i8* @objc_assign_weak
-// CHECK:  call i8* @objc_read_weak
-// CHECK:  call i8* @objc_assign_weak
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck %s
-
-void test0(void) {
-  extern id test0_helper(void);
-  __attribute__((objc_precise_lifetime)) id x = test0_helper();
-  test0_helper();
-  // CHECK: define void @test0()
-  // CHECK:      [[T0:%.*]] = call i8* @test0_helper()
-  // CHECK-NEXT: store i8* [[T0]], i8** [[X:%.*]], align 8
-  // CHECK-NEXT: call i8* @test0_helper()
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]], align 8
-  // CHECK-NEXT: call void asm sideeffect "", "r"(i8* [[T0]]) [[NUW:#[0-9]+]]
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/getter-property-mismatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/getter-property-mismatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/getter-property-mismatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-darwin -o - | FileCheck %s
-// rdar://11323676
-
- at interface NSDictionary @end
- at interface NSMutableDictionary : NSDictionary at end@interface CalDAVAddManagedAttachmentsTaskGroup {
-    NSMutableDictionary *_filenamesToServerLocation; 
-}
-- (NSDictionary *)filenamesToServerLocation;
- at property (readwrite, retain) NSMutableDictionary *filenamesToServerLocation;
- at end 
-
- at implementation CalDAVAddManagedAttachmentsTaskGroup
- at synthesize filenamesToServerLocation=_filenamesToServerLocation;
- at end
-
-// CHECK:  [[CALL:%.*]] = call i8* @objc_getProperty
-// CHECK:  [[ONE:%.*]] = bitcast i8* [[CALL:%.*]] to [[T1:%.*]]*
-// CHECK:  [[TWO:%.*]] = bitcast [[T1]]* [[ONE]] to [[T2:%.*]]*
-// CHECK:  ret [[T2]]* [[TWO]]
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/getter-property-type-mismatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/getter-property-type-mismatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/getter-property-type-mismatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -emit-llvm -o - %s | FileCheck %s
-// rdar://11515196
-
- at interface NSArray @end
-
- at interface NSMutableArray : NSArray
-- (void) addObject;
- at end
-
- at interface BPXLAppDelegate
-
-- (NSArray *)arrayOfThings;
-
- at end
-
-
- at interface BPXLAppDelegate ()
- at property (retain, nonatomic) NSMutableArray *arrayOfThings;
- at end
-
- at implementation BPXLAppDelegate
-
- at synthesize arrayOfThings=_arrayOfThings;
-
-- (void)applicationDidFinishLaunching
-{
-   [self.arrayOfThings addObject];
-}
-
- at end
-
-// CHECK: define internal [[RET:%.*]]* @"\01-[BPXLAppDelegate arrayOfThings
-// CHECK: [[THREE:%.*]] = bitcast [[OPQ:%.*]]* [[TWO:%.*]] to [[RET]]*
-// CHECK: ret [[RET]]* [[THREE]]
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gnu-exceptions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gnu-exceptions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/gnu-exceptions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -fexceptions -fobjc-exceptions -fobjc-runtime=gcc -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-unknown-freebsd -emit-llvm -fexceptions -fobjc-exceptions -fobjc-runtime=gnustep-1.7 -o - %s | FileCheck -check-prefix=NEW-ABI %s
-
-void opaque(void);
-void log(int i);
-
- at class C;
-
-// CHECK: define void @test0() [[TF:#[0-9]+]] {
-void test0() {
-  @try {
-    // CHECK: invoke void @opaque()
-    opaque();
-
-    // CHECK: call void @log(i32 1)
-
-  } @catch (C *c) {
-    // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gnu_objc_personality_v0 to i8*)
-    // CHECK-NEXT:   catch i8* getelementptr inbounds ([2 x i8]* @0, i64 0, i64 0)
-    // CHECK:      br i1
-
-    // CHECK: call void @log(i32 0)
-
-    // CHECK: resume
-    // NEW-ABI: objc_begin_catch
-    // NEW-ABI: objc_end_catch
-
-    log(0);
-  }
-
-  log(1);
-}
-
-// CHECK: attributes [[TF]] = { "{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/hidden-visibility.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/hidden-visibility.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/hidden-visibility.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fvisibility hidden -emit-llvm -o - %s | FileCheck %s
-// CHECK: @"OBJC_IVAR_$_I.P" = hidden
-// CHECK: @"OBJC_CLASS_$_I" = hidden
-// CHECK: @"OBJC_METACLASS_$_I" = hidden
-// CHECK: @"\01l_OBJC_PROTOCOL_$_Prot0" = weak hidden
-
- at interface I {
-  int P;
-}
-
- at property int P;
- at end
-
- at implementation I
- at synthesize P;
- at end
-
-
- at protocol Prot0;
-
-id f0() {
-  return @protocol(Prot0);
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/hidden.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/hidden.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/hidden.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
-__attribute__((visibility("hidden")))
- at interface Hidden
-+(void) bar;
- at end
-
- at implementation Hidden
-+(void) bar {}
- at end
-
-__attribute__((visibility("default")))
- at interface Default
-+(void) bar;
- at end
-
- at implementation Default
-+(void) bar {}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/id-isa-codegen.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/id-isa-codegen.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/id-isa-codegen.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5  -emit-llvm -o - %s | FileCheck -check-prefix LP64 %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5  -emit-llvm -o - %s | FileCheck -check-prefix LP32 %s
-
-typedef struct objc_class *Class;
-
-typedef struct objc_object {
-    Class isa;
-} *id;
-
- at interface I
-+ (Class) class;
-- (void)meth : (id)object : (id)src_object;
-+ (unsigned char) isSubclassOfClass:(Class)aClass ;
- at end
-
- at implementation I
-+ (Class) class {return 0;}
-+ (unsigned char) isSubclassOfClass:(Class)aClass {return 0;}
-- (void)meth : (id)object  : (id)src_object {
-    [object->isa isSubclassOfClass:[I class]];
-
-    [(*object).isa isSubclassOfClass:[I class]];
-
-    object->isa = src_object->isa;
-    (*src_object).isa = (*object).isa;
-}
- at end
-
-
-// rdar 7470820
-static Class MyClass;
-
-Class Test(const void *inObject1) {
-  if(((id)inObject1)->isa == MyClass)
-   return ((id)inObject1)->isa;
-  return (id)0;
-}
-
-// rdar 7609722
- at interface Foo { 
- at public 
-  id isa; 
-} 
-+(id)method;
- at end
-
-id Test2() {
-    if([Foo method]->isa)
-      return (*[Foo method]).isa;
-    return [Foo method]->isa;
-}
-
-// rdar 7709015
- at interface Cat   {}
- at end
-
- at interface SuperCat : Cat {}
-+(void)geneticallyAlterCat:(Cat *)cat;
- at end
-
- at implementation SuperCat
-+ (void)geneticallyAlterCat:(Cat *)cat {
-    Class dynamicSubclass;
-    ((id)cat)->isa = dynamicSubclass;
-}
- at end
-// CHECK-LP64: %{{.*}} = load i8** %
-// CHECK-NEXT: %{{.*}} = bitcast i8* %{{.*}} to i8**
-// CHECK-NEXT: store i8* %{{.*}}, i8** %{{.*}}
-
-// CHECK-LP32: %{{.*}} = load i8** %
-// CHECK-NEXT: %{{.*}} = bitcast i8* %{{.*}} to i8**
-// CHECK-NEXT: store i8* %{{.*}}, i8** %{{.*}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/illegal-UTF8.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/illegal-UTF8.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/illegal-UTF8.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang %s -S -m64 -o -
-
- at class NSString;
-
-
-NSString *S = @"\xff\xff___WAIT___"; // expected-warning {{input conversion stopped due to an input byte that does not belong to the input codeset UTF-8}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/image-info.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/image-info.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/image-info.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix CHECK-FRAGILE < %t %s
-
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix CHECK-NONFRAGILE < %t %s
-
-// CHECK-FRAGILE:      !llvm.module.flags = !{!0, !1, !2, !3}
-// CHECK-FRAGILE:      !0 = metadata !{i32 1, metadata !"Objective-C Version", i32 1}
-// CHECK-FRAGILE-NEXT: !1 = metadata !{i32 1, metadata !"Objective-C Image Info Version", i32 0}
-// CHECK-FRAGILE-NEXT: !2 = metadata !{i32 1, metadata !"Objective-C Image Info Section", metadata !"__OBJC, __image_info,regular"}
-// CHECK-FRAGILE-NEXT: !3 = metadata !{i32 4, metadata !"Objective-C Garbage Collection", i32 0}
-
-// CHECK-NONFRAGILE:      !llvm.module.flags = !{!0, !1, !2, !3}
-// CHECK-NONFRAGILE:      !0 = metadata !{i32 1, metadata !"Objective-C Version", i32 2}
-// CHECK-NONFRAGILE-NEXT: !1 = metadata !{i32 1, metadata !"Objective-C Image Info Version", i32 0}
-// CHECK-NONFRAGILE-NEXT: !2 = metadata !{i32 1, metadata !"Objective-C Image Info Section", metadata !"__DATA, __objc_imageinfo, regular, no_dead_strip"}
-// CHECK-NONFRAGILE-NEXT: !3 = metadata !{i32 4, metadata !"Objective-C Garbage Collection", i32 0}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/implicit-objc_msgSend.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/implicit-objc_msgSend.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/implicit-objc_msgSend.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-// RUN: grep -F 'declare i8* @objc_msgSend(i8*, i8*, ...)' %t
-
-typedef struct objc_selector *SEL;
-id f0(id x, SEL s) {
-  return objc_msgSend(x, s);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/implicit-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/implicit-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/implicit-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple=i686-apple-darwin8 -o %t %s
-// RUNX: %clang_cc1 -emit-llvm -o %t %s
-
- at interface A
- -(void) setOk:(int)arg;
- -(int) ok;
-
- -(void) setX:(int)arg;
- -(int) x;
- at end
-
-void f0(A *a) {
-   a.x = 1;   
-   a.ok = a.x;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/instance-method-metadata.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/instance-method-metadata.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/instance-method-metadata.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -S -o %t %s 
-// RUN: FileCheck < %t %s
-
-// rdar://9072317
-
-/** The problem looks like clang getting confused when a single translation unit 
-    contains a protocol with a property and two classes that implement that protocol 
-    and synthesize the property.
-*/
-
- at protocol Proto
- at property (assign) id prop;
- at end
-
- at interface NSObject @end
-
- at interface Foo : NSObject <Proto> { int x; } @end
-
- at interface Bar : NSObject <Proto> @end
-
- at implementation Foo
- at synthesize prop;
- at end
-
- at implementation Bar
- at synthesize prop;
- at end
-
-// CHECK: l_OBJC_$_INSTANCE_METHODS_Bar:
-// CHECK-NEXT:        .long   24
-// CHECK-NEXT:        .long   2
-// CHECK-NEXT:        .quad   L_OBJC_METH_VAR_NAME_
-// CHECK-NEXT:        .quad   L_OBJC_METH_VAR_TYPE_
-// CHECK-NEXT:        .quad   "-[Bar prop]"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/interface-layout-64.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/interface-layout-64.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/interface-layout-64.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,121 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @"OBJC_IVAR_$_I3._iv2" = global i64 8, section "__DATA, __objc_ivar", align 8
-// CHECK: @"OBJC_IVAR_$_I3._iv3" = global i64 12, section "__DATA, __objc_ivar", align 8
-// CHECK: _OBJC_CLASS_RO_$_I3" = internal global {{.*}} { i32 0, i32 8, i32 13
-// CHECK: @"OBJC_IVAR_$_I4._iv4" = global i64 13, section "__DATA, __objc_ivar", align 8
-// CHECK: _OBJC_CLASS_RO_$_I4" = internal global {{.*}} { i32 0, i32 13, i32 14, {{.*}}
-// CHECK: @"OBJC_IVAR_$_I5._iv6_synth" = hidden global i64 16, section "__DATA, __objc_ivar", align 8
-// CHECK: @"OBJC_IVAR_$_I5._iv7_synth" = hidden global i64 20, section "__DATA, __objc_ivar", align 8
-// CHECK: @"OBJC_IVAR_$_I5._iv5" = global i64 14, section "__DATA, __objc_ivar", align 8
-// CHECK: _OBJC_CLASS_RO_$_I5" = internal global {{.*}} { i32 0, i32 14, i32 24, {{.*}}
-// CHECK: @"OBJC_IVAR_$_I6.iv0" = global i64 0, section "__DATA, __objc_ivar", align 8
-// CHECK: _OBJC_CLASS_RO_$_I6" = internal global {{.*}} { i32 2, i32 0, i32 1, {{.*}}
-// CHECK: @"OBJC_IVAR_$_I8.b" = global i64 8, section "__DATA, __objc_ivar", align 8
-// CHECK: _OBJC_CLASS_RO_$_I8" = internal global {{.*}} { i32 0, i32 8, i32 16, {{.*}}
-// CHECK: @"OBJC_IVAR_$_I9.iv0" = global i64 0, section "__DATA, __objc_ivar", align 8
-// CHECK: _OBJC_CLASS_RO_$_I9" = internal global {{.*}} { i32 2, i32 0, i32 4, {{.*}}
-// CHECK: @"OBJC_IVAR_$_I10.iv1" = global i64 4, section "__DATA, __objc_ivar", align 8
-// CHECK: _OBJC_CLASS_RO_$_I10" = internal global {{.*}} { i32 0, i32 4, i32 5, {{.*}}
-// CHECK: _OBJC_CLASS_RO_$_I11" = internal global {{.*}} { i32 0, i32 5, i32 5, {{.*}}
-// CHECK: @"OBJC_IVAR_$_I12.iv2" = global i64 8, section "__DATA, __objc_ivar", align 8
-// CHECK: _OBJC_CLASS_RO_$_I12" = internal global {{.*}} { i32 0, i32 8, i32 12, {{.*}}
-
-/*
-  Compare to:
-    gcc -m64 -S -o - interface-layout-64.m | grep '^_OBJC_IVAR_$_*{{.*}}' -A 1
-  and 
-    gcc -m64 -S -o - interface-layout-64.m | grep '^l{{.*}}_CLASS_RO_$_I[0-9]*' -A 3
- */
-
-struct s0 {
-  double x;
-};
-
- at interface I2 {
-  struct s0 _iv1;
-}
- at end
-
- at interface I3 : I2 {
-  unsigned int _iv2 :1;
-  unsigned : 0;
-  unsigned int _iv3 : 3;
-}
- at end
-
- at interface I4 : I3 {
- char _iv4;
-}
- at end
-
- at interface I5 : I4 {
- char _iv5;
-}
-
- at property int prop0;
- at end
-
- at implementation I3
- at end
-
- at implementation I4 
- at end
-
- at interface I5 ()
- at property int prop1;
- at property char prop2;
- at end
-
- at implementation I5
- at synthesize prop0 = _iv6_synth;
- at synthesize prop1 = _iv7_synth;
- at synthesize prop2 = _iv5;
- at end
-
-// The size rounds up to the next available byte.
- at interface I6 {
-  unsigned iv0 : 2;
-}
- at end
- at implementation I6
- at end
-
-// The start of the subclass includes padding for its own alignment.
- at interface I7 {
-  char a;
-}
- at end
- at interface I8 : I7 {
-  double b;
-}
- at end
- at implementation I8
- at end
-
-// Padding bit-fields
- at interface I9 {
-  unsigned iv0 : 2;
-  unsigned : 0;
-}
- at end
- at implementation I9
- at end
- at interface I10 : I9 {
-  unsigned iv1 : 2;
-}
- at end
- at implementation I10
- at end
-
-// Empty structures
- at interface I11 : I10
- at end
- at implementation I11
- at end
- at interface I12 : I11 {
-  unsigned iv2;
-}
- at end
- at implementation I12
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/interface.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/interface.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/interface.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -O3 -emit-llvm -o %t %s
-// RUN: grep 'ret i32 385' %t
-
-void *alloca();
-
- at interface I0 {
- at public
-  int iv0;
-  int iv1;
-  int iv2;
-}
- at end
-
-static int f0(I0 *a0) {
-  return (*(a0 + 2)).iv0;
-}
-
-static int f1(I0 *a0) {
-  return a0[2].iv1;
-}
-
-static int f2(I0 *a0) {
-  return (*(a0 - 1)).iv2;
-}
-
-int g0(void) {
-  I0 *a = alloca(sizeof(*a) * 4);
-  a[2].iv0 = 5;
-  a[2].iv1 = 7;
-  a[2].iv2 = 11;
-  return f0(a) * f1(a) * f2(&a[3]);
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-base-as-invariant-load.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-base-as-invariant-load.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-base-as-invariant-load.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm  -triple x86_64-apple-darwin -x objective-c %s -o - | FileCheck %s
-// rdar://10840980
-
- at interface A {
-        struct {
-                unsigned char a : 1;
-                unsigned char b : 1;
-                unsigned char c : 1;
-        } _flags;
-}
-
- at end
-
- at implementation A
-
-- (id)init {
-        _flags.a = 1;
-        _flags.b = 1;
-        _flags.c = 1;
-
-        return self;
-}
-
- at end
-
-// CHECK: [[T1:%.*]] = load i64* @"OBJC_IVAR_$_A._flags", !invariant.load !4
-// CHECK: [[T2:%.*]] = load i64* @"OBJC_IVAR_$_A._flags", !invariant.load !4
-// CHECK: [[T3:%.*]] = load i64* @"OBJC_IVAR_$_A._flags", !invariant.load !4
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-invariant.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-invariant.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-invariant.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fblocks -emit-llvm -o - %s | FileCheck %s
-
- at interface NSObject
-+ (id) new;
-- (id) init;
- at end
-
- at interface Base : NSObject @end
-
-// @implementation Base
-// {
-//     int dummy;
-// }
-// @end
-
- at interface Derived : Base
-{
-    @public int member;
-}
- at end
-
- at implementation Derived
-- (id) init
-{
-    self = [super init];
-    member = 42;
-    return self;
-}
- at end
-
-// CHECK: define internal i8* @"\01-[Derived init]"
-// CHECK: [[IVAR:%.*]] = load i64* @"OBJC_IVAR_$_Derived.member", !invariant.load
-
-void * variant_load_1(int i) {
-    void *ptr;
-    while (i--) {
-        Derived *d = [Derived new];
-        ptr = &d->member;
-    }
-    return ptr;
-}
-
-// CHECK: define i8* @variant_load_1(i32 %i)
-// CHECK: [[IVAR:%.*]] = load i64* @"OBJC_IVAR_$_Derived.member"{{$}}
-
- at interface Container : Derived @end
- at implementation Container
-- (void *) invariant_load_1
-{
-    return &self->member;
-}
- at end
-
-// CHECK: define internal i8* @"\01-[Container invariant_load_1]"
-// CHECK: [[IVAR:%.*]] = load i64* @"OBJC_IVAR_$_Derived.member", !invariant.load
-
- at interface ForBlock
-{ 
- at public
-  id foo; 
-}
- at end
-
-// CHECK: define internal i8* @block_block_invoke
-// CHECK: load i64* @"OBJC_IVAR_$_ForBlock.foo"
-id (^block)(ForBlock*) = ^(ForBlock* a) {
-  return a->foo;
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-64-bitfields.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-64-bitfields.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-64-bitfields.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-
-#ifdef __cplusplus
-typedef bool _Bool;
-#endif
-
- at interface I
-{
-  struct {
-    unsigned int d : 1;
-  } bitfield;
-}
- at end
-
- at implementation I
- at end
-
- at interface J
-{
-    struct {
-        unsigned short _reserved : 16;
-
-        _Bool _draggedNodesAreDeletable: 1;
-        _Bool _draggedOutsideOutlineView : 1;
-        _Bool _adapterRespondsTo_addRootPaths : 1;
-        _Bool _adapterRespondsTo_moveDataNodes : 1;
-        _Bool _adapterRespondsTo_removeRootDataNode : 1;
-        _Bool _adapterRespondsTo_doubleClickDataNode : 1;
-        _Bool _adapterRespondsTo_selectDataNode : 1;
-        _Bool _adapterRespondsTo_textDidEndEditing : 1;
-
-        _Bool _adapterRespondsTo_updateAndSaveRoots : 1;
-        _Bool _adapterRespondsTo_askToDeleteRootNodes : 1;
-        _Bool _adapterRespondsTo_contextMenuForSelectedNodes : 1;
-        _Bool _adapterRespondsTo_pasteboardFilenamesForNodes : 1;
-        _Bool _adapterRespondsTo_writeItemsToPasteboard : 1;
-        _Bool _adapterRespondsTo_writeItemsToPasteboardXXXX : 1;
-    } _flags;
-}
- at end
-
- at implementation J
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-64.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-64.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-64.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,114 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck %s
-
-/*
-
-Here is a handy command for looking at llvm-gcc's output:
-llvm-gcc -m64 -fobjc-gc -emit-llvm -S -o - ivar-layout-64.m | \
-  grep 'OBJC_CLASS_NAME.* =.*global' | \
-  sed -e 's#, section.*# ...#' | \
-  sed -e 's#_[0-9]*"#_NNN#' | \
-  sort
-
-*/
-
- at interface B @end
-
- at interface A {
-  struct s0 {
-    int f0;
-    int f1;
-  } f0;
-  id f1;
-__weak B *f2;
-  int f3 : 5;
-  struct s1 {
-    int *f0;
-    int *f1;
-  } f4[2][1];
-}
- at end
-
- at interface C : A
- at property int p3;
- at end
-
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"C\00"
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"\11p\00"
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"!`\00"
-
-
- at implementation C
- at synthesize p3 = _p3;
- at end
-
- at interface A()
- at property int p0;
- at property (assign) __strong id p1;
- at property (assign) __weak id p2;
- at end
-
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"A\00"
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"\11q\10\00"
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"!q\00"
-
- at implementation A
- at synthesize p0 = _p0;
- at synthesize p1 = _p1;
- at synthesize p2 = _p2;
- at end
-
- at interface D : A
- at property int p3;
- at end
-
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"D\00"
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"\11p\00"
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"!`\00"
-
- at implementation D
- at synthesize p3 = _p3;
- at end
-
-typedef unsigned short UInt16;
-
-
-typedef signed char BOOL;
-typedef unsigned int FSCatalogInfoBitmap;
-
- at interface NSFileLocationComponent {
-    @private
-
-    id _specifierOrStandardizedPath;
-    BOOL _carbonCatalogInfoAndNameAreValid;
-    FSCatalogInfoBitmap _carbonCatalogInfoMask;
-    id _name;
-    id _containerComponent;
-    id _presentableName;
-    id _iconAsAttributedString;
-}
- at end
-
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"NSFileLocationComponent\00"
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"\01\14\00"
-
- at implementation NSFileLocationComponent @end
-
- at interface NSObject {
-  id isa;
-}
- at end
-
- at interface Foo : NSObject {
-    id ivar;
-
-    unsigned long bitfield  :31;
-    unsigned long bitfield2 :1;
-    unsigned long bitfield3 :32;
-}
- at end
-
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"Foo\00"
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global {{.*}} c"\02\10\00"
-
- at implementation Foo @end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-array0-struct.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-array0-struct.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-array0-struct.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -O0 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-
-// rdar://8800513
- at interface NSObject {
-  id isa;
-}
- at end
-
-typedef struct {
-    id b;
-} st;
-
- at interface Test : NSObject {
-    int a;
-    st b[0];
-}
- at end
-
- at implementation Test @end
-// CHECK-LP64: L_OBJC_CLASS_NAME_4:
-// CHECK-LP64-NEXT: .asciz      "\001\020"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-no-optimize.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-no-optimize.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-no-optimize.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -O0 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -x objective-c++ -fobjc-gc -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -O0 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-
- at interface NSObject {
-  id isa;
-}
- at end
-
- at interface AllPointers : NSObject {
-    id foo;
-    void *__strong bar;    NSObject *bletch;}
- at end
- at implementation AllPointers
- at end
-
-// CHECK-LP64: L_OBJC_CLASS_NAME_6:
-// CHECK-LP64-NEXT: .asciz	"\004"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-nonfragile-abi2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-nonfragile-abi2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivar-layout-nonfragile-abi2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
-// rdar: // 7824380
-
- at interface Super {
-  int ivar_super_a : 5;
-}
- at end
-
- at interface A : Super {
- at public
-  int ivar_a : 5;
-}
- at end
-
-int f0(A *a) {
-  return a->ivar_a;
-}
-
- at interface A () {
- at public
-  int ivar_ext_a : 5;
-  int ivar_ext_b : 5;
-}@end
-
-int f1(A *a) {
-  return a->ivar_ext_a + a->ivar_a;
-}
-
- at interface A () {
- at public
-  int ivar_ext2_a : 5;
-  int ivar_ext2_b : 5;
-}@end
-
-int f2(A* a) {
-  return a->ivar_ext2_a + a->ivar_ext_a + a->ivar_a;
-}
-
- at implementation A {
- at public
-  int ivar_b : 5;
-  int ivar_c : 5;
-  int ivar_d : 5;
-}
- at end
-
-int f3(A *a) {  
-  return a->ivar_d + a->ivar_ext2_a + a->ivar_ext_a + a->ivar_a;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivars.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivars.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ivars.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s
-// RUN: %clang_cc1 -fobjc-gc -emit-llvm -o - %s
-
-// rdar://6800926
- at interface ITF {
- at public
-  unsigned field :1 ;
-  _Bool boolfield :1 ;
-}
- at end
-
-void foo(ITF *P) {
-  P->boolfield = 1;
-}
-
-// rdar://8368320
- at interface R {
-  struct {
-    union {
-      int x;
-      char c;
-    };
-  } _union;
-}
- at end
-
- at implementation R
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/layout-bitfield-crash.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/layout-bitfield-crash.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/layout-bitfield-crash.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-gc -emit-llvm -g -o - %s
-// Check that this doesn't crash when compiled with debugging on.
- at class Foo;
-typedef struct Bar *BarRef;
-
- at interface Baz
- at end
-
- at interface Foo
-- (void) setFlag;
- at end
-
- at implementation Baz
-
-- (void) a:(BarRef)b
-{
-  Foo* view = (Foo*)self;
-  [view setFlag];
-}
-
- at end
-
-
- at implementation Foo
-{
-  int flag : 1;
-}
-
-- (void) setFlag
-{
-  if (!flag)
-    flag = 1;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/link-errors.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/link-errors.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/link-errors.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-// RUN: grep '.lazy_reference .objc_class_name_A' %t | count 1
-// RUN: grep '.lazy_reference .objc_class_name_Unknown' %t | count 1
-// RUN: grep '.lazy_reference .objc_class_name_Protocol' %t | count 1
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -DWITH_IMPL -emit-llvm -o %t %s
-// RUN: grep '.lazy_reference .objc_class_name_Root' %t | count 1
-
- at interface Root
--(id) alloc;
--(id) init;
- at end
-
- at protocol P;
-
- at interface A : Root
- at end
-
- at interface A (Category)
-+(void) foo;
- at end
-
-#ifdef WITH_IMPL
- at implementation A
- at end
-#endif
-
- at interface Unknown
-+test;
- at end
-
-
-int main() {
-  id x = @protocol(P);
-  [ A alloc ];
-  [ A foo ];
-  [ Unknown test ];
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/local-static-block.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/local-static-block.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/local-static-block.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o %t-64.ll
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.ll %s
-// rdar: // 8390455
-
- at class NSArray;
-
-static  NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {
-
-  for(id rawAddress in addresses)
-  {
-   NSArray *separatedAddresses = ((NSArray*)0);
-   separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);
-  }
-  return (NSArray *)0;
-};
-
-void FUNC()
-{
- static  NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {
-
-  for(id rawAddress in addresses)
-  {
-   NSArray *separatedAddresses = ((NSArray*)0);
-   separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);
-  }
-  return (NSArray *)0;
- };
-
- if (ArrayRecurs) {
-   static  NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {
-
-     for(id rawAddress in addresses)
-     {
-       NSArray *separatedAddresses = ((NSArray*)0);
-       separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);
-     }
-     return (NSArray *)0;
-   };
- }
-}
-
-void FUNC1()
-{
- static  NSArray *(^ArrayRecurs)(NSArray *addresses, unsigned long level) = ^(NSArray *addresses, unsigned long level) {
-
-  for(id rawAddress in addresses)
-  {
-   NSArray *separatedAddresses = ((NSArray*)0);
-   separatedAddresses = ArrayRecurs((NSArray *)rawAddress, level+1);
-  }
-  return (NSArray *)0;
- };
-}
-// CHECK-LP64: @ArrayRecurs = internal global
-// CHECK-LP64: @FUNC.ArrayRecurs = internal global
-// CHECK-LP64: @FUNC.ArrayRecurs3 = internal global
-// CHECK-LP64: @FUNC1.ArrayRecurs = internal global

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/message-arrays.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/message-arrays.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/message-arrays.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
-void f0(id a) {
-  // This should have an implicit cast
-  [ a print: "hello" ];
-}
-
- at interface A
--(void) m: (int) arg0, ...;
- at end
-
-int f1(A *a) {
-  // This should also get an implicit cast (for the vararg)
-  [a m: 1, "test"];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/messages-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/messages-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/messages-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,175 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-NF
-
-// Most of this test is apparently just verifying that we don't crash.
-
-int printf(const char *, ...);
-
- at interface Root
- at end
-
-typedef struct {
-  int x, y, z[10];
-} MyPoint;
-typedef struct {
-  float width, height;
-} MySize;
-
- at interface A : Root
-+(void) printThisInt: (int) arg0 andThatFloat: (float) arg1 andADouble: (double) arg2 andAPoint: (MyPoint) arg3;
-+(float) returnAFloat;
-+(double) returnADouble;
-+(MyPoint) returnAPoint;
-+(void) printThisSize: (MySize) arg0;
-+(MySize) returnASize;
-
--(void) printThisInt: (int) arg0 andThatFloat: (float) arg1 andADouble: (double) arg2 andAPoint: (MyPoint) arg3;
--(float) returnAFloat;
--(double) returnADouble;
--(MyPoint) returnAPoint;
--(void) printThisSize: (MySize) arg0;
--(MySize) returnASize;
- at end
- at interface B : A
- at end
-
- at implementation A
-+(void) printThisInt: (int) arg0 andThatFloat: (float) arg1 andADouble: (double) arg2 andAPoint: (MyPoint) arg3 {
-  printf("(CLASS) theInt: %d, theFloat: %f, theDouble: %f, thePoint: { %d, %d }\n",
-         arg0, arg1, arg2, arg3.x, arg3.y);
-}
-+(float) returnAFloat {
-  return 15.;
-}
-+(double) returnADouble {
-  return 25.;
-}
-+(MyPoint) returnAPoint {
-  MyPoint x = { 35, 45 };
-  return x;
-}
-+(void) printThisSize: (MySize) arg0 {
-  printf("(CLASS) theSize: { %f, %f }\n",
-         arg0.width, arg0.height);
-}
-+(MySize) returnASize {
-  MySize x = { 32, 44 };
-  return x;
-}
-
--(void) printThisInt: (int) arg0 andThatFloat: (float) arg1 andADouble: (double) arg2 andAPoint: (MyPoint) arg3 {
-  printf("theInt: %d, theFloat: %f, theDouble: %f, thePoint: { %d, %d }\n",
-         arg0, arg1, arg2, arg3.x, arg3.y);
-}
--(float) returnAFloat {
-  return 10.;
-}
--(double) returnADouble {
-  return 20.;
-}
--(MyPoint) returnAPoint {
-  MyPoint x = { 30, 40 };
-  return x;
-}
--(void) printThisSize: (MySize) arg0 {
-  printf("theSize: { %f, %f }\n",
-         arg0.width, arg0.height);
-}
--(MySize) returnASize {
-  MySize x = { 22, 34 };
-  return x;
-}
- at end
-
- at implementation B
-+(void) printThisInt: (int) arg0 andThatFloat: (float) arg1 andADouble: (double) arg2 andAPoint: (MyPoint) arg3 {
-  arg3.x *= 2;
-  arg3.y *= 2;
-  [ super printThisInt: arg0*2 andThatFloat: arg1*2 andADouble: arg2*2 andAPoint: arg3 ];
-}
-+(void) printThisSize: (MySize) arg0 {
-  arg0.width *= 2;
-  arg0.height *= 2;
-  [ super printThisSize: arg0 ];
-}
-+(float) returnAFloat {
-  return [ super returnAFloat ]*2;
-}
-+(double) returnADouble {
-  return [ super returnADouble ]*2;
-}
-+(MyPoint) returnAPoint {
-  MyPoint x = [ super returnAPoint ];
-  x.x *= 2;
-  x.y *= 2;
-  return x;
-}
-+(MySize) returnASize {
-  MySize x = [ super returnASize ];
-  x.width *= 2;
-  x.height *= 2;
-  return x;
-}
-
--(void) printThisInt: (int) arg0 andThatFloat: (float) arg1 andADouble: (double) arg2 andAPoint: (MyPoint) arg3 {
-  arg3.x *= 2;
-  arg3.y *= 2;
-  [ super printThisInt: arg0*2 andThatFloat: arg1*2 andADouble: arg2*2 andAPoint: arg3 ];
-}
--(void) printThisSize: (MySize) arg0 {
-  arg0.width *= 2;
-  arg0.height *= 2;
-  [ super printThisSize: arg0 ];
-}
--(float) returnAFloat {
-  return [ super returnAFloat ]*2;
-}
--(double) returnADouble {
-  return [ super returnADouble ]*2;
-}
--(MyPoint) returnAPoint {
-  MyPoint x = [ super returnAPoint ];
-  x.x *= 2;
-  x.y *= 2;
-  return x;
-}
--(MySize) returnASize {
-  MySize x = [ super returnASize ];
-  x.width *= 2;
-  x.height *= 2;
-  return x;
-}
--(const float) returnAConstFloat {
-  return 5;
-}
- at end
-
-// rdar://problem/7854674
-// CHECK:    define void @test0([[A:%.*]]*
-// CHECK-NF: define void @test0([[A:%.*]]*
-void test0(A *x) {
-  // CHECK:         [[X:%.*]] = alloca [[A]]*
-  // CHECK-NEXT:    [[POINT:%.*]] = alloca [[POINT_T:%.*]],
-  // CHECK:         [[T0:%.*]] = load [[A]]** [[X]]
-  // CHECK:         [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*
-  // CHECK-NEXT:    icmp eq i8* [[T1]], null
-  // CHECK-NEXT:    br i1
-  // CHECK:         call {{.*}} @objc_msgSend_stret to
-  // CHECK-NEXT:    br label
-  // CHECK:         [[T0:%.*]] = bitcast [[POINT_T]]* [[POINT]] to i8*
-  // CHECK-NEXT:    call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 48, i32 4, i1 false)
-  // CHECK-NEXT:    br label
-
-  // CHECK-NF:      [[X:%.*]] = alloca [[A]]*
-  // CHECK-NF-NEXT: [[POINT:%.*]] = alloca [[POINT_T:%.*]],
-  // CHECK-NF:      [[T0:%.*]] = load [[A]]** [[X]]
-  // CHECK-NF:      [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*
-  // CHECK-NF-NEXT: icmp eq i8* [[T1]], null
-  // CHECK-NF-NEXT: br i1
-  // CHECK-NF:      call {{.*}} @objc_msgSend_stret to
-  // CHECK-NF-NEXT: br label
-  // CHECK-NF:      [[T0:%.*]] = bitcast [[POINT_T]]* [[POINT]] to i8*
-  // CHECK-NF-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 48, i32 4, i1 false)
-  // CHECK-NF-NEXT: br label
-  MyPoint point = [x returnAPoint];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/messages.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/messages.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/messages.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-MAC
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-MAC-NF
-// RUN: %clang_cc1 -fobjc-runtime=gcc -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-GNU
-// RUN: %clang_cc1 -fobjc-runtime=gnustep -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-GNU-NF
-
-typedef struct {
-  int x;
-  int y;
-  int z[10];
-} MyPoint;
-
-void f0(id a) {
-  int i;
-  MyPoint pt = { 1, 2};
-
-  // CHECK-MAC: call {{.*}} @objc_msgSend to
-  // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
-  // CHECK-GNU: call {{.*}} @objc_msg_lookup(
-  // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
-  [a print0];
-
-  // CHECK-MAC: call {{.*}} @objc_msgSend to
-  // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
-  // CHECK-GNU: call {{.*}} @objc_msg_lookup(
-  // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
-  [a print1: 10];
-
-  // CHECK-MAC: call {{.*}} @objc_msgSend to
-  // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
-  // CHECK-GNU: call {{.*}} @objc_msg_lookup(
-  // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
-  [a print2: 10 and: "hello" and: 2.2];
-
-  // CHECK-MAC: call {{.*}} @objc_msgSend to
-  // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
-  // CHECK-GNU: call {{.*}} @objc_msg_lookup(
-  // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
-  [a takeStruct: pt ];
-  
-  void *s = @selector(print0);
-  for (i=0; i<2; ++i)
-    // CHECK-MAC: call {{.*}} @objc_msgSend to
-    // CHECK-MAC-NF: call {{.*}} @objc_msgSend to
-    // CHECK-GNU: call {{.*}} @objc_msg_lookup(
-    // CHECK-GNU-NF: call {{.*}} @objc_msg_lookup_sender(
-    [a performSelector:s];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata-symbols-32.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata-symbols-32.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata-symbols-32.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: .lazy_reference .objc_class_name_J0
-
-// CHECK: @"\01L_OBJC_METH_VAR_NAME_{{[0-9]*}}" = internal global {{.*}}section "__TEXT,__cstring,cstring_literals", align 1
-// CHECK: @"\01L_OBJC_METH_VAR_TYPE_{{[0-9]*}}" = internal global {{.*}}section "__TEXT,__cstring,cstring_literals", align 1
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{[0-9]*}}" = internal global {{.*}}section "__TEXT,__cstring,cstring_literals", align 1
-// CHECK: @"\01L_OBJC_PROTOCOL_INSTANCE_METHODS_P" = internal global {{.*}}section "__OBJC,__cat_inst_meth,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_PROTOCOL_CLASS_METHODS_P" = internal global {{.*}}section "__OBJC,__cat_cls_meth,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_PROTOCOL_P" = internal global {{.*}}section "__OBJC,__protocol,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CLASS_PROTOCOLS_A" = internal global {{.*}}section "__OBJC,__cat_cls_meth,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CLASS_METHODS_A" = internal global {{.*}}section "__OBJC,__cls_meth,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_METACLASS_A" = internal global {{.*}}section "__OBJC,__meta_class,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_INSTANCE_VARIABLES_A" = internal global {{.*}}section "__OBJC,__instance_vars,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_INSTANCE_METHODS_A" = internal global {{.*}}section "__OBJC,__inst_meth,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_PROP_NAME_ATTR_{{[0-9]*}}" = internal global {{.*}}section "__TEXT,__cstring,cstring_literals", align 1
-// CHECK: @"\01l_OBJC_$_PROP_LIST_A" = internal global {{.*}}section "__OBJC,__property,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CLASSEXT_A" = internal global {{.*}}section "__OBJC,__class_ext,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CLASS_A" = internal global {{.*}}section "__OBJC,__class,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CATEGORY_INSTANCE_METHODS_A_Cat" = internal global {{.*}}section "__OBJC,__cat_inst_meth,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CATEGORY_CLASS_METHODS_A_Cat" = internal global {{.*}}section "__OBJC,__cat_cls_meth,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CATEGORY_A_Cat" = internal global {{.*}}section "__OBJC,__category,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CLASS_REFERENCES_{{[0-9]*}}" = internal global {{.*}}section "__OBJC,__cls_refs,literal_pointers,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_SELECTOR_REFERENCES_{{[0-9]*}}" = internal externally_initialized global {{.*}}section "__OBJC,__message_refs,literal_pointers,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_SYMBOLS" = internal global {{.*}}section "__OBJC,__symbols,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_MODULES" = internal global {{.*}}section "__OBJC,__module_info,regular,no_dead_strip", align 4
-
-// Clang's Obj-C 32-bit doesn't emit ivars for the root class.
-// CHECKX: @"\01L_OBJC_CLASS_VARIABLES_A" = internal global {{.*}}section "__OBJC,__class_vars,regular,no_dead_strip", align 4
-
-
-/*
-
-Here is a handy command for looking at llvm-gcc's output:
-llvm-gcc -m32 -emit-llvm -S -o - metadata-symbols-32.m | \
-  grep '=.*global' | \
-  sed -e 's#global.*, section#global ... section#' | \
-  sort
-
-*/
-
- at interface B
- at end
- at interface C
- at end
-
- at protocol P
-+(void) fm0;
--(void) im0;
- at end
-
- at interface A<P> {
-  int _ivar;
-}
- 
- at property (assign) int ivar;
-
-+(void) fm0;
--(void) im0;
- at end
-
- at implementation A
- at synthesize ivar = _ivar;
-+(void) fm0 {
-}
--(void) im0 {
-}
- at end
-
- at implementation A (Cat)
-+(void) fm1 {
-}
--(void) im1 {
-}
- at end
-
- at interface J0
- at end
-
- at implementation J0(Category) @end
-
-void *f0() {
-   [B im0];
-   [C im1];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata-symbols-64.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata-symbols-64.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata-symbols-64.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-dispatch-method=mixed -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: @"OBJC_IVAR_$_A._ivar" = global {{.*}} section "__DATA, __objc_ivar", align 8
-// CHECK: @_objc_empty_cache = external global
-// CHECK: @_objc_empty_vtable = external global
-// CHECK: @"OBJC_CLASS_$_A" = global
-// CHECK: @"OBJC_METACLASS_$_A" = global {{.*}} section "__DATA, __objc_data", align 8
-// CHECK: @"\01L_OBJC_CLASS_NAME_{{[0-9]*}}" = internal global {{.*}} section "__TEXT,__objc_classname,cstring_literals", align 1
-// CHECK: @"\01L_OBJC_METH_VAR_NAME_{{[0-9]*}}" = internal global {{.*}} section "__TEXT,__objc_methname,cstring_literals", align 1
-// CHECK: @"\01L_OBJC_METH_VAR_TYPE_{{[0-9]*}}" = internal global {{.*}} section "__TEXT,__objc_methtype,cstring_literals", align 1
-// CHECK: @"\01l_OBJC_$_CLASS_METHODS_A" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_$_PROTOCOL_INSTANCE_METHODS_P" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_$_PROTOCOL_CLASS_METHODS_P" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA,__datacoal_nt,coalesced", align 8
-// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA, __objc_protolist, coalesced, no_dead_strip", align 8
-// CHECK: @"\01l_OBJC_CLASS_PROTOCOLS_$_A" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_METACLASS_RO_$_A" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_$_INSTANCE_METHODS_A" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_$_INSTANCE_VARIABLES_A" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01L_OBJC_PROP_NAME_ATTR_{{[0-9]*}}" = internal global {{.*}} section "__TEXT,__cstring,cstring_literals", align 1
-// CHECK: @"\01l_OBJC_$_PROP_LIST_A" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_CLASS_RO_$_A" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_$_CATEGORY_INSTANCE_METHODS_A_$_Cat" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_$_CATEGORY_CLASS_METHODS_A_$_Cat" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01l_OBJC_$_CATEGORY_A_$_Cat" = internal global {{.*}} section "__DATA, __objc_const", align 8
-// CHECK: @"\01L_OBJC_CLASSLIST_SUP_REFS_$_{{[0-9]*}}" = internal global {{.*}} section "__DATA, __objc_superrefs, regular, no_dead_strip", align 8
-// CHECK: @"\01L_OBJC_SELECTOR_REFERENCES_" = internal externally_initialized global {{.*}} section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip"
-// CHECK: @"\01L_OBJC_CLASSLIST_SUP_REFS_$_{{[0-9]*}}" = internal global {{.*}} section "__DATA, __objc_superrefs, regular, no_dead_strip", align 8
-// CHECK: @"OBJC_CLASS_$_B" = external global
-// CHECK: @"\01L_OBJC_CLASSLIST_REFERENCES_$_{{[0-9]*}}" = internal global {{.*}} section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8
-// CHECK: @"\01l_objc_msgSend_fixup_alloc" = weak hidden global {{.*}} section "__DATA, __objc_msgrefs, coalesced", align 16
-// CHECK: @"\01L_OBJC_LABEL_CLASS_$" = internal global {{.*}} section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
-// CHECK: @"\01L_OBJC_LABEL_CATEGORY_$" = internal global {{.*}} section "__DATA, __objc_catlist, regular, no_dead_strip", align 8
-// CHECK: @objc_msgSend_fpret(
-// CHECK: @objc_msgSend_fixup(
-
-
-/*
-
-Here is a handy command for looking at llvm-gcc's output:
-llvm-gcc -m64 -emit-llvm -S -o - metadata-symbols-64.m | \
-  grep '=.*global' | \
-  sed -e 's#global.*, section#global ... section#' | \
-  sort
-
-*/
-
- at interface B
- at end
- at interface C
- at end
-
- at protocol P
-+(void) fm0;
--(void) im0;
- at end
-
- at interface A<P> {
-  int _ivar;
-}
- 
- at property (assign) int ivar;
-
-+(void) fm0;
--(void) im0;
- at end
-
- at implementation A
- at synthesize ivar = _ivar;
-+(void) fm0 {
-}
--(void) im0 {
-}
- at end
-
- at implementation A (Cat)
-+(void) fm1 {
-}
--(void) im1 {
-}
- at end
-
- at interface D : A
- at end
-
- at implementation D
-+(void) fm2 {
-  [super fm1];
-}
--(void) im2 {
-  [super im1];
-}
- at end
-
-// Test for FP dispatch method APIs
- at interface Example 
- at end
-
-float FLOAT;
-double DOUBLE;
-long double LONGDOUBLE;
-id    ID;
-
- at implementation Example
- - (double) RET_DOUBLE
-   {
-        return DOUBLE;
-   }
- - (float) RET_FLOAT
-   {
-        return FLOAT;
-   }
- - (long double) RET_LONGDOUBLE
-   {
-        return LONGDOUBLE;
-   }
- at end
-
-void *f0(id x) {
-   Example* pe;
-   double dd = [pe RET_DOUBLE];
-   dd = [pe RET_FLOAT];
-   dd = [pe RET_LONGDOUBLE];
-
-   [B im0];
-   [C im1];
-   [D alloc];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata_symbols.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata_symbols.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/metadata_symbols.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -fobjc-exceptions -o %t %s
-// RUN: FileCheck -check-prefix=CHECK-X86_64 < %t %s
-// RUN: FileCheck -check-prefix=CHECK-EHTYPE < %t %s
-
-// We need exactly 3 of these.
-// CHECK-EHTYPE: @"OBJC_EHTYPE_$_EH3"
-// CHECK-EHTYPE: @"OBJC_EHTYPE_$_EH3"
-// CHECK-EHTYPE: @"OBJC_EHTYPE_$_EH3"
-// CHECK-EHTYPE-NOT: @"OBJC_EHTYPE_$_EH3"
-
-// CHECK-X86_64: @"OBJC_CLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 8
-// CHECK-X86_64: @"OBJC_METACLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 8
-// CHECK-X86_64: @"\01L_OBJC_CLASS_NAME_" = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
-// CHECK-X86_64: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 8
-// CHECK-X86_64: @"OBJC_EHTYPE_$_EH2" = external global
-// CHECK-X86_64: @"OBJC_EHTYPE_$_EH3" = global {{.*}}, section "__DATA,__objc_const", align 8
-// CHECK-X86_64: @"\01L_OBJC_LABEL_CLASS_$" = internal global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
-// CHECK-X86_64: define internal void @"\01-[A im0]"
-// CHECK-X86_64: define internal void @"\01-[A(Cat) im1]"
-
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-exceptions -fvisibility hidden -emit-llvm -o %t %s
-// RUN: FileCheck -check-prefix=CHECK-X86_64-HIDDEN < %t %s
-
-// CHECK-X86_64-HIDDEN: @"OBJC_CLASS_$_A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
-// CHECK-X86_64-HIDDEN: @"OBJC_METACLASS_$_A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
-// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH1" = weak hidden global {{.*}}, section "__DATA,__datacoal_nt,coalesced"
-// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH2" = external global
-// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH3" = hidden global {{.*}}, section "__DATA,__objc_const", align 8
-// CHECK-X86_64-HIDDEN: define internal void @"\01-[A im0]"
-// CHECK-X86_64-HIDDEN: define internal void @"\01-[A(Cat) im1]"
-
-// RUN: %clang_cc1 -triple armv6-apple-darwin10 -target-abi apcs-gnu -fobjc-exceptions -emit-llvm -o %t %s
-// RUN: FileCheck -check-prefix=CHECK-ARMV6 < %t %s
-
-// CHECK-ARMV6: @"OBJC_CLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 4
-// CHECK-ARMV6: @"OBJC_METACLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 4
-// CHECK-ARMV6: @"\01L_OBJC_CLASS_NAME_" = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
-// CHECK-ARMV6: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 4
-// CHECK-ARMV6: @"OBJC_EHTYPE_$_EH2" = external global
-// CHECK-ARMV6: @"OBJC_EHTYPE_$_EH3" = global {{.*}}, section "__DATA,__objc_const", align 4
-// CHECK-ARMV6: @"\01L_OBJC_LABEL_CLASS_$" = internal global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 4
-// CHECK-ARMV6: define internal void @"\01-[A im0]"
-// CHECK-ARMV6: define internal void @"\01-[A(Cat) im1]"
-
- at interface A
- at end
-
- at implementation A
--(void) im0 {
-}
- at end
-
- at implementation A (Cat)
--(void) im1 {
-}
- at end
-
- at interface EH1
- at end
-
-__attribute__((__objc_exception__))
- at interface EH2
- at end
-
-__attribute__((__objc_exception__))
- at interface EH3
- at end
-
-void f1();
-
-void f0(id x) {
-  @try {
-    f1();
-  } @catch (EH1 *x) {
-  } @catch (EH2 *x) {
-  } @catch (EH3 *x) {
-  }
-}
-
- at implementation EH3
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/misc-atomic-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/misc-atomic-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/misc-atomic-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5  -emit-llvm -o - %s | FileCheck %s
-// rdar: //8808439
-
-typedef struct {
-#ifdef __LP64__
-	unsigned char b[15];
-#else
-	unsigned char b[7];
-#endif
-} bools_minus_one;
-
-typedef struct {
-#ifdef __LP64__
-	unsigned char b[16];
-#else
-	unsigned char b[8];
-#endif
-} bools;
-
-
- at interface Foo
-{
-#ifndef __LP64__
-       bools x;
-       bools_minus_one y;
-#endif
-}
- at property(assign) bools bools_p;
- at property(assign) bools_minus_one bools_minus_one_p;
- at end
-
- at implementation Foo
- at synthesize bools_p=x;
- at synthesize bools_minus_one_p=y;
- at end
-
-#ifdef __LP64__
-typedef __int128_t dword;
-#else
-typedef long long int dword;
-#endif
-
- at interface Test_dwords
-{
-#ifndef __LP64__
-       dword dw;
-#endif
-}
- at property(assign) dword dword_p;
- at end
-
- at implementation Test_dwords
- at synthesize dword_p=dw;
- at end
-
-
- at interface Test_floats
-{
-  float fl;
-  double d;
-  long double ld;
-}
- at property(assign) float fl_p;
- at property(assign) double  d_p;
- at property(assign) long double ld_p;
- at end
-
- at implementation Test_floats
- at synthesize fl_p = fl;
- at synthesize d_p = d;
- at synthesize ld_p = ld;
- at end
-
-// CHECK: call void @objc_copyStruct
-// CHECK: call void @objc_copyStruct
-// CHECK: call void @objc_copyStruct
-// CHECK: call void @objc_copyStruct
-// CHECK: call void @objc_copyStruct
-// CHECK: call void @objc_copyStruct

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/mrr-autorelease.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/mrr-autorelease.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/mrr-autorelease.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-// rdar://8881826
-// rdar://9423507
-
- at interface I
-{
-  id ivar;
-}
-- (id) Meth;
- at end
-
- at implementation I
-- (id) Meth {
-   @autoreleasepool {
-   }
-  return 0;
-}
- at end
-
-// CHECK-NOT: call i8* @objc_getClass
-// CHECK: call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK: call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/mrr-captured-block-var-inlined-layout.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/mrr-captured-block-var-inlined-layout.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/mrr-captured-block-var-inlined-layout.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-runtime-has-weak -triple x86_64-apple-darwin -O0 -print-ivar-layout -emit-llvm -o /dev/null %s > %t-64.layout
-// RUN: FileCheck --input-file=%t-64.layout %s
-// RUN: %clang_cc1 -fblocks -fobjc-runtime-has-weak -triple i386-apple-darwin -O0 -print-ivar-layout -emit-llvm -o /dev/null %s > %t-32.layout
-// RUN: FileCheck -check-prefix=CHECK-i386 --input-file=%t-32.layout %s
-// rdar://12184410
-// rdar://12184410
-
-void x(id y) {}
-void y(int a) {}
-
-extern id opaque_id();
-__weak id wid;
-
-void f() {
-    __block int byref_int = 0;
-    const id bar = (id) opaque_id();
-    id baz = 0;
-    __strong id strong_void_sta;
-    __block id byref_bab = (id)0;
-    __block id bl_var1;
-
-// block variable layout: BL_STRONG:1, BL_OPERATOR:0
-// CHECK: Inline instruction for block variable layout: 0x0100
-// CHECK-i386: Inline instruction for block variable layout: 0x0100
-    void (^b)() = ^{
-        x(bar);
-    };    
-
-// block variable layout: BL_STRONG:2, BL_BYREF:1, BL_OPERATOR:0
-// CHECK: Inline instruction for block variable layout: 0x0210
-// CHECK-i386: Inline instruction for block variable layout: 0x0210
-    void (^c)() = ^{
-        x(bar);
-        x(baz);
-        byref_int = 1;
-    };    
-
-// block variable layout: BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:0
-// CHECK: Inline instruction for block variable layout: 0x0230
-// CHECK-i386: Inline instruction for block variable layout: 0x0230
-    void (^d)() = ^{
-        x(bar);
-        x(baz);
-        byref_int = 1;
-        bl_var1 = 0;
-        byref_bab = 0;
-    };
-
-// block variable layout: BL_STRONG:2, BL_BYREF:3, BL_OPERATOR:0
-// CHECK: Inline instruction for block variable layout: 0x0230
-// CHECK-i386: Inline instruction for block variable layout: 0x0230
-    id (^e)() = ^{
-        x(bar);
-        x(baz);
-        byref_int = 1;
-        bl_var1 = 0;
-        byref_bab = 0;
-        return wid;
-    };
-
-// CHECK: Inline instruction for block variable layout: 0x020
-// CHECK-i386: Inline instruction for block variable layout: 0x020
-    void (^ii)() = ^{
-       byref_int = 1;
-       byref_bab = 0;
-    };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/nested-rethrow.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/nested-rethrow.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/nested-rethrow.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fobjc-exceptions %s -o - | FileCheck %s
-
-
-extern int printf(const char*, ...);
-
-int main()
-{
-    @try {
-        @throw @"foo";
-    } @catch (id e) {
-        @try {
-// CHECK: call void @objc_exception_throw
-           @throw;
-        } @catch (id e) {
-            if (e) {
-                printf("caught \n");
-            } else {
-                printf("caught (WRONG)\n");
-            }
-        } @catch (...) {
-            printf("caught nothing (WRONG)\n");
-        }
-    }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/newproperty-nested-synthesis-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/newproperty-nested-synthesis-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/newproperty-nested-synthesis-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// REQUIRES: LP64
-
- at interface Object
-- (id) new;
- at end
-
- at interface Tester : Object
- at property char PropertyAtomic_char;
- at property short PropertyAtomic_short;
- at property int PropertyAtomic_int;
- at property long PropertyAtomic_long;
- at property long long PropertyAtomic_longlong;
- at property float PropertyAtomic_float;
- at property double PropertyAtomic_double;
- at property(assign) id PropertyAtomic_id;
- at property(retain) id PropertyAtomicRetained_id;
- at property(copy) id PropertyAtomicRetainedCopied_id;
- at property(retain) id PropertyAtomicRetainedGCOnly_id;
- at property(copy) id PropertyAtomicRetainedCopiedGCOnly_id;
- at end
-
- at implementation Tester
- at dynamic PropertyAtomic_char;
- at dynamic PropertyAtomic_short;
- at dynamic PropertyAtomic_int;
- at dynamic PropertyAtomic_long;
- at dynamic PropertyAtomic_longlong;
- at dynamic PropertyAtomic_float;
- at dynamic PropertyAtomic_double;
- at dynamic PropertyAtomic_id;
- at dynamic PropertyAtomicRetained_id;
- at dynamic PropertyAtomicRetainedCopied_id;
- at dynamic PropertyAtomicRetainedGCOnly_id;
- at dynamic PropertyAtomicRetainedCopiedGCOnly_id;
- at end
-
- at interface SubClass : Tester
-{
-    char PropertyAtomic_char;
-    short PropertyAtomic_short;
-    int PropertyAtomic_int;
-    long PropertyAtomic_long;
-    long long PropertyAtomic_longlong;
-    float PropertyAtomic_float;
-    double PropertyAtomic_double;
-    id PropertyAtomic_id;
-    id PropertyAtomicRetained_id;
-    id PropertyAtomicRetainedCopied_id;
-    id PropertyAtomicRetainedGCOnly_id;
-    id PropertyAtomicRetainedCopiedGCOnly_id;
-}
- at end
-
- at implementation SubClass
- at synthesize PropertyAtomic_char;
- at synthesize PropertyAtomic_short;
- at synthesize PropertyAtomic_int;
- at synthesize PropertyAtomic_long;
- at synthesize PropertyAtomic_longlong;
- at synthesize PropertyAtomic_float;
- at synthesize PropertyAtomic_double;
- at synthesize PropertyAtomic_id;
- at synthesize PropertyAtomicRetained_id;
- at synthesize PropertyAtomicRetainedCopied_id;
- at synthesize PropertyAtomicRetainedGCOnly_id;
- at synthesize PropertyAtomicRetainedCopiedGCOnly_id;
- at end
-
-int main()
-{
-    SubClass *f = [SubClass new];
-    f.PropertyAtomic_int = 1;
-
-    f.PropertyAtomic_int += 3;
-
-    f.PropertyAtomic_int -= 4;
-    return f.PropertyAtomic_int;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/next-objc-dispatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/next-objc-dispatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/next-objc-dispatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s \
-// RUN:   -fobjc-dispatch-method=legacy | \
-// RUN:   FileCheck -check-prefix CHECK-FRAGILE_LEGACY %s
-//
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o - %s    \
-// RUN:   -fobjc-dispatch-method=legacy | \
-// RUN:   FileCheck -check-prefix CHECK-NONFRAGILE_LEGACY %s
-//
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o - %s    \
-// RUN:   -fobjc-dispatch-method=non-legacy | \
-// RUN:   FileCheck -check-prefix CHECK-NONFRAGILE_NONLEGACY %s
-//
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-llvm -o - %s    \
-// RUN:   -fobjc-dispatch-method=mixed | \
-// RUN:   FileCheck -check-prefix CHECK-NONFRAGILE_MIXED %s
-//
-// <rdar://problem/7866951>
-
-// There are basically four ways that we end up doing message dispatch for the
-// NeXT runtime. They are:
-//  (1) fragile ABI, legacy dispatch
-//  (2) non-fragile ABI, legacy dispatch
-//  (2) non-fragile ABI, non-legacy dispatch
-//  (2) non-fragile ABI, mixed dispatch
-//
-// Note that fragile ABI and non-fragile ABI legacy dispatch are not the same,
-// they use some different API calls (objc_msgSendSuper vs objc_msgSendSuper2).
-
-// CHECK-FRAGILE_LEGACY: ModuleID
-// CHECK-FRAGILE_LEGACY-NOT: declare i8* @objc_msgSendSuper2_fixup(
-// CHECK-FRAGILE_LEGACY-NOT: declare i8* @objc_msgSend_fixup(
-// CHECK-FRAGILE_LEGACY: declare i8* @objc_msgSendSuper(
-// CHECK-FRAGILE_LEGACY: declare i8* @objc_msgSend(
-
-// CHECK-NONFRAGILE_LEGACY: ModuleID
-// CHECK-NONFRAGILE_LEGACY-NOT: declare i8* @objc_msgSendSuper2_fixup(
-// CHECK-NONFRAGILE_LEGACY-NOT: declare i8* @objc_msgSend_fixup(
-// CHECK-NONFRAGILE_LEGACY: declare i8* @objc_msgSendSuper2(
-// CHECK-NONFRAGILE_LEGACY: declare i8* @objc_msgSend(
-
-// CHECK-NONFRAGILE_NONLEGACY: ModuleID
-// CHECK-NONFRAGILE_NONLEGACY: declare i8* @objc_msgSendSuper2_fixup(
-// CHECK-NONFRAGILE_NONLEGACY: declare i8* @objc_msgSend_fixup(
-
-// CHECK-NONFRAGILE_MIXED: declare i8* @objc_msgSendSuper2_fixup(
-// CHECK-NONFRAGILE_MIXED: declare i8* @objc_msgSendSuper2(
-// CHECK-NONFRAGILE_MIXED: declare i8* @objc_msgSend_fixup(
-// CHECK-NONFRAGILE_MIXED: declare i8* @objc_msgSend(
-
- at interface NSObject
-+ (id)alloc;
-- (id)init;
- at end
-
- at interface I0 : NSObject
--(void) im0;
- at end
-
- at implementation I0
-+(id) alloc {
-  return [super alloc];
-}
--(id) init {
- [super init];
- return self;
-}
--(void) im0 {}
- at end
-
-void f0(I0 *a) {
-  [I0 alloc];
-  [a im0];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/no-category-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/no-category-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/no-category-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-
- at interface NSObject
- at end
-
- at implementation NSObject(IBXLIFFIntegration)
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/no-vararg-messaging.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/no-vararg-messaging.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/no-vararg-messaging.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -S -o - %s | FileCheck %s
-// rdar://9048030
-
- at interface Foo
-+(id)alloc;
--(id)init;
--(id)self;
--(id)retain;
--(void)release;
--(id)autorelease;
- at end
-
-void test(void)
-{
-	[[[[[[Foo alloc] init] retain] autorelease] self] release];
-}
-
-// CHECK-NOT: xorb

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/non-lazy-classes.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/non-lazy-classes.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/non-lazy-classes.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
-// RUN: grep '@".01L_OBJC_LABEL_NONLAZY_CLASS_$" = internal global \[1 x .*\] .*@"OBJC_CLASS_$_A".*, section "__DATA, __objc_nlclslist, regular, no_dead_strip", align 8' %t
-// RUN: grep '@".01L_OBJC_LABEL_NONLAZY_CATEGORY_$" = internal global \[1 x .*\] .*@".01l_OBJC_$_CATEGORY_A_$_Cat".*, section "__DATA, __objc_nlcatlist, regular, no_dead_strip", align 8' %t
-
- at interface A @end
- at implementation A
-+(void) load {
-}
- at end
-
- at interface A (Cat) @end
- at implementation A (Cat)
-+(void) load {
-}
- at end
-
- at interface B @end
- at implementation B
--(void) load {
-}
- at end
-
- at interface B (Cat) @end
- at implementation B (Cat)
--(void) load {
-}
- at end
-
- at interface C : A @end
- at implementation C
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/nonlazy-msgSend.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/nonlazy-msgSend.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/nonlazy-msgSend.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]
-void f0(id x) {
-  [x foo];
-}
-
-// CHECK: attributes [[NLB]] = { nonlazybind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ns-constant-strings.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ns-constant-strings.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ns-constant-strings.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fno-constant-cfstrings -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix CHECK-FRAGILE < %t %s
-
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fno-constant-cfstrings -emit-llvm -o %t %s
-// RUN: FileCheck --check-prefix CHECK-NONFRAGILE < %t %s
-
- at interface NSString @end
-
- at interface NSSimpleCString : NSString {
- at protected
-    char *bytes;
-    unsigned int numBytes;
-}
- at end
-    
- at interface NSConstantString : NSSimpleCString
- at end
-
-#if OBJC_API_VERSION >= 2
-extern Class _NSConstantStringClassReference;
-#else
-extern struct objc_class _NSConstantStringClassReference;
-#endif
-
-const NSConstantString *appKey =  @"MyApp";
-
-int main() {
-  const NSConstantString *appKey =  @"MyApp";
-  const NSConstantString *appKey1 =  @"MyApp1";
-}
-
-// CHECK-FRAGILE: @_NSConstantStringClassReference = external global
-// CHECK-NONFRAGILE: @"OBJC_CLASS_$_NSConstantString" = external global
-
-// CHECK-FRAGILE: @.str = private unnamed_addr constant [6 x i8] c"MyApp\00"
-// CHECK-FRAGILE: @.str1 = private unnamed_addr constant [7 x i8] c"MyApp1\00"
-
-// CHECK-NONFRAGILE: @.str = private unnamed_addr constant [6 x i8] c"MyApp\00"
-// CHECK-NONFRAGILE: @.str1 = private unnamed_addr constant [7 x i8] c"MyApp1\00"

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ns_consume_null_check.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ns_consume_null_check.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/ns_consume_null_check.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fobjc-dispatch-method=mixed -fobjc-runtime-has-weak -fexceptions -o - %s | FileCheck %s
-
- at interface NSObject
-- (id) new;
- at end
-
- at interface MyObject : NSObject
-- (char)isEqual:(id) __attribute__((ns_consumed)) object;
-- (_Complex float) asComplexWithArg: (id) __attribute__((ns_consumed)) object;
- at end
-
-MyObject *x;
-
-// rdar://10444476
-void test0(void) {
-  id obj = [NSObject new];
-  [x isEqual : obj];
-}
-// CHECK:     define void @test0()
-// CHECK:       [[FIVE:%.*]] = call i8* @objc_retain
-// CHECK-NEXT:  [[SIX:%.*]] = bitcast
-// CHECK-NEXT:  [[SEVEN:%.*]]  = icmp eq i8* [[SIX]], null
-// CHECK-NEXT:  br i1 [[SEVEN]], label [[NULLINIT:%.*]], label [[CALL_LABEL:%.*]]
-// CHECK:       [[FN:%.*]] = load i8** getelementptr inbounds
-// CHECK-NEXT:  [[EIGHT:%.*]] = bitcast i8* [[FN]]
-// CHECK-NEXT:  [[CALL:%.*]] = call signext i8 [[EIGHT]]
-// CHECK-NEXT:  br label [[CONT:%.*]]
-// CHECK:       call void @objc_release(i8* [[FIVE]]) [[NUW:#[0-9]+]]
-// CHECK-NEXT:  br label [[CONT]]
-// CHECK:       phi i8 [ [[CALL]], {{%.*}} ], [ 0, {{%.*}} ]
-
-// Ensure that we build PHIs correctly in the presence of cleanups.
-// rdar://12046763
-void test1(void) {
-  id obj = [NSObject new];
-  __weak id weakObj = obj;
-  _Complex float result = [x asComplexWithArg: obj];
-}
-// CHECK:    define void @test1()
-// CHECK:      [[OBJ:%.*]] = alloca i8*, align 8
-// CHECK-NEXT: [[WEAKOBJ:%.*]] = alloca i8*, align 8
-// CHECK-NEXT: [[RESULT:%.*]] = alloca { float, float }, align 4
-//   Various initializations.
-// CHECK:      [[T0:%.*]] = call i8* bitcast (
-// CHECK-NEXT: store i8* [[T0]], i8** [[OBJ]]
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[OBJ]]
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[WEAKOBJ]], i8* [[T0]]) [[NUW]]
-//   Okay, start the message-send.
-// CHECK-NEXT: [[T0:%.*]] = load [[MYOBJECT:%.*]]** @x
-// CHECK-NEXT: [[ARG:%.*]] = load i8** [[OBJ]]
-// CHECK-NEXT: [[ARG_RETAINED:%.*]] = call i8* @objc_retain(i8* [[ARG]])
-// CHECK-NEXT: load i8** @
-// CHECK-NEXT: [[SELF:%.*]] = bitcast [[MYOBJECT]]* [[T0]] to i8*
-//   Null check.
-// CHECK-NEXT: [[T0:%.*]] = icmp eq i8* [[SELF]], null
-// CHECK-NEXT: br i1 [[T0]], label [[FORNULL:%.*]], label [[FORCALL:%.*]]
-//   Invoke and produce the return values.
-// CHECK:      [[CALL:%.*]] = invoke <2 x float> bitcast
-// CHECK-NEXT:   to label [[INVOKE_CONT:%.*]] unwind label {{%.*}}
-// CHECK:      [[T0:%.*]] = bitcast { float, float }* [[COERCE:%.*]] to <2 x float>*
-// CHECK-NEXT: store <2 x float> [[CALL]], <2 x float>* [[T0]],
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds { float, float }* [[COERCE]], i32 0, i32 0
-// CHECK-NEXT: [[REALCALL:%.*]] = load float* [[T0]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds { float, float }* [[COERCE]], i32 0, i32 1
-// CHECK-NEXT: [[IMAGCALL:%.*]] = load float* [[T0]]
-// CHECK-NEXT: br label [[CONT:%.*]]{{$}}
-//   Null path.
-// CHECK:      call void @objc_release(i8* [[ARG_RETAINED]]) [[NUW]]
-// CHECK-NEXT: br label [[CONT]]
-//   Join point.
-// CHECK:      [[REAL:%.*]] = phi float [ [[REALCALL]], [[INVOKE_CONT]] ], [ 0.000000e+00, [[FORNULL]] ]
-// CHECK-NEXT: [[IMAG:%.*]] = phi float [ [[IMAGCALL]], [[INVOKE_CONT]] ], [ 0.000000e+00, [[FORNULL]] ]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds { float, float }* [[RESULT]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds { float, float }* [[RESULT]], i32 0, i32 1
-// CHECK-NEXT: store float [[REAL]], float* [[T0]]
-// CHECK-NEXT: store float [[IMAG]], float* [[T1]]
-//   Epilogue.
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[WEAKOBJ]]) [[NUW]]
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[OBJ]], i8* null) [[NUW]]
-// CHECK-NEXT: ret void
-//   Cleanup.
-// CHECK:      landingpad
-// CHECK:      call void @objc_destroyWeak(i8** [[WEAKOBJ]]) [[NUW]]
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-align.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-align.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-align.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// 32-bit
-
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-// CHECK: @"\01L_OBJC_METACLASS_A" = internal global {{.*}}, section "__OBJC,__meta_class,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CLASS_A" = internal global {{.*}}, section "__OBJC,__class,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CATEGORY_A_Cat" = internal global {{.*}}, section "__OBJC,__category,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_PROTOCOL_P" = internal global {{.*}}, section "__OBJC,__protocol,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CLASS_PROTOCOLS_C" = internal global {{.*}}, section "__OBJC,__cat_cls_meth,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_METACLASS_C" = internal global {{.*}}, section "__OBJC,__meta_class,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_CLASS_C" = internal global {{.*}}, section "__OBJC,__class,regular,no_dead_strip", align 4
-// CHECK: @"\01L_OBJC_MODULES" = internal global {{.*}}, section "__OBJC,__module_info,regular,no_dead_strip", align 4
-
-// 64-bit
-
-// RUNX: %clang_cc1 -triple i386-apple-darwin9 -emit-llvm -o %t %s &&
-// RUNX: grep '@"OBJC_CLASS_$_A" = global' %t &&
-// RUNX: grep '@"OBJC_CLASS_$_C" = global' %t &&
-// RUNX: grep '@"OBJC_METACLASS_$_A" = global' %t &&
-// RUNX: grep '@"OBJC_METACLASS_$_C" = global' %t &&
-// RUNX: grep '@"\\01L_OBJC_CLASSLIST_REFERENCES_$_0" = internal global .*, section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8' %t &&
-// RUNX: grep '@"\\01L_OBJC_LABEL_CATEGORY_$" = internal global .*, section "__DATA, __objc_catlist, regular, no_dead_strip", align 8' %t &&
-// RUNX: grep '@"\\01L_OBJC_LABEL_CLASS_$" = internal global .*, section "__DATA, __objc_classlist, regular, no_dead_strip", align 8' %t &&
-// RUNX: grep '@"\\01l_OBJC_$_CATEGORY_A_$_Cat" = internal global .*, section "__DATA, __objc_const", align 8' %t &&
-// RUNX: grep '@"\\01l_OBJC_CLASS_PROTOCOLS_$_C" = internal global .*, section "__DATA, __objc_const", align 8' %t &&
-// RUNX: grep '@"\\01l_OBJC_CLASS_RO_$_A" = internal global .*, section "__DATA, __objc_const", align 8' %t &&
-// RUNX: grep '@"\\01l_OBJC_CLASS_RO_$_C" = internal global .*, section "__DATA, __objc_const", align 8' %t &&
-// RUNX: grep '@"\\01l_OBJC_LABEL_PROTOCOL_$_P" = weak hidden global .*, section "__DATA, __objc_protolist, coalesced, no_dead_strip", align 8' %t &&
-// RUNX: grep '@"\\01l_OBJC_METACLASS_RO_$_A" = internal global .*, section "__DATA, __objc_const", align 8' %t &&
-// RUNX: grep '@"\\01l_OBJC_METACLASS_RO_$_C" = internal global .*, section "__DATA, __objc_const", align 8' %t &&
-// RUNX: grep '@"\\01l_OBJC_PROTOCOL_$_P" = weak hidden global .*, section "__DATA,__datacoal_nt,coalesced", align 8' %t &&
-
-
- at interface A @end
- at implementation A
- at end
- at implementation A (Cat)
- at end
- at protocol P
- at end
- at interface C <P>
- at end
- at implementation C
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-arc-container-subscripting.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-arc-container-subscripting.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-arc-container-subscripting.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -emit-llvm -triple x86_64-apple-darwin -o - %s | FileCheck %s
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(int)index;
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
-id func() {
-  NSMutableArray *array;
-  array[3] = 0;
-  return array[3];
-}
-
-// CHECK: [[call:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK: [[SIX:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[call]]) [[NUW:#[0-9]+]]
-// CHECK: [[ARRAY_CASTED:%.*]] = bitcast %0** {{%.*}} to i8**
-// CHECK: call void @objc_storeStrong(i8** [[ARRAY_CASTED]], i8* null)
-// CHECK: [[EIGHT:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[SIX]]) [[NUW]]
-// CHECK: ret i8* [[EIGHT]]
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-assign-ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-assign-ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-assign-ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -F '@objc_assign_ivar' %t  | count 14
-
-typedef struct {
-  id  element;
-  id elementArray[10];
-  __strong id cfElement;
-  __strong id cfElementArray[10];
-} struct_with_ids_t;
-
-
- at interface NSString @end
-
- at interface Foo  {
- at public
-// assignments to any/all of these fields should generate objc_assign_ivar
-  __strong id dict;
-  __strong id dictArray[3];
-  id ivar;
-  id array[10];
-  id nsobject;
-  NSString *stringArray[10];
-  struct_with_ids_t inner;
-
-  Foo *obj[20];
-  short idx[5];
-}
- at end
-
-// The test cases
-int IvarAssigns;
-void *rhs = 0;
-#define ASSIGNTEST(expr, global) expr = rhs
-
-void testIvars() {
-  Foo *foo;
-  ASSIGNTEST(foo->ivar, IvarAssigns);                                   // objc_assign_ivar
-  ASSIGNTEST(foo->dict, IvarAssigns);                                   // objc_assign_ivar
-  ASSIGNTEST(foo->dictArray[0], IvarAssigns);                           // objc_assign_ivar
-  ASSIGNTEST(foo->array[0], IvarAssigns);                               // objc_assign_ivar
-  ASSIGNTEST(foo->nsobject, IvarAssigns);                               // objc_assign_ivar
-  ASSIGNTEST(foo->stringArray[0], IvarAssigns);                         // objc_assign_ivar
-  ASSIGNTEST(foo->inner.element, IvarAssigns);                          // objc_assign_ivar
-  ASSIGNTEST(foo->inner.elementArray[0], IvarAssigns);                  // objc_assign_ivar
-  ASSIGNTEST(foo->inner.cfElement, IvarAssigns);                        // objc_assign_ivar
-  ASSIGNTEST(foo->inner.cfElementArray[0], IvarAssigns);                // objc_assign_ivar
-  int counter=1;
-  ASSIGNTEST(foo->obj[5], IvarAssigns);                 // objc_assign_ivar
-  ASSIGNTEST(foo->obj[++counter], IvarAssigns);         // objc_assign_ivar
-  foo->idx[++counter] = 15;
-  ASSIGNTEST(foo->obj[foo->idx[2]], IvarAssigns);       // objc_assign_ivar
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-container-subscripting-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-container-subscripting-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-container-subscripting-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin -o - %s | FileCheck %s
-
-typedef unsigned int size_t;
- at protocol P @end
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(size_t)index;
-- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
- at end
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id)key;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
-int main() {
-  NSMutableArray *array;
-  id val;
-
-  id oldObject = array[10];
-// CHECK: [[ARR:%.*]] = load {{%.*}} [[array:%.*]], align 8
-// CHECK-NEXT: [[SEL:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_"
-// CHECK-NEXT: [[ARRC:%.*]] = bitcast {{%.*}} [[ARR]] to i8*
-// CHECK-NEXT: [[CALL:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i32)*)(i8* [[ARRC]], i8* [[SEL]], i32 10)
-// CHECK-NEXT: store i8* [[CALL]], i8** [[OLDOBJ:%.*]], align 8
-
-  val = (array[10] = oldObject);
-// CHECK: [[THREE:%.*]] = load {{%.*}} [[array:%.*]], align 8
-// CHECK-NEXT: [[FOUR:%.*]] = load i8** [[oldObject:%.*]], align 8
-// CHECK-NEXT: [[FIVE:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_2"
-// CHECK-NEXT: [[SIX:%.*]] = bitcast {{%.*}} [[THREE]] to i8*
-// CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i8*, i32)*)(i8* [[SIX]], i8* [[FIVE]], i8* [[FOUR]], i32 10)
-// CHECK-NEXT: store i8* [[FOUR]], i8** [[val:%.*]]
-
-  NSMutableDictionary *dictionary;
-  id key;
-  id newObject;
-  oldObject = dictionary[key];
-// CHECK:  [[SEVEN:%.*]] = load {{%.*}} [[DICTIONARY:%.*]], align 8
-// CHECK-NEXT:  [[EIGHT:%.*]] = load i8** [[KEY:%.*]], align 8
-// CHECK-NEXT:  [[TEN:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_4"
-// CHECK-NEXT:  [[ELEVEN:%.*]] = bitcast {{%.*}} [[SEVEN]] to i8*
-// CHECK-NEXT:  [[CALL1:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i8*)*)(i8* [[ELEVEN]], i8* [[TEN]], i8* [[EIGHT]])
-// CHECK-NEXT:  store i8* [[CALL1]], i8** [[oldObject:%.*]], align 8
-
-
-  val = (dictionary[key] = newObject);
-// CHECK: [[TWELVE:%.*]] = load {{%.*}} [[DICTIONARY]], align 8
-// CHECK-NEXT:  [[THIRTEEN:%.*]] = load i8** [[KEY]], align 8
-// CHECK-NEXT:  [[FOURTEEN:%.*]] = load i8** [[NEWOBJECT:%.*]], align 8
-// CHECK-NEXT:  [[SIXTEEN:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_6"
-// CHECK-NEXT:  [[SEVENTEEN:%.*]] = bitcast {{%.*}} [[TWELVE]] to i8*
-// CHECK-NEXT:  call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i8*, i8*)*)(i8* [[SEVENTEEN]], i8* [[SIXTEEN]], i8* [[FOURTEEN]], i8* [[THIRTEEN]])
-// CHECK-NEXT: store i8* [[FOURTEEN]], i8** [[val:%.*]]
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-container-subscripting.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-container-subscripting.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-container-subscripting.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin %s -o /dev/null
-
-typedef unsigned int size_t;
- at protocol P @end
-
- at interface NSMutableArray
-#if __has_feature(objc_subscripting)
-- (id)objectAtIndexedSubscript:(size_t)index;
-- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
-#endif
- at end
-
-#if __has_feature(objc_subscripting)
- at interface XNSMutableArray
-- (id)objectAtIndexedSubscript:(size_t)index;
-- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
-#endif
- at end
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id)key;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at class NSString;
-
-int main() {
-  NSMutableArray<P> * array;
-  id oldObject = array[10];
- 
-  array[10] = oldObject;
-
-  id unknown_array;
-  oldObject = unknown_array[1];
-
-  unknown_array[1] = oldObject;
-
-  NSMutableDictionary *dictionary;
-  NSString *key;
-  id newObject;
-  oldObject = dictionary[key];
-  dictionary[key] = newObject;	// replace oldObject with newObject
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-dictionary-literal.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-dictionary-literal.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-dictionary-literal.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -triple x86_64-apple-darwin10 -fblocks -emit-llvm %s -o /dev/null
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fblocks -emit-llvm %s -o /dev/null
-// rdar://10614657
-
- at interface NSNumber
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
- at protocol NSCopying @end
-typedef unsigned long NSUInteger;
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id <NSCopying> [])keys count:(NSUInteger)cnt;
- at end
-
- at interface NSString<NSCopying>
- at end
-
-int main() {
-	NSDictionary *dict = @{ @"name":@666 };
-	NSDictionary *dict1 = @{ @"name":@666 };
-	NSDictionary *dict2 = @{ @"name":@666 };
-	return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-fixed-enum.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-fixed-enum.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-fixed-enum.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -g -emit-llvm -o - %s | FileCheck %s
-// The DWARF standard says the underlying data type of an enum may be
-// stored in an DW_AT_type entry in the enum DIE. This is useful to have
-// so the debugger knows about the signedness of the underlying type.
-
-typedef long NSInteger;
-#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
-
-// Enum with no specified underlying type
-typedef enum {
-  Enum0One,
-  Enum0Two
-} Enum0;
-
-// Enum declared with the NS_ENUM macro
-typedef NS_ENUM(NSInteger, Enum1) {
-  Enum1One = -1,
-  Enum1Two
-};
-
-// Enum declared with a fixed underlying type
-typedef enum : NSInteger {
-  Enum2One = -1,
-  Enum2Two
-} Enum2;
-
-// Typedef and declaration separately
-enum : NSInteger
-{
-  Enum3One = -1,
-  Enum3Two
-};
-typedef NSInteger Enum3;
-
-int main() {
-  Enum0 e0 = Enum0One;
-  // CHECK: call void @llvm.dbg.declare(metadata !{{.*}}, metadata ![[ENUM0:[0-9]+]])
-  Enum1 e1 = Enum1One;
-  // CHECK: call void @llvm.dbg.declare(metadata !{{.*}}, metadata ![[ENUM1:[0-9]+]])
-  Enum2 e2 = Enum2One;
-  // CHECK: call void @llvm.dbg.declare(metadata !{{.*}}, metadata ![[ENUM2:[0-9]+]])
-  Enum3 e3 = Enum3One;
-  // CHECK: call void @llvm.dbg.declare(metadata !{{.*}}, metadata ![[ENUM3:[0-9]+]])
-
-  // -Werror and the following line ensures that these enums are not
-  // -treated as C++11 strongly typed enums.
-  return e0 != e1 && e1 == e2 && e2 == e3;
-}
-// CHECK: ![[ENUMERATOR0:[0-9]+]] = {{.*}}; [ DW_TAG_enumeration_type ] [line 10
-// CHECK: ![[ENUMERATOR1:[0-9]+]] = {{.*}}; [ DW_TAG_enumeration_type ] [Enum1] [line 16{{.*}}] [from NSInteger]
-// CHECK: ![[ENUMERATOR3:[0-9]+]] = {{.*}}; [ DW_TAG_typedef ] [NSInteger] [line 6{{.*}}] [from long int]
-// CHECK: ![[ENUMERATOR2:[0-9]+]] = {{.*}}; [ DW_TAG_enumeration_type ] [line 22{{.*}}] [from NSInteger]
-
-// CHECK: ![[ENUM0]] = metadata !{{{.*}}!"e0", metadata !{{[0-9]+}}, i32 {{[0-9]+}}, metadata ![[TYPE0:[0-9]+]]
-// CHECK: ![[TYPE0]] = metadata !{{{.*}}!"Enum0", {{.*}} metadata ![[ENUMERATOR0]]} ; [ DW_TAG_typedef ] [Enum0]
-
-// CHECK: ![[ENUM1]] = metadata !{{{.*}}!"e1", metadata !{{[0-9]+}}, i32 {{[0-9]+}}, metadata ![[TYPE1:[0-9]+]]
-// CHECK: ![[TYPE1]] = metadata !{{{.*}}!"Enum1", {{.*}} metadata ![[ENUMERATOR1]]} ; [ DW_TAG_typedef ] [Enum1]
-
-// CHECK: ![[ENUM2]] = metadata !{{{.*}}!"e2", metadata !{{[0-9]+}}, i32 {{[0-9]+}}, metadata ![[TYPE2:[0-9]+]]
-// CHECK: ![[TYPE2]] = metadata !{{{.*}}!"Enum2", {{.*}} metadata ![[ENUMERATOR2]]} ; [ DW_TAG_typedef ] [Enum2]
-
-// CHECK: ![[ENUM3]] = metadata !{{{.*}}!"e3", metadata !{{[0-9]+}}, i32 {{[0-9]+}}, metadata ![[TYPE3:[0-9]+]]
-// CHECK: ![[TYPE3]] = metadata !{{{.*}}!"Enum3", {{.*}} metadata ![[ENUMERATOR3]]} ; [ DW_TAG_typedef ] [Enum3]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-gc-aggr-assign.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-gc-aggr-assign.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-gc-aggr-assign.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o - %s | FileCheck -check-prefix C %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o - %s | FileCheck -check-prefix CP %s
-
-static int count;
-
-typedef struct S {
-   int ii;
-} SS;
-
-struct type_s {
-   SS may_recurse;
-   id id_val;
-};
-
- at interface NamedObject
-{
-  struct type_s type_s_ivar;
-}
-- (void) setSome : (struct type_s) arg;
-- (struct type_s) getSome;
- at property(assign) struct type_s aggre_prop;
- at end
-
- at implementation NamedObject 
-- (void) setSome : (struct type_s) arg
-  {
-     type_s_ivar = arg;
-  }
-- (struct type_s) getSome 
-  {
-    return type_s_ivar;
-  }
- at synthesize aggre_prop = type_s_ivar;
- at end
-
-struct type_s some = {{1234}, (id)0};
-
-struct type_s get(void)
-{
-  return some;
-}
-
-void f(const struct type_s *in, struct type_s *out) {
-  *out = *in;
-}
-
-#ifdef __cplusplus
-struct Derived : type_s { };
-
-void foo(Derived* src, Derived* dest) {
-        *dest = *src;
-}
-#endif
-
-// CHECK-C: call i8* @objc_memmove_collectable
-// CHECK-C: call i8* @objc_memmove_collectable
-// CHECK-C: call i8* @objc_memmove_collectable
-
-// CHECK-CP: call i8* @objc_memmove_collectable
-// CHECK-CP: call i8* @objc_memmove_collectable
-// CHECK-CP: call i8* @objc_memmove_collectable
-// CHECK-CP: call i8* @objc_memmove_collectable

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-literal-debugger-test.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-literal-debugger-test.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-literal-debugger-test.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fdebugger-objc-literal -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fdebugger-objc-literal -emit-llvm -o - %s -DINCLUDE_INTERFACES=1 | FileCheck %s
-
-// We need two different RUN lines here because the first time a class/method is absent,
-// it will be added for -fdebugger-objc-literal.
-
-#ifdef INCLUDE_INTERFACES
- at interface NSObject
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSArray : NSObject
- at end
-
- at interface NSDictionary : NSObject
- at end
-
- at interface NSString : NSObject
- at end
-#endif
-
-int main() {
-  // object literals.
-  id l;
-  l = @'a';
-  l = @42;
-  l = @-42;
-  l = @42u;
-  l = @3.141592654f;
-  l = @__objc_yes;
-  l = @__objc_no;
-  l = @{ @"name":@666 };
-  l = @[ @"foo", @"bar" ];
-
-#if __has_feature(objc_boxed_expressions)
-  // boxed expressions.
-  id b;
-  b = @('a');
-  b = @(42);
-  b = @(-42);
-  b = @(42u);
-  b = @(3.141592654f);
-  b = @(__objc_yes);
-  b = @(__objc_no);
-  b = @("hello");
-#else
-#error "boxed expressions not supported"
-#endif
-}
-
-// CHECK: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]
-
-// CHECK: attributes [[NLB]] = { nonlazybind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-literal-tests.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-literal-tests.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-literal-tests.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -triple x86_64-apple-darwin10 -fblocks -emit-llvm %s -o - | FileCheck %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fblocks -emit-llvm %s -o - | FileCheck %s
-// rdar://10111397
-
-#if __has_feature(objc_bool)
-#define YES __objc_yes
-#define NO __objc_no
-#else
-#define YES             ((BOOL)1)
-#define NO              ((BOOL)0)
-#endif
-
-#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
-typedef unsigned long NSUInteger;
-typedef long NSInteger;
-#else
-typedef unsigned int NSUInteger;
-typedef int NSInteger;
-#endif
-typedef signed char BOOL;
-
- at interface NSNumber @end
-
- at interface NSNumber (NSNumberCreation)
-#if __has_feature(objc_array_literals)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value ;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value ;
-#endif
- at end
-
- at interface NSDate
-+ (NSDate *) date;
- at end
-
-#if __has_feature(objc_dictionary_literals)
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(NSUInteger)cnt;
- at end
-#endif
-
-id NSUserName();
-
-// CHECK: define i32 @main() [[NUW:#[0-9]+]]
-int main() {
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 signext 97
-  NSNumber *aNumber = @'a';
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i32 42
-  NSNumber *fortyTwo = @42;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i32 -42
-  NSNumber *negativeFortyTwo = @-42;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i32 42
-  NSNumber *positiveFortyTwo = @+42;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i32 42
-  NSNumber *fortyTwoUnsigned = @42u;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i64 42
-  NSNumber *fortyTwoLong = @42l;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i64 42
-  NSNumber *fortyTwoLongLong = @42ll;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}float 0x400921FB60000000
-  NSNumber *piFloat = @3.141592654f;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}double 0x400921FB54411744
-  NSNumber *piDouble = @3.1415926535;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 signext 1
-  NSNumber *yesNumber = @__objc_yes;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 signext 0
-  NSNumber *noNumber = @__objc_no;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 signext 1
-  NSNumber *yesNumber1 = @YES;
-  // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 signext 0
-  NSNumber *noNumber1 = @NO;
-NSDictionary *dictionary = @{@"name" : NSUserName(), 
-                             @"date" : [NSDate date] }; 
-  return __objc_yes == __objc_no;
-}
-
-// rdar://10579122
-typedef BOOL (^foo)(void);
-extern void bar(foo a);
-
-void baz(void) {
-  bar(^(void) { return YES; });
-}
-
-// CHECK: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-read-weak-byref.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-read-weak-byref.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc-read-weak-byref.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -fblocks -fobjc-gc -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -fblocks -fobjc-gc -triple i386-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
- at interface NSObject 
-- copy;
- at end
-
-int main() {
-    NSObject *object = 0;
-    __weak __block NSObject* weak_object = object;
-    void (^callback) (void) = [^{
-        if (weak_object)
-                [weak_object copy];
-    } copy];
-    callback();
-    return 0;
-}
-
-// CHECK-LP64: callq    _objc_read_weak
-// CHECK-LP64: callq    _objc_read_weak
-
-// CHECK-LP32: calll     L_objc_read_weak
-// CHECK-LP32: calll     L_objc_read_weak

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-assign-global.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-assign-global.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-assign-global.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -F '@objc_assign_global' %t  | count 26
-
- at class NSObject;
-typedef const struct __CFDictionary * CFDictionaryRef;
-typedef struct {
-  id  element;
-  id elementArray[10];
-  __strong CFDictionaryRef cfElement;
-  __strong CFDictionaryRef cfElementArray[10];
-} struct_with_ids_t;
-
-
-// assignments to these should generate objc_assign_global
- at interface A
- at end
-
-typedef struct s0 {
-  A *a[4];
-} T;
-
-T g0;
-
-extern id FileExternID;
-static id FileStaticID;
-id GlobalId;
-id GlobalArray[20];
-NSObject *GlobalObject;
-NSObject *GlobalObjectArray[20];
-__strong CFDictionaryRef Gdict;
-__strong CFDictionaryRef Gdictarray[10];
-struct_with_ids_t GlobalStruct;
-struct_with_ids_t GlobalStructArray[10];
-
-#define ASSIGNTEST(expr, global) expr = rhs
-void *rhs = 0;
-
-int main() {
-  static id staticGlobalId;
-  static id staticGlobalArray[20];
-  static NSObject *staticGlobalObject;
-  static NSObject *staticGlobalObjectArray[20];
-  static __strong CFDictionaryRef staticGdict;
-  static __strong CFDictionaryRef staticGdictarray[10];
-  static struct_with_ids_t staticGlobalStruct;
-  static struct_with_ids_t staticGlobalStructArray[10];
-  extern id ExID;
-  id localID;
-
-  ASSIGNTEST(GlobalId, GlobalAssigns);                          // objc_assign_global
-  ASSIGNTEST(GlobalArray[0], GlobalAssigns);                    // objc_assign_global
-  ASSIGNTEST(GlobalObject, GlobalAssigns);                      // objc_assign_global
-  ASSIGNTEST(GlobalObjectArray[0], GlobalAssigns);              // objc_assign_global
-  ASSIGNTEST(Gdict, GlobalAssigns);                             // objc_assign_global
-  ASSIGNTEST(Gdictarray[1], GlobalAssigns);                     // objc_assign_global
-
-  ASSIGNTEST(GlobalStruct.element, GlobalAssigns);              // objc_assign_global
-  ASSIGNTEST(GlobalStruct.elementArray[0], GlobalAssigns);      // objc_assign_global
-  ASSIGNTEST(GlobalStruct.cfElement, GlobalAssigns);            // objc_assign_global
-  ASSIGNTEST(GlobalStruct.cfElementArray[0], GlobalAssigns);    // objc_assign_global
-
-  ASSIGNTEST(staticGlobalId, GlobalAssigns);                    // objc_assign_global
-  ASSIGNTEST(staticGlobalArray[0], GlobalAssigns);              // objc_assign_global
-  ASSIGNTEST(staticGlobalObject, GlobalAssigns);                // objc_assign_global
-  ASSIGNTEST(staticGlobalObjectArray[0], GlobalAssigns);        // objc_assign_global
-  ASSIGNTEST(staticGdict, GlobalAssigns);                       // objc_assign_global
-  ASSIGNTEST(staticGdictarray[1], GlobalAssigns);               // objc_assign_global
-
-  ASSIGNTEST(staticGlobalStruct.element, GlobalAssigns);                // objc_assign_global
-  ASSIGNTEST(staticGlobalStruct.elementArray[0], GlobalAssigns);        // objc_assign_global
-  ASSIGNTEST(staticGlobalStruct.cfElement, GlobalAssigns);              // objc_assign_global
-  ASSIGNTEST(staticGlobalStruct.cfElementArray[0], GlobalAssigns);      // objc_assign_global
-
-  ExID = 0;
-  localID = 0;
-  FileStaticID = 0;
-  FileExternID=0;
-  g0.a[0] = 0;
-  ((T*) &g0)->a[0] = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-ivar-assign.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-ivar-assign.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-ivar-assign.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep objc_assign_ivar %t | count 6
-
-// PR13820
-// REQUIRES: LP64
-
- at interface I @end
-
-typedef I TI;
-typedef I* TPI;
-
-typedef id ID;
-
- at interface MyClass {
-}
-
- at property id property;
- at property I* propertyI;
-
- at property TI* propertyTI;
-
- at property TPI propertyTPI;
-
- at property ID propertyID;
- at end
-
- at implementation MyClass
-	@synthesize property=_property;
-        @synthesize propertyI;
-        @synthesize propertyTI=_propertyTI;
-        @synthesize propertyTPI=_propertyTPI;
-         @synthesize propertyID = _propertyID;
- at end
-
-int main () {
-    MyClass *myObj;
-    myObj.property = 0;
-    myObj.propertyI = 0;
-    myObj.propertyTI = 0;
-    myObj.propertyTPI = 0;
-    myObj.propertyID = 0;
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-legacy-dispatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-legacy-dispatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-legacy-dispatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fobjc-dispatch-method=mixed -triple i386-apple-darwin10 -emit-llvm -o - %s | FileCheck -check-prefix=CHECK_NEW_DISPATCH %s
-//
-// CHECK_NEW_DISPATCH: define void @f0
-// CHECK_NEW_DISPATCH: bitcast {{.*}}objc_msgSend_fixup_alloc
-// CHECK_NEW_DISPATCH: define void @f1
-// CHECK_NEW_DISPATCH: load {{.*}}OBJC_SELECTOR_REFERENCES
-//
-// RUN: %clang_cc1 -fobjc-dispatch-method=legacy -emit-llvm -o - %s | FileCheck -check-prefix=CHECK_OLD_DISPATCH %s
-//
-// CHECK_OLD_DISPATCH: define void @f0
-// CHECK_OLD_DISPATCH: load {{.*}}OBJC_SELECTOR_REFERENCES
-// CHECK_OLD_DISPATCH: define void @f1
-// CHECK_OLD_DISPATCH: load {{.*}}OBJC_SELECTOR_REFERENCES
-
- at interface A
-+(id) alloc;
--(int) im0;
- at end
-
-void f0(void) {
-  [A alloc];
-}
-
-void f1(A *a) {
-  [a im0];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-new-gc-api-strongcast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-new-gc-api-strongcast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-new-gc-api-strongcast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fblocks -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -F '@objc_assign_strongCast' %t  | count 4
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fblocks -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -F '@objc_assign_strongCast' %t  | count 4
-
- at interface DSATextSearch @end
-
-DSATextSearch **_uniqueIdToIdentifierArray = (0);
-void foo (int _nextId)
-{
-	_uniqueIdToIdentifierArray[_nextId] = 0;  // objc_assign_strongCast
-}
-
-typedef struct {
-    unsigned long state;
-    id *itemsPtr;
-    void (^bp)();
-    unsigned long *mutationsPtr;
-    unsigned long extra[5];
-} NSFastEnumerationState;
-
-void foo1 (NSFastEnumerationState * state)
-{
-   state->itemsPtr = 0;
-   state->bp = ^{};
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-no-strong-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-no-strong-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-no-strong-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface PDFViewPrivateVars 
-{
- at public
-	__attribute__((objc_gc(strong))) char *addedTooltips;
-}
- at end
-
- at interface PDFView 
-{
-    PDFViewPrivateVars *_pdfPriv;
-}
- at end
-
- at implementation PDFView
-- (void) addTooltipsForPage
-{
- _pdfPriv->addedTooltips[4] = 1;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-no-write-barrier.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-no-write-barrier.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-no-write-barrier.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep 'objc_assign' %t | count 0
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep 'objc_assign' %t | count 0
-
-typedef struct {
-    int ival;
-    id submenu;
-} XCBinderContextMenuItem;
-
-id actionMenuForDataNode(void) {
-    XCBinderContextMenuItem menusToCreate[]  = {
-        {1, 0}
-    };
-    return 0;
-}
-
-XCBinderContextMenuItem GmenusToCreate[]  = {
-        {1, 0}
-};

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-nonfragile-abi-impl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-nonfragile-abi-impl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-nonfragile-abi-impl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
-// rdar://7547942.
-
- at interface Base @end
-
- at interface Sub1 : Base @end
-
- at implementation Sub1 @end
-
- at implementation Base { 
- at private 
-  id ivar; 
-} 
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-property-encode.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-property-encode.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-property-encode.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-apple-darwin9 -emit-llvm -o %t %s
-// RUN: grep -e "T@\\\\22NSString\\\\22" %t
- at interface NSString @end
-
-typedef NSString StoreVersionID ;
-
- at interface Parent 
-  @property(retain) StoreVersionID* foo;
- at end
-
- at implementation Parent
- at dynamic foo;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-protocol-enc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-protocol-enc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-protocol-enc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-apple-darwin9 -emit-llvm -o %t %s
-// RUN: grep -e "T@\\\22<X>\\\22" %t
-// RUN: grep -e "T@\\\22<X><Y>\\\22" %t
-// RUN: grep -e "T@\\\22<X><Y><Z>\\\22" %t
-// RUN: grep -e "T@\\\22Foo<X><Y><Z>\\\22" %t
-
- at protocol X, Y, Z;
- at class Foo;
-
- at protocol Proto
- at property (copy) id <X> x;
- at property (copy) id <X, Y> xy;
- at property (copy) id <X, Y, Z> xyz;
- at property(copy)  Foo <X, Y, Z> *fooxyz;
- at end
-
- at interface Intf <Proto>
-{
-id <X> IVAR_x;
-id <X, Y> IVAR_xy;
-id <X, Y, Z> IVAR_xyz;
-Foo <X, Y, Z> *IVAR_Fooxyz;
-}
- at end
-
- at implementation Intf 
- at dynamic x, xy, xyz, fooxyz;
- at end
-
-/**
-This protocol should generate the following metadata:
-struct objc_property_list __Protocol_Test_metadata = {
-  sizeof(struct objc_property), 4,
-  {
-    { "x", "T@\"<X>\"" },
-    { "xy", "T@\"<X><Y>\"" },
-    { "xyz", "T@\"<X><Y><Z>\"" },
-    { "fooxyz", "T@\"Foo<X><Y><Z>\"" }
-  }
-};
-
-"T@\"<X><Y><Z>\",D
-*/

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-retain-codegen.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-retain-codegen.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-retain-codegen.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc-only -emit-llvm -o %t %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc-only -emit-llvm -o %t %s
-
- at interface I0 {
-  I0 *_f0;
-}
- at property (retain) id p0;
- at end 
-
- at implementation I0 
-  @synthesize p0 = _f0;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-
- at interface I {
-  __attribute__((objc_gc(strong))) int *i_IdocumentIDs;
-  __attribute__((objc_gc(strong))) long *l_IdocumentIDs;
-  __attribute__((objc_gc(strong))) long long *ll_IdocumentIDs;
-  __attribute__((objc_gc(strong))) float *IdocumentIDs;
-  __attribute__((objc_gc(strong))) double *d_IdocumentIDs;
-}
-- (void) _getResultsOfMatches;
- at end
-
- at implementation I
--(void) _getResultsOfMatches {
-    IdocumentIDs[2] = IdocumentIDs[3];
-    d_IdocumentIDs[2] = d_IdocumentIDs[3];
-    l_IdocumentIDs[2] = l_IdocumentIDs[3];
-    ll_IdocumentIDs[2] = ll_IdocumentIDs[3];
-    i_IdocumentIDs[2] = i_IdocumentIDs[3];
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast-block-import.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast-block-import.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast-block-import.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc-only -fblocks  -emit-llvm -o - %s | FileCheck %s
-// rdar://10150823
-
- at interface Test {
- at package
-    Test ** __strong objects;
-}
- at end
-
-id newObject();
-void runWithBlock(void(^)(int i));
-
- at implementation Test
-
-- (void)testWithObjectInBlock {
-    Test **children = objects;
-    runWithBlock(^(int i){
-        children[i] = newObject();
-    });
-}
-
- at end
-// CHECK: call i8* @objc_assign_strongCast
-// CHECK: call i8* @objc_assign_strongCast
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-strong-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -emit-llvm -o %t %s
-// RUN: %clang_cc1 -x objective-c++ -fobjc-gc -emit-llvm -o %t %s
-
- at interface I {
-  __attribute__((objc_gc(strong))) signed long *_documentIDs;
-  __attribute__((objc_gc(strong))) id *IdocumentIDs;
-}
-- (void) _getResultsOfMatches;
- at end
-
- at implementation I
--(void) _getResultsOfMatches {
-    _documentIDs[2] = _documentIDs[3];
-    IdocumentIDs[2] = IdocumentIDs[3];
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-assign.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-assign.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-assign.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -e "objc_assign_weak" %t | grep -e "call" | count 6
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -e "objc_assign_weak" %t | grep -e "call" | count 6
-
-__weak id* x;
-id* __weak y;
-id* __weak* z;
-
-__weak id* a1[20];
-id* __weak a2[30];
-id** __weak a3[40];
-
-void foo (__weak id *param) {
- *param = 0;
-}
-
-int main()
-{
-	*x = 0;
-	*y = 0;
-        **z = 0;
-
-        a1[3] = 0;
-        a2[3] = 0;
-        a3[3][4] = 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-block-call.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-block-call.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-block-call.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fobjc-gc -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o - | FileCheck -check-prefix LP64 %s
-// RUN: %clang_cc1 -fblocks -fobjc-gc -triple i386-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o - | FileCheck -check-prefix LP64 %s
-
- at interface MyView
-- (void)MyView_sharedInit;
- at end
-
-void foo(MyView *(^obj)(void)) ;
-
- at implementation MyView
-- (void)MyView_sharedInit {
-    
-    __block __weak MyView *weakSelf = self;
-    foo(
-    ^{
-	return weakSelf;
-    });
-
-}
- at end
-
-// CHECK-LP64: call i8* @objc_read_weak
-// CHECK-LP32: call i8* @objc_read_weak
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-compare.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-compare.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-compare.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: %clang_cc1 -x objective-c++ -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-
- at interface PBXTarget 
-{
-
-PBXTarget * __weak _lastKnownTarget;
-PBXTarget * __weak _KnownTarget;
-PBXTarget * result;
-}
-- Meth;
- at end
-
-extern void foo();
- at implementation PBXTarget
-- Meth {
-	if (_lastKnownTarget != result)
-	 foo();
-	if (result != _lastKnownTarget)
-	 foo();
-
- 	if (_lastKnownTarget != _KnownTarget)
-	  foo();
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-import-attribute.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-import-attribute.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-import-attribute.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-X86-64 %s
-
-__attribute__((weak_import)) @interface WeakRootClass @end
-
-__attribute__((weak_import)) @interface WeakClass : WeakRootClass
- at end
-
- at interface MySubclass : WeakClass @end
-
- at implementation MySubclass @end
-
- at implementation WeakClass(MyCategory) @end
-
-
-__attribute__((weak_import))
- at interface WeakClass1 @end
-
- at implementation WeakClass1(MyCategory) @end
-
- at implementation WeakClass1(YourCategory) @end
-
- __attribute__((weak_import))
- at interface WeakClass3 
-+ message;
- at end
-
-int main() {
-     [WeakClass3 message];
-}
-
-// CHECK-X86-64: OBJC_METACLASS_$_WeakRootClass" = extern_weak global
-// CHECK-X86-64: OBJC_METACLASS_$_WeakClass" = extern_weak global
-// CHECK-X86-64: OBJC_CLASS_$_WeakClass" = extern_weak global
-// CHECK-X86-64: OBJC_CLASS_$_WeakClass1" = extern_weak global
-// CHECK-X86-64: OBJC_CLASS_$_WeakClass3" = extern_weak global
-
-// Root is being implemented here. No extern_weak.
-__attribute__((weak_import)) @interface Root @end
-
- at interface Super : Root @end
-
- at interface Sub : Super @end
-
- at implementation Sub @end
-
- at implementation Root @end
-
-// CHECK-NOT-X86-64: OBJC_METACLASS_$_Root" = extern_weak global

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-ivar-debug.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-ivar-debug.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-ivar-debug.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -g -emit-llvm -o - %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -g -emit-llvm -o - %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -g -emit-llvm -o - %s
-// RUN: %clang_cc1 -x objective-c++ -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -g -emit-llvm -o - %s
-
-// rdar://7252252
- at interface Loop {
- at public
-  __weak Loop *_loop;
-}
- at end
-
- at implementation Loop @end
-
-void loop(Loop *L) {
-  L->_loop = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-weak-ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
- at class NSObject;
-
- at interface Foo  {
- at public
-  __weak NSObject *nsobject;
-}
- at end
-
- at implementation Foo @end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,83 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -F '@objc_assign_global' %t  | count 7
-// RUN: grep -F '@objc_assign_ivar' %t  | count 5
-// RUN: grep -F '@objc_assign_strongCast' %t  | count 8
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -F '@objc_assign_global' %t  | count 7
-// RUN: grep -F '@objc_assign_ivar' %t  | count 5
-// RUN: grep -F '@objc_assign_strongCast' %t  | count 8
-
-extern id **somefunc(void);
-extern id *somefunc2(void);
-
-
-// Globals
-
-id W, *X, **Y;
-
-void func(id a, id *b, id **c) {
-   static id w, *x, **y;
-   W = a;  
-   w = a;
-   X = b;
-   x = b; 
-   Y = c;
-   y = c; 
-}
-
-// Instances
-
- at interface something {
-    id w, *x, **y;
-}
- at end
-
- at implementation something
-- (void)amethod {
-    id badIdea = *somefunc2();
-    w = badIdea;
-    x = &badIdea;
-    y = &x;
-}
- at end
-
-typedef struct {
-    int junk;
-    id  alfred;
-} AStruct;
-
-void funct2(AStruct *aptr) {
-    id **ppptr = somefunc();
-    aptr->alfred = 0;
-    **ppptr = aptr->alfred;
-    *ppptr = somefunc2(); 
-}
-
-typedef const struct __CFString * CFStringRef;
- at interface DSATextSearch {
-__strong CFStringRef *_documentNames;
-  struct {
-    id *innerNames;
-    struct {
-      id *nestedDeeperNames; 
-      struct I {
-         id *is1;
-         id is2[5];
-      } arrI [3];
-    } inner_most;
-  } inner;
-
-}
-- filter;
- at end
- at implementation DSATextSearch
-- filter {
-  int filteredPos = 0;
-  _documentNames[filteredPos] = 0; // storing into an element of array ivar. objc_assign_strongCast is needed.
-  inner.innerNames[filteredPos] = 0;
-  inner.inner_most.nestedDeeperNames[filteredPos] = 0;
-  inner.inner_most.arrI[3].is1[5] = 0;
-  inner.inner_most.arrI[3].is2[5] = 0;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep objc_assign_ivar %t | count 3
-// RUN: grep objc_assign_strongCast %t | count 6
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fblocks -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep objc_assign_ivar %t | count 3
-// RUN: grep objc_assign_strongCast %t | count 6
-
-struct Slice {
-    void *__strong * items;
-};
-
-typedef struct Slice Slice;
-
- at interface ISlice {
- at public
-    void *__strong * IvarItem;
-}
- at end
-
-typedef void (^observer_block_t)(id object);
- at interface Observer  {
- at public
-    observer_block_t block;
-}
- at end
-
-
-void foo (int i) {
-    // storing into an array of strong pointer types.
-    void *__strong* items;
-    items[i] = 0;
-
-    // storing indirectly into an array of strong pointer types.
-    void *__strong* *vitems;
-    *vitems[i] = 0;
-
-    Slice *slice;
-    slice->items = 0;
-    // storing into a struct element of an array of strong pointer types.
-    slice->items[i] = 0;
-
-    ISlice *islice;
-    islice->IvarItem = 0;
-    // Storing into an ivar of an array of strong pointer types.
-    islice->IvarItem[i] = (void*)0;
-
-    Observer *observer;
-    observer->block = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep objc_assign_global %t | count 3
-// RUN: grep objc_assign_strongCast %t | count 2
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep objc_assign_global %t | count 3
-// RUN: grep objc_assign_strongCast %t | count 2
-
- at interface A
- at end
-
-typedef struct s0 {
-  A *a[4];
-} T;
-
-T g0;
-
-void f0(id x) {
-  g0.a[0] = x;
-}
-
-void f1(id x) {
-  ((T*) &g0)->a[0] = x;
-}
-
-void f2(unsigned idx)
-{
-   id *keys;
-   keys[idx] = 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier-5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep objc_assign_ivar %t | count 0
-// RUN: grep objc_assign_strongCast %t | count 8
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep objc_assign_ivar %t | count 0
-// RUN: grep objc_assign_strongCast %t | count 8
-
- at interface TestUnarchiver 
-{
-	void  *allUnarchivedObjects;
-}
- at end
-
- at implementation TestUnarchiver
-
-struct unarchive_list {
-    int ifield;
-    id *list;
-};
-
-- (id)init {
-    (*((struct unarchive_list *)allUnarchivedObjects)).list = 0;
-    ((struct unarchive_list *)allUnarchivedObjects)->list = 0;
-    (**((struct unarchive_list **)allUnarchivedObjects)).list = 0;
-    (*((struct unarchive_list **)allUnarchivedObjects))->list = 0;
-    return 0;
-}
-
- at end
-
-// rdar://10191569
- at interface I
-{
-  struct S {
-    id _timer;
-  } *p_animationState;
-}
- at end
-
- at implementation I
-- (void) Meth {
-  p_animationState->_timer = 0;
-  (*p_animationState)._timer = 0;
-  (&(*p_animationState))->_timer = 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objc2-write-barrier.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -F '@objc_assign_global' %t  | count 21
-// RUN: grep -F '@objc_assign_ivar' %t  | count 11
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o %t %s
-// RUN: grep -F '@objc_assign_global' %t  | count 21
-// RUN: grep -F '@objc_assign_ivar' %t  | count 11
-
-
-typedef const struct __CFDictionary * CFDictionaryRef;
-
-// callouts to these are generated with cc -fobjc-gc
-
-int GlobalAssigns;
-int IvarAssigns;
-int StrongCastAssigns;
-
-
-// The test case elements;
- at class NSObject;
- at class NSString;
-
-typedef struct {
-  id  element;
-  id elementArray[10];
-  __strong CFDictionaryRef cfElement;
-  __strong CFDictionaryRef cfElementArray[10];
-} struct_with_ids_t;
-
- at interface Foo  {
- at public
-// assignments to any/all of these fields should generate objc_assign_ivar
-  __strong CFDictionaryRef dict;
-  __strong CFDictionaryRef dictArray[3];
-  id ivar;
-  id array[10];
-  NSObject *nsobject;
-  NSString *stringArray[10];
-  struct_with_ids_t inner;
-}
-
- at end
-
-// assignments to these should generate objc_assign_global
-id GlobalId;
-id GlobalArray[20];
-NSObject *GlobalObject;
-NSObject *GlobalObjectArray[20];
-__strong CFDictionaryRef Gdict;
-__strong CFDictionaryRef Gdictarray[10];
-struct_with_ids_t GlobalStruct;
-struct_with_ids_t GlobalStructArray[10];
-
-
-// The test cases
-void* rhs = 0;
-
-#define ASSIGNTEST(expr, global) expr = (typeof(expr))rhs
-
-int testGlobals() {
-  // Everything in this function generates assign_global intercepts
-  int counter = 0;
-
-  static id staticGlobalId;
-  static id staticGlobalArray[20];
-  static NSObject *staticGlobalObject;
-  static NSObject *staticGlobalObjectArray[20];
-  static __strong CFDictionaryRef staticGdict;
-  static __strong CFDictionaryRef staticGdictarray[10];
-  static struct_with_ids_t staticGlobalStruct;
-  static struct_with_ids_t staticGlobalStructArray[10];
-
-  ASSIGNTEST(GlobalId, GlobalAssigns);				// objc_assign_global
-  ASSIGNTEST(GlobalArray[0], GlobalAssigns);			// objc_assign_global
-  ASSIGNTEST(GlobalObject, GlobalAssigns);			// objc_assign_global
-  ASSIGNTEST(GlobalObjectArray[0], GlobalAssigns);		// objc_assign_global
-  ASSIGNTEST(Gdict, GlobalAssigns);				// objc_assign_global
-  ASSIGNTEST(Gdictarray[1], GlobalAssigns);			// objc_assign_global
-
-  ASSIGNTEST(GlobalStruct.element, GlobalAssigns);		// objc_assign_global
-  ASSIGNTEST(GlobalStruct.elementArray[0], GlobalAssigns);	// objc_assign_global
-  ASSIGNTEST(GlobalStruct.cfElement, GlobalAssigns);		// objc_assign_global
-  ASSIGNTEST(GlobalStruct.cfElementArray[0], GlobalAssigns);	// objc_assign_global
-
-  ASSIGNTEST(staticGlobalId, GlobalAssigns);			// objc_assign_global
-  ASSIGNTEST(staticGlobalArray[0], GlobalAssigns);		// objc_assign_global
-  ASSIGNTEST(staticGlobalObject, GlobalAssigns);		// objc_assign_global
-  ASSIGNTEST(staticGlobalObjectArray[0], GlobalAssigns);	// objc_assign_global
-  ASSIGNTEST(staticGdict, GlobalAssigns);			// objc_assign_global
-  ASSIGNTEST(staticGdictarray[1], GlobalAssigns);		// objc_assign_global
-
-  ASSIGNTEST(staticGlobalStruct.element, GlobalAssigns);		// objc_assign_global
-  ASSIGNTEST(staticGlobalStruct.elementArray[0], GlobalAssigns);	// objc_assign_global
-  ASSIGNTEST(staticGlobalStruct.cfElement, GlobalAssigns);		// objc_assign_global
-  ASSIGNTEST(staticGlobalStruct.cfElementArray[0], GlobalAssigns);	// objc_assign_global
-
-  return counter;
-}
-
-
-int testIvars() {
-  Foo *foo;
-  int counter = 0;
-
-  ASSIGNTEST(foo->ivar, IvarAssigns);					// objc_assign_ivar
-  ASSIGNTEST(foo->dict, IvarAssigns);					// objc_assign_ivar
-  ASSIGNTEST(foo->dictArray[0], IvarAssigns);				// objc_assign_ivar
-  ASSIGNTEST(foo->array[0], IvarAssigns);				// objc_assign_ivar
-  ASSIGNTEST(foo->nsobject, IvarAssigns);				// objc_assign_ivar
-  ASSIGNTEST(foo->stringArray[0], IvarAssigns);				// objc_assign_ivar
-  ASSIGNTEST(foo->inner.element, IvarAssigns);				// objc_assign_ivar
-  ASSIGNTEST(foo->inner.elementArray[0], IvarAssigns);			// objc_assign_ivar
-  ASSIGNTEST(foo->inner.cfElement, IvarAssigns);			// objc_assign_ivar
-  ASSIGNTEST(foo->inner.cfElementArray[0], IvarAssigns);		// objc_assign_ivar
-
-  return counter;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/object-incr-decr-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/object-incr-decr-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/object-incr-decr-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o %t
-
- at interface Foo 
-{
-	double d1,d3,d4;
-}
- at end
-
-Foo* foo()
-{
-  Foo *f;
-  
-  // Both of these crash clang nicely
-  ++f;
-  --f;
- f--;
- f++;
- return f;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objfw.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objfw.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/objfw.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fobjc-runtime=objfw -emit-llvm -o - %s | FileCheck %s
-
-// Test the ObjFW runtime.
-
- at interface Test0
-+ (void) test;
- at end
-void test0(void) {
-  [Test0 test];
-}
-// CHECK:    define void @test0()
-// CHECK:      [[T0:%.*]] = call i8* (i8*, i8*, ...)* (i8*, i8*)* @objc_msg_lookup(i8* bitcast (i64* @_OBJC_CLASS_Test0 to i8*),
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* (i8*, i8*, ...)* [[T0]] to void (i8*, i8*)*
-// CHECK-NEXT: call void [[T1]](i8* bitcast (i64* @_OBJC_CLASS_Test0 to i8*), 
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/optimized-setter-ios-device.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/optimized-setter-ios-device.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/optimized-setter-ios-device.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=ios-6.0.0 -triple thumbv7-apple-ios6.0.0 -o - | FileCheck %s
-// rdar://11915017
-
- at interface I
-// void objc_setProperty_nonatomic(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., NO, NO) 
- at property (nonatomic, retain) id nonatomicProperty;
-
-// void objc_setProperty_nonatomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., NO, YES)
- at property (nonatomic, copy) id nonatomicPropertyCopy;
-
-// void objc_setProperty_atomic(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., YES, NO)
- at property (retain) id atomicProperty;
-
-// void objc_setProperty_atomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., YES, YES)
- at property (copy) id atomicPropertyCopy;
- at end
-
- at implementation I
- at synthesize nonatomicProperty;
- at synthesize nonatomicPropertyCopy;
- at synthesize atomicProperty;
- at synthesize atomicPropertyCopy;
- at end
-
-// CHECK: call arm_aapcscc void @objc_setProperty_nonatomic
-// CHECK: call arm_aapcscc void @objc_setProperty_nonatomic_copy
-// CHECK: call arm_aapcscc void @objc_setProperty_atomic
-// CHECK: call arm_aapcscc void @objc_setProperty_atomic_copy
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/optimized-setter.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/optimized-setter.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/optimized-setter.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=macosx-10.8 -triple x86_64-apple-macosx10.8.0 -o - | FileCheck %s
-// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=ios-6.0.0  -triple x86_64-apple-ios6.0.0 -o - | FileCheck %s
-// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=gnustep-1.7 -triple x86_64-unknown-freebsd -o - | FileCheck %s
-// rdar://10179974
-
- at interface I
-// void objc_setProperty_nonatomic(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., NO, NO) 
- at property (nonatomic, retain) id nonatomicProperty;
-
-// void objc_setProperty_nonatomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., NO, YES)
- at property (nonatomic, copy) id nonatomicPropertyCopy;
-
-// void objc_setProperty_atomic(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., YES, NO)
- at property (retain) id atomicProperty;
-
-// void objc_setProperty_atomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., YES, YES)
- at property (copy) id atomicPropertyCopy;
- at end
-
- at implementation I
- at synthesize nonatomicProperty;
- at synthesize nonatomicPropertyCopy;
- at synthesize atomicProperty;
- at synthesize atomicPropertyCopy;
- at end
-
-// CHECK: call void @objc_setProperty_nonatomic
-// CHECK: call void @objc_setProperty_nonatomic_copy
-// CHECK: call void @objc_setProperty_atomic
-// CHECK: call void @objc_setProperty_atomic_copy
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/overloadable.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/overloadable.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/overloadable.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// rdar://6657613
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
- at class C;
-
-// RUN: grep _Z1fP11objc_object %t | count 1
-void __attribute__((overloadable)) f(id c) { }
-
-// RUN: grep _Z1fP1C %t | count 1
-void __attribute__((overloadable)) f(C *c) { }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/predefined-expr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/predefined-expr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/predefined-expr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: @"__func__.-[Foo instanceTest1]" = private unnamed_addr constant [21 x i8] c"-[Foo instanceTest1]\00"
-// CHECK: @"__func__.-[Foo instanceTest2:]" = private unnamed_addr constant [22 x i8] c"-[Foo instanceTest2:]\00"
-// CHECK: @"__func__.-[Foo instanceTest3:withB:]" = private unnamed_addr constant [28 x i8] c"-[Foo instanceTest3:withB:]\00"
-// CHECK: @"__func__.-[Foo instanceTest4]" = private unnamed_addr constant [21 x i8] c"-[Foo instanceTest4]\00"
-// CHECK: @"__func__.+[Foo classTest1]" = private unnamed_addr constant [18 x i8] c"+[Foo classTest1]\00"
-// CHECK: @"__func__.+[Foo classTest2:]" = private unnamed_addr constant [19 x i8] c"+[Foo classTest2:]\00"
-// CHECK: @"__func__.+[Foo classTest3:withB:]" = private unnamed_addr constant [25 x i8] c"+[Foo classTest3:withB:]\00"
-// CHECK: @"__func__.+[Foo classTest4]" = private unnamed_addr constant [18 x i8] c"+[Foo classTest4]\00"
-// CHECK: @"__func__.-[Foo(Category) instanceTestWithCategory]" = private unnamed_addr constant [42 x i8] c"-[Foo(Category) instanceTestWithCategory]\00"
-// CHECK: @"__func__.+[Foo(Category) classTestWithCategory]" = private unnamed_addr constant [39 x i8] c"+[Foo(Category) classTestWithCategory]\00"
-
-int printf(const char * _Format, ...);
-
- at interface Foo
- at end
-
- at implementation Foo
-
-- (void)instanceTest1 {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-}
-
-- (void)instanceTest2:(int)i {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-}
-
-- (void)instanceTest3:(int)a withB:(double)b {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-}
-
-- (int)instanceTest4 {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-  return 0;
-}
-
-+ (void)classTest1 {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-}
-
-+ (void)classTest2:(int)i {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-}
-
-+ (void)classTest3:(int)a withB:(double)b {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-}
-
-+ (int)classTest4 {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-  return 0;
-}
-
- at end
-
- at interface Foo (Category)
- at end
-
- at implementation Foo (Category)
-
-- (void)instanceTestWithCategory {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-}
-
-+ (void)classTestWithCategory {
-  printf("__func__: %s\n", __func__);
-  printf("__FUNCTION__: %s\n", __FUNCTION__);
-  printf("__PRETTY_FUNCTION__: %s\n\n", __PRETTY_FUNCTION__);
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/prop-metadata-gnu.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/prop-metadata-gnu.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/prop-metadata-gnu.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang -S -emit-llvm %s -o - -x objective-c -fobjc-runtime=gcc | FileCheck --check-prefix=GCC %s
-// RUN: %clang -S -emit-llvm %s -o - -x objective-c -fobjc-runtime=gnustep-1.5 | FileCheck --check-prefix=GCC %s
-// RUN: %clang -S -emit-llvm %s -o - -x objective-c -fobjc-runtime=gnustep-1.6 | FileCheck --check-prefix=GNUSTEP %s
-//
- at interface helloclass  {
- at private int varName;
-}
- at property (readwrite,assign) int propName;
- at end
-
- at implementation helloclass
- at synthesize propName = varName;
- at end
-// GCC-NOT: Ti,VvarName
-// GNUSTEP: Ti,VvarName

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-aggregate.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-aggregate.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-aggregate.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s
-
-// This structure's size is not a power of two, so the property does
-// not get native atomics, even though x86-64 can do unaligned atomics
-// with a lock prefix.
-struct s3 { char c[3]; };
-
-// This structure's size is, so it does, because it can.
-// FIXME: But we don't at the moment; the backend doesn't know how to generate
-// correct code.
-struct s4 { char c[4]; };
-
- at interface Test0
- at property struct s3 s3;
- at property struct s4 s4;
- at end
- at implementation Test0
- at synthesize s3, s4;
- at end
-
-// CHECK: define internal i24 @"\01-[Test0 s3]"(
-// CHECK: call void @objc_copyStruct
-
-// CHECK: define internal void @"\01-[Test0 setS3:]"(
-// CHECK: call void @objc_copyStruct
-
-// CHECK: define internal i32 @"\01-[Test0 s4]"(
-// CHECK: call void @objc_copyStruct
-
-// CHECK: define internal void @"\01-[Test0 setS4:]"(
-// CHECK: call void @objc_copyStruct

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-agrr-getter.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-agrr-getter.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-agrr-getter.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-typedef struct {
-  unsigned f0;
-} s0;
-
- at interface A
-- (s0) f0;
- at end
-
- at implementation A
--(s0) f0{ while (1) {} }
-- (unsigned) bar {
-  return self.f0.f0;
-}
- at end
-
-
-typedef struct _NSSize {
-    float width;
-    float height;
-} NSSize;
-
-
- at interface AnObject
-{
- NSSize size;
-}
-
- at property NSSize size;
-
- at end
-
-float f ()
-{
-  AnObject* obj;
-  return (obj.size).width;
-}
-
-// rdar://problem/9272392
-void test3(AnObject *obj) {
-  obj.size;
-  (void) obj.size;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-category-impl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-category-impl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-category-impl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -emit-llvm -o - %s | FileCheck %s
-
-// rdar : // 8093297
-
- at interface Foo @end
-
- at protocol Proto
- at property (readonly) int proto_property;
- at end
-
- at interface Foo (Category) <Proto> @end
-
- at implementation Foo (Category)
--(int)proto_property { return 0; }
- at end
-
-
-// CHECK: l_OBJC_$_PROP_LIST_Foo_$_Category" = internal global
-// CHECK: l_OBJC_$_CATEGORY_Foo_$_Category" = internal global
-// CHECK: l_OBJC_$_PROP_LIST_Foo_$_Category

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-complex.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-complex.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-complex.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
-
- at interface I0 {
- at public
-  _Complex float iv0;
-}
-
- at property(assign) _Complex float p0;
-
--(_Complex float) im0;
--(void) setIm0: (_Complex float) a0;
- at end
-
- at implementation I0 
- at dynamic p0;
-
--(id) init {
-  self->iv0 = 5.0 + 2.0i;
-  return self;
-}
-
--(_Complex float) im0 {
-  printf("im0: %.2f + %.2fi\n", __real iv0, __imag iv0);
-  return iv0 + (.1 + .2i);
-}
--(void) setIm0: (_Complex float) a0 {
-  printf("setIm0: %.2f + %.2fi\n", __real a0, __imag a0);
-  iv0 = a0 + (.3 + .4i);
-}
-
--(_Complex float) p0 {
-  printf("p0: %.2f + %.2fi\n", __real iv0, __imag iv0);
-  return iv0 + (.5 + .6i);
-}
--(void) setP0: (_Complex float) a0 {
-  printf("setP0: %.2f + %.2fi\n", __real a0, __imag a0);
-  iv0 = a0 + (.7 + .8i);
-}
- at end
-
-void f0(I0 *a0) {
-    float l0 = __real a0.im0;
-    float l1 = __imag a0->iv0;
-    _Complex float l2 = (a0.im0 = a0.im0);
-    _Complex float l3 = a0->iv0;
-    _Complex float l4 = (a0->iv0 = a0->iv0);
-    _Complex float l5 = a0->iv0;
-    _Complex float l6 = (a0.p0 = a0.p0);
-    _Complex float l7 = a0->iv0;
-    _Complex float l8 = [a0 im0];
-    printf("l0: %.2f + %.2fi\n", __real l0, __imag l0);
-    printf("l1: %.2f + %.2fi\n", __real l1, __imag l1);
-    printf("l2: %.2f + %.2fi\n", __real l2, __imag l2);
-    printf("l3: %.2f + %.2fi\n", __real l3, __imag l3);
-    printf("l4: %.2f + %.2fi\n", __real l4, __imag l4);
-    printf("l5: %.2f + %.2fi\n", __real l5, __imag l5);
-    printf("l6: %.2f + %.2fi\n", __real l6, __imag l6);
-    printf("l7: %.2f + %.2fi\n", __real l7, __imag l7);
-    printf("l8: %.2f + %.2fi\n", __real l8, __imag l8);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-dbg.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-dbg.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-dbg.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -S -g -masm-verbose -x objective-c < %s | grep DW_AT_name
- at interface Foo {
-  int i;
-}
- at property int i;
- at end
-
- at implementation Foo
- at synthesize i;
- at end
-
-int bar(Foo *f) {
-  int i = 1;
-  f.i = 2;
-  i = f.i;
-  return i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-getter-dot-syntax.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-getter-dot-syntax.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-getter-dot-syntax.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at protocol NSObject
-- (void *)description;
- at end
-
-int main()
-{
-        id<NSObject> eggs;
-        void *eggsText= eggs.description;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-incr-decr-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-incr-decr-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-incr-decr-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface Object
-- (id) new;
- at end
-
- at interface SomeClass : Object
-{
-  int _myValue;
-}
- at property int myValue;
- at end
-
- at implementation SomeClass
- at synthesize myValue=_myValue;
- at end
-
-int main()
-{
-    int val;
-    SomeClass *o = [SomeClass new];
-    o.myValue = -1;
-    val = o.myValue++; /* val -1, o.myValue 0 */
-    val += o.myValue--; /* val -1. o.myValue -1 */
-    val += ++o.myValue; /* val -1, o.myValue 0 */
-    val += --o.myValue; /* val -2, o.myValue -1 */
-    return ++o.myValue + (val+2);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-list-in-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-list-in-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-list-in-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm %s -o - | FileCheck %s
-// CHECK: l_OBJC_$_PROP_LIST_C2" = internal global { i32, i32, [3 x %struct._prop_t] } { i32 16, i32 3
-
- at protocol P 
- at property int i;
- at end
-
- at protocol P1 
- at property int i1;
- at end
-
- at protocol P2 < P1> 
- at property int i2;
- at end
-
- at interface C1 { id isa; } @end
-
- at interface C2 : C1 <P, P2> {
-    int i;
-}
- at property int i2;
- at end
-
- at implementation C1
-+(void)initialize { }
- at end
-
- at implementation C2
- at synthesize i;
- at synthesize i1;
- at synthesize i2;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-ref-cast-to-void.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-ref-cast-to-void.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-ref-cast-to-void.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-// rdar: // 8399655
- at interface TestClass
- at property (readonly) int myProperty;
-- (int)myProperty;
-- (double)myGetter;
- at end
-
-void FUNC () {
-    TestClass *obj;
-    (void)obj.myProperty; 
-    (void)obj.myGetter; 
-}
-
-// CHECK: call i32 bitcast
-// CHECK: call double bitcast

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-setter-attr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-setter-attr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-setter-attr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple=i686-apple-darwin8 -o %t %s
-// RUN: grep -e "SiSetOtherThings:" %t
-
- at interface A 
- at property(setter=iSetOtherThings:) int otherThings;
- at end
-
- at implementation A
- at dynamic otherThings;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-type-mismatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-type-mismatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property-type-mismatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -emit-llvm -o - %s | FileCheck %s
-// rdar://8966864
-
- at interface Foo
--(float)myfo;
--(void)setMyfo: (int)p;
- at end
-
-void bar(Foo *x) {
-  x.myfo++;
-}
-
-// CHECK: [[C1:%.*]] = call float bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK: [[I:%.*]] = fadd float [[C1]], 1.000000e+00
-// CHECK: [[CONV:%.*]] = fptosi float [[I]] to i32
-// CHECK: [[T3:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_2"
-// CHECK:  call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
-
-// TODO: actually test most of this instead of just emitting it
-
-int printf(const char *, ...);
-
- at interface Root
--(id) alloc;
--(id) init;
- at end
-
- at interface A : Root {
-  int x;
-  int y, ro, z;
-  id ob0, ob1, ob2, ob3, ob4;
-}
- at property int x;
- at property int y;
- at property int z;
- at property(readonly) int ro;
- at property(assign) id ob0;
- at property(retain) id ob1;
- at property(copy) id ob2;
- at property(retain, nonatomic) id ob3;
- at property(copy, nonatomic) id ob4;
- at end
-
- at implementation A
- at dynamic x;
- at synthesize y;
- at synthesize z = z;
- at synthesize ro;
- at synthesize ob0;
- at synthesize ob1;
- at synthesize ob2;
- at synthesize ob3;
- at synthesize ob4;
--(int) y {
-  return x + 1;
-}
--(void) setZ: (int) arg {
-  x = arg - 1;
-}
- at end
-
- at interface A (Cat)
- at property int dyn;
- at end
-
- at implementation A (Cat)
--(int) dyn {
-  return 10;
-}
- at end
-
-// Test that compound operations only compute the base once.
-// CHECK: define void @test2
-A *test2_helper(void);
-void test2() {
-  // CHECK:      [[BASE:%.*]] = call [[A:%.*]]* @test2_helper()
-  // CHECK-NEXT: [[SEL:%.*]] = load i8**
-  // CHECK-NEXT: [[BASETMP:%.*]] = bitcast [[A]]* [[BASE]] to i8*
-  // CHECK-NEXT: [[LD:%.*]] = call i32 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32 (i8*, i8*)*)(i8* [[BASETMP]], i8* [[SEL]])
-  // CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[LD]], 1
-  // CHECK-NEXT: [[SEL:%.*]] = load i8**
-  // CHECK-NEXT: [[BASETMP:%.*]] = bitcast [[A]]* [[BASE]] to i8*
-  // CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)(i8* [[BASETMP]], i8* [[SEL]], i32 [[ADD]])
-  test2_helper().dyn++;
-
-  // CHECK:      [[BASE:%.*]] = call [[A]]* @test2_helper()
-  // CHECK-NEXT: [[SEL:%.*]] = load i8**
-  // CHECK-NEXT: [[BASETMP:%.*]] = bitcast [[A]]* [[BASE]] to i8*
-  // CHECK-NEXT: [[LD:%.*]] = call i32 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32 (i8*, i8*)*)(i8* [[BASETMP]], i8* [[SEL]])
-  // CHECK-NEXT: [[ADD:%.*]] = mul nsw i32 [[LD]], 10
-  // CHECK-NEXT: [[SEL:%.*]] = load i8**
-  // CHECK-NEXT: [[BASETMP:%.*]] = bitcast [[A]]* [[BASE]] to i8*
-  // CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)(i8* [[BASETMP]], i8* [[SEL]], i32 [[ADD]])
-  test2_helper().dyn *= 10;
-}
-
-// Test aggregate initialization from property reads.
-// Not crashing is good enough for the property-specific test.
-struct test3_struct { int x,y,z; };
-struct test3_nested { struct test3_struct t; };
- at interface test3_object
- at property struct test3_struct s;
- at end
-void test3(test3_object *p) {
-  struct test3_struct array[1] = { p.s };
-  struct test3_nested agg = { p.s };
-}
-
-// PR8742
- at interface Test4  {}
- at property float f;
- at end
-// CHECK: define void @test4
-void test4(Test4 *t) {
-  extern int test4_printf(const char *, ...);
-  // CHECK: [[TMP:%.*]] = call float {{.*}} @objc_msgSend
-  // CHECK-NEXT: [[EXT:%.*]] = fpext float [[TMP]] to double
-  // CHECK-NEXT: call i32 (i8*, ...)* @test4_printf(i8* {{.*}}, double [[EXT]])
-  // CHECK-NEXT: ret void
-  test4_printf("%.2f", t.f);
-}
-
- at interface Test5 {
-  unsigned _x : 5;
-}
- at property unsigned x;
- at end
- at implementation Test5
- at synthesize x = _x;
- at end
-
-// rdar://problem/10410531
- at interface Test6
- at property void (*prop)(void);
- at end
-
-void test6_func(void);
-void test6(Test6 *a) {
-  a.prop = test6_func;
-}
-
-// rdar://problem/10507455
- at interface Test7
- at property unsigned char x;
- at end
-void test7(Test7 *t) {
-  t.x &= 2;
-  t.x |= 5;
-  t.x ^= 8;
-}
-// CHECK:    define void @test7([[TEST7:%.*]]*
-// CHECK:      [[T:%.*]] = alloca [[TEST7]]*,
-// CHECK-NEXT: store
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST7]]** [[T]], align
-// CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST7]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call zeroext i8 bitcast
-// CHECK-NEXT: [[T3:%.*]] = zext i8 [[T2]] to i32
-// CHECK-NEXT: [[T4:%.*]] = and i32 [[T3]], 2
-// CHECK-NEXT: [[T5:%.*]] = trunc i32 [[T4]] to i8
-// CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T6:%.*]] = bitcast [[TEST7]]* [[T0]] to i8*
-// CHECK-NEXT: call void bitcast
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST7]]** [[T]], align
-// CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST7]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call zeroext i8 bitcast
-// CHECK-NEXT: [[T3:%.*]] = zext i8 [[T2]] to i32
-// CHECK-NEXT: [[T4:%.*]] = or i32 [[T3]], 5
-// CHECK-NEXT: [[T5:%.*]] = trunc i32 [[T4]] to i8
-// CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T6:%.*]] = bitcast [[TEST7]]* [[T0]] to i8*
-// CHECK-NEXT: call void bitcast
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST7]]** [[T]], align
-// CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST7]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call zeroext i8 bitcast
-// CHECK-NEXT: [[T3:%.*]] = zext i8 [[T2]] to i32
-// CHECK-NEXT: [[T4:%.*]] = xor i32 [[T3]], 8
-// CHECK-NEXT: [[T5:%.*]] = trunc i32 [[T4]] to i8
-// CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES
-// CHECK-NEXT: [[T6:%.*]] = bitcast [[TEST7]]* [[T0]] to i8*
-// CHECK-NEXT: call void bitcast
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocol-in-extended-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocol-in-extended-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocol-in-extended-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
-// RUN: %clang_cc1 -triple i386-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -S %s -o %t-32.s
-// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
-
- at protocol MyProtocol
- at end
-
- at protocol ExtendedProtocol
- at end
-
- at interface ItDoesntWork<MyProtocol> {
-}
--(void) Meth;
- at end
-
- at interface ItDoesntWork() <MyProtocol, ExtendedProtocol>
- at end
-
- at implementation ItDoesntWork
--(void) Meth {
-    ItDoesntWork <MyProtocol, ExtendedProtocol> *p = 0;
- }
- at end
-
-// CHECK-LP64: l_OBJC_PROTOCOL_$_ExtendedProtocol:
-
-// CHECK-LP32: L_OBJC_PROTOCOL_ExtendedProtocol:

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocol-property-synth.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocol-property-synth.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocol-property-synth.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface BaseClass {
-    id _delegate;
-}
- at end
-
- at protocol MyProtocol
- at optional
- at property(assign) id delegate;
- at end
-
- at protocol AnotherProtocol
- at optional
- at property(assign) id myanother;
- at end
-
- at protocol SubProtocol <MyProtocol>
- at property(assign) id another;
- at end
-
- at interface SubClass : BaseClass <SubProtocol, AnotherProtocol> {
-}
-
- at end
-
- at implementation BaseClass @end 
-
- at implementation SubClass
- at synthesize delegate = _Subdelegate;
- at synthesize another;
- at synthesize myanother;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocols-lazy.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocols-lazy.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocols-lazy.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i686-apple-darwin8 -fobjc-runtime=macosx-fragile-10.5 -o %t %s
-
-// No object generated
-// RUN: grep OBJC_PROTOCOL_P0 %t | count 0
- at protocol P0;
-
-// No object generated
-// RUN: grep OBJC_PROTOCOL_P1 %t | count 0
- at protocol P1 -im1; @end
-
-// Definition triggered by protocol reference.
-// RUN: grep OBJC_PROTOCOL_P2 %t | count 3
-// RUN: grep OBJC_PROTOCOL_INSTANCE_METHODS_P2 %t | count 3
- at protocol P2 -im1; @end
-void f0() { id x = @protocol(P2); }
-
-// Forward definition triggered by protocol reference.
-// RUN: grep OBJC_PROTOCOL_P3 %t | count 3
-// RUN: grep OBJC_PROTOCOL_INSTANCE_METHODS_P3 %t | count 0
- at protocol P3;
-void f1() { id x = @protocol(P3); }
-
-// Definition triggered by class reference.
-// RUN: grep OBJC_PROTOCOL_P4 %t | count 3
-// RUN: grep OBJC_PROTOCOL_INSTANCE_METHODS_P4 %t | count 3
- at protocol P4 -im1; @end
- at interface I0<P4> @end
- at implementation I0 -im1 { return 0; }; @end
-
-// Definition following forward reference.
-// RUN: grep OBJC_PROTOCOL_P5 %t | count 3
-// RUN: grep OBJC_PROTOCOL_INSTANCE_METHODS_P5 %t | count 3
- at protocol P5;
-void f2() { id x = @protocol(P5); } // This generates a forward
-                                    // reference, which has to be
-                                    // updated on the next line.
- at protocol P5 -im1; @end               
-
-// Protocol reference following definition.
-// RUN: grep OBJC_PROTOCOL_P6 %t | count 4
-// RUN: grep OBJC_PROTOCOL_INSTANCE_METHODS_P6 %t | count 3
- at protocol P6 -im1; @end
- at interface I1<P6> @end
- at implementation I1 -im1 { return 0; }; @end
-void f3() { id x = @protocol(P6); }
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocols.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocols.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/protocols.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-void p(const char*, ...);
-
- at interface Root
-+(int) maxValue;
--(int) conformsTo: (id) x;
- at end
-
- at protocol P0;
-
- at protocol P1
-+(void) classMethodReq0;
--(void) methodReq0;
- at optional
-+(void) classMethodOpt1;
--(void) methodOpt1;
- at required
-+(void) classMethodReq2;
--(void) methodReq2;
- at end
-
- at protocol P2
-//@property(readwrite) int x;
- at end
-
- at protocol P3<P1, P2>
--(id <P1>) print0;
--(void) print1;
- at end
-
-void foo(const id a) {
-  void *p = @protocol(P3);
-}
-
-int main() {
-  Protocol *P0 = @protocol(P0);
-  Protocol *P1 = @protocol(P1);
-  Protocol *P2 = @protocol(P2);
-  Protocol *P3 = @protocol(P3);
-
-#define Pbool(X) p(#X ": %s\n", X ? "yes" : "no");
-  Pbool([P0 conformsTo: P1]);
-  Pbool([P1 conformsTo: P0]);
-  Pbool([P1 conformsTo: P2]);
-  Pbool([P2 conformsTo: P1]);
-  Pbool([P3 conformsTo: P1]);
-  Pbool([P1 conformsTo: P3]);
-
-  return 0;
-}
-
-// rdar://problem/7992749
-typedef Root<P1> P1Object;
-int test10() {
-  return [P1Object maxValue];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/rdr-6732143-dangling-block-reference.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/rdr-6732143-dangling-block-reference.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/rdr-6732143-dangling-block-reference.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fobjc-exceptions %s -o -
-
-void f0(id x) {
-  @synchronized (x) {      
-    do { ; } while(0);
-    @try {
-    } @finally {
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/related-result-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/related-result-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/related-result-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
- at interface NSObject
-+ (id)alloc;
-- (id)init;
-- (id)retain;
- at end
-
- at interface NSString : NSObject
- at end
-
-// CHECK: define void @test1()
-void test1() {
-  // CHECK: {{call.*@objc_msgSend}}
-  // CHECK: {{call.*@objc_msgSend}}
-  // CHECK: {{call.*@objc_msgSend}}
-  // CHECK: bitcast i8*
-  NSString *str1 = [[[NSString alloc] init] retain];
-}
-
-// CHECK: define void @test2()
-void test2() {
-  // CHECK: {{call.*@objc_msgSend}}
-  // CHECK: {{call.*@objc_msgSend}}
-  // CHECK: {{call.*@objc_msgSend}}
-  // CHECK: bitcast i8*
-  NSString *str1 = NSString.alloc.init.retain;
-}
-
- at interface Test2 : NSString
-- (id)init;
- at end
-
- at implementation Test2
-// CHECK: define internal i8* @"\01-[Test2 init]"
-- (id)init {
-  // CHECK: {{call.*@objc_msgSendSuper}}
-  // CHECK-NEXT: bitcast i8*
-  return [super init];
-}
- at end
-
- at interface Test3 : NSString
-- (id)init;
- at end
-
- at implementation Test3
-// CHECK: define internal i8* @"\01-[Test3 init]"
-- (id)init {
-  // CHECK: {{call.*@objc_msgSendSuper}}
-  // CHECK-NEXT: bitcast i8*
-  return [super init];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/reorder-synthesized-ivars.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/reorder-synthesized-ivars.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/reorder-synthesized-ivars.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-default-synthesize-properties -emit-llvm -x objective-c %s -o - | FileCheck %s
-// rdar://13192366
-typedef signed char BOOL;
- at interface NSObject 
-{
-  id isa;
-}
- at end
-
- at interface MyClass : NSObject
-
- at property (readwrite) BOOL boolean1;
- at property (readwrite, copy) id object1;
- at property (readwrite) BOOL boolean2;
- at property (readwrite, copy) id object2;
- at property (readwrite) BOOL boolean3;
- at property (readwrite, copy) id object3;
- at property (readwrite) BOOL boolean4;
- at property (readwrite, copy) id object4;
- at property (readwrite) BOOL boolean5;
- at property (readwrite, copy) id object5;
- at property (readwrite) BOOL boolean6;
- at property (readwrite, copy) id object6;
- at property (readwrite) BOOL boolean7;
- at property (readwrite) BOOL MyBool;
- at property (readwrite, copy) id object7;
- at property (readwrite) BOOL boolean8;
- at property (readwrite, copy) id object8;
- at property (readwrite) BOOL boolean9;
- at property (readwrite, copy) id object9;
- at end
-
- at implementation MyClass
-{
-  id MyIvar;
-  BOOL _MyBool;
-  char * pc;
-}
- at end
-
-// CHECK: @"{{.*}}" = internal global [10 x i8] c"_boolean1
-// CHECK-NEXT: @"{{.*}}" = internal global [10 x i8] c"_boolean2
-// CHECK-NEXT: @"{{.*}}" = internal global [10 x i8] c"_boolean3
-// CHECK-NEXT: @"{{.*}}" = internal global [10 x i8] c"_boolean4
-// CHECK-NEXT: @"{{.*}}" = internal global [10 x i8] c"_boolean5
-// CHECK-NEXT: @"{{.*}}" = internal global [10 x i8] c"_boolean6
-// CHECK-NEXT: @"{{.*}}" = internal global [10 x i8] c"_boolean7
-// CHECK-NEXT: @"{{.*}}" = internal global [10 x i8] c"_boolean8
-// CHECK-NEXT: @"{{.*}}" = internal global [10 x i8] c"_boolean9
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object1
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object2
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object3
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object4
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object5
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object6
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object7
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object8
-// CHECK-NEXT: @"{{.*}}" = internal global [9 x i8] c"_object9

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/return-objc-object.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/return-objc-object.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/return-objc-object.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64 -emit-llvm -o - %s | FileCheck %s
-
- at protocol P1 @end
- at interface NSOperationQueue 
-{
-  char ch[64];
-  double d;
-}
- at end
-
-NSOperationQueue &f();
-NSOperationQueue<P1> &f1();
-
-void call_once() {
-  f();
-  f1();
-}
-// CHECK: call %0* @_Z1fv()
-// CHECK: call %0* @_Z2f1v()  

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/runtime-fns.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/runtime-fns.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/runtime-fns.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// RUN: grep -e "^de.*objc_msgSend[0-9]*(" %t | count 1
-// RUN: %clang_cc1 -DWITHDEF -emit-llvm -o %t %s
-// RUN: grep -e "^de.*objc_msgSend[0-9]*(" %t | count 1
-
-id objc_msgSend(int x);
-
- at interface A @end
-
- at implementation A
--(void) f0 {
-  objc_msgSend(12);
-}
-
--(void) hello {
-}
- at end
-
-void f0(id x) {
-  [x hello];
-}
-
-#ifdef WITHDEF
-// This isn't a very good send function.
-id objc_msgSend(int x) {
-  return 0;
-}
-
-// rdar://6800430
-void objc_assign_weak(id value, id *location) {
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/sel-as-builtin-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/sel-as-builtin-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/sel-as-builtin-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// pr5025
-// radar 7405040
-
-typedef const struct objc_selector {
-  void *sel_id;
-  const char *sel_types;
-} *SEL;
-
- at interface I2
-+(id) dictionary;
- at end
-
- at implementation I3; // expected-warning {{cannot find interface declaration for 'I3'}}
-+(void) initialize {
-  I2 *a0 = [I2 dictionary];
-}
- at end
-
-int func(SEL s1, SEL s2)
-{
-        return s1->sel_id == s2->sel_id;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/selector-ref-invariance.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/selector-ref-invariance.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/selector-ref-invariance.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -emit-llvm -fblocks -o - %s | FileCheck %s
-
-// rdar://6027699
-
-void test(id x) {
-// CHECK: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_", !invariant.load
-// CHECK: @objc_msgSend
-  [x foo];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/simplify-exceptions.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/simplify-exceptions.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/simplify-exceptions.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm \
-// RUN:   -fexceptions -fobjc-exceptions \
-// RUN:   -o %t %s
-// RUN: FileCheck < %t %s
-//
-// <rdar://problem/7471679> [irgen] [eh] Exception code built with clang (x86_64) crashes
-
-// Check that we don't emit unnecessary personality function references.
-struct t0_A { t0_A(); };
-struct t0_B { t0_A a; };
-
-// CHECK: define {{.*}} @_Z2t0v(){{.*}} {
-// CHECK-NOT: objc_personality
-// CHECK: }
-t0_B& t0() {
- static t0_B x;
- return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/stand-alone-implementation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/stand-alone-implementation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/stand-alone-implementation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-X86-64 %s
-
-// radar 7547942
-// Allow injection of ivars into implementation's implicit class.
-
- at implementation INTFSTANDALONE // expected-warning {{cannot find interface declaration for 'INTFSTANDALONE'}}
-{
-  id IVAR1;
-  id IVAR2;
-}
-- (id) Meth { return IVAR1; }
- at end
-
-// CHECK-X86-64: @"OBJC_IVAR_$_INTFSTANDALONE.IVAR1"
-// CHECK-X86-64: @"OBJC_IVAR_$_INTFSTANDALONE.IVAR2"
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-classmethod-category.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-classmethod-category.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-classmethod-category.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface SUPER
-+ (void)Meth;
- at end
-
- at interface CURRENT : SUPER
-+ (void)Meth;
- at end
-
- at implementation CURRENT(CAT)
-+ (void)Meth { [super Meth]; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-dotsyntax-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-dotsyntax-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-dotsyntax-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
- at interface B
-{
-  int _parent;
-}
- at property int parent;
-  +(int) classGetter;
-  +(void) setClassGetter:(int) arg;
-
-  -(int) getter;
-  -(void) setGetter:(int)arg;
- at end
-
- at interface A : B
- at end
-
- at implementation A
-+(int) classGetter {
-  return 0;
-}
-
-+(int) classGetter2 {
-  super.classGetter = 100;
-  return super.classGetter;
-}
-
--(void) method {
-  super.getter = 200;
-  int x = super.getter;
-}
--(void) setParent : (int) arg {
-  super.parent = arg + super.parent;
-  
-}
- at end
-
-void f0() {
-  int l1 = A.classGetter;
-  int l2 = [A classGetter2];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-dotsyntax-struct-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-dotsyntax-struct-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-dotsyntax-struct-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -emit-llvm %s -o -  | FileCheck %s
-// rdar: // 8203426
-
-
-typedef double CGFloat;
-struct CGPoint {
-  CGFloat x;
-  CGFloat y;
-};
-typedef struct CGPoint CGPoint;
-
-
-
-struct CGSize {
-  CGFloat width;
-  CGFloat height;
-};
-typedef struct CGSize CGSize;
-
-
-struct CGRect {
-  CGPoint origin;
-  CGSize size;
-};
-typedef struct CGRect CGRect;
-
- at interface UIView {
-}
- at property CGRect frame;
- at end
-
- at interface crashclass : UIView {
-
-}
-
- at end
-
- at implementation crashclass
-- (void)setFrame:(CGRect)frame
-{
-        super.frame = frame;
-	[super setFrame:frame];
-}
-
- at end
-// CHECK-NOT: declare void @objc_msgSendSuper2_stret
-// CHECK: declare i8* @objc_msgSendSuper2

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-message-fragileabi.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-message-fragileabi.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/super-message-fragileabi.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm %s -o - | FileCheck %s
-
- at class  Some;
-
- at protocol Proto
-- (id)initSome:(Some *)anArg;
- at end
-
-
- at interface Table <Proto>
- at end
-
- at interface BetterTable: Table
-
-- (id)initSome:(Some *)arg;
-
- at end
-
- at implementation BetterTable
-
-- (id)initSome:(Some *)arg {
-
- if(self=[super initSome:arg])
- {
-	;
- }
-// CHECK: load %struct._objc_class** getelementptr inbounds (%struct._objc_class* @"\01L_OBJC_CLASS_BetterTable", i32 0, i32 1)
-
- return self;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synchronized.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synchronized.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synchronized.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i686-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -o - %s -O2 | FileCheck %s
-
- at interface MyClass
-{
-}
-- (void)method;
- at end
-
- at implementation MyClass
-
-// CHECK: define internal void @"\01-[MyClass method]"
-- (void)method
-{
-  // CHECK: call i32 @objc_sync_enter
-  // CHECK: call void @objc_exception_try_enter
-  // CHECK: call i32 @_setjmp
-  @synchronized(self) {
-  }
-}
-
- at end
-
-// CHECK: define void @foo(
-void foo(id a) {
-  // CHECK: [[A:%.*]] = alloca i8*
-  // CHECK: [[SYNC:%.*]] = alloca i8*
-
-  // CHECK:      store i8* [[AVAL:%.*]], i8** [[A]]
-  // CHECK-NEXT: call i32 @objc_sync_enter(i8* [[AVAL]])
-  // CHECK-NEXT: store i8* [[AVAL]], i8** [[SYNC]]
-  // CHECK-NEXT: call void @objc_exception_try_enter
-  // CHECK:      call i32 @_setjmp
-  @synchronized(a) {
-    // This is unreachable, but the optimizers can't know that.
-    // CHECK: call void asm sideeffect "", "=*m,=*m,=*m"(i8** [[A]], i8** [[SYNC]]
-    // CHECK: call i32 @objc_sync_exit
-    // CHECK: call i8* @objc_exception_extract
-    // CHECK: call void @objc_exception_throw
-    // CHECK: unreachable
-
-    // CHECK:      call void @objc_exception_try_exit
-    // CHECK:      [[T:%.*]] = load i8** [[SYNC]]
-    // CHECK-NEXT: call i32 @objc_sync_exit
-    // CHECK: ret void
-    return;
-  }
-
-}
-
-// CHECK: define i32 @f0(
-int f0(id a) {
-  // TODO: we can optimize the ret to a constant if we can figure out
-  // either that x isn't stored to within the synchronized block or
-  // that the synchronized block can't longjmp.
-
-  // CHECK: [[X:%.*]] = alloca i32
-  // CHECK: store i32 1, i32* [[X]]
-  int x = 0;
-  @synchronized((x++, a)) {    
-  }
-
-  // CHECK: [[T:%.*]] = load i32* [[X]]
-  // CHECK: ret i32 [[T]]
-  return x;
-}
-
-// CHECK: define void @f1(
-void f1(id a) {
-  // Check that the return doesn't go through the cleanup.
-  extern void opaque(void);
-  opaque();
-
-  // CHECK: call void @opaque()
-  // CHECK-NEXT: ret void
-
-  @synchronized(({ return; }), a) {
-    return;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synthesize_ivar-cont-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synthesize_ivar-cont-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synthesize_ivar-cont-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-
-// PR13820
-// REQUIRES: LP64
-
- at interface XCOrganizerNodeInfo
- at property (readonly, retain) id viewController;
- at end
-
- at interface XCOrganizerDeviceNodeInfo : XCOrganizerNodeInfo
- at end
-
- at interface XCOrganizerDeviceNodeInfo()
- at property (retain) id viewController;
- at end
-
- at implementation XCOrganizerDeviceNodeInfo
- at synthesize viewController;
-// CHECK: @"OBJC_IVAR_$_XCOrganizerDeviceNodeInfo.viewController"
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synthesize_ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synthesize_ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/synthesize_ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-
-// PR13820
-// REQUIRES: LP64
-
- at interface I
- at property int IP;
- at end
-
- at implementation I
- at synthesize IP;
-- (int) Meth {
-   return IP;
-}
- at end
-
-// Test for synthesis of ivar for a property
-// declared in continuation class.
- at interface OrganizerViolatorView
- at end
-
- at interface OrganizerViolatorView()
- at property (retain) id bindingInfo;
- at end
-
- at implementation OrganizerViolatorView
- at synthesize bindingInfo;
- at end
-
-// <rdar://problem/7336352> [irgen] crash in synthesized property construction
-
- at interface I0 @end
- at protocol P0 @end
- at interface I1 {
-  I0<P0> *iv0;
-}
- at property (assign, readwrite) id p0;
- at end
- at implementation I1
- at synthesize p0 = iv0;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/tentative-cfconstantstring.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/tentative-cfconstantstring.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/tentative-cfconstantstring.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-// rdar://13598026
-
- at interface NSObject @end
-
- at class NSString;
-
-int __CFConstantStringClassReference[24];
-
- at interface Bar : NSObject
-+(void)format:(NSString *)format,...;
- at end
-
- at interface Foo : NSObject
- at end
-
-
-static inline void _inlineFunction() {
-    [Bar format:@" "];
-}
-
- at implementation Foo
-
-
-+(NSString *)someMethod {
-   return @"";
-}
-
--(void)someMethod {
-   _inlineFunction();
-}
- at end
-
-// CHECK: @__CFConstantStringClassReference = common global [24 x i32] zeroinitializer, align 16
-// CHECK: @_unnamed_cfstring_{{.*}} = private constant %struct.NSConstantString { i32* getelementptr inbounds ([24 x i32]* @__CFConstantStringClassReference, i32 0, i32 0)
-
-// CHECK: define internal void @_inlineFunction()
-// CHECK:  [[ZERO:%.*]] = load %struct._class_t** @"\01L_OBJC_CLASSLIST_REFERENCES_
-// CHECK-NEXT:   [[ONE:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_"
-// CHECK-NEXT:   [[TWO:%.*]] = bitcast %struct._class_t* [[ZERO]] to i8*
-// CHECK-NEXT:   call void (i8*, i8*, [[T:%.*]]*, ...)* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, [[T:%.*]]*, ...)*)(i8* [[TWO]], i8* [[ONE]], [[T:%.*]]* bitcast (%struct.NSConstantString* @_unnamed_cfstring_{{.*}} to [[T:%.*]]*))
-// CHECK-NEXT:   ret void
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/terminate.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/terminate.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/terminate.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.8 -emit-llvm -fexceptions -fobjc-exceptions -o - %s | FileCheck %s -check-prefix=CHECK-WITH
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.7 -emit-llvm -fexceptions -fobjc-exceptions -o - %s | FileCheck %s -check-prefix=CHECK-WITHOUT
-
-void destroy(void**);
-
-// rdar://problem/9519113
-void test0(void) {
-  void test0_helper(void);
-  void *ptr __attribute__((cleanup(destroy)));
-  test0_helper();
-
-  // CHECK-WITH:       define void @test0()
-  // CHECK-WITH:         [[PTR:%.*]] = alloca i8*,
-  // CHECK-WITH:         call void @destroy(i8** [[PTR]])
-  // CHECK-WITH-NEXT:    ret void
-  // CHECK-WITH:         invoke void @destroy(i8** [[PTR]])
-  // CHECK-WITH:         landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gcc_personality_v0 to i8*)
-  // CHECK-WITH-NEXT:      catch i8* null
-  // CHECK-WITH-NEXT:    call void @objc_terminate()
-
-  // CHECK-WITHOUT:    define void @test0()
-  // CHECK-WITHOUT:      [[PTR:%.*]] = alloca i8*,
-  // CHECK-WITHOUT:      call void @destroy(i8** [[PTR]])
-  // CHECK-WITHOUT-NEXT: ret void
-  // CHECK-WITHOUT:      invoke void @destroy(i8** [[PTR]])
-  // CHECK-WITHOUT:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gcc_personality_v0 to i8*)
-  // CHECK-WITHOUT-NEXT:   catch i8* null
-  // CHECK-WITHOUT-NEXT: call void @abort()
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/try.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/try.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/try.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// REQUIRES: x86-registered-target,x86-64-registered-target
-// RUN: %clang_cc1 %s -fobjc-exceptions -S -o - -triple=i686-apple-darwin9
-// RUN: %clang_cc1 %s -fobjc-exceptions -S -o - -triple=x86_64-apple-darwin9
-
-// rdar://6757213 - Don't crash if the internal proto for
-// __objc_personality_v0 mismatches with an actual one.
-void __objc_personality_v0() { }
-void test1(void) {
-  @try { } @catch (...) { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/undefined-protocol.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/undefined-protocol.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/undefined-protocol.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -fobjc-runtime=gcc %s
-
-// PR13820
-// REQUIRES: LP64
-
- at protocol MadeUpProtocol;
-
- at interface Object <MadeUpProtocol> @end
- at implementation Object @end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/unname-bf-metadata.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/unname-bf-metadata.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/unname-bf-metadata.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o %t %s
-// Test that meta-data for ivar lists with unnamed bitfield are generated.
-//
- at interface Foo {
- at private
-    int first;
-    int :1;
-    int third :1;
-    int :1;
-    int fifth :1;
-}
- at end
- at implementation Foo 
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/unoptimized-setter.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/unoptimized-setter.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/unoptimized-setter.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=macosx-10.6.0 -triple x86_64-apple-macosx10.6.0 -o - | FileCheck %s
-// rdar://11858187
-
- at interface I
-// void objc_setProperty_nonatomic(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., NO, NO) 
- at property (nonatomic, retain) id nonatomicProperty;
-
-// void objc_setProperty_nonatomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., NO, YES)
- at property (nonatomic, copy) id nonatomicPropertyCopy;
-
-// void objc_setProperty_atomic(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., YES, NO)
- at property (retain) id atomicProperty;
-
-// void objc_setProperty_atomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset);
-// objc_setProperty(..., YES, YES)
- at property (copy) id atomicPropertyCopy;
- at end
-
- at implementation I
- at synthesize nonatomicProperty;
- at synthesize nonatomicPropertyCopy;
- at synthesize atomicProperty;
- at synthesize atomicPropertyCopy;
- at end
-
-// CHECK-NOT: call void @objc_setProperty_nonatomic
-// CHECK-NOT: call void @objc_setProperty_nonatomic_copy
-// CHECK-NOT: call void @objc_setProperty_atomic
-// CHECK-NOT: call void @objc_setProperty_atomic_copy

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/variadic-sends.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/variadic-sends.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/variadic-sends.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-X86-32 %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck -check-prefix=CHECK-X86-64 %s
-
- at interface A
--(void) im0;
--(void) im1: (int) x;
--(void) im2: (int) x, ...;
- at end
-
-void f0(A *a) {
-  // CHECK-X86-32: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*)*)
-  // CHECK-X86-64: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*)*)
-  [a im0];
-}
-
-void f1(A *a) {
-  // CHECK-X86-32: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)
-  // CHECK-X86-64: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32)*)
-  [a im1: 1];
-}
-
-void f2(A *a) {
-  // CHECK-X86-32: call void (i8*, i8*, i32, ...)* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32, ...)*)
-  // CHECK-X86-64: call void (i8*, i8*, i32, ...)* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i32, ...)*)
-  [a im2: 1, 2];
-}
-
- at interface B : A @end
- at implementation B : A
--(void) foo {
-  // CHECK-X86-32: call void bitcast (i8* (%struct._objc_super*, i8*, ...)* @objc_msgSendSuper to void (%struct._objc_super*, i8*, i32)*)
-  // CHECK-X86-64: call void bitcast (i8* (%struct._objc_super*, i8*, ...)* @objc_msgSendSuper to void (%struct._objc_super*, i8*, i32)*)
-  [super im1: 1];
-}
--(void) bar {
-  // CHECK-X86-32: call void (%struct._objc_super*, i8*, i32, ...)* bitcast (i8* (%struct._objc_super*, i8*, ...)* @objc_msgSendSuper to void (%struct._objc_super*, i8*, i32, ...)*)
-  // CHECK-X86-64: call void (%struct._objc_super*, i8*, i32, ...)* bitcast (i8* (%struct._objc_super*, i8*, ...)* @objc_msgSendSuper to void (%struct._objc_super*, i8*, i32, ...)*)
-  [super im2: 1, 2];
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjC/x86_64-struct-return-gc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjC/x86_64-struct-return-gc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjC/x86_64-struct-return-gc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -fobjc-gc -emit-llvm -o - %s | FileCheck %s
-struct Coerce {
-  id a;
-};
-
-struct Coerce coerce_func(void);
-
-// CHECK: define void @Coerce_test()
-void Coerce_test(void) {
-  struct Coerce c;
-  
-  // CHECK: call i8* @coerce_func
-  // CHECK: call i8* @objc_memmove_collectable(
-  c = coerce_func();
-}
-
-struct Indirect {
-  id a;
-  int b[10];
-};
-
-struct Indirect indirect_func(void);
-
-// CHECK: define void @Indirect_test()
-void Indirect_test(void) {
-  struct Indirect i;
-  
-  // CHECK: call void @indirect_func(%struct.Indirect* sret
-  // CHECK: call i8* @objc_memmove_collectable(
-  i = indirect_func();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2007-10-03-MetadataPointers.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2007-10-03-MetadataPointers.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2007-10-03-MetadataPointers.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-
- at class NSImage;
-void bork() {
-  NSImage *nsimage;
-  [nsimage release];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2010-08-04-Template.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2010-08-04-Template.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2010-08-04-Template.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-struct TRunSoon {
-  template <class P1> static void Post() {}
-};
-
- at implementation TPrivsTableViewMainController
-- (void) applyToEnclosed {
-  TRunSoon::Post<int>();
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2010-08-06-X.Y-syntax.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2010-08-06-X.Y-syntax.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/2010-08-06-X.Y-syntax.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o -
-struct TFENode {
-  TFENode(const TFENode& inNode);
-};
-
- at interface TIconViewController
-- (const TFENode&) target;
- at end
-
-void sortAllChildrenForNode(const TFENode&node);
-
- at implementation TIconViewController
-- (void) setArrangeBy {
-  sortAllChildrenForNode(self.target);
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/Inputs/literal-support.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/Inputs/literal-support.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/Inputs/literal-support.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-#ifndef OBJC_LITERAL_SUPPORT_H
-#define OBJC_LITERAL_SUPPORT_H
-
-typedef unsigned char BOOL;
-
- at interface NSNumber @end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
- at end
-
- at interface NSArray
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
- at end
-
-#endif // OBJC_LITERAL_SUPPORT_H

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/address-safety-attr.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/address-safety-attr.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/address-safety-attr.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck -check-prefix=WITHOUT %s
-// RUN: %clang_cc1 -emit-llvm -o - %s -fsanitize=address | FileCheck -check-prefix=ASAN %s
-
- at interface MyClass
-+ (int) addressSafety:(int*)a;
- at end
-
- at implementation MyClass
-
-// WITHOUT:  +[MyClass load]{{.*}}#0
-// ASAN: +[MyClass load]{{.*}}#0
-+(void) load { }
-
-// WITHOUT:  +[MyClass addressSafety:]{{.*}}#0
-// ASAN:  +[MyClass addressSafety:]{{.*}}#0
-+ (int) addressSafety:(int*)a { return *a; }
-
- at end
-
-// ASAN: attributes #0 = {{.*}}sanitize_address
-// WITHOUT-NOT: attributes #0 = {{.*}}sanitize_address

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-attrs.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-attrs.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-attrs.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -emit-llvm -fobjc-arc -O0 -o - %s | FileCheck %s
-
-id makeObject1() __attribute__((ns_returns_retained));
-id makeObject2() __attribute__((ns_returns_retained));
-void releaseObject(__attribute__((ns_consumed)) id);
-
-// CHECK: define void @_Z10sanityTestv
-void sanityTest() {
-  // CHECK: [[X:%.*]] = alloca i8*, align 8
-  // CHECK-NEXT: [[OBJ1:%.*]] = call i8* @_Z11makeObject1v()
-  // CHECK-NEXT: store i8* [[OBJ1]], i8** [[X]], align 8
-  id x = makeObject1();
-
-  // CHECK-NEXT: [[OBJ2:%.*]] = call i8* @_Z11makeObject2v()
-  // CHECK-NEXT: call void @_Z13releaseObjectP11objc_object(i8* [[OBJ2]])
-  releaseObject(makeObject2());
-
-  // CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)
-  // CHECK-NEXT: ret void
-}
-
-
-template <typename T>
-T makeObjectT1() __attribute__((ns_returns_retained));
-template <typename T>
-T makeObjectT2() __attribute__((ns_returns_retained));
-
-template <typename T>
-void releaseObjectT(__attribute__((ns_consumed)) T);  
-
-// CHECK: define void @_Z12templateTestv
-void templateTest() {
-  // CHECK: [[X:%.*]] = alloca i8*, align 8
-  // CHECK-NEXT: [[OBJ1:%.*]] = call i8* @_Z12makeObjectT1IU8__strongP11objc_objectET_v()
-  // CHECK-NEXT: store i8* [[OBJ1]], i8** [[X]], align 8
-  id x = makeObjectT1<id>();
-
-  // CHECK-NEXT: [[OBJ2:%.*]] = call i8* @_Z12makeObjectT2IU8__strongP11objc_objectET_v()
-  // CHECK-NEXT: call void @_Z13releaseObjectP11objc_object(i8* [[OBJ2]])
-  releaseObject(makeObjectT2<id>());
-
-  // CHECK-NEXT: [[OBJ3:%.*]] = call i8* @_Z11makeObject1v()
-  // CHECK-NEXT: call void @_Z14releaseObjectTIU8__strongP11objc_objectEvT_(i8* [[OBJ3]])
-  releaseObjectT(makeObject1());
-
-  // CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-blocks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-blocks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-blocks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-runtime-has-weak -fblocks -fobjc-arc -o - %s | FileCheck %s
-
-// CHECK: [[A:.*]] = type { i64, [10 x i8*] }
-
-// CHECK: [[LAYOUT0:@.*]] = internal global [3 x i8] c" 9\00"
-
-// rdar://13045269
-// If a __block variable requires extended layout information *and*
-// a copy/dispose helper, be sure to adjust the offsets used in copy/dispose.
-namespace test0 {
-  struct A {
-    unsigned long count;
-    id data[10];
-  };
-
-  void foo() {
-    __block A v;
-  }
-  // CHECK:    define void @_ZN5test03fooEv() 
-  // CHECK:      [[V:%.*]] = alloca [[BYREF_A:%.*]], align 8
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds [[BYREF_A]]* [[V]], i32 0, i32 4
-  // CHECK-NEXT: store i8* bitcast (void (i8*, i8*)* [[COPY_HELPER:@.*]] to i8*), i8** [[T0]]
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[BYREF_A]]* [[V]], i32 0, i32 5
-  // CHECK-NEXT: store i8* bitcast (void (i8*)* [[DISPOSE_HELPER:@.*]] to i8*), i8** [[T0]]
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[BYREF_A]]* [[V]], i32 0, i32 6
-  // CHECK-NEXT: store i8* getelementptr inbounds ([3 x i8]* [[LAYOUT0]], i32 0, i32 0), i8** [[T0]]
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[BYREF_A]]* [[V]], i32 0, i32 7
-  // CHECK-NEXT: call void @_ZN5test01AC1Ev([[A]]* [[T0]])
-  // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[BYREF_A]]* [[V]], i32 0, i32 7
-  // CHECK-NEXT: [[T1:%.*]] = bitcast [[BYREF_A]]* [[V]] to i8*
-  // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T1]], i32 8)
-  // CHECK-NEXT: call void @_ZN5test01AD1Ev([[A]]* [[T0]])
-  // CHECK-NEXT: ret void
-
-  // CHECK:    define internal void [[COPY_HELPER]](
-  // CHECK:      [[T0:%.*]] = bitcast i8* {{.*}} to [[BYREF_A]]*
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[BYREF_A]]* [[T0]], i32 0, i32 7
-  // CHECK-NEXT: load
-  // CHECK-NEXT: [[T2:%.*]] = bitcast i8* {{.*}} to [[BYREF_A]]*
-  // CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds [[BYREF_A]]* [[T2]], i32 0, i32 7
-  // CHECK-NEXT: call void @_ZN5test01AC1ERKS0_([[A]]* [[T1]], [[A]]* [[T3]])
-  // CHECK-NEXT: ret void
-
-  // CHECK:    define internal void [[DISPOSE_HELPER]](
-  // CHECK:      [[T0:%.*]] = bitcast i8* {{.*}} to [[BYREF_A]]*
-  // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[BYREF_A]]* [[T0]], i32 0, i32 7
-  // CHECK-NEXT: call void @_ZN5test01AD1Ev([[A]]* [[T1]])
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-exceptions.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-exceptions.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-exceptions.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,124 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -fexceptions -fobjc-exceptions -fcxx-exceptions -fobjc-runtime-has-weak -o - -fobjc-arc-exceptions %s | FileCheck %s
-
- at class Ety;
-
-// These first four tests are all PR11732 / rdar://problem/10667070.
-
-void test0_helper(void);
-void test0(void) {
-  @try {
-    test0_helper();
-  } @catch (Ety *e) {
-  }
-}
-// CHECK: define void @_Z5test0v()
-// CHECK:      [[E:%.*]] = alloca [[ETY:%.*]]*, align 8
-// CHECK-NEXT: invoke void @_Z12test0_helperv()
-// CHECK:      [[T0:%.*]] = call i8* @objc_begin_catch(
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]]) [[NUW:#[0-9]+]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[ETY]]*
-// CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) [[NUW]]
-// CHECK-NEXT: call void @objc_end_catch() [[NUW]]
-
-void test1_helper(void);
-void test1(void) {
-  @try {
-    test1_helper();
-  } @catch (__weak Ety *e) {
-  }
-}
-// CHECK: define void @_Z5test1v()
-// CHECK:      [[E:%.*]] = alloca [[ETY:%.*]]*, align 8
-// CHECK-NEXT: invoke void @_Z12test1_helperv()
-// CHECK:      [[T0:%.*]] = call i8* @objc_begin_catch(
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[ETY]]* [[T1]] to i8*
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) [[NUW]]
-// CHECK-NEXT: call void @objc_end_catch() [[NUW]]
-
-void test2_helper(void);
-void test2(void) {
-  try {
-    test2_helper();
-  } catch (Ety *e) {
-  }
-}
-// CHECK: define void @_Z5test2v()
-// CHECK:      [[E:%.*]] = alloca [[ETY:%.*]]*, align 8
-// CHECK-NEXT: invoke void @_Z12test2_helperv()
-// CHECK:      [[T0:%.*]] = call i8* @__cxa_begin_catch(
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]]) [[NUW]]
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[ETY]]*
-// CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) [[NUW]]
-// CHECK-NEXT: call void @__cxa_end_catch() [[NUW]]
-
-void test3_helper(void);
-void test3(void) {
-  try {
-    test3_helper();
-  } catch (Ety * __weak e) {
-  }
-}
-// CHECK: define void @_Z5test3v()
-// CHECK:      [[E:%.*]] = alloca [[ETY:%.*]]*, align 8
-// CHECK-NEXT: invoke void @_Z12test3_helperv()
-// CHECK:      [[T0:%.*]] = call i8* @__cxa_begin_catch(
-// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*
-// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: [[T3:%.*]] = bitcast [[ETY]]* [[T1]] to i8*
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) [[NUW]]
-// CHECK-NEXT: call void @__cxa_end_catch() [[NUW]]
-
-namespace test4 {
-  struct A {
-    id single;
-    id array[2][3];
-
-    A();
-  };
-
-  A::A() {
-    throw 0;
-  }
-  // CHECK:    define void @_ZN5test41AC2Ev(
-  // CHECK:      [[THIS:%.*]] = load [[A:%.*]]** {{%.*}}
-  //   Construct single.
-  // CHECK-NEXT: [[SINGLE:%.*]] = getelementptr inbounds [[A]]* [[THIS]], i32 0, i32 0
-  // CHECK-NEXT: store i8* null, i8** [[SINGLE]], align 8
-  //   Construct array.
-  // CHECK-NEXT: [[ARRAY:%.*]] = getelementptr inbounds [[A]]* [[THIS]], i32 0, i32 1
-  // CHECK-NEXT: [[T0:%.*]] = bitcast [2 x [3 x i8*]]* [[ARRAY]] to i8*
-  // CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[T0]], i8 0, i64 48, i32 8, i1 false)
-  //   throw 0;
-  // CHECK:      invoke void @__cxa_throw(
-  //   Landing pad from throw site:
-  // CHECK:      landingpad
-  //     - First, destroy all of array.
-  // CHECK:      [[ARRAYBEGIN:%.*]] = getelementptr inbounds [2 x [3 x i8*]]* [[ARRAY]], i32 0, i32 0, i32 0
-  // CHECK-NEXT: [[ARRAYEND:%.*]] = getelementptr inbounds i8** [[ARRAYBEGIN]], i64 6
-  // CHECK-NEXT: br label
-  // CHECK:      [[AFTER:%.*]] = phi i8** [ [[ARRAYEND]], {{%.*}} ], [ [[ELT:%.*]], {{%.*}} ]
-  // CHECK-NEXT: [[ELT]] = getelementptr inbounds i8** [[AFTER]], i64 -1
-  // CHECK-NEXT: call void @objc_storeStrong(i8** [[ELT]], i8* null) [[NUW]]
-  // CHECK-NEXT: [[DONE:%.*]] = icmp eq i8** [[ELT]], [[ARRAYBEGIN]]
-  // CHECK-NEXT: br i1 [[DONE]],
-  //     - Next, destroy single.
-  // CHECK:      call void @objc_storeStrong(i8** [[SINGLE]], i8* null) [[NUW]]
-  // CHECK:      br label
-  // CHECK:      resume
-}
-
-// CHECK: attributes [[NUW]] = { nounwind }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-globals.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-globals.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-globals.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-
-// Test that we're properly retaining lifetime-qualified pointers
-// initialized statically and wrapping up those initialization in an
-// autorelease pool.
-id getObject();
-
-// CHECK: define internal void @__cxx_global_var_init
-// CHECK: call i8* @_Z9getObjectv
-// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue
-// CHECK-NEXT: {{store i8*.*@global_obj}}
-// CHECK-NEXT: ret void
-id global_obj = getObject();
-
-// CHECK: define internal void @__cxx_global_var_init
-// CHECK: call i8* @_Z9getObjectv
-// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue
-// CHECK-NEXT: {{store i8*.*@global_obj2}}
-// CHECK-NEXT: ret void
-id global_obj2 = getObject();
-
-// CHECK: define internal void @_GLOBAL__I_a
-// CHECK: call i8* @objc_autoreleasePoolPush()
-// CHECK-NEXT: call void @__cxx_global_var_init
-// CHECK-NEXT: call void @__cxx_global_var_init1
-// CHECK-NEXT: call void @objc_autoreleasePoolPop(
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-mangle.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-mangle.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-mangle.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -fobjc-runtime-has-weak -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: define void @_Z1fPU8__strongP11objc_object(i8**)
-void f(__strong id *) {}
-// CHECK: define void @_Z1fPU6__weakP11objc_object(i8**)
-void f(__weak id *) {}
-// CHECK: define void @_Z1fPU15__autoreleasingP11objc_object(i8**)
-void f(__autoreleasing id *) {}
-// CHECK: define void @_Z1fPP11objc_object(i8**)
-void f(__unsafe_unretained id *) {}
-// CHECK: define void @_Z1fPKU8__strongP11objc_object(i8**)
-void f(const __strong id *) {}
-// CHECK: define void @_Z1fPKU6__weakP11objc_object(i8**)
-void f(const __weak id *) {}
-// CHECK: define void @_Z1fPKU15__autoreleasingP11objc_object(i8**)
-void f(const __autoreleasing id *) {}
-// CHECK: define void @_Z1fPKP11objc_object(i8**)
-void f(const __unsafe_unretained id *) {}
-
-
-template<unsigned N> struct unsigned_c { };
-
-// CHECK: define weak_odr void @_Z1gIKvEvP10unsigned_cIXplszv1U8__bridgecvPT_v1U8__bridgecvP11objc_objectcvS3_Li0ELi1EEE
-template<typename T>void g(unsigned_c<sizeof((__bridge T*)(__bridge id)(T*)0) + 1>*) {}
-template void g<const void>(unsigned_c<sizeof(id) + 1> *);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-move.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-move.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-move.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -O2 -std=c++11 -disable-llvm-optzns -o - %s | FileCheck %s
-
-// define void @_Z11simple_moveRU8__strongP11objc_objectS2_
-void simple_move(__strong id &x, __strong id &y) {
-  // CHECK: = load i8**
-  // CHECK: store i8* null
-  // CHECK: = load i8**
-  // CHECK: store i8*
-  // CHECK-NEXT: call void @objc_release
-  x = static_cast<__strong id&&>(y);
-  // CHECK-NEXT: ret void
-}
-
-template<typename T>
-struct remove_reference {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_reference<T&> {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_reference<T&&> {
-  typedef T type;
-};
-
-template<typename T> 
-typename remove_reference<T>::type&& move(T &&x) { 
-  return static_cast<typename remove_reference<T>::type&&>(x); 
-}
-
-// CHECK: define void @_Z12library_moveRU8__strongP11objc_objectS2_
-void library_move(__strong id &x, __strong id &y) {
-  // CHECK: call i8** @_Z4moveIRU8__strongP11objc_objectEON16remove_referenceIT_E4typeEOS5_
-  // CHECK: load i8**
-  // CHECK: store i8* null, i8**
-  // CHECK: load i8***
-  // CHECK-NEXT: load i8**
-  // CHECK-NEXT: store i8*
-  // CHECK-NEXT: call void @objc_release
-  // CHECK-NEXT: ret void
-  x = move(y);
-}
-
-// CHECK: define void @_Z12library_moveRU8__strongP11objc_object
-void library_move(__strong id &y) {
-  // CHECK: [[Y:%[a-zA-Z0-9]+]] = call i8** @_Z4moveIRU8__strongP11objc_objectEON16remove_referenceIT_E4typeEOS5_
-  // Load the object
-  // CHECK-NEXT: [[OBJ:%[a-zA-Z0-9]+]] = load i8** [[Y]]
-  // Null out y
-  // CHECK-NEXT: store i8* null, i8** [[Y]]
-  // Initialize x with the object
-  // CHECK-NEXT: store i8* [[OBJ]], i8** [[X:%[a-zA-Z0-9]+]]
-  id x = move(y);
-
-  // CHECK-NEXT: store i32 17
-  int i = 17;
-  // CHECK-NEXT: [[OBJ:%[a-zA-Z0-9]+]] = load i8** [[X]]
-  // CHECK-NEXT: call void @objc_release(i8* [[OBJ]])
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @_Z10const_moveRKU8__strongP11objc_object(
-void const_move(const __strong id &x) {
-  // CHECK:      [[Y:%.*]] = alloca i8*,
-  // CHECK:      [[X:%.*]] = call i8** @_Z4moveIRKU8__strongP11objc_objectEON16remove_referenceIT_E4typeEOS5_(
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]]
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-  // CHECK-NEXT: store i8* [[T1]], i8** [[Y]]
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[Y]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T0]])
-  id y = move(x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-new-delete.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-new-delete.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-new-delete.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -fobjc-runtime-has-weak -fblocks -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s | FileCheck %s
-
-typedef __strong id strong_id;
-typedef __weak id weak_id;
-
-// CHECK: define void @_Z8test_newP11objc_object
-void test_new(id invalue) {
-  // CHECK: [[INVALUEADDR:%.*]] = alloca i8*
-  // CHECK-NEXT: store i8* null, i8** [[INVALUEADDR]]
-  // CHECK-NEXT: call void @objc_storeStrong(i8** [[INVALUEADDR]], i8* [[INVALUE:%.*]])
-
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK-NEXT: {{bitcast i8\*.*to i8\*\*}}
-  // CHECK-NEXT: store i8* null, i8**
-  new strong_id;
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK-NEXT: {{bitcast i8\*.*to i8\*\*}}
-  // CHECK-NEXT: store i8* null, i8**
-  new weak_id;
-
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK-NEXT: {{bitcast i8\*.*to i8\*\*}}
-  // CHECK-NEXT: store i8* null, i8**
-  new __strong id;
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK-NEXT: {{bitcast i8\*.*to i8\*\*}}
-  // CHECK-NEXT: store i8* null, i8**
-  new __weak id;
-
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK: call i8* @objc_retain
-  // CHECK: store i8*
-  new __strong id(invalue);
-
-  // CHECK: call noalias i8* @_Znwm
-  // CHECK: call i8* @objc_initWeak
-  new __weak id(invalue);
-
-  // CHECK: call void @objc_storeStrong
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z14test_array_new
-void test_array_new() {
-  // CHECK: call noalias i8* @_Znam
-  // CHECK: store i64 17, i64*
-  // CHECK: call void @llvm.memset.p0i8.i64
-  new strong_id[17];
-
-  // CHECK: call noalias i8* @_Znam
-  // CHECK: store i64 17, i64*
-  // CHECK: call void @llvm.memset.p0i8.i64
-  new weak_id[17];
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z11test_deletePU8__strongP11objc_objectPU6__weakS0_
-void test_delete(__strong id *sptr, __weak id *wptr) {
-  // CHECK: br i1
-  // CHECK: load i8**
-  // CHECK-NEXT: call void @objc_release
-  // CHECK: call void @_ZdlPv
-  delete sptr;
-
-  // CHECK: call void @objc_destroyWeak
-  // CHECK: call void @_ZdlPv
-  delete wptr;
-
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z17test_array_deletePU8__strongP11objc_objectPU6__weakS0_
-void test_array_delete(__strong id *sptr, __weak id *wptr) {
-  // CHECK: icmp eq i8** [[BEGIN:%.*]], null
-  // CHECK: [[LEN:%.*]] = load i64* {{%.*}}
-  // CHECK: [[END:%.*]] = getelementptr inbounds i8** [[BEGIN]], i64 [[LEN]]
-  // CHECK-NEXT: icmp eq i8** [[BEGIN]], [[END]]
-  // CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]],
-  // CHECK-NEXT: [[CUR]] = getelementptr inbounds i8** [[PAST]], i64 -1
-  // CHECK-NEXT: call void @objc_storeStrong(i8** [[CUR]], i8* null)
-  // CHECK-NEXT: icmp eq i8** [[CUR]], [[BEGIN]]
-  // CHECK: call void @_ZdaPv
-  delete [] sptr;
-
-  // CHECK: icmp eq i8** [[BEGIN:%.*]], null
-  // CHECK: [[LEN:%.*]] = load i64* {{%.*}}
-  // CHECK: [[END:%.*]] = getelementptr inbounds i8** [[BEGIN]], i64 [[LEN]]
-  // CHECK-NEXT: icmp eq i8** [[BEGIN]], [[END]]
-  // CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]],
-  // CHECK-NEXT: [[CUR]] = getelementptr inbounds i8** [[PAST]], i64 -1
-  // CHECK-NEXT: call void @objc_destroyWeak(i8** [[CUR]])
-  // CHECK-NEXT: icmp eq i8** [[CUR]], [[BEGIN]]
-  // CHECK: call void @_ZdaPv
-  delete [] wptr;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-pseudo-destructors.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-pseudo-destructors.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-pseudo-destructors.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -fobjc-runtime-has-weak -fblocks -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s | FileCheck %s
-
-// CHECK: define void @_Z28test_objc_object_pseudo_dtorPU8__strongP11objc_objectPU6__weakS0_
-void test_objc_object_pseudo_dtor(__strong id *ptr, __weak id *wptr) {
-  // CHECK: load i8***
-  // CHECK-NEXT: load i8** 
-  // CHECK-NEXT: call void @objc_release
-  ptr->~id();
-
-  // CHECK: call void @objc_destroyWeak(i8** {{%.*}})
-  wptr->~id();
-
-  // CHECK: load i8***
-  // CHECK-NEXT: load i8** 
-  // CHECK-NEXT: call void @objc_release
-  (*ptr).~id();
-
-  // CHECK: call void @objc_destroyWeak(i8** {{%.*}})
-  (*wptr).~id();
-  // CHECK: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-references.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-references.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-references.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-runtime-has-weak -fblocks -fobjc-arc -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-
- at interface A
- at end
-
-id getObject();
-void callee();
-
-// Lifetime extension for binding a reference to an rvalue
-// CHECK: define void @_Z5test0v()
-void test0() {
-  // CHECK: call i8* @_Z9getObjectv
-  // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue
-  const __strong id &ref1 = getObject();
-  // CHECK: call void @_Z6calleev
-  callee();
-  // CHECK: call i8* @_Z9getObjectv
-  // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue
-  // CHECK-NEXT: call i8* @objc_autorelease
-  const __autoreleasing id &ref2 = getObject();
-  // CHECK: call void @_Z6calleev
-  callee();
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret
-}
-
-// No lifetime extension when we're binding a reference to an lvalue.
-// CHECK: define void @_Z5test1RU8__strongP11objc_objectRU6__weakS0_
-void test1(__strong id &x, __weak id &y) {
-  // CHECK-NOT: release
-  const __strong id &ref1 = x;
-  const __autoreleasing id &ref2 = x;
-  const __weak id &ref3 = y;
-  // CHECK: ret void
-}
-
-typedef __strong id strong_id;
-
-//CHECK: define void @_Z5test3v
-void test3() {
-  // CHECK: call i8* @objc_initWeak
-  // CHECK-NEXT: store i8**
-  const __weak id &ref = strong_id();
-  // CHECK-NEXT: call void @_Z6calleev()
-  callee();
-  // CHECK-NEXT: call void @objc_destroyWeak
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @_Z5test4RU8__strongP11objc_object
-void test4(__strong id &x) {
-  // CHECK: call i8* @objc_retain
-  __strong A* const &ar = x;
-  // CHECK: store i32 17, i32*
-  int i = 17;
-  // CHECK: call void @objc_release(
-  // CHECK: ret void
-}
-
-void sink(__strong A* &&);
-
-// CHECK: define void @_Z5test5RU8__strongP11objc_object
-void test5(__strong id &x) {
-  // CHECK:      [[REFTMP:%.*]] = alloca {{%.*}}*, align 8
-  // CHECK:      [[OBJ_ID:%.*]] = call i8* @objc_retain(
-  // CHECK-NEXT: [[OBJ_A:%.*]] = bitcast i8* [[OBJ_ID]] to [[A:%[a-zA-Z0-9]+]]*
-  // CHECK-NEXT: store [[A]]* [[OBJ_A]], [[A]]** [[REFTMP:%[a-zA-Z0-9]+]]
-  // CHECK-NEXT: call void @_Z4sinkOU8__strongP1A
-  sink(x);  
-  // CHECK-NEXT: [[OBJ_A:%[a-zA-Z0-9]+]] = load [[A]]** [[REFTMP]]
-  // CHECK-NEXT: [[OBJ_ID:%[a-zA-Z0-9]+]] = bitcast [[A]]* [[OBJ_A]] to i8*
-  // CHECK-NEXT: call void @objc_release
-  // CHECK-NEXT: store i32 17, i32
-  int i = 17;
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define internal void @__cxx_global_var_init(
-// CHECK: call i8* @_Z9getObjectv
-// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue
-const __strong id &global_ref = getObject();
-
-// Note: we intentionally don't release the object.
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-arc -o - %s | FileCheck %s
-// rdar://10139365
-
- at interface Test58
-- (char* &) interior __attribute__((objc_returns_inner_pointer));
-- (int&)reference_to_interior_int __attribute__((objc_returns_inner_pointer));
- at end
-
-void foo() {
-   Test58 *ptr;
-   char *c = [(ptr) interior];
-
-   int i = [(ptr) reference_to_interior_int];
-}
-
-// CHECK: [[T0:%.*]] = load {{%.*}} {{%.*}}, align 8
-// CHECK: [[T1:%.*]] = bitcast {{%.*}} [[T0]] to i8*
-// call i8* @objc_retainAutorelease(i8* [[T1]]) nounwind
-// CHECK: [[T2:%.*]] = load {{%.*}} {{%.*}}, align 8
-// CHECK: [[T3:%.*]] = bitcast {{%.*}} [[T2]] to i8*
-// call i8* @objc_retainAutorelease(i8* [[T3]]) nounwind
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-special-member-functions.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-special-member-functions.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc-special-member-functions.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -fblocks -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s | FileCheck %s
-
-struct ObjCMember {
-  id member;
-};
-
-struct ObjCArrayMember {
-  id member[2][3];
-};
-
-struct ObjCBlockMember {
-  int (^bp)(int);
-};
-
-// CHECK: define void @_Z42test_ObjCMember_default_construct_destructv(
-void test_ObjCMember_default_construct_destruct() {
-  // CHECK: call void @_ZN10ObjCMemberC1Ev
-  // CHECK: call void @_ZN10ObjCMemberD1Ev
-  ObjCMember m1;
-}
-
-// CHECK: define void @_Z39test_ObjCMember_copy_construct_destruct10ObjCMember
-void test_ObjCMember_copy_construct_destruct(ObjCMember m1) {
-  // CHECK: call void @_ZN10ObjCMemberC1ERKS_
-  // CHECK: call void @_ZN10ObjCMemberD1Ev
-  ObjCMember m2 = m1;
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z27test_ObjCMember_copy_assign10ObjCMemberS_
-void test_ObjCMember_copy_assign(ObjCMember m1, ObjCMember m2) {
-  // CHECK: {{call.*_ZN10ObjCMemberaSERKS_}}
-  m1 = m2;
-  // CHECK-NEXT: ret void
-}
-
-// Implicitly-generated copy assignment operator for ObjCMember
-// CHECK:    {{define linkonce_odr.*@_ZN10ObjCMemberaSERKS_}}
-// CHECK:      call void @objc_storeStrong
-// CHECK:      ret
-
-// CHECK: define void @_Z47test_ObjCArrayMember_default_construct_destructv
-void test_ObjCArrayMember_default_construct_destruct() {
-  // CHECK: call void @_ZN15ObjCArrayMemberC1Ev
-  ObjCArrayMember m1;
-  // CHECK: call void @_ZN15ObjCArrayMemberD1Ev
-  // CHECK: ret void
-}
-
-// CHECK: define void @_Z44test_ObjCArrayMember_copy_construct_destruct15ObjCArrayMember
-void test_ObjCArrayMember_copy_construct_destruct(ObjCArrayMember m1) {
-  // CHECK: call void @_ZN15ObjCArrayMemberC1ERKS_
-  ObjCArrayMember m2 = m1;
-  // CHECK: call void @_ZN15ObjCArrayMemberD1Ev
-  // CHECK: ret void
-}
-
-void test_ObjCArrayMember_copy_assign(ObjCArrayMember m1, ObjCArrayMember m2) {
-  // CHECK: {{call.*@_ZN15ObjCArrayMemberaSERKS_}}
-  m1 = m2;
-  // CHECK-NEXT: ret void
-}
-
-// Implicitly-generated copy assignment operator for ObjCArrayMember
-// CHECK: {{define linkonce_odr.*@_ZN15ObjCArrayMemberaSERKS_}}
-// CHECK:      call void @objc_storeStrong
-// CHECK-NEXT: br label
-// CHECK: ret
-
-// CHECK: define void @_Z47test_ObjCBlockMember_default_construct_destructv
-void test_ObjCBlockMember_default_construct_destruct() {
-  // CHECK: call void @_ZN15ObjCBlockMemberC1Ev
-  ObjCBlockMember m;
-  // CHECK-NEXT: call void @_ZN15ObjCBlockMemberD1Ev
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @_Z44test_ObjCBlockMember_copy_construct_destruct15ObjCBlockMember
-void test_ObjCBlockMember_copy_construct_destruct(ObjCBlockMember m1) {
-  // CHECK: call void @_ZN15ObjCBlockMemberC1ERKS_
-  ObjCBlockMember m2 = m1;
-  // CHECK-NEXT: call void @_ZN15ObjCBlockMemberD1Ev
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @_Z32test_ObjCBlockMember_copy_assign15ObjCBlockMemberS_
-void test_ObjCBlockMember_copy_assign(ObjCBlockMember m1, ObjCBlockMember m2) {
-  // CHECK: {{call.*_ZN15ObjCBlockMemberaSERKS_}}
-  m1 = m2;
-  // CHECK-NEXT: ret void
-}
-
-// Implicitly-generated copy assignment operator for ObjCBlockMember
-// CHECK:    define linkonce_odr {{%.*}}* @_ZN15ObjCBlockMemberaSERKS_(
-// CHECK:      [[T0:%.*]] = getelementptr inbounds [[T:%.*]]* {{%.*}}, i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = load i32 (i32)** [[T0]], align 8
-// CHECK-NEXT: [[T2:%.*]] = bitcast i32 (i32)* [[T1]] to i8*
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retainBlock(i8* [[T2]])
-// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i32 (i32)*
-// CHECK-NEXT: [[T5:%.*]] = getelementptr inbounds [[T]]* {{%.*}}, i32 0, i32 0
-// CHECK-NEXT: [[T6:%.*]] = load i32 (i32)** [[T5]], align 8
-// CHECK-NEXT: store i32 (i32)* [[T4]], i32 (i32)** [[T5]]
-// CHECK-NEXT: [[T7:%.*]] = bitcast i32 (i32)* [[T6]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T7]])
-// CHECK-NEXT: ret
-
-// Implicitly-generated copy constructor for ObjCBlockMember
-// CHECK: define linkonce_odr void @_ZN15ObjCBlockMemberC2ERKS_
-// CHECK: call i8* @objc_retainBlock
-// CHECK: ret
-
-// Implicitly-generated destructor for ObjCBlockMember
-// CHECK: define linkonce_odr void @_ZN15ObjCBlockMemberD2Ev
-// CHECK: call void @objc_storeStrong(i8*
-// CHECK: ret
-
-// Implicitly-generated default constructor for ObjCBlockMember
-// CHECK: define linkonce_odr void @_ZN15ObjCBlockMemberC2Ev
-// CHECK: store {{.*}} null,
-// CHECK-NEXT: ret void
-
-// Implicitly-generated copy constructor for ObjCArrayMember
-// CHECK: define linkonce_odr void @_ZN15ObjCArrayMemberC2ERKS_
-// CHECK: br i1
-// CHECK: call i8* @objc_retain
-// CHECK-NEXT: store i8*
-// CHECK-NEXT: br label
-// CHECK: ret
-
-// Implicitly-generated destructor for ObjCArrayMember
-// CHECK:    define linkonce_odr void @_ZN15ObjCArrayMemberD2Ev
-// CHECK:      [[BEGIN:%.*]] = getelementptr inbounds [2 x [3 x i8*]]*
-// CHECK-NEXT: [[END:%.*]] = getelementptr inbounds i8** [[BEGIN]], i64 6
-// CHECK-NEXT: br label
-// CHECK:      [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]
-// CHECK-NEXT: [[CUR]] = getelementptr inbounds i8** [[PAST]], i64 -1
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[CUR]], i8* null)
-// CHECK-NEXT: [[T1:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]]
-// CHECK-NEXT: br i1 [[T1]], 
-// CHECK:      ret void
-
-// Implicitly-generated default constructor for ObjCArrayMember
-// CHECK: define linkonce_odr void @_ZN15ObjCArrayMemberC2Ev
-// CHECK: call void @llvm.memset.p0i8.i64
-// CHECK: ret
-
-// Implicitly-generated copy constructor for ObjCMember
-// CHECK: define linkonce_odr void @_ZN10ObjCMemberC2ERKS_
-// CHECK-NOT: objc_release
-// CHECK: call i8* @objc_retain
-// CHECK-NEXT: store i8*
-// CHECK-NEXT: ret void
-
-// Implicitly-generated destructor for ObjCMember
-// CHECK: define linkonce_odr void @_ZN10ObjCMemberD2Ev
-// CHECK: call void @objc_storeStrong
-// CHECK: ret void
-
-// Implicitly-generated default constructor for ObjCMember
-// CHECK: define linkonce_odr void @_ZN10ObjCMemberC2Ev
-// CHECK-NOT: objc_release
-// CHECK: store i8* null
-// CHECK-NEXT: ret void
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/arc.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,299 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fobjc-runtime-has-weak -fblocks -fobjc-arc -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-
-struct NSFastEnumerationState;
- at interface NSArray
-- (unsigned long) countByEnumeratingWithState: (struct NSFastEnumerationState*) state
-                  objects: (id*) buffer
-                  count: (unsigned long) bufferSize;
- at end;
-NSArray *nsarray() { return 0; }
-// CHECK: define [[NSARRAY:%.*]]* @_Z7nsarrayv()
-
-void use(id);
-
-// rdar://problem/9315552
-// The analogous ObjC testcase test46 in arr.m.
-void test0(__weak id *wp, __weak volatile id *wvp) {
-  extern id test0_helper(void);
-
-  // TODO: this is sub-optimal, we should retain at the actual call site.
-  // TODO: in the non-volatile case, we do not need to be reloading.
-
-  // CHECK:      [[T0:%.*]] = call i8* @_Z12test0_helperv()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = load i8*** {{%.*}}, align 8
-  // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])
-  // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retain(i8* [[T3]])
-  // CHECK-NEXT: store i8* [[T4]], i8**
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  id x = *wp = test0_helper();
-
-  // CHECK:      [[T0:%.*]] = call i8* @_Z12test0_helperv()
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])
-  // CHECK-NEXT: [[T2:%.*]] = load i8*** {{%.*}}, align 8
-  // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])
-  // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T2]])
-  // CHECK-NEXT: store i8* [[T4]], i8**
-  // CHECK-NEXT: call void @objc_release(i8* [[T1]])
-  id y = *wvp = test0_helper();
-}
-
-// rdar://problem/9320648
-struct Test1_helper { Test1_helper(); };
- at interface Test1 @end
- at implementation Test1 { Test1_helper x; } @end
-// CHECK: define internal i8* @"\01-[Test1 .cxx_construct]"(
-// CHECK:      call void @_ZN12Test1_helperC1Ev(
-// CHECK-NEXT: load
-// CHECK-NEXT: bitcast
-// CHECK-NEXT: ret i8*
-
-void test34(int cond) {
-  __strong id strong;
-  __weak id weak;
-  extern void test34_sink(id *);
-  test34_sink(cond ? &strong : 0);
-  test34_sink(cond ? &weak : 0);
-
-  // CHECK:    define void @_Z6test34i(
-  // CHECK:      [[COND:%.*]] = alloca i32
-  // CHECK-NEXT: [[STRONG:%.*]] = alloca i8*
-  // CHECK-NEXT: [[WEAK:%.*]] = alloca i8*
-  // CHECK-NEXT: [[TEMP1:%.*]] = alloca i8*
-  // CHECK-NEXT: [[TEMP2:%.*]] = alloca i8*
-  // CHECK-NEXT: [[CONDCLEANUPSAVE:%.*]] = alloca i8*
-  // CHECK-NEXT: [[CONDCLEANUP:%.*]] = alloca i1
-  // CHECK-NEXT: store i32
-  // CHECK-NEXT: store i8* null, i8** [[STRONG]]
-  // CHECK-NEXT: call i8* @objc_initWeak(i8** [[WEAK]], i8* null)
-
-  // CHECK-NEXT: [[T0:%.*]] = load i32* [[COND]]
-  // CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 0
-  // CHECK:      [[ARG:%.*]] = phi i8**
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null
-  // CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i8** null, i8** [[TEMP1]]
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[T0:%.*]] = load i8** [[ARG]]
-  // CHECK-NEXT: store i8* [[T0]], i8** [[TEMP1]]
-  // CHECK-NEXT: br label
-  // CHECK:      [[W0:%.*]] = phi i8* [ [[T0]], {{%.*}} ], [ undef, {{%.*}} ]
-  // CHECK:      call void @_Z11test34_sinkPU15__autoreleasingP11objc_object(i8** [[T1]])
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[T0:%.*]] = load i8** [[TEMP1]]
-  // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])
-  // CHECK-NEXT: call void (...)* @clang.arc.use(i8* [[W0]])
-  // CHECK-NEXT: [[T2:%.*]] = load i8** [[ARG]]
-  // CHECK-NEXT: store i8* [[T1]], i8** [[ARG]]
-  // CHECK-NEXT: call void @objc_release(i8* [[T2]])
-  // CHECK-NEXT: br label
-
-  // CHECK:      [[T0:%.*]] = load i32* [[COND]]
-  // CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 0
-  // CHECK:      [[ARG:%.*]] = phi i8**
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null
-  // CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i8** null, i8** [[TEMP2]]
-  // CHECK-NEXT: store i1 false, i1* [[CONDCLEANUP]]
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[T0:%.*]] = call i8* @objc_loadWeakRetained(i8** [[ARG]])
-  // CHECK-NEXT: store i8* [[T0]], i8** [[CONDCLEANUPSAVE]]
-  // CHECK-NEXT: store i1 true, i1* [[CONDCLEANUP]]
-  // CHECK-NEXT: store i8* [[T0]], i8** [[TEMP2]]
-  // CHECK-NEXT: br label
-  // CHECK:      call void @_Z11test34_sinkPU15__autoreleasingP11objc_object(i8** [[T1]])
-  // CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null
-  // CHECK-NEXT: br i1 [[T0]],
-  // CHECK:      [[T0:%.*]] = load i8** [[TEMP2]]
-  // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[ARG]], i8* [[T0]])
-  // CHECK-NEXT: br label
-
-  // CHECK:      call void @objc_destroyWeak(i8** [[WEAK]])
-  // CHECK:      ret void
-}
-
-struct Test35_Helper {
-  static id makeObject1() __attribute__((ns_returns_retained));
-  id makeObject2() __attribute__((ns_returns_retained));
-  static id makeObject3();
-  id makeObject4();
-};
-
-// CHECK: define void @_Z6test3513Test35_HelperPS_
-void test35(Test35_Helper x0, Test35_Helper *x0p) {
-  // CHECK: call i8* @_ZN13Test35_Helper11makeObject1Ev
-  // CHECK-NOT: call i8* @objc_retain
-  id obj1 = Test35_Helper::makeObject1();
-  // CHECK: call i8* @_ZN13Test35_Helper11makeObject2Ev
-  // CHECK-NOT: call i8* @objc_retain
-  id obj2 = x0.makeObject2();
-  // CHECK: call i8* @_ZN13Test35_Helper11makeObject2Ev
-  // CHECK-NOT: call i8* @objc_retain
-  id obj3 = x0p->makeObject2();
-  id (Test35_Helper::*pmf)() __attribute__((ns_returns_retained))
-    = &Test35_Helper::makeObject2;
-  // CHECK: call i8* %
-  // CHECK-NOT: call i8* @objc_retain
-  id obj4 = (x0.*pmf)();
-  // CHECK: call i8* %
-  // CHECK-NOT: call i8* @objc_retain
-  id obj5 = (x0p->*pmf)();
-
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}
-
-// CHECK: define void @_Z7test35b13Test35_HelperPS_
-void test35b(Test35_Helper x0, Test35_Helper *x0p) {
-  // CHECK: call i8* @_ZN13Test35_Helper11makeObject3Ev
-  // CHECK: call i8* @objc_retain
-  id obj1 = Test35_Helper::makeObject3();
-  // CHECK: call i8* @_ZN13Test35_Helper11makeObject4Ev
-  // CHECK: call i8* @objc_retain
-  id obj2 = x0.makeObject4();
-  // CHECK: call i8* @_ZN13Test35_Helper11makeObject4Ev
-  // CHECK: call i8* @objc_retain
-  id obj3 = x0p->makeObject4();
-  id (Test35_Helper::*pmf)() = &Test35_Helper::makeObject4;
-  // CHECK: call i8* %
-  // CHECK: call i8* @objc_retain
-  id obj4 = (x0.*pmf)();
-  // CHECK: call i8* %
-  // CHECK: call i8* @objc_retain
-  id obj5 = (x0p->*pmf)();
-
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-}
-
-// rdar://problem/9603128
-// CHECK: define i8* @_Z6test36P11objc_object(
-id test36(id z) {
-  // CHECK: objc_retain
-  // CHECK: objc_retain
-  // CHECK: objc_release
-  // CHECK: objc_autoreleaseReturnValue
-  return z;
-}
-
-// Template instantiation side of rdar://problem/9817306
- at interface Test37
-+ alloc;
-- init;
-- (NSArray *) array;
- at end
-template <class T> void test37(T *a) {
-  for (id x in a.array) {
-    use(x);
-  }
-}
-extern template void test37<Test37>(Test37 *a);
-template void test37<Test37>(Test37 *a);
-// CHECK: define weak_odr void @_Z6test37I6Test37EvPT_(
-// CHECK:      [[T0:%.*]] = call [[NSARRAY]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to [[NSARRAY]]* (i8*, i8*)*)(
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[NSARRAY]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])
-// CHECK-NEXT: [[COLL:%.*]] = bitcast i8* [[T2]] to [[NSARRAY]]*
-
-// Make sure it's not immediately released before starting the iteration.
-// CHECK-NEXT: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[NSARRAY]]* [[COLL]] to i8*
-// CHECK-NEXT: @objc_msgSend
-
-// This bitcast is for the mutation check.
-// CHECK:      [[T0:%.*]] = bitcast [[NSARRAY]]* [[COLL]] to i8*
-// CHECK-NEXT: @objc_enumerationMutation
-
-// This bitcast is for the 'next' message send.
-// CHECK:      [[T0:%.*]] = bitcast [[NSARRAY]]* [[COLL]] to i8*
-// CHECK-NEXT: @objc_msgSend
-
-// This bitcast is for the final release.
-// CHECK:      [[T0:%.*]] = bitcast [[NSARRAY]]* [[COLL]] to i8*
-// CHECK-NEXT: call void @objc_release(i8* [[T0]])
-
-template<typename T>
-void send_release() {
-  [Test37 array];
-}
-
-// CHECK: define weak_odr void @_Z12send_releaseIiEvv(
-// CHECK: call %0* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK-NEXT: bitcast
-// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue
-// CHECK-NEXT: bitcast
-// CHECK-NEXT: bitcast
-// CHECK-NEXT: call void @objc_release
-// CHECK-NEXT: ret void
-template void send_release<int>();
-
-template<typename T>
-Test37 *instantiate_init() {
-  Test37 *result = [[Test37 alloc] init];
-  return result;
-}
-
-// CHECK: define weak_odr %2* @_Z16instantiate_initIiEP6Test37v
-// CHECK: call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK: call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK: call i8* @objc_retain
-// CHECK: call void @objc_release
-// CHECK: call i8* @objc_autoreleaseReturnValue
-template Test37* instantiate_init<int>();
-
-// Just make sure that the AST invariants hold properly here,
-// i.e. that we don't crash.
-// The block should get bound in the full-expression outside
-// the statement-expression.
-template <class T> class Test38 {
-  void test(T x) {
-    ^{ (void) x; }, ({ x; });
-  }
-};
-// CHECK: define weak_odr void @_ZN6Test38IiE4testEi(
-template class Test38<int>;
-
-// rdar://problem/11964832
-class Test39_base1 {
-  virtual void foo();
-};
-class Test39_base2 {
-  virtual id bar();
-};
-class Test39 : Test39_base1, Test39_base2 { // base2 is at non-zero offset
-  virtual id bar();
-};
-id Test39::bar() { return 0; }
-// Note lack of autorelease.
-// CHECK:    define i8* @_ZThn8_N6Test393barEv(
-// CHECK:      call i8* @_ZN6Test393barEv(
-// CHECK-NEXT: ret i8*
-
-// rdar://13617051
-// Just a basic sanity-check that IR-gen still works after instantiating
-// a non-dependent message send that requires writeback.
- at interface Test40
-+ (void) foo:(id *)errorPtr;
- at end
-template <class T> void test40_helper() {
-  id x;
-  [Test40 foo: &x];
-};
-template void test40_helper<int>();
-// CHECK:    define weak_odr void @_Z13test40_helperIiEvv()
-// CHECK:      [[X:%.*]] = alloca i8*
-// CHECK-NEXT: [[TEMP:%.*]] = alloca i8*
-// CHECK-NEXT: store i8* null, i8** [[X]]
-// CHECK:      [[T0:%.*]] = load i8** [[X]]
-// CHECK-NEXT: store i8* [[T0]], i8** [[TEMP]]
-// CHECK:      @objc_msgSend
-// CHECK-NEXT: [[T0:%.*]] = load i8** [[TEMP]]
-// CHECK-NEXT: call i8* @objc_retain(i8* [[T0]])
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/block-in-template-inst.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/block-in-template-inst.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/block-in-template-inst.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -std=c++11 -fblocks -o - -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 %s
-// rdar://9362021
-
- at class DYFuture;
- at interface NSCache
-- (void)setObject:(id)obj forKey:(id)key;
- at end
-
-template <typename T>
-class ResourceManager
-{
-public:
- ~ResourceManager();
- DYFuture* XXX();
- NSCache* _spDeviceCache;
-};
-
-template <typename T>
-DYFuture* ResourceManager<T>::XXX()
-{
- ^ {
-   [_spDeviceCache setObject:0 forKey:0];
-  }();
-
- return 0;
-}
-
-struct AnalyzerBaseObjectTypes { };
-
-void FUNC()
-{
-    ResourceManager<AnalyzerBaseObjectTypes> *rm;
-    ^(void) { rm->XXX(); }();
-}
-
-namespace PR9982 {
-  template<typename T> struct Curry;
-
-  template<typename R, typename Arg0, typename Arg1, typename Arg2>
-    struct Curry<R (^)(Arg0, Arg1, Arg2)>
-    {
-      typedef R (^FType)(Arg0, Arg1, Arg2);
-    
-    Curry(FType _f) : f(_f) {}
-      ~Curry() {;}
-    
-      R (^(^operator()(Arg0 a))(Arg1))(Arg2) 
-      { 
-        auto block = ^(Arg1 b) {
-          auto inner_block = ^(Arg2 c) {
-            return f(a, b, c);
-          };
-          return inner_block; 
-        };
-        return block;
-      }
-    
-    private:
-      FType f;
-    };
-
-  auto add = ^(int a, int b, int c)
-    {
-      return a + b + c;
-    };
-
-  void curry() {
-    Curry<__decltype(add)> c = Curry<__decltype(add)>(add);
-    auto t = c(1)(10)(100);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/block-var-layout.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/block-var-layout.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/block-var-layout.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,158 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fobjc-gc -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -O0 -print-ivar-layout -emit-llvm -o /dev/null %s > %t-64.layout
-// RUN: FileCheck --input-file=%t-64.layout %s
-// rdar://12184410
-// rdar://12752901
-
-// See commentary in test/CodeGenObjC/block-var-layout.m, from which
-// this is largely cloned.
-
-struct S {
-    int i1;
-    id o1;
-    struct V {
-     int i2;
-     id o2;
-    } v1;
-    int i3;
-    id o3;
-};
-
-__weak id wid;
-void x(id y) {}
-void y(int a) {}
-
-extern id opaque_id();
-
-void f() {
-    __block int byref_int = 0;
-    char ch = 'a';
-    char ch1 = 'b';
-    char ch2 = 'c';
-    short sh = 2;
-    const id bar = (id) opaque_id();
-    id baz = 0;
-    __strong void *strong_void_sta;
-    __block id byref_bab = (id)0;
-    __block void *bl_var1;
-    int i; double dob;
-
-// Test 1
-// byref int, short, char, char, char, id, id, strong void*, byref id
-// 01 35 10 00
-// CHECK: block variable layout for block: 0x01, 0x35, 0x10, 0x00
-    void (^b)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x((id)strong_void_sta);
-        x(byref_bab);
-    };    
-    b();
-
-// Test 2
-// byref int, short, char, char, char, id, id, strong void*, byref void*, byref id
-// 01 36 10 00
-// CHECK: 0x01, 0x36, 0x10, 0x00
-    void (^c)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x((id)strong_void_sta);
-        x(wid);
-        bl_var1 = 0;
-        x(byref_bab);
-    };    
-    c();
-
-// Test 3
-// byref int, short, char, char, char, id, id, byref void*, int, double, byref id
-// 01 34 11 30 00
-// CHECK: block variable layout for block: 0x01, 0x35, 0x30, 0x00
-void (^d)() = ^{
-        byref_int = sh + ch+ch1+ch2 ;
-        x(bar);
-        x(baz);
-        x(wid);
-        bl_var1 = 0; 
-        y(i + dob);
-        x(byref_bab);
-    };    
-    d();
-
-// Test4
-// struct S (int, id, int, id, int, id)
-// 01 41 11 11 00
-// CHECK: block variable layout for block: 0x01, 0x41, 0x11, 0x11, 0x00
-    struct S s2;
-    void (^e)() = ^{
-        x(s2.o1);
-    };    
-    e();
-}
-
-// Test 5 (unions/structs and their nesting):
-void Test5() {
-  struct S5 {
-    int i1;
-    id o1;
-    struct V {
-     int i2;
-     id o2;
-    } v1;
-    int i3;
-    union UI {
-        void * i1;
-        id o1;
-        int i3;
-        id o3;
-    }ui;
-  };
-
-  union U {
-        void * i1;
-        id o1;
-        int i3;
-        id o3;
-  }ui;
-
-  struct S5 s2;
-  union U u2;
-
-// struct s2 (int, id, int, id, int, id?), union u2 (id?)
-// 01 41 11 12 00
-// CHECK: block variable layout for block: 0x01, 0x41, 0x11, 0x12, 0x00
-  void (^c)() = ^{
-    x(s2.ui.o1);
-    x(u2.o1);
-  };
-  c();
-
-}
-
-// rdar: //8417746
-void CFRelease(id);
-void notifyBlock(id dependentBlock) {
- id singleObservationToken;
- id token;
- void (^b)();
-
-// id, id, void(^)()
-// 01 33 00
-// CHECK: block variable layout for block: 0x01, 0x33, 0x00
- void (^wrapperBlock)() = ^() {
-     CFRelease(singleObservationToken);
-     CFRelease(singleObservationToken);
-     CFRelease(token);
-     CFRelease(singleObservationToken);
-     b();
-    };
- wrapperBlock();
-}
-
-void test_empty_block() {
-// 01 00
-// CHECK: block variable layout for block: 0x01, 0x00
- void (^wrapperBlock)() = ^() {
-    };
- wrapperBlock();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/blocks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/blocks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/blocks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 %s -verify -std=c++11 -emit-llvm -o %t
-// rdar://8979379
-
- at interface A
- at end
-
- at interface B : A
- at end
-
-void f(int (^bl)(B* b));
-
-// Test1
-void g() {
-  f(^(A* a) { return 0; });
-}
-
-// Test2
-void g1() {
-  int (^bl)(B* b) = ^(A* a) { return 0; };
-}
-
-// Test3
- at protocol NSObject;
-
-void bar(id(^)(void));
-
-void foo(id <NSObject>(^objectCreationBlock)(void)) {
-    return bar(objectCreationBlock);
-}
-
-// Test4
-struct S {
-  S *(^a)() = ^{
-    return this;
-  };
-};
-S s;
-
-// Test5
-struct X {
-  void f() {
-    ^ {
-      struct Nested { Nested *ptr = this; };
-    } ();
-  };
-};
-
-// Regression test for PR13314
-class FooClass { };
-void fun() {
-  FooClass foovar;
-  ^() {  // expected-warning {{expression result unused}}
-    return foovar;
-  };
-}
-void gun() {
-  FooClass foovar;
-  [=]() {  // expected-warning {{expression result unused}}
-    return foovar;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/catch-id-type.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/catch-id-type.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/catch-id-type.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-macosx10.6.6 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fobjc-exceptions -fcxx-exceptions -fexceptions -o - %s | FileCheck %s
-// rdar://8940528
-
- at interface ns_array
-+ (id) array;
- at end
-
- at implementation ns_array
-+ (id) array { return 0; }
- at end
-
-id Groups();
-
- at protocol P @end;
-
- at interface INTF<P> {
-    double dd;
-}
- at end
-
-id FUNC() {
-    id groups;
-    try
-    {
-      groups = Groups();  // throws on errors.
-    }
-    catch( INTF<P>* error )
-    {
-      Groups();
-    }
-    catch( id error )
-    { 
-      // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
-      // CHECK-NEXT:   catch i8* bitcast ({ i8*, i8*, i32, i8* }* @_ZTIP4INTF to i8*)
-      // CHECK-NEXT:   catch i8* bitcast ({ i8*, i8*, i32, i8* }* @_ZTIP11objc_object to i8*)
-      // CHECK-NEXT:   catch i8* bitcast ({ i8*, i8*, i32, i8* }* @_ZTIP10objc_class to i8*)
-      error = error; 
-      groups = [ns_array array]; 
-    }
-    catch (Class cl) {
-      cl = cl;
-      groups = [ns_array array];
-    }
-    return groups;
-
-}
-
-int main() {
-  FUNC();
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/copy.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/copy.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/copy.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-// rdar://problem/9158302
-// This should not use a memmove_collectable in non-GC mode.
-namespace test0 {
-  struct A {
-    id x;
-  };
-
-  // CHECK:    define [[A:%.*]]* @_ZN5test04testENS_1AE(
-  // CHECK:      alloca
-  // CHECK-NEXT: getelementptr
-  // CHECK-NEXT: store
-  // CHECK-NEXT: call noalias i8* @_Znwm(
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: bitcast
-  // CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i64(
-  // CHECK-NEXT: ret
-  A *test(A a) {
-    return new A(a);
-  }
-}
-
-
-// rdar://9780211
- at protocol bork
- at end
-
-namespace test1 {
-template<typename T> struct RetainPtr {
-  RetainPtr() {}
-};
-
-
-RetainPtr<id<bork> > x;
-RetainPtr<id> y;
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/copyable-property-object.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/copyable-property-object.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/copyable-property-object.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-struct POD {
-  int array[3][4];
-  id objc_obj;
-};
-
-struct D  { 
-  POD pod_array[2][3];
-};
-
- at interface I
-{
-  D Property1;
-}
- at property D Property1;
-- (D) val;
-- (void) set : (D) d1;
- at end
-
- at implementation I
- at synthesize Property1;
-- (D) val { return Property1; }
-- (void) set : (D) d1 { Property1 = d1; }
- at end
-// CHECK: {{call.*@objc_memmove_collectable}}
-// CHECK: {{call.*@objc_memmove_collectable}}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/debug-info.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/debug-info.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/debug-info.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -g -emit-llvm %s -o /dev/null
-
-// This test passes if clang doesn't crash.
-
-template <class C> class scoped_ptr {
-public:
-  C* operator->() const { return 0; }
-};
-
- at class NSWindow;
- at class NSImage;
- at interface NSWindow {
-  NSImage *_miniIcon;
-}
--(id)windowController;
- at end
-
-class AutomationResourceTracker {
-public:
-  NSWindow* GetResource(int handle) { return 0; }
-};
-
-# 13 "automation/automation_window_tracker.h"
-class AutomationWindowTracker : public AutomationResourceTracker { };
-
-template<typename NST> class scoped_nsobject { };
-
- at interface TabStripController{
-  scoped_nsobject<NSImage> defaultFavicon_;
-}
- at end
-
- at interface BrowserWindowController {
-  TabStripController* tabStripController_;
-}
- at end
-
-void WindowGetViewBounds(scoped_ptr<AutomationWindowTracker> window_tracker_) {
-  NSWindow* window = window_tracker_->GetResource(42);
-  BrowserWindowController* controller = [window windowController];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/encode.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/encode.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/encode.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,203 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// CHECK: v17 at 0:8{vector<float, float, float>=}16
-// CHECK: {vector<float, float, float>=}
-// CHECK: v24 at 0:816
-
-template <typename T1, typename T2, typename T3> struct vector {
-  vector();
-  vector(T1,T2,T3);
-};
-
-typedef vector< float, float, float > vector3f;
-
- at interface SceneNode
-{
- vector3f position;
-}
-
- at property (assign, nonatomic) vector3f position;
-
- at end
-
- at interface MyOpenGLView
-{
- at public
-  vector3f position;
-}
- at property vector3f position;
- at end
-
- at implementation MyOpenGLView
-
- at synthesize position;
-
--(void)awakeFromNib {
- SceneNode *sn;
- vector3f VF3(1.0, 1.0, 1.0);
- [sn setPosition:VF3];
-}
- at end
-
-
-class Int3 { int x, y, z; };
-
-// Enforce @encoding for member pointers.
- at interface MemPtr {}
-- (void) foo: (int (Int3::*)) member;
- at end
- at implementation MemPtr
-- (void) foo: (int (Int3::*)) member {
-}
- at end
-
-// rdar: // 8519948
-typedef float HGVec4f __attribute__ ((vector_size(16)));
-
- at interface RedBalloonHGXFormWrapper {
-  HGVec4f m_Transform[4];
-}
- at end
-
- at implementation RedBalloonHGXFormWrapper
- at end
-
-// rdar://9357400
-namespace rdar9357400 {
-  template<int Dim1 = -1, int Dim2 = -1> struct fixed {
-      template<int D> struct rebind { typedef fixed<D> other; };
-  };
-  
-  template<typename Element, int Size>
-  class fixed_1D
-  {
-  public:
-      typedef Element value_type;
-      typedef value_type array_impl[Size];
-    protected:
-      array_impl                  m_data;
-  };
-  
-  template<typename Element, typename Alloc>
-  class vector;
-  
-  template<typename Element, int Size>
-  class vector< Element, fixed<Size> >
-  : public fixed_1D<Element,Size> { };
-
-  typedef vector< float,  fixed<4> > vector4f;
-
-  // CHECK: @_ZN11rdar93574002ggE = constant [49 x i8] c"{vector<float, rdar9357400::fixed<4, -1> >=[4f]}\00"
-  extern const char gg[] = @encode(vector4f);
-}
-
-// rdar://9624314
-namespace rdar9624314 {
-  struct B2 { int x; };
-  struct B3 {};
-  struct S : B2, B3 {};
-
-  // CHECK: @_ZN11rdar96243142ggE = constant [6 x i8] c"{S=i}\00"
-  extern const char gg[] = @encode(S);
-
-  struct S2 { unsigned : 0; int x; unsigned : 0; };
-  // CHECK: @_ZN11rdar96243142g2E = constant [11 x i8] c"{S2=b0ib0}\00"
-  extern const char g2[] = @encode(S2);
-}
-
-namespace test {
-  class Foo {
-  public:
-   virtual void f() {};
-  };
-  
-  class Bar {
-  public:
-   virtual void g() {};
-  };
-  
-  class Zoo : virtual public Foo, virtual public Bar {
-  public:
-   int x;
-   int y;
-  };
-
-  // CHECK: @_ZN4test3ecdE = constant [15 x i8] c"{Zoo=^^?ii^^?}\00"
-  extern const char ecd[] = @encode(Zoo);
-}
-
-struct Base1 {
-  char x;
-};
-
-struct DBase : public Base1 {
-  double x;
-  virtual ~DBase();
-};
-
-struct Sub_with_virt : virtual DBase {
-  long x;
-};
-
-struct Sub2 : public Sub_with_virt, public Base1, virtual DBase {
-  float x;
-};
-
-// CHECK: @g1 = constant [10 x i8] c"{Base1=c}\00"
-extern const char g1[] = @encode(Base1);
-
-// CHECK: @g2 = constant [14 x i8] c"{DBase=^^?cd}\00"
-extern const char g2[] = @encode(DBase);
-
-// CHECK: @g3 = constant [26 x i8] c"{Sub_with_virt=^^?q^^?cd}\00"
-extern const char g3[] = @encode(Sub_with_virt);
-
-// CHECK: @g4 = constant [19 x i8] c"{Sub2=^^?qcf^^?cd}\00"
-extern const char g4[] = @encode(Sub2);
-
-// http://llvm.org/PR9927
-class allocator {
-};
-class basic_string     {
-struct _Alloc_hider : allocator       {
-char* _M_p;
-};
-_Alloc_hider _M_dataplus;
-};
-
-// CHECK: @g5 = constant [32 x i8] c"{basic_string={_Alloc_hider=*}}\00"
-extern const char g5[] = @encode(basic_string);
-
-
-// PR10990
-class CefBase {
-  virtual ~CefBase() {}
-};
-class CefBrowser : public virtual CefBase {};
-class CefBrowserImpl : public CefBrowser {};
-// CHECK: @g6 = constant [21 x i8] c"{CefBrowserImpl=^^?}\00"
-extern const char g6[] = @encode(CefBrowserImpl);
-
-// PR10990_2
-class CefBase2 {
-  virtual ~CefBase2() {}
-  int i;
-};
-class CefBrowser2 : public virtual CefBase2 {};
-class CefBrowserImpl2 : public CefBrowser2 {};
-// CHECK: @g7 = constant [26 x i8] c"{CefBrowserImpl2=^^?^^?i}\00"
-extern const char g7[] = @encode(CefBrowserImpl2);
-
-// <rdar://problem/11324167>
-struct Empty {};
-
-struct X : Empty { 
-  int array[10];
-};
-
-struct Y : Empty {
-  X vec;
-};
-
-// CHECK: @g8 = constant [14 x i8] c"{Y={X=[10i]}}\00"
-extern const char g8[] = @encode(Y);

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/exceptions-legacy.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/exceptions-legacy.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/exceptions-legacy.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -fexceptions -fobjc-exceptions -O2 -o - %s | FileCheck %s
-
-// Test we maintain at least a basic amount of interoperation between
-// ObjC and C++ exceptions in the legacy runtime.
-
-// rdar://12364847
-
-void foo(void);
-
-void test0(id obj) {
-  @synchronized(obj) {
-    foo();
-  }
-}
-// CHECK:    define void @_Z5test0P11objc_object(
-//   Enter the @synchronized block.
-// CHECK:      call i32 @objc_sync_enter(i8* [[OBJ:%.*]])
-// CHECK:      call void @objc_exception_try_enter([[BUF_T:%.*]]* [[BUF:%.*]])
-// CHECK-NEXT: [[T0:%.*]] = getelementptr [[BUF_T]]* [[BUF]], i32 0, i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = call i32 @_setjmp(i32* [[T0]])
-// CHECK-NEXT: [[T2:%.*]] = icmp eq i32 [[T1]], 0
-// CHECK-NEXT: br i1 [[T2]],
-
-//   Body.
-// CHECK:      invoke void @_Z3foov()
-
-//   Leave the @synchronized.  The reload of obj here is unnecessary.
-// CHECK:      call void @objc_exception_try_exit([[BUF_T]]* [[BUF]])
-// CHECK-NEXT: [[T0:%.*]] = load i8**
-// CHECK-NEXT: call i32 @objc_sync_exit(i8* [[T0]])
-// CHECK-NEXT: ret void
-
-//   Real EH cleanup.
-// CHECK:      [[T0:%.*]] = landingpad
-// CHECK-NEXT:    cleanup
-// CHECK-NEXT: call void @objc_exception_try_exit([[BUF_T]]* [[BUF]])
-// CHECK-NEXT: [[T0:%.*]] = load i8**
-// CHECK-NEXT: call i32 @objc_sync_exit(i8* [[T0]])
-// CHECK-NEXT: resume
-
-//   ObjC EH "cleanup".
-// CHECK:      [[T0:%.*]] = load i8**
-// CHECK-NEXT: call i32 @objc_sync_exit(i8* [[T0]])
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_exception_extract([[BUF_T]]* [[BUF]])
-// CHECK-NEXT: call void @objc_exception_throw(i8* [[T0]])
-// CHECK-NEXT: unreachable
-
-void test1(id obj, bool *failed) {
-  @try {
-    foo();
-  } @catch (...) {
-    *failed = true;
-  }
-}
-// CHECK:    define void @_Z5test1P11objc_objectPb(
-//   Enter the @try block.
-// CHECK:      call void @objc_exception_try_enter([[BUF_T]]* [[BUF:%.*]])
-// CHECK-NEXT: [[T0:%.*]] = getelementptr [[BUF_T]]* [[BUF]], i32 0, i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = call i32 @_setjmp(i32* [[T0]])
-// CHECK-NEXT: [[T2:%.*]] = icmp eq i32 [[T1]], 0
-// CHECK-NEXT: br i1 [[T2]],
-
-//   Body.
-// CHECK:      invoke void @_Z3foov()
-
-//   Leave the @try.
-// CHECK:      call void @objc_exception_try_exit([[BUF_T]]* [[BUF]])
-// CHECK-NEXT: br label
-// CHECK:      ret void
-
-//   Real EH cleanup.
-// CHECK:      [[T0:%.*]] = landingpad
-// CHECK-NEXT:    cleanup
-// CHECK-NEXT: call void @objc_exception_try_exit([[BUF_T]]* [[BUF]])
-// CHECK-NEXT: resume
-
-//   Catch handler.  Reload of 'failed' address is unnecessary.
-// CHECK:      [[T0:%.*]] = load i8**
-// CHECK-NEXT: store i8 1, i8* [[T0]],
-// CHECK-NEXT: br label

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/exceptions.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/exceptions.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/exceptions.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -emit-llvm -fcxx-exceptions -fexceptions -fobjc-exceptions -o - %s | FileCheck %s
-
- at interface OCType @end
-void opaque();
-
-namespace test0 {
-
-  // CHECK: define void @_ZN5test03fooEv
-  void foo() {
-    try {
-      // CHECK: invoke void @_Z6opaquev
-      opaque();
-    } catch (OCType *T) {
-      // CHECK:      landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__objc_personality_v0 to i8*)
-      // CHECK-NEXT:   catch %struct._objc_typeinfo* @"OBJC_EHTYPE_$_OCType"
-    }
-  }
-}
-
-// rdar://12605907
- at interface NSException
-  + new;
- at end
-namespace test1 {
-
-  void bar() {
-    @try {
-      throw [NSException new];
-    } @catch (id i) {
-    }
-  }
-// CHECK: invoke void @objc_exception_throw(i8* [[CALL:%.*]]) [[NR:#[0-9]+]]
-// CHECK:          to label [[INVOKECONT1:%.*]] unwind label [[LPAD:%.*]]
-}
-
-// CHECK: attributes [[NR]] = { noreturn }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/externally-initialized-selectors.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/externally-initialized-selectors.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/externally-initialized-selectors.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck %s
-// RUN: %clang_cc1 -cc1 -o - -emit-llvm %s | FileCheck %s
-
-// CHECK: @"\01L_OBJC_SELECTOR_REFERENCES_" = internal externally_initialized global
-
-void test(id x) {
-  [x doSomething];
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/foreach-statement.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/foreach-statement.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/foreach-statement.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-// rdar: // 8027844
-
-// CHECK: call void @llvm.memset
-
-int main() {
-    id foo;
-    for (id a in foo) {
-    }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/gc.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/gc.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/gc.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-namespace test0 {
-  extern id x;
-
-  struct A {
-    id x;
-    A();
-  };
-  A::A() : x(test0::x) {}
-
-// CHECK:    define void @_ZN5test01AC2Ev(
-// CHECK:      [[THIS:%.*]] = alloca [[TEST0:%.*]]*, align 8
-// CHECK-NEXT: store 
-// CHECK-NEXT: [[T0:%.*]] = load [[TEST0]]** [[THIS]]
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[TEST0]]* [[T0]], i32 0, i32 0
-// CHECK-NEXT: [[T2:%.*]] = load i8** @_ZN5test01xE
-// CHECK-NEXT: call i8* @objc_assign_strongCast(i8* [[T2]], i8** [[T1]])
-// CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implementation-in-extern-c.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implementation-in-extern-c.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implementation-in-extern-c.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o /dev/null
-// rdar://12581683
-
-extern "C" {
- at interface RetainBucket 
-+ (id) sharedRetainBucket;
- at end
-
- at implementation RetainBucket
-+ (id) sharedRetainBucket
-{
-    static id sharedBucket = (id)0;
-    return sharedBucket;
-}
- at end
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implicit-copy-assign-operator.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implicit-copy-assign-operator.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implicit-copy-assign-operator.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,124 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -emit-llvm -triple x86_64-apple-darwin10.0.0 -fobjc-runtime=macosx-fragile-10.5 -o - %s | FileCheck %s -check-prefix=CHECK-OBJ
-// RUN: %clang_cc1 -x c++    -emit-llvm -triple x86_64-apple-darwin10.0.0                                    -o - %s | FileCheck %s -check-prefix=CHECK-CPP
-#ifdef __OBJC__
-struct A { 
-  A &operator=(const A&);
-  A &operator=(A&);
-};
-
-struct B {
-  B &operator=(B&);
-};
-
-struct C {
-  virtual C& operator=(const C&);
-};
-
-struct POD {
-  id myobjc;
-  int array[3][4];
-};
-
-struct CopyByValue {
-  CopyByValue(const CopyByValue&);
-  CopyByValue &operator=(CopyByValue);
-};
-
-struct D : A, B, virtual C { 
-  int scalar;
-  int scalar_array[2][3];
-  B class_member;
-  C class_member_array[2][3];
-  POD pod_array[2][3];
-
-  union {
-    int x;
-    float f[3];
-  };
-
-  CopyByValue by_value;
-};
-
-void test_D(D d1, D d2) {
-  d1 = d2;
-}
-
-// CHECK-OBJ: define linkonce_odr %struct.D* @_ZN1DaSERS_
-// CHECK-OBJ: {{call.*_ZN1AaSERS_}}
-// CHECK-OBJ: {{call.*_ZN1BaSERS_}}
-// CHECK-OBJ: {{call.*_ZN1CaSERKS_}}
-// CHECK-OBJ: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 24}}
-// CHECK-OBJ: {{call.*_ZN1BaSERS_}}
-// CHECK-OBJ: br
-// CHECK-OBJ: {{call.*_ZN1CaSERKS_}}
-// CHECK-OBJ: {{call.*@objc_memmove_collectable}}
-// CHECK-OBJ: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 12}}
-// CHECK-OBJ: call void @_ZN11CopyByValueC1ERKS_
-// CHECK-OBJ: {{call.*_ZN11CopyByValueaSES_}}
-// CHECK-OBJ: ret
-#endif
-
-namespace PR13329 {
-#ifndef __OBJC__
-  typedef void* id;
-#endif
-  struct POD {
-    id    i;
-    short s;
-  };
-  
-  struct NonPOD {
-    id    i;
-    short s;
-    
-    NonPOD();
-  };
-  
-  struct DerivedNonPOD: NonPOD {
-    char  c;
-  };
-  
-  struct DerivedPOD: POD {
-    char  c;
-  };
-  
-  void testPOD() {
-    POD a;
-    POD b;
-    // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 16
-    // CHECK-CPP: @llvm.memcpy{{.*}}i64 16
-    b = a;
-  }
-  
-  void testNonPOD() {
-    NonPOD a;
-    NonPOD b;
-    // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 10
-    // CHECK-CPP: @llvm.memcpy{{.*}}i64 10
-    b = a;
-  }
-  
-  void testDerivedNonPOD() {
-    DerivedNonPOD a;
-    NonPOD        b;
-    DerivedNonPOD c;
-    // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 10
-    // CHECK-CPP: @llvm.memcpy{{.*}}i64 10
-    (NonPOD&) a = b;
-    // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 11
-    // CHECK-CPP: @llvm.memcpy{{.*}}i64 11
-    a = c;
-  };
-  
-  void testDerivedPOD() {
-    DerivedPOD a;
-    POD        b;
-    DerivedPOD c;
-    // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 16
-    // CHECK-CPP: @llvm.memcpy{{.*}}i64 16
-    (POD&) a = b;
-    // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 17
-    // CHECK-CPP: @llvm.memcpy{{.*}}i64 17
-    a = c;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implicit-copy-constructor.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implicit-copy-constructor.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/implicit-copy-constructor.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-struct A { 
-  A();
-  A(const A&);
-  A(A&);
-  ~A();
-};
-
-struct B {
-  B();
-  B(B&);
-};
-
-struct C {
-  C() {}
-  C(C& other, A a = A());
-  int i, j;
-};
-
-struct POD {
-  id myobjc;
-  int array[3][4];
-};
-
-struct D : A, B, virtual C { 
-  D();
-  int scalar;
-  int scalar_array[2][3];
-  B class_member;
-  C class_member_array[2][3];
-  POD pod_array[2][3];
-
-  union {
-    int x;
-    float f[3];
-  };
-};
-
-void f(D d) {
-  D d2(d);
-}
-
-// CHECK: define linkonce_odr void @_ZN1DC1ERS_(%struct.D* %this, %struct.D*) unnamed_addr
-// CHECK: call void @_ZN1AC1Ev
-// CHECK: call void @_ZN1CC2ERS_1A
-// CHECK: call void @_ZN1AD1Ev
-// CHECK: call void @_ZN1AC2ERS_
-// CHECK: call void @_ZN1BC2ERS_
-// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 24}}
-// CHECK: call void @_ZN1BC1ERS_
-// CHECK: br
-// CHECK: {{icmp ult.*, 2}}
-// CHECK: {{icmp ult.*, 3}}
-// CHECK: call void @_ZN1AC1Ev
-// CHECK: call void @_ZN1CC1ERS_1A
-// CHECK: call void @_ZN1AD1Ev
-// CHECK: {{call.*@objc_memmove_collectable}}
-// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 12}}
-// CHECK: ret void
-
-
-template<class T> struct X0 { void f0(T * ) { } };
-template <class > struct X1 { X1( X1& , int = 0 ) { } };
-struct X2 { X1<int> result; };
-void test_X2()
-{
-  typedef X2 impl;
-  typedef X0<impl> pimpl;
-  impl* i;
-  pimpl pdata;
-  pdata.f0( new impl(*i));
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/ivar-objects.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/ivar-objects.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/ivar-objects.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-// CHECK: -[A .cxx_construct]
-// CHECK: -[A .cxx_destruct]
-// CHECK: -[B .cxx_construct]
-// CHECK-NOT: -[B .cxx_destruct]
-// CHECK-NOT: -[C .cxx_construct]
-// CHECK: -[C .cxx_destruct]
-
- at interface NSObject 
-- alloc;
-- init;
-- (void) release;
- at end
-
-extern "C" int printf(const char *, ...);
-
-int count = 17;
-struct X {
-  X() : value(count++) { printf( "X::X()\n"); }
-  ~X() { printf( "X::~X()\n"); }
-  int value;
-};
-
-struct Y {
-  Y() : value(count++) { printf( "Y::Y()\n"); }
-  ~Y() { printf( "Y::~Y()\n"); }
-  int value;
-};
-
- at interface Super : NSObject {
-  Y yvar;
-  Y yvar1;
-  Y ya[3];
-}
-- (void)finalize;
- at end
-
- at interface A : Super {
-  X xvar;
-  X xvar1;
-  X xvar2;
-  X xa[2][2];
-}
-
-- (void)print;
-- (void)finalize;
- at end
-
- at implementation Super
-- (void)print {
-  printf( "yvar.value = %d\n", yvar.value);
-  printf( "yvar1.value = %d\n", yvar1.value);
-  printf( "ya[0..2] = %d %d %d\n", ya[0].value, ya[1].value, ya[2].value);
-}
-- (void)finalize {}
- at end
-
- at implementation A
-- (void)print {
-  printf( "xvar.value = %d\n", xvar.value);
-  printf( "xvar1.value = %d\n", xvar1.value);
-  printf( "xvar2.value = %d\n", xvar2.value);
-  printf( "xa[0..1][0..1] = %d %d %d %d\n",
-                   xa[0][0].value, xa[0][1].value, xa[1][0].value, xa[1][1].value);
-  [super print];
-}
-- (void)finalize { [super finalize]; }
- at end
-
-int main() {
-  A *a = [[A alloc] init];
-  [a print];
-  [a release];
-}
-
-// rdar: // 7468090
-class S {
-public:
-	S& operator = (const S&);
-};
-
- at interface I {
-  S position;
-}
- at property(assign, nonatomic) S position;
- at end
-
- at implementation I
-	@synthesize position;
- at end
-
-// This class should have a .cxx_construct but no .cxx_destruct.
-namespace test3 { struct S { S(); }; }
- at implementation B {
-  test3::S s;
-}
- at end
-
-// This class should have a .cxx_destruct but no .cxx_construct.
-namespace test4 { struct S { ~S(); }; }
- at implementation C {
-  test4::S s;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/lambda-expressions.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/lambda-expressions.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/lambda-expressions.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s -fexceptions -std=c++11 -fblocks -fobjc-arc | FileCheck -check-prefix=ARC %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s -fexceptions -std=c++11 -fblocks | FileCheck -check-prefix=MRC %s
-
-typedef int (^fp)();
-fp f() { auto x = []{ return 3; }; return x; }
-
-// MRC: @"\01L_OBJC_METH_VAR_NAME{{.*}}" = internal global [5 x i8] c"copy\00"
-// MRC: @"\01L_OBJC_METH_VAR_NAME{{.*}}" = internal global [12 x i8] c"autorelease\00"
-// MRC: define i32 ()* @_Z1fv(
-// MRC: define internal i32 ()* @"_ZZ1fvENK3$_0cvU13block_pointerFivEEv"
-// MRC: store i8* bitcast (i8** @_NSConcreteStackBlock to i8*)
-// MRC: store i8* bitcast (i32 (i8*)* @"___ZZ1fvENK3$_0cvU13block_pointerFivEEv_block_invoke" to i8*)
-// MRC: call i32 ()* (i8*, i8*)* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32 ()* (i8*, i8*)*)
-// MRC: call i32 ()* (i8*, i8*)* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32 ()* (i8*, i8*)*)
-// MRC: ret i32 ()*
-
-// ARC: define i32 ()* @_Z1fv(
-// ARC: define internal i32 ()* @"_ZZ1fvENK3$_0cvU13block_pointerFivEEv"
-// ARC: store i8* bitcast (i8** @_NSConcreteStackBlock to i8*)
-// ARC: store i8* bitcast (i32 (i8*)* @"___ZZ1fvENK3$_0cvU13block_pointerFivEEv_block_invoke" to i8*)
-// ARC: call i8* @objc_retainBlock
-// ARC: call i8* @objc_autoreleaseReturnValue
-
-typedef int (^fp)();
-fp global;
-void f2() { global = []{ return 3; }; }
-
-// MRC: define void @_Z2f2v() [[NUW:#[0-9]+]] {
-// MRC: store i8* bitcast (i32 (i8*)* @___Z2f2v_block_invoke to i8*),
-// MRC-NOT: call
-// MRC: ret void
-// ("global" contains a dangling pointer after this function runs.)
-
-// ARC: define void @_Z2f2v() [[NUW:#[0-9]+]] {
-// ARC: store i8* bitcast (i32 (i8*)* @___Z2f2v_block_invoke to i8*),
-// ARC: call i8* @objc_retainBlock
-// ARC: call void @objc_release
-// ARC: define internal i32 @___Z2f2v_block_invoke
-// ARC: call i32 @"_ZZ2f2vENK3$_1clEv
-
-template <class T> void take_lambda(T &&lambda) { lambda(); }
-void take_block(void (^block)()) { block(); }
-
-// rdar://13800041
- at interface A
-- (void) test;
- at end
- at interface B : A @end
- at implementation B
-- (void) test {
-  take_block(^{
-      take_lambda([=]{
-          take_block(^{
-              take_lambda([=] {
-                  [super test];
-              });
-          });
-      });
-   });
-}
- at end
-
-// ARC: attributes [[NUW]] = { nounwind{{.*}} }
-
-// MRC: attributes [[NUW]] = { nounwind{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/literals.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/literals.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/literals.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -I %S/Inputs -triple x86_64-apple-darwin10 -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -fexceptions -fobjc-exceptions -fcxx-exceptions -fobjc-arc-exceptions -O2 -disable-llvm-optzns -o - %s | FileCheck %s
-
-#include "literal-support.h"
-
-struct X {
-  X();
-  ~X();
-  operator id() const;
-};
-
-struct Y {
-  Y();
-  ~Y();
-  operator id() const;
-};
-
-// CHECK: define void @_Z10test_arrayv
-void test_array() {
-  // CHECK: [[OBJECTS:%[a-zA-Z0-9.]+]] = alloca [2 x i8*]
-
-  // Initializing first element
-  // CHECK: [[ELEMENT0:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x i8*]* [[OBJECTS]], i32 0, i32 0
-  // CHECK-NEXT: call void @_ZN1XC1Ev
-  // CHECK-NEXT: [[OBJECT0:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1XcvP11objc_objectEv
-  // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT0]])
-  // CHECK: store i8* [[RET0]], i8** [[ELEMENT0]]
-  
-  // Initializing the second element
-  // CHECK: [[ELEMENT1:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x i8*]* [[OBJECTS]], i32 0, i32 1
-  // CHECK-NEXT: invoke void @_ZN1YC1Ev
-  // CHECK: [[OBJECT1:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1YcvP11objc_objectEv
-  // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT1]])
-  // CHECK: store i8* [[RET1]], i8** [[ELEMENT1]]
-
-  // Build the array
-  // CHECK: {{invoke.*@objc_msgSend}}
-  // CHECK: call i8* @objc_retainAutoreleasedReturnValue
-  id arr = @[ X(), Y() ];
-
-  // Destroy temporaries
-  // CHECK-NOT: ret void
-  // CHECK: call void @objc_release
-  // CHECK-NOT: ret void
-  // CHECK: invoke void @_ZN1YD1Ev
-  // CHECK-NOT: ret void
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: call void @_ZN1XD1Ev
-  // CHECK-NOT: ret void
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-
-  // Check cleanups
-  // CHECK: call void @objc_release
-  // CHECK-NOT: call void @objc_release
-  // CHECK: invoke void @_ZN1YD1Ev
-  // CHECK: call void @objc_release
-  // CHECK-NOT: call void @objc_release
-  // CHECK: invoke void @_ZN1XD1Ev
-  // CHECK-NOT: call void @objc_release
-  // CHECK: unreachable
-}
-
-// CHECK: define weak_odr void @_Z24test_array_instantiationIiEvv
-template<typename T>
-void test_array_instantiation() {
-  // CHECK: [[OBJECTS:%[a-zA-Z0-9.]+]] = alloca [2 x i8*]
-
-  // Initializing first element
-  // CHECK: [[ELEMENT0:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x i8*]* [[OBJECTS]], i32 0, i32 0
-  // CHECK-NEXT: call void @_ZN1XC1Ev
-  // CHECK-NEXT: [[OBJECT0:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1XcvP11objc_objectEv
-  // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT0]])
-  // CHECK: store i8* [[RET0]], i8** [[ELEMENT0]]
-  
-  // Initializing the second element
-  // CHECK: [[ELEMENT1:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x i8*]* [[OBJECTS]], i32 0, i32 1
-  // CHECK-NEXT: invoke void @_ZN1YC1Ev
-  // CHECK: [[OBJECT1:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1YcvP11objc_objectEv
-  // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT1]])
-  // CHECK: store i8* [[RET1]], i8** [[ELEMENT1]]
-
-  // Build the array
-  // CHECK: {{invoke.*@objc_msgSend}}
-  // CHECK: call i8* @objc_retainAutoreleasedReturnValue
-  id arr = @[ X(), Y() ];
-
-  // Destroy temporaries
-  // CHECK-NOT: ret void
-  // CHECK: call void @objc_release
-  // CHECK-NOT: ret void
-  // CHECK: invoke void @_ZN1YD1Ev
-  // CHECK-NOT: ret void
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: call void @_ZN1XD1Ev
-  // CHECK-NOT: ret void
-  // CHECK: call void @objc_release
-  // CHECK-NEXT: ret void
-
-  // Check cleanups
-  // CHECK: call void @objc_release
-  // CHECK-NOT: call void @objc_release
-  // CHECK: invoke void @_ZN1YD1Ev
-  // CHECK: call void @objc_release
-  // CHECK-NOT: call void @objc_release
-  // CHECK: invoke void @_ZN1XD1Ev
-  // CHECK-NOT: call void @objc_release
-  // CHECK: unreachable
-}
-
-template void test_array_instantiation<int>();
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/lvalue-reference-getter.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/lvalue-reference-getter.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/lvalue-reference-getter.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-// rdar://10153365
-
-static int gint;
-struct SetSection { 
-      int & at(int __n) { return gint; }
-      const int& at(int __n) const { return gint; }
-};
-
-static SetSection gSetSection;
-
- at interface SetShow
-- (SetSection&)sections;
- at end
-
- at implementation SetShow
-- (SetSection&) sections {
-//  [self sections].at(100);
-    self.sections.at(100);
-   return gSetSection;
-}
- at end
-
-// CHECK: [[SELF:%.*]] = alloca [[T6:%.*]]*, align
-// CHECK: [[T0:%.*]] = load {{.*}}* [[SELF]], align
-// CHECK: [[T1:%.*]] = load {{.*}}* @"\01L_OBJC_SELECTOR_REFERENCES_"
-// CHECK: [[C:%.*]] = call %struct.SetSection* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK: call i32* @_ZN10SetSection2atEi(%struct.SetSection* [[C]]

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/mangle-blocks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/mangle-blocks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/mangle-blocks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -fblocks -o - -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 %s | FileCheck %s
-
-// CHECK: @_ZGVN3foo22___Z3foov_block_invoke5valueE = internal global i64 0
-
-int f();
-
-void foo() {
-  // CHECK: define internal i32 @___Z3foov_block_invoke
-  // CHECK: call i32 @__cxa_guard_acquire(i64* @_ZGVN3foo22___Z3foov_block_invoke5valueE
-  (void)^(int x) { 
-    static int value = f();
-    return x + value;
-  };
-}
-
-// CHECK: define internal i32 @i_block_invoke
-int i = ^(int x) { return x;}(i);
-
- at interface A
-- (void)method;
- at end
-
- at implementation A
-- (void)method { 
-  // CHECK: define internal signext i8 @"__11-[A method]_block_invoke"
-  (void)^(int x) {
-    // CHECK: @"_ZN11-[A method]28__11-[A method]_block_invoke4nameE"
-    static const char *name = "hello";
-    return name[x];
-  };
-}
- at end
-
-void foo(int) {
-  (void)^(int x) { 
-    static const char *name = "hello";
-    return name[x];
-  };
-}
-
-namespace N {
-  // CHECK: define internal signext i8 @___Z3fooi_block_invoke
-  void bar() {
-    (void)^(int x) { 
-      // CHECK: @_ZN1N3bar26___ZN1N3barEv_block_invoke4nameE
-      static const char *name = "hello";
-      return name[x];
-    };
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/mangle.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/mangle.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/mangle.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -std=c++11 -emit-llvm -o - | FileCheck %s
-
-// CHECK: @"_ZZ11+[A shared]E1a" = internal global
-// CHECK: @"_ZZ11-[A(Foo) f]E1a" = internal global
-// CHECK: v56 at 0:8i16i20i24i28i32i36i40i44^i48
-
- at interface A
- at end
-
- at implementation A
-
-+ (A *)shared {
-  static A* a;
-  
-  return a;
-}
-
- at end
-
- at interface A(Foo)
- at end
-
- at implementation A(Foo)
-- (int)f {
-  // FIXME: Add a member function to s and make sure that it's mangled correctly.
-  struct s {
-  };
-  
-  static s a;
-
-  return 0;
-}
- at end
-
-// PR6468
- at interface Test
-- (void) process: (int)r3 :(int)r4 :(int)r5 :(int)r6 :(int)r7 :(int)r8 :(int)r9 :(int)r10 :(int &)i;
- at end
-
- at implementation Test
-- (void) process: (int)r3 :(int)r4 :(int)r5 :(int)r6 :(int)r7 :(int)r8 :(int)r9 :(int)r10 :(int &)i {
-}
- at end
-
-// rdar://9566314
- at interface NX
-- (void)Meth;
- at end
-
- at implementation NX
-- (void)Meth {
-  void uiIsVisible();
-// CHECK: call void @_Z11uiIsVisiblev
-  uiIsVisible();
-}
- at end
-
-// rdar://13434937
-//
-// Don't crash when mangling an enum whose semantic context
-// is a class extension (which looks anonymous in the AST).
-// The other tests here are just for coverage.
- at interface Test2 @end
- at interface Test2 ()
- at property (assign) enum { T2x, T2y, T2z } axis;
- at end
- at interface Test2 (a)
- at property (assign) enum { T2i, T2j, T2k } dimension;
- at end
- at implementation Test2 {
- at public
-  enum { T2a, T2b, T2c } alt_axis;
-}
- at end
-template <class T> struct Test2Template { Test2Template() {} }; // must have a member that we'll instantiate and mangle
-void test2(Test2 *t) {
-  Test2Template<decltype(t.axis)> t0;
-  Test2Template<decltype(t.dimension)> t1;
-  Test2Template<decltype(t->alt_axis)> t2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/message-reference.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/message-reference.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/message-reference.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-// rdar://8604515
-
- at interface I {}
--(unsigned int&)referenceCount;
- at end
-
- at interface MyClass
-+(int)writeBlip:(I*)srcBlip;
- at end
-
- at implementation MyClass
-+(int)writeBlip:(I*)srcBlip{
-  return ([srcBlip referenceCount] == 0);
-}
- at end
-
-// CHECK: [[T:%.*]] = call i32* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK: [[U:%.*]] = load i32* [[T]]
-// CHECK  [[V:%.*]] = icmp eq i32 [[U]], 0

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/message.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/message.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/message.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-10.7 -emit-llvm -o - %s | FileCheck %s
-
-// Properly instantiate a non-dependent message expression which
-// requires a contextual conversion to ObjC pointer type.
-// <rdar://13305374>
- at interface Test0
-- (void) foo;
- at end
-namespace test0 {
-  struct A {
-    operator Test0*();
-  };
-  template <class T> void foo() {
-    A a;
-    [a foo];
-  }
-  template void foo<int>();
-  // CHECK:    define weak_odr void @_ZN5test03fooIiEEvv()
-  // CHECK:      [[T0:%.*]] = call [[TEST0:%.*]]* @_ZN5test01AcvP5Test0Ev(
-  // CHECK-NEXT: [[T1:%.*]] = load i8**
-  // CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST0]]* [[T0]] to i8*
-  // CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*)*)(i8* [[T2]], i8* [[T1]])
-  // CHECK-NEXT: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/method-local-extern-mangle.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/method-local-extern-mangle.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/method-local-extern-mangle.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// CHECK: @gGlobals = external global
-
- at interface I
-- (int) Meth;
- at end
-
- at implementation I
-- (int) Meth {
-    extern int gGlobals;
-    return gGlobals;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/nrvo.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/nrvo.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/nrvo.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - -fblocks %s -O1 -triple x86_64-apple-darwin10.0.0 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s
-
-// PR10835 / <rdar://problem/10050178>
-struct X {
-  X();
-  X(const X&);
-  ~X();
-};
-
- at interface NRVO
- at end
-
- at implementation NRVO
-// CHECK: define internal void @"\01-[NRVO getNRVO]"
-- (X)getNRVO { 
-  X x;
-  // CHECK: tail call void @_ZN1XC1Ev
-  // CHECK-NEXT: ret void
-  return x;
-}
- at end
-
-X blocksNRVO() {
-  return ^{
-    // CHECK: define internal void @___Z10blocksNRVOv_block_invoke
-    X x;
-    // CHECK: tail call void @_ZN1XC1Ev
-    // CHECK-NEXT: ret void
-    return x;
-  }() ;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/objc-container-subscripting-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/objc-container-subscripting-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/objc-container-subscripting-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin -o - %s | FileCheck %s
-
-typedef unsigned int size_t;
- at protocol P @end
- at protocol NSCopying @end
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(size_t)index;
-- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
- at end
-
-struct S {
-  operator unsigned int ();
-  operator id ();
-};
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id<NSCopying>)key;
-- (void)setObject:(id)object forKeyedSubscript:(id<NSCopying>)key;
- at end
-
-int main() {
-  NSMutableArray<P> * array;
-  S s;
-  id oldObject = array[(int)s];
-
-  NSMutableDictionary<P> *dict;
-  dict[(id)s] = oldObject;
-  oldObject = dict[(id)s];
-
-}
-
-template <class T> void test2(NSMutableArray *a) {
-  a[10] = 0;
-}
-template void test2<int>(NSMutableArray*);
-// CHECK: define weak_odr void @_Z5test2IiEvP14NSMutableArray
-// CHECK: @objc_msgSend 
-// CHECK: ret void
-
-
-template <class T> void test3(NSMutableArray *a) {
-  a[sizeof(T)] = 0;
-}
-
-template void test3<int>(NSMutableArray*);
-// CHECK: define weak_odr void @_Z5test3IiEvP14NSMutableArray
-// CHECK: @objc_msgSend
-// CHECK: ret void
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/objc-container-subscripting.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/objc-container-subscripting.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/objc-container-subscripting.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin -o - %s | FileCheck %s
-
-typedef unsigned int size_t;
- at protocol P @end
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(size_t)index;
-- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
- at end
-
-struct S {
-  operator unsigned int ();
-  operator id ();
-};
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id)key;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
-int main() {
-  NSMutableArray<P> * array;
-  S s;
-  id oldObject = array[(int)s];
-
-  NSMutableDictionary<P> *dict;
-  dict[(id)s] = oldObject;
-  oldObject = dict[(id)s];
-
-}
-
-template <class T> void test2(NSMutableArray *a) {
-  a[10] = 0;
-}
-template void test2<int>(NSMutableArray*);
-// CHECK: define weak_odr void @_Z5test2IiEvP14NSMutableArray
-// CHECK: @objc_msgSend 
-// CHECK: ret void
-
-
-template <class T> void test3(NSMutableArray *a) {
-  a[sizeof(T)] = 0;
-}
-
-template void test3<int>(NSMutableArray*);
-// CHECK: define weak_odr void @_Z5test3IiEvP14NSMutableArray
-// CHECK: @objc_msgSend
-// CHECK: ret void
-
-// CHECK: define void @_Z11static_dataP14NSMutableArray
-void static_data(NSMutableArray *array) {
-  // CHECK: call i32 @__cxa_guard_acquire
-  // CHECK: {{call i8*.*@objc_msgSend }}
-  // CHECK: call void @__cxa_guard_release
-  static id x = array[4];
-  // CHECK: ret void
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/pr14474-gline-tables-only.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/pr14474-gline-tables-only.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/pr14474-gline-tables-only.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// PR 14474
-// RUN: %clang_cc1 -triple i386-apple-macosx10.6.0 -emit-llvm \
-// RUN:   -gline-tables-only -x objective-c++ -o /dev/null %s
-
-typedef signed char BOOL;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject - (BOOL)isEqual:(id)object;
- at end
- at protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end 
- at interface NSObject <NSObject> { }
- at end    
- at interface NSResponder : NSObject <NSCoding> { }
- at end
- at protocol NSValidatedUserInterfaceItem - (SEL)action;
- at end
- at protocol NSUserInterfaceValidations - (BOOL)validateUserInterfaceItem:(id
-<NSValidatedUserInterfaceItem>)anItem;
- at end
- at interface NSRunningApplication : NSObject { }
- at end
- at interface NSApplication : NSResponder <NSUserInterfaceValidations> { }
- at end
- at implementation MockCrApp + (NSApplication*)sharedApplication { }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-derived-to-base-conv.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-derived-to-base-conv.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-derived-to-base-conv.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s
-// rdar: // 7501812
-
-struct A {
-  int member;
-  void foo();
-  A *operator->();
-};
-struct B : A { };
-
- at interface BInt {
- at private
-  B *b;
-}
-- (B)value;
-- (void)setValue : (B) arg;
- at property B value;
- at end
-
-void g(BInt *bint) {
-  bint.value.foo();
-  bint.value->member = 17;
-  int x = bint.value.member;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-dot-copy.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-dot-copy.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-dot-copy.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-// rdar://8427922
-
-struct Vector3D
-{
-		float x, y, z;
-		Vector3D();
-		Vector3D(const Vector3D &inVector);
-		Vector3D(float initX, float initY, float initZ);
-		Vector3D &operator=(const Vector3D & rhs);
-};
-
- at interface Object3D
-{
-	Vector3D position;
-        Vector3D length;
-}
- at property (assign) Vector3D position;
-- (Vector3D) length;
-- (void) setLength: (Vector3D)arg;
- at end
-
-int main () 
-{
-	Object3D *myObject;
-        Vector3D V3D(1.0f, 1.0f, 1.0f);
-// CHECK: call void @_ZN8Vector3DC1ERKS_
-	myObject.position = V3D;
-
-// CHECK: call void @_ZN8Vector3DC1ERKS_
-	myObject.length = V3D;
-
-        return 0;
-}
-
-// rdar: // 8437253
-extern "C" void exit(...);
-
-struct CGPoint {
-  float x;
-  float y;
-};
-typedef struct CGPoint CGPoint;
-
-extern "C" const CGPoint CGPointZero;
-
-bool operator==(const CGPoint& a, const CGPoint& b);
-
- at interface TIconViewSettings
- at property (assign, nonatomic) CGPoint gridOffset;
- at end
-
- at implementation TIconViewSettings
-- (CGPoint) gridOffset
-{
- return CGPointZero;
-}
-
-- (void) foo
-{
-        if ((self.gridOffset) == CGPointZero)
-                exit(1);
-
- if (self.gridOffset == CGPointZero)
-  exit(1);
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-dot-reference.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-dot-reference.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-dot-reference.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -fexceptions -o - %s | FileCheck %s
-// rdar://8409336
-
-struct TFENode {
-void GetURL() const;
-};
-
- at interface TNodeIconAndNameCell
-- (const TFENode&) node;
- at end
-
- at implementation TNodeIconAndNameCell     
-- (const TFENode&) node {
-// CHECK: call %struct.TFENode* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK-NEXT: call void @_ZNK7TFENode6GetURLEv(%struct.TFENode* %{{.*}})
-	self.node.GetURL();
-}	// expected-warning {{control reaches end of non-void function}}
- at end
-
-// rdar://8437240
-struct X {
-  int x;
-};
-
-void f0(const X &parent);
- at interface A
-- (const X&) target;
- at end
-void f1(A *a) {
-// CHECK: [[PRP:%.*]] = call %struct.X* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK-NEXT:call void @_Z2f0RK1X(%struct.X* [[PRP]])
-  f0(a.target);
-
-// CHECK: [[MSG:%.*]] = call %struct.X* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK-NEXT:call void @_Z2f0RK1X(%struct.X* [[MSG]])
-  f0([a target]);
-}
-
- at interface Test2
- at property (readonly) int myProperty;
-- (int) myProperty;
-- (double) myGetter;
- at end
-void test2() {
-    Test2 *obj;
-    (void) obj.myProperty; 
-    (void) obj.myGetter; 
-    static_cast<void>(obj.myProperty);
-    static_cast<void>(obj.myGetter);
-    void(obj.myProperty);
-    void(obj.myGetter);
-}
-// CHECK: define void @_Z5test2v()
-// CHECK: call i32 bitcast
-// CHECK: call double bitcast
-// CHECK: call i32 bitcast
-// CHECK: call double bitcast
-// CHECK: call i32 bitcast
-// CHECK: call double bitcast
-
-// PR8751
-int test3(Test2 *obj) { return obj.myProperty; }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-conditional-exp.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-conditional-exp.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-conditional-exp.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-
-struct CGRect {
-  char* origin;
-  unsigned size;
-};
-typedef struct CGRect CGRect;
-
-extern "C" bool CGRectIsEmpty(CGRect);
-
- at interface Foo {
-  CGRect out;
-}
- at property CGRect bounds;
-- (CGRect) out;
- at end
-
-
- at implementation Foo
-
-- (void)bar {
-    CGRect dataRect;
-    CGRect virtualBounds;
-
-// CHECK: [[SRC:%.*]] = call { i8*, i32 } bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK-NEXT: bitcast
-// CHECK-NEXT:getelementptr { i8*, i32 }* [[SRC:%.*]]
-// CHECK-NEXT:extractvalue
-// CHECK-NEXT:store
-// CHECK-NEXT:getelementptr { i8*, i32 }* [[SRC:%.*]]
-// CHECK-NEXT:extractvalue
-// CHECK-NEXT:store
-  dataRect = CGRectIsEmpty(virtualBounds) ? self.bounds : virtualBounds;
-  dataRect = CGRectIsEmpty(virtualBounds) ? [self bounds] : virtualBounds;
-  dataRect = CGRectIsEmpty(virtualBounds) ? virtualBounds : self.bounds;
-
-  dataRect = CGRectIsEmpty(virtualBounds) ? self.out : virtualBounds;
-  dataRect = CGRectIsEmpty(virtualBounds) ? [self out] : virtualBounds;
-  dataRect = CGRectIsEmpty(virtualBounds) ? virtualBounds : self.out;
-}
-
- at dynamic bounds;
-- (CGRect) out { return out; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-// rdar://6137845
-
-struct TCPPObject
-{
- TCPPObject(const TCPPObject& inObj);
- TCPPObject();
- ~TCPPObject();
- int filler[64];
-};
-
-
- at interface MyDocument 
-{
- at private
- TCPPObject _cppObject;
-}
- at property (atomic, assign, readwrite) const TCPPObject& cppObject;
- at end
-
- at implementation MyDocument
-
- at synthesize cppObject = _cppObject;
-
- at end
-
-// CHECK: [[cppObjectaddr:%.*]] = alloca %struct.TCPPObject*, align 8
-// CHECK: store %struct.TCPPObject* [[cppObject:%.*]], %struct.TCPPObject** [[cppObjectaddr]], align 8
-// CHECK:  [[THREE:%.*]] = load %struct.TCPPObject** [[cppObjectaddr]], align 8
-// CHECK:  [[FOUR:%.*]] = bitcast %struct.TCPPObject* [[THREE]] to i8*
-// CHECK:  call void @objc_copyStruct(i8* [[TWO:%.*]], i8* [[FOUR]], i64 256, i1 zeroext true, i1 zeroext false)

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference-2.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference-2.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference-2.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-10.7 -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple x86_64-unknown-freebsd -fobjc-runtime=gnustep-1.7 -emit-llvm -o - | FileCheck -check-prefix=CHECK-GNUSTEP %s
-// rdar://6137845
-
-extern int DEFAULT();
-
-struct TCPPObject
-{
- TCPPObject();
- ~TCPPObject();
- TCPPObject(const TCPPObject& inObj, int i = DEFAULT());
- TCPPObject& operator=(const TCPPObject& inObj);
- int filler[64];
-};
-
-
- at interface MyDocument 
-{
- at private
- TCPPObject _cppObject;
- TCPPObject _cppObject1;
-}
- at property (assign, readwrite, atomic) const TCPPObject MyProperty;
- at property (assign, readwrite, atomic) const TCPPObject MyProperty1;
- at end
-
- at implementation MyDocument
-  @synthesize MyProperty = _cppObject;
-  @synthesize MyProperty1 = _cppObject1;
- at end
-
-// CHECK: define internal void @__copy_helper_atomic_property_(
-// CHECK: [[TWO:%.*]] = load %struct.TCPPObject** [[ADDR:%.*]], align 8
-// CHECK: [[THREE:%.*]] = load %struct.TCPPObject** [[ADDR1:%.*]], align 8
-// CHECK: [[CALL:%.*]] = call i32 @_Z7DEFAULTv()
-// CHECK:  call void @_ZN10TCPPObjectC1ERKS_i(%struct.TCPPObject* [[TWO]], %struct.TCPPObject* [[THREE]], i32 [[CALL]])
-// CHECK:  ret void
-
-// CHECK: define internal void @"\01-[MyDocument MyProperty]"(
-// CHECK: [[ONE:%.*]] = bitcast i8* [[ADDPTR:%.*]] to %struct.TCPPObject*
-// CHECK: [[TWO:%.*]] = bitcast %struct.TCPPObject* [[ONE]] to i8*
-// CHECK: [[THREE:%.*]] = bitcast %struct.TCPPObject* [[AGGRESULT:%.*]] to i8*
-// CHECK: call void @objc_copyCppObjectAtomic(i8* [[THREE]], i8* [[TWO]], i8* bitcast (void (%struct.TCPPObject*, %struct.TCPPObject*)* @__copy_helper_atomic_property_ to i8*))
-// CHECK: ret void
-
-// CHECK: define internal void @__assign_helper_atomic_property_(
-// CHECK: [[TWO:%.*]] = load %struct.TCPPObject** [[ADDR:%.*]], align 8
-// CHECK: [[THREE:%.*]] = load %struct.TCPPObject** [[ADDR1:%.*]], align 8
-// CHECK: [[CALL:%.*]] = call %struct.TCPPObject* @_ZN10TCPPObjectaSERKS_(%struct.TCPPObject* [[TWO]], %struct.TCPPObject* [[THREE]])
-// CHECK:  ret void
-
-// CHECK: define internal void @"\01-[MyDocument setMyProperty:]"(
-// CHECK: [[ONE:%.*]] = bitcast i8* [[ADDRPTR:%.*]] to %struct.TCPPObject*
-// CHECK: [[TWO:%.*]] = bitcast %struct.TCPPObject* [[ONE]] to i8*
-// CHECK: [[THREE:%.*]] = bitcast %struct.TCPPObject* [[MYPROPERTY:%.*]] to i8*
-// CHECK: call void @objc_copyCppObjectAtomic(i8* [[TWO]], i8* [[THREE]], i8* bitcast (void (%struct.TCPPObject*, %struct.TCPPObject*)* @__assign_helper_atomic_property_ to i8*))
-// CHECK: ret void
-
-// CHECK-GNUSTEP: objc_getCppObjectAtomic
-// CHECK-GNUSTEP: objc_setCppObjectAtomic

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-object-reference.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - | FileCheck %s
-// rdar://10188258
-
-struct Foo {int i;};
-static Foo gFoo;
-
-
- at interface ObjCTest  { }
- at property (nonatomic, readonly) Foo& FooRefProperty;
- at property (nonatomic) Foo  FooProperty;
-- (Foo &) FooProperty;
-- (void)setFooProperty : (Foo &) arg;
- at end
-
-
- at implementation ObjCTest
- at dynamic FooRefProperty;
-
--(void) test {
-    Foo& f = self.FooRefProperty;
-    Foo& f1 = self.FooProperty;
-}
-- (Foo &) FooProperty { return gFoo; }
-- (void)setFooProperty : (Foo &) arg {  };
- at end
-
-// CHECK: [[T0:%.*]] = load {{%.*}} [[S0:%.*]]
-// CHECK: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-// CHECK:  [[T2:%.*]]  = bitcast {{%.*}} [[T0]] to i8*
-// CHECK:  @objc_msgSend
-// CHECK: [[R0:%.*]] = load {{%.*}} [[U0:%.*]]
-// CHECK: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_
-// CHECK:  [[R2:%.*]]  = bitcast {{%.*}} [[R0]] to i8*
-// CHECK:  @objc_msgSend
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-objects.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-objects.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-objects.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-class S {
-public:
-	S& operator = (const S&);
-	S (const S&);
-	S ();
-};
-
-struct CGRect {
-	CGRect & operator = (const CGRect &);
-};
-
- at interface I {
-  S position;
-  CGRect bounds;
-}
-
- at property(assign, nonatomic) S position;
- at property CGRect bounds;
- at property CGRect frame;
-- (void)setFrame:(CGRect)frameRect;
-- (CGRect)frame;
-- (void) initWithOwner;
-- (CGRect)extent;
-- (void)dealloc;
- at end
-
- at implementation I
- at synthesize position;
- at synthesize bounds;
- at synthesize frame;
-
-// CHECK: define internal void @"\01-[I setPosition:]"
-// CHECK: call %class.S* @_ZN1SaSERKS_
-// CHECK-NEXT: ret void
-
-- (void)setFrame:(CGRect)frameRect {}
-- (CGRect)frame {return bounds;}
-
-- (void)initWithOwner {
-  I* _labelLayer;
-  CGRect labelLayerFrame = self.bounds;
-  labelLayerFrame = self.bounds;
-  _labelLayer.frame = labelLayerFrame;
-}
-
-// rdar://8366604
-- (void)dealloc
-  {
-      CGRect cgrect = self.extent;
-  }
-- (struct CGRect)extent {return bounds;}
-
- at end
-
-// CHECK: define i32 @main
-// CHECK: call void @_ZN1SC1ERKS_(%class.S* [[AGGTMP:%[a-zA-Z0-9\.]+]], %class.S* {{%[a-zA-Z0-9\.]+}})
-// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, %class.S*)*)(i8* {{%[a-zA-Z0-9\.]+}}, i8* {{%[a-zA-Z0-9\.]+}}, %class.S* [[AGGTMP]])
-// CHECK-NEXT: ret i32 0
-int main() {
-  I *i;
-  S s1;
-  i.position = s1;
-  return 0;
-}
-
-// rdar://8379892
-// CHECK: define void @_Z1fP1A
-// CHECK: call void @_ZN1XC1Ev(%struct.X* [[LVTEMP:%[a-zA-Z0-9\.]+]])
-// CHECK: call void @_ZN1XC1ERKS_(%struct.X* [[AGGTMP:%[a-zA-Z0-9\.]+]], %struct.X* [[LVTEMP]])
-// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, %struct.X*)*)({{.*}} %struct.X* [[AGGTMP]])
-struct X {
-  X();
-  X(const X&);
-  ~X();
-};
-
- at interface A {
-  X xval;
-}
-- (X)x;
-- (void)setX:(X)x;
- at end
-
-void f(A* a) {
-  a.x = X();
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-reference.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-reference.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/property-reference.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - | FileCheck %s
-// rdar://9208606
-
-struct MyStruct {
-  int x;
-  int y;
-  int z;
-};
-
- at interface MyClass {
-  MyStruct _foo;
-}
-
- at property (assign, readwrite) const MyStruct& foo;
-
-- (const MyStruct&) foo;
-- (void) setFoo:(const MyStruct&)inFoo;
- at end
-
-void test0() {
-  MyClass* myClass;
-  MyStruct myStruct;
-
-  myClass.foo = myStruct;
-
-  const MyStruct& currentMyStruct = myClass.foo;   
-}
-
-// CHECK: [[C:%.*]] = call %struct.MyStruct* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
-// CHECK:   store %struct.MyStruct* [[C]], %struct.MyStruct** [[D:%.*]]
-
-namespace test1 {
-  struct A { A(); A(const A&); A&operator=(const A&); ~A(); };
-}
- at interface Test1 {
-  test1::A ivar;
-}
- at property (nonatomic) const test1::A &prop1;
- at end
- at implementation Test1
- at synthesize prop1 = ivar;
- at end
-// CHECK:    define internal [[A:%.*]]* @"\01-[Test1 prop1]"(
-// CHECK:      [[SELF:%.*]] = alloca [[TEST1:%.*]]*, align 8
-// CHECK:      [[T0:%.*]] = load [[TEST1]]** [[SELF]]
-// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*
-// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds i8* [[T1]], i64 0
-// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*
-// CHECK-NEXT: ret [[A]]* [[T3]]
-
-// CHECK:    define internal void @"\01-[Test1 setProp1:]"(
-// CHECK:      call [[A]]* @_ZN5test11AaSERKS0_(
-// CHECK-NEXT: ret void
-
-// rdar://problem/10497174
- at interface Test2
- at property int prop;
- at end
-
-// The fact that these are all non-dependent is critical.
-template <class T> void test2(Test2 *a) {
-  int x = a.prop;
-  a.prop = x;
-  a.prop += x;
-}
-template void test2<int>(Test2*);
-// CHECK: define weak_odr void @_Z5test2IiEvP5Test2(
-// CHECK: [[X:%.*]] = alloca i32,
-// CHECK:      @objc_msgSend
-// CHECK:      store i32 {{%.*}}, i32* [[X]],
-// CHECK:      load i32* [[X]],
-// CHECK:      @objc_msgSend
-// CHECK:      @objc_msgSend
-// CHECK:      load i32* [[X]],
-// CHECK-NEXT: add nsw
-// CHECK:      @objc_msgSend
-// CHECK-NEXT: ret void
-
-// Same as the previous test, but instantiation-dependent.
-template <class T> void test3(Test2 *a) {
-  int x = (sizeof(T), a).prop;
-  a.prop = (sizeof(T), x);
-  a.prop += (sizeof(T), x);
-}
-template void test3<int>(Test2*);
-// CHECK: define weak_odr void @_Z5test3IiEvP5Test2(
-// CHECK: [[X:%.*]] = alloca i32,
-// CHECK:      @objc_msgSend
-// CHECK:      store i32 {{%.*}}, i32* [[X]],
-// CHECK:      load i32* [[X]],
-// CHECK:      @objc_msgSend
-// CHECK:      @objc_msgSend
-// CHECK:      load i32* [[X]],
-// CHECK-NEXT: add nsw
-// CHECK:      @objc_msgSend
-// CHECK-NEXT: ret void

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/refence-assign-write-barrier.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/refence-assign-write-barrier.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/refence-assign-write-barrier.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-// rdar://8681766
-
- at interface NSArray 
-- (NSArray*) retain;
-- (void) release;
- at end
-
-void NSAssignArray(NSArray*& target, NSArray* newValue)
-{
-        if (target == newValue)
-                return;
-
-        NSArray* oldValue = target;
-
-        target = [newValue retain];
-
-        [oldValue release];
-}
-// CHECK: {{call.* @objc_assign_strongCast}}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/references.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/references.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/references.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-struct A { ~A(); };
-
- at interface B {
-  A a;
-}
-
-- (const A&)getA;
- at end
-
- at implementation B 
-
-- (const A&)getA {
-  return a;
-}
-
- at end
-
-// CHECK: define void @_Z1fP1B
-// CHECK: objc_msgSend to
-// CHECK-NOT: call void @_ZN1AD1Ev
-// CHECK: ret void
-void f(B* b) {
-  (void)[b getA];
-}
-
-// PR7741
- at protocol P1 @end
- at protocol P2 @end
- at protocol P3 @end
- at interface foo<P1> {} @end
- at interface bar : foo <P1, P2, P3> {} @end
-typedef bar baz;
-void f5(foo&);
-void f5b(foo<P1>&);
-void f5c(foo<P2>&);
-void f5d(foo<P3>&);
-void f6(baz* x) { 
-  f5(*x); 
-  f5b(*x); 
-  f5c(*x); 
-  f5d(*x);
-  (void)((foo&)*x);  
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/rtti.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/rtti.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/rtti.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
-
-// PR7864.  This all follows GCC's lead.
-
-namespace std { class type_info; }
-
-// CHECK: @_ZTI1A = linkonce_odr unnamed_addr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS1A
- at interface A
- at end
-
-// CHECK: @_ZTI1B = linkonce_odr unnamed_addr constant {{.*}}@_ZTVN10__cxxabiv120__si_class_type_infoE{{.*}}@_ZTS1B{{.*}}@_ZTI1A
- at interface B : A
- at end
-
-// CHECK: @_ZTIP1B = linkonce_odr unnamed_addr constant {{.*}}@_ZTVN10__cxxabiv119__pointer_type_infoE{{.*}}@_ZTSP1B{{.*}}), i32 0, {{.*}}@_ZTI1B
-// CHECK: @_ZTI11objc_object = linkonce_odr unnamed_addr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS11objc_object
-// CHECK: @_ZTIP11objc_object = linkonce_odr unnamed_addr constant {{.*}}@_ZTVN10__cxxabiv119__pointer_type_infoE{{.*}}@_ZTSP11objc_object{{.*}}@_ZTI11objc_object
-// CHECK: @_ZTI10objc_class = linkonce_odr unnamed_addr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS10objc_class
-// CHECK: @_ZTIP10objc_class = linkonce_odr unnamed_addr constant {{.*}}@_ZTVN10__cxxabiv119__pointer_type_infoE{{.*}}@_ZTSP10objc_class{{.*}}@_ZTI10objc_class
-
- at protocol P;
-
-int main() {
-  // CHECK: store {{.*}} @_ZTIP1B
-  // CHECK: store {{.*}} @_ZTI1B
-  const std::type_info &t1 = typeid(B*);
-  const std::type_info &t2 = typeid(B);
-
-  // CHECK: store {{.*}} @_ZTIP11objc_object
-  // CHECK: store {{.*}} @_ZTI11objc_object
-  id i = 0;
-  const std::type_info &t3 = typeid(i);
-  const std::type_info &t4 = typeid(*i);
-
-  // CHECK: store {{.*}} @_ZTIP10objc_class
-  // CHECK: store {{.*}} @_ZTI10objc_class
-  Class c = 0;
-  const std::type_info &t5 = typeid(c);
-  const std::type_info &t6 = typeid(*c);
-
-  // CHECK: store {{.*}} @_ZTIP11objc_object
-  // CHECK: store {{.*}} @_ZTI11objc_object
-  id<P> i2 = 0;
-  const std::type_info &t7 = typeid(i2);
-  const std::type_info &t8 = typeid(*i2);
-
-  // CHECK: store {{.*}} @_ZTIP10objc_class
-  // CHECK: store {{.*}} @_ZTI10objc_class
-  Class<P> c2 = 0;
-  const std::type_info &t9 = typeid(c2);
-  const std::type_info &t10 = typeid(*c2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/selector-expr-lvalue.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/selector-expr-lvalue.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/selector-expr-lvalue.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5  -emit-llvm -o - %s 
-// PR7390
-
- at interface NSObject {}
-- (void)respondsToSelector:(const SEL&)s : (SEL*)s1;
-- (void) setPriority:(int)p;
-- (void)Meth;
- at end
-
- at implementation  NSObject
-- (void)Meth {
-    [self respondsToSelector:@selector(setPriority:) : &@selector(setPriority:)];
-}
-- (void) setPriority:(int)p{}
-- (void)respondsToSelector:(const SEL&)s : (SEL*)s1 {}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/unknown-anytype.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/unknown-anytype.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/unknown-anytype.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fdebugger-support -funknown-anytype -emit-llvm -o - %s | FileCheck %s
-
-// rdar://13025708
-
- at interface A @end
-void test0(A *a) {
-  (void) [a test0: (float) 2.0];
-}
-// CHECK: define void @_Z5test0P1A(
-// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, float)*)(
-
- at interface B
-- (void) test1: (__unknown_anytype) x;
- at end
-void test1(B *b) {
-  (void) [b test1: (float) 2.0];
-}
-// CHECK: define void @_Z5test1P1B(
-// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, float)*)(
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/write-barrier-global-assign.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/write-barrier-global-assign.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenObjCXX/write-barrier-global-assign.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fobjc-gc -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s
-// rdar://8761767
-
- at class CPDestUser;
-
-CPDestUser* FUNC();
-
-// CHECK: {{call.* @objc_assign_global}}
-CPDestUser* globalUser = FUNC();
-
-// CHECK: {{call.* @objc_assign_weak}}
-__weak CPDestUser* weakUser = FUNC();
-
-
-// CHECK: {{call.* @objc_assign_global}}
-static CPDestUser* staticUser = FUNC();
-
-CPDestUser* GetDestUser()
-{
-// CHECK: {{call.* @objc_assign_global}}
-	static CPDestUser* gUser = FUNC();
-// CHECK: {{call.* @objc_assign_weak}}
-	static __weak CPDestUser* wUser = FUNC();
-        if (wUser)
-          return wUser;
-        if (staticUser)
-	  return staticUser;
-	return gUser;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/2011-04-15-vec-init-from-vec.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/2011-04-15-vec-init-from-vec.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/2011-04-15-vec-init-from-vec.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o %t
-
-typedef __attribute__((ext_vector_type(4)))  unsigned char uchar4;
-typedef __attribute__((ext_vector_type(8))) unsigned char uchar8;
-
-// OpenCL allows vectors to be initialized by vectors Handle bug in
-// VisitInitListExpr for this case below.
-void foo( uchar8 x )
-{
-  uchar4 val[4] = {{(uchar4){x.lo}}};
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -O0 -ffake-address-space-map -triple i686-pc-darwin | FileCheck %s
-
-typedef struct {
-  int cells[9];
-} Mat3X3;
-
-typedef struct {
-  int cells[16];
-} Mat4X4;
-
-Mat4X4 __attribute__((noinline)) foo(Mat3X3 in) {
-  Mat4X4 out;
-  return out;
-}
-
-kernel void ker(global Mat3X3 *in, global Mat4X4 *out) {
-  out[0] = foo(in[1]);
-}
-
-// Expect two mem copies: one for the argument "in", and one for
-// the return value.
-// CHECK: call void @llvm.memcpy.p0i8.p1i8.i32(i8*
-// CHECK: call void @llvm.memcpy.p1i8.p0i8.i32(i8 addrspace(1)*

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/address-spaces.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/address-spaces.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/address-spaces.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -ffake-address-space-map -emit-llvm -o - | FileCheck %s
-
-void f__p(__private int *arg) { }
-// CHECK: i32* nocapture %arg
-
-void f__g(__global int *arg) { }
-// CHECK: i32 addrspace(1)* nocapture %arg
-
-void f__l(__local int *arg) { }
-// CHECK: i32 addrspace(2)* nocapture %arg
-
-void f__c(__constant int *arg) { }
-// CHECK: i32 addrspace(3)* nocapture %arg
-
-
-void fp(private int *arg) { }
-// CHECK: i32* nocapture %arg
-
-void fg(global int *arg) { }
-// CHECK: i32 addrspace(1)* nocapture %arg
-
-void fl(local int *arg) { }
-// CHECK: i32 addrspace(2)* nocapture %arg
-
-void fc(constant int *arg) { }
-// CHECK: i32 addrspace(3)* nocapture %arg
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/event_t.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/event_t.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/event_t.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -O0 | FileCheck %s
-
-void foo(event_t evt);
-
-void kernel ker() {
-  event_t e;
-// CHECK: alloca %opencl.event_t*,
-  foo(e);
-// CHECK: call void @foo(%opencl.event_t* %
-  foo(0);
-// CHECK: call void @foo(%opencl.event_t* null)
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ext-vector-shuffle.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ext-vector-shuffle.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ext-vector-shuffle.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -cl-opt-disable -emit-llvm -o - | not grep 'extractelement'
-// RUN: %clang_cc1 %s -cl-opt-disable -emit-llvm -o - | not grep 'insertelement'
-// RUN: %clang_cc1 %s -cl-opt-disable -emit-llvm -o - | grep 'shufflevector'
-
-typedef __attribute__(( ext_vector_type(2) )) float float2;
-typedef __attribute__(( ext_vector_type(4) )) float float4;
-
-float2 test1(float4 V) {
-  return V.xy + V.wz;
-}
-
-float4 test2(float4 V) {
-  float2 W = V.ww;
-  return W.xyxy + W.yxyx;
-}
-
-float4 test3(float4 V1, float4 V2) { return (float4)(V1.zw, V2.xy); }

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/fpmath.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/fpmath.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/fpmath.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-typedef __attribute__(( ext_vector_type(4) )) float float4;
-
-float spscalardiv(float a, float b) {
-  // CHECK: @spscalardiv
-  // CHECK: fdiv{{.*}}, !fpmath ![[MD:[0-9]+]]
-  return a / b;
-}
-
-float4 spvectordiv(float4 a, float4 b) {
-  // CHECK: @spvectordiv
-  // CHECK: fdiv{{.*}}, !fpmath ![[MD]]
-  return a / b;
-}
-
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-
-double dpscalardiv(double a, double b) {
-  // CHECK: @dpscalardiv
-  // CHECK-NOT: !fpmath
-  return a / b;
-}
-
-// CHECK: ![[MD]] = metadata !{float 2.500000e+00}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/half.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/half.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/half.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-#pragma OPENCL EXTENSION cl_khr_fp16 : enable
-
-
-half test()
-{
-   half x = 0.1f;
-   x+=2.0f;
-   x-=2.0f;
-   half y = x + x;
-   half z = y * 1.0f;
-   return z;
-// CHECK: half 0xH3260
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-arg-info.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-arg-info.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-arg-info.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -cl-kernel-arg-info -emit-llvm -o - -triple spir-unknown-unknown | FileCheck %s
-
-kernel void foo(__global int * restrict X, const int Y, 
-                volatile int anotherArg, __constant float * restrict Z) {
-  *X = Y + anotherArg;
-}
-
-// CHECK: metadata !{metadata !"kernel_arg_addr_space", i32 1, i32 0, i32 0, i32 2}
-// CHECK: metadata !{metadata !"kernel_arg_access_qual", metadata !"none", metadata !"none", metadata !"none", metadata !"none"}
-// CHECK: metadata !{metadata !"kernel_arg_type", metadata !"int*", metadata !"int", metadata !"int", metadata !"float*"}
-// CHECK: metadata !{metadata !"kernel_arg_type_qual", metadata !"restrict", metadata !"const", metadata !"volatile", metadata !"restrict const"}
-// CHECK: metadata !{metadata !"kernel_arg_name", metadata !"X", metadata !"Y", metadata !"anotherArg", metadata !"Z"}
-
-kernel void foo2(read_only image1d_t img1, image2d_t img2, write_only image2d_array_t img3) {
-}
-// CHECK: metadata !{metadata !"kernel_arg_addr_space", i32 0, i32 0, i32 0}
-// CHECK: metadata !{metadata !"kernel_arg_access_qual", metadata !"read_only", metadata !"read_only", metadata !"write_only"}
-// CHECK: metadata !{metadata !"kernel_arg_type", metadata !"image1d_t", metadata !"image2d_t", metadata !"image2d_array_t"}
-// CHECK: metadata !{metadata !"kernel_arg_type_qual", metadata !"", metadata !"", metadata !""}
-// CHECK: metadata !{metadata !"kernel_arg_name", metadata !"img1", metadata !"img2", metadata !"img3"}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-attributes.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-attributes.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-attributes.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -O0 -o - %s | FileCheck %s
-
-typedef unsigned int uint4 __attribute__((ext_vector_type(4)));
-
-kernel  __attribute__((vec_type_hint(int))) __attribute__((reqd_work_group_size(1,2,4))) void kernel1(int a) {}
-
-kernel __attribute__((vec_type_hint(uint4))) __attribute__((work_group_size_hint(8,16,32))) void kernel2(int a) {}
-
-// CHECK: opencl.kernels = !{[[MDNODE0:![0-9]+]], [[MDNODE3:![0-9]+]]}
-
-// CHECK: [[MDNODE0]] = metadata !{void (i32)* @kernel1, metadata [[MDNODE1:![0-9]+]], metadata [[MDNODE2:![0-9]+]]}
-// CHECK: [[MDNODE1]] = metadata !{metadata !"vec_type_hint", i32 undef, i32 1}
-// CHECK: [[MDNODE2]] = metadata !{metadata !"reqd_work_group_size", i32 1, i32 2, i32 4}
-// CHECK: [[MDNODE3]] = metadata !{void (i32)* @kernel2, metadata [[MDNODE4:![0-9]+]], metadata [[MDNODE5:![0-9]+]]}
-// CHECK: [[MDNODE4]] = metadata !{metadata !"vec_type_hint", <4 x i32> undef, i32 0}
-// CHECK: [[MDNODE5]] = metadata !{metadata !"work_group_size_hint", i32 8, i32 16, i32 32}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-metadata.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-metadata.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/kernel-metadata.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-void normal_function() {
-}
-
-__kernel void kernel_function() {
-}
-
-// CHECK: !opencl.kernels = !{!0}
-// CHECK: !0 = metadata !{void ()* @kernel_function}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/local.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/local.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/local.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -ffake-address-space-map -emit-llvm -o - | FileCheck %s
-
-__kernel void foo(void) {
-  // CHECK: @foo.i = internal addrspace(2)
-  __local int i;
-  ++i;
-}
-
-// CHECK: define void @_Z3barPU3AS2i
-__kernel void __attribute__((__overloadable__)) bar(local int *x) {
-  *x = 5;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/logical-ops.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/logical-ops.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/logical-ops.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -cl-std=CL1.2 -O1 -triple x86_64-unknown-linux-gnu | FileCheck %s
-
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-
-typedef int int4 __attribute((ext_vector_type(4)));
-typedef long long4 __attribute((ext_vector_type(4)));
-typedef float float4 __attribute((ext_vector_type(4)));
-typedef double double4 __attribute((ext_vector_type(4)));
-
-// CHECK: floatops
-kernel void floatops(global int4 *out, global float4 *fout) {
-  // CHECK: store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
-  out[0] = (float4)(1, 1, 1, 1) && 1.0f;
-  // CHECK: store <4 x i32> zeroinitializer
-  out[1] = (float4)(0, 0, 0, 0) && (float4)(0, 0, 0, 0);
-
-  // CHECK: store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
-  out[2] = (float4)(0, 0, 0, 0) || (float4)(1, 1, 1, 1);
-  // CHECK: store <4 x i32> zeroinitializer
-  out[3] = (float4)(0, 0, 0, 0) || 0.0f;
-
-  // CHECK: store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
-  out[4] = !(float4)(0, 0, 0, 0);
-  // CHECK: store <4 x i32> zeroinitializer
-  out[5] = !(float4)(1, 2, 3, 4);
-  // CHECK: store <4 x i32> <i32 -1, i32 0, i32 -1, i32 0>
-  out[6] = !(float4)(0, 1, 0, 1);
-  // CHECK: store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
-  fout[0] = (float4)(!0.0f);
-  // CHECK: store <4 x float> zeroinitializer
-  fout[1] = (float4)(!1.0f);
-}
-
-// CHECK: doubleops
-kernel void doubleops(global long4 *out, global double4 *dout) {
-  // CHECK: store <4 x i64> <i64 -1, i64 -1, i64 -1, i64 -1>
-  out[0] = (double4)(1, 1, 1, 1) && 1.0;
-  // CHECK: store <4 x i64> zeroinitializer
-  out[1] = (double4)(0, 0, 0, 0) && (double4)(0, 0, 0, 0);
-
-  // CHECK: store <4 x i64> <i64 -1, i64 -1, i64 -1, i64 -1>
-  out[2] = (double4)(0, 0, 0, 0) || (double4)(1, 1, 1, 1);
-  // CHECK: store <4 x i64> zeroinitializer
-  out[3] = (double4)(0, 0, 0, 0) || 0.0f;
-
-  // CHECK: store <4 x i64> <i64 -1, i64 -1, i64 -1, i64 -1>
-  out[4] = !(double4)(0, 0, 0, 0);
-  // CHECK: store <4 x i64> zeroinitializer
-  out[5] = !(double4)(1, 2, 3, 4);
-  // CHECK: store <4 x i64> <i64 -1, i64 0, i64 -1, i64 0>
-  out[6] = !(double4)(0, 1, 0, 1);
-  // CHECK: store <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>
-  dout[0] = (double4)(!0.0f);
-  // CHECK: store <4 x double> zeroinitializer
-  dout[1] = (double4)(!1.0f);
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/opencl_types.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/opencl_types.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/opencl_types.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -O0 | FileCheck %s
-
-constant sampler_t glb_smp = 7;
-// CHECK: global i32 7
-
-void fnc1(image1d_t img) {}
-// CHECK: @fnc1(%opencl.image1d_t*
-
-void fnc1arr(image1d_array_t img) {}
-// CHECK: @fnc1arr(%opencl.image1d_array_t*
-
-void fnc1buff(image1d_buffer_t img) {}
-// CHECK: @fnc1buff(%opencl.image1d_buffer_t*
-
-void fnc2(image2d_t img) {}
-// CHECK: @fnc2(%opencl.image2d_t*
-
-void fnc2arr(image2d_array_t img) {}
-// CHECK: @fnc2arr(%opencl.image2d_array_t*
-
-void fnc3(image3d_t img) {}
-// CHECK: @fnc3(%opencl.image3d_t*
-
-void fnc4smp(sampler_t s) {}
-// CHECK: define void @fnc4smp(i32
-
-kernel void foo(image1d_t img) {
-	sampler_t smp = 5;
-// CHECK: alloca i32
-	event_t evt;
-// CHECK: alloca %opencl.event_t*
-// CHECK: store i32 5,
-  fnc4smp(smp);
-// CHECK: call void @fnc4smp(i32
-  fnc4smp(glb_smp);
-// CHECK: call void @fnc4smp(i32
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ptx-calls.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ptx-calls.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ptx-calls.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -triple nvptx-unknown-unknown -emit-llvm -O0 -o - | FileCheck %s
-
-void device_function() {
-}
-// CHECK: define void @device_function()
-
-__kernel void kernel_function() {
-  device_function();
-}
-// CHECK: define void @kernel_function()
-// CHECK: call void @device_function()
-// CHECK: !{{[0-9]+}} = metadata !{void ()* @kernel_function, metadata !"kernel", i32 1}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ptx-kernels.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ptx-kernels.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/ptx-kernels.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -triple nvptx-unknown-unknown -emit-llvm -o - | FileCheck %s
-
-void device_function() {
-}
-// CHECK: define void @device_function()
-
-__kernel void kernel_function() {
-}
-// CHECK: define void @kernel_function()
-
-// CHECK: !{{[0-9]+}} = metadata !{void ()* @kernel_function, metadata !"kernel", i32 1}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/shifts.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/shifts.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/shifts.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -x cl -O1 -emit-llvm  %s -o - -triple x86_64-linux-gnu | FileCheck %s
-// OpenCL essentially reduces all shift amounts to the last word-size bits before evaluating.
-// Test this both for variables and constants evaluated in the front-end.
-
-
-//CHECK: @positiveShift32
-int positiveShift32(int a,int b) {
-  //CHECK: [[M32:%.+]] = and i32 %b, 31
-  //CHECK-NEXT: [[C32:%.+]] = shl i32 %a, [[M32]]
-  int c = a<<b;
-  int d = ((int)1)<<33;
-  //CHECK-NEXT: [[E32:%.+]] = add nsw i32 [[C32]], 2
-  int e = c + d;
-  //CHECK-NEXT: ret i32 [[E32]]
-  return e;
-}
-
-//CHECK: @positiveShift64
-long positiveShift64(long a,long b) {
-  //CHECK: [[M64:%.+]] = and i64 %b, 63
-  //CHECK-NEXT: [[C64:%.+]] = ashr i64 %a, [[M64]]
-  long c = a>>b;
-  long d = ((long)8)>>65;
-  //CHECK-NEXT: [[E64:%.+]] = add nsw i64 [[C64]], 4
-  long e = c + d;
-  //CHECK-NEXT: ret i64 [[E64]]
-  return e;
-}
-
-typedef __attribute__((ext_vector_type(4))) int int4;
-
-//CHECK: @vectorVectorTest
-int4 vectorVectorTest(int4 a,int4 b) {
-  //CHECK: [[VM:%.+]] = and <4 x i32> %b, <i32 31, i32 31, i32 31, i32 31>
-  //CHECK-NEXT: [[VC:%.+]] = shl <4 x i32> %a, [[VM]]
-  int4 c = a << b;
-  //CHECK-NEXT: [[VF:%.+]] = add <4 x i32> [[VC]], <i32 2, i32 4, i32 16, i32 8>
-  int4 d = {1, 1, 1, 1};
-  int4 e = {33, 34, -28, -29};
-  int4 f = c + (d << e);
-  //CHECK-NEXT: ret <4 x i32> [[VF]]
-  return f;
-}
-
-//CHECK: @vectorScalarTest
-int4 vectorScalarTest(int4 a,int b) {
-  //CHECK: [[SP0:%.+]] = insertelement <4 x i32> undef, i32 %b, i32 0
-  //CHECK: [[SP1:%.+]] = shufflevector <4 x i32> [[SP0]], <4 x i32> undef, <4 x i32> zeroinitializer
-  //CHECK: [[VSM:%.+]] = and <4 x i32> [[SP1]], <i32 31, i32 31, i32 31, i32 31>
-  //CHECK-NEXT: [[VSC:%.+]] = shl <4 x i32> %a, [[VSM]]
-  int4 c = a << b;
-  //CHECK-NEXT: [[VSF:%.+]] = add <4 x i32> [[VSC]], <i32 4, i32 4, i32 4, i32 4>
-  int4 d = {1, 1, 1, 1};
-  int4 f = c + (d << 34);
-  //CHECK-NEXT: ret <4 x i32> [[VSF]]
-  return f;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/single-precision-constant.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/single-precision-constant.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/single-precision-constant.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -cl-single-precision-constant -emit-llvm -o - | FileCheck %s
-
-float fn(float f) {
-  // CHECK: tail call float @llvm.fmuladd.f32(float %f, float 2.000000e+00, float 1.000000e+00)
-  return f*2. + 1.;
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/spir32_target.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/spir32_target.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/spir32_target.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -triple "spir-unknown-unknown" -emit-llvm -o - | FileCheck %s
-
-// CHECK: target triple = "spir-unknown-unknown"
-
-typedef struct {
-  char c;
-  void *v;
-  void *v2;
-} my_st;
-
-kernel void foo(global long *arg) {
-  int res1[sizeof(my_st)  == 12 ? 1 : -1];
-  int res2[sizeof(void *) ==  4 ? 1 : -1];
-  int res3[sizeof(arg)    ==  4 ? 1 : -1];
-
-  my_st *tmp = 0;
-
-  arg[0] = (long)(&tmp->v);
-//CHECK: store i64 4, i64 addrspace(1)*
-  arg[1] = (long)(&tmp->v2);
-//CHECK: store i64 8, i64 addrspace(1)*
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/spir64_target.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/spir64_target.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/spir64_target.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -triple "spir64-unknown-unknown" -emit-llvm -o - | FileCheck %s
-
-// CHECK: target triple = "spir64-unknown-unknown"
-
-typedef struct {
-  char c;
-  void *v;
-  void *v2;
-} my_st;
-
-kernel void foo(global long *arg) {
-  int res1[sizeof(my_st)  == 24 ? 1 : -1];
-  int res2[sizeof(void *) ==  8 ? 1 : -1];
-  int res3[sizeof(arg)    ==  8 ? 1 : -1];
-
-  my_st *tmp = 0;
-  arg[3] = (long)(&tmp->v);
-//CHECK: store i64 8, i64 addrspace(1)*
-  arg[4] = (long)(&tmp->v2);
-//CHECK: store i64 16, i64 addrspace(1)*
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vectorLoadStore.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vectorLoadStore.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vectorLoadStore.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O0 -o - | FileCheck %s
-
-typedef char char3 __attribute((ext_vector_type(3)));;
-
-// Check for optimized vec3 load/store which treats vec3 as vec4.
-void foo(char3 *P, char3 *Q) {
-  *P = *Q;
-  // CHECK: %{{.*}} = shufflevector <4 x i8> %{{.*}}, <4 x i8> undef, <3 x i32> <i32 0, i32 1, i32 2>
-}

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_literals_nested.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_literals_nested.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_literals_nested.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -O3 -o - | FileCheck %s
-
-typedef int int2 __attribute((ext_vector_type(2)));
-typedef int int4 __attribute((ext_vector_type(4)));
-
-__constant const int4 itest1 = (int4)(1, 2, ((int2)(3, 4)));
-// CHECK: constant <4 x i32> <i32 1, i32 2, i32 3, i32 4>
-__constant const int4 itest2 = (int4)(1, 2, ((int2)(3)));
-// CHECK: constant <4 x i32> <i32 1, i32 2, i32 3, i32 3>
-
-typedef float float2 __attribute((ext_vector_type(2)));
-typedef float float4 __attribute((ext_vector_type(4)));
-
-void ftest1(float4 *p) {
-  *p = (float4)(1.1f, 1.2f, ((float2)(1.3f, 1.4f)));
-// CHECK: store <4 x float> <float 0x3FF19999A0000000, float 0x3FF3333340000000, float 0x3FF4CCCCC0000000, float 0x3FF6666660000000>
-}
-
-float4 ftest2(float4 *p) {
-   *p =  (float4)(1.1f, 1.2f, ((float2)(1.3f)));
-// CHECK: store <4 x float> <float 0x3FF19999A0000000, float 0x3FF3333340000000, float 0x3FF4CCCCC0000000, float 0x3FF4CCCCC0000000>
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_literals_valid.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_literals_valid.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_literals_valid.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm %s -o %t
-
-typedef __attribute__(( ext_vector_type(2) ))  int int2;
-typedef __attribute__(( ext_vector_type(3) ))  int int3;
-typedef __attribute__(( ext_vector_type(4) ))  int int4;
-typedef __attribute__(( ext_vector_type(8) ))  int int8;
-typedef __attribute__(( ext_vector_type(4) ))  float float4;
-
-void vector_literals_valid() {
-  int4 a_1_1_1_1 = (int4)(1,2,3,4);
-  int4 a_2_1_1 = (int4)((int2)(1,2),3,4);
-  int4 a_1_2_1 = (int4)(1,(int2)(2,3),4);
-  int4 a_1_1_2 = (int4)(1,2,(int2)(3,4));
-  int4 a_2_2 = (int4)((int2)(1,2),(int2)(3,4));
-  int4 a_3_1 = (int4)((int3)(1,2,3),4);
-  int4 a_1_3 = (int4)(1,(int3)(2,3,4));
-  int4 a = (int4)(1);
-  int8 b = (int8)(1,2,a.xy,a);
-  float4 V2 = (float4) (1);
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_logops.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_logops.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/CodeGenOpenCL/vector_logops.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -O3 %s -emit-llvm -o - | FileCheck %s
-
-typedef int int2 __attribute((ext_vector_type(2)));
-
-int test1()
-{
-  int2 a = (int2)(1,0);
-  int2 b = (int2)(1,1);
-  return (a&&b).x + (a||b).y;
-  // CHECK: ret i32 -2
-}
-
-int test2()
-{
-  int2 a = (int2)(1,0);
-  return (!a).y;
-  // CHECK: ret i32 -1
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-// RUN: %clang_cc1 -ast-print %s
-// RUN: %clang_cc1 -ast-dump %s
-// RUN: %clang_cc1 -print-decl-contexts %s
-
-#include "c-language-features.inc"

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-// RUN: %clang_cc1 -ast-print %s
-// RUN: %clang_cc1 -ast-dump %s
-// RUN: %clang_cc1 -print-decl-contexts %s
-// RUN: %clang_cc1 -fdump-record-layouts %s
-
-#include "cxx-language-features.inc"

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/ast-printing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-exceptions %s
-// RUN: %clang_cc1 -ast-print -fobjc-exceptions %s
-// RUN: %clang_cc1 -ast-dump -fobjc-exceptions %s
-
-#include "objc-language-features.inc"

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/c-language-features.inc
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/c-language-features.inc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/c-language-features.inc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,198 +0,0 @@
-//-*- C -*-
-
-/* This is a 
-   multiline comment */
-
-// Intended to exercise all syntactic parts of the C language.
-
-int g0;
-int g1, g2;
-
-struct s0;
-
-struct s0 {
-  int x;
-};
-
-int g3 = 10;
-
-__asm("");
-
-typedef int td0;
-
-td0 g4;
-
-enum e0 {
-  ec0
-};
-
-static void f0(int x) {
-}
-
-inline void f0_0(int x) {
-  ;
-}
-
-extern void f0_1(int x) {
-}
-
-void f1(int, ...);
-
-// Statements.
-void f2() {
-  for (;;) {
-    break;
-    continue;
-  }
-
-  while (0) {
-  }
-
-  do {
-  } while (0);
-
-  void *label = &&theif;
-  goto *label;
-
-  goto theif;
-theif:
-  if (0) {
-    ;
-  } else if (0) {
-  } else {
-  }
-
-  switch(0) {
-  case 0:
-  case 1 ... 2:
-    break;
-  default:
-    break;
-  }
-
-  asm ("nop");
-
-  return;
-}
-
-// Expressions.
-
-#include <stdarg.h>
-
-typedef struct ipair {
-  int first, second;
-} ipair;
-
-void f4(int a0, int a1, int a2, va_list ap) {
-  int t0 = a0 ? a1 : a2;
-  float t1 = (float) a0;
-  ipair t2 = {1, 2};
-  ipair t2a = { .second = 2 };
-  int t3 = sizeof(ipair);
-  ipair t4;
-  t4 = (ipair) {1, 2};
-  extern int g(int);
-  int t5 = g(a0);
-  int t6 = t4.first;
-  int t7[10];
-  int t8 = t7[a0];
-  t8++;
-  const char *t9 = __FUNCTION__;
-  char t10 = 'x';
-  int t11 = __builtin_offsetof(ipair, first);
-  int t12 = __builtin_types_compatible_p(ipair, int);  
-  int t12_0 = __builtin_classify_type(t0);
-  int t12_1 = __builtin_classify_type(t1);
-  int t12_2 = __builtin_classify_type(t2);
-  // FIXME: Add _Complex and aggregate cases.
-  int t13 = va_arg(ap, int);
-  va_list t13_0;
-  va_copy(t13_0, ap);
-  int t14 = __extension__(t13);
-  int t15 = +t13;
-  unsigned t16 = t14 ^ t15;
-  int t17 = t14 % t15;
-  int t17_0 = t16 % t16;
-  float t18;
-  int t19 = t18 ? 0 : 1;
-  char *t20; ++t20; --t20;
-  float t21; ++t21; --t21;
-  double t22; ++t22; --t22;
-  long double t23; ++t23; --t23;
-  int t24 = !t19;
-  int t25 = __real t24;
-  int t26 = __imag t24;
-  const char *t27 = t9;
-  t27 += (unsigned char) 0xFF;
-  t27 += (signed char) 0xFF;
-  
-  struct { char f0[10]; } *t28;
-  int t29 = t28 - t28;
-  char *t30 = &t28->f0[1];
-
-  struct s1 { int f0; };
-  struct s1 t31_a, t31_b;
-  int t31_cond;
-  int t31 = (t31_cond ? t31_a : t31_b).f0;
-
-  _Complex float t32_a, t32_b;
-  int t32_cond;
-  int t32 = __real (t32_cond ? t32_a : t32_b);
-
-  struct { int x, y; } t33, *t34, t35[12], t36(int, float);
-  float t37, *t38, t39[9], t40(double);
-}
-
-// Extended vectors
-
-typedef __attribute__((ext_vector_type(2))) float float2;
-typedef __attribute__((ext_vector_type(4))) float float4;
-
-void f5() {
-  float4 t0 = (float4) { 0, 1, 2, 3 };
-  float4 t1 = t0;
-  t0.lo.even = t1.hi.x;
-
-  // irgen doesn't support this yet.
-#if 0
-  int t2_cond;
-  float2 t2 = (t2_cond ? t0 : t1).lo;
-#endif
-}
-
-void f6() {
-  const char *s0 = __func__;
-  const char *s1 = __FUNCTION__;
-  const char *s2 = __PRETTY_FUNCTION__;
-}
-
-// Arg mismatch with passed type.
-void f7(x) 
-     float x;
-{
-}
-
-void f8(x) 
-     short x;
-{
-}
-
-// Function which inputs an array
-void f9(int x[]) { }
-
-// Object literals.
-void f10() {
-  struct f10_s0 {
-    char iv0[10];
-  } x;
-
-  x = (struct f10_s0) { .iv0 = "name" };
-}
-
-// Nested structures.
-struct s11 {
-  struct s11_2 {
-    int f0;
-  } f0;
-  int f1;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/codegen-gnu.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/codegen-gnu.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/codegen-gnu.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-exceptions -fobjc-runtime=gcc -emit-llvm -o %t %s
-
-#include "objc-language-features.inc"

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/codegen-next.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/codegen-next.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/codegen-next.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -fobjc-exceptions -o %t %s
-// RUN: %clang_cc1 -g -emit-llvm -fobjc-exceptions -o %t %s
-
-#include "objc-language-features.inc"

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/codegen.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/codegen.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/codegen.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o %t %s
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm-bc -o %t %s
-// RUN: %clang_cc1 -triple i386-unknown-unknown -g -emit-llvm-bc -o %t %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm-bc -o %t %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -g -emit-llvm-bc -o %t %s
-
-#include "c-language-features.inc"

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/cxx-language-features.inc
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/cxx-language-features.inc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/cxx-language-features.inc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-//-*- C++ -*-
-
-// Intended to exercise all syntactic parts of the C++ language that
-// aren't part of C.
-
-namespace std {
-  namespace debug {
-  }
-}
-
-using namespace std::debug;
-using namespace std;
-
-namespace safestl = ::std::debug;
-
-class Base1 { 
-};
-
-class Base2 { };
-
-class Derived1 : Base1, virtual public Base2 { };
-
-/* Template classes, template functions */
-enum E1 { EC1 };
-template <E1 v> class C1 {};
-template <E1 v> C1<v> f1() { return C1<v>(); }
-void f2() { f1<EC1>(); }

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/html-diagnostics.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/html-diagnostics.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/html-diagnostics.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -analyze -analyzer-output=html -analyzer-checker=core -o %t %s
-// RUN: cat %t/*.html | FileCheck %s
-
-// CHECK: <h3>Annotated Source Code</h3>
-
-// Without tweaking expr, the expr would hit to the line below
-// emitted to the output as comment.
-// CHECK: {{[D]ereference of null pointer}}
-
-void f0(int x) {
-  int *p = &x;
-
-  if (x > 10) {
-    if (x == 22)
-      p = 0;
-  }
-
-  *p = 10;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/html-print.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/html-print.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/html-print.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -emit-html -o %t %s
-
-#include "c-language-features.inc"

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/objc-language-features.inc
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/objc-language-features.inc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/objc-language-features.inc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-//-*- ObjC -*-
-
- at protocol P0;
-
- at protocol P1 
--(void) fm0;
- at end
-
- at class B;
-
- at interface Root
- at property(readonly) int p0;
- at end
-
- at interface A : Root <P1> {
-  int iv0;
-  B *iv1;
-  B<P1> *iv2;
-}
-
- at property(readonly) int p0;
- at property(assign,nonatomic,readwrite) int p1;
- at property(copy) id p2;
- at property(retain) id p3;
- at property(assign, getter=getme, setter=setme:) id p4;
- at property(assign, readwrite) id p5;
- at end
-
- at implementation A
- at dynamic p0;
- at synthesize p1 = iv0;
-
-// Property type can differ from ivar type.
- at synthesize p5 = iv2;
-
-+(void) fm0 {
-  [super fm0];
-}
--(void) im0 {
-  const char *s0 = __func__;
-  const char *s1 = __FUNCTION__;
-  const char *s2 = __PRETTY_FUNCTION__;
-  [super im0];
-  int x = super.p0;
-}
--(void) im1: (int) x, ... {
-}
- at end
-
- at implementation C : A
- at end
-
- at interface A (Cat)
- at end
-
- at implementation A (Cat)
- at end
-
- at interface B
- at end
-
-int f0(id x) {
-  @synchronized(x) {
-  }
-
-  @try {
-    @throw x;
-
-  } @catch(A *e) {
-    @throw;
-
-    // @catch param doesn't require name.
-  } @catch(B *) {
-
-  } @finally {
-    ;
-  }
-
-  for (id y in x) {
-    break;
-  }
-}
-
-#ifndef __OBJC2__
-struct s0 {
-  @defs(A);
-};
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/targets.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/targets.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/targets.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -g -triple armv6-apple-darwin9 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple armv6-unknown-unknown -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple i686-apple-darwin9 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple i686-pc-linux-gnu -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple i686-unknown-dragonfly -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple i686-unknown-unknown -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple i686-unknown-win32 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple powerpc-apple-darwin9 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple powerpc-unknown-unknown -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple powerpc64-apple-darwin9 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple powerpc64-unknown-unknown -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple sparc-unknown-solaris -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple sparc-unknown-unknown -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple x86_64-apple-darwin9 -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple x86_64-pc-linux-gnu -emit-llvm -o %t %s
-// RUN: %clang_cc1 -g -triple x86_64-unknown-unknown -emit-llvm -o %t %s
-
-// <rdar://problem/7181838> clang 1.0 fails to compile Python 2.6
-// RUN: %clang -target x86_64-apple-darwin9 -### -S %s -mmacosx-version-min=10.4

Modified: trunk/contrib/llvm/tools/clang/test/Coverage/verbose.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Coverage/verbose.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Coverage/verbose.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -v %s

Modified: trunk/contrib/llvm/tools/clang/test/Driver/B-opt.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/B-opt.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/B-opt.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// Check -B driver option.
-//
-// RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
-// RUN:     -B %S/Inputs/B_opt_tree/dir1 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-B-OPT-TRIPLE %s
-// CHECK-B-OPT-TRIPLE: "{{.*}}/Inputs/B_opt_tree/dir1/i386-unknown-linux-ld"
-//
-// RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
-// RUN:     -B %S/Inputs/B_opt_tree/dir2 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-B-OPT-DIR %s
-// CHECK-B-OPT-DIR: "{{.*}}/Inputs/B_opt_tree/dir2/ld"
-//
-// RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
-// RUN:     -B %S/Inputs/B_opt_tree/dir3/prefix- 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-B-OPT-PREFIX %s
-// CHECK-B-OPT-PREFIX: "{{.*}}/Inputs/B_opt_tree/dir3/prefix-ld"
-//
-// RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
-// RUN:     -B %S/Inputs/B_opt_tree/dir3/prefix- \
-// RUN:     -B %S/Inputs/B_opt_tree/dir2 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-B-OPT-MULT %s
-// CHECK-B-OPT-MULT: "{{.*}}/Inputs/B_opt_tree/dir3/prefix-ld"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-as	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-# placeholder for testing purposes
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-gcc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-# placeholder for testing purposes
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-ld
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-ld	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/bin/hexagon-ld	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-# placeholder for testing purposes
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ios
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ios	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/c++/4.4.0/ios	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// placeholder for testing purposes

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/hexagon/include/stdio.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// placeholder for testing purposes

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include/stddef.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// placeholder for testing purposes

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/gnu/lib/gcc/hexagon/4.4.0/include-fixed/limits.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// placeholder for testing purposes

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/hexagon_tree/qc/bin/placeholder	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// placeholder for testing purposes

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = []

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/prefixed_tools_tree/x86_64--linux-as
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/prefixed_tools_tree/x86_64--linux-as	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/prefixed_tools_tree/x86_64--linux-as	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#!/bin/sh
-# This file must be executable to be picked up by GetProgramPath

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Inputs/prefixed_tools_tree/x86_64--linux-ld
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Inputs/prefixed_tools_tree/x86_64--linux-ld	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Inputs/prefixed_tools_tree/x86_64--linux-ld	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#!/bin/sh
-# This file must be executable to be picked up by GetProgramPath

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Ofast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Ofast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Ofast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang -Ofast -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST %s
-// RUN: %clang -O2 -Ofast -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST %s
-// RUN: %clang -fno-fast-math -Ofast -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST %s
-// RUN: %clang -fno-strict-aliasing -Ofast -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST %s
-// RUN: %clang -fno-vectorize -Ofast -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST %s
-// RUN: %clang -Ofast -O2 -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST-O2 %s
-// RUN: %clang -Ofast -fno-fast-math -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST-NO-FAST-MATH %s
-// RUN: %clang -Ofast -fno-strict-aliasing -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST-NO-STRICT-ALIASING %s
-// RUN: %clang -Ofast -fno-vectorize -### %s 2>&1 | FileCheck -check-prefix=CHECK-OFAST-NO-VECTORIZE %s
-
-// CHECK-OFAST: -cc1
-// CHECK-OFAST-NOT: -relaxed-aliasing
-// CHECK-OFAST: -ffast-math
-// CHECK-OFAST: -Ofast
-// CHECK-OFAST: -vectorize-loops
-
-// CHECK-OFAST-O2: -cc1
-// CHECK-OFAST-O2-NOT: -relaxed-aliasing
-// CHECK-OFAST-O2-NOT: -ffast-math
-// CHECK-OFAST-O2-NOT: -Ofast
-// CHECK-OFAST-O2: -vectorize-loops
-
-// CHECK-OFAST-NO-FAST-MATH: -cc1
-// CHECK-OFAST-NO-FAST-MATH-NOT: -relaxed-aliasing
-// CHECK-OFAST-NO-FAST-MATH-NOT: -ffast-math
-// CHECK-OFAST-NO-FAST-MATH: -Ofast
-// CHECK-OFAST-NO-FAST-MATH: -vectorize-loops
-
-// CHECK-OFAST-NO-STRICT-ALIASING: -cc1
-// CHECK-OFAST-NO-STRICT-ALIASING: -relaxed-aliasing
-// CHECK-OFAST-NO-STRICT-ALIASING: -ffast-math
-// CHECK-OFAST-NO-STRICT-ALIASING: -Ofast
-// CHECK-OFAST-NO-STRICT-ALIASING: -vectorize-loops
-
-// CHECK-OFAST-NO-VECTORIZE: -cc1
-// CHECK-OFAST-NO-VECTORIZE-NOT: -relaxed-aliasing
-// CHECK-OFAST-NO-VECTORIZE: -ffast-math
-// CHECK-OFAST-NO-VECTORIZE: -Ofast
-// CHECK-OFAST-NO-VECTORIZE-NOT: -vectorize-loops

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Wp-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Wp-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Wp-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// Check that we extract -MD from '-Wp,-MD,FOO', which is used by a number of
-// major projects (e.g., FireFox and the Linux Kernel).
-
-// RUN: %clang --target i386-pc-linux-gnu -### \
-// RUN:   -Wp,-MD,FOO.d -fsyntax-only %s 2> %t
-// RUN: FileCheck < %t %s
-//
-// CHECK: "-cc1"
-// CHECK-NOT: -MD
-// CHECK: "-dependency-file" "FOO.d"
-// CHECK: "-MT"
-//
-// PR4062
-
-// RUN: %clang --target i386-pc-linux-gnu -### \
-// RUN:   -Wp,-MMD -fsyntax-only %s 2> %t
-// RUN: FileCheck -check-prefix MMD < %t %s
-
-// MMD: "-cc1"
-// MMD-NOT: -MMD
-// MMD: "-dependency-file" "Wp-args.d"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Xarch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Xarch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Xarch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang -target i386-apple-darwin9 -m32 -Xarch_i386 -O2 %s -S -### 2> %t.log
-// RUN: grep ' "-O2" ' %t.log | count 1
-// RUN: %clang -target i386-apple-darwin9 -m64 -Xarch_i386 -O2 %s -S -### 2> %t.log
-// RUN: grep ' "-O2" ' %t.log | count 0
-// RUN: grep "argument unused during compilation: '-Xarch_i386 -O2'" %t.log
-// RUN: not %clang -target i386-apple-darwin9 -m32 -Xarch_i386 -o -Xarch_i386 -S %s -S -Xarch_i386 -o 2> %t.log
-// RUN: grep "error: invalid Xarch argument: '-Xarch_i386 -o'" %t.log | count 2
-// RUN: grep "error: invalid Xarch argument: '-Xarch_i386 -S'" %t.log
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/Xlinker-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/Xlinker-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/Xlinker-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// Check that we extract --no-demangle from '-Xlinker' and '-Wl,', since that
-// was a collect2 argument.
-
-// RUN: %clang -target i386-apple-darwin9 -### \
-// RUN:   -Xlinker one -Xlinker --no-demangle \
-// RUN:   -Wl,two,--no-demangle,three -Xlinker four %s 2> %t
-// RUN: FileCheck -check-prefix=DARWIN < %t %s
-//
-// RUN: %clang -target x86_64-pc-linux-gnu -### \
-// RUN:   -Xlinker one -Xlinker --no-demangle \
-// RUN:   -Wl,two,--no-demangle,three -Xlinker four %s 2> %t
-// RUN: FileCheck -check-prefix=LINUX < %t %s
-//
-// DARWIN-NOT: --no-demangle
-// DARWIN: "one" "two" "three" "four"
-// LINUX: "--no-demangle" "one" "two" "three" "four"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/aarch64-features.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/aarch64-features.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/aarch64-features.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -target aarch64-none-linux-gnu -### %s -fsyntax-only 2>&1 | FileCheck %s
-
-// The AArch64 PCS states that chars should be unsigned.
-// CHECK: fno-signed-char
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/analyze.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/analyze.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/analyze.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// Verify that the analyzer gets the same flags as normal compilation
-// (at least for a few key ones).
-
-// RUN: env MACOSX_DEPLOYMENT_TARGET=10.5 %clang -target i386-apple-darwin9  -### --analyze -o /dev/null %s -msse 2> %t.log
-// RUN: FileCheck --input-file=%t.log %s
-
-// CHECK: "-analyze"
-// CHECK: "-target-feature" "+sse"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/android-standalone.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/android-standalone.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/android-standalone.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// Test header and library paths when Clang is used with Android standalone
-// toolchain.
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-androideabi \
-// RUN:     -B%S/Inputs/basic_android_tree \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck  %s
-// CHECK: {{.*}}clang{{.*}}" "-cc1"
-// CHECK: "-internal-isystem" "{{.*}}/arm-linux-androideabi/include/c++/4.4.3"
-// CHECK: "-internal-isystem" "{{.*}}/arm-linux-androideabi/include/c++/4.4.3/arm-linux-androideabi"
-// CHECK: "-internal-externc-isystem" "{{.*}}/sysroot/include"
-// CHECK: "-internal-externc-isystem" "{{.*}}/sysroot/usr/include"
-// CHECK: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK: "-L{{.*}}/lib/gcc/arm-linux-androideabi/4.4.3"
-// CHECK: "-L{{.*}}/lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/lib"
-// CHECK: "-L{{.*}}/sysroot/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-android \
-// RUN:     -mips32 \
-// RUN:     -B%S/Inputs/basic_android_tree \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS %s
-// CHECK-MIPS: {{.*}}clang{{.*}}" "-cc1"
-// CHECK-MIPS: "-internal-isystem" "{{.*}}/mipsel-linux-android/include/c++/4.4.3"
-// CHECK-MIPS: "-internal-isystem" "{{.*}}/mipsel-linux-android/include/c++/4.4.3/mipsel-linux-android"
-// CHECK-MIPS: "-internal-externc-isystem" "{{.*}}/sysroot/include"
-// CHECK-MIPS: "-internal-externc-isystem" "{{.*}}/sysroot/usr/include"
-// CHECK-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-MIPS: "-L{{.*}}/lib/gcc/mipsel-linux-android/4.4.3"
-// CHECK-MIPS: "-L{{.*}}/lib/gcc/mipsel-linux-android/4.4.3/../../../../mipsel-linux-android/lib"
-// CHECK-MIPS: "-L{{.*}}/sysroot/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-android \
-// RUN:     -march=mips32 -mips32r2 \
-// RUN:     -B%S/Inputs/basic_android_tree \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPSR2 %s
-// CHECK-MIPSR2: {{.*}}clang{{.*}}" "-cc1"
-// CHECK-MIPSR2: "-internal-isystem" "{{.*}}/mipsel-linux-android/include/c++/4.4.3"
-// CHECK-MIPSR2: "-internal-isystem" "{{.*}}/mipsel-linux-android/include/c++/4.4.3/mipsel-linux-android"
-// CHECK-MIPSR2: "-internal-externc-isystem" "{{.*}}/sysroot/include"
-// CHECK-MIPSR2: "-internal-externc-isystem" "{{.*}}/sysroot/usr/include"
-// CHECK-MIPSR2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-MIPSR2: "-L{{.*}}/lib/gcc/mipsel-linux-android/4.4.3/mips-r2"
-// CHECK-MIPSR2: "-L{{.*}}/lib/gcc/mipsel-linux-android/4.4.3/../../../../mipsel-linux-android/lib"
-// CHECK-MIPSR2: "-L{{.*}}/sysroot/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-android \
-// RUN:     -mips32 -march=mips32r2 \
-// RUN:     -B%S/Inputs/basic_android_tree \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPSR2-A %s
-// CHECK-MIPSR2-A: {{.*}}clang{{.*}}" "-cc1"
-// CHECK-MIPSR2-A: "-internal-isystem" "{{.*}}/mipsel-linux-android/include/c++/4.4.3"
-// CHECK-MIPSR2-A: "-internal-isystem" "{{.*}}/mipsel-linux-android/include/c++/4.4.3/mipsel-linux-android"
-// CHECK-MIPSR2-A: "-internal-externc-isystem" "{{.*}}/sysroot/include"
-// CHECK-MIPSR2-A: "-internal-externc-isystem" "{{.*}}/sysroot/usr/include"
-// CHECK-MIPSR2-A: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-MIPSR2-A: "-L{{.*}}/lib/gcc/mipsel-linux-android/4.4.3/mips-r2"
-// CHECK-MIPSR2-A: "-L{{.*}}/lib/gcc/mipsel-linux-android/4.4.3/../../../../mipsel-linux-android/lib"
-// CHECK-MIPSR2-A: "-L{{.*}}/sysroot/usr/lib"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/apple-kext-mkernel.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/apple-kext-mkernel.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/apple-kext-mkernel.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -mkernel -### -fsyntax-only %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-X86 < %t %s
-
-// CHECK-X86: "-disable-red-zone"
-// CHECK-X86: "-fno-builtin"
-// CHECK-X86: "-fno-rtti"
-// CHECK-X86: "-fno-common"
-
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -arch armv7 -mkernel -mstrict-align -### -fsyntax-only %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-ARM < %t %s
-
-// CHECK-ARM: "-backend-option" "-arm-long-calls"
-// CHECK-ARM: "-backend-option" "-arm-strict-align"
-// CHECK-ARM-NOT: "-backend-option" "-arm-strict-align"
-// CHECK-ARM: "-fno-builtin"
-// CHECK-ARM: "-fno-rtti"
-// CHECK-ARM: "-fno-common"
-
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -Werror -fno-builtin -fno-exceptions -fno-common -fno-rtti \
-// RUN:   -mkernel -fsyntax-only %s

Modified: trunk/contrib/llvm/tools/clang/test/Driver/arc-exceptions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/arc-exceptions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/arc-exceptions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -### -x objective-c -arch x86_64 -fobjc-arc -fsyntax-only %s 2> %t.log
-// RUN: grep objective-c %t.log
-// RUN: not grep "fobjc-arc-exceptions" %t.log
-// RUN: %clang -### -x objective-c++ -arch x86_64 -fobjc-arc -fsyntax-only %s 2> %t.log
-// RUN: grep "fobjc-arc-exceptions" %t.log

Modified: trunk/contrib/llvm/tools/clang/test/Driver/arc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/arc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/arc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang -ObjC -target i386-apple-darwin10 -m32 -fobjc-arc %s -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -x objective-c -target i386-apple-darwin10 -m32 -fobjc-arc %s -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -x objective-c++ -target i386-apple-darwin10 -m32 -fobjc-arc %s -fsyntax-only 2>&1 | FileCheck %s
-// RUN: %clang -x c -target i386-apple-darwin10 -m32 -fobjc-arc %s -fsyntax-only 2>&1 | FileCheck -check-prefix NOTOBJC %s
-// RUN: %clang -x c++ -target i386-apple-darwin10 -m32 -fobjc-arc %s -fsyntax-only 2>&1 | FileCheck -check-prefix NOTOBJC %s
-// RUN: %clang -x objective-c -target x86_64-apple-darwin11 -mmacosx-version-min=10.5 -fobjc-arc %s -fsyntax-only 2>&1 | FileCheck -check-prefix UNSUPPORTED %s
-
-// Just to test clang is working.
-# foo
-
-// CHECK: error: -fobjc-arc is not supported on platforms using the legacy runtime
-// CHECK-NOT: invalid preprocessing directive
-
-// NOTOBJC-NOT: error: -fobjc-arc is not supported on platforms using the legacy runtime
-// NOTOBJC: invalid preprocessing directive
-
-// UNSUPPORTED: error: -fobjc-arc is not supported on versions of OS X prior to 10.6

Modified: trunk/contrib/llvm/tools/clang/test/Driver/arch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/arch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/arch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang -target armv7a-unknown-linux-gnueabi -S -emit-llvm %s -o - | FileCheck %s
-
-// CHECK: target triple = "armv7-unknown-linux-gnueabi"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/arclite-link.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/arclite-link.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/arclite-link.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: touch %t.o
-// RUN: %clang -### -target x86_64-apple-darwin10 -fobjc-link-runtime -lfoo -mmacosx-version-min=10.7 %t.o 2>&1 | FileCheck -check-prefix=CHECK-ARCLITE-OSX %s
-// RUN: %clang -### -target x86_64-apple-darwin10 -fobjc-link-runtime -mmacosx-version-min=10.8 %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOARCLITE %s
-// RUN: %clang -### -target i386-apple-darwin10 -fobjc-link-runtime -mmacosx-version-min=10.7 %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOARCLITE %s
-// RUN: %clang -### -target x86_64-apple-darwin10 -fobjc-link-runtime -nostdlib %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOSTDLIB %s
-
-// CHECK-ARCLITE-OSX: -lfoo
-// CHECK-ARCLITE-OSX: libarclite_macosx.a
-// CHECK-ARCLITE-OSX: -framework
-// CHECK-ARCLITE-OSX: Foundation
-// CHECK-ARCLITE-OSX: -lobjc
-// CHECK-NOARCLITE-NOT: libarclite
-// CHECK-NOSTDLIB-NOT: -lobjc
-
-// RUN: %clang -### -target x86_64-apple-darwin10 -fobjc-link-runtime -fobjc-arc -mmacosx-version-min=10.7 %s 2>&1 | FileCheck -check-prefix=CHECK-UNUSED %s
-
-// CHECK-UNUSED-NOT: warning: argument unused during compilation: '-fobjc-link-runtime'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/arm-cortex-cpus.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/arm-cortex-cpus.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/arm-cortex-cpus.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -target armv6m-apple-darwin -arch armv6m -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-V6M %s
-// CHECK-V6M: "-cc1"{{.*}} "-triple" "thumbv6m-{{.*}} "-target-cpu" "cortex-m0"
-
-// RUN: %clang -target armv7m-apple-darwin -arch armv7m -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-V7M %s
-// CHECK-V7M: "-cc1"{{.*}} "-triple" "thumbv7m-{{.*}} "-target-cpu" "cortex-m3"
-
-// RUN: %clang -target armv7em-apple-darwin -arch armv7em -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-V7EM %s
-// CHECK-V7EM: "-cc1"{{.*}} "-triple" "thumbv7em-{{.*}} "-target-cpu" "cortex-m4"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/arm-darwin-builtin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/arm-darwin-builtin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/arm-darwin-builtin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// FIXME: Disable pending PR4941.
-// RUX: clang -target x86_64-apple-darwin9 -arch arm -### -fsyntax-only %s 2> %t &&
-// RUX: grep -- "-fno-builtin-strcat" %t &&
-// RUX: grep -- "-fno-builtin-strcpy" %t &&
-
-// FIXME: Disable pending PR4941.
-// RUX: clang -target x86_64-apple-darwin9 -arch arm -### -fsyntax-only %s -fbuiltin-strcat -fbuiltin-strcpy 2> %t &&
-// RUX: not grep -- "-fno-builtin-strcat" %t &&
-// RUX: not grep -- "-fno-builtin-strcpy" %t &&
-
-// RUN: %clang -target x86_64-apple-darwin9 -arch arm -### -fsyntax-only %s -fbuiltin-strcat -fbuiltin-strcpy 2> %t
-// RUN: not grep -- "-fno-builtin-strcat" %t
-// RUN: not grep -- "-fno-builtin-strcpy" %t
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/arm-mfpmath.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/arm-mfpmath.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/arm-mfpmath.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// Test different values of -mfpmath.
-
-// RUN: %clang -target arm-apple-darwin10 -mfpmath=vfp %s -### -c -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP %s
-// CHECK-VFP: "-target-feature" "-neonfp"
-
-// RUN: %clang -target arm-apple-darwin10 -mfpmath=vfp2 %s -### -c -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP2 %s
-// CHECK-VFP2: "-target-feature" "-neonfp"
-
-// RUN: %clang -target arm-apple-darwin10 -mfpmath=vfp3 %s -### -c -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP3 %s
-// CHECK-VFP3: "-target-feature" "-neonfp"
-
-// RUN: %clang -target arm-apple-darwin10 -mfpmath=vfp4 %s -### -c -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP4 %s
-// CHECK-VFP4: "-target-feature" "-neonfp"
-
-// RUN: %clang -target arm-apple-darwin10 -mfpmath=neon %s -### -c -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NEON %s
-// CHECK-NEON: "-target-feature" "+neonfp"
-
-// RUN: %clang -target arm-apple-darwin10 -mfpmath=foo %s -### -c -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-ERROR %s
-// CHECK-ERROR: clang compiler does not support '-mfpmath=foo'
-
-// RUN: %clang -target arm-apple-darwin10 -mcpu=arm1136j-s -mfpmath=neon %s -### -c -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-MCPU-ERROR %s
-// CHECK-MCPU-ERROR: error: invalid feature '-mfpmath=neon' for CPU 'arm1136j-s'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/arm-mfpu.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/arm-mfpu.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/arm-mfpu.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// Test that different values of -mfpu pick correct ARM FPU target-feature(s).
-
-// RUN: %clang -target arm-linux-eabi %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-DEFAULT %s
-// CHECK-DEFAULT-NOT: "-target-feature" "+vfp2"
-// CHECK-DEFAULT-NOT: "-target-feature" "+vfp3"
-// CHECK-DEFAULT-NOT: "-target-feature" "+d16"
-// CHECK-DEFAULT-NOT: "-target-feature" "+neon"
-
-// RUN: %clang -target arm-linux-eabi -mfpu=fpa %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-FPA %s
-// RUN: %clang -target arm-linux-eabi -mfpu=fpe2 %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-FPA %s
-// RUN: %clang -target arm-linux-eabi -mfpu=fpe3 %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-FPA %s
-// RUN: %clang -target arm-linux-eabi -mfpu=maverick %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-FPA %s
-// CHECK-FPA: "-target-feature" "-vfp2"
-// CHECK-FPA: "-target-feature" "-vfp3"
-// CHECK-FPA: "-target-feature" "-neon"
-
-// RUN: %clang -target arm-linux-eabi -mfpu=vfp3-d16 %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP3-D16 %s
-// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16 %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP3-D16 %s
-// CHECK-VFP3-D16: "-target-feature" "+vfp3"
-// CHECK-VFP3-D16: "-target-feature" "+d16"
-// CHECK-VFP3-D16: "-target-feature" "-neon"
-
-// RUN: %clang -target arm-linux-eabi -mfpu=vfp %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP %s
-// CHECK-VFP: "-target-feature" "+vfp2"
-// CHECK-VFP: "-target-feature" "-neon"
-
-// RUN: %clang -target arm-linux-eabi -mfpu=vfp3 %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP3 %s
-// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3 %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-VFP3 %s
-// CHECK-VFP3: "-target-feature" "+vfp3"
-// CHECK-VFP3: "-target-feature" "-neon"
-
-// RUN: %clang -target arm-linux-eabi -mfpu=neon %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NEON %s
-// CHECK-NEON: "-target-feature" "+neon"
-
-// RUN: %clang -target arm-linux-eabi -msoft-float %s -### -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-SOFT-FLOAT %s
-// CHECK-SOFT-FLOAT: "-target-feature" "-neon"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/asan.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/asan.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/asan.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang     -target i386-unknown-unknown -faddress-sanitizer %s -S -emit-llvm -o - | FileCheck %s
-// RUN: %clang -O1 -target i386-unknown-unknown -faddress-sanitizer %s -S -emit-llvm -o - | FileCheck %s
-// RUN: %clang -O2 -target i386-unknown-unknown -faddress-sanitizer %s -S -emit-llvm -o - | FileCheck %s
-// RUN: %clang -O3 -target i386-unknown-unknown -faddress-sanitizer %s -S -emit-llvm -o - | FileCheck %s
-// RUN: %clang     -target i386-unknown-unknown -fsanitize=address  %s -S -emit-llvm -o - | FileCheck %s
-// Verify that -faddress-sanitizer invokes asan instrumentation.
-
-int foo(int *a) { return *a; }
-// CHECK: __asan_init

Modified: trunk/contrib/llvm/tools/clang/test/Driver/ast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/ast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/ast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -ccc-print-phases -emit-ast %s 2> %t
-// RUN: echo 'END' >> %t
-// RUN: FileCheck -check-prefix EMIT-AST-PHASES -input-file %t %s
-
-// EMIT-AST-PHASES: 0: input,
-// EMIT-AST-PHASES: , c
-// EMIT-AST-PHASES: 1: preprocessor, {0}, cpp-output
-// EMIT-AST-PHASES: 2: compiler, {1}, ast
-// EMIT-AST-PHASES-NOT: 3:
-// EMIT-AST-PHASES: END
-
-// RUN: touch %t.ast
-// RUN: %clang -target i386-unknown-unknown -ccc-print-phases -c %t.ast 2> %t
-// RUN: echo 'END' >> %t
-// RUN: FileCheck -check-prefix COMPILE-AST-PHASES -input-file %t %s
-
-// COMPILE-AST-PHASES: 0: input,
-// COMPILE-AST-PHASES: , ast
-// COMPILE-AST-PHASES: 1: compiler, {0}, assembler
-// COMPILE-AST-PHASES: 2: assembler, {1}, object
-// COMPILE-AST-PHASES-NOT: 3:
-// COMPILE-AST-PHASES: END
-
-// FIXME: There is a problem with compiling AST's in that the input language is
-// not available for use by other tools (for example, to automatically add
-// -lstdc++). We may need -x [objective-]c++-ast and all that goodness. :(

Modified: trunk/contrib/llvm/tools/clang/test/Driver/at_file.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/at_file.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/at_file.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang -E %s @%s.args -o %t.log
-// RUN: FileCheck --input-file=%t.log %s
-
-// CHECK: bar1
-// CHECK-NEXT: bar2 zed2
-// CHECK-NEXT: bar3 zed3
-// CHECK-NEXT: bar4 zed4
-// CHECK-NEXT: bar5 zed5
-// CHECK-NEXT: 'bar6 zed6'
-// CHECK-NEXT: "bar7 zed7"
-// CHECK-NEXT: foo8bar8zed8
-// CHECK-NEXT: foo9'bar9'zed9
-// CHECK-NEXT: foo10"bar10"zed10
-// CHECK: bar
-// CHECK: zed12
-
-foo1
-foo2
-foo3
-foo4
-foo5
-foo6
-foo7
-foo8
-foo9
-foo10
-#ifdef foo11
-bar
-#endif
-foo12

Modified: trunk/contrib/llvm/tools/clang/test/Driver/at_file.c.args
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/at_file.c.args	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/at_file.c.args	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
--Dfoo1=bar1 -Dfoo2="bar2 zed2"
--Dfoo3='bar3 zed3'
-"-Dfoo4=bar4 zed4"
-'-Dfoo5=bar5 zed5'
--Dfoo6="'bar6 zed6'"
--Dfoo7='"bar7 zed7"'
--Dfoo8=foo8"bar8"zed8
--Dfoo9=foo9\'bar9\'zed9
--Dfoo10=foo10\"bar10\"zed10
--D foo11
--Dfoo12=zed12\

Modified: trunk/contrib/llvm/tools/clang/test/Driver/autolink_integrated_as.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/autolink_integrated_as.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/autolink_integrated_as.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin -fsyntax-only %s -no-integrated-as -### 2>&1 | FileCheck %s
-
-// Test that the autolinking feature is disabled with *not* using the
-// integrated assembler.
-
-// CHECK: -fno-autolink

Modified: trunk/contrib/llvm/tools/clang/test/Driver/bindings.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/bindings.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/bindings.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// Basic binding.
-// RUN: %clang -target i386-unknown-unknown -ccc-print-bindings %s 2>&1 | FileCheck %s --check-prefix=CHECK01
-// CHECK01: "clang", inputs: ["{{.*}}bindings.c"], output: "{{.*}}.s"
-// CHECK01: "gcc::Assemble", inputs: ["{{.*}}.s"], output: "{{.*}}.o"
-// CHECK01: "gcc::Link", inputs: ["{{.*}}.o"], output: "a.out"
-
-// Clang control options
-
-// RUN: %clang -target i386-unknown-unknown -ccc-print-bindings -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix=CHECK05
-// CHECK05: "clang", inputs: ["{{.*}}bindings.c"], output: (nothing)
-
-// RUN: %clang -target i386-unknown-unknown -ccc-print-bindings -fsyntax-only -x c++ %s 2>&1 | FileCheck %s --check-prefix=CHECK08
-// CHECK08: "clang", inputs: ["{{.*}}bindings.c"], output: (nothing)
-
-// RUN: %clang -target i386-apple-darwin9 -ccc-print-bindings %s -S -arch ppc 2>&1 | FileCheck %s --check-prefix=CHECK11
-// CHECK11: "clang", inputs: ["{{.*}}bindings.c"], output: "bindings.s"
-
-// RUN: %clang -target powerpc-unknown-unknown -ccc-print-bindings %s -S 2>&1 | FileCheck %s --check-prefix=CHECK12
-// CHECK12: "clang", inputs: ["{{.*}}bindings.c"], output: "bindings.s"
-
-// Darwin bindings
-// RUN: %clang -target i386-apple-darwin9 -no-integrated-as -ccc-print-bindings %s 2>&1 | FileCheck %s --check-prefix=CHECK14
-// CHECK14: "clang", inputs: ["{{.*}}bindings.c"], output: "{{.*}}.s"
-// CHECK14: "darwin::Assemble", inputs: ["{{.*}}.s"], output: "{{.*}}.o"
-// CHECK14: "darwin::Link", inputs: ["{{.*}}.o"], output: "a.out"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/bitrig.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/bitrig.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/bitrig.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang -no-canonical-prefixes -target amd64-pc-bitrig %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-C %s
-// CHECK-LD-C: clang{{.*}}" "-cc1" "-triple" "amd64-pc-bitrig"
-// CHECK-LD-C: ld{{.*}}" {{.*}} "-lc" "-lclang_rt.amd64"
-
-// RUN: %clangxx -no-canonical-prefixes -target amd64-pc-bitrig %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-CXX %s
-// CHECK-LD-CXX: clang{{.*}}" "-cc1" "-triple" "amd64-pc-bitrig" 
-// CHECK-LD-CXX: ld{{.*}}" {{.*}} "-lstdc++" "-lm" "-lc" "-lclang_rt.amd64"
-
-// RUN: %clangxx -stdlib=libc++ -no-canonical-prefixes -target amd64-pc-bitrig %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-CXX-STDLIB %s
-// CHECK-LD-CXX-STDLIB: clang{{.*}}" "-cc1" "-triple" "amd64-pc-bitrig"
-// CHECK-LD-CXX-STDLIB: ld{{.*}}" {{.*}} "-lc++" "-lcxxrt" "-lgcc" "-lm" "-lc" "-lclang_rt.amd64"
-
-// RUN: %clang -no-canonical-prefixes -target amd64-pc-bitrig -pthread %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-PTHREAD %s
-// CHECK-PTHREAD: clang{{.*}}" "-cc1" "-triple" "amd64-pc-bitrig"
-// CHECK-PTHREAD: ld{{.*}}" {{.*}} "{{.*}}crtbegin.o" {{.*}}.o" "-lpthread" "-lc" "-lclang_rt.amd64" "{{.*}}crtend.o"
-
-// RUN: %clang -no-canonical-prefixes -target amd64-pc-bitrig -pg -pthread %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-PG-PTHREAD %s
-// CHECK-PG-PTHREAD: clang{{.*}}" "-cc1" "-triple" "amd64-pc-bitrig"
-// CHECK-PG-PTHREAD: ld{{.*}}" {{.*}} "{{.*}}crtbegin.o" {{.*}}.o" "-lpthread_p" "-lc_p" "-lclang_rt.amd64" "{{.*}}crtend.o"
-
-// RUN: %clang -no-canonical-prefixes -target amd64-pc-bitrig -shared -pg -pthread %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-PG-PTHREAD-SHARED %s
-// CHECK-PG-PTHREAD-SHARED: clang{{.*}}" "-cc1" "-triple" "amd64-pc-bitrig"
-// CHECK-PG-PTHREAD-SHARED: ld{{.*}}" {{.*}} "{{.*}}crtbeginS.o" {{.*}}.o" "-lpthread" "-lclang_rt.amd64" "{{.*}}crtendS.o"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/bounds-checking.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/bounds-checking.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/bounds-checking.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang -fsanitize=bounds -### -fsyntax-only %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK < %t %s
-// CHECK: "-fsanitize=bounds"
-
-// RUN: %clang -fbounds-checking -### -fsyntax-only %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-OLD < %t %s
-// CHECK-OLD: "-fsanitize=bounds"
-
-// RUN: %clang -fbounds-checking=3 -### -fsyntax-only %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-OLD2 < %t %s
-// CHECK-OLD2: "-fsanitize=bounds"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/cc-log-diagnostics.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/cc-log-diagnostics.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/cc-log-diagnostics.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: rm -f %t.log
-// RUN: env RC_DEBUG_OPTIONS=1 \
-// RUN:     CC_LOG_DIAGNOSTICS=1 CC_LOG_DIAGNOSTICS_FILE=%t.log \
-// RUN: %clang -Wfoobar -no-canonical-prefixes -target x86_64-apple-darwin10 -fsyntax-only %s
-// RUN: FileCheck %s < %t.log
-
-int f0() {}
-
-// CHECK: <dict>
-// CHECK:   <key>main-file</key>
-// CHECK:   <string>{{.*}}cc-log-diagnostics.c</string>
-// CHECK:   <key>dwarf-debug-flags</key>
-// CHECK:   <string>{{.*}}clang{{.*}}-fsyntax-only{{.*}}</string>
-// CHECK:   <key>diagnostics</key>
-// CHECK:   <array>
-// CHECK:     <dict>
-// CHECK:       <key>level</key>
-// CHECK:       <string>warning</string>
-// CHECK:       <key>message</key>
-// CHECK:       <string>unknown warning option '-Wfoobar'; did you mean '-W{{.*}}'?</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:       <key>level</key>
-// CHECK:       <string>warning</string>
-// CHECK:       <key>filename</key>
-// CHECK:       <string>{{.*}}cc-log-diagnostics.c</string>
-// CHECK:       <key>line</key>
-// CHECK:       <integer>7</integer>
-// CHECK:       <key>column</key>
-// CHECK:       <integer>11</integer>
-// CHECK:       <key>message</key>
-// CHECK:       <string>control reaches end of non-void function</string>
-// CHECK:     </dict>
-// CHECK:   </array>
-// CHECK: </dict>

Modified: trunk/contrib/llvm/tools/clang/test/Driver/cc-print-options.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/cc-print-options.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/cc-print-options.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: env CC_PRINT_OPTIONS=1 \
-// RUN:     CC_PRINT_OPTIONS_FILE=%t.log \
-// RUN: %clang -no-canonical-prefixes -S -o %t.s %s
-// RUN: FileCheck %s < %t.log
-
-// CHECK: [Logging clang options]{{.*}}clang{{.*}}"-S"
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/ccc-add-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/ccc-add-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/ccc-add-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: env CCC_ADD_ARGS="-ccc-echo,-ccc-print-options,,-v" %clang -### 2>&1 | FileCheck %s
-// CHECK: Option 0 - Name: "-ccc-echo", Values: {}
-// CHECK: Option 1 - Name: "-ccc-print-options", Values: {}
-// CHECK: Option 2 - Name: "-v", Values: {}
-// CHECK: Option 3 - Name: "-###", Values: {}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/ccc-as-cpp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/ccc-as-cpp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/ccc-as-cpp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// REQUIRES: shell
-// RUN: ln -sf %clang %T/clang-cpp
-
-// PR13529: Don't crash.
-// RUN: %T/clang-cpp -lfoo -M %s 2>&1 | FileCheck --check-prefix=CHECK-PR13529 %s
-// CHECK-PR13529: warning: -lfoo: 'linker' input unused in cpp mode

Modified: trunk/contrib/llvm/tools/clang/test/Driver/ccc-host-triple-no-integrated-as.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/ccc-host-triple-no-integrated-as.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/ccc-host-triple-no-integrated-as.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Check that -no-integrated-as works when -target i386-pc-win32-macho or
-// -target x86_64-pc-win32-macho is specified.
-
-// RUN: %clang -### -c -target i386-pc-win32-macho -no-integrated-as %s 2> %t1
-// RUN: FileCheck -check-prefix=X86 < %t1 %s
-// RUN: %clang -### -c -target x86_64-pc-win32-macho -no-integrated-as %s 2> %t2
-// RUN: FileCheck -check-prefix=X86_64 < %t2 %s
-//
-// X86: "-cc1"
-// X86-NOT: "-cc1as"
-// X86: "-arch"
-// X86: "i386"
-//
-// X86_64: "-cc1"
-// X86_64-NOT: "-cc1as"
-// X86_64: "-arch"
-// X86_64: "x86_64"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/cfi.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/cfi.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/cfi.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang -target i386-apple-darwin10 \
-// RUN:    -no-integrated-as -### %s 2>&1 | \
-// RUN:  FileCheck --check-prefix=CHECK-DARWIN %s
-
-// RUN: %clang -target i386-pc-linux-gnu  -static -### %s 2>&1 | \
-// RUN: FileCheck --check-prefix=CHECK-LINUX %s
-
-// CHECK-DARWIN: -fno-dwarf2-cfi-asm
-// CHECK-LINUX-NOT: -fno-dwarf2-cfi-asm

Modified: trunk/contrib/llvm/tools/clang/test/Driver/claim-unused.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/claim-unused.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/claim-unused.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: touch %t.o
-// RUN: %clang --param ssp-buffer-size=1 %t.o -### 2>&1 | FileCheck %s
-// CHECK-NOT: warning: argument unused during compilation: '--param ssp-buffer-size=1'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/clang-c-as-cxx.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/clang-c-as-cxx.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/clang-c-as-cxx.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clangxx -### %s 2>&1 | FileCheck %s
-//
-// PR5803
-//
-// CHECK: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
-// CHECK: "-cc1" {{.*}} "-x" "c++"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/clang-exception-flags.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/clang-exception-flags.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/clang-exception-flags.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang -### %s 2>&1 | FileCheck %s -check-prefix=DEFAULT
-// DEFAULT: "-cc1" {{.*}} "-fcxx-exceptions" "-fexceptions"
-//
-// RUN: %clang -### -fexceptions %s 2>&1 | FileCheck %s -check-prefix=ON1
-// ON1: "-cc1" {{.*}} "-fcxx-exceptions" "-fexceptions"
-//
-// RUN: %clang -### -fno-exceptions -fcxx-exceptions %s 2>&1 | FileCheck %s -check-prefix=ON2
-// ON2: "-cc1" {{.*}} "-fcxx-exceptions" "-fexceptions"
-//
-// RUN: %clang -### -fno-cxx-exceptions -fexceptions %s 2>&1 | FileCheck %s -check-prefix=ON3
-// ON3: "-cc1" {{.*}} "-fcxx-exceptions" "-fexceptions"
-//
-// RUN: %clang -### -fno-exceptions %s 2>&1 | FileCheck %s -check-prefix=OFF1
-// OFF1-NOT: "-cc1" {{.*}} "-fcxx-exceptions"
-//
-// RUN: %clang -### -fno-cxx-exceptions %s 2>&1 | FileCheck %s -check-prefix=OFF2
-// OFF2-NOT: "-cc1" {{.*}} "-fcxx-exceptions"
-//
-// RUN: %clang -### -fcxx-exceptions -fno-exceptions %s 2>&1 | FileCheck %s -check-prefix=OFF3
-// OFF3-NOT: "-cc1" {{.*}} "-fcxx-exceptions"
-//
-// RUN: %clang -### -fexceptions -fno-cxx-exceptions %s 2>&1 | FileCheck %s -check-prefix=OFF4
-// OFF4-NOT: "-cc1" {{.*}} "-fcxx-exceptions"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/clang-g-opts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/clang-g-opts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/clang-g-opts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang -### -S %s        2>&1 | FileCheck --check-prefix=CHECK-WITHOUT-G %s
-// RUN: %clang -### -S %s -g     2>&1 | FileCheck --check-prefix=CHECK-WITH-G    %s
-// RUN: %clang -### -S %s -g0    2>&1 | FileCheck --check-prefix=CHECK-WITHOUT-G %s
-// RUN: %clang -### -S %s -g -g0 2>&1 | FileCheck --check-prefix=CHECK-WITHOUT-G %s
-// RUN: %clang -### -S %s -g0 -g 2>&1 | FileCheck --check-prefix=CHECK-WITH-G    %s
-
-// CHECK-WITHOUT-G-NOT: "-g"
-// CHECK-WITH-G: "-g"
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/clang-translation.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/clang-translation.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/clang-translation.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,209 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -### -S -O0 -Os %s -o %t.s -fverbose-asm -funwind-tables -fvisibility=hidden 2>&1 | FileCheck -check-prefix=I386 %s
-// I386: "-triple" "i386-unknown-unknown"
-// I386: "-S"
-// I386: "-disable-free"
-// I386: "-mrelocation-model" "static"
-// I386: "-mdisable-fp-elim"
-// I386: "-masm-verbose"
-// I386: "-munwind-tables"
-// I386: "-Os"
-// I386: "-fvisibility"
-// I386: "hidden"
-// I386: "-o"
-// I386: clang-translation
-// RUN: %clang -target i386-apple-darwin9 -### -S %s -o %t.s 2>&1 | \
-// RUN: FileCheck -check-prefix=YONAH %s
-// YONAH: "-target-cpu"
-// YONAH: "yonah"
-// RUN: %clang -target x86_64-apple-darwin9 -### -S %s -o %t.s 2>&1 | \
-// RUN: FileCheck -check-prefix=CORE2 %s
-// CORE2: "-target-cpu"
-// CORE2: "core2"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### -S %s -arch armv7 2>&1 | \
-// RUN: FileCheck -check-prefix=ARMV7_DEFAULT %s
-// ARMV7_DEFAULT: clang
-// ARMV7_DEFAULT: "-cc1"
-// ARMV7_DEFAULT-NOT: "-msoft-float"
-// ARMV7_DEFAULT: "-mfloat-abi" "soft"
-// ARMV7_DEFAULT-NOT: "-msoft-float"
-// ARMV7_DEFAULT: "-x" "c"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### -S %s -arch armv7 \
-// RUN: -msoft-float 2>&1 | FileCheck -check-prefix=ARMV7_SOFTFLOAT %s
-// ARMV7_SOFTFLOAT: clang
-// ARMV7_SOFTFLOAT: "-cc1"
-// ARMV7_SOFTFLOAT: "-msoft-float"
-// ARMV7_SOFTFLOAT: "-mfloat-abi" "soft"
-// ARMV7_SOFTFLOAT: "-target-feature"
-// ARMV7_SOFTFLOAT: "-neon"
-// ARMV7_SOFTFLOAT: "-x" "c"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### -S %s -arch armv7 \
-// RUN: -mhard-float 2>&1 | FileCheck -check-prefix=ARMV7_HARDFLOAT %s
-// ARMV7_HARDFLOAT: clang
-// ARMV7_HARDFLOAT: "-cc1"
-// ARMV7_HARDFLOAT-NOT: "-msoft-float"
-// ARMV7_HARDFLOAT: "-mfloat-abi" "hard"
-// ARMV7_HARDFLOAT-NOT: "-msoft-float"
-// ARMV7_HARDFLOAT: "-x" "c"
-
-// RUN: %clang -target arm-linux -### -S %s -march=armv5e 2>&1 | \
-// RUN: FileCheck -check-prefix=ARMV5E %s
-// ARMV5E: clang
-// ARMV5E: "-cc1"
-// ARMV5E: "-target-cpu" "arm1022e"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=G5 2>&1 | FileCheck -check-prefix=PPCG5 %s
-// PPCG5: clang
-// PPCG5: "-cc1"
-// PPCG5: "-target-cpu" "g5"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=power7 2>&1 | FileCheck -check-prefix=PPCPWR7 %s
-// PPCPWR7: clang
-// PPCPWR7: "-cc1"
-// PPCPWR7: "-target-cpu" "pwr7"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=a2q 2>&1 | FileCheck -check-prefix=PPCA2Q %s
-// PPCA2Q: clang
-// PPCA2Q: "-cc1"
-// PPCA2Q: "-target-cpu" "a2q"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=630 2>&1 | FileCheck -check-prefix=PPC630 %s
-// PPC630: clang
-// PPC630: "-cc1"
-// PPC630: "-target-cpu" "pwr3"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=power3 2>&1 | FileCheck -check-prefix=PPCPOWER3 %s
-// PPCPOWER3: clang
-// PPCPOWER3: "-cc1"
-// PPCPOWER3: "-target-cpu" "pwr3"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=pwr3 2>&1 | FileCheck -check-prefix=PPCPWR3 %s
-// PPCPWR3: clang
-// PPCPWR3: "-cc1"
-// PPCPWR3: "-target-cpu" "pwr3"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=power4 2>&1 | FileCheck -check-prefix=PPCPOWER4 %s
-// PPCPOWER4: clang
-// PPCPOWER4: "-cc1"
-// PPCPOWER4: "-target-cpu" "pwr4"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=pwr4 2>&1 | FileCheck -check-prefix=PPCPWR4 %s
-// PPCPWR4: clang
-// PPCPWR4: "-cc1"
-// PPCPWR4: "-target-cpu" "pwr4"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=power5 2>&1 | FileCheck -check-prefix=PPCPOWER5 %s
-// PPCPOWER5: clang
-// PPCPOWER5: "-cc1"
-// PPCPOWER5: "-target-cpu" "pwr5"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=pwr5 2>&1 | FileCheck -check-prefix=PPCPWR5 %s
-// PPCPWR5: clang
-// PPCPWR5: "-cc1"
-// PPCPWR5: "-target-cpu" "pwr5"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=power5x 2>&1 | FileCheck -check-prefix=PPCPOWER5X %s
-// PPCPOWER5X: clang
-// PPCPOWER5X: "-cc1"
-// PPCPOWER5X: "-target-cpu" "pwr5x"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=pwr5x 2>&1 | FileCheck -check-prefix=PPCPWR5X %s
-// PPCPWR5X: clang
-// PPCPWR5X: "-cc1"
-// PPCPWR5X: "-target-cpu" "pwr5x"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=power6 2>&1 | FileCheck -check-prefix=PPCPOWER6 %s
-// PPCPOWER6: clang
-// PPCPOWER6: "-cc1"
-// PPCPOWER6: "-target-cpu" "pwr6"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=pwr6 2>&1 | FileCheck -check-prefix=PPCPWR6 %s
-// PPCPWR6: clang
-// PPCPWR6: "-cc1"
-// PPCPWR6: "-target-cpu" "pwr6"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=power6x 2>&1 | FileCheck -check-prefix=PPCPOWER6X %s
-// PPCPOWER6X: clang
-// PPCPOWER6X: "-cc1"
-// PPCPOWER6X: "-target-cpu" "pwr6x"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=pwr6x 2>&1 | FileCheck -check-prefix=PPCPWR6X %s
-// PPCPWR6X: clang
-// PPCPWR6X: "-cc1"
-// PPCPWR6X: "-target-cpu" "pwr6x"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=power7 2>&1 | FileCheck -check-prefix=PPCPOWER7 %s
-// PPCPOWER7: clang
-// PPCPOWER7: "-cc1"
-// PPCPOWER7: "-target-cpu" "pwr7"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=powerpc 2>&1 | FileCheck -check-prefix=PPCPOWERPC %s
-// PPCPOWERPC: clang
-// PPCPOWERPC: "-cc1"
-// PPCPOWERPC: "-target-cpu" "ppc"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s -mcpu=powerpc64 2>&1 | FileCheck -check-prefix=PPCPOWERPC64 %s
-// PPCPOWERPC64: clang
-// PPCPOWERPC64: "-cc1"
-// PPCPOWERPC64: "-target-cpu" "ppc64"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu \
-// RUN: -### -S %s 2>&1 | FileCheck -check-prefix=PPC64NS %s
-// PPC64NS: clang
-// PPC64NS: "-cc1"
-// PPC64NS: "-target-cpu" "ppc64"
-
-// RUN: %clang -target powerpc-fsl-linux -### -S %s \
-// RUN: -mcpu=e500mc 2>&1 | FileCheck -check-prefix=PPCE500MC %s
-// PPCE500MC: clang
-// PPCE500MC: "-cc1"
-// PPCE500MC: "-target-cpu" "e500mc"
-
-// RUN: %clang -target powerpc64-fsl-linux -### -S \
-// RUN: %s -mcpu=e5500 2>&1 | FileCheck -check-prefix=PPCE5500 %s
-// PPCE5500: clang
-// PPCE5500: "-cc1"
-// PPCE5500: "-target-cpu" "e5500"
-
-// RUN: %clang -target amd64-unknown-openbsd5.2 -### -S %s 2>&1 | \
-// RUN: FileCheck -check-prefix=AMD64 %s
-// AMD64: clang
-// AMD64: "-cc1"
-// AMD64: "-triple"
-// AMD64: "amd64-unknown-openbsd5.2"
-// AMD64: "-munwind-tables"
-
-// RUN: %clang -target amd64--mingw32 -### -S %s 2>&1 | \
-// RUN: FileCheck -check-prefix=AMD64-MINGW %s
-// AMD64-MINGW: clang
-// AMD64-MINGW: "-cc1"
-// AMD64-MINGW: "-triple"
-// AMD64-MINGW: "amd64--mingw32"
-// AMD64-MINGW: "-munwind-tables"
-
-// RUN: %clang -target i386-linux-android -### -S %s 2>&1 \
-// RUN:        --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=ANDROID-X86 %s
-// ANDROID-X86: clang
-// ANDROID-X86: "-target-cpu" "core2"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/clang_cpp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/clang_cpp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/clang_cpp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// Verify that -include isn't included twice with -save-temps.
-// RUN: %clang -S -o - %s -include %t.h -save-temps -### 2> %t.log
-// RUN: FileCheck %s < %t.log
-// CHECK: "-include
-// CHECK-NOT: "-include

Modified: trunk/contrib/llvm/tools/clang/test/Driver/clang_f_opts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/clang_f_opts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/clang_f_opts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang -### -S -fasm -fblocks -fbuiltin -fno-math-errno -fcommon -fpascal-strings -fno-blocks -fno-builtin -fmath-errno -fno-common -fno-pascal-strings -fblocks -fbuiltin -fmath-errno -fcommon -fpascal-strings -fsplit-stack %s 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS1 %s
-// RUN: %clang -### -S -fasm -fblocks -fbuiltin -fno-math-errno -fcommon -fpascal-strings -fno-asm -fno-blocks -fno-builtin -fmath-errno -fno-common -fno-pascal-strings -fno-show-source-location -fshort-enums -fshort-wchar %s 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS2 %s
-
-// CHECK-OPTIONS1: -split-stacks
-// CHECK-OPTIONS1: -fgnu-keywords
-// CHECK-OPTIONS1: -fblocks
-// CHECK-OPTIONS1: -fpascal-strings
-
-// CHECK_OPTIONS2: -fno-gnu-keywords
-// CHECK-OPTIONS2: -fmath-errno
-// CHECK-OPTIONS2: -fno-builtin
-// CHECK-OPTIONS2: -fshort-enums
-// CHECK-OPTIONS2: -fshort-wchar
-// CHECK-OPTIONS2: -fno-common
-// CHECK-OPTIONS2: -fno-show-source-location
-
-// RUN: %clang -### -S -Wwrite-strings %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS1 %s
-// WRITE-STRINGS1: -fconst-strings
-// RUN: %clang -### -S -Wwrite-strings -Wno-write-strings %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS2 %s
-// WRITE-STRINGS2-NOT: -fconst-strings
-// RUN: %clang -### -S -Wwrite-strings -w %s 2>&1 | FileCheck -check-prefix=WRITE-STRINGS3 %s
-// WRITE-STRINGS3: -fconst-strings
-
-// RUN: %clang -### -x c++ -c %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
-// RUN: %clang -### -x c++ -c -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
-// RUN: %clang -### -x c++ -c -Wno-deprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
-// RUN: %clang -### -x c++ -c -Wno-deprecated -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
-// RUN: %clang -### -x c++ -c -w %s 2>&1 | FileCheck -check-prefix=DEPRECATED-ON-CHECK %s
-// RUN: %clang -### -c %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
-// RUN: %clang -### -c -Wdeprecated %s 2>&1 | FileCheck -check-prefix=DEPRECATED-OFF-CHECK %s
-// DEPRECATED-ON-CHECK: -fdeprecated-macro
-// DEPRECATED-OFF-CHECK-NOT: -fdeprecated-macro
-
-// RUN: %clang -### -S -ffp-contract=fast %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-FAST-CHECK %s
-// RUN: %clang -### -S -ffast-math %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-FAST-CHECK %s
-// RUN: %clang -### -S -ffp-contract=off %s 2>&1 | FileCheck -check-prefix=FP-CONTRACT-OFF-CHECK %s
-// FP-CONTRACT-FAST-CHECK: -ffp-contract=fast
-// FP-CONTRACT-OFF-CHECK: -ffp-contract=off
-
-// RUN: %clang -### -S -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
-// RUN: %clang -### -S -fno-vectorize -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
-// RUN: %clang -### -S -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
-// RUN: %clang -### -S -fvectorize -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
-// RUN: %clang -### -S -ftree-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
-// RUN: %clang -### -S -fno-tree-vectorize -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
-// RUN: %clang -### -S -fno-tree-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
-// RUN: %clang -### -S -ftree-vectorize -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
-// CHECK-VECTORIZE: "-vectorize-loops"
-// CHECK-NO-VECTORIZE-NOT: "-vectorize-loops"
-
-// RUN: %clang -### -S -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
-// RUN: %clang -### -S -fno-slp-vectorize -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
-// RUN: %clang -### -S -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
-// RUN: %clang -### -S -fslp-vectorize -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
-// RUN: %clang -### -S -ftree-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
-// RUN: %clang -### -S -fno-tree-slp-vectorize -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
-// RUN: %clang -### -S -fno-tree-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
-// RUN: %clang -### -S -ftree-slp-vectorize -fno-slp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE %s
-// CHECK-SLP-VECTORIZE: "-vectorize-slp"
-// CHECK-NO-SLP-VECTORIZE-NOT: "-vectorize-slp"
-
-// RUN: %clang -### -S -fslp-vectorize-aggressive %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE-AGG %s
-// RUN: %clang -### -S -fno-slp-vectorize-aggressive -fslp-vectorize-aggressive %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE-AGG %s
-// RUN: %clang -### -S -fno-slp-vectorize-aggressive %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE-AGG %s
-// RUN: %clang -### -S -fslp-vectorize-aggressive -fno-slp-vectorize-aggressive %s 2>&1 | FileCheck -check-prefix=CHECK-NO-SLP-VECTORIZE-AGG %s
-// CHECK-SLP-VECTORIZE-AGG: "-vectorize-slp-aggressive"
-// CHECK-NO-SLP-VECTORIZE-AGG-NOT: "-vectorize-slp-aggressive"
-
-// RUN: %clang -### -S -fextended-identifiers %s 2>&1 | FileCheck -check-prefix=CHECK-EXTENDED-IDENTIFIERS %s
-// RUN: %clang -### -S -fno-extended-identifiers %s 2>&1 | FileCheck -check-prefix=CHECK-NO-EXTENDED-IDENTIFIERS %s
-// CHECK-EXTENDED-IDENTIFIERS: "-cc1"
-// CHECK-EXTENDED-IDENTIFIERS-NOT: "-fextended-identifiers"
-// CHECK-NO-EXTENDED-IDENTIFIERS: error: unsupported option '-fno-extended-identifiers'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/clang_f_opts.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/clang_f_opts.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/clang_f_opts.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang -### -fsyntax-only %s 2>&1 | FileCheck %s
-// CHECK: -fsyntax-only

Modified: trunk/contrib/llvm/tools/clang/test/Driver/clang_wrapv_opts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/clang_wrapv_opts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/clang_wrapv_opts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang -### -S -fwrapv -fno-wrapv -fwrapv %s 2>&1 | FileCheck -check-prefix=CHECK1 %s
-// CHECK1: -fwrapv
-//
-// RUN: %clang -### -S -fstrict-overflow -fno-strict-overflow %s 2>&1 | FileCheck -check-prefix=CHECK2 %s
-// CHECK2: -fwrapv
-//
-// RUN: %clang -### -S -fwrapv -fstrict-overflow %s 2>&1 | FileCheck -check-prefix=CHECK3 %s
-// CHECK3: -fwrapv
-//
-// RUN: %clang -### -S -fno-wrapv -fno-strict-overflow %s 2>&1 | FileCheck -check-prefix=CHECK4 %s
-// CHECK4-NOT: -fwrapv

Modified: trunk/contrib/llvm/tools/clang/test/Driver/color-diagnostics.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/color-diagnostics.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/color-diagnostics.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang -fcolor-diagnostics -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=CD %s
-// CHECK-CD: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fno-color-diagnostics -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=NCD %s
-// CHECK-NCD-NOT: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fdiagnostics-color -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=DC %s
-// CHECK-DC: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fno-diagnostics-color -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=NDC %s
-// CHECK-NDC-NOT: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fdiagnostics-color=always -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=DCE_A %s
-// CHECK-DCE_A: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fdiagnostics-color=never -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=DCE_N %s
-// CHECK-DCE_N-NOT: clang{{.*}}" "-fcolor-diagnostics"
-
-// The test doesn't run in a PTY, so "auto" defaults to off.
-// RUN: %clang -fdiagnostics-color=auto -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=DCE_AUTO %s
-// CHECK-DCE_AUTO-NOT: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fdiagnostics-color=foo -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=DCE_FOO %s
-// CHECK-DCE_FOO: error: the clang compiler does not support '-fdiagnostics-color=foo'
-
-// Check that the last flag wins.
-// RUN: %clang -fno-color-diagnostics -fdiagnostics-color -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=NCD_DC_S %s
-// CHECK-NCD_DC_S: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fcolor-diagnostics -fno-diagnostics-color -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=CD_NDC_S %s
-// CHECK-CD_NDC_S-NOT: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fdiagnostics-color -fno-color-diagnostics -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=DC_NCD_S %s
-// CHECK-DC_NCD_S-NOT: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fno-diagnostics-color -fcolor-diagnostics -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=NDC_CD_S %s
-// CHECK-NDC_CD_S: clang{{.*}}" "-fcolor-diagnostics"
-
-// RUN: %clang -fcolor-diagnostics -fdiagnostics-color=auto -### -c %s 2>&1 \
-// RUN:     | FileCheck --check-prefix=CD_DCE_AUTO_S %s
-// CHECK-CD_DCE_AUTO_S-NOT: clang{{.*}}" "-fcolor-diagnostics"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/constructors.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/constructors.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/constructors.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// Test whether or not the driver instructs the backend to use .init_array
-// sections for global constructors.
-//
-// CHECK-INIT-ARRAY: -fuse-init-array
-// CHECK-NO-INIT-ARRAY-NOT: -fuse-init-array
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1       \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/fake_install_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-INIT-ARRAY %s
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1       \
-// RUN:     -fno-use-init-array \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/fake_install_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-INIT-ARRAY %s
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1       \
-// RUN:     -fno-use-init-array -fuse-init-array \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/fake_install_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-INIT-ARRAY %s
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1       \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-INIT-ARRAY %s
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1       \
-// RUN:     -fuse-init-array \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-INIT-ARRAY %s
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1       \
-// RUN:     -target arm-unknown-linux-androideabi \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-INIT-ARRAY %s
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1       \
-// RUN:     -target mipsel-unknown-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-INIT-ARRAY %s
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1       \
-// RUN:     -target i386-unknown-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-INIT-ARRAY %s

Modified: trunk/contrib/llvm/tools/clang/test/Driver/cpath.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/cpath.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/cpath.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: mkdir -p %T/test1 %T/test2 %T/test3
-
-// RUN: env "CPATH=%T/test1%{pathsep}%T/test2" %clang -x c -E -v %s 2>&1 | FileCheck %s -check-prefix=CPATH
-// CPATH: -I{{.*}}/test1
-// CPATH: -I{{.*}}/test2
-// CPATH: search starts here
-// CPATH: test1
-// CPATH: test2
-
-// RUN: env "OBJC_INCLUDE_PATH=%T/test1%{pathsep}%T/test2"  OBJCPLUS_INCLUDE_PATH=%T/test1  "CPLUS_INCLUDE_PATH=%T/test1%{pathsep}%t/test2" C_INCLUDE_PATH=%T/test3 %clang -x c -E -v %s 2>&1 | FileCheck %s -check-prefix=C_INCLUDE_PATH
-// C_INCLUDE_PATH: -c-isystem {{"?.*}}/test3{{"?}} -cxx-isystem {{"?.*}}/test1{{"?}} -cxx-isystem {{"?.*}}/test2{{"?}} -objc-isystem {{"?.*}}/test1{{"?}} -objc-isystem {{"?.*}}/test2{{"?}} -objcxx-isystem {{"?.*}}/test1{{"?}}
-// C_INCLUDE_PATH: search starts here
-// C_INCLUDE_PATH-NOT: test1
-// C_INCLUDE_PATH: test3
-// C_INCLUDE_PATH-NOT: test1
-
-// RUN: env OBJC_INCLUDE_PATH=%T/test1 OBJCPLUS_INCLUDE_PATH=%T/test3 CPLUS_INCLUDE_PATH=%T/test3 C_INCLUDE_PATH=%T/test1 %clang -x objective-c++ -E -v %s 2>&1 | FileCheck %s -check-prefix=OBJCPLUS_INCLUDE_PATH
-// OBJCPLUS_INCLUDE_PATH: -c-isystem {{"?.*}}/test1{{"?}} -cxx-isystem {{"?.*}}/test3{{"?}} -objc-isystem {{"?.*}}/test1{{"?}} -objcxx-isystem {{"?.*}}/test3{{"?}}
-// OBJCPLUS_INCLUDE_PATH: search starts here
-// OBJCPLUS_INCLUDE_PATH-NOT: test1
-// OBJCPLUS_INCLUDE_PATH: test3
-// OBJCPLUS_INCLUDE_PATH-NOT: test1

Modified: trunk/contrib/llvm/tools/clang/test/Driver/cpp-precomp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/cpp-precomp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/cpp-precomp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -Werror -cpp-precomp -fsyntax-only %s
-
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -Werror -no-cpp-precomp -fsyntax-only %s

Modified: trunk/contrib/llvm/tools/clang/test/Driver/crash-report.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/crash-report.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/crash-report.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: env TMPDIR=%t TEMP=%t TMP=%t RC_DEBUG_OPTIONS=1 %clang -fsyntax-only %s \
-// RUN:  -F/tmp/ -I /tmp/ -idirafter /tmp/ -iquote /tmp/ -isystem /tmp/ \
-// RUN:  -iprefix /the/prefix -iwithprefix /tmp -iwithprefixbefore /tmp/ \
-// RUN:  -internal-isystem /tmp/ -internal-externc-isystem /tmp/ \
-// RUN:  -DFOO=BAR 2>&1 | FileCheck %s
-// RUN: cat %t/crash-report-*.c | FileCheck --check-prefix=CHECKSRC %s
-// RUN: cat %t/crash-report-*.sh | FileCheck --check-prefix=CHECKSH %s
-// REQUIRES: crash-recovery
-
-// RUN: env FORCE_CLANG_DIAGNOSTICS_CRASH=1 %clang -fsyntax-only -x c /dev/null 2>&1 | FileCheck %s
-
-#pragma clang __debug parser_crash
-// CHECK: Preprocessed source(s) and associated run script(s) are located at:
-// CHECK-NEXT: note: diagnostic msg: {{.*}}.c
-FOO
-// CHECKSRC: FOO
-// CHECKSH: -D "FOO=BAR"
-// CHECKSH-NOT: -F/tmp/
-// CHECKSH-NOT: -I /tmp/
-// CHECKSH-NOT: -idirafter /tmp/
-// CHECKSH-NOT: -iquote /tmp/
-// CHECKSH-NOT: -isystem /tmp/
-// CHECKSH-NOT: -iprefix /the/prefix
-// CHECKSH-NOT: -iwithprefix /tmp/
-// CHECKSH-NOT: -iwithprefixbefore /tmp/
-// CHECKSH-NOT: -internal-isystem /tmp/
-// CHECKSH-NOT: -internal-externc-isystem /tmp/
-// CHECKSH-NOT: -dwarf-debug-flags

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-arch-default.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-arch-default.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-arch-default.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// Check that the name of the arch we bind is "ppc" not "powerpc".
-//
-// RUN: %clang -target powerpc-apple-darwin8 -### \
-// RUN:   -ccc-print-phases %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-POWERPC < %t %s
-//
-// CHECK-POWERPC: bind-arch, "ppc"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-as.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-as.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-as.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang -target i386-apple-darwin10 -### -x assembler -c %s \
-// RUN:   -no-integrated-as -static -dynamic 2>%t
-// RUN: FileCheck -check-prefix=STATIC_AND_DYNAMIC-32 --input-file %t %s
-//
-// CHECK-STATIC_AND_DYNAMIC-32: as{{(.exe)?}}" "-arch" "i386" "-force_cpusubtype_ALL" "-static" "-o"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### -x assembler -c %s \
-// RUN:   -no-integrated-as -static 2>%t
-// RUN: FileCheck -check-prefix=STATIC-64 --input-file %t %s
-//
-// CHECK-STATIC-64: as{{(.exe)?}}" "-arch" "x86_64" "-force_cpusubtype_ALL" "-o"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### \
-// RUN:   -arch armv6 -no-integrated-as -x assembler -c %s 2>%t
-// RUN: FileCheck -check-prefix=ARMV6 --input-file %t %s
-//
-// CHECK-ARMV6: as{{(.exe)?}}" "-arch" "armv6" "-o"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-asan-nofortify.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-asan-nofortify.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-asan-nofortify.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// Make sure AddressSanitizer disables _FORTIFY_SOURCE on Darwin.
-
-// RUN: %clang -faddress-sanitizer %s -E -dM -target x86_64-darwin - | FileCheck %s
-// RUN: %clang -fsanitize=address  %s -E -dM -target x86_64-darwin - | FileCheck %s
-
-// CHECK: #define _FORTIFY_SOURCE 0

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-debug-flags.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-debug-flags.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-debug-flags.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: env RC_DEBUG_OPTIONS=1 %clang -target i386-apple-darwin9 -g -Os %s  -emit-llvm -S -o - | FileCheck %s
-// <rdar://problem/7256886>
-// RUN: touch %t.s
-// RUN: env RC_DEBUG_OPTIONS=1 %clang -### -target i386-apple-darwin9 -c -g %t.s 2>&1 | FileCheck -check-prefix=S %s
-// <rdar://problem/12955296>
-// RUN: %clang -### -target i386-apple-darwin9 -c -g %t.s 2>&1 | FileCheck -check-prefix=P %s
-
-// CHECK: !0 = metadata !{
-// CHECK: -g -Os
-// CHECK: -mmacosx-version-min=10.5.0
-// CHECK: [ DW_TAG_compile_unit ]
-
-int x;
-
-// S: "-dwarf-debug-flags"
-
-// P: "-dwarf-debug-producer"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-dsymutil.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-dsymutil.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-dsymutil.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// Check that we run dsymutil properly with multiple -arch options.
-//
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-phases \
-// RUN:   -arch i386 -arch x86_64 %s -g 2> %t
-// RUN: FileCheck -check-prefix=CHECK-MULTIARCH-ACTIONS < %t %s
-//
-// CHECK-MULTIARCH-ACTIONS: 0: input, "{{.*}}darwin-dsymutil.c", c
-// CHECK-MULTIARCH-ACTIONS: 1: preprocessor, {0}, cpp-output
-// CHECK-MULTIARCH-ACTIONS: 2: compiler, {1}, assembler
-// CHECK-MULTIARCH-ACTIONS: 3: assembler, {2}, object
-// CHECK-MULTIARCH-ACTIONS: 4: linker, {3}, image
-// CHECK-MULTIARCH-ACTIONS: 5: bind-arch, "i386", {4}, image
-// CHECK-MULTIARCH-ACTIONS: 6: bind-arch, "x86_64", {4}, image
-// CHECK-MULTIARCH-ACTIONS: 7: lipo, {5, 6}, image
-// CHECK-MULTIARCH-ACTIONS: 8: dsymutil, {7}, dSYM
-//
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-bindings \
-// RUN:   -arch i386 -arch x86_64 %s -g 2> %t
-// RUN: FileCheck -check-prefix=CHECK-MULTIARCH-BINDINGS < %t %s
-//
-// CHECK-MULTIARCH-BINDINGS: "x86_64-apple-darwin10" - "darwin::Lipo", inputs: [{{.*}}, {{.*}}], output: "a.out"
-// CHECK-MULTIARCH-BINDINGS: # "x86_64-apple-darwin10" - "darwin::Dsymutil", inputs: ["a.out"], output: "a.out.dSYM"
-
-// Check output name derivation.
-//
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-bindings \
-// RUN:   -o foo %s -g 2> %t
-// RUN: FileCheck -check-prefix=CHECK-OUTPUT-NAME < %t %s
-//
-// CHECK-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Link", inputs: [{{.*}}], output: "foo"
-// CHECK-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Dsymutil", inputs: ["foo"], output: "foo.dSYM"
-
-// Check that we only use dsymutil when needed.
-//
-// RUN: touch %t.o
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-bindings \
-// RUN:   -o foo %t.o -g 2> %t
-// RUN: grep "Dsymutil" %t | count 0
-
-// Check that we put the .dSYM in the right place.
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-bindings \
-// RUN:   -o bar/foo %s -g 2> %t
-// RUN: FileCheck -check-prefix=CHECK-LOCATION < %t %s
-
-// CHECK-LOCATION: "x86_64-apple-darwin10" - "darwin::Dsymutil", inputs: ["bar/foo"], output: "bar/foo.dSYM"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-iphone-defaults.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-iphone-defaults.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-iphone-defaults.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang -target i386-apple-darwin9 -miphoneos-version-min=3.0 -arch armv7 -flto -S -o - %s | FileCheck %s
-
-// CHECK: @f0() [[F0:#[0-9]+]]
-// CHECK: @__f0_block_invoke
-// CHECK: void @f1
-// CHECK-NOT: msgSend_fixup_alloc
-// CHECK: OBJC_SELECTOR_REFERENCES
-
-int f0() {
-  return ^(){ return 0; }();
-}
-
- at interface I0
- at property (assign) int p0;
- at end
-
- at implementation I0
- at synthesize p0 = __sythesized_p0;
- at end
-
- at interface I1
-+(id) alloc;
- at end
-
-void f1() {
-  [I1 alloc];
-}
-
-// CHECK: attributes [[F0]] = { ssp{{.*}} }

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-ld.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-ld.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-ld.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,132 +0,0 @@
-// Check that ld gets arch_multiple.
-
-// RUN: %clang -target i386-apple-darwin9 -arch i386 -arch x86_64 %s -### -o foo 2> %t.log
-// RUN: grep '".*ld.*" .*"-arch_multiple" "-final_output" "foo"' %t.log
-
-// Make sure we run dsymutil on source input files.
-// RUN: %clang -target i386-apple-darwin9 -### -g %s -o BAR 2> %t.log
-// RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log
-// RUN: %clang -target i386-apple-darwin9 -### -g -filelist FOO %s -o BAR 2> %t.log
-// RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log
-
-// Check linker changes that came with new linkedit format.
-// RUN: touch %t.o
-// RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 %t.o 2> %t.log
-// RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 -dynamiclib %t.o 2>> %t.log
-// RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 -bundle %t.o 2>> %t.log
-// RUN: FileCheck -check-prefix=LINK_IPHONE_3_0 %s < %t.log
-
-// LINK_IPHONE_3_0: {{ld(.exe)?"}}
-// LINK_IPHONE_3_0-NOT: -lcrt1.3.1.o
-// LINK_IPHONE_3_0: -lcrt1.o
-// LINK_IPHONE_3_0: -lSystem
-// LINK_IPHONE_3_0: {{ld(.exe)?"}}
-// LINK_IPHONE_3_0: -dylib
-// LINK_IPHONE_3_0: -ldylib1.o
-// LINK_IPHONE_3_0: -lSystem
-// LINK_IPHONE_3_0: {{ld(.exe)?"}}
-// LINK_IPHONE_3_0: -lbundle1.o
-// LINK_IPHONE_3_0: -lSystem
-
-// RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 %t.o 2> %t.log
-// RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 -dynamiclib %t.o 2>> %t.log
-// RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 -bundle %t.o 2>> %t.log
-// RUN: FileCheck -check-prefix=LINK_IPHONE_3_1 %s < %t.log
-
-// LINK_IPHONE_3_1: {{ld(.exe)?"}}
-// LINK_IPHONE_3_1-NOT: -lcrt1.o
-// LINK_IPHONE_3_1: -lcrt1.3.1.o
-// LINK_IPHONE_3_1: -lSystem
-// LINK_IPHONE_3_1: {{ld(.exe)?"}}
-// LINK_IPHONE_3_1: -dylib
-// LINK_IPHONE_3_1-NOT: -ldylib1.o
-// LINK_IPHONE_3_1: -lSystem
-// LINK_IPHONE_3_1: {{ld(.exe)?"}}
-// LINK_IPHONE_3_1-NOT: -lbundle1.o
-// LINK_IPHONE_3_1: -lSystem
-
-// RUN: %clang -target i386-apple-darwin9 -### -fpie %t.o 2> %t.log
-// RUN: FileCheck -check-prefix=LINK_EXPLICIT_PIE %s < %t.log
-//
-// LINK_EXPLICIT_PIE: {{ld(.exe)?"}}
-// LINK_EXPLICIT_PIE: "-pie"
-
-// RUN: %clang -target i386-apple-darwin9 -### -fno-pie %t.o 2> %t.log
-// RUN: FileCheck -check-prefix=LINK_EXPLICIT_NO_PIE %s < %t.log
-//
-// LINK_EXPLICIT_NO_PIE: {{ld(.exe)?"}}
-// LINK_EXPLICIT_NO_PIE: "-no_pie"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
-// RUN:   -mlinker-version=100 2> %t.log
-// RUN: FileCheck -check-prefix=LINK_NEWER_DEMANGLE %s < %t.log
-//
-// LINK_NEWER_DEMANGLE: {{ld(.exe)?"}}
-// LINK_NEWER_DEMANGLE: "-demangle"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
-// RUN:   -mlinker-version=100 -Wl,--no-demangle 2> %t.log
-// RUN: FileCheck -check-prefix=LINK_NEWER_NODEMANGLE %s < %t.log
-//
-// LINK_NEWER_NODEMANGLE: {{ld(.exe)?"}}
-// LINK_NEWER_NODEMANGLE-NOT: "-demangle"
-// LINK_NEWER_NODEMANGLE: "-lSystem"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
-// RUN:   -mlinker-version=95 2> %t.log
-// RUN: FileCheck -check-prefix=LINK_OLDER_NODEMANGLE %s < %t.log
-//
-// LINK_OLDER_NODEMANGLE: {{ld(.exe)?"}}
-// LINK_OLDER_NODEMANGLE-NOT: "-demangle"
-// LINK_OLDER_NODEMANGLE: "-lSystem"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### %s \
-// RUN:   -mlinker-version=117 -flto 2> %t.log
-// RUN: cat %t.log
-// RUN: FileCheck -check-prefix=LINK_OBJECT_LTO_PATH %s < %t.log
-//
-// LINK_OBJECT_LTO_PATH: {{ld(.exe)?"}}
-// LINK_OBJECT_LTO_PATH: "-object_path_lto"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
-// RUN:   -force_load a -force_load b 2> %t.log
-// RUN: cat %t.log
-// RUN: FileCheck -check-prefix=FORCE_LOAD %s < %t.log
-//
-// FORCE_LOAD: {{ld(.exe)?"}}
-// FORCE_LOAD: "-force_load" "a" "-force_load" "b"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
-// RUN:   -lazy_framework Framework 2> %t.log
-//
-// RUN: FileCheck -check-prefix=LINK_LAZY_FRAMEWORK %s < %t.log
-// LINK_LAZY_FRAMEWORK: {{ld(.exe)?"}}
-// LINK_LAZY_FRAMEWORK: "-lazy_framework" "Framework"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
-// RUN:   -lazy_library Library 2> %t.log
-//
-// RUN: FileCheck -check-prefix=LINK_LAZY_LIBRARY %s < %t.log
-// LINK_LAZY_LIBRARY: {{ld(.exe)?"}}
-// LINK_LAZY_LIBRARY: "-lazy_library" "Library"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### %t.o 2> %t.log
-// RUN: %clang -target x86_64-apple-macosx10.7 -### %t.o 2>> %t.log
-// RUN: FileCheck -check-prefix=LINK_VERSION_MIN %s < %t.log
-// LINK_VERSION_MIN: {{ld(.exe)?"}}
-// LINK_VERSION_MIN: "-macosx_version_min" "10.6.0"
-// LINK_VERSION_MIN: {{ld(.exe)?"}}
-// LINK_VERSION_MIN: "-macosx_version_min" "10.7.0"
-
-// RUN: %clang -target x86_64-apple-darwin12 -### %t.o 2> %t.log
-// RUN: FileCheck -check-prefix=LINK_NO_CRT1 %s < %t.log
-// LINK_NO_CRT1-NOT: crt
-
-// RUN: %clang -target armv7-apple-ios6.0 -miphoneos-version-min=6.0 -### %t.o 2> %t.log
-// RUN: FileCheck -check-prefix=LINK_NO_IOS_CRT1 %s < %t.log
-// LINK_NO_IOS_CRT1-NOT: crt
-
-// RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log
-// RUN: FileCheck -check-prefix=LINK_PG %s < %t.log
-// LINK_PG: -lgcrt1.o
-// LINK_PG: -no_new_main

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-defaults.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-defaults.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-defaults.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// Check non-fragile ABI and dispatch method defaults.
-
-// i386
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch i386 -mmacosx-version-min=10.5 2> %t
-// RUN: FileCheck --check-prefix CHECK-I386_OSX10_5 < %t %s
-
-// CHECK-CHECK-I386_OSX10_5: "-cc1"
-// CHECK-CHECK-I386_OSX10_5: -fobjc-runtime=macosx-fragile-10.5
-// CHECK-CHECK-I386_OSX10_5-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-I386_OSX10_5: darwin-objc-defaults
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch i386 -mmacosx-version-min=10.6 2> %t
-// RUN: FileCheck --check-prefix CHECK-I386_OSX10_6 < %t %s
-
-// CHECK-CHECK-I386_OSX10_6: "-cc1"
-// CHECK-CHECK-I386_OSX10_6: -fobjc-runtime=macosx-fragile-10.6
-// CHECK-CHECK-I386_OSX10_6-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-I386_OSX10_6: darwin-objc-defaults
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch i386 -miphoneos-version-min=3.0 2> %t
-// RUN: FileCheck --check-prefix CHECK-I386_IPHONE3_0 < %t %s
-
-// CHECK-CHECK-I386_IPHONE3_0: "-cc1"
-// CHECK-CHECK-I386_IPHONE3_0: -fobjc-runtime=ios-3.0
-// CHECK-CHECK-I386_IPHONE3_0-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-I386_IPHONE3_0: darwin-objc-defaults
-
-// x86_64
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch x86_64 -mmacosx-version-min=10.5 2> %t
-// RUN: FileCheck --check-prefix CHECK-X86_64_OSX10_5 < %t %s
-
-// CHECK-CHECK-X86_64_OSX10_5: "-cc1"
-// CHECK-CHECK-X86_64_OSX10_5: -fobjc-runtime=macosx-10.5
-// CHECK-CHECK-X86_64_OSX10_5: -fobjc-dispatch-method=non-legacy
-// CHECK-CHECK-X86_64_OSX10_5: darwin-objc-defaults
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch x86_64 -mmacosx-version-min=10.6 2> %t
-// RUN: FileCheck --check-prefix CHECK-X86_64_OSX10_6 < %t %s
-
-// CHECK-CHECK-X86_64_OSX10_6: "-cc1"
-// CHECK-CHECK-X86_64_OSX10_6: -fobjc-runtime=macosx-10.6
-// CHECK-CHECK-X86_64_OSX10_6: -fobjc-dispatch-method=mixed
-// CHECK-CHECK-X86_64_OSX10_6: darwin-objc-defaults
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch x86_64 -miphoneos-version-min=3.0 2> %t
-// RUN: FileCheck --check-prefix CHECK-X86_64_IPHONE3_0 < %t %s
-
-// CHECK-CHECK-X86_64_IPHONE3_0: "-cc1"
-// CHECK-CHECK-X86_64_IPHONE3_0: -fobjc-runtime=ios-3.0
-// CHECK-CHECK-X86_64_IPHONE3_0: -fobjc-dispatch-method=mixed
-// CHECK-CHECK-X86_64_IPHONE3_0: darwin-objc-defaults
-
-// armv7
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch armv7 -mmacosx-version-min=10.5 2> %t
-// RUN: FileCheck --check-prefix CHECK-ARMV7_OSX10_5 < %t %s
-
-// CHECK-CHECK-ARMV7_OSX10_5: "-cc1"
-// CHECK-CHECK-ARMV7_OSX10_5: -fobjc-runtime=macosx-10.5
-// CHECK-CHECK-ARMV7_OSX10_5-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-ARMV7_OSX10_5: darwin-objc-defaults
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s	\
-// RUN:   -arch armv7 -mmacosx-version-min=10.6 2> %t
-// RUN: FileCheck --check-prefix CHECK-ARMV7_OSX10_6 < %t %s
-
-// CHECK-CHECK-ARMV7_OSX10_6: "-cc1"
-// CHECK-CHECK-ARMV7_OSX10_6: -fobjc-runtime=macosx-10.6
-// CHECK-CHECK-ARMV7_OSX10_6-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-ARMV7_OSX10_6: darwin-objc-defaults
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch armv7 -miphoneos-version-min=3.0 2> %t
-// RUN: FileCheck --check-prefix CHECK-ARMV7_IPHONE3_0 < %t %s
-
-// CHECK-CHECK-ARMV7_IPHONE3_0: "-cc1"
-// CHECK-CHECK-ARMV7_IPHONE3_0: -fobjc-runtime=ios-3.0
-// CHECK-CHECK-ARMV7_IPHONE3_0-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-ARMV7_IPHONE3_0: darwin-objc-defaults

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-gc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-gc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-gc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// Check that we warn, but accept, -fobjc-gc for iPhone OS.
-
-// RUN: %clang -target i386-apple-darwin9 -miphoneos-version-min=3.0 -fobjc-gc -flto -S -o %t %s 2> %t.err
-// RUN: FileCheck --check-prefix=IPHONE_OBJC_GC_LL %s < %t 
-// RUN: FileCheck --check-prefix=IPHONE_OBJC_GC_STDERR %s < %t.err
-
-// IPHONE_OBJC_GC_LL: define void @f0
-// IPHONE_OBJC_GC_LL-NOT: objc_assign_ivar
-// IPHONE_OBJC_GC_LL: }
-
-// IPHONE_OBJC_GC_STDERR: warning: Objective-C garbage collection is not supported on this platform, ignoring '-fobjc-gc'
-
- at interface A {
- at public
- id x;
-}
- at end
-
-void f0(A *a, id x) { a->x = x; }

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-options.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-options.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-objc-options.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// Check miscellaneous Objective-C options.
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch x86_64 -fobjc-abi-version=1 2> %t
-// RUN: FileCheck --check-prefix CHECK-X86_64_ABI1 < %t %s
-
-// CHECK-CHECK-X86_64_ABI1: "-cc1"
-// CHECK-CHECK-X86_64_ABI1: -fobjc-runtime=macosx-fragile-10.6.0
-// CHECK-CHECK-X86_64_ABI1-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-X86_64_ABI1: darwin-objc-options
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch i386 -fobjc-abi-version=2 2> %t
-// RUN: FileCheck --check-prefix CHECK-I386_ABI2 < %t %s
-
-// CHECK-CHECK-I386_ABI2: "-cc1"
-// CHECK-CHECK-I386_ABI2: -fobjc-runtime=macosx-10.6.0
-// CHECK-CHECK-I386_ABI2: -fobjc-exceptions
-// CHECK-CHECK-I386_ABI2: -fexceptions
-// CHECK-CHECK-I386_ABI2-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-I386_ABI2: darwin-objc-options
-
-// RUN: %clang -target x86_64-apple-darwin10 -S -### %s \
-// RUN:   -arch i386 -fobjc-runtime=ios-5.0 2> %t
-// RUN: FileCheck --check-prefix CHECK-I386_IOS < %t %s
-
-// CHECK-CHECK-I386_IOS: "-cc1"
-// CHECK-CHECK-I386_IOS: -fobjc-runtime=ios-5.0
-// CHECK-CHECK-I386_IOS: -fobjc-exceptions
-// CHECK-CHECK-I386_IOS: -fexceptions
-// CHECK-CHECK-I386_IOS-NOT: -fobjc-dispatch-method
-// CHECK-CHECK-I386_IOS: darwin-objc-options

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// Test sanitizer link flags on Darwin.
-
-// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
-// RUN:   -fsanitize=address %s -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN %s
-
-// CHECK-ASAN: "{{.*}}ld{{(.exe)?}}"
-// CHECK-ASAN: libclang_rt.asan_osx_dynamic.dylib"
-// CHECK-ASAN: stdc++
-
-// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
-// RUN:   -fPIC -shared -fsanitize=address %s -o %t.so 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-DYN-ASAN %s
-
-// CHECK-DYN-ASAN: "{{.*}}ld{{(.exe)?}}"
-// CHECK-DYN-ASAN: "-dylib"
-// CHECK-DYN-ASAN-NOT: libclang_rt.asan_osx_dynamic.dylib
-// CHECK-DYN-ASAN: "-undefined"
-// CHECK-DYN-ASAN: "dynamic_lookup"
-// CHECK-DYN-ASAN-NOT: libclang_rt.asan_osx_dynamic.dylib
-
-// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
-// RUN:   -fsanitize=undefined %s -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-UBSAN %s
-
-// CHECK-UBSAN: "{{.*}}ld{{(.exe)?}}"
-// CHECK-UBSAN: libclang_rt.ubsan_osx.a"
-// CHECK-UBSAN: stdc++
-
-// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
-// RUN:   -fsanitize=bounds -fsanitize-undefined-trap-on-error \
-// RUN:   %s -o %t.o 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-BOUNDS %s
-
-// CHECK-BOUNDS: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BOUNDS-NOT: libclang_rt.ubsan_osx.a"
-
-// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
-// RUN:   -fPIC -shared -fsanitize=undefined %s -o %t.so 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-DYN-UBSAN %s
-
-// CHECK-DYN-UBSAN: "{{.*}}ld{{(.exe)?}}"
-// CHECK-DYN-UBSAN: "-dylib"
-// CHECK-DYN-UBSAN: libclang_rt.ubsan_osx.a
-
-// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
-// RUN:   -fsanitize=bounds -fsanitize-undefined-trap-on-error \
-// RUN:   %s -o %t.so -fPIC -shared 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-DYN-BOUNDS %s
-
-// CHECK-DYN-BOUNDS: "{{.*}}ld{{(.exe)?}}"
-// CHECK-DYN-BOUNDS-NOT: libclang_rt.ubsan_osx.a

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-sdkroot.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-sdkroot.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-sdkroot.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// Check that SDKROOT is used to define the default for -isysroot on Darwin.
-//
-// RUN: rm -rf %t.tmpdir
-// RUN: mkdir -p %t.tmpdir
-// RUN: env SDKROOT=%t.tmpdir %clang -target x86_64-apple-darwin10 \
-// RUN:   -c %s -### 2> %t.log
-// RUN: FileCheck --check-prefix=CHECK-BASIC < %t.log %s
-//
-// CHECK-BASIC: clang
-// CHECK-BASIC: "-cc1"
-// CHECK-BASIC: "-isysroot" "{{.*tmpdir}}"
-
-// Check that we don't use SDKROOT as the default if it is not a valid path.
-//
-// RUN: rm -rf %t.nonpath
-// RUN: env SDKROOT=%t.nonpath %clang -target x86_64-apple-darwin10 \
-// RUN:   -c %s -### 2> %t.log
-// RUN: FileCheck --check-prefix=CHECK-NONPATH < %t.log %s
-//
-// CHECK-NONPATH: clang
-// CHECK-NONPATH: "-cc1"
-// CHECK-NONPATH-NOT: "-isysroot"
-
-// Check that we don't use SDKROOT as the default if it is just "/"
-//
-// RUN: env SDKROOT=/ %clang -target x86_64-apple-darwin10 \
-// RUN:   -c %s -### 2> %t.log
-// RUN: FileCheck --check-prefix=CHECK-NONROOT < %t.log %s
-//
-// CHECK-NONROOT: clang
-// CHECK-NONROOT: "-cc1"
-// CHECK-NONROOT-NOT: "-isysroot"
-//
-// It doesn't make sense on msys bash.
-// REQUIRES: shell-preserves-root

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-verify-debug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-verify-debug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-verify-debug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// Check that we verify debug output properly with multiple -arch options.
-//
-// REQUIRES: asserts
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-phases \
-// RUN:   -verify -arch i386 -arch x86_64 %s -g 2> %t
-// RUN: FileCheck -check-prefix=CHECK-MULTIARCH-ACTIONS < %t %s
-//
-// CHECK-MULTIARCH-ACTIONS: 0: input, "{{.*}}darwin-verify-debug.c", c
-// CHECK-MULTIARCH-ACTIONS: 8: dsymutil, {7}, dSYM
-// CHECK-MULTIARCH-ACTIONS: 9: verify, {8}, none
-//
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-bindings \
-// RUN:   -verify -arch i386 -arch x86_64 %s -g 2> %t
-// RUN: FileCheck -check-prefix=CHECK-MULTIARCH-BINDINGS < %t %s
-//
-// CHECK-MULTIARCH-BINDINGS: # "x86_64-apple-darwin10" - "darwin::Dsymutil", inputs: ["a.out"], output: "a.out.dSYM"
-// CHECK-MULTIARCH-BINDINGS: # "x86_64-apple-darwin10" - "darwin::VerifyDebug", inputs: ["a.out.dSYM"], output: (nothing)
-
-// Check output name derivation.
-//
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-bindings \
-// RUN:   -verify -o foo %s -g 2> %t
-// RUN: FileCheck -check-prefix=CHECK-OUTPUT-NAME < %t %s
-//
-// CHECK-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Link", inputs: [{{.*}}], output: "foo"
-// CHECK-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Dsymutil", inputs: ["foo"], output: "foo.dSYM"
-// CHECK-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::VerifyDebug", inputs: ["foo.dSYM"], output: (nothing)
-
-// Check that we only verify when needed.
-//
-// RUN: touch %t.o
-// RUN: %clang -target x86_64-apple-darwin10 -ccc-print-bindings \
-// RUN:   -verify -o foo %t.o -g 2> %t
-// RUN: grep "Verify" %t | count 0

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-version.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-version.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-version.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: env MACOSX_DEPLOYMENT_TARGET=10.1 \
-// RUN:   %clang -target i386-apple-darwin9 -DTEST0 -E %s
-#ifdef TEST0
-#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1010
-#error Invalid version
-#endif
-#endif
-
-// RUN: env IPHONEOS_DEPLOYMENT_TARGET=2.0 \
-// RUN:   %clang -target i386-apple-darwin9 -DTEST1 -E %s
-#ifdef TEST1
-#if __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ != 20000
-#error Invalid version
-#endif
-#endif
-
-// RUN: env IPHONEOS_DEPLOYMENT_TARGET=2.3.1 \
-// RUN:   %clang -target i386-apple-darwin9 -DTEST2 -E %s
-#ifdef TEST2
-#if __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ != 20301
-#error Invalid version
-#endif
-#endif
-
-// RUN: env MACOSX_DEPLOYMENT_TARGET=10.4.10 \
-// RUN:   %clang -target i386-apple-darwin9 -DTEST3 -E %s
-#ifdef TEST3
-#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1049
-#error Invalid version
-#endif
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Driver/darwin-xarch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/darwin-xarch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/darwin-xarch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 -### \
-// RUN:   -arch i386 -Xarch_i386 -mmacosx-version-min=10.4 \
-// RUN:   -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 \
-// RUN:   -c %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-COMPILE < %t %s
-//
-// CHECK-COMPILE: clang{{.*}}" "-cc1" "-triple" "i386-apple-macosx10.4.0" 
-// CHECK-COMPILE: clang{{.*}}" "-cc1" "-triple" "x86_64-apple-macosx10.5.0"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### \
-// RUN:   -arch i386 -Xarch_i386 -Wl,-some-linker-arg -filelist X 2> %t
-// RUN: FileCheck --check-prefix=CHECK-LINK < %t %s
-//
-// CHECK-LINK: ld{{.*}} "-arch" "i386"{{.*}} "-some-linker-arg"
-
-// RUN: %clang -target x86_64-apple-darwin10 -### \
-// RUN:   -arch armv7 -Xarch_armv7 -Wl,-some-linker-arg -filelist X 2> %t
-// RUN: FileCheck --check-prefix=CHECK-ARMV7-LINK < %t %s
-//
-// CHECK-ARMV7-LINK: ld{{.*}} "-arch" "armv7"{{.*}} "-some-linker-arg"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/debug-comp-dir.S
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/debug-comp-dir.S	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/debug-comp-dir.S	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: cd %S && %clang -### -g %s -c 2>&1 | FileCheck -check-prefix=CHECK-PWD %s
-// CHECK-PWD: {{"-fdebug-compilation-dir" ".*Driver.*"}}
-
-// "PWD=/foo gcc" wouldn't necessarily work. You would need to pick a different
-// path to the same directory (try a symlink).
-
-// This depends on host's behavior how $PWD would be set.
-// REQUIRES: shell

Modified: trunk/contrib/llvm/tools/clang/test/Driver/debug-main-file.S
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/debug-main-file.S	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/debug-main-file.S	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// REQUIRES: clang-driver
-// RUN: %clang -### -c -save-temps -integrated-as -g %s 2>&1 \
-// RUN:   | FileCheck %s
-
-// CHECK: main-file-name
-
-#ifdef(1)
-foo:
-        nop
-        nop
-        nop
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Driver/debug-options-as.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/debug-options-as.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/debug-options-as.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// cygming have not supported integrated-as yet.
-// REQUIRES: clang-driver
-//
-// Check to make sure clang is somewhat picky about -g options.
-// (Delived from debug-options.c)
-// rdar://10383444
-// RUN: %clang -### -c -save-temps -integrated-as -g %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=SAVE %s
-//
-// SAVE: "-cc1as"
-// SAVE-NOT: "-g"
-
-// Check to make sure clang with -g on a .s file gets passed.
-// rdar://9275556
-// RUN: touch %t.s
-// RUN: %clang -### -c -integrated-as -g %t.s 2>&1 \
-// RUN:   | FileCheck %s
-//
-// CHECK: "-cc1as"
-// CHECK: "-g"
-
-// Check to make sure clang with -g on a .s file gets passed -dwarf-debug-producer.
-// rdar://12955296
-// RUN: touch %t.s
-// RUN: %clang -### -c -integrated-as -g %t.s 2>&1 \
-// RUN:   | FileCheck -check-prefix=P %s
-//
-// P: "-cc1as"
-// P: "-dwarf-debug-producer"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/debug-options.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/debug-options.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/debug-options.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// Check to make sure clang is somewhat picky about -g options.
-// rdar://10383444
-
-// RUN: %clang -### -c -g %s 2>&1 | FileCheck -check-prefix=G %s
-// RUN: %clang -### -c -g2 %s 2>&1 | FileCheck -check-prefix=G %s
-// RUN: %clang -### -c -g3 %s 2>&1 | FileCheck -check-prefix=G %s
-// RUN: %clang -### -c -ggdb %s 2>&1 | FileCheck -check-prefix=G %s
-// RUN: %clang -### -c -ggdb1 %s 2>&1 | FileCheck -check-prefix=G %s
-// RUN: %clang -### -c -ggdb3 %s 2>&1 | FileCheck -check-prefix=G %s
-// RUN: %clang -### -c -gdwarf-2 %s 2>&1 | FileCheck -check-prefix=G %s
-//
-// RUN: %clang -### -c -gfoo %s 2>&1 | FileCheck -check-prefix=G_NO %s
-// RUN: %clang -### -c -g -g0 %s 2>&1 | FileCheck -check-prefix=G_NO %s
-// RUN: %clang -### -c -ggdb0 %s 2>&1 | FileCheck -check-prefix=G_NO %s
-//
-// RUN: %clang -### -c -gline-tables-only %s 2>&1 \
-// RUN:             | FileCheck -check-prefix=GLTO_ONLY %s
-// RUN: %clang -### -c -gline-tables-only -g %s 2>&1 \
-// RUN:             | FileCheck -check-prefix=G_ONLY %s
-// RUN: %clang -### -c -gline-tables-only -g0 %s 2>&1 \
-// RUN:             | FileCheck -check-prefix=GLTO_NO %s
-//
-// RUN: %clang -### -c -grecord-gcc-switches -gno-record-gcc-switches \
-// RUN:           -gstrict-dwarf -gno-strict-dwarf %s 2>&1 \
-// RUN:        | not grep "argument unused during compilation"
-//
-// G: "-cc1"
-// G: "-g"
-//
-// G_NO: "-cc1"
-// G_NO-NOT: "-g"
-//
-// GLTO_ONLY: "-cc1"
-// GLTO_ONLY-NOT: "-g"
-// GLTO_ONLY: "-gline-tables-only"
-// GLTO_ONLY-NOT: "-g"
-//
-// G_ONLY: "-cc1"
-// G_ONLY-NOT: "-gline-tables-only"
-// G_ONLY: "-g"
-// G_ONLY-NOT: "-gline-tables-only"
-//
-// GLTO_NO: "-cc1"
-// GLTO_NO-NOT: "-gline-tables-only"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/debug-unsupported.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/debug-unsupported.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/debug-unsupported.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang -c -gstabs %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gstabs+ %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gcoff %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gxcoff %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gxcoff+ %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gvms %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gstabs1 %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gcoff2 %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gxcoff3 %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gvms0 %s 2>&1 | FileCheck %s
-// RUN: %clang -c -gtoggle %s 2>&1 | FileCheck %s
-//
-// CHECK: error: unsupported option

Modified: trunk/contrib/llvm/tools/clang/test/Driver/debug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/debug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/debug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: cd %S && %clang -### -g %s -c 2>&1 | FileCheck -check-prefix=CHECK-PWD %s
-// CHECK-PWD: {{"-fdebug-compilation-dir" ".*Driver.*"}}
-
-// "PWD=/foo gcc" wouldn't necessarily work. You would need to pick a different
-// path to the same directory (try a symlink).
-
-// This depends on host's behavior how $PWD would be set.
-// REQUIRES: shell

Modified: trunk/contrib/llvm/tools/clang/test/Driver/default-toolchain.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/default-toolchain.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/default-toolchain.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -m64 -v 2> %t
-// RUN: grep 'Target: x86_64-unknown-unknown' %t
-
-// RUN: %clang -target i386-apple-darwin9 -arch ppc -m64 -v 2> %t
-// RUN: grep 'Target: powerpc64-apple-darwin9' %t
-
-// RUN: %clang -target i386-apple-darwin9 -arch ppc64 -m32 -v 2> %t
-// RUN: grep 'Target: powerpc-apple-darwin9' %t

Modified: trunk/contrib/llvm/tools/clang/test/Driver/diagnostics.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/diagnostics.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/diagnostics.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// Parse diagnostic arguments in the driver
-// PR12181
-
-// RUN: not %clang -target x86_64-apple-darwin10 \
-// RUN:   -fsyntax-only -fzyzzybalubah \
-// RUN:   -Werror=unused-command-line-argument %s
-
-// RUN: not %clang -target x86_64-apple-darwin10 \
-// RUN:   -fsyntax-only -fzyzzybalubah -Werror %s

Modified: trunk/contrib/llvm/tools/clang/test/Driver/dragonfly.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/dragonfly.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/dragonfly.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-dragonfly %s -### 2> %t.log
-// RUN: FileCheck -input-file %t.log %s
-
-// CHECK: clang{{.*}}" "-cc1" "-triple" "x86_64-pc-dragonfly"
-// CHECK: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/usr/libexec/ld-elf.so.{{.*}}" "--hash-style=both" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-L{{.*}}gcc4{{.*}}" "-rpath" "{{.*}}gcc4{{.*}}" "-lc" "-lgcc" "{{.*}}crtend.o" "{{.*}}crtn.o"
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/dwarf2-cfi-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/dwarf2-cfi-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/dwarf2-cfi-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin -### -S -integrated-as %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-MC-DEFAULT %s
-// RUN: %clang -target x86_64-apple-darwin -### -S -integrated-as -fdwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-MC-CFI %s
-// RUN: %clang -target x86_64-apple-darwin -### -S -integrated-as -fno-dwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-MC-NOCFI %s
-
-// RUN: %clang -target x86_64-apple-darwin -### -S -no-integrated-as %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-AS-DEFAULT %s
-// RUN: %clang -target x86_64-apple-darwin -### -S -no-integrated-as -fdwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-AS-CFI %s
-// RUN: %clang -target x86_64-apple-darwin -### -S -no-integrated-as -fno-dwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-DARWIN-AS-NOCFI %s
-
-
-// RUN: %clang -target x86_64-pc-linux -### -S -integrated-as %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-MC-DEFAULT %s
-// RUN: %clang -target x86_64-pc-linux -### -S -integrated-as -fdwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-MC-CFI %s
-// RUN: %clang -target x86_64-pc-linux -### -S -integrated-as -fno-dwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-MC-NOCFI %s
-
-// RUN: %clang -target x86_64-pc-linux -### -S -no-integrated-as %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-AS-DEFAULT %s
-// RUN: %clang -target x86_64-pc-linux -### -S -no-integrated-as -fdwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-AS-CFI %s
-// RUN: %clang -target x86_64-pc-linux -### -S -no-integrated-as -fno-dwarf2-cfi-asm %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK-LINUX-AS-NOCFI %s
-
-
-
-// CHECK-DARWIN-MC-DEFAULT-NOT: -fno-dwarf2-cfi-asm
-// CHECK-DARWIN-MC-CFI-NOT: -fno-dwarf2-cfi-asm
-// CHECK-DARWIN-MC-NOCFI: -fno-dwarf2-cfi-asm
-
-// CHECK-DARWIN-AS-DEFAULT: -fno-dwarf2-cfi-asm
-// CHECK-DARWIN-AS-CFI-NOT: -fno-dwarf2-cfi-asm
-// CHECK-DARWIN-AS-NOCFI: -fno-dwarf2-cfi-asm
-
-
-// CHECK-LINUX-MC-DEFAULT-NOT: -fno-dwarf2-cfi-asmx
-// CHECK-LINUX-MC-CFI-NOT: -fno-dwarf2-cfi-asm
-// CHECK-LINUX-MC-NOCFI: -fno-dwarf2-cfi-asm
-
-// CHECK-LINUX-AS-DEFAULT-NOT: -fno-dwarf2-cfi-asm
-// CHECK-LINUX-AS-CFI-NOT: -fno-dwarf2-cfi-asm
-// CHECK-LINUX-AS-NOCFI: -fno-dwarf2-cfi-asm

Modified: trunk/contrib/llvm/tools/clang/test/Driver/emit-llvm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/emit-llvm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/emit-llvm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Check that -O4 is only honored as the effective -O option.
-// <rdar://problem/7046672> clang/loader problem
-
-// RUN: %clang -ccc-print-phases -c -O4 -O0 %s 2> %t
-// RUN: FileCheck --check-prefix=O4_AND_O0 %s < %t
-
-// O4_AND_O0: 0: input, "{{.*}}", c
-// O4_AND_O0: 1: preprocessor, {0}, cpp-output
-// O4_AND_O0: 2: compiler, {1}, assembler
-// O4_AND_O0: 3: assembler, {2}, object

Modified: trunk/contrib/llvm/tools/clang/test/Driver/exceptions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/exceptions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/exceptions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin9 \
-// RUN:   -fsyntax-only -fno-exceptions %s
-
-void f1() {
-  @throw @"A";
-}
-
-void f0() {
-  @try {
-    f1();
-  } @catch (id x) {
-    ;
-  }
-}
-
-int main() {
-  f0();
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/fast-math.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/fast-math.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/fast-math.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,186 +0,0 @@
-// Test that the GCC fast-math floating point flags get lowered to the correct
-// permutation of Clang frontend flags. This is non-trivial for a few reasons.
-// First, the GCC flags have many different and surprising effects. Second,
-// LLVM only supports three switches which is more coarse grained than GCC's
-// support.
-//
-// Both of them use gcc driver for as.
-// REQUIRES: clang-driver
-//
-// RUN: %clang -### -fno-honor-infinities -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-INFS %s
-// CHECK-NO-INFS: "-cc1"
-// CHECK-NO-INFS: "-menable-no-infs"
-//
-// RUN: %clang -### -fno-fast-math -fno-honor-infinities -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-FAST-MATH-NO-INFS %s
-// CHECK-NO-FAST-MATH-NO-INFS: "-cc1"
-// CHECK-NO-FAST-MATH-NO-INFS: "-menable-no-infs"
-//
-// RUN: %clang -### -fno-honor-infinities -fno-fast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-INFS-NO-FAST-MATH %s
-// CHECK-NO-INFS-NO-FAST-MATH: "-cc1"
-// CHECK-NO-INFS-NO-FAST-MATH-NOT: "-menable-no-infs"
-//
-// RUN: %clang -### -fno-honor-nans -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NANS %s
-// CHECK-NO-NANS: "-cc1"
-// CHECK-NO-NANS: "-menable-no-nans"
-//
-// RUN: %clang -### -fno-fast-math -fno-honor-nans -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-FAST-MATH-NO-NANS %s
-// CHECK-NO-FAST-MATH-NO-NANS: "-cc1"
-// CHECK-NO-FAST-MATH-NO-NANS: "-menable-no-nans"
-//
-// RUN: %clang -### -fno-honor-nans -fno-fast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NANS-NO-FAST-MATH %s
-// CHECK-NO-NANS-NO-FAST-MATH: "-cc1"
-// CHECK-NO-NANS-NO-FAST-MATH-NOT: "-menable-no-nans"
-//
-// RUN: %clang -### -fmath-errno -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-MATH-ERRNO %s
-// CHECK-MATH-ERRNO: "-cc1"
-// CHECK-MATH-ERRNO: "-fmath-errno"
-//
-// RUN: %clang -### -fno-fast-math -fmath-errno -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-FAST-MATH-MATH-ERRNO %s
-// CHECK-NO-FAST-MATH-MATH-ERRNO: "-cc1"
-// CHECK-NO-FAST-MATH-MATH-ERRNO: "-fmath-errno"
-//
-// RUN: %clang -### -fmath-errno -fno-fast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-MATH-ERRNO-NO-FAST-MATH %s
-// CHECK-MATH-ERRNO-NO-FAST-MATH: "-cc1"
-// CHECK-MATH-ERRNO-NO-FAST-MATH-NOT: "-fmath-errno"
-//
-// RUN: %clang -### -fmath-errno -fno-math-errno -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s
-// RUN: %clang -### -target i686-apple-darwin -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s
-// RUN: %clang -### -target x86_64-unknown-freebsd -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s
-// RUN: %clang -### -target x86_64-unknown-netbsd -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s
-// RUN: %clang -### -target x86_64-unknown-openbsd -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s
-// RUN: %clang -### -target x86_64-unknown-dragonfly -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s
-// CHECK-NO-MATH-ERRNO: "-cc1"
-// CHECK-NO-MATH-ERRNO-NOT: "-fmath-errno"
-//
-// RUN: %clang -### -fno-math-errno -fassociative-math -freciprocal-math \
-// RUN:     -fno-signed-zeros -fno-trapping-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-UNSAFE-MATH %s
-// CHECK-UNSAFE-MATH: "-cc1"
-// CHECK-UNSAFE-MATH: "-menable-unsafe-fp-math"
-//
-// RUN: %clang -### -fno-fast-math -fno-math-errno -fassociative-math -freciprocal-math \
-// RUN:     -fno-signed-zeros -fno-trapping-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-FAST-MATH-UNSAFE-MATH %s
-// CHECK-NO-FAST-MATH-UNSAFE-MATH: "-cc1"
-// CHECK-NO-FAST-MATH-UNSAFE-MATH: "-menable-unsafe-fp-math"
-//
-// RUN: %clang -### -fno-fast-math -fno-math-errno -fassociative-math -freciprocal-math \
-// RUN:     -fno-fast-math -fno-signed-zeros -fno-trapping-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-UNSAFE-MATH-NO-FAST-MATH %s
-// CHECK-UNSAFE-MATH-NO-FAST-MATH: "-cc1"
-// CHECK-UNSAFE-MATH-NO-FAST-MATH-NOT: "-menable-unsafe-fp-math"
-//
-// Check that various umbrella flags also enable these frontend options.
-// RUN: %clang -### -ffast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-INFS %s
-// RUN: %clang -### -ffast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NANS %s
-// RUN: %clang -### -ffast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-UNSAFE-MATH %s
-// RUN: %clang -### -ffinite-math-only -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-INFS %s
-// RUN: %clang -### -ffinite-math-only -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NANS %s
-// RUN: %clang -### -funsafe-math-optimizations -fno-math-errno -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-UNSAFE-MATH %s
-//
-// One umbrella flag is *really* weird and also changes the semantics of the
-// program by adding a special preprocessor macro. Check that the frontend flag
-// modeling this semantic change is provided. Also check that the semantic
-// impact remains even if every optimization is disabled.
-// RUN: %clang -### -ffast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-FAST-MATH %s
-// RUN: %clang -### -fno-fast-math -ffast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-FAST-MATH %s
-// RUN: %clang -### -ffast-math -fno-finite-math-only \
-// RUN:     -fno-unsafe-math-optimizations -fmath-errno -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-FAST-MATH %s
-// CHECK-FAST-MATH: "-cc1"
-// CHECK-FAST-MATH: "-ffast-math"
-//
-// RUN: %clang -### -ffast-math -fno-fast-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-FAST-MATH %s
-// CHECK-NO-FAST-MATH: "-cc1"
-// CHECK-NO-FAST-MATH-NOT: "-ffast-math"
-//
-// Check various means of disabling these flags, including disabling them after
-// they've been enabled via an umbrella flag.
-// RUN: %clang -### -fno-honor-infinities -fhonor-infinities -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-INFS %s
-// RUN: %clang -### -ffinite-math-only -fhonor-infinities -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-INFS %s
-// RUN: %clang -### -ffinite-math-only -fno-finite-math-only -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-INFS %s
-// RUN: %clang -### -ffast-math -fhonor-infinities -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-INFS %s
-// RUN: %clang -### -ffast-math -fno-finite-math-only -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-INFS %s
-// CHECK-NO-NO-INFS: "-cc1"
-// CHECK-NO-NO-INFS-NOT: "-menable-no-infs"
-// CHECK-NO-NO-INFS: "-o"
-//
-// RUN: %clang -### -fno-honor-nans -fhonor-nans -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-NANS %s
-// RUN: %clang -### -ffinite-math-only -fhonor-nans -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-NANS %s
-// RUN: %clang -### -ffinite-math-only -fno-finite-math-only -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-NANS %s
-// RUN: %clang -### -ffast-math -fhonor-nans -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-NANS %s
-// RUN: %clang -### -ffast-math -fno-finite-math-only -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-NO-NANS %s
-// CHECK-NO-NO-NANS: "-cc1"
-// CHECK-NO-NO-NANS-NOT: "-menable-no-nans"
-// CHECK-NO-NO-NANS: "-o"
-//
-// RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \
-// RUN:     -fno-trapping-math -fno-associative-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \
-// RUN:     -fno-trapping-math -fno-reciprocal-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \
-// RUN:     -fno-trapping-math -fsigned-zeros -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -fassociative-math -freciprocal-math -fno-signed-zeros \
-// RUN:     -fno-trapping-math -ftrapping-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -funsafe-math-optimizations -fno-associative-math -c %s \
-// RUN:   2>&1 | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -funsafe-math-optimizations -fno-reciprocal-math -c %s \
-// RUN:   2>&1 | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -funsafe-math-optimizations -fsigned-zeros -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -funsafe-math-optimizations -ftrapping-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -funsafe-math-optimizations -fno-unsafe-math-optimizations \
-// RUN:     -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -ffast-math -fno-associative-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -ffast-math -fno-reciprocal-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -ffast-math -fsigned-zeros -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -ffast-math -ftrapping-math -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// RUN: %clang -### -ffast-math -fno-unsafe-math-optimizations -c %s 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NO-UNSAFE-MATH %s
-// CHECK-NO-UNSAFE-MATH: "-cc1"
-// CHECK-NO-UNSAFE-MATH-NOT: "-menable-unsafe-fp-math"
-// CHECK-NO-UNSAFE-MATH: "-o"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/fcomment-block-commands.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/fcomment-block-commands.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/fcomment-block-commands.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// Check that we pass -fcomment-block-commands to frontend.
-//
-// RUN: %clang -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ARG
-// RUN: %clang -c %s -fcomment-block-commands=Foo -### 2>&1 | FileCheck %s --check-prefix=CHECK-ARG
-//
-// CHECK-ARG: -fcomment-block-commands=Foo
-//
-// CHECK-NO-ARG-NOT: -fcomment-block-commands=

Modified: trunk/contrib/llvm/tools/clang/test/Driver/flags.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/flags.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/flags.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang -target i386-apple-darwin9 -### -S -msoft-float %s 2>&1 | FileCheck -check-prefix=TEST1 %s
-// TEST1: "-no-implicit-float"
-
-// RUN: %clang -target i386-apple-darwin9 -### -S -msoft-float -mno-soft-float %s 2>&1 | FileCheck -check-prefix=TEST2 %s
-// TEST2-NOT: "-no-implicit-float"
-
-// RUN: %clang -target i386-apple-darwin9 -### -S -mno-soft-float %s -msoft-float 2>&1 | FileCheck -check-prefix=TEST3 %s
-// TEST3: "-no-implicit-float"
-
-// RUN: %clang -target i386-apple-darwin9 -### -S -mno-implicit-float %s 2>&1 | FileCheck -check-prefix=TEST4 %s
-// TEST4: "-no-implicit-float"
-
-// RUN: %clang -target i386-apple-darwin9 -### -S -mno-implicit-float -mimplicit-float %s 2>&1 | FileCheck -check-prefix=TEST4A %s
-// TEST4A-NOT: "-no-implicit-float"
-
-// RUN: %clang -target i386-apple-darwin9 -### -S -mkernel %s 2>&1 | FileCheck -check-prefix=TEST5 %s
-// TEST5: "-no-implicit-float"
-
-// RUN: %clang -target i386-apple-darwin9 -### -S -mkernel -mno-soft-float %s 2>&1 | FileCheck -check-prefix=TEST6 %s
-// TEST6-NOT: "-no-implicit-float"
-
-// RUN: %clang -target armv7-apple-darwin10 -### -S -mno-implicit-float %s 2>&1 | FileCheck -check-prefix=TEST7 %s
-// TEST7: "-no-implicit-float"
-
-// RUN: %clang -target armv7-apple-darwin10 -### -S -mno-implicit-float -mimplicit-float %s 2>&1 | FileCheck -check-prefix=TEST8 %s
-// TEST8-NOT: "-no-implicit-float"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/fpack-struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/fpack-struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/fpack-struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang -fpack-struct -### %s 2> %t
-// RUN: FileCheck < %t %s
-// RUN: %clang -fpack-struct=8 -### %s 2> %t
-// RUN: FileCheck < %t %s --check-prefix=EQ
-
-// CHECK: "-cc1"
-// CHECK: "-fpack-struct=1"
-
-// CHECK-EQ: "-cc1"
-// CHECK-EQ: "-fpack-struct=8"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/fparse-all-comments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/fparse-all-comments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/fparse-all-comments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// Check that we pass -fparse-all-comments to frontend.
-//
-// RUN: %clang -c %s -fparse-all-comments -### 2>&1 | FileCheck %s --check-prefix=CHECK-ARG
-//
-// CHECK-ARG: -fparse-all-comments

Modified: trunk/contrib/llvm/tools/clang/test/Driver/frame-pointer-elim.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/frame-pointer-elim.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/frame-pointer-elim.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// For these next two tests when optimized we should omit the leaf frame
-// pointer, for unoptimized we should have a leaf frame pointer.
-// RUN: %clang -### -target i386-pc-linux-gnu -S -O1 %s 2>&1 | \
-// RUN:   FileCheck --check-prefix=LINUX-OPT %s
-// LINUX-OPT: "-momit-leaf-frame-pointer"
-
-// RUN: %clang -### -target i386-pc-linux-gnu -S %s 2>&1 | \
-// RUN:   FileCheck --check-prefix=LINUX %s
-// LINUX-NOT: "-momit-leaf-frame-pointer"
-
-// Darwin disables omitting the leaf frame pointer even under optimization
-// unless the command lines are given.
-// RUN: %clang -### -target i386-apple-darwin -S %s 2>&1 | \
-// RUN:   FileCheck --check-prefix=DARWIN %s
-// DARWIN: "-mdisable-fp-elim"
-
-// RUN: %clang -### -target i386-apple-darwin -S -O1 %s 2>&1 | \
-// RUN:   FileCheck --check-prefix=DARWIN-OPT %s
-// DARWIN-OPT-NOT: "-momit-leaf-frame-pointer"
-
-// RUN: %clang -### -target i386-darwin -S -fomit-frame-pointer %s 2>&1 | \
-// RUN:   FileCheck --check-prefix=OMIT_ALL %s
-// OMIT_ALL-NOT: "-mdisable-fp-elim"
-
-// RUN: %clang -### -target i386-darwin -S -momit-leaf-frame-pointer %s 2>&1 | \
-// RUN:   FileCheck --check-prefix=OMIT_LEAF %s
-// OMIT_LEAF: "-momit-leaf-frame-pointer"
-
-void f0() {}
-void f1() { f0(); }

Modified: trunk/contrib/llvm/tools/clang/test/Driver/frame-pointer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/frame-pointer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/frame-pointer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang -target i386-pc-linux -### -S -O0 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK0-32 %s
-// RUN: %clang -target i386-pc-linux -### -S -O1 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK1-32 %s
-// RUN: %clang -target i386-pc-linux -### -S -O2 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK2-32 %s
-// RUN: %clang -target i386-pc-linux -### -S -O3 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK3-32 %s
-// RUN: %clang -target i386-pc-linux -### -S -Os %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECKs-32 %s
-
-
-// RUN: %clang -target x86_64-pc-linux -### -S -O0 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK0-64 %s
-// RUN: %clang -target x86_64-pc-linux -### -S -O1 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK1-64 %s
-// RUN: %clang -target x86_64-pc-linux -### -S -O2 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK2-64 %s
-// RUN: %clang -target x86_64-pc-linux -### -S -O3 %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECK3-64 %s
-// RUN: %clang -target x86_64-pc-linux -### -S -Os %s -o %t.s 2>&1 | FileCheck -check-prefix=CHECKs-64 %s
-
-// CHECK0-32: -mdisable-fp-elim
-// CHECK1-32-NOT: -mdisable-fp-elim
-// CHECK2-32-NOT: -mdisable-fp-elim
-// CHECK3-32-NOT: -mdisable-fp-elim
-// CHECKs-32-NOT: -mdisable-fp-elim
-
-// CHECK0-64: -mdisable-fp-elim
-// CHECK1-64-NOT: -mdisable-fp-elim
-// CHECK2-64-NOT: -mdisable-fp-elim
-// CHECK3-64-NOT: -mdisable-fp-elim
-// CHECKs-64-NOT: -mdisable-fp-elim

Modified: trunk/contrib/llvm/tools/clang/test/Driver/freebsd-mips-as.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/freebsd-mips-as.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/freebsd-mips-as.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// Check passing options to the assembler for MIPS targets.
-//
-// RUN: %clang -target mips-unknown-freebsd -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EB-AS %s
-// MIPS32-EB-AS: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-// MIPS32-EB-AS-NOT: "-KPIC"
-//
-// RUN: %clang -target mips-unknown-freebsd -### \
-// RUN:   -no-integrated-as -fPIC -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EB-PIC %s
-// MIPS32-EB-PIC: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-// MIPS32-EB-PIC: "-KPIC"
-//
-// RUN: %clang -target mips-unknown-freebsd -### \
-// RUN:   -no-integrated-as -fpic -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EB-PIC-SMALL %s
-// MIPS32-EB-PIC-SMALL: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-// MIPS32-EB-PIC-SMALL: "-KPIC"
-//
-// RUN: %clang -target mips-unknown-freebsd -### \
-// RUN:   -no-integrated-as -fPIE -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EB-PIE %s
-// MIPS32-EB-PIE: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-// MIPS32-EB-PIE: "-KPIC"
-//
-// RUN: %clang -target mips-unknown-freebsd -### \
-// RUN:   -no-integrated-as -fpie -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EB-PIE-SMALL %s
-// MIPS32-EB-PIE-SMALL: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-// MIPS32-EB-PIE-SMALL: "-KPIC"
-//
-// RUN: %clang -target mipsel-unknown-freebsd -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-DEF-EL-AS %s
-// MIPS32-DEF-EL-AS: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EL"
-//
-// RUN: %clang -target mips64-unknown-freebsd -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS64-EB-AS %s
-// MIPS64-EB-AS: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EB"
-//
-// RUN: %clang -target mips64el-unknown-freebsd -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS64-DEF-EL-AS %s
-// MIPS64-DEF-EL-AS: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EL"
-//
-// RUN: %clang -target mips-unknown-freebsd -mabi=eabi -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-EABI %s
-// MIPS-EABI: as{{(.exe)?}}" "-march" "mips32" "-mabi" "eabi" "-EB"
-//
-// RUN: %clang -target mips64-unknown-freebsd -mabi=n32 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-N32 %s
-// MIPS-N32: as{{(.exe)?}}" "-march" "mips64" "-mabi" "n32" "-EB"
-//
-// RUN: %clang -target mipsel-unknown-freebsd -mabi=32 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EL-AS %s
-// MIPS32-EL-AS: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EL"
-//
-// RUN: %clang -target mips64el-unknown-freebsd -mabi=64 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS64-EL-AS %s
-// MIPS64-EL-AS: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EL"
-//
-// RUN: %clang -target mips-linux-freebsd -march=mips32r2 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-32R2 %s
-// MIPS-32R2: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB"
-//
-// RUN: %clang -target mips-unknown-freebsd -mips32 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ALIAS-32 %s
-// MIPS-ALIAS-32: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-//
-// RUN: %clang -target mips-unknown-freebsd -mips32r2 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ALIAS-32R2 %s
-// MIPS-ALIAS-32R2: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB"
-//
-// RUN: %clang -target mips-unknown-freebsd -mips64 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ALIAS-64 %s
-// MIPS-ALIAS-64: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EB"
-//
-// RUN: %clang -target mips-unknown-freebsd -mips64r2 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ALIAS-64R2 %s
-// MIPS-ALIAS-64R2: as{{(.exe)?}}" "-march" "mips64r2" "-mabi" "64" "-EB"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/freebsd.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/freebsd.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/freebsd.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,109 +0,0 @@
-// REQUIRES: ppc32-registered-target,ppc64-registered-target,mips-registered-target
-// RUN: %clang -no-canonical-prefixes \
-// RUN:   -target powerpc-pc-freebsd8 %s    \
-// RUN:   --sysroot=%S/Inputs/basic_freebsd_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-PPC %s
-// CHECK-PPC: clang{{.*}}" "-cc1" "-triple" "powerpc-pc-freebsd8"
-// CHECK-PPC: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-PPC: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" "-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "{{.*}}crtend.o" "{{.*}}crtn.o"
-//
-// RUN: %clang -no-canonical-prefixes \
-// RUN:   -target powerpc64-pc-freebsd8 %s                              \
-// RUN:   --sysroot=%S/Inputs/basic_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-PPC64 %s
-// CHECK-PPC64: clang{{.*}}" "-cc1" "-triple" "powerpc64-pc-freebsd8"
-// CHECK-PPC64: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-PPC64: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" "-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "{{.*}}crtend.o" "{{.*}}crtn.o"
-//
-//
-// Check that -m32 properly adjusts the toolchain flags.
-//
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd8 -m32 %s \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LIB32 %s
-// CHECK-LIB32: clang{{.*}}" "-cc1" "-triple" "i386-pc-freebsd8"
-// CHECK-LIB32: ld{{.*}}" {{.*}} "-m" "elf_i386_fbsd"
-//
-// RUN: %clang -target x86_64-pc-freebsd8 -m32 %s 2>&1 \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -print-search-dirs 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LIB32PATHS %s
-// CHECK-LIB32PATHS: libraries: ={{.*:?}}/usr/lib32
-//
-// Check that the new linker flags are passed to FreeBSD
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd8 -m32 %s \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LDFLAGS8 %s
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd9 -m32 %s \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LDFLAGS9 %s
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd10.0 -m32 %s \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LDFLAGS9 %s
-// CHECK-LDFLAGS8-NOT: --hash-style=both
-// CHECK-LDFLAGS8: --enable-new-dtags
-// CHECK-LDFLAGS9: --hash-style=both
-// CHECK-LDFLAGS9: --enable-new-dtags
-//
-// Check that we do not pass --hash-style=gnu and --hash-style=both to linker
-// and provide correct path to the dynamic linker for MIPS platforms.
-// Also verify that we tell the assembler to target the right ISA and ABI.
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-unknown-freebsd10.0 \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS %s
-// CHECK-MIPS: "{{[^" ]*}}ld{{[^" ]*}}"
-// CHECK-MIPS: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1"
-// CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-unknown-freebsd10.0 \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPSEL %s
-// CHECK-MIPSEL: "{{[^" ]*}}ld{{[^" ]*}}"
-// CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1"
-// CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64-unknown-freebsd10.0 \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS64 %s
-// CHECK-MIPS64: "{{[^" ]*}}ld{{[^" ]*}}"
-// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1"
-// CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-unknown-freebsd10.0 \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL %s
-// CHECK-MIPS64EL: "{{[^" ]*}}ld{{[^" ]*}}"
-// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/libexec/ld-elf.so.1"
-// CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
-
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd8 -static %s \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-STATIC %s
-// CHECK-STATIC: crt1.o
-// CHECK-STATIC: crtbeginT.o
-
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd8 -shared %s \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-SHARED %s
-// CHECK-SHARED: crti.o
-// CHECK-SHARED: crtbeginS.o
-
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd8 -pie %s \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-PIE %s
-// CHECK-PIE: pie
-// CHECK-PIE: Scrt1.o
-// CHECK-PIE: crtbeginS.o
-
-// RUN: %clang -no-canonical-prefixes -target x86_64-pc-freebsd8 %s \
-// RUN:   --sysroot=%S/Inputs/multiarch_freebsd64_tree -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NORMAL %s
-// CHECK-NORMAL: crt1.o
-// CHECK-NORMAL: crtbegin.o
-
-// RUN: %clang %s -### -o %t.o -target arm-unknown-freebsd10.0 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-ARM %s
-// CHECK-ARM: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions"
-// CHECK-ARM: as{{.*}}" "-mfpu=softvfp"{{.*}}"-matpcs"
-
-// RUN: %clang %s -### -o %t.o -target arm-gnueabi-freebsd10.0 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-ARM-EABI %s
-// CHECK-ARM-EABI-NOT: clang{{.*}}" "-cc1"{{.*}}" "-fsjlj-exceptions"
-// CHECK-ARM-EABI: as{{.*}}" "-mfpu=softvfp" "-meabi=5"
-// CHECK-ARM-EABI-NOT: as{{.*}}" "-matpcs"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/fsanitize-blacklist.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/fsanitize-blacklist.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/fsanitize-blacklist.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// General blacklist usage.
-// RUN: %clang -fsanitize=address -fsanitize-blacklist=%s %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-BLACKLIST
-// CHECK-BLACKLIST: -fsanitize-blacklist
-
-// Ignore -fsanitize-blacklist flag if there is no -fsanitize flag.
-// RUN: %clang -fsanitize-blacklist=%s %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE
-// CHECK-NO-SANITIZE-NOT: -fsanitize-blacklist
-
-// Flag -fno-sanitize-blacklist wins if it is specified later.
-// RUN: %clang -fsanitize=address -fsanitize-blacklist=%s -fno-sanitize-blacklist %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-BLACKLIST
-// CHECK-NO-BLACKLIST-NOT: -fsanitize-blacklist
-
-// Driver barks on unexisting blacklist files.
-// RUN: %clang -fno-sanitize-blacklist -fsanitize-blacklist=unexisting.txt %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SUCH-FILE
-// CHECK-NO-SUCH-FILE: error: no such file or directory: 'unexisting.txt'
-
-// PR12920
-// REQUIRES: clang-driver

Modified: trunk/contrib/llvm/tools/clang/test/Driver/fsanitize.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/fsanitize.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/fsanitize.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-// RUN: %clang -target x86_64-linux-gnu -fcatch-undefined-behavior %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-TRAP
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-TRAP
-// RUN: %clang -target x86_64-linux-gnu -fsanitize-undefined-trap-on-error -fsanitize=undefined-trap %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-TRAP
-// CHECK-UNDEFINED-TRAP: "-fsanitize={{((signed-integer-overflow|integer-divide-by-zero|float-divide-by-zero|shift|unreachable|return|vla-bound|alignment|null|object-size|float-cast-overflow|bounds|enum|bool),?){14}"}}
-// CHECK-UNDEFINED-TRAP: "-fsanitize-undefined-trap-on-error"
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED
-// CHECK-UNDEFINED: "-fsanitize={{((signed-integer-overflow|integer-divide-by-zero|float-divide-by-zero|shift|unreachable|return|vla-bound|alignment|null|vptr|object-size|float-cast-overflow|bounds|enum|bool),?){15}"}}
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=integer %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-INTEGER
-// CHECK-INTEGER: "-fsanitize={{((signed-integer-overflow|unsigned-integer-overflow|integer-divide-by-zero|shift),?){4}"}}
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=thread,undefined -fno-thread-sanitizer -fno-sanitize=float-cast-overflow,vptr,bool,enum %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PARTIAL-UNDEFINED
-// CHECK-PARTIAL-UNDEFINED: "-fsanitize={{((signed-integer-overflow|integer-divide-by-zero|float-divide-by-zero|shift|unreachable|return|vla-bound|alignment|null|object-size|bounds),?){11}"}}
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address-full %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-FULL
-// CHECK-ASAN-FULL: "-fsanitize={{((address|init-order|use-after-return|use-after-scope),?){4}"}}
-
-// RUN: %clang -target x86_64-linux-gnu -fno-sanitize=init-order -fsanitize=address %s -### 2>&1 |  FileCheck %s --check-prefix=CHECK-ASAN-IMPLIED-INIT-ORDER
-// CHECK-ASAN-IMPLIED-INIT-ORDER: "-fsanitize={{((address|init-order),?){2}"}}
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fno-sanitize=init-order %s -### 2>&1 |  FileCheck %s --check-prefix=CHECK-ASAN-NO-IMPLIED-INIT-ORDER
-// CHECK-ASAN-NO-IMPLIED-INIT-ORDER-NOT: init-order
-
-// RUN: %clang -target x86_64-linux-gnu -fcatch-undefined-behavior -fno-sanitize-undefined-trap-on-error %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-NO-TRAP-ERROR
-// CHECK-UNDEFINED-NO-TRAP-ERROR: '-fcatch-undefined-behavior' not allowed with '-fno-sanitize-undefined-trap-on-error'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=vptr -fcatch-undefined-behavior %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-VPTR-UNDEF-ERROR
-// CHECK-VPTR-UNDEF-ERROR: '-fsanitize=vptr' not allowed with '-fcatch-undefined-behavior'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined -fsanitize-undefined-trap-on-error %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-TRAP-ON-ERROR-UNDEF
-// CHECK-UNDEFINED-TRAP-ON-ERROR-UNDEF: '-fsanitize=undefined' not allowed with '-fsanitize-undefined-trap-on-error'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=vptr -fsanitize-undefined-trap-on-error %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-UNDEFINED-TRAP-ON-ERROR-VPTR
-// CHECK-UNDEFINED-TRAP-ON-ERROR-VPTR: '-fsanitize=vptr' not allowed with '-fsanitize-undefined-trap-on-error'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=vptr -fno-rtti %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-VPTR-NO-RTTI
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined -fno-rtti %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-VPTR-NO-RTTI
-// CHECK-VPTR-NO-RTTI: '-fsanitize=vptr' not allowed with '-fno-rtti'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address,thread -fno-rtti %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANA-SANT
-// CHECK-SANA-SANT: '-fsanitize=address' not allowed with '-fsanitize=thread'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address,memory -pie -fno-rtti %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANA-SANM
-// CHECK-SANA-SANM: '-fsanitize=address' not allowed with '-fsanitize=memory'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=thread,memory -pie -fno-rtti %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANT-SANM
-// CHECK-SANT-SANM: '-fsanitize=thread' not allowed with '-fsanitize=memory'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory,thread -pie -fno-rtti %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANM-SANT
-// CHECK-SANM-SANT: '-fsanitize=thread' not allowed with '-fsanitize=memory'
-
-// RUN: %clang -target x86_64-linux-gnu -faddress-sanitizer -fthread-sanitizer -fno-rtti %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-TSAN
-// CHECK-ASAN-TSAN: '-faddress-sanitizer' not allowed with '-fthread-sanitizer'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=init-order %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ONLY-EXTRA-ASAN
-// CHECK-ONLY-EXTRA-ASAN: '-fsanitize=init-order' is ignored in absence of '-fsanitize=address'
-
-// RUN: %clang -target x86_64-linux-gnu -Wno-unused-sanitize-argument -fsanitize=init-order %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-WNO-UNUSED-SANITIZE-ARGUMENT
-// CHECK-WNO-UNUSED-SANITIZE-ARGUMENT-NOT: '-fsanitize=init-order' is ignored in absence of '-fsanitize=address'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address,init-order -fno-sanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NOWARN-ONLY-EXTRA-ASAN
-// CHECK-NOWARN-ONLY-EXTRA-ASAN-NOT: is ignored in absence of '-fsanitize=address'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize-memory-track-origins -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ONLY-TRACK-ORIGINS
-// CHECK-ONLY-TRACK-ORIGINS: warning: argument unused during compilation: '-fsanitize-memory-track-origins'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-EXTRA-TRACK-ORIGINS
-// CHECK-NO-EXTRA-TRACK-ORIGINS-NOT: "-fsanitize-memory-track-origins"
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize-address-zero-base-shadow -pie %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ONLY-ASAN-ZERO-BASE-SHADOW
-// CHECK-ONLY-ASAN-ZERO-BASE-SHADOW: warning: argument unused during compilation: '-fsanitize-address-zero-base-shadow'
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize=alignment -fsanitize=vptr -fno-sanitize=vptr %s -### 2>&1
-// OK
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -pie %s -### 2>&1
-// OK
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-memory-track-origins -pie %s -### 2>&1
-// OK
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=vptr -fno-sanitize=vptr -fsanitize=undefined,address %s -### 2>&1
-// OK
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-zero-base-shadow -pie %s -### 2>&1
-// OK
-
-// RUN: %clang -target x86_64-linux-gnu -fcatch-undefined-behavior -fthread-sanitizer -fno-thread-sanitizer -faddress-sanitizer -fno-address-sanitizer -fbounds-checking -### %s 2>&1 | FileCheck %s --check-prefix=CHECK-DEPRECATED
-// CHECK-DEPRECATED: argument '-fcatch-undefined-behavior' is deprecated, use '-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error' instead
-// CHECK-DEPRECATED: argument '-fthread-sanitizer' is deprecated, use '-fsanitize=thread' instead
-// CHECK-DEPRECATED: argument '-fno-thread-sanitizer' is deprecated, use '-fno-sanitize=thread' instead
-// CHECK-DEPRECATED: argument '-faddress-sanitizer' is deprecated, use '-fsanitize=address' instead
-// CHECK-DEPRECATED: argument '-fno-address-sanitizer' is deprecated, use '-fno-sanitize=address' instead
-// CHECK-DEPRECATED: argument '-fbounds-checking' is deprecated, use '-fsanitize=bounds' instead
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=thread %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-NO-PIE
-// CHECK-TSAN-NO-PIE: "-mrelocation-model" "pic" "-pic-level" "2" "-pie-level" "2"
-// CHECK-TSAN-NO-PIE: "-pie"
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-MSAN-NO-PIE
-// CHECK-MSAN-NO-PIE: "-mrelocation-model" "pic" "-pic-level" "2" "-pie-level" "2"
-// CHECK-MSAN-NO-PIE: "-pie"
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-zero-base-shadow %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-ZERO-BASE-SHADOW-NO-PIE
-// CHECK-ASAN-ZERO-BASE-SHADOW-NO-PIE: "-mrelocation-model" "pic" "-pic-level" "2" "-pie-level" "2"
-// CHECK-ASAN-ZERO-BASE-SHADOW-NO-PIE: "-pie"
-
-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-zero-base-shadow -fno-sanitize-address-zero-base-shadow %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-ZERO-BASE-SHADOW-CANCEL
-// CHECK-ASAN-ZERO-BASE-SHADOW-CANCEL-NOT: "-mrelocation-model" "pic" "-pic-level" "2" "-pie-level" "2"
-// CHECK-ASAN-ZERO-BASE-SHADOW-CANCEL-NOT: "-pie"
-
-// RUN: %clang -target arm-linux-androideabi -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ANDROID-ASAN-NO-PIE
-// CHECK-ANDROID-ASAN-NO-PIE: "-mrelocation-model" "pic" "-pic-level" "2" "-pie-level" "2"
-// CHECK-ANDROID-ASAN-NO-PIE: "-pie"
-
-// RUN: %clang -target arm-linux-androideabi -fsanitize=address -fsanitize-address-zero-base-shadow %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ANDROID-ASAN-ZERO-BASE
-// CHECK-ANDROID-ASAN-ZERO-BASE-NOT: argument unused during compilation
-
-// RUN: %clang -target arm-linux-androideabi -fsanitize=address -fno-sanitize-address-zero-base-shadow %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ANDROID-ASAN-NO-ZERO-BASE
-// CHECK-ANDROID-ASAN-NO-ZERO-BASE: '-fno-sanitize-address-zero-base-shadow' not allowed with '-fsanitize=address'
-
-// RUN: %clang -target x86_64-linux-gnu %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-RECOVER
-// RUN: %clang -target x86_64-linux-gnu %s -fsanitize-recover -### 2>&1 | FileCheck %s --check-prefix=CHECK-RECOVER
-// RUN: %clang -target x86_64-linux-gnu %s -fno-sanitize-recover -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-RECOVER
-// RUN: %clang -target x86_64-linux-gnu %s -fno-sanitize-recover -fsanitize-recover -### 2>&1 | FileCheck %s --check-prefix=CHECK-RECOVER
-// RUN: %clang -target x86_64-linux-gnu %s -fsanitize-recover -fno-sanitize-recover -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-RECOVER
-// CHECK-RECOVER-NOT: sanitize-recover
-// CHECK-NO-RECOVER: "-fno-sanitize-recover"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/gcc-toolchain.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/gcc-toolchain.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/gcc-toolchain.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// Test that gcc-toolchain option is working correctly
-//
-// RUN: %clangxx -no-canonical-prefixes %s -### -o %t 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     -gcc-toolchain %S/Inputs/ubuntu_11.04_multiarch_tree/usr \
-// RUN:   | FileCheck %s
-//
-// Test for header search toolchain detection.
-// CHECK: "-internal-isystem"
-// CHECK: "[[TOOLCHAIN:[^"]+]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5"
-// CHECK: "-internal-isystem"
-// CHECK: "[[TOOLCHAIN]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5/i686-linux-gnu"
-// CHECK: "-internal-isystem"
-// CHECK: "[[TOOLCHAIN]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5/backward"
-// CHECK: "-internal-isystem" "/usr/local/include"
-//
-// Test for linker toolchain detection. Note that only the '-L' flags will use
-// the same precise formatting of the path as the '-internal-system' flags
-// above, so we just blanket wildcard match the 'crtbegin.o'.
-// CHECK: "{{[^"]*}}ld{{(.exe)?}}"
-// CHECK: "{{[^"]*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/crtbegin.o"
-// CHECK: "-L[[TOOLCHAIN]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
-// CHECK: "-L[[TOOLCHAIN]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."

Modified: trunk/contrib/llvm/tools/clang/test/Driver/gcc_forward.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/gcc_forward.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/gcc_forward.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Check that we don't try to forward -Xclang or -mlinker-version to GCC.
-//
-// RUN: %clang -target powerpc-unknown-unknown \
-// RUN:   -c %s \
-// RUN:   -Xclang foo-bar \
-// RUN:   -mlinker-version=10 -### 2> %t
-// RUN: FileCheck < %t %s
-//
-// CHECK: gcc{{.*}}"
-// CHECK-NOT: "-mlinker-version=10"
-// CHECK-NOT: "-Xclang"
-// CHECK-NOT: "foo-bar"
-// CHECK: gcc_forward

Modified: trunk/contrib/llvm/tools/clang/test/Driver/gnu-runtime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/gnu-runtime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/gnu-runtime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang -target i386-apple-darwin10 -### -fsyntax-only -fgnu-runtime %s 2>&1 | FileCheck %s
-// RUN: %clang -target i386-apple-darwin10 -### -x objective-c++ -fsyntax-only -fgnu-runtime %s 2>&1 | FileCheck %s
-// CHECK: -fobjc-runtime=gcc
-// CHECK-NOT: fragile

Modified: trunk/contrib/llvm/tools/clang/test/Driver/gold-lto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/gold-lto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/gold-lto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: touch %t.o
-//
-// RUN: %clang -target x86_64-unknown-linux -### %t.o -flto 2>&1 \
-// RUN:     -Wl,-plugin-opt=foo \
-// RUN:     | FileCheck %s --check-prefix=CHECK-X86-64-BASIC
-// CHECK-X86-64-BASIC: "-plugin" "{{.*}}/LLVMgold.so"
-// CHECK-X86-64-BASIC: "-plugin-opt=foo"
-//
-// RUN: %clang -target x86_64-unknown-linux -### %t.o -flto 2>&1 \
-// RUN:     -march=corei7 -Wl,-plugin-opt=foo \
-// RUN:     | FileCheck %s --check-prefix=CHECK-X86-64-COREI7
-// CHECK-X86-64-COREI7: "-plugin" "{{.*}}/LLVMgold.so"
-// CHECK-X86-64-COREI7: "-plugin-opt=mcpu=corei7"
-// CHECK-X86-64-COREI7: "-plugin-opt=foo"
-//
-// RUN: %clang -target arm-unknown-linux -### %t.o -flto 2>&1 \
-// RUN:     -march=armv7a -Wl,-plugin-opt=foo \
-// RUN:     | FileCheck %s --check-prefix=CHECK-ARM-V7A
-// CHECK-ARM-V7A: "-plugin" "{{.*}}/LLVMgold.so"
-// CHECK-ARM-V7A: "-plugin-opt=mcpu=cortex-a8"
-// CHECK-ARM-V7A: "-plugin-opt=foo"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/hexagon-toolchain-elf.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/hexagon-toolchain-elf.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/hexagon-toolchain-elf.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,564 +0,0 @@
-// REQUIRES: hexagon-registered-target
-
-// -----------------------------------------------------------------------------
-// Test standard include paths
-// -----------------------------------------------------------------------------
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK001 %s
-// CHECK001: "-cc1" {{.*}} "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK001:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK001:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK001-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK002 %s
-// CHECK002: "-cc1" {{.*}} "-internal-isystem" "[[INSTALL_DIR:.*]]/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0"
-// CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK002-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// -----------------------------------------------------------------------------
-// Test -nostdinc, -nostdlibinc, -nostdinc++
-// -----------------------------------------------------------------------------
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdinc \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK003 %s
-// CHECK003: "-cc1"
-// CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK003-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdlibinc \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK004 %s
-// CHECK004: "-cc1"
-// CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK004-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdlibinc \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK005 %s
-// CHECK005: "-cc1"
-// CHECK005-NOT: "-internal-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0"
-// CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK005-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdinc++ \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK006 %s
-// CHECK006: "-cc1"
-// CHECK006-NOT: "-internal-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0"
-// CHECK006-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// -----------------------------------------------------------------------------
-// Test -march=<archname> -mcpu=<archname> -mv<number>
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -march=hexagonv3 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK007 %s
-// CHECK007: "-cc1" {{.*}} "-target-cpu" "hexagonv3"
-// CHECK007-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"{{.*}} "-march=v3"
-// CHECK007-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-ld"{{.*}} "-mv3"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -mcpu=hexagonv5 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK008 %s
-// CHECK008: "-cc1" {{.*}} "-target-cpu" "hexagonv5"
-// CHECK008-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"{{.*}} "-march=v5"
-// CHECK008-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-ld"{{.*}} "-mv5"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -mv2 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK009 %s
-// CHECK009: "-cc1" {{.*}} "-target-cpu" "hexagonv2"
-// CHECK009-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"{{.*}} "-march=v2"
-// CHECK009-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-ld"{{.*}} "-mv2"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK010 %s
-// CHECK010: "-cc1" {{.*}} "-target-cpu" "hexagonv4"
-// CHECK010-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"{{.*}} "-march=v4"
-// CHECK010-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-ld"{{.*}} "-mv4"
-
-// RUN: %clang -march=hexagonv2 -target hexagon-unknown-elf \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
-// RUN: %clang -mcpu=hexagonv2  -target hexagon-unknown-elf \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
-// RUN: %clang -mv2             -target hexagon-unknown-elf \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
-// CHECK-UNKNOWN-V2: error: unknown target CPU 'hexagonv2'
-
-// RUN: %clang -march=hexagonv3 -target hexagon-unknown-elf \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
-// RUN: %clang -mcpu=hexagonv3  -target hexagon-unknown-elf \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
-// RUN: %clang -mv3             -target hexagon-unknown-elf \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
-// CHECK-UNKNOWN-V3: error: unknown target CPU 'hexagonv3'
-
-// -----------------------------------------------------------------------------
-// Test Linker related args
-// -----------------------------------------------------------------------------
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Defaults for C
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK011 %s
-// CHECK011: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK011-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK011-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK011-NOT: "-static"
-// CHECK011-NOT: "-shared"
-// CHECK011: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK011: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK011: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK011: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK011: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK011: "-L{{.*}}/lib/gcc"
-// CHECK011: "-L{{.*}}/hexagon/lib/v4"
-// CHECK011: "-L{{.*}}/hexagon/lib"
-// CHECK011: "{{[^"]+}}.o"
-// CHECK011: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK011: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Defaults for C++
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK012 %s
-// CHECK012: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK012-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK012-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK012-NOT: "-static"
-// CHECK012-NOT: "-shared"
-// CHECK012: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK012: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK012: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK012: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK012: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK012: "-L{{.*}}/lib/gcc"
-// CHECK012: "-L{{.*}}/hexagon/lib/v4"
-// CHECK012: "-L{{.*}}/hexagon/lib"
-// CHECK012: "{{[^"]+}}.o"
-// CHECK012: "-lstdc++" "-lm"
-// CHECK012: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK012: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Additional Libraries (-L)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -Lone -L two -L three \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK013 %s
-// CHECK013: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK013-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK013-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK013: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK013: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK013: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK013: "-Lone" "-Ltwo" "-Lthree"
-// CHECK013: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK013: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK013: "-L{{.*}}/lib/gcc"
-// CHECK013: "-L{{.*}}/hexagon/lib/v4"
-// CHECK013: "-L{{.*}}/hexagon/lib"
-// CHECK013: "{{[^"]+}}.o"
-// CHECK013: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK013: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// -static, -shared
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -static \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK014 %s
-// CHECK014: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK014-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK014-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK014: "-static"
-// CHECK014: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK014: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK014: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK014: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK014: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK014: "-L{{.*}}/lib/gcc"
-// CHECK014: "-L{{.*}}/hexagon/lib/v4"
-// CHECK014: "-L{{.*}}/hexagon/lib"
-// CHECK014: "{{[^"]+}}.o"
-// CHECK014: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK014: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -shared \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK015 %s
-// CHECK015: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK015-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK015-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK015: "-shared" "-call_shared"
-// CHECK015-NOT: crt0_standalone.o
-// CHECK015-NOT: crt0.o
-// CHECK015: "{{.*}}/hexagon/lib/v4/G0/initS.o"
-// CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4/G0"
-// CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/G0"
-// CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK015: "-L{{.*}}/lib/gcc"
-// CHECK015: "-L{{.*}}/hexagon/lib/v4/G0"
-// CHECK015: "-L{{.*}}/hexagon/lib/G0"
-// CHECK015: "-L{{.*}}/hexagon/lib/v4"
-// CHECK015: "-L{{.*}}/hexagon/lib"
-// CHECK015: "{{[^"]+}}.o"
-// CHECK015: "--start-group"
-// CHECK015-NOT: "-lstandalone"
-// CHECK015-NOT: "-lc"
-// CHECK015: "-lgcc"
-// CHECK015: "--end-group"
-// CHECK015: "{{.*}}/hexagon/lib/v4/G0/finiS.o"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -shared \
-// RUN:   -static \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK016 %s
-// CHECK016: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK016-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK016-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK016: "-shared" "-call_shared" "-static"
-// CHECK016-NOT: crt0_standalone.o
-// CHECK016-NOT: crt0.o
-// CHECK016: "{{.*}}/hexagon/lib/v4/G0/init.o"
-// CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4/G0"
-// CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/G0"
-// CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK016: "-L{{.*}}/lib/gcc"
-// CHECK016: "-L{{.*}}/hexagon/lib/v4/G0"
-// CHECK016: "-L{{.*}}/hexagon/lib/G0"
-// CHECK016: "-L{{.*}}/hexagon/lib/v4"
-// CHECK016: "-L{{.*}}/hexagon/lib"
-// CHECK016: "{{[^"]+}}.o"
-// CHECK016: "--start-group"
-// CHECK016-NOT: "-lstandalone"
-// CHECK016-NOT: "-lc"
-// CHECK016: "-lgcc"
-// CHECK016: "--end-group"
-// CHECK016: "{{.*}}/hexagon/lib/v4/G0/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// -nostdlib, -nostartfiles, -nodefaultlibs
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdlib \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK017 %s
-// CHECK017: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK017-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK017-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK017-NOT: crt0_standalone.o
-// CHECK017-NOT: crt0.o
-// CHECK017-NOT: init.o
-// CHECK017: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK017: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK017: "-L{{.*}}/lib/gcc"
-// CHECK017: "-L{{.*}}/hexagon/lib/v4"
-// CHECK017: "-L{{.*}}/hexagon/lib"
-// CHECK017: "{{[^"]+}}.o"
-// CHECK017-NOT: "-lstdc++"
-// CHECK017-NOT: "-lm"
-// CHECK017-NOT: "--start-group"
-// CHECK017-NOT: "-lstandalone"
-// CHECK017-NOT: "-lc"
-// CHECK017-NOT: "-lgcc"
-// CHECK017-NOT: "--end-group"
-// CHECK017-NOT: fini.o
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostartfiles \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK018 %s
-// CHECK018: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK018-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK018-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK018-NOT: crt0_standalone.o
-// CHECK018-NOT: crt0.o
-// CHECK018-NOT: init.o
-// CHECK018: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK018: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK018: "-L{{.*}}/lib/gcc"
-// CHECK018: "-L{{.*}}/hexagon/lib/v4"
-// CHECK018: "-L{{.*}}/hexagon/lib"
-// CHECK018: "{{[^"]+}}.o"
-// CHECK018: "-lstdc++"
-// CHECK018: "-lm"
-// CHECK018: "--start-group"
-// CHECK018: "-lstandalone"
-// CHECK018: "-lc"
-// CHECK018: "-lgcc"
-// CHECK018: "--end-group"
-// CHECK018-NOT: fini.o
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nodefaultlibs \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK019 %s
-// CHECK019: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK019-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK019-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK019: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK019: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK019: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK019: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK019: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK019: "-L{{.*}}/lib/gcc"
-// CHECK019: "-L{{.*}}/hexagon/lib/v4"
-// CHECK019: "-L{{.*}}/hexagon/lib"
-// CHECK019: "{{[^"]+}}.o"
-// CHECK019-NOT: "-lstdc++"
-// CHECK019-NOT: "-lm"
-// CHECK019-NOT: "--start-group"
-// CHECK019-NOT: "-lstandalone"
-// CHECK019-NOT: "-lc"
-// CHECK019-NOT: "-lgcc"
-// CHECK019-NOT: "--end-group"
-// CHECK019: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// -moslib
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -moslib=first -moslib=second \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK020 %s
-// CHECK020: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK020-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK020-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK020-NOT: "-static"
-// CHECK020-NOT: "-shared"
-// CHECK020-NOT: crt0_standalone.o
-// CHECK020: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK020: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK020: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK020: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK020: "-L{{.*}}/lib/gcc"
-// CHECK020: "-L{{.*}}/hexagon/lib/v4"
-// CHECK020: "-L{{.*}}/hexagon/lib"
-// CHECK020: "{{[^"]+}}.o"
-// CHECK020: "--start-group"
-// CHECK020: "-lfirst" "-lsecond"
-// CHECK020-NOT: "-lstandalone"
-// CHECK020: "-lc" "-lgcc" "--end-group"
-// CHECK020: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -moslib=first -moslib=second -moslib=standalone\
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK021 %s
-// CHECK021: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK021-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK021-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK021-NOT: "-static"
-// CHECK021-NOT: "-shared"
-// CHECK021: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK021: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK021: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK021: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK021: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK021: "-L{{.*}}/lib/gcc"
-// CHECK021: "-L{{.*}}/hexagon/lib/v4"
-// CHECK021: "-L{{.*}}/hexagon/lib"
-// CHECK021: "{{[^"]+}}.o"
-// CHECK021: "--start-group"
-// CHECK021: "-lfirst" "-lsecond"
-// CHECK021: "-lstandalone"
-// CHECK021: "-lc" "-lgcc" "--end-group"
-// CHECK021: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Other args to pass to linker
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -s \
-// RUN:   -Tbss 0xdead -Tdata 0xbeef -Ttext 0xcafe \
-// RUN:   -t \
-// RUN:   -e start_here \
-// RUN:   -uFoo -undefined Bar \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK022 %s
-// CHECK022: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK022-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK022-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK022: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK022: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK022: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK022: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK022: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK022: "-L{{.*}}/lib/gcc"
-// CHECK022: "-L{{.*}}/hexagon/lib/v4"
-// CHECK022: "-L{{.*}}/hexagon/lib"
-// CHECK022: "-Tbss" "0xdead" "-Tdata" "0xbeef" "-Ttext" "0xcafe"
-// CHECK022: "-s"
-// CHECK022: "-t"
-// CHECK022: "-u" "Foo" "-undefined" "Bar"
-// CHECK022: "{{[^"]+}}.o"
-// CHECK022: "-lstdc++" "-lm"
-// CHECK022: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK022: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// -----------------------------------------------------------------------------
-// pic, small data threshold
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK023 %s
-// CHECK023:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK023:        "-mrelocation-model" "static"
-// CHECK023-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK023-NOT:    "-G{{[0-9]+}}"
-// CHECK023-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK023-NOT:    "-G{{[0-9]+}}"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -fpic \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK024 %s
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -fPIC \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK024 %s
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -fPIC \
-// RUN:   -msmall_data_threshold=8 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK024 %s
-// CHECK024:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK024-NOT:    "-mrelocation-model" "static"
-// CHECK024:        "-pic-level" "{{[12]}}"
-// CHECK024:        "-mllvm" "-hexagon-small-data-threshold=0"
-// CHECK024-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK024:        "-G0"
-// CHECK024-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK024:        "-G0"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -G=8 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK025 %s
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -G 8 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK025 %s
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -msmall-data-threshold=8 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK025 %s
-// CHECK025:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK025:        "-mrelocation-model" "static"
-// CHECK025:        "-mllvm" "-hexagon-small-data-threshold=8"
-// CHECK025-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK025:        "-G8"
-// CHECK025-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK025:        "-G8"
-
-// -----------------------------------------------------------------------------
-// pie
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -pie \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK026 %s
-// CHECK026:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK026-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK026-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK026:        "-pie"
-
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -pie -shared \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK027 %s
-// CHECK027:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK027-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK027-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK027-NOT:    "-pie"
-
-// -----------------------------------------------------------------------------
-// Misc Defaults
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK028 %s
-// CHECK028:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK028:        "-mqdsp6-compat"
-// CHECK028:        "-Wreturn-type"
-// CHECK028-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK028-NEXT: "{{.*}}/bin/hexagon-ld"
-
-// -----------------------------------------------------------------------------
-// Test Assembler related args
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-elf     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -gdwarf-2 \
-// RUN:   -Wa,--noexecstack,--trap \
-// RUN:   -Xassembler --keep-locals \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK029 %s
-// CHECK029:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK029-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK029:      "--noexecstack" "--trap" "--keep-locals"
-// CHECK029-NEXT: "{{.*}}/bin/hexagon-ld"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/hexagon-toolchain.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/hexagon-toolchain.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/hexagon-toolchain.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,564 +0,0 @@
-// REQUIRES: hexagon-registered-target
-
-// -----------------------------------------------------------------------------
-// Test standard include paths
-// -----------------------------------------------------------------------------
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK001 %s
-// CHECK001: "-cc1" {{.*}} "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK001:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK001:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK001-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK002 %s
-// CHECK002: "-cc1" {{.*}} "-internal-isystem" "[[INSTALL_DIR:.*]]/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0"
-// CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK002-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// -----------------------------------------------------------------------------
-// Test -nostdinc, -nostdlibinc, -nostdinc++
-// -----------------------------------------------------------------------------
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdinc \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK003 %s
-// CHECK003: "-cc1"
-// CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK003-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdlibinc \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK004 %s
-// CHECK004: "-cc1"
-// CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK004-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdlibinc \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK005 %s
-// CHECK005: "-cc1"
-// CHECK005-NOT: "-internal-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0"
-// CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
-// CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
-// CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
-// CHECK005-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdinc++ \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK006 %s
-// CHECK006: "-cc1"
-// CHECK006-NOT: "-internal-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0"
-// CHECK006-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"
-
-// -----------------------------------------------------------------------------
-// Test -march=<archname> -mcpu=<archname> -mv<number>
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -march=hexagonv3 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK007 %s
-// CHECK007: "-cc1" {{.*}} "-target-cpu" "hexagonv3"
-// CHECK007-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"{{.*}} "-march=v3"
-// CHECK007-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-ld"{{.*}} "-mv3"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -mcpu=hexagonv5 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK008 %s
-// CHECK008: "-cc1" {{.*}} "-target-cpu" "hexagonv5"
-// CHECK008-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"{{.*}} "-march=v5"
-// CHECK008-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-ld"{{.*}} "-mv5"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -mv2 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK009 %s
-// CHECK009: "-cc1" {{.*}} "-target-cpu" "hexagonv2"
-// CHECK009-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"{{.*}} "-march=v2"
-// CHECK009-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-ld"{{.*}} "-mv2"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK010 %s
-// CHECK010: "-cc1" {{.*}} "-target-cpu" "hexagonv4"
-// CHECK010-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-as"{{.*}} "-march=v4"
-// CHECK010-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin/hexagon-ld"{{.*}} "-mv4"
-
-// RUN: %clang -march=hexagonv2 -target hexagon-unknown-linux \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
-// RUN: %clang -mcpu=hexagonv2  -target hexagon-unknown-linux \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
-// RUN: %clang -mv2             -target hexagon-unknown-linux \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
-// CHECK-UNKNOWN-V2: error: unknown target CPU 'hexagonv2'
-
-// RUN: %clang -march=hexagonv3 -target hexagon-unknown-linux \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
-// RUN: %clang -mcpu=hexagonv3  -target hexagon-unknown-linux \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
-// RUN: %clang -mv3             -target hexagon-unknown-linux \
-// RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
-// CHECK-UNKNOWN-V3: error: unknown target CPU 'hexagonv3'
-
-// -----------------------------------------------------------------------------
-// Test Linker related args
-// -----------------------------------------------------------------------------
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Defaults for C
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK011 %s
-// CHECK011: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK011-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK011-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK011-NOT: "-static"
-// CHECK011-NOT: "-shared"
-// CHECK011: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK011: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK011: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK011: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK011: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK011: "-L{{.*}}/lib/gcc"
-// CHECK011: "-L{{.*}}/hexagon/lib/v4"
-// CHECK011: "-L{{.*}}/hexagon/lib"
-// CHECK011: "{{[^"]+}}.o"
-// CHECK011: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK011: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Defaults for C++
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK012 %s
-// CHECK012: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK012-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK012-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK012-NOT: "-static"
-// CHECK012-NOT: "-shared"
-// CHECK012: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK012: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK012: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK012: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK012: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK012: "-L{{.*}}/lib/gcc"
-// CHECK012: "-L{{.*}}/hexagon/lib/v4"
-// CHECK012: "-L{{.*}}/hexagon/lib"
-// CHECK012: "{{[^"]+}}.o"
-// CHECK012: "-lstdc++" "-lm"
-// CHECK012: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK012: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Additional Libraries (-L)
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -Lone -L two -L three \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK013 %s
-// CHECK013: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK013-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK013-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK013: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK013: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK013: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK013: "-Lone" "-Ltwo" "-Lthree"
-// CHECK013: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK013: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK013: "-L{{.*}}/lib/gcc"
-// CHECK013: "-L{{.*}}/hexagon/lib/v4"
-// CHECK013: "-L{{.*}}/hexagon/lib"
-// CHECK013: "{{[^"]+}}.o"
-// CHECK013: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK013: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// -static, -shared
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -static \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK014 %s
-// CHECK014: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK014-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK014-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK014: "-static"
-// CHECK014: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK014: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK014: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK014: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK014: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK014: "-L{{.*}}/lib/gcc"
-// CHECK014: "-L{{.*}}/hexagon/lib/v4"
-// CHECK014: "-L{{.*}}/hexagon/lib"
-// CHECK014: "{{[^"]+}}.o"
-// CHECK014: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK014: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -shared \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK015 %s
-// CHECK015: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK015-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK015-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK015: "-shared" "-call_shared"
-// CHECK015-NOT: crt0_standalone.o
-// CHECK015-NOT: crt0.o
-// CHECK015: "{{.*}}/hexagon/lib/v4/G0/initS.o"
-// CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4/G0"
-// CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/G0"
-// CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK015: "-L{{.*}}/lib/gcc"
-// CHECK015: "-L{{.*}}/hexagon/lib/v4/G0"
-// CHECK015: "-L{{.*}}/hexagon/lib/G0"
-// CHECK015: "-L{{.*}}/hexagon/lib/v4"
-// CHECK015: "-L{{.*}}/hexagon/lib"
-// CHECK015: "{{[^"]+}}.o"
-// CHECK015: "--start-group"
-// CHECK015-NOT: "-lstandalone"
-// CHECK015-NOT: "-lc"
-// CHECK015: "-lgcc"
-// CHECK015: "--end-group"
-// CHECK015: "{{.*}}/hexagon/lib/v4/G0/finiS.o"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -shared \
-// RUN:   -static \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK016 %s
-// CHECK016: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK016-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK016-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK016: "-shared" "-call_shared" "-static"
-// CHECK016-NOT: crt0_standalone.o
-// CHECK016-NOT: crt0.o
-// CHECK016: "{{.*}}/hexagon/lib/v4/G0/init.o"
-// CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4/G0"
-// CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/G0"
-// CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK016: "-L{{.*}}/lib/gcc"
-// CHECK016: "-L{{.*}}/hexagon/lib/v4/G0"
-// CHECK016: "-L{{.*}}/hexagon/lib/G0"
-// CHECK016: "-L{{.*}}/hexagon/lib/v4"
-// CHECK016: "-L{{.*}}/hexagon/lib"
-// CHECK016: "{{[^"]+}}.o"
-// CHECK016: "--start-group"
-// CHECK016-NOT: "-lstandalone"
-// CHECK016-NOT: "-lc"
-// CHECK016: "-lgcc"
-// CHECK016: "--end-group"
-// CHECK016: "{{.*}}/hexagon/lib/v4/G0/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// -nostdlib, -nostartfiles, -nodefaultlibs
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostdlib \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK017 %s
-// CHECK017: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK017-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK017-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK017-NOT: crt0_standalone.o
-// CHECK017-NOT: crt0.o
-// CHECK017-NOT: init.o
-// CHECK017: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK017: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK017: "-L{{.*}}/lib/gcc"
-// CHECK017: "-L{{.*}}/hexagon/lib/v4"
-// CHECK017: "-L{{.*}}/hexagon/lib"
-// CHECK017: "{{[^"]+}}.o"
-// CHECK017-NOT: "-lstdc++"
-// CHECK017-NOT: "-lm"
-// CHECK017-NOT: "--start-group"
-// CHECK017-NOT: "-lstandalone"
-// CHECK017-NOT: "-lc"
-// CHECK017-NOT: "-lgcc"
-// CHECK017-NOT: "--end-group"
-// CHECK017-NOT: fini.o
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nostartfiles \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK018 %s
-// CHECK018: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK018-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK018-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK018-NOT: crt0_standalone.o
-// CHECK018-NOT: crt0.o
-// CHECK018-NOT: init.o
-// CHECK018: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK018: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK018: "-L{{.*}}/lib/gcc"
-// CHECK018: "-L{{.*}}/hexagon/lib/v4"
-// CHECK018: "-L{{.*}}/hexagon/lib"
-// CHECK018: "{{[^"]+}}.o"
-// CHECK018: "-lstdc++"
-// CHECK018: "-lm"
-// CHECK018: "--start-group"
-// CHECK018: "-lstandalone"
-// CHECK018: "-lc"
-// CHECK018: "-lgcc"
-// CHECK018: "--end-group"
-// CHECK018-NOT: fini.o
-
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -nodefaultlibs \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK019 %s
-// CHECK019: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK019-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK019-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK019: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK019: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK019: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK019: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK019: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK019: "-L{{.*}}/lib/gcc"
-// CHECK019: "-L{{.*}}/hexagon/lib/v4"
-// CHECK019: "-L{{.*}}/hexagon/lib"
-// CHECK019: "{{[^"]+}}.o"
-// CHECK019-NOT: "-lstdc++"
-// CHECK019-NOT: "-lm"
-// CHECK019-NOT: "--start-group"
-// CHECK019-NOT: "-lstandalone"
-// CHECK019-NOT: "-lc"
-// CHECK019-NOT: "-lgcc"
-// CHECK019-NOT: "--end-group"
-// CHECK019: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// -moslib
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -moslib=first -moslib=second \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK020 %s
-// CHECK020: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK020-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK020-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK020-NOT: "-static"
-// CHECK020-NOT: "-shared"
-// CHECK020-NOT: crt0_standalone.o
-// CHECK020: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK020: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK020: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK020: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK020: "-L{{.*}}/lib/gcc"
-// CHECK020: "-L{{.*}}/hexagon/lib/v4"
-// CHECK020: "-L{{.*}}/hexagon/lib"
-// CHECK020: "{{[^"]+}}.o"
-// CHECK020: "--start-group"
-// CHECK020: "-lfirst" "-lsecond"
-// CHECK020-NOT: "-lstandalone"
-// CHECK020: "-lc" "-lgcc" "--end-group"
-// CHECK020: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -moslib=first -moslib=second -moslib=standalone\
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK021 %s
-// CHECK021: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK021-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK021-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK021-NOT: "-static"
-// CHECK021-NOT: "-shared"
-// CHECK021: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK021: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK021: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK021: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK021: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK021: "-L{{.*}}/lib/gcc"
-// CHECK021: "-L{{.*}}/hexagon/lib/v4"
-// CHECK021: "-L{{.*}}/hexagon/lib"
-// CHECK021: "{{[^"]+}}.o"
-// CHECK021: "--start-group"
-// CHECK021: "-lfirst" "-lsecond"
-// CHECK021: "-lstandalone"
-// CHECK021: "-lc" "-lgcc" "--end-group"
-// CHECK021: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// Other args to pass to linker
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// RUN: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -s \
-// RUN:   -Tbss 0xdead -Tdata 0xbeef -Ttext 0xcafe \
-// RUN:   -t \
-// RUN:   -e start_here \
-// RUN:   -uFoo -undefined Bar \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK022 %s
-// CHECK022: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK022-NEXT: "{{.*}}/bin/hexagon-as"{{.*}}
-// CHECK022-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK022: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
-// CHECK022: "{{.*}}/hexagon/lib/v4/crt0.o"
-// CHECK022: "{{.*}}/hexagon/lib/v4/init.o"
-// CHECK022: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
-// CHECK022: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
-// CHECK022: "-L{{.*}}/lib/gcc"
-// CHECK022: "-L{{.*}}/hexagon/lib/v4"
-// CHECK022: "-L{{.*}}/hexagon/lib"
-// CHECK022: "-Tbss" "0xdead" "-Tdata" "0xbeef" "-Ttext" "0xcafe"
-// CHECK022: "-s"
-// CHECK022: "-t"
-// CHECK022: "-u" "Foo" "-undefined" "Bar"
-// CHECK022: "{{[^"]+}}.o"
-// CHECK022: "-lstdc++" "-lm"
-// CHECK022: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
-// CHECK022: "{{.*}}/hexagon/lib/v4/fini.o"
-
-// -----------------------------------------------------------------------------
-// pic, small data threshold
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK023 %s
-// CHECK023:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK023:        "-mrelocation-model" "static"
-// CHECK023-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK023-NOT:    "-G{{[0-9]+}}"
-// CHECK023-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK023-NOT:    "-G{{[0-9]+}}"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -fpic \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK024 %s
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -fPIC \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK024 %s
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -fPIC \
-// RUN:   -msmall_data_threshold=8 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK024 %s
-// CHECK024:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK024-NOT:    "-mrelocation-model" "static"
-// CHECK024:        "-pic-level" "{{[12]}}"
-// CHECK024:        "-mllvm" "-hexagon-small-data-threshold=0"
-// CHECK024-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK024:        "-G0"
-// CHECK024-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK024:        "-G0"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -G=8 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK025 %s
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -G 8 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK025 %s
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -msmall-data-threshold=8 \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK025 %s
-// CHECK025:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK025:        "-mrelocation-model" "static"
-// CHECK025:        "-mllvm" "-hexagon-small-data-threshold=8"
-// CHECK025-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK025:        "-G8"
-// CHECK025-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK025:        "-G8"
-
-// -----------------------------------------------------------------------------
-// pie
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -pie \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK026 %s
-// CHECK026:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK026-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK026-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK026:        "-pie"
-
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -pie -shared \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK027 %s
-// CHECK027:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK027-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK027-NEXT: "{{.*}}/bin/hexagon-ld"
-// CHECK027-NOT:    "-pie"
-
-// -----------------------------------------------------------------------------
-// Misc Defaults
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK028 %s
-// CHECK028:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK028:        "-mqdsp6-compat"
-// CHECK028:        "-Wreturn-type"
-// CHECK028-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK028-NEXT: "{{.*}}/bin/hexagon-ld"
-
-// -----------------------------------------------------------------------------
-// Test Assembler related args
-// -----------------------------------------------------------------------------
-// RUN: %clang -### -target hexagon-unknown-linux     \
-// RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
-// RUN:   -gdwarf-2 \
-// RUN:   -Wa,--noexecstack,--trap \
-// RUN:   -Xassembler --keep-locals \
-// RUN:   %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=CHECK029 %s
-// CHECK029:      "{{.*}}clang{{.*}}" "-cc1"
-// CHECK029-NEXT: "{{.*}}/bin/hexagon-as"
-// CHECK029:      "--noexecstack" "--trap" "--keep-locals"
-// CHECK029-NEXT: "{{.*}}/bin/hexagon-ld"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/immediate-options.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/immediate-options.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/immediate-options.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang --help | grep isystem
-// RUN: %clang --help | not grep ast-dump
-// RUN: %clang --help | not grep ccc-cxx
-// RUN: %clang --help-hidden | grep ccc-cxx
-// RUN: %clang -dumpversion
-// RUN: %clang -print-search-dirs

Modified: trunk/contrib/llvm/tools/clang/test/Driver/index-header-map.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/index-header-map.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/index-header-map.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang -I%S/Before -index-header-map -I%S/Index -I%S/After %s -### 2>> %t.log
-// RUN: FileCheck %s < %t.log
-
-// CHECK: {{-I.*Before.*-index-header-map.*-I.*Index.*-I.*After}}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/inhibit-downstream-commands.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/inhibit-downstream-commands.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/inhibit-downstream-commands.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -no-integrated-as %s 2>&1 | FileCheck %s
-// CHECK: error: unknown type name 'invalid'
-// CHECK-NOT: clang: error: assembler command failed 
-// CHECK-NOT: clang: error: linker command failed
-// XFAIL: win32
-invalid C code!

Modified: trunk/contrib/llvm/tools/clang/test/Driver/integrated-as.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/integrated-as.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/integrated-as.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang -### -c -save-temps -integrated-as %s 2>&1 | FileCheck %s
-
-// gcc is invoked instead of clang-cc1as with gcc-driver -save-temps.
-// REQUIRES: clang-driver
-
-// CHECK: cc1as
-// CHECK: -relax-all

Modified: trunk/contrib/llvm/tools/clang/test/Driver/integrated-as.s
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/integrated-as.s	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/integrated-as.s	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -### -c -integrated-as %s 2>&1 | FileCheck %s
-
-// REQUIRES: clang-driver
-
-// CHECK: cc1as
-// CHECK-NOT: -relax-all

Modified: trunk/contrib/llvm/tools/clang/test/Driver/invalid-o-level.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/invalid-o-level.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/invalid-o-level.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: not %clang_cc1 %s -O900 2> %t.log
-// RUN: FileCheck %s -input-file=%t.log
-
-// CHECK: invalid value '900' in '-O900'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/ios-simulator-arcruntime.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/ios-simulator-arcruntime.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/ios-simulator-arcruntime.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -### -x objective-c -target i386-apple-darwin10 -arch i386 -mios-simulator-version-min=4.2.1 -fobjc-arc -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS1 %s
-// RUN: %clang -### -x objective-c -target i386-apple-darwin10 -arch i386 -mios-simulator-version-min=5.0.0 -fobjc-arc -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS2 %s
-// 
-
-// CHECK-OPTIONS1: i386-apple-ios4.2.1
-// CHECK-OPTIONS1: -fobjc-runtime=ios-4.2.1
-// CHECK-OPTIONS2: i386-apple-ios5.0.0
-// CHECK-OPTIONS2: -fobjc-runtime=ios-5.0.0

Modified: trunk/contrib/llvm/tools/clang/test/Driver/le32-unknown-nacl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/le32-unknown-nacl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/le32-unknown-nacl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,146 +0,0 @@
-// RUN: %clang -target le32-unknown-nacl -ccc-echo %s -emit-llvm-only -c 2>&1 | FileCheck %s -check-prefix=ECHO
-// RUN: %clang -target le32-unknown-nacl %s -emit-llvm -S -c -o - | FileCheck %s
-// RUN: %clang -target le32-unknown-nacl %s -emit-llvm -S -c -pthread -o - | FileCheck %s -check-prefix=THREADS
-
-// ECHO: {{.*}} -cc1 {{.*}}le32-unknown-nacl.c
-
-// Check platform defines
-#include <stdarg.h>
-#include <stddef.h>
-
-extern "C" {
-
-// CHECK: @align_c = global i32 1
-int align_c = __alignof(char);
-
-// CHECK: @align_s = global i32 2
-int align_s = __alignof(short);
-
-// CHECK: @align_i = global i32 4
-int align_i = __alignof(int);
-
-// CHECK: @align_l = global i32 4
-int align_l = __alignof(long);
-
-// CHECK: @align_ll = global i32 8
-int align_ll = __alignof(long long);
-
-// CHECK: @align_p = global i32 4
-int align_p = __alignof(void*);
-
-// CHECK: @align_f = global i32 4
-int align_f = __alignof(float);
-
-// CHECK: @align_d = global i32 8
-int align_d = __alignof(double);
-
-// CHECK: @align_ld = global i32 8
-int align_ld = __alignof(long double);
-
-// CHECK: @align_vl = global i32 4
-int align_vl = __alignof(va_list);
-
-// CHECK: __LITTLE_ENDIAN__defined
-#ifdef __LITTLE_ENDIAN__
-void __LITTLE_ENDIAN__defined() {}
-#endif
-
-// CHECK: __native_client__defined
-#ifdef __native_client__
-void __native_client__defined() {}
-#endif
-
-// CHECK: __le32__defined
-#ifdef __le32__
-void __le32__defined() {}
-#endif
-
-// CHECK: __pnacl__defined
-#ifdef __pnacl__
-void __pnacl__defined() {}
-#endif
-
-// CHECK: unixdefined
-#ifdef unix
-void unixdefined() {}
-#endif
-
-// CHECK: __ELF__defined
-#ifdef __ELF__
-void __ELF__defined() {}
-#endif
-
-// CHECK: _GNU_SOURCEdefined
-#ifdef _GNU_SOURCE
-void _GNU_SOURCEdefined() {}
-#endif
-
-// THREADS: _REENTRANTdefined
-// CHECK: _REENTRANTundefined
-#ifdef _REENTRANT
-void _REENTRANTdefined() {}
-#else
-void _REENTRANTundefined() {}
-#endif
-
-// Check types
-
-// CHECK: signext i8 @check_char()
-char check_char() { return 0; }
-
-// CHECK: signext i16 @check_short()
-short check_short() { return 0; }
-
-// CHECK: i32 @check_int()
-int check_int() { return 0; }
-
-// CHECK: i32 @check_long()
-long check_long() { return 0; }
-
-// CHECK: i64 @check_longlong()
-long long check_longlong() { return 0; }
-
-// CHECK: zeroext i8 @check_uchar()
-unsigned char check_uchar() { return 0; }
-
-// CHECK: zeroext i16 @check_ushort()
-unsigned short check_ushort() { return 0; }
-
-// CHECK: i32 @check_uint()
-unsigned int check_uint() { return 0; }
-
-// CHECK: i32 @check_ulong()
-unsigned long check_ulong() { return 0; }
-
-// CHECK: i64 @check_ulonglong()
-unsigned long long check_ulonglong() { return 0; }
-
-// CHECK: i32 @check_size_t()
-size_t check_size_t() { return 0; }
-
-// CHECK: float @check_float()
-float check_float() { return 0; }
-
-// CHECK: double @check_double()
-double check_double() { return 0; }
-
-// CHECK: double @check_longdouble()
-long double check_longdouble() { return 0; }
-
-}
-
-template<int> void Switch();
-template<> void Switch<4>();
-template<> void Switch<8>();
-template<> void Switch<16>();
-
-void check_pointer_size() {
-  // CHECK: SwitchILi4
-  Switch<sizeof(void*)>();
-
-  // CHECK: SwitchILi8
-  Switch<sizeof(long long)>();
-
-  // CHECK: SwitchILi16
-  Switch<sizeof(va_list)>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/linker-opts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/linker-opts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/linker-opts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: env LIBRARY_PATH=%T/test1 %clang -x c %s -### 2>&1 | FileCheck %s
-// CHECK: "-L{{.*}}/test1"
-
-// GCC driver is used as linker on cygming. It should be aware of LIBRARY_PATH.
-// XFAIL: win32
-// REQUIRES: clang-driver

Modified: trunk/contrib/llvm/tools/clang/test/Driver/linux-as.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/linux-as.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/linux-as.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// Check passing options to the assembler for ARM targets.
-//
-// RUN: %clang -target arm-linux -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM %s
-// CHECK-ARM: as{{(.exe)?}}" "-mfloat-abi=soft"
-//
-// RUN: %clang -target arm-linux -mcpu=cortex-a8 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-MCPU %s
-// CHECK-ARM-MCPU: as{{(.exe)?}}" "-mfloat-abi=soft" "-mcpu=cortex-a8"
-//
-// RUN: %clang -target arm-linux -mfpu=neon -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-MFPU %s
-// CHECK-ARM-MFPU: as{{(.exe)?}}" "-mfloat-abi=soft" "-mfpu=neon"
-//
-// RUN: %clang -target arm-linux -march=armv7-a -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-MARCH %s
-// CHECK-ARM-MARCH: as{{(.exe)?}}" "-mfloat-abi=soft" "-march=armv7-a"
-//
-// RUN: %clang -target arm-linux -mcpu=cortex-a8 -mfpu=neon -march=armv7-a -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-ALL %s
-// CHECK-ARM-ALL: as{{(.exe)?}}" "-mfloat-abi=soft" "-march=armv7-a" "-mcpu=cortex-a8" "-mfpu=neon"
-//
-// RUN: %clang -target armv7-linux -mcpu=cortex-a8 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-TARGET %s
-// CHECK-ARM-TARGET: as{{(.exe)?}}" "-mfpu=neon" "-mfloat-abi=soft" "-mcpu=cortex-a8"
-//
-// RUN: %clang -target arm-linux -mfloat-abi=hard -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-MFLOAT-ABI %s
-// CHECK-ARM-MFLOAT-ABI: as{{(.exe)?}}" "-mfloat-abi=hard"
-//
-// RUN: %clang -target arm-linux-androideabi -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-ANDROID %s
-// CHECK-ARM-ANDROID: as{{(.exe)?}}" "-mfloat-abi=soft"
-//
-// RUN: %clang -target arm-linux-androideabi -march=armv7-a -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-ANDROID-SOFTFP %s
-// CHECK-ARM-ANDROID-SOFTFP: as{{(.exe)?}}" "-mfloat-abi=softfp" "-march=armv7-a"
-//
-// RUN: %clang -target arm-linux-eabi -mhard-float -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=ARM-HARDFP %s
-// CHECK-ARM-HARDFP: as{{(.exe)?}}" "-mfloat-abi=hard"
-//
-// RUN: %clang -target ppc-linux -mcpu=invalid-cpu -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=PPC-NO-MCPU %s
-// CHECK-PPC-NO-MCPU-NOT: as{{.*}} "-mcpu=invalid-cpu"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/linux-header-search.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/linux-header-search.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/linux-header-search.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// General tests that the header search paths detected by the driver and passed
-// to CC1 are sane.
-//
-// Test a very broken version of multiarch that shipped in Ubuntu 11.04.
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
-// CHECK-UBUNTU-11-04: "{{.*}}clang{{.*}}" "-cc1"
-// CHECK-UBUNTU-11-04: "-isysroot" "[[SYSROOT:[^"]+]]"
-// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5"
-// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5/i686-linux-gnu"
-// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../../include/c++/4.5/backward"
-// CHECK-UBUNTU-11-04: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
-// CHECK-UBUNTU-11-04: "-internal-isystem" "{{.*}}/lib{{(64|32)?}}/clang/{{[0-9]\.[0-9]}}/include"
-// CHECK-UBUNTU-11-04: "-internal-externc-isystem" "[[SYSROOT]]/include"
-// CHECK-UBUNTU-11-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
-// RUN:     -target x86_64-unknown-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/ubuntu_13.04_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-13-04 %s
-// CHECK-UBUNTU-13-04: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
-// CHECK-UBUNTU-13-04: "-isysroot" "[[SYSROOT:[^"]+]]"
-// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7"
-// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/backward"
-// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/x86_64-linux-gnu/c++/4.7"
-// CHECK-UBUNTU-13-04: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
-// CHECK-UBUNTU-13-04: "-internal-isystem" "{{.*}}/lib{{(64|32)?}}/clang/{{[0-9]\.[0-9]}}/include"
-// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/x86_64-linux-gnu"
-// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/include"
-// CHECK-UBUNTU-13-04: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
-//
-// Test Ubuntu/Debian's new version of multiarch, with -m32.
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
-// RUN:     -target x86_64-unknown-linux-gnu -m32 \
-// RUN:     --sysroot=%S/Inputs/ubuntu_13.04_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-13-04-M32 %s
-// CHECK-UBUNTU-13-04-M32: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
-// CHECK-UBUNTU-13-04-M32: "-triple" "i386-unknown-linux-gnu"
-// CHECK-UBUNTU-13-04-M32: "-isysroot" "[[SYSROOT:[^"]+]]"
-// CHECK-UBUNTU-13-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7"
-// CHECK-UBUNTU-13-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/x86_64-linux-gnu/32"
-// CHECK-UBUNTU-13-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/backward"
-// CHECK-UBUNTU-13-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/x86_64-linux-gnu/c++/4.7/32"
-//
-// Thoroughly exercise the Debian multiarch environment.
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
-// RUN:     -target i686-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
-// CHECK-DEBIAN-X86: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
-// CHECK-DEBIAN-X86: "-isysroot" "[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../../include/c++/4.5"
-// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../../include/c++/4.5/i686-linux-gnu"
-// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../../include/c++/4.5/backward"
-// CHECK-DEBIAN-X86: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
-// CHECK-DEBIAN-X86: "-internal-isystem" "{{.*}}/lib{{(64|32)?}}/clang/{{[0-9]\.[0-9]}}/include"
-// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/i386-linux-gnu"
-// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/include"
-// CHECK-DEBIAN-X86: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
-// RUN:     -target x86_64-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
-// CHECK-DEBIAN-X86-64: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
-// CHECK-DEBIAN-X86-64: "-isysroot" "[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../../include/c++/4.5"
-// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../../include/c++/4.5/x86_64-linux-gnu"
-// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../../include/c++/4.5/backward"
-// CHECK-DEBIAN-X86-64: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
-// CHECK-DEBIAN-X86-64: "-internal-isystem" "{{.*}}/lib{{(64|32)?}}/clang/{{[0-9]\.[0-9]}}/include"
-// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/x86_64-linux-gnu"
-// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/include"
-// CHECK-DEBIAN-X86-64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
-// RUN:     -target powerpc-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
-// CHECK-DEBIAN-PPC: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
-// CHECK-DEBIAN-PPC: "-isysroot" "[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../../include/c++/4.5"
-// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../../include/c++/4.5/powerpc-linux-gnu"
-// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../../include/c++/4.5/backward"
-// CHECK-DEBIAN-PPC: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
-// CHECK-DEBIAN-PPC: "-internal-isystem" "{{.*}}/lib{{(64|32)?}}/clang/{{[0-9]\.[0-9]}}/include"
-// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/powerpc-linux-gnu"
-// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/include"
-// CHECK-DEBIAN-PPC: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
-// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
-// RUN:     -target powerpc64-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
-// CHECK-DEBIAN-PPC64: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
-// CHECK-DEBIAN-PPC64: "-isysroot" "[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../../include/c++/4.5"
-// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../../include/c++/4.5/powerpc64-linux-gnu"
-// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../../include/c++/4.5/backward"
-// CHECK-DEBIAN-PPC64: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
-// CHECK-DEBIAN-PPC64: "-internal-isystem" "{{.*}}/lib{{(64|32)?}}/clang/{{[0-9]\.[0-9]}}/include"
-// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/powerpc64-linux-gnu"
-// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/include"
-// CHECK-DEBIAN-PPC64: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/linux-ld.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/linux-ld.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/linux-ld.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,669 +0,0 @@
-// General tests that ld invocations on Linux targets sane. Note that we use
-// sysroot to make these tests independent of the host system.
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-32 %s
-// CHECK-LD-32-NOT: warning:
-// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/crtbegin.o"
-// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
-// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
-// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
-// CHECK-LD-32: "-L[[SYSROOT]]/lib"
-// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-64 %s
-// CHECK-LD-64-NOT: warning:
-// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-LD-64: "--eh-frame-hdr"
-// CHECK-LD-64: "-m" "elf_x86_64"
-// CHECK-LD-64: "-dynamic-linker"
-// CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
-// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
-// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
-// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
-// CHECK-LD-64: "-L[[SYSROOT]]/lib"
-// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib"
-// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
-// CHECK-LD-64: "-lc"
-// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux \
-// RUN:     -static-libgcc \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s
-// CHECK-LD-64-STATIC-LIBGCC-NOT: warning:
-// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"
-// CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"
-// CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"
-// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
-// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
-// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
-// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
-// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"
-// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"
-// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
-// CHECK-LD-64-STATIC-LIBGCC: "-lc"
-// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux \
-// RUN:     -static \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
-// CHECK-LD-64-STATIC-NOT: warning:
-// CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-LD-64-STATIC-NOT: "--eh-frame-hdr"
-// CHECK-LD-64-STATIC: "-m" "elf_x86_64"
-// CHECK-LD-64-STATIC-NOT: "-dynamic-linker"
-// CHECK-LD-64-STATIC: "-static"
-// CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbeginT.o"
-// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
-// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
-// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
-// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"
-// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"
-// CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
-//
-// Check that flags can be combined. The -static dominates.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux \
-// RUN:     -static-libgcc -static \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -m32 \
-// RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-32-TO-32 %s
-// CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/crtbegin.o"
-// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
-// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32"
-// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32"
-// CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
-// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
-// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
-// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
-// CHECK-32-TO-32: "-L[[SYSROOT]]/lib"
-// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -m64 \
-// RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-32-TO-64 %s
-// CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64/crtbegin.o"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
-// CHECK-32-TO-64: "-L[[SYSROOT]]/lib"
-// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux -m64 \
-// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-64-TO-64 %s
-// CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
-// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
-// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
-// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
-// CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"
-// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
-// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
-// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
-// CHECK-64-TO-64: "-L[[SYSROOT]]/lib"
-// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux -m32 \
-// RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-64-TO-32 %s
-// CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32/crtbegin.o"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
-// CHECK-64-TO-32: "-L[[SYSROOT]]/lib"
-// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux -m32 \
-// RUN:     -gcc-toolchain %S/Inputs/multilib_64bit_linux_tree/usr \
-// RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s
-// CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32/crtbegin.o"
-// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
-// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"
-// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32"
-// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
-// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"
-// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -m32 \
-// RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s
-// CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-INSTALL-DIR-32: "{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0/crtbegin.o"
-// CHECK-INSTALL-DIR-32: "-L{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0"
-//
-// Check that with 64-bit builds, we don't actually use the install directory
-// as its version of GCC is lower than our sysrooted version.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux -m64 \
-// RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s
-// CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
-// CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
-//
-// Check that we support unusual patch version formats, including missing that
-// component.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -m32 \
-// RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s
-// CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7/crtbegin.o"
-// CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -m32 \
-// RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s
-// CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-GCC-VERSION2: "{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x/crtbegin.o"
-// CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -m32 \
-// RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s
-// CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-GCC-VERSION3: "{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5/crtbegin.o"
-// CHECK-GCC-VERSION3: "-L{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -m32 \
-// RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s
-// CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99/crtbegin.o"
-// CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99"
-//
-// Test a very broken version of multiarch that shipped in Ubuntu 11.04.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
-// CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/crtbegin.o"
-// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
-// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu"
-// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
-// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
-// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib"
-// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib"
-//
-// Check multi arch support on Ubuntu 12.04 LTS.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-unknown-linux-gnueabihf \
-// RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
-// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crt1.o"
-// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crti.o"
-// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtbegin.o"
-// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"
-// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf"
-// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"
-// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"
-// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.."
-// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtend.o"
-// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crtn.o"
-//
-// Check fedora 18 on arm.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target armv7-unknown-linux-gnueabihf \
-// RUN:     --sysroot=%S/Inputs/fedora_18_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-FEDORA-18-ARM-HF %s
-// CHECK-FEDORA-18-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../crt1.o"
-// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../crti.o"
-// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/crtbegin.o"
-// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2"
-// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../.."
-// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/lib"
-// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib"
-// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/crtend.o"
-// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../crtn.o"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-unknown-linux-gnueabi \
-// RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
-// CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crt1.o"
-// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crti.o"
-// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtbegin.o"
-// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
-// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
-// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
-// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
-// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
-// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtend.o"
-// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crtn.o"
-//
-// Test the setup that shipped in SUSE 10.3 on ppc64.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target powerpc64-suse-linux \
-// RUN:     --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
-// CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64/crtbegin.o"
-// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
-// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
-// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
-// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
-//
-// Check dynamic-linker for different archs
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-gnueabi \
-// RUN:   | FileCheck --check-prefix=CHECK-ARM %s
-// CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
-// CHECK-ARM: "-m" "armelf_linux_eabi"
-// CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
-//
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-gnueabihf \
-// RUN:   | FileCheck --check-prefix=CHECK-ARM-HF %s
-// CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
-// CHECK-ARM-HF: "-m" "armelf_linux_eabi"
-// CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
-//
-// Check that we do not pass --hash-style=gnu and --hash-style=both to linker
-// and provide correct path to the dynamic linker and emulation mode when build
-// for MIPS platforms.
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS %s
-// CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
-// CHECK-MIPS: "-m" "elf32btsmip"
-// CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
-// CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPSEL %s
-// CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
-// CHECK-MIPSEL: "-m" "elf32ltsmip"
-// CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
-// CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64-linux-gnu \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS64 %s
-// CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
-// CHECK-MIPS64: "-m" "elf64btsmip"
-// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
-// CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL %s
-// CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
-// CHECK-MIPS64EL: "-m" "elf64ltsmip"
-// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
-// CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64-linux-gnu -mabi=n32 \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
-// CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
-// CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
-// CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
-// CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
-// RUN: %clang %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu -mabi=n32 \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
-// CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
-// CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
-// CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
-// CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
-//
-// Thoroughly exercise the Debian multiarch environment.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i686-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
-// CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5/crtbegin.o"
-// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
-// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
-// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
-// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
-// CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5/crtbegin.o"
-// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
-// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
-// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
-// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target powerpc-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
-// CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5/crtbegin.o"
-// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
-// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
-// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
-// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target powerpc64-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
-// CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5/crtbegin.o"
-// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
-// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
-// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
-// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
-// CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/crtbegin.o"
-// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
-// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
-// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
-// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
-// CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/crtbegin.o"
-// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
-// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
-// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
-// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
-// CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64/crtbegin.o"
-// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
-// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
-// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
-// CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64/crtbegin.o"
-// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
-// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
-// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64-linux-gnu -mabi=n32 \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
-// CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32/crtbegin.o"
-// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
-// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
-// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu -mabi=n32 \
-// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
-// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32/crtbegin.o"
-// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
-// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
-// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
-// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
-//
-// Test linker invocation on Android.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-androideabi \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
-// CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-ANDROID: "{{.*}}/crtbegin_dynamic.o"
-// CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
-// CHECK-ANDROID-NOT: "gcc_s"
-// CHECK-ANDROID: "-lgcc"
-// CHECK-ANDROID: "-ldl"
-// CHECK-ANDROID-NOT: "gcc_s"
-// CHECK-ANDROID: "{{.*}}/crtend_android.o"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-androideabi \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -shared \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -shared \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -shared \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -shared \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
-// CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-ANDROID-SO: "-Bsymbolic"
-// CHECK-ANDROID-SO: "{{.*}}/crtbegin_so.o"
-// CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
-// CHECK-ANDROID-SO-NOT: "gcc_s"
-// CHECK-ANDROID-SO: "-lgcc"
-// CHECK-ANDROID-SO: "-ldl"
-// CHECK-ANDROID-SO-NOT: "gcc_s"
-// CHECK-ANDROID-SO: "{{.*}}/crtend_so.o"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-androideabi \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -static \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -static \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -static \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -static \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
-// CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-ANDROID-STATIC: "{{.*}}/crtbegin_static.o"
-// CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
-// CHECK-ANDROID-STATIC-NOT: "gcc_s"
-// CHECK-ANDROID-STATIC: "-lgcc"
-// CHECK-ANDROID-STATIC-NOT: "-ldl"
-// CHECK-ANDROID-STATIC-NOT: "gcc_s"
-// CHECK-ANDROID-STATIC: "{{.*}}/crtend_android.o"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-androideabi \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
-// RUN:     -pie \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -pie \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -pie \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-linux-android \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -pie \
-// RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
-// CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-ANDROID-PIE: "{{.*}}/crtbegin_dynamic.o"
-// CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
-// CHECK-ANDROID-PIE-NOT: "gcc_s"
-// CHECK-ANDROID-PIE: "-lgcc"
-// CHECK-ANDROID-PIE-NOT: "gcc_s"
-// CHECK-ANDROID-PIE: "{{.*}}/crtend_android.o"
-//
-// Check linker invocation on Debian 6 MIPS 32/64-bit.
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
-// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib/crt1.o"
-// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib/crti.o"
-// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/crtbegin.o"
-// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
-// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
-// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
-// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
-// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
-// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu \
-// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
-// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64/crt1.o"
-// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64/crti.o"
-// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64/crtbegin.o"
-// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
-// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
-// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
-// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
-// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
-// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu -mabi=n32 \
-// RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32/crt1.o"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32/crti.o"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32/crtbegin.o"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
-// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
-//
-// Test linker invocation for Freescale SDK (OpenEmbedded).
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target powerpc-fsl-linux \
-// RUN:     --sysroot=%S/Inputs/freescale_ppc_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC %s
-// CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-FSL-PPC: "-m" "elf32ppclinux"
-// CHECK-FSL-PPC: "{{.*}}/crt1.o"
-// CHECK-FSL-PPC: "{{.*}}/crtbegin.o"
-// CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target powerpc64-fsl-linux \
-// RUN:     --sysroot=%S/Inputs/freescale_ppc64_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
-// CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
-// CHECK-FSL-PPC64: "-m" "elf64ppc"
-// CHECK-FSL-PPC64: "{{.*}}/crt1.o"
-// CHECK-FSL-PPC64: "{{.*}}/crtbegin.o"
-// CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
-//
-// Check that crtfastmath.o is linked with -ffast-math.
-// RUN: %clang -target x86_64-unknown-linux -### %s \
-// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
-// RUN: %clang -target x86_64-unknown-linux -### %s -ffast-math \
-// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
-// RUN: %clang -target x86_64-unknown-linux -### %s -funsafe-math-optimizations\
-// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
-// RUN: %clang -target x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
-// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
-// We don't have crtfastmath.o in the i386 tree, use it to check that file
-// detection works.
-// RUN: %clang -target i386-unknown-linux -### %s -ffast-math \
-// RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
-// CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtfastmath.o
-// CHECK-NOCRTFASTMATH-NOT: crtfastmath.o

Modified: trunk/contrib/llvm/tools/clang/test/Driver/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = ['.c', '.cpp', '.h', '.m', '.mm', '.S', '.s']

Modified: trunk/contrib/llvm/tools/clang/test/Driver/lto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/lto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/lto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// -emit-llvm, -flto, and -O4 all cause a switch to llvm-bc object files.
-// RUN: %clang -ccc-print-phases -c %s -flto 2> %t.log
-// RUN: grep '2: compiler, {1}, lto-bc' %t.log
-// RUN: %clang -ccc-print-phases -c %s -O4 2> %t.log
-// RUN: grep '2: compiler, {1}, lto-bc' %t.log
-
-// and -emit-llvm doesn't alter pipeline (unfortunately?).
-// RUN: %clang -ccc-print-phases %s -emit-llvm 2> %t.log
-// RUN: grep '0: input, ".*lto.c", c' %t.log
-// RUN: grep '1: preprocessor, {0}, cpp-output' %t.log
-// RUN: grep '2: compiler, {1}, lto-bc' %t.log
-// RUN: grep '3: linker, {2}, image' %t.log
-
-// llvm-bc and llvm-ll outputs need to match regular suffixes
-// (unfortunately).
-// RUN: %clang %s -emit-llvm -save-temps -### 2> %t.log
-// RUN: grep '"-o" ".*lto\.i" "-x" "c" ".*lto\.c"' %t.log
-// RUN: grep '"-o" ".*lto\.o" .*".*lto\.i"' %t.log
-// RUN: grep '".*a.out" .*".*lto\.o"' %t.log
-
-// RUN: %clang %s -emit-llvm -S -### 2> %t.log
-// RUN: grep '"-o" ".*lto\.s" "-x" "c" ".*lto\.c"' %t.log
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/m_and_mm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/m_and_mm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/m_and_mm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang -### \
-// RUN:   -M -MM %s 2> %t
-// RUN: grep '"-sys-header-deps"' %t | count 0

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -M -MG -include nonexistent-preinclude.h %s > %t
-// RUN: fgrep nonexistent-preinclude.h %t
-// RUN: fgrep nonexistent-ppinclude.h %t
-
-#include "nonexistent-ppinclude.h"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mips-abi.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mips-abi.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mips-abi.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// Check passing Mips ABI options to the backend.
-//
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:        -mabi=32 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ABI-32 %s
-// MIPS-ABI-32: "-target-abi" "o32"
-//
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:        -mabi=o32 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ABI-O32 %s
-// MIPS-ABI-O32: "-target-abi" "o32"
-//
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:        -mabi=n32 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ABI-N32 %s
-// MIPS-ABI-N32: "-target-abi" "n32"
-//
-// RUN: %clang -target mips64-linux-gnu -### -c %s \
-// RUN:        -mabi=64 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ABI-64 %s
-// MIPS-ABI-64: "-target-abi" "n64"
-//
-// RUN: %clang -target mips64-linux-gnu -### -c %s \
-// RUN:        -mabi=n64 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ABI-N64 %s
-// MIPS-ABI-N64: "-target-abi" "n64"
-//
-// RUN: %clang -target mips64-linux-gnu -### -c %s \
-// RUN:        -mabi=o64 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ABI-O64 %s
-// MIPS-ABI-O64: "-target-abi" "o64"
-//
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:        -mabi=eabi 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ABI-EABI %s
-// MIPS-ABI-EABI: "-target-abi" "eabi"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mips-as.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mips-as.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mips-as.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,117 +0,0 @@
-// Check passing options to the assembler for MIPS targets.
-//
-// RUN: %clang -target mips-linux-gnu -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EB-AS %s
-// MIPS32-EB-AS: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-// MIPS32-EB-AS-NOT: "-KPIC"
-//
-// RUN: %clang -target mips-linux-gnu -### \
-// RUN:   -no-integrated-as -fPIC -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EB-PIC %s
-// MIPS32-EB-PIC: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-// MIPS32-EB-PIC: "-KPIC"
-//
-// RUN: %clang -target mipsel-linux-gnu -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-DEF-EL-AS %s
-// MIPS32-DEF-EL-AS: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EL"
-//
-// RUN: %clang -target mips64-linux-gnu -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS64-EB-AS %s
-// MIPS64-EB-AS: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EB"
-//
-// RUN: %clang -target mips64el-linux-gnu -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS64-DEF-EL-AS %s
-// MIPS64-DEF-EL-AS: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EL"
-//
-// RUN: %clang -target mips-linux-gnu -mabi=eabi -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-EABI %s
-// MIPS-EABI: as{{(.exe)?}}" "-march" "mips32" "-mabi" "eabi" "-EB"
-//
-// RUN: %clang -target mips64-linux-gnu -mabi=n32 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-N32 %s
-// MIPS-N32: as{{(.exe)?}}" "-march" "mips64" "-mabi" "n32" "-EB"
-//
-// RUN: %clang -target mipsel-linux-gnu -mabi=32 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS32-EL-AS %s
-// MIPS32-EL-AS: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EL"
-//
-// RUN: %clang -target mips64el-linux-gnu -mabi=64 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS64-EL-AS %s
-// MIPS64-EL-AS: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EL"
-//
-// RUN: %clang -target mips-linux-gnu -march=mips32r2 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-32R2 %s
-// MIPS-32R2: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB"
-//
-// RUN: %clang -target mips-linux-gnu -mips32 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ALIAS-32 %s
-// MIPS-ALIAS-32: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-//
-// RUN: %clang -target mips-linux-gnu -mips32r2 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ALIAS-32R2 %s
-// MIPS-ALIAS-32R2: as{{(.exe)?}}" "-march" "mips32r2" "-mabi" "32" "-EB"
-//
-// RUN: %clang -target mips-linux-gnu -mips64 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ALIAS-64 %s
-// MIPS-ALIAS-64: as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EB"
-//
-// RUN: %clang -target mips-linux-gnu -mips64r2 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-ALIAS-64R2 %s
-// MIPS-ALIAS-64R2: as{{(.exe)?}}" "-march" "mips64r2" "-mabi" "64" "-EB"
-//
-// RUN: %clang -target mips-linux-gnu -mno-mips16 -mips16 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-16 %s
-// MIPS-16: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB" "-mips16"
-//
-// RUN: %clang -target mips-linux-gnu -mips16 -mno-mips16 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-N16 %s
-// MIPS-N16: as{{(.exe)?}}"
-// MIPS-N16-NOT: "-mips16"
-//
-// RUN: %clang -target mips-linux-gnu -mno-micromips -mmicromips -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-MICRO %s
-// MIPS-MICRO: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB" "-mmicromips"
-//
-// RUN: %clang -target mips-linux-gnu -mmicromips -mno-micromips -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-NMICRO %s
-// MIPS-NMICRO: as{{(.exe)?}}"
-// MIPS-NMICRO-NOT: "-mmicromips"
-//
-// RUN: %clang -target mips-linux-gnu -mno-dsp -mdsp -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-DSP %s
-// MIPS-DSP: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB" "-mdsp"
-//
-// RUN: %clang -target mips-linux-gnu -mdsp -mno-dsp -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-NDSP %s
-// MIPS-NDSP: as{{(.exe)?}}"
-// MIPS-NDSP-NOT: "-mdsp"
-//
-// RUN: %clang -target mips-linux-gnu -mno-dspr2 -mdspr2 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-DSPR2 %s
-// MIPS-DSPR2: as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB" "-mdspr2"
-//
-// RUN: %clang -target mips-linux-gnu -mdspr2 -mno-dspr2 -### \
-// RUN:   -no-integrated-as -c %s 2>&1 \
-// RUN:   | FileCheck -check-prefix=MIPS-NDSPR2 %s
-// MIPS-NDSPR2: as{{(.exe)?}}"
-// MIPS-NDSPR2-NOT: "-mdspr2"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mips-cs-header-search.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mips-cs-header-search.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mips-cs-header-search.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,257 +0,0 @@
-// Check frontend invocations on Mentor Graphics MIPS toolchain.
-//
-// = Big-endian, hard float
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-HF-32 %s
-// CHECK-BE-HF-32: "-internal-isystem"
-// CHECK-BE-HF-32: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-BE-HF-32: "-internal-isystem"
-// CHECK-BE-HF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu"
-// CHECK-BE-HF-32: "-internal-isystem"
-// CHECK-BE-HF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-BE-HF-32: "-internal-externc-isystem"
-// CHECK-BE-HF-32: "[[TC]]/include"
-// CHECK-BE-HF-32: "-internal-externc-isystem"
-// CHECK-BE-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Big-endian, hard float, mips16
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mips16 \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-HF-16 %s
-// CHECK-BE-HF-16: "-internal-isystem"
-// CHECK-BE-HF-16: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-BE-HF-16: "-internal-isystem"
-// CHECK-BE-HF-16: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/mips16"
-// CHECK-BE-HF-16: "-internal-isystem"
-// CHECK-BE-HF-16: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-BE-HF-16: "-internal-externc-isystem"
-// CHECK-BE-HF-16: "[[TC]]/include"
-// CHECK-BE-HF-16: "-internal-externc-isystem"
-// CHECK-BE-HF-16: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Big-endian, hard float, micromips
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mmicromips \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-HF-MICRO %s
-// CHECK-BE-HF-MICRO: "-internal-isystem"
-// CHECK-BE-HF-MICRO: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-BE-HF-MICRO: "-internal-isystem"
-// CHECK-BE-HF-MICRO: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/micromips"
-// CHECK-BE-HF-MICRO: "-internal-isystem"
-// CHECK-BE-HF-MICRO: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-BE-HF-MICRO: "-internal-externc-isystem"
-// CHECK-BE-HF-MICRO: "[[TC]]/include"
-// CHECK-BE-HF-MICRO: "-internal-externc-isystem"
-// CHECK-BE-HF-MICRO: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Big-endian, soft float
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-SF-32 %s
-// CHECK-BE-SF-32: "-internal-isystem"
-// CHECK-BE-SF-32: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-BE-SF-32: "-internal-isystem"
-// CHECK-BE-SF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/soft-float"
-// CHECK-BE-SF-32: "-internal-isystem"
-// CHECK-BE-SF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-BE-SF-32: "-internal-externc-isystem"
-// CHECK-BE-SF-32: "[[TC]]/include"
-// CHECK-BE-SF-32: "-internal-externc-isystem"
-// CHECK-BE-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Big-endian, soft float, mips16
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float -mips16 \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-SF-16 %s
-// CHECK-BE-SF-16: "-internal-isystem"
-// CHECK-BE-SF-16: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-BE-SF-16: "-internal-isystem"
-// CHECK-BE-SF-16: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/mips16/soft-float"
-// CHECK-BE-SF-16: "-internal-isystem"
-// CHECK-BE-SF-16: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-BE-SF-16: "-internal-externc-isystem"
-// CHECK-BE-SF-16: "[[TC]]/include"
-// CHECK-BE-SF-16: "-internal-externc-isystem"
-// CHECK-BE-SF-16: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Big-endian, soft float, micromips
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float -mmicromips \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-SF-MICRO %s
-// CHECK-BE-SF-MICRO: "-internal-isystem"
-// CHECK-BE-SF-MICRO: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-BE-SF-MICRO: "-internal-isystem"
-// CHECK-BE-SF-MICRO: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/micromips/soft-float"
-// CHECK-BE-SF-MICRO: "-internal-isystem"
-// CHECK-BE-SF-MICRO: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-BE-SF-MICRO: "-internal-externc-isystem"
-// CHECK-BE-SF-MICRO: "[[TC]]/include"
-// CHECK-BE-SF-MICRO: "-internal-externc-isystem"
-// CHECK-BE-SF-MICRO: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Big-endian, hard float, 64-bit
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips64-linux-gnu \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-HF-64 %s
-// CHECK-BE-HF-64: "-internal-isystem"
-// CHECK-BE-HF-64: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-BE-HF-64: "-internal-isystem"
-// CHECK-BE-HF-64: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/64"
-// CHECK-BE-HF-64: "-internal-isystem"
-// CHECK-BE-HF-64: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-BE-HF-64: "-internal-externc-isystem"
-// CHECK-BE-HF-64: "[[TC]]/include"
-// CHECK-BE-HF-64: "-internal-externc-isystem"
-// CHECK-BE-HF-64: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Big-endian, soft float, 64-bit
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips64-linux-gnu -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-SF-64 %s
-// CHECK-BE-SF-64: "-internal-isystem"
-// CHECK-BE-SF-64: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-BE-SF-64: "-internal-isystem"
-// CHECK-BE-SF-64: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/soft-float/64"
-// CHECK-BE-SF-64: "-internal-isystem"
-// CHECK-BE-SF-64: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-BE-SF-64: "-internal-externc-isystem"
-// CHECK-BE-SF-64: "[[TC]]/include"
-// CHECK-BE-SF-64: "-internal-externc-isystem"
-// CHECK-BE-SF-64: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Little-endian, hard float
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mhard-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-HF-32 %s
-// CHECK-EL-HF-32: "-internal-isystem"
-// CHECK-EL-HF-32: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-EL-HF-32: "-internal-isystem"
-// CHECK-EL-HF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/el"
-// CHECK-EL-HF-32: "-internal-isystem"
-// CHECK-EL-HF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-EL-HF-32: "-internal-externc-isystem"
-// CHECK-EL-HF-32: "[[TC]]/include"
-// CHECK-EL-HF-32: "-internal-externc-isystem"
-// CHECK-EL-HF-32: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Little-endian, hard float, mips16
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mips16 \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-HF-16 %s
-// CHECK-EL-HF-16: "-internal-isystem"
-// CHECK-EL-HF-16: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-EL-HF-16: "-internal-isystem"
-// CHECK-EL-HF-16: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/mips16/el"
-// CHECK-EL-HF-16: "-internal-isystem"
-// CHECK-EL-HF-16: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-EL-HF-16: "-internal-externc-isystem"
-// CHECK-EL-HF-16: "[[TC]]/include"
-// CHECK-EL-HF-16: "-internal-externc-isystem"
-// CHECK-EL-HF-16: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Little-endian, hard float, micromips
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mmicromips \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-HF-MICRO %s
-// CHECK-EL-HF-MICRO: "-internal-isystem"
-// CHECK-EL-HF-MICRO: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-EL-HF-MICRO: "-internal-isystem"
-// CHECK-EL-HF-MICRO: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/micromips/el"
-// CHECK-EL-HF-MICRO: "-internal-isystem"
-// CHECK-EL-HF-MICRO: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-EL-HF-MICRO: "-internal-externc-isystem"
-// CHECK-EL-HF-MICRO: "[[TC]]/include"
-// CHECK-EL-HF-MICRO: "-internal-externc-isystem"
-// CHECK-EL-HF-MICRO: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Little-endian, soft float
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mfloat-abi=soft \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-SF-32 %s
-// CHECK-EL-SF-32: "-internal-isystem"
-// CHECK-EL-SF-32: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-EL-SF-32: "-internal-isystem"
-// CHECK-EL-SF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/soft-float/el"
-// CHECK-EL-SF-32: "-internal-isystem"
-// CHECK-EL-SF-32: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-EL-SF-32: "-internal-externc-isystem"
-// CHECK-EL-SF-32: "[[TC]]/include"
-// CHECK-EL-SF-32: "-internal-externc-isystem"
-// CHECK-EL-SF-32: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Little-endian, soft float, mips16
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mips16 -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-SF-16 %s
-// CHECK-EL-SF-16: "-internal-isystem"
-// CHECK-EL-SF-16: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-EL-SF-16: "-internal-isystem"
-// CHECK-EL-SF-16: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/mips16/soft-float/el"
-// CHECK-EL-SF-16: "-internal-isystem"
-// CHECK-EL-SF-16: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-EL-SF-16: "-internal-externc-isystem"
-// CHECK-EL-SF-16: "[[TC]]/include"
-// CHECK-EL-SF-16: "-internal-externc-isystem"
-// CHECK-EL-SF-16: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Little-endian, soft float, micromips
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mmicromips -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-SF-MICRO %s
-// CHECK-EL-SF-MICRO: "-internal-isystem"
-// CHECK-EL-SF-MICRO: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-EL-SF-MICRO: "-internal-isystem"
-// CHECK-EL-SF-MICRO: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/micromips/soft-float/el"
-// CHECK-EL-SF-MICRO: "-internal-isystem"
-// CHECK-EL-SF-MICRO: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-EL-SF-MICRO: "-internal-externc-isystem"
-// CHECK-EL-SF-MICRO: "[[TC]]/include"
-// CHECK-EL-SF-MICRO: "-internal-externc-isystem"
-// CHECK-EL-SF-MICRO: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Little-endian, hard float, 64-bit
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-HF-64 %s
-// CHECK-EL-HF-64: "-internal-isystem"
-// CHECK-EL-HF-64: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-EL-HF-64: "-internal-isystem"
-// CHECK-EL-HF-64: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/el/64"
-// CHECK-EL-HF-64: "-internal-isystem"
-// CHECK-EL-HF-64: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-EL-HF-64: "-internal-externc-isystem"
-// CHECK-EL-HF-64: "[[TC]]/include"
-// CHECK-EL-HF-64: "-internal-externc-isystem"
-// CHECK-EL-HF-64: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"
-//
-// = Little-endian, soft float, 64-bit
-// RUN: %clang -no-canonical-prefixes %s -### -c -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-SF-64 %s
-// CHECK-EL-SF-64: "-internal-isystem"
-// CHECK-EL-SF-64: "[[TC:[^"]+/lib/gcc/mips-linux-gnu/4.6.3]]/../../../../mips-linux-gnu/include/c++/4.6.3"
-// CHECK-EL-SF-64: "-internal-isystem"
-// CHECK-EL-SF-64: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/mips-linux-gnu/soft-float/el/64"
-// CHECK-EL-SF-64: "-internal-isystem"
-// CHECK-EL-SF-64: "[[TC]]/../../../../mips-linux-gnu/include/c++/4.6.3/backward"
-// CHECK-EL-SF-64: "-internal-externc-isystem"
-// CHECK-EL-SF-64: "[[TC]]/include"
-// CHECK-EL-SF-64: "-internal-externc-isystem"
-// CHECK-EL-SF-64: "[[TC]]/../../../../mips-linux-gnu/libc/usr/include"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mips-cs-ld.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mips-cs-ld.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mips-cs-ld.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,288 +0,0 @@
-// Check ld invocations on Mentor Graphics MIPS toolchain.
-//
-// = Big-endian, hard float
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-HF-32 %s
-// CHECK-BE-HF-32: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BE-HF-32: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc"
-// CHECK-BE-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/usr/lib/../lib/crt1.o"
-// CHECK-BE-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/usr/lib/../lib/crti.o"
-// CHECK-BE-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/crtbegin.o"
-// CHECK-BE-HF-32: "-L[[TC]]"
-// CHECK-BE-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib"
-// CHECK-BE-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/lib"
-// CHECK-BE-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/usr/lib"
-// CHECK-BE-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/crtend.o"
-// CHECK-BE-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/usr/lib/../lib/crtn.o"
-//
-// = Big-endian, hard float, mips16
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mips16 \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-HF-16 %s
-// CHECK-BE-HF-16: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BE-HF-16: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/mips16"
-// CHECK-BE-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/usr/lib/../lib/crt1.o"
-// CHECK-BE-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/usr/lib/../lib/crti.o"
-// CHECK-BE-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/crtbegin.o"
-// CHECK-BE-HF-16: "-L[[TC]]/mips16"
-// CHECK-BE-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/mips16"
-// CHECK-BE-HF-16: "-L[[TC]]"
-// CHECK-BE-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/lib"
-// CHECK-BE-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/usr/lib"
-// CHECK-BE-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/crtend.o"
-// CHECK-BE-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/usr/lib/../lib/crtn.o"
-//
-// = Big-endian, hard float, mmicromips
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mmicromips \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-HF-MICRO %s
-// CHECK-BE-HF-MICRO: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BE-HF-MICRO: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/micromips"
-// CHECK-BE-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/usr/lib/../lib/crt1.o"
-// CHECK-BE-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/usr/lib/../lib/crti.o"
-// CHECK-BE-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/crtbegin.o"
-// CHECK-BE-HF-MICRO: "-L[[TC]]/micromips"
-// CHECK-BE-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/micromips"
-// CHECK-BE-HF-MICRO: "-L[[TC]]"
-// CHECK-BE-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/lib"
-// CHECK-BE-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/usr/lib"
-// CHECK-BE-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/crtend.o"
-// CHECK-BE-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/usr/lib/../lib/crtn.o"
-//
-// = Big-endian, soft float
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-SF-32 %s
-// CHECK-BE-SF-32: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BE-SF-32: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/soft-float"
-// CHECK-BE-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib/crt1.o"
-// CHECK-BE-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib/crti.o"
-// CHECK-BE-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/crtbegin.o"
-// CHECK-BE-SF-32: "-L[[TC]]/soft-float"
-// CHECK-BE-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/soft-float"
-// CHECK-BE-SF-32: "-L[[TC]]"
-// CHECK-BE-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/lib"
-// CHECK-BE-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/usr/lib"
-// CHECK-BE-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/crtend.o"
-// CHECK-BE-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib/crtn.o"
-//
-// = Big-endian, soft float, mips16
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float -mips16 \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-SF-16 %s
-// CHECK-BE-SF-16: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BE-SF-16: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/mips16/soft-float"
-// CHECK-BE-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/soft-float/usr/lib/../lib/crt1.o"
-// CHECK-BE-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/soft-float/usr/lib/../lib/crti.o"
-// CHECK-BE-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/soft-float/crtbegin.o"
-// CHECK-BE-SF-16: "-L[[TC]]/mips16/soft-float"
-// CHECK-BE-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/mips16/soft-float"
-// CHECK-BE-SF-16: "-L[[TC]]"
-// CHECK-BE-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/lib"
-// CHECK-BE-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/usr/lib"
-// CHECK-BE-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/soft-float/crtend.o"
-// CHECK-BE-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/soft-float/usr/lib/../lib/crtn.o"
-//
-// = Big-endian, soft float, micromips
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float -mmicromips \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-SF-MICRO %s
-// CHECK-BE-SF-MICRO: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BE-SF-MICRO: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/micromips/soft-float"
-// CHECK-BE-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/soft-float/usr/lib/../lib/crt1.o"
-// CHECK-BE-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/soft-float/usr/lib/../lib/crti.o"
-// CHECK-BE-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/soft-float/crtbegin.o"
-// CHECK-BE-SF-MICRO: "-L[[TC]]/micromips/soft-float"
-// CHECK-BE-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/micromips/soft-float"
-// CHECK-BE-SF-MICRO: "-L[[TC]]"
-// CHECK-BE-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/lib"
-// CHECK-BE-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/usr/lib"
-// CHECK-BE-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/soft-float/crtend.o"
-// CHECK-BE-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/soft-float/usr/lib/../lib/crtn.o"
-//
-// = Big-endian, hard float, 64-bit
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64-linux-gnu \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-HF-64 %s
-// CHECK-BE-HF-64: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BE-HF-64: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc"
-// CHECK-BE-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/usr/lib/../lib64/crt1.o"
-// CHECK-BE-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/usr/lib/../lib64/crti.o"
-// CHECK-BE-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/64/crtbegin.o"
-// CHECK-BE-HF-64: "-L[[TC]]/64"
-// CHECK-BE-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib64"
-// CHECK-BE-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/lib/../lib64"
-// CHECK-BE-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/usr/lib/../lib64"
-// CHECK-BE-HF-64: "-L[[TC]]"
-// CHECK-BE-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/64/crtend.o"
-// CHECK-BE-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/usr/lib/../lib64/crtn.o"
-//
-// = Big-endian, soft float, 64-bit
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64-linux-gnu -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-BE-SF-64 %s
-// CHECK-BE-SF-64: "{{.*}}ld{{(.exe)?}}"
-// CHECK-BE-SF-64: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/soft-float"
-// CHECK-BE-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib64/crt1.o"
-// CHECK-BE-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib64/crti.o"
-// CHECK-BE-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/64/crtbegin.o"
-// CHECK-BE-SF-64: "-L[[TC]]/soft-float/64"
-// CHECK-BE-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib64/soft-float"
-// CHECK-BE-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/lib/../lib64"
-// CHECK-BE-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib64"
-// CHECK-BE-SF-64: "-L[[TC]]"
-// CHECK-BE-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/64/crtend.o"
-// CHECK-BE-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/usr/lib/../lib64/crtn.o"
-//
-// = Little-endian, hard float
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mhard-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-HF-32 %s
-// CHECK-EL-HF-32: "{{.*}}ld{{(.exe)?}}"
-// CHECK-EL-HF-32: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/el"
-// CHECK-EL-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/el/usr/lib/../lib/crt1.o"
-// CHECK-EL-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/el/usr/lib/../lib/crti.o"
-// CHECK-EL-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/el/crtbegin.o"
-// CHECK-EL-HF-32: "-L[[TC]]/el"
-// CHECK-EL-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/el"
-// CHECK-EL-HF-32: "-L[[TC]]"
-// CHECK-EL-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/lib"
-// CHECK-EL-HF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/usr/lib"
-// CHECK-EL-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/el/crtend.o"
-// CHECK-EL-HF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/el/usr/lib/../lib/crtn.o"
-//
-// = Little-endian, hard float, mips16
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mips16 \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-HF-16 %s
-// CHECK-EL-HF-16: "{{.*}}ld{{(.exe)?}}"
-// CHECK-EL-HF-16: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/mips16/el"
-// CHECK-EL-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/el/usr/lib/../lib/crt1.o"
-// CHECK-EL-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/el/usr/lib/../lib/crti.o"
-// CHECK-EL-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/el/crtbegin.o"
-// CHECK-EL-HF-16: "-L[[TC]]/mips16/el"
-// CHECK-EL-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/mips16/el"
-// CHECK-EL-HF-16: "-L[[TC]]"
-// CHECK-EL-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/el/lib"
-// CHECK-EL-HF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/el/usr/lib"
-// CHECK-EL-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/el/crtend.o"
-// CHECK-EL-HF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/el/usr/lib/../lib/crtn.o"
-//
-// = Little-endian, hard float, micromips
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mmicromips \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-HF-MICRO %s
-// CHECK-EL-HF-MICRO: "{{.*}}ld{{(.exe)?}}"
-// CHECK-EL-HF-MICRO: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/micromips/el"
-// CHECK-EL-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/el/usr/lib/../lib/crt1.o"
-// CHECK-EL-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/el/usr/lib/../lib/crti.o"
-// CHECK-EL-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/el/crtbegin.o"
-// CHECK-EL-HF-MICRO: "-L[[TC]]/micromips/el"
-// CHECK-EL-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/micromips/el"
-// CHECK-EL-HF-MICRO: "-L[[TC]]"
-// CHECK-EL-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/el/lib"
-// CHECK-EL-HF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/el/usr/lib"
-// CHECK-EL-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/el/crtend.o"
-// CHECK-EL-HF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/el/usr/lib/../lib/crtn.o"
-//
-// = Little-endian, soft float
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mfloat-abi=soft \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-SF-32 %s
-// CHECK-EL-SF-32: "{{.*}}ld{{(.exe)?}}"
-// CHECK-EL-SF-32: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/soft-float/el"
-// CHECK-EL-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib/crt1.o"
-// CHECK-EL-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib/crti.o"
-// CHECK-EL-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/el/crtbegin.o"
-// CHECK-EL-SF-32: "-L[[TC]]/soft-float/el"
-// CHECK-EL-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/soft-float/el"
-// CHECK-EL-SF-32: "-L[[TC]]"
-// CHECK-EL-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/lib"
-// CHECK-EL-SF-32: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib"
-// CHECK-EL-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/el/crtend.o"
-// CHECK-EL-SF-32: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib/crtn.o"
-//
-// = Little-endian, soft float, mips16
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mips16 -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-SF-16 %s
-// CHECK-EL-SF-16: "{{.*}}ld{{(.exe)?}}"
-// CHECK-EL-SF-16: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/mips16/soft-float/el"
-// CHECK-EL-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/../lib/crt1.o"
-// CHECK-EL-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/../lib/crti.o"
-// CHECK-EL-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/soft-float/el/crtbegin.o"
-// CHECK-EL-SF-16: "-L[[TC]]/mips16/soft-float/el"
-// CHECK-EL-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/mips16/soft-float/el"
-// CHECK-EL-SF-16: "-L[[TC]]"
-// CHECK-EL-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/el/lib"
-// CHECK-EL-SF-16: "-L[[TC]]/../../../../mips-linux-gnu/libc/mips16/soft-float/el/usr/lib"
-// CHECK-EL-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/mips16/soft-float/el/crtend.o"
-// CHECK-EL-SF-16: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/../lib/crtn.o"
-//
-// = Little-endian, soft float, micromips
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mipsel-linux-gnu -mmicromips -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-SF-MICRO %s
-// CHECK-EL-SF-MICRO: "{{.*}}ld{{(.exe)?}}"
-// CHECK-EL-SF-MICRO: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/micromips/soft-float/el"
-// CHECK-EL-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/soft-float/el/usr/lib/../lib/crt1.o"
-// CHECK-EL-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/soft-float/el/usr/lib/../lib/crti.o"
-// CHECK-EL-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/soft-float/el/crtbegin.o"
-// CHECK-EL-SF-MICRO: "-L[[TC]]/micromips/soft-float/el"
-// CHECK-EL-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib/micromips/soft-float/el"
-// CHECK-EL-SF-MICRO: "-L[[TC]]"
-// CHECK-EL-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/el/lib"
-// CHECK-EL-SF-MICRO: "-L[[TC]]/../../../../mips-linux-gnu/libc/micromips/soft-float/el/usr/lib"
-// CHECK-EL-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/micromips/soft-float/el/crtend.o"
-// CHECK-EL-SF-MICRO: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/micromips/soft-float/el/usr/lib/../lib/crtn.o"
-//
-// = Little-endian, hard float, 64-bit
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-HF-64 %s
-// CHECK-EL-HF-64: "{{.*}}ld{{(.exe)?}}"
-// CHECK-EL-HF-64: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/el"
-// CHECK-EL-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/el/usr/lib/../lib64/crt1.o"
-// CHECK-EL-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/el/usr/lib/../lib64/crti.o"
-// CHECK-EL-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/el/64/crtbegin.o"
-// CHECK-EL-HF-64: "-L[[TC]]/el/64"
-// CHECK-EL-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib64/el"
-// CHECK-EL-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/lib/../lib64"
-// CHECK-EL-HF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/el/usr/lib/../lib64"
-// CHECK-EL-HF-64: "-L[[TC]]"
-// CHECK-EL-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/el/64/crtend.o"
-// CHECK-EL-HF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/el/usr/lib/../lib64/crtn.o"
-//
-// = Little-endian, soft float, 64-bit
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target mips64el-linux-gnu -msoft-float \
-// RUN:     -gcc-toolchain %S/Inputs/mips_cs_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-EL-SF-64 %s
-// CHECK-EL-SF-64: "{{.*}}ld{{(.exe)?}}"
-// CHECK-EL-SF-64: "--sysroot=[[TC:[^"]+]]/../../../../mips-linux-gnu/libc/soft-float/el"
-// CHECK-EL-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib64/crt1.o"
-// CHECK-EL-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib64/crti.o"
-// CHECK-EL-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/el/64/crtbegin.o"
-// CHECK-EL-SF-64: "-L[[TC]]/soft-float/el/64"
-// CHECK-EL-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/lib/../lib64/soft-float/el"
-// CHECK-EL-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/lib/../lib64"
-// CHECK-EL-SF-64: "-L[[TC]]/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib64"
-// CHECK-EL-SF-64: "-L[[TC]]"
-// CHECK-EL-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/soft-float/el/64/crtend.o"
-// CHECK-EL-SF-64: "{{.*}}/lib/gcc/mips-linux-gnu/4.6.3/../../../../mips-linux-gnu/libc/soft-float/el/usr/lib/../lib64/crtn.o"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mips-eleb.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mips-eleb.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mips-eleb.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// Check that -EL/-EB options adjust the toolchain flags.
-//
-// RUN: %clang -no-canonical-prefixes -target mips-unknown-linux-gnu -### \
-// RUN:        -EL -no-integrated-as %s 2>&1 \
-// RUN:        | FileCheck -check-prefix=MIPS32-EL %s
-// MIPS32-EL: "{{.*}}clang{{.*}}" "-cc1" "-triple" "mipsel-unknown-linux-gnu"
-// MIPS32-EL: "{{.*}}as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EL"
-// MIPS32-EL: "{{.*}}ld{{(.exe)?}}" {{.*}} "-m" "elf32ltsmip"
-//
-// RUN: %clang -no-canonical-prefixes -target mips64-unknown-linux-gnu -### \
-// RUN:        -EL -no-integrated-as %s 2>&1 \
-// RUN:        | FileCheck -check-prefix=MIPS64-EL %s
-// MIPS64-EL: "{{.*}}clang{{.*}}" "-cc1" "-triple" "mips64el-unknown-linux-gnu"
-// MIPS64-EL: "{{.*}}as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EL"
-// MIPS64-EL: "{{.*}}ld{{(.exe)?}}" {{.*}} "-m" "elf64ltsmip"
-//
-// RUN: %clang -no-canonical-prefixes -target mipsel-unknown-linux-gnu -### \
-// RUN:        -EB -no-integrated-as %s 2>&1 \
-// RUN:        | FileCheck -check-prefix=MIPS32-EB %s
-// MIPS32-EB: "{{.*}}clang{{.*}}" "-cc1" "-triple" "mips-unknown-linux-gnu"
-// MIPS32-EB: "{{.*}}as{{(.exe)?}}" "-march" "mips32" "-mabi" "32" "-EB"
-// MIPS32-EB: "{{.*}}ld{{(.exe)?}}" {{.*}} "-m" "elf32btsmip"
-//
-// RUN: %clang -no-canonical-prefixes -target mips64el-unknown-linux-gnu -### \
-// RUN:        -EB -no-integrated-as %s 2>&1 \
-// RUN:        | FileCheck -check-prefix=MIPS64-EB %s
-// MIPS64-EB: "{{.*}}clang{{.*}}" "-cc1" "-triple" "mips64-unknown-linux-gnu"
-// MIPS64-EB: "{{.*}}as{{(.exe)?}}" "-march" "mips64" "-mabi" "64" "-EB"
-// MIPS64-EB: "{{.*}}ld{{(.exe)?}}" {{.*}} "-m" "elf64btsmip"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mips-features.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mips-features.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mips-features.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// Check handling MIPS specific features options.
-//
-// -mips16
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mno-mips16 -mips16 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS16 %s
-// CHECK-MIPS16: "-target-feature" "+mips16"
-//
-// -mno-mips16
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mips16 -mno-mips16 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NOMIPS16 %s
-// CHECK-NOMIPS16: "-target-feature" "-mips16"
-//
-// -mmicromips
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mno-micromips -mmicromips 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-MICROMIPS %s
-// CHECK-MICROMIPS: "-target-feature" "+micromips"
-//
-// -mno-micromips
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mmicromips -mno-micromips 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NOMICROMIPS %s
-// CHECK-NOMICROMIPS: "-target-feature" "-micromips"
-//
-// -mdsp
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mno-dsp -mdsp 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-MDSP %s
-// CHECK-MDSP: "-target-feature" "+dsp"
-//
-// -mno-dsp
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mdsp -mno-dsp 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NOMDSP %s
-// CHECK-NOMDSP: "-target-feature" "-dsp"
-//
-// -mdspr2
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mno-dspr2 -mdspr2 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-MDSPR2 %s
-// CHECK-MDSPR2: "-target-feature" "+dspr2"
-//
-// -mno-dspr2
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mdspr2 -mno-dspr2 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NOMDSPR2 %s
-// CHECK-NOMDSPR2: "-target-feature" "-dspr2"
-//
-// -mxgot
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mno-xgot -mxgot 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-XGOT %s
-// CHECK-XGOT: "-mllvm" "-mxgot"
-//
-// -mno-xgot
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -mxgot -mno-xgot 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-NOXGOT %s
-// CHECK-NOXGOT-NOT: "-mllvm" "-mxgot"
-//
-// -G
-// RUN: %clang -target mips-linux-gnu -### -c %s \
-// RUN:     -G 16 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-MIPS-G %s
-// CHECK-MIPS-G: "-mllvm" "-mips-ssection-threshold=16"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mips-float.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mips-float.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mips-float.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// Check handling -mhard-float / -msoft-float / -mfloat-abi options
-// when build for MIPS platforms.
-//
-// Default
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu \
-// RUN:   | FileCheck --check-prefix=CHECK-DEF %s
-// CHECK-DEF: "-mfloat-abi" "hard"
-//
-// -mhard-float
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mhard-float \
-// RUN:   | FileCheck --check-prefix=CHECK-HARD %s
-// CHECK-HARD: "-mfloat-abi" "hard"
-//
-// -msoft-float
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float \
-// RUN:   | FileCheck --check-prefix=CHECK-SOFT %s
-// CHECK-SOFT: "-msoft-float"
-// CHECK-SOFT: "-mfloat-abi" "soft"
-// CHECK-SOFT: "-target-feature" "+soft-float"
-//
-// -mfloat-abi=hard
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mfloat-abi=hard \
-// RUN:   | FileCheck --check-prefix=CHECK-ABI-HARD %s
-// CHECK-ABI-HARD: "-mfloat-abi" "hard"
-//
-// -mfloat-abi=soft
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mfloat-abi=soft \
-// RUN:   | FileCheck --check-prefix=CHECK-ABI-SOFT %s
-// CHECK-ABI-SOFT: "-msoft-float"
-// CHECK-ABI-SOFT: "-mfloat-abi" "soft"
-// CHECK-ABI-SOFT: "-target-feature" "+soft-float"
-//
-// -mdouble-float
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msingle-float -mdouble-float \
-// RUN:   | FileCheck --check-prefix=CHECK-ABI-DOUBLE %s
-// CHECK-ABI-DOUBLE: "-mfloat-abi" "hard"
-// CHECK-ABI-DOUBLE-NOT: "+single-float"
-//
-// -msingle-float
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mdouble-float -msingle-float \
-// RUN:   | FileCheck --check-prefix=CHECK-ABI-SINGLE %s
-// CHECK-ABI-SINGLE: "-mfloat-abi" "hard"
-// CHECK-ABI-SINGLE: "-target-feature" "+single-float"
-//
-// -msoft-float -msingle-float
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float -msingle-float \
-// RUN:   | FileCheck --check-prefix=CHECK-ABI-SOFT-SINGLE %s
-// CHECK-ABI-SOFT-SINGLE: "-mfloat-abi" "soft"
-// CHECK-ABI-SOFT-SINGLE: "-target-feature" "+single-float"
-//
-// Default -mips16
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mips16 \
-// RUN:   | FileCheck --check-prefix=CHECK-DEF-MIPS16 %s
-// CHECK-DEF-MIPS16: "-mfloat-abi" "soft"
-// CHECK-DEF-MIPS16: "-mllvm" "-mips16-hard-float"
-//
-// -mhard-float -mips16
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mhard-float -mips16 \
-// RUN:   | FileCheck --check-prefix=CHECK-HARD-MIPS16 %s
-// CHECK-HARD-MIPS16: "-msoft-float"
-// CHECK-HARD-MIPS16: "-mfloat-abi" "soft"
-// CHECK-HARD-MIPS16: "-target-feature" "+soft-float"
-// CHECK-HARD-MIPS16: "-mllvm" "-mips16-hard-float"
-//
-// -msoft-float -mips16
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -msoft-float -mips16 \
-// RUN:   | FileCheck --check-prefix=CHECK-SOFT-MIPS16 %s
-// CHECK-SOFT-MIPS16: "-msoft-float"
-// CHECK-SOFT-MIPS16: "-mfloat-abi" "soft"
-// CHECK-SOFT-MIPS16: "-target-feature" "+soft-float"
-//
-// -mfloat-abi=hard -mips16
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mfloat-abi=hard -mips16 \
-// RUN:   | FileCheck --check-prefix=CHECK-ABI-HARD-MIPS16 %s
-// CHECK-ABI-HARD-MIPS16: "-msoft-float"
-// CHECK-ABI-HARD-MIPS16: "-mfloat-abi" "soft"
-// CHECK-ABI-HARD-MIPS16: "-target-feature" "+soft-float"
-// CHECK-ABI-HARD-MIPS16: "-mllvm" "-mips16-hard-float"
-//
-// -mfloat-abi=soft -mips16
-// RUN: %clang -c %s -### -o %t.o 2>&1 \
-// RUN:     -target mips-linux-gnu -mfloat-abi=soft -mips16 \
-// RUN:   | FileCheck --check-prefix=CHECK-ABI-SOFT-MIPS16 %s
-// CHECK-ABI-SOFT-MIPS16: "-msoft-float"
-// CHECK-ABI-SOFT-MIPS16: "-mfloat-abi" "soft"
-// CHECK-ABI-SOFT-MIPS16: "-target-feature" "+soft-float"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mips-long-double.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mips-long-double.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mips-long-double.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple mips64-unknown-freebsd -std=c11 -verify %s
-// RUN: %clang_cc1 -triple mips-unknown-freebsd -std=c11 -verify %s
-// RUN: %clang_cc1 -triple mips-unknown-linux -std=c11 -verify %s
-// RUN: %clang_cc1 -triple mips64-unknown-linux -std=c11 -verify %s
-// expected-no-diagnostics
-
-#ifdef _ABI64
-#  ifdef __FreeBSD__
-_Static_assert(sizeof(long double) == 8, "sizeof long double is wrong");
-_Static_assert(_Alignof(long double) == 8, "alignof long double is wrong");
-#  else
-_Static_assert(sizeof(long double) == 16, "sizeof long double is wrong");
-_Static_assert(_Alignof(long double) == 16, "alignof long double is wrong");
-#  endif
-#else
-_Static_assert(sizeof(long double) == 8, "sizeof long double is wrong");
-_Static_assert(_Alignof(long double) == 8, "alignof long double is wrong");
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/mno-global-merge.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/mno-global-merge.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/mno-global-merge.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang -target armv7-apple-darwin10 \
-// RUN:   -mno-global-merge -### -fsyntax-only %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-NGM < %t %s
-
-// CHECK-NGM: "-mno-global-merge"
-
-// RUN: %clang -target armv7-apple-darwin10 \
-// RUN:   -mglobal-merge -### -fsyntax-only %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-GM < %t %s
-
-// CHECK-GM-NOT: "-mglobal-merge"
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/modules.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/modules.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/modules.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -fmodules -fno-modules -### %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MODULES %s
-// CHECK-NO-MODULES-NOT: -fmodules
-
-// RUN: %clang -fmodules -fno-modules -fmodules -### %s 2>&1 | FileCheck -check-prefix=CHECK-HAS-MODULES %s
-// CHECK-HAS-MODULES: -fmodules
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/modules.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/modules.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/modules.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -fmodules -### %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MODULES %s
-// RUN: %clang -fcxx-modules -### %s 2>&1 | FileCheck -check-prefix=CHECK-NO-MODULES %s
-// CHECK-NO-MODULES-NOT: -fmodules
-
-// RUN: %clang -fcxx-modules -fmodules -### %s 2>&1 | FileCheck -check-prefix=CHECK-HAS-MODULES %s
-// CHECK-HAS-MODULES: -fmodules

Modified: trunk/contrib/llvm/tools/clang/test/Driver/montavista-gcc-toolchain.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/montavista-gcc-toolchain.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/montavista-gcc-toolchain.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// Test that the montavista gcc-toolchain is correctly detected
-//
-// RUN: %clang -print-libgcc-file-name 2>&1 \
-// RUN:     -target i686-montavista-linux \
-// RUN:     -gcc-toolchain %S/Inputs/montavista_i686_tree/usr \
-// RUN:   | FileCheck %s
-
-// Test for header search toolchain detection.
-// CHECK: montavista_i686_tree/usr/lib/gcc/i686-montavista-linux/4.2.0/libgcc.a

Modified: trunk/contrib/llvm/tools/clang/test/Driver/ms-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/ms-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/ms-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -### -fsyntax-only -fasm-blocks %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-BLOCKS < %t %s
-
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -### -fsyntax-only -fno-asm-blocks -fasm-blocks %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-BLOCKS < %t %s
-
-// CHECK-BLOCKS: "-fasm-blocks"
-
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -### -fsyntax-only -fasm-blocks -fno-asm-blocks %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-NO-BLOCKS < %t %s
-
-// CHECK-NO-BLOCKS-NOT: "-fasm-blocks"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/msvc_forward.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/msvc_forward.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/msvc_forward.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -target i686-pc-win32 -lkernel32.lib -luser32.lib -### %s 2>&1 | FileCheck %s
-// CHECK-NOT: "-lkernel32.lib"
-// CHECK-NOT: "-luser32.lib"
-// CHECK: "kernel32.lib"
-// CHECK: "user32.lib"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/no-integrated-as-win.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/no-integrated-as-win.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/no-integrated-as-win.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang -target x86_64-pc-win32 -### -no-integrated-as %s -c 2>&1 | FileCheck %s
-
-// CHECK: there is no external assembler we can use on windows

Modified: trunk/contrib/llvm/tools/clang/test/Driver/no-objc-arr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/no-objc-arr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/no-objc-arr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang  -Werror -fobjc-arc -fsyntax-only -fno-objc-arc -Xclang -verify %s
-// expected-no-diagnostics
-// rdar://8949617
-
-void * FOO() {
-    id string = @"Hello World.\n";
-    void *pointer = string; // No error must be issued
-    return pointer;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/no-objc-default-synthesize-properties.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/no-objc-default-synthesize-properties.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/no-objc-default-synthesize-properties.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang  -fsyntax-only -fno-objc-default-synthesize-properties -fobjc-default-synthesize-properties %s 2>&1 | FileCheck %s
-
- at interface I
- at property int P;
- at end
-
- at implementation I
- at end
-// CHECK: warning: argument unused during compilation: '-fno-objc-default-synthesize-properties'
-// CHECK: warning: argument unused during compilation: '-fobjc-default-synthesize-properties'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/no-sibling-calls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/no-sibling-calls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/no-sibling-calls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -### %s -fno-optimize-sibling-calls 2> %t
-// RUN: FileCheck --check-prefix=CHECK-NOSC < %t %s
-// CHECK-NOSC: "-mdisable-tail-calls"
-
-// RUN: %clang -### -foptimize-sibling-calls %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK-OSC < %t %s
-// CHECK-OSC-NOT: "-mdisable-tail-calls"
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/nodefaultlib.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/nodefaultlib.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/nodefaultlib.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -target i686-pc-linux-gnu -### -nodefaultlibs %s 2> %t
-// RUN: FileCheck < %t %s
-//
-// CHECK-NOT: start-group
-// CHECK-NOT: "-lgcc"
-// CHECK-NOT: "-lc"
-// CHECK: crtbegin
-// CHECK: crtend

Modified: trunk/contrib/llvm/tools/clang/test/Driver/noexecstack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/noexecstack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/noexecstack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// RUN: %clang -### %s -c -o tmp.o -triple i686-pc-linux-gnu -integrated-as -Wa,--noexecstack 2>&1 | grep "mnoexecstack"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/noinline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/noinline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/noinline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Make sure the driver is correctly passing -fno-inline-functions
-// rdar://10972766
-
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -fno-inline -fno-inline-functions -### -fsyntax-only %s 2> %t
-// RUN: FileCheck --check-prefix=CHECK < %t %s
-
-// CHECK: clang
-// CHECK: "-fno-inline"
-// CHECK: "-fno-inline-functions"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/nostdincxx.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/nostdincxx.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/nostdincxx.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clangxx -nostdinc++ %s 2>&1 | FileCheck %s
-// XFAIL: win32
-// CHECK: file not found
-#include <vector> 

Modified: trunk/contrib/llvm/tools/clang/test/Driver/nostdlib.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/nostdlib.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/nostdlib.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang -target i686-pc-linux-gnu -### -nostdlib %s 2> %t
-// RUN: FileCheck < %t %s
-//
-// CHECK-NOT: start-group

Modified: trunk/contrib/llvm/tools/clang/test/Driver/nostdlibinc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/nostdlibinc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/nostdlibinc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang -target x86_64-unknown-unknown \
-// RUN:   -nostdlibinc -ffreestanding -fsyntax-only %s
-
-#if !__has_include("stddef.h")
-#error "expected to be able to find compiler builtin headers!"
-#endif
-
-#if __has_include("stdlib.h")
-#error "expected to *not* be able to find standard C headers"
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Driver/objc++-cpp-output.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/objc++-cpp-output.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/objc++-cpp-output.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang -emit-llvm -x objc++-cpp-output -S %s -o /dev/null
-// RUN: %clang -emit-llvm -x objc++-cpp-output -S %s -o /dev/null -### 2>&1 | FileCheck %s
-
-// PR13820
-// REQUIRES: LP64
-
-// Should compile without errors
- at protocol P
-- (void)m;
- at end
-void f() {}
-class C {};
-
-// Make sure the driver is passing all the necessary exception flags.
-// CHECK: "-fobjc-exceptions"
-// CHECK: "-fcxx-exceptions"
-// CHECK: "-fexceptions" 

Modified: trunk/contrib/llvm/tools/clang/test/Driver/objc-cpp-output.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/objc-cpp-output.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/objc-cpp-output.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang -emit-llvm -x objc-cpp-output -S %s -o /dev/null
-
-// PR13820
-// REQUIRES: LP64
-
-// Should compile without errors
- at protocol P
-- (void)m;
- at end
-void f() {}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/objc_default_synth.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/objc_default_synth.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/objc_default_synth.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// We should be synthesizing properties by default on all platforms now.
-// RUN: %clang -### -target armv7-unknown-freebsd %s 2>&1 | FileCheck %s
-// RUN: %clang -### -target armv7-apple-ios %s 2>&1 | FileCheck %s
-// RUN: %clang -### -target i686-apple-macosx %s 2>&1 | FileCheck %s
-// REQUIRES: clang-driver
-// CHECK: -fobjc-default-synthesize

Modified: trunk/contrib/llvm/tools/clang/test/Driver/openbsd.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/openbsd.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/openbsd.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LD %s
-// CHECK-LD: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
-// CHECK-LD: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o"
-
-// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -pg -pthread %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-PG %s
-// CHECK-PG: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
-// CHECK-PG: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}gcrt0.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-lgcc" "-lpthread_p" "-lc_p" "-lgcc" "{{.*}}crtend.o"
-
-// Check that the new linker flags are passed to OpenBSD
-// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -r %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-R %s
-// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -s %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-S %s
-// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -t %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-T %s
-// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -Z %s -### 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-Z %s
-// CHECK-LD-R: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
-// CHECK-LD-R: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-r" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o"
-// CHECK-LD-S: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
-// CHECK-LD-S: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-s" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o"
-// CHECK-LD-T: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
-// CHECK-LD-T: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-t" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o"
-// CHECK-LD-Z: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
-// CHECK-LD-Z: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-Z" "{{.*}}.o" "-lgcc" "-lc" "-lgcc" "{{.*}}crtend.o"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/option-aliases.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/option-aliases.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/option-aliases.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang -ccc-print-options \
-// RUN:  --save-temps --undefine-macro=FOO --undefine-macro FOO \
-// RUN: --param=FOO --output=FOO 2> %t
-// RUN: FileCheck --check-prefix=CHECK-OPTIONS < %t %s
-
-// CHECK-OPTIONS: Option 0 - Name: "-ccc-print-options", Values: {}
-// CHECK-OPTIONS: Option 1 - Name: "-save-temps", Values: {}
-// CHECK-OPTIONS: Option 2 - Name: "-U", Values: {"FOO"}
-// CHECK-OPTIONS: Option 3 - Name: "-U", Values: {"FOO"}
-// CHECK-OPTIONS: Option 4 - Name: "--param", Values: {"FOO"}
-// CHECK-OPTIONS: Option 5 - Name: "-o", Values: {"FOO"}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/output-file-cleanup.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/output-file-cleanup.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/output-file-cleanup.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: touch %t.s
-// RUN: not %clang -S -DCRASH -o %t.s -MMD -MF %t.d %s
-// RUN: test ! -f %t.s
-// RUN: test ! -f %t.d
-
-// RUN: touch %t.s
-// RUN: not %clang -S -DMISSING -o %t.s -MMD -MF %t.d %s
-// RUN: test ! -f %t.s
-// RUN: test ! -f %t.d
-
-// RUN: touch %t.s
-// RUN: not %clang -S -o %t.s -MMD -MF %t.d %s
-// RUN: test ! -f %t.s
-// RUN: test -f %t.d
-
-// REQUIRES: shell
-// REQUIRES: crash-recovery
-
-#ifdef CRASH
-#pragma clang __debug crash
-#elif defined(MISSING)
-#include "nonexistent.h"
-#else
-invalid C code
-#endif
-
-// RUN: touch %t1.c
-// RUN: echo "invalid C code" > %t2.c
-// RUN: cd %T && not %clang -S %t1.c %t2.c
-// RUN: test -f %t1.s
-// RUN: test ! -f %t2.s
-
-// RUN: touch %t1.c
-// RUN: touch %t2.c
-// RUN: chmod -r %t2.c
-// RUN: cd %T && not %clang -S %t1.c %t2.c
-// RUN: test -f %t1.s
-// RUN: test ! -f %t2.s
-
-// RUN: touch %t1.c
-// RUN: echo "invalid C code" > %t2.c
-// RUN: touch %t3.c
-// RUN: echo "invalid C code" > %t4.c
-// RUN: touch %t5.c
-// RUN: cd %T && not %clang -S %t1.c %t2.c %t3.c %t4.c %t5.c
-// RUN: test -f %t1.s
-// RUN: test ! -f %t2.s
-// RUN: test -f %t3.s
-// RUN: test ! -f %t4.s
-// RUN: test -f %t5.s

Modified: trunk/contrib/llvm/tools/clang/test/Driver/output-file-is-dir.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/output-file-is-dir.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/output-file-is-dir.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir
-// RUN: not %clang %s -c -emit-llvm -o %t.dir
-// RUN: test -d %t.dir
-
-int main() { return 0; }

Modified: trunk/contrib/llvm/tools/clang/test/Driver/parsing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/parsing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/parsing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang -ccc-print-options input -Yunknown -m32 -arch ppc -djoined -A separate -Ajoined -Wp,one,two -Xarch_joined AndSeparate -sectalign 1 2 3 2> %t
-// RUN: grep 'Option 0 - Name: "-ccc-print-options", Values: {}' %t
-// RUN: grep 'Option 1 - Name: "<input>", Values: {"input"}' %t
-// RUN: grep 'Option 2 - Name: "<unknown>", Values: {"-Yunknown"}' %t
-// RUN: grep 'Option 3 - Name: "-m32", Values: {}' %t
-// RUN: grep 'Option 4 - Name: "-arch", Values: {"ppc"}' %t
-// RUN: grep 'Option 5 - Name: "-d", Values: {"joined"}' %t
-// RUN: grep 'Option 6 - Name: "-A", Values: {"separate"}' %t
-// RUN: grep 'Option 7 - Name: "-A", Values: {"joined"}' %t
-// RUN: grep 'Option 8 - Name: "-Wp,", Values: {"one", "two"}' %t
-// RUN: grep 'Option 9 - Name: "-Xarch_", Values: {"joined", "AndSeparate"}' %t
-// RUN: grep 'Option 10 - Name: "-sectalign", Values: {"1", "2", "3"}' %t
-
-// RUN: not %clang -V 2> %t
-// RUN: grep "error: argument to '-V' is missing (expected 1 value)" %t
-// RUN: not %clang -sectalign 1 2 2> %t
-// RUN: grep "error: argument to '-sectalign' is missing (expected 3 values)" %t
-
-// Verify that search continues after find the first option.
-// RUN: %clang -ccc-print-options -Wally 2> %t
-// RUN: grep 'Option 0 - Name: "-ccc-print-options", Values: {}' %t
-// RUN: grep 'Option 1 - Name: "-W", Values: {"ally"}' %t

Modified: trunk/contrib/llvm/tools/clang/test/Driver/phases.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/phases.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/phases.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// Basic compilation for various types of files.
-// RUN: %clang -target i386-unknown-unknown -ccc-print-phases -x c %s -x objective-c %s -x c++ %s -x objective-c++ -x assembler %s -x assembler-with-cpp %s -x none %s 2>&1 | FileCheck -check-prefix=BASIC %s
-// BASIC: 0: input, "{{.*}}phases.c", c
-// BASIC: 1: preprocessor, {0}, cpp-output
-// BASIC: 2: compiler, {1}, assembler
-// BASIC: 3: assembler, {2}, object
-// BASIC: 4: input, "{{.*}}phases.c", objective-c
-// BASIC: 5: preprocessor, {4}, objective-c-cpp-output
-// BASIC: 6: compiler, {5}, assembler
-// BASIC: 7: assembler, {6}, object
-// BASIC: 8: input, "{{.*}}phases.c", c++
-// BASIC: 9: preprocessor, {8}, c++-cpp-output
-// BASIC: 10: compiler, {9}, assembler
-// BASIC: 11: assembler, {10}, object
-// BASIC: 12: input, "{{.*}}phases.c", assembler
-// BASIC: 13: assembler, {12}, object
-// BASIC: 14: input, "{{.*}}phases.c", assembler-with-cpp
-// BASIC: 15: preprocessor, {14}, assembler
-// BASIC: 16: assembler, {15}, object
-// BASIC: 17: input, "{{.*}}phases.c", c
-// BASIC: 18: preprocessor, {17}, cpp-output
-// BASIC: 19: compiler, {18}, assembler
-// BASIC: 20: assembler, {19}, object
-// BASIC: 21: linker, {3, 7, 11, 13, 16, 20}, image
-
-// Universal linked image.
-// RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -x c %s -arch ppc -arch i386 2>&1 | FileCheck -check-prefix=ULI %s
-// ULI: 0: input, "{{.*}}phases.c", c
-// ULI: 1: preprocessor, {0}, cpp-output
-// ULI: 2: compiler, {1}, assembler
-// ULI: 3: assembler, {2}, object
-// ULI: 4: linker, {3}, image
-// ULI: 5: bind-arch, "ppc", {4}, image
-// ULI: 6: bind-arch, "i386", {4}, image
-// ULI: 7: lipo, {5, 6}, image
-
-// Universal object file.
-// RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -c -x c %s -arch ppc -arch i386 2>&1 | FileCheck -check-prefix=UOF %s
-// UOF: 0: input, "{{.*}}phases.c", c
-// UOF: 1: preprocessor, {0}, cpp-output
-// UOF: 2: compiler, {1}, assembler
-// UOF: 3: assembler, {2}, object
-// UOF: 4: bind-arch, "ppc", {3}, object
-// UOF: 5: bind-arch, "i386", {3}, object
-// UOF: 6: lipo, {4, 5}, object
-
-// Arch defaulting
-// RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -c -x assembler %s 2>&1 | FileCheck -check-prefix=ARCH1 %s
-// ARCH1: 2: bind-arch, "i386", {1}, object
-// RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -c -x assembler %s -m32 -m64 2>&1 | FileCheck -check-prefix=ARCH2 %s
-// ARCH2: 2: bind-arch, "x86_64", {1}, object
-// RUN: %clang -target x86_64-apple-darwin9 -ccc-print-phases -c -x assembler %s 2>&1 | FileCheck -check-prefix=ARCH3 %s
-// ARCH3: 2: bind-arch, "x86_64", {1}, object
-// RUN: %clang -target x86_64-apple-darwin9 -ccc-print-phases -c -x assembler %s -m64 -m32 2>&1 | FileCheck -check-prefix=ARCH4 %s
-// ARCH4: 2: bind-arch, "i386", {1}, object
-
-// Analyzer
-// RUN: %clang -target i386-unknown-unknown -ccc-print-phases --analyze %s 2>&1 | FileCheck -check-prefix=ANALYZE %s
-// ANALYZE: 0: input, "{{.*}}phases.c", c
-// ANALYZE: 1: preprocessor, {0}, cpp-output
-// ANALYZE: 2: analyzer, {1}, plist
-
-// Precompiler
-// RUN: %clang -target i386-unknown-unknown -ccc-print-phases -x c-header %s 2>&1 | FileCheck -check-prefix=PCH %s
-// PCH: 0: input, "{{.*}}phases.c", c-header
-// PCH: 1: preprocessor, {0}, c-header-cpp-output
-// PCH: 2: precompiler, {1}, precompiled-header
-
-// Darwin overrides the handling for .s
-// RUN: touch %t.s
-// RUN: %clang -target i386-unknown-unknown -ccc-print-phases -c %t.s 2>&1 | FileCheck -check-prefix=DARWIN1 %s
-// DARWIN1: 0: input, "{{.*}}.s", assembler
-// DARWIN1: 1: assembler, {0}, object
-// RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -c %t.s 2>&1 | FileCheck -check-prefix=DARWIN2 %s
-// DARWIN2: 0: input, "{{.*}}.s", assembler-with-cpp
-// DARWIN2: 1: preprocessor, {0}, assembler
-// DARWIN2: 2: assembler, {1}, object
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/pic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/pic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/pic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,199 +0,0 @@
-// Test the driver's control over the PIC behavior. These consist of tests of
-// the relocation model flags and the pic level flags passed to CC1.
-//
-// CHECK-NO-PIC: "-mrelocation-model" "static"
-// CHECK-NO-PIC-NOT: "-pic-level"
-// CHECK-NO-PIC-NOT: "-pie-level"
-//
-// CHECK-PIC1: "-mrelocation-model" "pic"
-// CHECK-PIC1: "-pic-level" "1"
-//
-// CHECK-PIC2: "-mrelocation-model" "pic"
-// CHECK-PIC2: "-pic-level" "2"
-//
-// CHECK-PIE1: "-mrelocation-model" "pic"
-// CHECK-PIE1: "-pic-level" "1"
-// CHECK-PIE1: "-pie-level" "1"
-//
-// CHECK-PIE2: "-mrelocation-model" "pic"
-// CHECK-PIE2: "-pic-level" "2"
-// CHECK-PIE2: "-pie-level" "2"
-//
-// CHECK-PIE-LD: "{{.*}}ld{{(.exe)?}}"
-// CHECK-PIE-LD: "-pie"
-// CHECK-PIE-LD: "Scrt1.o" "crti.o" "crtbeginS.o"
-// CHECK-PIE-LD: "crtendS.o" "crtn.o"
-//
-// CHECK-DYNAMIC-NO-PIC-32: "-mrelocation-model" "dynamic-no-pic"
-// CHECK-DYNAMIC-NO-PIC-32-NOT: "-pic-level"
-// CHECK-DYNAMIC-NO-PIC-32-NOT: "-pie-level"
-//
-// CHECK-DYNAMIC-NO-PIC-64: "-mrelocation-model" "dynamic-no-pic"
-// CHECK-DYNAMIC-NO-PIC-64: "-pic-level" "2"
-// CHECK-DYNAMIC-NO-PIC-64-NOT: "-pie-level"
-//
-// CHECK-NON-DARWIN-DYNAMIC-NO-PIC: error: unsupported option '-mdynamic-no-pic' for target 'i386-unknown-unknown'
-//
-// CHECK-NO-PIE-NOT: "-pie"
-//
-// CHECK-NO-UNUSED-ARG-NOT: argument unused during compilation
-//
-// RUN: %clang -c %s -target i386-unknown-unknown -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC1
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-unknown-unknown -fpie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE1
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE2
-//
-// Check that PIC and PIE flags obey last-match-wins. If the last flag is
-// a no-* variant, regardless of which variant or which flags precede it, we
-// get no PIC.
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -fno-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fno-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fpie -fno-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fno-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -fno-PIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fno-PIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fpie -fno-PIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fno-PIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -fno-pie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fno-pie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fpie -fno-pie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fno-pie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -fno-PIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fno-PIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fpie -fno-PIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fno-PIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-//
-// Last-match-wins where both pic and pie are specified.
-// RUN: %clang -c %s -target i386-unknown-unknown -fpie -fpic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC1
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fpic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC1
-// RUN: %clang -c %s -target i386-unknown-unknown -fpie -fPIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fPIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -fpie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE1
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fpie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE1
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE2
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE2
-//
-// Last-match-wins when selecting level 1 vs. level 2.
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -fPIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fpic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC1
-// RUN: %clang -c %s -target i386-unknown-unknown -fpic -fPIE -fpie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE1
-// RUN: %clang -c %s -target i386-unknown-unknown -fpie -fPIC -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE2
-//
-// Make sure -pie is passed to along to ld and that the right *crt* files
-// are linked in.
-// RUN: %clang %s -target i386-unknown-freebsd -fPIE -pie -### \
-// RUN: --sysroot=%S/Inputs/basic_freebsd_tree 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE-LD
-// RUN: %clang %s -target i386-linux-gnu -fPIE -pie -### \
-// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE-LD
-// RUN: %clang %s -target i386-linux-gnu -fPIC -pie -### \
-// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIE-LD
-//
-// Disregard any of the PIC-specific flags if we have a trump-card flag.
-// RUN: %clang -c %s -target i386-unknown-unknown -mkernel -fPIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-unknown-unknown -static -fPIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-//
-// On Linux, disregard -pie if we have -shared.
-// RUN: %clang %s -target i386-unknown-linux -shared -pie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIE
-//
-// Darwin is a beautiful and unique snowflake when it comes to these flags.
-// When targetting a 32-bit darwin system, the -fno-* flag variants work and
-// disable PIC, but any other flag enables PIC (*not* PIE) even if the flag
-// specifies PIE. On 64-bit targets, there is simply nothing you can do, there
-// is no PIE, there is only PIC when it comes to compilation.
-// RUN: %clang -c %s -target i386-apple-darwin -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-apple-darwin -fpic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-apple-darwin -fPIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-apple-darwin -fpie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-apple-darwin -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-apple-darwin -fno-PIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -fpic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target x86_64-apple-darwin -fno-PIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target x86_64-apple-darwin -fno-PIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target x86_64-apple-darwin -fpic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target x86_64-apple-darwin -fPIE -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target x86_64-apple-darwin -fPIC -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-UNUSED-ARG
-//
-// Darwin gets even more special with '-mdynamic-no-pic'. This flag is only
-// valid on Darwin, and it's behavior is very strange but needs to remain
-// consistent for compatibility.
-// RUN: %clang -c %s -target i386-unknown-unknown -mdynamic-no-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NON-DARWIN-DYNAMIC-NO-PIC
-// RUN: %clang -c %s -target i386-apple-darwin -mdynamic-no-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-32
-// RUN: %clang -c %s -target i386-apple-darwin -mdynamic-no-pic -fno-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-32
-// RUN: %clang -c %s -target i386-apple-darwin -mdynamic-no-pic -fpie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-32
-// RUN: %clang -c %s -target x86_64-apple-darwin -mdynamic-no-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-64
-// RUN: %clang -c %s -target x86_64-apple-darwin -mdynamic-no-pic -fno-pic -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-64
-// RUN: %clang -c %s -target x86_64-apple-darwin -mdynamic-no-pic -fpie -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-64
-//
-// Checks for ARM+Apple+IOS including -fapple-kext, -mkernel, and iphoneos
-// version boundaries.
-// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=6.0.0 -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target armv7-apple-ios -mkernel -miphoneos-version-min=6.0.0 -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
-// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=5.0.0 -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC
-// RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=6.0.0 -static -### 2>&1 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-PIC

Modified: trunk/contrib/llvm/tools/clang/test/Driver/ppc-features.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/ppc-features.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/ppc-features.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// Check that we error when -faltivec is specified on non-ppc platforms.
-
-// RUN: %clang -target powerpc-unk-unk -faltivec -fsyntax-only %s
-// RUN: %clang -target powerpc64-linux-gnu -faltivec -fsyntax-only %s
-// RUN: %clang -target powerpc64-linux-gnu -maltivec -fsyntax-only %s
-
-// RUN: %clang -target i386-pc-win32 -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang -target x86_64-unknown-freebsd -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang -target armv6-apple-darwin -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang -target armv7-apple-darwin -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang -target mips-linux-gnu -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang -target mips64-linux-gnu -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang -target sparc-unknown-solaris -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK: invalid argument '-faltivec' only allowed with 'ppc/ppc64'
-
-// Check that -fno-altivec and -mno-altivec correctly disable the altivec
-// target feature on powerpc.
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-1 %s
-// CHECK-1: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-altivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-2 %s
-// CHECK-2: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -faltivec -mno-altivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-3 %s
-// CHECK-3: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -maltivec -fno-altivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-4 %s
-// CHECK-4: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-altivec -faltivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-5 %s
-// CHECK-5-NOT: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -maltivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-6 %s
-// CHECK-6-NOT: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=7400 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-7 %s
-// CHECK-7: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=g4 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-8 %s
-// CHECK-8: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=7450 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-9 %s
-// CHECK-9: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=g4+ -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-10 %s
-// CHECK-10: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=970 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-11 %s
-// CHECK-11: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=g5 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-12 %s
-// CHECK-12: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=pwr6 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-13 %s
-// CHECK-13: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=pwr7 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-14 %s
-// CHECK-14: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=ppc64 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-15 %s
-// CHECK-15: "-target-feature" "-altivec"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-qpx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOQPX %s
-// CHECK-NOQPX: "-target-feature" "-qpx"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-qpx -mqpx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-QPX %s
-// CHECK-QPX-NOT: "-target-feature" "-qpx"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-mfcrf -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOMFCRF %s
-// CHECK-NOMFCRF: "-target-feature" "-mfocrf"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-mfcrf -mmfcrf -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-MFCRF %s
-// CHECK-MFCRF: "-target-feature" "+mfocrf"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-popcntd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOPOPCNTD %s
-// CHECK-NOPOPCNTD: "-target-feature" "-popcntd"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-popcntd -mpopcntd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-POPCNTD %s
-// CHECK-POPCNTD: "-target-feature" "+popcntd"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-fprnd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOFPRND %s
-// CHECK-NOFPRND: "-target-feature" "-fprnd"
-
-// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-fprnd -mfprnd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-FPRND %s
-// CHECK-FPRND: "-target-feature" "+fprnd"
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/prefixed-tools.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/prefixed-tools.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/prefixed-tools.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree -o %t.o -no-integrated-as \
-// RUN:        -target x86_64--linux %s 2>&1 | \
-// RUN: FileCheck --check-prefix=CHECK-M64 %s
-
-// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree -o %t.o -no-integrated-as \
-// RUN:        -m32 -target x86_64--linux %s 2>&1 | \
-// RUN: FileCheck --check-prefix=CHECK-M32 %s
-
-// CHECK-M64: "{{.*}}{{[/\\]}}prefixed_tools_tree{{[/\\]}}x86_64--linux-as"
-// CHECK-M64: "{{.*}}{{[/\\]}}prefixed_tools_tree{{[/\\]}}x86_64--linux-ld"
-// CHECK-M32: "{{.*}}{{[/\\]}}prefixed_tools_tree{{[/\\]}}x86_64--linux-as"
-// CHECK-M32: "{{.*}}{{[/\\]}}prefixed_tools_tree{{[/\\]}}x86_64--linux-ld"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/preprocessor.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/preprocessor.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/preprocessor.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -E -x c-header %s > %t
-// RUN: grep 'B B' %t
-
-#define A B
-A A
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/pth.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/pth.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/pth.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test transparent PTH support.
-
-// RUN: %clang -no-canonical-prefixes -ccc-pch-is-pth -x c-header %s -o %t.h.pth -### 2> %t.log
-// RUN: FileCheck -check-prefix CHECK1 -input-file %t.log %s
-
-// CHECK1: "{{.*}}/clang{{.*}}" "-cc1" {{.*}} "-o" "{{.*}}.h.pth" "-x" "c-header" "{{.*}}pth.c"
-
-// RUN: touch %t.h.pth
-// RUN: %clang -no-canonical-prefixes -ccc-pch-is-pth -E -include %t.h %s -### 2> %t.log
-// RUN: FileCheck -check-prefix CHECK2 -input-file %t.log %s
-
-// CHECK2: "{{.*}}/clang{{.*}}" "-cc1" {{.*}}"-include-pth" "{{.*}}.h.pth" {{.*}}"-x" "c" "{{.*}}pth.c"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/qa_override.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/qa_override.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/qa_override.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: env QA_OVERRIDE_GCC3_OPTIONS="#+-Os +-Oz +-O +-O3 +-Oignore +a +b +c xb Xa Omagic ^-ccc-print-options  " %clang x -O2 b -O3 2>&1 | FileCheck %s
-// RUN: env QA_OVERRIDE_GCC3_OPTIONS="x-Werror +-mfoo" %clang -Werror %s -c 2>&1 | FileCheck %s -check-prefix=RM-WERROR
-
-// FIXME: It seems doesn't work with gcc-driver.
-// REQUIRES: clang-driver
-
-// CHECK-NOT: ###
-// CHECK: Option 0 - Name: "-ccc-print-options", Values: {}
-// CHECK-NEXT: Option 1 - Name: "<input>", Values: {"x"}
-// CHECK-NEXT: Option 2 - Name: "-O", Values: {"ignore"}
-// CHECK-NEXT: Option 3 - Name: "-O", Values: {"magic"}
-
-// RM-WERROR: ### QA_OVERRIDE_GCC3_OPTIONS: x-Werror +-mfoo
-// RM-WERROR-NEXT: ### Deleting argument -Werror
-// RM-WERROR-NEXT: ### Adding argument -mfoo at end
-// RM-WERROR-NEXT: warning: argument unused during compilation: '-mfoo'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/r600-mcpu.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/r600-mcpu.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/r600-mcpu.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// Check that -mcpu works for all supported GPUs
-
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=r600 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv630 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv635 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv610 %s -o - 2>&1 | FileCheck --check-prefix=RS880-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv620 %s -o - 2>&1 | FileCheck --check-prefix=RS880-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rs780 %s -o - 2>&1 | FileCheck --check-prefix=RS880-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rs880 %s -o - 2>&1 | FileCheck --check-prefix=RS880-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv670 %s -o - 2>&1 | FileCheck --check-prefix=RV670-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv710 %s -o - 2>&1 | FileCheck --check-prefix=RV710-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv730 %s -o - 2>&1 | FileCheck --check-prefix=RV730-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv740 %s -o - 2>&1 | FileCheck --check-prefix=RV770-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv770 %s -o - 2>&1 | FileCheck --check-prefix=RV770-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=palm %s -o - 2>&1 | FileCheck --check-prefix=CEDAR-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=cedar %s -o - 2>&1 | FileCheck --check-prefix=CEDAR-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=sumo %s -o - 2>&1 | FileCheck --check-prefix=SUMO-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=sumo2 %s -o - 2>&1 | FileCheck --check-prefix=SUMO-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=redwood %s -o - 2>&1 | FileCheck --check-prefix=REDWOOD-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=juniper %s -o - 2>&1 | FileCheck --check-prefix=JUNIPER-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=juniper %s -o - 2>&1 | FileCheck --check-prefix=JUNIPER-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=hemlock %s -o - 2>&1 | FileCheck --check-prefix=CYPRESS-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=cypress %s -o - 2>&1 | FileCheck --check-prefix=CYPRESS-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=barts %s -o - 2>&1 | FileCheck --check-prefix=BARTS-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=turks %s -o - 2>&1 | FileCheck --check-prefix=TURKS-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=caicos %s -o - 2>&1 | FileCheck --check-prefix=CAICOS-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=cayman %s -o - 2>&1 | FileCheck --check-prefix=CAYMAN-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=aruba %s -o - 2>&1 | FileCheck --check-prefix=CAYMAN-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=tahiti %s -o - 2>&1 | FileCheck --check-prefix=TAHITI-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=pitcairn %s -o - 2>&1 | FileCheck --check-prefix=PITCAIRN-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=verde %s -o - 2>&1 | FileCheck --check-prefix=VERDE-CHECK %s
-// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=oland %s -o - 2>&1 | FileCheck --check-prefix=OLAND-CHECK %s
-
-// R600-CHECK:  "-target-cpu" "r600"
-// RS880-CHECK: "-target-cpu" "rs880"
-// RV670-CHECK: "-target-cpu" "rv670"
-// RV710-CHECK: "-target-cpu" "rv710"
-// RV730-CHECK: "-target-cpu" "rv730"
-// RV770-CHECK: "-target-cpu" "rv770"
-// CEDAR-CHECK: "-target-cpu" "cedar"
-// REDWOOD-CHECK: "-target-cpu" "redwood"
-// SUMO-CHECK: "-target-cpu" "sumo"
-// JUNIPER-CHECK: "-target-cpu" "juniper"
-// CYPRESS-CHECK: "-target-cpu" "cypress"
-// BARTS-CHECK: "-target-cpu" "barts"
-// TURKS-CHECK: "-target-cpu" "turks"
-// CAICOS-CHECK: "-target-cpu" "caicos"
-// CAYMAN-CHECK: "-target-cpu" "cayman"
-// TAHITI-CHECK: "-target-cpu" "tahiti"
-// PITCAIRN-CHECK: "-target-cpu" "pitcairn"
-// VERDE-CHECK: "-target-cpu" "verde"
-// OLAND-CHECK: "-target-cpu" "oland"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/redundant-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/redundant-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/redundant-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 \
-// RUN:   -Werror -x c -x c -fsyntax-only %s

Modified: trunk/contrib/llvm/tools/clang/test/Driver/redzone.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/redzone.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/redzone.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -mno-red-zone %s -S -emit-llvm -o %t.log
-// RUN: grep 'noredzone' %t.log
-// RUN: %clang -target i386-unknown-unknown -mred-zone %s -S -emit-llvm -o %t.log
-// RUN: grep -v 'noredzone' %t.log 
-
-int foo() { return 42; }

Modified: trunk/contrib/llvm/tools/clang/test/Driver/retain-comments-from-system-headers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/retain-comments-from-system-headers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/retain-comments-from-system-headers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// Check that we pass -fretain-comments-from-system-headers to frontend.
-//
-// RUN: %clang -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-RETAIN
-// RUN: %clang -c %s -fretain-comments-from-system-headers -### 2>&1 | FileCheck %s --check-prefix=CHECK-RETAIN
-//
-// CHECK-RETAIN: -fretain-comments-from-system-headers
-//
-// CHECK-NO-RETAIN-NOT: -fretain-comments-from-system-headers
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/rewrite-legacy-objc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/rewrite-legacy-objc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/rewrite-legacy-objc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang -no-canonical-prefixes -target x86_64-apple-macosx10.7.0 -rewrite-legacy-objc %s -o - -### 2>&1 | \
-// RUN:   FileCheck -check-prefix=TEST0 %s
-// TEST0: clang{{.*}}" "-cc1"
-// TEST0: "-rewrite-objc"
-// FIXME: CHECK-NOT is broken somehow, it doesn't work here. Check adjacency instead.
-// TEST0: "-fmessage-length" "0" "-stack-protector" "1" "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx-fragile" "-fobjc-default-synthesize-properties" "-fencode-extended-block-signature" "-fno-objc-infer-related-result-type" "-fobjc-exceptions" "-fexceptions" "-fdiagnostics-show-option"
-// TEST0: rewrite-legacy-objc.m"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/rewrite-objc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/rewrite-objc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/rewrite-objc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -no-canonical-prefixes -target x86_64-apple-macosx10.7.0 -rewrite-objc %s -o - -### 2>&1 | \
-// RUN:   FileCheck -check-prefix=TEST0 %s
-// TEST0: clang{{.*}}" "-cc1"
-// TEST0: "-rewrite-objc"
-// FIXME: CHECK-NOT is broken somehow, it doesn't work here. Check adjacency instead.
-// TEST0: "-fmessage-length" "0" "-stack-protector" "1" "-mstackrealign" "-fblocks" "-fobjc-runtime=macosx" "-fobjc-dispatch-method=mixed" "-fobjc-default-synthesize-properties" "-fencode-extended-block-signature" "-fno-objc-infer-related-result-type" "-fobjc-exceptions" "-fexceptions" "-fdiagnostics-show-option"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/sanitizer-ld.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/sanitizer-ld.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/sanitizer-ld.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,155 +0,0 @@
-// Test sanitizers ld flags.
-
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -fsanitize=address \
-// RUN:     -resource-dir=%S/Inputs/resource_dir \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX %s
-//
-// CHECK-ASAN-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
-// CHECK-ASAN-LINUX-NOT: "-lc"
-// CHECK-ASAN-LINUX: libclang_rt.asan-i386.a"
-// CHECK-ASAN-LINUX: "-lpthread"
-// CHECK-ASAN-LINUX: "-lrt"
-// CHECK-ASAN-LINUX: "-ldl"
-// CHECK-ASAN-LINUX-NOT: "-export-dynamic"
-// CHECK-ASAN-LINUX: "--dynamic-list={{.*}}libclang_rt.asan-i386.a.syms"
-
-// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux -fsanitize=address \
-// RUN:     -resource-dir=%S/Inputs/empty_resource_dir \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX %s
-//
-// CHECK-ASAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
-// CHECK-ASAN-LINUX-CXX-NOT: "-lc"
-// CHECK-ASAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
-// CHECK-ASAN-LINUX-CXX: "-lpthread"
-// CHECK-ASAN-LINUX-CXX: "-lrt"
-// CHECK-ASAN-LINUX-CXX: "-ldl"
-// CHECK-ASAN-LINUX-CXX: "-export-dynamic"
-// CHECK-ASAN-LINUX-CXX-NOT: "--dynamic-list"
-// CHECK-ASAN-LINUX-CXX: stdc++
-
-// RUN: %clang -no-canonical-prefixes %s -### -o /dev/null -fsanitize=address \
-// RUN:     -target i386-unknown-linux --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:     -lstdc++ -static 2>&1 \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN-LINUX-CXX-STATIC %s
-//
-// CHECK-ASAN-LINUX-CXX-STATIC: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
-// CHECK-ASAN-LINUX-CXX-STATIC-NOT: stdc++
-// CHECK-ASAN-LINUX-CXX-STATIC: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
-// CHECK-ASAN-LINUX-CXX-STATIC: stdc++
-
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-androideabi -fsanitize=address \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID %s
-//
-// CHECK-ASAN-ANDROID: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
-// CHECK-ASAN-ANDROID-NOT: "-lc"
-// CHECK-ASAN-ANDROID: libclang_rt.asan-arm-android.so"
-// CHECK-ASAN-ANDROID-NOT: "-lpthread"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target arm-linux-androideabi -fsanitize=address \
-// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
-// RUN:     -shared \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-SHARED %s
-//
-// CHECK-ASAN-ANDROID-SHARED: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
-// CHECK-ASAN-ANDROID-SHARED-NOT: "-lc"
-// CHECK-ASAN-ANDROID-SHARED: libclang_rt.asan-arm-android.so"
-// CHECK-ASAN-ANDROID-SHARED-NOT: "-lpthread"
-
-// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux -lstdc++ -fsanitize=thread \
-// RUN:     -resource-dir=%S/Inputs/resource_dir \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-TSAN-LINUX-CXX %s
-//
-// CHECK-TSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
-// CHECK-TSAN-LINUX-CXX-NOT: stdc++
-// CHECK-TSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.tsan-x86_64.a" "-no-whole-archive"
-// CHECK-TSAN-LINUX-CXX: "-lpthread"
-// CHECK-TSAN-LINUX-CXX: "-lrt"
-// CHECK-TSAN-LINUX-CXX: "-ldl"
-// CHECK-TSAN-LINUX-CXX-NOT: "-export-dynamic"
-// CHECK-TSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.tsan-x86_64.a.syms"
-// CHECK-TSAN-LINUX-CXX: stdc++
-
-// RUN: %clangxx -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -target x86_64-unknown-linux -lstdc++ -fsanitize=memory \
-// RUN:     -resource-dir=%S/Inputs/resource_dir \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-MSAN-LINUX-CXX %s
-//
-// CHECK-MSAN-LINUX-CXX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
-// CHECK-MSAN-LINUX-CXX-NOT: stdc++
-// CHECK-MSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.msan-x86_64.a" "-no-whole-archive"
-// CHECK-MSAN-LINUX-CXX: "-lpthread"
-// CHECK-MSAN-LINUX-CXX: "-lrt"
-// CHECK-MSAN-LINUX-CXX: "-ldl"
-// CHECK-MSAN-LINUX-CXX-NOT: "-export-dynamic"
-// CHECK-MSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.msan-x86_64.a.syms"
-// CHECK-MSAN-LINUX-CXX: stdc++
-
-// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
-// CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
-// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
-// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
-// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
-// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
-// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
-// CHECK-UBSAN-LINUX: "-lpthread"
-// CHECK-UBSAN-LINUX-NOT: "-lstdc++"
-
-// RUN: %clangxx -fsanitize=undefined %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-CXX %s
-// CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
-// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
-// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
-// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
-// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
-// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
-// CHECK-UBSAN-LINUX-CXX: "-lpthread"
-// CHECK-UBSAN-LINUX-CXX: "-lstdc++"
-
-// RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX %s
-// CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
-// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
-// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
-// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
-// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
-// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
-// CHECK-ASAN-UBSAN-LINUX: "-lpthread"
-// CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
-
-// RUN: %clangxx -fsanitize=address,undefined %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:   | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX %s
-// CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
-// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
-// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
-// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
-// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
-// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
-// CHECK-ASAN-UBSAN-LINUX-CXX: "-lpthread"
-// CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
-
-// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:     --sysroot=%S/Inputs/basic_linux_tree \
-// RUN:     -shared \
-// RUN:   | FileCheck --check-prefix=CHECK-UBSAN-LINUX-SHARED %s
-// CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"
-// CHECK-UBSAN-LINUX-SHARED-NOT: libclang_rt.ubsan-i386.a"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/save-temps.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/save-temps.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/save-temps.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin -save-temps -arch x86_64 %s -### 2>&1 \
-// RUN:   | FileCheck %s
-// CHECK: "-o" "save-temps.i"
-// CHECK: "-o" "save-temps.s"
-// CHECK: "-o" "save-temps.o"
-// CHECK: "-o" "a.out" 
-
-// RUN: %clang -target x86_64-apple-darwin -save-temps -arch i386 -arch x86_64 %s -### 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=MULT-ARCH
-// MULT-ARCH: "-o" "save-temps-i386.i"
-// MULT-ARCH: "-o" "save-temps-i386.s"
-// MULT-ARCH: "-o" "save-temps-i386.o"
-// MULT-ARCH: "-o" "a.out-i386" 
-// MULT-ARCH: "-o" "save-temps-x86_64.i"
-// MULT-ARCH: "-o" "save-temps-x86_64.s"
-// MULT-ARCH: "-o" "save-temps-x86_64.o"
-// MULT-ARCH: "-o" "a.out-x86_64" 
-// MULT-ARCH: lipo
-// MULT-ARCH: "-create" "-output" "a.out" "a.out-i386" "a.out-x86_64"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/split-debug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/split-debug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/split-debug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// Check that we split debug output properly
-//
-// REQUIRES: asserts
-// RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -c -### %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-ACTIONS < %t %s
-//
-// CHECK-ACTIONS: objcopy{{.*}}--extract-dwo{{.*}}"split-debug.dwo"
-// CHECK-ACTIONS: objcopy{{.*}}--strip-dwo{{.*}}"split-debug.o"
-
-
-// RUN: %clang -target x86_64-macosx -gsplit-dwarf -c -### %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-NO-ACTIONS < %t %s
-//
-// CHECK-NO-ACTIONS-NOT: -split-dwarf
-
-
-// RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -o Bad.x -### %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-BAD < %t %s
-//
-// CHECK-BAD-NOT: "Bad.dwo"
-
-// RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -c -### %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-OPTION < %t %s
-//
-// CHECK-OPTION: "-split-dwarf-file" "split-debug.dwo"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/split-debug.s
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/split-debug.s	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/split-debug.s	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// Check that we split debug output properly
-//
-// REQUIRES: asserts
-// RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -c -### %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-ACTIONS < %t %s
-//
-// CHECK-ACTIONS: objcopy{{.*}}--extract-dwo{{.*}}"split-debug.dwo"
-// CHECK-ACTIONS: objcopy{{.*}}--strip-dwo{{.*}}"split-debug.o"
-
-
-// RUN: %clang -target x86_64-macosx -gsplit-dwarf -c -### %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-NO-ACTIONS < %t %s
-//
-// CHECK-NO-ACTIONS-NOT: -split-dwarf
-
-
-// RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -o Bad.x -### %s 2> %t
-// RUN: FileCheck -check-prefix=CHECK-BAD < %t %s
-//
-// CHECK-BAD-NOT: "Bad.dwo"
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/stack-protector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/stack-protector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/stack-protector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang -fno-stack-protector -### %s 2>&1 | FileCheck %s -check-prefix=NOSSP
-// NOSSP-NOT: "-stack-protector" "1"
-// NOSSP-NOT: "-stack-protector-buffer-size" 
-
-// RUN: %clang -fstack-protector -### %s 2>&1 | FileCheck %s -check-prefix=SSP
-// SSP: "-stack-protector" "1"
-// SSP-NOT: "-stack-protector-buffer-size" 
-
-// RUN: %clang -fstack-protector --param ssp-buffer-size=16 -### %s 2>&1 | FileCheck %s -check-prefix=SSP-BUF
-// SSP-BUF: "-stack-protector" "1"
-// SSP-BUF: "-stack-protector-buffer-size" "16" 

Modified: trunk/contrib/llvm/tools/clang/test/Driver/stackrealign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/stackrealign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/stackrealign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang -### %s 2>&1 | FileCheck %s -check-prefix=NORMAL
-// NORMAL-NOT: -force-align-stack
-// NORMAL: -mstackrealign
-
-// RUN: %clang -### -mstackrealign %s 2>&1 | FileCheck %s -check-prefix=MREALIGN
-// MREALIGN: -force-align-stack
-// MREALIGN: -mstackrealign
-
-// RUN: %clang -### -mno-stackrealign %s 2>&1 | \
-// RUN: FileCheck %s -check-prefix=MNOREALIGN
-// MNOREALIGN-NOT: -force-align-stack
-// MNOREALIGN-NOT: -mstackrealign

Modified: trunk/contrib/llvm/tools/clang/test/Driver/std.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/std.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/std.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -std=c99 -trigraphs -std=gnu99 %s -E -o - | FileCheck -check-prefix=OVERRIDE %s
-// OVERRIDE: ??(??)
-// RUN: %clang -ansi %s -E -o - | FileCheck -check-prefix=ANSI %s
-// ANSI: []
-// RUN: %clang -std=gnu99 -trigraphs %s -E -o - | FileCheck -check-prefix=EXPLICIT %s
-// EXPLICIT: []
-
-??(??)

Modified: trunk/contrib/llvm/tools/clang/test/Driver/std.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/std.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/std.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang -std=c++98 %s -Wno-c++0x-compat -fsyntax-only 2>&1 | FileCheck -check-prefix=CXX98 %s
-// RUN: %clang -std=gnu++98 %s -Wno-c++0x-compat -fsyntax-only 2>&1 | FileCheck -check-prefix=GNUXX98 %s
-// RUN: %clang -std=c++03 %s -Wno-c++0x-compat -fsyntax-only 2>&1 | FileCheck -check-prefix=CXX98 %s
-// RUN: %clang -std=c++0x %s -fsyntax-only 2>&1 | FileCheck -check-prefix=CXX11 %s
-// RUN: %clang -std=gnu++0x %s -fsyntax-only 2>&1 | FileCheck -check-prefix=GNUXX11 %s
-// RUN: %clang -std=c++11 %s -fsyntax-only 2>&1 | FileCheck -check-prefix=CXX11 %s
-// RUN: %clang -std=gnu++11 %s -fsyntax-only 2>&1 | FileCheck -check-prefix=GNUXX11 %s
-// RUN: %clang -std=c++1y %s -fsyntax-only 2>&1 | FileCheck -check-prefix=CXX1Y %s
-// RUN: %clang -std=gnu++1y %s -fsyntax-only 2>&1 | FileCheck -check-prefix=GNUXX1Y %s
-
-void f(int n) {
-  typeof(n)();
-  decltype(n)();
-}
-
-// CXX98: undeclared identifier 'typeof'
-// CXX98: undeclared identifier 'decltype'
-
-// GNUXX98-NOT: undeclared identifier 'typeof'
-// GNUXX98: undeclared identifier 'decltype'
-
-// CXX11: undeclared identifier 'typeof'
-// CXX11-NOT: undeclared identifier 'decltype'
-
-// GNUXX11-NOT: undeclared identifier 'typeof'
-// GNUXX11-NOT: undeclared identifier 'decltype'
-
-// CXX1Y: undeclared identifier 'typeof'
-// CXX1Y-NOT: undeclared identifier 'decltype'
-
-// GNUXX1Y-NOT: undeclared identifier 'typeof'
-// GNUXX1Y-NOT: undeclared identifier 'decltype'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/sysroot-flags.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/sysroot-flags.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/sysroot-flags.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// Check for proper handling of --sysroot and -isysroot flags.
-
-// RUN: %clang -### -fsyntax-only -isysroot /foo/bar %s 2>&1 | \
-// RUN:   FileCheck %s -check-prefix=ISYSROOT
-// ISYSROOT: "-isysroot" "{{[^"]*}}/foo/bar"
-
-// Check that we get both isysroot for headers, and pass --sysroot on to GCC to
-// produce the final binary.
-// RUN: %clang -### -target x86_64-unknown-linux-gnu \
-// RUN:   --sysroot=/foo/bar -o /dev/null %s 2>&1 | \
-// RUN:   FileCheck %s -check-prefix=SYSROOT_EQ
-// SYSROOT_EQ: "-isysroot" "{{[^"]*}}/foo/bar"
-// SYSROOT_EQ: "--sysroot{{" "|=}}{{[^"]*}}/foo/bar"
-
-// Check for overriding the header sysroot by providing both --sysroot and
-// -isysroot.
-// RUN: %clang -### -target x86_64-unknown-linux-gnu -isysroot /baz \
-// RUN:   --sysroot=/foo/bar -o /dev/null %s 2>&1 | FileCheck %s \
-// RUN:   -check-prefix=ISYSROOT_AND_SYSROOT
-// ISYSROOT_AND_SYSROOT: "-isysroot" "{{[^"]*}}/baz"
-// ISYSROOT_AND_SYSROOT: "--sysroot{{" "|=}}{{[^"]*}}/foo/bar"
-
-// Check that omitting the equals works as well.
-// RUN: %clang -### -target x86_64-unknown-linux-gnu \
-// RUN:   --sysroot /foo/bar -o /dev/null %s 2>&1 | \
-// RUN:   FileCheck %s -check-prefix=SYSROOT_SEPARATE
-// SYSROOT_SEPARATE: "-isysroot" "{{[^"]*}}/foo/bar"
-// SYSROOT_SEPARATE: "--sysroot{{" "|=}}{{[^"]*}}/foo/bar"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/sysroot.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/sysroot.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/sysroot.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// Check that --sysroot= also applies to header search paths.
-// RUN: %clang -target i386-unk-unk --sysroot=/FOO -### -E %s 2> %t1
-// RUN: FileCheck --check-prefix=CHECK-SYSROOTEQ < %t1 %s
-// CHECK-SYSROOTEQ: "-cc1"{{.*}} "-isysroot" "{{[^"]*}}/FOO"
-
-// Apple Darwin uses -isysroot as the syslib root, too.
-// RUN: touch %t2.o
-// RUN: %clang -target i386-apple-darwin10 \
-// RUN:   -isysroot /FOO -### %t2.o 2> %t2
-// RUN: FileCheck --check-prefix=CHECK-APPLE-ISYSROOT < %t2 %s
-// CHECK-APPLE-ISYSROOT: "-arch" "i386"{{.*}} "-syslibroot" "{{[^"]*}}/FOO"
-
-// Check that honor --sysroot= over -isysroot, for Apple Darwin.
-// RUN: touch %t3.o
-// RUN: %clang -target i386-apple-darwin10 \
-// RUN:   -isysroot /FOO --sysroot=/BAR -### %t3.o 2> %t3
-// RUN: FileCheck --check-prefix=CHECK-APPLE-SYSROOT < %t3 %s
-// CHECK-APPLE-SYSROOT: "-arch" "i386"{{.*}} "-syslibroot" "{{[^"]*}}/BAR"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/target-as.s
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/target-as.s	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/target-as.s	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// REQUIRES: clang-driver
-
-// Make sure the -march is passed down to cc1as.
-// RUN: %clang -target i386-unknown-freebsd -### -c -integrated-as %s \
-// RUN: -march=geode 2>&1 | FileCheck -check-prefix=TARGET %s
-//
-// TARGET: "-cc1as"
-// TARGET: "-target-cpu" "geode"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/target-triple-deployment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/target-triple-deployment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/target-triple-deployment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: touch %t.o
-// RUN: %clang -target x86_64-apple-macosx -### %t.o 2> %t.log
-// RUN: %clang -target x86_64-apple-darwin9 -### %t.o 2>> %t.log
-// RUN: %clang -target x86_64-apple-macosx10.7 -### %t.o 2>> %t.log
-//
-// RUN: %clang -target armv7-apple-ios -### %t.o 2>> %t.log
-// RUN: %clang -target armv7-apple-ios0.0 -### %t.o 2>> %t.log
-// RUN: %clang -target armv7-apple-ios1.2.3 -### %t.o 2>> %t.log
-// RUN: %clang -target armv7-apple-ios5.0 -### %t.o 2>> %t.log
-//
-// RUN: FileCheck %s < %t.log
-
-// CHECK: {{ld(.exe)?"}}
-// CHECK: -macosx_version_min
-// CHECK: 10.4.0
-// CHECK: {{ld(.exe)?"}}
-// CHECK: -macosx_version_min
-// CHECK: 10.5.0
-// CHECK: {{ld(.exe)?"}}
-// CHECK: -macosx_version_min
-// CHECK: 10.7.0
-// CHECK: {{ld(.exe)?"}}
-// CHECK: -iphoneos_version_min
-// CHECK: 3.0.0
-// CHECK: {{ld(.exe)?"}}
-// CHECK: -iphoneos_version_min
-// CHECK: 3.0.0
-// CHECK: {{ld(.exe)?"}}
-// CHECK: -iphoneos_version_min
-// CHECK: 1.2.3
-// CHECK: {{ld(.exe)?"}}
-// CHECK: -iphoneos_version_min
-// CHECK: 5.0.0

Modified: trunk/contrib/llvm/tools/clang/test/Driver/target.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/target.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/target.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang -no-canonical-prefixes -target unknown-unknown-unknown -c %s \
-// RUN:   -o %t.o -### 2>&1 | FileCheck %s
-//
-// Ensure we get a crazy triple here as we asked for one.
-// CHECK: Target: unknown-unknown-unknown
-//
-// Also, ensure we don't blindly hand our target selection logic down to GCC.
-// CHECK: "{{.*gcc(\.[Ee][Xx][Ee])?}}"
-// CHECK-NOT: "-target"
-// CHECK-NOT: "unknown-unknown-unknown"
-// CHECK: "-x" "assembler"

Modified: trunk/contrib/llvm/tools/clang/test/Driver/tsan.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/tsan.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/tsan.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang     -target i386-unknown-unknown -fsanitize=thread %s -S -emit-llvm -o - | FileCheck %s
-// RUN: %clang -O1 -target i386-unknown-unknown -fsanitize=thread %s -S -emit-llvm -o - | FileCheck %s
-// RUN: %clang -O2 -target i386-unknown-unknown -fsanitize=thread %s -S -emit-llvm -o - | FileCheck %s
-// RUN: %clang -O3 -target i386-unknown-unknown -fsanitize=thread %s -S -emit-llvm -o - | FileCheck %s
-// RUN: %clang     -target i386-unknown-unknown -fsanitize=thread  %s -S -emit-llvm -o - | FileCheck %s
-// Verify that -fsanitize=thread invokes tsan instrumentation.
-
-int foo(int *a) { return *a; }
-// CHECK: __tsan_init

Modified: trunk/contrib/llvm/tools/clang/test/Driver/unknown-arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/unknown-arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/unknown-arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: not %clang_cc1 %s -cake-is-lie -%0 -%d 2> %t.log
-// RUN: FileCheck %s -input-file=%t.log
-
-// CHECK: unknown argument
-// CHECK: unknown argument
-// CHECK: unknown argument

Modified: trunk/contrib/llvm/tools/clang/test/Driver/unknown-gcc-arch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/unknown-gcc-arch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/unknown-gcc-arch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang -target x86_64-unknown-unknown -c -x assembler %s -### 2>&1 \
-// RUN:   | FileCheck -check-prefix=X86_64 %s
-// X86_64: {{.*gcc.*-m64}}
-
-// RUN: %clang -target x86_64-unknown-unknown -c -x assembler %s -### -m32 2>&1 \
-// RUN:   | FileCheck -check-prefix=X86_64-M32 %s
-// X86_64-M32: {{.*gcc.*-m32}}
-
-// RUN: %clang -target i386-unknown-unknown -c -x assembler %s -### 2>&1 \
-// RUN:   | FileCheck -check-prefix=I386 %s
-// I386: {{.*gcc.*-m32}}
-
-// RUN: %clang -target i386-unknown-unknown -c -x assembler %s -### -m64 2>&1 \
-// RUN:   | FileCheck -check-prefix=I386-M64 %s
-// I386-M64: {{.*gcc.*-m64}}
-
-
-// RUN: %clang -target powerpc64-unknown-unknown -c -x assembler %s -### 2>&1 \
-// RUN:   | FileCheck -check-prefix=PPC64 %s
-// PPC64: {{.*gcc.*-m64}}
-
-// RUN: %clang -target powerpc64-unknown-unknown -c -x assembler %s -### -m32 2>&1 \
-// RUN:   | FileCheck -check-prefix=PPC64-M32 %s
-// PPC64-M32: {{.*gcc.*-m32}}
-
-// RUN: %clang -target powerpc-unknown-unknown -c -x assembler %s -### 2>&1 \
-// RUN:   | FileCheck -check-prefix=PPC %s
-// PPC: {{.*gcc.*-m32}}
-
-// RUN: %clang -target powerpc-unknown-unknown -c -x assembler %s -### -m64 2>&1 \
-// RUN:   | FileCheck -check-prefix=PPC-M64 %s
-// PPC-M64: {{.*gcc.*-m64}}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/visibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/visibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/visibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang -### -S -fvisibility=hidden -fvisibility=default %s 2> %t.log
-// RUN: FileCheck -check-prefix=CHECK-1 %s < %t.log
-// CHECK-NOT: "-ftype-visibility"
-// CHECK-1: "-fvisibility" "default"
-// CHECK-NOT: "-ftype-visibility"
-
-// RUN: %clang -### -S -fvisibility=default -fvisibility=hidden %s 2> %t.log
-// RUN: FileCheck -check-prefix=CHECK-2 %s < %t.log
-// CHECK-NOT: "-ftype-visibility"
-// CHECK-2: "-fvisibility" "hidden"
-// CHECK-NOT: "-ftype-visibility"
-
-// RUN: %clang -### -S -fvisibility-ms-compat -fvisibility=hidden %s 2> %t.log
-// RUN: FileCheck -check-prefix=CHECK-3 %s < %t.log
-// CHECK-NOT: "-ftype-visibility"
-// CHECK-3: "-fvisibility" "hidden"
-// CHECK-NOT: "-ftype-visibility"
-
-// RUN: %clang -### -S -fvisibility-ms-compat -fvisibility=default %s 2> %t.log
-// RUN: FileCheck -check-prefix=CHECK-4 %s < %t.log
-// CHECK-NOT: "-ftype-visibility"
-// CHECK-4: "-fvisibility" "default"
-// CHECK-NOT: "-ftype-visibility"
-
-// RUN: %clang -### -S -fvisibility=hidden -fvisibility-ms-compat %s 2> %t.log
-// RUN: FileCheck -check-prefix=CHECK-5 %s < %t.log
-// CHECK-5: "-fvisibility" "hidden"
-// CHECK-5: "-ftype-visibility" "default"
-
-// RUN: %clang -### -S -fvisibility=default -fvisibility-ms-compat %s 2> %t.log
-// RUN: FileCheck -check-prefix=CHECK-6 %s < %t.log
-// CHECK-6: "-fvisibility" "hidden"
-// CHECK-6: "-ftype-visibility" "default"
-

Modified: trunk/contrib/llvm/tools/clang/test/Driver/warning-options.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/warning-options.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/warning-options.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang -### -Wlarge-by-value-copy %s 2>&1 | FileCheck -check-prefix=LARGE_VALUE_COPY_DEFAULT %s
-// LARGE_VALUE_COPY_DEFAULT: -Wlarge-by-value-copy=64
-// RUN: %clang -### -Wlarge-by-value-copy=128 %s 2>&1 | FileCheck -check-prefix=LARGE_VALUE_COPY_JOINED %s
-// LARGE_VALUE_COPY_JOINED: -Wlarge-by-value-copy=128
-
-// FIXME: Remove this together with -Warc-abi once an Xcode is released that doesn't pass this flag.
-// RUN: %clang -### -Warc-abi -Wno-arc-abi %s 2>&1 | FileCheck -check-prefix=ARCABI %s
-// ARCABI-NOT: unknown warning option '-Warc-abi'
-// ARCABI-NOT: unknown warning option '-Wno-arc-abi'
-
-// Check that -isysroot warns on nonexistent paths.
-// RUN: %clang -### -c -target i386-apple-darwin10 -isysroot /FOO %s 2>&1 | FileCheck --check-prefix=CHECK-ISYSROOT %s
-// CHECK-ISYSROOT: warning: no such sysroot directory: '{{([A-Za-z]:.*)?}}/FOO'

Modified: trunk/contrib/llvm/tools/clang/test/Driver/warning-options_pedantic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/warning-options_pedantic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/warning-options_pedantic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang -### -pedantic -no-pedantic %s 2>&1 | FileCheck -check-prefix=NO_PEDANTIC %s
-// RUN: %clang -### -pedantic -Wno-pedantic %s 2>&1 | FileCheck -check-prefix=PEDANTIC %s
-// NO_PEDANTIC-NOT: -pedantic
-// RUN: %clang -### -pedantic -pedantic -no-pedantic -pedantic %s 2>&1 | FileCheck -check-prefix=PEDANTIC %s
-// RUN: %clang -### -pedantic -pedantic -no-pedantic -Wpedantic %s 2>&1 | FileCheck -check-prefix=NO_PEDANTIC %s
-// PEDANTIC: -pedantic
-// REQUIRES: clang-driver

Modified: trunk/contrib/llvm/tools/clang/test/Driver/working-directory-and-abs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/working-directory-and-abs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/working-directory-and-abs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// RUN: %clang -working-directory=%S %S/working-directory-and-abs.c -fsyntax-only

Modified: trunk/contrib/llvm/tools/clang/test/Driver/working-directory.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/working-directory.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/working-directory.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang -ccc-print-options -working-directory "C:\Test" input 2>&1 | FileCheck %s
-// CHECK: Option 0 - Name: "-ccc-print-options", Values: {}
-// CHECK: Option 1 - Name: "-working-directory", Values: {"C:\Test"}
-// CHECK: Option 2 - Name: "<input>", Values: {"input"}

Modified: trunk/contrib/llvm/tools/clang/test/Driver/x86_64-nacl-defines.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/x86_64-nacl-defines.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/x86_64-nacl-defines.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang -target x86_64-unknown-nacl -ccc-echo %s -emit-llvm-only -c -o %t.o 2>&1 | FileCheck %s -check-prefix=ECHO
-// RUN: %clang -target x86_64-unknown-nacl %s -emit-llvm -S -c -o - | FileCheck %s
-// RUN: %clang -target x86_64-unknown-nacl %s -emit-llvm -S -c -pthread -o - | FileCheck %s -check-prefix=THREADS
-
-// ECHO: {{.*}} -cc1 {{.*}}x86_64-nacl-defines.c
-
-// Check platform defines
-
-// CHECK: __LITTLE_ENDIAN__defined
-#ifdef __LITTLE_ENDIAN__
-void __LITTLE_ENDIAN__defined() {}
-#endif
-
-// CHECK: __native_client__defined
-#ifdef __native_client__
-void __native_client__defined() {}
-#endif
-
-// CHECK: __x86_64__defined
-#ifdef __x86_64__
-void __x86_64__defined() {}
-#endif
-
-// CHECK: unixdefined
-#ifdef unix
-void unixdefined() {}
-#endif
-
-// CHECK: __ELF__defined
-#ifdef __ELF__
-void __ELF__defined() {}
-#endif
-
-// CHECK: _GNU_SOURCEdefined
-#ifdef _GNU_SOURCE
-void _GNU_SOURCEdefined() {}
-#endif
-
-// THREADS: _REENTRANTdefined
-// CHECK: _REENTRANTundefined
-#ifdef _REENTRANT
-void _REENTRANTdefined() {}
-#else
-void _REENTRANTundefined() {}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Driver/x86_64-nacl-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/x86_64-nacl-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/x86_64-nacl-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-nacl -std=c++11 -verify %s
-// expected-no-diagnostics
-
-#include <stddef.h>
-#include <stdarg.h>
-
-static_assert(alignof(char) == 1, "alignof char is wrong");
-
-static_assert(alignof(short) == 2, "sizeof short is wrong");
-static_assert(alignof(short) == 2, "alignof short is wrong");
-
-static_assert(alignof(int) == 4, "sizeof int is wrong");
-static_assert(alignof(int) == 4, "alignof int is wrong");
-
-static_assert(sizeof(long) == 4, "sizeof long is wrong");
-static_assert(sizeof(long) == 4, "alignof long is wrong");
-
-static_assert(sizeof(long long) == 8, "sizeof long long is wrong wrong");
-static_assert(alignof(long long) == 8, "alignof long long is wrong wrong");
-
-static_assert(sizeof(void*) == 4, "sizeof void * is wrong");
-static_assert(alignof(void*) == 4, "alignof void * is wrong");
-
-static_assert(sizeof(float) == 4, "sizeof float is wrong");
-static_assert(alignof(float) == 4, "alignof float is wrong");
-
-static_assert(sizeof(double) == 8, "sizeof double is wrong");
-static_assert(alignof(double) == 8, "alignof double is wrong");
-
-static_assert(sizeof(long double) == 8, "sizeof long double is wrong");
-static_assert(alignof(long double) == 8, "alignof long double is wrong");
-
-static_assert(sizeof(va_list) == 16, "sizeof va_list is wrong");
-static_assert(alignof(va_list) == 4, "alignof va_list is wrong");
-
-static_assert(sizeof(size_t) == 4, "sizeof size_t is wrong");
-static_assert(alignof(size_t) == 4, "alignof size_t is wrong");

Modified: trunk/contrib/llvm/tools/clang/test/Driver/x86_features.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Driver/x86_features.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Driver/x86_features.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -### -S %s -msse -msse4 -mno-sse -mno-mmx -msse 2> %t
-// RUN: grep '"pentium4" "-target-feature" "+sse4" "-target-feature" "-mmx" "-target-feature" "+sse"' %t
-// Note that we filter out all but the last -m(no)sse.

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/atomic-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/atomic-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/atomic-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fdiagnostics-parseable-fixits -x objective-c -fobjc-arc %s 2>&1 | FileCheck %s
-
- at interface I
- at property id prop;
- at property (atomic) id atomic_prop;
-- (id) prop;
-- (id) atomic_prop;
-
- at property (  ) id prop1;
-
- at property (copy, atomic, readwrite) id atomic_prop1;
-
- at property (copy, readwrite) id prop2;
- at end
-
- at implementation I
- at synthesize prop, prop1, prop2;
- at synthesize atomic_prop, atomic_prop1;
-- (id) prop { return 0; }
-- (id) prop1 { return 0; }
-- (id) prop2 { return 0; }
-- (id) atomic_prop { return 0; }
-- (id) atomic_prop1 { return 0; }
- at end
-
-// CHECK: {4:1-4:10}:"@property (nonatomic) "
-// CHECK: {9:1-9:12}:"@property (nonatomic"
-// CHECK: {13:1-13:12}:"@property (nonatomic, "
-

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/auto-fixit.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/auto-fixit.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/auto-fixit.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-/* RUN: cp %s %t
-   RUN: %clang_cc1 -x objective-c -fixit %t
-   RUN: %clang_cc1 -x objective-c -Werror %t
- */
-
-// rdar://9036633
-
-int main() {
-  auto int i = 0;
-  return i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/auto-isa-fixit.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/auto-isa-fixit.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/auto-isa-fixit.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: cp %s %t
-// RUN: %clang_cc1 -x objective-c -fixit %t
-// RUN: %clang_cc1 -x objective-c -Werror %t
-// rdar://13503456
-
-void object_setClass(id, id);
-Class object_getClass(id);
-
-id rhs();
-
-Class pr6302(id x123) {
-  x123->isa  = 0;
-  x123->isa = rhs();
-  x123->isa = (id)(x123->isa);
-  x123->isa = (id)x123->isa;
-  x123->isa = (x123->isa);
-  x123->isa = (id)(x123->isa);
-  return x123->isa;
-}
-
-
- at interface BaseClass {
- at public
-    Class isa; // expected-note 3 {{instance variable is declared here}}
-}
- at end
-
- at interface OtherClass {
- at public
-    id    firstIvar;
-    Class isa; // note, not first ivar;
-}
- at end
-
- at interface Subclass : BaseClass @end
-
- at interface SiblingClass : BaseClass @end
-
- at interface Root @end
-
- at interface hasIsa : Root {
- at public
-  Class isa; // note, isa is not in root class
-}
- at end
-
- at implementation Subclass
--(void)method {
-    hasIsa *u;
-    id v;
-    BaseClass *w;
-    Subclass *x;
-    SiblingClass *y;
-    OtherClass *z;
-    (void)v->isa; 
-    (void)w->isa;
-    (void)x->isa;
-    (void)y->isa;
-    (void)z->isa;
-    (void)u->isa;
-    y->isa = 0;
-    y->isa = w->isa;
-    x->isa = rhs();
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/bridge-cast-in-arc.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/bridge-cast-in-arc.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/bridge-cast-in-arc.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fdiagnostics-parseable-fixits -x objective-c++ -fobjc-arc %s 2>&1 | FileCheck %s
-// rdar://12788838
-
-id obj;
-
-void Test1() {
-  void *foo = reinterpret_cast<void *>(obj);
-}
-// CHECK: {7:15-7:39}:"(__bridge void *)"
-// CHECK: {7:15-7:39}:"(__bridge_retained void *)"
-
-typedef const void * CFTypeRef;
-extern "C" CFTypeRef CFBridgingRetain(id X);
-
-void Test2() {
-  void *foo = reinterpret_cast<void *>(obj);
-}
-// CHECK: {16:15-16:39}:"(__bridge void *)"
-// CHECK: {16:15-16:39}:"CFBridgingRetain"

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/bridge-in-non-arc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/bridge-in-non-arc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/bridge-in-non-arc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
- at interface I
- at end
-
-void foo(void *p) {
-  I *i = (__bridge_transfer I*)p;
-  I *i2 = (__bridge_transfer/*cake*/I*)p;
-}
-
-// CHECK: {7:11-7:29}:""
-// CHECK: {8:12-8:29}:""

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/dereference-addressof.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/dereference-addressof.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/dereference-addressof.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -fsyntax-only -fixit -x c %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -x c %t
-
-void ip(int *aPtr) {}   // expected-note{{passing argument to parameter 'aPtr' here}}
-void i(int a) {}        // expected-note{{passing argument to parameter 'a' here}}
-void ii(int a) {}       // expected-note{{passing argument to parameter 'a' here}}
-void fp(float *aPtr) {} // expected-note{{passing argument to parameter 'aPtr' here}}
-void f(float a) {}      // expected-note{{passing argument to parameter 'a' here}}
-
-void f2(int *aPtr, int a, float *bPtr, char c) {
-  float fl = 0;
-  ip(a);     // expected-warning{{incompatible integer to pointer conversion passing 'int' to parameter of type 'int *'; take the address with &}}
-  i(aPtr);   // expected-warning{{incompatible pointer to integer conversion passing 'int *' to parameter of type 'int'; dereference with *}}
-  ii(&a);     // expected-warning{{incompatible pointer to integer conversion passing 'int *' to parameter of type 'int'; remove &}}
-  fp(*bPtr); // expected-error{{passing 'float' to parameter of incompatible type 'float *'; remove *}}
-  f(bPtr);   // expected-error{{passing 'float *' to parameter of incompatible type 'float'; dereference with *}}
-  a = aPtr;  // expected-warning{{incompatible pointer to integer conversion assigning to 'int' from 'int *'; dereference with *}}
-  fl = bPtr + a;  // expected-error{{assigning to 'float' from incompatible type 'float *'; dereference with *}}
-  bPtr = bPtr[a]; // expected-error{{assigning to 'float *' from incompatible type 'float'; take the address with &}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-autoreleasepool.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-autoreleasepool.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-autoreleasepool.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fdiagnostics-parseable-fixits -x objective-c %s 2>&1 | FileCheck %s
-// rdar://10723084
-
-void f0() {
-  @autorelease {
-  } 
-}
-
-// CHECK: {5:4-5:15}:"autoreleasepool"

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-c90.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-c90.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-c90.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-/* RUN: cp %s %t
-   RUN: %clang_cc1 -std=c90 -pedantic -fixit %t
-   RUN: %clang_cc1 -pedantic -x c -std=c90 -Werror %t
- */
-/*
-   This test passes because clang merely warns for this syntax error even with
-   -pedantic -Werror -std=c90.
- */
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
-enum e0 {
-  e1,
-};

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,134 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 -Wno-anonymous-pack-parens %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -x c++ -std=c++11 -fixit %t
-// RUN: %clang_cc1 -Wall -pedantic -x c++ -std=c++11 %t
-
-/* This is a test of the various code modification hints that only
-   apply in C++0x. */
-struct A {
-  explicit operator int(); // expected-note{{conversion to integral type}}
-};
-
-void x() {
-  switch(A()) { // expected-error{{explicit conversion to}}
-  }
-}
-
-using ::T = void; // expected-error {{name defined in alias declaration must be an identifier}}
-using typename U = void; // expected-error {{name defined in alias declaration must be an identifier}}
-using typename ::V = void; // expected-error {{name defined in alias declaration must be an identifier}}
-
-namespace SemiCommaTypo {
-  int m {},
-  n [[]], // expected-error {{expected ';' at end of declaration}}
-  int o;
-
-  struct Base {
-    virtual void f2(), f3();
-  };
-  struct MemberDeclarator : Base {
-    int k : 4,
-        //[[]] : 1, FIXME: test this once we support attributes here
-        : 9, // expected-error {{expected ';' at end of declaration}}
-    char c, // expected-error {{expected ';' at end of declaration}}
-    typedef void F(), // expected-error {{expected ';' at end of declaration}}
-    F f1,
-      f2 final,
-      f3 override, // expected-error {{expected ';' at end of declaration}}
-  };
-}
-
-namespace ScopedEnum {
-  enum class E { a };
-
-  enum class E b = E::a; // expected-error {{must use 'enum' not 'enum class'}}
-  struct S {
-    friend enum class E; // expected-error {{must use 'enum' not 'enum class'}}
-  };
-}
-
-struct S2 { 
-  void f(int i); 
-  void g(int i);
-};
-
-void S2::f(int i) {
-  (void)[&, &i, &i]{}; // expected-error 2{{'&' cannot precede a capture when the capture default is '&'}}
-  (void)[=, this]{ this->g(5); }; // expected-error{{'this' cannot be explicitly captured}}
-  (void)[i, i]{ }; // expected-error{{'i' can appear only once in a capture list}}
-  (void)[&, i, i]{ }; // expected-error{{'i' can appear only once in a capture list}}
-  (void)[] mutable { }; // expected-error{{lambda requires '()' before 'mutable'}}
-  (void)[] -> int { }; // expected-error{{lambda requires '()' before return type}}
-}
-
-#define bar "bar"
-const char *p = "foo"bar; // expected-error {{requires a space between}}
-#define ord - '0'
-int k = '4'ord; // expected-error {{requires a space between}}
-
-void operator"x" _y(char); // expected-error {{must be '""'}}
-void operator L"" _z(char); // expected-error {{encoding prefix}}
-void operator "x" "y" U"z" ""_whoops "z" "y"(char); // expected-error {{must be '""'}}
-
-void f() {
-  'b'_y;
-  'c'_z;
-  'd'_whoops;
-}
-
-template<typename ...Ts> struct MisplacedEllipsis {
-  int a(Ts ...(x)); // expected-error {{'...' must immediately precede declared identifier}}
-  int b(Ts ...&x); // expected-error {{'...' must immediately precede declared identifier}}
-  int c(Ts ...&); // expected-error {{'...' must be innermost component of anonymous pack declaration}}
-  int d(Ts ...(...&...)); // expected-error 2{{'...' must be innermost component of anonymous pack declaration}}
-  int e(Ts ...*[]); // expected-error {{'...' must be innermost component of anonymous pack declaration}}
-  int f(Ts ...(...*)()); // expected-error 2{{'...' must be innermost component of anonymous pack declaration}}
-  int g(Ts ...()); // ok
-};
-namespace TestMisplacedEllipsisRecovery {
-  MisplacedEllipsis<int, char> me;
-  int i; char k;
-  int *ip; char *kp;
-  int ifn(); char kfn();
-  int a = me.a(i, k);
-  int b = me.b(i, k);
-  int c = me.c(i, k);
-  int d = me.d(i, k);
-  int e = me.e(&ip, &kp);
-  int f = me.f(ifn, kfn);
-  int g = me.g(ifn, kfn);
-}
-
-template<template<typename> ...Foo, // expected-error {{template template parameter requires 'class' after the parameter list}}
-         template<template<template<typename>>>> // expected-error 3 {{template template parameter requires 'class' after the parameter list}}
-void func();
-
-template<int *ip> struct IP { }; // expected-note{{declared here}}
-IP<0> ip0; // expected-error{{null non-type template argument must be cast to template parameter type 'int *'}}
-
-namespace MissingSemi {
-  struct a // expected-error {{expected ';' after struct}}
-  struct b // expected-error {{expected ';' after struct}}
-  enum x : int { x1, x2, x3 } // expected-error {{expected ';' after enum}}
-  struct c // expected-error {{expected ';' after struct}}
-  enum x : int // expected-error {{expected ';' after enum}}
-  // FIXME: The following gives a poor diagnostic (we parse the 'int' and the
-  // 'struct' as part of the same enum-base.
-  //   enum x : int
-  //   struct y
-  namespace N {
-    struct d // expected-error {{expected ';' after struct}}
-  }
-}
-
-namespace NonStaticConstexpr {
-  struct foo {
-    constexpr int i; // expected-error {{non-static data member cannot be constexpr; did you intend to make it const?}}
-    constexpr int j = 7; // expected-error {{non-static data member cannot be constexpr; did you intend to make it static?}}
-    foo() : i(3) {
-    }
-    static int get_j() {
-      return j;
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx11-attributes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx11-attributes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx11-attributes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -x c++ -std=c++11 -fixit %t
-// RUN: %clang_cc1 -Wall -pedantic -x c++ -std=c++11 %t
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-namespace ClassSpecifier {
-  class [[]] [[]]
-    attr_after_class_name_decl [[]] [[]]; // expected-error {{an attribute list cannot appear here}}
-    // CHECK: fix-it:{{.*}}:{9:5-9:5}
-    // CHECK: fix-it:{{.*}}:{9:32-9:41}
-
-  class [[]] [[]]
-   attr_after_class_name_definition [[]] [[]] [[]]{}; // expected-error {{an attribute list cannot appear here}}
-   // CHECK: fix-it:{{.*}}:{14:4-14:4}
-   // CHECK: fix-it:{{.*}}:{14:37-14:51}
-
-  class base {};
-  class [[]] [[]] final_class 
-    alignas(float) [[]] final // expected-error {{an attribute list cannot appear here}}
-    alignas(float) [[]] [[]] alignas(float): base{}; // expected-error {{an attribute list cannot appear here}}
-    // CHECK: fix-it:{{.*}}:{19:19-19:19}
-    // CHECK: fix-it:{{.*}}:{20:5-20:25}
-    // CHECK: fix-it:{{.*}}:{19:19-19:19}
-    // CHECK: fix-it:{{.*}}:{21:5-21:44}
-
-  class [[]] [[]] final_class_another 
-    [[]] [[]] alignas(16) final // expected-error {{an attribute list cannot appear here}}
-    [[]] [[]] alignas(16) [[]]{}; // expected-error {{an attribute list cannot appear here}}
-    // CHECK: fix-it:{{.*}}:{27:19-27:19}
-    // CHECK: fix-it:{{.*}}:{28:5-28:27}
-    // CHECK: fix-it:{{.*}}:{27:19-27:19}
-    // CHECK: fix-it:{{.*}}:{29:5-29:31}
-}
-
-namespace BaseSpecifier {
-  struct base1 {};
-  struct base2 {};
-  class with_base_spec : public [[a]] // expected-error {{an attribute list cannot appear here}} expected-warning {{unknown}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:26-[[@LINE-1]]:26}:"[{{\[}}a]]"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:33-[[@LINE-2]]:39}:""
-                         virtual [[b]] base1, // expected-error {{an attribute list cannot appear here}} expected-warning {{unknown}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:26-[[@LINE-4]]:26}:"[{{\[}}b]]"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:34-[[@LINE-2]]:40}:""
-                         virtual [[c]] // expected-error {{an attribute list cannot appear here}} expected-warning {{unknown}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:26-[[@LINE-1]]:26}:"[{{\[}}c]]"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:34-[[@LINE-2]]:40}:""
-                         public [[d]] base2 {}; // expected-error {{an attribute list cannot appear here}} expected-warning {{unknown}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:26-[[@LINE-4]]:26}:"[{{\[}}d]]"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:33-[[@LINE-2]]:39}:""
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx11-compat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx11-compat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx11-compat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -Wc++11-compat -verify -std=c++98 %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -Wc++11-compat -Werror -x c++ -std=c++98 -fixit %t
-// RUN: %clang_cc1 -Wall -pedantic-errors -Wc++11-compat -Werror -x c++ -std=c++98 %t
-
-// This is a test of the code modification hints for C++11-compatibility problems.
-
-#define bar "bar"
-const char *p = "foo"bar; // expected-warning {{will be treated as a reserved user-defined literal suffix}}
-#define _bar "_bar"
-const char *q = "foo"_bar; // expected-warning {{will be treated as a user-defined literal suffix}}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx1y-compat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx1y-compat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-cxx1y-compat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-// RUN: cp %s %t
-// RUN: %clang_cc1 -x c++ -std=c++11 -fixit %t
-// RUN: %clang_cc1 -Wall -pedantic-errors -Werror -x c++ -std=c++11 %t
-// RUN: %clang_cc1 -Wall -pedantic-errors -Werror -x c++ -std=c++1y %t
-
-// This is a test of the code modification hints for C++1y-compatibility problems.
-
-struct S {
-  constexpr int &f(); // expected-warning {{'constexpr' non-static member function will not be implicitly 'const' in C++1y; add 'const' to avoid a change in behavior}}
-  int &f();
-};

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-errors-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-errors-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-errors-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: cp %s %t
-// RUN: %clang_cc1 -pedantic -fixit %t
-// RUN: echo %clang_cc1 -pedantic -Werror -x c %t
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
-// FIXME: If you put a space at the end of the line, it doesn't work yet!
-char *s = "hi\
-there";
-
-// The following line isn't terminated, don't fix it.
-int i; // expected-error{{no newline at end of file}}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-errors.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-errors.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-errors.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -pedantic -fixit -x c %t
-// RUN: %clang_cc1 -pedantic -Werror -x c %t
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
-struct s; // expected-note{{previous use is here}}
-
-union s *s1; // expected-error{{use of 's' with tag type that does not match previous declaration}}
-
-struct Point {
-  float x, y, z;
-};
-
-struct Point *get_origin();
-
-void test_point() {
-  (void)get_origin->x; // expected-error {{base of member reference is a function; perhaps you meant to call it with no arguments?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-function-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-function-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-function-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,118 +0,0 @@
-// RUN: not %clang_cc1 -fdiagnostics-parseable-fixits -x c++ %s 2> %t
-// RUN: FileCheck %s < %t
-// PR5941
-// END.
-
-/* Test fixits for * and & mismatch in function arguments.
- * Since fixits are on the notes, they cannot be applied automatically. */
-
-typedef int intTy;
-typedef int intTy2;
-
-void f0(int *a);
-void f1(double *a);
-void f1(intTy &a);
-
-void f2(intTy2 *a) {
-// CHECK: error: no matching function for call to 'f1
-// CHECK: dereference the argument with *
-// CHECK: void f1(intTy &a);
-// CHECK: fix-it{{.*}}*(
-// CHECK-NEXT: fix-it{{.*}})
-// CHECK: void f1(double *a);
-  f1(a + 1);
-
-// This call cannot be fixed since without resulting in null pointer dereference.
-// CHECK: error: no matching function for call to 'f1
-// CHECK-NOT: dereference the argument with *
-// CHECK-NOT: fix-it
-  f1((int *)0);
-}
-
-void f3(int &a) {
-// CHECK: error: no matching function for call to 'f0
-// CHECK: fix-it{{.*}}&
- f0(a);
-}
-
-
-void m(int *a, const int *b); // match 2
-void m(double *a, int *b); // no match
-void m(int *a, double *b); // no match
-void m(intTy &a, int *b); // match 1
-
-void mcaller(intTy2 a, int b) {
-// CHECK: error: no matching function for call to 'm
-// CHECK: take the address of the argument with &
-// CHECK: fix-it{{.*}}&
-// CHECK: take the address of the argument with &
-// CHECK: fix-it{{.*}}&
-// CHECK: fix-it{{.*}}&
-  m(a, b);
-
-// This call cannot be fixed because (a + 1) is not an l-value.
-// CHECK: error: no matching function for call to 'm
-// CHECK-NOT: fix-it
-  m(a + 1, b);
-}
-
-// Test derived to base conversions.
-struct A {
-  int xx;
-};
-
-struct B : public A {
-  double y;
-};
-
-class C : A {};
-
-bool br(A &a);
-bool bp(A *a);
-bool dv(B b);
-
-void u(int x);
-void u(const C *x);
-void u(double x);
-
-void dbcaller(A *ptra, B *ptrb, C &c, B &refb) {
-  B b;
-
-// CHECK: error: no matching function for call to 'br
-// CHECK: fix-it{{.*}}*
-  br(ptrb); // good
-
-// CHECK: error: no matching function for call to 'bp
-// CHECK: fix-it{{.*}}&
-  bp(b); // good
-
-// CHECK: error: no matching function for call to 'dv
-// CHECK-NOT: fix-it
-  dv(ptra); // bad: base to derived
-
-// CHECK: error: no matching function for call to 'dv
-// CHECK: remove &
-  dv(&b);
-
-// CHECK: error: no matching function for call to 'bp
-// CHECK: remove *
-  bp(*ptra);
-
-// CHECK: error: no viable overloaded '='
-// CHECK: remove &
-  b = &refb;
-
-// TODO: Test that we do not provide a fixit when inheritance is private.
-// CHECK: error: no matching function for call to 'bp
-// There should not be a fixit here:
-// CHECK: fix-it
-  bp(c);
-
-// CHECK: no matching function for call to 'u'
-// CHECK: candidate function not viable: no known conversion from 'C' to 'const C *' for 1st argument; take the address of the argument with &
-// CHECK: candidate function not viable
-// CHECK: candidate function not viable
-  u(c);
-}
-
-// CHECK: errors generated

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-include.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-include.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-include.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wall -pedantic -verify %s
-// RUN: cp %s %t
-// RUN: cp %S/fixit-include.h %T
-// RUN: not %clang_cc1 -fsyntax-only -fixit %t
-// RUN: %clang_cc1 -Wall -pedantic %t
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-#include <fixit-include.h> // expected-error {{'fixit-include.h' file not found with <angled> include; use "quotes" instead}}
-// CHECK: fix-it:{{.*}}:{8:10-8:27}
-
-#pragma does_not_exist // expected-warning {{unknown pragma ignored}}
-
-int main( void ) {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-include.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-include.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-include.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// This file is purposefully left empty

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-interface-as-param.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-interface-as-param.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-interface-as-param.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fdiagnostics-parseable-fixits -x objective-c %s 2>&1 | FileCheck %s
-// rdar://11311333
-
- at interface NSView @end
-
- at interface INTF
-- (void) drawRect : inView:(NSView)view;
- at end
-
-// CHECK: {7:35-7:35}:"*"
-

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-missing-method-return-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-missing-method-return-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-missing-method-return-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// Objective-C recovery
-// RUN: cp %s %t
-// RUN: %clang_cc1 -Wmissing-method-return-type -fixit -x objective-c -Wno-objc-root-class %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Wmissing-method-return-type -Werror -x objective-c -Wno-objc-root-class %t
-
-// Objective-C++ recovery
-// RUN: cp %s %t
-// RUN: %clang_cc1 -Wmissing-method-return-type -fixit -x objective-c++ -Wno-objc-root-class %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Wmissing-method-return-type -Werror -x objective-c++ -Wno-objc-root-class %t
-// rdar://9615045
-
- at interface I
--  initWithFoo:(id)foo; // expected-warning {{method has no return type specified; defaults to 'id' [-Wmissing-method-return-type]}}
-- Meth;
--Meth1;
- at end
-
- at implementation I
-- initWithFoo:(id)foo { return 0; } // expected-warning {{method has no return type specified; defaults to 'id' [-Wmissing-method-return-type]}}
-
--Meth { return 0;}
-- Meth1 { return 0;}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-missing-self-in-block.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-missing-self-in-block.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-missing-self-in-block.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: cp %s %t
-// RUN: %clang_cc1 -x objective-c -fobjc-arc -fblocks -fixit %t
-// RUN: %clang_cc1 -x objective-c -fobjc-arc -fblocks -Werror %t
-// rdar://11194874
-
- at interface Root @end
-
- at interface I : Root
-{
-  int _bar;
-}
- at end
-
- at implementation I
-  - (void)foo{
-      ^{
-           _bar = 3;
-       }();
-  }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-newline-style.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-newline-style.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-newline-style.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -pedantic -Wunused-label -x c %s 2>&1 | FileCheck %s -strict-whitespace
-
-// This file intentionally uses a CRLF newline style
-// <rdar://problem/12639047>
-// CHECK: warning: unused label 'ddd'
-// CHECK-NEXT: {{^  ddd:}}
-// CHECK-NEXT: {{^  \^~~~$}}
-void f() {
-  ddd:
-  ;
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-nsstring-compare.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-nsstring-compare.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-nsstring-compare.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fdiagnostics-parseable-fixits -x objective-c %s 2>&1 | FileCheck %s
-// rdar://12716301
-
-typedef unsigned char BOOL;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
- at end
-
- at interface NSString<NSObject>
- at end
-
-int main() {
-  NSString *stringA = @"stringA";
-
-  BOOL comparison = stringA==@"stringB";
-
-}
-
-// CHECK: {16:21-16:21}:"["
-// CHECK: {16:28-16:30}:" isEqual:"
-// CHECK: {16:40-16:40}:"]"

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc-message-comma-separator.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc-message-comma-separator.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc-message-comma-separator.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -fdiagnostics-parseable-fixits -x objective-c %s 2>&1 | FileCheck %s
-// rdar://11376372
-
- at class NSObject;
-
- at interface TestObj {
-}
--(void)aMethodWithArg1:(NSObject*)arg1 arg2:(NSObject*)arg2;
- at end
-
-int main(int argc, char *argv[])
-{
-    TestObj *obj;
-    [obj aMethodWithArg1:@"Arg 1 Good", arg2:@"Arg 2 Good"]; 
-}
-
-// CHECK: {14:39-14:40}:""

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc-message.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc-message.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc-message.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// Objective-C recovery
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -pedantic -Wall -fixit -x objective-c %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -x objective-c %t
-
-// Objective-C++ recovery
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -pedantic -Wall -fixit -x objective-c++ %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -x objective-c++ %t
-
- at interface A
-- (int)method1:(int)x second:(float)y;
-+ (int)method2:(int)x second:(double)y;
-- (int)getBlah;
- at end
-
-void f(A *a, int i, int j) {
-  a method1:5+2 second:+(3.14159)];
-  a method1:[a method1:3 second:j] second:i++]
-  a getBlah];
-
-  int array[17];
-  (void)array[a method1:5+2 second:+(3.14159)]];
-  (A method2:5+2 second:3.14159]);
-  A method2:5+2 second:3.14159]
-  if (A method2:5+2 second:3.14159]) { }
-}
-
- at interface B : A
-- (int)method1:(int)x second:(float)y;
- at end
-
- at implementation B
-- (int)method1:(int)x second:(float)y {
-  super method1:x second:y];
-  return super getBlah];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-objc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -pedantic -verify %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -pedantic -fixit -x objective-c %t
-// RUN: %clang_cc1 -pedantic -Werror -x objective-c %t
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
- at protocol X;
-
-void foo() {
-  <X> *P;    // expected-warning{{protocol has no object type specified; defaults to qualified 'id'}}
-}
-
- at class A;
- at class NSString;
-
- at interface Test
-- (void)test:(NSString *)string; // expected-note{{passing argument to parameter 'string' here}}
-
- at property (copy) NSString *property;
- at end
-
-void g(NSString *a); // expected-note{{passing argument to parameter 'a' here}}
-void h(id a); // expected-note 2{{passing argument to parameter 'a' here}}
-
-void f(Test *t) {
-  NSString *a = "Foo"; // expected-warning {{incompatible pointer types initializing 'NSString *' with an expression of type 'char [4]'}}
-  id b = "Foo"; // expected-warning {{incompatible pointer types initializing 'id' with an expression of type 'char [4]'}}
-  g("Foo"); // expected-warning{{incompatible pointer types passing 'char [4]' to parameter of type 'NSString *'}}
-  h("Foo"); // expected-warning{{incompatible pointer types passing 'char [4]' to parameter of type 'id'}}
-  h(("Foo")); // expected-warning{{incompatible pointer types passing 'char [4]' to parameter of type 'id'}}
-  [t test:"Foo"]; // expected-warning{{incompatible pointer types sending 'char [4]' to parameter of type 'NSString *'}}
-  t.property = "Foo"; // expected-warning{{incompatible pointer types assigning to 'NSString *' from 'char [4]'}}
-
-  // <rdar://problem/6896493>
-  [t test:@"Foo"]]; // expected-error{{extraneous ']' before ';'}}
-  g(@"Foo")); // expected-error{{extraneous ')' before ';'}}
-}
-
-// rdar://7861841
- at interface Radar7861841 {
- at public
-  int x;
-}
-
- at property (assign) int y;
- at end
-
-int f0(Radar7861841 *a) { return a.x; } // expected-error {{property 'x' not found on object of type 'Radar7861841 *'; did you mean to access instance variable 'x'}}
-
-int f1(Radar7861841 *a) { return a->y; } // expected-error {{property 'y' found on object of type 'Radar7861841 *'; did you mean to access it with the "." operator?}}
-
-
-#define nil ((void*)0)
-#define NULL ((void*)0)
-
-void sentinel(int x, ...) __attribute__((sentinel)); // expected-note{{function has been explicitly marked sentinel here}}
-
- at interface Sentinel
-- (void)sentinel:(int)x, ... __attribute__((sentinel)); // expected-note{{method has been explicitly marked sentinel here}}
- at end
-
-void sentinel_test(Sentinel *a) {
-  sentinel(1, 2, 3); // expected-warning{{missing sentinel in function call}}
-  [a sentinel:1, 2, 3]; // expected-warning{{missing sentinel in method dispatch}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-pmem.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-pmem.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-pmem.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: cp %s %t
-// RUN: %clang_cc1 -pedantic -fixit -x c++ %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x c++ %t
-// XFAIL: *
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
-struct  S {
-	int i;
-};
-
-int foo(int S::* ps, S s, S* p)
-{
-  p.*ps = 1;
-  return s->*ps;
-}
-
-void foo1(int (S::*ps)(), S s, S* p)
-{
-  (p.*ps)();
-  (s->*ps)();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-recompile.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-recompile.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-recompile.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -Werror -pedantic %s -fixit-recompile -fixit-to-temporary -E -o - | FileCheck %s
-// RUN: not %clang_cc1 -Werror -pedantic %s -fixit-recompile -fixit-to-temporary -fix-only-warnings
-
-_Complex cd;
-
-// CHECK: _Complex double cd;

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-recursive-block.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-recursive-block.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-recursive-block.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -Wuninitialized -fblocks -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -Wuninitialized -fblocks -verify %s 
-
-// rdar://10817031
-
-int main() {
-    void (^arc_fail)() = ^() {  // expected-warning {{block pointer variable 'arc_fail' is uninitialized when captured by block}} \
-                                // expected-note {{maybe you meant to use __block 'arc_fail'}}
-       arc_fail(); // BOOM
-    };
-}
-// CHECK: {7:12-7:12}:"__block "

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-static-object-decl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-static-object-decl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-static-object-decl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// Objective-C recovery
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -fixit -x objective-c %t
-// RUN: %clang_cc1 -fsyntax-only -Werror -x objective-c %t
-
-// Objective-C++ recovery
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -fixit -x objective-c++ %t
-// RUN: %clang_cc1 -fsyntax-only -Werror -x objective-c++ %t
-// rdar://9603056
-
- at interface S @end
-
- at interface NSArray
-{
- at public
-  S iS;
-}
-+ (id) arrayWithObjects;
- at end
-
-NSArray func() {
-  NSArray P;
-  return P;
-}
-
-int main() {
-  	NSArray pluginNames = [NSArray arrayWithObjects];
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-suffix.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-suffix.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-suffix.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: cp %s %t.extrasuffix
-// RUN: %clang_cc1 -fixit=fixed -x c %t.extrasuffix
-// RUN: %clang_cc1 -Werror -pedantic -x c %t.fixed.extrasuffix
-
-_Complex cd;

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unicode.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unicode.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unicode.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck -strict-whitespace %s
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck -check-prefix=CHECK-MACHINE %s
-
-struct Foo {
-  int bar;
-};
-
-// PR13312
-void test1() {
-  struct Foo foo;
-  foo.bar = 42☃
-// CHECK: error: non-ASCII characters are not allowed outside of literals and identifiers
-// CHECK: {{^              \^}}
-// CHECK: error: expected ';' after expression
-// Make sure we emit the fixit right in front of the snowman.
-// CHECK: {{^              \^}}
-// CHECK: {{^              ;}}
-
-// CHECK-MACHINE: fix-it:"{{.*}}fixit-unicode.c":{[[@LINE-8]]:15-[[@LINE-8]]:18}:""
-// CHECK-MACHINE: fix-it:"{{.*}}fixit-unicode.c":{[[@LINE-9]]:15-[[@LINE-9]]:15}:";"
-}
-
-
-int printf(const char *, ...);
-void test2() {
-  printf("∆: %d", 1L);
-// CHECK: warning: format specifies type 'int' but the argument has type 'long'
-// Don't crash emitting a fixit after the delta.
-// CHECK:  printf("
-// CHECK: : %d", 1L);
-// Unfortunately, we can't actually check the location of the printed fixit,
-// because different systems will render the delta differently (either as a
-// character, or as <U+2206>.) The fixit should line up with the %d regardless.
-
-// CHECK-MACHINE: fix-it:"{{.*}}fixit-unicode.c":{[[@LINE-9]]:16-[[@LINE-9]]:18}:"%ld"
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unrecoverable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unrecoverable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unrecoverable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-/* FIXME: This is a file containing various typos for which we can
-   suggest corrections but are unable to actually recover from
-   them. Ideally, we would eliminate all such cases and move these
-   tests elsewhere. */
-
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-unsinged x = 17; // expected-error{{unknown type name 'unsinged'; did you mean 'unsigned'?}}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unrecoverable.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unrecoverable.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-unrecoverable.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-/* FIXME: This is a file containing various typos for which we can
-   suggest corrections but are unable to actually recover from
-   them. Ideally, we would eliminate all such cases and move these
-   tests elsewhere. */
-
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-float f(int y) {
-  return static_cst<float>(y); // expected-error{{use of undeclared identifier 'static_cst'; did you mean 'static_cast'?}} \
-  // expected-error{{for function-style cast or type construction}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-vexing-parse-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-vexing-parse-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-vexing-parse-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -verify -x c++ -std=c++11 %s
-// RUN: %clang_cc1 -fdiagnostics-parseable-fixits -x c++ -std=c++11 %s 2>&1 | FileCheck %s
-
-struct X {
-  int i;
-};
-
-void func() {
-  // CHECK: fix-it:"{{.*}}":{10:6-10:8}:"{}"
-  X x(); // expected-warning {{function declaration}} expected-note{{replace parentheses with an initializer}}
-  
-  typedef int *Ptr;
-  // CHECK: fix-it:"{{.*}}":{14:8-14:10}:" = nullptr"
-  Ptr p(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-  // CHECK: fix-it:"{{.*}}":{17:15-17:17}:" = u'\\0'"
-  char16_t u16(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-  // CHECK: fix-it:"{{.*}}":{20:15-20:17}:" = U'\\0'"
-  char32_t u32(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit-vexing-parse.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit-vexing-parse.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit-vexing-parse.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: %clang_cc1 -verify -x c++ %s
-// RUN: %clang_cc1 -fdiagnostics-parseable-fixits -x c++ %s 2>&1 | FileCheck %s
-
-struct S {
-  int n;
-};
-
-struct T {
-  T();
-  T(S, S);
-  int n;
-};
-
-struct U {
-  ~U();
-  int n;
-};
-
-struct V {
-  ~V();
-};
-
-struct W : V {
-};
-
-struct X : U {
-};
-
-int F1();
-S F2();
-
-namespace N {
-  void test() {
-    // CHECK: fix-it:"{{.*}}":{35:9-35:11}:" = {}"
-    S s1(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{39:9-39:10}:";"
-    // CHECK: fix-it:"{{.*}}":{40:7-40:9}:" = {}"
-    S s2, // expected-note {{change this ',' to a ';' to call 'F2'}}
-    F2(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{44:9-44:11}:""
-    // CHECK: fix-it:"{{.*}}":{45:9-45:11}:""
-    T t1(), // expected-warning {{function declaration}} expected-note {{remove parentheses}}
-      t2(); // expected-warning {{function declaration}} expected-note {{remove parentheses}}
-
-    // Suggest parentheses only around the first argument.
-    // CHECK: fix-it:"{{.*}}":{50:10-50:10}:"("
-    // CHECK: fix-it:"{{.*}}":{50:13-50:13}:")"
-    T t3(S(), S()); // expected-warning {{disambiguated as a function declaration}} expected-note {{add a pair of parentheses}}
-
-    // Check fixit position for pathological case
-    // CHECK: fix-it:"{{.*}}":{56:11-56:11}:"("
-    // CHECK: fix-it:"{{.*}}":{56:20-56:20}:")"
-    float k[1];
-    int l(int(k[0])); // expected-warning {{disambiguated as a function declaration}} expected-note {{add a pair of parentheses}}
-
-    // Don't emit warning and fixit because this must be a function declaration due to void return type.
-    typedef void VO;
-    VO m(int (*p)[4]);
-
-    // Don't emit warning and fixit because direct initializer is not permitted here.
-    if (int n(int())){} // expected-error {{function type is not allowed here}} expected-error {{condition must have an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{66:8-66:10}:" = {}"
-    U u(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{69:8-69:10}:""
-    V v(); // expected-warning {{function declaration}} expected-note {{remove parentheses}}
-
-    // CHECK: fix-it:"{{.*}}":{72:8-72:10}:""
-    W w(); // expected-warning {{function declaration}} expected-note {{remove parentheses}}
-
-    // TODO: Removing the parens here would not initialize U::n.
-    // Maybe suggest an " = X()" initializer for this case?
-    // Maybe suggest removing the parens anyway?
-    X x(); // expected-warning {{function declaration}}
-
-    // CHECK: fix-it:"{{.*}}":{80:11-80:13}:" = 0"
-    int n1(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{84:11-84:12}:";"
-    // CHECK: fix-it:"{{.*}}":{85:7-85:9}:" = 0"
-    int n2, // expected-note {{change this ',' to a ';' to call 'F1'}}
-    F1(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{88:13-88:15}:" = 0.0"
-    double d(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    typedef void *Ptr;
-
-    // CHECK: fix-it:"{{.*}}":{93:10-93:12}:" = 0"
-    Ptr p(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-#define NULL 0
-    // CHECK: fix-it:"{{.*}}":{97:10-97:12}:" = NULL"
-    Ptr p(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{100:11-100:13}:" = false"
-    bool b(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{103:11-103:13}:" = '\\0'"
-    char c(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    // CHECK: fix-it:"{{.*}}":{106:15-106:17}:" = L'\\0'"
-    wchar_t wc(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,117 +0,0 @@
-// RUN: %clang_cc1 -pedantic -Wunused-label -verify -x c %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -pedantic -Wunused-label -fixit -x c %t
-// RUN: grep -v CHECK %t > %t2
-// RUN: %clang_cc1 -pedantic -Wunused-label -Werror -x c %t
-// RUN: FileCheck -input-file=%t2 %t
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
-// FIXME: FIX-IT should add #include <string.h>?
-int strcmp(const char *s1, const char *s2);
-
-void f0(void) { }; // expected-warning {{';'}}
-
-struct s {
-  int x, y;; // expected-warning {{extra ';'}}
-};
-
-// CHECK: _Complex double cd;
-_Complex cd; // expected-warning {{assuming '_Complex double'}}
-
-// CHECK: struct s s0 = { .y = 5 };
-struct s s0 = { y: 5 }; // expected-warning {{GNU old-style}}
-
-// CHECK: int array0[5] = { [3] = 3 };
-int array0[5] = { [3] 3 }; // expected-warning {{GNU 'missing ='}}
-
-// CHECK: int x
-// CHECK: int y
-void f1(x, y) // expected-warning 2{{defaulting to type 'int'}}
-{
-}
-
-int i0 = { 17 };
-
-#define ONE 1
-#define TWO 2
-
-int test_cond(int y, int fooBar) { // expected-note {{here}}
-// CHECK: int x = y ? 1 : 4+fooBar;
-  int x = y ? 1 4+foobar; // expected-error {{expected ':'}} expected-error {{undeclared identifier}} expected-note {{to match}}
-// CHECK: x = y ? ONE : TWO;
-  x = y ? ONE TWO; // expected-error {{':'}} expected-note {{to match}}
-  return x;
-}
-
-// CHECK: const typedef int int_t;
-const typedef typedef int int_t; // expected-warning {{duplicate 'typedef'}}
-
-// <rdar://problem/7159693>
-enum Color { 
-  Red // expected-error{{missing ',' between enumerators}}
-  Green = 17 // expected-error{{missing ',' between enumerators}}
-  Blue,
-};
-
-// rdar://9295072
-struct test_struct {
-  // CHECK: struct test_struct *struct_ptr;
-  test_struct *struct_ptr; // expected-error {{must use 'struct' tag to refer to type 'test_struct'}}
-};
-
-void removeUnusedLabels(char c) {
-  L0 /*removed comment*/:        c++; // expected-warning {{unused label}}
-  removeUnusedLabels(c);
-  L1: // expected-warning {{unused label}}
-  c++;
-  /*preserved comment*/ L2  :        c++; // expected-warning {{unused label}}
-  LL // expected-warning {{unused label}}
-  : c++;
-  c = c + 3; L4: return; // expected-warning {{unused label}}
-}
-
-int oopsAComma = 0, // expected-error {{';'}}
-void oopsMoreCommas() {
-  static int a[] = { 0, 1, 2 }, // expected-error {{';'}}
-  static int b[] = { 3, 4, 5 }, // expected-error {{';'}}
-  &a == &b ? oopsMoreCommas() : removeUnusedLabels(a[0]);
-}
-
-int commaAtEndOfStatement() {
-  int a = 1;
-  a = 5, // expected-error {{';'}}
-  int m = 5, // expected-error {{';'}}
-  return 0, // expected-error {{';'}}
-}
-
-int noSemiAfterLabel(int n) {
-  switch (n) {
-    default:
-      return n % 4;
-    case 0:
-    case 1:
-    case 2:
-    // CHECK: /*FOO*/ case 3: ;
-    /*FOO*/ case 3: // expected-error {{expected statement}}
-  }
-  switch (n) {
-    case 1:
-    case 2:
-      return 0;
-    // CHECK: /*BAR*/ default: ;
-    /*BAR*/ default: // expected-error {{expected statement}}
-  }
-  return 1;
-}
-
-struct noSemiAfterStruct // expected-error {{expected ';' after struct}}
-struct noSemiAfterStruct {
-  int n // expected-warning {{';'}}
-} // expected-error {{expected ';' after struct}}
-enum noSemiAfterEnum {
-  e1
-} // expected-error {{expected ';' after enum}}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/fixit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/fixit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/fixit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,309 +0,0 @@
-// RUN: %clang_cc1 -pedantic -Wall -Wno-comment -verify -fcxx-exceptions -x c++ %s
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -x c++ %s 2>&1 | FileCheck %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -pedantic -Wall -Wno-comment -fcxx-exceptions -fixit -x c++ %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror -Wno-comment -fcxx-exceptions -x c++ %t
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
-struct C1 {
-  virtual void f();
-  static void g();
-};
-struct C2 : virtual public virtual C1 { }; // expected-error{{duplicate}}
-
-virtual void C1::f() { } // expected-error{{'virtual' can only be specified inside the class definition}}
-
-static void C1::g() { } // expected-error{{'static' can only be specified inside the class definition}}
-
-template<int Value> struct CT { }; // expected-note{{previous use is here}}
-
-CT<10 >> 2> ct; // expected-warning{{require parentheses}}
-
-class C3 {
-public:
-  C3(C3, int i = 0); // expected-error{{copy constructor must pass its first argument by reference}}
-};
-
-struct CT<0> { }; // expected-error{{'template<>'}}
-
-template<> union CT<1> { }; // expected-error{{tag type}}
-
-// Access declarations
-class A {
-protected:
-  int foo();
-};
-
-class B : public A {
-  A::foo; // expected-warning{{access declarations are deprecated}}
-};
-
-void f() throw(); // expected-note{{previous}}
-void f(); // expected-warning{{missing exception specification}}
-
-namespace rdar7853795 {
-  struct A {
-    bool getNumComponents() const; // expected-note{{declared here}}
-    void dump() const {
-      getNumComponenets(); // expected-error{{use of undeclared identifier 'getNumComponenets'; did you mean 'getNumComponents'?}}
-    }
-  };
-}
-
-namespace rdar7796492 {
-  struct A { int x, y; A(); };
-
-  A::A()
-    : x(1) y(2) { // expected-error{{missing ',' between base or member initializers}}
-  }
-
-}
-
-// extra qualification on member
-class C {
-  int C::foo(); // expected-error {{extra qualification}}
-};
-
-namespace rdar8488464 {
-int x = 0;
-int x1 &= 0; // expected-error {{invalid '&=' at end of declaration; did you mean '='?}}
-int x2 *= 0; // expected-error {{invalid '*=' at end of declaration; did you mean '='?}}
-int x3 += 0; // expected-error {{invalid '+=' at end of declaration; did you mean '='?}}
-int x4 -= 0; // expected-error {{invalid '-=' at end of declaration; did you mean '='?}}
-int x5 != 0; // expected-error {{invalid '!=' at end of declaration; did you mean '='?}}
-int x6 /= 0; // expected-error {{invalid '/=' at end of declaration; did you mean '='?}}
-int x7 %= 0; // expected-error {{invalid '%=' at end of declaration; did you mean '='?}}
-int x8 <= 0; // expected-error {{invalid '<=' at end of declaration; did you mean '='?}}
-int x9 <<= 0; // expected-error {{invalid '<<=' at end of declaration; did you mean '='?}}
-int x10 >= 0; // expected-error {{invalid '>=' at end of declaration; did you mean '='?}}
-int x11 >>= 0; // expected-error {{invalid '>>=' at end of declaration; did you mean '='?}}
-int x12 ^= 0; // expected-error {{invalid '^=' at end of declaration; did you mean '='?}}
-int x13 |= 0; // expected-error {{invalid '|=' at end of declaration; did you mean '='?}}
-int x14 == 0; // expected-error {{invalid '==' at end of declaration; did you mean '='?}}
-
-void f() {
-    int x = 0;
-    (void)x;
-    int x1 &= 0; // expected-error {{invalid '&=' at end of declaration; did you mean '='?}}
-    (void)x1;
-    int x2 *= 0; // expected-error {{invalid '*=' at end of declaration; did you mean '='?}}
-    (void)x2;
-    int x3 += 0; // expected-error {{invalid '+=' at end of declaration; did you mean '='?}}
-    (void)x3;
-    int x4 -= 0; // expected-error {{invalid '-=' at end of declaration; did you mean '='?}}
-    (void)x4;
-    int x5 != 0; // expected-error {{invalid '!=' at end of declaration; did you mean '='?}}
-    (void)x5;
-    int x6 /= 0; // expected-error {{invalid '/=' at end of declaration; did you mean '='?}}
-    (void)x6;
-    int x7 %= 0; // expected-error {{invalid '%=' at end of declaration; did you mean '='?}}
-    (void)x7;
-    int x8 <= 0; // expected-error {{invalid '<=' at end of declaration; did you mean '='?}}
-    (void)x8;
-    int x9 <<= 0; // expected-error {{invalid '<<=' at end of declaration; did you mean '='?}}
-    (void)x9;
-    int x10 >= 0; // expected-error {{invalid '>=' at end of declaration; did you mean '='?}}
-    (void)x10;
-    int x11 >>= 0; // expected-error {{invalid '>>=' at end of declaration; did you mean '='?}}
-    (void)x11;
-    int x12 ^= 0; // expected-error {{invalid '^=' at end of declaration; did you mean '='?}}
-    (void)x12;
-    int x13 |= 0; // expected-error {{invalid '|=' at end of declaration; did you mean '='?}}
-    (void)x13;
-    int x14 == 0; // expected-error {{invalid '==' at end of declaration; did you mean '='?}}
-    (void)x14;
-    if (int x = 0)  { (void)x; }
-    if (int x1 &= 0) { (void)x1; } // expected-error {{invalid '&=' at end of declaration; did you mean '='?}}
-    if (int x2 *= 0) { (void)x2; } // expected-error {{invalid '*=' at end of declaration; did you mean '='?}}
-    if (int x3 += 0) { (void)x3; } // expected-error {{invalid '+=' at end of declaration; did you mean '='?}}
-    if (int x4 -= 0) { (void)x4; } // expected-error {{invalid '-=' at end of declaration; did you mean '='?}}
-    if (int x5 != 0) { (void)x5; } // expected-error {{invalid '!=' at end of declaration; did you mean '='?}}
-    if (int x6 /= 0) { (void)x6; } // expected-error {{invalid '/=' at end of declaration; did you mean '='?}}
-    if (int x7 %= 0) { (void)x7; } // expected-error {{invalid '%=' at end of declaration; did you mean '='?}}
-    if (int x8 <= 0) { (void)x8; } // expected-error {{invalid '<=' at end of declaration; did you mean '='?}}
-    if (int x9 <<= 0) { (void)x9; } // expected-error {{invalid '<<=' at end of declaration; did you mean '='?}}
-    if (int x10 >= 0) { (void)x10; } // expected-error {{invalid '>=' at end of declaration; did you mean '='?}}
-    if (int x11 >>= 0) { (void)x11; } // expected-error {{invalid '>>=' at end of declaration; did you mean '='?}}
-    if (int x12 ^= 0) { (void)x12; } // expected-error {{invalid '^=' at end of declaration; did you mean '='?}}
-    if (int x13 |= 0) { (void)x13; } // expected-error {{invalid '|=' at end of declaration; did you mean '='?}}
-    if (int x14 == 0) { (void)x14; } // expected-error {{invalid '==' at end of declaration; did you mean '='?}}
-}
-}
-
-template <class A>
-class F1 {
-public:
-  template <int B>
-  class Iterator {
-  };
-};
- 
-template<class T>
-class F2  {
-  typename F1<T>:: /*template*/  Iterator<0> Mypos; // expected-error {{use 'template' keyword to treat 'Iterator' as a dependent template name}}
-};
-
-template <class T>
-void f(){
-  typename F1<T>:: /*template*/ Iterator<0> Mypos; // expected-error {{use 'template' keyword to treat 'Iterator' as a dependent template name}}
-}
-
-// Tests for &/* fixits radar 7113438.
-class AD {};
-class BD: public AD {};
-
-void test (BD &br) {
-  AD* aPtr;
-  BD b;
-  aPtr = b; // expected-error {{assigning to 'AD *' from incompatible type 'BD'; take the address with &}}
-  aPtr = br; // expected-error {{assigning to 'AD *' from incompatible type 'BD'; take the address with &}}
-}
-
-void foo1() const {} // expected-error {{non-member function cannot have 'const' qualifier}}
-void foo2() volatile {} // expected-error {{non-member function cannot have 'volatile' qualifier}}
-void foo3() const volatile {} // expected-error {{non-member function cannot have 'const volatile' qualifier}}
-
-struct S { void f(int, char); };
-int itsAComma,
-itsAComma2 = 0,
-oopsAComma(42), // expected-error {{expected ';' at end of declaration}}
-AD oopsMoreCommas() {
-  static int n = 0, // expected-error {{expected ';' at end of declaration}}
-  static char c,
-  &d = c, // expected-error {{expected ';' at end of declaration}}
-  S s, // expected-error {{expected ';' at end of declaration}}
-  s.f(n, d);
-  AD ad, // expected-error {{expected ';' at end of declaration}}
-  return ad;
-}
-struct MoreAccidentalCommas {
-  int a : 5,
-      b : 7,
-        : 4, // expected-error {{expected ';' at end of declaration}}
-  char c, // expected-error {{expected ';' at end of declaration}}
-  double d, // expected-error {{expected ';' at end of declaration}}
-  MoreAccidentalCommas *next, // expected-error {{expected ';' at end of declaration}}
-public:
-  int k, // expected-error {{expected ';' at end of declaration}}
-  friend void f(MoreAccidentalCommas) {}
-  int k2, // expected-error {{expected ';' at end of declaration}}
-  virtual void g(), // expected-error {{expected ';' at end of declaration}}
-};
-
-template<class T> struct Mystery;
-template<class T> typedef Mystery<T>::type getMysteriousThing() { // \
-  expected-error {{function definition declared 'typedef'}} \
-  expected-error {{missing 'typename' prior to dependent}}
-  return Mystery<T>::get();
-}
-
-template<template<typename> Foo, // expected-error {{template template parameter requires 'class' after the parameter list}}
-         template<typename> typename Bar, // expected-error {{template template parameter requires 'class' after the parameter list}}
-         template<typename> struct Baz> // expected-error {{template template parameter requires 'class' after the parameter list}}
-void func();
-
-namespace ShadowedTagType {
-class Foo {
- public:
-  enum Bar { X, Y };
-  void SetBar(Bar bar);
-  Bar Bar(); // expected-note 2 {{enum 'Bar' is hidden by a non-type declaration of 'Bar' here}}
- private:
-  Bar bar_; // expected-error {{must use 'enum' tag to refer to type 'Bar' in this scope}}
-};
-void Foo::SetBar(Bar bar) { bar_ = bar; } // expected-error {{must use 'enum' tag to refer to type 'Bar' in this scope}}
-}
-
-#define NULL __null
-char c = NULL; // expected-warning {{implicit conversion of NULL constant to 'char'}}
-double dbl = NULL; // expected-warning {{implicit conversion of NULL constant to 'double'}}
-
-namespace arrow_suggest {
-
-template <typename T>
-class wrapped_ptr {
- public:
-  wrapped_ptr(T* ptr) : ptr_(ptr) {}
-  T* operator->() { return ptr_; }
- private:
-  T *ptr_;
-};
-
-class Worker {
- public:
-  void DoSomething();
-};
-
-void test() {
-  wrapped_ptr<Worker> worker(new Worker);
-  worker.DoSomething(); // expected-error {{no member named 'DoSomething' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'; did you mean to use '->' instead of '.'?}}
-}
-
-} // namespace arrow_suggest
-
-// Make sure fixing namespace-qualified identifiers functions properly with
-// namespace-aware typo correction/
-namespace redecl_typo {
-namespace Foo {
-  void BeEvil(); // expected-note {{'BeEvil' declared here}}
-}
-namespace Bar {
-  namespace Foo {
-    bool isGood(); // expected-note {{'Bar::Foo::isGood' declared here}}
-    void beEvil();
-  }
-}
-bool Foo::isGood() { // expected-error {{out-of-line definition of 'isGood' does not match any declaration in namespace 'redecl_typo::Foo'; did you mean 'Bar::Foo::isGood'?}}
-  return true;
-}
-void Foo::beEvil() {} // expected-error {{out-of-line definition of 'beEvil' does not match any declaration in namespace 'redecl_typo::Foo'; did you mean 'BeEvil'?}}
-}
-
-// Test behavior when a template-id is ended by a token which starts with '>'.
-namespace greatergreater {
-  template<typename T> struct S { S(); S(T); };
-  void f(S<int>=0); // expected-error {{a space is required between a right angle bracket and an equals sign (use '> =')}}
-
-  // FIXME: The fix-its here overlap so -fixit mode can't apply the second one.
-  //void f(S<S<int>>=S<int>());
-
-  struct Shr {
-    template<typename T> Shr(T);
-    template<typename T> void operator >>=(T);
-  };
-
-  template<template<typename>> struct TemplateTemplateParam; // expected-error {{requires 'class'}}
-
-  template<typename T> void t();
-  void g() {
-    void (*p)() = &t<int>;
-    (void)(&t<int>==p); // expected-error {{use '> ='}}
-    (void)(&t<int>>=p); // expected-error {{use '> >'}}
-    (void)(&t<S<int>>>=p); // expected-error {{use '> >'}}
-    (Shr)&t<S<int>>>>=p; // expected-error {{use '> >'}}
-
-    // FIXME: We correct this to '&t<int> > >= p;' not '&t<int> >>= p;'
-    //(Shr)&t<int>>>=p;
-
-    // FIXME: The fix-its here overlap.
-    //(void)(&t<S<int>>==p);
-  }
-}
-
-class foo {
-  static void test() {
-    (void)&i; // expected-error{{must explicitly qualify name of member function when taking its address}}
-  }
-  int i();
-};
-
-namespace dtor_fixit {
-  class foo {
-    ~bar() { }  // expected-error {{expected the class name after '~' to name a destructor}}
-    // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:6-[[@LINE-1]]:9}:"foo"
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/format-darwin.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/format-darwin.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/format-darwin.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,220 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -fblocks -Wformat-non-iso -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fsyntax-only -fblocks -Wformat-non-iso -verify %s
-
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fdiagnostics-parseable-fixits -fblocks -Wformat-non-iso %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fdiagnostics-parseable-fixits -fblocks -Wformat-non-iso %s 2>&1 | FileCheck %s
-
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fdiagnostics-parseable-fixits -fblocks -Wformat-non-iso %s 2>&1 | FileCheck -check-prefix=CHECK-32 %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fdiagnostics-parseable-fixits -fblocks -Wformat-non-iso %s 2>&1 | FileCheck -check-prefix=CHECK-64 %s
-
-int printf(const char * restrict, ...);
-
-#if __LP64__
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef int SInt32;
-typedef unsigned int UInt32;
-
-#else
-
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef long SInt32;
-typedef unsigned long UInt32;
-#endif
-
-typedef SInt32 OSStatus;
-
-NSInteger getNSInteger();
-NSUInteger getNSUInteger();
-SInt32 getSInt32();
-UInt32 getUInt32();
-
-void testCorrectionInAllCases() {
-  printf("%s", getNSInteger()); // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", getNSUInteger()); // expected-warning{{values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead}}
-  printf("%s", getSInt32()); // expected-warning{{values of type 'SInt32' should not be used as format arguments; add an explicit cast to 'int' instead}}
-  printf("%s", getUInt32()); // expected-warning{{values of type 'UInt32' should not be used as format arguments; add an explicit cast to 'unsigned int' instead}}
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:11-[[@LINE-5]]:13}:"%ld"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:16-[[@LINE-6]]:16}:"(long)"
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:11-[[@LINE-7]]:13}:"%lu"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-8]]:16-[[@LINE-8]]:16}:"(unsigned long)"
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-9]]:11-[[@LINE-9]]:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-10]]:16-[[@LINE-10]]:16}:"(int)"
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-11]]:11-[[@LINE-11]]:13}:"%u"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-12]]:16-[[@LINE-12]]:16}:"(unsigned int)"
-}
-
- at interface Foo {
- at public
-  NSInteger _value;
-}
-- (NSInteger)getInteger;
-
- at property NSInteger value;
- at end
-
-struct Bar {
-  NSInteger value;
-};
-
-
-void testParens(Foo *obj, struct Bar *record) {
-  NSInteger arr[4] = {0};
-  NSInteger i = 0;
-
-  // These cases match the relevant cases in CheckPrintfHandler::checkFormatExpr.
-  printf("%s", arr[0]);  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", getNSInteger());  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", i);  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", obj->_value);  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", [obj getInteger]);  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", obj.value);  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", record->value);  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", (i ? i : i));  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", *arr);  // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-
-  // CHECK-NOT: fix-it:{{.*}}:")"
-
-  printf("%s", i ? i : i); // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:11-[[@LINE-2]]:13}:"%ld"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:16-[[@LINE-3]]:16}:"(long)("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:25-[[@LINE-4]]:25}:")"
-}
-
-
-#if __LP64__
-
-void testWarn() {
-  printf("%d", getNSInteger()); // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%u", getNSUInteger()); // expected-warning{{values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead}}
-  printf("%ld", getSInt32()); // expected-warning{{values of type 'SInt32' should not be used as format arguments; add an explicit cast to 'int' instead}}
-  printf("%lu", getUInt32()); // expected-warning{{values of type 'UInt32' should not be used as format arguments; add an explicit cast to 'unsigned int' instead}}
-
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-5]]:11-[[@LINE-5]]:13}:"%ld"
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-6]]:16-[[@LINE-6]]:16}:"(long)"
-
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-7]]:11-[[@LINE-7]]:13}:"%lu"
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-8]]:16-[[@LINE-8]]:16}:"(unsigned long)"
-
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-9]]:11-[[@LINE-9]]:14}:"%d"
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-10]]:17-[[@LINE-10]]:17}:"(int)"
-
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-11]]:11-[[@LINE-11]]:14}:"%u"
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-12]]:17-[[@LINE-12]]:17}:"(unsigned int)"
-}
-
-void testPreserveHex() {
-  printf("%x", getNSInteger()); // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%x", getNSUInteger()); // expected-warning{{values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead}}
-
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-3]]:11-[[@LINE-3]]:13}:"%lx"
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-4]]:16-[[@LINE-4]]:16}:"(long)"
-
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-5]]:11-[[@LINE-5]]:13}:"%lx"
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-6]]:16-[[@LINE-6]]:16}:"(unsigned long)"
-}
-
-void testSignedness(NSInteger i, NSUInteger u) {
-  printf("%d", u); // expected-warning{{values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead}}
-  printf("%i", u); // expected-warning{{values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead}}
-  printf("%u", i); // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:13}:"%lu"
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:13}:"%lu"
-  // CHECK-64: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:13}:"%ld"
-}
-
-void testNoWarn() {
-  printf("%ld", getNSInteger()); // no-warning
-  printf("%lu", getNSUInteger()); // no-warning
-  printf("%d", getSInt32()); // no-warning
-  printf("%u", getUInt32()); // no-warning
-}
-
-#else
-
-void testWarn() {
-  printf("%ld", getNSInteger()); // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%lu", getNSUInteger()); // expected-warning{{values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead}}
-  printf("%d", getSInt32()); // expected-warning{{values of type 'SInt32' should not be used as format arguments; add an explicit cast to 'int' instead}}
-  printf("%u", getUInt32()); // expected-warning{{values of type 'UInt32' should not be used as format arguments; add an explicit cast to 'unsigned int' instead}}
-
-  // CHECK-32: fix-it:"{{.*}}":{[[@LINE-5]]:17-[[@LINE-5]]:17}:"(long)"
-  // CHECK-32: fix-it:"{{.*}}":{[[@LINE-5]]:17-[[@LINE-5]]:17}:"(unsigned long)"
-  // CHECK-32: fix-it:"{{.*}}":{[[@LINE-5]]:16-[[@LINE-5]]:16}:"(int)"
-  // CHECK-32: fix-it:"{{.*}}":{[[@LINE-5]]:16-[[@LINE-5]]:16}:"(unsigned int)"
-}
-
-void testPreserveHex() {
-  printf("%lx", getNSInteger()); // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%lx", getNSUInteger()); // expected-warning{{values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead}}
-
-  // CHECK-32: fix-it:"{{.*}}":{[[@LINE-3]]:17-[[@LINE-3]]:17}:"(long)"
-  // CHECK-32: fix-it:"{{.*}}":{[[@LINE-3]]:17-[[@LINE-3]]:17}:"(unsigned long)"
-}
-
-void testNoWarn() {
-  printf("%d", getNSInteger()); // no-warning
-  printf("%u", getNSUInteger()); // no-warning
-  printf("%ld", getSInt32()); // no-warning
-  printf("%lu", getUInt32()); // no-warning
-}
-
-void testSignedness(NSInteger i, NSUInteger u) {
-  // It is valid to use a specifier with the opposite signedness as long as
-  // the type is correct.
-  printf("%d", u); // no-warning
-  printf("%i", u); // no-warning
-  printf("%u", i); // no-warning
-}
-
-#endif
-
-
-void testCasts() {
-  printf("%s", (NSInteger)0); // expected-warning{{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-  printf("%s", (NSUInteger)0); // expected-warning{{values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead}}
-  printf("%s", (SInt32)0); // expected-warning{{values of type 'SInt32' should not be used as format arguments; add an explicit cast to 'int' instead}}
-  printf("%s", (UInt32)0); // expected-warning{{values of type 'UInt32' should not be used as format arguments; add an explicit cast to 'unsigned int' instead}}
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:11-[[@LINE-5]]:13}:"%ld"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:16-[[@LINE-6]]:27}:"(long)"
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:11-[[@LINE-7]]:13}:"%lu"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-8]]:16-[[@LINE-8]]:28}:"(unsigned long)"
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-9]]:11-[[@LINE-9]]:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-10]]:16-[[@LINE-10]]:24}:"(int)"
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-11]]:11-[[@LINE-11]]:13}:"%u"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-12]]:16-[[@LINE-12]]:24}:"(unsigned int)"
-}
-
-void testCapitals() {
-  printf("%D", 1); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'd'?}}
-  printf("%U", 1); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'u'?}}
-  printf("%O", 1); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'o'?}}
-  
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:12-[[@LINE-4]]:13}:"d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:12-[[@LINE-4]]:13}:"u"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:12-[[@LINE-4]]:13}:"o"
-
-  
-  printf("%lD", 1); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'd'?}} expected-warning{{format specifies type 'long' but the argument has type 'int'}}
-
-  // FIXME: offering two somewhat-conflicting fixits is less than ideal.
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:13-[[@LINE-3]]:14}:"d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:14}:"%D"
-}
-
-void testLayeredTypedefs(OSStatus i) {
-  printf("%s", i); // expected-warning {{values of type 'OSStatus' should not be used as format arguments}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/format-no-fixit.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/format-no-fixit.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/format-no-fixit.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fdiagnostics-parseable-fixits -fsyntax-only %s 2>&1 | FileCheck %s
-
-// CHECK-NOT: fix-it:
-
- at class NSString;
-extern void NSLog(NSString *format, ...);
-int printf(const char * restrict, ...) ;
-
-
-void test_object_correction (id x) {  
-  printf("%d", x); // expected-warning{{format specifies type 'int' but the argument has type 'id'}}
-  printf("%s", x); // expected-warning{{format specifies type 'char *' but the argument has type 'id'}}
-  printf("%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'id'}}
-}
-
-
-// Old-style Core Foundation types do not have __attribute__((NSObject)).
-// This is okay, but we won't suggest a fixit; arbitrary structure pointers may
-// not be objects.
-typedef const struct __CFString * CFStringRef;
-
-void test_cf_object_correction (CFStringRef x) {
-  NSLog(@"%@", x); // no-warning
-
-  NSLog(@"%d", x); // expected-warning{{format specifies type 'int' but the argument has type 'CFStringRef'}}
-  NSLog(@"%s", x); // expected-warning{{format specifies type 'char *' but the argument has type 'CFStringRef'}}
-  NSLog(@"%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'CFStringRef'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/format.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/format.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/format.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,230 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -verify %s
-// RUN: %clang_cc1 -fdiagnostics-parseable-fixits -fblocks %s 2>&1 | FileCheck %s
-
- at class NSString;
-extern void NSLog(NSString *, ...);
-int printf(const char * restrict, ...) ;
-
-void test_integer_correction (int x) {
-  printf("%d", x); // no-warning
-  printf("%s", x); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-  printf("%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'int'}}
-  // CHECK: fix-it:"{{.*}}":{10:11-10:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{11:11-11:14}:"%d"
-
-  NSLog(@"%d", x); // no-warning
-  NSLog(@"%s", x); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-  NSLog(@"%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'int'}}
-  NSLog(@"%@", x); // expected-warning{{format specifies type 'id' but the argument has type 'int'}}
-  // CHECK: fix-it:"{{.*}}":{16:11-16:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{17:11-17:14}:"%d"
-  // CHECK: fix-it:"{{.*}}":{18:11-18:13}:"%d"
-}
-
-void test_string_correction (char *x) {
-  printf("%d", x); // expected-warning{{format specifies type 'int' but the argument has type 'char *'}}
-  printf("%s", x); // no-warning
-  printf("%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'char *'}}
-  // CHECK: fix-it:"{{.*}}":{25:11-25:13}:"%s"
-  // CHECK: fix-it:"{{.*}}":{27:11-27:14}:"%s"
-
-  NSLog(@"%d", x); // expected-warning{{format specifies type 'int' but the argument has type 'char *'}}
-  NSLog(@"%s", x); // no-warning
-  NSLog(@"%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'char *'}}
-  NSLog(@"%@", x); // expected-warning{{format specifies type 'id' but the argument has type 'char *'}}
-  // CHECK: fix-it:"{{.*}}":{31:11-31:13}:"%s"
-  // CHECK: fix-it:"{{.*}}":{33:11-33:14}:"%s"
-  // CHECK: fix-it:"{{.*}}":{34:11-34:13}:"%s"
-}
-
-void test_object_correction (id x) {  
-  NSLog(@"%d", x); // expected-warning{{format specifies type 'int' but the argument has type 'id'}}
-  NSLog(@"%s", x); // expected-warning{{format specifies type 'char *' but the argument has type 'id'}}
-  NSLog(@"%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'id'}}
-  NSLog(@"%@", x); // no-warning
-  // CHECK: fix-it:"{{.*}}":{41:11-41:13}:"%@"
-  // CHECK: fix-it:"{{.*}}":{42:11-42:13}:"%@"
-  // CHECK: fix-it:"{{.*}}":{43:11-43:14}:"%@"
-}
-
-typedef const struct __CFString * __attribute__((NSObject)) CFStringRef;
-void test_cf_object_correction (CFStringRef x) {
-  NSLog(@"%d", x); // expected-warning{{format specifies type 'int' but the argument has type 'CFStringRef'}}
-  NSLog(@"%s", x); // expected-warning{{format specifies type 'char *' but the argument has type 'CFStringRef'}}
-  NSLog(@"%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'CFStringRef'}}
-  NSLog(@"%@", x); // no-warning
-  // CHECK: fix-it:"{{.*}}":{52:11-52:13}:"%@"
-  // CHECK: fix-it:"{{.*}}":{53:11-53:13}:"%@"
-  // CHECK: fix-it:"{{.*}}":{54:11-54:14}:"%@"
-}
-
-typedef void (^block_t)(void);
-void test_block_correction (block_t x) {
-  NSLog(@"%d", x); // expected-warning{{format specifies type 'int' but the argument has type 'block_t'}}
-  NSLog(@"%s", x); // expected-warning{{format specifies type 'char *' but the argument has type 'block_t'}}
-  NSLog(@"%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'block_t'}}
-  NSLog(@"%@", x); // no-warning
-  // CHECK: fix-it:"{{.*}}":{63:11-63:13}:"%@"
-  // CHECK: fix-it:"{{.*}}":{64:11-64:13}:"%@"
-  // CHECK: fix-it:"{{.*}}":{65:11-65:14}:"%@"
-}
-
-void test_class_correction (Class x) {
-  NSLog(@"%d", x); // expected-warning{{format specifies type 'int' but the argument has type 'Class'}}
-  NSLog(@"%s", x); // expected-warning{{format specifies type 'char *' but the argument has type 'Class'}}
-  NSLog(@"%lf", x); // expected-warning{{format specifies type 'double' but the argument has type 'Class'}}
-  NSLog(@"%@", x); // no-warning
-  // CHECK: fix-it:"{{.*}}":{73:11-73:13}:"%@"
-  // CHECK: fix-it:"{{.*}}":{74:11-74:13}:"%@"
-  // CHECK: fix-it:"{{.*}}":{75:11-75:14}:"%@"
-}
-
-
-typedef enum : int { NSUTF8StringEncoding = 8 } NSStringEncoding;
-void test_fixed_enum_correction(NSStringEncoding x) {
-  NSLog(@"%@", x); // expected-warning{{format specifies type 'id' but the argument has type 'NSStringEncoding'}}
-  // CHECK: fix-it:"{{.*}}":{85:11-85:13}:"%d"
-}
-
-typedef __SIZE_TYPE__ size_t;
-enum SomeSize : size_t { IntegerSize = sizeof(int) };
-void test_named_fixed_enum_correction(enum SomeSize x) {
-  NSLog(@"%@", x); // expected-warning{{format specifies type 'id' but the argument has type 'enum SomeSize'}}
-  // CHECK: fix-it:"{{.*}}":{92:11-92:13}:"%zu"
-}
-
-
-typedef unsigned char uint8_t;
-void test_char(char c, signed char s, unsigned char u, uint8_t n) {
-  NSLog(@"%s", c); // expected-warning{{format specifies type 'char *' but the argument has type 'char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  NSLog(@"%lf", c); // expected-warning{{format specifies type 'double' but the argument has type 'char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:14}:"%c"
-
-  NSLog(@"%@", c); // expected-warning{{format specifies type 'id' but the argument has type 'char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  NSLog(@"%c", c); // no-warning
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  
-  NSLog(@"%s", s); // expected-warning{{format specifies type 'char *' but the argument has type 'signed char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  NSLog(@"%lf", s); // expected-warning{{format specifies type 'double' but the argument has type 'signed char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:14}:"%c"
-
-  NSLog(@"%@", s); // expected-warning{{format specifies type 'id' but the argument has type 'signed char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  NSLog(@"%c", s); // no-warning
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-
-  NSLog(@"%s", u); // expected-warning{{format specifies type 'char *' but the argument has type 'unsigned char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  NSLog(@"%lf", u); // expected-warning{{format specifies type 'double' but the argument has type 'unsigned char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:14}:"%c"
-
-  NSLog(@"%@", u); // expected-warning{{format specifies type 'id' but the argument has type 'unsigned char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  NSLog(@"%c", u); // no-warning
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-
-  NSLog(@"%s", n); // expected-warning{{format specifies type 'char *' but the argument has type 'uint8_t' (aka 'unsigned char')}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%hhu"
-
-  NSLog(@"%lf", n); // expected-warning{{format specifies type 'double' but the argument has type 'uint8_t' (aka 'unsigned char')}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:14}:"%hhu"
-
-  NSLog(@"%@", n); // expected-warning{{format specifies type 'id' but the argument has type 'uint8_t' (aka 'unsigned char')}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%hhu"
-
-  NSLog(@"%c", n); // no-warning
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%hhu"
-
-
-  NSLog(@"%s", 'a'); // expected-warning{{format specifies type 'char *' but the argument has type 'char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  NSLog(@"%lf", 'a'); // expected-warning{{format specifies type 'double' but the argument has type 'char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:14}:"%c"
-
-  NSLog(@"%@", 'a'); // expected-warning{{format specifies type 'id' but the argument has type 'char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-  NSLog(@"%c", 'a'); // no-warning
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-
-
-  NSLog(@"%s", 'abcd'); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-
-  NSLog(@"%lf", 'abcd'); // expected-warning{{format specifies type 'double' but the argument has type 'int'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:14}:"%d"
-
-  NSLog(@"%@", 'abcd'); // expected-warning{{format specifies type 'id' but the argument has type 'int'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-}
-
-void multichar_constants_false_negative() {
-  // The value of a multi-character constant is implementation-defined, but
-  // almost certainly shouldn't be printed with %c. However, the current
-  // type-checker expects %c to correspond to an integer argument, because
-  // many C library functions like fgetc() actually return an int (using -1
-  // as a sentinel).
-  NSLog(@"%c", 'abcd'); // missing-warning{{format specifies type 'char' but the argument has type 'int'}}
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-}
-
-
-void test_percent_C() {
-  const unsigned short data = 'a';
-  NSLog(@"%C", data);  // no-warning
-
-  NSLog(@"%C", 0x2603);  // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'int'}}
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"(unsigned short)"
-
-  typedef unsigned short unichar;
-  
-  NSLog(@"%C", 0x2603);  // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'int'}}
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"(unichar)"
-  
-  NSLog(@"%C", data ? 0x2F : 0x2603); // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'int'}}
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"(unichar)("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:36-[[@LINE-3]]:36}:")"
-
-  NSLog(@"%C", 0.0); // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'double'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%f"
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"(unichar)"
-
-  NSLog(@"%C", (char)0x2603); // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:22}:"(unichar)"
-
-  NSLog(@"%C", 'a'); // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'char'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%c"
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:22}:"(unichar)"
-}
-
-
-void testSignedness(long i, unsigned long u) {
-  printf("%d", u); // expected-warning{{format specifies type 'int' but the argument has type 'unsigned long'}}
-  printf("%i", u); // expected-warning{{format specifies type 'int' but the argument has type 'unsigned long'}}
-  printf("%u", i); // expected-warning{{format specifies type 'unsigned int' but the argument has type 'long'}}
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:13}:"%lu"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:13}:"%lu"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:11-[[@LINE-4]]:13}:"%ld"
-
-  printf("%+d", u); // expected-warning{{format specifies type 'int' but the argument has type 'unsigned long'}}
-
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:11-[[@LINE-2]]:14}:"%+ld"
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/format.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/format.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/format.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -verify %s
-// RUN: %clang_cc1 -fdiagnostics-parseable-fixits -fblocks %s 2>&1 | FileCheck %s
-
-extern "C" void NSLog(id, ...);
-
-void test_percent_C() {
-  const unsigned short data = 'a';
-  NSLog(@"%C", data);  // no-warning
-
-  const wchar_t wchar_data = L'a';
-  NSLog(@"%C", wchar_data);  // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'wchar_t'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:16-[[@LINE-1]]:16}:"(unsigned short)"
-
-  NSLog(@"%C", 0x2603);  // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'int'}}
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"(unsigned short)"
-
-  typedef unsigned short unichar;
-
-  NSLog(@"%C", wchar_data);  // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'wchar_t'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:16-[[@LINE-1]]:16}:"(unichar)"
-  
-  NSLog(@"%C", 0x2603);  // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'int'}}
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%d"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"(unichar)"
-  
-  NSLog(@"%C", 0.0); // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'double'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:11-[[@LINE-1]]:13}:"%f"
-  // CHECK-NOT: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:16}:"(unichar)"
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/messages.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/messages.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/messages.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 2>&1 %s | FileCheck -strict-whitespace %s
-
-struct A {
-  unsigned int a;
-};
-
-// PR10696
-void testOverlappingInsertions(int b) {
-  A var = { b };
-  // CHECK:  A var = { b };
-  // CHECK:            ^
-  // CHECK:            static_cast<unsigned int>( )
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/no-fixit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/no-fixit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/no-fixit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fdiagnostics-parseable-fixits -x c++ -std=c++11 %s 2>&1 | FileCheck %s
-
-// test that the diagnostics produced by this code do not include fixit hints
-
-// CHECK-NOT: fix-it:
-
-template<template<typename> +> void func();
-
-struct {
-  void i() {
-    (void)&i;
-  }
-} x;

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/no-macro-fixit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/no-macro-fixit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/no-macro-fixit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -pedantic -fixit -x c %s
-// rdar://9091893
-
-#define va_arg(ap, type)    __builtin_va_arg(ap, type)
-typedef __builtin_va_list va_list;
-
-void myFunc() {
-    va_list values;
-    
-    int value;
-
-    while (value = va_arg(values, int)) {  // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                                           // expected-note {{use '==' to turn this assignment into an equality comparison}} \
-					   // expected-note {{place parentheses around the assignment to silence this warning}}
-    }
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/no-typo.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/no-typo.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/no-typo.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fno-spell-checking -verify %s
-typedef struct {
-  float x, y;
-} Point;
-
-point p1; // expected-error{{unknown type name 'point'}}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/objc-literals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/objc-literals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/objc-literals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -fsyntax-only -fixit -x objective-c %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x objective-c %t
-
-typedef unsigned char BOOL;
-
- at interface NSObject
- at end
-
- at interface NSNumber : NSObject
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
- at end
-
- at interface NSArray : NSObject
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary : NSObject
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
- at end
-
- at interface NSString : NSObject
- at end
-
-void fixes() {
-  id arr = @[
-    17, // expected-error{{numeric literal must be prefixed by '@' in a collection}}
-    'a', // expected-error{{character literal must be prefixed by '@'}}
-    "blah" // expected-error{{string literal must be prefixed by '@'}}
-  ];
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/typo-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/typo-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/typo-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// FIXME: The diagnostics and recovery here are very, very poor.
-
-// PR10355
-template<typename T> void template_id1() { // expected-note {{'template_id1' declared here}} \
-  // expected-note {{possible target for call}}
-  template_id2<> t; // expected-error {{no template named 'template_id2'; did you mean 'template_id1'?}} \
-  // expected-error {{expected ';' after expression}} \
-  // expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}} \
-  // expected-error {{use of undeclared identifier 't'}}
- }
-
-// FIXME: It would be nice if we could get this correction right.
-namespace PR12297 {
-  namespace A {
-    typedef short   T;
-    
-    namespace B {
-      typedef short   T;
-        
-      T global(); // expected-note {{'A::B::global' declared here}}
-    }
-  }
-
-  using namespace A::B;
-
-  T A::global(); // expected-error {{out-of-line definition of 'global' does not match any declaration in namespace 'PR12297::A'; did you mean 'A::B::global'?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/typo-crash.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/typo-crash.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/typo-crash.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// <rdar://problem/7605289>
- at implementation Unknown (Blarg) // expected-error{{cannot find interface declaration for 'Unknown'}}
-- (int)method { return ivar; } // expected-error{{use of undeclared identifier 'ivar'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/typo.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/typo.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/typo.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -fsyntax-only -fixit -x c %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x c %t
-
-struct Point {
-  float x, y;
-};
-
-struct Rectangle {
-  struct Point top_left, // expected-note{{'top_left' declared here}}
-               bottom_right;
-};
-
-enum Color { Red, Green, Blue };
-
-struct Window {
-  struct Rectangle bounds; // expected-note{{'bounds' declared here}}
-  enum Color color;
-};
-
-struct Window window = {
-  .bunds. // expected-error{{field designator 'bunds' does not refer to any field in type 'struct Window'; did you mean 'bounds'?}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:4-[[@LINE-1]]:9}:"bounds"
-
-  topleft.x = 3.14, // expected-error{{field designator 'topleft' does not refer to any field in type 'struct Rectangle'; did you mean 'top_left'?}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:10}:"top_left"
-  2.71818, 5.0, 6.0, Red
-};
-
-void test() {
-  Rectangle r1; // expected-error{{must use 'struct' tag to refer to type 'Rectangle'}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:3}:"struct "
-  r1.top_left.x = 0;
-
-  typedef struct Rectangle Rectangle; // expected-note{{'Rectangle' declared here}}
-  rectangle *r2 = &r1; // expected-error{{unknown type name 'rectangle'; did you mean 'Rectangle'?}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:12}:"Rectangle"
-
-  r2->top_left.y = 0;
-  unsinged *ptr = 0; // expected-error{{use of undeclared identifier 'unsinged'; did you mean 'unsigned'?}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:3-[[@LINE-1]]:11}:"unsigned"
-  *ptr = 17;
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/typo.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/typo.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/typo.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,126 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -fsyntax-only -fixit -x c++ %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x c++ %t
-// RUN: grep test_string %t
-
-namespace std {
-  template<typename T> class basic_string { // expected-note 2{{'basic_string' declared here}} \
-                                            // expected-note {{'otherstd::basic_string' declared here}}
-  public:
-    int find(const char *substr); // expected-note{{'find' declared here}}
-    static const int npos = -1; // expected-note{{'npos' declared here}}
-  };
-
-  typedef basic_string<char> string; // expected-note 2{{'string' declared here}}
-}
-
-namespace otherstd { // expected-note 2{{'otherstd' declared here}} \
-                     // expected-note{{namespace 'otherstd' defined here}}
-  using namespace std;
-}
-
-using namespace std;
-
-other_std::strng str1; // expected-error{{use of undeclared identifier 'other_std'; did you mean 'otherstd'?}} \
-// expected-error{{no type named 'strng' in namespace 'otherstd'; did you mean 'string'?}}
-tring str2; // expected-error{{unknown type name 'tring'; did you mean 'string'?}}
-
-::other_std::string str3; // expected-error{{no member named 'other_std' in the global namespace; did you mean 'otherstd'?}}
-
-float area(float radius, // expected-note{{'radius' declared here}}
-           float pi) {
-  return radious * pi; // expected-error{{did you mean 'radius'?}}
-}
-
-using namespace othestd; // expected-error{{no namespace named 'othestd'; did you mean 'otherstd'?}}
-namespace blargh = otherstd; // expected-note 3{{namespace 'blargh' defined here}}
-using namespace ::blarg; // expected-error{{no namespace named 'blarg' in the global namespace; did you mean 'blargh'?}}
-
-namespace wibble = blarg; // expected-error{{no namespace named 'blarg'; did you mean 'blargh'?}}
-namespace wobble = ::blarg; // expected-error{{no namespace named 'blarg' in the global namespace; did you mean 'blargh'?}}
-
-bool test_string(std::string s) {
-  basc_string<char> b1; // expected-error{{no template named 'basc_string'; did you mean 'basic_string'?}}
-  std::basic_sting<char> b2; // expected-error{{no template named 'basic_sting' in namespace 'std'; did you mean 'basic_string'?}}
-  (void)b1;
-  (void)b2;
-  return s.fnd("hello") // expected-error{{no member named 'fnd' in 'std::basic_string<char>'; did you mean 'find'?}}
-    == std::string::pos; // expected-error{{no member named 'pos' in 'std::basic_string<char>'; did you mean 'npos'?}}
-}
-
-struct Base { };
-struct Derived : public Base { // expected-note{{base class 'Base' specified here}}
-  int member; // expected-note 3{{'member' declared here}}
-
-  Derived() : base(), // expected-error{{initializer 'base' does not name a non-static data member or base class; did you mean the base class 'Base'?}}
-              ember() { } // expected-error{{initializer 'ember' does not name a non-static data member or base class; did you mean the member 'member'?}}
-
-  int getMember() const {
-    return ember; // expected-error{{use of undeclared identifier 'ember'; did you mean 'member'?}}
-  }
-
-  int &getMember();
-};
-
-int &Derived::getMember() {
-  return ember; // expected-error{{use of undeclared identifier 'ember'; did you mean 'member'?}}
-}
-
-typedef int Integer; // expected-note{{'Integer' declared here}}
-int global_value; // expected-note{{'global_value' declared here}}
-
-int foo() {
-  integer * i = 0; // expected-error{{unknown type name 'integer'; did you mean 'Integer'?}}
-  unsinged *ptr = 0; // expected-error{{use of undeclared identifier 'unsinged'; did you mean 'unsigned'?}}
-  return *i + *ptr + global_val; // expected-error{{use of undeclared identifier 'global_val'; did you mean 'global_value'?}}
-}
-
-namespace nonstd {
-  typedef std::basic_string<char> yarn; // expected-note 2 {{'nonstd::yarn' declared here}}
-  int narf; // expected-note{{'nonstd::narf' declared here}}
-}
-
-yarn str4; // expected-error{{unknown type name 'yarn'; did you mean 'nonstd::yarn'?}}
-wibble::yarn str5; // expected-error{{no type named 'yarn' in namespace 'otherstd'; did you mean 'nonstd::yarn'?}}
-
-int poit() {
-  nonstd::basic_string<char> str; // expected-error{{no template named 'basic_string' in namespace 'nonstd'; did you mean 'otherstd::basic_string'?}}
-  return wibble::narf; // expected-error{{no member named 'narf' in namespace 'otherstd'; did you mean 'nonstd::narf'?}}
-}
-
-namespace check_bool {
-  void f() {
-    Bool b; // expected-error{{use of undeclared identifier 'Bool'; did you mean 'bool'?}}
-  }
-}
-
-namespace outr {
-}
-namespace outer {
-  namespace inner { // expected-note{{'outer::inner' declared here}} \
-                    // expected-note{{namespace 'outer::inner' defined here}} \
-                    // expected-note{{'inner' declared here}}
-    int i;
-  }
-}
-
-using namespace outr::inner; // expected-error{{no namespace named 'inner' in namespace 'outr'; did you mean 'outer::inner'?}}
-
-void func() {
-  outr::inner::i = 3; // expected-error{{no member named 'inner' in namespace 'outr'; did you mean 'outer::inner'?}}
-  outer::innr::i = 4; // expected-error{{no member named 'innr' in namespace 'outer'; did you mean 'inner'?}}
-}
-
-struct base {
-};
-struct derived : base {
-  int i;
-};
-
-void func2() {
-  derived d;
-  // FIXME: we should offer a fix here. We do if the 'i' is misspelled, but we don't do name qualification changes
-  //        to replace base::i with derived::i as we would for other qualified name misspellings.
-  // d.base::i = 3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/FixIt/typo.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/FixIt/typo.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/FixIt/typo.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,167 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin10 -DNON_FIXITS -verify -Wno-objc-root-class %s
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -x objective-c -fsyntax-only -triple x86_64-apple-darwin10 -fixit -Wno-objc-root-class %t
-// RUN: %clang_cc1 -x objective-c -fsyntax-only -triple x86_64-apple-darwin10 -pedantic -Werror -Wno-objc-root-class %t
-// RUN: grep "@implementation Sub3" %t
-
- at interface NSString // expected-note 2{{'NSString' declared here}}
-+ (int)method:(int)x;
- at end
-
-void test() {
-  NSstring *str = @"A string"; // expected-error{{unknown type name 'NSstring'; did you mean 'NSString'?}}
-}
-
- at protocol P1
- at optional
- at property int *sprop; // expected-note{{'sprop' declared here}}
- at end
-
- at interface A
-{
-  int his_ivar; // expected-note 2{{'his_ivar' declared here}}
-  float wibble;
-}
-- (void)methodA;
-+ (void)methodA;
- at property int his_prop; // expected-note{{'his_prop' declared here}}
- at end
-
- at interface B : A <P1>
-{
-  int her_ivar; // expected-note 2{{'her_ivar' declared here}}
-}
-
- at property int her_prop; // expected-note{{'her_prop' declared here}}
-- (void)inst_method1:(int)a;
-+ (void)class_method1;
- at end
-
- at implementation A
- at synthesize his_prop = his_ivar;
-- (void)methodA { }
-+ (void)methodA { }
- at end
-
- at implementation B
- at synthesize her_prop = her_ivar;
-
--(void)inst_method1:(int)a {
-  herivar = a; // expected-error{{use of undeclared identifier 'herivar'; did you mean 'her_ivar'?}}
-  hisivar = a; // expected-error{{use of undeclared identifier 'hisivar'; did you mean 'his_ivar'?}}
-  self->herivar = a; // expected-error{{'B' does not have a member named 'herivar'; did you mean 'her_ivar'?}}
-  self->hisivar = a; // expected-error{{'B' does not have a member named 'hisivar'; did you mean 'his_ivar'?}}
-  self.hisprop = 0; // expected-error{{property 'hisprop' not found on object of type 'B *'; did you mean 'his_prop'?}}
-  self.herprop = 0; // expected-error{{property 'herprop' not found on object of type 'B *'; did you mean 'her_prop'?}}
-  self.s_prop = 0; // expected-error{{property 's_prop' not found on object of type 'B *'; did you mean 'sprop'?}}
-}
-
-+(void)class_method1 {
-}
- at end
-
-void test_message_send(B* b) {
-  [NSstring method:17]; // expected-error{{unknown receiver 'NSstring'; did you mean 'NSString'?}}
-}
-
- at interface Collide // expected-note{{'Collide' declared here}}
-{
- at public
-  int value; // expected-note{{'value' declared here}}
-}
-
- at property int value; // expected-note{{'value' declared here}}
- at end
-
- at implementation Collide
- at synthesize value = value;
- at end
-
-void test2(Collide *a) {
-  a.valu = 17; // expected-error{{property 'valu' not found on object of type 'Collide *'; did you mean 'value'?}}
-  a->vale = 17; // expected-error{{'Collide' does not have a member named 'vale'; did you mean 'value'?}}
-}
-
-#ifdef NON_FIXITS
- at interface Derived : Collid // expected-error{{cannot find interface declaration for 'Collid', superclass of 'Derived'; did you mean 'Collide'?}}
- at end
-#endif
-
-#ifdef NON_FIXITS
- at protocol NetworkSocket // expected-note{{'NetworkSocket' declared here}}
-- (int)send:(void*)buffer bytes:(int)bytes;
- at end
-
- at interface IPv6 <Network_Socket> // expected-error{{cannot find protocol declaration for 'Network_Socket'; did you mean 'NetworkSocket'?}}
- at end
-#endif
-
- at interface Super
-- (int)method; // expected-note{{using}}
-- (int)method2;
-- (int)method3:(id)x;
- at end
-
- at interface Sub : Super
-- (int)method;
- at end
-
- at implementation Sub
-- (int)method {
-  return [supper method]; // expected-error{{unknown receiver 'supper'; did you mean 'super'?}}
-}
-  
- at end
-
-double *isupper(int);
-
- at interface Sub2 : Super
-- (int)method2;
- at end
-
- at implementation Sub2
-- (int)method2 {
-  return [supper method2]; // expected-error{{unknown receiver 'supper'; did you mean 'super'?}}
-}
- at end
-
- at interface Ivar
- at end
-
- at protocol Proto
- at property (retain) id ivar;
- at end
-
-#ifdef NON_FIXITS
- at interface User <Proto>
-- (void)method; // expected-note{{also found}}
- at end
-
- at implementation User
- at synthesize ivar;
-
-- (void)method {
-  // Test that we don't correct 'ivar' to 'Ivar'  e
-  [ivar method]; // expected-warning{{multiple methods named 'method' found}}
-}
- at end
-#endif
-
-void f(A *a) {
-  f(a) // expected-error{{expected ';' after expression}}
-  [a methodA] // expected-error{{expected ';' after expression}}
-  [A methodA] // expected-error{{expected ';' after expression}}
-}
-
-#ifdef NON_FIXITS
- at interface Sub3 : Super
-- (int)method3;
- at end
-
- at implementation Sub3
-- (int)method3 {
-  int x = super; // expected-error{{use of undeclared identifier 'super'}}
-  return 0;
-}
- at end
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Format/basic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Format/basic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Format/basic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp
-// RUN: clang-format -style=LLVM -i %t.cpp
-// RUN: FileCheck -strict-whitespace -input-file=%t.cpp %s
-
-// CHECK: {{^int\ \*i;}}
- int   *  i  ;

Modified: trunk/contrib/llvm/tools/clang/test/Format/diagnostic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Format/diagnostic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Format/diagnostic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: clang-format 2>&1 >/dev/null %s |FileCheck %s
-
-}
-// CHECK: diagnostic.cpp:[[@LINE-1]]:1: error: unexpected '}'

Modified: trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs-error.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs-error.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs-error.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: cp %s %t-1.cpp
-// RUN: cp %s %t-2.cpp
-// RUN: clang-format 2>&1 >/dev/null -offset=1 -length=0 %t-1.cpp %t-2.cpp |FileCheck %s
-// CHECK: error: "-offset" and "-length" can only be used for single file.
-
-int i ;

Modified: trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs-inplace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs-inplace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs-inplace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: cp %s %t-1.cpp
-// RUN: cp %s %t-2.cpp
-// RUN: clang-format -style=LLVM -i %t-1.cpp %t-2.cpp
-// RUN: FileCheck -strict-whitespace -input-file=%t-1.cpp %s
-// RUN: FileCheck -strict-whitespace -input-file=%t-2.cpp %s
-
-// CHECK: {{^int\ \*i;}}
- int   *  i  ;

Modified: trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Format/multiple-inputs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: cp %s %t-1.cpp
-// RUN: cp %s %t-2.cpp
-// RUN: clang-format -style=LLVM %t-1.cpp %t-2.cpp|FileCheck -strict-whitespace %s
-
-// CHECK: {{^int\ \*i;}}
-// CHECK: {{^int\ \*i;}}
- int   *  i  ;

Modified: trunk/contrib/llvm/tools/clang/test/Format/ranges.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Format/ranges.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Format/ranges.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp
-// RUN: clang-format -style=LLVM -offset=2 -length=0 -offset=28 -length=0 -i %t.cpp
-// RUN: FileCheck -strict-whitespace -input-file=%t.cpp %s
-// CHECK: {{^int\ \*i;$}}
-  int*i;
-
-// CHECK: {{^\ \ int\ \ \*\ \ i;$}}
-  int  *  i; 
-
-// CHECK: {{^\ \ int\ \*i;$}}
-  int   *   i;

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/all.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/all.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/all.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#include "warn.h"

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/warn.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/warn.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/boost/warn.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#if BOOST
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/all.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/all.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/all.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#include "warn.h"

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/warn.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/warn.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/libs/mylib/warn.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#if MYLIB
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/src/all.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/src/all.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/src/all.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#include "libs/boost/all.h"
-#include "libs/mylib/all.h"
-
-#include "libs/boost/warn.h"
-#include "libs/mylib/warn.h"
-#include "src/warn.h"

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/src/warn.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/src/warn.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/SystemHeaderPrefix/src/warn.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#if SRC
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/TestFramework.framework/Headers/TestFramework.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/TestFramework.framework/Headers/TestFramework.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/TestFramework.framework/Headers/TestFramework.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-static int f0(void) {}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = []

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#pragma clang system_header
-included_line1
-#include "rewrite-includes2.h"

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-included_line2

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes3.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes3.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes3.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-included_line3

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes4.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes4.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes4.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-included_line4

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes5.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes5.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes5.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-included_line5

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes6.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes6.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes6.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#pragma once
-included_line6

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes7.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes7.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes7.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-#ifndef REWRITE_INCLUDES_7
-#define REWRITE_INCLUDES_7
-included_line7
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes8.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes8.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/rewrite-includes8.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#if __has_include_next(<rewrite-includes8.h>)
-#elif __has_include(<rewrite-includes8.hfail>)
-#endif
-#if !__has_include("rewrite-includes8.h")
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#include "test2.h"

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int x;

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test3.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test3.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Inputs/test3.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int y;

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Weverything.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Weverything.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Weverything.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// Regression check that -pedantic-errors doesn't cause other diagnostics to
-// become errors.
-//
-// RUN: %clang_cc1 -verify -Weverything -pedantic-errors %s
-
-int f0(int, unsigned);
-int f0(int x, unsigned y) {
-  return x < y; // expected-warning {{comparison of integers}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/Wno-everything.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/Wno-everything.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/Wno-everything.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-everything -Wsign-compare %s
-
-int f0(int, unsigned);
-int f0(int x, unsigned y) {
-  if (x=3);
-  return x < y; // expected-warning {{comparison of integers}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/ast-codegen.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/ast-codegen.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/ast-codegen.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -emit-ast -o %t.ast %s
-// RUN: %clang -target i386-unknown-unknown -emit-llvm -S -o - %t.ast | FileCheck %s
-
-// CHECK: module asm "foo"
-__asm__("foo");
-
-// CHECK: @g0 = common global i32 0, align 4
-int g0;
-
-// CHECK: define i32 @f0()
-int f0() {
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/ast-main.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/ast-main.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/ast-main.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -emit-llvm -S -o %t1.ll -x c - < %s
-// RUN: %clang -emit-ast -o %t.ast %s
-// RUN: %clang -emit-llvm -S -o %t2.ll -x ast - < %t.ast
-// RUN: diff %t1.ll %t2.ll
-
-int main() {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/ast-main.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/ast-main.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/ast-main.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang -emit-llvm -S -o %t1.ll -x c++ - < %s
-// RUN: %clang -fno-delayed-template-parsing -emit-ast -o %t.ast %s
-// RUN: %clang -emit-llvm -S -o %t2.ll -x ast - < %t.ast
-// RUN: diff %t1.ll %t2.ll
-
-// http://llvm.org/bugs/show_bug.cgi?id=15377
-template<typename T>
-struct S {
-    T *mf();
-};
-template<typename T>
-T *S<T>::mf() {
-    // warning: control reaches end of non-void function [-Wreturn-type]
-}
-
-void f() {
-    S<int>().mf();
-}
-
-int main() {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/cpp-output.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/cpp-output.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/cpp-output.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang -E -o %t -C %s
-// RUN: grep '^int x; // comment' %t
-// RUN: grep '^x x' %t
-// RUN: %clang -E -o %t -CC %s
-// RUN: grep '^int x; // comment' %t
-// RUN: grep '^x /\* comment \*/ x /\* comment \*/' %t
-
-int x; // comment
-
-#define A(foo, bar) foo bar
-#define B x // comment 
-
-A(B, B)
-

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/darwin-version.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/darwin-version.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/darwin-version.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang -target armv6-apple-darwin9 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__' %t | count 0
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | grep '1050' | count 1
-// RUN: %clang -target armv6-apple-darwin9 -miphoneos-version-min=3.0 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__' %t | grep '30000' | count 1
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | count 0
-// RUN: %clang -target armv6-apple-darwin9 -miphoneos-version-min=2.0 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__' %t | grep '20000' | count 1
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | count 0
-// RUN: %clang -target armv6-apple-darwin9 -miphoneos-version-min=2.2 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__' %t | grep '20200' | count 1
-// RUN: %clang -target i686-apple-darwin8 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__' %t | count 0
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | grep '1040' | count 1
-// RUN: %clang -target i686-apple-darwin9 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | grep '1050' | count 1
-// RUN: %clang -target i686-apple-darwin10 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | grep '1060' | count 1
-// RUN: %clang -target i686-apple-darwin9 -mmacosx-version-min=10.4 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__' %t | count 0
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | grep '1040' | count 1
-// RUN: %clang -target i686-apple-darwin9 -mmacosx-version-min=10.5 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | grep '1050' | count 1
-// RUN: %clang -target i686-apple-darwin9 -mmacosx-version-min=10.6 -dM -E -o %t %s
-// RUN: grep '__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__' %t | grep '1060' | count 1

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/dependency-gen-escaping.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/dependency-gen-escaping.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/dependency-gen-escaping.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// REQUIRES: shell
-// PR15642
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir
-// RUN: echo > '%t.dir/    .h'
-// RUN: echo > '%t.dir/$$.h'
-// RUN: echo > '%t.dir/##.h'
-// RUN: cd %t.dir
-// RUN: %clang -MD -MF - %s -fsyntax-only -I. | FileCheck -strict-whitespace %s
-
-// CHECK: \ \ \ \ .h
-// CHECK: $$$$.h
-// CHECK: \#\#.h
-
-#include "    .h"
-#include "$$.h"
-#include "##.h"

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/dependency-gen.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/dependency-gen.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/dependency-gen.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// REQUIRES: shell
-// Basic test
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir/a/b
-// RUN: echo > %t.dir/a/b/x.h
-// RUN: cd %t.dir
-// RUN: %clang -MD -MF - %s -fsyntax-only -I a/b | FileCheck -check-prefix=CHECK-ONE %s
-// CHECK-ONE: {{ }}a/b{{[/\\]}}x.h
-
-// PR8974 (-include flag)
-// RUN: %clang -MD -MF - %s -fsyntax-only -include a/b/x.h -DINCLUDE_FLAG_TEST | FileCheck -check-prefix=CHECK-TWO %s
-// CHECK-TWO: {{ }}a/b/x.h
-
-// rdar://problem/9734352 (paths involving ".")
-// RUN: %clang -MD -MF - %s -fsyntax-only -I ./a/b | FileCheck -check-prefix=CHECK-THREE %s
-// CHECK-THREE: {{ }}a/b{{[/\\]}}x.h
-// RUN: %clang -MD -MF - %s -fsyntax-only -I .//./a/b/ | FileCheck -check-prefix=CHECK-FOUR %s
-// CHECK-FOUR: {{ }}a/b{{[/\\]}}x.h
-// RUN: %clang -MD -MF - %s -fsyntax-only -I a/b/. | FileCheck -check-prefix=CHECK-FIVE %s
-// CHECK-FIVE: {{ }}a/b/.{{[/\\]}}x.h
-// RUN: cd a/b
-// RUN: %clang -MD -MF - %s -fsyntax-only -I ./ | FileCheck -check-prefix=CHECK-SIX %s
-// CHECK-SIX: {{ }}x.h
-
-#ifndef INCLUDE_FLAG_TEST
-#include <x.h>
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/dependency-generation-crash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/dependency-generation-crash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/dependency-generation-crash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: touch %t
-// RUN: chmod 0 %t
-// %clang -E -dependency-file bla -MT %t -MP -o %t -x c /dev/null
-// rdar://9286457

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/diagnostics-option-names.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/diagnostics-option-names.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/diagnostics-option-names.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: not %clang_cc1 -fdiagnostics-show-option -Werror -Weverything %s 2> %t
-// RUN: FileCheck < %t %s
-
-int f0(int, unsigned);
-int f0(int x, unsigned y) {
-// CHECK: comparison of integers of different signs{{.*}} [-Werror,-Wsign-compare]
-  return x < y; // expected-error {{ : 'int' and 'unsigned int'  }}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/hexagon-target-basic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/hexagon-target-basic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/hexagon-target-basic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple hexagon-unknown-unknown %s -S -o /dev/null
-// REQUIRES: hexagon-registered-target
-
-// Testcase for bug 14744.  Empty file is sufficient, since the problem
-// was a bad data layout string in the Hexagon target causing an ICE
-// when compiling any Hexagon program.
-
-int x;  // In C99, a translation unit needs to have at least one declaration.
-

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/iframework.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/iframework.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/iframework.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang -fsyntax-only -iframework %S/Inputs %s -Xclang -verify
-// expected-no-diagnostics
-
-#include <TestFramework/TestFramework.h>

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/ir-support-codegen.ll
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/ir-support-codegen.ll	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/ir-support-codegen.ll	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-; REQUIRES: x86-64-registered-target
-; RUN: %clang_cc1 -S -o - %s | FileCheck %s
-
-target triple = "x86_64-apple-darwin10"
-
-; CHECK: .globl _f0
-define i32 @f0() nounwind ssp {
-       ret i32 0
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/ir-support-errors.ll
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/ir-support-errors.ll	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/ir-support-errors.ll	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-; RUN: %clang_cc1 -S -o - %s 2>&1 | FileCheck %s
-
-target triple = "x86_64-apple-darwin10"
-
-define i32 @f0() nounwind ssp {
-; CHECK: {{.*}}ir-support-errors.ll:7:16: error: use of undefined value '%x'
-       ret i32 %x
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = ['.c', '.cpp', '.m', '.mm', '.ll', '.bc']

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -DA= -DB=1 -verify -fsyntax-only %s
-// expected-no-diagnostics
-
-int a[(B A) == 1 ? 1 : -1];
-
-
-// PR13747 - Don't warn about unused results with statement exprs in macros.
-void stuff(int,int,int);
-#define memset(x,y,z) ({ stuff(x,y,z); x; })
-
-void foo(int a, int b, int c) {
-  memset(a,b,c);  // No warning!
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/output-failures.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/output-failures.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/output-failures.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: not %clang_cc1 -emit-llvm -o %S/doesnotexist/somename %s 2> %t
-// RUN: FileCheck -check-prefix=OUTPUTFAIL -input-file=%t %s
-
-// OUTPUTFAIL: Error opening output file '{{.*}}doesnotexist{{.*}}'

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/preprocessed-output-macro-first-token.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/preprocessed-output-macro-first-token.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/preprocessed-output-macro-first-token.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// This is the first thing other than comments and preprocessor stuff in the
-// file.
-//
-// RUN: %clang_cc1 -fms-extensions -E %s
-#pragma comment(lib, "somelib")

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/print-header-includes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/print-header-includes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/print-header-includes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -include Inputs/test3.h -E -H -o %t.out %s 2> %t.err
-// RUN: FileCheck < %t.err %s
-
-// CHECK-NOT: test3.h
-// CHECK: . {{.*test.h}}
-// CHECK: .. {{.*test2.h}}
-
-#include "Inputs/test.h"

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-invalid-hasinclude.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-invalid-hasinclude.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-invalid-hasinclude.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -E -frewrite-includes -DFIRST -I %S/Inputs %s -o - | FileCheck -strict-whitespace %s
-
-#if __has_include bar.h
-#endif
-
-#if __has_include(bar.h)
-#endif
-
-#if __has_include(<bar.h)
-#endif
-
-// CHECK: #if __has_include bar.h
-// CHECK: #endif
-// CHECK: #if __has_include(bar.h)
-// CHECK: #endif
-// CHECK: #if __has_include(<bar.h)
-// CHECK: #endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-missing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-missing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-missing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -verify -E -frewrite-includes %s -o - | FileCheck -strict-whitespace %s
-
-#include "foobar.h" // expected-error {{'foobar.h' file not found}}
-// CHECK: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "foobar.h"
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 4 "{{.*}}rewrite-includes-missing.c"{{$}}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-modules.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-modules.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes-modules.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c %s -F %S/../Modules/Inputs -E -frewrite-includes -o - | FileCheck %s
-
-int bar();
-#include <Module/Module.h>
-int foo();
-#include <Module/Module.h>
-
-// CHECK: int bar();{{$}}
-// CHECK-NEXT: #if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: #include <Module/Module.h>{{$}}
-// CHECK-NEXT: #endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: @import Module; /* clang -frewrite-includes: implicit import */{{$}}
-// CHECK-NEXT: # 6 "{{.*[/\\]}}rewrite-includes-modules.c"{{$}}
-// CHECK-NEXT: int foo();{{$}}
-// CHECK-NEXT: #if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: #include <Module/Module.h>{{$}}
-// CHECK-NEXT: #endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: @import Module; /* clang -frewrite-includes: implicit import */{{$}}
-// CHECK-NEXT: # 8 "{{.*[/\\]}}rewrite-includes-modules.c"{{$}}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-includes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -verify -E -frewrite-includes -DFIRST -I %S/Inputs %s -o - | FileCheck -strict-whitespace %s
-// RUN: %clang_cc1 -verify -E -frewrite-includes -P -DFIRST -I %S/Inputs %s -o - | FileCheck -check-prefix=CHECKNL -strict-whitespace %s
-// STARTCOMPARE
-#define A(a,b) a ## b
-A(1,2)
-#include "rewrite-includes1.h"
-#ifdef FIRST
-#define HEADER "rewrite-includes3.h"
-#include HEADER
-#else
-#include "rewrite-includes4.h"
-#endif
-#/**/include /**/ "rewrite-includes5.h" /**/ \
- 
-#include "rewrite-includes6.h" // comment
- 
-#include "rewrite-includes6.h" /* comment
-                                  continues */
-#include "rewrite-includes7.h"
-#include "rewrite-includes7.h"
-#include "rewrite-includes8.h"
-// ENDCOMPARE
-// CHECK: {{^}}// STARTCOMPARE{{$}}
-// CHECK-NEXT: {{^}}#define A(a,b) a ## b{{$}}
-// CHECK-NEXT: {{^}}A(1,2){{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "rewrite-includes1.h"{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 1{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#pragma clang system_header{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 3{{$}}
-// CHECK-NEXT: {{^}}included_line1{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "rewrite-includes2.h"{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes2.h" 1 3{{$}}
-// CHECK-NEXT: {{^}}included_line2{{$}}
-// CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 2 3{{$}}
-// CHECK-NEXT: {{^}}# 7 "{{.*}}rewrite-includes.c" 2{{$}}
-// CHECK-NEXT: {{^}}#ifdef FIRST{{$}}
-// CHECK-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include HEADER{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes3.h" 1{{$}}
-// CHECK-NEXT: {{^}}included_line3{{$}}
-// CHECK-NEXT: {{^}}# 10 "{{.*}}rewrite-includes.c" 2{{$}}
-// CHECK-NEXT: {{^}}#else{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "rewrite-includes4.h"{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 12 "{{.*}}rewrite-includes.c"{{$}}
-// CHECK-NEXT: {{^}}#endif{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}}
-// CHECK-NEXT: {{^}} {{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes5.h" 1{{$}}
-// CHECK-NEXT: {{^}}included_line5{{$}}
-// CHECK-NEXT: {{^}}# 15 "{{.*}}rewrite-includes.c" 2{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h" 1{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#pragma once{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h"{{$}}
-// CHECK-NEXT: {{^}}included_line6{{$}}
-// CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c" 2{{$}}
-// CHECK-NEXT: {{^}} {{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}}
-// CHECK-NEXT: {{^}}                                  continues */{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 19 "{{.*}}rewrite-includes.c"{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes7.h" 1{{$}}
-// CHECK-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}}
-// CHECK-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}}
-// CHECK-NEXT: {{^}}included_line7{{$}}
-// CHECK-NEXT: {{^}}#endif{{$}}
-// CHECK-NEXT: {{^}}# 20 "{{.*}}rewrite-includes.c" 2{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 21 "{{.*}}rewrite-includes.c"{{$}}
-// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}#include "rewrite-includes8.h"{{$}}
-// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes8.h" 1{{$}}
-// CHECK-NEXT: {{^}}#if (1)/*__has_include_next(<rewrite-includes8.h>)*/{{$}}
-// CHECK-NEXT: {{^}}#elif (0)/*__has_include(<rewrite-includes8.hfail>)*/{{$}}
-// CHECK-NEXT: {{^}}#endif{{$}}
-// CHECK-NEXT: {{^}}#if !(1)/*__has_include("rewrite-includes8.h")*/{{$}}
-// CHECK-NEXT: {{^}}#endif{{$}}
-// CHECK-NEXT: {{^}}# 22 "{{.*}}rewrite-includes.c" 2{{$}}
-// CHECK-NEXT: {{^}}// ENDCOMPARE{{$}}
-
-// CHECKNL: {{^}}// STARTCOMPARE{{$}}
-// CHECKNL-NEXT: {{^}}#define A(a,b) a ## b{{$}}
-// CHECKNL-NEXT: {{^}}A(1,2){{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include "rewrite-includes1.h"{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#pragma clang system_header{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}included_line1{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include "rewrite-includes2.h"{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}included_line2{{$}}
-// CHECKNL-NEXT: {{^}}#ifdef FIRST{{$}}
-// CHECKNL-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include HEADER{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}included_line3{{$}}
-// CHECKNL-NEXT: {{^}}#else{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include "rewrite-includes4.h"{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#endif{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}}
-// CHECKNL-NEXT: {{^}} {{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}included_line5{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#pragma once{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}included_line6{{$}}
-// CHECKNL-NEXT: {{^}} {{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}}
-// CHECKNL-NEXT: {{^}}                                  continues */{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}}
-// CHECKNL-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}}
-// CHECKNL-NEXT: {{^}}included_line7{{$}}
-// CHECKNL-NEXT: {{^}}#endif{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#include "rewrite-includes8.h"{{$}}
-// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
-// CHECKNL-NEXT: {{^}}#if (1)/*__has_include_next(<rewrite-includes8.h>)*/{{$}}
-// CHECKNL-NEXT: {{^}}#elif (0)/*__has_include(<rewrite-includes8.hfail>)*/{{$}}
-// CHECKNL-NEXT: {{^}}#endif{{$}}
-// CHECKNL-NEXT: {{^}}#if !(1)/*__has_include("rewrite-includes8.h")*/{{$}}
-// CHECKNL-NEXT: {{^}}#endif{{$}}
-// CHECKNL-NEXT: {{^}}// ENDCOMPARE{{$}}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/rewrite-macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -verify -rewrite-macros -o %t
-// RUN: FileCheck %s < %t
-
-// Any CHECK line comments are included in the output, so we use some extra
-// regex brackets to make sure we don't match the CHECK lines themselves.
-
-#define A(a,b) a ## b
-
-// CHECK: {{^}} 12 /*A*/ /*(1,2)*/{{$}}
-A(1,2)
-
-// CHECK: {{^}} /*_Pragma("mark")*/{{$}}
-_Pragma("mark")
-
-// CHECK: /*#warning eek*/{{$}}
-/* expected-warning {{eek}} */ #warning eek
-
-// CHECK: {{^}}//#pragma mark mark{{$}}
-#pragma mark mark
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/stdin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/stdin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/stdin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -E - < /dev/null > %t
-// RUN: grep '<built-in>' %t
- 

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/system-header-prefix.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/system-header-prefix.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/system-header-prefix.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -isystem-prefix libs/ -ino-system-prefix libs/mylib/ -I%S/Inputs/SystemHeaderPrefix -Wundef -E %s 2>&1 | FileCheck %s
-
-#include "src/all.h"
-
-// CHECK-NOT: BOOST
-// CHECK: libs/mylib/warn.h:1:5: warning: 'MYLIB' is not defined, evaluates to 0
-// CHECK-NOT: BOOST
-// CHECK: libs/mylib/warn.h:1:5: warning: 'MYLIB' is not defined, evaluates to 0
-// CHECK-NOT: BOOST
-// CHECK: src/warn.h:1:5: warning: 'SRC' is not defined, evaluates to 0
-// CHECK-NOT: BOOST

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/undef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/undef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/undef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang -undef -x assembler-with-cpp -E %s
-#ifndef __ASSEMBLER__
-#error "Must be preprocessed as assembler."
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/unknown-pragmas.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/unknown-pragmas.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/unknown-pragmas.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -Eonly -Wall -verify %s
-// RUN: %clang_cc1 -E -dM -Wall -verify %s
-// expected-no-diagnostics
-
-#pragma adgohweopihweotnwet

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/verify-directive.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/verify-directive.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/verify-directive.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// Check that directives inside includes are included!
-// expected-error at 1 {{include file test}}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/verify-fatal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/verify-fatal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/verify-fatal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -Wfatal-errors -verify %s 2>&1 | FileCheck %s
-
-#error first fatal
-// expected-error at -1 {{first fatal}}
-
-#error second fatal
-// expected-error at -1 {{second fatal}}
-
-
-//      CHECK: error: 'error' diagnostics expected but not seen:
-// CHECK-NEXT:   Line 6 (directive at {{.*}}verify-fatal.c:7): second fatal
-// CHECK-NEXT: 1 error generated.

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/verify.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/verify.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/verify.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,142 +0,0 @@
-// RUN: %clang_cc1 -DTEST1 -verify %s
-// RUN: %clang_cc1 -DTEST2 -verify %s 2>&1 | FileCheck -check-prefix=CHECK2 %s
-// RUN: %clang_cc1 -DTEST3 -verify %s 2>&1 | FileCheck -check-prefix=CHECK3 %s
-// RUN: %clang_cc1 -DTEST4 -verify %s 2>&1 | FileCheck -check-prefix=CHECK4 %s
-// RUN: %clang_cc1 -DTEST5 -verify %s 2>&1 | FileCheck -check-prefix=CHECK5 %s
-
-// expected-warning@ malformed
-// expected-error at 7 1 {{missing or invalid line number}}
-
-// expected-warning at 0 malformed
-// expected-error at 10 {{missing or invalid line number}}
-
-// expected-warning at -50 malformed
-// expected-error at 13 {{missing or invalid line number}}
-
-// expected-warning malformed
-// expected-error at 16 {{cannot find start}}
-
-// expected-error 0+ {{should also be ignored}}
-
-#ifdef TEST1
-#if 0
-// expected-error {{should be ignored}}
-#endif
-// eexpected-error {{should also be ignored: unrecognised directive}}
-#error should not be ignored
-// expected-error at -1 1+ {{should not be ignored}}
-
-#line 90
-unexpected a; // expected-error at +0 + {{unknown type}}
-
-#line 60
-unexpected b; // expected-error at 33 1-1 {{unknown type}}
-
-// expected-error at +2 {{file not found}} check that multi-line handled correctly: \
-
-#include "missing_header_file.include"
-#endif
-
-#ifdef TEST2
-#define MACRO some_value // expected-error {{define_error}}
-#undef MACRO extra_token // expected-warning {{undef_error}}
-#line -2                 // expected-error {{line_error}}
-#error AAA               // expected-error {{BBB}} <- this shall be part of diagnostic
-#warning CCC             // expected-warning {{DDD}} <- this shall be part of diagnostic
-
-#if 0
-// This is encapsulated in "#if 0" so that the expected-* checks below
-// are not inadvertently included in the diagnostic checking!
-
-//      CHECK2: error: 'error' diagnostics expected but not seen:
-// CHECK2-NEXT:   Line 41: define_error
-// CHECK2-NEXT:   Line 43: line_error
-// CHECK2-NEXT: error: 'error' diagnostics seen but not expected:
-// CHECK2-NEXT:   Line 43: #line directive requires a positive integer argument
-// CHECK2-NEXT:   Line 44: AAA // expected-error {{[{][{]BBB[}][}]}} <- this shall be part of diagnostic
-// CHECK2-NEXT: error: 'warning' diagnostics expected but not seen:
-// CHECK2-NEXT:   Line 42: undef_error
-// CHECK2-NEXT: error: 'warning' diagnostics seen but not expected:
-// CHECK2-NEXT:   Line 42: extra tokens at end of #undef directive
-// CHECK2-NEXT:   Line 45: CCC // expected-warning {{[{][{]DDD[}][}]}} <- this shall be part of diagnostic
-// CHECK2-NEXT: 7 errors generated.
-#endif
-#endif
-
-#ifdef TEST3
-#ifndef TEST3         // expected-note {{line_67}}
-                      // expected-note {{line_68_ignored}}
-# ifdef UNDEFINED     // expected-note {{line_69_ignored}}
-# endif               // expected-note {{line_70_ignored}}
-#elif defined(TEST3)  // expected-note {{line_71}}
-# if 1                // expected-note {{line_72}}
-                      // expected-note {{line_73}}
-# else                // expected-note {{line_74}}
-                      // expected-note {{line_75_ignored}}
-#  ifndef TEST3       // expected-note {{line_76_ignored}}
-#  endif              // expected-note {{line_77_ignored}}
-# endif               // expected-note {{line_78}}
-#endif
-
-//      CHECK3: error: 'note' diagnostics expected but not seen:
-// CHECK3-NEXT:   Line 67: line_67
-// CHECK3-NEXT:   Line 71: line_71
-// CHECK3-NEXT:   Line 72: line_72
-// CHECK3-NEXT:   Line 73: line_73
-// CHECK3-NEXT:   Line 74: line_74
-// CHECK3-NEXT:   Line 78: line_78
-// CHECK3-NEXT: 6 errors generated.
-#endif
-
-#ifdef TEST4
-#include "missing_header_file.include" // expected-error {{include_error}}
-
-//      CHECK4: error: 'error' diagnostics expected but not seen:
-// CHECK4-NEXT:   Line 92: include_error
-// CHECK4-NEXT: error: 'error' diagnostics seen but not expected:
-// CHECK4-NEXT:   Line 92: 'missing_header_file.include' file not found
-// CHECK4-NEXT: 2 errors generated.
-#endif
-
-#ifdef TEST5
-#include "verify-directive.h"
-// expected-error at 50 {{source file test}}
-
-//      CHECK5: error: 'error' diagnostics expected but not seen:
-// CHECK5-NEXT:   Line 1 (directive at {{.*}}verify-directive.h:2): include file test
-// CHECK5-NEXT:   Line 50 (directive at {{.*}}verify.c:103): source file test
-// CHECK5-NEXT: 2 errors generated.
-#endif
-
-#if 0
-// RUN: %clang_cc1 -verify %t.invalid 2>&1 | FileCheck -check-prefix=CHECK6 %s
-
-//      CHECK6: error: no expected directives found: consider use of 'expected-no-diagnostics'
-// CHECK6-NEXT: error: 'error' diagnostics seen but not expected:
-// CHECK6-NEXT:   (frontend): error reading '{{.*}}verify.c.tmp.invalid'
-// CHECK6-NEXT: 2 errors generated.
-
-// RUN: echo -e '//expected-error at 2{{1}}\n#error 2' | %clang_cc1 -verify 2>&1 | FileCheck -check-prefix=CHECK7 %s
-
-//      CHECK7: error: 'error' diagnostics expected but not seen:
-// CHECK7-NEXT:   Line 2 (directive at <stdin>:1): 1
-// CHECK7-NEXT: error: 'error' diagnostics seen but not expected:
-// CHECK7-NEXT:   Line 2: 2
-// CHECK7-NEXT: 2 errors generated.
-#endif
-
-#ifdef TEST8
-// RUN: %clang_cc1 -DTEST8 -verify %s 2>&1 | FileCheck -check-prefix=CHECK8 %s
-
-// expected-warning at nonexistant-file:1 {{ }}
-// expected-error at -1 {{file 'nonexistant-file' could not be located}}
-
-// expected-warning at verify-directive.h: {{ }}
-// expected-error at -1 {{missing or invalid line number}}
-
-// expected-warning at verify-directive.h:1 {{diagnostic}}
-
-//      CHECK8: error: 'warning' diagnostics expected but not seen:
-// CHECK8-NEXT:   File {{.*}}verify-directive.h Line 1 (directive at {{.*}}verify.c:137): diagnostic
-// CHECK8-NEXT: 1 error generated.
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/verify2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/verify2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/verify2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#if 0
-// RUN: %clang_cc1 -verify %s 2>&1 | FileCheck %s
-
-// Please note that all comments are inside "#if 0" blocks so that
-// VerifyDiagnosticConsumer sees no comments while processing this
-// test-case (and hence no expected-* directives).
-#endif
-
-#include "verify2.h"
-#error source
-
-#if 0
-// expected-error {{should be ignored}}
-
-//      CHECK: error: no expected directives found: consider use of 'expected-no-diagnostics'
-// CHECK-NEXT: error: 'error' diagnostics seen but not expected:
-// CHECK-NEXT:   Line 1: header
-// CHECK-NEXT:   Line 10: source
-// CHECK-NEXT: 3 errors generated.
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/verify2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/verify2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/verify2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#error header
-
-#if 0
-// expected-error {{should be ignored}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/verify3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/verify3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/verify3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// This test-case runs several sub-tests on -verify to ensure that correct
-// diagnostics are generated in relation to the mis-use and non-use of the
-// 'expected-no-diagnostics' directive.
-
-// RUN: %clang_cc1 -DTEST1 -verify %s 2>&1 | FileCheck -check-prefix=CHECK1 %s
-#ifdef TEST1
-// expected-no-diagnostics
-// expected-note {{}}
-
-//      CHECK1: error: 'error' diagnostics seen but not expected:
-// CHECK1-NEXT:   Line 8: expected directive cannot follow 'expected-no-diagnostics' directive
-// CHECK1-NEXT: 1 error generated.
-#endif
-
-// RUN: %clang_cc1 -DTEST2 -verify %s 2>&1 | FileCheck -check-prefix=CHECK2 %s
-#ifdef TEST2
-#warning X
-// expected-warning at -1 {{X}}
-// expected-no-diagnostics
-
-//      CHECK2: error: 'error' diagnostics seen but not expected:
-// CHECK2-NEXT:   Line 19: 'expected-no-diagnostics' directive cannot follow other expected directives
-// CHECK2-NEXT: 1 error generated.
-#endif
-
-// RUN: %clang_cc1 -DTEST3 -verify %s 2>&1 | FileCheck -check-prefix=CHECK3 %s
-// RUN: %clang_cc1 -verify 2>&1 | FileCheck -check-prefix=CHECK3 %s
-#ifdef TEST3
-// no directives
-
-//      CHECK3: error: no expected directives found: consider use of 'expected-no-diagnostics'
-// CHECK3-NEXT: 1 error generated.
-#endif
-
-// RUN: %clang_cc1 -E -DTEST4 -verify %s 2>&1 | FileCheck -check-prefix=CHECK4 %s
-#ifdef TEST4
-#warning X
-// expected-warning at -1 {{X}}
-
-// CHECK4-NOT: error: no expected directives found: consider use of 'expected-no-diagnostics'
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// Check that -w has higher priority than -Werror.
-// RUN: %clang_cc1 -verify -Wsign-compare -Werror -w %s
-// expected-no-diagnostics
-
-int f0(int x, unsigned y) {
-  return x < y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// Check that -w has lower priority than -pedantic-errors.
-// RUN: %clang_cc1 -verify -pedantic-errors -w %s
-
-void f0() { f1(); } // expected-error {{implicit declaration of function}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Check that -Werror and -Wfatal-error interact properly.
-//
-// Verify mode doesn't work with fatal errors, just use FileCheck here.
-//
-// RUN: not %clang_cc1 -Wunused-function -Werror -Wfatal-errors %s 2> %t.err
-// RUN: FileCheck < %t.err %s
-// CHECK: fatal error: unused function
-// CHECK: 1 error generated
-
-static void f0(void) {} // expected-fatal {{unused function}}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-4.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-4.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-4.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-error=sign-compare %s
-// RUN: %clang_cc1 -verify -Wsign-compare -w -Wno-error=sign-compare %s
-// expected-no-diagnostics
-
-int f0(int x, unsigned y) {
-  return x < y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-5.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-5.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/warning-mapping-5.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// Check that #pragma diagnostic warning overrides -Werror. This matches GCC's
-// original documentation, but not its earlier implementations.
-// 
-// RUN: %clang_cc1 -verify -Werror %s
-
-#pragma clang diagnostic warning "-Wsign-compare"
-int f0(int x, unsigned y) {
-  return x < y; // expected-warning {{comparison of integers}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Frontend/warning-options.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Frontend/warning-options.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Frontend/warning-options.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -Wmonkey -Wno-monkey -Wno-unused-command-line-arguments \
-// RUN:        -Wno-unused-command-line-argument %s 2>&1 | FileCheck %s
-// CHECK: unknown warning option '-Wmonkey'
-// CHECK: unknown warning option '-Wno-monkey'
-// CHECK: unknown warning option '-Wno-unused-command-line-arguments'; did you mean '-Wno-unused-command-line-argument'?

Modified: trunk/contrib/llvm/tools/clang/test/Headers/Inputs/include/stdint.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/Inputs/include/stdint.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/Inputs/include/stdint.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-#ifndef STDINT_H
-#define STDINT_H
-
-#ifdef __INT32_TYPE__
-typedef unsigned __INT32_TYPE__ uint32_t;
-#endif
-
-#ifdef __INT64_TYPE__
-typedef unsigned __INT64_TYPE__ uint64_t;
-#endif
-
-#ifdef __INTPTR_TYPE__
-typedef unsigned __INTPTR_TYPE__ uintptr_t;
-#else
-#error Every target should have __INTPTR_TYPE__
-#endif
-
-#endif /* STDINT_H */

Modified: trunk/contrib/llvm/tools/clang/test/Headers/altivec-header.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/altivec-header.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/altivec-header.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// REQUIRES: ppc64-registered-target
-// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -maltivec -ffreestanding -S -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -maltivec -ffreestanding -fno-lax-vector-conversions -S -o - %s | FileCheck %s
-// RUN: %clang_cc1 -triple powerpc64-unknown-unknown -maltivec -ffreestanding -x c++ -S -o - %s | FileCheck %s
-
-#include <altivec.h>
-
-// Verify that simply including <altivec.h> does not generate any code
-// (i.e. all inline routines in the header are marked "static")
-
-// CHECK-NOT: .text
-

Modified: trunk/contrib/llvm/tools/clang/test/Headers/arm-neon-header.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/arm-neon-header.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/arm-neon-header.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -Wvector-conversions -ffreestanding %s
-// RUN: %clang_cc1 -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -fno-lax-vector-conversions -ffreestanding %s
-// RUN: %clang_cc1 -x c++ -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -Wvector-conversions -ffreestanding %s
-
-#include <arm_neon.h>

Modified: trunk/contrib/llvm/tools/clang/test/Headers/c11.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/c11.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/c11.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang -fsyntax-only -Xclang -verify -std=c11 %s
-// RUN: %clang -fsyntax-only -Xclang -verify -std=c11 -fmodules %s
-// RUN: %clang -fsyntax-only -Xclang -verify -std=c11 -ffreestanding %s
-
-noreturn int f(); // expected-error 1+{{}}
-
-#include <stdnoreturn.h>
-#include <stdnoreturn.h>
-#include <stdnoreturn.h>
-
-int g();
-noreturn int g();
-int noreturn g();
-int g();
-
-#include <stdalign.h>
-_Static_assert(__alignas_is_defined, "");
-_Static_assert(__alignof_is_defined, "");
-alignas(alignof(int)) char c[4];
-_Static_assert(__alignof(c) == 4, "");
-
-#define __STDC_WANT_LIB_EXT1__ 1
-#include <stddef.h>
-rsize_t x = 0;
-
-// If we are freestanding, then also check RSIZE_MAX (in a hosted implementation
-// we will use the host stdint.h, which may not yet have C11 support).
-#ifndef __STDC_HOSTED__
-#include <stdint.h>
-rsize_t x2 = RSIZE_MAX;
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Headers/c89.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/c89.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/c89.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang -target i386-apple-darwin10 -fsyntax-only -Xclang -verify -std=c89 %s
-// expected-no-diagnostics
-
-// FIXME: Disable inclusion of mm_malloc.h, our current implementation is broken
-// on win32 since we don't generally know how to find errno.h.
-
-#define __MM_MALLOC_H
-
-// PR6658
-#include <xmmintrin.h>
-

Modified: trunk/contrib/llvm/tools/clang/test/Headers/cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang -fsyntax-only -std=c++11 %s
-// RUN: %clang -fsyntax-only -std=c++11 -fmodules %s
-
-#include <stdalign.h>
-
-#if defined alignas
-#error alignas should not be defined in C++
-#endif
-
-#if defined alignof
-#error alignof should not be defined in C++
-#endif
-
-static_assert(__alignas_is_defined, "");
-static_assert(__alignof_is_defined, "");
-
-
-#include <stdint.h>
-
-#ifndef SIZE_MAX
-#error SIZE_MAX should be defined in C++
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Headers/int64-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/int64-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/int64-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -verify %s -ffreestanding
-// expected-no-diagnostics
-
-#include <stdint.h>
-typedef unsigned long long uint64_t;

Modified: trunk/contrib/llvm/tools/clang/test/Headers/ms-null-ms-header-vs-stddef.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/ms-null-ms-header-vs-stddef.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/ms-null-ms-header-vs-stddef.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang -fsyntax-only -target i686-pc-win32 %s
-// RUN: %clang -fsyntax-only -target i386-mingw32 %s
-
-// Something in MSVC's headers (pulled in e.g. by <crtdefs.h>) defines __null
-// to something, mimick that.
-#define __null
-
-#include <stddef.h>
-
-// __null is used as a type annotation in MS headers, with __null defined to
-// nothing in regular builds. This should continue to work even with stddef.h
-// included.
-void f(__null void* p) { }
-
-// NULL should work fine even with __null defined to nothing.
-void* p = NULL;

Modified: trunk/contrib/llvm/tools/clang/test/Headers/ms-wchar.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/ms-wchar.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/ms-wchar.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang -fsyntax-only -target i386-pc-win32 %s
-
-#if defined(_WCHAR_T_DEFINED)
-#error "_WCHAR_T_DEFINED should not be defined in C99"
-#endif
-
-#include <stddef.h>
-
-#if !defined(_WCHAR_T_DEFINED)
-#error "_WCHAR_T_DEFINED should have been set by stddef.h"
-#endif
-
-#if defined(_NATIVE_WCHAR_T_DEFINED)
-#error "_NATIVE_WCHAR_T_DEFINED should not be defined"
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Headers/stdbool.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/stdbool.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/stdbool.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -E -dM %s | FileCheck --check-prefix=CHECK-GNU-COMPAT %s
-// RUN: %clang_cc1 -std=c++98 -E -dM %s | FileCheck --check-prefix=CHECK-CONFORMING %s
-// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -verify -Weverything %s
-#include <stdbool.h>
-#define zzz
-
-// CHECK-GNU-COMPAT: #define _Bool bool
-// CHECK-GNU-COMPAT: #define bool bool
-// CHECK-GNU-COMPAT: #define false false
-// CHECK-GNU-COMPAT: #define true true
-
-// CHECK-CONFORMING-NOT: #define _Bool
-// CHECK-CONFORMING: #define __CHAR_BIT__
-// CHECK-CONFORMING-NOT: #define false false
-// CHECK-CONFORMING: #define zzz
-
-zzz
-// expected-no-diagnostics
-extern bool x;

Modified: trunk/contrib/llvm/tools/clang/test/Headers/typedef_guards.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/typedef_guards.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/typedef_guards.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// NULL is rdefined in stddef.h
-#define NULL ((void*) 0)
-
-// These are headers bundled with Clang.
-#include <stdarg.h>
-#include <stddef.h>
-
-#ifndef _VA_LIST
-typedef __builtin_va_list va_list;
-#endif
-
-#ifndef _SIZE_T
-typedef __typeof__(sizeof(int)) size_t;
-#endif
-
-#ifndef _WCHAR_T
-typedef __typeof__(*L"") wchar_t;
-#endif
-
-extern void foo(wchar_t x);
-extern void bar(size_t x);
-void *baz() { return NULL; }
-void quz() {
-  va_list y;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Headers/unwind.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/unwind.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/unwind.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple arm-unknown-linux-gnueabi \
-// RUN:   -isystem %S/Inputs/include -ffreestanding -fsyntax-only %s
-// RUN: %clang_cc1 -triple mips-unknown-linux \
-// RUN:   -isystem %S/Inputs/include -ffreestanding -fsyntax-only %s
-// RUN: %clang_cc1 -triple i686-unknown-linux \
-// RUN:   -isystem %S/Inputs/include -ffreestanding -fsyntax-only %s
-// RUN: %clang_cc1 -triple x86_64-unknown-linux \
-// RUN:   -isystem %S/Inputs/include -ffreestanding -fsyntax-only %s
-
-// RUN: %clang_cc1 -triple arm-unknown-linux-gnueabi \
-// RUN:   -isystem %S/Inputs/include -ffreestanding -fsyntax-only -x c++ %s
-// RUN: %clang_cc1 -triple mips-unknown-linux \
-// RUN:   -isystem %S/Inputs/include -ffreestanding -fsyntax-only -x c++ %s
-// RUN: %clang_cc1 -triple i686-unknown-linux \
-// RUN:   -isystem %S/Inputs/include -ffreestanding -fsyntax-only -x c++ %s
-// RUN: %clang_cc1 -triple x86_64-unknown-linux \
-// RUN:   -isystem %S/Inputs/include -ffreestanding -fsyntax-only -x c++ %s
-
-#include "unwind.h"

Modified: trunk/contrib/llvm/tools/clang/test/Headers/wchar_limits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/wchar_limits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/wchar_limits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -ffreestanding -fsyntax-only -verify %s
-// RUN: %clang_cc1 -ffreestanding -fsyntax-only -verify -fshort-wchar %s
-// expected-no-diagnostics
-
-#include <stdint.h>
-
-const bool swchar = (wchar_t)-1 > (wchar_t)0;
-
-int max_test[WCHAR_MAX == (swchar ? -(WCHAR_MIN+1) : (wchar_t)-1)];
-int min_test[WCHAR_MIN == (swchar ? 0 : -WCHAR_MAX-1)];

Modified: trunk/contrib/llvm/tools/clang/test/Headers/wmmintrin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/wmmintrin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/wmmintrin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// Check that wmmintrin.h is includable with just -maes.
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown \
-// RUN:   -verify %s -ffreestanding -target-feature +aes
-// expected-no-diagnostics
-#include <wmmintrin.h>

Modified: trunk/contrib/llvm/tools/clang/test/Headers/x86-intrinsics-headers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Headers/x86-intrinsics-headers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Headers/x86-intrinsics-headers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang -fsyntax-only -ffreestanding %s
-// RUN: %clang -fsyntax-only -ffreestanding -fno-lax-vector-conversions %s
-// RUN: %clangxx -fsyntax-only -ffreestanding -x c++ %s
-
-#if defined(i386) || defined(__x86_64__)
-
-#ifdef __SSE4_2__
-// nmmintrin forwards to smmintrin.
-#include <nmmintrin.h>
-#endif
-
-// immintrin includes all other intel intrinsic headers.
-#include <immintrin.h>
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Index/IBOutletCollection.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/IBOutletCollection.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/IBOutletCollection.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#define IBOutletCollection(ClassName) __attribute__((iboutletcollection(ClassName)))
-
- at interface Test {
-  IBOutletCollection(Test) Test *anOutletCollection;
-}
- at end
-
-// RUN: c-index-test -cursor-at=%s:4:24 %s | FileCheck -check-prefix=CHECK-CURSOR %s
-// CHECK-CURSOR: ObjCClassRef=Test:3:12
-
-// RUN: c-index-test -test-annotate-tokens=%s:4:1:5:1 %s | FileCheck -check-prefix=CHECK-TOK %s
-// CHECK-TOK: Identifier: "IBOutletCollection" [4:3 - 4:21] macro expansion=IBOutletCollection:1:9
-// FIXME: The following token should belong to the macro expansion cursor.
-// CHECK-TOK: Punctuation: "(" [4:21 - 4:22] attribute(iboutletcollection)= [IBOutletCollection=ObjCInterface]
-// CHECK-TOK: Identifier: "Test" [4:22 - 4:26] ObjCClassRef=Test:3:12
-// FIXME: The following token should belong to the macro expansion cursor.
-// CHECK-TOK: Punctuation: ")" [4:26 - 4:27]
-// CHECK-TOK: Identifier: "Test" [4:28 - 4:32] ObjCClassRef=Test:3:12
-// CHECK-TOK: Punctuation: "*" [4:33 - 4:34] ObjCIvarDecl=anOutletCollection:4:34 (Definition)
-// CHECK-TOK: Identifier: "anOutletCollection" [4:34 - 4:52] ObjCIvarDecl=anOutletCollection:4:34 (Definition)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-02.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-03.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-04.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-05.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-06.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-07.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-08.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-09.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-10.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-11.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-function-12.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-para-kind-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/invalid-para-kind-02.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-availability-attr-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-availability-attr-02.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-class-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-class-02.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-class-03.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-class-04.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-deprecated-attr.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-enum-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-02.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-03.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-04.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-05.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-06.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-07.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-08.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-09.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-function-10.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-namespace-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-other-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-para-kind-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-typedef-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-typedef-02.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-unavailable-attr.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/CommentXML/valid-variable-01.xml
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/Frameworks/Framework.framework/Headers/Framework.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/Frameworks/Framework.framework/Headers/Framework.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/Frameworks/Framework.framework/Headers/Framework.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int *getFrameworkVersion();
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/Frameworks/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/Frameworks/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/Frameworks/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-framework module * { }

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/a.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/a.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/a.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int *getA();
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/a_extensions.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/a_extensions.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/a_extensions.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int *getAExtensions();

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/crash.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/crash.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/crash.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// Produce a crash if CRASH is defined.
-#ifdef CRASH
-#  pragma clang __debug crash
-#endif
-
-const char *getCrashString();

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-module LibA {
-  header "a.h"
-  module Extensions { 
-    header "a_extensions.h"
-  }
-}
-
-module Crash {
-  header "crash.h"
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/nested/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/nested/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/nested/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-module nested {
-  header "nested.h"
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/nested/nested.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/nested/nested.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/Headers/nested/nested.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int *getNested();

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/a.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/a.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/a.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-#ifndef A_H
-#define A_H
-typedef int A;
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/annotate-comments-preprocessor.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/annotate-comments-preprocessor.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/annotate-comments-preprocessor.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-/* Meow */
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/b.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/b.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/b.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-typedef float B;

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/c-index-pch.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/c-index-pch.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/c-index-pch.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-#ifndef C_INDEX_PCH_H
-#define C_INDEX_PCH_H
-
-void foo(int i, float f);
-extern int bar;
-
-#endif // C_INDEX_PCH_H

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/cindex-from-source.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/cindex-from-source.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/cindex-from-source.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-typedef int t0;

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/complete-pch.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/complete-pch.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/complete-pch.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
- at interface A
-- (int)instanceMethod1:(int)x;
-+ (int)classMethod1:(double)d;
- at end
-
- at interface B
-- (int)instanceMethod2:(int)x;
-+ (int)classMethod2:(float)f;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/crash-recovery-code-complete-remap.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/crash-recovery-code-complete-remap.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/crash-recovery-code-complete-remap.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: echo env CINDEXTEST_EDITING=1 \
-// RUN:   not c-index-test -test-load-source-reparse 1 local \
-// RUN:   -remap-file="%s;%S/Inputs/crash-recovery-code-complete-remap.c" \
-// RUN:   %s 2> %t.err
-// RUN: FileCheck < %t.err -check-prefix=CHECK-CODE-COMPLETE-CRASH %s
-// CHECK-CODE-COMPLETE-CRASH: Unable to reparse translation unit
-//
-// XFAIL: win32
-
-#warning parsing original file
-
-#pragma clang __debug crash

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/crash-recovery-reparse-remap.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/crash-recovery-reparse-remap.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/crash-recovery-reparse-remap.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-
-#warning parsing remapped file
-
-
-
-int x;
-
-#pragma clang __debug crash
-
-int x;
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/foo.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/foo.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/foo.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-extern int global_var;
-
-void foo_func(int param1);
-void bar_func(void);
-
-struct MyStruct {
-  int field_var;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/get-cursor-includes-1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/get-cursor-includes-1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/get-cursor-includes-1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#ifndef GET_CURSOR_INCLUDES_1_H
-#define GET_CURSOR_INCLUDES_1_H
-
-extern int blah;
-
-#endif // GET_CURSOR_INCLUDES_1_H

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/get-cursor-includes-2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/get-cursor-includes-2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/get-cursor-includes-2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#include "get-cursor-includes-1.h"
-#include "get-cursor-includes-1.h"

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/guarded.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/guarded.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/guarded.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#ifndef GUARDED_HEADER_H
-#define GUARDED_HEADER_H
-
-int y;
-
-#endif // GUARDED_HEADER_H

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = []

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/objc.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/objc.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/objc.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
- at interface Base {
-    int my_var;
-}
--(int) my_var;
--(void) my_method: (int)param;
-+(void) my_method: (int)param;
- at end
-
- at interface Sub : Base
--(void) my_method: (int)param;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/pragma-once.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/pragma-once.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/pragma-once.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#pragma once
-int i;
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/pragma_disable_warning.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/pragma_disable_warning.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/pragma_disable_warning.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#pragma clang diagnostic ignored "-Wunused-parameter"

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble-reparse-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble-reparse-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble-reparse-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble-reparse-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble-reparse-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble-reparse-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int x;

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-inline int bar(int i) {
-  int *ptr = 0;
-  float *ptr1;
-  ptr = ptr1;
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble_macro_template.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble_macro_template.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/preamble_macro_template.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#define STATIC_CAST static_cast
-
-template<typename T>
-void foo(T *p) {
-  (void)STATIC_CAST<T*>(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/prefix.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/prefix.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/prefix.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-#ifndef PREFIX_H
-#define PREFIX_H
-int foo(int);
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/redeclarations.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/redeclarations.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/redeclarations.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-class X
-{
-  friend class A;
-};
-
-
-template <typename T1, typename T2>
-class B
-{
-};
-
-template <class T>
-struct C
-{
-};
-
-class D
-{
-    B<D, class A> x;
-    friend struct C<A>;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/remap-complete-to.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/remap-complete-to.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/remap-complete-to.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-int f0(int *pointer1, float *pointer2) {
-  return pointer2 - pointer1;
-}
-
-void g() {
-  

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/remap-load-to.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/remap-load-to.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/remap-load-to.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-int foo(int parm1, float parm2) {
-  return parm1 + parm2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/reparse-instantiate.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/reparse-instantiate.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/reparse-instantiate.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-template <typename T> struct S;
-
-template<typename T> void c(T)
-{
-}
-
-template <> struct S <int>
-{
-  void a()
-  {
-    c(&S<int>::b);
-  }
-  void b() {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/retain-comments-from-system-headers.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/retain-comments-from-system-headers.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/retain-comments-from-system-headers.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-#pragma clang system_header
-
-/**
- * system_function
- * \param a Aaa.
- */
-int system_function(int a);
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/t1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/t1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/t1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-#include "foo.h"
-
-void foo_func(int param1) {
-  int local_var = global_var;
-  for (int for_var = 100; for_var < 500; ++for_var) {
-    local_var = param1 + for_var;
-  }
-  bar_func();
-}
-
-struct S1 {
-  int x;
-};
-
-struct S2 {
-  int x;
-};
-
-void field_test(void) {
-  struct S1 s1;
-  s1.x = 0;
-  ((struct S2 *)0)->x = 0;
-  
-  struct MyStruct ms;
-  ms.field_var = 10;
-}
-
-int (^CP)(int) = ^(int x) { return x * global_var; };

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/t1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/t1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/t1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#include "objc.h"
-
-static void foo() {
-  Base *base;
-  int x = [base my_var];
-  [base my_method:x];
-  [Base my_method:x];
-}
-
- at implementation Base
--(int) my_var {
-  return my_var;
-}
-
--(void) my_method: (int)param {
-}
-
-+(void) my_method: (int)param {
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/t2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/t2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/t2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-#include "foo.h"
-
-int global_var = 10;
-
-void bar_func(void) {
-  global_var += 100;
-  foo_func(global_var);
-
-  struct MyStruct *ms;
-  ms->field_var = 10;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/Inputs/t2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/Inputs/t2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/Inputs/t2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-#include "objc.h"
-
-static void foo() {
-  Sub *sub;
-  int x = [sub my_var];
-  [sub my_method:x];
-  [Sub my_method:x];
-}
-
- at implementation Sub
--(void) my_method: (int)param {
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/TestClassDecl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/TestClassDecl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/TestClassDecl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: c-index-test -write-pch %t.ast -fobjc-nonfragile-abi -fblocks -x objective-c %s 
-// RUN: c-index-test -test-file-scan %t.ast %s | FileCheck -check-prefix=scan %s
-// RUN: c-index-test -test-load-tu %t.ast local | FileCheck -check-prefix=load %s
-
-// This test checks how the @class resolves as a cursor when there is a real definition
-// that follows. <rdar://problem/7383421>
-
- at class Foo;
-
- at interface Foo
- at end
-
-void function(Foo * arg)
-{
-    // nothing here.
-}
-
-// CHECK-scan: [1:1 - 8:1] Invalid Cursor => NoDeclFound
-// CHECK-scan: [8:1 - 8:8] ObjCInterfaceDecl=Foo:8:8
-// CHECK-scan: [8:8 - 8:11] ObjCClassRef=Foo:10:12
-// CHECK-scan: [8:11 - 10:1] Invalid Cursor => NoDeclFound
-// CHECK-scan: [10:1 - 11:5] ObjCInterfaceDecl=Foo:10:12
-// CHECK-scan: [11:5 - 13:1] Invalid Cursor => NoDeclFound
-// CHECK-scan: [13:1 - 13:15] FunctionDecl=function:13:6 (Definition)
-// CHECK-scan: [13:15 - 13:18] ObjCClassRef=Foo:10:12
-// CHECK-scan: [13:18 - 13:24] ParmDecl=arg:13:21 (Definition)
-// CHECK-scan: [13:24 - 14:1] FunctionDecl=function:13:6 (Definition)
-// CHECK-scan: [14:1 - 16:2] CompoundStmt=
-
-// CHECK-load: TestClassDecl.m:10:12: ObjCInterfaceDecl=Foo:10:12 Extent=[10:1 - 11:5]
-// CHECK-load: TestClassDecl.m:13:6: FunctionDecl=function:13:6 (Definition) Extent=[13:1 - 16:2]
-// CHECK-load: TestClassDecl.m:13:21: ParmDecl=arg:13:21 (Definition) Extent=[13:15 - 13:24]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/TestClassForwardDecl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/TestClassForwardDecl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/TestClassForwardDecl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -emit-pch -x objective-c %s -o %t.ast
-// RUN: c-index-test -test-file-scan %t.ast %s | FileCheck -check-prefix=scan %s
-// RUN: c-index-test -test-load-tu %t.ast local | FileCheck -check-prefix=load %s
-
-// This test checks how the @class resolves as a cursor when the @interface is implicitly defined.
-// See TestClassDecl.m for the corresponding test case. (<rdar://problem/7383421>)
-
- at class Foo;
-
-void function(Foo * arg)
-{
-    // nothing here.
-}
-
-// CHECK-scan: [1:1 - 8:1] Invalid Cursor => NoDeclFound
-// CHECK-scan: [8:1 - 8:8] ObjCInterfaceDecl=Foo:8:8
-// CHECK-scan: [8:8 - 8:11] ObjCClassRef=Foo:8:8
-// CHECK-scan: [8:11 - 10:1] Invalid Cursor => NoDeclFound
-// CHECK-scan: [10:1 - 10:15] FunctionDecl=function:10:6 (Definition)
-// CHECK-scan: [10:15 - 10:18] ObjCClassRef=Foo:8:8
-// CHECK-scan: [10:18 - 10:24] ParmDecl=arg:10:21 (Definition)
-// CHECK-scan: [10:24 - 11:1] FunctionDecl=function:10:6 (Definition)
-// CHECK: [11:1 - 13:2] CompundStmt=
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// CHECK-load: TestClassForwardDecl.m:10:6: FunctionDecl=function:10:6 (Definition)
-// CHECK-load: TestClassForwardDecl.m:10:21: ParmDecl=arg:10:21
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-attribute.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-attribute.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-attribute.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-
-class Test {
-public:
-  __attribute__((annotate("spiffy_method"))) void aMethod();
-
-public __attribute__((annotate("works"))):
-  void anotherMethod(); // annotation attribute should be propagated.
-
-private __attribute__((annotate("investigations"))):
-  //propagated annotation should have changed from "works" to "investigations"
-  void inlineMethod() {}
-
-protected:
-  // attribute propagation should have stopped here
-  void methodWithoutAttribute();
-};
-
-// CHECK: ClassDecl=Test:3:7 (Definition) Extent=[3:1 - 17:2]
-// CHECK-NEXT: CXXAccessSpecifier=:4:1 (Definition) Extent=[4:1 - 4:8]
-// CHECK-NEXT: CXXMethod=aMethod:5:51 Extent=[5:3 - 5:60]
-// CHECK-NEXT: attribute(annotate)=spiffy_method Extent=[5:18 - 5:43]
-// CHECK-NEXT: CXXAccessSpecifier=:7:1 (Definition) Extent=[7:1 - 7:43]
-// CHECK-NEXT: attribute(annotate)=works Extent=[7:23 - 7:40]
-// CHECK-NEXT: CXXMethod=anotherMethod:8:8 Extent=[8:3 - 8:23]
-// CHECK-NEXT: attribute(annotate)=works Extent=[7:23 - 7:40]
-// CHECK-NEXT: CXXAccessSpecifier=:10:1 (Definition) Extent=[10:1 - 10:53]
-// CHECK-NEXT: attribute(annotate)=investigations Extent=[10:24 - 10:50]
-// CHECK-NEXT: CXXMethod=inlineMethod:12:8 (Definition) Extent=[12:3 - 12:25]
-// CHECK-NEXT: attribute(annotate)=investigations Extent=[10:24 - 10:50]
-// CHECK-NEXT: CompoundStmt= Extent=[12:23 - 12:25]
-// CHECK-NEXT: CXXAccessSpecifier=:14:1 (Definition) Extent=[14:1 - 14:11]
-// CHECK-NEXT: CXXMethod=methodWithoutAttribute:16:8 Extent=[16:3 - 16:32]

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-availability-attrs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-availability-attrs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-availability-attrs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// rdar://12378879
-
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out
-// RUN: FileCheck %s < %t/out
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-
-/// Aaa.
-void attr_availability_1() __attribute__((availability(macosx,obsoleted=10.0,introduced=8.0,deprecated=9.0, message="use availability_test in <foo.h>")))
-                           __attribute__((availability(ios,unavailable, message="not for iOS")));
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="[[@LINE-3]]" column="6"><Name>attr_availability_1</Name><USR>c:@F at attr_availability_1#</USR><Declaration>void attr_availability_1()</Declaration><Abstract><Para> Aaa.</Para></Abstract><Availability distribution="iOS"><DeprecationSummary>not for iOS</DeprecationSummary><Unavailable/></Availability><Availability distribution="OS X"><IntroducedInVersion>8.0</IntroducedInVersion><DeprecatedInVersion>9.0</DeprecatedInVersion><RemovedAfterVersion>10.0</RemovedAfterVersion><DeprecationSummary>use availability_test in <foo.h></DeprecationSummary></Availability></Function>]
-
-/// Aaa.
-void attr_availability_2() __attribute__((availability(macosx,obsoleted=10.0.1,introduced=8.0.1,deprecated=9.0.1)));
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="[[@LINE-2]]" column="6"><Name>attr_availability_2</Name><USR>c:@F at attr_availability_2#</USR><Declaration>void attr_availability_2()</Declaration><Abstract><Para> Aaa.</Para></Abstract><Availability distribution="OS X"><IntroducedInVersion>8.0.1</IntroducedInVersion><DeprecatedInVersion>9.0.1</DeprecatedInVersion><RemovedAfterVersion>10.0.1</RemovedAfterVersion></Availability></Function>]
-
-/// Aaa.
-void attr_deprecated_1() __attribute__((deprecated));
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="[[@LINE-2]]" column="6"><Name>attr_deprecated_1</Name><USR>c:@F at attr_deprecated_1#</USR><Declaration>void attr_deprecated_1()</Declaration><Abstract><Para> Aaa.</Para></Abstract><Deprecated/></Function>]
-
-/// Aaa.
-void attr_deprecated_2() __attribute__((deprecated("message 1 <foo.h>")));
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="[[@LINE-2]]" column="6"><Name>attr_deprecated_2</Name><USR>c:@F at attr_deprecated_2#</USR><Declaration>void attr_deprecated_2()</Declaration><Abstract><Para> Aaa.</Para></Abstract><Deprecated>message 1 <foo.h></Deprecated></Function>]
-
-
-/// Aaa.
-void attr_unavailable_1() __attribute__((unavailable));
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="[[@LINE-2]]" column="6"><Name>attr_unavailable_1</Name><USR>c:@F at attr_unavailable_1#</USR><Declaration>void attr_unavailable_1()</Declaration><Abstract><Para> Aaa.</Para></Abstract><Unavailable/></Function>]
-
-/// Aaa.
-void attr_unavailable_2() __attribute__((unavailable("message 2 <foo.h>")));
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}annotate-comments-availability-attrs.cpp" line="[[@LINE-2]]" column="6"><Name>attr_unavailable_2</Name><USR>c:@F at attr_unavailable_2#</USR><Declaration>void attr_unavailable_2()</Declaration><Abstract><Para> Aaa.</Para></Abstract><Unavailable>message 2 <foo.h></Unavailable></Function>]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-preprocessor.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-preprocessor.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-preprocessor.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -I%S/Inputs %s
-
-// As long as none of this crashes, we don't care about comments in
-// preprocessor directives.
-
-#include "annotate-comments-preprocessor.h" /* Aaa. */ /* Bbb. */
-#include "annotate-comments-preprocessor.h" /* Aaa. */
-#include "annotate-comments-preprocessor.h" /** Aaa. */
-#include "annotate-comments-preprocessor.h" /**< Aaa. */
-#include "annotate-comments-preprocessor.h" // Aaa.
-#include "annotate-comments-preprocessor.h" /// Aaa.
-#include "annotate-comments-preprocessor.h" ///< Aaa.
-
-#define A0 0
-#define A1 1 /* Aaa. */
-#define A2 1 /** Aaa. */
-#define A3 1 /**< Aaa. */
-#define A4 1 // Aaa.
-#define A5 1 /// Aaa.
-#define A6 1 ///< Aaa.
-
-int A[] = { A0, A1, A2, A3, A4, A5, A6 };
-
-#if A0 /** Aaa. */
-int f(int a1[A1], int a2[A2], int a3[A3], int a4[A4], int a5[A5], int a6[A6]);
-#endif /** Aaa. */
-
-#if A1 /** Aaa. */
-int g(int a1[A1], int a2[A2], int a3[A3], int a4[A4], int a5[A5], int a6[A6]);
-#endif /* Aaa. */
-
-#pragma once /** Aaa. */
-
-#define FOO      \
-  do {           \
-    /* Aaa. */   \
-    /** Aaa. */  \
-    /**< Aaa. */ \
-    ;            \
-  } while(0)
-
-void h(void) {
-  FOO;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-property-accessor.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-property-accessor.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-property-accessor.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out
-// RUN: FileCheck %s < %t/out
-// rdar://12378879
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-
- at interface AppDelegate
-/**
-  \brief This is ReadonlyProperty
-*/
- at property (readonly, getter = ReadonlyGetter) int MyProperty;
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}annotate-comments-property-accessor.m" line="[[@LINE-1]]" column="51"><Name>MyProperty</Name><USR>c:objc(cs)AppDelegate(py)MyProperty</USR><Declaration>- (int)ReadonlyGetter;</Declaration><Abstract><Para> This is ReadonlyProperty</Para></Abstract></Function>]
-
-/**
-  \brief This is GeneralProperty
-*/
- at property int GeneralProperty;
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}annotate-comments-property-accessor.m" line="[[@LINE-1]]" column="15"><Name>GeneralProperty</Name><USR>c:objc(cs)AppDelegate(py)GeneralProperty</USR><Declaration>- (int)GeneralProperty;</Declaration><Abstract><Para> This is GeneralProperty</Para></Abstract></Function>]
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}annotate-comments-property-accessor.m" line="[[@LINE-2]]" column="15"><Name>GeneralProperty</Name><USR>c:objc(cs)AppDelegate(py)GeneralProperty</USR><Declaration>- (void)setGeneralProperty:(int)GeneralProperty;</Declaration><Abstract><Para> This is GeneralProperty</Para></Abstract></Function>]
-
-/**
-  \brief This is PropertyInPrimaryClass
-*/
- at property (copy, nonatomic) id PropertyInPrimaryClass;
-- (void) setThisRecord : (id)arg;
-- (id) Record;
- at end
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}annotate-comments-property-accessor.m" line="[[@LINE-4]]" column="32"><Name>PropertyInPrimaryClass</Name><USR>c:objc(cs)AppDelegate(py)PropertyInPrimaryClass</USR><Declaration>- (id)PropertyInPrimaryClass;</Declaration><Abstract><Para> This is PropertyInPrimaryClass</Para></Abstract></Function>]
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}annotate-comments-property-accessor.m" line="[[@LINE-5]]" column="32"><Name>PropertyInPrimaryClass</Name><USR>c:objc(cs)AppDelegate(py)PropertyInPrimaryClass</USR><Declaration>- (void)setPropertyInPrimaryClass:(id)PropertyInPrimaryClass;</Declaration><Abstract><Para> This is PropertyInPrimaryClass</Para></Abstract></Function>]
-
- at interface AppDelegate()
-- (id) GetterInClassExtension;
-/**
-  \brief This is Record
-*/
- at property (copy, setter = setThisRecord:) id Record;
- at end
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}annotate-comments-property-accessor.m" line="[[@LINE-6]]" column="1"><Name>PropertyInClassExtension</Name><USR>c:objc(cs)AppDelegate(py)PropertyInClassExtension</USR><Declaration>- (id)GetterInClassExtension;</Declaration><Abstract><Para> This is PropertyInClassExtension</Para></Abstract></Function>]
-
- at interface AppDelegate()
-/**
-  \brief This is PropertyInClassExtension
-*/
- at property (copy, getter = GetterInClassExtension) id PropertyInClassExtension;
-
-- (id) PropertyInPrimaryClass;
- at end
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}annotate-comments-property-accessor.m" line="[[@LINE-4]]" column="54"><Name>PropertyInClassExtension</Name><USR>c:objc(cs)AppDelegate(py)PropertyInClassExtension</USR><Declaration>- (id)GetterInClassExtension;</Declaration><Abstract><Para> This is PropertyInClassExtension</Para></Abstract></Function>]
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}annotate-comments-property-accessor.m" line="[[@LINE-5]]" column="54"><Name>PropertyInClassExtension</Name><USR>c:objc(cs)AppDelegate(py)PropertyInClassExtension</USR><Declaration>- (void)setPropertyInClassExtension:(id)PropertyInClassExtension;</Declaration><Abstract><Para> This is PropertyInClassExtension</Para></Abstract></Function>]
-  
- at implementation AppDelegate
-- (id) PropertyInPrimaryClass { return 0; }
- at end
-
-
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-typedef.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-typedef.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-typedef.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out
-// RUN: FileCheck %s < %t/out
-// rdar://13067629
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-
-/** Documentation for NSUInteger */
-typedef unsigned int NSUInteger;
-
-/** Documentation for MyEnum */
-typedef enum : NSUInteger {
-        MyEnumFoo, /**< value Foo */
-        MyEnumBar, /**< value Bar */
-        MyEnumBaz, /**< value Baz */
-} MyEnum;
-// CHECK: TypedefDecl=MyEnum:[[@LINE-1]]:3 (Definition) FullCommentAsHTML=[<p class="para-brief"> Documentation for MyEnum </p>] FullCommentAsXML=[<Typedef file="{{[^"]+}}annotate-comments-typedef.m" line="[[@LINE-1]]" column="3"><Name><anonymous></Name><USR>c:@EA at MyEnum</USR><Declaration>typedef enum MyEnum MyEnum</Declaration><Abstract><Para> Documentation for MyEnum </Para></Abstract></Typedef>]
-
-
-/** Documentation for E */
-enum E {
-        E_MyEnumFoo, /**< value Foo */
-        E_MyEnumBar, /**< value Bar */
-        E_MyEnumBaz, /**< value Baz */
-};
-typedef enum E E_T;
-// CHECK: EnumDecl=E:[[@LINE-6]]:6 (Definition) {{.*}} BriefComment=[Documentation for E] FullCommentAsHTML=[<p class="para-brief"> Documentation for E </p>] FullCommentAsXML=[<Enum file="{{[^"]+}}annotate-comments-typedef.m" line="[[@LINE-6]]" column="6"><Name>E</Name><USR>c:@E at E</USR><Declaration>enum E{{( : int)?}} {}</Declaration><Abstract><Para> Documentation for E </Para></Abstract></Enum>]
-// CHECK: TypedefDecl=E_T:[[@LINE-2]]:16 (Definition) FullCommentAsHTML=[<p class="para-brief"> Documentation for E </p>] FullCommentAsXML=[<Typedef file="{{[^"]+}}annotate-comments-typedef.m" line="[[@LINE-2]]" column="16"><Name>E</Name><USR>c:@E at E</USR><Declaration>typedef enum E E_T</Declaration><Abstract><Para> Documentation for E </Para></Abstract></Typedef>]
-
-
-/** Comment about Foo */
-typedef struct {
-         int iii;
-        } Foo;
-// CHECK: TypedefDecl=Foo:[[@LINE-1]]:11 (Definition) FullCommentAsHTML=[<p class="para-brief"> Comment about Foo </p>] FullCommentAsXML=[<Typedef file="{{[^"]+}}annotate-comments-typedef.m" line="[[@LINE-1]]" column="11"><Name><anonymous></Name><USR>c:@SA at Foo</USR><Declaration>typedef struct Foo Foo</Declaration><Abstract><Para> Comment about Foo </Para></Abstract></Typedef>]
-// CHECK: StructDecl=:[[@LINE-4]]:9 (Definition) {{.*}} BriefComment=[Comment about Foo] FullCommentAsHTML=[<p class="para-brief"> Comment about Foo </p>] FullCommentAsXML=[<Class file="{{[^"]+}}annotate-comments-typedef.m" line="[[@LINE-4]]" column="9"><Name><anonymous></Name><USR>c:@SA at Foo</USR><Declaration>struct {}</Declaration><Abstract><Para> Comment about Foo </Para></Abstract></Class>]
-
-
-struct Foo1 {
-  int iii;
-};
-/** About Foo1T */
-typedef struct Foo1 Foo1T;
-// FIXME: we don't attach this comment to 'struct Foo1'
-// CHECK: TypedefDecl=Foo1T:[[@LINE-2]]:21 (Definition) {{.*}} FullCommentAsHTML=[<p class="para-brief"> About Foo1T </p>] FullCommentAsXML=[<Typedef file="{{[^"]+}}annotate-comments-typedef.m" line="[[@LINE-2]]" column="21"><Name>Foo1T</Name><USR>c:annotate-comments-typedef.m@{{[0-9]+}}@T at Foo1T</USR><Declaration>typedef struct Foo1 Foo1T</Declaration><Abstract><Para> About Foo1T </Para></Abstract></Typedef>]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-unterminated.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-unterminated.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-comments-unterminated.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck -check-prefix=ERR %s
-
-// CHECK: annotate-comments-unterminated.c:9:5: VarDecl=x:{{.*}} RawComment=[/** Aaa. */]{{.*}} BriefComment=[Aaa.]
-// CHECK: annotate-comments-unterminated.c:11:5: VarDecl=y:{{.*}} RawComment=[/**< Bbb. */]{{.*}} BriefComment=[Bbb.]
-// CHECK-ERR: error: unterminated
-
-/** Aaa. */
-int x;
-
-int y; /**< Bbb. */
-/**< Ccc.
- * Ddd.

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-comments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-comments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-comments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,330 +0,0 @@
-// Run lines are sensitive to line numbers and come below the code.
-
-#ifndef HEADER
-#define HEADER
-
-// Not a Doxygen comment.  NOT_DOXYGEN
-void notdoxy1(void);
-
-/* Not a Doxygen comment.  NOT_DOXYGEN */
-void notdoxy2(void);
-
-/*/ Not a Doxygen comment.  NOT_DOXYGEN */
-void notdoxy3(void);
-
-/** Doxygen comment.  isdoxy4 IS_DOXYGEN_SINGLE */
-void isdoxy4(void);
-
-/**
- * Doxygen comment.  isdoxy5 IS_DOXYGEN_SINGLE */
-void isdoxy5(void);
-
-/**
- * Doxygen comment.
- * isdoxy6 IS_DOXYGEN_SINGLE */
-void isdoxy6(void);
-
-/**
- * Doxygen comment.
- * isdoxy7 IS_DOXYGEN_SINGLE
- */
-void isdoxy7(void);
-
-/*! Doxygen comment.  isdoxy8 IS_DOXYGEN_SINGLE */
-void isdoxy8(void);
-
-/// Doxygen comment.  isdoxy9 IS_DOXYGEN_SINGLE
-void isdoxy9(void);
-
-// Not a Doxygen comment.  NOT_DOXYGEN
-/// Doxygen comment.  isdoxy10 IS_DOXYGEN_SINGLE
-void isdoxy10(void);
-
-/// Doxygen comment.  isdoxy11 IS_DOXYGEN_SINGLE
-// Not a Doxygen comment.  NOT_DOXYGEN
-void isdoxy11(void);
-
-/** Doxygen comment.  isdoxy12  IS_DOXYGEN_SINGLE */
-/* Not a Doxygen comment.  NOT_DOXYGEN */
-void isdoxy12(void);
-
-/// Doxygen comment.  isdoxy13 IS_DOXYGEN_START
-/// Doxygen comment.  IS_DOXYGEN_END
-void isdoxy13(void);
-
-/// Doxygen comment.  isdoxy14 IS_DOXYGEN_START
-/// Blah-blah-blah.
-/// Doxygen comment.  IS_DOXYGEN_END
-void isdoxy14(void);
-
-/// Doxygen comment.  isdoxy15 IS_DOXYGEN_START
-/** Blah-blah-blah */
-/// Doxygen comment.  IS_DOXYGEN_END
-void isdoxy15(void);
-
-/** Blah-blah-blah. isdoxy16 IS_DOXYGEN_START *//** Blah */
-/// Doxygen comment.  IS_DOXYGEN_END
-void isdoxy16(void);
-
-/// NOT_DOXYGEN
-// NOT_DOXYGEN
-/// isdoxy17 IS_DOXYGEN_START IS_DOXYGEN_END
-void isdoxy17(void);
-
-unsigned
-// NOT_DOXYGEN
-/// NOT_DOXYGEN
-// NOT_DOXYGEN
-/// isdoxy18 IS_DOXYGEN_START IS_DOXYGEN_END
-// NOT_DOXYGEN
-int isdoxy18(void);
-
-//! It all starts here. isdoxy19 IS_DOXYGEN_START
-/*! It's a little odd to continue line this,
- *
- * but we need more multi-line comments. */
-/// This comment comes before my other comments
-/** This is a block comment that is associated with the function f. It
- *  runs for three lines.  IS_DOXYGEN_END
- */
-void isdoxy19(int, int);
-
-// NOT IN THE COMMENT  NOT_DOXYGEN
-/// This is a BCPL comment.  isdoxy20 IS_DOXYGEN_START
-/// It has only two lines.
-/** But there are other blocks that are part of the comment, too.  IS_DOXYGEN_END */
-void isdoxy20(int);
-
-void notdoxy21(int); ///< This is a member comment.  isdoxy21 IS_DOXYGEN_NOT_ATTACHED
-
-void notdoxy22(int); /*!< This is a member comment.  isdoxy22 IS_DOXYGEN_NOT_ATTACHED */
-
-void notdoxy23(int); /**< This is a member comment.  isdoxy23 IS_DOXYGEN_NOT_ATTACHED */
-
-void notdoxy24(int); // NOT_DOXYGEN
-
-/// IS_DOXYGEN_SINGLE
-struct isdoxy25 {
-};
-
-struct test26 {
-  /// IS_DOXYGEN_SINGLE
-  int isdoxy26;
-};
-
-struct test27 {
-  int isdoxy27; ///< IS_DOXYGEN_SINGLE
-};
-
-struct notdoxy28 {
-}; ///< IS_DOXYGEN_NOT_ATTACHED
-
-/// IS_DOXYGEN_SINGLE
-enum isdoxy29 {
-};
-
-enum notdoxy30 {
-}; ///< IS_DOXYGEN_NOT_ATTACHED
-
-/// IS_DOXYGEN_SINGLE
-namespace isdoxy31 {
-};
-
-namespace notdoxy32 {
-}; ///< IS_DOXYGEN_NOT_ATTACHED
-
-class test33 {
-                ///< IS_DOXYGEN_NOT_ATTACHED
-  int isdoxy33; ///< isdoxy33 IS_DOXYGEN_SINGLE
-  int isdoxy34; ///< isdoxy34 IS_DOXYGEN_SINGLE
-
-                ///< IS_DOXYGEN_NOT_ATTACHED
-  int isdoxy35, ///< isdoxy35 IS_DOXYGEN_SINGLE
-      isdoxy36; ///< isdoxy36 IS_DOXYGEN_SINGLE
-
-                ///< IS_DOXYGEN_NOT_ATTACHED
-  int isdoxy37  ///< isdoxy37 IS_DOXYGEN_SINGLE
-    , isdoxy38  ///< isdoxy38 IS_DOXYGEN_SINGLE
-    , isdoxy39; ///< isdoxy39 IS_DOXYGEN_SINGLE
-};
-
-// Verified that Doxygen attaches these.
-
-/// isdoxy40 IS_DOXYGEN_SINGLE
-// NOT_DOXYGEN
-void isdoxy40(int);
-
-unsigned
-/// isdoxy41 IS_DOXYGEN_SINGLE
-// NOT_DOXYGEN
-int isdoxy41(int);
-
-class test42 {
-  int isdoxy42; /* NOT_DOXYGEN */ ///< isdoxy42 IS_DOXYGEN_SINGLE
-};
-
-/// IS_DOXYGEN_START
-/// It is fine to have a command at the end of comment.
-///\brief
-///
-/// Some malformed command.
-/** \*/
-/**
- * \brief Aaa aaaaaaa aaaa.
- * IS_DOXYGEN_END
- */
-void isdoxy43(void);
-
-/// IS_DOXYGEN_START Aaa bbb
-/// ccc.
-///
-/// Ddd eee.
-/// Fff.
-///
-/// Ggg. IS_DOXYGEN_END
-void isdoxy44(void);
-
-/// IS_DOXYGEN_START Aaa bbb
-/// ccc.
-///
-/// \brief
-/// Ddd eee.
-/// Fff.
-///
-/// Ggg. IS_DOXYGEN_END
-void isdoxy45(void);
-
-/// IS_DOXYGEN_START Aaa bbb
-/// ccc.
-///
-/// \short
-/// Ddd eee.
-/// Fff.
-///
-/// Ggg. IS_DOXYGEN_END
-void isdoxy46(void);
-
-/// IS_DOXYGEN_NOT_ATTACHED
-#define FOO
-void notdoxy47(void);
-
-/// IS_DOXYGEN_START Aaa bbb
-/// \param ccc
-/// \returns ddd IS_DOXYGEN_END
-void isdoxy48(int);
-
-/// \brief IS_DOXYGEN_START Aaa
-/// \returns bbb IS_DOXYGEN_END
-void isdoxy49(void);
-
-/// \param ccc IS_DOXYGEN_START
-/// \returns ddd IS_DOXYGEN_END
-void isdoxy50(int);
-
-// One of the following lines has trailing whitespace.  It is intended, don't
-// fix it.
-/**
- * Aaa. IS_DOXYGEN_START
- * 
- * Bbb. IS_DOXYGEN_END
- */
-void isdoxy51(int);
-
-// One of the following lines has trailing whitespace.  It is intended, don't
-// fix it.
-/**
- * Aaa. IS_DOXYGEN_START
- * Bbb.
- *  
- * Ccc. IS_DOXYGEN_END
- */
-void isdoxy52(int);
-
-/**
- * \fn isdoxy53
- *
- * Aaa. IS_DOXYGEN_START IS_DOXYGEN_END
- */
-void isdoxy53(int);
-
-#endif
-
-// RUN: rm -rf %t
-// RUN: mkdir %t
-
-// Check that we serialize comment source locations properly.
-// RUN: %clang_cc1 -x c++ -std=c++11 -emit-pch -o %t/out.pch %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -include-pch %t/out.pch -fsyntax-only %s
-
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s -std=c++11 > %t/out.c-index-direct
-// RUN: c-index-test -test-load-tu %t/out.pch all > %t/out.c-index-pch
-
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-direct
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-pch
-
-// Declarations without Doxygen comments should not pick up some Doxygen comments.
-// WRONG-NOT: notdoxy{{.*}}Comment=
-// WRONG-NOT: test{{.*}}Comment=
-
-// Non-Doxygen comments should not be attached to anything.
-// WRONG-NOT: NOT_DOXYGEN
-
-// Some Doxygen comments are not attached to anything.
-// WRONG-NOT: IS_DOXYGEN_NOT_ATTACHED
-
-// Ensure we don't pick up extra comments.
-// WRONG-NOT: IS_DOXYGEN_START{{.*}}IS_DOXYGEN_START{{.*}}BriefComment=
-// WRONG-NOT: IS_DOXYGEN_END{{.*}}IS_DOXYGEN_END{{.*}}BriefComment=
-//
-// Ensure that XML is not invalid
-// WRONG-NOT: CommentXMLInvalid
-
-// RUN: FileCheck %s < %t/out.c-index-direct
-// RUN: FileCheck %s < %t/out.c-index-pch
-
-// These CHECK lines are not located near the code on purpose.  This test
-// checks that documentation comments are attached to declarations correctly.
-// Adding a non-documentation comment with CHECK line between every two
-// documentation comments will only test a single code path.
-//
-// CHECK: annotate-comments.cpp:16:6: FunctionDecl=isdoxy4:{{.*}} isdoxy4 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:20:6: FunctionDecl=isdoxy5:{{.*}} isdoxy5 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:25:6: FunctionDecl=isdoxy6:{{.*}} isdoxy6 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:31:6: FunctionDecl=isdoxy7:{{.*}} isdoxy7 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:34:6: FunctionDecl=isdoxy8:{{.*}} isdoxy8 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:37:6: FunctionDecl=isdoxy9:{{.*}} isdoxy9 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:41:6: FunctionDecl=isdoxy10:{{.*}} isdoxy10 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:53:6: FunctionDecl=isdoxy13:{{.*}} isdoxy13 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-// CHECK: annotate-comments.cpp:58:6: FunctionDecl=isdoxy14:{{.*}} isdoxy14 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-// CHECK: annotate-comments.cpp:63:6: FunctionDecl=isdoxy15:{{.*}} isdoxy15 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-// CHECK: annotate-comments.cpp:67:6: FunctionDecl=isdoxy16:{{.*}} isdoxy16 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-// CHECK: annotate-comments.cpp:72:6: FunctionDecl=isdoxy17:{{.*}} isdoxy17 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-// CHECK: annotate-comments.cpp:80:5: FunctionDecl=isdoxy18:{{.*}} isdoxy18 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-// CHECK: annotate-comments.cpp:90:6: FunctionDecl=isdoxy19:{{.*}} isdoxy19 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-// CHECK: annotate-comments.cpp:96:6: FunctionDecl=isdoxy20:{{.*}} isdoxy20 IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-// CHECK: annotate-comments.cpp:107:8: StructDecl=isdoxy25:{{.*}} IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:112:7: FieldDecl=isdoxy26:{{.*}} IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:116:7: FieldDecl=isdoxy27:{{.*}} IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:123:6: EnumDecl=isdoxy29:{{.*}} IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:130:11: Namespace=isdoxy31:{{.*}} IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:138:7: FieldDecl=isdoxy33:{{.*}} isdoxy33 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:139:7: FieldDecl=isdoxy34:{{.*}} isdoxy34 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:142:7: FieldDecl=isdoxy35:{{.*}} isdoxy35 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:143:7: FieldDecl=isdoxy36:{{.*}} isdoxy36 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:146:7: FieldDecl=isdoxy37:{{.*}} isdoxy37 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:147:7: FieldDecl=isdoxy38:{{.*}} isdoxy38 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:148:7: FieldDecl=isdoxy39:{{.*}} isdoxy39 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:155:6: FunctionDecl=isdoxy40:{{.*}} isdoxy40 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:160:5: FunctionDecl=isdoxy41:{{.*}} isdoxy41 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:163:7: FieldDecl=isdoxy42:{{.*}} isdoxy42 IS_DOXYGEN_SINGLE
-// CHECK: annotate-comments.cpp:176:6: FunctionDecl=isdoxy43:{{.*}} IS_DOXYGEN_START{{.*}} IS_DOXYGEN_END
-
-// CHECK: annotate-comments.cpp:185:6: FunctionDecl=isdoxy44:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa bbb ccc.]
-// CHECK: annotate-comments.cpp:195:6: FunctionDecl=isdoxy45:{{.*}} BriefComment=[Ddd eee. Fff.]
-// CHECK: annotate-comments.cpp:205:6: FunctionDecl=isdoxy46:{{.*}} BriefComment=[Ddd eee. Fff.]
-// CHECK: annotate-comments.cpp:214:6: FunctionDecl=isdoxy48:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa bbb]
-// CHECK: annotate-comments.cpp:218:6: FunctionDecl=isdoxy49:{{.*}} BriefComment=[IS_DOXYGEN_START Aaa]
-// CHECK: annotate-comments.cpp:222:6: FunctionDecl=isdoxy50:{{.*}} BriefComment=[Returns ddd IS_DOXYGEN_END]
-// CHECK: annotate-comments.cpp:231:6: FunctionDecl=isdoxy51:{{.*}} BriefComment=[Aaa. IS_DOXYGEN_START]
-// CHECK: annotate-comments.cpp:241:6: FunctionDecl=isdoxy52:{{.*}} BriefComment=[Aaa. IS_DOXYGEN_START Bbb.]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-context-sensitive.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-context-sensitive.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-context-sensitive.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-class Base {
-public:
-  virtual void f();
-};
-
-class Derived final : public Base {
-  virtual void f() override final;
-
-  struct final { };
-};
-
-typedef int override;
-struct Base2 {
-  virtual int override();
-};
-
-struct Derived2 : Base2 {
-  ::override override() override;
-};
-
-// RUN: c-index-test -test-annotate-tokens=%s:6:1:19:1 %s | FileCheck -check-prefix=CHECK-OVERRIDE-FINAL %s
-
-// CHECK-OVERRIDE-FINAL: Keyword: "class" [6:1 - 6:6] ClassDecl=Derived:6:7 (Definition)
-// CHECK-OVERRIDE-FINAL: Identifier: "Derived" [6:7 - 6:14] ClassDecl=Derived:6:7 (Definition)
-// CHECK-OVERRIDE-FINAL: Keyword: "final" [6:15 - 6:20] attribute(final)=
-// CHECK-OVERRIDE-FINAL: Punctuation: ":" [6:21 - 6:22] ClassDecl=Derived:6:7 (Definition)
-// CHECK-OVERRIDE-FINAL: Keyword: "public" [6:23 - 6:29] C++ base class specifier=class Base:1:7 [access=public isVirtual=false]
-// CHECK-OVERRIDE-FINAL: Identifier: "Base" [6:30 - 6:34] TypeRef=class Base:1:7
-// CHECK-OVERRIDE-FINAL: Punctuation: "{" [6:35 - 6:36] ClassDecl=Derived:6:7 (Definition)
-// CHECK-OVERRIDE-FINAL: Keyword: "virtual" [7:3 - 7:10] CXXMethod=f:7:16 (virtual) [Overrides @3:16]
-// CHECK-OVERRIDE-FINAL: Keyword: "void" [7:11 - 7:15] CXXMethod=f:7:16 (virtual) [Overrides @3:16]
-// CHECK-OVERRIDE-FINAL: Identifier: "f" [7:16 - 7:17] CXXMethod=f:7:16 (virtual) [Overrides @3:16]
-// CHECK-OVERRIDE-FINAL: Punctuation: "(" [7:17 - 7:18] CXXMethod=f:7:16 (virtual) [Overrides @3:16]
-// CHECK-OVERRIDE-FINAL: Punctuation: ")" [7:18 - 7:19] CXXMethod=f:7:16 (virtual) [Overrides @3:16]
-// CHECK-OVERRIDE-FINAL: Keyword: "override" [7:20 - 7:28] attribute(override)=
-// CHECK-OVERRIDE-FINAL: Keyword: "final" [7:29 - 7:34] attribute(final)=
-// CHECK-OVERRIDE-FINAL: Punctuation: ";" [7:34 - 7:35] ClassDecl=Derived:6:7 (Definition)
-// CHECK-OVERRIDE-FINAL: Keyword: "struct" [9:3 - 9:9] StructDecl=final:9:10 (Definition)
-// CHECK-OVERRIDE-FINAL: Identifier: "final" [9:10 - 9:15] StructDecl=final:9:10 (Definition)
-// CHECK-OVERRIDE-FINAL: Punctuation: "{" [9:16 - 9:17] StructDecl=final:9:10 (Definition)
-// CHECK-OVERRIDE-FINAL: Punctuation: "}" [9:18 - 9:19] StructDecl=final:9:10 (Definition)
-// CHECK-OVERRIDE-FINAL: Punctuation: ";" [9:19 - 9:20] ClassDecl=Derived:6:7 (Definition)

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-deep-statements.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-deep-statements.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-deep-statements.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:1000:1 %s | FileCheck %s
-
-// rdar://11979525
-// Check that we don't get stack overflow trying to annotate an extremely deep AST.
-
-// AddressSanitizer increases stack usage.
-// XFAIL: asan
-
-struct S {
-  S &operator()();
-};
-
-// CHECK: Identifier: "foo" [11:6 - 11:9] FunctionDecl=foo:11:6 (Definition)
-void foo() {
-  S s;
-  s()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-    ;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-literals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-literals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-literals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-typedef unsigned char BOOL;
-
- at interface NSNumber @end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
- at end
-
- at interface NSArray
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
- at end
-
-void test_literals(id k1, id o1, id k2, id o2, id k3) {
-  id objects = @[ o1, o2 ];
-  id dict = @{ k1 : o1,
-               k2 : o2,
-               k3 : @17 };
-}
-
-
-// RUN: c-index-test -test-annotate-tokens=%s:33:1:37:1 %s | FileCheck -check-prefix=CHECK-LITERALS %s
-
-// CHECK-LITERALS: Identifier: "id" [33:3 - 33:5] TypeRef=id:0:0
-// CHECK-LITERALS: Identifier: "objects" [33:6 - 33:13] VarDecl=objects:33:6 (Definition)
-// CHECK-LITERALS: Punctuation: "=" [33:14 - 33:15] VarDecl=objects:33:6 (Definition)
-// CHECK-LITERALS: Punctuation: "@" [33:16 - 33:17] UnexposedExpr=
-// CHECK-LITERALS: Punctuation: "[" [33:17 - 33:18] UnexposedExpr=
-// CHECK-LITERALS: Identifier: "o1" [33:19 - 33:21] DeclRefExpr=o1:32:30
-// CHECK-LITERALS: Punctuation: "," [33:21 - 33:22] UnexposedExpr=
-// CHECK-LITERALS: Identifier: "o2" [33:23 - 33:25] DeclRefExpr=o2:32:44
-// CHECK-LITERALS: Punctuation: "]" [33:26 - 33:27] UnexposedExpr=
-// CHECK-LITERALS: Punctuation: ";" [33:27 - 33:28] DeclStmt=
-// CHECK-LITERALS: Identifier: "id" [34:3 - 34:5] TypeRef=id:0:0
-// CHECK-LITERALS: Identifier: "dict" [34:6 - 34:10] VarDecl=dict:34:6 (Definition)
-// CHECK-LITERALS: Punctuation: "=" [34:11 - 34:12] VarDecl=dict:34:6 (Definition)
-// CHECK-LITERALS: Punctuation: "@" [34:13 - 34:14] UnexposedExpr=
-// CHECK-LITERALS: Punctuation: "{" [34:14 - 34:15] UnexposedExpr=
-// CHECK-LITERALS: Identifier: "k1" [34:16 - 34:18] DeclRefExpr=k1:32:23
-// CHECK-LITERALS: Punctuation: ":" [34:19 - 34:20] UnexposedExpr=
-// CHECK-LITERALS: Identifier: "o1" [34:21 - 34:23] DeclRefExpr=o1:32:30
-// CHECK-LITERALS: Punctuation: "," [34:23 - 34:24] UnexposedExpr=
-// CHECK-LITERALS: Identifier: "k2" [35:16 - 35:18] DeclRefExpr=k2:32:37
-// CHECK-LITERALS: Punctuation: ":" [35:19 - 35:20] UnexposedExpr=
-// CHECK-LITERALS: Identifier: "o2" [35:21 - 35:23] DeclRefExpr=o2:32:44
-// CHECK-LITERALS: Punctuation: "," [35:23 - 35:24] UnexposedExpr=
-// CHECK-LITERALS: Identifier: "k3" [36:16 - 36:18] DeclRefExpr=k3:32:51
-// CHECK-LITERALS: Punctuation: ":" [36:19 - 36:20] UnexposedExpr=
-// CHECK-LITERALS: Punctuation: "@" [36:21 - 36:22] UnexposedExpr=
-// CHECK-LITERALS: Literal: "17" [36:22 - 36:24] IntegerLiteral=
-// CHECK-LITERALS: Punctuation: "}" [36:25 - 36:26] UnexposedExpr=
-// CHECK-LITERALS: Punctuation: ";" [36:26 - 36:27] DeclStmt=
-// CHECK-LITERALS: Punctuation: "}" [37:1 - 37:2] CompoundStmt=
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-macro-args.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-macro-args.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-macro-args.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
- at interface MyClass
-+(void)meth;
- at end
-
-#define MACRO2(x) x
-#define MACRO(x) MACRO2(x)
-
-void test() {
-  MACRO([MyClass meth]);
-}
-
-#define INVOKE(METHOD, CLASS) [CLASS METHOD]
-
-void test2() {
-  INVOKE(meth, MyClass);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-macro-args.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-macro-args.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-macro-args.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// Test without PCH
-// RUN: c-index-test -test-annotate-tokens=%S/annotate-macro-args.h:9:1:10:1 %s -include %S/annotate-macro-args.h | FileCheck -check-prefix=CHECK1 %s
-// RUN: c-index-test -test-annotate-tokens=%S/annotate-macro-args.h:15:1:16:1 %s -include %S/annotate-macro-args.h | FileCheck -check-prefix=CHECK2 %s
-
-// Test with PCH
-// RUN: c-index-test -write-pch %t.pch -x objective-c-header %S/annotate-macro-args.h -Xclang -detailed-preprocessing-record
-// RUN: c-index-test -test-annotate-tokens=%S/annotate-macro-args.h:9:1:10:1 %s -include-pch %t.pch | FileCheck -check-prefix=CHECK1 %s
-// RUN: c-index-test -test-annotate-tokens=%S/annotate-macro-args.h:15:1:16:1 %s -include-pch %t.pch | FileCheck -check-prefix=CHECK2 %s
-
-// CHECK1: Identifier: "MACRO" [9:3 - 9:8] macro expansion=MACRO:6:9
-// CHECK1: Punctuation: "(" [9:8 - 9:9]
-// CHECK1: Punctuation: "[" [9:9 - 9:10] ObjCMessageExpr=meth:2:8
-// CHECK1: Identifier: "MyClass" [9:10 - 9:17] ObjCClassRef=MyClass:1:12
-// CHECK1: Identifier: "meth" [9:18 - 9:22] ObjCMessageExpr=meth:2:8
-// CHECK1: Punctuation: "]" [9:22 - 9:23] ObjCMessageExpr=meth:2:8
-// CHECK1: Punctuation: ")" [9:23 - 9:24]
-
-// CHECK2: Identifier: "INVOKE" [15:3 - 15:9] macro expansion=INVOKE:12:9
-// CHECK2: Punctuation: "(" [15:9 - 15:10]
-// CHECK2: Identifier: "meth" [15:10 - 15:14] ObjCMessageExpr=meth:2:8
-// CHECK2: Punctuation: "," [15:14 - 15:15]
-// CHECK2: Identifier: "MyClass" [15:16 - 15:23] ObjCClassRef=MyClass:1:12
-// CHECK2: Punctuation: ")" [15:23 - 15:24]

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-module.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-module.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-module.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-
-#include <DependsOnModule/DependsOnModule.h>
- at import DependsOnModule;
-int glob;
-
-// RUN: rm -rf %t.cache
-// RUN: c-index-test -test-annotate-tokens=%s:2:1:5:1 %s -fmodules-cache-path=%t.cache -fmodules -F %S/../Modules/Inputs \
-// RUN:      | FileCheck %s
-
-// CHECK:      Punctuation: "#" [2:1 - 2:2] inclusion directive=[[INC_DIR:DependsOnModule[/\\]DependsOnModule\.h \(.*/Modules/Inputs/DependsOnModule\.framework[/\\]Headers[/\\]DependsOnModule.h\)]]
-// CHECK-NEXT: Identifier: "include" [2:2 - 2:9] inclusion directive=[[INC_DIR]]
-// CHECK-NEXT: Punctuation: "<" [2:10 - 2:11] inclusion directive=[[INC_DIR]]
-// CHECK-NEXT: Identifier: "DependsOnModule" [2:11 - 2:26] inclusion directive=[[INC_DIR]]
-// CHECK-NEXT: Punctuation: "/" [2:26 - 2:27] inclusion directive=[[INC_DIR]]
-// CHECK-NEXT: Identifier: "DependsOnModule" [2:27 - 2:42] inclusion directive=[[INC_DIR]]
-// CHECK-NEXT: Punctuation: "." [2:42 - 2:43] inclusion directive=[[INC_DIR]]
-// CHECK-NEXT: Identifier: "h" [2:43 - 2:44] inclusion directive=[[INC_DIR]]
-// CHECK-NEXT: Punctuation: ">" [2:44 - 2:45] inclusion directive=[[INC_DIR]]
-// CHECK-NEXT: Punctuation: "@" [3:1 - 3:2] ModuleImport=DependsOnModule:3:1
-// CHECK-NEXT: Keyword: "import" [3:2 - 3:8] ModuleImport=DependsOnModule:3:1
-// CHECK-NEXT: Identifier: "DependsOnModule" [3:9 - 3:24] ModuleImport=DependsOnModule:3:1
-// CHECK-NEXT: Punctuation: ";" [3:24 - 3:25]
-// CHECK-NEXT: Keyword: "int" [4:1 - 4:4] VarDecl=glob:4:5
-// CHECK-NEXT: Identifier: "glob" [4:5 - 4:9] VarDecl=glob:4:5
-// CHECK-NEXT: Punctuation: ";" [4:9 - 4:10]
-
-// RUN: c-index-test -test-annotate-tokens=%S/../Modules/Inputs/Module.framework/Headers/Sub.h:1:1:3:1 %s -fmodules-cache-path=%t.cache -fmodules -F %S/../Modules/Inputs \
-// RUN:      | FileCheck %s -check-prefix=CHECK-MOD
-
-// CHECK-MOD:      Punctuation: "#" [1:1 - 1:2] inclusion directive=[[INC_DIR:Module[/\\]Sub2\.h \(.*/Modules/Inputs/Module\.framework[/\\]Headers[/\\]Sub2.h\)]]
-// CHECK-MOD-NEXT: Identifier: "include" [1:2 - 1:9] inclusion directive=[[INC_DIR]]
-// CHECK-MOD-NEXT: Punctuation: "<" [1:10 - 1:11] inclusion directive=[[INC_DIR]]
-// CHECK-MOD-NEXT: Identifier: "Module" [1:11 - 1:17] inclusion directive=[[INC_DIR]]
-// CHECK-MOD-NEXT: Punctuation: "/" [1:17 - 1:18] inclusion directive=[[INC_DIR]]
-// CHECK-MOD-NEXT: Identifier: "Sub2" [1:18 - 1:22] inclusion directive=[[INC_DIR]]
-// CHECK-MOD-NEXT: Punctuation: "." [1:22 - 1:23] inclusion directive=[[INC_DIR]]
-// CHECK-MOD-NEXT: Identifier: "h" [1:23 - 1:24] inclusion directive=[[INC_DIR]]
-// CHECK-MOD-NEXT: Punctuation: ">" [1:24 - 1:25] inclusion directive=[[INC_DIR]]
-// CHECK-MOD-NEXT: Keyword: "int" [2:1 - 2:4] VarDecl=Module_Sub:2:6
-// CHECK-MOD-NEXT: Punctuation: "*" [2:5 - 2:6] VarDecl=Module_Sub:2:6
-// CHECK-MOD-NEXT: Identifier: "Module_Sub" [2:6 - 2:16] VarDecl=Module_Sub:2:6
-// CHECK-MOD-NEXT: Punctuation: ";" [2:16 - 2:17]
-
-// RUN: c-index-test -cursor-at=%s:3:11 %s -fmodules-cache-path=%t.cache -fmodules -F %S/../Modules/Inputs \
-// RUN:     | FileCheck %s -check-prefix=CHECK-CURSOR
-
-// CHECK-CURSOR:      3:1 ModuleImport=DependsOnModule:3:1 (Definition) Extent=[3:1 - 3:24] Spelling=DependsOnModule ([3:9 - 3:24]) ModuleName=DependsOnModule ({{.*}}DependsOnModule.pcm) Headers(2):
-// CHECK-CURSOR-NEXT: {{.*}}other.h
-// CHECK-CURSOR-NEXT: {{.*}}DependsOnModule.h

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-nested-name-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-nested-name-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-nested-name-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,466 +0,0 @@
-namespace outer {
-  namespace inner {
-    template<typename T>
-    struct vector {
-      typedef T* iterator;
-    };
-  }
-}
-
-namespace outer_alias = outer;
-
-struct X { };
-
-using outer_alias::inner::vector;
-
-struct X_vector : outer_alias::inner::vector<X> {
-  using outer_alias::inner::vector<X>::iterator;
-};
-
-namespace outer {
-  namespace inner {
-    template<typename T, unsigned N>
-    struct array {
-      void foo();
-      static int max_size;
-    };
-  }
-}
-
-template<typename T, unsigned N>
-void outer::inner::array<T, N>::foo() {
-}
-
-template<typename T, unsigned N>
-int outer::inner::array<T, N>::max_size = 17;
-
-template<typename T>
-struct X2 : outer::inner::vector<T> {
-  typedef T type;
-  using typename outer::inner::vector<type>::iterator;
-  using outer::inner::vector<type>::push_back;
-};
-
-namespace outer {
-  namespace inner {
-    namespace secret {
-    }
-  }
-}
-
-using namespace outer_alias::inner::secret;
-namespace super_secret = outer_alias::inner::secret;
-
-template<typename T>
-struct X3 {
-  void f(T *t) {
-    t->::outer_alias::inner::template vector<T>::~vector<T>();
-  }
-};
-
-namespace outer {
-  namespace inner {
-    void f(int);
-    void f(double);
-  }
-}
-
-template<typename T>
-struct X4 {
-  typedef T type;
-  void g(int);
-  void g(float);
-
-  void h(T t) {
-    ::outer_alias::inner::f(t);
-    ::X4<type>::g(t);
-    this->::X4<type>::g(t);
-  }
-};
-
-typedef int Integer;
-template<>
-struct X4<Integer> {
-  typedef Integer type;
-
-  void g(int);
-  void g(float);
-
-  void h(type t) {
-    ::outer_alias::inner::f(t);
-    ::X4<type>::g(t);
-    this->::X4<type>::g(t);
-  }
-};
-
-
-template<typename T>
-struct X5 {
-  typedef T type;
-  typedef typename outer_alias::inner::vector<type>::iterator iter_type;
-  typedef typename outer_alias::inner::vector<int>::iterator int_ptr_type;
-};
-
-template<typename T>
-struct X6 {
-  typedef T* type;
-  typedef typename outer_alias::inner::vector<type>::template rebind<type> type1;
-  typedef typename outer_alias::inner::vector<type>::template rebind<type>::other type2;
-  typedef class outer_alias::inner::vector<type>::template rebind<type> type3;
-  typedef class outer_alias::inner::vector<type>::template rebind<type>::other type4;
-};
-
-namespace outer {
-  namespace inner {
-    template<typename T, template<class> class TT>
-    struct apply_meta {
-      typedef typename TT<T>::type type;
-    };
-  }
-}
-
-template<typename T, typename U>
-struct X7 {
-  typedef T T_type;
-  typedef U U_type;
-  typedef outer_alias::inner::apply_meta<T_type, U_type::template apply> type;
-};
-
-struct X8 {
-  void f();
-};
-
-struct X9 : X8 {
-  typedef X8 inherited;
-  void f() { 
-    inherited::f();
-  }
-};
-
-// RUN: c-index-test -test-annotate-tokens=%s:13:1:137:1 -fno-delayed-template-parsing %s | FileCheck %s
-
-// CHECK: Keyword: "using" [14:1 - 14:6] UsingDeclaration=vector[4:12]
-// CHECK: Identifier: "outer_alias" [14:7 - 14:18] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [14:18 - 14:20] UsingDeclaration=vector[4:12]
-// CHECK: Identifier: "inner" [14:20 - 14:25] NamespaceRef=inner:2:13
-// CHECK: Punctuation: "::" [14:25 - 14:27] UsingDeclaration=vector[4:12]
-// CHECK: Identifier: "vector" [14:27 - 14:33] OverloadedDeclRef=vector[4:12]
-// CHECK: Punctuation: ";" [14:33 - 14:34]
-
-// Base specifiers
-// CHECK: Identifier: "outer_alias" [16:19 - 16:30] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [16:30 - 16:32] C++ base class specifier=outer_alias::inner::vector<X>:4:12 [access=public isVirtual=false]
-// CHECK: Identifier: "inner" [16:32 - 16:37] NamespaceRef=inner:2:13
-// CHECK: Punctuation: "::" [16:37 - 16:39] C++ base class specifier=outer_alias::inner::vector<X>:4:12 [access=public isVirtual=false]
-// CHECK: Identifier: "vector" [16:39 - 16:45] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [16:45 - 16:46] C++ base class specifier=outer_alias::inner::vector<X>:4:12 [access=public isVirtual=false]
-// CHECK: Identifier: "X" [16:46 - 16:47] TypeRef=struct X:12:8
-// CHECK: Punctuation: ">" [16:47 - 16:48] C++ base class specifier=outer_alias::inner::vector<X>:4:12 [access=public isVirtual=false]
-
-
-// CHECK: Keyword: "using" [17:3 - 17:8] UsingDeclaration=iterator[5:18]
-// CHECK: Identifier: "outer_alias" [17:9 - 17:20] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [17:20 - 17:22] UsingDeclaration=iterator[5:18]
-// CHECK: Identifier: "inner" [17:22 - 17:27] NamespaceRef=inner:2:13
-// CHECK: Punctuation: "::" [17:27 - 17:29] UsingDeclaration=iterator[5:18]
-// CHECK: Identifier: "vector" [17:29 - 17:35] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [17:35 - 17:36] UsingDeclaration=iterator[5:18]
-// CHECK: Identifier: "X" [17:36 - 17:37] TypeRef=struct X:12:8
-// CHECK: Punctuation: ">" [17:37 - 17:38] UsingDeclaration=iterator[5:18]
-// CHECK: Punctuation: "::" [17:38 - 17:40] UsingDeclaration=iterator[5:18]
-// CHECK: Identifier: "iterator" [17:40 - 17:48] OverloadedDeclRef=iterator[5:18]
-
-// CHECK: Keyword: "void" [31:1 - 31:5] CXXMethod=foo:31:33 (Definition)
-// CHECK: Identifier: "outer" [31:6 - 31:11] NamespaceRef=outer:20:11
-// CHECK: Punctuation: "::" [31:11 - 31:13] CXXMethod=foo:31:33 (Definition)
-// CHECK: Identifier: "inner" [31:13 - 31:18] NamespaceRef=inner:21:13
-// CHECK: Punctuation: "::" [31:18 - 31:20] CXXMethod=foo:31:33 (Definition)
-// CHECK: Identifier: "array" [31:20 - 31:25] TemplateRef=array:23:12
-// CHECK: Punctuation: "<" [31:25 - 31:26] CXXMethod=foo:31:33 (Definition)
-// CHECK: Identifier: "T" [31:26 - 31:27] TypeRef=T:30:19
-// CHECK: Punctuation: "," [31:27 - 31:28] CXXMethod=foo:31:33 (Definition)
-// CHECK: Identifier: "N" [31:29 - 31:30] DeclRefExpr=N:30:31
-// CHECK: Punctuation: ">" [31:30 - 31:31] CXXMethod=foo:31:33 (Definition)
-// CHECK: Punctuation: "::" [31:31 - 31:33] CXXMethod=foo:31:33 (Definition)
-// CHECK: Identifier: "foo" [31:33 - 31:36] CXXMethod=foo:31:33 (Definition)
-// CHECK: Punctuation: "(" [31:36 - 31:37] CXXMethod=foo:31:33 (Definition)
-// CHECK: Punctuation: ")" [31:37 - 31:38] CXXMethod=foo:31:33 (Definition)
-
-// CHECK: Keyword: "int" [35:1 - 35:4] VarDecl=max_size:35:32 (Definition)
-// CHECK: Identifier: "outer" [35:5 - 35:10] NamespaceRef=outer:20:11
-// CHECK: Punctuation: "::" [35:10 - 35:12] VarDecl=max_size:35:32 (Definition)
-// CHECK: Identifier: "inner" [35:12 - 35:17] NamespaceRef=inner:21:13
-// CHECK: Punctuation: "::" [35:17 - 35:19] VarDecl=max_size:35:32 (Definition)
-// CHECK: Identifier: "array" [35:19 - 35:24] TemplateRef=array:23:12
-// CHECK: Punctuation: "<" [35:24 - 35:25] VarDecl=max_size:35:32 (Definition)
-// CHECK: Identifier: "T" [35:25 - 35:26] TypeRef=T:34:19
-// CHECK: Punctuation: "," [35:26 - 35:27] VarDecl=max_size:35:32 (Definition)
-// CHECK: Identifier: "N" [35:28 - 35:29] DeclRefExpr=N:34:31
-// CHECK: Punctuation: ">" [35:29 - 35:30] VarDecl=max_size:35:32 (Definition)
-// CHECK: Punctuation: "::" [35:30 - 35:32] VarDecl=max_size:35:32 (Definition)
-// CHECK: Identifier: "max_size" [35:32 - 35:40] VarDecl=max_size:35:32 (Definition)
-// CHECK: Punctuation: "=" [35:41 - 35:42] VarDecl=max_size:35:32 (Definition)
-// CHECK: Literal: "17" [35:43 - 35:45] IntegerLiteral=
-// CHECK: Punctuation: ";" [35:45 - 35:46]
-
-// CHECK: Keyword: "using" [40:3 - 40:8] UsingDeclaration=iterator:40:46
-// CHECK: Keyword: "typename" [40:9 - 40:17] UsingDeclaration=iterator:40:46
-// CHECK: Identifier: "outer" [40:18 - 40:23] NamespaceRef=outer:20:11
-// CHECK: Punctuation: "::" [40:23 - 40:25] UsingDeclaration=iterator:40:46
-// CHECK: Identifier: "inner" [40:25 - 40:30] NamespaceRef=inner:21:13
-// CHECK: Punctuation: "::" [40:30 - 40:32] UsingDeclaration=iterator:40:46
-// CHECK: Identifier: "vector" [40:32 - 40:38] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [40:38 - 40:39] UsingDeclaration=iterator:40:46
-// CHECK: Identifier: "type" [40:39 - 40:43] TypeRef=type:39:13
-// CHECK: Punctuation: ">" [40:43 - 40:44] UsingDeclaration=iterator:40:46
-// CHECK: Punctuation: "::" [40:44 - 40:46] UsingDeclaration=iterator:40:46
-// CHECK: Identifier: "iterator" [40:46 - 40:54] UsingDeclaration=iterator:40:46
-// CHECK: Punctuation: ";" [40:54 - 40:55] ClassTemplate=X2:38:8 (Definition)
-// CHECK: Keyword: "using" [41:3 - 41:8] UsingDeclaration=push_back:41:37
-// CHECK: Identifier: "outer" [41:9 - 41:14] NamespaceRef=outer:20:11
-// CHECK: Punctuation: "::" [41:14 - 41:16] UsingDeclaration=push_back:41:37
-// CHECK: Identifier: "inner" [41:16 - 41:21] NamespaceRef=inner:21:13
-// CHECK: Punctuation: "::" [41:21 - 41:23] UsingDeclaration=push_back:41:37
-// CHECK: Identifier: "vector" [41:23 - 41:29] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [41:29 - 41:30] UsingDeclaration=push_back:41:37
-// CHECK: Identifier: "type" [41:30 - 41:34] TypeRef=type:39:13
-// CHECK: Punctuation: ">" [41:34 - 41:35] UsingDeclaration=push_back:41:37
-// CHECK: Punctuation: "::" [41:35 - 41:37] UsingDeclaration=push_back:41:37
-// CHECK: Identifier: "push_back" [41:37 - 41:46] UsingDeclaration=push_back:41:37
-
-// Using directive
-// CHECK: Keyword: "using" [51:1 - 51:6] UsingDirective=:51:37
-// CHECK: Keyword: "namespace" [51:7 - 51:16] UsingDirective=:51:37
-// CHECK: Identifier: "outer_alias" [51:17 - 51:28] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [51:28 - 51:30] UsingDirective=:51:37
-// CHECK: Identifier: "inner" [51:30 - 51:35] NamespaceRef=inner:45:13
-// CHECK: Punctuation: "::" [51:35 - 51:37] UsingDirective=:51:37
-// CHECK: Identifier: "secret" [51:37 - 51:43] NamespaceRef=secret:46:15
-
-// Namespace alias
-// CHECK: Keyword: "namespace" [52:1 - 52:10] NamespaceAlias=super_secret:52:11
-// CHECK: Identifier: "super_secret" [52:11 - 52:23] NamespaceAlias=super_secret:52:11
-// CHECK: Punctuation: "=" [52:24 - 52:25] NamespaceAlias=super_secret:52:11
-// CHECK: Identifier: "outer_alias" [52:26 - 52:37] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [52:37 - 52:39] NamespaceAlias=super_secret:52:11
-// CHECK: Identifier: "inner" [52:39 - 52:44] NamespaceRef=inner:45:13
-// CHECK: Punctuation: "::" [52:44 - 52:46] NamespaceAlias=super_secret:52:11
-// CHECK: Identifier: "secret" [52:46 - 52:52] NamespaceRef=secret:46:15
-// CHECK: Punctuation: ";" [52:52 - 52:53]
-
-// Pseudo-destructor
-// CHECK: Identifier: "t" [57:5 - 57:6] DeclRefExpr=t:56:13
-// CHECK: Punctuation: "->" [57:6 - 57:8] MemberRefExpr=
-// CHECK: Punctuation: "::" [57:8 - 57:10] MemberRefExpr=
-// CHECK: Identifier: "outer_alias" [57:10 - 57:21] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [57:21 - 57:23] MemberRefExpr=
-// CHECK: Identifier: "inner" [57:23 - 57:28] NamespaceRef=inner:45:13
-// CHECK: Punctuation: "::" [57:28 - 57:30] MemberRefExpr=
-// CHECK: Keyword: "template" [57:30 - 57:38] MemberRefExpr=
-// CHECK: Identifier: "vector" [57:39 - 57:45] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [57:45 - 57:46] MemberRefExpr=
-// CHECK: Identifier: "T" [57:46 - 57:47] TypeRef=T:54:19
-// CHECK: Punctuation: ">" [57:47 - 57:48] MemberRefExpr=
-// CHECK: Punctuation: "::" [57:48 - 57:50] MemberRefExpr=
-// CHECK: Punctuation: "~" [57:50 - 57:51] MemberRefExpr=
-// CHECK: Identifier: "vector" [57:51 - 57:57] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [57:57 - 57:58] MemberRefExpr=
-// CHECK: Identifier: "T" [57:58 - 57:59] TypeRef=T:54:19
-// CHECK: Punctuation: ">" [57:59 - 57:60] CallExpr=
-// CHECK: Punctuation: "(" [57:60 - 57:61] CallExpr=
-// CHECK: Punctuation: ")" [57:61 - 57:62] CallExpr=
-
-// Unresolved member and non-member references
-// CHECK: Punctuation: "::" [75:5 - 75:7] DeclRefExpr=[63:10, 64:10]
-// CHECK: Identifier: "outer_alias" [75:7 - 75:18] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [75:18 - 75:20] DeclRefExpr=[63:10, 64:10]
-// CHECK: Identifier: "inner" [75:20 - 75:25] NamespaceRef=inner:62:13
-// CHECK: Punctuation: "::" [75:25 - 75:27] DeclRefExpr=[63:10, 64:10]
-// CHECK: Identifier: "f" [75:27 - 75:28] OverloadedDeclRef=f[63:10, 64:10]
-// CHECK: Punctuation: "(" [75:28 - 75:29] CallExpr=
-// CHECK: Identifier: "t" [75:29 - 75:30] DeclRefExpr=t:74:12
-// CHECK: Punctuation: ")" [75:30 - 75:31] CallExpr=
-// CHECK: Punctuation: "::" [76:5 - 76:7] MemberRefExpr=[71:8, 72:8]
-// CHECK: Identifier: "X4" [76:7 - 76:9] TemplateRef=X4:69:8
-// CHECK: Punctuation: "<" [76:9 - 76:10] MemberRefExpr=[71:8, 72:8]
-// CHECK: Identifier: "type" [76:10 - 76:14] TypeRef=type:70:13
-// CHECK: Punctuation: ">" [76:14 - 76:15] MemberRefExpr=[71:8, 72:8]
-// CHECK: Punctuation: "::" [76:15 - 76:17] MemberRefExpr=[71:8, 72:8]
-// CHECK: Identifier: "g" [76:17 - 76:18] OverloadedDeclRef=g[71:8, 72:8]
-// CHECK: Punctuation: "(" [76:18 - 76:19] CallExpr=
-// CHECK: Identifier: "t" [76:19 - 76:20] DeclRefExpr=t:74:12
-// CHECK: Punctuation: ")" [76:20 - 76:21] CallExpr=
-// CHECK: Punctuation: ";" [76:21 - 76:22] CompoundStmt=
-// CHECK: Keyword: "this" [77:5 - 77:9] CXXThisExpr=
-// CHECK: Punctuation: "->" [77:9 - 77:11] MemberRefExpr=
-// CHECK: Punctuation: "::" [77:11 - 77:13] MemberRefExpr=
-// CHECK: Identifier: "X4" [77:13 - 77:15] TemplateRef=X4:69:8
-// CHECK: Punctuation: "<" [77:15 - 77:16] MemberRefExpr=
-// CHECK: Identifier: "type" [77:16 - 77:20] TypeRef=type:70:13
-// CHECK: Punctuation: ">" [77:20 - 77:21] MemberRefExpr=
-// CHECK: Punctuation: "::" [77:21 - 77:23] MemberRefExpr=
-// CHECK: Identifier: "g" [77:23 - 77:24] MemberRefExpr=
-// CHECK: Punctuation: "(" [77:24 - 77:25] CallExpr=
-// CHECK: Identifier: "t" [77:25 - 77:26] DeclRefExpr=t:74:12
-// CHECK: Punctuation: ")" [77:26 - 77:27] CallExpr=
-
-// Resolved member and non-member references
-// CHECK: Punctuation: "::" [90:5 - 90:7] DeclRefExpr=f:63:10
-// CHECK: Identifier: "outer_alias" [90:7 - 90:18] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [90:18 - 90:20] DeclRefExpr=f:63:10
-// CHECK: Identifier: "inner" [90:20 - 90:25] NamespaceRef=inner:62:13
-// CHECK: Punctuation: "::" [90:25 - 90:27] DeclRefExpr=f:63:10
-// CHECK: Identifier: "f" [90:27 - 90:28] DeclRefExpr=f:63:10
-// CHECK: Punctuation: "(" [90:28 - 90:29] CallExpr=f:63:10
-// CHECK: Identifier: "t" [90:29 - 90:30] DeclRefExpr=t:89:15
-// CHECK: Punctuation: ")" [90:30 - 90:31] CallExpr=f:63:10
-// CHECK: Punctuation: ";" [90:31 - 90:32] CompoundStmt=
-// CHECK: Punctuation: "::" [91:5 - 91:7] MemberRefExpr=g:86:8
-// CHECK: Identifier: "X4" [91:7 - 91:9] TemplateRef=X4:69:8
-// CHECK: Punctuation: "<" [91:9 - 91:10] MemberRefExpr=g:86:8
-// CHECK: Identifier: "type" [91:10 - 91:14] TypeRef=type:84:19
-// CHECK: Punctuation: ">" [91:14 - 91:15] MemberRefExpr=g:86:8
-// CHECK: Punctuation: "::" [91:15 - 91:17] MemberRefExpr=g:86:8
-// CHECK: Identifier: "g" [91:17 - 91:18] MemberRefExpr=g:86:8
-// CHECK: Punctuation: "(" [91:18 - 91:19] CallExpr=g:86:8
-// CHECK: Identifier: "t" [91:19 - 91:20] DeclRefExpr=t:89:15
-// CHECK: Punctuation: ")" [91:20 - 91:21] CallExpr=g:86:8
-// CHECK: Punctuation: ";" [91:21 - 91:22] CompoundStmt=
-// CHECK: Keyword: "this" [92:5 - 92:9] CXXThisExpr=
-// CHECK: Punctuation: "->" [92:9 - 92:11] MemberRefExpr=g:86:8
-// CHECK: Punctuation: "::" [92:11 - 92:13] MemberRefExpr=g:86:8
-// CHECK: Identifier: "X4" [92:13 - 92:15] TemplateRef=X4:69:8
-// CHECK: Punctuation: "<" [92:15 - 92:16] MemberRefExpr=g:86:8
-// CHECK: Identifier: "type" [92:16 - 92:20] TypeRef=type:84:19
-// CHECK: Punctuation: ">" [92:20 - 92:21] MemberRefExpr=g:86:8
-// CHECK: Punctuation: "::" [92:21 - 92:23] MemberRefExpr=g:86:8
-// CHECK: Identifier: "g" [92:23 - 92:24] MemberRefExpr=g:86:8
-// CHECK: Punctuation: "(" [92:24 - 92:25] CallExpr=g:86:8
-// CHECK: Identifier: "t" [92:25 - 92:26] DeclRefExpr=t:89:15
-// CHECK: Punctuation: ")" [92:26 - 92:27] CallExpr=g:86:8
-
-// Dependent name type
-// CHECK: Keyword: "typedef" [100:3 - 100:10] TypedefDecl=iter_type:100:63 (Definition)
-// CHECK: Keyword: "typename" [100:11 - 100:19] TypedefDecl=iter_type:100:63 (Definition)
-// CHECK: Identifier: "outer_alias" [100:20 - 100:31] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [100:31 - 100:33] TypedefDecl=iter_type:100:63 (Definition)
-// CHECK: Identifier: "inner" [100:33 - 100:38] NamespaceRef=inner:62:13
-// CHECK: Punctuation: "::" [100:38 - 100:40] TypedefDecl=iter_type:100:63 (Definition)
-// CHECK: Identifier: "vector" [100:40 - 100:46] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [100:46 - 100:47] TypedefDecl=iter_type:100:63 (Definition)
-// CHECK: Identifier: "type" [100:47 - 100:51] TypeRef=type:99:13
-// CHECK: Punctuation: ">" [100:51 - 100:52] TypedefDecl=iter_type:100:63 (Definition)
-// CHECK: Punctuation: "::" [100:52 - 100:54] TypedefDecl=iter_type:100:63 (Definition)
-// CHECK: Identifier: "iterator" [100:54 - 100:62] TypedefDecl=iter_type:100:63 (Definition)
-// CHECK: Identifier: "iter_type" [100:63 - 100:72] TypedefDecl=iter_type:100:63 (Definition)
-
-// CHECK: Keyword: "typedef" [101:3 - 101:10] TypedefDecl=int_ptr_type:101:62 (Definition)
-// CHECK: Keyword: "typename" [101:11 - 101:19] TypedefDecl=int_ptr_type:101:62 (Definition)
-// CHECK: Identifier: "outer_alias" [101:20 - 101:31] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [101:31 - 101:33] TypedefDecl=int_ptr_type:101:62 (Definition)
-// CHECK: Identifier: "inner" [101:33 - 101:38] NamespaceRef=inner:62:13
-// CHECK: Punctuation: "::" [101:38 - 101:40] TypedefDecl=int_ptr_type:101:62 (Definition)
-// CHECK: Identifier: "vector" [101:40 - 101:46] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [101:46 - 101:47] TypedefDecl=int_ptr_type:101:62 (Definition)
-// CHECK: Keyword: "int" [101:47 - 101:50] TypedefDecl=int_ptr_type:101:62 (Definition)
-// CHECK: Punctuation: ">" [101:50 - 101:51] TypedefDecl=int_ptr_type:101:62 (Definition)
-// CHECK: Punctuation: "::" [101:51 - 101:53] TypedefDecl=int_ptr_type:101:62 (Definition)
-// CHECK: Identifier: "iterator" [101:53 - 101:61] TypeRef=iterator:5:18
-// CHECK: Identifier: "int_ptr_type" [101:62 - 101:74] TypedefDecl=int_ptr_type:101:62 (Definition)
-
-// Dependent template specialization types
-// CHECK: Keyword: "typename" [107:11 - 107:19] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Identifier: "outer_alias" [107:20 - 107:31] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [107:31 - 107:33] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Identifier: "inner" [107:33 - 107:38] NamespaceRef=inner:62:13
-// CHECK: Punctuation: "::" [107:38 - 107:40] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Identifier: "vector" [107:40 - 107:46] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [107:46 - 107:47] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Identifier: "type" [107:47 - 107:51] TypeRef=type:106:14
-// CHECK: Punctuation: ">" [107:51 - 107:52] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Punctuation: "::" [107:52 - 107:54] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Keyword: "template" [107:54 - 107:62] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Identifier: "rebind" [107:63 - 107:69] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Punctuation: "<" [107:69 - 107:70] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Identifier: "type" [107:70 - 107:74] TypeRef=type:106:14
-// CHECK: Punctuation: ">" [107:74 - 107:75] TypedefDecl=type1:107:76 (Definition)
-// CHECK: Identifier: "type1" [107:76 - 107:81] TypedefDecl=type1:107:76 (Definition)
-
-// CHECK: Keyword: "typedef" [108:3 - 108:10] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Keyword: "typename" [108:11 - 108:19] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Identifier: "outer_alias" [108:20 - 108:31] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [108:31 - 108:33] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Identifier: "inner" [108:33 - 108:38] NamespaceRef=inner:62:13
-// CHECK: Punctuation: "::" [108:38 - 108:40] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Identifier: "vector" [108:40 - 108:46] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [108:46 - 108:47] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Identifier: "type" [108:47 - 108:51] TypeRef=type:106:14
-// CHECK: Punctuation: ">" [108:51 - 108:52] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Punctuation: "::" [108:52 - 108:54] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Keyword: "template" [108:54 - 108:62] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Identifier: "rebind" [108:63 - 108:69] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Punctuation: "<" [108:69 - 108:70] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Identifier: "type" [108:70 - 108:74] TypeRef=type:106:14
-// CHECK: Punctuation: ">" [108:74 - 108:75] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Punctuation: "::" [108:75 - 108:77] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Identifier: "other" [108:77 - 108:82] TypedefDecl=type2:108:83 (Definition)
-// CHECK: Identifier: "type2" [108:83 - 108:88] TypedefDecl=type2:108:83 (Definition)
-
-// CHECK: Keyword: "typedef" [109:3 - 109:10] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Keyword: "class" [109:11 - 109:16] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Identifier: "outer_alias" [109:17 - 109:28] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [109:28 - 109:30] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Identifier: "inner" [109:30 - 109:35] NamespaceRef=inner:62:13
-// CHECK: Punctuation: "::" [109:35 - 109:37] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Identifier: "vector" [109:37 - 109:43] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [109:43 - 109:44] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Identifier: "type" [109:44 - 109:48] TypeRef=type:106:14
-// CHECK: Punctuation: ">" [109:48 - 109:49] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Punctuation: "::" [109:49 - 109:51] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Keyword: "template" [109:51 - 109:59] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Identifier: "rebind" [109:60 - 109:66] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Punctuation: "<" [109:66 - 109:67] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Identifier: "type" [109:67 - 109:71] TypeRef=type:106:14
-// CHECK: Punctuation: ">" [109:71 - 109:72] TypedefDecl=type3:109:73 (Definition)
-// CHECK: Identifier: "type3" [109:73 - 109:78] TypedefDecl=type3:109:73 (Definition)
-
-// CHECK: Keyword: "class" [110:11 - 110:16] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Identifier: "outer_alias" [110:17 - 110:28] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [110:28 - 110:30] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Identifier: "inner" [110:30 - 110:35] NamespaceRef=inner:62:13
-// CHECK: Punctuation: "::" [110:35 - 110:37] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Identifier: "vector" [110:37 - 110:43] TemplateRef=vector:4:12
-// CHECK: Punctuation: "<" [110:43 - 110:44] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Identifier: "type" [110:44 - 110:48] TypeRef=type:106:14
-// CHECK: Punctuation: ">" [110:48 - 110:49] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Punctuation: "::" [110:49 - 110:51] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Keyword: "template" [110:51 - 110:59] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Identifier: "rebind" [110:60 - 110:66] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Punctuation: "<" [110:66 - 110:67] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Identifier: "type" [110:67 - 110:71] TypeRef=type:106:14
-// CHECK: Punctuation: ">" [110:71 - 110:72] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Punctuation: "::" [110:72 - 110:74] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Identifier: "other" [110:74 - 110:79] TypedefDecl=type4:110:80 (Definition)
-// CHECK: Identifier: "type4" [110:80 - 110:85] TypedefDecl=type4:110:80 (Definition)
-
-// Template template arguments
-// CHECK: Keyword: "typedef" [126:3 - 126:10] TypedefDecl=type:126:74 (Definition)
-// CHECK: Identifier: "outer_alias" [126:11 - 126:22] NamespaceRef=outer_alias:10:11
-// CHECK: Punctuation: "::" [126:22 - 126:24] TypedefDecl=type:126:74 (Definition)
-// CHECK: Identifier: "inner" [126:24 - 126:29] NamespaceRef=inner:114:13
-// CHECK: Punctuation: "::" [126:29 - 126:31] TypedefDecl=type:126:74 (Definition)
-// CHECK: Identifier: "apply_meta" [126:31 - 126:41] TemplateRef=apply_meta:116:12
-// CHECK: Punctuation: "<" [126:41 - 126:42] TypedefDecl=type:126:74 (Definition)
-// CHECK: Identifier: "T_type" [126:42 - 126:48] TypeRef=T_type:124:13
-// CHECK: Punctuation: "," [126:48 - 126:49] TypedefDecl=type:126:74 (Definition)
-// CHECK: Identifier: "U_type" [126:50 - 126:56] TypeRef=U_type:125:13
-// CHECK: Punctuation: "::" [126:56 - 126:58] TypedefDecl=type:126:74 (Definition)
-// CHECK: Keyword: "template" [126:58 - 126:66] TypedefDecl=type:126:74 (Definition)
-// CHECK: Identifier: "apply" [126:67 - 126:72] TypedefDecl=type:126:74 (Definition)
-// CHECK: Punctuation: ">" [126:72 - 126:73] TypedefDecl=type:126:74 (Definition)
-// CHECK: Identifier: "type" [126:74 - 126:78] TypedefDecl=type:126:74 (Definition)
-
-// Member access expressions
-// CHECK: Identifier: "inherited" [136:5 - 136:14] TypeRef=inherited:134:14
-// CHECK: Punctuation: "::" [136:14 - 136:16] MemberRefExpr=f:130:8
-// CHECK: Identifier: "f" [136:16 - 136:17] MemberRefExpr=f:130:8

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-subscripting.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-subscripting.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-subscripting.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,92 +0,0 @@
- at interface NSArray
-- (id)objectAtIndexedSubscript:(int)index;
-+ (id)arrayWithObjects:(id *)objects count:(unsigned)count;
- at end
-
- at interface NSMutableArray : NSArray
-- (id)objectAtIndexedSubscript:(int)index;
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
- at interface NSDictionary
-- (id)objectForKeyedSubscript:(id)key;
-+ (id)dictionaryWithObjects:(id *)objects forKeys:(id *)keys count:(unsigned)count;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at class NSString;
-
-id testArray(int index, id p) {
-  NSMutableArray *array;
-  array[3] = 0;
-  NSArray *arr = @[ p, p ];
-  return array[index];
-}
-
-void testDict() {
-  NSMutableDictionary *dictionary;
-  NSString *key;
-  id newObject, oldObject;
-  oldObject = dictionary[key];
-  dictionary[key] = newObject;
-  NSDictionary *dict = @{ key: newObject, key: oldObject };
-}
-
-// RUN: c-index-test -test-annotate-tokens=%s:22:1:36:1 -target x86_64-apple-macosx10.7 %s | FileCheck %s
-// CHECK: Identifier: "array" [24:3 - 24:8] DeclRefExpr=array:23:19
-// CHECK: Punctuation: "[" [24:8 - 24:9] UnexposedExpr=
-// CHECK: Literal: "3" [24:9 - 24:10] IntegerLiteral=
-// CHECK: Punctuation: "]" [24:10 - 24:11] UnexposedExpr=
-// CHECK: Punctuation: "=" [24:12 - 24:13] BinaryOperator=
-// CHECK: Literal: "0" [24:14 - 24:15] IntegerLiteral=
-// CHECK: Punctuation: ";" [24:15 - 24:16] CompoundStmt=
-// CHECK: Identifier: "NSArray" [25:3 - 25:10] ObjCClassRef=NSArray:1:12
-// CHECK: Punctuation: "*" [25:11 - 25:12] VarDecl=arr:25:12 (Definition)
-// CHECK: Identifier: "arr" [25:12 - 25:15] VarDecl=arr:25:12 (Definition)
-// CHECK: Punctuation: "=" [25:16 - 25:17] VarDecl=arr:25:12 (Definition)
-// CHECK: Punctuation: "@" [25:18 - 25:19] UnexposedExpr=
-// CHECK: Punctuation: "[" [25:19 - 25:20] UnexposedExpr=
-// CHECK: Identifier: "p" [25:21 - 25:22] DeclRefExpr=p:22:28
-// CHECK: Punctuation: "," [25:22 - 25:23] UnexposedExpr=
-// CHECK: Identifier: "p" [25:24 - 25:25] DeclRefExpr=p:22:28
-// CHECK: Punctuation: "]" [25:26 - 25:27] UnexposedExpr=
-// CHECK: Punctuation: ";" [25:27 - 25:28] DeclStmt=
-// CHECK: Keyword: "return" [26:3 - 26:9] ReturnStmt=
-// CHECK: Identifier: "array" [26:10 - 26:15] DeclRefExpr=array:23:19
-// CHECK: Punctuation: "[" [26:15 - 26:16] UnexposedExpr=
-// CHECK: Identifier: "index" [26:16 - 26:21] DeclRefExpr=index:22:18
-// CHECK: Punctuation: "]" [26:21 - 26:22] UnexposedExpr=
-// CHECK: Punctuation: ";" [26:22 - 26:23] CompoundStmt=
-
-// CHECK: Identifier: "oldObject" [33:3 - 33:12] DeclRefExpr=oldObject:32:17
-// CHECK: Punctuation: "=" [33:13 - 33:14] BinaryOperator=
-// CHECK: Identifier: "dictionary" [33:15 - 33:25] DeclRefExpr=dictionary:30:24
-// CHECK: Punctuation: "[" [33:25 - 33:26] UnexposedExpr=
-// CHECK: Identifier: "key" [33:26 - 33:29] DeclRefExpr=key:31:13
-// CHECK: Punctuation: "]" [33:29 - 33:30] UnexposedExpr=
-// CHECK: Punctuation: ";" [33:30 - 33:31] CompoundStmt=
-// CHECK: Identifier: "dictionary" [34:3 - 34:13] DeclRefExpr=dictionary:30:24
-// CHECK: Punctuation: "[" [34:13 - 34:14] UnexposedExpr=
-// CHECK: Identifier: "key" [34:14 - 34:17] DeclRefExpr=key:31:13
-// CHECK: Punctuation: "]" [34:17 - 34:18] UnexposedExpr=
-// CHECK: Punctuation: "=" [34:19 - 34:20] BinaryOperator=
-// CHECK: Identifier: "newObject" [34:21 - 34:30] DeclRefExpr=newObject:32:6
-// CHECK: Punctuation: ";" [34:30 - 34:31] CompoundStmt=
-// CHECK: Identifier: "NSDictionary" [35:3 - 35:15] ObjCClassRef=NSDictionary:11:12
-// CHECK: Punctuation: "*" [35:16 - 35:17] VarDecl=dict:35:17 (Definition)
-// CHECK: Identifier: "dict" [35:17 - 35:21] VarDecl=dict:35:17 (Definition)
-// CHECK: Punctuation: "=" [35:22 - 35:23] VarDecl=dict:35:17 (Definition)
-// CHECK: Punctuation: "@" [35:24 - 35:25] UnexposedExpr=
-// CHECK: Punctuation: "{" [35:25 - 35:26] UnexposedExpr=
-// CHECK: Identifier: "key" [35:27 - 35:30] DeclRefExpr=key:31:13
-// CHECK: Punctuation: ":" [35:30 - 35:31] UnexposedExpr=
-// CHECK: Identifier: "newObject" [35:32 - 35:41] DeclRefExpr=newObject:32:6
-// CHECK: Punctuation: "," [35:41 - 35:42] UnexposedExpr=
-// CHECK: Identifier: "key" [35:43 - 35:46] DeclRefExpr=key:31:13
-// CHECK: Punctuation: ":" [35:46 - 35:47] UnexposedExpr=
-// CHECK: Identifier: "oldObject" [35:48 - 35:57] DeclRefExpr=oldObject:32:17
-// CHECK: Punctuation: "}" [35:58 - 35:59] UnexposedExpr=
-// CHECK: Punctuation: ";" [35:59 - 35:60] DeclStmt=

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-template<typename ...Args>
-int f(Args ...args) {
-  return sizeof...(args) + sizeof...(Args);
-}
-
-void test() {
-  int a;
-  decltype(a) b;
-
-  typedef int Integer;
-  typedef float Float;
-  typedef bool Bool;
-  bool b2 = __is_trivially_constructible(Integer, Float, Bool);
-}
-
-typedef int Int;
-
-class B {
- virtual void foo(Int);
-};
-
-class S : public B {
-  virtual void foo(Int) override;
-};
-
-
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:5:1 -fno-delayed-template-parsing -std=c++11 %s | FileCheck %s
-// CHECK: Identifier: "args" [3:20 - 3:24] SizeOfPackExpr=args:2:15
-// CHECK: Identifier: "Args" [3:38 - 3:42] TypeRef=Args:1:22
-
-// RUN: c-index-test -test-annotate-tokens=%s:8:1:9:1 -std=c++11 %s | FileCheck -check-prefix=CHECK-DECLTYPE %s
-// CHECK-DECLTYPE: Identifier: "a" [8:12 - 8:13] DeclRefExpr=a:7:7
-
-// RUN: c-index-test -test-annotate-tokens=%s:13:1:14:1 -std=c++11 %s | FileCheck -check-prefix=CHECK-TRAIT %s
-// CHECK-TRAIT: Identifier: "Integer" [13:42 - 13:49] TypeRef=Integer:10:15
-// CHECK-TRAIT: Identifier: "Float" [13:51 - 13:56] TypeRef=Float:11:17
-// CHECK-TRAIT: Identifier: "Bool" [13:58 - 13:62] TypeRef=Bool:12:16
-
-// RUN: c-index-test -test-annotate-tokens=%s:16:1:24:1 -std=c++11 %s | FileCheck -check-prefix=CHECK-WITH-OVERRIDE %s
-// CHECK-WITH-OVERRIDE: Keyword: "virtual" [19:2 - 19:9] CXXMethod=foo:19:15 (virtual)
-// CHECK-WITH-OVERRIDE: Keyword: "void" [19:10 - 19:14] CXXMethod=foo:19:15 (virtual)
-// CHECK-WITH-OVERRIDE: Identifier: "foo" [19:15 - 19:18] CXXMethod=foo:19:15 (virtual)
-// CHECK-WITH-OVERRIDE: Punctuation: "(" [19:18 - 19:19] CXXMethod=foo:19:15 (virtual)
-// CHECK-WITH-OVERRIDE: Identifier: "Int" [19:19 - 19:22] TypeRef=Int:16:13
-// CHECK-WITH-OVERRIDE: Punctuation: ")" [19:22 - 19:23] ParmDecl=:19:22 (Definition)
-// CHECK-WITH-OVERRIDE: Punctuation: ";" [19:23 - 19:24] ClassDecl=B:18:7 (Definition)
-// CHECK-WITH-OVERRIDE: Keyword: "virtual" [23:3 - 23:10] CXXMethod=foo:23:16 (virtual) [Overrides @19:15]
-// CHECK-WITH-OVERRIDE: Keyword: "void" [23:11 - 23:15] CXXMethod=foo:23:16 (virtual) [Overrides @19:15]
-// CHECK-WITH-OVERRIDE: Identifier: "foo" [23:16 - 23:19] CXXMethod=foo:23:16 (virtual) [Overrides @19:15]
-// CHECK-WITH-OVERRIDE: Punctuation: "(" [23:19 - 23:20] CXXMethod=foo:23:16 (virtual) [Overrides @19:15]
-// CHECK-WITH-OVERRIDE: Identifier: "Int" [23:20 - 23:23] TypeRef=Int:16:13
-// CHECK-WITH-OVERRIDE: Punctuation: ")" [23:23 - 23:24] ParmDecl=:23:23 (Definition)
-// CHECK-WITH-OVERRIDE: Keyword: "override" [23:25 - 23:33] attribute(override)=
-// CHECK-WITH-OVERRIDE: Punctuation: ";" [23:33 - 23:34] ClassDecl=S:22:7 (Definition)

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-include.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-include.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-include.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-#include "annotate-tokens-include.h"
-
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:2:1 %s | FileCheck %s
-// CHECK: Punctuation: "#" [1:1 - 1:2] inclusion directive=annotate-tokens-include.h
-// CHECK: Identifier: "include" [1:2 - 1:9] inclusion directive=annotate-tokens-include.h
-// CHECK: Literal: ""annotate-tokens-include.h"" [1:10 - 1:37] inclusion directive=annotate-tokens-include.h
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-include.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-include.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-include.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int foo();

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-pp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-pp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-pp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,227 +0,0 @@
-#define NOTHING(X,Y)
-#define STILL_NOTHING NOTHING(honk,warble)
-#define BAR baz
-#define WIBBLE(X, Y) X##Y
-NOTHING(more,junk) float WIBBLE(int, float);
-int BAR STILL_NOTHING;
-#include "foo.h"
-#undef BAR
-
-#define REVERSE_MACRO(x,y) y + x
-#define TWICE_MACRO(y) y + y
-
-void test_macro_args() {
-  int z = 1;
-  int t = 2;
-  int k = REVERSE_MACRO(t,z);
-  int j = TWICE_MACRO(k + k);
-  int w = j + j;
-}
-
-#define fun_with_macro_bodies(x, y) do { if (x) y } while (0) 
-
-void test() {
-  int x = 10;
-  fun_with_macro_bodies(x, { int z = x; ++z; });
-}
-
-#include "pragma-once.h"
-#include "guarded.h"
-
-const char *fname = __FILE__;
-
-#define SOME_MACRO 3
-
-#ifdef SOME_MACRO
-#endif
-
-struct A
-{
-#ifdef SOME_MACRO
-  int x;
-#endif
-};
-
-// RUN: c-index-test -test-annotate-tokens=%s:2:1:44:1 -I%S/Inputs %s | FileCheck %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-annotate-tokens=%s:2:1:44:1 -I%S/Inputs %s | FileCheck %s
-// CHECK: Punctuation: "#" [2:1 - 2:2] preprocessing directive=
-// CHECK: Identifier: "define" [2:2 - 2:8] preprocessing directive=
-// CHECK: Identifier: "STILL_NOTHING" [2:9 - 2:22] macro definition=STILL_NOTHING
-// CHECK: Identifier: "NOTHING" [2:23 - 2:30] macro expansion=NOTHING:1:9
-// CHECK: Punctuation: "(" [2:30 - 2:31] macro definition=STILL_NOTHING
-// CHECK: Identifier: "honk" [2:31 - 2:35] macro definition=STILL_NOTHING
-// CHECK: Punctuation: "," [2:35 - 2:36] macro definition=STILL_NOTHING
-// CHECK: Identifier: "warble" [2:36 - 2:42] macro definition=STILL_NOTHING
-// CHECK: Punctuation: ")" [2:42 - 2:43] macro definition=STILL_NOTHING
-// CHECK: Punctuation: "#" [3:1 - 3:2] preprocessing directive=
-// CHECK: Identifier: "define" [3:2 - 3:8] preprocessing directive=
-// CHECK: Identifier: "BAR" [3:9 - 3:12] macro definition=BAR
-// CHECK: Identifier: "baz" [3:13 - 3:16] macro definition=BAR
-// CHECK: Punctuation: "#" [4:1 - 4:2] preprocessing directive=
-// CHECK: Identifier: "define" [4:2 - 4:8] preprocessing directive=
-// CHECK: Identifier: "WIBBLE" [4:9 - 4:15] macro definition=WIBBLE
-// CHECK: Punctuation: "(" [4:15 - 4:16] macro definition=WIBBLE
-// CHECK: Identifier: "X" [4:16 - 4:17] macro definition=WIBBLE
-// CHECK: Punctuation: "," [4:17 - 4:18] macro definition=WIBBLE
-// CHECK: Identifier: "Y" [4:19 - 4:20] macro definition=WIBBLE
-// CHECK: Punctuation: ")" [4:20 - 4:21] macro definition=WIBBLE
-// CHECK: Identifier: "X" [4:22 - 4:23] macro definition=WIBBLE
-// CHECK: Punctuation: "##" [4:23 - 4:25] macro definition=WIBBLE
-// CHECK: Identifier: "Y" [4:25 - 4:26] macro definition=WIBBLE
-// CHECK: Identifier: "NOTHING" [5:1 - 5:8] macro expansion=NOTHING:1:9
-// CHECK: Punctuation: "(" [5:8 - 5:9]
-// CHECK: Identifier: "more" [5:9 - 5:13]
-// CHECK: Punctuation: "," [5:13 - 5:14]
-// CHECK: Identifier: "junk" [5:14 - 5:18]
-// CHECK: Punctuation: ")" [5:18 - 5:19]
-// CHECK: Keyword: "float" [5:20 - 5:25]
-// CHECK: Identifier: "WIBBLE" [5:26 - 5:32] macro expansion=WIBBLE:4:9
-// CHECK: Punctuation: "(" [5:32 - 5:33]
-// CHECK: Keyword: "int" [5:33 - 5:36]
-// CHECK: Punctuation: "," [5:36 - 5:37]
-// CHECK: Keyword: "float" [5:38 - 5:43]
-// CHECK: Punctuation: ")" [5:43 - 5:44]
-// CHECK: Punctuation: ";" [5:44 - 5:45]
-// CHECK: Keyword: "int" [6:1 - 6:4]
-// CHECK: Identifier: "BAR" [6:5 - 6:8] macro expansion=BAR:3:9
-// CHECK: Identifier: "STILL_NOTHING" [6:9 - 6:22] macro expansion=STILL_NOTHING:2:9
-// CHECK: Punctuation: ";" [6:22 - 6:23]
-// CHECK: Punctuation: "#" [7:1 - 7:2] inclusion directive=foo.h
-// CHECK: Identifier: "include" [7:2 - 7:9] inclusion directive=foo.h
-// CHECK: Literal: ""foo.h"" [7:10 - 7:17] inclusion directive=foo.h
-// CHECK: Punctuation: "#" [8:1 - 8:2] preprocessing directive=
-// CHECK: Identifier: "undef" [8:2 - 8:7] preprocessing directive=
-// CHECK: Identifier: "BAR" [8:8 - 8:11] preprocessing directive=
-// CHECK: Punctuation: "#" [10:1 - 10:2] preprocessing directive=
-// CHECK: Identifier: "define" [10:2 - 10:8] preprocessing directive=
-// CHECK: Identifier: "REVERSE_MACRO" [10:9 - 10:22] macro definition=REVERSE_MACRO
-// CHECK: Punctuation: "(" [10:22 - 10:23] macro definition=REVERSE_MACRO
-// CHECK: Identifier: "x" [10:23 - 10:24] macro definition=REVERSE_MACRO
-// CHECK: Punctuation: "," [10:24 - 10:25] macro definition=REVERSE_MACRO
-// CHECK: Identifier: "y" [10:25 - 10:26] macro definition=REVERSE_MACRO
-// CHECK: Punctuation: ")" [10:26 - 10:27] macro definition=REVERSE_MACRO
-// CHECK: Identifier: "y" [10:28 - 10:29] macro definition=REVERSE_MACRO
-// CHECK: Punctuation: "+" [10:30 - 10:31] macro definition=REVERSE_MACRO
-// CHECK: Identifier: "x" [10:32 - 10:33] macro definition=REVERSE_MACRO
-// CHECK: Punctuation: "#" [11:1 - 11:2] preprocessing directive=
-// CHECK: Identifier: "define" [11:2 - 11:8] preprocessing directive=
-// CHECK: Identifier: "TWICE_MACRO" [11:9 - 11:20] macro definition=TWICE_MACRO
-// CHECK: Punctuation: "(" [11:20 - 11:21] macro definition=TWICE_MACRO
-// CHECK: Identifier: "y" [11:21 - 11:22] macro definition=TWICE_MACRO
-// CHECK: Punctuation: ")" [11:22 - 11:23] macro definition=TWICE_MACRO
-// CHECK: Identifier: "y" [11:24 - 11:25] macro definition=TWICE_MACRO
-// CHECK: Punctuation: "+" [11:26 - 11:27] macro definition=TWICE_MACRO
-// CHECK: Identifier: "y" [11:28 - 11:29] macro definition=TWICE_MACRO
-// CHECK: Keyword: "void" [13:1 - 13:5] FunctionDecl=test_macro_args:13:6 (Definition)
-// CHECK: Identifier: "test_macro_args" [13:6 - 13:21] FunctionDecl=test_macro_args:13:6 (Definition)
-// CHECK: Punctuation: "(" [13:21 - 13:22] FunctionDecl=test_macro_args:13:6 (Definition)
-// CHECK: Punctuation: ")" [13:22 - 13:23] FunctionDecl=test_macro_args:13:6 (Definition)
-// CHECK: Punctuation: "{" [13:24 - 13:25] CompoundStmt=
-// CHECK: Keyword: "int" [14:3 - 14:6] VarDecl=z:14:7 (Definition)
-// CHECK: Identifier: "z" [14:7 - 14:8] VarDecl=z:14:7 (Definition)
-// CHECK: Punctuation: "=" [14:9 - 14:10] VarDecl=z:14:7 (Definition)
-// CHECK: Literal: "1" [14:11 - 14:12] IntegerLiteral=
-// CHECK: Punctuation: ";" [14:12 - 14:13] DeclStmt=
-// CHECK: Keyword: "int" [15:3 - 15:6] VarDecl=t:15:7 (Definition)
-// CHECK: Identifier: "t" [15:7 - 15:8] VarDecl=t:15:7 (Definition)
-// CHECK: Punctuation: "=" [15:9 - 15:10] VarDecl=t:15:7 (Definition)
-// CHECK: Literal: "2" [15:11 - 15:12] IntegerLiteral=
-// CHECK: Punctuation: ";" [15:12 - 15:13] DeclStmt=
-// CHECK: Keyword: "int" [16:3 - 16:6] VarDecl=k:16:7 (Definition)
-// CHECK: Identifier: "k" [16:7 - 16:8] VarDecl=k:16:7 (Definition)
-// CHECK: Punctuation: "=" [16:9 - 16:10] VarDecl=k:16:7 (Definition)
-// CHECK: Identifier: "REVERSE_MACRO" [16:11 - 16:24] macro expansion=REVERSE_MACRO:10:9
-// CHECK: Punctuation: "(" [16:24 - 16:25]
-// CHECK: Identifier: "t" [16:25 - 16:26] DeclRefExpr=t:15:7
-// CHECK: Punctuation: "," [16:26 - 16:27]
-// CHECK: Identifier: "z" [16:27 - 16:28] DeclRefExpr=z:14:7
-// FIXME: The token below should really be annotated as "macro expansion=REVERSE_MACRO:10:9"
-// CHECK: Punctuation: ")" [16:28 - 16:29] DeclStmt=
-// CHECK: Punctuation: ";" [16:29 - 16:30] DeclStmt=
-// CHECK: Keyword: "int" [17:3 - 17:6] VarDecl=j:17:7 (Definition)
-// CHECK: Identifier: "j" [17:7 - 17:8] VarDecl=j:17:7 (Definition)
-// CHECK: Punctuation: "=" [17:9 - 17:10] VarDecl=j:17:7 (Definition)
-// CHECK: Identifier: "TWICE_MACRO" [17:11 - 17:22] macro expansion=TWICE_MACRO:11:9
-// CHECK: Punctuation: "(" [17:22 - 17:23]
-// CHECK: Identifier: "k" [17:23 - 17:24] DeclRefExpr=k:16:7
-// CHECK: Punctuation: "+" [17:25 - 17:26] BinaryOperator=
-// CHECK: Identifier: "k" [17:27 - 17:28] DeclRefExpr=k:16:7
-// FIXME: The token below should really be annotated as "macro expansion=TWICE_MACRO:11:9"
-// CHECK: Punctuation: ")" [17:28 - 17:29] DeclStmt=
-// CHECK: Punctuation: ";" [17:29 - 17:30] DeclStmt=
-// CHECK: Keyword: "int" [18:3 - 18:6] VarDecl=w:18:7 (Definition)
-// CHECK: Identifier: "w" [18:7 - 18:8] VarDecl=w:18:7 (Definition)
-// CHECK: Punctuation: "=" [18:9 - 18:10] VarDecl=w:18:7 (Definition)
-// CHECK: Identifier: "j" [18:11 - 18:12] DeclRefExpr=j:17:7
-// CHECK: Punctuation: "+" [18:13 - 18:14] BinaryOperator=
-// CHECK: Identifier: "j" [18:15 - 18:16] DeclRefExpr=j:17:7
-// CHECK: Punctuation: ";" [18:16 - 18:17] DeclStmt=
-// CHECK: Punctuation: "}" [19:1 - 19:2] CompoundStmt=
-// CHECK: Punctuation: "#" [21:1 - 21:2] preprocessing directive=
-// CHECK: Identifier: "define" [21:2 - 21:8] preprocessing directive=
-// CHECK: Identifier: "fun_with_macro_bodies" [21:9 - 21:30] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: "(" [21:30 - 21:31] macro definition=fun_with_macro_bodies
-// CHECK: Identifier: "x" [21:31 - 21:32] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: "," [21:32 - 21:33] macro definition=fun_with_macro_bodies
-// CHECK: Identifier: "y" [21:34 - 21:35] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: ")" [21:35 - 21:36] macro definition=fun_with_macro_bodies
-// CHECK: Keyword: "do" [21:37 - 21:39] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: "{" [21:40 - 21:41] macro definition=fun_with_macro_bodies
-// CHECK: Keyword: "if" [21:42 - 21:44] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: "(" [21:45 - 21:46] macro definition=fun_with_macro_bodies
-// CHECK: Identifier: "x" [21:46 - 21:47] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: ")" [21:47 - 21:48] macro definition=fun_with_macro_bodies
-// CHECK: Identifier: "y" [21:49 - 21:50] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: "}" [21:51 - 21:52] macro definition=fun_with_macro_bodies
-// CHECK: Keyword: "while" [21:53 - 21:58] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: "(" [21:59 - 21:60] macro definition=fun_with_macro_bodies
-// CHECK: Literal: "0" [21:60 - 21:61] macro definition=fun_with_macro_bodies
-// CHECK: Punctuation: ")" [21:61 - 21:62] macro definition=fun_with_macro_bodies
-// CHECK: Keyword: "void" [23:1 - 23:5] FunctionDecl=test:23:6 (Definition)
-// CHECK: Identifier: "test" [23:6 - 23:10] FunctionDecl=test:23:6 (Definition)
-// CHECK: Punctuation: "(" [23:10 - 23:11] FunctionDecl=test:23:6 (Definition)
-// CHECK: Punctuation: ")" [23:11 - 23:12] FunctionDecl=test:23:6 (Definition)
-// CHECK: Punctuation: "{" [23:13 - 23:14] CompoundStmt=
-// CHECK: Keyword: "int" [24:3 - 24:6] VarDecl=x:24:7 (Definition)
-// CHECK: Identifier: "x" [24:7 - 24:8] VarDecl=x:24:7 (Definition)
-// CHECK: Punctuation: "=" [24:9 - 24:10] VarDecl=x:24:7 (Definition)
-// CHECK: Literal: "10" [24:11 - 24:13] IntegerLiteral=
-// CHECK: Punctuation: ";" [24:13 - 24:14] DeclStmt=
-// CHECK: Identifier: "fun_with_macro_bodies" [25:3 - 25:24] macro expansion=fun_with_macro_bodies:21:9
-// CHECK: Punctuation: "(" [25:24 - 25:25] CompoundStmt=
-// CHECK: Identifier: "x" [25:25 - 25:26] DeclRefExpr=x:24:7
-// CHECK: Punctuation: "," [25:26 - 25:27]
-// CHECK: Punctuation: "{" [25:28 - 25:29] CompoundStmt=
-// CHECK: Keyword: "int" [25:30 - 25:33] VarDecl=z:25:34 (Definition)
-// CHECK: Identifier: "z" [25:34 - 25:35] VarDecl=z:25:34 (Definition)
-// CHECK: Punctuation: "=" [25:36 - 25:37] VarDecl=z:25:34 (Definition)
-// CHECK: Identifier: "x" [25:38 - 25:39] DeclRefExpr=x:24:7
-// CHECK: Punctuation: ";" [25:39 - 25:40] DeclStmt=
-// CHECK: Punctuation: "++" [25:41 - 25:43] UnaryOperator=
-// CHECK: Identifier: "z" [25:43 - 25:44] DeclRefExpr=z:25:3
-// CHECK: Punctuation: ";" [25:44 - 25:45] CompoundStmt=
-// CHECK: Punctuation: "}" [25:46 - 25:47] CompoundStmt=
-// FIXME: The token below should really be annotated as "macro expansion=fun_with_macro_bodies:21:9"
-// CHECK: Punctuation: ")" [25:47 - 25:48] CompoundStmt=
-// CHECK: Punctuation: ";" [25:48 - 25:49] CompoundStmt=
-// CHECK: Punctuation: "}" [26:1 - 26:2] CompoundStmt=
-// CHECK: {{28:1.*inclusion directive=pragma-once.h.*multi-include guarded}}
-// CHECK: {{29:1.*inclusion directive=guarded.h.*multi-include guarded}}
-// CHECK: Identifier: "__FILE__" [31:21 - 31:29] macro expansion=__FILE__
-// CHECK: Punctuation: "#" [35:1 - 35:2] preprocessing directive=
-// CHECK: Identifier: "ifdef" [35:2 - 35:7] preprocessing directive=
-// CHECK: Identifier: "SOME_MACRO" [35:8 - 35:18] macro expansion=SOME_MACRO:33:9
-// CHECK: Punctuation: "#" [36:1 - 36:2] preprocessing directive=
-// CHECK: Identifier: "endif" [36:2 - 36:7] preprocessing directive=
-// CHECK: Keyword: "struct" [38:1 - 38:7] StructDecl=A:38:8 (Definition)
-// CHECK: Identifier: "A" [38:8 - 38:9] StructDecl=A:38:8 (Definition)
-// CHECK: Punctuation: "{" [39:1 - 39:2] StructDecl=A:38:8 (Definition)
-// CHECK: Punctuation: "#" [40:1 - 40:2] preprocessing directive=
-// CHECK: Identifier: "ifdef" [40:2 - 40:7] preprocessing directive=
-// CHECK: Identifier: "SOME_MACRO" [40:8 - 40:18] macro expansion=SOME_MACRO:33:9
-// CHECK: Keyword: "int" [41:3 - 41:6] FieldDecl=x:41:7 (Definition)
-// CHECK: Identifier: "x" [41:7 - 41:8] FieldDecl=x:41:7 (Definition)
-// CHECK: Punctuation: ";" [41:8 - 41:9] StructDecl=A:38:8 (Definition)
-// CHECK: Punctuation: "#" [42:1 - 42:2] preprocessing directive=
-// CHECK: Identifier: "endif" [42:2 - 42:7] preprocessing directive=
-// CHECK: Punctuation: "}" [43:1 - 43:2] StructDecl=A:38:8 (Definition)

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-preamble.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-preamble.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-preamble.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// A comment line.
-
-void f(void *ptr) {
-}
-
-
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:5:1 %s | FileCheck %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-annotate-tokens=%s:1:1:5:1 %s | FileCheck %s
-// CHECK: Comment: "// A comment line." [1:1 - 1:19]
-// CHECK: Keyword: "void" [3:1 - 3:5] FunctionDecl=f:3:6 (Definition)
-// CHECK: Identifier: "f" [3:6 - 3:7] FunctionDecl=f:3:6 (Definition)
-// CHECK: Punctuation: "(" [3:7 - 3:8] FunctionDecl=f:3:6 (Definition)
-// CHECK: Keyword: "void" [3:8 - 3:12] ParmDecl=ptr:3:14 (Definition)
-// CHECK: Punctuation: "*" [3:13 - 3:14] ParmDecl=ptr:3:14 (Definition)
-// CHECK: Identifier: "ptr" [3:14 - 3:17] ParmDecl=ptr:3:14 (Definition)
-// CHECK: Punctuation: ")" [3:17 - 3:18] FunctionDecl=f:3:6 (Definition)
-// CHECK: Punctuation: "{" [3:19 - 3:20] CompoundStmt=
-// CHECK: Punctuation: "}" [4:1 - 4:2] CompoundStmt=
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-with-default-args.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-with-default-args.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-with-default-args.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-#include "annotate-tokens-with-default-args.h"
-
-void Foo::m(Foo *f) {}
-
-// RUN: c-index-test -test-annotate-tokens=%s:3:1:4:1 %s | FileCheck %s
-// CHECK: Keyword: "void" [3:1 - 3:5] CXXMethod=m:3:11 (Definition)
-// CHECK: Identifier: "Foo" [3:6 - 3:9] TypeRef=struct Foo:1:8
-// CHECK: Punctuation: "::" [3:9 - 3:11] CXXMethod=m:3:11 (Definition)
-// CHECK: Identifier: "m" [3:11 - 3:12] CXXMethod=m:3:11 (Definition)
-// CHECK: Punctuation: "(" [3:12 - 3:13] CXXMethod=m:3:11 (Definition)
-// CHECK: Identifier: "Foo" [3:13 - 3:16] TypeRef=struct Foo:1:8
-// CHECK: Punctuation: "*" [3:17 - 3:18] ParmDecl=f:3:18 (Definition)
-// CHECK: Identifier: "f" [3:18 - 3:19] ParmDecl=f:3:18 (Definition)
-// CHECK: Punctuation: ")" [3:19 - 3:20] CXXMethod=m:3:11 (Definition)
-// CHECK: Punctuation: "{" [3:21 - 3:22] CompoundStmt=
-// CHECK: Punctuation: "}" [3:22 - 3:23] CompoundStmt=

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-with-default-args.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-with-default-args.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens-with-default-args.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-struct Foo {
-  void m(Foo *f = 0);
-};

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,226 +0,0 @@
-typedef int T;
-struct X { int a, b; };
-void f(void *ptr) {
-  T* t_ptr = (T *)ptr;
-  (void)sizeof(T);
-  /* A comment */
-  struct X x = (struct X){1, 2};
-  void *xx = ptr ? : &x;
-  const char * hello = "Hello";
-}
-enum Color { Red, Green, Blue };
-typedef int Int;
-enum Color g(int i, ...) {
-  __builtin_va_list va;
-  (void)__builtin_va_arg(va, Int);
-  (void)__builtin_types_compatible_p(Int, Int);
-
-  struct X x = { 0, 0 };
-  do {
-    x.a++;
-  } while (x.a < 10);
-  
-  enum Color c;
-  switch (c) {
-  case Red:
-    return Green;
-
-  case Green:
-    return Blue;
-
-  case Blue:
-    return Red;
-  }
-}
-
-__attribute__((unavailable)) Int __attribute__((unavailable)) test() __attribute__((unavailable));
-
-#define HEADER() \
-    int x; \
-    int y; \
-    int z
-
-#define TYPE_INST(name, ...) \
-    static const struct { \
-        HEADER(); \
-    } name = { \
-        __VA_ARGS__ \
-    }
-
-void func1(void);
-
-TYPE_INST(Foo,
-    .x = 0,
-    .y = 1,
-    .z = 2,
-);
-
-void func2(void);
-
-// RUN: c-index-test -test-annotate-tokens=%s:4:1:37:1 %s | FileCheck %s
-// CHECK: Identifier: "T" [4:3 - 4:4] TypeRef=T:1:13
-// CHECK: Punctuation: "*" [4:4 - 4:5] VarDecl=t_ptr:4:6 (Definition)
-// CHECK: Identifier: "t_ptr" [4:6 - 4:11] VarDecl=t_ptr:4:6 (Definition)
-// CHECK: Punctuation: "=" [4:12 - 4:13] VarDecl=t_ptr:4:6 (Definition)
-// CHECK: Punctuation: "(" [4:14 - 4:15] CStyleCastExpr=
-// CHECK: Identifier: "T" [4:15 - 4:16] TypeRef=T:1:13
-// CHECK: Identifier: "ptr" [4:19 - 4:22] DeclRefExpr=ptr:3:14
-// CHECK: Punctuation: ";" [4:22 - 4:23] DeclStmt=
-// CHECK: Punctuation: "(" [5:3 - 5:4] CStyleCastExpr=
-// CHECK: Keyword: "void" [5:4 - 5:8] CStyleCastExpr=
-// CHECK: Punctuation: ")" [5:8 - 5:9] CStyleCastExpr=
-// CHECK: Keyword: "sizeof" [5:9 - 5:15] UnexposedExpr=
-// CHECK: Punctuation: "(" [5:15 - 5:16] UnexposedExpr=
-// CHECK: Identifier: "T" [5:16 - 5:17] TypeRef=T:1:13
-// CHECK: Punctuation: ")" [5:17 - 5:18] UnexposedExpr=
-// CHECK: Punctuation: ";" [5:18 - 5:19] CompoundStmt=
-// CHECK: Keyword: "struct" [7:3 - 7:9] VarDecl=x:7:12 (Definition)
-// CHECK: Identifier: "X" [7:10 - 7:11] TypeRef=struct X:2:8
-// CHECK: Identifier: "x" [7:12 - 7:13] VarDecl=x:7:12 (Definition)
-// CHECK: Punctuation: "=" [7:14 - 7:15] VarDecl=x:7:12 (Definition)
-// CHECK: Punctuation: "(" [7:16 - 7:17] CompoundLiteralExpr=
-// CHECK: Keyword: "struct" [7:17 - 7:23] CompoundLiteralExpr=
-// CHECK: Identifier: "X" [7:24 - 7:25] TypeRef=struct X:2:8
-// CHECK: Punctuation: ")" [7:25 - 7:26] CompoundLiteralExpr=
-// CHECK: Punctuation: "{" [7:26 - 7:27] InitListExpr=
-// CHECK: Literal: "1" [7:27 - 7:28] IntegerLiteral=
-// CHECK: Punctuation: "," [7:28 - 7:29] InitListExpr=
-// CHECK: Literal: "2" [7:30 - 7:31] IntegerLiteral=
-// CHECK: Punctuation: "}" [7:31 - 7:32] InitListExpr=
-// CHECK: Punctuation: ";" [7:32 - 7:33] DeclStmt=
-// CHECK: Keyword: "void" [8:3 - 8:7] VarDecl=xx:8:9 (Definition)
-// CHECK: Punctuation: "*" [8:8 - 8:9] VarDecl=xx:8:9 (Definition)
-// CHECK: Identifier: "xx" [8:9 - 8:11] VarDecl=xx:8:9 (Definition)
-// CHECK: Punctuation: "=" [8:12 - 8:13] VarDecl=xx:8:9 (Definition)
-// CHECK: Identifier: "ptr" [8:14 - 8:17] DeclRefExpr=ptr:3:14
-// CHECK: Punctuation: "?" [8:18 - 8:19] UnexposedExpr=
-// CHECK: Punctuation: ":" [8:20 - 8:21] UnexposedExpr=
-// CHECK: Punctuation: "&" [8:22 - 8:23] UnaryOperator=
-// CHECK: Identifier: "x" [8:23 - 8:24] DeclRefExpr=x:7:12
-// CHECK: Punctuation: ";" [8:24 - 8:25] DeclStmt=
-// CHECK: Keyword: "const" [9:3 - 9:8] VarDecl=hello:9:16 (Definition)
-// CHECK: Keyword: "char" [9:9 - 9:13] VarDecl=hello:9:16 (Definition)
-// CHECK: Punctuation: "*" [9:14 - 9:15] VarDecl=hello:9:16 (Definition)
-// CHECK: Identifier: "hello" [9:16 - 9:21] VarDecl=hello:9:16 (Definition)
-// CHECK: Punctuation: "=" [9:22 - 9:23] VarDecl=hello:9:16 (Definition)
-// CHECK: Literal: ""Hello"" [9:24 - 9:31] StringLiteral=
-// CHECK: Punctuation: ";" [9:31 - 9:32] DeclStmt=
-// CHECK: Punctuation: "}" [10:1 - 10:2] CompoundStmt=
-// CHECK: Keyword: "__builtin_va_arg" [15:9 - 15:25] UnexposedExpr=
-// CHECK: Identifier: "Int" [15:30 - 15:33] TypeRef=Int:12:13
-// CHECK: Keyword: "__builtin_types_compatible_p" [16:9 - 16:37] UnexposedExpr=
-// CHECK: Identifier: "Int" [16:38 - 16:41] TypeRef=Int:12:13
-// CHECK: Punctuation: "," [16:41 - 16:42] UnexposedExpr=
-// CHECK: Identifier: "Int" [16:43 - 16:46] TypeRef=Int:12:13
-// CHECK: Keyword: "struct" [18:3 - 18:9] VarDecl=x:18:12 (Definition)
-// CHECK: Identifier: "X" [18:10 - 18:11] TypeRef=struct X:2:8
-// CHECK: Identifier: "x" [18:12 - 18:13] VarDecl=x:18:12 (Definition)
-// CHECK: Keyword: "do" [19:3 - 19:5] DoStmt=
-// CHECK: Identifier: "x" [20:5 - 20:6] DeclRefExpr=x:18:12
-// CHECK: Punctuation: "." [20:6 - 20:7] MemberRefExpr=a:2:16
-// CHECK: Identifier: "a" [20:7 - 20:8] MemberRefExpr=a:2:16
-// CHECK: Punctuation: "++" [20:8 - 20:10] UnaryOperator=
-// CHECK: Punctuation: ";" [20:10 - 20:11] CompoundStmt=
-// CHECK: Punctuation: "}" [21:3 - 21:4] CompoundStmt=
-// CHECK: Keyword: "while" [21:5 - 21:10] DoStmt=
-// CHECK: Punctuation: "(" [21:11 - 21:12] DoStmt=
-// CHECK: Identifier: "x" [21:12 - 21:13] DeclRefExpr=x:18:12
-// CHECK: Punctuation: "." [21:13 - 21:14] MemberRefExpr=a:2:16
-// CHECK: Identifier: "a" [21:14 - 21:15] MemberRefExpr=a:2:16
-
-// CHECK: Keyword: "enum" [23:3 - 23:7] VarDecl=c:23:14 (Definition)
-// CHECK: Identifier: "Color" [23:8 - 23:13] TypeRef=enum Color:11:6
-// CHECK: Identifier: "c" [23:14 - 23:15] VarDecl=c:23:14 (Definition)
-// CHECK: Punctuation: ";" [23:15 - 23:16] DeclStmt=
-// CHECK: Keyword: "switch" [24:3 - 24:9] SwitchStmt=
-// CHECK: Punctuation: "(" [24:10 - 24:11] SwitchStmt=
-// CHECK: Identifier: "c" [24:11 - 24:12] DeclRefExpr=c:23:14
-// CHECK: Punctuation: ")" [24:12 - 24:13] SwitchStmt=
-// CHECK: Punctuation: "{" [24:14 - 24:15] CompoundStmt=
-// CHECK: Keyword: "case" [25:3 - 25:7] CaseStmt=
-// CHECK: Identifier: "Red" [25:8 - 25:11] DeclRefExpr=Red:11:14
-// CHECK: Punctuation: ":" [25:11 - 25:12] CaseStmt=
-// CHECK: Keyword: "return" [26:5 - 26:11] ReturnStmt=
-// CHECK: Identifier: "Green" [26:12 - 26:17] DeclRefExpr=Green:11:19
-// CHECK: Punctuation: ";" [26:17 - 26:18] CompoundStmt=
-// CHECK: Keyword: "case" [28:3 - 28:7] CaseStmt=
-// CHECK: Identifier: "Green" [28:8 - 28:13] DeclRefExpr=Green:11:19
-// CHECK: Punctuation: ":" [28:13 - 28:14] CaseStmt=
-// CHECK: Keyword: "return" [29:5 - 29:11] ReturnStmt=
-// CHECK: Identifier: "Blue" [29:12 - 29:16] DeclRefExpr=Blue:11:26
-// CHECK: Punctuation: ";" [29:16 - 29:17] CompoundStmt=
-// CHECK: Keyword: "case" [31:3 - 31:7] CaseStmt=
-// CHECK: Identifier: "Blue" [31:8 - 31:12] DeclRefExpr=Blue:11:26
-// CHECK: Punctuation: ":" [31:12 - 31:13] CaseStmt=
-// CHECK: Keyword: "return" [32:5 - 32:11] ReturnStmt=
-// CHECK: Identifier: "Red" [32:12 - 32:15] DeclRefExpr=Red:11:14
-// CHECK: Punctuation: ";" [32:15 - 32:16] CompoundStmt=
-
-// CHECK: Keyword: "__attribute__" [36:1 - 36:14] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: "(" [36:14 - 36:15] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: "(" [36:15 - 36:16] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Identifier: "unavailable" [36:16 - 36:27] UnexposedAttr=
-// CHECK: Punctuation: ")" [36:27 - 36:28] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: ")" [36:28 - 36:29] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Identifier: "Int" [36:30 - 36:33] TypeRef=Int:12:13
-// CHECK: Keyword: "__attribute__" [36:34 - 36:47] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: "(" [36:47 - 36:48] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: "(" [36:48 - 36:49] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Identifier: "unavailable" [36:49 - 36:60] UnexposedAttr=
-// CHECK: Punctuation: ")" [36:60 - 36:61] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: ")" [36:61 - 36:62] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Identifier: "test" [36:63 - 36:67] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: "(" [36:67 - 36:68] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: ")" [36:68 - 36:69] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Keyword: "__attribute__" [36:70 - 36:83] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: "(" [36:83 - 36:84] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: "(" [36:84 - 36:85] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Identifier: "unavailable" [36:85 - 36:96] UnexposedAttr=
-// CHECK: Punctuation: ")" [36:96 - 36:97] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: ")" [36:97 - 36:98] FunctionDecl=test:36:63 (unavailable)  (always unavailable: "")
-// CHECK: Punctuation: ";" [36:98 - 36:99]
-
-// RUN: c-index-test -test-annotate-tokens=%s:4:1:165:32 %s | FileCheck %s
-// RUN: c-index-test -test-annotate-tokens=%s:4:1:165:38 %s | FileCheck %s
-
-// RUN: c-index-test -test-annotate-tokens=%s:50:1:55:1 %s | FileCheck %s -check-prefix=CHECK-RANGE1
-// CHECK-RANGE1: Keyword: "void" [50:1 - 50:5] FunctionDecl=func1:50:6
-// CHECK-RANGE1: Identifier: "func1" [50:6 - 50:11] FunctionDecl=func1:50:6
-// CHECK-RANGE1: Punctuation: "(" [50:11 - 50:12] FunctionDecl=func1:50:6
-// CHECK-RANGE1: Keyword: "void" [50:12 - 50:16] FunctionDecl=func1:50:6
-// CHECK-RANGE1: Punctuation: ")" [50:16 - 50:17] FunctionDecl=func1:50:6
-// CHECK-RANGE1: Punctuation: ";" [50:17 - 50:18]
-// CHECK-RANGE1: Identifier: "TYPE_INST" [52:1 - 52:10] macro expansion=TYPE_INST:43:9
-// CHECK-RANGE1: Punctuation: "(" [52:10 - 52:11]
-// CHECK-RANGE1: Identifier: "Foo" [52:11 - 52:14] VarDecl=Foo:52:11 (Definition)
-// CHECK-RANGE1: Punctuation: "," [52:14 - 52:15]
-// CHECK-RANGE1: Punctuation: "." [53:5 - 53:6] UnexposedExpr=
-// CHECK-RANGE1: Identifier: "x" [53:6 - 53:7] MemberRef=x:52:1
-// CHECK-RANGE1: Punctuation: "=" [53:8 - 53:9] UnexposedExpr=
-// CHECK-RANGE1: Literal: "0" [53:10 - 53:11] IntegerLiteral=
-// CHECK-RANGE1: Punctuation: "," [53:11 - 53:12] InitListExpr=
-// CHECK-RANGE1: Punctuation: "." [54:5 - 54:6] UnexposedExpr=
-// CHECK-RANGE1: Identifier: "y" [54:6 - 54:7] MemberRef=y:52:1
-// CHECK-RANGE1: Punctuation: "=" [54:8 - 54:9] UnexposedExpr=
-// CHECK-RANGE1: Literal: "1" [54:10 - 54:11] IntegerLiteral=
-// CHECK-RANGE1: Punctuation: "," [54:11 - 54:12] InitListExpr=
-
-// RUN: c-index-test -test-annotate-tokens=%s:54:1:59:1 %s | FileCheck %s -check-prefix=CHECK-RANGE2
-// CHECK-RANGE2: Punctuation: "." [54:5 - 54:6] UnexposedExpr=
-// CHECK-RANGE2: Identifier: "y" [54:6 - 54:7] MemberRef=y:52:1
-// CHECK-RANGE2: Punctuation: "=" [54:8 - 54:9] UnexposedExpr=
-// CHECK-RANGE2: Literal: "1" [54:10 - 54:11] IntegerLiteral=
-// CHECK-RANGE2: Punctuation: "," [54:11 - 54:12] InitListExpr=
-// CHECK-RANGE2: Punctuation: "." [55:5 - 55:6] UnexposedExpr=
-// CHECK-RANGE2: Identifier: "z" [55:6 - 55:7] MemberRef=z:52:1
-// CHECK-RANGE2: Punctuation: "=" [55:8 - 55:9] UnexposedExpr=
-// CHECK-RANGE2: Literal: "2" [55:10 - 55:11] IntegerLiteral=
-// CHECK-RANGE2: Punctuation: "," [55:11 - 55:12] InitListExpr=
-// CHECK-RANGE2: Punctuation: ")" [56:1 - 56:2]
-// CHECK-RANGE2: Punctuation: ";" [56:2 - 56:3]
-// CHECK-RANGE2: Keyword: "void" [58:1 - 58:5] FunctionDecl=func2:58:6
-// CHECK-RANGE2: Identifier: "func2" [58:6 - 58:11] FunctionDecl=func2:58:6
-// CHECK-RANGE2: Punctuation: "(" [58:11 - 58:12] FunctionDecl=func2:58:6
-// CHECK-RANGE2: Keyword: "void" [58:12 - 58:16] FunctionDecl=func2:58:6
-// CHECK-RANGE2: Punctuation: ")" [58:16 - 58:17] FunctionDecl=func2:58:6
-// CHECK-RANGE2: Punctuation: ";" [58:17 - 58:18]

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,175 +0,0 @@
-struct bonk { };
-void test(bonk X) {
-    X = X;
-    __is_base_of(bonk, bonk);
-}
-
-struct X {
-  X operator++();
-  X operator++(int);
-};
-void test2(X x) {
-  ++(x);
-  (x)++;
-}
-
-struct S1 { void f(); };
-struct S2 { S1 *operator->(); };
-void test3(S2 s2) {
-  s2->f();
-  X foo;
-}
-
-template <bool (*tfn)(X*)>
-struct TS {
-  void foo();
-};
-
-template <bool (*tfn)(X*)>
-void TS<tfn>::foo() {}
-
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:30:1 %s -fno-delayed-template-parsing | FileCheck %s
-// CHECK: Keyword: "struct" [1:1 - 1:7] StructDecl=bonk:1:8 (Definition)
-// CHECK: Identifier: "bonk" [1:8 - 1:12] StructDecl=bonk:1:8 (Definition)
-// CHECK: Punctuation: "{" [1:13 - 1:14] StructDecl=bonk:1:8 (Definition)
-// CHECK: Punctuation: "}" [1:15 - 1:16] StructDecl=bonk:1:8 (Definition)
-// CHECK: Punctuation: ";" [1:16 - 1:17]
-// CHECK: Keyword: "void" [2:1 - 2:5] FunctionDecl=test:2:6 (Definition)
-// CHECK: Identifier: "test" [2:6 - 2:10] FunctionDecl=test:2:6 (Definition)
-// CHECK: Punctuation: "(" [2:10 - 2:11] FunctionDecl=test:2:6 (Definition)
-// CHECK: Identifier: "bonk" [2:11 - 2:15] TypeRef=struct bonk:1:8
-// CHECK: Identifier: "X" [2:16 - 2:17] ParmDecl=X:2:16 (Definition)
-// CHECK: Punctuation: ")" [2:17 - 2:18] FunctionDecl=test:2:6 (Definition)
-// CHECK: Punctuation: "{" [2:19 - 2:20] CompoundStmt=
-// CHECK: Identifier: "X" [3:5 - 3:6] DeclRefExpr=X:2:16
-// CHECK: Punctuation: "=" [3:7 - 3:8] DeclRefExpr=operator=:1:8
-// CHECK: Identifier: "X" [3:9 - 3:10] DeclRefExpr=X:2:16
-// CHECK: Punctuation: ";" [3:10 - 3:11] CompoundStmt=
-// CHECK: Keyword: "__is_base_of" [4:5 - 4:17] UnexposedExpr=
-// CHECK: Punctuation: "(" [4:17 - 4:18] UnexposedExpr=
-// CHECK: Identifier: "bonk" [4:18 - 4:22] TypeRef=struct bonk:1:8
-// CHECK: Punctuation: "," [4:22 - 4:23] UnexposedExpr=
-// CHECK: Identifier: "bonk" [4:24 - 4:28] TypeRef=struct bonk:1:8
-// CHECK: Punctuation: ")" [4:28 - 4:29] UnexposedExpr=
-// CHECK: Punctuation: ";" [4:29 - 4:30] CompoundStmt=
-// CHECK: Punctuation: "}" [5:1 - 5:2] CompoundStmt=
-// CHECK: Keyword: "struct" [7:1 - 7:7] StructDecl=X:7:8 (Definition)
-// CHECK: Identifier: "X" [7:8 - 7:9] StructDecl=X:7:8 (Definition)
-// CHECK: Punctuation: "{" [7:10 - 7:11] StructDecl=X:7:8 (Definition)
-// CHECK: Identifier: "X" [8:3 - 8:4] TypeRef=struct X:7:8
-// CHECK: Keyword: "operator" [8:5 - 8:13] CXXMethod=operator++:8:5
-// CHECK: Punctuation: "++" [8:13 - 8:15] CXXMethod=operator++:8:5
-// CHECK: Punctuation: "(" [8:15 - 8:16] CXXMethod=operator++:8:5
-// CHECK: Punctuation: ")" [8:16 - 8:17] CXXMethod=operator++:8:5
-// CHECK: Punctuation: ";" [8:17 - 8:18] StructDecl=X:7:8 (Definition)
-// CHECK: Identifier: "X" [9:3 - 9:4] TypeRef=struct X:7:8
-// CHECK: Keyword: "operator" [9:5 - 9:13] CXXMethod=operator++:9:5
-// CHECK: Punctuation: "++" [9:13 - 9:15] CXXMethod=operator++:9:5
-// CHECK: Punctuation: "(" [9:15 - 9:16] CXXMethod=operator++:9:5
-// CHECK: Keyword: "int" [9:16 - 9:19] ParmDecl=:9:19 (Definition)
-// CHECK: Punctuation: ")" [9:19 - 9:20] ParmDecl=:9:19 (Definition)
-// CHECK: Punctuation: ";" [9:20 - 9:21] StructDecl=X:7:8 (Definition)
-// CHECK: Punctuation: "}" [10:1 - 10:2] StructDecl=X:7:8 (Definition)
-// CHECK: Punctuation: ";" [10:2 - 10:3]
-// CHECK: Keyword: "void" [11:1 - 11:5] FunctionDecl=test2:11:6 (Definition)
-// CHECK: Identifier: "test2" [11:6 - 11:11] FunctionDecl=test2:11:6 (Definition)
-// CHECK: Punctuation: "(" [11:11 - 11:12] FunctionDecl=test2:11:6 (Definition)
-// CHECK: Identifier: "X" [11:12 - 11:13] TypeRef=struct X:7:8
-// CHECK: Identifier: "x" [11:14 - 11:15] ParmDecl=x:11:14 (Definition)
-// CHECK: Punctuation: ")" [11:15 - 11:16] FunctionDecl=test2:11:6 (Definition)
-// CHECK: Punctuation: "{" [11:17 - 11:18] CompoundStmt=
-// CHECK: Punctuation: "++" [12:3 - 12:5] CallExpr=operator++:8:5
-// CHECK: Punctuation: "(" [12:5 - 12:6] ParenExpr=
-// CHECK: Identifier: "x" [12:6 - 12:7] DeclRefExpr=x:11:14
-// CHECK: Punctuation: ")" [12:7 - 12:8] ParenExpr=
-// CHECK: Punctuation: ";" [12:8 - 12:9] CompoundStmt=
-// CHECK: Punctuation: "(" [13:3 - 13:4] ParenExpr=
-// CHECK: Identifier: "x" [13:4 - 13:5] DeclRefExpr=x:11:14
-// CHECK: Punctuation: ")" [13:5 - 13:6] ParenExpr=
-// CHECK: Punctuation: "++" [13:6 - 13:8] DeclRefExpr=operator++:9:5
-// CHECK: Punctuation: ";" [13:8 - 13:9] CompoundStmt=
-// CHECK: Punctuation: "}" [14:1 - 14:2] CompoundStmt=
-// CHECK: Keyword: "struct" [16:1 - 16:7] StructDecl=S1:16:8 (Definition)
-// CHECK: Identifier: "S1" [16:8 - 16:10] StructDecl=S1:16:8 (Definition)
-// CHECK: Punctuation: "{" [16:11 - 16:12] StructDecl=S1:16:8 (Definition)
-// CHECK: Keyword: "void" [16:13 - 16:17] CXXMethod=f:16:18
-// CHECK: Identifier: "f" [16:18 - 16:19] CXXMethod=f:16:18
-// CHECK: Punctuation: "(" [16:19 - 16:20] CXXMethod=f:16:18
-// CHECK: Punctuation: ")" [16:20 - 16:21] CXXMethod=f:16:18
-// CHECK: Punctuation: ";" [16:21 - 16:22] StructDecl=S1:16:8 (Definition)
-// CHECK: Punctuation: "}" [16:23 - 16:24] StructDecl=S1:16:8 (Definition)
-// CHECK: Punctuation: ";" [16:24 - 16:25]
-// CHECK: Keyword: "struct" [17:1 - 17:7] StructDecl=S2:17:8 (Definition)
-// CHECK: Identifier: "S2" [17:8 - 17:10] StructDecl=S2:17:8 (Definition)
-// CHECK: Punctuation: "{" [17:11 - 17:12] StructDecl=S2:17:8 (Definition)
-// CHECK: Identifier: "S1" [17:13 - 17:15] TypeRef=struct S1:16:8
-// CHECK: Punctuation: "*" [17:16 - 17:17] CXXMethod=operator->:17:17
-// CHECK: Keyword: "operator" [17:17 - 17:25] CXXMethod=operator->:17:17
-// CHECK: Punctuation: "->" [17:25 - 17:27] CXXMethod=operator->:17:17
-// CHECK: Punctuation: "(" [17:27 - 17:28] CXXMethod=operator->:17:17
-// CHECK: Punctuation: ")" [17:28 - 17:29] CXXMethod=operator->:17:17
-// CHECK: Punctuation: ";" [17:29 - 17:30] StructDecl=S2:17:8 (Definition)
-// CHECK: Punctuation: "}" [17:31 - 17:32] StructDecl=S2:17:8 (Definition)
-// CHECK: Punctuation: ";" [17:32 - 17:33]
-// CHECK: Keyword: "void" [18:1 - 18:5] FunctionDecl=test3:18:6 (Definition)
-// CHECK: Identifier: "test3" [18:6 - 18:11] FunctionDecl=test3:18:6 (Definition)
-// CHECK: Punctuation: "(" [18:11 - 18:12] FunctionDecl=test3:18:6 (Definition)
-// CHECK: Identifier: "S2" [18:12 - 18:14] TypeRef=struct S2:17:8
-// CHECK: Identifier: "s2" [18:15 - 18:17] ParmDecl=s2:18:15 (Definition)
-// CHECK: Punctuation: ")" [18:17 - 18:18] FunctionDecl=test3:18:6 (Definition)
-// CHECK: Punctuation: "{" [18:19 - 18:20] CompoundStmt=
-// CHECK: Identifier: "s2" [19:3 - 19:5] DeclRefExpr=s2:18:15
-// CHECK: Punctuation: "->" [19:5 - 19:7] DeclRefExpr=operator->:17:17
-// CHECK: Identifier: "f" [19:7 - 19:8] MemberRefExpr=f:16:18
-// CHECK: Punctuation: "(" [19:8 - 19:9] CallExpr=f:16:18
-// CHECK: Punctuation: ")" [19:9 - 19:10] CallExpr=f:16:18
-// CHECK: Punctuation: ";" [19:10 - 19:11] CompoundStmt=
-// CHECK: Identifier: "X" [20:3 - 20:4] TypeRef=struct X:7:8
-// CHECK: Identifier: "foo" [20:5 - 20:8] VarDecl=foo:20:5 (Definition)
-// CHECK: Punctuation: ";" [20:8 - 20:9] DeclStmt=
-// CHECK: Punctuation: "}" [21:1 - 21:2] CompoundStmt=
-// CHECK: Keyword: "template" [23:1 - 23:9] ClassTemplate=TS:24:8 (Definition)
-// CHECK: Punctuation: "<" [23:10 - 23:11] ClassTemplate=TS:24:8 (Definition)
-// CHECK: Keyword: "bool" [23:11 - 23:15] NonTypeTemplateParameter=tfn:23:18 (Definition)
-// CHECK: Punctuation: "(" [23:16 - 23:17] NonTypeTemplateParameter=tfn:23:18 (Definition)
-// CHECK: Punctuation: "*" [23:17 - 23:18] NonTypeTemplateParameter=tfn:23:18 (Definition)
-// CHECK: Identifier: "tfn" [23:18 - 23:21] NonTypeTemplateParameter=tfn:23:18 (Definition)
-// CHECK: Punctuation: ")" [23:21 - 23:22] NonTypeTemplateParameter=tfn:23:18 (Definition)
-// CHECK: Punctuation: "(" [23:22 - 23:23] NonTypeTemplateParameter=tfn:23:18 (Definition)
-// CHECK: Identifier: "X" [23:23 - 23:24] TypeRef=struct X:7:8
-// CHECK: Punctuation: "*" [23:24 - 23:25] ParmDecl=:23:25 (Definition)
-// CHECK: Punctuation: ")" [23:25 - 23:26] ParmDecl=:23:25 (Definition)
-// CHECK: Punctuation: ">" [23:26 - 23:27] ClassTemplate=TS:24:8 (Definition)
-// CHECK: Keyword: "struct" [24:1 - 24:7] ClassTemplate=TS:24:8 (Definition)
-// CHECK: Identifier: "TS" [24:8 - 24:10] ClassTemplate=TS:24:8 (Definition)
-// CHECK: Punctuation: "{" [24:11 - 24:12] ClassTemplate=TS:24:8 (Definition)
-// CHECK: Keyword: "void" [25:3 - 25:7] CXXMethod=foo:25:8
-// CHECK: Identifier: "foo" [25:8 - 25:11] CXXMethod=foo:25:8
-// CHECK: Punctuation: "(" [25:11 - 25:12] CXXMethod=foo:25:8
-// CHECK: Punctuation: ")" [25:12 - 25:13] CXXMethod=foo:25:8
-// CHECK: Punctuation: ";" [25:13 - 25:14] ClassTemplate=TS:24:8 (Definition)
-// CHECK: Punctuation: "}" [26:1 - 26:2] ClassTemplate=TS:24:8 (Definition)
-// CHECK: Punctuation: ";" [26:2 - 26:3]
-// CHECK: Keyword: "template" [28:1 - 28:9] CXXMethod=foo:29:15 (Definition)
-// CHECK: Punctuation: "<" [28:10 - 28:11] CXXMethod=foo:29:15 (Definition)
-// CHECK: Keyword: "bool" [28:11 - 28:15] NonTypeTemplateParameter=tfn:28:18 (Definition)
-// CHECK: Punctuation: "(" [28:16 - 28:17] NonTypeTemplateParameter=tfn:28:18 (Definition)
-// CHECK: Punctuation: "*" [28:17 - 28:18] NonTypeTemplateParameter=tfn:28:18 (Definition)
-// CHECK: Identifier: "tfn" [28:18 - 28:21] NonTypeTemplateParameter=tfn:28:18 (Definition)
-// CHECK: Punctuation: ")" [28:21 - 28:22] NonTypeTemplateParameter=tfn:28:18 (Definition)
-// CHECK: Punctuation: "(" [28:22 - 28:23] NonTypeTemplateParameter=tfn:28:18 (Definition)
-// CHECK: Identifier: "X" [28:23 - 28:24] TypeRef=struct X:7:8
-// CHECK: Punctuation: "*" [28:24 - 28:25] ParmDecl=:28:25 (Definition)
-// CHECK: Punctuation: ")" [28:25 - 28:26] ParmDecl=:28:25 (Definition)
-// CHECK: Punctuation: ">" [28:26 - 28:27] CXXMethod=foo:29:15 (Definition)
-// CHECK: Keyword: "void" [29:1 - 29:5] CXXMethod=foo:29:15 (Definition)
-// CHECK: Identifier: "TS" [29:6 - 29:8] TemplateRef=TS:24:8
-// CHECK: Punctuation: "<" [29:8 - 29:9] CXXMethod=foo:29:15 (Definition)
-// CHECK: Identifier: "tfn" [29:9 - 29:12] DeclRefExpr=tfn:28:18
-// CHECK: Punctuation: ">" [29:12 - 29:13] CXXMethod=foo:29:15 (Definition)
-// CHECK: Punctuation: "::" [29:13 - 29:15] CXXMethod=foo:29:15 (Definition)
-// CHECK: Identifier: "foo" [29:15 - 29:18] CXXMethod=foo:29:15 (Definition)
-// CHECK: Punctuation: "(" [29:18 - 29:19] CXXMethod=foo:29:15 (Definition)
-// CHECK: Punctuation: ")" [29:19 - 29:20] CXXMethod=foo:29:15 (Definition)
-// CHECK: Punctuation: "{" [29:21 - 29:22] CompoundStmt=
-// CHECK: Punctuation: "}" [29:22 - 29:23] CompoundStmt=

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-tokens.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,576 +0,0 @@
- at interface Foo
-- (int)compare:(Foo*)other;
- at end
-
- at implementation Foo
-- (int)compare:(Foo*)other {
-  return 0;
-  (void)@encode(Foo);
-}
- at end
-
-// From <rdar://problem/7971430>, the 'barType' referenced in the ivar
-// declarations should be annotated as TypeRefs.
-typedef int * barType;
- at interface Bar
-{
-    barType iVar;
-    barType iVar1, iVar2;
-}
- at end
- at implementation Bar
-- (void) method
-{
-    barType local = iVar;
-}
- at end
-
-// From <rdar://problem/7967123>.  The ranges for attributes are not
-// currently stored, causing most of the tokens to be falsely annotated.
-// Since there are no source ranges for attributes, we currently don't
-// annotate them.
- at interface IBActionTests
-- (IBAction) actionMethod:(in id)arg;
-- (void)foo:(int)x;
- at end
-extern int ibaction_test(void);
- at implementation IBActionTests
-- (IBAction) actionMethod:(in id)arg
-{
-    ibaction_test();
-    [self foo:0];
-}
-- (void) foo:(int)x
-{
-  (void) x;
-}
- at end
-
-// From <rdar://problem/7961995>.  Essentially the same issue as 7967123,
-// but impacting code marked as IBOutlets.
- at interface IBOutletTests
-{
-    IBOutlet char * anOutlet;
-}
-- (IBAction) actionMethod:(id)arg;
- at property IBOutlet int * aPropOutlet;
- at end
-
-// From <rdar://problem/7974151>.  The first 'foo:' wasn't being annotated as 
-// being part of the Objective-C message expression since the argument
-// was expanded from a macro.
-
-#define VAL 0
-
- at interface R7974151
-- (int) foo:(int)arg;
-- (int) method;
- at end
-
- at implementation R7974151
-- (int) foo:(int)arg {
-  return arg;
-}
-- (int) method
-{
-    int local = [self foo:VAL];
-    int second = [self foo:0];
-    return local;
-}
-- (int)othermethod:(IBOutletTests *)ibt {
-  return *ibt.aPropOutlet;
-}
- at end
-
- at protocol Proto @end
-
-void f() {
-  (void)@protocol(Proto);
-}
-
-// <rdar://problem/8595462> - Properly annotate functions and variables
-// declared within an @implementation.
- at class Rdar8595462_A;
- at interface Rdar8595462_B
- at end
-
- at implementation Rdar8595462_B
-Rdar8595462_A * Rdar8595462_aFunction() {
-  Rdar8595462_A * localVar = 0;
-  return localVar;
-}
-static Rdar8595462_A * Rdar8595462_staticVar;
- at end
-
-// <rdar://problem/8595386> Issues doing syntax coloring of properties
- at interface Rdar8595386 {
-  Foo *_foo;
-}
-
- at property (readonly, copy) Foo *foo;
- at property (readonly) Foo *foo2;
- at end
-
- at implementation Rdar8595386
- at synthesize foo = _foo;
- at dynamic foo2;
- at end
-
-// <rdar://problem/8778404> Blocks don't get colored if annotation starts within the block itself
- at interface Rdar8778404
- at end
-
- at implementation Rdar8778404
-- (int)blah:(int)arg, ... { return arg; }
-- (int)blarg:(int)x {
-  (void)^ {
-    int result = [self blah:5, x];
-    Rdar8778404 *a = self;
-    return 0;
-  };
-}
- at end
-
- at interface Rdar8062781
-+ (Foo*)getB;
- at property (readonly, nonatomic) Foo *blah;
- at property (readonly, atomic) Foo *abah;
- at end
-
- at interface rdar9535717 {
-  __weak Foo *foo;
-}
- at end
-
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:118:1 %s -DIBOutlet='__attribute__((iboutlet))' -DIBAction='void)__attribute__((ibaction)' | FileCheck %s
-// CHECK: Punctuation: "@" [1:1 - 1:2] ObjCInterfaceDecl=Foo:1:12
-// CHECK: Keyword: "interface" [1:2 - 1:11] ObjCInterfaceDecl=Foo:1:12
-// CHECK: Identifier: "Foo" [1:12 - 1:15] ObjCInterfaceDecl=Foo:1:12
-// CHECK: Punctuation: "-" [2:1 - 2:2] ObjCInstanceMethodDecl=compare::2:8
-// CHECK: Punctuation: "(" [2:3 - 2:4] ObjCInstanceMethodDecl=compare::2:8
-// CHECK: Keyword: "int" [2:4 - 2:7] ObjCInstanceMethodDecl=compare::2:8
-// CHECK: Punctuation: ")" [2:7 - 2:8] ObjCInstanceMethodDecl=compare::2:8
-// CHECK: Identifier: "compare" [2:8 - 2:15] ObjCInstanceMethodDecl=compare::2:8
-// CHECK: Punctuation: ":" [2:15 - 2:16] ObjCInstanceMethodDecl=compare::2:8
-// CHECK: Punctuation: "(" [2:16 - 2:17] ObjCInstanceMethodDecl=compare::2:8
-// CHECK: Identifier: "Foo" [2:17 - 2:20] ObjCClassRef=Foo:1:12
-// CHECK: Punctuation: "*" [2:20 - 2:21] ParmDecl=other:2:22 (Definition)
-// CHECK: Punctuation: ")" [2:21 - 2:22] ParmDecl=other:2:22 (Definition)
-// CHECK: Identifier: "other" [2:22 - 2:27] ParmDecl=other:2:22 (Definition)
-// CHECK: Punctuation: ";" [2:27 - 2:28] ObjCInstanceMethodDecl=compare::2:8
-// CHECK: Punctuation: "@" [3:1 - 3:2] ObjCInterfaceDecl=Foo:1:12
-// CHECK: Keyword: "end" [3:2 - 3:5] ObjCInterfaceDecl=Foo:1:12
-// CHECK: Punctuation: "@" [5:1 - 5:2] ObjCImplementationDecl=Foo:5:17 (Definition)
-// CHECK: Keyword: "implementation" [5:2 - 5:16] ObjCImplementationDecl=Foo:5:17 (Definition)
-// CHECK: Identifier: "Foo" [5:17 - 5:20] ObjCImplementationDecl=Foo:5:17 (Definition)
-// CHECK: Punctuation: "-" [6:1 - 6:2] ObjCInstanceMethodDecl=compare::6:8 (Definition)
-// CHECK: Punctuation: "(" [6:3 - 6:4] ObjCInstanceMethodDecl=compare::6:8 (Definition)
-// CHECK: Keyword: "int" [6:4 - 6:7] ObjCInstanceMethodDecl=compare::6:8 (Definition)
-// CHECK: Punctuation: ")" [6:7 - 6:8] ObjCInstanceMethodDecl=compare::6:8 (Definition)
-// CHECK: Identifier: "compare" [6:8 - 6:15] ObjCInstanceMethodDecl=compare::6:8 (Definition)
-// CHECK: Punctuation: ":" [6:15 - 6:16] ObjCInstanceMethodDecl=compare::6:8 (Definition)
-// CHECK: Punctuation: "(" [6:16 - 6:17] ObjCInstanceMethodDecl=compare::6:8 (Definition)
-// CHECK: Identifier: "Foo" [6:17 - 6:20] ObjCClassRef=Foo:1:12
-// CHECK: Punctuation: "*" [6:20 - 6:21] ParmDecl=other:6:22 (Definition)
-// CHECK: Punctuation: ")" [6:21 - 6:22] ParmDecl=other:6:22 (Definition)
-// CHECK: Identifier: "other" [6:22 - 6:27] ParmDecl=other:6:22 (Definition)
-// CHECK: Punctuation: "{" [6:28 - 6:29] CompoundStmt=
-// CHECK: Keyword: "return" [7:3 - 7:9] ReturnStmt=
-// CHECK: Literal: "0" [7:10 - 7:11] IntegerLiteral=
-// CHECK: Punctuation: ";" [7:11 - 7:12] CompoundStmt=
-// CHECK: Punctuation: "(" [8:3 - 8:4] CStyleCastExpr=
-// CHECK: Keyword: "void" [8:4 - 8:8] CStyleCastExpr=
-// CHECK: Punctuation: ")" [8:8 - 8:9] CStyleCastExpr=
-// CHECK: Punctuation: "@" [8:9 - 8:10] ObjCEncodeExpr=
-// CHECK: Keyword: "encode" [8:10 - 8:16] ObjCEncodeExpr=
-// CHECK: Punctuation: "(" [8:16 - 8:17] ObjCEncodeExpr=
-// CHECK: Identifier: "Foo" [8:17 - 8:20] ObjCClassRef=Foo:1:12
-// CHECK: Punctuation: ")" [8:20 - 8:21] ObjCEncodeExpr=
-// CHECK: Punctuation: ";" [8:21 - 8:22] CompoundStmt=
-// CHECK: Punctuation: "}" [9:1 - 9:2] CompoundStmt=
-// CHECK: Punctuation: "@" [10:1 - 10:2] ObjCImplementationDecl=Foo:5:17 (Definition)
-// CHECK: Keyword: "end" [10:2 - 10:5]
-// CHECK: Keyword: "typedef" [14:1 - 14:8]
-// CHECK: Keyword: "int" [14:9 - 14:12]
-// CHECK: Punctuation: "*" [14:13 - 14:14]
-// CHECK: Identifier: "barType" [14:15 - 14:22] TypedefDecl=barType:14:15 (Definition)
-// CHECK: Punctuation: ";" [14:22 - 14:23]
-// CHECK: Punctuation: "@" [15:1 - 15:2] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Keyword: "interface" [15:2 - 15:11] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Identifier: "Bar" [15:12 - 15:15] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Punctuation: "{" [16:1 - 16:2] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Identifier: "barType" [17:5 - 17:12] TypeRef=barType:14:15
-// CHECK: Identifier: "iVar" [17:13 - 17:17] ObjCIvarDecl=iVar:17:13 (Definition)
-// CHECK: Punctuation: ";" [17:17 - 17:18] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Identifier: "barType" [18:5 - 18:12] TypeRef=barType:14:15
-// CHECK: Identifier: "iVar1" [18:13 - 18:18] ObjCIvarDecl=iVar1:18:13 (Definition)
-// CHECK: Punctuation: "," [18:18 - 18:19] ObjCIvarDecl=iVar2:18:20 (Definition)
-// CHECK: Identifier: "iVar2" [18:20 - 18:25] ObjCIvarDecl=iVar2:18:20 (Definition)
-// CHECK: Punctuation: ";" [18:25 - 18:26] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Punctuation: "}" [19:1 - 19:2] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Punctuation: "@" [20:1 - 20:2] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Keyword: "end" [20:2 - 20:5] ObjCInterfaceDecl=Bar:15:12
-// CHECK: Punctuation: "@" [21:1 - 21:2] ObjCImplementationDecl=Bar:21:17 (Definition)
-// CHECK: Keyword: "implementation" [21:2 - 21:16] ObjCImplementationDecl=Bar:21:17 (Definition)
-// CHECK: Identifier: "Bar" [21:17 - 21:20] ObjCImplementationDecl=Bar:21:17 (Definition)
-// CHECK: Punctuation: "-" [22:1 - 22:2] ObjCInstanceMethodDecl=method:22:10 (Definition)
-// CHECK: Punctuation: "(" [22:3 - 22:4] ObjCInstanceMethodDecl=method:22:10 (Definition)
-// CHECK: Keyword: "void" [22:4 - 22:8] ObjCInstanceMethodDecl=method:22:10 (Definition)
-// CHECK: Punctuation: ")" [22:8 - 22:9] ObjCInstanceMethodDecl=method:22:10 (Definition)
-// CHECK: Identifier: "method" [22:10 - 22:16] ObjCInstanceMethodDecl=method:22:10 (Definition)
-// CHECK: Punctuation: "{" [23:1 - 23:2] CompoundStmt=
-// CHECK: Identifier: "barType" [24:5 - 24:12] TypeRef=barType:14:15
-// CHECK: Identifier: "local" [24:13 - 24:18] VarDecl=local:24:13 (Definition)
-// CHECK: Punctuation: "=" [24:19 - 24:20] VarDecl=local:24:13 (Definition)
-// CHECK: Identifier: "iVar" [24:21 - 24:25] MemberRefExpr=iVar:17:13
-// CHECK: Punctuation: ";" [24:25 - 24:26] DeclStmt=
-// CHECK: Punctuation: "}" [25:1 - 25:2] CompoundStmt=
-// CHECK: Punctuation: "@" [26:1 - 26:2] ObjCImplementationDecl=Bar:21:17 (Definition)
-// CHECK: Keyword: "end" [26:2 - 26:5]
-// CHECK: Punctuation: "@" [32:1 - 32:2] ObjCInterfaceDecl=IBActionTests:32:12
-// CHECK: Keyword: "interface" [32:2 - 32:11] ObjCInterfaceDecl=IBActionTests:32:12
-// CHECK: Identifier: "IBActionTests" [32:12 - 32:25] ObjCInterfaceDecl=IBActionTests:32:12
-// CHECK: Punctuation: "-" [33:1 - 33:2] ObjCInstanceMethodDecl=actionMethod::33:1
-// CHECK: Punctuation: "(" [33:3 - 33:4] ObjCInstanceMethodDecl=actionMethod::33:1
-// CHECK: Identifier: "IBAction" [33:4 - 33:12] macro expansion=IBAction
-// CHECK: Punctuation: ")" [33:12 - 33:13] ObjCInstanceMethodDecl=actionMethod::33:1
-// CHECK: Identifier: "actionMethod" [33:14 - 33:26] ObjCInstanceMethodDecl=actionMethod::33:1
-// CHECK: Punctuation: ":" [33:26 - 33:27] ObjCInstanceMethodDecl=actionMethod::33:1
-// CHECK: Punctuation: "(" [33:27 - 33:28] ObjCInstanceMethodDecl=actionMethod::33:1
-// CHECK: Keyword: "in" [33:28 - 33:30] ObjCInstanceMethodDecl=actionMethod::33:1
-// CHECK: Identifier: "id" [33:31 - 33:33] TypeRef=id:0:0
-// CHECK: Punctuation: ")" [33:33 - 33:34] ParmDecl=arg:33:34 (Definition)
-// CHECK: Identifier: "arg" [33:34 - 33:37] ParmDecl=arg:33:34 (Definition)
-// CHECK: Punctuation: ";" [33:37 - 33:38] ObjCInstanceMethodDecl=actionMethod::33:1
-// CHECK: Punctuation: "-" [34:1 - 34:2] ObjCInstanceMethodDecl=foo::34:9
-// CHECK: Punctuation: "(" [34:3 - 34:4] ObjCInstanceMethodDecl=foo::34:9
-// CHECK: Keyword: "void" [34:4 - 34:8] ObjCInstanceMethodDecl=foo::34:9
-// CHECK: Punctuation: ")" [34:8 - 34:9] ObjCInstanceMethodDecl=foo::34:9
-// CHECK: Identifier: "foo" [34:9 - 34:12] ObjCInstanceMethodDecl=foo::34:9
-// CHECK: Punctuation: ":" [34:12 - 34:13] ObjCInstanceMethodDecl=foo::34:9
-// CHECK: Punctuation: "(" [34:13 - 34:14] ObjCInstanceMethodDecl=foo::34:9
-// CHECK: Keyword: "int" [34:14 - 34:17] ParmDecl=x:34:18 (Definition)
-// CHECK: Punctuation: ")" [34:17 - 34:18] ParmDecl=x:34:18 (Definition)
-// CHECK: Identifier: "x" [34:18 - 34:19] ParmDecl=x:34:18 (Definition)
-// CHECK: Punctuation: ";" [34:19 - 34:20] ObjCInstanceMethodDecl=foo::34:9
-// CHECK: Punctuation: "@" [35:1 - 35:2] ObjCInterfaceDecl=IBActionTests:32:12
-// CHECK: Keyword: "end" [35:2 - 35:5] ObjCInterfaceDecl=IBActionTests:32:12
-// CHECK: Keyword: "extern" [36:1 - 36:7]
-// CHECK: Keyword: "int" [36:8 - 36:11] FunctionDecl=ibaction_test:36:12
-// CHECK: Identifier: "ibaction_test" [36:12 - 36:25] FunctionDecl=ibaction_test:36:12
-// CHECK: Punctuation: "(" [36:25 - 36:26] FunctionDecl=ibaction_test:36:12
-// CHECK: Keyword: "void" [36:26 - 36:30] FunctionDecl=ibaction_test:36:12
-// CHECK: Punctuation: ")" [36:30 - 36:31] FunctionDecl=ibaction_test:36:12
-// CHECK: Punctuation: ";" [36:31 - 36:32]
-// CHECK: Punctuation: "@" [37:1 - 37:2] ObjCImplementationDecl=IBActionTests:37:17 (Definition)
-// CHECK: Keyword: "implementation" [37:2 - 37:16] ObjCImplementationDecl=IBActionTests:37:17 (Definition)
-// CHECK: Identifier: "IBActionTests" [37:17 - 37:30] ObjCImplementationDecl=IBActionTests:37:17 (Definition)
-// CHECK: Punctuation: "-" [38:1 - 38:2] ObjCInstanceMethodDecl=actionMethod::38:14 (Definition)
-// CHECK: Punctuation: "(" [38:3 - 38:4] ObjCInstanceMethodDecl=actionMethod::38:14 (Definition)
-// CHECK: Identifier: "IBAction" [38:4 - 38:12] macro expansion=IBAction
-// CHECK: Punctuation: ")" [38:12 - 38:13] ObjCInstanceMethodDecl=actionMethod::38:14 (Definition)
-// CHECK: Identifier: "actionMethod" [38:14 - 38:26] ObjCInstanceMethodDecl=actionMethod::38:14 (Definition)
-// CHECK: Punctuation: ":" [38:26 - 38:27] ObjCInstanceMethodDecl=actionMethod::38:14 (Definition)
-// CHECK: Keyword: "in" [38:28 - 38:30] ObjCInstanceMethodDecl=actionMethod::38:14 (Definition)
-// CHECK: Identifier: "id" [38:31 - 38:33] TypeRef=id:0:0
-// CHECK: Punctuation: ")" [38:33 - 38:34] ParmDecl=arg:38:34 (Definition)
-// CHECK: Identifier: "arg" [38:34 - 38:37] ParmDecl=arg:38:34 (Definition)
-// CHECK: Punctuation: "{" [39:1 - 39:2] CompoundStmt=
-// CHECK: Identifier: "ibaction_test" [40:5 - 40:18] DeclRefExpr=ibaction_test:36:12
-// CHECK: Punctuation: "(" [40:18 - 40:19] CallExpr=ibaction_test:36:12
-// CHECK: Punctuation: ")" [40:19 - 40:20] CallExpr=ibaction_test:36:12
-// CHECK: Punctuation: ";" [40:20 - 40:21] CompoundStmt=
-// CHECK: Punctuation: "[" [41:5 - 41:6] ObjCMessageExpr=foo::34:9
-// CHECK: Identifier: "self" [41:6 - 41:10] ObjCSelfExpr=self:0:0
-// CHECK: Identifier: "foo" [41:11 - 41:14] ObjCMessageExpr=foo::34:9
-// CHECK: Punctuation: ":" [41:14 - 41:15] ObjCMessageExpr=foo::34:9
-// CHECK: Literal: "0" [41:15 - 41:16] IntegerLiteral=
-// CHECK: Punctuation: "]" [41:16 - 41:17] ObjCMessageExpr=foo::34:9
-// CHECK: Punctuation: ";" [41:17 - 41:18] CompoundStmt=
-// CHECK: Punctuation: "}" [42:1 - 42:2] CompoundStmt=
-// CHECK: Punctuation: "-" [43:1 - 43:2] ObjCInstanceMethodDecl=foo::43:10 (Definition)
-// CHECK: Punctuation: "(" [43:3 - 43:4] ObjCInstanceMethodDecl=foo::43:10 (Definition)
-// CHECK: Keyword: "void" [43:4 - 43:8] ObjCInstanceMethodDecl=foo::43:10 (Definition)
-// CHECK: Punctuation: ")" [43:8 - 43:9] ObjCInstanceMethodDecl=foo::43:10 (Definition)
-// CHECK: Identifier: "foo" [43:10 - 43:13] ObjCInstanceMethodDecl=foo::43:10 (Definition)
-// CHECK: Punctuation: ":" [43:13 - 43:14] ObjCInstanceMethodDecl=foo::43:10 (Definition)
-// CHECK: Punctuation: "(" [43:14 - 43:15] ObjCInstanceMethodDecl=foo::43:10 (Definition)
-// CHECK: Keyword: "int" [43:15 - 43:18] ParmDecl=x:43:19 (Definition)
-// CHECK: Punctuation: ")" [43:18 - 43:19] ParmDecl=x:43:19 (Definition)
-// CHECK: Identifier: "x" [43:19 - 43:20] ParmDecl=x:43:19 (Definition)
-// CHECK: Punctuation: "{" [44:1 - 44:2] CompoundStmt=
-// CHECK: Punctuation: "(" [45:3 - 45:4] CStyleCastExpr=
-// CHECK: Keyword: "void" [45:4 - 45:8] CStyleCastExpr=
-// CHECK: Punctuation: ")" [45:8 - 45:9] CStyleCastExpr=
-// CHECK: Identifier: "x" [45:10 - 45:11] DeclRefExpr=x:43:19
-// CHECK: Punctuation: ";" [45:11 - 45:12] CompoundStmt=
-// CHECK: Punctuation: "}" [46:1 - 46:2] CompoundStmt=
-// CHECK: Punctuation: "@" [47:1 - 47:2] ObjCImplementationDecl=IBActionTests:37:17 (Definition)
-// CHECK: Keyword: "end" [47:2 - 47:5]
-// CHECK: Punctuation: "@" [51:1 - 51:2] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Keyword: "interface" [51:2 - 51:11] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Identifier: "IBOutletTests" [51:12 - 51:25] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Punctuation: "{" [52:1 - 52:2] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Identifier: "IBOutlet" [53:5 - 53:13] macro expansion=IBOutlet
-// CHECK: Keyword: "char" [53:14 - 53:18] ObjCIvarDecl=anOutlet:53:21 (Definition)
-// CHECK: Punctuation: "*" [53:19 - 53:20] ObjCIvarDecl=anOutlet:53:21 (Definition)
-// CHECK: Identifier: "anOutlet" [53:21 - 53:29] ObjCIvarDecl=anOutlet:53:21 (Definition)
-// CHECK: Punctuation: ";" [53:29 - 53:30] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Punctuation: "}" [54:1 - 54:2] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Punctuation: "-" [55:1 - 55:2] ObjCInstanceMethodDecl=actionMethod::55:1
-// CHECK: Punctuation: "(" [55:3 - 55:4] ObjCInstanceMethodDecl=actionMethod::55:1
-// CHECK: Identifier: "IBAction" [55:4 - 55:12] macro expansion=IBAction
-// CHECK: Punctuation: ")" [55:12 - 55:13] ObjCInstanceMethodDecl=actionMethod::55:1
-// CHECK: Identifier: "actionMethod" [55:14 - 55:26] ObjCInstanceMethodDecl=actionMethod::55:1
-// CHECK: Punctuation: ":" [55:26 - 55:27] ObjCInstanceMethodDecl=actionMethod::55:1
-// CHECK: Punctuation: "(" [55:27 - 55:28] ObjCInstanceMethodDecl=actionMethod::55:1
-// CHECK: Identifier: "id" [55:28 - 55:30] TypeRef=id:0:0
-// CHECK: Punctuation: ")" [55:30 - 55:31] ParmDecl=arg:55:31 (Definition)
-// CHECK: Identifier: "arg" [55:31 - 55:34] ParmDecl=arg:55:31 (Definition)
-// CHECK: Punctuation: ";" [55:34 - 55:35] ObjCInstanceMethodDecl=actionMethod::55:1
-// CHECK: Punctuation: "@" [56:1 - 56:2] ObjCPropertyDecl=aPropOutlet:56:26
-// CHECK: Keyword: "property" [56:2 - 56:10] ObjCPropertyDecl=aPropOutlet:56:26
-// CHECK: Identifier: "IBOutlet" [56:11 - 56:19] macro expansion=IBOutlet
-// CHECK: Keyword: "int" [56:20 - 56:23] ObjCPropertyDecl=aPropOutlet:56:26
-// CHECK: Punctuation: "*" [56:24 - 56:25] ObjCPropertyDecl=aPropOutlet:56:26
-// CHECK: Identifier: "aPropOutlet" [56:26 - 56:37] ObjCPropertyDecl=aPropOutlet:56:26
-// CHECK: Punctuation: ";" [56:37 - 56:38] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Punctuation: "@" [57:1 - 57:2] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Keyword: "end" [57:2 - 57:5] ObjCInterfaceDecl=IBOutletTests:51:12
-// CHECK: Punctuation: "#" [63:1 - 63:2] preprocessing directive=
-// CHECK: Identifier: "define" [63:2 - 63:8] preprocessing directive=
-// CHECK: Identifier: "VAL" [63:9 - 63:12] macro definition=VAL
-// CHECK: Literal: "0" [63:13 - 63:14] macro definition=VAL
-// CHECK: Punctuation: "@" [65:1 - 65:2] ObjCInterfaceDecl=R7974151:65:12
-// CHECK: Keyword: "interface" [65:2 - 65:11] ObjCInterfaceDecl=R7974151:65:12
-// CHECK: Identifier: "R7974151" [65:12 - 65:20] ObjCInterfaceDecl=R7974151:65:12
-// CHECK: Punctuation: "-" [66:1 - 66:2] ObjCInstanceMethodDecl=foo::66:9
-// CHECK: Punctuation: "(" [66:3 - 66:4] ObjCInstanceMethodDecl=foo::66:9
-// CHECK: Keyword: "int" [66:4 - 66:7] ObjCInstanceMethodDecl=foo::66:9
-// CHECK: Punctuation: ")" [66:7 - 66:8] ObjCInstanceMethodDecl=foo::66:9
-// CHECK: Identifier: "foo" [66:9 - 66:12] ObjCInstanceMethodDecl=foo::66:9
-// CHECK: Punctuation: ":" [66:12 - 66:13] ObjCInstanceMethodDecl=foo::66:9
-// CHECK: Punctuation: "(" [66:13 - 66:14] ObjCInstanceMethodDecl=foo::66:9
-// CHECK: Keyword: "int" [66:14 - 66:17] ParmDecl=arg:66:18 (Definition)
-// CHECK: Punctuation: ")" [66:17 - 66:18] ParmDecl=arg:66:18 (Definition)
-// CHECK: Identifier: "arg" [66:18 - 66:21] ParmDecl=arg:66:18 (Definition)
-// CHECK: Punctuation: ";" [66:21 - 66:22] ObjCInstanceMethodDecl=foo::66:9
-// CHECK: Punctuation: "-" [67:1 - 67:2] ObjCInstanceMethodDecl=method:67:9
-// CHECK: Punctuation: "(" [67:3 - 67:4] ObjCInstanceMethodDecl=method:67:9
-// CHECK: Keyword: "int" [67:4 - 67:7] ObjCInstanceMethodDecl=method:67:9
-// CHECK: Punctuation: ")" [67:7 - 67:8] ObjCInstanceMethodDecl=method:67:9
-// CHECK: Identifier: "method" [67:9 - 67:15] ObjCInstanceMethodDecl=method:67:9
-// CHECK: Punctuation: ";" [67:15 - 67:16] ObjCInstanceMethodDecl=method:67:9
-// CHECK: Punctuation: "@" [68:1 - 68:2] ObjCInterfaceDecl=R7974151:65:12
-// CHECK: Keyword: "end" [68:2 - 68:5] ObjCInterfaceDecl=R7974151:65:12
-// CHECK: Punctuation: "@" [70:1 - 70:2] ObjCImplementationDecl=R7974151:70:17 (Definition)
-// CHECK: Keyword: "implementation" [70:2 - 70:16] ObjCImplementationDecl=R7974151:70:17 (Definition)
-// CHECK: Identifier: "R7974151" [70:17 - 70:25] ObjCImplementationDecl=R7974151:70:17 (Definition)
-// CHECK: Punctuation: "-" [71:1 - 71:2] ObjCInstanceMethodDecl=foo::71:9 (Definition)
-// CHECK: Punctuation: "(" [71:3 - 71:4] ObjCInstanceMethodDecl=foo::71:9 (Definition)
-// CHECK: Keyword: "int" [71:4 - 71:7] ObjCInstanceMethodDecl=foo::71:9 (Definition)
-// CHECK: Punctuation: ")" [71:7 - 71:8] ObjCInstanceMethodDecl=foo::71:9 (Definition)
-// CHECK: Identifier: "foo" [71:9 - 71:12] ObjCInstanceMethodDecl=foo::71:9 (Definition)
-// CHECK: Punctuation: ":" [71:12 - 71:13] ObjCInstanceMethodDecl=foo::71:9 (Definition)
-// CHECK: Punctuation: "(" [71:13 - 71:14] ObjCInstanceMethodDecl=foo::71:9 (Definition)
-// CHECK: Keyword: "int" [71:14 - 71:17] ParmDecl=arg:71:18 (Definition)
-// CHECK: Punctuation: ")" [71:17 - 71:18] ParmDecl=arg:71:18 (Definition)
-// CHECK: Identifier: "arg" [71:18 - 71:21] ParmDecl=arg:71:18 (Definition)
-// CHECK: Punctuation: "{" [71:22 - 71:23] CompoundStmt=
-// CHECK: Keyword: "return" [72:3 - 72:9] ReturnStmt=
-// CHECK: Identifier: "arg" [72:10 - 72:13] DeclRefExpr=arg:71:18
-// CHECK: Punctuation: ";" [72:13 - 72:14] CompoundStmt=
-// CHECK: Punctuation: "}" [73:1 - 73:2] CompoundStmt=
-// CHECK: Punctuation: "-" [74:1 - 74:2] ObjCInstanceMethodDecl=method:74:9 (Definition)
-// CHECK: Punctuation: "(" [74:3 - 74:4] ObjCInstanceMethodDecl=method:74:9 (Definition)
-// CHECK: Keyword: "int" [74:4 - 74:7] ObjCInstanceMethodDecl=method:74:9 (Definition)
-// CHECK: Punctuation: ")" [74:7 - 74:8] ObjCInstanceMethodDecl=method:74:9 (Definition)
-// CHECK: Identifier: "method" [74:9 - 74:15] ObjCInstanceMethodDecl=method:74:9 (Definition)
-// CHECK: Punctuation: "{" [75:1 - 75:2] CompoundStmt=
-// CHECK: Keyword: "int" [76:5 - 76:8] VarDecl=local:76:9 (Definition)
-// CHECK: Identifier: "local" [76:9 - 76:14] VarDecl=local:76:9 (Definition)
-// CHECK: Punctuation: "=" [76:15 - 76:16] VarDecl=local:76:9 (Definition)
-// CHECK: Punctuation: "[" [76:17 - 76:18] ObjCMessageExpr=foo::66:9
-// CHECK: Identifier: "self" [76:18 - 76:22] ObjCSelfExpr=self:0:0
-// CHECK: Identifier: "foo" [76:23 - 76:26] ObjCMessageExpr=foo::66:9
-// CHECK: Punctuation: ":" [76:26 - 76:27] ObjCMessageExpr=foo::66:9
-// CHECK: Identifier: "VAL" [76:27 - 76:30] macro expansion=VAL:63:9
-// CHECK: Punctuation: "]" [76:30 - 76:31] ObjCMessageExpr=foo::66:9
-// CHECK: Punctuation: ";" [76:31 - 76:32] DeclStmt=
-// CHECK: Keyword: "int" [77:5 - 77:8] VarDecl=second:77:9 (Definition)
-// CHECK: Identifier: "second" [77:9 - 77:15] VarDecl=second:77:9 (Definition)
-// CHECK: Punctuation: "=" [77:16 - 77:17] VarDecl=second:77:9 (Definition)
-// CHECK: Punctuation: "[" [77:18 - 77:19] ObjCMessageExpr=foo::66:9
-// CHECK: Identifier: "self" [77:19 - 77:23] ObjCSelfExpr=self:0:0
-// CHECK: Identifier: "foo" [77:24 - 77:27] ObjCMessageExpr=foo::66:9
-// CHECK: Punctuation: ":" [77:27 - 77:28] ObjCMessageExpr=foo::66:9
-// CHECK: Literal: "0" [77:28 - 77:29] IntegerLiteral=
-// CHECK: Punctuation: "]" [77:29 - 77:30] ObjCMessageExpr=foo::66:9
-// CHECK: Punctuation: ";" [77:30 - 77:31] DeclStmt=
-// CHECK: Keyword: "return" [78:5 - 78:11] ReturnStmt=
-// CHECK: Identifier: "local" [78:12 - 78:17] DeclRefExpr=local:76:9
-// CHECK: Punctuation: ";" [78:17 - 78:18] CompoundStmt=
-// CHECK: Punctuation: "}" [79:1 - 79:2] CompoundStmt=
-// CHECK: Punctuation: "-" [80:1 - 80:2] ObjCInstanceMethodDecl=othermethod::80:8 (Definition)
-// CHECK: Punctuation: "(" [80:3 - 80:4] ObjCInstanceMethodDecl=othermethod::80:8 (Definition)
-// CHECK: Keyword: "int" [80:4 - 80:7] ObjCInstanceMethodDecl=othermethod::80:8 (Definition)
-// CHECK: Punctuation: ")" [80:7 - 80:8] ObjCInstanceMethodDecl=othermethod::80:8 (Definition)
-// CHECK: Identifier: "othermethod" [80:8 - 80:19] ObjCInstanceMethodDecl=othermethod::80:8 (Definition)
-// CHECK: Punctuation: ":" [80:19 - 80:20] ObjCInstanceMethodDecl=othermethod::80:8 (Definition)
-// CHECK: Punctuation: "(" [80:20 - 80:21] ObjCInstanceMethodDecl=othermethod::80:8 (Definition)
-// CHECK: Identifier: "IBOutletTests" [80:21 - 80:34] ObjCClassRef=IBOutletTests:51:12
-// CHECK: Punctuation: "*" [80:35 - 80:36] ParmDecl=ibt:80:37 (Definition)
-// CHECK: Punctuation: ")" [80:36 - 80:37] ParmDecl=ibt:80:37 (Definition)
-// CHECK: Identifier: "ibt" [80:37 - 80:40] ParmDecl=ibt:80:37 (Definition)
-// CHECK: Punctuation: "{" [80:41 - 80:42] CompoundStmt=
-// CHECK: Keyword: "return" [81:3 - 81:9] ReturnStmt=
-// CHECK: Punctuation: "*" [81:10 - 81:11] UnaryOperator=
-// CHECK: Identifier: "ibt" [81:11 - 81:14] DeclRefExpr=ibt:80:37
-// CHECK: Punctuation: "." [81:14 - 81:15] MemberRefExpr=aPropOutlet:56:26
-// CHECK: Identifier: "aPropOutlet" [81:15 - 81:26] MemberRefExpr=aPropOutlet:56:26
-// CHECK: Punctuation: ";" [81:26 - 81:27] CompoundStmt=
-// CHECK: Punctuation: "}" [82:1 - 82:2] CompoundStmt=
-// CHECK: Punctuation: "@" [83:1 - 83:2] ObjCImplementationDecl=R7974151:70:17 (Definition)
-// CHECK: Keyword: "end" [83:2 - 83:5]
-// CHECK: Punctuation: "@" [85:1 - 85:2] ObjCProtocolDecl=Proto:85:11 (Definition)
-// CHECK: Keyword: "protocol" [85:2 - 85:10] ObjCProtocolDecl=Proto:85:11 (Definition)
-// CHECK: Identifier: "Proto" [85:11 - 85:16] ObjCProtocolDecl=Proto:85:11 (Definition)
-// CHECK: Punctuation: "@" [85:17 - 85:18] ObjCProtocolDecl=Proto:85:11 (Definition)
-// CHECK: Keyword: "end" [85:18 - 85:21] ObjCProtocolDecl=Proto:85:11 (Definition)
-// CHECK: Keyword: "void" [87:1 - 87:5] FunctionDecl=f:87:6 (Definition)
-// CHECK: Identifier: "f" [87:6 - 87:7] FunctionDecl=f:87:6 (Definition)
-// CHECK: Punctuation: "(" [87:7 - 87:8] FunctionDecl=f:87:6 (Definition)
-// CHECK: Punctuation: ")" [87:8 - 87:9] FunctionDecl=f:87:6 (Definition)
-// CHECK: Punctuation: "{" [87:10 - 87:11] CompoundStmt=
-// CHECK: Punctuation: "(" [88:3 - 88:4] CStyleCastExpr=
-// CHECK: Keyword: "void" [88:4 - 88:8] CStyleCastExpr=
-// CHECK: Punctuation: ")" [88:8 - 88:9] CStyleCastExpr=
-// CHECK: Punctuation: "@" [88:9 - 88:10] ObjCProtocolExpr=Proto:85:1
-// CHECK: Keyword: "protocol" [88:10 - 88:18] ObjCProtocolExpr=Proto:85:1
-// CHECK: Punctuation: "(" [88:18 - 88:19] ObjCProtocolExpr=Proto:85:1
-// CHECK: Identifier: "Proto" [88:19 - 88:24] ObjCProtocolExpr=Proto:85:1
-// CHECK: Punctuation: ")" [88:24 - 88:25] ObjCProtocolExpr=Proto:85:1
-// CHECK: Punctuation: ";" [88:25 - 88:26] CompoundStmt=
-// CHECK: Punctuation: "}" [89:1 - 89:2] CompoundStmt=
-// CHECK: Punctuation: "@" [93:1 - 93:2] ObjCInterfaceDecl=Rdar8595462_A:93:8
-// CHECK: Keyword: "class" [93:2 - 93:7] ObjCInterfaceDecl=Rdar8595462_A:93:8
-// CHECK: Identifier: "Rdar8595462_A" [93:8 - 93:21] ObjCClassRef=Rdar8595462_A:93:8
-// CHECK: Punctuation: ";" [93:21 - 93:22]
-// CHECK: Punctuation: "@" [94:1 - 94:2] ObjCInterfaceDecl=Rdar8595462_B:94:12
-// CHECK: Keyword: "interface" [94:2 - 94:11] ObjCInterfaceDecl=Rdar8595462_B:94:12
-// CHECK: Identifier: "Rdar8595462_B" [94:12 - 94:25] ObjCInterfaceDecl=Rdar8595462_B:94:12
-// CHECK: Punctuation: "@" [95:1 - 95:2] ObjCInterfaceDecl=Rdar8595462_B:94:12
-// CHECK: Keyword: "end" [95:2 - 95:5] ObjCInterfaceDecl=Rdar8595462_B:94:12
-// CHECK: Punctuation: "@" [97:1 - 97:2] ObjCImplementationDecl=Rdar8595462_B:97:17 (Definition)
-// CHECK: Keyword: "implementation" [97:2 - 97:16] ObjCImplementationDecl=Rdar8595462_B:97:17 (Definition)
-// CHECK: Identifier: "Rdar8595462_B" [97:17 - 97:30] ObjCImplementationDecl=Rdar8595462_B:97:17 (Definition)
-// CHECK: Identifier: "Rdar8595462_A" [98:1 - 98:14] ObjCClassRef=Rdar8595462_A:93:8
-// CHECK: Punctuation: "*" [98:15 - 98:16] FunctionDecl=Rdar8595462_aFunction:98:17 (Definition)
-// CHECK: Identifier: "Rdar8595462_aFunction" [98:17 - 98:38] FunctionDecl=Rdar8595462_aFunction:98:17 (Definition)
-// CHECK: Punctuation: "(" [98:38 - 98:39] FunctionDecl=Rdar8595462_aFunction:98:17 (Definition)
-// CHECK: Punctuation: ")" [98:39 - 98:40] FunctionDecl=Rdar8595462_aFunction:98:17 (Definition)
-// CHECK: Punctuation: "{" [98:41 - 98:42] CompoundStmt=
-// CHECK: Identifier: "Rdar8595462_A" [99:3 - 99:16] ObjCClassRef=Rdar8595462_A:93:8
-// CHECK: Punctuation: "*" [99:17 - 99:18] VarDecl=localVar:99:19 (Definition)
-// CHECK: Identifier: "localVar" [99:19 - 99:27] VarDecl=localVar:99:19 (Definition)
-// CHECK: Punctuation: "=" [99:28 - 99:29] VarDecl=localVar:99:19 (Definition)
-// CHECK: Literal: "0" [99:30 - 99:31] IntegerLiteral=
-// CHECK: Punctuation: ";" [99:31 - 99:32] DeclStmt=
-// CHECK: Keyword: "return" [100:3 - 100:9] ReturnStmt=
-// CHECK: Identifier: "localVar" [100:10 - 100:18] DeclRefExpr=localVar:99:19
-// CHECK: Punctuation: ";" [100:18 - 100:19] CompoundStmt=
-// CHECK: Punctuation: "}" [101:1 - 101:2] CompoundStmt=
-// CHECK: Keyword: "static" [102:1 - 102:7] VarDecl=Rdar8595462_staticVar:102:24
-// CHECK: Identifier: "Rdar8595462_A" [102:8 - 102:21] ObjCClassRef=Rdar8595462_A:93:8
-// CHECK: Punctuation: "*" [102:22 - 102:23] VarDecl=Rdar8595462_staticVar:102:24
-// CHECK: Identifier: "Rdar8595462_staticVar" [102:24 - 102:45] VarDecl=Rdar8595462_staticVar:102:24
-// CHECK: Punctuation: ";" [102:45 - 102:46] ObjCImplementationDecl=Rdar8595462_B:97:17 (Definition)
-// CHECK: Punctuation: "@" [103:1 - 103:2] ObjCImplementationDecl=Rdar8595462_B:97:17 (Definition)
-// CHECK: Keyword: "end" [103:2 - 103:5]
-
-// CHECK: Punctuation: "@" [110:1 - 110:2] ObjCPropertyDecl=foo:110:33
-// CHECK: Keyword: "property" [110:2 - 110:10] ObjCPropertyDecl=foo:110:33
-// CHECK: Punctuation: "(" [110:11 - 110:12] ObjCPropertyDecl=foo:110:33
-// CHECK: Keyword: "readonly" [110:12 - 110:20] ObjCPropertyDecl=foo:110:33
-// CHECK: Punctuation: "," [110:20 - 110:21] ObjCPropertyDecl=foo:110:33
-// CHECK: Keyword: "copy" [110:22 - 110:26] ObjCPropertyDecl=foo:110:33
-// CHECK: Punctuation: ")" [110:26 - 110:27] ObjCPropertyDecl=foo:110:33
-// CHECK: Identifier: "Foo" [110:28 - 110:31] ObjCClassRef=Foo:1:12
-// CHECK: Punctuation: "*" [110:32 - 110:33] ObjCPropertyDecl=foo:110:33
-// CHECK: Identifier: "foo" [110:33 - 110:36] ObjCPropertyDecl=foo:110:33
-// CHECK: Keyword: "property" [111:2 - 111:10] ObjCPropertyDecl=foo2:111:27
-// CHECK: Punctuation: "(" [111:11 - 111:12] ObjCPropertyDecl=foo2:111:27
-// CHECK: Keyword: "readonly" [111:12 - 111:20] ObjCPropertyDecl=foo2:111:27
-// CHECK: Punctuation: ")" [111:20 - 111:21] ObjCPropertyDecl=foo2:111:27
-// CHECK: Identifier: "Foo" [111:22 - 111:25] ObjCClassRef=Foo:1:12
-// CHECK: Punctuation: "*" [111:26 - 111:27] ObjCPropertyDecl=foo2:111:27
-// CHECK: Identifier: "foo2" [111:27 - 111:31] ObjCPropertyDecl=foo2:111:27
-
-// CHECK: Punctuation: "@" [115:1 - 115:2] ObjCSynthesizeDecl=foo:110:33 (Definition)
-// CHECK: Keyword: "synthesize" [115:2 - 115:12] ObjCSynthesizeDecl=foo:110:33 (Definition)
-// CHECK: Identifier: "foo" [115:13 - 115:16] ObjCSynthesizeDecl=foo:110:33 (Definition)
-// CHECK: Punctuation: "=" [115:17 - 115:18] ObjCSynthesizeDecl=foo:110:33 (Definition)
-// CHECK: Identifier: "_foo" [115:19 - 115:23] MemberRef=_foo:107:8
-// CHECK: Punctuation: ";" [115:23 - 115:24] ObjCImplementationDecl=Rdar8595386:114:17 (Definition)
-
-// RUN: c-index-test -test-annotate-tokens=%s:127:1:130:1 %s -DIBOutlet='__attribute__((iboutlet))' -DIBAction='void)__attribute__((ibaction)' | FileCheck -check-prefix=CHECK-INSIDE_BLOCK %s
-// CHECK-INSIDE_BLOCK: Keyword: "int" [127:5 - 127:8] VarDecl=result:127:9 (Definition)
-// CHECK-INSIDE_BLOCK: Identifier: "result" [127:9 - 127:15] VarDecl=result:127:9 (Definition)
-// CHECK-INSIDE_BLOCK: Punctuation: "=" [127:16 - 127:17] VarDecl=result:127:9 (Definition)
-// CHECK-INSIDE_BLOCK: Punctuation: "[" [127:18 - 127:19] ObjCMessageExpr=blah::124:8
-// CHECK-INSIDE_BLOCK: Identifier: "self" [127:19 - 127:23] ObjCSelfExpr=self:0:0
-// CHECK-INSIDE_BLOCK: Identifier: "blah" [127:24 - 127:28] ObjCMessageExpr=blah::124:8
-// CHECK-INSIDE_BLOCK: Punctuation: ":" [127:28 - 127:29] ObjCMessageExpr=blah::124:8
-// CHECK-INSIDE_BLOCK: Literal: "5" [127:29 - 127:30] IntegerLiteral=
-// CHECK-INSIDE_BLOCK: Punctuation: "," [127:30 - 127:31] ObjCMessageExpr=blah::124:8
-// CHECK-INSIDE_BLOCK: Identifier: "x" [127:32 - 127:33] DeclRefExpr=x:125:19
-// CHECK-INSIDE_BLOCK: Punctuation: "]" [127:33 - 127:34] ObjCMessageExpr=blah::124:8
-// CHECK-INSIDE_BLOCK: Punctuation: ";" [127:34 - 127:35] DeclStmt=
-// CHECK-INSIDE_BLOCK: Identifier: "Rdar8778404" [128:5 - 128:16] ObjCClassRef=Rdar8778404:120:12
-// CHECK-INSIDE_BLOCK: Punctuation: "*" [128:17 - 128:18] VarDecl=a:128:18 (Definition)
-// CHECK-INSIDE_BLOCK: Identifier: "a" [128:18 - 128:19] VarDecl=a:128:18 (Definition)
-// CHECK-INSIDE_BLOCK: Punctuation: "=" [128:20 - 128:21] VarDecl=a:128:18 (Definition)
-// CHECK-INSIDE_BLOCK: Identifier: "self" [128:22 - 128:26] ObjCSelfExpr=self:0:0
-
-// RUN: c-index-test -test-annotate-tokens=%s:134:1:138:1 %s -DIBOutlet='__attribute__((iboutlet))' -DIBAction='void)__attribute__((ibaction)' | FileCheck -check-prefix=CHECK-PROP-AFTER-METHOD %s
-// CHECK-PROP-AFTER-METHOD: Punctuation: "@" [134:1 - 134:2] ObjCInterfaceDecl=Rdar8062781:134:12
-// CHECK-PROP-AFTER-METHOD: Keyword: "interface" [134:2 - 134:11] ObjCInterfaceDecl=Rdar8062781:134:12
-// CHECK-PROP-AFTER-METHOD: Identifier: "Rdar8062781" [134:12 - 134:23] ObjCInterfaceDecl=Rdar8062781:134:12
-// CHECK-PROP-AFTER-METHOD: Punctuation: "+" [135:1 - 135:2] ObjCClassMethodDecl=getB:135:9
-// CHECK-PROP-AFTER-METHOD: Punctuation: "(" [135:3 - 135:4] ObjCClassMethodDecl=getB:135:9
-// CHECK-PROP-AFTER-METHOD: Identifier: "Foo" [135:4 - 135:7] ObjCClassRef=Foo:1:12
-// CHECK-PROP-AFTER-METHOD: Punctuation: "*" [135:7 - 135:8] ObjCClassMethodDecl=getB:135:9
-// CHECK-PROP-AFTER-METHOD: Punctuation: ")" [135:8 - 135:9] ObjCClassMethodDecl=getB:135:9
-// CHECK-PROP-AFTER-METHOD: Identifier: "getB" [135:9 - 135:13] ObjCClassMethodDecl=getB:135:9
-// CHECK-PROP-AFTER-METHOD: Punctuation: ";" [135:13 - 135:14] ObjCClassMethodDecl=getB:135:9
-// CHECK-PROP-AFTER-METHOD: Punctuation: "@" [136:1 - 136:2] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Keyword: "property" [136:2 - 136:10] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Punctuation: "(" [136:11 - 136:12] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Keyword: "readonly" [136:12 - 136:20] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Punctuation: "," [136:20 - 136:21] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Keyword: "nonatomic" [136:22 - 136:31] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Punctuation: ")" [136:31 - 136:32] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Identifier: "Foo" [136:33 - 136:36] ObjCClassRef=Foo:1:12
-// CHECK-PROP-AFTER-METHOD: Punctuation: "*" [136:37 - 136:38] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Identifier: "blah" [136:38 - 136:42] ObjCPropertyDecl=blah:136:38
-// CHECK-PROP-AFTER-METHOD: Punctuation: ";" [136:42 - 136:43] ObjCInterfaceDecl=Rdar8062781:134:12
-// CHECK-PROP-AFTER-METHOD: Punctuation: "@" [137:1 - 137:2] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Keyword: "property" [137:2 - 137:10] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Punctuation: "(" [137:11 - 137:12] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Keyword: "readonly" [137:12 - 137:20] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Punctuation: "," [137:20 - 137:21] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Keyword: "atomic" [137:22 - 137:28] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Punctuation: ")" [137:28 - 137:29] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Identifier: "Foo" [137:30 - 137:33] ObjCClassRef=Foo:1:12
-// CHECK-PROP-AFTER-METHOD: Punctuation: "*" [137:34 - 137:35] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Identifier: "abah" [137:35 - 137:39] ObjCPropertyDecl=abah:137:35
-// CHECK-PROP-AFTER-METHOD: Punctuation: ";" [137:39 - 137:40] ObjCInterfaceDecl=Rdar8062781:134:12
-// CHECK-PROP-AFTER-METHOD: Punctuation: "@" [138:1 - 138:2] ObjCInterfaceDecl=Rdar8062781:134:12
-
-// RUN: c-index-test -test-annotate-tokens=%s:141:1:142:1 %s -DIBOutlet='__attribute__((iboutlet))' -DIBAction='void)__attribute__((ibaction)' -target x86_64-apple-macosx10.7.0 | FileCheck -check-prefix=CHECK-WITH-WEAK %s
-// CHECK-WITH-WEAK: Identifier: "__weak" [141:3 - 141:9] macro expansion
-// CHECK-WITH-WEAK: Identifier: "Foo" [141:10 - 141:13] ObjCClassRef=Foo:1:12
-// CHECK-WITH-WEAK: Punctuation: "*" [141:14 - 141:15] ObjCIvarDecl=foo:141:15 (Definition)
-// CHECK-WITH-WEAK: Identifier: "foo" [141:15 - 141:18] ObjCIvarDecl=foo:141:15 (Definition)
-// CHECK-WITH-WEAK: Punctuation: ";" [141:18 - 141:19] ObjCInterfaceDecl=rdar9535717:140:12
-// CHECK-WITH-WEAK: Punctuation: "}" [142:1 - 142:2] ObjCInterfaceDecl=rdar9535717:140:12

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-toplevel-in-objccontainer.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-toplevel-in-objccontainer.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-toplevel-in-objccontainer.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
- at interface Foo
-void func1(int);
-void func2(int);
-
--(void)meth1;
--(void)meth2;
- at end
-
- at implementation Foo
-void func(int);
-static int glob1;
-static int glob2;
-
--(void)meth1 {}
--(void)meth2 {}
- at end
-
-// RUN: c-index-test -write-pch %t.h.pch -x objective-c-header %s.h
-
-// RUN: c-index-test -test-annotate-tokens=%s:5:1:7:1 %s -include %t.h \
-// RUN:     | FileCheck -check-prefix=INTER %s
-// CHECK-INTER: Identifier: "meth1" [5:8 - 5:13] ObjCInstanceMethodDecl=meth1:5:8
-// CHECK-INTER: Identifier: "meth2" [6:8 - 6:13] ObjCInstanceMethodDecl=meth2:6:8
-
-// RUN: c-index-test -test-annotate-tokens=%s:14:1:16:1 %s -include %t.h \
-// RUN:     | FileCheck -check-prefix=IMPL %s
-// CHECK-IMPL: Identifier: "meth1" [14:8 - 14:13] ObjCInstanceMethodDecl=meth1:14:8 (Definition)
-// CHECK-IMPL: Identifier: "meth2" [15:8 - 15:13] ObjCInstanceMethodDecl=meth2:15:8 (Definition)
-
-// RUN: c-index-test -test-annotate-tokens=%s.h:7:1:9:1 %s -include %t.h \
-// RUN:     | FileCheck -check-prefix=PCH %s
-// CHECK-PCH: Identifier: "meth1" [7:8 - 7:13] ObjCInstanceMethodDecl=meth1:7:8
-// CHECK-PCH: Identifier: "meth2" [8:8 - 8:13] ObjCInstanceMethodDecl=meth2:8:8

Modified: trunk/contrib/llvm/tools/clang/test/Index/annotate-toplevel-in-objccontainer.m.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/annotate-toplevel-in-objccontainer.m.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/annotate-toplevel-in-objccontainer.m.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
- at interface FooPCH
-void funcPCH1(int);
-void funcPCH2(int);
-
-enum E { Cake };
-
--(void)meth1;
--(void)meth2;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/arc-annotate.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/arc-annotate.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/arc-annotate.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
- at interface A
- at property (strong, nonatomic) id property;
- at property (nonatomic, weak) id second_property;
- at property (unsafe_unretained, nonatomic) id third_property;
- at end
-
-void foo() {
-  A *avar;
-  avar = 0;
-}
-
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:11:1 %s -fobjc-arc -fobjc-nonfragile-abi | FileCheck %s
-// CHECK: Punctuation: "@" [1:1 - 1:2] ObjCInterfaceDecl=A:1:12
-// CHECK: Keyword: "interface" [1:2 - 1:11] ObjCInterfaceDecl=A:1:12
-// CHECK: Identifier: "A" [1:12 - 1:13] ObjCInterfaceDecl=A:1:12
-// CHECK: Punctuation: "@" [2:1 - 2:2] ObjCPropertyDecl=property:2:34
-// CHECK: Keyword: "property" [2:2 - 2:10] ObjCPropertyDecl=property:2:34
-// CHECK: Punctuation: "(" [2:11 - 2:12] ObjCPropertyDecl=property:2:34
-// CHECK: Keyword: "strong" [2:12 - 2:18] ObjCPropertyDecl=property:2:34
-// CHECK: Punctuation: "," [2:18 - 2:19] ObjCPropertyDecl=property:2:34
-// CHECK: Keyword: "nonatomic" [2:20 - 2:29] ObjCPropertyDecl=property:2:34
-// CHECK: Punctuation: ")" [2:29 - 2:30] ObjCPropertyDecl=property:2:34
-// CHECK: Identifier: "id" [2:31 - 2:33] TypeRef=id:0:0
-// CHECK: Identifier: "property" [2:34 - 2:42] ObjCPropertyDecl=property:2:34
-// CHECK: Punctuation: ";" [2:42 - 2:43] ObjCInterfaceDecl=A:1:12
-// CHECK: Punctuation: "@" [3:1 - 3:2] ObjCPropertyDecl=second_property:3:32
-// CHECK: Keyword: "property" [3:2 - 3:10] ObjCPropertyDecl=second_property:3:32
-// CHECK: Punctuation: "(" [3:11 - 3:12] ObjCPropertyDecl=second_property:3:32
-// CHECK: Keyword: "nonatomic" [3:12 - 3:21] ObjCPropertyDecl=second_property:3:32
-// CHECK: Punctuation: "," [3:21 - 3:22] ObjCPropertyDecl=second_property:3:32
-// CHECK: Keyword: "weak" [3:23 - 3:27] ObjCPropertyDecl=second_property:3:32
-// CHECK: Punctuation: ")" [3:27 - 3:28] ObjCPropertyDecl=second_property:3:32
-// CHECK: Identifier: "id" [3:29 - 3:31] TypeRef=id:0:0
-// CHECK: Identifier: "second_property" [3:32 - 3:47] ObjCPropertyDecl=second_property:3:32
-// CHECK: Punctuation: "@" [4:1 - 4:2] ObjCPropertyDecl=third_property:4:45
-// CHECK: Keyword: "property" [4:2 - 4:10] ObjCPropertyDecl=third_property:4:45
-// CHECK: Punctuation: "(" [4:11 - 4:12] ObjCPropertyDecl=third_property:4:45
-// CHECK: Keyword: "unsafe_unretained" [4:12 - 4:29] ObjCPropertyDecl=third_property:4:45
-// CHECK: Punctuation: "," [4:29 - 4:30] ObjCPropertyDecl=third_property:4:45
-// CHECK: Keyword: "nonatomic" [4:31 - 4:40] ObjCPropertyDecl=third_property:4:45
-// CHECK: Punctuation: ")" [4:40 - 4:41] ObjCPropertyDecl=third_property:4:45
-// CHECK: Identifier: "id" [4:42 - 4:44] TypeRef=id:0:0
-// CHECK: Identifier: "third_property" [4:45 - 4:59] ObjCPropertyDecl=third_property:4:45
-
-// CHECK: Identifier: "A" [8:3 - 8:4] ObjCClassRef=A:1:12
-// CHECK: Punctuation: "*" [8:5 - 8:6] VarDecl=avar:8:6 (Definition)
-// CHECK: Identifier: "avar" [8:6 - 8:10] VarDecl=avar:8:6 (Definition)
-// CHECK: Punctuation: ";" [8:10 - 8:11] DeclStmt=
-// CHECK: Identifier: "avar" [9:3 - 9:7] DeclRefExpr=avar:8:6
-// CHECK: Punctuation: "=" [9:8 - 9:9] BinaryOperator=
-// CHECK: Literal: "0" [9:10 - 9:11] IntegerLiteral=
-// CHECK: Punctuation: ";" [9:11 - 9:12] CompoundStmt=
-
-// RUN: c-index-test -file-refs-at=%s:8:8 %s -fobjc-arc -fobjc-nonfragile-abi | FileCheck %s -check-prefix=CHECK-REFS
-// CHECK-REFS: VarDecl=avar:8:6 (Definition)
-// CHECK-REFS: VarDecl=avar:8:6 (Definition) =[8:6 - 8:10]
-// CHECK-REFS: DeclRefExpr=avar:8:6 =[9:3 - 9:7]

Modified: trunk/contrib/llvm/tools/clang/test/Index/arc-complete.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/arc-complete.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/arc-complete.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-typedef const void *CFTypeRef;
-
-void test(id x) {
-  (__bridge CFTypeRef)x;
-}
-
-
-
-// RUN: c-index-test -code-completion-at=%s:4:4 %s -fobjc-arc -fobjc-nonfragile-abi | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: macro definition:{TypedText __autoreleasing} (70)
-// CHECK-CC1: NotImplemented:{TypedText __bridge}{HorizontalSpace  }{Placeholder type}{RightParen )}{Placeholder expression} (40)
-// CHECK-CC1: NotImplemented:{TypedText __bridge_retained}{HorizontalSpace  }{Placeholder CF type}{RightParen )}{Placeholder expression} (40)
-// CHECK-CC1: NotImplemented:{TypedText __bridge_transfer}{HorizontalSpace  }{Placeholder Objective-C type}{RightParen )}{Placeholder expression} (40)
-// CHECK-CC1: macro definition:{TypedText __strong} (70)
-// CHECK-CC1: macro definition:{TypedText __unsafe_unretained} (70)
-// CHECK-CC1: macro definition:{TypedText __weak} (70)

Modified: trunk/contrib/llvm/tools/clang/test/Index/asm-attribute.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/asm-attribute.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/asm-attribute.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-int foo(int x) __asm__("_foo_");
-
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-// CHECK: asm-attribute.c:1:5: FunctionDecl=foo:1:5 Extent=[1:1 - 1:32]
-// FIXME: Location below.
-// CHECK: <invalid loc>:0:0: asm label=_foo_ Extent=[1:24 - 1:31]

Modified: trunk/contrib/llvm/tools/clang/test/Index/availability.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/availability.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/availability.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Run lines below; this test is line- and column-sensitive.
-
-void foo(void) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5,obsoleted=10.7), availability(ios,introduced=3.2,deprecated=4.1)));
-
-// RUN: c-index-test -test-load-source all %s > %t
-// RUN: FileCheck -check-prefix=CHECK-1 %s < %t
-// RUN: FileCheck -check-prefix=CHECK-2 %s < %t
-// CHECK-1: (ios, introduced=3.2, deprecated=4.1) 
-// CHECK-2: (macosx, introduced=10.4, deprecated=10.5, obsoleted=10.7)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/blocks.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/blocks.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/blocks.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: c-index-test -test-load-source local -fblocks %s | FileCheck %s
-
-typedef int int_t;
-struct foo { long x; };
-
-void test() {
-  static struct foo _foo;
-  __block i = 0;
-  ^ int_t(struct foo *foo) { return (int_t) foo->x + i; }(&_foo);
-}
-
-// CHECK: blocks.c:6:6: FunctionDecl=test:6:6 (Definition) Extent=[6:1 - 10:2]
-// CHECK: blocks.c:6:13: CompoundStmt= Extent=[6:13 - 10:2]
-// CHECK: blocks.c:7:3: DeclStmt= Extent=[7:3 - 7:26]
-// CHECK: blocks.c:7:21: VarDecl=_foo:7:21 (Definition) Extent=[7:3 - 7:25]
-// CHECK: blocks.c:7:17: TypeRef=struct foo:4:8 Extent=[7:17 - 7:20]
-// CHECK: blocks.c:8:11: VarDecl=i:8:11 (Definition) Extent=[8:3 - 8:16]
-// CHECK: blocks.c:8:15: IntegerLiteral= Extent=[8:15 - 8:16]
-// CHECK: blocks.c:9:3: CallExpr= Extent=[9:3 - 9:65]
-// CHECK: blocks.c:9:3: BlockExpr= Extent=[9:3 - 9:58]
-// CHECK: blocks.c:9:5: TypeRef=int_t:3:13 Extent=[9:5 - 9:10]
-// CHECK: blocks.c:9:23: ParmDecl=foo:9:23 (Definition) Extent=[9:11 - 9:26]
-// CHECK: blocks.c:9:18: TypeRef=struct foo:4:8 Extent=[9:18 - 9:21]
-// CHECK: blocks.c:9:28: CompoundStmt= Extent=[9:28 - 9:58]
-// CHECK: blocks.c:9:30: ReturnStmt= Extent=[9:30 - 9:55]
-// CHECK: blocks.c:9:37: BinaryOperator= Extent=[9:37 - 9:55]
-// CHECK: blocks.c:9:37: CStyleCastExpr= Extent=[9:37 - 9:51]
-// CHECK: blocks.c:9:38: TypeRef=int_t:3:13 Extent=[9:38 - 9:43]
-// CHECK: blocks.c:9:50: MemberRefExpr=x:4:19 SingleRefName=[9:50 - 9:51] RefName=[9:50 - 9:51] Extent=[9:45 - 9:51]
-// CHECK: blocks.c:9:45: DeclRefExpr=foo:9:23 Extent=[9:45 - 9:48]
-// CHECK: blocks.c:9:54: DeclRefExpr=i:8:11 Extent=[9:54 - 9:55]
-// CHECK: blocks.c:9:59: UnaryOperator= Extent=[9:59 - 9:64]
-// CHECK: blocks.c:9:60: DeclRefExpr=_foo:7:21 Extent=[9:60 - 9:64]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/boxed-exprs.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/boxed-exprs.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/boxed-exprs.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-
- at interface NSString @end
-
- at interface NSString (NSStringExtensionMethods)
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end
-
-static inline void infoo(const char *cs) {
-  NSString *s = @(cs);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/boxed-exprs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/boxed-exprs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/boxed-exprs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-
-#include "boxed-exprs.h"
-
-const char *glob_str;
-
-void foo() {
-  NSString *s = @(glob_str);
-}
-
-// RUN: c-index-test -index-file -target x86_64-apple-macosx10.7 %s | FileCheck -check-prefix=CHECK-INDEX %s
-// CHECK-INDEX: [indexEntityReference]: kind: variable | name: glob_str | {{.*}} | loc: 7:19
-
-// RUN: c-index-test -cursor-at=%s:7:24 -target x86_64-apple-macosx10.7 %s | FileCheck -check-prefix=CHECK-CURSOR %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -cursor-at=%s:7:24 -target x86_64-apple-macosx10.7 %s | FileCheck -check-prefix=CHECK-CURSOR %s
-// CHECK-CURSOR: 7:19 DeclRefExpr=glob_str:4:13 Extent=[7:19 - 7:27] Spelling=glob_str ([7:19 - 7:27])
-
-// RUN: c-index-test -cursor-at=%S/boxed-exprs.h:9:19 -target x86_64-apple-macosx10.7 %s | FileCheck -check-prefix=CHECK-CURSOR2 %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -cursor-at=%S/boxed-exprs.h:9:19 -target x86_64-apple-macosx10.7 %s | FileCheck -check-prefix=CHECK-CURSOR2 %s
-// CHECK-CURSOR2: 9:19 DeclRefExpr=cs:8:38 Extent=[9:19 - 9:21] Spelling=cs ([9:19 - 9:21])

Modified: trunk/contrib/llvm/tools/clang/test/Index/c-index-api-loadTU-test.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/c-index-api-loadTU-test.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/c-index-api-loadTU-test.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,177 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -emit-pch -x objective-c %s -o %t.ast
-// RUN: c-index-test -test-load-tu %t.ast all > %t 2>&1 && FileCheck --input-file=%t %s
-
- at interface Foo 
-{
-  __attribute__((iboutlet)) id myoutlet;
-}
-- (void) __attribute__((ibaction)) myMessage:(id)msg;
-- foo __attribute__((deprecated));
-+ fooC;
-
- at end
-
- at interface Bar : Foo 
-{
-}
-
- at end
-
- at interface Foo (FooCat)
-- (int) catMethodWithFloat:(float) fArg;
-- (float) floatMethod;
- at end
-
- at protocol Proto
-- pMethod;
- at end
-
- at protocol SubP <Proto>
-- spMethod;
- at end
-
- at interface Baz : Bar <SubP>
-{
-    int _anIVar;
-}
-
-- (Foo *) bazMethod;
-
- at end
-
-enum {
-  someEnum
-};
-
-int main (int argc, const char * argv[]) {
-	Baz * bee;
-	id a = [bee foo];
-	id <SubP> c = [Foo fooC];
-	id <Proto> d;
-	d = c;
-	[d pMethod];
-	[bee catMethodWithFloat:[bee floatMethod]];
-  main(someEnum, (const char **)bee);
-}
-
-// Test attribute traversal.
-#define IBOutlet __attribute__((iboutlet))
-#define IBOutletCollection(ClassName) __attribute__((iboutletcollection(ClassName)))
-#define IBAction void)__attribute__((ibaction)
-
- at interface TestAttributes {
-  IBOutlet id anOutlet;
-  IBOutletCollection(id) id anOutletCollection;
-}
-- (IBAction) actionMethod:(id)arg;
- at end
-
-typedef struct X0 X1;
-struct X0;
-struct X0  {};
-
- at interface TestAttributes()
-// <rdar://problem/9561076>
- at property (retain) IBOutlet id anotherOutlet;
- at end
-
-// CHECK: c-index-api-loadTU-test.m:4:12: ObjCInterfaceDecl=Foo:4:12 Extent=[4:1 - 12:5]
-// CHECK: c-index-api-loadTU-test.m:6:32: ObjCIvarDecl=myoutlet:6:32 (Definition) Extent=[6:3 - 6:40]
-// CHECK: <invalid loc>:0:0: attribute(iboutlet)= Extent=[6:18 - 6:26]
-// CHECK: c-index-api-loadTU-test.m:6:29: TypeRef=id:0:0 Extent=[6:29 - 6:31]
-// CHECK: c-index-api-loadTU-test.m:8:36: ObjCInstanceMethodDecl=myMessage::8:36 Extent=[8:1 - 8:54]
-// CHECK: <invalid loc>:0:0: attribute(ibaction)= Extent=[8:25 - 8:33]
-// CHECK: c-index-api-loadTU-test.m:8:50: ParmDecl=msg:8:50 (Definition) Extent=[8:47 - 8:53]
-// CHECK: c-index-api-loadTU-test.m:8:47: TypeRef=id:0:0 Extent=[8:47 - 8:49]
-// CHECK: c-index-api-loadTU-test.m:9:3: ObjCInstanceMethodDecl=foo:9:3 (deprecated)  (always deprecated: "") Extent=[9:1 - 9:35]
-// CHECK: <invalid loc>:0:0: UnexposedAttr= Extent=[9:22 - 9:32]
-// CHECK: c-index-api-loadTU-test.m:10:3: ObjCClassMethodDecl=fooC:10:3 Extent=[10:1 - 10:8]
-// CHECK: c-index-api-loadTU-test.m:14:12: ObjCInterfaceDecl=Bar:14:12 Extent=[14:1 - 18:5]
-// CHECK: c-index-api-loadTU-test.m:14:18: ObjCSuperClassRef=Foo:4:12 Extent=[14:18 - 14:21]
-// CHECK: c-index-api-loadTU-test.m:20:12: ObjCCategoryDecl=FooCat:20:12 Extent=[20:1 - 23:5]
-// CHECK: c-index-api-loadTU-test.m:20:12: ObjCClassRef=Foo:4:12 Extent=[20:12 - 20:15]
-// CHECK: c-index-api-loadTU-test.m:21:9: ObjCInstanceMethodDecl=catMethodWithFloat::21:9 Extent=[21:1 - 21:41]
-// CHECK: c-index-api-loadTU-test.m:21:36: ParmDecl=fArg:21:36 (Definition) Extent=[21:29 - 21:40]
-// CHECK: c-index-api-loadTU-test.m:22:11: ObjCInstanceMethodDecl=floatMethod:22:11 Extent=[22:1 - 22:23]
-// CHECK: c-index-api-loadTU-test.m:25:11: ObjCProtocolDecl=Proto:25:11 (Definition) Extent=[25:1 - 27:5]
-// CHECK: c-index-api-loadTU-test.m:26:3: ObjCInstanceMethodDecl=pMethod:26:3 Extent=[26:1 - 26:11]
-// CHECK: c-index-api-loadTU-test.m:29:11: ObjCProtocolDecl=SubP:29:11 (Definition) Extent=[29:1 - 31:5]
-// CHECK: c-index-api-loadTU-test.m:29:17: ObjCProtocolRef=Proto:25:11 Extent=[29:17 - 29:22]
-// CHECK: c-index-api-loadTU-test.m:30:3: ObjCInstanceMethodDecl=spMethod:30:3 Extent=[30:1 - 30:12]
-// CHECK: c-index-api-loadTU-test.m:33:12: ObjCInterfaceDecl=Baz:33:12 Extent=[33:1 - 40:5]
-// CHECK: c-index-api-loadTU-test.m:33:18: ObjCSuperClassRef=Bar:14:12 Extent=[33:18 - 33:21]
-// CHECK: c-index-api-loadTU-test.m:33:23: ObjCProtocolRef=SubP:29:11 Extent=[33:23 - 33:27]
-// CHECK: c-index-api-loadTU-test.m:35:9: ObjCIvarDecl=_anIVar:35:9 (Definition) Extent=[35:5 - 35:16]
-// CHECK: c-index-api-loadTU-test.m:38:11: ObjCInstanceMethodDecl=bazMethod:38:11 Extent=[38:1 - 38:21]
-// CHECK: c-index-api-loadTU-test.m:38:4: ObjCClassRef=Foo:4:12 Extent=[38:4 - 38:7]
-// CHECK: c-index-api-loadTU-test.m:42:1: EnumDecl=:42:1 (Definition) Extent=[42:1 - 44:2]
-// CHECK: c-index-api-loadTU-test.m:43:3: EnumConstantDecl=someEnum:43:3 (Definition) Extent=[43:3 - 43:11]
-// CHECK: c-index-api-loadTU-test.m:46:5: FunctionDecl=main:46:5 (Definition) Extent=[46:1 - 55:2]
-// CHECK: c-index-api-loadTU-test.m:46:15: ParmDecl=argc:46:15 (Definition) Extent=[46:11 - 46:19]
-// CHECK: c-index-api-loadTU-test.m:46:34: ParmDecl=argv:46:34 (Definition) Extent=[46:21 - 46:40]
-// CHECK: c-index-api-loadTU-test.m:46:42: CompoundStmt= Extent=[46:42 - 55:2]
-// CHECK: c-index-api-loadTU-test.m:47:2: DeclStmt= Extent=[47:2 - 47:12]
-// CHECK: c-index-api-loadTU-test.m:47:8: VarDecl=bee:47:8 (Definition) Extent=[47:2 - 47:11]
-// CHECK: c-index-api-loadTU-test.m:47:2: ObjCClassRef=Baz:33:12 Extent=[47:2 - 47:5]
-// CHECK: c-index-api-loadTU-test.m:48:2: DeclStmt= Extent=[48:2 - 48:19]
-// CHECK: c-index-api-loadTU-test.m:48:5: VarDecl=a:48:5 (Definition) Extent=[48:2 - 48:18]
-// CHECK: c-index-api-loadTU-test.m:48:2: TypeRef=id:0:0 Extent=[48:2 - 48:4]
-// CHECK: c-index-api-loadTU-test.m:48:9: ObjCMessageExpr=foo:9:3 Extent=[48:9 - 48:18]
-// CHECK: c-index-api-loadTU-test.m:48:10: UnexposedExpr=bee:47:8 Extent=[48:10 - 48:13]
-// CHECK: c-index-api-loadTU-test.m:48:10: DeclRefExpr=bee:47:8 Extent=[48:10 - 48:13]
-// CHECK: c-index-api-loadTU-test.m:49:2: DeclStmt= Extent=[49:2 - 49:27]
-// CHECK: c-index-api-loadTU-test.m:49:12: VarDecl=c:49:12 (Definition) Extent=[49:2 - 49:26]
-// CHECK: c-index-api-loadTU-test.m:49:2: TypeRef=id:0:0 Extent=[49:2 - 49:4]
-// CHECK: c-index-api-loadTU-test.m:49:6: ObjCProtocolRef=SubP:29:11 Extent=[49:6 - 49:10]
-// CHECK: c-index-api-loadTU-test.m:49:16: UnexposedExpr=fooC:10:3 Extent=[49:16 - 49:26]
-// CHECK: c-index-api-loadTU-test.m:49:16: ObjCMessageExpr=fooC:10:3 Extent=[49:16 - 49:26]
-// CHECK: c-index-api-loadTU-test.m:49:17: ObjCClassRef=Foo:4:12 Extent=[49:17 - 49:20]
-// CHECK: c-index-api-loadTU-test.m:50:2: DeclStmt= Extent=[50:2 - 50:15]
-// CHECK: c-index-api-loadTU-test.m:50:13: VarDecl=d:50:13 (Definition) Extent=[50:2 - 50:14]
-// CHECK: c-index-api-loadTU-test.m:50:2: TypeRef=id:0:0 Extent=[50:2 - 50:4]
-// CHECK: c-index-api-loadTU-test.m:50:6: ObjCProtocolRef=Proto:25:11 Extent=[50:6 - 50:11]
-// CHECK: c-index-api-loadTU-test.m:51:2: BinaryOperator= Extent=[51:2 - 51:7]
-// CHECK: c-index-api-loadTU-test.m:51:2: DeclRefExpr=d:50:13 Extent=[51:2 - 51:3]
-// CHECK: c-index-api-loadTU-test.m:51:6: UnexposedExpr=c:49:12 Extent=[51:6 - 51:7]
-// CHECK: c-index-api-loadTU-test.m:51:6: UnexposedExpr=c:49:12 Extent=[51:6 - 51:7]
-// CHECK: c-index-api-loadTU-test.m:51:6: DeclRefExpr=c:49:12 Extent=[51:6 - 51:7]
-// CHECK: c-index-api-loadTU-test.m:52:2: ObjCMessageExpr=pMethod:26:3 Extent=[52:2 - 52:13]
-// CHECK: c-index-api-loadTU-test.m:52:3: UnexposedExpr=d:50:13 Extent=[52:3 - 52:4]
-// CHECK: c-index-api-loadTU-test.m:52:3: DeclRefExpr=d:50:13 Extent=[52:3 - 52:4]
-// CHECK: c-index-api-loadTU-test.m:53:2: ObjCMessageExpr=catMethodWithFloat::21:9 Extent=[53:2 - 53:44]
-// CHECK: c-index-api-loadTU-test.m:53:3: UnexposedExpr=bee:47:8 Extent=[53:3 - 53:6]
-// CHECK: c-index-api-loadTU-test.m:53:3: DeclRefExpr=bee:47:8 Extent=[53:3 - 53:6]
-// CHECK: c-index-api-loadTU-test.m:53:26: ObjCMessageExpr=floatMethod:22:11 Extent=[53:26 - 53:43]
-// CHECK: c-index-api-loadTU-test.m:53:27: UnexposedExpr=bee:47:8 Extent=[53:27 - 53:30]
-// CHECK: c-index-api-loadTU-test.m:53:27: DeclRefExpr=bee:47:8 Extent=[53:27 - 53:30]
-// CHECK: c-index-api-loadTU-test.m:54:3: CallExpr=main:46:5 Extent=[54:3 - 54:37]
-// CHECK: c-index-api-loadTU-test.m:54:3: UnexposedExpr=main:46:5 Extent=[54:3 - 54:7]
-// CHECK: c-index-api-loadTU-test.m:54:3: DeclRefExpr=main:46:5 Extent=[54:3 - 54:7]
-// CHECK: c-index-api-loadTU-test.m:54:8: DeclRefExpr=someEnum:43:3 Extent=[54:8 - 54:16]
-// CHECK: c-index-api-loadTU-test.m:54:18: CStyleCastExpr= Extent=[54:18 - 54:36]
-// CHECK: c-index-api-loadTU-test.m:54:33: UnexposedExpr=bee:47:8 Extent=[54:33 - 54:36]
-// CHECK: c-index-api-loadTU-test.m:54:33: DeclRefExpr=bee:47:8 Extent=[54:33 - 54:36]
-// CHECK: c-index-api-loadTU-test.m:62:12: ObjCInterfaceDecl=TestAttributes:62:12 Extent=[62:1 - 67:5]
-// CHECK: c-index-api-loadTU-test.m:63:15: ObjCIvarDecl=anOutlet:63:15 (Definition) Extent=[63:3 - 63:23]
-// CHECK: <invalid loc>:0:0: attribute(iboutlet)= Extent=[63:3 - 63:11]
-// CHECK: c-index-api-loadTU-test.m:63:12: TypeRef=id:0:0 Extent=[63:12 - 63:14]
-// CHECK: c-index-api-loadTU-test.m:64:29: ObjCIvarDecl=anOutletCollection:64:29 (Definition) Extent=[64:3 - 64:47]
-// CHECK: <invalid loc>:0:0: attribute(iboutletcollection)= [IBOutletCollection=ObjCObjectPointer] Extent=[64:3 - 64:25]
-// CHECK: c-index-api-loadTU-test.m:64:26: TypeRef=id:0:0 Extent=[64:26 - 64:28]
-// CHECK: c-index-api-loadTU-test.m:66:14: ObjCInstanceMethodDecl=actionMethod::66:14 Extent=[66:1 - 66:35]
-// CHECK: <invalid loc>:0:0: attribute(ibaction)= Extent=[66:4 - 66:12]
-// CHECK: c-index-api-loadTU-test.m:66:31: ParmDecl=arg:66:31 (Definition) Extent=[66:28 - 66:34]
-// CHECK: c-index-api-loadTU-test.m:66:28: TypeRef=id:0:0 Extent=[66:28 - 66:30]
-// CHECK: c-index-api-loadTU-test.m:69:16: StructDecl=X0:69:16 Extent=[69:9 - 69:18]
-// CHECK: c-index-api-loadTU-test.m:69:19: TypedefDecl=X1:69:19 (Definition) Extent=[69:1 - 69:21]
-// CHECK: c-index-api-loadTU-test.m:69:16: TypeRef=struct X0:71:8 Extent=[69:16 - 69:18]
-// CHECK: c-index-api-loadTU-test.m:70:8: StructDecl=X0:70:8 Extent=[70:1 - 70:10]
-// CHECK: c-index-api-loadTU-test.m:71:8: StructDecl=X0:71:8 (Definition) Extent=[71:1 - 71:14]
-// CHECK: c-index-api-loadTU-test.m:73:12: ObjCCategoryDecl=:73:12 Extent=[73:1 - 76:5]
-// CHECK: c-index-api-loadTU-test.m:73:12: ObjCClassRef=TestAttributes:62:12 Extent=[73:12 - 73:26]
-// CHECK: c-index-api-loadTU-test.m:75:32: ObjCPropertyDecl=anotherOutlet:75:32 [retain,] Extent=[75:1 - 75:45]
-// CHECK: <invalid loc>:0:0: attribute(iboutlet)= Extent=[75:20 - 75:28]
-// CHECK: c-index-api-loadTU-test.m:75:29: TypeRef=id:0:0 Extent=[75:29 - 75:31]
-// CHECK: c-index-api-loadTU-test.m:75:32: ObjCInstanceMethodDecl=anotherOutlet:75:32 Extent=[75:32 - 75:45]
-// CHECK: c-index-api-loadTU-test.m:75:32: ObjCInstanceMethodDecl=setAnotherOutlet::75:32 Extent=[75:32 - 75:45]
-// CHECK: c-index-api-loadTU-test.m:75:32: ParmDecl=anotherOutlet:75:32 (Definition) Extent=[75:32 - 75:45]

Modified: trunk/contrib/llvm/tools/clang/test/Index/c-index-getCursor-pp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/c-index-getCursor-pp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/c-index-getCursor-pp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-#define OBSCURE(X) X
-#define DECORATION
-#define FNM(X) OBSCURE(X)
-typedef int T;
-void OBSCURE(func)(int x) {
-  OBSCURE(T) DECORATION value;
-}
-
-#include "a.h"
-
-#define A(X) X
-#define B(X) A(X)
-
-B(int x);
-
-const char *fname = __FILE__;
-
-#include <a.h>
-
-#ifdef OBSCURE
-#endif
-
-#if defined(OBSCURE)
-#endif
-
-#define C(A) A
-
-// RUN: c-index-test -cursor-at=%s:1:11 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-1 %s
-// CHECK-1: macro definition=OBSCURE
-// RUN: c-index-test -cursor-at=%s:2:14 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-2 %s
-// CHECK-2: macro definition=DECORATION
-// RUN: c-index-test -cursor-at=%s:5:7 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-3 %s
-// CHECK-3: macro expansion=OBSCURE:1:9
-// RUN: c-index-test -cursor-at=%s:6:6 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-4 %s
-// CHECK-4: macro expansion=OBSCURE:1:9
-// RUN: c-index-test -cursor-at=%s:6:19 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-5 %s
-// CHECK-5: macro expansion=DECORATION:2:9
-// RUN: c-index-test -cursor-at=%s:9:10 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-6 %s
-// CHECK-6: inclusion directive=a.h
-// RUN: c-index-test -cursor-at=%s:14:1 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-7 %s
-// CHECK-7: macro expansion=B:12:9
-// RUN: c-index-test -cursor-at=%s:16:25 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-8 %s
-// CHECK-8: macro expansion=__FILE__
-// RUN: c-index-test -cursor-at=%s:18:12 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-9 %s
-// CHECK-9: inclusion directive=a.h
-// RUN: c-index-test -cursor-at=%s:20:10 -cursor-at=%s:23:15 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-10 %s
-// CHECK-10: 20:8 macro expansion=OBSCURE
-// CHECK-10: 23:13 macro expansion=OBSCURE
-
-// RUN: c-index-test -cursor-at=%s:3:20 -cursor-at=%s:12:14 \
-// RUN:              -cursor-at=%s:26:11 -cursor-at=%s:26:14 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-IN-MACRODEF %s
-// CHECK-IN-MACRODEF: 3:16 macro expansion=OBSCURE
-// CHECK-IN-MACRODEF: 12:14 macro expansion=A
-// CHECK-IN-MACRODEF: 26:9 macro definition=C
-// CHECK-IN-MACRODEF: 26:9 macro definition=C
-
-// Same tests, but with "editing" optimizations
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -cursor-at=%s:1:11 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-1 %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -cursor-at=%s:2:14 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-2 %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -cursor-at=%s:5:7 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-3 %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -cursor-at=%s:9:10 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-6 %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -cursor-at=%s:3:20 -cursor-at=%s:12:14 \
-// RUN:              -cursor-at=%s:26:11 -cursor-at=%s:26:14 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-IN-MACRODEF %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/c-index-getCursor-test.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/c-index-getCursor-test.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/c-index-getCursor-test.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fblocks -emit-pch -x objective-c %s -detailed-preprocessing-record -o %t.ast
-// RUN: c-index-test -test-file-scan %t.ast %s > %t 2>&1 && FileCheck --input-file=%t %s
- at interface Foo 
-{
-}
-
-- foo;
-+ fooC;
-
- at end
-
- at interface Bar : Foo 
-{
-}
-
- at end
-
- at interface Foo (FooCat)
-- (int) catMethodWithFloat:(float) fArg;
-- (float) floatMethod;
- at end
-
- at protocol Proto
-- pMethod;
- at end
-
- at protocol SubP <Proto>
-- spMethod;
- at end
-
- at interface Baz : Bar <SubP>
-{
-    int _anIVar;
-}
-
-- (Foo *) bazMethod;
-
- at end
-
-enum {
-  someEnum
-};
-
-int main (int argc, const char * argv[]) {
-	Baz * bee;
-	id a = [bee foo];
-	id <SubP> c = [Foo fooC];
-	id <Proto> d;
-	d = c;
-	[d pMethod];
-	[bee catMethodWithFloat:[bee floatMethod]];
-  main(someEnum, (const char **)bee);
-}
-
-#define CONCAT(X, Y) X##Y
-
-void f() {
-   int CONCAT(my,_var);
-}
-#undef CONCAT
-
-// CHECK: [1:1 - 3:1] Invalid Cursor => NoDeclFound
-// CHECK: [3:1 - 7:1] ObjCInterfaceDecl=Foo:3:12
-// CHECK: [7:1 - 7:7] ObjCInstanceMethodDecl=foo:7:3
-// CHECK: [7:7 - 8:1] ObjCInterfaceDecl=Foo:3:12
-// CHECK: [8:1 - 8:8] ObjCClassMethodDecl=fooC:8:3
-// CHECK: [8:8 - 10:5] ObjCInterfaceDecl=Foo:3:12
-// CHECK: [10:5 - 12:1] Invalid Cursor => NoDeclFound
-// CHECK: [12:1 - 12:18] ObjCInterfaceDecl=Bar:12:12
-// CHECK: [12:18 - 12:21] ObjCSuperClassRef=Foo:3:12
-// CHECK: [12:21 - 16:5] ObjCInterfaceDecl=Bar:12:12
-// CHECK: [16:5 - 18:1] Invalid Cursor => NoDeclFound
-// CHECK: [18:1 - 18:12] ObjCCategoryDecl=FooCat:18:12
-// CHECK: [18:12 - 18:15] ObjCClassRef=Foo:3:12
-// CHECK: [18:15 - 19:1] ObjCCategoryDecl=FooCat:18:12
-// CHECK: [19:1 - 19:29] ObjCInstanceMethodDecl=catMethodWithFloat::19:9
-// CHECK: [19:29 - 19:40] ParmDecl=fArg:19:36 (Definition)
-// CHECK: [19:40 - 19:41] ObjCInstanceMethodDecl=catMethodWithFloat::19:9
-// CHECK: [19:41 - 20:1] ObjCCategoryDecl=FooCat:18:12
-// CHECK: [20:1 - 20:23] ObjCInstanceMethodDecl=floatMethod:20:11
-// CHECK: [20:23 - 21:5] ObjCCategoryDecl=FooCat:18:12
-// CHECK: [21:5 - 23:1] Invalid Cursor => NoDeclFound
-// CHECK: [23:1 - 24:1] ObjCProtocolDecl=Proto:23:11 (Definition)
-// CHECK: [24:1 - 24:11] ObjCInstanceMethodDecl=pMethod:24:3
-// CHECK: [24:11 - 25:5] ObjCProtocolDecl=Proto:23:11 (Definition)
-// CHECK: [25:5 - 27:1] Invalid Cursor => NoDeclFound
-// CHECK: [27:1 - 27:17] ObjCProtocolDecl=SubP:27:11 (Definition)
-// CHECK: [27:17 - 27:22] ObjCProtocolRef=Proto:23:1
-// CHECK: [27:22 - 28:1] ObjCProtocolDecl=SubP:27:11 (Definition)
-// CHECK: [28:1 - 28:12] ObjCInstanceMethodDecl=spMethod:28:3
-// CHECK: [28:12 - 29:5] ObjCProtocolDecl=SubP:27:11 (Definition)
-// CHECK: [29:5 - 31:1] Invalid Cursor => NoDeclFound
-// CHECK: [31:1 - 31:18] ObjCInterfaceDecl=Baz:31:12
-// CHECK: [31:18 - 31:21] ObjCSuperClassRef=Bar:12:12
-// CHECK: [31:21 - 31:23] ObjCInterfaceDecl=Baz:31:12
-// CHECK: [31:23 - 31:27] ObjCProtocolRef=SubP:27:1
-// CHECK: [31:27 - 33:5] ObjCInterfaceDecl=Baz:31:12
-// CHECK: [33:5 - 33:16] ObjCIvarDecl=_anIVar:33:9 (Definition)
-// CHECK: [33:16 - 36:1] ObjCInterfaceDecl=Baz:31:12
-// CHECK: [36:1 - 36:4] ObjCInstanceMethodDecl=bazMethod:36:1
-// CHECK: [36:4 - 36:7] ObjCClassRef=Foo:3:12
-// CHECK: [36:7 - 36:21] ObjCInstanceMethodDecl=bazMethod:36:1
-// CHECK: [36:21 - 38:5] ObjCInterfaceDecl=Baz:31:12
-// CHECK: [38:5 - 40:1] Invalid Cursor => NoDeclFound
-// CHECK: [40:1 - 41:3] EnumDecl=:40:1 (Definition)
-// CHECK: [41:3 - 41:11] EnumConstantDecl=someEnum:41:3 (Definition)
-// CHECK: [41:11 - 42:2] EnumDecl=:40:1 (Definition)
-// CHECK: [42:2 - 44:1] Invalid Cursor => NoDeclFound
-// CHECK: [44:1 - 44:11] FunctionDecl=main:44:5 (Definition)
-// CHECK: [44:11 - 44:19] ParmDecl=argc:44:15 (Definition)
-// CHECK: [44:19 - 44:21] FunctionDecl=main:44:5 (Definition)
-// CHECK: [44:21 - 44:40] ParmDecl=argv:44:34 (Definition)
-// CHECK: [44:40 - 44:42] FunctionDecl=main:44:5 (Definition)
-// CHECK: [44:42 - 45:2] CompoundStmt=
-// CHECK: [45:2 - 45:5] ObjCClassRef=Baz:31:12
-// CHECK: [45:5 - 45:11] VarDecl=bee:45:8 (Definition)
-// CHECK: [45:11 - 45:12] DeclStmt=
-// CHECK: [45:12 - 46:2] CompoundStmt=
-// CHECK: [46:2 - 46:4] TypeRef=id:0:0
-// CHECK: [46:4 - 46:9] VarDecl=a:46:5 (Definition)
-// CHECK: [46:9 - 46:10] ObjCMessageExpr=foo:7:3
-// CHECK: [46:10 - 46:13] DeclRefExpr=bee:45:8
-// CHECK: [46:13 - 46:18] ObjCMessageExpr=foo:7:3
-// CHECK: [46:18 - 46:19] DeclStmt=
-// CHECK: [46:19 - 47:2] CompoundStmt=
-// CHECK: [47:2 - 47:4] TypeRef=id:0:0
-// CHECK: [47:4 - 47:6] VarDecl=c:47:12 (Definition)
-// CHECK: [47:6 - 47:10] ObjCProtocolRef=SubP:27:1
-// CHECK: [47:10 - 47:16] VarDecl=c:47:12 (Definition)
-// CHECK: [47:16 - 47:17] ObjCMessageExpr=fooC:8:3
-// CHECK: [47:17 - 47:20] ObjCClassRef=Foo:3:12
-// CHECK: [47:20 - 47:26] ObjCMessageExpr=fooC:8:3
-// CHECK: [47:26 - 47:27] DeclStmt=
-// CHECK: [47:27 - 48:2] CompoundStmt=
-// CHECK: [48:2 - 48:4] TypeRef=id:0:0
-// CHECK: [48:4 - 48:6] VarDecl=d:48:13 (Definition)
-// CHECK: [48:6 - 48:11] ObjCProtocolRef=Proto:23:1
-// CHECK: [48:11 - 48:14] VarDecl=d:48:13 (Definition)
-// CHECK: [48:14 - 48:15] DeclStmt=
-// CHECK: [48:15 - 49:2] CompoundStmt=
-// CHECK: [49:2 - 49:3] DeclRefExpr=d:48:13
-// CHECK: [49:3 - 49:6] BinaryOperator=
-// CHECK: [49:6 - 49:7] DeclRefExpr=c:47:12
-// CHECK: [49:7 - 50:2] CompoundStmt=
-// CHECK: [50:2 - 50:3] ObjCMessageExpr=pMethod:24:3
-// CHECK: [50:3 - 50:4] DeclRefExpr=d:48:13
-// CHECK: [50:4 - 50:13] ObjCMessageExpr=pMethod:24:3
-// CHECK: [50:13 - 51:2] CompoundStmt=
-// CHECK: [51:2 - 51:3] ObjCMessageExpr=catMethodWithFloat::19:9
-// CHECK: [51:3 - 51:6] DeclRefExpr=bee:45:8
-// CHECK: [51:6 - 51:26] ObjCMessageExpr=catMethodWithFloat::19:9
-// CHECK: [51:26 - 51:27] ObjCMessageExpr=floatMethod:20:1
-// CHECK: [51:27 - 51:30] DeclRefExpr=bee:45:8
-// CHECK: [51:30 - 51:43] ObjCMessageExpr=floatMethod:20:1
-// CHECK: [51:43 - 51:44] ObjCMessageExpr=catMethodWithFloat::19:9
-// CHECK: [51:44 - 52:3] CompoundStmt=
-// CHECK: [52:3 - 52:7] DeclRefExpr=main:44:5
-// CHECK: [52:7 - 52:8] CallExpr=main:44:5
-// CHECK: [52:8 - 52:16] DeclRefExpr=someEnum:41:3
-// CHECK: [52:16 - 52:18] CallExpr=main:44:5
-// CHECK: [52:18 - 52:33] CStyleCastExpr=
-// CHECK: [52:33 - 52:36] DeclRefExpr=bee:45:8
-// CHECK: [52:36 - 52:37] CallExpr=main:44:5
-// CHECK: [52:37 - 53:2] CompoundStmt=
-// CHECK: [55:9 - 55:26] macro definition=CONCAT
-// CHECK: [57:1 - 57:10] FunctionDecl=f:57:6 (Definition)
-// CHECK: [58:4 - 58:8] VarDecl=my_var:58:8 (Definition)
-// CHECK: [58:8 - 58:15] macro expansion=CONCAT:55:9

Modified: trunk/contrib/llvm/tools/clang/test/Index/c-index-pch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/c-index-pch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/c-index-pch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -x c -o %t.pch %S/Inputs/c-index-pch.h
-// RUN: %clang_cc1 -include-pch %t.pch -x c -emit-pch -o %t.ast %s
-// RUN: c-index-test -test-load-tu %t.ast all | FileCheck -check-prefix=ALL %s
-// ALL: FunctionDecl=foo
-// ALL: VarDecl=bar
-// ALL: FunctionDecl=wibble
-// ALL: FunctionDecl=wonka
-void wibble(int i);
-void wonka(float);

Modified: trunk/contrib/llvm/tools/clang/test/Index/c-index-redecls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/c-index-redecls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/c-index-redecls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,107 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t.ast %s
-// RUN: c-index-test -test-load-tu %t.ast all
-
-// rdar://8956193 - We would blow the thread stack because of nested calls due
-//                  to redeclarations.
-
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);
-void socrates(void);

Modified: trunk/contrib/llvm/tools/clang/test/Index/cindex-from-source.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/cindex-from-source.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/cindex-from-source.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-
-// RUN: %clang -x objective-c-header %S/Inputs/cindex-from-source.h -o %t.pfx.h.gch
-// RUN: c-index-test -test-load-source local %s -include %t.pfx.h > %t
-// RUN: FileCheck %s < %t
-// CHECK: cindex-from-source.m:{{.*}}:{{.*}}: StructDecl=s0:{{.*}}:{{.*}}
-// CHECK: cindex-from-source.m:{{.*}}:{{.*}}: VarDecl=g0:{{.*}}:{{.*}}
-// CHECK: cindex-from-source.m:9:1: TypeRef=t0:1:13 Extent=[9:1 - 9:3]
-struct s0 {};
-t0 g0;
-
-// RUN: c-index-test -test-load-source-reparse 5 local %s -include %t.pfx.h > %t
-// RUN: FileCheck %s < %t

Modified: trunk/contrib/llvm/tools/clang/test/Index/cindex-on-invalid-usrs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/cindex-on-invalid-usrs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/cindex-on-invalid-usrs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: c-index-test -test-load-source-usrs local %s 2>&1 | FileCheck %s
-
-// <rdar://problem/8452791> - Crash when generating USRs.
- at interface Rdar8452791 () - (void)rdar8452791;
-
-// CHECK: error: cannot find interface declaration for 'Rdar8452791'
-// CHECK: missing '@end'

Modified: trunk/contrib/llvm/tools/clang/test/Index/cindex-on-invalid.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/cindex-on-invalid.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/cindex-on-invalid.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: c-index-test -test-load-source local %s 2>&1 | FileCheck %s
-
-// <rdar://problem/9123493>
-void test() {                              
-  goto exit;
-}
-
-int foo;
-
-#define NO 0
-
-void f(int y) {
-  if (y = NO);
-}
-
-int
-
-// CHECK: cindex-on-invalid.m:5:8: error: use of undeclared label 'exit'
-// CHECK: cindex-on-invalid.m:13:9:{13:7-13:13}
-// CHECK: cindex-on-invalid.m:21:1: error: expected identifier or '('
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/cindex-test-inclusions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/cindex-test-inclusions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/cindex-test-inclusions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: c-index-test -test-inclusion-stack-source %s 2>&1 | FileCheck %s
-
-#include "include_test.h"
-
-// CHECK: cindex-test-inclusions.c
-// CHECK: included by:
-// CHECK: include_test.h
-// CHECK: included by:
-// CHECK: cindex-test-inclusions.c:3:10
-// CHECK: include_test_2.h
-// CHECK: included by:
-// CHECK: include_test.h:1:10
-// CHECK: cindex-test-inclusions.c:3:10

Modified: trunk/contrib/llvm/tools/clang/test/Index/code-completion-skip-bodies.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/code-completion-skip-bodies.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/code-completion-skip-bodies.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-
-// This is to make sure we skip function bodies.
-void func_to_skip() {
-  undeclared1 = 0;
-}
-
-struct S { int x; };
-
-void func(S *s) {
-  undeclared2 = 0;
-  s->x = 0;
-}
-
-// RUN: c-index-test -code-completion-at=%s:11:6 %s 2> %t.stderr | FileCheck %s --check-prefix=STDOUT
-// RUN: FileCheck --input-file=%t.stderr --check-prefix=STDERR %s
-
-// STDOUT: FieldDecl:{ResultType int}{TypedText x}
-
-// STDERR-NOT: error: use of undeclared identifier 'undeclared1'
-// STDERR:     error: use of undeclared identifier 'undeclared2'

Modified: trunk/contrib/llvm/tools/clang/test/Index/code-completion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/code-completion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/code-completion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// Code-completion through the C interface
-#include "nonexistent_header.h"
-struct X {
-  int member;
-  
-  enum E { Val1 };
-};
-
-struct Y {
-  float member;
-  void memfunc(int i = 17);
-};
-
-struct Z : X, Y {
-  double member;
-  operator int() const;
-};
-struct W { };
-struct Z get_Z();
-namespace N { }
-void test_Z() {
-  // RUN: c-index-test -code-completion-at=%s:23:11 %s | FileCheck -check-prefix=CHECK-MEMBER %s
-  get_Z().member = 17;
-}
-
-
-float& overloaded(int i, long second);
-double& overloaded(float f, int second);
-int& overloaded(Z z, int second);
-                
-void test_overloaded() {
-  // RUN: c-index-test -code-completion-at=%s:33:18 %s | FileCheck -check-prefix=CHECK-OVERLOAD %s
-  overloaded(Z(), 0);
-}
-
-Z::operator int() const {
-  return 0;
-}
-
-// CHECK-MEMBER: FieldDecl:{ResultType double}{TypedText member}
-// CHECK-MEMBER: FieldDecl:{ResultType int}{Text X::}{TypedText member}
-// CHECK-MEMBER: FieldDecl:{ResultType float}{Text Y::}{TypedText member}
-// CHECK-MEMBER: CXXMethod:{ResultType void}{Informative Y::}{TypedText memfunc}{LeftParen (}{Optional {Placeholder int i}}{RightParen )}
-// CHECK-MEMBER: CXXConversion:{TypedText operator int}{LeftParen (}{RightParen )}{Informative  const}
-// CHECK-MEMBER: CXXMethod:{ResultType Z &}{TypedText operator=}{LeftParen (}{Placeholder const Z &}{RightParen )}
-// CHECK-MEMBER: CXXMethod:{ResultType X &}{Text X::}{TypedText operator=}{LeftParen (}{Placeholder const X &}{RightParen )}
-// CHECK-MEMBER: CXXMethod:{ResultType Y &}{Text Y::}{TypedText operator=}{LeftParen (}{Placeholder const Y &}{RightParen )}
-// CHECK-MEMBER: EnumConstantDecl:{ResultType X::E}{Informative E::}{TypedText Val1}
-// CHECK-MEMBER: StructDecl:{TypedText X}{Text ::}
-// CHECK-MEMBER: StructDecl:{TypedText Y}{Text ::}
-// CHECK-MEMBER: StructDecl:{TypedText Z}{Text ::}
-// CHECK-MEMBER: CXXDestructor:{ResultType void}{Informative X::}{TypedText ~X}{LeftParen (}{RightParen )}
-// CHECK-MEMBER: CXXDestructor:{ResultType void}{Informative Y::}{TypedText ~Y}{LeftParen (}{RightParen )}
-// CHECK-MEMBER: CXXDestructor:{ResultType void}{TypedText ~Z}{LeftParen (}{RightParen )}
-// CHECK-MEMBER: Completion contexts:
-// CHECK-MEMBER-NEXT: Dot member access
-// CHECK-MEMBER-NEXT: Container Kind: StructDecl
-// CHECK-MEMBER-NEXT: Container is complete
-// CHECK-MEMBER-NEXT: Container USR: c:@S at Z
-
-// CHECK-OVERLOAD: NotImplemented:{ResultType int &}{Text overloaded}{LeftParen (}{Text Z z}{Comma , }{CurrentParameter int second}{RightParen )}
-// CHECK-OVERLOAD: NotImplemented:{ResultType float &}{Text overloaded}{LeftParen (}{Text int i}{Comma , }{CurrentParameter long second}{RightParen )}
-// CHECK-OVERLOAD: NotImplemented:{ResultType double &}{Text overloaded}{LeftParen (}{Text float f}{Comma , }{CurrentParameter int second}{RightParen )}
-// CHECK-OVERLOAD: Completion contexts:
-// CHECK-OVERLOAD-NEXT: Any type
-// CHECK-OVERLOAD-NEXT: Any value
-// CHECK-OVERLOAD-NEXT: Enum tag
-// CHECK-OVERLOAD-NEXT: Union tag
-// CHECK-OVERLOAD-NEXT: Struct tag
-// CHECK-OVERLOAD-NEXT: Class name
-// CHECK-OVERLOAD-NEXT: Nested name specifier
-// CHECK-OVERLOAD-NEXT: Objective-C interface
-
-// RUN: c-index-test -code-completion-at=%s:37:10 %s | FileCheck -check-prefix=CHECK-EXPR %s
-// CHECK-EXPR: NotImplemented:{TypedText int} (50)
-// CHECK-EXPR: NotImplemented:{TypedText long} (50)
-// CHECK-EXPR: FieldDecl:{ResultType double}{TypedText member} (17)
-// CHECK-EXPR: FieldDecl:{ResultType int}{Text X::}{TypedText member} (9)
-// CHECK-EXPR: FieldDecl:{ResultType float}{Text Y::}{TypedText member} (18)
-// CHECK-EXPR: CXXMethod:{ResultType void}{TypedText memfunc}{LeftParen (}{Optional {Placeholder int i}}{RightParen )} (37)
-// CHECK-EXPR: Namespace:{TypedText N}{Text ::} (75)
-// CHECK-EXPR: Completion contexts:
-// CHECK-EXPR-NEXT: Any type
-// CHECK-EXPR-NEXT: Any value
-// CHECK-EXPR-NEXT: Enum tag
-// CHECK-EXPR-NEXT: Union tag
-// CHECK-EXPR-NEXT: Struct tag
-// CHECK-EXPR-NEXT: Class name
-// CHECK-EXPR-NEXT: Nested name specifier
-// CHECK-EXPR-NEXT: Objective-C interface

Modified: trunk/contrib/llvm/tools/clang/test/Index/codecompletion-chained.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/codecompletion-chained.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/codecompletion-chained.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-
-// <rdar://12889089>
-
-#ifndef HEADER1
-#define HEADER1
-
-// CHECK-TU: FunctionDecl:{ResultType void}{TypedText foo}
-void foo();
-
-namespace Cake {
-// CHECK-NAMESPACE: FunctionDecl:{ResultType void}{TypedText lie}
-void lie();
-}
-
-#elif !defined(HEADER2)
-#define HEADER2
-
-namespace Cake {
-extern int Baz;
-}
-
-#else
-
-void func() {
-Cake::
-}
-
-#endif
-
-// RUN: c-index-test -write-pch %t1.h.pch %s
-// RUN: c-index-test -write-pch %t2.h.pch %s -include %t1.h
-// RUN: c-index-test -code-completion-at=%s:25:1 %s -include %t2.h | FileCheck -check-prefix=CHECK-TU %s
-// RUN: c-index-test -code-completion-at=%s:25:7 %s -include %t2.h | FileCheck -check-prefix=CHECK-NAMESPACE %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-c-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-c-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-c-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s > %t/out
-// RUN: FileCheck %s < %t/out
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-// rdar://12378714
-
-/**
- * \brief Aaa.
-*/
-int global_function();
-// CHECK: <Declaration>int global_function()</Declaration>
-
-/**
- * \param x1 Aaa.
-*/
-extern void external_function(int x1);
-// CHECK: <Declaration>extern void external_function(int x1)</Declaration>
-
-/**
- * \brief global variable;
-*/
-int global_variable;
-// CHECK: <Declaration>int global_variable</Declaration>
-
-/**
- * \brief local variable;
-*/
-static int static_variable;
-// CHECK: <Declaration>static int static_variable</Declaration>
-
-/**
- * \brief external variable
-*/
-extern int external_variable;
-// CHECK: <Declaration>extern int external_variable</Declaration>
-
-int global_function() {
-  /**
-   * \brief a local variable
-  */
-  int local = 10;
-  return local;
-}
-// CHECK: <Declaration>int global_function()</Declaration>
-// CHECK: <Declaration>int local = 10</Declaration>
-
-/**
- * \brief initialized decl.
-*/
-int initialized_global = 100;
-// CHECK: <Declaration>int initialized_global = 100</Declaration>
-
-/**
- * \brief typedef example
-*/
-typedef int INT_T;
-// CHECK: <Declaration>typedef int INT_T</Declaration>
-
-/**
- * \brief aggregate type example
-*/
-struct S {
-/**
- * \brief iS1;
-*/
-  int iS1;
-/**
- * \brief dS1;
-*/
-  double dS1;
-};
-// CHECK: <Declaration>struct S {}</Declaration>
-// CHECK: <Declaration>int iS1</Declaration>
-// CHECK: <Declaration>double dS1</Declaration>
-
-/**
- * \brief enum e;
-*/
-enum e {
-  One,
-/**
- * \brief Two;
-*/
-  Two,
-  Three
-};
-// CHECK: <Declaration>enum e {}</Declaration>
-// CHECK: <Declaration>Two</Declaration>
-
-/**
- *\brief block declaration
-*/
-int (^Block) (int i, int j);
-// CHECK: <Declaration>int (^Block)(int, int)</Declaration>
-
-/**
- *\brief block declaration
-*/
-int (^Block1) (int i, int j) = ^(int i, int j) { return i + j; };
-// CHECK: <Declaration>int (^Block1)(int, int) = ^(int i, int j) {}</Declaration>

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-cplus-decls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-cplus-decls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-cplus-decls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,171 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s > %t/out
-// RUN: FileCheck %s < %t/out
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-// rdar://12378714
-
-/**
- * \brief plain c++ class
-*/
-class Test
-{
-public:
-/**
- * \brief plain c++ constructor
-*/
-    Test () : reserved (new data()) {}
-
-/**
- * \brief plain c++ member function
-*/
-    unsigned getID() const
-    {
-        return reserved->objectID;
-    }
-/**
- * \brief plain c++ destructor
-*/
-    ~Test () {}
-protected:
-    struct data {
-        unsigned objectID;
-    };
-/**
- * \brief plain c++ data field
-*/
-    data* reserved;
-};
-// CHECK: <Declaration>class Test {}</Declaration>
-// CHECK: <Declaration>Test() : reserved(new Test::data())</Declaration>
-// CHECK: <Declaration>unsigned int getID() const</Declaration>
-// CHECK: <Declaration>void ~Test()</Declaration>
-// CHECK: <Declaration>Test::data *reserved</Declaration>
-
-
-class S {
-/**
- * \brief Aaa
-*/
-  friend class Test;
-/**
- * \brief Bbb
-*/
-  friend void foo() {}
-
-/**
- * \brief Ccc
-*/
-  friend int int_func();
-
-/**
- * \brief Ddd
-*/
-  friend bool operator==(const Test &, const Test &);
-
-/**
- * \brief Eee
-*/
-template <typename T> friend void TemplateFriend();
-
-/**
- * \brief Eee
-*/
-  template <typename T> friend class TemplateFriendClass;
-
-};
-// CHECK: <Declaration>friend class Test</Declaration>
-// CHECK: <Declaration>friend void foo()</Declaration>
-// CHECK: <Declaration>friend int int_func()</Declaration>
-// CHECK: <Declaration>friend bool operator==(const Test &, const Test &)</Declaration>
-// CHECK: <Declaration>friend template <typename T> void TemplateFriend()</Declaration>
-// CHECK: <Declaration>friend template <typename T> class TemplateFriendClass</Declaration>
-
-namespace test0 {
-  namespace ns {
-    void f(int);
-  }
-
-  struct A {
-/**
- * \brief Fff
-*/
-    friend void ns::f(int a);
-  };
-}
-// CHECK: <Declaration>friend void f(int a)</Declaration>
-
-namespace test1 {
-  template <class T> struct Outer {
-    void foo(T);
-    struct Inner {
-/**
- * \brief Ggg
-*/
-      friend void Outer::foo(T);
-    };
-  };
-}
-// CHECK: <Declaration>friend void foo(T)</Declaration>
-
-namespace test2 {
-  namespace foo {
-    void Func(int x);
-  }
-
-  class Bar {
-/**
- * \brief Hhh
-*/
-    friend void ::test2::foo::Func(int x);
-  };
-}
-// CHECK: <Declaration>friend void Func(int x)</Declaration>
-
-namespace test3 {
-  template<class T> class vector {
-   public:
-    vector(int i) {}
-/**
- * \brief Iii
-*/
-    void f(const T& t = T()) {}
-  };
-  class A {
-   private:
-/**
- * \brief Jjj
-*/
-    friend void vector<A>::f(const A&);
-  };
-}
-// CHECK: <Declaration>void f(const T &t = T())</Declaration>
-// CHECK: <Declaration>friend void f(const test3::A &)</Declaration>
-
-class MyClass
-{
-/**
- * \brief plain friend test.
-*/
-  friend class MyClass;
-};
-// CHECK: <Declaration>friend  class MyClass</Declaration>
-
-template<class _Tp> class valarray
-{
-private:
-/**
- * \brief template friend test.
-*/
-    template <class T> friend class valarray;
-};
-// CHECK: <Declaration>template <class T> class valarray</Declaration>
-// CHECK: <Declaration>friend template <class T> class valarray</Declaration>
-
-class gslice
-{
-  valarray<unsigned> __size_;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-cplus-template-decls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-cplus-template-decls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-cplus-template-decls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 std=c++11 %s > %t/out
-// RUN: FileCheck %s < %t/out
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-// rdar://12378714
-
-/**
- * \brief Aaa
-*/
-template<typename T> struct A {
-/**
- * \brief Bbb
-*/
-  A();
-/**
- * \brief Ccc
-*/
-  ~A();
-/**
- * \brief Ddd
-*/
-  void f() { }
-};
-// CHECK: <Declaration>template <typename T> struct A {}</Declaration>
-// CHECK: <Declaration>A<T>()</Declaration>
-// CHECK: <Declaration>void ~A<T>()</Declaration>
-
-/**
- * \Brief Eee
-*/
-template <typename T> struct D : A<T> {
-/**
- * \brief
-*/
-  using A<T>::f;
-  
-  void f();
-};
-// CHECK: <Declaration>template <typename T> struct D :  A<T> {}</Declaration>
-// CHECK: <Declaration>using A<T>::f</Declaration>
-
-struct Base {
-    int foo;
-};
-/**
- * \brief
-*/
-template<typename T> struct E : Base {
-/**
- * \brief
-*/
-  using Base::foo;
-};
-// CHECK: <Declaration>template <typename T> struct E :  Base {}</Declaration>
-// CHECK: <Declaration>using Base::foo</Declaration>
-
-/// \tparam
-/// \param AAA Blah blah
-template<typename T>
-void func_template_1(T AAA);
-// CHECK: <Declaration>template <typename T> void func_template_1(T AAA)</Declaration>
-
-template<template<template<typename CCC> class DDD, class BBB> class AAA>
-void func_template_2();
-// FIXME: There is not Declaration field in the generated output.

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-cplus11-specific.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-cplus11-specific.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-cplus11-specific.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng std=c++11 %s > %t/out
-// RUN: FileCheck %s < %t/out
-// rdar://13752382
-
-namespace inner {
-  //! This documentation should be inherited.
-  struct Opaque;
-}
-// CHECK:         (CXComment_Text Text=[ This documentation should be inherited.])))] 
-
-namespace borrow {
-  //! This is documentation for the typedef (which shows up).
-  typedef inner::Opaque Typedef;
-// CHECK:         (CXComment_Text Text=[ This is documentation for the typedef (which shows up).])))] 
-
-  //! This is documentation for the alias (which shows up).
-  using Alias = inner::Opaque;
-// CHECK:         (CXComment_Text Text=[ This is documentation for the alias (which shows up).])))] 
-
-  typedef inner::Opaque NoDocTypedef;
-// CHECK:         (CXComment_Text Text=[ This documentation should be inherited.])))] 
-
-  using NoDocAlias = inner::Opaque;
-// CHECK:         (CXComment_Text Text=[ This documentation should be inherited.])))] 
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-custom-block-command.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-custom-block-command.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-custom-block-command.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-
-// Check that custom block commands are defined correctly.
-// RUN: %clang_cc1 -fcomment-block-commands=CustomCommand -x c++ -std=c++11 -emit-pch -o %t/out.pch %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -fcomment-block-commands=CustomCommand -include-pch %t/out.pch -fsyntax-only %s
-
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s -std=c++11 -fcomment-block-commands=CustomCommand > %t/out.c-index-direct
-// RUN: c-index-test -test-load-tu %t/out.pch all > %t/out.c-index-pch
-
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-direct
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-pch
-
-// Ensure that XML is not invalid
-// WRONG-NOT: CommentXMLInvalid
-
-// RUN: FileCheck %s < %t/out.c-index-direct
-// RUN: FileCheck %s < %t/out.c-index-pch
-
-// XFAIL: valgrind
-
-#ifndef HEADER
-#define HEADER
-
-/// \CustomCommand Aaa.
-void comment_custom_block_command_1();
-
-// CHECK: comment-custom-block-command.cpp:[[@LINE-2]]:6: FunctionDecl=comment_custom_block_command_1:{{.*}} FullCommentAsHTML=[<p> Aaa.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-custom-block-command.cpp" line="[[@LINE-2]]" column="6"><Name>comment_custom_block_command_1</Name><USR>c:@F at comment_custom_block_command_1#</USR><Declaration>void comment_custom_block_command_1()</Declaration><Discussion><Para> Aaa.</Para></Discussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[CustomCommand]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.]))))]
-
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-misc-tags.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-misc-tags.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-misc-tags.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,110 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out
-// RUN: FileCheck %s < %t/out
-// rdar://12379114
-
-/*!
-     @interface IOCommandGate
-     @brief    This is a brief
-     @abstract Single-threaded work-loop client request mechanism.
-     @discussion An IOCommandGate instance is an extremely light weight mechanism that
-         executes an action on the driver's work-loop...
-     @textblock
-       Many discussions about text
-       Many1 discussions about text
-       Many2 discussions about text
-     @/textblock
-     @link //un_ref/c/func/function_name link text goes here @/link
-     @see  //un_ref/doc/uid/XX0000011 I/O Kit Fundamentals
-     @seealso //k_ref/doc/uid/XX30000905-CH204 Programming
- */
- at interface IOCommandGate
- at end
-
-// CHECK:       (CXComment_BlockCommand CommandName=[abstract]
-// CHECK-NEXT:    (CXComment_Paragraph
-// CHECK-NEXT:       (CXComment_Text Text=[ Single-threaded work-loop client request mechanism.] HasTrailingNewline)
-// CHECK:       (CXComment_BlockCommand CommandName=[discussion]
-// CHECK-NEXT:     (CXComment_Paragraph
-// CHECK-NEXT:       (CXComment_Text Text=[ An IOCommandGate instance is an extremely light weight mechanism that] HasTrailingNewline)
-// CHECK-NEXT:       (CXComment_Text Text=[         executes an action on the driver's work-loop...] HasTrailingNewline)
-// CHECK:       (CXComment_VerbatimBlockCommand CommandName=[textblock]
-// CHECK-NEXT:     (CXComment_VerbatimBlockLine Text=[       Many discussions about text])
-// CHECK-NEXT:       (CXComment_VerbatimBlockLine Text=[       Many1 discussions about text])
-// CHECK-NEXT:       (CXComment_VerbatimBlockLine Text=[       Many2 discussions about text]))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-
-// CHECK:       (CXComment_VerbatimBlockCommand CommandName=[link]
-// CHECK-NEXT:     (CXComment_VerbatimBlockLine Text=[ //un_ref/c/func/function_name link text goes here ]))
-// CHECK-NEXT:     (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:     (CXComment_Text Text=[     ] IsWhitespace))
-// CHECK:       (CXComment_BlockCommand CommandName=[see]
-// CHECK-NEXT:     (CXComment_Paragraph
-// CHECK-NEXT:     (CXComment_Text Text=[  //un_ref/doc/uid/XX0000011 I/O Kit Fundamentals] HasTrailingNewline)
-// CHECK-NEXT:     (CXComment_Text Text=[     ] IsWhitespace)))
-// CHECK:       (CXComment_BlockCommand CommandName=[seealso]
-// CHECK-NEXT:     (CXComment_Paragraph
-// CHECK-NEXT:     (CXComment_Text Text=[ //k_ref/doc/uid/XX30000905-CH204 Programming] HasTrailingNewline)
-
-// rdar://12379053
-/*!
-\arg \c AlignLeft left alignment.
-\li \c AlignRight right alignment.
-
-  No other types of alignment are supported.
-*/
-struct S {
-  int AlignLeft;
-  int AlignRight;
-};
-
-// CHECK:       (CXComment_BlockCommand CommandName=[arg]
-// CHECK-NEXT:    (CXComment_Paragraph
-// CHECK-NEXT:    (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:    (CXComment_InlineCommand CommandName=[c] RenderMonospaced Arg[0]=AlignLeft)
-// CHECK-NEXT:    (CXComment_Text Text=[ left alignment.] HasTrailingNewline)))
-// CHECK:       (CXComment_BlockCommand CommandName=[li]
-// CHECK-NEXT:    (CXComment_Paragraph
-// CHECK-NEXT:    (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:    (CXComment_InlineCommand CommandName=[c] RenderMonospaced Arg[0]=AlignRight)
-// CHECK-NEXT:    (CXComment_Text Text=[ right alignment.])))
-// CHECK:       (CXComment_Paragraph
-// CHECK-NEXT:    (CXComment_Text Text=[  No other types of alignment are supported.]))
-
-// rdar://12379053
-/*! \struct Test
- * Normal text.
- *
- * \par User defined paragraph:
- * Contents of the paragraph.
- *
- * \par
- * New paragraph under the same heading.
- *
- * \note
- * This note consists of two paragraphs.
- * This is the first paragraph.
- *
- * \par
- * And this is the second paragraph.
- *
- * More normal text.
- */
-  
-struct Test {int filler;};
-
-// CHECK:       (CXComment_BlockCommand CommandName=[par]
-// CHECK-NEXT:     (CXComment_Paragraph
-// CHECK-NEXT:        (CXComment_Text Text=[ User defined paragraph:] HasTrailingNewline)
-// CHECK-NEXT:        (CXComment_Text Text=[ Contents of the paragraph.])))
-// CHECK:       (CXComment_BlockCommand CommandName=[par]
-// CHECK-NEXT:     (CXComment_Paragraph
-// CHECK-NEXT:        (CXComment_Text Text=[ New paragraph under the same heading.])))
-// CHECK:       (CXComment_BlockCommand CommandName=[note]
-// CHECK-NEXT:     (CXComment_Paragraph
-// CHECK-NEXT:        (CXComment_Text Text=[ This note consists of two paragraphs.] HasTrailingNewline)
-// CHECK-NEXT:        (CXComment_Text Text=[ This is the first paragraph.])))
-// CHECK:       (CXComment_BlockCommand CommandName=[par]
-// CHECK-NEXT:     (CXComment_Paragraph
-// CHECK-NEXT:     (CXComment_Text Text=[ And this is the second paragraph.])))

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-objc-decls.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-objc-decls.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-objc-decls.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,175 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s > %t/out
-// RUN: FileCheck %s < %t/out
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-
-// rdar://12378714
-
-/**
- * \brief This is a protocol definition
-*/
- at protocol MyProto
- at optional
-/**
- * \brief MethodMyProto method
- * \param[in] anObject input value
- * \param[in] range output value is unsigned int
- * \result return index
- */
-- (unsigned int)MethodMyProto:(id)anObject inRange:(unsigned int)range;
-/**
- * \brief PropertyMyProto - This is protocol's property.
-*/
- at property (copy) id PropertyMyProto;
-/**
- * \brief ClassMethodMyProto
-*/
-+ ClassMethodMyProto;
- at end
-// CHECK: <Declaration>@protocol MyProto\n at end</Declaration>
-// CHECK: <Declaration>- (unsigned int)MethodMyProto:(id)anObject inRange:(unsigned int)range;</Declaration>
-// CHECK: <Declaration>@optional\n at property(readwrite, copy, atomic) id PropertyMyProto;</Declaration>
-// CHECK: <Declaration>+ (id)ClassMethodMyProto;</Declaration>
-
-/**
- * \brief NSObject is the root class.
-*/
- at interface NSObject {
-/**
- * \brief IvarNSObject
-*/
-  id IvarNSObject;
-}
- at end
-// CHECK: Declaration>@interface NSObject {\n  id IvarNSObject;\n}\n at end</Declaration>
-// CHECK: <Declaration>id IvarNSObject</Declaration>
-
-/**
- * \brief MyClass - primary class.
-*/
- at interface MyClass : NSObject<MyProto>
-{
-/**
- * \brief IvarMyClass - IvarMyClass of values.
-*/
-  id IvarMyClass;
-}
-/**
- * \brief MethodMyClass is instance method.
-*/
-- MethodMyClass;
-
-/**
- * \brief ClassMethodMyClass is class method.
-*/
-+ ClassMethodMyClass;
-
-/**
- * \brief PropertyMyClass - This is class's property.
-*/
- at property (copy) id PropertyMyClass;
- at end
-// CHECK: <Declaration>@interface MyClass : NSObject <MyProto> {\n    id IvarMyClass;\n}\n at end</Declaration>
-// CHECK: <Declaration>id IvarMyClass</Declaration>
-// CHECK: <Declaration>- (id)MethodMyClass;</Declaration>
-// CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration>
-// CHECK: <Declaration>@property(readwrite, copy, atomic) id PropertyMyClass;</Declaration
-
-/**
- * \brief - This is class extension of MyClass
-*/
- at interface MyClass()
-{
-/**
- * \brief IvarMyClassExtension - IvarMyClassExtension private to class extension
-*/
-  id IvarMyClassExtension;
-}
- at end
-// CHECK: <Declaration>@interface MyClass () {\n  id IvarMyClassExtension;\n}\n at end</Declaration>
-// CHECK: <Declaration>id IvarMyClassExtension</Declaration>
-
-
-/**
- * \brief MyClass (Category) is private to MyClass.
-*/
- at interface MyClass (Category)
-/**
- * \brief This is private to MyClass
- */
-- (void)MethodMyClassCategory;
-
-/**
- * \brief PropertyMyClassCategory - This is class's private property.
-*/
- at property (copy) id PropertyMyClassCategory;
- at end
-// CHECK: <Declaration>@interface MyClass (Category)\n at end</Declaration>
-// CHECK: <Declaration>- (void)MethodMyClassCategory;</Declaration>
-// CHECK: <Declaration>@property(readwrite, copy, atomic) id PropertyMyClassCategory;</Declaration>
-// CHECK: <Declaration>- (id)PropertyMyClassCategory;</Declaration>
-// CHECK: <Declaration>- (void)setPropertyMyClassCategory:(id)arg;</Declaration>
-
-/// @implementation's
-
-/**
- * \brief implementation of MyClass class.
-*/
- at implementation MyClass {
-/**
- * \brief IvarPrivateToMyClassImpl.
-*/
-  id IvarPrivateToMyClassImpl;
-}
-/**
- * \brief MethodMyClass is instance method implementation.
-*/
-- MethodMyClass {
-  return 0;
-}
-
-/**
- * \brief ClassMethodMyClass is class method implementation.
-*/
-+ ClassMethodMyClass {
-  return 0;
-}
- at end
-// CHECK: <Declaration>@implementation MyClass {\n  id IvarPrivateToMyClassImpl;\n  id _PropertyMyClass;\n}\n at end</Declaration>
-// CHECK: <Declaration>id IvarPrivateToMyClassImpl</Declaration>
-// CHECK: <Declaration>- (id)MethodMyClass;</Declaration>
-// CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration>
-
-/**
- * \brief MyClass (Category) is implementation of private to MyClass.
-*/
- at implementation MyClass (Category)
-/**
- * \brief This is private to MyClass
- */
-- (void)MethodMyClassCategory {}
-/**
- * \brief property getter
-*/
-- (id) PropertyMyClassCategory { return 0; }
-
-/**
- * \brief property setter
-*/
-- (void) setPropertyMyClassCategory : (id) arg {}
- at end
-// CHECK: <Declaration>@implementation MyClass (Category)\n at end</Declaration>
-// CHECK: <Declaration>- (void)MethodMyClassCategory;</Declaration>
-// CHECK: <Declaration>- (id)PropertyMyClassCategory;</Declaration>
-// CHECK: <Declaration>- (void)setPropertyMyClassCategory:(id)arg;</Declaration>
-
-/**
- * \brief NSObject implementation
-*/
- at implementation NSObject
- at end
-// CHECK: <Declaration>@implementation NSObject\n at end</Declaration>

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-to-html-xml-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-to-html-xml-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-to-html-xml-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,797 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-
-// This file contains UTF-8 sequences.  Please don't "fix" them!
-
-// Check that we serialize comment source locations properly.
-// RUN: %clang_cc1 -x c++ -std=c++11 -emit-pch -o %t/out.pch %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -include-pch %t/out.pch -fsyntax-only %s
-
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s -std=c++11 > %t/out.c-index-direct
-// RUN: c-index-test -test-load-tu %t/out.pch all > %t/out.c-index-pch
-
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-direct
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-pch
-
-// Ensure that XML is not invalid
-// WRONG-NOT: CommentXMLInvalid
-
-// RUN: FileCheck %s < %t/out.c-index-direct
-// RUN: FileCheck %s < %t/out.c-index-pch
-
-// XFAIL: msan
-// XFAIL: valgrind
-
-#ifndef HEADER
-#define HEADER
-
-/// Aaa.
-void comment_to_html_conversion_1();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_1:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_1</Name><USR>c:@F at comment_to_html_conversion_1#</USR><Declaration>void comment_to_html_conversion_1()</Declaration><Abstract><Para> Aaa.</Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Aaa.])))]
-
-/// \brief Aaa.
-void comment_to_html_conversion_2();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_2:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_2</Name><USR>c:@F at comment_to_html_conversion_2#</USR><Declaration>void comment_to_html_conversion_2()</Declaration><Abstract><Para> Aaa.</Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[brief]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.]))))]
-
-/// \short Aaa.
-void comment_to_html_conversion_3();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_3:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_3</Name><USR>c:@F at comment_to_html_conversion_3#</USR><Declaration>void comment_to_html_conversion_3()</Declaration><Abstract><Para> Aaa.</Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[short]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.]))))]
-
-/// Aaa.
-///
-/// \brief Bbb.
-void comment_to_html_conversion_4();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_4:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Bbb.</p><p> Aaa.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_4</Name><USR>c:@F at comment_to_html_conversion_4#</USR><Declaration>void comment_to_html_conversion_4()</Declaration><Abstract><Para> Bbb.</Para></Abstract><Discussion><Para> Aaa.</Para></Discussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Aaa.]))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[brief]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.]))))]
-
-/// Aaa.
-///
-/// \brief Bbb.
-///
-/// Ccc.
-void comment_to_html_conversion_5();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_5:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Bbb.</p><p> Aaa.</p><p> Ccc.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_5</Name><USR>c:@F at comment_to_html_conversion_5#</USR><Declaration>void comment_to_html_conversion_5()</Declaration><Abstract><Para> Bbb.</Para></Abstract><Discussion><Para> Aaa.</Para><Para> Ccc.</Para></Discussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Aaa.]))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[brief]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.])))
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Ccc.])))]
-
-/// \brief Aaa.
-/// \brief Bbb.
-void comment_to_html_conversion_6();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_6:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa. </p><p class="para-brief"> Bbb.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_6</Name><USR>c:@F at comment_to_html_conversion_6#</USR><Declaration>void comment_to_html_conversion_6()</Declaration><Abstract><Para> Aaa. </Para></Abstract><Discussion><Para> Bbb.</Para></Discussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[brief]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[brief]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.]))))]
-
-/// Aaa.
-///
-/// \return Bbb.
-void comment_to_html_conversion_7();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_7:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p class="para-returns"><span class="word-returns">Returns</span>  Bbb.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_7</Name><USR>c:@F at comment_to_html_conversion_7#</USR><Declaration>void comment_to_html_conversion_7()</Declaration><Abstract><Para> Aaa.</Para></Abstract><ResultDiscussion><Para> Bbb.</Para></ResultDiscussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Aaa.]))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[return]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.]))))]
-
-/// Aaa.
-///
-/// \returns Bbb.
-void comment_to_html_conversion_8();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_8:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p class="para-returns"><span class="word-returns">Returns</span>  Bbb.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_8</Name><USR>c:@F at comment_to_html_conversion_8#</USR><Declaration>void comment_to_html_conversion_8()</Declaration><Abstract><Para> Aaa.</Para></Abstract><ResultDiscussion><Para> Bbb.</Para></ResultDiscussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Aaa.]))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[returns]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.]))))]
-
-/// Aaa.
-///
-/// \result Bbb.
-void comment_to_html_conversion_9();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_9:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p class="para-returns"><span class="word-returns">Returns</span>  Bbb.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_9</Name><USR>c:@F at comment_to_html_conversion_9#</USR><Declaration>void comment_to_html_conversion_9()</Declaration><Abstract><Para> Aaa.</Para></Abstract><ResultDiscussion><Para> Bbb.</Para></ResultDiscussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Aaa.]))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[result]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.]))))]
-
-/// \returns Aaa.
-/// \returns Bbb.
-void comment_to_html_conversion_10();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_10:{{.*}} FullCommentAsHTML=[<p class="para-returns"><span class="word-returns">Returns</span>  Bbb.</p><p class="para-returns"><span class="word-returns">Returns</span>  Aaa. </p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_10</Name><USR>c:@F at comment_to_html_conversion_10#</USR><Declaration>void comment_to_html_conversion_10()</Declaration><ResultDiscussion><Para> Aaa. </Para></ResultDiscussion><Discussion><Para> Bbb.</Para></Discussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[returns]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[returns]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.]))))]
-
-/// Aaa.
-///
-/// Bbb.
-///
-/// \returns Ccc.
-void comment_to_html_conversion_11();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_11:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p> Bbb.</p><p class="para-returns"><span class="word-returns">Returns</span>  Ccc.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_11</Name><USR>c:@F at comment_to_html_conversion_11#</USR><Declaration>void comment_to_html_conversion_11()</Declaration><Abstract><Para> Aaa.</Para></Abstract><ResultDiscussion><Para> Ccc.</Para></ResultDiscussion><Discussion><Para> Bbb.</Para></Discussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Aaa.]))
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Bbb.]))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[returns]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Ccc.]))))]
-
-/// \param
-void comment_to_html_conversion_12(int x1);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_12:{{.*}} FullCommentAsHTML=[] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_12</Name><USR>c:@F at comment_to_html_conversion_12#I#</USR><Declaration>void comment_to_html_conversion_12(int x1)</Declaration></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[] ParamIndex=Invalid
-// CHECK-NEXT:         (CXComment_Paragraph IsWhitespace)))]
-
-/// \param x1 Aaa.
-void comment_to_html_conversion_13(int x1);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_13:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-0">x1</dt><dd class="param-descr-index-0"> Aaa.</dd></dl>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_13</Name><USR>c:@F at comment_to_html_conversion_13#I#</USR><Declaration>void comment_to_html_conversion_13(int x1)</Declaration><Parameters><Parameter><Name>x1</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Aaa.</Para></Discussion></Parameter></Parameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[x1] ParamIndex=0
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.]))))]
-
-/// \param zzz Aaa.
-void comment_to_html_conversion_14(int x1);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_14:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-invalid">zzz</dt><dd class="param-descr-index-invalid"> Aaa.</dd></dl>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_14</Name><USR>c:@F at comment_to_html_conversion_14#I#</USR><Declaration>void comment_to_html_conversion_14(int x1)</Declaration><Parameters><Parameter><Name>zzz</Name><Direction isExplicit="0">in</Direction><Discussion><Para> Aaa.</Para></Discussion></Parameter></Parameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[zzz] ParamIndex=Invalid
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.]))))]
-
-/// \param x2 Bbb.
-/// \param x1 Aaa.
-void comment_to_html_conversion_15(int x1, int x2);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_15:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-0">x1</dt><dd class="param-descr-index-0"> Aaa.</dd><dt class="param-name-index-1">x2</dt><dd class="param-descr-index-1"> Bbb. </dd></dl>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_15</Name><USR>c:@F at comment_to_html_conversion_15#I#I#</USR><Declaration>void comment_to_html_conversion_15(int x1, int x2)</Declaration><Parameters><Parameter><Name>x1</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Aaa.</Para></Discussion></Parameter><Parameter><Name>x2</Name><Index>1</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Bbb. </Para></Discussion></Parameter></Parameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[x2] ParamIndex=1
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[x1] ParamIndex=0
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.]))))]
-
-/// \param x2 Bbb.
-/// \param zzz Aaa.
-/// \param x1 Aaa.
-void comment_to_html_conversion_16(int x1, int x2);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_16:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-0">x1</dt><dd class="param-descr-index-0"> Aaa.</dd><dt class="param-name-index-1">x2</dt><dd class="param-descr-index-1"> Bbb. </dd><dt class="param-name-index-invalid">zzz</dt><dd class="param-descr-index-invalid"> Aaa. </dd></dl>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_16</Name><USR>c:@F at comment_to_html_conversion_16#I#I#</USR><Declaration>void comment_to_html_conversion_16(int x1, int x2)</Declaration><Parameters><Parameter><Name>x1</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Aaa.</Para></Discussion></Parameter><Parameter><Name>x2</Name><Index>1</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Bbb. </Para></Discussion></Parameter><Parameter><Name>zzz</Name><Direction isExplicit="0">in</Direction><Discussion><Para> Aaa. </Para></Discussion></Parameter></Parameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[x2] ParamIndex=1
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[zzz] ParamIndex=Invalid
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[x1] ParamIndex=0
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.]))))]
-
-/// \tparam
-/// \param aaa Blah blah
-template<typename T>
-void comment_to_html_conversion_17(T aaa);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionTemplate=comment_to_html_conversion_17:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-0">aaa</dt><dd class="param-descr-index-0"> Blah blah</dd></dl>] FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_17</Name><USR>c:@FT@>1#Tcomment_to_html_conversion_17#t0.0#</USR><Declaration>template <typename T> void comment_to_html_conversion_17(T aaa)</Declaration><Parameters><Parameter><Name>aaa</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Blah blah</Para></Discussion></Parameter></Parameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[] ParamPosition=Invalid
-// CHECK-NEXT:         (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[aaa] ParamIndex=0
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Blah blah]))))]
-
-/// \tparam T
-/// \param aaa Blah blah
-template<typename T>
-void comment_to_html_conversion_18(T aaa);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionTemplate=comment_to_html_conversion_18:{{.*}} FullCommentAsHTML=[<dl><dt class="param-name-index-0">aaa</dt><dd class="param-descr-index-0"> Blah blah</dd></dl>] FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_18</Name><USR>c:@FT@>1#Tcomment_to_html_conversion_18#t0.0#</USR><Declaration>template <typename T> void comment_to_html_conversion_18(T aaa)</Declaration><Parameters><Parameter><Name>aaa</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Blah blah</Para></Discussion></Parameter></Parameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[T] ParamPosition={0}
-// CHECK-NEXT:         (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[aaa] ParamIndex=0
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Blah blah]))))]
-
-/// \tparam T2 Bbb
-/// \tparam T1 Aaa
-template<typename T1, typename T2>
-void comment_to_html_conversion_19(T1 aaa, T2 bbb);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionTemplate=comment_to_html_conversion_19:{{.*}} FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">T1</dt><dd class="tparam-descr-index-0"> Aaa</dd><dt class="tparam-name-index-1">T2</dt><dd class="tparam-descr-index-1"> Bbb </dd></dl>] FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_19</Name><USR>c:@FT@>2#T#Tcomment_to_html_conversion_19#t0.0#t0.1#</USR><Declaration>template <typename T1, typename T2>\nvoid comment_to_html_conversion_19(T1 aaa, T2 bbb)</Declaration><TemplateParameters><Parameter><Name>T1</Name><Index>0</Index><Discussion><Para> Aaa</Para></Discussion></Parameter><Parameter><Name>T2</Name><Index>1</Index><Discussion><Para> Bbb </Para></Discussion></Parameter></TemplateParameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[T2] ParamPosition={1}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[T1] ParamPosition={0}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa]))))]
-
-/// \tparam T2 Bbb
-/// \tparam U Zzz
-/// \tparam V Ccc
-/// \tparam T1 Aaa
-template<typename T1, typename T2, int V>
-void comment_to_html_conversion_20(T1 aaa, T2 bbb);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionTemplate=comment_to_html_conversion_20:{{.*}} FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">T1</dt><dd class="tparam-descr-index-0"> Aaa</dd><dt class="tparam-name-index-1">T2</dt><dd class="tparam-descr-index-1"> Bbb </dd><dt class="tparam-name-index-2">V</dt><dd class="tparam-descr-index-2"> Ccc </dd><dt class="tparam-name-index-invalid">U</dt><dd class="tparam-descr-index-invalid"> Zzz </dd></dl>] FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_20</Name><USR>c:@FT@>3#T#T#NIcomment_to_html_conversion_20#t0.0#t0.1#</USR><Declaration>template <typename T1, typename T2, int V>\nvoid comment_to_html_conversion_20(T1 aaa, T2 bbb)</Declaration><TemplateParameters><Parameter><Name>T1</Name><Index>0</Index><Discussion><Para> Aaa</Para></Discussion></Parameter><Parameter><Name>T2</Name><Index>1</Index><Discussion><Para> Bbb </Para></Discussion></Parameter><Parameter><Name>V</Name><Index>2</Index><Discussion><Para> Ccc </Para></Discussion></Parameter><Parameter><Name>U</Name><Discussion><Para> Zzz </Para></Discussion></Parameter></TemplateParameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[T2] ParamPosition={1}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[U] ParamPosition=Invalid
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Zzz] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[V] ParamPosition={2}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Ccc] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[T1] ParamPosition={0}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa]))))]
-
-/// \tparam TTT Ddd
-/// \tparam C Ccc
-/// \tparam T Aaa
-/// \tparam TT Bbb
-template<template<template<typename T> class TT, class C> class TTT>
-void comment_to_html_conversion_21();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionTemplate=comment_to_html_conversion_21:{{.*}} FullCommentAsHTML=[<dl><dt class="tparam-name-index-0">TTT</dt><dd class="tparam-descr-index-0"> Ddd </dd><dt class="tparam-name-index-other">C</dt><dd class="tparam-descr-index-other"> Ccc </dd><dt class="tparam-name-index-other">T</dt><dd class="tparam-descr-index-other"> Aaa </dd><dt class="tparam-name-index-other">TT</dt><dd class="tparam-descr-index-other"> Bbb</dd></dl>] FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_21</Name><USR>c:@FT@>1#t>2#t>1#T#Tcomment_to_html_conversion_21#</USR><Declaration>template <template <template <typename T> class TT, class C> class TTT>\nvoid comment_to_html_conversion_21()</Declaration><TemplateParameters><Parameter><Name>TTT</Name><Index>0</Index><Discussion><Para> Ddd </Para></Discussion></Parameter><Parameter><Name>C</Name><Discussion><Para> Ccc </Para></Discussion></Parameter><Parameter><Name>T</Name><Discussion><Para> Aaa </Para></Discussion></Parameter><Parameter><Name>TT</Name><Discussion><Para> Bbb</Para></Discussion></Parameter></TemplateParameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[TTT] ParamPosition={0}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Ddd] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[C] ParamPosition={0, 1}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Ccc] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[T] ParamPosition={0, 0, 0}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[TT] ParamPosition={0, 0}
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Bbb]))))]
-
-/// \brief Aaa.
-///
-/// Bbb.
-///
-/// \param x2 Ddd.
-/// \param x1 Ccc.
-/// \returns Eee.
-void comment_to_html_conversion_22(int x1, int x2);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_22:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Aaa.</p><p> Bbb.</p><dl><dt class="param-name-index-0">x1</dt><dd class="param-descr-index-0"> Ccc. </dd><dt class="param-name-index-1">x2</dt><dd class="param-descr-index-1"> Ddd. </dd></dl><p class="para-returns"><span class="word-returns">Returns</span>  Eee.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_22</Name><USR>c:@F at comment_to_html_conversion_22#I#I#</USR><Declaration>void comment_to_html_conversion_22(int x1, int x2)</Declaration><Abstract><Para> Aaa.</Para></Abstract><Parameters><Parameter><Name>x1</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Ccc. </Para></Discussion></Parameter><Parameter><Name>x2</Name><Index>1</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Ddd. </Para></Discussion></Parameter></Parameters><ResultDiscussion><Para> Eee.</Para></ResultDiscussion><Discussion><Para> Bbb.</Para></Discussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[brief]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Aaa.])))
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Bbb.]))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[x2] ParamIndex=1
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Ddd.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[x1] ParamIndex=0
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Ccc.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[ ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[returns]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Eee.]))))]
-
-/// <br><a href="http://example.com/">Aaa</a>
-void comment_to_html_conversion_23();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_23:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <br><a href="http://example.com/">Aaa</a></p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_23</Name><USR>c:@F at comment_to_html_conversion_23#</USR><Declaration>void comment_to_html_conversion_23()</Declaration><Abstract><Para> <rawHTML><![CDATA[<br>]]></rawHTML><rawHTML><![CDATA[<a href="http://example.com/">]]></rawHTML>Aaa<rawHTML></a></rawHTML></Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_HTMLStartTag Name=[br])
-// CHECK-NEXT:         (CXComment_HTMLStartTag Name=[a] Attrs: href=http://example.com/)
-// CHECK-NEXT:         (CXComment_Text Text=[Aaa])
-// CHECK-NEXT:         (CXComment_HTMLEndTag Name=[a])))]
-
-/// \verbatim
-/// <a href="http://example.com/">Aaa</a>
-/// <a href='http://example.com/'>Aaa</a>
-/// \endverbatim
-void comment_to_html_conversion_24();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_24:{{.*}} FullCommentAsHTML=[<pre> <a href="http://example.com/">Aaa</a>\n <a href='http://example.com/'>Aaa</a></pre>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_24</Name><USR>c:@F at comment_to_html_conversion_24#</USR><Declaration>void comment_to_html_conversion_24()</Declaration><Discussion><Verbatim xml:space="preserve" kind="verbatim"> <a href="http://example.com/">Aaa</a>\n <a href='http://example.com/'>Aaa</a></Verbatim></Discussion></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_VerbatimBlockCommand CommandName=[verbatim]
-// CHECK-NEXT:         (CXComment_VerbatimBlockLine Text=[ <a href="http://example.com/">Aaa</a>])
-// CHECK-NEXT:         (CXComment_VerbatimBlockLine Text=[ <a href='http://example.com/'>Aaa</a>])))]
-
-/// \function foo
-/// \class foo
-/// \method foo
-/// \interface foo
-/// Blah blah.
-void comment_to_html_conversion_25();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_25:{{.*}} FullCommentAsHTML=[<p class="para-brief"> Blah blah.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_25</Name><USR>c:@F at comment_to_html_conversion_25#</USR><Declaration>void comment_to_html_conversion_25()</Declaration><Abstract><Para> Blah blah.</Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_VerbatimLine Text=[ foo])
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_VerbatimLine Text=[ foo])
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_VerbatimLine Text=[ foo])
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_VerbatimLine Text=[ foo])
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Blah blah.])))]
-
-/// \unknown
-void comment_to_html_conversion_26();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_26:{{.*}} FullCommentAsHTML=[<p class="para-brief"> </p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_26</Name><USR>c:@F at comment_to_html_conversion_26#</USR><Declaration>void comment_to_html_conversion_26()</Declaration><Abstract><Para> </Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[unknown] RenderNormal)))]
-
-/// \b Aaa
-void comment_to_html_conversion_27();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_27:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <b>Aaa</b></p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_27</Name><USR>c:@F at comment_to_html_conversion_27#</USR><Declaration>void comment_to_html_conversion_27()</Declaration><Abstract><Para> <bold>Aaa</bold></Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[b] RenderBold Arg[0]=Aaa)))]
-
-/// \c Aaa \p Bbb
-void comment_to_html_conversion_28();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_28:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <tt>Aaa</tt> <tt>Bbb</tt></p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_28</Name><USR>c:@F at comment_to_html_conversion_28#</USR><Declaration>void comment_to_html_conversion_28()</Declaration><Abstract><Para> <monospaced>Aaa</monospaced> <monospaced>Bbb</monospaced></Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[c] RenderMonospaced Arg[0]=Aaa)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[p] RenderMonospaced Arg[0]=Bbb)))]
-
-/// \a Aaa \e Bbb \em Ccc
-void comment_to_html_conversion_29();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_29:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <em>Aaa</em> <em>Bbb</em> <em>Ccc</em></p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_29</Name><USR>c:@F at comment_to_html_conversion_29#</USR><Declaration>void comment_to_html_conversion_29()</Declaration><Abstract><Para> <emphasized>Aaa</emphasized> <emphasized>Bbb</emphasized> <emphasized>Ccc</emphasized></Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[a] RenderEmphasized Arg[0]=Aaa)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[e] RenderEmphasized Arg[0]=Bbb)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[em] RenderEmphasized Arg[0]=Ccc)))]
-
-/// \a 1<2 \e 3<4 \em 5<6 \param 7<8 aaa \tparam 9<10 bbb
-void comment_to_html_conversion_30();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_30:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <em>1<2</em> <em>3<4</em> <em>5<6</em> </p><dl><dt class="tparam-name-index-invalid">9<10</dt><dd class="tparam-descr-index-invalid"> bbb</dd></dl><dl><dt class="param-name-index-invalid">7<8</dt><dd class="param-descr-index-invalid"> aaa </dd></dl>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_30</Name><USR>c:@F at comment_to_html_conversion_30#</USR><Declaration>void comment_to_html_conversion_30()</Declaration><Abstract><Para> <emphasized>1<2</emphasized> <emphasized>3<4</emphasized> <emphasized>5<6</emphasized> </Para></Abstract><TemplateParameters><Parameter><Name>9<10</Name><Discussion><Para> bbb</Para></Discussion></Parameter></TemplateParameters><Parameters><Parameter><Name>7<8</Name><Direction isExplicit="0">in</Direction><Discussion><Para> aaa </Para></Discussion></Parameter></Parameters></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[a] RenderEmphasized Arg[0]=1<2)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[e] RenderEmphasized Arg[0]=3<4)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_InlineCommand CommandName=[em] RenderEmphasized Arg[0]=5<6)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_ParamCommand in implicitly ParamName=[7<8] ParamIndex=Invalid
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ aaa ])))
-// CHECK-NEXT:       (CXComment_TParamCommand ParamName=[9<10] ParamPosition=Invalid
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ bbb]))))]
-
-/// \\ \@ \& \$ \# \< \> \% \" \. \::
-void comment_to_html_conversion_31();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_31:{{.*}} FullCommentAsHTML=[<p class="para-brief"> \ @ & $ # < > % " . ::</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_31</Name><USR>c:@F at comment_to_html_conversion_31#</USR><Declaration>void comment_to_html_conversion_31()</Declaration><Abstract><Para> \ @ & $ # < > % " . ::</Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[\])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[@])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[&])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[$])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[#])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[<])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[>])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[%])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=["])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[.])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[::])))]
-
-/// & < > " ' meow &#x6d;&#x65;&#x6F;&#X77;
-void comment_to_html_conversion_32();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_32:{{.*}} FullCommentAsHTML=[<p class="para-brief"> & < > " ' meow meow</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_32</Name><USR>c:@F at comment_to_html_conversion_32#</USR><Declaration>void comment_to_html_conversion_32()</Declaration><Abstract><Para> & < > " ' meow  meow</Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[&])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[<])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[>])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=["])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=['])
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[m])
-// CHECK-NEXT:         (CXComment_Text Text=[e])
-// CHECK-NEXT:         (CXComment_Text Text=[o])
-// CHECK-NEXT:         (CXComment_Text Text=[w])
-// CHECK-NEXT:         (CXComment_Text Text=[  ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[m])
-// CHECK-NEXT:         (CXComment_Text Text=[e])
-// CHECK-NEXT:         (CXComment_Text Text=[o])
-// CHECK-NEXT:         (CXComment_Text Text=[w])))]
-
-/// <em>0<i</em>
-void comment_to_html_conversion_33();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_33:{{.*}} FullCommentAsHTML=[<p class="para-brief"> <em>0<i</em></p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_33</Name><USR>c:@F at comment_to_html_conversion_33#</USR><Declaration>void comment_to_html_conversion_33()</Declaration><Abstract><Para> <rawHTML><![CDATA[<em>]]></rawHTML>0<i<rawHTML></em></rawHTML></Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_HTMLStartTag Name=[em])
-// CHECK-NEXT:         (CXComment_Text Text=[0])
-// CHECK-NEXT:         (CXComment_Text Text=[<])
-// CHECK-NEXT:         (CXComment_Text Text=[i])
-// CHECK-NEXT:         (CXComment_HTMLEndTag Name=[em])))]
-
-// rdar://12392215
-/// © the copyright symbol
-/// ™ the trade mark symbol
-/// ® the registered trade mark symbol
-///   a non breakable space.
-/// Δ Greek letter Delta Δ.
-/// Γ Greek letter Gamma Γ.
-void comment_to_html_conversion_34();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_html_conversion_34:{{.*}} FullCommentAsHTML=[<p class="para-brief"> © the copyright symbol ™ the trade mark symbol ® the registered trade mark symbol   a non breakable space. Δ Greek letter Delta Δ. Γ Greek letter Gamma Γ.</p>] FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_34</Name><USR>c:@F at comment_to_html_conversion_34#</USR><Declaration>void comment_to_html_conversion_34()</Declaration><Abstract><Para> © the copyright symbol ™ the trade mark symbol ® the registered trade mark symbol   a non breakable space. Δ Greek letter Delta Δ. Γ Greek letter Gamma Γ.</Para></Abstract></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[©])
-// CHECK-NEXT:         (CXComment_Text Text=[ the copyright symbol] HasTrailingNewline)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[™])
-// CHECK-NEXT:         (CXComment_Text Text=[ the trade mark symbol] HasTrailingNewline)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[®])
-// CHECK-NEXT:         (CXComment_Text Text=[ the registered trade mark symbol] HasTrailingNewline)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[ ])
-// CHECK-NEXT:         (CXComment_Text Text=[ a non breakable space.] HasTrailingNewline)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[Δ])
-// CHECK-NEXT:         (CXComment_Text Text=[ Greek letter Delta Δ.] HasTrailingNewline)
-// CHECK-NEXT:         (CXComment_Text Text=[ ] IsWhitespace)
-// CHECK-NEXT:         (CXComment_Text Text=[Γ])
-// CHECK-NEXT:         (CXComment_Text Text=[ Greek letter Gamma Γ.])))]
-
-
-/// Aaa.
-class comment_to_xml_conversion_01 {
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:7: ClassDecl=comment_to_xml_conversion_01:{{.*}} FullCommentAsXML=[<Class file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="7"><Name>comment_to_xml_conversion_01</Name><USR>c:@C at comment_to_xml_conversion_01</USR><Declaration>class comment_to_xml_conversion_01 {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Class>]
-
-  /// \param aaa Blah blah.
-  comment_to_xml_conversion_01(int aaa);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:3: CXXConstructor=comment_to_xml_conversion_01:{{.*}} FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="3"><Name>comment_to_xml_conversion_01</Name><USR>c:@C at comment_to_xml_conversion_01@F at comment_to_xml_conversion_01#I#</USR><Declaration>comment_to_xml_conversion_01(int aaa)</Declaration><Parameters><Parameter><Name>aaa</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Blah blah.</Para></Discussion></Parameter></Parameters></Function>]
-
-  /// Aaa.
-  ~comment_to_xml_conversion_01();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:3: CXXDestructor=~comment_to_xml_conversion_01:{{.*}} FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="3"><Name>~comment_to_xml_conversion_01</Name><USR>c:@C at comment_to_xml_conversion_01@F@~comment_to_xml_conversion_01#</USR><Declaration>void ~comment_to_xml_conversion_01()</Declaration><Abstract><Para> Aaa.</Para></Abstract></Function>]
-
-  /// \param aaa Blah blah.
-  int comment_to_xml_conversion_02(int aaa);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:7: CXXMethod=comment_to_xml_conversion_02:{{.*}} FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="7"><Name>comment_to_xml_conversion_02</Name><USR>c:@C at comment_to_xml_conversion_01@F at comment_to_xml_conversion_02#I#</USR><Declaration>int comment_to_xml_conversion_02(int aaa)</Declaration><Parameters><Parameter><Name>aaa</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Blah blah.</Para></Discussion></Parameter></Parameters></Function>]
-
-  /// \param aaa Blah blah.
-  static int comment_to_xml_conversion_03(int aaa);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:14: CXXMethod=comment_to_xml_conversion_03:{{.*}} FullCommentAsXML=[<Function isClassMethod="1" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="14"><Name>comment_to_xml_conversion_03</Name><USR>c:@C at comment_to_xml_conversion_01@F at comment_to_xml_conversion_03#I#S</USR><Declaration>static int comment_to_xml_conversion_03(int aaa)</Declaration><Parameters><Parameter><Name>aaa</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Blah blah.</Para></Discussion></Parameter></Parameters></Function>]
-
-  /// Aaa.
-  int comment_to_xml_conversion_04;
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:7: FieldDecl=comment_to_xml_conversion_04:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="7"><Name>comment_to_xml_conversion_04</Name><USR>c:@C at comment_to_xml_conversion_01@FI at comment_to_xml_conversion_04</USR><Declaration>int comment_to_xml_conversion_04</Declaration><Abstract><Para> Aaa.</Para></Abstract></Variable>]
-
-  /// Aaa.
-  static int comment_to_xml_conversion_05;
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:14: VarDecl=comment_to_xml_conversion_05:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="14"><Name>comment_to_xml_conversion_05</Name><USR>c:@C at comment_to_xml_conversion_01@comment_to_xml_conversion_05</USR><Declaration>static int comment_to_xml_conversion_05</Declaration><Abstract><Para> Aaa.</Para></Abstract></Variable>]
-
-  /// \param aaa Blah blah.
-  void operator()(int aaa);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:8: CXXMethod=operator():{{.*}} FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="8"><Name>operator()</Name><USR>c:@C at comment_to_xml_conversion_01@F at operator()#I#</USR><Declaration>void operator()(int aaa)</Declaration><Parameters><Parameter><Name>aaa</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Blah blah.</Para></Discussion></Parameter></Parameters></Function>]
-
-  /// Aaa.
-  operator bool();
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:3: CXXConversion=operator _Bool:{{.*}} FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="3"><Name>operator _Bool</Name><USR>c:@C at comment_to_xml_conversion_01@F at operator _Bool#</USR><Declaration>bool operator _Bool()</Declaration><Abstract><Para> Aaa.</Para></Abstract></Function>]
-
-  /// Aaa.
-  typedef int comment_to_xml_conversion_06;
-
-// USR is line-dependent here, so filter it with a regexp.
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-3]]:15: TypedefDecl=comment_to_xml_conversion_06:{{.*}} FullCommentAsXML=[<Typedef file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-3]]" column="15"><Name>comment_to_xml_conversion_06</Name><USR>{{[^<]+}}</USR><Declaration>typedef int comment_to_xml_conversion_06</Declaration><Abstract><Para> Aaa.</Para></Abstract></Typedef>]
-
-  /// Aaa.
-  using comment_to_xml_conversion_07 = int;
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:9: TypeAliasDecl=comment_to_xml_conversion_07:{{.*}} FullCommentAsXML=[<Typedef file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="9"><Name>comment_to_xml_conversion_07</Name><USR>c:@C at comment_to_xml_conversion_01@comment_to_xml_conversion_07</USR><Declaration>using comment_to_xml_conversion_07 = int</Declaration><Abstract><Para> Aaa.</Para></Abstract></Typedef>]
-
-  /// Aaa.
-  template<typename T, typename U>
-  class comment_to_xml_conversion_08 { };
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:9: ClassTemplate=comment_to_xml_conversion_08:{{.*}} FullCommentAsXML=[<Class templateKind="template" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="9"><Name>comment_to_xml_conversion_08</Name><USR>c:@C at comment_to_xml_conversion_01@CT>2#T#T at comment_to_xml_conversion_08</USR><Declaration>template <typename T, typename U> class comment_to_xml_conversion_08 {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Class>]
-
-  /// Aaa.
-  template<typename T>
-  using comment_to_xml_conversion_09 = comment_to_xml_conversion_08<T, int>;
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:3: UnexposedDecl=comment_to_xml_conversion_09:{{.*}} FullCommentAsXML=[<Typedef file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="3"><Name>comment_to_xml_conversion_09</Name><USR>c:@C at comment_to_xml_conversion_01@comment_to_xml_conversion_09</USR><Declaration>template <typename T>\nusing comment_to_xml_conversion_09 = comment_to_xml_conversion_08<T, int></Declaration><Abstract><Para> Aaa.</Para></Abstract></Typedef>]
-};
-
-/// Aaa.
-template<typename T, typename U>
-void comment_to_xml_conversion_10(T aaa, U bbb);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionTemplate=comment_to_xml_conversion_10:{{.*}} FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_xml_conversion_10</Name><USR>c:@FT@>2#T#Tcomment_to_xml_conversion_10#t0.0#t0.1#</USR><Declaration>template <typename T, typename U>\nvoid comment_to_xml_conversion_10(T aaa, U bbb)</Declaration><Abstract><Para> Aaa.</Para></Abstract></Function>]
-
-/// Aaa.
-template<>
-void comment_to_xml_conversion_10(int aaa, int bbb);
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:6: FunctionDecl=comment_to_xml_conversion_10:{{.*}} FullCommentAsXML=[<Function templateKind="specialization" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_xml_conversion_10</Name><USR>c:@F at comment_to_xml_conversion_10<#I#I>#I#I#</USR><Declaration>void comment_to_xml_conversion_10(int aaa, int bbb)</Declaration><Abstract><Para> Aaa.</Para></Abstract></Function>]
-
-/// Aaa.
-template<typename T, typename U>
-class comment_to_xml_conversion_11 { };
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:7: ClassTemplate=comment_to_xml_conversion_11:{{.*}} FullCommentAsXML=[<Class templateKind="template" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="7"><Name>comment_to_xml_conversion_11</Name><USR>c:@CT>2#T#T at comment_to_xml_conversion_11</USR><Declaration>template <typename T, typename U> class comment_to_xml_conversion_11 {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Class>]
-
-/// Aaa.
-template<typename T>
-class comment_to_xml_conversion_11<T, int> { };
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:7: ClassTemplatePartialSpecialization=comment_to_xml_conversion_11:{{.*}} FullCommentAsXML=[<Class templateKind="partialSpecialization" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="7"><Name>comment_to_xml_conversion_11</Name><USR>c:@CP>1#T at comment_to_xml_conversion_11>#t0.0#I</USR><Declaration>class comment_to_xml_conversion_11 {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Class>]
-
-/// Aaa.
-template<>
-class comment_to_xml_conversion_11<int, int> { };
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:7: ClassDecl=comment_to_xml_conversion_11:{{.*}} FullCommentAsXML=[<Class templateKind="specialization" file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="7"><Name>comment_to_xml_conversion_11</Name><USR>c:@C at comment_to_xml_conversion_11>#I#I</USR><Declaration>class comment_to_xml_conversion_11 {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Class>]
-
-/// Aaa.
-int comment_to_xml_conversion_12;
-
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-2]]:5: VarDecl=comment_to_xml_conversion_12:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-2]]" column="5"><Name>comment_to_xml_conversion_12</Name><USR>c:@comment_to_xml_conversion_12</USR><Declaration>int comment_to_xml_conversion_12</Declaration><Abstract><Para> Aaa.</Para></Abstract></Variable>]
-
-/// Aaa.
-namespace comment_to_xml_conversion_13 {
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:11: Namespace=comment_to_xml_conversion_13:{{.*}} FullCommentAsXML=[<Namespace file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="11"><Name>comment_to_xml_conversion_13</Name><USR>c:@N at comment_to_xml_conversion_13</USR><Declaration>namespace comment_to_xml_conversion_13 {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Namespace>]
-
-  /// Aaa.
-  namespace comment_to_xml_conversion_14 {
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:13: Namespace=comment_to_xml_conversion_14:{{.*}} FullCommentAsXML=[<Namespace file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="13"><Name>comment_to_xml_conversion_14</Name><USR>c:@N at comment_to_xml_conversion_13@N at comment_to_xml_conversion_14</USR><Declaration>namespace comment_to_xml_conversion_14 {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Namespace>]
-  }
-}
-
-/// Aaa.
-enum comment_to_xml_conversion_15 {
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:6: EnumDecl=comment_to_xml_conversion_15:{{.*}} FullCommentAsXML=[<Enum file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="6"><Name>comment_to_xml_conversion_15</Name><USR>c:@E at comment_to_xml_conversion_15</USR><Declaration>enum comment_to_xml_conversion_15{{( : int)?}} {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Enum>]
-
-  /// Aaa.
-  comment_to_xml_conversion_16
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:3: EnumConstantDecl=comment_to_xml_conversion_16:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="3"><Name>comment_to_xml_conversion_16</Name><USR>c:@E at comment_to_xml_conversion_15@comment_to_xml_conversion_16</USR><Declaration>comment_to_xml_conversion_16</Declaration><Abstract><Para> Aaa.</Para></Abstract></Variable>]
-};
-
-/// Aaa.
-enum class comment_to_xml_conversion_17 {
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:12: EnumDecl=comment_to_xml_conversion_17:{{.*}} FullCommentAsXML=[<Enum file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="12"><Name>comment_to_xml_conversion_17</Name><USR>c:@E at comment_to_xml_conversion_17</USR><Declaration>enum class comment_to_xml_conversion_17 : int {}</Declaration><Abstract><Para> Aaa.</Para></Abstract></Enum>]
-
-  /// Aaa.
-  comment_to_xml_conversion_18
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:3: EnumConstantDecl=comment_to_xml_conversion_18:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="3"><Name>comment_to_xml_conversion_18</Name><USR>c:@E at comment_to_xml_conversion_17@comment_to_xml_conversion_18</USR><Declaration>comment_to_xml_conversion_18</Declaration><Abstract><Para> Aaa.</Para></Abstract></Variable>]
-};
-
-/// Aaa.
-/// \todo Bbb.
-void comment_to_xml_conversion_todo_1();
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:6: FunctionDecl=comment_to_xml_conversion_todo_1:{{.*}} FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="6"><Name>comment_to_xml_conversion_todo_1</Name><USR>c:@F at comment_to_xml_conversion_todo_1#</USR><Declaration>void comment_to_xml_conversion_todo_1()</Declaration><Abstract><Para> Aaa. </Para></Abstract><Discussion><Para kind="todo"> Bbb.</Para></Discussion></Function>]
-
-/// Aaa.
-/// \todo Bbb.
-///
-/// Ccc.
-void comment_to_xml_conversion_todo_2();
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:6: FunctionDecl=comment_to_xml_conversion_todo_2:{{.*}} FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="6"><Name>comment_to_xml_conversion_todo_2</Name><USR>c:@F at comment_to_xml_conversion_todo_2#</USR><Declaration>void comment_to_xml_conversion_todo_2()</Declaration><Abstract><Para> Aaa. </Para></Abstract><Discussion><Para kind="todo"> Bbb.</Para><Para> Ccc.</Para></Discussion></Function>]
-
-/// Aaa.
-/// \todo Bbb.
-///
-/// Ccc.
-/// \todo Ddd.
-void comment_to_xml_conversion_todo_3();
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:6: FunctionDecl=comment_to_xml_conversion_todo_3:{{.*}} FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="6"><Name>comment_to_xml_conversion_todo_3</Name><USR>c:@F at comment_to_xml_conversion_todo_3#</USR><Declaration>void comment_to_xml_conversion_todo_3()</Declaration><Abstract><Para> Aaa. </Para></Abstract><Discussion><Para kind="todo"> Bbb.</Para><Para> Ccc. </Para><Para kind="todo"> Ddd.</Para></Discussion></Function>]
-
-/// Aaa.
-/// \todo Bbb.
-/// \todo Ccc.
-void comment_to_xml_conversion_todo_4();
-// CHECK: comment-to-html-xml-conversion.cpp:[[@LINE-1]]:6: FunctionDecl=comment_to_xml_conversion_todo_4:{{.*}} FullCommentAsXML=[<Function file="{{[^"]+}}comment-to-html-xml-conversion.cpp" line="[[@LINE-1]]" column="6"><Name>comment_to_xml_conversion_todo_4</Name><USR>c:@F at comment_to_xml_conversion_todo_4#</USR><Declaration>void comment_to_xml_conversion_todo_4()</Declaration><Abstract><Para> Aaa. </Para></Abstract><Discussion><Para kind="todo"> Bbb. </Para><Para kind="todo"> Ccc.</Para></Discussion></Function>]
-
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-unqualified-objc-pointer.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-unqualified-objc-pointer.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-unqualified-objc-pointer.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 -fobjc-default-synthesize-properties -fobjc-arc %s > %t/out
-// RUN: FileCheck %s < %t/out
-// rdar://13757500
-
- at class NSString;
-
- at interface NSArray @end
-
- at interface NSMutableArray : NSArray 
-{
-//! This is the name.
-  NSString *Name;
-}
-//! This is WithLabel comment.
-- (NSString *)WithLabel:(NSString * const)label;
-// CHECK: <Declaration>- (NSString *)WithLabel:(NSString *const)label;</Declaration> 
-
-//! This is a property to get the Name.
- at property (copy) NSString *Name;
-// CHECK: <Declaration>@property(readwrite, copy, atomic) NSString *Name;</Declaration>
- at end
-
- at implementation NSMutableArray
-{
-//! This is private ivar
-  NSString *NickName;
-// CHECK: <Declaration>NSString *NickName</Declaration>
-}
-
-- (NSString *)WithLabel:(NSString * const)label {
-    return 0;
-}
- at synthesize Name = Name;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-with-preamble.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-with-preamble.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-with-preamble.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Make sure the preable does not truncate comments.
-
-#ifndef BAZ
-#define BAZ 3
-#endif
-
-//! Foo’s description.
-void Foo();
-
-// RUN: c-index-test -test-load-source-reparse 1 local %s | FileCheck %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 1 local %s | FileCheck %s
-
-// CHECK: FunctionDecl=Foo:8:6 RawComment=[//! Foo’s description.] RawCommentRange=[7:1 - 7:25] BriefComment=[Foo’s description.]

Modified: trunk/contrib/llvm/tools/clang/test/Index/comment-xml-schema.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/comment-xml-schema.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/comment-xml-schema.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// REQUIRES: xmllint
-
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-other-01.xml
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-01.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-02.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-03.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-04.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-05.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-06.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-07.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-08.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-function-09.xml
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-availability-attr-01.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-availability-attr-02.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-deprecated-attr.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-unavailable-attr.xml
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-class-01.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-class-02.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-class-03.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-class-04.xml
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-variable-01.xml
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-namespace-01.xml
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-typedef-01.xml
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-typedef-02.xml
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-enum-01.xml
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-para-kind-01.xml
-
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-01.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-02.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-03.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-04.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-05.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-06.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-07.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-08.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-09.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-10.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-11.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-12.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-//
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-para-kind-01.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-para-kind-02.xml 2>&1 | FileCheck %s -check-prefix=INVALID
-
-// CHECK-INVALID: fails to validate
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/compile_commands.json
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/compile_commands.json	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/compile_commands.json	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-[
-{
-  "directory": "/home/john.doe/MyProject",
-  "command": "clang++  -o project.o -c /home/john.doe/MyProject/project.cpp",
-  "file": "/home/john.doe/MyProject/project.cpp"
-},
-{
-  "directory": "/home/john.doe/MyProjectA",
-  "command": "clang++ -o project2.o -c /home/john.doe/MyProject/project2.cpp",
-  "file": "/home/john.doe/MyProject/project2.cpp"
-},
-{
-  "directory": "/home/john.doe/MyProjectB",
-  "command": "clang++  -DFEATURE=1 -o project2-feature.o -c /home/john.doe/MyProject/project2.cpp",
-  "file": "/home/john.doe/MyProject/project2.cpp"
-}
-]
-# RUN: c-index-test -compilation-db %s
-# RUN: c-index-test -compilation-db lookup file_does_not_exists.cpp %s | FileCheck -check-prefix=FILE-NOT-FOUND %s
-# FILE-NOT-FOUND: file file_does_not_exists.cpp not found in compilation db
-
-# RUN: c-index-test -compilation-db lookup /home/john.doe/MyProject/project.cpp %s | FileCheck -check-prefix=FILE-1-CMD %s
-# FILE-1-CMD: workdir:'/home/john.doe/MyProject' cmdline:'clang++  -o project.o -c /home/john.doe/MyProject/project.cpp'
-
-# RUN: c-index-test -compilation-db lookup /home/john.doe/MyProject/project2.cpp %s | FileCheck -check-prefix=FILE-2-CMD %s
-# FILE-2-CMD: workdir:'/home/john.doe/MyProjectA' cmdline:'clang++ -o project2.o -c /home/john.doe/MyProject/project2.cpp'
-# FILE-2-CMD: workdir:'/home/john.doe/MyProjectB' cmdline:'clang++ -DFEATURE=1 -o project2-feature.o -c /home/john.doe/MyProject/project2.cpp'

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-access-checks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-access-checks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-access-checks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-struct X {
-  int member1;
-  void func1();
-protected:
-  int member2;
-  void func2();
-private:
-  int member3;
-  void func3();
-};
-
-struct Y: protected X {
-  void doSomething();
-};
-
-class Z {
-public:
-  int member1;
-  void func1();
-protected:
-  int member2;
-  void func2();
-private:
-  int member3;
-  void func3();
-};
-
-void Y::doSomething() {
-  // RUN: c-index-test -code-completion-at=%s:30:9 %s | FileCheck -check-prefix=CHECK-SUPER-ACCESS %s
-  this->;
-
-  Z that;
-  // RUN: c-index-test -code-completion-at=%s:34:8 %s | FileCheck -check-prefix=CHECK-ACCESS %s
-  that.
-}
-
-// CHECK-SUPER-ACCESS: CXXMethod:{ResultType void}{TypedText doSomething}{LeftParen (}{RightParen )} (34)
-// CHECK-SUPER-ACCESS: CXXMethod:{ResultType void}{Informative X::}{TypedText func1}{LeftParen (}{RightParen )} (36)
-// CHECK-SUPER-ACCESS: CXXMethod:{ResultType void}{Informative X::}{TypedText func2}{LeftParen (}{RightParen )} (36) (inaccessible)
-// CHECK-SUPER-ACCESS: CXXMethod:{ResultType void}{Informative X::}{TypedText func3}{LeftParen (}{RightParen )} (36) (inaccessible)
-// CHECK-SUPER-ACCESS: FieldDecl:{ResultType int}{Informative X::}{TypedText member1} (37)
-// CHECK-SUPER-ACCESS: FieldDecl:{ResultType int}{Informative X::}{TypedText member2} (37) (inaccessible)
-// CHECK-SUPER-ACCESS: FieldDecl:{ResultType int}{Informative X::}{TypedText member3} (37) (inaccessible)
-// CHECK-SUPER-ACCESS: CXXMethod:{ResultType Y &}{TypedText operator=}{LeftParen (}{Placeholder const Y &}{RightParen )} (34)
-// CHECK-SUPER-ACCESS: CXXMethod:{ResultType X &}{Text X::}{TypedText operator=}{LeftParen (}{Placeholder const X &}{RightParen )} (36)
-// CHECK-SUPER-ACCESS: StructDecl:{TypedText X}{Text ::} (77)
-// CHECK-SUPER-ACCESS: StructDecl:{TypedText Y}{Text ::} (75)
-// CHECK-SUPER-ACCESS: CXXDestructor:{ResultType void}{Informative X::}{TypedText ~X}{LeftParen (}{RightParen )} (36)
-// CHECK-SUPER-ACCESS: CXXDestructor:{ResultType void}{TypedText ~Y}{LeftParen (}{RightParen )} (34)
-
-// CHECK-ACCESS: CXXMethod:{ResultType void}{TypedText func1}{LeftParen (}{RightParen )} (34)
-// CHECK-ACCESS: CXXMethod:{ResultType void}{TypedText func2}{LeftParen (}{RightParen )} (34) (inaccessible)
-// CHECK-ACCESS: CXXMethod:{ResultType void}{TypedText func3}{LeftParen (}{RightParen )} (34) (inaccessible)
-// CHECK-ACCESS: FieldDecl:{ResultType int}{TypedText member1} (35)
-// CHECK-ACCESS: FieldDecl:{ResultType int}{TypedText member2} (35) (inaccessible)
-// CHECK-ACCESS: FieldDecl:{ResultType int}{TypedText member3} (35) (inaccessible)
-// CHECK-ACCESS: CXXMethod:{ResultType Z &}{TypedText operator=}{LeftParen (}{Placeholder const Z &}{RightParen )} (34)
-// CHECK-ACCESS: ClassDecl:{TypedText Z}{Text ::} (75)
-// CHECK-ACCESS: CXXDestructor:{ResultType void}{TypedText ~Z}{LeftParen (}{RightParen )} (34)
-
-class P {
-protected:
-  int member;
-};
-
-class Q : public P {
-public:
-  using P::member;
-};
-
-void f(P x, Q y) {
-  // RUN: c-index-test -code-completion-at=%s:73:5 %s | FileCheck -check-prefix=CHECK-USING-INACCESSIBLE %s
-  x.; // member is inaccessible
-  // RUN: c-index-test -code-completion-at=%s:75:5 %s | FileCheck -check-prefix=CHECK-USING-ACCESSIBLE %s
-  y.; // member is accessible
-}
-
-// CHECK-USING-INACCESSIBLE: FieldDecl:{ResultType int}{TypedText member} (35) (inaccessible)
-// CHECK-USING-INACCESSIBLE: CXXMethod:{ResultType P &}{TypedText operator=}{LeftParen (}{Placeholder const P &}{RightParen )} (34)
-// CHECK-USING-INACCESSIBLE: ClassDecl:{TypedText P}{Text ::} (75)
-// CHECK-USING-INACCESSIBLE: CXXDestructor:{ResultType void}{TypedText ~P}{LeftParen (}{RightParen )} (34)
-
-// CHECK-USING-ACCESSIBLE: FieldDecl:{ResultType int}{TypedText member} (35)
-// CHECK-USING-ACCESSIBLE: CXXMethod:{ResultType Q &}{TypedText operator=}{LeftParen (}{Placeholder const Q &}{RightParen )} (34)
-// CHECK-USING-ACCESSIBLE: CXXMethod:{ResultType P &}{Text P::}{TypedText operator=}{LeftParen (}{Placeholder const P &}{RightParen )} (36)
-// CHECK-USING-ACCESSIBLE: ClassDecl:{TypedText P}{Text ::} (77)
-// CHECK-USING-ACCESSIBLE: ClassDecl:{TypedText Q}{Text ::} (75)
-// CHECK-USING-ACCESSIBLE: CXXDestructor:{ResultType void}{Informative P::}{TypedText ~P}{LeftParen (}{RightParen )} (36)
-// CHECK-USING-ACCESSIBLE: CXXDestructor:{ResultType void}{TypedText ~Q}{LeftParen (}{RightParen )} (34)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-at-directives.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-at-directives.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-at-directives.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-/* Run lines are at the end, since line/column matter in this test. */
- at interface MyClass { @public }
- at end
-
- at implementation MyClass
- at end
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:2:2 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: {TypedText class}{HorizontalSpace  }{Placeholder name}
-// CHECK-CC1: {TypedText compatibility_alias}{HorizontalSpace  }{Placeholder alias}{HorizontalSpace  }{Placeholder class}
-// CHECK-CC1: {TypedText implementation}{HorizontalSpace  }{Placeholder class}
-// CHECK-CC1: {TypedText interface}{HorizontalSpace  }{Placeholder class}
-// CHECK-CC1: {TypedText protocol}{HorizontalSpace  }{Placeholder protocol}
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:3:2 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: {TypedText end}
-// CHECK-CC2: {TypedText optional}
-// CHECK-CC2: {TypedText property}
-// CHECK-CC2: {TypedText required}
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:6:2 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: {TypedText dynamic}{HorizontalSpace  }{Placeholder property}
-// CHECK-CC3: {TypedText end}
-// CHECK-CC3: {TypedText synthesize}{HorizontalSpace  }{Placeholder property}
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:2:1 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: NotImplemented:{TypedText @class}{HorizontalSpace  }{Placeholder name}
-// CHECK-CC4: NotImplemented:{TypedText @compatibility_alias}{HorizontalSpace  }{Placeholder alias}{HorizontalSpace  }{Placeholder class}
-// CHECK-CC4: NotImplemented:{TypedText @implementation}{HorizontalSpace  }{Placeholder class}
-// CHECK-CC4: NotImplemented:{TypedText @interface}{HorizontalSpace  }{Placeholder class}
-// CHECK-CC4: NotImplemented:{TypedText @protocol}{HorizontalSpace  }{Placeholder protocol}
-// CHECK-CC4: NotImplemented:{TypedText _Bool}
-// CHECK-CC4: TypedefDecl:{TypedText Class}
-// CHECK-CC4: TypedefDecl:{TypedText id}
-// CHECK-CC4: TypedefDecl:{TypedText SEL}
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:3:1 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: {TypedText @end}
-// CHECK-CC5: {TypedText @optional}
-// CHECK-CC5: {TypedText @property}
-// CHECK-CC5: {TypedText @required}
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:2:23 %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: NotImplemented:{TypedText package}
-// CHECK-CC6: NotImplemented:{TypedText private}
-// CHECK-CC6: NotImplemented:{TypedText protected}
-// CHECK-CC6: NotImplemented:{TypedText public}
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:2:22 %s | FileCheck -check-prefix=CHECK-CC7 %s
-// CHECK-CC7: NotImplemented:{TypedText @package}
-// CHECK-CC7: NotImplemented:{TypedText @private}
-// CHECK-CC7: NotImplemented:{TypedText @protected}
-// CHECK-CC7: NotImplemented:{TypedText @public}
-// CHECK-CC7: NotImplemented:{TypedText _Bool}

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-at-exprstmt.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-at-exprstmt.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-at-exprstmt.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-/* The run lines are below, because this test is line- and
-   column-number sensitive. */
- at interface MyClass { int ivar; }
-- (int)myMethod:(int)arg;
- at end
-
- at implementation MyClass 
-- (int)myMethod:(int)arg {
-  @synchronized (@encode(MyClass)) { }
-}
- at end
-
- at interface A
-+ (int)add:(int)x to:(int)y;
-+ (int)add:(int)x to:(int)y plus:(int)z;
- at end
-
-void f() {
-  @selector(add:to:);
-}
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:9:4 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: {TypedText encode}{LeftParen (}{Placeholder type-name}{RightParen )}
-// CHECK-CC1: {TypedText protocol}{LeftParen (}{Placeholder protocol-name}{RightParen )}
-// CHECK-CC1: {TypedText selector}{LeftParen (}{Placeholder selector}{RightParen )}
-// CHECK-CC1: {TypedText synchronized}{HorizontalSpace  }{LeftParen (}{Placeholder expression}{RightParen )}{LeftBrace {}{Placeholder statements}{RightBrace }}
-// CHECK-CC1: {TypedText throw}{HorizontalSpace  }{Placeholder expression}
-// CHECK-CC1: {TypedText try}{LeftBrace {}{Placeholder statements}{RightBrace }}{Text @catch}{LeftParen (}{Placeholder parameter}{RightParen )}{LeftBrace {}{Placeholder statements}{RightBrace }}{Text @finally}{LeftBrace {}{Placeholder statements}{RightBrace }}
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:9:19 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: {TypedText encode}{LeftParen (}{Placeholder type-name}{RightParen )}
-// CHECK-CC2: {TypedText protocol}{LeftParen (}{Placeholder protocol-name}{RightParen )}
-// CHECK-CC2: {TypedText selector}{LeftParen (}{Placeholder selector}{RightParen )}
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:9:3 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: NotImplemented:{ResultType char[]}{TypedText @encode}{LeftParen (}{Placeholder type-name}{RightParen )}
-// CHECK-CC3: NotImplemented:{ResultType Protocol *}{TypedText @protocol}{LeftParen (}{Placeholder protocol-name}{RightParen )}
-// CHECK-CC3: NotImplemented:{ResultType SEL}{TypedText @selector}{LeftParen (}{Placeholder selector}{RightParen )}
-// CHECK-CC3: NotImplemented:{TypedText @synchronized}{HorizontalSpace  }{LeftParen (}{Placeholder expression}{RightParen )}{LeftBrace {}{Placeholder statements}{RightBrace }}
-// CHECK-CC3: NotImplemented:{TypedText @throw}{HorizontalSpace  }{Placeholder expression}
-// CHECK-CC3: NotImplemented:{TypedText @try}{LeftBrace {}{Placeholder statements}{RightBrace }}{Text @catch}{LeftParen (}{Placeholder parameter}{RightParen )}{LeftBrace {}{Placeholder statements}{RightBrace }}{Text @finally}{LeftBrace {}{Placeholder statements}{RightBrace }}
-// CHECK-CC3: NotImplemented:{ResultType SEL}{TypedText _cmd}
-// CHECK-CC3: ParmDecl:{ResultType int}{TypedText arg}
-// CHECK-CC3: TypedefDecl:{TypedText Class}
-// CHECK-CC3: TypedefDecl:{TypedText id}
-// CHECK-CC3: ObjCIvarDecl:{ResultType int}{TypedText ivar}
-// CHECK-CC3: ObjCInterfaceDecl:{TypedText MyClass}
-// CHECK-CC3: TypedefDecl:{TypedText SEL}
-// CHECK-CC3: NotImplemented:{ResultType MyClass *}{TypedText self}
-// RUN: c-index-test -code-completion-at=%s:19:13 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: NotImplemented:{TypedText add:to:} (40)
-// CHECK-CC4: NotImplemented:{TypedText add:to:plus:} (40)
-// CHECK-CC4: NotImplemented:{TypedText myMethod:} (40)
-// RUN: c-index-test -code-completion-at=%s:19:17 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: NotImplemented:{Informative add:}{TypedText to:} (40)
-// CHECK-CC5: NotImplemented:{Informative add:}{TypedText to:plus:} (40)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-blocks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-blocks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-blocks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// The line and column layout of this test is significant. Run lines
-// are at the end.
-typedef void (^block_t)(float f, double d);
-void f(int (^block)(int x, int y));
-void g(block_t b);
-
-void test_f() {
-
-}
-
- at interface A
-- method:(int (^)(int x, int y))b;
-- method2:(block_t)b;
- at end
-
-void test_A(A *a) {
-  [a method:0];
-}
-
- at interface B
-- method3:(int (^)(void))b;
- at end
-
-void test_B(B *b) {
-  [b method3:^int(void){ return 0; }];
-}
-
- at interface C
-- method4:(void(^)(void))arg;
-- method5:(void(^)())arg5;
- at end
-
-void test_C(C *c) {
-  [c method4:^{}];
-}
-
- at interface D
-- method6:(void(^)(block_t block))arg;
- at end
-
-void test_D(D *d) {
-  [d method6:0];
-}
-
-// RUN: c-index-test -code-completion-at=%s:8:1 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: FunctionDecl:{ResultType void}{TypedText f}{LeftParen (}{Placeholder ^int(int x, int y)block}{RightParen )} (50)
-// CHECK-CC1: FunctionDecl:{ResultType void}{TypedText g}{LeftParen (}{Placeholder ^(float f, double d)b}{RightParen )} (50)
-// RUN: c-index-test -code-completion-at=%s:17:6 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType id}{TypedText method2:}{Placeholder ^(float f, double d)b} (35)
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType id}{TypedText method:}{Placeholder ^int(int x, int y)b} (35)
-// RUN: c-index-test -code-completion-at=%s:25:6 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType id}{TypedText method3:}{Placeholder ^int(void)b} (35)
-// RUN: c-index-test -code-completion-at=%s:34:6 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType id}{TypedText method4:}{Placeholder ^(void)arg} (35)
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType id}{TypedText method5:}{Placeholder ^(void)arg5} (35)
-// RUN: c-index-test -code-completion-at=%s:25:15 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: TypedefDecl:{TypedText block_t} (50)
-// CHECK-CC5: TypedefDecl:{TypedText Class} (50)
-// CHECK-CC5-NOT: test_A
-// CHECK-CC5: {TypedText union} (50)
-
-// RUN: c-index-test -code-completion-at=%s:42:6 %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType id}{TypedText method6:}{Placeholder ^(block_t block)arg} (35)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-categories.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-categories.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-categories.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-/* Note: the RUN lines are near the end of the file, since line/column
-   matter for this test. */
-
- at interface I1 @end
- at interface I2 @end
- at interface I3 : I2 @end
-
- at interface I1(Cat1) @end
- at interface I1(Cat2) @end
- at interface I1(Cat3) @end
-
- at interface I2 (Cat2) @end
- at interface I2 (Cat3) @end
- at interface I2 (Cat2) @end
- at interface I3 (Cat1) @end
- at interface I3 (Cat2) @end
-
- at implementation I1(Cat2) @end
- at implementation I1(Cat3) @end
- at implementation I3(Cat2) @end
-
-// RUN: c-index-test -code-completion-at=%s:12:16 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCCategoryDecl:{TypedText Cat1}
-// CHECK-CC1: ObjCCategoryDecl:{TypedText Cat2}
-// CHECK-CC1: ObjCCategoryDecl:{TypedText Cat3}
-// RUN: c-index-test -code-completion-at=%s:13:16 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCCategoryDecl:{TypedText Cat1}
-// CHECK-CC2-NEXT: ObjCCategoryDecl:{TypedText Cat3}
-// RUN: c-index-test -code-completion-at=%s:18:20 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCCategoryDecl:{TypedText Cat1}
-// CHECK-CC3: ObjCCategoryDecl:{TypedText Cat2}
-// CHECK-CC3: ObjCCategoryDecl:{TypedText Cat3}
-// RUN: c-index-test -code-completion-at=%s:19:20 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ObjCCategoryDecl:{TypedText Cat1}
-// CHECK-CC4-NEXT: ObjCCategoryDecl:{TypedText Cat3}
-// RUN: c-index-test -code-completion-at=%s:20:20 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: ObjCCategoryDecl:{TypedText Cat1}
-// CHECK-CC5-NEXT: ObjCCategoryDecl:{TypedText Cat2}
-// CHECK-CC5-NEXT: ObjCCategoryDecl:{TypedText Cat3}

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-ctor-inits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-ctor-inits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-ctor-inits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// The run lines are below, because this test is line- and
-// column-number sensitive.
-
-template<typename T>
-struct X {
-  X(T);
-};
-
-struct Virt { };
-struct Y : virtual Virt { };
-
-struct Z : public X<int>, public Y {
-  Z();
-
-  int a, b, c;
-};
-
-Z::Z() : ::X<int>(0), Virt(), b(), c() { }
-
-// RUN: c-index-test -code-completion-at=%s:18:10 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: MemberRef:{TypedText a}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC1: MemberRef:{TypedText b}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC1: MemberRef:{TypedText c}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC1: NotImplemented:{TypedText Virt}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC1: NotImplemented:{TypedText X<int>}{LeftParen (}{Placeholder args}{RightParen )} (7)
-// CHECK-CC1: NotImplemented:{TypedText Y}{LeftParen (}{Placeholder args}{RightParen )} (35)
-
-// RUN: c-index-test -code-completion-at=%s:18:23 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: MemberRef:{TypedText a}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC2: MemberRef:{TypedText b}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC2: MemberRef:{TypedText c}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC2: NotImplemented:{TypedText Virt}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC2: NotImplemented:{TypedText Y}{LeftParen (}{Placeholder args}{RightParen )} (7)
-
-// RUN: c-index-test -code-completion-at=%s:18:36 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: MemberRef:{TypedText a}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CC3-NOT: MemberRef:{TypedText b}{LeftParen (}{Placeholder args}{RightParen )}
-// CHECK-CC3: MemberRef:{TypedText c}{LeftParen (}{Placeholder args}{RightParen )} (7)
-// CHECK-CC3-NOT: NotImplemented:{TypedText Virt}{LeftParen (}{Placeholder args}{RightParen )}
-// CHECK-CC3: NotImplemented:{TypedText Y}{LeftParen (}{Placeholder args}{RightParen )} (35)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-cxx-inline-methods.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-cxx-inline-methods.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-cxx-inline-methods.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-namespace {
-class MyCls {
-  void in_foo() {
-    vec.x = 0;
-  }
-  void out_foo();
-
-  struct Vec { int x, y; };
-  Vec vec;
-};
-
-void MyCls::out_foo() {
-  vec.x = 0;
-}
-
-class OtherClass : public MyCls {
-public:
-  OtherClass(const OtherClass &other) : MyCls(other), value(value) { }
-
-private:
-  int value;
-  MyCls *object;
-};
-}
-
-// RUN: c-index-test -code-completion-at=%s:4:9 -std=c++98 %s | FileCheck %s
-// RUN: c-index-test -code-completion-at=%s:13:7 -std=c++98 %s | FileCheck %s
-// CHECK:      CXXMethod:{ResultType MyCls::Vec &}{TypedText operator=}{LeftParen (}{Placeholder const MyCls::Vec &}{RightParen )} (34)
-// CHECK-NEXT: StructDecl:{TypedText Vec}{Text ::} (75)
-// CHECK-NEXT: FieldDecl:{ResultType int}{TypedText x} (35)
-// CHECK-NEXT: FieldDecl:{ResultType int}{TypedText y} (35)
-// CHECK-NEXT: CXXDestructor:{ResultType void}{TypedText ~Vec}{LeftParen (}{RightParen )} (34)
-// CHECK-NEXT: Completion contexts:
-// CHECK-NEXT: Dot member access
-// CHECK-NEXT: Container Kind: StructDecl
-
-// RUN: c-index-test -code-completion-at=%s:18:41 %s | FileCheck -check-prefix=CHECK-CTOR-INIT %s
-// CHECK-CTOR-INIT: NotImplemented:{TypedText MyCls}{LeftParen (}{Placeholder args}{RightParen )} (7)
-// CHECK-CTOR-INIT: MemberRef:{TypedText object}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CTOR-INIT: MemberRef:{TypedText value}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// RUN: c-index-test -code-completion-at=%s:18:55 %s | FileCheck -check-prefix=CHECK-CTOR-INIT-2 %s
-// CHECK-CTOR-INIT-2-NOT: NotImplemented:{TypedText MyCls}{LeftParen (}{Placeholder args}{RightParen )}
-// CHECK-CTOR-INIT-2: MemberRef:{TypedText object}{LeftParen (}{Placeholder args}{RightParen )} (35)
-// CHECK-CTOR-INIT-2: MemberRef:{TypedText value}{LeftParen (}{Placeholder args}{RightParen )} (7)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-declarators.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-declarators.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-declarators.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// This test is line- and column-sensitive, so test commands are at the bottom.
-namespace N {
-  struct X {
-    int f(X);
-  };
-}
-
-int g(int a);
-
-struct Y { };
-
-struct Z {
-  int member;
-  friend int N::X::f(N::X);
-};
-
-// RUN: c-index-test -code-completion-at=%s:8:5 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:8:5 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: NotImplemented:{TypedText const} (40)
-// CHECK-CC1: Namespace:{TypedText N}{Text ::} (75)
-// CHECK-CC1: NotImplemented:{TypedText operator} (40)
-// CHECK-CC1: NotImplemented:{TypedText volatile} (40)
-// RUN: c-index-test -code-completion-at=%s:8:11 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:8:11 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: NotImplemented:{TypedText const} (40)
-// CHECK-CC2-NOT: Namespace:{TypedText N}{Text ::} (75)
-// CHECK-CC2-NOT: NotImplemented:{TypedText operator} (40)
-// CHECK-CC2: NotImplemented:{TypedText volatile} (40)
-// RUN: c-index-test -code-completion-at=%s:13:7 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:13:7 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: NotImplemented:{TypedText const} (40)
-// CHECK-CC3-NOT: Namespace:{TypedText N}{Text ::} (75)
-// CHECK-CC3: NotImplemented:{TypedText operator} (40)
-// CHECK-CC3: NotImplemented:{TypedText volatile} (40)
-// RUN: c-index-test -code-completion-at=%s:14:14 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:14:14 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: NotImplemented:{TypedText const} (40)
-// CHECK-CC4: Namespace:{TypedText N}{Text ::} (75)
-// CHECK-CC4: NotImplemented:{TypedText operator} (40)
-// CHECK-CC4: NotImplemented:{TypedText volatile} (40)
-// CHECK-CC4: StructDecl:{TypedText Y}{Text ::} (75)
-// CHECK-CC4: StructDecl:{TypedText Z}{Text ::} (75)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-declarators.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-declarators.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-declarators.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// This test is line- and column-sensitive, so test commands are at the bottom.
- at protocol P
-- (int)method:(id)param1;
- at end
-
- at interface A <P>
-- (int)method:(id)param1;
-
- at property int prop1;
- at end
-
- at implementation A
-- (int)method:(id)param1 {
-  int q2;
-  for(id q in param1) {
-    int y;
-  }
-  id q;
-  for(q in param1) {
-    int y;
-  }
-
-  static P *p = 0;
-}
-- (boid)method2 {}
- at end
-
-// RUN: c-index-test -code-completion-at=%s:7:4 %s | FileCheck -check-prefix=CHECK-CC0 %s
-// CHECK-CC0: NotImplemented:{TypedText IBAction}{RightParen )}{Placeholder selector}{Colon :}{LeftParen (}{Text id}{RightParen )}{Text sender} (40)
-// CHECK-CC0: macro definition:{TypedText IBAction} (70)
-// CHECK-CC0: macro definition:{TypedText IBOutlet} (70)
-// CHECK-CC0: macro definition:{TypedText IBOutletCollection}{LeftParen (}{Placeholder ClassName}{RightParen )} (70)
-// CHECK-CC0: TypedefDecl:{TypedText id} (50)
-// CHECK-CC0: NotImplemented:{TypedText in} (40)
-// CHECK-CC0: NotImplemented:{TypedText inout} (40)
-// CHECK-CC0: NotImplemented:{TypedText instancetype} (40)
-// CHECK-CC0: NotImplemented:{TypedText int} (50)
-// CHECK-CC0: NotImplemented:{TypedText long} (50)
-// RUN: c-index-test -code-completion-at=%s:7:19 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1-NOT: NotImplemented:{TypedText extern} (40)
-// CHECK-CC1: NotImplemented:{TypedText param1} (40)
-// RUN: c-index-test -code-completion-at=%s:9:15 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: c-index-test -code-completion-at=%s:15:10 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: c-index-test -code-completion-at=%s:16:9 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: NotImplemented:{TypedText const} (40)
-// CHECK-CC2-NOT: int
-// CHECK-CC2: NotImplemented:{TypedText restrict} (40)
-// CHECK-CC2: NotImplemented:{TypedText volatile} (40)
-// RUN: c-index-test -code-completion-at=%s:15:15 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ParmDecl:{ResultType id}{TypedText param1} (34)
-// CHECK-CC3-NOT: VarDecl:{ResultType int}{TypedText q2}
-// CHECK-CC3-NOT: VarDecl:{ResultType id}{TypedText q}
-// CHECK-CC3: NotImplemented:{ResultType A *}{TypedText self} (34)
-// CHECK-CC3: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// RUN: c-index-test -code-completion-at=%s:15:15 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ParmDecl:{ResultType id}{TypedText param1} (34)
-// CHECK-CC4-NOT: VarDecl:{ResultType int}{TypedText q2}
-// CHECK-CC4: NotImplemented:{ResultType A *}{TypedText self} (34)
-// CHECK-CC4: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// RUN: c-index-test -code-completion-at=%s:23:10 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: NotImplemented:{TypedText _Bool} (50)
-// CHECK-CC5: NotImplemented:{TypedText _Complex} (50)
-// CHECK-CC5: NotImplemented:{TypedText _Imaginary} (50)
-// CHECK-CC5: ObjCInterfaceDecl:{TypedText A} (50)
-// CHECK-CC5: NotImplemented:{TypedText char} (50)
-// CHECK-CC5: TypedefDecl:{TypedText Class} (50)
-// CHECK-CC5: NotImplemented:{TypedText const} (50)
-// CHECK-CC5: NotImplemented:{TypedText double} (50)
-// CHECK-CC5: NotImplemented:{TypedText enum} (50)
-// CHECK-CC5: NotImplemented:{TypedText float} (50)
-// CHECK-CC5: TypedefDecl:{TypedText id} (50)
-// CHECK-CC5: NotImplemented:{TypedText int} (50)
-// CHECK-CC5: NotImplemented:{TypedText long} (50)
-// CHECK-CC5: NotImplemented:{TypedText restrict} (50)
-// CHECK-CC5: TypedefDecl:{TypedText SEL} (50)
-// CHECK-CC5: NotImplemented:{TypedText short} (50)
-// CHECK-CC5: NotImplemented:{TypedText signed} (50)
-// CHECK-CC5: NotImplemented:{TypedText struct} (50)
-// CHECK-CC5: NotImplemented:{TypedText typeof}{HorizontalSpace  }{Placeholder expression} (40)
-// CHECK-CC5: NotImplemented:{TypedText typeof}{LeftParen (}{Placeholder type}{RightParen )} (40)
-// CHECK-CC5: NotImplemented:{TypedText union} (50)
-// CHECK-CC5: NotImplemented:{TypedText unsigned} (50)
-// CHECK-CC5: NotImplemented:{TypedText void} (50)
-// CHECK-CC5: NotImplemented:{TypedText volatile} (50)
-
-// Check that there are no duplicate entries if we code-complete after an @implementation
-// RUN: c-index-test -code-completion-at=%s:27:1 %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: ObjCInterfaceDecl:{TypedText A}
-// CHECK-CC6-NOT: ObjCInterfaceDecl:{TypedText A}

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-documentation-properties.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-documentation-properties.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-documentation-properties.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,92 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column numbers
-// matter in this test.
-// This test is for when property accessors do not have their own code 
-// completion comments. Use those in their properties in this case. 
-// rdar://12791315
-
- at interface AppDelegate
-/**
-  \brief This is ReadonlyProperty
-*/
- at property (readonly, getter = ReadonlyGetter) id MyProperty;
-
-/**
-  \brief This is GeneralProperty
-*/
- at property int GeneralProperty;
-
-/**
-  \brief This is PropertyInPrimaryClass
-*/
- at property (copy, nonatomic) id PropertyInPrimaryClass;
-
-- (void) setThisRecord : (id)arg;
-- (id) Record;
- at end
-
-
- at interface AppDelegate()
-- (id) GetterInClassExtension;
-/**
-  \brief This is Record
-*/
- at property (copy, setter = setThisRecord:) id Record;
- at end
-
- at interface AppDelegate()
-/**
-  \brief This is PropertyInClassExtension
-*/
- at property (copy, getter = GetterInClassExtension) id PropertyInClassExtension;
-
-- (id) PropertyInPrimaryClass;
- at end
-  
- at implementation AppDelegate
-- (id) PropertyInPrimaryClass { 
-  id p = [self ReadonlyGetter];
-  p = [self GetterInClassExtension];
-  p = [self PropertyInPrimaryClass];
-  p = [self Record];
-  [self setThisRecord : (id)0 ];
-  p = self.GetterInClassExtension;
-  return 0; 
-}
- at end
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:47:16 %s | FileCheck -check-prefix=CC1 %s
-// CHECK-CC1: {TypedText ReadonlyGetter}{{.*}}(brief comment: This is ReadonlyProperty)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:48:13 %s | FileCheck -check-prefix=CC2 %s
-// CHECK-CC2: {TypedText GetterInClassExtension}{{.*}}(brief comment: This is PropertyInClassExtension) 
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:49:13 %s | FileCheck -check-prefix=CC3 %s
-// CHECK-CC3: {TypedText PropertyInPrimaryClass}{{.*}}(brief comment: This is PropertyInPrimaryClass)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:50:13 %s | FileCheck -check-prefix=CC4 %s
-// CHECK-CC4: {TypedText Record}{{.*}}(brief comment: This is Record)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:51:9 %s | FileCheck -check-prefix=CC5 %s
-// CHECK-CC5: {TypedText setThisRecord:}{Placeholder (id)}{{.*}}(brief comment: This is Record)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:52:12 %s | FileCheck -check-prefix=CC6 %s
-// CHECK-CC6: {TypedText GetterInClassExtension}{{.*}}(brief comment: This is PropertyInClassExtension) 
-
- at interface AnotherAppDelegate
-/**
-  \brief This is ReadonlyProperty
-*/
- at property (getter = ReadonlyGetter) int MyProperty;
-/**
-  \brief This is getter = ReadonlyGetter
-*/
-- (int) ReadonlyGetter;
- at end
-
- at implementation AnotherAppDelegate
-- (int) PropertyInPrimaryClass { 
-self.ReadonlyGetter;
-}
- at end
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:87:6 %s | FileCheck -check-prefix=CC7 %s
-// CHECK-CC7: {TypedText ReadonlyGetter}{{.*}}(brief comment: This is getter = ReadonlyGetter) 
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-documentation-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-documentation-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-documentation-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,151 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column numbers
-// matter in this test.
-
-/// This is T1.
-template<typename T>
-void T1(T t) { }
-
-/// This is T2.
-template<typename T>
-void T2(T t) { }
-
-/// This is T2<int>.
-template<>
-void T2(int t) { }
-
-void test_CC1() {
-
-}
-
-// Check that implicit instantiations of class templates and members pick up
-// comments from class templates and specializations.
-
-/// This is T3.
-template<typename T>
-class T3 {
-public:
-  /// This is T4.
-  static void T4();
-
-  /// This is T5.
-  static int T5;
-
-  /// This is T6.
-  void T6();
-
-  /// This is T7.
-  int T7;
-
-  /// This is T8.
-  class T8 {};
-
-  /// This is T9.
-  enum T9 {
-    /// This is T10.
-    T10
-  };
-
-  /// This is T11.
-  template<typename U>
-  void T11(U t) {}
-
-  typedef T3<double> T12;
-};
-
-void test_CC2_CC3_CC4() {
-  T3<int>::T4();
-  T3<int> t3;
-  t3.T6();
-  T3<int>::T8 t8;
-}
-
-/// This is T100.
-template<typename T, typename U>
-class T100 {
-};
-
-/// This is T100<int, T>.
-template<typename T>
-class T100<int, T> {
-public:
-  /// This is T101.
-  static void T101();
-
-  /// This is T102.
-  static int T102;
-
-  /// This is T103.
-  void T103();
-
-  /// This is T104.
-  int T104;
-
-  /// This is T105.
-  class T105 {};
-
-  /// This is T106.
-  enum T106 {
-    /// This is T107.
-    T107
-  };
-
-  /// This is T108.
-  template<typename U>
-  void T108(U t) {}
-
-  typedef T100<double, T> T109;
-
-  typedef T100<double, double> T110;
-};
-
-void test_CC5_CC6_CC7() {
-  T100<int, long>::T101();
-  T100<int, long> t100;
-  t100.T103();
-  T100<int, long>::T105 t105;
-}
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:17:1 %s | FileCheck -check-prefix=CC1 %s
-// CHECK-CC1: FunctionTemplate:{ResultType void}{TypedText T1}{{.*}}(brief comment: This is T1.)
-// CHECK-CC1: FunctionTemplate:{ResultType void}{TypedText T2}{{.*}}(brief comment: This is T2.)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:56:12 %s | FileCheck -check-prefix=CC2 %s
-// CHECK-CC2: CXXMethod:{ResultType void}{TypedText T4}{{.*}}(brief comment: This is T4.)
-// CHECK-CC2: VarDecl:{ResultType int}{TypedText T5}{{.*}}(brief comment: This is T5.)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:58:6 %s | FileCheck -check-prefix=CC3 %s
-// CHECK-CC3: FunctionTemplate:{ResultType void}{TypedText T11}{{.*}}(brief comment: This is T11.)
-// CHECK-CC3: CXXMethod:{ResultType void}{TypedText T6}{{.*}}(brief comment: This is T6.)
-// CHECK-CC3: FieldDecl:{ResultType int}{TypedText T7}{{.*}}(brief comment: This is T7.)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:59:12 %s | FileCheck -check-prefix=CC4 %s
-// CHECK-CC4: EnumConstantDecl:{ResultType T3<int>::T9}{TypedText T10}{{.*}}(brief comment: This is T10.)
-// FIXME: after we implement propagating comments through typedefs, this
-// typedef for implicit instantiation should pick up the documentation
-// comment from class template.
-// CHECK-CC4: TypedefDecl:{TypedText T12}
-// CHECK-CC4-SHOULD-BE: TypedefDecl:{TypedText T12}{{.*}}(brief comment: This is T3.)
-// CHECK-CC4: ClassDecl:{TypedText T8}{{.*}}(brief comment: This is T8.)
-// CHECK-CC4: EnumDecl:{TypedText T9}{{.*}}(brief comment: This is T9.)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:102:20 %s | FileCheck -check-prefix=CC5 %s
-// CHECK-CC5: CXXMethod:{ResultType void}{TypedText T101}{{.*}}(brief comment: This is T101.)
-// CHECK-CC5: VarDecl:{ResultType int}{TypedText T102}{{.*}}(brief comment: This is T102.)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:104:8 %s | FileCheck -check-prefix=CC6 %s
-// CHECK-CC6: CXXMethod:{ResultType void}{TypedText T103}{{.*}}(brief comment: This is T103.)
-// CHECK-CC6: FieldDecl:{ResultType int}{TypedText T104}{{.*}}(brief comment: This is T104.)
-// CHECK-CC6: FunctionTemplate:{ResultType void}{TypedText T108}{{.*}}(brief comment: This is T108.)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:105:20 %s | FileCheck -check-prefix=CC7 %s
-// CHECK-CC7: ClassDecl:{TypedText T105}{{.*}}(brief comment: This is T105.)
-// CHECK-CC7: EnumDecl:{TypedText T106}{{.*}}(brief comment: This is T106.)
-// CHECK-CC7: EnumConstantDecl:{ResultType T100<int, long>::T106}{TypedText T107}{{.*}}(brief comment: This is T107.)
-// FIXME: after we implement propagating comments through typedefs, these two
-// typedefs for implicit instantiations should pick up the documentation
-// comment from class template.
-// CHECK-CC7: TypedefDecl:{TypedText T109}
-// CHECK-CC7: TypedefDecl:{TypedText T110}
-// CHECK-CC7-SHOULD-BE: TypedefDecl:{TypedText T109}{{.*}}(brief comment: This is T100.)
-// CHECK-CC7-SHOULD-BE: TypedefDecl:{TypedText T110}{{.*}}(brief comment: This is T100.)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-documentation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-documentation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-documentation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
-/// Aaa.
-void T1(float x, float y);
-
-/// Bbb.
-class T2 {
-public:
-  /// Ccc.
-  void T3();
-
-  int T4; ///< Ddd.
-};
-
-/// Eee.
-namespace T5 {
-}
-
-struct T6 {
- /// \brief Fff.
- void T7();
-
- /// \brief Ggg.
- void T8();
-};
-
-void T6::T7() {
-}
-
-void test1() {
-
-  T2 t2;
-  t2.T4;
-
-  T6 t6;
-  t6.T8();
-}
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:32:1 %s | FileCheck -check-prefix=CC1 %s
-// CHECK-CC1: FunctionDecl:{ResultType void}{TypedText T1}{{.*}}(brief comment: Aaa.)
-// CHECK-CC1: ClassDecl:{TypedText T2}{{.*}}(brief comment: Bbb.)
-// CHECK-CC1: Namespace:{TypedText T5}{{.*}}(brief comment: Eee.)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:34:6 %s | FileCheck -check-prefix=CC2 %s
-// CHECK-CC2: CXXMethod:{ResultType void}{TypedText T3}{{.*}}(brief comment: Ccc.)
-// CHECK-CC2: FieldDecl:{ResultType int}{TypedText T4}{{.*}}(brief comment: Ddd.)
-
-// RUN: env CINDEXTEST_COMPLETION_BRIEF_COMMENTS=1 c-index-test -code-completion-at=%s:37:6 %s | FileCheck -check-prefix=CC3 %s
-// CHECK-CC3: CXXMethod:{ResultType void}{TypedText T7}{LeftParen (}{RightParen )} (34)(brief comment: Fff.)
-// CHECK-CC3: CXXMethod:{ResultType void}{TypedText T8}{LeftParen (}{RightParen )} (34)(brief comment: Ggg.)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-enums.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-enums.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-enums.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
-enum __attribute__((deprecated)) Color {
-  Color_Red = 17,
-  Color_Green,
-  Color_Blue
-};
-int Greeby();
-void f(enum Color color) {
-  switch (color) {
-  case Red:
-  }
-}
-
-// RUN: c-index-test -code-completion-at=%s:11:1 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: EnumConstantDecl:{ResultType enum Color}{TypedText Color_Red} (65) (deprecated)
-
-// RUN: c-index-test -code-completion-at=%s:12:8 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: EnumConstantDecl:{ResultType enum Color}{TypedText Color_Blue} (7) (deprecated)
-// CHECK-CC2-NEXT: EnumConstantDecl:{ResultType enum Color}{TypedText Color_Green} (7) (deprecated)
-// CHECK-CC2-NEXT: EnumConstantDecl:{ResultType enum Color}{TypedText Color_Red} (7) (deprecated)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-enums.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-enums.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-enums.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-struct X { X(); ~X(); };
-enum class Color {
-  Red = 17,
-  Green,
-  Blue
-};
-int Greeby();
-void f(Color color) {
-  switch (color) {
-  case Color::Green: { X x; }
-  case Color::Red;
-  }
-}
-
-// RUN: c-index-test -code-completion-at=%s:12:8 -std=c++11  %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: EnumConstantDecl:{ResultType Color}{Text Color::}{TypedText Blue} (7)
-// CHECK-CC1: EnumConstantDecl:{ResultType Color}{Text Color::}{TypedText Green} (7)
-// CHECK-CC1: EnumConstantDecl:{ResultType Color}{Text Color::}{TypedText Red} (7)
-
-// RUN: c-index-test -code-completion-at=%s:13:8 -std=c++11  %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: EnumConstantDecl:{ResultType Color}{Text Color::}{TypedText Blue} (7)
-// CHECK-CC2-NOT: Green
-// CHECK-CC2: EnumConstantDecl:{ResultType Color}{Text Color::}{TypedText Red} (7)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
-int f(int) __attribute__((unavailable));
-
-int test(int i, int j, int k, int l) {
-  return i | j | k & l;
-}
-
-struct X __attribute__((deprecated)) f1 = { 17 };
-void f2() { f1(17); }
-
-const char *str = "Hello, \nWorld";
-
-void f3(const char*, ...) __attribute__((sentinel(0)));
-
-#define NULL __null
-void f4(const char* str) {
-  f3(str, NULL);
-}
-
-typedef int type;
-void f5(float f) {
-  (type)f;
-}
-
-// RUN: c-index-test -code-completion-at=%s:7:9 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC1 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:7:9 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: NotImplemented:{TypedText __PRETTY_FUNCTION__} (65)
-// CHECK-CC1: macro definition:{TypedText __VERSION__} (70)
-// CHECK-CC1: FunctionDecl:{ResultType int}{TypedText f}{LeftParen (}{Placeholder int}{RightParen )} (12) (unavailable)
-// CHECK-CC1-NOT: NotImplemented:{TypedText float} (65)
-// CHECK-CC1: ParmDecl:{ResultType int}{TypedText j} (8)
-// CHECK-CC1: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:7:9 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC1 %s
-// RUN: c-index-test -code-completion-at=%s:7:14 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:7:14 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: macro definition:{TypedText __VERSION__} (70)
-// CHECK-CC3: FunctionDecl:{ResultType int}{TypedText f}{LeftParen (}{Placeholder int}{RightParen )} (50)
-// CHECK-CC3-NOT: NotImplemented:{TypedText float}
-// CHECK-CC3: ParmDecl:{ResultType int}{TypedText j} (34)
-// CHECK-CC3: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expressio
-
-// RUN: c-index-test -code-completion-at=%s:7:18 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: c-index-test -code-completion-at=%s:7:22 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: c-index-test -code-completion-at=%s:7:2 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: macro definition:{TypedText __VERSION__} (70)
-// CHECK-CC2: FunctionDecl:{ResultType int}{TypedText f}{LeftParen (}{Placeholder int}{RightParen )} (50)
-// CHECK-CC2: NotImplemented:{TypedText float} (50)
-// CHECK-CC2: ParmDecl:{ResultType int}{TypedText j} (34)
-// CHECK-CC2: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// RUN: c-index-test -code-completion-at=%s:11:16 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: FunctionDecl:{ResultType int}{TypedText f}{LeftParen (}{Placeholder int}{RightParen )} (50)
-// CHECK-CC4: VarDecl:{ResultType struct X}{TypedText f1} (50) (deprecated)
-
-// RUN: c-index-test -code-completion-at=%s:19:3 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: FunctionDecl:{ResultType void}{TypedText f3}{LeftParen (}{Placeholder const char *, ...}{Text , NULL}{RightParen )} (50)
-// CHECK-CC6: NotImplemented:{TypedText void} (50)
-// CHECK-CC6: NotImplemented:{TypedText volatile} (50)
-
-// RUN: c-index-test -code-completion-at=%s:24:4 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC7 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:24:4 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC7 %s
-// CHECK-CC7: ParmDecl:{ResultType float}{TypedText f} (34)
-// CHECK-CC7: VarDecl:{ResultType struct X}{TypedText f1} (50) (deprecated)
-// CHECK-CC7: FunctionDecl:{ResultType void}{TypedText f2}{LeftParen (}{RightParen )} (50)
-// CHECK-CC7: FunctionDecl:{ResultType void}{TypedText f3}{LeftParen (}{Placeholder const char *, ...}{Text , NULL}{RightParen )} (50)
-// CHECK-CC7: FunctionDecl:{ResultType void}{TypedText f4}{LeftParen (}{Placeholder const char *str}{RightParen )} (50)
-// CHECK-CC7: FunctionDecl:{ResultType void}{TypedText f5}{LeftParen (}{Placeholder float f}{RightParen )} (50)
-// CHECK-CC7: TypedefDecl:{TypedText type} (50)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// Line- and column-sensitive test; run lines follow.
-
-class string {
- public:
-  string();
-  string(const char *);
-  string(const char *, int n);
-};
-
-template<typename T>
-class vector {
-public:
-  vector(const T &, unsigned n);
-  template<typename InputIterator>
-  vector(InputIterator first, InputIterator last);
-  void push_back(const T&);
-};
-template<typename T> void vector<T>::push_back(const T&) { }
-void f() {
-  
-}
-
-int foo();
-
-void g() {
-  vector<int>(foo(), foo());
-}
-
-struct X {
-  void f() const;
-};
-
-void X::f() const {
-
-}
-
-namespace N {
-  int x;
-  class C {
-    int member;
-
-    int f(int param) {
-      return member;
-    }
-  };
-}
-
-// RUN: c-index-test -code-completion-at=%s:20:2 %s -std=c++0x | FileCheck -check-prefix=CHECK-CC1 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:20:2 -std=c++0x %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: NotImplemented:{ResultType size_t}{TypedText alignof}{LeftParen (}{Placeholder type}{RightParen )} (40)
-// CHECK-CC1: NotImplemented:{ResultType bool}{TypedText noexcept}{LeftParen (}{Placeholder expression}{RightParen )} (40)
-// CHECK-CC1: NotImplemented:{ResultType std::nullptr_t}{TypedText nullptr} (40)
-// CHECK-CC1: NotImplemented:{TypedText operator} (40)
-// CHECK-CC1-NOT: push_back
-// CHECK-CC1: ClassDecl:{TypedText string} (50)
-// CHECK-CC1: CXXConstructor:{TypedText string}{LeftParen (}{RightParen )} (50)
-// CHECK-CC1: CXXConstructor:{TypedText string}{LeftParen (}{Placeholder const char *}{RightParen )} (50)
-// CHECK-CC1: CXXConstructor:{TypedText string}{LeftParen (}{Placeholder const char *}{Comma , }{Placeholder int n}{RightParen )} (50)
-// CHECK-CC1: ClassTemplate:{TypedText vector}{LeftAngle <}{Placeholder typename T}{RightAngle >} (50)
-// CHECK-CC1: CXXConstructor:{TypedText vector}{LeftAngle <}{Placeholder typename T}{RightAngle >}{LeftParen (}{Placeholder const T &}{Comma , }{Placeholder unsigned int n}{RightParen )} (50)
-// CHECK-CC1: FunctionTemplate:{ResultType void}{TypedText vector}{LeftAngle <}{Placeholder typename T}{RightAngle >}{LeftParen (}{Placeholder InputIterator first}{Comma , }{Placeholder InputIterator last}{RightParen )} (50)
-
-// RUN: c-index-test -code-completion-at=%s:19:1 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:19:1 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ClassDecl:{TypedText string} (50)
-// CHECK-CC2-NOT: CXXConstructor
-// CHECK-CC2: ClassTemplate:{TypedText vector}{LeftAngle <}{Placeholder typename T}{RightAngle >} (50)
-
-// RUN: c-index-test -code-completion-at=%s:26:15 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: NotImplemented:{TypedText float} (50)
-// CHECK-CC3: FunctionDecl:{ResultType int}{TypedText foo}{LeftParen (}{RightParen )} (50)
-// CHECK-CC3: FunctionDecl:{ResultType void}{TypedText g}{LeftParen (}{RightParen )} (50)
-// CHECK-CC3: ClassTemplate:{TypedText vector}{LeftAngle <}{Placeholder typename T}{RightAngle >} (50)
-// CHECK-CC3: CXXConstructor:{TypedText vector}{LeftAngle <}{Placeholder typename T}{RightAngle >}{LeftParen (}{Placeholder const T &}{Comma , }{Placeholder unsigned int n}{RightParen )} (50)
-// CHECK-CC3: FunctionTemplate:{ResultType void}{TypedText vector}{LeftAngle <}{Placeholder typename T}{RightAngle >}{LeftParen (}{Placeholder InputIterator first}{Comma , }{Placeholder InputIterator last}{RightParen )} (50)
-
-// RUN: c-index-test -code-completion-at=%s:34:1 %s -std=c++0x | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: NotImplemented:{ResultType const X *}{TypedText this} (40)
-
-// RUN: c-index-test -code-completion-at=%s:43:14 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: FieldDecl:{ResultType int}{TypedText member} (8)
-// CHECK-CC5: ParmDecl:{ResultType int}{TypedText param} (8)
-// CHECK-CC5: StructDecl:{TypedText X} (50)
-// CHECK-CC5: VarDecl:{ResultType int}{TypedText x} (12)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-exprs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-typedef signed char BOOL;
-#define YES ((BOOL)1)
-#define NO ((BOOL)0)
-#define bool _Bool
- at interface NSArray + (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt; @end
- at interface A
-- (int)method:(id)param1;
- at property int prop1;
- at end
-__strong id global;
- at implementation A
-- (int)method:(id)param1 {
-  void foo(bool (^block)(id x, A* y));
-  for(BOOL B = YES; ; ) { }
-  @[ global ];
-  @{ global : global };
-}
- at end
-
-// RUN: c-index-test -code-completion-at=%s:13:2 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: NotImplemented:{ResultType NSString *}{TypedText @"}{Placeholder string}{Text "} (40)
-// CHECK-CC1: NotImplemented:{ResultType id}{TypedText @(}{Placeholder expression}{RightParen )} (40)
-// CHECK-CC1: NotImplemented:{ResultType NSArray *}{TypedText @[}{Placeholder objects, ...}{RightBracket ]} (40)
-// CHECK-CC1: NotImplemented:{ResultType NSDictionary *}{TypedText @{}{Placeholder key}{Colon :}{HorizontalSpace  }{Placeholder object, ...}{RightBrace }} (40)
-// CHECK-CC1: NotImplemented:{ResultType SEL}{TypedText _cmd} (80)
-// CHECK-CC1: TypedefDecl:{TypedText BOOL} (50)
-// CHECK-CC1: macro definition:{TypedText bool} (51)
-// CHECK-CC1: macro definition:{TypedText NO} (65)
-// CHECK-CC1: NotImplemented:{ResultType A *}{TypedText self} (34)
-// CHECK-CC1: macro definition:{TypedText YES} (65)
-// RUN: c-index-test -code-completion-at=%s:14:7 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:14:7 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: TypedefDecl:{TypedText BOOL} (50)
-// CHECK-CC2: NotImplemented:{TypedText char} (50)
-// CHECK-CC2: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// RUN: c-index-test -code-completion-at=%s:15:1 -fobjc-arc -fobjc-nonfragile-abi  %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:15:1 -fobjc-arc -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: FunctionDecl:{ResultType void}{TypedText foo}{LeftParen (}{Placeholder ^bool(id x, A *y)block}{RightParen )} (34)
-// CHECK-CC3: VarDecl:{ResultType id}{TypedText global} (50)
-// CHECK-CC3: ParmDecl:{ResultType id}{TypedText param1} (34)
-
-// RUN: c-index-test -code-completion-at=%s:15:5 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// RUN: c-index-test -code-completion-at=%s:16:5 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// RUN: c-index-test -code-completion-at=%s:16:14 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: NotImplemented:{ResultType NSArray *}{TypedText @[}{Placeholder objects, ...}{RightBracket ]} (40)
-// CHECK-CC4: NotImplemented:{ResultType NSDictionary *}{TypedText @{}{Placeholder key}{Colon :}{HorizontalSpace  }{Placeholder object, ...}{RightBrace }} (40)
-// CHECK-CC4: NotImplemented:{ResultType SEL}{TypedText _cmd} (80)
-// CHECK-CC4: macro definition:{TypedText bool} (51)
-// CHECK-CC4: macro definition:{TypedText NO} (65)
-// CHECK-CC4: NotImplemented:{ResultType A *}{TypedText self} (34)
-// CHECK-CC4: macro definition:{TypedText YES} (65)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-hiding.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-hiding.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-hiding.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
-struct StructA { };
-struct StructB { };
-struct StructC { };
-int ValueA;
-int ValueB;
-
-void f() {
-
-  int ValueA = 0;
-  int StructA = 0;
-  struct StructB { };
-  
-  struct StructA sa = { };
-}
-
-// RUN: c-index-test -code-completion-at=%s:16:3 %s > %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 -input-file=%t %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:16:3 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: VarDecl:{ResultType int}{TypedText StructA} (34)
-// CHECK-CC1: VarDecl:{ResultType int}{TypedText ValueA} (34)
-// CHECK-CC1-NOT: VarDecl:{ResultType int}{TypedText ValueA} (50)
-// CHECK-CC1: VarDecl:{ResultType int}{TypedText ValueB} (50)
-// RUN: c-index-test -code-completion-at=%s:16:10 %s > %t
-// RUN: FileCheck -check-prefix=CHECK-CC2 -input-file=%t %s
-// CHECK-CC2: StructDecl:{TypedText StructA} (50)
-// CHECK-CC2-NOT: StructDecl:{TypedText StructB} (50)
-// CHECK-CC2: StructDecl:{TypedText StructC} (50)
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:16:10 %s > %t
-// RUN: FileCheck -check-prefix=CHECK-CC2 -input-file=%t %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-in-invalid-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-in-invalid-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-in-invalid-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
- at interface I
--(void)foo;
- at end
-
-struct S {
-  int x,y;
-};
-
- at implementation I
--(void) foo {
-  struct S s;
-  if (1) {
-    s.
-}
- at end
-
-// RUN: c-index-test -code-completion-at=%s:13:7 -fobjc-nonfragile-abi %s | FileCheck %s
-// CHECK: FieldDecl:{ResultType int}{TypedText x}
-// CHECK: FieldDecl:{ResultType int}{TypedText y}

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-in-stringify.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-in-stringify.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-in-stringify.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-const char *func(const char *);
-
-#define MORE __FILE__
-
-#define M(x) "1"#x
-#define N(x) func("2"#x MORE)
-
-void foo(const char *);
-
-int test() {
-    foo(M(x()));
-    foo(N(x()));
-}
-
-// RUN: c-index-test -code-completion-at=%s:11:11 %s | FileCheck %s
-// RUN: c-index-test -code-completion-at=%s:12:11 %s | FileCheck %s
-// CHECK: Natural language

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-interfaces.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-interfaces.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-interfaces.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-/* Note: the RUN lines are near the end of the file, since line/column
-   matter for this test. */
-
- at class Int1, Int2, Int3, Int4;
-
- at interface Int3 
-{
-}
- at end
-
- at interface Int2 : Int3
-{
-}
- at end
-
- at implementation Int2
- at end
-
- at implementation Int3
- at end
-
-// RUN: c-index-test -code-completion-at=%s:6:12 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCInterfaceDecl:{TypedText Int1}
-// CHECK-CC1: ObjCInterfaceDecl:{TypedText Int2}
-// CHECK-CC1: ObjCInterfaceDecl:{TypedText Int3}
-// CHECK-CC1: ObjCInterfaceDecl:{TypedText Int4}
-// RUN: c-index-test -code-completion-at=%s:11:12 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCInterfaceDecl:{TypedText Int1}
-// CHECK-CC2-NEXT: ObjCInterfaceDecl:{TypedText Int2}
-// CHECK-CC2-NEXT: ObjCInterfaceDecl:{TypedText Int3}
-// CHECK-CC2-NEXT: ObjCInterfaceDecl:{TypedText Int4}
-// RUN: c-index-test -code-completion-at=%s:11:19 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInterfaceDecl:{TypedText Int1}
-// CHECK-CC3-NEXT: ObjCInterfaceDecl:{TypedText Int3}
-// CHECK-CC3-NEXT: ObjCInterfaceDecl:{TypedText Int4}
-// RUN: c-index-test -code-completion-at=%s:16:17 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ObjCInterfaceDecl:{TypedText Int1}
-// CHECK-CC4-NEXT: ObjCInterfaceDecl:{TypedText Int2}
-// CHECK-CC4-NEXT: ObjCInterfaceDecl:{TypedText Int3}
-// CHECK-CC4-NEXT: ObjCInterfaceDecl:{TypedText Int4}
-// RUN: c-index-test -code-completion-at=%s:19:17 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: ObjCInterfaceDecl:{TypedText Int1}
-// CHECK-CC5-NEXT: ObjCInterfaceDecl:{TypedText Int3}
-// CHECK-CC5-NEXT: ObjCInterfaceDecl:{TypedText Int4}
-
-
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:11:12 %s | FileCheck -check-prefix=CHECK-CC2 %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-ivar-access.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-ivar-access.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-ivar-access.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
- at interface Other {
- at private
-  int other_private;
- at protected
-  int other_protected;
- at public
-  int other_public;
-}
- at end
-
- at interface Super {
- at private
-  int super_private;
- at protected
-  int super_protected;
- at public
-  int super_public;
-}
- at end
-
- at interface Super () {
- at private
-  int super_ext_private;
- at protected
-  int super_ext_protected;
- at public
-  int super_ext_public;
-}
- at end
-
- at interface Sub : Super {
- at private
-  int sub_private;
- at protected
-  int sub_protected;
- at public
-  int sub_public;
-}
- at end
-
- at implementation Sub
-- (void)method:(Sub *)sub with:(Other *)other {
-  sub->super_protected = 1;
-  other->other_public = 1;
-}
-
-void f(Sub *sub, Other *other) {
-  sub->super_protected = 1;
-  other->other_public = 1;
-}
- at end
-
-// RUN: c-index-test -code-completion-at=%s:43:8 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-SUB %s
-// RUN: c-index-test -code-completion-at=%s:48:8 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-SUB %s
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText sub_private} (35)
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText sub_protected} (35)
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText sub_public} (35)
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_ext_private} (35) (inaccessible)
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_ext_protected} (35)
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_ext_public} (35)
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_private} (37) (inaccessible)
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_protected} (37)
-// CHECK-SUB: ObjCIvarDecl:{ResultType int}{TypedText super_public} (37)
-
-// RUN: c-index-test -code-completion-at=%s:44:10 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-OTHER %s
-// RUN: c-index-test -code-completion-at=%s:49:10 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-OTHER %s
-// CHECK-OTHER: ObjCIvarDecl:{ResultType int}{TypedText other_private} (35) (inaccessible)
-// CHECK-OTHER: ObjCIvarDecl:{ResultType int}{TypedText other_protected} (35) (inaccessible)
-// CHECK-OTHER: ObjCIvarDecl:{ResultType int}{TypedText other_public} (35)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-kvc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-kvc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-kvc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,105 +0,0 @@
-// Test for code completions related to Key-Value Coding and Key-Value Observing.
-// Since this test is line- and column-sensitive, the run lines are at the end.
-
-typedef signed char BOOL;
-
- at interface NSSet
- at end
-
- at interface NSMutableSet : NSSet
- at end
-
- at interface MySet : NSMutableSet
- at end
-
- at interface NSArray
- at end
-
- at interface NSMutableArray : NSArray
- at end
-
- at interface MyArray : NSMutableArray
- at end
-
- at interface MyClass
- at property int intProperty;
- at property BOOL boolProperty;
- at property int* intPointerProperty;
-
- at property NSSet *setProperty;
- at property NSMutableSet *mutableSetProperty;
- at property MySet *mySetProperty;
-
- at property NSArray *arrayProperty;
- at property NSMutableArray *mutableArrayProperty;
- at property MyArray *myArrayProperty;
- at end
-
- at implementation MyClass
-- (int)intProperty { return 0; }
-- (void)setIntProperty:(int)newValue { }
-+ (NSSet *)keyPathsForValuesAffectingIntProperty { return 0; }
- at end
-
- at interface MySubClass : MyClass
- at end
-
- at interface MySubClass ()
- at property int intProperty;
- at end
-
- at implementation MySubClass
-- (int)intProperty { return 0; }
- at end
-
-// RUN: c-index-test -code-completion-at=%s:39:3 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText addMutableArrayPropertyObject:}{LeftParen (}{Placeholder object-type}{Text  *}{RightParen )}{Text object} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText addMutableSetProperty:}{LeftParen (}{Text NSSet *}{RightParen )}{Text objects} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSArray *}{RightParen )}{TypedText arrayProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSArray *}{RightParen )}{TypedText arrayPropertyAtIndexes:}{LeftParen (}{Text NSIndexSet *}{RightParen )}{Text indexes} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text BOOL}{RightParen )}{TypedText boolProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSArray *}{RightParen )}{TypedText boolPropertyAtIndexes:}{LeftParen (}{Text NSIndexSet *}{RightParen )}{Text indexes} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSUInteger}{RightParen )}{TypedText countOfArrayProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSUInteger}{RightParen )}{TypedText countOfBoolProperty} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSUInteger}{RightParen )}{TypedText countOfSetProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSEnumerator *}{RightParen )}{TypedText enumeratorOfMutableArrayProperty} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSEnumerator *}{RightParen )}{TypedText enumeratorOfMutableSetProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText getMyArrayProperty:}{LeftParen (}{Placeholder object-type}{Text  **}{RightParen )}{Text buffer}{HorizontalSpace  }{TypedText range:}{LeftParen (}{Text NSRange}{RightParen )}{Text inRange} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText getMySetProperty:}{LeftParen (}{Placeholder object-type}{Text  **}{RightParen )}{Text buffer}{HorizontalSpace  }{TypedText range:}{LeftParen (}{Text NSRange}{RightParen )}{Text inRange} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText insertIntProperty:}{LeftParen (}{Text NSArray *}{RightParen )}{Text array}{HorizontalSpace  }{TypedText atIndexes:}{LeftParen (}{Placeholder NSIndexSet *}{RightParen )}{Text indexes} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText insertMutableArrayProperty:}{LeftParen (}{Text NSArray *}{RightParen )}{Text array}{HorizontalSpace  }{TypedText atIndexes:}{LeftParen (}{Placeholder NSIndexSet *}{RightParen )}{Text indexes} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText insertObject:}{LeftParen (}{Placeholder object-type}{Text  *}{RightParen )}{Text object}{HorizontalSpace  }{TypedText inMyArrayPropertyAtIndex:}{LeftParen (}{Placeholder NSUInteger}{RightParen )}{Text index} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText insertObject:}{LeftParen (}{Placeholder object-type}{Text  *}{RightParen )}{Text object}{HorizontalSpace  }{TypedText inMySetPropertyAtIndex:}{LeftParen (}{Placeholder NSUInteger}{RightParen )}{Text index} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText intersectMySetProperty:}{LeftParen (}{Text NSSet *}{RightParen )}{Text objects} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText intersectSetProperty:}{LeftParen (}{Text NSSet *}{RightParen )}{Text objects} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text int *}{RightParen )}{TypedText intPointerProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text int}{RightParen )}{TypedText intProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text BOOL}{RightParen )}{TypedText isBoolProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text BOOL}{RightParen )}{TypedText isIntProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Placeholder object-type}{Text  *}{RightParen )}{TypedText memberOfMyArrayProperty:}{LeftParen (}{Placeholder object-type}{Text  *}{RightParen )}{Text object} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Placeholder object-type}{Text  *}{RightParen )}{TypedText memberOfMySetProperty:}{LeftParen (}{Placeholder object-type}{Text  *}{RightParen )}{Text object} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSMutableArray *}{RightParen )}{TypedText mutableArrayProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSMutableSet *}{RightParen )}{TypedText mutableSetProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSArray *}{RightParen )}{TypedText mutableSetPropertyAtIndexes:}{LeftParen (}{Text NSIndexSet *}{RightParen )}{Text indexes} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text MyArray *}{RightParen )}{TypedText myArrayProperty} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text NSArray *}{RightParen )}{TypedText myArrayPropertyAtIndexes:}{LeftParen (}{Text NSIndexSet *}{RightParen )}{Text indexes} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText objectInMutableSetPropertyAtIndex:}{LeftParen (}{Text NSUInteger}{RightParen )}{Text index} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText objectInMyArrayPropertyAtIndex:}{LeftParen (}{Text NSUInteger}{RightParen )}{Text index} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText removeMyArrayPropertyAtIndexes:}{LeftParen (}{Text NSIndexSet *}{RightParen )}{Text indexes} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText removeMySetPropertyAtIndexes:}{LeftParen (}{Text NSIndexSet *}{RightParen )}{Text indexes} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText removeObjectFromIntPropertyAtIndex:}{LeftParen (}{Text NSUInteger}{RightParen )}{Text index} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText removeObjectFromMutableArrayPropertyAtIndex:}{LeftParen (}{Text NSUInteger}{RightParen )}{Text index} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText replaceMyArrayPropertyAtIndexes:}{LeftParen (}{Placeholder NSIndexSet *}{RightParen )}{Text indexes}{HorizontalSpace  }{TypedText withMyArrayProperty:}{LeftParen (}{Text NSArray *}{RightParen )}{Text array} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText replaceMySetPropertyAtIndexes:}{LeftParen (}{Placeholder NSIndexSet *}{RightParen )}{Text indexes}{HorizontalSpace  }{TypedText withMySetProperty:}{LeftParen (}{Text NSArray *}{RightParen )}{Text array} (55)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText replaceObjectInMyArrayPropertyAtIndex:}{LeftParen (}{Placeholder NSUInteger}{RightParen )}{Text index}{HorizontalSpace  }{TypedText withObject:}{LeftParen (}{Text id}{RightParen )}{Text object} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text void}{RightParen )}{TypedText replaceObjectInMySetPropertyAtIndex:}{LeftParen (}{Placeholder NSUInteger}{RightParen )}{Text index}{HorizontalSpace  }{TypedText withObject:}{LeftParen (}{Text id}{RightParen )}{Text object} (55)
-
-// RUN: c-index-test -code-completion-at=%s:41:3 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCClassMethodDecl:{LeftParen (}{Text BOOL}{RightParen )}{TypedText automaticallyNotifiesObserversOfArrayProperty} (40)
-// CHECK-CC2: ObjCClassMethodDecl:{LeftParen (}{Text BOOL}{RightParen )}{TypedText automaticallyNotifiesObserversOfMutableArrayProperty} (40)
-// CHECK-CC2: ObjCClassMethodDecl:{LeftParen (}{Text NSSet *}{RightParen )}{TypedText keyPathsForValuesAffectingMutableArrayProperty} (40)
-
-// RUN: c-index-test -code-completion-at=%s:52:8 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInstanceMethodDecl:{TypedText countOfIntProperty} (55)
-// CHECK-CC3-NEXT: ObjCInstanceMethodDecl:{TypedText intProperty} (40)
-// CHECK-CC3-NEXT: ObjCInstanceMethodDecl:{TypedText isIntProperty} (40)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-lambdas.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-lambdas.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-lambdas.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// This test is line- and column-sensitive. See below for run lines.
-
-int global;
-
-struct X {
-  static int member;
-  void f(int zed) {
-    int local;
-    static int local_static;
-    [=] {
-      int inner_local;
-      [local, this, inner_local] {
-      }
-    }();
-  }
-};
-
-
-// RUN: c-index-test -code-completion-at=%s:12:8 -std=c++11 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: VarDecl:{ResultType int}{TypedText inner_local} (34)
-// CHECK-CC1-NEXT: VarDecl:{ResultType int}{TypedText local} (34)
-// CHECK-CC1-NEXT: NotImplemented:{ResultType X *}{TypedText this} (40)
-// CHECK-CC1-NEXT: ParmDecl:{ResultType int}{TypedText zed} (34)
-
-// RUN: c-index-test -code-completion-at=%s:12:15 -std=c++11 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: VarDecl:{ResultType int}{TypedText inner_local} (34)
-// CHECK-CC2-NEXT: NotImplemented:{ResultType X *}{TypedText this} (40)
-// CHECK-CC2-NEXT: ParmDecl:{ResultType int}{TypedText zed} (34)
-
-// RUN: c-index-test -code-completion-at=%s:12:21 -std=c++11 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: VarDecl:{ResultType int}{TypedText inner_local} (34)
-// CHECK-CC3-NEXT: ParmDecl:{ResultType int}{TypedText zed} (34)
-
-// RUN: c-index-test -code-completion-at=%s:12:8 -x objective-c++ -std=c++11 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: TypedefDecl:{TypedText Class} (50)
-// CHECK-CC4: TypedefDecl:{TypedText id} (50)
-// CHECK-CC4: VarDecl:{ResultType int}{TypedText inner_local} (34)
-// CHECK-CC4: VarDecl:{ResultType int}{TypedText local} (34)
-// CHECK-CC4: NotImplemented:{ResultType X *}{TypedText this} (40)
-// CHECK-CC4: ParmDecl:{ResultType int}{TypedText zed} (34)
-
-// RUN: c-index-test -code-completion-at=%s:12:15 -x objective-c++ -std=c++11 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: c-index-test -code-completion-at=%s:12:21 -x objective-c++ -std=c++11 %s | FileCheck -check-prefix=CHECK-CC3 %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-lambdas.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-lambdas.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-lambdas.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// This test is line- and column-sensitive. See below for run lines.
-
-
- at interface A
-- instanceMethod:(int)value withOther:(int)other;
-+ classMethod;
- at end
-
- at interface B : A
- at end
-
- at implementation B
-- someMethod:(A*)a {
-  [a classMethod];
-  [A classMethod];
-  [a instanceMethod:0 withOther:1];
-  [self someMethod:a];
-  [super instanceMethod];
-  [&,a ]{};
-  [a,self instanceMethod:0 withOther:1]{};  
-}
-
- at end
-
-// RUN: c-index-test -code-completion-at=%s:14:6 -std=c++11 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCInstanceMethodDecl:{ResultType id}{TypedText instanceMethod:}{Placeholder (int)}{HorizontalSpace  }{TypedText withOther:}{Placeholder (int)} (35)
-
-// RUN: c-index-test -code-completion-at=%s:15:6 -std=c++11 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCClassMethodDecl:{ResultType id}{TypedText classMethod} (35)
-
-// RUN: c-index-test -code-completion-at=%s:16:4 -std=c++11 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInterfaceDecl:{TypedText A} (50)
-// CHECK-CC3: ParmDecl:{ResultType A *}{TypedText a} (34)
-// CHECK-CC3: ObjCInterfaceDecl:{TypedText B} (50)
-// CHECK-CC3: TypedefDecl:{TypedText Class} (50)
-
-
-// RUN: c-index-test -code-completion-at=%s:16:21 -x objective-c++ -std=c++11 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: NotImplemented:{ResultType B *}{TypedText self} (34)
-// CHECK-CC4: NotImplemented:{ResultType A *}{TypedText super} (40)
-
-// RUN: c-index-test -code-completion-at=%s:18:10 -x objective-c++ -std=c++11 %s | FileCheck -check-prefix=CHECK-CC1 %s
-
-// RUN: c-index-test -code-completion-at=%s:19:8 -x objective-c++ -std=c++11 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: NotImplemented:{ResultType SEL}{TypedText _cmd} (34)
-// CHECK-CC5-NEXT: NotImplemented:{ResultType B *}{TypedText self} (34)
-
-// RUN: c-index-test -code-completion-at=%s:20:11 -x objective-c++ -std=c++11 %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType id}{TypedText instanceMethod:}{Placeholder (int)}{HorizontalSpace  }{TypedText withOther:}{Placeholder (int)} (37)
-// CHECK-CC6-NEXT: ObjCInstanceMethodDecl:{ResultType id}{TypedText someMethod:}{Placeholder (A *)} (32)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-macro-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-macro-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-macro-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-struct Point {
-  float x;
-  float y;
-  float z;
-};
-
-#define MACRO2(x) x
-#define MACRO(x) MACRO2(x)
-
-void test(struct Point *p) {
-        p->x;
-  MACRO(p->x);
-}
-
-#define MACRO3(x,y,z) x;y;z
-
-void test2(struct Point *p) {
-  MACRO3(p->x);
-  MACRO3(p->x
-}
-
-#define FM(x) x
-void test3(struct Point *p) {
-  FM(p->x, a);
-}
-
-#define VGM(...) 0
-#define VGM2(...) __VA_ARGS__
-
-// These need to be last, to test proper handling of EOF.
-#ifdef EOF_TEST1
-void test3(struct Point *p) {
-  VGM(1,2, p->x
-
-#elif EOF_TEST2
-void test3(struct Point *p) {
-  VGM2(VGM(1,2, p->x
-
-#endif
-
-// RUN: c-index-test -code-completion-at=%s:11:12 %s | FileCheck %s
-// RUN: c-index-test -code-completion-at=%s:12:12 %s | FileCheck %s
-// RUN: c-index-test -code-completion-at=%s:18:13 %s | FileCheck %s
-// RUN: c-index-test -code-completion-at=%s:19:13 %s | FileCheck %s
-// RUN: c-index-test -code-completion-at=%s:24:9 %s | FileCheck %s
-// CHECK:      FieldDecl:{ResultType float}{TypedText x} (35)
-// CHECK-NEXT: FieldDecl:{ResultType float}{TypedText y} (35)
-// CHECK-NEXT: FieldDecl:{ResultType float}{TypedText z} (35)
-// CHECK-NEXT: Completion contexts:
-// CHECK-NEXT: Arrow member access
-// CHECK-NEXT: Container Kind: StructDecl
-
-// With these, code-completion is unknown because the macro argument (and the
-// completion point) is not expanded by the macro definition.
-// RUN: c-index-test -code-completion-at=%s:33:15 %s -DEOF_TEST1 | FileCheck %s -check-prefix=CHECK-EOF
-// RUN: c-index-test -code-completion-at=%s:37:20 %s -DEOF_TEST2 | FileCheck %s -check-prefix=CHECK-EOF
-// CHECK-EOF: Completion contexts:
-// CHECK-EOF: Unknown

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-#define FOO(Arg1,Arg2) foobar
-#define nil 0
-#undef FOO
-void f() {
-
-}
-
-void g(int);
-
-void f2() {
-  int *ip = nil;
-  ip = nil;
-  g(nil);
-}
-
-#define variadic1(...)
-#define variadic2(args...)
-#define variadic3(args, ...)
-#define variadic4(first, second, args, ...)
-#define variadic5(first, second, args ...)
-
-void test_variadic() {
-  
-}
-
-// RUN: c-index-test -code-completion-at=%s:7:1 %s | FileCheck -check-prefix=CHECK-CC0 %s
-// CHECK-CC0-NOT: FOO
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:7:1 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: macro definition:{TypedText FOO}{LeftParen (}{Placeholder Arg1}{Comma , }{Placeholder Arg2}{RightParen )}
-// RUN: c-index-test -code-completion-at=%s:13:13 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: c-index-test -code-completion-at=%s:14:8 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:14:8 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: macro definition:{TypedText nil} (32)
-// RUN: c-index-test -code-completion-at=%s:15:5 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:15:5 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: macro definition:{TypedText nil} (65)
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:25:2 %s | FileCheck -check-prefix=CHECK-VARIADIC %s
-// CHECK-VARIADIC: macro definition:{TypedText variadic1}{LeftParen (}{Placeholder ...}{RightParen )} (70)
-// CHECK-VARIADIC: macro definition:{TypedText variadic2}{LeftParen (}{Placeholder args...}{RightParen )} (70)
-// CHECK-VARIADIC: macro definition:{TypedText variadic3}{LeftParen (}{Placeholder args, ...}{RightParen )} (70)
-// CHECK-VARIADIC: macro definition:{TypedText variadic4}{LeftParen (}{Placeholder first}{Comma , }{Placeholder second}{Comma , }{Placeholder args, ...}{RightParen )} (70)
-// CHECK-VARIADIC: macro definition:{TypedText variadic5}{LeftParen (}{Placeholder first}{Comma , }{Placeholder second}{Comma , }{Placeholder args...}{RightParen )} (70)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-member-access.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-member-access.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-member-access.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-/* Note: the RUN lines are near the end of the file, since line/column
-   matter for this test. */
-
- at protocol MyProtocol
- at property float ProtoProp;
- at end
-
- at interface Super {
-  int SuperIVar;
-}
- at end
- at interface Int : Super<MyProtocol>
-{
-  int IVar;
-}
-
- at property int prop1;
- at end
-
-void test_props(Int* ptr) {
-  ptr.prop1 = 0;
-  ptr->IVar = 0;
-}
-
- at interface Sub : Int 
- at property int myProp;
-
-- (int)myProp;
-- (int)myOtherPropLikeThing;
-- (int)myOtherNonPropThing:(int)value;
- at end
-
-int test_more_props(Sub *s) {
-  return s.myOtherPropLikeThing;
-}
-
- at interface Other
- at property Sub *sub;
- at end
-
-int test_two_levels(Other *other) {
-  return other.sub.myProp;
-}
-
-// RUN: c-index-test -code-completion-at=%s:21:7 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCPropertyDecl:{ResultType int}{TypedText prop1}
-// CHECK-CC1: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp}
-// CHECK-CC1: Completion contexts:
-// CHECK-CC1-NEXT: Objective-C property access
-// CHECK-CC1-NEXT: Container Kind: ObjCInterfaceDecl
-// CHECK-CC1-NEXT: Container is complete
-// CHECK-CC1-NEXT: Container USR: c:objc(cs)Int
-// RUN: c-index-test -code-completion-at=%s:22:8 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCIvarDecl:{ResultType int}{TypedText IVar} (35)
-// CHECK-CC2: ObjCIvarDecl:{ResultType int}{TypedText SuperIVar} (37)
-// CHECK-CC2: Completion contexts:
-// CHECK-CC2-NEXT: Arrow member access
-// CHECK-CC2-NEXT: Container Kind: ObjCInterfaceDecl
-// CHECK-CC2-NEXT: Container is complete
-// CHECK-CC2-NEXT: Container USR: c:objc(cs)Int
-// RUN: c-index-test -code-completion-at=%s:34:12 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType int}{TypedText myOtherPropLikeThing} (37)
-// CHECK-CC3: ObjCPropertyDecl:{ResultType int}{TypedText myProp} (35)
-// CHECK-CC3: ObjCPropertyDecl:{ResultType int}{TypedText prop1} (35)
-// CHECK-CC3: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp} (35)
-// CHECK-CC3: Completion contexts:
-// CHECK-CC3-NEXT: Objective-C property access
-// CHECK-CC3-NEXT: Container Kind: ObjCInterfaceDecl
-// CHECK-CC3-NEXT: Container is complete
-// CHECK-CC3-NEXT: Container USR: c:objc(cs)Sub
-
-// RUN: c-index-test -code-completion-at=%s:42:20 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText myOtherPropLikeThing} (37)
-// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText myProp} (35)
-// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText prop1} (35)
-// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType float}{TypedText ProtoProp} (35)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-memfunc-cvquals.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-memfunc-cvquals.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-memfunc-cvquals.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// The run lines are below, because this test is line- and
-// column-number sensitive.
-struct Foo {
-  void babble() const volatile;
-  void bar();
-  void baz() const;
-  void bingo() volatile;
-  void theend() const volatile;
-};
-
-template<typename T>
-struct smart_ptr {
-  T *operator->();
-  const T* operator->() const;
-};
-
-void text(Foo f, Foo *fp, const Foo &fc, const Foo *fcp,
-          smart_ptr<Foo> sf, const smart_ptr<Foo> &sfc, Foo volatile *fvp) {
-  f.bar();
-  fp->bar();
-  fc.baz();
-  fcp->baz();
-  sf->bar();
-  sfc->baz();
-  fvp->babble();
-}
-
-void Foo::bar() {
-  
-}
-
-void Foo::baz() const {
-
-}
-
-void Foo::bingo() volatile {
-
-}
-
-// Check member access expressions.
-// RUN: c-index-test -code-completion-at=%s:19:5 %s | FileCheck -check-prefix=CHECK-NOQUALS %s
-// RUN: c-index-test -code-completion-at=%s:20:7 %s | FileCheck -check-prefix=CHECK-NOQUALS %s
-// RUN: c-index-test -code-completion-at=%s:23:7 %s | FileCheck -check-prefix=CHECK-NOQUALS %s
-// CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative  const volatile} (35)
-// CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText bar}{LeftParen (}{RightParen )} (34)
-// CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative  const} (35)
-// CHECK-NOQUALS: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative  volatile} (35)
-// RUN: c-index-test -code-completion-at=%s:21:6 %s | FileCheck -check-prefix=CHECK-CONST %s
-// RUN: c-index-test -code-completion-at=%s:22:8 %s | FileCheck -check-prefix=CHECK-CONST %s
-// RUN: c-index-test -code-completion-at=%s:24:8 %s | FileCheck -check-prefix=CHECK-CONST %s
-// CHECK-CONST: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative  const volatile} (35)
-// CHECK-CONST-NOT: bar
-// CHECK-CONST: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative  const} (34)
-// CHECK-CONST-NOT: bingo
-// CHECK-CONST: theend
-// RUN: c-index-test -code-completion-at=%s:25:8 %s | FileCheck -check-prefix=CHECK-VOLATILE %s
-// CHECK-VOLATILE: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative  const volatile} (35)
-// CHECK-VOLATILE-NOT: baz
-// CHECK-VOLATILE: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative  volatile} (34)
-
-// Check implicit member access expressions.
-// RUN: c-index-test -code-completion-at=%s:29:2 %s | FileCheck -check-prefix=CHECK-IMPLICIT-NOQUALS %s
-// CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative  const volatile} (35)
-// CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText bar}{LeftParen (}{RightParen )} (34)
-// CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative  const} (35)
-// CHECK-IMPLICIT-NOQUALS: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative  volatile} (35)
-
-// RUN: c-index-test -code-completion-at=%s:33:1 %s | FileCheck -check-prefix=CHECK-IMPLICIT-CONST %s
-// CHECK-IMPLICIT-CONST: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative  const volatile} (35)
-// CHECK-IMPLICIT-CONST-NOT: bar
-// CHECK-IMPLICIT-CONST: CXXMethod:{ResultType void}{TypedText baz}{LeftParen (}{RightParen )}{Informative  const} (34)
-// CHECK-IMPLICIT-CONST-NOT: bingo
-// CHECK-IMPLICIT-CONST: theend
-
-// RUN: c-index-test -code-completion-at=%s:37:1 %s | FileCheck -check-prefix=CHECK-IMPLICIT-VOLATILE %s
-// CHECK-IMPLICIT-VOLATILE: CXXMethod:{ResultType void}{TypedText babble}{LeftParen (}{RightParen )}{Informative  const volatile} (35)
-// CHECK-IMPLICIT-VOLATILE-NOT: baz
-// CHECK-IMPLICIT-VOLATILE: CXXMethod:{ResultType void}{TypedText bingo}{LeftParen (}{RightParen )}{Informative  volatile} (34)
-
-// RUN: c-index-test -code-completion-at=%s:4:17 %s | FileCheck -check-prefix=CHECK-CVQUAL-AFTER %s
-// CHECK-CVQUAL-AFTER: NotImplemented:{TypedText const} (40)
-// CHECK-CVQUAL-AFTER: NotImplemented:{TypedText volatile} (40)
-
-// RUN: c-index-test -code-completion-at=%s:4:23 %s | FileCheck -check-prefix=CHECK-CVQUAL-AFTER2 %s
-// CHECK-CVQUAL-AFTER2-NOT: NotImplemented:{TypedText const} (40)
-// CHECK-CVQUAL-AFTER2: NotImplemented:{TypedText volatile} (40)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-method-decls.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-method-decls.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-method-decls.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,184 +0,0 @@
-/* Note: the RUN lines are near the end of the file, since line/column
-   matter for this test. */
-#define IBAction void
- at protocol P1
-- (id)abc;
-- (id)initWithInt:(int)x;
-- (id)initWithTwoInts:(inout int)x second:(int)y;
-- (int)getInt;
-- (id)getSelf;
- at end
- at protocol P1;
- at protocol P2<P1>
-+ (id)alloc;
- at end
-
- at interface A <P1>
-- (id)init;
-- (int)getValue;
- at end
-
- at interface B : A<P2>
-- (id)initWithInt:(int)x;
-- (int)getSecondValue;
-- (id)getSelf;
-- (int)setValue:(int)x;
- at end
-
- at interface B (FooBar)
-- (id)categoryFunction:(int)x;
- at end
-
- at implementation B
-- (int)getSecondValue { return 0; }
-- (id)init { return self; }
-- (id)getSelf { return self; }
-- (void)setValue:(int)x { }
-- (id)initWithTwoInts:(int)x second:(int)y { return self; }
-+ (id)alloc { return 0; }
- at end
-
- at implementation B (FooBar)
-- (id)categoryFunction:(int)x { return self; }
- at end
-
- at interface C
-- (int)first:(int)x second:(float)y third:(double)z;
-- (id)first:(int)xx second2:(float)y2 third:(double)z;
-- (void*)first:(int)xxx second3:(float)y3 third:(double)z;
- at end
-
- at interface D
-- (int)first:(int)x second2:(float)y third:(double)z;
- at end
-
- at implementation D
-- (int)first:(int)x second2:(float)y third:(double)z { }
- at end
-
- at interface Passing
-- (oneway void)method:(in id)x;
- at end
-
- at interface Gaps
-- (void)method:(int)x :(int)y;
- at end
-
- at implementation Gaps
-- (void)method:(int)x :(int)y {}
- at end
-
- at implementation Passing
-- (oneway void)method:(in id x) {}
- at end
-
-// RUN: c-index-test -code-completion-at=%s:17:3 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText abc} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text int}{RightParen )}{TypedText getInt} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText getSelf} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText initWithInt}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x} (40)
-// CHECK-CC1: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText initWithTwoInts}{TypedText :}{LeftParen (}{Text inout }{Text int}{RightParen )}{Text x}{HorizontalSpace  }{TypedText second:}{LeftParen (}{Text int}{RightParen )}{Text y} (40)
-// RUN: c-index-test -code-completion-at=%s:17:7 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCInstanceMethodDecl:{TypedText abc}
-// CHECK-CC2-NEXT: ObjCInstanceMethodDecl:{TypedText getSelf}
-// CHECK-CC2: ObjCInstanceMethodDecl:{TypedText initWithInt}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}
-// CHECK-CC2: ObjCInstanceMethodDecl:{TypedText initWithTwoInts}{TypedText :}{LeftParen (}{Text inout }{Text int}{RightParen )}{Text x}{HorizontalSpace  }{TypedText second:}{LeftParen (}{Text int}{RightParen )}{Text y}
-// RUN: c-index-test -code-completion-at=%s:24:7 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInstanceMethodDecl:{TypedText abc}
-// CHECK-CC3-NEXT: ObjCInstanceMethodDecl:{TypedText getSelf}
-// CHECK-CC3: ObjCInstanceMethodDecl:{TypedText init}
-// CHECK-CC3: ObjCInstanceMethodDecl:{TypedText initWithInt}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}
-// CHECK-CC3: ObjCInstanceMethodDecl:{TypedText initWithTwoInts}{TypedText :}{LeftParen (}{Text inout }{Text int}{RightParen )}{Text x}{HorizontalSpace  }{TypedText second:}{LeftParen (}{Text int}{RightParen )}{Text y}
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:33:3 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText abc}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Text return}{HorizontalSpace  }{Placeholder expression}{SemiColon ;}{VerticalSpace  }{RightBrace }} (42)
-// CHECK-CC4: ObjCInstanceMethodDecl:{LeftParen (}{Text int}{RightParen )}{TypedText getInt}{HorizontalSpace  }{LeftBrace {}{VerticalSpace
-// CHECK-CC4: ObjCInstanceMethodDecl:{LeftParen (}{Text int}{RightParen )}{TypedText getSecondValue}{HorizontalSpace  }{LeftBrace {}{VerticalSpace
-// CHECK-CC4: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText getSelf}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Text return}{HorizontalSpace  }{Placeholder expression}{SemiColon ;}{VerticalSpace  }{RightBrace }} (40)
-// CHECK-CC4: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText initWithInt}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{LeftBrace {}{VerticalSpace
-// CHECK-CC4: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText initWithTwoInts}{TypedText :}{LeftParen (}{Text inout }{Text int}{RightParen )}{Text x}{HorizontalSpace  }{TypedText second:}{LeftParen (}{Text int}{RightParen )}{Text y}{HorizontalSpace  }{LeftBrace {}{VerticalSpace
-// CHECK-CC4: ObjCInstanceMethodDecl:{LeftParen (}{Text int}{RightParen )}{TypedText setValue}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{LeftBrace {}{VerticalSpace
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:33:8 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: ObjCInstanceMethodDecl:{TypedText getInt}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Text return}{HorizontalSpace  }{Placeholder expression}{SemiColon ;}{VerticalSpace  }{RightBrace }} (42)
-// CHECK-CC5: ObjCInstanceMethodDecl:{TypedText getSecondValue}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Text return}{HorizontalSpace  }{Placeholder expression}{SemiColon ;}{VerticalSpace  }{RightBrace }} (40)
-// CHECK-CC5-NOT: {TypedText getSelf}{HorizontalSpace  }{LeftBrace {}{VerticalSpace
-// CHECK-CC5: ObjCInstanceMethodDecl:{TypedText setValue}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{LeftBrace {}{VerticalSpace
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:37:7 %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: ObjCInstanceMethodDecl:{TypedText abc}{HorizontalSpace  }{LeftBrace {}{VerticalSpace 
-// CHECK-CC6: ObjCInstanceMethodDecl:{TypedText getSelf}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Text return}{HorizontalSpace  }{Placeholder expression}{SemiColon ;}{VerticalSpace  }{RightBrace }} (40)
-// CHECK-CC6: ObjCInstanceMethodDecl:{TypedText initWithInt}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{LeftBrace {}{VerticalSpace 
-// CHECK-CC6: ObjCInstanceMethodDecl:{TypedText initWithTwoInts}{TypedText :}{LeftParen (}{Text inout }{Text int}{RightParen )}{Text x}{HorizontalSpace  }{TypedText second:}{LeftParen (}{Text int}{RightParen )}{Text y}{HorizontalSpace  }{LeftBrace {}{VerticalSpace 
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:42:3 %s | FileCheck -check-prefix=CHECK-CC7 %s
-// CHECK-CC7: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText abc}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Text return}{HorizontalSpace  }{Placeholder expression}{SemiColon ;}{VerticalSpace  }{RightBrace }} (42)
-// CHECK-CC7: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText categoryFunction}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{LeftBrace {}{VerticalSpace 
-// CHECK-CC7: ObjCInstanceMethodDecl:{LeftParen (}{Text id}{RightParen )}{TypedText getSelf}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Text return}{HorizontalSpace  }{Placeholder expression}{SemiColon ;}{VerticalSpace  }{RightBrace }} (42)
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:52:21 %s | FileCheck -check-prefix=CHECK-CC8 %s
-// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType id}{Informative first:}{TypedText second2:}{Text (float)y2}{HorizontalSpace  }{TypedText third:}{Text (double)z} (35)
-// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType void *}{Informative first:}{TypedText second3:}{Text (float)y3}{HorizontalSpace  }{TypedText third:}{Text (double)z} (35)
-// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative first:}{TypedText second:}{Text (float)y}{HorizontalSpace  }{TypedText third:}{Text (double)z} (8)
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:52:19 %s | FileCheck -check-prefix=CHECK-CC9 %s
-// CHECK-CC9: NotImplemented:{TypedText x} (40)
-// CHECK-CC9: NotImplemented:{TypedText xx} (40)
-// CHECK-CC9: NotImplemented:{TypedText xxx} (40)
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:52:36 %s | FileCheck -check-prefix=CHECK-CCA %s
-// CHECK-CCA: NotImplemented:{TypedText y2} (40)
-// RUN: c-index-test -code-completion-at=%s:56:3 %s | FileCheck -check-prefix=CHECK-CCB %s
-// CHECK-CCB: ObjCInstanceMethodDecl:{LeftParen (}{Text int}{RightParen )}{TypedText first}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{TypedText second2:}{LeftParen (}{Text float}{RightParen )}{Text y}{HorizontalSpace  }{TypedText third:}{LeftParen (}{Text double}{RightParen )}{Text z} (40)
-// RUN: c-index-test -code-completion-at=%s:56:8 %s | FileCheck -check-prefix=CHECK-CCC %s
-// CHECK-CCC: ObjCInstanceMethodDecl:{TypedText first}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{TypedText second2:}{LeftParen (}{Text float}{RightParen )}{Text y}{HorizontalSpace  }{TypedText third:}{LeftParen (}{Text double}{RightParen )}{Text z} (40)
-// RUN: c-index-test -code-completion-at=%s:56:21 %s | FileCheck -check-prefix=CHECK-CCD %s
-// CHECK-CCD: ObjCInstanceMethodDecl:{ResultType id}{Informative first:}{TypedText second2:}{Text (float)y2}{HorizontalSpace  }{TypedText third:}{Text (double)z} (35)
-// CHECK-CCD: ObjCInstanceMethodDecl:{ResultType int}{Informative first:}{TypedText second2:}{Text (float)y}{HorizontalSpace  }{TypedText third:}{Text (double)z} (8)
-// CHECK-CCD: ObjCInstanceMethodDecl:{ResultType void *}{Informative first:}{TypedText second3:}{Text (float)y3}{HorizontalSpace  }{TypedText third:}{Text (double)z} (35)
-// CHECK-CCD: ObjCInstanceMethodDecl:{ResultType int}{Informative first:}{TypedText second:}{Text (float)y}{HorizontalSpace  }{TypedText third:}{Text (double)z} (8)
-// RUN: c-index-test -code-completion-at=%s:56:38 %s | FileCheck -check-prefix=CHECK-CCE %s
-// CHECK-CCE: ObjCInstanceMethodDecl:{ResultType id}{Informative first:}{Informative second2:}{TypedText third:}{Text (double)z} (35)
-// CHECK-CCE: ObjCInstanceMethodDecl:{ResultType int}{Informative first:}{Informative second2:}{TypedText third:}{Text (double)z} (8)
-// RUN: c-index-test -code-completion-at=%s:60:4 %s | FileCheck -check-prefix=CHECK-CCF %s
-// CHECK-CCF: ObjCInterfaceDecl:{TypedText A} (50)
-// CHECK-CCF: ObjCInterfaceDecl:{TypedText B} (50)
-// CHECK-CCF: NotImplemented:{TypedText bycopy} (40)
-// CHECK-CCF: NotImplemented:{TypedText byref} (40)
-// CHECK-CCF: NotImplemented:{TypedText in} (40)
-// CHECK-CCF: NotImplemented:{TypedText inout} (40)
-// CHECK-CCF: NotImplemented:{TypedText oneway} (40)
-// CHECK-CCF: NotImplemented:{TypedText out} (40)
-// CHECK-CCF: NotImplemented:{TypedText unsigned} (50)
-// CHECK-CCF: NotImplemented:{TypedText void} (50)
-// CHECK-CCF: NotImplemented:{TypedText volatile} (50)
-// RUN: c-index-test -code-completion-at=%s:60:11 %s | FileCheck -check-prefix=CHECK-CCG %s
-// CHECK-CCG: ObjCInterfaceDecl:{TypedText A} (50)
-// CHECK-CCG: ObjCInterfaceDecl:{TypedText B} (50)
-// CHECK-CCG-NOT: NotImplemented:{TypedText bycopy} (40)
-// CHECK-CCG-NOT: NotImplemented:{TypedText byref} (40)
-// CHECK-CCG: NotImplemented:{TypedText in} (40)
-// CHECK-CCG: NotImplemented:{TypedText inout} (40)
-// CHECK-CCG-NOT: NotImplemented:{TypedText oneway} (40)
-// CHECK-CCG: NotImplemented:{TypedText out} (40)
-// CHECK-CCG: NotImplemented:{TypedText unsigned} (50)
-// CHECK-CCG: NotImplemented:{TypedText void} (50)
-// CHECK-CCG: NotImplemented:{TypedText volatile} (50)
-// RUN: c-index-test -code-completion-at=%s:60:24 %s | FileCheck -check-prefix=CHECK-CCF %s
-// RUN: c-index-test -code-completion-at=%s:60:26 %s | FileCheck -check-prefix=CHECK-CCH %s
-// CHECK-CCH: ObjCInterfaceDecl:{TypedText A} (50)
-// CHECK-CCH: ObjCInterfaceDecl:{TypedText B} (50)
-// CHECK-CCH: NotImplemented:{TypedText bycopy} (40)
-// CHECK-CCH: NotImplemented:{TypedText byref} (40)
-// CHECK-CCH-NOT: NotImplemented:{TypedText in} (40)
-// CHECK-CCH: NotImplemented:{TypedText inout} (40)
-// CHECK-CCH: NotImplemented:{TypedText oneway} (40)
-// CHECK-CCH: NotImplemented:{TypedText out} (40)
-// CHECK-CCH: NotImplemented:{TypedText unsigned} (50)
-// CHECK-CCH: NotImplemented:{TypedText void} (50)
-// CHECK-CCH: NotImplemented:{TypedText volatile} (50)
-
-// IBAction completion
-// RUN: c-index-test -code-completion-at=%s:5:4 %s | FileCheck -check-prefix=CHECK-IBACTION %s
-// CHECK-IBACTION: NotImplemented:{TypedText IBAction}{RightParen )}{Placeholder selector}{Colon :}{LeftParen (}{Text id}{RightParen )}{Text sender} (40)
-
-// <rdar://problem/8939352>
-// RUN: c-index-test -code-completion-at=%s:68:9 %s | FileCheck -check-prefix=CHECK-8939352 %s
-// CHECK-8939352: ObjCInstanceMethodDecl:{TypedText method}{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{TypedText :}{LeftParen (}{Text int}{RightParen )}{Text y} (40)
-
-
-// RUN: c-index-test -code-completion-at=%s:72:2 %s | FileCheck -check-prefix=CHECK-ONEWAY %s
-// CHECK-ONEWAY: ObjCInstanceMethodDecl:{LeftParen (}{Text oneway }{Text void}{RightParen )}{TypedText method}{TypedText :}{LeftParen (}{Text in }{Text id}{RightParen )}{Text x} (40)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-modules.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-modules.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-modules.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
- at import LibA.Extensions;
-
-// RUN: rm -rf %t
-// RUN: c-index-test -code-completion-at=%s:4:9 -fmodules-cache-path=%t -fmodules -F %S/Inputs/Frameworks -I %S/Inputs/Headers %s | FileCheck -check-prefix=CHECK-TOP-LEVEL %s
-// CHECK-TOP-LEVEL: NotImplemented:{TypedText Framework} (50)
-// CHECK-TOP-LEVEL: NotImplemented:{TypedText LibA} (50)
-// CHECK-TOP-LEVEL: NotImplemented:{TypedText nested} (50)
-
-// RUN: c-index-test -code-completion-at=%s:4:14 -fmodules-cache-path=%t -fmodules -F %S/Inputs/Frameworks -I %S/Inputs/Headers %s | FileCheck -check-prefix=CHECK-LIBA %s
-// CHECK-LIBA: NotImplemented:{TypedText Extensions} (50)
-
-// RUN: c-index-test -code-completion-at=%s:4:1 -fmodules-cache-path=%t -fmodules -F %S/Inputs/Frameworks -I %S/Inputs/Headers %s | FileCheck -check-prefix=CHECK-TOP %s
-// CHECK-TOP: NotImplemented:{TypedText @import}{HorizontalSpace  }{Placeholder module} (40)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-natural.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-natural.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-natural.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
-const char *in_string = "string";
-char in_char = 'a';
-// in comment
-/* in comment */
-#warning blarg
-#error blarg
-#pragma mark this is the spot
-// RUN: c-index-test -code-completion-at=%s:4:32 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// CHECK-CC1: Completion contexts:
-// CHECK-CC1-NEXT: Natural language
-// CHECK-CC1-NEXT: DONE
-// RUN: c-index-test -code-completion-at=%s:5:18 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: c-index-test -code-completion-at=%s:6:7 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: c-index-test -code-completion-at=%s:7:7 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: c-index-test -code-completion-at=%s:8:10 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: c-index-test -code-completion-at=%s:9:9 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: c-index-test -code-completion-at=%s:10:19 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-
-// Same tests as above, but with completion caching.
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:4:32 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:5:18 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:6:7 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:7:7 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:8:10 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:9:9 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:10:19 %s > %t
-// RUN: echo "DONE" >> %t
-// RUN: FileCheck -check-prefix=CHECK-CC1 %s < %t

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-objc-message-id.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-objc-message-id.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-objc-message-id.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
- at interface A
-+ (id)alloc;
-+ (id)init;
-+ (id)new;
-+ (Class)class;
-+ (Class)superclass;
-- (id)retain;
-- (id)autorelease;
-- (id)superclass;
- at end
-
- at interface B : A
-- (int)B_method;
- at end
-
- at interface Unrelated
-+ (id)icky;
- at end
-
-void message_id(B *b) {
-  [[A alloc] init];
-  [[b retain] B_method];
-  [[b superclass] B_method];
-}
-
- at implementation Unrelated
-+ (id)alloc {
-  return [A alloc];
-}
- at end
-
- at protocol P1
-- (int)P1_method1;
-+ (int)P1_method2;
- at end
-
- at protocol P2 <P1>
-- (int)P2_method1;
-+ (int)P2_method2;
- at end
-
-void message_qualified_id(id<P2> ip2) {
-  [ip2 P1_method];
-   ip2 P1_method];
-}
-
-// RUN: c-index-test -code-completion-at=%s:24:14 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCInstanceMethodDecl:{ResultType id}{TypedText autorelease}
-// CHECK-CC1-NOT: B_method
-// CHECK-CC1: ObjCInstanceMethodDecl:{ResultType id}{TypedText retain}
-// RUN: c-index-test -code-completion-at=%s:25:15 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType id}{TypedText autorelease}
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType int}{TypedText B_method}
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType id}{TypedText retain}
-// RUN: c-index-test -code-completion-at=%s:26:19 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType id}{TypedText autorelease}
-// CHECK-CC3-NOT: B_method
-// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType id}{TypedText retain}
-
-
-// RUN: c-index-test -code-completion-at=%s:31:13 %s | FileCheck -check-prefix=CHECK-SELECTOR-PREF %s
-// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType id}{TypedText alloc} (32)
-// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType Class}{TypedText class} (35)
-// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType id}{TypedText init} (35)
-// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType id}{TypedText new} (35)
-// CHECK-SELECTOR-PREF: ObjCClassMethodDecl:{ResultType Class}{TypedText superclass} (35)
-
-// RUN: c-index-test -code-completion-at=%s:46:7 %s | FileCheck -check-prefix=CHECK-INSTANCE-QUAL-ID %s
-// RUN: c-index-test -code-completion-at=%s:47:7 %s | FileCheck -check-prefix=CHECK-INSTANCE-QUAL-ID %s
-// CHECK-INSTANCE-QUAL-ID: ObjCInstanceMethodDecl:{ResultType int}{TypedText P1_method1} (37)
-// CHECK-INSTANCE-QUAL-ID: ObjCInstanceMethodDecl:{ResultType int}{TypedText P2_method1} (35)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-objc-message.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-objc-message.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-objc-message.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,337 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-#define nil (void*)0
- at protocol FooTestProtocol
-+ protocolClassMethod;
-- protocolInstanceMethod : (int)value;
- at end
- at interface Foo <FooTestProtocol> {
-  void *isa;
-}
-+ (int)classMethod1:a withKeyword:(int)b;
-+ (void)classMethod2;
-+ new;
-- instanceMethod1;
- at end
-
- at interface Foo (FooTestCategory)
-+ categoryClassMethod;
-- categoryInstanceMethod;
- at end
-
-void func() {
-  Foo *obj = [Foo new];
-  [obj xx];
-}
-
- at interface MyClass { }
-+ (int)MyClassMethod:(id)obj;
-- (int)MyInstMethod:(id)x second:(id)y;
- at end
-
- at interface MySubClass : MyClass { }
-+ (int)MySubClassMethod;
-- (int)MySubInstMethod;
- at end
-
- at implementation MyClass 
-+ (int)MyClassMethod:(id)obj {
-  return 0;
-}
-
-+ (int)MyPrivateMethod {
-  return 1;
-}
-
-- (int)MyInstMethod:(id)x second:(id)y {
-  return 2;
-}
-
-- (int)MyPrivateInstMethod {
-  return 3;
-}
- at end
-MyClass *getMyClass();
- at implementation MySubClass
-+ (int)MySubClassMethod {
-  return 2;
-}
-
-+ (int)MySubPrivateMethod {
-  return [super MyPrivateMethod];
-}
-
-- (int)MySubInstMethod:(id)obj {
-  return [super MyInstMethod: obj second:obj];
-}
-
-- (int)MyInstMethod:(id)x second:(id)y {
-  return 3;
-}
- at end
-
-void test_super_var(MySubClass *super) {
-  [super MyInstMethod: super second:super];
-}
-
- at protocol FooTestProtocol2
-- (int)secondProtocolInstanceMethod;
- at end
-
-void test_qual_id(id<FooTestProtocol,FooTestProtocol2> ptr) {
-  [ptr protocolInstanceMethod:1];
-}
-
- at interface Overload
-- (int)Method:(int)i;
-- (int)Method;
-- (int)Method:(float)f Arg1:(int)i1 Arg2:(int)i2;
-- (int)Method:(float)f Arg1:(int)i1 OtherArg:(id)obj;
-- (int)Method:(float)f SomeArg:(int)i1 OtherArg:(id)obj;
-- (int)OtherMethod:(float)f Arg1:(int)i1 Arg2:(int)i2;
- at end
-
-void test_overload(Overload *ovl) {
-  [ovl Method:1 Arg1:1 OtherArg:ovl];
-}
-
- at interface Ellipsis
-- (int)Method:(int)i, ...; 
-- (int)SentinelMethod:(int)i, ... __attribute__((sentinel(0,1)));
- at end
-void f(Ellipsis *e) {
-  [e Method:1, 2, 3];
-}
-
- at interface Overload2
-+ (int)Method:(int)i;
-+ (int)Method;
-+ (int)Method:(float)f Arg1:(int)i1 Arg2:(int)i2;
-+ (int)Method:(float)f Arg1:(int)i1 OtherArg:(id)obj;
-+ (int)Method:(float)f SomeArg:(int)i1 OtherArg:(id)obj;
-+ (int)OtherMethod:(float)f Arg1:(int)i1 Arg2:(int)i2;
- at end
-
-void test_overload2(void) {
-  [Overload2 Method:1 Arg1:1 OtherArg:ovl];
-}
-
-void msg_id(id x) {
-  [x Method:1 Arg1:1 OtherArg:ovl];
-  [[x blarg] Method:1 Arg1:1 OtherArg:ovl];
-  [id Method:1 Arg1:1 OtherArg:ovl];
-}
-
- at interface A
-- (void)method1;
- at end 
-
- at interface B : A
-- (void)method2;
- at end
-
-void test_ranking(B *b) {
-  [b method1];
-  b method1];
-}
-
-void test_overload3(Overload *ovl) {
-  ovl Method:1 Arg1:1 OtherArg:ovl];
-   Overload2 Method:1 Arg1:1 OtherArg:ovl];
-  (Overload2 Method:1 Arg1:1 OtherArg:ovl]);
-}
-
- at interface C : B
-- (void)method2;
-- (void)method3;
- at end
-
-void test_redundancy(C *c) {
-  [c method2];
-};
-
- at protocol P
-- (Class)class;
- at end
-
- at interface A () <P>
- at end
-
- at interface A ()
-+ (void)class_method3;
- at end
-
- at interface A (Cat)
-+ (void)class_method4;
- at end
-
- at implementation A
-- (void)method5:(A*)a {
-  [[self class] class_method4];
-}
- at end
-
-void test_missing_open_more() {
-  A *a = A class_method3];
-}
-
-void test_block_invoke(A *(^block1)(int), 
-                       int (^block2)(int), 
-                       id (^block3)(int)) {
-  [block1(5) init];
-}
-
- at interface DO
-- (void)method:(in bycopy A*)ain result:(out byref A**)aout;
- at end
-
-void test_DO(DO *d, A* a) {
-  [d method:a aout:&a];
-}
-
-// RUN: c-index-test -code-completion-at=%s:23:19 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: {TypedText categoryClassMethod} (35)
-// CHECK-CC1: {TypedText classMethod1:}{Placeholder (id)}{HorizontalSpace  }{TypedText withKeyword:}{Placeholder (int)} (35)
-// CHECK-CC1: {TypedText classMethod2} (35)
-// CHECK-CC1: {TypedText instanceMethod1} (35)
-// CHECK-CC1: {TypedText new} (35)
-// CHECK-CC1: {TypedText protocolClassMethod} (37)
-// CHECK-CC1: Completion contexts:
-// CHECK-CC1-NEXT: Objective-C class method
-// CHECK-CC1-NEXT: Container Kind: ObjCInterfaceDecl
-// CHECK-CC1-NEXT: Container is complete
-// CHECK-CC1-NEXT: Container USR: c:objc(cs)Foo
-// RUN: c-index-test -code-completion-at=%s:24:8 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: {TypedText categoryInstanceMethod}
-// CHECK-CC2: {TypedText instanceMethod1}
-// CHECK-CC2: {TypedText protocolInstanceMethod:}{Placeholder (int)}
-// CHECK-CC2: Completion contexts:
-// CHECK-CC2-NEXT: Objective-C instance method
-// CHECK-CC2-NEXT: Container Kind: ObjCInterfaceDecl
-// CHECK-CC2-NEXT: Container is complete
-// CHECK-CC2-NEXT: Container USR: c:objc(cs)Foo
-// RUN: c-index-test -code-completion-at=%s:61:16 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCClassMethodDecl:{ResultType int}{TypedText MyClassMethod:}{Placeholder (id)}
-// CHECK-CC3: ObjCClassMethodDecl:{ResultType int}{TypedText MyPrivateMethod}
-// RUN: c-index-test -code-completion-at=%s:65:16 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace  }{TypedText second:}{Placeholder (id)}
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod}
-// RUN: c-index-test -code-completion-at=%s:74:9 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace  }{TypedText second:}{Placeholder (id)}
-// CHECK-CC5: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod}
-// RUN: c-index-test -code-completion-at=%s:82:8 %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)}
-// CHECK-CC6: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod}
-// RUN: c-index-test -code-completion-at=%s:95:8 %s | FileCheck -check-prefix=CHECK-CC7 %s
-// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method}
-// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
-// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
-// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CC7: ObjCInstanceMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
-// RUN: c-index-test -code-completion-at=%s:95:17 %s | FileCheck -check-prefix=CHECK-CC8 %s
-// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
-// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CC8: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CC8-NOT: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{TypedText }
-// RUN: c-index-test -code-completion-at=%s:95:24 %s | FileCheck -check-prefix=CHECK-CC9 %s
-// CHECK-CC9: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText Arg2:}{Placeholder (int)}
-// CHECK-CC9: ObjCInstanceMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CC9: Objective-C selector: Method:Arg1:
-// RUN: c-index-test -code-completion-at=%s:61:11 %s | FileCheck -check-prefix=CHECK-CCA %s
-// CHECK-CCA: TypedefDecl:{TypedText Class} (50)
-// CHECK-CCA-NEXT: ObjCInterfaceDecl:{TypedText Foo} (50)
-// CHECK-CCA-NOT: FunctionDecl:{ResultType void}{TypedText func}{LeftParen (}{RightParen )} (50)
-// CHECK-CCA:FunctionDecl:{ResultType MyClass *}{TypedText getMyClass}{LeftParen (}{RightParen )} (50)
-// CHECK-CCA: TypedefDecl:{TypedText id} (50)
-// CHECK-CCA: ObjCInterfaceDecl:{TypedText MyClass} (50)
-// CHECK-CCA: ObjCInterfaceDecl:{TypedText MySubClass} (50)
-// CHECK-CCA: {ResultType Class}{TypedText self} (34)
-// CHECK-CCA: {TypedText super} (40)
-// RUN: c-index-test -code-completion-at=%s:103:6 %s | FileCheck -check-prefix=CHECK-CCB %s
-// CHECK-CCB: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int), ...}
-// CHECK-CCB: ObjCInstanceMethodDecl:{ResultType int}{TypedText SentinelMethod:}{Placeholder (int), ...}{Text , nil}
-// RUN: c-index-test -code-completion-at=%s:116:14 %s | FileCheck -check-prefix=CHECK-CCC %s
-// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method}
-// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
-// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
-// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)}{HorizontalSpace  }{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CCC: ObjCClassMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
-// RUN: c-index-test -code-completion-at=%s:116:23 %s | FileCheck -check-prefix=CHECK-CCD %s
-// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
-// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CCD: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText SomeArg:}{Placeholder (int)}{HorizontalSpace  }{TypedText OtherArg:}{Placeholder (id)}
-// CHECK-CCD-NOT: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{TypedText }
-// CHECK-CCD: Objective-C selector: Method:
-// RUN: c-index-test -code-completion-at=%s:116:30 %s | FileCheck -check-prefix=CHECK-CCE %s
-// CHECK-CCE: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText Arg2:}{Placeholder (int)}
-// CHECK-CCE: ObjCClassMethodDecl:{ResultType int}{Informative Method:}{Informative Arg1:}{TypedText OtherArg:}{Placeholder (id)}
-// RUN: c-index-test -code-completion-at=%s:61:11 %s | FileCheck -check-prefix=CHECK-CCF %s
-// CHECK-CCF: TypedefDecl:{TypedText Class}
-// CHECK-CCF: ObjCInterfaceDecl:{TypedText Foo}
-// CHECK-CCF-NOT: FunctionDecl:{ResultType void}{TypedText func}{LeftParen (}{RightParen )}
-// CHECK-CCF: TypedefDecl:{TypedText id}
-// CHECK-CCF: ObjCInterfaceDecl:{TypedText MyClass}
-// CHECK-CCF: ObjCInterfaceDecl:{TypedText MySubClass}
-// CHECK-CCF: {ResultType Class}{TypedText self}
-// CHECK-CCF: {TypedText super}
-// RUN: c-index-test -code-completion-at=%s:120:6 %s | FileCheck -check-prefix=CHECK-CCG %s
-// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText categoryInstanceMethod}
-// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText instanceMethod1}
-// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method}
-// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)}{HorizontalSpace  }{TypedText second:}{Placeholder (id)}
-// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod}
-// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod}
-// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)}
-// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod}
-// RUN: c-index-test -code-completion-at=%s:121:14 %s | FileCheck -check-prefix=CHECK-CCG %s
-// RUN: c-index-test -code-completion-at=%s:122:7 %s | FileCheck -check-prefix=CHECK-CCH %s
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText categoryClassMethod}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText classMethod1:}{Placeholder (id)}{HorizontalSpace  }{TypedText withKeyword:}{Placeholder (int)}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType void}{TypedText classMethod2}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MyClassMethod:}{Placeholder (id)}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MyPrivateMethod}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MySubClassMethod}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText MySubPrivateMethod}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText new}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)}{HorizontalSpace  }{TypedText Arg1:}{Placeholder (int)}{HorizontalSpace  }{TypedText Arg2:}{Placeholder (int)}
-// CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText protocolClassMethod}
-// RUN: c-index-test -code-completion-at=%s:134:6 %s | FileCheck -check-prefix=CHECK-CCI %s
-// CHECK-CCI: ObjCInstanceMethodDecl:{ResultType void}{TypedText method1} (37)
-// CHECK-CCI: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} (35)
-
-// RUN: c-index-test -code-completion-at=%s:150:5 %s | FileCheck -check-prefix=CHECK-REDUNDANT %s
-// CHECK-REDUNDANT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2} (35)
-// CHECK-REDUNDANT-NOT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method2}
-// CHECK-REDUNDANT: ObjCInstanceMethodDecl:{ResultType void}{TypedText method3} (35)
-
-// RUN: c-index-test -code-completion-at=%s:170:16 %s | FileCheck -check-prefix=CHECK-CLASS-RESULT %s
-// CHECK-CLASS-RESULT: ObjCClassMethodDecl:{ResultType void}{TypedText class_method3} (35)
-// CHECK-CLASS-RESULT: ObjCClassMethodDecl:{ResultType void}{TypedText class_method4} (35)
-
-// RUN: c-index-test -code-completion-at=%s:181:4 %s | FileCheck -check-prefix=CHECK-BLOCK-RECEIVER %s
-// CHECK-BLOCK-RECEIVER: ObjCInterfaceDecl:{TypedText A} (50)
-// CHECK-BLOCK-RECEIVER: ObjCInterfaceDecl:{TypedText B} (50)
-// CHECK-BLOCK-RECEIVER: ParmDecl:{ResultType A *(^)(int)}{TypedText block1} (34)
-// CHECK-BLOCK-RECEIVER-NEXT: ParmDecl:{ResultType id (^)(int)}{TypedText block3} (34)
-
-// Test code completion with a missing opening bracket:
-// RUN: c-index-test -code-completion-at=%s:135:5 %s | FileCheck -check-prefix=CHECK-CCI %s
-// RUN: c-index-test -code-completion-at=%s:139:7 %s | FileCheck -check-prefix=CHECK-CC7 %s
-// RUN: c-index-test -code-completion-at=%s:139:16 %s | FileCheck -check-prefix=CHECK-CC8 %s
-// RUN: c-index-test -code-completion-at=%s:139:23 %s | FileCheck -check-prefix=CHECK-CC9 %s
-
-// RUN: c-index-test -code-completion-at=%s:140:14 %s | FileCheck -check-prefix=CHECK-CCC %s
-// RUN: c-index-test -code-completion-at=%s:140:23 %s | FileCheck -check-prefix=CHECK-CCD %s
-// RUN: c-index-test -code-completion-at=%s:140:30 %s | FileCheck -check-prefix=CHECK-CCE %s
-// RUN: c-index-test -code-completion-at=%s:141:14 %s | FileCheck -check-prefix=CHECK-CCC %s
-// RUN: c-index-test -code-completion-at=%s:141:23 %s | FileCheck -check-prefix=CHECK-CCD %s
-// RUN: c-index-test -code-completion-at=%s:141:30 %s | FileCheck -check-prefix=CHECK-CCE %s
-
-// RUN: c-index-test -code-completion-at=%s:175:12 %s | FileCheck -check-prefix=CHECK-CLASS-RESULT %s
-
-// RUN: c-index-test -code-completion-at=%s:189:6 %s | FileCheck -check-prefix=CHECK-DISTRIB-OBJECTS %s
-// CHECK-DISTRIB-OBJECTS: ObjCInstanceMethodDecl:{ResultType void}{TypedText method:}{Placeholder (in bycopy A *)}{HorizontalSpace  }{TypedText result:}{Placeholder (out byref A **)} (35)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-pch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-pch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-pch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
- at interface C
-- (int)instanceMethod3:(int)x;
-+ (int)classMethod3:(float)f;
- at end
-
-void msg_id(id x) {
-  [id classMethod1:1.0];
-  [x instanceMethod1:5];
-}
-
-// Build the precompiled header
-// RUN: %clang -x objective-c-header -o %t.h.pch %S/Inputs/complete-pch.h
-
-// Run the actual tests
-// RUN: c-index-test -code-completion-at=%s:10:7 -include %t.h %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCClassMethodDecl:{ResultType int}{TypedText classMethod1:}{Placeholder (double)}
-// CHECK-CC1: ObjCClassMethodDecl:{ResultType int}{TypedText classMethod2:}{Placeholder (float)}
-// CHECK-CC1: ObjCClassMethodDecl:{ResultType int}{TypedText classMethod3:}{Placeholder (float)}
-
-// RUN: c-index-test -code-completion-at=%s:11:6 -include %t.h %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType int}{TypedText instanceMethod1:}{Placeholder (int)}
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType int}{TypedText instanceMethod2:}{Placeholder (int)}
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType int}{TypedText instanceMethod3:}{Placeholder (int)}

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-preamble.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-preamble.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-preamble.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-#include "complete-preamble.h"
-void f() {
-  std::
-}
-
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -code-completion-at=%s:3:8 %s -o - | FileCheck -check-prefix=CC1 %s
-// CHECK-CC1: {ResultType void}{TypedText wibble}{LeftParen (}{RightParen )} (50)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-preamble.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-preamble.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-preamble.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-namespace std {
-  void wibble();
-}
-
-namespace std {
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-preprocessor.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-preprocessor.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-preprocessor.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// The line and column layout of this test is significant. Run lines
-// are at the end.
-
-#if 1
-#endif
-
-#define FOO(a, b) a##b
-#define BAR
-#ifdef FOO
-#endif
-#if defined(FOO)
-#endif
-
-FOO(in,t) value;
-
-// RUN: c-index-test -code-completion-at=%s:4:2 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: NotImplemented:{TypedText define}{HorizontalSpace  }{Placeholder macro} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText define}{HorizontalSpace  }{Placeholder macro}{LeftParen (}{Placeholder args}{RightParen )} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText error}{HorizontalSpace  }{Placeholder message} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText if}{HorizontalSpace  }{Placeholder condition} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText ifdef}{HorizontalSpace  }{Placeholder macro} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText ifndef}{HorizontalSpace  }{Placeholder macro} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText import}{HorizontalSpace  }{Text "}{Placeholder header}{Text "} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText import}{HorizontalSpace  }{Text <}{Placeholder header}{Text >} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText include}{HorizontalSpace  }{Text "}{Placeholder header}{Text "} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText include}{HorizontalSpace  }{Text <}{Placeholder header}{Text >} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText include_next}{HorizontalSpace  }{Text "}{Placeholder header}{Text "} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText include_next}{HorizontalSpace  }{Text <}{Placeholder header}{Text >} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText line}{HorizontalSpace  }{Placeholder number} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText line}{HorizontalSpace  }{Placeholder number}{HorizontalSpace  }{Text "}{Placeholder filename}{Text "} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText pragma}{HorizontalSpace  }{Placeholder arguments} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText undef}{HorizontalSpace  }{Placeholder macro} (40)
-// CHECK-CC1-NEXT: NotImplemented:{TypedText warning}{HorizontalSpace  }{Placeholder message} (40)
-// RUN: c-index-test -code-completion-at=%s:5:2 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: NotImplemented:{TypedText define}{HorizontalSpace  }{Placeholder macro} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText define}{HorizontalSpace  }{Placeholder macro}{LeftParen (}{Placeholder args}{RightParen )} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText elif}{HorizontalSpace  }{Placeholder condition} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText else} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText endif} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText error}{HorizontalSpace  }{Placeholder message} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText if}{HorizontalSpace  }{Placeholder condition} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText ifdef}{HorizontalSpace  }{Placeholder macro} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText ifndef}{HorizontalSpace  }{Placeholder macro} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText import}{HorizontalSpace  }{Text "}{Placeholder header}{Text "} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText import}{HorizontalSpace  }{Text <}{Placeholder header}{Text >} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText include}{HorizontalSpace  }{Text "}{Placeholder header}{Text "} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText include}{HorizontalSpace  }{Text <}{Placeholder header}{Text >} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText include_next}{HorizontalSpace  }{Text "}{Placeholder header}{Text "} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText include_next}{HorizontalSpace  }{Text <}{Placeholder header}{Text >} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText line}{HorizontalSpace  }{Placeholder number} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText line}{HorizontalSpace  }{Placeholder number}{HorizontalSpace  }{Text "}{Placeholder filename}{Text "} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText pragma}{HorizontalSpace  }{Placeholder arguments} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText undef}{HorizontalSpace  }{Placeholder macro} (40)
-// CHECK-CC2-NEXT: NotImplemented:{TypedText warning}{HorizontalSpace  }{Placeholder message} (40)
-// RUN: c-index-test -code-completion-at=%s:9:8 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: macro definition:{TypedText BAR} (40)
-// CHECK-CC3: macro definition:{TypedText FOO} (40)
-// RUN: c-index-test -code-completion-at=%s:11:12 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: c-index-test -code-completion-at=%s:11:13 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: c-index-test -code-completion-at=%s:11:5 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: macro definition:{TypedText BAR} (70)
-// CHECK-CC4: macro definition:{TypedText FOO}{LeftParen (}{Placeholder a}{Comma , }{Placeholder b}{RightParen )} (70)
-// RUN: c-index-test -code-completion-at=%s:14:5 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: NotImplemented:{TypedText const} (50)
-// CHECK-CC5: NotImplemented:{TypedText double} (50)
-// CHECK-CC5: NotImplemented:{TypedText enum} (50)
-// CHECK-CC5: NotImplemented:{TypedText extern} (40)
-// CHECK-CC5: NotImplemented:{TypedText float} (50)
-// CHECK-CC5: macro definition:{TypedText FOO}{LeftParen (}{Placeholder a}{Comma , }{Placeholder b}{RightParen )} (70)
-// CHECK-CC5: TypedefDecl:{TypedText id} (50)
-// CHECK-CC5: NotImplemented:{TypedText inline} (40)
-// CHECK-CC5: NotImplemented:{TypedText int} (50)
-// CHECK-CC5: NotImplemented:{TypedText long} (50)
-
-// Same tests as above, but with completion caching.
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:4:2 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:5:2 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:9:8 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:11:5 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:14:5 %s | FileCheck -check-prefix=CHECK-CC5 %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-properties.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-properties.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-properties.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-/* Note: the RUN lines are near the end of the file, since line/column
- matter for this test. */
- at class MyClass;
- at interface I1 
-{
-  id StoredProp3;
-  int RandomIVar;
-}
- at property int Prop0;
- at property int Prop1;
- at property float Prop2;
- at end
-
- at interface I2 : I1
- at property id Prop3;
- at property id Prop4;
- at end
-
- at implementation I2
- at synthesize Prop2, Prop1, Prop3 = StoredProp3;
- at dynamic Prop4;
- at end
-
- at interface I3 : I2
- at property id Prop3;
- at end
-
-id test(I3 *i3) {
-  return i3.Prop3;
-}
-
- at interface I4
- at property id Prop2;
- at end
-
- at interface I4 () {
-  I4 *Prop1;
-}
- at end
-
- at implementation I4 {
-  id Prop2_;
-}
-
- at synthesize Prop2 = Prop2_;
- at end
-
- at protocol P1
- at property int Prop5;
- at end
-
- at class P1;
-
- at interface I5<P1>
- at end
- at implementation I5
- at synthesize Prop5;
- at end
-// RUN: c-index-test -code-completion-at=%s:20:13 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCPropertyDecl:{ResultType int}{TypedText Prop0}
-// CHECK-CC1: ObjCPropertyDecl:{ResultType int}{TypedText Prop1}
-// CHECK-CC1: ObjCPropertyDecl:{ResultType float}{TypedText Prop2}
-// CHECK-CC1: ObjCPropertyDecl:{ResultType id}{TypedText Prop3}
-// CHECK-CC1: ObjCPropertyDecl:{ResultType id}{TypedText Prop4}
-// RUN: c-index-test -code-completion-at=%s:20:20 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCPropertyDecl:{ResultType int}{TypedText Prop0}
-// CHECK-CC2: ObjCPropertyDecl:{ResultType int}{TypedText Prop1}
-// CHECK-CC2-NEXT: ObjCPropertyDecl:{ResultType id}{TypedText Prop3}
-// CHECK-CC2: ObjCPropertyDecl:{ResultType id}{TypedText Prop4}
-// RUN: c-index-test -code-completion-at=%s:20:35 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCIvarDecl:{ResultType id}{TypedText _Prop3} (36)
-// CHECK-CC3: ObjCIvarDecl:{ResultType int}{TypedText RandomIVar} (35)
-// CHECK-CC3: ObjCIvarDecl:{ResultType id}{TypedText StoredProp3} (8)
-
-// RUN: c-index-test -code-completion-at=%s:21:10 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ObjCPropertyDecl:{ResultType int}{TypedText Prop0}
-// CHECK-CC4-NEXT: ObjCPropertyDecl:{ResultType id}{TypedText Prop4}
-
-// RUN: c-index-test -code-completion-at=%s:29:13 %s | FileCheck -check-prefix=CHECK-CC5 %s
-// CHECK-CC5: ObjCPropertyDecl:{ResultType int}{TypedText Prop0} (35)
-// CHECK-CC5-NEXT: ObjCPropertyDecl:{ResultType int}{TypedText Prop1} (35)
-// CHECK-CC5-NEXT: ObjCPropertyDecl:{ResultType float}{TypedText Prop2} (35)
-// CHECK-CC5-NEXT: ObjCPropertyDecl:{ResultType id}{TypedText Prop3} (35)
-// CHECK-CC5-NEXT: ObjCPropertyDecl:{ResultType id}{TypedText Prop4} (35)
-
-// RUN: c-index-test -code-completion-at=%s:9:11 %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: ObjCInterfaceDecl:{TypedText MyClass} (50)
-
-
-// RUN: c-index-test -code-completion-at=%s:45:21 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-CC7 %s
-// CHECK-CC7-NOT: ObjCIvarDecl:{ResultType id}{TypedText _Prop2}
-// CHECK-CC7: ObjCIvarDecl:{ResultType I4 *}{TypedText Prop1} (17)
-// CHECK-CC7: ObjCIvarDecl:{ResultType id}{TypedText Prop2_} (7)
-
-// RUN: c-index-test -code-completion-at=%s:57:13 -fobjc-nonfragile-abi %s | FileCheck -check-prefix=CHECK-CC8 %s
-// CHECK-CC8: ObjCPropertyDecl:{ResultType int}{TypedText Prop5} (35)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-property-flags.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-property-flags.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-property-flags.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
- at interface Foo  {
-  void *isa;
-}
- at property(copy) Foo *myprop;
- at property(retain, nonatomic) id xx;
-
-// RUN: c-index-test -code-completion-at=%s:7:11 %s -fno-objc-arc | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: {TypedText assign}
-// CHECK-CC1-NEXT: {TypedText atomic}
-// CHECK-CC1-NEXT: {TypedText copy}
-// CHECK-CC1-NEXT: {TypedText getter}{Text  = }{Placeholder method}
-// CHECK-CC1-NEXT: {TypedText nonatomic}
-// CHECK-CC1-NEXT: {TypedText readonly}
-// CHECK-CC1-NEXT: {TypedText readwrite}
-// CHECK-CC1-NEXT: {TypedText retain}
-// CHECK-CC1-NEXT: {TypedText setter}{Text  = }{Placeholder method}
-// CHECK-CC1-NEXT: {TypedText strong}
-// CHECK-CC1-NEXT: {TypedText unsafe_unretained}
-// CHECK-CC1-NOT: {TypedText weak}
-
-// RUN: c-index-test -code-completion-at=%s:7:11 %s -fobjc-arc -fobjc-runtime=macosx-10.7 | FileCheck -check-prefix=CHECK-CC1-ARC %s
-// CHECK-CC1-ARC: {TypedText assign}
-// CHECK-CC1-ARC-NEXT: {TypedText atomic}
-// CHECK-CC1-ARC-NEXT: {TypedText copy}
-// CHECK-CC1-ARC-NEXT: {TypedText getter}{Text  = }{Placeholder method}
-// CHECK-CC1-ARC-NEXT: {TypedText nonatomic}
-// CHECK-CC1-ARC-NEXT: {TypedText readonly}
-// CHECK-CC1-ARC-NEXT: {TypedText readwrite}
-// CHECK-CC1-ARC-NEXT: {TypedText retain}
-// CHECK-CC1-ARC-NEXT: {TypedText setter}{Text  = }{Placeholder method}
-// CHECK-CC1-ARC-NEXT: {TypedText strong}
-// CHECK-CC1-ARC-NEXT: {TypedText unsafe_unretained}
-// CHECK-CC1-ARC-NEXT: {TypedText weak}
-
-// RUN: c-index-test -code-completion-at=%s:8:18 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: {TypedText getter}{Text  = }{Placeholder method}
-// CHECK-CC2-NEXT: {TypedText nonatomic}
-// CHECK-CC2-NEXT: {TypedText readonly}
-// CHECK-CC2-NEXT: {TypedText readwrite}
-// CHECK-CC2-NEXT: {TypedText setter}{Text  = }{Placeholder method}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-property-getset.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-property-getset.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-property-getset.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
- at interface Super { }
-- (int)getter1;
-+ (int)getter2_not_instance;
-- (int)getter2_not:(int)x;
-- (int)getter3;
-- (void)setter1:(int)x;
-+ (void)setter2_not_inst:(int)x;
-+ (void)setter2_many_args:(int)x second:(int)y;
-- (void)setter3:(int)y;
- at property (getter = getter1, setter = setter1:) int blah;
- at end
-
- at interface Sub : Super { }
-- (int)getter4;
-- (void)setter4:(int)x;
- at property (getter = getter4, setter = setter1:) int blarg;
- at end
-
-// RUN: c-index-test -code-completion-at=%s:13:21 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCInstanceMethodDecl:{ResultType int}{TypedText getter1}
-// CHECK-CC1-NOT: getter2
-// CHECK-CC1: ObjCInstanceMethodDecl:{ResultType int}{TypedText getter3}
-// RUN: c-index-test -code-completion-at=%s:13:39 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType int}{TypedText getter2_not:}
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType void}{TypedText setter1:}
-// CHECK-CC2-NOT: setter2
-// CHECK-CC2: ObjCInstanceMethodDecl:{ResultType void}{TypedText setter3:}
-// RUN: c-index-test -code-completion-at=%s:19:21 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType int}{TypedText getter1}
-// CHECK-CC3-NOT: getter2
-// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType int}{TypedText getter3}
-// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType int}{TypedText getter4}
-// RUN: c-index-test -code-completion-at=%s:19:39 %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType int}{TypedText getter2_not:}{Informative (int)x}
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType void}{TypedText setter1:}{Informative (int)x}
-// CHECK-CC4-NOT: setter2
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType void}{TypedText setter3:}{Informative (int)y}
-// CHECK-CC4: ObjCInstanceMethodDecl:{ResultType void}{TypedText setter4:}{Informative (int)x}

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-protocols.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-protocols.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-protocols.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-/* Note: the RUN lines are near the end of the file, since line/column
-   matter for this test. */
-
- at protocol Protocol1
- at end
-
- at protocol Protocol2;
-
-void f(id<Protocol1,Protocol2>);
-
- at protocol Protocol0;
- at protocol NewProtocol 
-{
-}
- at end
-
-// RUN: c-index-test -code-completion-at=%s:9:11 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: ObjCProtocolDecl:{TypedText Protocol1}
-// CHECK-CC1-NEXT: ObjCProtocolDecl:{TypedText Protocol2}
-// RUN: c-index-test -code-completion-at=%s:9:21 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2-NOT: ObjCProtocolDecl:{TypedText Protocol1}
-// CHECK-CC2: ObjCProtocolDecl:{TypedText Protocol2}
-// RUN: c-index-test -code-completion-at=%s:12:11 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCProtocolDecl:{TypedText Protocol0}
-// CHECK-CC3-NEXT: ObjCProtocolDecl:{TypedText Protocol2}
-
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_CACHING=1 c-index-test -code-completion-at=%s:9:11 %s | FileCheck -check-prefix=CHECK-CC1 %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-qualified.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-qualified.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-qualified.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-template <typename X, typename Y>
-class C
-{
-};
-
-class Foo
-{
-public:
-  C<Foo, class Bar> c;
-};
-
-void foo()
-{
-  Foo::
-
-// RUN: c-index-test -code-completion-at=%s:14:8 %s -o - | FileCheck -check-prefix=CC1 %s
-// CHECK-CC1: FieldDecl:{ResultType C<Foo, class Bar>}{TypedText c} (35)
-// CHECK-CC1: ClassDecl:{TypedText Foo} (35)
-// CHECK-CC1: CXXMethod:{ResultType Foo &}{TypedText operator=}{LeftParen (}{Placeholder const Foo &}{RightParen )}
-// CHECK-CC1: CXXDestructor:{ResultType void}{TypedText ~Foo}{LeftParen (}{RightParen )} (35)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-recovery.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-recovery.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-recovery.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-/* Run lines are at the end, since line/column matter in this test. */
-
- at interface A
-- (void)method:(int)x;
- at end
-
- at implementation A
-- (void)method:(int)x {
-  A *a = [A method:1];
-  blarg * blah = wibble;
-  A *a2;
-  z = [a2 method:1];
-  blah ? blech : [a2 method:1];
-  (a * a2)([a2 method:1]);
-  B *a = [a2 method:1];
-}
- at end
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:9:20 %s 2>%t | FileCheck -check-prefix=CHECK-CC1 %s
-// RUN: not grep error %t
-// CHECK-CC1: NotImplemented:{ResultType char[]}{TypedText @encode}{LeftParen (}{Placeholder type-name}{RightParen )}
-// CHECK-CC1-NOT: NotImplemented:{TypedText _Bool}
-// CHECK-CC1: VarDecl:{ResultType A *}{TypedText a}
-// CHECK-CC1: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )}
-
-// Test case for fix comitted in r145441. 
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:9:20 %s -fms-compatibility | FileCheck -check-prefix=CHECK-CC1 %s
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:10:24 %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: NotImplemented:{ResultType char[]}{TypedText @encode}{LeftParen (}{Placeholder type-name}{RightParen )}
-// CHECK-CC2: NotImplemented:{TypedText _Bool}
-// CHECK-CC2: VarDecl:{ResultType A *}{TypedText a}
-// CHECK-CC2: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )}
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:12:11 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: ObjCInstanceMethodDecl:{ResultType void}{TypedText method:}{Placeholder (int)} (32)
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:13:22 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:14:16 %s | FileCheck -check-prefix=CHECK-CC3 %s
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:15:14 %s | FileCheck -check-prefix=CHECK-CC3 %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-stmt.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-stmt.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-stmt.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
-typedef int Integer;
-void f(int x) {
-  if (x) {
-  } 
-}
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:7:4 %s | FileCheck -check-prefix=CHECK-IF-ELSE %s
-// CHECK-IF-ELSE: NotImplemented:{TypedText else}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Placeholder statements}{VerticalSpace  }{RightBrace }} (40)
-// CHECK-IF-ELSE: NotImplemented:{TypedText else}{HorizontalSpace  }{Text if}{HorizontalSpace  }{LeftParen (}{Placeholder expression}{RightParen )}{HorizontalSpace  }{LeftBrace {}{VerticalSpace  }{Placeholder statements}{VerticalSpace  }{RightBrace }} (40)
-
-// RUN: c-index-test -code-completion-at=%s:7:4 %s | FileCheck -check-prefix=CHECK-IF-ELSE-SIMPLE %s
-// CHECK-IF-ELSE-SIMPLE: NotImplemented:{TypedText else} (40)
-// CHECK-IF-ELSE-SIMPLE: NotImplemented:{TypedText else}{HorizontalSpace  }{Text if}{HorizontalSpace  }{LeftParen (}{Placeholder expression}{RightParen )} (40)
-
-// RUN: c-index-test -code-completion-at=%s:6:1 %s | FileCheck -check-prefix=CHECK-STMT %s
-// CHECK-STMT: NotImplemented:{TypedText char} (50)
-// CHECK-STMT: NotImplemented:{TypedText const} (50)
-// CHECK-STMT: NotImplemented:{TypedText double} (50)
-// CHECK-STMT: NotImplemented:{TypedText enum} (50)
-// CHECK-STMT: FunctionDecl:{ResultType void}{TypedText f}{LeftParen (}{Placeholder int x}{RightParen )} (50)
-// CHECK-STMT: TypedefDecl:{TypedText Integer} (50)
-// CHECK-STMT: ParmDecl:{ResultType int}{TypedText x} (34)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-super.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-super.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-super.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// The run lines are below, because this test is line- and
-// column-number sensitive.
-
-struct A {
-  virtual void foo(int x, int y);
-  virtual void bar(double x);
-  virtual void bar(float x);
-};
-
-struct B : A {
-  void foo(int a, int b);
-  void bar(float real);
-};
-
-void B::foo(int a, int b) {
-  A::foo(a, b);
-}
-
-void B::bar(float real) {
-  A::bar(real);
-}
-
-// RUN: c-index-test -code-completion-at=%s:16:3 %s | FileCheck -check-prefix=CHECK-FOO-UNQUAL %s
-// CHECK-FOO-UNQUAL: CXXMethod:{Text A::}{TypedText foo}{LeftParen (}{Placeholder a}{Comma , }{Placeholder b}{RightParen )} (20)
-
-// RUN: c-index-test -code-completion-at=%s:20:3 %s | FileCheck -check-prefix=CHECK-BAR-UNQUAL %s
-// CHECK-BAR-UNQUAL: CXXMethod:{Text A::}{TypedText bar}{LeftParen (}{Placeholder real}{RightParen )} (20)
-// CHECK-BAR-UNQUAL: CXXMethod:{ResultType void}{TypedText bar}{LeftParen (}{Placeholder float real}{RightParen )} (34)
-// CHECK-BAR-UNQUAL: CXXMethod:{ResultType void}{Text A::}{TypedText bar}{LeftParen (}{Placeholder double x}{RightParen )} (36)
-
-// RUN: c-index-test -code-completion-at=%s:16:6 %s | FileCheck -check-prefix=CHECK-FOO-QUAL %s
-// CHECK-FOO-QUAL: CXXMethod:{TypedText foo}{LeftParen (}{Placeholder a}{Comma , }{Placeholder b}{RightParen )} (20)
-
-// RUN: c-index-test -code-completion-at=%s:5:1 %s | FileCheck -check-prefix=CHECK-ACCESS %s
-// CHECK-ACCESS: NotImplemented:{TypedText private} (40)
-// CHECK-ACCESS: NotImplemented:{TypedText protected} (40)
-// CHECK-ACCESS: NotImplemented:{TypedText public} (40)
-
-// RUN: env CINDEXTEST_CODE_COMPLETE_PATTERNS=1 c-index-test -code-completion-at=%s:5:1 %s | FileCheck -check-prefix=CHECK-ACCESS-PATTERN %s
-// CHECK-ACCESS-PATTERN: NotImplemented:{TypedText private}{Colon :} (40)
-// CHECK-ACCESS-PATTERN: NotImplemented:{TypedText protected}{Colon :} (40)
-// CHECK-ACCESS-PATTERN: NotImplemented:{TypedText public}{Colon :} (40)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-super.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-super.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-super.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// Note: the run lines follow their respective tests, since line/column
-// matter in this test.
-
-typedef int Bool;
-
- at interface A
-- (void)add:(int)x to:(int)y;
-+ (void)select:(Bool)condition first:(int)x second:(int)y;
-- (void)last;
-+ (void)last;
- at end
-
- at interface B : A
-- (void)add:(int)x to:(int)y;
-+ (void)select:(Bool)condition first:(int)x second:(int)y;
- at end
-
- at implementation B
-- (void)add:(int)a to:(int)b {
-  [super add:a to:b];
-}
-
-+ (void)select:(Bool)condition first:(int)a second:(int)b {
-  [super selector:condition first:a second:b];
-   super selector:condition first:a second:b];
-}
- at end
-
- at interface A (Cat)
-- (void)multiply:(int)x by:(int)y;
- at end
-
- at interface C : A
- at end
-
- at implementation C
-- (void)multiply:(int)a by:(int)b {
-  [super multiply:a by:b];
-}
- at end
-
-// Check "super" completion as a message receiver.
-// RUN: c-index-test -code-completion-at=%s:20:4 %s | FileCheck -check-prefix=CHECK-ADD-RECEIVER %s
-// CHECK-ADD-RECEIVER: ObjCInstanceMethodDecl:{ResultType void}{TypedText super}{HorizontalSpace  }{Text add:}{Placeholder a}{HorizontalSpace  }{Text to:}{Placeholder b} (20)
-
-// RUN: c-index-test -code-completion-at=%s:24:4 %s | FileCheck -check-prefix=CHECK-SELECT-RECEIVER %s
-// CHECK-SELECT-RECEIVER: ObjCClassMethodDecl:{ResultType void}{TypedText super}{HorizontalSpace  }{Text select:}{Placeholder condition}{HorizontalSpace  }{Text first:}{Placeholder a}{HorizontalSpace  }{Text second:}{Placeholder b} (20)
-
-// Check "super" completion at the first identifier
-// RUN: c-index-test -code-completion-at=%s:20:10 %s | FileCheck -check-prefix=CHECK-ADD-ADD %s
-// CHECK-ADD-ADD: ObjCInstanceMethodDecl:{ResultType void}{TypedText add:}{Placeholder a}{HorizontalSpace  }{Text to:}{Placeholder b} (20)
-// CHECK-ADD-ADD-NOT: add
-// CHECK-ADD-ADD: ObjCInstanceMethodDecl:{ResultType void}{TypedText last} (35)
-
-// RUN: c-index-test -code-completion-at=%s:24:10 %s | FileCheck -check-prefix=CHECK-SELECTOR-SELECTOR %s
-// CHECK-SELECTOR-SELECTOR: ObjCInstanceMethodDecl:{ResultType void}{TypedText last} (35)
-// CHECK-SELECTOR-SELECTOR: ObjCClassMethodDecl:{ResultType void}{TypedText select:}{Placeholder condition}{HorizontalSpace  }{Text first:}{Placeholder a}{HorizontalSpace  }{Text second:}{Placeholder b} (20)
-
-// Check "super" completion at the second identifier
-// RUN: c-index-test -code-completion-at=%s:20:16 %s | FileCheck -check-prefix=CHECK-ADD-TO %s
-// CHECK-ADD-TO: ObjCInstanceMethodDecl:{ResultType void}{Informative add:}{TypedText to:}{Placeholder b} (20)
-
-// RUN: c-index-test -code-completion-at=%s:24:28 %s | FileCheck -check-prefix=CHECK-SELECTOR-FIRST %s
-// CHECK-SELECTOR-FIRST: ObjCClassMethodDecl:{ResultType void}{Informative select:}{TypedText first:}{Placeholder a}{HorizontalSpace  }{Text second:}{Placeholder b} (20)
-
-// Check "super" completion at the third identifier
-// RUN: c-index-test -code-completion-at=%s:24:37 %s | FileCheck -check-prefix=CHECK-SELECTOR-SECOND %s
-// CHECK-SELECTOR-SECOND: ObjCClassMethodDecl:{ResultType void}{Informative select:}{Informative first:}{TypedText second:}{Placeholder b} (20)
-
-// Check "super" completion with missing '['.
-// RUN: c-index-test -code-completion-at=%s:25:10 %s | FileCheck -check-prefix=CHECK-SELECTOR-SELECTOR %s
-// RUN: c-index-test -code-completion-at=%s:25:28 %s | FileCheck -check-prefix=CHECK-SELECTOR-FIRST %s
-// RUN: c-index-test -code-completion-at=%s:25:37 %s | FileCheck -check-prefix=CHECK-SELECTOR-SECOND %s
-
-// Check "super" completion for a method declared in a category.
-// RUN: c-index-test -code-completion-at=%s:38:10 %s | FileCheck -check-prefix=CHECK-IN-CATEGORY %s
-// CHECK-IN-CATEGORY: ObjCInstanceMethodDecl:{ResultType void}{TypedText add:}{Placeholder (int)}{HorizontalSpace  }{TypedText to:}{Placeholder (int)} (35)
-// CHECK-IN-CATEGORY: ObjCInstanceMethodDecl:{ResultType void}{TypedText last} (35)
-// CHECK-IN-CATEGORY: ObjCInstanceMethodDecl:{ResultType void}{TypedText multiply:}{Placeholder a}{HorizontalSpace  }{Text by:}{Placeholder b} (20)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-synthesized.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-synthesized.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-synthesized.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// Note: this test is line- and column-sensitive. Test commands are at
-// the end.
-
-
- at interface A
- at property int prop1;
- at end
-
- at interface B : A {
-  float _prop2;
-}
- at property float prop2;
- at property short prop3;
- at end
-
- at interface B ()
- at property double prop4;
- at end
-
- at implementation B
- at synthesize prop2 = _prop2;
-
-- (int)method {
-  return _prop2;
-}
-
- at dynamic prop3;
-
-- (short)method2 {
-  return _prop4;
-}
-
-- (short)method3 {
-  return prop3;
-}
- at end
-
-// RUN: c-index-test -code-completion-at=%s:24:1 -target x86_64-apple-macosx10.7 -fobjc-nonfragile-abi %s | FileCheck %s
-// RUN: c-index-test -code-completion-at=%s:30:2 -target x86_64-apple-macosx10.7 -fobjc-nonfragile-abi %s | FileCheck %s
-// RUN: c-index-test -code-completion-at=%s:34:2 -target x86_64-apple-macosx10.7 -fobjc-nonfragile-abi %s | FileCheck %s
-
-// CHECK: NotImplemented:{TypedText _Bool} (50)
-// CHECK: ObjCIvarDecl:{ResultType float}{TypedText _prop2} (35)
-// CHECK-NOT: prop2
-// CHECK-NOT: prop3
-// CHECK: ObjCIvarDecl:{ResultType double}{TypedText _prop4} (35)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-tabs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-tabs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-tabs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// Test code-completion in the presence of tabs
-struct Point { int x, y; };
-
-void f(struct Point *p) {
-	p->
-
-// RUN: c-index-test -code-completion-at=%s:5:5 %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: {TypedText x}
-// CHECK-CC1: {TypedText y}

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// Tests are line- and column-sensive, so run lines are below.
-
-template<typename T>
-class X {
-  X();
-  X(const X&);
-  
-  template<typename U> X(U);
-};
-
-template<typename T> void f(T);
-
-void test() {
-  
-}
-
-// RUN: c-index-test -code-completion-at=%s:14:2 %s | FileCheck %s
-// CHECK: FunctionTemplate:{ResultType void}{TypedText f}{LeftParen (}{Placeholder T}{RightParen )} (50)
-// CHECK: ClassTemplate:{TypedText X}{LeftAngle <}{Placeholder typename T}{RightAngle >} (50)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-type-factors.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-type-factors.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-type-factors.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,137 +0,0 @@
-/* Run lines are at the end, since line/column matter in this test. */
-
-enum Color {
-  Red, Green, Blue
-};
-
-enum Priority {
-  Low,
-  High
-};
-
-int func1(enum Color);
-enum Priority func2(int);
-void func3(float);
-enum Priority test1(enum Priority priority, enum Color color, int integer) {
-  int i = integer;
-  enum Color c = color;
-  return priority;
-  func1(c);
-  void (^block)(enum Color, int);
-  block(c, 17);
-  c = color;
-}
-
- at interface A
-+ (void)method:(enum Color)color priority:(enum Priority)priority;
-- (void)method:(enum Color)color priority:(enum Priority)priority;
- at end
-
-void test2(A *a) {
-  [a method:Red priority:High];
-  [A method:Red priority:Low];
-}
-
-// RUN: c-index-test -code-completion-at=%s:16:11 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC1 %s
-// CHECK-CC1: EnumConstantDecl:{ResultType enum Color}{TypedText Blue} (32)
-// CHECK-CC1: ParmDecl:{ResultType enum Color}{TypedText color} (17)
-// CHECK-CC1: FunctionDecl:{ResultType int}{TypedText func1}{LeftParen (}{Placeholder enum Color}{RightParen )} (12)
-// CHECK-CC1: FunctionDecl:{ResultType enum Priority}{TypedText func2}{LeftParen (}{Placeholder int}{RightParen )} (25)
-// CHECK-CC1: EnumConstantDecl:{ResultType enum Color}{TypedText Green} (32)
-// CHECK-CC1: EnumConstantDecl:{ResultType enum Priority}{TypedText High} (32)
-// CHECK-CC1: VarDecl:{ResultType int}{TypedText i} (8)
-// CHECK-CC1: ParmDecl:{ResultType int}{TypedText integer} (8)
-// CHECK-CC1: EnumConstantDecl:{ResultType enum Priority}{TypedText Low} (32)
-// CHECK-CC1: ParmDecl:{ResultType enum Priority}{TypedText priority} (17)
-// CHECK-CC1: EnumConstantDecl:{ResultType enum Color}{TypedText Red} (32)
-// CHECK-CC1: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// CHECK-CC1: FunctionDecl:{ResultType enum Priority}{TypedText test1}{LeftParen (}{Placeholder enum Priority priority}{Comma , }{Placeholder enum Color color}{Comma , }{Placeholder int integer}{RightParen )} (25)
-// RUN: c-index-test -code-completion-at=%s:17:18 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC2 %s
-// CHECK-CC2: EnumConstantDecl:{ResultType enum Color}{TypedText Blue} (16)
-// CHECK-CC2: VarDecl:{ResultType enum Color}{TypedText c} (8)
-// CHECK-CC2: ParmDecl:{ResultType enum Color}{TypedText color} (8)
-// CHECK-CC2: FunctionDecl:{ResultType int}{TypedText func1}{LeftParen (}{Placeholder enum Color}{RightParen )} (25)
-// CHECK-CC2: FunctionDecl:{ResultType enum Priority}{TypedText func2}{LeftParen (}{Placeholder int}{RightParen )} (50)
-// CHECK-CC2: EnumConstantDecl:{ResultType enum Color}{TypedText Green} (16)
-// CHECK-CC2: EnumConstantDecl:{ResultType enum Priority}{TypedText High} (65)
-// CHECK-CC2: VarDecl:{ResultType int}{TypedText i} (17)
-// CHECK-CC2: ParmDecl:{ResultType int}{TypedText integer} (17)
-// CHECK-CC2: EnumConstantDecl:{ResultType enum Priority}{TypedText Low} (65)
-// CHECK-CC2: ParmDecl:{ResultType enum Priority}{TypedText priority} (34)
-// CHECK-CC2: EnumConstantDecl:{ResultType enum Color}{TypedText Red} (16)
-// CHECK-CC2: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// CHECK-CC2: FunctionDecl:{ResultType enum Priority}{TypedText test1}{LeftParen (}{Placeholder enum Priority priority}{Comma , }{Placeholder enum Color color}{Comma , }{Placeholder int integer}{RightParen )} (50)
-// RUN: c-index-test -code-completion-at=%s:18:10 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC3 %s
-// CHECK-CC3: EnumConstantDecl:{ResultType enum Color}{TypedText Blue} (65)
-// CHECK-CC3: VarDecl:{ResultType enum Color}{TypedText c} (34)
-// CHECK-CC3: ParmDecl:{ResultType enum Color}{TypedText color} (34)
-// CHECK-CC3: FunctionDecl:{ResultType int}{TypedText func1}{LeftParen (}{Placeholder enum Color}{RightParen )} (25)
-// CHECK-CC3: FunctionDecl:{ResultType enum Priority}{TypedText func2}{LeftParen (}{Placeholder int}{RightParen )} (12)
-// CHECK-CC3: FunctionDecl:{ResultType void}{TypedText func3}{LeftParen (}{Placeholder float}{RightParen )} (50)
-// CHECK-CC3: EnumConstantDecl:{ResultType enum Color}{TypedText Green} (65)
-// CHECK-CC3: EnumConstantDecl:{ResultType enum Priority}{TypedText High} (16)
-// CHECK-CC3: VarDecl:{ResultType int}{TypedText i} (17)
-// CHECK-CC3: ParmDecl:{ResultType int}{TypedText integer} (17)
-// CHECK-CC3: EnumConstantDecl:{ResultType enum Priority}{TypedText Low} (16)
-// CHECK-CC3: ParmDecl:{ResultType enum Priority}{TypedText priority} (8)
-// CHECK-CC3: EnumConstantDecl:{ResultType enum Color}{TypedText Red} (65)
-// CHECK-CC3: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// CHECK-CC3: FunctionDecl:{ResultType enum Priority}{TypedText test1}{LeftParen (}{Placeholder enum Priority priority}{Comma , }{Placeholder enum Color color}{Comma , }{Placeholder int integer}{RightParen )} (12)
-// RUN: c-index-test -code-completion-at=%s:19:9 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC4 %s
-// CHECK-CC4: EnumConstantDecl:{ResultType enum Color}{TypedText Blue} (16)
-// CHECK-CC4: VarDecl:{ResultType enum Color}{TypedText c} (8)
-// CHECK-CC4: ParmDecl:{ResultType enum Color}{TypedText color} (8)
-// CHECK-CC4: FunctionDecl:{ResultType int}{TypedText func1}{LeftParen (}{Placeholder enum Color}{RightParen )} (25)
-// CHECK-CC4: FunctionDecl:{ResultType enum Priority}{TypedText func2}{LeftParen (}{Placeholder int}{RightParen )} (50)
-// CHECK-CC4: FunctionDecl:{ResultType void}{TypedText func3}{LeftParen (}{Placeholder float}{RightParen )} (50)
-// CHECK-CC4: EnumConstantDecl:{ResultType enum Color}{TypedText Green} (16)
-// CHECK-CC4: EnumConstantDecl:{ResultType enum Priority}{TypedText High} (65)
-// CHECK-CC4: VarDecl:{ResultType int}{TypedText i} (17)
-// CHECK-CC4: ParmDecl:{ResultType int}{TypedText integer} (17)
-// CHECK-CC4: EnumConstantDecl:{ResultType enum Priority}{TypedText Low} (65)
-// CHECK-CC4: ParmDecl:{ResultType enum Priority}{TypedText priority} (34)
-// CHECK-CC4: EnumConstantDecl:{ResultType enum Color}{TypedText Red} (16)
-// CHECK-CC4: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// CHECK-CC4: FunctionDecl:{ResultType enum Priority}{TypedText test1}{LeftParen (}{Placeholder enum Priority priority}{Comma , }{Placeholder enum Color color}{Comma , }{Placeholder int integer}{RightParen )} (50)
-// RUN: c-index-test -code-completion-at=%s:21:9 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC4 %s
-// RUN: c-index-test -code-completion-at=%s:22:7 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC6 %s
-// CHECK-CC6: VarDecl:{ResultType void (^)(enum Color, int)}{TypedText block} (34)
-// CHECK-CC6: EnumConstantDecl:{ResultType enum Color}{TypedText Blue} (16)
-// CHECK-CC6: VarDecl:{ResultType enum Color}{TypedText c} (8)
-// CHECK-CC6: ParmDecl:{ResultType enum Color}{TypedText color} (8)
-// CHECK-CC6: FunctionDecl:{ResultType int}{TypedText func1}{LeftParen (}{Placeholder enum Color}{RightParen )} (25)
-// CHECK-CC6: FunctionDecl:{ResultType enum Priority}{TypedText func2}{LeftParen (}{Placeholder int}{RightParen )} (50)
-// CHECK-CC6: FunctionDecl:{ResultType void}{TypedText func3}{LeftParen (}{Placeholder float}{RightParen )} (50)
-// CHECK-CC6: EnumConstantDecl:{ResultType enum Color}{TypedText Green} (16)
-// CHECK-CC6: EnumConstantDecl:{ResultType enum Priority}{TypedText High} (65)
-// CHECK-CC6: VarDecl:{ResultType int}{TypedText i} (17)
-// CHECK-CC6: ParmDecl:{ResultType int}{TypedText integer} (17)
-// CHECK-CC6: EnumConstantDecl:{ResultType enum Priority}{TypedText Low} (65)
-// CHECK-CC6: ParmDecl:{ResultType enum Priority}{TypedText priority} (34)
-// CHECK-CC6: EnumConstantDecl:{ResultType enum Color}{TypedText Red} (16)
-// CHECK-CC6: NotImplemented:{ResultType size_t}{TypedText sizeof}{LeftParen (}{Placeholder expression-or-type}{RightParen )} (40)
-// CHECK-CC6: FunctionDecl:{ResultType enum Priority}{TypedText test1}{LeftParen (}{Placeholder enum Priority priority}{Comma , }{Placeholder enum Color color}{Comma , }{Placeholder int integer}{RightParen )} (50)
-// RUN: c-index-test -code-completion-at=%s:31:13 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC7 %s
-// RUN: c-index-test -code-completion-at=%s:32:13 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC7 %s
-// CHECK-CC7: ParmDecl:{ResultType A *}{TypedText a} (34)
-// CHECK-CC7: EnumConstantDecl:{ResultType enum Color}{TypedText Blue} (16)
-// CHECK-CC7: FunctionDecl:{ResultType int}{TypedText func1}{LeftParen (}{Placeholder enum Color}{RightParen )} (25)
-// CHECK-CC7: FunctionDecl:{ResultType enum Priority}{TypedText func2}{LeftParen (}{Placeholder int}{RightParen )} (50)
-// CHECK-CC7: FunctionDecl:{ResultType void}{TypedText func3}{LeftParen (}{Placeholder float}{RightParen )} (50)
-// CHECK-CC7: EnumConstantDecl:{ResultType enum Color}{TypedText Green} (16)
-// CHECK-CC7: EnumConstantDecl:{ResultType enum Priority}{TypedText High} (65)
-// CHECK-CC7: EnumConstantDecl:{ResultType enum Priority}{TypedText Low} (65)
-// CHECK-CC7: EnumConstantDecl:{ResultType enum Color}{TypedText Red} (16)
-// CHECK-CC7: FunctionDecl:{ResultType enum Priority}{TypedText test1}{LeftParen (}{Placeholder enum Priority priority}{Comma , }{Placeholder enum Color color}{Comma , }{Placeholder int integer}{RightParen )} (50)
-// RUN: c-index-test -code-completion-at=%s:31:26 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC8 %s
-// RUN: c-index-test -code-completion-at=%s:32:26 -Xclang -code-completion-patterns %s | FileCheck -check-prefix=CHECK-CC8 %s
-// CHECK-CC8: ParmDecl:{ResultType A *}{TypedText a} (34)
-// CHECK-CC8: EnumConstantDecl:{ResultType enum Color}{TypedText Blue} (65)
-// CHECK-CC8: FunctionDecl:{ResultType int}{TypedText func1}{LeftParen (}{Placeholder enum Color}{RightParen )} (25)
-// CHECK-CC8: FunctionDecl:{ResultType enum Priority}{TypedText func2}{LeftParen (}{Placeholder int}{RightParen )} (12)
-// CHECK-CC8: FunctionDecl:{ResultType void}{TypedText func3}{LeftParen (}{Placeholder float}{RightParen )} (50)
-// CHECK-CC8: EnumConstantDecl:{ResultType enum Color}{TypedText Green} (65)
-// CHECK-CC8: EnumConstantDecl:{ResultType enum Priority}{TypedText High} (16)
-// CHECK-CC8: EnumConstantDecl:{ResultType enum Priority}{TypedText Low} (16)
-// CHECK-CC8: EnumConstantDecl:{ResultType enum Color}{TypedText Red} (65)
-// CHECK-CC8: FunctionDecl:{ResultType enum Priority}{TypedText test1}{LeftParen (}{Placeholder enum Priority priority}{Comma , }{Placeholder enum Color color}{Comma , }{Placeholder int integer}{RightParen )} (12)

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-unterminated.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-unterminated.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-unterminated.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-typedef int Integer;
-
-#if 0
-
-
-#endif
-
-/* blah */
-
-void f0(const char*);
-void f1(char);
-
-const char *hello = "Hello, world";
-const char a = 'a';
-
-#define FOO(a, b) a b
-
-FOO(int, x);
-
-// RUN: c-index-test -code-completion-at=%s:5:1 -pedantic %s 2> %t.err | FileCheck %s
-// RUN: not grep error %t.err
-// CHECK: {TypedText Integer}
-// RUN: c-index-test -code-completion-at=%s:8:6 -pedantic %s 2> %t.err
-// RUN: not grep error %t.err
-// RUN: c-index-test -code-completion-at=%s:10:28 -pedantic %s 2> %t.err
-// RUN: not grep unterminated %t.err
-// RUN: c-index-test -code-completion-at=%s:11:17 -pedantic %s 2> %t.err
-// RUN: not grep unterminated %t.err
-// RUN: c-index-test -code-completion-at=%s:18:10 -pedantic %s 2> %t.err
-// RUN: not grep unterminated %t.err

Modified: trunk/contrib/llvm/tools/clang/test/Index/complete-with-annotations.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/complete-with-annotations.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/complete-with-annotations.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-class X {
-  void doSomething();
-
-  int field __attribute((annotate("one"), annotate("two"), annotate("three")));
-
-public __attribute__((annotate("some annotation"))):
-  void func2();
-  int member2 __attribute__((annotate("another annotation")));
-};
-
-void X::doSomething() {
-  // RUN: c-index-test -code-completion-at=%s:13:9 %s | FileCheck %s
-  this->;
-}
-
-// CHECK: CXXMethod:{ResultType void}{TypedText doSomething}{LeftParen (}{RightParen )} (34)
-// CHECK: FieldDecl:{ResultType int}{TypedText field} (35) ("three", "two", "one")
-// CHECK: CXXMethod:{ResultType void}{TypedText func2}{LeftParen (}{RightParen )} (34) ("some annotation")
-// CHECK: FieldDecl:{ResultType int}{TypedText member2} (35) ("another annotation", "some annotation")
-// CHECK: CXXMethod:{ResultType X &}{TypedText operator=}{LeftParen (}{Placeholder const X &}{RightParen )} (34)
-// CHECK: ClassDecl:{TypedText X}{Text ::} (75)
-// CHECK: CXXDestructor:{ResultType void}{TypedText ~X}{LeftParen (}{RightParen )} (34)
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-code-complete.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-code-complete.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-code-complete.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_PREAMBLE_FILE=%t-preamble.pch \
-// RUN:   not c-index-test -code-completion-at=%s:20:1 \
-// RUN:   "-remap-file=%s;%S/Inputs/crash-recovery-code-complete-remap.c" \
-// RUN:   %s 2> %t.err
-// RUN: FileCheck < %t.err -check-prefix=CHECK-CODE-COMPLETE-CRASH %s
-// RUN: test ! -e %t-preamble.pch
-// CHECK-CODE-COMPLETE-CRASH: Unable to perform code completion!
-//
-// REQUIRES: crash-recovery
-
-// FIXME: Please investigate abnormal path in MemoryBuffer.
-// XFAIL: mingw32,win32
-
-#warning parsing original file

Modified: trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-modules.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-modules.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-modules.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// Clear out the module cache entirely, so we start from nothing.
-// RUN: rm -rf %t
-
-// Parse the file, such that building the module will cause Clang to crash.
-// RUN: not env CINDEXTEST_FAILONERROR=1 c-index-test -test-load-source all -fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I %S/Inputs/Headers -DCRASH %s 2> %t.err
-// RUN: FileCheck < %t.err -check-prefix=CHECK-CRASH %s
-// CHECK-CRASH: crash-recovery-modules.m:16:9:{16:2-16:14}: fatal error: could not build module 'Crash'
-
-// Parse the file again, without crashing, to make sure that
-// subsequent parses do the right thing.
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-load-source all -fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I %S/Inputs/Headers %s
-
-// REQUIRES: crash-recovery
-// REQUIRES: shell
-
- at import Crash;
-
-void test() {
-  const char* error = getCrashString();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-reparse.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-reparse.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/crash-recovery-reparse.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_PREAMBLE_FILE=%t-preamble.pch \
-// RUN:   not c-index-test -test-load-source-reparse 1 local \
-// RUN:   -remap-file="%s;%S/Inputs/crash-recovery-reparse-remap.c" \
-// RUN:   %s 2> %t.err
-// RUN: FileCheck < %t.err -check-prefix=CHECK-REPARSE-SOURCE-CRASH %s
-// RUN: test ! -e $t-preamble.pch
-// CHECK-REPARSE-SOURCE-CRASH: Unable to reparse translation unit
-//
-// REQUIRES: crash-recovery
-
-#warning parsing original file

Modified: trunk/contrib/llvm/tools/clang/test/Index/crash-recovery.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/crash-recovery.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/crash-recovery.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: not c-index-test -test-load-source all %s 2> %t.err
-// RUN: FileCheck < %t.err -check-prefix=CHECK-LOAD-SOURCE-CRASH %s
-// CHECK-LOAD-SOURCE-CRASH: Unable to load translation unit
-//
-// REQUIRES: crash-recovery
-
-#pragma clang __debug crash

Modified: trunk/contrib/llvm/tools/clang/test/Index/create-tu-fail.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/create-tu-fail.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/create-tu-fail.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: rm -f %t.c
-// RUN: touch %t.c
-// RUN: c-index-test -write-pch %t.pch %t.c
-// RUN: cp %s %t.c
-// RUN: c-index-test -test-load-tu %t.pch local 2>&1 | FileCheck %s
-
-// rdar://11558355
-// Unfortunately this would crash reliably only via valgrind.
-
-// CHECK: Unable to load translation unit

Modified: trunk/contrib/llvm/tools/clang/test/Index/cursor-dynamic-call.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/cursor-dynamic-call.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/cursor-dynamic-call.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-
-struct SB {
-  virtual void meth();
-};
-
-struct SS : public SB {
-  void submeth() {
-    this->meth();
-    SB::meth();
-  }
-};
-
- at interface IB
--(void)meth;
-+(void)ClsMeth;
- at end
-
- at interface IS : IB
--(void)submeth;
-+(void)ClsMeth;
- at end
-
- at implementation IS
--(void)submeth {
-  [self meth];
-  [super meth];
-}
-+(void)ClsMeth {
-  [super ClsMeth];
-}
- at end
-
-void foo(SS *ss, IS* is, Class cls) {
-  ss->meth();
-  [is meth];
-  [IB ClsMeth];
-  [cls ClsMeth];
-}
-
-// RUN: c-index-test -cursor-at=%s:8:11 \
-// RUN:              -cursor-at=%s:9:11 \
-// RUN:              -cursor-at=%s:25:11 \
-// RUN:              -cursor-at=%s:26:11 \
-// RUN:              -cursor-at=%s:29:11 \
-// RUN:              -cursor-at=%s:34:9 \
-// RUN:              -cursor-at=%s:35:9 \
-// RUN:              -cursor-at=%s:36:9 \
-// RUN:              -cursor-at=%s:37:9 \
-// RUN:       %s | FileCheck %s
-
-// CHECK:     8:11 MemberRefExpr=meth:3:16 {{.*}} Dynamic-call
-// CHECK-NOT: 9:9 {{.*}} Dynamic-call
-// CHECK:     25:3 ObjCMessageExpr=meth:14:8 {{.*}} Dynamic-call Receiver-type=ObjCObjectPointer
-// CHECK-NOT: 26:3 {{.*}} Dynamic-call
-// CHECK-NOT: 29:3 {{.*}} Dynamic-call
-// CHECK:     29:3 {{.*}} Receiver-type=ObjCInterface
-// CHECK:     34:7 MemberRefExpr=meth:3:16 {{.*}} Dynamic-call
-// CHECK:     35:3 ObjCMessageExpr=meth:14:8 {{.*}} Dynamic-call Receiver-type=ObjCObjectPointer
-// CHECK-NOT: 36:3 {{.*}} Dynamic-call
-// CHECK:     36:3 {{.*}} Receiver-type=ObjCInterface
-// CHECK:     37:3 ObjCMessageExpr=ClsMeth:15:8 {{.*}} Dynamic-call Receiver-type=ObjCClass

Modified: trunk/contrib/llvm/tools/clang/test/Index/cursor-ref-names.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/cursor-ref-names.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/cursor-ref-names.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-template <typename T>
-struct Base {
-    void func();
-    int operator[](T);
-};
-
-struct Sub: public Base<int> {
-    void func();
-};
-
-template <typename T>
-inline T myMax(T a, T b)
-{ return (a > b) ? a : b; }
-
-int main()
-{
-    Sub inst;
-    inst.func();
-    inst[1];
-    inst.operator[](1);
-
-    inst.Base<int>::operator[](1);
-    myMax<int>(1, 2);
-
-    return 0;
-}
-
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-// CHECK: cursor-ref-names.cpp:17:5: DeclStmt= Extent=[17:5 - 17:14]
-// CHECK: cursor-ref-names.cpp:17:9: VarDecl=inst:17:9 (Definition) Extent=[17:5 - 17:13]
-// CHECK: cursor-ref-names.cpp:17:5: TypeRef=struct Sub:7:8 Extent=[17:5 - 17:8]
-// CHECK: cursor-ref-names.cpp:17:9: CallExpr=Sub:7:8 Extent=[17:9 - 17:13]
-// CHECK: cursor-ref-names.cpp:18:5: CallExpr=func:8:10 Extent=[18:5 - 18:16]
-// CHECK: cursor-ref-names.cpp:18:10: MemberRefExpr=func:8:10 SingleRefName=[18:10 - 18:14] RefName=[18:10 - 18:14] Extent=[18:5 - 18:14]
-// CHECK: cursor-ref-names.cpp:18:5: DeclRefExpr=inst:17:9 Extent=[18:5 - 18:9]
-// CHECK: cursor-ref-names.cpp:19:5: CallExpr=operator[]:4:9 SingleRefName=[19:9 - 19:12] RefName=[19:9 - 19:10] RefName=[19:11 - 19:12] Extent=[19:5 - 19:12]
-// CHECK: cursor-ref-names.cpp:19:5: DeclRefExpr=inst:17:9 Extent=[19:5 - 19:9]
-// CHECK: cursor-ref-names.cpp:19:9: DeclRefExpr=operator[]:4:9 RefName=[19:9 - 19:10] RefName=[19:11 - 19:12] Extent=[19:9 - 19:12]
-// CHECK: cursor-ref-names.cpp:20:5: CallExpr=operator[]:4:9 Extent=[20:5 - 20:23]
-// CHECK: cursor-ref-names.cpp:20:10: MemberRefExpr=operator[]:4:9 SingleRefName=[20:10 - 20:20] RefName=[20:10 - 20:18] RefName=[20:18 - 20:19] RefName=[20:19 - 20:20] Extent=[20:5 - 20:20]
-// CHECK: cursor-ref-names.cpp:20:5: DeclRefExpr=inst:17:9 Extent=[20:5 - 20:9]
-// CHECK: cursor-ref-names.cpp:22:5: CallExpr=operator[]:4:9 Extent=[22:5 - 22:34]
-// CHECK: cursor-ref-names.cpp:22:21: MemberRefExpr=operator[]:4:9 SingleRefName=[22:10 - 22:31] RefName=[22:10 - 22:21] RefName=[22:21 - 22:29] RefName=[22:29 - 22:30] RefName=[22:30 - 22:31] Extent=[22:5 - 22:31]
-// CHECK: cursor-ref-names.cpp:22:5: DeclRefExpr=inst:17:9 Extent=[22:5 - 22:9]
-// CHECK: cursor-ref-names.cpp:22:10: TemplateRef=Base:2:8 Extent=[22:10 - 22:14]
-// CHECK: cursor-ref-names.cpp:23:5: CallExpr=myMax:12:10 Extent=[23:5 - 23:21]
-// CHECK: cursor-ref-names.cpp:23:5: DeclRefExpr=myMax:12:10 RefName=[23:5 - 23:10] RefName=[23:10 - 23:15] Extent=[23:5 - 23:15]

Modified: trunk/contrib/llvm/tools/clang/test/Index/cxx-operator-overload.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/cxx-operator-overload.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/cxx-operator-overload.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// Run lines are sensitive to line numbers and come below the code.
-// FIXME: re-enable this when we can serialize more C++ ASTs
-class Cls {
-public:
-    Cls operator +(const Cls &RHS);
-};
-
-static void bar() {
-    Cls x1, x2, x3;
-    Cls x4 = x1 + x2 + x3;
-}
-
-Cls Cls::operator +(const Cls &RHS) { while (1) {} }
-
-// RUN: %clang_cc1 -emit-pch %s -o %t.ast
-
-// RUNx: index-test %t.ast -point-at %s:10:17 -print-decls > %t &&
-// RUNx: cat %t | count 2 &&
-// RUNx: grep ':5:9,' %t &&
-// RUNx: grep ':13:10,' %t &&
-
-// Yep, we can show references of '+' plus signs that are overloaded, w00t!
-// RUNx: index-test %t.ast -point-at %s:5:15 -print-refs > %t &&
-// RUNx: cat %t | count 2 &&
-// RUNx: grep ':10:17,' %t &&
-// RUNx: grep ':10:22,' %t &&
-
-// RUNx: index-test %t.ast -point-at %s:10:14 | grep 'DeclRefExpr x1'

Modified: trunk/contrib/llvm/tools/clang/test/Index/cxx11-lambdas.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/cxx11-lambdas.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/cxx11-lambdas.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// Test is line- and column-sensitive; see below.
-
-typedef int Integer;
-struct X {
-  void f() {
-    int localA, localB;
-    auto lambda = [&localA, localB] (Integer x) -> Integer {
-      return localA + localB + x;
-    };
-  }
-};
-
-// RUN: c-index-test -test-load-source all -std=c++11 %s | FileCheck -check-prefix=CHECK-LOAD %s
-// CHECK-LOAD: cxx11-lambdas.cpp:7:19: LambdaExpr= Extent=[7:19 - 9:6]
-// CHECK-LOAD: cxx11-lambdas.cpp:7:21: VariableRef=localA:6:9 Extent=[7:21 - 7:27]
-// CHECK-LOAD: cxx11-lambdas.cpp:7:29: VariableRef=localB:6:17 Extent=[7:29 - 7:35]
-// CHECK-LOAD: cxx11-lambdas.cpp:7:52: TypeRef=Integer:3:13 Extent=[7:52 - 7:59]
-// CHECK-LOAD: cxx11-lambdas.cpp:7:46: ParmDecl=x:7:46 (Definition) Extent=[7:38 - 7:47]
-// CHECK-LOAD: cxx11-lambdas.cpp:7:38: TypeRef=Integer:3:13 Extent=[7:38 - 7:45]
-// CHECK-LOAD: cxx11-lambdas.cpp:7:60: CompoundStmt= Extent=[7:60 - 9:6]
-// CHECK-LOAD: cxx11-lambdas.cpp:8:7: ReturnStmt= Extent=[8:7 - 8:33]
-// CHECK-LOAD: cxx11-lambdas.cpp:8:14: DeclRefExpr=localA:6:9 Extent=[8:14 - 8:20]
-// CHECK-LOAD: cxx11-lambdas.cpp:8:23: DeclRefExpr=localB:6:17 Extent=[8:23 - 8:29]
-// CHECK-LOAD: cxx11-lambdas.cpp:8:32: DeclRefExpr=x:7:46 Extent=[8:32 - 8:33]
-
-// RUN: env CINDEXTEST_INDEXLOCALSYMBOLS=1 c-index-test -index-file -std=c++11 %s | FileCheck -check-prefix=CHECK-INDEX %s
-// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localA | USR: c:cxx11-lambdas.cpp at 100@S at X@F at f#@localA | lang: C | cursor: VariableRef=localA:6:9 | loc: 7:21
-// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localB | USR: c:cxx11-lambdas.cpp at 100@S at X@F at f#@localB | lang: C | cursor: VariableRef=localB:6:17 | loc: 7:29
-// CHECK-INDEX: [indexEntityReference]: kind: typedef | name: Integer | USR: c:cxx11-lambdas.cpp at 51@T at Integer | lang: C | cursor: TypeRef=Integer:3:13 | loc: 7:52
-// CHECK-INDEX: [indexEntityReference]: kind: typedef | name: Integer | USR: c:cxx11-lambdas.cpp at 51@T at Integer | lang: C | cursor: TypeRef=Integer:3:13 | loc: 7:38
-// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localA | USR: c:cxx11-lambdas.cpp at 100@S at X@F at f#@localA | lang: C | cursor: DeclRefExpr=localA:6:9 | loc: 8:14
-// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localB | USR: c:cxx11-lambdas.cpp at 100@S at X@F at f#@localB | lang: C | cursor: DeclRefExpr=localB:6:17 | loc: 8:23
-// CHECK-INDEX: [indexEntityReference]: kind: variable | name: x | USR: c:cxx11-lambdas.cpp at 157@S at X@F at f#@Ca at F@operator()#I#1 at x | lang: C | cursor: DeclRefExpr=x:7:46 | loc: 8:32

Modified: trunk/contrib/llvm/tools/clang/test/Index/error-on-deserialized.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/error-on-deserialized.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/error-on-deserialized.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-
-#include "targeted-top.h"
-
-// This tests that we will correctly error out on the deserialized decl.
-
-// RUN: c-index-test -write-pch %t.h.pch %S/targeted-top.h
-// RUN: env CINDEXTEST_FAILONERROR=1 not c-index-test -cursor-at=%S/targeted-nested1.h:2:16 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -cursor-at=%S/targeted-nested1.h:2:16 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1 2>&1 \
-// RUN:  | FileCheck %s
-
-// CHECK: error: NestedVar1 was deserialized

Modified: trunk/contrib/llvm/tools/clang/test/Index/file-includes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/file-includes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/file-includes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-
-#include "targeted-top.h"
-#include "targeted-preamble.h"
-
-extern int LocalVar;
-int LocalVar;
-
-// RUN: c-index-test -write-pch %t.h.pch %S/targeted-top.h -Xclang -detailed-preprocessing-record
-
-// RUN: c-index-test -file-includes-in=%s %s | FileCheck %s -check-prefix=LOCAL
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -file-includes-in=%s %s | FileCheck %s -check-prefix=LOCAL
-// RUN: c-index-test -file-includes-in=%s %s -include %t.h | FileCheck %s -check-prefix=LOCAL
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -file-includes-in=%s %s -include %t.h | FileCheck %s -check-prefix=LOCAL
-
-// LOCAL: inclusion directive=targeted-top.h ({{.*[/\\]}}test{{[/\\]}}Index{{[/\\]}}targeted-top.h) {{.*}}=[2:1 - 2:2]
-// LOCAL: inclusion directive=targeted-preamble.h ({{.*[/\\]}}test{{[/\\]}}Index{{[/\\]}}targeted-preamble.h) =[3:1 - 3:2]
-
-// RUN: c-index-test -file-includes-in=%S/targeted-top.h %s | FileCheck %s -check-prefix=TOP
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -file-includes-in=%S/targeted-top.h %s | FileCheck %s -check-prefix=TOP
-// RUN: c-index-test -file-includes-in=%S/targeted-top.h %s -include %t.h | FileCheck %s -check-prefix=TOP
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -file-includes-in=%S/targeted-top.h %s -include %t.h | FileCheck %s -check-prefix=TOP
-
-// TOP: inclusion directive=targeted-nested1.h ({{.*[/\\]}}test{{[/\\]}}Index{{[/\\]}}targeted-nested1.h) =[5:1 - 5:2]
-// TOP: inclusion directive=targeted-fields.h ({{.*[/\\]}}test{{[/\\]}}Index{{[/\\]}}targeted-fields.h) =[16:1 - 16:2]

Modified: trunk/contrib/llvm/tools/clang/test/Index/file-macro-refs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/file-macro-refs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/file-macro-refs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-#define FOO
-
-FOO
-FOO
-
-// RUN: c-index-test -file-refs-at=%s:3:2 %s | FileCheck %s
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -file-refs-at=%s:3:2 %s | FileCheck %s
-
-// CHECK:      macro expansion=FOO:1:9
-// CHECK-NEXT: macro definition=FOO =[1:9 - 1:12]
-// CHECK-NEXT: macro expansion=FOO:1:9 =[3:1 - 3:4]
-// CHECK-NEXT: macro expansion=FOO:1:9 =[4:1 - 4:4]

Modified: trunk/contrib/llvm/tools/clang/test/Index/file-refs-subscripting.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/file-refs-subscripting.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/file-refs-subscripting.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
- at interface NSArray
-- (id)objectAtIndexedSubscript:(int)index;
-+ (id)arrayWithObjects:(id *)objects count:(unsigned)count;
- at end
-
- at interface NSMutableArray : NSArray
-- (id)objectAtIndexedSubscript:(int)index;
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
- at interface NSDictionary
-- (id)objectForKeyedSubscript:(id)key;
-+ (id)dictionaryWithObjects:(id *)objects forKeys:(id *)keys count:(unsigned)count;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at class NSString;
-
-id testArray(int index, id p) {
-  NSMutableArray *array;
-  array[3] = 0;
-  NSArray *arr = @[ p, p ];
-  return array[index];
-}
-
-void testDict() {
-  NSMutableDictionary *dictionary;
-  NSString *key;
-  id newObject, oldObject;
-  oldObject = dictionary[key];
-  dictionary[key] = newObject;
-  NSDictionary *dict = @{ key: newObject, key: oldObject };
-}
-
-// RUN: c-index-test \
-
-// RUN:  -file-refs-at=%s:22:21 \
-// CHECK:      ParmDecl=index:22:18
-// CHECK-NEXT: ParmDecl=index:22:18 (Definition) =[22:18 - 22:23]
-// CHECK-NEXT: DeclRefExpr=index:22:18 =[26:16 - 26:21]
-
-// RUN:  -file-refs-at=%s:22:28 \
-// CHECK-NEXT: ParmDecl=p:22:28
-// CHECK-NEXT: ParmDecl=p:22:28 (Definition) =[22:28 - 22:29]
-// CHECK-NEXT: DeclRefExpr=p:22:28 =[25:21 - 25:22]
-// CHECK-NEXT: DeclRefExpr=p:22:28 =[25:24 - 25:25]
-
-// RUN:  -file-refs-at=%s:34:16 \
-// CHECK-NEXT: DeclRefExpr=key:31:13
-// CHECK-NEXT: VarDecl=key:31:13 (Definition) =[31:13 - 31:16]
-// CHECK-NEXT: DeclRefExpr=key:31:13 =[33:26 - 33:29]
-// CHECK-NEXT: DeclRefExpr=key:31:13 =[34:14 - 34:17]
-// CHECK-NEXT: DeclRefExpr=key:31:13 =[35:27 - 35:30]
-// CHECK-NEXT: DeclRefExpr=key:31:13 =[35:43 - 35:46]
-
-// RUN:  -file-refs-at=%s:35:35 \
-// CHECK-NEXT: DeclRefExpr=newObject:32:6
-// CHECK-NEXT: VarDecl=newObject:32:6 (Definition) =[32:6 - 32:15]
-// CHECK-NEXT: DeclRefExpr=newObject:32:6 =[34:21 - 34:30]
-// CHECK-NEXT: DeclRefExpr=newObject:32:6 =[35:32 - 35:41]
-
-// RUN:   -target x86_64-apple-macosx10.7 %s | FileCheck %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/file-refs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/file-refs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/file-refs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-enum {
-  VALUE = 3
-};
-
-extern int glob_x;
-
-int f(int x) {
-  return x+glob_x+VALUE; 
-}
-
-typedef struct {
-  int x;
-  int y;
-} Vector;
-
-int vector_get_x(Vector v) {
-  int x = v.x;
-  return x;
-}
-
-int f(int);
-int f(int);
-
-// RUN: c-index-test \
-
-// RUN:  -file-refs-at=%s:2:5 \
-// CHECK:      EnumConstantDecl=VALUE:2:3 (Definition)
-// CHECK-NEXT: EnumConstantDecl=VALUE:2:3 (Definition) =[2:3 - 2:8]
-// CHECK-NEXT: DeclRefExpr=VALUE:2:3 =[8:19 - 8:24]
-
-// RUN:  -file-refs-at=%s:8:15 \
-// CHECK-NEXT: DeclRefExpr=glob_x:5:12
-// CHECK-NEXT: VarDecl=glob_x:5:12 =[5:12 - 5:18]
-// CHECK-NEXT: DeclRefExpr=glob_x:5:12 =[8:12 - 8:18]
-
-// RUN:  -file-refs-at=%s:8:10 \
-// CHECK-NEXT: DeclRefExpr=x:7:11
-// CHECK-NEXT: ParmDecl=x:7:11 (Definition) =[7:11 - 7:12]
-// CHECK-NEXT: DeclRefExpr=x:7:11 =[8:10 - 8:11]
-
-// RUN:  -file-refs-at=%s:12:7 \
-// CHECK-NEXT: FieldDecl=x:12:7 (Definition)
-// CHECK-NEXT: FieldDecl=x:12:7 (Definition) =[12:7 - 12:8]
-// CHECK-NEXT: MemberRefExpr=x:12:7 {{.*}} =[17:13 - 17:14]
-
-// RUN:  -file-refs-at=%s:16:21 \
-// CHECK-NEXT: TypeRef=Vector:14:3
-// CHECK-NEXT: TypedefDecl=Vector:14:3 (Definition) =[14:3 - 14:9]
-// CHECK-NEXT: TypeRef=Vector:14:3 =[16:18 - 16:24]
-
-// RUN:  -file-refs-at=%s:21:5 \
-// CHECK-NEXT: FunctionDecl=f:21:5
-// CHECK-NEXT: FunctionDecl=f:7:5 (Definition) =[7:5 - 7:6]
-// CHECK-NEXT: FunctionDecl=f:21:5 =[21:5 - 21:6]
-// CHECK-NEXT: FunctionDecl=f:22:5 =[22:5 - 22:6]
-
-// RUN:   %s | FileCheck %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/file-refs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/file-refs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/file-refs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-namespace NS {
-  class C {
-  public:
-    C() { }
-    void m();
-  };
-}
-
-void NS::C::m() {
-  C c;
-  c.m();
-}
-
-void f() {
-  NS::C c1();
-  NS::C c2 = NS::C();
-}
-
-void over(int);
-void over(float);
-
-void test_over() {
-  over(0);
-  over(0.0f);
-}
-
-template <typename T>
-T tf(T t) {
-  return t;
-}
-
-namespace Test2 {
-
-struct S {
-  S(int x, int y);
-  S();
-};
-
-typedef S Cake;
-
-void f() {
-  Cake p;
-  p = Test2::S(0,2);
-  p = Test2::Cake(0,2);
-}
-
-}
-
-// RUN: c-index-test \
-
-// RUN:  -file-refs-at=%s:9:7 \
-// CHECK:      NamespaceRef=NS:1:11
-// CHECK-NEXT: Namespace=NS:1:11 (Definition) =[1:11 - 1:13]
-// CHECK-NEXT: NamespaceRef=NS:1:11 =[9:6 - 9:8]
-// CHECK-NEXT: NamespaceRef=NS:1:11 =[15:3 - 15:5]
-// CHECK-NEXT: NamespaceRef=NS:1:11 =[16:3 - 16:5]
-// CHECK-NEXT: NamespaceRef=NS:1:11 =[16:14 - 16:16]
-
-// RUN:  -file-refs-at=%s:2:9 \
-// CHECK-NEXT: ClassDecl=C:2:9 (Definition)
-// CHECK-NEXT: ClassDecl=C:2:9 (Definition) =[2:9 - 2:10]
-// CHECK-NEXT: CXXConstructor=C:4:5 (Definition) =[4:5 - 4:6]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[9:10 - 9:11]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[10:3 - 10:4]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[15:7 - 15:8]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[16:7 - 16:8]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[16:18 - 16:19]
-
-// RUN:  -file-refs-at=%s:16:18 \
-// CHECK-NEXT: CallExpr=C:4:5
-// CHECK-NEXT: ClassDecl=C:2:9 (Definition) =[2:9 - 2:10]
-// CHECK-NEXT: CXXConstructor=C:4:5 (Definition) =[4:5 - 4:6]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[9:10 - 9:11]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[10:3 - 10:4]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[15:7 - 15:8]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[16:7 - 16:8]
-// CHECK-NEXT: TypeRef=class NS::C:2:9 =[16:18 - 16:19]
-
-// RUN:  -file-refs-at=%s:20:8 \
-// CHECK-NEXT: FunctionDecl=over:20:6
-// CHECK-NEXT: FunctionDecl=over:20:6 =[20:6 - 20:10]
-// CHECK-NEXT: DeclRefExpr=over:20:6 =[24:3 - 24:7]
-
-// RUN:  -file-refs-at=%s:28:1 \
-// CHECK-NEXT: TypeRef=T:27:20
-// FIXME: Missing TemplateTypeParameter=T:27:20 (Definition)
-// CHECK-NEXT: TypeRef=T:27:20 =[28:1 - 28:2]
-// CHECK-NEXT: TypeRef=T:27:20 =[28:6 - 28:7]
-
-// RUN:  -file-refs-at=%s:43:14 \
-// CHECK-NEXT: CallExpr=S:35:3
-// CHECK-NEXT: StructDecl=S:34:8 (Definition) =[34:8 - 34:9]
-// CHECK-NEXT: CXXConstructor=S:35:3 =[35:3 - 35:4]
-// CHECK-NEXT: CXXConstructor=S:36:3 =[36:3 - 36:4]
-// CHECK-NEXT: TypeRef=struct Test2::S:34:8 =[39:9 - 39:10]
-// CHECK-NEXT: TypeRef=struct Test2::S:34:8 =[43:14 - 43:15]
-
-// RUN:  -file-refs-at=%s:44:16 \
-// CHECK-NEXT: CallExpr=S:35:3
-// CHECK-NEXT: TypedefDecl=Cake:39:11 (Definition) =[39:11 - 39:15]
-// CHECK-NEXT: TypeRef=Cake:39:11 =[42:3 - 42:7]
-// CHECK-NEXT: TypeRef=Cake:39:11 =[44:14 - 44:18]
-
-// RUN:   %s | FileCheck %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/file-refs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/file-refs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/file-refs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
- at class Foo;
-
- at interface Foo
--(id)setWithInt:(int)i andFloat:(float)f;
- at end
-
- at implementation Foo
--(id)setWithInt:(int)i andFloat:(float)f {
-  return self;
-}
- at end
-
-void test(Foo *foo) {
-  [foo setWithInt:0 andFloat:0];
-  [foo setWithInt: 2 andFloat: 3];
-}
-
- at protocol Prot1
--(void)protMeth;
- at end
-
- at protocol Prot2<Prot1>
- at end
-
- at interface Base<Prot2>
- at end
-
- at interface Sub : Base
--(void)protMeth;
- at end
-
- at implementation Sub
--(void)protMeth {}
- at end
-
-void test2(Sub *s, id<Prot1> p) {
-  [s protMeth];
-  [p protMeth];
-}
-
-
-// RUN: c-index-test \
-
-// RUN:  -file-refs-at=%s:7:18 \
-// CHECK:      ObjCImplementationDecl=Foo:7:17 (Definition)
-
-// FIXME: There should not be 2 for the same range.
-// CHECK-NEXT: ObjCInterfaceDecl=Foo:1:8 =[1:8 - 1:11]
-// CHECK-NEXT: ObjCClassRef=Foo:3:12 =[1:8 - 1:11]
-
-// CHECK-NEXT: ObjCInterfaceDecl=Foo:3:12 =[3:12 - 3:15]
-// CHECK-NEXT: ObjCImplementationDecl=Foo:7:17 (Definition) =[7:17 - 7:20]
-// CHECK-NEXT: ObjCClassRef=Foo:3:12 =[13:11 - 13:14]
-
-// RUN:  -file-refs-at=%s:4:10 \
-// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::4:6
-// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::4:6 =[4:6 - 4:16]
-// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::8:6 (Definition) =[8:6 - 8:16]
-// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 =[14:8 - 14:18]
-// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 =[15:8 - 15:18]
-
-// RUN:  -file-refs-at=%s:15:27 \
-// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6
-// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::4:6 =[4:24 - 4:32]
-// CHECK-NEXT: ObjCInstanceMethodDecl=setWithInt:andFloat::8:6 (Definition) =[8:24 - 8:32]
-// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 =[14:21 - 14:29]
-// CHECK-NEXT: ObjCMessageExpr=setWithInt:andFloat::4:6 =[15:22 - 15:30]
-
-// RUN:  -file-refs-at=%s:18:13 \
-// CHECK-NEXT: ObjCProtocolDecl=Prot1:18:11 (Definition)
-// CHECK-NEXT: ObjCProtocolDecl=Prot1:18:11 (Definition) =[18:11 - 18:16]
-// CHECK-NEXT: ObjCProtocolRef=Prot1:18:11 =[22:17 - 22:22]
-// CHECK-NEXT: ObjCProtocolRef=Prot1:18:11 =[36:23 - 36:28]
-
-// RUN:  -file-refs-at=%s:38:10 \
-// CHECK-NEXT: ObjCMessageExpr=protMeth:19:8
-// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:19:8 =[19:8 - 19:16]
-// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:29:8 [Overrides @19:8] =[29:8 - 29:16]
-// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:33:8 (Definition) [Overrides @19:8] =[33:8 - 33:16]
-// CHECK-NEXT: ObjCMessageExpr=protMeth:29:8 =[37:6 - 37:14]
-// CHECK-NEXT: ObjCMessageExpr=protMeth:19:8 =[38:6 - 38:14]
-
-// RUN:  -file-refs-at=%s:33:12 \
-// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:33:8 (Definition) [Overrides @19:8]
-// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:19:8 =[19:8 - 19:16]
-// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:29:8 [Overrides @19:8] =[29:8 - 29:16]
-// CHECK-NEXT: ObjCInstanceMethodDecl=protMeth:33:8 (Definition) [Overrides @19:8] =[33:8 - 33:16]
-// CHECK-NEXT: ObjCMessageExpr=protMeth:29:8 =[37:6 - 37:14]
-// CHECK-NEXT: ObjCMessageExpr=protMeth:19:8 =[38:6 - 38:14]
-
-// RUN:   %s | FileCheck %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/fix-its.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/fix-its.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/fix-its.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: c-index-test -test-load-source all -fspell-checking %s 2> %t  
-// RUN: FileCheck %s < %t
-struct X {
-  int wibble;
-};
-
-#define MACRO(X) X
-
-void f(struct X *x) {
-  // CHECK: error: no member named 'wobble' in 'struct X'; did you mean 'wibble'?
-  // CHECK: FIX-IT: Replace [13:12 - 13:18] with "wibble"
-  // CHECK: note: 'wibble' declared here
-  MACRO(x->wobble = 17);
-  // CHECK: error: no member named 'wabble' in 'struct X'; did you mean 'wibble'?
-  // CHECK: FIX-IT: Replace [17:6 - 17:12] with "wibble"
-  // CHECK: note: 'wibble' declared here
-  x->wabble = 17;
-}
-
-int printf(const char *restrict, ...);
-
-void f2() {
-  unsigned long index;
-  // CHECK: warning: format specifies type 'int' but the argument has type 'unsigned long'
-  // CHECK: FIX-IT: Replace [26:17 - 26:19] with "%lu"
-  MACRO(printf("%d", index));
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/fix-its.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/fix-its.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/fix-its.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: c-index-test -test-load-source all %s -Wno-objc-root-class > %t 2>&1
-// RUN: FileCheck -input-file=%t %s
-
- at class NSString;
-void _rdar_12584554_A (volatile const void * object, volatile const void * selector, const char * functionName, const char * fileName, unsigned int lineNumber, NSString * msgFormat, ...);
-#define _rdar_12584554_B(self,_format_and_args_...) \
-    do{ _rdar_12584554_A(&self,&_cmd,__PRETTY_FUNCTION__,__FILE__,__LINE__, _format_and_args_); }while(0)
-#define _rdar_12584554_C(_format_and_args_...) \
-    _rdar_12584554_B(self, _format_and_args_)
-
- at interface RDar12584554
- at end
-
-// This test case tests that the "@" is properly inserted before the '"', even in the
-// presence of a nested macro chain.
- at implementation RDar12584554
-- (void) test:(int)result {
-    _rdar_12584554_C("ted");
-}
- at end
-
-// CHECK: FIX-IT: Insert "@" at 18:22
-// CHECK: fix-its.m:9:28: note: expanded from macro '_rdar_12584554_C'
-// CHECK: Number FIX-ITs = 0
-// CHECK: fix-its.m:7:77: note: expanded from macro '_rdar_12584554_B'
-// CHECK: Number FIX-ITs = 0
-// CHECK: fix-its.m:5:172: note: passing argument to parameter 'msgFormat' here
-// CHECK: Number FIX-ITs = 0

Modified: trunk/contrib/llvm/tools/clang/test/Index/format-comment-cdecls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/format-comment-cdecls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/format-comment-cdecls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s \ 
-// RUN: | FileCheck %s 
-
-/**
- * \brief Aaa.
-*/
-int global_function();
-// CHECK: <Declaration>int global_function()</Declaration>
-
-/**
- * \param x1 Aaa.
-*/
-extern void external_function(int x1);
-// CHECK: <Declaration>extern void external_function(int x1)</Declaration>
-
-/**
- * \brief global variable;
-*/
-int global_variable;
-// CHECK: <Declaration>int global_variable</Declaration>
-
-/**
- * \brief local variable;
-*/
-static int static_variable;
-// CHECK: <Declaration>static int static_variable</Declaration>
-
-/**
- * \brief external variable
-*/
-extern int external_variable;
-// CHECK: <Declaration>extern int external_variable</Declaration>
-
-int global_function() {
-  /**
-   * \brief a local variable
-  */
-  int local = 10;
-  return local;
-}
-// CHECK: <Declaration>int global_function()</Declaration>
-// CHECK: <Declaration>int local = 10</Declaration>
-
-/**
- * \brief initialized decl.
-*/
-int initialized_global = 100;
-// CHECK: <Declaration>int initialized_global = 100</Declaration>
-
-/**
- * \brief typedef example
-*/
-typedef int INT_T;
-// CHECK: <Declaration>typedef int INT_T</Declaration>
-
-/**
- * \brief aggregate type example
-*/
-struct S {
-/**
- * \brief iS1;
-*/
-  int iS1;
-/**
- * \brief dS1;
-*/
-  double dS1;
-};
-// CHECK: <Declaration>struct S {}</Declaration>
-// CHECK: <Declaration>int iS1</Declaration>
-// CHECK: <Declaration>double dS1</Declaration>
-
-/**
- * \brief enum e;
-*/
-enum e {
-  One,
-/**
- * \brief Two;
-*/
-  Two,
-  Three
-};
-// CHECK: <Declaration>enum e {}</Declaration>
-// CHECK: <Declaration>Two</Declaration>
-
-/**
- *\brief block declaration
-*/
-int (^Block) (int i, int j);
-// CHECK: <Declaration>int (^Block)(int, int)</Declaration>
-
-/**
- *\brief block declaration
-*/
-int (^Block1) (int i, int j) = ^(int i, int j) { return i + j; };
-// CHECK: <Declaration>int (^Block1)(int, int) = ^(int i, int j) {}</Declaration>

Modified: trunk/contrib/llvm/tools/clang/test/Index/get-cursor-includes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/get-cursor-includes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/get-cursor-includes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-#include "get-cursor-includes-2.h"
-#include "get-cursor-includes-2.h"
-
-// RUN: c-index-test -write-pch %t.h.pch -I%S/Inputs -Xclang -detailed-preprocessing-record %S/Inputs/get-cursor-includes-2.h
-// RUN: c-index-test -cursor-at=%S/Inputs/get-cursor-includes-2.h:1:5 -I%S/Inputs -include %t.h %s | FileCheck %s
-
-// CHECK: inclusion directive=get-cursor-includes-1.h

Modified: trunk/contrib/llvm/tools/clang/test/Index/get-cursor-macro-args.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/get-cursor-macro-args.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/get-cursor-macro-args.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
- at interface MyClass
-+(void)meth;
- at end
-
-#define MACRO2(x) (x)
-#define MACRO(x) MACRO2((x))
-
-void test() {
-  MACRO([MyClass meth]);
-}
-
-#define INVOKE(METHOD, CLASS) [CLASS METHOD]
-
-void test2() {
-  INVOKE(meth, MyClass);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/get-cursor-macro-args.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/get-cursor-macro-args.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/get-cursor-macro-args.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// Test without PCH
-// RUN: c-index-test -cursor-at=%S/get-cursor-macro-args.h:9:12 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:9:21 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:9:9 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:9:22 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:15:12 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:15:20 \
-// RUN:       %s -include %S/get-cursor-macro-args.h | FileCheck %s
-
-// Test with PCH
-// RUN: c-index-test -write-pch %t.pch -x objective-c-header %S/get-cursor-macro-args.h
-// RUN: c-index-test -cursor-at=%S/get-cursor-macro-args.h:9:12 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:9:21 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:9:9 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:9:22 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:15:12 \
-// RUN:              -cursor-at=%S/get-cursor-macro-args.h:15:20 \
-// RUN:       %s -include-pch %t.pch | FileCheck %s
-
-// CHECK:      ObjCClassRef=MyClass:1:12
-// CHECK-NEXT: ObjCMessageExpr=meth:2:8
-// CHECK-NEXT: ObjCMessageExpr=meth:2:8
-// CHECK-NEXT: ObjCMessageExpr=meth:2:8
-// CHECK-NEXT: ObjCMessageExpr=meth:2:8
-// CHECK-NEXT: ObjCClassRef=MyClass:1:12

Modified: trunk/contrib/llvm/tools/clang/test/Index/get-cursor.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/get-cursor.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/get-cursor.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-struct _MyS {
-  int foo;
-} MyS;
-
-struct _MyS ww;
-
-int x, y;
-
-// RUN: c-index-test -cursor-at=%s:1:9 \
-// RUN:              -cursor-at=%s:2:9 \
-// RUN:              -cursor-at=%s:5:9 \
-// RUN:              -cursor-at=%s:7:5 \
-// RUN:              -cursor-at=%s:7:8 \
-// RUN:       %s | FileCheck %s
-
-// CHECK: StructDecl=_MyS:1:8 (Definition)
-// CHECK: FieldDecl=foo:2:7 (Definition)
-// CHECK: TypeRef=struct _MyS:1:8
-// CHECK: VarDecl=x:7:5
-// CHECK: VarDecl=y:7:8

Modified: trunk/contrib/llvm/tools/clang/test/Index/get-cursor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/get-cursor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/get-cursor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,130 +0,0 @@
-// Test is line- and column-sensitive. Run lines are below.
-
-struct X {
-  X();
-  X(int);
-  X(int, int);
-  X(const X&);
-};
-
-X getX(int value) { 
-  switch (value) {
-  case 1: return X(value);
-  case 2: return X(value, value);
-  case 3: return (X)value;
-  default: break;
-  }
-  return X();
-}
-
-struct Y {
-  int member;
-
-  X getX();
-};
-
-X Y::getX() {
-  return member;
-}
-
-struct YDerived : Y {
-  X getAnotherX() { return member; }
-};
-
-void test() {
-  X foo;
-
-  try {
-  } catch (X e) {
-    X x;
-  }
-
-  struct LocalS {
-    void meth() {
-      int x;
-      ++x;
-    }
-  };
-}
-
-template <bool (*tfn)(X*)>
-struct TS {
-  void foo();
-};
-
-template <bool (*tfn)(X*)>
-void TS<tfn>::foo() {}
-
-template <typename T>
-class TC {
-  void init();
-};
-
-template<> void TC<char>::init();
-
-#define EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
-EXTERN_TEMPLATE(class TC<char>)
-
-// RUN: c-index-test -cursor-at=%s:6:4 %s | FileCheck -check-prefix=CHECK-COMPLETION-1 %s
-// CHECK-COMPLETION-1: CXXConstructor=X:6:3
-// CHECK-COMPLETION-1-NEXT: Completion string: {TypedText X}{LeftParen (}{Placeholder int}{Comma , }{Placeholder int}{RightParen )}
-
-// RUN: c-index-test -cursor-at=%s:31:16 %s | FileCheck -check-prefix=CHECK-COMPLETION-2 %s
-// CHECK-COMPLETION-2: CXXMethod=getAnotherX:31:5 (Definition)
-// CHECK-COMPLETION-2-NEXT: Completion string: {ResultType X}{TypedText getAnotherX}{LeftParen (}{RightParen )}
-
-// RUN: c-index-test -cursor-at=%s:12:20 %s | FileCheck -check-prefix=CHECK-VALUE-REF %s
-// RUN: c-index-test -cursor-at=%s:13:21 %s | FileCheck -check-prefix=CHECK-VALUE-REF %s
-// RUN: c-index-test -cursor-at=%s:13:28 %s | FileCheck -check-prefix=CHECK-VALUE-REF %s
-// RUN: c-index-test -cursor-at=%s:14:23 %s | FileCheck -check-prefix=CHECK-VALUE-REF %s
-// CHECK-VALUE-REF: DeclRefExpr=value:10:12
-
-// RUN: c-index-test -cursor-at=%s:12:18 %s | FileCheck -check-prefix=CHECK-CONSTRUCTOR1 %s
-// RUN: c-index-test -cursor-at=%s:13:18 %s | FileCheck -check-prefix=CHECK-CONSTRUCTOR2 %s
-// RUN: c-index-test -cursor-at=%s:14:19 %s | FileCheck -check-prefix=CHECK-CONSTRUCTOR1 %s
-// RUN: c-index-test -cursor-at=%s:17:10 %s | FileCheck -check-prefix=CHECK-CONSTRUCTOR3 %s
-// CHECK-TYPE-REF: TypeRef=struct X:3:8
-// CHECK-CONSTRUCTOR1: CallExpr=X:5:3
-// CHECK-CONSTRUCTOR2: CallExpr=X:6:3
-// CHECK-CONSTRUCTOR3: CallExpr=X:4:3
-
-// RUN: c-index-test -cursor-at=%s:23:3 %s | FileCheck -check-prefix=CHECK-RETTYPE %s
-// RUN: c-index-test -cursor-at=%s:26:1 %s | FileCheck -check-prefix=CHECK-RETTYPE %s
-// CHECK-RETTYPE: TypeRef=struct X:3:8
-
-// RUN: c-index-test -cursor-at=%s:23:7 %s | FileCheck -check-prefix=CHECK-MEMFUNC-DECL %s
-// CHECK-MEMFUNC-DECL: CXXMethod=getX:23:5
-// RUN: c-index-test -cursor-at=%s:26:7 %s | FileCheck -check-prefix=CHECK-MEMFUNC-DEF %s
-// CHECK-MEMFUNC-DEF: CXXMethod=getX:26:6
-
-// RUN: c-index-test -cursor-at=%s:26:3 %s | FileCheck -check-prefix=CHECK-TYPEREF-Y %s
-// CHECK-TYPEREF-Y: TypeRef=struct Y:20:8
-
-// RUN: c-index-test -cursor-at=%s:27:10 %s | FileCheck -check-prefix=CHECK-IMPLICIT-MEMREF %s
-// RUN: c-index-test -cursor-at=%s:31:28 %s | FileCheck -check-prefix=CHECK-IMPLICIT-MEMREF %s
-// CHECK-IMPLICIT-MEMREF: MemberRefExpr=member:21:7
-
-// RUN: c-index-test -cursor-at=%s:35:5 %s | FileCheck -check-prefix=CHECK-DECL %s
-// CHECK-DECL: VarDecl=foo:35:5
-
-// RUN: c-index-test -cursor-at=%s:21:3 %s | FileCheck -check-prefix=CHECK-MEMBER %s
-// CHECK-MEMBER: FieldDecl=member:21:7 (Definition)
-// CHECK-MEMBER-NEXT: Completion string: {ResultType int}{TypedText member}
-
-// RUN: c-index-test -cursor-at=%s:38:12 -cursor-at=%s:39:5 %s | FileCheck -check-prefix=CHECK-CXXCATCH %s
-// CHECK-CXXCATCH: TypeRef=struct X:3:8
-// CHECK-CXXCATCH-NEXT: TypeRef=struct X:3:8
-
-// RUN: c-index-test -test-load-source-usrs local %s | FileCheck -check-prefix=CHECK-USR %s
-// CHECK-USR: get-cursor.cpp c:get-cursor.cpp at 472@F at test#@e Extent=[38:12 - 38:15]
-// CHECK-USR: get-cursor.cpp c:get-cursor.cpp at 483@F at test#@x Extent=[39:5 - 39:8]
-
-// RUN: c-index-test -cursor-at=%s:45:9 %s | FileCheck -check-prefix=CHECK-LOCALCLASS %s
-// CHECK-LOCALCLASS: 45:9 DeclRefExpr=x:44:11 Extent=[45:9 - 45:10] Spelling=x ([45:9 - 45:10])
-
-// RUN: c-index-test -cursor-at=%s:50:23 -cursor-at=%s:55:23 %s | FileCheck -check-prefix=CHECK-TEMPLPARAM %s
-// CHECK-TEMPLPARAM: 50:23 TypeRef=struct X:3:8 Extent=[50:23 - 50:24] Spelling=struct X ([50:23 - 50:24])
-// CHECK-TEMPLPARAM: 55:23 TypeRef=struct X:3:8 Extent=[55:23 - 55:24] Spelling=struct X ([55:23 - 55:24])
-
-// RUN: c-index-test -cursor-at=%s:66:23 %s | FileCheck -check-prefix=CHECK-TEMPLSPEC %s
-// CHECK-TEMPLSPEC: 66:23 ClassDecl=TC:66:23 (Definition) [Specialization of TC:59:7] Extent=[66:1 - 66:31] Spelling=TC ([66:23 - 66:25])

Modified: trunk/contrib/llvm/tools/clang/test/Index/get-cursor.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/get-cursor.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/get-cursor.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,148 +0,0 @@
-// Test is line- and column-sensitive. Run lines are below.
-
- at interface rdar9771715
- at property (readonly) int foo1;
- at property (readwrite) int foo2;
- at end
-
- at class Foo;
-
- at interface rdar9535717 {
-  __weak Foo *foo;
-}
- at end
-
- at interface Test1 {
-  id _name;
-}
- at end
- at interface Test1 ()
-- (id)name;
- at end
- at interface Test1 ()
- at property (copy) id name;
- at end
- at implementation Test1
- at synthesize name = _name;
- at end
-
- at interface rdar10902015
- at end
-
- at implementation rdar10902015
-
-struct S { int x; };
-
--(void)mm:(struct S*)s {
-  rdar10902015 *i = 0;
-  s->x = 0;
-  Test1 *test1;
-  test1.name = 0;
-}
- at end
-
- at interface Test2
--(int)implicitProp;
--(void)setImplicitProp:(int)x;
- at end
-
-void foo1(Test2 *test2) {
-  int x = test2.implicitProp;
-  test2.implicitProp = x;
-  ++test2.implicitProp;
-}
-
- at interface Test3
--(void)setFoo:(int)x withBar:(int)y;
- at end
-
-void foo3(Test3 *test3) {
-  [test3 setFoo:2 withBar:4];
-}
-
- at interface Test4
- at end
- at interface Test4(Dido)
- at end
- at implementation Test4(Dido)
- at end
-
- at class Forw1, Forw2, Forw3;
-
- at interface Test5 {
-  id prop1;
-  id prop2;
-}
- at property (assign) id prop1;
- at property (assign) id prop2;
- at property (assign) id prop3;
- at property (assign) id prop4;
- at end
-
- at implementation Test5
- at synthesize prop1, prop2;
- at dynamic prop3, prop4;
-
--(id)meth1 {
-  return 0;
-}
--(id)meth2{
-  return 0;
-}
- at end
-
- at interface Test6
- at property (assign) id prop1;
- at end
-
- at implementation Test6
- at synthesize prop1 = _prop1;
- at end
-
-// RUN: c-index-test -cursor-at=%s:4:28 -cursor-at=%s:5:28 %s | FileCheck -check-prefix=CHECK-PROP %s
-// CHECK-PROP: ObjCPropertyDecl=foo1:4:26
-// CHECK-PROP: ObjCPropertyDecl=foo2:5:27
-
-// RUN: c-index-test -cursor-at=%s:11:11 %s -target x86_64-apple-macosx10.7.0 | FileCheck -check-prefix=CHECK-WITH-WEAK %s
-// CHECK-WITH-WEAK: ObjCClassRef=Foo:8:8
-
-// RUN: c-index-test -cursor-at=%s:20:10 %s | FileCheck -check-prefix=CHECK-METHOD %s
-// CHECK-METHOD: 20:7 ObjCInstanceMethodDecl=name:20:7 Extent=[20:1 - 20:12]
-
-// RUN: c-index-test -cursor-at=%s:37:17 %s | FileCheck -check-prefix=CHECK-IN-IMPL %s
-// CHECK-IN-IMPL: VarDecl=i:37:17
-
-// RUN: c-index-test -cursor-at=%s:38:6 -cursor-at=%s:40:11 \
-// RUN:   -cursor-at=%s:50:20 -cursor-at=%s:51:15 -cursor-at=%s:52:20 %s | FileCheck -check-prefix=CHECK-MEMBERREF %s
-// CHECK-MEMBERREF: 38:6 MemberRefExpr=x:34:16 SingleRefName=[38:6 - 38:7] RefName=[38:6 - 38:7] Extent=[38:3 - 38:7]
-// CHECK-MEMBERREF: 40:9 MemberRefExpr=name:23:21 Extent=[40:3 - 40:13] Spelling=name ([40:9 - 40:13])
-// CHECK-MEMBERREF: 50:17 MemberRefExpr=implicitProp:45:7 Extent=[50:11 - 50:29] Spelling=implicitProp ([50:17 - 50:29])
-// CHECK-MEMBERREF: 51:9 MemberRefExpr=setImplicitProp::46:8 Extent=[51:3 - 51:21] Spelling=setImplicitProp: ([51:9 - 51:21])
-// CHECK-MEMBERREF: 52:11 MemberRefExpr=setImplicitProp::46:8 Extent=[52:5 - 52:23] Spelling=setImplicitProp: ([52:11 - 52:23])
-
-// RUN: c-index-test -cursor-at=%s:56:24 -cursor-at=%s:60:14 \
-// RUN:   -cursor-at=%s:65:20 -cursor-at=%s:67:25 \
-// RUN:   -cursor-at=%s:70:10 -cursor-at=%s:70:16 -cursor-at=%s:70:25 \
-// RUN:   %s | FileCheck -check-prefix=CHECK-SPELLRANGE %s
-// CHECK-SPELLRANGE: 56:8 ObjCInstanceMethodDecl=setFoo:withBar::56:8 Extent=[56:1 - 56:37] Spelling=setFoo:withBar: ([56:8 - 56:14][56:22 - 56:29]) Selector index=1
-// CHECK-SPELLRANGE: 60:3 ObjCMessageExpr=setFoo:withBar::56:8 Extent=[60:3 - 60:29] Spelling=setFoo:withBar: ([60:10 - 60:16][60:19 - 60:26]) Selector index=0
-// CHECK-SPELLRANGE: 65:12 ObjCCategoryDecl=Dido:65:12 Extent=[65:1 - 66:5] Spelling=Dido ([65:18 - 65:22])
-// CHECK-SPELLRANGE: 67:17 ObjCCategoryImplDecl=Dido:67:17 (Definition) Extent=[67:1 - 68:2] Spelling=Dido ([67:23 - 67:27])
-
-// CHECK-SPELLRANGE: 70:8 ObjCClassRef=Forw1:70:8 Extent=[70:8 - 70:13] Spelling=Forw1 ([70:8 - 70:13])
-// CHECK-SPELLRANGE: 70:15 ObjCClassRef=Forw2:70:15 Extent=[70:15 - 70:20] Spelling=Forw2 ([70:15 - 70:20])
-// CHECK-SPELLRANGE: 70:22 ObjCClassRef=Forw3:70:22 Extent=[70:22 - 70:27] Spelling=Forw3 ([70:22 - 70:27])
-
-// RUN: c-index-test -cursor-at=%s:83:15 -cursor-at=%s:83:21 \
-// RUN:              -cursor-at=%s:84:12 -cursor-at=%s:84:20 \
-// RUN:              -cursor-at=%s:99:14 -cursor-at=%s:99:23 %s | FileCheck -check-prefix=CHECK-MULTISYNTH %s
-// CHECK-MULTISYNTH: 83:13 ObjCSynthesizeDecl=prop1:76:23 (Definition) Extent=[83:1 - 83:18] Spelling=prop1 ([83:13 - 83:18])
-// CHECK-MULTISYNTH: 83:20 ObjCSynthesizeDecl=prop2:77:23 (Definition) Extent=[83:1 - 83:25] Spelling=prop2 ([83:20 - 83:25])
-// CHECK-MULTISYNTH: 84:10 ObjCDynamicDecl=prop3:78:23 (Definition) Extent=[84:1 - 84:15] Spelling=prop3 ([84:10 - 84:15])
-// CHECK-MULTISYNTH: 84:17 ObjCDynamicDecl=prop4:79:23 (Definition) Extent=[84:1 - 84:22] Spelling=prop4 ([84:17 - 84:22])
-// CHECK-MULTISYNTH: 99:13 ObjCSynthesizeDecl=prop1:95:23 (Definition) Extent=[99:1 - 99:27] Spelling=prop1 ([99:13 - 99:18])
-// CHECK-MULTISYNTH: 99:21 MemberRef=_prop1:99:21 Extent=[99:21 - 99:27] Spelling=_prop1 ([99:21 - 99:27])
-
-// RUN: c-index-test -cursor-at=%s:86:7 -cursor-at=%s:89:7 %s | FileCheck -check-prefix=CHECK-SELECTORLOC %s
-// CHECK-SELECTORLOC: 86:6 ObjCInstanceMethodDecl=meth1:86:6 (Definition) Extent=[86:1 - 88:2] Spelling=meth1 ([86:6 - 86:11]) Selector index=0
-// CHECK-SELECTORLOC: 89:6 ObjCInstanceMethodDecl=meth2:89:6 (Definition) Extent=[89:1 - 91:2] Spelling=meth2 ([89:6 - 89:11]) Selector index=0

Modified: trunk/contrib/llvm/tools/clang/test/Index/getcursor-pp-pch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/getcursor-pp-pch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/getcursor-pp-pch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-
-
-
-typedef int T;
-void OBSCURE(func)(int x) {
-  OBSCURE(T) DECORATION value;
-}
-
-
-// Without PCH
-// RUN: c-index-test -cursor-at=%s.h:1:11 \
-// RUN:              -cursor-at=%s.h:2:14 \
-// RUN:              -cursor-at=%s.h:4:5 \
-// RUN:              -cursor-at=%s.h:5:5 \
-// RUN:              -cursor-at=%s.h:5:14 \
-// RUN:              -cursor-at=%s:5:7 \
-// RUN:              -cursor-at=%s:6:6 \
-// RUN:              -cursor-at=%s:6:19 \
-// RUN:     -include %s.h %s | FileCheck %s
-
-// With PCH
-// RUN: c-index-test -write-pch %t.h.pch %s.h -Xclang -detailed-preprocessing-record
-// RUN: c-index-test -cursor-at=%s.h:1:11 \
-// RUN:              -cursor-at=%s.h:2:14 \
-// RUN:              -cursor-at=%s.h:4:5 \
-// RUN:              -cursor-at=%s.h:5:5 \
-// RUN:              -cursor-at=%s.h:5:14 \
-// RUN:              -cursor-at=%s:5:7 \
-// RUN:              -cursor-at=%s:6:6 \
-// RUN:              -cursor-at=%s:6:19 \
-// RUN:     -include %t.h %s | FileCheck %s
-
-// From header
-// CHECK: macro definition=OBSCURE
-// CHECK: macro definition=DECORATION
-// CHECK: macro expansion=DECORATION:2:9
-// CHECK: macro expansion=OBSCURE:1:9
-// CHECK: macro expansion=DECORATION:2:9
-
-// From main file
-// CHECK: macro expansion=OBSCURE:1:9
-// CHECK: macro expansion=OBSCURE:1:9
-// CHECK: macro expansion=DECORATION:2:9

Modified: trunk/contrib/llvm/tools/clang/test/Index/getcursor-pp-pch.c.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/getcursor-pp-pch.c.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/getcursor-pp-pch.c.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#define OBSCURE(X) X
-#define DECORATION
-
-DECORATION
-OBSCURE(DECORATION)

Modified: trunk/contrib/llvm/tools/clang/test/Index/getcursor-preamble.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/getcursor-preamble.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/getcursor-preamble.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
- at interface I {
-  struct AA {
-    int x;
-  } aa;
-  int var;
-}
--(id)foo;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/getcursor-preamble.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/getcursor-preamble.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/getcursor-preamble.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-#include "getcursor-preamble.h"
-
-// RUN: c-index-test \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:2:10 \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:3:9 \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:4:6 \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:5:8 \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:7:7 \
-// RUN:             %s | FileCheck %s
-
-// RUN: env CINDEXTEST_EDITING=1 c-index-test \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:2:10 \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:3:9 \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:4:6 \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:5:8 \
-// RUN:    -cursor-at=%S/getcursor-preamble.h:7:7 \
-// RUN:             %s | FileCheck %s
-
-// CHECK: StructDecl=AA:2:10
-// CHECK: FieldDecl=x:3:9
-// CHECK: ObjCIvarDecl=aa:4:5
-// CHECK: ObjCIvarDecl=var:5:7
-// CHECK: ObjCInstanceMethodDecl=foo:7:6

Modified: trunk/contrib/llvm/tools/clang/test/Index/headerfile-comment-to-html.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/headerfile-comment-to-html.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/headerfile-comment-to-html.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out
-// RUN: FileCheck %s < %t/out
-// rdar://13067629
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-
-// rdar://12397511
-
-/*!
-     \headerfile Device.h <Foundation/Device.h>
-
-      A Device represents a remote or local computer or device with which the Developer Tools can interact.  Each Device supports blah blah blah from doing blah blah blah.
-*/
- at interface Device
- at end
-// CHECK: headerfile-comment-to-html.m:[[@LINE-2]]:12: ObjCInterfaceDecl=Device:{{.*}} FullCommentAsXML=[<Other file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-2]]" column="12"><Name>Device</Name><USR>c:objc(cs)Device</USR><Headerfile><Para> Device.h <Foundation/Device.h></Para></Headerfile><Declaration>@interface Device\n at end</Declaration><Abstract><Para>      A Device represents a remote or local computer or device with which the Developer Tools can interact.  Each Device supports blah blah blah from doing blah blah blah.</Para></Abstract></Other>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[     ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[headerfile]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Device.h ])
-// CHECK-NEXT:           (CXComment_Text Text=[<Foundation])
-// CHECK-NEXT:           (CXComment_Text Text=[/Device.h>])))
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[      A Device represents a remote or local computer or device with which the Developer Tools can interact.  Each Device supports blah blah blah from doing blah blah blah.])))]
-
-/*!
-    \headerfile Sensor.h "Sensor.h"
-
-    \brief This is Sensor on the Device.
-    Its purpose is not to Sense Device's heat.
-*/
-
- at interface Sensor
- at end
-// CHECK: headerfile-comment-to-html.m:[[@LINE-2]]:12: ObjCInterfaceDecl=Sensor:{{.*}} FullCommentAsXML=[<Other file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-2]]" column="12"><Name>Sensor</Name><USR>c:objc(cs)Sensor</USR><Headerfile><Para> Sensor.h "Sensor.h"</Para></Headerfile><Declaration>@interface Sensor\n at end</Declaration><Abstract><Para> This is Sensor on the Device.    Its purpose is not to Sense Device's heat.</Para></Abstract></Other>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[    ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[headerfile]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Sensor.h "Sensor.h"])))
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[    ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[brief]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ This is Sensor on the Device.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[    Its purpose is not to Sense Device's heat.]))))]
-
-/*!
-    \brief Test that headerfile can come after brief.
-    \headerfile VTDevice.h <VTFoundation/VTDevice.h>
-
-    More property decription goes here.
-*/
- at interface VTDevice : Device
- at end
-// CHECK: headerfile-comment-to-html.m:[[@LINE-2]]:12: ObjCInterfaceDecl=VTDevice:{{.*}} FullCommentAsXML=[<Other file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-2]]" column="12"><Name>VTDevice</Name><USR>c:objc(cs)VTDevice</USR><Headerfile><Para> VTDevice.h <VTFoundation/VTDevice.h></Para></Headerfile><Declaration>@interface VTDevice : Device\n at end</Declaration><Abstract><Para> Test that headerfile can come after brief.    </Para></Abstract><Discussion><Para>    More property decription goes here.</Para></Discussion></Other>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[    ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[brief]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ Test that headerfile can come after brief.] HasTrailingNewline)
-// CHECK-NEXT:           (CXComment_Text Text=[    ] IsWhitespace)))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[headerfile]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[ VTDevice.h ])
-// CHECK-NEXT:           (CXComment_Text Text=[<VTFoundation])
-// CHECK-NEXT:           (CXComment_Text Text=[/VTDevice.h>])))
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[    More property decription goes here.])))]
-
-/*!
-  \headerfile  <stdio.h>
-*/
-extern void uses_stdio_h();
-// CHECK: headerfile-comment-to-html.m:[[@LINE-1]]:13: FunctionDecl=uses_stdio_h:{{.*}} FullCommentAsXML=[<Function file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-1]]" column="13"><Name>uses_stdio_h</Name><USR>c:@F at uses_stdio_h</USR><Headerfile><Para>  <stdio.h></Para></Headerfile><Declaration>extern void uses_stdio_h()</Declaration></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[  ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[headerfile]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[  ] IsWhitespace)
-// CHECK-NEXT:           (CXComment_Text Text=[<stdio])
-// CHECK-NEXT:           (CXComment_Text Text=[.h>]))))]
-
-
-/*!
-  \headerfile  <algorithm>
-*/
-extern void uses_argorithm();
-// CHECK: headerfile-comment-to-html.m:[[@LINE-1]]:13: FunctionDecl=uses_argorithm:{{.*}} FullCommentAsXML=[<Function file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-1]]" column="13"><Name>uses_argorithm</Name><USR>c:@F at uses_argorithm</USR><Headerfile><Para>  <algorithm></Para></Headerfile><Declaration>extern void uses_argorithm()</Declaration></Function>]
-// CHECK-NEXT:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph IsWhitespace
-// CHECK-NEXT:         (CXComment_Text Text=[  ] IsWhitespace))
-// CHECK-NEXT:       (CXComment_BlockCommand CommandName=[headerfile]
-// CHECK-NEXT:         (CXComment_Paragraph
-// CHECK-NEXT:           (CXComment_Text Text=[  ] IsWhitespace)
-// CHECK-NEXT:           (CXComment_Text Text=[<algorithm])
-// CHECK-NEXT:           (CXComment_Text Text=[>]))))]

Modified: trunk/contrib/llvm/tools/clang/test/Index/in-class-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/in-class-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/in-class-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-struct S {
-  int field = 2;
-};
-
-// RUN: c-index-test -test-load-source all -std=c++11 %s | FileCheck %s
-// CHECK: 2:7: FieldDecl=field:2:7 (Definition) Extent=[2:3 - 2:16]

Modified: trunk/contrib/llvm/tools/clang/test/Index/include_test.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/include_test.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/include_test.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#include "include_test_2.h"

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-attrs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-attrs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-attrs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
- at class Foo;
- at interface Bar
- at property (retain) __attribute__((iboutletcollection(Foo))) Foo *prop;
- at end
-
- at interface I
--(id)prop __attribute__((annotate("anno")));
--(void)setProp:(id)p __attribute__((annotate("anno")));
- at property (assign) id prop __attribute__((annotate("anno")));
- at end
-
-// RUN: c-index-test -index-file %s | FileCheck %s
-// CHECK:      <attribute>: attribute(iboutletcollection)= [IBOutletCollection=ObjCInterface]
-
-// CHECK: <attribute>: attribute(annotate)=anno
-// CHECK: <getter>: kind: objc-instance-method | name: prop | {{.*}} <attribute>: attribute(annotate)=anno
-// CHECK: <setter>: kind: objc-instance-method | name: setProp: | {{.*}} <attribute>: attribute(annotate)=anno

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-decls.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-decls.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-decls.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
- at interface I
- at property (readonly) id prop;
- -(id)prop;
- at end
-
- at interface I()
- at property (assign,readwrite) id prop;
- at end
-
- at implementation I
- at synthesize prop = _prop;
- at end
-
-// rdar://11015325
- at interface I1
-__attribute__((something)) @interface I2 @end
- at end
-
- at interface I3
- at property (assign,readwrite) id auto_prop;
- at end
-
- at implementation I3
--(void)meth {
-  _auto_prop = 0;
-}
- at end
-
-int test1() {
-  extern int extvar;
-  extvar = 2;
-  extern int extfn();
-  return extfn();
-}
-
-// RUN: c-index-test -index-file %s -target x86_64-apple-macosx10.7 > %t
-// RUN: FileCheck %s -input-file=%t
-// CHECK: [indexDeclaration]: kind: objc-class | name: I | {{.*}} | loc: 1:12
-// CHECK: [indexDeclaration]: kind: objc-instance-method | name: prop | {{.*}} | loc: 3:2
-// CHECK: [indexDeclaration]: kind: objc-property | name: prop | {{.*}} | loc: 2:25
-// CHECK: [indexDeclaration]: kind: objc-category | name:  | {{.*}} | loc: 6:12
-// CHECK: [indexDeclaration]: kind: objc-instance-method | name: setProp: | {{.*}} | loc: 7:33
-// CHECK: [indexDeclaration]: kind: objc-property | name: prop | {{.*}} | loc: 7:33
-
-// CHECK: [indexDeclaration]: kind: objc-ivar | name: _prop | {{.*}} | loc: 11:20
-// CHECK: [indexDeclaration]: kind: objc-instance-method | name: prop | {{.*}} | loc: 11:13 | {{.*}} | lexical-container: [I:10:17]
-// CHECK: [indexDeclaration]: kind: objc-instance-method | name: setProp: | {{.*}} | loc: 11:13 | {{.*}} | lexical-container: [I:10:17]
-
-// CHECK: [indexDeclaration]: kind: objc-ivar | name: _auto_prop | {{.*}} | loc: 20:33
-// CHECK: [indexEntityReference]: kind: objc-ivar | name: _auto_prop | {{.*}} | loc: 25:3
-
-// CHECK: [indexDeclaration]: kind: function | name: test1 | {{.*}} | loc: 29:5
-// CHECK: [indexDeclaration]: kind: variable | name: extvar | {{.*}} | loc: 30:14
-// CHECK: [indexEntityReference]: kind: variable | name: extvar | {{.*}} | loc: 31:3
-// CHECK: [indexDeclaration]: kind: function | name: extfn | {{.*}} | loc: 32:14
-// CHECK: [indexEntityReference]: kind: function | name: extfn | {{.*}} | loc: 33:10

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-file.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-file.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-file.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-using MyTypeAlias = int;
-
-extern "C" {
-  template < typename T > *Allocate() { }
-}
-
-// RUN: c-index-test -index-file %s > %t
-// RUN: FileCheck %s -input-file=%t
-
-// CHECK: [indexDeclaration]: kind: type-alias | name: MyTypeAlias | {{.*}} | loc: 1:7

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-invalid-code.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-invalid-code.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-invalid-code.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-struct S {
-  int {
-};
-typedef struct S S;
-
-// RUN: c-index-test -index-file %s | FileCheck %s
-// CHECK: [indexDeclaration]: kind: struct | name: S |
-// CHECK-NOT: [indexDeclaration]: kind: struct | name: S |

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-kernel-invocation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-kernel-invocation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-kernel-invocation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: c-index-test -index-file -arch i386 -mkernel %s | FileCheck %s
-
-// CHECK: [indexDeclaration]: kind: function | name: foobar
-void foobar(void);

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-many-call-ops.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-many-call-ops.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-many-call-ops.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: c-index-test -index-file %s | FileCheck %s
-
-// rdar://11289247
-// Check that we don't get stack overflow trying to index a huge number of
-// call operators.
-
-struct S {
-  S &operator()();
-};
-
-// CHECK: [indexDeclaration]: kind: function | name: foo
-void foo() {
-  S s;
-  s()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-   ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
-    ;
-}
-
-// CHECK: [indexDeclaration]: kind: function | name: bar
-void bar();

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-many-logical-ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-many-logical-ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-many-logical-ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2011 +0,0 @@
-// RUN: c-index-test -index-file %s | FileCheck %s
-
-// rdar://10941790
-// Check that we don't get stack overflow trying to index a huge number of
-// logical operators.
-
-// CHECK: [indexDeclaration]: kind: function | name: foo
-int foo(int x) {
-  return
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-module.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-module.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-module.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-
-#include <DependsOnModule/DependsOnModule.h>
- at import DependsOnModule;
-int glob;
-
-// RUN: rm -rf %t.cache
-// RUN: c-index-test -index-file %s -fmodules-cache-path=%t.cache -fmodules -F %S/../Modules/Inputs \
-// RUN:      -Xclang -fdisable-module-hash | FileCheck %s
-
-// CHECK-NOT: [indexDeclaration]
-// CHECK: [importedASTFile]: [[PCM:.*[/\\]DependsOnModule\.pcm]] | loc: 2:2 | name: "DependsOnModule" | isImplicit: 1
-// CHECK-NEXT: [ppIncludedFile]: {{.*}}/Modules/Inputs/DependsOnModule.framework{{[/\\]}}Headers{{[/\\]}}DependsOnModule.h | name: "DependsOnModule/DependsOnModule.h" | hash loc: 2:1 | isImport: 0 | isAngled: 1 | isModule: 1
-// CHECK-NOT: [indexDeclaration]
-// CHECK: [importedASTFile]: [[PCM]] | loc: 3:1 | name: "DependsOnModule" | isImplicit: 0
-// CHECK-NEXT: [indexDeclaration]: kind: variable | name: glob | {{.*}} | loc: 4:5 
-// CHECK-NOT: [indexDeclaration]
-
-// RUN: c-index-test -index-tu %t.cache/DependsOnModule.pcm | FileCheck %s -check-prefix=CHECK-DMOD
-
-// CHECK-DMOD:      [startedTranslationUnit]
-// CHECK-DMOD-NEXT: [ppIncludedFile]: [[DMOD_MODULE_H:.*/Modules/Inputs/DependsOnModule\.framework[/\\]Headers[/\\]DependsOnModule\.h]] | {{.*}} | hash loc: <invalid>
-// CHECK-DMOD-NEXT: [ppIncludedFile]: {{.*}}/Modules/Inputs/Module.framework{{[/\\]}}Headers{{[/\\]}}Module.h | name: "Module/Module.h" | hash loc: {{.*}}/Modules/Inputs/DependsOnModule.framework{{[/\\]}}Headers{{[/\\]}}DependsOnModule.h:1:1 | isImport: 0 | isAngled: 1 | isModule: 1
-// CHECK-DMOD-NEXT: [ppIncludedFile]: [[DMOD_OTHER_H:.*/Modules/Inputs/DependsOnModule\.framework[/\\]Headers[/\\]other\.h]] | {{.*}} | hash loc: <invalid>
-// CHECK-DMOD-NEXT: [ppIncludedFile]: [[DMOD_SUB_H:.*/Modules/Inputs/DependsOnModule\.framework[/\\]Frameworks[/\\]SubFramework\.framework[/\\]Headers[/\\]SubFramework\.h]] | {{.*}} | hash loc: <invalid>
-// CHECK-DMOD-NEXT: [ppIncludedFile]: [[DMOD_SUB_OTHER_H:.*/Modules/Inputs/DependsOnModule.framework[/\\]Frameworks/SubFramework\.framework/Headers/Other\.h]] | name: "SubFramework/Other.h" | hash loc: [[DMOD_SUB_H]]:1:1 | isImport: 0 | isAngled: 0
-// CHECK-DMOD-NEXT: [ppIncludedFile]: [[DMOD_PRIVATE_H:.*/Modules/Inputs/DependsOnModule.framework[/\\]PrivateHeaders[/\\]DependsOnModulePrivate.h]] | {{.*}} | hash loc: <invalid>
-// CHECK-DMOD-NEXT: [importedASTFile]: {{.*}}.cache{{[/\\]}}Module.pcm | loc: [[DMOD_MODULE_H]]:1:2 | name: "Module" | isImplicit: 1
-// CHECK-DMOD-NEXT: [indexDeclaration]: kind: variable | name: depends_on_module_other | {{.*}} | loc: [[DMOD_OTHER_H]]:1:5
-// CHECK-DMOD-NEXT: [importedASTFile]: {{.*}}.cache/DependsOnModule.pcm | loc: {{.*}}SubFramework.h:1:2 | name: "DependsOnModule.SubFramework.Other" | isImplicit: 1
-// CHECK-DMOD-NEXT: [indexDeclaration]: kind: variable | name: sub_framework | {{.*}} | loc: [[DMOD_SUB_H]]:2:8
-// CHECK-DMOD-NEXT: [indexDeclaration]: kind: variable | name: sub_framework_other | {{.*}} | loc: [[DMOD_SUB_OTHER_H]]:1:9
-// CHECK-DMOD-NEXT: [indexDeclaration]: kind: variable | name: depends_on_module_private | {{.*}} | loc: [[DMOD_PRIVATE_H]]:1:5
-// CHECK-DMOD-NOT: [indexDeclaration]
-
-// RUN: c-index-test -index-tu %t.cache/Module.pcm | FileCheck %s -check-prefix=CHECK-TMOD
-
-// CHECK-TMOD:      [startedTranslationUnit]
-// CHECK-TMOD-NEXT: [ppIncludedFile]: [[TMOD_MODULE_H:.*/Modules/Inputs/Module\.framework[/\\]Headers[/\\]Module\.h]] | {{.*}} | hash loc: <invalid>
-// CHECK-TMOD-NEXT: [ppIncludedFile]: [[TMODHDR:.*/Modules/Inputs/Module.framework[/\\]Headers.]]Sub.h | name: "Module/Sub.h" | hash loc: [[TMOD_MODULE_H]]:23:1 | isImport: 0 | isAngled: 1
-// CHECK-TMOD-NEXT: [ppIncludedFile]: [[TMODHDR]]Sub2.h | name: "Module/Sub2.h" | hash loc: [[TMODHDR]]Sub.h:1:1 | isImport: 0 | isAngled: 1
-// CHECK-TMOD-NEXT: [ppIncludedFile]: [[TMODHDR]]Buried/Treasure.h | name: "Module/Buried/Treasure.h" | hash loc: [[TMOD_MODULE_H]]:24:1 | isImport: 0 | isAngled: 1
-// CHECK-TMOD-NEXT: [ppIncludedFile]: [[TMOD_SUB_H:.*[/\\]Modules[/\\]Inputs[/\\]Module\.framework[/\\]Frameworks[/\\]SubFramework\.framework[/\\]Headers[/\\]SubFramework\.h]] | {{.*}} | hash loc: <invalid>
-// CHECK-TMOD-NEXT: [indexDeclaration]: kind: function | name: getModuleVersion | {{.*}} | loc: [[TMOD_MODULE_H]]:9:13
-// CHECK-TMOD-NEXT: [indexDeclaration]: kind: objc-class | name: Module | {{.*}} | loc: [[TMOD_MODULE_H]]:15:12
-// CHECK-TMOD-NEXT:      <ObjCContainerInfo>: kind: interface
-// CHECK-TMOD-NEXT: [indexDeclaration]: kind: objc-class-method | name: version | {{.*}} | loc: [[TMOD_MODULE_H]]:16:1
-// CHECK-TMOD-NEXT: [indexDeclaration]: kind: objc-class-method | name: alloc | {{.*}} | loc: [[TMOD_MODULE_H]]:17:1
-// CHECK-TMOD-NEXT: [importedASTFile]: [[PCM:.*\.cache/Module\.pcm]] | loc: [[TMOD_MODULE_H]]:23:2 | name: "Module.Sub" | isImplicit: 1
-// CHECK-TMOD-NEXT: [importedASTFile]: [[PCM]] | loc: [[TMOD_MODULE_H]]:24:2 | name: "Module.Buried.Treasure" | isImplicit: 1
-// CHECK-TMOD-NEXT: [importedASTFile]: [[PCM]] | loc: [[TMODHDR]]Sub.h:1:2 | name: "Module.Sub2" | isImplicit: 1
-// CHECK-TMOD-NEXT: [indexDeclaration]: kind: variable | name: Module_Sub | {{.*}} | loc: [[TMODHDR]]Sub.h:2:6
-// CHECK-TMOD-NEXT: [indexDeclaration]: kind: variable | name: Module_Sub2 | USR: c:@Module_Sub2 | {{.*}} | loc: [[TMODHDR]]Sub2.h:1:6
-// CHECK-TMOD-NEXT: [indexDeclaration]: kind: variable | name: Buried_Treasure | {{.*}} | loc: [[TMODHDR]]Buried/Treasure.h:1:11
-// CHECK-TMOD-NEXT: [indexDeclaration]: kind: variable | name: module_subframework | {{.*}} | loc: [[TMOD_SUB_H]]:4:7
-// CHECK-TMOD-NOT: [indexDeclaration]

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-pch-with-module.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-pch-with-module.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-pch-with-module.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-
-#ifndef PCH_HEADER
-#define PCH_HEADER
-
-#include <DependsOnModule/DependsOnModule.h>
-extern int pch_glob;
-
-#else
-
-int glob;
-
-#endif
-
-// RUN: rm -rf %t.cache
-// RUN: c-index-test -write-pch %t.h.pch %s -fmodules-cache-path=%t.cache -fmodules -F %S/../Modules/Inputs -Xclang -fdisable-module-hash
-// RUN: c-index-test -index-file %s -include %t.h -fmodules-cache-path=%t.cache -fmodules -F %S/../Modules/Inputs \
-// RUN:      -Xclang -fdisable-module-hash | FileCheck %s
-
-// CHECK-NOT: [indexDeclaration]
-// CHECK:      [importedASTFile]: {{.*}}.h.pch
-// CHECK-NEXT: [enteredMainFile]: {{.*[/\\]}}index-pch-with-module.m
-// CHECK-NEXT: [startedTranslationUnit]
-// CHECK-NEXT: [indexDeclaration]: kind: variable | name: glob | {{.*}} | loc: 10:5
-// CHECK-NOT: [indexDeclaration]
-
-// RUN: c-index-test -index-tu %t.h.pch | FileCheck %s -check-prefix=CHECK-PCH
-
-// CHECK-PCH: [enteredMainFile]: {{.*[/\\]}}index-pch-with-module.m
-// CHECK-PCH: [startedTranslationUnit]
-// CHECK-PCH: [importedASTFile]: {{.*}}.cache{{[/\\]}}DependsOnModule.pcm | loc: 5:2 | name: "DependsOnModule" | isImplicit: 1
-// CHECK-PCH: [indexDeclaration]: kind: variable | name: pch_glob | {{.*}} | loc: 6:12

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-pch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-pch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-pch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: c-index-test -write-pch %t.pch -fshort-wchar %s
-// RUN: env LIBCLANG_NOTHREADS=1 c-index-test -index-tu %t.pch | FileCheck %s
-
-// CHECK: [indexDeclaration]: kind: variable | name: wideStr
-const wchar_t *wideStr = L"123";
-
-// CHECK: [indexDeclaration]: kind: struct | name: __is_void
-struct __is_void {};

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-refs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-refs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-refs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,121 +0,0 @@
-
-namespace NS {
-  extern int gx;
-  typedef int MyInt;
-}
-
-enum {
-  EnumVal = 1
-};
-
-NS::MyInt NS::gx = EnumVal;
-
-void foo() {
-  NS::MyInt x;
-}
-
-enum {
-  SecondVal = EnumVal
-};
-
-struct S {
-  S& operator++();
-  int operator*();
-  S& operator=(int x);
-  S& operator!=(int x);
-  S& operator()(int x);
-};
-
-void foo2(S &s) {
-  (void)++s;
-  (void)*s;
-  s = 3;
-  (void)(s != 3);
-  s(3);
-}
-
-namespace NS {
-  namespace Inn {}
-  typedef int Foo;
-}
-
-using namespace NS;
-using namespace NS::Inn;
-using NS::Foo;
-
-template <typename T1, typename T2>
-struct TS { };
-
-template <typename T>
-struct TS<T, int> {
-  typedef int MyInt;
-};
-
-void foo3() {
-  TS<int, int> s;
-}
-
-const int array_size = 3;
-typedef int some_arr[array_size];
-
-const int default_param = 3;
-void foo4(int p = default_param);
-
-struct S2 {
-  int x,y;
-};
-
-void foo5() {
-  struct S2 s = { .y = 1, .x = 4};
-}
-
-// RUN: c-index-test -index-file %s | FileCheck %s
-// CHECK:      [indexDeclaration]: kind: namespace | name: NS
-// CHECK-NEXT: [indexDeclaration]: kind: variable | name: gx
-// CHECK-NEXT: [indexDeclaration]: kind: typedef | name: MyInt
-// CHECK-NEXT: [indexDeclaration]: kind: enum
-// CHECK-NEXT: [indexDeclaration]: kind: enumerator | name: EnumVal
-// CHECK-NEXT: [indexDeclaration]: kind: variable | name: gx
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS
-// CHECK-NEXT: [indexEntityReference]: kind: typedef | name: MyInt
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS
-// CHECK-NEXT: [indexEntityReference]: kind: enumerator | name: EnumVal
-// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS
-// CHECK-NEXT: [indexEntityReference]: kind: typedef | name: MyInt
-// CHECK-NEXT: [indexDeclaration]: kind: enum
-// CHECK-NEXT: [indexDeclaration]: kind: enumerator | name: SecondVal
-// CHECK-NEXT: [indexEntityReference]: kind: enumerator | name: EnumVal
-
-// CHECK:      [indexDeclaration]: kind: function | name: foo2
-// CHECK:      [indexEntityReference]: kind: c++-instance-method | name: operator++
-// CHECK-NEXT: [indexEntityReference]: kind: c++-instance-method | name: operator*
-// CHECK-NEXT: [indexEntityReference]: kind: c++-instance-method | name: operator=
-// CHECK-NEXT: [indexEntityReference]: kind: c++-instance-method | name: operator!=
-// CHECK-NEXT: [indexEntityReference]: kind: c++-instance-method | name: operator()
-
-// CHECK:      [indexEntityReference]: kind: namespace | name: NS | {{.*}} | loc: 42:17
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | {{.*}} | loc: 43:17
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: Inn | {{.*}} | loc: 43:21
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS | {{.*}} | loc: 44:7
-// CHECK-NEXT: [indexEntityReference]: kind: typedef | name: Foo | {{.*}} | loc: 44:11
-
-// CHECK:      [indexDeclaration]: kind: c++-class-template | name: TS | {{.*}} | loc: 47:8
-// CHECK-NEXT: [indexDeclaration]: kind: struct-template-partial-spec | name: TS | USR: c:@SP>1#T at TS>#t0.0#I | {{.*}} | loc: 50:8
-// CHECK-NEXT: [indexDeclaration]: kind: typedef | name: MyInt | USR: c:index-refs.cpp at 593@SP>1#T at TS>#t0.0#I at T@MyInt | {{.*}} | loc: 51:15 | semantic-container: [TS:50:8] | lexical-container: [TS:50:8]
-/* when indexing implicit instantiations
-  [indexDeclaration]: kind: struct-template-spec | name: TS | USR: c:@S at TS>#I | {{.*}} | loc: 50:8
-  [indexDeclaration]: kind: typedef | name: MyInt | USR: c:index-refs.cpp at 593@S at TS>#I at T@MyInt | {{.*}} | loc: 51:15 | semantic-container: [TS:50:8] | lexical-container: [TS:50:8]
- */
-// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo3
-/* when indexing implicit instantiations
-  [indexEntityReference]: kind: struct-template-spec | name: TS | USR: c:@S at TS>#I | {{.*}} | loc: 55:3
-*/
-// CHECK-NEXT: [indexEntityReference]: kind: c++-class-template | name: TS | USR: c:@ST>2#T#T at TS | {{.*}} | loc: 55:3
-
-// CHECK:      [indexEntityReference]: kind: variable | name: array_size | {{.*}} | loc: 59:22
-// CHECK:      [indexEntityReference]: kind: variable | name: default_param | {{.*}} | loc: 62:19
-// CHECK-NOT:  [indexEntityReference]: kind: variable | name: default_param | {{.*}} | loc: 62:19
-
-// CHECK:      [indexEntityReference]: kind: field | name: y | {{.*}} | loc: 69:20
-// CHECK-NEXT: [indexEntityReference]: kind: field | name: x | {{.*}} | loc: 69:28

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-refs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-refs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-refs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-
- at class Protocol;
-
- at protocol Prot
- at end
-
-struct FooS {
-  int x;
-};
-
-void foo() {
-  Protocol *p = @protocol(Prot);
-  @encode(struct FooS);
-}
-
- at interface I
-+(void)clsMeth;
- at end
-
-void foo2() {
-  [I clsMeth];
-}
-
-// RUN: c-index-test -index-file %s | FileCheck %s
-// CHECK: [indexEntityReference]: kind: objc-protocol | name: Prot | {{.*}} | loc: 12:27
-// CHECK: [indexEntityReference]: kind: struct | name: FooS | {{.*}} | loc: 13:18
-// CHECK: [indexEntityReference]: kind: objc-class | name: I | {{.*}} | loc: 21:4

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-subscripting-literals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-subscripting-literals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-subscripting-literals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
- at interface NSArray
-- (id)objectAtIndexedSubscript:(int)index;
-+ (id)arrayWithObjects:(id *)objects count:(unsigned)count;
- at end
-
- at interface NSMutableArray : NSArray
-- (id)objectAtIndexedSubscript:(int)index;
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
- at interface NSDictionary
-- (id)objectForKeyedSubscript:(id)key;
-+ (id)dictionaryWithObjects:(id *)objects forKeys:(id *)keys count:(unsigned)count;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at class NSString;
-
-int idx;
-id p;
-
-id testArray() {
-  NSMutableArray *array;
-  array[idx] = p;
-  NSArray *arr = @[ p, p ];
-  return array[idx];
-}
-
-NSString *key;
-id newObject, oldObject;
-
-void testDict() {
-  NSMutableDictionary *dictionary;
-  oldObject = dictionary[key];
-  dictionary[key] = newObject;
-  NSDictionary *dict = @{ key: newObject, key: oldObject };
-}
-
-// RUN: c-index-test -index-file -target x86_64-apple-macosx10.7 %s | FileCheck %s
-
-// CHECK:      [indexEntityReference]: kind: variable | name: idx | USR: c:@idx | lang: C | cursor: DeclRefExpr=idx:22:5 | loc: 27:9
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: p | USR: c:@p | lang: C | cursor: DeclRefExpr=p:23:4 | loc: 27:16 | <parent>:: kind: function | name: testArray | USR: c:@F at testArray | lang: C | container: [testArray:25:4] | refkind: direct
-// CHECK-NEXT: [indexEntityReference]: kind: objc-instance-method | name: setObject:atIndexedSubscript:
-// CHECK-NEXT: [indexEntityReference]: kind: objc-class | name: NSArray
-// CHECK-NEXT: [indexEntityReference]: kind: objc-class-method | name: arrayWithObjects:count: 
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: p | USR: c:@p | lang: C | cursor: DeclRefExpr=p:23:4 | loc: 28:21
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: p | USR: c:@p | lang: C | cursor: DeclRefExpr=p:23:4 | loc: 28:24
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: idx | USR: c:@idx | lang: C | cursor: DeclRefExpr=idx:22:5 | loc: 29:16
-// CHECK-NEXT: [indexEntityReference]: kind: objc-instance-method | name: objectAtIndexedSubscript:
-// CHECK-NEXT: [indexDeclaration]: kind: variable | name: key
-
-// CHECK:      [indexEntityReference]: kind: variable | name: oldObject
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: key | USR: c:@key | lang: C | cursor: DeclRefExpr=key:32:11 | loc: 37:26
-// CHECK-NEXT: [indexEntityReference]: kind: objc-instance-method | name: objectForKeyedSubscript:
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: key | USR: c:@key | lang: C | cursor: DeclRefExpr=key:32:11 | loc: 38:14
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: newObject | USR: c:@newObject | lang: C | cursor: DeclRefExpr=newObject:33:4 | loc: 38:21
-// CHECK-NEXT: [indexEntityReference]: kind: objc-instance-method | name: setObject:forKeyedSubscript:
-// CHECK-NEXT: [indexEntityReference]: kind: objc-class | name: NSDictionary
-// CHECK-NEXT: [indexEntityReference]: kind: objc-class-method | name: dictionaryWithObjects:forKeys:count: 
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: key | USR: c:@key | lang: C | cursor: DeclRefExpr=key:32:11 | loc: 39:27
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: newObject | USR: c:@newObject | lang: C | cursor: DeclRefExpr=newObject:33:4 | loc: 39:32
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: key | USR: c:@key | lang: C | cursor: DeclRefExpr=key:32:11 | loc: 39:43
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: oldObject | USR: c:@oldObject | lang: C | cursor: DeclRefExpr=oldObject:33:15 | loc: 39:48

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-
-#include "index-suppress-refs.hpp"
-
-class Sub : B1, B2 {
-  typedef B1 Base1;
-  typedef B2 Base2;
-};
-
-// RUN: env CINDEXTEST_SUPPRESSREFS=1 c-index-test -index-file %s | FileCheck %s
-// CHECK:      [indexDeclaration]: kind: c++-class | name: Sub
-// CHECK-NOT:  [indexEntityReference]: kind: c++-class | name: B1
-// CHECK-NOT:  [indexEntityReference]: kind: c++-class | name: B2

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-
- at interface I
- at end
-
- at interface B
- at end
-
- at protocol P
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.hpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.hpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.hpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-
-class B1 {};
-class B2 {};

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-suppress-refs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-
-#include "index-suppress-refs.h"
-
-#define TYPEDEF(x) typedef int x
-TYPEDEF(MyInt);
-
-MyInt gx;
-
- at class I;
-
- at interface I(cat)
--(I*)meth;
- at end
-
- at class I;
-
- at interface S : B<P>
--(void)meth:(B*)b :(id<P>)p;
- at end
-
-// RUN: env CINDEXTEST_SUPPRESSREFS=1 c-index-test -index-file %s | FileCheck %s
-// CHECK:      [indexDeclaration]: kind: objc-class | name: I
-// CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
-// CHECK-NEXT: [indexDeclaration]: kind: objc-class | name: B
-// CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
-// CHECK-NEXT: [indexDeclaration]: kind: objc-protocol | name: P
-// CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
-// CHECK-NEXT: [indexDeclaration]: kind: typedef | name: MyInt
-// CHECK-NEXT: [indexDeclaration]: kind: variable | name: gx
-// CHECK-NEXT: [indexDeclaration]: kind: objc-class | name: I
-// CHECK-NEXT:      <ObjCContainerInfo>: kind: forward-ref
-// CHECK-NEXT: [indexDeclaration]: kind: objc-category | name: cat
-// CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
-// CHECK-NEXT:      <ObjCCategoryInfo>: class: kind: objc-class | name: I
-// CHECK-NEXT: [indexDeclaration]: kind: objc-instance-method | name: meth
-// CHECK-NOT:  [indexEntityReference]: kind: objc-class | name: I
-// CHECK-NOT:  [indexDeclaration]: kind: objc-class | name: I
-// CHECK-NEXT: [indexDeclaration]: kind: objc-class | name: S
-// CHECK-NEXT:      <ObjCContainerInfo>: kind: interface
-// CHECK-NEXT:      <base>: kind: objc-class | name: B
-// CHECK-NEXT:      <protocol>: kind: objc-protocol | name: P
-// CHECK-NEXT: [indexDeclaration]: kind: objc-instance-method | name: meth::
-// CHECK-NOT:  [indexEntityReference]: kind: objc-class | name: B
-// CHECK-NOT:  [indexEntityReference]: kind: objc-protocol | name: P

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,207 +0,0 @@
-// Test is line- and column-sensitive. See run lines below.
-
-template<typename T, T Value, template<typename U, U ValU> class X>
-void f(X<T, Value> x);
-
-template<typename T> class allocator;
-
-template<typename T, typename Alloc = allocator<T> >
-class vector {
-  void clear();
-};
-
-template<typename T>
-class vector<T*> { };
-
-struct Z1 { };
-
-template class vector<Z1>;
-
-struct Z2 { };
-
-template<>
-class vector<Z2> {
-  void clear();
-};
-
-template<typename T, typename U>
-struct Y {
-  using typename T::type;
-  using U::operator Z2;
-};
-
-struct Z3 { };
-
-const unsigned OneDimension = 1;
-template<typename T, unsigned Dimensions = OneDimension>
-struct array { };
-
-template<template<typename, unsigned> class DataStructure = array>
-struct storage { };
-
-typedef unsigned Unsigned;
-
-template<typename T, Unsigned Value>
-struct value_c;
-
-template class vector<int*>;
-
-struct Z4 {
-  template<typename T> T getAs();
-};
-
-void template_exprs() {
-  f<Unsigned, OneDimension, array>(array<Unsigned, OneDimension>());
-  Z4().getAs<Unsigned>();
-}
-
-template<typename T> void swap(T&, T&);
-template<typename T, typename U> void swap(Y<T, U>&, Y<T, U>&);
-void swap(Z4&, Z4&);
-
-struct Z5 {
-  int f(int);
-  float f(float);
-};
-
-template<typename T>
-void unresolved_exprs(T &x) {
-  swap(x, x);
-  Z5 z5;
-  z5.f(x);
-  swap<T>(x, x);
-}
-
-template<typename T, typename U>
-struct Pair {
-  T first;
-  U second;
-};
-
-template<typename T, typename U>
-void init_list(T t, U u) {
-  typedef U second_type;
-
-  Pair<T, U> p = { t, second_type(u) };
-}
-
-template<typename T>
-struct compare { };
-
-template<typename Key, typename Value, 
-         typename Comparison = compare<Pair<Key, Value> >,
-         typename Allocator = allocator<Pair<Key, Value> > >
-struct map;
-
-void f(map<Z4, Pair<int, Z4> >);
-
-template class Pair<int, int>;
-
-template<typename T, typename U>
-struct SuperPair : Pair<int, int>, Pair<T, U> { };
-
-// RUN: c-index-test -test-load-source all -fno-delayed-template-parsing %s | FileCheck -check-prefix=CHECK-LOAD %s
-// CHECK-LOAD: index-templates.cpp:4:6: FunctionTemplate=f:4:6 Extent=[3:1 - 4:22]
-// CHECK-LOAD: index-templates.cpp:3:19: TemplateTypeParameter=T:3:19 (Definition) Extent=[3:10 - 3:20]
-// CHECK-LOAD: index-templates.cpp:3:24: NonTypeTemplateParameter=Value:3:24 (Definition) Extent=[3:22 - 3:29]
-// FIXME: Need the template type parameter here
-// CHECK-LOAD: index-templates.cpp:3:66: TemplateTemplateParameter=X:3:66 (Definition) Extent=[3:31 - 3:67]
-// CHECK-LOAD: index-templates.cpp:4:20: ParmDecl=x:4:20 (Definition) Extent=[4:8 - 4:21]
-// CHECK-LOAD: index-templates.cpp:4:8: TemplateRef=X:3:66 Extent=[4:8 - 4:9]
-// FIXME: Need the template type parameter here
-// CHECK-LOAD: index-templates.cpp:4:13: DeclRefExpr=Value:3:24 Extent=[4:13 - 4:18]
-// CHECK-LOAD: index-templates.cpp:6:28: ClassTemplate=allocator:6:28 Extent=[6:1 - 6:37]
-// CHECK-LOAD: index-templates.cpp:6:19: TemplateTypeParameter=T:6:19 (Definition) Extent=[6:10 - 6:20]
-// CHECK-LOAD: index-templates.cpp:9:7: ClassTemplate=vector:9:7 (Definition) Extent=[8:1 - 11:2]
-// CHECK-LOAD: index-templates.cpp:8:19: TemplateTypeParameter=T:8:19 (Definition) Extent=[8:10 - 8:20]
-// CHECK-LOAD: index-templates.cpp:8:31: TemplateTypeParameter=Alloc:8:31 (Definition) Extent=[8:22 - 8:51]
-// CHECK-LOAD: index-templates.cpp:8:39: TemplateRef=allocator:6:28 Extent=[8:39 - 8:48]
-// CHECK-LOAD: index-templates.cpp:10:8: CXXMethod=clear:10:8 Extent=[10:3 - 10:15]
-// CHECK-LOAD: index-templates.cpp:14:7: ClassTemplatePartialSpecialization=vector:14:7 (Definition) [Specialization of vector:9:7] Extent=[13:1 - 14:21]
-// CHECK-LOAD: index-templates.cpp:13:19: TemplateTypeParameter=T:13:19 (Definition) Extent=[13:10 - 13:20]
-// CHECK-LOAD: index-templates.cpp:16:8: StructDecl=Z1:16:8 (Definition) Extent=[16:1 - 16:14]
-// CHECK-LOAD: index-templates.cpp:18:16: ClassDecl=vector:18:16 (Definition) [Specialization of vector:9:7] Extent=[18:1 - 18:26]
-// CHECK-LOAD: index-templates.cpp:18:23: TypeRef=struct Z1:16:8 Extent=[18:23 - 18:25]
-// CHECK-LOAD-NOT: CXXMethod=clear
-// CHECK-LOAD: index-templates.cpp:20:8: StructDecl=Z2:20:8 (Definition) Extent=[20:1 - 20:14]
-// CHECK-LOAD: index-templates.cpp:23:7: ClassDecl=vector:23:7 (Definition) [Specialization of vector:9:7] Extent=[22:1 - 25:2]
-// CHECK-LOAD: index-templates.cpp:23:14: TypeRef=struct Z2:20:8 Extent=[23:14 - 23:16]
-// CHECK-LOAD: index-templates.cpp:24:8: CXXMethod=clear:24:8 Extent=[24:3 - 24:15]
-// CHECK-LOAD: index-templates.cpp:28:8: ClassTemplate=Y:28:8 (Definition) Extent=[27:1 - 31:2]
-// CHECK-LOAD: index-templates.cpp:27:19: TemplateTypeParameter=T:27:19 (Definition) Extent=[27:10 - 27:20]
-// CHECK-LOAD: index-templates.cpp:27:31: TemplateTypeParameter=U:27:31 (Definition) Extent=[27:22 - 27:32]
-// CHECK-LOAD: index-templates.cpp:29:21: UsingDeclaration=type:29:21 Extent=[29:3 - 29:25]
-// CHECK-LOAD: index-templates.cpp:30:12: UsingDeclaration=operator Z2:30:12 Extent=[30:3 - 30:23]
-// CHECK-LOAD: index-templates.cpp:30:21: TypeRef=struct Z2:20:8 Extent=[30:21 - 30:23]
-// CHECK-LOAD: index-templates.cpp:35:16: VarDecl=OneDimension:35:16 (Definition) Extent=[35:1 - 35:32]
-// CHECK-LOAD: index-templates.cpp:35:31: UnexposedExpr= Extent=[35:31 - 35:32]
-// CHECK-LOAD: index-templates.cpp:35:31: IntegerLiteral= Extent=[35:31 - 35:32]
-// CHECK-LOAD: index-templates.cpp:37:8: ClassTemplate=array:37:8 (Definition) Extent=[36:1 - 37:17]
-// CHECK-LOAD: index-templates.cpp:36:19: TemplateTypeParameter=T:36:19 (Definition) Extent=[36:10 - 36:20]
-// CHECK-LOAD: index-templates.cpp:36:31: NonTypeTemplateParameter=Dimensions:36:31 (Definition) Extent=[36:22 - 36:56]
-// CHECK-LOAD: index-templates.cpp:36:44: DeclRefExpr=OneDimension:35:16 Extent=[36:44 - 36:56]
-// CHECK-LOAD: index-templates.cpp:40:8: ClassTemplate=storage:40:8 (Definition) Extent=[39:1 - 40:19]
-// CHECK-LOAD: index-templates.cpp:39:45: TemplateTemplateParameter=DataStructure:39:45 (Definition) Extent=[39:10 - 39:66]
-// CHECK-LOAD: index-templates.cpp:39:19: TemplateTypeParameter=:39:19 (Definition) Extent=[39:19 - 39:27]
-// CHECK-LOAD: index-templates.cpp:39:37: NonTypeTemplateParameter=:39:37 (Definition) Extent=[39:29 - 39:38]
-// CHECK-LOAD: index-templates.cpp:39:61: TemplateRef=array:37:8 Extent=[39:61 - 39:66]
-// CHECK-LOAD: index-templates.cpp:42:18: TypedefDecl=Unsigned:42:18 (Definition) Extent=[42:1 - 42:26]
-// CHECK-LOAD: index-templates.cpp:45:8: ClassTemplate=value_c:45:8 Extent=[44:1 - 45:15]
-// CHECK-LOAD: index-templates.cpp:44:19: TemplateTypeParameter=T:44:19 (Definition) Extent=[44:10 - 44:20]
-// CHECK-LOAD: index-templates.cpp:44:31: NonTypeTemplateParameter=Value:44:31 (Definition) Extent=[44:22 - 44:36]
-// CHECK-LOAD: index-templates.cpp:44:22: TypeRef=Unsigned:42:18 Extent=[44:22 - 44:30]
-// CHECK-LOAD: index-templates.cpp:47:16: ClassDecl=vector:47:16 (Definition) [Specialization of vector:14:7] Extent=[47:1 - 47:28]
-// CHECK-LOAD: index-templates.cpp:49:8: StructDecl=Z4:49:8 (Definition) Extent=[49:1 - 51:2]
-// CHECK-LOAD: index-templates.cpp:50:26: FunctionTemplate=getAs:50:26 Extent=[50:3 - 50:33]
-// CHECK-LOAD: index-templates.cpp:50:21: TemplateTypeParameter=T:50:21 (Definition) Extent=[50:12 - 50:22]
-// CHECK-LOAD: index-templates.cpp:53:6: FunctionDecl=template_exprs:53:6 (Definition)
-// CHECK-LOAD: index-templates.cpp:54:3: CallExpr=f:4:6 Extent=[54:3 - 54:68]
-// CHECK-LOAD: index-templates.cpp:54:3: UnexposedExpr=f:4:6 Extent=[54:3 - 54:35]
-// CHECK-LOAD: index-templates.cpp:54:3: DeclRefExpr=f:4:6 RefName=[54:3 - 54:4] RefName=[54:4 - 54:35] Extent=[54:3 - 54:35]
-// CHECK-LOAD: index-templates.cpp:54:5: TypeRef=Unsigned:42:18 Extent=[54:5 - 54:13]
-// CHECK-LOAD: index-templates.cpp:54:15: DeclRefExpr=OneDimension:35:16 Extent=[54:15 - 54:27]
-// CHECK-LOAD: index-templates.cpp:54:29: TemplateRef=array:37:8 Extent=[54:29 - 54:34]
-// CHECK-LOAD: index-templates.cpp:55:8: MemberRefExpr=getAs:50:26 SingleRefName=[55:8 - 55:13] RefName=[55:8 - 55:13] Extent=[55:3 - 55:23]
-// CHECK-LOAD: index-templates.cpp:55:3: CallExpr=Z4:49:8 Extent=[55:3 - 55:7]
-// CHECK-LOAD: index-templates.cpp:55:14: TypeRef=Unsigned:42:18 Extent=[55:14 - 55:22]
-// CHECK-LOAD: index-templates.cpp:68:6: FunctionTemplate=unresolved_exprs:68:6 (Definition)
-// CHECK-LOAD: index-templates.cpp:69:3: OverloadedDeclRef=swap[60:6, 59:39, 58:27]
-// CHECK-LOAD: index-templates.cpp:71:6: OverloadedDeclRef=f[63:7, 64:9]
-// CHECK-LOAD: index-templates.cpp:72:3: OverloadedDeclRef=swap[58:27, 59:39]
-// CHECK-LOAD: index-templates.cpp:82:6: FunctionTemplate=init_list:82:6 (Definition)
-// CHECK-LOAD: index-templates.cpp:85:14: VarDecl=p:85:14 (Definition)
-// CHECK-LOAD: index-templates.cpp:85:20: DeclRefExpr=t:82:18 Extent=[85:20 - 85:21]
-// CHECK-LOAD: index-templates.cpp:85:23: TypeRef=second_type:83:13 Extent=[85:23 - 85:34]
-// CHECK-LOAD: index-templates.cpp:85:35: DeclRefExpr=u:82:23 Extent=[85:35 - 85:36]
-// CHECK-LOAD: index-templates.cpp:101:8: ClassTemplate=SuperPair:101:8 (Definition) Extent=[100:1 - 101:50]
-// CHECK-LOAD: index-templates.cpp:100:19: TemplateTypeParameter=T:100:19 (Definition) Extent=[100:10 - 100:20]
-// CHECK-LOAD: index-templates.cpp:100:31: TemplateTypeParameter=U:100:31 (Definition) Extent=[100:22 - 100:32]
-// CHECK-LOAD: index-templates.cpp:101:20: C++ base class specifier=Pair<int, int>:98:16 [access=public isVirtual=false] Extent=[101:20 - 101:34]
-// CHECK-LOAD: index-templates.cpp:101:36: C++ base class specifier=Pair<T, U>:76:8 [access=public isVirtual=false] Extent=[101:36 - 101:46]
-
-
-// RUN: c-index-test -test-load-source-usrs all -fno-delayed-template-parsing %s | FileCheck -check-prefix=CHECK-USRS %s
-// CHECK-USRS: index-templates.cpp c:@FT@>3#T#Nt0.0#t>2#T#Nt1.0f#>t0.22S0_# Extent=[3:1 - 4:22]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 70 Extent=[3:10 - 3:20]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 82 Extent=[3:22 - 3:29]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 91 Extent=[3:31 - 3:67]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 136@FT@>3#T#Nt0.0#t>2#T#Nt1.0f#>t0.22S0_#@x Extent=[4:8 - 4:21]
-// CHECK-USRS: index-templates.cpp c:@CT>1#T at allocator Extent=[6:1 - 6:37]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 162 Extent=[6:10 - 6:20]
-// CHECK-USRS: index-templates.cpp c:@CT>2#T#T at vector Extent=[8:1 - 11:2]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 201 Extent=[8:10 - 8:20]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 213 Extent=[8:22 - 8:51]
-// CHECK-USRS: index-templates.cpp c:@CT>2#T#T at vector@F at clear# Extent=[10:3 - 10:15]
-// CHECK-USRS: index-templates.cpp c:@CP>1#T at vector>#*t0.0#>@CT>1#T at allocator1S0_ Extent=[13:1 - 14:21]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 289 Extent=[13:10 - 13:20]
-// CHECK-USRS: index-templates.cpp c:@S at Z1 Extent=[16:1 - 16:14]
-// CHECK-USRS: index-templates.cpp c:@C at vector>#$@S at Z1#$@C at allocator>#S0_ Extent=[18:1 - 18:26]
-// CHECK-USRS: index-templates.cpp c:@S at Z2 Extent=[20:1 - 20:14]
-// CHECK-USRS: index-templates.cpp c:@C at vector>#$@S at Z2#$@C at allocator>#S0_ Extent=[22:1 - 25:2]
-// CHECK-USRS: index-templates.cpp c:@C at vector>#$@S at Z2#$@C at allocator>#S0_ at F@clear# Extent=[24:3 - 24:15]
-// CHECK-USRS: index-templates.cpp c:@ST>2#T#T at Y Extent=[27:1 - 31:2]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 443 Extent=[27:10 - 27:20]
-// CHECK-USRS: index-templates.cpp c:index-templates.cpp at 455 Extent=[27:22 - 27:32]
-// CHECK-USRS-NOT: type
-// CHECK-USRS: index-templates.cpp c:@S at Z3 Extent=[33:1 - 33:14]
-// CHECK-USRS: index-templates.cpp c:@F at f#$@S at map>#$@S at Z4#$@S at Pair>#I#S1_#$@S at compare>#$@S at Pair>#S1_#S2_#$@C at allocator>#S4_#

Modified: trunk/contrib/llvm/tools/clang/test/Index/index-with-working-dir.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/index-with-working-dir.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/index-with-working-dir.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-
-void foo();
-
-// RUN: c-index-test -index-file -working-directory=%S %s | FileCheck %s
-// CHECK: [indexDeclaration]: kind: function | name: foo

Modified: trunk/contrib/llvm/tools/clang/test/Index/initializer-memory.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/initializer-memory.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/initializer-memory.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: c-index-test -test-load-source-memory-usage none %s 2>&1 | FileCheck %s
-
-// rdar://9275920 - We would create millions of Exprs to fill out the initializer.
-
-double data[1000000] = {0};
-double data_empty_init[1000000] = {};
-
-struct S {
- S(int);
- S();
-};
-
-S data2[1000000] = {0};
-S data_empty_init2[1000000] = {};
-
-// CHECK: TOTAL = {{.*}} (0.{{.*}} MBytes)

Modified: trunk/contrib/llvm/tools/clang/test/Index/invalid-code-rdar10451854.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/invalid-code-rdar10451854.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/invalid-code-rdar10451854.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-struct {
-
- at implementation Foo
-
-- (void)finalize {
-  NSLog(@"bar");
-}
-
-- (NSArray *)graphics {
-}
-
- at end
-
-// Test that we don't crash
-// RUN: c-index-test -test-load-source-reparse 3 local %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/invalid-code-rdar_7833619.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/invalid-code-rdar_7833619.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/invalid-code-rdar_7833619.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: c-index-test -test-load-source all %s
-// All we care about in this test is that it doesn't crash.
-typedef r7833619_a (*r7833619_b)(r7833619_c *r7833619_d, r7833619_c *r7833619_e);
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/invalid-rdar-8236270.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/invalid-rdar-8236270.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/invalid-rdar-8236270.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-
-// This test case previously just crashed the frontend.
-
-struct abc *P;
-int main(
-
-// CHECK: StructDecl=abc:5:8 Extent=[5:1 - 5:11]
-// CHECK: VarDecl=P:5:13 (Definition) Extent=[5:1 - 5:14]
-// CHECK: VarDecl=main:6:5 (Definition) Extent=[6:1 - 6:9]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/linkage.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/linkage.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/linkage.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: c-index-test -test-print-linkage-source %s | FileCheck %s
-
-enum Baz { Qux = 0 };
-int x;
-void foo();
-static int w;
-void bar(int y) {
-  static int z;
-  int k;
-}
-extern int n;
-static int wibble(int);
-
-void ena(int (*dio)(int tria));
-
-static int test2;
-void f16(void) {
-  extern int test2;
-}
-
-
-// CHECK: EnumDecl=Baz:3:6 (Definition)linkage=External
-// CHECK: EnumConstantDecl=Qux:3:12 (Definition)linkage=External
-// CHECK: VarDecl=x:4:5linkage=External
-// CHECK: FunctionDecl=foo:5:6linkage=External
-// CHECK: VarDecl=w:6:12linkage=Internal
-// CHECK: FunctionDecl=bar:7:6 (Definition)linkage=External
-// CHECK: ParmDecl=y:7:14 (Definition)linkage=NoLinkage
-// CHECK: VarDecl=z:8:14 (Definition)linkage=NoLinkage
-// CHECK: VarDecl=k:9:7 (Definition)linkage=NoLinkage
-// CHECK: VarDecl=n:11:12linkage=External
-// CHECK: FunctionDecl=wibble:12:12linkage=Internal
-// CHECK: ParmDecl=:12:22 (Definition)linkage=NoLinkage
-// CHECK: FunctionDecl=ena:14:6linkage=External
-// CHECK: ParmDecl=dio:14:16 (Definition)linkage=NoLinkage
-// CHECK: ParmDecl=tria:14:25 (Definition)linkage=NoLinkage
-// CHECK: VarDecl=test2{{.*}}linkage=Internal
-// CHECK: VarDecl=test2{{.*}}linkage=Internal

Modified: trunk/contrib/llvm/tools/clang/test/Index/load-classes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/load-classes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/load-classes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// Test is line- and column-sensitive; see below.
-
-struct X {
-  X(int value);
-  X(const X& x);
-protected:
-  ~X();
-private:
-  operator X*();
-};
-
-X::X(int value) {
-}
-
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-// CHECK: load-classes.cpp:3:8: StructDecl=X:3:8 (Definition) Extent=[3:1 - 10:2]
-// CHECK: load-classes.cpp:4:3: CXXConstructor=X:4:3 Extent=[4:3 - 4:15] [access=public]
-// FIXME: missing TypeRef in the constructor name
-// CHECK: load-classes.cpp:4:9: ParmDecl=value:4:9 (Definition) Extent=[4:5 - 4:14]
-// CHECK: load-classes.cpp:5:3: CXXConstructor=X:5:3 Extent=[5:3 - 5:16] [access=public]
-// FIXME: missing TypeRef in the constructor name
-// CHECK: load-classes.cpp:5:14: ParmDecl=x:5:14 (Definition) Extent=[5:5 - 5:15]
-// CHECK: load-classes.cpp:5:11: TypeRef=struct X:3:8 Extent=[5:11 - 5:12]
-// CHECK: load-classes.cpp:7:3: CXXDestructor=~X:7:3 Extent=[7:3 - 7:7] [access=protected]
-// FIXME: missing TypeRef in the destructor name
-// CHECK: load-classes.cpp:9:3: CXXConversion=operator struct X *:9:3 Extent=[9:3 - 9:16] [access=private]
-// CHECK: load-classes.cpp:9:12: TypeRef=struct X:3:8 Extent=[9:12 - 9:13]
-// CHECK: load-classes.cpp:12:4: CXXConstructor=X:12:4 (Definition) Extent=[12:1 - 13:2] [access=public]
-// CHECK: load-classes.cpp:12:1: TypeRef=struct X:3:8 Extent=[12:1 - 12:2]
-// CHECK: load-classes.cpp:12:10: ParmDecl=value:12:10 (Definition) Extent=[12:6 - 12:15]

Modified: trunk/contrib/llvm/tools/clang/test/Index/load-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/load-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/load-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-enum Color {
-  Red,
-  Green,
-  Blue,
-
-  Rouge = Red
-};
-
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-// CHECK: load-decls.c:1:6: EnumDecl=Color:1:6 (Definition) Extent=[1:1 - 7:2]
-// CHECK: load-decls.c:2:3: EnumConstantDecl=Red:2:3 (Definition) Extent=[2:3 - 2:6]
-// CHECK: load-decls.c:3:3: EnumConstantDecl=Green:3:3 (Definition) Extent=[3:3 - 3:8]
-// CHECK: load-decls.c:4:3: EnumConstantDecl=Blue:4:3 (Definition) Extent=[4:3 - 4:7]
-// CHECK: load-decls.c:6:3: EnumConstantDecl=Rouge:6:3 (Definition) Extent=[6:3 - 6:14]
-// CHECK: load-decls.c:6:11: DeclRefExpr=Red:2:3 Extent=[6:11 - 6:14]

Modified: trunk/contrib/llvm/tools/clang/test/Index/load-exprs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/load-exprs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/load-exprs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-typedef int T;
-struct X { int a, b; };
-void f(void *ptr) {
-  T* t_ptr = (T *)ptr;
-  (void)sizeof(T);
-  struct X x = (struct X){1, 2};
-  void *xx = ptr ? : &x;
-}
-
-int test_blocks(int x) {
-  __block int y = x;
-  ^{
-     static int z = 0;
-     y = (++z) + x;
-     ^{
-       ++z;
-       ++y;
-     }();
-   }();
-  return y;
-}
-
-struct Y {
-  struct X array[3];
-};
-
-enum { StartIndex = 1 };
-
-void test_members(int aval, int bval) {
-  struct Y y0 = { .array[StartIndex].b = bval, .array[StartIndex].a = aval };
-  __builtin_offsetof(struct Y, array[StartIndex].b);
-}
-
-// RUN: c-index-test -test-load-source all %s -fblocks | FileCheck %s
-// CHECK: macro definition=__clang__
-// CHECK: load-exprs.c:1:13: TypedefDecl=T:1:13 (Definition) Extent=[1:1 - 1:14]
-// CHECK: load-exprs.c:2:8: StructDecl=X:2:8 (Definition) Extent=[2:1 - 2:23]
-// CHECK: load-exprs.c:2:16: FieldDecl=a:2:16 (Definition) Extent=[2:12 - 2:17]
-// CHECK: load-exprs.c:2:19: FieldDecl=b:2:19 (Definition) Extent=[2:12 - 2:20]
-// CHECK: load-exprs.c:3:6: FunctionDecl=f:3:6 (Definition) Extent=[3:1 - 8:2]
-// CHECK: load-exprs.c:3:14: ParmDecl=ptr:3:14 (Definition) Extent=[3:8 - 3:17]
-// CHECK: load-exprs.c:4:6: VarDecl=t_ptr:4:6 (Definition) Extent=[4:3 - 4:22]
-// CHECK: load-exprs.c:4:3: TypeRef=T:1:13 Extent=[4:3 - 4:4]
-// CHECK: load-exprs.c:4:15: TypeRef=T:1:13 Extent=[4:15 - 4:16]
-// CHECK: load-exprs.c:4:19: DeclRefExpr=ptr:3:14 Extent=[4:19 - 4:22]
-// CHECK: load-exprs.c:5:16: TypeRef=T:1:13 Extent=[5:16 - 5:17]
-// CHECK: load-exprs.c:6:12: VarDecl=x:6:12 (Definition) Extent=[6:3 - 6:32]
-// CHECK: load-exprs.c:6:10: TypeRef=struct X:2:8 Extent=[6:10 - 6:11]
-// CHECK: load-exprs.c:6:24: TypeRef=struct X:2:8 Extent=[6:24 - 6:25]
-// CHECK: load-exprs.c:7:9: VarDecl=xx:7:9 (Definition) Extent=[7:3 - 7:24]
-// CHECK: load-exprs.c:7:14: DeclRefExpr=ptr:3:14 Extent=[7:14 - 7:17]
-// CHECK: load-exprs.c:7:23: DeclRefExpr=x:6:12 Extent=[7:23 - 7:24]
-// CHECK: load-exprs.c:10:5: FunctionDecl=test_blocks:10:5 (Definition) Extent=[10:1 - 21:2]
-// CHECK: load-exprs.c:10:21: ParmDecl=x:10:21 (Definition) Extent=[10:17 - 10:22]
-// CHECK: load-exprs.c:11:15: VarDecl=y:11:15 (Definition) Extent=[11:3 - 11:20]
-// CHECK: load-exprs.c:11:19: DeclRefExpr=x:10:21 Extent=[11:19 - 11:20]
-// CHECK: load-exprs.c:12:3: CallExpr= Extent=[12:3 - 19:7]
-// CHECK: load-exprs.c:13:17: VarDecl=z:13:17 (Definition) Extent=[13:6 - 13:22]
-// CHECK: load-exprs.c:14:6: DeclRefExpr=y:11:15 Extent=[14:6 - 14:7]
-// CHECK: load-exprs.c:14:13: DeclRefExpr=z:13:17 Extent=[14:13 - 14:14]
-// CHECK: load-exprs.c:14:18: DeclRefExpr=x:10:21 Extent=[14:18 - 14:19]
-// CHECK: load-exprs.c:15:6: CallExpr= Extent=[15:6 - 18:9]
-// CHECK: load-exprs.c:16:10: DeclRefExpr=z:13:17 Extent=[16:10 - 16:11]
-// CHECK: load-exprs.c:17:10: DeclRefExpr=y:11:15 Extent=[17:10 - 17:11]
-// CHECK: load-exprs.c:20:10: DeclRefExpr=y:11:15 Extent=[20:10 - 20:11]
-// CHECK: load-exprs.c:29:6: FunctionDecl=test_members:29:6 (Definition)
-// CHECK: load-exprs.c:30:12: VarDecl=y0:30:12 (Definition) Extent=[30:3 - 30:77]
-// CHECK: load-exprs.c:30:10: TypeRef=struct Y:23:8 Extent=[30:10 - 30:11]
-// CHECK: load-exprs.c:30:20: MemberRef=array:24:12 Extent=[30:20 - 30:25]
-// CHECK: load-exprs.c:30:26: DeclRefExpr=StartIndex:27:8 Extent=[30:26 - 30:36]
-// CHECK: load-exprs.c:30:38: MemberRef=b:2:19 Extent=[30:38 - 30:39]
-// CHECK: load-exprs.c:30:42: DeclRefExpr=bval:29:33 Extent=[30:42 - 30:46]
-// CHECK: load-exprs.c:30:49: MemberRef=array:24:12 Extent=[30:49 - 30:54]
-// CHECK: load-exprs.c:30:55: DeclRefExpr=StartIndex:27:8 Extent=[30:55 - 30:65]
-// CHECK: load-exprs.c:30:67: MemberRef=a:2:16 Extent=[30:67 - 30:68]
-// CHECK: load-exprs.c:30:71: DeclRefExpr=aval:29:23 Extent=[30:71 - 30:75]
-// CHECK: load-exprs.c:31:29: TypeRef=struct Y:23:8 Extent=[31:29 - 31:30]
-// CHECK: load-exprs.c:31:32: MemberRef=array:24:12 Extent=[31:32 - 31:37]
-// CHECK: load-exprs.c:31:38: DeclRefExpr=StartIndex:27:8 Extent=[31:38 - 31:48]
-// CHECK: load-exprs.c:31:50: MemberRef=b:2:19 Extent=[31:50 - 31:51]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/load-namespaces.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/load-namespaces.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/load-namespaces.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// Test is line- and column-sensitive; see below.
-
-namespace std {
-  namespace rel_ops {
-    void f();
-  }
-}
-
-namespace std {
-  void g();
-}
-
-namespace std98 = std;
-namespace std0x = std98;
-
-using namespace std0x;
-
-namespace std {
-  int g(int);
-}
-
-using std::g;
-
-void std::g() {
-}
-
-namespace my_rel_ops = std::rel_ops;
-
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-// CHECK: load-namespaces.cpp:3:11: Namespace=std:3:11 (Definition) Extent=[3:1 - 7:2]
-// CHECK: load-namespaces.cpp:4:13: Namespace=rel_ops:4:13 (Definition) Extent=[4:3 - 6:4]
-// CHECK: load-namespaces.cpp:5:10: FunctionDecl=f:5:10 Extent=[5:5 - 5:13]
-// CHECK: load-namespaces.cpp:9:11: Namespace=std:9:11 (Definition) Extent=[9:1 - 11:2]
-// CHECK: load-namespaces.cpp:10:8: FunctionDecl=g:10:8 Extent=[10:3 - 10:11]
-// CHECK: load-namespaces.cpp:13:11: NamespaceAlias=std98:13:11 Extent=[13:1 - 13:22]
-// CHECK: load-namespaces.cpp:13:19: NamespaceRef=std:3:11 Extent=[13:19 - 13:22]
-// CHECK: load-namespaces.cpp:14:11: NamespaceAlias=std0x:14:11 Extent=[14:1 - 14:24]
-// CHECK: load-namespaces.cpp:14:19: NamespaceRef=std98:13:11 Extent=[14:19 - 14:24]
-// CHECK: load-namespaces.cpp:16:17: UsingDirective=:16:17 Extent=[16:1 - 16:22]
-// CHECK: load-namespaces.cpp:16:17: NamespaceRef=std0x:14:11 Extent=[16:17 - 16:22]
-// CHECK: load-namespaces.cpp:18:11: Namespace=std:18:11 (Definition) Extent=[18:1 - 20:2]
-// CHECK: load-namespaces.cpp:19:7: FunctionDecl=g:19:7 Extent=[19:3 - 19:13]
-// CHECK: load-namespaces.cpp:19:12: ParmDecl=:19:12 (Definition) Extent=[19:9 - 19:13]
-// CHECK: load-namespaces.cpp:22:12: UsingDeclaration=g[19:7, 10:8] Extent=[22:1 - 22:13]
-// CHECK: load-namespaces.cpp:22:7: NamespaceRef=std:18:11 Extent=[22:7 - 22:10]
-// CHECK: load-namespaces.cpp:24:11: FunctionDecl=g:24:11 (Definition) Extent=[24:1 - 25:2]
-// CHECK: load-namespaces.cpp:24:6: NamespaceRef=std:18:11 Extent=[24:6 - 24:9]
-// CHECK: load-namespaces.cpp:27:11: NamespaceAlias=my_rel_ops:27:11 Extent=[27:1 - 27:36]
-// CHECK: load-namespaces.cpp:27:24: NamespaceRef=std:18:11 Extent=[27:24 - 27:27]
-// CHECK: load-namespaces.cpp:27:29: NamespaceRef=rel_ops:4:13 Extent=[27:29 - 27:36]

Modified: trunk/contrib/llvm/tools/clang/test/Index/load-stmts.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/load-stmts.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/load-stmts.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,231 +0,0 @@
-typedef int T;
-struct X { int a, b; };
-void f(int x) {
-  for (T y = x; T z = x; ++x) {
-  }
-  if (T *z2 = &x) { }
-  while (T *z3 = &x) { }
-  switch (T z4 = x) {
-  case 17: break;
-  }
-}
-
-// Test handling of C++ base specifiers.
-class A {
-  void doA();
-};
-
-class B {
-  void doB();
-};
-
-class C : public A, private B {
-  void doC();
-};
-
-class D : virtual public C, virtual private A {};
-
-namespace std {
-  class type_info { };
-}
-
-void test_exprs(C *c) {
-  int typeid_marker;
-  typeid(C);
-  typeid(c);
-  typedef int Integer;
-  Integer *int_ptr;
-  int_ptr->Integer::~Integer();
-}
-
-namespace N {
-  int f(int);
-  float f(float);
-
-  template<typename T> T g(T);
-  template<typename T> T g(T*);
-}
-
-template<typename T>
-void test_dependent_exprs(T t) {
-  N::f(t);
-  typedef T type;
-  N::g<type>(t);
-  type::template f<type*>(t);
-  t->type::template f<type*>();
-}
-
-struct Y {
-  int f(int);
-  float f(float);
-
-  template<typename T> T g(T);
-  template<typename T> T g(T*);
-};
-
-template<typename T>
-void test_more_dependent_exprs(T t, Y y) {
-  y.Y::f(t);
-  typedef T type;
-  y.g<type>(t);
-}
-
-struct Pair {
-  Pair(int, int);
-};
-
-void *operator new(__SIZE_TYPE__, void*) throw();
-
-void test_more_exprs(void *mem, int i, int j) {
-  new (mem) Pair(i, j);
-  typedef int Integer;
-  (void)Integer(i);
-  (Integer)i;
-  Integer();
-}
-
-template<typename T>
-void test_even_more_dependent_exprs(T t, Y y) {
-  typedef T type;
-  (void)type(t, y);
-  (void)__has_nothrow_assign(type);
-}
-
-struct Base {
-  Base(int);
-};
-
-struct Derived : public Base {
-  Derived(int x);
-  int member;
-};
-
-Derived::Derived(int x) 
-  : member(x), Base(x) {
-}
-
-void considered_harmful(int x) {
- start_over:
-  void *ptr = &&start_over;
-  if (x > 17)
-    goto *ptr;
-  else
-    goto start_over;
-}
-
-void casts(int *ip) {
-  (void)reinterpret_cast<float *>(ip);
-}
-
-// RUN: c-index-test -test-load-source all -fno-delayed-template-parsing %s | FileCheck %s
-// CHECK: load-stmts.cpp:1:13: TypedefDecl=T:1:13 (Definition) Extent=[1:1 - 1:14]
-// CHECK: load-stmts.cpp:2:8: StructDecl=X:2:8 (Definition) Extent=[2:1 - 2:23]
-// CHECK: load-stmts.cpp:2:16: FieldDecl=a:2:16 (Definition) Extent=[2:12 - 2:17]
-// CHECK: load-stmts.cpp:2:19: FieldDecl=b:2:19 (Definition) Extent=[2:12 - 2:20]
-// CHECK: load-stmts.cpp:3:6: FunctionDecl=f:3:6 (Definition) Extent=[3:1 - 11:2]
-// CHECK: load-stmts.cpp:3:12: ParmDecl=x:3:12 (Definition) Extent=[3:8 - 3:13]
-// CHECK: load-stmts.cpp:4:10: VarDecl=y:4:10 (Definition) Extent=[4:8 - 4:15]
-// CHECK: load-stmts.cpp:4:8: TypeRef=T:1:13 Extent=[4:8 - 4:9]
-// CHECK: load-stmts.cpp:4:14: DeclRefExpr=x:3:12 Extent=[4:14 - 4:15]
-// CHECK: load-stmts.cpp:4:19: VarDecl=z:4:19 (Definition) Extent=[4:17 - 4:24]
-// CHECK: load-stmts.cpp:4:17: TypeRef=T:1:13 Extent=[4:17 - 4:18]
-// CHECK: load-stmts.cpp:4:23: DeclRefExpr=x:3:12 Extent=[4:23 - 4:24]
-// CHECK: load-stmts.cpp:4:19: UnexposedExpr=z:4:19 Extent=[4:19 - 4:20]
-// CHECK: load-stmts.cpp:4:19: DeclRefExpr=z:4:19 Extent=[4:19 - 4:20]
-// CHECK: load-stmts.cpp:4:26: UnaryOperator= Extent=[4:26 - 4:29]
-// CHECK: load-stmts.cpp:4:28: DeclRefExpr=x:3:12 Extent=[4:28 - 4:29]
-// CHECK: load-stmts.cpp:6:10: VarDecl=z2:6:10 (Definition) Extent=[6:7 - 6:17]
-// CHECK: load-stmts.cpp:6:7: TypeRef=T:1:13 Extent=[6:7 - 6:8]
-// CHECK: load-stmts.cpp:6:15: UnaryOperator= Extent=[6:15 - 6:17]
-// CHECK: load-stmts.cpp:6:16: DeclRefExpr=x:3:12 Extent=[6:16 - 6:17]
-// CHECK: load-stmts.cpp:6:10: UnexposedExpr=z2:6:10 Extent=[6:10 - 6:12]
-// CHECK: load-stmts.cpp:6:10: DeclRefExpr=z2:6:10 Extent=[6:10 - 6:12]
-// CHECK: load-stmts.cpp:7:13: VarDecl=z3:7:13 (Definition) Extent=[7:10 - 7:20]
-// CHECK: load-stmts.cpp:7:10: TypeRef=T:1:13 Extent=[7:10 - 7:11]
-// CHECK: load-stmts.cpp:7:18: UnaryOperator= Extent=[7:18 - 7:20]
-// CHECK: load-stmts.cpp:7:19: DeclRefExpr=x:3:12 Extent=[7:19 - 7:20]
-// CHECK: load-stmts.cpp:7:13: UnexposedExpr=z3:7:13 Extent=[7:13 - 7:15]
-// CHECK: load-stmts.cpp:7:13: DeclRefExpr=z3:7:13 Extent=[7:13 - 7:15]
-// CHECK: load-stmts.cpp:8:13: VarDecl=z4:8:13 (Definition) Extent=[8:11 - 8:19]
-// CHECK: load-stmts.cpp:8:11: TypeRef=T:1:13 Extent=[8:11 - 8:12]
-// CHECK: load-stmts.cpp:8:18: DeclRefExpr=x:3:12 Extent=[8:18 - 8:19]
-// CHECK: load-stmts.cpp:8:13: DeclRefExpr=z4:8:13 Extent=[8:13 - 8:15]
-// CHECK: load-stmts.cpp:9:8: IntegerLiteral= Extent=[9:8 - 9:10]
-// CHECK: load-stmts.cpp:14:7: ClassDecl=A:14:7 (Definition) Extent=[14:1 - 16:2]
-// CHECK: load-stmts.cpp:15:8: CXXMethod=doA:15:8 Extent=[15:3 - 15:13]
-// CHECK: load-stmts.cpp:18:7: ClassDecl=B:18:7 (Definition) Extent=[18:1 - 20:2]
-// CHECK: load-stmts.cpp:19:8: CXXMethod=doB:19:8 Extent=[19:3 - 19:13]
-// CHECK: load-stmts.cpp:22:7: ClassDecl=C:22:7 (Definition) Extent=[22:1 - 24:2]
-// CHECK: load-stmts.cpp:22:18: C++ base class specifier=class A:14:7 [access=public isVirtual=false]
-// CHECK: load-stmts.cpp:22:29: C++ base class specifier=class B:18:7 [access=private isVirtual=false]
-// CHECK: load-stmts.cpp:23:8: CXXMethod=doC:23:8 Extent=[23:3 - 23:13]
-// CHECK: load-stmts.cpp:26:7: ClassDecl=D:26:7 (Definition) Extent=[26:1 - 26:49]
-// CHECK: load-stmts.cpp:26:26: C++ base class specifier=class C:22:7 [access=public isVirtual=true]
-// CHECK: load-stmts.cpp:26:45: C++ base class specifier=class A:14:7 [access=private isVirtual=true]
-// CHECK: load-stmts.cpp:33:7: VarDecl=typeid_marker:33:7 (Definition)
-// CHECK: load-stmts.cpp:34:10: TypeRef=class C:22:7 Extent=[34:10 - 34:11]
-// CHECK: load-stmts.cpp:35:10: DeclRefExpr=c:32:20 Extent=[35:10 - 35:11]
-// CHECK: load-stmts.cpp:37:12: VarDecl=int_ptr:37:12 (Definition) Extent=[37:3 - 37:19]
-// CHECK: load-stmts.cpp:37:3: TypeRef=Integer:36:15 Extent=[37:3 - 37:10]
-// CHECK: load-stmts.cpp:38:3: DeclRefExpr=int_ptr:37:12 Extent=[38:3 - 38:10]
-// CHECK: load-stmts.cpp:38:12: TypeRef=Integer:36:15 Extent=[38:12 - 38:19]
-// CHECK: load-stmts.cpp:38:22: TypeRef=Integer:36:15 Extent=[38:22 - 38:29]
-// CHECK: load-stmts.cpp:50:6: FunctionTemplate=test_dependent_exprs:50:6 (Definition)
-// CHECK: load-stmts.cpp:51:3: CallExpr= Extent=[51:3 - 51:10]
-// CHECK: load-stmts.cpp:51:3: NamespaceRef=N:41:11 Extent=[51:3 - 51:4]
-// CHECK: load-stmts.cpp:51:8: DeclRefExpr=t:50:29 Extent=[51:8 - 51:9]
-// CHECK: load-stmts.cpp:52:13: TypedefDecl=type:52:13 (Definition) Extent=[52:3 - 52:17]
-// CHECK: load-stmts.cpp:53:3: CallExpr= Extent=[53:3 - 53:16]
-// CHECK: load-stmts.cpp:53:3: NamespaceRef=N:41:11 Extent=[53:3 - 53:4]
-// CHECK: load-stmts.cpp:53:8: TypeRef=type:52:13 Extent=[53:8 - 53:12]
-// CHECK: load-stmts.cpp:53:14: DeclRefExpr=t:50:29 Extent=[53:14 - 53:15]
-// CHECK: load-stmts.cpp:54:3: CallExpr= Extent=[54:3 - 54:29]
-// CHECK: load-stmts.cpp:54:3: TypeRef=type:52:13 Extent=[54:3 - 54:7]
-// CHECK: load-stmts.cpp:54:20: TypeRef=type:52:13 Extent=[54:20 - 54:24]
-// CHECK: load-stmts.cpp:54:27: DeclRefExpr=t:50:29 Extent=[54:27 - 54:28]
-// CHECK: load-stmts.cpp:55:3: CallExpr= Extent=[55:3 - 55:31]
-// CHECK: load-stmts.cpp:55:3: DeclRefExpr=t:50:29 Extent=[55:3 - 55:4]
-// CHECK: load-stmts.cpp:55:23: TypeRef=type:52:13 Extent=[55:23 - 55:27]
-// CHECK: load-stmts.cpp:67:6: FunctionTemplate=test_more_dependent_exprs:67:6 (Definition)
-// CHECK: load-stmts.cpp:68:3: CallExpr= Extent=[68:3 - 68:12]
-// CHECK: load-stmts.cpp:68:3: DeclRefExpr=y:67:39 Extent=[68:3 - 68:4]
-// CHECK: load-stmts.cpp:68:5: TypeRef=struct Y:58:8 Extent=[68:5 - 68:6]
-// CHECK: load-stmts.cpp:68:10: DeclRefExpr=t:67:34 Extent=[68:10 - 68:11]
-// CHECK: load-stmts.cpp:70:3: CallExpr= Extent=[70:3 - 70:15]
-// CHECK: load-stmts.cpp:70:3: DeclRefExpr=y:67:39 Extent=[70:3 - 70:4]
-// CHECK: load-stmts.cpp:70:7: TypeRef=type:69:13 Extent=[70:7 - 70:11]
-// CHECK: load-stmts.cpp:70:13: DeclRefExpr=t:67:34 Extent=[70:13 - 70:14]
-// CHECK: load-stmts.cpp:79:6: FunctionDecl=test_more_exprs:79:6 (Definition)
-// CHECK: load-stmts.cpp:80:8: DeclRefExpr=mem:79:28 Extent=[80:8 - 80:11]
-// CHECK: load-stmts.cpp:80:13: TypeRef=struct Pair:73:8 Extent=[80:13 - 80:17]
-// CHECK: load-stmts.cpp:80:18: DeclRefExpr=i:79:37 Extent=[80:18 - 80:19]
-// CHECK: load-stmts.cpp:80:21: DeclRefExpr=j:79:44 Extent=[80:21 - 80:22]
-// CHECK: load-stmts.cpp:82:9: TypeRef=Integer:81:15 Extent=[82:9 - 82:16]
-// CHECK: load-stmts.cpp:82:17: DeclRefExpr=i:79:37 Extent=[82:17 - 82:18]
-// CHECK: load-stmts.cpp:83:3: CStyleCastExpr= Extent=[83:3 - 83:13]
-// CHECK: load-stmts.cpp:83:4: TypeRef=Integer:81:15 Extent=[83:4 - 83:11]
-// CHECK: load-stmts.cpp:83:12: UnexposedExpr=i:79:37 Extent=[83:12 - 83:13]
-// CHECK: load-stmts.cpp:83:12: DeclRefExpr=i:79:37 Extent=[83:12 - 83:13]
-// CHECK: load-stmts.cpp:84:3: UnexposedExpr= Extent=[84:3 - 84:12]
-// CHECK: load-stmts.cpp:84:3: TypeRef=Integer:81:15 Extent=[84:3 - 84:10]
-// CHECK: load-stmts.cpp:90:9: TypeRef=type:89:13 Extent=[90:9 - 90:13]
-// CHECK: load-stmts.cpp:90:14: DeclRefExpr=t:88:39 Extent=[90:14 - 90:15]
-// CHECK: load-stmts.cpp:90:17: DeclRefExpr=y:88:44 Extent=[90:17 - 90:18]
-// CHECK: load-stmts.cpp:91:9: UnexposedExpr= Extent=[91:9 - 91:35]
-// CHECK: load-stmts.cpp:91:30: TypeRef=type:89:13 Extent=[91:30 - 91:34]
-// CHECK: load-stmts.cpp:103:10: CXXConstructor=Derived:103:10 (Definition)
-// CHECK: load-stmts.cpp:103:1: TypeRef=struct Derived:98:8 Extent=[103:1 - 103:
-// FIXME: Missing TypeRef for constructor name.
-// CHECK: load-stmts.cpp:103:22: ParmDecl=x:103:22 (Definition) 
-// CHECK: load-stmts.cpp:104:5: MemberRef=member:100:7 Extent=[104:5 - 104:11]
-// CHECK: load-stmts.cpp:104:12: DeclRefExpr=x:103:22 Extent=[104:12 - 104:13]
-// CHECK: load-stmts.cpp:104:16: TypeRef=struct Base:94:8 Extent=[104:16 - 104:2
-// CHECK: load-stmts.cpp:104:16: CallExpr=Base:95:3 Extent=[104:16 - 104:23]
-// CHECK: load-stmts.cpp:104:21: DeclRefExpr=x:103:22 Extent=[104:21 - 104:22]
-// CHECK: load-stmts.cpp:107:6: FunctionDecl=considered_harmful:107:6 (Definition)
-// CHECK: load-stmts.cpp:108:2: LabelStmt=start_over Extent=[108:2 - 109:28]
-// CHECK: load-stmts.cpp:109:17: LabelRef=start_over:108:2 Extent=[109:17 - 109:27]
-// CHECK: load-stmts.cpp:113:10: LabelRef=start_over:108:2 Extent=[113:10 - 113:20]
-// CHECK: load-stmts.cpp:117:35: UnexposedExpr=ip:116:17 Extent=[117:35 - 117:37]
-// CHECK: load-stmts.cpp:117:35: DeclRefExpr=ip:116:17 Extent=[117:35 - 117:37]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/local-symbols.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/local-symbols.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/local-symbols.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: c-index-test -test-load-source local %s | FileCheck %s
-
-// From: <rdar://problem/7568881>
-// The method 'bar' was also being reported outside the @implementation
-
- at interface Foo {
-  id x;
-}
-- (id) bar;
- at end
-
- at implementation Foo
-- (id) bar {
-  return 0;
-}
- at end
-
-// From: <rdar://problem/8380046>
-
- at protocol Prot8380046
- at end
-
- at interface R8380046
- at end
-
- at interface R8380046 () <Prot8380046>
- at end
-
-// CHECK: local-symbols.m:6:12: ObjCInterfaceDecl=Foo:6:12 Extent=[6:1 - 10:5]
-// CHECK: local-symbols.m:7:6: ObjCIvarDecl=x:7:6 (Definition) Extent=[7:3 - 7:7]
-// CHECK: local-symbols.m:7:3: TypeRef=id:0:0 Extent=[7:3 - 7:5]
-// CHECK: local-symbols.m:9:8: ObjCInstanceMethodDecl=bar:9:8 Extent=[9:1 - 9:12]
-// CHECK: local-symbols.m:9:4: TypeRef=id:0:0 Extent=[9:4 - 9:6]
-// CHECK: local-symbols.m:12:17: ObjCImplementationDecl=Foo:12:17 (Definition) Extent=[12:1 - 16:2]
-// CHECK: local-symbols.m:13:8: ObjCInstanceMethodDecl=bar:13:8 (Definition) Extent=[13:1 - 15:2]
-// CHECK: local-symbols.m:13:4: TypeRef=id:0:0 Extent=[13:4 - 13:6]
-// CHECK: local-symbols.m:14:10: UnexposedExpr= Extent=[14:10 - 14:11]
-// CHECK: local-symbols.m:14:10: IntegerLiteral= Extent=[14:10 - 14:11]
-// CHECK: local-symbols.m:20:11: ObjCProtocolDecl=Prot8380046:20:11 (Definition) Extent=[20:1 - 21:5]
-// CHECK: local-symbols.m:23:12: ObjCInterfaceDecl=R8380046:23:12 Extent=[23:1 - 24:5]
-// CHECK: local-symbols.m:26:12: ObjCCategoryDecl=:26:12 Extent=[26:1 - 27:5]
-// CHECK: local-symbols.m:26:12: ObjCClassRef=R8380046:23:12 Extent=[26:12 - 26:20]
-// CHECK: local-symbols.m:26:25: ObjCProtocolRef=Prot8380046:20:11 Extent=[26:25 - 26:36]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/modules-objc-categories.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/modules-objc-categories.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/modules-objc-categories.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
- at import category_top;
- at import category_left;
-
- at interface Sub : Foo
-- (void)left_sub;
- at end
-
-// RUN: rm -rf %t
-// RUN: c-index-test -test-load-source local -fmodules -fmodules-cache-path=%t %s -I%S/../Modules/Inputs | FileCheck %s
-// CHECK: modules-objc-categories.m:5:9: ObjCInstanceMethodDecl=left_sub:5:9 [Overrides @2:9]

Modified: trunk/contrib/llvm/tools/clang/test/Index/ms-if-exists.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/ms-if-exists.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/ms-if-exists.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-template<typename T>
-void f(T t) {
-  __if_exists(T::foo) {
-    { }
-    t.foo();
-  }
-
-  __if_not_exists(T::bar) {
-    int *i = t; // expected-error{{no viable conversion from 'HasFoo' to 'int *'}}
-    { }
-  }
-}
-
-// RUN: c-index-test -test-annotate-tokens=%s:3:1:11:3 -fms-extensions -fno-ms-compatibility -fno-delayed-template-parsing %s | FileCheck %s
-
-// CHECK: Identifier: "T" [3:15 - 3:16] TypeRef=T:1:19
-// CHECK: Punctuation: "}" [4:7 - 4:8] CompoundStmt=
-// CHECK: Identifier: "t" [5:5 - 5:6] DeclRefExpr=t:2:10
-// CHECK: Punctuation: "." [5:6 - 5:7] MemberRefExpr=
-// CHECK: Identifier: "foo" [5:7 - 5:10] MemberRefExpr=
-// CHECK: Keyword: "int" [9:5 - 9:8] VarDecl=i:9:10 (Definition)
-// CHECK: Punctuation: "*" [9:9 - 9:10] VarDecl=i:9:10 (Definition)
-// CHECK: Identifier: "i" [9:10 - 9:11] VarDecl=i:9:10 (Definition)
-// CHECK: Punctuation: "=" [9:12 - 9:13] VarDecl=i:9:10 (Definition)

Modified: trunk/contrib/llvm/tools/clang/test/Index/nested-binaryoperators.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/nested-binaryoperators.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/nested-binaryoperators.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1983 +0,0 @@
-typedef unsigned int uint;
-int foo(uint c) {
-  return ((c >= 0x41 && c <= 0x5a)
-    || (c >= 0x61 && c <= 0x7a)
-    || (c >= 0xc0 && c <= 0xd6)
-    || (c >= 0xd8 && c <= 0xf6)
-    || (c >= 0xf8 && c <= 0xff)
-    || (c >= 0x100 && c <= 0x131)
-    || (c >= 0x134 && c <= 0x13e)
-    || (c >= 0x141 && c <= 0x148)
-    || (c >= 0x14a && c <= 0x17e)
-    || (c >= 0x180 && c <= 0x1c3)
-    || (c >= 0x1cd && c <= 0x1f0)
-    || (c >= 0x1f4 && c <= 0x1f5)
-    || (c >= 0x1fa && c <= 0x217)
-    || (c >= 0x250 && c <= 0x2a8)
-    || (c >= 0x2bb && c <= 0x2c1)
-    || c == 0x386 || (c >= 0x388 && c <= 0x38a)
-    || c == 0x38c || (c >= 0x38e && c <= 0x3a1)
-    || (c >= 0x3a3 && c <= 0x3ce)
-    || (c >= 0x3d0 && c <= 0x3d6)
-    || c == 0x3da || c == 0x3dc || c == 0x3de ||
-    c == 0x3e0 || (c >= 0x3e2 && c <= 0x3f3)
-    || (c >= 0x401 && c <= 0x40c)
-    || (c >= 0x40e && c <= 0x44f)
-    || (c >= 0x451 && c <= 0x45c)
-    || (c >= 0x45e && c <= 0x481)
-    || (c >= 0x490 && c <= 0x4c4)
-    || (c >= 0x4c7 && c <= 0x4c8)
-    || (c >= 0x4cb && c <= 0x4cc)
-    || (c >= 0x4d0 && c <= 0x4eb)
-    || (c >= 0x4ee && c <= 0x4f5)
-    || (c >= 0x4f8 && c <= 0x4f9)
-    || (c >= 0x531 && c <= 0x556)
-    || c == 0x559 || (c >= 0x561 && c <= 0x586)
-    || (c >= 0x5d0 && c <= 0x5ea)
-    || (c >= 0x5f0 && c <= 0x5f2)
-    || (c >= 0x621 && c <= 0x63a)
-    || (c >= 0x641 && c <= 0x64a)
-    || (c >= 0x671 && c <= 0x6b7)
-    || (c >= 0x6ba && c <= 0x6be)
-    || (c >= 0x6c0 && c <= 0x6ce)
-    || (c >= 0x6d0 && c <= 0x6d3)
-    || c == 0x6d5 || (c >= 0x6e5 && c <= 0x6e6)
-    || (c >= 0x905 && c <= 0x939)
-    || c == 0x93d || (c >= 0x958 && c <= 0x961)
-    || (c >= 0x985 && c <= 0x98c)
-    || (c >= 0x98f && c <= 0x990)
-    || (c >= 0x993 && c <= 0x9a8)
-    || (c >= 0x9aa && c <= 0x9b0)
-    || c == 0x9b2 || (c >= 0x9b6 && c <= 0x9b9)
-    || (c >= 0x9dc && c <= 0x9dd)
-    || (c >= 0x9df && c <= 0x9e1)
-    || (c >= 0x9f0 && c <= 0x9f1)
-    || (c >= 0xa05 && c <= 0xa0a)
-    || (c >= 0xa0f && c <= 0xa10)
-    || (c >= 0xa13 && c <= 0xa28)
-    || (c >= 0xa2a && c <= 0xa30)
-    || (c >= 0xa32 && c <= 0xa33)
-    || (c >= 0xa35 && c <= 0xa36)
-    || (c >= 0xa38 && c <= 0xa39)
-    || (c >= 0xa59 && c <= 0xa5c)
-    || c == 0xa5e || (c >= 0xa72 && c <= 0xa74)
-    || (c >= 0xa85 && c <= 0xa8b)
-    || c == 0xa8d || (c >= 0xa8f && c <= 0xa91)
-    || (c >= 0xa93 && c <= 0xaa8)
-    || (c >= 0xaaa && c <= 0xab0)
-    || (c >= 0xab2 && c <= 0xab3)
-    || (c >= 0xab5 && c <= 0xab9)
-    || c == 0xabd || c == 0xae0 || (c >= 0xb05 && c <= 0xb0c)
-    || (c >= 0xb0f && c <= 0xb10)
-    || (c >= 0xb13 && c <= 0xb28)
-    || (c >= 0xb2a && c <= 0xb30)
-    || (c >= 0xb32 && c <= 0xb33)
-    || (c >= 0xb36 && c <= 0xb39)
-    || c == 0xb3d || (c >= 0xb5c && c <= 0xb5d)
-    || (c >= 0xb5f && c <= 0xb61)
-    || (c >= 0xb85 && c <= 0xb8a)
-    || (c >= 0xb8e && c <= 0xb90)
-    || (c >= 0xb92 && c <= 0xb95)
-    || (c >= 0xb99 && c <= 0xb9a)
-    || c == 0xb9c || (c >= 0xb9e && c <= 0xb9f)
-    || (c >= 0xba3 && c <= 0xba4)
-    || (c >= 0xba8 && c <= 0xbaa)
-    || (c >= 0xbae && c <= 0xbb5)
-    || (c >= 0xbb7 && c <= 0xbb9)
-    || (c >= 0xc05 && c <= 0xc0c)
-    || (c >= 0xc0e && c <= 0xc10)
-    || (c >= 0xc12 && c <= 0xc28)
-    || (c >= 0xc2a && c <= 0xc33)
-    || (c >= 0xc35 && c <= 0xc39)
-    || (c >= 0xc60 && c <= 0xc61)
-    || (c >= 0xc85 && c <= 0xc8c)
-    || (c >= 0xc8e && c <= 0xc90)
-    || (c >= 0xc92 && c <= 0xca8)
-    || (c >= 0xcaa && c <= 0xcb3)
-    || (c >= 0xcb5 && c <= 0xcb9)
-    || c == 0xcde || (c >= 0xce0 && c <= 0xce1)
-    || (c >= 0xd05 && c <= 0xd0c)
-    || (c >= 0xd0e && c <= 0xd10)
-    || (c >= 0xd12 && c <= 0xd28)
-    || (c >= 0xd2a && c <= 0xd39)
-    || (c >= 0xd60 && c <= 0xd61)
-    || (c >= 0xe01 && c <= 0xe2e)
-    || c == 0xe30 || (c >= 0xe32 && c <= 0xe33)
-    || (c >= 0xe40 && c <= 0xe45)
-    || (c >= 0xe81 && c <= 0xe82)
-    || c == 0xe84 || (c >= 0xe87 && c <= 0xe88)
-    || c == 0xe8a || c == 0xe8d || (c >= 0xe94 && c <= 0xe97)
-    || (c >= 0xe99 && c <= 0xe9f)
-    || (c >= 0xea1 && c <= 0xea3)
-    || c == 0xea5 || c == 0xea7 || (c >= 0xeaa && c <= 0xeab)
-    || (c >= 0xead && c <= 0xeae)
-    || c == 0xeb0 || (c >= 0xeb2 && c <= 0xeb3)
-    || c == 0xebd || (c >= 0xec0 && c <= 0xec4)
-    || (c >= 0xf40 && c <= 0xf47)
-    || (c >= 0xf49 && c <= 0xf69)
-    || (c >= 0x10a0 && c <= 0x10c5)
-    || (c >= 0x10d0 && c <= 0x10f6)
-    || c == 0x1100 || (c >= 0x1102 && c <= 0x1103)
-    || (c >= 0x1105 && c <= 0x1107)
-    || c == 0x1109 || (c >= 0x110b && c <= 0x110c)
-    || (c >= 0x110e && c <= 0x1112)
-    || c == 0x113c || c == 0x113e || c == 0x1140 || c == 0x114c || 
-    c == 0x114e || c == 0x1150 || (c >= 0x1154 && c <= 0x1155)
-    || c == 0x1159 || (c >= 0x115f && c <= 0x1161)
-    || c == 0x1163 || c == 0x1165 || c == 0x1167 || c == 0x1169 ||
-    (c >= 0x116d && c <= 0x116e)
-    || (c >= 0x1172 && c <= 0x1173)
-    || c == 0x1175 || c == 0x119e || c == 0x11a8 || c == 0x11ab ||
-    (c >= 0x11ae && c <= 0x11af)
-    || (c >= 0x11b7 && c <= 0x11b8)
-    || c == 0x11ba || (c >= 0x11bc && c <= 0x11c2)
-    || c == 0x11eb || c == 0x11f0 || c == 0x11f9 || (c >= 0x1e00 && c <= 0x1e9b)
-    || (c >= 0x1ea0 && c <= 0x1ef9)
-    || (c >= 0x1f00 && c <= 0x1f15)
-    || (c >= 0x1f18 && c <= 0x1f1d)
-    || (c >= 0x1f20 && c <= 0x1f45)
-    || (c >= 0x1f48 && c <= 0x1f4d)
-    || (c >= 0x1f50 && c <= 0x1f57)
-    || c == 0x1f59 || c == 0x1f5b || c == 0x1f5d || (c >= 0x1f5f && c <= 0x1f7d)
-    || (c >= 0x1f80 && c <= 0x1fb4)
-    || (c >= 0x1fb6 && c <= 0x1fbc)
-    || c == 0x1fbe || (c >= 0x1fc2 && c <= 0x1fc4)
-    || (c >= 0x1fc6 && c <= 0x1fcc)
-    || (c >= 0x1fd0 && c <= 0x1fd3)
-    || (c >= 0x1fd6 && c <= 0x1fdb)
-    || (c >= 0x1fe0 && c <= 0x1fec)
-    || (c >= 0x1ff2 && c <= 0x1ff4)
-    || (c >= 0x1ff6 && c <= 0x1ffc)
-    || c == 0x2126 || (c >= 0x212a && c <= 0x212b)
-    || c == 0x212e || (c >= 0x2180 && c <= 0x2182)
-    || (c >= 0x3041 && c <= 0x3094)
-    || (c >= 0x30a1 && c <= 0x30fa)
-    || (c >= 0x3105 && c <= 0x312c)
-    || (c >= 0xac00 && c <= 0xd7a3)
-    || (c >= 0x4e00 && c <= 0x9fa5)
-    || c == 0x3007 || (c >= 0x3021 && c <= 0x3029)
-    || (c >= 0x4e00 && c <= 0x9fa5)
-    || c == 0x3007 || (c >= 0x3021 && c <= 0x3029));
-}
-
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-// CHECK: 1:22: TypedefDecl=uint:1:22 (Definition) Extent=[1:1 - 1:26]
-// CHECK: 2:5: FunctionDecl=foo:2:5 (Definition) Extent=[2:1 - 161:2]
-// CHECK: 2:14: ParmDecl=c:2:14 (Definition) Extent=[2:9 - 2:15]
-// CHECK: 2:9: TypeRef=uint:1:22 Extent=[2:9 - 2:13]
-// CHECK: 2:17: CompoundStmt= Extent=[2:17 - 161:2]
-// CHECK: 3:3: ReturnStmt= Extent=[3:3 - 160:52]
-// CHECK: 3:10: UnexposedExpr= Extent=[3:10 - 160:52]
-// CHECK: 3:10: ParenExpr= Extent=[3:10 - 160:52]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 160:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 160:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 159:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 158:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 158:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 157:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 156:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 155:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 154:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 153:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 152:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 152:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 151:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 151:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 150:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 149:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 148:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 147:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 146:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 145:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 144:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 144:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 143:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 142:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 141:81]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 141:49]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 141:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 141:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 140:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 139:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 138:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 137:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 136:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 135:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 134:81]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 134:49]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 134:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 134:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 133:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 133:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 132:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 131:33]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 130:64]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 130:49]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 130:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 130:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 129:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 128:33]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 127:64]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 127:49]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 127:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 127:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 126:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 126:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 125:63]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 125:31]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 125:16]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 124:64]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 124:49]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 124:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 124:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 123:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 122:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 122:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 121:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 120:51]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 120:19]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 119:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 118:36]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 117:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 116:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 115:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 115:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 114:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 114:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 113:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 112:62]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 112:32]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 112:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 111:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 110:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 109:62]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 109:32]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 109:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 108:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 108:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 107:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 106:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 105:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 105:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 104:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 103:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 102:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 101:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 100:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 99:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 98:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 98:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 97:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 96:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 95:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 94:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 93:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 92:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 91:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 90:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 89:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 88:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 87:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 86:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 85:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 84:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 83:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 82:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 82:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 81:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 80:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 79:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 78:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 77:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 76:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 76:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 75:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 74:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 73:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 72:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 71:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 70:62]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 70:32]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 70:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 69:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 68:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 67:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 66:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 65:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 65:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 64:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 63:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 63:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 62:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 61:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 60:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 59:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 58:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 57:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 56:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 55:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 54:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 53:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 52:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 51:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 51:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 50:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 49:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 48:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 47:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 46:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 46:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 45:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 44:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 44:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 43:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 42:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 41:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 40:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 39:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 38:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 37:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 36:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 35:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 35:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 34:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 33:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 32:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 31:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 30:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 29:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 28:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 27:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 26:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 25:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 24:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 23:45]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 23:15]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 22:46]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 22:32]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 22:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 21:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 20:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 19:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 19:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 18:48]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 18:18]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 17:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 16:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 15:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 14:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 13:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 12:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 11:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 10:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 9:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 8:34]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 7:32]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 6:32]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 5:32]
-// CHECK: 3:11: BinaryOperator= Extent=[3:11 - 4:32]
-// CHECK: 3:12: BinaryOperator= Extent=[3:12 - 3:34]
-// CHECK: 3:12: BinaryOperator= Extent=[3:12 - 3:21]
-// CHECK: 3:12: DeclRefExpr=c:2:14 Extent=[3:12 - 3:13]
-// CHECK: 3:17: UnexposedExpr= Extent=[3:17 - 3:21]
-// CHECK: 3:17: IntegerLiteral= Extent=[3:17 - 3:21]
-// CHECK: 3:25: BinaryOperator= Extent=[3:25 - 3:34]
-// CHECK: 3:25: DeclRefExpr=c:2:14 Extent=[3:25 - 3:26]
-// CHECK: 3:30: UnexposedExpr= Extent=[3:30 - 3:34]
-// CHECK: 3:30: IntegerLiteral= Extent=[3:30 - 3:34]
-// CHECK: 4:9: BinaryOperator= Extent=[4:9 - 4:31]
-// CHECK: 4:9: BinaryOperator= Extent=[4:9 - 4:18]
-// CHECK: 4:9: DeclRefExpr=c:2:14 Extent=[4:9 - 4:10]
-// CHECK: 4:14: UnexposedExpr= Extent=[4:14 - 4:18]
-// CHECK: 4:14: IntegerLiteral= Extent=[4:14 - 4:18]
-// CHECK: 4:22: BinaryOperator= Extent=[4:22 - 4:31]
-// CHECK: 4:22: DeclRefExpr=c:2:14 Extent=[4:22 - 4:23]
-// CHECK: 4:27: UnexposedExpr= Extent=[4:27 - 4:31]
-// CHECK: 4:27: IntegerLiteral= Extent=[4:27 - 4:31]
-// CHECK: 5:8: ParenExpr= Extent=[5:8 - 5:32]
-// CHECK: 5:9: BinaryOperator= Extent=[5:9 - 5:31]
-// CHECK: 5:9: BinaryOperator= Extent=[5:9 - 5:18]
-// CHECK: 5:9: DeclRefExpr=c:2:14 Extent=[5:9 - 5:10]
-// CHECK: 5:14: UnexposedExpr= Extent=[5:14 - 5:18]
-// CHECK: 5:14: IntegerLiteral= Extent=[5:14 - 5:18]
-// CHECK: 5:22: BinaryOperator= Extent=[5:22 - 5:31]
-// CHECK: 5:22: DeclRefExpr=c:2:14 Extent=[5:22 - 5:23]
-// CHECK: 5:27: UnexposedExpr= Extent=[5:27 - 5:31]
-// CHECK: 5:27: IntegerLiteral= Extent=[5:27 - 5:31]
-// CHECK: 6:9: BinaryOperator= Extent=[6:9 - 6:31]
-// CHECK: 6:9: BinaryOperator= Extent=[6:9 - 6:18]
-// CHECK: 6:9: DeclRefExpr=c:2:14 Extent=[6:9 - 6:10]
-// CHECK: 6:14: UnexposedExpr= Extent=[6:14 - 6:18]
-// CHECK: 6:14: IntegerLiteral= Extent=[6:14 - 6:18]
-// CHECK: 6:22: BinaryOperator= Extent=[6:22 - 6:31]
-// CHECK: 6:22: DeclRefExpr=c:2:14 Extent=[6:22 - 6:23]
-// CHECK: 6:27: UnexposedExpr= Extent=[6:27 - 6:31]
-// CHECK: 6:27: IntegerLiteral= Extent=[6:27 - 6:31]
-// CHECK: 7:9: BinaryOperator= Extent=[7:9 - 7:31]
-// CHECK: 7:9: BinaryOperator= Extent=[7:9 - 7:18]
-// CHECK: 7:9: DeclRefExpr=c:2:14 Extent=[7:9 - 7:10]
-// CHECK: 7:14: UnexposedExpr= Extent=[7:14 - 7:18]
-// CHECK: 7:14: IntegerLiteral= Extent=[7:14 - 7:18]
-// CHECK: 7:22: BinaryOperator= Extent=[7:22 - 7:31]
-// CHECK: 7:22: DeclRefExpr=c:2:14 Extent=[7:22 - 7:23]
-// CHECK: 7:27: UnexposedExpr= Extent=[7:27 - 7:31]
-// CHECK: 7:27: IntegerLiteral= Extent=[7:27 - 7:31]
-// CHECK: 8:9: BinaryOperator= Extent=[8:9 - 8:33]
-// CHECK: 8:9: BinaryOperator= Extent=[8:9 - 8:19]
-// CHECK: 8:9: DeclRefExpr=c:2:14 Extent=[8:9 - 8:10]
-// CHECK: 8:14: UnexposedExpr= Extent=[8:14 - 8:19]
-// CHECK: 8:14: IntegerLiteral= Extent=[8:14 - 8:19]
-// CHECK: 8:23: BinaryOperator= Extent=[8:23 - 8:33]
-// CHECK: 8:23: DeclRefExpr=c:2:14 Extent=[8:23 - 8:24]
-// CHECK: 8:28: UnexposedExpr= Extent=[8:28 - 8:33]
-// CHECK: 8:28: IntegerLiteral= Extent=[8:28 - 8:33]
-// CHECK: 9:9: BinaryOperator= Extent=[9:9 - 9:33]
-// CHECK: 9:9: BinaryOperator= Extent=[9:9 - 9:19]
-// CHECK: 9:9: DeclRefExpr=c:2:14 Extent=[9:9 - 9:10]
-// CHECK: 9:14: UnexposedExpr= Extent=[9:14 - 9:19]
-// CHECK: 9:14: IntegerLiteral= Extent=[9:14 - 9:19]
-// CHECK: 9:23: BinaryOperator= Extent=[9:23 - 9:33]
-// CHECK: 9:23: DeclRefExpr=c:2:14 Extent=[9:23 - 9:24]
-// CHECK: 9:28: UnexposedExpr= Extent=[9:28 - 9:33]
-// CHECK: 9:28: IntegerLiteral= Extent=[9:28 - 9:33]
-// CHECK: 10:9: BinaryOperator= Extent=[10:9 - 10:33]
-// CHECK: 10:9: BinaryOperator= Extent=[10:9 - 10:19]
-// CHECK: 10:9: DeclRefExpr=c:2:14 Extent=[10:9 - 10:10]
-// CHECK: 10:14: UnexposedExpr= Extent=[10:14 - 10:19]
-// CHECK: 10:14: IntegerLiteral= Extent=[10:14 - 10:19]
-// CHECK: 10:23: BinaryOperator= Extent=[10:23 - 10:33]
-// CHECK: 10:23: DeclRefExpr=c:2:14 Extent=[10:23 - 10:24]
-// CHECK: 10:28: UnexposedExpr= Extent=[10:28 - 10:33]
-// CHECK: 10:28: IntegerLiteral= Extent=[10:28 - 10:33]
-// CHECK: 11:9: BinaryOperator= Extent=[11:9 - 11:33]
-// CHECK: 11:9: BinaryOperator= Extent=[11:9 - 11:19]
-// CHECK: 11:9: DeclRefExpr=c:2:14 Extent=[11:9 - 11:10]
-// CHECK: 11:14: UnexposedExpr= Extent=[11:14 - 11:19]
-// CHECK: 11:14: IntegerLiteral= Extent=[11:14 - 11:19]
-// CHECK: 11:23: BinaryOperator= Extent=[11:23 - 11:33]
-// CHECK: 11:23: DeclRefExpr=c:2:14 Extent=[11:23 - 11:24]
-// CHECK: 11:28: UnexposedExpr= Extent=[11:28 - 11:33]
-// CHECK: 11:28: IntegerLiteral= Extent=[11:28 - 11:33]
-// CHECK: 12:9: BinaryOperator= Extent=[12:9 - 12:33]
-// CHECK: 12:9: BinaryOperator= Extent=[12:9 - 12:19]
-// CHECK: 12:9: DeclRefExpr=c:2:14 Extent=[12:9 - 12:10]
-// CHECK: 12:14: UnexposedExpr= Extent=[12:14 - 12:19]
-// CHECK: 12:14: IntegerLiteral= Extent=[12:14 - 12:19]
-// CHECK: 12:23: BinaryOperator= Extent=[12:23 - 12:33]
-// CHECK: 12:23: DeclRefExpr=c:2:14 Extent=[12:23 - 12:24]
-// CHECK: 12:28: UnexposedExpr= Extent=[12:28 - 12:33]
-// CHECK: 12:28: IntegerLiteral= Extent=[12:28 - 12:33]
-// CHECK: 13:9: BinaryOperator= Extent=[13:9 - 13:33]
-// CHECK: 13:9: BinaryOperator= Extent=[13:9 - 13:19]
-// CHECK: 13:9: DeclRefExpr=c:2:14 Extent=[13:9 - 13:10]
-// CHECK: 13:14: UnexposedExpr= Extent=[13:14 - 13:19]
-// CHECK: 13:14: IntegerLiteral= Extent=[13:14 - 13:19]
-// CHECK: 13:23: BinaryOperator= Extent=[13:23 - 13:33]
-// CHECK: 13:23: DeclRefExpr=c:2:14 Extent=[13:23 - 13:24]
-// CHECK: 13:28: UnexposedExpr= Extent=[13:28 - 13:33]
-// CHECK: 13:28: IntegerLiteral= Extent=[13:28 - 13:33]
-// CHECK: 14:9: BinaryOperator= Extent=[14:9 - 14:33]
-// CHECK: 14:9: BinaryOperator= Extent=[14:9 - 14:19]
-// CHECK: 14:9: DeclRefExpr=c:2:14 Extent=[14:9 - 14:10]
-// CHECK: 14:14: UnexposedExpr= Extent=[14:14 - 14:19]
-// CHECK: 14:14: IntegerLiteral= Extent=[14:14 - 14:19]
-// CHECK: 14:23: BinaryOperator= Extent=[14:23 - 14:33]
-// CHECK: 14:23: DeclRefExpr=c:2:14 Extent=[14:23 - 14:24]
-// CHECK: 14:28: UnexposedExpr= Extent=[14:28 - 14:33]
-// CHECK: 14:28: IntegerLiteral= Extent=[14:28 - 14:33]
-// CHECK: 15:9: BinaryOperator= Extent=[15:9 - 15:33]
-// CHECK: 15:9: BinaryOperator= Extent=[15:9 - 15:19]
-// CHECK: 15:9: DeclRefExpr=c:2:14 Extent=[15:9 - 15:10]
-// CHECK: 15:14: UnexposedExpr= Extent=[15:14 - 15:19]
-// CHECK: 15:14: IntegerLiteral= Extent=[15:14 - 15:19]
-// CHECK: 15:23: BinaryOperator= Extent=[15:23 - 15:33]
-// CHECK: 15:23: DeclRefExpr=c:2:14 Extent=[15:23 - 15:24]
-// CHECK: 15:28: UnexposedExpr= Extent=[15:28 - 15:33]
-// CHECK: 15:28: IntegerLiteral= Extent=[15:28 - 15:33]
-// CHECK: 16:9: BinaryOperator= Extent=[16:9 - 16:33]
-// CHECK: 16:9: BinaryOperator= Extent=[16:9 - 16:19]
-// CHECK: 16:9: DeclRefExpr=c:2:14 Extent=[16:9 - 16:10]
-// CHECK: 16:14: UnexposedExpr= Extent=[16:14 - 16:19]
-// CHECK: 16:14: IntegerLiteral= Extent=[16:14 - 16:19]
-// CHECK: 16:23: BinaryOperator= Extent=[16:23 - 16:33]
-// CHECK: 16:23: DeclRefExpr=c:2:14 Extent=[16:23 - 16:24]
-// CHECK: 16:28: UnexposedExpr= Extent=[16:28 - 16:33]
-// CHECK: 16:28: IntegerLiteral= Extent=[16:28 - 16:33]
-// CHECK: 17:9: BinaryOperator= Extent=[17:9 - 17:33]
-// CHECK: 17:9: BinaryOperator= Extent=[17:9 - 17:19]
-// CHECK: 17:9: DeclRefExpr=c:2:14 Extent=[17:9 - 17:10]
-// CHECK: 17:14: UnexposedExpr= Extent=[17:14 - 17:19]
-// CHECK: 17:14: IntegerLiteral= Extent=[17:14 - 17:19]
-// CHECK: 17:23: BinaryOperator= Extent=[17:23 - 17:33]
-// CHECK: 17:23: DeclRefExpr=c:2:14 Extent=[17:23 - 17:24]
-// CHECK: 17:28: UnexposedExpr= Extent=[17:28 - 17:33]
-// CHECK: 17:28: IntegerLiteral= Extent=[17:28 - 17:33]
-// CHECK: 18:8: BinaryOperator= Extent=[18:8 - 18:18]
-// CHECK: 18:8: DeclRefExpr=c:2:14 Extent=[18:8 - 18:9]
-// CHECK: 18:13: UnexposedExpr= Extent=[18:13 - 18:18]
-// CHECK: 18:13: IntegerLiteral= Extent=[18:13 - 18:18]
-// CHECK: 18:23: BinaryOperator= Extent=[18:23 - 18:47]
-// CHECK: 18:23: BinaryOperator= Extent=[18:23 - 18:33]
-// CHECK: 18:23: DeclRefExpr=c:2:14 Extent=[18:23 - 18:24]
-// CHECK: 18:28: UnexposedExpr= Extent=[18:28 - 18:33]
-// CHECK: 18:28: IntegerLiteral= Extent=[18:28 - 18:33]
-// CHECK: 18:37: BinaryOperator= Extent=[18:37 - 18:47]
-// CHECK: 18:37: DeclRefExpr=c:2:14 Extent=[18:37 - 18:38]
-// CHECK: 18:42: UnexposedExpr= Extent=[18:42 - 18:47]
-// CHECK: 18:42: IntegerLiteral= Extent=[18:42 - 18:47]
-// CHECK: 19:8: BinaryOperator= Extent=[19:8 - 19:18]
-// CHECK: 19:8: DeclRefExpr=c:2:14 Extent=[19:8 - 19:9]
-// CHECK: 19:13: UnexposedExpr= Extent=[19:13 - 19:18]
-// CHECK: 19:13: IntegerLiteral= Extent=[19:13 - 19:18]
-// CHECK: 19:23: BinaryOperator= Extent=[19:23 - 19:47]
-// CHECK: 19:23: BinaryOperator= Extent=[19:23 - 19:33]
-// CHECK: 19:23: DeclRefExpr=c:2:14 Extent=[19:23 - 19:24]
-// CHECK: 19:28: UnexposedExpr= Extent=[19:28 - 19:33]
-// CHECK: 19:28: IntegerLiteral= Extent=[19:28 - 19:33]
-// CHECK: 19:37: BinaryOperator= Extent=[19:37 - 19:47]
-// CHECK: 19:37: DeclRefExpr=c:2:14 Extent=[19:37 - 19:38]
-// CHECK: 19:42: UnexposedExpr= Extent=[19:42 - 19:47]
-// CHECK: 19:42: IntegerLiteral= Extent=[19:42 - 19:47]
-// CHECK: 20:9: BinaryOperator= Extent=[20:9 - 20:33]
-// CHECK: 20:9: BinaryOperator= Extent=[20:9 - 20:19]
-// CHECK: 20:9: DeclRefExpr=c:2:14 Extent=[20:9 - 20:10]
-// CHECK: 20:14: UnexposedExpr= Extent=[20:14 - 20:19]
-// CHECK: 20:14: IntegerLiteral= Extent=[20:14 - 20:19]
-// CHECK: 20:23: BinaryOperator= Extent=[20:23 - 20:33]
-// CHECK: 20:23: DeclRefExpr=c:2:14 Extent=[20:23 - 20:24]
-// CHECK: 20:28: UnexposedExpr= Extent=[20:28 - 20:33]
-// CHECK: 20:28: IntegerLiteral= Extent=[20:28 - 20:33]
-// CHECK: 21:9: BinaryOperator= Extent=[21:9 - 21:33]
-// CHECK: 21:9: BinaryOperator= Extent=[21:9 - 21:19]
-// CHECK: 21:9: DeclRefExpr=c:2:14 Extent=[21:9 - 21:10]
-// CHECK: 21:14: UnexposedExpr= Extent=[21:14 - 21:19]
-// CHECK: 21:14: IntegerLiteral= Extent=[21:14 - 21:19]
-// CHECK: 21:23: BinaryOperator= Extent=[21:23 - 21:33]
-// CHECK: 21:23: DeclRefExpr=c:2:14 Extent=[21:23 - 21:24]
-// CHECK: 21:28: UnexposedExpr= Extent=[21:28 - 21:33]
-// CHECK: 21:28: IntegerLiteral= Extent=[21:28 - 21:33]
-// CHECK: 22:8: BinaryOperator= Extent=[22:8 - 22:18]
-// CHECK: 22:8: DeclRefExpr=c:2:14 Extent=[22:8 - 22:9]
-// CHECK: 22:13: UnexposedExpr= Extent=[22:13 - 22:18]
-// CHECK: 22:13: IntegerLiteral= Extent=[22:13 - 22:18]
-// CHECK: 22:22: BinaryOperator= Extent=[22:22 - 22:32]
-// CHECK: 22:22: DeclRefExpr=c:2:14 Extent=[22:22 - 22:23]
-// CHECK: 22:27: UnexposedExpr= Extent=[22:27 - 22:32]
-// CHECK: 22:27: IntegerLiteral= Extent=[22:27 - 22:32]
-// CHECK: 22:36: BinaryOperator= Extent=[22:36 - 22:46]
-// CHECK: 22:36: DeclRefExpr=c:2:14 Extent=[22:36 - 22:37]
-// CHECK: 22:41: UnexposedExpr= Extent=[22:41 - 22:46]
-// CHECK: 22:41: IntegerLiteral= Extent=[22:41 - 22:46]
-// CHECK: 23:5: BinaryOperator= Extent=[23:5 - 23:15]
-// CHECK: 23:5: DeclRefExpr=c:2:14 Extent=[23:5 - 23:6]
-// CHECK: 23:10: UnexposedExpr= Extent=[23:10 - 23:15]
-// CHECK: 23:10: IntegerLiteral= Extent=[23:10 - 23:15]
-// CHECK: 23:20: BinaryOperator= Extent=[23:20 - 23:44]
-// CHECK: 23:20: BinaryOperator= Extent=[23:20 - 23:30]
-// CHECK: 23:20: DeclRefExpr=c:2:14 Extent=[23:20 - 23:21]
-// CHECK: 23:25: UnexposedExpr= Extent=[23:25 - 23:30]
-// CHECK: 23:25: IntegerLiteral= Extent=[23:25 - 23:30]
-// CHECK: 23:34: BinaryOperator= Extent=[23:34 - 23:44]
-// CHECK: 23:34: DeclRefExpr=c:2:14 Extent=[23:34 - 23:35]
-// CHECK: 23:39: UnexposedExpr= Extent=[23:39 - 23:44]
-// CHECK: 23:39: IntegerLiteral= Extent=[23:39 - 23:44]
-// CHECK: 24:9: BinaryOperator= Extent=[24:9 - 24:33]
-// CHECK: 24:9: BinaryOperator= Extent=[24:9 - 24:19]
-// CHECK: 24:9: DeclRefExpr=c:2:14 Extent=[24:9 - 24:10]
-// CHECK: 24:14: UnexposedExpr= Extent=[24:14 - 24:19]
-// CHECK: 24:14: IntegerLiteral= Extent=[24:14 - 24:19]
-// CHECK: 24:23: BinaryOperator= Extent=[24:23 - 24:33]
-// CHECK: 24:23: DeclRefExpr=c:2:14 Extent=[24:23 - 24:24]
-// CHECK: 24:28: UnexposedExpr= Extent=[24:28 - 24:33]
-// CHECK: 24:28: IntegerLiteral= Extent=[24:28 - 24:33]
-// CHECK: 25:9: BinaryOperator= Extent=[25:9 - 25:33]
-// CHECK: 25:9: BinaryOperator= Extent=[25:9 - 25:19]
-// CHECK: 25:9: DeclRefExpr=c:2:14 Extent=[25:9 - 25:10]
-// CHECK: 25:14: UnexposedExpr= Extent=[25:14 - 25:19]
-// CHECK: 25:14: IntegerLiteral= Extent=[25:14 - 25:19]
-// CHECK: 25:23: BinaryOperator= Extent=[25:23 - 25:33]
-// CHECK: 25:23: DeclRefExpr=c:2:14 Extent=[25:23 - 25:24]
-// CHECK: 25:28: UnexposedExpr= Extent=[25:28 - 25:33]
-// CHECK: 25:28: IntegerLiteral= Extent=[25:28 - 25:33]
-// CHECK: 26:9: BinaryOperator= Extent=[26:9 - 26:33]
-// CHECK: 26:9: BinaryOperator= Extent=[26:9 - 26:19]
-// CHECK: 26:9: DeclRefExpr=c:2:14 Extent=[26:9 - 26:10]
-// CHECK: 26:14: UnexposedExpr= Extent=[26:14 - 26:19]
-// CHECK: 26:14: IntegerLiteral= Extent=[26:14 - 26:19]
-// CHECK: 26:23: BinaryOperator= Extent=[26:23 - 26:33]
-// CHECK: 26:23: DeclRefExpr=c:2:14 Extent=[26:23 - 26:24]
-// CHECK: 26:28: UnexposedExpr= Extent=[26:28 - 26:33]
-// CHECK: 26:28: IntegerLiteral= Extent=[26:28 - 26:33]
-// CHECK: 27:9: BinaryOperator= Extent=[27:9 - 27:33]
-// CHECK: 27:9: BinaryOperator= Extent=[27:9 - 27:19]
-// CHECK: 27:9: DeclRefExpr=c:2:14 Extent=[27:9 - 27:10]
-// CHECK: 27:14: UnexposedExpr= Extent=[27:14 - 27:19]
-// CHECK: 27:14: IntegerLiteral= Extent=[27:14 - 27:19]
-// CHECK: 27:23: BinaryOperator= Extent=[27:23 - 27:33]
-// CHECK: 27:23: DeclRefExpr=c:2:14 Extent=[27:23 - 27:24]
-// CHECK: 27:28: UnexposedExpr= Extent=[27:28 - 27:33]
-// CHECK: 27:28: IntegerLiteral= Extent=[27:28 - 27:33]
-// CHECK: 28:9: BinaryOperator= Extent=[28:9 - 28:33]
-// CHECK: 28:9: BinaryOperator= Extent=[28:9 - 28:19]
-// CHECK: 28:9: DeclRefExpr=c:2:14 Extent=[28:9 - 28:10]
-// CHECK: 28:14: UnexposedExpr= Extent=[28:14 - 28:19]
-// CHECK: 28:14: IntegerLiteral= Extent=[28:14 - 28:19]
-// CHECK: 28:23: BinaryOperator= Extent=[28:23 - 28:33]
-// CHECK: 28:23: DeclRefExpr=c:2:14 Extent=[28:23 - 28:24]
-// CHECK: 28:28: UnexposedExpr= Extent=[28:28 - 28:33]
-// CHECK: 28:28: IntegerLiteral= Extent=[28:28 - 28:33]
-// CHECK: 29:9: BinaryOperator= Extent=[29:9 - 29:33]
-// CHECK: 29:9: BinaryOperator= Extent=[29:9 - 29:19]
-// CHECK: 29:9: DeclRefExpr=c:2:14 Extent=[29:9 - 29:10]
-// CHECK: 29:14: UnexposedExpr= Extent=[29:14 - 29:19]
-// CHECK: 29:14: IntegerLiteral= Extent=[29:14 - 29:19]
-// CHECK: 29:23: BinaryOperator= Extent=[29:23 - 29:33]
-// CHECK: 29:23: DeclRefExpr=c:2:14 Extent=[29:23 - 29:24]
-// CHECK: 29:28: UnexposedExpr= Extent=[29:28 - 29:33]
-// CHECK: 29:28: IntegerLiteral= Extent=[29:28 - 29:33]
-// CHECK: 30:9: BinaryOperator= Extent=[30:9 - 30:33]
-// CHECK: 30:9: BinaryOperator= Extent=[30:9 - 30:19]
-// CHECK: 30:9: DeclRefExpr=c:2:14 Extent=[30:9 - 30:10]
-// CHECK: 30:14: UnexposedExpr= Extent=[30:14 - 30:19]
-// CHECK: 30:14: IntegerLiteral= Extent=[30:14 - 30:19]
-// CHECK: 30:23: BinaryOperator= Extent=[30:23 - 30:33]
-// CHECK: 30:23: DeclRefExpr=c:2:14 Extent=[30:23 - 30:24]
-// CHECK: 30:28: UnexposedExpr= Extent=[30:28 - 30:33]
-// CHECK: 30:28: IntegerLiteral= Extent=[30:28 - 30:33]
-// CHECK: 31:9: BinaryOperator= Extent=[31:9 - 31:33]
-// CHECK: 31:9: BinaryOperator= Extent=[31:9 - 31:19]
-// CHECK: 31:9: DeclRefExpr=c:2:14 Extent=[31:9 - 31:10]
-// CHECK: 31:14: UnexposedExpr= Extent=[31:14 - 31:19]
-// CHECK: 31:14: IntegerLiteral= Extent=[31:14 - 31:19]
-// CHECK: 31:23: BinaryOperator= Extent=[31:23 - 31:33]
-// CHECK: 31:23: DeclRefExpr=c:2:14 Extent=[31:23 - 31:24]
-// CHECK: 31:28: UnexposedExpr= Extent=[31:28 - 31:33]
-// CHECK: 31:28: IntegerLiteral= Extent=[31:28 - 31:33]
-// CHECK: 32:9: BinaryOperator= Extent=[32:9 - 32:33]
-// CHECK: 32:9: BinaryOperator= Extent=[32:9 - 32:19]
-// CHECK: 32:9: DeclRefExpr=c:2:14 Extent=[32:9 - 32:10]
-// CHECK: 32:14: UnexposedExpr= Extent=[32:14 - 32:19]
-// CHECK: 32:14: IntegerLiteral= Extent=[32:14 - 32:19]
-// CHECK: 32:23: BinaryOperator= Extent=[32:23 - 32:33]
-// CHECK: 32:23: DeclRefExpr=c:2:14 Extent=[32:23 - 32:24]
-// CHECK: 32:28: UnexposedExpr= Extent=[32:28 - 32:33]
-// CHECK: 32:28: IntegerLiteral= Extent=[32:28 - 32:33]
-// CHECK: 33:9: BinaryOperator= Extent=[33:9 - 33:33]
-// CHECK: 33:9: BinaryOperator= Extent=[33:9 - 33:19]
-// CHECK: 33:9: DeclRefExpr=c:2:14 Extent=[33:9 - 33:10]
-// CHECK: 33:14: UnexposedExpr= Extent=[33:14 - 33:19]
-// CHECK: 33:14: IntegerLiteral= Extent=[33:14 - 33:19]
-// CHECK: 33:23: BinaryOperator= Extent=[33:23 - 33:33]
-// CHECK: 33:23: DeclRefExpr=c:2:14 Extent=[33:23 - 33:24]
-// CHECK: 33:28: UnexposedExpr= Extent=[33:28 - 33:33]
-// CHECK: 33:28: IntegerLiteral= Extent=[33:28 - 33:33]
-// CHECK: 34:9: BinaryOperator= Extent=[34:9 - 34:33]
-// CHECK: 34:9: BinaryOperator= Extent=[34:9 - 34:19]
-// CHECK: 34:9: DeclRefExpr=c:2:14 Extent=[34:9 - 34:10]
-// CHECK: 34:14: UnexposedExpr= Extent=[34:14 - 34:19]
-// CHECK: 34:14: IntegerLiteral= Extent=[34:14 - 34:19]
-// CHECK: 34:23: BinaryOperator= Extent=[34:23 - 34:33]
-// CHECK: 34:23: DeclRefExpr=c:2:14 Extent=[34:23 - 34:24]
-// CHECK: 34:28: UnexposedExpr= Extent=[34:28 - 34:33]
-// CHECK: 34:28: IntegerLiteral= Extent=[34:28 - 34:33]
-// CHECK: 35:8: BinaryOperator= Extent=[35:8 - 35:18]
-// CHECK: 35:8: DeclRefExpr=c:2:14 Extent=[35:8 - 35:9]
-// CHECK: 35:13: UnexposedExpr= Extent=[35:13 - 35:18]
-// CHECK: 35:13: IntegerLiteral= Extent=[35:13 - 35:18]
-// CHECK: 35:23: BinaryOperator= Extent=[35:23 - 35:47]
-// CHECK: 35:23: BinaryOperator= Extent=[35:23 - 35:33]
-// CHECK: 35:23: DeclRefExpr=c:2:14 Extent=[35:23 - 35:24]
-// CHECK: 35:28: UnexposedExpr= Extent=[35:28 - 35:33]
-// CHECK: 35:28: IntegerLiteral= Extent=[35:28 - 35:33]
-// CHECK: 35:37: BinaryOperator= Extent=[35:37 - 35:47]
-// CHECK: 35:37: DeclRefExpr=c:2:14 Extent=[35:37 - 35:38]
-// CHECK: 35:42: UnexposedExpr= Extent=[35:42 - 35:47]
-// CHECK: 35:42: IntegerLiteral= Extent=[35:42 - 35:47]
-// CHECK: 36:9: BinaryOperator= Extent=[36:9 - 36:33]
-// CHECK: 36:9: BinaryOperator= Extent=[36:9 - 36:19]
-// CHECK: 36:9: DeclRefExpr=c:2:14 Extent=[36:9 - 36:10]
-// CHECK: 36:14: UnexposedExpr= Extent=[36:14 - 36:19]
-// CHECK: 36:14: IntegerLiteral= Extent=[36:14 - 36:19]
-// CHECK: 36:23: BinaryOperator= Extent=[36:23 - 36:33]
-// CHECK: 36:23: DeclRefExpr=c:2:14 Extent=[36:23 - 36:24]
-// CHECK: 36:28: UnexposedExpr= Extent=[36:28 - 36:33]
-// CHECK: 36:28: IntegerLiteral= Extent=[36:28 - 36:33]
-// CHECK: 37:9: BinaryOperator= Extent=[37:9 - 37:33]
-// CHECK: 37:9: BinaryOperator= Extent=[37:9 - 37:19]
-// CHECK: 37:9: DeclRefExpr=c:2:14 Extent=[37:9 - 37:10]
-// CHECK: 37:14: UnexposedExpr= Extent=[37:14 - 37:19]
-// CHECK: 37:14: IntegerLiteral= Extent=[37:14 - 37:19]
-// CHECK: 37:23: BinaryOperator= Extent=[37:23 - 37:33]
-// CHECK: 37:23: DeclRefExpr=c:2:14 Extent=[37:23 - 37:24]
-// CHECK: 37:28: UnexposedExpr= Extent=[37:28 - 37:33]
-// CHECK: 37:28: IntegerLiteral= Extent=[37:28 - 37:33]
-// CHECK: 38:9: BinaryOperator= Extent=[38:9 - 38:33]
-// CHECK: 38:9: BinaryOperator= Extent=[38:9 - 38:19]
-// CHECK: 38:9: DeclRefExpr=c:2:14 Extent=[38:9 - 38:10]
-// CHECK: 38:14: UnexposedExpr= Extent=[38:14 - 38:19]
-// CHECK: 38:14: IntegerLiteral= Extent=[38:14 - 38:19]
-// CHECK: 38:23: BinaryOperator= Extent=[38:23 - 38:33]
-// CHECK: 38:23: DeclRefExpr=c:2:14 Extent=[38:23 - 38:24]
-// CHECK: 38:28: UnexposedExpr= Extent=[38:28 - 38:33]
-// CHECK: 38:28: IntegerLiteral= Extent=[38:28 - 38:33]
-// CHECK: 39:9: BinaryOperator= Extent=[39:9 - 39:33]
-// CHECK: 39:9: BinaryOperator= Extent=[39:9 - 39:19]
-// CHECK: 39:9: DeclRefExpr=c:2:14 Extent=[39:9 - 39:10]
-// CHECK: 39:14: UnexposedExpr= Extent=[39:14 - 39:19]
-// CHECK: 39:14: IntegerLiteral= Extent=[39:14 - 39:19]
-// CHECK: 39:23: BinaryOperator= Extent=[39:23 - 39:33]
-// CHECK: 39:23: DeclRefExpr=c:2:14 Extent=[39:23 - 39:24]
-// CHECK: 39:28: UnexposedExpr= Extent=[39:28 - 39:33]
-// CHECK: 39:28: IntegerLiteral= Extent=[39:28 - 39:33]
-// CHECK: 40:9: BinaryOperator= Extent=[40:9 - 40:33]
-// CHECK: 40:9: BinaryOperator= Extent=[40:9 - 40:19]
-// CHECK: 40:9: DeclRefExpr=c:2:14 Extent=[40:9 - 40:10]
-// CHECK: 40:14: UnexposedExpr= Extent=[40:14 - 40:19]
-// CHECK: 40:14: IntegerLiteral= Extent=[40:14 - 40:19]
-// CHECK: 40:23: BinaryOperator= Extent=[40:23 - 40:33]
-// CHECK: 40:23: DeclRefExpr=c:2:14 Extent=[40:23 - 40:24]
-// CHECK: 40:28: UnexposedExpr= Extent=[40:28 - 40:33]
-// CHECK: 40:28: IntegerLiteral= Extent=[40:28 - 40:33]
-// CHECK: 41:9: BinaryOperator= Extent=[41:9 - 41:33]
-// CHECK: 41:9: BinaryOperator= Extent=[41:9 - 41:19]
-// CHECK: 41:9: DeclRefExpr=c:2:14 Extent=[41:9 - 41:10]
-// CHECK: 41:14: UnexposedExpr= Extent=[41:14 - 41:19]
-// CHECK: 41:14: IntegerLiteral= Extent=[41:14 - 41:19]
-// CHECK: 41:23: BinaryOperator= Extent=[41:23 - 41:33]
-// CHECK: 41:23: DeclRefExpr=c:2:14 Extent=[41:23 - 41:24]
-// CHECK: 41:28: UnexposedExpr= Extent=[41:28 - 41:33]
-// CHECK: 41:28: IntegerLiteral= Extent=[41:28 - 41:33]
-// CHECK: 42:9: BinaryOperator= Extent=[42:9 - 42:33]
-// CHECK: 42:9: BinaryOperator= Extent=[42:9 - 42:19]
-// CHECK: 42:9: DeclRefExpr=c:2:14 Extent=[42:9 - 42:10]
-// CHECK: 42:14: UnexposedExpr= Extent=[42:14 - 42:19]
-// CHECK: 42:14: IntegerLiteral= Extent=[42:14 - 42:19]
-// CHECK: 42:23: BinaryOperator= Extent=[42:23 - 42:33]
-// CHECK: 42:23: DeclRefExpr=c:2:14 Extent=[42:23 - 42:24]
-// CHECK: 42:28: UnexposedExpr= Extent=[42:28 - 42:33]
-// CHECK: 42:28: IntegerLiteral= Extent=[42:28 - 42:33]
-// CHECK: 43:9: BinaryOperator= Extent=[43:9 - 43:33]
-// CHECK: 43:9: BinaryOperator= Extent=[43:9 - 43:19]
-// CHECK: 43:9: DeclRefExpr=c:2:14 Extent=[43:9 - 43:10]
-// CHECK: 43:14: UnexposedExpr= Extent=[43:14 - 43:19]
-// CHECK: 43:14: IntegerLiteral= Extent=[43:14 - 43:19]
-// CHECK: 43:23: BinaryOperator= Extent=[43:23 - 43:33]
-// CHECK: 43:23: DeclRefExpr=c:2:14 Extent=[43:23 - 43:24]
-// CHECK: 43:28: UnexposedExpr= Extent=[43:28 - 43:33]
-// CHECK: 43:28: IntegerLiteral= Extent=[43:28 - 43:33]
-// CHECK: 44:8: BinaryOperator= Extent=[44:8 - 44:18]
-// CHECK: 44:8: DeclRefExpr=c:2:14 Extent=[44:8 - 44:9]
-// CHECK: 44:13: UnexposedExpr= Extent=[44:13 - 44:18]
-// CHECK: 44:13: IntegerLiteral= Extent=[44:13 - 44:18]
-// CHECK: 44:23: BinaryOperator= Extent=[44:23 - 44:47]
-// CHECK: 44:23: BinaryOperator= Extent=[44:23 - 44:33]
-// CHECK: 44:23: DeclRefExpr=c:2:14 Extent=[44:23 - 44:24]
-// CHECK: 44:28: UnexposedExpr= Extent=[44:28 - 44:33]
-// CHECK: 44:28: IntegerLiteral= Extent=[44:28 - 44:33]
-// CHECK: 44:37: BinaryOperator= Extent=[44:37 - 44:47]
-// CHECK: 44:37: DeclRefExpr=c:2:14 Extent=[44:37 - 44:38]
-// CHECK: 44:42: UnexposedExpr= Extent=[44:42 - 44:47]
-// CHECK: 44:42: IntegerLiteral= Extent=[44:42 - 44:47]
-// CHECK: 45:9: BinaryOperator= Extent=[45:9 - 45:33]
-// CHECK: 45:9: BinaryOperator= Extent=[45:9 - 45:19]
-// CHECK: 45:9: DeclRefExpr=c:2:14 Extent=[45:9 - 45:10]
-// CHECK: 45:14: UnexposedExpr= Extent=[45:14 - 45:19]
-// CHECK: 45:14: IntegerLiteral= Extent=[45:14 - 45:19]
-// CHECK: 45:23: BinaryOperator= Extent=[45:23 - 45:33]
-// CHECK: 45:23: DeclRefExpr=c:2:14 Extent=[45:23 - 45:24]
-// CHECK: 45:28: UnexposedExpr= Extent=[45:28 - 45:33]
-// CHECK: 45:28: IntegerLiteral= Extent=[45:28 - 45:33]
-// CHECK: 46:8: BinaryOperator= Extent=[46:8 - 46:18]
-// CHECK: 46:8: DeclRefExpr=c:2:14 Extent=[46:8 - 46:9]
-// CHECK: 46:13: UnexposedExpr= Extent=[46:13 - 46:18]
-// CHECK: 46:13: IntegerLiteral= Extent=[46:13 - 46:18]
-// CHECK: 46:23: BinaryOperator= Extent=[46:23 - 46:47]
-// CHECK: 46:23: BinaryOperator= Extent=[46:23 - 46:33]
-// CHECK: 46:23: DeclRefExpr=c:2:14 Extent=[46:23 - 46:24]
-// CHECK: 46:28: UnexposedExpr= Extent=[46:28 - 46:33]
-// CHECK: 46:28: IntegerLiteral= Extent=[46:28 - 46:33]
-// CHECK: 46:37: BinaryOperator= Extent=[46:37 - 46:47]
-// CHECK: 46:37: DeclRefExpr=c:2:14 Extent=[46:37 - 46:38]
-// CHECK: 46:42: UnexposedExpr= Extent=[46:42 - 46:47]
-// CHECK: 46:42: IntegerLiteral= Extent=[46:42 - 46:47]
-// CHECK: 47:9: BinaryOperator= Extent=[47:9 - 47:33]
-// CHECK: 47:9: BinaryOperator= Extent=[47:9 - 47:19]
-// CHECK: 47:9: DeclRefExpr=c:2:14 Extent=[47:9 - 47:10]
-// CHECK: 47:14: UnexposedExpr= Extent=[47:14 - 47:19]
-// CHECK: 47:14: IntegerLiteral= Extent=[47:14 - 47:19]
-// CHECK: 47:23: BinaryOperator= Extent=[47:23 - 47:33]
-// CHECK: 47:23: DeclRefExpr=c:2:14 Extent=[47:23 - 47:24]
-// CHECK: 47:28: UnexposedExpr= Extent=[47:28 - 47:33]
-// CHECK: 47:28: IntegerLiteral= Extent=[47:28 - 47:33]
-// CHECK: 48:9: BinaryOperator= Extent=[48:9 - 48:33]
-// CHECK: 48:9: BinaryOperator= Extent=[48:9 - 48:19]
-// CHECK: 48:9: DeclRefExpr=c:2:14 Extent=[48:9 - 48:10]
-// CHECK: 48:14: UnexposedExpr= Extent=[48:14 - 48:19]
-// CHECK: 48:14: IntegerLiteral= Extent=[48:14 - 48:19]
-// CHECK: 48:23: BinaryOperator= Extent=[48:23 - 48:33]
-// CHECK: 48:23: DeclRefExpr=c:2:14 Extent=[48:23 - 48:24]
-// CHECK: 48:28: UnexposedExpr= Extent=[48:28 - 48:33]
-// CHECK: 48:28: IntegerLiteral= Extent=[48:28 - 48:33]
-// CHECK: 49:9: BinaryOperator= Extent=[49:9 - 49:33]
-// CHECK: 49:9: BinaryOperator= Extent=[49:9 - 49:19]
-// CHECK: 49:9: DeclRefExpr=c:2:14 Extent=[49:9 - 49:10]
-// CHECK: 49:14: UnexposedExpr= Extent=[49:14 - 49:19]
-// CHECK: 49:14: IntegerLiteral= Extent=[49:14 - 49:19]
-// CHECK: 49:23: BinaryOperator= Extent=[49:23 - 49:33]
-// CHECK: 49:23: DeclRefExpr=c:2:14 Extent=[49:23 - 49:24]
-// CHECK: 49:28: UnexposedExpr= Extent=[49:28 - 49:33]
-// CHECK: 49:28: IntegerLiteral= Extent=[49:28 - 49:33]
-// CHECK: 50:9: BinaryOperator= Extent=[50:9 - 50:33]
-// CHECK: 50:9: BinaryOperator= Extent=[50:9 - 50:19]
-// CHECK: 50:9: DeclRefExpr=c:2:14 Extent=[50:9 - 50:10]
-// CHECK: 50:14: UnexposedExpr= Extent=[50:14 - 50:19]
-// CHECK: 50:14: IntegerLiteral= Extent=[50:14 - 50:19]
-// CHECK: 50:23: BinaryOperator= Extent=[50:23 - 50:33]
-// CHECK: 50:23: DeclRefExpr=c:2:14 Extent=[50:23 - 50:24]
-// CHECK: 50:28: UnexposedExpr= Extent=[50:28 - 50:33]
-// CHECK: 50:28: IntegerLiteral= Extent=[50:28 - 50:33]
-// CHECK: 51:8: BinaryOperator= Extent=[51:8 - 51:18]
-// CHECK: 51:8: DeclRefExpr=c:2:14 Extent=[51:8 - 51:9]
-// CHECK: 51:13: UnexposedExpr= Extent=[51:13 - 51:18]
-// CHECK: 51:13: IntegerLiteral= Extent=[51:13 - 51:18]
-// CHECK: 51:23: BinaryOperator= Extent=[51:23 - 51:47]
-// CHECK: 51:23: BinaryOperator= Extent=[51:23 - 51:33]
-// CHECK: 51:23: DeclRefExpr=c:2:14 Extent=[51:23 - 51:24]
-// CHECK: 51:28: UnexposedExpr= Extent=[51:28 - 51:33]
-// CHECK: 51:28: IntegerLiteral= Extent=[51:28 - 51:33]
-// CHECK: 51:37: BinaryOperator= Extent=[51:37 - 51:47]
-// CHECK: 51:37: DeclRefExpr=c:2:14 Extent=[51:37 - 51:38]
-// CHECK: 51:42: UnexposedExpr= Extent=[51:42 - 51:47]
-// CHECK: 51:42: IntegerLiteral= Extent=[51:42 - 51:47]
-// CHECK: 52:9: BinaryOperator= Extent=[52:9 - 52:33]
-// CHECK: 52:9: BinaryOperator= Extent=[52:9 - 52:19]
-// CHECK: 52:9: DeclRefExpr=c:2:14 Extent=[52:9 - 52:10]
-// CHECK: 52:14: UnexposedExpr= Extent=[52:14 - 52:19]
-// CHECK: 52:14: IntegerLiteral= Extent=[52:14 - 52:19]
-// CHECK: 52:23: BinaryOperator= Extent=[52:23 - 52:33]
-// CHECK: 52:23: DeclRefExpr=c:2:14 Extent=[52:23 - 52:24]
-// CHECK: 52:28: UnexposedExpr= Extent=[52:28 - 52:33]
-// CHECK: 52:28: IntegerLiteral= Extent=[52:28 - 52:33]
-// CHECK: 53:9: BinaryOperator= Extent=[53:9 - 53:33]
-// CHECK: 53:9: BinaryOperator= Extent=[53:9 - 53:19]
-// CHECK: 53:9: DeclRefExpr=c:2:14 Extent=[53:9 - 53:10]
-// CHECK: 53:14: UnexposedExpr= Extent=[53:14 - 53:19]
-// CHECK: 53:14: IntegerLiteral= Extent=[53:14 - 53:19]
-// CHECK: 53:23: BinaryOperator= Extent=[53:23 - 53:33]
-// CHECK: 53:23: DeclRefExpr=c:2:14 Extent=[53:23 - 53:24]
-// CHECK: 53:28: UnexposedExpr= Extent=[53:28 - 53:33]
-// CHECK: 53:28: IntegerLiteral= Extent=[53:28 - 53:33]
-// CHECK: 54:9: BinaryOperator= Extent=[54:9 - 54:33]
-// CHECK: 54:9: BinaryOperator= Extent=[54:9 - 54:19]
-// CHECK: 54:9: DeclRefExpr=c:2:14 Extent=[54:9 - 54:10]
-// CHECK: 54:14: UnexposedExpr= Extent=[54:14 - 54:19]
-// CHECK: 54:14: IntegerLiteral= Extent=[54:14 - 54:19]
-// CHECK: 54:23: BinaryOperator= Extent=[54:23 - 54:33]
-// CHECK: 54:23: DeclRefExpr=c:2:14 Extent=[54:23 - 54:24]
-// CHECK: 54:28: UnexposedExpr= Extent=[54:28 - 54:33]
-// CHECK: 54:28: IntegerLiteral= Extent=[54:28 - 54:33]
-// CHECK: 55:9: BinaryOperator= Extent=[55:9 - 55:33]
-// CHECK: 55:9: BinaryOperator= Extent=[55:9 - 55:19]
-// CHECK: 55:9: DeclRefExpr=c:2:14 Extent=[55:9 - 55:10]
-// CHECK: 55:14: UnexposedExpr= Extent=[55:14 - 55:19]
-// CHECK: 55:14: IntegerLiteral= Extent=[55:14 - 55:19]
-// CHECK: 55:23: BinaryOperator= Extent=[55:23 - 55:33]
-// CHECK: 55:23: DeclRefExpr=c:2:14 Extent=[55:23 - 55:24]
-// CHECK: 55:28: UnexposedExpr= Extent=[55:28 - 55:33]
-// CHECK: 55:28: IntegerLiteral= Extent=[55:28 - 55:33]
-// CHECK: 56:9: BinaryOperator= Extent=[56:9 - 56:33]
-// CHECK: 56:9: BinaryOperator= Extent=[56:9 - 56:19]
-// CHECK: 56:9: DeclRefExpr=c:2:14 Extent=[56:9 - 56:10]
-// CHECK: 56:14: UnexposedExpr= Extent=[56:14 - 56:19]
-// CHECK: 56:14: IntegerLiteral= Extent=[56:14 - 56:19]
-// CHECK: 56:23: BinaryOperator= Extent=[56:23 - 56:33]
-// CHECK: 56:23: DeclRefExpr=c:2:14 Extent=[56:23 - 56:24]
-// CHECK: 56:28: UnexposedExpr= Extent=[56:28 - 56:33]
-// CHECK: 56:28: IntegerLiteral= Extent=[56:28 - 56:33]
-// CHECK: 57:9: BinaryOperator= Extent=[57:9 - 57:33]
-// CHECK: 57:9: BinaryOperator= Extent=[57:9 - 57:19]
-// CHECK: 57:9: DeclRefExpr=c:2:14 Extent=[57:9 - 57:10]
-// CHECK: 57:14: UnexposedExpr= Extent=[57:14 - 57:19]
-// CHECK: 57:14: IntegerLiteral= Extent=[57:14 - 57:19]
-// CHECK: 57:23: BinaryOperator= Extent=[57:23 - 57:33]
-// CHECK: 57:23: DeclRefExpr=c:2:14 Extent=[57:23 - 57:24]
-// CHECK: 57:28: UnexposedExpr= Extent=[57:28 - 57:33]
-// CHECK: 57:28: IntegerLiteral= Extent=[57:28 - 57:33]
-// CHECK: 58:9: BinaryOperator= Extent=[58:9 - 58:33]
-// CHECK: 58:9: BinaryOperator= Extent=[58:9 - 58:19]
-// CHECK: 58:9: DeclRefExpr=c:2:14 Extent=[58:9 - 58:10]
-// CHECK: 58:14: UnexposedExpr= Extent=[58:14 - 58:19]
-// CHECK: 58:14: IntegerLiteral= Extent=[58:14 - 58:19]
-// CHECK: 58:23: BinaryOperator= Extent=[58:23 - 58:33]
-// CHECK: 58:23: DeclRefExpr=c:2:14 Extent=[58:23 - 58:24]
-// CHECK: 58:28: UnexposedExpr= Extent=[58:28 - 58:33]
-// CHECK: 58:28: IntegerLiteral= Extent=[58:28 - 58:33]
-// CHECK: 59:9: BinaryOperator= Extent=[59:9 - 59:33]
-// CHECK: 59:9: BinaryOperator= Extent=[59:9 - 59:19]
-// CHECK: 59:9: DeclRefExpr=c:2:14 Extent=[59:9 - 59:10]
-// CHECK: 59:14: UnexposedExpr= Extent=[59:14 - 59:19]
-// CHECK: 59:14: IntegerLiteral= Extent=[59:14 - 59:19]
-// CHECK: 59:23: BinaryOperator= Extent=[59:23 - 59:33]
-// CHECK: 59:23: DeclRefExpr=c:2:14 Extent=[59:23 - 59:24]
-// CHECK: 59:28: UnexposedExpr= Extent=[59:28 - 59:33]
-// CHECK: 59:28: IntegerLiteral= Extent=[59:28 - 59:33]
-// CHECK: 60:9: BinaryOperator= Extent=[60:9 - 60:33]
-// CHECK: 60:9: BinaryOperator= Extent=[60:9 - 60:19]
-// CHECK: 60:9: DeclRefExpr=c:2:14 Extent=[60:9 - 60:10]
-// CHECK: 60:14: UnexposedExpr= Extent=[60:14 - 60:19]
-// CHECK: 60:14: IntegerLiteral= Extent=[60:14 - 60:19]
-// CHECK: 60:23: BinaryOperator= Extent=[60:23 - 60:33]
-// CHECK: 60:23: DeclRefExpr=c:2:14 Extent=[60:23 - 60:24]
-// CHECK: 60:28: UnexposedExpr= Extent=[60:28 - 60:33]
-// CHECK: 60:28: IntegerLiteral= Extent=[60:28 - 60:33]
-// CHECK: 61:9: BinaryOperator= Extent=[61:9 - 61:33]
-// CHECK: 61:9: BinaryOperator= Extent=[61:9 - 61:19]
-// CHECK: 61:9: DeclRefExpr=c:2:14 Extent=[61:9 - 61:10]
-// CHECK: 61:14: UnexposedExpr= Extent=[61:14 - 61:19]
-// CHECK: 61:14: IntegerLiteral= Extent=[61:14 - 61:19]
-// CHECK: 61:23: BinaryOperator= Extent=[61:23 - 61:33]
-// CHECK: 61:23: DeclRefExpr=c:2:14 Extent=[61:23 - 61:24]
-// CHECK: 61:28: UnexposedExpr= Extent=[61:28 - 61:33]
-// CHECK: 61:28: IntegerLiteral= Extent=[61:28 - 61:33]
-// CHECK: 62:9: BinaryOperator= Extent=[62:9 - 62:33]
-// CHECK: 62:9: BinaryOperator= Extent=[62:9 - 62:19]
-// CHECK: 62:9: DeclRefExpr=c:2:14 Extent=[62:9 - 62:10]
-// CHECK: 62:14: UnexposedExpr= Extent=[62:14 - 62:19]
-// CHECK: 62:14: IntegerLiteral= Extent=[62:14 - 62:19]
-// CHECK: 62:23: BinaryOperator= Extent=[62:23 - 62:33]
-// CHECK: 62:23: DeclRefExpr=c:2:14 Extent=[62:23 - 62:24]
-// CHECK: 62:28: UnexposedExpr= Extent=[62:28 - 62:33]
-// CHECK: 62:28: IntegerLiteral= Extent=[62:28 - 62:33]
-// CHECK: 63:8: BinaryOperator= Extent=[63:8 - 63:18]
-// CHECK: 63:8: DeclRefExpr=c:2:14 Extent=[63:8 - 63:9]
-// CHECK: 63:13: UnexposedExpr= Extent=[63:13 - 63:18]
-// CHECK: 63:13: IntegerLiteral= Extent=[63:13 - 63:18]
-// CHECK: 63:23: BinaryOperator= Extent=[63:23 - 63:47]
-// CHECK: 63:23: BinaryOperator= Extent=[63:23 - 63:33]
-// CHECK: 63:23: DeclRefExpr=c:2:14 Extent=[63:23 - 63:24]
-// CHECK: 63:28: UnexposedExpr= Extent=[63:28 - 63:33]
-// CHECK: 63:28: IntegerLiteral= Extent=[63:28 - 63:33]
-// CHECK: 63:37: BinaryOperator= Extent=[63:37 - 63:47]
-// CHECK: 63:37: DeclRefExpr=c:2:14 Extent=[63:37 - 63:38]
-// CHECK: 63:42: UnexposedExpr= Extent=[63:42 - 63:47]
-// CHECK: 63:42: IntegerLiteral= Extent=[63:42 - 63:47]
-// CHECK: 64:9: BinaryOperator= Extent=[64:9 - 64:33]
-// CHECK: 64:9: BinaryOperator= Extent=[64:9 - 64:19]
-// CHECK: 64:9: DeclRefExpr=c:2:14 Extent=[64:9 - 64:10]
-// CHECK: 64:14: UnexposedExpr= Extent=[64:14 - 64:19]
-// CHECK: 64:14: IntegerLiteral= Extent=[64:14 - 64:19]
-// CHECK: 64:23: BinaryOperator= Extent=[64:23 - 64:33]
-// CHECK: 64:23: DeclRefExpr=c:2:14 Extent=[64:23 - 64:24]
-// CHECK: 64:28: UnexposedExpr= Extent=[64:28 - 64:33]
-// CHECK: 64:28: IntegerLiteral= Extent=[64:28 - 64:33]
-// CHECK: 65:8: BinaryOperator= Extent=[65:8 - 65:18]
-// CHECK: 65:8: DeclRefExpr=c:2:14 Extent=[65:8 - 65:9]
-// CHECK: 65:13: UnexposedExpr= Extent=[65:13 - 65:18]
-// CHECK: 65:13: IntegerLiteral= Extent=[65:13 - 65:18]
-// CHECK: 65:23: BinaryOperator= Extent=[65:23 - 65:47]
-// CHECK: 65:23: BinaryOperator= Extent=[65:23 - 65:33]
-// CHECK: 65:23: DeclRefExpr=c:2:14 Extent=[65:23 - 65:24]
-// CHECK: 65:28: UnexposedExpr= Extent=[65:28 - 65:33]
-// CHECK: 65:28: IntegerLiteral= Extent=[65:28 - 65:33]
-// CHECK: 65:37: BinaryOperator= Extent=[65:37 - 65:47]
-// CHECK: 65:37: DeclRefExpr=c:2:14 Extent=[65:37 - 65:38]
-// CHECK: 65:42: UnexposedExpr= Extent=[65:42 - 65:47]
-// CHECK: 65:42: IntegerLiteral= Extent=[65:42 - 65:47]
-// CHECK: 66:9: BinaryOperator= Extent=[66:9 - 66:33]
-// CHECK: 66:9: BinaryOperator= Extent=[66:9 - 66:19]
-// CHECK: 66:9: DeclRefExpr=c:2:14 Extent=[66:9 - 66:10]
-// CHECK: 66:14: UnexposedExpr= Extent=[66:14 - 66:19]
-// CHECK: 66:14: IntegerLiteral= Extent=[66:14 - 66:19]
-// CHECK: 66:23: BinaryOperator= Extent=[66:23 - 66:33]
-// CHECK: 66:23: DeclRefExpr=c:2:14 Extent=[66:23 - 66:24]
-// CHECK: 66:28: UnexposedExpr= Extent=[66:28 - 66:33]
-// CHECK: 66:28: IntegerLiteral= Extent=[66:28 - 66:33]
-// CHECK: 67:9: BinaryOperator= Extent=[67:9 - 67:33]
-// CHECK: 67:9: BinaryOperator= Extent=[67:9 - 67:19]
-// CHECK: 67:9: DeclRefExpr=c:2:14 Extent=[67:9 - 67:10]
-// CHECK: 67:14: UnexposedExpr= Extent=[67:14 - 67:19]
-// CHECK: 67:14: IntegerLiteral= Extent=[67:14 - 67:19]
-// CHECK: 67:23: BinaryOperator= Extent=[67:23 - 67:33]
-// CHECK: 67:23: DeclRefExpr=c:2:14 Extent=[67:23 - 67:24]
-// CHECK: 67:28: UnexposedExpr= Extent=[67:28 - 67:33]
-// CHECK: 67:28: IntegerLiteral= Extent=[67:28 - 67:33]
-// CHECK: 68:9: BinaryOperator= Extent=[68:9 - 68:33]
-// CHECK: 68:9: BinaryOperator= Extent=[68:9 - 68:19]
-// CHECK: 68:9: DeclRefExpr=c:2:14 Extent=[68:9 - 68:10]
-// CHECK: 68:14: UnexposedExpr= Extent=[68:14 - 68:19]
-// CHECK: 68:14: IntegerLiteral= Extent=[68:14 - 68:19]
-// CHECK: 68:23: BinaryOperator= Extent=[68:23 - 68:33]
-// CHECK: 68:23: DeclRefExpr=c:2:14 Extent=[68:23 - 68:24]
-// CHECK: 68:28: UnexposedExpr= Extent=[68:28 - 68:33]
-// CHECK: 68:28: IntegerLiteral= Extent=[68:28 - 68:33]
-// CHECK: 69:9: BinaryOperator= Extent=[69:9 - 69:33]
-// CHECK: 69:9: BinaryOperator= Extent=[69:9 - 69:19]
-// CHECK: 69:9: DeclRefExpr=c:2:14 Extent=[69:9 - 69:10]
-// CHECK: 69:14: UnexposedExpr= Extent=[69:14 - 69:19]
-// CHECK: 69:14: IntegerLiteral= Extent=[69:14 - 69:19]
-// CHECK: 69:23: BinaryOperator= Extent=[69:23 - 69:33]
-// CHECK: 69:23: DeclRefExpr=c:2:14 Extent=[69:23 - 69:24]
-// CHECK: 69:28: UnexposedExpr= Extent=[69:28 - 69:33]
-// CHECK: 69:28: IntegerLiteral= Extent=[69:28 - 69:33]
-// CHECK: 70:8: BinaryOperator= Extent=[70:8 - 70:18]
-// CHECK: 70:8: DeclRefExpr=c:2:14 Extent=[70:8 - 70:9]
-// CHECK: 70:13: UnexposedExpr= Extent=[70:13 - 70:18]
-// CHECK: 70:13: IntegerLiteral= Extent=[70:13 - 70:18]
-// CHECK: 70:22: BinaryOperator= Extent=[70:22 - 70:32]
-// CHECK: 70:22: DeclRefExpr=c:2:14 Extent=[70:22 - 70:23]
-// CHECK: 70:27: UnexposedExpr= Extent=[70:27 - 70:32]
-// CHECK: 70:27: IntegerLiteral= Extent=[70:27 - 70:32]
-// CHECK: 70:37: BinaryOperator= Extent=[70:37 - 70:61]
-// CHECK: 70:37: BinaryOperator= Extent=[70:37 - 70:47]
-// CHECK: 70:37: DeclRefExpr=c:2:14 Extent=[70:37 - 70:38]
-// CHECK: 70:42: UnexposedExpr= Extent=[70:42 - 70:47]
-// CHECK: 70:42: IntegerLiteral= Extent=[70:42 - 70:47]
-// CHECK: 70:51: BinaryOperator= Extent=[70:51 - 70:61]
-// CHECK: 70:51: DeclRefExpr=c:2:14 Extent=[70:51 - 70:52]
-// CHECK: 70:56: UnexposedExpr= Extent=[70:56 - 70:61]
-// CHECK: 70:56: IntegerLiteral= Extent=[70:56 - 70:61]
-// CHECK: 71:9: BinaryOperator= Extent=[71:9 - 71:33]
-// CHECK: 71:9: BinaryOperator= Extent=[71:9 - 71:19]
-// CHECK: 71:9: DeclRefExpr=c:2:14 Extent=[71:9 - 71:10]
-// CHECK: 71:14: UnexposedExpr= Extent=[71:14 - 71:19]
-// CHECK: 71:14: IntegerLiteral= Extent=[71:14 - 71:19]
-// CHECK: 71:23: BinaryOperator= Extent=[71:23 - 71:33]
-// CHECK: 71:23: DeclRefExpr=c:2:14 Extent=[71:23 - 71:24]
-// CHECK: 71:28: UnexposedExpr= Extent=[71:28 - 71:33]
-// CHECK: 71:28: IntegerLiteral= Extent=[71:28 - 71:33]
-// CHECK: 72:9: BinaryOperator= Extent=[72:9 - 72:33]
-// CHECK: 72:9: BinaryOperator= Extent=[72:9 - 72:19]
-// CHECK: 72:9: DeclRefExpr=c:2:14 Extent=[72:9 - 72:10]
-// CHECK: 72:14: UnexposedExpr= Extent=[72:14 - 72:19]
-// CHECK: 72:14: IntegerLiteral= Extent=[72:14 - 72:19]
-// CHECK: 72:23: BinaryOperator= Extent=[72:23 - 72:33]
-// CHECK: 72:23: DeclRefExpr=c:2:14 Extent=[72:23 - 72:24]
-// CHECK: 72:28: UnexposedExpr= Extent=[72:28 - 72:33]
-// CHECK: 72:28: IntegerLiteral= Extent=[72:28 - 72:33]
-// CHECK: 73:9: BinaryOperator= Extent=[73:9 - 73:33]
-// CHECK: 73:9: BinaryOperator= Extent=[73:9 - 73:19]
-// CHECK: 73:9: DeclRefExpr=c:2:14 Extent=[73:9 - 73:10]
-// CHECK: 73:14: UnexposedExpr= Extent=[73:14 - 73:19]
-// CHECK: 73:14: IntegerLiteral= Extent=[73:14 - 73:19]
-// CHECK: 73:23: BinaryOperator= Extent=[73:23 - 73:33]
-// CHECK: 73:23: DeclRefExpr=c:2:14 Extent=[73:23 - 73:24]
-// CHECK: 73:28: UnexposedExpr= Extent=[73:28 - 73:33]
-// CHECK: 73:28: IntegerLiteral= Extent=[73:28 - 73:33]
-// CHECK: 74:9: BinaryOperator= Extent=[74:9 - 74:33]
-// CHECK: 74:9: BinaryOperator= Extent=[74:9 - 74:19]
-// CHECK: 74:9: DeclRefExpr=c:2:14 Extent=[74:9 - 74:10]
-// CHECK: 74:14: UnexposedExpr= Extent=[74:14 - 74:19]
-// CHECK: 74:14: IntegerLiteral= Extent=[74:14 - 74:19]
-// CHECK: 74:23: BinaryOperator= Extent=[74:23 - 74:33]
-// CHECK: 74:23: DeclRefExpr=c:2:14 Extent=[74:23 - 74:24]
-// CHECK: 74:28: UnexposedExpr= Extent=[74:28 - 74:33]
-// CHECK: 74:28: IntegerLiteral= Extent=[74:28 - 74:33]
-// CHECK: 75:9: BinaryOperator= Extent=[75:9 - 75:33]
-// CHECK: 75:9: BinaryOperator= Extent=[75:9 - 75:19]
-// CHECK: 75:9: DeclRefExpr=c:2:14 Extent=[75:9 - 75:10]
-// CHECK: 75:14: UnexposedExpr= Extent=[75:14 - 75:19]
-// CHECK: 75:14: IntegerLiteral= Extent=[75:14 - 75:19]
-// CHECK: 75:23: BinaryOperator= Extent=[75:23 - 75:33]
-// CHECK: 75:23: DeclRefExpr=c:2:14 Extent=[75:23 - 75:24]
-// CHECK: 75:28: UnexposedExpr= Extent=[75:28 - 75:33]
-// CHECK: 75:28: IntegerLiteral= Extent=[75:28 - 75:33]
-// CHECK: 76:8: BinaryOperator= Extent=[76:8 - 76:18]
-// CHECK: 76:8: DeclRefExpr=c:2:14 Extent=[76:8 - 76:9]
-// CHECK: 76:13: UnexposedExpr= Extent=[76:13 - 76:18]
-// CHECK: 76:13: IntegerLiteral= Extent=[76:13 - 76:18]
-// CHECK: 76:23: BinaryOperator= Extent=[76:23 - 76:47]
-// CHECK: 76:23: BinaryOperator= Extent=[76:23 - 76:33]
-// CHECK: 76:23: DeclRefExpr=c:2:14 Extent=[76:23 - 76:24]
-// CHECK: 76:28: UnexposedExpr= Extent=[76:28 - 76:33]
-// CHECK: 76:28: IntegerLiteral= Extent=[76:28 - 76:33]
-// CHECK: 76:37: BinaryOperator= Extent=[76:37 - 76:47]
-// CHECK: 76:37: DeclRefExpr=c:2:14 Extent=[76:37 - 76:38]
-// CHECK: 76:42: UnexposedExpr= Extent=[76:42 - 76:47]
-// CHECK: 76:42: IntegerLiteral= Extent=[76:42 - 76:47]
-// CHECK: 77:9: BinaryOperator= Extent=[77:9 - 77:33]
-// CHECK: 77:9: BinaryOperator= Extent=[77:9 - 77:19]
-// CHECK: 77:9: DeclRefExpr=c:2:14 Extent=[77:9 - 77:10]
-// CHECK: 77:14: UnexposedExpr= Extent=[77:14 - 77:19]
-// CHECK: 77:14: IntegerLiteral= Extent=[77:14 - 77:19]
-// CHECK: 77:23: BinaryOperator= Extent=[77:23 - 77:33]
-// CHECK: 77:23: DeclRefExpr=c:2:14 Extent=[77:23 - 77:24]
-// CHECK: 77:28: UnexposedExpr= Extent=[77:28 - 77:33]
-// CHECK: 77:28: IntegerLiteral= Extent=[77:28 - 77:33]
-// CHECK: 78:9: BinaryOperator= Extent=[78:9 - 78:33]
-// CHECK: 78:9: BinaryOperator= Extent=[78:9 - 78:19]
-// CHECK: 78:9: DeclRefExpr=c:2:14 Extent=[78:9 - 78:10]
-// CHECK: 78:14: UnexposedExpr= Extent=[78:14 - 78:19]
-// CHECK: 78:14: IntegerLiteral= Extent=[78:14 - 78:19]
-// CHECK: 78:23: BinaryOperator= Extent=[78:23 - 78:33]
-// CHECK: 78:23: DeclRefExpr=c:2:14 Extent=[78:23 - 78:24]
-// CHECK: 78:28: UnexposedExpr= Extent=[78:28 - 78:33]
-// CHECK: 78:28: IntegerLiteral= Extent=[78:28 - 78:33]
-// CHECK: 79:9: BinaryOperator= Extent=[79:9 - 79:33]
-// CHECK: 79:9: BinaryOperator= Extent=[79:9 - 79:19]
-// CHECK: 79:9: DeclRefExpr=c:2:14 Extent=[79:9 - 79:10]
-// CHECK: 79:14: UnexposedExpr= Extent=[79:14 - 79:19]
-// CHECK: 79:14: IntegerLiteral= Extent=[79:14 - 79:19]
-// CHECK: 79:23: BinaryOperator= Extent=[79:23 - 79:33]
-// CHECK: 79:23: DeclRefExpr=c:2:14 Extent=[79:23 - 79:24]
-// CHECK: 79:28: UnexposedExpr= Extent=[79:28 - 79:33]
-// CHECK: 79:28: IntegerLiteral= Extent=[79:28 - 79:33]
-// CHECK: 80:9: BinaryOperator= Extent=[80:9 - 80:33]
-// CHECK: 80:9: BinaryOperator= Extent=[80:9 - 80:19]
-// CHECK: 80:9: DeclRefExpr=c:2:14 Extent=[80:9 - 80:10]
-// CHECK: 80:14: UnexposedExpr= Extent=[80:14 - 80:19]
-// CHECK: 80:14: IntegerLiteral= Extent=[80:14 - 80:19]
-// CHECK: 80:23: BinaryOperator= Extent=[80:23 - 80:33]
-// CHECK: 80:23: DeclRefExpr=c:2:14 Extent=[80:23 - 80:24]
-// CHECK: 80:28: UnexposedExpr= Extent=[80:28 - 80:33]
-// CHECK: 80:28: IntegerLiteral= Extent=[80:28 - 80:33]
-// CHECK: 81:9: BinaryOperator= Extent=[81:9 - 81:33]
-// CHECK: 81:9: BinaryOperator= Extent=[81:9 - 81:19]
-// CHECK: 81:9: DeclRefExpr=c:2:14 Extent=[81:9 - 81:10]
-// CHECK: 81:14: UnexposedExpr= Extent=[81:14 - 81:19]
-// CHECK: 81:14: IntegerLiteral= Extent=[81:14 - 81:19]
-// CHECK: 81:23: BinaryOperator= Extent=[81:23 - 81:33]
-// CHECK: 81:23: DeclRefExpr=c:2:14 Extent=[81:23 - 81:24]
-// CHECK: 81:28: UnexposedExpr= Extent=[81:28 - 81:33]
-// CHECK: 81:28: IntegerLiteral= Extent=[81:28 - 81:33]
-// CHECK: 82:8: BinaryOperator= Extent=[82:8 - 82:18]
-// CHECK: 82:8: DeclRefExpr=c:2:14 Extent=[82:8 - 82:9]
-// CHECK: 82:13: UnexposedExpr= Extent=[82:13 - 82:18]
-// CHECK: 82:13: IntegerLiteral= Extent=[82:13 - 82:18]
-// CHECK: 82:23: BinaryOperator= Extent=[82:23 - 82:47]
-// CHECK: 82:23: BinaryOperator= Extent=[82:23 - 82:33]
-// CHECK: 82:23: DeclRefExpr=c:2:14 Extent=[82:23 - 82:24]
-// CHECK: 82:28: UnexposedExpr= Extent=[82:28 - 82:33]
-// CHECK: 82:28: IntegerLiteral= Extent=[82:28 - 82:33]
-// CHECK: 82:37: BinaryOperator= Extent=[82:37 - 82:47]
-// CHECK: 82:37: DeclRefExpr=c:2:14 Extent=[82:37 - 82:38]
-// CHECK: 82:42: UnexposedExpr= Extent=[82:42 - 82:47]
-// CHECK: 82:42: IntegerLiteral= Extent=[82:42 - 82:47]
-// CHECK: 83:9: BinaryOperator= Extent=[83:9 - 83:33]
-// CHECK: 83:9: BinaryOperator= Extent=[83:9 - 83:19]
-// CHECK: 83:9: DeclRefExpr=c:2:14 Extent=[83:9 - 83:10]
-// CHECK: 83:14: UnexposedExpr= Extent=[83:14 - 83:19]
-// CHECK: 83:14: IntegerLiteral= Extent=[83:14 - 83:19]
-// CHECK: 83:23: BinaryOperator= Extent=[83:23 - 83:33]
-// CHECK: 83:23: DeclRefExpr=c:2:14 Extent=[83:23 - 83:24]
-// CHECK: 83:28: UnexposedExpr= Extent=[83:28 - 83:33]
-// CHECK: 83:28: IntegerLiteral= Extent=[83:28 - 83:33]
-// CHECK: 84:9: BinaryOperator= Extent=[84:9 - 84:33]
-// CHECK: 84:9: BinaryOperator= Extent=[84:9 - 84:19]
-// CHECK: 84:9: DeclRefExpr=c:2:14 Extent=[84:9 - 84:10]
-// CHECK: 84:14: UnexposedExpr= Extent=[84:14 - 84:19]
-// CHECK: 84:14: IntegerLiteral= Extent=[84:14 - 84:19]
-// CHECK: 84:23: BinaryOperator= Extent=[84:23 - 84:33]
-// CHECK: 84:23: DeclRefExpr=c:2:14 Extent=[84:23 - 84:24]
-// CHECK: 84:28: UnexposedExpr= Extent=[84:28 - 84:33]
-// CHECK: 84:28: IntegerLiteral= Extent=[84:28 - 84:33]
-// CHECK: 85:9: BinaryOperator= Extent=[85:9 - 85:33]
-// CHECK: 85:9: BinaryOperator= Extent=[85:9 - 85:19]
-// CHECK: 85:9: DeclRefExpr=c:2:14 Extent=[85:9 - 85:10]
-// CHECK: 85:14: UnexposedExpr= Extent=[85:14 - 85:19]
-// CHECK: 85:14: IntegerLiteral= Extent=[85:14 - 85:19]
-// CHECK: 85:23: BinaryOperator= Extent=[85:23 - 85:33]
-// CHECK: 85:23: DeclRefExpr=c:2:14 Extent=[85:23 - 85:24]
-// CHECK: 85:28: UnexposedExpr= Extent=[85:28 - 85:33]
-// CHECK: 85:28: IntegerLiteral= Extent=[85:28 - 85:33]
-// CHECK: 86:9: BinaryOperator= Extent=[86:9 - 86:33]
-// CHECK: 86:9: BinaryOperator= Extent=[86:9 - 86:19]
-// CHECK: 86:9: DeclRefExpr=c:2:14 Extent=[86:9 - 86:10]
-// CHECK: 86:14: UnexposedExpr= Extent=[86:14 - 86:19]
-// CHECK: 86:14: IntegerLiteral= Extent=[86:14 - 86:19]
-// CHECK: 86:23: BinaryOperator= Extent=[86:23 - 86:33]
-// CHECK: 86:23: DeclRefExpr=c:2:14 Extent=[86:23 - 86:24]
-// CHECK: 86:28: UnexposedExpr= Extent=[86:28 - 86:33]
-// CHECK: 86:28: IntegerLiteral= Extent=[86:28 - 86:33]
-// CHECK: 87:9: BinaryOperator= Extent=[87:9 - 87:33]
-// CHECK: 87:9: BinaryOperator= Extent=[87:9 - 87:19]
-// CHECK: 87:9: DeclRefExpr=c:2:14 Extent=[87:9 - 87:10]
-// CHECK: 87:14: UnexposedExpr= Extent=[87:14 - 87:19]
-// CHECK: 87:14: IntegerLiteral= Extent=[87:14 - 87:19]
-// CHECK: 87:23: BinaryOperator= Extent=[87:23 - 87:33]
-// CHECK: 87:23: DeclRefExpr=c:2:14 Extent=[87:23 - 87:24]
-// CHECK: 87:28: UnexposedExpr= Extent=[87:28 - 87:33]
-// CHECK: 87:28: IntegerLiteral= Extent=[87:28 - 87:33]
-// CHECK: 88:9: BinaryOperator= Extent=[88:9 - 88:33]
-// CHECK: 88:9: BinaryOperator= Extent=[88:9 - 88:19]
-// CHECK: 88:9: DeclRefExpr=c:2:14 Extent=[88:9 - 88:10]
-// CHECK: 88:14: UnexposedExpr= Extent=[88:14 - 88:19]
-// CHECK: 88:14: IntegerLiteral= Extent=[88:14 - 88:19]
-// CHECK: 88:23: BinaryOperator= Extent=[88:23 - 88:33]
-// CHECK: 88:23: DeclRefExpr=c:2:14 Extent=[88:23 - 88:24]
-// CHECK: 88:28: UnexposedExpr= Extent=[88:28 - 88:33]
-// CHECK: 88:28: IntegerLiteral= Extent=[88:28 - 88:33]
-// CHECK: 89:9: BinaryOperator= Extent=[89:9 - 89:33]
-// CHECK: 89:9: BinaryOperator= Extent=[89:9 - 89:19]
-// CHECK: 89:9: DeclRefExpr=c:2:14 Extent=[89:9 - 89:10]
-// CHECK: 89:14: UnexposedExpr= Extent=[89:14 - 89:19]
-// CHECK: 89:14: IntegerLiteral= Extent=[89:14 - 89:19]
-// CHECK: 89:23: BinaryOperator= Extent=[89:23 - 89:33]
-// CHECK: 89:23: DeclRefExpr=c:2:14 Extent=[89:23 - 89:24]
-// CHECK: 89:28: UnexposedExpr= Extent=[89:28 - 89:33]
-// CHECK: 89:28: IntegerLiteral= Extent=[89:28 - 89:33]
-// CHECK: 90:9: BinaryOperator= Extent=[90:9 - 90:33]
-// CHECK: 90:9: BinaryOperator= Extent=[90:9 - 90:19]
-// CHECK: 90:9: DeclRefExpr=c:2:14 Extent=[90:9 - 90:10]
-// CHECK: 90:14: UnexposedExpr= Extent=[90:14 - 90:19]
-// CHECK: 90:14: IntegerLiteral= Extent=[90:14 - 90:19]
-// CHECK: 90:23: BinaryOperator= Extent=[90:23 - 90:33]
-// CHECK: 90:23: DeclRefExpr=c:2:14 Extent=[90:23 - 90:24]
-// CHECK: 90:28: UnexposedExpr= Extent=[90:28 - 90:33]
-// CHECK: 90:28: IntegerLiteral= Extent=[90:28 - 90:33]
-// CHECK: 91:9: BinaryOperator= Extent=[91:9 - 91:33]
-// CHECK: 91:9: BinaryOperator= Extent=[91:9 - 91:19]
-// CHECK: 91:9: DeclRefExpr=c:2:14 Extent=[91:9 - 91:10]
-// CHECK: 91:14: UnexposedExpr= Extent=[91:14 - 91:19]
-// CHECK: 91:14: IntegerLiteral= Extent=[91:14 - 91:19]
-// CHECK: 91:23: BinaryOperator= Extent=[91:23 - 91:33]
-// CHECK: 91:23: DeclRefExpr=c:2:14 Extent=[91:23 - 91:24]
-// CHECK: 91:28: UnexposedExpr= Extent=[91:28 - 91:33]
-// CHECK: 91:28: IntegerLiteral= Extent=[91:28 - 91:33]
-// CHECK: 92:9: BinaryOperator= Extent=[92:9 - 92:33]
-// CHECK: 92:9: BinaryOperator= Extent=[92:9 - 92:19]
-// CHECK: 92:9: DeclRefExpr=c:2:14 Extent=[92:9 - 92:10]
-// CHECK: 92:14: UnexposedExpr= Extent=[92:14 - 92:19]
-// CHECK: 92:14: IntegerLiteral= Extent=[92:14 - 92:19]
-// CHECK: 92:23: BinaryOperator= Extent=[92:23 - 92:33]
-// CHECK: 92:23: DeclRefExpr=c:2:14 Extent=[92:23 - 92:24]
-// CHECK: 92:28: UnexposedExpr= Extent=[92:28 - 92:33]
-// CHECK: 92:28: IntegerLiteral= Extent=[92:28 - 92:33]
-// CHECK: 93:9: BinaryOperator= Extent=[93:9 - 93:33]
-// CHECK: 93:9: BinaryOperator= Extent=[93:9 - 93:19]
-// CHECK: 93:9: DeclRefExpr=c:2:14 Extent=[93:9 - 93:10]
-// CHECK: 93:14: UnexposedExpr= Extent=[93:14 - 93:19]
-// CHECK: 93:14: IntegerLiteral= Extent=[93:14 - 93:19]
-// CHECK: 93:23: BinaryOperator= Extent=[93:23 - 93:33]
-// CHECK: 93:23: DeclRefExpr=c:2:14 Extent=[93:23 - 93:24]
-// CHECK: 93:28: UnexposedExpr= Extent=[93:28 - 93:33]
-// CHECK: 93:28: IntegerLiteral= Extent=[93:28 - 93:33]
-// CHECK: 94:9: BinaryOperator= Extent=[94:9 - 94:33]
-// CHECK: 94:9: BinaryOperator= Extent=[94:9 - 94:19]
-// CHECK: 94:9: DeclRefExpr=c:2:14 Extent=[94:9 - 94:10]
-// CHECK: 94:14: UnexposedExpr= Extent=[94:14 - 94:19]
-// CHECK: 94:14: IntegerLiteral= Extent=[94:14 - 94:19]
-// CHECK: 94:23: BinaryOperator= Extent=[94:23 - 94:33]
-// CHECK: 94:23: DeclRefExpr=c:2:14 Extent=[94:23 - 94:24]
-// CHECK: 94:28: UnexposedExpr= Extent=[94:28 - 94:33]
-// CHECK: 94:28: IntegerLiteral= Extent=[94:28 - 94:33]
-// CHECK: 95:9: BinaryOperator= Extent=[95:9 - 95:33]
-// CHECK: 95:9: BinaryOperator= Extent=[95:9 - 95:19]
-// CHECK: 95:9: DeclRefExpr=c:2:14 Extent=[95:9 - 95:10]
-// CHECK: 95:14: UnexposedExpr= Extent=[95:14 - 95:19]
-// CHECK: 95:14: IntegerLiteral= Extent=[95:14 - 95:19]
-// CHECK: 95:23: BinaryOperator= Extent=[95:23 - 95:33]
-// CHECK: 95:23: DeclRefExpr=c:2:14 Extent=[95:23 - 95:24]
-// CHECK: 95:28: UnexposedExpr= Extent=[95:28 - 95:33]
-// CHECK: 95:28: IntegerLiteral= Extent=[95:28 - 95:33]
-// CHECK: 96:9: BinaryOperator= Extent=[96:9 - 96:33]
-// CHECK: 96:9: BinaryOperator= Extent=[96:9 - 96:19]
-// CHECK: 96:9: DeclRefExpr=c:2:14 Extent=[96:9 - 96:10]
-// CHECK: 96:14: UnexposedExpr= Extent=[96:14 - 96:19]
-// CHECK: 96:14: IntegerLiteral= Extent=[96:14 - 96:19]
-// CHECK: 96:23: BinaryOperator= Extent=[96:23 - 96:33]
-// CHECK: 96:23: DeclRefExpr=c:2:14 Extent=[96:23 - 96:24]
-// CHECK: 96:28: UnexposedExpr= Extent=[96:28 - 96:33]
-// CHECK: 96:28: IntegerLiteral= Extent=[96:28 - 96:33]
-// CHECK: 97:9: BinaryOperator= Extent=[97:9 - 97:33]
-// CHECK: 97:9: BinaryOperator= Extent=[97:9 - 97:19]
-// CHECK: 97:9: DeclRefExpr=c:2:14 Extent=[97:9 - 97:10]
-// CHECK: 97:14: UnexposedExpr= Extent=[97:14 - 97:19]
-// CHECK: 97:14: IntegerLiteral= Extent=[97:14 - 97:19]
-// CHECK: 97:23: BinaryOperator= Extent=[97:23 - 97:33]
-// CHECK: 97:23: DeclRefExpr=c:2:14 Extent=[97:23 - 97:24]
-// CHECK: 97:28: UnexposedExpr= Extent=[97:28 - 97:33]
-// CHECK: 97:28: IntegerLiteral= Extent=[97:28 - 97:33]
-// CHECK: 98:8: BinaryOperator= Extent=[98:8 - 98:18]
-// CHECK: 98:8: DeclRefExpr=c:2:14 Extent=[98:8 - 98:9]
-// CHECK: 98:13: UnexposedExpr= Extent=[98:13 - 98:18]
-// CHECK: 98:13: IntegerLiteral= Extent=[98:13 - 98:18]
-// CHECK: 98:23: BinaryOperator= Extent=[98:23 - 98:47]
-// CHECK: 98:23: BinaryOperator= Extent=[98:23 - 98:33]
-// CHECK: 98:23: DeclRefExpr=c:2:14 Extent=[98:23 - 98:24]
-// CHECK: 98:28: UnexposedExpr= Extent=[98:28 - 98:33]
-// CHECK: 98:28: IntegerLiteral= Extent=[98:28 - 98:33]
-// CHECK: 98:37: BinaryOperator= Extent=[98:37 - 98:47]
-// CHECK: 98:37: DeclRefExpr=c:2:14 Extent=[98:37 - 98:38]
-// CHECK: 98:42: UnexposedExpr= Extent=[98:42 - 98:47]
-// CHECK: 98:42: IntegerLiteral= Extent=[98:42 - 98:47]
-// CHECK: 99:9: BinaryOperator= Extent=[99:9 - 99:33]
-// CHECK: 99:9: BinaryOperator= Extent=[99:9 - 99:19]
-// CHECK: 99:9: DeclRefExpr=c:2:14 Extent=[99:9 - 99:10]
-// CHECK: 99:14: UnexposedExpr= Extent=[99:14 - 99:19]
-// CHECK: 99:14: IntegerLiteral= Extent=[99:14 - 99:19]
-// CHECK: 99:23: BinaryOperator= Extent=[99:23 - 99:33]
-// CHECK: 99:23: DeclRefExpr=c:2:14 Extent=[99:23 - 99:24]
-// CHECK: 99:28: UnexposedExpr= Extent=[99:28 - 99:33]
-// CHECK: 99:28: IntegerLiteral= Extent=[99:28 - 99:33]
-// CHECK: 100:9: BinaryOperator= Extent=[100:9 - 100:33]
-// CHECK: 100:9: BinaryOperator= Extent=[100:9 - 100:19]
-// CHECK: 100:9: DeclRefExpr=c:2:14 Extent=[100:9 - 100:10]
-// CHECK: 100:14: UnexposedExpr= Extent=[100:14 - 100:19]
-// CHECK: 100:14: IntegerLiteral= Extent=[100:14 - 100:19]
-// CHECK: 100:23: BinaryOperator= Extent=[100:23 - 100:33]
-// CHECK: 100:23: DeclRefExpr=c:2:14 Extent=[100:23 - 100:24]
-// CHECK: 100:28: UnexposedExpr= Extent=[100:28 - 100:33]
-// CHECK: 100:28: IntegerLiteral= Extent=[100:28 - 100:33]
-// CHECK: 101:9: BinaryOperator= Extent=[101:9 - 101:33]
-// CHECK: 101:9: BinaryOperator= Extent=[101:9 - 101:19]
-// CHECK: 101:9: DeclRefExpr=c:2:14 Extent=[101:9 - 101:10]
-// CHECK: 101:14: UnexposedExpr= Extent=[101:14 - 101:19]
-// CHECK: 101:14: IntegerLiteral= Extent=[101:14 - 101:19]
-// CHECK: 101:23: BinaryOperator= Extent=[101:23 - 101:33]
-// CHECK: 101:23: DeclRefExpr=c:2:14 Extent=[101:23 - 101:24]
-// CHECK: 101:28: UnexposedExpr= Extent=[101:28 - 101:33]
-// CHECK: 101:28: IntegerLiteral= Extent=[101:28 - 101:33]
-// CHECK: 102:9: BinaryOperator= Extent=[102:9 - 102:33]
-// CHECK: 102:9: BinaryOperator= Extent=[102:9 - 102:19]
-// CHECK: 102:9: DeclRefExpr=c:2:14 Extent=[102:9 - 102:10]
-// CHECK: 102:14: UnexposedExpr= Extent=[102:14 - 102:19]
-// CHECK: 102:14: IntegerLiteral= Extent=[102:14 - 102:19]
-// CHECK: 102:23: BinaryOperator= Extent=[102:23 - 102:33]
-// CHECK: 102:23: DeclRefExpr=c:2:14 Extent=[102:23 - 102:24]
-// CHECK: 102:28: UnexposedExpr= Extent=[102:28 - 102:33]
-// CHECK: 102:28: IntegerLiteral= Extent=[102:28 - 102:33]
-// CHECK: 103:9: BinaryOperator= Extent=[103:9 - 103:33]
-// CHECK: 103:9: BinaryOperator= Extent=[103:9 - 103:19]
-// CHECK: 103:9: DeclRefExpr=c:2:14 Extent=[103:9 - 103:10]
-// CHECK: 103:14: UnexposedExpr= Extent=[103:14 - 103:19]
-// CHECK: 103:14: IntegerLiteral= Extent=[103:14 - 103:19]
-// CHECK: 103:23: BinaryOperator= Extent=[103:23 - 103:33]
-// CHECK: 103:23: DeclRefExpr=c:2:14 Extent=[103:23 - 103:24]
-// CHECK: 103:28: UnexposedExpr= Extent=[103:28 - 103:33]
-// CHECK: 103:28: IntegerLiteral= Extent=[103:28 - 103:33]
-// CHECK: 104:9: BinaryOperator= Extent=[104:9 - 104:33]
-// CHECK: 104:9: BinaryOperator= Extent=[104:9 - 104:19]
-// CHECK: 104:9: DeclRefExpr=c:2:14 Extent=[104:9 - 104:10]
-// CHECK: 104:14: UnexposedExpr= Extent=[104:14 - 104:19]
-// CHECK: 104:14: IntegerLiteral= Extent=[104:14 - 104:19]
-// CHECK: 104:23: BinaryOperator= Extent=[104:23 - 104:33]
-// CHECK: 104:23: DeclRefExpr=c:2:14 Extent=[104:23 - 104:24]
-// CHECK: 104:28: UnexposedExpr= Extent=[104:28 - 104:33]
-// CHECK: 104:28: IntegerLiteral= Extent=[104:28 - 104:33]
-// CHECK: 105:8: BinaryOperator= Extent=[105:8 - 105:18]
-// CHECK: 105:8: DeclRefExpr=c:2:14 Extent=[105:8 - 105:9]
-// CHECK: 105:13: UnexposedExpr= Extent=[105:13 - 105:18]
-// CHECK: 105:13: IntegerLiteral= Extent=[105:13 - 105:18]
-// CHECK: 105:23: BinaryOperator= Extent=[105:23 - 105:47]
-// CHECK: 105:23: BinaryOperator= Extent=[105:23 - 105:33]
-// CHECK: 105:23: DeclRefExpr=c:2:14 Extent=[105:23 - 105:24]
-// CHECK: 105:28: UnexposedExpr= Extent=[105:28 - 105:33]
-// CHECK: 105:28: IntegerLiteral= Extent=[105:28 - 105:33]
-// CHECK: 105:37: BinaryOperator= Extent=[105:37 - 105:47]
-// CHECK: 105:37: DeclRefExpr=c:2:14 Extent=[105:37 - 105:38]
-// CHECK: 105:42: UnexposedExpr= Extent=[105:42 - 105:47]
-// CHECK: 105:42: IntegerLiteral= Extent=[105:42 - 105:47]
-// CHECK: 106:9: BinaryOperator= Extent=[106:9 - 106:33]
-// CHECK: 106:9: BinaryOperator= Extent=[106:9 - 106:19]
-// CHECK: 106:9: DeclRefExpr=c:2:14 Extent=[106:9 - 106:10]
-// CHECK: 106:14: UnexposedExpr= Extent=[106:14 - 106:19]
-// CHECK: 106:14: IntegerLiteral= Extent=[106:14 - 106:19]
-// CHECK: 106:23: BinaryOperator= Extent=[106:23 - 106:33]
-// CHECK: 106:23: DeclRefExpr=c:2:14 Extent=[106:23 - 106:24]
-// CHECK: 106:28: UnexposedExpr= Extent=[106:28 - 106:33]
-// CHECK: 106:28: IntegerLiteral= Extent=[106:28 - 106:33]
-// CHECK: 107:9: BinaryOperator= Extent=[107:9 - 107:33]
-// CHECK: 107:9: BinaryOperator= Extent=[107:9 - 107:19]
-// CHECK: 107:9: DeclRefExpr=c:2:14 Extent=[107:9 - 107:10]
-// CHECK: 107:14: UnexposedExpr= Extent=[107:14 - 107:19]
-// CHECK: 107:14: IntegerLiteral= Extent=[107:14 - 107:19]
-// CHECK: 107:23: BinaryOperator= Extent=[107:23 - 107:33]
-// CHECK: 107:23: DeclRefExpr=c:2:14 Extent=[107:23 - 107:24]
-// CHECK: 107:28: UnexposedExpr= Extent=[107:28 - 107:33]
-// CHECK: 107:28: IntegerLiteral= Extent=[107:28 - 107:33]
-// CHECK: 108:8: BinaryOperator= Extent=[108:8 - 108:18]
-// CHECK: 108:8: DeclRefExpr=c:2:14 Extent=[108:8 - 108:9]
-// CHECK: 108:13: UnexposedExpr= Extent=[108:13 - 108:18]
-// CHECK: 108:13: IntegerLiteral= Extent=[108:13 - 108:18]
-// CHECK: 108:23: BinaryOperator= Extent=[108:23 - 108:47]
-// CHECK: 108:23: BinaryOperator= Extent=[108:23 - 108:33]
-// CHECK: 108:23: DeclRefExpr=c:2:14 Extent=[108:23 - 108:24]
-// CHECK: 108:28: UnexposedExpr= Extent=[108:28 - 108:33]
-// CHECK: 108:28: IntegerLiteral= Extent=[108:28 - 108:33]
-// CHECK: 108:37: BinaryOperator= Extent=[108:37 - 108:47]
-// CHECK: 108:37: DeclRefExpr=c:2:14 Extent=[108:37 - 108:38]
-// CHECK: 108:42: UnexposedExpr= Extent=[108:42 - 108:47]
-// CHECK: 108:42: IntegerLiteral= Extent=[108:42 - 108:47]
-// CHECK: 109:8: BinaryOperator= Extent=[109:8 - 109:18]
-// CHECK: 109:8: DeclRefExpr=c:2:14 Extent=[109:8 - 109:9]
-// CHECK: 109:13: UnexposedExpr= Extent=[109:13 - 109:18]
-// CHECK: 109:13: IntegerLiteral= Extent=[109:13 - 109:18]
-// CHECK: 109:22: BinaryOperator= Extent=[109:22 - 109:32]
-// CHECK: 109:22: DeclRefExpr=c:2:14 Extent=[109:22 - 109:23]
-// CHECK: 109:27: UnexposedExpr= Extent=[109:27 - 109:32]
-// CHECK: 109:27: IntegerLiteral= Extent=[109:27 - 109:32]
-// CHECK: 109:37: BinaryOperator= Extent=[109:37 - 109:61]
-// CHECK: 109:37: BinaryOperator= Extent=[109:37 - 109:47]
-// CHECK: 109:37: DeclRefExpr=c:2:14 Extent=[109:37 - 109:38]
-// CHECK: 109:42: UnexposedExpr= Extent=[109:42 - 109:47]
-// CHECK: 109:42: IntegerLiteral= Extent=[109:42 - 109:47]
-// CHECK: 109:51: BinaryOperator= Extent=[109:51 - 109:61]
-// CHECK: 109:51: DeclRefExpr=c:2:14 Extent=[109:51 - 109:52]
-// CHECK: 109:56: UnexposedExpr= Extent=[109:56 - 109:61]
-// CHECK: 109:56: IntegerLiteral= Extent=[109:56 - 109:61]
-// CHECK: 110:9: BinaryOperator= Extent=[110:9 - 110:33]
-// CHECK: 110:9: BinaryOperator= Extent=[110:9 - 110:19]
-// CHECK: 110:9: DeclRefExpr=c:2:14 Extent=[110:9 - 110:10]
-// CHECK: 110:14: UnexposedExpr= Extent=[110:14 - 110:19]
-// CHECK: 110:14: IntegerLiteral= Extent=[110:14 - 110:19]
-// CHECK: 110:23: BinaryOperator= Extent=[110:23 - 110:33]
-// CHECK: 110:23: DeclRefExpr=c:2:14 Extent=[110:23 - 110:24]
-// CHECK: 110:28: UnexposedExpr= Extent=[110:28 - 110:33]
-// CHECK: 110:28: IntegerLiteral= Extent=[110:28 - 110:33]
-// CHECK: 111:9: BinaryOperator= Extent=[111:9 - 111:33]
-// CHECK: 111:9: BinaryOperator= Extent=[111:9 - 111:19]
-// CHECK: 111:9: DeclRefExpr=c:2:14 Extent=[111:9 - 111:10]
-// CHECK: 111:14: UnexposedExpr= Extent=[111:14 - 111:19]
-// CHECK: 111:14: IntegerLiteral= Extent=[111:14 - 111:19]
-// CHECK: 111:23: BinaryOperator= Extent=[111:23 - 111:33]
-// CHECK: 111:23: DeclRefExpr=c:2:14 Extent=[111:23 - 111:24]
-// CHECK: 111:28: UnexposedExpr= Extent=[111:28 - 111:33]
-// CHECK: 111:28: IntegerLiteral= Extent=[111:28 - 111:33]
-// CHECK: 112:8: BinaryOperator= Extent=[112:8 - 112:18]
-// CHECK: 112:8: DeclRefExpr=c:2:14 Extent=[112:8 - 112:9]
-// CHECK: 112:13: UnexposedExpr= Extent=[112:13 - 112:18]
-// CHECK: 112:13: IntegerLiteral= Extent=[112:13 - 112:18]
-// CHECK: 112:22: BinaryOperator= Extent=[112:22 - 112:32]
-// CHECK: 112:22: DeclRefExpr=c:2:14 Extent=[112:22 - 112:23]
-// CHECK: 112:27: UnexposedExpr= Extent=[112:27 - 112:32]
-// CHECK: 112:27: IntegerLiteral= Extent=[112:27 - 112:32]
-// CHECK: 112:37: BinaryOperator= Extent=[112:37 - 112:61]
-// CHECK: 112:37: BinaryOperator= Extent=[112:37 - 112:47]
-// CHECK: 112:37: DeclRefExpr=c:2:14 Extent=[112:37 - 112:38]
-// CHECK: 112:42: UnexposedExpr= Extent=[112:42 - 112:47]
-// CHECK: 112:42: IntegerLiteral= Extent=[112:42 - 112:47]
-// CHECK: 112:51: BinaryOperator= Extent=[112:51 - 112:61]
-// CHECK: 112:51: DeclRefExpr=c:2:14 Extent=[112:51 - 112:52]
-// CHECK: 112:56: UnexposedExpr= Extent=[112:56 - 112:61]
-// CHECK: 112:56: IntegerLiteral= Extent=[112:56 - 112:61]
-// CHECK: 113:9: BinaryOperator= Extent=[113:9 - 113:33]
-// CHECK: 113:9: BinaryOperator= Extent=[113:9 - 113:19]
-// CHECK: 113:9: DeclRefExpr=c:2:14 Extent=[113:9 - 113:10]
-// CHECK: 113:14: UnexposedExpr= Extent=[113:14 - 113:19]
-// CHECK: 113:14: IntegerLiteral= Extent=[113:14 - 113:19]
-// CHECK: 113:23: BinaryOperator= Extent=[113:23 - 113:33]
-// CHECK: 113:23: DeclRefExpr=c:2:14 Extent=[113:23 - 113:24]
-// CHECK: 113:28: UnexposedExpr= Extent=[113:28 - 113:33]
-// CHECK: 113:28: IntegerLiteral= Extent=[113:28 - 113:33]
-// CHECK: 114:8: BinaryOperator= Extent=[114:8 - 114:18]
-// CHECK: 114:8: DeclRefExpr=c:2:14 Extent=[114:8 - 114:9]
-// CHECK: 114:13: UnexposedExpr= Extent=[114:13 - 114:18]
-// CHECK: 114:13: IntegerLiteral= Extent=[114:13 - 114:18]
-// CHECK: 114:23: BinaryOperator= Extent=[114:23 - 114:47]
-// CHECK: 114:23: BinaryOperator= Extent=[114:23 - 114:33]
-// CHECK: 114:23: DeclRefExpr=c:2:14 Extent=[114:23 - 114:24]
-// CHECK: 114:28: UnexposedExpr= Extent=[114:28 - 114:33]
-// CHECK: 114:28: IntegerLiteral= Extent=[114:28 - 114:33]
-// CHECK: 114:37: BinaryOperator= Extent=[114:37 - 114:47]
-// CHECK: 114:37: DeclRefExpr=c:2:14 Extent=[114:37 - 114:38]
-// CHECK: 114:42: UnexposedExpr= Extent=[114:42 - 114:47]
-// CHECK: 114:42: IntegerLiteral= Extent=[114:42 - 114:47]
-// CHECK: 115:8: BinaryOperator= Extent=[115:8 - 115:18]
-// CHECK: 115:8: DeclRefExpr=c:2:14 Extent=[115:8 - 115:9]
-// CHECK: 115:13: UnexposedExpr= Extent=[115:13 - 115:18]
-// CHECK: 115:13: IntegerLiteral= Extent=[115:13 - 115:18]
-// CHECK: 115:23: BinaryOperator= Extent=[115:23 - 115:47]
-// CHECK: 115:23: BinaryOperator= Extent=[115:23 - 115:33]
-// CHECK: 115:23: DeclRefExpr=c:2:14 Extent=[115:23 - 115:24]
-// CHECK: 115:28: UnexposedExpr= Extent=[115:28 - 115:33]
-// CHECK: 115:28: IntegerLiteral= Extent=[115:28 - 115:33]
-// CHECK: 115:37: BinaryOperator= Extent=[115:37 - 115:47]
-// CHECK: 115:37: DeclRefExpr=c:2:14 Extent=[115:37 - 115:38]
-// CHECK: 115:42: UnexposedExpr= Extent=[115:42 - 115:47]
-// CHECK: 115:42: IntegerLiteral= Extent=[115:42 - 115:47]
-// CHECK: 116:9: BinaryOperator= Extent=[116:9 - 116:33]
-// CHECK: 116:9: BinaryOperator= Extent=[116:9 - 116:19]
-// CHECK: 116:9: DeclRefExpr=c:2:14 Extent=[116:9 - 116:10]
-// CHECK: 116:14: UnexposedExpr= Extent=[116:14 - 116:19]
-// CHECK: 116:14: IntegerLiteral= Extent=[116:14 - 116:19]
-// CHECK: 116:23: BinaryOperator= Extent=[116:23 - 116:33]
-// CHECK: 116:23: DeclRefExpr=c:2:14 Extent=[116:23 - 116:24]
-// CHECK: 116:28: UnexposedExpr= Extent=[116:28 - 116:33]
-// CHECK: 116:28: IntegerLiteral= Extent=[116:28 - 116:33]
-// CHECK: 117:9: BinaryOperator= Extent=[117:9 - 117:33]
-// CHECK: 117:9: BinaryOperator= Extent=[117:9 - 117:19]
-// CHECK: 117:9: DeclRefExpr=c:2:14 Extent=[117:9 - 117:10]
-// CHECK: 117:14: UnexposedExpr= Extent=[117:14 - 117:19]
-// CHECK: 117:14: IntegerLiteral= Extent=[117:14 - 117:19]
-// CHECK: 117:23: BinaryOperator= Extent=[117:23 - 117:33]
-// CHECK: 117:23: DeclRefExpr=c:2:14 Extent=[117:23 - 117:24]
-// CHECK: 117:28: UnexposedExpr= Extent=[117:28 - 117:33]
-// CHECK: 117:28: IntegerLiteral= Extent=[117:28 - 117:33]
-// CHECK: 118:9: BinaryOperator= Extent=[118:9 - 118:35]
-// CHECK: 118:9: BinaryOperator= Extent=[118:9 - 118:20]
-// CHECK: 118:9: DeclRefExpr=c:2:14 Extent=[118:9 - 118:10]
-// CHECK: 118:14: UnexposedExpr= Extent=[118:14 - 118:20]
-// CHECK: 118:14: IntegerLiteral= Extent=[118:14 - 118:20]
-// CHECK: 118:24: BinaryOperator= Extent=[118:24 - 118:35]
-// CHECK: 118:24: DeclRefExpr=c:2:14 Extent=[118:24 - 118:25]
-// CHECK: 118:29: UnexposedExpr= Extent=[118:29 - 118:35]
-// CHECK: 118:29: IntegerLiteral= Extent=[118:29 - 118:35]
-// CHECK: 119:9: BinaryOperator= Extent=[119:9 - 119:35]
-// CHECK: 119:9: BinaryOperator= Extent=[119:9 - 119:20]
-// CHECK: 119:9: DeclRefExpr=c:2:14 Extent=[119:9 - 119:10]
-// CHECK: 119:14: UnexposedExpr= Extent=[119:14 - 119:20]
-// CHECK: 119:14: IntegerLiteral= Extent=[119:14 - 119:20]
-// CHECK: 119:24: BinaryOperator= Extent=[119:24 - 119:35]
-// CHECK: 119:24: DeclRefExpr=c:2:14 Extent=[119:24 - 119:25]
-// CHECK: 119:29: UnexposedExpr= Extent=[119:29 - 119:35]
-// CHECK: 119:29: IntegerLiteral= Extent=[119:29 - 119:35]
-// CHECK: 120:8: BinaryOperator= Extent=[120:8 - 120:19]
-// CHECK: 120:8: DeclRefExpr=c:2:14 Extent=[120:8 - 120:9]
-// CHECK: 120:13: UnexposedExpr= Extent=[120:13 - 120:19]
-// CHECK: 120:13: IntegerLiteral= Extent=[120:13 - 120:19]
-// CHECK: 120:24: BinaryOperator= Extent=[120:24 - 120:50]
-// CHECK: 120:24: BinaryOperator= Extent=[120:24 - 120:35]
-// CHECK: 120:24: DeclRefExpr=c:2:14 Extent=[120:24 - 120:25]
-// CHECK: 120:29: UnexposedExpr= Extent=[120:29 - 120:35]
-// CHECK: 120:29: IntegerLiteral= Extent=[120:29 - 120:35]
-// CHECK: 120:39: BinaryOperator= Extent=[120:39 - 120:50]
-// CHECK: 120:39: DeclRefExpr=c:2:14 Extent=[120:39 - 120:40]
-// CHECK: 120:44: UnexposedExpr= Extent=[120:44 - 120:50]
-// CHECK: 120:44: IntegerLiteral= Extent=[120:44 - 120:50]
-// CHECK: 121:9: BinaryOperator= Extent=[121:9 - 121:35]
-// CHECK: 121:9: BinaryOperator= Extent=[121:9 - 121:20]
-// CHECK: 121:9: DeclRefExpr=c:2:14 Extent=[121:9 - 121:10]
-// CHECK: 121:14: UnexposedExpr= Extent=[121:14 - 121:20]
-// CHECK: 121:14: IntegerLiteral= Extent=[121:14 - 121:20]
-// CHECK: 121:24: BinaryOperator= Extent=[121:24 - 121:35]
-// CHECK: 121:24: DeclRefExpr=c:2:14 Extent=[121:24 - 121:25]
-// CHECK: 121:29: UnexposedExpr= Extent=[121:29 - 121:35]
-// CHECK: 121:29: IntegerLiteral= Extent=[121:29 - 121:35]
-// CHECK: 122:8: BinaryOperator= Extent=[122:8 - 122:19]
-// CHECK: 122:8: DeclRefExpr=c:2:14 Extent=[122:8 - 122:9]
-// CHECK: 122:13: UnexposedExpr= Extent=[122:13 - 122:19]
-// CHECK: 122:13: IntegerLiteral= Extent=[122:13 - 122:19]
-// CHECK: 122:24: BinaryOperator= Extent=[122:24 - 122:50]
-// CHECK: 122:24: BinaryOperator= Extent=[122:24 - 122:35]
-// CHECK: 122:24: DeclRefExpr=c:2:14 Extent=[122:24 - 122:25]
-// CHECK: 122:29: UnexposedExpr= Extent=[122:29 - 122:35]
-// CHECK: 122:29: IntegerLiteral= Extent=[122:29 - 122:35]
-// CHECK: 122:39: BinaryOperator= Extent=[122:39 - 122:50]
-// CHECK: 122:39: DeclRefExpr=c:2:14 Extent=[122:39 - 122:40]
-// CHECK: 122:44: UnexposedExpr= Extent=[122:44 - 122:50]
-// CHECK: 122:44: IntegerLiteral= Extent=[122:44 - 122:50]
-// CHECK: 123:9: BinaryOperator= Extent=[123:9 - 123:35]
-// CHECK: 123:9: BinaryOperator= Extent=[123:9 - 123:20]
-// CHECK: 123:9: DeclRefExpr=c:2:14 Extent=[123:9 - 123:10]
-// CHECK: 123:14: UnexposedExpr= Extent=[123:14 - 123:20]
-// CHECK: 123:14: IntegerLiteral= Extent=[123:14 - 123:20]
-// CHECK: 123:24: BinaryOperator= Extent=[123:24 - 123:35]
-// CHECK: 123:24: DeclRefExpr=c:2:14 Extent=[123:24 - 123:25]
-// CHECK: 123:29: UnexposedExpr= Extent=[123:29 - 123:35]
-// CHECK: 123:29: IntegerLiteral= Extent=[123:29 - 123:35]
-// CHECK: 124:8: BinaryOperator= Extent=[124:8 - 124:19]
-// CHECK: 124:8: DeclRefExpr=c:2:14 Extent=[124:8 - 124:9]
-// CHECK: 124:13: UnexposedExpr= Extent=[124:13 - 124:19]
-// CHECK: 124:13: IntegerLiteral= Extent=[124:13 - 124:19]
-// CHECK: 124:23: BinaryOperator= Extent=[124:23 - 124:34]
-// CHECK: 124:23: DeclRefExpr=c:2:14 Extent=[124:23 - 124:24]
-// CHECK: 124:28: UnexposedExpr= Extent=[124:28 - 124:34]
-// CHECK: 124:28: IntegerLiteral= Extent=[124:28 - 124:34]
-// CHECK: 124:38: BinaryOperator= Extent=[124:38 - 124:49]
-// CHECK: 124:38: DeclRefExpr=c:2:14 Extent=[124:38 - 124:39]
-// CHECK: 124:43: UnexposedExpr= Extent=[124:43 - 124:49]
-// CHECK: 124:43: IntegerLiteral= Extent=[124:43 - 124:49]
-// CHECK: 124:53: BinaryOperator= Extent=[124:53 - 124:64]
-// CHECK: 124:53: DeclRefExpr=c:2:14 Extent=[124:53 - 124:54]
-// CHECK: 124:58: UnexposedExpr= Extent=[124:58 - 124:64]
-// CHECK: 124:58: IntegerLiteral= Extent=[124:58 - 124:64]
-// CHECK: 125:5: BinaryOperator= Extent=[125:5 - 125:16]
-// CHECK: 125:5: DeclRefExpr=c:2:14 Extent=[125:5 - 125:6]
-// CHECK: 125:10: UnexposedExpr= Extent=[125:10 - 125:16]
-// CHECK: 125:10: IntegerLiteral= Extent=[125:10 - 125:16]
-// CHECK: 125:20: BinaryOperator= Extent=[125:20 - 125:31]
-// CHECK: 125:20: DeclRefExpr=c:2:14 Extent=[125:20 - 125:21]
-// CHECK: 125:25: UnexposedExpr= Extent=[125:25 - 125:31]
-// CHECK: 125:25: IntegerLiteral= Extent=[125:25 - 125:31]
-// CHECK: 125:36: BinaryOperator= Extent=[125:36 - 125:62]
-// CHECK: 125:36: BinaryOperator= Extent=[125:36 - 125:47]
-// CHECK: 125:36: DeclRefExpr=c:2:14 Extent=[125:36 - 125:37]
-// CHECK: 125:41: UnexposedExpr= Extent=[125:41 - 125:47]
-// CHECK: 125:41: IntegerLiteral= Extent=[125:41 - 125:47]
-// CHECK: 125:51: BinaryOperator= Extent=[125:51 - 125:62]
-// CHECK: 125:51: DeclRefExpr=c:2:14 Extent=[125:51 - 125:52]
-// CHECK: 125:56: UnexposedExpr= Extent=[125:56 - 125:62]
-// CHECK: 125:56: IntegerLiteral= Extent=[125:56 - 125:62]
-// CHECK: 126:8: BinaryOperator= Extent=[126:8 - 126:19]
-// CHECK: 126:8: DeclRefExpr=c:2:14 Extent=[126:8 - 126:9]
-// CHECK: 126:13: UnexposedExpr= Extent=[126:13 - 126:19]
-// CHECK: 126:13: IntegerLiteral= Extent=[126:13 - 126:19]
-// CHECK: 126:24: BinaryOperator= Extent=[126:24 - 126:50]
-// CHECK: 126:24: BinaryOperator= Extent=[126:24 - 126:35]
-// CHECK: 126:24: DeclRefExpr=c:2:14 Extent=[126:24 - 126:25]
-// CHECK: 126:29: UnexposedExpr= Extent=[126:29 - 126:35]
-// CHECK: 126:29: IntegerLiteral= Extent=[126:29 - 126:35]
-// CHECK: 126:39: BinaryOperator= Extent=[126:39 - 126:50]
-// CHECK: 126:39: DeclRefExpr=c:2:14 Extent=[126:39 - 126:40]
-// CHECK: 126:44: UnexposedExpr= Extent=[126:44 - 126:50]
-// CHECK: 126:44: IntegerLiteral= Extent=[126:44 - 126:50]
-// CHECK: 127:8: BinaryOperator= Extent=[127:8 - 127:19]
-// CHECK: 127:8: DeclRefExpr=c:2:14 Extent=[127:8 - 127:9]
-// CHECK: 127:13: UnexposedExpr= Extent=[127:13 - 127:19]
-// CHECK: 127:13: IntegerLiteral= Extent=[127:13 - 127:19]
-// CHECK: 127:23: BinaryOperator= Extent=[127:23 - 127:34]
-// CHECK: 127:23: DeclRefExpr=c:2:14 Extent=[127:23 - 127:24]
-// CHECK: 127:28: UnexposedExpr= Extent=[127:28 - 127:34]
-// CHECK: 127:28: IntegerLiteral= Extent=[127:28 - 127:34]
-// CHECK: 127:38: BinaryOperator= Extent=[127:38 - 127:49]
-// CHECK: 127:38: DeclRefExpr=c:2:14 Extent=[127:38 - 127:39]
-// CHECK: 127:43: UnexposedExpr= Extent=[127:43 - 127:49]
-// CHECK: 127:43: IntegerLiteral= Extent=[127:43 - 127:49]
-// CHECK: 127:53: BinaryOperator= Extent=[127:53 - 127:64]
-// CHECK: 127:53: DeclRefExpr=c:2:14 Extent=[127:53 - 127:54]
-// CHECK: 127:58: UnexposedExpr= Extent=[127:58 - 127:64]
-// CHECK: 127:58: IntegerLiteral= Extent=[127:58 - 127:64]
-// CHECK: 128:6: BinaryOperator= Extent=[128:6 - 128:32]
-// CHECK: 128:6: BinaryOperator= Extent=[128:6 - 128:17]
-// CHECK: 128:6: DeclRefExpr=c:2:14 Extent=[128:6 - 128:7]
-// CHECK: 128:11: UnexposedExpr= Extent=[128:11 - 128:17]
-// CHECK: 128:11: IntegerLiteral= Extent=[128:11 - 128:17]
-// CHECK: 128:21: BinaryOperator= Extent=[128:21 - 128:32]
-// CHECK: 128:21: DeclRefExpr=c:2:14 Extent=[128:21 - 128:22]
-// CHECK: 128:26: UnexposedExpr= Extent=[128:26 - 128:32]
-// CHECK: 128:26: IntegerLiteral= Extent=[128:26 - 128:32]
-// CHECK: 129:9: BinaryOperator= Extent=[129:9 - 129:35]
-// CHECK: 129:9: BinaryOperator= Extent=[129:9 - 129:20]
-// CHECK: 129:9: DeclRefExpr=c:2:14 Extent=[129:9 - 129:10]
-// CHECK: 129:14: UnexposedExpr= Extent=[129:14 - 129:20]
-// CHECK: 129:14: IntegerLiteral= Extent=[129:14 - 129:20]
-// CHECK: 129:24: BinaryOperator= Extent=[129:24 - 129:35]
-// CHECK: 129:24: DeclRefExpr=c:2:14 Extent=[129:24 - 129:25]
-// CHECK: 129:29: UnexposedExpr= Extent=[129:29 - 129:35]
-// CHECK: 129:29: IntegerLiteral= Extent=[129:29 - 129:35]
-// CHECK: 130:8: BinaryOperator= Extent=[130:8 - 130:19]
-// CHECK: 130:8: DeclRefExpr=c:2:14 Extent=[130:8 - 130:9]
-// CHECK: 130:13: UnexposedExpr= Extent=[130:13 - 130:19]
-// CHECK: 130:13: IntegerLiteral= Extent=[130:13 - 130:19]
-// CHECK: 130:23: BinaryOperator= Extent=[130:23 - 130:34]
-// CHECK: 130:23: DeclRefExpr=c:2:14 Extent=[130:23 - 130:24]
-// CHECK: 130:28: UnexposedExpr= Extent=[130:28 - 130:34]
-// CHECK: 130:28: IntegerLiteral= Extent=[130:28 - 130:34]
-// CHECK: 130:38: BinaryOperator= Extent=[130:38 - 130:49]
-// CHECK: 130:38: DeclRefExpr=c:2:14 Extent=[130:38 - 130:39]
-// CHECK: 130:43: UnexposedExpr= Extent=[130:43 - 130:49]
-// CHECK: 130:43: IntegerLiteral= Extent=[130:43 - 130:49]
-// CHECK: 130:53: BinaryOperator= Extent=[130:53 - 130:64]
-// CHECK: 130:53: DeclRefExpr=c:2:14 Extent=[130:53 - 130:54]
-// CHECK: 130:58: UnexposedExpr= Extent=[130:58 - 130:64]
-// CHECK: 130:58: IntegerLiteral= Extent=[130:58 - 130:64]
-// CHECK: 131:6: BinaryOperator= Extent=[131:6 - 131:32]
-// CHECK: 131:6: BinaryOperator= Extent=[131:6 - 131:17]
-// CHECK: 131:6: DeclRefExpr=c:2:14 Extent=[131:6 - 131:7]
-// CHECK: 131:11: UnexposedExpr= Extent=[131:11 - 131:17]
-// CHECK: 131:11: IntegerLiteral= Extent=[131:11 - 131:17]
-// CHECK: 131:21: BinaryOperator= Extent=[131:21 - 131:32]
-// CHECK: 131:21: DeclRefExpr=c:2:14 Extent=[131:21 - 131:22]
-// CHECK: 131:26: UnexposedExpr= Extent=[131:26 - 131:32]
-// CHECK: 131:26: IntegerLiteral= Extent=[131:26 - 131:32]
-// CHECK: 132:9: BinaryOperator= Extent=[132:9 - 132:35]
-// CHECK: 132:9: BinaryOperator= Extent=[132:9 - 132:20]
-// CHECK: 132:9: DeclRefExpr=c:2:14 Extent=[132:9 - 132:10]
-// CHECK: 132:14: UnexposedExpr= Extent=[132:14 - 132:20]
-// CHECK: 132:14: IntegerLiteral= Extent=[132:14 - 132:20]
-// CHECK: 132:24: BinaryOperator= Extent=[132:24 - 132:35]
-// CHECK: 132:24: DeclRefExpr=c:2:14 Extent=[132:24 - 132:25]
-// CHECK: 132:29: UnexposedExpr= Extent=[132:29 - 132:35]
-// CHECK: 132:29: IntegerLiteral= Extent=[132:29 - 132:35]
-// CHECK: 133:8: BinaryOperator= Extent=[133:8 - 133:19]
-// CHECK: 133:8: DeclRefExpr=c:2:14 Extent=[133:8 - 133:9]
-// CHECK: 133:13: UnexposedExpr= Extent=[133:13 - 133:19]
-// CHECK: 133:13: IntegerLiteral= Extent=[133:13 - 133:19]
-// CHECK: 133:24: BinaryOperator= Extent=[133:24 - 133:50]
-// CHECK: 133:24: BinaryOperator= Extent=[133:24 - 133:35]
-// CHECK: 133:24: DeclRefExpr=c:2:14 Extent=[133:24 - 133:25]
-// CHECK: 133:29: UnexposedExpr= Extent=[133:29 - 133:35]
-// CHECK: 133:29: IntegerLiteral= Extent=[133:29 - 133:35]
-// CHECK: 133:39: BinaryOperator= Extent=[133:39 - 133:50]
-// CHECK: 133:39: DeclRefExpr=c:2:14 Extent=[133:39 - 133:40]
-// CHECK: 133:44: UnexposedExpr= Extent=[133:44 - 133:50]
-// CHECK: 133:44: IntegerLiteral= Extent=[133:44 - 133:50]
-// CHECK: 134:8: BinaryOperator= Extent=[134:8 - 134:19]
-// CHECK: 134:8: DeclRefExpr=c:2:14 Extent=[134:8 - 134:9]
-// CHECK: 134:13: UnexposedExpr= Extent=[134:13 - 134:19]
-// CHECK: 134:13: IntegerLiteral= Extent=[134:13 - 134:19]
-// CHECK: 134:23: BinaryOperator= Extent=[134:23 - 134:34]
-// CHECK: 134:23: DeclRefExpr=c:2:14 Extent=[134:23 - 134:24]
-// CHECK: 134:28: UnexposedExpr= Extent=[134:28 - 134:34]
-// CHECK: 134:28: IntegerLiteral= Extent=[134:28 - 134:34]
-// CHECK: 134:38: BinaryOperator= Extent=[134:38 - 134:49]
-// CHECK: 134:38: DeclRefExpr=c:2:14 Extent=[134:38 - 134:39]
-// CHECK: 134:43: UnexposedExpr= Extent=[134:43 - 134:49]
-// CHECK: 134:43: IntegerLiteral= Extent=[134:43 - 134:49]
-// CHECK: 134:54: BinaryOperator= Extent=[134:54 - 134:80]
-// CHECK: 134:54: BinaryOperator= Extent=[134:54 - 134:65]
-// CHECK: 134:54: DeclRefExpr=c:2:14 Extent=[134:54 - 134:55]
-// CHECK: 134:59: UnexposedExpr= Extent=[134:59 - 134:65]
-// CHECK: 134:59: IntegerLiteral= Extent=[134:59 - 134:65]
-// CHECK: 134:69: BinaryOperator= Extent=[134:69 - 134:80]
-// CHECK: 134:69: DeclRefExpr=c:2:14 Extent=[134:69 - 134:70]
-// CHECK: 134:74: UnexposedExpr= Extent=[134:74 - 134:80]
-// CHECK: 134:74: IntegerLiteral= Extent=[134:74 - 134:80]
-// CHECK: 135:9: BinaryOperator= Extent=[135:9 - 135:35]
-// CHECK: 135:9: BinaryOperator= Extent=[135:9 - 135:20]
-// CHECK: 135:9: DeclRefExpr=c:2:14 Extent=[135:9 - 135:10]
-// CHECK: 135:14: UnexposedExpr= Extent=[135:14 - 135:20]
-// CHECK: 135:14: IntegerLiteral= Extent=[135:14 - 135:20]
-// CHECK: 135:24: BinaryOperator= Extent=[135:24 - 135:35]
-// CHECK: 135:24: DeclRefExpr=c:2:14 Extent=[135:24 - 135:25]
-// CHECK: 135:29: UnexposedExpr= Extent=[135:29 - 135:35]
-// CHECK: 135:29: IntegerLiteral= Extent=[135:29 - 135:35]
-// CHECK: 136:9: BinaryOperator= Extent=[136:9 - 136:35]
-// CHECK: 136:9: BinaryOperator= Extent=[136:9 - 136:20]
-// CHECK: 136:9: DeclRefExpr=c:2:14 Extent=[136:9 - 136:10]
-// CHECK: 136:14: UnexposedExpr= Extent=[136:14 - 136:20]
-// CHECK: 136:14: IntegerLiteral= Extent=[136:14 - 136:20]
-// CHECK: 136:24: BinaryOperator= Extent=[136:24 - 136:35]
-// CHECK: 136:24: DeclRefExpr=c:2:14 Extent=[136:24 - 136:25]
-// CHECK: 136:29: UnexposedExpr= Extent=[136:29 - 136:35]
-// CHECK: 136:29: IntegerLiteral= Extent=[136:29 - 136:35]
-// CHECK: 137:9: BinaryOperator= Extent=[137:9 - 137:35]
-// CHECK: 137:9: BinaryOperator= Extent=[137:9 - 137:20]
-// CHECK: 137:9: DeclRefExpr=c:2:14 Extent=[137:9 - 137:10]
-// CHECK: 137:14: UnexposedExpr= Extent=[137:14 - 137:20]
-// CHECK: 137:14: IntegerLiteral= Extent=[137:14 - 137:20]
-// CHECK: 137:24: BinaryOperator= Extent=[137:24 - 137:35]
-// CHECK: 137:24: DeclRefExpr=c:2:14 Extent=[137:24 - 137:25]
-// CHECK: 137:29: UnexposedExpr= Extent=[137:29 - 137:35]
-// CHECK: 137:29: IntegerLiteral= Extent=[137:29 - 137:35]
-// CHECK: 138:9: BinaryOperator= Extent=[138:9 - 138:35]
-// CHECK: 138:9: BinaryOperator= Extent=[138:9 - 138:20]
-// CHECK: 138:9: DeclRefExpr=c:2:14 Extent=[138:9 - 138:10]
-// CHECK: 138:14: UnexposedExpr= Extent=[138:14 - 138:20]
-// CHECK: 138:14: IntegerLiteral= Extent=[138:14 - 138:20]
-// CHECK: 138:24: BinaryOperator= Extent=[138:24 - 138:35]
-// CHECK: 138:24: DeclRefExpr=c:2:14 Extent=[138:24 - 138:25]
-// CHECK: 138:29: UnexposedExpr= Extent=[138:29 - 138:35]
-// CHECK: 138:29: IntegerLiteral= Extent=[138:29 - 138:35]
-// CHECK: 139:9: BinaryOperator= Extent=[139:9 - 139:35]
-// CHECK: 139:9: BinaryOperator= Extent=[139:9 - 139:20]
-// CHECK: 139:9: DeclRefExpr=c:2:14 Extent=[139:9 - 139:10]
-// CHECK: 139:14: UnexposedExpr= Extent=[139:14 - 139:20]
-// CHECK: 139:14: IntegerLiteral= Extent=[139:14 - 139:20]
-// CHECK: 139:24: BinaryOperator= Extent=[139:24 - 139:35]
-// CHECK: 139:24: DeclRefExpr=c:2:14 Extent=[139:24 - 139:25]
-// CHECK: 139:29: UnexposedExpr= Extent=[139:29 - 139:35]
-// CHECK: 139:29: IntegerLiteral= Extent=[139:29 - 139:35]
-// CHECK: 140:9: BinaryOperator= Extent=[140:9 - 140:35]
-// CHECK: 140:9: BinaryOperator= Extent=[140:9 - 140:20]
-// CHECK: 140:9: DeclRefExpr=c:2:14 Extent=[140:9 - 140:10]
-// CHECK: 140:14: UnexposedExpr= Extent=[140:14 - 140:20]
-// CHECK: 140:14: IntegerLiteral= Extent=[140:14 - 140:20]
-// CHECK: 140:24: BinaryOperator= Extent=[140:24 - 140:35]
-// CHECK: 140:24: DeclRefExpr=c:2:14 Extent=[140:24 - 140:25]
-// CHECK: 140:29: UnexposedExpr= Extent=[140:29 - 140:35]
-// CHECK: 140:29: IntegerLiteral= Extent=[140:29 - 140:35]
-// CHECK: 141:8: BinaryOperator= Extent=[141:8 - 141:19]
-// CHECK: 141:8: DeclRefExpr=c:2:14 Extent=[141:8 - 141:9]
-// CHECK: 141:13: UnexposedExpr= Extent=[141:13 - 141:19]
-// CHECK: 141:13: IntegerLiteral= Extent=[141:13 - 141:19]
-// CHECK: 141:23: BinaryOperator= Extent=[141:23 - 141:34]
-// CHECK: 141:23: DeclRefExpr=c:2:14 Extent=[141:23 - 141:24]
-// CHECK: 141:28: UnexposedExpr= Extent=[141:28 - 141:34]
-// CHECK: 141:28: IntegerLiteral= Extent=[141:28 - 141:34]
-// CHECK: 141:38: BinaryOperator= Extent=[141:38 - 141:49]
-// CHECK: 141:38: DeclRefExpr=c:2:14 Extent=[141:38 - 141:39]
-// CHECK: 141:43: UnexposedExpr= Extent=[141:43 - 141:49]
-// CHECK: 141:43: IntegerLiteral= Extent=[141:43 - 141:49]
-// CHECK: 141:54: BinaryOperator= Extent=[141:54 - 141:80]
-// CHECK: 141:54: BinaryOperator= Extent=[141:54 - 141:65]
-// CHECK: 141:54: DeclRefExpr=c:2:14 Extent=[141:54 - 141:55]
-// CHECK: 141:59: UnexposedExpr= Extent=[141:59 - 141:65]
-// CHECK: 141:59: IntegerLiteral= Extent=[141:59 - 141:65]
-// CHECK: 141:69: BinaryOperator= Extent=[141:69 - 141:80]
-// CHECK: 141:69: DeclRefExpr=c:2:14 Extent=[141:69 - 141:70]
-// CHECK: 141:74: UnexposedExpr= Extent=[141:74 - 141:80]
-// CHECK: 141:74: IntegerLiteral= Extent=[141:74 - 141:80]
-// CHECK: 142:9: BinaryOperator= Extent=[142:9 - 142:35]
-// CHECK: 142:9: BinaryOperator= Extent=[142:9 - 142:20]
-// CHECK: 142:9: DeclRefExpr=c:2:14 Extent=[142:9 - 142:10]
-// CHECK: 142:14: UnexposedExpr= Extent=[142:14 - 142:20]
-// CHECK: 142:14: IntegerLiteral= Extent=[142:14 - 142:20]
-// CHECK: 142:24: BinaryOperator= Extent=[142:24 - 142:35]
-// CHECK: 142:24: DeclRefExpr=c:2:14 Extent=[142:24 - 142:25]
-// CHECK: 142:29: UnexposedExpr= Extent=[142:29 - 142:35]
-// CHECK: 142:29: IntegerLiteral= Extent=[142:29 - 142:35]
-// CHECK: 143:9: BinaryOperator= Extent=[143:9 - 143:35]
-// CHECK: 143:9: BinaryOperator= Extent=[143:9 - 143:20]
-// CHECK: 143:9: DeclRefExpr=c:2:14 Extent=[143:9 - 143:10]
-// CHECK: 143:14: UnexposedExpr= Extent=[143:14 - 143:20]
-// CHECK: 143:14: IntegerLiteral= Extent=[143:14 - 143:20]
-// CHECK: 143:24: BinaryOperator= Extent=[143:24 - 143:35]
-// CHECK: 143:24: DeclRefExpr=c:2:14 Extent=[143:24 - 143:25]
-// CHECK: 143:29: UnexposedExpr= Extent=[143:29 - 143:35]
-// CHECK: 143:29: IntegerLiteral= Extent=[143:29 - 143:35]
-// CHECK: 144:8: BinaryOperator= Extent=[144:8 - 144:19]
-// CHECK: 144:8: DeclRefExpr=c:2:14 Extent=[144:8 - 144:9]
-// CHECK: 144:13: UnexposedExpr= Extent=[144:13 - 144:19]
-// CHECK: 144:13: IntegerLiteral= Extent=[144:13 - 144:19]
-// CHECK: 144:24: BinaryOperator= Extent=[144:24 - 144:50]
-// CHECK: 144:24: BinaryOperator= Extent=[144:24 - 144:35]
-// CHECK: 144:24: DeclRefExpr=c:2:14 Extent=[144:24 - 144:25]
-// CHECK: 144:29: UnexposedExpr= Extent=[144:29 - 144:35]
-// CHECK: 144:29: IntegerLiteral= Extent=[144:29 - 144:35]
-// CHECK: 144:39: BinaryOperator= Extent=[144:39 - 144:50]
-// CHECK: 144:39: DeclRefExpr=c:2:14 Extent=[144:39 - 144:40]
-// CHECK: 144:44: UnexposedExpr= Extent=[144:44 - 144:50]
-// CHECK: 144:44: IntegerLiteral= Extent=[144:44 - 144:50]
-// CHECK: 145:9: BinaryOperator= Extent=[145:9 - 145:35]
-// CHECK: 145:9: BinaryOperator= Extent=[145:9 - 145:20]
-// CHECK: 145:9: DeclRefExpr=c:2:14 Extent=[145:9 - 145:10]
-// CHECK: 145:14: UnexposedExpr= Extent=[145:14 - 145:20]
-// CHECK: 145:14: IntegerLiteral= Extent=[145:14 - 145:20]
-// CHECK: 145:24: BinaryOperator= Extent=[145:24 - 145:35]
-// CHECK: 145:24: DeclRefExpr=c:2:14 Extent=[145:24 - 145:25]
-// CHECK: 145:29: UnexposedExpr= Extent=[145:29 - 145:35]
-// CHECK: 145:29: IntegerLiteral= Extent=[145:29 - 145:35]
-// CHECK: 146:9: BinaryOperator= Extent=[146:9 - 146:35]
-// CHECK: 146:9: BinaryOperator= Extent=[146:9 - 146:20]
-// CHECK: 146:9: DeclRefExpr=c:2:14 Extent=[146:9 - 146:10]
-// CHECK: 146:14: UnexposedExpr= Extent=[146:14 - 146:20]
-// CHECK: 146:14: IntegerLiteral= Extent=[146:14 - 146:20]
-// CHECK: 146:24: BinaryOperator= Extent=[146:24 - 146:35]
-// CHECK: 146:24: DeclRefExpr=c:2:14 Extent=[146:24 - 146:25]
-// CHECK: 146:29: UnexposedExpr= Extent=[146:29 - 146:35]
-// CHECK: 146:29: IntegerLiteral= Extent=[146:29 - 146:35]
-// CHECK: 147:9: BinaryOperator= Extent=[147:9 - 147:35]
-// CHECK: 147:9: BinaryOperator= Extent=[147:9 - 147:20]
-// CHECK: 147:9: DeclRefExpr=c:2:14 Extent=[147:9 - 147:10]
-// CHECK: 147:14: UnexposedExpr= Extent=[147:14 - 147:20]
-// CHECK: 147:14: IntegerLiteral= Extent=[147:14 - 147:20]
-// CHECK: 147:24: BinaryOperator= Extent=[147:24 - 147:35]
-// CHECK: 147:24: DeclRefExpr=c:2:14 Extent=[147:24 - 147:25]
-// CHECK: 147:29: UnexposedExpr= Extent=[147:29 - 147:35]
-// CHECK: 147:29: IntegerLiteral= Extent=[147:29 - 147:35]
-// CHECK: 148:9: BinaryOperator= Extent=[148:9 - 148:35]
-// CHECK: 148:9: BinaryOperator= Extent=[148:9 - 148:20]
-// CHECK: 148:9: DeclRefExpr=c:2:14 Extent=[148:9 - 148:10]
-// CHECK: 148:14: UnexposedExpr= Extent=[148:14 - 148:20]
-// CHECK: 148:14: IntegerLiteral= Extent=[148:14 - 148:20]
-// CHECK: 148:24: BinaryOperator= Extent=[148:24 - 148:35]
-// CHECK: 148:24: DeclRefExpr=c:2:14 Extent=[148:24 - 148:25]
-// CHECK: 148:29: UnexposedExpr= Extent=[148:29 - 148:35]
-// CHECK: 148:29: IntegerLiteral= Extent=[148:29 - 148:35]
-// CHECK: 149:9: BinaryOperator= Extent=[149:9 - 149:35]
-// CHECK: 149:9: BinaryOperator= Extent=[149:9 - 149:20]
-// CHECK: 149:9: DeclRefExpr=c:2:14 Extent=[149:9 - 149:10]
-// CHECK: 149:14: UnexposedExpr= Extent=[149:14 - 149:20]
-// CHECK: 149:14: IntegerLiteral= Extent=[149:14 - 149:20]
-// CHECK: 149:24: BinaryOperator= Extent=[149:24 - 149:35]
-// CHECK: 149:24: DeclRefExpr=c:2:14 Extent=[149:24 - 149:25]
-// CHECK: 149:29: UnexposedExpr= Extent=[149:29 - 149:35]
-// CHECK: 149:29: IntegerLiteral= Extent=[149:29 - 149:35]
-// CHECK: 150:9: BinaryOperator= Extent=[150:9 - 150:35]
-// CHECK: 150:9: BinaryOperator= Extent=[150:9 - 150:20]
-// CHECK: 150:9: DeclRefExpr=c:2:14 Extent=[150:9 - 150:10]
-// CHECK: 150:14: UnexposedExpr= Extent=[150:14 - 150:20]
-// CHECK: 150:14: IntegerLiteral= Extent=[150:14 - 150:20]
-// CHECK: 150:24: BinaryOperator= Extent=[150:24 - 150:35]
-// CHECK: 150:24: DeclRefExpr=c:2:14 Extent=[150:24 - 150:25]
-// CHECK: 150:29: UnexposedExpr= Extent=[150:29 - 150:35]
-// CHECK: 150:29: IntegerLiteral= Extent=[150:29 - 150:35]
-// CHECK: 151:8: BinaryOperator= Extent=[151:8 - 151:19]
-// CHECK: 151:8: DeclRefExpr=c:2:14 Extent=[151:8 - 151:9]
-// CHECK: 151:13: UnexposedExpr= Extent=[151:13 - 151:19]
-// CHECK: 151:13: IntegerLiteral= Extent=[151:13 - 151:19]
-// CHECK: 151:24: BinaryOperator= Extent=[151:24 - 151:50]
-// CHECK: 151:24: BinaryOperator= Extent=[151:24 - 151:35]
-// CHECK: 151:24: DeclRefExpr=c:2:14 Extent=[151:24 - 151:25]
-// CHECK: 151:29: UnexposedExpr= Extent=[151:29 - 151:35]
-// CHECK: 151:29: IntegerLiteral= Extent=[151:29 - 151:35]
-// CHECK: 151:39: BinaryOperator= Extent=[151:39 - 151:50]
-// CHECK: 151:39: DeclRefExpr=c:2:14 Extent=[151:39 - 151:40]
-// CHECK: 151:44: UnexposedExpr= Extent=[151:44 - 151:50]
-// CHECK: 151:44: IntegerLiteral= Extent=[151:44 - 151:50]
-// CHECK: 152:8: BinaryOperator= Extent=[152:8 - 152:19]
-// CHECK: 152:8: DeclRefExpr=c:2:14 Extent=[152:8 - 152:9]
-// CHECK: 152:13: UnexposedExpr= Extent=[152:13 - 152:19]
-// CHECK: 152:13: IntegerLiteral= Extent=[152:13 - 152:19]
-// CHECK: 152:24: BinaryOperator= Extent=[152:24 - 152:50]
-// CHECK: 152:24: BinaryOperator= Extent=[152:24 - 152:35]
-// CHECK: 152:24: DeclRefExpr=c:2:14 Extent=[152:24 - 152:25]
-// CHECK: 152:29: UnexposedExpr= Extent=[152:29 - 152:35]
-// CHECK: 152:29: IntegerLiteral= Extent=[152:29 - 152:35]
-// CHECK: 152:39: BinaryOperator= Extent=[152:39 - 152:50]
-// CHECK: 152:39: DeclRefExpr=c:2:14 Extent=[152:39 - 152:40]
-// CHECK: 152:44: UnexposedExpr= Extent=[152:44 - 152:50]
-// CHECK: 152:44: IntegerLiteral= Extent=[152:44 - 152:50]
-// CHECK: 153:9: BinaryOperator= Extent=[153:9 - 153:35]
-// CHECK: 153:9: BinaryOperator= Extent=[153:9 - 153:20]
-// CHECK: 153:9: DeclRefExpr=c:2:14 Extent=[153:9 - 153:10]
-// CHECK: 153:14: UnexposedExpr= Extent=[153:14 - 153:20]
-// CHECK: 153:14: IntegerLiteral= Extent=[153:14 - 153:20]
-// CHECK: 153:24: BinaryOperator= Extent=[153:24 - 153:35]
-// CHECK: 153:24: DeclRefExpr=c:2:14 Extent=[153:24 - 153:25]
-// CHECK: 153:29: UnexposedExpr= Extent=[153:29 - 153:35]
-// CHECK: 153:29: IntegerLiteral= Extent=[153:29 - 153:35]
-// CHECK: 154:9: BinaryOperator= Extent=[154:9 - 154:35]
-// CHECK: 154:9: BinaryOperator= Extent=[154:9 - 154:20]
-// CHECK: 154:9: DeclRefExpr=c:2:14 Extent=[154:9 - 154:10]
-// CHECK: 154:14: UnexposedExpr= Extent=[154:14 - 154:20]
-// CHECK: 154:14: IntegerLiteral= Extent=[154:14 - 154:20]
-// CHECK: 154:24: BinaryOperator= Extent=[154:24 - 154:35]
-// CHECK: 154:24: DeclRefExpr=c:2:14 Extent=[154:24 - 154:25]
-// CHECK: 154:29: UnexposedExpr= Extent=[154:29 - 154:35]
-// CHECK: 154:29: IntegerLiteral= Extent=[154:29 - 154:35]
-// CHECK: 155:9: BinaryOperator= Extent=[155:9 - 155:35]
-// CHECK: 155:9: BinaryOperator= Extent=[155:9 - 155:20]
-// CHECK: 155:9: DeclRefExpr=c:2:14 Extent=[155:9 - 155:10]
-// CHECK: 155:14: UnexposedExpr= Extent=[155:14 - 155:20]
-// CHECK: 155:14: IntegerLiteral= Extent=[155:14 - 155:20]
-// CHECK: 155:24: BinaryOperator= Extent=[155:24 - 155:35]
-// CHECK: 155:24: DeclRefExpr=c:2:14 Extent=[155:24 - 155:25]
-// CHECK: 155:29: UnexposedExpr= Extent=[155:29 - 155:35]
-// CHECK: 155:29: IntegerLiteral= Extent=[155:29 - 155:35]
-// CHECK: 156:9: BinaryOperator= Extent=[156:9 - 156:35]
-// CHECK: 156:9: BinaryOperator= Extent=[156:9 - 156:20]
-// CHECK: 156:9: DeclRefExpr=c:2:14 Extent=[156:9 - 156:10]
-// CHECK: 156:14: UnexposedExpr= Extent=[156:14 - 156:20]
-// CHECK: 156:14: IntegerLiteral= Extent=[156:14 - 156:20]
-// CHECK: 156:24: BinaryOperator= Extent=[156:24 - 156:35]
-// CHECK: 156:24: DeclRefExpr=c:2:14 Extent=[156:24 - 156:25]
-// CHECK: 156:29: UnexposedExpr= Extent=[156:29 - 156:35]
-// CHECK: 156:29: IntegerLiteral= Extent=[156:29 - 156:35]
-// CHECK: 157:9: BinaryOperator= Extent=[157:9 - 157:35]
-// CHECK: 157:9: BinaryOperator= Extent=[157:9 - 157:20]
-// CHECK: 157:9: DeclRefExpr=c:2:14 Extent=[157:9 - 157:10]
-// CHECK: 157:14: UnexposedExpr= Extent=[157:14 - 157:20]
-// CHECK: 157:14: IntegerLiteral= Extent=[157:14 - 157:20]
-// CHECK: 157:24: BinaryOperator= Extent=[157:24 - 157:35]
-// CHECK: 157:24: DeclRefExpr=c:2:14 Extent=[157:24 - 157:25]
-// CHECK: 157:29: UnexposedExpr= Extent=[157:29 - 157:35]
-// CHECK: 157:29: IntegerLiteral= Extent=[157:29 - 157:35]
-// CHECK: 158:8: BinaryOperator= Extent=[158:8 - 158:19]
-// CHECK: 158:8: DeclRefExpr=c:2:14 Extent=[158:8 - 158:9]
-// CHECK: 158:13: UnexposedExpr= Extent=[158:13 - 158:19]
-// CHECK: 158:13: IntegerLiteral= Extent=[158:13 - 158:19]
-// CHECK: 158:24: BinaryOperator= Extent=[158:24 - 158:50]
-// CHECK: 158:24: BinaryOperator= Extent=[158:24 - 158:35]
-// CHECK: 158:24: DeclRefExpr=c:2:14 Extent=[158:24 - 158:25]
-// CHECK: 158:29: UnexposedExpr= Extent=[158:29 - 158:35]
-// CHECK: 158:29: IntegerLiteral= Extent=[158:29 - 158:35]
-// CHECK: 158:39: BinaryOperator= Extent=[158:39 - 158:50]
-// CHECK: 158:39: DeclRefExpr=c:2:14 Extent=[158:39 - 158:40]
-// CHECK: 158:44: UnexposedExpr= Extent=[158:44 - 158:50]
-// CHECK: 158:44: IntegerLiteral= Extent=[158:44 - 158:50]
-// CHECK: 159:9: BinaryOperator= Extent=[159:9 - 159:35]
-// CHECK: 159:9: BinaryOperator= Extent=[159:9 - 159:20]
-// CHECK: 159:9: DeclRefExpr=c:2:14 Extent=[159:9 - 159:10]
-// CHECK: 159:14: UnexposedExpr= Extent=[159:14 - 159:20]
-// CHECK: 159:14: IntegerLiteral= Extent=[159:14 - 159:20]
-// CHECK: 159:24: BinaryOperator= Extent=[159:24 - 159:35]
-// CHECK: 159:24: DeclRefExpr=c:2:14 Extent=[159:24 - 159:25]
-// CHECK: 159:29: UnexposedExpr= Extent=[159:29 - 159:35]
-// CHECK: 159:29: IntegerLiteral= Extent=[159:29 - 159:35]
-// CHECK: 160:8: BinaryOperator= Extent=[160:8 - 160:19]
-// CHECK: 160:8: DeclRefExpr=c:2:14 Extent=[160:8 - 160:9]
-// CHECK: 160:13: UnexposedExpr= Extent=[160:13 - 160:19]
-// CHECK: 160:13: IntegerLiteral= Extent=[160:13 - 160:19]
-// CHECK: 160:23: ParenExpr= Extent=[160:23 - 160:51]
-// CHECK: 160:24: BinaryOperator= Extent=[160:24 - 160:50]
-// CHECK: 160:24: BinaryOperator= Extent=[160:24 - 160:35]
-// CHECK: 160:24: DeclRefExpr=c:2:14 Extent=[160:24 - 160:25]
-// CHECK: 160:29: UnexposedExpr= Extent=[160:29 - 160:35]
-// CHECK: 160:29: IntegerLiteral= Extent=[160:29 - 160:35]
-// CHECK: 160:39: BinaryOperator= Extent=[160:39 - 160:50]
-// CHECK: 160:39: DeclRefExpr=c:2:14 Extent=[160:39 - 160:40]
-// CHECK: 160:44: UnexposedExpr= Extent=[160:44 - 160:50]
-// CHECK: 160:44: IntegerLiteral= Extent=[160:44 - 160:50]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/overrides.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/overrides.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/overrides.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-struct A {
-  virtual void f(int);
-};
-
-struct B {
-  virtual void f(int);
-  virtual void g();
-};
-
-struct C : B, A { 
-  virtual void g();
-};
-
-struct D : C {
-  virtual void f(int);
-};
-
-void C::g() {}
-
-// RUN: c-index-test -test-load-source local %s | FileCheck %s
-// CHECK: overrides.cpp:11:16: CXXMethod=g:11:16 (virtual) [Overrides @7:16] Extent=[11:3 - 11:19]
-// CHECK: overrides.cpp:15:16: CXXMethod=f:15:16 (virtual) [Overrides @2:16, @6:16] Extent=[15:3 - 15:22]
-// CHECK: overrides.cpp:18:9: CXXMethod=g:18:9 (Definition) (virtual) [Overrides @7:16] Extent=[18:1 - 18:15]

Modified: trunk/contrib/llvm/tools/clang/test/Index/overrides.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/overrides.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/overrides.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,119 +0,0 @@
-
- at protocol P1
-- (void)protoMethod;
-- (void)protoMethodWithParam:(int)param;
- at end
-
- at protocol P3
-- (void)protoMethod;
- at end
-
- at protocol P2 <P1>
-- (void)protoMethod;
- at end
-
- at interface A
-- (void)method;
-- (void)protoMethod;
-+ (void)methodWithParam:(int)param;
- at end
-
- at interface B : A <P2, P3>
-- (void)method;
-- (void)protoMethod;
- at end
-
- at implementation B
-- (void)method { }
-+ (void)methodWithParam:(int)param { }
- at end
-
- at protocol P4 <P3>
-- (void)protoMethod;
- at end
-
- at interface B(cat) <P4>
-- (void)protoMethod;
- at end
-
- at interface B2
- at end
-
- at interface B2(cat)
--(void)meth;
- at end
-
- at interface I2 : B2
- at end
-
- at implementation I2
--(void)meth { }
- at end
-
- at protocol P5
--(void)kol;
--(void)kol;
- at end
-
- at protocol P6
- at property (readonly) id prop1;
- at property (readonly) id prop2;
--(void)meth;
- at end
-
- at interface I3 <P6>
- at property (readwrite) id prop1;
- at property (readonly) id bar;
- at end
-
- at interface I3()
- at property (readwrite) id prop2;
- at property (readwrite) id bar;
--(void)meth;
- at end
-
- at interface B4
--(id)prop;
--(void)setProp:(id)prop;
- at end
-
- at interface I4 : B4
- at property (assign) id prop;
- at end
-
- at interface B5
- at end
-
- at interface I5 : B5
--(void)meth;
- at end
-
- at interface B5(cat)
--(void)meth;
- at end
-
- at implementation I5
--(void)meth{}
- at end
-
-// RUN: c-index-test -test-load-source local %s | FileCheck %s
-// CHECK: overrides.m:12:9: ObjCInstanceMethodDecl=protoMethod:12:9 [Overrides @3:9]
-// CHECK: overrides.m:22:9: ObjCInstanceMethodDecl=method:22:9 [Overrides @16:9]
-// CHECK: overrides.m:23:9: ObjCInstanceMethodDecl=protoMethod:23:9 [Overrides @8:9, @12:9, @17:9, @32:9]
-// CHECK: overrides.m:27:9: ObjCInstanceMethodDecl=method:27:9 (Definition) [Overrides @16:9]
-// CHECK: overrides.m:28:9: ObjCClassMethodDecl=methodWithParam::28:9 (Definition) [Overrides @18:9]
-// CHECK: overrides.m:32:9: ObjCInstanceMethodDecl=protoMethod:32:9 [Overrides @8:9]
-// CHECK: overrides.m:36:9: ObjCInstanceMethodDecl=protoMethod:36:9 [Overrides @8:9, @12:9, @17:9, @32:9]
-// CHECK: overrides.m:50:8: ObjCInstanceMethodDecl=meth:50:8 (Definition) [Overrides @43:8]
-// CHECK: overrides.m:55:8: ObjCInstanceMethodDecl=kol:55:8 Extent=[55:1 - 55:12]
-// CHECK: overrides.m:65:26: ObjCInstanceMethodDecl=prop1:65:26 [Overrides @59:25] Extent=[65:26 - 65:31]
-// CHECK: overrides.m:65:26: ObjCInstanceMethodDecl=setProp1::65:26 Extent=[65:26 - 65:31]
-// CHECK: overrides.m:70:26: ObjCInstanceMethodDecl=prop2:70:26 [Overrides @60:25] Extent=[70:26 - 70:31]
-// CHECK: overrides.m:70:26: ObjCInstanceMethodDecl=setProp2::70:26 Extent=[70:26 - 70:31]
-// CHECK: overrides.m:71:26: ObjCInstanceMethodDecl=setBar::71:26 Extent=[71:26 - 71:29]
-// CHECK: overrides.m:72:8: ObjCInstanceMethodDecl=meth:72:8 [Overrides @61:8] Extent=[72:1 - 72:13]
-// CHECK: overrides.m:81:23: ObjCInstanceMethodDecl=prop:81:23 [Overrides @76:6] Extent=[81:23 - 81:27]
-// CHECK: overrides.m:81:23: ObjCInstanceMethodDecl=setProp::81:23 [Overrides @77:8] Extent=[81:23 - 81:27]
-// CHECK: overrides.m:92:8: ObjCInstanceMethodDecl=meth:92:8 Extent=[92:1 - 92:13]
-// CHECK: overrides.m:95:17: ObjCImplementationDecl=I5:95:17 (Definition) Extent=[95:1 - 97:2]
-// CHECK: overrides.m:96:8: ObjCInstanceMethodDecl=meth:96:8 (Definition) [Overrides @92:8] Extent=[96:1 - 96:14]

Modified: trunk/contrib/llvm/tools/clang/test/Index/overriding-ftemplate-comments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/overriding-ftemplate-comments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/overriding-ftemplate-comments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out
-// RUN: FileCheck %s < %t/out
-// Test to search overridden methods for documentation when overriding method has none. rdar://12378793
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-
-/// \tparam
-/// \param AAA Blah blah
-template<typename T>
-void comment_to_html_conversion_17(T AAA);
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_17</Name><USR>c:@FT@>1#Tcomment_to_html_conversion_17#t0.0#</USR><Declaration>template <typename T> void comment_to_html_conversion_17(T AAA)</Declaration><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Blah blah</Para></Discussion></Parameter></Parameters></Function>]
-
-template<typename T>
-void comment_to_html_conversion_17(T PPP);
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_17</Name><USR>c:@FT@>1#Tcomment_to_html_conversion_17#t0.0#</USR><Declaration>template <typename T> void comment_to_html_conversion_17(T PPP)</Declaration><Parameters><Parameter><Name>PPP</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> Blah blah</Para></Discussion></Parameter></Parameters></Function>]
-
-//===----------------------------------------------------------------------===//
-
-/// \tparam BBB Bbb
-/// \tparam AAA Aaa
-template<typename AAA, typename BBB>
-void comment_to_html_conversion_19(AAA aaa, BBB bbb);
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_19</Name><USR>c:@FT@>2#T#Tcomment_to_html_conversion_19#t0.0#t0.1#</USR><Declaration>template <typename AAA, typename BBB>\nvoid comment_to_html_conversion_19(AAA aaa, BBB bbb)</Declaration><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para> Aaa</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Discussion><Para> Bbb </Para></Discussion></Parameter></TemplateParameters></Function>]
-
-template<typename PPP, typename QQQ>
-void comment_to_html_conversion_19(PPP aaa, QQQ bbb);
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_19</Name><USR>c:@FT@>2#T#Tcomment_to_html_conversion_19#t0.0#t0.1#</USR><Declaration>template <typename PPP, typename QQQ>\nvoid comment_to_html_conversion_19(PPP aaa, QQQ bbb)</Declaration><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para> Aaa</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Discussion><Para> Bbb </Para></Discussion></Parameter></TemplateParameters></Function>]
-
-//===----------------------------------------------------------------------===//
-
-/// \tparam BBB Bbb
-/// \tparam UUU Zzz
-/// \tparam CCC Ccc
-/// \tparam AAA Aaa
-template<typename AAA, typename BBB, int CCC>
-void comment_to_html_conversion_20(AAA aaa, BBB bbb);
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_20</Name><USR>c:@FT@>3#T#T#NIcomment_to_html_conversion_20#t0.0#t0.1#</USR><Declaration>template <typename AAA, typename BBB, int CCC>\nvoid comment_to_html_conversion_20(AAA aaa, BBB bbb)</Declaration><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para> Aaa</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Discussion><Para> Bbb </Para></Discussion></Parameter><Parameter><Name>CCC</Name><Index>2</Index><Discussion><Para> Ccc </Para></Discussion></Parameter><Parameter><Name>UUU</Name><Discussion><Para> Zzz </Para></Discussion></Parameter></TemplateParameters></Function>]
-
-template<typename PPP, typename QQQ, int RRR>
-void comment_to_html_conversion_20(PPP aaa, QQQ bbb);
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_20</Name><USR>c:@FT@>3#T#T#NIcomment_to_html_conversion_20#t0.0#t0.1#</USR><Declaration>template <typename PPP, typename QQQ, int RRR>\nvoid comment_to_html_conversion_20(PPP aaa, QQQ bbb)</Declaration><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para> Aaa</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Discussion><Para> Bbb </Para></Discussion></Parameter><Parameter><Name>RRR</Name><Index>2</Index><Discussion><Para> Ccc </Para></Discussion></Parameter><Parameter><Name>UUU</Name><Discussion><Para> Zzz </Para></Discussion></Parameter></TemplateParameters></Function>]
-
-//===----------------------------------------------------------------------===//
-
-/// \tparam AAA Aaa
-/// \tparam BBB Bbb
-/// \tparam CCC Ccc
-/// \tparam DDD Ddd
-template<template<template<typename CCC> class DDD, class BBB> class AAA>
-void comment_to_html_conversion_21();
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_21</Name><USR>c:@FT@>1#t>2#t>1#T#Tcomment_to_html_conversion_21#</USR><Declaration>template <template <template <typename CCC> class DDD, class BBB> class AAA>\nvoid comment_to_html_conversion_21()</Declaration><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para> Aaa </Para></Discussion></Parameter><Parameter><Name>BBB</Name><Discussion><Para> Bbb </Para></Discussion></Parameter><Parameter><Name>CCC</Name><Discussion><Para> Ccc </Para></Discussion></Parameter><Parameter><Name>DDD</Name><Discussion><Para> Ddd</Para></Discussion></Parameter></TemplateParameters></Function>]
-
-template<template<template<typename RRR> class SSS, class QQQ> class PPP>
-void comment_to_html_conversion_21();
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_21</Name><USR>c:@FT@>1#t>2#t>1#T#Tcomment_to_html_conversion_21#</USR><Declaration>template <template <template <typename RRR> class SSS, class QQQ> class PPP>\nvoid comment_to_html_conversion_21()</Declaration><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para> Aaa </Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Discussion><Para> Bbb </Para></Discussion></Parameter><Parameter><Name>RRR</Name><Discussion><Para> Ccc </Para></Discussion></Parameter><Parameter><Name>SSS</Name><Discussion><Para> Ddd</Para></Discussion></Parameter></TemplateParameters></Function>]
-
-//===----------------------------------------------------------------------===//
-
-/// \tparam C1 Ccc 1
-/// \tparam AAA Zzz
-/// \tparam C2 Ccc 2
-/// \tparam C3 Ccc 3
-/// \tparam C4 Ccc 4
-/// \tparam BBB Bbb
-template <class C1, template <class C2, template <class C3, class C4> class BBB > class AAA>
-void comment_to_html_conversion_22();
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_22</Name><USR>c:@FT@>2#T#t>2#T#t>2#T#Tcomment_to_html_conversion_22#</USR><Declaration>template <class C1, template <class C2, template <class C3, class C4> class BBB>\n      class AAA>\nvoid comment_to_html_conversion_22()</Declaration><TemplateParameters><Parameter><Name>C1</Name><Index>0</Index><Discussion><Para> Ccc 1 </Para></Discussion></Parameter><Parameter><Name>AAA</Name><Index>1</Index><Discussion><Para> Zzz </Para></Discussion></Parameter><Parameter><Name>C2</Name><Discussion><Para> Ccc 2 </Para></Discussion></Parameter><Parameter><Name>C3</Name><Discussion><Para> Ccc 3 </Para></Discussion></Parameter><Parameter><Name>C4</Name><Discussion><Para> Ccc 4 </Para></Discussion></Parameter><Parameter><Name>BBB</Name><Discussion><Para> Bbb</Para></Discussion></Parameter></TemplateParameters></Function>]
-
-template<class CCC1, template<class CCC2, template<class CCC3, class CCC4> class QQQ> class PPP>
-void comment_to_html_conversion_22();
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-ftemplate-comments.cpp" line="[[@LINE-2]]" column="6"><Name>comment_to_html_conversion_22</Name><USR>c:@FT@>2#T#t>2#T#t>2#T#Tcomment_to_html_conversion_22#</USR><Declaration>template <class CCC1, template <class CCC2, template <class CCC3, class CCC4>\n                            class QQQ> class PPP>\nvoid comment_to_html_conversion_22()</Declaration><TemplateParameters><Parameter><Name>CCC1</Name><Index>0</Index><Discussion><Para> Ccc 1 </Para></Discussion></Parameter><Parameter><Name>PPP</Name><Index>1</Index><Discussion><Para> Zzz </Para></Discussion></Parameter><Parameter><Name>CCC2</Name><Discussion><Para> Ccc 2 </Para></Discussion></Parameter><Parameter><Name>CCC3</Name><Discussion><Para> Ccc 3 </Para></Discussion></Parameter><Parameter><Name>CCC4</Name><Discussion><Para> Ccc 4 </Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Discussion><Para> Bbb</Para></Discussion></Parameter></TemplateParameters></Function>]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/overriding-method-comments.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/overriding-method-comments.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/overriding-method-comments.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out
-// RUN: FileCheck %s < %t/out
-// Test to search overridden methods for documentation when overriding method has none. rdar://12378793
-
-// Ensure that XML we generate is not invalid.
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out
-// WRONG-NOT: CommentXMLInvalid
-
- at protocol P
-- (void)METH:(id)PPP;
- at end
-
- at interface Root<P>
-/**
- * \param[in] AAA ZZZ
- */
-- (void)METH:(id)AAA;
- at end
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Declaration>- (void)METH:(id)AAA;</Declaration><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter></Parameters></Function>]
-
- at interface Sub : Root
- at end
-
- at interface Sub (CAT)
-- (void)METH:(id)BBB;
- at end
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Declaration>- (void)METH:(id)BBB;</Declaration><Parameters><Parameter><Name>BBB</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter></Parameters></Function>]
-
- at implementation Sub(CAT)
-- (void)METH:(id)III {}
- at end
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>METH:</Name><USR>c:objc(cs)Root(im)METH:</USR><Declaration>- (void)METH:(id)III;</Declaration><Parameters><Parameter><Name>III</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> ZZZ </Para></Discussion></Parameter></Parameters></Function>]
-
- at interface Redec : Root
- at end
-
- at interface Redec()
-/**
- * \param[in] AAA input value
- * \param[out] CCC output value is int
- * \param[in] BBB 2nd input value is double
- */
-- (void)EXT_METH:(id)AAA : (double)BBB : (int)CCC;
- at end
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>EXT_METH:::</Name><USR>c:objc(cs)Redec(im)EXT_METH:::</USR><Declaration>- (void)EXT_METH:(id)AAA:(double)BBB:(int)CCC;</Declaration><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> input value </Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Direction isExplicit="1">in</Direction><Discussion><Para> 2nd input value is double </Para></Discussion></Parameter><Parameter><Name>CCC</Name><Index>2</Index><Direction isExplicit="1">out</Direction><Discussion><Para> output value is int </Para></Discussion></Parameter></Parameters></Function>]
-
- at implementation Redec
-- (void)EXT_METH:(id)PPP : (double)QQQ : (int)RRR {}
- at end
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-3]]" column="1"><Name>EXT_METH:::</Name><USR>c:objc(cs)Redec(im)EXT_METH:::</USR><Declaration>- (void)EXT_METH:(id)PPP:(double)QQQ:(int)RRR;</Declaration><Parameters><Parameter><Name>PPP</Name><Index>0</Index><Direction isExplicit="1">in</Direction><Discussion><Para> input value </Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Direction isExplicit="1">in</Direction><Discussion><Para> 2nd input value is double </Para></Discussion></Parameter><Parameter><Name>RRR</Name><Index>2</Index><Direction isExplicit="1">out</Direction><Discussion><Para> output value is int </Para></Discussion></Parameter></Parameters></Function>]
-
-struct Base {
-  /// \brief Does something.
-  /// \param AAA argument to foo_pure.
-  virtual void foo_pure(int AAA) = 0;
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_pure</Name><USR>c:@S at Base@F at foo_pure#I#</USR><Declaration>virtual void foo_pure(int AAA) = 0</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>AAA</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to foo_pure.</Para></Discussion></Parameter></Parameters></Function>]
-
-  /// \brief Does something.
-  /// \param BBB argument to defined virtual.
-  virtual void foo_inline(int BBB) {}
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_inline</Name><USR>c:@S at Base@F at foo_inline#I#</USR><Declaration>virtual void foo_inline(int BBB)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>BBB</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to defined virtual.</Para></Discussion></Parameter></Parameters></Function>]
-
-  /// \brief Does something.
-  /// \param CCC argument to undefined virtual.
-  virtual void foo_outofline(int CCC);
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_outofline</Name><USR>c:@S at Base@F at foo_outofline#I#</USR><Declaration>virtual void foo_outofline(int CCC)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>CCC</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to undefined virtual.</Para></Discussion></Parameter></Parameters></Function>]
-};
-
-void Base::foo_outofline(int RRR) {}
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="12"><Name>foo_outofline</Name><USR>c:@S at Base@F at foo_outofline#I#</USR><Declaration>void foo_outofline(int RRR)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>RRR</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to undefined virtual.</Para></Discussion></Parameter></Parameters></Function>]
-
-struct Derived : public Base {
-  virtual void foo_pure(int PPP);
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_pure</Name><USR>c:@S at Base@F at foo_pure#I#</USR><Declaration>virtual void foo_pure(int PPP)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>PPP</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to foo_pure.</Para></Discussion></Parameter></Parameters></Function>]
-
-  virtual void foo_inline(int QQQ) {}
-
-// CHECK: FullCommentAsXML=[<Function isInstanceMethod="1" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="16"><Name>foo_inline</Name><USR>c:@S at Base@F at foo_inline#I#</USR><Declaration>virtual void foo_inline(int QQQ)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>QQQ</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to defined virtual.</Para></Discussion></Parameter></Parameters></Function>]
-};
-
-/// \brief Does something.
-/// \param DDD a value.
-void foo(int DDD);
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo</Name><USR>c:@F at foo#I#</USR><Declaration>void foo(int DDD)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>DDD</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> a value.</Para></Discussion></Parameter></Parameters></Function>]
-
-void foo(int SSS) {}
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo</Name><USR>c:@F at foo#I#</USR><Declaration>void foo(int SSS)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>SSS</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> a value.</Para></Discussion></Parameter></Parameters></Function>]
-
-/// \brief Does something.
-/// \param EEE argument to function decl.
-void foo1(int EEE);
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo1</Name><USR>c:@F at foo1#I#</USR><Declaration>void foo1(int EEE)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>EEE</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to function decl.</Para></Discussion></Parameter></Parameters></Function>]
-
-void foo1(int TTT);
-
-// CHECK: FullCommentAsXML=[<Function file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo1</Name><USR>c:@F at foo1#I#</USR><Declaration>void foo1(int TTT)</Declaration><Abstract><Para> Does something. </Para></Abstract><Parameters><Parameter><Name>TTT</Name><Index>0</Index><Direction isExplicit="0">in</Direction><Discussion><Para> argument to function decl.</Para></Discussion></Parameter></Parameters></Function>]
-
-/// \brief Documentation
-/// \tparam BBB The type, silly.
-/// \tparam AAA The type, silly as well.
-template<typename AAA, typename BBB>
-void foo(AAA, BBB);
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo</Name><USR>c:@FT@>2#T#Tfoo#t0.0#t0.1#</USR><Declaration>template <typename AAA, typename BBB> void foo(AAA, BBB)</Declaration><Abstract><Para> Documentation </Para></Abstract><TemplateParameters><Parameter><Name>AAA</Name><Index>0</Index><Discussion><Para> The type, silly as well.</Para></Discussion></Parameter><Parameter><Name>BBB</Name><Index>1</Index><Discussion><Para> The type, silly. </Para></Discussion></Parameter></TemplateParameters></Function>]
-
-template<typename PPP, typename QQQ>
-void foo(PPP, QQQ);
-
-// CHECK: FullCommentAsXML=[<Function templateKind="template" file="{{[^"]+}}overriding-method-comments.mm" line="[[@LINE-2]]" column="6"><Name>foo</Name><USR>c:@FT@>2#T#Tfoo#t0.0#t0.1#</USR><Declaration>template <typename PPP, typename QQQ> void foo(PPP, QQQ)</Declaration><Abstract><Para> Documentation </Para></Abstract><TemplateParameters><Parameter><Name>PPP</Name><Index>0</Index><Discussion><Para> The type, silly as well.</Para></Discussion></Parameter><Parameter><Name>QQQ</Name><Index>1</Index><Discussion><Para> The type, silly. </Para></Discussion></Parameter></TemplateParameters></Function>]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/parse-all-comments.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/parse-all-comments.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/parse-all-comments.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// Run lines are sensitive to line numbers and come below the code.
-
-#ifndef HEADER
-#define HEADER
-
-// Not a Doxygen comment.  notdoxy1 NOT_DOXYGEN
-void notdoxy1(void);
-
-/* Not a Doxygen comment.  notdoxy2 NOT_DOXYGEN */
-void notdoxy2(void);
-
-/*/ Not a Doxygen comment.  notdoxy3 NOT_DOXYGEN */
-void notdoxy3(void);
-
-/** Doxygen comment.  isdoxy4 IS_DOXYGEN_SINGLE */
-void isdoxy4(void);
-
-/*! Doxygen comment.  isdoxy5 IS_DOXYGEN_SINGLE */
-void isdoxy5(void);
-
-/// Doxygen comment.  isdoxy6 IS_DOXYGEN_SINGLE
-void isdoxy6(void);
-
-/* BLOCK_ORDINARY_COMMENT */
-// ORDINARY COMMENT
-/// This is a BCPL comment. IS_DOXYGEN_START
-/// It has only two lines.
-/** But there are other blocks that are part of the comment, too.  IS_DOXYGEN_END */
-void multi_line_comment_plus_ordinary(int);
-
-// MULTILINE COMMENT
-//
-// WITH EMPTY LINE
-void multi_line_comment_empty_line(int);
-
-#endif
-
-// RUN: rm -rf %t
-// RUN: mkdir %t
-
-// RUN: %clang_cc1 -fparse-all-comments -x c++ -std=c++11 -emit-pch -o %t/out.pch %s
-
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s -std=c++11 -fparse-all-comments > %t/out.c-index-direct
-// RUN: c-index-test -test-load-tu %t/out.pch all > %t/out.c-index-pch
-
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-direct
-// RUN: FileCheck %s -check-prefix=WRONG < %t/out.c-index-pch
-
-// Ensure that XML is not invalid
-// WRONG-NOT: CommentXMLInvalid
-
-// RUN: FileCheck %s < %t/out.c-index-direct
-// RUN: FileCheck %s < %t/out.c-index-pch
-
-// CHECK: parse-all-comments.c:7:6: FunctionDecl=notdoxy1:{{.*}} notdoxy1 NOT_DOXYGEN
-// CHECK: parse-all-comments.c:10:6: FunctionDecl=notdoxy2:{{.*}} notdoxy2 NOT_DOXYGEN
-// CHECK: parse-all-comments.c:13:6: FunctionDecl=notdoxy3:{{.*}} notdoxy3 NOT_DOXYGEN
-// CHECK: parse-all-comments.c:16:6: FunctionDecl=isdoxy4:{{.*}} isdoxy4 IS_DOXYGEN_SINGLE
-// CHECK: parse-all-comments.c:19:6: FunctionDecl=isdoxy5:{{.*}} isdoxy5 IS_DOXYGEN_SINGLE
-// CHECK: parse-all-comments.c:22:6: FunctionDecl=isdoxy6:{{.*}} isdoxy6 IS_DOXYGEN_SINGLE
-// CHECK: parse-all-comments.c:29:6: FunctionDecl=multi_line_comment_plus_ordinary:{{.*}} BLOCK_ORDINARY_COMMENT {{.*}} ORDINARY COMMENT {{.*}} IS_DOXYGEN_START {{.*}} IS_DOXYGEN_END
-// CHECK: parse-all-comments.c:34:6: FunctionDecl=multi_line_comment_empty_line:{{.*}} MULTILINE COMMENT{{.*}}\n{{.*}}\n{{.*}} WITH EMPTY LINE

Modified: trunk/contrib/llvm/tools/clang/test/Index/pch-opaque-value.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/pch-opaque-value.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/pch-opaque-value.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-struct S {
-  S();
-  S(int);
-  S(const S &);
-  ~S();
-};
-
-void f() {
-  try {
-  } catch (S e) {
-  }
-}
-
-// RUN: c-index-test -write-pch %t.pch %s
-// RUN: c-index-test -test-load-tu-usrs %t.pch local | FileCheck %s
-// CHECK: pch-opaque-value.cpp c:pch-opaque-value.cpp at 86@F at f#@e Extent=[10:12 - 10:15]

Modified: trunk/contrib/llvm/tools/clang/test/Index/pch-with-errors.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/pch-with-errors.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/pch-with-errors.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-#ifndef HEADER
-#define HEADER
-
-#include "blahblah.h"
-void erroneous(int);
-void erroneous(float);
-
-struct bar;
-struct zed {
-  bar g;
-};
-struct baz {
-  zed h;
-};
-
-void errparm(zed e);
-
-struct S {
-  {
-;
-
-#else
-
-void foo(void) {
-  erroneous(0);
-}
-
-#endif
-
-// RUN: c-index-test -write-pch %t.h.pch %s -Xclang -detailed-preprocessing-record
-// RUN: c-index-test -test-load-source local %s -include %t.h -Xclang -detailed-preprocessing-record | FileCheck -check-prefix=CHECK-PARSE %s
-// RUN: c-index-test -index-file %s -include %t.h -Xclang -detailed-preprocessing-record | FileCheck -check-prefix=CHECK-INDEX %s
-
-// CHECK-PARSE: pch-with-errors.c:{{.*}}:6: FunctionDecl=foo
-// CHECK-PARSE: pch-with-errors.c:{{.*}}:3: CallExpr=erroneous
-
-// CHECK-INDEX: [indexDeclaration]: kind: function | name: foo
-// CHECK-INDEX: [indexEntityReference]: kind: function | name: erroneous
-
-// RUN: %clang -fsyntax-only %s -include %t.h 2>&1 | FileCheck -check-prefix=PCH-ERR %s
-// PCH-ERR: error: PCH file contains compiler errors
-
-// RUN: c-index-test -write-pch %t.pch foobar.c 2>&1 | FileCheck -check-prefix=NONEXISTENT %s
-// NONEXISTENT: Unable to load translation unit

Modified: trunk/contrib/llvm/tools/clang/test/Index/pch-with-errors.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/pch-with-errors.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/pch-with-errors.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-#ifndef HEADER
-#define HEADER
-
- at interface I(cat)
--(void)meth;
- at end
-
- at interface I2
--(void)meth;
- at end
-
-#else
-
-void foo(I2 *i) {
-  [i meth];
-}
-
-#endif
-
-// RUN: c-index-test -write-pch %t.h.pch %s -Xclang -detailed-preprocessing-record
-// RUN: c-index-test -test-load-source local %s -include %t.h -Xclang -detailed-preprocessing-record | FileCheck -check-prefix=CHECK-PARSE %s
-// RUN: c-index-test -index-file %s -include %t.h -Xclang -detailed-preprocessing-record | FileCheck -check-prefix=CHECK-INDEX %s
-
-// CHECK-PARSE: pch-with-errors.m:{{.*}} FunctionDecl=foo
-// CHECK-PARSE: pch-with-errors.m:{{.*}} ObjCMessageExpr=meth
-
-// CHECK-INDEX: [indexDeclaration]: kind: function | name: foo
-// CHECK-INDEX: [indexEntityReference]: kind: objc-instance-method | name: meth

Modified: trunk/contrib/llvm/tools/clang/test/Index/pragma-diag-reparse.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/pragma-diag-reparse.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/pragma-diag-reparse.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#pragma clang diagnostic ignored "-Wtautological-compare"
-#include "pragma_disable_warning.h"
-
-int main (int argc, const char * argv[])
-{
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-  int x=0;
-#pragma clang diagnostic pop
-
-  return x;
-}
-
-void foo() { int b=0; while (b==b); }
-
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_FAILONERROR=1 c-index-test -test-load-source-reparse 5 local \
-// RUN: -I%S/Inputs \
-// RUN:   %s -Wall -Werror | FileCheck %s
-
-// CHECK: pragma-diag-reparse.c:8:7: VarDecl=x:8:7 (Definition) Extent=[8:3 - 8:10]

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-chained.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-chained.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-chained.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: c-index-test -write-pch %t.h.pch -x c-header %S/Inputs/a.h
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 all -I%S/Inputs -include %t.h %s | FileCheck %s
-#include "a.h"
-#include "b.h"
-
-A a;
-B b;
-
-// CHECK: a.h:3:13: TypedefDecl=A:3:13 (Definition) Extent=[3:1 - 3:14]
-// CHECK: b.h:1:15: TypedefDecl=B:1:15 (Definition) Extent=[1:1 - 1:16]

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: c-index-test -write-pch %t.h.pch %s.h
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_REMAP_AFTER_TRIAL=1 c-index-test -test-load-source-reparse 3 local \ 
-// RUN:           "-remap-file=%s;%s.remap" %s -include %t.h -D CMD_MACRO=1 2>&1 | FileCheck %s
-
-// CHECK-NOT: error:
-
-int foo() {
-  return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-extern int x;

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c.remap
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c.remap	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-cmd-define.c.remap	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-
-#ifndef CMD_MACRO
-#error CMD_MACRO undefined
-#endif 
-
-int foo() {
-  return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: c-index-test -write-pch %t.h.pch -x objective-c %s-2.h
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_FAILONERROR=1 \
-// RUN:   c-index-test -test-load-source-reparse 3 local %s -include %t.h
-// RUN: c-index-test -write-pch %t.h.pch -x objective-c %s-3.h
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_FAILONERROR=1 \
-// RUN:   c-index-test -test-load-source-reparse 3 local %s -include %t.h
-
-#import "preamble-reparse-import.m-1.h"
-
-void foo();
-#import "preamble-reparse-import.m-2.h"
-#import "preamble-reparse-import.m-1.h"

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#ifdef PARSED2
-#error parsed twice
-#endif
-
-#define PARSED2 1

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#ifdef PARSED
-#error parsed twice
-#endif
-
-#define PARSED 1

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-3.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-3.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-import.m-3.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#import "preamble-reparse-import.m-2.h"

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-with-BOM.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-with-BOM.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse-with-BOM.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-
- at interface I2
- at end
-
-// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_FAILONERROR=1 \
-// RUN:   c-index-test -test-load-source-reparse 1 local %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble-reparse.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local "-remap-file=%S/Inputs/preamble-reparse-1.c;%S/Inputs/preamble-reparse-2.c" %S/Inputs/preamble-reparse-1.c | FileCheck %s
-// CHECK: preamble-reparse-1.c:1:5: VarDecl=x:1:5 Extent=[1:1 - 1:6]

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-#include "prefix.h"
-#include "preamble.h"
-int wibble(int);
-
-void f(int x) {
-  
-}
-// RUN: c-index-test -write-pch %t.pch -x c-header %S/Inputs/prefix.h
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local -I %S/Inputs -include %t %s 2> %t.stderr.txt | FileCheck %s
-// RUN: FileCheck -check-prefix CHECK-DIAG %s < %t.stderr.txt
-// CHECK: preamble.h:1:12: FunctionDecl=bar:1:12 (Definition) Extent=[1:1 - 6:2]
-// CHECK: preamble.h:4:3: BinaryOperator= Extent=[4:3 - 4:13]
-// CHECK: preamble.h:4:3: DeclRefExpr=ptr:2:8 Extent=[4:3 - 4:6]
-// CHECK: preamble.h:4:9: UnexposedExpr=ptr1:3:10 Extent=[4:9 - 4:13]
-// CHECK: preamble.h:4:9: DeclRefExpr=ptr1:3:10 Extent=[4:9 - 4:13]
-// CHECK: preamble.h:5:10: IntegerLiteral= Extent=[5:10 - 5:11]
-// CHECK: preamble.c:3:5: FunctionDecl=wibble:3:5 Extent=[3:1 - 3:16]
-// CHECK: preamble.c:3:15: ParmDecl=:3:15 (Definition) Extent=[3:12 - 3:16]
-// CHECK-DIAG: preamble.h:4:7:{4:9-4:13}: warning: incompatible pointer types assigning to 'int *' from 'float *'
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -code-completion-at=%s:6:1 -I %S/Inputs -include %t %s 2> %t.stderr.txt | FileCheck -check-prefix CHECK-CC %s
-// CHECK-CC: FunctionDecl:{ResultType int}{TypedText bar}{LeftParen (}{Placeholder int i}{RightParen )} (50)
-// CHECK-CC: FunctionDecl:{ResultType void}{TypedText f}{LeftParen (}{Placeholder int x}{RightParen )} (50)
-// CHECK-CC: FunctionDecl:{ResultType int}{TypedText foo}{LeftParen (}{Placeholder int}{RightParen )} (50)
-// CHECK-CC: FunctionDecl:{ResultType int}{TypedText wibble}{LeftParen (}{Placeholder int}{RightParen )} (50)

Modified: trunk/contrib/llvm/tools/clang/test/Index/preamble_macro_template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/preamble_macro_template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/preamble_macro_template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-template void foo(int *);
-
-int main() { }
-
-// RUN: c-index-test -write-pch %t.pch -fno-delayed-template-parsing -x c++-header %S/Inputs/preamble_macro_template.h
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local -fno-delayed-template-parsing -I %S/Inputs -include %t %s 2>&1 | tee %t.check.txt | FileCheck %s
-// CHECK: preamble_macro_template.h:4:6: FunctionDecl=foo:4:6 (Definition) [Specialization of foo:4:6] Extent=[4:1 - 6:2]
-// CHECK: preamble_macro_template.h:4:13: ParmDecl=p:4:13 (Definition) Extent=[4:10 - 4:14]
-// CHECK: preamble_macro_template.h:4:16: CompoundStmt= Extent=[4:16 - 6:2]
-// CHECK: preamble_macro_template.h:5:3: CStyleCastExpr= Extent=[5:3 - 5:27]
-// CHECK: preamble_macro_template.h:5:9: CXXStaticCastExpr= Extent=[5:9 - 5:27]
-// CHECK: preamble_macro_template.h:5:25: UnexposedExpr= Extent=[5:25 - 5:26]
-// CHECK: preamble_macro_template.h:5:25: IntegerLiteral= Extent=[5:25 - 5:26]
-// CHECK: preamble_macro_template.cpp:3:5: FunctionDecl=main:3:5 (Definition) Extent=[3:1 - 3:15]
-// CHECK: preamble_macro_template.cpp:3:12: CompoundStmt= Extent=[3:12 - 3:15]

Modified: trunk/contrib/llvm/tools/clang/test/Index/print-bitwidth.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/print-bitwidth.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/print-bitwidth.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-union S {
-  unsigned ac : 4;
-  unsigned : 4;
-  unsigned clock : 1;
-  unsigned : 0;
-  unsigned flag : 1;
-};
-
-struct X {
-  unsigned light : 1;
-  unsigned toaster : 1;
-  int count;
-  union S stat;
-};
-
-// RUN: c-index-test -test-print-bitwidth %s | FileCheck %s
-// CHECK: FieldDecl=ac:2:12 (Definition) bitwidth=4
-// CHECK: FieldDecl=:3:3 (Definition) bitwidth=4
-// CHECK: FieldDecl=clock:4:12 (Definition) bitwidth=1
-// CHECK: FieldDecl=:5:3 (Definition) bitwidth=0
-// CHECK: FieldDecl=flag:6:12 (Definition) bitwidth=1
-// CHECK: FieldDecl=light:10:12 (Definition) bitwidth=1
-// CHECK: FieldDecl=toaster:11:12 (Definition) bitwidth=1
-// CHECK-NOT: count
-// CHECK-NOT: stat

Modified: trunk/contrib/llvm/tools/clang/test/Index/print-display-names.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/print-display-names.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/print-display-names.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-template<typename T, typename>
-class ClassTmpl { };
-
-typedef int Integer;
-
-template class ClassTmpl<Integer, Integer>;
-
-void f(ClassTmpl<float, Integer> p);
-
-template<typename T>
-void g(ClassTmpl<T, T>);
-
-template<> void g<int>(ClassTmpl<int, int>);
-
-// RUN: c-index-test -test-load-source all-display %s | FileCheck %s
-// CHECK: print-display-names.cpp:2:7: ClassTemplate=ClassTmpl<T, typename>:2:7
-// CHECK: print-display-names.cpp:6:16: ClassDecl=ClassTmpl<Integer, Integer>:6:16 (Definition)
-// CHECK: print-display-names.cpp:8:6: FunctionDecl=f(ClassTmpl<float, Integer>):8:6
-// CHECK: print-display-names.cpp:11:6: FunctionTemplate=g(ClassTmpl<T, T>):11:6
-// CHECK: print-display-names.cpp:13:17: FunctionDecl=g<>(ClassTmpl<int, int>):13:17 [Specialization of g:11:6]

Modified: trunk/contrib/llvm/tools/clang/test/Index/print-type-size.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/print-type-size.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/print-type-size.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,428 +0,0 @@
-// from SemaCXX/class-layout.cpp
-// RUN: c-index-test -test-print-type-size %s -target x86_64-pc-linux-gnu | FileCheck -check-prefix=CHECK64 %s
-// RUN: c-index-test -test-print-type-size %s -target i386-apple-darwin9 | FileCheck -check-prefix=CHECK32 %s
-
-namespace basic {
-
-// CHECK64: VarDecl=v:[[@LINE+2]]:6 (Definition) [type=void] [typekind=Void]
-// CHECK32: VarDecl=v:[[@LINE+1]]:6 (Definition) [type=void] [typekind=Void]
-void v;
-
-// CHECK64: VarDecl=v1:[[@LINE+2]]:7 (Definition) [type=void *] [typekind=Pointer] [sizeof=8] [alignof=8]
-// CHECK32: VarDecl=v1:[[@LINE+1]]:7 (Definition) [type=void *] [typekind=Pointer] [sizeof=4] [alignof=4]
-void *v1;
-
-// offsetof
-// CHECK64: StructDecl=simple:[[@LINE+2]]:8 (Definition) [type=basic::simple] [typekind=Record] [sizeof=48] [alignof=8]
-// CHECK32: StructDecl=simple:[[@LINE+1]]:8 (Definition) [type=basic::simple] [typekind=Record] [sizeof=36] [alignof=4]
-struct simple {
-  int a;
-  char b;
-// CHECK64: FieldDecl=c:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=40] [BitFieldSize=3]
-  int c:3;
-  long d;
-  int e:5;
-// CHECK64: FieldDecl=f:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=133] [BitFieldSize=4]
-  int f:4;
-// CHECK64: FieldDecl=g:[[@LINE+2]]:13 (Definition) [type=long long] [typekind=LongLong] [sizeof=8] [alignof=8] [offsetof=192]
-// CHECK32: FieldDecl=g:[[@LINE+1]]:13 (Definition) [type=long long] [typekind=LongLong] [sizeof=8] [alignof=4] [offsetof=128]
-  long long g;
-// CHECK64: FieldDecl=h:[[@LINE+1]]:8 (Definition) [type=char] [typekind=Char_S] [sizeof=1] [alignof=1] [offsetof=256] [BitFieldSize=3]
-  char h:3;
-  char i:3;
-  float j;
-// CHECK64: FieldDecl=k:[[@LINE+2]]:10 (Definition) [type=char *] [typekind=Pointer] [sizeof=8] [alignof=8] [offsetof=320]
-// CHECK32: FieldDecl=k:[[@LINE+1]]:10 (Definition) [type=char *] [typekind=Pointer] [sizeof=4] [alignof=4] [offsetof=256]
-  char * k;
-};
-
-
-// CHECK64: UnionDecl=u:[[@LINE+2]]:7 (Definition) [type=basic::u] [typekind=Record] [sizeof=48] [alignof=8]
-// CHECK32: UnionDecl=u:[[@LINE+1]]:7 (Definition) [type=basic::u] [typekind=Record] [sizeof=36] [alignof=4]
-union u {
-  int u1;
-  long long u2;
-  struct simple s1;
-};
-
-// CHECK64: VarDecl=s1:[[@LINE+2]]:8 (Definition) [type=basic::simple] [typekind=Record] [sizeof=48] [alignof=8]
-// CHECK32: VarDecl=s1:[[@LINE+1]]:8 (Definition) [type=basic::simple] [typekind=Record] [sizeof=36] [alignof=4]
-simple s1;
-
-struct Test {
-  struct {
-    union {
-//CHECK64: FieldDecl=foo:[[@LINE+1]]:11 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=0]
-      int foo;
-    };
-  };
-};
-
-struct Test2 {
-  struct {
-    struct {
-//CHECK64: FieldDecl=foo:[[@LINE+1]]:11 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=0]
-      int foo;
-    };
-    struct {
-//CHECK64: FieldDecl=bar:[[@LINE+1]]:11 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=32]
-      int bar;
-    };
-    struct {
-        struct {
-//CHECK64: FieldDecl=foobar:[[@LINE+1]]:15 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=64]
-          int foobar;
-        };
-    };
-    struct inner {
-        struct {
-//CHECK64: FieldDecl=mybar:[[@LINE+1]]:15 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=0]
-          int mybar;
-        };
-//CHECK64: FieldDecl=mole:[[@LINE+1]]:7 (Definition) [type=struct inner] [typekind=Unexposed] [sizeof=4] [alignof=4] [offsetof=96]
-    } mole;
-  };
-};
-
-}
-
-// these are test crash. Offsetof return values are not important.
-namespace Incomplete {
-// test that fields in incomplete named record do not crash
-union named {
-  struct forward_decl f1;
-//CHECK64: FieldDecl=f2:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-2]
-  int f2;
-  struct x {
-//CHECK64: FieldDecl=g1:[[@LINE+1]]:9 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=0]
-    int g1;
-//CHECK64: FieldDecl=f3:[[@LINE+1]]:5 (Definition) [type=struct x] [typekind=Unexposed] [sizeof=4] [alignof=4] [offsetof=-2]
-  } f3;
-  struct forward_decl f4;
-  struct x2{
-    int g2;
-    struct forward_decl g3;
-  } f5;
-};
-
-// test that fields in incomplete anonymous record do not crash
-union f {
-//CHECK64: FieldDecl=f1:[[@LINE+1]]:23 (Definition) [type=struct forward_decl] [typekind=Unexposed] [sizeof=-2] [alignof=-2] [offsetof=-2]
-  struct forward_decl f1;
-//CHECK64: FieldDecl=f2:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-2]
-  int f2;
-  struct {
-//CHECK64: FieldDecl=e1:[[@LINE+1]]:9 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-2]
-    int e1;
-    struct {
-//CHECK64: FieldDecl=g1:[[@LINE+1]]:28 (Definition) [type=struct forward_decl2] [typekind=Unexposed] [sizeof=-2] [alignof=-2] [offsetof=-2]
-      struct forward_decl2 g1;
-    };
-//CHECK64: FieldDecl=e3:[[@LINE+1]]:9 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-2]
-    int e3;
-  };
-};
-
-
-// incomplete not in root level, in named record
-struct s1 {
-  struct {
-    struct forward_decl2 s1_g1;
-//CHECK64: FieldDecl=s1_e1:[[@LINE+1]]:9 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-2]
-    int s1_e1;
-  } s1_x; // named record shows in s1->field_iterator
-//CHECK64: FieldDecl=s1_e3:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-2]
-  int s1_e3;
-};
-
-// incomplete not in root level, in anonymous record
-struct s1b {
-  struct {
-    struct forward_decl2 s1b_g1;
-  }; // erroneous anonymous record does not show in s1b->field_iterator
-//CHECK64: FieldDecl=s1b_e2:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=0]
-  int s1b_e2;
-};
-
-struct s2 {
-  struct {
-    struct forward_decl2 s2_g1;
-//CHECK64: FieldDecl=s2_e1:[[@LINE+1]]:9 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-5]
-    int s2_e1;
-  }; // erroneous anonymous record does not show in s1b->field_iterator
-//CHECK64: FieldDecl=s2_e3:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=0]
-  int s2_e3;
-};
-
-//deep anonymous with deep level incomplete
-struct s3 {
-  struct {
-    int s3_e1;
-    struct {
-      struct {
-        struct {
-          struct {
-           struct forward_decl2 s3_g1;
-          };
-        };
-      };
-    };
-//CHECK64: FieldDecl=s3_e3:[[@LINE+1]]:9 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=64]
-    int s3_e3;
-  };
-};
-
-//deep anonymous with first level incomplete
-struct s4a {
-  struct forward_decl2 g1;
-  struct {
-   struct forward_decl2 g2;
-    struct {
-      struct {
-        struct {
-          struct {
-//CHECK64: FieldDecl=s4_e1:[[@LINE+1]]:17 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-2]
-            int s4_e1;
-          };
-        };
-      };
-    };
-//CHECK64: FieldDecl=s4_e3:[[@LINE+1]]:9 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-2]
-    int s4_e3;
-  };
-};
-
-//deep anonymous with sub-first-level incomplete
-struct s4b {
-  struct {
-    struct forward_decl2 g1;
-    struct {
-      struct {
-        struct {
-          struct {
-//CHECK64: FieldDecl=s4b_e1:[[@LINE+1]]:17 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-5]
-            int s4b_e1;
-          };
-        };
-      };
-    };
-//CHECK64: FieldDecl=s4b_e3:[[@LINE+1]]:9 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-5]
-    int s4b_e3;
-  };
-};
-
-// CHECK64: StructDecl=As:[[@LINE+1]]:8 [type=Incomplete::As] [typekind=Record]
-struct As;
-
-// undefined class. Should not crash
-// CHECK64: ClassDecl=A:[[@LINE+1]]:7 [type=Incomplete::A] [typekind=Record]
-class A;
-// CHECK64: ClassDecl=B:[[@LINE+1]]:7 (Definition) [type=Incomplete::B] [typekind=Record] [sizeof=16] [alignof=8]
-class B {
-// CHECK64: FieldDecl=a1:[[@LINE+2]]:6 (Definition) [type=Incomplete::A *] [typekind=Pointer] [sizeof=8] [alignof=8] [offsetof=0]
-// CHECK32: FieldDecl=a1:[[@LINE+1]]:6 (Definition) [type=Incomplete::A *] [typekind=Pointer] [sizeof=4] [alignof=4] [offsetof=0]
-  A* a1;
-// CHECK64: FieldDecl=a2:[[@LINE+2]]:6 (Definition) [type=Incomplete::A &] [typekind=LValueReference] [sizeof=-2] [alignof=-2] [offsetof=64]
-// CHECK32: FieldDecl=a2:[[@LINE+1]]:6 (Definition) [type=Incomplete::A &] [typekind=LValueReference] [sizeof=-2] [alignof=-2] [offsetof=32]
-  A& a2;
-};
-
-}
-
-namespace Sizes {
-
-// CHECK64: StructDecl=A:[[@LINE+2]]:8 (Definition) [type=Sizes::A] [typekind=Record] [sizeof=8] [alignof=4]
-// CHECK32: StructDecl=A:[[@LINE+1]]:8 (Definition) [type=Sizes::A] [typekind=Record] [sizeof=8] [alignof=4]
-struct A {
-  int a;
-  char b;
-};
-
-// CHECK64: StructDecl=B:[[@LINE+2]]:8 (Definition) [type=Sizes::B] [typekind=Record] [sizeof=12] [alignof=4]
-// CHECK32: StructDecl=B:[[@LINE+1]]:8 (Definition) [type=Sizes::B] [typekind=Record] [sizeof=12] [alignof=4]
-struct B : A {
-  char c;
-};
-
-// CHECK64: StructDecl=C:[[@LINE+2]]:8 (Definition) [type=Sizes::C] [typekind=Record] [sizeof=8] [alignof=4]
-// CHECK32: StructDecl=C:[[@LINE+1]]:8 (Definition) [type=Sizes::C] [typekind=Record] [sizeof=8] [alignof=4]
-struct C {
-// Make fields private so C won't be a POD type.
-private:
-  int a;
-  char b;
-};
-
-// CHECK64: StructDecl=D:[[@LINE+2]]:8 (Definition) [type=Sizes::D] [typekind=Record] [sizeof=8] [alignof=4]
-// CHECK32: StructDecl=D:[[@LINE+1]]:8 (Definition) [type=Sizes::D] [typekind=Record] [sizeof=8] [alignof=4]
-struct D : C {
-  char c;
-};
-
-// CHECK64: StructDecl=E:[[@LINE+2]]:32 (Definition) [type=Sizes::E] [typekind=Record] [sizeof=5] [alignof=1]
-// CHECK32: StructDecl=E:[[@LINE+1]]:32 (Definition) [type=Sizes::E] [typekind=Record] [sizeof=5] [alignof=1]
-struct __attribute__((packed)) E {
-  char b;
-  int a;
-};
-
-// CHECK64: StructDecl=F:[[@LINE+2]]:32 (Definition) [type=Sizes::F] [typekind=Record] [sizeof=6] [alignof=1]
-// CHECK32: StructDecl=F:[[@LINE+1]]:32 (Definition) [type=Sizes::F] [typekind=Record] [sizeof=6] [alignof=1]
-struct __attribute__((packed)) F : E {
-  char d;
-};
-
-struct G { G(); };
-// CHECK64: StructDecl=H:[[@LINE+2]]:8 (Definition) [type=Sizes::H] [typekind=Record] [sizeof=1] [alignof=1]
-// CHECK32: StructDecl=H:[[@LINE+1]]:8 (Definition) [type=Sizes::H] [typekind=Record] [sizeof=1] [alignof=1]
-struct H : G { };
-
-// CHECK64: StructDecl=I:[[@LINE+2]]:8 (Definition) [type=Sizes::I] [typekind=Record] [sizeof=5] [alignof=1]
-// CHECK32: StructDecl=I:[[@LINE+1]]:8 (Definition) [type=Sizes::I] [typekind=Record] [sizeof=5] [alignof=1]
-struct I {
-  char b;
-  int a;
-} __attribute__((packed));
-
-}
-
-namespace Test1 {
-
-// Test complex class hierarchy
-struct A { };
-struct B : A { virtual void b(); };
-class C : virtual A { int c; };
-struct D : virtual B { };
-struct E : C, virtual D { };
-class F : virtual E { };
-// CHECK64: StructDecl=G:[[@LINE+2]]:8 (Definition) [type=Test1::G] [typekind=Record] [sizeof=24] [alignof=8]
-// CHECK32: StructDecl=G:[[@LINE+1]]:8 (Definition) [type=Test1::G] [typekind=Record] [sizeof=16] [alignof=4]
-struct G : virtual E, F { };
-
-}
-
-namespace Test2 {
-
-// Test that this somewhat complex class structure is laid out correctly.
-struct A { };
-struct B : A { virtual void b(); };
-struct C : virtual B { };
-struct D : virtual A { };
-struct E : virtual B, D { };
-struct F : E, virtual C { };
-struct G : virtual F, A { };
-// CHECK64: StructDecl=H:[[@LINE+2]]:8 (Definition) [type=Test2::H] [typekind=Record] [sizeof=24] [alignof=8]
-// CHECK32: StructDecl=H:[[@LINE+1]]:8 (Definition) [type=Test2::H] [typekind=Record] [sizeof=12] [alignof=4]
-struct H { G g; };
-
-}
-
-namespace Test3 {
-// CHECK64: ClassDecl=B:[[@LINE+2]]:7 (Definition) [type=Test3::B] [typekind=Record] [sizeof=16] [alignof=8]
-// CHECK32: ClassDecl=B:[[@LINE+1]]:7 (Definition) [type=Test3::B] [typekind=Record] [sizeof=8] [alignof=4]
-class B {
-public:
-  virtual void b(){}
-// CHECK64: FieldDecl=b_field:[[@LINE+2]]:8 (Definition) [type=long] [typekind=Long] [sizeof=8] [alignof=8] [offsetof=64]
-// CHECK32: FieldDecl=b_field:[[@LINE+1]]:8 (Definition) [type=long] [typekind=Long] [sizeof=4] [alignof=4] [offsetof=32]
-  long b_field;
-protected:
-private:
-};
-
-// CHECK32: ClassDecl=A:[[@LINE+1]]:7 (Definition) [type=Test3::A] [typekind=Record] [sizeof=16] [alignof=4]
-class A : public B {
-public:
-// CHECK64: FieldDecl=a_field:[[@LINE+2]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=128]
-// CHECK32: FieldDecl=a_field:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=64]
-  int a_field;
-  virtual void a(){}
-// CHECK64: FieldDecl=one:[[@LINE+2]]:8 (Definition) [type=char] [typekind=Char_S] [sizeof=1] [alignof=1] [offsetof=160]
-// CHECK32: FieldDecl=one:[[@LINE+1]]:8 (Definition) [type=char] [typekind=Char_S] [sizeof=1] [alignof=1] [offsetof=96]
-  char one;
-protected:
-private:
-};
-
-// CHECK64: ClassDecl=D:[[@LINE+2]]:7 (Definition) [type=Test3::D] [typekind=Record] [sizeof=16] [alignof=8]
-// CHECK32: ClassDecl=D:[[@LINE+1]]:7 (Definition) [type=Test3::D] [typekind=Record] [sizeof=12] [alignof=4]
-class D {
-public:
-  virtual void b(){}
-// CHECK64: FieldDecl=a:[[@LINE+2]]:10 (Definition) [type=double] [typekind=Double] [sizeof=8] [alignof=8] [offsetof=64]
-// CHECK32: FieldDecl=a:[[@LINE+1]]:10 (Definition) [type=double] [typekind=Double] [sizeof=8] [alignof=4] [offsetof=32]
-  double a;
-};
-
-// CHECK64: ClassDecl=C:[[@LINE+2]]:7 (Definition) [type=Test3::C] [typekind=Record] [sizeof=88] [alignof=8]
-// CHECK32: ClassDecl=C:[[@LINE+1]]:7 (Definition) [type=Test3::C] [typekind=Record] [sizeof=60] [alignof=4]
-class C : public virtual A,
-          public D, public B {
-public:
-  double c1_field;
-  int c2_field;
-  double c3_field;
-  int c4_field;
-  virtual void foo(){}
-  virtual void bar(){}
-protected:
-private:
-};
-
-struct BaseStruct
-{
-    BaseStruct(){}
-    double v0;
-    float v1;
-// CHECK64: FieldDecl=fg:[[@LINE+2]]:7 (Definition) [type=Test3::C] [typekind=Record] [sizeof=88] [alignof=8] [offsetof=128]
-// CHECK32: FieldDecl=fg:[[@LINE+1]]:7 (Definition) [type=Test3::C] [typekind=Record] [sizeof=60] [alignof=4] [offsetof=96]
-    C fg;
-// CHECK64: FieldDecl=rg:[[@LINE+2]]:8 (Definition) [type=Test3::C &] [typekind=LValueReference] [sizeof=88] [alignof=8] [offsetof=832]
-// CHECK32: FieldDecl=rg:[[@LINE+1]]:8 (Definition) [type=Test3::C &] [typekind=LValueReference] [sizeof=60] [alignof=4] [offsetof=576]
-    C &rg;
-    int x;
-};
-
-}
-
-namespace NotConstantSize {
-
-void f(int i) {
-// CHECK32: VarDecl=v2:[[@LINE+1]]:8 (Definition) [type=int [i]] [typekind=Unexposed] [sizeof=-4] [alignof=4]
-   int v2[i];
-   {
-   struct CS1 {
-// FIXME: should libclang return [offsetof=0] ?
-//CHECK32: FieldDecl=f1:[[@LINE+1]]:9 (Definition) [type=int [i]] [typekind=Unexposed] [sizeof=-4] [alignof=4] [offsetof=0]
-    int f1[i];
-//CHECK32: FieldDecl=f2:[[@LINE+1]]:11 (Definition) [type=float] [typekind=Float] [sizeof=4] [alignof=4] [offsetof=0]
-    float f2;
-   };
-   }
-}
-
-}
-
-namespace CrashTest {
-// test crash scenarios on dependent types.
-template<typename T>
-struct Foo {
-//CHECK32: FieldDecl=t:[[@LINE+1]]:5 (Definition) [type=T] [typekind=Unexposed] [sizeof=-3] [alignof=-3] [offsetof=-1]
-  T t;
-//CHECK32: FieldDecl=a:[[@LINE+1]]:7 (Definition) [type=int] [typekind=Int] [sizeof=4] [alignof=4] [offsetof=-1]
-  int a;
-};
-
-Foo<Sizes::A> t1;
-Foo<Sizes::I> t2;
-
-void c;
-
-plopplop;
-
-// CHECK64: StructDecl=lastValid:[[@LINE+2]]:8 (Definition) [type=CrashTest::lastValid] [typekind=Record] [sizeof=1] [alignof=1]
-// CHECK32: StructDecl=lastValid:[[@LINE+1]]:8 (Definition) [type=CrashTest::lastValid] [typekind=Record] [sizeof=1] [alignof=1]
-struct lastValid {
-};
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/print-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/print-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/print-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-typedef int FooType;
-int *p;
-int *f(int *p, char *x, FooType z, int arr[5], void (*fn)(int)) {
-  fn(*p);
-  const FooType w = z;
-  return p + z + arr[3];
-}
-typedef double OtherType;
-typedef int ArrayType[5];
-int __attribute__((vector_size(16))) x;
-typedef int __attribute__((vector_size(16))) int4_t;
-
-// RUN: c-index-test -test-print-type %s | FileCheck %s
-// CHECK: FunctionDecl=f:3:6 (Definition) [type=int *(int *, char *, FooType, int *, void (*)(int))] [typekind=FunctionProto] [canonicaltype=int *(int *, char *, int, int *, void (*)(int))] [canonicaltypekind=FunctionProto] [resulttype=int *] [resulttypekind=Pointer] [args= [int *] [Pointer] [char *] [Pointer] [FooType] [Typedef] [int [5]] [ConstantArray] [void (*)(int)] [Pointer]] [isPOD=0]
-// CHECK: ParmDecl=p:3:13 (Definition) [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: ParmDecl=x:3:22 (Definition) [type=char *] [typekind=Pointer] [isPOD=1]
-// CHECK: ParmDecl=z:3:33 (Definition) [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: TypeRef=FooType:1:13 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: ParmDecl=arr:3:40 (Definition) [type=int [5]] [typekind=ConstantArray] [isPOD=1]
-// CHECK: IntegerLiteral= [type=int] [typekind=Int] [isPOD=1]
-// CHECK: ParmDecl=fn:3:55 (Definition) [type=void (*)(int)] [typekind=Pointer] [canonicaltype=void (*)(int)] [canonicaltypekind=Pointer] [isPOD=1]
-// CHECK: ParmDecl=:3:62 (Definition) [type=int] [typekind=Int] [isPOD=1]
-// CHECK: CompoundStmt= [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: CallExpr=fn:3:55 [type=void] [typekind=Void] [args= [int] [Int]] [isPOD=0]
-// CHECK: DeclRefExpr=fn:3:55 [type=void (*)(int)] [typekind=Pointer] [canonicaltype=void (*)(int)] [canonicaltypekind=Pointer] [isPOD=1]
-// CHECK: UnaryOperator= [type=int] [typekind=Int] [isPOD=1]
-// CHECK: DeclRefExpr=p:3:13 [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: DeclStmt= [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: VarDecl=w:5:17 (Definition) [type=const FooType] [typekind=Typedef] const [canonicaltype=const int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: TypeRef=FooType:1:13 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: DeclRefExpr=z:3:33 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: ReturnStmt= [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: BinaryOperator= [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: BinaryOperator= [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: DeclRefExpr=p:3:13 [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: DeclRefExpr=z:3:33 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: ArraySubscriptExpr= [type=int] [typekind=Int] [isPOD=1]
-// CHECK: DeclRefExpr=arr:3:40 [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: IntegerLiteral= [type=int] [typekind=Int] [isPOD=1]
-// CHECK: TypedefDecl=OtherType:8:16 (Definition) [type=OtherType] [typekind=Typedef] [canonicaltype=double] [canonicaltypekind=Double] [isPOD=1]
-// CHECK: TypedefDecl=ArrayType:9:13 (Definition) [type=ArrayType] [typekind=Typedef] [canonicaltype=int [5]] [canonicaltypekind=ConstantArray] [isPOD=1]
-// CHECK: IntegerLiteral= [type=int] [typekind=Int] [isPOD=1]
-// CHECK: VarDecl=x:10:38 [type=__attribute__((__vector_size__(4 * sizeof(int)))) int] [typekind=Vector] [isPOD=1]
-// CHECK: TypedefDecl=int4_t:11:46 (Definition) [type=int4_t] [typekind=Typedef] [canonicaltype=__attribute__((__vector_size__(4 * sizeof(int)))) int] [canonicaltypekind=Vector] [isPOD=1]

Modified: trunk/contrib/llvm/tools/clang/test/Index/print-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/print-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/print-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-namespace outer {
-
-template<typename T>
-struct Foo {
-  T t;
-};
-
-namespace inner {
-
-struct Bar {
-  Bar(outer::Foo<bool>* foo) { };
-
-  typedef int FooType;
-  int *p;
-  int *f(int *p, char *x, FooType z) {
-    const FooType w = z;
-    return p + z;
-  }
-  typedef double OtherType;
-  typedef int ArrayType[5];
-};
-
-}
-}
-
-template <typename T>
-T tbar(int);
-
-template <typename T>
-T tbar(int[5]);
-
-// RUN: c-index-test -test-print-type %s | FileCheck %s
-// CHECK: Namespace=outer:1:11 (Definition) [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: ClassTemplate=Foo:4:8 (Definition) [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: TemplateTypeParameter=T:3:19 (Definition) [type=T] [typekind=Unexposed] [canonicaltype=type-parameter-0-0] [canonicaltypekind=Unexposed] [isPOD=0]
-// CHECK: FieldDecl=t:5:5 (Definition) [type=T] [typekind=Unexposed] [canonicaltype=type-parameter-0-0] [canonicaltypekind=Unexposed] [isPOD=0]
-// CHECK: TypeRef=T:3:19 [type=T] [typekind=Unexposed] [canonicaltype=type-parameter-0-0] [canonicaltypekind=Unexposed] [isPOD=0]
-// CHECK: Namespace=inner:8:11 (Definition) [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: StructDecl=Bar:10:8 (Definition) [type=outer::inner::Bar] [typekind=Record] [isPOD=0]
-// CHECK: CXXConstructor=Bar:11:3 (Definition) [type=void (outer::Foo<bool> *)] [typekind=FunctionProto] [canonicaltype=void (outer::Foo<bool> *)] [canonicaltypekind=FunctionProto] [resulttype=void] [resulttypekind=Void] [args= [outer::Foo<bool> *] [Pointer]] [isPOD=0]
-// CHECK: ParmDecl=foo:11:25 (Definition) [type=outer::Foo<bool> *] [typekind=Pointer] [canonicaltype=outer::Foo<bool> *] [canonicaltypekind=Pointer] [isPOD=1]
-// CHECK: NamespaceRef=outer:1:11 [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: TemplateRef=Foo:4:8 [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: CompoundStmt= [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: TypedefDecl=FooType:13:15 (Definition) [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: FieldDecl=p:14:8 (Definition) [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: CXXMethod=f:15:8 (Definition) [type=int *(int *, char *, FooType)] [typekind=FunctionProto] [canonicaltype=int *(int *, char *, int)] [canonicaltypekind=FunctionProto] [resulttype=int *] [resulttypekind=Pointer] [args= [int *] [Pointer] [char *] [Pointer] [FooType] [Typedef]] [isPOD=0]
-// CHECK: ParmDecl=p:15:15 (Definition) [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: ParmDecl=x:15:24 (Definition) [type=char *] [typekind=Pointer] [isPOD=1]
-// CHECK: ParmDecl=z:15:35 (Definition) [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: TypeRef=FooType:13:15 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: CompoundStmt= [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: DeclStmt= [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: VarDecl=w:16:19 (Definition) [type=const FooType] [typekind=Typedef] const [canonicaltype=const int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: TypeRef=FooType:13:15 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: DeclRefExpr=z:15:35 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: ReturnStmt= [type=] [typekind=Invalid] [isPOD=0]
-// CHECK: BinaryOperator= [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: DeclRefExpr=p:15:15 [type=int *] [typekind=Pointer] [isPOD=1]
-// CHECK: DeclRefExpr=z:15:35 [type=FooType] [typekind=Typedef] [canonicaltype=int] [canonicaltypekind=Int] [isPOD=1]
-// CHECK: TypedefDecl=OtherType:19:18 (Definition) [type=OtherType] [typekind=Typedef] [canonicaltype=double] [canonicaltypekind=Double] [isPOD=1]
-// CHECK: TypedefDecl=ArrayType:20:15 (Definition) [type=ArrayType] [typekind=Typedef] [canonicaltype=int [5]] [canonicaltypekind=ConstantArray] [isPOD=1]
-// CHECK: FunctionTemplate=tbar:27:3 [type=T (int)] [typekind=FunctionProto] [canonicaltype=type-parameter-0-0 (int)] [canonicaltypekind=FunctionProto] [resulttype=T] [resulttypekind=Unexposed] [isPOD=0]
-// CHECK: TemplateTypeParameter=T:26:20 (Definition) [type=T] [typekind=Unexposed] [canonicaltype=type-parameter-0-0] [canonicaltypekind=Unexposed] [isPOD=0]
-// CHECK: FunctionTemplate=tbar:30:3 [type=T (int *)] [typekind=FunctionProto] [canonicaltype=type-parameter-0-0 (int *)] [canonicaltypekind=FunctionProto] [resulttype=T] [resulttypekind=Unexposed] [isPOD=0]
-// CHECK: ParmDecl=:30:11 (Definition) [type=int [5]] [typekind=ConstantArray] [isPOD=1]

Modified: trunk/contrib/llvm/tools/clang/test/Index/print-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/print-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/print-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
- at interface Foo
- at property (readonly) id x;
--(int) mymethod;
--(const id) mymethod2:(id)x blah:(Class)y boo:(SEL)z;
--(bycopy)methodIn:(in int)i andOut:(out short *)j , ...;
- at end
-
-// RUN: c-index-test -test-print-type %s | FileCheck %s
-// CHECK: ObjCPropertyDecl=x:2:25 [readonly,] [type=id] [typekind=ObjCId] [canonicaltype=id] [canonicaltypekind=ObjCObjectPointer] [isPOD=1]
-// CHECK: ObjCInstanceMethodDecl=mymethod:3:8 [type=] [typekind=Invalid] [resulttype=int] [resulttypekind=Int] [isPOD=0]
-// CHECK: ObjCInstanceMethodDecl=mymethod2:blah:boo::4:13 [type=] [typekind=Invalid] [resulttype=const id] [resulttypekind=ObjCId] [args= [id] [ObjCId] [Class] [ObjCClass] [SEL] [ObjCSel]] [isPOD=0]
-// CHECK: ParmDecl=z:4:52 (Definition) [type=SEL] [typekind=ObjCSel] [canonicaltype=SEL *] [canonicaltypekind=Pointer] [isPOD=1]
-// CHECK: ObjCInstanceMethodDecl=methodIn:andOut::5:10 (variadic) [Bycopy,] [type=] [typekind=Invalid] [resulttype=id] [resulttypekind=ObjCId] [args= [int] [Int] [short *] [Pointer]] [isPOD=0]
-// CHECK: ParmDecl=i:5:27 (Definition) [In,] [type=int] [typekind=Int] [isPOD=1]
-// CHECK: ParmDecl=j:5:49 (Definition) [Out,] [type=short *] [typekind=Pointer] [isPOD=1]

Modified: trunk/contrib/llvm/tools/clang/test/Index/print-usrs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/print-usrs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/print-usrs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: c-index-test -print-usr-file %s | FileCheck %s
-// This isn't really C code; it has a .c extension to get picked up by lit.
-ObjCClass NSObject
-ObjCCategory NSObject foo
-ObjCIvar x c:objc(cs)NSObject
-ObjCMethod foo: 0 c:objc(cs)NSObject
-ObjCMethod baz:with 1 c:objc(cs)NSObject
-ObjCProperty gimme c:objc(cs)NSObject
-ObjCProtocol blah
-// CHECK: c:objc(cs)NSObject
-// CHECK: c:objc(cy)NSObject at foo
-// CHECK: c:objc(cs)NSObject at x
-// CHECK: c:objc(cs)NSObject(cm)foo:
-// CHECK: c:objc(cs)NSObject(im)baz:with
-// CHECK: c:objc(cs)NSObject(py)gimme
-// CHECK: c:objc(pl)blah
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/properties-class-extensions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/properties-class-extensions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/properties-class-extensions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// Test that @properties within class extensions are visited by
-// clang_visitChildren only in the class extension, not the original
-// @interface (where we have a duplicate declaration - to be removed).
- at interface Foo {} @end
- at interface Foo (Cat)
- at property int a;
- at end
- at interface Foo ()
- at property int b;
-- (void) bar;
- at end
-
-// Test that 'setter' methods defined by @property in the class extension
-// but not the in @interface are only presented in the class extension.
- at interface Bar  
- at property (readonly) id bar;
- at end
- at interface Bar () 
- at property (readwrite) id bar;
- at end
-
-// Another test, this one involving protocols, where the @property should
-// not appear in the @interface.
- at class Rdar8467189_Bar;
- at protocol Rdar8467189_FooProtocol
- at property (readonly) Rdar8467189_Bar *Rdar8467189_Bar;
- at end
- at interface Rdar8467189_Foo <Rdar8467189_FooProtocol>
- at end
- at interface Rdar8467189_Foo ()
- at property (readwrite) Rdar8467189_Bar *Rdar8467189_Bar;
- at end
-
-// Test if the @property added in an extension is not reported in the @interface.
- at interface Qux
- at end
- at interface Qux ()
- at property (assign, readwrite) id qux;
- at end
-
- at implementation Qux
- at dynamic qux;
- at end
-
-// RUN: c-index-test -test-load-source local %s | FileCheck %s
-// CHECK: properties-class-extensions.m:4:12: ObjCInterfaceDecl=Foo:4:12 Extent=[4:1 - 4:23]
-// CHECK-NOT: properties-class-extensions.m:9:15: ObjCInstanceMethodDecl=setB::9:15 Extent=[9:15 - 9:16]
-// CHECK-NOT: properties-class-extensions.m:9:15: ParmDecl=b:9:15 (Definition) Extent=[9:15 - 9:16]
-// CHECK: properties-class-extensions.m:5:12: ObjCCategoryDecl=Cat:5:12 Extent=[5:1 - 7:5]
-// CHECK: properties-class-extensions.m:5:12: ObjCClassRef=Foo:4:12 Extent=[5:12 - 5:15]
-// CHECK: properties-class-extensions.m:6:15: ObjCPropertyDecl=a:6:15 Extent=[6:1 - 6:16]
-// CHECK: properties-class-extensions.m:6:15: ObjCInstanceMethodDecl=a:6:15 Extent=[6:15 - 6:16]
-// CHECK: properties-class-extensions.m:6:15: ObjCInstanceMethodDecl=setA::6:15 Extent=[6:15 - 6:16]
-// CHECK: properties-class-extensions.m:6:15: ParmDecl=a:6:15 (Definition) Extent=[6:15 - 6:16]
-// CHECK: properties-class-extensions.m:8:12: ObjCCategoryDecl=:8:12 Extent=[8:1 - 11:5]
-// CHECK: properties-class-extensions.m:8:12: ObjCClassRef=Foo:4:12 Extent=[8:12 - 8:15]
-// CHECK: properties-class-extensions.m:9:15: ObjCPropertyDecl=b:9:15 Extent=[9:1 - 9:16]
-// CHECK: properties-class-extensions.m:9:15: ObjCInstanceMethodDecl=b:9:15 Extent=[9:15 - 9:16]
-// CHECK: properties-class-extensions.m:9:15: ObjCInstanceMethodDecl=setB::9:15 Extent=[9:15 - 9:16]
-// CHECK: properties-class-extensions.m:9:15: ParmDecl=b:9:15 (Definition) Extent=[9:15 - 9:16]
-// CHECK: properties-class-extensions.m:10:10: ObjCInstanceMethodDecl=bar:10:10 Extent=[10:1 - 10:14]
-// CHECK: properties-class-extensions.m:15:12: ObjCInterfaceDecl=Bar:15:12 Extent=[15:1 - 17:5]
-// CHECK: properties-class-extensions.m:16:25: ObjCPropertyDecl=bar:16:25 [readonly,] Extent=[16:1 - 16:28]
-// CHECK: properties-class-extensions.m:16:22: TypeRef=id:0:0 Extent=[16:22 - 16:24]
-// CHECK: properties-class-extensions.m:16:25: ObjCInstanceMethodDecl=bar:16:25 Extent=[16:25 - 16:28]
-// CHECK: properties-class-extensions.m:18:12: ObjCCategoryDecl=:18:12 Extent=[18:1 - 20:5]
-// CHECK: properties-class-extensions.m:18:12: ObjCClassRef=Bar:15:12 Extent=[18:12 - 18:15]
-// CHECK: properties-class-extensions.m:19:26: ObjCPropertyDecl=bar:19:26 [readwrite,] Extent=[19:1 - 19:29]
-// CHECK: properties-class-extensions.m:19:23: TypeRef=id:0:0 Extent=[19:23 - 19:25]
-// CHECK-NOT: properties-class-extensions.m:16:25: ObjCInstanceMethodDecl=bar:16:25 Extent=[16:25 - 16:28]
-// CHECK: properties-class-extensions.m:19:26: ObjCInstanceMethodDecl=setBar::19:26 Extent=[19:26 - 19:29]
-// CHECK: properties-class-extensions.m:19:26: ParmDecl=bar:19:26 (Definition) Extent=[19:26 - 19:29]
-// CHECK: properties-class-extensions.m:24:8: ObjCInterfaceDecl=Rdar8467189_Bar:24:8 Extent=[24:1 - 24:23]
-// CHECK: properties-class-extensions.m:24:8: ObjCClassRef=Rdar8467189_Bar:24:8 Extent=[24:8 - 24:23]
-// CHECK: properties-class-extensions.m:25:11: ObjCProtocolDecl=Rdar8467189_FooProtocol:25:11 (Definition) Extent=[25:1 - 27:5]
-// CHECK: properties-class-extensions.m:26:39: ObjCPropertyDecl=Rdar8467189_Bar:26:39 [readonly,] Extent=[26:1 - 26:54]
-// CHECK: properties-class-extensions.m:26:22: ObjCClassRef=Rdar8467189_Bar:24:8 Extent=[26:22 - 26:37]
-// CHECK: properties-class-extensions.m:26:39: ObjCInstanceMethodDecl=Rdar8467189_Bar:26:39 Extent=[26:39 - 26:54]
-// CHECK: properties-class-extensions.m:28:12: ObjCInterfaceDecl=Rdar8467189_Foo:28:12 Extent=[28:1 - 29:5]
-// CHECK: properties-class-extensions.m:28:29: ObjCProtocolRef=Rdar8467189_FooProtocol:25:11 Extent=[28:29 - 28:52]
-// CHECK-NOT: properties-class-extensions.m:31:40: ObjCPropertyDecl=Rdar8467189_Bar:31:40 Extent=[31:40 - 31:55]
-// CHECK-NOT: properties-class-extensions.m:31:23: ObjCClassRef=Rdar8467189_Bar:24:8 Extent=[31:23 - 31:38]
-// CHECK: properties-class-extensions.m:30:12: ObjCCategoryDecl=:30:12 Extent=[30:1 - 32:5]
-// CHECK: properties-class-extensions.m:30:12: ObjCClassRef=Rdar8467189_Foo:28:12 Extent=[30:12 - 30:27]
-// CHECK: properties-class-extensions.m:31:40: ObjCPropertyDecl=Rdar8467189_Bar:31:40 [readwrite,] Extent=[31:1 - 31:55]
-// CHECK: properties-class-extensions.m:31:23: ObjCClassRef=Rdar8467189_Bar:24:8 Extent=[31:23 - 31:38]
-// CHECK: properties-class-extensions.m:31:40: ObjCInstanceMethodDecl=Rdar8467189_Bar:31:40 [Overrides @26:39] Extent=[31:40 - 31:55]
-// CHECK: properties-class-extensions.m:31:40: ObjCInstanceMethodDecl=setRdar8467189_Bar::31:40 Extent=[31:40 - 31:55]
-// CHECK: properties-class-extensions.m:31:40: ParmDecl=Rdar8467189_Bar:31:40 (Definition) Extent=[31:40 - 31:55]
-// CHECK: properties-class-extensions.m:35:12: ObjCInterfaceDecl=Qux:35:12 Extent=[35:1 - 36:5]
-// CHECK: properties-class-extensions.m:37:12: ObjCCategoryDecl=:37:12 Extent=[37:1 - 39:5]
-// CHECK: properties-class-extensions.m:37:12: ObjCClassRef=Qux:35:12 Extent=[37:12 - 37:15]
-// CHECK: properties-class-extensions.m:38:34: ObjCPropertyDecl=qux:38:34 [assign,readwrite,] Extent=[38:1 - 38:37]
-// CHECK: properties-class-extensions.m:38:31: TypeRef=id:0:0 Extent=[38:31 - 38:33]
-// CHECK: properties-class-extensions.m:38:34: ObjCInstanceMethodDecl=qux:38:34 Extent=[38:34 - 38:37]
-// CHECK: properties-class-extensions.m:38:34: ObjCInstanceMethodDecl=setQux::38:34 Extent=[38:34 - 38:37]
-// CHECK: properties-class-extensions.m:38:34: ParmDecl=qux:38:34 (Definition) Extent=[38:34 - 38:37]
-// CHECK: properties-class-extensions.m:42:10: ObjCDynamicDecl=qux:38:34 (Definition) Extent=[42:1 - 42:13]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/rdar-8288645-invalid-code.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/rdar-8288645-invalid-code.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/rdar-8288645-invalid-code.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: c-index-test -test-load-source all %s 2>&1 | FileCheck %s
-
-// This test case previously crashed Sema.
-
-extern "C" { @implementation Foo  - (id)initWithBar:(Baz<WozBar>)pepper {
-
-// CHECK: warning: cannot find interface declaration for 'Foo'

Modified: trunk/contrib/llvm/tools/clang/test/Index/rdar12316296-codecompletion.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/rdar12316296-codecompletion.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/rdar12316296-codecompletion.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: c-index-test -write-pch %t.h.pch %s
-// RUN: c-index-test -code-completion-at=%s:19:1 %s -include %t.h | FileCheck %s
-
-// <rdar://12316296> clang Code Completion returns nothing but preprocessor macros
-
-#ifndef HEADER
-#define HEADER
-
- at interface I
- at end
-
-// CHECK: FunctionDecl:{ResultType void}{TypedText foo}
-void foo();
-
-#else
-
- at implementation I
--(void)meth {
-
-}
- at end
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Index/recover-bad-code-rdar_7487294.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/recover-bad-code-rdar_7487294.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/recover-bad-code-rdar_7487294.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang-cc1 -fsyntax-only %s 2>&1 | FileCheck %s
-
-// IMPORTANT: This test case intentionally DOES NOT use --disable-free.  It
-// tests that we are properly reclaiming the ASTs and we do not have a double free.
-// Previously we tried to free the size expression of the VLA twice.
-
-int foo(int x) {
-  int y[x * 3];
-  help
-};
-
-// CHECK: 9:3: error: use of undeclared identifier 'help'
-// CHECK:  help

Modified: trunk/contrib/llvm/tools/clang/test/Index/recursive-cxx-member-calls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/recursive-cxx-member-calls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/recursive-cxx-member-calls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2242 +0,0 @@
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-namespace std {
-  template < class _T1, class _T2 > struct pair { _T2 second; };
-}
-extern "C" {
-  int memcmp(const void *, const void *, size_t);
-  size_t strlen(const char *);
-}
-namespace       clang {
-  class IdentifierInfo;
-  class AttributeList {
-    enum Kind {
-      AT_IBAction, AT_IBOutlet, AT_IBOutletCollection,
-      AT_address_space, AT_alias, AT_aligned, AT_always_inline,
-      AT_analyzer_noreturn, AT_annotate, AT_base_check, AT_blocks,
-      AT_carries_dependency, AT_cdecl, AT_cleanup, AT_const, AT_constructor,
-      AT_deprecated, AT_destructor, AT_dllexport, AT_dllimport,
-      AT_ext_vector_type, AT_fastcall, AT_final, AT_format, AT_format_arg,
-      AT_gnu_inline, AT_hiding, AT_malloc, AT_mode, AT_naked, AT_nodebug,
-      AT_noinline, AT_no_instrument_function, AT_nonnull, AT_noreturn,
-      AT_nothrow, AT_nsobject, AT_objc_exception, AT_override,
-      AT_cf_returns_not_retained, AT_cf_returns_retained,
-      AT_ns_returns_not_retained, AT_ns_returns_retained, AT_objc_gc, 
-      AT_overloadable, AT_ownership_holds, AT_ownership_returns,
-      AT_ownership_takes, AT_packed, AT_pascal, AT_pure, AT_regparm,
-      AT_section, AT_sentinel, AT_stdcall, AT_thiscall, AT_transparent_union,
-      AT_unavailable, AT_unused, AT_used, AT_vecreturn, AT_vector_size,
-      AT_visibility, AT_warn_unused_result, AT_weak, AT_weakref,
-      AT_weak_import, AT_reqd_wg_size, AT_init_priority,
-      AT_returns_twice, IgnoredAttribute, UnknownAttribute
-    };
-    static Kind getKind(const IdentifierInfo * Name);
-  };
-}
-size_t magic_length(const char *s);
-namespace llvm {
-class StringRef {
-public:
-  typedef const char *iterator;
-  static const size_t npos = ~size_t(0);
-private:
-  const char *Data;
-  size_t Length;
-  static size_t min(size_t a, size_t b) { return a < b ? a : b; }
-public:
-  StringRef(): Data(0), Length(0) {}
-  StringRef(const char *Str) : Data(Str), Length(magic_length(Str)) {}
-  StringRef(const char *data, size_t length) : Data(data), Length(length) {}
-  iterator end() const { return Data; }
-  size_t size() const { return Length; }
-  bool startswith(StringRef Prefix) const {
-    return Length >= Prefix.Length &&
-          memcmp(Data, Prefix.Data, Prefix.Length) == 0;
-  }
-  bool endswith(StringRef Suffix) const {
-    return Length >= Suffix.Length &&
-      memcmp(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0;
-  }
-  StringRef substr(size_t Start, size_t N = npos) const {
-    return StringRef(Data + Start, min(N, Length - Start));
-  }
-};
-}
-namespace clang {
-class IdentifierInfo {
-public:IdentifierInfo();
-  const char *getNameStart() const {
-    typedef std::pair < IdentifierInfo, const char *>actualtype;
-    return ((const actualtype *) this)->second;
-  }
-  unsigned getLength() const {
-    typedef std::pair < IdentifierInfo, const char *>actualtype;
-    const char *p = ((const actualtype *) this)->second - 2;
-    return (((unsigned) p[0]) | (((unsigned) p[1]) << 8)) - 1;
-  }
-  llvm::StringRef getName() const {
-    return llvm::StringRef(getNameStart(), getLength());
-  }
-};
-}
-namespace llvm {
-template < typename T, typename R = T > class StringSwitch {
-  StringRef Str;
-  const T *Result;
-public:
-  explicit StringSwitch(StringRef Str) : Str(Str), Result(0) {}
-  template < unsigned N > StringSwitch & Case(const char (&S)[N],
-                                              const T & Value) {
-    return *this;
-  }
-  R Default(const T & Value) const {
-    return Value;
-  }
-};
-}
-
-using namespace clang;
-
-AttributeList::Kind AttributeList::getKind(const IdentifierInfo * Name) {
-  llvm::StringRef AttrName = Name->getName();
-  if (AttrName.startswith("__") && AttrName.endswith("__"))
-    AttrName = AttrName.substr(2, AttrName.size() - 4);
-
-  return llvm::StringSwitch < AttributeList::Kind > (AttrName)
-    .Case("weak", AT_weak)
-    .Case("weakref", AT_weakref)
-    .Case("pure", AT_pure)
-    .Case("mode", AT_mode)
-    .Case("used", AT_used)
-    .Case("alias", AT_alias)
-    .Case("align", AT_aligned)
-    .Case("final", AT_final)
-    .Case("cdecl", AT_cdecl)
-    .Case("const", AT_const)
-    .Case("__const", AT_const)
-    .Case("blocks", AT_blocks)
-    .Case("format", AT_format)
-    .Case("hiding", AT_hiding)
-    .Case("malloc", AT_malloc)
-    .Case("packed", AT_packed)
-    .Case("unused", AT_unused)
-    .Case("aligned", AT_aligned)
-    .Case("cleanup", AT_cleanup)
-    .Case("naked", AT_naked)
-    .Case("nodebug", AT_nodebug)
-    .Case("nonnull", AT_nonnull)
-    .Case("nothrow", AT_nothrow)
-    .Case("objc_gc", AT_objc_gc)
-    .Case("regparm", AT_regparm)
-    .Case("section", AT_section)
-    .Case("stdcall", AT_stdcall)
-    .Case("annotate", AT_annotate)
-    .Case("fastcall", AT_fastcall)
-    .Case("ibaction", AT_IBAction)
-    .Case("iboutlet", AT_IBOutlet)
-    .Case("iboutletcollection", AT_IBOutletCollection)
-    .Case("noreturn", AT_noreturn)
-    .Case("noinline", AT_noinline)
-    .Case("override", AT_override)
-    .Case("sentinel", AT_sentinel)
-    .Case("NSObject", AT_nsobject)
-    .Case("dllimport", AT_dllimport)
-    .Case("dllexport", AT_dllexport)
-    .Case("may_alias", IgnoredAttribute)
-    .Case("base_check", AT_base_check)
-    .Case("deprecated", AT_deprecated)
-    .Case("visibility", AT_visibility)
-    .Case("destructor", AT_destructor)
-    .Case("format_arg", AT_format_arg)
-    .Case("gnu_inline", AT_gnu_inline)
-    .Case("weak_import", AT_weak_import)
-    .Case("vecreturn", AT_vecreturn)
-    .Case("vector_size", AT_vector_size)
-    .Case("constructor", AT_constructor)
-    .Case("unavailable", AT_unavailable)
-    .Case("overloadable", AT_overloadable)
-    .Case("address_space", AT_address_space)
-    .Case("always_inline", AT_always_inline)
-    .Case("returns_twice", AT_returns_twice)
-    .Case("vec_type_hint", IgnoredAttribute)
-    .Case("objc_exception", AT_objc_exception)
-    .Case("ext_vector_type", AT_ext_vector_type)
-    .Case("transparent_union", AT_transparent_union)
-    .Case("analyzer_noreturn", AT_analyzer_noreturn)
-    .Case("warn_unused_result", AT_warn_unused_result)
-    .Case("carries_dependency", AT_carries_dependency)
-    .Case("ns_returns_not_retained", AT_ns_returns_not_retained)
-    .Case("ns_returns_retained", AT_ns_returns_retained)
-    .Case("cf_returns_not_retained", AT_cf_returns_not_retained)
-    .Case("cf_returns_retained", AT_cf_returns_retained)
-    .Case("ownership_returns", AT_ownership_returns)
-    .Case("ownership_holds", AT_ownership_holds)
-    .Case("ownership_takes", AT_ownership_takes)
-    .Case("reqd_work_group_size", AT_reqd_wg_size)
-    .Case("init_priority", AT_init_priority)
-    .Case("no_instrument_function", AT_no_instrument_function)
-    .Case("thiscall", AT_thiscall)
-    .Case("pascal", AT_pascal)
-    .Case("__cdecl", AT_cdecl)
-    .Case("__stdcall", AT_stdcall)
-    .Case("__fastcall", AT_fastcall)
-    .Case("__thiscall", AT_thiscall)
-    .Case("__pascal", AT_pascal)
-    .Default(UnknownAttribute);
-}
-
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:186:1 %s 2>&1 | FileCheck -check-prefix=CHECK-tokens %s
-// CHECK-tokens: Keyword: "typedef" [1:1 - 1:8]
-// CHECK-tokens: Keyword: "long" [1:9 - 1:13]
-// CHECK-tokens: Keyword: "unsigned" [1:14 - 1:22]
-// CHECK-tokens: Keyword: "int" [1:23 - 1:26]
-// CHECK-tokens: Identifier: "__darwin_size_t" [1:27 - 1:42] TypedefDecl=__darwin_size_t:1:27 (Definition)
-// CHECK-tokens: Punctuation: ";" [1:42 - 1:43]
-// CHECK-tokens: Keyword: "typedef" [2:1 - 2:8]
-// CHECK-tokens: Identifier: "__darwin_size_t" [2:9 - 2:24]
-// CHECK-tokens: Identifier: "size_t" [2:25 - 2:31] TypedefDecl=size_t:2:25 (Definition)
-// CHECK-tokens: Punctuation: ";" [2:31 - 2:32]
-// CHECK-tokens: Keyword: "namespace" [3:1 - 3:10]
-// CHECK-tokens: Identifier: "std" [3:11 - 3:14] Namespace=std:3:11 (Definition)
-// CHECK-tokens: Punctuation: "{" [3:15 - 3:16] Namespace=std:3:11 (Definition)
-// CHECK-tokens: Keyword: "template" [4:3 - 4:11] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Punctuation: "<" [4:12 - 4:13] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Keyword: "class" [4:14 - 4:19] TemplateTypeParameter=_T1:4:20 (Definition)
-// CHECK-tokens: Identifier: "_T1" [4:20 - 4:23] TemplateTypeParameter=_T1:4:20 (Definition)
-// CHECK-tokens: Punctuation: "," [4:23 - 4:24] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Keyword: "class" [4:25 - 4:30] TemplateTypeParameter=_T2:4:31 (Definition)
-// CHECK-tokens: Identifier: "_T2" [4:31 - 4:34] TemplateTypeParameter=_T2:4:31 (Definition)
-// CHECK-tokens: Punctuation: ">" [4:35 - 4:36] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Keyword: "struct" [4:37 - 4:43] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Identifier: "pair" [4:44 - 4:48] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Punctuation: "{" [4:49 - 4:50] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Identifier: "_T2" [4:51 - 4:54] TypeRef=_T2:4:31
-// CHECK-tokens: Identifier: "second" [4:55 - 4:61] FieldDecl=second:4:55 (Definition)
-// CHECK-tokens: Punctuation: ";" [4:61 - 4:62] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Punctuation: "}" [4:63 - 4:64] ClassTemplate=pair:4:44 (Definition)
-// CHECK-tokens: Punctuation: ";" [4:64 - 4:65] Namespace=std:3:11 (Definition)
-// CHECK-tokens: Punctuation: "}" [5:1 - 5:2] Namespace=std:3:11 (Definition)
-// CHECK-tokens: Keyword: "extern" [6:1 - 6:7]
-// CHECK-tokens: Literal: ""C"" [6:8 - 6:11] UnexposedDecl=:6:8 (Definition)
-// CHECK-tokens: Punctuation: "{" [6:12 - 6:13] UnexposedDecl=:6:8 (Definition)
-// CHECK-tokens: Keyword: "int" [7:3 - 7:6] FunctionDecl=memcmp:7:7
-// CHECK-tokens: Identifier: "memcmp" [7:7 - 7:13] FunctionDecl=memcmp:7:7
-// CHECK-tokens: Punctuation: "(" [7:13 - 7:14] FunctionDecl=memcmp:7:7
-// CHECK-tokens: Keyword: "const" [7:14 - 7:19] ParmDecl=:7:26 (Definition)
-// CHECK-tokens: Keyword: "void" [7:20 - 7:24] ParmDecl=:7:26 (Definition)
-// CHECK-tokens: Punctuation: "*" [7:25 - 7:26] ParmDecl=:7:26 (Definition)
-// CHECK-tokens: Punctuation: "," [7:26 - 7:27] ParmDecl=:7:26 (Definition)
-// CHECK-tokens: Keyword: "const" [7:28 - 7:33] ParmDecl=:7:40 (Definition)
-// CHECK-tokens: Keyword: "void" [7:34 - 7:38] ParmDecl=:7:40 (Definition)
-// CHECK-tokens: Punctuation: "*" [7:39 - 7:40] ParmDecl=:7:40 (Definition)
-// CHECK-tokens: Punctuation: "," [7:40 - 7:41] ParmDecl=:7:40 (Definition)
-// CHECK-tokens: Identifier: "size_t" [7:42 - 7:48] TypeRef=size_t:2:25
-// CHECK-tokens: Punctuation: ")" [7:48 - 7:49] ParmDecl=:7:48 (Definition)
-// CHECK-tokens: Punctuation: ";" [7:49 - 7:50] UnexposedDecl=:6:8 (Definition)
-// CHECK-tokens: Identifier: "size_t" [8:3 - 8:9] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "strlen" [8:10 - 8:16] FunctionDecl=strlen:8:10
-// CHECK-tokens: Punctuation: "(" [8:16 - 8:17] FunctionDecl=strlen:8:10
-// CHECK-tokens: Keyword: "const" [8:17 - 8:22] ParmDecl=:8:29 (Definition)
-// CHECK-tokens: Keyword: "char" [8:23 - 8:27] ParmDecl=:8:29 (Definition)
-// CHECK-tokens: Punctuation: "*" [8:28 - 8:29] ParmDecl=:8:29 (Definition)
-// CHECK-tokens: Punctuation: ")" [8:29 - 8:30] ParmDecl=:8:29 (Definition)
-// CHECK-tokens: Punctuation: ";" [8:30 - 8:31]
-// CHECK-tokens: Punctuation: "}" [9:1 - 9:2]
-// CHECK-tokens: Keyword: "namespace" [10:1 - 10:10]
-// CHECK-tokens: Identifier: "clang" [10:17 - 10:22] Namespace=clang:10:17 (Definition)
-// CHECK-tokens: Punctuation: "{" [10:23 - 10:24] Namespace=clang:10:17 (Definition)
-// CHECK-tokens: Keyword: "class" [11:3 - 11:8] ClassDecl=IdentifierInfo:11:9
-// CHECK-tokens: Identifier: "IdentifierInfo" [11:9 - 11:23] ClassDecl=IdentifierInfo:11:9
-// CHECK-tokens: Punctuation: ";" [11:23 - 11:24] Namespace=clang:10:17 (Definition)
-// CHECK-tokens: Keyword: "class" [12:3 - 12:8] ClassDecl=AttributeList:12:9 (Definition)
-// CHECK-tokens: Identifier: "AttributeList" [12:9 - 12:22] ClassDecl=AttributeList:12:9 (Definition)
-// CHECK-tokens: Punctuation: "{" [12:23 - 12:24] ClassDecl=AttributeList:12:9 (Definition)
-// CHECK-tokens: Keyword: "enum" [13:5 - 13:9] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "Kind" [13:10 - 13:14] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Punctuation: "{" [13:15 - 13:16] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_IBAction" [14:7 - 14:18] EnumConstantDecl=AT_IBAction:14:7 (Definition)
-// CHECK-tokens: Punctuation: "," [14:18 - 14:19] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_IBOutlet" [14:20 - 14:31] EnumConstantDecl=AT_IBOutlet:14:20 (Definition)
-// CHECK-tokens: Punctuation: "," [14:31 - 14:32] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_IBOutletCollection" [14:33 - 14:54] EnumConstantDecl=AT_IBOutletCollection:14:33 (Definition)
-// CHECK-tokens: Punctuation: "," [14:54 - 14:55] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_address_space" [15:7 - 15:23] EnumConstantDecl=AT_address_space:15:7 (Definition)
-// CHECK-tokens: Punctuation: "," [15:23 - 15:24] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_alias" [15:25 - 15:33] EnumConstantDecl=AT_alias:15:25 (Definition)
-// CHECK-tokens: Punctuation: "," [15:33 - 15:34] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_aligned" [15:35 - 15:45] EnumConstantDecl=AT_aligned:15:35 (Definition)
-// CHECK-tokens: Punctuation: "," [15:45 - 15:46] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_always_inline" [15:47 - 15:63] EnumConstantDecl=AT_always_inline:15:47 (Definition)
-// CHECK-tokens: Punctuation: "," [15:63 - 15:64] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_analyzer_noreturn" [16:7 - 16:27] EnumConstantDecl=AT_analyzer_noreturn:16:7 (Definition)
-// CHECK-tokens: Punctuation: "," [16:27 - 16:28] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_annotate" [16:29 - 16:40] EnumConstantDecl=AT_annotate:16:29 (Definition)
-// CHECK-tokens: Punctuation: "," [16:40 - 16:41] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_base_check" [16:42 - 16:55] EnumConstantDecl=AT_base_check:16:42 (Definition)
-// CHECK-tokens: Punctuation: "," [16:55 - 16:56] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_blocks" [16:57 - 16:66] EnumConstantDecl=AT_blocks:16:57 (Definition)
-// CHECK-tokens: Punctuation: "," [16:66 - 16:67] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_carries_dependency" [17:7 - 17:28] EnumConstantDecl=AT_carries_dependency:17:7 (Definition)
-// CHECK-tokens: Punctuation: "," [17:28 - 17:29] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_cdecl" [17:30 - 17:38] EnumConstantDecl=AT_cdecl:17:30 (Definition)
-// CHECK-tokens: Punctuation: "," [17:38 - 17:39] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_cleanup" [17:40 - 17:50] EnumConstantDecl=AT_cleanup:17:40 (Definition)
-// CHECK-tokens: Punctuation: "," [17:50 - 17:51] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_const" [17:52 - 17:60] EnumConstantDecl=AT_const:17:52 (Definition)
-// CHECK-tokens: Punctuation: "," [17:60 - 17:61] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_constructor" [17:62 - 17:76] EnumConstantDecl=AT_constructor:17:62 (Definition)
-// CHECK-tokens: Punctuation: "," [17:76 - 17:77] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_deprecated" [18:7 - 18:20] EnumConstantDecl=AT_deprecated:18:7 (Definition)
-// CHECK-tokens: Punctuation: "," [18:20 - 18:21] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_destructor" [18:22 - 18:35] EnumConstantDecl=AT_destructor:18:22 (Definition)
-// CHECK-tokens: Punctuation: "," [18:35 - 18:36] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_dllexport" [18:37 - 18:49] EnumConstantDecl=AT_dllexport:18:37 (Definition)
-// CHECK-tokens: Punctuation: "," [18:49 - 18:50] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_dllimport" [18:51 - 18:63] EnumConstantDecl=AT_dllimport:18:51 (Definition)
-// CHECK-tokens: Punctuation: "," [18:63 - 18:64] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_ext_vector_type" [19:7 - 19:25] EnumConstantDecl=AT_ext_vector_type:19:7 (Definition)
-// CHECK-tokens: Punctuation: "," [19:25 - 19:26] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_fastcall" [19:27 - 19:38] EnumConstantDecl=AT_fastcall:19:27 (Definition)
-// CHECK-tokens: Punctuation: "," [19:38 - 19:39] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_final" [19:40 - 19:48] EnumConstantDecl=AT_final:19:40 (Definition)
-// CHECK-tokens: Punctuation: "," [19:48 - 19:49] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_format" [19:50 - 19:59] EnumConstantDecl=AT_format:19:50 (Definition)
-// CHECK-tokens: Punctuation: "," [19:59 - 19:60] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_format_arg" [19:61 - 19:74] EnumConstantDecl=AT_format_arg:19:61 (Definition)
-// CHECK-tokens: Punctuation: "," [19:74 - 19:75] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_gnu_inline" [20:7 - 20:20] EnumConstantDecl=AT_gnu_inline:20:7 (Definition)
-// CHECK-tokens: Punctuation: "," [20:20 - 20:21] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_hiding" [20:22 - 20:31] EnumConstantDecl=AT_hiding:20:22 (Definition)
-// CHECK-tokens: Punctuation: "," [20:31 - 20:32] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_malloc" [20:33 - 20:42] EnumConstantDecl=AT_malloc:20:33 (Definition)
-// CHECK-tokens: Punctuation: "," [20:42 - 20:43] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_mode" [20:44 - 20:51] EnumConstantDecl=AT_mode:20:44 (Definition)
-// CHECK-tokens: Punctuation: "," [20:51 - 20:52] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_naked" [20:53 - 20:61] EnumConstantDecl=AT_naked:20:53 (Definition)
-// CHECK-tokens: Punctuation: "," [20:61 - 20:62] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_nodebug" [20:63 - 20:73] EnumConstantDecl=AT_nodebug:20:63 (Definition)
-// CHECK-tokens: Punctuation: "," [20:73 - 20:74] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_noinline" [21:7 - 21:18] EnumConstantDecl=AT_noinline:21:7 (Definition)
-// CHECK-tokens: Punctuation: "," [21:18 - 21:19] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_no_instrument_function" [21:20 - 21:45] EnumConstantDecl=AT_no_instrument_function:21:20 (Definition)
-// CHECK-tokens: Punctuation: "," [21:45 - 21:46] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_nonnull" [21:47 - 21:57] EnumConstantDecl=AT_nonnull:21:47 (Definition)
-// CHECK-tokens: Punctuation: "," [21:57 - 21:58] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_noreturn" [21:59 - 21:70] EnumConstantDecl=AT_noreturn:21:59 (Definition)
-// CHECK-tokens: Punctuation: "," [21:70 - 21:71] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_nothrow" [22:7 - 22:17] EnumConstantDecl=AT_nothrow:22:7 (Definition)
-// CHECK-tokens: Punctuation: "," [22:17 - 22:18] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_nsobject" [22:19 - 22:30] EnumConstantDecl=AT_nsobject:22:19 (Definition)
-// CHECK-tokens: Punctuation: "," [22:30 - 22:31] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_objc_exception" [22:32 - 22:49] EnumConstantDecl=AT_objc_exception:22:32 (Definition)
-// CHECK-tokens: Punctuation: "," [22:49 - 22:50] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_override" [22:51 - 22:62] EnumConstantDecl=AT_override:22:51 (Definition)
-// CHECK-tokens: Punctuation: "," [22:62 - 22:63] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_cf_returns_not_retained" [23:7 - 23:33] EnumConstantDecl=AT_cf_returns_not_retained:23:7 (Definition)
-// CHECK-tokens: Punctuation: "," [23:33 - 23:34] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_cf_returns_retained" [23:35 - 23:57] EnumConstantDecl=AT_cf_returns_retained:23:35 (Definition)
-// CHECK-tokens: Punctuation: "," [23:57 - 23:58] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_ns_returns_not_retained" [24:7 - 24:33] EnumConstantDecl=AT_ns_returns_not_retained:24:7 (Definition)
-// CHECK-tokens: Punctuation: "," [24:33 - 24:34] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_ns_returns_retained" [24:35 - 24:57] EnumConstantDecl=AT_ns_returns_retained:24:35 (Definition)
-// CHECK-tokens: Punctuation: "," [24:57 - 24:58] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_objc_gc" [24:59 - 24:69] EnumConstantDecl=AT_objc_gc:24:59 (Definition)
-// CHECK-tokens: Punctuation: "," [24:69 - 24:70] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_overloadable" [25:7 - 25:22] EnumConstantDecl=AT_overloadable:25:7 (Definition)
-// CHECK-tokens: Punctuation: "," [25:22 - 25:23] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_ownership_holds" [25:24 - 25:42] EnumConstantDecl=AT_ownership_holds:25:24 (Definition)
-// CHECK-tokens: Punctuation: "," [25:42 - 25:43] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_ownership_returns" [25:44 - 25:64] EnumConstantDecl=AT_ownership_returns:25:44 (Definition)
-// CHECK-tokens: Punctuation: "," [25:64 - 25:65] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_ownership_takes" [26:7 - 26:25] EnumConstantDecl=AT_ownership_takes:26:7 (Definition)
-// CHECK-tokens: Punctuation: "," [26:25 - 26:26] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_packed" [26:27 - 26:36] EnumConstantDecl=AT_packed:26:27 (Definition)
-// CHECK-tokens: Punctuation: "," [26:36 - 26:37] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_pascal" [26:38 - 26:47] EnumConstantDecl=AT_pascal:26:38 (Definition)
-// CHECK-tokens: Punctuation: "," [26:47 - 26:48] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_pure" [26:49 - 26:56] EnumConstantDecl=AT_pure:26:49 (Definition)
-// CHECK-tokens: Punctuation: "," [26:56 - 26:57] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_regparm" [26:58 - 26:68] EnumConstantDecl=AT_regparm:26:58 (Definition)
-// CHECK-tokens: Punctuation: "," [26:68 - 26:69] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_section" [27:7 - 27:17] EnumConstantDecl=AT_section:27:7 (Definition)
-// CHECK-tokens: Punctuation: "," [27:17 - 27:18] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_sentinel" [27:19 - 27:30] EnumConstantDecl=AT_sentinel:27:19 (Definition)
-// CHECK-tokens: Punctuation: "," [27:30 - 27:31] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_stdcall" [27:32 - 27:42] EnumConstantDecl=AT_stdcall:27:32 (Definition)
-// CHECK-tokens: Punctuation: "," [27:42 - 27:43] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_thiscall" [27:44 - 27:55] EnumConstantDecl=AT_thiscall:27:44 (Definition)
-// CHECK-tokens: Punctuation: "," [27:55 - 27:56] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_transparent_union" [27:57 - 27:77] EnumConstantDecl=AT_transparent_union:27:57 (Definition)
-// CHECK-tokens: Punctuation: "," [27:77 - 27:78] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_unavailable" [28:7 - 28:21] EnumConstantDecl=AT_unavailable:28:7 (Definition)
-// CHECK-tokens: Punctuation: "," [28:21 - 28:22] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_unused" [28:23 - 28:32] EnumConstantDecl=AT_unused:28:23 (Definition)
-// CHECK-tokens: Punctuation: "," [28:32 - 28:33] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_used" [28:34 - 28:41] EnumConstantDecl=AT_used:28:34 (Definition)
-// CHECK-tokens: Punctuation: "," [28:41 - 28:42] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_vecreturn" [28:43 - 28:55] EnumConstantDecl=AT_vecreturn:28:43 (Definition)
-// CHECK-tokens: Punctuation: "," [28:55 - 28:56] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_vector_size" [28:57 - 28:71] EnumConstantDecl=AT_vector_size:28:57 (Definition)
-// CHECK-tokens: Punctuation: "," [28:71 - 28:72] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_visibility" [29:7 - 29:20] EnumConstantDecl=AT_visibility:29:7 (Definition)
-// CHECK-tokens: Punctuation: "," [29:20 - 29:21] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_warn_unused_result" [29:22 - 29:43] EnumConstantDecl=AT_warn_unused_result:29:22 (Definition)
-// CHECK-tokens: Punctuation: "," [29:43 - 29:44] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_weak" [29:45 - 29:52] EnumConstantDecl=AT_weak:29:45 (Definition)
-// CHECK-tokens: Punctuation: "," [29:52 - 29:53] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_weakref" [29:54 - 29:64] EnumConstantDecl=AT_weakref:29:54 (Definition)
-// CHECK-tokens: Punctuation: "," [29:64 - 29:65] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_weak_import" [30:7 - 30:21] EnumConstantDecl=AT_weak_import:30:7 (Definition)
-// CHECK-tokens: Punctuation: "," [30:21 - 30:22] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_reqd_wg_size" [30:23 - 30:38] EnumConstantDecl=AT_reqd_wg_size:30:23 (Definition)
-// CHECK-tokens: Punctuation: "," [30:38 - 30:39] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_init_priority" [30:40 - 30:56] EnumConstantDecl=AT_init_priority:30:40 (Definition)
-// CHECK-tokens: Punctuation: "," [30:56 - 30:57] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "AT_returns_twice" [31:7 - 31:23] EnumConstantDecl=AT_returns_twice:31:7 (Definition)
-// CHECK-tokens: Punctuation: "," [31:23 - 31:24] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Identifier: "IgnoredAttribute" [31:25 - 31:41] EnumConstantDecl=IgnoredAttribute:31:25 (Definition)
-// CHECK-tokens: Punctuation: "}" [32:5 - 32:6] EnumDecl=Kind:13:10 (Definition)
-// CHECK-tokens: Punctuation: ";" [32:6 - 32:7] ClassDecl=AttributeList:12:9 (Definition)
-// CHECK-tokens: Keyword: "static" [33:5 - 33:11] CXXMethod=getKind:33:17 (static)
-// CHECK-tokens: Identifier: "Kind" [33:12 - 33:16] TypeRef=enum clang::AttributeList::Kind:13:10
-// CHECK-tokens: Identifier: "getKind" [33:17 - 33:24] CXXMethod=getKind:33:17 (static)
-// CHECK-tokens: Punctuation: "(" [33:24 - 33:25] CXXMethod=getKind:33:17 (static)
-// CHECK-tokens: Keyword: "const" [33:25 - 33:30] ParmDecl=Name:33:48 (Definition)
-// CHECK-tokens: Identifier: "IdentifierInfo" [33:31 - 33:45] TypeRef=class clang::IdentifierInfo:66:7
-// CHECK-tokens: Punctuation: "*" [33:46 - 33:47] ParmDecl=Name:33:48 (Definition)
-// CHECK-tokens: Identifier: "Name" [33:48 - 33:52] ParmDecl=Name:33:48 (Definition)
-// CHECK-tokens: Punctuation: ")" [33:52 - 33:53] CXXMethod=getKind:33:17 (static)
-// CHECK-tokens: Punctuation: ";" [33:53 - 33:54] ClassDecl=AttributeList:12:9 (Definition)
-// CHECK-tokens: Punctuation: "}" [34:3 - 34:4] ClassDecl=AttributeList:12:9 (Definition)
-// CHECK-tokens: Punctuation: ";" [34:4 - 34:5] Namespace=clang:10:17 (Definition)
-// CHECK-tokens: Punctuation: "}" [35:1 - 35:2] Namespace=clang:10:17 (Definition)
-// CHECK-tokens: Identifier: "size_t" [36:1 - 36:7] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "magic_length" [36:8 - 36:20] FunctionDecl=magic_length:36:8
-// CHECK-tokens: Punctuation: "(" [36:20 - 36:21] FunctionDecl=magic_length:36:8
-// CHECK-tokens: Keyword: "const" [36:21 - 36:26] ParmDecl=s:36:33 (Definition)
-// CHECK-tokens: Keyword: "char" [36:27 - 36:31] ParmDecl=s:36:33 (Definition)
-// CHECK-tokens: Punctuation: "*" [36:32 - 36:33] ParmDecl=s:36:33 (Definition)
-// CHECK-tokens: Identifier: "s" [36:33 - 36:34] ParmDecl=s:36:33 (Definition)
-// CHECK-tokens: Punctuation: ")" [36:34 - 36:35] FunctionDecl=magic_length:36:8
-// CHECK-tokens: Punctuation: ";" [36:35 - 36:36]
-// CHECK-tokens: Keyword: "namespace" [37:1 - 37:10]
-// CHECK-tokens: Identifier: "llvm" [37:11 - 37:15] Namespace=llvm:37:11 (Definition)
-// CHECK-tokens: Punctuation: "{" [37:16 - 37:17] Namespace=llvm:37:11 (Definition)
-// CHECK-tokens: Keyword: "class" [38:1 - 38:6] ClassDecl=StringRef:38:7 (Definition)
-// CHECK-tokens: Identifier: "StringRef" [38:7 - 38:16] ClassDecl=StringRef:38:7 (Definition)
-// CHECK-tokens: Punctuation: "{" [38:17 - 38:18] ClassDecl=StringRef:38:7 (Definition)
-// CHECK-tokens: Keyword: "public" [39:1 - 39:7] CXXAccessSpecifier=:39:1 (Definition)
-// CHECK-tokens: Punctuation: ":" [39:7 - 39:8] CXXAccessSpecifier=:39:1 (Definition)
-// CHECK-tokens: Keyword: "typedef" [40:3 - 40:10] TypedefDecl=iterator:40:23 (Definition)
-// CHECK-tokens: Keyword: "const" [40:11 - 40:16] TypedefDecl=iterator:40:23 (Definition)
-// CHECK-tokens: Keyword: "char" [40:17 - 40:21] TypedefDecl=iterator:40:23 (Definition)
-// CHECK-tokens: Punctuation: "*" [40:22 - 40:23] TypedefDecl=iterator:40:23 (Definition)
-// CHECK-tokens: Identifier: "iterator" [40:23 - 40:31] TypedefDecl=iterator:40:23 (Definition)
-// CHECK-tokens: Punctuation: ";" [40:31 - 40:32] ClassDecl=StringRef:38:7 (Definition)
-// CHECK-tokens: Keyword: "static" [41:3 - 41:9] VarDecl=npos:41:23
-// CHECK-tokens: Keyword: "const" [41:10 - 41:15] VarDecl=npos:41:23
-// CHECK-tokens: Identifier: "size_t" [41:16 - 41:22] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "npos" [41:23 - 41:27] VarDecl=npos:41:23
-// CHECK-tokens: Punctuation: "=" [41:28 - 41:29] VarDecl=npos:41:23
-// CHECK-tokens: Punctuation: "~" [41:30 - 41:31] UnaryOperator=
-// CHECK-tokens: Identifier: "size_t" [41:31 - 41:37] TypeRef=size_t:2:25
-// CHECK-tokens: Punctuation: "(" [41:37 - 41:38] CXXFunctionalCastExpr=
-// CHECK-tokens: Literal: "0" [41:38 - 41:39] IntegerLiteral=
-// CHECK-tokens: Punctuation: ")" [41:39 - 41:40] CXXFunctionalCastExpr
-// CHECK-tokens: Punctuation: ";" [41:40 - 41:41] ClassDecl=StringRef:38:7 (Definition)
-// CHECK-tokens: Keyword: "private" [42:1 - 42:8] CXXAccessSpecifier=:42:1 (Definition)
-// CHECK-tokens: Punctuation: ":" [42:8 - 42:9] CXXAccessSpecifier=:42:1 (Definition)
-// CHECK-tokens: Keyword: "const" [43:3 - 43:8] FieldDecl=Data:43:15 (Definition)
-// CHECK-tokens: Keyword: "char" [43:9 - 43:13] FieldDecl=Data:43:15 (Definition)
-// CHECK-tokens: Punctuation: "*" [43:14 - 43:15] FieldDecl=Data:43:15 (Definition)
-// CHECK-tokens: Identifier: "Data" [43:15 - 43:19] FieldDecl=Data:43:15 (Definition)
-// CHECK-tokens: Punctuation: ";" [43:19 - 43:20] ClassDecl=StringRef:38:7 (Definition)
-// CHECK-tokens: Identifier: "size_t" [44:3 - 44:9] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "Length" [44:10 - 44:16] FieldDecl=Length:44:10 (Definition)
-// CHECK-tokens: Punctuation: ";" [44:16 - 44:17] ClassDecl=StringRef:38:7 (Definition)
-// CHECK-tokens: Keyword: "static" [45:3 - 45:9] CXXMethod=min:45:17 (Definition) (static)
-// CHECK-tokens: Identifier: "size_t" [45:10 - 45:16] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "min" [45:17 - 45:20] CXXMethod=min:45:17 (Definition) (static)
-// CHECK-tokens: Punctuation: "(" [45:20 - 45:21] CXXMethod=min:45:17 (Definition) (static)
-// CHECK-tokens: Identifier: "size_t" [45:21 - 45:27] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "a" [45:28 - 45:29] ParmDecl=a:45:28 (Definition)
-// CHECK-tokens: Punctuation: "," [45:29 - 45:30] CXXMethod=min:45:17 (Definition) (static)
-// CHECK-tokens: Identifier: "size_t" [45:31 - 45:37] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "b" [45:38 - 45:39] ParmDecl=b:45:38 (Definition)
-// CHECK-tokens: Punctuation: ")" [45:39 - 45:40] CXXMethod=min:45:17 (Definition) (static)
-// CHECK-tokens: Punctuation: "{" [45:41 - 45:42] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [45:43 - 45:49] ReturnStmt=
-// CHECK-tokens: Identifier: "a" [45:50 - 45:51] DeclRefExpr=a:45:28
-// CHECK-tokens: Punctuation: "<" [45:52 - 45:53] BinaryOperator=
-// CHECK-tokens: Identifier: "b" [45:54 - 45:55] DeclRefExpr=b:45:38
-// CHECK-tokens: Punctuation: "?" [45:56 - 45:57] ConditionalOperator=
-// CHECK-tokens: Identifier: "a" [45:58 - 45:59] DeclRefExpr=a:45:28
-// CHECK-tokens: Punctuation: ":" [45:60 - 45:61] ConditionalOperator
-// CHECK-tokens: Identifier: "b" [45:62 - 45:63] DeclRefExpr=b:45:38
-// CHECK-tokens: Punctuation: ";" [45:63 - 45:64] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [45:65 - 45:66] CompoundStmt=
-// CHECK-tokens: Keyword: "public" [46:1 - 46:7] CXXAccessSpecifier=:46:1 (Definition)
-// CHECK-tokens: Punctuation: ":" [46:7 - 46:8] CXXAccessSpecifier=:46:1 (Definition)
-// CHECK-tokens: Identifier: "StringRef" [47:3 - 47:12] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Punctuation: "(" [47:12 - 47:13] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Punctuation: ")" [47:13 - 47:14] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Punctuation: ":" [47:14 - 47:15] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Identifier: "Data" [47:16 - 47:20] MemberRef=Data:43:15
-// CHECK-tokens: Punctuation: "(" [47:20 - 47:21] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Literal: "0" [47:21 - 47:22] IntegerLiteral=
-// CHECK-tokens: Punctuation: ")" [47:22 - 47:23] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Punctuation: "," [47:23 - 47:24] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Identifier: "Length" [47:25 - 47:31] MemberRef=Length:44:10
-// CHECK-tokens: Punctuation: "(" [47:31 - 47:32] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Literal: "0" [47:32 - 47:33] IntegerLiteral=
-// CHECK-tokens: Punctuation: ")" [47:33 - 47:34] CXXConstructor=StringRef:47:3 (Definition)
-// CHECK-tokens: Punctuation: "{" [47:35 - 47:36] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [47:36 - 47:37] CompoundStmt=
-// CHECK-tokens: Identifier: "StringRef" [48:3 - 48:12] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Punctuation: "(" [48:12 - 48:13] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Keyword: "const" [48:13 - 48:18] ParmDecl=Str:48:25 (Definition)
-// CHECK-tokens: Keyword: "char" [48:19 - 48:23] ParmDecl=Str:48:25 (Definition)
-// CHECK-tokens: Punctuation: "*" [48:24 - 48:25] ParmDecl=Str:48:25 (Definition)
-// CHECK-tokens: Identifier: "Str" [48:25 - 48:28] ParmDecl=Str:48:25 (Definition)
-// CHECK-tokens: Punctuation: ")" [48:28 - 48:29] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Punctuation: ":" [48:30 - 48:31] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Identifier: "Data" [48:32 - 48:36] MemberRef=Data:43:15
-// CHECK-tokens: Punctuation: "(" [48:36 - 48:37] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Identifier: "Str" [48:37 - 48:40] DeclRefExpr=Str:48:25
-// CHECK-tokens: Punctuation: ")" [48:40 - 48:41] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Punctuation: "," [48:41 - 48:42] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Identifier: "Length" [48:43 - 48:49] MemberRef=Length:44:10
-// CHECK-tokens: Punctuation: "(" [48:49 - 48:50] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Identifier: "magic_length" [48:50 - 48:62] DeclRefExpr=magic_length:36:8
-// CHECK-tokens: Punctuation: "(" [48:62 - 48:63] CallExpr=magic_length:36:8
-// CHECK-tokens: Identifier: "Str" [48:63 - 48:66] DeclRefExpr=Str:48:25
-// CHECK-tokens: Punctuation: ")" [48:66 - 48:67] CallExpr=magic_length:36:8
-// CHECK-tokens: Punctuation: ")" [48:67 - 48:68] CXXConstructor=StringRef:48:3 (Definition)
-// CHECK-tokens: Punctuation: "{" [48:69 - 48:70] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [48:70 - 48:71] CompoundStmt=
-// CHECK-tokens: Identifier: "StringRef" [49:3 - 49:12] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Punctuation: "(" [49:12 - 49:13] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Keyword: "const" [49:13 - 49:18] ParmDecl=data:49:25 (Definition)
-// CHECK-tokens: Keyword: "char" [49:19 - 49:23] ParmDecl=data:49:25 (Definition)
-// CHECK-tokens: Punctuation: "*" [49:24 - 49:25] ParmDecl=data:49:25 (Definition)
-// CHECK-tokens: Identifier: "data" [49:25 - 49:29] ParmDecl=data:49:25 (Definition)
-// CHECK-tokens: Punctuation: "," [49:29 - 49:30] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Identifier: "size_t" [49:31 - 49:37] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "length" [49:38 - 49:44] ParmDecl=length:49:38 (Definition)
-// CHECK-tokens: Punctuation: ")" [49:44 - 49:45] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Punctuation: ":" [49:46 - 49:47] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Identifier: "Data" [49:48 - 49:52] MemberRef=Data:43:15
-// CHECK-tokens: Punctuation: "(" [49:52 - 49:53] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Identifier: "data" [49:53 - 49:57] DeclRefExpr=data:49:25
-// CHECK-tokens: Punctuation: ")" [49:57 - 49:58] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Punctuation: "," [49:58 - 49:59] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Identifier: "Length" [49:60 - 49:66] MemberRef=Length:44:10
-// CHECK-tokens: Punctuation: "(" [49:66 - 49:67] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Identifier: "length" [49:67 - 49:73] DeclRefExpr=length:49:38
-// CHECK-tokens: Punctuation: ")" [49:73 - 49:74] CXXConstructor=StringRef:49:3 (Definition)
-// CHECK-tokens: Punctuation: "{" [49:75 - 49:76] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [49:76 - 49:77] CompoundStmt=
-// CHECK-tokens: Identifier: "iterator" [50:3 - 50:11] TypeRef=iterator:40:23
-// CHECK-tokens: Identifier: "end" [50:12 - 50:15] CXXMethod=end:50:12 (Definition)
-// CHECK-tokens: Punctuation: "(" [50:15 - 50:16] CXXMethod=end:50:12 (Definition)
-// CHECK-tokens: Punctuation: ")" [50:16 - 50:17] CXXMethod=end:50:12 (Definition)
-// CHECK-tokens: Keyword: "const" [50:18 - 50:23] CXXMethod=end:50:12 (Definition)
-// CHECK-tokens: Punctuation: "{" [50:24 - 50:25] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [50:26 - 50:32] ReturnStmt=
-// CHECK-tokens: Identifier: "Data" [50:33 - 50:37]  MemberRefExpr=Data:43:15
-// CHECK-tokens: Punctuation: ";" [50:37 - 50:38] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [50:39 - 50:40] CompoundStmt=
-// CHECK-tokens: Identifier: "size_t" [51:3 - 51:9] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "size" [51:10 - 51:14] CXXMethod=size:51:10 (Definition)
-// CHECK-tokens: Punctuation: "(" [51:14 - 51:15] CXXMethod=size:51:10 (Definition)
-// CHECK-tokens: Punctuation: ")" [51:15 - 51:16] CXXMethod=size:51:10 (Definition)
-// CHECK-tokens: Keyword: "const" [51:17 - 51:22] CXXMethod=size:51:10 (Definition)
-// CHECK-tokens: Punctuation: "{" [51:23 - 51:24] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [51:25 - 51:31] ReturnStmt=
-// CHECK-tokens: Identifier: "Length" [51:32 - 51:38] MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: ";" [51:38 - 51:39] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [51:40 - 51:41] CompoundStmt=
-// CHECK-tokens: Keyword: "bool" [52:3 - 52:7] CXXMethod=startswith:52:8 (Definition)
-// CHECK-tokens: Identifier: "startswith" [52:8 - 52:18] CXXMethod=startswith:52:8 (Definition)
-// CHECK-tokens: Punctuation: "(" [52:18 - 52:19] CXXMethod=startswith:52:8 (Definition)
-// CHECK-tokens: Identifier: "StringRef" [52:19 - 52:28] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Identifier: "Prefix" [52:29 - 52:35] ParmDecl=Prefix:52:29 (Definition)
-// CHECK-tokens: Punctuation: ")" [52:35 - 52:36] CXXMethod=startswith:52:8 (Definition)
-// CHECK-tokens: Keyword: "const" [52:37 - 52:42] CXXMethod=startswith:52:8 (Definition)
-// CHECK-tokens: Punctuation: "{" [52:43 - 52:44] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [53:5 - 53:11] ReturnStmt=
-// CHECK-tokens: Identifier: "Length" [53:12 - 53:18] MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: ">=" [53:19 - 53:21] BinaryOperator=
-// CHECK-tokens: Identifier: "Prefix" [53:22 - 53:28] DeclRefExpr=Prefix:52:29
-// CHECK-tokens: Punctuation: "." [53:28 - 53:29] MemberRefExpr=Length:44:10
-// CHECK-tokens: Identifier: "Length" [53:29 - 53:35] MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: "&&" [53:36 - 53:38] BinaryOperator=
-// CHECK-tokens: Identifier: "memcmp" [54:11 - 54:17] DeclRefExpr=memcmp:7:7
-// CHECK-tokens: Punctuation: "(" [54:17 - 54:18] CallExpr=memcmp:7:7
-// CHECK-tokens: Identifier: "Data" [54:18 - 54:22]  MemberRefExpr=Data:43:15
-// CHECK-tokens: Punctuation: "," [54:22 - 54:23] CallExpr=memcmp:7:7
-// CHECK-tokens: Identifier: "Prefix" [54:24 - 54:30] DeclRefExpr=Prefix:52:29
-// CHECK-tokens: Punctuation: "." [54:30 - 54:31] MemberRefExpr=Data:43:15
-// CHECK-tokens: Identifier: "Data" [54:31 - 54:35] MemberRefExpr=Data:43:15
-// CHECK-tokens: Punctuation: "," [54:35 - 54:36] CallExpr=memcmp:7:7
-// CHECK-tokens: Identifier: "Prefix" [54:37 - 54:43] DeclRefExpr=Prefix:52:29
-// CHECK-tokens: Punctuation: "." [54:43 - 54:44] MemberRefExpr=Length:44:10
-// CHECK-tokens: Identifier: "Length" [54:44 - 54:50] MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: ")" [54:50 - 54:51] CallExpr=memcmp:7:7
-// CHECK-tokens: Punctuation: "==" [54:52 - 54:54] BinaryOperator=
-// CHECK-tokens: Literal: "0" [54:55 - 54:56] IntegerLiteral=
-// CHECK-tokens: Punctuation: ";" [54:56 - 54:57] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [55:3 - 55:4] CompoundStmt=
-// CHECK-tokens: Keyword: "bool" [56:3 - 56:7] CXXMethod=endswith:56:8 (Definition)
-// CHECK-tokens: Identifier: "endswith" [56:8 - 56:16] CXXMethod=endswith:56:8 (Definition)
-// CHECK-tokens: Punctuation: "(" [56:16 - 56:17] CXXMethod=endswith:56:8 (Definition)
-// CHECK-tokens: Identifier: "StringRef" [56:17 - 56:26] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Identifier: "Suffix" [56:27 - 56:33] ParmDecl=Suffix:56:27 (Definition)
-// CHECK-tokens: Punctuation: ")" [56:33 - 56:34] CXXMethod=endswith:56:8 (Definition)
-// CHECK-tokens: Keyword: "const" [56:35 - 56:40] CXXMethod=endswith:56:8 (Definition)
-// CHECK-tokens: Punctuation: "{" [56:41 - 56:42] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [57:5 - 57:11] ReturnStmt=
-// CHECK-tokens: Identifier: "Length" [57:12 - 57:18] MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: ">=" [57:19 - 57:21] BinaryOperator=
-// CHECK-tokens: Identifier: "Suffix" [57:22 - 57:28] DeclRefExpr=Suffix:56:27
-// CHECK-tokens: Punctuation: "." [57:28 - 57:29] MemberRefExpr=Length:44:10
-// CHECK-tokens: Identifier: "Length" [57:29 - 57:35] MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: "&&" [57:36 - 57:38] BinaryOperator=
-// CHECK-tokens: Identifier: "memcmp" [58:7 - 58:13] DeclRefExpr=memcmp:7:7
-// CHECK-tokens: Punctuation: "(" [58:13 - 58:14] CallExpr=memcmp:7:7
-// CHECK-tokens: Identifier: "end" [58:14 - 58:17] MemberRefExpr=end:50:12
-// CHECK-tokens: Punctuation: "(" [58:17 - 58:18] CallExpr=end:50:12
-// CHECK-tokens: Punctuation: ")" [58:18 - 58:19] CallExpr=end:50:12
-// CHECK-tokens: Punctuation: "-" [58:20 - 58:21] BinaryOperator=
-// CHECK-tokens: Identifier: "Suffix" [58:22 - 58:28] DeclRefExpr=Suffix:56:27
-// CHECK-tokens: Punctuation: "." [58:28 - 58:29] MemberRefExpr=Length:44:10
-// CHECK-tokens: Identifier: "Length" [58:29 - 58:35] MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: "," [58:35 - 58:36] CallExpr=memcmp:7:7
-// CHECK-tokens: Identifier: "Suffix" [58:37 - 58:43] DeclRefExpr=Suffix:56:27
-// CHECK-tokens: Punctuation: "." [58:43 - 58:44] MemberRefExpr=Data:43:15
-// CHECK-tokens: Identifier: "Data" [58:44 - 58:48] MemberRefExpr=Data:43:15
-// CHECK-tokens: Punctuation: "," [58:48 - 58:49] CallExpr=memcmp:7:7
-// CHECK-tokens: Identifier: "Suffix" [58:50 - 58:56] DeclRefExpr=Suffix:56:27
-// CHECK-tokens: Punctuation: "." [58:56 - 58:57] MemberRefExpr=Length:44:10
-// CHECK-tokens: Identifier: "Length" [58:57 - 58:63] MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: ")" [58:63 - 58:64] CallExpr=memcmp:7:7
-// CHECK-tokens: Punctuation: "==" [58:65 - 58:67] BinaryOperator=
-// CHECK-tokens: Literal: "0" [58:68 - 58:69] IntegerLiteral=
-// CHECK-tokens: Punctuation: ";" [58:69 - 58:70] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [59:3 - 59:4] CompoundStmt=
-// CHECK-tokens: Identifier: "StringRef" [60:3 - 60:12] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Identifier: "substr" [60:13 - 60:19] CXXMethod=substr:60:13 (Definition)
-// CHECK-tokens: Punctuation: "(" [60:19 - 60:20] CXXMethod=substr:60:13 (Definition)
-// CHECK-tokens: Identifier: "size_t" [60:20 - 60:26] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "Start" [60:27 - 60:32] ParmDecl=Start:60:27 (Definition)
-// CHECK-tokens: Punctuation: "," [60:32 - 60:33] CXXMethod=substr:60:13 (Definition)
-// CHECK-tokens: Identifier: "size_t" [60:34 - 60:40] TypeRef=size_t:2:25
-// CHECK-tokens: Identifier: "N" [60:41 - 60:42] ParmDecl=N:60:41 (Definition)
-// CHECK-tokens: Punctuation: "=" [60:43 - 60:44] ParmDecl=N:60:41 (Definition)
-// CHECK-tokens: Identifier: "npos" [60:45 - 60:49] DeclRefExpr=npos:41:23
-// CHECK-tokens: Punctuation: ")" [60:49 - 60:50] CXXMethod=substr:60:13 (Definition)
-// CHECK-tokens: Keyword: "const" [60:51 - 60:56] CXXMethod=substr:60:13 (Definition)
-// CHECK-tokens: Punctuation: "{" [60:57 - 60:58] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [61:5 - 61:11] ReturnStmt=
-// CHECK-tokens: Identifier: "StringRef" [61:12 - 61:21] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Punctuation: "(" [61:21 - 61:22] CallExpr=StringRef:49:3
-// CHECK-tokens: Identifier: "Data" [61:22 - 61:26]  MemberRefExpr=Data:43:15
-// CHECK-tokens: Punctuation: "+" [61:27 - 61:28] BinaryOperator=
-// CHECK-tokens: Identifier: "Start" [61:29 - 61:34] DeclRefExpr=Start:60:27
-// CHECK-tokens: Punctuation: "," [61:34 - 61:35] CallExpr=StringRef:49:3
-// CHECK-tokens: Identifier: "min" [61:36 - 61:39] DeclRefExpr=min:45:17
-// CHECK-tokens: Punctuation: "(" [61:39 - 61:40] CallExpr=min:45:17
-// CHECK-tokens: Identifier: "N" [61:40 - 61:41] DeclRefExpr=N:60:41
-// CHECK-tokens: Punctuation: "," [61:41 - 61:42] CallExpr=min:45:17
-// CHECK-tokens: Identifier: "Length" [61:43 - 61:49]  MemberRefExpr=Length:44:10
-// CHECK-tokens: Punctuation: "-" [61:50 - 61:51] BinaryOperator=
-// CHECK-tokens: Identifier: "Start" [61:52 - 61:57] DeclRefExpr=Start:60:27
-// CHECK-tokens: Punctuation: ")" [61:57 - 61:58] CallExpr=min:45:17
-// CHECK-tokens: Punctuation: ")" [61:58 - 61:59] CallExpr=StringRef:49:3
-// CHECK-tokens: Punctuation: ";" [61:59 - 61:60] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [62:3 - 62:4] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [63:1 - 63:2] ClassDecl=StringRef:38:7 (Definition)
-// CHECK-tokens: Punctuation: ";" [63:2 - 63:3] Namespace=llvm:37:11 (Definition)
-// CHECK-tokens: Punctuation: "}" [64:1 - 64:2] Namespace=llvm:37:11 (Definition)
-// CHECK-tokens: Keyword: "namespace" [65:1 - 65:10]
-// CHECK-tokens: Identifier: "clang" [65:11 - 65:16] Namespace=clang:65:11 (Definition)
-// CHECK-tokens: Punctuation: "{" [65:17 - 65:18] Namespace=clang:65:11 (Definition)
-// CHECK-tokens: Keyword: "class" [66:1 - 66:6] ClassDecl=IdentifierInfo:66:7 (Definition)
-// CHECK-tokens: Identifier: "IdentifierInfo" [66:7 - 66:21] ClassDecl=IdentifierInfo:66:7 (Definition)
-// CHECK-tokens: Punctuation: "{" [66:22 - 66:23] ClassDecl=IdentifierInfo:66:7 (Definition)
-// CHECK-tokens: Keyword: "public" [67:1 - 67:7] CXXAccessSpecifier=:67:1 (Definition)
-// CHECK-tokens: Punctuation: ":" [67:7 - 67:8] CXXAccessSpecifier=:67:1 (Definition)
-// CHECK-tokens: Identifier: "IdentifierInfo" [67:8 - 67:22] CXXConstructor=IdentifierInfo:67:8
-// CHECK-tokens: Punctuation: "(" [67:22 - 67:23] CXXConstructor=IdentifierInfo:67:8
-// CHECK-tokens: Punctuation: ")" [67:23 - 67:24] CXXConstructor=IdentifierInfo:67:8
-// CHECK-tokens: Punctuation: ";" [67:24 - 67:25] ClassDecl=IdentifierInfo:66:7 (Definition)
-// CHECK-tokens: Keyword: "const" [68:3 - 68:8] CXXMethod=getNameStart:68:15 (Definition)
-// CHECK-tokens: Keyword: "char" [68:9 - 68:13] CXXMethod=getNameStart:68:15 (Definition)
-// CHECK-tokens: Punctuation: "*" [68:14 - 68:15] CXXMethod=getNameStart:68:15 (Definition)
-// CHECK-tokens: Identifier: "getNameStart" [68:15 - 68:27] CXXMethod=getNameStart:68:15 (Definition)
-// CHECK-tokens: Punctuation: "(" [68:27 - 68:28] CXXMethod=getNameStart:68:15 (Definition)
-// CHECK-tokens: Punctuation: ")" [68:28 - 68:29] CXXMethod=getNameStart:68:15 (Definition)
-// CHECK-tokens: Keyword: "const" [68:30 - 68:35] CXXMethod=getNameStart:68:15 (Definition)
-// CHECK-tokens: Punctuation: "{" [68:36 - 68:37] CompoundStmt=
-// CHECK-tokens: Keyword: "typedef" [69:5 - 69:12] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Identifier: "std" [69:13 - 69:16] NamespaceRef=std:3:11
-// CHECK-tokens: Punctuation: "::" [69:16 - 69:18] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Identifier: "pair" [69:18 - 69:22] TemplateRef=pair:4:44
-// CHECK-tokens: Punctuation: "<" [69:23 - 69:24] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Identifier: "IdentifierInfo" [69:25 - 69:39] TypeRef=class clang::IdentifierInfo:66:7
-// CHECK-tokens: Punctuation: "," [69:39 - 69:40] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Keyword: "const" [69:41 - 69:46] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Keyword: "char" [69:47 - 69:51] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Punctuation: "*" [69:52 - 69:53] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Punctuation: ">" [69:53 - 69:54] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Identifier: "actualtype" [69:54 - 69:64] TypedefDecl=actualtype:69:54 (Definition)
-// CHECK-tokens: Punctuation: ";" [69:64 - 69:65] DeclStmt=
-// CHECK-tokens: Keyword: "return" [70:5 - 70:11] ReturnStmt=
-// CHECK-tokens: Punctuation: "(" [70:12 - 70:13] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [70:13 - 70:14] CStyleCastExpr=
-// CHECK-tokens: Keyword: "const" [70:14 - 70:19] CStyleCastExpr=
-// CHECK-tokens: Identifier: "actualtype" [70:20 - 70:30] TypeRef=actualtype:69:54
-// CHECK-tokens: Punctuation: "*" [70:31 - 70:32] CStyleCastExpr=
-// CHECK-tokens: Punctuation: ")" [70:32 - 70:33] CStyleCastExpr=
-// CHECK-tokens: Keyword: "this" [70:34 - 70:38] CXXThisExpr=
-// CHECK-tokens: Punctuation: ")" [70:38 - 70:39] ParenExpr=
-// CHECK-tokens: Punctuation: "->" [70:39 - 70:41] MemberRefExpr=second:4:55
-// CHECK-tokens: Identifier: "second" [70:41 - 70:47] MemberRefExpr=second:4:55
-// CHECK-tokens: Punctuation: ";" [70:47 - 70:48] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [71:3 - 71:4] CompoundStmt=
-// CHECK-tokens: Keyword: "unsigned" [72:3 - 72:11] CXXMethod=getLength:72:12 (Definition)
-// CHECK-tokens: Identifier: "getLength" [72:12 - 72:21] CXXMethod=getLength:72:12 (Definition)
-// CHECK-tokens: Punctuation: "(" [72:21 - 72:22] CXXMethod=getLength:72:12 (Definition)
-// CHECK-tokens: Punctuation: ")" [72:22 - 72:23] CXXMethod=getLength:72:12 (Definition)
-// CHECK-tokens: Keyword: "const" [72:24 - 72:29] CXXMethod=getLength:72:12 (Definition)
-// CHECK-tokens: Punctuation: "{" [72:30 - 72:31] CompoundStmt=
-// CHECK-tokens: Keyword: "typedef" [73:5 - 73:12] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Identifier: "std" [73:13 - 73:16] NamespaceRef=std:3:11
-// CHECK-tokens: Punctuation: "::" [73:16 - 73:18] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Identifier: "pair" [73:18 - 73:22] TemplateRef=pair:4:44
-// CHECK-tokens: Punctuation: "<" [73:23 - 73:24] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Identifier: "IdentifierInfo" [73:25 - 73:39] TypeRef=class clang::IdentifierInfo:66:7
-// CHECK-tokens: Punctuation: "," [73:39 - 73:40] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Keyword: "const" [73:41 - 73:46] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Keyword: "char" [73:47 - 73:51] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Punctuation: "*" [73:52 - 73:53] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Punctuation: ">" [73:53 - 73:54] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Identifier: "actualtype" [73:54 - 73:64] TypedefDecl=actualtype:73:54 (Definition)
-// CHECK-tokens: Punctuation: ";" [73:64 - 73:65] DeclStmt=
-// CHECK-tokens: Keyword: "const" [74:5 - 74:10] VarDecl=p:74:17 (Definition)
-// CHECK-tokens: Keyword: "char" [74:11 - 74:15] VarDecl=p:74:17 (Definition)
-// CHECK-tokens: Punctuation: "*" [74:16 - 74:17] VarDecl=p:74:17 (Definition)
-// CHECK-tokens: Identifier: "p" [74:17 - 74:18] VarDecl=p:74:17 (Definition)
-// CHECK-tokens: Punctuation: "=" [74:19 - 74:20] VarDecl=p:74:17 (Definition)
-// CHECK-tokens: Punctuation: "(" [74:21 - 74:22] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [74:22 - 74:23] CStyleCastExpr=
-// CHECK-tokens: Keyword: "const" [74:23 - 74:28] CStyleCastExpr=
-// CHECK-tokens: Identifier: "actualtype" [74:29 - 74:39] TypeRef=actualtype:73:54
-// CHECK-tokens: Punctuation: "*" [74:40 - 74:41] CStyleCastExpr=
-// CHECK-tokens: Punctuation: ")" [74:41 - 74:42] CStyleCastExpr=
-// CHECK-tokens: Keyword: "this" [74:43 - 74:47] CXXThisExpr=
-// CHECK-tokens: Punctuation: ")" [74:47 - 74:48] ParenExpr=
-// CHECK-tokens: Punctuation: "->" [74:48 - 74:50] MemberRefExpr=second:4:55
-// CHECK-tokens: Identifier: "second" [74:50 - 74:56] MemberRefExpr=second:4:55
-// CHECK-tokens: Punctuation: "-" [74:57 - 74:58] BinaryOperator=
-// CHECK-tokens: Literal: "2" [74:59 - 74:60] IntegerLiteral=
-// CHECK-tokens: Punctuation: ";" [74:60 - 74:61] DeclStmt=
-// CHECK-tokens: Keyword: "return" [75:5 - 75:11] ReturnStmt=
-// CHECK-tokens: Punctuation: "(" [75:12 - 75:13] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [75:13 - 75:14] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [75:14 - 75:15] CStyleCastExpr=
-// CHECK-tokens: Keyword: "unsigned" [75:15 - 75:23] CStyleCastExpr=
-// CHECK-tokens: Punctuation: ")" [75:23 - 75:24] CStyleCastExpr=
-// CHECK-tokens: Identifier: "p" [75:25 - 75:26] DeclRefExpr=p:74:17
-// CHECK-tokens: Punctuation: "[" [75:26 - 75:27] ArraySubscriptExpr=
-// CHECK-tokens: Literal: "0" [75:27 - 75:28] IntegerLiteral=
-// CHECK-tokens: Punctuation: "]" [75:28 - 75:29] ArraySubscriptExpr=
-// CHECK-tokens: Punctuation: ")" [75:29 - 75:30] ParenExpr=
-// CHECK-tokens: Punctuation: "|" [75:31 - 75:32] BinaryOperator=
-// CHECK-tokens: Punctuation: "(" [75:33 - 75:34] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [75:34 - 75:35] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [75:35 - 75:36] CStyleCastExpr=
-// CHECK-tokens: Keyword: "unsigned" [75:36 - 75:44] CStyleCastExpr=
-// CHECK-tokens: Punctuation: ")" [75:44 - 75:45] CStyleCastExpr=
-// CHECK-tokens: Identifier: "p" [75:46 - 75:47] DeclRefExpr=p:74:17
-// CHECK-tokens: Punctuation: "[" [75:47 - 75:48] ArraySubscriptExpr=
-// CHECK-tokens: Literal: "1" [75:48 - 75:49] IntegerLiteral=
-// CHECK-tokens: Punctuation: "]" [75:49 - 75:50] ArraySubscriptExpr=
-// CHECK-tokens: Punctuation: ")" [75:50 - 75:51] ParenExpr=
-// CHECK-tokens: Punctuation: "<<" [75:52 - 75:54] BinaryOperator=
-// CHECK-tokens: Literal: "8" [75:55 - 75:56] IntegerLiteral=
-// CHECK-tokens: Punctuation: ")" [75:56 - 75:57] ParenExpr=
-// CHECK-tokens: Punctuation: ")" [75:57 - 75:58] ParenExpr=
-// CHECK-tokens: Punctuation: "-" [75:59 - 75:60] BinaryOperator=
-// CHECK-tokens: Literal: "1" [75:61 - 75:62] IntegerLiteral=
-// CHECK-tokens: Punctuation: ";" [75:62 - 75:63] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [76:3 - 76:4] CompoundStmt=
-// CHECK-tokens: Identifier: "llvm" [77:3 - 77:7] NamespaceRef=llvm:37:11
-// CHECK-tokens: Punctuation: "::" [77:7 - 77:9] CXXMethod=getName:77:19 (Definition)
-// CHECK-tokens: Identifier: "StringRef" [77:9 - 77:18] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Identifier: "getName" [77:19 - 77:26] CXXMethod=getName:77:19 (Definition)
-// CHECK-tokens: Punctuation: "(" [77:26 - 77:27] CXXMethod=getName:77:19 (Definition)
-// CHECK-tokens: Punctuation: ")" [77:27 - 77:28] CXXMethod=getName:77:19 (Definition)
-// CHECK-tokens: Keyword: "const" [77:29 - 77:34] CXXMethod=getName:77:19 (Definition)
-// CHECK-tokens: Punctuation: "{" [77:35 - 77:36] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [78:5 - 78:11] ReturnStmt=
-// CHECK-tokens: Identifier: "llvm" [78:12 - 78:16] NamespaceRef=llvm:37:11
-// CHECK-tokens: Punctuation: "::" [78:16 - 78:18] CallExpr=StringRef:49:3
-// CHECK-tokens: Identifier: "StringRef" [78:18 - 78:27] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Punctuation: "(" [78:27 - 78:28] CallExpr=StringRef:49:3
-// CHECK-tokens: Identifier: "getNameStart" [78:28 - 78:40] MemberRefExpr=getNameStart:68:15
-// CHECK-tokens: Punctuation: "(" [78:40 - 78:41] CallExpr=getNameStart:68:15
-// CHECK-tokens: Punctuation: ")" [78:41 - 78:42] CallExpr=getNameStart:68:15
-// CHECK-tokens: Punctuation: "," [78:42 - 78:43] CallExpr=StringRef:49:3
-// CHECK-tokens: Identifier: "getLength" [78:44 - 78:53]  MemberRefExpr=getLength:72:12
-// CHECK-tokens: Punctuation: "(" [78:53 - 78:54] CallExpr=getLength:72:12
-// CHECK-tokens: Punctuation: ")" [78:54 - 78:55] CallExpr=getLength:72:12
-// CHECK-tokens: Punctuation: ")" [78:55 - 78:56] CallExpr=StringRef:49:3
-// CHECK-tokens: Punctuation: ";" [78:56 - 78:57] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [79:3 - 79:4] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [80:1 - 80:2] ClassDecl=IdentifierInfo:66:7 (Definition)
-// CHECK-tokens: Punctuation: ";" [80:2 - 80:3] Namespace=clang:65:11 (Definition)
-// CHECK-tokens: Punctuation: "}" [81:1 - 81:2] Namespace=clang:65:11 (Definition)
-// CHECK-tokens: Keyword: "namespace" [82:1 - 82:10]
-// CHECK-tokens: Identifier: "llvm" [82:11 - 82:15] Namespace=llvm:82:11 (Definition)
-// CHECK-tokens: Punctuation: "{" [82:16 - 82:17] Namespace=llvm:82:11 (Definition)
-// CHECK-tokens: Keyword: "template" [83:1 - 83:9] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Punctuation: "<" [83:10 - 83:11] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Keyword: "typename" [83:12 - 83:20] TemplateTypeParameter=T:83:21 (Definition)
-// CHECK-tokens: Identifier: "T" [83:21 - 83:22] TemplateTypeParameter=T:83:21 (Definition)
-// CHECK-tokens: Punctuation: "," [83:22 - 83:23] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Keyword: "typename" [83:24 - 83:32] TemplateTypeParameter=R:83:33 (Definition)
-// CHECK-tokens: Identifier: "R" [83:33 - 83:34] TemplateTypeParameter=R:83:33 (Definition)
-// CHECK-tokens: Punctuation: "=" [83:35 - 83:36] TemplateTypeParameter=R:83:33 (Definition)
-// CHECK-tokens: Identifier: "T" [83:37 - 83:38] TypeRef=T:83:21
-// CHECK-tokens: Punctuation: ">" [83:39 - 83:40] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Keyword: "class" [83:41 - 83:46] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Identifier: "StringSwitch" [83:47 - 83:59] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Punctuation: "{" [83:60 - 83:61] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Identifier: "StringRef" [84:3 - 84:12] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Identifier: "Str" [84:13 - 84:16] FieldDecl=Str:84:13 (Definition)
-// CHECK-tokens: Punctuation: ";" [84:16 - 84:17] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Keyword: "const" [85:3 - 85:8] FieldDecl=Result:85:12 (Definition)
-// CHECK-tokens: Identifier: "T" [85:9 - 85:10] TypeRef=T:83:21
-// CHECK-tokens: Punctuation: "*" [85:11 - 85:12] FieldDecl=Result:85:12 (Definition)
-// CHECK-tokens: Identifier: "Result" [85:12 - 85:18] FieldDecl=Result:85:12 (Definition)
-// CHECK-tokens: Punctuation: ";" [85:18 - 85:19] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Keyword: "public" [86:1 - 86:7] CXXAccessSpecifier=:86:1 (Definition)
-// CHECK-tokens: Punctuation: ":" [86:7 - 86:8] CXXAccessSpecifier=:86:1 (Definition)
-// CHECK-tokens: Keyword: "explicit" [87:3 - 87:11] CXXConstructor=StringSwitch<T, R>:87:12 (Definition)
-// CHECK-tokens: Identifier: "StringSwitch" [87:12 - 87:24] CXXConstructor=StringSwitch<T, R>:87:12 (Definition)
-// CHECK-tokens: Punctuation: "(" [87:24 - 87:25] CXXConstructor=StringSwitch<T, R>:87:12 (Definition)
-// CHECK-tokens: Identifier: "StringRef" [87:25 - 87:34] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Identifier: "Str" [87:35 - 87:38] ParmDecl=Str:87:35 (Definition)
-// CHECK-tokens: Punctuation: ")" [87:38 - 87:39] CXXConstructor=StringSwitch<T, R>:87:12 (Definition)
-// CHECK-tokens: Punctuation: ":" [87:40 - 87:41] CXXConstructor=StringSwitch<T, R>:87:12 (Definition)
-// CHECK-tokens: Identifier: "Str" [87:42 - 87:45] MemberRef=Str:84:13
-// CHECK-tokens: Punctuation: "(" [87:45 - 87:46] CallExpr=StringRef:38:7
-// CHECK-tokens: Identifier: "Str" [87:46 - 87:49] DeclRefExpr=Str:87:35
-// CHECK-tokens: Punctuation: ")" [87:49 - 87:50] CallExpr=StringRef:38:7
-// CHECK-tokens: Punctuation: "," [87:50 - 87:51] CXXConstructor=StringSwitch<T, R>:87:12 (Definition)
-// CHECK-tokens: Identifier: "Result" [87:52 - 87:58] MemberRef=Result:85:12
-// CHECK-tokens: Punctuation: "(" [87:58 - 87:59] UnexposedExpr=
-// CHECK-tokens: Literal: "0" [87:59 - 87:60] IntegerLiteral=
-// CHECK-tokens: Punctuation: ")" [87:60 - 87:61] UnexposedExpr=
-// CHECK-tokens: Punctuation: "{" [87:62 - 87:63] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [87:63 - 87:64] CompoundStmt=
-// CHECK-tokens: Keyword: "template" [88:3 - 88:11] FunctionTemplate=Case:88:42 (Definition)
-// CHECK-tokens: Punctuation: "<" [88:12 - 88:13] FunctionTemplate=Case:88:42 (Definition)
-// CHECK-tokens: Keyword: "unsigned" [88:14 - 88:22] NonTypeTemplateParameter=N:88:23 (Definition)
-// CHECK-tokens: Identifier: "N" [88:23 - 88:24] NonTypeTemplateParameter=N:88:23 (Definition)
-// CHECK-tokens: Punctuation: ">" [88:25 - 88:26] FunctionTemplate=Case:88:42 (Definition)
-// CHECK-tokens: Identifier: "StringSwitch" [88:27 - 88:39] TypeRef=StringSwitch<T, R>:83:47
-// CHECK-tokens: Punctuation: "&" [88:40 - 88:41] FunctionTemplate=Case:88:42 (Definition)
-// CHECK-tokens: Identifier: "Case" [88:42 - 88:46] FunctionTemplate=Case:88:42 (Definition)
-// CHECK-tokens: Punctuation: "(" [88:46 - 88:47] FunctionTemplate=Case:88:42 (Definition)
-// CHECK-tokens: Keyword: "const" [88:47 - 88:52] ParmDecl=S:88:60 (Definition)
-// CHECK-tokens: Keyword: "char" [88:53 - 88:57] ParmDecl=S:88:60 (Definition)
-// CHECK-tokens: Punctuation: "(" [88:58 - 88:59] ParmDecl=S:88:60 (Definition)
-// CHECK-tokens: Punctuation: "&" [88:59 - 88:60] ParmDecl=S:88:60 (Definition)
-// CHECK-tokens: Identifier: "S" [88:60 - 88:61] ParmDecl=S:88:60 (Definition)
-// CHECK-tokens: Punctuation: ")" [88:61 - 88:62] ParmDecl=S:88:60 (Definition)
-// CHECK-tokens: Punctuation: "[" [88:62 - 88:63] ParmDecl=S:88:60 (Definition)
-// CHECK-tokens: Identifier: "N" [88:63 - 88:64] DeclRefExpr=N:88:23
-// CHECK-tokens: Punctuation: "]" [88:64 - 88:65] ParmDecl=S:88:60 (Definition)
-// CHECK-tokens: Punctuation: "," [88:65 - 88:66] FunctionTemplate=Case:88:42 (Definition)
-// CHECK-tokens: Keyword: "const" [89:47 - 89:52] ParmDecl=Value:89:57 (Definition)
-// CHECK-tokens: Identifier: "T" [89:53 - 89:54] TypeRef=T:83:21
-// CHECK-tokens: Punctuation: "&" [89:55 - 89:56] ParmDecl=Value:89:57 (Definition)
-// CHECK-tokens: Identifier: "Value" [89:57 - 89:62] ParmDecl=Value:89:57 (Definition)
-// CHECK-tokens: Punctuation: ")" [89:62 - 89:63] FunctionTemplate=Case:88:42 (Definition)
-// CHECK-tokens: Punctuation: "{" [89:64 - 89:65] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [90:5 - 90:11] ReturnStmt=
-// CHECK-tokens: Punctuation: "*" [90:12 - 90:13] UnaryOperator=
-// CHECK-tokens: Keyword: "this" [90:13 - 90:17] CXXThisExpr=
-// CHECK-tokens: Punctuation: ";" [90:17 - 90:18] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [91:3 - 91:4] CompoundStmt=
-// CHECK-tokens: Identifier: "R" [92:3 - 92:4] TypeRef=R:83:33
-// CHECK-tokens: Identifier: "Default" [92:5 - 92:12] CXXMethod=Default:92:5 (Definition)
-// CHECK-tokens: Punctuation: "(" [92:12 - 92:13] CXXMethod=Default:92:5 (Definition)
-// CHECK-tokens: Keyword: "const" [92:13 - 92:18] ParmDecl=Value:92:23 (Definition)
-// CHECK-tokens: Identifier: "T" [92:19 - 92:20] TypeRef=T:83:21
-// CHECK-tokens: Punctuation: "&" [92:21 - 92:22] ParmDecl=Value:92:23 (Definition)
-// CHECK-tokens: Identifier: "Value" [92:23 - 92:28] ParmDecl=Value:92:23 (Definition)
-// CHECK-tokens: Punctuation: ")" [92:28 - 92:29] CXXMethod=Default:92:5 (Definition)
-// CHECK-tokens: Keyword: "const" [92:30 - 92:35] CXXMethod=Default:92:5 (Definition)
-// CHECK-tokens: Punctuation: "{" [92:36 - 92:37] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [93:5 - 93:11] ReturnStmt=
-// CHECK-tokens: Identifier: "Value" [93:12 - 93:17] DeclRefExpr=Value:92:23
-// CHECK-tokens: Punctuation: ";" [93:17 - 93:18] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [94:3 - 94:4] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [95:1 - 95:2] ClassTemplate=StringSwitch:83:47 (Definition)
-// CHECK-tokens: Punctuation: ";" [95:2 - 95:3] Namespace=llvm:82:11 (Definition)
-// CHECK-tokens: Punctuation: "}" [96:1 - 96:2] Namespace=llvm:82:11 (Definition)
-// CHECK-tokens: Keyword: "using" [98:1 - 98:6] UsingDirective=:98:17
-// CHECK-tokens: Keyword: "namespace" [98:7 - 98:16] UsingDirective=:98:17
-// CHECK-tokens: Identifier: "clang" [98:17 - 98:22] NamespaceRef=clang:10:17
-// CHECK-tokens: Punctuation: ";" [98:22 - 98:23]
-// CHECK-tokens: Identifier: "AttributeList" [100:1 - 100:14] TypeRef=class clang::AttributeList:12:9
-// CHECK-tokens: Punctuation: "::" [100:14 - 100:16] CXXMethod=getKind:100:36 (Definition) (static)
-// CHECK-tokens: Identifier: "Kind" [100:16 - 100:20] TypeRef=enum clang::AttributeList::Kind:13:10
-// CHECK-tokens: Identifier: "AttributeList" [100:21 - 100:34] TypeRef=class clang::AttributeList:12:9
-// CHECK-tokens: Punctuation: "::" [100:34 - 100:36] CXXMethod=getKind:100:36 (Definition) (static)
-// CHECK-tokens: Identifier: "getKind" [100:36 - 100:43] CXXMethod=getKind:100:36 (Definition) (static)
-// CHECK-tokens: Punctuation: "(" [100:43 - 100:44] CXXMethod=getKind:100:36 (Definition) (static)
-// CHECK-tokens: Keyword: "const" [100:44 - 100:49] ParmDecl=Name:100:67 (Definition)
-// CHECK-tokens: Identifier: "IdentifierInfo" [100:50 - 100:64] TypeRef=class clang::IdentifierInfo:66:7
-// CHECK-tokens: Punctuation: "*" [100:65 - 100:66] ParmDecl=Name:100:67 (Definition)
-// CHECK-tokens: Identifier: "Name" [100:67 - 100:71] ParmDecl=Name:100:67 (Definition)
-// CHECK-tokens: Punctuation: ")" [100:71 - 100:72] CXXMethod=getKind:100:36 (Definition) (static)
-// CHECK-tokens: Punctuation: "{" [100:73 - 100:74] CompoundStmt=
-// CHECK-tokens: Identifier: "llvm" [101:3 - 101:7] NamespaceRef=llvm:82:11
-// CHECK-tokens: Punctuation: "::" [101:7 - 101:9] VarDecl=AttrName:101:19 (Definition)
-// CHECK-tokens: Identifier: "StringRef" [101:9 - 101:18] TypeRef=class llvm::StringRef:38:7
-// CHECK-tokens: Identifier: "AttrName" [101:19 - 101:27] VarDecl=AttrName:101:19 (Definition)
-// CHECK-tokens: Punctuation: "=" [101:28 - 101:29] VarDecl=AttrName:101:19 (Definition)
-// CHECK-tokens: Identifier: "Name" [101:30 - 101:34] DeclRefExpr=Name:100:67
-// CHECK-tokens: Punctuation: "->" [101:34 - 101:36] MemberRefExpr=getName:77:19
-// CHECK-tokens: Identifier: "getName" [101:36 - 101:43] MemberRefExpr=getName:77:19
-// CHECK-tokens: Punctuation: "(" [101:43 - 101:44] CallExpr=getName:77:19
-// CHECK-tokens: Punctuation: ")" [101:44 - 101:45] CallExpr=getName:77:19
-// CHECK-tokens: Punctuation: ";" [101:45 - 101:46] DeclStmt=
-// CHECK-tokens: Keyword: "if" [102:3 - 102:5] IfStmt=
-// CHECK-tokens: Punctuation: "(" [102:6 - 102:7] IfStmt=
-// CHECK-tokens: Identifier: "AttrName" [102:7 - 102:15] DeclRefExpr=AttrName:101:19
-// CHECK-tokens: Punctuation: "." [102:15 - 102:16] MemberRefExpr=startswith:52:8
-// CHECK-tokens: Identifier: "startswith" [102:16 - 102:26] MemberRefExpr=startswith:52:8
-// CHECK-tokens: Punctuation: "(" [102:26 - 102:27] CallExpr=startswith:52:8
-// CHECK-tokens: Literal: ""__"" [102:27 - 102:31] StringLiteral=
-// CHECK-tokens: Punctuation: ")" [102:31 - 102:32] CallExpr=startswith:52:8
-// CHECK-tokens: Punctuation: "&&" [102:33 - 102:35] BinaryOperator=
-// CHECK-tokens: Identifier: "AttrName" [102:36 - 102:44] DeclRefExpr=AttrName:101:19
-// CHECK-tokens: Punctuation: "." [102:44 - 102:45] MemberRefExpr=endswith:56:8
-// CHECK-tokens: Identifier: "endswith" [102:45 - 102:53] MemberRefExpr=endswith:56:8
-// CHECK-tokens: Punctuation: "(" [102:53 - 102:54] CallExpr=endswith:56:8
-// CHECK-tokens: Literal: ""__"" [102:54 - 102:58] StringLiteral=
-// CHECK-tokens: Punctuation: ")" [102:58 - 102:59] CallExpr=endswith:56:8
-// CHECK-tokens: Punctuation: ")" [102:59 - 102:60] IfStmt=
-// CHECK-tokens: Identifier: "AttrName" [103:5 - 103:13] DeclRefExpr=AttrName:101:19
-// CHECK-tokens: Punctuation: "=" [103:14 - 103:15] DeclRefExpr=operator=:38:7
-// CHECK-tokens: Identifier: "AttrName" [103:16 - 103:24] DeclRefExpr=AttrName:101:19
-// CHECK-tokens: Punctuation: "." [103:24 - 103:25] MemberRefExpr=substr:60:13
-// CHECK-tokens: Identifier: "substr" [103:25 - 103:31] MemberRefExpr=substr:60:13
-// CHECK-tokens: Punctuation: "(" [103:31 - 103:32] CallExpr=substr:60:13
-// CHECK-tokens: Literal: "2" [103:32 - 103:33] IntegerLiteral=
-// CHECK-tokens: Punctuation: "," [103:33 - 103:34] CallExpr=substr:60:13
-// CHECK-tokens: Identifier: "AttrName" [103:35 - 103:43] DeclRefExpr=AttrName:101:19
-// CHECK-tokens: Punctuation: "." [103:43 - 103:44] MemberRefExpr=size:51:10
-// CHECK-tokens: Identifier: "size" [103:44 - 103:48] MemberRefExpr=size:51:10
-// CHECK-tokens: Punctuation: "(" [103:48 - 103:49] CallExpr=size:51:10
-// CHECK-tokens: Punctuation: ")" [103:49 - 103:50] CallExpr=size:51:10
-// CHECK-tokens: Punctuation: "-" [103:51 - 103:52] BinaryOperator=
-// CHECK-tokens: Literal: "4" [103:53 - 103:54] IntegerLiteral=
-// CHECK-tokens: Punctuation: ")" [103:54 - 103:55] CallExpr=substr:60:13
-// CHECK-tokens: Punctuation: ";" [103:55 - 103:56] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [105:3 - 105:9] ReturnStmt=
-// FIXME: Missing "llvm" namespace reference below
-// CHECK-tokens: Identifier: "llvm" [105:10 - 105:14] NamespaceRef=llvm:82:11
-// CHECK-tokens: Punctuation: "::" [105:14 - 105:16] CXXFunctionalCastExpr=
-// CHECK-tokens: Identifier: "StringSwitch" [105:16 - 105:28] TemplateRef=StringSwitch:83:47
-// CHECK-tokens: Punctuation: "<" [105:29 - 105:30] CXXFunctionalCastExpr=
-// CHECK-tokens: Identifier: "AttributeList" [105:31 - 105:44] TypeRef=class clang::AttributeList:12:9
-// CHECK-tokens: Punctuation: "::" [105:44 - 105:46] CXXFunctionalCastExpr=
-// CHECK-tokens: Identifier: "Kind" [105:46 - 105:50] TypeRef=enum clang::AttributeList::Kind:13:10
-// CHECK-tokens: Punctuation: ">" [105:51 - 105:52] CallExpr=StringSwitch:87:12
-// CHECK-tokens: Punctuation: "(" [105:53 - 105:54] CallExpr=StringSwitch:87:12
-// CHECK-tokens: Identifier: "AttrName" [105:54 - 105:62] DeclRefExpr=AttrName:101:19
-// CHECK-tokens: Punctuation: ")" [105:62 - 105:63] CallExpr=StringSwitch:87:12
-// CHECK-tokens: Punctuation: "." [106:5 - 106:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [106:6 - 106:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [106:10 - 106:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""weak"" [106:11 - 106:17] StringLiteral=
-// CHECK-tokens: Punctuation: "," [106:17 - 106:18] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_weak" [106:19 - 106:26] DeclRefExpr=AT_weak:29:45
-// CHECK-tokens: Punctuation: ")" [106:26 - 106:27] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [107:5 - 107:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [107:6 - 107:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [107:10 - 107:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""weakref"" [107:11 - 107:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [107:20 - 107:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_weakref" [107:22 - 107:32] DeclRefExpr=AT_weakref:29:54
-// CHECK-tokens: Punctuation: ")" [107:32 - 107:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [108:5 - 108:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [108:6 - 108:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [108:10 - 108:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""pure"" [108:11 - 108:17] StringLiteral=
-// CHECK-tokens: Punctuation: "," [108:17 - 108:18] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_pure" [108:19 - 108:26] DeclRefExpr=AT_pure:26:49
-// CHECK-tokens: Punctuation: ")" [108:26 - 108:27] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [109:5 - 109:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [109:6 - 109:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [109:10 - 109:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""mode"" [109:11 - 109:17] StringLiteral=
-// CHECK-tokens: Punctuation: "," [109:17 - 109:18] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_mode" [109:19 - 109:26] DeclRefExpr=AT_mode:20:44
-// CHECK-tokens: Punctuation: ")" [109:26 - 109:27] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [110:5 - 110:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [110:6 - 110:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [110:10 - 110:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""used"" [110:11 - 110:17] StringLiteral=
-// CHECK-tokens: Punctuation: "," [110:17 - 110:18] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_used" [110:19 - 110:26] DeclRefExpr=AT_used:28:34
-// CHECK-tokens: Punctuation: ")" [110:26 - 110:27] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [111:5 - 111:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [111:6 - 111:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [111:10 - 111:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""alias"" [111:11 - 111:18] StringLiteral=
-// CHECK-tokens: Punctuation: "," [111:18 - 111:19] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_alias" [111:20 - 111:28] DeclRefExpr=AT_alias:15:25
-// CHECK-tokens: Punctuation: ")" [111:28 - 111:29] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [112:5 - 112:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [112:6 - 112:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [112:10 - 112:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""align"" [112:11 - 112:18] StringLiteral=
-// CHECK-tokens: Punctuation: "," [112:18 - 112:19] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_aligned" [112:20 - 112:30] DeclRefExpr=AT_aligned:15:35
-// CHECK-tokens: Punctuation: ")" [112:30 - 112:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [113:5 - 113:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [113:6 - 113:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [113:10 - 113:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""final"" [113:11 - 113:18] StringLiteral=
-// CHECK-tokens: Punctuation: "," [113:18 - 113:19] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_final" [113:20 - 113:28] DeclRefExpr=AT_final:19:40
-// CHECK-tokens: Punctuation: ")" [113:28 - 113:29] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [114:5 - 114:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [114:6 - 114:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [114:10 - 114:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""cdecl"" [114:11 - 114:18] StringLiteral=
-// CHECK-tokens: Punctuation: "," [114:18 - 114:19] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_cdecl" [114:20 - 114:28] DeclRefExpr=AT_cdecl:17:30
-// CHECK-tokens: Punctuation: ")" [114:28 - 114:29] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [115:5 - 115:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [115:6 - 115:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [115:10 - 115:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""const"" [115:11 - 115:18] StringLiteral=
-// CHECK-tokens: Punctuation: "," [115:18 - 115:19] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_const" [115:20 - 115:28] DeclRefExpr=AT_const:17:52
-// CHECK-tokens: Punctuation: ")" [115:28 - 115:29] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [116:5 - 116:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [116:6 - 116:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [116:10 - 116:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""__const"" [116:11 - 116:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [116:20 - 116:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_const" [116:22 - 116:30] DeclRefExpr=AT_const:17:52
-// CHECK-tokens: Punctuation: ")" [116:30 - 116:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [117:5 - 117:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [117:6 - 117:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [117:10 - 117:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""blocks"" [117:11 - 117:19] StringLiteral=
-// CHECK-tokens: Punctuation: "," [117:19 - 117:20] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_blocks" [117:21 - 117:30] DeclRefExpr=AT_blocks:16:57
-// CHECK-tokens: Punctuation: ")" [117:30 - 117:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [118:5 - 118:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [118:6 - 118:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [118:10 - 118:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""format"" [118:11 - 118:19] StringLiteral=
-// CHECK-tokens: Punctuation: "," [118:19 - 118:20] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_format" [118:21 - 118:30] DeclRefExpr=AT_format:19:50
-// CHECK-tokens: Punctuation: ")" [118:30 - 118:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [119:5 - 119:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [119:6 - 119:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [119:10 - 119:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""hiding"" [119:11 - 119:19] StringLiteral=
-// CHECK-tokens: Punctuation: "," [119:19 - 119:20] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_hiding" [119:21 - 119:30] DeclRefExpr=AT_hiding:20:22
-// CHECK-tokens: Punctuation: ")" [119:30 - 119:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [120:5 - 120:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [120:6 - 120:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [120:10 - 120:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""malloc"" [120:11 - 120:19] StringLiteral=
-// CHECK-tokens: Punctuation: "," [120:19 - 120:20] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_malloc" [120:21 - 120:30] DeclRefExpr=AT_malloc:20:33
-// CHECK-tokens: Punctuation: ")" [120:30 - 120:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [121:5 - 121:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [121:6 - 121:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [121:10 - 121:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""packed"" [121:11 - 121:19] StringLiteral=
-// CHECK-tokens: Punctuation: "," [121:19 - 121:20] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_packed" [121:21 - 121:30] DeclRefExpr=AT_packed:26:27
-// CHECK-tokens: Punctuation: ")" [121:30 - 121:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [122:5 - 122:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [122:6 - 122:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [122:10 - 122:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""unused"" [122:11 - 122:19] StringLiteral=
-// CHECK-tokens: Punctuation: "," [122:19 - 122:20] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_unused" [122:21 - 122:30] DeclRefExpr=AT_unused:28:23
-// CHECK-tokens: Punctuation: ")" [122:30 - 122:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [123:5 - 123:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [123:6 - 123:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [123:10 - 123:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""aligned"" [123:11 - 123:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [123:20 - 123:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_aligned" [123:22 - 123:32] DeclRefExpr=AT_aligned:15:35
-// CHECK-tokens: Punctuation: ")" [123:32 - 123:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [124:5 - 124:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [124:6 - 124:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [124:10 - 124:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""cleanup"" [124:11 - 124:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [124:20 - 124:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_cleanup" [124:22 - 124:32] DeclRefExpr=AT_cleanup:17:40
-// CHECK-tokens: Punctuation: ")" [124:32 - 124:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [125:5 - 125:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [125:6 - 125:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [125:10 - 125:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""naked"" [125:11 - 125:18] StringLiteral=
-// CHECK-tokens: Punctuation: "," [125:18 - 125:19] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_naked" [125:20 - 125:28] DeclRefExpr=AT_naked:20:53
-// CHECK-tokens: Punctuation: ")" [125:28 - 125:29] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [126:5 - 126:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [126:6 - 126:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [126:10 - 126:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""nodebug"" [126:11 - 126:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [126:20 - 126:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_nodebug" [126:22 - 126:32] DeclRefExpr=AT_nodebug:20:63
-// CHECK-tokens: Punctuation: ")" [126:32 - 126:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [127:5 - 127:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [127:6 - 127:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [127:10 - 127:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""nonnull"" [127:11 - 127:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [127:20 - 127:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_nonnull" [127:22 - 127:32] DeclRefExpr=AT_nonnull:21:47
-// CHECK-tokens: Punctuation: ")" [127:32 - 127:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [128:5 - 128:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [128:6 - 128:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [128:10 - 128:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""nothrow"" [128:11 - 128:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [128:20 - 128:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_nothrow" [128:22 - 128:32] DeclRefExpr=AT_nothrow:22:7
-// CHECK-tokens: Punctuation: ")" [128:32 - 128:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [129:5 - 129:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [129:6 - 129:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [129:10 - 129:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""objc_gc"" [129:11 - 129:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [129:20 - 129:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_objc_gc" [129:22 - 129:32] DeclRefExpr=AT_objc_gc:24:59
-// CHECK-tokens: Punctuation: ")" [129:32 - 129:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [130:5 - 130:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [130:6 - 130:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [130:10 - 130:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""regparm"" [130:11 - 130:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [130:20 - 130:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_regparm" [130:22 - 130:32] DeclRefExpr=AT_regparm:26:58
-// CHECK-tokens: Punctuation: ")" [130:32 - 130:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [131:5 - 131:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [131:6 - 131:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [131:10 - 131:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""section"" [131:11 - 131:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [131:20 - 131:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_section" [131:22 - 131:32] DeclRefExpr=AT_section:27:7
-// CHECK-tokens: Punctuation: ")" [131:32 - 131:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [132:5 - 132:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [132:6 - 132:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [132:10 - 132:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""stdcall"" [132:11 - 132:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [132:20 - 132:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_stdcall" [132:22 - 132:32] DeclRefExpr=AT_stdcall:27:32
-// CHECK-tokens: Punctuation: ")" [132:32 - 132:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [133:5 - 133:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [133:6 - 133:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [133:10 - 133:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""annotate"" [133:11 - 133:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [133:21 - 133:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_annotate" [133:23 - 133:34] DeclRefExpr=AT_annotate:16:29
-// CHECK-tokens: Punctuation: ")" [133:34 - 133:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [134:5 - 134:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [134:6 - 134:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [134:10 - 134:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""fastcall"" [134:11 - 134:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [134:21 - 134:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_fastcall" [134:23 - 134:34] DeclRefExpr=AT_fastcall:19:27
-// CHECK-tokens: Punctuation: ")" [134:34 - 134:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [135:5 - 135:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [135:6 - 135:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [135:10 - 135:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""ibaction"" [135:11 - 135:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [135:21 - 135:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_IBAction" [135:23 - 135:34] DeclRefExpr=AT_IBAction:14:7
-// CHECK-tokens: Punctuation: ")" [135:34 - 135:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [136:5 - 136:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [136:6 - 136:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [136:10 - 136:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""iboutlet"" [136:11 - 136:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [136:21 - 136:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_IBOutlet" [136:23 - 136:34] DeclRefExpr=AT_IBOutlet:14:20
-// CHECK-tokens: Punctuation: ")" [136:34 - 136:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [137:5 - 137:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [137:6 - 137:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [137:10 - 137:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""iboutletcollection"" [137:11 - 137:31] StringLiteral=
-// CHECK-tokens: Punctuation: "," [137:31 - 137:32] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_IBOutletCollection" [137:33 - 137:54] DeclRefExpr=AT_IBOutletCollection:14:33
-// CHECK-tokens: Punctuation: ")" [137:54 - 137:55] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [138:5 - 138:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [138:6 - 138:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [138:10 - 138:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""noreturn"" [138:11 - 138:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [138:21 - 138:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_noreturn" [138:23 - 138:34] DeclRefExpr=AT_noreturn:21:59
-// CHECK-tokens: Punctuation: ")" [138:34 - 138:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [139:5 - 139:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [139:6 - 139:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [139:10 - 139:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""noinline"" [139:11 - 139:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [139:21 - 139:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_noinline" [139:23 - 139:34] DeclRefExpr=AT_noinline:21:7
-// CHECK-tokens: Punctuation: ")" [139:34 - 139:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [140:5 - 140:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [140:6 - 140:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [140:10 - 140:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""override"" [140:11 - 140:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [140:21 - 140:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_override" [140:23 - 140:34] DeclRefExpr=AT_override:22:51
-// CHECK-tokens: Punctuation: ")" [140:34 - 140:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [141:5 - 141:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [141:6 - 141:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [141:10 - 141:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""sentinel"" [141:11 - 141:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [141:21 - 141:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_sentinel" [141:23 - 141:34] DeclRefExpr=AT_sentinel:27:19
-// CHECK-tokens: Punctuation: ")" [141:34 - 141:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [142:5 - 142:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [142:6 - 142:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [142:10 - 142:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""NSObject"" [142:11 - 142:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [142:21 - 142:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_nsobject" [142:23 - 142:34] DeclRefExpr=AT_nsobject:22:19
-// CHECK-tokens: Punctuation: ")" [142:34 - 142:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [143:5 - 143:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [143:6 - 143:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [143:10 - 143:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""dllimport"" [143:11 - 143:22] StringLiteral=
-// CHECK-tokens: Punctuation: "," [143:22 - 143:23] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_dllimport" [143:24 - 143:36] DeclRefExpr=AT_dllimport:18:51
-// CHECK-tokens: Punctuation: ")" [143:36 - 143:37] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [144:5 - 144:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [144:6 - 144:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [144:10 - 144:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""dllexport"" [144:11 - 144:22] StringLiteral=
-// CHECK-tokens: Punctuation: "," [144:22 - 144:23] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_dllexport" [144:24 - 144:36] DeclRefExpr=AT_dllexport:18:37
-// CHECK-tokens: Punctuation: ")" [144:36 - 144:37] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [145:5 - 145:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [145:6 - 145:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [145:10 - 145:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""may_alias"" [145:11 - 145:22] StringLiteral=
-// CHECK-tokens: Punctuation: "," [145:22 - 145:23] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "IgnoredAttribute" [145:24 - 145:40] DeclRefExpr=IgnoredAttribute:31:25
-// CHECK-tokens: Punctuation: ")" [145:40 - 145:41] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [146:5 - 146:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [146:6 - 146:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [146:10 - 146:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""base_check"" [146:11 - 146:23] StringLiteral=
-// CHECK-tokens: Punctuation: "," [146:23 - 146:24] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_base_check" [146:25 - 146:38] DeclRefExpr=AT_base_check:16:42
-// CHECK-tokens: Punctuation: ")" [146:38 - 146:39] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [147:5 - 147:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [147:6 - 147:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [147:10 - 147:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""deprecated"" [147:11 - 147:23] StringLiteral=
-// CHECK-tokens: Punctuation: "," [147:23 - 147:24] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_deprecated" [147:25 - 147:38] DeclRefExpr=AT_deprecated:18:7
-// CHECK-tokens: Punctuation: ")" [147:38 - 147:39] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [148:5 - 148:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [148:6 - 148:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [148:10 - 148:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""visibility"" [148:11 - 148:23] StringLiteral=
-// CHECK-tokens: Punctuation: "," [148:23 - 148:24] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_visibility" [148:25 - 148:38] DeclRefExpr=AT_visibility:29:7
-// CHECK-tokens: Punctuation: ")" [148:38 - 148:39] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [149:5 - 149:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [149:6 - 149:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [149:10 - 149:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""destructor"" [149:11 - 149:23] StringLiteral=
-// CHECK-tokens: Punctuation: "," [149:23 - 149:24] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_destructor" [149:25 - 149:38] DeclRefExpr=AT_destructor:18:22
-// CHECK-tokens: Punctuation: ")" [149:38 - 149:39] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [150:5 - 150:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [150:6 - 150:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [150:10 - 150:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""format_arg"" [150:11 - 150:23] StringLiteral=
-// CHECK-tokens: Punctuation: "," [150:23 - 150:24] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_format_arg" [150:25 - 150:38] DeclRefExpr=AT_format_arg:19:61
-// CHECK-tokens: Punctuation: ")" [150:38 - 150:39] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [151:5 - 151:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [151:6 - 151:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [151:10 - 151:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""gnu_inline"" [151:11 - 151:23] StringLiteral=
-// CHECK-tokens: Punctuation: "," [151:23 - 151:24] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_gnu_inline" [151:25 - 151:38] DeclRefExpr=AT_gnu_inline:20:7
-// CHECK-tokens: Punctuation: ")" [151:38 - 151:39] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [152:5 - 152:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [152:6 - 152:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [152:10 - 152:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""weak_import"" [152:11 - 152:24] StringLiteral=
-// CHECK-tokens: Punctuation: "," [152:24 - 152:25] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_weak_import" [152:26 - 152:40] DeclRefExpr=AT_weak_import:30:7
-// CHECK-tokens: Punctuation: ")" [152:40 - 152:41] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [153:5 - 153:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [153:6 - 153:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [153:10 - 153:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""vecreturn"" [153:11 - 153:22] StringLiteral=
-// CHECK-tokens: Punctuation: "," [153:22 - 153:23] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_vecreturn" [153:24 - 153:36] DeclRefExpr=AT_vecreturn:28:43
-// CHECK-tokens: Punctuation: ")" [153:36 - 153:37] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [154:5 - 154:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [154:6 - 154:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [154:10 - 154:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""vector_size"" [154:11 - 154:24] StringLiteral=
-// CHECK-tokens: Punctuation: "," [154:24 - 154:25] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_vector_size" [154:26 - 154:40] DeclRefExpr=AT_vector_size:28:57
-// CHECK-tokens: Punctuation: ")" [154:40 - 154:41] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [155:5 - 155:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [155:6 - 155:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [155:10 - 155:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""constructor"" [155:11 - 155:24] StringLiteral=
-// CHECK-tokens: Punctuation: "," [155:24 - 155:25] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_constructor" [155:26 - 155:40] DeclRefExpr=AT_constructor:17:62
-// CHECK-tokens: Punctuation: ")" [155:40 - 155:41] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [156:5 - 156:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [156:6 - 156:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [156:10 - 156:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""unavailable"" [156:11 - 156:24] StringLiteral=
-// CHECK-tokens: Punctuation: "," [156:24 - 156:25] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_unavailable" [156:26 - 156:40] DeclRefExpr=AT_unavailable:28:7
-// CHECK-tokens: Punctuation: ")" [156:40 - 156:41] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [157:5 - 157:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [157:6 - 157:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [157:10 - 157:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""overloadable"" [157:11 - 157:25] StringLiteral=
-// CHECK-tokens: Punctuation: "," [157:25 - 157:26] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_overloadable" [157:27 - 157:42] DeclRefExpr=AT_overloadable:25:7
-// CHECK-tokens: Punctuation: ")" [157:42 - 157:43] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [158:5 - 158:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [158:6 - 158:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [158:10 - 158:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""address_space"" [158:11 - 158:26] StringLiteral=
-// CHECK-tokens: Punctuation: "," [158:26 - 158:27] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_address_space" [158:28 - 158:44] DeclRefExpr=AT_address_space:15:7
-// CHECK-tokens: Punctuation: ")" [158:44 - 158:45] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [159:5 - 159:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [159:6 - 159:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [159:10 - 159:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""always_inline"" [159:11 - 159:26] StringLiteral=
-// CHECK-tokens: Punctuation: "," [159:26 - 159:27] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_always_inline" [159:28 - 159:44] DeclRefExpr=AT_always_inline:15:47
-// CHECK-tokens: Punctuation: ")" [159:44 - 159:45] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [160:5 - 160:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [160:6 - 160:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [160:10 - 160:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""returns_twice"" [160:11 - 160:26] StringLiteral=
-// CHECK-tokens: Punctuation: "," [160:26 - 160:27] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_returns_twice" [160:28 - 160:44] DeclRefExpr=AT_returns_twice:31:7
-// CHECK-tokens: Punctuation: ")" [160:44 - 160:45] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [161:5 - 161:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [161:6 - 161:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [161:10 - 161:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""vec_type_hint"" [161:11 - 161:26] StringLiteral=
-// CHECK-tokens: Punctuation: "," [161:26 - 161:27] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "IgnoredAttribute" [161:28 - 161:44] DeclRefExpr=IgnoredAttribute:31:25
-// CHECK-tokens: Punctuation: ")" [161:44 - 161:45] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [162:5 - 162:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [162:6 - 162:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [162:10 - 162:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""objc_exception"" [162:11 - 162:27] StringLiteral=
-// CHECK-tokens: Punctuation: "," [162:27 - 162:28] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_objc_exception" [162:29 - 162:46] DeclRefExpr=AT_objc_exception:22:32
-// CHECK-tokens: Punctuation: ")" [162:46 - 162:47] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [163:5 - 163:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [163:6 - 163:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [163:10 - 163:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""ext_vector_type"" [163:11 - 163:28] StringLiteral=
-// CHECK-tokens: Punctuation: "," [163:28 - 163:29] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_ext_vector_type" [163:30 - 163:48] DeclRefExpr=AT_ext_vector_type:19:7
-// CHECK-tokens: Punctuation: ")" [163:48 - 163:49] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [164:5 - 164:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [164:6 - 164:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [164:10 - 164:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""transparent_union"" [164:11 - 164:30] StringLiteral=
-// CHECK-tokens: Punctuation: "," [164:30 - 164:31] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_transparent_union" [164:32 - 164:52] DeclRefExpr=AT_transparent_union:27:57
-// CHECK-tokens: Punctuation: ")" [164:52 - 164:53] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [165:5 - 165:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [165:6 - 165:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [165:10 - 165:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""analyzer_noreturn"" [165:11 - 165:30] StringLiteral=
-// CHECK-tokens: Punctuation: "," [165:30 - 165:31] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_analyzer_noreturn" [165:32 - 165:52] DeclRefExpr=AT_analyzer_noreturn:16:7
-// CHECK-tokens: Punctuation: ")" [165:52 - 165:53] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [166:5 - 166:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [166:6 - 166:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [166:10 - 166:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""warn_unused_result"" [166:11 - 166:31] StringLiteral=
-// CHECK-tokens: Punctuation: "," [166:31 - 166:32] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_warn_unused_result" [166:33 - 166:54] DeclRefExpr=AT_warn_unused_result:29:22
-// CHECK-tokens: Punctuation: ")" [166:54 - 166:55] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [167:5 - 167:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [167:6 - 167:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [167:10 - 167:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""carries_dependency"" [167:11 - 167:31] StringLiteral=
-// CHECK-tokens: Punctuation: "," [167:31 - 167:32] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_carries_dependency" [167:33 - 167:54] DeclRefExpr=AT_carries_dependency:17:7
-// CHECK-tokens: Punctuation: ")" [167:54 - 167:55] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [168:5 - 168:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [168:6 - 168:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [168:10 - 168:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""ns_returns_not_retained"" [168:11 - 168:36] StringLiteral=
-// CHECK-tokens: Punctuation: "," [168:36 - 168:37] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_ns_returns_not_retained" [168:38 - 168:64] DeclRefExpr=AT_ns_returns_not_retained:24:7
-// CHECK-tokens: Punctuation: ")" [168:64 - 168:65] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [169:5 - 169:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [169:6 - 169:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [169:10 - 169:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""ns_returns_retained"" [169:11 - 169:32] StringLiteral=
-// CHECK-tokens: Punctuation: "," [169:32 - 169:33] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_ns_returns_retained" [169:34 - 169:56] DeclRefExpr=AT_ns_returns_retained:24:35
-// CHECK-tokens: Punctuation: ")" [169:56 - 169:57] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [170:5 - 170:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [170:6 - 170:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [170:10 - 170:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""cf_returns_not_retained"" [170:11 - 170:36] StringLiteral=
-// CHECK-tokens: Punctuation: "," [170:36 - 170:37] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_cf_returns_not_retained" [170:38 - 170:64] DeclRefExpr=AT_cf_returns_not_retained:23:7
-// CHECK-tokens: Punctuation: ")" [170:64 - 170:65] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [171:5 - 171:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [171:6 - 171:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [171:10 - 171:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""cf_returns_retained"" [171:11 - 171:32] StringLiteral=
-// CHECK-tokens: Punctuation: "," [171:32 - 171:33] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_cf_returns_retained" [171:34 - 171:56] DeclRefExpr=AT_cf_returns_retained:23:35
-// CHECK-tokens: Punctuation: ")" [171:56 - 171:57] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [172:5 - 172:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [172:6 - 172:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [172:10 - 172:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""ownership_returns"" [172:11 - 172:30] StringLiteral=
-// CHECK-tokens: Punctuation: "," [172:30 - 172:31] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_ownership_returns" [172:32 - 172:52] DeclRefExpr=AT_ownership_returns:25:44
-// CHECK-tokens: Punctuation: ")" [172:52 - 172:53] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [173:5 - 173:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [173:6 - 173:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [173:10 - 173:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""ownership_holds"" [173:11 - 173:28] StringLiteral=
-// CHECK-tokens: Punctuation: "," [173:28 - 173:29] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_ownership_holds" [173:30 - 173:48] DeclRefExpr=AT_ownership_holds:25:24
-// CHECK-tokens: Punctuation: ")" [173:48 - 173:49] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [174:5 - 174:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [174:6 - 174:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [174:10 - 174:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""ownership_takes"" [174:11 - 174:28] StringLiteral=
-// CHECK-tokens: Punctuation: "," [174:28 - 174:29] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_ownership_takes" [174:30 - 174:48] DeclRefExpr=AT_ownership_takes:26:7
-// CHECK-tokens: Punctuation: ")" [174:48 - 174:49] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [175:5 - 175:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [175:6 - 175:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [175:10 - 175:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""reqd_work_group_size"" [175:11 - 175:33] StringLiteral=
-// CHECK-tokens: Punctuation: "," [175:33 - 175:34] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_reqd_wg_size" [175:35 - 175:50] DeclRefExpr=AT_reqd_wg_size:30:23
-// CHECK-tokens: Punctuation: ")" [175:50 - 175:51] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [176:5 - 176:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [176:6 - 176:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [176:10 - 176:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""init_priority"" [176:11 - 176:26] StringLiteral=
-// CHECK-tokens: Punctuation: "," [176:26 - 176:27] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_init_priority" [176:28 - 176:44] DeclRefExpr=AT_init_priority:30:40
-// CHECK-tokens: Punctuation: ")" [176:44 - 176:45] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [177:5 - 177:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [177:6 - 177:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [177:10 - 177:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""no_instrument_function"" [177:11 - 177:35] StringLiteral=
-// CHECK-tokens: Punctuation: "," [177:35 - 177:36] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_no_instrument_function" [177:37 - 177:62] DeclRefExpr=AT_no_instrument_function:21:20
-// CHECK-tokens: Punctuation: ")" [177:62 - 177:63] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [178:5 - 178:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [178:6 - 178:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [178:10 - 178:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""thiscall"" [178:11 - 178:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [178:21 - 178:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_thiscall" [178:23 - 178:34] DeclRefExpr=AT_thiscall:27:44
-// CHECK-tokens: Punctuation: ")" [178:34 - 178:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [179:5 - 179:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [179:6 - 179:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [179:10 - 179:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""pascal"" [179:11 - 179:19] StringLiteral=
-// CHECK-tokens: Punctuation: "," [179:19 - 179:20] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_pascal" [179:21 - 179:30] DeclRefExpr=AT_pascal:26:38
-// CHECK-tokens: Punctuation: ")" [179:30 - 179:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [180:5 - 180:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [180:6 - 180:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [180:10 - 180:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""__cdecl"" [180:11 - 180:20] StringLiteral=
-// CHECK-tokens: Punctuation: "," [180:20 - 180:21] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_cdecl" [180:22 - 180:30] DeclRefExpr=AT_cdecl:17:30
-// CHECK-tokens: Punctuation: ")" [180:30 - 180:31] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [181:5 - 181:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [181:6 - 181:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [181:10 - 181:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""__stdcall"" [181:11 - 181:22] StringLiteral=
-// CHECK-tokens: Punctuation: "," [181:22 - 181:23] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_stdcall" [181:24 - 181:34] DeclRefExpr=AT_stdcall:27:32
-// CHECK-tokens: Punctuation: ")" [181:34 - 181:35] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [182:5 - 182:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [182:6 - 182:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [182:10 - 182:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""__fastcall"" [182:11 - 182:23] StringLiteral=
-// CHECK-tokens: Punctuation: "," [182:23 - 182:24] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_fastcall" [182:25 - 182:36] DeclRefExpr=AT_fastcall:19:27
-// CHECK-tokens: Punctuation: ")" [182:36 - 182:37] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [183:5 - 183:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [183:6 - 183:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [183:10 - 183:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""__thiscall"" [183:11 - 183:23] StringLiteral=
-// CHECK-tokens: Punctuation: "," [183:23 - 183:24] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_thiscall" [183:25 - 183:36] DeclRefExpr=AT_thiscall:27:44
-// CHECK-tokens: Punctuation: ")" [183:36 - 183:37] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [184:5 - 184:6] MemberRefExpr=Case:88:42
-// CHECK-tokens: Identifier: "Case" [184:6 - 184:10] MemberRefExpr=Case:88:42
-// CHECK-tokens: Punctuation: "(" [184:10 - 184:11] CallExpr=Case:88:42
-// CHECK-tokens: Literal: ""__pascal"" [184:11 - 184:21] StringLiteral=
-// CHECK-tokens: Punctuation: "," [184:21 - 184:22] CallExpr=Case:88:42
-// CHECK-tokens: Identifier: "AT_pascal" [184:23 - 184:32] DeclRefExpr=AT_pascal:26:38
-// CHECK-tokens: Punctuation: ")" [184:32 - 184:33] CallExpr=Case:88:42
-// CHECK-tokens: Punctuation: "." [185:5 - 185:6] MemberRefExpr=Default:92:5
-// CHECK-tokens: Identifier: "Default" [185:6 - 185:13] MemberRefExpr=Default:92:5
-// CHECK-tokens: Punctuation: "(" [185:13 - 185:14] CallExpr=Default:92:5
-// CHECK-tokens: Identifier: "UnknownAttribute" [185:14 - 185:30] DeclRefExpr=UnknownAttribute:31:43
-// CHECK-tokens: Punctuation: ")" [185:30 - 185:31] CallExpr=Default:92:5
-// CHECK-tokens: Punctuation: ";" [185:31 - 185:32] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [186:1 - 186:2] CompoundStmt=
-
-// RUN: c-index-test -test-load-source all %s -std=c++98 2>&1 | FileCheck %s
-// CHECK: 1:27: TypedefDecl=__darwin_size_t:1:27 (Definition) Extent=[1:1 - 1:42]
-// CHECK: 2:25: TypedefDecl=size_t:2:25 (Definition) Extent=[2:1 - 2:31]
-// CHECK: 2:9: TypeRef=__darwin_size_t:1:27 Extent=[2:9 - 2:24]
-// CHECK: 3:11: Namespace=std:3:11 (Definition) Extent=[3:1 - 5:2]
-// CHECK: 4:44: ClassTemplate=pair:4:44 (Definition) Extent=[4:3 - 4:64]
-// CHECK: 4:20: TemplateTypeParameter=_T1:4:20 (Definition) Extent=[4:14 - 4:23]
-// CHECK: 4:31: TemplateTypeParameter=_T2:4:31 (Definition) Extent=[4:25 - 4:34]
-// CHECK: 4:55: FieldDecl=second:4:55 (Definition) Extent=[4:51 - 4:61]
-// CHECK: 6:8: UnexposedDecl=:6:8 (Definition) Extent=[6:1 - 9:2]
-// CHECK: 7:7: FunctionDecl=memcmp:7:7 Extent=[7:3 - 7:49]
-// CHECK: 7:26: ParmDecl=:7:26 (Definition) Extent=[7:14 - 7:27]
-// CHECK: 7:40: ParmDecl=:7:40 (Definition) Extent=[7:28 - 7:41]
-// CHECK: 7:48: ParmDecl=:7:48 (Definition) Extent=[7:42 - 7:49]
-// CHECK: 7:42: TypeRef=size_t:2:25 Extent=[7:42 - 7:48]
-// CHECK: 8:10: FunctionDecl=strlen:8:10 Extent=[8:3 - 8:30]
-// CHECK: 8:3: TypeRef=size_t:2:25 Extent=[8:3 - 8:9]
-// CHECK: 8:29: ParmDecl=:8:29 (Definition) Extent=[8:17 - 8:30]
-// CHECK: 10:17: Namespace=clang:10:17 (Definition) Extent=[10:1 - 35:2]
-// CHECK: 11:9: ClassDecl=IdentifierInfo:11:9 Extent=[11:3 - 11:23]
-// CHECK: 12:9: ClassDecl=AttributeList:12:9 (Definition) Extent=[12:3 - 34:4]
-// CHECK: 13:10: EnumDecl=Kind:13:10 (Definition) Extent=[13:5 - 32:6]
-// CHECK: 14:7: EnumConstantDecl=AT_IBAction:14:7 (Definition) Extent=[14:7 - 14:18]
-// CHECK: 14:20: EnumConstantDecl=AT_IBOutlet:14:20 (Definition) Extent=[14:20 - 14:31]
-// CHECK: 14:33: EnumConstantDecl=AT_IBOutletCollection:14:33 (Definition) Extent=[14:33 - 14:54]
-// CHECK: 15:7: EnumConstantDecl=AT_address_space:15:7 (Definition) Extent=[15:7 - 15:23]
-// CHECK: 15:25: EnumConstantDecl=AT_alias:15:25 (Definition) Extent=[15:25 - 15:33]
-// CHECK: 15:35: EnumConstantDecl=AT_aligned:15:35 (Definition) Extent=[15:35 - 15:45]
-// CHECK: 15:47: EnumConstantDecl=AT_always_inline:15:47 (Definition) Extent=[15:47 - 15:63]
-// CHECK: 16:7: EnumConstantDecl=AT_analyzer_noreturn:16:7 (Definition) Extent=[16:7 - 16:27]
-// CHECK: 16:29: EnumConstantDecl=AT_annotate:16:29 (Definition) Extent=[16:29 - 16:40]
-// CHECK: 16:42: EnumConstantDecl=AT_base_check:16:42 (Definition) Extent=[16:42 - 16:55]
-// CHECK: 16:57: EnumConstantDecl=AT_blocks:16:57 (Definition) Extent=[16:57 - 16:66]
-// CHECK: 17:7: EnumConstantDecl=AT_carries_dependency:17:7 (Definition) Extent=[17:7 - 17:28]
-// CHECK: 17:30: EnumConstantDecl=AT_cdecl:17:30 (Definition) Extent=[17:30 - 17:38]
-// CHECK: 17:40: EnumConstantDecl=AT_cleanup:17:40 (Definition) Extent=[17:40 - 17:50]
-// CHECK: 17:52: EnumConstantDecl=AT_const:17:52 (Definition) Extent=[17:52 - 17:60]
-// CHECK: 17:62: EnumConstantDecl=AT_constructor:17:62 (Definition) Extent=[17:62 - 17:76]
-// CHECK: 18:7: EnumConstantDecl=AT_deprecated:18:7 (Definition) Extent=[18:7 - 18:20]
-// CHECK: 18:22: EnumConstantDecl=AT_destructor:18:22 (Definition) Extent=[18:22 - 18:35]
-// CHECK: 18:37: EnumConstantDecl=AT_dllexport:18:37 (Definition) Extent=[18:37 - 18:49]
-// CHECK: 18:51: EnumConstantDecl=AT_dllimport:18:51 (Definition) Extent=[18:51 - 18:63]
-// CHECK: 19:7: EnumConstantDecl=AT_ext_vector_type:19:7 (Definition) Extent=[19:7 - 19:25]
-// CHECK: 19:27: EnumConstantDecl=AT_fastcall:19:27 (Definition) Extent=[19:27 - 19:38]
-// CHECK: 19:40: EnumConstantDecl=AT_final:19:40 (Definition) Extent=[19:40 - 19:48]
-// CHECK: 19:50: EnumConstantDecl=AT_format:19:50 (Definition) Extent=[19:50 - 19:59]
-// CHECK: 19:61: EnumConstantDecl=AT_format_arg:19:61 (Definition) Extent=[19:61 - 19:74]
-// CHECK: 20:7: EnumConstantDecl=AT_gnu_inline:20:7 (Definition) Extent=[20:7 - 20:20]
-// CHECK: 20:22: EnumConstantDecl=AT_hiding:20:22 (Definition) Extent=[20:22 - 20:31]
-// CHECK: 20:33: EnumConstantDecl=AT_malloc:20:33 (Definition) Extent=[20:33 - 20:42]
-// CHECK: 20:44: EnumConstantDecl=AT_mode:20:44 (Definition) Extent=[20:44 - 20:51]
-// CHECK: 20:53: EnumConstantDecl=AT_naked:20:53 (Definition) Extent=[20:53 - 20:61]
-// CHECK: 20:63: EnumConstantDecl=AT_nodebug:20:63 (Definition) Extent=[20:63 - 20:73]
-// CHECK: 21:7: EnumConstantDecl=AT_noinline:21:7 (Definition) Extent=[21:7 - 21:18]
-// CHECK: 21:20: EnumConstantDecl=AT_no_instrument_function:21:20 (Definition) Extent=[21:20 - 21:45]
-// CHECK: 21:47: EnumConstantDecl=AT_nonnull:21:47 (Definition) Extent=[21:47 - 21:57]
-// CHECK: 21:59: EnumConstantDecl=AT_noreturn:21:59 (Definition) Extent=[21:59 - 21:70]
-// CHECK: 22:7: EnumConstantDecl=AT_nothrow:22:7 (Definition) Extent=[22:7 - 22:17]
-// CHECK: 22:19: EnumConstantDecl=AT_nsobject:22:19 (Definition) Extent=[22:19 - 22:30]
-// CHECK: 22:32: EnumConstantDecl=AT_objc_exception:22:32 (Definition) Extent=[22:32 - 22:49]
-// CHECK: 22:51: EnumConstantDecl=AT_override:22:51 (Definition) Extent=[22:51 - 22:62]
-// CHECK: 23:7: EnumConstantDecl=AT_cf_returns_not_retained:23:7 (Definition) Extent=[23:7 - 23:33]
-// CHECK: 23:35: EnumConstantDecl=AT_cf_returns_retained:23:35 (Definition) Extent=[23:35 - 23:57]
-// CHECK: 24:7: EnumConstantDecl=AT_ns_returns_not_retained:24:7 (Definition) Extent=[24:7 - 24:33]
-// CHECK: 24:35: EnumConstantDecl=AT_ns_returns_retained:24:35 (Definition) Extent=[24:35 - 24:57]
-// CHECK: 24:59: EnumConstantDecl=AT_objc_gc:24:59 (Definition) Extent=[24:59 - 24:69]
-// CHECK: 25:7: EnumConstantDecl=AT_overloadable:25:7 (Definition) Extent=[25:7 - 25:22]
-// CHECK: 25:24: EnumConstantDecl=AT_ownership_holds:25:24 (Definition) Extent=[25:24 - 25:42]
-// CHECK: 25:44: EnumConstantDecl=AT_ownership_returns:25:44 (Definition) Extent=[25:44 - 25:64]
-// CHECK: 26:7: EnumConstantDecl=AT_ownership_takes:26:7 (Definition) Extent=[26:7 - 26:25]
-// CHECK: 26:27: EnumConstantDecl=AT_packed:26:27 (Definition) Extent=[26:27 - 26:36]
-// CHECK: 26:38: EnumConstantDecl=AT_pascal:26:38 (Definition) Extent=[26:38 - 26:47]
-// CHECK: 26:49: EnumConstantDecl=AT_pure:26:49 (Definition) Extent=[26:49 - 26:56]
-// CHECK: 26:58: EnumConstantDecl=AT_regparm:26:58 (Definition) Extent=[26:58 - 26:68]
-// CHECK: 27:7: EnumConstantDecl=AT_section:27:7 (Definition) Extent=[27:7 - 27:17]
-// CHECK: 27:19: EnumConstantDecl=AT_sentinel:27:19 (Definition) Extent=[27:19 - 27:30]
-// CHECK: 27:32: EnumConstantDecl=AT_stdcall:27:32 (Definition) Extent=[27:32 - 27:42]
-// CHECK: 27:44: EnumConstantDecl=AT_thiscall:27:44 (Definition) Extent=[27:44 - 27:55]
-// CHECK: 27:57: EnumConstantDecl=AT_transparent_union:27:57 (Definition) Extent=[27:57 - 27:77]
-// CHECK: 28:7: EnumConstantDecl=AT_unavailable:28:7 (Definition) Extent=[28:7 - 28:21]
-// CHECK: 28:23: EnumConstantDecl=AT_unused:28:23 (Definition) Extent=[28:23 - 28:32]
-// CHECK: 28:34: EnumConstantDecl=AT_used:28:34 (Definition) Extent=[28:34 - 28:41]
-// CHECK: 28:43: EnumConstantDecl=AT_vecreturn:28:43 (Definition) Extent=[28:43 - 28:55]
-// CHECK: 28:57: EnumConstantDecl=AT_vector_size:28:57 (Definition) Extent=[28:57 - 28:71]
-// CHECK: 29:7: EnumConstantDecl=AT_visibility:29:7 (Definition) Extent=[29:7 - 29:20]
-// CHECK: 29:22: EnumConstantDecl=AT_warn_unused_result:29:22 (Definition) Extent=[29:22 - 29:43]
-// CHECK: 29:45: EnumConstantDecl=AT_weak:29:45 (Definition) Extent=[29:45 - 29:52]
-// CHECK: 29:54: EnumConstantDecl=AT_weakref:29:54 (Definition) Extent=[29:54 - 29:64]
-// CHECK: 30:7: EnumConstantDecl=AT_weak_import:30:7 (Definition) Extent=[30:7 - 30:21]
-// CHECK: 30:23: EnumConstantDecl=AT_reqd_wg_size:30:23 (Definition) Extent=[30:23 - 30:38]
-// CHECK: 30:40: EnumConstantDecl=AT_init_priority:30:40 (Definition) Extent=[30:40 - 30:56]
-// CHECK: 31:7:  EnumConstantDecl=AT_returns_twice:31:7 (Definition) Extent=[31:7 - 31:23]
-// CHECK: 31:25: EnumConstantDecl=IgnoredAttribute:31:25 (Definition) Extent=[31:25 - 31:41]
-// CHECK: 33:17: CXXMethod=getKind:33:17 (static) Extent=[33:5 - 33:53]
-// CHECK: 33:12: TypeRef=enum clang::AttributeList::Kind:13:10 Extent=[33:12 - 33:16]
-// CHECK: 33:48: ParmDecl=Name:33:48 (Definition) Extent=[33:25 - 33:52]
-// CHECK: 33:31: TypeRef=class clang::IdentifierInfo:66:7 Extent=[33:31 - 33:45]
-// CHECK: 36:8: FunctionDecl=magic_length:36:8 Extent=[36:1 - 36:35]
-// CHECK: 36:1: TypeRef=size_t:2:25 Extent=[36:1 - 36:7]
-// CHECK: 36:33: ParmDecl=s:36:33 (Definition) Extent=[36:21 - 36:34]
-// CHECK: 37:11: Namespace=llvm:37:11 (Definition) Extent=[37:1 - 64:2]
-// CHECK: 38:7: ClassDecl=StringRef:38:7 (Definition) Extent=[38:1 - 63:2]
-// CHECK: 39:1: CXXAccessSpecifier=:39:1 (Definition) Extent=[39:1 - 39:8]
-// CHECK: 40:23: TypedefDecl=iterator:40:23 (Definition) Extent=[40:3 - 40:31]
-// CHECK: 41:23: VarDecl=npos:41:23 Extent=[41:3 - 41:40]
-// CHECK: 41:16: TypeRef=size_t:2:25 Extent=[41:16 - 41:22]
-// CHECK: 41:30: UnaryOperator= Extent=[41:30 - 41:40]
-// CHECK: 41:31: CXXFunctionalCastExpr= Extent=[41:31 - 41:40]
-// CHECK: 41:31: TypeRef=size_t:2:25 Extent=[41:31 - 41:37]
-// CHECK: 41:38: UnexposedExpr= Extent=[41:38 - 41:39]
-// CHECK: 41:38: IntegerLiteral= Extent=[41:38 - 41:39]
-// CHECK: 42:1: CXXAccessSpecifier=:42:1 (Definition) Extent=[42:1 - 42:9]
-// CHECK: 43:15: FieldDecl=Data:43:15 (Definition) Extent=[43:3 - 43:19]
-// CHECK: 44:10: FieldDecl=Length:44:10 (Definition) Extent=[44:3 - 44:16]
-// CHECK: 44:3: TypeRef=size_t:2:25 Extent=[44:3 - 44:9]
-// CHECK: 45:17: CXXMethod=min:45:17 (Definition) (static) Extent=[45:3 - 45:66]
-// CHECK: 45:10: TypeRef=size_t:2:25 Extent=[45:10 - 45:16]
-// CHECK: 45:28: ParmDecl=a:45:28 (Definition) Extent=[45:21 - 45:29]
-// CHECK: 45:21: TypeRef=size_t:2:25 Extent=[45:21 - 45:27]
-// CHECK: 45:38: ParmDecl=b:45:38 (Definition) Extent=[45:31 - 45:39]
-// CHECK: 45:31: TypeRef=size_t:2:25 Extent=[45:31 - 45:37]
-// CHECK: 45:41: CompoundStmt= Extent=[45:41 - 45:66]
-// CHECK: 45:43: ReturnStmt= Extent=[45:43 - 45:63]
-// CHECK: 45:50: ConditionalOperator= Extent=[45:50 - 45:63]
-// CHECK: 45:50: BinaryOperator= Extent=[45:50 - 45:55]
-// CHECK: 45:50: DeclRefExpr=a:45:28 Extent=[45:50 - 45:51]
-// CHECK: 45:54: DeclRefExpr=b:45:38 Extent=[45:54 - 45:55]
-// CHECK: 45:58: DeclRefExpr=a:45:28 Extent=[45:58 - 45:59]
-// CHECK: 45:62: DeclRefExpr=b:45:38 Extent=[45:62 - 45:63]
-// CHECK: 46:1: CXXAccessSpecifier=:46:1 (Definition) Extent=[46:1 - 46:8]
-// CHECK: 47:3: CXXConstructor=StringRef:47:3 (Definition) Extent=[47:3 - 47:37]
-// CHECK: 47:16: MemberRef=Data:43:15 Extent=[47:16 - 47:20]
-// CHECK: 47:21: UnexposedExpr= Extent=[47:21 - 47:22]
-// CHECK: 47:21: IntegerLiteral= Extent=[47:21 - 47:22]
-// CHECK: 47:25: MemberRef=Length:44:10 Extent=[47:25 - 47:31]
-// CHECK: 47:32: UnexposedExpr= Extent=[47:32 - 47:33]
-// CHECK: 47:32: IntegerLiteral= Extent=[47:32 - 47:33]
-// CHECK: 47:35: CompoundStmt= Extent=[47:35 - 47:37]
-// CHECK: 48:3: CXXConstructor=StringRef:48:3 (Definition) Extent=[48:3 - 48:71]
-// CHECK: 48:25: ParmDecl=Str:48:25 (Definition) Extent=[48:13 - 48:28]
-// CHECK: 48:32: MemberRef=Data:43:15 Extent=[48:32 - 48:36]
-// CHECK: 48:37: DeclRefExpr=Str:48:25 Extent=[48:37 - 48:40]
-// CHECK: 48:43: MemberRef=Length:44:10 Extent=[48:43 - 48:49]
-// CHECK: 48:50: CallExpr=magic_length:36:8 Extent=[48:50 - 48:67]
-// CHECK: 48:50: UnexposedExpr=magic_length:36:8 Extent=[48:50 - 48:62]
-// CHECK: 48:50: DeclRefExpr=magic_length:36:8 Extent=[48:50 - 48:62]
-// CHECK: 48:63: DeclRefExpr=Str:48:25 Extent=[48:63 - 48:66]
-// CHECK: 48:69: CompoundStmt= Extent=[48:69 - 48:71]
-// CHECK: 49:3: CXXConstructor=StringRef:49:3 (Definition) Extent=[49:3 - 49:77]
-// CHECK: 49:25: ParmDecl=data:49:25 (Definition) Extent=[49:13 - 49:29]
-// CHECK: 49:38: ParmDecl=length:49:38 (Definition) Extent=[49:31 - 49:44]
-// CHECK: 49:31: TypeRef=size_t:2:25 Extent=[49:31 - 49:37]
-// CHECK: 49:48: MemberRef=Data:43:15 Extent=[49:48 - 49:52]
-// CHECK: 49:53: DeclRefExpr=data:49:25 Extent=[49:53 - 49:57]
-// CHECK: 49:60: MemberRef=Length:44:10 Extent=[49:60 - 49:66]
-// CHECK: 49:67: DeclRefExpr=length:49:38 Extent=[49:67 - 49:73]
-// CHECK: 49:75: CompoundStmt= Extent=[49:75 - 49:77]
-// CHECK: 50:12: CXXMethod=end:50:12 (Definition) Extent=[50:3 - 50:40]
-// CHECK: 50:3: TypeRef=iterator:40:23 Extent=[50:3 - 50:11]
-// CHECK: 50:24: CompoundStmt= Extent=[50:24 - 50:40]
-// CHECK: 50:26: ReturnStmt= Extent=[50:26 - 50:37]
-// CHECK: 50:33: MemberRefExpr=Data:43:15 Extent=[50:33 - 50:37]
-// CHECK: 51:10: CXXMethod=size:51:10 (Definition) Extent=[51:3 - 51:41]
-// CHECK: 51:3: TypeRef=size_t:2:25 Extent=[51:3 - 51:9]
-// CHECK: 51:23: CompoundStmt= Extent=[51:23 - 51:41]
-// CHECK: 51:25: ReturnStmt= Extent=[51:25 - 51:38]
-// CHECK: 51:32: MemberRefExpr=Length:44:10 Extent=[51:32 - 51:38]
-// CHECK: 52:8: CXXMethod=startswith:52:8 (Definition) Extent=[52:3 - 55:4]
-// CHECK: 52:29: ParmDecl=Prefix:52:29 (Definition) Extent=[52:19 - 52:35]
-// CHECK: 52:19: TypeRef=class llvm::StringRef:38:7 Extent=[52:19 - 52:28]
-// CHECK: 52:43: CompoundStmt= Extent=[52:43 - 55:4]
-// CHECK: 53:5: ReturnStmt= Extent=[53:5 - 54:56]
-// CHECK: 53:12: BinaryOperator= Extent=[53:12 - 54:56]
-// CHECK: 53:12: BinaryOperator= Extent=[53:12 - 53:35]
-// CHECK: 53:12: UnexposedExpr=Length:44:10 Extent=[53:12 - 53:18]
-// CHECK: 53:12: MemberRefExpr=Length:44:10 Extent=[53:12 - 53:18]
-// CHECK: 53:29: MemberRefExpr=Length:44:10 SingleRefName=[53:29 - 53:35] RefName=[53:29 - 53:35] Extent=[53:22 - 53:35]
-// CHECK: 53:22: DeclRefExpr=Prefix:52:29 Extent=[53:22 - 53:28]
-// CHECK: 54:11: BinaryOperator= Extent=[54:11 - 54:56]
-// CHECK: 54:11: CallExpr=memcmp:7:7 Extent=[54:11 - 54:51]
-// CHECK: 54:11: UnexposedExpr=memcmp:7:7 Extent=[54:11 - 54:17]
-// CHECK: 54:11: DeclRefExpr=memcmp:7:7 Extent=[54:11 - 54:17]
-// CHECK: 54:18: UnexposedExpr=Data:43:15 Extent=[54:18 - 54:22]
-// CHECK: 54:18: MemberRefExpr=Data:43:15 Extent=[54:18 - 54:22]
-// CHECK: 54:31: UnexposedExpr=Data:43:15 Extent=[54:24 - 54:35]
-// CHECK: 54:31: MemberRefExpr=Data:43:15 SingleRefName=[54:31 - 54:35] RefName=[54:31 - 54:35] Extent=[54:24 - 54:35]
-// CHECK: 54:24: DeclRefExpr=Prefix:52:29 Extent=[54:24 - 54:30]
-// CHECK: 54:44: MemberRefExpr=Length:44:10 SingleRefName=[54:44 - 54:50] RefName=[54:44 - 54:50] Extent=[54:37 - 54:50]
-// CHECK: 54:37: DeclRefExpr=Prefix:52:29 Extent=[54:37 - 54:43]
-// CHECK: 54:55: IntegerLiteral= Extent=[54:55 - 54:56]
-// CHECK: 56:8: CXXMethod=endswith:56:8 (Definition) Extent=[56:3 - 59:4]
-// CHECK: 56:27: ParmDecl=Suffix:56:27 (Definition) Extent=[56:17 - 56:33]
-// CHECK: 56:17: TypeRef=class llvm::StringRef:38:7 Extent=[56:17 - 56:26]
-// CHECK: 56:41: CompoundStmt= Extent=[56:41 - 59:4]
-// CHECK: 57:5: ReturnStmt= Extent=[57:5 - 58:69]
-// CHECK: 57:12: BinaryOperator= Extent=[57:12 - 58:69]
-// CHECK: 57:12: BinaryOperator= Extent=[57:12 - 57:35]
-// CHECK: 57:12: UnexposedExpr=Length:44:10 Extent=[57:12 - 57:18]
-// CHECK: 57:12: MemberRefExpr=Length:44:10 Extent=[57:12 - 57:18]
-// CHECK: 57:29: MemberRefExpr=Length:44:10 SingleRefName=[57:29 - 57:35] RefName=[57:29 - 57:35] Extent=[57:22 - 57:35]
-// CHECK: 57:22: DeclRefExpr=Suffix:56:27 Extent=[57:22 - 57:28]
-// CHECK: 58:7: BinaryOperator= Extent=[58:7 - 58:69]
-// CHECK: 58:7: CallExpr=memcmp:7:7 Extent=[58:7 - 58:64]
-// CHECK: 58:7: UnexposedExpr=memcmp:7:7 Extent=[58:7 - 58:13]
-// CHECK: 58:7: DeclRefExpr=memcmp:7:7 Extent=[58:7 - 58:13]
-// CHECK: 58:14: UnexposedExpr= Extent=[58:14 - 58:35]
-// CHECK: 58:14: BinaryOperator= Extent=[58:14 - 58:35]
-// CHECK: 58:14: CallExpr=end:50:12 Extent=[58:14 - 58:19]
-// CHECK: 58:14: MemberRefExpr=end:50:12 Extent=[58:14 - 58:17]
-// CHECK: 58:29: MemberRefExpr=Length:44:10 SingleRefName=[58:29 - 58:35] RefName=[58:29 - 58:35] Extent=[58:22 - 58:35]
-// CHECK: 58:22: DeclRefExpr=Suffix:56:27 Extent=[58:22 - 58:28]
-// CHECK: 58:44: UnexposedExpr=Data:43:15 Extent=[58:37 - 58:48]
-// CHECK: 58:44: MemberRefExpr=Data:43:15 SingleRefName=[58:44 - 58:48] RefName=[58:44 - 58:48] Extent=[58:37 - 58:48]
-// CHECK: 58:37: DeclRefExpr=Suffix:56:27 Extent=[58:37 - 58:43]
-// CHECK: 58:57: MemberRefExpr=Length:44:10 SingleRefName=[58:57 - 58:63] RefName=[58:57 - 58:63] Extent=[58:50 - 58:63]
-// CHECK: 58:50: DeclRefExpr=Suffix:56:27 Extent=[58:50 - 58:56]
-// CHECK: 58:68: IntegerLiteral= Extent=[58:68 - 58:69]
-// CHECK: 60:13: CXXMethod=substr:60:13 (Definition) Extent=[60:3 - 62:4]
-// CHECK: 60:3: TypeRef=class llvm::StringRef:38:7 Extent=[60:3 - 60:12]
-// CHECK: 60:27: ParmDecl=Start:60:27 (Definition) Extent=[60:20 - 60:32]
-// CHECK: 60:20: TypeRef=size_t:2:25 Extent=[60:20 - 60:26]
-// CHECK: 60:41: ParmDecl=N:60:41 (Definition) Extent=[60:34 - 60:49]
-// CHECK: 60:34: TypeRef=size_t:2:25 Extent=[60:34 - 60:40]
-// CHECK: 60:45: DeclRefExpr=npos:41:23 Extent=[60:45 - 60:49]
-// CHECK: 60:57: CompoundStmt= Extent=[60:57 - 62:4]
-// CHECK: 61:5: ReturnStmt= Extent=[61:5 - 61:59]
-// CHECK: 61:12: CallExpr= Extent=[61:12 - 61:59]
-// CHECK: 61:12: UnexposedExpr=StringRef:49:3 Extent=[61:12 - 61:59]
-// CHECK: 61:12: CallExpr=StringRef:49:3 Extent=[61:12 - 61:59]
-// CHECK: 61:12: TypeRef=class llvm::StringRef:38:7 Extent=[61:12 - 61:21]
-// CHECK: 61:22: BinaryOperator= Extent=[61:22 - 61:34]
-// CHECK: 61:22: UnexposedExpr=Data:43:15 Extent=[61:22 - 61:26]
-// CHECK: 61:22: MemberRefExpr=Data:43:15 Extent=[61:22 - 61:26]
-// CHECK: 61:29: DeclRefExpr=Start:60:27 Extent=[61:29 - 61:34]
-// CHECK: 61:36: CallExpr=min:45:17 Extent=[61:36 - 61:58]
-// CHECK: 61:36: UnexposedExpr=min:45:17 Extent=[61:36 - 61:39]
-// CHECK: 61:36: DeclRefExpr=min:45:17 Extent=[61:36 - 61:39]
-// CHECK: 61:40: DeclRefExpr=N:60:41 Extent=[61:40 - 61:41]
-// CHECK: 61:43: BinaryOperator= Extent=[61:43 - 61:57]
-// CHECK: 61:43: UnexposedExpr=Length:44:10 Extent=[61:43 - 61:49]
-// CHECK: 61:43: MemberRefExpr=Length:44:10 Extent=[61:43 - 61:49]
-// CHECK: 61:52: DeclRefExpr=Start:60:27 Extent=[61:52 - 61:57]
-// CHECK: 65:11: Namespace=clang:65:11 (Definition) Extent=[65:1 - 81:2]
-// CHECK: 66:7: ClassDecl=IdentifierInfo:66:7 (Definition) Extent=[66:1 - 80:2]
-// CHECK: 67:1: CXXAccessSpecifier=:67:1 (Definition) Extent=[67:1 - 67:8]
-// CHECK: 67:8: CXXConstructor=IdentifierInfo:67:8 Extent=[67:8 - 67:24]
-// CHECK: 68:15: CXXMethod=getNameStart:68:15 (Definition) Extent=[68:3 - 71:4]
-// CHECK: 68:36: CompoundStmt= Extent=[68:36 - 71:4]
-// CHECK: 69:5: DeclStmt= Extent=[69:5 - 69:65]
-// CHECK: 69:54: TypedefDecl=actualtype:69:54 (Definition) Extent=[69:5 - 69:64]
-// CHECK: 69:18: TemplateRef=pair:4:44 Extent=[69:18 - 69:22]
-// CHECK: 69:25: TypeRef=class clang::IdentifierInfo:66:7 Extent=[69:25 - 69:39]
-// CHECK: 70:5: ReturnStmt= Extent=[70:5 - 70:47]
-// CHECK: 70:41: MemberRefExpr=second:4:55 SingleRefName=[70:41 - 70:47] RefName=[70:41 - 70:47] Extent=[70:12 - 70:47]
-// CHECK: 70:12: ParenExpr= Extent=[70:12 - 70:39]
-// CHECK: 70:13: CStyleCastExpr= Extent=[70:13 - 70:38]
-// CHECK: 70:20: TypeRef=actualtype:69:54 Extent=[70:20 - 70:30]
-// CHECK: 70:34: CXXThisExpr= Extent=[70:34 - 70:38]
-// CHECK: 72:12: CXXMethod=getLength:72:12 (Definition) Extent=[72:3 - 76:4]
-// CHECK: 72:30: CompoundStmt= Extent=[72:30 - 76:4]
-// CHECK: 73:5: DeclStmt= Extent=[73:5 - 73:65]
-// CHECK: 73:54: TypedefDecl=actualtype:73:54 (Definition) Extent=[73:5 - 73:64]
-// CHECK: 73:18: TemplateRef=pair:4:44 Extent=[73:18 - 73:22]
-// CHECK: 73:25: TypeRef=class clang::IdentifierInfo:66:7 Extent=[73:25 - 73:39]
-// CHECK: 74:5: DeclStmt= Extent=[74:5 - 74:61]
-// CHECK: 74:17: VarDecl=p:74:17 (Definition) Extent=[74:5 - 74:60]
-// CHECK: 74:21: BinaryOperator= Extent=[74:21 - 74:60]
-// CHECK: 74:50: UnexposedExpr=second:4:55 Extent=[74:21 - 74:56]
-// CHECK: 74:50: MemberRefExpr=second:4:55 SingleRefName=[74:50 - 74:56] RefName=[74:50 - 74:56] Extent=[74:21 - 74:56]
-// CHECK: 74:21: ParenExpr= Extent=[74:21 - 74:48]
-// CHECK: 74:22: CStyleCastExpr= Extent=[74:22 - 74:47]
-// CHECK: 74:29: TypeRef=actualtype:73:54 Extent=[74:29 - 74:39]
-// CHECK: 74:43: CXXThisExpr= Extent=[74:43 - 74:47]
-// CHECK: 74:59: IntegerLiteral= Extent=[74:59 - 74:60]
-// CHECK: 75:5: ReturnStmt= Extent=[75:5 - 75:62]
-// CHECK: 75:12: BinaryOperator= Extent=[75:12 - 75:62]
-// CHECK: 75:12: ParenExpr= Extent=[75:12 - 75:58]
-// CHECK: 75:13: BinaryOperator= Extent=[75:13 - 75:57]
-// CHECK: 75:13: ParenExpr= Extent=[75:13 - 75:30]
-// CHECK: 75:14: CStyleCastExpr= Extent=[75:14 - 75:29]
-// CHECK: 75:25: UnexposedExpr= Extent=[75:25 - 75:29]
-// CHECK: 75:25: UnexposedExpr= Extent=[75:25 - 75:29]
-// CHECK: 75:25: ArraySubscriptExpr= Extent=[75:25 - 75:29]
-// CHECK: 75:25: DeclRefExpr=p:74:17 Extent=[75:25 - 75:26]
-// CHECK: 75:27: IntegerLiteral= Extent=[75:27 - 75:28]
-// CHECK: 75:33: ParenExpr= Extent=[75:33 - 75:57]
-// CHECK: 75:34: BinaryOperator= Extent=[75:34 - 75:56]
-// CHECK: 75:34: ParenExpr= Extent=[75:34 - 75:51]
-// CHECK: 75:35: CStyleCastExpr= Extent=[75:35 - 75:50]
-// CHECK: 75:46: UnexposedExpr= Extent=[75:46 - 75:50]
-// CHECK: 75:46: UnexposedExpr= Extent=[75:46 - 75:50]
-// CHECK: 75:46: ArraySubscriptExpr= Extent=[75:46 - 75:50]
-// CHECK: 75:46: DeclRefExpr=p:74:17 Extent=[75:46 - 75:47]
-// CHECK: 75:48: IntegerLiteral= Extent=[75:48 - 75:49]
-// CHECK: 75:55: IntegerLiteral= Extent=[75:55 - 75:56]
-// CHECK: 75:61: UnexposedExpr= Extent=[75:61 - 75:62]
-// CHECK: 75:61: IntegerLiteral= Extent=[75:61 - 75:62]
-// CHECK: 77:19: CXXMethod=getName:77:19 (Definition) Extent=[77:3 - 79:4]
-// CHECK: 77:35: CompoundStmt= Extent=[77:35 - 79:4]
-// CHECK: 78:5: ReturnStmt= Extent=[78:5 - 78:56]
-// CHECK: 78:12: CallExpr= Extent=[78:12 - 78:56]
-// CHECK: 78:12: UnexposedExpr=StringRef:49:3 Extent=[78:12 - 78:56]
-// CHECK: 78:12: CallExpr=StringRef:49:3 Extent=[78:12 - 78:56]
-// CHECK: 78:28: CallExpr=getNameStart:68:15 Extent=[78:28 - 78:42]
-// CHECK: 78:28: MemberRefExpr=getNameStart:68:15 Extent=[78:28 - 78:40]
-// CHECK: 78:44: UnexposedExpr=getLength:72:12 Extent=[78:44 - 78:55]
-// CHECK: 78:44: CallExpr=getLength:72:12 Extent=[78:44 - 78:55]
-// CHECK: 78:44: MemberRefExpr=getLength:72:12 Extent=[78:44 - 78:53]
-// CHECK: 82:11: Namespace=llvm:82:11 (Definition) Extent=[82:1 - 96:2]
-// CHECK: 83:47: ClassTemplate=StringSwitch:83:47 (Definition) Extent=[83:1 - 95:2]
-// CHECK: 83:21: TemplateTypeParameter=T:83:21 (Definition) Extent=[83:12 - 83:22]
-// CHECK: 83:33: TemplateTypeParameter=R:83:33 (Definition) Extent=[83:24 - 83:38]
-// CHECK: 84:13: FieldDecl=Str:84:13 (Definition) Extent=[84:3 - 84:16]
-// CHECK: 84:3: TypeRef=class llvm::StringRef:38:7 Extent=[84:3 - 84:12]
-// CHECK: 85:12: FieldDecl=Result:85:12 (Definition) Extent=[85:3 - 85:18]
-// CHECK: 86:1: CXXAccessSpecifier=:86:1 (Definition) Extent=[86:1 - 86:8]
-// CHECK: 87:12: CXXConstructor=StringSwitch<T, R>:87:12 (Definition) Extent=[87:3 - 87:64]
-// CHECK: 87:35: ParmDecl=Str:87:35 (Definition) Extent=[87:25 - 87:38]
-// CHECK: 87:25: TypeRef=class llvm::StringRef:38:7 Extent=[87:25 - 87:34]
-// CHECK: 87:42: MemberRef=Str:84:13 Extent=[87:42 - 87:45]
-// CHECK: 87:42: CallExpr=StringRef:38:7 Extent=[87:42 - 87:50]
-// CHECK: 87:46: DeclRefExpr=Str:87:35 Extent=[87:46 - 87:49]
-// CHECK: 87:52: MemberRef=Result:85:12 Extent=[87:52 - 87:58]
-// CHECK: 87:58: UnexposedExpr= Extent=[87:58 - 87:61]
-// CHECK: 87:59: IntegerLiteral= Extent=[87:59 - 87:60]
-// CHECK: 87:62: CompoundStmt= Extent=[87:62 - 87:64]
-// CHECK: 88:42: FunctionTemplate=Case:88:42 (Definition) Extent=[88:3 - 91:4]
-// CHECK: 88:23: NonTypeTemplateParameter=N:88:23 (Definition) Extent=[88:14 - 88:24]
-// CHECK: 88:60: ParmDecl=S:88:60 (Definition) Extent=[88:47 - 88:65]
-// CHECK: 88:63: DeclRefExpr=N:88:23 Extent=[88:63 - 88:64]
-// CHECK: 89:57: ParmDecl=Value:89:57 (Definition) Extent=[89:47 - 89:62]
-// CHECK: 89:64: CompoundStmt= Extent=[89:64 - 91:4]
-// CHECK: 90:5: ReturnStmt= Extent=[90:5 - 90:17]
-// CHECK: 90:12: UnaryOperator= Extent=[90:12 - 90:17]
-// CHECK: 90:13: CXXThisExpr= Extent=[90:13 - 90:17]
-// CHECK: 92:5: CXXMethod=Default:92:5 (Definition) Extent=[92:3 - 94:4]
-// CHECK: 92:23: ParmDecl=Value:92:23 (Definition) Extent=[92:13 - 92:28]
-// CHECK: 92:36: CompoundStmt= Extent=[92:36 - 94:4]
-// CHECK: 93:5: ReturnStmt= Extent=[93:5 - 93:17]
-// CHECK: 93:12: DeclRefExpr=Value:92:23 Extent=[93:12 - 93:17]
-// CHECK: 98:17: UsingDirective=:98:17 Extent=[98:1 - 98:22]
-// CHECK: 98:17: NamespaceRef=clang:10:17 Extent=[98:17 - 98:22]
-// CHECK: 100:36: CXXMethod=getKind:100:36 (Definition) (static) Extent=[100:1 - 186:2]
-// CHECK: 100:21: TypeRef=class clang::AttributeList:12:9 Extent=[100:21 - 100:34]
-// CHECK: 100:67: ParmDecl=Name:100:67 (Definition) Extent=[100:44 - 100:71]
-// CHECK: 100:50: TypeRef=class clang::IdentifierInfo:66:7 Extent=[100:50 - 100:64]
-// CHECK: 100:73: CompoundStmt= Extent=[100:73 - 186:2]
-// CHECK: 101:3: DeclStmt= Extent=[101:3 - 101:46]
-// CHECK: 101:19: VarDecl=AttrName:101:19 (Definition) Extent=[101:3 - 101:45]
-// CHECK: 101:30: CallExpr= Extent=[101:30 - 101:45]
-// CHECK: 101:30: UnexposedExpr=getName:77:19 Extent=[101:30 - 101:45]
-// CHECK: 101:30: CallExpr=getName:77:19 Extent=[101:30 - 101:45]
-// CHECK: 101:36: MemberRefExpr=getName:77:19 SingleRefName=[101:36 - 101:43] RefName=[101:36 - 101:43] Extent=[101:30 - 101:43]
-// CHECK: 101:30: DeclRefExpr=Name:100:67 Extent=[101:30 - 101:34]
-// CHECK: 102:3: IfStmt= Extent=[102:3 - 103:55]
-// CHECK: 102:7: BinaryOperator= Extent=[102:7 - 102:59]
-// CHECK: 102:7: CallExpr=startswith:52:8 Extent=[102:7 - 102:32]
-// CHECK: 102:16: MemberRefExpr=startswith:52:8 SingleRefName=[102:16 - 102:26] RefName=[102:16 - 102:26] Extent=[102:7 - 102:26]
-// CHECK: 102:7: UnexposedExpr=AttrName:101:19 Extent=[102:7 - 102:15]
-// CHECK: 102:7: DeclRefExpr=AttrName:101:19 Extent=[102:7 - 102:15]
-// CHECK: 102:27: CallExpr= Extent=[102:27 - 102:31]
-// CHECK: 102:27: UnexposedExpr=StringRef:48:3 Extent=[102:27 - 102:31]
-// CHECK: 102:27: UnexposedExpr=StringRef:48:3 Extent=[102:27 - 102:31]
-// CHECK: 102:27: CallExpr=StringRef:48:3 Extent=[102:27 - 102:31]
-// CHECK: 102:27: UnexposedExpr= Extent=[102:27 - 102:31]
-// CHECK: 102:27: StringLiteral= Extent=[102:27 - 102:31]
-// CHECK: 102:36: CallExpr=endswith:56:8 Extent=[102:36 - 102:59]
-// CHECK: 102:45: MemberRefExpr=endswith:56:8 SingleRefName=[102:45 - 102:53] RefName=[102:45 - 102:53] Extent=[102:36 - 102:53]
-// CHECK: 102:36: UnexposedExpr=AttrName:101:19 Extent=[102:36 - 102:44]
-// CHECK: 102:36: DeclRefExpr=AttrName:101:19 Extent=[102:36 - 102:44]
-// CHECK: 102:54: CallExpr= Extent=[102:54 - 102:58]
-// CHECK: 102:54: UnexposedExpr=StringRef:48:3 Extent=[102:54 - 102:58]
-// CHECK: 102:54: UnexposedExpr=StringRef:48:3 Extent=[102:54 - 102:58]
-// CHECK: 102:54: CallExpr=StringRef:48:3 Extent=[102:54 - 102:58]
-// CHECK: 102:54: UnexposedExpr= Extent=[102:54 - 102:58]
-// CHECK: 102:54: StringLiteral= Extent=[102:54 - 102:58]
-// CHECK: 103:5: CallExpr=operator=:38:7 Extent=[103:5 - 103:55]
-// CHECK: 103:5: DeclRefExpr=AttrName:101:19 Extent=[103:5 - 103:13]
-// CHECK: 103:14: UnexposedExpr=operator=:38:7
-// CHECK: 103:14: DeclRefExpr=operator=:38:7
-// CHECK: 103:16: UnexposedExpr=substr:60:13 Extent=[103:16 - 103:55]
-// CHECK: 103:16: CallExpr=substr:60:13 Extent=[103:16 - 103:55]
-// CHECK: 103:25: MemberRefExpr=substr:60:13 SingleRefName=[103:25 - 103:31] RefName=[103:25 - 103:31] Extent=[103:16 - 103:31]
-// CHECK: 103:16: UnexposedExpr=AttrName:101:19 Extent=[103:16 - 103:24]
-// CHECK: 103:16: DeclRefExpr=AttrName:101:19 Extent=[103:16 - 103:24]
-// CHECK: 103:32: UnexposedExpr= Extent=[103:32 - 103:33]
-// CHECK: 103:32: IntegerLiteral= Extent=[103:32 - 103:33]
-// CHECK: 103:35: BinaryOperator= Extent=[103:35 - 103:54]
-// CHECK: 103:35: CallExpr=size:51:10 Extent=[103:35 - 103:50]
-// CHECK: 103:44: MemberRefExpr=size:51:10 SingleRefName=[103:44 - 103:48] RefName=[103:44 - 103:48] Extent=[103:35 - 103:48]
-// CHECK: 103:35: UnexposedExpr=AttrName:101:19 Extent=[103:35 - 103:43]
-// CHECK: 103:35: DeclRefExpr=AttrName:101:19 Extent=[103:35 - 103:43]
-// CHECK: 103:53: UnexposedExpr= Extent=[103:53 - 103:54]
-// CHECK: 103:53: IntegerLiteral= Extent=[103:53 - 103:54]
-// CHECK: 105:3: ReturnStmt= Extent=[105:3 - 185:31]
-// CHECK: 105:10: CallExpr=Default:92:5 Extent=[105:10 - 185:31]
-// CHECK: 185:6: MemberRefExpr=Default:92:5 SingleRefName=[185:6 - 185:13] RefName=[185:6 - 185:13] Extent=[105:10 - 185:13]
-// CHECK: 105:10: UnexposedExpr=Case:88:42 Extent=[105:10 - 184:33]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 184:33]
-// CHECK: 184:6: MemberRefExpr=Case:88:42 SingleRefName=[184:6 - 184:10] RefName=[184:6 - 184:10] Extent=[105:10 - 184:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 183:37]
-// CHECK: 183:6: MemberRefExpr=Case:88:42 SingleRefName=[183:6 - 183:10] RefName=[183:6 - 183:10] Extent=[105:10 - 183:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 182:37]
-// CHECK: 182:6: MemberRefExpr=Case:88:42 SingleRefName=[182:6 - 182:10] RefName=[182:6 - 182:10] Extent=[105:10 - 182:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 181:35]
-// CHECK: 181:6: MemberRefExpr=Case:88:42 SingleRefName=[181:6 - 181:10] RefName=[181:6 - 181:10] Extent=[105:10 - 181:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 180:31]
-// CHECK: 180:6: MemberRefExpr=Case:88:42 SingleRefName=[180:6 - 180:10] RefName=[180:6 - 180:10] Extent=[105:10 - 180:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 179:31]
-// CHECK: 179:6: MemberRefExpr=Case:88:42 SingleRefName=[179:6 - 179:10] RefName=[179:6 - 179:10] Extent=[105:10 - 179:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 178:35]
-// CHECK: 178:6: MemberRefExpr=Case:88:42 SingleRefName=[178:6 - 178:10] RefName=[178:6 - 178:10] Extent=[105:10 - 178:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 177:63]
-// CHECK: 177:6: MemberRefExpr=Case:88:42 SingleRefName=[177:6 - 177:10] RefName=[177:6 - 177:10] Extent=[105:10 - 177:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 176:45]
-// CHECK: 176:6: MemberRefExpr=Case:88:42 SingleRefName=[176:6 - 176:10] RefName=[176:6 - 176:10] Extent=[105:10 - 176:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 175:51]
-// CHECK: 175:6: MemberRefExpr=Case:88:42 SingleRefName=[175:6 - 175:10] RefName=[175:6 - 175:10] Extent=[105:10 - 175:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 174:49]
-// CHECK: 174:6: MemberRefExpr=Case:88:42 SingleRefName=[174:6 - 174:10] RefName=[174:6 - 174:10] Extent=[105:10 - 174:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 173:49]
-// CHECK: 173:6: MemberRefExpr=Case:88:42 SingleRefName=[173:6 - 173:10] RefName=[173:6 - 173:10] Extent=[105:10 - 173:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 172:53]
-// CHECK: 172:6: MemberRefExpr=Case:88:42 SingleRefName=[172:6 - 172:10] RefName=[172:6 - 172:10] Extent=[105:10 - 172:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 171:57]
-// CHECK: 171:6: MemberRefExpr=Case:88:42 SingleRefName=[171:6 - 171:10] RefName=[171:6 - 171:10] Extent=[105:10 - 171:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 170:65]
-// CHECK: 170:6: MemberRefExpr=Case:88:42 SingleRefName=[170:6 - 170:10] RefName=[170:6 - 170:10] Extent=[105:10 - 170:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 169:57]
-// CHECK: 169:6: MemberRefExpr=Case:88:42 SingleRefName=[169:6 - 169:10] RefName=[169:6 - 169:10] Extent=[105:10 - 169:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 168:65]
-// CHECK: 168:6: MemberRefExpr=Case:88:42 SingleRefName=[168:6 - 168:10] RefName=[168:6 - 168:10] Extent=[105:10 - 168:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 167:55]
-// CHECK: 167:6: MemberRefExpr=Case:88:42 SingleRefName=[167:6 - 167:10] RefName=[167:6 - 167:10] Extent=[105:10 - 167:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 166:55]
-// CHECK: 166:6: MemberRefExpr=Case:88:42 SingleRefName=[166:6 - 166:10] RefName=[166:6 - 166:10] Extent=[105:10 - 166:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 165:53]
-// CHECK: 165:6: MemberRefExpr=Case:88:42 SingleRefName=[165:6 - 165:10] RefName=[165:6 - 165:10] Extent=[105:10 - 165:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 164:53]
-// CHECK: 164:6: MemberRefExpr=Case:88:42 SingleRefName=[164:6 - 164:10] RefName=[164:6 - 164:10] Extent=[105:10 - 164:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 163:49]
-// CHECK: 163:6: MemberRefExpr=Case:88:42 SingleRefName=[163:6 - 163:10] RefName=[163:6 - 163:10] Extent=[105:10 - 163:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 162:47]
-// CHECK: 162:6: MemberRefExpr=Case:88:42 SingleRefName=[162:6 - 162:10] RefName=[162:6 - 162:10] Extent=[105:10 - 162:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 161:45]
-// CHECK: 161:6: MemberRefExpr=Case:88:42 SingleRefName=[161:6 - 161:10] RefName=[161:6 - 161:10] Extent=[105:10 - 161:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 160:45]
-// CHECK: 160:6: MemberRefExpr=Case:88:42 SingleRefName=[160:6 - 160:10] RefName=[160:6 - 160:10] Extent=[105:10 - 160:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 159:45]
-// CHECK: 159:6: MemberRefExpr=Case:88:42 SingleRefName=[159:6 - 159:10] RefName=[159:6 - 159:10] Extent=[105:10 - 159:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 158:45]
-// CHECK: 158:6: MemberRefExpr=Case:88:42 SingleRefName=[158:6 - 158:10] RefName=[158:6 - 158:10] Extent=[105:10 - 158:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 157:43]
-// CHECK: 157:6: MemberRefExpr=Case:88:42 SingleRefName=[157:6 - 157:10] RefName=[157:6 - 157:10] Extent=[105:10 - 157:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 156:41]
-// CHECK: 156:6: MemberRefExpr=Case:88:42 SingleRefName=[156:6 - 156:10] RefName=[156:6 - 156:10] Extent=[105:10 - 156:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 155:41]
-// CHECK: 155:6: MemberRefExpr=Case:88:42 SingleRefName=[155:6 - 155:10] RefName=[155:6 - 155:10] Extent=[105:10 - 155:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 154:41]
-// CHECK: 154:6: MemberRefExpr=Case:88:42 SingleRefName=[154:6 - 154:10] RefName=[154:6 - 154:10] Extent=[105:10 - 154:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 153:37]
-// CHECK: 153:6: MemberRefExpr=Case:88:42 SingleRefName=[153:6 - 153:10] RefName=[153:6 - 153:10] Extent=[105:10 - 153:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 152:41]
-// CHECK: 152:6: MemberRefExpr=Case:88:42 SingleRefName=[152:6 - 152:10] RefName=[152:6 - 152:10] Extent=[105:10 - 152:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 151:39]
-// CHECK: 151:6: MemberRefExpr=Case:88:42 SingleRefName=[151:6 - 151:10] RefName=[151:6 - 151:10] Extent=[105:10 - 151:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 150:39]
-// CHECK: 150:6: MemberRefExpr=Case:88:42 SingleRefName=[150:6 - 150:10] RefName=[150:6 - 150:10] Extent=[105:10 - 150:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 149:39]
-// CHECK: 149:6: MemberRefExpr=Case:88:42 SingleRefName=[149:6 - 149:10] RefName=[149:6 - 149:10] Extent=[105:10 - 149:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 148:39]
-// CHECK: 148:6: MemberRefExpr=Case:88:42 SingleRefName=[148:6 - 148:10] RefName=[148:6 - 148:10] Extent=[105:10 - 148:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 147:39]
-// CHECK: 147:6: MemberRefExpr=Case:88:42 SingleRefName=[147:6 - 147:10] RefName=[147:6 - 147:10] Extent=[105:10 - 147:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 146:39]
-// CHECK: 146:6: MemberRefExpr=Case:88:42 SingleRefName=[146:6 - 146:10] RefName=[146:6 - 146:10] Extent=[105:10 - 146:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 145:41]
-// CHECK: 145:6: MemberRefExpr=Case:88:42 SingleRefName=[145:6 - 145:10] RefName=[145:6 - 145:10] Extent=[105:10 - 145:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 144:37]
-// CHECK: 144:6: MemberRefExpr=Case:88:42 SingleRefName=[144:6 - 144:10] RefName=[144:6 - 144:10] Extent=[105:10 - 144:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 143:37]
-// CHECK: 143:6: MemberRefExpr=Case:88:42 SingleRefName=[143:6 - 143:10] RefName=[143:6 - 143:10] Extent=[105:10 - 143:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 142:35]
-// CHECK: 142:6: MemberRefExpr=Case:88:42 SingleRefName=[142:6 - 142:10] RefName=[142:6 - 142:10] Extent=[105:10 - 142:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 141:35]
-// CHECK: 141:6: MemberRefExpr=Case:88:42 SingleRefName=[141:6 - 141:10] RefName=[141:6 - 141:10] Extent=[105:10 - 141:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 140:35]
-// CHECK: 140:6: MemberRefExpr=Case:88:42 SingleRefName=[140:6 - 140:10] RefName=[140:6 - 140:10] Extent=[105:10 - 140:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 139:35]
-// CHECK: 139:6: MemberRefExpr=Case:88:42 SingleRefName=[139:6 - 139:10] RefName=[139:6 - 139:10] Extent=[105:10 - 139:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 138:35]
-// CHECK: 138:6: MemberRefExpr=Case:88:42 SingleRefName=[138:6 - 138:10] RefName=[138:6 - 138:10] Extent=[105:10 - 138:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 137:55]
-// CHECK: 137:6: MemberRefExpr=Case:88:42 SingleRefName=[137:6 - 137:10] RefName=[137:6 - 137:10] Extent=[105:10 - 137:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 136:35]
-// CHECK: 136:6: MemberRefExpr=Case:88:42 SingleRefName=[136:6 - 136:10] RefName=[136:6 - 136:10] Extent=[105:10 - 136:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 135:35]
-// CHECK: 135:6: MemberRefExpr=Case:88:42 SingleRefName=[135:6 - 135:10] RefName=[135:6 - 135:10] Extent=[105:10 - 135:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 134:35]
-// CHECK: 134:6: MemberRefExpr=Case:88:42 SingleRefName=[134:6 - 134:10] RefName=[134:6 - 134:10] Extent=[105:10 - 134:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 133:35]
-// CHECK: 133:6: MemberRefExpr=Case:88:42 SingleRefName=[133:6 - 133:10] RefName=[133:6 - 133:10] Extent=[105:10 - 133:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 132:33]
-// CHECK: 132:6: MemberRefExpr=Case:88:42 SingleRefName=[132:6 - 132:10] RefName=[132:6 - 132:10] Extent=[105:10 - 132:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 131:33]
-// CHECK: 131:6: MemberRefExpr=Case:88:42 SingleRefName=[131:6 - 131:10] RefName=[131:6 - 131:10] Extent=[105:10 - 131:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 130:33]
-// CHECK: 130:6: MemberRefExpr=Case:88:42 SingleRefName=[130:6 - 130:10] RefName=[130:6 - 130:10] Extent=[105:10 - 130:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 129:33]
-// CHECK: 129:6: MemberRefExpr=Case:88:42 SingleRefName=[129:6 - 129:10] RefName=[129:6 - 129:10] Extent=[105:10 - 129:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 128:33]
-// CHECK: 128:6: MemberRefExpr=Case:88:42 SingleRefName=[128:6 - 128:10] RefName=[128:6 - 128:10] Extent=[105:10 - 128:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 127:33]
-// CHECK: 127:6: MemberRefExpr=Case:88:42 SingleRefName=[127:6 - 127:10] RefName=[127:6 - 127:10] Extent=[105:10 - 127:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 126:33]
-// CHECK: 126:6: MemberRefExpr=Case:88:42 SingleRefName=[126:6 - 126:10] RefName=[126:6 - 126:10] Extent=[105:10 - 126:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 125:29]
-// CHECK: 125:6: MemberRefExpr=Case:88:42 SingleRefName=[125:6 - 125:10] RefName=[125:6 - 125:10] Extent=[105:10 - 125:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 124:33]
-// CHECK: 124:6: MemberRefExpr=Case:88:42 SingleRefName=[124:6 - 124:10] RefName=[124:6 - 124:10] Extent=[105:10 - 124:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 123:33]
-// CHECK: 123:6: MemberRefExpr=Case:88:42 SingleRefName=[123:6 - 123:10] RefName=[123:6 - 123:10] Extent=[105:10 - 123:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 122:31]
-// CHECK: 122:6: MemberRefExpr=Case:88:42 SingleRefName=[122:6 - 122:10] RefName=[122:6 - 122:10] Extent=[105:10 - 122:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 121:31]
-// CHECK: 121:6: MemberRefExpr=Case:88:42 SingleRefName=[121:6 - 121:10] RefName=[121:6 - 121:10] Extent=[105:10 - 121:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 120:31]
-// CHECK: 120:6: MemberRefExpr=Case:88:42 SingleRefName=[120:6 - 120:10] RefName=[120:6 - 120:10] Extent=[105:10 - 120:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 119:31]
-// CHECK: 119:6: MemberRefExpr=Case:88:42 SingleRefName=[119:6 - 119:10] RefName=[119:6 - 119:10] Extent=[105:10 - 119:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 118:31]
-// CHECK: 118:6: MemberRefExpr=Case:88:42 SingleRefName=[118:6 - 118:10] RefName=[118:6 - 118:10] Extent=[105:10 - 118:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 117:31]
-// CHECK: 117:6: MemberRefExpr=Case:88:42 SingleRefName=[117:6 - 117:10] RefName=[117:6 - 117:10] Extent=[105:10 - 117:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 116:31]
-// CHECK: 116:6: MemberRefExpr=Case:88:42 SingleRefName=[116:6 - 116:10] RefName=[116:6 - 116:10] Extent=[105:10 - 116:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 115:29]
-// CHECK: 115:6: MemberRefExpr=Case:88:42 SingleRefName=[115:6 - 115:10] RefName=[115:6 - 115:10] Extent=[105:10 - 115:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 114:29]
-// CHECK: 114:6: MemberRefExpr=Case:88:42 SingleRefName=[114:6 - 114:10] RefName=[114:6 - 114:10] Extent=[105:10 - 114:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 113:29]
-// CHECK: 113:6: MemberRefExpr=Case:88:42 SingleRefName=[113:6 - 113:10] RefName=[113:6 - 113:10] Extent=[105:10 - 113:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 112:31]
-// CHECK: 112:6: MemberRefExpr=Case:88:42 SingleRefName=[112:6 - 112:10] RefName=[112:6 - 112:10] Extent=[105:10 - 112:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 111:29]
-// CHECK: 111:6: MemberRefExpr=Case:88:42 SingleRefName=[111:6 - 111:10] RefName=[111:6 - 111:10] Extent=[105:10 - 111:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 110:27]
-// CHECK: 110:6: MemberRefExpr=Case:88:42 SingleRefName=[110:6 - 110:10] RefName=[110:6 - 110:10] Extent=[105:10 - 110:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 109:27]
-// CHECK: 109:6: MemberRefExpr=Case:88:42 SingleRefName=[109:6 - 109:10] RefName=[109:6 - 109:10] Extent=[105:10 - 109:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 108:27]
-// CHECK: 108:6: MemberRefExpr=Case:88:42 SingleRefName=[108:6 - 108:10] RefName=[108:6 - 108:10] Extent=[105:10 - 108:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 107:33]
-// CHECK: 107:6: MemberRefExpr=Case:88:42 SingleRefName=[107:6 - 107:10] RefName=[107:6 - 107:10] Extent=[105:10 - 107:10]
-// CHECK: 105:10: CallExpr=Case:88:42 Extent=[105:10 - 106:27]
-// CHECK: 106:6: MemberRefExpr=Case:88:42 SingleRefName=[106:6 - 106:10] RefName=[106:6 - 106:10] Extent=[105:10 - 106:10]
-// CHECK: 105:10: CXXFunctionalCastExpr= Extent=[105:10 - 105:63]
-// CHECK: 105:16: TemplateRef=StringSwitch:83:47 Extent=[105:16 - 105:28]
-// CHECK: 105:10: CallExpr=StringSwitch:87:12 Extent=[105:10 - 105:63]
-// CHECK: 105:54: CallExpr=StringRef:38:7 Extent=[105:54 - 105:62]
-// CHECK: 105:54: UnexposedExpr=AttrName:101:19 Extent=[105:54 - 105:62]
-// CHECK: 105:54: DeclRefExpr=AttrName:101:19 Extent=[105:54 - 105:62]
-// CHECK: 106:11: StringLiteral= Extent=[106:11 - 106:17]
-// CHECK: 106:19: DeclRefExpr=AT_weak:29:45 Extent=[106:19 - 106:26]
-// CHECK: 107:11: StringLiteral= Extent=[107:11 - 107:20]
-// CHECK: 107:22: DeclRefExpr=AT_weakref:29:54 Extent=[107:22 - 107:32]
-// CHECK: 108:11: StringLiteral= Extent=[108:11 - 108:17]
-// CHECK: 108:19: DeclRefExpr=AT_pure:26:49 Extent=[108:19 - 108:26]
-// CHECK: 109:11: StringLiteral= Extent=[109:11 - 109:17]
-// CHECK: 109:19: DeclRefExpr=AT_mode:20:44 Extent=[109:19 - 109:26]
-// CHECK: 110:11: StringLiteral= Extent=[110:11 - 110:17]
-// CHECK: 110:19: DeclRefExpr=AT_used:28:34 Extent=[110:19 - 110:26]
-// CHECK: 111:11: StringLiteral= Extent=[111:11 - 111:18]
-// CHECK: 111:20: DeclRefExpr=AT_alias:15:25 Extent=[111:20 - 111:28]
-// CHECK: 112:11: StringLiteral= Extent=[112:11 - 112:18]
-// CHECK: 112:20: DeclRefExpr=AT_aligned:15:35 Extent=[112:20 - 112:30]
-// CHECK: 113:11: StringLiteral= Extent=[113:11 - 113:18]
-// CHECK: 113:20: DeclRefExpr=AT_final:19:40 Extent=[113:20 - 113:28]
-// CHECK: 114:11: StringLiteral= Extent=[114:11 - 114:18]
-// CHECK: 114:20: DeclRefExpr=AT_cdecl:17:30 Extent=[114:20 - 114:28]
-// CHECK: 115:11: StringLiteral= Extent=[115:11 - 115:18]
-// CHECK: 115:20: DeclRefExpr=AT_const:17:52 Extent=[115:20 - 115:28]
-// CHECK: 116:11: StringLiteral= Extent=[116:11 - 116:20]
-// CHECK: 116:22: DeclRefExpr=AT_const:17:52 Extent=[116:22 - 116:30]
-// CHECK: 117:11: StringLiteral= Extent=[117:11 - 117:19]
-// CHECK: 117:21: DeclRefExpr=AT_blocks:16:57 Extent=[117:21 - 117:30]
-// CHECK: 118:11: StringLiteral= Extent=[118:11 - 118:19]
-// CHECK: 118:21: DeclRefExpr=AT_format:19:50 Extent=[118:21 - 118:30]
-// CHECK: 119:11: StringLiteral= Extent=[119:11 - 119:19]
-// CHECK: 119:21: DeclRefExpr=AT_hiding:20:22 Extent=[119:21 - 119:30]
-// CHECK: 120:11: StringLiteral= Extent=[120:11 - 120:19]
-// CHECK: 120:21: DeclRefExpr=AT_malloc:20:33 Extent=[120:21 - 120:30]
-// CHECK: 121:11: StringLiteral= Extent=[121:11 - 121:19]
-// CHECK: 121:21: DeclRefExpr=AT_packed:26:27 Extent=[121:21 - 121:30]
-// CHECK: 122:11: StringLiteral= Extent=[122:11 - 122:19]
-// CHECK: 122:21: DeclRefExpr=AT_unused:28:23 Extent=[122:21 - 122:30]
-// CHECK: 123:11: StringLiteral= Extent=[123:11 - 123:20]
-// CHECK: 123:22: DeclRefExpr=AT_aligned:15:35 Extent=[123:22 - 123:32]
-// CHECK: 124:11: StringLiteral= Extent=[124:11 - 124:20]
-// CHECK: 124:22: DeclRefExpr=AT_cleanup:17:40 Extent=[124:22 - 124:32]
-// CHECK: 125:11: StringLiteral= Extent=[125:11 - 125:18]
-// CHECK: 125:20: DeclRefExpr=AT_naked:20:53 Extent=[125:20 - 125:28]
-// CHECK: 126:11: StringLiteral= Extent=[126:11 - 126:20]
-// CHECK: 126:22: DeclRefExpr=AT_nodebug:20:63 Extent=[126:22 - 126:32]
-// CHECK: 127:11: StringLiteral= Extent=[127:11 - 127:20]
-// CHECK: 127:22: DeclRefExpr=AT_nonnull:21:47 Extent=[127:22 - 127:32]
-// CHECK: 128:11: StringLiteral= Extent=[128:11 - 128:20]
-// CHECK: 128:22: DeclRefExpr=AT_nothrow:22:7 Extent=[128:22 - 128:32]
-// CHECK: 129:11: StringLiteral= Extent=[129:11 - 129:20]
-// CHECK: 129:22: DeclRefExpr=AT_objc_gc:24:59 Extent=[129:22 - 129:32]
-// CHECK: 130:11: StringLiteral= Extent=[130:11 - 130:20]
-// CHECK: 130:22: DeclRefExpr=AT_regparm:26:58 Extent=[130:22 - 130:32]
-// CHECK: 131:11: StringLiteral= Extent=[131:11 - 131:20]
-// CHECK: 131:22: DeclRefExpr=AT_section:27:7 Extent=[131:22 - 131:32]
-// CHECK: 132:11: StringLiteral= Extent=[132:11 - 132:20]
-// CHECK: 132:22: DeclRefExpr=AT_stdcall:27:32 Extent=[132:22 - 132:32]
-// CHECK: 133:11: StringLiteral= Extent=[133:11 - 133:21]
-// CHECK: 133:23: DeclRefExpr=AT_annotate:16:29 Extent=[133:23 - 133:34]
-// CHECK: 134:11: StringLiteral= Extent=[134:11 - 134:21]
-// CHECK: 134:23: DeclRefExpr=AT_fastcall:19:27 Extent=[134:23 - 134:34]
-// CHECK: 135:11: StringLiteral= Extent=[135:11 - 135:21]
-// CHECK: 135:23: DeclRefExpr=AT_IBAction:14:7 Extent=[135:23 - 135:34]
-// CHECK: 136:11: StringLiteral= Extent=[136:11 - 136:21]
-// CHECK: 136:23: DeclRefExpr=AT_IBOutlet:14:20 Extent=[136:23 - 136:34]
-// CHECK: 137:11: StringLiteral= Extent=[137:11 - 137:31]
-// CHECK: 137:33: DeclRefExpr=AT_IBOutletCollection:14:33 Extent=[137:33 - 137:54]
-// CHECK: 138:11: StringLiteral= Extent=[138:11 - 138:21]
-// CHECK: 138:23: DeclRefExpr=AT_noreturn:21:59 Extent=[138:23 - 138:34]
-// CHECK: 139:11: StringLiteral= Extent=[139:11 - 139:21]
-// CHECK: 139:23: DeclRefExpr=AT_noinline:21:7 Extent=[139:23 - 139:34]
-// CHECK: 140:11: StringLiteral= Extent=[140:11 - 140:21]
-// CHECK: 140:23: DeclRefExpr=AT_override:22:51 Extent=[140:23 - 140:34]
-// CHECK: 141:11: StringLiteral= Extent=[141:11 - 141:21]
-// CHECK: 141:23: DeclRefExpr=AT_sentinel:27:19 Extent=[141:23 - 141:34]
-// CHECK: 142:11: StringLiteral= Extent=[142:11 - 142:21]
-// CHECK: 142:23: DeclRefExpr=AT_nsobject:22:19 Extent=[142:23 - 142:34]
-// CHECK: 143:11: StringLiteral= Extent=[143:11 - 143:22]
-// CHECK: 143:24: DeclRefExpr=AT_dllimport:18:51 Extent=[143:24 - 143:36]
-// CHECK: 144:11: StringLiteral= Extent=[144:11 - 144:22]
-// CHECK: 144:24: DeclRefExpr=AT_dllexport:18:37 Extent=[144:24 - 144:36]
-// CHECK: 145:11: StringLiteral= Extent=[145:11 - 145:22]
-// CHECK: 146:11: StringLiteral= Extent=[146:11 - 146:23]
-// CHECK: 146:25: DeclRefExpr=AT_base_check:16:42 Extent=[146:25 - 146:38]
-// CHECK: 147:11: StringLiteral= Extent=[147:11 - 147:23]
-// CHECK: 147:25: DeclRefExpr=AT_deprecated:18:7 Extent=[147:25 - 147:38]
-// CHECK: 148:11: StringLiteral= Extent=[148:11 - 148:23]
-// CHECK: 148:25: DeclRefExpr=AT_visibility:29:7 Extent=[148:25 - 148:38]
-// CHECK: 149:11: StringLiteral= Extent=[149:11 - 149:23]
-// CHECK: 149:25: DeclRefExpr=AT_destructor:18:22 Extent=[149:25 - 149:38]
-// CHECK: 150:11: StringLiteral= Extent=[150:11 - 150:23]
-// CHECK: 150:25: DeclRefExpr=AT_format_arg:19:61 Extent=[150:25 - 150:38]
-// CHECK: 151:11: StringLiteral= Extent=[151:11 - 151:23]
-// CHECK: 151:25: DeclRefExpr=AT_gnu_inline:20:7 Extent=[151:25 - 151:38]
-// CHECK: 152:11: StringLiteral= Extent=[152:11 - 152:24]
-// CHECK: 152:26: DeclRefExpr=AT_weak_import:30:7 Extent=[152:26 - 152:40]
-// CHECK: 153:11: StringLiteral= Extent=[153:11 - 153:22]
-// CHECK: 153:24: DeclRefExpr=AT_vecreturn:28:43 Extent=[153:24 - 153:36]
-// CHECK: 154:11: StringLiteral= Extent=[154:11 - 154:24]
-// CHECK: 154:26: DeclRefExpr=AT_vector_size:28:57 Extent=[154:26 - 154:40]
-// CHECK: 155:11: StringLiteral= Extent=[155:11 - 155:24]
-// CHECK: 155:26: DeclRefExpr=AT_constructor:17:62 Extent=[155:26 - 155:40]
-// CHECK: 156:11: StringLiteral= Extent=[156:11 - 156:24]
-// CHECK: 156:26: DeclRefExpr=AT_unavailable:28:7 Extent=[156:26 - 156:40]
-// CHECK: 157:11: StringLiteral= Extent=[157:11 - 157:25]
-// CHECK: 157:27: DeclRefExpr=AT_overloadable:25:7 Extent=[157:27 - 157:42]
-// CHECK: 158:11: StringLiteral= Extent=[158:11 - 158:26]
-// CHECK: 158:28: DeclRefExpr=AT_address_space:15:7 Extent=[158:28 - 158:44]
-// CHECK: 159:11: StringLiteral= Extent=[159:11 - 159:26]
-// CHECK: 159:28: DeclRefExpr=AT_always_inline:15:47 Extent=[159:28 - 159:44]
-// CHECK: 160:11: StringLiteral= Extent=[160:11 - 160:26]
-// CHECK: 161:11: StringLiteral= Extent=[161:11 - 161:26]
-// CHECK: 162:11: StringLiteral= Extent=[162:11 - 162:27]
-// CHECK: 162:29: DeclRefExpr=AT_objc_exception:22:32 Extent=[162:29 - 162:46]
-// CHECK: 163:11: StringLiteral= Extent=[163:11 - 163:28]
-// CHECK: 163:30: DeclRefExpr=AT_ext_vector_type:19:7 Extent=[163:30 - 163:48]
-// CHECK: 164:11: StringLiteral= Extent=[164:11 - 164:30]
-// CHECK: 164:32: DeclRefExpr=AT_transparent_union:27:57 Extent=[164:32 - 164:52]
-// CHECK: 165:11: StringLiteral= Extent=[165:11 - 165:30]
-// CHECK: 165:32: DeclRefExpr=AT_analyzer_noreturn:16:7 Extent=[165:32 - 165:52]
-// CHECK: 166:11: StringLiteral= Extent=[166:11 - 166:31]
-// CHECK: 166:33: DeclRefExpr=AT_warn_unused_result:29:22 Extent=[166:33 - 166:54]
-// CHECK: 167:11: StringLiteral= Extent=[167:11 - 167:31]
-// CHECK: 167:33: DeclRefExpr=AT_carries_dependency:17:7 Extent=[167:33 - 167:54]
-// CHECK: 168:11: StringLiteral= Extent=[168:11 - 168:36]
-// CHECK: 168:38: DeclRefExpr=AT_ns_returns_not_retained:24:7 Extent=[168:38 - 168:64]
-// CHECK: 169:11: StringLiteral= Extent=[169:11 - 169:32]
-// CHECK: 169:34: DeclRefExpr=AT_ns_returns_retained:24:35 Extent=[169:34 - 169:56]
-// CHECK: 170:11: StringLiteral= Extent=[170:11 - 170:36]
-// CHECK: 170:38: DeclRefExpr=AT_cf_returns_not_retained:23:7 Extent=[170:38 - 170:64]
-// CHECK: 171:11: StringLiteral= Extent=[171:11 - 171:32]
-// CHECK: 171:34: DeclRefExpr=AT_cf_returns_retained:23:35 Extent=[171:34 - 171:56]
-// CHECK: 172:11: StringLiteral= Extent=[172:11 - 172:30]
-// CHECK: 172:32: DeclRefExpr=AT_ownership_returns:25:44 Extent=[172:32 - 172:52]
-// CHECK: 173:11: StringLiteral= Extent=[173:11 - 173:28]
-// CHECK: 173:30: DeclRefExpr=AT_ownership_holds:25:24 Extent=[173:30 - 173:48]
-// CHECK: 174:11: StringLiteral= Extent=[174:11 - 174:28]
-// CHECK: 174:30: DeclRefExpr=AT_ownership_takes:26:7 Extent=[174:30 - 174:48]
-// CHECK: 175:11: StringLiteral= Extent=[175:11 - 175:33]
-// CHECK: 175:35: DeclRefExpr=AT_reqd_wg_size:30:23 Extent=[175:35 - 175:50]
-// CHECK: 176:11: StringLiteral= Extent=[176:11 - 176:26]
-// CHECK: 176:28: DeclRefExpr=AT_init_priority:30:40 Extent=[176:28 - 176:44]
-// CHECK: 177:11: StringLiteral= Extent=[177:11 - 177:35]
-// CHECK: 177:37: DeclRefExpr=AT_no_instrument_function:21:20 Extent=[177:37 - 177:62]
-// CHECK: 178:11: StringLiteral= Extent=[178:11 - 178:21]
-// CHECK: 178:23: DeclRefExpr=AT_thiscall:27:44 Extent=[178:23 - 178:34]
-// CHECK: 179:11: StringLiteral= Extent=[179:11 - 179:19]
-// CHECK: 179:21: DeclRefExpr=AT_pascal:26:38 Extent=[179:21 - 179:30]
-// CHECK: 180:11: StringLiteral= Extent=[180:11 - 180:20]
-// CHECK: 180:22: DeclRefExpr=AT_cdecl:17:30 Extent=[180:22 - 180:30]
-// CHECK: 181:11: StringLiteral= Extent=[181:11 - 181:22]
-// CHECK: 181:24: DeclRefExpr=AT_stdcall:27:32 Extent=[181:24 - 181:34]
-// CHECK: 182:11: StringLiteral= Extent=[182:11 - 182:23]
-// CHECK: 182:25: DeclRefExpr=AT_fastcall:19:27 Extent=[182:25 - 182:36]
-// CHECK: 183:11: StringLiteral= Extent=[183:11 - 183:23]
-// CHECK: 183:25: DeclRefExpr=AT_thiscall:27:44 Extent=[183:25 - 183:36]
-// CHECK: 184:11: StringLiteral= Extent=[184:11 - 184:21]
-// CHECK: 184:23: DeclRefExpr=AT_pascal:26:38 Extent=[184:23 - 184:32]

Modified: trunk/contrib/llvm/tools/clang/test/Index/recursive-member-access.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/recursive-member-access.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/recursive-member-access.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,532 +0,0 @@
-struct rdar8650865 {
-  struct rdar8650865 *first;
-  int x;
-};
-
-int test_rdar8650865(struct rdar8650865 *s) {
-  return ((((((s->first)->first)
-    ->first)
-    ->first)
-    ->first)
-    ->first)
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->first
-    ->x;
-}
-
-// RUN: c-index-test -test-load-source all %s | FileCheck %s
-// CHECK: 1:8: StructDecl=rdar8650865:1:8 (Definition) Extent=[1:1 - 4:2]
-// CHECK: 2:23: FieldDecl=first:2:23 (Definition) Extent=[2:3 - 2:28]
-// CHECK: 2:10: TypeRef=struct rdar8650865:1:8 Extent=[2:10 - 2:21]
-// CHECK: 3:7: FieldDecl=x:3:7 (Definition) Extent=[3:3 - 3:8]
-// CHECK: 6:5: FunctionDecl=test_rdar8650865:6:5 (Definition) Extent=[6:1 - 124:2]
-// CHECK: 6:42: ParmDecl=s:6:42 (Definition) Extent=[6:22 - 6:43]
-// CHECK: 6:29: TypeRef=struct rdar8650865:1:8 Extent=[6:29 - 6:40]
-// CHECK: 6:45: CompoundStmt= Extent=[6:45 - 124:2]
-// CHECK: 7:3: ReturnStmt= Extent=[7:3 - 123:8]
-// CHECK: 123:7: MemberRefExpr=x:3:7 SingleRefName=[123:7 - 123:8] RefName=[123:7 - 123:8] Extent=[7:10 - 123:8]
-// CHECK: 122:7: MemberRefExpr=first:2:23 SingleRefName=[122:7 - 122:12] RefName=[122:7 - 122:12] Extent=[7:10 - 122:12]
-// CHECK: 121:7: MemberRefExpr=first:2:23 SingleRefName=[121:7 - 121:12] RefName=[121:7 - 121:12] Extent=[7:10 - 121:12]
-// CHECK: 120:7: MemberRefExpr=first:2:23 SingleRefName=[120:7 - 120:12] RefName=[120:7 - 120:12] Extent=[7:10 - 120:12]
-// CHECK: 119:7: MemberRefExpr=first:2:23 SingleRefName=[119:7 - 119:12] RefName=[119:7 - 119:12] Extent=[7:10 - 119:12]
-// CHECK: 118:7: MemberRefExpr=first:2:23 SingleRefName=[118:7 - 118:12] RefName=[118:7 - 118:12] Extent=[7:10 - 118:12]
-// CHECK: 117:7: MemberRefExpr=first:2:23 SingleRefName=[117:7 - 117:12] RefName=[117:7 - 117:12] Extent=[7:10 - 117:12]
-// CHECK: 116:7: MemberRefExpr=first:2:23 SingleRefName=[116:7 - 116:12] RefName=[116:7 - 116:12] Extent=[7:10 - 116:12]
-// CHECK: 115:7: MemberRefExpr=first:2:23 SingleRefName=[115:7 - 115:12] RefName=[115:7 - 115:12] Extent=[7:10 - 115:12]
-// CHECK: 114:7: MemberRefExpr=first:2:23 SingleRefName=[114:7 - 114:12] RefName=[114:7 - 114:12] Extent=[7:10 - 114:12]
-// CHECK: 113:7: MemberRefExpr=first:2:23 SingleRefName=[113:7 - 113:12] RefName=[113:7 - 113:12] Extent=[7:10 - 113:12]
-// CHECK: 112:7: MemberRefExpr=first:2:23 SingleRefName=[112:7 - 112:12] RefName=[112:7 - 112:12] Extent=[7:10 - 112:12]
-// CHECK: 111:7: MemberRefExpr=first:2:23 SingleRefName=[111:7 - 111:12] RefName=[111:7 - 111:12] Extent=[7:10 - 111:12]
-// CHECK: 110:7: MemberRefExpr=first:2:23 SingleRefName=[110:7 - 110:12] RefName=[110:7 - 110:12] Extent=[7:10 - 110:12]
-// CHECK: 109:7: MemberRefExpr=first:2:23 SingleRefName=[109:7 - 109:12] RefName=[109:7 - 109:12] Extent=[7:10 - 109:12]
-// CHECK: 108:7: MemberRefExpr=first:2:23 SingleRefName=[108:7 - 108:12] RefName=[108:7 - 108:12] Extent=[7:10 - 108:12]
-// CHECK: 107:7: MemberRefExpr=first:2:23 SingleRefName=[107:7 - 107:12] RefName=[107:7 - 107:12] Extent=[7:10 - 107:12]
-// CHECK: 106:7: MemberRefExpr=first:2:23 SingleRefName=[106:7 - 106:12] RefName=[106:7 - 106:12] Extent=[7:10 - 106:12]
-// CHECK: 105:7: MemberRefExpr=first:2:23 SingleRefName=[105:7 - 105:12] RefName=[105:7 - 105:12] Extent=[7:10 - 105:12]
-// CHECK: 104:7: MemberRefExpr=first:2:23 SingleRefName=[104:7 - 104:12] RefName=[104:7 - 104:12] Extent=[7:10 - 104:12]
-// CHECK: 103:7: MemberRefExpr=first:2:23 SingleRefName=[103:7 - 103:12] RefName=[103:7 - 103:12] Extent=[7:10 - 103:12]
-// CHECK: 102:7: MemberRefExpr=first:2:23 SingleRefName=[102:7 - 102:12] RefName=[102:7 - 102:12] Extent=[7:10 - 102:12]
-// CHECK: 101:7: MemberRefExpr=first:2:23 SingleRefName=[101:7 - 101:12] RefName=[101:7 - 101:12] Extent=[7:10 - 101:12]
-// CHECK: 100:7: MemberRefExpr=first:2:23 SingleRefName=[100:7 - 100:12] RefName=[100:7 - 100:12] Extent=[7:10 - 100:12]
-// CHECK: 99:7: MemberRefExpr=first:2:23 SingleRefName=[99:7 - 99:12] RefName=[99:7 - 99:12] Extent=[7:10 - 99:12]
-// CHECK: 98:7: MemberRefExpr=first:2:23 SingleRefName=[98:7 - 98:12] RefName=[98:7 - 98:12] Extent=[7:10 - 98:12]
-// CHECK: 97:7: MemberRefExpr=first:2:23 SingleRefName=[97:7 - 97:12] RefName=[97:7 - 97:12] Extent=[7:10 - 97:12]
-// CHECK: 96:7: MemberRefExpr=first:2:23 SingleRefName=[96:7 - 96:12] RefName=[96:7 - 96:12] Extent=[7:10 - 96:12]
-// CHECK: 95:7: MemberRefExpr=first:2:23 SingleRefName=[95:7 - 95:12] RefName=[95:7 - 95:12] Extent=[7:10 - 95:12]
-// CHECK: 94:7: MemberRefExpr=first:2:23 SingleRefName=[94:7 - 94:12] RefName=[94:7 - 94:12] Extent=[7:10 - 94:12]
-// CHECK: 93:7: MemberRefExpr=first:2:23 SingleRefName=[93:7 - 93:12] RefName=[93:7 - 93:12] Extent=[7:10 - 93:12]
-// CHECK: 92:7: MemberRefExpr=first:2:23 SingleRefName=[92:7 - 92:12] RefName=[92:7 - 92:12] Extent=[7:10 - 92:12]
-// CHECK: 91:7: MemberRefExpr=first:2:23 SingleRefName=[91:7 - 91:12] RefName=[91:7 - 91:12] Extent=[7:10 - 91:12]
-// CHECK: 90:7: MemberRefExpr=first:2:23 SingleRefName=[90:7 - 90:12] RefName=[90:7 - 90:12] Extent=[7:10 - 90:12]
-// CHECK: 89:7: MemberRefExpr=first:2:23 SingleRefName=[89:7 - 89:12] RefName=[89:7 - 89:12] Extent=[7:10 - 89:12]
-// CHECK: 88:7: MemberRefExpr=first:2:23 SingleRefName=[88:7 - 88:12] RefName=[88:7 - 88:12] Extent=[7:10 - 88:12]
-// CHECK: 87:7: MemberRefExpr=first:2:23 SingleRefName=[87:7 - 87:12] RefName=[87:7 - 87:12] Extent=[7:10 - 87:12]
-// CHECK: 86:7: MemberRefExpr=first:2:23 SingleRefName=[86:7 - 86:12] RefName=[86:7 - 86:12] Extent=[7:10 - 86:12]
-// CHECK: 85:7: MemberRefExpr=first:2:23 SingleRefName=[85:7 - 85:12] RefName=[85:7 - 85:12] Extent=[7:10 - 85:12]
-// CHECK: 84:7: MemberRefExpr=first:2:23 SingleRefName=[84:7 - 84:12] RefName=[84:7 - 84:12] Extent=[7:10 - 84:12]
-// CHECK: 83:7: MemberRefExpr=first:2:23 SingleRefName=[83:7 - 83:12] RefName=[83:7 - 83:12] Extent=[7:10 - 83:12]
-// CHECK: 82:7: MemberRefExpr=first:2:23 SingleRefName=[82:7 - 82:12] RefName=[82:7 - 82:12] Extent=[7:10 - 82:12]
-// CHECK: 81:7: MemberRefExpr=first:2:23 SingleRefName=[81:7 - 81:12] RefName=[81:7 - 81:12] Extent=[7:10 - 81:12]
-// CHECK: 80:7: MemberRefExpr=first:2:23 SingleRefName=[80:7 - 80:12] RefName=[80:7 - 80:12] Extent=[7:10 - 80:12]
-// CHECK: 79:7: MemberRefExpr=first:2:23 SingleRefName=[79:7 - 79:12] RefName=[79:7 - 79:12] Extent=[7:10 - 79:12]
-// CHECK: 78:7: MemberRefExpr=first:2:23 SingleRefName=[78:7 - 78:12] RefName=[78:7 - 78:12] Extent=[7:10 - 78:12]
-// CHECK: 77:7: MemberRefExpr=first:2:23 SingleRefName=[77:7 - 77:12] RefName=[77:7 - 77:12] Extent=[7:10 - 77:12]
-// CHECK: 76:7: MemberRefExpr=first:2:23 SingleRefName=[76:7 - 76:12] RefName=[76:7 - 76:12] Extent=[7:10 - 76:12]
-// CHECK: 75:7: MemberRefExpr=first:2:23 SingleRefName=[75:7 - 75:12] RefName=[75:7 - 75:12] Extent=[7:10 - 75:12]
-// CHECK: 74:7: MemberRefExpr=first:2:23 SingleRefName=[74:7 - 74:12] RefName=[74:7 - 74:12] Extent=[7:10 - 74:12]
-// CHECK: 73:7: MemberRefExpr=first:2:23 SingleRefName=[73:7 - 73:12] RefName=[73:7 - 73:12] Extent=[7:10 - 73:12]
-// CHECK: 72:7: MemberRefExpr=first:2:23 SingleRefName=[72:7 - 72:12] RefName=[72:7 - 72:12] Extent=[7:10 - 72:12]
-// CHECK: 71:7: MemberRefExpr=first:2:23 SingleRefName=[71:7 - 71:12] RefName=[71:7 - 71:12] Extent=[7:10 - 71:12]
-// CHECK: 70:7: MemberRefExpr=first:2:23 SingleRefName=[70:7 - 70:12] RefName=[70:7 - 70:12] Extent=[7:10 - 70:12]
-// CHECK: 69:7: MemberRefExpr=first:2:23 SingleRefName=[69:7 - 69:12] RefName=[69:7 - 69:12] Extent=[7:10 - 69:12]
-// CHECK: 68:7: MemberRefExpr=first:2:23 SingleRefName=[68:7 - 68:12] RefName=[68:7 - 68:12] Extent=[7:10 - 68:12]
-// CHECK: 67:7: MemberRefExpr=first:2:23 SingleRefName=[67:7 - 67:12] RefName=[67:7 - 67:12] Extent=[7:10 - 67:12]
-// CHECK: 66:7: MemberRefExpr=first:2:23 SingleRefName=[66:7 - 66:12] RefName=[66:7 - 66:12] Extent=[7:10 - 66:12]
-// CHECK: 65:7: MemberRefExpr=first:2:23 SingleRefName=[65:7 - 65:12] RefName=[65:7 - 65:12] Extent=[7:10 - 65:12]
-// CHECK: 64:7: MemberRefExpr=first:2:23 SingleRefName=[64:7 - 64:12] RefName=[64:7 - 64:12] Extent=[7:10 - 64:12]
-// CHECK: 63:7: MemberRefExpr=first:2:23 SingleRefName=[63:7 - 63:12] RefName=[63:7 - 63:12] Extent=[7:10 - 63:12]
-// CHECK: 62:7: MemberRefExpr=first:2:23 SingleRefName=[62:7 - 62:12] RefName=[62:7 - 62:12] Extent=[7:10 - 62:12]
-// CHECK: 61:7: MemberRefExpr=first:2:23 SingleRefName=[61:7 - 61:12] RefName=[61:7 - 61:12] Extent=[7:10 - 61:12]
-// CHECK: 60:7: MemberRefExpr=first:2:23 SingleRefName=[60:7 - 60:12] RefName=[60:7 - 60:12] Extent=[7:10 - 60:12]
-// CHECK: 59:7: MemberRefExpr=first:2:23 SingleRefName=[59:7 - 59:12] RefName=[59:7 - 59:12] Extent=[7:10 - 59:12]
-// CHECK: 58:7: MemberRefExpr=first:2:23 SingleRefName=[58:7 - 58:12] RefName=[58:7 - 58:12] Extent=[7:10 - 58:12]
-// CHECK: 57:7: MemberRefExpr=first:2:23 SingleRefName=[57:7 - 57:12] RefName=[57:7 - 57:12] Extent=[7:10 - 57:12]
-// CHECK: 56:7: MemberRefExpr=first:2:23 SingleRefName=[56:7 - 56:12] RefName=[56:7 - 56:12] Extent=[7:10 - 56:12]
-// CHECK: 55:7: MemberRefExpr=first:2:23 SingleRefName=[55:7 - 55:12] RefName=[55:7 - 55:12] Extent=[7:10 - 55:12]
-// CHECK: 54:7: MemberRefExpr=first:2:23 SingleRefName=[54:7 - 54:12] RefName=[54:7 - 54:12] Extent=[7:10 - 54:12]
-// CHECK: 53:7: MemberRefExpr=first:2:23 SingleRefName=[53:7 - 53:12] RefName=[53:7 - 53:12] Extent=[7:10 - 53:12]
-// CHECK: 52:7: MemberRefExpr=first:2:23 SingleRefName=[52:7 - 52:12] RefName=[52:7 - 52:12] Extent=[7:10 - 52:12]
-// CHECK: 51:7: MemberRefExpr=first:2:23 SingleRefName=[51:7 - 51:12] RefName=[51:7 - 51:12] Extent=[7:10 - 51:12]
-// CHECK: 50:7: MemberRefExpr=first:2:23 SingleRefName=[50:7 - 50:12] RefName=[50:7 - 50:12] Extent=[7:10 - 50:12]
-// CHECK: 49:7: MemberRefExpr=first:2:23 SingleRefName=[49:7 - 49:12] RefName=[49:7 - 49:12] Extent=[7:10 - 49:12]
-// CHECK: 48:7: MemberRefExpr=first:2:23 SingleRefName=[48:7 - 48:12] RefName=[48:7 - 48:12] Extent=[7:10 - 48:12]
-// CHECK: 47:7: MemberRefExpr=first:2:23 SingleRefName=[47:7 - 47:12] RefName=[47:7 - 47:12] Extent=[7:10 - 47:12]
-// CHECK: 46:7: MemberRefExpr=first:2:23 SingleRefName=[46:7 - 46:12] RefName=[46:7 - 46:12] Extent=[7:10 - 46:12]
-// CHECK: 45:7: MemberRefExpr=first:2:23 SingleRefName=[45:7 - 45:12] RefName=[45:7 - 45:12] Extent=[7:10 - 45:12]
-// CHECK: 44:7: MemberRefExpr=first:2:23 SingleRefName=[44:7 - 44:12] RefName=[44:7 - 44:12] Extent=[7:10 - 44:12]
-// CHECK: 43:7: MemberRefExpr=first:2:23 SingleRefName=[43:7 - 43:12] RefName=[43:7 - 43:12] Extent=[7:10 - 43:12]
-// CHECK: 42:7: MemberRefExpr=first:2:23 SingleRefName=[42:7 - 42:12] RefName=[42:7 - 42:12] Extent=[7:10 - 42:12]
-// CHECK: 41:7: MemberRefExpr=first:2:23 SingleRefName=[41:7 - 41:12] RefName=[41:7 - 41:12] Extent=[7:10 - 41:12]
-// CHECK: 40:7: MemberRefExpr=first:2:23 SingleRefName=[40:7 - 40:12] RefName=[40:7 - 40:12] Extent=[7:10 - 40:12]
-// CHECK: 39:7: MemberRefExpr=first:2:23 SingleRefName=[39:7 - 39:12] RefName=[39:7 - 39:12] Extent=[7:10 - 39:12]
-// CHECK: 38:7: MemberRefExpr=first:2:23 SingleRefName=[38:7 - 38:12] RefName=[38:7 - 38:12] Extent=[7:10 - 38:12]
-// CHECK: 37:7: MemberRefExpr=first:2:23 SingleRefName=[37:7 - 37:12] RefName=[37:7 - 37:12] Extent=[7:10 - 37:12]
-// CHECK: 36:7: MemberRefExpr=first:2:23 SingleRefName=[36:7 - 36:12] RefName=[36:7 - 36:12] Extent=[7:10 - 36:12]
-// CHECK: 35:7: MemberRefExpr=first:2:23 SingleRefName=[35:7 - 35:12] RefName=[35:7 - 35:12] Extent=[7:10 - 35:12]
-// CHECK: 34:7: MemberRefExpr=first:2:23 SingleRefName=[34:7 - 34:12] RefName=[34:7 - 34:12] Extent=[7:10 - 34:12]
-// CHECK: 33:7: MemberRefExpr=first:2:23 SingleRefName=[33:7 - 33:12] RefName=[33:7 - 33:12] Extent=[7:10 - 33:12]
-// CHECK: 32:7: MemberRefExpr=first:2:23 SingleRefName=[32:7 - 32:12] RefName=[32:7 - 32:12] Extent=[7:10 - 32:12]
-// CHECK: 31:7: MemberRefExpr=first:2:23 SingleRefName=[31:7 - 31:12] RefName=[31:7 - 31:12] Extent=[7:10 - 31:12]
-// CHECK: 30:7: MemberRefExpr=first:2:23 SingleRefName=[30:7 - 30:12] RefName=[30:7 - 30:12] Extent=[7:10 - 30:12]
-// CHECK: 29:7: MemberRefExpr=first:2:23 SingleRefName=[29:7 - 29:12] RefName=[29:7 - 29:12] Extent=[7:10 - 29:12]
-// CHECK: 28:7: MemberRefExpr=first:2:23 SingleRefName=[28:7 - 28:12] RefName=[28:7 - 28:12] Extent=[7:10 - 28:12]
-// CHECK: 27:7: MemberRefExpr=first:2:23 SingleRefName=[27:7 - 27:12] RefName=[27:7 - 27:12] Extent=[7:10 - 27:12]
-// CHECK: 26:7: MemberRefExpr=first:2:23 SingleRefName=[26:7 - 26:12] RefName=[26:7 - 26:12] Extent=[7:10 - 26:12]
-// CHECK: 25:7: MemberRefExpr=first:2:23 SingleRefName=[25:7 - 25:12] RefName=[25:7 - 25:12] Extent=[7:10 - 25:12]
-// CHECK: 24:7: MemberRefExpr=first:2:23 SingleRefName=[24:7 - 24:12] RefName=[24:7 - 24:12] Extent=[7:10 - 24:12]
-// CHECK: 23:7: MemberRefExpr=first:2:23 SingleRefName=[23:7 - 23:12] RefName=[23:7 - 23:12] Extent=[7:10 - 23:12]
-// CHECK: 22:7: MemberRefExpr=first:2:23 SingleRefName=[22:7 - 22:12] RefName=[22:7 - 22:12] Extent=[7:10 - 22:12]
-// CHECK: 21:7: MemberRefExpr=first:2:23 SingleRefName=[21:7 - 21:12] RefName=[21:7 - 21:12] Extent=[7:10 - 21:12]
-// CHECK: 20:7: MemberRefExpr=first:2:23 SingleRefName=[20:7 - 20:12] RefName=[20:7 - 20:12] Extent=[7:10 - 20:12]
-// CHECK: 19:7: MemberRefExpr=first:2:23 SingleRefName=[19:7 - 19:12] RefName=[19:7 - 19:12] Extent=[7:10 - 19:12]
-// CHECK: 18:7: MemberRefExpr=first:2:23 SingleRefName=[18:7 - 18:12] RefName=[18:7 - 18:12] Extent=[7:10 - 18:12]
-// CHECK: 17:7: MemberRefExpr=first:2:23 SingleRefName=[17:7 - 17:12] RefName=[17:7 - 17:12] Extent=[7:10 - 17:12]
-// CHECK: 16:7: MemberRefExpr=first:2:23 SingleRefName=[16:7 - 16:12] RefName=[16:7 - 16:12] Extent=[7:10 - 16:12]
-// CHECK: 15:7: MemberRefExpr=first:2:23 SingleRefName=[15:7 - 15:12] RefName=[15:7 - 15:12] Extent=[7:10 - 15:12]
-// CHECK: 14:7: MemberRefExpr=first:2:23 SingleRefName=[14:7 - 14:12] RefName=[14:7 - 14:12] Extent=[7:10 - 14:12]
-// CHECK: 13:7: MemberRefExpr=first:2:23 SingleRefName=[13:7 - 13:12] RefName=[13:7 - 13:12] Extent=[7:10 - 13:12]
-// CHECK: 12:7: MemberRefExpr=first:2:23 SingleRefName=[12:7 - 12:12] RefName=[12:7 - 12:12] Extent=[7:10 - 12:12]
-// CHECK: 11:7: MemberRefExpr=first:2:23 SingleRefName=[11:7 - 11:12] RefName=[11:7 - 11:12] Extent=[7:11 - 11:12]
-// CHECK: 10:7: MemberRefExpr=first:2:23 SingleRefName=[10:7 - 10:12] RefName=[10:7 - 10:12] Extent=[7:12 - 10:12]
-// CHECK: 9:7: MemberRefExpr=first:2:23 SingleRefName=[9:7 - 9:12] RefName=[9:7 - 9:12] Extent=[7:13 - 9:12]
-// CHECK: 8:7: MemberRefExpr=first:2:23 SingleRefName=[8:7 - 8:12] RefName=[8:7 - 8:12] Extent=[7:14 - 8:12]
-// CHECK: 7:27: MemberRefExpr=first:2:23 SingleRefName=[7:27 - 7:32] RefName=[7:27 - 7:32] Extent=[7:15 - 7:32]
-// CHECK: 7:19: MemberRefExpr=first:2:23 SingleRefName=[7:19 - 7:24] RefName=[7:19 - 7:24] Extent=[7:16 - 7:24]
-// CHECK: 7:16: DeclRefExpr=s:6:42 Extent=[7:16 - 7:17]
-
-// RUN: c-index-test -test-annotate-tokens=%s:1:1:124:1 %s | FileCheck -check-prefix=CHECK-tokens %s
-// CHECK-tokens: Keyword: "struct" [1:1 - 1:7] StructDecl=rdar8650865:1:8 (Definition)
-// CHECK-tokens: Identifier: "rdar8650865" [1:8 - 1:19] StructDecl=rdar8650865:1:8 (Definition)
-// CHECK-tokens: Punctuation: "{" [1:20 - 1:21] StructDecl=rdar8650865:1:8 (Definition)
-// CHECK-tokens: Keyword: "struct" [2:3 - 2:9] FieldDecl=first:2:23 (Definition)
-// CHECK-tokens: Identifier: "rdar8650865" [2:10 - 2:21] TypeRef=struct rdar8650865:1:8
-// CHECK-tokens: Punctuation: "*" [2:22 - 2:23] FieldDecl=first:2:23 (Definition)
-// CHECK-tokens: Identifier: "first" [2:23 - 2:28] FieldDecl=first:2:23 (Definition)
-// CHECK-tokens: Punctuation: ";" [2:28 - 2:29] StructDecl=rdar8650865:1:8 (Definition)
-// CHECK-tokens: Keyword: "int" [3:3 - 3:6] FieldDecl=x:3:7 (Definition)
-// CHECK-tokens: Identifier: "x" [3:7 - 3:8] FieldDecl=x:3:7 (Definition)
-// CHECK-tokens: Punctuation: ";" [3:8 - 3:9] StructDecl=rdar8650865:1:8 (Definition)
-// CHECK-tokens: Punctuation: "}" [4:1 - 4:2] StructDecl=rdar8650865:1:8 (Definition)
-// CHECK-tokens: Punctuation: ";" [4:2 - 4:3]
-// CHECK-tokens: Keyword: "int" [6:1 - 6:4] FunctionDecl=test_rdar8650865:6:5 (Definition)
-// CHECK-tokens: Identifier: "test_rdar8650865" [6:5 - 6:21] FunctionDecl=test_rdar8650865:6:5 (Definition)
-// CHECK-tokens: Punctuation: "(" [6:21 - 6:22] FunctionDecl=test_rdar8650865:6:5 (Definition)
-// CHECK-tokens: Keyword: "struct" [6:22 - 6:28] ParmDecl=s:6:42 (Definition)
-// CHECK-tokens: Identifier: "rdar8650865" [6:29 - 6:40] TypeRef=struct rdar8650865:1:8
-// CHECK-tokens: Punctuation: "*" [6:41 - 6:42] ParmDecl=s:6:42 (Definition)
-// CHECK-tokens: Identifier: "s" [6:42 - 6:43] ParmDecl=s:6:42 (Definition)
-// CHECK-tokens: Punctuation: ")" [6:43 - 6:44] FunctionDecl=test_rdar8650865:6:5 (Definition)
-// CHECK-tokens: Punctuation: "{" [6:45 - 6:46] CompoundStmt=
-// CHECK-tokens: Keyword: "return" [7:3 - 7:9] ReturnStmt=
-// CHECK-tokens: Punctuation: "(" [7:10 - 7:11] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [7:11 - 7:12] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [7:12 - 7:13] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [7:13 - 7:14] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [7:14 - 7:15] ParenExpr=
-// CHECK-tokens: Punctuation: "(" [7:15 - 7:16] ParenExpr=
-// CHECK-tokens: Identifier: "s" [7:16 - 7:17] DeclRefExpr=s:6:42
-// CHECK-tokens: Punctuation: "->" [7:17 - 7:19] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [7:19 - 7:24] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: ")" [7:24 - 7:25] ParenExpr=
-// CHECK-tokens: Punctuation: "->" [7:25 - 7:27] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [7:27 - 7:32] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: ")" [7:32 - 7:33] ParenExpr=
-// CHECK-tokens: Punctuation: "->" [8:5 - 8:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [8:7 - 8:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: ")" [8:12 - 8:13] ParenExpr=
-// CHECK-tokens: Punctuation: "->" [9:5 - 9:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [9:7 - 9:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: ")" [9:12 - 9:13] ParenExpr=
-// CHECK-tokens: Punctuation: "->" [10:5 - 10:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [10:7 - 10:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: ")" [10:12 - 10:13] ParenExpr=
-// CHECK-tokens: Punctuation: "->" [11:5 - 11:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [11:7 - 11:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: ")" [11:12 - 11:13] ParenExpr=
-// CHECK-tokens: Punctuation: "->" [12:5 - 12:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [12:7 - 12:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [13:5 - 13:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [13:7 - 13:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [14:5 - 14:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [14:7 - 14:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [15:5 - 15:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [15:7 - 15:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [16:5 - 16:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [16:7 - 16:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [17:5 - 17:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [17:7 - 17:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [18:5 - 18:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [18:7 - 18:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [19:5 - 19:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [19:7 - 19:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [20:5 - 20:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [20:7 - 20:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [21:5 - 21:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [21:7 - 21:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [22:5 - 22:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [22:7 - 22:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [23:5 - 23:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [23:7 - 23:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [24:5 - 24:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [24:7 - 24:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [25:5 - 25:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [25:7 - 25:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [26:5 - 26:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [26:7 - 26:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [27:5 - 27:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [27:7 - 27:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [28:5 - 28:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [28:7 - 28:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [29:5 - 29:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [29:7 - 29:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [30:5 - 30:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [30:7 - 30:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [31:5 - 31:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [31:7 - 31:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [32:5 - 32:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [32:7 - 32:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [33:5 - 33:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [33:7 - 33:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [34:5 - 34:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [34:7 - 34:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [35:5 - 35:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [35:7 - 35:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [36:5 - 36:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [36:7 - 36:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [37:5 - 37:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [37:7 - 37:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [38:5 - 38:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [38:7 - 38:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [39:5 - 39:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [39:7 - 39:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [40:5 - 40:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [40:7 - 40:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [41:5 - 41:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [41:7 - 41:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [42:5 - 42:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [42:7 - 42:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [43:5 - 43:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [43:7 - 43:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [44:5 - 44:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [44:7 - 44:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [45:5 - 45:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [45:7 - 45:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [46:5 - 46:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [46:7 - 46:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [47:5 - 47:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [47:7 - 47:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [48:5 - 48:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [48:7 - 48:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [49:5 - 49:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [49:7 - 49:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [50:5 - 50:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [50:7 - 50:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [51:5 - 51:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [51:7 - 51:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [52:5 - 52:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [52:7 - 52:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [53:5 - 53:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [53:7 - 53:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [54:5 - 54:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [54:7 - 54:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [55:5 - 55:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [55:7 - 55:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [56:5 - 56:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [56:7 - 56:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [57:5 - 57:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [57:7 - 57:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [58:5 - 58:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [58:7 - 58:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [59:5 - 59:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [59:7 - 59:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [60:5 - 60:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [60:7 - 60:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [61:5 - 61:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [61:7 - 61:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [62:5 - 62:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [62:7 - 62:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [63:5 - 63:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [63:7 - 63:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [64:5 - 64:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [64:7 - 64:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [65:5 - 65:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [65:7 - 65:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [66:5 - 66:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [66:7 - 66:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [67:5 - 67:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [67:7 - 67:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [68:5 - 68:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [68:7 - 68:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [69:5 - 69:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [69:7 - 69:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [70:5 - 70:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [70:7 - 70:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [71:5 - 71:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [71:7 - 71:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [72:5 - 72:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [72:7 - 72:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [73:5 - 73:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [73:7 - 73:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [74:5 - 74:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [74:7 - 74:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [75:5 - 75:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [75:7 - 75:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [76:5 - 76:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [76:7 - 76:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [77:5 - 77:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [77:7 - 77:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [78:5 - 78:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [78:7 - 78:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [79:5 - 79:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [79:7 - 79:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [80:5 - 80:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [80:7 - 80:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [81:5 - 81:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [81:7 - 81:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [82:5 - 82:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [82:7 - 82:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [83:5 - 83:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [83:7 - 83:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [84:5 - 84:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [84:7 - 84:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [85:5 - 85:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [85:7 - 85:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [86:5 - 86:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [86:7 - 86:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [87:5 - 87:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [87:7 - 87:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [88:5 - 88:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [88:7 - 88:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [89:5 - 89:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [89:7 - 89:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [90:5 - 90:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [90:7 - 90:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [91:5 - 91:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [91:7 - 91:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [92:5 - 92:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [92:7 - 92:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [93:5 - 93:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [93:7 - 93:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [94:5 - 94:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [94:7 - 94:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [95:5 - 95:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [95:7 - 95:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [96:5 - 96:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [96:7 - 96:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [97:5 - 97:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [97:7 - 97:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [98:5 - 98:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [98:7 - 98:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [99:5 - 99:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [99:7 - 99:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [100:5 - 100:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [100:7 - 100:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [101:5 - 101:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [101:7 - 101:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [102:5 - 102:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [102:7 - 102:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [103:5 - 103:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [103:7 - 103:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [104:5 - 104:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [104:7 - 104:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [105:5 - 105:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [105:7 - 105:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [106:5 - 106:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [106:7 - 106:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [107:5 - 107:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [107:7 - 107:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [108:5 - 108:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [108:7 - 108:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [109:5 - 109:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [109:7 - 109:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [110:5 - 110:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [110:7 - 110:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [111:5 - 111:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [111:7 - 111:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [112:5 - 112:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [112:7 - 112:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [113:5 - 113:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [113:7 - 113:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [114:5 - 114:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [114:7 - 114:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [115:5 - 115:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [115:7 - 115:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [116:5 - 116:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [116:7 - 116:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [117:5 - 117:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [117:7 - 117:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [118:5 - 118:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [118:7 - 118:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [119:5 - 119:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [119:7 - 119:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [120:5 - 120:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [120:7 - 120:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [121:5 - 121:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [121:7 - 121:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [122:5 - 122:7] MemberRefExpr=first:2:23
-// CHECK-tokens: Identifier: "first" [122:7 - 122:12] MemberRefExpr=first:2:23
-// CHECK-tokens: Punctuation: "->" [123:5 - 123:7] MemberRefExpr=x:3:7
-// CHECK-tokens: Identifier: "x" [123:7 - 123:8] MemberRefExpr=x:3:7
-// CHECK-tokens: Punctuation: ";" [123:8 - 123:9] CompoundStmt=
-// CHECK-tokens: Punctuation: "}" [124:1 - 124:2] CompoundStmt=
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/redeclarations.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/redeclarations.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/redeclarations.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-#include "redeclarations.h"
-
-class A
-{
-};
-
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 2 all -I%S/Inputs -fno-delayed-template-parsing -fno-ms-compatibility -fno-ms-extensions %s | FileCheck %s
-
-// CHECK: redeclarations.h:1:7: ClassDecl=X:1:7 (Definition) Extent=[1:1 - 4:2]
-// CHECK: redeclarations.h:8:7: ClassTemplate=B:8:7 (Definition) Extent=[7:1 - 10:2]
-// CHECK: redeclarations.h:7:20: TemplateTypeParameter=T1:7:20 (Definition) Extent=[7:11 - 7:22]
-// CHECK: redeclarations.h:7:33: TemplateTypeParameter=T2:7:33 (Definition) Extent=[7:24 - 7:35]
-// CHECK: redeclarations.h:13:8: ClassTemplate=C:13:8 (Definition) Extent=[12:1 - 15:2]
-// CHECK: redeclarations.h:12:17: TemplateTypeParameter=T:12:17 (Definition) Extent=[12:11 - 12:18]
-// CHECK: redeclarations.h:17:7: ClassDecl=D:17:7 (Definition) Extent=[17:1 - 21:2]
-// CHECK: redeclarations.h:19:16: ClassDecl=A:19:16 Extent=[19:10 - 19:17]
-// CHECK: redeclarations.h:19:19: FieldDecl=x:19:19 (Definition) Extent=[19:5 - 19:20]
-// CHECK: redeclarations.h:19:5: TemplateRef=B:8:7 Extent=[19:5 - 19:6]
-// CHECK: redeclarations.h:19:7: TypeRef=class D:17:7 Extent=[19:7 - 19:8]
-// CHECK: redeclarations.h:19:16: TypeRef=class A:3:7 Extent=[19:16 - 19:17]
-// CHECK: redeclarations.cpp:3:7: ClassDecl=A:3:7 (Definition) Extent=[3:1 - 5:2]

Modified: trunk/contrib/llvm/tools/clang/test/Index/remap-complete.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/remap-complete.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/remap-complete.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: c-index-test -code-completion-at=%s:6:2 -remap-file="%s;%S/Inputs/remap-complete-to.c" %s | FileCheck %s
-
-// CHECK: FunctionDecl:{ResultType int}{TypedText f0}{LeftParen (}
-void f() { }

Modified: trunk/contrib/llvm/tools/clang/test/Index/remap-cursor-at.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/remap-cursor-at.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/remap-cursor-at.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: c-index-test -cursor-at=%s:1:15 -cursor-at=%s:2:21 -remap-file="%s;%S/Inputs/remap-load-to.c" %s | FileCheck %s
-
-// CHECK: ParmDecl=parm1:1:13 (Definition)
-// CHECK: DeclRefExpr=parm2:1:26

Modified: trunk/contrib/llvm/tools/clang/test/Index/remap-load.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/remap-load.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/remap-load.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: c-index-test -test-load-source all -remap-file="%s;%S/Inputs/remap-load-to.c" %s | FileCheck -check-prefix=CHECK %s
-
-// CHECK: remap-load.c:1:5: FunctionDecl=foo:1:5 (Definition) Extent=[1:1 - 3:2]
-// CHECK: remap-load.c:1:13: ParmDecl=parm1:1:13 (Definition) Extent=[1:9 - 1:18]
-// CHECK: remap-load.c:1:26: ParmDecl=parm2:1:26 (Definition) Extent=[1:20 - 1:31]
-// CHECK: remap-load.c:2:10: UnexposedExpr= Extent=[2:10 - 2:23]
-// CHECK: remap-load.c:2:10: BinaryOperator= Extent=[2:10 - 2:23]
-// CHECK: remap-load.c:2:10: UnexposedExpr=parm1:1:13 Extent=[2:10 - 2:15]
-// CHECK: remap-load.c:2:10: DeclRefExpr=parm1:1:13 Extent=[2:10 - 2:15]
-// CHECK: remap-load.c:2:18: DeclRefExpr=parm2:1:26 Extent=[2:18 - 2:23]

Modified: trunk/contrib/llvm/tools/clang/test/Index/reparse-instantiate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/reparse-instantiate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/reparse-instantiate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-int main()
-{
-  return 0;
-}
-
-// RUN: c-index-test -write-pch %t.pch -fno-delayed-template-parsing -x c++-header %S/Inputs/reparse-instantiate.h
-// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local -fno-delayed-template-parsing -I %S/Inputs -include %t %s

Modified: trunk/contrib/llvm/tools/clang/test/Index/retain-comments-from-system-headers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/retain-comments-from-system-headers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/retain-comments-from-system-headers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// Run lines are sensitive to line numbers and come below the code.
-
-#include "retain-comments-from-system-headers.h"
-
-/**
- * user_function
- * \param a Aaa.
- */
-int user_function(int a);
-
-// RUN: c-index-test -test-load-source all %s -I %S/Inputs | FileCheck %s
-// RUN: c-index-test -test-load-source all %s -fretain-comments-from-system-headers -I %S/Inputs | FileCheck %s -check-prefix=RETAIN
-
-// CHECK: retain-comments-from-system-headers.h:7:5: FunctionDecl=system_function:7:5 Extent=[7:1 - 7:27]
-// CHECK: retain-comments-from-system-headers.c:9:5: FunctionDecl=user_function:9:5 RawComment=[/**\n * user_function\n * \param a Aaa.\n */] RawCommentRange=[5:1 - 8:4] BriefComment=[user_function]
-
-// CHECK-RETAIN: retain-comments-from-system-headers.h:7:5: FunctionDecl=system_function:7:5 RawComment=[/**\n * system_function\n * \param a Aaa.\n */] RawCommentRange=[3:1 - 6:4] BriefComment=[system_function]
-// CHECK-RETAIN: retain-comments-from-system-headers.c:9:5: FunctionDecl=user_function:9:5 RawComment=[/**\n * user_function\n * \param a Aaa.\n */] RawCommentRange=[5:1 - 8:4] BriefComment=[user_function]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/retain-target-options.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/retain-target-options.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/retain-target-options.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: c-index-test -test-load-source all -target x86_64-apple-darwin10.0.0 -msse4.1 %s 2>&1 | FileCheck %s
-// RUN: c-index-test -test-load-source-reparse 1 all -target x86_64-apple-darwin10.0.0 -msse4.1 %s 2>&1 | FileCheck %s
-// RUN: c-index-test -test-load-source-reparse 5 all -target x86_64-apple-darwin10.0.0 -msse4.1 %s 2>&1 | FileCheck %s
-
-// CHECK: error: SSE4_1 used
-#if defined(__SSE4_1__)
-#error SSE4_1 used
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/compile_commands.json
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/compile_commands.json	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/compile_commands.json	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-[
-{
-  "directory": ".",
-  "command": "/usr/bin/clang++ -fsyntax-only t1.cpp",
-  "file": "t1.cpp"
-},
-{
-  "directory": ".",
-  "command": "/usr/bin/clang++ -fsyntax-only t2.cpp -DBLAH",
-  "file": "t2.cpp"
-},
-{
-  "directory": ".",
-  "command": "/usr/bin/clang++ -fsyntax-only t3.cpp -DBLAH",
-  "file": "t2.cpp"
-}
-]
-
-// XFAIL: mingw32,win32
-// RUN: c-index-test -index-compile-db %s | FileCheck %s
-
-// CHECK:      [enteredMainFile]: t1.cpp
-// CHECK:      [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:9:27
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 1 | isDef: 1 | isContainer: 1
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS |
-// CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C |
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:15:5
-// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:19:5
-// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val1'
-// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val2'
-// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val3'
-
-// CHECK-NEXT: [enteredMainFile]: t2.cpp
-// CHECK:      [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isContainer: skipped
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS |
-// CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C |
-// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped
-// CHECK-NEXT: [ppIncludedFile]: ./pragma_once.h
-// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo2 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./t.h:25:5
-// CHECK:      [indexDeclaration]: kind: c++-instance-method | name: tsmeth | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./pragma_once.h:8:7
-// CHECK:      [indexDeclaration]: kind: function | name: imp_foo | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: 1
-// CHECK-NEXT: [indexEntityReference]: kind: variable | name: some_val | {{.*}} | loc: ./imported.h:4:5
-// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_val4'
-// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_tsval'
-// CHECK-NEXT: [diagnostic]: {{.*}} undeclared identifier 'undef_impval'
-
-// CHECK-NEXT: [enteredMainFile]: t3.cpp
-// CHECK:      [indexDeclaration]: kind: c++-instance-method | name: method_decl | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 0 | isDef: 0 | isContainer: 0
-// CHECK-NEXT: [indexDeclaration]: kind: c++-instance-method | name: method_def2 | {{.*}} | isRedecl: 1 | isDef: 1 | isContainer: skipped
-// CHECK-NEXT: [indexEntityReference]: kind: namespace | name: NS |
-// CHECK-NEXT: [indexEntityReference]: kind: c++-class | name: C |
-// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo1 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped
-// CHECK-NEXT: [ppIncludedFile]: ./pragma_once.h
-// CHECK-NEXT: [indexDeclaration]: kind: function | name: foo2 | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped
-// CHECK-NEXT: [indexDeclaration]: kind: variable | {{.*}} | loc: ./pragma_once.h:3:12
-// CHECK:      [indexDeclaration]: kind: c++-instance-method | name: tsmeth | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped
-// CHECK-NOT:  [indexEntityReference]: kind: variable | name: some_val |
-// CHECK:      [indexDeclaration]: kind: function | name: imp_foo | {{.*}} | isRedecl: 0 | isDef: 1 | isContainer: skipped
-// CHECK-NOT:  [indexEntityReference]: kind: variable | name: some_val |
-// CHECK-NOT:  [diagnostic]: {{.*}} undeclared identifier

Modified: trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/imported.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/imported.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/imported.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-extern int some_val;
-
-static inline int imp_foo() {
-  ++some_val; return undef_impval;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = ['.json']

Modified: trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/pragma_once.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/pragma_once.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/pragma_once.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-#pragma once
-
-extern int some_val;
-
-template <typename T>
-struct TS {
-  int tsmeth() {
-    ++some_val; return undef_tsval;
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-#ifndef _T_H_
-#define _T_H_
-
-extern int some_val;
-
-namespace NS {
-  class C {
-    void method_decl();
-    int method_def1() { ++some_val; return undef_val1; }
-    inline int method_def2();
-  };
-}
-
-inline int NS::C::method_def2() {
-  ++some_val; return undef_val2;
-}
-
-static inline int foo1() {
-  ++some_val; return undef_val3;
-}
-
-#ifdef BLAH
-
-static inline int foo2() {
-  ++some_val; return undef_val4;
-}
-
-#endif
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#include "t.h"

Modified: trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#include "t.h"
-#include "pragma_once.h"
-#import "imported.h"

Modified: trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/skip-parsed-bodies/t3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#include "t.h"
-#include "pragma_once.h"
-#import "imported.h"

Modified: trunk/contrib/llvm/tools/clang/test/Index/subclass-comment.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/subclass-comment.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/subclass-comment.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,107 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out
-// RUN: FileCheck %s < %t/out
-// rdar://13647476
-
-//! NSObject is root of all.
- at interface NSObject
- at end
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ NSObject is root of all.])))]
-
-//! An umbrella class for super classes.
- at interface SuperClass 
- at end
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ An umbrella class for super classes.])))]
-
- at interface SubClass : SuperClass
- at end
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ An umbrella class for super classes.])))]
-
- at interface SubSubClass : SubClass
- at end
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ An umbrella class for super classes.])))]
-
- at interface SubSubClass (Private)
- at end
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ An umbrella class for super classes.])))]
-
-//! Something valuable to the organization.
-class Asset {
-};
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Something valuable to the organization.])))]
-
-//! An individual human or human individual.
-class Person : public Asset {
-};
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ An individual human or human individual.])))]
-
-class Student : public Person {
-};
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ An individual human or human individual.])))]
-
-//! Every thing is a part
-class Parts {
-};
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Every thing is a part])))]
-
-class Window : public virtual Parts {
-};
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Every thing is a part])))]
-
-class Door : public virtual Parts {
-};
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Every thing is a part])))]
-
-class House : public Window, Door {
-};
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Every thing is a part])))]
-
-//! Any Material
-class Material : virtual Parts {
-};
-
-class Building : Window, public Material {
-};
-// CHECK:  CommentAST=[
-// CHECK-NEXT:    (CXComment_FullComment
-// CHECK-NEXT:       (CXComment_Paragraph
-// CHECK-NEXT:         (CXComment_Text Text=[ Any Material])))]
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-annotation.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-annotation.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-annotation.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-
-#include "targeted-top.h"
-#include "targeted-preamble.h"
-
-int LocalVar1;
-int LocalVar2;
-
-// RUN: c-index-test -write-pch %t.h.pch %S/targeted-top.h
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-annotate-tokens=%s:1:1:7:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=LOCAL
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -test-annotate-tokens=%s:1:1:7:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=LOCAL
-
-// LOCAL: Punctuation: "#" [2:1 - 2:2] inclusion directive=targeted-top.h
-// LOCAL: Identifier: "include" [2:2 - 2:9] inclusion directive=targeted-top.h
-// LOCAL: Literal: ""targeted-top.h"" [2:10 - 2:26] inclusion directive=targeted-top.h
-// LOCAL: Punctuation: "#" [3:1 - 3:2] inclusion directive=targeted-preamble.h
-// LOCAL: Identifier: "include" [3:2 - 3:9] inclusion directive=targeted-preamble.h
-// LOCAL: Literal: ""targeted-preamble.h"" [3:10 - 3:31] inclusion directive=targeted-preamble.h
-// LOCAL: Keyword: "int" [5:1 - 5:4] VarDecl=LocalVar1:5:5
-// LOCAL: Identifier: "LocalVar1" [5:5 - 5:14] VarDecl=LocalVar1:5:5
-// LOCAL: Punctuation: ";" [5:14 - 5:15]
-// LOCAL: Keyword: "int" [6:1 - 6:4] VarDecl=LocalVar2:6:5
-// LOCAL: Identifier: "LocalVar2" [6:5 - 6:14] VarDecl=LocalVar2:6:5
-// LOCAL: Punctuation: ";" [6:14 - 6:15]
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-annotate-tokens=%S/targeted-fields.h:1:1:4:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=FIELD
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -test-annotate-tokens=%S/targeted-fields.h:1:1:4:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=FIELD
-
-// FIELD: Keyword: "int" [2:3 - 2:6] FieldDecl=z:2:7 (Definition)
-// FIELD: Identifier: "z" [2:7 - 2:8] FieldDecl=z:2:7 (Definition)
-// FIELD: Punctuation: ";" [2:8 - 2:9] StructDecl=:13:9 (Definition)
-// FIELD: Keyword: "int" [3:3 - 3:6] FieldDecl=w:3:7 (Definition)
-// FIELD: Identifier: "w" [3:7 - 3:8] FieldDecl=w:3:7 (Definition)
-// FIELD: Punctuation: ";" [3:8 - 3:9] StructDecl=:13:9 (Definition)
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-annotate-tokens=%S/targeted-nested1.h:1:1:3:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=NESTED
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -test-annotate-tokens=%S/targeted-nested1.h:1:1:3:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=NESTED
-
-// NESTED: Keyword: "extern" [2:1 - 2:7]
-// NESTED: Keyword: "int" [2:8 - 2:11] VarDecl=NestedVar1:2:12
-// NESTED: Identifier: "NestedVar1" [2:12 - 2:22] VarDecl=NestedVar1:2:12
-// NESTED: Punctuation: ";" [2:22 - 2:23]
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-annotate-tokens=%S/targeted-top.h:1:1:12:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=vector_get_x  \
-// RUN:  | FileCheck %s -check-prefix=TOP
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -test-annotate-tokens=%S/targeted-top.h:1:1:12:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=vector_get_x  \
-// RUN:  | FileCheck %s -check-prefix=TOP
-
-// TOP: Punctuation: "#" [2:1 - 2:2] preprocessing directive=
-// TOP: Identifier: "ifndef" [2:2 - 2:8] preprocessing directive=
-// TOP: Identifier: "TARGETED_TOP_H" [2:9 - 2:23] preprocessing directive=
-// TOP: Punctuation: "#" [3:1 - 3:2] preprocessing directive=
-// TOP: Identifier: "define" [3:2 - 3:8] preprocessing directive=
-// TOP: Identifier: "TARGETED_TOP_H" [3:9 - 3:23] macro definition=TARGETED_TOP_H
-// TOP: Punctuation: "#" [5:1 - 5:2] inclusion directive=targeted-nested1.h
-// TOP: Identifier: "include" [5:2 - 5:9] inclusion directive=targeted-nested1.h
-// TOP: Literal: ""targeted-nested1.h"" [5:10 - 5:30] inclusion directive=targeted-nested1.h
-// TOP: Keyword: "enum" [7:1 - 7:5] EnumDecl=:7:1 (Definition)
-// TOP: Punctuation: "{" [7:6 - 7:7] EnumDecl=:7:1 (Definition)
-// TOP: Identifier: "VALUE" [8:3 - 8:8] EnumConstantDecl=VALUE:8:3 (Definition)
-// TOP: Punctuation: "=" [8:9 - 8:10] EnumConstantDecl=VALUE:8:3 (Definition)
-// TOP: Literal: "3" [8:11 - 8:12] IntegerLiteral=
-// TOP: Punctuation: "}" [9:1 - 9:2] EnumDecl=:7:1 (Definition)
-// TOP: Punctuation: ";" [9:2 - 9:3]
-// TOP: Keyword: "extern" [11:1 - 11:7]
-// TOP: Keyword: "int" [11:8 - 11:11] VarDecl=TopVar:11:12
-// TOP: Identifier: "TopVar" [11:12 - 11:18] VarDecl=TopVar:11:12
-// TOP: Punctuation: ";" [11:18 - 11:19]

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-
-#include "targeted-top.h"
-#include "targeted-preamble.h"
-
-int LocalVar1;
-int LocalVar2;
-
-// RUN: c-index-test -write-pch %t.h.pch %S/targeted-top.h
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -cursor-at=%s:5:10 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=LOCAL-CURSOR1
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -cursor-at=%S/targeted-top.h:11:15 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=vector_get_x  \
-// RUN:  | FileCheck %s -check-prefix=TOP-CURSOR1
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -cursor-at=%S/targeted-nested1.h:2:16 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=NESTED-CURSOR1
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -cursor-at=%S/targeted-fields.h:2:7 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=FIELD-CURSOR1
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -cursor-at=%S/targeted-fields.h:1:1 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=FIELD-CURSOR2
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -cursor-at=%s:5:10 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=LOCAL-CURSOR1
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -cursor-at=%S/targeted-top.h:11:15 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=vector_get_x  \
-// RUN:  | FileCheck %s -check-prefix=TOP-CURSOR1
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -cursor-at=%S/targeted-nested1.h:2:16 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=NESTED-CURSOR1
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -cursor-at=%S/targeted-preamble.h:2:15 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=PREAMBLE-CURSOR1
-
-// LOCAL-CURSOR1: VarDecl=LocalVar1:5:5
-// TOP-CURSOR1: VarDecl=TopVar:11:12
-// NESTED-CURSOR1: VarDecl=NestedVar1:2:12
-// PREAMBLE-CURSOR1: VarDecl=PreambleVar:2:12
-
-// FIELD-CURSOR1: FieldDecl=z:2:7 (Definition)
-// FIELD-CURSOR2: StructDecl=:13:9 (Definition)

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-
-// rdar://10920009
-// RUN: c-index-test -write-pch %t.h.pch -target x86_64-apple-macosx10.7 -x objective-c-header %S/targeted-cursor.m.h -Xclang -detailed-preprocessing-record
-// RUN: c-index-test -cursor-at=%S/targeted-cursor.m.h:5:13 %s -target x86_64-apple-macosx10.7 -include %t.h | FileCheck %s
-
-// CHECK: ObjCClassRef=I:2:12

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.m.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.m.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-cursor.m.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-
- at interface I
-
--(void)mm:(void (^)(I*))block;
--(void)mm2:(I*)i;
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-fields.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-fields.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-fields.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-
-  int z;
-  int w;

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-file-refs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-file-refs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-file-refs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-
-#include "targeted-top.h"
-#include "targeted-preamble.h"
-
-extern int LocalVar;
-int LocalVar;
-
-// RUN: c-index-test -write-pch %t.h.pch %S/targeted-top.h -Xclang -detailed-preprocessing-record
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -file-refs-at=%s:5:17 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=LOCAL
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -file-refs-at=%s:5:17 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=LOCAL
-
-// LOCAL: VarDecl=LocalVar:5:12
-// LOCAL: VarDecl=LocalVar:5:12 =[5:12 - 5:20]
-// LOCAL: VarDecl=LocalVar:6:5 =[6:5 - 6:13]
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -file-refs-at=%S/targeted-top.h:14:7 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:  | FileCheck %s -check-prefix=TOP
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -file-refs-at=%S/targeted-top.h:14:7 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:  | FileCheck %s -check-prefix=TOP
-
-// TOP: FieldDecl=x:14:7 (Definition)
-// TOP: FieldDecl=x:14:7 (Definition) =[14:7 - 14:8]
-// TOP: MemberRefExpr=x:14:7 SingleRefName=[20:13 - 20:14] RefName=[20:13 - 20:14] =[20:13 - 20:14]
-
-// RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -file-refs-at=%S/targeted-nested1.h:2:16 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=NESTED
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -file-refs-at=%S/targeted-nested1.h:2:16 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=PreambleVar  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=NESTED
-
-// NESTED: VarDecl=NestedVar1:2:12
-// NESTED: VarDecl=NestedVar1:2:12 =[2:12 - 2:22]
-
-// RUN: env CINDEXTEST_FAILONERROR=1 CINDEXTEST_EDITING=1 CINDEXTEST_COMPLETION_NO_CACHING=1 \
-// RUN:   c-index-test -file-refs-at=%S/targeted-preamble.h:2:15 %s -include %t.h \
-// RUN:    -Xclang -error-on-deserialized-decl=NestedVar1  \
-// RUN:    -Xclang -error-on-deserialized-decl=TopVar  \
-// RUN:  | FileCheck %s -check-prefix=PREAMBLE
-
-// PREAMBLE: VarDecl=PreambleVar:2:12
-// PREAMBLE: VarDecl=PreambleVar:2:12 =[2:12 - 2:23]

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-nested1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-nested1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-nested1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-
-extern int NestedVar1;

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-preamble.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-preamble.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-preamble.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-
-extern int PreambleVar;

Modified: trunk/contrib/llvm/tools/clang/test/Index/targeted-top.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/targeted-top.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/targeted-top.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-
-#ifndef TARGETED_TOP_H
-#define TARGETED_TOP_H
-
-#include "targeted-nested1.h"
-
-enum {
-  VALUE = 3
-};
-
-extern int TopVar;
-
-typedef struct {
-  int x;
-  int y;
-#include "targeted-fields.h"
-} Vector;
-
-static inline int vector_get_x(Vector v) {
-  int x = v.x;
-  return x;
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Index/unmatched-braces.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/unmatched-braces.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/unmatched-braces.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-void foo() {
-  int x;
-  if (x) {
-}
-
-// RUN: c-index-test -cursor-at=%s:2:7 %s > %t
-// RUN: FileCheck %s -input-file %t
-
-// CHECK: VarDecl=x:2:7

Modified: trunk/contrib/llvm/tools/clang/test/Index/unmatched-braces.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/unmatched-braces.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/unmatched-braces.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
- at implementation I
--(void)meth {
-  int x;
-  if (x) {
-}
- at end
-
-// RUN: c-index-test -cursor-at=%s:3:7 %s > %t
-// RUN: FileCheck %s -input-file %t
-
-// CHECK: VarDecl=x:3:7

Modified: trunk/contrib/llvm/tools/clang/test/Index/usrs-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/usrs-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/usrs-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-template<typename ...Types>
-struct tuple { };
-
-void f(tuple<int, float, double>);
-
-// RUN: c-index-test -test-load-source-usrs all -std=c++11 %s | FileCheck %s
-// CHECK: usrs-cxx0x.cpp c:@ST>1#pT at tuple Extent=[1:1 - 2:17]
-// CHECK: usrs-cxx0x.cpp c:@F at f#$@S at tuple>#p3Ifd# Extent=[4:1 - 4:34]

Modified: trunk/contrib/llvm/tools/clang/test/Index/usrs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/usrs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/usrs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,146 +0,0 @@
-namespace foo {
-  int x;
-  void bar(int z);
-}
-namespace bar {
-  typedef int QType;
-  void bar(QType z);
-}
-
-class ClsA {
-public:
-  int a, b;
-  ClsA(int A, int B) : a(A), b(B) {}
-};
-
-namespace foo {
-  class ClsB : public ClsA {
-  public:
-    ClsB() : ClsA(1, 2) {}
-    int result() const;
-  };
-}
-
-int foo::ClsB::result() const {
-  return a + b;
-}
-
-namespace {
-  class ClsC : public foo::ClsB {};
-  int w;
-}
-
-int z;
-
-namespace foo { namespace taz {
-  int x;
-  static inline int add(int a, int b) { return a + b; }
-  void sub(int a, int b);
-}
-}
-
-namespace foo { namespace taz {
-  class ClsD : public foo::ClsB {
-  public:
-    ClsD& operator=(int x) { a = x; return *this; }
-    ClsD& operator=(double x) { a = (int) x; return *this; }
-    ClsD& operator=(const ClsD &x) { a = x.a; return *this; }
-    static int qux();
-    static int uz(int z, ...);
-    bool operator==(const ClsD &x) const { return a == x.a; }
-  };
-}}
-
-extern "C" {
-  void rez(int a, int b);
-}
-
-namespace foo_alias = foo;
-
-using namespace foo;
-
-namespace foo_alias2 = foo;
-
-using foo::ClsB;
-
-namespace foo_alias3 = foo;
-
-namespace {
-class RDar9371763_Foo {
-public:
-  void bar();
-};
-}
-
-void RDar9371763_Foo::bar() {}
-
-void rdar9371763() {
-  RDar9371763_Foo foo;
-  foo.bar();
-}
-
-// RUN: c-index-test -test-load-source-usrs all %s | FileCheck %s
-// CHECK: usrs.cpp c:@N at foo Extent=[1:1 - 4:2]
-// CHECK: usrs.cpp c:@N at foo@x Extent=[2:3 - 2:8]
-// CHECK: usrs.cpp c:@N at foo@F at bar#I# Extent=[3:3 - 3:18]
-// CHECK: usrs.cpp c:usrs.cpp at 36@N at foo@F at bar#I#@z Extent=[3:12 - 3:17]
-// CHECK: usrs.cpp c:@N at bar Extent=[5:1 - 8:2]
-// CHECK: usrs.cpp c:usrs.cpp at 64@N at bar@T at QType Extent=[6:3 - 6:20]
-// CHECK: usrs.cpp c:@N at bar@F at bar#I# Extent=[7:3 - 7:20]
-// CHECK: usrs.cpp c:usrs.cpp at 94@N at bar@F at bar#I#@z Extent=[7:12 - 7:19]
-// CHECK: usrs.cpp c:@C at ClsA Extent=[10:1 - 14:2]
-// CHECK: usrs.cpp c: Extent=[11:1 - 11:8]
-// CHECK: usrs.cpp c:@C at ClsA@FI at a Extent=[12:3 - 12:8]
-// CHECK: usrs.cpp c:@C at ClsA@FI at b Extent=[12:3 - 12:11]
-// CHECK: usrs.cpp c:@C at ClsA@F at ClsA#I#I# Extent=[13:3 - 13:37]
-// CHECK: usrs.cpp c:usrs.cpp at 147@C at ClsA@F at ClsA#I#I#@A Extent=[13:8 - 13:13]
-// CHECK: usrs.cpp c:usrs.cpp at 154@C at ClsA@F at ClsA#I#I#@B Extent=[13:15 - 13:20]
-// CHECK: usrs.cpp c:@N at foo Extent=[16:1 - 22:2]
-// CHECK: usrs.cpp c:@N at foo@C at ClsB Extent=[17:3 - 21:4]
-// CHECK: usrs.cpp c: Extent=[18:3 - 18:10]
-// CHECK: usrs.cpp c:@N at foo@C at ClsB@F at ClsB# Extent=[19:5 - 19:27]
-// CHECK: usrs.cpp c:@N at foo@C at ClsB@F at result#1 Extent=[20:5 - 20:23]
-// CHECK: usrs.cpp c:@N at foo@C at ClsB@F at result#1 Extent=[24:1 - 26:2]
-// CHECK: usrs.cpp c:usrs.cpp at 360@aN at C@ClsC Extent=[29:3 - 29:35]
-// CHECK: usrs.cpp c:usrs.cpp at 396@aN at w Extent=[30:3 - 30:8]
-// CHECK: usrs.cpp c:@z Extent=[33:1 - 33:6]
-// CHECK: usrs.cpp c:@N at foo Extent=[35:1 - 40:2]
-// CHECK: usrs.cpp c:@N at foo@N at taz Extent=[35:17 - 39:2]
-// CHECK: usrs.cpp c:@N at foo@N at taz@x Extent=[36:3 - 36:8]
-// CHECK: usrs.cpp c:usrs.cpp at 457@N at foo@N at taz@F at add#I#I# Extent=[37:3 - 37:56]
-// CHECK: usrs.cpp c:usrs.cpp at 479@N at foo@N at taz@F at add#I#I#@a Extent=[37:25 - 37:30]
-// CHECK: usrs.cpp c:usrs.cpp at 486@N at foo@N at taz@F at add#I#I#@b Extent=[37:32 - 37:37]
-// CHECK: usrs.cpp c:@N at foo@N at taz@F at sub#I#I# Extent=[38:3 - 38:25]
-// CHECK: usrs.cpp c:usrs.cpp at 522@N at foo@N at taz@F at sub#I#I#@a Extent=[38:12 - 38:17]
-// CHECK: usrs.cpp c:usrs.cpp at 529@N at foo@N at taz@F at sub#I#I#@b Extent=[38:19 - 38:24]
-// CHECK: usrs.cpp c:@N at foo Extent=[42:1 - 52:3]
-// CHECK: usrs.cpp c:@N at foo@N at taz Extent=[42:17 - 52:2]
-// CHECK: usrs.cpp c:@N at foo@N at taz@C at ClsD Extent=[43:3 - 51:4]
-// CHECK: usrs.cpp c: Extent=[44:3 - 44:10]
-// CHECK: usrs.cpp c:@N at foo@N at taz@C at ClsD@F at operator=#I# Extent=[45:5 - 45:52]
-// CHECK: usrs.cpp c:usrs.cpp at 638@N at foo@N at taz@C at ClsD@F at operator=#I#@x Extent=[45:21 - 45:26]
-// CHECK: usrs.cpp c:@N at foo@N at taz@C at ClsD@F at operator=#d# Extent=[46:5 - 46:61]
-// CHECK: usrs.cpp c:usrs.cpp at 690@N at foo@N at taz@C at ClsD@F at operator=#d#@x Extent=[46:21 - 46:29]
-// CHECK: usrs.cpp c:@N at foo@N at taz@C at ClsD@F at operator=#&1$@N at foo@N at taz@C at ClsD# Extent=[47:5 - 47:62]
-// CHECK: usrs.cpp c:usrs.cpp at 751@N at foo@N at taz@C at ClsD@F at operator=#&1$@N at foo@N at taz@C at ClsD#@x Extent=[47:21 - 47:34]
-// CHECK: usrs.cpp c:@N at foo@N at taz@C at ClsD@F at qux#S Extent=[48:5 - 48:21]
-// CHECK: usrs.cpp c:@N at foo@N at taz@C at ClsD@F at uz#I.#S Extent=[49:5 - 49:30]
-// CHECK: usrs.cpp c:usrs.cpp at 833@N at foo@N at taz@C at ClsD@F at uz#I.#S at z Extent=[49:19 - 49:24]
-// CHECK: usrs.cpp c:@N at foo@N at taz@C at ClsD@F at operator==#&1$@N at foo@N at taz@C at ClsD#1 Extent=[50:5 - 50:62]
-// CHECK: usrs.cpp c:usrs.cpp at 866@N at foo@N at taz@C at ClsD@F at operator==#&1$@N at foo@N at taz@C at ClsD#1 at x Extent=[50:21 - 50:34]
-// CHECK: usrs.cpp c:@F at rez Extent=[55:3 - 55:25]
-// CHECK: usrs.cpp c:usrs.cpp at 941@F at rez@a Extent=[55:12 - 55:17]
-// CHECK: usrs.cpp c:usrs.cpp at 948@F at rez@b Extent=[55:19 - 55:24]
-// CHECK: usrs.cpp c:@NA at foo_alias
-// CHECK-NOT: foo
-// CHECK: usrs.cpp c:@NA at foo_alias2
-// CHECK-NOT: ClsB
-// CHECK: usrs.cpp c:@NA at foo_alias3
-// CHECK: usrs.cpp c:@aN Extent=[68:1 - 73:2]
-// CHECK: usrs.cpp c:usrs.cpp at 1097@aN at C@RDar9371763_Foo Extent=[69:1 - 72:2]
-// CHECK: usrs.cpp c: Extent=[70:1 - 70:8]
-// CHECK: usrs.cpp c:usrs.cpp at 1131@aN at C@RDar9371763_Foo at F@bar# Extent=[71:3 - 71:13]
-// CHECK: usrs.cpp c:usrs.cpp at 1131@aN at C@RDar9371763_Foo at F@bar# Extent=[75:1 - 75:31]
-// CHECK: usrs.cpp c:@F at rdar9371763# Extent=[77:1 - 80:2]
-// CHECK: usrs.cpp c:usrs.cpp at 1204@F at rdar9371763#@foo Extent=[78:3 - 78:22]
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/usrs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/usrs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/usrs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,285 +0,0 @@
-                                                                 
-
-static inline int my_helper(int x, int y) { return x + y; }
-
-enum {
-  ABA,
-  CADABA
-};
-
-enum {
-  FOO,
-  BAR
-};
-
-typedef struct {
-  int wa;
-  int moo;
-} MyStruct;
-
-enum Pizza {
-  CHEESE,
-  MUSHROOMS
-};
-
- at interface Foo {
-  id x;
-  id y;
-}
-- (id) godzilla;
-+ (id) kingkong;
- at property int d1;
- at end
-
- at implementation Foo
-- (id) godzilla {
-  static int a = 0;
-  extern int z;
-  return 0;
-}
-+ (id) kingkong {
-  int local_var;
-  return 0;
-}
- at synthesize d1;
- at end
-
-int z;
-
-static int local_func(int x) { return x; }
-
- at interface CWithExt
-- (id) meth1;
- at end
- at interface CWithExt ()
-- (id) meth2;
- at end
- at interface CWithExt ()
-- (id) meth3;
- at end
- at interface CWithExt (Bar)
-- (id) meth4;
- at end
- at implementation CWithExt
-- (id) meth1 { return 0; }
-- (id) meth2 { return 0; }
-- (id) meth3 { return 0; }
- at end
- at implementation CWithExt (Bar)
-- (id) meth4 { return 0; }
- at end
-
-void aux_1(int, int, int);
-int test_multi_declaration(void) {
-  int foo = 1, bar = 2, baz = 3;
-  aux_1(foo, bar, baz);
-  return 0;
-}
-
- at protocol P1
-- (void)method;
- at end
-
- at interface CWithExt2
- at end
- at interface CWithExt2 () {
-  id var_ext;
-}
- at property (assign) id pro_ext;
--(int)methodWithFn:(void (*)(int *p))fn;
- at end
-
-// RUN: c-index-test -test-load-source-usrs all -target x86_64-apple-macosx10.7 %s | FileCheck %s
-// CHECK: usrs.m c:usrs.m at 67@F at my_helper Extent=[3:1 - 3:60]
-// CHECK: usrs.m c:usrs.m at 95@F at my_helper@x Extent=[3:29 - 3:34]
-// CHECK: usrs.m c:usrs.m at 102@F at my_helper@y Extent=[3:36 - 3:41]
-// CHECK: usrs.m c:usrs.m at 128@Ea Extent=[5:1 - 8:2]
-// CHECK: usrs.m c:usrs.m at 128@Ea at ABA Extent=[6:3 - 6:6]
-// CHECK: usrs.m c:usrs.m at 128@Ea at CADABA Extent=[7:3 - 7:9]
-// CHECK: usrs.m c:usrs.m at 155@Ea Extent=[10:1 - 13:2]
-// CHECK: usrs.m c:usrs.m at 155@Ea at FOO Extent=[11:3 - 11:6]
-// CHECK: usrs.m c:usrs.m at 155@Ea at BAR Extent=[12:3 - 12:6]
-// CHECK: usrs.m c:@SA at MyStruct Extent=[15:9 - 18:2]
-// CHECK: usrs.m c:@SA at MyStruct@FI at wa Extent=[16:3 - 16:9]
-// CHECK: usrs.m c:@SA at MyStruct@FI at moo Extent=[17:3 - 17:10]
-// CHECK: usrs.m c:usrs.m at 179@T at MyStruct Extent=[15:1 - 18:11]
-// CHECK: usrs.m c:@E at Pizza Extent=[20:1 - 23:2]
-// CHECK: usrs.m c:@E at Pizza@CHEESE Extent=[21:3 - 21:9]
-// CHECK: usrs.m c:@E at Pizza@MUSHROOMS Extent=[22:3 - 22:12]
-// CHECK: usrs.m c:objc(cs)Foo Extent=[25:1 - 32:5]
-// CHECK: usrs.m c:objc(cs)Foo at x Extent=[26:3 - 26:7]
-// CHECK: usrs.m c:objc(cs)Foo at y Extent=[27:3 - 27:7]
-// CHECK: usrs.m c:objc(cs)Foo(im)godzilla Extent=[29:1 - 29:17]
-// CHECK: usrs.m c:objc(cs)Foo(cm)kingkong Extent=[30:1 - 30:17]
-// CHECK: usrs.m c:objc(cs)Foo(py)d1 Extent=[31:1 - 31:17]
-// CHECK: usrs.m c:objc(cs)Foo(im)d1 Extent=[31:15 - 31:17]
-// CHECK: usrs.m c:objc(cs)Foo(im)setD1: Extent=[31:15 - 31:17]
-// CHECK: usrs.m c:usrs.m at 352objc(cs)Foo(im)setD1:@d1 Extent=[31:15 - 31:17]
-// CHECK: usrs.m c:objc(cs)Foo Extent=[34:1 - 45:2]
-// CHECK: usrs.m c:objc(cs)Foo(im)godzilla Extent=[35:1 - 39:2]
-// CHECK: usrs.m c:usrs.m at 402objc(cs)Foo(im)godzilla at a Extent=[36:3 - 36:19]
-// CHECK: usrs.m c:objc(cs)Foo(im)godzilla at z Extent=[37:3 - 37:15]
-// CHECK: usrs.m c:objc(cs)Foo(cm)kingkong Extent=[40:1 - 43:2]
-// CHECK: usrs.m c:usrs.m at 470objc(cs)Foo(cm)kingkong at local_var Extent=[41:3 - 41:16]
-// CHECK: usrs.m c:objc(cs)Foo(py)d1 Extent=[44:1 - 44:15]
-// CHECK: usrs.m c:@z Extent=[47:1 - 47:6]
-// CHECK: usrs.m c:usrs.m at 529@F at local_func Extent=[49:1 - 49:43]
-// CHECK: usrs.m c:usrs.m at 551@F at local_func@x Extent=[49:23 - 49:28]
-// CHECK: usrs.m c:objc(cs)CWithExt Extent=[51:1 - 53:5]
-// CHECK: usrs.m c:objc(cs)CWithExt(im)meth1 Extent=[52:1 - 52:14]
-// CHECK: usrs.m c:objc(ext)CWithExt at usrs.m@612 Extent=[54:1 - 56:5]
-// CHECK: usrs.m c:objc(cs)CWithExt(im)meth2 Extent=[55:1 - 55:14]
-// CHECK: usrs.m c:objc(ext)CWithExt at usrs.m@654 Extent=[57:1 - 59:5]
-// CHECK: usrs.m c:objc(cs)CWithExt(im)meth3 Extent=[58:1 - 58:14]
-// CHECK: usrs.m c:objc(cy)CWithExt at Bar Extent=[60:1 - 62:5]
-// CHECK: usrs.m c:objc(cs)CWithExt(im)meth4 Extent=[61:1 - 61:14]
-// CHECK: usrs.m c:objc(cs)CWithExt Extent=[63:1 - 67:2]
-// CHECK: usrs.m c:objc(cs)CWithExt(im)meth1 Extent=[64:1 - 64:27]
-// CHECK: usrs.m c:objc(cs)CWithExt(im)meth2 Extent=[65:1 - 65:27]
-// CHECK: usrs.m c:objc(cs)CWithExt(im)meth3 Extent=[66:1 - 66:27]
-// CHECK: usrs.m c:objc(cy)CWithExt at Bar Extent=[68:1 - 70:2]
-// CHECK: usrs.m c:objc(cs)CWithExt(im)meth4 Extent=[69:1 - 69:27]
-// CHECK: usrs.m c:@F at aux_1 Extent=[72:1 - 72:26]
-// CHECK: usrs.m c:@F at test_multi_declaration Extent=[73:1 - 77:2]
-// CHECK: usrs.m c:usrs.m at 980@F at test_multi_declaration@foo Extent=[74:3 - 74:14]
-// CHECK: usrs.m c:usrs.m at 980@F at test_multi_declaration@bar Extent=[74:16 - 74:23]
-// CHECK: usrs.m c:usrs.m at 980@F at test_multi_declaration@baz Extent=[74:25 - 74:32]
-// CHECK: usrs.m c:objc(pl)P1 Extent=[79:1 - 81:5]
-// CHECK: usrs.m c:objc(pl)P1(im)method Extent=[80:1 - 80:16]
-// CHECK: usrs.m c:objc(cs)CWithExt2 Extent=[83:1 - 84:5]
-// CHECK: usrs.m c:objc(ext)CWithExt2 at usrs.m@1111 Extent=[85:1 - 90:5]
-// CHECK: usrs.m c:objc(cs)CWithExt2 at var_ext Extent=[86:3 - 86:13]
-// CHECK: usrs.m c:objc(cs)CWithExt2(py)pro_ext Extent=[88:1 - 88:30]
-// CHECK: usrs.m c:objc(cs)CWithExt2(im)pro_ext Extent=[88:23 - 88:30]
-// CHECK: usrs.m c:objc(cs)CWithExt2(im)setPro_ext: Extent=[88:23 - 88:30]
-
-// RUN: c-index-test -test-load-source all %s | FileCheck -check-prefix=CHECK-source %s
-// CHECK-source: usrs.m:3:19: FunctionDecl=my_helper:3:19 (Definition) Extent=[3:1 - 3:60]
-// CHECK-source: usrs.m:3:33: ParmDecl=x:3:33 (Definition) Extent=[3:29 - 3:34]
-// CHECK-source: usrs.m:3:40: ParmDecl=y:3:40 (Definition) Extent=[3:36 - 3:41]
-// CHECK-source: usrs.m:3:43: CompoundStmt= Extent=[3:43 - 3:60]
-// CHECK-source: usrs.m:3:45: ReturnStmt= Extent=[3:45 - 3:57]
-// CHECK-source: usrs.m:3:52: BinaryOperator= Extent=[3:52 - 3:57]
-// CHECK-source: usrs.m:3:52: DeclRefExpr=x:3:33 Extent=[3:52 - 3:53]
-// CHECK-source: usrs.m:3:56: DeclRefExpr=y:3:40 Extent=[3:56 - 3:57]
-// CHECK-source: usrs.m:5:1: EnumDecl=:5:1 (Definition) Extent=[5:1 - 8:2]
-// CHECK-source: usrs.m:6:3: EnumConstantDecl=ABA:6:3 (Definition) Extent=[6:3 - 6:6]
-// CHECK-source: usrs.m:7:3: EnumConstantDecl=CADABA:7:3 (Definition) Extent=[7:3 - 7:9]
-// CHECK-source: usrs.m:10:1: EnumDecl=:10:1 (Definition) Extent=[10:1 - 13:2]
-// CHECK-source: usrs.m:11:3: EnumConstantDecl=FOO:11:3 (Definition) Extent=[11:3 - 11:6]
-// CHECK-source: usrs.m:12:3: EnumConstantDecl=BAR:12:3 (Definition) Extent=[12:3 - 12:6]
-// CHECK-source: usrs.m:18:3: TypedefDecl=MyStruct:18:3 (Definition) Extent=[15:1 - 18:11]
-// CHECK-source: usrs.m:15:9: StructDecl=:15:9 (Definition) Extent=[15:9 - 18:2]
-// CHECK-source: usrs.m:16:7: FieldDecl=wa:16:7 (Definition) Extent=[16:3 - 16:9]
-// CHECK-source: usrs.m:17:7: FieldDecl=moo:17:7 (Definition) Extent=[17:3 - 17:10]
-// CHECK-source: usrs.m:20:6: EnumDecl=Pizza:20:6 (Definition) Extent=[20:1 - 23:2]
-// CHECK-source: usrs.m:21:3: EnumConstantDecl=CHEESE:21:3 (Definition) Extent=[21:3 - 21:9]
-// CHECK-source: usrs.m:22:3: EnumConstantDecl=MUSHROOMS:22:3 (Definition) Extent=[22:3 - 22:12]
-// CHECK-source: usrs.m:25:12: ObjCInterfaceDecl=Foo:25:12 Extent=[25:1 - 32:5]
-// CHECK-source: usrs.m:26:6: ObjCIvarDecl=x:26:6 (Definition) Extent=[26:3 - 26:7]
-// CHECK-source: usrs.m:26:3: TypeRef=id:0:0 Extent=[26:3 - 26:5]
-// CHECK-source: usrs.m:27:6: ObjCIvarDecl=y:27:6 (Definition) Extent=[27:3 - 27:7]
-// CHECK-source: usrs.m:27:3: TypeRef=id:0:0 Extent=[27:3 - 27:5]
-// CHECK-source: usrs.m:29:8: ObjCInstanceMethodDecl=godzilla:29:8 Extent=[29:1 - 29:17]
-// CHECK-source: usrs.m:29:4: TypeRef=id:0:0 Extent=[29:4 - 29:6]
-// CHECK-source: usrs.m:30:8: ObjCClassMethodDecl=kingkong:30:8 Extent=[30:1 - 30:17]
-// CHECK-source: usrs.m:30:4: TypeRef=id:0:0 Extent=[30:4 - 30:6]
-// CHECK-source: usrs.m:31:15: ObjCPropertyDecl=d1:31:15 Extent=[31:1 - 31:17]
-// CHECK-source: usrs.m:31:15: ObjCInstanceMethodDecl=d1:31:15 Extent=[31:15 - 31:17]
-// CHECK-source: usrs.m:31:15: ObjCInstanceMethodDecl=setD1::31:15 Extent=[31:15 - 31:17]
-// CHECK-source: usrs.m:31:15: ParmDecl=d1:31:15 (Definition) Extent=[31:15 - 31:17]
-// CHECK-source: usrs.m:34:17: ObjCImplementationDecl=Foo:34:17 (Definition) Extent=[34:1 - 45:2]
-// CHECK-source: usrs.m:35:8: ObjCInstanceMethodDecl=godzilla:35:8 (Definition) Extent=[35:1 - 39:2]
-// CHECK-source: usrs.m:35:4: TypeRef=id:0:0 Extent=[35:4 - 35:6]
-// CHECK-source: usrs.m:35:17: CompoundStmt= Extent=[35:17 - 39:2]
-// CHECK-source: usrs.m:36:3: DeclStmt= Extent=[36:3 - 36:20]
-// CHECK-source: usrs.m:36:14: VarDecl=a:36:14 (Definition) Extent=[36:3 - 36:19]
-// CHECK-source: usrs.m:36:18: IntegerLiteral= Extent=[36:18 - 36:19]
-// CHECK-source: usrs.m:37:3: DeclStmt= Extent=[37:3 - 37:16]
-// CHECK-source: usrs.m:37:14: VarDecl=z:37:14 Extent=[37:3 - 37:15]
-// CHECK-source: usrs.m:38:3: ReturnStmt= Extent=[38:3 - 38:11]
-// CHECK-source: usrs.m:38:10: UnexposedExpr= Extent=[38:10 - 38:11]
-// CHECK-source: usrs.m:38:10: IntegerLiteral= Extent=[38:10 - 38:11]
-// CHECK-source: usrs.m:40:8: ObjCClassMethodDecl=kingkong:40:8 (Definition) Extent=[40:1 - 43:2]
-// CHECK-source: usrs.m:40:4: TypeRef=id:0:0 Extent=[40:4 - 40:6]
-// CHECK-source: usrs.m:40:17: CompoundStmt= Extent=[40:17 - 43:2]
-// CHECK-source: usrs.m:41:3: DeclStmt= Extent=[41:3 - 41:17]
-// CHECK-source: usrs.m:41:7: VarDecl=local_var:41:7 (Definition) Extent=[41:3 - 41:16]
-// CHECK-source: usrs.m:42:3: ReturnStmt= Extent=[42:3 - 42:11]
-// CHECK-source: usrs.m:42:10: UnexposedExpr= Extent=[42:10 - 42:11]
-// CHECK-source: usrs.m:42:10: IntegerLiteral= Extent=[42:10 - 42:11]
-// CHECK-source: usrs.m:44:13: ObjCSynthesizeDecl=d1:31:15 (Definition) Extent=[44:1 - 44:15]
-// CHECK-source: usrs.m:47:5: VarDecl=z:47:5 Extent=[47:1 - 47:6]
-// CHECK-source: usrs.m:49:12: FunctionDecl=local_func:49:12 (Definition) Extent=[49:1 - 49:43]
-// CHECK-source: usrs.m:49:27: ParmDecl=x:49:27 (Definition) Extent=[49:23 - 49:28]
-// CHECK-source: usrs.m:49:30: CompoundStmt= Extent=[49:30 - 49:43]
-// CHECK-source: usrs.m:49:32: ReturnStmt= Extent=[49:32 - 49:40]
-// CHECK-source: usrs.m:49:39: DeclRefExpr=x:49:27 Extent=[49:39 - 49:40]
-// CHECK-source: usrs.m:51:12: ObjCInterfaceDecl=CWithExt:51:12 Extent=[51:1 - 53:5]
-// CHECK-source: usrs.m:52:8: ObjCInstanceMethodDecl=meth1:52:8 Extent=[52:1 - 52:14]
-// CHECK-source: usrs.m:52:4: TypeRef=id:0:0 Extent=[52:4 - 52:6]
-// CHECK-source: usrs.m:54:12: ObjCCategoryDecl=:54:12 Extent=[54:1 - 56:5]
-// CHECK-source: usrs.m:54:12: ObjCClassRef=CWithExt:51:12 Extent=[54:12 - 54:20]
-// CHECK-source: usrs.m:55:8: ObjCInstanceMethodDecl=meth2:55:8 Extent=[55:1 - 55:14]
-// CHECK-source: usrs.m:55:4: TypeRef=id:0:0 Extent=[55:4 - 55:6]
-// CHECK-source: usrs.m:57:12: ObjCCategoryDecl=:57:12 Extent=[57:1 - 59:5]
-// CHECK-source: usrs.m:57:12: ObjCClassRef=CWithExt:51:12 Extent=[57:12 - 57:20]
-// CHECK-source: usrs.m:58:8: ObjCInstanceMethodDecl=meth3:58:8 Extent=[58:1 - 58:14]
-// CHECK-source: usrs.m:58:4: TypeRef=id:0:0 Extent=[58:4 - 58:6]
-// CHECK-source: usrs.m:60:12: ObjCCategoryDecl=Bar:60:12 Extent=[60:1 - 62:5]
-// CHECK-source: usrs.m:60:12: ObjCClassRef=CWithExt:51:12 Extent=[60:12 - 60:20]
-// CHECK-source: usrs.m:61:8: ObjCInstanceMethodDecl=meth4:61:8 Extent=[61:1 - 61:14]
-// CHECK-source: usrs.m:61:4: TypeRef=id:0:0 Extent=[61:4 - 61:6]
-// CHECK-source: usrs.m:63:17: ObjCImplementationDecl=CWithExt:63:17 (Definition) Extent=[63:1 - 67:2]
-// CHECK-source: usrs.m:64:8: ObjCInstanceMethodDecl=meth1:64:8 (Definition) Extent=[64:1 - 64:27]
-// CHECK-source: usrs.m:64:4: TypeRef=id:0:0 Extent=[64:4 - 64:6]
-// CHECK-source: usrs.m:64:14: CompoundStmt= Extent=[64:14 - 64:27]
-// CHECK-source: usrs.m:64:16: ReturnStmt= Extent=[64:16 - 64:24]
-// CHECK-source: usrs.m:64:23: UnexposedExpr= Extent=[64:23 - 64:24]
-// CHECK-source: usrs.m:64:23: IntegerLiteral= Extent=[64:23 - 64:24]
-// CHECK-source: usrs.m:65:8: ObjCInstanceMethodDecl=meth2:65:8 (Definition) Extent=[65:1 - 65:27]
-// CHECK-source: usrs.m:65:4: TypeRef=id:0:0 Extent=[65:4 - 65:6]
-// CHECK-source: usrs.m:65:14: CompoundStmt= Extent=[65:14 - 65:27]
-// CHECK-source: usrs.m:65:16: ReturnStmt= Extent=[65:16 - 65:24]
-// CHECK-source: usrs.m:65:23: UnexposedExpr= Extent=[65:23 - 65:24]
-// CHECK-source: usrs.m:65:23: IntegerLiteral= Extent=[65:23 - 65:24]
-// CHECK-source: usrs.m:66:8: ObjCInstanceMethodDecl=meth3:66:8 (Definition) Extent=[66:1 - 66:27]
-// CHECK-source: usrs.m:66:4: TypeRef=id:0:0 Extent=[66:4 - 66:6]
-// CHECK-source: usrs.m:66:14: CompoundStmt= Extent=[66:14 - 66:27]
-// CHECK-source: usrs.m:66:16: ReturnStmt= Extent=[66:16 - 66:24]
-// CHECK-source: usrs.m:66:23: UnexposedExpr= Extent=[66:23 - 66:24]
-// CHECK-source: usrs.m:66:23: IntegerLiteral= Extent=[66:23 - 66:24]
-// CHECK-source: usrs.m:68:17: ObjCCategoryImplDecl=Bar:68:17 (Definition) Extent=[68:1 - 70:2]
-// CHECK-source: usrs.m:68:17: ObjCClassRef=CWithExt:51:12 Extent=[68:17 - 68:25]
-// CHECK-source: usrs.m:69:8: ObjCInstanceMethodDecl=meth4:69:8 (Definition) Extent=[69:1 - 69:27]
-// CHECK-source: usrs.m:69:4: TypeRef=id:0:0 Extent=[69:4 - 69:6]
-// CHECK-source: usrs.m:69:14: CompoundStmt= Extent=[69:14 - 69:27]
-// CHECK-source: usrs.m:69:16: ReturnStmt= Extent=[69:16 - 69:24]
-// CHECK-source: usrs.m:69:23: UnexposedExpr= Extent=[69:23 - 69:24]
-// CHECK-source: usrs.m:69:23: IntegerLiteral= Extent=[69:23 - 69:24]
-// CHECK-source: usrs.m:72:6: FunctionDecl=aux_1:72:6 Extent=[72:1 - 72:26]
-// CHECK-source: usrs.m:72:15: ParmDecl=:72:15 (Definition) Extent=[72:12 - 72:16]
-// CHECK-source: usrs.m:72:20: ParmDecl=:72:20 (Definition) Extent=[72:17 - 72:21]
-// CHECK-source: usrs.m:72:25: ParmDecl=:72:25 (Definition) Extent=[72:22 - 72:26]
-// CHECK-source: usrs.m:73:5: FunctionDecl=test_multi_declaration:73:5 (Definition) Extent=[73:1 - 77:2]
-// CHECK-source: usrs.m:73:34: CompoundStmt= Extent=[73:34 - 77:2]
-// CHECK-source: usrs.m:74:3: DeclStmt= Extent=[74:3 - 74:33]
-// CHECK-source: usrs.m:74:7: VarDecl=foo:74:7 (Definition) Extent=[74:3 - 74:14]
-// CHECK-source: usrs.m:74:13: IntegerLiteral= Extent=[74:13 - 74:14]
-// CHECK-source: usrs.m:74:16: VarDecl=bar:74:16 Extent=[74:16 - 74:23]
-// CHECK-source: usrs.m:74:22: IntegerLiteral= Extent=[74:22 - 74:23]
-// CHECK-source: usrs.m:74:25: VarDecl=baz:74:25 Extent=[74:25 - 74:32]
-// CHECK-source: usrs.m:74:31: IntegerLiteral= Extent=[74:31 - 74:32]
-// CHECK-source: usrs.m:75:3: CallExpr=aux_1:72:6 Extent=[75:3 - 75:23]
-// CHECK-source: usrs.m:75:3: UnexposedExpr=aux_1:72:6 Extent=[75:3 - 75:8]
-// CHECK-source: usrs.m:75:3: DeclRefExpr=aux_1:72:6 Extent=[75:3 - 75:8]
-// CHECK-source: usrs.m:75:9: DeclRefExpr=foo:74:7 Extent=[75:9 - 75:12]
-// CHECK-source: usrs.m:75:14: DeclRefExpr=bar:74:16 Extent=[75:14 - 75:17]
-// CHECK-source: usrs.m:75:19: DeclRefExpr=baz:74:25 Extent=[75:19 - 75:22]
-// CHECK-source: usrs.m:76:3: ReturnStmt= Extent=[76:3 - 76:11]
-// CHECK-source: usrs.m:76:10: IntegerLiteral= Extent=[76:10 - 76:11]
-// CHECK-source: usrs.m:79:11: ObjCProtocolDecl=P1:79:11 (Definition) Extent=[79:1 - 81:5]
-// CHECK-source: usrs.m:80:9: ObjCInstanceMethodDecl=method:80:9 Extent=[80:1 - 80:16]
-// CHECK-source: usrs.m:89:7: ObjCInstanceMethodDecl=methodWithFn::89:7 Extent=[89:1 - 89:41]
-// CHECK-source: usrs.m:89:38: ParmDecl=fn:89:38 (Definition) Extent=[89:21 - 89:40]
-// CHECK-source: usrs.m:89:35: ParmDecl=p:89:35 (Definition) Extent=[89:30 - 89:36]

Modified: trunk/contrib/llvm/tools/clang/test/Index/warning-flags.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/warning-flags.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/warning-flags.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-int foo() { }
-int *bar(float *f) { return f; }
-
-// RUN: c-index-test -test-load-source all %s 2>&1|FileCheck -check-prefix=CHECK-BOTH-WARNINGS %s
-// RUN: c-index-test -test-load-source-reparse 5 all %s 2>&1|FileCheck -check-prefix=CHECK-BOTH-WARNINGS %s
-// RUN: c-index-test -test-load-source all -Wno-return-type  %s 2>&1|FileCheck -check-prefix=CHECK-SECOND-WARNING %s
-// RUN: c-index-test -test-load-source-reparse 5 all -Wno-return-type %s 2>&1|FileCheck -check-prefix=CHECK-SECOND-WARNING %s
-// RUN: c-index-test -test-load-source all -w %s 2>&1|not grep warning:
-// RUN: c-index-test -test-load-source-reparse 5 all -w %s 2>&1|not grep warning:
-
-// CHECK-BOTH-WARNINGS: warning: control reaches end of non-void function
-// CHECK-BOTH-WARNINGS: warning: incompatible pointer types returning 'float *' from a function with result type 'int *'
-
-// CHECK-SECOND-WARNING-NOT:control reaches end of non-void
-// CHECK-SECOND-WARNING: warning: incompatible pointer types returning 'float *' from a function with result type 'int *'
-

Modified: trunk/contrib/llvm/tools/clang/test/Index/werror.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Index/werror.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Index/werror.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-inline int *get_int_ptr(float *fp) {
-  return fp;
-}
-
-#ifdef FATAL
-void fatal(int);
-void fatal(float);
-#endif
-
-// RUN: c-index-test -write-pch %t.pch -Werror %s
-// RUN: c-index-test -write-pch %t.pch -DFATAL -Werror %s
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/11-27-2007-FloatLiterals.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/11-27-2007-FloatLiterals.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/11-27-2007-FloatLiterals.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: 0x3BFD83C940000000
-// CHECK: 2.000000e+{{[0]*}}32
-// CHECK: 0x3BFD83C940000000
-// CHECK: 2.000000e+{{[0]*}}32
-// CHECK: 0x7FF0000000000000
-
-float  F  = 1e-19f;
-double D  = 2e32;
-float  F2 = 01e-19f;
-double D2 = 02e32;
-float  F3 = 0xFp100000000000000000000F;

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/badstring_in_if0.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/badstring_in_if0.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/badstring_in_if0.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -E -verify %s
-// expected-no-diagnostics
-#if 0
-
-  "
-
-  '
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/bcpl-escaped-newline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/bcpl-escaped-newline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/bcpl-escaped-newline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -Eonly -trigraphs %s
-// RUN: %clang_cc1 -Eonly -verify %s
-
-//\
-#error bar
-
-//??/
-#error qux
-// expected-error at -1 {{qux}}
-
-// Trailing whitespace!
-//\ 
-#error quux

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/block_cmt_end.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/block_cmt_end.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/block_cmt_end.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-/*
-  RUN: %clang_cc1 -E -trigraphs %s | grep bar
-  RUN: %clang_cc1 -E -trigraphs %s | grep foo
-  RUN: %clang_cc1 -E -trigraphs %s | not grep qux
-  RUN: %clang_cc1 -E -trigraphs %s | not grep xyz
-  RUN: %clang_cc1 -fsyntax-only -trigraphs -verify %s  
-*/
-
-// This is a simple comment, /*/ does not end a comment, the trailing */ does.
-int i = /*/ */ 1;
-
-/* qux
-
-next comment ends with normal escaped newline:
-*/
-
-/* expected-warning {{escaped newline}} expected-warning {{backslash and newline}}  *\  
-/
-
-int bar /* expected-error {{expected ';' after top level declarator}} */
-
-/* xyz
-
-next comment ends with a trigraph escaped newline: */
-
-/* expected-warning {{escaped newline between}}   expected-warning {{backslash and newline separated by space}}    expected-warning {{trigraph ends block comment}}   *??/    
-/
-
-foo
-
-
-// rdar://6060752 - We should not get warnings about trigraphs in comments:
-// '????'
-/* ???? */

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/builtin_redef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/builtin_redef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/builtin_redef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 %s -D__TIME__=1234 -U__DATE__ -E 2>&1 | FileCheck %s --check-prefix=CHECK-OUT
-// RUN: %clang_cc1 %s -D__TIME__=1234 -U__DATE__ -E 2>&1 | FileCheck %s --check-prefix=CHECK-WARN
-// RUN: %clang_cc1 %s -D__TIME__=1234 -U__DATE__ -E 2>&1 -pedantic-errors | FileCheck %s --check-prefix=CHECK-ERR
-
-// CHECK-WARN: <command line>:{{.*}} warning: redefining builtin macro
-// CHECK-WARN: <command line>:{{.*}} warning: undefining builtin macro
-
-// CHECK-ERR: <command line>:{{.*}} error: redefining builtin macro
-// CHECK-ERR: <command line>:{{.*}} error: undefining builtin macro
-
-int n = __TIME__;
-__DATE__
-
-#define __FILE__ "my file"
-// CHECK-WARN: :[[@LINE-1]]:9: warning: redefining builtin macro
-// CHECK-ERR: :[[@LINE-2]]:9: error: redefining builtin macro
-
-// CHECK-OUT: int n = 1234;
-// CHECK-OUT: __DATE__

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/c90.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/c90.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/c90.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-/* RUN: %clang_cc1 -std=c90 -fsyntax-only %s -verify -pedantic-errors
- */
-
-enum { cast_hex = (long) (
-      0x0p-1   /* expected-error {{hexadecimal floating constants are a C99 feature}} */
-     ) };
-
-/* PR2477 */
-int test1(int a,int b) {return a//* This is a divide followed by block comment in c89 mode */
-b;}
-
-// comment accepted as extension    /* expected-error {{// comments are not allowed in this language}}
-
-void test2() {
-  const char * str =
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds" // expected-error{{string literal of length 845 exceeds maximum length 509 that C90 compilers are required to support}}
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds"
-    "sdjflksdjf lksdjf skldfjsdkljflksdjf kldsjflkdsj fldks jflsdkjfds";
-}
-
-void test3() {
-  (void)L"\u1234";  // expected-error {{universal character names are only valid in C99 or C++}}
-  (void)L'\u1234';  // expected-error {{universal character names are only valid in C99 or C++}}
-}
-
-#define PREFIX(x) foo ## x
-int test4() {
-  int PREFIX(0p) = 0;
-  int *p = &PREFIX(0p+1);
-  return p[-1];
-}
-
-#define MY_UCN \u00FC // expected-warning {{universal character names are only valid in C99 or C++; treating as '\' followed by identifier}}
-#define NOT_A_UCN \h // no-warning
-
-extern int idWithUCN\u00FC; // expected-warning {{universal character names are only valid in C99 or C++; treating as '\' followed by identifier}} expected-error {{expected ';'}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/char-escapes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/char-escapes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/char-escapes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-int test['\\' == 92 ? 1 : -1];
-int test['\"' == 34 ? 1 : -1];
-int test['\'' == 39 ? 1 : -1];
-int test['\?' == 63 ? 1 : -1];
-int test['\a' == 7 ? 1 : -1];
-int test['\b' == 8 ? 1 : -1];
-int test['\e' == 27 ? 1 : -1]; // expected-warning {{non-standard escape}}
-int test['\E' == 27 ? 1 : -1]; // expected-warning {{non-standard escape}}
-int test['\f' == 12 ? 1 : -1];
-int test['\n' == 10 ? 1 : -1];
-int test['\r' == 13 ? 1 : -1];
-int test['\t' == 9 ? 1 : -1];
-int test['\v' == 11 ? 1 : -1];
-int test['\xa' == 10 ? 1 : -1];
-int test['\1' == 1 ? 1 : -1];
-int test['\(' == 40 ? 1 : -1]; // expected-warning {{non-standard escape}}
-int test['\{' == 123 ? 1 : -1]; // expected-warning {{non-standard escape}}
-int test['\[' == 91 ? 1 : -1]; // expected-warning {{non-standard escape}}
-int test['\%' == 37 ? 1 : -1]; // expected-warning {{non-standard escape}}
-const char *format = "abc \m def"; // expected-warning{{unknown escape sequence '\m'}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/char-literal-encoding-error.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/char-literal-encoding-error.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/char-literal-encoding-error.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -x c++ %s
-
-// This file is encoded using ISO-8859-1
-
-int main() {
-  (void)'\xE9'; // expected-warning {{illegal character encoding in character literal}}
-  (void)u'\xE9'; // expected-error {{illegal character encoding in character literal}}
-  (void)U'\xE9'; // expected-error {{illegal character encoding in character literal}}
-  (void)L'\xE9'; // expected-error {{illegal character encoding in character literal}}
-
-  // For narrow character literals, since there is no error, make sure the
-  // encoding is correct
-  static_assert((unsigned char)'\xE9' == 0xE9, ""); // expected-warning {{illegal character encoding in character literal}}
-  static_assert('\xE9\xE9' == 0xE9E9, ""); // expected-warning {{illegal character encoding in character literal}} expected-warning {{multi-character character constant}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/char-literal.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/char-literal.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/char-literal.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -Wfour-char-constants -fsyntax-only -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c11 -x c -Wfour-char-constants -fsyntax-only -verify %s
-
-#ifndef __cplusplus
-typedef __WCHAR_TYPE__ wchar_t;
-typedef __CHAR16_TYPE__ char16_t;
-typedef __CHAR32_TYPE__ char32_t;
-#endif
-
-int a = 'ab'; // expected-warning {{multi-character character constant}}
-int b = '\xFF\xFF'; // expected-warning {{multi-character character constant}}
-int c = 'APPS'; // expected-warning {{multi-character character constant}}
-
-char d = '⌘'; // expected-error {{character too large for enclosing character literal type}}
-char e = '\u2318'; // expected-error {{character too large for enclosing character literal type}}
-
-#ifdef __cplusplus
-auto f = '\xE2\x8C\x98'; // expected-warning {{multi-character character constant}}
-#endif
-
-char16_t g = u'ab'; // expected-error {{Unicode character literals may not contain multiple characters}}
-char16_t h = u'\U0010FFFD'; // expected-error {{character too large for enclosing character literal type}}
-
-wchar_t i = L'ab'; // expected-warning {{extraneous characters in character constant ignored}}
-wchar_t j = L'\U0010FFFD';
-
-char32_t k = U'\U0010FFFD';
-
-char l = 'Ø'; // expected-error {{character too large for enclosing character literal type}}
-char m = '👿'; // expected-error {{character too large for enclosing character literal type}}
-
-char32_t n = U'ab'; // expected-error {{Unicode character literals may not contain multiple characters}}
-char16_t o = '👽'; // expected-error {{character too large for enclosing character literal type}}
-
-char16_t p[2] = u"\U0000FFFF";
-char16_t q[2] = u"\U00010000";
-#ifdef __cplusplus
-// expected-error at -2 {{too long}}
-#else
-// FIXME: The above should be accepted in C11 mode.
-// expected-error at -6 {{must be an initializer list}}
-// expected-error at -6 {{must be an initializer list}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/clang-keywords.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/clang-keywords.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/clang-keywords.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-__char16_t c16;
-void f(__char32_t) { }

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/comment-escape.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/comment-escape.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/comment-escape.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -fsyntax-only %s 
-// rdar://6757323
-// foo \
-
-#define blork 32
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/conflict-marker.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/conflict-marker.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/conflict-marker.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-// Test that we recover gracefully from conflict markers left in input files.
-// PR5238
-
-// diff3 style  expected-error at +1 {{version control conflict marker in file}}
-<<<<<<< .mine
-int x = 4;
-|||||||
-int x = 123;
-=======
-float x = 17;
->>>>>>> .r91107
-
-// normal style  expected-error at +1 {{version control conflict marker in file}}
-<<<<<<< .mine
-typedef int y;
-=======
-typedef struct foo *y;
->>>>>>> .r91107
-
-// Perforce style  expected-error at +1 {{version control conflict marker in file}}
->>>> ORIGINAL conflict-marker.c#6
-int z = 1;
-==== THEIRS conflict-marker.c#7
-int z = 0;
-==== YOURS conflict-marker.c
-int z = 2;
-<<<<
-
-;
-y b;
-
-
-int foo() {
-  y a = x;
-  return x + a - z;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/constants.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/constants.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/constants.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -trigraphs %s
-
-int x = 000000080;  // expected-error {{invalid digit}}
-
-int y = 0000\
-00080;             // expected-error {{invalid digit}}
-
-
-
-float X = 1.17549435e-38F;
-float Y = 08.123456;
-
-// PR2252
-#if -0x8000000000000000  // should not warn.
-#endif
-
-
-int c[] = {
-  'df',   // expected-warning {{multi-character character constant}}
-  '\t',
-  '\\
-t',
-  '??!',  // expected-warning {{trigraph converted to '|' character}}
-  'abcd'  // expected-warning {{multi-character character constant}}
-};
-
-//  PR4499
-int m0 = '0';
-int m1 = '\\\''; // expected-warning {{multi-character character constant}}
-int m2 = '\\\\'; // expected-warning {{multi-character character constant}}
-int m3 = '\\\
-';
-
-
-#pragma clang diagnostic ignored "-Wmultichar"
-
-int d = 'df'; // no warning.
-int e = 'abcd';  // still warn: expected-warning {{multi-character character constant}}
-
-#pragma clang diagnostic ignored "-Wfour-char-constants"
-
-int f = 'abcd';  // ignored.
-
-// rdar://problem/6974641
-float t0[] = {
-  1.9e20f,
-  1.9e-20f,
-  1.9e50f,   // expected-warning {{too large}}
-  1.9e-50f,  // expected-warning {{too small}}
-  -1.9e20f,
-  -1.9e-20f,
-  -1.9e50f,  // expected-warning {{too large}}
-  -1.9e-50f  // expected-warning {{too small}}
-};
-double t1[] = {
-  1.9e50,
-  1.9e-50,
-  1.9e500,   // expected-warning {{too large}}
-  1.9e-500,  // expected-warning {{too small}}
-  -1.9e50,
-  -1.9e-50,
-  -1.9e500,  // expected-warning {{too large}}
-  -1.9e-500  // expected-warning {{too small}}
-};
-
-// PR7888
-double g = 1e100000000; // expected-warning {{too large}}
-
-char h = '\u1234'; // expected-error {{character too large for enclosing character literal type}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/counter.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/counter.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/counter.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// __COUNTER__ support: rdar://4329310
-// RUN: %clang -E %s | FileCheck %s
-
-#define PASTE2(x,y) x##y
-#define PASTE1(x,y) PASTE2(x,y)
-#define UNIQUE(x) PASTE1(x,__COUNTER__)
-
-A: __COUNTER__
-B: UNIQUE(foo);
-C: UNIQUE(foo);
-D: __COUNTER__
-
-// CHECK: A: 0
-// CHECK: B: foo1;
-// CHECK: C: foo2;
-// CHECK: D: 3
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_keyword.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_keyword.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_keyword.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 2>&1
-int static_assert; /* expected-error {{expected unqualified-id}} */

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_keyword_as_cxx98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_keyword_as_cxx98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_keyword_as_cxx98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -Wc++11-compat 
-
-#define constexpr const
-constexpr int x = 0;
-#undef constexpr
-
-namespace lib {
-  struct nullptr_t;
-  typedef nullptr_t nullptr; // expected-warning {{'nullptr' is a keyword in C++11}}
-}
-
-#define CONCAT(X,Y) CONCAT2(X,Y)
-#define CONCAT2(X,Y) X ## Y
-int CONCAT(constexpr,ession);
-
-#define ID(X) X
-extern int ID(decltype); // expected-warning {{'decltype' is a keyword in C++11}}
-
-extern int CONCAT(align,of); // expected-warning {{'alignof' is a keyword in C++11}}
-
-#define static_assert(b, s) int CONCAT(check, __LINE__)[(b) ? 1 : 0];
-static_assert(1 > 0, "hello"); // ok
-
-#define IF_CXX11(CXX11, CXX03) CXX03
-typedef IF_CXX11(char16_t, wchar_t) my_wide_char_t; // ok
-
-int alignas; // expected-warning {{'alignas' is a keyword in C++11}}
-int alignof; // already diagnosed in this TU
-int char16_t; // expected-warning {{'char16_t' is a keyword in C++11}}
-int char32_t; // expected-warning {{'char32_t' is a keyword in C++11}}
-int constexpr; // expected-warning {{'constexpr' is a keyword in C++11}}
-int decltype; // already diagnosed in this TU
-int noexcept; // expected-warning {{'noexcept' is a keyword in C++11}}
-int nullptr; // already diagnosed in this TU
-int static_assert; // expected-warning {{'static_assert' is a keyword in C++11}}
-int thread_local; // expected-warning {{'thread_local' is a keyword in C++11}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_delim_length.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_delim_length.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_delim_length.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-const char *str1 = R"(abcdef)"; // ok
-const char *str2 = R"foo()foo"; // ok
-const char *str3 = R"()"; // ok
-// FIXME: recover better than this.
-const char *str4 = R"abcdefghijkmnopqrstuvwxyz(abcdef)abcdefghijkmnopqrstuvwxyz"; // expected-error {{raw string delimiter longer than 16 characters}} expected-error {{expected expression}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_directives.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_directives.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_directives.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s
-// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify %s
-
-// expected-error at 8 {{in c++98 only}}
-#if 0
-R"(
-#else
-#error in c++98 only)"
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_unterminated.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_unterminated.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/cxx0x_raw_string_unterminated.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -E %s 2>&1 | grep 'error: raw string missing terminating delimiter )foo"'
-
-const char *str = R"foo(abc
-def)bar";

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/cxx1y_binary_literal.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/cxx1y_binary_literal.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/cxx1y_binary_literal.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -std=c++1y %s -verify
-
-static_assert(0b1001 == 9, "");
-
-using I = int;
-using I = decltype(0b101001);
-using ULL = unsigned long long;
-using ULL = decltype(0b10101001ULL);
-
-constexpr unsigned long long operator""_foo(unsigned long long n) {
-  return n * 2;
-}
-static_assert(0b10001111_foo == 286, "");
-
-int k1 = 0b1234; // expected-error {{invalid digit '2' in binary constant}}
-// FIXME: If we ever need to support a standard suffix starting with [a-f],
-// we'll need to rework our binary literal parsing rules.
-int k2 = 0b10010f; // expected-error {{invalid digit 'f' in binary constant}}
-int k3 = 0b10010g; // expected-error {{invalid suffix 'g' on integer constant}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/digraph.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/digraph.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/digraph.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -ffreestanding %s
-// expected-no-diagnostics
-
-%:include <stdint.h>
-
-    %:ifndef BUFSIZE
-     %:define BUFSIZE  512
-    %:endif
-
-    void copy(char d<::>, const char s<::>, int len)
-    <%
-        while (len-- >= 0)
-        <%
-            d<:len:> = s<:len:>;
-        %>
-    %>

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/dollar-idents.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/dollar-idents.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/dollar-idents.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -dump-tokens %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -dump-tokens -x assembler-with-cpp %s 2>&1 | FileCheck %s --check-prefix=ASM
-// PR3808
-
-// CHECK: identifier '$A'
-// CHECK-ASM: identifier 'A'
-$A

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/eof-char.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/eof-char.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/eof-char.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// vim: set binary noeol:
-
-// This file intentionally ends without a \n on the last line.  Make sure your
-// editor doesn't add one.
-
-// expected-warning at +1{{missing terminating ' character}} expected-error at +1{{expected expression}} expected-error at +1{{expected ';'}}
-char c = '\
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/eof-file.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/eof-file.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/eof-file.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// vim: set binary noeol:
-
-// This file intentionally ends without a \n on the last line.  Make sure your
-// editor doesn't add one.
-
-// expected-error at +1{{expected expression}} expected-error at +1{{expected ';'}}
-char c = \
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/eof-string.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/eof-string.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/eof-string.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// vim: set binary noeol:
-
-// This file intentionally ends without a \n on the last line.  Make sure your
-// editor doesn't add one.
-
-// expected-warning at +1{{missing terminating '"' character}} expected-error at +1{{expected expression}} expected-error at +1{{expected ';'}}
-char c = "\
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/escape_newline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/escape_newline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/escape_newline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E -trigraphs %s | grep -- ' ->'
-// RUN: %clang_cc1 -E -trigraphs %s 2>&1 | grep 'backslash and newline separated by space'
-// RUN: %clang_cc1 -E -trigraphs %s 2>&1 | grep 'trigraph converted'
-// RUN: %clang_cc1 -E -CC -trigraphs %s
-
-// This is an ugly way to spell a -> token.
- -??/      
->
-
-// \
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/gnu_keywords.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/gnu_keywords.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/gnu_keywords.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -DGNU_KEYWORDS -std=gnu89 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -DGNU_KEYWORDS -std=c99 -fgnu-keywords -fsyntax-only -verify %s
-// RUN: %clang_cc1 -std=c99 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -std=gnu89 -fno-gnu-keywords -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-void f() {
-#ifdef GNU_KEYWORDS
-  asm ("ret" : :);
-#else
-  int asm;
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_extension.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_extension.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_extension.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-PED-NONE %s
-// RUN: %clang_cc1 -pedantic-errors -E %s -o - | FileCheck --check-prefix=CHECK-PED-ERR %s
-
-// CHECK-PED-NONE: no_dummy_extension
-#if !__has_extension(dummy_extension)
-int no_dummy_extension();
-#endif
-
-// Arbitrary feature to test that has_extension is a superset of has_feature
-// CHECK-PED-NONE: attribute_overloadable
-#if __has_extension(attribute_overloadable)
-int attribute_overloadable();
-#endif
-
-// CHECK-PED-NONE: has_c_static_assert
-// CHECK-PED-ERR: no_c_static_assert
-#if __has_extension(c_static_assert)
-int has_c_static_assert();
-#else
-int no_c_static_assert();
-#endif
-
-// CHECK-PED-NONE: has_c_generic_selections
-// CHECK-PED-ERR: no_c_generic_selections
-#if __has_extension(c_generic_selections)
-int has_c_generic_selections();
-#else
-int no_c_generic_selections();
-#endif
-
-// CHECK-PED-NONE: has_c_alignas
-// CHECK-PED-ERR: no_c_alignas
-#if __has_extension(c_alignas)
-int has_c_alignas();
-#else
-int no_c_alignas();
-#endif
-
-// Arbitrary feature to test that the extension name can be surrounded with
-// double underscores.
-// CHECK-PED-NONE: has_double_underscores
-#if __has_extension(__c_alignas__)
-int has_double_underscores();
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_extension_cxx.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_extension_cxx.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_extension_cxx.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -E %s -o - | FileCheck %s
-
-// CHECK: c_static_assert
-#if __has_extension(c_static_assert)
-int c_static_assert();
-#endif
-
-// CHECK: c_generic_selections
-#if __has_extension(c_generic_selections)
-int c_generic_selections();
-#endif
-
-// CHECK: has_deleted_functions
-#if __has_extension(cxx_deleted_functions)
-int has_deleted_functions();
-#endif
-
-// CHECK: has_inline_namespaces
-#if __has_extension(cxx_inline_namespaces)
-int has_inline_namespaces();
-#endif
-
-// CHECK: has_override_control
-#if __has_extension(cxx_override_control)
-int has_override_control();
-#endif
-
-// CHECK: has_range_for
-#if __has_extension(cxx_range_for)
-int has_range_for();
-#endif
-
-// CHECK: has_reference_qualified_functions
-#if __has_extension(cxx_reference_qualified_functions)
-int has_reference_qualified_functions();
-#endif
-
-// CHECK: has_rvalue_references
-#if __has_extension(cxx_rvalue_references)
-int has_rvalue_references();
-#endif
-
-#if __has_extension(cxx_local_type_template_args)
-int has_local_type_template_args();
-#else
-int no_local_type_template_args();
-#endif
-
-// CHECK: has_local_type_template_args
-
-#if __has_extension(cxx_binary_literals)
-int has_binary_literals();
-#endif
-
-// CHECK: has_binary_literals

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_address_sanitizer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_address_sanitizer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_address_sanitizer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E -fsanitize=address %s -o - | FileCheck --check-prefix=CHECK-ASAN %s
-// RUN: %clang_cc1 -E  %s -o - | FileCheck --check-prefix=CHECK-NO-ASAN %s
-
-#if __has_feature(address_sanitizer)
-int AddressSanitizerEnabled();
-#else
-int AddressSanitizerDisabled();
-#endif
-
-// CHECK-ASAN: AddressSanitizerEnabled
-// CHECK-NO-ASAN: AddressSanitizerDisabled

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_c1x.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_c1x.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_c1x.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c1x %s -o - | FileCheck --check-prefix=CHECK-1X %s
-// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-1X %s
-
-#if __has_feature(c_atomic)
-int has_atomic();
-#else
-int no_atomic();
-#endif
-
-// CHECK-1X: has_atomic
-// CHECK-NO-1X: no_atomic
-
-#if __has_feature(c_static_assert)
-int has_static_assert();
-#else
-int no_static_assert();
-#endif
-
-// CHECK-1X: has_static_assert
-// CHECK-NO-1X: no_static_assert
-
-#if __has_feature(c_generic_selections)
-int has_generic_selections();
-#else
-int no_generic_selections();
-#endif
-
-// CHECK-1X: has_generic_selections
-// CHECK-NO-1X: no_generic_selections
-
-#if __has_feature(c_alignas)
-int has_alignas();
-#else
-int no_alignas();
-#endif
-
-// CHECK-1X: has_alignas
-// CHECK-NO-1X: no_alignas
-
-#if __has_feature(c_thread_local)
-int has_thread_local();
-#else
-int no_thread_local();
-#endif
-
-// CHECK-1X: has_thread_local
-// CHECK-NO-1X: no_thread_local
-
-#if __STDC_VERSION__ > 199901L
-int is_c1x();
-#else
-int is_not_c1x();
-#endif
-
-// CHECK-1X: is_c1x
-// CHECK-NO-1X: is_not_c1x

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,348 +0,0 @@
-// RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-11 %s
-// RUN: %clang_cc1 -E -triple armv7-apple-darwin -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-NO-TLS %s
-// RUN: %clang_cc1 -E -triple x86_64-linux-gnu %s -o - | FileCheck --check-prefix=CHECK-NO-11 %s
-// RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++1y %s -o - | FileCheck --check-prefix=CHECK-1Y %s
-
-#if __has_feature(cxx_atomic)
-int has_atomic();
-#else
-int no_atomic();
-#endif
-
-// CHECK-1Y: has_atomic
-// CHECK-11: has_atomic
-// CHECK-NO-11: no_atomic
-
-#if __has_feature(cxx_lambdas)
-int has_lambdas();
-#else
-int no_lambdas();
-#endif
-
-// CHECK-1Y: has_lambdas
-// CHECK-11: has_lambdas
-// CHECK-NO-11: no_lambdas
-
-
-#if __has_feature(cxx_nullptr)
-int has_nullptr();
-#else
-int no_nullptr();
-#endif
-
-// CHECK-1Y: has_nullptr
-// CHECK-11: has_nullptr
-// CHECK-NO-11: no_nullptr
-
-
-#if __has_feature(cxx_decltype)
-int has_decltype();
-#else
-int no_decltype();
-#endif
-
-// CHECK-1Y: has_decltype
-// CHECK-11: has_decltype
-// CHECK-NO-11: no_decltype
-
-
-#if __has_feature(cxx_decltype_incomplete_return_types)
-int has_decltype_incomplete_return_types();
-#else
-int no_decltype_incomplete_return_types();
-#endif
-
-// CHECK-1Y: has_decltype_incomplete_return_types
-// CHECK-11: has_decltype_incomplete_return_types
-// CHECK-NO-11: no_decltype_incomplete_return_types
-
-
-#if __has_feature(cxx_auto_type)
-int has_auto_type();
-#else
-int no_auto_type();
-#endif
-
-// CHECK-1Y: has_auto_type
-// CHECK-11: has_auto_type
-// CHECK-NO-11: no_auto_type
-
-
-#if __has_feature(cxx_trailing_return)
-int has_trailing_return();
-#else
-int no_trailing_return();
-#endif
-
-// CHECK-1Y: has_trailing_return
-// CHECK-11: has_trailing_return
-// CHECK-NO-11: no_trailing_return
-
-
-#if __has_feature(cxx_attributes)
-int has_attributes();
-#else
-int no_attributes();
-#endif
-
-// CHECK-1Y: has_attributes
-// CHECK-11: has_attributes
-// CHECK-NO-11: no_attributes
-
-
-#if __has_feature(cxx_static_assert)
-int has_static_assert();
-#else
-int no_static_assert();
-#endif
-
-// CHECK-1Y: has_static_assert
-// CHECK-11: has_static_assert
-// CHECK-NO-11: no_static_assert
-
-#if __has_feature(cxx_deleted_functions)
-int has_deleted_functions();
-#else
-int no_deleted_functions();
-#endif
-
-// CHECK-1Y: has_deleted_functions
-// CHECK-11: has_deleted_functions
-// CHECK-NO-11: no_deleted_functions
-
-#if __has_feature(cxx_defaulted_functions)
-int has_defaulted_functions();
-#else
-int no_defaulted_functions();
-#endif
-
-// CHECK-1Y: has_defaulted_functions
-// CHECK-11: has_defaulted_functions
-// CHECK-NO-11: no_defaulted_functions
-
-#if __has_feature(cxx_rvalue_references)
-int has_rvalue_references();
-#else
-int no_rvalue_references();
-#endif
-
-// CHECK-1Y: has_rvalue_references
-// CHECK-11: has_rvalue_references
-// CHECK-NO-11: no_rvalue_references
-
-
-#if __has_feature(cxx_variadic_templates)
-int has_variadic_templates();
-#else
-int no_variadic_templates();
-#endif
-
-// CHECK-1Y: has_variadic_templates
-// CHECK-11: has_variadic_templates
-// CHECK-NO-11: no_variadic_templates
-
-
-#if __has_feature(cxx_inline_namespaces)
-int has_inline_namespaces();
-#else
-int no_inline_namespaces();
-#endif
-
-// CHECK-1Y: has_inline_namespaces
-// CHECK-11: has_inline_namespaces
-// CHECK-NO-11: no_inline_namespaces
-
-
-#if __has_feature(cxx_range_for)
-int has_range_for();
-#else
-int no_range_for();
-#endif
-
-// CHECK-1Y: has_range_for
-// CHECK-11: has_range_for
-// CHECK-NO-11: no_range_for
-
-
-#if __has_feature(cxx_reference_qualified_functions)
-int has_reference_qualified_functions();
-#else
-int no_reference_qualified_functions();
-#endif
-
-// CHECK-1Y: has_reference_qualified_functions
-// CHECK-11: has_reference_qualified_functions
-// CHECK-NO-11: no_reference_qualified_functions
-
-#if __has_feature(cxx_default_function_template_args)
-int has_default_function_template_args();
-#else
-int no_default_function_template_args();
-#endif
-
-// CHECK-1Y: has_default_function_template_args
-// CHECK-11: has_default_function_template_args
-// CHECK-NO-11: no_default_function_template_args
-
-#if __has_feature(cxx_noexcept)
-int has_noexcept();
-#else
-int no_noexcept();
-#endif
-
-// CHECK-1Y: has_noexcept
-// CHECK-11: has_noexcept
-// CHECK-NO-11: no_noexcept
-
-#if __has_feature(cxx_override_control)
-int has_override_control();
-#else
-int no_override_control();
-#endif
-
-// CHECK-1Y: has_override_control
-// CHECK-11: has_override_control
-// CHECK-NO-11: no_override_control
-
-#if __has_feature(cxx_alias_templates)
-int has_alias_templates();
-#else
-int no_alias_templates();
-#endif
-
-// CHECK-1Y: has_alias_templates
-// CHECK-11: has_alias_templates
-// CHECK-NO-11: no_alias_templates
-
-#if __has_feature(cxx_implicit_moves)
-int has_implicit_moves();
-#else
-int no_implicit_moves();
-#endif
-
-// CHECK-1Y: has_implicit_moves
-// CHECK-11: has_implicit_moves
-// CHECK-NO-11: no_implicit_moves
-
-#if __has_feature(cxx_alignas)
-int has_alignas();
-#else
-int no_alignas();
-#endif
-
-// CHECK-1Y: has_alignas
-// CHECK-11: has_alignas
-// CHECK-NO-11: no_alignas
-
-#if __has_feature(cxx_raw_string_literals)
-int has_raw_string_literals();
-#else
-int no_raw_string_literals();
-#endif
-
-// CHECK-1Y: has_raw_string_literals
-// CHECK-11: has_raw_string_literals
-// CHECK-NO-11: no_raw_string_literals
-
-#if __has_feature(cxx_unicode_literals)
-int has_unicode_literals();
-#else
-int no_unicode_literals();
-#endif
-
-// CHECK-1Y: has_unicode_literals
-// CHECK-11: has_unicode_literals
-// CHECK-NO-11: no_unicode_literals
-
-#if __has_feature(cxx_constexpr)
-int has_constexpr();
-#else
-int no_constexpr();
-#endif
-
-// CHECK-1Y: has_constexpr
-// CHECK-11: has_constexpr
-// CHECK-NO-11: no_constexpr
-
-#if __has_feature(cxx_generalized_initializers)
-int has_generalized_initializers();
-#else
-int no_generalized_initializers();
-#endif
-
-// CHECK-1Y: has_generalized_initializers
-// CHECK-11: has_generalized_initializers
-// CHECK-NO-11: no_generalized_initializers
-
-#if __has_feature(cxx_unrestricted_unions)
-int has_unrestricted_unions();
-#else
-int no_unrestricted_unions();
-#endif
-
-// CHECK-1Y: has_unrestricted_unions
-// CHECK-11: has_unrestricted_unions
-// CHECK-NO-11: no_unrestricted_unions
-
-#if __has_feature(cxx_user_literals)
-int has_user_literals();
-#else
-int no_user_literals();
-#endif
-
-// CHECK-1Y: has_user_literals
-// CHECK-11: has_user_literals
-// CHECK-NO-11: no_user_literals
-
-#if __has_feature(cxx_local_type_template_args)
-int has_local_type_template_args();
-#else
-int no_local_type_template_args();
-#endif
-
-// CHECK-1Y: has_local_type_template_args
-// CHECK-11: has_local_type_template_args
-// CHECK-NO-11: no_local_type_template_args
-
-#if __has_feature(cxx_inheriting_constructors)
-int has_inheriting_constructors();
-#else
-int no_inheriting_constructors();
-#endif
-
-// CHECK-1Y: has_inheriting_constructors
-// CHECK-11: has_inheriting_constructors
-// CHECK-NO-11: no_inheriting_constructors
-
-#if __has_feature(cxx_thread_local)
-int has_thread_local();
-#else
-int no_thread_local();
-#endif
-
-// CHECK-1Y: has_thread_local
-// CHECK-11: has_thread_local
-// CHECK-NO-11: no_thread_local
-// CHECK-NO-TLS: no_thread_local
-
-// === C++1y features ===
-
-#if __has_feature(cxx_binary_literals)
-int has_binary_literals();
-#else
-int no_binary_literals();
-#endif
-
-// CHECK-1Y: has_binary_literals
-// CHECK-11: no_binary_literals
-// CHECK-NO-11: no_binary_literals
-
-#if __has_feature(cxx_aggregate_nsdmi)
-int has_aggregate_nsdmi();
-#else
-int no_aggregate_nsdmi();
-#endif
-
-// CHECK-1Y: has_aggregate_nsdmi
-// CHECK-11: no_aggregate_nsdmi
-// CHECK-NO-11: no_aggregate_nsdmi

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E -fexceptions %s -o - | FileCheck --check-prefix=CHECK-EXCEPTIONS %s
-// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-EXCEPTIONS %s
-
-#if __has_feature(cxx_exceptions)
-int foo();
-#else
-int bar();
-#endif
-
-// CHECK-EXCEPTIONS: foo
-// CHECK-NO-EXCEPTIONS: bar

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_memory_sanitizer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_memory_sanitizer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_memory_sanitizer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E -fsanitize=memory %s -o - | FileCheck --check-prefix=CHECK-MSAN %s
-// RUN: %clang_cc1 -E  %s -o - | FileCheck --check-prefix=CHECK-NO-MSAN %s
-
-#if __has_feature(memory_sanitizer)
-int MemorySanitizerEnabled();
-#else
-int MemorySanitizerDisabled();
-#endif
-
-// CHECK-MSAN: MemorySanitizerEnabled
-// CHECK-NO-MSAN: MemorySanitizerDisabled

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_modules.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_modules.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_modules.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -E -fmodules %s -o - | FileCheck --check-prefix=CHECK-HAS-OBJC-MODULES %s
-// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-OBJC-MODULES %s
-// RUN: %clang_cc1 -E -x c -fmodules %s -o - | FileCheck --check-prefix=CHECK-NO-OBJC-MODULES %s
-
-// RUN: %clang_cc1 -E -fmodules %s -o - | FileCheck --check-prefix=CHECK-HAS-MODULES %s
-// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-MODULES %s
-// RUN: %clang_cc1 -E -x c -fmodules %s -o - | FileCheck --check-prefix=CHECK-HAS-MODULES %s
-
-#if __has_feature(modules)
-int has_modules();
-#else
-int no_modules();
-#endif
-
-// CHECK-HAS-MODULES: has_modules
-// CHECK-NO-MODULES: no_modules
-
-#if __has_feature(objc_modules)
-int has_objc_modules();
-#else
-int no_objc_modules();
-#endif
-
-// CHECK-HAS-OBJC-MODULES: has_objc_modules
-// CHECK-NO-OBJC-MODULES: no_objc_modules

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_objc_arc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_objc_arc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_objc_arc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -E %s -fobjc-arc "-triple" "x86_64-apple-macosx10.7.0"  -fobjc-runtime-has-weak | FileCheck --check-prefix=CHECK-ARC %s
-// RUN: %clang_cc1 -E %s -fobjc-arc "-triple" "x86_64-apple-macosx10.6.0" | FileCheck --check-prefix=CHECK-ARCLITE %s
-
-#if __has_feature(objc_arc)
-void has_objc_arc_feature();
-#else
-void no_objc_arc_feature();
-#endif
-
-#if __has_feature(objc_arc_weak)
-void has_objc_arc_weak_feature();
-#else
-void no_objc_arc_weak_feature();
-#endif
-
-// CHECK-ARC: void has_objc_arc_feature();
-// CHECK-ARC: void has_objc_arc_weak_feature();
-
-// CHECK-ARCLITE: void has_objc_arc_feature();
-// CHECK-ARCLITE: void no_objc_arc_weak_feature();

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_rtti.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_rtti.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_rtti.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-RTTI %s
-// RUN: %clang_cc1 -E -fno-rtti %s -o - | FileCheck --check-prefix=CHECK-NO-RTTI %s
-
-#if __has_feature(cxx_rtti)
-int foo();
-#else
-int bar();
-#endif
-
-// CHECK-RTTI: foo
-// CHECK-NO-RTTI: bar

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_thread_sanitizer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_thread_sanitizer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_thread_sanitizer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E -fsanitize=thread %s -o - | FileCheck --check-prefix=CHECK-TSAN %s
-// RUN: %clang_cc1 -E  %s -o - | FileCheck --check-prefix=CHECK-NO-TSAN %s
-
-#if __has_feature(thread_sanitizer)
-int ThreadSanitizerEnabled();
-#else
-int ThreadSanitizerDisabled();
-#endif
-
-// CHECK-TSAN: ThreadSanitizerEnabled
-// CHECK-NO-TSAN: ThreadSanitizerDisabled

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_type_traits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_type_traits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/has_feature_type_traits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -E %s -o - | FileCheck %s
-
-#if __has_feature(has_nothrow_assign)
-int has_nothrow_assign();
-#endif
-// CHECK: int has_nothrow_assign();
-
-#if __has_feature(has_nothrow_copy)
-int has_nothrow_copy();
-#endif
-// CHECK: int has_nothrow_copy();
-
-#if __has_feature(has_nothrow_constructor)
-int has_nothrow_constructor();
-#endif
-// CHECK: int has_nothrow_constructor();
-
-#if __has_feature(has_trivial_assign)
-int has_trivial_assign();
-#endif
-// CHECK: int has_trivial_assign();
-
-#if __has_feature(has_trivial_copy)
-int has_trivial_copy();
-#endif
-// CHECK: int has_trivial_copy();
-
-#if __has_feature(has_trivial_constructor)
-int has_trivial_constructor();
-#endif
-// CHECK: int has_trivial_constructor();
-
-#if __has_feature(has_trivial_destructor)
-int has_trivial_destructor();
-#endif
-// CHECK: int has_trivial_destructor();
-
-#if __has_feature(has_virtual_destructor)
-int has_virtual_destructor();
-#endif
-// CHECK: int has_virtual_destructor();
-
-#if __has_feature(is_abstract)
-int is_abstract();
-#endif
-// CHECK: int is_abstract();
-
-#if __has_feature(is_base_of)
-int is_base_of();
-#endif
-// CHECK: int is_base_of();
-
-#if __has_feature(is_class)
-int is_class();
-#endif
-// CHECK: int is_class();
-
-#if __has_feature(is_convertible_to)
-int is_convertible_to();
-#endif
-// CHECK: int is_convertible_to();
-
-#if __has_feature(is_empty)
-int is_empty();
-#endif
-// CHECK: int is_empty();
-
-#if __has_feature(is_enum)
-int is_enum();
-#endif
-// CHECK: int is_enum();
-
-#if __has_feature(is_final)
-int is_final();
-#endif
-// CHECK: int is_final();
-
-#if __has_feature(is_pod)
-int is_pod();
-#endif
-// CHECK: int is_pod();
-
-#if __has_feature(is_polymorphic)
-int is_polymorphic();
-#endif
-// CHECK: int is_polymorphic();
-
-#if __has_feature(is_union)
-int is_union();
-#endif
-// CHECK: int is_union();
-
-#if __has_feature(is_literal)
-int is_literal();
-#endif
-// CHECK: int is_literal();
-
-#if __has_feature(is_standard_layout)
-int is_standard_layout();
-#endif
-// CHECK: int is_standard_layout();
-
-#if __has_feature(is_trivially_copyable)
-int is_trivially_copyable();
-#endif
-// CHECK: int is_trivially_copyable();
-
-#if __has_feature(underlying_type)
-int underlying_type();
-#endif
-// CHECK: int underlying_type();

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/hexfloat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/hexfloat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/hexfloat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -pedantic %s
-float f = 0x1p+1; // expected-warning{{hexadecimal floating constants are a C99 feature}}
-double e = 0x.p0; //expected-error{{hexadecimal floating constants require a significand}}
-double d = 0x.2p2; // expected-warning{{hexadecimal floating constants are a C99 feature}}
-float g = 0x1.2p2; // expected-warning{{hexadecimal floating constants are a C99 feature}}
-double h = 0x1.p2; // expected-warning{{hexadecimal floating constants are a C99 feature}}
-
-// PR12717: In order to minimally diverge from the C++ standard, we do not lex
-// 'p[+-]' as part of a pp-number unless the token starts 0x and doesn't contain
-// an underscore.
-double i = 0p+3; // expected-error{{invalid suffix 'p' on integer constant}}
-#define PREFIX(x) foo ## x
-double foo0p = 1, j = PREFIX(0p+3); // ok
-double k = 0x42_amp+3; // expected-error-re{{invalid suffix '_amp' on integer constant|no matching literal operator for call to 'operator "" _amp'}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/long-long.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/long-long.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/long-long.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-/* RUN: %clang_cc1 -x c   -std=c89   -fsyntax-only -verify -pedantic-errors -Wno-empty-translation-unit %s
- * RUN: %clang_cc1 -x c   -std=c99   -fsyntax-only -verify -pedantic-errors -Wno-empty-translation-unit %s
- * RUN: %clang_cc1 -x c++ -std=c++98 -fsyntax-only -verify -pedantic-errors -Wno-empty-translation-unit %s
- * RUN: %clang_cc1 -x c++ -std=c++11 -fsyntax-only -verify -Wc++98-compat-pedantic -Wno-empty-translation-unit %s
- */
-
-#if !defined(__cplusplus)
-#  if __STDC_VERSION__ < 199901L
-/* expected-error at 21 {{'long long' is an extension when C99 mode is not enabled}} */
-#  else
-/* expected-no-diagnostics */
-#  endif
-#else
-#  if __cplusplus < 201103L
-/* expected-error at 21 {{'long long' is a C++11 extension}} */
-#  else
-/* expected-warning at 21 {{'long long' is incompatible with C++98}} */
-#  endif
-#endif
-
-#if 1 > 2LL
-#  error should not happen
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/ms-extensions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/ms-extensions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/ms-extensions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fms-extensions %s
-// RUN: %clang_cc1 -fsyntax-only -verify -fms-compatibility %s
-
-__int8 x1  = 3i8;
-__int16 x2 = 4i16;
-__int32 x3 = 5i32;
-__int64 x5 = 0x42i64;
-__int64 x6 = 0x42I64;
-__int64 x4 = 70000000i128;
-
-__int64 y = 0x42i64u;  // expected-error {{invalid suffix}}
-__int64 w = 0x43ui64; 
-__int64 z = 9Li64;  // expected-error {{invalid suffix}}
-__int64 q = 10lli64;  // expected-error {{invalid suffix}}
-
-// radar 7562363
-#define ULLONG_MAX 0xffffffffffffffffui64
-#define UINT 0xffffffffui32
-#define USHORT 0xffffui16
-#define UCHAR 0xffui8
-
-void a() {
-	unsigned long long m = ULLONG_MAX;
-	unsigned int n = UINT;
-        unsigned short s = USHORT;
-        unsigned char c = UCHAR;
-}
-
-void pr_7968()
-{
-  int var1 = 0x1111111e+1;
-  int var2 = 0X1111111e+1;
-  int var3 = 0xe+1;
-  int var4 = 0XE+1;
-
-  int var5=    0\
-x1234e+1;
-
-  int var6=
-  /*expected-warning {{backslash and newline separated by space}} */    0\       
-x1234e+1;                      
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/ms-extensions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/ms-extensions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/ms-extensions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wreserved-user-defined-literal -fms-extensions -fms-compatibility %s
-
-#define bar(x) #x
-const char * f() {
-  return "foo"bar("bar")"baz";    /*expected-warning {{identifier after literal will be treated as a reserved user-defined literal suffix in C++11}} */
-}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/msdos-cpm-eof.c
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/multiple-include.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/multiple-include.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/multiple-include.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only
-
-#ifndef XVID_AUTO_INCLUDE
-
-#define XVID_AUTO_INCLUDE
-#define FUNC_H      H_Pass_16_C
-#include "multiple-include.c"
-
-#define FUNC_H      H_Pass_8_C
-
-#include "multiple-include.c"
-#undef XVID_AUTO_INCLUDE
-
-typedef void ff();
-typedef struct { ff *a;} S;
-
-S s = { H_Pass_8_C };
-
-#endif 
-
-#if defined(XVID_AUTO_INCLUDE) && defined(REFERENCE_CODE)
-#elif defined(XVID_AUTO_INCLUDE) && !defined(REFERENCE_CODE)
-
-static void FUNC_H(){};
-#undef FUNC_H
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof-c++11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof-c++11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof-c++11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wnewline-eof -verify %s
-// expected-no-diagnostics
-
-// The following line isn't terminated, don't fix it.
-void foo() {}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof-c++98-compat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof-c++98-compat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof-c++98-compat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wc++98-compat-pedantic -std=c++11 -verify %s
-
-// The following line isn't terminated, don't fix it.
-void foo() {} // expected-warning{{C++98 requires newline at end of file}}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/newline-eof.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wnewline-eof -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wnewline-eof %s 2>&1 | FileCheck %s
-// rdar://9133072
-
-// Make sure the diagnostic shows up properly at the end of the last line.
-// CHECK: newline-eof.c:9:63
-
-// The following line isn't terminated, don't fix it.
-void foo() {} // expected-warning{{no newline at end of file}}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/numeric-literal-trash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/numeric-literal-trash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/numeric-literal-trash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only -verify %s
- * expected-no-diagnostics */
-# define XRECORD(x, c_name) e##c (x, __LINE__)
-
-
-
-int ec(int, int);
-
-
- void x() {
-
-XRECORD (XRECORD (1, 1), 1);
-    }

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/pragma-mark.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/pragma-mark.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/pragma-mark.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-// Lexer diagnostics shouldn't be included in #pragma mark.
-#pragma mark Mike's world
-_Pragma("mark foo ' bar")
-
-#define X(S) _Pragma(S)
-X("mark foo ' bar")
-
-int i;
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/pragma-message.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/pragma-message.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/pragma-message.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-/* Test pragma message directive from
-   http://msdn.microsoft.com/en-us/library/x7dkzch2.aspx */
-
-// message: Sends a string literal to the standard output without terminating
-// the compilation.
-// #pragma message(messagestring)
-// OR
-// #pragma message messagestring
-//
-// RUN: %clang_cc1 -fsyntax-only -verify -Werror %s
-#define STRING2(x) #x
-#define STRING(x) STRING2(x)
-#pragma message(":O I'm a message! " STRING(__LINE__)) // expected-warning {{:O I'm a message! 13}}
-#pragma message ":O gcc accepts this! " STRING(__LINE__) // expected-warning {{:O gcc accepts this! 14}}
-
-#pragma message(invalid) // expected-error {{expected string literal in pragma message}}
-
-// GCC supports a similar pragma, #pragma GCC warning (which generates a warning
-// message) and #pragma GCC error (which generates an error message).
-
-#pragma GCC warning(":O I'm a message! " STRING(__LINE__)) // expected-warning {{:O I'm a message! 21}}
-#pragma GCC warning ":O gcc accepts this! " STRING(__LINE__) // expected-warning {{:O gcc accepts this! 22}}
-
-#pragma GCC error(":O I'm a message! " STRING(__LINE__)) // expected-error {{:O I'm a message! 24}}
-#pragma GCC error ":O gcc accepts this! " STRING(__LINE__) // expected-error {{:O gcc accepts this! 25}}
-
-#define COMPILE_ERROR(x) _Pragma(STRING2(GCC error(x)))
-COMPILE_ERROR("Compile error at line " STRING(__LINE__) "!"); // expected-error {{Compile error at line 28!}}
-
-#pragma message // expected-error {{pragma message requires parenthesized string}}
-#pragma GCC warning("" // expected-error {{pragma warning requires parenthesized string}}
-#pragma GCC error(1) // expected-error {{expected string literal in pragma error}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/pragma-message2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/pragma-message2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/pragma-message2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -E -Werror -verify %s 2>&1 | FileCheck %s
-
-#pragma message "\\test" // expected-warning {{\test}}
-// CHECK: #pragma message("\134test")
-
-#pragma message("\\test") // expected-warning {{\test}}
-// CHECK: #pragma message("\134test")
-
-#pragma GCC warning "\"" "te" "st" "\"" // expected-warning {{"test"}}
-// CHECK: #pragma GCC warning "\042test\042"
-
-#pragma GCC warning("\"" "te" "st" "\"") // expected-warning {{"test"}}
-// CHECK: #pragma GCC warning "\042test\042"
-
-#pragma GCC error "" "[	]" "" // expected-error {{[	]}}
-// CHECK: #pragma GCC error "[\011]"
-
-#pragma GCC error("" "[	]" "") // expected-error {{[	]}}
-// CHECK: #pragma GCC error "[\011]"

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/pragma-operators.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/pragma-operators.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/pragma-operators.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -std=c++11 -E %s | FileCheck %s
-
-// Test that we properly expand the C99 _Pragma and Microsoft __pragma
-// into #pragma directives, with newlines where needed. <rdar://problem/8412013>
-
-// CHECK: #line
-// CHECK: #pragma warning(push)
-// CHECK: extern "C" {
-// CHECK: #line
-// CHECK: #pragma warning(push)
-// CHECK:  int foo() { return 0; } }
-// CHECK: #pragma warning(pop)
-#define A(X) extern "C" { __pragma(warning(push)) \
-  int X() { return 0; } \
-}
-#define B(X) A(X)
-#pragma warning(push)
-B(foo)
-#pragma warning(pop)
-
-#define pragma_L _Pragma(L"GCC diagnostic push")
-#define pragma_u8 _Pragma(u8"system_header")
-#define pragma_u _Pragma(u"GCC diagnostic pop")
-#define pragma_U _Pragma(U"comment(lib, \"libfoo\")")
-#define pragma_R _Pragma(R"(clang diagnostic ignored "-Wunused")")
-#define pragma_UR _Pragma(UR"(clang diagnostic error "-Wunused")")
-#define pragma_hello _Pragma(u8R"x(message R"y("Hello", world!)y")x")
-// CHECK: int n =
-// CHECK: #pragma GCC diagnostic push
-// CHECK: #pragma system_header
-// CHECK: #pragma GCC diagnostic pop
-// CHECK: #pragma comment(lib, "libfoo")
-// CHECK: #pragma clang diagnostic ignored "-Wunused"
-// CHECK: #pragma clang diagnostic error "-Wunused"
-// CHECK: #pragma message("\042Hello\042, world!")
-// CHECK: 0;
-int n = pragma_L pragma_u8 pragma_u pragma_U pragma_R pragma_UR pragma_hello 0;

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/pragma-region.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/pragma-region.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/pragma-region.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-/* Test pragma region directive from
-   http://msdn.microsoft.com/en-us/library/b6xkz944(v=vs.80).aspx */
-
-// Editor-only pragma, just skipped by compiler.
-// Syntax:
-// #pragma region optional name
-// #pragma endregion optional comment
-//
-// RUN: %clang_cc1 -fsyntax-only -verify -Wall -fms-extensions %s
-
-#pragma region
-/* inner space */
-#pragma endregion
-
-#pragma region long name
-/* inner space */
-void foo(void){}
-#pragma endregion long comment
-
-void inner();
-
-__pragma(region) // no sense, but ignored
-_Pragma("region")// ditto
-
-#pragma region2 // expected-warning {{unknown pragma ignored}}
-
-#pragma region one
-#pragma region inner
-//#pragma endregion inner
-
-#pragma endregion end
-
-// {{unclosed pragma region}} - region mismatches is not detected yet

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/preamble.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/preamble.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/preamble.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// Preamble detection test: see below for comments and test commands.
-//* A BCPL comment that includes '/*'
-#include <blah>
-#ifndef FOO
-#else
-#ifdef BAR
-#elif WIBBLE
-#endif
-#pragma unknown
-#endif
-#ifdef WIBBLE
-#include "honk"
-#else
-int foo();
-#endif
-
-// This test checks for detection of the preamble of a file, which
-// includes all of the starting comments and #includes. Note that any
-// changes to the preamble part of this file must be mirrored in
-// Inputs/preamble.txt, since we diff against it.
-
-// RUN: %clang_cc1 -print-preamble %s > %t
-// RUN: echo END. >> %t
-// RUN: FileCheck < %t %s
-
-// CHECK: // Preamble detection test: see below for comments and test commands.
-// CHECK-NEXT: //* A BCPL comment that includes '/*'
-// CHECK-NEXT: #include <blah>
-// CHECK-NEXT: #ifndef FOO
-// CHECK-NEXT: #else
-// CHECK-NEXT: #ifdef BAR
-// CHECK-NEXT: #elif WIBBLE
-// CHECK-NEXT: #endif
-// CHECK-NEXT: #pragma unknown
-// CHECK-NEXT: #endif
-// CHECK-NEXT: END.

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/rdar-8914293.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/rdar-8914293.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/rdar-8914293.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// rdar://8914293
-// We want be compatible with gcc and warn, not error.
-
-/* expected-warning {{missing terminating}} */ #define FOO "foo
-/* expected-warning {{missing terminating}} */ #define KOO 'k

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/rdr-6096838-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/rdr-6096838-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/rdr-6096838-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-/* RUN: %clang_cc1 -triple x86_64-unknown-unknown -pedantic -std=gnu89 -fsyntax-only -verify %s
- rdar://6096838
- */
-
-long double d = 0x0.0000003ffffffff00000p-16357L; /* expected-warning {{hexadecimal floating constants are a C99 feature}} */

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/rdr-6096838.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/rdr-6096838.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/rdr-6096838.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-/* RUN: %clang_cc1 -triple i386-unknown-unknown -fsyntax-only -verify %s
- * RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=gnu89 -fsyntax-only -verify %s
- rdar://6096838
- */
-// expected-no-diagnostics
-
-long double d = 0x0.0000003ffffffff00000p-16357L;

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/string-literal-encoding.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/string-literal-encoding.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/string-literal-encoding.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -x c++ -std=c++0x -fsyntax-only -verify %s
-
-// This file should be encoded using ISO-8859-1, the string literals should
-// contain the ISO-8859-1 encoding for the code points U+00C0 U+00E9 U+00EE
-// U+00F5 U+00FC
-
-void f() {
-    wchar_t const *a = L"\xC0\xE9\xEE\xF5\xFC"; // expected-error {{illegal character encoding in string literal}}
-
-    char16_t const *b = u"\xC0\xE9\xEE\xF5\xFC"; // expected-error {{illegal character encoding in string literal}}
-    char32_t const *c = U"\xC0\xE9\xEE\xF5\xFC"; // expected-error {{illegal character encoding in string literal}}
-    wchar_t const *d = LR"(\xC0\xE9\xEE\xF5\xFC)"; // expected-error {{illegal character encoding in string literal}}
-    char16_t const *e = uR"(\xC0\xE9\xEE\xF5\xFC)"; // expected-error {{illegal character encoding in string literal}}
-    char32_t const *f = UR"(\xC0\xE9\xEE\xF5\xFC)"; // expected-error {{illegal character encoding in string literal}}
-
-    char const *g = "\xC0\xE9\xEE\xF5\xFC"; // expected-warning {{illegal character encoding in string literal}}
-    char const *h = u8"\xC0\xE9\xEE\xF5\xFC"; // expected-error {{illegal character encoding in string literal}}
-    char const *i = R"(\xC0\xE9\xEE\xF5\xFC)"; // expected-warning {{illegal character encoding in string literal}}
-}
-
-void g() {
-    wchar_t const *a = L"foo \xC0\xE9\xEE\xF5\xFC"; // expected-error {{illegal character encoding in string literal}}
-
-    char16_t const *b = u"foo \xC0\xE9\xEE\xF5\xFC"; // expected-error {{illegal character encoding in string literal}}
-    char32_t const *c = U"foo \xC0\xE9\xEE\xF5\xFC"; // expected-error {{illegal character encoding in string literal}}
-    wchar_t const *d = LR"(foo \xC0\xE9\xEE\xF5\xFC)"; // expected-error {{illegal character encoding in string literal}}
-    char16_t const *e = uR"(foo \xC0\xE9\xEE\xF5\xFC)"; // expected-error {{illegal character encoding in string literal}}
-    char32_t const *f = UR"(foo \xC0\xE9\xEE\xF5\xFC)"; // expected-error {{illegal character encoding in string literal}}
-
-    char const *g = "foo \xC0\xE9\xEE\xF5\xFC"; // expected-warning {{illegal character encoding in string literal}}
-    char const *h = u8"foo \xC0\xE9\xEE\xF5\xFC"; // expected-error {{illegal character encoding in string literal}}
-    char const *i = R"(foo \xC0\xE9\xEE\xF5\xFC)"; // expected-warning {{illegal character encoding in string literal}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/string-literal-errors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/string-literal-errors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/string-literal-errors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck -strict-whitespace %s
-
-void foo() {
-  (void)"\q \u123z \x \U \U123 \U12345 \u123 \xyzzy \777 \U"
-  // CHECK: {{^  \(void\)"\\q \\u123z \\x \\U \\U123 \\U12345 \\u123 \\xyzzy \\777 \\U"$}}
-  //
-  //              (void)"\q \u123z \x \U \U123 \U12345 \u123 \xyzzy \777 \U"
-  // CHECK: {{^         \^~$}}
-  // CHECK: {{^            \^~~~~$}}
-  // CHECK: {{^                   \^~$}}
-  // CHECK: {{^                      \^~$}}
-  // CHECK: {{^                         \^~~~~$}}
-  // CHECK: {{^                               \^~~~~~~$}}
-  // CHECK: {{^                                       \^~~~~$}}
-  // CHECK: {{^                                             \^~$}}
-  // CHECK: {{^                                                    \^~~~$}}
-  // CHECK: {{^                                                         \^~$}}
-
-  "123 \x \z";
-  // CHECK: {{^  "123 \\x \\z";$}}
-  //
-  //              "123 \x \z";
-  // CHECK: {{^       \^~$}}
-  // CHECK: {{^          \^~$}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/string_concat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/string_concat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/string_concat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -std=c11 -x c -fsyntax-only -verify %s
-
-#ifndef __cplusplus
-typedef __WCHAR_TYPE__ wchar_t;
-typedef __CHAR16_TYPE__ char16_t;
-typedef __CHAR32_TYPE__ char32_t;
-#endif
-
-void f() {
-
-  const char* a = u8"abc" u"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char* b = u8"abc" U"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char* c = u8"abc" L"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-#ifdef __cplusplus
-  const char* d = u8"abc" uR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char* e = u8"abc" UR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char* f = u8"abc" LR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-#endif
-
-  const char16_t* g = u"abc" u8"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char16_t* h = u"abc" U"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char16_t* i = u"abc" L"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-#ifdef __cplusplus
-  const char16_t* j = u"abc" u8R"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char16_t* k = u"abc" UR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char16_t* l = u"abc" LR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-#endif
-
-  const char32_t* m = U"abc" u8"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char32_t* n = U"abc" u"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char32_t* o = U"abc" L"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-#ifdef __cplusplus
-  const char32_t* p = U"abc" u8R"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char32_t* q = U"abc" uR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const char32_t* r = U"abc" LR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-#endif
-
-  const wchar_t* s = L"abc" u8"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const wchar_t* t = L"abc" u"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const wchar_t* u = L"abc" U"abc"; // expected-error {{unsupported non-standard concatenation of string literals}}
-#ifdef __cplusplus
-  const wchar_t* v = L"abc" u8R"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const wchar_t* w = L"abc" uR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-  const wchar_t* x = L"abc" UR"(abc)"; // expected-error {{unsupported non-standard concatenation of string literals}}
-#endif
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/token-concat.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/token-concat.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/token-concat.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-
-IDENT.2
-// CHECK: {{^}}IDENT.2{{$}}
-
-
-// PR4395
-#define X .*
-X
-// CHECK: {{^}}.*{{$}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/token-concat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/token-concat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/token-concat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -E -std=c++11 -o - %s | FileCheck %s
-
-#define id(x) x
-id("s")_x // CHECK: "s" _x
-id(L"s")_x // CHECK: L"s" _x
-id(u8"s")_x // CHECK: u8"s" _x
-id(u"s")_x // CHECK: u"s" _x
-id(U"s")_x // CHECK: U"s" _x
-id('s')_x // CHECK: 's' _x
-id(L's')_x // CHECK: L's' _x
-id(u's')_x // CHECK: u's' _x
-id(U's')_x // CHECK: U's' _x
-id("s"_x)_y // CHECK: "s"_x _y
-id(1.0_)f // CHECK: 1.0_ f
-id(1.0)_f // CHECK: 1.0 _f
-id(0xface+)b_count // CHECK: 0xface+ b_count
-id("s")1 // CHECK: "s"1
-id("s"_x)1 // CHECK: "s"_x 1
-id(1)_2_x // CHECK: 1 _2_x

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/unicode-strings.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/unicode-strings.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/unicode-strings.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -x c -std=c11 -Werror %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -Werror %s
-// RUN: %clang_cc1 -x c -std=c11 -Wc99-compat -verify %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -Wc++98-compat -verify %s
-
-#ifndef __cplusplus
-typedef __CHAR16_TYPE__ char16_t;
-typedef __CHAR32_TYPE__ char32_t;
-#else
-// expected-warning at 17 {{'char16_t' type specifier is incompatible with C++98}}
-// expected-warning at 18 {{'char32_t' type specifier is incompatible with C++98}}
-// expected-warning at 20 {{'char16_t' type specifier is incompatible with C++98}}
-// expected-warning at 21 {{'char32_t' type specifier is incompatible with C++98}}
-#endif
-
-const char *a = u8"abcd"; // expected-warning {{unicode literals are incompatible with}}
-const char16_t *b = u"abcd"; // expected-warning {{unicode literals are incompatible with}}
-const char32_t *c = U"abcd"; // expected-warning {{unicode literals are incompatible with}}
-
-char16_t d = u'a'; // expected-warning {{unicode literals are incompatible with}}
-char32_t e = U'a'; // expected-warning {{unicode literals are incompatible with}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/unicode.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/unicode.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/unicode.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -E -DPP_ONLY=1 %s -o %t
-// RUN: FileCheck --strict-whitespace --input-file=%t %s
-
-// This file contains Unicode characters; please do not "fix" them!
-
-extern int x; // expected-warning {{treating Unicode character as whitespace}}
-extern int x; // expected-warning {{treating Unicode character as whitespace}}
-
-// CHECK: extern int {{x}}
-// CHECK: extern int {{x}}
-
-#pragma mark ¡Unicode!
-
-#define COPYRIGHT Copyright © 2012
-#define XSTR(X) #X
-#define STR(X) XSTR(X)
-
-static const char *copyright = STR(COPYRIGHT); // no-warning
-// CHECK: static const char *copyright = "Copyright © {{2012}}";
-
-#if PP_ONLY
-COPYRIGHT
-// CHECK: Copyright © {{2012}}
-CHECK: The preprocessor should not complain about Unicode characters like ©.
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/unknown-char.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/unknown-char.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/unknown-char.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -E -verify %s
-// expected-no-diagnostics
-
- ` ` ` `

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/utf-16.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/utf-16.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/utf-16.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// rdar://7876588
-
-// This test verifies that clang gives a decent error for UTF-16 source files.
-
-#include "utf-16.c.txt" // expected-error {{UTF-16 (LE) byte order mark detected}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/utf8-char-literal.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/utf8-char-literal.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/utf8-char-literal.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c11 -x c -fsyntax-only -verify %s
-
-int array0[u'ñ' == u'\xf1'? 1 : -1];
-int array1['\xF1' !=  u'\xf1'? 1 : -1];
-int array1['ñ' !=  u'\xf1'? 1 : -1]; // expected-error {{character too large for enclosing character literal type}}

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/utf8-invalid.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/utf8-invalid.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/utf8-invalid.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -E %s -o /dev/null
-
-// Note: This file deliberately contains invalid UTF-8. Please do not fix!
-
-extern int \x82x; // expected-error{{source file is not valid UTF-8}}
-
-#if 0
-// Don't warn about bad UTF-8 in raw lexing mode.
-extern int \x82x;
-#endif
-
-// Don't warn about bad UTF-8 in preprocessor directives.
-#define x82 \x82
-#pragma mark \x82

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/wchar-signedness.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/wchar-signedness.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/wchar-signedness.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -dM -E %s -triple x86_64-none-linux-gnu | FileCheck %s --check-prefix=X86
-// RUN: %clang_cc1 -fsyntax-only -dM -E %s -triple armv7-none-eabi | FileCheck %s --check-prefix=ARM
-
-// CHECK-X86-NOT: #define __WCHAR_UNSIGNED__
-// CHECK-X86: #define __WINT_UNSIGNED__ 1
-
-// CHECK-ARM: #define __WCHAR_UNSIGNED__ 1
-// CHECK-ARM-NOT: #define __WINT_UNSIGNED__ 1

Modified: trunk/contrib/llvm/tools/clang/test/Lexer/wchar.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Lexer/wchar.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Lexer/wchar.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fshort-wchar -verify %s
-
-void f() {
-  (void)L"\U00010000"; // unicode escape produces UTF-16 sequence, so no warning
-
-  (void)L'\U00010000'; // expected-error {{character too large for enclosing character literal type}}
-
-  (void)L'ab';  // expected-warning {{extraneous characters in character constant ignored}}
-
-  (void)L'a\u1000';  // expected-warning {{extraneous characters in character constant ignored}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/Inputs/include.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/Inputs/include.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/Inputs/include.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#define EQUALS(a,b) a == b
-
-int foo(int x) { return x; }

Modified: trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int *f(float *fp) { return fp; }

Modified: trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file-2
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file-2	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file-2	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#include "nonexistent.h"
-
-int *f() { return fp; }

Modified: trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file-3
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file-3	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/Inputs/remapped-file-3	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-extern float *fp;
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/Inputs/working-directory.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/Inputs/working-directory.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/Inputs/working-directory.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-typedef int Foo;

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++11 -ast-dump -ast-dump-filter Test %s | FileCheck --strict-whitespace %s
-
-int TestLocation
-__attribute__((unused));
-// CHECK:      VarDecl{{.*}}TestLocation
-// CHECK-NEXT:   UnusedAttr 0x{{[^ ]*}} <line:[[@LINE-2]]:16>
-
-int TestIndent
-__attribute__((unused));
-// CHECK:      {{^}}VarDecl{{.*TestIndent[^()]*$}}
-// CHECK-NEXT: {{^}}`-UnusedAttr{{[^()]*$}}
-
-void TestAttributedStmt() {
-  switch (1) {
-  case 1:
-    [[clang::fallthrough]];
-  case 2:
-    ;
-  }
-}
-// CHECK:      FunctionDecl{{.*}}TestAttributedStmt
-// CHECK:      AttributedStmt
-// CHECK-NEXT:   FallThroughAttr
-// CHECK-NEXT:   NullStmt
-
-[[clang::warn_unused_result]] int TestCXX11DeclAttr();
-// CHECK:      FunctionDecl{{.*}}TestCXX11DeclAttr
-// CHECK-NEXT:   WarnUnusedResultAttr
-
-int TestAlignedNull __attribute__((aligned));
-// CHECK:      VarDecl{{.*}}TestAlignedNull
-// CHECK-NEXT:   AlignedAttr
-// CHECK-NEXT:     <<<NULL>>>
-
-int TestAlignedExpr __attribute__((aligned(4)));
-// CHECK:      VarDecl{{.*}}TestAlignedExpr
-// CHECK-NEXT:   AlignedAttr
-// CHECK-NEXT:     IntegerLiteral
-
-int TestEnum __attribute__((visibility("default")));
-// CHECK:      VarDecl{{.*}}TestEnum
-// CHECK-NEXT:   VisibilityAttr{{.*}} Default
-
-class __attribute__((lockable)) Mutex {
-} mu1, mu2;
-int TestExpr __attribute__((guarded_by(mu1)));
-// CHECK:      VarDecl{{.*}}TestExpr
-// CHECK-NEXT:   GuardedByAttr
-// CHECK-NEXT:     DeclRefExpr{{.*}}mu1
-
-class Mutex TestVariadicExpr __attribute__((acquired_after(mu1, mu2)));
-// CHECK:      VarDecl{{.*}}TestVariadicExpr
-// CHECK:        AcquiredAfterAttr
-// CHECK-NEXT:     DeclRefExpr{{.*}}mu1
-// CHECK-NEXT:     DeclRefExpr{{.*}}mu2
-
-void function1(void *) {
-  int TestFunction __attribute__((cleanup(function1)));
-}
-// CHECK:      VarDecl{{.*}}TestFunction
-// CHECK-NEXT:   CleanupAttr{{.*}} Function{{.*}}function1
-
-void TestIdentifier(void *, int)
-__attribute__((pointer_with_type_tag(ident1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestIdentifier
-// CHECK:   ArgumentWithTypeTagAttr{{.*}} ident1
-
-void TestBool(void *, int)
-__attribute__((pointer_with_type_tag(bool1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestBool
-// CHECK:   ArgumentWithTypeTagAttr{{.*}} IsPointer
-
-void TestUnsigned(void *, int)
-__attribute__((pointer_with_type_tag(unsigned1,1,2)));
-// CHECK: FunctionDecl{{.*}}TestUnsigned
-// CHECK:   ArgumentWithTypeTagAttr{{.*}} 0 1
-
-void TestInt(void) __attribute__((constructor(123)));
-// CHECK:      FunctionDecl{{.*}}TestInt
-// CHECK-NEXT:   ConstructorAttr{{.*}} 123
-
-int TestString __attribute__((alias("alias1")));
-// CHECK:      VarDecl{{.*}}TestString
-// CHECK-NEXT:   AliasAttr{{.*}} "alias1"
-
-extern struct s1 TestType
-__attribute__((type_tag_for_datatype(ident1,int)));
-// CHECK:      VarDecl{{.*}}TestType
-// CHECK-NEXT:   TypeTagForDatatypeAttr{{.*}} int
-
-void *TestVariadicUnsigned1(int) __attribute__((alloc_size(1)));
-// CHECK: FunctionDecl{{.*}}TestVariadicUnsigned1
-// CHECK:   AllocSizeAttr{{.*}} 0
-
-void *TestVariadicUnsigned2(int, int) __attribute__((alloc_size(1,2)));
-// CHECK: FunctionDecl{{.*}}TestVariadicUnsigned2
-// CHECK:   AllocSizeAttr{{.*}} 0 1

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-color.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-color.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-color.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++11 -ast-dump -fcolor-diagnostics %s | FileCheck --strict-whitespace %s
-// REQUIRES: ansi-escape-sequences
-
-/// <a>Hello</a>
-/// <br/>
-int Test __attribute__((unused));
-
-/// Comment
-void TestAttributedStmt() {
-  switch (1) {
-  case 1:
-    [[clang::fallthrough]];
-  case 2:
-    ;
-  }
-}
-
-class __attribute__((lockable)) Mutex {
-  /// A variable
-  int var1;
-  /// Another variable
-  ///
-  /// Like the other variable, but different
-  int var2;
-} mu1, mu2;
-int TestExpr __attribute__((guarded_by(mu1)));
-
-//CHECK: {{^}}[[Blue:.\[0;34m]][[RESET:.\[0m]][[GREEN:.\[0;1;32m]]TranslationUnitDecl[[RESET]][[Yellow:.\[0;33m]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]>[[CYAN:.\[0;1;36m]] __int128_t[[RESET]] [[Green:.\[0;32m]]'__int128'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]>[[CYAN]] __uint128_t[[RESET]] [[Green]]'unsigned __int128'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]TypedefDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]<invalid sloc>[[RESET]]>[[CYAN]] __builtin_va_list[[RESET]] [[Green]]'__va_list_tag [1]'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]{{.*}}ast-dump-color.cpp:6:1[[RESET]], [[Yellow]]col:5[[RESET]]>[[CYAN]] Test[[RESET]] [[Green]]'int'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |-[[RESET]][[BLUE:.\[0;1;34m]]UnusedAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:25[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| `-[[RESET]][[YELLOW:.\[0;1;33m]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]|   `-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]], [[Yellow]]line:5:8[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]|     |-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:4:4[[RESET]]> Text=" "{{$}}
-//CHECK: {{^}}[[Blue]]|     |-[[RESET]][[YELLOW]]HTMLStartTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:5[[RESET]], [[Yellow]]col:7[[RESET]]> Name="a"{{$}}
-//CHECK: {{^}}[[Blue]]|     |-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]], [[Yellow]]col:12[[RESET]]> Text="Hello"{{$}}
-//CHECK: {{^}}[[Blue]]|     |-[[RESET]][[YELLOW]]HTMLEndTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:13[[RESET]], [[Yellow]]col:16[[RESET]]> Name="a"{{$}}
-//CHECK: {{^}}[[Blue]]|     |-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:5:4[[RESET]]> Text=" "{{$}}
-//CHECK: {{^}}[[Blue]]|     `-[[RESET]][[YELLOW]]HTMLStartTagComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:5[[RESET]], [[Yellow]]col:8[[RESET]]> Name="br" SelfClosing{{$}}
-//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]FunctionDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:9:1[[RESET]], [[Yellow]]line:16:1[[RESET]]>[[CYAN]] TestAttributedStmt[[RESET]] [[Green]]'void (void)'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |-[[RESET]][[MAGENTA:.\[0;1;35m]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:9:27[[RESET]], [[Yellow]]line:16:1[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]SwitchStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:10:3[[RESET]], [[Yellow]]line:15:3[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |   |-[[RESET]][[Blue:.\[0;34m]]<<<NULL>>>[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |   |-[[RESET]][[MAGENTA]]IntegerLiteral[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:10:11[[RESET]]> [[Green]]'int'[[RESET]][[Cyan:.\[0;36m]][[RESET]][[Cyan]][[RESET]][[CYAN]] 1[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |   `-[[RESET]][[MAGENTA]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:14[[RESET]], [[Yellow]]line:15:3[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |     |-[[RESET]][[MAGENTA]]CaseStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:11:3[[RESET]], [[Yellow]]line:12:27[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |     | |-[[RESET]][[MAGENTA]]IntegerLiteral[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:11:8[[RESET]]> [[Green]]'int'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]][[CYAN]] 1[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |     | |-[[RESET]][[Blue]]<<<NULL>>>[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |     | `-[[RESET]][[MAGENTA]]AttributedStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:12:5[[RESET]], [[Yellow]]col:27[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |     |   |-[[RESET]][[BLUE]]FallThroughAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:7[[RESET]], [[Yellow]]col:14[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |     |   `-[[RESET]][[MAGENTA]]NullStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:27[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |     `-[[RESET]][[MAGENTA]]CaseStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:13:3[[RESET]], [[Yellow]]line:14:5[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |       |-[[RESET]][[MAGENTA]]IntegerLiteral[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:13:8[[RESET]]> [[Green]]'int'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]][[CYAN]] 2[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |       |-[[RESET]][[Blue]]<<<NULL>>>[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |       `-[[RESET]][[MAGENTA]]NullStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:14:5[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| `-[[RESET]][[YELLOW]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:8:4[[RESET]], [[Yellow]]col:11[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]|   `-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:4[[RESET]], [[Yellow]]col:11[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]|     `-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:4[[RESET]], [[Yellow]]col:11[[RESET]]> Text=" Comment"{{$}}
-//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]CXXRecordDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:1[[RESET]], [[Yellow]]line:25:1[[RESET]]> class[[CYAN]] Mutex[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |-[[RESET]][[BLUE]]LockableAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:22[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXRecordDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:1[[RESET]], [[Yellow]]col:33[[RESET]]> class[[CYAN]] Mutex[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]FieldDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:20:3[[RESET]], [[Yellow]]col:7[[RESET]]>[[CYAN]] var1[[RESET]] [[Green]]'int'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[YELLOW]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:19:6[[RESET]], [[Yellow]]col:16[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |   `-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:16[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |     `-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:16[[RESET]]> Text=" A variable"{{$}}
-//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]FieldDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:24:3[[RESET]], [[Yellow]]col:7[[RESET]]>[[CYAN]] var2[[RESET]] [[Green]]'int'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[YELLOW]]FullComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:21:6[[RESET]], [[Yellow]]line:23:44[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |   |-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:21:6[[RESET]], [[Yellow]]col:22[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |   | `-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:22[[RESET]]> Text=" Another variable"{{$}}
-//CHECK: {{^}}[[Blue]]| |   `-[[RESET]][[YELLOW]]ParagraphComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:23:6[[RESET]], [[Yellow]]col:44[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |     `-[[RESET]][[YELLOW]]TextComment[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:6[[RESET]], [[Yellow]]col:44[[RESET]]> Text=" Like the other variable, but different"{{$}}
-//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:33[[RESET]]>[[CYAN]] Mutex[[RESET]] [[Green]]'void (void)'[[RESET]] inline{{$}}
-//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[MAGENTA]]CompoundStmt[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]| |-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]>[[CYAN]] Mutex[[RESET]] [[Green]]'void (const class Mutex &)'[[RESET]] inline{{$}}
-//CHECK: {{^}}[[Blue]]| | `-[[RESET]][[GREEN]]ParmVarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]> [[Green]]'const class Mutex &'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| `-[[RESET]][[GREEN]]CXXConstructorDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]>[[CYAN]] Mutex[[RESET]] [[Green]]'void (class Mutex &&)'[[RESET]] inline{{$}}
-//CHECK: {{^}}[[Blue]]|   `-[[RESET]][[GREEN]]ParmVarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:33[[RESET]]> [[Green]]'class Mutex &&'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:1[[RESET]], [[Yellow]]line:25:3[[RESET]]>[[CYAN]] mu1[[RESET]] [[Green]]'class Mutex':'class Mutex'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| `-[[RESET]][[MAGENTA]]CXXConstructExpr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:3[[RESET]]> [[Green]]'class Mutex':'class Mutex'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]] [[Green]]'void (void)'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]|-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:18:1[[RESET]], [[Yellow]]line:25:8[[RESET]]>[[CYAN]] mu2[[RESET]] [[Green]]'class Mutex':'class Mutex'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]| `-[[RESET]][[MAGENTA]]CXXConstructExpr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:8[[RESET]]> [[Green]]'class Mutex':'class Mutex'[[RESET]][[Cyan]][[RESET]][[Cyan]][[RESET]] [[Green]]'void (void)'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]`-[[RESET]][[GREEN]]VarDecl[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]line:26:1[[RESET]], [[Yellow]]col:5[[RESET]]>[[CYAN]] TestExpr[[RESET]] [[Green]]'int'[[RESET]]{{$}}
-//CHECK: {{^}}[[Blue]]  `-[[RESET]][[BLUE]]GuardedByAttr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:29[[RESET]]>{{$}}
-//CHECK: {{^}}[[Blue]]    `-[[RESET]][[MAGENTA]]DeclRefExpr[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]] <[[Yellow]]col:40[[RESET]]> [[Green]]'class Mutex':'class Mutex'[[RESET]][[Cyan]] lvalue[[RESET]][[Cyan]][[RESET]] [[GREEN]]Var[[RESET]][[Yellow]] 0x{{[0-9a-fA-F]*}}[[RESET]][[CYAN]] 'mu1'[[RESET]] [[Green]]'class Mutex':'class Mutex'[[RESET]]{{$}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-comment.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-comment.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-comment.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -Wdocumentation -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
-
-/// Aaa
-int TestLocation;
-// CHECK: VarDecl{{.*}}TestLocation
-// CHECK-NEXT:   FullComment 0x{{[^ ]*}} <line:[[@LINE-3]]:4, col:7>
-
-///
-int TestIndent;
-// CHECK:      {{^VarDecl.*TestIndent[^()]*$}}
-// CHECK-NEXT: {{^`-FullComment.*>$}}
-
-/// Aaa
-int Test_TextComment;
-// CHECK:      VarDecl{{.*}}Test_TextComment
-// CHECK-NEXT:   FullComment
-// CHECK-NEXT:     ParagraphComment
-// CHECK-NEXT:       TextComment{{.*}} Text=" Aaa"
-
-/// \brief Aaa
-int Test_BlockCommandComment;
-// CHECK:      VarDecl{{.*}}Test_BlockCommandComment
-// CHECK:        BlockCommandComment{{.*}} Name="brief"
-// CHECK-NEXT:     ParagraphComment
-// CHECK-NEXT:       TextComment{{.*}} Text=" Aaa"
-
-/// \param Aaa xxx
-/// \param [in,out] Bbb yyy
-void Test_ParamCommandComment(int Aaa, int Bbb);
-// CHECK:      FunctionDecl{{.*}}Test_ParamCommandComment
-// CHECK:        ParamCommandComment{{.*}} [in] implicitly Param="Aaa" ParamIndex=0
-// CHECK-NEXT:     ParagraphComment
-// CHECK-NEXT:       TextComment{{.*}} Text=" xxx"
-// CHECK:        ParamCommandComment{{.*}} [in,out] explicitly Param="Bbb" ParamIndex=1
-// CHECK-NEXT:     ParagraphComment
-// CHECK-NEXT:       TextComment{{.*}} Text=" yyy"
-
-/// \tparam Aaa xxx
-template <typename Aaa> class Test_TParamCommandComment;
-// CHECK:      ClassTemplateDecl{{.*}}Test_TParamCommandComment
-// CHECK:        TParamCommandComment{{.*}} Param="Aaa" Position=<0>
-// CHECK-NEXT:     ParagraphComment
-// CHECK-NEXT:       TextComment{{.*}} Text=" xxx"
-
-/// \c Aaa
-int Test_InlineCommandComment;
-// CHECK:      VarDecl{{.*}}Test_InlineCommandComment
-// CHECK:        InlineCommandComment{{.*}} Name="c" RenderMonospaced Arg[0]="Aaa"
-
-/// <a>Aaa</a>
-/// <br/>
-int Test_HTMLTagComment;
-// CHECK:      VarDecl{{.*}}Test_HTMLTagComment
-// CHECK-NEXT:   FullComment
-// CHECK-NEXT:     ParagraphComment
-// CHECK-NEXT:       TextComment{{.*}} Text=" "
-// CHECK-NEXT:       HTMLStartTagComment{{.*}} Name="a"
-// CHECK-NEXT:       TextComment{{.*}} Text="Aaa"
-// CHECK-NEXT:       HTMLEndTagComment{{.*}} Name="a"
-// CHECK-NEXT:       TextComment{{.*}} Text=" "
-// CHECK-NEXT:       HTMLStartTagComment{{.*}} Name="br" SelfClosing
-
-/// \verbatim
-/// Aaa
-/// \endverbatim
-int Test_VerbatimBlockComment;
-// CHECK:      VarDecl{{.*}}Test_VerbatimBlockComment
-// CHECK:        VerbatimBlockComment{{.*}} Name="verbatim" CloseName="endverbatim"
-// CHECK-NEXT:     VerbatimBlockLineComment{{.*}} Text=" Aaa"

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,152 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump -ast-dump-filter Test %s | FileCheck -check-prefix CHECK -strict-whitespace %s
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump %s | FileCheck -check-prefix CHECK-TU -strict-whitespace %s
-
-int TestLocation;
-// CHECK: VarDecl 0x{{[^ ]*}} <{{.*}}:4:1, col:5> TestLocation
-
-struct TestIndent {
-  int x;
-};
-// CHECK:      {{^}}RecordDecl{{.*TestIndent[^()]*$}}
-// CHECK-NEXT: {{^}}`-FieldDecl{{.*x[^()]*$}}
-
-struct TestChildren {
-  int x;
-  struct y {
-    int z;
-  };
-};
-// CHECK:      RecordDecl{{.*}}TestChildren
-// CHECK-NEXT:   FieldDecl{{.*}}x
-// CHECK-NEXT:   RecordDecl{{.*}}y
-// CHECK-NEXT:     FieldDecl{{.*}}z
-
-// CHECK-TU: TranslationUnitDecl
-
-void testLabelDecl() {
-  __label__ TestLabelDecl;
-  TestLabelDecl: goto TestLabelDecl;
-}
-// CHECK:      LabelDecl{{.*}} TestLabelDecl
-
-typedef int TestTypedefDecl;
-// CHECK:      TypedefDecl{{.*}} TestTypedefDecl 'int'
-
-__module_private__ typedef int TestTypedefDeclPrivate;
-// CHECK:      TypedefDecl{{.*}} TestTypedefDeclPrivate 'int' __module_private__
-
-enum TestEnumDecl {
-  testEnumDecl
-};
-// CHECK:      EnumDecl{{.*}} TestEnumDecl
-// CHECK-NEXT:   EnumConstantDecl{{.*}} testEnumDecl
-
-struct TestEnumDeclAnon {
-  enum {
-    testEnumDeclAnon
-  } e;
-};
-// CHECK:      RecordDecl{{.*}} TestEnumDeclAnon
-// CHECK-NEXT:   EnumDecl{{.*>$}}
-
-enum TestEnumDeclForward;
-// CHECK:      EnumDecl{{.*}} TestEnumDeclForward
-
-__module_private__ enum TestEnumDeclPrivate;
-// CHECK:      EnumDecl{{.*}} TestEnumDeclPrivate __module_private__
-
-struct TestRecordDecl {
-  int i;
-};
-// CHECK:      RecordDecl{{.*}} struct TestRecordDecl
-// CHECK-NEXT:   FieldDecl
-
-struct TestRecordDeclEmpty {
-};
-// CHECK:      RecordDecl{{.*}} struct TestRecordDeclEmpty
-
-struct TestRecordDeclAnon1 {
-  struct {
-  } testRecordDeclAnon1;
-};
-// CHECK:      RecordDecl{{.*}} struct TestRecordDeclAnon1
-// CHECK-NEXT:   RecordDecl{{.*}} struct
-
-struct TestRecordDeclAnon2 {
-  struct {
-  };
-};
-// CHECK:      RecordDecl{{.*}} struct TestRecordDeclAnon2
-// CHECK-NEXT:   RecordDecl{{.*}} struct
-
-struct TestRecordDeclForward;
-// CHECK:      RecordDecl{{.*}} struct TestRecordDeclForward
-
-__module_private__ struct TestRecordDeclPrivate;
-// CHECK:      RecordDecl{{.*}} struct TestRecordDeclPrivate __module_private__
-
-enum testEnumConstantDecl {
-  TestEnumConstantDecl,
-  TestEnumConstantDeclInit = 1
-};
-// CHECK:      EnumConstantDecl{{.*}} TestEnumConstantDecl 'int'
-// CHECK:      EnumConstantDecl{{.*}} TestEnumConstantDeclInit 'int'
-// CHECK-NEXT:   IntegerLiteral
-
-struct testIndirectFieldDecl {
-  struct {
-    int TestIndirectFieldDecl;
-  };
-};
-// CHECK:      IndirectFieldDecl{{.*}} TestIndirectFieldDecl 'int'
-// CHECK-NEXT:   Field{{.*}} ''
-// CHECK-NEXT:   Field{{.*}} 'TestIndirectFieldDecl'
-
-int TestFunctionDecl(int x, enum { e } y) {
-  return x;
-}
-// CHECK:      FunctionDecl{{.*}} TestFunctionDecl 'int (int, enum {{.*}})'
-// CHECK-NEXT:   EnumDecl
-// CHECK-NEXT:     EnumConstantDecl{{.*}} e
-// CHECK-NEXT:   ParmVarDecl{{.*}} x
-// CHECK-NEXT:   ParmVarDecl{{.*}} y
-// CHECK-NEXT:   CompoundStmt
-
-int TestFunctionDeclProto(int x);
-// CHECK:      FunctionDecl{{.*}} TestFunctionDeclProto 'int (int)'
-// CHECK-NEXT:   ParmVarDecl{{.*}} x
-
-extern int TestFunctionDeclSC();
-// CHECK:      FunctionDecl{{.*}} TestFunctionDeclSC 'int ()' extern
-
-inline int TestFunctionDeclInline();
-// CHECK:      FunctionDecl{{.*}} TestFunctionDeclInline 'int ()' inline
-
-struct testFieldDecl {
-  int TestFieldDecl;
-  int TestFieldDeclWidth : 1;
-  __module_private__ int TestFieldDeclPrivate;
-};
-// CHECK:      FieldDecl{{.*}} TestFieldDecl 'int'
-// CHECK:      FieldDecl{{.*}} TestFieldDeclWidth 'int'
-// CHECK-NEXT:   IntegerLiteral
-// CHECK:      FieldDecl{{.*}} TestFieldDeclPrivate 'int' __module_private__
-
-int TestVarDecl;
-// CHECK:      VarDecl{{.*}} TestVarDecl 'int'
-
-extern int TestVarDeclSC;
-// CHECK:      VarDecl{{.*}} TestVarDeclSC 'int' extern
-
-__thread int TestVarDeclThread;
-// CHECK:      VarDecl{{.*}} TestVarDeclThread 'int' tls{{$}}
-
-__module_private__ int TestVarDeclPrivate;
-// CHECK:      VarDecl{{.*}} TestVarDeclPrivate 'int' __module_private__
-
-int TestVarDeclInit = 0;
-// CHECK:      VarDecl{{.*}} TestVarDeclInit 'int'
-// CHECK-NEXT:   IntegerLiteral
-
-void testParmVarDecl(int TestParmVarDecl);
-// CHECK: ParmVarDecl{{.*}} TestParmVarDecl 'int'

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,460 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple x86_64-linux-gnu -fms-extensions -ast-dump -ast-dump-filter Test %s | FileCheck -check-prefix CHECK -strict-whitespace %s
-
-class testEnumDecl {
-  enum class TestEnumDeclScoped;
-  enum TestEnumDeclFixed : int;
-};
-// CHECK: EnumDecl{{.*}} class TestEnumDeclScoped 'int'
-// CHECK: EnumDecl{{.*}} TestEnumDeclFixed 'int'
-
-class testFieldDecl {
-  int TestFieldDeclInit = 0;
-};
-// CHECK:      FieldDecl{{.*}} TestFieldDeclInit 'int'
-// CHECK-NEXT:   IntegerLiteral
-
-namespace testVarDeclNRVO {
-  class A { };
-  A foo() {
-    A TestVarDeclNRVO;
-    return TestVarDeclNRVO;
-  }
-}
-// CHECK: VarDecl{{.*}} TestVarDeclNRVO 'class testVarDeclNRVO::A' nrvo
-
-void testParmVarDeclInit(int TestParmVarDeclInit = 0);
-// CHECK:      ParmVarDecl{{.*}} TestParmVarDeclInit 'int'
-// CHECK-NEXT:   IntegerLiteral{{.*}}
-
-namespace TestNamespaceDecl {
-  int i;
-}
-// CHECK:      NamespaceDecl{{.*}} TestNamespaceDecl
-// CHECK-NEXT:   VarDecl
-
-namespace TestNamespaceDecl {
-  int j;
-}
-// CHECK:      NamespaceDecl{{.*}} TestNamespaceDecl
-// CHECK-NEXT:   original Namespace
-// CHECK-NEXT:   VarDecl
-
-inline namespace TestNamespaceDeclInline {
-}
-// CHECK:      NamespaceDecl{{.*}} TestNamespaceDeclInline inline
-
-namespace testUsingDirectiveDecl {
-  namespace A {
-  }
-}
-namespace TestUsingDirectiveDecl {
-  using namespace testUsingDirectiveDecl::A;
-}
-// CHECK:      NamespaceDecl{{.*}} TestUsingDirectiveDecl
-// CHECK-NEXT:   UsingDirectiveDecl{{.*}} Namespace{{.*}} 'A'
-
-namespace testNamespaceAlias {
-  namespace A {
-  }
-}
-namespace TestNamespaceAlias = testNamespaceAlias::A;
-// CHECK:      NamespaceAliasDecl{{.*}} TestNamespaceAlias
-// CHECK-NEXT:   Namespace{{.*}} 'A'
-
-using TestTypeAliasDecl = int;
-// CHECK: TypeAliasDecl{{.*}} TestTypeAliasDecl 'int'
-
-namespace testTypeAliasTemplateDecl {
-  template<typename T> class A;
-  template<typename T> using TestTypeAliasTemplateDecl = A<T>;
-}
-// CHECK:      TypeAliasTemplateDecl{{.*}} TestTypeAliasTemplateDecl
-// CHECK-NEXT:   TemplateTypeParmDecl
-// CHECK-NEXT:   TypeAliasDecl{{.*}} TestTypeAliasTemplateDecl 'A<T>'
-
-namespace testCXXRecordDecl {
-  class A { };
-  class B { };
-  class TestCXXRecordDecl : virtual A, public B {
-    int i;
-  };
-}
-// CHECK:      CXXRecordDecl{{.*}} class TestCXXRecordDecl
-// CHECK-NEXT:   virtual private 'class testCXXRecordDecl::A'
-// CHECK-NEXT:   public 'class testCXXRecordDecl::B'
-// CHECK-NEXT:   CXXRecordDecl{{.*}} class TestCXXRecordDecl
-// CHECK-NEXT:   FieldDecl
-
-template<class...T>
-class TestCXXRecordDeclPack : public T... {
-};
-// CHECK:      CXXRecordDecl{{.*}} class TestCXXRecordDeclPack
-// CHECK-NEXT:   public 'T'...
-// CHECK-NEXT:   CXXRecordDecl{{.*}} class TestCXXRecordDeclPack
-
-thread_local int TestThreadLocalInt;
-// CHECK: TestThreadLocalInt {{.*}} tls_dynamic
-
-__module_private__ class TestCXXRecordDeclPrivate;
-// CHECK: CXXRecordDecl{{.*}} class TestCXXRecordDeclPrivate __module_private__
-
-class testCXXMethodDecl {
-  __module_private__ void TestCXXMethodDeclPrivate();
-  virtual void TestCXXMethodDeclPure() = 0;
-  void TestCXXMethodDeclDelete() = delete;
-  void TestCXXMethodDeclThrow() throw();
-  void TestCXXMethodDeclThrowType() throw(int);
-};
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclPrivate 'void (void)' __module_private__
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclPure 'void (void)' virtual pure
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclDelete 'void (void)' delete
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclThrow 'void (void) throw()'
-// CHECK: CXXMethodDecl{{.*}} TestCXXMethodDeclThrowType 'void (void) throw(int)'
-
-namespace testCXXConstructorDecl {
-  class A { };
-  class TestCXXConstructorDecl : public A {
-    int I;
-    TestCXXConstructorDecl(A &a, int i) : A(a), I(i) { }
-  };
-}
-// CHECK:      CXXConstructorDecl{{.*}} TestCXXConstructorDecl 'void {{.*}}'
-// CHECK-NEXT:   ParmVarDecl{{.*}} a
-// CHECK-NEXT:   ParmVarDecl{{.*}} i
-// CHECK-NEXT:   CXXCtorInitializer{{.*}}A
-// CHECK-NEXT:     Expr
-// CHECK:        CXXCtorInitializer{{.*}}I
-// CHECK-NEXT:     Expr
-// CHECK:        CompoundStmt
-
-class TestCXXDestructorDecl {
-  ~TestCXXDestructorDecl() { }
-};
-// CHECK:      CXXDestructorDecl{{.*}} ~TestCXXDestructorDecl 'void (void) noexcept'
-// CHECK-NEXT:   CompoundStmt
-
-class TestCXXConversionDecl {
-  operator int() { return 0; }
-};
-// CHECK:      CXXConversionDecl{{.*}} operator int 'int (void)'
-// CHECK-NEXT:   CompoundStmt
-
-namespace TestStaticAssertDecl {
-  static_assert(true, "msg");
-}
-// CHECK:      NamespaceDecl{{.*}} TestStaticAssertDecl
-// CHECK-NEXT:   StaticAssertDecl{{.*>$}}
-// CHECK-NEXT:     CXXBoolLiteralExpr
-// CHECK-NEXT:     StringLiteral
-
-namespace testFunctionTemplateDecl {
-  class A { };
-  class B { };
-  class C { };
-  class D { };
-  template<typename T> void TestFunctionTemplate(T) { }
-
-  // implicit instantiation
-  void bar(A a) { TestFunctionTemplate(a); }
-
-  // explicit specialization
-  template<> void TestFunctionTemplate(B);
-
-  // explicit instantiation declaration
-  extern template void TestFunctionTemplate(C);
-
-  // explicit instantiation definition
-  template void TestFunctionTemplate(D);
-}
-// CHECK:      FunctionTemplateDecl{{.*}} TestFunctionTemplate
-// CHECK-NEXT:   TemplateTypeParmDecl
-// CHECK-NEXT:   FunctionDecl{{.*}} TestFunctionTemplate 'void (T)'
-// CHECK-NEXT:     ParmVarDecl{{.*}} 'T'
-// CHECK-NEXT:     CompoundStmt
-// CHECK-NEXT:   FunctionDecl{{.*}} TestFunctionTemplate {{.*}}A
-// CHECK-NEXT:     TemplateArgument
-// CHECK-NEXT:     ParmVarDecl
-// CHECK-NEXT:     CompoundStmt
-// CHECK-NEXT:   Function{{.*}} 'TestFunctionTemplate' {{.*}}B
-// CHECK-NEXT:   FunctionDecl{{.*}} TestFunctionTemplate {{.*}}C
-// CHECK-NEXT:     TemplateArgument
-// CHECK-NEXT:     ParmVarDecl
-// CHECK-NEXT:   FunctionDecl{{.*}} TestFunctionTemplate {{.*}}D
-// CHECK-NEXT:     TemplateArgument
-// CHECK-NEXT:     ParmVarDecl
-// CHECK-NEXT:     CompoundStmt
-// CHECK:      FunctionDecl{{.*}} TestFunctionTemplate {{.*}}B
-// CHECK-NEXT:   TemplateArgument
-// CHECK-NEXT:   ParmVarDecl
-
-namespace testClassTemplateDecl {
-  class A { };
-  class B { };
-  class C { };
-  class D { };
-
-  template<typename T> class TestClassTemplate {
-    int i;
-  };
-
-  // implicit instantiation
-  TestClassTemplate<A> a;
-
-  // explicit specialization
-  template<> class TestClassTemplate<B> {
-    int j;
-  };
-
-  // explicit instantiation declaration
-  extern template class TestClassTemplate<C>;
-
-  // explicit instantiation definition
-  template class TestClassTemplate<D>;
-
-  // partial explicit specialization
-  template<typename T1, typename T2> class TestClassTemplatePartial {
-    int i;
-  };
-  template<typename T1> class TestClassTemplatePartial<T1, A> {
-    int j;
-  };
-}
-// CHECK:      ClassTemplateDecl{{.*}} TestClassTemplate
-// CHECK-NEXT:   TemplateTypeParmDecl
-// CHECK-NEXT:   CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:     CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:     FieldDecl{{.*}} i
-// CHECK-NEXT:   ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:     TemplateArgument{{.*}}A
-// CHECK-NEXT:     CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:     FieldDecl{{.*}} i
-// CHECK:        ClassTemplateSpecialization{{.*}} 'TestClassTemplate'
-// CHECK-NEXT:   ClassTemplateSpecialization{{.*}} 'TestClassTemplate'
-// CHECK-NEXT:   ClassTemplateSpecialization{{.*}} 'TestClassTemplate'
-
-// CHECK:      ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:   TemplateArgument{{.*}}B
-// CHECK-NEXT:   CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:   FieldDecl{{.*}} j
-
-// CHECK:      ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:   TemplateArgument{{.*}}C
-// CHECK-NEXT:   CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:   FieldDecl{{.*}} i
-
-// CHECK:      ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:   TemplateArgument{{.*}}D
-// CHECK-NEXT:   CXXRecordDecl{{.*}} class TestClassTemplate
-// CHECK-NEXT:   FieldDecl{{.*}} i
-
-// CHECK:      ClassTemplatePartialSpecializationDecl{{.*}} class TestClassTemplatePartial
-// CHECK-NEXT:   TemplateArgument
-// CHECK-NEXT:   TemplateArgument{{.*}}A
-// CHECK-NEXT:   TemplateTypeParmDecl
-// CHECK-NEXT:   CXXRecordDecl{{.*}} class TestClassTemplatePartial
-// CHECK-NEXT:   FieldDecl{{.*}} j
-
-// PR15220 dump instantiation only once
-namespace testCanonicalTemplate {
-  class A {};
-
-  template<typename T> void TestFunctionTemplate(T);
-  template<typename T> void TestFunctionTemplate(T);
-  void bar(A a) { TestFunctionTemplate(a); }
-  // CHECK:      FunctionTemplateDecl{{.*}} TestFunctionTemplate
-  // CHECK-NEXT:   TemplateTypeParmDecl
-  // CHECK-NEXT:   FunctionDecl{{.*}} TestFunctionTemplate 'void (T)'
-  // CHECK-NEXT:     ParmVarDecl{{.*}} 'T'
-  // CHECK-NEXT:   FunctionDecl{{.*}} TestFunctionTemplate {{.*}}A
-  // CHECK-NEXT:     TemplateArgument
-  // CHECK-NEXT:     ParmVarDecl
-  // CHECK:      FunctionTemplateDecl{{.*}} TestFunctionTemplate
-  // CHECK-NEXT:   TemplateTypeParmDecl
-  // CHECK-NEXT:   FunctionDecl{{.*}} TestFunctionTemplate 'void (T)'
-  // CHECK-NEXT:     ParmVarDecl{{.*}} 'T'
-  // CHECK-NEXT:   Function{{.*}} 'TestFunctionTemplate'
-  // CHECK-NEXT-NOT: TemplateArgument
-
-  template<typename T1> class TestClassTemplate {
-    template<typename T2> friend class TestClassTemplate;
-  };
-  TestClassTemplate<A> a;
-  // CHECK:      ClassTemplateDecl{{.*}} TestClassTemplate
-  // CHECK-NEXT:   TemplateTypeParmDecl
-  // CHECK-NEXT:   CXXRecordDecl{{.*}} class TestClassTemplate
-  // CHECK-NEXT:     CXXRecordDecl{{.*}} class TestClassTemplate
-  // CHECK-NEXT:     FriendDecl
-  // CHECK-NEXT:       ClassTemplateDecl{{.*}} TestClassTemplate
-  // CHECK-NEXT:         TemplateTypeParmDecl
-  // CHECK-NEXT:         CXXRecordDecl{{.*}} class TestClassTemplate
-  // CHECK-NEXT:         ClassTemplateSpecialization{{.*}} 'TestClassTemplate'
-  // CHECK-NEXT:   ClassTemplateSpecializationDecl{{.*}} class TestClassTemplate
-  // CHECK-NEXT:     TemplateArgument{{.*}}A
-  // CHECK-NEXT:     CXXRecordDecl{{.*}} class TestClassTemplate
-}
-
-template <class T>
-class TestClassScopeFunctionSpecialization {
-  template<class U> void foo(U a) { }
-  template<> void foo<int>(int a) { }
-};
-// CHECK:      ClassScopeFunctionSpecializationDecl
-// CHECK-NEXT:   CXXMethod{{.*}} 'foo' 'void (int)'
-// CHECK-NEXT:   TemplateArgument{{.*}} 'int'
-
-namespace TestTemplateTypeParmDecl {
-  template<typename ... T, class U = int> void foo();
-}
-// CHECK:      NamespaceDecl{{.*}} TestTemplateTypeParmDecl
-// CHECK-NEXT:   FunctionTemplateDecl
-// CHECK-NEXT:     TemplateTypeParmDecl{{.*}} typename ... T
-// CHECK-NEXT:     TemplateTypeParmDecl{{.*}} class U 'int'
-
-namespace TestNonTypeTemplateParmDecl {
-  template<int I = 1, int ... J> void foo();
-}
-// CHECK:      NamespaceDecl{{.*}} TestNonTypeTemplateParmDecl
-// CHECK-NEXT:   FunctionTemplateDecl
-// CHECK-NEXT:     NonTypeTemplateParmDecl{{.*}} 'int' I
-// CHECK-NEXT:       IntegerLiteral{{.*}} 'int' 1
-// CHECK-NEXT:     NonTypeTemplateParmDecl{{.*}} 'int' ... J
-
-namespace TestTemplateTemplateParmDecl {
-  template<typename T> class A;
-  template <template <typename> class T = A, template <typename> class ... U> void foo();
-}
-// CHECK:      NamespaceDecl{{.*}} TestTemplateTemplateParmDecl
-// CHECK:        FunctionTemplateDecl
-// CHECK-NEXT:     TemplateTemplateParmDecl{{.*}} T
-// CHECK-NEXT:       TemplateTypeParmDecl{{.*}} typename
-// CHECK-NEXT:       TemplateArgument{{.*}} template A
-// CHECK-NEXT:     TemplateTemplateParmDecl{{.*}} ... U
-// CHECK-NEXT:       TemplateTypeParmDecl{{.*}} typename
-
-namespace TestTemplateArgument {
-  template<typename> class A { };
-  template<template<typename> class ...> class B { };
-  int foo();
-
-  template<typename> class testType { };
-  template class testType<int>;
-  // CHECK:      ClassTemplateSpecializationDecl{{.*}} class testType
-  // CHECK-NEXT:   TemplateArgument{{.*}} type 'int'
-
-  template<int fp(void)> class testDecl { };
-  template class testDecl<foo>;
-  // CHECK:      ClassTemplateSpecializationDecl{{.*}} class testDecl
-  // CHECK-NEXT:   TemplateArgument{{.*}} decl
-  // CHECK-NEXT:     Function{{.*}}foo
-
-  template class testDecl<nullptr>;
-  // CHECK:      ClassTemplateSpecializationDecl{{.*}} class testDecl
-  // CHECK-NEXT:   TemplateArgument{{.*}} nullptr
-
-  template<int> class testIntegral { };
-  template class testIntegral<1>;
-  // CHECK:      ClassTemplateSpecializationDecl{{.*}} class testIntegral
-  // CHECK-NEXT:   TemplateArgument{{.*}} integral 1
-
-  template<template<typename> class> class testTemplate { };
-  template class testTemplate<A>;
-  // CHECK:      ClassTemplateSpecializationDecl{{.*}} class testTemplate
-  // CHECK-NEXT:   TemplateArgument{{.*}} A
-
-  template<template<typename> class ...T> class C {
-    B<T...> testTemplateExpansion;
-  };
-  // FIXME: Need TemplateSpecializationType dumping to test TemplateExpansion.
-
-  template<int, int = 0> class testExpr;
-  template<int I> class testExpr<I> { };
-  // CHECK:      ClassTemplatePartialSpecializationDecl{{.*}} class testExpr
-  // CHECK-NEXT:   TemplateArgument{{.*}} expr
-  // CHECK-NEXT:     DeclRefExpr{{.*}}I
-
-  template<int, int ...> class testPack { };
-  template class testPack<0, 1, 2>;
-  // CHECK:      ClassTemplateSpecializationDecl{{.*}} class testPack
-  // CHECK-NEXT:   TemplateArgument{{.*}} integral 0
-  // CHECK-NEXT:   TemplateArgument{{.*}} pack
-  // CHECK-NEXT:     TemplateArgument{{.*}} integral 1
-  // CHECK-NEXT:     TemplateArgument{{.*}} integral 2
-}
-
-namespace testUsingDecl {
-  int i;
-}
-namespace TestUsingDecl {
-  using testUsingDecl::i;
-}
-// CHECK:      NamespaceDecl{{.*}} TestUsingDecl
-// CHECK-NEXT:   UsingDecl{{.*}} testUsingDecl::i
-// CHECK-NEXT:   UsingShadowDecl{{.*}} Var{{.*}} 'i' 'int'
-
-namespace testUnresolvedUsing {
-  class A { };
-  template<class T> class B {
-  public:
-    A a;
-  };
-  template<class T> class TestUnresolvedUsing : public B<T> {
-    using typename B<T>::a;
-    using B<T>::a;
-  };
-}
-// CHECK: CXXRecordDecl{{.*}} TestUnresolvedUsing
-// CHECK:   UnresolvedUsingTypenameDecl{{.*}} B<T>::a
-// CHECK:   UnresolvedUsingValueDecl{{.*}} B<T>::a
-
-namespace TestLinkageSpecDecl {
-  extern "C" void test1();
-  extern "C++" void test2();
-}
-// CHECK:      NamespaceDecl{{.*}} TestLinkageSpecDecl
-// CHECK-NEXT:   LinkageSpecDecl{{.*}} C
-// CHECK-NEXT:     FunctionDecl
-// CHECK-NEXT:   LinkageSpecDecl{{.*}} C++
-// CHECK-NEXT:     FunctionDecl
-
-class TestAccessSpecDecl {
-public:
-private:
-protected:
-};
-// CHECK:      CXXRecordDecl{{.*}} class TestAccessSpecDecl
-// CHECK-NEXT:    CXXRecordDecl{{.*}} class TestAccessSpecDecl
-// CHECK-NEXT:    AccessSpecDecl{{.*}} public
-// CHECK-NEXT:    AccessSpecDecl{{.*}} private
-// CHECK-NEXT:    AccessSpecDecl{{.*}} protected
-
-template<typename T> class TestFriendDecl {
-  friend int foo();
-  friend class A;
-  friend T;
-};
-// CHECK:      CXXRecord{{.*}} TestFriendDecl
-// CHECK-NEXT:   CXXRecord{{.*}} TestFriendDecl
-// CHECK-NEXT:   FriendDecl
-// CHECK-NEXT:     FunctionDecl{{.*}} foo
-// CHECK-NEXT:   FriendDecl{{.*}} 'class A':'class A'
-// CHECK-NEXT:   FriendDecl{{.*}} 'T'
-
-namespace TestFileScopeAsmDecl {
-  asm("ret");
-}
-// CHECK:      NamespaceDecl{{.*}} TestFileScopeAsmDecl{{$}}
-// CHECK:        FileScopeAsmDecl{{.*>$}}
-// CHECK-NEXT:     StringLiteral
-
-namespace TestFriendDecl2 {
-  void f();
-  struct S {
-    friend void f();
-  };
-}
-// CHECK: NamespaceDecl [[TestFriendDecl2:0x.*]] <{{.*}}> TestFriendDecl2
-// CHECK: |-FunctionDecl [[TestFriendDecl2_f:0x.*]] <{{.*}}> f 'void (void)'
-// CHECK: `-CXXRecordDecl {{.*}} struct S
-// CHECK:   |-CXXRecordDecl {{.*}} struct S
-// CHECK:   `-FriendDecl
-// CHECK:     `-FunctionDecl {{.*}} parent [[TestFriendDecl2]] prev [[TestFriendDecl2_f]] <{{.*}}> f 'void (void)'

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,136 +0,0 @@
-// RUN: %clang_cc1 -Wno-unused -fblocks -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
-
- at protocol P
- at end
-
- at interface A
- at end
-
- at interface TestObjCIvarDecl : A
- at end
-
- at implementation TestObjCIvarDecl {
-  int varDefault;
-  @private int varPrivate;
-  @protected int varProtected;
-  @public int varPublic;
-  @package int varPackage;
-}
- at end
-// CHECK:      ObjCImplementationDecl{{.*}} TestObjCIvarDecl
-// CHECK-NEXT:   ObjCInterface{{.*}} 'TestObjCIvarDecl'
-// CHECK-NEXT:   ObjCIvarDecl{{.*}} varDefault 'int' private
-// CHECK-NEXT:   ObjCIvarDecl{{.*}} varPrivate 'int' private
-// CHECK-NEXT:   ObjCIvarDecl{{.*}} varProtected 'int' protected
-// CHECK-NEXT:   ObjCIvarDecl{{.*}} varPublic 'int' public
-// CHECK-NEXT:   ObjCIvarDecl{{.*}} varPackage 'int' package
-
- at interface testObjCMethodDecl : A {
-}
-- (int) TestObjCMethodDecl: (int)i, ...;
-// CHECK:      ObjCMethodDecl{{.*}} - TestObjCMethodDecl: 'int'
-// CHECK-NEXT:   ParmVarDecl{{.*}} i 'int'
-// CHECK-NEXT:   ...
- at end
-
- at implementation testObjCMethodDecl
-- (int) TestObjCMethodDecl: (int)i, ... {
-  return 0;
-}
-// CHECK:      ObjCMethodDecl{{.*}} - TestObjCMethodDecl: 'int'
-// CHECK-NEXT:   ImplicitParamDecl{{.*}} self
-// CHECK-NEXT:   ImplicitParamDecl{{.*}} _cmd
-// CHECK-NEXT:   ParmVarDecl{{.*}} i 'int'
-// CHECK-NEXT:   ...
-// CHECK-NEXT:   CompoundStmt
- at end
-
- at protocol TestObjCProtocolDecl
-- (void) foo;
- at end
-// CHECK:      ObjCProtocolDecl{{.*}} TestObjCProtocolDecl
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} foo
-
- at interface TestObjCClass : A <P>
-- (void) foo;
- at end
-// CHECK:      ObjCInterfaceDecl{{.*}} TestObjCClass
-// CHECK-NEXT:   super ObjCInterface{{.*}} 'A'
-// CHECK-NEXT:   ObjCImplementation{{.*}} 'TestObjCClass'
-// CHECK-NEXT:   ObjCProtocol{{.*}} 'P'
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} foo
-
- at implementation TestObjCClass : A {
-  int i;
-}
-- (void) foo {
-}
- at end
-// CHECK:      ObjCImplementationDecl{{.*}} TestObjCClass
-// CHECK-NEXT:   super ObjCInterface{{.*}} 'A'
-// CHECK-NEXT:   ObjCInterface{{.*}} 'TestObjCClass'
-// CHECK-NEXT:   ObjCIvarDecl{{.*}} i
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} foo
-
- at interface TestObjCClass (TestObjCCategoryDecl) <P>
-- (void) bar;
- at end
-// CHECK:      ObjCCategoryDecl{{.*}} TestObjCCategoryDecl
-// CHECK-NEXT:   ObjCInterface{{.*}} 'TestObjCClass'
-// CHECK-NEXT:   ObjCCategoryImpl{{.*}} 'TestObjCClass'
-// CHECK-NEXT:   ObjCProtocol{{.*}} 'P'
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} bar
-
- at implementation TestObjCClass (TestObjCCategoryDecl)
-- (void) bar {
-}
- at end
-// CHECK:      ObjCCategoryImplDecl{{.*}} TestObjCClass
-// CHECK-NEXT:   ObjCInterface{{.*}} 'TestObjCClass'
-// CHECK-NEXT:   ObjCCategory{{.*}} 'TestObjCCategoryDecl'
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} bar
-
- at compatibility_alias TestObjCCompatibleAliasDecl A;
-// CHECK:      ObjCCompatibleAliasDecl{{.*}} TestObjCCompatibleAliasDecl
-// CHECK-NEXT:   ObjCInterface{{.*}} 'A'
-
- at interface TestObjCProperty: A
- at property(getter=getterFoo, setter=setterFoo:) int foo;
- at property int bar;
- at end
-// CHECK:      ObjCInterfaceDecl{{.*}} TestObjCProperty
-// CHECK:        ObjCPropertyDecl{{.*}} foo 'int' assign readwrite atomic unsafe_unretained
-// CHECK-NEXT:     getter ObjCMethod{{.*}} 'getterFoo'
-// CHECK-NEXT:     setter ObjCMethod{{.*}} 'setterFoo:'
-// CHECK-NEXT:   ObjCPropertyDecl{{.*}} bar 'int' assign readwrite atomic unsafe_unretained
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} getterFoo
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} setterFoo:
-// CHECK-NEXT:     ParmVarDecl{{.*}} foo
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} bar
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} setBar:
-// CHECK-NEXT:     ParmVarDecl{{.*}} bar
-
- at implementation TestObjCProperty {
-  int i;
-}
- at synthesize foo=i;
- at synthesize bar;
- at end
-// CHECK:      ObjCImplementationDecl{{.*}} TestObjCProperty
-// CHECK:        ObjCPropertyImplDecl{{.*}} foo synthesize
-// CHECK-NEXT:     ObjCProperty{{.*}} 'foo'
-// CHECK-NEXT:     ObjCIvar{{.*}} 'i' 'int'
-// CHECK-NEXT:   ObjCIvarDecl{{.*}} bar 'int' synthesize private
-// CHECK-NEXT:   ObjCPropertyImplDecl{{.*}} bar synthesize
-// CHECK-NEXT:     ObjCProperty{{.*}} 'bar'
-// CHECK-NEXT:     ObjCIvar{{.*}} 'bar' 'int'
-
-void TestBlockDecl(int x) {
-  ^(int y, ...){ x; };
-}
-// CHECK:      FunctionDecl{{.*}}TestBlockDecl
-// CHECK:      BlockDecl
-// CHECK-NEXT:   ParmVarDecl{{.*}} y 'int'
-// CHECK-NEXT:   ...
-// CHECK-NEXT:   capture ParmVar{{.*}} 'x' 'int'
-// CHECK-NEXT:   CompoundStmt

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-decl.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -Wno-unused -fblocks -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
-
- at interface A
- at end
-
- at interface TestObjCImplementation : A
- at end
-
- at implementation TestObjCImplementation : A {
-  struct X {
-    int i;
-  } X;
-}
-- (void) foo {
-}
- at end
-// CHECK:      ObjCImplementationDecl{{.*}} TestObjCImplementation
-// CHECK-NEXT:   super ObjCInterface{{.*}} 'A'
-// CHECK-NEXT:   ObjCInterface{{.*}} 'TestObjCImplementation'
-// CHECK-NEXT:   CXXCtorInitializer{{.*}} 'X'
-// CHECK-NEXT:     CXXConstructExpr
-// CHECK-NEXT:   ObjCIvarDecl{{.*}} X
-// CHECK-NEXT:   ObjCMethodDecl{{.*}} foo

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
-
-int TestLocation = 0;
-// CHECK:      VarDecl{{.*}}TestLocation
-// CHECK-NEXT:   IntegerLiteral 0x{{[^ ]*}} <col:20> 'int' 0
-
-int TestIndent = 1 + (1);
-// CHECK:      VarDecl{{.*}}TestIndent
-// CHECK-NEXT: {{^}}`-BinaryOperator{{[^()]*$}}
-// CHECK-NEXT: {{^}}  |-IntegerLiteral{{.*0[^()]*$}}
-// CHECK-NEXT: {{^}}  `-ParenExpr{{.*0[^()]*$}}
-// CHECK-NEXT: {{^}}    `-IntegerLiteral{{.*0[^()]*$}}
-
-void TestDeclStmt() {
-  int x = 0;
-  int y, z;
-}
-// CHECK:      FunctionDecl{{.*}}TestDeclStmt
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT:   DeclStmt
-// CHECK-NEXT:     VarDecl{{.*}}x
-// CHECK-NEXT:       IntegerLiteral
-// CHECK-NEXT:   DeclStmt
-// CHECK-NEXT:     VarDecl{{.*}}y
-// CHECK-NEXT:     VarDecl{{.*}}z
-
-int TestOpaqueValueExpr = 0 ?: 1;
-// CHECK:      VarDecl{{.*}}TestOpaqueValueExpr
-// CHECK-NEXT: BinaryConditionalOperator
-// CHECK-NEXT:   IntegerLiteral
-// CHECK-NEXT:   OpaqueValueExpr
-// CHECK-NEXT:     IntegerLiteral
-// CHECK-NEXT:   OpaqueValueExpr
-// CHECK-NEXT:     IntegerLiteral
-// CHECK-NEXT:   IntegerLiteral

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
-
-namespace n {
-void function() {}
-int Variable;
-}
-using n::function;
-using n::Variable;
-void TestFunction() {
-  void (*f)() = &function;
-// CHECK:       DeclRefExpr{{.*}} (UsingShadow{{.*}}function
-  Variable = 4;
-// CHECK:       DeclRefExpr{{.*}} (UsingShadow{{.*}}Variable
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-stmt.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -Wno-unused -fblocks -fobjc-exceptions -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
-
-void TestBlockExpr(int x) {
-  ^{ x; };
-}
-// CHECK:      FunctionDecl{{.*}}TestBlockExpr
-// CHECK:      BlockExpr{{.*}} 'void (^)(void)'
-// CHECK-NEXT:   BlockDecl
-
-void TestExprWithCleanup(int x) {
-  ^{ x; };
-}
-// CHECK:      FunctionDecl{{.*}}TestExprWithCleanup
-// CHECK:      ExprWithCleanups
-// CHECK-NEXT:   cleanup Block
-// CHECK-NEXT:   BlockExpr
-
- at interface A
- at end
-
-void TestObjCAtCatchStmt() {
-  @try {
-  } @catch(A *a) {
-  } @catch(...) {
-  } @finally {
-  }
-}
-// CHECK:      FunctionDecl{{.*}}TestObjCAtCatchStmt
-// CHECK:      ObjCAtTryStmt
-// CHECK-NEXT:   CompoundStmt
-// CHECK-NEXT:   ObjCAtCatchStmt{{.*}}
-// CHECK-NEXT:     VarDecl{{.*}}a
-// CHECK-NEXT:     CompoundStmt
-// CHECK-NEXT:   ObjCAtCatchStmt{{.*}} catch all
-// CHECK-NEXT:     CompoundStmt
-// CHECK-NEXT:   ObjCAtFinallyStmt

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s > %t
-// RUN: FileCheck < %t %s -check-prefix=CHECK1
-// RUN: FileCheck < %t %s -check-prefix=CHECK2
-
-template <int X, typename Y, int Z = 5>
-struct foo {
-  int constant;
-  foo() {}
-  Y getSum() { return Y(X + Z); }
-};
-
-template <int A, typename B>
-B bar() {
-  return B(A);
-}
-
-void baz() {
-  int x = bar<5, int>();
-  int y = foo<5, int>().getSum();
-  double z = foo<2, double, 3>().getSum();
-}
-
-// Template instantiation - foo
-// Since the order of instantiation may vary during runs, run FileCheck twice
-// to make sure each instantiation is in the correct spot.
-// CHECK1: template <int X = 5, typename Y = int, int Z = 5> struct foo {
-// CHECK2: template <int X = 2, typename Y = double, int Z = 3> struct foo {
-
-// Template definition - foo
-// CHECK1: template <int X, typename Y, int Z = 5> struct foo {
-// CHECK2: template <int X, typename Y, int Z = 5> struct foo {
-
-// Template instantiation - bar
-// CHECK1: template <int A = 5, typename B = int> int bar()
-// CHECK2: template <int A = 5, typename B = int> int bar()
-
-// Template definition - bar
-// CHECK1: template <int A, typename B> B bar()
-// CHECK2: template <int A, typename B> B bar()

Modified: trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-wchar.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-wchar.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/ast-dump-wchar.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -ast-dump %s -triple x86_64-linux-gnu | FileCheck %s 
-
-char c8[] = u8"test\0\\\"\t\a\b\234";
-// CHECK: StringLiteral {{.*}} lvalue u8"test\000\\\"\t\a\b\234"
-
-char16_t c16[] = u"test\0\\\"\t\a\b\234\u1234";
-// CHECK: StringLiteral {{.*}} lvalue u"test\000\\\"\t\a\b\234\u1234"
-
-char32_t c32[] = U"test\0\\\"\t\a\b\234\u1234\U0010ffff"; // \
-// CHECK: StringLiteral {{.*}} lvalue U"test\000\\\"\t\a\b\234\u1234\U0010FFFF"
-
-wchar_t wc[] = L"test\0\\\"\t\a\b\234\u1234\xffffffff"; // \
-// CHECK: StringLiteral {{.*}} lvalue L"test\000\\\"\t\a\b\234\x1234\xFFFFFFFF"

Modified: trunk/contrib/llvm/tools/clang/test/Misc/caret-diags-macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/caret-diags-macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/caret-diags-macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,227 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck %s -strict-whitespace
-
-#define M1(x) x
-#define M2 1;
-void foo() {
-  M1(
-    M2);
-  // CHECK: {{.*}}:7:{{[0-9]+}}: warning: expression result unused
-  // CHECK: {{.*}}:4:{{[0-9]+}}: note: expanded from macro 'M2'
-  // CHECK: {{.*}}:3:{{[0-9]+}}: note: expanded from macro 'M1'
-}
-
-#define A(x) x
-#define B(x) A(x)
-#define C(x) B(x)
-void bar() {
-  C(1);
-  // CHECK: {{.*}}:17:5: warning: expression result unused
-  // CHECK: {{.*}}:15:16: note: expanded from macro 'C'
-  // CHECK: {{.*}}:14:16: note: expanded from macro 'B'
-  // CHECK: {{.*}}:13:14: note: expanded from macro 'A'
-}
-
-// rdar://7597492
-#define sprintf(str, A, B) \
-__builtin___sprintf_chk (str, 0, 42, A, B)
-
-void baz(char *Msg) {
-  sprintf(Msg,  "  sizeof FoooLib            : =%3u\n",   12LL);
-}
-
-
-// PR9279: comprehensive tests for multi-level macro back traces
-#define macro_args1(x) x
-#define macro_args2(x) macro_args1(x)
-#define macro_args3(x) macro_args2(x)
-
-#define macro_many_args1(x, y, z) y
-#define macro_many_args2(x, y, z) macro_many_args1(x, y, z)
-#define macro_many_args3(x, y, z) macro_many_args2(x, y, z)
-
-void test() {
-  macro_args3(11);
-  // CHECK: {{.*}}:43:15: warning: expression result unused
-  // Also check that the 'caret' printing agrees with the location here where
-  // its easy to FileCheck.
-  // CHECK-NEXT:      macro_args3(11);
-  // CHECK-NEXT: {{^              \^~}}
-  // CHECK: {{.*}}:36:36: note: expanded from macro 'macro_args3'
-  // CHECK: {{.*}}:35:36: note: expanded from macro 'macro_args2'
-  // CHECK: {{.*}}:34:24: note: expanded from macro 'macro_args1'
-
-  macro_many_args3(
-    1,
-    2,
-    3);
-  // CHECK: {{.*}}:55:5: warning: expression result unused
-  // CHECK: {{.*}}:40:55: note: expanded from macro 'macro_many_args3'
-  // CHECK: {{.*}}:39:55: note: expanded from macro 'macro_many_args2'
-  // CHECK: {{.*}}:38:35: note: expanded from macro 'macro_many_args1'
-
-  macro_many_args3(
-    1,
-    M2,
-    3);
-  // CHECK: {{.*}}:64:5: warning: expression result unused
-  // CHECK: {{.*}}:4:12: note: expanded from macro 'M2'
-  // CHECK: {{.*}}:40:55: note: expanded from macro 'macro_many_args3'
-  // CHECK: {{.*}}:39:55: note: expanded from macro 'macro_many_args2'
-  // CHECK: {{.*}}:38:35: note: expanded from macro 'macro_many_args1'
-
-  macro_many_args3(
-    1,
-    macro_args2(22),
-    3);
-  // CHECK: {{.*}}:74:17: warning: expression result unused
-  // This caret location needs to be printed *inside* a different macro's
-  // arguments.
-  // CHECK-NEXT:        macro_args2(22),
-  // CHECK-NEXT: {{^                \^~}}
-  // CHECK: {{.*}}:35:36: note: expanded from macro 'macro_args2'
-  // CHECK: {{.*}}:34:24: note: expanded from macro 'macro_args1'
-  // CHECK: {{.*}}:40:55: note: expanded from macro 'macro_many_args3'
-  // CHECK: {{.*}}:39:55: note: expanded from macro 'macro_many_args2'
-  // CHECK: {{.*}}:38:35: note: expanded from macro 'macro_many_args1'
-}
-
-#define variadic_args1(x, y, ...) y
-#define variadic_args2(x, ...) variadic_args1(x, __VA_ARGS__)
-#define variadic_args3(x, y, ...) variadic_args2(x, y, __VA_ARGS__)
-
-void test2() {
-  variadic_args3(1, 22, 3, 4);
-  // CHECK: {{.*}}:93:21: warning: expression result unused
-  // CHECK-NEXT:      variadic_args3(1, 22, 3, 4);
-  // CHECK-NEXT: {{^                    \^~}}
-  // CHECK: {{.*}}:90:53: note: expanded from macro 'variadic_args3'
-  // CHECK: {{.*}}:89:50: note: expanded from macro 'variadic_args2'
-  // CHECK: {{.*}}:88:35: note: expanded from macro 'variadic_args1'
-}
-
-#define variadic_pasting_args1(x, y, z) y
-#define variadic_pasting_args2(x, ...) variadic_pasting_args1(x ## __VA_ARGS__)
-#define variadic_pasting_args2a(x, y, ...) variadic_pasting_args1(x, y ## __VA_ARGS__)
-#define variadic_pasting_args3(x, y, ...) variadic_pasting_args2(x, y, __VA_ARGS__)
-#define variadic_pasting_args3a(x, y, ...) variadic_pasting_args2a(x, y, __VA_ARGS__)
-
-void test3() {
-  variadic_pasting_args3(1, 2, 3, 4);
-  // CHECK: {{.*}}:109:32: warning: expression result unused
-  // CHECK: {{.*}}:105:72: note: expanded from macro 'variadic_pasting_args3'
-  // CHECK: {{.*}}:103:68: note: expanded from macro 'variadic_pasting_args2'
-  // CHECK: {{.*}}:102:41: note: expanded from macro 'variadic_pasting_args1'
-
-  variadic_pasting_args3a(1, 2, 3, 4);
-  // CHECK:        {{.*}}:115:3: warning: expression result unused
-  // CHECK-NEXT:     variadic_pasting_args3a(1, 2, 3, 4);
-  // CHECK-NEXT: {{  \^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}
-  // CHECK:        {{.*}}:106:44: note: expanded from macro 'variadic_pasting_args3a'
-  // CHECK-NEXT:   #define variadic_pasting_args3a(x, y, ...) variadic_pasting_args2a(x, y, __VA_ARGS__)
-  // CHECK-NEXT: {{                                           \^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}
-  // CHECK:        {{.*}}:104:70: note: expanded from macro 'variadic_pasting_args2a'
-  // CHECK-NEXT:   #define variadic_pasting_args2a(x, y, ...) variadic_pasting_args1(x, y ## __VA_ARGS__)
-  // CHECK-NEXT: {{                                                                     \^~~~~~~~~~~~~~~~}}
-  // CHECK:        {{.*}}:102:41: note: expanded from macro 'variadic_pasting_args1'
-  // CHECK-NEXT:   #define variadic_pasting_args1(x, y, z) y
-  // CHECK-NEXT: {{                                        \^}}
-}
-
-#define BAD_CONDITIONAL_OPERATOR (2<3)?2:3
-int test4 = BAD_CONDITIONAL_OPERATOR+BAD_CONDITIONAL_OPERATOR;
-// CHECK:         {{.*}}:130:39: note: expanded from macro 'BAD_CONDITIONAL_OPERATOR'
-// CHECK-NEXT:    #define BAD_CONDITIONAL_OPERATOR (2<3)?2:3
-// CHECK-NEXT: {{^                                      \^}}
-// CHECK:         {{.*}}:130:39: note: expanded from macro 'BAD_CONDITIONAL_OPERATOR'
-// CHECK-NEXT:    #define BAD_CONDITIONAL_OPERATOR (2<3)?2:3
-// CHECK-NEXT: {{^                                      \^}}
-// CHECK:         {{.*}}:130:39: note: expanded from macro 'BAD_CONDITIONAL_OPERATOR'
-// CHECK-NEXT:    #define BAD_CONDITIONAL_OPERATOR (2<3)?2:3
-// CHECK-NEXT: {{^                                 ~~~~~\^~~~}}
-
-#define QMARK ?
-#define TWOL (2<
-#define X 1+TWOL 3) QMARK 4:5
-int x = X;
-// CHECK:         {{.*}}:145:9: note: place parentheses around the '+' expression to silence this warning
-// CHECK-NEXT:    int x = X;
-// CHECK-NEXT: {{^        \^}}
-// CHECK-NEXT:    {{.*}}:144:21: note: expanded from macro 'X'
-// CHECK-NEXT:    #define X 1+TWOL 3) QMARK 4:5
-// CHECK-NEXT: {{^          ~~~~~~~~~ \^}}
-// CHECK-NEXT:    {{.*}}:142:15: note: expanded from macro 'QMARK'
-// CHECK-NEXT:    #define QMARK ?
-// CHECK-NEXT: {{^              \^}}
-// CHECK-NEXT:    {{.*}}:145:9: note: place parentheses around the '?:' expression to evaluate it first
-// CHECK-NEXT:    int x = X;
-// CHECK-NEXT: {{^        \^}}
-// CHECK-NEXT:    {{.*}}:144:21: note: expanded from macro 'X'
-// CHECK-NEXT:    #define X 1+TWOL 3) QMARK 4:5
-// CHECK-NEXT: {{^            ~~~~~~~~\^~~~~~~~~}}
-
-#define ONEPLUS 1+
-#define Y ONEPLUS (2<3) QMARK 4:5
-int y = Y;
-// CHECK:         {{.*}}:164:9: warning: operator '?:' has lower precedence than '+'; '+' will be evaluated first
-// CHECK-NEXT:    int y = Y;
-// CHECK-NEXT: {{^        \^}}
-// CHECK-NEXT:    {{.*}}:163:25: note: expanded from macro 'Y'
-// CHECK-NEXT:    #define Y ONEPLUS (2<3) QMARK 4:5
-// CHECK-NEXT: {{^          ~~~~~~~~~~~~~ \^}}
-// CHECK-NEXT:    {{.*}}:142:15: note: expanded from macro 'QMARK'
-// CHECK-NEXT:    #define QMARK ?
-// CHECK-NEXT: {{^              \^}}
-
-// PR14399
-void iequals(int,int,int);
-void foo_aa(char* s)
-{
-#define /* */ BARC(c, /* */b, a) (a + b ? c : c)
-  iequals(__LINE__, BARC(123, (456 < 345), 789), 8);
-}
-// CHECK:         {{.*}}:180:21: warning: operator '?:' has lower precedence than '+'
-// CHECK-NEXT:      iequals(__LINE__, BARC(123, (456 < 345), 789), 8);
-// CHECK-NEXT: {{^                    \^~~~~~~~~~~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT:    {{.*}}:179:41: note: expanded from macro 'BARC'
-// CHECK-NEXT:    #define /* */ BARC(c, /* */b, a) (a + b ? c : c)
-// CHECK-NEXT: {{^                                  ~~~~~ \^}}
-
-#define APPEND2(NUM, SUFF) -1 != NUM ## SUFF
-#define APPEND(NUM, SUFF) APPEND2(NUM, SUFF)
-#define UTARG_MAX_U APPEND (MAX_UINT, UL)
-#define MAX_UINT 18446744073709551615
-#if UTARG_MAX_U
-#endif
-
-// CHECK:         {{.*}}:193:5: warning: left side of operator converted from negative value to unsigned: -1 to 18446744073709551615
-// CHECK-NEXT:    #if UTARG_MAX_U
-// CHECK-NEXT: {{^    \^~~~~~~~~~~}}
-// CHECK-NEXT:    {{.*}}:191:21: note: expanded from macro 'UTARG_MAX_U'
-// CHECK-NEXT:    #define UTARG_MAX_U APPEND (MAX_UINT, UL)
-// CHECK-NEXT: {{^                    \^~~~~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT:    {{.*}}:190:27: note: expanded from macro 'APPEND'
-// CHECK-NEXT:    #define APPEND(NUM, SUFF) APPEND2(NUM, SUFF)
-// CHECK-NEXT: {{^                          \^~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT:    {{.*}}:189:31: note: expanded from macro 'APPEND2'
-// CHECK-NEXT:    #define APPEND2(NUM, SUFF) -1 != NUM ## SUFF
-// CHECK-NEXT: {{^                           ~~ \^  ~~~~~~~~~~~}}
-
-unsigned long strlen_test(const char *s);
-#define __darwin_obsz(object) __builtin_object_size (object, 1)
-#define sprintf2(str, ...) \
-  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
-#define Cstrlen(a)  strlen_test(a)
-#define Csprintf    sprintf2
-void f(char* pMsgBuf, char* pKeepBuf) {
-Csprintf(pMsgBuf,"\nEnter minimum anagram length (2-%1d): ", Cstrlen(pKeepBuf));
-}
-// CHECK:         {{.*}}:216:62: warning: format specifies type 'int' but the argument has type 'unsigned long'
-// CHECK-NEXT:    Csprintf(pMsgBuf,"\nEnter minimum anagram length (2-%1d): ", Cstrlen(pKeepBuf));
-// CHECK-NEXT: {{^                                                    ~~~      \^}}
-// CHECK-NEXT: {{^                                                    %1lu}}
-// CHECK-NEXT:    {{.*}}:213:21: note: expanded from macro 'Cstrlen'
-// CHECK-NEXT:    #define Cstrlen(a)  strlen_test(a)
-// CHECK-NEXT: {{^                    \^}}
-// CHECK-NEXT:    {{.*}}:212:56: note: expanded from macro 'sprintf2'
-// CHECK-NEXT:      __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
-// CHECK-NEXT: {{^                                                       \^}}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/caret-diags-scratch-buffer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/caret-diags-scratch-buffer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/caret-diags-scratch-buffer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | not grep keyXXXX
-// This should not show keyXXXX in the caret diag output.  This once
-// happened because the two tokens ended up in the scratch buffer and
-// the caret diag from the scratch buffer included the previous token.
-#define M(name) \
-    if (name ## XXXX != name ## _sb);
-
-void foo() {
-  int keyXXXX;
-  M(key);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/dev-fd-fs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/dev-fd-fs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/dev-fd-fs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// Check that we can operate on files from /dev/fd.
-// REQUIRES: dev-fd-fs
-
-// It has not been working since r169831 on freebsd.
-// XFAIL: freebsd
-
-// Check reading from named pipes. We cat the input here instead of redirecting
-// it to ensure that /dev/fd/0 is a named pipe, not just a redirected file.
-//
-// RUN: cat %s | %clang -x c /dev/fd/0 -E > %t
-// RUN: FileCheck --check-prefix DEV-FD-INPUT < %t %s
-//
-// DEV-FD-INPUT: int x;
-
-
-// Check writing to /dev/fd named pipes. We use cat here as before to ensure we
-// get a named pipe.
-//
-// RUN: %clang -x c %s -E -o /dev/fd/1 | cat > %t
-// RUN: FileCheck --check-prefix DEV-FD-FIFO-OUTPUT < %t %s
-//
-// DEV-FD-FIFO-OUTPUT: int x;
-
-
-// Check writing to /dev/fd regular files.
-//
-// RUN: %clang -x c %s -E -o /dev/fd/1 > %t
-// RUN: FileCheck --check-prefix DEV-FD-REG-OUTPUT < %t %s
-//
-// DEV-FD-REG-OUTPUT: int x;
-
-int x;

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-aka-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-aka-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-aka-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -std=c++11
-
-struct X {};
-typedef X foo_t;
-
-foo_t *ptr;
-char c1 = ptr; // expected-error{{'foo_t *' (aka 'X *')}}
-
-const foo_t &ref = foo_t();
-char c2 = ref; // expected-error{{'const foo_t' (aka 'const X')}}
-
-// deduced auto should not produce an aka.
-auto aut = X();
-char c3 = aut; // expected-error{{from 'X' to 'char'}}
-
-// There are two classes named Foo::foo here.  Make sure the message gives
-// a way to them apart.
-namespace Foo {
-  class foo {};
-}
-
-namespace bar {
-  namespace Foo {
-    class foo;
-  }
-  void f(Foo::foo* x);  // expected-note{{passing argument to parameter 'x' here}}
-}
-
-void test(Foo::foo* x) {
-  bar::f(x); // expected-error{{cannot initialize a parameter of type 'Foo::foo *' (aka 'bar::Foo::foo *') with an lvalue of type 'Foo::foo *'}}
-}
-
-namespace ns {
- struct str {
-   static void method(struct data *) {}
- };
-}
-
-struct data { int i; };
-
-typedef void (*callback)(struct data *);
-
-void helper(callback cb) {} // expected-note{{candidate function not viable: no known conversion from 'void (*)(struct data *)' (aka 'void (*)(ns::data *)') to 'callback' (aka 'void (*)(struct data *)') for 1st argument}}
-
-void test() {
- helper(&ns::str::method); // expected-error{{no matching function for call to 'helper'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-format.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-format.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-format.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang -fsyntax-only  %s 2>&1 | FileCheck %s -check-prefix=DEFAULT
-// RUN: %clang -fsyntax-only -fdiagnostics-format=clang %s 2>&1 | FileCheck %s -check-prefix=DEFAULT
-// RUN: %clang -fsyntax-only -fdiagnostics-format=clang -target x86_64-pc-win32 %s 2>&1 | FileCheck %s -check-prefix=DEFAULT
-//
-// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc  %s 2>&1 | FileCheck %s -check-prefix=MSVC
-// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -target x86_64-pc-win32 %s 2>&1 | FileCheck %s -check-prefix=MSVC
-// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -target x86_64-pc-win32 -fshow-column %s 2>&1 | FileCheck %s -check-prefix=MSVC
-//
-// RUN: %clang -fsyntax-only -fdiagnostics-format=vi    %s 2>&1 | FileCheck %s -check-prefix=VI
-//
-// RUN: %clang -fsyntax-only -fdiagnostics-format=msvc -fno-show-column %s 2>&1 | FileCheck %s -check-prefix=MSVC_ORIG
-//
-// RUN: %clang -fsyntax-only -fno-show-column %s 2>&1 | FileCheck %s -check-prefix=NO_COLUMN
-//
-
-
-
-
-
-
-
-
-
-
-
-
-#ifdef foo
-#endif bad // extension!
-// DEFAULT: {{.*}}:28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-// MSVC: {{.*}}(28,7) : warning: extra tokens at end of #endif directive [-Wextra-tokens]
-// VI: {{.*}} +28:8: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-// MSVC_ORIG: {{.*}}(28) : warning: extra tokens at end of #endif directive [-Wextra-tokens]
-// NO_COLUMN: {{.*}}:28: warning: extra tokens at end of #endif directive [-Wextra-tokens]
-int x;

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-line-wrapping.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-line-wrapping.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-line-wrapping.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fmessage-length 60 %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -fsyntax-only -fmessage-length 0 %s 2>&1 | FileCheck %s
-
-struct B { void f(); };
-struct D1 : B {};
-struct D2 : B {};
-struct DD : D1, D2 {
-  void g() { f(); }
-  // Ensure that after line-wrapping takes place, we preserve artificial
-  // newlines introduced to manually format a section of the diagnostic text.
-  // CHECK: {{.*}}: error:
-  // CHECK: struct DD -> struct D1 -> struct B
-  // CHECK: struct DD -> struct D2 -> struct B
-};
-
-// A line longer than 4096 characters should cause us to suppress snippets no
-// matter what -fmessage-length is set to.
-#pragma clang diagnostic push
-#pragma clang diagnostic warning "-Wconversion"
-// CHECK: implicit conversion loses floating-point precision
-// CHECK-NOT: static const float numbers[]
-static const float numbers[] = {0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.3529411764705883,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.4117647058823529,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.3529411764705883,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.4117647058823529,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.4705882352941176,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.4117647058823529,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.4705882352941176,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.5294117647058824,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.2941176470588235,0.4705882352941176,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.2941176470588235,0.5294117647058824,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.3529411764705883,0.5294117647058824,0.4117647058823529,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.1764705882352941,0.3529411764705883,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.1764705882352941,0.4117647058823529,0.4117647058823529,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.2352941176470588,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.2352941176470588,0.4117647058823529,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.2352941176470588,0.4705882352941176,0.4117647058823529,0.1176470588235294,0.1176470588235294,0.176470588!
 2352941,0.2941176470588235,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.2941176470588235,0.4705882352941176,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.2941176470588235,0.5294117647058824,0.4117647058823529,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.3529411764705883,0.2941176470588235,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.1764705882352941,0.3529411764705883,0.5294117647058824,0.3529411764705883,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.2352941176470588,0.1176470588235294,0.4117647058823529,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.2352941176470588,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.2352941176470588,0.4117647058823529,0.3529411764705883,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.2941176470588235,0.1764705882352941,0.4117647058823529,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.2941176470588235,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.2941176470588235,0.4705882352941176,0.3529411764705883,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.3529411764705883,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.3529411764705883,0.5294117647058824,0.3529411764705883,0.1176470588235294,0.1176470588235294,0.2352941176470588,0.4117647058823529,0.2941176470588235,0.2941176470588235,0.1176470588235294,0.1176470588235294,0.2941176470588235,0.2941176470588235,0.1176470588235294,0.3529411764705883,0.1176470588235294,0.1176470588235294,0.2941176470588235,0.2941176470588235,0.1764705882352941,0.2941176470588235,0.1176470588235294,0.1176470588235294,0.2941176470588235,0.3529411764705883,0.1764705882352941,0.3529411764705883,0.1176470588235294,0.1176470588235294,0.2941176470588235,0.3529411764705883,0.2352941176470588,0.2941176470588235,0.1176470588235294,0.1176470588235294,0.2941!
 176470588235,0.4117647058823529,0.2352941176470588,0.2941176470588235,0.1176470588235294,0.1176470588235294,0.2941176470588235,0.4705882352941176,0.2941176470588235,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.3529411764705883,0.3529411764705883,0.1176470588235294,0.2941176470588235,0.1176470588235294,0.1176470588235294,0.3529411764705883,0.3529411764705883,0.1764705882352941,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.3529411764705883,0.4117647058823529,0.1764705882352941,0.2941176470588235,0.1176470588235294,0.1176470588235294,0.3529411764705883,0.4117647058823529,0.2352941176470588,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.3529411764705883,0.4705882352941176,0.2352941176470588,0.2352941176470588,0.1176470588235294,0.1176470588235294,0.3529411764705883,0.5294117647058824,0.2941176470588235,0.1764705882352941,0.1176470588235294,0.1176470588235294,0.4117647058823529};
-#pragma clang diagnostic pop

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-macro-backtrace.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-macro-backtrace.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-macro-backtrace.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang -fsyntax-only -fmacro-backtrace-limit=0 %s 2>&1 | FileCheck %s
-
-#define FOO 1+"hi" 
-#define BAR FOO
-#define BAZ BAR
-#define QUZ BAZ
-#define TAZ QUZ
-#define ABA TAZ
-#define BAB ABA
-#define ZAZ BAB
-#define WAZ ZAZ
-#define DROOL WAZ
-#define FOOL DROOL
-
-FOOL;
-
-// CHECK: :15:1: error: expected identifier or '('
-// CHECK: FOOL
-// CHECK: ^
-// CHECK: :13:14: note: expanded from macro 'FOOL'
-// CHECK: #define FOOL DROOL
-// CHECK:              ^
-// CHECK: :12:15: note: expanded from macro 'DROOL'
-// CHECK: #define DROOL WAZ
-// CHECK:               ^
-// CHECK: :11:13: note: expanded from macro 'WAZ'
-// CHECK: #define WAZ ZAZ
-// CHECK:             ^
-// CHECK: :10:13: note: expanded from macro 'ZAZ'
-// CHECK: #define ZAZ BAB
-// CHECK:             ^
-// CHECK: :9:13: note: expanded from macro 'BAB'
-// CHECK: #define BAB ABA
-// CHECK:             ^
-// CHECK: :8:13: note: expanded from macro 'ABA'
-// CHECK: #define ABA TAZ
-// CHECK:             ^
-// CHECK: :7:13: note: expanded from macro 'TAZ'
-// CHECK: #define TAZ QUZ
-// CHECK:             ^
-// CHECK: :6:13: note: expanded from macro 'QUZ'
-// CHECK: #define QUZ BAZ
-// CHECK:             ^
-// CHECK: :5:13: note: expanded from macro 'BAZ'
-// CHECK: #define BAZ BAR
-// CHECK:             ^
-// CHECK: :4:13: note: expanded from macro 'BAR'
-// CHECK: #define BAR FOO
-// CHECK:             ^
-// CHECK: :3:13: note: expanded from macro 'FOO'
-// CHECK: #define FOO 1+"hi" 
-// CHECK:             ^
-
-#define ADD(a, b) a ## #b
-ADD(L, foo)
-// CHECK:    error: expected identifier or '('
-// CHECK:    ADD(L, foo)
-// CHECK: {{^\^}}
-// CHECK:    note: expanded from macro 'ADD'
-// CHECK:    #define ADD(a, b) a ## #b
-// CHECK: {{^                  \^}}
-// CHECK:    note: expanded from here
-// CHECK:    L"foo"
-// CHECK: {{^\^}}
-
-// CHECK: 2 errors generated.

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-mapping.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-mapping.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-mapping.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// This should warn by default.
-// RUN: %clang_cc1 %s 2>&1 | grep "warning:"
-// This should not emit anything.
-// RUN: %clang_cc1 %s -Wno-extra-tokens 2>&1 | not grep diagnostic
-
-// -Werror can map all warnings to error.
-// RUN: %clang_cc1 %s -Werror 2>&1 | grep "error:"
-
-// -Werror can map this one warning to error.
-// RUN: %clang_cc1 %s -Werror=extra-tokens 2>&1 | grep "error:"
-
-// Mapping unrelated diags to errors doesn't affect this one.
-// RUN: %clang_cc1 %s -Werror=trigraphs 2>&1 | grep "warning:"
-
-// This should stay a warning with -pedantic.
-// RUN: %clang_cc1 %s -pedantic 2>&1 | grep "warning:"
-
-// This should emit an error with -pedantic-errors.
-// RUN: %clang_cc1 %s -pedantic-errors 2>&1 | grep "error:"
-
-// This should emit a warning, because -Wfoo overrides -pedantic*.
-// RUN: %clang_cc1 %s -pedantic-errors -Wextra-tokens 2>&1 | grep "warning:"
-
-// This should emit nothing, because -Wno-extra-tokens overrides -pedantic*
-// RUN: %clang_cc1 %s -pedantic-errors -Wno-extra-tokens 2>&1 | not grep diagnostic
-
-#ifdef foo
-#endif bad // extension!
-
-int x;

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-mapping2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-mapping2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-mapping2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// This should warn by default.
-// RUN: %clang_cc1 %s 2>&1 | grep "warning:"
-
-// This should not emit anything.
-// RUN: %clang_cc1 %s -w 2>&1 | not grep diagnostic
-// RUN: %clang_cc1 %s -Wno-#warnings 2>&1 | not grep diagnostic
-
-// -Werror can map all warnings to error.
-// RUN: %clang_cc1 %s -Werror 2>&1 | grep "error:"
-
-// -Werror can map this one warning to error.
-// RUN: %clang_cc1 %s -Werror=#warnings 2>&1 | grep "error:"
-
-// -Wno-error= overrides -Werror.  rdar://3158301
-// RUN: %clang_cc1 %s -Werror -Wno-error=#warnings 2>&1 | grep "warning:"
-
-// -Wno-error overrides -Werror.  PR4715
-// RUN: %clang_cc1 %s -Werror -Wno-error 2>&1 | grep "warning:"
-
-#warning foo
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-presumed.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-presumed.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-presumed.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic-errors %s 2>&1 | FileCheck %s --check-prefix=PRESUMED
-// RUN: %clang_cc1 -fsyntax-only -pedantic-errors -fno-diagnostics-use-presumed-location %s 2>&1 | FileCheck %s --check-prefix=SPELLING
-
-#line 100
-#define X(y) y
-X(int n = error);
-
-// PRESUMED: diag-presumed.c:101:11: error: use of undeclared identifier 'error'
-// PRESUMED: diag-presumed.c:100:14: note: expanded from
-// SPELLING: diag-presumed.c:6:11: error: use of undeclared identifier 'error'
-// SPELLING: diag-presumed.c:5:14: note: expanded from
-
-;
-// PRESUMED: diag-presumed.c:108:1: error: extra ';' outside of a functio
-// SPELLING: diag-presumed.c:13:1: error: extra ';' outside of a functio
-
-# 1 "thing1.cc" 1
-# 1 "thing1.h" 1
-# 1 "systemheader.h" 1 3
-;
-// No diagnostic here: we're in a system header, even if we're using spelling
-// locations for the diagnostics..
-// PRESUMED-NOT: extra ';'
-// SPELLING-NOT: extra ';'
-
-another error;
-// PRESUMED: included from {{.*}}diag-presumed.c:112:
-// PRESUMED: from thing1.cc:1:
-// PRESUMED: from thing1.h:1:
-// PRESUMED: systemheader.h:7:1: error: unknown type name 'another'
-
-// SPELLING-NOT: included from
-// SPELLING: diag-presumed.c:26:1: error: unknown type name 'another'
-
-# 1 "thing1.h" 2
-# 1 "thing1.cc" 2

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing-color.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing-color.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing-color.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fcolor-diagnostics %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -fsyntax-only -fcolor-diagnostics -fdiagnostics-show-template-tree %s 2>&1 | FileCheck %s -check-prefix=TREE
-// REQUIRES: ansi-escape-sequences
-template<typename> struct foo {};
-void func(foo<int>);
-int main() {
-  func(foo<double>());
-}
-// CHECK: {{.*}}candidate function not viable: no known conversion from 'foo<[[CYAN:.\[0;1;36m]]double[[RESET:.\[0m]]>' to 'foo<[[CYAN]]int[[RESET]]>' for 1st argument[[RESET]]
-// TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// TREE:  foo<
-// TREE:    {{\[}}[[CYAN:.\[0;1;36m]]double[[RESET:.\[0m]] != [[CYAN]]int[[RESET]]]>[[RESET]]
-
-foo<int> A;
-foo<double> &B = A;
-// CHECK: {{.*}}non-const lvalue reference to type 'foo<[[CYAN]]double[[RESET]][[BOLD:.\[1m]]>' cannot bind to a value of unrelated type 'foo<[[CYAN]]int[[RESET]][[BOLD]]>'[[RESET]]
-// TREE: non-const lvalue reference cannot bind to a value of unrelated type
-// TREE:   foo<
-// TREE:     {{\[}}[[CYAN]]double[[RESET]][[BOLD:.\[1m]] != [[CYAN]]int[[RESET]][[BOLD]]]>[[RESET]]
-
-template<typename> class vector {};
-
-void set15(vector<const vector<int> >) {}
-void test15() {
-  set15(vector<const vector<const int> >());
-}
-// CHECK: {{.*}}candidate function not viable: no known conversion from 'vector<const vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}int>>' to 'vector<const vector<int>>' for 1st argument
-// TREE: {{.*}}candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// TREE:   vector<
-// TREE:     const vector<
-// TREE:       {{\[}}[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}!= [[CYAN]](no qualifiers)[[RESET]]] int>>
-
-void set16(vector<vector<int> >) {}
-void test16() {
-  set16(vector<const vector<int> >());
-}
-// CHECK: {{.*}}candidate function not viable: no known conversion from 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' to 'vector<vector<[...]>>' for 1st argument
-// TREE: {{.*}}candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// TREE:   vector<
-// TREE:     {{\[}}[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}!= [[CYAN]](no qualifiers){{ ?}}[[RESET]]]{{ ?}}vector<
-// TREE:       [...]>>
-
-void set17(vector<const vector<int> >) {}
-void test17() {
-  set17(vector<vector<int> >());
-}
-// CHECK: candidate function not viable: no known conversion from 'vector<vector<[...]>>' to 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' for 1st argument
-// TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// TREE:   vector<
-// TREE:     {{\[}}[[CYAN]](no qualifiers){{ ?}}[[RESET]]{{ ?}}!= [[CYAN]]const[[RESET]]] vector<
-// TREE:       [...]>>
-
-void set18(vector<volatile vector<int> >) {}
-void test18() {
-  set18(vector<const vector<int> >());
-}
-// CHECK: candidate function not viable: no known conversion from 'vector<[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' to 'vector<[[CYAN]]volatile{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' for 1st argument
-// TREE: no matching function for call to 'set18'
-// TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// TREE:   vector<
-// TREE:     {{\[}}[[CYAN]]const{{ ?}}[[RESET]]{{ ?}}!= [[CYAN]]volatile[[RESET]]] vector<
-// TREE:       [...]>>
-
-void set19(vector<const volatile vector<int> >) {}
-void test19() {
-  set19(vector<const vector<int> >());
-}
-// CHECK: candidate function not viable: no known conversion from 'vector<const vector<[...]>>' to 'vector<const [[CYAN]]volatile{{ ?}}[[RESET]]{{ ?}}vector<[...]>>' for 1st argument
-// TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// TREE:   vector<
-// TREE:     [const != const [[CYAN]]volatile[[RESET]]] vector<
-// TREE:       [...]>>
-
-namespace default_args {
-  template <int x, int y = 1+1, int z = 2>
-  class A {};
-
-  void foo(A<0> &M) {
-    // CHECK: no viable conversion from 'A<[...], (default) [[CYAN]]1 + 1[[RESET]][[BOLD]] aka [[CYAN]]2[[RESET]][[BOLD]], (default) [[CYAN]]2[[RESET]][[BOLD]]>' to 'A<[...], [[CYAN]]0[[RESET]][[BOLD]], [[CYAN]]0[[RESET]][[BOLD]]>'
-    A<0, 0, 0> N = M;
-
-    // CHECK: no viable conversion from 'A<[2 * ...], (default) [[CYAN]]2[[RESET]][[BOLD]]>' to 'A<[2 * ...], [[CYAN]]0[[RESET]][[BOLD]]>'
-    A<0, 2, 0> N2 = M;
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing-cxx98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing-cxx98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing-cxx98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -std=c++98 2>&1 | FileCheck %s
-
-namespace PR14342 {
-  template<typename T, char a> struct X {};
-  X<int, 1> x = X<long, 257>();
-  // CHECK: error: no viable conversion from 'X<long, [...]>' to 'X<int, [...]>'
-}
-
-namespace PR15513 {
-  template <int x, int y = x+1>
-  class A {};
-
-  void foo(A<0> &M) {
-    // CHECK: no viable conversion from 'A<[...], (default) x + 1 aka 1>' to 'A<[...], 0>'
-    A<0, 0> N = M;
-   // CHECK: no viable conversion from 'A<0, [...]>' to 'A<1, [...]>'
-    A<1, 1> O = M;
-  }
-}
-
-namespace default_args {
-  template <int x, int y = 1+1, int z = 2>
-  class A {};
-
-  void foo(A<0> &M) {
-    // CHECK: no viable conversion from 'A<[...], (default) 1 + 1 aka 2, (default) 2>' to 'A<[...], 0, 0>'
-    A<0, 0, 0> N = M;
-
-    // CHECK: no viable conversion from 'A<[2 * ...], (default) 2>' to 'A<[2 * ...], 0>'
-    A<0, 2, 0> N2 = M;
-  }
-
-}
-
-namespace qualifiers {
-  template <class T>
-  void foo(void (func(T*)), T*) {}
-
-  template <class T>
-  class vector{};
-
-  void bar(const vector<int>*) {}
-
-  void test(volatile vector<int>* V) {
-    foo(bar, V);
-  }
-
-  // CHECK: candidate template ignored: deduced conflicting types for parameter 'T' ('const vector<[...]>' vs. 'volatile vector<[...]>')
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-template-diffing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1009 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -std=c++11 2>&1 | FileCheck %s -check-prefix=CHECK-ELIDE-NOTREE
-// RUN: %clang_cc1 -fsyntax-only %s -fno-elide-type -std=c++11 2>&1 | FileCheck %s -check-prefix=CHECK-NOELIDE-NOTREE
-// RUN: %clang_cc1 -fsyntax-only %s -fdiagnostics-show-template-tree -std=c++11 2>&1 | FileCheck %s -check-prefix=CHECK-ELIDE-TREE
-// RUN: %clang_cc1 -fsyntax-only %s -fno-elide-type -fdiagnostics-show-template-tree -std=c++11 2>&1 | FileCheck %s -check-prefix=CHECK-NOELIDE-TREE
-
-// PR9548 - "no known conversion from 'vector<string>' to 'vector<string>'"
-// vector<string> refers to two different types here.  Make sure the message
-// gives a way to tell them apart.
-class versa_string;
-typedef versa_string string;
-
-namespace std {template <typename T> class vector;}
-using std::vector;
-
-void f(vector<string> v);
-
-namespace std {
-  class basic_string;
-  typedef basic_string string;
-  template <typename T> class vector {};
-  void g() {
-    vector<string> v;
-    f(v);
-  }
-} // end namespace std
-// CHECK-ELIDE-NOTREE: no matching function for call to 'f'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<class std::basic_string>' to 'vector<class versa_string>' for 1st argument 
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'f'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<class std::basic_string>' to 'vector<class versa_string>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'f'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   vector<
-// CHECK-ELIDE-TREE:     [class std::basic_string != class versa_string]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'f'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   vector<
-// CHECK-NOELIDE-TREE:     [class std::basic_string != class versa_string]>
-
-template <int... A>
-class I1{};
-void set1(I1<1,2,3,4,2,3,4,3>) {};
-void test1() {
-  set1(I1<1,2,3,4,2,2,4,3,7>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set1'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'I1<[5 * ...], 2, [2 * ...], 7>' to 'I1<[5 * ...], 3, [2 * ...], (no argument)>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set1'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'I1<1, 2, 3, 4, 2, 2, 4, 3, 7>' to 'I1<1, 2, 3, 4, 2, 3, 4, 3, (no argument)>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set1'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   I1<
-// CHECK-ELIDE-TREE:     [5 * ...],
-// CHECK-ELIDE-TREE:     [2 != 3],
-// CHECK-ELIDE-TREE:     [2 * ...],
-// CHECK-ELIDE-TREE:     [7 != (no argument)]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set1'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   I1<
-// CHECK-NOELIDE-TREE:     1,
-// CHECK-NOELIDE-TREE:     2,
-// CHECK-NOELIDE-TREE:     3,
-// CHECK-NOELIDE-TREE:     4,
-// CHECK-NOELIDE-TREE:     2,
-// CHECK-NOELIDE-TREE:     [2 != 3],
-// CHECK-NOELIDE-TREE:     4,
-// CHECK-NOELIDE-TREE:     3,
-// CHECK-NOELIDE-TREE:     [7 != (no argument)]>
-
-template <class A, class B, class C = void>
-class I2{};
-void set2(I2<int, int>) {};
-void test2() {
-  set2(I2<double, int, int>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set2'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'I2<double, [...], int>' to 'I2<int, [...], (default) void>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set2'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'I2<double, int, int>' to 'I2<int, int, (default) void>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set2'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   I2<
-// CHECK-ELIDE-TREE:     [double != int],
-// CHECK-ELIDE-TREE:     [...], 
-// CHECK-ELIDE-TREE:     [int != (default) void]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set2'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   I2<
-// CHECK-NOELIDE-TREE:     [double != int],
-// CHECK-NOELIDE-TREE:     int,
-// CHECK-NOELIDE-TREE:     [int != (default) void]>
-
-int V1, V2, V3;
-template <int* A, int *B>
-class I3{};
-void set3(I3<&V1, &V2>) {};
-void test3() {
-  set3(I3<&V3, &V2>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set3'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'I3<&V3, [...]>' to 'I3<&V1, [...]>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set3'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'I3<&V3, &V2>' to 'I3<&V1, &V2>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set3'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   I3<
-// CHECK-ELIDE-TREE:     [&V3 != &V1]
-// CHECK-ELIDE-TREE:     [...]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set3'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   I3<
-// CHECK-NOELIDE-TREE:     [&V3 != &V1]
-// CHECK-NOELIDE-TREE:     &V2>
-
-template <class A, class B>
-class Alpha{};
-template <class A, class B>
-class Beta{};
-template <class A, class B>
-class Gamma{};
-template <class A, class B>
-class Delta{};
-
-void set4(Alpha<int, int>);
-void test4() {
-  set4(Beta<void, void>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set4'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'Beta<void, void>' to 'Alpha<int, int>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set4'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'Beta<void, void>' to 'Alpha<int, int>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set4'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from 'Beta<void, void>' to 'Alpha<int, int>' for 1st argument
-// CHECK-NOELIDE-TREE: no matching function for call to 'set4'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from 'Beta<void, void>' to 'Alpha<int, int>' for 1st argument
-
-void set5(Alpha<Beta<Gamma<Delta<int, int>, int>, int>, int>);
-void test5() {
-  set5(Alpha<Beta<Gamma<void, void>, double>, double>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set5'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'Alpha<Beta<Gamma<void, void>, double>, double>' to 'Alpha<Beta<Gamma<Delta<int, int>, int>, int>, int>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set5'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'Alpha<Beta<Gamma<void, void>, double>, double>' to 'Alpha<Beta<Gamma<Delta<int, int>, int>, int>, int>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set5'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   Alpha<
-// CHECK-ELIDE-TREE:     Beta<
-// CHECK-ELIDE-TREE:       Gamma<
-// CHECK-ELIDE-TREE:         [void != Delta<int, int>],
-// CHECK-ELIDE-TREE:         [void != int]>
-// CHECK-ELIDE-TREE:       [double != int]>
-// CHECK-ELIDE-TREE:     [double != int]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set5'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   Alpha<
-// CHECK-NOELIDE-TREE:     Beta<
-// CHECK-NOELIDE-TREE:       Gamma<
-// CHECK-NOELIDE-TREE:         [void != Delta<int, int>],
-// CHECK-NOELIDE-TREE:         [void != int]>
-// CHECK-NOELIDE-TREE:       [double != int]>
-// CHECK-NOELIDE-TREE:     [double != int]>
-
-void test6() {
-  set5(Alpha<Beta<Delta<int, int>, int>, int>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set5'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'Alpha<Beta<Delta<int, int>, [...]>, [...]>' to 'Alpha<Beta<Gamma<Delta<int, int>, int>, [...]>, [...]>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set5'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'Alpha<Beta<Delta<int, int>, int>, int>' to 'Alpha<Beta<Gamma<Delta<int, int>, int>, int>, int>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set5'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   Alpha<
-// CHECK-ELIDE-TREE:     Beta<
-// CHECK-ELIDE-TREE:       [Delta<int, int> != Gamma<Delta<int, int>, int>],
-// CHECK-ELIDE-TREE:       [...]>
-// CHECK-ELIDE-TREE:     [...]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set5'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   Alpha<
-// CHECK-NOELIDE-TREE:     Beta<
-// CHECK-NOELIDE-TREE:       [Delta<int, int> != Gamma<Delta<int, int>, int>],
-// CHECK-NOELIDE-TREE:       int>
-// CHECK-NOELIDE-TREE:     int>
-
-int a7, b7;
-int c7[] = {1,2,3};
-template<int *A>
-class class7 {};
-void set7(class7<&a7> A) {}
-void test7() {
-  set7(class7<&a7>());
-  set7(class7<&b7>());
-  set7(class7<c7>());
-  set7(class7<nullptr>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set7'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class7<&b7>' to 'class7<&a7>' for 1st argument
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set7'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class7<c7>' to 'class7<&a7>' for 1st argument
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set7'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class7<nullptr>' to 'class7<&a7>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set7'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class7<&b7>' to 'class7<&a7>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set7'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class7<c7>' to 'class7<&a7>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set7'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class7<nullptr>' to 'class7<&a7>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set7'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class7<
-// CHECK-ELIDE-TREE:     [&b7 != &a7]>
-// CHECK-ELIDE-TREE: no matching function for call to 'set7'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class7<
-// CHECK-ELIDE-TREE:     [c7 != &a7]>
-// CHECK-ELIDE-TREE: no matching function for call to 'set7'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class7<
-// CHECK-ELIDE-TREE:     [nullptr != &a7]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set7'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class7<
-// CHECK-NOELIDE-TREE:     [&b7 != &a7]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set7'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class7<
-// CHECK-NOELIDE-TREE:     [c7 != &a7]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set7'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class7<
-// CHECK-NOELIDE-TREE:     [nullptr != &a7]>
-
-template<typename ...T> struct S8 {};
-template<typename T> using U8 = S8<int, char, T>;
-int f8(S8<int, char, double>);
-int k8 = f8(U8<char>());
-// CHECK-ELIDE-NOTREE: no matching function for call to 'f8'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'S8<[2 * ...], char>' to 'S8<[2 * ...], double>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'f8'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'S8<int, char, char>' to 'S8<int, char, double>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'f8'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   S8<
-// CHECK-ELIDE-TREE:     [2 * ...], 
-// CHECK-ELIDE-TREE:     [char != double]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'f8'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   S8<
-// CHECK-NOELIDE-TREE:     int, 
-// CHECK-NOELIDE-TREE:     char, 
-// CHECK-NOELIDE-TREE:     [char != double]>
-
-template<typename ...T> struct S9 {};
-template<typename T> using U9 = S9<int, char, T>;
-template<typename T> using V9 = U9<U9<T>>;
-int f9(S9<int, char, U9<const double>>);
-int k9 = f9(V9<double>());
-
-// CHECK-ELIDE-NOTREE: no matching function for call to 'f9'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'S9<[2 * ...], S9<[2 * ...], double>>' to 'S9<[2 * ...], S9<[2 * ...], const double>>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'f9'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'S9<int, char, S9<int, char, double>>' to 'S9<int, char, S9<int, char, const double>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'f9'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   S9<
-// CHECK-ELIDE-TREE:     [2 * ...], 
-// CHECK-ELIDE-TREE:     S9<
-// CHECK-ELIDE-TREE:       [2 * ...], 
-// CHECK-ELIDE-TREE:       [double != const double]>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'f9'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   S9<
-// CHECK-NOELIDE-TREE:     int, 
-// CHECK-NOELIDE-TREE:     char, 
-// CHECK-NOELIDE-TREE:     S9<
-// CHECK-NOELIDE-TREE:       int, 
-// CHECK-NOELIDE-TREE:       char, 
-// CHECK-NOELIDE-TREE:       [double != const double]>>
-
-template<typename ...A> class class_types {};
-void set10(class_types<int, int>) {}
-void test10() {
-  set10(class_types<int>());
-  set10(class_types<int, int, int>());
-}
-
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set10'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class_types<[...], (no argument)>' to 'class_types<[...], int>' for 1st argument
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set10'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class_types<[2 * ...], int>' to 'class_types<[2 * ...], (no argument)>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set10'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class_types<int, (no argument)>' to 'class_types<int, int>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set10'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class_types<int, int, int>' to 'class_types<int, int, (no argument)>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set10'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class_types<
-// CHECK-ELIDE-TREE:     [...], 
-// CHECK-ELIDE-TREE:     [(no argument) != int]>
-// CHECK-ELIDE-TREE: no matching function for call to 'set10'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class_types<
-// CHECK-ELIDE-TREE:     [2 * ...], 
-// CHECK-ELIDE-TREE:     [int != (no argument)]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set10'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class_types<
-// CHECK-NOELIDE-TREE:     int, 
-// CHECK-NOELIDE-TREE:     [(no argument) != int]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set10'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class_types<
-// CHECK-NOELIDE-TREE:     int, 
-// CHECK-NOELIDE-TREE:     int, 
-// CHECK-NOELIDE-TREE:     [int != (no argument)]>
-
-template<int ...A> class class_ints {};
-void set11(class_ints<2, 3>) {}
-void test11() {
-  set11(class_ints<1>());
-  set11(class_ints<0, 3, 6>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set11'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class_ints<1, (no argument)>' to 'class_ints<2, 3>' for 1st argument
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set11'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class_ints<0, [...], 6>' to 'class_ints<2, [...], (no argument)>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set11'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class_ints<1, (no argument)>' to 'class_ints<2, 3>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set11'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class_ints<0, 3, 6>' to 'class_ints<2, 3, (no argument)>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set11'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class_ints<
-// CHECK-ELIDE-TREE:     [1 != 2], 
-// CHECK-ELIDE-TREE:     [(no argument) != 3]>
-// CHECK-ELIDE-TREE: no matching function for call to 'set11'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class_ints<
-// CHECK-ELIDE-TREE:     [0 != 2], 
-// CHECK-ELIDE-TREE:     [...], 
-// CHECK-ELIDE-TREE:     [6 != (no argument)]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set11'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class_ints<
-// CHECK-NOELIDE-TREE:     [1 != 2], 
-// CHECK-NOELIDE-TREE:     [(no argument) != 3]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set11'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class_ints<
-// CHECK-NOELIDE-TREE:     [0 != 2], 
-// CHECK-NOELIDE-TREE:     3, 
-// CHECK-NOELIDE-TREE:     [6 != (no argument)]>
-
-template<template<class> class ...A> class class_template_templates {};
-template<class> class tt1 {};
-template<class> class tt2 {};
-void set12(class_template_templates<tt1, tt1>) {}
-void test12() {
-  set12(class_template_templates<tt2>());
-  set12(class_template_templates<tt1, tt1, tt1>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set12'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class_template_templates<template tt2, template (no argument)>' to 'class_template_templates<template tt1, template tt1>' for 1st argument
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set12'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class_template_templates<[2 * ...], template tt1>' to 'class_template_templates<[2 * ...], template (no argument)>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set12'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class_template_templates<template tt2, template (no argument)>' to 'class_template_templates<template tt1, template tt1>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set12'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class_template_templates<template tt1, template tt1, template tt1>' to 'class_template_templates<template tt1, template tt1, template (no argument)>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set12'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class_template_templates<
-// CHECK-ELIDE-TREE:     [template tt2 != template tt1], 
-// CHECK-ELIDE-TREE:     [template (no argument) != template tt1]>
-// CHECK-ELIDE-TREE: no matching function for call to 'set12'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class_template_templates<
-// CHECK-ELIDE-TREE:     [2 * ...], 
-// CHECK-ELIDE-TREE:     [template tt1 != template (no argument)]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set12'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class_template_templates<
-// CHECK-NOELIDE-TREE:     [template tt2 != template tt1], 
-// CHECK-NOELIDE-TREE:     [template (no argument) != template tt1]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set12'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class_template_templates<
-// CHECK-NOELIDE-TREE:     template tt1, 
-// CHECK-NOELIDE-TREE:     template tt1, 
-// CHECK-NOELIDE-TREE:     [template tt1 != template (no argument)]>
-
-double a13, b13, c13, d13;
-template<double* ...A> class class_ptrs {};
-void set13(class_ptrs<&a13, &b13>) {}
-void test13() {
-  set13(class_ptrs<&c13>());
-  set13(class_ptrss<&a13, &b13, &d13>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set13'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class_ptrs<&c13, (no argument)>' to 'class_ptrs<&a13, &b13>' for 1st argument
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set13'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'class_ptrs<[2 * ...], &d13>' to 'class_ptrs<[2 * ...], (no argument)>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set13'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class_ptrs<&c13, (no argument)>' to 'class_ptrs<&a13, &b13>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set13'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'class_ptrs<&a13, &b13, &d13>' to 'class_ptrs<&a13, &b13, (no argument)>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set13'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class_ptrs<
-// CHECK-ELIDE-TREE:     [&c13 != &a13], 
-// CHECK-ELIDE-TREE:     [(no argument) != &b13]>
-// CHECK-ELIDE-TREE: no matching function for call to 'set13'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   class_ptrs<
-// CHECK-ELIDE-TREE:     [2 * ...], 
-// CHECK-ELIDE-TREE:     [&d13 != (no argument)]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set13'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class_ptrs<
-// CHECK-NOELIDE-TREE:     [&c13 != &a13], 
-// CHECK-NOELIDE-TREE:     [(no argument) != &b13]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set13'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   class_ptrs<
-// CHECK-NOELIDE-TREE:     &a13, 
-// CHECK-NOELIDE-TREE:     &b13, 
-// CHECK-NOELIDE-TREE:     [&d13 != (no argument)]>
-
-template<typename T> struct s14 {};
-template<typename T> using a14 = s14<T>;
-typedef a14<int> b14;
-template<typename T> using c14 = b14;
-int f14(c14<int>);
-int k14 = f14(a14<char>());
-// CHECK-ELIDE-NOTREE: no matching function for call to 'f14'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'a14<char>' to 'a14<int>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'f14'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'a14<char>' to 'a14<int>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'f14'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   a14<
-// CHECK-ELIDE-TREE:     [char != int]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'f14'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   a14<
-// CHECK-NOELIDE-TREE:     [char != int]>
-
-void set15(vector<vector<int>>) {}
-void test15() {
-  set15(vector<vector<int>>());
-}
-// CHECK-ELIDE-NOTREE-NOT: set15
-// CHECK-NOELIDE-NOTREE-NOT: set15
-// CHECK-ELIDE-TREE-NOT: set15
-// CHECK-NOELIDE-TREE-NOT: set15
-// no error here
-
-void set16(vector<const vector<int>>) {}
-void test16() {
-  set16(vector<const vector<const int>>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set16'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<const int>>' to 'vector<const vector<int>>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set16'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<const int>>' to 'vector<const vector<int>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set16'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   vector<
-// CHECK-ELIDE-TREE:     const vector<
-// CHECK-ELIDE-TREE:       [const != (no qualifiers)] int>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set16'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   vector<
-// CHECK-NOELIDE-TREE:     const vector<
-// CHECK-NOELIDE-TREE:       [const != (no qualifiers)] int>>
-
-void set17(vector<vector<int>>) {}
-void test17() {
-  set17(vector<const vector<int>>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set17'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<[...]>>' to 'vector<vector<[...]>>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set17'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<int>>' to 'vector<vector<int>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set17'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   vector<
-// CHECK-ELIDE-TREE:     [const != (no qualifiers)] vector<
-// CHECK-ELIDE-TREE:       [...]>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set17'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   vector<
-// CHECK-NOELIDE-TREE:     [const != (no qualifiers)] vector<
-// CHECK-NOELIDE-TREE:       int>>
-
-void set18(vector<const vector<int>>) {}
-void test18() {
-  set18(vector<vector<int>>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set18'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<vector<[...]>>' to 'vector<const vector<[...]>>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set18'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<vector<int>>' to 'vector<const vector<int>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set18'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   vector<
-// CHECK-ELIDE-TREE:     [(no qualifiers) != const] vector<
-// CHECK-ELIDE-TREE:       [...]>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set18'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   vector<
-// CHECK-NOELIDE-TREE:     [(no qualifiers) != const] vector<
-// CHECK-NOELIDE-TREE:       int>>
-
-void set19(vector<volatile vector<int>>) {}
-void test19() {
-  set19(vector<const vector<int>>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set19'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<[...]>>' to 'vector<volatile vector<[...]>>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set19'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<int>>' to 'vector<volatile vector<int>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set19'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   vector<
-// CHECK-ELIDE-TREE:     [const != volatile] vector<
-// CHECK-ELIDE-TREE:       [...]>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set19'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   vector<
-// CHECK-NOELIDE-TREE:     [const != volatile] vector<
-// CHECK-NOELIDE-TREE:       int>>
-
-void set20(vector<const volatile vector<int>>) {}
-void test20() {
-  set20(vector<const vector<int>>());
-}
-// CHECK-ELIDE-NOTREE: no matching function for call to 'set20'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<[...]>>' to 'vector<const volatile vector<[...]>>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'set20'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<const vector<int>>' to 'vector<const volatile vector<int>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'set20'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   vector<
-// CHECK-ELIDE-TREE:     [const != const volatile] vector<
-// CHECK-ELIDE-TREE:       [...]>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'set20'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   vector<
-// CHECK-NOELIDE-TREE:     [const != const volatile] vector<
-// CHECK-NOELIDE-TREE:       int>>
-
-
-// Checks that volatile does not show up in diagnostics.
-template<typename T> struct S21 {};
-template<typename T> using U21 = volatile S21<T>;
-int f21(vector<const U21<int>>);
-int k21 = f21(vector<U21<int>>());
-// CHECK-ELIDE-NOTREE: no matching function for call to 'f21'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U21<[...]>>' to 'vector<const U21<[...]>>' for 1st argument 
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'f21'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U21<int>>' to 'vector<const U21<int>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'f21'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:    vector<
-// CHECK-ELIDE-TREE:      [(no qualifiers) != const] U21<
-// CHECK-ELIDE-TREE:        [...]>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'f21'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:    vector<
-// CHECK-NOELIDE-TREE:      [(no qualifiers) != const] U21<
-// CHECK-NOELIDE-TREE:        int>>
-
-// Checks that volatile does not show up in diagnostics.
-template<typename T> struct S22 {};
-template<typename T> using U22 = volatile S22<T>;
-int f22(vector<volatile const U22<int>>);
-int k22 = f22(vector<volatile U22<int>>());
-// CHECK-ELIDE-NOTREE: no matching function for call to 'f22'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U22<[...]>>' to 'vector<const U22<[...]>>' for 1st argument 
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'f22'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'vector<U22<int>>' to 'vector<const U22<int>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'f22'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:    vector<
-// CHECK-ELIDE-TREE:      [(no qualifiers) != const] U22<
-// CHECK-ELIDE-TREE:        [...]>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'f22'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:    vector<
-// CHECK-NOELIDE-TREE:      [(no qualifiers) != const] U22<
-// CHECK-NOELIDE-TREE:        int>>
-
-// Testing qualifiers and typedefs.
-template <class T> struct D23{};
-template <class T> using C23 = D23<T>;
-typedef const C23<int> B23;
-template<class ...T> using A23 = B23;
-
-void foo23(D23<A23<>> b) {}
-void test23() {
-  foo23(D23<D23<char>>());
-  foo23(C23<char>());
-}
-
-// CHECK-ELIDE-NOTREE: no matching function for call to 'foo23'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'D23<D23<char>>' to 'D23<const D23<int>>' for 1st argument
-// CHECK-ELIDE-NOTREE: no matching function for call to 'foo23'
-// CHECK-ELIDE-NOTREE: candidate function not viable: no known conversion from 'D23<char>' to 'D23<A23<>>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'foo23'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'D23<D23<char>>' to 'D23<const D23<int>>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no matching function for call to 'foo23'
-// CHECK-NOELIDE-NOTREE: candidate function not viable: no known conversion from 'D23<char>' to 'D23<A23<>>' for 1st argument
-// CHECK-ELIDE-TREE: no matching function for call to 'foo23'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   D23<
-// CHECK-ELIDE-TREE:     [(no qualifiers) != const] D23<
-// CHECK-ELIDE-TREE:       [char != int]>>
-// CHECK-ELIDE-TREE: no matching function for call to 'foo23'
-// CHECK-ELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   D23<
-// CHECK-ELIDE-TREE:     [char != A23<>]>
-// CHECK-NOELIDE-TREE: no matching function for call to 'foo23'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   D23<
-// CHECK-NOELIDE-TREE:     [(no qualifiers) != const] D23<
-// CHECK-NOELIDE-TREE:       [char != int]>>
-// CHECK-NOELIDE-TREE: no matching function for call to 'foo23'
-// CHECK-NOELIDE-TREE: candidate function not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   D23<
-// CHECK-NOELIDE-TREE:     [char != A23<>]>
-
-namespace PR14015 {
-template <unsigned N> class Foo1 {};
-template <unsigned N = 2> class Foo2 {};
-template <unsigned ...N> class Foo3 {};
-
-void Play1() {
-  Foo1<1> F1;
-  Foo1<2> F2, F3;
-  F2 = F1;
-  F1 = F2;
-  F2 = F3;
-  F3 = F2;
-}
-
-// CHECK-ELIDE-NOTREE: no viable overloaded '='
-// CHECK-ELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo1<1>' to 'const Foo1<2>' for 1st argument
-// CHECK-ELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo1<1>' to 'Foo1<2>' for 1st argument
-// CHECK-ELIDE-NOTREE: no viable overloaded '='
-// CHECK-ELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo1<2>' to 'const Foo1<1>' for 1st argument
-// CHECK-ELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo1<2>' to 'Foo1<1>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no viable overloaded '='
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo1<1>' to 'const Foo1<2>' for 1st argument
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo1<1>' to 'Foo1<2>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no viable overloaded '='
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo1<2>' to 'const Foo1<1>' for 1st argument
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo1<2>' to 'Foo1<1>' for 1st argument
-// CHECK-ELIDE-TREE: no viable overloaded '='
-// CHECK-ELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   [(no qualifiers) != const] Foo1<
-// CHECK-ELIDE-TREE:     [1 != 2]>
-// CHECK-ELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   Foo1<
-// CHECK-ELIDE-TREE:     [1 != 2]>
-// CHECK-ELIDE-TREE: no viable overloaded '='
-// CHECK-ELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   [(no qualifiers) != const] Foo1<
-// CHECK-ELIDE-TREE:     [2 != 1]>
-// CHECK-ELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   Foo1<
-// CHECK-ELIDE-TREE:     [2 != 1]>
-// CHECK-NOELIDE-TREE: no viable overloaded '='
-// CHECK-NOELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   [(no qualifiers) != const] Foo1<
-// CHECK-NOELIDE-TREE:     [1 != 2]>
-// CHECK-NOELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   Foo1<
-// CHECK-NOELIDE-TREE:     [1 != 2]>
-// CHECK-NOELIDE-TREE: no viable overloaded '='
-// CHECK-NOELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   [(no qualifiers) != const] Foo1<
-// CHECK-NOELIDE-TREE:     [2 != 1]>
-// CHECK-NOELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   Foo1<
-// CHECK-NOELIDE-TREE:     [2 != 1]>
-
-void Play2() {
-  Foo2<1> F1;
-  Foo2<> F2, F3;
-  F2 = F1;
-  F1 = F2;
-  F2 = F3;
-  F3 = F2;
-}
-// CHECK-ELIDE-NOTREE: no viable overloaded '='
-// CHECK-ELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo2<1>' to 'const Foo2<2>' for 1st argument
-// CHECK-ELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo2<1>' to 'Foo2<2>' for 1st argument
-// CHECK-ELIDE-NOTREE: no viable overloaded '='
-// CHECK-ELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo2<(default) 2>' to 'const Foo2<1>' for 1st argument
-// CHECK-ELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo2<(default) 2>' to 'Foo2<1>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no viable overloaded '='
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo2<1>' to 'const Foo2<2>' for 1st argument
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo2<1>' to 'Foo2<2>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no viable overloaded '='
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo2<(default) 2>' to 'const Foo2<1>' for 1st argument
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo2<(default) 2>' to 'Foo2<1>' for 1st argument
-// CHECK-ELIDE-TREE: no viable overloaded '='
-// CHECK-ELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   [(no qualifiers) != const] Foo2<
-// CHECK-ELIDE-TREE:     [1 != 2]>
-// CHECK-ELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   Foo2<
-// CHECK-ELIDE-TREE:     [1 != 2]>
-// CHECK-ELIDE-TREE: no viable overloaded '='
-// CHECK-ELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   [(no qualifiers) != const] Foo2<
-// CHECK-ELIDE-TREE:     [(default) 2 != 1]>
-// CHECK-ELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   Foo2<
-// CHECK-ELIDE-TREE:     [(default) 2 != 1]>
-// CHECK-NOELIDE-TREE: no viable overloaded '='
-// CHECK-NOELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   [(no qualifiers) != const] Foo2<
-// CHECK-NOELIDE-TREE:     [1 != 2]>
-// CHECK-NOELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   Foo2<
-// CHECK-NOELIDE-TREE:     [1 != 2]>
-// CHECK-NOELIDE-TREE: no viable overloaded '='
-// CHECK-NOELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   [(no qualifiers) != const] Foo2<
-// CHECK-NOELIDE-TREE:     [(default) 2 != 1]>
-// CHECK-NOELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   Foo2<
-// CHECK-NOELIDE-TREE:     [(default) 2 != 1]>
-
-void Play3() {
-  Foo3<1> F1;
-  Foo3<2, 1> F2, F3;
-  F2 = F1;
-  F1 = F2;
-  F2 = F3;
-  F3 = F2;
-}
-// CHECK-ELIDE-NOTREE: no viable overloaded '='
-// CHECK-ELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo3<1, (no argument)>' to 'const Foo3<2, 1>' for 1st argument
-// CHECK-ELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo3<1, (no argument)>' to 'Foo3<2, 1>' for 1st argument
-// CHECK-ELIDE-NOTREE: no viable overloaded '='
-// CHECK-ELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo3<2, 1>' to 'const Foo3<1, (no argument)>' for 1st argument
-// CHECK-ELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo3<2, 1>' to 'Foo3<1, (no argument)>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no viable overloaded '='
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo3<1, (no argument)>' to 'const Foo3<2, 1>' for 1st argument
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo3<1, (no argument)>' to 'Foo3<2, 1>' for 1st argument
-// CHECK-NOELIDE-NOTREE: no viable overloaded '='
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'Foo3<2, 1>' to 'const Foo3<1, (no argument)>' for 1st argument
-// CHECK-NOELIDE-NOTREE: candidate function (the implicit move assignment operator) not viable: no known conversion from 'Foo3<2, 1>' to 'Foo3<1, (no argument)>' for 1st argument
-// CHECK-ELIDE-TREE: no viable overloaded '='
-// CHECK-ELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   [(no qualifiers) != const] Foo3<
-// CHECK-ELIDE-TREE:     [1 != 2], 
-// CHECK-ELIDE-TREE:     [(no argument) != 1]>
-// CHECK-ELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   Foo3<
-// CHECK-ELIDE-TREE:     [1 != 2],
-// CHECK-ELIDE-TREE:     [(no argument) != 1]>
-// CHECK-ELIDE-TREE: no viable overloaded '='
-// CHECK-ELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   [(no qualifiers) != const] Foo3<
-// CHECK-ELIDE-TREE:     [2 != 1],
-// CHECK-ELIDE-TREE:     [1 != (no argument)]>
-// CHECK-ELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-ELIDE-TREE:   Foo3<
-// CHECK-ELIDE-TREE:     [2 != 1], 
-// CHECK-ELIDE-TREE:     [1 != (no argument)]>
-// CHECK-NOELIDE-TREE: no viable overloaded '='
-// CHECK-NOELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   [(no qualifiers) != const] Foo3<
-// CHECK-NOELIDE-TREE:     [1 != 2], 
-// CHECK-NOELIDE-TREE:     [(no argument) != 1]>
-// CHECK-NOELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   Foo3<
-// CHECK-NOELIDE-TREE:     [1 != 2], 
-// CHECK-NOELIDE-TREE:     [(no argument) != 1]>
-// CHECK-NOELIDE-TREE: no viable overloaded '='
-// CHECK-NOELIDE-TREE: candidate function (the implicit copy assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   [(no qualifiers) != const] Foo3<
-// CHECK-NOELIDE-TREE:     [2 != 1], 
-// CHECK-NOELIDE-TREE:     [1 != (no argument)]>
-// CHECK-NOELIDE-TREE: candidate function (the implicit move assignment operator) not viable: no known conversion from argument type to parameter type for 1st argument
-// CHECK-NOELIDE-TREE:   Foo3<
-// CHECK-NOELIDE-TREE:     [2 != 1], 
-// CHECK-NOELIDE-TREE:     [1 != (no argument)]>
-}
-
-namespace PR14342 {
-  template<typename T, short a> struct X {};
-  X<int, (signed char)-1> x = X<long, -1>();
-  X<int, 3UL> y = X<int, 2>();
-  // CHECK-ELIDE-NOTREE: error: no viable conversion from 'X<long, [...]>' to 'X<int, [...]>'
-  // CHECK-ELIDE-NOTREE: error: no viable conversion from 'X<[...], 2>' to 'X<[...], 3>'
-}
-
-namespace PR14489 {
-  // The important thing here is that the diagnostic diffs a template specialization
-  // with no arguments against itself.  (We might need a different test if this
-  // diagnostic changes).
-  template<class ...V>
-  struct VariableList   {
-    void ConnectAllToAll(VariableList<>& params = VariableList<>())    {
-    }
-  };
-  // CHECK-ELIDE-NOTREE: non-const lvalue reference to type 'VariableList<>' cannot bind to a temporary of type 'VariableList<>'
-}
-
-namespace rdar12456626 {
-  struct IntWrapper {
-    typedef int type;
-  };
-  
-  template<typename T, typename T::type V>
-  struct X { };
-  
-  struct A {
-    virtual X<IntWrapper, 1> foo();
-  };
-  
-  struct B : A {
-    // CHECK-ELIDE-NOTREE: virtual function 'foo' has a different return type
-    virtual X<IntWrapper, 2> foo();
-  };
-}
-
-namespace PR15023 {
-  // Don't crash when non-QualTypes are passed to a diff modifier.
-  template <typename... Args>
-  void func(void (*func)(Args...), Args...) { }
-
-  void bar(int, int &) {
-  }
-
-  void foo(int x) {
-    func(bar, 1, x)
-  }
-  // CHECK-ELIDE-NOTREE: no matching function for call to 'func'
-  // CHECK-ELIDE-NOTREE: candidate template ignored: deduced conflicting types for parameter 'Args' (<int, int &> vs. <int, int>)
-}
-
-namespace rdar12931988 {
-  namespace A {
-    template<typename T> struct X { };
-  }
-
-  namespace B {
-    template<typename T> struct X { };
-  }
-
-  void foo(A::X<int> &ax, B::X<int> bx) {
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'B::X<int>' to 'const rdar12931988::A::X<int>'
-    ax = bx;
-  }
-
-  template<template<typename> class> class Y {};
-
-  void bar(Y<A::X> ya, Y<B::X> yb) {
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'Y<template rdar12931988::B::X>' to 'Y<template rdar12931988::A::X>'
-    ya = yb;
-  }
-}
-
-namespace ValueDecl {
-  int int1, int2, default_int;
-  template <const int& T = default_int>
-  struct S {};
-
-  typedef S<int1> T1;
-  typedef S<int2> T2;
-  typedef S<> TD;
-
-  void test() {
-    T1 t1;
-    T2 t2;
-    TD td;
-
-    t1 = t2;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'S<int2>' to 'S<int1>'
-
-    t2 = t1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'S<int1>' to 'S<int2>'
-
-    td = t1;
-    // TODO: Find out why (default) isn't printed on second template.
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'S<int1>' to 'S<default_int>'
-
-    t2 = td;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'S<(default) default_int>' to 'S<int2>'
-
-  }
-}
-
-namespace DependentDefault {
-  template <typename> struct Trait {
-    enum { V = 40 };
-    typedef int Ty;
-    static int I;
-  };
-  int other;
-
-  template <typename T, int = Trait<T>::V > struct A {};
-  template <typename T, typename = Trait<T>::Ty > struct B {};
-  template <typename T, int& = Trait<T>::I > struct C {};
-
-  void test() {
-
-    A<int> a1;
-    A<char> a2;
-    A<int, 10> a3;
-    a1 = a2;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'A<char, [...]>' to 'A<int, [...]>'
-    a3 = a1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'A<[...], (default) 40>' to 'A<[...], 10>'
-    a2 = a3;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'A<int, 10>' to 'A<char, 40>'
-
-    B<int> b1;
-    B<char> b2;
-    B<int, char> b3;
-    b1 = b2;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'B<char, (default) Trait<T>::Ty>' to 'B<int, int>'
-    b3 = b1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'B<[...], (default) Trait<T>::Ty>' to 'B<[...], char>'
-    b2 = b3;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'B<int, char>' to 'B<char, int>'
-
-    C<int> c1;
-    C<char> c2;
-    C<int, other> c3;
-    c1 = c2;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'C<char, (default) I>' to 'C<int, I>'
-    c3 = c1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'C<[...], (default) I>' to 'C<[...], other>'
-    c2 = c3;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'C<int, other>' to 'C<char, I>'
-  }
-}
-
-namespace VariadicDefault {
-  int i1, i2, i3;
-  template <int = 5, int...> struct A {};
-  template <int& = i1, int& ...> struct B {};
-  template <typename = void, typename...> struct C {};
-
-  void test() {
-    A<> a1;
-    A<5, 6, 7> a2;
-    A<1, 2> a3;
-    a2 = a1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'A<[...], (no argument), (no argument)>' to 'A<[...], 6, 7>'
-    a3 = a1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'A<(default) 5, (no argument)>' to 'A<1, 2>'
-
-    B<> b1;
-    B<i1, i2, i3> b2;
-    B<i2, i3> b3;
-    b2 = b1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'B<[...], (no argument), (no argument)>' to 'B<[...], i2, i3>'
-    b3 = b1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'B<(default) i1, (no argument)>' to 'B<i2, i3>'
-
-    B<i1, i2, i3> b4 = b1;
-    // CHECK-ELIDE-NOTREE: no viable conversion from 'B<[...], (no argument), (no argument)>' to 'B<[...], i2, i3>'
-    B<i2, i3> b5 = b1;
-    // CHECK-ELIDE-NOTREE: no viable conversion from 'B<(default) i1, (no argument)>' to 'B<i2, i3>'
-
-    C<> c1;
-    C<void, void> c2;
-    C<char, char> c3;
-    c2 = c1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'C<[...], (no argument)>' to 'C<[...], void>'
-    c3 = c1;
-    // CHECK-ELIDE-NOTREE: no viable overloaded '='
-    // CHECK-ELIDE-NOTREE: no known conversion from 'C<(default) void, (no argument)>' to 'C<char, char>'
-  }
-}
-
-// CHECK-ELIDE-NOTREE: {{[0-9]*}} errors generated.
-// CHECK-NOELIDE-NOTREE: {{[0-9]*}} errors generated.
-// CHECK-ELIDE-TREE: {{[0-9]*}} errors generated.
-// CHECK-NOELIDE-TREE: {{[0-9]*}} errors generated.
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-trailing-null-bytes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-trailing-null-bytes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-trailing-null-bytes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck -strict-whitespace %s
-// CHECK: {{ERR_DNS_SERVER_REQUIRES_TCP$}}
-
-// http://llvm.org/PR12674
-#define NET_ERROR(label, value) ERR_ ## label = value,
-
-NET_ERROR(DNS_SERVER_REQUIRES_TCP, -801)
-
-#undef NET_ERROR
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diag-verify.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diag-verify.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diag-verify.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 2>&1 | FileCheck %s
-
-// Test the -verify flag.  Each of the "x = y;" lines will produce a
-// "use of undeclared identifier 'y'" error message.
-
-void test() {
-  int x;
-  // Proper matches here.
-  x = y; // expected-error{{use of undeclared identifier 'y'}}
-  x = y; // expected-error{{use of undeclared identifier}}
-  x = y; // expected-error{{undeclared identifier 'y'}}
-  x = y; // expected-error{{use of}}
-  x = y; // expected-error{{undeclared identifier}}
-  x = y; // expected-error{{'y'}}
-
-  // Bad matches here.
-  x = y; // expected-error{{use of undeclared identifier 'y' is fine}}
-  x = y; // expected-error{{abuse of undeclared identifier 'y'}}
-  x = y; // expected-error{{good use of undeclared identifier 'y' in code}}
-  x = y; // expected-error{{ use of undeclared identifier 'y' }}
-  x = y; // expected-error{{use of undeclared identifier 'y' is disallowed}}
-  x = y; // expected-error{{please don't use of undeclared identifier 'y'}}
-  x = y; // expected-error{{use of undeclared identifier 'y'; please declare y before use}}
-  x = y; // expected-error{{use of use of undeclared identifier 'y'}}
-  x = y; // expected-error{{use of undeclared identifier 'y' identifier 'y'}}
-}
-
-//CHECK: error: 'error' diagnostics expected but not seen: 
-//CHECK:   Line 17: use of undeclared identifier 'y' is fine
-//CHECK:   Line 18: abuse of undeclared identifier 'y'
-//CHECK:   Line 19: good use of undeclared identifier 'y' in code
-//CHECK:   Line 20:  use of undeclared identifier 'y' 
-//CHECK:   Line 21: use of undeclared identifier 'y' is disallowed
-//CHECK:   Line 22: please don't use of undeclared identifier 'y'
-//CHECK:   Line 23: use of undeclared identifier 'y'; please declare y before use
-//CHECK:   Line 24: use of use of undeclared identifier 'y'
-//CHECK:   Line 25: use of undeclared identifier 'y' identifier 'y'
-//CHECK: error: 'error' diagnostics seen but not expected: 
-//CHECK:   Line 17: use of undeclared identifier 'y'
-//CHECK:   Line 18: use of undeclared identifier 'y'
-//CHECK:   Line 19: use of undeclared identifier 'y'
-//CHECK:   Line 20: use of undeclared identifier 'y'
-//CHECK:   Line 21: use of undeclared identifier 'y'
-//CHECK:   Line 22: use of undeclared identifier 'y'
-//CHECK:   Line 23: use of undeclared identifier 'y'
-//CHECK:   Line 24: use of undeclared identifier 'y'
-//CHECK:   Line 25: use of undeclared identifier 'y'
-//CHECK: 18 errors generated.

Modified: trunk/contrib/llvm/tools/clang/test/Misc/diagnostic-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/diagnostic-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/diagnostic-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-// The diagnostics we produce for this code tickled a bug in raw_ostream.
-template <typename _Alloc> class allocator;
-template <class _CharT> struct char_traits;
-template <typename _CharT, typename _Traits = char_traits<_CharT>,
-          typename _Alloc = allocator<_CharT> >
-class basic_string;
-typedef basic_string<wchar_t> wstring;
-class Closure {
-};
-template <class A1> class Callback1 {
-};
-template <class A1, class A2> class Callback2 {
-};
-template <class R, class A2> class ResultCallback1 {
-};
-template <bool del, class R, class T, class P1, class P2, class A1>
-class AAAAAAAResultCallback_2_1 : public ResultCallback1<R, A1> {
-};
-template <bool del, class T, class P1, class P2, class A1>
-class AAAAAAAResultCallback_2_1< del, void, T, P1, P2, A1> :
-    public Callback1<A1> {
- public:
-  typedef Callback1<A1> base;
-};
-template <class T1, class T2, class R, class P1, class P2, class A1>
-inline typename AAAAAAAResultCallback_2_1<true, R, T1, P1, P2, A1>::base*
-NewCallback(T1* obj, R(T2::* member)(P1, P2, A1), const P1& p1, const P2& p2) {}
-namespace util { class Status {}; }
-class xxxxxxxxxxxxxxxxx {
-  void Bar(wstring* s, util::Status* status,
-           Callback2<util::Status, wstring>* done);
-  void Foo();
-};
-void xxxxxxxxxxxxxxxxx::Foo() {
-  wstring* s = __null;
-  util::Status* status = __null;
-  Closure* cb = NewCallback(this, &xxxxxxxxxxxxxxxxx::Bar, s, status);  // expected-error{{cannot initialize}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/emit-html-insert.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/emit-html-insert.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/emit-html-insert.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -emit-html -o - | grep ">< 10; }"
-
-int a(int x) { return x
-< 10; }

Modified: trunk/contrib/llvm/tools/clang/test/Misc/emit-html.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/emit-html.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/emit-html.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -emit-html -o -
-
-// rdar://6562329
-#line 42 "foo.c"
-
-// PR3635
-#define F(fmt, ...) fmt, ## __VA_ARGS__
-int main(int argc, char **argv) {
-  return F(argc, 1);
-}
-
-// PR3798
-#define FOR_ALL_FILES(f,i) i
-
-#if 0
-  FOR_ALL_FILES(f) { }
-#endif
-
-// <rdar://problem/11625964>
-// -emit-html filters out # directives, but not _Pragma (or MS __pragma)
-// Diagnostic push/pop is stateful, so re-lexing a file can cause problems
-// if these pragmas are interpreted normally.
-_Pragma("clang diagnostic push")
-_Pragma("clang diagnostic ignored \"-Wformat-extra-args\"")
-_Pragma("clang diagnostic pop")
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/error-limit-multiple-notes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/error-limit-multiple-notes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/error-limit-multiple-notes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -ferror-limit 1 -fsyntax-only %s 2>&1 | FileCheck %s
-
-// error and three notes emitted
-void foo(int);
-void foo(double);
-void foo(int, int);
-
-int main()
-{
-    foo();
-}
-
-// error and note suppressed by error-limit
-struct s1{};
-struct s1{};
-
-// CHECK: 10:5: error: no matching function for call to 'foo'
-// CHECK: 6:6: note: candidate function not viable: requires 2 arguments, but 0 were provided
-// CHECK: 5:6: note: candidate function not viable: requires 1 argument, but 0 were provided
-// CHECK: 4:6: note: candidate function not viable: requires 1 argument, but 0 were provided
-// CHECK: fatal error: too many errors emitted, stopping now
-// CHECK-NOT: 15:8: error: redefinition of 's1'
-// CHECK-NOT: 14:8: note: previous definition is here

Modified: trunk/contrib/llvm/tools/clang/test/Misc/error-limit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/error-limit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/error-limit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -ferror-limit 1 -fsyntax-only %s 2>&1 | FileCheck %s
-
-// error and note emitted
-struct s1{};
-struct s1{};
-
-// error and note suppressed by error-limit
-struct s2{};
-struct s2{};
-
-// CHECK: 5:8: error: redefinition of 's1'
-// CHECK: 4:8: note: previous definition is here
-// CHECK: fatal error: too many errors emitted, stopping now
-// CHECK-NOT: 9:8: error: redefinition of 's2'
-// CHECK-NOT: 8:8: note: previous definition is here

Modified: trunk/contrib/llvm/tools/clang/test/Misc/freebsd-arm-size_t.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/freebsd-arm-size_t.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/freebsd-arm-size_t.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple arm-unknown-freebsd10.0 -verify %s
-// expected-no-diagnostics
-
-/* Define a size_t as expected for FreeBSD ARM */
-typedef unsigned int size_t;
-
-/* Declare a builtin function that uses size_t */
-void *malloc(size_t);
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/include-stack-for-note-flag.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/include-stack-for-note-flag.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/include-stack-for-note-flag.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-note-include-stack %s 2>&1 | FileCheck %s -check-prefix=STACK
-// RUN: %clang_cc1 -fsyntax-only -fno-diagnostics-show-note-include-stack %s 2>&1 | FileCheck %s -check-prefix=STACKLESS
-// RUN: %clang_cc1 -fsyntax-only -fno-diagnostics-show-note-include-stack -fdiagnostics-show-note-include-stack %s 2>&1 | FileCheck %s -check-prefix=STACK
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-note-include-stack -fno-diagnostics-show-note-include-stack %s 2>&1 | FileCheck %s -check-prefix=STACKLESS
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck %s -check-prefix=STACKLESS
-
-#include "Inputs/include.h"
-int test() {
-  return foo(1, 1);
-}
-
-bool macro(int x, int y) {
-  return EQUALS(&x, y);
-}
-
-// STACK: error: no matching function for call to 'foo'
-// STACK:  In file included from
-// STACK: note: candidate function not viable
-// STACK: error: comparison between pointer and integer
-// STACK:  In file included from
-// STACK: note: expanded from macro
-
-// STACKLESS: error: no matching function for call to 'foo'
-// STACKLESS-NOT:  In file included from
-// STACKLESS: note: candidate function not viable
-// STACKLESS: error: comparison between pointer and integer
-// STACKLESS-NOT:  In file included from
-// STACKLESS: note: expanded from macro

Modified: trunk/contrib/llvm/tools/clang/test/Misc/integer-literal-printing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/integer-literal-printing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/integer-literal-printing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -std=c++11
-
-// PR11179
-template <short T> class Type1 {};
-template <short T> void Function1(Type1<T>& x) {} // expected-note{{candidate function [with T = -42] not viable: expects an l-value for 1st argument}}
-
-template <unsigned short T> class Type2 {};
-template <unsigned short T> void Function2(Type2<T>& x) {} // expected-note{{candidate function [with T = 42] not viable: expects an l-value for 1st argument}}
-
-enum class boolTy : bool {
-  b = 0,
-};
-
-template <boolTy T> struct Type3Helper;
-template <> struct Type3Helper<boolTy::b> { typedef boolTy Ty; };
-template <boolTy T, typename Type3Helper<T>::Ty U> struct Type3 {};
-
-// PR14386
-enum class charTy : char {
-  c = 0,
-};
-
-template <charTy T> struct Type4Helper;
-template <> struct Type4Helper<charTy::c> { typedef charTy Ty; };
-template <charTy T, typename Type4Helper<T>::Ty U> struct Type4 {};
-
-enum class scharTy : signed char {
-  c = 0,
-};
-
-template <scharTy T> struct Type5Helper;
-template <> struct Type5Helper<scharTy::c> { typedef scharTy Ty; };
-template <scharTy T, typename Type5Helper<T>::Ty U> struct Type5 {};
-
-enum class ucharTy : unsigned char {
-  c = 0,
-};
-
-template <ucharTy T> struct Type6Helper;
-template <> struct Type6Helper<ucharTy::c> { typedef ucharTy Ty; };
-template <ucharTy T, typename Type6Helper<T>::Ty U> struct Type6 {};
-
-enum class wcharTy : wchar_t {
-  c = 0,
-};
-
-template <wcharTy T> struct Type7Helper;
-template <> struct Type7Helper<wcharTy::c> { typedef wcharTy Ty; };
-template <wcharTy T, typename Type7Helper<T>::Ty U> struct Type7 {};
-
-enum class char16Ty : char16_t {
-  c = 0,
-};
-
-template <char16Ty T> struct Type8Helper;
-template <> struct Type8Helper<char16Ty::c> { typedef char16Ty Ty; };
-template <char16Ty T, typename Type8Helper<T>::Ty U> struct Type8 {};
-
-enum class char32Ty : char16_t {
-  c = 0,
-};
-
-template <char32Ty T> struct Type9Helper;
-template <> struct Type9Helper<char32Ty::c> { typedef char32Ty Ty; };
-template <char32Ty T, typename Type9Helper<T>::Ty U> struct Type9 {};
-
-void Function() {
-  Function1(Type1<-42>()); // expected-error{{no matching function for call to 'Function1'}}
-  Function2(Type2<42>()); // expected-error{{no matching function for call to 'Function2'}}
-
-  struct Type3<boolTy::b, "3"> t3; // expected-error{{value of type 'const char [2]' is not implicitly convertible to 'typename Type3Helper<(boolTy)false>::Ty' (aka 'boolTy')}}
-
-  struct Type4<charTy::c, "4"> t4; // expected-error{{value of type 'const char [2]' is not implicitly convertible to 'typename Type4Helper<(charTy)'\x00'>::Ty' (aka 'charTy')}}
-  struct Type5<scharTy::c, "5"> t5; // expected-error{{value of type 'const char [2]' is not implicitly convertible to 'typename Type5Helper<(scharTy)'\x00'>::Ty' (aka 'scharTy')}}
-  struct Type6<ucharTy::c, "6"> t6; // expected-error{{value of type 'const char [2]' is not implicitly convertible to 'typename Type6Helper<(ucharTy)'\x00'>::Ty' (aka 'ucharTy')}}
-  struct Type7<wcharTy::c, "7"> t7; // expected-error{{value of type 'const char [2]' is not implicitly convertible to 'typename Type7Helper<(wcharTy)L'\x00'>::Ty' (aka 'wcharTy')}}
-  struct Type8<char16Ty::c, "8"> t8; // expected-error{{value of type 'const char [2]' is not implicitly convertible to 'typename Type8Helper<(char16Ty)u'\x00'>::Ty' (aka 'char16Ty')}}
-  struct Type9<char32Ty::c, "9"> t9; // expected-error{{value of type 'const char [2]' is not implicitly convertible to 'typename Type9Helper<(char32Ty)u'\x00'>::Ty' (aka 'char32Ty')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/macro-backtrace.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/macro-backtrace.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/macro-backtrace.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// Tests for macro expansion backtraces. The RUN and CHECK lines are grouped
-// below the test code to reduce noise when updating them.
-
-#define M1(A, B) ((A) < (B))
-#define M2(A, B) M1(A, B)
-#define M3(A, B) M2(A, B)
-#define M4(A, B) M3(A, B)
-#define M5(A, B) M4(A, B)
-#define M6(A, B) M5(A, B)
-#define M7(A, B) M6(A, B)
-#define M8(A, B) M7(A, B)
-#define M9(A, B) M8(A, B)
-#define M10(A, B) M9(A, B)
-#define M11(A, B) M10(A, B)
-#define M12(A, B) M11(A, B)
-
-void f(int *ip, float *fp) {
-  if (M12(ip, fp)) { }
-  // RUN: %clang_cc1 -fsyntax-only -fmacro-backtrace-limit 5 %s 2>&1 \
-  // RUN:   | FileCheck %s -check-prefix=CHECK-LIMIT
-  // CHECK-LIMIT: macro-backtrace.c:18:7: warning: comparison of distinct pointer types ('int *' and 'float *')
-  // CHECK-LIMIT: if (M12(ip, fp)) { }
-  // CHECK-LIMIT: macro-backtrace.c:15:19: note: expanded from macro 'M12'
-  // CHECK-LIMIT: #define M12(A, B) M11(A, B)
-  // CHECK-LIMIT: macro-backtrace.c:14:19: note: expanded from macro 'M11'
-  // CHECK-LIMIT: #define M11(A, B) M10(A, B)
-  // CHECK-LIMIT: note: (skipping 7 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
-  // CHECK-LIMIT: macro-backtrace.c:6:18: note: expanded from macro 'M3'
-  // CHECK-LIMIT: #define M3(A, B) M2(A, B)
-  // CHECK-LIMIT: macro-backtrace.c:5:18: note: expanded from macro 'M2'
-  // CHECK-LIMIT: #define M2(A, B) M1(A, B)
-  // CHECK-LIMIT: macro-backtrace.c:4:23: note: expanded from macro 'M1'
-  // CHECK-LIMIT: #define M1(A, B) ((A) < (B))
-
-  // RUN: %clang_cc1 -fsyntax-only -fno-caret-diagnostics %s 2>&1 \
-  // RUN:   | FileCheck %s -check-prefix=CHECK-NO-CARETS
-  // CHECK-NO-CARETS: macro-backtrace.c:18:7: warning: comparison of distinct pointer types ('int *' and 'float *')
-  // CHECK-NO-CARETS-NEXT: macro-backtrace.c:15:19: note: expanded from macro 'M12'
-  // CHECK-NO-CARETS-NEXT: macro-backtrace.c:14:19: note: expanded from macro 'M11'
-  // CHECK-NO-CARETS-NEXT: macro-backtrace.c:13:19: note: expanded from macro 'M10'
-  // CHECK-NO-CARETS-NEXT: note: (skipping 6 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
-  // CHECK-NO-CARETS-NEXT: macro-backtrace.c:6:18: note: expanded from macro 'M3'
-  // CHECK-NO-CARETS-NEXT: macro-backtrace.c:5:18: note: expanded from macro 'M2'
-  // CHECK-NO-CARETS-NEXT: macro-backtrace.c:4:23: note: expanded from macro 'M1'
-
-  // Check that the expansion notes respect the same formatting options as
-  // other diagnostics.
-  // RUN: %clang_cc1 -fsyntax-only -fdiagnostics-format vi %s 2>&1 \
-  // RUN:   | FileCheck %s -check-prefix=CHECK-NOTE-FORMAT
-  // CHECK-NOTE-FORMAT: macro-backtrace.c +18:7: warning:
-  // CHECK-NOTE-FORMAT: macro-backtrace.c +15:19: note:
-  // CHECK-NOTE-FORMAT: macro-backtrace.c +14:19: note:
-  // CHECK-NOTE-FORMAT: note:
-  // CHECK-NOTE-FORMAT: macro-backtrace.c +6:18: note:
-  // CHECK-NOTE-FORMAT: macro-backtrace.c +5:18: note:
-  // CHECK-NOTE-FORMAT: macro-backtrace.c +4:23: note:
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/message-length.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/message-length.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/message-length.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: not %clang_cc1 -fmessage-length 72 %s 2>&1 | FileCheck -strict-whitespace %s
-// RUN: not %clang_cc1 -fmessage-length 1 %s
-// RUN: not %clang_cc1 -fmessage-length 8 %s 2>&1 | FileCheck -check-prefix=CHECK-DOT %s
-// Hack so we can check things better, force the file name and line.
-# 1 "FILE" 1
-
-/* It's tough to verify the results of this test mechanically, since
-   the length of the filename (and, therefore, how the word-wrapping
-   behaves) changes depending on where the test-suite resides in the
-   file system. */
-void f(int, float, char, float);
-
-void g() {
-      int (*fp1)(int, float, short, float) = f;
-
-  int (*fp2)(int, float, short, float) = f;
-}
-
-void a_func_to_call(int, int, int);
-
-void a_very_long_line(int *ip, float *FloatPointer) {
-  for (int ALongIndexName = 0; ALongIndexName < 100; ALongIndexName++) if (ip[ALongIndexName] == 17) a_func_to_call(ip == FloatPointer, ip[ALongIndexName], FloatPointer[ALongIndexName]);
-
-
-  int array0[] = { [3] 3, 5, 7, 4, 2, 7, 6, 3, 4, 5, 6, 7, 8, 9, 12, 345, 14, 345, 789, 234, 678, 345, 123, 765, 234 };
-}
-
-#pragma STDC CX_LIMITED_RANGE    // some long comment text and a brace, eh {}
-
-// CHECK: FILE:23:78
-// CHECK: {{^  ...// some long comment text and a brace, eh {}}}
-
-struct A { int x; };
-void h(struct A *a) {
-  // CHECK-DOT: member
-  // CHECK-DOT: reference
-  // CHECK-DOT: type
-  (void)a
-          .
-          x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/predefines.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/predefines.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/predefines.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only -verify -std=c89 -ffreestanding -pedantic-errors %s
- * expected-no-diagnostics
- * rdar://6814950
- */
-#include <stdint.h>
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/remap-file.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/remap-file.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/remap-file.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -remap-file "%s;%S/Inputs/remapped-file" -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-EXIST %s
-// RUN: %clang_cc1 -remap-file "%S/nonexistent.c;%S/Inputs/remapped-file" -fsyntax-only %S/nonexistent.c 2>&1 | FileCheck -check-prefix=CHECK-NONEXIST %s
-// RUN: %clang_cc1 -remap-file "%S/nonexistent.c;%S/Inputs/remapped-file-2" -remap-file "%S/nonexistent.h;%S/Inputs/remapped-file-3" -fsyntax-only %S/nonexistent.c 2>&1 | FileCheck -check-prefix=CHECK-HEADER %s
-
-// CHECK-EXIST: remap-file.c:1:28: warning: incompatible pointer types
-// CHECK-NONEXIST: nonexistent.c:1:28: warning: incompatible pointer types
-// CHECK-HEADER: nonexistent.c:3:19: warning: incompatible pointer types
-int

Modified: trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-frontend.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-frontend.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-frontend.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: rm -f %t
-// RUN: %clang -fsyntax-only %s -Wblahblah --serialize-diagnostics %t > /dev/null 2>&1
-// RUN: c-index-test -read-diagnostics %t 2>&1 | FileCheck %s
-
-// This test case tests that we can handle frontend diagnostics.
-
-// CHECK: warning: unknown warning option '-Wblahblah'
-// CHECK: Number of diagnostics: 1

Modified: trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-no-category.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-no-category.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-no-category.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-#error foo
-#error bar
-
-// RUN: rm -f %t
-// RUN: not %clang -ferror-limit=1 -fsyntax-only %s --serialize-diagnostics %t > /dev/null 2>&1
-// RUN: c-index-test -read-diagnostics %t 2>&1 | FileCheck %s
-
-// This test case tests that we can handle both fatal errors and errors without categories.
-
-// CHECK: {{.*[/\\]}}serialized-diags-no-category.c:1:2: error: foo []
-// CHECK: Number of diagnostics: 2
-

Modified: trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-no-issue.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-no-issue.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-no-issue.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-void foo();
-
-// RUN: %clang -Wall -fsyntax-only %s --serialize-diagnostics %t
-// RUN: c-index-test -read-diagnostics %t 2>&1 | FileCheck %s
-// RUN: rm -f  %t
-
-// NOTE: it is important that this test case contains no issues.  It tests
-// that serialize diagnostics work in the absence of any issues.
-
-// CHECK: Number of diagnostics: 0

Modified: trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-single-issue.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-single-issue.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags-single-issue.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-void foo() {
-  int voodoo;
-  voodoo = voodoo + 1;
-}
-
-// RUN: %clang -Wall -fsyntax-only %s --serialize-diagnostics %t
-// RUN: c-index-test -read-diagnostics %t 2>&1 | FileCheck %s
-// RUN: rm -f %t
-
-// NOTE: it is important that this test case only contain a single issue.  This test case checks
-// if we can handle serialized diagnostics that contain only one diagnostic.
-
-// CHECK: {{.*}}serialized-diags-single-issue.c:3:12: warning: variable 'voodoo' is uninitialized when used here [-Wuninitialized] [Semantic Issue]
-// CHECK: Range: {{.*}}serialized-diags-single-issue.c:3:12 {{.*}}serialized-diags-single-issue.c:3:18
-// CHECK: +-{{.*}}serialized-diags-single-issue.c:2:13: note: initialize the variable 'voodoo' to silence this warning []
-// CHECK: +-Range: {{.*}}serialized-diags-single-issue.c:2:13 {{.*}}serialized-diags-single-issue.c:2:13
-// CHECK: +-FIXIT: ({{.*}}serialized-diags-single-issue.c:2:13 - {{.*}}serialized-diags-single-issue.c:2:13): " = 0"
-
-// Test that we handle serializing diagnostics for multiple source files
-// RUN: %clang_cc1 -Wall -fsyntax-only %s %s -serialize-diagnostic-file %t
-// RUN: c-index-test -read-diagnostics %t 2>&1 | FileCheck -check-prefix=CHECK-MULT %s
-// RUN: rm -f %t
-
-// CHECK-MULT: {{.*}}serialized-diags-single-issue.c:3:12: warning: variable 'voodoo' is uninitialized when used here [-Wuninitialized]
-// CHECK-MULT: Range: {{.*}}serialized-diags-single-issue.c:3:12 {{.*}}serialized-diags-single-issue.c:3:18
-// CHECK-MULT: +-{{.*}}serialized-diags-single-issue.c:2:13: note: initialize the variable 'voodoo' to silence this warning []
-// CHECK-MULT: +-Range: {{.*}}serialized-diags-single-issue.c:2:13 {{.*}}serialized-diags-single-issue.c:2:13
-// CHECK-MULT: +-FIXIT: ({{.*}}serialized-diags-single-issue.c:2:13 - {{.*}}serialized-diags-single-issue.c:2:13): " = 0"
-
-// CHECK-MULT: {{.*}}serialized-diags-single-issue.c:3:12: warning: variable 'voodoo' is uninitialized when used here [-Wuninitialized]
-// CHECK-MULT: Range: {{.*}}serialized-diags-single-issue.c:3:12 {{.*}}serialized-diags-single-issue.c:3:18
-// CHECK-MULT: +-{{.*}}serialized-diags-single-issue.c:2:13: note: initialize the variable 'voodoo' to silence this warning []
-// CHECK-MULT: +-Range: {{.*}}serialized-diags-single-issue.c:2:13 {{.*}}serialized-diags-single-issue.c:2:13
-// CHECK-MULT: +-FIXIT: ({{.*}}serialized-diags-single-issue.c:2:13 - {{.*}}serialized-diags-single-issue.c:2:13): " = 0"
-
-// CHECK-MULT: Number of diagnostics: 2

Modified: trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-void foo() {
-  int voodoo;
-  voodoo = voodoo + 1;
-}
-
-void bar() {
-  int dragon;
-  dragon = dragon + 1
-}
-
-// Test handling of FixIts that only remove text.
-int baz();
-void qux(int x) {
-  if ((x == baz()))
-   return;
-}
-
-// Test handling of macros.
-void taz(int x, int y);
-#define false 0
-void testMacro() {
-  taz(0, 0, false);
-}
-
-// Test handling of issues from #includes.
-#include "serialized-diags.h"
-
-// Test handling of warnings that have empty fixits.
-void rdar11040133() {
-  unsigned x;
-}
-
-// RUN: rm -f %t
-// RUN: not %clang -Wall -fsyntax-only %s --serialize-diagnostics %t.diag > /dev/null 2>&1
-// RUN: c-index-test -read-diagnostics %t.diag > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-// This test case tests that we can handle multiple diagnostics which contain
-// FIXITs at different levels (one at the note, another at the main diagnostic).
-
-// CHECK: {{.*[/\\]}}serialized-diags.c:3:12: warning: variable 'voodoo' is uninitialized when used here [-Wuninitialized]
-// CHECK: Range: {{.*[/\\]}}serialized-diags.c:3:12 {{.*[/\\]}}serialized-diags.c:3:18
-// CHECK: +-{{.*[/\\]}}serialized-diags.c:2:13: note: initialize the variable 'voodoo' to silence this warning []
-// CHECK: +-FIXIT: ({{.*[/\\]}}serialized-diags.c:2:13 - {{.*[/\\]}}serialized-diags.c:2:13): " = 0"
-// CHECK: {{.*[/\\]}}serialized-diags.c:8:22: error: expected ';' after expression []
-// CHECK: FIXIT: ({{.*[/\\]}}serialized-diags.c:8:22 - {{.*[/\\]}}serialized-diags.c:8:22): ";"
-// CHECK: {{.*[/\\]}}serialized-diags.c:14:10: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
-// CHECK: Range: {{.*[/\\]}}serialized-diags.c:14:8 {{.*[/\\]}}serialized-diags.c:14:18
-// CHECK: +-{{.*[/\\]}}serialized-diags.c:14:10: note: remove extraneous parentheses around the comparison to silence this warning []
-// CHECK: +-FIXIT: ({{.*[/\\]}}serialized-diags.c:14:7 - {{.*[/\\]}}serialized-diags.c:14:8): ""
-// CHECK: +-FIXIT: ({{.*[/\\]}}serialized-diags.c:14:18 - {{.*[/\\]}}serialized-diags.c:14:19): ""
-// CHECK: +-{{.*[/\\]}}serialized-diags.c:14:10: note: use '=' to turn this equality comparison into an assignment []
-// CHECK: +-FIXIT: ({{.*[/\\]}}serialized-diags.c:14:10 - {{.*[/\\]}}serialized-diags.c:14:12): "="
-// CHECK: {{.*[/\\]}}serialized-diags.c:22:13: error: too many arguments to function call, expected 2, have 3 []
-// CHECK: Range: {{.*[/\\]}}serialized-diags.c:22:3 {{.*[/\\]}}serialized-diags.c:22:6
-// CHECK: Range: {{.*[/\\]}}serialized-diags.c:22:13 {{.*[/\\]}}serialized-diags.c:22:18
-// CHECK: +-{{.*[/\\]}}serialized-diags.c:20:15: note: expanded from macro 'false' []
-// CHECK: +-Range: {{.*[/\\]}}serialized-diags.c:22:3 {{.*[/\\]}}serialized-diags.c:22:6
-// CHECK: +-Range: {{.*[/\\]}}serialized-diags.c:20:15 {{.*[/\\]}}serialized-diags.c:20:16
-// CHECK: +-{{.*[/\\]}}serialized-diags.c:19:1: note: 'taz' declared here []
-// CHECK: {{.*[/\\]}}serialized-diags.h:5:7: warning: incompatible integer to pointer conversion initializing 'char *' with an expression of type 'int' [-Wint-conversion]
-// CHECK: Range: {{.*[/\\]}}serialized-diags.h:5:16 {{.*[/\\]}}serialized-diags.h:5:17
-// CHECK: +-{{.*[/\\]}}serialized-diags.c:26:10: note: in file included from {{.*[/\\]}}serialized-diags.c:26: []
-// CHECK: Number FIXITs = 0
-// CHECK: {{.*[/\\]}}serialized-diags.c:30:12: warning: unused variable 'x'
-// CHECK: Number FIXITs = 0
-// CHECK: Number of diagnostics: 6

Modified: trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// This file intentionally has a bug.  It is intended
-// to be used with serialized-diagnostics.c to show
-// how errors are handled with #includes in serialized
-// diagnostics.
-char *badStr = 1;

Modified: trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/serialized-diags.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
- at interface Foo
-- (void) test;
-- (void) test2;
- at end
-
- at implementation Foo
-- (void) test {
-  [_self test2];
-}
-- (void) test2 {}
- at end
-
-// RUN: rm -f %t
-// RUN: not %clang -Wall -fsyntax-only %s --serialize-diagnostics %t.diag > /dev/null 2>&1
-// RUN: c-index-test -read-diagnostics %t.diag > %t 2>&1
-// RUN: FileCheck --input-file=%t %s
-
-// This test checks that serialized diagnostics handle notes with no source location.
-
-// CHECK: {{.*[/\\]}}serialized-diags.m:8:4: error: use of undeclared identifier '_self'; did you mean 'self'? [] [Semantic Issue]
-// CHECK: Range: {{.*[/\\]}}serialized-diags.m:8:4 {{.*[/\\]}}serialized-diags.m:8:9
-// CHECK: Number FIXITs = 1
-// CHECK: FIXIT: ({{.*[/\\]}}serialized-diags.m:8:4 - {{.*[/\\]}}serialized-diags.m:8:9): "self"
-// CHECK: +-(null):0:0: note: 'self' is an implicit parameter [] []
-// CHECK: Number FIXITs = 0
-// CHECK: {{.*[/\\]}}serialized-diags.m:1:12: warning: class 'Foo' defined without specifying a base class [-Wobjc-root-class] [Semantic Issue]
-// CHECK: Number FIXITs = 0
-// CHECK: +-{{.*[/\\]}}serialized-diags.m:1:15: note: add a super class to fix this problem [] [Semantic Issue]
-// CHECK: Number FIXITs = 0
-// CHECK: Number of diagnostics: 2

Modified: trunk/contrib/llvm/tools/clang/test/Misc/show-diag-options.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/show-diag-options.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/show-diag-options.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=BASE
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-option %s 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=OPTION
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-option -Werror %s 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=OPTION_ERROR
-// RUN: %clang_cc1 -fsyntax-only -std=c89 -pedantic -fdiagnostics-show-option %s 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=OPTION_PEDANTIC
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-category id %s 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=CATEGORY_ID
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-category name %s 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=CATEGORY_NAME
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-show-option -fdiagnostics-show-category name -Werror %s 2>&1 \
-// RUN:   | FileCheck %s -check-prefix=OPTION_ERROR_CATEGORY
-
-void test(int x, int y) {
-  if (x = y) ++x;
-  // BASE: {{.*}}: warning: {{[a-z ]+$}}
-  // OPTION: {{.*}}: warning: {{[a-z ]+}} [-Wparentheses]
-  // OPTION_ERROR: {{.*}}: error: {{[a-z ]+}} [-Werror,-Wparentheses]
-  // CATEGORY_ID: {{.*}}: warning: {{[a-z ]+}} [2]
-  // CATEGORY_NAME: {{.*}}: warning: {{[a-z ]+}} [Semantic Issue]
-  // OPTION_ERROR_CATEGORY: {{.*}}: error: {{[a-z ]+}} [-Werror,-Wparentheses,Semantic Issue]
-
-  // Leverage the fact that all these '//'s get warned about in C89 pedantic.
-  // OPTION_PEDANTIC: {{.*}}: warning: {{[/a-z ]+}} [-Wcomment]
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/tabstop.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/tabstop.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/tabstop.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -ftabstop 3 -fsyntax-only %s 2>&1 | FileCheck -check-prefix=3 -strict-whitespace %s
-// RUN: %clang_cc1 -ftabstop 4 -fsyntax-only %s 2>&1 | FileCheck -check-prefix=4 -strict-whitespace %s
-// RUN: %clang_cc1 -ftabstop 5 -fsyntax-only %s 2>&1 | FileCheck -check-prefix=5 -strict-whitespace %s
-
-// tab
-	void* a = 1;
-
-// tab tab
-		void* b = 1;
-
-// 3x space tab
-   	void* c = 1;
-
-// tab at column 10
-void* d =	1;
-
-//CHECK-3: {{^   void\* a = 1;}}
-//CHECK-3: {{^      void\* b = 1;}}
-//CHECK-3: {{^      void\* c = 1;}}
-//CHECK-3: {{^void\* d =   1;}}
-
-//CHECK-4: {{^    void\* a = 1;}}
-//CHECK-4: {{^        void\* b = 1;}}
-//CHECK-4: {{^    void\* c = 1;}}
-//CHECK-4: {{^void\* d =   1;}}
-
-//CHECK-5: {{^     void\* a = 1;}}
-//CHECK-5: {{^          void\* b = 1;}}
-//CHECK-5: {{^     void\* c = 1;}}
-//CHECK-5: {{^void\* d = 1;}}
-
-// Test code modification hints
-
-void f(void)
-{
-	if (0	& 1	== 1)
-	{}
-
-	if (1 == 0	& 1)
-	{}
-}
-
-// CHECK-3: {{^   }}if (0 & 1   == 1)
-// CHECK-3: {{^   }}        (       )
-// CHECK-3: {{^   }}if (1 == 0  & 1)
-// CHECK-3: {{^   }}    (     )
-
-// CHECK-4: {{^    }}if (0   & 1 == 1)
-// CHECK-4: {{^    }}          (     )
-// CHECK-4: {{^    }}if (1 == 0  & 1)
-// CHECK-4: {{^    }}    (     )
-
-// CHECK-5: {{^     }}if (0     & 1  == 1)
-// CHECK-5: {{^     }}            (      )
-// CHECK-5: {{^     }}if (1 == 0     & 1)
-// CHECK-5: {{^     }}    (     )

Modified: trunk/contrib/llvm/tools/clang/test/Misc/unnecessary-elipses.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/unnecessary-elipses.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/unnecessary-elipses.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fmessage-length 80 %s 2>&1 | FileCheck -strict-whitespace %s
-
-int main() {
-    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
-// CHECK: {{^    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";}}
-
-        "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
-// CHECK: {{^  ..."xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";}}
-
-"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"        ;
-// CHECK: {{^"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"...}}
-
-        "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"        ;
-// CHECK: {{^  ..."xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"...}}
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Misc/unprintable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/unprintable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/unprintable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 %s -fmessage-length 40 2>&1 | FileCheck -strict-whitespace %s
-
-int main() {
-    int i;
-    if((i==/*\x{FFFE}*/1));
-
-// CHECK: {{^    if\(\(i==/\*<U\+FFFE>\*/1\)\);}}
-
-// CHECK: {{^        ~\^~~~~~~~~~~~~~~}}
-// CHECK: {{^       ~ \^              ~}}
-
-    (void)"\xCA\x{FFFE}\xF4";
-
-// CHECK: {{^    \(void\)"<CA><U\+FFFE><F4>";}}
-// CHECK: {{^           \^~~~}}
-
-  int n = 0;
-
-// CHECK: {{ int n = 0;}}
-// CHECK: {{^\^}}
-
-   "\x{FFFE}                                                               \z";
-
-// CHECK: {{^  \.\.\.\\z";}}
-// CHECK: {{^     \^~}}
-
-
-    /* \x{FFFE} */ "\x{FFFE}berhund";
-
-// CHECK: {{^    /\* <U\+FFFE> \*/ "<U\+FFFE>berhund";}}
-// CHECK: {{^                   \^~~~~~~~~~~~~~~~~}}
-
-
-// PR14292
-    "x\xB0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-// CHECK: {{^    "x<B0>}}
-// CHECK: {{^    \^}}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/verify.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/verify.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/verify.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct s; // expected-note 7 {{forward declaration of 'struct s'}}
-
-// standard string matching
-struct s s1; // expected-error {{tentative definition has type 'struct s' that is never completed}}
-struct s s2; // expected-error {{tentative definition has type}}
-
-// regex matching
-struct s r1; // expected-error-re {{tentative definition has type 'struct s' that is never completed}}
-struct s r2; // expected-error-re {{tentative definition has type '.*[[:space:]]*.*' that is never completed}}
-struct s r3; // expected-error-re {{tentative definition has type '(.*)[[:space:]]*(.*)' that is never completed}}
-struct s r4; // expected-error-re {{^tentative}}
-struct s r5; // expected-error-re {{completed$}}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/warn-in-system-header.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/warn-in-system-header.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/warn-in-system-header.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -isystem %S %s -fsyntax-only -verify 
-
-#include <warn-in-system-header.h>
-// expected-warning at warn-in-system-header.h:4 {{the cake is a lie}}

Modified: trunk/contrib/llvm/tools/clang/test/Misc/warn-in-system-header.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/warn-in-system-header.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/warn-in-system-header.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-
-
-
-#warning the cake is a lie

Modified: trunk/contrib/llvm/tools/clang/test/Misc/warning-flags-enabled.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/warning-flags-enabled.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/warning-flags-enabled.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: diagtool show-enabled %s | FileCheck %s
-//
-// This shows warnings which are on by default.
-// We just check a few to make sure it's doing something sensible.
-//
-// CHECK: ext_unterminated_string
-// CHECK: warn_condition_is_assignment
-// CHECK: warn_null_arg
-
-
-// RUN: diagtool show-enabled -Wno-everything %s | count 0
-
-
-// RUN: diagtool show-enabled -Wno-everything -Wobjc-root-class %s | FileCheck -check-prefix CHECK-WARN %s
-// RUN: diagtool show-enabled -Wno-everything -Werror=objc-root-class %s | FileCheck -check-prefix CHECK-ERROR %s
-// RUN: diagtool show-enabled -Wno-everything -Wfatal-errors=objc-root-class %s | FileCheck -check-prefix CHECK-FATAL %s
-//
-// CHECK-WARN:  W  warn_objc_root_class_missing [-Wobjc-root-class]
-// CHECK-ERROR: E  warn_objc_root_class_missing [-Wobjc-root-class]
-// CHECK-FATAL: F  warn_objc_root_class_missing [-Wobjc-root-class]
-
-// RUN: diagtool show-enabled --no-levels -Wno-everything -Wobjc-root-class %s | FileCheck -check-prefix CHECK-NO-LEVELS %s
-//
-// CHECK-NO-LEVELS-NOT: W
-// CHECK-NO-LEVELS-NOT: E
-// CHECK-NO-LEVELS-NOT: F
-// CHECK-NO-LEVELS: warn_objc_root_class_missing [-Wobjc-root-class]
-
-// Test if EnumConversion is a subgroup of -Wconversion.
-// RUN: diagtool show-enabled --no-levels -Wno-conversion -Wenum-conversion %s | FileCheck --check-prefix CHECK-ENUM-CONVERSION %s
-// RUN: diagtool show-enabled --no-levels %s | FileCheck --check-prefix CHECK-ENUM-CONVERSION %s
-// RUN: diagtool show-enabled --no-levels -Wno-conversion %s | FileCheck --check-prefix CHECK-NO-ENUM-CONVERSION %s
-//
-// CHECK-ENUM-CONVERSION: -Wenum-conversion
-// CHECK-NO-ENUM-CONVERSION-NOT: -Wenum-conversion
-
-// Test if -Wshift-op-parentheses is a subgroup of -Wparentheses
-// RUN: diagtool show-enabled --no-levels -Wno-parentheses -Wshift-op-parentheses %s | FileCheck --check-prefix CHECK-SHIFT-OP-PARENTHESES %s
-// RUN: diagtool show-enabled --no-levels %s | FileCheck --check-prefix CHECK-SHIFT-OP-PARENTHESES %s
-// RUN: diagtool show-enabled --no-levels -Wno-parentheses %s | FileCheck --check-prefix CHECK-NO-SHIFT-OP-PARENTHESES %s
-//
-// CHECK-SHIFT-OP-PARENTHESES: -Wshift-op-parentheses
-// CHECK-NO-SHIFT-OP-PARENTHESES-NOT: -Wshift-op-parentheses

Modified: trunk/contrib/llvm/tools/clang/test/Misc/warning-flags-tree.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/warning-flags-tree.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/warning-flags-tree.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: diagtool tree | FileCheck -strict-whitespace %s
-// RUN: diagtool tree -Weverything | FileCheck -strict-whitespace %s
-// RUN: diagtool tree everything | FileCheck -strict-whitespace %s
-//
-// These three ways of running diagtool tree are the same:
-// they produce a tree for every top-level diagnostic flag.
-// Just check a few to make sure we're actually showing more than one group.
-//
-// CHECK: -W
-// CHECK:   -Wextra
-// CHECK:     -Wmissing-field-initializers
-// CHECK:       warn_missing_field_initializers
-// CHECK: -Wall
-// CHECK:   -Wmost
-
-// These flags are currently unimplemented; test that we output them anyway.
-// CHECK: -Wstrict-aliasing
-// CHECK-NEXT: -Wstrict-aliasing=0
-// CHECK-NEXT: -Wstrict-aliasing=1
-// CHECK-NEXT: -Wstrict-aliasing=2
-// CHECK: -Wstrict-overflow
-// CHECK-NEXT: -Wstrict-overflow=0
-// CHECK-NEXT: -Wstrict-overflow=1
-// CHECK-NEXT: -Wstrict-overflow=2
-// CHECK-NEXT: -Wstrict-overflow=3
-// CHECK-NEXT: -Wstrict-overflow=4
-// CHECK-NEXT: -Wstrict-overflow=5
-
-
-// RUN: not diagtool tree -Wthis-is-not-a-valid-flag
-
-
-// RUN: diagtool tree -Wgnu | FileCheck -strict-whitespace -check-prefix CHECK-GNU %s
-// CHECK-GNU: -Wgnu
-// CHECK-GNU:   -Wgnu-designator
-// CHECK-GNU:     ext_gnu_array_range
-// CHECK-GNU:     ext_gnu_missing_equal_designator
-// CHECK-GNU:     ext_gnu_old_style_field_designator
-// CHECK-GNU:   -Wvla
-// CHECK-GNU:     ext_vla
-// CHECK-GNU:   ext_array_init_copy
-// CHECK-GNU:   ext_empty_struct_union
-// CHECK-GNU:   ext_expr_not_ice
-// There are more GNU extensions but we don't need to check them all.
-
-// RUN: diagtool tree --flags-only -Wgnu | FileCheck -check-prefix CHECK-FLAGS-ONLY %s
-// CHECK-FLAGS-ONLY: -Wgnu
-// CHECK-FLAGS-ONLY:   -Wgnu-designator
-// CHECK-FLAGS-ONLY-NOT:     ext_gnu_array_range
-// CHECK-FLAGS-ONLY-NOT:     ext_gnu_missing_equal_designator
-// CHECK-FLAGS-ONLY-NOT:     ext_gnu_old_style_field_designator
-// CHECK-FLAGS-ONLY:   -Wvla
-// CHECK-FLAGS-ONLY-NOT:     ext_vla
-// CHECK-FLAGS-ONLY-NOT:   ext_array_init_copy
-// CHECK-FLAGS-ONLY-NOT:   ext_empty_struct_union
-// CHECK-FLAGS-ONLY-NOT:   ext_expr_not_ice

Modified: trunk/contrib/llvm/tools/clang/test/Misc/warning-flags.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/warning-flags.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/warning-flags.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-RUN: diagtool list-warnings > %t 2>&1
-RUN: FileCheck --input-file=%t %s
-
-This test serves two purposes:
-
-(1) It documents all existing warnings that currently have no associated -W flag,
-    and ensures that the list never grows.
-    
-    If take an existing warning and add a flag, this test will fail.  To
-    fix this test, simply remove that warning from the list below.
-    
-(2) It prevents us adding new warnings to Clang that have no -W flag.  All
-    new warnings should have -W flags.
-    
-    If you add a new warning without a flag, this test will fail.  To fix
-    this test, simply add a warning group to that warning.
-    
-
-The list of warnings below should NEVER grow.  It should gradually shrink to 0.
-
-CHECK: Warnings without flags (143):
-CHECK-NEXT:   ext_delete_void_ptr_operand
-CHECK-NEXT:   ext_enum_friend
-CHECK-NEXT:   ext_expected_semi_decl_list
-CHECK-NEXT:   ext_explicit_specialization_storage_class
-CHECK-NEXT:   ext_implicit_lib_function_decl
-CHECK-NEXT:   ext_missing_declspec
-CHECK-NEXT:   ext_missing_whitespace_after_macro_name
-CHECK-NEXT:   ext_new_paren_array_nonconst
-CHECK-NEXT:   ext_plain_complex
-CHECK-NEXT:   ext_pp_macro_redef
-CHECK-NEXT:   ext_template_arg_extra_parens
-CHECK-NEXT:   ext_typecheck_comparison_of_pointer_integer
-CHECK-NEXT:   ext_typecheck_cond_incompatible_operands
-CHECK-NEXT:   ext_typecheck_cond_incompatible_operands_nonstandard
-CHECK-NEXT:   ext_typecheck_ordered_comparison_of_function_pointers
-CHECK-NEXT:   ext_typecheck_ordered_comparison_of_pointer_integer
-CHECK-NEXT:   ext_unknown_escape
-CHECK-NEXT:   ext_using_undefined_std
-CHECK-NEXT:   pp_include_next_absolute_path
-CHECK-NEXT:   pp_include_next_in_primary
-CHECK-NEXT:   pp_invalid_string_literal
-CHECK-NEXT:   pp_out_of_date_dependency
-CHECK-NEXT:   pp_poisoning_existing_macro
-CHECK-NEXT:   pp_pragma_once_in_main_file
-CHECK-NEXT:   pp_pragma_sysheader_in_main_file
-CHECK-NEXT:   w_asm_qualifier_ignored
-CHECK-NEXT:   warn_accessor_property_type_mismatch
-CHECK-NEXT:   warn_anon_bitfield_width_exceeds_type_size
-CHECK-NEXT:   warn_asm_label_on_auto_decl
-CHECK-NEXT:   warn_bitfield_width_exceeds_type_size
-CHECK-NEXT:   warn_bool_switch_condition
-CHECK-NEXT:   warn_braces_around_scalar_init
-CHECK-NEXT:   warn_c_kext
-CHECK-NEXT:   warn_call_to_pure_virtual_member_function_from_ctor_dtor
-CHECK-NEXT:   warn_call_wrong_number_of_arguments
-CHECK-NEXT:   warn_case_empty_range
-CHECK-NEXT:   warn_char_constant_too_large
-CHECK-NEXT:   warn_collection_expr_type
-CHECK-NEXT:   warn_conflicting_variadic
-CHECK-NEXT:   warn_conv_to_base_not_used
-CHECK-NEXT:   warn_conv_to_self_not_used
-CHECK-NEXT:   warn_conv_to_void_not_used
-CHECK-NEXT:   warn_delete_array_type
-CHECK-NEXT:   warn_double_const_requires_fp64
-CHECK-NEXT:   warn_drv_assuming_mfloat_abi_is
-CHECK-NEXT:   warn_drv_clang_unsupported
-CHECK-NEXT:   warn_drv_objc_gc_unsupported
-CHECK-NEXT:   warn_drv_pch_not_first_include
-CHECK-NEXT:   warn_dup_category_def
-CHECK-NEXT:   warn_duplicate_protocol_def
-CHECK-NEXT:   warn_enum_too_large
-CHECK-NEXT:   warn_enum_value_overflow
-CHECK-NEXT:   warn_enumerator_too_large
-CHECK-NEXT:   warn_exception_caught_by_earlier_handler
-CHECK-NEXT:   warn_excess_initializers
-CHECK-NEXT:   warn_excess_initializers_in_char_array_initializer
-CHECK-NEXT:   warn_expected_qualified_after_typename
-CHECK-NEXT:   warn_extraneous_char_constant
-CHECK-NEXT:   warn_fe_cc_log_diagnostics_failure
-CHECK-NEXT:   warn_fe_cc_print_header_failure
-CHECK-NEXT:   warn_fe_macro_contains_embedded_newline
-CHECK-NEXT:   warn_file_asm_volatile
-CHECK-NEXT:   warn_hex_escape_too_large
-CHECK-NEXT:   warn_ignoring_ftabstop_value
-CHECK-NEXT:   warn_implements_nscopying
-CHECK-NEXT:   warn_incompatible_qualified_id
-CHECK-NEXT:   warn_initializer_string_for_char_array_too_long
-CHECK-NEXT:   warn_inline_namespace_reopened_noninline
-CHECK-NEXT:   warn_integer_too_large
-CHECK-NEXT:   warn_integer_too_large_for_signed
-CHECK-NEXT:   warn_invalid_asm_cast_lvalue
-CHECK-NEXT:   warn_many_braces_around_scalar_init
-CHECK-NEXT:   warn_maynot_respond
-CHECK-NEXT:   warn_method_param_redefinition
-CHECK-NEXT:   warn_mismatched_exception_spec
-CHECK-NEXT:   warn_missing_case_for_condition
-CHECK-NEXT:   warn_missing_dependent_template_keyword
-CHECK-NEXT:   warn_missing_exception_specification
-CHECK-NEXT:   warn_missing_whitespace_after_macro_name
-CHECK-NEXT:   warn_multiple_method_decl
-CHECK-NEXT:   warn_no_constructor_for_refconst
-CHECK-NEXT:   warn_nonnull_pointers_only
-CHECK-NEXT:   warn_not_compound_assign
-CHECK-NEXT:   warn_objc_property_copy_missing_on_block
-CHECK-NEXT:   warn_objc_protocol_qualifier_missing_id
-CHECK-NEXT:   warn_octal_escape_too_large
-CHECK-NEXT:   warn_on_superclass_use
-CHECK-NEXT:   warn_param_default_argument_redefinition
-CHECK-NEXT:   warn_partial_specs_not_deducible
-CHECK-NEXT:   warn_pp_convert_lhs_to_positive
-CHECK-NEXT:   warn_pp_convert_rhs_to_positive
-CHECK-NEXT:   warn_pp_expr_overflow
-CHECK-NEXT:   warn_pp_line_decimal
-CHECK-NEXT:   warn_pragma_align_expected_equal
-CHECK-NEXT:   warn_pragma_align_invalid_option
-CHECK-NEXT:   warn_pragma_debug_unexpected_command
-CHECK-NEXT:   warn_pragma_expected_colon
-CHECK-NEXT:   warn_pragma_expected_enable_disable
-CHECK-NEXT:   warn_pragma_expected_identifier
-CHECK-NEXT:   warn_pragma_expected_lparen
-CHECK-NEXT:   warn_pragma_expected_rparen
-CHECK-NEXT:   warn_pragma_extra_tokens_at_eol
-CHECK-NEXT:   warn_pragma_ms_struct
-CHECK-NEXT:   warn_pragma_options_align_reset_failed
-CHECK-NEXT:   warn_pragma_options_expected_align
-CHECK-NEXT:   warn_pragma_pack_invalid_action
-CHECK-NEXT:   warn_pragma_pack_invalid_alignment
-CHECK-NEXT:   warn_pragma_pack_malformed
-CHECK-NEXT:   warn_pragma_pack_pop_failed
-CHECK-NEXT:   warn_pragma_pack_pop_identifer_and_alignment
-CHECK-NEXT:   warn_pragma_pack_show
-CHECK-NEXT:   warn_pragma_pop_macro_no_push
-CHECK-NEXT:   warn_pragma_unknown_extension
-CHECK-NEXT:   warn_pragma_unused_expected_punc
-CHECK-NEXT:   warn_pragma_unused_expected_var
-CHECK-NEXT:   warn_pragma_unused_expected_var_arg
-CHECK-NEXT:   warn_pragma_unused_undeclared_var
-CHECK-NEXT:   warn_previous_alias_decl
-CHECK-NEXT:   warn_property_attr_mismatch
-CHECK-NEXT:   warn_property_attribute
-CHECK-NEXT:   warn_property_getter_owning_mismatch
-CHECK-NEXT:   warn_property_types_are_incompatible
-CHECK-NEXT:   warn_readonly_property
-CHECK-NEXT:   warn_redeclaration_without_attribute_prev_attribute_ignored
-CHECK-NEXT:   warn_register_objc_catch_parm
-CHECK-NEXT:   warn_related_result_type_compatibility_class
-CHECK-NEXT:   warn_related_result_type_compatibility_protocol
-CHECK-NEXT:   warn_second_parameter_of_va_start_not_last_named_argument
-CHECK-NEXT:   warn_second_parameter_to_va_arg_never_compatible
-CHECK-NEXT:   warn_static_inline_explicit_inst_ignored
-CHECK-NEXT:   warn_static_non_static
-CHECK-NEXT:   warn_template_export_unsupported
-CHECK-NEXT:   warn_template_spec_extra_headers
-CHECK-NEXT:   warn_tentative_incomplete_array
-CHECK-NEXT:   warn_typecheck_function_qualifiers
-CHECK-NEXT:   warn_unavailable_fwdclass_message
-CHECK-NEXT:   warn_undef_interface
-CHECK-NEXT:   warn_undef_interface_suggest
-CHECK-NEXT:   warn_undef_protocolref
-CHECK-NEXT:   warn_unknown_method_family
-CHECK-NEXT:   warn_use_out_of_scope_declaration
-CHECK-NEXT:   warn_weak_identifier_undeclared
-CHECK-NEXT:   warn_weak_import
-
-The list of warnings in -Wpedantic should NEVER grow.
-
-CHECK: Number in -Wpedantic (not covered by other -W flags): 29

Modified: trunk/contrib/llvm/tools/clang/test/Misc/working-directory.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Misc/working-directory.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Misc/working-directory.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -working-directory %S working-directory.c -IInputs -fsyntax-only
-
-#include "working-directory.h"
-
-Foo bar;

Modified: trunk/contrib/llvm/tools/clang/test/Misc/wrong-encoding.c
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Misc/wrong-encoding2.c
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/AlsoDependsOnModule.framework/Headers/AlsoDependsOnModule.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/AlsoDependsOnModule.framework/Headers/AlsoDependsOnModule.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/AlsoDependsOnModule.framework/Headers/AlsoDependsOnModule.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#import <Module/Module.h> // expected-warning{{treating #import as an import of module 'Module'}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/CmdLine.framework/Headers/CmdLine.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/CmdLine.framework/Headers/CmdLine.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/CmdLine.framework/Headers/CmdLine.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#ifdef FOO_RETURNS_INT_PTR
-int *foo(void);
-#else
-float *foo(void);
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/conflict_a.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/conflict_a.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/conflict_a.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int conflict_a;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/conflict_b.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/conflict_b.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/conflict_b.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int conflict_b;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Conflicts/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-module Conflicts {
-  explicit module A {
-    header "conflict_a.h"
-    conflict B, "we just don't like B"
-  }
-
-  module B {
-    header "conflict_b.h"
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Frameworks/SubFramework.framework/Headers/Other.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Frameworks/SubFramework.framework/Headers/Other.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Frameworks/SubFramework.framework/Headers/Other.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-double *sub_framework_other;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#include "SubFramework/Other.h"
-float *sub_framework;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/DependsOnModule.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/DependsOnModule.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/DependsOnModule.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#include <Module/Module.h> //expected-warning{{treating #include as an import of module 'Module'}}
-
-#define DEPENDS_ON_MODULE 1
-#__private_macro DEPENDS_ON_MODULE
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/cxx_other.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/cxx_other.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/cxx_other.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-class CXXOnly {
- public:
-  CXXOnly();
-  ~CXXOnly();
-};

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/other.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/other.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/Headers/other.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int depends_on_module_other;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/PrivateHeaders/DependsOnModulePrivate.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/PrivateHeaders/DependsOnModulePrivate.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/PrivateHeaders/DependsOnModulePrivate.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int depends_on_module_private;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-framework module DependsOnModule {
-  umbrella header "DependsOnModule.h"
-  header "other.h"
-  module * {
-    export *
-  }
-  explicit module CXX {
-    requires cplusplus
-    header "cxx_other.h"
-  }
-
-  explicit framework module SubFramework {
-    umbrella header "SubFramework.h"
-
-    module * {
-      export *
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/module_private.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/module_private.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/DependsOnModule.framework/module_private.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-explicit module DependsOnModule.Private {
-  explicit module DependsOnModule {
-    header "DependsOnModulePrivate.h"
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/Headers/Sub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/Headers/Sub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/Headers/Sub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#include <Sub/Types.h>

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/Headers/Types.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/Headers/Types.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/Headers/Types.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-struct FrameworkSubStruct {
-  const char * name;
-  unsigned version;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/PrivateHeaders/SubPriv.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/PrivateHeaders/SubPriv.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Frameworks/Sub.framework/PrivateHeaders/SubPriv.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#include <Sub/Types.h>
-// This comment ensures that this file is not identical to
-// HasSubModules.framework/Frameworks/Sub.framework/Headers/Sub.h

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Headers/HasSubModules.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Headers/HasSubModules.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/Headers/HasSubModules.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#import <Sub/Sub.h>

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/PrivateHeaders/HasSubModulesPriv.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/PrivateHeaders/HasSubModulesPriv.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/HasSubModules.framework/PrivateHeaders/HasSubModulesPriv.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#import <Sub/SubPriv.h>
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolA.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolA.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolA.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-
-
-
-
- at interface A
-+ (int)method1;
-- (int)method2:(int)param;
- at end
-
- at interface B : A
- at end
-
- at interface C
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolASub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolASub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolASub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
- at interface A (Sub)
-- (char)method3;
-- (char*)method4;
-- (void)method5:(C*)obj;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolASub2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolASub2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolASub2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
- at interface A (Sub2)
-- (char*)method4;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolB.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolB.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolB.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
- at interface B
-- (int)method1;
-- (int)method2:(float)param;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolBSub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolBSub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MethodPoolBSub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
- at interface B (Sub)
-- (char *)method3;
-- (char*)method4;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/A.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/A.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/A.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int getA();

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/B.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/B.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/B.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
- at import ModA;
-
-int getB();

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Modified/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-module ModA { header "A.h" }
-module ModB { 
-  header "B.h" 
-  export *
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#ifndef MODULE_SUBFRAMEWORK_H
-#define MODULE_SUBFRAMEWORK_H
-#__private_macro MODULE_SUBFRAMEWORK_H
-char *module_subframework;
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Buried/Treasure.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Buried/Treasure.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Buried/Treasure.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-unsigned *Buried_Treasure;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Module.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Module.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Module.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// expected-warning 0-1 {{umbrella header}}
-
-// FIXME: The "umbrella header" warning should be moved to a separate test.
-// This "0-1" is only here because the warning is only emitted when the
-// module is (otherwise) successfully included.
-
-#ifndef MODULE_H
-#define MODULE_H
-const char *getModuleVersion(void);
-
-#ifdef FOO
-#  error Module should have been built without -DFOO
-#endif
-
- at interface Module
-+(const char *)version; // retrieve module version
-+alloc;
- at end
-
-#define MODULE_H_MACRO 1
-#__private_macro MODULE_H_MACRO
-
-#include <Module/Sub.h>
-#include <Module/Buried/Treasure.h>
-
-__asm("foo");
-
-#endif // MODULE_H

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/NotInModule.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/NotInModule.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/NotInModule.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int not_in_module;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Sub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Sub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Sub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#include <Module/Sub2.h>
-int *Module_Sub;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Sub2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Sub2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/Headers/Sub2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int *Module_Sub2;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/Module.framework/PrivateHeaders/ModulePrivate.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int module_private;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/has_errors.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/has_errors.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/has_errors.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-static void foo(void) { }
-static void foo(void) { }

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/has_warnings.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/has_warnings.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/has_warnings.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-
-int int_val;
-float *float_ptr = &int_val;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ModuleDiags/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-module HasWarnings {
-  header "has_warnings.h"
-}
-
-module HasErrors {
-  header "has_errors.h"
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MutuallyRecursive1.framework/Headers/MutuallyRecursive1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MutuallyRecursive1.framework/Headers/MutuallyRecursive1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MutuallyRecursive1.framework/Headers/MutuallyRecursive1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-
- at import MutuallyRecursive2;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MutuallyRecursive2.framework/Headers/MutuallyRecursive2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MutuallyRecursive2.framework/Headers/MutuallyRecursive2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/MutuallyRecursive2.framework/Headers/MutuallyRecursive2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-
-
- at import MutuallyRecursive1;
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/A.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/A.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/A.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-int no_umbrella_A;
-
-inline int has_warning(int x) {
-  if (x > 0)
-    return x;
-  // Note: warning here is suppressed because this module is considered a
-  // "system" module.
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/B.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/B.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/B.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int no_umbrella_B;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/Boom.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/Boom.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/Boom.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-this is gibberish

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/SubDir/C.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/SubDir/C.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/Headers/SubDir/C.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int no_umbrella_C;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/PrivateHeaders/A_Private.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/PrivateHeaders/A_Private.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/PrivateHeaders/A_Private.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int no_umbrella_A_private;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/PrivateHeaders/B_Private.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/PrivateHeaders/B_Private.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/PrivateHeaders/B_Private.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int no_umbrella_B_private;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-framework module NoUmbrella [system] {
-  umbrella "Headers"
-  module * { }
-
-  exclude header "Boom.h"
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/module_private.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/module_private.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NoUmbrella.framework/module_private.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-explicit module NoUmbrella.Private {
-  umbrella "PrivateHeaders"
-  explicit module * { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NotAModule.framework/Headers/NotAModule.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NotAModule.framework/Headers/NotAModule.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/NotAModule.framework/Headers/NotAModule.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-extern int not_a_module;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-module StdDef {
-  module SizeT {
-    header "size_t.h"
-    export *
-  }
-
-  module Other {
-    header "other.h"
-    export *
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/other.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/other.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/other.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#include <stddef.h>
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/size_t.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/size_t.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/StdDef/size_t.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-#ifndef _SIZE_T
-#define _SIZE_T
-typedef __SIZE_TYPE__ size_t;
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/dbl_max.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/dbl_max.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/dbl_max.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#define DBL_MAX __DBL_MAX__

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-module cstd [system] {
-  // Only in compiler support directory
-  module float_constants {
-    header "float.h"
-  }
-
-  // Only in system headers directory
-  module stdio {
-    header "stdio.h"
-  }
-
-  // In both directories (compiler support version wins, does not forward)
-  module stdbool {
-    header "stdbool.h"
-  }
-
-  // In both directories (compiler support version wins, forwards)
-  module stdint {
-    header "stdint.h"
-  }
-}
-
-module other_constants {
-  explicit module dbl_max {
-    header "dbl_max.h"
-  }
-}
-
-module uses_other_constants {
-  header "uses_other_constants.h"
-  export *
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdbool.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdbool.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdbool.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-// Testing hack: does not define bool/true/false.

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdint.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdint.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdint.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-typedef int my_awesome_nonstandard_integer_type;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdio.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdio.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/stdio.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-typedef struct { int id; } FILE;
-int fprintf(FILE*restrict, const char* restrict format, ...);
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/uses_other_constants.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/uses_other_constants.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/System/usr/include/uses_other_constants.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
- at import other_constants;
-#include <float.h>
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink-sub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink-sub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink-sub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int autolink_sub(void);

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink-sub2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink-sub2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink-sub2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int autolink_sub2(void);

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/autolink.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-extern int autolink;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/builtin.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/builtin.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/builtin.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-int i;
-int *p = &i;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/builtin_sub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/builtin_sub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/builtin_sub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-int getBos1(void) {
-  return __builtin_object_size(p, 0);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_bottom.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_bottom.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_bottom.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
- at import category_left;
-
- at interface Foo(Bottom)
--(void)bottom;
- at end
-
- at import category_right;
-
- at interface LeftFoo(Bottom)
--(void)bottom;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
- at import category_top;
-
- at interface Foo(Left)
--(void)left;
- at end
-
- at interface LeftFoo
--(void)left;
- at end
-
- at interface Foo(Duplicate)
- at end
-
- at interface Foo(Duplicate)
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_left_sub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_left_sub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_left_sub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
- at interface Foo(LeftSub) <P1>
-- (void)left_sub;
- at end
-
- at protocol P3 
-- (void)p3_method;
- at property (retain) id p3_prop;
- at end
-
- at interface Foo(LeftP3) <P3>
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_other.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_other.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_other.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
- at import category_top;
-
- at interface Foo(Other)
--(void)other;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
- at import category_top;
-
- at interface Foo(Right1)
--(void)right1;
- at end
-
- at interface Foo(Right2)
--(void)right2;
- at end
-
- at interface Foo(Duplicate)
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_right_sub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_right_sub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_right_sub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
- at interface Foo(RightSub) <P2>
- at property id right_sub_prop;
- at end
-
- at interface Foo() {
- at public
-  int right_sub_ivar;
-}
- at end
-
- at protocol P4
-- (void)p4_method;
- at property (retain) id p4_prop;
- at end
-
- at interface Foo(LeftP4) <P4>
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_top.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_top.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/category_top.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
- at interface Foo
- at end
-
- at interface Foo(Top)
--(void)top;
- at end
-
- at interface Foo(Top2)
--(void)top2;
- at end
-
- at interface Foo(Top3)
--(void)top3;
- at end
-
- at protocol P1
- at end
-
- at protocol P2
- at end
-
- at protocol P3, P4;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/config.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/config.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/config.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-#ifdef WANT_FOO
-int* foo();
-#endif
-
-#ifdef WANT_BAR
-char *bar();
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-inline-namespace.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-inline-namespace.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-inline-namespace.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-namespace std {
-  inline namespace __1 {
-    namespace __is_function_imp {}
-  }
-}
-
-namespace std {
-  inline namespace __1 {
-    typedef int size_t;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-linkage-cache.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-linkage-cache.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-linkage-cache.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Reduced from a crash encountered with a modularized libc++, where
-// we would try to compute the linkage of a declaration before we
-// finish loading the relevant pieces of it.
-inline namespace D {
-  template<class>
-  struct U {
-    friend bool f(const U &);
-  };
-
-  template class U<int>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-many-overloads.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-many-overloads.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/cxx-many-overloads.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2004 +0,0 @@
-namespace N {
-  template<int> struct X {};
-  void f(X<0>);
-  void f(X<1>);
-  void f(X<2>);
-  void f(X<3>);
-  void f(X<4>);
-  void f(X<5>);
-  void f(X<6>);
-  void f(X<7>);
-  void f(X<8>);
-  void f(X<9>);
-  void f(X<10>);
-  void f(X<11>);
-  void f(X<12>);
-  void f(X<13>);
-  void f(X<14>);
-  void f(X<15>);
-  void f(X<16>);
-  void f(X<17>);
-  void f(X<18>);
-  void f(X<19>);
-  void f(X<20>);
-  void f(X<21>);
-  void f(X<22>);
-  void f(X<23>);
-  void f(X<24>);
-  void f(X<25>);
-  void f(X<26>);
-  void f(X<27>);
-  void f(X<28>);
-  void f(X<29>);
-  void f(X<30>);
-  void f(X<31>);
-  void f(X<32>);
-  void f(X<33>);
-  void f(X<34>);
-  void f(X<35>);
-  void f(X<36>);
-  void f(X<37>);
-  void f(X<38>);
-  void f(X<39>);
-  void f(X<40>);
-  void f(X<41>);
-  void f(X<42>);
-  void f(X<43>);
-  void f(X<44>);
-  void f(X<45>);
-  void f(X<46>);
-  void f(X<47>);
-  void f(X<48>);
-  void f(X<49>);
-  void f(X<50>);
-  void f(X<51>);
-  void f(X<52>);
-  void f(X<53>);
-  void f(X<54>);
-  void f(X<55>);
-  void f(X<56>);
-  void f(X<57>);
-  void f(X<58>);
-  void f(X<59>);
-  void f(X<60>);
-  void f(X<61>);
-  void f(X<62>);
-  void f(X<63>);
-  void f(X<64>);
-  void f(X<65>);
-  void f(X<66>);
-  void f(X<67>);
-  void f(X<68>);
-  void f(X<69>);
-  void f(X<70>);
-  void f(X<71>);
-  void f(X<72>);
-  void f(X<73>);
-  void f(X<74>);
-  void f(X<75>);
-  void f(X<76>);
-  void f(X<77>);
-  void f(X<78>);
-  void f(X<79>);
-  void f(X<80>);
-  void f(X<81>);
-  void f(X<82>);
-  void f(X<83>);
-  void f(X<84>);
-  void f(X<85>);
-  void f(X<86>);
-  void f(X<87>);
-  void f(X<88>);
-  void f(X<89>);
-  void f(X<90>);
-  void f(X<91>);
-  void f(X<92>);
-  void f(X<93>);
-  void f(X<94>);
-  void f(X<95>);
-  void f(X<96>);
-  void f(X<97>);
-  void f(X<98>);
-  void f(X<99>);
-  void f(X<100>);
-  void f(X<101>);
-  void f(X<102>);
-  void f(X<103>);
-  void f(X<104>);
-  void f(X<105>);
-  void f(X<106>);
-  void f(X<107>);
-  void f(X<108>);
-  void f(X<109>);
-  void f(X<110>);
-  void f(X<111>);
-  void f(X<112>);
-  void f(X<113>);
-  void f(X<114>);
-  void f(X<115>);
-  void f(X<116>);
-  void f(X<117>);
-  void f(X<118>);
-  void f(X<119>);
-  void f(X<120>);
-  void f(X<121>);
-  void f(X<122>);
-  void f(X<123>);
-  void f(X<124>);
-  void f(X<125>);
-  void f(X<126>);
-  void f(X<127>);
-  void f(X<128>);
-  void f(X<129>);
-  void f(X<130>);
-  void f(X<131>);
-  void f(X<132>);
-  void f(X<133>);
-  void f(X<134>);
-  void f(X<135>);
-  void f(X<136>);
-  void f(X<137>);
-  void f(X<138>);
-  void f(X<139>);
-  void f(X<140>);
-  void f(X<141>);
-  void f(X<142>);
-  void f(X<143>);
-  void f(X<144>);
-  void f(X<145>);
-  void f(X<146>);
-  void f(X<147>);
-  void f(X<148>);
-  void f(X<149>);
-  void f(X<150>);
-  void f(X<151>);
-  void f(X<152>);
-  void f(X<153>);
-  void f(X<154>);
-  void f(X<155>);
-  void f(X<156>);
-  void f(X<157>);
-  void f(X<158>);
-  void f(X<159>);
-  void f(X<160>);
-  void f(X<161>);
-  void f(X<162>);
-  void f(X<163>);
-  void f(X<164>);
-  void f(X<165>);
-  void f(X<166>);
-  void f(X<167>);
-  void f(X<168>);
-  void f(X<169>);
-  void f(X<170>);
-  void f(X<171>);
-  void f(X<172>);
-  void f(X<173>);
-  void f(X<174>);
-  void f(X<175>);
-  void f(X<176>);
-  void f(X<177>);
-  void f(X<178>);
-  void f(X<179>);
-  void f(X<180>);
-  void f(X<181>);
-  void f(X<182>);
-  void f(X<183>);
-  void f(X<184>);
-  void f(X<185>);
-  void f(X<186>);
-  void f(X<187>);
-  void f(X<188>);
-  void f(X<189>);
-  void f(X<190>);
-  void f(X<191>);
-  void f(X<192>);
-  void f(X<193>);
-  void f(X<194>);
-  void f(X<195>);
-  void f(X<196>);
-  void f(X<197>);
-  void f(X<198>);
-  void f(X<199>);
-  void f(X<200>);
-  void f(X<201>);
-  void f(X<202>);
-  void f(X<203>);
-  void f(X<204>);
-  void f(X<205>);
-  void f(X<206>);
-  void f(X<207>);
-  void f(X<208>);
-  void f(X<209>);
-  void f(X<210>);
-  void f(X<211>);
-  void f(X<212>);
-  void f(X<213>);
-  void f(X<214>);
-  void f(X<215>);
-  void f(X<216>);
-  void f(X<217>);
-  void f(X<218>);
-  void f(X<219>);
-  void f(X<220>);
-  void f(X<221>);
-  void f(X<222>);
-  void f(X<223>);
-  void f(X<224>);
-  void f(X<225>);
-  void f(X<226>);
-  void f(X<227>);
-  void f(X<228>);
-  void f(X<229>);
-  void f(X<230>);
-  void f(X<231>);
-  void f(X<232>);
-  void f(X<233>);
-  void f(X<234>);
-  void f(X<235>);
-  void f(X<236>);
-  void f(X<237>);
-  void f(X<238>);
-  void f(X<239>);
-  void f(X<240>);
-  void f(X<241>);
-  void f(X<242>);
-  void f(X<243>);
-  void f(X<244>);
-  void f(X<245>);
-  void f(X<246>);
-  void f(X<247>);
-  void f(X<248>);
-  void f(X<249>);
-  void f(X<250>);
-  void f(X<251>);
-  void f(X<252>);
-  void f(X<253>);
-  void f(X<254>);
-  void f(X<255>);
-  void f(X<256>);
-  void f(X<257>);
-  void f(X<258>);
-  void f(X<259>);
-  void f(X<260>);
-  void f(X<261>);
-  void f(X<262>);
-  void f(X<263>);
-  void f(X<264>);
-  void f(X<265>);
-  void f(X<266>);
-  void f(X<267>);
-  void f(X<268>);
-  void f(X<269>);
-  void f(X<270>);
-  void f(X<271>);
-  void f(X<272>);
-  void f(X<273>);
-  void f(X<274>);
-  void f(X<275>);
-  void f(X<276>);
-  void f(X<277>);
-  void f(X<278>);
-  void f(X<279>);
-  void f(X<280>);
-  void f(X<281>);
-  void f(X<282>);
-  void f(X<283>);
-  void f(X<284>);
-  void f(X<285>);
-  void f(X<286>);
-  void f(X<287>);
-  void f(X<288>);
-  void f(X<289>);
-  void f(X<290>);
-  void f(X<291>);
-  void f(X<292>);
-  void f(X<293>);
-  void f(X<294>);
-  void f(X<295>);
-  void f(X<296>);
-  void f(X<297>);
-  void f(X<298>);
-  void f(X<299>);
-  void f(X<300>);
-  void f(X<301>);
-  void f(X<302>);
-  void f(X<303>);
-  void f(X<304>);
-  void f(X<305>);
-  void f(X<306>);
-  void f(X<307>);
-  void f(X<308>);
-  void f(X<309>);
-  void f(X<310>);
-  void f(X<311>);
-  void f(X<312>);
-  void f(X<313>);
-  void f(X<314>);
-  void f(X<315>);
-  void f(X<316>);
-  void f(X<317>);
-  void f(X<318>);
-  void f(X<319>);
-  void f(X<320>);
-  void f(X<321>);
-  void f(X<322>);
-  void f(X<323>);
-  void f(X<324>);
-  void f(X<325>);
-  void f(X<326>);
-  void f(X<327>);
-  void f(X<328>);
-  void f(X<329>);
-  void f(X<330>);
-  void f(X<331>);
-  void f(X<332>);
-  void f(X<333>);
-  void f(X<334>);
-  void f(X<335>);
-  void f(X<336>);
-  void f(X<337>);
-  void f(X<338>);
-  void f(X<339>);
-  void f(X<340>);
-  void f(X<341>);
-  void f(X<342>);
-  void f(X<343>);
-  void f(X<344>);
-  void f(X<345>);
-  void f(X<346>);
-  void f(X<347>);
-  void f(X<348>);
-  void f(X<349>);
-  void f(X<350>);
-  void f(X<351>);
-  void f(X<352>);
-  void f(X<353>);
-  void f(X<354>);
-  void f(X<355>);
-  void f(X<356>);
-  void f(X<357>);
-  void f(X<358>);
-  void f(X<359>);
-  void f(X<360>);
-  void f(X<361>);
-  void f(X<362>);
-  void f(X<363>);
-  void f(X<364>);
-  void f(X<365>);
-  void f(X<366>);
-  void f(X<367>);
-  void f(X<368>);
-  void f(X<369>);
-  void f(X<370>);
-  void f(X<371>);
-  void f(X<372>);
-  void f(X<373>);
-  void f(X<374>);
-  void f(X<375>);
-  void f(X<376>);
-  void f(X<377>);
-  void f(X<378>);
-  void f(X<379>);
-  void f(X<380>);
-  void f(X<381>);
-  void f(X<382>);
-  void f(X<383>);
-  void f(X<384>);
-  void f(X<385>);
-  void f(X<386>);
-  void f(X<387>);
-  void f(X<388>);
-  void f(X<389>);
-  void f(X<390>);
-  void f(X<391>);
-  void f(X<392>);
-  void f(X<393>);
-  void f(X<394>);
-  void f(X<395>);
-  void f(X<396>);
-  void f(X<397>);
-  void f(X<398>);
-  void f(X<399>);
-  void f(X<400>);
-  void f(X<401>);
-  void f(X<402>);
-  void f(X<403>);
-  void f(X<404>);
-  void f(X<405>);
-  void f(X<406>);
-  void f(X<407>);
-  void f(X<408>);
-  void f(X<409>);
-  void f(X<410>);
-  void f(X<411>);
-  void f(X<412>);
-  void f(X<413>);
-  void f(X<414>);
-  void f(X<415>);
-  void f(X<416>);
-  void f(X<417>);
-  void f(X<418>);
-  void f(X<419>);
-  void f(X<420>);
-  void f(X<421>);
-  void f(X<422>);
-  void f(X<423>);
-  void f(X<424>);
-  void f(X<425>);
-  void f(X<426>);
-  void f(X<427>);
-  void f(X<428>);
-  void f(X<429>);
-  void f(X<430>);
-  void f(X<431>);
-  void f(X<432>);
-  void f(X<433>);
-  void f(X<434>);
-  void f(X<435>);
-  void f(X<436>);
-  void f(X<437>);
-  void f(X<438>);
-  void f(X<439>);
-  void f(X<440>);
-  void f(X<441>);
-  void f(X<442>);
-  void f(X<443>);
-  void f(X<444>);
-  void f(X<445>);
-  void f(X<446>);
-  void f(X<447>);
-  void f(X<448>);
-  void f(X<449>);
-  void f(X<450>);
-  void f(X<451>);
-  void f(X<452>);
-  void f(X<453>);
-  void f(X<454>);
-  void f(X<455>);
-  void f(X<456>);
-  void f(X<457>);
-  void f(X<458>);
-  void f(X<459>);
-  void f(X<460>);
-  void f(X<461>);
-  void f(X<462>);
-  void f(X<463>);
-  void f(X<464>);
-  void f(X<465>);
-  void f(X<466>);
-  void f(X<467>);
-  void f(X<468>);
-  void f(X<469>);
-  void f(X<470>);
-  void f(X<471>);
-  void f(X<472>);
-  void f(X<473>);
-  void f(X<474>);
-  void f(X<475>);
-  void f(X<476>);
-  void f(X<477>);
-  void f(X<478>);
-  void f(X<479>);
-  void f(X<480>);
-  void f(X<481>);
-  void f(X<482>);
-  void f(X<483>);
-  void f(X<484>);
-  void f(X<485>);
-  void f(X<486>);
-  void f(X<487>);
-  void f(X<488>);
-  void f(X<489>);
-  void f(X<490>);
-  void f(X<491>);
-  void f(X<492>);
-  void f(X<493>);
-  void f(X<494>);
-  void f(X<495>);
-  void f(X<496>);
-  void f(X<497>);
-  void f(X<498>);
-  void f(X<499>);
-  void f(X<500>);
-  void f(X<501>);
-  void f(X<502>);
-  void f(X<503>);
-  void f(X<504>);
-  void f(X<505>);
-  void f(X<506>);
-  void f(X<507>);
-  void f(X<508>);
-  void f(X<509>);
-  void f(X<510>);
-  void f(X<511>);
-  void f(X<512>);
-  void f(X<513>);
-  void f(X<514>);
-  void f(X<515>);
-  void f(X<516>);
-  void f(X<517>);
-  void f(X<518>);
-  void f(X<519>);
-  void f(X<520>);
-  void f(X<521>);
-  void f(X<522>);
-  void f(X<523>);
-  void f(X<524>);
-  void f(X<525>);
-  void f(X<526>);
-  void f(X<527>);
-  void f(X<528>);
-  void f(X<529>);
-  void f(X<530>);
-  void f(X<531>);
-  void f(X<532>);
-  void f(X<533>);
-  void f(X<534>);
-  void f(X<535>);
-  void f(X<536>);
-  void f(X<537>);
-  void f(X<538>);
-  void f(X<539>);
-  void f(X<540>);
-  void f(X<541>);
-  void f(X<542>);
-  void f(X<543>);
-  void f(X<544>);
-  void f(X<545>);
-  void f(X<546>);
-  void f(X<547>);
-  void f(X<548>);
-  void f(X<549>);
-  void f(X<550>);
-  void f(X<551>);
-  void f(X<552>);
-  void f(X<553>);
-  void f(X<554>);
-  void f(X<555>);
-  void f(X<556>);
-  void f(X<557>);
-  void f(X<558>);
-  void f(X<559>);
-  void f(X<560>);
-  void f(X<561>);
-  void f(X<562>);
-  void f(X<563>);
-  void f(X<564>);
-  void f(X<565>);
-  void f(X<566>);
-  void f(X<567>);
-  void f(X<568>);
-  void f(X<569>);
-  void f(X<570>);
-  void f(X<571>);
-  void f(X<572>);
-  void f(X<573>);
-  void f(X<574>);
-  void f(X<575>);
-  void f(X<576>);
-  void f(X<577>);
-  void f(X<578>);
-  void f(X<579>);
-  void f(X<580>);
-  void f(X<581>);
-  void f(X<582>);
-  void f(X<583>);
-  void f(X<584>);
-  void f(X<585>);
-  void f(X<586>);
-  void f(X<587>);
-  void f(X<588>);
-  void f(X<589>);
-  void f(X<590>);
-  void f(X<591>);
-  void f(X<592>);
-  void f(X<593>);
-  void f(X<594>);
-  void f(X<595>);
-  void f(X<596>);
-  void f(X<597>);
-  void f(X<598>);
-  void f(X<599>);
-  void f(X<600>);
-  void f(X<601>);
-  void f(X<602>);
-  void f(X<603>);
-  void f(X<604>);
-  void f(X<605>);
-  void f(X<606>);
-  void f(X<607>);
-  void f(X<608>);
-  void f(X<609>);
-  void f(X<610>);
-  void f(X<611>);
-  void f(X<612>);
-  void f(X<613>);
-  void f(X<614>);
-  void f(X<615>);
-  void f(X<616>);
-  void f(X<617>);
-  void f(X<618>);
-  void f(X<619>);
-  void f(X<620>);
-  void f(X<621>);
-  void f(X<622>);
-  void f(X<623>);
-  void f(X<624>);
-  void f(X<625>);
-  void f(X<626>);
-  void f(X<627>);
-  void f(X<628>);
-  void f(X<629>);
-  void f(X<630>);
-  void f(X<631>);
-  void f(X<632>);
-  void f(X<633>);
-  void f(X<634>);
-  void f(X<635>);
-  void f(X<636>);
-  void f(X<637>);
-  void f(X<638>);
-  void f(X<639>);
-  void f(X<640>);
-  void f(X<641>);
-  void f(X<642>);
-  void f(X<643>);
-  void f(X<644>);
-  void f(X<645>);
-  void f(X<646>);
-  void f(X<647>);
-  void f(X<648>);
-  void f(X<649>);
-  void f(X<650>);
-  void f(X<651>);
-  void f(X<652>);
-  void f(X<653>);
-  void f(X<654>);
-  void f(X<655>);
-  void f(X<656>);
-  void f(X<657>);
-  void f(X<658>);
-  void f(X<659>);
-  void f(X<660>);
-  void f(X<661>);
-  void f(X<662>);
-  void f(X<663>);
-  void f(X<664>);
-  void f(X<665>);
-  void f(X<666>);
-  void f(X<667>);
-  void f(X<668>);
-  void f(X<669>);
-  void f(X<670>);
-  void f(X<671>);
-  void f(X<672>);
-  void f(X<673>);
-  void f(X<674>);
-  void f(X<675>);
-  void f(X<676>);
-  void f(X<677>);
-  void f(X<678>);
-  void f(X<679>);
-  void f(X<680>);
-  void f(X<681>);
-  void f(X<682>);
-  void f(X<683>);
-  void f(X<684>);
-  void f(X<685>);
-  void f(X<686>);
-  void f(X<687>);
-  void f(X<688>);
-  void f(X<689>);
-  void f(X<690>);
-  void f(X<691>);
-  void f(X<692>);
-  void f(X<693>);
-  void f(X<694>);
-  void f(X<695>);
-  void f(X<696>);
-  void f(X<697>);
-  void f(X<698>);
-  void f(X<699>);
-  void f(X<700>);
-  void f(X<701>);
-  void f(X<702>);
-  void f(X<703>);
-  void f(X<704>);
-  void f(X<705>);
-  void f(X<706>);
-  void f(X<707>);
-  void f(X<708>);
-  void f(X<709>);
-  void f(X<710>);
-  void f(X<711>);
-  void f(X<712>);
-  void f(X<713>);
-  void f(X<714>);
-  void f(X<715>);
-  void f(X<716>);
-  void f(X<717>);
-  void f(X<718>);
-  void f(X<719>);
-  void f(X<720>);
-  void f(X<721>);
-  void f(X<722>);
-  void f(X<723>);
-  void f(X<724>);
-  void f(X<725>);
-  void f(X<726>);
-  void f(X<727>);
-  void f(X<728>);
-  void f(X<729>);
-  void f(X<730>);
-  void f(X<731>);
-  void f(X<732>);
-  void f(X<733>);
-  void f(X<734>);
-  void f(X<735>);
-  void f(X<736>);
-  void f(X<737>);
-  void f(X<738>);
-  void f(X<739>);
-  void f(X<740>);
-  void f(X<741>);
-  void f(X<742>);
-  void f(X<743>);
-  void f(X<744>);
-  void f(X<745>);
-  void f(X<746>);
-  void f(X<747>);
-  void f(X<748>);
-  void f(X<749>);
-  void f(X<750>);
-  void f(X<751>);
-  void f(X<752>);
-  void f(X<753>);
-  void f(X<754>);
-  void f(X<755>);
-  void f(X<756>);
-  void f(X<757>);
-  void f(X<758>);
-  void f(X<759>);
-  void f(X<760>);
-  void f(X<761>);
-  void f(X<762>);
-  void f(X<763>);
-  void f(X<764>);
-  void f(X<765>);
-  void f(X<766>);
-  void f(X<767>);
-  void f(X<768>);
-  void f(X<769>);
-  void f(X<770>);
-  void f(X<771>);
-  void f(X<772>);
-  void f(X<773>);
-  void f(X<774>);
-  void f(X<775>);
-  void f(X<776>);
-  void f(X<777>);
-  void f(X<778>);
-  void f(X<779>);
-  void f(X<780>);
-  void f(X<781>);
-  void f(X<782>);
-  void f(X<783>);
-  void f(X<784>);
-  void f(X<785>);
-  void f(X<786>);
-  void f(X<787>);
-  void f(X<788>);
-  void f(X<789>);
-  void f(X<790>);
-  void f(X<791>);
-  void f(X<792>);
-  void f(X<793>);
-  void f(X<794>);
-  void f(X<795>);
-  void f(X<796>);
-  void f(X<797>);
-  void f(X<798>);
-  void f(X<799>);
-  void f(X<800>);
-  void f(X<801>);
-  void f(X<802>);
-  void f(X<803>);
-  void f(X<804>);
-  void f(X<805>);
-  void f(X<806>);
-  void f(X<807>);
-  void f(X<808>);
-  void f(X<809>);
-  void f(X<810>);
-  void f(X<811>);
-  void f(X<812>);
-  void f(X<813>);
-  void f(X<814>);
-  void f(X<815>);
-  void f(X<816>);
-  void f(X<817>);
-  void f(X<818>);
-  void f(X<819>);
-  void f(X<820>);
-  void f(X<821>);
-  void f(X<822>);
-  void f(X<823>);
-  void f(X<824>);
-  void f(X<825>);
-  void f(X<826>);
-  void f(X<827>);
-  void f(X<828>);
-  void f(X<829>);
-  void f(X<830>);
-  void f(X<831>);
-  void f(X<832>);
-  void f(X<833>);
-  void f(X<834>);
-  void f(X<835>);
-  void f(X<836>);
-  void f(X<837>);
-  void f(X<838>);
-  void f(X<839>);
-  void f(X<840>);
-  void f(X<841>);
-  void f(X<842>);
-  void f(X<843>);
-  void f(X<844>);
-  void f(X<845>);
-  void f(X<846>);
-  void f(X<847>);
-  void f(X<848>);
-  void f(X<849>);
-  void f(X<850>);
-  void f(X<851>);
-  void f(X<852>);
-  void f(X<853>);
-  void f(X<854>);
-  void f(X<855>);
-  void f(X<856>);
-  void f(X<857>);
-  void f(X<858>);
-  void f(X<859>);
-  void f(X<860>);
-  void f(X<861>);
-  void f(X<862>);
-  void f(X<863>);
-  void f(X<864>);
-  void f(X<865>);
-  void f(X<866>);
-  void f(X<867>);
-  void f(X<868>);
-  void f(X<869>);
-  void f(X<870>);
-  void f(X<871>);
-  void f(X<872>);
-  void f(X<873>);
-  void f(X<874>);
-  void f(X<875>);
-  void f(X<876>);
-  void f(X<877>);
-  void f(X<878>);
-  void f(X<879>);
-  void f(X<880>);
-  void f(X<881>);
-  void f(X<882>);
-  void f(X<883>);
-  void f(X<884>);
-  void f(X<885>);
-  void f(X<886>);
-  void f(X<887>);
-  void f(X<888>);
-  void f(X<889>);
-  void f(X<890>);
-  void f(X<891>);
-  void f(X<892>);
-  void f(X<893>);
-  void f(X<894>);
-  void f(X<895>);
-  void f(X<896>);
-  void f(X<897>);
-  void f(X<898>);
-  void f(X<899>);
-  void f(X<900>);
-  void f(X<901>);
-  void f(X<902>);
-  void f(X<903>);
-  void f(X<904>);
-  void f(X<905>);
-  void f(X<906>);
-  void f(X<907>);
-  void f(X<908>);
-  void f(X<909>);
-  void f(X<910>);
-  void f(X<911>);
-  void f(X<912>);
-  void f(X<913>);
-  void f(X<914>);
-  void f(X<915>);
-  void f(X<916>);
-  void f(X<917>);
-  void f(X<918>);
-  void f(X<919>);
-  void f(X<920>);
-  void f(X<921>);
-  void f(X<922>);
-  void f(X<923>);
-  void f(X<924>);
-  void f(X<925>);
-  void f(X<926>);
-  void f(X<927>);
-  void f(X<928>);
-  void f(X<929>);
-  void f(X<930>);
-  void f(X<931>);
-  void f(X<932>);
-  void f(X<933>);
-  void f(X<934>);
-  void f(X<935>);
-  void f(X<936>);
-  void f(X<937>);
-  void f(X<938>);
-  void f(X<939>);
-  void f(X<940>);
-  void f(X<941>);
-  void f(X<942>);
-  void f(X<943>);
-  void f(X<944>);
-  void f(X<945>);
-  void f(X<946>);
-  void f(X<947>);
-  void f(X<948>);
-  void f(X<949>);
-  void f(X<950>);
-  void f(X<951>);
-  void f(X<952>);
-  void f(X<953>);
-  void f(X<954>);
-  void f(X<955>);
-  void f(X<956>);
-  void f(X<957>);
-  void f(X<958>);
-  void f(X<959>);
-  void f(X<960>);
-  void f(X<961>);
-  void f(X<962>);
-  void f(X<963>);
-  void f(X<964>);
-  void f(X<965>);
-  void f(X<966>);
-  void f(X<967>);
-  void f(X<968>);
-  void f(X<969>);
-  void f(X<970>);
-  void f(X<971>);
-  void f(X<972>);
-  void f(X<973>);
-  void f(X<974>);
-  void f(X<975>);
-  void f(X<976>);
-  void f(X<977>);
-  void f(X<978>);
-  void f(X<979>);
-  void f(X<980>);
-  void f(X<981>);
-  void f(X<982>);
-  void f(X<983>);
-  void f(X<984>);
-  void f(X<985>);
-  void f(X<986>);
-  void f(X<987>);
-  void f(X<988>);
-  void f(X<989>);
-  void f(X<990>);
-  void f(X<991>);
-  void f(X<992>);
-  void f(X<993>);
-  void f(X<994>);
-  void f(X<995>);
-  void f(X<996>);
-  void f(X<997>);
-  void f(X<998>);
-  void f(X<999>);
-  void f(X<1000>);
-  void f(X<1001>);
-  void f(X<1002>);
-  void f(X<1003>);
-  void f(X<1004>);
-  void f(X<1005>);
-  void f(X<1006>);
-  void f(X<1007>);
-  void f(X<1008>);
-  void f(X<1009>);
-  void f(X<1010>);
-  void f(X<1011>);
-  void f(X<1012>);
-  void f(X<1013>);
-  void f(X<1014>);
-  void f(X<1015>);
-  void f(X<1016>);
-  void f(X<1017>);
-  void f(X<1018>);
-  void f(X<1019>);
-  void f(X<1020>);
-  void f(X<1021>);
-  void f(X<1022>);
-  void f(X<1023>);
-  void f(X<1024>);
-  void f(X<1025>);
-  void f(X<1026>);
-  void f(X<1027>);
-  void f(X<1028>);
-  void f(X<1029>);
-  void f(X<1030>);
-  void f(X<1031>);
-  void f(X<1032>);
-  void f(X<1033>);
-  void f(X<1034>);
-  void f(X<1035>);
-  void f(X<1036>);
-  void f(X<1037>);
-  void f(X<1038>);
-  void f(X<1039>);
-  void f(X<1040>);
-  void f(X<1041>);
-  void f(X<1042>);
-  void f(X<1043>);
-  void f(X<1044>);
-  void f(X<1045>);
-  void f(X<1046>);
-  void f(X<1047>);
-  void f(X<1048>);
-  void f(X<1049>);
-  void f(X<1050>);
-  void f(X<1051>);
-  void f(X<1052>);
-  void f(X<1053>);
-  void f(X<1054>);
-  void f(X<1055>);
-  void f(X<1056>);
-  void f(X<1057>);
-  void f(X<1058>);
-  void f(X<1059>);
-  void f(X<1060>);
-  void f(X<1061>);
-  void f(X<1062>);
-  void f(X<1063>);
-  void f(X<1064>);
-  void f(X<1065>);
-  void f(X<1066>);
-  void f(X<1067>);
-  void f(X<1068>);
-  void f(X<1069>);
-  void f(X<1070>);
-  void f(X<1071>);
-  void f(X<1072>);
-  void f(X<1073>);
-  void f(X<1074>);
-  void f(X<1075>);
-  void f(X<1076>);
-  void f(X<1077>);
-  void f(X<1078>);
-  void f(X<1079>);
-  void f(X<1080>);
-  void f(X<1081>);
-  void f(X<1082>);
-  void f(X<1083>);
-  void f(X<1084>);
-  void f(X<1085>);
-  void f(X<1086>);
-  void f(X<1087>);
-  void f(X<1088>);
-  void f(X<1089>);
-  void f(X<1090>);
-  void f(X<1091>);
-  void f(X<1092>);
-  void f(X<1093>);
-  void f(X<1094>);
-  void f(X<1095>);
-  void f(X<1096>);
-  void f(X<1097>);
-  void f(X<1098>);
-  void f(X<1099>);
-  void f(X<1100>);
-  void f(X<1101>);
-  void f(X<1102>);
-  void f(X<1103>);
-  void f(X<1104>);
-  void f(X<1105>);
-  void f(X<1106>);
-  void f(X<1107>);
-  void f(X<1108>);
-  void f(X<1109>);
-  void f(X<1110>);
-  void f(X<1111>);
-  void f(X<1112>);
-  void f(X<1113>);
-  void f(X<1114>);
-  void f(X<1115>);
-  void f(X<1116>);
-  void f(X<1117>);
-  void f(X<1118>);
-  void f(X<1119>);
-  void f(X<1120>);
-  void f(X<1121>);
-  void f(X<1122>);
-  void f(X<1123>);
-  void f(X<1124>);
-  void f(X<1125>);
-  void f(X<1126>);
-  void f(X<1127>);
-  void f(X<1128>);
-  void f(X<1129>);
-  void f(X<1130>);
-  void f(X<1131>);
-  void f(X<1132>);
-  void f(X<1133>);
-  void f(X<1134>);
-  void f(X<1135>);
-  void f(X<1136>);
-  void f(X<1137>);
-  void f(X<1138>);
-  void f(X<1139>);
-  void f(X<1140>);
-  void f(X<1141>);
-  void f(X<1142>);
-  void f(X<1143>);
-  void f(X<1144>);
-  void f(X<1145>);
-  void f(X<1146>);
-  void f(X<1147>);
-  void f(X<1148>);
-  void f(X<1149>);
-  void f(X<1150>);
-  void f(X<1151>);
-  void f(X<1152>);
-  void f(X<1153>);
-  void f(X<1154>);
-  void f(X<1155>);
-  void f(X<1156>);
-  void f(X<1157>);
-  void f(X<1158>);
-  void f(X<1159>);
-  void f(X<1160>);
-  void f(X<1161>);
-  void f(X<1162>);
-  void f(X<1163>);
-  void f(X<1164>);
-  void f(X<1165>);
-  void f(X<1166>);
-  void f(X<1167>);
-  void f(X<1168>);
-  void f(X<1169>);
-  void f(X<1170>);
-  void f(X<1171>);
-  void f(X<1172>);
-  void f(X<1173>);
-  void f(X<1174>);
-  void f(X<1175>);
-  void f(X<1176>);
-  void f(X<1177>);
-  void f(X<1178>);
-  void f(X<1179>);
-  void f(X<1180>);
-  void f(X<1181>);
-  void f(X<1182>);
-  void f(X<1183>);
-  void f(X<1184>);
-  void f(X<1185>);
-  void f(X<1186>);
-  void f(X<1187>);
-  void f(X<1188>);
-  void f(X<1189>);
-  void f(X<1190>);
-  void f(X<1191>);
-  void f(X<1192>);
-  void f(X<1193>);
-  void f(X<1194>);
-  void f(X<1195>);
-  void f(X<1196>);
-  void f(X<1197>);
-  void f(X<1198>);
-  void f(X<1199>);
-  void f(X<1200>);
-  void f(X<1201>);
-  void f(X<1202>);
-  void f(X<1203>);
-  void f(X<1204>);
-  void f(X<1205>);
-  void f(X<1206>);
-  void f(X<1207>);
-  void f(X<1208>);
-  void f(X<1209>);
-  void f(X<1210>);
-  void f(X<1211>);
-  void f(X<1212>);
-  void f(X<1213>);
-  void f(X<1214>);
-  void f(X<1215>);
-  void f(X<1216>);
-  void f(X<1217>);
-  void f(X<1218>);
-  void f(X<1219>);
-  void f(X<1220>);
-  void f(X<1221>);
-  void f(X<1222>);
-  void f(X<1223>);
-  void f(X<1224>);
-  void f(X<1225>);
-  void f(X<1226>);
-  void f(X<1227>);
-  void f(X<1228>);
-  void f(X<1229>);
-  void f(X<1230>);
-  void f(X<1231>);
-  void f(X<1232>);
-  void f(X<1233>);
-  void f(X<1234>);
-  void f(X<1235>);
-  void f(X<1236>);
-  void f(X<1237>);
-  void f(X<1238>);
-  void f(X<1239>);
-  void f(X<1240>);
-  void f(X<1241>);
-  void f(X<1242>);
-  void f(X<1243>);
-  void f(X<1244>);
-  void f(X<1245>);
-  void f(X<1246>);
-  void f(X<1247>);
-  void f(X<1248>);
-  void f(X<1249>);
-  void f(X<1250>);
-  void f(X<1251>);
-  void f(X<1252>);
-  void f(X<1253>);
-  void f(X<1254>);
-  void f(X<1255>);
-  void f(X<1256>);
-  void f(X<1257>);
-  void f(X<1258>);
-  void f(X<1259>);
-  void f(X<1260>);
-  void f(X<1261>);
-  void f(X<1262>);
-  void f(X<1263>);
-  void f(X<1264>);
-  void f(X<1265>);
-  void f(X<1266>);
-  void f(X<1267>);
-  void f(X<1268>);
-  void f(X<1269>);
-  void f(X<1270>);
-  void f(X<1271>);
-  void f(X<1272>);
-  void f(X<1273>);
-  void f(X<1274>);
-  void f(X<1275>);
-  void f(X<1276>);
-  void f(X<1277>);
-  void f(X<1278>);
-  void f(X<1279>);
-  void f(X<1280>);
-  void f(X<1281>);
-  void f(X<1282>);
-  void f(X<1283>);
-  void f(X<1284>);
-  void f(X<1285>);
-  void f(X<1286>);
-  void f(X<1287>);
-  void f(X<1288>);
-  void f(X<1289>);
-  void f(X<1290>);
-  void f(X<1291>);
-  void f(X<1292>);
-  void f(X<1293>);
-  void f(X<1294>);
-  void f(X<1295>);
-  void f(X<1296>);
-  void f(X<1297>);
-  void f(X<1298>);
-  void f(X<1299>);
-  void f(X<1300>);
-  void f(X<1301>);
-  void f(X<1302>);
-  void f(X<1303>);
-  void f(X<1304>);
-  void f(X<1305>);
-  void f(X<1306>);
-  void f(X<1307>);
-  void f(X<1308>);
-  void f(X<1309>);
-  void f(X<1310>);
-  void f(X<1311>);
-  void f(X<1312>);
-  void f(X<1313>);
-  void f(X<1314>);
-  void f(X<1315>);
-  void f(X<1316>);
-  void f(X<1317>);
-  void f(X<1318>);
-  void f(X<1319>);
-  void f(X<1320>);
-  void f(X<1321>);
-  void f(X<1322>);
-  void f(X<1323>);
-  void f(X<1324>);
-  void f(X<1325>);
-  void f(X<1326>);
-  void f(X<1327>);
-  void f(X<1328>);
-  void f(X<1329>);
-  void f(X<1330>);
-  void f(X<1331>);
-  void f(X<1332>);
-  void f(X<1333>);
-  void f(X<1334>);
-  void f(X<1335>);
-  void f(X<1336>);
-  void f(X<1337>);
-  void f(X<1338>);
-  void f(X<1339>);
-  void f(X<1340>);
-  void f(X<1341>);
-  void f(X<1342>);
-  void f(X<1343>);
-  void f(X<1344>);
-  void f(X<1345>);
-  void f(X<1346>);
-  void f(X<1347>);
-  void f(X<1348>);
-  void f(X<1349>);
-  void f(X<1350>);
-  void f(X<1351>);
-  void f(X<1352>);
-  void f(X<1353>);
-  void f(X<1354>);
-  void f(X<1355>);
-  void f(X<1356>);
-  void f(X<1357>);
-  void f(X<1358>);
-  void f(X<1359>);
-  void f(X<1360>);
-  void f(X<1361>);
-  void f(X<1362>);
-  void f(X<1363>);
-  void f(X<1364>);
-  void f(X<1365>);
-  void f(X<1366>);
-  void f(X<1367>);
-  void f(X<1368>);
-  void f(X<1369>);
-  void f(X<1370>);
-  void f(X<1371>);
-  void f(X<1372>);
-  void f(X<1373>);
-  void f(X<1374>);
-  void f(X<1375>);
-  void f(X<1376>);
-  void f(X<1377>);
-  void f(X<1378>);
-  void f(X<1379>);
-  void f(X<1380>);
-  void f(X<1381>);
-  void f(X<1382>);
-  void f(X<1383>);
-  void f(X<1384>);
-  void f(X<1385>);
-  void f(X<1386>);
-  void f(X<1387>);
-  void f(X<1388>);
-  void f(X<1389>);
-  void f(X<1390>);
-  void f(X<1391>);
-  void f(X<1392>);
-  void f(X<1393>);
-  void f(X<1394>);
-  void f(X<1395>);
-  void f(X<1396>);
-  void f(X<1397>);
-  void f(X<1398>);
-  void f(X<1399>);
-  void f(X<1400>);
-  void f(X<1401>);
-  void f(X<1402>);
-  void f(X<1403>);
-  void f(X<1404>);
-  void f(X<1405>);
-  void f(X<1406>);
-  void f(X<1407>);
-  void f(X<1408>);
-  void f(X<1409>);
-  void f(X<1410>);
-  void f(X<1411>);
-  void f(X<1412>);
-  void f(X<1413>);
-  void f(X<1414>);
-  void f(X<1415>);
-  void f(X<1416>);
-  void f(X<1417>);
-  void f(X<1418>);
-  void f(X<1419>);
-  void f(X<1420>);
-  void f(X<1421>);
-  void f(X<1422>);
-  void f(X<1423>);
-  void f(X<1424>);
-  void f(X<1425>);
-  void f(X<1426>);
-  void f(X<1427>);
-  void f(X<1428>);
-  void f(X<1429>);
-  void f(X<1430>);
-  void f(X<1431>);
-  void f(X<1432>);
-  void f(X<1433>);
-  void f(X<1434>);
-  void f(X<1435>);
-  void f(X<1436>);
-  void f(X<1437>);
-  void f(X<1438>);
-  void f(X<1439>);
-  void f(X<1440>);
-  void f(X<1441>);
-  void f(X<1442>);
-  void f(X<1443>);
-  void f(X<1444>);
-  void f(X<1445>);
-  void f(X<1446>);
-  void f(X<1447>);
-  void f(X<1448>);
-  void f(X<1449>);
-  void f(X<1450>);
-  void f(X<1451>);
-  void f(X<1452>);
-  void f(X<1453>);
-  void f(X<1454>);
-  void f(X<1455>);
-  void f(X<1456>);
-  void f(X<1457>);
-  void f(X<1458>);
-  void f(X<1459>);
-  void f(X<1460>);
-  void f(X<1461>);
-  void f(X<1462>);
-  void f(X<1463>);
-  void f(X<1464>);
-  void f(X<1465>);
-  void f(X<1466>);
-  void f(X<1467>);
-  void f(X<1468>);
-  void f(X<1469>);
-  void f(X<1470>);
-  void f(X<1471>);
-  void f(X<1472>);
-  void f(X<1473>);
-  void f(X<1474>);
-  void f(X<1475>);
-  void f(X<1476>);
-  void f(X<1477>);
-  void f(X<1478>);
-  void f(X<1479>);
-  void f(X<1480>);
-  void f(X<1481>);
-  void f(X<1482>);
-  void f(X<1483>);
-  void f(X<1484>);
-  void f(X<1485>);
-  void f(X<1486>);
-  void f(X<1487>);
-  void f(X<1488>);
-  void f(X<1489>);
-  void f(X<1490>);
-  void f(X<1491>);
-  void f(X<1492>);
-  void f(X<1493>);
-  void f(X<1494>);
-  void f(X<1495>);
-  void f(X<1496>);
-  void f(X<1497>);
-  void f(X<1498>);
-  void f(X<1499>);
-  void f(X<1500>);
-  void f(X<1501>);
-  void f(X<1502>);
-  void f(X<1503>);
-  void f(X<1504>);
-  void f(X<1505>);
-  void f(X<1506>);
-  void f(X<1507>);
-  void f(X<1508>);
-  void f(X<1509>);
-  void f(X<1510>);
-  void f(X<1511>);
-  void f(X<1512>);
-  void f(X<1513>);
-  void f(X<1514>);
-  void f(X<1515>);
-  void f(X<1516>);
-  void f(X<1517>);
-  void f(X<1518>);
-  void f(X<1519>);
-  void f(X<1520>);
-  void f(X<1521>);
-  void f(X<1522>);
-  void f(X<1523>);
-  void f(X<1524>);
-  void f(X<1525>);
-  void f(X<1526>);
-  void f(X<1527>);
-  void f(X<1528>);
-  void f(X<1529>);
-  void f(X<1530>);
-  void f(X<1531>);
-  void f(X<1532>);
-  void f(X<1533>);
-  void f(X<1534>);
-  void f(X<1535>);
-  void f(X<1536>);
-  void f(X<1537>);
-  void f(X<1538>);
-  void f(X<1539>);
-  void f(X<1540>);
-  void f(X<1541>);
-  void f(X<1542>);
-  void f(X<1543>);
-  void f(X<1544>);
-  void f(X<1545>);
-  void f(X<1546>);
-  void f(X<1547>);
-  void f(X<1548>);
-  void f(X<1549>);
-  void f(X<1550>);
-  void f(X<1551>);
-  void f(X<1552>);
-  void f(X<1553>);
-  void f(X<1554>);
-  void f(X<1555>);
-  void f(X<1556>);
-  void f(X<1557>);
-  void f(X<1558>);
-  void f(X<1559>);
-  void f(X<1560>);
-  void f(X<1561>);
-  void f(X<1562>);
-  void f(X<1563>);
-  void f(X<1564>);
-  void f(X<1565>);
-  void f(X<1566>);
-  void f(X<1567>);
-  void f(X<1568>);
-  void f(X<1569>);
-  void f(X<1570>);
-  void f(X<1571>);
-  void f(X<1572>);
-  void f(X<1573>);
-  void f(X<1574>);
-  void f(X<1575>);
-  void f(X<1576>);
-  void f(X<1577>);
-  void f(X<1578>);
-  void f(X<1579>);
-  void f(X<1580>);
-  void f(X<1581>);
-  void f(X<1582>);
-  void f(X<1583>);
-  void f(X<1584>);
-  void f(X<1585>);
-  void f(X<1586>);
-  void f(X<1587>);
-  void f(X<1588>);
-  void f(X<1589>);
-  void f(X<1590>);
-  void f(X<1591>);
-  void f(X<1592>);
-  void f(X<1593>);
-  void f(X<1594>);
-  void f(X<1595>);
-  void f(X<1596>);
-  void f(X<1597>);
-  void f(X<1598>);
-  void f(X<1599>);
-  void f(X<1600>);
-  void f(X<1601>);
-  void f(X<1602>);
-  void f(X<1603>);
-  void f(X<1604>);
-  void f(X<1605>);
-  void f(X<1606>);
-  void f(X<1607>);
-  void f(X<1608>);
-  void f(X<1609>);
-  void f(X<1610>);
-  void f(X<1611>);
-  void f(X<1612>);
-  void f(X<1613>);
-  void f(X<1614>);
-  void f(X<1615>);
-  void f(X<1616>);
-  void f(X<1617>);
-  void f(X<1618>);
-  void f(X<1619>);
-  void f(X<1620>);
-  void f(X<1621>);
-  void f(X<1622>);
-  void f(X<1623>);
-  void f(X<1624>);
-  void f(X<1625>);
-  void f(X<1626>);
-  void f(X<1627>);
-  void f(X<1628>);
-  void f(X<1629>);
-  void f(X<1630>);
-  void f(X<1631>);
-  void f(X<1632>);
-  void f(X<1633>);
-  void f(X<1634>);
-  void f(X<1635>);
-  void f(X<1636>);
-  void f(X<1637>);
-  void f(X<1638>);
-  void f(X<1639>);
-  void f(X<1640>);
-  void f(X<1641>);
-  void f(X<1642>);
-  void f(X<1643>);
-  void f(X<1644>);
-  void f(X<1645>);
-  void f(X<1646>);
-  void f(X<1647>);
-  void f(X<1648>);
-  void f(X<1649>);
-  void f(X<1650>);
-  void f(X<1651>);
-  void f(X<1652>);
-  void f(X<1653>);
-  void f(X<1654>);
-  void f(X<1655>);
-  void f(X<1656>);
-  void f(X<1657>);
-  void f(X<1658>);
-  void f(X<1659>);
-  void f(X<1660>);
-  void f(X<1661>);
-  void f(X<1662>);
-  void f(X<1663>);
-  void f(X<1664>);
-  void f(X<1665>);
-  void f(X<1666>);
-  void f(X<1667>);
-  void f(X<1668>);
-  void f(X<1669>);
-  void f(X<1670>);
-  void f(X<1671>);
-  void f(X<1672>);
-  void f(X<1673>);
-  void f(X<1674>);
-  void f(X<1675>);
-  void f(X<1676>);
-  void f(X<1677>);
-  void f(X<1678>);
-  void f(X<1679>);
-  void f(X<1680>);
-  void f(X<1681>);
-  void f(X<1682>);
-  void f(X<1683>);
-  void f(X<1684>);
-  void f(X<1685>);
-  void f(X<1686>);
-  void f(X<1687>);
-  void f(X<1688>);
-  void f(X<1689>);
-  void f(X<1690>);
-  void f(X<1691>);
-  void f(X<1692>);
-  void f(X<1693>);
-  void f(X<1694>);
-  void f(X<1695>);
-  void f(X<1696>);
-  void f(X<1697>);
-  void f(X<1698>);
-  void f(X<1699>);
-  void f(X<1700>);
-  void f(X<1701>);
-  void f(X<1702>);
-  void f(X<1703>);
-  void f(X<1704>);
-  void f(X<1705>);
-  void f(X<1706>);
-  void f(X<1707>);
-  void f(X<1708>);
-  void f(X<1709>);
-  void f(X<1710>);
-  void f(X<1711>);
-  void f(X<1712>);
-  void f(X<1713>);
-  void f(X<1714>);
-  void f(X<1715>);
-  void f(X<1716>);
-  void f(X<1717>);
-  void f(X<1718>);
-  void f(X<1719>);
-  void f(X<1720>);
-  void f(X<1721>);
-  void f(X<1722>);
-  void f(X<1723>);
-  void f(X<1724>);
-  void f(X<1725>);
-  void f(X<1726>);
-  void f(X<1727>);
-  void f(X<1728>);
-  void f(X<1729>);
-  void f(X<1730>);
-  void f(X<1731>);
-  void f(X<1732>);
-  void f(X<1733>);
-  void f(X<1734>);
-  void f(X<1735>);
-  void f(X<1736>);
-  void f(X<1737>);
-  void f(X<1738>);
-  void f(X<1739>);
-  void f(X<1740>);
-  void f(X<1741>);
-  void f(X<1742>);
-  void f(X<1743>);
-  void f(X<1744>);
-  void f(X<1745>);
-  void f(X<1746>);
-  void f(X<1747>);
-  void f(X<1748>);
-  void f(X<1749>);
-  void f(X<1750>);
-  void f(X<1751>);
-  void f(X<1752>);
-  void f(X<1753>);
-  void f(X<1754>);
-  void f(X<1755>);
-  void f(X<1756>);
-  void f(X<1757>);
-  void f(X<1758>);
-  void f(X<1759>);
-  void f(X<1760>);
-  void f(X<1761>);
-  void f(X<1762>);
-  void f(X<1763>);
-  void f(X<1764>);
-  void f(X<1765>);
-  void f(X<1766>);
-  void f(X<1767>);
-  void f(X<1768>);
-  void f(X<1769>);
-  void f(X<1770>);
-  void f(X<1771>);
-  void f(X<1772>);
-  void f(X<1773>);
-  void f(X<1774>);
-  void f(X<1775>);
-  void f(X<1776>);
-  void f(X<1777>);
-  void f(X<1778>);
-  void f(X<1779>);
-  void f(X<1780>);
-  void f(X<1781>);
-  void f(X<1782>);
-  void f(X<1783>);
-  void f(X<1784>);
-  void f(X<1785>);
-  void f(X<1786>);
-  void f(X<1787>);
-  void f(X<1788>);
-  void f(X<1789>);
-  void f(X<1790>);
-  void f(X<1791>);
-  void f(X<1792>);
-  void f(X<1793>);
-  void f(X<1794>);
-  void f(X<1795>);
-  void f(X<1796>);
-  void f(X<1797>);
-  void f(X<1798>);
-  void f(X<1799>);
-  void f(X<1800>);
-  void f(X<1801>);
-  void f(X<1802>);
-  void f(X<1803>);
-  void f(X<1804>);
-  void f(X<1805>);
-  void f(X<1806>);
-  void f(X<1807>);
-  void f(X<1808>);
-  void f(X<1809>);
-  void f(X<1810>);
-  void f(X<1811>);
-  void f(X<1812>);
-  void f(X<1813>);
-  void f(X<1814>);
-  void f(X<1815>);
-  void f(X<1816>);
-  void f(X<1817>);
-  void f(X<1818>);
-  void f(X<1819>);
-  void f(X<1820>);
-  void f(X<1821>);
-  void f(X<1822>);
-  void f(X<1823>);
-  void f(X<1824>);
-  void f(X<1825>);
-  void f(X<1826>);
-  void f(X<1827>);
-  void f(X<1828>);
-  void f(X<1829>);
-  void f(X<1830>);
-  void f(X<1831>);
-  void f(X<1832>);
-  void f(X<1833>);
-  void f(X<1834>);
-  void f(X<1835>);
-  void f(X<1836>);
-  void f(X<1837>);
-  void f(X<1838>);
-  void f(X<1839>);
-  void f(X<1840>);
-  void f(X<1841>);
-  void f(X<1842>);
-  void f(X<1843>);
-  void f(X<1844>);
-  void f(X<1845>);
-  void f(X<1846>);
-  void f(X<1847>);
-  void f(X<1848>);
-  void f(X<1849>);
-  void f(X<1850>);
-  void f(X<1851>);
-  void f(X<1852>);
-  void f(X<1853>);
-  void f(X<1854>);
-  void f(X<1855>);
-  void f(X<1856>);
-  void f(X<1857>);
-  void f(X<1858>);
-  void f(X<1859>);
-  void f(X<1860>);
-  void f(X<1861>);
-  void f(X<1862>);
-  void f(X<1863>);
-  void f(X<1864>);
-  void f(X<1865>);
-  void f(X<1866>);
-  void f(X<1867>);
-  void f(X<1868>);
-  void f(X<1869>);
-  void f(X<1870>);
-  void f(X<1871>);
-  void f(X<1872>);
-  void f(X<1873>);
-  void f(X<1874>);
-  void f(X<1875>);
-  void f(X<1876>);
-  void f(X<1877>);
-  void f(X<1878>);
-  void f(X<1879>);
-  void f(X<1880>);
-  void f(X<1881>);
-  void f(X<1882>);
-  void f(X<1883>);
-  void f(X<1884>);
-  void f(X<1885>);
-  void f(X<1886>);
-  void f(X<1887>);
-  void f(X<1888>);
-  void f(X<1889>);
-  void f(X<1890>);
-  void f(X<1891>);
-  void f(X<1892>);
-  void f(X<1893>);
-  void f(X<1894>);
-  void f(X<1895>);
-  void f(X<1896>);
-  void f(X<1897>);
-  void f(X<1898>);
-  void f(X<1899>);
-  void f(X<1900>);
-  void f(X<1901>);
-  void f(X<1902>);
-  void f(X<1903>);
-  void f(X<1904>);
-  void f(X<1905>);
-  void f(X<1906>);
-  void f(X<1907>);
-  void f(X<1908>);
-  void f(X<1909>);
-  void f(X<1910>);
-  void f(X<1911>);
-  void f(X<1912>);
-  void f(X<1913>);
-  void f(X<1914>);
-  void f(X<1915>);
-  void f(X<1916>);
-  void f(X<1917>);
-  void f(X<1918>);
-  void f(X<1919>);
-  void f(X<1920>);
-  void f(X<1921>);
-  void f(X<1922>);
-  void f(X<1923>);
-  void f(X<1924>);
-  void f(X<1925>);
-  void f(X<1926>);
-  void f(X<1927>);
-  void f(X<1928>);
-  void f(X<1929>);
-  void f(X<1930>);
-  void f(X<1931>);
-  void f(X<1932>);
-  void f(X<1933>);
-  void f(X<1934>);
-  void f(X<1935>);
-  void f(X<1936>);
-  void f(X<1937>);
-  void f(X<1938>);
-  void f(X<1939>);
-  void f(X<1940>);
-  void f(X<1941>);
-  void f(X<1942>);
-  void f(X<1943>);
-  void f(X<1944>);
-  void f(X<1945>);
-  void f(X<1946>);
-  void f(X<1947>);
-  void f(X<1948>);
-  void f(X<1949>);
-  void f(X<1950>);
-  void f(X<1951>);
-  void f(X<1952>);
-  void f(X<1953>);
-  void f(X<1954>);
-  void f(X<1955>);
-  void f(X<1956>);
-  void f(X<1957>);
-  void f(X<1958>);
-  void f(X<1959>);
-  void f(X<1960>);
-  void f(X<1961>);
-  void f(X<1962>);
-  void f(X<1963>);
-  void f(X<1964>);
-  void f(X<1965>);
-  void f(X<1966>);
-  void f(X<1967>);
-  void f(X<1968>);
-  void f(X<1969>);
-  void f(X<1970>);
-  void f(X<1971>);
-  void f(X<1972>);
-  void f(X<1973>);
-  void f(X<1974>);
-  void f(X<1975>);
-  void f(X<1976>);
-  void f(X<1977>);
-  void f(X<1978>);
-  void f(X<1979>);
-  void f(X<1980>);
-  void f(X<1981>);
-  void f(X<1982>);
-  void f(X<1983>);
-  void f(X<1984>);
-  void f(X<1985>);
-  void f(X<1986>);
-  void f(X<1987>);
-  void f(X<1988>);
-  void f(X<1989>);
-  void f(X<1990>);
-  void f(X<1991>);
-  void f(X<1992>);
-  void f(X<1993>);
-  void f(X<1994>);
-  void f(X<1995>);
-  void f(X<1996>);
-  void f(X<1997>);
-  void f(X<1998>);
-  void f(X<1999>);
-  void f(X<2000>);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/decl.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/decl.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/decl.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
- at class A;
-typedef struct B B;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/decl2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/decl2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/decl2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
- at class A;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/def-include.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/def-include.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/def-include.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-struct B {
-  int b1;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/def.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/def.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/def.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#include "def-include.h"
-
-
-
- at interface A {
- at public
-  int ivar;
-}
- at end
-
- at interface Def
-- defMethod;
- at end
-
-#ifdef __cplusplus
-class Def2 {
-public:
-  void func();
-};
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diag_pragma.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diag_pragma.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diag_pragma.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#define DIAG_PRAGMA_MACRO 1
-
-#pragma clang diagnostic ignored "-Wparentheses"

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
- at import diamond_bottom;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_bottom.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_bottom.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_bottom.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
- at import diamond_left;
- at import diamond_right;
-
-char bottom(char *x);

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
- at import diamond_top;
-
-float left(float *);
-
-int top_left(char *c);
-
-int left_and_right(int*);
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
- at import diamond_top;
-
-double right(double *);
-
-struct left_and_right {
-  int left, right;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_top.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_top.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/diamond_top.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-int top(int *);
-
-int top_left(char *c);
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ignored_macros.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ignored_macros.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/ignored_macros.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-struct Point {
-  double x, y;
-};
-
-#ifdef IGNORED
-int *has_ignored(void);
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/import-decl.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/import-decl.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/import-decl.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-struct T {};

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/irgen.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/irgen.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/irgen.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-static inline int triple(int x) { return x * 3; }

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-bar.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-bar.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-bar.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-#include <linkage-merge-foo.h>
-
-using ::g;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-foo.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-foo.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-foo.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int f();
-static int g(int);

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-sub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-sub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/linkage-merge-sub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-extern int f0(int);
-extern int f1(int);
-static int f2(int);
-static int f3(int);
-
-extern int v0;
-extern int v1;
-static int v2;
-static int v3;
-
-typedef int T0;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/load_failure.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/load_failure.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/load_failure.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int fail(int);

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
- at interface A
-- (int)method;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_left.hpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_left.hpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_left.hpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-int *f0(int*);
-
-#pragma weak weak_identifier // expected-warning{{weak identifier 'weak_identifier' never declared}}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-
- at interface B
-- (double)method;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_right.hpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_right.hpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/lookup_right.hpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-float *f0(float*);
-// expected-no-diagnostics

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-#define MODULE
-#define INTEGER(X) int
-#define FLOAT float
-#define DOUBLE double
-
-#__public_macro INTEGER
-#__private_macro FLOAT
-#__private_macro MODULE
-
-int (INTEGER);
-
-#if !__building_module(macros)
-#  error Can't include this header without building the 'macros' module.
-#endif
-
-#ifdef __MODULE__
-extern int __MODULE__;
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
- at import macros_top;
-#define LEFT unsigned long
-
-#undef TOP_LEFT_UNDEF
-
-
-
-
-#define LEFT_RIGHT_IDENTICAL int
-
-#define LEFT_RIGHT_DIFFERENT2 float
-#define LEFT_RIGHT_DIFFERENT3 float
-
-#define LEFT_RIGHT_DIFFERENT float
-
-#define FN_ADD(a,b) (a+b)

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_other.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_other.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_other.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#define OTHER_INTEGER int

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
- at import macros_top;
-#define RIGHT unsigned short
-
-
-
-
-
-
-
-
-#define LEFT_RIGHT_IDENTICAL int
-#define LEFT_RIGHT_DIFFERENT int
-#define LEFT_RIGHT_DIFFERENT2 int
-#define LEFT_RIGHT_DIFFERENT3 int
-
-#undef TOP_RIGHT_REDEF
-#define TOP_RIGHT_REDEF float
-
-#define FN_ADD(x, y) (x+y)

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_right_undef.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_right_undef.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_right_undef.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#undef TOP_RIGHT_UNDEF

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_top.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_top.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/macros_top.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-#define TOP unsigned int
-
-#define TOP_LEFT_UNDEF 1
-
-
-
-
-
-
-
-#define TOP_RIGHT_REDEF float
-// The last definition will be exported from the sub-module.
-#define TOP_RIGHT_REDEF int
-
-#define TOP_RIGHT_UNDEF int
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,211 +0,0 @@
-module diamond_top { header "diamond_top.h" }
-module diamond_left { 
-  header "diamond_left.h" 
-  export diamond_top
-}
-module diamond_right { 
-  header "diamond_right.h" 
-  export diamond_top
-}
-module diamond_bottom { 
-  header "diamond_bottom.h" 
-  export *
-}
-module irgen { header "irgen.h" }
-module lookup_left_objc { header "lookup_left.h" }
-module lookup_right_objc { header "lookup_right.h" }
-module lookup_left_cxx { header "lookup_left.hpp" }
-module lookup_right_cxx { header "lookup_right.hpp" }
-module module_private_left { header "module_private_left.h" }
-module module_private_right { header "module_private_right.h" }
-module macros_top { 
-  header "macros_top.h" 
-}
-module macros_left { 
-  header "macros_left.h" 
-  export *
-}
-module macros_right { 
-  header "macros_right.h" 
-  export *
-  explicit module undef {
-    header "macros_right_undef.h"
-  }
-}
-module macros { header "macros.h" }
-module category_top { header "category_top.h" }
-module category_left { 
-  header "category_left.h" 
-  export category_top
-
-  explicit module sub {
-    header "category_left_sub.h"
-  }
-}
-module category_right { 
-  header "category_right.h" 
-  export category_top
-
-  explicit module sub {
-    header "category_right_sub.h"
-  }
-}
-module category_bottom { 
-  header "category_bottom.h" 
-  export category_left
-  export category_right
-}
-module category_other { header "category_other.h" }
-module redeclarations_left { header "redeclarations_left.h" }
-module redeclarations_right { header "redeclarations_right.h" }
-module redecl_namespaces_left { header "redecl_namespaces_left.h" }
-module redecl_namespaces_right { header "redecl_namespaces_right.h" }
-module load_failure { header "load_failure.h" }
-
-module decldef {
-  explicit module Decl { header "decl.h" }
-  explicit module Decl2 { header "decl2.h" }
-  explicit module Def { header "def.h" }
-}
-
-module redecl_merge_top { 
-  header "redecl-merge-top.h"
-  explicit module Explicit { header "redecl-merge-top-explicit.h" }
-  exclude header "nonexistent.h"
-}
-module redecl_merge_left { 
-  header "redecl-merge-left.h" 
-  export *
-}
-module redecl_merge_left_left { 
-  header "redecl-merge-left-left.h" 
-  export *
-}
-module redecl_merge_right { 
-  header "redecl-merge-right.h" 
-  export *
-}
-module redecl_merge_bottom { 
-  explicit module prefix {
-    header "redecl-merge-bottom-prefix.h"
-  }
-
-  header "redecl-merge-bottom.h" 
-  export *
-}
-module namespaces_top { 
-  header "namespaces-top.h"
-  export *
-}
-module namespaces_left { 
-  header "namespaces-left.h"
-  export *
-}
-module namespaces_right { 
-  header "namespaces-right.h"
-  export *
-}
-module templates_top { 
-  header "templates-top.h"
-  export *
-}
-module templates_left { 
-  header "templates-left.h"
-  export *
-}
-module templates_right { 
-  header "templates-right.h"
-  export *
-}
-module MethodPoolA {
-  header "MethodPoolA.h"
-
-  explicit module Sub2 {
-    header "MethodPoolASub2.h"
-  }
-
-  explicit module Sub {
-    header "MethodPoolASub.h"
-  }
-}
-module MethodPoolB {
-  header "MethodPoolB.h"
-
-  explicit module Sub {
-    header "MethodPoolBSub.h"
-  }
-}
-module import_decl {
-  header "import-decl.h"
-}
-
-framework module * { 
-  exclude NotAModule
-}
-
-module linkage_merge_left {
-  explicit module sub {
-    header "linkage-merge-sub.h"
-  }
-}
-
-module autolink {
-  header "autolink.h"
-  link "autolink"
-
-  explicit module sub {
-    header "autolink-sub.h"
-    link "autolink_sub"
-  }
-
-  explicit module sub2 {
-    header "autolink-sub2.h"
-    link framework "autolink_framework"
-  }
-}
-
-module weird_objc {
-  header "weird_objc.h"
-}
-
-module ignored_macros {
-  header "ignored_macros.h"
-}
-
-module cxx_many_overloads {
-  header "cxx-many-overloads.h"
-}
-
-module cxx_inline_namespace {
-  header "cxx-inline-namespace.h"
-}
-
-module cxx_linkage_cache {
-  header "cxx-linkage-cache.h"
-}
-
-module config {
-  header "config.h"
-  config_macros [exhaustive] WANT_FOO, WANT_BAR
-}
-
-module diag_pragma {
-  header "diag_pragma.h"
-}
-
-module builtin {
-  header "builtin.h"
-  explicit module sub {
-    header "builtin_sub.h"
-  }
-}
-
-module linkage_merge {
-  explicit module foo {
-    header "linkage-merge-foo.h"
-  }
-  explicit module bar {
-    header "linkage-merge-bar.h"
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module_private_left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module_private_left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module_private_left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-__module_private__ struct HiddenStruct;
-
-__module_private__ struct HiddenStruct {
-};
-
-
-int &f0(int);
-
-template<typename T>
-__module_private__ void f1(T*);
-
-template<typename T>
-__module_private__ void f1(T*);
-
-template<typename T>
-__module_private__ class vector;
-
-template<typename T>
-__module_private__ class vector {
-};
-
-vector<float> vec_float;
-
-typedef __module_private__ int Integer;
-typedef __module_private__ int Integer;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module_private_right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module_private_right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/module_private_right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-__module_private__ double &f0(double);
-__module_private__ double &f0(double);
-
-__module_private__ int hidden_var;
-
-inline void test_f0_in_right() {
-  double &dr = f0(hidden_var);
-}
-
-struct VisibleStruct {
-  __module_private__ int field;
-  __module_private__ virtual void setField(int f);
-};

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
- at import namespaces_top;
-
-float &global(float);
-float &global2(float);
-
-namespace LookupBeforeImport {
-  float &f(float);
-}
-
-namespace N1 { }
-
-namespace N1 { 
-  float& f(float);
-}
-
-namespace N2 { 
-  float& f(float);
-}
-
-
-
-
-
-namespace N5 {
-  int &f(int);
-}
-
-namespace N6 {
-  int &f(int);
-}
-
-namespace N7 {
-  int &f(int);
-}
-
-namespace N8 {
-  int &f(int);
-}
-
-namespace N9 {
-  int &f(int);
-}
-
-namespace N10 {
-  int &f(int);
-}
-
-namespace N11 {
-  namespace {
-    class Foo;
-  }
-  Foo *getFoo();
-}
-
-namespace N12 {
-  namespace {
-    class Foo;
-  }
-  Foo *getFoo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
- at import namespaces_top;
-
-double &global(double);
-double &global2(double);
-
-namespace LookupBeforeImport {
-  double &f(double);
-}
-
-namespace N2 { }
-
-namespace N2 { }
-
-namespace N2 { }
-
-namespace N2 { }
-
-namespace N2 { 
-  double& f(double);
-}
-
-namespace N3 { 
-  double& f(double);
-}
-
-namespace N5 {
-  double &f(double);
-}
-
-namespace N6 {
-  double &f(double);
-}
-
-namespace N7 {
-  double &f(double);
-}
-
-namespace N8 {
-  int &f(int);
-}
-
-namespace N9 {
-  int &f(int);
-}
-
-namespace N10 {
-  int &f(int);
-}
-
-
-
-
-
-
-
-namespace N11 {
-  namespace {
-    class Foo;
-  }
-  void consumeFoo(Foo*);
-}
-
-namespace N12 {
-  namespace {
-    class Foo;
-  }
-  void consumeFoo(Foo*);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-top.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-top.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/namespaces-top.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-namespace N1 { 
-  int& f(int);
-}
-
-namespace N2 { 
-  int& f(int);
-}
-
-namespace N3 { 
-  int& f(int);
-}
-
-namespace N12 { }
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/Umbrella.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/Umbrella.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/Umbrella.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-int umbrella;
-
-#include "umbrella_sub.h"
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-module Umbrella {
-  umbrella header "Umbrella.h"
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/umbrella_sub.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/umbrella_sub.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella/umbrella_sub.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int umbrella_sub;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella2/Umbrella2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella2/Umbrella2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella2/Umbrella2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int umbrella2;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella2/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella2/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/Umbrella2/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-module Umbrella2 {
-  umbrella header "Umbrella2.h"
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/a1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/a1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/a1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int a1;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/a2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/a2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/a2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int a2;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/b1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/b1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/b1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int b1;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-module libA {
-  module a1 { header "a1.h" }
-  header "a2.h"
-}
-
-module libB {
-  header "b1.h"
-}
-
-module nested_umbrella {
-  umbrella "nested_umbrella"
-  module * { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-module libNested {
-  header "nested1.h"
-  header "nested2.h"
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/nested1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/nested1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/nested1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int nested1;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/nested2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/nested2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested/nested2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int nested2;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int one;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/a-extras.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/a-extras.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/a-extras.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int extra_a;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/a.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/a.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/a.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int nested_umbrella_a;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/b.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/b.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/b.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int nested_umbrella_b;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/decltype.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/decltype.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/normal-module-map/nested_umbrella/decltype.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-int decltype_val;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/oldname/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/oldname/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/oldname/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-module NewName {
-  header "new_name.h"
-  export *
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/oldname/new_name.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/oldname/new_name.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/oldname/new_name.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int same_api;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/point.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/point.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/point.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-struct Point { int x, y; };
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-bottom-prefix.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-bottom-prefix.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-bottom-prefix.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// A class that is declared in the 'bottom' module, then loaded from
-// one of the modules it depends on. It needs to be visible when this
-// module is loaded.
- at class DeclaredThenLoaded;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-bottom.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-bottom.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-bottom.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
- at import redecl_merge_left;
-
- at class C4;
- at class C4;
- at protocol P4;
- at protocol P4;
- at protocol P4;
- at import redecl_merge_right;
-
- at class B;
-
- at class A;
-
- at protocol P1;
-
-struct S1;
-struct S3;
-
-void refers_to_C4(C4*);
-
- at interface UnrelatedToDeclaredThenLoaded
-- declaredThenLoadedMethod;
- at end
-
- at class DeclaredThenLoaded;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-left-left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-left-left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-left-left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
- at import redecl_merge_left;
-
- at class C4;
-void accept_a_C4(C4*);
-
- at class ClassWithDef;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,93 +0,0 @@
- at import redecl_merge_top;
-
- at class A;
-
- at class A;
-
- at interface B
-+ (B*) create_a_B;
- at end
-
- at class A;
-
- at protocol P1;
- at protocol P2
-- (void)protoMethod2;
- at end
-
-struct S1;
-struct S2 {
-  int field;
-};
-
-struct S1 *produce_S1(void);
-void consume_S2(struct S2*);
-
-// Test declarations in different modules with no common initial
-// declaration.
- at class C;
-void accept_a_C(C*);
-
- at class C2;
-void accept_a_C2(C2*);
-
- at class C3;
-void accept_a_C3(C3*);
- at class C3;
-
- at class C4;
-
- at class Explicit;
-
-int *explicit_func(void);
-
-struct explicit_struct;
-
- at protocol P3, P4;
-
- at protocol P3;
-
-struct S3;
-struct S3;
-struct S4 {
-  int field;
-};
-
-struct S3 *produce_S3(void);
-void consume_S4(struct S4*);
-
-typedef int T1;
-typedef float T2;
-
-int func0(int);
-int func1(int x) { return x; }
-int func2(int);
-
-
-
-
-
-
-
-
-
-
-// Spacing matters!
-extern int var1;
-extern float var2;
-
-extern double var3;
-
-// Make sure this doesn't introduce an ambiguity-creating 'id' at the
-// top level.
-typedef void funcptr_with_id(int id);
-
-// A class that is declared in the 'bottom' module, then loaded from
-// one of the modules it depends on.
- at interface DeclaredThenLoaded
-- declaredThenLoadedMethod;
- at end
-
- at class DeclaredThenLoaded;
-
-void eventually_noreturn2(void);

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
- at import redecl_merge_top;
-
- at interface Super
- at end
-
- at interface A : Super
-- (Super*)init;
- at end
-
- at class B;
-
- at protocol P1
-- (void)protoMethod1;
- at end
-
- at protocol P1;
-
- at protocol P2;
-
- at protocol P2;
-
- at protocol P2;
-
-struct S1;
-struct S2;
-
-void consume_S1(struct S1*);
-struct S2 *produce_S2(void);
-
-// Test declarations in different modules with no common initial
-// declaration.
- at class C;
-C *get_a_C(void);
- at class C2;
-C2 *get_a_C2(void);
- at class C3;
-C3 *get_a_C3(void);
-
- at class C4;
- at class C4;
- at class C4;
- at class C4;
-C4 *get_a_C4(void);
-
- at class Explicit;
-
-int *explicit_func(void);
-
-struct explicit_struct;
-
- at protocol P4, P3;
- at protocol P3;
- at protocol P3;
- at protocol P3;
-
-struct S3;
-struct S4;
-
-void consume_S3(struct S3*);
-struct S4 *produce_S4(void);
-
-typedef int T1;
-typedef double T2;
-
-int func0(int);
-int func1(int);
-int func1(int);
-int func1(int x) { return x; }
-int func1(int);
-static int func2(int);
-
-
-
-
-// Spacing matters!
-extern int var1;
-extern int var2;
-
-static double var3;
-
-int ONE;
- at import redecl_merge_top.Explicit;
-const int one = ONE;
-
- at interface ClassWithDef 
-- (void)method;
- at end
-
-void eventually_noreturn(void) __attribute__((noreturn));
-void eventually_noreturn2(void) __attribute__((noreturn));

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-top-explicit.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-top-explicit.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-top-explicit.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
- at class Explicit;
-
-int *explicit_func(void);
-
-struct explicit_struct { int member; };
-
-#define ONE 1
-
-typedef struct my_struct_type *my_struct_ref;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-top.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-top.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl-merge-top.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
- at class A;
-
- at class A;
-
- at class A;
-
- at class B;
-
- at protocol P1;
-
- at protocol P2;
- at protocol P2;
-
-struct S1;
-struct S2;
-struct S2;
-
-int func1(int);
-
-void eventually_noreturn(void);

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl_namespaces_left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl_namespaces_left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl_namespaces_left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-namespace A {
-  int i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl_namespaces_right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl_namespaces_right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redecl_namespaces_right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-namespace A {
-  int j;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redeclarations_left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redeclarations_left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redeclarations_left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
- at class NSObject;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redeclarations_right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redeclarations_right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/redeclarations_right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
- at interface NSObject
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/subdir/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/subdir/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/subdir/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-module subdir {
-  header "subdir.h"
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/subdir/subdir.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/subdir/subdir.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/subdir/subdir.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-const char *getSubdir();

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/hash_map.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/hash_map.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/hash_map.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-template<typename Key, typename Data> class hash_map { };
-
-#define HAVE_HASH_MAP
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-module std {
-  module vector { header "vector.h" }
-  module type_traits { header "type_traits.h" }
-  explicit module hash_map { header "hash_map.h" }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/type_traits.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/type_traits.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/type_traits.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-template<typename T>
-struct remove_reference {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_reference<T&> {
-  typedef T type;
-};
-
-#define HAVE_TYPE_TRAITS
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/vector.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/vector.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/submodules/vector.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-template<typename T> class vector { };
-
-#define HAVE_VECTOR

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-left.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-left.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-left.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
- at import templates_top;
-
-template<typename T> class Vector;
-
-template<typename T> class Vector;
-
-template<typename T> class List;
-template<> class List<bool> {
-public:
-  void push_back(int);
-};
-namespace N {
-  template<typename T> class Set;
-}
-namespace N {
-  template<typename T> class Set {
-  public:
-    void insert(T);
-  };
-}
-
-template <typename T>
-void pendingInstantiationEmit(T) {}
-void triggerPendingInstantiation() {
-  pendingInstantiationEmit(12);
-  pendingInstantiationEmit(42.);
-}
-
-void redeclDefinitionEmit(){}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-right.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-right.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-right.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
- at import templates_top;
-
-template<typename T> class Vector { 
-public:
-  void push_back(const T&);
-};
-
-template<typename T> class List;
-template<> class List<bool> {
-public:
-  void push_back(int);
-};
-
-namespace N {
-  template<typename T> class Set {
-  public:
-    void insert(T);
-  };
-}
-
-template <typename T>
-void pendingInstantiationEmit(T) {}
-void triggerPendingInstantiationToo() {
-  pendingInstantiationEmit(12);
-}
-
-void redeclDefinitionEmit(){}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-top.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-top.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/templates-top.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-template<typename T> class Vector;
-
-template<typename T> class List {
-public:
-  void push_back(T);
-};
-
-namespace A {
-  class Y {
-    template <typename T> friend class WhereAmI;
-  };
-}
-
-template <typename T> class A::WhereAmI {
-public:
-  static void func() {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/weird_objc.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/weird_objc.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/weird_objc.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-typedef struct objc_object { void *super; int wibble; } *id;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/A_one.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/A_one.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/A_one.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int *A1;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/A_two.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/A_two.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/A_two.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-unsigned int *A2;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/B_one.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/B_one.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/B_one.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-short *B1;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/B_two.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/B_two.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/B_two.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-unsigned short *B2;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/C_one.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/C_one.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/C_one.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
- at import A.One;
- at import B.One;
-
-long *C1;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/C_two.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/C_two.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/C_two.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
- at import A.Two;
- at import B.Two;
-
-unsigned long *C2;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/Inputs/wildcard-submodule-exports/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-module A {
-  module One { header "A_one.h" }
-  module Two { header "A_two.h" }
-}
-
-module B {
-  module One { header "B_one.h" }
-  module Two { header "B_two.h" }
-}
-
-module C {
-  module One { 
-    header "C_one.h" 
-    export A.*
-  }
-  module Two { 
-    header "C_two.h"
-    export * 
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/auto-module-import.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/auto-module-import.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/auto-module-import.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fmodules -F %S/Inputs %s -verify
-
-#include <DependsOnModule/DependsOnModule.h> // expected-warning{{treating #include as an import of module 'DependsOnModule'}}
-
-// expected-note at Inputs/NoUmbrella.framework/PrivateHeaders/A_Private.h:1{{'no_umbrella_A_private' declared here}}
-
-#ifdef MODULE_H_MACRO
-#  error MODULE_H_MACRO should have been hidden
-#endif
-
-#ifdef DEPENDS_ON_MODULE
-#  error DEPENDS_ON_MODULE should have been hidden
-#endif
-
-Module *mod; // expected-error{{unknown type name 'Module'}}
-
-#import <AlsoDependsOnModule/AlsoDependsOnModule.h> // expected-warning{{treating #import as an import of module 'AlsoDependsOnModule'}}
-Module *mod2;
-
-int getDependsOther() { return depends_on_module_other; }
-
-void testSubframeworkOther() {
-  double *sfo1 = sub_framework_other; // expected-error{{use of undeclared identifier 'sub_framework_other'}}
-}
-
-// Test umbrella-less submodule includes
-#include <NoUmbrella/A.h> // expected-warning{{treating #include as an import of module 'NoUmbrella.A'}}
-int getNoUmbrellaA() { return no_umbrella_A; } 
-
-// Test umbrella-less submodule includes
-#include <NoUmbrella/SubDir/C.h> // expected-warning{{treating #include as an import of module 'NoUmbrella.SubDir.C'}}
-int getNoUmbrellaC() { return no_umbrella_C; } 
-
-// Test header cross-subframework include pattern.
-#include <DependsOnModule/../Frameworks/SubFramework.framework/Headers/Other.h> // expected-warning{{treating #include as an import of module 'DependsOnModule.SubFramework.Other'}}
-
-void testSubframeworkOtherAgain() {
-  double *sfo1 = sub_framework_other;
-}
-
-void testModuleSubFramework() {
-  char *msf = module_subframework;
-}
-
-#include <Module/../Frameworks/SubFramework.framework/Headers/SubFramework.h> // expected-warning{{treating #include as an import of module 'Module.SubFramework'}}
-
-void testModuleSubFrameworkAgain() {
-  char *msf = module_subframework;
-}
-
-// Test inclusion of private headers.
-#include <DependsOnModule/DependsOnModulePrivate.h> // expected-warning{{treating #include as an import of module 'DependsOnModule.Private.DependsOnModule'}}
-
-int getDependsOnModulePrivate() { return depends_on_module_private; }
-
-#include <Module/ModulePrivate.h> // includes the header
-
-int getModulePrivate() { return module_private; }
-
-#include <NoUmbrella/A_Private.h> // expected-warning{{treating #include as an import of module 'NoUmbrella.Private.A_Private'}}
-int getNoUmbrellaAPrivate() { return no_umbrella_A_private; }
-
-int getNoUmbrellaBPrivateFail() { return no_umbrella_B_private; } // expected-error{{use of undeclared identifier 'no_umbrella_B_private'; did you mean 'no_umbrella_A_private'?}}
-
-// Test inclusion of headers that are under an umbrella directory but
-// not actually part of the module.
-#include <Module/NotInModule.h> // expected-warning{{treating #include as an import of module 'Module.NotInModule'}} \
-  // expected-warning{{missing submodule 'Module.NotInModule'}}
-
-int getNotInModule() {
-  return not_in_module;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/autolink.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/autolink.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/autolink.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -emit-llvm -o - -fmodules-cache-path=%t -fmodules -F %S/Inputs -I %S/Inputs %s | FileCheck %s
-// RUN: %clang_cc1 -emit-llvm -fno-autolink -o - -fmodules-cache-path=%t -fmodules -F %S/Inputs -I %S/Inputs %s | FileCheck --check-prefix=CHECK-AUTOLINK-DISABLED %s
-
- at import autolink.sub2;
-
-int f() {
-  return autolink_sub2();
-}
-
- at import autolink;
-
-int g() {
-  return autolink;
-}
-
- at import Module.SubFramework;
-const char *get_module_subframework() {
-  return module_subframework;
-}
-
- at import DependsOnModule.SubFramework;
-float *get_module_subframework_dep() {
-  return sub_framework;
-}
-
- at import NoUmbrella;
-int use_no_umbrella() {
-  return no_umbrella_A;
-}
-
-// NOTE: "autolink_sub" is intentionally not linked.
-
-// CHECK: !llvm.module.flags = !{!0, !1, !2, !3, !4}
-// CHECK: !4 = metadata !{i32 6, metadata !"Linker Options", metadata ![[AUTOLINK_OPTIONS:[0-9]+]]}
-// CHECK: ![[AUTOLINK_OPTIONS]] = metadata !{metadata ![[AUTOLINK_FRAMEWORK:[0-9]+]], metadata ![[AUTOLINK:[0-9]+]], metadata ![[DEPENDSONMODULE:[0-9]+]], metadata ![[MODULE:[0-9]+]], metadata ![[NOUMBRELLA:[0-9]+]]}
-// CHECK: ![[AUTOLINK_FRAMEWORK]] = metadata !{metadata !"-framework", metadata !"autolink_framework"}
-// CHECK: ![[AUTOLINK]] = metadata !{metadata !"-lautolink"}
-// CHECK: ![[DEPENDSONMODULE]] = metadata !{metadata !"-framework", metadata !"DependsOnModule"}
-// CHECK: ![[MODULE]] = metadata !{metadata !"-framework", metadata !"Module"}
-// CHECK: ![[NOUMBRELLA]] = metadata !{metadata !"-framework", metadata !"NoUmbrella"}
-
-// CHECK-AUTOLINK-DISABLED: !llvm.module.flags
-// CHECK-AUTOLINK-DISABLED-NOT: "Linker Options"

Modified: trunk/contrib/llvm/tools/clang/test/Modules/build-fail-notes.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/build-fail-notes.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/build-fail-notes.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -F %S/Inputs -DgetModuleVersion="epic fail" %s 2>&1 | FileCheck %s
-
- at import DependsOnModule;
-
-// CHECK: While building module 'DependsOnModule' imported from
-// CHECK: While building module 'Module' imported from
-// CHECK: error: expected ';' after top level declarator
-// CHECK: note: expanded from here
-// CHECK: fatal error: could not build module 'Module'
-// CHECK: fatal error: could not build module 'DependsOnModule'
-// CHECK-NOT: error:
-
-// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -F %S/Inputs %s -fdiagnostics-show-note-include-stack 2>&1 | FileCheck -check-prefix=CHECK-REDEF %s
-extern int Module;
-
-// CHECK-REDEF: In module 'DependsOnModule' imported from
-// CHECK-REDEF: In module 'Module' imported from
-// CHECK-REDEF: Module.h:15:12: note: previous definition is here
-
-// RUN: not %clang_cc1 -fmodules-cache-path=%t -fmodules -F %S/Inputs -DgetModuleVersion="epic fail" -serialize-diagnostic-file %t/tmp.diag %s 2>&1
-// RUN: c-index-test -read-diagnostics %t/tmp.diag 2>&1 | FileCheck -check-prefix=CHECK-SDIAG %s
-
-// CHECK-SDIAG: Module.h:9:13: error: expected ';' after top level declarator
-// CHECK-SDIAG: build-fail-notes.m:4:9: note: while building module 'DependsOnModule' imported from
-// CHECK-SDIAG: DependsOnModule.h:1:10: note: while building module 'Module' imported from
-// CHECK-SDIAG: note: expanded from here
-// CHECK-SDIAG: warning: umbrella header for module 'Module' does not include header 'NotInModule.h' [-Wincomplete-umbrella]
-// CHECK-SDIAG: DependsOnModule.h:1:10: fatal: could not build module 'Module'
-// CHECK-SDIAG: build-fail-notes.m:4:9: note: while building module 'DependsOnModule' imported from
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/builtins.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/builtins.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/builtins.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
- at import builtin;
-
-int foo() {
-  return __builtin_object_size(p, 0);
-}
-
- at import builtin.sub;
-
-int bar() {
-  return __builtin_object_size(p, 0);
-}
-
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -I %S/Inputs %s -verify
-// expected-no-diagnostics

Modified: trunk/contrib/llvm/tools/clang/test/Modules/compiler_builtins.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/compiler_builtins.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/compiler_builtins.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang -fsyntax-only -fmodules -fmodules-cache-path=%t -D__need_wint_t %s -Xclang -verify
-// RUN: %clang -fsyntax-only -std=c99 -fmodules -fmodules-cache-path=%t -D__need_wint_t %s -Xclang -verify
-// expected-no-diagnostics
-
-#ifdef __SSE__
- at import _Builtin_intrinsics.intel.sse;
-#endif
-
-#ifdef __AVX2__
- at import _Builtin_intrinsics.intel.avx2;
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Modules/config_macros.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/config_macros.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/config_macros.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
- at import config;
-
-int *test_foo() {
-  return foo();
-}
-
-char *test_bar() {
-  return bar(); // expected-warning{{implicit declaration of function 'bar' is invalid in C99}} \
-                // expected-warning{{incompatible integer to pointer conversion}}
-}
-
-#undef WANT_FOO // expected-note{{macro was #undef'd here}}
- at import config; // expected-warning{{#undef of configuration macro 'WANT_FOO' has no effect on the import of 'config'; pass '-UWANT_FOO' on the command line to configure the module}}
-
-#define WANT_FOO 2 // expected-note{{macro was defined here}}
- at import config; // expected-warning{{definition of configuration macro 'WANT_FOO' has no effect on the import of 'config'; pass '-DWANT_FOO=...' on the command line to configure the module}}
-
-#undef WANT_FOO
-#define WANT_FOO 1
- at import config; // okay
-
-#define WANT_BAR 1 // expected-note{{macro was defined here}}
- at import config; // expected-warning{{definition of configuration macro 'WANT_BAR' has no effect on the import of 'config'; pass '-DWANT_BAR=...' on the command line to configure the module}}
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -DWANT_FOO=1 -emit-module -fmodule-name=config %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -DWANT_FOO=1 %s -verify
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/conflicts.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/conflicts.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/conflicts.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fmodules -I %S/Inputs/Conflicts %s -verify
-
- at import Conflicts;
-
- at import Conflicts.A; // expected-warning{{module 'Conflicts.A' conflicts with already-imported module 'Conflicts.B': we just don't like B}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/cstd.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/cstd.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/cstd.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang -fsyntax-only -isystem %S/Inputs/System/usr/include -fmodules -fmodules-cache-path=%t -D__need_wint_t -Werror=implicit-function-declaration %s
-
- at import uses_other_constants;
-const double other_value = DBL_MAX;
-
-// Supplied by compiler, but referenced from the "/usr/include" module map.
- at import cstd.float_constants;
-
-float getFltMax() { return FLT_MAX; }
-
-// Supplied by the "/usr/include" module map.
- at import cstd.stdio;
-
-void test_fprintf(FILE *file) {
-  fprintf(file, "Hello, modules\n");
-}
-
-// Supplied by compiler, which forwards to the "/usr/include" version.
- at import cstd.stdint;
-
-my_awesome_nonstandard_integer_type value2;
-
-// Supplied by the compiler; that version wins.
- at import cstd.stdbool;
-
-#ifndef bool
-#  error "bool was not defined!"
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/cxx-inline-namespace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/cxx-inline-namespace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/cxx-inline-namespace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs %s -verify -std=c++11
-
- at import cxx_inline_namespace;
-
-T x; // expected-error {{unknown type name 'T'}}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/cxx-linkage-cache.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/cxx-linkage-cache.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/cxx-linkage-cache.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs %s -verify -std=c++11
-
- at import cxx_linkage_cache;
-
-T x; // expected-error {{unknown type name 'T'}}
-D::U<int> u;
-bool b = f(u);

Modified: trunk/contrib/llvm/tools/clang/test/Modules/cxx-many-overloads.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/cxx-many-overloads.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/cxx-many-overloads.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs %s -verify
-
-// expected-no-diagnostics
- at import cxx_many_overloads;
-
-void g() {
-  f(N::X<0>());
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/cycles.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/cycles.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/cycles.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -F %S/Inputs %s 2>&1 | FileCheck %s
-// FIXME: When we have a syntax for modules in C, use that.
- at import MutuallyRecursive1;
-
-// CHECK: While building module 'MutuallyRecursive1' imported from
-// CHECK: While building module 'MutuallyRecursive2' imported from
-// CHECK: MutuallyRecursive2.h:3:9: fatal error: cyclic dependency in module 'MutuallyRecursive1': MutuallyRecursive1 -> MutuallyRecursive2 -> MutuallyRecursive1
-// CHECK: MutuallyRecursive1.h:2:9: fatal error: could not build module 'MutuallyRecursive2'
-// CHECK: cycles.c:4:9: fatal error: could not build module 'MutuallyRecursive1'
-// CHECK: 3 errors generated
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/decldef.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/decldef.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/decldef.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify
-
-// expected-note at Inputs/def.h:5 {{previous definition is here}}
-
- at class Def;
-Def *def;
-
- at import decldef;
-A *a1; // expected-error{{unknown type name 'A'}}
-B *b1; // expected-error{{must use 'struct' tag to refer to type 'B'}}
- at import decldef.Decl;
-
-A *a2;
-struct B *b;
-
-void testA(A *a) {
-  a->ivar = 17; // expected-error{{definition of 'A' must be imported from module 'decldef.Def' before it is required}}
-}
-
-void testB() {
-  B b; // Note: redundant error silenced
-}
-
-void testDef() {
-  [def defMethod];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/decldef.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/decldef.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/decldef.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify
-
-// expected-note at Inputs/def.h:5 {{previous definition is here}}
-
- at class Def;
-Def *def;
-class Def2;
-Def2 *def2;
-
- at interface Unrelated
-- defMethod;
- at end
-
- at import decldef;
-A *a1; // expected-error{{unknown type name 'A'}}
-B *b1; // expected-error{{unknown type name 'B'}}
- at import decldef.Decl;
-
-A *a2;
-B *b;
-
-void testA(A *a) {
-  a->ivar = 17; // expected-error{{definition of 'A' must be imported from module 'decldef.Def' before it is required}}
-}
-
-void testB() {
-  B b; // Note: redundant error silenced
-}
-
-void testDef() {
-  [def defMethod];
-}
-
-void testDef2() {
-  def2->func();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/diag-pragma.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/diag-pragma.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/diag-pragma.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diag_pragma %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -verify -fmodules-cache-path=%t %s
-// FIXME: When we have a syntax for modules in C, use that.
-
- at import diag_pragma;
-
-int foo(int x) {
-  if (x = DIAG_PRAGMA_MACRO) // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                             // expected-note {{place parentheses}} expected-note {{use '=='}}
-    return 0;
-  return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/diamond-pch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/diamond-pch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/diamond-pch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diamond_top %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diamond_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diamond_right %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diamond_bottom %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-pch -fmodules-cache-path=%t -o %t.pch %S/Inputs/diamond.h
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -include-pch %t.pch %s -verify
-// FIXME: When we have a syntax for modules in C, use that.
-
-void test_diamond(int i, float f, double d, char c) {
-  top(&i);
-  left(&f);
-  right(&d);
-  bottom(&c);
-  bottom(&d);
-  // expected-warning at -1{{incompatible pointer types passing 'double *' to parameter of type 'char *'}}
-  // expected-note at Inputs/diamond_bottom.h:4{{passing argument to parameter 'x' here}}
-
-  // Names in multiple places in the diamond.
-  top_left(&c);
-
-  left_and_right(&i);
-  struct left_and_right lr;
-  lr.left = 17;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/diamond.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/diamond.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/diamond.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diamond_top %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diamond_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diamond_right %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=diamond_bottom %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t %s -verify
-// FIXME: When we have a syntax for modules in C, use that.
-
- at import diamond_bottom;
-
-void test_diamond(int i, float f, double d, char c) {
-  top(&i);
-  left(&f);
-  right(&d);
-  bottom(&c);
-  bottom(&d);
-  // expected-warning at -1{{incompatible pointer types passing 'double *' to parameter of type 'char *'}}
-  // expected-note at Inputs/diamond_bottom.h:4{{passing argument to parameter 'x' here}}
-
-  // Names in multiple places in the diamond.
-  top_left(&c);
-
-  left_and_right(&i);
-  struct left_and_right lr;
-  lr.left = 17;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/direct-module-import.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/direct-module-import.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/direct-module-import.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -F %S/Inputs -include Module/Module.h %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: call i8* @getModuleVersion
-const char* getVer(void) {
-  return getModuleVersion();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/driver.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/driver.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/driver.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang -fmodules %s -### 2>&1 | FileCheck -check-prefix NO_MODULE_CACHE %s
-// RUN: %clang -fmodules -fmodules-cache-path=blarg %s -### 2>&1 | FileCheck -check-prefix WITH_MODULE_CACHE %s
-
-// CHECK-NO_MODULE_CACHE: {{clang.*"-fmodules-cache-path=.*ModuleCache"}}
-
-// CHECK-WITH_MODULE_CACHE: {{clang.*"-fmodules-cache-path=blarg"}}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/epic-fail.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/epic-fail.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/epic-fail.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -F %S/Inputs -DgetModuleVersion="epic fail" %s 2>&1 | FileCheck %s
-
- at import Module;
- at import DependsOnModule;
-
-// CHECK: While building module 'Module' imported from
-// CHECK: error: expected ';' after top level declarator
-// CHECK: note: expanded from here
-// CHECK: fatal error: could not build module 'Module'
-// CHECK: While building module 'DependsOnModule' imported from
-// CHECK: fatal error: could not build module 'Module'
-// CHECK-NOT: error:

Modified: trunk/contrib/llvm/tools/clang/test/Modules/global_index.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/global_index.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/global_index.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: rm -rf %t
-// Run without global module index
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fdisable-module-hash -fmodules -fno-modules-global-index -F %S/Inputs %s -verify
-// RUN: ls %t|not grep modules.idx
-// Run and create the global module index
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fdisable-module-hash -fmodules -F %S/Inputs %s -verify
-// RUN: ls %t|grep modules.idx
-// Run and use the global module index
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fdisable-module-hash -fmodules -F %S/Inputs %s -verify -print-stats 2>&1 | FileCheck %s
-
-// expected-no-diagnostics
- at import DependsOnModule;
- at import Module;
-
-// CHECK: *** Global Module Index Statistics:
-
-int *get_sub() {
-  return Module_Sub;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/header-import.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/header-import.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/header-import.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -F %S/Inputs -I %S/Inputs -verify %s
-// expected-no-diagnostics
-
-#import "point.h"
- at import Module;
-#import "point.h"
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/ignored_macros.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/ignored_macros.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/ignored_macros.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// First trial: pass -DIGNORED=1 to both. This should obviously work.
-// RUN: rm -rf %t.modules
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -DIGNORED=1 -fmodules -I %S/Inputs -emit-pch -o %t.pch -x objective-c-header %s -verify
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -DIGNORED=1 -fmodules -I %S/Inputs -include-pch %t.pch %s -verify
-
-// Second trial: pass -DIGNORED=1 only to the second invocation. We
-// should detect the failure.
-//
-// RUN: rm -rf %t.modules
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -fmodules -I %S/Inputs -emit-pch -o %t.pch -x objective-c-header %s -verify
-// RUN: not %clang_cc1 -fmodules-cache-path=%t.modules -DIGNORED=1 -fmodules -I %S/Inputs -include-pch %t.pch %s > %t.err 2>&1
-// RUN: FileCheck -check-prefix=CHECK-CONFLICT %s < %t.err
-// CHECK-CONFLICT: module 'ignored_macros' found in both
-
-// Third trial: pass -DIGNORED=1 only to the second invocation, but
-// make it ignored. There should be no failure, IGNORED is defined in
-// the translation unit but not the module.
-// RUN: rm -rf %t.modules
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -fmodules -I %S/Inputs -emit-pch -o %t.pch -x objective-c-header %s -verify
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -DIGNORED=1 -fmodules -I %S/Inputs -include-pch %t.pch -fmodules-ignore-macro=IGNORED %s -verify
-
-// Fourth trial: pass -DIGNORED=1 and -fmodules-ignore-macro=IGNORED
-// to both invocations, so modules will be built without the IGNORED
-// macro.
-// RUN: rm -rf %t.modules
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -DIGNORED=1 -fmodules-ignore-macro=IGNORED -fmodules -I %S/Inputs -emit-pch -o %t.pch -x objective-c-header %s -verify
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -DIGNORED=1 -fmodules -I %S/Inputs -include-pch %t.pch -fmodules-ignore-macro=IGNORED -DNO_IGNORED_ANYWHERE -fmodules-ignore-macro=NO_IGNORED_ANYWHERE %s -verify
-
-// Fifth trial: pass -DIGNORED=1 and -fmodules-ignore-macro=IGNORED=1
-// to both invocations, so modules will be built without the IGNORED
-// macro.
-// RUN: rm -rf %t.modules
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -DIGNORED=1 -fmodules-ignore-macro=IGNORED=1 -fmodules -I %S/Inputs -emit-pch -o %t.pch -x objective-c-header %s -verify
-// RUN: %clang_cc1 -fmodules-cache-path=%t.modules -DIGNORED=1 -fmodules -I %S/Inputs -include-pch %t.pch -fmodules-ignore-macro=IGNORED=1 -DNO_IGNORED_ANYWHERE -fmodules-ignore-macro=NO_IGNORED_ANYWHERE %s -verify
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
- at import ignored_macros;
-#endif
-
- at import ignored_macros;
-
-struct Point p;
-
-#ifdef NO_IGNORED_ANYWHERE
-void *has_ignored(int, int, int);
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Modules/import-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/import-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/import-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang -fmodules-cache-path=%t -fmodules -x objective-c -I %S/Inputs -emit-ast -o %t.ast %s
-// RUN: %clang_cc1 -ast-print -x ast - < %t.ast | FileCheck %s
-
- at import import_decl;
-// CHECK: struct T
-
-int main() {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/inferred-frameworks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/inferred-frameworks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/inferred-frameworks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c -Wauto-import -fmodules-cache-path=%t -fmodules -F %S/Inputs %s -verify
-
-#include <NotAModule/NotAModule.h>
-
- at import NotAModule; // expected-error{{module 'NotAModule' not found}}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/inferred-submodules.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/inferred-submodules.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/inferred-submodules.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c -Wauto-import -fmodules-cache-path=%t -fmodules -F %S/Inputs %s -verify
-// expected-no-diagnostics
-
- at import Module.Sub;
-
-void test_Module_Sub() {
-  int *ip = Module_Sub;
-}
-
- at import Module.Buried.Treasure;
-
-void dig() {
-  unsigned *up = Buried_Treasure;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/irgen.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/irgen.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/irgen.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -emit-module -fmodule-name=irgen -triple x86_64-apple-darwin10 %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
-// FIXME: When we have a syntax for modules in C, use that.
-
- at import irgen;
-
-// CHECK: define void @triple_value
-void triple_value(int *px) {
-  *px = triple(*px);
-}
-
-// CHECK: define internal i32 @triple(i32

Modified: trunk/contrib/llvm/tools/clang/test/Modules/linkage-merge.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/linkage-merge.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/linkage-merge.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -verify -fmodules -fmodules-cache-path=%t -I %S/Inputs %s
-
-#include "linkage-merge-bar.h"
-
-static int f(int);
-int f(int);
-
-static void g(int);
-// expected-error at -1 {{declaration conflicts with target of using declaration already in scope}}
-// expected-note at Inputs/linkage-merge-foo.h:2 {{target of using declaration}}
-// expected-note at Inputs/linkage-merge-bar.h:3 {{using declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/linkage-merge.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/linkage-merge.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/linkage-merge.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -emit-module -fmodule-name=linkage_merge_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -w %s -verify
-
-// Test redeclarations of functions where the original declaration is
-// still hidden.
-
- at import linkage_merge_left; // excludes "sub"
-
-extern int f0(float);
-// expected-error at -1{{conflicting types for 'f0'}}
-// expected-note at Inputs/linkage-merge-sub.h:1{{previous declaration}}
-
-static int f1(float); // okay: considered distinct
-static int f2(float); // okay: considered distinct
-extern int f3(float); // okay: considered distinct
-
-extern float v0;
-// expected-error at -1{{redefinition of 'v0' with a different type: 'float' vs 'int'}}
-// expected-note at Inputs/linkage-merge-sub.h:6{{previous definition is here}}
-
-static float v1;
-static float v2;
-extern float v3;
-
-typedef float T0;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/load_failure.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/load_failure.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/load_failure.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-#ifdef NONEXISTENT
- at import load_nonexistent;
-#endif
-
-#ifdef FAILURE
- at import load_failure;
-#endif
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodules-cache-path=%t -fdisable-module-hash -emit-module -fmodule-name=load_failure %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -fdisable-module-hash %s -DNONEXISTENT 2>&1 | FileCheck -check-prefix=CHECK-NONEXISTENT %s
-// CHECK-NONEXISTENT: load_failure.c:2:9: fatal error: module 'load_nonexistent' not found
-
-// RUN: not %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -fdisable-module-hash %s -DFAILURE 2> %t.out
-// RUN: FileCheck -check-prefix=CHECK-FAILURE %s < %t.out
-
-// FIXME: Clean up diagnostic text below and give it a location
-// CHECK-FAILURE: error: C99 was disabled in PCH file but is currently enabled
-// FIXME: When we have a syntax for modules in C, use that.
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/lookup.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/lookup.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/lookup.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-
-#define import @import
-import lookup_left_cxx;
-#undef import
-#define IMPORT(X) @import X
-IMPORT(lookup_right_cxx);
-
-// expected-warning at Inputs/lookup_left.hpp:3 {{weak identifier 'weak_identifier' never declared}}
-
-void test(int i, float f) {
-  // unqualified lookup
-  f0(&i);
-  f0(&f);
-
-  // qualified lookup into the translation unit
-  ::f0(&i);
-  ::f0(&f);
-}
-
-int import;
-
-void f() {
- int import;
-}
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c++ -emit-module -fmodules-cache-path=%t -fmodule-name=lookup_left_cxx %S/Inputs/module.map -verify
-// RUN: %clang_cc1 -fmodules -x objective-c++ -emit-module -fmodules-cache-path=%t -fmodule-name=lookup_right_cxx %S/Inputs/module.map -verify
-// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodules-cache-path=%t %s -verify
-// RUN: %clang_cc1 -fmodules -ast-print -x objective-c++ -fmodules-cache-path=%t %s | FileCheck -check-prefix=CHECK-PRINT %s
-// FIXME: When we have a syntax for modules in C++, use that.
-
-// CHECK-PRINT: int *f0(int *);
-// CHECK-PRINT: float *f0(float *);
-// CHECK-PRINT: void test(int i, float f)
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -emit-module -x objective-c -fmodule-name=lookup_left_objc %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -emit-module -x objective-c -fmodule-name=lookup_right_objc %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -verify %s
-// RUN: %clang_cc1 -fmodules -ast-print -x objective-c -fmodules-cache-path=%t %s | FileCheck -check-prefix=CHECK-PRINT %s
-
- at import lookup_left_objc;
- at import lookup_right_objc;
-
-void test(id x) {
-  [x method];
-// expected-warning at -1{{multiple methods named 'method' found}}
-// expected-note at Inputs/lookup_left.h:2{{using}}
-// expected-note at Inputs/lookup_right.h:3{{also found}}
-}
-
-// CHECK-PRINT: - (int) method;
-// CHECK-PRINT: - (double) method
-// CHECK-PRINT: void test(id x)
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,139 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=macros_top %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=macros_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=macros_right %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodules-cache-path=%t -fmodule-name=macros %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -verify -fmodules-cache-path=%t %s
-// RUN: %clang_cc1 -E -fmodules -x objective-c -fmodules-cache-path=%t %s | FileCheck -check-prefix CHECK-PREPROCESSED %s
-// FIXME: When we have a syntax for modules in C, use that.
-// These notes come from headers in modules, and are bogus.
-
-// FIXME: expected-note at Inputs/macros_left.h:11{{previous definition is here}}
-// FIXME: expected-note at Inputs/macros_right.h:12{{previous definition is here}}
-// expected-note at Inputs/macros_right.h:12{{expanding this definition of 'LEFT_RIGHT_DIFFERENT'}}
-// expected-note at Inputs/macros_top.h:13{{other definition of 'TOP_RIGHT_REDEF'}}
-// expected-note at Inputs/macros_right.h:13{{expanding this definition of 'LEFT_RIGHT_DIFFERENT2'}}
-// expected-note at Inputs/macros_left.h:14{{other definition of 'LEFT_RIGHT_DIFFERENT'}}
-// expected-note at Inputs/macros_right.h:17{{expanding this definition of 'TOP_RIGHT_REDEF'}}
-
- at import macros;
-
-#ifndef INTEGER
-#  error INTEGER macro should be visible
-#endif
-
-#ifdef FLOAT
-#  error FLOAT macro should not be visible
-#endif
-
-#ifdef MODULE
-#  error MODULE macro should not be visible
-#endif
-
-// CHECK-PREPROCESSED: double d
-double d;
-DOUBLE *dp = &d;
-
-#__public_macro WIBBLE // expected-error{{no macro named 'WIBBLE'}}
-
-void f() {
-  // CHECK-PREPROCESSED: int i = INTEGER;
-  int i = INTEGER; // the value was exported, the macro was not.
-  i += macros; // expanded from __MODULE__ within the 'macros' module.
-}
-
-#ifdef __MODULE__
-# error Not building a module!
-#endif
-
-#if __building_module(macros)
-# error Not building a module
-#endif
-
-// None of the modules we depend on have been imported, and therefore
-// their macros should not be visible.
-#ifdef LEFT
-#  error LEFT should not be visible
-#endif
-
-#ifdef RIGHT
-#  error RIGHT should not be visible
-#endif
-
-#ifdef TOP
-#  error TOP should not be visible
-#endif
-
-// Import left module (which also imports top)
- at import macros_left;
-
-#ifndef LEFT
-#  error LEFT should be visible
-#endif
-
-#ifdef RIGHT
-#  error RIGHT should not be visible
-#endif
-
-#ifndef TOP
-#  error TOP should be visible
-#endif
-
-#ifndef TOP_LEFT_UNDEF
-#  error TOP_LEFT_UNDEF should still be defined
-#endif
-
-void test1() {
-  int i;
-  TOP_RIGHT_REDEF *ip = &i;
-}
-
-#define LEFT_RIGHT_DIFFERENT2 double // FIXME: expected-warning{{'LEFT_RIGHT_DIFFERENT2' macro redefined}} \
-                                     // expected-note{{other definition of 'LEFT_RIGHT_DIFFERENT2'}}
-
-// Import right module (which also imports top)
- at import macros_right;
-
-#undef LEFT_RIGHT_DIFFERENT3
-
-#ifndef LEFT
-#  error LEFT should be visible
-#endif
-
-#ifndef RIGHT
-#  error RIGHT should be visible
-#endif
-
-#ifndef TOP
-#  error TOP should be visible
-#endif
-
-void test2() {
-  int i;
-  float f;
-  double d;
-  TOP_RIGHT_REDEF *fp = &f; // expected-warning{{ambiguous expansion of macro 'TOP_RIGHT_REDEF'}}
-  
-  LEFT_RIGHT_IDENTICAL *ip = &i;
-  LEFT_RIGHT_DIFFERENT *ip2 = &i; // expected-warning{{ambiguous expansion of macro 'LEFT_RIGHT_DIFFERENT'}}
-  LEFT_RIGHT_DIFFERENT2 *ip3 = &i; // expected-warning{{ambiguous expansion of macro 'LEFT_RIGHT_DIFFERENT2}}
-  int LEFT_RIGHT_DIFFERENT3;
-}
-
-#define LEFT_RIGHT_DIFFERENT double // FIXME: expected-warning{{'LEFT_RIGHT_DIFFERENT' macro redefined}}
-
-void test3() {
-  double d;
-  LEFT_RIGHT_DIFFERENT *dp = &d; // okay
-  int x = FN_ADD(1,2);
-}
-
-#ifndef TOP_RIGHT_UNDEF
-#  error TOP_RIGHT_UNDEF should still be defined
-#endif
-
- at import macros_right.undef;
-
-#ifndef TOP_RIGHT_UNDEF
-# error TOP_RIGHT_UNDEF should still be defined
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Modules/method_pool.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/method_pool.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/method_pool.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -I %S/Inputs %s -verify
-
-
- at import MethodPoolA;
-
- at interface D
-- (void)method5:(D*)obj;
- at end
-
-// expected-note at Inputs/MethodPoolA.h:7{{using}}
-// expected-note at Inputs/MethodPoolB.h:12{{also found}}
-
-void testMethod1(id object) {
-  [object method1]; 
-}
-
-void testMethod2(id object) {
-  [object method2:1];
-} 
-
-void testMethod4(id object) {
-  [object method4]; // expected-warning{{instance method '-method4' not found (return type defaults to 'id')}}
-} 
-
-void testMethod5(id object, D* d) {
-  [object method5:d];
-}
-
- at import MethodPoolB;
-
-void testMethod1Again(id object) {
-  [object method1];
-}
-
-void testMethod2Again(id object) {
-  [object method2:1]; // expected-warning{{multiple methods named 'method2:' found}}
-}
-
-void testMethod3(id object) {
-  [object method3]; // expected-warning{{instance method '-method3' not found (return type defaults to 'id')}}
-}
-
- at import MethodPoolB.Sub;
-
-void testMethod3Again(id object) {
-  char *str = [object method3]; // okay: only found in MethodPoolB.Sub
-}
-
- at import MethodPoolA.Sub;
-
-void testMethod3AgainAgain(id object) {
-  [object method3]; // expected-warning{{multiple methods named 'method3' found}}
-  // expected-note at Inputs/MethodPoolBSub.h:2{{using}}
-  // expected-note at Inputs/MethodPoolASub.h:2{{also found}}
-}
-
-void testMethod4Again(id object) {
-  [object method4];
-} 
-
-void testMethod5Again(id object, D* d) {
-  [object method5:d];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/modify-module.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/modify-module.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/modify-module.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// Test that if we modify one of the input files used to form a
-// header, that module and dependent modules get rebuilt.
-
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/include
-// RUN: cp %S/Inputs/Modified/A.h %t/include
-// RUN: cp %S/Inputs/Modified/B.h %t/include
-// RUN: cp %S/Inputs/Modified/module.map %t/include
-// RUN: %clang_cc1 -fdisable-module-hash -fmodules-cache-path=%t/cache -fmodules -I %t/include %s -verify
-// RUN: echo '' >> %t/include/B.h
-// RUN: %clang_cc1 -fdisable-module-hash -fmodules-cache-path=%t/cache -fmodules -I %t/include %s -verify
-// RUN: echo 'int getA(); int getA2();' > %t/include/A.h
-// RUN: %clang_cc1 -fdisable-module-hash -fmodules-cache-path=%t/cache -fmodules -I %t/include %s -verify
-// RUN: rm %t/cache/ModA.pcm
-// RUN: %clang_cc1 -fdisable-module-hash -fmodules-cache-path=%t/cache -fmodules -I %t/include %s -verify
-// RUN: touch %t/cache/ModA.pcm
-// RUN: %clang_cc1 -fdisable-module-hash -fmodules-cache-path=%t/cache -fmodules -I %t/include %s -verify
-
-// expected-no-diagnostics
-
-// FIXME: It is intended to suppress this on win32.
-// REQUIRES: ansi-escape-sequences
-
- at import ModB;
-
-int getValue() { return getA() + getB(); }
-
-
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/module-private.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/module-private.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/module-private.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodules-cache-path=%t -fmodule-name=module_private_left -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodules-cache-path=%t -fmodule-name=module_private_right -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodules-cache-path=%t %s -verify
-// FIXME: When we have a syntax for modules in C++, use that.
-
- at import module_private_left;
- at import module_private_right;
-
-void test() {
-  int &ir = f0(1.0); // okay: f0() from 'right' is not visible
-}
-
-int test_broken() {
-  HiddenStruct hidden; // \
-  // expected-error{{must use 'struct' tag to refer to type 'HiddenStruct' in this scope}} \
-  // expected-error{{definition of 'struct HiddenStruct' must be imported}}
-  // expected-note at Inputs/module_private_left.h:3 {{previous definition is here}}
-
-  Integer i; // expected-error{{unknown type name 'Integer'}}
-
-  int *ip = 0;
-  f1(ip); // expected-error{{use of undeclared identifier 'f1'}}
-
-  vector<int> vec; // expected-error{{use of undeclared identifier 'vector'}} \
-  // expected-error{{expected '(' for function-style cast or type construction}} \
-  // expected-error{{use of undeclared identifier 'vec'}}
-
-  VisibleStruct vs;
-  vs.field = 0; // expected-error{{no member named 'field' in 'VisibleStruct'}}
-  vs.setField(1); // expected-error{{no member named 'setField' in 'VisibleStruct'}}
-
-  return hidden_var; // expected-error{{use of undeclared identifier 'hidden_var'}}
-}
-
-// Check for private redeclarations of public entities.
-template<typename T>
-class public_class_template;
-
-template<typename T>
-__module_private__ class public_class_template;
-
-
-typedef int public_typedef;
-typedef __module_private__ int public_typedef;
-
-extern int public_var;
-extern __module_private__ int public_var;
-
-void public_func();
-__module_private__ void public_func();
-
-template<typename T>
-void public_func_template();
-template<typename T>
-__module_private__ void public_func_template();
-
-struct public_struct;
-__module_private__ struct public_struct;
-
-// Check for attempts to make specializations private
-template<> __module_private__ void public_func_template<int>(); // expected-error{{template specialization cannot be declared __module_private__}}
-
-template<typename T>
-struct public_class {
-  struct inner_struct;
-  static int static_var;
-
-  friend __module_private__ void public_func_friend();
-  friend __module_private__ struct public_struct_friend;
-};
-
-template<> __module_private__ struct public_class<int>::inner_struct { }; // expected-error{{member specialization cannot be declared __module_private__}}
-template<> __module_private__ int public_class<int>::static_var = 17; // expected-error{{member specialization cannot be declared __module_private__}}
-
-template<>
-__module_private__ struct public_class<float> { }; // expected-error{{template specialization cannot be declared __module_private__}}
-
-template<typename T>
-__module_private__ struct public_class<T *> { }; // expected-error{{partial specialization cannot be declared __module_private__}}
-
-// Check for attempts to make parameters and variables with automatic
-// storage module-private.
-
-void local_var_private(__module_private__ int param) { // expected-error{{parameter 'param' cannot be declared __module_private__}}
-  __module_private__ struct Local { int x, y; } local; //expected-error{{local variable 'local' cannot be declared __module_private__}}
-
-  __module_private__ struct OtherLocal { int x; }; // expected-error{{local struct cannot be declared __module_private__}}
-
-  typedef __module_private__ int local_typedef; // expected-error{{typedef 'local_typedef' cannot be declared __module_private__}}
-}
-
-// Check struct size
-struct LikeVisibleStruct {
-  int field;
-  virtual void setField(int f);
-};
-
-int check_struct_size[sizeof(VisibleStruct) == sizeof(LikeVisibleStruct)? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Modules/module_file_info.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/module_file_info.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/module_file_info.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-
- at import DependsOnModule;
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -w -fmodules -fdisable-module-hash -fmodules-cache-path=%t -F %S/Inputs -DBLARG -DWIBBLE=WOBBLE %s
-// RUN: %clang_cc1 -module-file-info %t/DependsOnModule.pcm | FileCheck %s
-
-// CHECK: Generated by this Clang:
-
-// CHECK: Language options:
-// CHECK:   C99: Yes
-// CHECK:   Objective-C 1: Yes
-// CHECK:   modules extension to C: Yes
-
-// CHECK: Target options:
-// CHECK:     Triple:
-// CHECK:     CPU: 
-// CHECK:     ABI: 
-// CHECK:     C++ ABI: 
-// CHECK:     Linker version: 
-
-// CHECK: Header search options:
-// CHECK:   System root [-isysroot=]: '/'
-// CHECK:   Use builtin include directories [-nobuiltininc]: Yes
-// CHECK:   Use standard system include directories [-nostdinc]: Yes
-// CHECK:   Use standard C++ include directories [-nostdinc++]: Yes
-// CHECK:   Use libc++ (rather than libstdc++) [-stdlib=]:
-
-// CHECK: Preprocessor options:
-// CHECK:   Uses compiler/target-specific predefines [-undef]: Yes
-// CHECK:   Uses detailed preprocessing record (for indexing): No
-// CHECK:   Predefined macros:
-// CHECK:     -DBLARG
-// CHECK:     -DWIBBLE=WOBBLE

Modified: trunk/contrib/llvm/tools/clang/test/Modules/namespaces.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/namespaces.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/namespaces.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs %s -verify
-
-int &global(int);
-int &global2(int);
-
-namespace N6 {
-  char &f(char);
-}
-
-namespace N8 { }
-
-namespace LookupBeforeImport {
-  int &f(int);
-}
-void testEarly() {
-  int &r = LookupBeforeImport::f(1);
-}
-
- at import namespaces_left;
- at import namespaces_right;
-
-void test() {
-  int &ir1 = N1::f(1);
-  int &ir2 = N2::f(1);
-  int &ir3 = N3::f(1);
-  int &ir4 = global(1);
-  int &ir5 = ::global2(1);
-  float &fr1 = N1::f(1.0f);
-  float &fr2 = N2::f(1.0f);
-  float &fr3 = global(1.0f);
-  float &fr4 = ::global2(1.0f);
-  float &fr5 = LookupBeforeImport::f(1.0f);
-  double &dr1 = N2::f(1.0);
-  double &dr2 = N3::f(1.0);
-  double &dr3 = global(1.0);
-  double &dr4 = ::global2(1.0);
-  double &dr5 = LookupBeforeImport::f(1.0);
-}
-
-// Test namespaces merged without a common first declaration.
-namespace N5 {
-  char &f(char);
-}
-
-namespace N10 { 
-  int &f(int);
-}
-
-void testMerged() {
-  int &ir1 = N5::f(17);
-  int &ir2 = N6::f(17);
-  int &ir3 = N7::f(17);
-  double &fr1 = N5::f(1.0);
-  double &fr2 = N6::f(1.0);
-  double &fr3 = N7::f(1.0);
-  char &cr1 = N5::f('a');
-  char &cr2 = N6::f('b');
-}
-
-// Test merging of declarations within namespaces that themselves were
-// merged without a common first declaration.
-void testMergedMerged() {
-  int &ir1 = N8::f(17);
-  int &ir2 = N9::f(17);
-  int &ir3 = N10::f(17);
-}
-
-// Test merging when using anonymous namespaces, which does not
-// actually perform any merging.
-void testAnonymousNotMerged() {
-  N11::consumeFoo(N11::getFoo()); // expected-error{{cannot initialize a parameter of type 'N11::<anonymous>::Foo *' with an rvalue of type 'N11::<anonymous>::Foo *'}}
-  N12::consumeFoo(N12::getFoo()); // expected-error{{cannot initialize a parameter of type 'N12::<anonymous>::Foo *' with an rvalue of type 'N12::<anonymous>::Foo *'}}  
-}
-
-// expected-note at Inputs/namespaces-right.h:60 {{passing argument to parameter here}}
-// expected-note at Inputs/namespaces-right.h:67 {{passing argument to parameter here}}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/normal-module-map.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/normal-module-map.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/normal-module-map.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c -fmodules-cache-path=%t -fmodules -I %S/Inputs/normal-module-map %s -verify
-#include "Umbrella/umbrella_sub.h"
-
-int getUmbrella() { 
-  return umbrella + umbrella_sub; 
-}
-
- at import Umbrella2;
-
-#include "a1.h"
-#include "b1.h"
-#include "nested/nested2.h"
-
-int test() {
-  return a1 + b1 + nested2;
-}
-
- at import nested_umbrella.a;
-
-int testNestedUmbrellaA() {
-  return nested_umbrella_a;
-}
-
-int testNestedUmbrellaBFail() {
-  return nested_umbrella_b;
-  // expected-error at -1{{use of undeclared identifier 'nested_umbrella_b'; did you mean 'nested_umbrella_a'?}}
-  // expected-note at Inputs/normal-module-map/nested_umbrella/a.h:1{{'nested_umbrella_a' declared here}}
-}
-
- at import nested_umbrella.b;
-
-int testNestedUmbrellaB() {
-  return nested_umbrella_b;
-}
-
- at import nested_umbrella.a_extras;
-
- at import nested_umbrella._1;
-
- at import nested_umbrella.decltype_;
-
-int testSanitizedName() {
-  return extra_a + one + decltype_val;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/objc-categories.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/objc-categories.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/objc-categories.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c -fmodule-name=category_top -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c -fmodule-name=category_left -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c -fmodule-name=category_right -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c -fmodule-name=category_bottom -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c -fmodule-name=category_other -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t %s -verify
-
- at import category_bottom;
-
-// expected-note at Inputs/category_left.h:14 {{previous definition}}
-// expected-warning at Inputs/category_right.h:11 {{duplicate definition of category}}
-
- at interface Foo(Source)
--(void)source; 
- at end
-
-void test(Foo *foo, LeftFoo *leftFoo) {
-  [foo source];
-  [foo bottom];
-  [foo left];
-  [foo right1];
-  [foo right2];
-  [foo top];
-  [foo top2];
-  [foo top3];
-
-  [leftFoo left];
-  [leftFoo bottom];
-}
-
-// Load another module that also adds categories to Foo, verify that
-// we see those categories.
- at import category_other;
-
-void test_other(Foo *foo) {
-  [foo other];
-}
-
-// Make sure we don't see categories that should be hidden
-void test_hidden_all_errors(Foo *foo) {
-  [foo left_sub]; // expected-warning{{instance method '-left_sub' not found (return type defaults to 'id')}}
-  foo.right_sub_prop = foo; // expected-error{{property 'right_sub_prop' not found on object of type 'Foo *'}}
-  int i = foo->right_sub_ivar; // expected-error{{'Foo' does not have a member named 'right_sub_ivar'}}
-  id<P1> p1 = foo; // expected-warning{{initializing 'id<P1>' with an expression of incompatible type 'Foo *'}}
-  id<P2> p2 = foo; // expected-warning{{initializing 'id<P2>' with an expression of incompatible type 'Foo *'}}
-  id<P3> p3;
-  [p3 p3_method]; // expected-warning{{instance method '-p3_method' not found (return type defaults to 'id')}}
-  id<P4> p4;
-  [p4 p4_method]; // expected-warning{{instance method '-p4_method' not found (return type defaults to 'id')}}
-  id p3p = p3.p3_prop; // expected-error{{property 'p3_prop' not found on object of type 'id<P3>'}}
-  p3p = foo.p3_prop; // expected-error{{property 'p3_prop' not found on object of type 'Foo *'}}
-  id p4p = p4.p4_prop; // expected-error{{property 'p4_prop' not found on object of type 'id<P4>'}}
-  p4p = foo.p4_prop; // expected-error{{property 'p4_prop' not found on object of type 'Foo *'}}
-}
-
- at import category_left.sub;
-
-void test_hidden_right_errors(Foo *foo) {
-  // These are okay
-  [foo left_sub]; // okay
-  id<P1> p1 = foo;
-  id<P3> p3;
-  [p3 p3_method];
-  id p3p = p3.p3_prop;
-  p3p = foo.p3_prop;
-  // These should fail
-  foo.right_sub_prop = foo; // expected-error{{property 'right_sub_prop' not found on object of type 'Foo *'}}
-  int i = foo->right_sub_ivar; // expected-error{{'Foo' does not have a member named 'right_sub_ivar'}}
-  id<P2> p2 = foo; // expected-warning{{initializing 'id<P2>' with an expression of incompatible type 'Foo *'}}
-  id<P4> p4;
-  [p4 p4_method]; // expected-warning{{instance method '-p4_method' not found (return type defaults to 'id')}}
-  id p4p = p4.p4_prop; // expected-error{{property 'p4_prop' not found on object of type 'id<P4>'}}
-  p4p = foo.p4_prop; // expected-error{{property 'p4_prop' not found on object of type 'Foo *'; did you mean 'p3_prop'?}}
-  // expected-note at Inputs/category_left_sub.h:7{{'p3_prop' declared here}}
-}
-
- at import category_right.sub;
-
-void test_hidden_okay(Foo *foo) {
-  [foo left_sub];
-  foo.right_sub_prop = foo;
-  int i = foo->right_sub_ivar;
-  id<P1> p1 = foo;
-  id<P2> p2 = foo;
-  id<P3> p3;
-  [p3 p3_method];
-  id<P4> p4;
-  [p4 p4_method];
-  id p3p = p3.p3_prop;
-  p3p = foo.p3_prop;
-  id p4p = p4.p4_prop;
-  p4p = foo.p4_prop;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/objc_redef.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/objc_redef.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/objc_redef.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
- at import redeclarations_left;
- at import weird_objc;
-
-int test(id x) {
-  return x->wibble;
-}
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -emit-module -fmodule-name=redeclarations_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -emit-module -fmodule-name=weird_objc %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t %s -verify
-// expected-no-diagnostics
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/on-demand-build.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/on-demand-build.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/on-demand-build.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -fmodules-cache-path=%t -F %S/Inputs -I %S/Inputs -verify %s
-// RUN: %clang_cc1 -fmodules -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -x objective-c++ -fmodules-cache-path=%t -F %S/Inputs -I %S/Inputs -verify %s
-// RUN: %clang_cc1 -fmodules -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -fmodules-cache-path=%t -F %S/Inputs -I %S/Inputs -verify %s
-#define FOO
- at import Module;
- at interface OtherClass
- at end
-
-// expected-note at Inputs/Module.framework/Headers/Module.h:17{{class method 'alloc' is assumed to return an instance of its receiver type ('Module *')}}
-void test_getModuleVersion() {
-  const char *version = getModuleVersion();
-  const char *version2 = [Module version];
-
-  OtherClass *other = [Module alloc]; // expected-error{{init}}
-}
-
-#ifdef MODULE_SUBFRAMEWORK_H
-#  error MODULE_SUBFRAMEWORK_H should be hidden
-#endif
-
- at import subdir;
-
-const char *getSubdirTest() { return getSubdir(); }

Modified: trunk/contrib/llvm/tools/clang/test/Modules/on-demand-macros.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/on-demand-macros.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/on-demand-macros.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -F %S/Inputs -DFOO_RETURNS_INT_PTR -verify %s
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -F %S/Inputs -verify %s
-// expected-no-diagnostics
-
- at import CmdLine;
-
-void test() {
-#ifdef FOO_RETURNS_INT_PTR
-  int *ip = foo();
-#else
-  float *fp = foo();
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/prune.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/prune.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/prune.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// Test the automatic pruning of module cache entries.
-#ifdef IMPORT_DEPENDS_ON_MODULE
- at import DependsOnModule;
-#else
- at import Module;
-#endif
-
-// We need 'touch' and 'find' for this test to work.
-// REQUIRES: shell
-
-// Clear out the module cache
-// RUN: rm -rf %t
-// Run Clang twice so we end up creating the timestamp file (the second time).
-// RUN: %clang_cc1 -DIMPORT_DEPENDS_ON_MODULE -fmodules-ignore-macro=DIMPORT_DEPENDS_ON_MODULE -fmodules -F %S/Inputs -fmodules-cache-path=%t %s -verify
-// RUN: %clang_cc1 -DIMPORT_DEPENDS_ON_MODULE -fmodules-ignore-macro=DIMPORT_DEPENDS_ON_MODULE -fmodules -F %S/Inputs -fmodules-cache-path=%t %s -verify
-// RUN: ls %t | grep modules.timestamp
-// RUN: ls -R %t | grep ^Module.pcm
-// RUN: ls -R %t | grep DependsOnModule.pcm
-
-// Set the timestamp back more than two days. We should try to prune,
-// but nothing gets pruned because the module files are new enough.
-// RUN: touch -m -a -t 201101010000 %t/modules.timestamp 
-// RUN: %clang_cc1 -fmodules -F %S/Inputs -fmodules-cache-path=%t -fmodules -fmodules-prune-interval=172800 -fmodules-prune-after=345600 %s -verify
-// RUN: ls %t | grep modules.timestamp
-// RUN: ls -R %t | grep ^Module.pcm
-// RUN: ls -R %t | grep DependsOnModule.pcm
-
-// Set the DependsOnModule access time back more than four days.
-// This shouldn't prune anything, because the timestamp has been updated, so
-// the pruning mechanism won't fire.
-// RUN: find %t -name DependsOnModule.pcm | xargs touch -a -t 201101010000
-// RUN: %clang_cc1 -fmodules -F %S/Inputs -fmodules-cache-path=%t -fmodules -fmodules-prune-interval=172800 -fmodules-prune-after=345600 %s -verify
-// RUN: ls %t | grep modules.timestamp
-// RUN: ls -R %t | grep ^Module.pcm
-// RUN: ls -R %t | grep DependsOnModule.pcm
-
-// Set both timestamp and DependsOnModule.pcm back beyond the cutoff.
-// This should trigger pruning, which will remove DependsOnModule but not Module.
-// RUN: touch -m -a -t 201101010000 %t/modules.timestamp 
-// RUN: find %t -name DependsOnModule.pcm | xargs touch -a -t 201101010000
-// RUN: %clang_cc1 -fmodules -F %S/Inputs -fmodules-cache-path=%t -fmodules -fmodules-prune-interval=172800 -fmodules-prune-after=345600 %s -verify
-// RUN: ls %t | grep modules.timestamp
-// RUN: ls -R %t | grep ^Module.pcm
-// RUN: ls -R %t | not grep DependsOnModule.pcm
-
-// expected-no-diagnostics

Modified: trunk/contrib/llvm/tools/clang/test/Modules/redecl-merge.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/redecl-merge.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/redecl-merge.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,175 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -Wreturn-type -fmodules-cache-path=%t -I %S/Inputs %s -verify -Wno-objc-root-class
-
- at class C2;
- at class C3;
- at class C3;
- at import redecl_merge_left;
-typedef struct my_struct_type *my_struct_ref;
- at protocol P4;
- at class C3;
- at class C3;
-
-int *call_eventually_noreturn(void) {
-  eventually_noreturn();
-} // expected-warning{{control reaches end of non-void function}}
-
-int *call_eventually_noreturn2(void) {
-  eventually_noreturn2();
-} // expected-warning{{control reaches end of non-void function}}
-
- at import redecl_merge_right;
-
-int *call_eventually_noreturn_again(void) {
-  eventually_noreturn();
-}
-
-int *call_eventually_noreturn2_again(void) {
-  // noreturn and non-noreturn functions have different types
-  eventually_noreturn2(); // expected-error{{call to 'eventually_noreturn2' is ambiguous}}
-  // expected-note at Inputs/redecl-merge-left.h:93{{candidate function}}
-  // expected-note at Inputs/redecl-merge-right.h:90{{candidate function}}
-}
-
- at implementation A
-- (Super*)init { return self; }
- at end
-
-void f(A *a) {
-  [a init];
-}
-
- at class A;
-
-B *f1() {
-  return [B create_a_B];
-}
-
- at class B;
-
-void testProtoMerge(id<P1> p1, id<P2> p2) {
-  [p1 protoMethod1];
-  [p2 protoMethod2];
-}
-
-struct S1 {
-  int s1_field;
-};
-
-struct S3 {
-  int s3_field;
-};
-
-void testTagMerge() {
-  consume_S1(produce_S1());
-  struct S2 s2;
-  s2.field = 0;
-  consume_S2(produce_S2());
-  struct S1 s1;
-  s1.s1_field = 0;
-  consume_S3(produce_S3());
-  struct S4 s4;
-  s4.field = 0;
-  consume_S4(produce_S4());
-  struct S3 s3;
-  s3.s3_field = 0;
-}
-
-void testTypedefMerge(int i, double d) {
-  T1 *ip = &i;
-  // FIXME: Typedefs aren't actually merged in the sense of other merges, because
-  // we should only merge them when the types are identical.
-  // expected-note at Inputs/redecl-merge-left.h:60{{candidate found by name lookup is 'T2'}}
-  // expected-note at Inputs/redecl-merge-right.h:63{{candidate found by name lookup is 'T2'}}
-  T2 *dp = &d; // expected-error{{reference to 'T2' is ambiguous}}
-}
-
-void testFuncMerge(int i) {
-  func0(i);
-  func1(i);
-  // expected-note at Inputs/redecl-merge-left.h:64{{candidate function}}
-  // expected-note at Inputs/redecl-merge-right.h:70{{candidate function}}
-  func2(i); // expected-error{{call to 'func2' is ambiguous}}
-}
-
-void testVarMerge(int i) {
-  var1 = i;
-  // expected-note at Inputs/redecl-merge-left.h:77{{candidate found by name lookup is 'var2'}}
-  // expected-note at Inputs/redecl-merge-right.h:77{{candidate found by name lookup is 'var2'}}
-  var2 = i; // expected-error{{reference to 'var2' is ambiguous}}
-  // expected-note at Inputs/redecl-merge-left.h:79{{candidate found by name lookup is 'var3'}}
-  // expected-note at Inputs/redecl-merge-right.h:79{{candidate found by name lookup is 'var3'}}
-  var3 = i; // expected-error{{reference to 'var3' is ambiguous}}
-}
-
-// Test redeclarations of entities in explicit submodules, to make
-// sure we're maintaining the declaration chains even when normal name
-// lookup can't see what we're looking for.
-void testExplicit() {
-  Explicit *e;
-  int *(*fp)(void) = &explicit_func;
-  int *ip = explicit_func();
-
-  // FIXME: Should complain about definition not having been imported.
-  struct explicit_struct es = { 0 };
-}
-
-// Test resolution of declarations from multiple modules with no
-// common original declaration.
-void test_C(C *c) {
-  c = get_a_C();
-  accept_a_C(c);
-}
-
-void test_C2(C2 *c2) {
-  c2 = get_a_C2();
-  accept_a_C2(c2);
-}
-
-void test_C3(C3 *c3) {
-  c3 = get_a_C3();
-  accept_a_C3(c3);
-}
-
-C4 *global_C4;
-
-ClassWithDef *cwd1;
-
- at import redecl_merge_left_left;
-
-void test_C4a(C4 *c4) {
-  global_C4 = c4 = get_a_C4();
-  accept_a_C4(c4);
-}
-
-void test_ClassWithDef(ClassWithDef *cwd) {
-  [cwd method];
-}
-
- at import redecl_merge_bottom;
-
-void test_C4b() {
-  if (&refers_to_C4) {
-  }
-}
-
- at implementation B
-+ (B*)create_a_B { return 0; }
- at end
-
-void g(A *a) {
-  [a init];
-}
-
- at protocol P3
-- (void)p3_method;
- at end
-
-id<P4> p4;
-id<P3> p3;
-
-// Make sure we don't get conflicts with 'id'.
-funcptr_with_id fid;
-id id_global;
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/redecl-merge2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/redecl-merge2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/redecl-merge2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I %S/Inputs %s -verify -Wno-objc-root-class
-// expected-no-diagnostics
-
- at import redecl_merge_bottom.prefix;
-
-DeclaredThenLoaded *dtl;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/redecl-namespaces.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/redecl-namespaces.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/redecl-namespaces.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
- at import redecl_namespaces_left;
- at import redecl_namespaces_right;
-
-void test() {
-  A::i;
-  A::j;
-  A::k;  // expected-error {{no member named 'k' in namespace 'A'}}
-}
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodules-cache-path=%t -emit-module -fmodule-name=redecl_namespaces_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodules-cache-path=%t -emit-module -fmodule-name=redecl_namespaces_right %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -w %s -verify

Modified: trunk/contrib/llvm/tools/clang/test/Modules/redeclarations.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/redeclarations.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/redeclarations.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
- at import redeclarations_left;
- at import redeclarations_right;
-
- at interface MyObject : NSObject
- at end
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -emit-module -fmodule-name=redeclarations_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -emit-module -fmodule-name=redeclarations_right %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t %s -verify
-// expected-no-diagnostics
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/redecls/a.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/redecls/a.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/redecls/a.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
- at interface AA
- at end
- at class AA;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/redecls/b.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/redecls/b.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/redecls/b.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
- at class AA;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/redecls/main.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/redecls/main.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/redecls/main.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: rm -rf %t.mcp
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodule-name=a %S/module.map -fmodules-cache-path=%t.mcp
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module -fmodule-name=b %S/module.map -fmodules-cache-path=%t.mcp
-// RUN: %clang_cc1 -fmodules %s -emit-pch -o %t1.pch -fmodules-cache-path=%t.mcp
-// RUN: %clang_cc1 -fmodules %s -emit-pch -o %t2.pch -include-pch %t1.pch -fmodules-cache-path=%t.mcp
-// RUN: %clang_cc1 -fmodules %s -fsyntax-only -include-pch %t2.pch -fmodules-cache-path=%t.mcp -verify
-
-#ifndef HEADER1
-#define HEADER1
-
- at import a;
-
-#elif !defined(HEADER2)
-#define HEADER2
-
- at class AA;
- at import b;
-
-#else
-
-// rdar://13712705
- at interface SS : AA
- at end
-
-#warning parsed this
-#endif
-// expected-warning at -2{{parsed this}}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/redecls/module.map
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/redecls/module.map	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/redecls/module.map	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-module a { header "a.h" }
-module b { header "b.h" }

Modified: trunk/contrib/llvm/tools/clang/test/Modules/renamed.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/renamed.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/renamed.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
- at import NewName;
-
-int f() { return same_api; }
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -I %S/Inputs -fmodules-cache-path=%t %s -verify
-
-// expected-no-diagnostics

Modified: trunk/contrib/llvm/tools/clang/test/Modules/requires.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/requires.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/requires.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fmodules -F %S/Inputs %s -verify
-
- at import DependsOnModule.CXX; // expected-error{{module 'DependsOnModule.CXX' requires feature 'cplusplus'}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/serialized-diags.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/serialized-diags.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/serialized-diags.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
- at import HasWarnings;
-
-#ifdef WITH_ERRORS
- at import HasErrors;
-#endif
-
-float float_val;
-double *double_ptr = &float_val;
-
-// RUN: rm -rf %t %t.diag %t.out
-// RUN: %clang -fmodules -fmodules-cache-path=%t/ModuleCache -I %S/Inputs/ModuleDiags -fsyntax-only %s --serialize-diagnostics %t.diag > /dev/null 2>&1
-// RUN: c-index-test -read-diagnostics %t.diag > %t.out 2>&1
-// RUN: FileCheck --input-file=%t.out %s
-
-// CHECK: has_warnings.h:3:8: warning: incompatible pointer types initializing 'float *'
-// CHECK: serialized-diags.m:1:9: note: while building module 'HasWarnings' imported from
-// CHECK: serialized-diags.m:8:9: warning: incompatible pointer types initializing 'double *'
-// CHECK: Number of diagnostics: 2
-
-// RUN: rm -rf %t %t.diag_errors %t.out_errors
-// RUN: not %clang -fmodules -fmodules-cache-path=%t/ModuleCache -I %S/Inputs/ModuleDiags -fsyntax-only -DWITH_ERRORS %s --serialize-diagnostics %t.diag_errors > /dev/null 2>&1
-// RUN: c-index-test -read-diagnostics %t.diag_errors > %t.out_errors 2>&1
-// RUN: FileCheck -check-prefix=CHECK-WITH-ERRORS --input-file=%t.out_errors %s
-
-// CHECK-WITH-ERRORS: has_warnings.h:3:8: warning: incompatible pointer types initializing 'float *'
-// CHECK-WITH-ERRORS: serialized-diags.m:1:9: note: while building module 'HasWarnings'
-// CHECK-WITH-ERRORS: has_errors.h:2:13: error: redefinition of 'foo'
-// CHECK-WITH-ERRORS: serialized-diags.m:4:9: note: while building module 'HasErrors'
-// CHECK-WITH-ERRORS: has_errors.h:1:13: note: previous definition is here
-// CHECK-WITH-ERRORS: serialized-diags.m:4:9: fatal: could not build module 'HasErrors'
-// CHECK-WITH-ERRORS: Number of diagnostics: 3
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/stddef.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/stddef.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/stddef.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
- at import StdDef.Other;
-
-size_t getSize();
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -I %S/Inputs/StdDef %s -verify
-// expected-no-diagnostics

Modified: trunk/contrib/llvm/tools/clang/test/Modules/subframeworks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/subframeworks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/subframeworks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fmodules -F %S/Inputs -F %S/Inputs/DependsOnModule.framework/Frameworks %s -verify
-// RUN: %clang_cc1 -x objective-c++ -Wauto-import -fmodules-cache-path=%t -fmodules -F %S/Inputs -F %S/Inputs/DependsOnModule.framework/Frameworks %s -verify
-
- at import DependsOnModule;
-
-void testSubFramework() {
-  float *sf1 = sub_framework; // expected-error{{use of undeclared identifier 'sub_framework'}}
-}
-
- at import DependsOnModule.SubFramework;
-
-void testSubFrameworkAgain() {
-  float *sf2 = sub_framework;
-  double *sfo1 = sub_framework_other;
-}
-
-#ifdef __cplusplus
- at import DependsOnModule.CXX;
-
-CXXOnly cxxonly;
-#endif
-
- at import HasSubModules;
-
-// expected-warning at Inputs/HasSubModules.framework/Frameworks/Sub.framework/PrivateHeaders/SubPriv.h:1{{treating #include as an import of module 'HasSubModules.Sub.Types'}}
-#import <HasSubModules/HasSubModulesPriv.h>
-
-struct FrameworkSubStruct ss;

Modified: trunk/contrib/llvm/tools/clang/test/Modules/submodules-preprocess.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/submodules-preprocess.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/submodules-preprocess.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c++ -Eonly -fmodules-cache-path=%t -I %S/Inputs/submodules %s -verify
-// FIXME: When we have a syntax for modules in C++, use that.
-
- at import std.vector;
-
-#ifndef HAVE_VECTOR
-#  error HAVE_VECTOR macro is not available (but should be)
-#endif
-
-#ifdef HAVE_TYPE_TRAITS
-#  error HAVE_TYPE_TRAITS_MAP macro is available (but shouldn't be)
-#endif
-
-#ifdef HAVE_HASH_MAP
-#  error HAVE_HASH_MAP macro is available (but shouldn't be)
-#endif
-
- at import std.typetraits; // expected-error{{no submodule named 'typetraits' in module 'std'; did you mean 'type_traits'?}}
-
-#ifndef HAVE_VECTOR
-#  error HAVE_VECTOR macro is not available (but should be)
-#endif
-
-#ifndef HAVE_TYPE_TRAITS
-#  error HAVE_TYPE_TRAITS_MAP macro is not available (but should be)
-#endif
-
-#ifdef HAVE_HASH_MAP
-#  error HAVE_HASH_MAP macro is available (but shouldn't be)
-#endif
-
- at import std.vector.compare; // expected-error{{no submodule named 'compare' in module 'std.vector'}}
-
- at import std; // import everything in 'std'
-
-#ifndef HAVE_VECTOR
-#  error HAVE_VECTOR macro is not available (but should be)
-#endif
-
-#ifndef HAVE_TYPE_TRAITS
-#  error HAVE_TYPE_TRAITS_MAP macro is not available (but should be)
-#endif
-
-#ifdef HAVE_HASH_MAP
-#  error HAVE_HASH_MAP macro is available (but shouldn't be)
-#endif
-
- at import std.hash_map;
-
-#ifndef HAVE_VECTOR
-#  error HAVE_VECTOR macro is not available (but should be)
-#endif
-
-#ifndef HAVE_TYPE_TRAITS
-#  error HAVE_TYPE_TRAITS_MAP macro is not available (but should be)
-#endif
-
-#ifndef HAVE_HASH_MAP
-#  error HAVE_HASH_MAP macro is not available (but should be)
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Modules/submodules.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/submodules.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/submodules.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c++ -fmodules-cache-path=%t -fmodules -I %S/Inputs/submodules %s -verify
-// FIXME: When we have a syntax for modules in C++, use that.
-
- at import std.vector;
-
-vector<int> vi;
-
-// Note: remove_reference is not visible yet.
-remove_reference<int&>::type *int_ptr = 0; // expected-error{{unknown type name 'remove_reference'}} \
-// expected-error{{expected unqualified-id}}
-
- at import std.typetraits; // expected-error{{no submodule named 'typetraits' in module 'std'; did you mean 'type_traits'?}}
-
-vector<float> vf;
-remove_reference<int&>::type *int_ptr2 = 0;
-
- at import std.vector.compare; // expected-error{{no submodule named 'compare' in module 'std.vector'}}
-
- at import std; // import everything in 'std'
-
-// hash_map still isn't available.
-hash_map<int, float> ints_to_floats; // expected-error{{unknown type name 'hash_map'}} \
-// expected-error{{expected unqualified-id}}
-
- at import std.hash_map;
-
-hash_map<int, float> ints_to_floats2;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/submodules.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/submodules.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/submodules.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fmodules -F %S/Inputs %s -verify
-// expected-no-diagnostics
-
-// Note: transitively imports Module.Sub2.
- at import Module.Sub;
-
-int getValue() { 
-  return *Module_Sub + *Module_Sub2;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/system_version.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/system_version.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/system_version.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// Test checking that we're hashing a system version file in the
-// module hash.
-// REQUIRES: shell
-
-// First, build a system root.
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/usr/include
-// RUN: cp %S/Inputs/Modified/A.h %t/usr/include
-// RUN: cp %S/Inputs/Modified/B.h %t/usr/include
-// RUN: cp %S/Inputs/Modified/module.map %t/usr/include
-
-// Run once with no system version file. We should end up with one module.
-// RUN: %clang_cc1 -fmodules-cache-path=%t/cache -fmodules -isysroot %t -I %t/usr/include %s -verify
-// RUN: ls -R %t | grep -c ModA.pcm| grep 1
-
-// Add a system version file and run again. We should now have two
-// module variants.
-// RUN: mkdir -p %t/System/Library/CoreServices
-// RUN: echo "hello" > %t/System/Library/CoreServices/SystemVersion.plist
-// RUN: %clang_cc1 -fmodules-cache-path=%t/cache -fmodules -isysroot %t -I %t/usr/include %s -verify
-// RUN: ls -R %t | grep -c ModA.pcm| grep 2
-
-// Change the system version file and run again. We should now have three
-// module variants.
-// RUN: mkdir -p %t/System/Library/CoreServices
-// RUN: echo "modules" > %t/System/Library/CoreServices/SystemVersion.plist
-// RUN: %clang_cc1 -fmodules-cache-path=%t/cache -fmodules -isysroot %t -I %t/usr/include %s -verify
-// RUN: ls -R %t | grep -c ModA.pcm| grep 3
-
-// expected-no-diagnostics
- at import ModA;
-

Modified: trunk/contrib/llvm/tools/clang/test/Modules/templates.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/templates.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/templates.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs -verify %s -Wno-objc-root-class
-// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs -emit-llvm %s -o - -Wno-objc-root-class | grep Emit | FileCheck %s
-// expected-no-diagnostics
-
- at import templates_left;
- at import templates_right;
-
-
-void testTemplateClasses() {
-  Vector<int> vec_int;
-  vec_int.push_back(0);
-
-  List<bool> list_bool;
-  list_bool.push_back(false);
-
-  N::Set<char> set_char;
-  set_char.insert('A');
-}
-
-void testPendingInstantiations() {
-  // CHECK: call {{.*pendingInstantiationEmit}}
-  // CHECK: call {{.*pendingInstantiationEmit}}
-  // CHECK: define {{.*pendingInstantiationEmit.*[(]i}}
-  // CHECK: define {{.*pendingInstantiationEmit.*[(]double}}
-  triggerPendingInstantiation();
-  triggerPendingInstantiationToo();
-}
-
-void testRedeclDefinition() {
-  // CHECK: define {{.*redeclDefinitionEmit}}
-  redeclDefinitionEmit();
-}
-
-// CHECK: call {{.*pendingInstantiation}}
-// CHECK: call {{.*redeclDefinitionEmit}}

Modified: trunk/contrib/llvm/tools/clang/test/Modules/wildcard-submodule-exports.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Modules/wildcard-submodule-exports.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Modules/wildcard-submodule-exports.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c++ -fmodules-cache-path=%t -fmodules -I %S/Inputs/wildcard-submodule-exports %s -verify
-// FIXME: When we have a syntax for modules in C++, use that.
-
- at import C.One;
-
-void test_C_One() {
-  int *A1_ptr = A1;
-  long *C1_ptr = C1;
-  (void)B1; // expected-error{{use of undeclared identifier 'B1'}}
-}
-
- at import C.Two;
-
-void test_C_Two() {
-  unsigned int *A2_ptr = A2;
-  unsigned short *B2_ptr = B2;
-  unsigned long *C2_ptr = C2;
-}
-
- at import B.One;
-
-void test_B_One() {
-  short *B1_ptr = B1;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/OpenMP/linking.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/OpenMP/linking.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/OpenMP/linking.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// Test the that the driver produces reasonable linker invocations with
-// -fopenmp.
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -fopenmp -target i386-unknown-linux \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-32 %s
-// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}"
-// CHECK-LD-32: "-lgomp" "-lrt" "-lgcc"
-// CHECK-LD-32: "-lpthread" "-lc"
-//
-// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN:     -fopenmp -target x86_64-unknown-linux \
-// RUN:   | FileCheck --check-prefix=CHECK-LD-64 %s
-// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}"
-// CHECK-LD-64: "-lgomp" "-lrt" "-lgcc"
-// CHECK-LD-64: "-lpthread" "-lc"

Modified: trunk/contrib/llvm/tools/clang/test/OpenMP/no_option.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/OpenMP/no_option.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/OpenMP/no_option.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -verify -o - %s
-// expected-no-diagnostics
-
-int a;
-#pragma omp threadprivate(a,b)
-#pragma omp parallel

Modified: trunk/contrib/llvm/tools/clang/test/OpenMP/no_option_no_warn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/OpenMP/no_option_no_warn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/OpenMP/no_option_no_warn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-source-uses-openmp -o - %s
-// expected-no-diagnostics
-
-int a;
-#pragma omp threadprivate(a,b)
-#pragma omp parallel

Modified: trunk/contrib/llvm/tools/clang/test/OpenMP/openmp_common.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/OpenMP/openmp_common.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/OpenMP/openmp_common.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp -ferror-limit 100 -o - %s
-
-#pragma omp // expected-error {{expected an OpenMP directive}}
-#pragma omp unknown_directive // expected-error {{expected an OpenMP directive}}
-
-void foo() {
-#pragma omp // expected-error {{expected an OpenMP directive}}
-#pragma omp unknown_directive // expected-error {{expected an OpenMP directive}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/OpenMP/option_warn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/OpenMP/option_warn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/OpenMP/option_warn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -verify -Wsource-uses-openmp -o - %s
-
-int a;
-#pragma omp threadprivate(a,b) // expected-warning {{unexpected '#pragma omp ...' in program}}
-#pragma omp parallel

Modified: trunk/contrib/llvm/tools/clang/test/OpenMP/predefined_macro.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/OpenMP/predefined_macro.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/OpenMP/predefined_macro.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fopenmp -verify -DFOPENMP -o - %s
-// RUN: %clang_cc1 -verify -o - %s
-// expected-no-diagnostics
-#ifdef FOPENMP
-// -fopenmp option is specified
-#ifndef _OPENMP
-#error "No _OPENMP macro is defined with -fopenmp option"
-#elsif _OPENMP != 201107
-#error "_OPENMP has incorrect value"
-#endif //_OPENMP
-#else
-// No -fopenmp option is specified
-#ifdef _OPENMP
-#error "_OPENMP macro is defined without -fopenmp option"
-#endif // _OPENMP
-#endif // FOPENMP
-
-// RUN: %clang_cc1 -fopenmp -verify -DFOPENMP -o - %s
-// RUN: %clang_cc1 -verify -o - %s
-// expected-no-diagnostics
-#ifdef FOPENMP
-// -fopenmp option is specified
-#ifndef _OPENMP
-#error "No _OPENMP macro is defined with -fopenmp option"
-#elsif _OPENMP != 201107
-#error "_OPENMP has incorrect value"
-#endif // _OPENMP
-#else
-// No -fopenmp option is specified
-#ifdef _OPENMP
-#error "_OPENMP macro is defined without -fopenmp option"
-#endif // _OPENMP
-#endif // FOPENMP
-

Modified: trunk/contrib/llvm/tools/clang/test/OpenMP/threadprivate_ast_print.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/OpenMP/threadprivate_ast_print.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/OpenMP/threadprivate_ast_print.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s
-// expected-no-diagnostics
-
-struct St{
- int a;
-};
-
-struct St1{
- int a;
- static int b;
-// CHECK: static int b;
-#pragma omp threadprivate(b)
-// CHECK-NEXT: #pragma omp threadprivate(b)
-} d;
-
-int a, b;
-// CHECK: int a;
-// CHECK: int b;
-#pragma omp threadprivate(a)
-// CHECK-NEXT: #pragma omp threadprivate(a)
-#pragma omp threadprivate(d, b)
-// CHECK-NEXT: #pragma omp threadprivate(d,b)
-
-template <class T> T foo() {
-  static T v;
-  #pragma omp threadprivate(v)
-  return v;
-}
-//CHECK: template <class T = int> int foo() {
-//CHECK-NEXT: static int v;
-//CHECK-NEXT: #pragma omp threadprivate(v)
-//CHECK: template <class T> T foo() {
-//CHECK-NEXT: static T v;
-//CHECK-NEXT: #pragma omp threadprivate(v)
-
-int main () {
-  static int a;
-// CHECK: static int a;
-#pragma omp threadprivate(a)
-// CHECK-NEXT: #pragma omp threadprivate(a)
-  a=2;
-  return (foo<int>());
-}

Modified: trunk/contrib/llvm/tools/clang/test/OpenMP/threadprivate_messages.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/OpenMP/threadprivate_messages.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/OpenMP/threadprivate_messages.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,119 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -verify -fopenmp -ferror-limit 100 %s
-
-#pragma omp threadprivate // expected-error {{expected '(' after 'threadprivate'}}
-#pragma omp threadprivate( // expected-error {{expected unqualified-id}}
-#pragma omp threadprivate() // expected-error {{expected unqualified-id}}
-#pragma omp threadprivate(1) // expected-error {{expected unqualified-id}}
-struct CompleteSt{
- int a;
-};
-
-struct CompleteSt1{
-#pragma omp threadprivate(1) // expected-error {{expected unqualified-id}}
- int a;
-} d; // expected-note {{forward declaration of 'd'}}
-
-int a; // expected-note {{forward declaration of 'a'}}
-
-#pragma omp threadprivate(a)
-#pragma omp threadprivate(u) // expected-error {{use of undeclared identifier 'u'}}
-#pragma omp threadprivate(d, a) // expected-error {{'#pragma omp threadprivate' must precede all references to variable 'a'}}
-int foo() { // expected-note {{declared here}}
-  static int l;
-#pragma omp threadprivate(l)) // expected-warning {{extra tokens at end of '#pragma omp threadprivate' are ignored}}
-  return (a);
-}
-
-#pragma omp threadprivate a // expected-error {{expected '(' after 'threadprivate'}}
-#pragma omp threadprivate(d // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{'#pragma omp threadprivate' must precede all references to variable 'd'}}
-#pragma omp threadprivate(d))
-int x, y;
-#pragma omp threadprivate(x)) // expected-warning {{extra tokens at end of '#pragma omp threadprivate' are ignored}}
-#pragma omp threadprivate(y)), // expected-warning {{extra tokens at end of '#pragma omp threadprivate' are ignored}}
-#pragma omp threadprivate(a,d)  // expected-error {{'#pragma omp threadprivate' must precede all references to variable 'a'}} expected-error {{'#pragma omp threadprivate' must precede all references to variable 'd'}}
-#pragma omp threadprivate(d.a) // expected-error {{expected unqualified-id}}
-#pragma omp threadprivate((float)a) // expected-error {{expected unqualified-id}}
-int foa;
-#pragma omp threadprivate(faa) // expected-error {{use of undeclared identifier 'faa'; did you mean 'foa'?}}
-#pragma omp threadprivate(foo) // expected-error {{'foo' is not a global variable, static local variable or static data member}}
-#pragma omp threadprivate (int a=2) // expected-error {{expected unqualified-id}}
-
-struct IncompleteSt; // expected-note {{forward declaration of 'IncompleteSt'}}
-
-extern IncompleteSt e;
-#pragma omp threadprivate (e) // expected-error {{a threadprivate variable must not have incomplete type 'IncompleteSt'}}
-
-int &f = a; // expected-note {{forward declaration of 'f'}}
-#pragma omp threadprivate (f) // expected-error {{arguments of '#pragma omp threadprivate' cannot be of reference type 'int &'}}
-
-class Class {
-  private:
-    int a; // expected-note {{declared here}}
-    static int b;
-    Class() : a(0){}
-  public:
-    Class (int aaa) : a(aaa) {}
-#pragma omp threadprivate (b, a) // expected-error {{'a' is not a global variable, static local variable or static data member}}
-} g(10);
-#pragma omp threadprivate (b) // expected-error {{use of undeclared identifier 'b'}}
-#pragma omp threadprivate (Class::b) // expected-error {{expected unqualified-id}}
-#pragma omp threadprivate (g)
-
-namespace ns {
-  int m;
-#pragma omp threadprivate (m)
-}
-#pragma omp threadprivate (m) // expected-error {{use of undeclared identifier 'm'}}
-#pragma omp threadprivate (ns::m) // expected-error {{expected unqualified-id}}
-#pragma omp threadprivate (ns:m) // expected-error {{expected unqualified-id}}
-
-const int h = 12;
-const volatile int i = 10;
-#pragma omp threadprivate (h, i)
-
-
-template <class T>
-class TempClass {
-  private:
-    T a;
-    TempClass() : a(){}
-  public:
-    TempClass (T aaa) : a(aaa) {}
-    static T s;
-#pragma omp threadprivate (s)
-};
-#pragma omp threadprivate (s) // expected-error {{use of undeclared identifier 's'}}
-
-static __thread int t; // expected-note {{forward declaration of 't'}}
-#pragma omp threadprivate (t) // expected-error {{variable 't' cannot be threadprivate because it is thread-local}}
-
-int o; // expected-note {{candidate found by name lookup is 'o'}}
-namespace {
-int o; // expected-note {{candidate found by name lookup is '<anonymous namespace>::o'}}
-}
-#pragma omp threadprivate (o) // expected-error {{reference to 'o' is ambiguous}}
-
-int main(int argc, char **argv) { // expected-note {{forward declaration of 'argc'}}
-
-  int x, y = argc; // expected-note {{forward declaration of 'y'}}
-  static double d1;
-  static double d2;
-  static double d3; // expected-note {{forward declaration of 'd3'}}
-
-  d.a = a;
-  d2++;
-  ;
-#pragma omp threadprivate(argc+y) // expected-error {{expected unqualified-id}}
-#pragma omp threadprivate(argc,y) // expected-error 2 {{arguments of '#pragma omp threadprivate' must have static storage duration}}
-#pragma omp threadprivate(d2) // expected-error {{'#pragma omp threadprivate' must precede all references to variable 'd2'}}
-#pragma omp threadprivate(d1)
-  {
-  ++a;d2=0;
-#pragma omp threadprivate(d3) // expected-error {{'#pragma omp threadprivate' must appear in the scope of the 'd3' variable declaration}}
-  }
-#pragma omp threadprivate(d3)
-
-#pragma omp threadprivate(a) // expected-error {{'#pragma omp threadprivate' must appear in the scope of the 'a' variable declaration}}
-  return (y);
-#pragma omp threadprivate(d) // expected-error {{'#pragma omp threadprivate' must appear in the scope of the 'd' variable declaration}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/__va_list_tag.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/__va_list_tag.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/__va_list_tag.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// Header for PCH test __va_list_tag.h
-
-typedef __builtin_va_list va_list;
-
-extern int myvfprintf(const char * , va_list);

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/arc.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/arc.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/arc.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// Header for Objective-C ARC-related PCH tests
-
-typedef const void *CFTypeRef;
-typedef const struct __CFString *CFStringRef;
-
-CFTypeRef CFCreateSomething();
-CFStringRef CFCreateString();
-CFTypeRef CFGetSomething();
-CFStringRef CFGetString();
-
- at interface NSString
- at end
-
-id CreateSomething();
-NSString *CreateNSString();
-
-#if __has_feature(objc_arc)
-#define BRIDGE __bridge
-#else
-#define BRIDGE
-#endif
-
-typedef int array0[sizeof((BRIDGE id)CFCreateSomething())];
-typedef int array1[sizeof((BRIDGE CFTypeRef)CreateSomething())];
-
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/case-insensitive-include.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/case-insensitive-include.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/case-insensitive-include.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#pragma once
-
-struct S {
-  int x;
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-decls1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-decls1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-decls1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-void f();
-
-struct one {};
-void two();
-
-void many(int i);
-struct many;
-void many(int j);
-struct many;
-
-void noret();

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-decls2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-decls2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-decls2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-void g();
-
-struct two {};
-void one();
-struct three {}; // for verification
-
-void many(int k);
-struct many;
-void many(int l);
-struct many {};
-
-void noret() __attribute__((noreturn));

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-ext_vector1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-ext_vector1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-ext_vector1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// First header file for chain-ext_vector.c PCH test
-
-typedef __attribute__((ext_vector_type(2))) float float2;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-ext_vector2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-ext_vector2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-ext_vector2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// Second header file for chain-ext_vector.c PCH test
-
-typedef __attribute__((ext_vector_type(4))) float float4;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-external-defs1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-external-defs1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-external-defs1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Helper 1 for chain-external-defs.c test
-
-// Tentative definitions
-int x;
-int x2;
-
-// Should not show up
-static int z;
-
-int incomplete_array[];
-int incomplete_array2[];
-
-struct S s;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-external-defs2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-external-defs2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-external-defs2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Helper 2 for chain-external-defs.c test
-
-// Tentative definitions
-int y;
-int y2;
-
-// Should still not show up
-static int z;
-
-int incomplete_array[];
-int incomplete_array3[];

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro-override1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro-override1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro-override1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-void f() __attribute__((unavailable));
-void g();
-#define g() f()
-#define h() f()
-#define x x
-#define h2() f()
-
-#define h3()
-#undef h3

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro-override2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro-override2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro-override2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-#define f() g()
-#undef g
-#undef h
-#define h() g()
-int x;
-#undef h2
-
-int h3();

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#define FOOBAR void f();

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-macro2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#define BARFOO void g();

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-remap-types1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-remap-types1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-remap-types1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
- at class X;
-
-struct Y {
-  X *my_X;
-};
-
- at interface X {
-}
- at property X *prop;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-remap-types2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-remap-types2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-remap-types2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-void h(X*);
-
- at interface X (Blah) {
-}
- at end
-
-void g(X*);
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-selectors1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-selectors1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-selectors1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
- at interface X
-  -(void)f;
-  -(void)f2;
-  -(void)g:(int)p;
-  -(void)h:(int)p1 foo:(int)p2;
- at end
-
-void foo1() {
-  // FIXME: Can't verify warnings in headers
-  //(void)@selector(x);
-  (void)@selector(f);
-}
-
- at interface X (Blah)
-- (void)blah_method;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-selectors2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-selectors2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/chain-selectors2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
- at interface Y
-  -(void)f;
-  -(double)f2;
-  -(void)e;
- at end
-
-void foo2() {
-  // FIXME: Can't verify warnings in headers
-  //(void)@selector(y);
-  //(void)@selector(e);
-}
-
- at interface X (Blarg)
-- (void)blarg_method;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/cxx-method.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/cxx-method.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/cxx-method.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-struct S {
-  void m(int x);
-
-  S();
-  S(const S&);
-
-  operator const char*();
-  operator char*();
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/cxx11-statement-attributes.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/cxx11-statement-attributes.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/cxx11-statement-attributes.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// To be used with cxx11-statement-attributes.cpp.
-template<const int N>
-int f(int n) {
-  switch (n * N) {
-    case 0:
-      n += 15;
-      [[clang::fallthrough]];  // This shouldn't generate a warning.
-    case 1:
-      n += 20;
-      [[clang::fallthrough]];  // This should generate a warning: "fallthrough annotation does not directly precede switch label".
-      break;
-  }
-  return n;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/namespaces.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/namespaces.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/namespaces.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// Header for PCH test namespaces.cpp
-
-namespace N1 {
-  typedef int t1;
-}
-
-namespace N1 {
-  typedef int t2;
-
-  void used_func();
-
-  struct used_cls { };
-}
-
-namespace N2 {
-  typedef float t1;
-
-  namespace Inner {
-    typedef int t3;
-  };
-}
-
-namespace {
-  void anon() { }
-  class C;
-}
-
-namespace N3 {
-  namespace {
-    class C;
-  }
-}
-
-namespace Alias1 = N2::Inner;
-
-using namespace N2::Inner;
-
-extern "C" {
-  void ext();
-}
-
-inline namespace N4 { 
-  struct MemberOfN4;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/preamble.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/preamble.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/preamble.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int f(int);

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/typo.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/typo.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/typo.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-
-
- at interface NSString
-+ (id)alloc;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/typo.hpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/typo.hpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/typo.hpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-namespace boost {
-  template<typename F> class function {};
-
-  namespace graph {
-    template<typename V, typename E> class adjacency_list { }; 
-  };
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/va_arg.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/va_arg.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/va_arg.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#include <stdarg.h>
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/Inputs/working-directory-1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/Inputs/working-directory-1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/Inputs/working-directory-1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-template<typename T> struct A {
-  A() {
-    int a;
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/__va_list_tag.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/__va_list_tag.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/__va_list_tag.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// PR13189
-// rdar://problem/11741429
-// Test this without pch.
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include %S/Inputs/__va_list_tag.h %s -emit-llvm -o -
-
-// Test with pch.
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -emit-pch -x c-header -o %t %S/Inputs/__va_list_tag.h
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include-pch %t %s -verify
-
-// expected-no-diagnostics
-
-int myvprintf(const char *fmt, va_list args) {
-    return myvfprintf(fmt, args);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/arc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/arc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/arc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin11 -fobjc-arc -include %S/Inputs/arc.h -fsyntax-only -emit-llvm-only %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -fblocks -triple x86_64-apple-darwin11 -fobjc-arc -x objective-c-header -o %t %S/Inputs/arc.h
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin11 -fobjc-arc -include-pch %t -fsyntax-only -emit-llvm-only %s 
-
-// Test error when pch's -fobjc-arc state is different.
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin11 -include-pch %t -fsyntax-only -emit-llvm-only %s 2>&1 | FileCheck -check-prefix=ERR1 %s 
-// RUN: %clang_cc1 -emit-pch -fblocks -triple x86_64-apple-darwin11 -x objective-c-header -o %t %S/Inputs/arc.h
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin11 -fobjc-arc -include-pch %t -fsyntax-only -emit-llvm-only %s 2>&1 | FileCheck -check-prefix=ERR2 %s
-
-array0 a0;
-array1 a1;
-
-// CHECK-ERR1: Objective-C automated reference counting was enabled in PCH file but is currently disabled
-// CHECK-ERR2: Objective-C automated reference counting was disabled in PCH file but is currently enabled

Modified: trunk/contrib/llvm/tools/clang/test/PCH/asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -triple i386-unknown-unknown -include %S/asm.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-pch -o %t %S/asm.h
-// RUN: %clang_cc1 -triple i386-unknown-unknown -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-void call_f(void) { f(); }
-
-void call_clobbers(void) { clobbers(); }

Modified: trunk/contrib/llvm/tools/clang/test/PCH/asm.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/asm.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/asm.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// Header for the PCH test asm.c
-
-void f() {
-  int i;
-
-  asm ("foo\n" : : "a" (i + 2));
-  asm ("foo\n" : [symbolic_name] "=a" (i) : "[symbolic_name]" (i));
-}
-
-void clobbers() {
-  asm ("nop" : : : "ax", "#ax", "%ax");
-  asm ("nop" : : : "eax", "rax", "ah", "al");
-  asm ("nop" : : : "0", "%0", "#0");
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/attrs-PR8406.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/attrs-PR8406.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/attrs-PR8406.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %s -emit-llvm -o - %s | FileCheck %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -emit-llvm -o - %s | FileCheck %s
-
-#ifndef HEADER
-#define HEADER
-
-struct Bar
-{
-  // CHECK: align 512
-  int buffer[123] __attribute__((__aligned__(512)));
-};
-
-#else
-
-void foo() {
-  struct Bar bar;
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/attrs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/attrs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/attrs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %s -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-#ifndef HEADER
-#define HEADER
-
-int f(int) __attribute__((visibility("default"), overloadable));
-
-#else
-
-double f(double); // expected-error{{overloadable}}
-                  // expected-note at 11{{previous overload}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/badpch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/badpch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/badpch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -include-pch %S/Inputs/badpch-empty.h.gch %s 2>&1 | FileCheck -check-prefix=CHECK-EMPTY %s
-// RUN: %clang_cc1 -fsyntax-only -include-pch %S/Inputs/badpch-dir.h.gch %s 2>&1 | FileCheck -check-prefix=CHECK-DIR %s
-
-// The purpose of this test is to verify that various invalid PCH files are
-// reported as such.
-
-// PR4568: The messages were much improved since the bug was filed on
-// 2009-07-16, though in the case of the PCH being a directory, the error
-// message still did not contain the name of the PCH. Also, r149918 which was
-// submitted on 2012-02-06 introduced a segfault in the case where the PCH is
-// an empty file and clang was built with assertions.
-// CHECK-EMPTY: error: input is not a PCH file: '{{.*[/\\]}}badpch-empty.h.gch'
-// CHECK-DIR:error: no suitable precompiled header file found in directory '{{.*[/\\]}}badpch-dir.h.gch

Modified: trunk/contrib/llvm/tools/clang/test/PCH/blocks.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/blocks.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/blocks.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -fblocks -include %S/blocks.h -fsyntax-only -emit-llvm -o - %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -fblocks -o %t %S/blocks.h
-// RUN: %clang_cc1 -fblocks -include-pch %t -fsyntax-only -emit-llvm -o - %s 
-
-int do_add(int x, int y) { return add(x, y); }
-
-int do_scaled_add(int a, int b, int s) {
-  return scaled_add(a, b, s);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/blocks.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/blocks.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/blocks.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// Header for PCH test blocks.c
-
-int call_block(int (^bl)(int x, int y), int a, int b) {
-  return bl(a, b);
-}
-
-int add(int a, int b) {
-  return call_block(^(int x, int y) { return x + y; }, a, b);
-}
-
-int scaled_add(int a, int b, int s) {
-  __block int scale = s;
-  return call_block(^(int x, int y) { return x*scale + y; }, a, b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/builtins.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/builtins.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-void hello() {
-  printf("Hello, World!");
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/builtins.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/builtins.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/builtins.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// Header for PCH test builtins.c
-int printf(char const *, ...);

Modified: trunk/contrib/llvm/tools/clang/test/PCH/captured-stmt.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/captured-stmt.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/captured-stmt.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -x c++-header -emit-pch %s -o %t
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s
-
-// expected-no-diagnostics
-
-#ifndef HEADER_INCLUDED
-#define HEADER_INCLUDED
-
-static inline void foo(int &x, int y) {
-  // Capturing x and y
-  #pragma clang __debug captured
-  {
-    x += y;
-  }
-}
-
-struct C {
-  int val;
-
-  explicit C(int v) : val(v) { }
-
-  void bar(int &x) {
-    // Capturing x and this
-    #pragma clang __debug captured
-    {
-      x += val;
-    }
-  }
-};
-
-#else
-
-void test_foo(int &x) {
-  foo(x, 10);
-}
-
-void test_bar(int &x) {
-  C Obj(10);
-  Obj.bar(x);
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/case-insensitive-include.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/case-insensitive-include.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/case-insensitive-include.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// REQUIRES: case-insensitive-filesystem
-
-// Test this without pch.
-// RUN: cp %S/Inputs/case-insensitive-include.h %T
-// RUN: %clang_cc1 -fsyntax-only %s -include %s -I %T -verify
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t.pch %s -I %T
-
-// Modify inode of the header.
-// RUN: cp %T/case-insensitive-include.h %t.copy
-// RUN: touch -r %T/case-insensitive-include.h %t.copy
-// RUN: mv %t.copy %T/case-insensitive-include.h
-
-// RUN: %clang_cc1 -fsyntax-only %s -include-pch %t.pch -I %T -verify
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
-
-#include "case-insensitive-include.h"
-#include "Case-Insensitive-Include.h"
-
-#else
-
-#include "Case-Insensitive-Include.h"
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-categories.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-categories.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-categories.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// Without PCH
-// RUN: %clang_cc1 -fsyntax-only -verify -include %s -include %s %s
-
-// With PCH
-// RUN: %clang_cc1 -fsyntax-only -verify %s -chain-include %s -chain-include %s
-
-// expected-no-diagnostics
-
-#ifndef HEADER1
-#define HEADER1
-//===----------------------------------------------------------------------===//
-// Primary header
-
- at interface NSObject
-- (id)init;
-- (void)finalize;
- at end
-
-//===----------------------------------------------------------------------===//
-#elif !defined(HEADER2)
-#define HEADER2
-#if !defined(HEADER1)
-#error Header inclusion order messed up
-#endif
-
-//===----------------------------------------------------------------------===//
-// Dependent header
-
- at interface MyClass : NSObject
-+(void)meth;
- at end
-
- at interface NSObject(ObjExt)
--(void)extMeth;
- at end
-
-//===----------------------------------------------------------------------===//
-#else
-//===----------------------------------------------------------------------===//
-
- at implementation MyClass
-+(void)meth {}
--(void)finalize {
-  [super finalize];
-}
- at end
-
-void test(NSObject *o) {
-  [o extMeth];
-}
-
-//===----------------------------------------------------------------------===//
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-categories2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-categories2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-categories2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// Test that infinite loop in rdar://10418538 was fixed.
-
-// Without PCH
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class -include %s -include %s %s
-
-// With PCH
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s -chain-include %s -chain-include %s
-
-#ifndef HEADER1
-#define HEADER1
-//===----------------------------------------------------------------------===//
-// Primary header
-
- at class I;
-
- at interface I2
- at property (readonly) id prop1;
- at end
-
-//===----------------------------------------------------------------------===//
-#elif !defined(HEADER2)
-#define HEADER2
-#if !defined(HEADER1)
-#error Header inclusion order messed up
-#endif
-
-//===----------------------------------------------------------------------===//
-// Dependent header
-
- at interface I
- at end
-
- at interface I(Cat1)
- at end
-
- at interface I(Cat2)
- at end
-
- at interface I2()
- at property (readwrite,assign) id prop1;
- at property (copy) id prop2;
- at end
-
-//===----------------------------------------------------------------------===//
-#else
-//===----------------------------------------------------------------------===//
-
-void f(I* i) {
-  [i meth]; // expected-warning {{not found}}
-}
-
- at implementation I2
- at synthesize prop1, prop2;
- at end
-
-//===----------------------------------------------------------------------===//
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-class-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-class-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-class-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// Without PCH
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin10 -fobjc-arc %s -include %s -include %s
-
-// With PCH
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin10 -fobjc-arc %s -chain-include %s -chain-include %s
-
-// expected-no-diagnostics
-
-#ifndef HEADER1
-#define HEADER1
-//===----------------------------------------------------------------------===//
-// Primary header
-
- at interface I
-+(void)meth;
- at end
-
-//===----------------------------------------------------------------------===//
-#elif !defined(HEADER2)
-#define HEADER2
-#if !defined(HEADER1)
-#error Header inclusion order messed up
-#endif
-
-//===----------------------------------------------------------------------===//
-// Dependent header
-
- at interface I()
- at property (assign) id prop;
-+(void)meth2;
- at end
-
-//===----------------------------------------------------------------------===//
-#else
-//===----------------------------------------------------------------------===//
-
-void foo(I *i) {
-  [I meth];
-  [I meth2];
-  i.prop = 0;
-}
-
-//===----------------------------------------------------------------------===//
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-conversion-lookup.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-conversion-lookup.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-conversion-lookup.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -chain-include %s -chain-include %s
-
-#if !defined(PASS1)
-#define PASS1
-struct X {
-  operator int*();
-};
-
-struct Z {
-  operator int*();
-};
-#elif !defined(PASS2)
-#define PASS2
-struct Y {
-  operator int *();
-};
-#else
-int main() {
-  X x;
-  int *ip = x.operator int*();
-  Y y;
-  int *ip2 = y.operator int*();
-  Z z;
-  int *ip3 = z.operator int*();
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-cxx.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-cxx.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-cxx.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,144 +0,0 @@
-// Test C++ chained PCH functionality
-
-// Without PCH
-// RUN: %clang_cc1 -fsyntax-only -verify -include %s -include %s %s
-
-// With PCH
-// RUN: %clang_cc1 -fsyntax-only -verify %s -chain-include %s -chain-include %s
-
-// expected-no-diagnostics
-
-#ifndef HEADER1
-#define HEADER1
-//===----------------------------------------------------------------------===//
-// Primary header for C++ chained PCH test
-
-void f();
-
-// Name not appearing in dependent
-void pf();
-
-namespace ns {
-  void g();
-
-  void pg();
-}
-
-template <typename T>
-struct S { typedef int G; };
-
-// Partially specialize
-template <typename T>
-struct S<T *> { typedef int H; };
-
-template <typename T> struct TS2;
-typedef TS2<int> TS2int;
-
-template <typename T> struct TestBaseSpecifiers { };
-template<typename T> struct TestBaseSpecifiers2 : TestBaseSpecifiers<T> { };
-
-template <typename T>
-struct TS3 {
-  static const int value = 0;
-  static const int value2;
-};
-template <typename T>
-const int TS3<T>::value;
-template <typename T>
-const int TS3<T>::value2 = 1;
-// Instantiate struct, but not value.
-struct instantiate : TS3<int> {};
-
-// Typedef
-typedef int Integer;
-
-//===----------------------------------------------------------------------===//
-#elif not defined(HEADER2)
-#define HEADER2
-#if !defined(HEADER1)
-#error Header inclusion order messed up
-#endif
-
-//===----------------------------------------------------------------------===//
-// Dependent header for C++ chained PCH test
-
-// Overload function from primary
-void f(int);
-
-// Add function with different name
-void f2();
-
-// Reopen namespace
-namespace ns {
-  // Overload function from primary
-  void g(int);
-
-  // Add different name
-  void g2();
-}
-
-// Specialize template from primary
-template <>
-struct S<int> { typedef int I; };
-
-// Partially specialize
-template <typename T>
-struct S<T &> { typedef int J; };
-
-// Specialize previous partial specialization
-template <>
-struct S<int *> { typedef int K; };
-
-// Specialize the partial specialization from this file
-template <>
-struct S<int &> { typedef int L; };
-
-template <typename T> struct TS2 { };
-
-struct TestBaseSpecifiers3 { };
-struct TestBaseSpecifiers4 : TestBaseSpecifiers3 { };
-
-struct A { };
-struct B : A { };
-
-// Instantiate TS3's members.
-static const int ts3m1 = TS3<int>::value;
-extern int arr[TS3<int>::value2];
-
-// Redefinition of typedef
-typedef int Integer;
-
-//===----------------------------------------------------------------------===//
-#else
-//===----------------------------------------------------------------------===//
-
-void test() {
-  f();
-  f(1);
-  pf();
-  f2();
-
-  ns::g();
-  ns::g(1);
-  ns::pg();
-  ns::g2();
-
-  typedef S<double>::G T1;
-  typedef S<double *>::H T2;
-  typedef S<int>::I T3;
-  typedef S<double &>::J T4;
-  typedef S<int *>::K T5;
-  typedef S<int &>::L T6;
-
-  TS2int ts2;
-
-  B b;
-  Integer i = 17;
-}
-
-// Should have remembered that there is a definition.
-static const int ts3m2 = TS3<int>::value;
-int arr[TS3<int>::value2];
-
-//===----------------------------------------------------------------------===//
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/Inputs/chain-decls1.h -include %S/Inputs/chain-decls2.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t1 %S/Inputs/chain-decls1.h
-// RUN: %clang_cc1 -emit-pch -o %t2 %S/Inputs/chain-decls2.h -include-pch %t1
-// RUN: %clang_cc1 -include-pch %t2 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -ast-print -include-pch %t2 %s | FileCheck %s
-
-// expected-no-diagnostics
-
-// CHECK: void f();
-// CHECK: void g();
-
-int h() {
-  f();
-  g();
-
-  struct one x;
-  one();
-  struct two y;
-  two();
-  struct three z;
-
-  many(0);
-  struct many m;
-
-  noret();
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-empty-initial-namespace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-empty-initial-namespace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-empty-initial-namespace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// no PCH
-// RUN: %clang_cc1 -include %s -include %s -fsyntax-only %s
-// full PCH
-// RUN: %clang_cc1 -chain-include %s -chain-include %s -fsyntax-only %s
-#if !defined(PASS1)
-#define PASS1
-
-namespace foo {} // no external storage
-
-#elif !defined(PASS2)
-#define PASS2
-
-namespace foo {
-  void bar();
-}
-
-#else
-// PASS3
-
-void test() {
-  foo::bar(); // no-error
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-ext_vector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-ext_vector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-ext_vector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/Inputs/chain-ext_vector1.h -include %S/Inputs/chain-ext_vector2.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t1 %S/Inputs/chain-ext_vector1.h
-// RUN: %clang_cc1 -emit-pch -o %t2 %S/Inputs/chain-ext_vector2.h -include-pch %t1
-// RUN: %clang_cc1 -include-pch %t2 -fsyntax-only -verify %s
-
-int test(float4 f4) {
-  return f4.xy; // expected-error{{float2}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-external-defs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-external-defs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-external-defs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// Test with pch.
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t1.pch %S/Inputs/chain-external-defs1.h
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t2.pch %S/Inputs/chain-external-defs2.h -include-pch %t1.pch
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -include-pch %t2.pch -emit-llvm -o %t %s
-// RUN: echo FINI >> %t
-// RUN: FileCheck -input-file=%t -check-prefix=Z %s
-// RUN: FileCheck -input-file=%t -check-prefix=XA %s
-// RUN: FileCheck -input-file=%t -check-prefix=YA %s
-// RUN: FileCheck -input-file=%t -check-prefix=XB %s
-// RUN: FileCheck -input-file=%t -check-prefix=YB %s
-// RUN: FileCheck -input-file=%t -check-prefix=AA %s
-// RUN: FileCheck -input-file=%t -check-prefix=AB %s
-// RUN: FileCheck -input-file=%t -check-prefix=AC %s
-// RUN: FileCheck -input-file=%t -check-prefix=S %s
-
-// Z-NOT: @z
-
-// XA: @x = common global i32 0
-// XA-NOT: @x = common global i32 0
-
-// YA: @y = common global i32 0
-// YA-NOT: @y = common global i32 0
-
-// XB: @x2 = global i32 19
-// XB-NOT: @x2 = global i32 19
-int x2 = 19;
-// YB: @y2 = global i32 18
-// YB-NOT: @y2 = global i32 18
-int y2 = 18;
-
-// AA: @incomplete_array = common global [1 x i32]
-// AA-NOT: @incomplete_array = common global [1 x i32]
-// AB: @incomplete_array2 = common global [17 x i32]
-// AB-NOT: @incomplete_array2 = common global [17 x i32]
-int incomplete_array2[17];
-// AC: @incomplete_array3 = common global [1 x i32]
-// AC-NOT: @incomplete_array3 = common global [1 x i32]
-int incomplete_array3[];
-
-// S: @s = common global %struct.S
-// S-NOT: @s = common global %struct.S
-struct S {
-  int x, y;
-};
-
-// Z: FINI
-// XA: FINI
-// YA: FINI
-// XB: FINI
-// YB: FINI
-// AA: FINI
-// AB: FINI
-// AC: FINI
-// S: FINI

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-friend-instantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-friend-instantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-friend-instantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 %s -ast-print -o - -chain-include %s -chain-include %s
-
-#if !defined(PASS1)
-#define PASS1
-
-template <class T> class TClass;
-
-namespace NS {
-    template <class X, class Y> TClass<X> problematic(X * ptr, const TClass<Y> &src);
-
-    template <class T>
-    class TBaseClass
-    {
-    protected:
-        template <class X, class Y> friend TClass<X> problematic(X * ptr, const TClass<Y> &src);
-    };
-}
-
-template <class T>
-class TClass: public NS::TBaseClass<T>
-{
-public:
-    inline TClass() { }
-};
-
-
-namespace NS {
-    template <class X, class T>
-    TClass<X> problematic(X *ptr, const TClass<T> &src);
-}
-
-template <class X, class T>
-TClass<X> unconst(const TClass<T> &src);
-
-#elif !defined(PASS2)
-#define PASS2
-
-namespace std {
-class s {};
-}
-
-
-typedef TClass<std::s> TStr;
-
-struct crash {
-  TStr str;
-
-  crash(const TClass<std::s> p)
-  {
-    unconst<TStr>(p);
-  }
-};
-
-#else
-
-void f() {
-    const TStr p;
-    crash c(p);
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-implicit-definition.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-implicit-definition.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-implicit-definition.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// no PCH
-// RUN: %clang_cc1 -emit-llvm-only -include %s -include %s %s
-// with PCH
-// RUN: %clang_cc1 -emit-llvm-only -chain-include %s -chain-include %s %s
-#if !defined(PASS1)
-#define PASS1
-
-// A base with a virtual dtor.
-struct A {
-  virtual ~A();
-};
-
-// A derived class with an implicit virtual dtor.
-struct B : A {
-  // Key function to suppress vtable definition.
-  virtual void virt();
-};
-
-#elif !defined(PASS2)
-#define PASS2
-
-// Further derived class that requires ~B().
-// Causes definition of ~B(), but it was lost when saving PCH.
-struct C : B {
-  C();
-  ~C() {}
-};
-
-#else
-
-void foo() {
-  // Variable that requires ~C().
-  C c;
-}
-
-// VTable placement would again cause definition of ~B(), hiding the bug,
-// if not for B::virt(), which suppresses the placement.
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-late-anonymous-namespace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-late-anonymous-namespace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-late-anonymous-namespace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// no PCH
-// RUN: %clang_cc1 -include %s -include %s -fsyntax-only %s
-// with PCH
-// RUN: %clang_cc1 -chain-include %s -chain-include %s -fsyntax-only %s
-// with PCH, with modules enabled
-// RUN: %clang_cc1 -chain-include %s -chain-include %s -fsyntax-only -fmodules %s
-#if !defined(PASS1)
-#define PASS1
-
-namespace ns {}
-namespace os {}
-
-#elif !defined(PASS2)
-#define PASS2
-
-namespace ns {
-  namespace {
-    extern int x;
-  }
-}
-
-namespace {
-  extern int y;
-}
-namespace {
-}
-
-namespace os {
-  extern "C" {
-    namespace {
-      extern int z;
-    }
-  }
-}
-
-#else
-
-namespace ns {
-  namespace {
-    int x;
-  }
-  void test() {
-    (void)x;
-  }
-}
-
-namespace {
-  int y;
-}
-void test() {
-  (void)y;
-}
-
-namespace os {
-  namespace {
-    int z;
-  }
-  void test() {
-    (void)z;
-  }
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-macro-override.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-macro-override.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-macro-override.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/Inputs/chain-macro-override1.h -include %S/Inputs/chain-macro-override2.h -fsyntax-only -verify -detailed-preprocessing-record %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t1 %S/Inputs/chain-macro-override1.h -detailed-preprocessing-record 
-// RUN: %clang_cc1 -emit-pch -o %t2 %S/Inputs/chain-macro-override2.h -include-pch %t1 -detailed-preprocessing-record 
-// RUN: %clang_cc1 -include-pch %t2 -fsyntax-only -verify %s
-
-int foo() {
-  f();
-  g();
-  h();
-  h2(); // expected-warning{{implicit declaration of function 'h2' is invalid in C99}}
-  h3();
-  return x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-macro.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-macro.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-macro.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t1 -detailed-preprocessing-record %S/Inputs/chain-macro1.h
-// RUN: %clang_cc1 -emit-pch -o %t2 -detailed-preprocessing-record %S/Inputs/chain-macro2.h -include-pch %t1
-// RUN: %clang_cc1 -fsyntax-only -verify -include-pch %t2 %s
-// RUN: %clang_cc1 -ast-print -include-pch %t2 %s | FileCheck %s
-// expected-no-diagnostics
-
-// CHECK: void f();
-FOOBAR
-// CHECK: void g();
-BARFOO

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-pending-instantiations.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-pending-instantiations.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-pending-instantiations.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -emit-llvm -o - -chain-include %s -chain-include %s | FileCheck %s
-// CHECK: define linkonce_odr %{{[^ ]+}} @_ZN1AI1BE3getEv
-#if !defined(PASS1)
-#define PASS1
-
-template <typename Derived>
-struct A {
-  Derived* get() { return 0; }
-};
-
-struct B : A<B> {
-};
-
-#elif !defined(PASS2)
-#define PASS2
-
-struct C : B {
-};
-
-struct D : C {
-  void run() {
-    (void)get();
-  }
-};
-
-#else
-
-int main() {
-  D d;
-  d.run();
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-predecl.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-predecl.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-predecl.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// First header for chain-predecl.m
- at class Foo;
- at protocol Pro;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-predecl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-predecl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-predecl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t1 %S/chain-predecl.h -x objective-c
-// RUN: %clang_cc1 -emit-pch -o %t2 %s -x objective-c -include-pch %t1
-
-// Test predeclarations across chained PCH.
- at interface Foo
--(void)bar;
- at end
- at interface Boom
--(void)bar;
- at end
- at protocol Pro
--(void)baz;
- at end
- at protocol Kaboom
--(void)baz;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-remap-types.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-remap-types.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-remap-types.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -x objective-c-header -o %t1 %S/Inputs/chain-remap-types1.h
-// RUN: %clang_cc1 -emit-pch -x objective-c-header -o %t2 %S/Inputs/chain-remap-types2.h -include-pch %t1
-// RUN: %clang_cc1 -include-pch %t2 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -ast-print -include-pch %t2 %s | FileCheck %s
-// expected-no-diagnostics
-
-// CHECK: @class X;
-// CHECK: struct Y 
-// CHECK: @property ( assign,readwrite,atomic ) X * prop
-// CHECK: void h(X *);
-// CHECK: @interface X(Blah)
-// CHECK: void g(X *);
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-selectors.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-selectors.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-selectors.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s -Wselector -include %S/Inputs/chain-selectors1.h -include %S/Inputs/chain-selectors2.h
-
-// RUN: %clang_cc1 -x objective-c -Wno-objc-root-class -emit-pch -o %t1 %S/Inputs/chain-selectors1.h
-// RUN: %clang_cc1 -x objective-c -Wno-objc-root-class -emit-pch -o %t2 %S/Inputs/chain-selectors2.h -include-pch %t1
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s -Wselector -include-pch %t2
-
- at implementation X
--(void)f {}
--(void)f2 {}
--(void)g: (int)p {}
--(void)h: (int)p1 foo: (int)p2 {}
- at end
-
-void bar() {
-  id a = 0;
-  [a nothing]; // expected-warning {{method '-nothing' not found}}
-  [a f];
-  // FIXME: Can't verify notes in headers
-  //[a f2];
-
-  (void)@selector(x); // expected-warning {{unimplemented selector}}
-  (void)@selector(y); // expected-warning {{unimplemented selector}}
-  (void)@selector(e); // expected-warning {{unimplemented selector}}
-}
-
- at implementation X (Blah)
-- (void)test_Blah {
-  [self blah_method];
-}
-
-- (void)blah_method { }
- at end
-
- at implementation X (Blarg)
-- (void)test_Blarg {
-  [self blarg_method];
-}
-
-- (void)blarg_method { }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-staticvar-instantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-staticvar-instantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-staticvar-instantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// Without PCH
-// RUN: %clang_cc1 -fsyntax-only -verify -include %s -include %s %s
-
-// With PCH
-// RUN: %clang_cc1 -fsyntax-only -verify %s -chain-include %s -chain-include %s
-
-#ifndef HEADER1
-#define HEADER1
-//===----------------------------------------------------------------------===//
-
-namespace NS {
-
-template <class _Tp, _Tp __v>
-struct TS
-{
-  static const _Tp value = __v;
-};
-
-template <class _Tp, _Tp __v>
-const _Tp TS<_Tp, __v>::value;
-
-TS<int, 2> g1;
-
-}
-
-//===----------------------------------------------------------------------===//
-#elif not defined(HEADER2)
-#define HEADER2
-#if !defined(HEADER1)
-#error Header inclusion order messed up
-#endif
-
-int g2 = NS::TS<int, 2>::value;
-
-//===----------------------------------------------------------------------===//
-#else
-//===----------------------------------------------------------------------===//
-
-// expected-warning at +1 {{reached main file}}
-#warning reached main file
-
-int g3 = NS::TS<int, 2>::value;
-
-//===----------------------------------------------------------------------===//
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/chain-trivial.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/chain-trivial.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/chain-trivial.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-pch -o %t1 %S/Inputs/chain-trivial1.h
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-pch -o %t2 -include-pch %t1 %S/Inputs/chain-trivial2.h

Modified: trunk/contrib/llvm/tools/clang/test/PCH/changed-files.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/changed-files.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/changed-files.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-const char *s0 = m0;
-int s1 = m1;
-const char *s2 = m0;
-
-// FIXME: This test fails inexplicably on Windows in a manner that makes it 
-// look like standard error isn't getting flushed properly.
-
-// RUN: false
-// XFAIL: *
-
-// RUN: echo '#define m0 ""' > %t.h
-// RUN: %clang_cc1 -emit-pch -o %t.h.pch %t.h
-// RUN: echo '' > %t.h
-// RUN: not %clang_cc1 -include-pch %t.h.pch %s 2> %t.stderr
-// RUN: grep "modified" %t.stderr
-
-// RUN: echo '#define m0 000' > %t.h
-// RUN: %clang_cc1 -emit-pch -o %t.h.pch %t.h
-// RUN: echo '' > %t.h
-// RUN: not %clang_cc1 -include-pch %t.h.pch %s 2> %t.stderr
-// RUN: grep "modified" %t.stderr
-
-// RUN: echo '#define m0 000' > %t.h
-// RUN: echo "#define m1 'abcd'" >> %t.h
-// RUN: %clang_cc1 -emit-pch -o %t.h.pch %t.h
-// RUN: echo '' > %t.h
-// RUN: not %clang_cc1 -include-pch %t.h.pch %s 2> %t.stderr
-// RUN: grep "modified" %t.stderr

Modified: trunk/contrib/llvm/tools/clang/test/PCH/check-deserializations.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/check-deserializations.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/check-deserializations.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -error-on-deserialized-decl S1_method -include-pch %t -emit-llvm-only %s 
-
-#ifndef HEADER
-#define HEADER
-// Header.
-
-struct S1 {
-  void S1_method(); // This should not be deserialized.
-  virtual void S1_keyfunc();
-};
-
-
-#else
-// Using the header.
-
-void test(S1*) {
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -include %S/cmdline-include1.h -x c-header %S/cmdline-include2.h -emit-pch -o %t
-// RUN: %clang_cc1 %s -include-pch %t -fsyntax-only -verify
-// RUN: %clang_cc1 -x c-header %S/cmdline-include1.h -emit-pch -o %t
-// RUN: %clang_cc1 %s -include-pch %t -include %S/cmdline-include2.h -fsyntax-only -verify
-// expected-no-diagnostics
-
-int g = x1 + x2;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-enum { x1 };

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cmdline-include2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-enum { x2 };

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cocoa.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cocoa.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cocoa.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang -arch x86_64 -x objective-c-header %s -o %t.h.pch
-// RUN: touch %t.empty.m
-// RUN: %clang -arch x86_64 -fsyntax-only %t.empty.m -include %t.h -Xclang -ast-dump 2>&1 > /dev/null
-#ifdef __APPLE__
-#include <Cocoa/Cocoa.h>
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/crash-12631281.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/crash-12631281.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/crash-12631281.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -emit-pch -o %t.pch
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -include-pch %t.pch -verify
-// expected-no-diagnostics
-
-// rdar://12631281
-// This reduced test case exposed a use-after-free memory bug, which was reliable
-// reproduced only on guarded malloc (and probably valgrind).
-
-#ifndef HEADER
-#define HEADER
-
-template < class _T2> struct  is_convertible;
-template <> struct is_convertible<int> { typedef int type; };
-
-template <class _T1, class _T2> struct  pair {
-  typedef _T1 first_type;
-  typedef _T2 second_type;
-  template <class _U1, class _U2, class = typename is_convertible< first_type>::type>
-    pair(_U1&& , _U2&& ); // expected-note {{candidate}}
-};
-
-template <class _ForwardIterator>
-pair<_ForwardIterator, _ForwardIterator> __equal_range(_ForwardIterator) {
-  return pair<_ForwardIterator, _ForwardIterator>(0, 0); // expected-error {{no matching constructor}}
-}
-
-template <class _ForwardIterator>
-pair<_ForwardIterator, _ForwardIterator> equal_range( _ForwardIterator a) {
-  return __equal_range(a); // expected-note {{instantiation}}
-}
-
-class A {
-  pair<int, int> range() {
-    return equal_range(0); // expected-note {{instantiation}}
-  }
-};
-
-#else
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cuda-kernel-call.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cuda-kernel-call.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cuda-kernel-call.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only %s 
-
-#ifndef HEADER
-#define HEADER
-// Header.
-
-#include "../SemaCUDA/cuda.h"
-
-void kcall(void (*kp)()) {
-  kp<<<1, 1>>>();
-}
-
-__global__ void kern() {
-}
-
-#else
-// Using the header.
-
-void test() {
-  kcall(kern);
-  kern<<<1, 1>>>();
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-alias-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-alias-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-alias-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -x c++ -std=c++11 -include %S/cxx-alias-decl.h -fsyntax-only -emit-llvm -o - %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++ -std=c++11 -emit-pch -o %t %S/cxx-alias-decl.h
-// RUN: %clang_cc1 -x c++ -std=c++11 -include-pch %t -fsyntax-only -emit-llvm -o - %s 
-
-template struct T<S>;
-C<A>::A<char> a;
-
-using T1 = decltype(a);
-using T1 = D<int, char>;
-
-using T2 = B<A>;
-using T2 = S;
-
-using A = int;
-template<typename U> using B = S;
-template<typename U> using C = T<U>;
-template<typename U, typename V> using D = typename T<U>::template A<V>;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-alias-decl.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-alias-decl.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-alias-decl.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Header for PCH test cxx-alias-decl.cpp
-
-struct S {};
-template<typename U> struct T {
-  template<typename V> using A = T<V>;
-};
-
-using A = int;
-template<typename U> using B = S;
-template<typename U> using C = T<U>;
-template<typename U, typename V> using D = typename T<U>::template A<V>;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-chain-function-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-chain-function-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-chain-function-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -chain-include %s -chain-include %s -fsyntax-only %s
-// Just don't crash.
-#if !defined(RUN1)
-#define RUN1
-
-struct CXXRecordDecl { CXXRecordDecl(int); };
-
-template <typename T, typename U>
-T cast(U u) {
-  return reinterpret_cast<T&>(u);
-}
-
-void test1() {
-  cast<float>(1);
-}
-
-#elif !defined(RUN2)
-#define RUN2
-
-template <typename T>
-void test2(T) {
-  cast<CXXRecordDecl>(1.0f);
-}
-
-#else
-
-void test3() {
-  cast<CXXRecordDecl>(1.0f);
-  test2(1);
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-constexpr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-constexpr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-constexpr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -pedantic-errors -std=c++98 -emit-pch %s -o %t
-// RUN: %clang_cc1 -pedantic-errors -std=c++98 -include-pch %t -verify %s
-
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -emit-pch %s -o %t-cxx11
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -include-pch %t-cxx11 -verify %s
-
-// RUN: %clang_cc1 -pedantic-errors -std=c++98 -emit-pch %s -o %t -fmodules
-// RUN: %clang_cc1 -pedantic-errors -std=c++98 -include-pch %t -verify %s -fmodules
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-extern const int a;
-const int b = a;
-
-#else
-
-const int a = 5;
-typedef int T[b]; // expected-error {{variable length array}} expected-error {{must be an integer constant expression}}
-typedef int T[5];
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-exprs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-exprs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-exprs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %s -verify -std=c++11 %s
-
-// Test with pch.
-// RUN: %clang_cc1 -std=c++11 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -verify -std=c++11 %s 
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
-
-template<typename T>
-class New {
-  New(const New&);
-
-public:
-  New *clone() {
-    return new New(*this);
-  }
-};
-
-#else
-
-New<int> *clone_new(New<int> *n) {
-  return n->clone();
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-for-range.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-for-range.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-for-range.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -x c++ -std=c++11 -include %S/cxx-for-range.h -fsyntax-only -emit-llvm -o - %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++ -std=c++11 -emit-pch -o %t %S/cxx-for-range.h
-// RUN: %clang_cc1 -x c++ -std=c++11 -include-pch %t -fsyntax-only -emit-llvm -o - %s 
-
-void h() {
-  f();
-
-  g<int>();
-
-  char a[3] = { 0, 1, 2 };
-  for (auto w : a)
-    for (auto x : S())
-      for (auto y : T())
-        for (auto z : U())
-          ;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-for-range.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-for-range.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-for-range.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// Header for PCH test cxx-for-range.cpp
-
-struct S {
-  int *begin();
-  int *end();
-};
-
-struct T { };
-char *begin(T);
-char *end(T);
-
-namespace NS {
-  struct U { };
-  char *begin(U);
-  char *end(U);
-}
-using NS::U;
-
-void f() {
-  char a[3] = { 0, 1, 2 };
-  for (auto w : a)
-    for (auto x : S())
-      for (auto y : T())
-        for (auto z : U())
-          ;
-}
-
-template<typename A>
-void g() {
-  A a[3] = { 0, 1, 2 };
-  for (auto &v : a)
-    for (auto x : S())
-      for (auto y : T())
-        for (auto z : U())
-          ;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-friends.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-friends.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-friends.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/cxx-friends.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-friends.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-class F {
-  void m() {
-    A* a;
-    a->x = 0;
-  }
-};
-
-template<typename T> class PR12585::future_base::setter {
-public:
-  int f() {
-    return promise<T*>().k;
-  }
-};
-int k = PR12585::future_base::setter<int>().f();

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-friends.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-friends.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-friends.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// Header for PCH test cxx-friends.cpp
-
-class A {
-  int x;
-  friend class F;
-};
-
-namespace PR12585 {
-  struct future_base {
-    template<typename> class setter;
-  };
-  template<typename> class promise {
-    // We used to inject this into future_base with no access specifier,
-    // then crash during AST writing.
-    template<typename> friend class future_base::setter;
-    int k;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/cxx-functions.h -fsyntax-only -verify %s
-
-// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-functions.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s
-
-// expected-no-diagnostics
-
-
-void test_foo() {
-  foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-functions.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-functions.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-functions.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-void foo() throw( int, short, char, float, double );

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-implicit-moves.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-implicit-moves.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-implicit-moves.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// Test with PCH
-// RUN: %clang_cc1 -std=c++11 -x c++-header -emit-pch -o %t %s
-// RUN: %clang_cc1 -std=c++11 -include-pch %t -verify %s
-// expected-no-diagnostics
-
-// PR10847
-#ifndef HEADER
-#define HEADER
-struct NSSize {
-  double width;
-  double height;
-};
-typedef struct NSSize NSSize;
-
-static inline NSSize NSMakeSize(double w, double h) {
-    NSSize s = { w, h };
-    return s;
-}
-#else
-float test(float v1, float v2) {
-	NSSize s = NSMakeSize(v1, v2);
-	return s.width;
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-member-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-member-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-member-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -DSOURCE -fsyntax-only -emit-llvm -o - %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -emit-pch -o %t %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -DHEADER -include-pch %t -fsyntax-only -emit-llvm -o - %s 
-
-#ifdef HEADER
-int n;
-struct S {
-  int *p = &m;
-  int &m = n;
-  S *that = this;
-};
-template<typename T> struct X { T t {0}; };
-#endif
-
-#ifdef SOURCE
-S s;
-
-struct E { explicit E(int); };
-X<E> x;
-#elif HEADER
-#undef HEADER
-#define SOURCE
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-method.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-method.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-method.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -x c++ -include %S/Inputs/cxx-method.h -verify %s
-// RUN: %clang_cc1 -x c++ -emit-pch %S/Inputs/cxx-method.h -o %t
-// RUN: %clang_cc1 -include-pch %t -verify %s
-// expected-no-diagnostics
-
-void S::m(int x) { }
-
-S::operator char *() { return 0; }
-
-S::operator const char *() { return 0; }
-
-struct T : S {};
-
-const T a = T();
-T b(a);

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-ms-function-specialization-class-scope.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-ms-function-specialization-class-scope.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-ms-function-specialization-class-scope.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -triple i386-unknown-unknown  -x c++-header -emit-pch -o %t %S/cxx-ms-function-specialization-class-scope.h
-// RUN: %clang_cc1 -fms-extensions -triple i386-unknown-unknown -include-pch %t -fsyntax-only -verify %s 
-// expected-no-diagnostics
-
-
-void test2()
-{
-   B<char> b(3);
-   char* ptr;
-   b.f(ptr);
-   b.f<int>(99);
-   b.f(100);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-ms-function-specialization-class-scope.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-ms-function-specialization-class-scope.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-ms-function-specialization-class-scope.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-
-
-
-template <class T>
-class B {
-public:
-	template <class U>
-    B(U p) { 
-	}
-	template <>
-    B(int p) { // expected-warning{{explicit specialization of 'B<T>' within class scope is a Microsoft extension}}
-	}
-	
-	template <class U>
-    void f(U p) {
-	  T y = 9;
-	}
-
-
-    template <>
-    void f(int p) { // expected-warning{{explicit specialization of 'f' within class scope is a Microsoft extension}}
-	  T a = 3;
-	}
-
-	void f(int p) { 
- 	  T a = 3;
-    }
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-namespaces.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-namespaces.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-namespaces.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/cxx-namespaces.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-namespaces.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-void m() {
-  N::x = 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-namespaces.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-namespaces.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-namespaces.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// Header for PCH test cxx-namespaces.cpp
-
-namespace N {
-    namespace {
-        int x;
-    }
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-offsetof-base.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-offsetof-base.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-offsetof-base.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-offsetof-base.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only %s 

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-offsetof-base.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-offsetof-base.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-offsetof-base.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// Header for PCH test cxx-offsetof-base.cpp
-
-struct Base { int x; };
-struct Derived : Base { int y; };
-int o = __builtin_offsetof(Derived, x);

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -x c++ -std=c++11 -include %S/cxx-reference.h -fsyntax-only -emit-llvm -o - %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++ -std=c++11 -emit-pch -o %t %S/cxx-reference.h
-// RUN: %clang_cc1 -x c++ -std=c++11 -include-pch %t -fsyntax-only -emit-llvm -o - %s 

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-reference.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-reference.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-reference.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Header for PCH test cxx-reference.cpp
-
-typedef char (&LR);
-typedef char (&&RR);
-
-char c;
-
-char &lr = c;
-char &&rr = 'c';
-LR &lrlr = c;
-LR &&rrlr = c;
-RR &lrrr = c;
-RR &&rrrr = 'c';

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-required-decls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-required-decls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-required-decls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/cxx-required-decls.h %s -emit-llvm -o - | FileCheck %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-required-decls.h
-// RUN: %clang_cc1 -include-pch %t %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: @_ZL5globS = internal global %struct.S zeroinitializer
-// CHECK: @_ZL3bar = internal global i32 0, align 4
-// CHECK: @glob_var = global i32 0

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-required-decls.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-required-decls.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-required-decls.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Header for PCH test cxx-required-decls.cpp
-
-struct S {
-  S();
-};
-
-static S globS;
-
-extern int ext_foo;
-static int bar = ++ext_foo;
-
-int glob_var;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-static_assert.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-static_assert.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-static_assert.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %s -verify -std=c++11 %s
-
-// Test with pch.
-// RUN: %clang_cc1 -std=c++11 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -verify -std=c++11 %s 
-
-#ifndef HEADER
-#define HEADER
-
-template<int N> struct T {
-    static_assert(N == 2, "N is not 2!");
-};
-
-#else
-
-// expected-error at 12 {{static_assert failed "N is not 2!"}}
-T<1> t1; // expected-note {{in instantiation of template class 'T<1>' requested here}}
-T<2> t2;
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -fexceptions -include %S/cxx-templates.h -verify %s -ast-dump -o -
-// RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -fexceptions -include %S/cxx-templates.h %s -emit-llvm -o - | FileCheck %s
-
-// Test with pch.
-// RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -fexceptions -x c++-header -emit-pch -o %t %S/cxx-templates.h
-// RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -fexceptions -include-pch %t -verify %s -ast-dump  -o -
-// RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -fexceptions -include-pch %t %s -emit-llvm -o - -error-on-deserialized-decl doNotDeserialize | FileCheck %s
-
-// expected-no-diagnostics
-
-// CHECK: define weak_odr void @_ZN2S4IiE1mEv
-// CHECK: define linkonce_odr void @_ZN2S3IiE1mEv
-
-struct A {
-  typedef int type;
-  static void my_f();
-  template <typename T>
-  static T my_templf(T x) { return x; }
-};
-
-void test(const int (&a6)[17]) {
-  int x = templ_f<int, 5>(3);
-  
-  S<char, float>::templ();
-  S<int, char>::partial();
-  S<int, float>::explicit_special();
-  
-  Dep<A>::Ty ty;
-  Dep<A> a;
-  a.f();
-  
-  S3<int> s3;
-  s3.m();
-
-  TS5 ts(0);
-
-  S6<const int[17]>::t2 b6 = a6;
-}
-
-template struct S4<int>;
-
-S7<int[5]> s7_5;
-
-namespace ZeroLengthExplicitTemplateArgs {
-  template void f<X>(X*);
-}
-
-// This used to overwrite memory and crash.
-namespace Test1 {
-  struct StringHasher {
-    template<typename T, char Converter(T)> static inline unsigned createHash(const T*, unsigned) {
-      return 0;
-    }
-  };
-
-  struct CaseFoldingHash {
-    static inline char foldCase(char) {
-      return 0;
-    }
-
-    static unsigned hash(const char* data, unsigned length) {
-      return StringHasher::createHash<char, foldCase>(data, length);
-    }
-  };
-}
-
-template< typename D >
-Foo< D >& Foo< D >::operator=( const Foo& other )
-{
-   return *this;
-}
-
-namespace TestNestedExpansion {
-  struct Int {
-    Int(int);
-    friend Int operator+(Int, Int);
-  };
-  Int &g(Int, int, double);
-  Int &test = NestedExpansion<char, char, char>().f(0, 1, 2, Int(3), 4, 5.0);
-}
-
-namespace rdar13135282 {
-  void test() {
-    __mt_alloc<> mt = __mt_alloc<>();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-templates.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-templates.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-templates.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,271 +0,0 @@
-// Header for PCH test cxx-templates.cpp
-
-template <typename T1, typename T2>
-struct S;
-
-template <typename T1, typename T2>
-struct S {
-  S() { }
-  static void templ();
-};
-
-template <typename T>
-struct S<int, T> {
-    static void partial();
-};
-
-template <>
-struct S<int, float> {
-    static void explicit_special();
-};
-
-template <int x>
-int tmpl_f2() { return x; }
-
-template <typename T, int y>
-T templ_f(T x) {
-  int z = templ_f<int, 5>(3);
-  z = tmpl_f2<y+2>();
-  T data[y];
-  return x+y;
-}
-
-void govl(int);
-void govl(char);
-
-template <typename T>
-struct Unresolv {
-  void f() {
-    govl(T());
-  }
-};
-
-template <typename T>
-struct Dep {
-  typedef typename T::type Ty;
-  void f() {
-    Ty x = Ty();
-    T::my_f();
-    int y = T::template my_templf<int>(0);
-    ovl(y);
-  }
-  
-  void ovl(int);
-  void ovl(float);
-};
-
-template<typename T, typename A1>
-inline T make_a(const A1& a1) {
-  T::depend_declref();
-  return T(a1);
-}
-
-template <class T> class UseBase {
-  void foo();
-  typedef int bar;
-};
-
-template <class T> class UseA : public UseBase<T> {
-  using UseBase<T>::foo;
-  using typename UseBase<T>::bar; 
-};
-
-template <class T> class Sub : public UseBase<int> { };
-
-template <class _Ret, class _Tp>
-  class mem_fun_t
-  {
-  public:
-    explicit
-    mem_fun_t(_Ret (_Tp::*__pf)())
-     {}
-
-  private:
-    _Ret (_Tp::*_M_f)();
-  };
-
-template<unsigned N>
-bool isInt(int x);
-
-template<> bool isInt<8>(int x) {
-  try { ++x; } catch(...) { --x; }
-  return true;
-}
-
-template<typename _CharT>
-int __copy_streambufs_eof(_CharT);
-
-class basic_streambuf 
-{
-  void m() { }
-  friend int __copy_streambufs_eof<>(int);
-};
-
-// PR 7660
-template<typename T> struct S_PR7660 { void g(void (*)(T)); };
- template<> void S_PR7660<int>::g(void(*)(int)) {}
-
-// PR 7670
-template<typename> class C_PR7670;
-template<> class C_PR7670<int>;
-template<> class C_PR7670<int>;
-
-template <bool B>
-struct S2 {
-    static bool V;
-};
-
-extern template class S2<true>;
-
-template <typename T>
-struct S3 {
-    void m();
-};
-
-template <typename T>
-inline void S3<T>::m() { }
-
-template <typename T>
-struct S4 {
-    void m() { }
-};
-extern template struct S4<int>;
-
-void S4ImplicitInst() {
-    S4<int> s;
-    s.m();
-}
-
-struct S5 {
-  S5(int x);
-};
-
-struct TS5 {
-  S5 s;
-  template <typename T>
-  TS5(T y) : s(y) {}
-};
-
-// PR 8134
-template<class T> void f_PR8134(T);
-template<class T> void f_PR8134(T);
-void g_PR8134() { f_PR8134(0); f_PR8134('x'); }
-
-// rdar8580149
-template <typename T>
-struct S6;
-
-template <typename T, unsigned N>
-struct S6<const T [N]>
-{
-private:
-   typedef const T t1[N];
-public:
-   typedef t1& t2;
-};
-
-template<typename T>
-  struct S7;
-
-template<unsigned N>
-struct S7<int[N]> : S6<const int[N]> { };
-
-// Zero-length template argument lists
-namespace ZeroLengthExplicitTemplateArgs {
-  template<typename T> void h();
-
-  struct Y { 
-    template<typename T> void f();
-  };
-
-  template<typename T>
-    void f(T *ptr) {
-    T::template g<>(17);
-    ptr->template g2<>(17);
-    h<T>();
-    h<int>();
-    Y y;
-    y.f<int>();
-  }
-
-  struct X {
-    template<typename T> static void g(T);
-    template<typename T> void g2(T);
-  };
-}
-
-namespace NonTypeTemplateParmContext {
-  template<typename T, int inlineCapacity = 0> class Vector { };
-
-  struct String {
-    template<int inlineCapacity>
-    static String adopt(Vector<char, inlineCapacity>&);
-  };
-
-  template<int inlineCapacity>
-    inline bool equalIgnoringNullity(const Vector<char, inlineCapacity>& a, const String& b) { return false; }
-}
-
-// <rdar://problem/11112464>
-template< typename > class Foo;
-
-template< typename T >
-class Foo : protected T
-{
- public:
-  Foo& operator=( const Foo& other );
-};
-
-template<typename...A> struct NestedExpansion {
-  template<typename...B> auto f(A...a, B...b) -> decltype(g(a + b...));
-};
-template struct NestedExpansion<char, char, char>;
-
-namespace rdar13135282 {
-template < typename _Alloc >
-void foo(_Alloc = _Alloc());
-
-template < bool > class __pool;
-
-template < template < bool > class _PoolTp >
-struct __common_pool {
-  typedef _PoolTp < 0 > pool_type;
-};
-
-template < template < bool > class _PoolTp >
-struct __common_pool_base : __common_pool < _PoolTp > {};
-
-template < template < bool > class _PoolTp >
-struct A : __common_pool_base < _PoolTp > {};
-
-template < typename _Poolp = A < __pool > >
-struct __mt_alloc {
-  typedef typename _Poolp::pool_type __pool_type;
-  __mt_alloc() {
-    foo<__mt_alloc<> >();
-  }
-};
-}
-
-namespace PR13020 {
-template<typename T>
-void f() {
- enum E {
-   enumerator
- };
-
- T t = enumerator;
-}
-
-template void f<int>();
-}
-
-template<typename T> void doNotDeserialize() {}
-template<typename T> struct ContainsDoNotDeserialize {
-  static int doNotDeserialize;
-};
-template<typename T> struct ContainsDoNotDeserialize2 {
-  static void doNotDeserialize();
-};
-template<typename T> int ContainsDoNotDeserialize<T>::doNotDeserialize = 0;
-template<typename T> void ContainsDoNotDeserialize2<T>::doNotDeserialize() {}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-trailing-return.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-trailing-return.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-trailing-return.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -emit-pch %s -o %t-cxx11
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -include-pch %t-cxx11 -verify %s
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-typedef auto f() -> int;
-typedef int g();
-
-#else
-
-typedef void f; // expected-error {{typedef redefinition with different types ('void' vs 'auto () -> int')}}
-                // expected-note at 7 {{here}}
-typedef void g; // expected-error {{typedef redefinition with different types ('void' vs 'int ()')}}
-                // expected-note at 8 {{here}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-traits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-traits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-traits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/cxx-traits.h -std=c++11 -fsyntax-only -verify %s
-
-// RUN: %clang_cc1 -x c++-header -std=c++11 -emit-pch -o %t %S/cxx-traits.h
-// RUN: %clang_cc1 -std=c++11 -include-pch %t -fsyntax-only -verify %s
-
-// expected-no-diagnostics
-
-bool _Is_pod_comparator = __is_pod<int>::__value;
-bool _Is_empty_check = __is_empty<int>::__value;
-
-bool default_construct_int = is_trivially_constructible<int>::value;
-bool copy_construct_int = is_trivially_constructible<int, const int&>::value;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-traits.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-traits.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-traits.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// Header for PCH test cxx-traits.cpp
-
-template<typename _Tp>
-struct __is_pod {
-  enum { __value };
-};
-
-template<typename _Tp>
-struct __is_empty {
-  enum { __value };
-};
-
-template<typename T, typename ...Args>
-struct is_trivially_constructible {
-  static const bool value = __is_trivially_constructible(T, Args...);
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-typeid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-typeid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-typeid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/cxx-typeid.h -fsyntax-only -verify %s
-
-// RUN: %clang_cc1 -x c++-header -emit-pch -o %t.pch %S/cxx-typeid.h
-// RUN: %clang_cc1 -include-pch %t.pch -fsyntax-only -verify %s
-
-// expected-no-diagnostics
-
-void f() {
-    (void)typeid(int);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-typeid.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-typeid.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-typeid.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// Header for PCH test cxx-typeid.cpp
-
-#ifndef CXX_TYPEID_H
-#define CXX_TYPEID_H
-
-namespace std {
-
-class type_info
-{
-public:
-    virtual ~type_info();
-
-    bool operator==(const type_info& rhs) const;
-    bool operator!=(const type_info& rhs) const;
-
-    bool before(const type_info& rhs) const;
-    unsigned long hash_code() const;
-    const char* name() const;
-
-    type_info(const type_info& rhs);
-    type_info& operator=(const type_info& rhs);
-};
-
-class bad_cast
-{
-public:
-    bad_cast();
-    bad_cast(const bad_cast&);
-    bad_cast& operator=(const bad_cast&);
-    virtual const char* what() const;
-};
-
-class bad_typeid
-{
-public:
-    bad_typeid();
-    bad_typeid(const bad_typeid&);
-    bad_typeid& operator=(const bad_typeid&);
-    virtual const char* what() const;
-};
-
-}  // std
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-using.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-using.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-using.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/cxx-using.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-using.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-void m() {
-    D s;
-    s.f(); // expected-error {{no matching member}}
-}
-
-// expected-note at cxx-using.h:9  {{candidate function}}
-// expected-note at cxx-using.h:15 {{candidate function}}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-using.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-using.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-using.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// Header for PCH test cxx-using.cpp
-
-
-
-
-
-
-struct B {
-    void f(char c);
-};
-
-struct D : B 
-{
-    using B::f;
-    void f(int);
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-variadic-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-variadic-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-variadic-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -std=c++11 -include %S/cxx-variadic-templates.h -verify %s -ast-dump -o -
-// RUN: %clang_cc1 -std=c++11 -include %S/cxx-variadic-templates.h %s -emit-llvm -o - | FileCheck %s
-
-// Test with pch.
-// RUN: %clang_cc1 -std=c++11 -x c++-header -emit-pch -o %t %S/cxx-variadic-templates.h
-// RUN: %clang_cc1 -std=c++11 -include-pch %t -verify %s -ast-dump  -o -
-// RUN: %clang_cc1 -std=c++11 -include-pch %t %s -emit-llvm -o - | FileCheck %s
-
-// expected-no-diagnostics
-
-// CHECK: allocate_shared
-shared_ptr<int> spi = shared_ptr<int>::allocate_shared(1, 2);
-
-template<int> struct A {};
-template<int> struct B {};
-outer<int, int>::inner<1, 2, A, B> i(A<1>{}, B<2>{});

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx-variadic-templates.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx-variadic-templates.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx-variadic-templates.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// PR9073
-template<typename _Tp>
-class shared_ptr{
-public:
-  template<class _Alloc, class ..._Args>
-  static
-  shared_ptr<_Tp>
-  allocate_shared(const _Alloc& __a, _Args&& ...__args);
-};
-
-template<class _Tp>
-template<class _Alloc, class ..._Args>
-shared_ptr<_Tp>
-shared_ptr<_Tp>::allocate_shared(const _Alloc& __a, _Args&& ...__args)
-{
-  shared_ptr<_Tp> __r;
-  return __r;
-}
-
-template<typename...Ts> struct outer {
-  template<Ts...Vs, template<Ts> class ...Cs> struct inner {
-    inner(Cs<Vs>...);
-  };
-};
-template struct outer<int, int>;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx0x-default-delete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx0x-default-delete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx0x-default-delete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// Without PCH
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -include %s %s
-// With PCH
-// RUN: %clang_cc1 -x c++-header -std=c++11 -emit-pch -o %t %s
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -include-pch %t %s
-
-#ifndef PASS1
-#define PASS1
-
-struct foo {
-  foo() = default;
-  void bar() = delete;
-};
-
-struct baz {
-  ~baz() = delete;
-};
-
-class quux {
-  ~quux() = default;
-};
-
-struct A {
-  A(const A&) = default;
-  template<typename T> A(T&&);
-};
-
-#else
-
-foo::foo() { } // expected-error{{definition of explicitly defaulted default constructor}}
-foo f;
-void fn() {
-  f.bar(); // expected-error{{deleted function}} expected-note at 12{{deleted here}}
-}
-
-baz bz; // expected-error{{deleted function}} expected-note at 16{{deleted here}}
-quux qx; // expected-error{{private destructor}} expected-note at 20{{private here}}
-
-struct B { A a; };
-struct C { mutable A a; };
-static_assert(__is_trivially_constructible(B, const B&), "");
-static_assert(!__is_trivially_constructible(B, B&&), "");
-static_assert(!__is_trivially_constructible(C, const C&), "");
-static_assert(!__is_trivially_constructible(C, C&&), "");
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx0x-delegating-ctors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx0x-delegating-ctors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx0x-delegating-ctors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %s -std=c++11 -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++-header -std=c++11 -emit-pch -o %t %s
-// RUN: %clang_cc1 -std=c++11 -include-pch %t -fsyntax-only -verify %s 
-
-#ifndef PASS1
-#define PASS1
-struct foo {
-  foo(int) : foo() { }
-  foo();
-  foo(bool) : foo('c') { }
-  foo(char) : foo(true) { }
-};
-#else
-foo::foo() : foo(1) { } // expected-error{{creates a delegation cycle}} \
-                        // expected-note{{which delegates to}}
-
-// expected-note at 11{{it delegates to}}
-// expected-note at 13{{it delegates to}}
-// expected-error at 14{{creates a delegation cycle}}
-// expected-note at 14{{which delegates to}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx11-constexpr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx11-constexpr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx11-constexpr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -emit-pch %s -o %t
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -include-pch %t -verify %s
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-
-struct B {
-  B();
-  constexpr B(char) {}
-};
-
-struct C {
-  B b;
-  double d = 0.0;
-};
-
-struct D : B {
-  constexpr D(int n) : B('x'), k(2*n+1) {}
-  int k;
-};
-
-constexpr int value = 7;
-
-template<typename T>
-constexpr T plus_seven(T other) {
-  return value + other;
-}
-
-#else
-
-static_assert(D(4).k == 9, "");
-constexpr int f(C c) { return 0; } // expected-error {{not a literal type}}
-// expected-note at 13 {{not an aggregate and has no constexpr constructors}}
-constexpr B b; // expected-error {{constant expression}} expected-note {{non-constexpr}}
-               // expected-note at 9 {{here}}
-
-static_assert(plus_seven(3) == 10, "");
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx11-enum-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx11-enum-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx11-enum-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -emit-pch %s -o %t
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -include-pch %t -verify %s
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-
-template<typename T> struct S {
-  enum class E {
-    e = T()
-  };
-};
-
-S<int> a;
-S<long>::E b;
-S<double>::E c;
-template struct S<char>;
-
-#else
-
-int k1 = (int)S<int>::E::e;
-int k2 = (int)decltype(b)::e;
-int k3 = (int)decltype(c)::e; // expected-error at 10 {{conversion from 'double' to 'int'}} expected-note {{here}}
-int k4 = (int)S<char>::E::e;
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx11-exception-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx11-exception-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx11-exception-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -emit-pch %s -o %t
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -include-pch %t -verify %s
-// expected-no-diagnostics
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-
-template<bool b> int f() noexcept(b) {}
-decltype(f<false>()) a;
-decltype(f<true>()) b;
-
-#else
-
-static_assert(!noexcept(f<false>()), "");
-static_assert(noexcept(f<true>()), "");
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx11-lambdas.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx11-lambdas.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx11-lambdas.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -pedantic-errors -fblocks -std=c++11 -emit-pch %s -o %t-cxx11
-// RUN: %clang_cc1 -ast-print -pedantic-errors -fblocks -std=c++11 -include-pch %t-cxx11  %s | FileCheck -check-prefix=CHECK-PRINT %s
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-template<typename T>
-T add_slowly(const T& x, const T &y) {
-  return [=, &y] { return x + y; }();
-};
-
-inline int add_int_slowly_twice(int x, int y) {
-  int i = add_slowly(x, y);
-  auto lambda = [&](int z) { return x + z; };
-  return i + lambda(y);
-}
-
-inline int sum_array(int n) {
-  int array[5] = { 1, 2, 3, 4, 5};
-  auto lambda = [=](int N) -> int {
-    int sum = 0;
-    for (unsigned I = 0; I < N; ++I)
-      sum += array[N];
-    return sum;
-  };
-
-  return lambda(n);
-}
-
-inline int to_block_pointer(int n) {
-  auto lambda = [=](int m) { return n + m; };
-  int (^block)(int) = lambda;
-  return block(17);
-}
-
-#else
-
-// CHECK-PRINT: T add_slowly
-// CHECK-PRINT: return [=, &y]
-template float add_slowly(const float&, const float&);
-
-int add(int x, int y) {
-  return add_int_slowly_twice(x, y) + sum_array(4) + to_block_pointer(5);
-}
-
-// CHECK-PRINT: inline int add_int_slowly_twice 
-// CHECK-PRINT: lambda = [&] (int z)
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx11-statement-attributes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx11-statement-attributes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx11-statement-attributes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Sanity check.
-// RUN: %clang_cc1 -include %S/Inputs/cxx11-statement-attributes.h -std=c++11 -Wimplicit-fallthrough -fsyntax-only %s -o - -verify
-// Run the same tests, this time with the attributes loaded from the PCH file.
-// RUN: %clang_cc1 -x c++-header -emit-pch -std=c++11 -o %t %S/Inputs/cxx11-statement-attributes.h
-// RUN: %clang_cc1 -include-pch %t -std=c++11 -Wimplicit-fallthrough -fsyntax-only %s -o - -verify
-
-// expected-warning at Inputs/cxx11-statement-attributes.h:10 {{fallthrough annotation does not directly precede switch label}}
-
-void g(int n) {
-  f<1>(n);  // expected-note {{in instantiation of function template specialization 'f<1>' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx11-user-defined-literals.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx11-user-defined-literals.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx11-user-defined-literals.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -emit-pch %s -o %t
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -include-pch %t -verify %s
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-
-using size_t = decltype(sizeof(int));
-int operator"" _foo(const char *p, size_t);
-
-template<typename T> auto f(T t) -> decltype(t + ""_foo) { return 0; }
-
-#else
-
-int j = ""_foo;
-int k = f(0);
-int *l = f(&k);
-struct S {};
-int m = f(S()); // expected-error {{no matching}}
-                // expected-note at 11 {{substitution failure}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx1y-decltype-auto.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx1y-decltype-auto.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx1y-decltype-auto.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -pedantic -std=c++1y -emit-pch %s -o %t
-// RUN: %clang_cc1 -pedantic -std=c++1y -include-pch %t -verify %s
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-
-template<typename T> void f(T t) {
-  auto a = t.x;
-  decltype(auto) b = t.x;
-  auto c = (t.x);
-  decltype(auto) d = (t.x);
-}
-
-#else
-
-struct Z {
-  int x : 5; // expected-note {{bit-field}}
-};
-
-// expected-error at 12 {{non-const reference cannot bind to bit-field 'x'}}
-template void f(Z); // expected-note {{in instantiation of}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx1y-default-initializer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx1y-default-initializer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx1y-default-initializer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -pedantic -std=c++1y -emit-pch %s -o %t
-// RUN: %clang_cc1 -pedantic -std=c++1y -include-pch %t -verify %s
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-
-struct A {
-  int x;
-  int y = 3;
-  int z = x + y;
-};
-template<typename T> constexpr A make() { return A {}; }
-template<typename T> constexpr A make(T t) { return A { t }; }
-
-struct B {
-  int z1, z2 = z1;
-  constexpr B(int k) : z1(k) {}
-};
-
-#else
-
-static_assert(A{}.z == 3, "");
-static_assert(A{1}.z == 4, "");
-static_assert(A{.y = 5}.z == 5, ""); // expected-warning {{C99}}
-static_assert(A{3, .y = 1}.z == 4, ""); // expected-warning {{C99}}
-static_assert(make<int>().z == 3, "");
-static_assert(make<int>(12).z == 15, "");
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx_exprs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx_exprs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx_exprs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -include %S/cxx_exprs.h -std=c++11 -fsyntax-only -verify %s -ast-dump
-
-// Test with pch. Use '-ast-dump' to force deserialization of function bodies.
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -x c++-header -std=c++11 -emit-pch -o %t %S/cxx_exprs.h
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-dump
-
-// expected-no-diagnostics
-
-int integer;
-double floating;
-char character;
-bool boolean;
-
-// CXXStaticCastExpr
-static_cast_result void_ptr = &integer;
-
-// CXXDynamicCastExpr
-Derived *d;
-dynamic_cast_result derived_ptr = d;
-
-// CXXReinterpretCastExpr
-reinterpret_cast_result void_ptr2 = &integer;
-
-// CXXConstCastExpr
-const_cast_result char_ptr = &character;
-
-// CXXFunctionalCastExpr
-functional_cast_result *double_ptr = &floating;
-
-// CXXBoolLiteralExpr
-bool_literal_result *bool_ptr = &boolean;
-static_assert(true_value, "true_value is true");
-static_assert(!false_value, "false_value is false");
-
-// CXXNullPtrLiteralExpr
-cxx_null_ptr_result null_ptr = nullptr;
-
-// CXXTypeidExpr
-typeid_result1 typeid_1 = 0;
-typeid_result2 typeid_2 = 0;
-
-// CharacterLiteral variants
-static_assert(char_value == 97, "char_value is correct");
-static_assert(wchar_t_value == 305, "wchar_t_value is correct");
-static_assert(char16_t_value == 231, "char16_t_value is correct");
-static_assert(char32_t_value == 8706, "char32_t_value is correct");

Modified: trunk/contrib/llvm/tools/clang/test/PCH/cxx_exprs.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/cxx_exprs.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/cxx_exprs.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// Header for PCH test cxx_exprs.cpp
-
-
-// CXXStaticCastExpr
-typedef __typeof__(static_cast<void *>(0)) static_cast_result;
-
-// CXXDynamicCastExpr
-struct Base { Base(int); virtual void f(int x = 492); ~Base(); };
-struct Derived : Base { Derived(); void g(); };
-Base *base_ptr;
-typedef __typeof__(dynamic_cast<Derived *>(base_ptr)) dynamic_cast_result;
-
-// CXXReinterpretCastExpr
-typedef __typeof__(reinterpret_cast<void *>(0)) reinterpret_cast_result;
-
-// CXXConstCastExpr
-const char *const_char_ptr_value;
-typedef __typeof__(const_cast<char *>(const_char_ptr_value)) const_cast_result;
-
-// CXXFunctionalCastExpr
-int int_value;
-typedef __typeof__(double(int_value)) functional_cast_result;
-
-// CXXBoolLiteralExpr
-typedef __typeof__(true) bool_literal_result;
-const bool true_value = true;
-const bool false_value = false;
-
-// CXXNullPtrLiteralExpr
-typedef __typeof__(nullptr) cxx_null_ptr_result;
-
-void foo(Derived *P) {
-  // CXXMemberCallExpr
-  P->f(12);
-}
-
-
-// FIXME: This is a hack until <typeinfo> works completely.
-namespace std {
-  class type_info {};
-}
-
-// CXXTypeidExpr - Both expr and type forms.
-typedef __typeof__(typeid(int))* typeid_result1;
-typedef __typeof__(typeid(2))*   typeid_result2;
-
-Derived foo();
-
-Derived::Derived() : Base(4) {
-}
-
-void Derived::g() {
-  // CXXThisExpr
-  f(2);        // Implicit
-  this->f(1);  // Explicit
-  
-  // CXXThrowExpr
-  throw;
-  throw 42;
-  
-  // CXXDefaultArgExpr
-  f();
-  
-  const Derived &X = foo();
-  
-  // FIXME: How do I make a CXXBindReferenceExpr, CXXConstructExpr? 
-  
-  int A = int(0.5);  // CXXFunctionalCastExpr
-  A = int();         // CXXZeroInitValueExpr
-  
-  Base *b = new Base(4);       // CXXNewExpr
-  delete b;                    // CXXDeleteExpr
-}
-
-
-// FIXME: The comment on CXXTemporaryObjectExpr is broken, this doesn't make
-// one.
-struct CtorStruct { CtorStruct(int, float); };
-
-CtorStruct create_CtorStruct() {
-  return CtorStruct(1, 3.14f); // CXXTemporaryObjectExpr
-};
-
-// CharacterLiteral variants
-const char char_value = 'a';
-const wchar_t wchar_t_value = L'ı';
-const char16_t char16_t_value = u'ç';
-const char32_t char32_t_value = U'∂';

Modified: trunk/contrib/llvm/tools/clang/test/PCH/designated-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/designated-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/designated-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 %s -include %s.h -emit-llvm -o %t.withoutpch.ll
-
-// Test with pch.
-// RUN: %clang_cc1 %s.h -emit-pch -o %t.pch
-// RUN: %clang_cc1 %s -include-pch %t.pch -emit-llvm -o %t.withpch.ll
-// RUN: diff %t.withoutpch.ll %t.withpch.ll

Modified: trunk/contrib/llvm/tools/clang/test/PCH/designated-init.c.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/designated-init.c.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/designated-init.c.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-static void *FooToken = &FooToken;
-static void *FooTable[256] = {
-    [0x3] = (void *[256]) { // 1
-        [0x5b] = (void *[256]) { // 2
-            [0x81] = (void *[256]) { // 3
-                [0x42] = (void *[256]) { // 4
-                    [0xa2] = (void *[256]) { // 5
-                        [0xe] = (void *[256]) { // 6
-                            [0x20] = (void *[256]) { // 7
-                                [0xd7] = (void *[256]) { // 8
-                                    [0x39] = (void *[256]) { // 9
-                                        [0xf1] = (void *[256]) { // 10
-                                            [0xa4] = (void *[256]) { // 11
-                                                [0xa8] = (void *[256]) { // 12
-                                                    [0x21] = (void *[256]) { // 13
-                                                        [0x86] = (void *[256]) { // 14
-                                                            [0x1d] = (void *[256]) { // 15
-                                                                [0xdc] = (void *[256]) { // 16
-                                                                    [0xa5] = (void *[256]) { // 17
-                                                                        [0xef] = (void *[256]) { // 18
-                                                                            [0x9] = (void *[256]) { // 19
-                                                                                [0x34] = &FooToken,
-                                                                            },
-                                                                        },
-                                                                    },
-                                                                },
-                                                            },
-                                                        },
-                                                    },
-                                                },
-                                            },
-                                        },
-                                    },
-                                },
-                            },
-                        },
-                    },
-                },
-            },
-        },
-    }
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/empty-with-headers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/empty-with-headers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/empty-with-headers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c99 -pedantic-errors %s
-// RUN: %clang_cc1 -fsyntax-only -std=c99 -emit-pch -o %t %s
-// RUN: %clang_cc1 -fsyntax-only -std=c99 -pedantic-errors -include-pch %t %s
-
-// RUN: %clang_cc1 -fsyntax-only -std=c99 -pedantic-errors -DINCLUDED %s -verify
-// This last one should warn for -Wempty-translation-unit (C99 6.9p1).
-
-#if defined(INCLUDED)
-
-// empty except for the prefix header
-
-#elif defined(HEADER)
-
-typedef int my_int;
-#define INCLUDED
-
-#else
-
-#define HEADER
-#include "empty-with-headers.c"
-// empty except for the header
-
-#endif
-
-// This should only fire if the header is not included,
-// either explicitly or as a prefix header.
-// expected-error{{ISO C requires a translation unit to contain at least one declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/enum.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/enum.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-int i = Red;
-
-int return_enum_constant() {
-  int result = aRoundShape;
-  return result;
-}
-
-enum Shape s = Triangle;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/enum.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/enum.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/enum.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-/* Used in enum.c test */
-
-enum Color {
-  Red,
-  Green,
-  Blue
-};
-
-enum Shape {
-  Square,
-  Triangle = 17,
-  Rhombus,
-  Circle
-};
-
-enum Shape aRoundShape = Circle;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/exprs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/exprs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/exprs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -fblocks -include %S/exprs.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -fblocks -o %t %S/exprs.h
-// RUN: %clang_cc1 -fblocks -include-pch %t -fsyntax-only -verify %s -DWITH_PCH
-
-#ifdef WITH_PCH
-// expected-no-diagnostics
-#endif
-
-__SIZE_TYPE__ size_type_value;
-int integer;
-long long_integer;
-double floating;
-_Complex double floating_complex;
-
-// DeclRefExpr
-int_decl_ref *int_ptr1 = &integer;
-enum_decl_ref *enum_ptr1 = &integer;
-
-// IntegerLiteral
-integer_literal *int_ptr2 = &integer;
-long_literal *long_ptr1 = &long_integer;
-
-// FloatingLiteral + ParenExpr
-floating_literal *double_ptr = &floating;
-
-// ImaginaryLiteral
-imaginary_literal *cdouble_ptr = &floating_complex;
-
-// StringLiteral
-const char* printHello() {
-  return hello;
-}
-
-// CharacterLiteral
-char_literal *int_ptr3 = &integer;
-
-// UnaryOperator
-negate_enum *int_ptr4 = &integer;
-
-// OffsetOfExpr
-offsetof_type *offsetof_ptr = &size_type_value;
-
-// UnaryExprOrTypeTraitExpr
-typeof(sizeof(float)) size_t_value;
-typeof_sizeof *size_t_ptr = &size_t_value;
-typeof_sizeof2 *size_t_ptr2 = &size_t_value;
-
-// ArraySubscriptExpr
-array_subscript *double_ptr1_5 = &floating;
-
-// CallExpr
-call_returning_double *double_ptr2 = &floating;
-
-// MemberExpr
-member_ref_double *double_ptr3 = &floating;
-
-// BinaryOperator
-add_result *int_ptr5 = &integer;
-
-// CompoundAssignOperator
-addeq_result *int_ptr6 = &integer;
-
-add_result_with_typeinfo *int_typeinfo_ptr6;
-
-// ConditionalOperator
-conditional_operator *double_ptr4 = &floating;
-
-// CStyleCastExpr
-void_ptr vp1 = &integer;
-
-// CompoundLiteral
-struct S s;
-compound_literal *sptr = &s;
-
-// ExtVectorElementExpr
-ext_vector_element *double_ptr5 = &floating;
-
-// InitListExpr
-double get_from_double_array(unsigned Idx) { return double_array[Idx]; }
-
-/// DesignatedInitExpr
-float get_from_designated(unsigned Idx) {
-  return designated_inits[2].y;
-}
-
-// TypesCompatibleExpr
-types_compatible *int_ptr7 = &integer;
-
-// ChooseExpr
-choose_expr *int_ptr8 = &integer;
-
-// GNUNullExpr FIXME: needs C++
-//null_type null = __null;
-
-// ShuffleVectorExpr
-shuffle_expr *vec_ptr = &vec2;
-
-// GenericSelectionExpr
-generic_selection_expr *double_ptr6 = &floating;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/exprs.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/exprs.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/exprs.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,107 +0,0 @@
-// Header for PCH test exprs.c
-
-// DeclRefExpr
-int i = 17;
-enum Enum { Enumerator = 18 };
-typedef typeof(i) int_decl_ref;
-typedef typeof(Enumerator) enum_decl_ref;
-
-// IntegerLiteral
-typedef typeof(17) integer_literal;
-typedef typeof(17l) long_literal;
-
-// FloatingLiteral and ParenExpr
-typedef typeof((42.5)) floating_literal;
-
-// ImaginaryLiteral
-typedef typeof(17.0i) imaginary_literal;
-
-// StringLiteral
-const char *hello = "Hello" "PCH" "World";
-
-// CharacterLiteral
-typedef typeof('a') char_literal;
-
-// UnaryOperator
-typedef typeof(-Enumerator) negate_enum;
-
-// OffsetOfExpr
-struct X {
-  int member;
-};
-struct Y {
-  struct X array[5];
-};
-struct Z {
-  struct Y y;
-};
-typedef typeof(__builtin_offsetof(struct Z, y.array[1 + 2].member)) 
-  offsetof_type;
-
-// UnaryExprOrTypeTraitExpr
-typedef typeof(sizeof(int)) typeof_sizeof;
-typedef typeof(sizeof(Enumerator)) typeof_sizeof2;
-
-// ArraySubscriptExpr
-extern double values[];
-typedef typeof(values[2]) array_subscript;
-
-// CallExpr
-double dplus(double x, double y);
-double d0, d1;
-typedef typeof((&dplus)(d0, d1)) call_returning_double;
-
-// MemberExpr
-struct S {
-  double x;
-};
-typedef typeof(((struct S*)0)->x) member_ref_double;
-
-// BinaryOperator
-typedef typeof(i + Enumerator) add_result;
-
-// CompoundAssignOperator
-typedef typeof(i += Enumerator) addeq_result;
-
-// ConditionalOperator
-typedef typeof(i? : d0) conditional_operator;
-
-// CStyleCastExpr
-typedef typeof((void *)0) void_ptr;
-
-// CompoundLiteral
-typedef typeof((struct S){.x = 3.5}) compound_literal;
-
-typedef typeof(i + sizeof(int[i + Enumerator])) add_result_with_typeinfo;
-
-// ExtVectorElementExpr
-typedef __attribute__(( ext_vector_type(2) )) double double2;
-extern double2 vec2, vec2b;
-typedef typeof(vec2.x) ext_vector_element;
-
-// InitListExpr
-double double_array[3] = { 1.0, 2.0 };
-
-// DesignatedInitExpr
-struct {
-  int x;
-  float y;
-} designated_inits[3] = { [0].y = 17,
-                          [2].x = 12.3, // expected-warning {{implicit conversion from 'double' to 'int' changes value from 12.3 to 12}}
-                          3.5 };
-
-// TypesCompatibleExpr
-typedef typeof(__builtin_types_compatible_p(float, double)) types_compatible;
-
-// ChooseExpr
-typedef typeof(__builtin_choose_expr(17 > 19, d0, 1)) choose_expr;
-
-// GNUNullExpr FIXME: needs C++
-// typedef typeof(__null) null_type;
-
-// ShuffleVectorExpr
-typedef typeof(__builtin_shufflevector(vec2, vec2b, 2, 1)) shuffle_expr;
-
-// GenericSelectionExpr
-typedef typeof(_Generic(i, char*: 0, int: 0., default: hello))
-  generic_selection_expr;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/ext_vector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/ext_vector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/ext_vector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/ext_vector.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/ext_vector.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-int test(float4 f4) {
-  return f4.xy; // expected-error{{float2}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/ext_vector.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/ext_vector.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/ext_vector.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// Header file for ext_vector.c PCH test
-
-typedef __attribute__((ext_vector_type(2))) float float2;
-typedef __attribute__((ext_vector_type(4))) float float4;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/external-defs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/external-defs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/external-defs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// Test with pch.
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t.pch %S/external-defs.h
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -include-pch %t.pch -emit-llvm -o %t %s
-
-// RUN: grep "@x = common global i32 0" %t | count 1
-// RUN: grep "@z" %t | count 0
-
-// RUN: grep "@x2 = global i32 19" %t | count 1
-int x2 = 19;
-
-// RUN: grep "@incomplete_array = common global .*1 x i32" %t | count 1
-// RUN: grep "@incomplete_array2 = common global .*17 x i32" %t | count 1
-int incomplete_array2[17];
-// RUN: grep "@incomplete_array3 = common global .*1 x i32" %t | count 1
-int incomplete_array3[];
-
-struct S {
-  int x, y;
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/external-defs.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/external-defs.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/external-defs.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Helper for external-defs.c test
-
-// Tentative definitions
-int x;
-int x2;
-
-// Should not show up
-static int z;
-
-int incomplete_array[];
-int incomplete_array2[];
-
-struct S s;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/field-designator.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/field-designator.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/field-designator.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -cc1 %s -include %s
-// RUN: %clang_cc1 -cc1 %s -emit-pch -o %t.pch
-// RUN: %clang_cc1 -cc1 %s -include-pch %t.pch
-
-// rdar://12239321 Make sure we don't emit a bogus
-//     error: field designator 'e' does not refer to a non-static data member
-
-#ifndef HEADER
-#define HEADER
-//===----------------------------------------------------------------------===//
-
-struct U {
-  union {
-    struct {
-      int e;
-      int f;
-    };
-
-    int a;
-  };
-};
-
-//===----------------------------------------------------------------------===//
-#else
-#if !defined(HEADER)
-# error Header inclusion order messed up
-#endif
-//===----------------------------------------------------------------------===//
-
-void bar() {
-  static const struct U plan = { .e = 1 };
-}
-
-//===----------------------------------------------------------------------===//
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/floating-literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/floating-literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/floating-literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -triple mips64-none-linux-gnu -emit-pch -o %t %s
-// RUN: %clang_cc1 -x ast -ast-print %t | FileCheck %s
-
-// Make sure the semantics of FloatingLiterals are stored correctly in
-// the AST. Previously, the ASTWriter didn't store anything and the
-// reader assumed PPC 128-bit float semantics, which is incorrect for
-// targets with 128-bit IEEE long doubles.
-
-long double foo = 1.0E4000L;
-// CHECK: long double foo = 1.0E+4000L;
-
-// Just as well check the others are still sane while we're here...
-
-double bar = 1.0E300;
-// CHECK: double bar = 1.0E+300;
-
-float wibble = 1.0E40;
-// CHECK: float wibble = 1.0E+40;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/format-strings.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/format-strings.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/format-strings.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -D FOOBAR="\"\"" %s -emit-pch -o %t.pch
-// RUN: %clang_cc1 -D FOOBAR="\"\"" %s -include-pch %t.pch
-
-// rdar://11418366
-
-#ifndef HEADER
-#define HEADER
-
-extern int printf(const char *restrict, ...);
-#define LOG printf(FOOBAR "%f", __LINE__)
-
-#else
-
-void foo() {
-  LOG;
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/friend-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/friend-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/friend-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %s -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
-
-// rdar://12627738
-namespace rdar12627738 {
-
-class RecyclerTag {
-    template <typename T> friend class Recycler;
-};
-
-}
-
-#else
-
-namespace rdar12627738 {
-
-template<typename TTag>
-class CRN {
-    template <typename T> friend class Recycler;
-};
-
-
-template<typename T>
-class Recycler {
-public:
-    Recycler ();
-};
-
-
-template<typename T>
-Recycler<T>::Recycler ()
-{
-}
-
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/functions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/functions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/functions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/functions.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/functions.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-int f0(int x0, int y0, ...) { return x0 + y0; }
-
-float *test_f1(int val, double x, double y) {
-  if (val > 5)
-    return f1(x, y);
-  else
-    return f1(x); // expected-error{{too few arguments to function call}}
-                  // expected-note at functions.h:7{{'f1' declared here}}
-}
-
-void test_g0(int *x, float * y) {
-  g0(y); // expected-warning{{incompatible pointer types passing 'float *' to parameter of type 'int *'}}
-         // expected-note at functions.h:9{{passing argument to parameter here}}
-  g0(x); 
-}
-
-void __attribute__((noreturn)) test_abort(int code) {
-  do_abort(code);
-}
-  

Modified: trunk/contrib/llvm/tools/clang/test/PCH/functions.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/functions.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/functions.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-/* For use with the functions.c test */
-
-
-
-
-int f0(int x, int y, ...); 
-float *f1(float x, float y);
-
-void g0(int *);
-
-void do_abort(int) __attribute__((noreturn));

Modified: trunk/contrib/llvm/tools/clang/test/PCH/fuzzy-pch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/fuzzy-pch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/fuzzy-pch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -DFOO -o %t %S/variables.h
-// RUN: %clang_cc1 -DBAR=int -include-pch %t -fsyntax-only -pedantic %s
-// RUN: %clang_cc1 -DFOO -DBAR=int -include-pch %t %s
-// RUN: not %clang_cc1 -DFOO=blah -DBAR=int -include-pch %t %s 2> %t.err
-// RUN: FileCheck -check-prefix=CHECK-FOO %s < %t.err
-// RUN: not %clang_cc1 -UFOO -include-pch %t %s 2> %t.err
-// RUN: FileCheck -check-prefix=CHECK-NOFOO %s < %t.err
-
-// RUN: not %clang_cc1 -DFOO -undef -include-pch %t %s 2> %t.err
-// RUN: FileCheck -check-prefix=CHECK-UNDEF %s < %t.err
-
-BAR bar = 17;
-
-#ifndef FOO
-#  error FOO was not defined
-#endif
-
-#if FOO != 1
-#  error FOO has the wrong definition
-#endif
-
-#ifndef BAR
-#  error BAR was not defined
-#endif
-
-// CHECK-FOO: definition of macro 'FOO' differs between the precompiled header ('1') and the command line ('blah')
-// CHECK-NOFOO: macro 'FOO' was defined in the precompiled header but undef'd on the command line
-
-// CHECK-UNDEF: command line contains '-undef' but precompiled header was not built with it
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/fuzzy-pch.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/fuzzy-pch.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/fuzzy-pch.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// Header for PCH test fuzzy-pch.c
-void f(int X);

Modified: trunk/contrib/llvm/tools/clang/test/PCH/headermap.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/headermap.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/headermap.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-/* Helper for the headermap.m test */
-int x = 17;
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/headermap.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/headermap.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/headermap.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: touch %t.hmap
-
-// RUN: %clang_cc1 -x objective-c -emit-pch -o %t.h.pch %S/headermap.h
-// RUN: %clang_cc1 -include-pch %t.h.pch %s
-
-// RUN: %clang_cc1 -x objective-c -emit-pch -o %t.h.pch %S/headermap.h
-// RUN: %clang_cc1 -include-pch %t.h.pch -I%t.hmap %s
-
-// RUN: %clang_cc1 -x objective-c -I%t.hmap -emit-pch -o %t.h.pch %S/headermap.h
-// RUN: %clang_cc1 -include-pch %t.h.pch %s
-
-// RUN: %clang_cc1 -x objective-c -I%t.hmap -emit-pch -o %t.h.pch %S/headermap.h
-// RUN: %clang_cc1 -include-pch %t.h.pch -I%t.hmap %s
-#import "headermap.h"
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/headersearch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/headersearch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/headersearch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// Test reading of PCH with changed location of original input files,
-// i.e. invoking header search.
-// REQUIRES: shell
-
-// Generate the original files:
-// RUN: rm -rf %t_orig %t_moved
-// RUN: mkdir -p %t_orig/sub %t_orig/sub2
-// RUN: echo 'struct orig_sub{char c; int i; };' > %t_orig/sub/orig_sub.h
-// RUN: echo 'void orig_sub2_1();' > %t_orig/sub2/orig_sub2_1.h
-// RUN: echo '#include "orig_sub2_1.h"' > %t_orig/sub2/orig_sub2.h
-// RUN: echo 'template <typename T> void tf() { orig_sub2_1(); T::foo(); }' >> %t_orig/sub2/orig_sub2.h
-// RUN: echo 'void foo() {}' > %t_orig/tmp2.h
-// RUN: echo '#include "tmp2.h"' > %t_orig/all.h
-// RUN: echo '#include "sub/orig_sub.h"' >> %t_orig/all.h
-// RUN: echo '#include "orig_sub2.h"' >> %t_orig/all.h
-// RUN: echo 'int all();' >> %t_orig/all.h
-
-// Generate the PCH:
-// RUN: cd %t_orig && %clang_cc1 -x c++ -emit-pch -o all.h.pch -Isub2 all.h
-// RUN: cp -pR %t_orig %t_moved
-
-// Check diagnostic with location in original source:
-// RUN: %clang_cc1 -include-pch all.h.pch -I%t_moved -I%t_moved/sub2 -Wpadded -emit-llvm-only %s 2> %t.stderr
-// RUN: grep 'struct orig_sub' %t.stderr
-
-// Check diagnostic with 2nd location in original source:
-// RUN: not %clang_cc1 -DREDECL -include-pch all.h.pch -I%t_moved -I%t_moved/sub2 -emit-llvm-only %s 2> %t.stderr
-// RUN: grep 'void foo' %t.stderr
-
-// Check diagnostic with instantiation location in original source:
-// RUN: not %clang_cc1 -DINSTANTIATION -include-pch all.h.pch -I%t_moved -I%t_moved/sub2 -emit-llvm-only %s 2> %t.stderr
-// RUN: grep 'orig_sub2_1' %t.stderr
-
-void qq(orig_sub*) {all();}
-
-#ifdef REDECL
-float foo() {return 0;}
-#endif
-
-#ifdef INSTANTIATION
-void f() {
-  tf<int>();
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/irgen-rdar13114142.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/irgen-rdar13114142.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/irgen-rdar13114142.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 %s -emit-pch -o %t.pch
-// RUN: %clang_cc1 %s -emit-llvm %s -include-pch %t.pch -o - | FileCheck %s
-
-#ifndef HEADER
-#define HEADER
-
-class OOArray{
-public:
-  ~OOArray();
-};
-
-class OOString {
-public:
-    OOString();
-    OOString(char *);
-};
-
-class OOPattern {
-public:
-    OOArray matchAll(const OOString &)const {
-        __attribute__((__blocks__(byref))) OOArray out;
-    }
-};
-
-OOArray operator & (const OOPattern & pattern) {
-    pattern.matchAll(0);
-}
-OOArray operator & (OOString, OOString);
-
-#else
-
-// We just make sure there is no crash on IRGen (rdar://13114142)
-// CHECK: _Z3foov()
-void foo() {
-  OOString str;
-  str & "o";
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/libroot/usr/include/reloc.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/libroot/usr/include/reloc.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/libroot/usr/include/reloc.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-#ifndef RELOC_H
-#define RELOC_H
-
-#include <reloc2.h>
-
-
-
-
-
-
-
-// Line number 13 below is important
-int x = 2;
-
-#endif // RELOC_H

Modified: trunk/contrib/llvm/tools/clang/test/PCH/libroot/usr/include/reloc2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/libroot/usr/include/reloc2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/libroot/usr/include/reloc2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-#ifndef RELOC2_H
-#define RELOC2_H
-#include <stddef.h>
-
-
-
-
-
-
-
-
-
-// Line number below is important!
-int y = 2;
-#endif // RELOC2_H

Modified: trunk/contrib/llvm/tools/clang/test/PCH/line-directive.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/line-directive.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/line-directive.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/line-directive.h -fsyntax-only %s 2>&1|grep "25:5"
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/line-directive.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only %s 2>&1|grep "25:5"  
-
-double x; // expected-error{{redefinition of 'x' with a different type}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// expected-note{{previous definition is here}}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/line-directive.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/line-directive.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/line-directive.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#line 25 "line-directive.c"
-int x;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/macro-redef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/macro-redef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/macro-redef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 %s -emit-pch -o %t1.pch -verify
-// RUN: %clang_cc1 %s -emit-pch -o %t2.pch -include-pch %t1.pch -verify
-// RUN: %clang_cc1 -fsyntax-only %s -include-pch %t2.pch -verify
-
-// Test that a redefinition inside the PCH won't manifest as an ambiguous macro.
-// rdar://13016031
-
-#ifndef HEADER1
-#define HEADER1
-
-#define M1 0 // expected-note {{previous}}
-#define M1 1 // expected-warning {{redefined}}
-
-#define M2 3
-
-#elif !defined(HEADER2)
-#define HEADER2
-
-#define M2 4 // expected-warning {{redefined}}
- // expected-note at -6 {{previous}}
-
-#else
-
-// Use the error to verify it was parsed.
-int x = M1; // expected-note {{previous}}
-int x = M2; // expected-error {{redefinition}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/method-redecls.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/method-redecls.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/method-redecls.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -x objective-c %s -emit-pch -o %t
-// RUN: %clang_cc1 -x objective-c %s -emit-pch -o %t -D IMPL
-
-// Avoid infinite loop because of method redeclarations.
-
- at interface Foo
--(void)meth;
--(void)meth;
--(void)meth;
- at end
-
-#ifdef IMPL
-
- at implementation Foo
--(void)meth { }
- at end
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/method_pool.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/method_pool.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/method_pool.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-/* For use with the method_pool.m test */
-
-/* Whitespace below is significant */
-
-
-
-
-
-
-
-
-
-
-
- at interface TestMethodPool1
-+ alloc;
-- (double)instMethod:(int)foo;
- at end
-
- at interface TestMethodPool2
-- (char)instMethod:(int)foo;
- at end
-
- at implementation TestMethodPool1
-+ alloc { return 0; }
-
-- (double)instMethod:(int)foo {
-  return foo;
-}
- at end
-
- at implementation TestMethodPool2
-- (char)instMethod:(int)foo {
-  return foo;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/method_pool.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/method_pool.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/method_pool.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/method_pool.h -fsyntax-only -verify -Wno-objc-root-class %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x objective-c -Wno-objc-root-class -emit-pch -o %t %S/method_pool.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify -Wno-objc-root-class %s 
-
-int message_id(id x) {
-   return [x instMethod:17]; // expected-warning{{multiple methods}}
-}
-
-/* expected-note at method_pool.h:17{{using}} */
-/* expected-note at method_pool.h:21{{also}} */

Modified: trunk/contrib/llvm/tools/clang/test/PCH/missing-file.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/missing-file.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/missing-file.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// Test reading of PCH without original input files.
-
-// Generate the PCH, removing the original file:
-// RUN: echo 'struct S{char c; int i; }; void foo() {}' > %t.h
-// RUN: echo 'template <typename T> void tf() { T::foo(); }' >> %t.h
-// RUN: %clang_cc1 -x c++ -emit-pch -o %t.h.pch %t.h
-
-// %t.h might be touched by scanners as a hot file on Windows,
-// to fail to remove %.h with single run.
-// FIXME: Do we really want to work around bugs in virus checkers here?
-// RUN: rm %t.h || rm %t.h || rm %t.h
-
-// Check diagnostic with location in original source:
-// RUN: not %clang_cc1 -include-pch %t.h.pch -emit-obj -o %t.o %s 2> %t.stderr
-// RUN: grep 'could not find file' %t.stderr
-
-void qq(S*) {}
-
-#ifdef REDECL
-float foo() {return 0f;}
-#endif
-
-#ifdef INSTANTIATION
-void f() {
-  tf<int>();
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/modified-header-crash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/modified-header-crash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/modified-header-crash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Don't crash.
-
-// RUN: cp %S/modified-header-crash.h %t.h
-// RUN: %clang_cc1 -DCAKE -x c-header %t.h -emit-pch -o %t
-// RUN: echo 'int foobar;' >> %t.h
-// RUN: not %clang_cc1 %s -include-pch %t -fsyntax-only
-
-// FIXME: It is intended to suppress this on win32.
-// REQUIRES: ansi-escape-sequences
-
-void f(void) {
-  foo = 3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/modified-header-crash.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/modified-header-crash.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/modified-header-crash.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int foo;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/modified-header-error.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/modified-header-error.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/modified-header-error.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: mkdir -p %t.dir
-// RUN: echo '#include "header2.h"' > %t.dir/header1.h
-// RUN: echo > %t.dir/header2.h
-// RUN: cp %s %t.dir/t.c
-// RUN: %clang_cc1 -x c-header %t.dir/header1.h -emit-pch -o %t.pch
-// RUN: echo >> %t.dir/header2.h
-// RUN: %clang_cc1 %t.dir/t.c -include-pch %t.pch -fsyntax-only 2>&1 | FileCheck %s
-
-#include "header2.h"
-
-// CHECK: fatal error: file {{.*}} has been modified since the precompiled header {{.*}} was built
-// REQUIRES: shell

Modified: trunk/contrib/llvm/tools/clang/test/PCH/ms-if-exists.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/ms-if-exists.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/ms-if-exists.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -x c++ -fms-extensions -fsyntax-only -emit-pch -o %t %s
-// RUN: %clang_cc1 -x c++ -fms-extensions -fsyntax-only -include-pch %t %s -verify
-
-#ifndef HEADER
-#define HEADER
-template<typename T>
-void f(T t) {
-  __if_exists(T::foo) {
-    { }
-    t.foo();
-  }
-
-  __if_not_exists(T::bar) {
-    int *i = t;
-    { }
-  }
-}
-#else
-struct HasFoo { 
-  void foo();
-};
-struct HasBar { 
-  void bar(int);
-  void bar(float);
-};
-
-template void f(HasFoo); // expected-note{{in instantiation of function template specialization 'f<HasFoo>' requested here}}
-                         // expected-error at 14{{no viable conversion from 'HasFoo' to 'int *'}}
-template void f(HasBar);
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/multiple-include-pch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/multiple-include-pch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/multiple-include-pch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t1.pch %s
-// RUN: %clang_cc1 -emit-pch -o %t2.pch %s
-// RUN: %clang_cc1 %s -include-pch %t1.pch -include-pch %t2.pch -verify
-
-#ifndef HEADER
-#define HEADER
-
-extern int x;
-
-#else
-
-#warning parsed this
-// expected-warning at -1 {{parsed this}}
-int foo() {
-  return x;
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/multiple_decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/multiple_decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/multiple_decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/multiple_decls.h -fsyntax-only -ast-print -o - %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/multiple_decls.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -ast-print -o - %s 
-
-void f0(char c) {
-  wide(c);
-}
-
-struct wide w;
-struct narrow n;
-
-void f1(int i) {
-  narrow(i);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/multiple_decls.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/multiple_decls.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/multiple_decls.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// Header for PCH test multiple_decls.c
-
-struct wide { int value; };
-int wide(char);
-
-struct narrow { char narrow; };
-char narrow(int);

Modified: trunk/contrib/llvm/tools/clang/test/PCH/namespaces.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/namespaces.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/namespaces.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -x c++ -include %S/Inputs/namespaces.h -fsyntax-only %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c++ -emit-pch -o %t %S/Inputs/namespaces.h
-// RUN: %clang_cc1 -x c++ -include-pch %t -fsyntax-only %s 
-
-int int_val;
-N1::t1 *ip1 = &int_val;
-N1::t2 *ip2 = &int_val;
-N2::Inner::t3 *ip3 = &int_val;
-
-float float_val;
-namespace N2 { }
-N2::t1 *fp1 = &float_val;
-
-Alias1::t3 *ip4 = &int_val;
-t3 *ip5 = &int_val;
-
-void(*funp1)() = anon;
-
-namespace {
-  class C;
-}
-C* cp1;
-
-namespace N3 {
-  namespace {
-    class C;
-  }
-}
-
-N3::C *cp2;
-
-void(*funp2)() = ext;
-
-using N1::used_func;
-void (*pused)() = used_func;
-
-using N1::used_cls;
-used_cls s1;
-used_cls* ps1 = &s1;
-
-inline namespace N4 { }
-struct MemberOfN4 *mn4;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/nonvisible-external-defs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/nonvisible-external-defs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/nonvisible-external-defs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/nonvisible-external-defs.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/nonvisible-external-defs.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-int g(int, float); // expected-error{{conflicting types}}
-
-// expected-note at nonvisible-external-defs.h:10{{previous declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/nonvisible-external-defs.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/nonvisible-external-defs.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/nonvisible-external-defs.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Helper for PCH test nonvisible-external-defs.h
-
-
-
-
-
-
-
-void f() {
-  extern int g(int, int);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_container.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_container.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_container.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
- at protocol P @end
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(unsigned int)index;
-- (void)setObject:(id)object atIndexedSubscript:(unsigned int)index;
- at end
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id)key;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
-void all() {
-  NSMutableArray *array;
-  id oldObject = array[10];
-
-  array[10] = oldObject;
-
-  NSMutableDictionary *dictionary;
-  id key;
-  id newObject;
-  oldObject = dictionary[key];
-
-  dictionary[key] = newObject;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_container.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_container.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_container.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/objc_container.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x objective-c -emit-pch -o %t %S/objc_container.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-// RUN: %clang_cc1 -include-pch %t -ast-print %s | FileCheck -check-prefix=PRINT %s
-// RUN: %clang_cc1 -include-pch %t -emit-llvm -o - %s | FileCheck -check-prefix=IR %s
-
-// expected-no-diagnostics
-
-// CHECK-PRINT: id oldObject = array[10];
-// CHECK-PRINT: array[10] = oldObject;
-// CHECK-PRINT: oldObject = dictionary[key];
-// CHECK-PRINT: dictionary[key] = newObject;
-
-// CHECK-IR: define void @all() #0
-// CHECK-IR: {{call.*objc_msgSend}}
-// CHECK-IR: {{call.*objc_msgSend}}
-// CHECK-IR: {{call.*objc_msgSend}}
-// CHECK-IR: {{call.*objc_msgSend}}
-// CHECK-IR: ret void
-
-// CHECK: attributes #0 = { nounwind {{.*}} }
-// CHECK: attributes #1 = { nonlazybind }

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_exprs.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_exprs.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_exprs.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-
- at protocol foo;
- at class itf;
-
-// Expressions
-typedef typeof(@"foo" "bar") objc_string;
-typedef typeof(@encode(int)) objc_encode;
-typedef typeof(@protocol(foo)) objc_protocol;
-typedef typeof(@selector(noArgs)) objc_selector_noArgs;
-typedef typeof(@selector(oneArg:)) objc_selector_oneArg;
-typedef typeof(@selector(foo:bar:)) objc_selector_twoArg;
-
-
-// Types.
-typedef typeof(id<foo>) objc_id_protocol_ty;
-
-typedef typeof(itf*) objc_interface_ty;
-typedef typeof(itf<foo>*) objc_qual_interface_ty;
-
- at interface PP
- at property (assign) id prop;
- at end
-
-static inline id getPseudoObject(PP *p) {
-    return p.prop;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_exprs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_exprs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_exprs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -fblocks -include %S/objc_exprs.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x objective-c-header -emit-pch -fblocks -o %t %S/objc_exprs.h
-// RUN: %clang_cc1 -fblocks -include-pch %t -fsyntax-only -verify %s 
-
-// Expressions
-int *A1 = (objc_string)0;   // expected-warning {{aka 'NSString *'}}
-
-char A2 = (objc_encode){};  // expected-error {{not a compile-time constant}} \
-                               expected-warning {{char [2]}}
-
-int *A3 = (objc_protocol)0; // expected-warning {{aka 'Protocol *'}}
-
-
-// Types.
-int *T0 = (objc_id_protocol_ty)0; // expected-warning {{aka 'id<foo>'}}
-
-int *T1 = (objc_interface_ty)0; // expected-warning {{aka 'itf *'}}
-int *T2 = (objc_qual_interface_ty)0; // expected-warning {{aka 'itf<foo> *'}}
-
-objc_selector_noArgs s1;
-objc_selector_oneArg s2;
-objc_selector_twoArg s3;
-
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_import.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_import.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_import.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-/* For use with the objc_import.m test */
-
- at interface TestPCH
-+ alloc;
-- (void)instMethod;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_import.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_import.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_import.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/objc_import.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x objective-c -emit-pch -o %t %S/objc_import.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-#import "objc_import.h"
-
-void func() {
- TestPCH *xx;
-
- xx = [TestPCH alloc];
- [xx instMethod];
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_literals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_literals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_literals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -verify %s
-// RUN: %clang_cc1 -include-pch %t -ast-print %s | FileCheck -check-prefix=PRINT %s
-// RUN: %clang_cc1 -include-pch %t -emit-llvm -o - %s | FileCheck -check-prefix=IR %s
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
-
-typedef unsigned char BOOL;
-
- at interface NSNumber @end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
- at end
-
- at interface NSArray
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
- at end
-
-// CHECK-IR: define internal void @test_numeric_literals()
-static inline void test_numeric_literals() {
-  // CHECK-PRINT: id intlit = @17
-  // CHECK-IR: {{call.*17}}
-  id intlit = @17;
-  // CHECK-PRINT: id floatlit = @17.45
-  // CHECK-IR: {{call.*1.745}}
-  id floatlit = @17.45;
-}
-
-static inline void test_array_literals() {
-  // CHECK-PRINT: id arraylit = @[ @17, @17.45
-  id arraylit = @[@17, @17.45];
-}
-
-static inline void test_dictionary_literals() {
-  // CHECK-PRINT: id dictlit = @{ @17 : {{@17.45[^,]*}}, @"hello" : @"world" };
-  id dictlit = @{@17 : @17.45, @"hello" : @"world" };
-}
-
-#else
-void test_all() {
-  test_numeric_literals();
-  test_array_literals();
-  test_dictionary_literals();
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_literals.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_literals.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_literals.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -x objective-c++ -std=c++0x -o %t %s
-// RUN: %clang_cc1 -include-pch %t -x objective-c++ -std=c++0x  -verify %s
-// RUN: %clang_cc1 -include-pch %t -x objective-c++ -std=c++0x  -ast-print %s | FileCheck -check-prefix=PRINT %s
-// RUN: %clang_cc1 -include-pch %t -x objective-c++ -std=c++0x  -emit-llvm -o - %s | FileCheck -check-prefix=IR %s
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
-
-typedef unsigned char BOOL;
-
- at interface NSNumber @end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
- at end
-
- at interface NSArray
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
- at end
-
-template<typename T, typename U>
-struct pair {
-  T first;
-  U second;
-};
-
-template<typename T, typename U>
-pair<T, U> make_pair(const T& first, const U& second) {
-  return { first, second };
-}
-
-// CHECK-IR: define linkonce_odr void @_Z29variadic_dictionary_expansionIJP8NSStringS1_EJP8NSNumberS3_EEvDp4pairIT_T0_E
-template<typename ...Ts, typename ... Us>
-void variadic_dictionary_expansion(pair<Ts, Us>... key_values) {
-  // CHECK-PRINT: id dict = @{ key_values.first : key_values.second... };
-  // CHECK-IR: {{call.*objc_msgSend}}
-  // CHECK-IR: ret void
-  id dict = @{ key_values.first : key_values.second ... };
-}
-
-#else
-void test_all() {
-  variadic_dictionary_expansion(make_pair(@"Seventeen", @17), 
-                                make_pair(@"YES", @true));
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_methods.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_methods.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_methods.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-/* For use with the methods.m test */
-
- at interface TestPCH
-+ alloc;
-- (instancetype)instMethod;
- at end
-
- at class TestForwardClassDecl;
-
-// FIXME: @compatibility_alias  AliasForTestPCH TestPCH;
-
-// http://llvm.org/PR12689
- at interface PR12689
- at end
-
- at implementation PR12689
--(void)mugi:(int)x {
-  switch(x) {
-    case 23: {}
-  }
-}
--(void)bonk:(int)x {
-  switch(x) {
-    case 42: {}
-  }
-}
- at end
-
- at interface PR12689_2
- at end
-
- at implementation PR12689_2
--(void)mugi:(int)x {
-    switch(x) {
-        case 23: [self bonk:x]; break;
-        case 82: break;
-    }
-}
--(void)bonk:(int)x {
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_methods.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_methods.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_methods.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/objc_methods.h -fsyntax-only -Wno-objc-root-class -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x objective-c -emit-pch -o %t %S/objc_methods.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-void func() {
- TestPCH *xx;
- TestForwardClassDecl *yy;
-// FIXME:
-// AliasForTestPCH *zz;
- 
- xx = [TestPCH alloc];
- [xx instMethod];
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_property.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_property.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_property.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-/* For use with the objc_property.m PCH test */
- at interface TestProperties
-{
-  int value;
-  float percentage;
-}
-
-+ alloc;
-
- at property int value;
- at property float percentage;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/objc_property.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x objective-c -emit-pch -o %t %S/objc_property.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-// expected-no-diagnostics
-
-void func() {
- TestProperties *xx = [TestProperties alloc];
- xx.value = 5;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_stmts.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_stmts.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_stmts.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-/* For use with the methods.m test */
-
- at interface A
- at end
-
- at interface B
- at end
-
- at interface TestPCH
-- (void)instMethod;
- at end
-
- at implementation TestPCH
-- (void)instMethod {
-  @try {
-  } @catch(A *a) {
-  } @catch(B *b) {
-  } @catch(...) {
-  } @finally {
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objc_stmts.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objc_stmts.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objc_stmts.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/objc_stmts.h -emit-llvm -fobjc-exceptions -o - %s
-// RUN: %clang_cc1 -include %S/objc_stmts.h -ast-print -fobjc-exceptions -o - %s | FileCheck %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x objective-c -emit-pch -fobjc-exceptions -o %t %S/objc_stmts.h
-// RUN: %clang_cc1 -include-pch %t -emit-llvm -fobjc-exceptions -o - %s 
-// RUN: %clang_cc1 -include-pch %t -ast-print -fobjc-exceptions -o - %s | FileCheck %s
-
-// CHECK: @catch(A *a)
-// CHECK: @catch(B *b)
-// CHECK: @catch()

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objcxx-ivar-class.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objcxx-ivar-class.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objcxx-ivar-class.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-struct S {
-    S();
-    S(const S&);
-    ~S();
-    S& operator= (const S&);
-};
-
- at interface C {
-    S position;
-}
- at property(assign, nonatomic) S position;
- at end
-
- at implementation C
-    @synthesize position;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/objcxx-ivar-class.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/objcxx-ivar-class.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/objcxx-ivar-class.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/objcxx-ivar-class.h -verify %s -emit-llvm -o - | FileCheck %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x objective-c++-header -emit-pch -o %t %S/objcxx-ivar-class.h
-// RUN: %clang_cc1 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s
-
-// CHECK: [C position]
-// CHECK: call {{.*}} @_ZN1SC1ERKS_
-
-// CHECK: [C setPosition:]
-// CHECK: call %struct.S* @_ZN1SaSERKS_
-
-// CHECK: [C .cxx_destruct]
-// CHECK: [C .cxx_construct]

Modified: trunk/contrib/llvm/tools/clang/test/PCH/ocl_types.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/ocl_types.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/ocl_types.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/ocl_types.h -fsyntax-only %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x cl -emit-pch -o %t %S/ocl_types.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only %s -ast-print
-
-void foo1(img1d_t img);
-
-void foo2(img1darr_t img);
-
-void foo3(img1dbuff_t img);
-
-void foo4(img2d_t img);
-
-void foo5(img2darr_t img);
-
-void foo6(img3d_t img);
-
-void foo7(smp_t smp) {
-  smp_t loc_smp;
-}
-
-void foo8(evt_t evt) {
-  evt_t loc_evt;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/ocl_types.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/ocl_types.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/ocl_types.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-/* Used with the ocl_types.cl test */
-
-// image1d_t
-typedef image1d_t img1d_t;
-
-// image1d_array_t
-typedef image1d_array_t img1darr_t;
-
-// image1d_buffer_t
-typedef image1d_buffer_t img1dbuff_t;
-
-// image2d_t
-typedef image2d_t img2d_t;
-
-// image2d_array_t
-typedef image2d_array_t img2darr_t;
-
-// image3d_t
-typedef image3d_t img3d_t;
-
-// sampler_t
-typedef sampler_t smp_t;
-
-// event_t
-typedef event_t evt_t;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/opencl-extensions.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/opencl-extensions.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/opencl-extensions.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only %s 
-
-#ifndef HEADER
-#define HEADER
-// Header.
-
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-
-#else
-// Using the header.
-
-void test(void) {
-  double d;
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pch-dir.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pch-dir.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pch-dir.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: mkdir -p %t.h.gch
-// RUN: %clang -x c-header %S/pch-dir.h -DFOO=foo -o %t.h.gch/c.gch 
-// RUN: %clang -x c-header %S/pch-dir.h -DFOO=bar -o %t.h.gch/cbar.gch 
-// RUN: %clang -x c++-header -std=c++98 %S/pch-dir.h -o %t.h.gch/cpp.gch 
-// RUN: %clang -include %t.h -DFOO=foo -fsyntax-only %s -Xclang -print-stats 2> %t.clog
-// RUN: FileCheck -check-prefix=C %s < %t.clog
-// RUN: %clang -include %t.h -DFOO=bar -DBAR=bar -fsyntax-only %s -Xclang -ast-print > %t.cbarlog
-// RUN: FileCheck -check-prefix=CBAR %s < %t.cbarlog
-// RUN: %clang -x c++ -include %t.h -std=c++98 -fsyntax-only %s -Xclang -print-stats 2> %t.cpplog
-// RUN: FileCheck -check-prefix=CPP %s < %t.cpplog
-
-// RUN: not %clang -x c++ -std=c++11 -include %t.h -fsyntax-only %s 2> %t.cpp11log
-// RUN: FileCheck -check-prefix=CPP11 %s < %t.cpp11log
-
-// CHECK-CBAR: int bar
-int FOO;
-
-int get() {
-#ifdef __cplusplus
-  // CHECK-CPP: .h.gch{{[/\\]}}cpp.gch
-  return i;
-#else
-  // CHECK-C: .h.gch{{[/\\]}}c.gch
-  return j;
-#endif
-}
-
-// CHECK-CPP11: no suitable precompiled header file found in directory

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pch-dir.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pch-dir.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pch-dir.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#ifdef __cplusplus
-extern int i;
-#else
-extern int j;
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pch__VA_ARGS__.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pch__VA_ARGS__.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pch__VA_ARGS__.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/pch__VA_ARGS__.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -Weverything %s 2>&1 | FileCheck %s
-
-#define mylog(...) printf(__VA_ARGS__)
-// CHECK-NOT: warning: __VA_ARGS__ can only appear in the expansion of a C99 variadic macro

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pch__VA_ARGS__.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pch__VA_ARGS__.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pch__VA_ARGS__.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// Header for PCH test fuzzy-pch.c
-void f(int X);

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pchpch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pchpch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pchpch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-pch -o %t1 %S/pchpch1.h
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-pch -o %t2 %S/pchpch2.h -include-pch %t1
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fsyntax-only %s -include-pch %t2
-
-// The purpose of this test is to make sure that a PCH created while including
-// an existing PCH can be loaded.

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pending-ids.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pending-ids.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pending-ids.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// Test for rdar://10278815
-
-// Without PCH
-// RUN: %clang_cc1 -fsyntax-only -verify -include %s %s
-
-// With PCH
-// RUN: %clang_cc1 %s -emit-pch -o %t
-// RUN: %clang_cc1 -emit-llvm-only -verify %s -include-pch %t -g
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
-//===----------------------------------------------------------------------===//
-// Header
-
-typedef char BOOL;
-
- at interface NSString
-+ (BOOL)meth;
- at end
-
-static NSString * const cake = @"cake";
-
-//===----------------------------------------------------------------------===//
-#else
-//===----------------------------------------------------------------------===//
-
- at interface Foo {
-  BOOL ivar;
-}
- at end
-
-//===----------------------------------------------------------------------===//
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pr4489.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pr4489.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pr4489.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang -x c-header -o %t.pch %s
-// RUN: echo > %t.empty.c
-// RUN: %clang -include %t -x c %t.empty.c -emit-llvm -S -o -
-
-// FIXME: This test is forcibly disabled, it is flaky on the clang-i686-xp-msvc9
-// buildbot.
-//
-// RUN: false
-// XFAIL: *
-
-// PR 4489: Crash with PCH
-// PR 4492: Crash with PCH (round two)
-// PR 4509: Crash with PCH (round three)
-typedef struct _IO_FILE FILE;
-extern int fprintf (struct _IO_FILE *__restrict __stream,
-                    __const char *__restrict __format, ...);
-
-int x(void)
-{
-  switch (1) {
-    case 2: ;
-      int y = 0;
-  }
-}
-
-void y(void) {
-  extern char z;
-  fprintf (0, "a");
-}
-
-struct y0 { int i; } y0[1] = {};
-
-void x0(void)
-{
-  extern char z0;
-  fprintf (0, "a");
-}
-
-void x1(void)
-{
-  fprintf (0, "asdf");
-}
-
-void y1(void)
-{
-  extern char e;
-  fprintf (0, "asdf");
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pragma-diag-section.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pragma-diag-section.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pragma-diag-section.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 %s -include %s -verify -fsyntax-only
-
-// Test with pch.
-// RUN: %clang_cc1 %s -emit-pch -o %t
-// RUN: %clang_cc1 %s -include-pch %t -verify -fsyntax-only
-
-#ifndef HEADER
-#define HEADER
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wtautological-compare"
-template <typename T>
-struct TS1 {
-    void m() {
-      T a = 0;
-      T b = a==a;
-    }
-};
-#pragma clang diagnostic pop
-
-#else
-
-
-template <typename T>
-struct TS2 {
-    void m() {
-      T a = 0;
-      T b = a==a; // expected-warning {{self-comparison always evaluates to true}} expected-note at 39 {{in instantiation of member function}}
-    }
-};
-
-void f() {
-    TS1<int> ts1;
-    ts1.m();
-
-
-    TS2<int> ts2;
-    ts2.m();
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pragma-diag.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pragma-diag.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pragma-diag.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 %s -include %s -verify -fsyntax-only
-
-// Test with pch.
-// RUN: %clang_cc1 %s -emit-pch -o %t
-// RUN: %clang_cc1 %s -include-pch %t -verify -fsyntax-only
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
-
-#pragma clang diagnostic ignored "-Wtautological-compare"
-
-#else
-
-void f() {
-  int a = 0;
-  int b = a==a;
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pragma-weak.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pragma-weak.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pragma-weak.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/pragma-weak.h %s -verify -emit-llvm -o - | FileCheck %s
-
-// Test with pch.
-// RUN: %clang_cc1 -x c-header -emit-pch -o %t %S/pragma-weak.h
-// RUN: %clang_cc1 -include-pch %t %s -verify -emit-llvm -o - | FileCheck %s
-
-// CHECK: @weakvar = weak global i32 0
-int weakvar;
-// expected-warning {{weak identifier 'undeclaredvar' never declared}}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pragma-weak.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pragma-weak.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pragma-weak.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Header for PCH test pragma-weak.c
-
-#pragma weak weakvar
-
-
-
-
-
-
-#pragma weak undeclaredvar

Modified: trunk/contrib/llvm/tools/clang/test/PCH/preamble.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/preamble.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/preamble.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// Check that using the preamble option actually skips the preamble.
-
-// RUN: %clang_cc1 -emit-pch -o %t %S/Inputs/preamble.h -DFOO=f
-// RUN: %clang_cc1 -include-pch %t -preamble-bytes=317,1 -DFOO=f -verify %s -emit-llvm -o - | FileCheck %s
-
-float f(int); // Not an error, because we skip this via the preamble!
-
-
-
-
-
-
-
-
-
-
-
-
-int g(int x) {
-  return FOO(x);
-}
-
-// CHECK: call {{.*}} @f(

Modified: trunk/contrib/llvm/tools/clang/test/PCH/preprocess.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/preprocess.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/preprocess.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// Check that -E mode is invariant when using an implicit PCH.
-
-// RUN: %clang_cc1 -include %S/preprocess.h -E -o %t.orig %s
-// RUN: %clang_cc1 -emit-pch -o %t %S/preprocess.h
-// RUN: %clang_cc1 -include-pch %t -E -o %t.from_pch %s
-// RUN: diff %t.orig %t.from_pch
-
-a_typedef a_value;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/preprocess.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/preprocess.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/preprocess.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// Helper header for preprocess.c PCH test
-#ifndef PREPROCESS_H
-#define PREPROCESS_H
-
-typedef int a_typedef;
-
-#endif // PREPROCESS_H

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pth.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pth.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pth.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-pth -o %t %S/pth.h
-// RUN: %clang_cc1 -triple i386-unknown-unknown -include-pth %t -fsyntax-only %s 2>&1 | FileCheck %s
-
-#error This is the only diagnostic
-
-// CHECK: This is the only diagnostic
-// CHECK: 1 error generated.
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/PCH/pth.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/pth.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/pth.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// This case came up when using PTH with Boost (<rdar://problem/8227989>).
-
-# ifndef R8227989_PREPROCESSOR_CONFIG_CONFIG_HPP
-# ifndef R8227989_PP_CONFIG_FLAGS
-# endif
-#
-# ifndef R8227989_PP_CONFIG_ERRORS
-#    ifdef NDEBUG
-#    endif
-# endif
-# endif
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/rdar10830559.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/rdar10830559.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/rdar10830559.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -fsyntax-only -emit-llvm-only %s
-
-// Test with pch.
-// RUN: touch %t.empty.cpp
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -emit-llvm-only %t.empty.cpp 
-
-// rdar://10830559
-
-#pragma ms_struct on
-
-template< typename T >
-class Templated
-{
-public:
-   struct s;
-};
-
-
-class Foo
-{
-private:
-
-   class Bar
-   {
-   private:
-      class BarTypes { public: virtual void Func(); }; 
-      class BarImpl {};
-      friend class Foo;
-   };
-   
-   
-   friend class Templated< Bar::BarImpl >::s;
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/rdar8852495.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/rdar8852495.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/rdar8852495.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 %s -include %s -verify -fsyntax-only -Wno-sign-compare -Wtautological-compare
-
-// Test with pch.
-// RUN: %clang_cc1 %s -emit-pch -o %t -Wsign-compare -Wtautological-compare
-// RUN: %clang_cc1 %s -include-pch %t -verify -fsyntax-only -Wno-sign-compare -Wtautological-compare
-
-// expected-no-diagnostics
-
-// This tests that diagnostic mappings from PCH are propagated for #pragma
-// diagnostics but not for command-line flags.
-
-#ifndef HEADER
-#define HEADER
-
-#pragma clang diagnostic ignored "-Wtautological-compare"
-
-#else
-
-int f() {
-  int a;
-  int b = a==a;
-  unsigned x;
-  signed y;
-  return x == y;
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/reinclude.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/reinclude.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/reinclude.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test without PCH
-// RUN: %clang_cc1 %s -include %S/reinclude1.h -include %S/reinclude2.h -fsyntax-only -verify
-
-// RUN: %clang_cc1 -x c++-header %S/reinclude1.h -emit-pch -o %t1
-// RUN: %clang_cc1 -x c++-header %S/reinclude2.h -include-pch %t1 -emit-pch -o %t2
-// RUN: %clang_cc1 %s -include-pch %t2 -fsyntax-only -verify
-// RUN: %clang_cc1 -x c++-header %S/reinclude2.h -include-pch %t1 -emit-pch -o %t2 
-// RUN: %clang_cc1 %s -include-pch %t2 -fsyntax-only -verify
-
-// expected-no-diagnostics
-
-int q2 = A::y;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/reinclude1.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/reinclude1.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/reinclude1.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-namespace A {
-  int x;
-  int y;
-}
-
-int foo;
-#define foo foo

Modified: trunk/contrib/llvm/tools/clang/test/PCH/reinclude2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/reinclude2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/reinclude2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int q1 = A::x;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/reloc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/reloc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/reloc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang -target x86_64-apple-darwin10 --relocatable-pch -o %t \
-// RUN:   -isysroot %S/libroot %S/libroot/usr/include/reloc.h
-// RUN: %clang -target x86_64-apple-darwin10 -fsyntax-only \
-// RUN:   -include-pch %t -isysroot %S/libroot %s -Xclang -verify
-// RUN: not %clang -target x86_64-apple-darwin10 -include-pch %t %s
-
-#include <reloc.h>
-
-int x = 2; // expected-error{{redefinition}}
-int y = 5; // expected-error{{redefinition}}
-
-
-// expected-note at libroot/usr/include/reloc.h:13{{previous definition}}
-// expected-note at libroot/usr/include/reloc2.h:14{{previous definition}}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-//  %clang_cc1 -remap-file "%s;%S/Inputs/remapped-file" -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-EXIST %s
-
-// RUN: %clang_cc1 -x c++-header %s.h -emit-pch -o %t.pch
-// RUN: %clang_cc1 %s -include-pch %t.pch -remap-file "%s.h;%s.remap.h" -fsyntax-only 2>&1 | FileCheck %s
-
-const char *str = STR;
-int ge = zool;
-
-// CHECK: file '{{.*[/\\]}}remap-file-from-pch.cpp.h' from the precompiled header has been overridden
-// CHECK: use of undeclared identifier 'zool'

Modified: trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-
-#define STR "nexus"

Modified: trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp.remap.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp.remap.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/remap-file-from-pch.cpp.remap.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-
-#define STR          "nexus"
-
-int zool;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/replaced-decl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/replaced-decl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/replaced-decl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// Without PCH
-// RUN: %clang_cc1 -fsyntax-only -verify %s -include %s -include %s
-
-// With PCH
-// RUN: %clang_cc1 -fsyntax-only -verify %s -chain-include %s -chain-include %s
-
-#ifndef HEADER1
-#define HEADER1
-
- at class I;
-
-#elif !defined(HEADER2)
-#define HEADER2
-
- at interface I
- at end
-
-#else
-
-typedef int I; // expected-error {{redefinition}}
-               // expected-note at 15 {{previous}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/selector-warning.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/selector-warning.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/selector-warning.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-typedef struct objc_selector    *SEL;
-
- at interface Foo 
-- (void) NotOK;
- at end
-
- at implementation Foo
-- (void) foo
-{
-  SEL a = @selector(b1ar); 
-  a = @selector(b1ar); 
-  a = @selector(bar);
-  a = @selector(ok);	// expected-warning {{unimplemented selector 'ok'}}
-  a = @selector(ok);
-  a = @selector(NotOK);	// expected-warning {{unimplemented selector 'NotOK'}}
-  a = @selector(NotOK);
-
-  a = @selector(clNotOk);	// expected-warning {{unimplemented selector 'clNotOk'}}
-
-  a = @selector (cl1);
-  a = @selector (cl2);
-  a = @selector (instNotOk);	// expected-warning {{unimplemented selector 'instNotOk'}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/PCH/selector-warning.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/selector-warning.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/selector-warning.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -emit-pch -o %t.h.pch %S/selector-warning.h
-// RUN: %clang_cc1 -include-pch %t.h.pch %s
-
- at interface Bar 
-+ (void) clNotOk;
-- (void) instNotOk;
-+ (void) cl1;
- at end
-
- at implementation Bar
-- (void) bar {}
-+ (void) cl1 {}
-+ (void) cl2 {}
- at end
-
- at implementation Bar(CAT)
-- (void) b1ar {}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/single-token-macro.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/single-token-macro.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/single-token-macro.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// rdar://10588825
-
-// Test this without pch.
-// RUN: %clang_cc1 %s -include %s -verify -fsyntax-only
-
-// Test with pch.
-// RUN: %clang_cc1 %s -emit-pch -o %t
-// RUN: %clang_cc1 %s -include-pch %t -verify -fsyntax-only
-
-// expected-no-diagnostics
-
-#ifndef HEADER
-#define HEADER
-
-#define __stdcall
-#define STDCALL __stdcall
-
-void STDCALL Foo(void);
-
-#else
-
-void STDCALL Foo(void)
-{
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/source-manager-stack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/source-manager-stack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/source-manager-stack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test that the source manager has the "proper" idea about the include stack
-// when using PCH.
-
-// RUN: echo 'int x;' > %t.prefix.h
-// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-show-note-include-stack -include %t.prefix.h %s 2> %t.diags.no_pch.txt
-// RUN: %clang_cc1 -emit-pch -o %t.prefix.pch %t.prefix.h
-// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-show-note-include-stack -include-pch %t.prefix.pch %s 2> %t.diags.pch.txt
-// RUN: diff %t.diags.no_pch.txt %t.diags.pch.txt
-// XFAIL: *
-// PR5662
-
-float x;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/stmts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/stmts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/stmts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/stmts.h -fsyntax-only -emit-llvm -o - %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/stmts.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -emit-llvm -o - %s 
-
-void g0(void) { f0(5); }
-int g1(int x) { return f1(x); }
-const char* query_name(void) { return what_is_my_name(); }
-
-int use_computed_goto(int x) { return computed_goto(x); }
-
-int get_weird_max(int x, int y) { return weird_max(x, y); }

Modified: trunk/contrib/llvm/tools/clang/test/PCH/stmts.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/stmts.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/stmts.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// Header for PCH test stmts.c
-
-void f0(int x) { 
-  // NullStmt
-  ;
-  // IfStmt
-  if (x) {
-  } else if (x + 1) {
-  }
-
-  switch (x) {
-  case 0:
-    x = 17;
-    break;
-
-  case 1:
-    break;
-
-  default:
-    switch (x >> 1) {
-    case 7:
-      // fall through
-    case 9:
-      break;
-    }
-    x += 2;
-    break;
-  }
-
-  while (x > 20) {
-    if (x > 30) {
-      --x;
-      continue;
-    } else if (x < 5)
-      break;
-    else
-      goto done;
-  }
-
-  do {
-    x++;
-  } while (x < 10);
-
- almost_done:
-  for (int y = x; y < 20; ++y) {
-    if (x + y == 12)
-      return;
-    else if (x - y == 7)
-      goto almost_done;
-  }
-
- done:
-  x = x + 2;
-
-  int z = x, *y, j = 5;
-}
-
-int f1(int x) {
-  switch (x) {
-  case 17:
-    return 12;
-
-  default:
-    break;
-  }
-
-  // variable-length array
-  int array[x * 17 + 3];
-
-  return x*2;
-}
-
-const char* what_is_my_name(void) { return __func__; }
-
-int computed_goto(int x) {
- start:
-  x = x << 1;
-  void *location = &&start;
-
-  if (x > 17)
-    location = &&done;
-
-  while (x > 12) {
-    --x;
-    if (x == 15)
-      goto *location;
-  }
-
-  done:
-  return 5;
-}
-
-#define maxint(a,b) ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
-int weird_max(int x, int y) {
-  return maxint(++x, --y);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %S/struct.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %S/struct.h
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-struct Point *p1;
-
-float getX(struct Point *p1) {
-  return p1->x;
-}
-
-void *get_fun_ptr() {
-  return fun->is_ptr? fun->ptr : 0;
-}
-
-struct Fun2 {
-  int very_fun;
-};
-
-int get_very_fun() {
-  return fun2->very_fun;
-}
-
-int *int_ptr_fail = &fun->is_ptr; // expected-error{{address of bit-field requested}}
-
-struct Nested nested = { 1, 2 };

Modified: trunk/contrib/llvm/tools/clang/test/PCH/struct.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/struct.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/struct.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// Used with the struct.c test
-
-struct Point {
-  float x, y, z;
-};
-
-struct Point2 {
-  float xValue, yValue, zValue;
-};
-
-struct Fun;
-
-struct Fun *fun;
-
-struct Fun {
-  int is_ptr : 1;
-
-  union {
-    void *ptr;
-    int  *integer;
-  };
-};
-
-struct Fun2;
-struct Fun2 *fun2;
-
-struct S {
-  struct Nested { int x, y; } nest;
-};

Modified: trunk/contrib/llvm/tools/clang/test/PCH/subscripting-literals.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/subscripting-literals.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/subscripting-literals.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o %t.nopch.ll %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-pch -o %t.pch %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o %t.pch.ll %s -include-pch %t.pch
-// RUN: diff %t.nopch.ll %t.pch.ll
-
-#ifndef HEADER
-#define HEADER
-
- at interface NSArray
-- (id)objectAtIndexedSubscript:(int)index;
-+ (id)arrayWithObjects:(id *)objects count:(unsigned)count;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
- at interface NSDictionary
-- (id)objectForKeyedSubscript:(id)key;
-+ (id)dictionaryWithObjects:(id *)objects forKeys:(id *)keys count:(unsigned)count;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at interface NSNumber
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
- at class NSString;
-
-id testArray(int idx, id p) {
-  NSMutableArray *array;
-  array[idx] = p;
-  NSArray *arr = @[ p, @7 ];
-  return array[idx];
-}
-
-void testDict(NSString *key, id newObject, id oldObject) {
-  NSMutableDictionary *dictionary;
-  oldObject = dictionary[key];
-  dictionary[key] = newObject;
-  NSDictionary *dict = @{ key: newObject, key: oldObject };
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/target-options.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/target-options.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/target-options.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin9 -emit-pch -o %t.pch %S/target-options.h
-// RUN: not %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include-pch %t.pch %s -emit-llvm -o - > %t.err 2>&1
-// RUN: FileCheck %s < %t.err
-
-// CHECK: for the target

Modified: trunk/contrib/llvm/tools/clang/test/PCH/target-options.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/target-options.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/target-options.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-enum { apple_cc = __APPLE_CC__ };
-

Modified: trunk/contrib/llvm/tools/clang/test/PCH/tentative-defs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/tentative-defs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/tentative-defs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// Test with pch.
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -emit-pch -o %t.pch %S/tentative-defs.h
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -include-pch %t.pch -verify -emit-llvm -o %t %s
-
-// RUN: grep "@variable = common global i32 0" %t | count 1
-// RUN: grep "@incomplete_array = common global .*1 x i32" %t | count 1
-
-// FIXME: expected-warning at tentative-defs.h:9{{tentative}}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/tentative-defs.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/tentative-defs.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/tentative-defs.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// Header for PCH test tentative-defs.c
-int variable;
-
-
-
-
-
-
-int incomplete_array[];

Modified: trunk/contrib/llvm/tools/clang/test/PCH/thread-local.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/thread-local.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/thread-local.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -triple x86_64-linux-gnu -emit-pch %s -o %t
-// RUN: %clang_cc1 -pedantic-errors -std=c++11 -triple x86_64-linux-gnu -include-pch %t -verify %s
-
-#ifndef HEADER_INCLUDED
-
-#define HEADER_INCLUDED
-extern thread_local int a;
-extern _Thread_local int b;
-extern int c;
-
-#else
-
-_Thread_local int a; // expected-error {{thread-local declaration of 'a' with static initialization follows declaration with dynamic initialization}}
-// expected-note at 7 {{previous declaration is here}}
-thread_local int b; // expected-error {{thread-local declaration of 'b' with dynamic initialization follows declaration with static initialization}}
-// expected-note at 8 {{previous declaration is here}}
-thread_local int c; // expected-error {{thread-local declaration of 'c' follows non-thread-local declaration}}
-// expected-note at 9 {{previous declaration is here}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/thread-safety-attrs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/thread-safety-attrs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/thread-safety-attrs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,317 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %s -fsyntax-only -verify -Wthread-safety -std=c++11 %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %s -std=c++11
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify -Wthread-safety -std=c++11 %s
-
-#ifndef HEADER
-#define HEADER
-
-#define LOCKABLE            __attribute__ ((lockable))
-#define SCOPED_LOCKABLE     __attribute__ ((scoped_lockable))
-#define GUARDED_BY(x)       __attribute__ ((guarded_by(x)))
-#define GUARDED_VAR         __attribute__ ((guarded_var))
-#define PT_GUARDED_BY(x)    __attribute__ ((pt_guarded_by(x)))
-#define PT_GUARDED_VAR      __attribute__ ((pt_guarded_var))
-#define ACQUIRED_AFTER(...) __attribute__ ((acquired_after(__VA_ARGS__)))
-#define ACQUIRED_BEFORE(...) __attribute__ ((acquired_before(__VA_ARGS__)))
-#define EXCLUSIVE_LOCK_FUNCTION(...)   __attribute__ ((exclusive_lock_function(__VA_ARGS__)))
-#define SHARED_LOCK_FUNCTION(...)      __attribute__ ((shared_lock_function(__VA_ARGS__)))
-#define EXCLUSIVE_TRYLOCK_FUNCTION(...) __attribute__ ((exclusive_trylock_function(__VA_ARGS__)))
-#define SHARED_TRYLOCK_FUNCTION(...)    __attribute__ ((shared_trylock_function(__VA_ARGS__)))
-#define UNLOCK_FUNCTION(...)            __attribute__ ((unlock_function(__VA_ARGS__)))
-#define LOCK_RETURNED(x)    __attribute__ ((lock_returned(x)))
-#define LOCKS_EXCLUDED(...) __attribute__ ((locks_excluded(__VA_ARGS__)))
-#define EXCLUSIVE_LOCKS_REQUIRED(...) \
-  __attribute__ ((exclusive_locks_required(__VA_ARGS__)))
-#define SHARED_LOCKS_REQUIRED(...) \
-  __attribute__ ((shared_locks_required(__VA_ARGS__)))
-#define NO_THREAD_SAFETY_ANALYSIS  __attribute__ ((no_thread_safety_analysis))
-
-
-class  __attribute__((lockable)) Mutex {
- public:
-  void Lock() __attribute__((exclusive_lock_function));
-  void ReaderLock() __attribute__((shared_lock_function));
-  void Unlock() __attribute__((unlock_function));
-  bool TryLock() __attribute__((exclusive_trylock_function(true)));
-  bool ReaderTryLock() __attribute__((shared_trylock_function(true)));
-  void LockWhen(const int &cond) __attribute__((exclusive_lock_function));
-};
-
-class __attribute__((scoped_lockable)) MutexLock {
- public:
-  MutexLock(Mutex *mu) __attribute__((exclusive_lock_function(mu)));
-  ~MutexLock() __attribute__((unlock_function));
-};
-
-class __attribute__((scoped_lockable)) ReaderMutexLock {
- public:
-  ReaderMutexLock(Mutex *mu) __attribute__((exclusive_lock_function(mu)));
-  ~ReaderMutexLock() __attribute__((unlock_function));
-};
-
-class SCOPED_LOCKABLE ReleasableMutexLock {
- public:
-  ReleasableMutexLock(Mutex *mu) EXCLUSIVE_LOCK_FUNCTION(mu);
-  ~ReleasableMutexLock() UNLOCK_FUNCTION();
-
-  void Release() UNLOCK_FUNCTION();
-};
-
-
-// The universal lock, written "*", allows checking to be selectively turned
-// off for a particular piece of code.
-void beginNoWarnOnReads()  SHARED_LOCK_FUNCTION("*");
-void endNoWarnOnReads()    UNLOCK_FUNCTION("*");
-void beginNoWarnOnWrites() EXCLUSIVE_LOCK_FUNCTION("*");
-void endNoWarnOnWrites()   UNLOCK_FUNCTION("*");
-
-
-// For testing handling of smart pointers.
-template<class T>
-class SmartPtr {
-public:
-  SmartPtr(T* p) : ptr_(p) { }
-  SmartPtr(const SmartPtr<T>& p) : ptr_(p.ptr_) { }
-  ~SmartPtr();
-
-  T* get()        const { return ptr_; }
-  T* operator->() const { return ptr_; }
-  T& operator*()  const { return *ptr_; }
-
-private:
-  T* ptr_;
-};
-
-
-// For testing destructor calls and cleanup.
-class MyString {
-public:
-  MyString(const char* s);
-  ~MyString();
-};
-
-
-
-Mutex sls_mu;
-
-Mutex sls_mu2 __attribute__((acquired_after(sls_mu)));
-int sls_guard_var __attribute__((guarded_var)) = 0;
-int sls_guardby_var __attribute__((guarded_by(sls_mu))) = 0;
-
-bool getBool();
-
-class MutexWrapper {
-public:
-   Mutex mu;
-   int x __attribute__((guarded_by(mu)));
-   void MyLock() __attribute__((exclusive_lock_function(mu)));
-};
-
-#else
-
-MutexWrapper sls_mw;
-
-void sls_fun_0() {
-  sls_mw.mu.Lock();
-  sls_mw.x = 5;
-  sls_mw.mu.Unlock();
-}
-
-void sls_fun_2() {
-  sls_mu.Lock();
-  int x = sls_guard_var;
-  sls_mu.Unlock();
-}
-
-void sls_fun_3() {
-  sls_mu.Lock();
-  sls_guard_var = 2;
-  sls_mu.Unlock();
-}
-
-void sls_fun_4() {
-  sls_mu2.Lock();
-  sls_guard_var = 2;
-  sls_mu2.Unlock();
-}
-
-void sls_fun_5() {
-  sls_mu.Lock();
-  int x = sls_guardby_var;
-  sls_mu.Unlock();
-}
-
-void sls_fun_6() {
-  sls_mu.Lock();
-  sls_guardby_var = 2;
-  sls_mu.Unlock();
-}
-
-void sls_fun_7() {
-  sls_mu.Lock();
-  sls_mu2.Lock();
-  sls_mu2.Unlock();
-  sls_mu.Unlock();
-}
-
-void sls_fun_8() {
-  sls_mu.Lock();
-  if (getBool())
-    sls_mu.Unlock();
-  else
-    sls_mu.Unlock();
-}
-
-void sls_fun_9() {
-  if (getBool())
-    sls_mu.Lock();
-  else
-    sls_mu.Lock();
-  sls_mu.Unlock();
-}
-
-void sls_fun_good_6() {
-  if (getBool()) {
-    sls_mu.Lock();
-  } else {
-    if (getBool()) {
-      getBool(); // EMPTY
-    } else {
-      getBool(); // EMPTY
-    }
-    sls_mu.Lock();
-  }
-  sls_mu.Unlock();
-}
-
-void sls_fun_good_7() {
-  sls_mu.Lock();
-  while (getBool()) {
-    sls_mu.Unlock();
-    if (getBool()) {
-      if (getBool()) {
-        sls_mu.Lock();
-        continue;
-      }
-    }
-    sls_mu.Lock();
-  }
-  sls_mu.Unlock();
-}
-
-void sls_fun_good_8() {
-  sls_mw.MyLock();
-  sls_mw.mu.Unlock();
-}
-
-void sls_fun_bad_1() {
-  sls_mu.Unlock(); // \
-    // expected-warning{{unlocking 'sls_mu' that was not locked}}
-}
-
-void sls_fun_bad_2() {
-  sls_mu.Lock();
-  sls_mu.Lock(); // \
-    // expected-warning{{locking 'sls_mu' that is already locked}}
-  sls_mu.Unlock();
-}
-
-void sls_fun_bad_3() {
-  sls_mu.Lock(); // expected-note {{mutex acquired here}}
-} // expected-warning{{mutex 'sls_mu' is still locked at the end of function}}
-
-void sls_fun_bad_4() {
-  if (getBool())
-    sls_mu.Lock();  // expected-note{{mutex acquired here}}
-  else
-    sls_mu2.Lock(); // expected-note{{mutex acquired here}}
-} // expected-warning{{mutex 'sls_mu' is not locked on every path through here}}  \
-  // expected-warning{{mutex 'sls_mu2' is not locked on every path through here}}
-
-void sls_fun_bad_5() {
-  sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  if (getBool())
-    sls_mu.Unlock();
-} // expected-warning{{mutex 'sls_mu' is not locked on every path through here}}
-
-void sls_fun_bad_6() {
-  if (getBool()) {
-    sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  } else {
-    if (getBool()) {
-      getBool(); // EMPTY
-    } else {
-      getBool(); // EMPTY
-    }
-  }
-  sls_mu.Unlock(); // \
-    expected-warning{{mutex 'sls_mu' is not locked on every path through here}}\
-    expected-warning{{unlocking 'sls_mu' that was not locked}}
-}
-
-void sls_fun_bad_7() {
-  sls_mu.Lock();
-  while (getBool()) {
-    sls_mu.Unlock();
-    if (getBool()) {
-      if (getBool()) {
-        continue; // \
-        expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}}
-      }
-    }
-    sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  }
-  sls_mu.Unlock();
-}
-
-void sls_fun_bad_8() {
-  sls_mu.Lock(); // expected-note{{mutex acquired here}}
-
-  do {
-    sls_mu.Unlock(); // expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}}
-  } while (getBool());
-}
-
-void sls_fun_bad_9() {
-  do {
-    sls_mu.Lock();  // \
-      // expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}} \
-      // expected-note{{mutex acquired here}}
-  } while (getBool());
-  sls_mu.Unlock();
-}
-
-void sls_fun_bad_10() {
-  sls_mu.Lock();  // expected-note 2{{mutex acquired here}}
-  while(getBool()) {  // expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}}
-    sls_mu.Unlock();
-  }
-} // expected-warning{{mutex 'sls_mu' is still locked at the end of function}}
-
-void sls_fun_bad_11() {
-  while (getBool()) { // \
-      expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}}
-    sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  }
-  sls_mu.Unlock(); // \
-    // expected-warning{{unlocking 'sls_mu' that was not locked}}
-}
-
-void sls_fun_bad_12() {
-  sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  while (getBool()) {
-    sls_mu.Unlock();
-    if (getBool()) {
-      if (getBool()) {
-        break; // expected-warning{{mutex 'sls_mu' is not locked on every path through here}}
-      }
-    }
-    sls_mu.Lock();
-  }
-  sls_mu.Unlock();
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -fblocks -include %S/types.h -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -fblocks -o %t %S/types.h
-// RUN: %clang_cc1 -fblocks -include-pch %t -fsyntax-only -verify %s -ast-print
-
-typedef int INT;
-INT int_value;
-
-__attribute__((address_space(1))) int int_as_one;
-
-// TYPE_EXT_QUAL
-ASInt *as_int_ptr1 = &int_value;  // expected-error{{changes address space of pointer}}
-ASInt *as_int_ptr2 = &int_as_one;
-
-// TYPE_COMPLEX
-_Complex float Cfloat_val;
-Cfloat *Cfloat_ptr = &Cfloat_val;
-
-// TYPE_ATOMIC
-_Atomic(int) AtomicInt_val;
-AtomicInt *AtomicInt_ptr = &AtomicInt_val;
-
-// TYPE_POINTER
-int_ptr int_value_ptr = &int_value;
-
-// TYPE_BLOCK_POINTER
-void test_block_ptr(Block *bl) {
-  *bl = ^(int x, float f) { return x; };
-}
-
-// TYPE_CONSTANT_ARRAY
-five_ints fvi = { 1, 2, 3, 4, 5 };
-
-// TYPE_INCOMPLETE_ARRAY
-float_array fa1 = { 1, 2, 3 };
-float_array fa2 = { 1, 2, 3, 4, 5, 6, 7, 8 };
-
-// TYPE_VARIABLE_ARRAY in stmts.[ch]
-
-// TYPE_VECTOR
-float4 f4 = { 1.0, 2.0, 3.0, 4.0 };
-
-// TYPE_EXT_VECTOR
-ext_float4 ef4 = { 1.0, 2.0, 3.0, 4.0 };
-
-// TYPE_FUNCTION_NO_PROTO
-noproto np1;
-int np1(x, y)
-     int x;
-     float y;
-{
-  return x;
-}
-
-// TYPE_FUNCTION_PROTO
-proto p1;
-float p1(float x, float y, ...) {
-  return x + y;
-}
-proto *p2 = p1;
-
-// TYPE_TYPEDEF
-int_ptr_ptr ipp = &int_value_ptr;
-
-// TYPE_TYPEOF_EXPR
-typeof_17 *t17 = &int_value;
-struct S { int x, y; };
-typeof_17 t17_2 = (struct S){1, 2}; // expected-error{{initializing 'typeof_17' (aka 'int') with an expression of incompatible type 'struct S'}}
-
-// TYPE_TYPEOF
-int_ptr_ptr2 ipp2 = &int_value_ptr;

Modified: trunk/contrib/llvm/tools/clang/test/PCH/types.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/types.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/types.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-/* Used with the types.c test */
-
-// TYPE_EXT_QUAL
-typedef __attribute__((address_space(1))) int ASInt;
-
-// TYPE_COMPLEX
-typedef _Complex float Cfloat;
-
-// TYPE_ATOMIC
-typedef _Atomic(int) AtomicInt;
-
-// TYPE_POINTER
-typedef int * int_ptr;
-
-// TYPE_BLOCK_POINTER
-typedef int (^Block)(int, float);
-
-// TYPE_CONSTANT_ARRAY
-typedef int five_ints[5];
-
-// TYPE_INCOMPLETE_ARRAY
-typedef float float_array[];
-
-// TYPE_VARIABLE_ARRAY in stmts.[ch]
-
-// TYPE_VECTOR
-typedef float float4 __attribute__((vector_size(16)));
-
-// TYPE_EXT_VECTOR
-typedef float ext_float4 __attribute__((ext_vector_type(4)));
-
-// TYPE_FUNCTION_NO_PROTO
-typedef int noproto();
-
-// TYPE_FUNCTION_PROTO
-typedef float proto(float, float, ...);
-
-// TYPE_TYPEDEF
-typedef int_ptr * int_ptr_ptr;
-
-// TYPE_TYPEOF_EXPR
-typedef typeof(17) typeof_17;
-
-// TYPE_TYPEOF
-typedef typeof(int_ptr *) int_ptr_ptr2;
-
-struct S2;
-struct S2 {};
-enum E;
-enum E { myenum };

Modified: trunk/contrib/llvm/tools/clang/test/PCH/typo.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/typo.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/typo.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// Without PCH
-// RUN: %clang_cc1 -include %S/Inputs/typo.hpp -verify %s
-
-// With PCH
-// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/Inputs/typo.hpp
-// RUN: %clang_cc1 -include-pch %t -verify %s
-
-adjacent_list<int, int> g;
-// expected-error at -1{{no template named 'adjacent_list'; did you mean 'boost::graph::adjacency_list'?}}
-// expected-note at Inputs/typo.hpp:5{{'boost::graph::adjacency_list' declared here}}
-
-Function<int(int)> f;
-// expected-error at -1{{no template named 'Function'; did you mean 'boost::function'?}}
-// expected-note at Inputs/typo.hpp:2{{'boost::function' declared here}}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/typo.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/typo.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/typo.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -x objective-c-header -emit-pch -o %t %S/Inputs/typo.h
-// RUN: %clang_cc1 -include-pch %t -verify %s
-
-void f() {
-  [NSstring alloc]; // expected-error{{unknown receiver 'NSstring'; did you mean 'NSString'?}}
-                    // expected-note at Inputs/typo.h:3{{declared here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/typo2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/typo2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/typo2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -emit-pch %s -o %t.pch
-// RUN: %clang_cc1 -include-pch %t.pch %s -verify
-
-#ifndef HEADER_INCLUDED
-#define HEADER_INCLUDED
-
-void func(struct Test);
-
-#else
-
-::Yest *T;  // expected-error{{did you mean 'Test'}}
-            // expected-note at 7{{'Test' declared here}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/undefined-internal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/undefined-internal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/undefined-internal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -emit-pch %s -o %t
-// RUN: %clang_cc1 -include-pch %t %s -verify
-#ifndef HEADER_H
-#define HEADER_H
-static void f();
-static void g();
-void h() {
-  f();
-  g();
-}
-#else
-static void g() {}
-// expected-warning at 5{{function 'f' has internal linkage but is not defined}}
-// expected-note at 8{{used here}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/va_arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/va_arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/va_arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include %S/va_arg.h %s -emit-llvm -o -
-
-// Test with pch.
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -emit-pch -o %t %S/va_arg.h
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include-pch %t %s -emit-llvm -o -
-
-char *g0(char** argv, int argc) { return argv[argc]; }
-
-char *g(char **argv) {
-  f(g0, argv, 1, 2, 3);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/va_arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/va_arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/va_arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include %S/Inputs/va_arg.h %s -emit-llvm -o -
-
-// Test with pch.
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -emit-pch -x c++-header -o %t %S/Inputs/va_arg.h
-// RUN: %clang_cc1 -triple=x86_64-unknown-freebsd7.0 -include-pch %t %s -emit-llvm -o -
-
-typedef __SIZE_TYPE__ size_t;
-
-extern "C" {
-int vsnprintf(char * , size_t, const char * , va_list) ;
-}
-
-void f(char *buffer, unsigned count, const char* format, va_list argptr) {
-  vsnprintf(buffer, count, format, argptr);
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/va_arg.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/va_arg.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/va_arg.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// Header for PCH test va_arg.c
-
-typedef __builtin_va_list va_list;
-char *f (char * (*g) (char **, int), char **p, ...) {
-    char *s;
-    va_list v;
-    s = g (p, __builtin_va_arg(v, int));
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/variables.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/variables.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/variables.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -include %s -fsyntax-only -verify %s
-
-// Test with pch.
-// RUN: %clang_cc1 -emit-pch -o %t %s
-// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-
-#ifndef HEADER
-#define HEADER
-
-extern float y;
-extern int *ip, x;
-
-float z;
-
-int z2 = 17;
-
-#define MAKE_HAPPY(X) X##Happy
-int MAKE_HAPPY(Very);
-
-#define A_MACRO_IN_THE_PCH 492
-#define FUNCLIKE_MACRO(X, Y) X ## Y
-
-#define PASTE2(x,y) x##y
-#define PASTE1(x,y) PASTE2(x,y)
-#define UNIQUE(x) PASTE1(x,__COUNTER__)
-
-int UNIQUE(a);  // a0
-int UNIQUE(a);  // a1
-
-#else
-
-int *ip2 = &x;
-float *fp = &ip; // expected-warning{{incompatible pointer types}}
-double z; // expected-error{{redefinition}} expected-note at 14{{previous}}
-int z2 = 18; // expected-error{{redefinition}} expected-note at 16{{previous}}
-double VeryHappy; // expected-error{{redefinition}} expected-note at 19{{previous definition is here}}
-
-int Q = A_MACRO_IN_THE_PCH;
-
-int R = FUNCLIKE_MACRO(A_MACRO_, IN_THE_PCH);
-
-
-int UNIQUE(a);  // a2
-int *Arr[] = { &a0, &a1, &a2 };
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/PCH/variables.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/variables.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/variables.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -o variables.h.pch variables.h
-// Do not mess with the whitespace in this file. It's important.
-
-
-
-
-extern float y;
-extern int *ip, x;
-
-float z;
-
-int z2 = 17;
-
-#define MAKE_HAPPY(X) X##Happy
-int MAKE_HAPPY(Very);
-
-#define A_MACRO_IN_THE_PCH 492
-#define FUNCLIKE_MACRO(X, Y) X ## Y
-
-#define PASTE2(x,y) x##y
-#define PASTE1(x,y) PASTE2(x,y)
-#define UNIQUE(x) PASTE1(x,__COUNTER__)
-
-int UNIQUE(a);  // a0
-int UNIQUE(a);  // a1

Modified: trunk/contrib/llvm/tools/clang/test/PCH/working-directory.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/working-directory.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/working-directory.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// Test this without pch.
-// RUN: %clang_cc1 -working-directory %S -I. -include working-directory.h %s -Wunused
-
-// Test with pch.
-// RUN: %clang_cc1 -working-directory %S -x c++-header -emit-pch -o %t.pch -I. working-directory.h
-// RUN: %clang_cc1 -include-pch %t.pch -fsyntax-only %s -Wunused
-
-void f() {
-  // Instantiating A<char> will trigger a warning, which will end up trying to get the path to
-  // the header that contains A.
-  A<char> b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/PCH/working-directory.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/PCH/working-directory.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/PCH/working-directory.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#include <Inputs/working-directory-1.h>

Modified: trunk/contrib/llvm/tools/clang/test/Parser/CompoundStmtScope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/CompoundStmtScope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/CompoundStmtScope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void foo() {
-  {
-    typedef float X;
-  }
-  X Y;  // expected-error {{use of undeclared identifier}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/DelayedTemplateParsing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/DelayedTemplateParsing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/DelayedTemplateParsing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -fdelayed-template-parsing -fsyntax-only -verify -std=c++11 %s
-
-template <class T>
-class A {
-   void foo() {
-       undeclared();
-   }
-   void foo2();
-};
-
-template <class T>
-class B {
-   void foo4() { } // expected-note {{previous definition is here}}  expected-note {{previous definition is here}}
-   void foo4() { } // expected-error {{class member cannot be redeclared}} expected-error {{redefinition of 'foo4'}}  expected-note {{previous definition is here}}
-
-   friend void foo3() {
-       undeclared();
-   }
-};
-
-
-template <class T>
-void B<T>::foo4() {// expected-error {{redefinition of 'foo4'}}
-}
-
-template <class T>
-void A<T>::foo2() {
-    undeclared();
-}
-
-
-template <class T>
-void foo3() {
-   undeclared();
-}
-
-template void A<int>::foo2();
-
-
-void undeclared()
-{
-
-}
-
-template <class T> void foo5() {} //expected-note {{previous definition is here}} 
-template <class T> void foo5() {} // expected-error {{redefinition of 'foo5'}}
-
-              
-
-namespace Inner_Outer_same_template_param_name {              
-
-template <class T>
-class Outmost {
-public:
-    template <class T>
-    class Inner {
-    public:
-        void f() {
-            T* var;
-        }
-   };
-};
-
-}
-
-
-namespace PR11931 {
-
-template <typename RunType>
-struct BindState;
-
-  template<>
-struct BindState<void(void*)> {
-  static void Run() { }
-};
-
-class Callback {
-public:
-  typedef void RunType();
-
-  template <typename RunType>
-  Callback(BindState<RunType> bind_state) {
-    BindState<RunType>::Run();
-  }
-};
-
-
-Callback Bind() {
-  return Callback(BindState<void(void*)>());
-}
-
-}
-
-namespace rdar11700604 {
-  template<typename T> void foo() = delete;
-
-  struct X {
-    X() = default;
-
-    template<typename T> void foo() = delete;
-  };
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/MicrosoftExtensions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/MicrosoftExtensions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/MicrosoftExtensions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,107 +0,0 @@
-// RUN: %clang_cc1 -triple i386-mingw32 -fsyntax-only -verify -fms-extensions  -Wno-missing-declarations -x objective-c++ %s
-__stdcall int func0();
-int __stdcall func();
-typedef int (__cdecl *tptr)();
-void (*__fastcall fastpfunc)();
-struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) __declspec(novtable) IUnknown {}; /* expected-warning{{__declspec attribute 'novtable' is not supported}} */
-extern __declspec(dllimport) void __stdcall VarR4FromDec();
-__declspec(deprecated) __declspec(deprecated) char * __cdecl ltoa( long _Val, char * _DstBuf, int _Radix);
-__declspec(safebuffers) __declspec(noalias) __declspec(restrict) void * __cdecl xxx( void * _Memory ); /* expected-warning{{__declspec attribute 'safebuffers' is not supported}} expected-warning{{__declspec attribute 'noalias' is not supported}} expected-warning{{__declspec attribute 'restrict' is not supported}} */
-typedef __w64 unsigned long ULONG_PTR, *PULONG_PTR;
-
-void * __ptr64 PtrToPtr64(const void *p)
-{
-  return((void * __ptr64) (unsigned __int64) (ULONG_PTR)p );
-}
-void * __ptr32 PtrToPtr32(const void *p)
-{
-  return((void * __ptr32) (unsigned __int32) (ULONG_PTR)p );
-}
-
-void __forceinline InterlockedBitTestAndSet (long *Base, long Bit)
-{
-  // FIXME: Re-enable this once MS inline asm stabilizes.
-#if 0
-  __asm {
-    mov eax, Bit
-    mov ecx, Base
-    lock bts [ecx], eax
-    setc al
-  };
-#endif
-}
-_inline int foo99() { return 99; }
-
-void test_ms_alignof_alias() {
-  unsigned int s = _alignof(int);
-  s = __builtin_alignof(int);
-}
-
-void *_alloca(int);
-
-void foo() {
-  __declspec(align(16)) int *buffer = (int *)_alloca(9);
-}
-
-typedef bool (__stdcall __stdcall *blarg)(int);
-
-void local_callconv()
-{
-  bool (__stdcall *p)(int);
-}
-
-// Charify extension.
-#define FOO(x) #@x
-char x = FOO(a);
-
-typedef enum E { e1 };
-
-
-enum __declspec(deprecated) E2 { i, j, k }; // expected-note {{declared here}}
-__declspec(deprecated) enum E3 { a, b, c } e; // expected-note {{declared here}}
-
-void deprecated_enum_test(void)
-{
-  // Test to make sure the deprecated warning follows the right thing
-  enum E2 e1;  // expected-warning {{'E2' is deprecated}}
-  enum E3 e2; // No warning expected, the deprecation follows the variable
-  enum E3 e3 = e;  // expected-warning {{'e' is deprecated}}
-}
-
-/* Microsoft attribute tests */
-[repeatable][source_annotation_attribute( Parameter|ReturnValue )]
-struct SA_Post{ SA_Post(); int attr; };
-
-[returnvalue:SA_Post( attr=1)]
-int foo1([SA_Post(attr=1)] void *param);
-
-
-
-void ms_intrinsics(int a)
-{
-  __noop();
-  __assume(a);
-  __debugbreak();
-}
-
-struct __declspec(frobble) S1 {};	/* expected-warning {{unknown __declspec attribute 'frobble' ignored}} */
-struct __declspec(12) S2 {};	/* expected-error {{__declspec attributes must be an identifier or string literal}} */
-struct __declspec("testing") S3 {}; /* expected-warning {{__declspec attribute '"testing"' is not supported}} */
-
-/* Ensure multiple declspec attributes are supported */
-struct __declspec(align(8) deprecated) S4 {};
-
-/* But multiple declspecs must still be legal */
-struct __declspec(deprecated frobble "testing") S5 {};  /* expected-warning {{unknown __declspec attribute 'frobble' ignored}} expected-warning {{__declspec attribute '"testing"' is not supported}} */
-struct __declspec(unknown(12) deprecated) S6 {};	/* expected-warning {{unknown __declspec attribute 'unknown' ignored}}*/
-
-struct S7 {
-	int foo() { return 12; }
-	__declspec(property(get=foo) deprecated) int t; // expected-note {{declared here}}
-};
-
-/* Technically, this is legal (though it does nothing) */
-__declspec() void quux( void ) {
-  struct S7 s;
-  int i = s.t;	/* expected-warning {{'t' is deprecated}} */
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/MicrosoftExtensions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/MicrosoftExtensions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/MicrosoftExtensions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,362 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-extensions -fms-compatibility -fdelayed-template-parsing
-
-/* Microsoft attribute tests */
-[repeatable][source_annotation_attribute( Parameter|ReturnValue )]
-struct SA_Post{ SA_Post(); int attr; };
-
-[returnvalue:SA_Post( attr=1)] 
-int foo1([SA_Post(attr=1)] void *param);
-
-namespace {
-  [returnvalue:SA_Post(attr=1)] 
-  int foo2([SA_Post(attr=1)] void *param);
-}
-
-class T {
-  [returnvalue:SA_Post(attr=1)] 
-  int foo3([SA_Post(attr=1)] void *param);
-};
-
-extern "C" {
-  [returnvalue:SA_Post(attr=1)] 
-  int foo5([SA_Post(attr=1)] void *param);
-}
-
-class class_attr {
-public:
-  class_attr([SA_Pre(Null=SA_No,NullTerminated=SA_Yes)]  int a)
-  {
-  }
-};
-
-
-
-void uuidof_test1()
-{  
-  __uuidof(0);  // expected-error {{you need to include <guiddef.h> before using the '__uuidof' operator}}
-}
-
-typedef struct _GUID
-{
-    unsigned long  Data1;
-    unsigned short Data2;
-    unsigned short Data3;
-    unsigned char  Data4[8];
-} GUID;
-
-struct __declspec(uuid(L"00000000-0000-0000-1234-000000000047")) uuid_attr_bad1 { };// expected-error {{'uuid' attribute requires parameter 1 to be a string}}
-struct __declspec(uuid(3)) uuid_attr_bad2 { };// expected-error {{'uuid' attribute requires parameter 1 to be a string}}
-struct __declspec(uuid("0000000-0000-0000-1234-0000500000047")) uuid_attr_bad3 { };// expected-error {{uuid attribute contains a malformed GUID}}
-struct __declspec(uuid("0000000-0000-0000-Z234-000000000047")) uuid_attr_bad4 { };// expected-error {{uuid attribute contains a malformed GUID}}
-struct __declspec(uuid("000000000000-0000-1234-000000000047")) uuid_attr_bad5 { };// expected-error {{uuid attribute contains a malformed GUID}}
-
-
-
-struct __declspec(uuid("000000A0-0000-0000-C000-000000000046"))
-struct_with_uuid { };
-struct struct_without_uuid { };
-
-struct __declspec(uuid("000000A0-0000-0000-C000-000000000049"))
-struct_with_uuid2;
-
-struct 
-struct_with_uuid2 {} ;
-
-int uuid_sema_test()
-{
-   struct_with_uuid var_with_uuid[1];
-   struct_without_uuid var_without_uuid[1];
-
-   __uuidof(struct_with_uuid);
-   __uuidof(struct_with_uuid2);
-   __uuidof(struct_without_uuid); // expected-error {{cannot call operator __uuidof on a type with no GUID}}
-   __uuidof(struct_with_uuid*);
-   __uuidof(struct_without_uuid*); // expected-error {{cannot call operator __uuidof on a type with no GUID}}
-
-   __uuidof(var_with_uuid);
-   __uuidof(var_without_uuid);// expected-error {{cannot call operator __uuidof on a type with no GUID}}
-   __uuidof(var_with_uuid[1]);
-   __uuidof(var_without_uuid[1]);// expected-error {{cannot call operator __uuidof on a type with no GUID}}
-   __uuidof(&var_with_uuid[1]);
-   __uuidof(&var_without_uuid[1]);// expected-error {{cannot call operator __uuidof on a type with no GUID}}
-
-   __uuidof(0);
-   __uuidof(1);// expected-error {{cannot call operator __uuidof on a type with no GUID}}
-}
-
-
-template <class T>
-void template_uuid()
-{
-   T expr;
-   
-   __uuidof(T);
-   __uuidof(expr);
-}
-
-
-template <class T, const GUID* g = &__uuidof(T)>
-class COM_CLASS_TEMPLATE  { };
-
-typedef COM_CLASS_TEMPLATE<struct_with_uuid, &__uuidof(struct_with_uuid)> COM_TYPE_1;
-typedef COM_CLASS_TEMPLATE<struct_with_uuid> COM_TYPE_2;
-
-template <class T, const GUID& g>
-class COM_CLASS_TEMPLATE_REF  { };
-typedef COM_CLASS_TEMPLATE_REF<struct_with_uuid, __uuidof(struct_with_uuid)> COM_TYPE_REF;
-
-  struct late_defined_uuid;
-  template<typename T>
-  void test_late_defined_uuid() {
-    __uuidof(late_defined_uuid);
-  }
-  struct __declspec(uuid("000000A0-0000-0000-C000-000000000049")) late_defined_uuid;
-
-
-class CtorCall { 
-public:
-  CtorCall& operator=(const CtorCall& that);
-
-  int a;
-};
-
-CtorCall& CtorCall::operator=(const CtorCall& that)
-{
-    if (this != &that) {
-        this->CtorCall::~CtorCall();
-        this->CtorCall::CtorCall(that); // expected-warning {{explicit constructor calls are a Microsoft extension}}
-    }
-    return *this;
-}
-
-template <class A>
-class C1 {
-public:
-  template <int B>
-  class Iterator {
-  };
-};
- 
-template<class T>
-class C2  {
-  typename C1<T>:: /*template*/  Iterator<0> Mypos; // expected-warning {{use 'template' keyword to treat 'Iterator' as a dependent template name}}
-};
-
-template <class T>
-void missing_template_keyword(){
-  typename C1<T>:: /*template*/ Iterator<0> Mypos; // expected-warning {{use 'template' keyword to treat 'Iterator' as a dependent template name}}
-}
-
-
-
-class AAAA { };
-
-template <typename T>
-class SimpleTemplate {};
-
-template <class T>
-void redundant_typename() {
-   typename T t;// expected-warning {{expected a qualified name after 'typename'}}
-   typename AAAA a;// expected-warning {{expected a qualified name after 'typename'}}
-
-   t = 3;
-   
-   typedef typename T* pointerT;// expected-warning {{expected a qualified name after 'typename'}}
-   typedef typename SimpleTemplate<int> templateT;// expected-warning {{expected a qualified name after 'typename'}}
-
-   pointerT pT = &t;
-   *pT = 4;
-
-   int var;
-   int k = typename var;// expected-error {{expected a qualified name after 'typename'}}
-}
-
-
-__interface MicrosoftInterface;
-__interface MicrosoftInterface {
-   void foo1() = 0;
-   virtual void foo2() = 0;
-};
-
-__interface MicrosoftDerivedInterface : public MicrosoftInterface {
-  void foo1();
-  void foo2() override;
-  void foo3();
-};
-
-void interface_test() {
-  MicrosoftInterface* a;
-  a->foo1();
-  MicrosoftDerivedInterface* b;
-  b->foo2();
-}
-
-__int64 x7 = __int64(0);
-
-
-namespace If_exists_test {
-
-class IF_EXISTS {
-private:
-    typedef int Type;
-};
-
-int __if_exists_test() {
-  int b=0;
-  __if_exists(IF_EXISTS::Type) {
-     b++;
-     b++;
-  }
-  __if_exists(IF_EXISTS::Type_not) {
-     this wont compile.
-  }
-  __if_not_exists(IF_EXISTS::Type) {
-     this wont compile.
-  }
-  __if_not_exists(IF_EXISTS::Type_not) {
-     b++;
-     b++;
-  }
-}
-
-
-__if_exists(IF_EXISTS::Type) {
-  int var23;
-}
-
-__if_exists(IF_EXISTS::Type_not) {
- this wont compile.
-}
-
-__if_not_exists(IF_EXISTS::Type) {
- this wont compile.
-}
-
-__if_not_exists(IF_EXISTS::Type_not) {
-  int var244;
-}
-
-int __if_exists_init_list() {
-
-  int array1[] = {
-    0, 
-    __if_exists(IF_EXISTS::Type) {2, }
-    3
-  };
-
-  int array2[] = {
-    0, 
-    __if_exists(IF_EXISTS::Type_not) { this wont compile }
-    3
-  };
-
-  int array3[] = {
-    0, 
-    __if_not_exists(IF_EXISTS::Type_not) {2, }
-    3
-  };
-
-  int array4[] = {
-    0, 
-    __if_not_exists(IF_EXISTS::Type) { this wont compile }
-    3
-  };
-
-}
-
-
-class IF_EXISTS_CLASS_TEST {
-  __if_exists(IF_EXISTS::Type) {
-    // __if_exists, __if_not_exists can nest
-    __if_not_exists(IF_EXISTS::Type_not) {
-      int var123;
-    }
-    int var23;
-  }
-
-  __if_exists(IF_EXISTS::Type_not) {
-   this wont compile.
-  }
-
-  __if_not_exists(IF_EXISTS::Type) {
-   this wont compile.
-  }
-
-  __if_not_exists(IF_EXISTS::Type_not) {
-    int var244;
-  }
-};
-
-}
-
-
-int __identifier(generic) = 3;
-
-class inline_definition_pure_spec {
-   virtual int f() = 0 { return 0; }// expected-warning {{function definition with pure-specifier is a Microsoft extension}}
-   virtual int f2() = 0;
-};
-
-
-int main () {
-  // Necessary to force instantiation in -fdelayed-template-parsing mode.
-  test_late_defined_uuid<int>(); 
-  redundant_typename<int>();
-  missing_template_keyword<int>();
-}
-
-namespace access_protected_PTM {
-  class A {
-  protected:
-    void f(); // expected-note {{must name member using the type of the current context 'access_protected_PTM::B'}}
-  };
-
-  class B : public A{
-  public:
-    void test_access();
-    static void test_access_static();
-  };
-
-  void B::test_access() {
-    &A::f; // expected-error {{'f' is a protected member of 'access_protected_PTM::A'}}
-  }
-
-  void B::test_access_static() {
-    &A::f;
-  }
-}
-
-namespace Inheritance {
-  class __single_inheritance A;
-  class __multiple_inheritance B;
-  class __virtual_inheritance C;
-}
-
-struct StructWithProperty {
-  __declspec(property) int V0; // expected-error {{expected '(' after 'property'}}
-  __declspec(property()) int V1; // expected-error {{property does not specify a getter or a putter}}
-  __declspec(property(set)) int V2; // expected-error {{putter for property must be specified as 'put', not 'set'}} expected-error {{expected '=' after 'set'}}
-  __declspec(property(ptu)) int V3; // expected-error {{missing 'get=' or 'put='}}
-  __declspec(property(ptu=PutV)) int V4; // expected-error {{expected 'get' or 'put' in property declaration}}
-  __declspec(property(get)) int V5; // expected-error {{expected '=' after 'get'}}
-  __declspec(property(get&)) int V6; // expected-error {{expected '=' after 'get'}}
-  __declspec(property(get=)) int V7; // expected-error {{expected name of accessor method}}
-  __declspec(property(get=GetV)) int V8; // no-warning
-  __declspec(property(get=GetV=)) int V9; // expected-error {{expected ',' or ')' at end of property accessor list}}
-  __declspec(property(get=GetV,)) int V10; // expected-error {{expected 'get' or 'put' in property declaration}}
-  __declspec(property(get=GetV,put=SetV)) int V11; // no-warning
-  __declspec(property(get=GetV,put=SetV,get=GetV)) int V12; // expected-error {{property declaration specifies 'get' accessor twice}}
-
-  int GetV() { return 123; }
-  void SetV(int v) {}
-};
-void TestProperty() {
-  StructWithProperty sp;
-  sp.V8;
-  sp.V8 = 0; // expected-error {{no setter defined for property 'V8'}}
-  int i = sp.V11;
-  sp.V11 = i++;
-  sp.V11 += 8;
-  sp.V11++;
-  ++sp.V11;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/PR11000.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/PR11000.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/PR11000.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s 2>&1 | FileCheck %s
-
-// PR11000: Don't crash.
-class tuple<>
-{
-    template <class _Alloc>
-        tuple(allocator_arg_t, const _Alloc&) {}
-
-// CHECK: 6 errors generated.

Modified: trunk/contrib/llvm/tools/clang/test/Parser/access-spec-attrs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/access-spec-attrs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/access-spec-attrs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-struct X {
-public __attribute__((unavailable)): // expected-error {{access specifier can only have annotation attributes}}
-  void foo();
-private __attribute__((annotate("foobar"))):
-    void bar();
-};
-
-void f(X x) {
-  x.foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/altivec.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/altivec.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/altivec.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,131 +0,0 @@
-// RUN: %clang_cc1 -triple=powerpc-apple-darwin8 -faltivec -fsyntax-only -verify %s
-
-__vector char vv_c;
-__vector signed char vv_sc;
-__vector unsigned char vv_uc;
-__vector short vv_s;
-__vector signed  short vv_ss;
-__vector unsigned  short vv_us;
-__vector short int vv_si;
-__vector signed short int vv_ssi;
-__vector unsigned short int vv_usi;
-__vector int vv_i;
-__vector signed int vv_sint;
-__vector unsigned int vv_ui;
-__vector float vv_f;
-__vector bool char vv_bc;
-__vector bool short vv_bs;
-__vector bool int vv_bi;
-__vector __pixel vv_p;
-__vector pixel vv__p;
-__vector int vf__r();
-void vf__a(__vector int a);
-void vf__a2(int b, __vector int a);
-
-vector char v_c;
-vector signed char v_sc;
-vector unsigned char v_uc;
-vector short v_s;
-vector signed  short v_ss;
-vector unsigned  short v_us;
-vector short int v_si;
-vector signed short int v_ssi;
-vector unsigned short int v_usi;
-vector int v_i;
-vector signed int v_sint;
-vector unsigned int v_ui;
-vector float v_f;
-vector bool char v_bc;
-vector bool short v_bs;
-vector bool int v_bi;
-vector __pixel v_p;
-vector pixel v__p;
-vector int f__r();
-void f_a(vector int a);
-void f_a2(int b, vector int a);
-
-vector int v = (vector int)(-1);
-
-// These should have warnings.
-__vector long vv_l;                 // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector signed long vv_sl;         // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector unsigned long vv_ul;       // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector long int vv_li;            // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector signed long int vv_sli;    // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector unsigned long int vv_uli;  // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector long v_l;                    // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector signed long v_sl;            // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector unsigned long v_ul;          // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector long int v_li;               // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector signed long int v_sli;       // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector unsigned long int v_uli;     // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector long double  vv_ld;        // expected-warning {{Use of 'long' with '__vector' is deprecated}} expected-error {{cannot use 'double' with '__vector'}}
-vector long double  v_ld;           // expected-warning {{Use of 'long' with '__vector' is deprecated}} expected-error {{cannot use 'double' with '__vector'}}
-vector bool v_b;                    // expected-warning {{type specifier missing, defaults to 'int'}}
-
-// These should have errors.
-__vector double vv_d1;               // expected-error {{cannot use 'double' with '__vector'}}
-vector double v_d2;                  // expected-error {{cannot use 'double' with '__vector'}}
-__vector long double  vv_ld3;        // expected-warning {{Use of 'long' with '__vector' is deprecated}} expected-error {{cannot use 'double' with '__vector'}}
-vector long double  v_ld4;           // expected-warning {{Use of 'long' with '__vector' is deprecated}} expected-error {{cannot use 'double' with '__vector'}}
-vector bool float v_bf;              // expected-error {{cannot use 'float' with '__vector bool'}}
-vector bool double v_bd;             // expected-error {{cannot use 'double' with '__vector bool'}}
-vector bool pixel v_bp;              // expected-error {{cannot use '__pixel' with '__vector bool'}}
-vector bool signed char v_bsc;       // expected-error {{cannot use 'signed' with '__vector bool'}}
-vector bool unsigned int v_bsc2;     // expected-error {{cannot use 'unsigned' with '__vector bool'}}
-vector bool long v_bl;               // expected-error {{cannot use 'long' with '__vector bool'}}
-vector bool long long v_bll;         // expected-error {{cannot use 'long long' with '__vector bool'}}
-
-typedef char i8;
-typedef short i16;
-typedef int i32;
-struct S {
-  // i8, i16, i32 here are field names, not type names.
-  vector bool i8;                    // expected-error {{requires a specifier or qualifier}}
-  vector pixel i16;
-  vector long i32;                   // expected-warning {{deprecated}}
-};
-
-void f() {
-  __vector unsigned int v = {0,0,0,0};
-  __vector int v__cast = (__vector int)v;
-  __vector int v_cast = (vector int)v;
-  __vector char vb_cast = (vector char)v;
-
-  // Check some casting between gcc and altivec vectors.
-  #define gccvector __attribute__((vector_size(16)))
-  gccvector unsigned int gccv = {0,0,0,0};
-  gccvector unsigned int gccv1 = gccv;
-  gccvector int gccv2 = (gccvector int)gccv;
-  gccvector unsigned int gccv3 = v;
-  __vector unsigned int av = gccv;
-  __vector int avi = (__vector int)gccv;
-  gccvector unsigned int gv = v;
-  gccvector int gvi = (gccvector int)v;
-  __attribute__((vector_size(8))) unsigned int gv8;
-  gv8 = gccv;     // expected-error {{assigning to '__attribute__((__vector_size__(2 * sizeof(unsigned int)))) unsigned int' from incompatible type '__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int'}}
-  av = gv8;       // expected-error {{assigning to '__vector unsigned int' from incompatible type '__attribute__((__vector_size__(2 * sizeof(unsigned int)))) unsigned int'}}
-
-  v = gccv;
-  __vector unsigned int tv = gccv;
-  gccv = v;
-  gccvector unsigned int tgv = v;
-
-  int res_i;
-  // bug 7553 - Problem with '==' and vectors
-  res_i = (vv_sc == vv_sc);
-  res_i = (vv_uc != vv_uc);
-  res_i = (vv_s > vv_s);
-  res_i = (vv_us >= vv_us);
-  res_i = (vv_i < vv_i);
-  res_i = (vv_ui <= vv_ui);
-  res_i = (vv_f <= vv_f);
-}
-
-// bug 6895 - Vectorl literal casting confusion.
-vector char v1 = (vector char)((vector int)(1, 2, 3, 4));
-vector char v2 = (vector char)((vector float)(1.0f, 2.0f, 3.0f, 4.0f));
-vector char v3 = (vector char)((vector int)('a', 'b', 'c', 'd'));
-vector int v4 = (vector int)(1, 2, 3, 4);
-vector float v5 = (vector float)(1.0f, 2.0f, 3.0f, 4.0f);
-vector char v6 = (vector char)((vector int)(1+2, -2, (int)(2.0 * 3), -(5-3)));

Modified: trunk/contrib/llvm/tools/clang/test/Parser/argument_qualified.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/argument_qualified.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/argument_qualified.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s
-int abc (const float x) {
-  return 1;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/argument_redef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/argument_redef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/argument_redef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only -verify %s
-*/
-
-void foo(int A) { /* expected-note {{previous definition is here}} */
-  int A; /* expected-error {{redefinition of 'A'}} */
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/argument_scope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/argument_scope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/argument_scope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-typedef struct foo foo;
-
-void blah(int foo) {
-  foo = 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/asm-constraints-pr7869.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/asm-constraints-pr7869.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/asm-constraints-pr7869.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 %s
-
-int a, b, c, d, e, f, g, h, i, j, k, l;
-
-void
-f1 (void)
-{
-  __asm__ volatile (""
-            : [a] "+r" (a), [b] "+r" (b), [c] "+r" (c), [d] "+r" (d),
-              [e] "+r" (e), [f] "+r" (f), [g] "+r" (g), [h] "+r" (h),
-              [i] "+r" (i), [j] "+r" (j), [k] "+r" (k), [l] "+r" (l));
-}
-
-void
-f2 (void)
-{
-  __asm__ volatile (""
-            : [a] "+r,m" (a), [b] "+r,m" (b), [c] "+r,m" (c), [d] "+r,m" (d),
-              [e] "+r,m" (e), [f] "+r,m" (f), [g] "+r,m" (g), [h] "+r,m" (h),
-              [i] "+r,m" (i), [j] "+r,m" (j), [k] "+r,m" (k), [l] "+r,m" (l));
-}
-
-void
-f3 (void)
-{
-  __asm__ volatile (""
-            : [a] "=r" (a), [b] "=r" (b), [c] "=r" (c), [d] "=r" (d),
-              [e] "=r" (e), [f] "=r" (f), [g] "=r" (g), [h] "=r" (h),
-              [i] "=r" (i), [j] "=r" (j), [k] "=r" (k), [l] "=r" (l)
-            : "[a]" (a), "[b]" (b), "[c]" (c), "[d]" (d),
-              "[e]" (e), "[f]" (f), "[g]" (g), "[h]" (h),
-              "[i]" (i), "[j]" (j), "[k]" (k), "[l]" (l));
-}
-
-void
-f4 (void)
-{
-  __asm__ volatile (""
-            : [a] "=r,m" (a), [b] "=r,m" (b), [c] "=r,m" (c), [d] "=r,m" (d),
-              [e] "=r,m" (e), [f] "=r,m" (f), [g] "=r,m" (g), [h] "=r,m" (h),
-              [i] "=r,m" (i), [j] "=r,m" (j), [k] "=r,m" (k), [l] "=r,m" (l)
-            : "[a],m" (a), "[b],m" (b), "[c],m" (c), "[d],m" (d),
-              "[e],m" (e), "[f],m" (f), "[g],m" (g), "[h],m" (h),
-              "[i],m" (i), "[j],m" (j), "[k],m" (k), "[l],m" (l));
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f1() {
-  // PR7673: Some versions of GCC support an empty clobbers section.
-  asm ("ret" : : :);
-}
-
-void f2() {
-  asm("foo" : "=r" (a)); // expected-error {{use of undeclared identifier 'a'}}
-  asm("foo" : : "r" (b)); // expected-error {{use of undeclared identifier 'b'}} 
-
-  asm const (""); // expected-warning {{ignored const qualifier on asm}}
-  asm volatile ("");
-  asm restrict (""); // expected-warning {{ignored restrict qualifier on asm}}
-  // FIXME: Once GCC supports _Atomic, check whether it allows this.
-  asm _Atomic (""); // expected-warning {{ignored _Atomic qualifier on asm}}
-}
-
-
-// rdar://5952468
-__asm ; // expected-error {{expected '(' after 'asm'}}
-
-// <rdar://problem/10465079> - Don't crash on wide string literals in 'asm'.
-int foo asm (L"bar"); // expected-error {{cannot use wide string literal in 'asm'}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/asm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/asm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/asm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-int foo1 asm ("bar1");
-int foo2 asm (L"bar2"); // expected-error {{cannot use wide string literal in 'asm'}}
-int foo3 asm (u8"bar3"); // expected-error {{cannot use unicode string literal in 'asm'}}
-int foo4 asm (u"bar4"); // expected-error {{cannot use unicode string literal in 'asm'}}
-int foo5 asm (U"bar5"); // expected-error {{cannot use unicode string literal in 'asm'}}
-int foo6 asm ("bar6"_x); // expected-error {{string literal with user-defined suffix cannot be used here}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/atomic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/atomic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/atomic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -std=c11 %s -fsyntax-only -verify -pedantic
-
-typedef _Atomic(int) atomic_int;
-typedef _Atomic int atomic_int;
-typedef _Atomic _Atomic _Atomic(int) atomic_int; // expected-warning {{duplicate '_Atomic' declaration specifier}}
-
-typedef const int const_int;
-
-typedef const atomic_int const_atomic_int;
-typedef _Atomic const int const_atomic_int;
-typedef const _Atomic int const_atomic_int;
-typedef const _Atomic(int) const_atomic_int;
-typedef const _Atomic(_Atomic int) const_atomic_int; // expected-error {{_Atomic cannot be applied to atomic type '_Atomic(int)'}}
-typedef _Atomic const_int const_atomic_int;
-typedef _Atomic(const_int) const_atomic_int; // expected-error {{_Atomic cannot be applied to qualified type 'const_int' (aka 'const int')}}
-
-typedef int *_Atomic atomic_int_ptr;
-typedef _Atomic(int *) atomic_int_ptr;
-typedef int (*_Atomic atomic_int_ptr);
-
-typedef int _Atomic *int_atomic_ptr;
-typedef _Atomic(int) *int_atomic_ptr;
-
-typedef int int_fn();
-typedef _Atomic int_fn atomic_int_fn; // expected-error {{_Atomic cannot be applied to function type 'int_fn' (aka 'int ()')}}
-typedef _Atomic int atomic_int_array[3];
-typedef _Atomic atomic_int_array atomic_int_atomic_array; // expected-error {{_Atomic cannot be applied to array type 'atomic_int_array' (aka '_Atomic(int) [3]')}}
-
-_Atomic struct S { int n; }; // expected-warning {{'_Atomic' ignored on this declaration}}
-
-typedef _Atomic int __attribute__((address_space(1))) atomic_addr_space_int;
-typedef _Atomic(int) __attribute__((address_space(1))) atomic_addr_space_int;
-
-typedef _Atomic int __attribute__((vector_size(16))) atomic_vector_int;
-typedef _Atomic(int __attribute__((vector_size(16)))) atomic_vector_int;

Modified: trunk/contrib/llvm/tools/clang/test/Parser/attr-availability.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/attr-availability.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/attr-availability.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#if !__has_feature(attribute_availability)
-#  error 'availability' attribute is not available
-#endif
-
-void f0() __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6)));
-
-void f1() __attribute__((availability(macosx,deprecated=10.4,introduced=10.2,obsoleted=10.6)));
-
-void f2() __attribute__((availability(ios,deprecated=10.4.7,introduced=10,obsoleted=10.6)));
-
-void f3() __attribute__((availability(ios,deprecated=10.4.7,introduced=10,obsoleted=10.6,introduced=10.2))); // expected-error{{redundant 'introduced' availability change; only the last specified change will be used}}
-
-void f4() __attribute__((availability(macosx,introduced=10.5), availability(ios,unavailable)));
-
-void f5() __attribute__((availability(macosx,introduced=10.5), availability(ios,unavailable, unavailable))); // expected-error{{redundant 'unavailable' availability change; only the last specified change will be used}}
-
-void f6() __attribute__((availability(macosx,unavailable,introduced=10.5))); // expected-warning{{'unavailable' availability overrides all other availability information}}
-
-// rdar://10095131
-enum E{
-    gorf __attribute__((availability(macosx,introduced=8.5, message = 10.0))), // expected-error {{expected string literal for optional message in 'availability' attribute}}
-    garf __attribute__((availability(macosx,introduced=8.5, message))), // expected-error {{expected '=' after 'message'}}
-
-    foo __attribute__((availability(macosx,introduced=8.5,deprecated=9.0, message="Use CTFontCopyPostScriptName()", deprecated=10.0))) // expected-error {{expected ')'}} \
-                                                                                                                                       // expected-note {{to match this '('}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/attributes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/attributes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/attributes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -pedantic -std=c99
-
-int __attribute__(()) x;
-
-__inline void __attribute__((__always_inline__, __nodebug__))
-foo(void) {
-}
-
-
-__attribute__(()) y;   // expected-warning {{defaults to 'int'}}
-
-// PR2796
-int (__attribute__(()) *z)(long y);
-
-
-void f1(__attribute__(()) int x);
-
-int f2(y, __attribute__(()) x);     // expected-error {{expected identifier}}
-
-// This is parsed as a normal argument list (with two args that are implicit
-// int) because the __attribute__ is a declspec.
-void f3(__attribute__(()) x,  // expected-warning {{defaults to 'int'}}
-        y);               // expected-warning {{defaults to 'int'}}
-
-void f4(__attribute__(()));   // expected-error {{expected parameter declarator}}
-
-
-// This is ok, the __attribute__ applies to the pointer.
-int baz(int (__attribute__(()) *x)(long y));
-
-void g1(void (*f1)(__attribute__(()) int x));
-void g2(int (*f2)(y, __attribute__(()) x));    // expected-error {{expected identifier}}
-void g3(void (*f3)(__attribute__(()) x, int y));  // expected-warning {{defaults to 'int'}}
-void g4(void (*f4)(__attribute__(())));  // expected-error {{expected parameter declarator}}
-
-
-void (*h1)(void (*f1)(__attribute__(()) int x));
-void (*h2)(int (*f2)(y, __attribute__(()) x));    // expected-error {{expected identifier}}
-
-void (*h3)(void (*f3)(__attribute__(()) x));   // expected-warning {{defaults to 'int'}}
-void (*h4)(void (*f4)(__attribute__(())));  // expected-error {{expected parameter declarator}}
-
-
-
-// rdar://6131260
-int foo42(void) {
-  int x, __attribute__((unused)) y, z;
-  return 0;
-}
-
-// rdar://6096491
-void __attribute__((noreturn)) d0(void), __attribute__((noreturn)) d1(void);
-
-void d2(void) __attribute__((noreturn)), d3(void) __attribute__((noreturn));
-
-
-// PR6287
-void __attribute__((returns_twice)) returns_twice_test();
-
-int aligned(int);
-int __attribute__((vec_type_hint(char, aligned(16) )) missing_rparen_1; // expected-error {{expected ')'}}
-int __attribute__((mode(x aligned(16) )) missing_rparen_2; // expected-error {{expected ')'}}
-int __attribute__((format(printf, 0 aligned(16) )) missing_rparen_3; // expected-error {{expected ')'}}
-
-
-
-int testFundef1(int *a) __attribute__((nonnull(1))) { // \
-    // expected-warning {{GCC does not allow nonnull attribute in this position on a function definition}}
-  return *a;
-}
-
-// noreturn is lifted to type qualifier
-void testFundef2() __attribute__((noreturn)) { // \
-    // expected-warning {{GCC does not allow noreturn attribute in this position on a function definition}}
-  testFundef2();
-}
-
-int testFundef3(int *a) __attribute__((nonnull(1), // \
-    // expected-warning {{GCC does not allow nonnull attribute in this position on a function definition}}
-                                     pure)) { // \
-    // expected-warning {{GCC does not allow pure attribute in this position on a function definition}}
-  return *a;
-}
-
-int testFundef4(int *a) __attribute__((nonnull(1))) // \
-    // expected-warning {{GCC does not allow nonnull attribute in this position on a function definition}}
-                      __attribute((pure)) { // \
-    // expected-warning {{GCC does not allow pure attribute in this position on a function definition}}
-  return *a;
-}
-
-// GCC allows these
-void testFundef5() __attribute__(()) { }
-
-__attribute__((pure)) int testFundef6(int a) { return a; }
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/attributes.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/attributes.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/attributes.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s
-
-__attribute__((deprecated)) @class B; // expected-error {{prefix attribute must be followed by an interface or protocol}}
-
-__attribute__((deprecated)) @interface A @end
-__attribute__((deprecated)) @protocol P0;
-__attribute__((deprecated)) @protocol P1
- at end
-
-#define EXP __attribute__((visibility("default")))
-class EXP C {};
-EXP class C2 {}; // expected-warning {{attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration}}
-
- at interface EXP I @end // expected-error {{postfix attributes are not allowed on Objective-C directives, place them in front of '@interface'}}
-EXP @interface I2 @end
-
- at implementation EXP I @end // expected-error-re {{postfix attributes are not allowed on Objective-C directives$}}
-// FIXME: Prefix attribute recovery skips until ';'
-EXP @implementation I2 @end; // expected-error {{prefix attribute must be followed by an interface or protocol}}
-
- at class EXP OC; // expected-error-re {{postfix attributes are not allowed on Objective-C directives$}}
-EXP @class OC2; // expected-error {{prefix attribute must be followed by an interface or protocol}}
-
- at protocol EXP P @end // expected-error {{postfix attributes are not allowed on Objective-C directives, place them in front of '@protocol'}}
-EXP @protocol P2 @end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/backtrack-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/backtrack-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/backtrack-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
-// PR7072
-()( // expected-error {{expected unqualified-id}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/bad-control.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/bad-control.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/bad-control.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only -verify %s
-*/
-void foo() { 
-  break; /* expected-error {{'break' statement not in loop or switch statement}} */
-}
-
-void foo2() { 
-  continue; /* expected-error {{'continue' statement not in loop statement}} */
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/block-block-storageclass.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/block-block-storageclass.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/block-block-storageclass.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -verify %s
-// expected-no-diagnostics
-int printf(const char *, ...);
-void _Block_byref_release(void*src){}
-
-int main() {
-   __block  int X = 1234;
-   __block  const char * message = "HELLO";
-
-   X = X - 1234;
-
-   X += 1;
-
-   printf ("%s(%d)\n", message, X);
-   X -= 1;
-
-   return X;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/block-pointer-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/block-pointer-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/block-pointer-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s
-// expected-no-diagnostics
-
-int printf(char const *, ...);
-
-struct blockStruct {
-  int (^a)(float, int);
-  int b;
-};
-
-int blockTaker (int (^myBlock)(int), int other_input)
-{
-  return 5 * myBlock (other_input);
-}
-
-int main (int argc, char **argv)
-{
-  int (^blockptr) (int) = ^(int inval) {
-    printf ("Inputs: %d, %d.\n", argc, inval);
-    return argc * inval;
-  };
-
-
-  argc = 10;
-  printf ("I got: %d.\n",
-          blockTaker (blockptr, 6));
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/bracket-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/bracket-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/bracket-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: not %clang_cc1 -fsyntax-only -std=c++11 %s
-// PR7481
-decltype(;
-struct{
-  a
-}
-
-// PR14549. Must be at end of file.
-decltype(

Modified: trunk/contrib/llvm/tools/clang/test/Parser/builtin_classify_type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/builtin_classify_type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/builtin_classify_type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct foo { int a; };
-
-int main() {
-  int a;
-  float b;
-  double d;
-  struct foo s;
-
-  static int ary[__builtin_classify_type(a)];
-  static int ary2[(__builtin_classify_type)(a)]; // expected-error{{variable length array declaration can not have 'static' storage duration}}
-  static int ary3[(*__builtin_classify_type)(a)]; // expected-error{{builtin functions must be directly called}}
-
-  int result;
-
-  result =  __builtin_classify_type(a);
-  result =  __builtin_classify_type(b);
-  result =  __builtin_classify_type(d);
-  result =  __builtin_classify_type(s);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/builtin_types_compatible.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/builtin_types_compatible.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/builtin_types_compatible.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-extern int funcInt(int);
-extern float funcFloat(float);
-extern double funcDouble(double);
-// figure out why "char *" doesn't work (with gcc, nothing to do with clang)
-//extern void funcCharPtr(char *);
-
-#define func(expr) \
-  do { \
-    typeof(expr) tmp; \
-    if (__builtin_types_compatible_p(typeof(expr), int)) funcInt(tmp); \
-    else if (__builtin_types_compatible_p(typeof(expr), float)) funcFloat(tmp); \
-    else if (__builtin_types_compatible_p(typeof(expr), double)) funcDouble(tmp); \
-  } while (0)
-#define func_choose(expr) \
-  __builtin_choose_expr(__builtin_types_compatible_p(typeof(expr), int), funcInt(expr), \
-    __builtin_choose_expr(__builtin_types_compatible_p(typeof(expr), float), funcFloat(expr), \
-      __builtin_choose_expr(__builtin_types_compatible_p(typeof(expr), double), funcDouble(expr), (void)0)))
-
-static void test()
-{
-  int a;
-  float b;
-  double d;
-
-  func(a);
-  func(b);
-  func(d);
-  a = func_choose(a);
-  b = func_choose(b);
-  d = func_choose(d);
-
-  int c; 
-  struct xx { int a; } x, y;
-  
-  c = __builtin_choose_expr(a+3-7, b, x); // expected-error{{'__builtin_choose_expr' requires a constant expression}}
-  c = __builtin_choose_expr(0, b, x); // expected-error{{assigning to 'int' from incompatible type 'struct xx'}}
-  c = __builtin_choose_expr(5+3-7, b, x);
-  y = __builtin_choose_expr(4+3-7, b, x);
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/c-namespace.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/c-namespace.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/c-namespace.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 
-void bla1() {
-  struct XXX;
-  int XXX;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/c11-noreturn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/c11-noreturn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/c11-noreturn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -std=c11 -fsyntax-only -verify %s
-// RUN: not %clang_cc1 -pedantic -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-EXT %s
-
-_Noreturn int f();
-int _Noreturn f(); // expected-note {{previous}}
-int f _Noreturn(); // expected-error {{expected ';'}} expected-error 2{{}}
-int f() _Noreturn; // expected-error {{expected ';'}} expected-warning {{does not declare anything}} expected-error {{'_Noreturn' can only appear on functions}}
-
-_Noreturn char c1; // expected-error {{'_Noreturn' can only appear on functions}}
-char _Noreturn c2; // expected-error {{'_Noreturn' can only appear on functions}}
-
-typedef _Noreturn int g(); // expected-error {{'_Noreturn' can only appear on functions}}
-
-_Noreturn int; // expected-error {{'_Noreturn' can only appear on functions}} expected-warning {{does not declare anything}}
-_Noreturn struct S; // expected-error {{'_Noreturn' can only appear on functions}}
-_Noreturn enum E { e }; // expected-error {{'_Noreturn' can only appear on functions}}
-
-// CHECK-EXT: _Noreturn functions are a C11-specific feature

Modified: trunk/contrib/llvm/tools/clang/test/Parser/c1x-alignas.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/c1x-alignas.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/c1x-alignas.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c11 -fsyntax-only -verify %s
-// RUN: not %clang_cc1 -pedantic -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-EXT %s
-
-_Alignas(4) char c1;
-unsigned _Alignas(long) char c2;
-char _Alignas(16) c3;
-
-char c4 _Alignas(32); // expected-error {{expected ';' after top level declarator}} expected-warning {{declaration does not declare anything}}
-
-char _Alignas(_Alignof(int)) c5;
-
-// CHECK-EXT: _Alignas is a C11-specific feature
-// CHECK-EXT: _Alignof is a C11-specific feature

Modified: trunk/contrib/llvm/tools/clang/test/Parser/c1x-generic-selection.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/c1x-generic-selection.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/c1x-generic-selection.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -std=c1x -fsyntax-only -verify %s
-
-void foo(void) {
-  _Generic; // expected-error {{expected '('}}
-  (void) _Generic(0); // expected-error {{expected ','}}
-  (void) _Generic(0, void); // expected-error {{expected ':'}}
-  (void) _Generic(0,
-      default: 0,  // expected-note {{previous default generic association is here}}
-      default: 0); // expected-error {{duplicate default generic association}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/captured-statements.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/captured-statements.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/captured-statements.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-void test1()
-{
-  #pragma clang __debug captured x // expected-warning {{extra tokens at end of #pragma clang __debug captured directive}}
-  {
-  }
-}
-
-void test2()
-{
-  #pragma clang __debug captured
-  int x; // expected-error {{expected '{'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/char-literal-printing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/char-literal-printing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/char-literal-printing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s
-// RUN: %clang_cc1 -x c++ -ast-print %s
-// RUN: %clang_cc1 -x c++ -std=c++11 -ast-print %s
-
-#include <stddef.h>
-
-char    test1(void) { return '\\'; }
-wchar_t test2(void) { return L'\\'; }
-char    test3(void) { return '\''; }
-wchar_t test4(void) { return L'\''; }
-char    test5(void) { return '\a'; }
-wchar_t test6(void) { return L'\a'; }
-char    test7(void) { return '\b'; }
-wchar_t test8(void) { return L'\b'; }
-char    test9(void) { return '\e'; }
-wchar_t test10(void) { return L'\e'; }
-char    test11(void) { return '\f'; }
-wchar_t test12(void) { return L'\f'; }
-char    test13(void) { return '\n'; }
-wchar_t test14(void) { return L'\n'; }
-char    test15(void) { return '\r'; }
-wchar_t test16(void) { return L'\r'; }
-char    test17(void) { return '\t'; }
-wchar_t test18(void) { return L'\t'; }
-char    test19(void) { return '\v'; }
-wchar_t test20(void) { return L'\v'; }
-
-char    test21(void) { return 'c'; }
-wchar_t test22(void) { return L'c'; }
-char    test23(void) { return '\x3'; }
-wchar_t test24(void) { return L'\x3'; }
-
-wchar_t test25(void) { return L'\x333'; }
-
-#if __cplusplus >= 201103L
-char16_t test26(void) { return u'\\'; }
-char16_t test27(void) { return u'\''; }
-char16_t test28(void) { return u'\a'; }
-char16_t test29(void) { return u'\b'; }
-char16_t test30(void) { return u'\e'; }
-char16_t test31(void) { return u'\f'; }
-char16_t test32(void) { return u'\n'; }
-char16_t test33(void) { return u'\r'; }
-char16_t test34(void) { return u'\t'; }
-char16_t test35(void) { return u'\v'; }
-
-char16_t test36(void) { return u'c'; }
-char16_t test37(void) { return u'\x3'; }
-
-char16_t test38(void) { return u'\x333'; }
-
-char32_t test39(void) { return U'\\'; }
-char32_t test40(void) { return U'\''; }
-char32_t test41(void) { return U'\a'; }
-char32_t test42(void) { return U'\b'; }
-char32_t test43(void) { return U'\e'; }
-char32_t test44(void) { return U'\f'; }
-char32_t test45(void) { return U'\n'; }
-char32_t test46(void) { return U'\r'; }
-char32_t test47(void) { return U'\t'; }
-char32_t test48(void) { return U'\v'; }
-
-char32_t test49(void) { return U'c'; }
-char32_t test50(void) { return U'\x3'; }
-
-char32_t test51(void) { return U'\x333'; }
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Parser/check-objc2-syntax-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/check-objc2-syntax-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/check-objc2-syntax-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface Subclass 
-+ (int)magicNumber;
- at end
-
-int main (void) {
-  return Subclass.magicNumber;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/check-syntax-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/check-syntax-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/check-syntax-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int @interface bla  ; // expected-error {{cannot combine with previous 'int' declaration specifier}}
- at end
-
-typedef float CGFloat;
- at interface XNSNumber 
-+ (XNSNumber *) numberWithCGFloat  : (CGFloat) float; // expected-error {{expected identifier}}  \
-                                                      // expected-error {{expected ';' after method prototype}}
- at end
-
-// rdar: // 7822196
- at interface A
-(void) x;	// expected-error {{method type specifier must start with '-' or '+'}} 
-(int)im; // expected-error {{method type specifier must start with '-' or '+'}} \
-- ok;
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/check_cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/check_cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/check_cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct foo {
-  int a;
-};
-
-int main() {
-  struct foo xxx;
-  int i;
-
-  xxx = (struct foo)1;  // expected-error {{used type 'struct foo' where arithmetic or pointer type is required}}
-  i = (int)xxx; // expected-error {{operand of type 'struct foo' where arithmetic or pointer type is required}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/colon-colon-parentheses.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/colon-colon-parentheses.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/colon-colon-parentheses.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// RUN: cp %s %t
-// RUN: not %clang_cc1 -x c++ -fixit %t
-// RUN: %clang_cc1 -x c++ %t
-
-struct S { static int a,b,c;};
-int S::(a);  // expected-error{{unexpected parenthesis after '::'}}
-int S::(b;  // expected-error{{unexpected parenthesis after '::'}}
-int S::c;
-int S::(*d);  // expected-error{{unexpected parenthesis after '::'}}
-int S::(*e;  // expected-error{{unexpected parenthesis after '::'}}
-int S::*f;
-int g = S::(a);  // expected-error{{unexpected parenthesis after '::'}}
-int h = S::(b;  // expected-error{{unexpected parenthesis after '::'}}
-int i = S::c;
-
-void foo() {
-  int a;
-  a = ::(g);  // expected-error{{unexpected parenthesis after '::'}}
-  a = ::(h;  // expected-error{{unexpected parenthesis after '::'}}
-  a = ::i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/compound_literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/compound_literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/compound_literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-int main() {
-  char *s;
-  s = (char []){"whatever"}; 
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/control-scope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/control-scope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/control-scope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -std=c90 -verify
-// RUN: %clang_cc1 %s -std=c99
-
-int f (int z) { 
-  if (z + sizeof (enum {a}))        // expected-note {{previous definition is here}}
-    return 1 + sizeof (enum {a});   // expected-error {{redefinition of enumerator 'a'}}
-  return 0; 
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/crash-report.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/crash-report.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/crash-report.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s 2>&1 | FileCheck %s
-// REQUIRES: crash-recovery
-
-#prag\
-ma clang __debug crash
-
-// CHECK: prag\
-// CHECK-NEXT: ma
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cuda-kernel-call.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cuda-kernel-call.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cuda-kernel-call.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename> struct S {};
-template<typename> void f();
-
-void foo(void) {
-  foo<<<1;      // expected-error {{expected '>>>'}} expected-note {{to match this '<<<'}}
-
-  foo<<<1,1>>>; // expected-error {{expected '('}}
-
-  foo<<<>>>();  // expected-error {{expected expression}}
-
-  S<S<S<int>>> s; // expected-error 2{{use '> >'}}
-
-  (void)(&f<S<S<int>>>==0); // expected-error 2{{use '> >'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-altivec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-altivec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-altivec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,170 +0,0 @@
-// RUN: %clang_cc1 -triple=powerpc-apple-darwin8 -faltivec -fsyntax-only -verify %s
-
-__vector char vv_c;
-__vector signed char vv_sc;
-__vector unsigned char vv_uc;
-__vector short vv_s;
-__vector signed  short vv_ss;
-__vector unsigned  short vv_us;
-__vector short int vv_si;
-__vector signed short int vv_ssi;
-__vector unsigned short int vv_usi;
-__vector int vv_i;
-__vector signed int vv_sint;
-__vector unsigned int vv_ui;
-__vector float vv_f;
-__vector bool char vv_bc;
-__vector bool short vv_bs;
-__vector bool int vv_bi;
-__vector __pixel vv_p;
-__vector pixel vv__p;
-__vector int vf__r();
-void vf__a(__vector int a);
-void vf__a2(int b, __vector int a);
-
-vector char v_c;
-vector signed char v_sc;
-vector unsigned char v_uc;
-vector short v_s;
-vector signed  short v_ss;
-vector unsigned  short v_us;
-vector short int v_si;
-vector signed short int v_ssi;
-vector unsigned short int v_usi;
-vector int v_i;
-vector signed int v_sint;
-vector unsigned int v_ui;
-vector float v_f;
-vector bool char v_bc;
-vector bool short v_bs;
-vector bool int v_bi;
-vector __pixel v_p;
-vector pixel v__p;
-vector int f__r();
-void f_a(vector int a);
-void f_a2(int b, vector int a);
-
-vector int v = (vector int)(-1);
-
-// These should have warnings.
-__vector long vv_l;                 // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector signed long vv_sl;         // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector unsigned long vv_ul;       // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector long int vv_li;            // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector signed long int vv_sli;    // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector unsigned long int vv_uli;  // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector long v_l;                    // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector signed long v_sl;            // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector unsigned long v_ul;          // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector long int v_li;               // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector signed long int v_sli;       // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-vector unsigned long int v_uli;     // expected-warning {{Use of 'long' with '__vector' is deprecated}}
-__vector long double  vv_ld;        // expected-warning {{Use of 'long' with '__vector' is deprecated}} expected-error {{cannot use 'double' with '__vector'}}
-vector long double  v_ld;           // expected-warning {{Use of 'long' with '__vector' is deprecated}} expected-error {{cannot use 'double' with '__vector'}}
-
-// These should have errors.
-__vector double vv_d1;               // expected-error {{cannot use 'double' with '__vector'}}
-vector double v_d2;                  // expected-error {{cannot use 'double' with '__vector'}}
-__vector long double  vv_ld3;        // expected-warning {{Use of 'long' with '__vector' is deprecated}} expected-error {{cannot use 'double' with '__vector'}}
-vector long double  v_ld4;           // expected-warning {{Use of 'long' with '__vector' is deprecated}} expected-error {{cannot use 'double' with '__vector'}}
-vector bool v_b;                     // expected-error {{C++ requires a type specifier for all declarations}}
-vector bool float v_bf;              // expected-error {{cannot use 'float' with '__vector bool'}}
-vector bool double v_bd;             // expected-error {{cannot use 'double' with '__vector bool'}}
-vector bool pixel v_bp;              // expected-error {{cannot use '__pixel' with '__vector bool'}}
-vector bool signed char v_bsc;       // expected-error {{cannot use 'signed' with '__vector bool'}}
-vector bool unsigned int v_bsc2;      // expected-error {{cannot use 'unsigned' with '__vector bool'}}
-vector bool long v_bl;               // expected-error {{cannot use 'long' with '__vector bool'}}
-vector bool long long v_bll;         // expected-error {{cannot use 'long long' with '__vector bool'}}
-
-void f() {
-  __vector unsigned int v = {0,0,0,0};
-  __vector int v__cast = (__vector int)v;
-  __vector int v_cast = (vector int)v;
-  __vector char vb_cast = (vector char)v;
-
-  // Check some casting between gcc and altivec vectors.
-  #define gccvector __attribute__((vector_size(16)))
-  gccvector unsigned int gccv = {0,0,0,0};
-  gccvector unsigned int gccv1 = gccv;
-  gccvector int gccv2 = (gccvector int)gccv;
-  gccvector unsigned int gccv3 = v;
-  __vector unsigned int av = gccv;
-  __vector int avi = (__vector int)gccv;
-  gccvector unsigned int gv = v;
-  gccvector int gvi = (gccvector int)v;
-  __attribute__((vector_size(8))) unsigned int gv8;
-  gv8 = gccv;     // expected-error {{assigning to '__attribute__((__vector_size__(2 * sizeof(unsigned int)))) unsigned int' from incompatible type '__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int'}}
-  av = gv8;       // expected-error {{assigning to '__vector unsigned int' from incompatible type '__attribute__((__vector_size__(2 * sizeof(unsigned int)))) unsigned int'}}
-
-  v = gccv;
-  __vector unsigned int tv = gccv;
-  gccv = v;
-  gccvector unsigned int tgv = v;
-}
-
-// Now for the C++ version:
-
-class vc__v {
-  __vector int v;
-  __vector int f__r();
-  void f__a(__vector int a);
-  void f__a2(int b, __vector int a);
-};
-
-class c_v {
-  vector int v;
-  vector int f__r();
-  void f__a(vector int a);
-  void f__a2(int b, vector int a);
-};
-
-
-// bug 6895 - Vectorl literal casting confusion.
-vector char v1 = (vector char)((vector int)(1, 2, 3, 4));
-vector char v2 = (vector char)((vector float)(1.0f, 2.0f, 3.0f, 4.0f));
-vector char v3 = (vector char)((vector int)('a', 'b', 'c', 'd'));
-vector int v4 = (vector int)(1, 2, 3, 4);
-vector float v5 = (vector float)(1.0f, 2.0f, 3.0f, 4.0f);
-vector char v6 = (vector char)((vector int)(1+2, -2, (int)(2.0 * 3), -(5-3)));
-
-// bug 7553 - Problem with '==' and vectors
-void func() {
-  bool res_b;
-  res_b = (vv_sc == vv_sc);
-  res_b = (vv_uc != vv_uc);
-  res_b = (vv_s > vv_s);
-  res_b = (vv_us >= vv_us);
-  res_b = (vv_i < vv_i);
-  res_b = (vv_ui <= vv_ui);
-  res_b = (vv_f <= vv_f);
-}
-
-// vecreturn attribute test
-struct Vector
-{
-	__vector float xyzw;
-} __attribute__((vecreturn));
-
-Vector Add(Vector lhs, Vector rhs)
-{
-	Vector result;
-	result.xyzw = vec_add(lhs.xyzw, rhs.xyzw);
-	return result; // This will (eventually) be returned in a register
-}
-
-// vecreturn attribute test - should error because of virtual function.
-class VectorClassNonPod
-{
-	__vector float xyzw;
-public:
-  VectorClassNonPod() {}
-  virtual ~VectorClassNonPod() {}
-} __attribute__((vecreturn));     // expected-error {{the vecreturn attribute can only be used on a POD (plain old data) class or structure (i.e. no virtual functions)}}
-
-// vecreturn attribute test - should error because of virtual function.
-class VectorClassMultipleMembers
-{
-public:
-	__vector float xyzw;
-	__vector float abcd;
-} __attribute__((vecreturn));     // expected-error {{the vecreturn attribute can only be used on a class or structure with one member, which must be a vector}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-decl-expr-xfail.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-decl-expr-xfail.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-decl-expr-xfail.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// XFAIL: *
-struct X { 
-  template<typename T> X(T);
-  X(int, int);
-
-  X operator()(int, int) const;
-};
-
-template<typename T, typename U> struct Y { };
-
-X *x;
-void f() {
-  int y = 0;
-  X (*x)(int(y), int(y)) = Y<int, float>(), ++y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-decl-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-decl-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-decl-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct X {
-  template<typename T, typename U>
-  static void f(int, int);
-};
-
-void f() {
-  void (*ptr)(int, int) = &X::f<int, int>;
-
-  unknown *p = 0; // expected-error {{unknown type name 'unknown'}}
-  unknown * p + 0; // expected-error {{undeclared identifier 'unknown'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-paren-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-paren-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-ambig-paren-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-void f() {
-  typedef int T;
-  int x, *px;
-  
-  // Type id.
-  (T())x;    // expected-error {{cast from 'int' to 'T ()'}}
-  (T())+x;   // expected-error {{cast from 'int' to 'T ()'}}
-  (T())*px;  // expected-error {{cast from 'int' to 'T ()'}}
-  
-  // Expression.
-  x = (T());
-  x = (T())/x;
-
-  typedef int *PT;
-  // Make sure stuff inside the parens are parsed only once (only one warning).
-  x = (PT()[(int){1}]); // expected-warning {{compound literals}}
-
-  // Special case: empty parens is a call, not an expression
-  struct S{int operator()();};
-  (S())();
-
-  // FIXME: Special case: "++" is postfix here, not prefix
-  // (S())++;
-}
-
-// Make sure we do tentative parsing correctly in conditions.
-typedef int type;
-struct rec { rec(int); };
-
-namespace ns {
-  typedef int type;
-  struct rec { rec(int); };
-}
-
-struct cls {
-  typedef int type;
-  struct rec { rec(int); };
-};
-
-struct result {
-  template <class T> result(T);
-  bool check();
-};
-
-void test(int i) {
-  if (result((cls::type) i).check())
-    return;
-
-  if (result((ns::type) i).check())
-    return;
-
-  if (result((::type) i).check())
-    return;
-
-  if (result((cls::rec) i).check())
-    return;
-
-  if (result((ns::rec) i).check())
-    return;
-
-  if (result((::rec) i).check())
-    return;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-attributes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-attributes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-attributes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-class c {
-  virtual void f1(const char* a, ...)
-    __attribute__ (( __format__(__printf__,2,3) )) = 0;
-  virtual void f2(const char* a, ...)
-    __attribute__ (( __format__(__printf__,2,3) )) {}
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-bool.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-bool.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-bool.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-bool a = true;
-bool b = false;

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-casting.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-casting.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-casting.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-char *const_cast_test(const char *var)
-{
-  return const_cast<char*>(var);
-}
-
-struct A {
-  virtual ~A() {}
-};
-
-struct B : public A {
-};
-
-struct B *dynamic_cast_test(struct A *a)
-{
-  return dynamic_cast<struct B*>(a);
-}
-
-char *reinterpret_cast_test()
-{
-  return reinterpret_cast<char*>(0xdeadbeef);
-}
-
-double static_cast_test(int i)
-{
-  return static_cast<double>(i);
-}
-
-char postfix_expr_test()
-{
-  return reinterpret_cast<char*>(0xdeadbeef)[0];
-}
-
-// This was being incorrectly tentatively parsed.
-namespace test1 {
-  template <class T> class A {}; // expected-note 2{{here}}
-  void foo() { A<int>(*(A<int>*)0); }
-}
-
-typedef char* c;
-typedef A* a;
-void test2(char x, struct B * b) {
-  (void)const_cast<::c>(&x);  // expected-error{{found '<::' after a const_cast which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-  (void)dynamic_cast<::a>(b);  // expected-error{{found '<::' after a dynamic_cast which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-  (void)reinterpret_cast<::c>(x);  // expected-error{{found '<::' after a reinterpret_cast which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-  (void)static_cast<::c>(&x);  // expected-error{{found '<::' after a static_cast which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-
-  // Do not do digraph correction.
-  (void)static_cast<: :c>(&x); //\
-       expected-error {{expected '<' after 'static_cast'}} \
-       expected-error {{expected expression}}\
-       expected-error {{expected ']'}}\
-       expected-note {{to match this '['}}
-  (void)static_cast<: // expected-error {{expected '<' after 'static_cast'}} \
-                         expected-note {{to match this '['}}
-  :c>(&x); // expected-error {{expected expression}} \
-              expected-error {{expected ']'}}
-#define LC <:
-#define C :
-  test1::A LC:B> c; // expected-error {{class template 'test1::A' requires template arguments}} expected-error 2{{}}
-  (void)static_cast LC:c>(&x); // expected-error {{expected '<' after 'static_cast'}} expected-error 2{{}} expected-note{{}}
-  test1::A<:C B> d; // expected-error {{class template 'test1::A' requires template arguments}} expected-error 2{{}}
-  (void)static_cast<:C c>(&x); // expected-error {{expected '<' after 'static_cast'}} expected-error 2{{}} expected-note{{}}
-
-#define LCC <::
-  test1::A LCC B> e; // expected-error{{found '<::' after a template name which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-  (void)static_cast LCC c>(&x); // expected-error{{found '<::' after a static_cast which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-}
-
-                               // This note comes from "::D[:F> A5;"
-template <class T> class D {}; // expected-note{{template is declared here}}
-template <class T> void E() {};
-class F {};
-
-void test3() {
-  ::D<::F> A1; // expected-error{{found '<::' after a template name which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-  D<::F> A2; // expected-error{{found '<::' after a template name which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-  ::E<::F>(); // expected-error{{found '<::' after a template name which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-  E<::F>(); // expected-error{{found '<::' after a template name which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-
-  ::D< ::F> A3;
-  D< ::F> A4;
-  ::E< ::F>();
-  E< ::F>();
-
-  // Make sure that parser doesn't expand '[:' to '< ::'
-  ::D[:F> A5; // expected-error {{class template '::D' requires template arguments}} \
-              // expected-error {{expected expression}} \
-              // expected-error {{expected unqualified-id}}
-}
-
-// PR13619. Must be at end of file.
-int n = reinterpret_cast // expected-error {{expected '<'}} expected-error {{expected ';'}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,118 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-class C;
-class C {
-public:
-protected:
-  typedef int A,B;
-  static int sf(), u;
-
-  struct S {};
-  enum {}; // expected-warning{{declaration does not declare anything}}
-  int; // expected-warning {{declaration does not declare anything}}
-  int : 1, : 2;
-
-public:
-  void m0() {}; // ok, one extra ';' is permitted
-  void m1() {}
-  ; // ok, one extra ';' is permitted
-  void m() {
-    int l = 2;
-  };; // expected-warning{{extra ';' after member function definition}}
-
-  template<typename T> void mt(T) { }
-  ;
-  ; // expected-warning{{extra ';' inside a class}}
-
-  virtual int vf() const volatile = 0;
-  
-private:
-  int x,f(),y,g();
-  inline int h();
-  static const int sci = 10;
-  mutable int mi;
-};
-void glo()
-{
-  struct local {};
-}
-
-// PR3177
-typedef union {
-  __extension__ union {
-    int a;
-    float b;
-  } y;
-} bug3177;
-
-// check that we don't consume the token after the access specifier 
-// when it's not a colon
-class D {
-public // expected-error{{expected ':'}}
-  int i;
-};
-
-// consume the token after the access specifier if it's a semicolon 
-// that was meant to be a colon
-class E {
-public; // expected-error{{expected ':'}}
-  int i;
-};
-
-class F {
-    int F1 { return 1; } // expected-error{{function definition does not declare parameters}}
-    void F2 {} // expected-error{{function definition does not declare parameters}}
-    typedef int F3() { return 0; } // expected-error{{function definition declared 'typedef'}}
-    typedef void F4() {} // expected-error{{function definition declared 'typedef'}}
-};
-
-namespace ctor_error {
-  class Foo {};
-  // By [class.qual]p2, this is a constructor declaration.
-  Foo::Foo (F) = F(); // expected-error{{does not match any declaration in 'ctor_error::Foo'}}
-
-  class Ctor { // expected-note{{not complete until the closing '}'}}
-    Ctor(f)(int); // ok
-    Ctor(g(int)); // ok
-    Ctor(x[5]); // expected-error{{incomplete type}}
-
-    Ctor(UnknownType *); // expected-error{{unknown type name 'UnknownType'}}
-    void operator+(UnknownType*); // expected-error{{unknown type name 'UnknownType'}}
-  };
-
-  Ctor::Ctor (x) = { 0 }; // \
-    // expected-error{{qualified reference to 'Ctor' is a constructor name}}
-
-  Ctor::Ctor(UnknownType *) {} // \
-    // expected-error{{unknown type name 'UnknownType'}}
-  void Ctor::operator+(UnknownType*) {} // \
-    // expected-error{{unknown type name 'UnknownType'}}
-}
-
-namespace nns_decl {
-  struct A {
-    struct B;
-  };
-  namespace N {
-    union C;
-  }
-  struct A::B; // expected-error {{forward declaration of struct cannot have a nested name specifier}}
-  union N::C; // expected-error {{forward declaration of union cannot have a nested name specifier}}
-}
-
-// PR13775: Don't assert here.
-namespace PR13775 {
-  class bar
-  {
-   public:
-    void foo ();
-    void baz ();
-  };
-  void bar::foo ()
-  {
-    baz x(); // expected-error 3{{}}
-  }
-}
-
-// PR11109 must appear at the end of the source file
-class pr11109r3 { // expected-note{{to match this '{'}}
-  public // expected-error{{expected ':'}} expected-error{{expected '}'}} expected-error{{expected ';' after class}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-condition.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-condition.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-condition.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct S { S(int); operator bool(); };
-
-void f() {
-  int a;
-  while (a) ;
-  while (int x) ; // expected-error {{variable declaration in condition must have an initializer}}
-  while (float x = 0) ;
-  if (const int x = a) ; // expected-warning{{empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-  switch (int x = a+10) {}
-  for (; int x = ++a; ) ;
-
-  if (S a(42)) {} // expected-error {{variable declaration in condition cannot have a parenthesized initializer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,195 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -triple i386-linux -pedantic -fcxx-exceptions -fexceptions %s
-
-const char const *x10; // expected-warning {{duplicate 'const' declaration specifier}}
-
-int x(*g); // expected-error {{use of undeclared identifier 'g'}}
-
-struct Type {
-  int Type;
-};
-
-// rdar://8365458
-// rdar://9132143
-typedef char bool; // expected-error {{redeclaration of C++ built-in type 'bool'}}
-
-// PR4451 - We should recover well from the typo of '::' as ':' in a2.
-namespace y {
-  struct a { };
-  typedef int b;
-}
-
-y::a a1;
-y:a a2;  // expected-error {{unexpected ':' in nested name specifier}}
-y::a a3 = a2;
-
-// Some valid colons:
-void foo() {
-y:  // label
-  y::a s;
-  
-  int a = 4;
-  a = a ? a : a+1;
-}
-
-struct b : y::a {};
-
-template <typename T>
-class someclass {
-  
-  int bar() {
-    T *P;
-    return 1 ? P->x : P->y;
-  }
-};
-
-class asm_class_test {
-  void foo() __asm__("baz");
-};
-
-enum { fooenum = 1, }; // expected-warning {{commas at the end of enumerator lists are a C++11 extension}}
-
-struct a {
-  int Type : fooenum;
-};
-
-void test(struct Type *P) {
-  int Type;
-  Type = 1 ? P->Type : Type;
-  
-  Type = (y:b) 4;   // expected-error {{unexpected ':' in nested name specifier}}
-  Type = 1 ? (
-              (y:b)  // expected-error {{unexpected ':' in nested name specifier}}
-              4) : 5;
-}
-
-struct test4 {
-  int x  // expected-error {{expected ';' at end of declaration list}}
-  int y;
-  int z  // expected-error {{expected ';' at end of declaration list}}
-};
-
-// Make sure we know these are legitimate commas and not typos for ';'.
-namespace Commas {
-  struct S {
-    static int a;
-    int c,
-    operator()();
-  };
-
-  int global1,
-  __attribute__(()) global2,
-  (global5),
-  *global6,
-  &global7 = global1,
-  &&global8 = static_cast<int&&>(global1), // expected-warning 2{{rvalue reference}}
-  S::a,
-  global9,
-  global10 = 0,
-  global11 == 0, // expected-error {{did you mean '='}}
-  global12 __attribute__(()),
-  global13(0),
-  global14[2],
-  global15;
-
-  void g() {
-    static int a,
-    b __asm__("ebx"), // expected-error {{expected ';' at end of declaration}}
-    Statics:return;
-  }
-}
-
-// PR5825
-struct test5 {};
-::new(static_cast<void*>(0)) test5; // expected-error {{expected unqualified-id}}
-
-
-// PR6782
-template<class T>
-class Class1;
-
-class Class2 {
-}  // no ;
-
-typedef Class1<Class2> Type1; // expected-error {{cannot combine with previous 'class' declaration specifier}}
-
-// rdar : // 8307865
-struct CodeCompleteConsumer {
-};
-
-void CodeCompleteConsumer::() { // expected-error {{xpected unqualified-id}}
-} 
-
-;
-
-// PR4111
-void f(sqrgl); // expected-error {{unknown type name 'sqrgl'}}
-
-// PR9903
-struct S {
-  typedef void a() { }; // expected-error {{function definition declared 'typedef'}}
-  typedef void c() try { } catch(...) { } // expected-error {{function definition declared 'typedef'}}
-  int n, m;
-  typedef S() : n(1), m(2) { } // expected-error {{function definition declared 'typedef'}}
-};
-
-
-namespace TestIsValidAfterTypeSpecifier {
-struct s {} v;
-
-namespace a {
-struct s operator++(struct s a)
-{ return a; }
-}
-
-namespace b {
-// The newline after s should make no difference.
-struct s
-operator++(struct s a)
-{ return a; }
-}
-
-struct X {
-  struct s
-  friend f();
-  struct s
-  virtual f();
-};
-
-struct s
-&r0 = v;
-struct s
-bitand r2 = v;
-
-}
-
-struct DIE {
-  void foo() {}
-};
-
-void test (DIE die, DIE *Die, DIE INT, DIE *FLOAT) {
-  DIE.foo();  // expected-error {{cannot use dot operator on a type}}
-  die.foo();
-
-  DIE->foo();  // expected-error {{cannot use arrow operator on a type}}
-  Die->foo();
-
-  int.foo();  // expected-error {{cannot use dot operator on a type}}
-  INT.foo();
-
-  float->foo();  // expected-error {{cannot use arrow operator on a type}}
-  FLOAT->foo();
-}
-
-namespace PR15017 {
-  template<typename T = struct X { int i; }> struct S {}; // expected-error {{'PR15017::X' can not be defined in a type specifier}}
-}
-
-// Ensure we produce at least some diagnostic for attributes in C++98.
-[[]] struct S; // expected-error 2{{}}
-
-// PR8380
-extern ""      // expected-error {{unknown linkage language}}
-test6a { ;// expected-error {{C++ requires a type specifier for all declarations}} \
-     // expected-error {{expected ';' after top level declarator}}
-  
-  int test6b;

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-default-args.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-default-args.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-default-args.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR6647
-class C {
-  // After the error, the rest of the tokens inside the default arg should be
-  // skipped, avoiding a "expected ';' after class" after 'undecl'.
-  void m(int x = undecl + 0); // expected-error {{use of undeclared identifier 'undecl'}}
-};
-
-typedef struct Inst {
-  void m(int x=0);
-} *InstPtr;
-
-struct X {
-  void f(int x = 1:); // expected-error {{unexpected end of default argument expression}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-default-delete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-default-delete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-default-delete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-int i = delete; // expected-error{{only functions}}
-int j = default; // expected-error{{special member functions}}
-
-int f() = delete, g; // expected-error{{'= delete' is a function definition}}
-int o, p() = delete; // expected-error{{'= delete' is a function definition}}
-
-int q() = default, r; // expected-error{{only special member functions}} \
-                      // expected-error{{'= default' is a function definition}}
-int s, t() = default; // expected-error{{'= default' is a function definition}}
-
-struct foo {
-  foo() = default;
-  ~foo() = delete;
-  void bar() = delete;
-};
-
-void baz() = delete;
-
-struct quux {
-  int quux() = default; // expected-error{{constructor cannot have a return type}} expected-error {{member 'quux' has the same name as its class}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-ext-delete-default.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-ext-delete-default.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-ext-delete-default.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
-
-struct A {
-  A(const A&) = delete; // expected-warning {{C++11 extension}}
-  A& operator=(const A&) = delete; // expected-warning {{C++11 extension}}
-  A() = default; // expected-warning {{C++11 extension}}
-  ~A();
-};
-
-void f() = delete; // expected-warning {{C++11 extension}}
-A::~A() = default; //expected-warning {{C++11 extension}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-extern-c-array.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-extern-c-array.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-extern-c-array.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-extern "C" int myarray[];
-int myarray[12] = {0};
-
-extern "C" int anotherarray[][3];
-int anotherarray[2][3] = {1,2,3,4,5,6};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-extra-semi.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-extra-semi.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-extra-semi.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify -DPEDANTIC %s
-// RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify -std=c++11 %s
-// RUN: cp %s %t
-// RUN: %clang_cc1 -x c++ -Wextra-semi -fixit %t
-// RUN: %clang_cc1 -x c++ -Wextra-semi -Werror %t
-
-class A {
-  void A1();
-  void A2() { };
-#ifndef PEDANTIC
-  // This warning is only produced if we specify -Wextra-semi, and not if only
-  // -pedantic is specified, since one semicolon is technically permitted.
-  // expected-warning at -4{{extra ';' after member function definition}}
-#endif
-  void A2b() { };; // expected-warning{{extra ';' after member function definition}}
-  ; // expected-warning{{extra ';' inside a class}}
-  void A2c() { }
-  ;
-#ifndef PEDANTIC
-  // expected-warning at -2{{extra ';' after member function definition}}
-#endif
-  void A3() { };  ;; // expected-warning{{extra ';' after member function definition}}
-  ;;;;;;; // expected-warning{{extra ';' inside a class}}
-  ; // expected-warning{{extra ';' inside a class}}
-  ; ;;		 ;  ;;; // expected-warning{{extra ';' inside a class}}
-    ;  ; 	;	;  ;; // expected-warning{{extra ';' inside a class}}
-  void A4();
-};
-
-union B {
-  int a1;
-  int a2;; // expected-warning{{extra ';' inside a union}}
-};
-
-;
-; ;;
-#if __cplusplus < 201103L
-// expected-warning at -3{{extra ';' outside of a function is a C++11 extension}}
-// expected-warning at -3{{extra ';' outside of a function is a C++11 extension}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-friend.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-friend.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-friend.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class C {
-  friend class D;
-};
-
-class A {
-public:
-  void f();
-};
-
-friend int x; // expected-error {{'friend' used outside of class}}
-
-friend class D {}; // expected-error {{'friend' used outside of class}}
-
-union U {
-  int u1;
-};
-
-class B {
-  // 'A' here should refer to the declaration above.  
-  friend class A;
-
-  friend C; // expected-warning {{specify 'class' to befriend}}
-  friend U; // expected-warning {{specify 'union' to befriend}}
-  friend int; // expected-warning {{non-class friend type 'int'}}
-
-  friend void myfunc();
-
-  void f(A *a) { a->f(); }
-};
-
-
-
-
-
-template <typename t1, typename t2> class some_template;
-friend   // expected-error {{'friend' used outside of class}}
-some_template<foo, bar>&  // expected-error {{use of undeclared identifier 'foo'}}
-  ;  // expected-error {{expected unqualified-id}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-in-c.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-in-c.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-in-c.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR9137
-void f0(int x) : {}; // expected-error{{expected function body after function declarator}}
-void f1(int x) try {}; // expected-error{{expected function body after function declarator}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1|FileCheck %s
-
-// <rdar://problem/9221993>
-
-// We only care to chek whether the compiler crashes; the actual
-// diagnostics are uninteresting.
-// CHECK: 8 errors generated.
-template<class _CharT>     struct char_traits;
-template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_ios;
-template<typename _CharT, typename _Traits = char_traits<_CharT> >     class ostreambuf_iterator;
-template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >     class num_get;
-template<typename _CharT, typename _Traits>     class basic_ostream : virtual public basic_ios<_CharT, _Traits>     {
-  template<typename _CharT, typename _InIter>     _InIter     num_get<_CharT, _InIter>::     _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,        ios_base::iostate& __err, string& __xtrc) const     {
-    const bool __plus = __c == __lit[__num_base::_S_iplus];
-    if ((__plus || __c == __lit[__num_base::_S_iminus])        && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)        && !(__c == __lc->_M_decimal_point))      {

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-init-missing-paren-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-init-missing-paren-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-init-missing-paren-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: not %clang_cc1 -fsyntax-only %s
-// Note: The important part here is that we don't crash, not any specific errors
-class Test {
- public:
-  Test() : ab_(false {};
-
-  bool ab() {
-    return ab_;
-  }
- private:
-  bool ab_;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-member-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct x {
-  x() : a(4) ; // expected-error {{expected '{'}}
-};
-
-struct y {
-  int a;
-  y() : a(4) ; // expected-error {{expected '{'}}
-};
-
-struct z {
-  int a;
-  z() : a {} // expected-error {{expected '('}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-namespace-alias.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-namespace-alias.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-namespace-alias.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace A = B; // expected-error{{namespace name}}
-
-namespace A = !; // expected-error {{expected namespace name}}
-namespace A = A::!; // expected-error {{expected namespace name}} \
-                    // expected-error{{use of undeclared identifier 'A'}}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-extern char *bork;
-char *& bar = bork;
-
-int val;
-
-void foo(int &a) {
-}
-
-typedef int & A;
-
-void g(const A aref) {
-}
-
-int & const X = val; // expected-error {{'const' qualifier may not be applied to a reference}}
-int & volatile Y = val; // expected-error {{'volatile' qualifier may not be applied to a reference}}
-int & const volatile Z = val; /* expected-error {{'const' qualifier may not be applied}} \
-                           expected-error {{'volatile' qualifier may not be applied}} */
-
-typedef int && RV; // expected-warning {{rvalue references are a C++11 extension}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-stmt.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-stmt.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-stmt.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
-
-void f1()
-{
-  try {
-    ;
-  } catch(int i) {
-    ;
-  } catch(...) {
-  }
-}
-
-void f2()
-{
-  try; // expected-error {{expected '{'}}
-
-  try {}
-  catch; // expected-error {{expected '('}}
-
-  try {}
-  catch (...); // expected-error {{expected '{'}}
-
-  try {}
-  catch {} // expected-error {{expected '('}}
-}
-
-void f3() try {
-} catch(...) {
-}
-
-struct A {
-  int i;
-  A(int);
-  A(char);
-  A() try : i(0) {} catch(...) {}
-  void f() try {} catch(...) {}
-  A(float) : i(0) try {} // expected-error {{expected '{' or ','}}
-};
-
-A::A(char) : i(0) try {} // expected-error {{expected '{' or ','}}
-A::A(int j) try : i(j) {} catch(...) {}
-
-
-
-// PR5740
-struct Type { };
-
-enum { Type } Kind;
-void f4() {
-  int i = 0;
-  switch (Kind) {
-    case Type: i = 7; break;  // no error.
-  }
-}
-
-// PR5500
-void f5() {
-  asm volatile ("":: :"memory");
-  asm volatile ("": ::"memory");
-}
-
-int f6() {
-  int k, // expected-note {{change this ',' to a ';' to call 'f6'}}
-  f6(), // expected-error {{expected ';'}} expected-warning {{interpreted as a function declaration}} expected-note {{replace paren}}
-  int n = 0, // expected-error {{expected ';'}}
-  return f5(), // ok
-  int(n);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-template-argument.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-template-argument.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-template-argument.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> struct A {};
-
-// Check for template argument lists followed by junk
-// FIXME: The diagnostics here aren't great...
-A<int+> int x; // expected-error {{expected '>'}} expected-error {{expected unqualified-id}}
-A<int x; // expected-error {{expected '>'}}
-
-// PR8912
-template <bool> struct S {};
-S<bool(2 > 1)> s;
-
-// Test behavior when a template-id is ended by a token which starts with '>'.
-namespace greatergreater {
-  template<typename T> struct S { S(); S(T); };
-  void f(S<int>=0); // expected-error {{a space is required between a right angle bracket and an equals sign (use '> =')}}
-  void f(S<S<int>>=S<int>()); // expected-error {{use '> >'}} expected-error {{use '> ='}}
-  template<typename T> void t();
-  void g() {
-    void (*p)() = &t<int>;
-    (void)(&t<int>==p); // expected-error {{use '> ='}}
-    (void)(&t<int>>=p); // expected-error {{use '> >'}}
-    (void)(&t<S<int>>>=p); // expected-error {{use '> >'}}
-    (void)(&t<S<int>>==p); // expected-error {{use '> >'}} expected-error {{use '> ='}}
-  }
-}
-
-namespace PR5925 {
-  template <typename x>
-  class foo { // expected-note {{here}}
-  };
-  void bar(foo *X) { // expected-error {{requires template arguments}}
-  }
-}
-
-namespace PR13210 {
-  template <class T>
-  class C {}; // expected-note {{here}}
-
-  void f() {
-    new C(); // expected-error {{requires template arguments}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-template-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-template-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-template-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,115 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Errors
-export class foo { };   // expected-error {{expected template}}
-template  x;            // expected-error {{C++ requires a type specifier for all declarations}} \
-                        // expected-error {{does not refer}}
-export template x;      // expected-error {{expected '<' after 'template'}}
-export template<class T> class x0; // expected-warning {{exported templates are unsupported}}
-template < ;            // expected-error {{expected template parameter}} \
-// expected-error{{expected ',' or '>' in template-parameter-list}} \
-// expected-warning {{declaration does not declare anything}}
-template <int +> struct x1; // expected-error {{expected ',' or '>' in template-parameter-list}}
-
-// verifies that we only walk to the ',' & still produce errors on the rest of the template parameters
-template <int +, T> struct x2; // expected-error {{expected ',' or '>' in template-parameter-list}} \
-                                expected-error {{expected unqualified-id}}
-template<template<int+>> struct x3; // expected-error {{expected ',' or '>' in template-parameter-list}} \
-                                         expected-error {{template template parameter requires 'class' after the parameter list}}
-template <template X> struct Err1; // expected-error {{expected '<' after 'template'}} \
-// expected-error{{extraneous}}
-template <template <typename> > struct Err2;       // expected-error {{template template parameter requires 'class' after the parameter list}}
-template <template <typename> Foo> struct Err3;    // expected-error {{template template parameter requires 'class' after the parameter list}}
-
-// Template function declarations
-template <typename T> void foo();
-template <typename T, typename U> void foo();
-
-// Template function definitions.
-template <typename T> void foo() { }
-
-// Template class (forward) declarations
-template <typename T> struct A;
-template <typename T, typename U> struct b;
-template <typename> struct C;
-template <typename, typename> struct D;
-
-// Forward declarations with default parameters?
-template <typename T = int> class X1;
-template <typename = int> class X2;
-
-// Forward declarations w/template template parameters
-template <template <typename> class T> class TTP1;
-template <template <typename> class> class TTP2;
-template <template <typename> class T = foo> class TTP3; // expected-error{{must be a class template}}
-template <template <typename> class = foo> class TTP3; // expected-error{{must be a class template}}
-template <template <typename X, typename Y> class T> class TTP5;
-
-// Forward declarations with non-type params
-template <int> class NTP0;
-template <int N> class NTP1;
-template <int N = 5> class NTP2;
-template <int = 10> class NTP3;
-template <unsigned int N = 12u> class NTP4; 
-template <unsigned int = 12u> class NTP5;
-template <unsigned = 15u> class NTP6;
-template <typename T, T Obj> class NTP7;
-
-// Template class declarations
-template <typename T> struct A { };
-template <typename T, typename U> struct B { };
-
-// Template parameter shadowing
-template<typename T, // expected-note{{template parameter is declared here}}
-         typename T> // expected-error{{declaration of 'T' shadows template parameter}}
-  void shadow1();
-
-template<typename T> // expected-note{{template parameter is declared here}}
-void shadow2(int T); // expected-error{{declaration of 'T' shadows template parameter}}
-
-template<typename T> // expected-note{{template parameter is declared here}}
-class T { // expected-error{{declaration of 'T' shadows template parameter}}
-};
-
-template<int Size> // expected-note{{template parameter is declared here}}
-void shadow3(int Size); // expected-error{{declaration of 'Size' shadows template parameter}}
-
-// <rdar://problem/6952203>
-template<typename T> // expected-note{{here}}
-struct shadow4 {
-  int T; // expected-error{{shadows}}
-};
-
-template<typename T> // expected-note{{here}}
-struct shadow5 {
-  int T(int, float); // expected-error{{shadows}}
-};
-
-// Non-type template parameters in scope
-template<int Size> 
-void f(int& i) {
-  i = Size;
-  Size = i; // expected-error{{expression is not assignable}}
-}
-
-template<typename T>
-const T& min(const T&, const T&);
-
-void f2() {
-  int x;
-  A< typeof(x>1) > a;
-}
-
-
-// PR3844
-template <> struct S<int> { }; // expected-error{{explicit specialization of non-template struct 'S'}}
-
-namespace PR6184 {
-  namespace N {
-    template <typename T>
-    void bar(typename T::x);
-  }
-  
-  template <typename T>
-  void N::bar(typename T::x) { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-throw.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-throw.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-throw.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
-
-int i;
-
-void foo() {
-  (throw,throw);
-  (1 ? throw 1 : throw 2);
-  throw int(1);
-  throw;
-  throw 1;
-  throw;
-  1 ? throw : (void)42;
-  __extension__ throw 1;    // expected-error {{expected expression}}
-  (void)throw;              // expected-error {{expected expression}}
-}
-
-void f() throw(static); // expected-error {{expected a type}} expected-error {{does not allow storage class}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-typeid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-typeid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-typeid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// FIXME: This should really include <typeinfo>, but we don't have that yet.
-namespace std {
-  class type_info;
-}
-
-void f()
-{
-  (void)typeid(int);
-  (void)typeid(0);
-  (void)typeid 1; // expected-error {{expected '(' after 'typeid'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-typeof.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-typeof.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-typeof.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-static void test() {
-  int *pi;
-  int x;
-  typeof pi[x] y; 
-}
-
-// Part of rdar://problem/8347416;  from the gcc test suite.
-struct S {
-  int i;
-  __typeof(S::i) foo(); // expected-error {{invalid use of non-static data member 'i'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-undeclared-identifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-undeclared-identifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-undeclared-identifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-namespace ImplicitInt {
-  static a(4); // expected-error {{requires a type specifier}}
-  b(int n); // expected-error {{requires a type specifier}}
-  c (*p)[]; // expected-error {{unknown type name 'c'}}
-  itn f(char *p, *q); // expected-error {{unknown type name 'itn'}} expected-error {{requires a type specifier}}
-
-  struct S {
-    void f();
-  };
-  S::f() {} // expected-error {{requires a type specifier}}
-}
-
-// PR7180
-int f(a::b::c); // expected-error {{use of undeclared identifier 'a'}}
-
-class Foo::Bar { // expected-error {{use of undeclared identifier 'Foo'}} \
-                 // expected-error {{expected ';' after class}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-using-declaration.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-using-declaration.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-using-declaration.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace A {
-    int VA;
-    void FA() {}
-    struct SA { int V; };
-}
-
-using A::VA;
-using A::FA;
-using typename A::SA;
-
-int main()
-{
-    VA = 1;
-    FA();
-    SA x;   //Still needs handling.
-}
-
-struct B {
-    void f(char){};
-    void g(char){};
-};
-struct D : B {
-    using B::f;
-    void f(int);
-    void g(int);
-};
-void D::f(int) { f('c'); } // calls B::f(char)
-void D::g(int) { g('c'); } // recursively calls D::g(int)
-
-namespace E {
-    template <typename TYPE> int funcE(TYPE arg) { return(arg); }
-}
-
-using E::funcE<int>; // expected-error{{using declaration can not refer to a template specialization}}
-
-namespace F {
-    struct X;
-}
-
-using F::X;
-// Should have some errors here.  Waiting for implementation.
-void X(int);
-struct X *x;
-
-
-namespace ShadowedTagNotes {
-
-namespace foo {
-  class Bar {};
-}
-
-void Bar(int); // expected-note{{class 'Bar' is hidden by a non-type declaration of 'Bar' here}}
-using foo::Bar;
-
-void ambiguity() {
-   const Bar *x; // expected-error{{must use 'class' tag to refer to type 'Bar' in this scope}}
-}
-
-} // namespace ShadowedTagNotes

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-using-directive.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-using-directive.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-using-directive.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class A {};
-
-namespace B {
-  namespace A {} // expected-note{{namespace '::B::A' defined here}} \
-                 // expected-note{{namespace 'B::A' defined here}}
-  using namespace A ;
-}
-
-namespace C {}
-
-namespace D {
-  
-  class C {
-    
-    using namespace B ; // expected-error{{not allowed}}
-  };
-  
-  namespace B {}
-  
-  using namespace C ;
-  using namespace B::A ; // expected-error{{no namespace named 'A' in namespace 'D::B'; did you mean '::B::A'?}}
-  using namespace ::B::A ;
-  using namespace ::D::C ; // expected-error{{expected namespace name}}
-}
-
-using namespace ! ; // expected-error{{expected namespace name}}
-using namespace A ; // expected-error{{no namespace named 'A'; did you mean 'B::A'?}}
-using namespace ::A // expected-error{{expected namespace name}} \
-                    // expected-error{{expected ';' after namespace name}}
-                    B ; 
-
-void test_nslookup() {
-  int B;
-  class C;
-  using namespace B;
-  using namespace C;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx-variadic-func.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx-variadic-func.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx-variadic-func.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only  %s
-
-void f(...) {
-  int g(int(...));
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-ambig.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-ambig.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-ambig.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,151 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// New exciting ambiguities in C++11
-
-// final 'context sensitive' mess.
-namespace final {
-  struct S { int n; };
-  struct T { int n; };
-  namespace N {
-    int n;
-    // These declare variables named final..
-    extern struct S final;
-    extern struct S final [[]];
-    extern struct S final, foo;
-    struct S final = S();
-
-    // This defines a class, not a variable, even though it would successfully
-    // parse as a variable but not as a class. DR1318's wording suggests that
-    // this disambiguation is only performed on an ambiguity, but that was not
-    // the intent.
-    struct S final { // expected-note {{here}}
-      int(n) // expected-error {{expected ';'}}
-    };
-    // This too.
-    struct T final : S {}; // expected-error {{base 'S' is marked 'final'}}
-    struct T bar : S {}; // expected-error {{expected ';' after top level declarator}} expected-error {{expected unqualified-id}}
-  }
-  // _Alignas isn't allowed in the places where alignas is. We used to
-  // assert on this.
-  struct U final _Alignas(4) {}; // expected-error 3{{}} expected-note {{}}
-}
-
-// enum versus bitfield mess.
-namespace bitfield {
-  enum E {};
-
-  struct T {
-    constexpr T() {}
-    constexpr T(int) {}
-    constexpr T(T, T, T, T) {}
-    constexpr T operator=(T) const { return *this; }
-    constexpr operator int() const { return 4; }
-  };
-  constexpr T a, b, c, d;
-
-  struct S1 {
-    enum E : T ( a = 1, b = 2, c = 3, 4 ); // ok, declares a bitfield
-  };
-  // This could be a bit-field.
-  struct S2 {
-    enum E : T { a = 1, b = 2, c = 3, 4 }; // expected-error {{non-integral type}} expected-error {{expected '}'}} expected-note {{to match}}
-  };
-  struct S3 {
-    enum E : int { a = 1, b = 2, c = 3, d }; // ok, defines an enum
-  };
-  // Ambiguous.
-  struct S4 {
-    enum E : int { a = 1 }; // ok, defines an enum
-  };
-  // This could be a bit-field, but would be ill-formed due to the anonymous
-  // member being initialized.
-  struct S5 {
-    enum E : int { a = 1 } { b = 2 }; // expected-error {{expected ';' after enum}} expected-error {{expected member name}}
-  };
-  // This could be a bit-field.
-  struct S6 {
-    enum E : int { 1 }; // expected-error {{expected '}'}} expected-note {{to match}}
-  };
-
-  struct U {
-    constexpr operator T() const { return T(); } // expected-note 2{{candidate}}
-  };
-  // This could be a bit-field.
-  struct S7 {
-    enum E : int { a = U() }; // expected-error {{no viable conversion}}
-  };
-  // This could be a bit-field, and does not conform to the grammar of an
-  // enum definition, because 'id(U())' is not a constant-expression.
-  constexpr const U &id(const U &u) { return u; }
-  struct S8 {
-    enum E : int { a = id(U()) }; // expected-error {{no viable conversion}}
-  };
-}
-
-namespace trailing_return {
-  typedef int n;
-  int a;
-
-  struct S {
-    S(int);
-    S *operator()(...) const;
-    int n;
-  };
-
-  namespace N {
-    void f() {
-      // This parses as a function declaration, but DR1223 makes the presence of
-      // 'auto' be used for disambiguation.
-      S(a)()->n; // ok, expression; expected-warning{{expression result unused}}
-      S(a)(int())->n; // ok, expression; expected-warning{{expression result unused}}
-      auto(a)()->n; // ok, function declaration
-      auto(b)(int())->n; // ok, function declaration
-      using T = decltype(a);
-      using T = auto() -> n;
-    }
-  }
-}
-
-namespace ellipsis {
-  template<typename...T>
-  struct S {
-    void e(S::S());
-    void f(S(...args[sizeof(T)])); // expected-note {{here}}
-    void f(S(...args)[sizeof(T)]); // expected-error {{redeclared}} expected-note {{here}}
-    void f(S ...args[sizeof(T)]); // expected-error {{redeclared}}
-    void g(S(...[sizeof(T)])); // expected-note {{here}} expected-warning {{ISO C++11 requires a parenthesized pack declaration to have a name}}
-    void g(S(...)[sizeof(T)]); // expected-error {{function cannot return array type}}
-    void g(S ...[sizeof(T)]); // expected-error {{redeclared}}
-    void h(T(...)); // function type, expected-error {{unexpanded parameter pack}}
-    void h(T...); // pack expansion, ok
-    void i(int(T...)); // expected-note {{here}}
-    void i(int(T...a)); // expected-error {{redeclared}}
-    void i(int(T, ...)); // function type, expected-error {{unexpanded parameter pack}}
-    void i(int(T, ...a)); // expected-error {{expected ')'}} expected-note {{to match}} expected-error {{unexpanded parameter pack}}
-    void j(int(int...)); // function type, ok
-    void j(int(int...a)); // expected-error {{does not contain any unexpanded parameter packs}}
-    void j(T(int...)); // expected-error {{unexpanded parameter pack}}
-    void j(T(T...)); // expected-error {{unexpanded parameter pack}}
-    void k(int(...)(T)); // expected-error {{cannot return function type}}
-    void k(int ...(T));
-    void l(int(&...)(T)); // expected-warning {{ISO C++11 requires a parenthesized pack declaration to have a name}}
-    void l(int(*...)(T)); // expected-warning {{ISO C++11 requires a parenthesized pack declaration to have a name}}
-    void l(int(S<int>::*...)(T)); // expected-warning {{ISO C++11 requires a parenthesized pack declaration to have a name}}
-  };
-}
-
-namespace braced_init_list {
-  struct X {
-    void foo() {}
-  };
-
-  void (*pf1)() {};
-  void (X::*pmf1)() {&X::foo};
-  void (X::*pmf2)() = {&X::foo};
-
-  void test() {
-    void (*pf2)() {};
-    void (X::*pmf3)() {&X::foo};
-    void (X::*pmf4)() = {&X::foo};
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-attributes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-attributes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-attributes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,283 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify -std=c++11 %s
-
-// Need std::initializer_list
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  // libc++'s implementation
-  template <class _E>
-  class initializer_list
-  {
-    const _E* __begin_;
-    size_t    __size_;
-
-    initializer_list(const _E* __b, size_t __s)
-      : __begin_(__b),
-        __size_(__s)
-    {}
-
-  public:
-    typedef _E        value_type;
-    typedef const _E& reference;
-    typedef const _E& const_reference;
-    typedef size_t    size_type;
-
-    typedef const _E* iterator;
-    typedef const _E* const_iterator;
-
-    initializer_list() : __begin_(nullptr), __size_(0) {}
-
-    size_t    size()  const {return __size_;}
-    const _E* begin() const {return __begin_;}
-    const _E* end()   const {return __begin_ + __size_;}
-  };
-}
-
-
-// Declaration syntax checks
-[[]] int before_attr;
-int [[]] between_attr;
-const [[]] int between_attr_2 = 0; // expected-error {{an attribute list cannot appear here}}
-int after_attr [[]];
-int * [[]] ptr_attr;
-int & [[]] ref_attr = after_attr;
-int & [[unknown]] ref_attr_2 = after_attr; // expected-warning {{unknown attribute 'unknown' ignored}}
-int & [[noreturn]] ref_attr_3 = after_attr; // expected-error {{'noreturn' attribute cannot be applied to types}}
-int && [[]] rref_attr = 0;
-int array_attr [1] [[]];
-alignas(8) int aligned_attr;
-[[test::valid(for 42 [very] **** '+' symbols went on a trip and had a "good"_time; the end.)]] int garbage_attr; // expected-warning {{unknown attribute 'valid' ignored}}
-[[,,,static, class, namespace,, inline, constexpr, mutable,, bitand, bitor::compl(!.*_ Cx.!U^*R),,,]] int more_garbage_attr; // expected-warning {{unknown attribute 'static' ignored}} \
-	// expected-warning {{unknown attribute 'class' ignored}} \
-	// expected-warning {{unknown attribute 'namespace' ignored}} \
-	// expected-warning {{unknown attribute 'inline' ignored}} \
-	// expected-warning {{unknown attribute 'constexpr' ignored}} \
-	// expected-warning {{unknown attribute 'mutable' ignored}} \
-	// expected-warning {{unknown attribute 'bitand' ignored}} \
-        // expected-warning {{unknown attribute 'compl' ignored}}
-[[u8"invalid!"]] int invalid_string_attr; // expected-error {{expected ']'}}
-void fn_attr () [[]];
-void noexcept_fn_attr () noexcept [[]];
-struct MemberFnOrder {
-  virtual void f() const volatile && noexcept [[]] final = 0;
-};
-struct [[]] struct_attr;
-class [[]] class_attr {};
-union [[]] union_attr;
-
-// Checks attributes placed at wrong syntactic locations of class specifiers.
-class [[]] [[]]
-  attr_after_class_name_decl [[]] [[]]; // expected-error {{an attribute list cannot appear here}}
-
-class [[]] [[]]
- attr_after_class_name_definition [[]] [[]] [[]]{}; // expected-error {{an attribute list cannot appear here}}
-
-class [[]] c {};
-class c [[]] [[]] x;
-class c [[]] [[]] y [[]] [[]];
-class c final [(int){0}];
-
-class base {};
-class [[]] [[]] final_class 
-  alignas(float) [[]] final // expected-error {{an attribute list cannot appear here}}
-  alignas(float) [[]] [[]] alignas(float): base{}; // expected-error {{an attribute list cannot appear here}}
-
-class [[]] [[]] final_class_another 
-  [[]] [[]] alignas(16) final // expected-error {{an attribute list cannot appear here}}
-  [[]] [[]] alignas(16) [[]]{}; // expected-error {{an attribute list cannot appear here}}
-
-[[]] struct with_init_declarators {} init_declarator;
-[[]] struct no_init_declarators; // expected-error {{an attribute list cannot appear here}}
-template<typename> [[]] struct no_init_declarators_template; // expected-error {{an attribute list cannot appear here}}
-void fn_with_structs() {
-  [[]] struct with_init_declarators {} init_declarator;
-  [[]] struct no_init_declarators; // expected-error {{an attribute list cannot appear here}}
-}
-[[]];
-struct ctordtor {
-  [[]] ctordtor();
-  [[]] ~ctordtor();
-};
-[[]] ctordtor::ctordtor() {}
-[[]] ctordtor::~ctordtor() {}
-extern "C++" [[]] int extern_attr;
-template <typename T> [[]] void template_attr ();
-[[]] [[]] int [[]] [[]] multi_attr [[]] [[]];
-
-int comma_attr [[,]];
-int scope_attr [[foo::]]; // expected-error {{expected identifier}}
-int (paren_attr) [[]]; // expected-error {{an attribute list cannot appear here}}
-unsigned [[]] int attr_in_decl_spec; // expected-error {{an attribute list cannot appear here}}
-unsigned [[]] int [[]] const double_decl_spec = 0; // expected-error 2{{an attribute list cannot appear here}}
-class foo {
-  void const_after_attr () [[]] const; // expected-error {{expected ';'}}
-};
-extern "C++" [[]] { } // expected-error {{an attribute list cannot appear here}}
-[[]] template <typename T> void before_template_attr (); // expected-error {{an attribute list cannot appear here}}
-[[]] namespace ns { int i; } // expected-error {{an attribute list cannot appear here}} expected-note {{declared here}}
-[[]] static_assert(true, ""); //expected-error {{an attribute list cannot appear here}}
-[[]] asm(""); // expected-error {{an attribute list cannot appear here}}
-
-[[]] using ns::i; // expected-error {{an attribute list cannot appear here}}
-[[unknown]] using namespace ns; // expected-warning {{unknown attribute 'unknown' ignored}}
-[[noreturn]] using namespace ns; // expected-error {{'noreturn' attribute only applies to functions and methods}}
-
-[[]] using T = int; // expected-error {{an attribute list cannot appear here}}
-using T [[]] = int; // ok
-template<typename T> using U [[]] = T;
-using ns::i [[]]; // expected-error {{an attribute list cannot appear here}}
-using [[]] ns::i; // expected-error {{an attribute list cannot appear here}}
-using T [[unknown]] = int; // expected-warning {{unknown attribute 'unknown' ignored}}
-using T [[noreturn]] = int; // expected-error {{'noreturn' attribute only applies to functions and methods}}
-using V = int; // expected-note {{previous}}
-using V [[gnu::vector_size(16)]] = int; // expected-error {{redefinition with different types}}
-
-auto trailing() -> [[]] const int; // expected-error {{an attribute list cannot appear here}}
-auto trailing() -> const [[]] int; // expected-error {{an attribute list cannot appear here}}
-auto trailing() -> const int [[]];
-auto trailing_2() -> struct struct_attr [[]];
-
-namespace N {
-  struct S {};
-};
-template<typename> struct Template {};
-
-// FIXME: Improve this diagnostic
-struct [[]] N::S s; // expected-error {{an attribute list cannot appear here}}
-struct [[]] Template<int> t; // expected-error {{an attribute list cannot appear here}}
-struct [[]] ::template Template<int> u; // expected-error {{an attribute list cannot appear here}}
-template struct [[]] Template<char>; // expected-error {{an attribute list cannot appear here}}
-template <> struct [[]] Template<void>;
-
-enum [[]] E1 {};
-enum [[]] E2; // expected-error {{forbids forward references}}
-enum [[]] E1;
-enum [[]] E3 : int;
-enum [[]] {
-  k_123 [[]] = 123 // expected-error {{an attribute list cannot appear here}}
-};
-enum [[]] E1 e; // expected-error {{an attribute list cannot appear here}}
-enum [[]] class E4 { }; // expected-error {{an attribute list cannot appear here}}
-enum struct [[]] E5;
-
-struct S {
-  friend int f [[]] (); // expected-FIXME{{an attribute list cannot appear here}}
-  friend int f1 [[noreturn]] (); //expected-error{{an attribute list cannot appear here}}
-  friend int f2 [[]] [[noreturn]] () {}
-  [[]] friend int g(); // expected-error{{an attribute list cannot appear here}}
-  [[]] friend int h() {
-  }
-  [[]] friend int f3(), f4(), f5(); // expected-error{{an attribute list cannot appear here}}
-  friend int f6 [[noreturn]] (), f7 [[noreturn]] (), f8 [[noreturn]] (); // expected-error3 {{an attribute list cannot appear here}}
-  friend class [[]] C; // expected-error{{an attribute list cannot appear here}}
-  [[]] friend class D; // expected-error{{an attribute list cannot appear here}}
-  [[]] friend int; // expected-error{{an attribute list cannot appear here}}
-};
-template<typename T> void tmpl(T) {}
-template void tmpl [[]] (int); // expected-FIXME {{an attribute list cannot appear here}}
-template [[]] void tmpl(char); // expected-error {{an attribute list cannot appear here}}
-template void [[]] tmpl(short);
-
-// Argument tests
-alignas int aligned_no_params; // expected-error {{expected '('}}
-alignas(i) int aligned_nonconst; // expected-error {{'aligned' attribute requires integer constant}} expected-note {{read of non-const variable 'i'}}
-
-// Statement tests
-void foo () {
-  [[]] ;
-  [[]] { }
-  [[]] if (0) { }
-  [[]] for (;;);
-  [[]] do {
-    [[]] continue;
-  } while (0);
-  [[]] while (0);
-  
-  [[]] switch (i) {
-    [[]] case 0:
-    [[]] default:
-      [[]] break;
-  }
-  
-  [[]] goto there;
-  [[]] there:
-  
-  [[]] try {
-  } [[]] catch (...) { // expected-error {{an attribute list cannot appear here}}
-  }
-  struct S { int arr[2]; } s;
-  (void)s.arr[ [] { return 0; }() ]; // expected-error {{C++11 only allows consecutive left square brackets when introducing an attribute}}
-  int n = __builtin_offsetof(S, arr[ [] { return 0; }() ]); // expected-error {{C++11 only allows consecutive left square brackets when introducing an attribute}}
-
-  void bar [[noreturn]] ([[]] int i, [[]] int j);
-  using FuncType = void ([[]] int);
-  void baz([[]]...); // expected-error {{expected parameter declarator}}
-
-  [[]] return;
-}
-
-template<typename...Ts> void variadic() {
-  void bar [[noreturn...]] (); // expected-error {{attribute 'noreturn' cannot be used as an attribute pack}}
-}
-
-// Expression tests
-void bar () {
-  // FIXME: GCC accepts [[gnu::noreturn]] on a lambda, even though it appertains
-  // to the operator()'s type, and GCC does not otherwise accept attributes
-  // applied to types. Use that to test this.
-  [] () [[gnu::noreturn]] { return; } (); // expected-warning {{attribute 'noreturn' ignored}} FIXME-error {{should not return}}
-  [] () [[gnu::noreturn]] { throw; } (); // expected-warning {{attribute 'noreturn' ignored}}
-  new int[42][[]][5][[]]{};
-}
-
-// Condition tests
-void baz () {
-  if ([[unknown]] bool b = true) { // expected-warning {{unknown attribute 'unknown' ignored}}
-    switch ([[unknown]] int n { 42 }) { // expected-warning {{unknown attribute 'unknown' ignored}}
-    default:
-      for ([[unknown]] int n = 0; [[unknown]] char b = n < 5; ++b) { // expected-warning 2{{unknown attribute 'unknown' ignored}}
-      }
-    }
-  }
-  int x;
-  // An attribute can be applied to an expression-statement, such as the first
-  // statement in a for. But it can't be applied to a condition which is an
-  // expression.
-  for ([[]] x = 0; ; ) {} // expected-error {{an attribute list cannot appear here}}
-  for (; [[]] x < 5; ) {} // expected-error {{an attribute list cannot appear here}}
-  while ([[]] bool k { false }) {
-  }
-  while ([[]] true) { // expected-error {{an attribute list cannot appear here}}
-  }
-  do {
-  } while ([[]] false); // expected-error {{an attribute list cannot appear here}}
-
-  for ([[unknown]] int n : { 1, 2, 3 }) { // expected-warning {{unknown attribute 'unknown' ignored}}
-  }
-}
-
-enum class __attribute__((visibility("hidden"))) SecretKeepers {
-  one, /* rest are deprecated */ two, three
-};
-enum class [[]] EvenMoreSecrets {};
-
-namespace arguments {
-  void f[[gnu::format(printf, 1, 2)]](const char*, ...);
-  void g() [[unknown::foo(arguments of attributes from unknown namespace other than 'gnu' namespace are ignored... blah...)]]; // expected-warning {{unknown attribute 'foo' ignored}}
-}
-
-// Forbid attributes on decl specifiers.
-unsigned [[gnu::used]] static int [[gnu::unused]] v1; // expected-error {{'unused' attribute cannot be applied to types}} \
-           expected-error {{an attribute list cannot appear here}}
-typedef [[gnu::used]] unsigned long [[gnu::unused]] v2; // expected-error {{'unused' attribute cannot be applied to types}} \
-          expected-error {{an attribute list cannot appear here}}
-int [[carries_dependency]] foo(int [[carries_dependency]] x); // expected-error 2{{'carries_dependency' attribute cannot be applied to types}}
-
-// Forbid [[gnu::...]] attributes on declarator chunks.
-int *[[gnu::unused]] v3; // expected-warning {{attribute 'unused' ignored}}
-int v4[2][[gnu::unused]]; // expected-warning {{attribute 'unused' ignored}}
-int v5()[[gnu::unused]]; // expected-warning {{attribute 'unused' ignored}}
-
-[[attribute_declaration]]; // expected-warning {{unknown attribute 'attribute_declaration' ignored}}
-[[noreturn]]; // expected-error {{'noreturn' attribute only applies to functions and methods}}
-[[carries_dependency]]; // expected-error {{'carries_dependency' attribute only applies to functions, methods, and parameters}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-condition.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-condition.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-condition.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct S { S(int); operator bool(); };
-
-void f() {
-  int a;
-  typedef int n;
-
-  while (a) ;
-  while (int x) ; // expected-error {{variable declaration in condition must have an initializer}}
-  while (float x = 0) ;
-  if (const int x = a) ; // expected-warning{{empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-  switch (int x = a+10) {}
-  for (; int x = ++a; ) ;
-
-  if (S(a)) {} // ok
-  if (S(a) = 0) {} // ok
-  if (S(a) == 0) {} // ok
-
-  if (S(n)) {} // expected-error {{unexpected type name 'n': expected expression}}
-  if (S(n) = 0) {} // ok
-  if (S(n) == 0) {} // expected-error {{unexpected type name 'n': expected expression}}
-
-  if (S b(a)) {} // expected-error {{variable declaration in condition cannot have a parenthesized initializer}}
-
-  if (S b(n)) {} // expected-error {{a function type is not allowed here}} expected-error {{must have an initializer}}
-  if (S b(n) = 0) {} // expected-error {{a function type is not allowed here}}
-  if (S b(n) == 0) {} // expected-error {{a function type is not allowed here}} expected-error {{did you mean '='?}}
-
-  S s(a);
-  if (S{s}) {} // ok
-  if (S a{s}) {} // ok
-  if (S a = {s}) {} // ok
-  if (S a == {s}) {} // expected-error {{did you mean '='?}}
-
-  if (S(b){a}) {} // ok
-  if (S(b) = {a}) {} // ok
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -std=c++11 -pedantic-errors -triple x86_64-linux-gnu %s
-
-// Make sure we know these are legitimate commas and not typos for ';'.
-namespace Commas {
-  int a,
-  b [[ ]],
-  c alignas(double);
-}
-
-struct S {};
-enum E { e, };
-
-auto f() -> struct S {
-  return S();
-}
-auto g() -> enum E {
-  return E();
-}
-
-class ExtraSemiAfterMemFn {
-  // Due to a peculiarity in the C++11 grammar, a deleted or defaulted function
-  // is permitted to be followed by either one or two semicolons.
-  void f() = delete // expected-error {{expected ';' after delete}}
-  void g() = delete; // ok
-  void h() = delete;; // ok
-  void i() = delete;;; // expected-error {{extra ';' after member function definition}}
-};
-
-int *const const p = 0; // expected-error {{duplicate 'const' declaration specifier}}
-const const int *q = 0; // expected-error {{duplicate 'const' declaration specifier}}
-
-struct MultiCV {
-  void f() const const; // expected-error {{duplicate 'const' declaration specifier}}
-};
-
-static_assert(something, ""); // expected-error {{undeclared identifier}}
-
-// PR9903
-struct SS {
-  typedef void d() = default; // expected-error {{function definition declared 'typedef'}} expected-error {{only special member functions may be defaulted}}
-};
-
-using PR14855 = int S::; // expected-error {{expected ';' after alias declaration}}
-
-// Ensure that 'this' has a const-qualified type in a trailing return type for
-// a constexpr function.
-struct ConstexprTrailingReturn {
-  int n;
-  constexpr auto f() const -> decltype((n));
-};
-constexpr const int &ConstexprTrailingReturn::f() const { return n; }
-
-namespace TestIsValidAfterTypeSpecifier {
-struct s {} v;
-
-struct s
-thread_local tl;
-
-struct s
-&r0 = v;
-
-struct s
-&&r1 = s();
-
-struct s
-bitand r2 = v;
-
-struct s
-and r3 = s();
-
-enum E {};
-enum E
-[[]] e;
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-for-range.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-for-range.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-for-range.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-template<typename T, typename U>
-struct pair {};
-
-template<typename T, typename U>
-struct map {
-  typedef pair<T,U> *iterator;
-  iterator begin();
-  iterator end();
-};
-
-template<typename T, typename U>
-pair<T,U> &tie(T &, U &);
-
-int foo(map<char*,int> &m) {
-  char *p;
-  int n;
-
-  for (pair<char*,int> x : m) {
-    (void)x;
-  }
-
-  for (tie(p, n) : m) { // expected-error {{for range declaration must declare a variable}}
-    (void)p;
-    (void)n;
-  }
-
-  return n;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-in-cxx98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-in-cxx98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-in-cxx98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify %s
-
-inline namespace N { // expected-warning{{inline namespaces are a C++11 feature}}
-struct X {
-  template<typename ...Args> // expected-warning{{variadic templates are a C++11 extension}}
-  void f(Args &&...) &; // expected-warning{{rvalue references are a C++11 extension}} \
-  // expected-warning{{reference qualifiers on functions are a C++11 extension}}
-};
-}
-
-struct B {
-  virtual void f();
-  virtual void g();
-};
-struct D final : B { // expected-warning {{'final' keyword is a C++11 extension}}
-  virtual void f() override; // expected-warning {{'override' keyword is a C++11 extension}}
-  virtual void g() final; // expected-warning {{'final' keyword is a C++11 extension}}
-};
-
-void NewBracedInitList() {
-  // A warning on this would be sufficient once we can handle it correctly.
-  new int {}; // expected-error {{}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-lambda-expressions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-lambda-expressions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-lambda-expressions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-unused-value -verify -std=c++11 %s
-
-enum E { e };
-
-class C {
-
-  int f() {
-    int foo, bar;
-
-    []; // expected-error {{expected body of lambda expression}}
-    [+] {}; // expected-error {{expected variable name or 'this' in lambda capture list}}
-    [foo+] {}; // expected-error {{expected ',' or ']' in lambda capture list}}
-    [foo,&this] {}; // expected-error {{'this' cannot be captured by reference}}
-    [&this] {}; // expected-error {{'this' cannot be captured by reference}}
-    [&,] {}; // expected-error {{expected variable name or 'this' in lambda capture list}}
-    [=,] {}; // expected-error {{expected variable name or 'this' in lambda capture list}}
-    [] {}; 
-    [=] (int i) {}; 
-    [&] (int) mutable -> void {}; 
-    [foo,bar] () { return 3; }; 
-    [=,&foo] () {}; 
-    [&,foo] () {}; 
-    [this] () {}; 
-    [] () -> class C { return C(); };
-    [] () -> enum E { return e; };
-
-    [] -> int { return 0; }; // expected-error{{lambda requires '()' before return type}}
-    [] mutable -> int { return 0; }; // expected-error{{lambda requires '()' before 'mutable'}}
-    [](int) -> {}; // PR13652 expected-error {{expected a type}}
-    return 1;
-  }
-
-  void designator_or_lambda() {
-    typedef int T; 
-    const int b = 0; 
-    const int c = 1;
-    int a1[1] = {[b] (T()) {}}; // expected-error{{no viable conversion from '<lambda}}
-    int a2[1] = {[b] = 1 };
-    int a3[1] = {[b,c] = 1 }; // expected-error{{expected body of lambda expression}}
-    int a4[1] = {[&b] = 1 }; // expected-error{{integral constant expression must have integral or unscoped enumeration type, not 'const int *'}}
-    int a5[3] = { []{return 0;}() };
-    int a6[1] = {[this] = 1 }; // expected-error{{integral constant expression must have integral or unscoped enumeration type, not 'C *'}}
-  }
-
-  void delete_lambda(int *p) {
-    delete [] p;
-    delete [] (int*) { new int }; // ok, compound-literal, not lambda
-    delete [] { return new int; } (); // expected-error{{expected expression}}
-    delete [&] { return new int; } (); // ok, lambda
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-literal-operators.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-literal-operators.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-literal-operators.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-void operator "" (const char *); // expected-error {{expected identifier}}
-void operator "k" foo(const char *); // \
-  expected-error {{string literal after 'operator' must be '""'}} \
-  expected-warning{{user-defined literal suffixes not starting with '_' are reserved}}
-void operator "" tester (const char *); // \
-  expected-warning{{user-defined literal suffixes not starting with '_' are reserved}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-member-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-member-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-member-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// Make sure we don't run off the end of the stream when parsing a deferred
-// initializer.
-int a; // expected-note {{previous}}
-struct S {
-  int n = 4 + ; // expected-error {{expected expression}}
-} a; // expected-error {{redefinition}}
-
-// Make sure we use all of the tokens.
-struct T {
-  int a = 1 // expected-error {{expected ';' at end of declaration list}}
-  int b = 2;
-  int c = b; // expected-error {{undeclared identifier}}
-};
-
-// Test recovery for bad constructor initializers
-
-struct R1 {
-  int a;
-  R1() : a {}
-}; // expected-error {{expected '{' or ','}}
-
-// Test correct parsing.
-
-struct V1 {
-  int a, b;
-  V1() : a(), b{} {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-override-control-keywords.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-override-control-keywords.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-override-control-keywords.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-struct Base {
-  virtual void override();
-};
-
-struct S : Base {
-  virtual void final() final;
-  virtual void override() override;
-};
-
-struct T {
-  // virt-specifier-seq is only valid in member-declarators, and a function definition is not a member-declarator.
-  // FIXME: This currently doesn't work.
-  // virtual void f() const override { } 
-};
-
-struct override;
-struct Base2 {
-  virtual override override(int override);
-};
-
-struct A : Base2 {
-  virtual struct override override(int override) override;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-rvalue-reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-rvalue-reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx0x-rvalue-reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-int && r1(int &&a);
-
-typedef int && R;
-void r2(const R a) {
-  int & &&ar = a; // expected-error{{'ar' declared as a reference to a reference}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx11-base-spec-attributes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx11-base-spec-attributes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx11-base-spec-attributes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-struct A {};
-struct B : [[]] A {};
-struct C : [[]] virtual A {};
-struct D : [[]] public virtual A {};
-struct E : public [[]] virtual A {}; // expected-error {{an attribute list cannot appear here}}
-struct F : virtual [[]] public A {}; // expected-error {{an attribute list cannot appear here}}
-struct G : [[noreturn]] A {}; // expected-error {{'noreturn' attribute cannot be applied to a base specifier}}
-struct H : [[unknown::foobar]] A {}; // expected-warning {{unknown attribute 'foobar' ignored}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx11-brace-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx11-brace-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx11-brace-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-
-struct S {
-  S(int, int) {}
-};
-
-void f(int, S const&, int) {}
-
-void test1()
-{
-  S X1{1, 1,};
-  S X2 = {1, 1,};
-
-  f(0, {1, 1}, 0);
-}
-
-namespace PR14948 {
-  template<typename T> struct Q { static T x; };
-
-  struct X {};
-  template<> X Q<X>::x {};
-  template<> int Q<int[]>::x[] { 1, 2, 3 };
-  template<> int Q<int>::x { 1 };
-
-  template<typename T> T Q<T>::x {};
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx11-stmt-attributes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx11-stmt-attributes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx11-stmt-attributes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify -std=c++11 %s
-
-void foo(int i) {
-
-  [[unknown_attribute]] ; // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-  [[unknown_attribute]] { } // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-  [[unknown_attribute]] if (0) { } // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-  [[unknown_attribute]] for (;;); // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-  [[unknown_attribute]] do { // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-    [[unknown_attribute]] continue; // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-  } while (0);
-  [[unknown_attribute]] while (0); // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-
-  [[unknown_attribute]] switch (i) { // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-    [[unknown_attribute]] case 0: // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-    [[unknown_attribute]] default: // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-      [[unknown_attribute]] break; // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-  }
-
-  [[unknown_attribute]] goto here; // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-  [[unknown_attribute]] here: // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-
-  [[unknown_attribute]] try { // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-  } catch (...) {
-  }
-
-  [[unknown_attribute]] return; // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-	 
-
-  alignas(8) ; // expected-error {{'alignas' attribute cannot be applied to a statement}}
-  [[noreturn]] { } // expected-error {{'noreturn' attribute cannot be applied to a statement}}
-  [[noreturn]] if (0) { } // expected-error {{'noreturn' attribute cannot be applied to a statement}}
-  [[noreturn]] for (;;); // expected-error {{'noreturn' attribute cannot be applied to a statement}}
-  [[noreturn]] do { // expected-error {{'noreturn' attribute cannot be applied to a statement}}
-    [[unavailable]] continue; // expected-warning {{unknown attribute 'unavailable' ignored}}
-  } while (0);
-  [[unknown_attributqqq]] while (0); // expected-warning {{unknown attribute 'unknown_attributqqq' ignored}}
-	// TODO: remove 'qqq' part and enjoy 'empty loop body' warning here (DiagnoseEmptyLoopBody)
-
-  [[unknown_attribute]] while (0); // expected-warning {{unknown attribute 'unknown_attribute' ignored}}
-
-  [[unused]] switch (i) { // expected-warning {{unknown attribute 'unused' ignored}}
-    [[uuid]] case 0: // expected-warning {{unknown attribute 'uuid' ignored}}
-    [[visibility]] default: // expected-warning {{unknown attribute 'visibility' ignored}}
-      [[carries_dependency]] break; // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-  }
-
-  [[fastcall]] goto there; // expected-warning {{unknown attribute 'fastcall' ignored}}
-  [[noinline]] there: // expected-warning {{unknown attribute 'noinline' ignored}}
-
-  [[lock_returned]] try { // expected-warning {{unknown attribute 'lock_returned' ignored}}
-  } catch (...) {
-  }
-
-  [[weakref]] return; // expected-warning {{unknown attribute 'weakref' ignored}}
-
-  [[carries_dependency]] ; // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-  [[carries_dependency]] { } // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-  [[carries_dependency]] if (0) { } // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-  [[carries_dependency]] for (;;); // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-  [[carries_dependency]] do { // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-    [[carries_dependency]] continue; // expected-error {{'carries_dependency' attribute cannot be applied to a statement}} ignored}}
-  } while (0);
-  [[carries_dependency]] while (0); // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-
-  [[carries_dependency]] switch (i) { // expected-error {{'carries_dependency' attribute cannot be applied to a statement}} ignored}}
-    [[carries_dependency]] case 0: // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-    [[carries_dependency]] default: // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-      [[carries_dependency]] break; // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-  }
-
-  [[carries_dependency]] goto here; // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-
-  [[carries_dependency]] try { // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-  } catch (...) {
-  }
-
-  [[carries_dependency]] return; // expected-error {{'carries_dependency' attribute cannot be applied to a statement}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx11-type-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx11-type-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx11-type-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -verify %s -std=c++11 -fcxx-exceptions
-
-// Tests for parsing of type-specifier-seq
-
-struct S {
-  operator constexpr int(); // expected-error{{type name does not allow constexpr}}
-};
-enum E { e };
-
-void f() {
-  try {
-    (void) new constexpr int; // expected-error{{type name does not allow constexpr}}
-  } catch (constexpr int) { // expected-error{{type name does not allow constexpr}}
-  }
-
-  // These parse as type definitions, not as type references with braced
-  // initializers. Sad but true...
-  (void) new struct S {}; // expected-error{{'S' can not be defined in a type specifier}}
-  (void) new enum E { e }; // expected-error{{'E' can not be defined in a type specifier}}
-}
-
-// And for trailing-type-specifier-seq
-
-auto f() -> unknown; // expected-error{{unknown type name 'unknown'}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/cxx11-user-defined-literals.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/cxx11-user-defined-literals.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/cxx11-user-defined-literals.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,113 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s -fms-extensions -triple x86_64-apple-darwin9.0.0
-
-// A ud-suffix cannot be used on string literals in a whole bunch of contexts:
-
-#include "foo"_bar // expected-error {{expected "FILENAME" or <FILENAME>}}
-#line 1 "foo"_bar // expected-error {{user-defined suffix cannot be used here}}
-# 1 "foo"_bar 1 // expected-error {{user-defined suffix cannot be used here}}
-#ident "foo"_bar // expected-error {{user-defined suffix cannot be used here}}
-_Pragma("foo"_bar) // expected-error {{user-defined suffix cannot be used here}}
-#pragma comment(lib, "foo"_bar) // expected-error {{user-defined suffix cannot be used here}}
-_Pragma("comment(lib, \"foo\"_bar)") // expected-error {{user-defined suffix cannot be used here}}
-#pragma message "hi"_there // expected-error {{user-defined suffix cannot be used here}} expected-warning {{hi}}
-#pragma push_macro("foo"_bar) // expected-error {{user-defined suffix cannot be used here}}
-#if __has_warning("-Wan-island-to-discover"_bar) // expected-error {{user-defined suffix cannot be used here}}
-#elif __has_include("foo"_bar) // expected-error {{expected "FILENAME" or <FILENAME>}}
-#endif
-
-extern "C++"_x {} // expected-error {{user-defined suffix cannot be used here}} expected-error {{unknown linkage language}}
-
-int f() {
-  asm("mov %eax, %rdx"_foo); // expected-error {{user-defined suffix cannot be used here}}
-}
-
-static_assert(true, "foo"_bar); // expected-error {{user-defined suffix cannot be used here}}
-
-int cake() __attribute__((availability(macosx, unavailable, message = "is a lie"_x))); // expected-error {{user-defined suffix cannot be used here}}
-
-// A ud-suffix cannot be used on character literals in preprocessor constant
-// expressions:
-#if 'x'_y - u'x'_z // expected-error 2{{character literal with user-defined suffix cannot be used in preprocessor constant expression}}
-#error error
-#endif
-
-// A ud-suffix cannot be used on integer literals in preprocessor constant
-// expressions:
-#if 0_foo // expected-error {{integer literal with user-defined suffix cannot be used in preprocessor constant expression}}
-#error error
-#endif
-
-// But they can appear in expressions.
-constexpr char operator"" _id(char c) { return c; }
-constexpr wchar_t operator"" _id(wchar_t c) { return c; }
-constexpr char16_t operator"" _id(char16_t c) { return c; }
-constexpr char32_t operator"" _id(char32_t c) { return c; }
-
-using size_t = decltype(sizeof(int));
-constexpr const char operator"" _id(const char *p, size_t n) { return *p; }
-constexpr const wchar_t operator"" _id(const wchar_t *p, size_t n) { return *p; }
-constexpr const char16_t operator"" _id(const char16_t *p, size_t n) { return *p; }
-constexpr const char32_t operator"" _id(const char32_t *p, size_t n) { return *p; }
-
-constexpr unsigned long long operator"" _id(unsigned long long n) { return n; }
-constexpr long double operator"" _id(long double d) { return d; }
-
-template<int n> struct S {};
-S<"a"_id> sa;
-S<L"b"_id> sb;
-S<u8"c"_id> sc;
-S<u"d"_id> sd;
-S<U"e"_id> se;
-
-S<'w'_id> sw;
-S<L'x'_id> sx;
-S<u'y'_id> sy;
-S<U'z'_id> sz;
-
-S<100_id> sn;
-S<(int)1.3_id> sf;
-
-void h() {
-  (void)"test"_id "test" L"test";
-}
-
-// Test source location for suffix is known
-const char *p =
-  "foo\nbar" R"x(
-  erk
-  flux
-  )x" "eep\x1f"\
-_no_such_suffix // expected-error {{'operator "" _no_such_suffix'}}
-"and a bit more"
-"and another suffix"_no_such_suffix;
-
-char c =
-  '\x14'\
-_no_such_suffix; // expected-error {{'operator "" _no_such_suffix'}}
-
-int &r =
-1234567\
-_no_such_suffix; // expected-error {{'operator "" _no_such_suffix'}}
-
-int k =
-1234567.89\
-_no_such_suffix; // expected-error {{'operator "" _no_such_suffix'}}
-
-// Make sure we handle more interesting ways of writing a string literal which
-// is "" in translation phase 7.
-void operator "\
-" _foo(unsigned long long); // ok
-
-void operator R"xyzzy()xyzzy" _foo(long double); // ok
-
-void operator"" "" R"()" "" _foo(const char *); // ok
-
-void operator ""_no_space(const char *); // ok
-
-// Ensure we diagnose the bad cases.
-void operator "\0" _non_empty(const char *); // expected-error {{must be '""'}}
-void operator L"" _not_char(const char *); // expected-error {{cannot have an encoding prefix}}
-void operator "" ""
-U"" // expected-error {{cannot have an encoding prefix}}
-"" _also_not_char(const char *);
-void operator "" u8"" "\u0123" "hello"_all_of_the_things ""(const char*); // expected-error {{must be '""'}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/declarators.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/declarators.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/declarators.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,114 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
-
-extern int a1[];
-
-void f0();
-void f1(int [*]);
-void f2(int [const *]);
-void f3(int [volatile const*]);
-int f4(*XX)(void); /* expected-error {{cannot return}} expected-warning {{type specifier missing, defaults to 'int'}} */
-
-char ((((*X))));
-
-void (*signal(int, void (*)(int)))(int);
-
-int aaaa, ***C, * const D, B(int);
-
-int *A;
-
-struct str;
-
-void test2(int *P, int A) {
-  struct str;
-
-  // Hard case for array decl, not Array[*].
-  int Array[*(int*)P+A];
-}
-
-typedef int atype;
-void test3(x, 
-           atype         /* expected-error {{unexpected type name 'atype': expected identifier}} */
-          ) int x, atype; {}
-
-void test4(x, x) int x; {} /* expected-error {{redefinition of parameter 'x'}} */
-
-
-// PR3031
-int (test5), ;  // expected-error {{expected identifier or '('}}
-
-
-
-// PR3963 & rdar://6759604 - test error recovery for mistyped "typenames".
-
-foo_t *d;      // expected-error {{unknown type name 'foo_t'}}
-foo_t a;   // expected-error {{unknown type name 'foo_t'}}
-int test6() { return a; }  // a should be declared.
-
-// Use of tagged type without tag. rdar://6783347
-struct xyz { int y; };
-enum myenum { ASDFAS };
-xyz b;         // expected-error {{must use 'struct' tag to refer to type 'xyz'}}
-myenum c;      // expected-error {{must use 'enum' tag to refer to type 'myenum'}}
-
-float *test7() {
-  // We should recover 'b' by parsing it with a valid type of "struct xyz", which
-  // allows us to diagnose other bad things done with y, such as this.
-  return &b.y;   // expected-warning {{incompatible pointer types returning 'int *' from a function with result type 'float *'}}
-}
-
-struct xyz test8() { return a; }  // a should be be marked invalid, no diag.
-
-
-// Verify that implicit int still works.
-static f;      // expected-warning {{type specifier missing, defaults to 'int'}}
-static g = 4;  // expected-warning {{type specifier missing, defaults to 'int'}}
-static h        // expected-warning {{type specifier missing, defaults to 'int'}} 
-      __asm__("foo");
-
-
-struct test9 {
-  int x  // expected-error {{expected ';' at end of declaration list}}
-  int y;
-  int z  // expected-warning {{expected ';' at end of declaration list}}
-};
-
-// PR6208
-struct test10 { int a; } static test10x;
-struct test11 { int a; } const test11x;
-
-// PR6216
-void test12() {
-  (void)__builtin_offsetof(struct { char c; int i; }, i);
-}
-
-// rdar://7608537
-struct test13 { int a; } (test13x);
-
-// <rdar://problem/8044088>
-struct X<foo::int> { }; // expected-error{{expected identifier or '('}}
-
-
-// PR7617 - error recovery on missing ;.
-
-void test14()  // expected-error {{expected ';' after top level declarator}}
-
-void test14a();
-void *test14b = (void*)test14a; // Make sure test14a didn't get skipped.
-
-// rdar://problem/8358508
-long struct X { int x; } test15(); // expected-error {{'long struct' is invalid}}
-
-void test16(i) int i j; { } // expected-error {{expected ';' at end of declaration}}
-void test17(i, j) int i, j k; { } // expected-error {{expected ';' at end of declaration}}
-
-
-// PR12595
-void test18() {
-  int x = 4+(5-12));  // expected-error {{extraneous ')' before ';'}}
-}
-
-enum E1 { e1 }: // expected-error {{expected ';'}}
-struct EnumBitfield {
-  enum E2 { e2 } : 4; // ok
-  struct S { int n; }: // expected-error {{expected ';'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/designator.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/designator.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/designator.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -pedantic
-
-int X[] = {
-  [4]4,       // expected-warning {{use of GNU 'missing =' extension in designator}}
-  [5] = 7
-};
-
-struct foo {
-  int arr[10];
-};
-
-struct foo Y[10] = {
-  [4] .arr [2] = 4,
-
-  // This is not the GNU array init designator extension.
-  [4] .arr [2] 4  // expected-error {{expected '=' or another designator}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/empty-translation-unit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/empty-translation-unit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/empty-translation-unit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c99 -pedantic -W -verify %s
-// RUN: %clang_cc1 -fsyntax-only -x c++ -std=c++03 -pedantic-errors -W %s
-
-#include "completely-empty-header-file.h"
-// no-warning -- an empty file is OK
-
-#define A_MACRO_IS_NOT_GOOD_ENOUGH 1
-
-// In C we should get this warning, but in C++ we shouldn't.
-// expected-warning{{ISO C requires a translation unit to contain at least one declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/encode.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/encode.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/encode.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-int main(void) {
-  const char ch = @encode(char *)[0];
-  char c = @encode(char *)[0] + 4;
-  return c;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/enhanced-proto-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/enhanced-proto-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/enhanced-proto-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at protocol MyProto1 
- at optional
-- (void) FOO;
- at optional
-- (void) FOO1;
- at required 
-- (void) REQ;
- at optional
- at end
-
- at protocol  MyProto2 <MyProto1>
-- (void) FOO2;
- at optional
-- (void) FOO3;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/expressions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/expressions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/expressions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void test1() {
-  if (sizeof (int){ 1}) {}   // sizeof compound literal
-  if (sizeof (int)) {}       // sizeof type
-
-  (void)(int)4;   // cast.
-  (void)(int){4}; // compound literal.
-
-  int A = (struct{ int a;}){ 1}.a;
-}
-
-int test2(int a, int b) {
-  return a ? (void)a,b : a;
-}
-
-int test3(int a, int b, int c) {
-  return a = b = c;
-}
-
-int test4() {
-  test4();
-  return 0;
-}
-
-struct X0 { struct { struct { int c[10][9]; } b; } a; };
-
-int test_offsetof() {
-  (void)__builtin_offsetof(struct X0, a.b.c[4][5]);
-  return 0;
-}
-
-void test_sizeof(){
-        int arr[10];
-        (void)sizeof arr[0];
-        (void)sizeof(arr[0]);
-        (void)sizeof(arr)[0];
-}
-
-// PR3418
-int test_leading_extension() {
-  __extension__ (*(char*)0) = 1; // expected-warning {{indirection of non-volatile null pointer}} \
-                                 // expected-note {{consider using __builtin_trap}}
-  return 0;
-}
-
-// PR3972
-int test5(int);
-int test6(void) { 
-  return test5(      // expected-note {{to match}}
-               test5(1)
-                 ; // expected-error {{expected ')'}}
-}
-
-// PR8394
-void test7() {
-    ({} // expected-note {{to match}}
-    ;   // expected-error {{expected ')'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/expressions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/expressions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/expressions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void test1() {
-  @"s";            // expected-warning {{expression result unused}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/extension.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/extension.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/extension.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-/* RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify -std=c89
- */
-
-/* Top level extension marker. */
-
-__extension__ typedef struct
-{
-    long long int quot; 
-    long long int rem; 
-} lldiv_t;
-
-
-/* Decl/expr __extension__ marker. */
-void bar() {
-  __extension__ int i;
-  int j;
-  __extension__ (j = 10LL);
-  __extension__ j = 10LL; /* expected-warning {{'long long' is an extension}} */
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/for.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/for.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/for.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f1() {
-  int n;
-
-  for (n = 0; n < 10; n++);
-
-  for (n = 0 n < 10; n++); // expected-error {{expected ';' in 'for'}}
-  for (n = 0; n < 10 n++); // expected-error {{expected ';' in 'for'}}
-
-  for (int n = 0 n < 10; n++); // expected-error {{expected ';' in 'for'}}
-  for (int n = 0; n < 10 n++); // expected-error {{expected ';' in 'for'}}
-
-  for (n = 0 bool b = n < 10; n++); // expected-error {{expected ';' in 'for'}}
-  for (n = 0; bool b = n < 10 n++); // expected-error {{expected ';' in 'for'}}
-
-  for (n = 0 n < 10 n++); // expected-error 2{{expected ';' in 'for'}}
-
-  for (;); // expected-error {{expected ';' in 'for'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/function-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/function-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/function-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-/* RUN: %clang_cc1 %s -ast-print
- */
-
-void foo() {
-  int X;
-  X = sizeof(void (*(*)())());
-  X = sizeof(int(*)(int, float, ...));
-  X = sizeof(void (*(int arga, void (*argb)(double Y)))(void* Z));
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/goto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/goto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/goto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only -verify %s
-*/
-
-void test1() { 
-  goto ; /* expected-error {{expected identifier}} */
-}
-
-
-void test2() {
-  l:  /* expected-note {{previous definition is here}} */
-  
-  {
-    __label__ l;
-  l: goto l;
-  }
-  
-  {
-    __label__ l;
-    __label__ h;   /* expected-error {{use of undeclared label 'h'}} */
-  l: goto l;
-  }
-
-  /* PR3429 & rdar://8287027
-   */
-  {
-  l:  /* expected-error {{redefinition of label 'l'}} */
-    ;
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/if-scope-c90.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/if-scope-c90.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/if-scope-c90.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c90 %s
-// expected-no-diagnostics
-
-int f (int z)
-{ 
-  if (z > (int) sizeof (enum {a, b}))
-      return a;
-   return b;
-} 

Modified: trunk/contrib/llvm/tools/clang/test/Parser/if-scope-c99.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/if-scope-c99.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/if-scope-c99.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c99 %s
-
-int f (int z)
-{ 
-   if (z > (int) sizeof (enum {a, b}))
-      return a;
-   return b; // expected-error{{use of undeclared identifier}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/implicit-casts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/implicit-casts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/implicit-casts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-_Complex double X;
-void test1(int c) {
-  X = 5;
-}
-void test2() {
-  int i;
-  double d = i;
-  double _Complex a = 5;
-
-  test1(a);
-  a = 5;
-  d = i;
-}
-int test3() {
-  int a[2];
-  a[0] = test3; // expected-warning{{incompatible pointer to integer conversion assigning to 'int' from 'int ()'}}
-  return 0;
-}
-short x; void test4(char c) { x += c; }
-int y; void test5(char c) { y += c; }

Modified: trunk/contrib/llvm/tools/clang/test/Parser/knr_parameter_attributes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/knr_parameter_attributes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/knr_parameter_attributes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -W -Wall -Werror -verify %s
-// expected-no-diagnostics
-
-int f(int i __attribute__((__unused__)))
-{
-    return 0;
-}
-int g(i)
-    int i __attribute__((__unused__));
-{
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/method-def-in-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/method-def-in-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/method-def-in-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar://7029784
-
- at interface A
--(id) f0 { // expected-error {{expected ';' after method prototype}}
-  assert(0);
-}
- at end
-
- at interface C
-- (id) f0 { // expected-error {{expected ';' after method prototype}}
-    assert(0);
-};
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/method-prototype-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/method-prototype-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/method-prototype-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only
- at interface MyObject 
-- (void) bycopy  : (int) woodo, ... ;
-- (void) break  : (int) woodo, ... ;
-- (void) enum  : (int) woodo, ... ;
-- (void) struct  : (int) woodo, ... ;
-- (void) union  : (int) woodo, ... ;
-- (void) if  : (int) woodo, int i, char chh, ... ;
-- (void) else  : (int) woodo, ... ;
-- (void) while  : (int) woodo, ... ;
-- (void) do  : (int) woodo, ... ;
-- (void) for  : (int) woodo, ... ;
-- (void) switch  : (int) woodo, ... ;
-- (void) case  : (int) woodo, ... ;
-- (void) default  : (int) woodo, ... ;
-- (void) break  : (int) woodo, ... ;
-- (void) continue  : (int) woodo, ... ;
-- (void) return  : (int) woodo, ... ;
-- (void) goto  : (int) woodo, ... ;
-- (void) sizeof  : (int) woodo, ... ;
-- (void) typeof  : (int) woodo, ... ;
-- (void) __alignof  : (int) woodo, ... ;
-- (void) unsigned  : (int) woodo, ... ;
-- (void) long  : (int) woodo, ... ;
-- (void) const  : (int) woodo, ... ;
-- (void) short  : (int) woodo, ... ;
-- (void) volatile  : (int) woodo, ... ;
-- (void) signed  : (int) woodo, ... ;
-- (void) restrict  : (int) woodo, ... ;
-- (void) _Complex  : (int) woodo, ... ;
-- (void) in  : (int) woodo, ... ;
-- (void) out  : (int) woodo, ... ;
-- (void) inout  : (int) woodo, ... ;
-- (void) bycopy  : (int) woodo, ... ;
-- (void) byref  : (int) woodo, ... ;
-- (void) oneway  : (int) woodo, ... ;
-- (void) int  : (int) woodo, ... ;
-- (void) char  : (int) woodo, ... ;
-- (void) float  : (int) woodo, ... ;
-- (void) double  : (int) woodo, ... ;
-- (void) void  : (int) woodo, ... ;
-- (void) _Bool  : (int) woodo, ... ;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/missing-closing-rbrace.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/missing-closing-rbrace.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/missing-closing-rbrace.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar: //6854840
- at interface A {@end // expected-error {{'@end' appears where closing brace '}' is expected}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/missing-end-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/missing-end-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/missing-end-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar: //7824372
-
- at interface A // expected-note {{class started here}}
--(void) im0;
-
- at implementation A // expected-error {{missing '@end'}}
- at end
-
- at interface B { // expected-note {{class started here}}
-}
-
- at implementation B // expected-error {{missing '@end'}}
- at end
-
- at interface C // expected-note 2 {{class started here}}
- at property int P;
-
- at implementation C // expected-error 2 {{missing '@end'}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/missing-end-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/missing-end-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/missing-end-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar://8283484
- at interface blah { // expected-note {{class started here}}
-    @private
-}
-// since I forgot the @end here it should say something
-
- at interface blah  // expected-error {{missing '@end'}}
- at end // and Unknown type name 'end' here
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/missing-end-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/missing-end-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/missing-end-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface X1
- at end
- at implementation X1 // expected-note {{implementation started here}}
- at interface Y1 // expected-error {{missing '@end'}}
- at end
- at end // expected-error {{'@end' must appear in an Objective-C context}}
-
- at interface X2
- at end
- at implementation X2 // expected-note {{implementation started here}}
- at protocol Y2 // expected-error {{missing '@end'}}
- at end
- at end // expected-error {{'@end' must appear in an Objective-C context}}
-
- at interface X6 // expected-note {{class started here}}
- at interface X7 // expected-error {{missing '@end'}}
- at end
- at end // expected-error {{'@end' must appear in an Objective-C context}}
-
- at protocol P1 // expected-note {{protocol started here}}
- at interface P2 // expected-error {{missing '@end'}}
- at end
- at end // expected-error {{'@end' must appear in an Objective-C context}}
-
- at interface X4 // expected-note {{class started here}}
- at implementation X4 // expected-error {{missing '@end'}}
- at end
- at end // expected-error {{'@end' must appear in an Objective-C context}}
-
- at interface I
- at end
- at implementation I
- at protocol P; // forward declarations of protocols in @implementations is allowed
- at class C; // forward declarations of classes in @implementations is allowed
-- (C<P>*) MyMeth {}
- at end
-
- at interface I2 {}
- at protocol P2; // expected-error {{illegal interface qualifier}}
- at class C2; // expected-error {{illegal interface qualifier}}
- at end
-
- at interface I3
- at end
- at implementation I3
-- Meth {}
-+ Cls {}
- at protocol P3;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/missing-end.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/missing-end.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/missing-end.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface AAA // expected-note {{class started here}}
-{
-}
-@ x// expected-error{{expected an Objective-C directive after '@'}}
-// expected-error{{missing '@end'}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/missing-selector-name.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/missing-selector-name.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/missing-selector-name.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://11939584
-
- at interface PodiumWalkerController
- at property (assign) id PROP;
-- (void) // expected-error {{expected ';' after method prototype}}
- at end // expected-error {{expected selector for Objective-C method}}
-
-
-id GVAR;
-
-id StopProgressAnimation()
-{
-
-    PodiumWalkerController *controller;
-    return controller.PROP;
-}
-
- at interface P1
- at property (assign) id PROP;
-- (void); // expected-error {{expected selector for Objective-C method}}
- at end
-
-id GG=0;
-
-id Stop1()
-{
-
-    PodiumWalkerController *controller;
-    return controller.PROP;
-}
-
- at interface P2
- at property (assign) id PROP;
-- (void)Meth {} // expected-error {{expected ';' after method prototype}}
- at end
-
- at interface P3
- at property (assign) id PROP;
-- (void)
-- (void)Meth {} // expected-error {{expected selector for Objective-C method}} \
-                // expected-error {{expected ';' after method prototype}}
- at end
-
-id HH=0;
-
-id Stop2()
-{
-
-    PodiumWalkerController *controller;
-    return controller.PROP;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/ms-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/ms-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/ms-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// REQUIRES: disabled
-// RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks
-
-#define M __asm int 0x2c
-#define M2 int
-
-void t1(void) { M }
-void t2(void) { __asm int 0x2c }
-void t3(void) { __asm M2 0x2c }
-void t4(void) { __asm mov eax, fs:[0x10] }
-void t5() {
-  __asm {
-    int 0x2c ; } asm comments are fun! }{
-  }
-  __asm {}
-}
-int t6() {
-  __asm int 3 ; } comments for single-line asm
-  __asm {}
-
-  __asm int 4
-  return 10;
-}
-void t7() {
-  __asm {
-    push ebx
-    mov ebx, 0x07
-    pop ebx
-  }
-}
-void t8() {
-  __asm nop __asm nop __asm nop
-}
-void t9() {
-  __asm nop __asm nop ; __asm nop
-}
-int t_fail() { // expected-note {{to match this}}
-  __asm 
-  __asm { // expected-error 3 {{expected}} expected-note {{to match this}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/namelookup-bug-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/namelookup-bug-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/namelookup-bug-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-// expected-no-diagnostics
-
-typedef int Object;
-
-struct Object *pp;
-
-Object staticObject1;

Modified: trunk/contrib/llvm/tools/clang/test/Parser/namelookup-bug-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/namelookup-bug-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/namelookup-bug-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-// expected-no-diagnostics
-
-typedef int Object;
-
-struct Object {int i1; } *P;
-
-void foo() {
- struct Object { int i2; } *X;
-  Object:
- {
-    Object a;
- }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/namespace-alias-attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/namespace-alias-attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/namespace-alias-attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-namespace A
-{
-}
-
-namespace B __attribute__ (( static )) = A; // expected-error{{attributes can not be specified on namespace alias}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/namespaces.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/namespaces.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/namespaces.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR6596
-namespace g { enum { o = 0 }; }
-
-void foo() {
-  namespace a { typedef g::o o; } // expected-error{{namespaces can only be defined in global or namespace scope}}
-}
-
-// PR14085
-namespace PR14085 {}
-namespace = PR14085; // expected-error {{expected identifier}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/nested-namespaces-recovery.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/nested-namespaces-recovery.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/nested-namespaces-recovery.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: cp %s %t
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: not %clang_cc1 -x c++ -fixit %t
-// RUN: %clang_cc1 -x c++ %t
-
-namespace foo1::foo2::foo3 { // expected-error {{nested namespace definition must define each namespace separately}}
-  int foo(int x) { return x; }
-}
-
-int foo(int x) {
-  return foo1::foo2::foo3::foo(x);
-}
-
-namespace bar1 {
-  namespace bar2 {
-    namespace bar3 {
-      int bar(int x) { return x; }
-    }
-  }
-}
-
-int bar(int x) {
-  return bar1::bar2::bar3::bar(x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-alias-printing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-alias-printing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-alias-printing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s
-
- at protocol P1 @end
- at protocol P2 @end
-
- at interface INTF @end
-
- at compatibility_alias alias INTF;
-
-
-int foo ()
-{
-	INTF *pi;
-	INTF<P2,P1> *pi2;
-	alias *p;
-	alias<P1,P2> *p2;
-	return pi2 == p2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-boxing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-boxing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-boxing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface NSString @end
-
- at interface NSString (NSStringExtensionMethods)
-+ (id)stringWithUTF8String:(const char *)nullTerminatedCString;
- at end
-
-extern char *strdup(const char *str);
-
-id constant_string() {
-    return @("boxed constant string.");
-}
-
-id dynamic_string() {
-    return @(strdup("boxed dynamic string"));
-}
-
-id const_char_pointer() {
-    return @((const char *)"constant character pointer");
-}
-
-id missing_parentheses() {
-    return @(5;             // expected-error {{expected ')'}} \
-                            // expected-note {{to match this '('}}
-}
-
-// rdar://10679157
-void bar(id p);
-void foo(id p) {
-        bar(@{p, p}); // expected-error {{expected ':'}}
-        bar(0);
-        bar(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-category-neg-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-category-neg-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-category-neg-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void __assert_rtn(const char *, const char *, int, const char *) __attribute__((__noreturn__));
-static __inline__ int __inline_isfinitef (float ) __attribute__ ((always_inline));
-
- at interface NSATSTypesetter (NSPantherCompatibility) // expected-error {{cannot find interface declaration for 'NSATSTypesetter'}}
-- (id)lineFragmentRectForProposedRect:(id)proposedRect remainingRect:(id)remainingRect __attribute__((deprecated));
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-diag-width.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-diag-width.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-diag-width.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s 2>&1 | FileCheck %s
-
-// Just shouldn't crash. -verify suppresses the crash, so don't use it.
-// PR13417
-// CHECK-NOT: Assertion failed
- at interface ExtensionActionContextMenu @end
- at implementation ExtensionActionContextMenu
-namespace {

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-error-qualified-implementation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-error-qualified-implementation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-error-qualified-implementation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-objc-root-class -verify %s
-// rdar://12233858
-
- at protocol P
- at end
-
- at interface I @end
-
- at implementation I<P> @end // expected-error {{@implementation declaration can not be protocol qualified}}
-
- at interface J < P,P >
- at end
-
-
- at implementation J < P,P > // expected-error {{@implementation declaration can not be protocol qualified}}
- at end
-
- at interface K @end
-
- at implementation K <P // expected-error {{@implementation declaration can not be protocol qualified}}
- at end // expected-error {{expected '>'}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-    
-            
- at protocol P @end
-
- at interface MyList
- at end
-    
- at implementation MyList
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-        return 0;
-}
- at end
-
- at interface MyList (BasicTest)
-- (void)compilerTestAgainst;
- at end
-
- at implementation MyList (BasicTest)
-- (void)compilerTestAgainst {
-	int i;
-        for (id elem in self) 
-           ++i;
-        for (MyList *elem in self) 
-           ++i;
-        for (id<P> se in self) 
-           ++i;
-
-	MyList<P> *p;
-        for (p in self) 
-           ++i;
-
-	for (p in p)
-	  ++i;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-neg-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-neg-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-neg-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-typedef struct objc_class *Class;
-struct __objcFastEnumerationState; 
-typedef struct objc_object {
- Class isa;
-} *id;
-    
- at protocol P @end
-
- at interface MyList
- at end
-    
- at implementation MyList
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-        return 0;
-}
- at end
-
- at interface MyList (BasicTest)
-- (void)compilerTestAgainst;
- at end
-
- at implementation MyList (BasicTest)
-- (void)compilerTestAgainst {
-    static i;// expected-warning {{type specifier missing, defaults to 'int'}}
-        for (id el, elem in self)  // expected-error {{only one element declaration is allowed}}
-           ++i;
-        for (id el in self) 
-           ++i;
-	MyList<P> ***p;
-        for (p in self)  // expected-error {{selector element type 'MyList<P> ***' is not a valid object}}
-           ++i;
-
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-neg.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-neg.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-forcollection-neg.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-struct __objcFastEnumerationState; 
-typedef struct objc_class *Class;
-typedef struct objc_object {
- Class isa;
-} *id;
-    
-            
- at interface MyList
- at end
-    
- at implementation MyList
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-        return 0;
-}
- at end
-
- at interface MyList (BasicTest)
-- (void)compilerTestAgainst;
- at end
-
- at implementation MyList (BasicTest)
-- (void)compilerTestAgainst {
-
-        int i=0;
-        for (int * elem in elem) // expected-error {{selector element type 'int *' is not a valid object}} \
-				    expected-error {{the type 'int *' is not a pointer to a fast-enumerable object}}
-           ++i;
-        for (i in elem)  // expected-error {{use of undeclared identifier 'elem'}} \
-			    expected-error {{selector element type 'int' is not a valid object}}
-           ++i;
-        for (id se in i) // expected-error {{the type 'int' is not a pointer to a fast-enumerable object}} 
-           ++i;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-foreach-syntax.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-foreach-syntax.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-foreach-syntax.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-struct __objcFastEnumerationState; 
- at implementation MyList // expected-warning {{cannot find interface declaration for 'MyList'}}
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-     return 0;
-}
- at end
-
-
-int LOOP();
-
- at implementation MyList (BasicTest) 
-- (void)compilerTestAgainst {
-MyList * el; 
-     for (el in @"foo") 
-	  { LOOP(); }
-}
- at end
-
-
-static int test7(id keys) {
-  for (id key; in keys) ;  // expected-error {{use of undeclared identifier 'in'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-init.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-init.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-init.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -pedantic -Wno-objc-root-class %s
-// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class %s
-// rdar://5707001
-
- at interface NSNumber;
-- () METH;
-- (unsigned) METH2;
- at end
-
-struct SomeStruct {
-  int x, y, z, q;
-};
-
-void test1() {
-	id objects[] = {[NSNumber METH]};
-}
-
-void test2(NSNumber x) { // expected-error {{interface type 'NSNumber' cannot be passed by value; did you forget * in 'NSNumber'}}
-	id objects[] = {[x METH]};
-}
-
-void test3(NSNumber *x) {
-	id objects[] = {[x METH]};
-}
-
-
-// rdar://5977581
-void test4() {
-  unsigned x[] = {[NSNumber METH2]+2};
-}
-
-void test5(NSNumber *x) {
-  unsigned y[] = {
-    [4][NSNumber METH2]+2,   // expected-warning {{use of GNU 'missing =' extension in designator}}
-    [4][x METH2]+2   // expected-warning {{use of GNU 'missing =' extension in designator}}
-  };
-  
-  struct SomeStruct z = {
-    .x = [x METH2], // ok.
-    .x [x METH2]    // expected-error {{expected '=' or another designator}}
-  };
-}
-
-// rdar://7370882
- at interface SemicolonsAppDelegate 
-{
-  id i;
-}
- at property (assign) id window;
- at end
-
- at implementation SemicolonsAppDelegate
-{
-  id i;
-}
-  @synthesize window=i;
- at end
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-interfaces.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-interfaces.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-interfaces.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-// Test features and error recovery for objc interfaces.
-
- at interface INTF
-- (int*) foo2  __attribute__((deprecated)) : (int) x1 __attribute__((deprecated)); // expected-error {{expected ';' after method prototype}} expected-error {{method type specifier must start with '-' or '+'}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-messaging-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-messaging-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-messaging-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-int main ()
-{
-	int i,j;
-	struct S *p;
-        id a, b, c;
-	[a ii]; // expected-warning{{not found}}
-	[a if: 1 :2]; // expected-warning{{not found}}
-	[a inout: 1 :2 another:(2,3,4)]; // expected-warning{{not found}} \
-           // expected-warning 2{{expression result unused}}
-	[a inout: 1 :2 another:(2,3,4), 6,6,8]; // expected-warning{{not found}} \
-           // expected-warning 2{{expression result unused}}
-	[a inout: 1 :2 another:(2,3,4), (6,4,5),6,8]; // expected-warning{{not found}} \
-           // expected-warning 4{{expression result unused}}
-	[a inout: 1 :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}} \
-           // expected-warning 2{{expression result unused}}
-	[a long: 1 :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}} \
-           // expected-warning 2{{expression result unused}}
-	[a : "Hello\n" :2 another:(i+10), (i,j-1,5),6,8]; // expected-warning{{not found}} \
-           // expected-warning 2{{expression result unused}}
-
-	// Comma expression as receiver (rdar://6222856)
-	[a, b, c foo]; // expected-warning{{not found}} \
-           // expected-warning 2{{expression result unused}}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-messaging-neg-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-messaging-neg-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-messaging-neg-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface A
-+(void) foo:(int) a;
- at end
-
-int main() {
-  id a;
-  [a bla:0 6:7]; // expected-error {{expected ']'}}
-  [A foo bar]; // expected-error {{expected ':'}}
-  [A foo bar bar1]; // expected-error {{expected ':'}}
-  [] {}; // expected-error {{expected expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-missing-impl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-missing-impl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-missing-impl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
- at end // expected-error {{'@end' must appear in an Objective-C context}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-property-syntax.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-property-syntax.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-property-syntax.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface MyClass {
-  int prop;
-};
- at property unsigned char bufferedUTF8Bytes[4];  // expected-error {{property cannot have array or function type}}
- at property unsigned char bufferedUTFBytes:1;    // expected-error {{property name cannot be a bitfield}}
- at property(nonatomic, retain, setter=ab_setDefaultToolbarItems) MyClass *ab_defaultToolbarItems; // expected-error {{method name referenced in property setter attribute must end with ':'}}
-
- at property int prop;
- at end
-
- at implementation MyClass
- at dynamic ab_defaultToolbarItems // expected-error{{expected ';' after @dynamic}}
- at synthesize prop // expected-error{{expected ';' after @synthesize}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-quirks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-quirks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-quirks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-// FIXME: This is a horrible error message here. Fix.
-int @"s" = 5;  // expected-error {{prefix attribute must be}}
-
-
-// rdar://6480479
- at interface A // expected-note {{class started here}}
-}; // expected-error {{missing '@end'}} \
-// expected-error {{extraneous closing brace ('}')}} \
-// expected-warning{{extra ';' outside of a function}}
-
-
-
-
-// PR6811
-// 'super' isn't an expression, it is a magic context-sensitive keyword.
- at interface A2 {
-  id isa;
-}
-- (void)a;
- at end
-
- at interface B2 : A2 @end
- at implementation B2
-- (void)a
-{
-  [(super) a];  // expected-error {{use of undeclared identifier 'super'}}
-}
- at end
-
- at compatibility_alias A3 A2;

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-recover.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-recover.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-recover.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface StopAtAtEnd
-// This used to eat the @end
-int 123 // expected-error{{expected unqualified-id}}
- at end
-
- at implementation StopAtAtEnd // no-warning
-int 123 // expected-error{{expected unqualified-id}}
- at end
-
-
- at interface StopAtMethodDecls
-// This used to eat the method declarations
-int 123 // expected-error{{expected unqualified-id}}
-- (void)foo; // expected-note{{here}}
-int 456 // expected-error{{expected unqualified-id}}
-+ (void)bar; // expected-note{{here}}
- at end
-
- at implementation StopAtMethodDecls
-int 123 // expected-error{{expected unqualified-id}}
-- (id)foo {} // expected-warning{{conflicting return type}}
-int 456 // expected-error{{expected unqualified-id}}
-+ (id)bar {} // expected-warning{{conflicting return type}}
- at end
-
-
- at interface EmbeddedNamespace
-// This used to cause an infinite loop.
-namespace NS { // expected-error{{expected unqualified-id}}
-}
-- (id)test; // expected-note{{here}}
- at end
-
- at implementation EmbeddedNamespace
-int 123 // expected-error{{expected unqualified-id}}
-// We should still stop here and parse this namespace.
-namespace NS {
-  void foo();
-}
-
-// Make sure the declaration of -test was recognized.
-- (void)test { // expected-warning{{conflicting return type}}
-  // Make sure the declaration of NS::foo was recognized.
-  NS::foo();
-}
-
- at end
-
-
- at protocol ProtocolWithEmbeddedNamespace
-namespace NS { // expected-error{{expected unqualified-id}}
-
-}
-- (void)PWEN_foo; // expected-note{{here}}
- at end
-
- at interface ImplementPWEN <ProtocolWithEmbeddedNamespace>
- at end
-
- at implementation ImplementPWEN
-- (id)PWEN_foo {} // expected-warning{{conflicting return type}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-synthesized-recover.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-synthesized-recover.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-synthesized-recover.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface I1 
-{
-  int value;
-  int value2;
-}
- at property int value;
- at property int value2;
- at end
-
- at implementation I1
- at synthesize value, - value2; // expected-error{{expected a property name}}
- at synthesize value2;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-try-catch-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-try-catch-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-try-catch-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,70 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions %s
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions -x objective-c++ %s
-void * proc();
-
- at interface NSConstantString
- at end
-
- at interface Frob
- at end
-
- at interface Frob1
- at end
-
-void * foo()
-{
-  @try {
-    return proc();
-  }
-  @catch (Frob* ex) {
-    @throw;
-  }
-  @catch (Frob1* ex) {
-    @throw proc();
-  }
-  @finally {
-    @try {
-      return proc();
-    }
-    @catch (Frob* ex) {
-      @throw 1,2; // expected-error {{@throw requires an Objective-C object type ('int' invalid)}} \
-				  // expected-warning {{expression result unused}}
-    }
-    @catch (float x) {  // expected-error {{@catch parameter is not a pointer to an interface type}}
-      
-    }
-    @catch(...) {
-      @throw (4,3,proc()); // expected-warning {{expression result unused}} \
-						   // expected-warning {{expression result unused}}
-    }
-  }
-
-  @try {  // expected-error {{@try statement without a @catch and @finally clause}}
-    return proc();
-  }
-}
-
-
-void bar()
-{
-  @try {}// expected-error {{@try statement without a @catch and @finally clause}}
-  @"s"; //  expected-warning {{result unused}}
-}
-
-void baz()
-{
-  @try {}// expected-error {{@try statement without a @catch and @finally clause}}
-  @try {}
-  @finally {}
-}
-
-void noTwoTokenLookAheadRequiresABitOfFancyFootworkInTheParser() {
-    @try {
-        // Do something
-    } @catch (...) {}
-    @try {
-        // Do something
-    } @catch (...) {}
-    return;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objc-type-printing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objc-type-printing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objc-type-printing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s
-
- at protocol P1 @end
- at protocol P2 @end
- at protocol P3 @end
-
- at interface INTF 
-- (INTF<P1>*) METH;
- at end
-
-void foo()
-{
-        INTF *pintf;
-	INTF<P1>* p1;
-	INTF<P1, P1>* p2;
-	INTF<P1, P3>* p3;
-	INTF<P1, P3, P2>* p4;
-	INTF<P2,P2, P3, P1>* p5;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objcxx-at.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objcxx-at.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objcxx-at.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface B {
-  int i;
-}
- at end
-
-struct Z {
-  @defs(B); // expected-error{{@defs is not supported in Objective-C++}}
-};
-
-struct Y { // expected-note{{to match this '{'}}
-  struct X { } // expected-error{{expected ';' after struct}}
-    @interface A // expected-error{{unexpected '@' in member specification}}
-} // expected-error{{expected '}'}} expected-error{{expected ';' after struct}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objcxx-lambda-expressions-neg.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objcxx-lambda-expressions-neg.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objcxx-lambda-expressions-neg.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-unused-value -verify %s
-
-int main() {
-  []{}; // expected-error {{expected expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objcxx0x-lambda-expressions.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objcxx0x-lambda-expressions.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objcxx0x-lambda-expressions.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-unused-value -std=c++11 %s
-
-class C {
-
-  void f() {
-    int foo, bar;
-
-    // fail to parse as a lambda introducer, so we get objc message parsing errors instead
-    [foo,+] {}; // expected-error {{expected expression}}
-
-    []; // expected-error {{expected body of lambda expression}}
-    [=,foo+] {}; // expected-error {{expected ',' or ']' in lambda capture list}}
-    [&this] {}; // expected-error {{cannot take the address of an rvalue of type 'C *'}}
-    [] {}; 
-    [=] (int i) {}; 
-    [&] (int) mutable -> void {}; 
-    [foo,bar] () { return 3; }; 
-    [=,&foo] () {}; 
-    [this] () {}; 
-  }
-
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-attributes.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-attributes.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-attributes.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
- at interface X {}
-+ (X*) alloc;
-- (X*) init;
-- (int) getSize;
-- (void) setSize: (int) size;
-- (X*) getSelf;
- at end
-
-void f(X *noreturn) {
-  // An array size which is computed by a message send is OK.
-  int a[ [noreturn getSize] ];
-
-  // ... but is interpreted as an attribute where possible.
-  int b[ [noreturn] ]; // expected-error {{'noreturn' attribute only applies to functions and methods}}
-
-  int c[ [noreturn getSize] + 1 ];
-
-  // An array size which is computed by a lambda is not OK.
-  int d[ [noreturn] { return 3; } () ]; // expected-error {{expected ']'}} expected-error {{'noreturn' attribute only applies}}
-
-  // A message send which contains a message send is OK.
-  [ [ X alloc ] init ];
-  [ [ int(), noreturn getSelf ] getSize ]; // expected-warning {{unused}}
-
-  // A message send which contains a lambda is OK.
-  [ [noreturn] { return noreturn; } () setSize: 4 ];
-  [ [bitand] { return noreturn; } () setSize: 5 ];
-  [[[[] { return [ X alloc ]; } () init] getSelf] getSize];
-
-  // An attribute is OK.
-  [[]];
-  [[int(), noreturn]]; // expected-warning {{unknown attribute 'int' ignored}} \
-  // expected-error {{'noreturn' attribute cannot be applied to a statement}}
-  [[class, test(foo 'x' bar),,,]]; // expected-warning {{unknown attribute 'test' ignored}}\
-  // expected-warning {{unknown attribute 'class' ignored}}
-
-  [[bitand, noreturn]]; // expected-error {{'noreturn' attribute cannot be applied to a statement}} \
-  expected-warning {{unknown attribute 'bitand' ignored}} 
-
-  // FIXME: Suppress vexing parse warning
-  [[gnu::noreturn]]int(e)(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}} 
-  int e2(); // expected-warning {{interpreted as a function declaration}} expected-note{{}}
-
-  // A function taking a noreturn function.
-  int(f)([[gnu::noreturn]] int ()); // expected-note {{here}}
-  f(e);
-  f(e2); // expected-error {{cannot initialize a parameter of type 'int (*)() __attribute__((noreturn))' with an lvalue of type 'int ()'}}
-
-  // Variables initialized by a message send.
-  int(g)([[noreturn getSelf] getSize]);
-  int(h)([[noreturn]{return noreturn;}() getSize]);
-
-  int i = g + h;
-}
-
-template<typename...Ts> void f(Ts ...x) {
-  [[test::foo(bar, baz)...]]; // expected-error {{attribute 'foo' cannot be used as an attribute pack}} \
-  // expected-warning {{unknown attribute 'foo' ignored}}
-
-  [[used(x)...]]; // expected-error {{attribute 'used' cannot be used as an attribute pack}} \
-  // expected-warning {{unknown attribute 'used' ignored}}
-
-  [[x...] { return [ X alloc ]; }() init];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-initialized-temps.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-initialized-temps.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-initialized-temps.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-// rdar://12788429
-
-struct CGPoint {
-  double x;
-  double y;
-};
-typedef struct CGPoint CGPoint;
-
-struct CGSize {
-  double width;
-  double height;
-};
-typedef struct CGSize CGSize;
-
-struct CGRect {
-  CGPoint origin;
-  CGSize size;
-};
-typedef struct CGRect CGRect;
-
-typedef CGRect NSRect;
-
-void HappySetFrame(NSRect frame) {}
-
-__attribute__((objc_root_class))
- at interface NSObject @end
-
- at implementation NSObject
-- (void) sadSetFrame: (NSRect)frame {}
-
-- (void) nothing
-{
-        HappySetFrame({{0,0}, {13,14}});
-        [self sadSetFrame: {{0,0}, {13,14}}];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-protocol-in-template.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-protocol-in-template.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-protocol-in-template.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-template<class T> class vector {};
- at protocol P @end
-
-#if __cplusplus >= 201103L
-  // expected-no-diagnostics
-#else
-  // expected-error at 14{{a space is required between consecutive right angle brackets}}
-  // expected-error at 15{{a space is required between consecutive right angle brackets}}
-#endif
-
-vector<id<P>> v;
-vector<vector<id<P>>> v2;

Modified: trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-user-defined-literal.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-user-defined-literal.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/objcxx11-user-defined-literal.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-id x = @"foo"_bar; // expected-error{{user-defined suffix cannot be used here}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/offsetof.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/offsetof.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/offsetof.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct a { struct { int b; } x[2]; };
-
-int a = __builtin_offsetof(struct a, x; // expected-error{{expected ')'}} expected-note{{to match this '('}}
-// FIXME: This actually shouldn't give an error
-int b = __builtin_offsetof(struct a, x->b); // expected-error{{expected ')'}} expected-note{{to match this '('}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/opencl-astype.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/opencl-astype.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/opencl-astype.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-
-void test_astype() {
-  float f = 1.0f;
-  unsigned int i = __builtin_astype(f, unsigned int); 
-  
-  typedef __attribute__(( ext_vector_type(4) ))  int int4;
-  typedef __attribute__(( ext_vector_type(3) ))  float float3;
-  typedef __attribute__(( ext_vector_type(4) ))  float float4;
-  typedef __attribute__(( ext_vector_type(4) ))  double double4;
-  
-  float4 f4;
-  double4 d4 = __builtin_astype(f4, double4); // expected-error{{invalid reinterpretation: sizes of 'double4' and 'float4' must match}}
-  
-  // Verify int4->float3, float3->int4 works.
-  int4 i4;
-  float3 f3 = __builtin_astype(i4, float3);
-  i4 = __builtin_astype(f3, int4);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/opencl-image-access.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/opencl-image-access.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/opencl-image-access.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only
-
-__kernel void f__ro(__read_only image2d_t a) { }
-
-__kernel void f__wo(__write_only image2d_t a) { }
-
-__kernel void f__rw(__read_write image2d_t a) { }
-
-
-__kernel void fro(read_only image2d_t a) { }
-
-__kernel void fwo(write_only image2d_t a) { }
-
-__kernel void frw(read_write image2d_t a) { }

Modified: trunk/contrib/llvm/tools/clang/test/Parser/opencl-kernel.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/opencl-kernel.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/opencl-kernel.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-// expected-no-diagnostics
-
-__kernel void test()
-{
-}
-
-kernel void test1()
-{
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/opencl-pragma.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/opencl-pragma.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/opencl-pragma.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -Wno-empty-translation-unit -fsyntax-only
-
-#pragma OPENCL EXTENSION cl_khr_fp16 : enable
-
-#pragma OPENCL EXTENSION cl_no_such_extension : disable /* expected-warning {{unknown OpenCL extension 'cl_no_such_extension' - ignoring}} */
-
-#pragma OPENCL EXTENSION all : disable
-#pragma OPENCL EXTENSION all : enable /* expected-warning {{unknown OpenCL extension 'all' - ignoring}} */
-
-#pragma OPENCL EXTENSION cl_khr_fp64 : on /* expected-warning {{expected 'enable' or 'disable' - ignoring}} */
-
-#pragma OPENCL FP_CONTRACT ON
-#pragma OPENCL FP_CONTRACT OFF
-#pragma OPENCL FP_CONTRACT DEFAULT
-#pragma OPENCL FP_CONTRACT FOO // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/opencl-storage-class.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/opencl-storage-class.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/opencl-storage-class.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-void test_storage_class_specs()
-{
-  static int a;    // expected-error {{OpenCL does not support the 'static' storage class specifier}}
-  register int b;  // expected-error {{OpenCL does not support the 'register' storage class specifier}}
-  extern int c;    // expected-error {{OpenCL does not support the 'extern' storage class specifier}}
-  auto int d;      // expected-error {{OpenCL does not support the 'auto' storage class specifier}}
-
-#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers : enable
-  static int e;
-  register int f;
-  extern int g;
-  auto int h;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/parenthesis-balance.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/parenthesis-balance.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/parenthesis-balance.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int f(int x) {
-  if (int foo = f(bar)) {}     // expected-error{{use of undeclared identifier 'bar'}}
-  while (int foo = f(bar)) {}  // expected-error{{use of undeclared identifier 'bar'}}
-  for (int foo = f(bar);;) {}  // expected-error{{use of undeclared identifier 'bar'}}
-
-  int bar;
-  if (int foo = f(bar)) {}
-  while (int foo = f(bar)) {}
-  for (int foo = f(bar);;) {}
-
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/parmvardecl_conversion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/parmvardecl_conversion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/parmvardecl_conversion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-void f (int p[]) { p++; }
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/placeholder-recovery.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/placeholder-recovery.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/placeholder-recovery.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// FIXME: We could do much better with this, if we recognized
-// placeholders somehow. However, we're content with not generating
-// bogus 'archaic' warnings with bad location info.
- at protocol <#protocol name#> <NSObject> // expected-error 2{{expected identifier}} \
-// expected-error{{cannot find protocol declaration for 'NSObject'}} \
-// expected-warning{{protocol has no object type specified; defaults to qualified 'id'}}
-
-<#methods#>  // expected-error{{expected identifier}}
-
- at end // expected-error{{prefix attribute}}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pointer-arithmetic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pointer-arithmetic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pointer-arithmetic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int *test1(int *a)         { return a + 1; }
-int *test2(int *a)         { return 1 + a; }
-int *test3(int *a)         { return a - 1; }
-int  test4(int *a, int *b) { return a - b; }
-
-int  test5(int *a, int *b) { return a + b; } /* expected-error {{invalid operands}} */
-int *test6(int *a)         { return 1 - a; } /* expected-error {{invalid operands}} */

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pointer_promotion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pointer_promotion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pointer_promotion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void test() {
-  void *vp;
-  int *ip;
-  char *cp;
-  struct foo *fp;
-  struct bar *bp;
-  short sint = 7;
-
-  if (ip < cp) {} // expected-warning {{comparison of distinct pointer types ('int *' and 'char *')}}
-  if (cp < fp) {} // expected-warning {{comparison of distinct pointer types ('char *' and 'struct foo *')}}
-  if (fp < bp) {} // expected-warning {{comparison of distinct pointer types ('struct foo *' and 'struct bar *')}}
-  if (ip < 7) {} // expected-warning {{comparison between pointer and integer ('int *' and 'int')}}
-  if (sint < ip) {} // expected-warning {{comparison between pointer and integer ('int' and 'int *')}}
-  if (ip == cp) {} // expected-warning {{comparison of distinct pointer types ('int *' and 'char *')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pragma-fp-contract.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pragma-fp-contract.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pragma-fp-contract.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f1(void) {
-  int x = 0;
-/* expected-error at +1 {{'#pragma fp_contract' should only appear at file scope or at the start of a compound expression}} */
-#pragma STDC FP_CONTRACT ON
-}
-
-void f2(void) {
-  #pragma STDC FP_CONTRACT OFF
-  #pragma STDC FP_CONTRACT ON 
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pragma-options.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pragma-options.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pragma-options.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-
-/* expected-warning {{expected 'align' following '#pragma options'}} */ #pragma options
-/* expected-warning {{expected '=' following '#pragma options align'}} */ #pragma options align
-/* expected-warning {{expected identifier in '#pragma options'}} */ #pragma options align =
-/* expected-warning {{invalid alignment option in '#pragma options align'}} */ #pragma options align = foo
-/* expected-warning {{extra tokens at end of '#pragma options'}} */ #pragma options align = reset foo
-
-#pragma options align=natural
-#pragma options align=reset
-#pragma options align=mac68k
-#pragma options align=power
-
-/* expected-warning {{expected '=' following '#pragma align'}} */ #pragma align
-/* expected-warning {{expected identifier in '#pragma align'}} */ #pragma align =
-/* expected-warning {{invalid alignment option in '#pragma align'}} */ #pragma align = foo
-/* expected-warning {{extra tokens at end of '#pragma align'}} */ #pragma align = reset foo
-
-#pragma align=natural
-#pragma align=reset
-#pragma align=mac68k
-#pragma align=power
-
-// PR13580
-struct S
-{
-  char a[3];
-#pragma align=packed
-  struct T
-  {
-    char b;
-    int c;
-  } d;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pragma-options.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pragma-options.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pragma-options.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-class C {
-#pragma options align=natural
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pragma-pack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pragma-pack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pragma-pack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Note that this puts the expected lines before the directives to work around
-// limitations in the -verify mode.
-
-/* expected-warning {{missing '(' after '#pragma pack'}}*/ #pragma pack 10
-#pragma pack()
-#pragma pack(8)
-
-/*expected-warning {{unknown action for '#pragma pack'}}*/ #pragma pack(hello) 
-#pragma pack(push)
-#pragma pack(pop)
-
-/* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,)
-/* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,)
-/* expected-warning {{expected integer or identifier in '#pragma pack'}}*/  #pragma pack(pop,) 
-
-#pragma pack(push,i)
-/* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,i, 
-/* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,i,) 
-/* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ #pragma pack(push,i,help) 
-
-#pragma pack(push,8)
-/* expected-warning {{missing ')' after '#pragma pack'}}*/ #pragma pack(push,8, 
-/* expected-warning {{missing ')' after '#pragma pack'}}*/ #pragma pack(push,8,) 
-/* expected-warning {{missing ')' after '#pragma pack'}}*/ #pragma pack(push,i,8 
-#pragma pack(push,i,8)
-
-/* expected-warning {{missing ')' after '#pragma pack'}}*/ #pragma pack(push 
-
-_Pragma("pack(push)")
-/* expected-warning {{expected integer or identifier in '#pragma pack'}}*/ _Pragma("pack(push,)") 
-
-// PR13580
-struct S
-{
-  char a[3];
-#pragma pack(1)
-  struct T
-  {
-    char b;
-    int c;
-  } d;
-#pragma pack()
-  int e;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pragma-visibility.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pragma-visibility.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pragma-visibility.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#pragma GCC visibility foo // expected-warning{{expected identifier in '#pragma visibility' - ignored}}
-#pragma GCC visibility pop foo // expected-warning{{extra tokens at end of '#pragma visibility' - ignored}}
-#pragma GCC visibility push // expected-warning{{missing '(' after '#pragma visibility'}}
-#pragma GCC visibility push( // expected-warning{{expected identifier in '#pragma visibility' - ignored}}
-#pragma GCC visibility push(hidden // expected-warning{{missing ')' after '#pragma visibility' - ignoring}}
-#pragma GCC visibility push(hidden)
-#pragma GCC visibility pop

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pragma-visibility2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pragma-visibility2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pragma-visibility2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i386-linux-gnu -o %t %s
-// RUN: FileCheck --input-file=%t %s
-// PR10392
-
-#define push(foo) push(default)
-#pragma GCC visibility push(hidden)
-
-int v1;
-// CHECK: @v1 = common hidden global i32 0, align 4
-
-#pragma GCC visibility pop
-
-int v2;
-// CHECK: @v2 = common global i32 0, align 4
-
-_Pragma("GCC visibility push(hidden)");
-
-int v3;
-// CHECK: @v3 = common hidden global i32 0, align 4

Modified: trunk/contrib/llvm/tools/clang/test/Parser/pragma-weak.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/pragma-weak.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/pragma-weak.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Note that this puts the expected lines before the directives to work around
-// limitations in the -verify mode.
-
-int x;
-/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak
-#pragma weak x
-
-extern int z;
-/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z = =
-/* expected-warning {{expected identifier in '#pragma weak'}}*/ #pragma weak z =
-/* expected-warning {{weak identifier 'y' never declared}} */ #pragma weak z = y
-
-extern int a;
-/* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a b
-/* expected-warning {{extra tokens at end of '#pragma weak'}}*/ #pragma weak a = x c

Modified: trunk/contrib/llvm/tools/clang/test/Parser/promote_types_in_proto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/promote_types_in_proto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/promote_types_in_proto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s
-void functionPromotion(void f(char *const []));
-void arrayPromotion(char * const argv[]);
-
-int whatever(int argc, char *argv[])
-{
-        arrayPromotion(argv);
-        functionPromotion(arrayPromotion);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/recovery.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/recovery.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/recovery.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -fblocks %s
-
-// PR2241
-float test2241[2] = { 
-  1e,            // expected-error {{exponent}}
-  1ee0           // expected-error {{exponent}}
-};
-
-
-// Testcase derived from PR2692
-static void f (char * (*g) (char **, int), char **p, ...) {
-  char *s;
-  va_list v;                              // expected-error {{identifier}}
-  s = g (p, __builtin_va_arg(v, int));    // expected-error {{identifier}}
-}
-
-
-// PR3172
-} // expected-error {{extraneous closing brace ('}')}}
-
-
-// rdar://6094870
-void test(int a) {
-  struct { int i; } x;
-  
-  if (x.hello)   // expected-error {{no member named 'hello'}}
-    test(0);
-  else
-    ;
-  
-  if (x.hello == 0)   // expected-error {{no member named 'hello'}}
-    test(0);
-  else
-    ;
-  
-  if ((x.hello == 0))   // expected-error {{no member named 'hello'}}
-    test(0);
-  else
-    ;
-
-  // PR12595
-  if (x.i == 0))   // expected-error {{extraneous ')' after condition, expected a statement}}
-    test(0);
-  else
-    ;
-}
-
-
-
-char ((((                       /* expected-note {{to match this '('}} */
-         *X x ] ))));                    /* expected-error {{expected ')'}} */
-
-;   // expected-warning {{extra ';' outside of a function}}
-
-
-
-
-struct S { void *X, *Y; };
-
-struct S A = {
-&BADIDENT, 0     /* expected-error {{use of undeclared identifier}} */
-};
-
-// rdar://6248081
-void test6248081() { 
-  [10]  // expected-error {{expected expression}}
-}
-
-struct forward; // expected-note{{forward declaration of 'struct forward'}}
-void x(struct forward* x) {switch(x->a) {}} // expected-error {{incomplete definition of type}}
-
-// PR3410
-void foo() {
-  int X;
-  X = 4 // expected-error{{expected ';' after expression}}
-}
-
-// rdar://9045701
-void test9045701(int x) {
-#define VALUE 0
-  x = VALUE // expected-error{{expected ';' after expression}}
-}
-
-// rdar://7980651
-typedef int intptr_t;  // expected-note {{'intptr_t' declared here}}
-void bar(intptr y);     // expected-error {{unknown type name 'intptr'; did you mean 'intptr_t'?}}
-
-void test1(void) {
-  int x = 2: // expected-error {{expected ';' at end of declaration}}
-  int y = x;
-  int z = y;
-}
-
-void test2(int x) {
-#define VALUE2 VALUE+VALUE
-#define VALUE3 VALUE+0
-#define VALUE4(x) x+0
-  x = VALUE2 // expected-error{{expected ';' after expression}}
-  x = VALUE3 // expected-error{{expected ';' after expression}}
-  x = VALUE4(0) // expected-error{{expected ';' after expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/recovery.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/recovery.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/recovery.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-8gi///===--- recovery.cpp ---===// // expected-error {{unqualified-id}}
-namespace Std { // expected-note {{here}}
-  typedef int Important;
-}
-
-/ redeclare as an inline namespace // expected-error {{unqualified-id}}
-inline namespace Std { // expected-error {{cannot be reopened as inline}}
-  Important n;
-} / end namespace Std // expected-error {{unqualified-id}}
-int x;
-Std::Important y;
-
-extenr "C" { // expected-error {{did you mean the keyword 'extern'}}
-  void f();
-}
-void g() {
-  z = 1; // expected-error {{undeclared}}
-  f();
-}
-
-struct S {
-  int a, b, c;
-  S();
-  int x // expected-error {{expected ';'}}
-  friend void f()
-};
-8S::S() : a{ 5 }, b{ 6 }, c{ 2 } { // expected-error {{unqualified-id}}
-  return;
-}
-int k;
-int l = k // expected-error {{expected ';'}}
-constexpr int foo();
-
-5int m = { l }, n = m; // expected-error {{unqualified-id}}
-
-namespace N {
-  int
-} // expected-error {{unqualified-id}}
-
-strcut Uuuu { // expected-error {{did you mean the keyword 'struct'}} \
-              // expected-note {{'Uuuu' declared here}}
-} *u[3];
-uuuu v; // expected-error {{did you mean 'Uuuu'}}
-
-struct Redefined { // expected-note {{previous}}
-  Redefined() {}
-};
-struct Redefined { // expected-error {{redefinition}}
-  Redefined() {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/recovery.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/recovery.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/recovery.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -fblocks %s
-
- at interface Test0
- at property (assign) id x  // expected-error {{expected ';' at end of declaration list}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Parser/recursion-limits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/recursion-limits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/recursion-limits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,260 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-// expected-no-diagnostics
-class outer {
-  class inner1 { inner1(); };
-  class inner2 { inner2(); };
-  class inner3 { inner3(); };
-  class inner4 { inner4(); };
-  class inner5 { inner5(); };
-  class inner6 { inner6(); };
-  class inner7 { inner7(); };
-  class inner8 { inner8(); };
-  class inner9 { inner9(); };
-  class inner10 { inner10(); };
-  class inner11 { inner11(); };
-  class inner12 { inner12(); };
-  class inner13 { inner13(); };
-  class inner14 { inner14(); };
-  class inner15 { inner15(); };
-  class inner16 { inner16(); };
-  class inner17 { inner17(); };
-  class inner18 { inner18(); };
-  class inner19 { inner19(); };
-  class inner20 { inner20(); };
-  class inner21 { inner21(); };
-  class inner22 { inner22(); };
-  class inner23 { inner23(); };
-  class inner24 { inner24(); };
-  class inner25 { inner25(); };
-  class inner26 { inner26(); };
-  class inner27 { inner27(); };
-  class inner28 { inner28(); };
-  class inner29 { inner29(); };
-  class inner30 { inner30(); };
-  class inner31 { inner31(); };
-  class inner32 { inner32(); };
-  class inner33 { inner33(); };
-  class inner34 { inner34(); };
-  class inner35 { inner35(); };
-  class inner36 { inner36(); };
-  class inner37 { inner37(); };
-  class inner38 { inner38(); };
-  class inner39 { inner39(); };
-  class inner40 { inner40(); };
-  class inner41 { inner41(); };
-  class inner42 { inner42(); };
-  class inner43 { inner43(); };
-  class inner44 { inner44(); };
-  class inner45 { inner45(); };
-  class inner46 { inner46(); };
-  class inner47 { inner47(); };
-  class inner48 { inner48(); };
-  class inner49 { inner49(); };
-  class inner50 { inner50(); };
-  class inner51 { inner51(); };
-  class inner52 { inner52(); };
-  class inner53 { inner53(); };
-  class inner54 { inner54(); };
-  class inner55 { inner55(); };
-  class inner56 { inner56(); };
-  class inner57 { inner57(); };
-  class inner58 { inner58(); };
-  class inner59 { inner59(); };
-  class inner60 { inner60(); };
-  class inner61 { inner61(); };
-  class inner62 { inner62(); };
-  class inner63 { inner63(); };
-  class inner64 { inner64(); };
-  class inner65 { inner65(); };
-  class inner66 { inner66(); };
-  class inner67 { inner67(); };
-  class inner68 { inner68(); };
-  class inner69 { inner69(); };
-  class inner70 { inner70(); };
-  class inner71 { inner71(); };
-  class inner72 { inner72(); };
-  class inner73 { inner73(); };
-  class inner74 { inner74(); };
-  class inner75 { inner75(); };
-  class inner76 { inner76(); };
-  class inner77 { inner77(); };
-  class inner78 { inner78(); };
-  class inner79 { inner79(); };
-  class inner80 { inner80(); };
-  class inner81 { inner81(); };
-  class inner82 { inner82(); };
-  class inner83 { inner83(); };
-  class inner84 { inner84(); };
-  class inner85 { inner85(); };
-  class inner86 { inner86(); };
-  class inner87 { inner87(); };
-  class inner88 { inner88(); };
-  class inner89 { inner89(); };
-  class inner90 { inner90(); };
-  class inner91 { inner91(); };
-  class inner92 { inner92(); };
-  class inner93 { inner93(); };
-  class inner94 { inner94(); };
-  class inner95 { inner95(); };
-  class inner96 { inner96(); };
-  class inner97 { inner97(); };
-  class inner98 { inner98(); };
-  class inner99 { inner99(); };
-  class inner100 { inner100(); };
-  class inner101 { inner101(); };
-  class inner102 { inner102(); };
-  class inner103 { inner103(); };
-  class inner104 { inner104(); };
-  class inner105 { inner105(); };
-  class inner106 { inner106(); };
-  class inner107 { inner107(); };
-  class inner108 { inner108(); };
-  class inner109 { inner109(); };
-  class inner110 { inner110(); };
-  class inner111 { inner111(); };
-  class inner112 { inner112(); };
-  class inner113 { inner113(); };
-  class inner114 { inner114(); };
-  class inner115 { inner115(); };
-  class inner116 { inner116(); };
-  class inner117 { inner117(); };
-  class inner118 { inner118(); };
-  class inner119 { inner119(); };
-  class inner120 { inner120(); };
-  class inner121 { inner121(); };
-  class inner122 { inner122(); };
-  class inner123 { inner123(); };
-  class inner124 { inner124(); };
-  class inner125 { inner125(); };
-  class inner126 { inner126(); };
-  class inner127 { inner127(); };
-  class inner128 { inner128(); };
-  class inner129 { inner129(); };
-  class inner130 { inner130(); };
-  class inner131 { inner131(); };
-  class inner132 { inner132(); };
-  class inner133 { inner133(); };
-  class inner134 { inner134(); };
-  class inner135 { inner135(); };
-  class inner136 { inner136(); };
-  class inner137 { inner137(); };
-  class inner138 { inner138(); };
-  class inner139 { inner139(); };
-  class inner140 { inner140(); };
-  class inner141 { inner141(); };
-  class inner142 { inner142(); };
-  class inner143 { inner143(); };
-  class inner144 { inner144(); };
-  class inner145 { inner145(); };
-  class inner146 { inner146(); };
-  class inner147 { inner147(); };
-  class inner148 { inner148(); };
-  class inner149 { inner149(); };
-  class inner150 { inner150(); };
-  class inner151 { inner151(); };
-  class inner152 { inner152(); };
-  class inner153 { inner153(); };
-  class inner154 { inner154(); };
-  class inner155 { inner155(); };
-  class inner156 { inner156(); };
-  class inner157 { inner157(); };
-  class inner158 { inner158(); };
-  class inner159 { inner159(); };
-  class inner160 { inner160(); };
-  class inner161 { inner161(); };
-  class inner162 { inner162(); };
-  class inner163 { inner163(); };
-  class inner164 { inner164(); };
-  class inner165 { inner165(); };
-  class inner166 { inner166(); };
-  class inner167 { inner167(); };
-  class inner168 { inner168(); };
-  class inner169 { inner169(); };
-  class inner170 { inner170(); };
-  class inner171 { inner171(); };
-  class inner172 { inner172(); };
-  class inner173 { inner173(); };
-  class inner174 { inner174(); };
-  class inner175 { inner175(); };
-  class inner176 { inner176(); };
-  class inner177 { inner177(); };
-  class inner178 { inner178(); };
-  class inner179 { inner179(); };
-  class inner180 { inner180(); };
-  class inner181 { inner181(); };
-  class inner182 { inner182(); };
-  class inner183 { inner183(); };
-  class inner184 { inner184(); };
-  class inner185 { inner185(); };
-  class inner186 { inner186(); };
-  class inner187 { inner187(); };
-  class inner188 { inner188(); };
-  class inner189 { inner189(); };
-  class inner190 { inner190(); };
-  class inner191 { inner191(); };
-  class inner192 { inner192(); };
-  class inner193 { inner193(); };
-  class inner194 { inner194(); };
-  class inner195 { inner195(); };
-  class inner196 { inner196(); };
-  class inner197 { inner197(); };
-  class inner198 { inner198(); };
-  class inner199 { inner199(); };
-  class inner200 { inner200(); };
-  class inner201 { inner201(); };
-  class inner202 { inner202(); };
-  class inner203 { inner203(); };
-  class inner204 { inner204(); };
-  class inner205 { inner205(); };
-  class inner206 { inner206(); };
-  class inner207 { inner207(); };
-  class inner208 { inner208(); };
-  class inner209 { inner209(); };
-  class inner210 { inner210(); };
-  class inner211 { inner211(); };
-  class inner212 { inner212(); };
-  class inner213 { inner213(); };
-  class inner214 { inner214(); };
-  class inner215 { inner215(); };
-  class inner216 { inner216(); };
-  class inner217 { inner217(); };
-  class inner218 { inner218(); };
-  class inner219 { inner219(); };
-  class inner220 { inner220(); };
-  class inner221 { inner221(); };
-  class inner222 { inner222(); };
-  class inner223 { inner223(); };
-  class inner224 { inner224(); };
-  class inner225 { inner225(); };
-  class inner226 { inner226(); };
-  class inner227 { inner227(); };
-  class inner228 { inner228(); };
-  class inner229 { inner229(); };
-  class inner230 { inner230(); };
-  class inner231 { inner231(); };
-  class inner232 { inner232(); };
-  class inner233 { inner233(); };
-  class inner234 { inner234(); };
-  class inner235 { inner235(); };
-  class inner236 { inner236(); };
-  class inner237 { inner237(); };
-  class inner238 { inner238(); };
-  class inner239 { inner239(); };
-  class inner240 { inner240(); };
-  class inner241 { inner241(); };
-  class inner242 { inner242(); };
-  class inner243 { inner243(); };
-  class inner244 { inner244(); };
-  class inner245 { inner245(); };
-  class inner246 { inner246(); };
-  class inner247 { inner247(); };
-  class inner248 { inner248(); };
-  class inner249 { inner249(); };
-  class inner250 { inner250(); };
-  class inner251 { inner251(); };
-  class inner252 { inner252(); };
-  class inner253 { inner253(); };
-  class inner254 { inner254(); };
-  class inner255 { inner255(); };
-  class inner256 { inner256(); };
-};

Modified: trunk/contrib/llvm/tools/clang/test/Parser/selector-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/selector-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/selector-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify %s 
-// expected-no-diagnostics
-
-// rdar://8366474
-int main() {
-  SEL s = @selector(retain);
-  SEL s1 = @selector(meth1:);
-  SEL s2 = @selector(retainArgument::);
-  SEL s3 = @selector(retainArgument:::::);
-  SEL s4 = @selector(retainArgument:with:);
-  SEL s5 = @selector(meth1:with:with:);
-  SEL s6 = @selector(getEnum:enum:bool:);
-  SEL s7 = @selector(char:float:double:unsigned:short:long:);
-  SEL s9 = @selector(:enum:bool:);
-  
-  (void) @selector(foo:);
-  (void) @selector(foo::);
-  (void) @selector(foo:::);
-  (void) @selector(foo::::);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/skip-function-bodies.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/skip-function-bodies.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/skip-function-bodies.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: env CINDEXTEST_SKIP_FUNCTION_BODIES=1 c-index-test -test-load-source all %s | FileCheck %s
-
-class A {
-  class B {};
-
-public:
-  A() {
-    struct C {
-      void d() {}
-    };
-  }
-
-  typedef B E;
-};
-
- at interface F
-- (void) G;
- at end
- at implementation F
-- (void) G {
-  typedef A H;
-  class I {};
-}
- at end
-
-void J() {
-  class K {};
-}
-
-// CHECK: skip-function-bodies.mm:3:7: ClassDecl=A:3:7 (Definition) Extent=[3:1 - 14:2]
-// CHECK: skip-function-bodies.mm:4:9: ClassDecl=B:4:9 (Definition) Extent=[4:3 - 4:13]
-// CHECK: skip-function-bodies.mm:6:1: CXXAccessSpecifier=:6:1 (Definition) Extent=[6:1 - 6:8]
-// CHECK: skip-function-bodies.mm:7:3: CXXConstructor=A:7:3 Extent=[7:3 - 7:6]
-// CHECK-NOT: skip-function-bodies.mm:8:12: StructDecl=C:8:12 (Definition) Extent=[8:5 - 10:6]
-// CHECK-NOT: skip-function-bodies.mm:9:12: CXXMethod=d:9:12 (Definition) Extent=[9:7 - 9:18]
-// CHECK: skip-function-bodies.mm:13:13: TypedefDecl=E:13:13 (Definition) Extent=[13:3 - 13:14]
-// CHECK: skip-function-bodies.mm:13:11: TypeRef=class A::B:4:9 Extent=[13:11 - 13:12]
-// CHECK: skip-function-bodies.mm:16:12: ObjCInterfaceDecl=F:16:12 Extent=[16:1 - 18:5]
-// CHECK: skip-function-bodies.mm:17:10: ObjCInstanceMethodDecl=G:17:10 Extent=[17:1 - 17:12]
-// CHECK: skip-function-bodies.mm:19:17: ObjCImplementationDecl=F:19:17 (Definition) Extent=[19:1 - 24:2]
-// CHECK: skip-function-bodies.mm:20:10: ObjCInstanceMethodDecl=G:20:10 Extent=[20:1 - 20:13]
-// CHECK-NOT: skip-function-bodies.mm:21:13: TypedefDecl=H:21:13 (Definition) Extent=[21:3 - 21:14]
-// CHECK-NOT: skip-function-bodies.mm:21:11: TypeRef=class A:3:7 Extent=[21:11 - 21:12]
-// CHECK: skip-function-bodies.mm:26:6: FunctionDecl=J:26:6 Extent=[26:1 - 26:9]
-// CHECK-NOT: skip-function-bodies.mm:27:9: ClassDecl=K:27:9 (Definition) Extent=[27:3 - 27:13]

Modified: trunk/contrib/llvm/tools/clang/test/Parser/statements.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/statements.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/statements.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code
-
-void test1() {
-  { ; {  ;;}} ;;
-}
-
-void test2() {
-  if (0) { if (1) {} } else { }
-
-  do { } while (0); 
-  
-  while (0) while(0) do ; while(0);
-
-  for ((void)0;0;(void)0)
-    for (;;)
-      for ((void)9;0;(void)2)
-        ;
-  for (int X = 0; 0; (void)0);
-}
-
-void test3() {
-    switch (0) {
-    
-    case 4:
-      if (0) {
-    case 6: ;
-      }
-    default:
-      ;     
-  }
-}
-
-void test4() {
-  if (0);  // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}}
-  
-  int X;  // declaration in a block.
-  
-foo:  if (0); // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}}
-}
-
-typedef int t;
-void test5() {
-  if (0);   // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}}
-
-  t x = 0;
-
-  if (0);  // expected-warning {{if statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}}
-}
-
-
-void test6(void) { 
-  do 
-    .           // expected-error {{expected expression}}
-   while (0);
-}
-
-int test7() {
-  return 4     // expected-error {{expected ';' after return statement}}
-}
-
-void test8() {
-  // Should not skip '}' and produce a "expected '}'" error.
-  undecl // expected-error {{use of undeclared identifier 'undecl'}}
-}
-
-int test9() {
-  int T[] = {1, 2, };
-
-  int X;
-  X = 0, // expected-error {{expected ';' after expression}}
-    {
-    }
-
-  X = 0, // expected-error {{expected ';' after expression}}
-  if (0)
-    ;
-
-  return 4, // expected-error {{expected ';' after return statement}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/struct-recursion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/struct-recursion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/struct-recursion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only
-
-// C99 6.7.2.3p11
-
-// mutually recursive structs
-struct s1 { struct s2 *A; };
-struct s2 { struct s1 *B; };
-
-// both types are complete now.
-struct s1 a;
-struct s2 b;

Modified: trunk/contrib/llvm/tools/clang/test/Parser/switch-recovery.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/switch-recovery.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/switch-recovery.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,172 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// <rdar://problem/7971948>
-struct A {};
-struct B {
-  void foo(int b) {
-    switch (a) { // expected-error{{use of undeclared identifier 'a'}}
-    default:
-      return;
-    }
-    
-    switch (b) {
-    case 17 // expected-error{{expected ':' after 'case'}}
-      break;
-
-    default // expected-error{{expected ':' after 'default'}}
-      return;
-    }
-  }
-
-  void test2() {
-    enum X { Xa, Xb } x;
-
-    switch (x) { // expected-warning {{enumeration value 'Xb' not handled in switch}}
-    case Xa; // expected-error {{expected ':' after 'case'}}
-      break;
-    }
-
-    switch (x) {
-    default; // expected-error {{expected ':' after 'default'}}
-      break;
-    }
-  }
-
-  int test3(int i) {
-    switch (i) {
-      case 1: return 0;
-      2: return 1;  // expected-error {{expected 'case' keyword before expression}}
-      default: return 5;
-    }
-  }
-};
-
-int test4(int i) {
-  switch (i)
-    1: return -1;  // expected-error {{expected 'case' keyword before expression}}
-  return 0;
-}
-
-int test5(int i) {
-  switch (i) {
-    case 1: case 2: case 3: return 1;
-    {
-    4:5:6:7: return 2;  // expected-error 4{{expected 'case' keyword before expression}}
-    }
-    default: return -1;
-  }
-}
-
-int test6(int i) {
-  switch (i) {
-    case 1:
-    case 4:
-      // This class provides extra single colon tokens.  Make sure no
-      // errors are seen here.
-      class foo{
-        public:
-        protected:
-        private:
-      };
-    case 2:
-    5:  // expected-error {{expected 'case' keyword before expression}}
-    default: return 1;
-  }
-}
-
-int test7(int i) {
-  switch (i) {
-    case false ? 1 : 2:
-    true ? 1 : 2:  // expected-error {{expected 'case' keyword before expression}}
-    case 10:
-      14 ? 3 : 4;  // expected-warning {{expression result unused}}
-    default:
-      return 1;
-  }
-}
-
-enum foo { A, B, C};
-int test8( foo x ) {
-  switch (x) {
-    A: return 0;  // FIXME: give a warning for unused labels that could also be
-                  // a case expression.
-    default: return 1;
-  }
-}
-
-// Stress test to make sure Clang doesn't crash.
-void test9(int x) {
-  switch(x) {
-    case 1: return;
-    2: case; // expected-error {{expected 'case' keyword before expression}} \
-                expected-error {{expected expression}}
-    4:5:6: return; // expected-error 3{{expected 'case' keyword before expression}}
-    7: :x; // expected-error {{expected 'case' keyword before expression}} \
-              expected-error {{expected expression}}
-    8:: x; // expected-error {{expected ';' after expression}} \
-              expected-error {{no member named 'x' in the global namespace}} \
-              expected-warning {{expression result unused}}
-    9:: :y; // expected-error {{expected ';' after expression}} \
-               expected-error {{expected unqualified-id}} \
-               expected-warning {{expression result unused}}
-    :; // expected-error {{expected expression}}
-    ::; // expected-error {{expected unqualified-id}}
-  }
-}
-
-void test10(int x) {
-  switch (x) {
-    case 1: {
-      struct Inner {
-        void g(int y) {
-          2: y++;  // expected-error {{expected ';' after expression}} \
-                   // expected-warning {{expression result unused}}
-        }
-      };
-      break;
-    }
-  }
-}
-
-template<typename T>
-struct test11 {
-  enum { E };
-
-  void f(int x) {
-    switch (x) {
-      E: break;    // FIXME: give a 'case' fix-it for unused labels that
-                   // could also be an expression an a case label.
-      E+1: break;  // expected-error {{expected 'case' keyword before expression}}
-    }
-  }
-};
-
-void test12(int x) {
-  switch (x) {
-    0:  // expected-error {{expected 'case' keyword before expression}}
-    while (x) {
-      1:  // expected-error {{expected 'case' keyword before expression}}
-      for (;x;) {
-        2:  // expected-error {{expected 'case' keyword before expression}}
-        if (x > 0) {
-          3:  // expected-error {{expected 'case' keyword before expression}}
-          --x;
-        }
-      }
-    }
-  }
-}
-
-void missing_statement_case(int x) {
-  switch (x) {
-    case 1:
-    case 0: // expected-error {{label at end of compound statement: expected statement}}
-  }
-}
-
-void missing_statement_default(int x) {
-  switch (x) {
-    case 0:
-    default: // expected-error {{label at end of compound statement: expected statement}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/top-level-semi-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/top-level-semi-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/top-level-semi-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -std=c++11 -verify %s
-// expected-no-diagnostics
-
-void foo();
-
-void bar() { };
-
-void wibble();
-
-;
-
-namespace Blah {
-  void f() { };
-  
-  void g();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/traditional_arg_scope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/traditional_arg_scope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/traditional_arg_scope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-
-int x(a) int a; {return a;}
-int y(b) int b; {return a;} // expected-error {{use of undeclared identifier}}
-
-// PR2332
-int a(a)int a;{a=10;return a;}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/typeof.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/typeof.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/typeof.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef int TInt;
-
-static void test() {
-  int *pi;
-
-  int typeof (int) aIntInt; // expected-error{{cannot combine with previous 'int' declaration specifier}}
-  short typeof (int) aShortInt; // expected-error{{'short typeof' is invalid}} 
-  int int ttt; // expected-error{{cannot combine with previous 'int' declaration specifier}}
-  typeof(TInt) anInt; 
-  short TInt eee; // expected-error{{expected ';' at end of declaration}}
-  void ary[7] fff; // expected-error{{array has incomplete element type 'void'}} expected-error{{expected ';' at end of declaration}}
-  typeof(void ary[7]) anIntError; // expected-error{{expected ')'}} expected-note {{to match this '('}}  expected-error {{variable has incomplete type 'typeof(void)' (aka 'void')}}
-  typeof(const int) aci; 
-  const typeof (*pi) aConstInt; 
-  int xx;
-  int *i;
-}
-
-// <rdar://problem/8237491>
-void test2() {
-    int a;
-    short b;
-    __typeof__(a) (*f)(__typeof__(b));    
-}

Modified: trunk/contrib/llvm/tools/clang/test/Parser/types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-// Test the X can be overloaded inside the struct.
-typedef int X; 
-struct Y { short X; };
-
-// Variable shadows type, PR3872
-
-typedef struct foo { int x; } foo;
-void test() {
-   foo *foo;
-   foo->x = 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/warn-dangling-else.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/warn-dangling-else.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/warn-dangling-else.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wdangling-else %s
-
-void f(int a, int b, int c, int d, int e) {
-
-  // should warn
-  { if (a) if (b) d++; else e++; } // expected-warning {{add explicit braces to avoid dangling else}}
-  { if (a) while (b) if (c) d++; else e++; } // expected-warning {{add explicit braces to avoid dangling else}}
-  { if (a) switch (b) if (c) d++; else e++; } // expected-warning {{add explicit braces to avoid dangling else}}
-  { if (a) for (;;) if (c) d++; else e++; } // expected-warning {{add explicit braces to avoid dangling else}}
-  { if (a) if (b) if (d) d++; else e++; else d--; } // expected-warning {{add explicit braces to avoid dangling else}}
-
-  if (a)
-    if (b) {
-      d++;
-    } else e++; // expected-warning {{add explicit braces to avoid dangling else}}
-
-  // shouldn't
-  { if (a) if (b) d++; }
-  { if (a) if (b) if (c) d++; }
-  { if (a) if (b) d++; else e++; else d--; }
-  { if (a) if (b) if (d) d++; else e++; else d--; else e--; }
-  { if (a) do if (b) d++; else e++; while (c); }
-
-  if (a) {
-    if (b) d++;
-    else e++;
-  }
-
-  if (a) {
-    if (b) d++;
-  } else e++;
-}
-
-// Somewhat more elaborate case that shouldn't warn.
-class A {
- public:
-  void operator<<(const char* s) {}
-};
-
-void HandleDisabledThing() {}
-A GetThing() { return A(); }
-
-#define FOO(X) \
-   switch (0) default: \
-     if (!(X)) \
-       HandleDisabledThing(); \
-     else \
-       GetThing()
-
-void f(bool cond) {
-  int x = 0;
-  if (cond)
-    FOO(x) << "hello"; // no warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Parser/warn-semicolon-before-method-body.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Parser/warn-semicolon-before-method-body.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Parser/warn-semicolon-before-method-body.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wsemicolon-before-method-body -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wsemicolon-before-method-body -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-// Allow optional semicolon in objc method definiton after method prototype,
-// warn about it and suggest a fixit.
-
- at interface NSObject
- at end
-
- at interface C : NSObject
-- (int)z;
- at end
-
- at implementation C
-- (int)z; // expected-warning {{semicolon before method body is ignored}}
-{
-  return 0;
-}
- at end
-
-// CHECK: fix-it:"{{.*}}":{15:9-15:10}:""
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/Inputs/TestFramework.framework/Frameworks/AnotherTestFramework.framework/Headers/AnotherTestFramework.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/Inputs/TestFramework.framework/Frameworks/AnotherTestFramework.framework/Headers/AnotherTestFramework.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/Inputs/TestFramework.framework/Frameworks/AnotherTestFramework.framework/Headers/AnotherTestFramework.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-static inline int another_test_framework_func(unsigned a) {
-  return a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/Inputs/TestFramework.framework/Headers/TestFramework.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/Inputs/TestFramework.framework/Headers/TestFramework.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/Inputs/TestFramework.framework/Headers/TestFramework.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// Include a subframework header.
-#include <AnotherTestFramework/AnotherTestFramework.h>
-
-static inline int test_framework_func(unsigned a) {
-  return a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-dependency.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-dependency.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-dependency.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -E -verify %s
-
-#define DO_PRAGMA _Pragma 
-#define STR "GCC dependency \"parse.y\"")
-// expected-error at +1 {{'parse.y' file not found}}
-  DO_PRAGMA (STR

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-dependency2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-dependency2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-dependency2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -E %s -verify
-
-#define DO_PRAGMA _Pragma 
-DO_PRAGMA ("GCC dependency \"blahblabh\"")  // expected-error {{file not found}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-in-macro-arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-in-macro-arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-in-macro-arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 %s -verify -Wconversion
-
-// Don't crash (rdar://11168596)
-#define A(desc) _Pragma("clang diagnostic push")  _Pragma("clang diagnostic ignored \"-Wparentheses\"") _Pragma("clang diagnostic pop")
-#define B(desc) A(desc)
-B(_Pragma("clang diagnostic ignored \"-Wparentheses\""))
-
-
-#define EMPTY(x)
-#define INACTIVE(x) EMPTY(x)
-
-#define ID(x) x
-#define ACTIVE(x) ID(x)
-
-// This should be ignored..
-INACTIVE(_Pragma("clang diagnostic ignored \"-Wconversion\""))
-
-#define IGNORE_CONV _Pragma("clang diagnostic ignored \"-Wconversion\"") _Pragma("clang diagnostic ignored \"-Wconversion\"")
-
-// ..as should this.
-INACTIVE(IGNORE_CONV)
-
-#define IGNORE_POPPUSH(Pop, Push, W, D) Push W D Pop
-IGNORE_POPPUSH(_Pragma("clang diagnostic pop"), _Pragma("clang diagnostic push"),
-               _Pragma("clang diagnostic ignored \"-Wconversion\""), int q = (double)1.0);
-
-int x1 = (double)1.0; // expected-warning {{implicit conversion}}
-
-ACTIVE(_Pragma) ("clang diagnostic ignored \"-Wconversion\"")) // expected-error {{_Pragma takes a parenthesized string literal}} \
-                                      expected-error {{expected identifier or '('}} expected-error {{expected ')'}} expected-note {{to match this '('}}
-
-// This should disable the warning.
-ACTIVE(IGNORE_CONV)
-
-int x2 = (double)1.0;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-location.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-location.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-location.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 %s -fms-extensions -E | FileCheck %s
-// We use -fms-extensions to test both _Pragma and __pragma.
-
-// A long time ago the pragma lexer's buffer showed through in -E output.
-// CHECK-NOT: scratch space
-
-#define push_p _Pragma ("pack(push)")
-push_p
-// CHECK: #pragma pack(push)
-
-push_p _Pragma("pack(push)") __pragma(pack(push))
-// CHECK: #pragma pack(push)
-// CHECK-NEXT: #line 11 "{{.*}}_Pragma-location.c"
-// CHECK-NEXT: #pragma pack(push)
-// CHECK-NEXT: #line 11 "{{.*}}_Pragma-location.c"
-// CHECK-NEXT: #pragma pack(push)
-
-
-#define __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS _Pragma("clang diagnostic push") \
-_Pragma("clang diagnostic ignored \"-Wformat-extra-args\"")
-#define __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS _Pragma("clang diagnostic pop")
-
-void test () {
-  1;_Pragma("clang diagnostic push") \
-  _Pragma("clang diagnostic ignored \"-Wformat-extra-args\"")
-  _Pragma("clang diagnostic pop")
-
-  2;__PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS
-  3;__PRAGMA_POP_NO_EXTRA_ARG_WARNINGS
-}
-
-// CHECK: void test () {
-// CHECK-NEXT:   1;
-// CHECK-NEXT: #line 24 "{{.*}}_Pragma-location.c"
-// CHECK-NEXT: #pragma clang diagnostic push
-// CHECK-NEXT: #pragma clang diagnostic ignored "-Wformat-extra-args"
-// CHECK-NEXT: #pragma clang diagnostic pop
-
-// CHECK:   2;
-// CHECK-NEXT: #line 28 "{{.*}}_Pragma-location.c"
-// CHECK-NEXT: #pragma clang diagnostic push
-// CHECK-NEXT: #line 28 "{{.*}}_Pragma-location.c"
-// CHECK-NEXT: #pragma clang diagnostic ignored "-Wformat-extra-args"
-// CHECK-NEXT:   3;
-// CHECK-NEXT: #line 29 "{{.*}}_Pragma-location.c"
-// CHECK-NEXT: #pragma clang diagnostic pop
-// CHECK-NEXT: }

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-physloc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-physloc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma-physloc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-// CHECK: {{^}}#pragma x y z{{$}}
-// CHECK: {{^}}#pragma a b c{{$}}
-
-_Pragma("x y z")
-_Pragma("a b c")
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/_Pragma.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -verify -Wall
-
-_Pragma ("GCC system_header")  // expected-warning {{system_header ignored in main file}}
-
-// rdar://6880630
-_Pragma("#define macro")    // expected-warning {{unknown pragma ignored}}
-
-#ifdef macro
-#error #define invalid
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/aarch64-target-features.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/aarch64-target-features.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/aarch64-target-features.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang -target aarch64-none-linux-gnu -x c -E -dM %s -o - | FileCheck %s
-// CHECK: __AARCH64EL__
-// CHECK-NOT: __AARCH_ADVSIMD_FP
-// CHECK-NOT: __AARCH_FEATURE_ADVSIMD
-// CHECK: __ARM_ACLE 101
-// CHECK: __ARM_ARCH 8
-// CHECK: __ARM_ARCH_PROFILE 'A'
-// CHECK-NOT: __ARM_FEATURE_BIG_ENDIAN
-// CHECK: __ARM_FEATURE_CLZ 1
-// CHECK: __ARM_FEATURE_FMA 1
-// CHECK: __ARM_FEATURE_LDREX 0xf
-// CHECK: __ARM_FEATURE_UNALIGNED 1
-// CHECK: __ARM_FP 0xe
-// CHECK-NOT: __ARM_FP_FAST
-// CHECK: __ARM_FP16_FORMAT_IEEE 1
-// CHECK: __ARM_FP_FENV_ROUNDING 1
-// CHECK-NOT: __ARM_NEON_FP
-// CHECK-NOT: __ARM_NEON
-// CHECK: __ARM_SIZEOF_MINIMAL_ENUM 4
-// CHECK: __ARM_SIZEOF_WCHAR_T 4
-// CHECK: __aarch64__
-
-
-// RUN: %clang -target aarch64-none-linux-gnu -ffast-math -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FASTMATH %s
-// CHECK-FASTMATH: __ARM_FP_FAST
-
-// RUN: %clang -target aarch64-none-linux-gnu -fshort-wchar -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTWCHAR %s
-// CHECK-SHORTWCHAR: __ARM_SIZEOF_WCHAR_T 2
-
-// RUN: %clang -target aarch64-none-linux-gnu -fshort-enums -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTENUMS %s
-// CHECK-SHORTENUMS: __ARM_SIZEOF_MINIMAL_ENUM 1
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/assembler-with-cpp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/assembler-with-cpp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/assembler-with-cpp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -x assembler-with-cpp -E %s -o - | FileCheck -strict-whitespace -check-prefix=CHECK-Identifiers-False %s
-
-#ifndef __ASSEMBLER__
-#error "__ASSEMBLER__ not defined"
-#endif
-
-
-// Invalid token pasting is ok. 
-#define A X ## .
-1: A
-// CHECK-Identifiers-False: 1: X .
-
-// Line markers are not linemarkers in .S files, they are passed through.
-# 321
-// CHECK-Identifiers-False: # 321
-
-// Unknown directives are passed through.
-# B C
-// CHECK-Identifiers-False: # B C
-
-// Unknown directives are expanded.
-#define D(x) BAR ## x
-# D(42)
-// CHECK-Identifiers-False: # BAR42
-
-// Unmatched quotes are permitted.
-2: '
-3: "
-// CHECK-Identifiers-False: 2: '
-// CHECK-Identifiers-False: 3: "
-
-// (balance quotes to keep editors happy): "'
-
-// Empty char literals are ok.
-4: ''
-// CHECK-Identifiers-False: 4: ''
-
-
-// Portions of invalid pasting should still expand as macros.
-// rdar://6709206
-#define M4 expanded
-#define M5() M4 ## (
-
-5: M5()
-// CHECK-Identifiers-False: 5: expanded (
-
-// rdar://6804322
-#define FOO(name)  name ## $foo
-6: FOO(blarg)
-// CHECK-Identifiers-False: 6: blarg $foo
-
-// RUN: %clang_cc1 -x assembler-with-cpp -fdollars-in-identifiers -E %s -o - | FileCheck -check-prefix=CHECK-Identifiers-True -strict-whitespace %s
-#define FOO(name)  name ## $foo
-7: FOO(blarg)
-// CHECK-Identifiers-True: 7: blarg$foo
-
-// 
-#define T6() T6 #nostring
-#define T7(x) T7 #x
-8: T6()
-9: T7(foo)
-// CHECK-Identifiers-True: 8: T6 #nostring
-// CHECK-Identifiers-True: 9: T7 "foo"
-
-// Concatenation with period doesn't leave a space
-#define T8(A,B) A ## B
-10: T8(.,T8)
-// CHECK-Identifiers-True: 10: .T8
-
-// This should not crash.
-#define T11(a) #0
-11: T11(b)
-// CHECK-Identifiers-True: 11: #0
-
-
-// This should not crash
-// rdar://8823139
-# ##
-// CHECK-Identifiers-False: # ##

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/builtin_line.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/builtin_line.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/builtin_line.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-#define FOO __LINE__
-
-  FOO
-// CHECK: {{^}}  4{{$}}
-
-// PR3579 - This should expand to the __LINE__ of the ')' not of the X.
-
-#define X() __LINE__
-
-A X(
-
-)
-// CHECK: {{^}}A 13{{$}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/c90.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/c90.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/c90.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-/* RUN: %clang_cc1 %s -std=c89 -Eonly -verify -pedantic-errors 
- * RUN: %clang_cc1 %s -std=c89 -E | FileCheck %s
- */
-
-/* PR3919 */
-
-#define foo`bar   /* expected-error {{whitespace required after macro name}} */
-#define foo2!bar  /* expected-warning {{whitespace recommended after macro name}} */
-
-#define foo3$bar  /* expected-error {{'$' in identifier}} */
-
-/* CHECK-NOT: this comment should be missing
- * CHECK: {{^}}// this comment should be present{{$}}
- */
-// this comment should be present

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_3_p4.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_3_p4.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_3_p4.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-
-#define hash_hash # ## # 
-#define mkstr(a) # a 
-#define in_between(a) mkstr(a) 
-#define join(c, d) in_between(c hash_hash d) 
-char p[] = join(x, y);
-
-// CHECK: char p[] = "x ## y";
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p5.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p5.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p5.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// Example from C99 6.10.3.4p5
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-
-#define x 3 
-#define f(a) f(x * (a)) 
-#undef x 
-#define x 2 
-#define g f 
-#define z z[0] 
-#define h g(~ 
-#define m(a) a(w) 
-#define w 0,1 
-#define t(a) a 
-#define p() int 
-#define q(x) x 
-#define r(x,y) x ## y 
-#define str(x) # x 
-            f(y+1) + f(f(z)) % t(t(g)(0) + t)(1); 
-            g(x+(3,4)-w) | h 5) & m 
-(f)^m(m); 
-p() i[q()] = { q(1), r(2,3), r(4,), r(,5), r(,) }; 
-char c[2][6] = { str(hello), str() }; 
-
-// CHECK: f(2 * (y+1)) + f(2 * (f(2 * (z[0])))) % f(2 * (0)) + t(1);
-// CHECK: f(2 * (2 +(3,4)-0,1)) | f(2 * (~ 5)) & f(2 * (0,1))^m(0,1);
-// CHECK: int i[] = { 1, 23, 4, 5, };
-// CHECK: char c[2][6] = { "hello", "" };
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p6.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p6.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p6.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// Example from C99 6.10.3.4p6
-
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-
-#define str(s) # s 
-#define xstr(s) str(s) 
-#define debug(s, t) printf("x" # s "= %d, x" # t "= s" \ 
-                           x ## s, x ## t) 
-#define INCFILE(n) vers ## n 
-#define glue(a, b) a ## b 
-#define xglue(a, b) glue(a, b) 
-#define HIGHLOW "hello" 
-#define LOW LOW ", world" 
-debug(1, 2); 
-fputs(str(strncmp("abc\0d" "abc", '\4') // this goes away 
-          == 0) str(: @\n), s); 
-include xstr(INCFILE(2).h) 
-glue(HIGH, LOW); 
-xglue(HIGH, LOW) 
-
-
-// CHECK: printf("x" "1" "= %d, x" "2" "= s" x1, x2);
-// CHECK: fputs("strncmp(\"abc\\0d\" \"abc\", '\\4') == 0" ": @\n", s);
-// CHECK: include "vers2.h"
-// CHECK: "hello";
-// CHECK: "hello" ", world"
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p7.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p7.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p7.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Example from C99 6.10.3.4p7
-
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-
-#define t(x,y,z) x ## y ## z 
-int j[] = { t(1,2,3), t(,4,5), t(6,,7), t(8,9,), 
-t(10,,), t(,11,), t(,,12), t(,,) }; 
-
-// CHECK: int j[] = { 123, 45, 67, 89,
-// CHECK: 10, 11, 12, };

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p9.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p9.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/c99-6_10_3_4_p9.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// Example from C99 6.10.3.4p9
-
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-
-#define debug(...) fprintf(stderr, __VA_ARGS__) 
-#define showlist(...) puts(#__VA_ARGS__) 
-#define report(test, ...) ((test)?puts(#test):\
-                           printf(__VA_ARGS__)) 
-debug("Flag");
-// CHECK: fprintf(stderr, "Flag");
-
-debug("X = %d\n", x);
-// CHECK: fprintf(stderr, "X = %d\n", x);
-
-showlist(The first, second, and third items.);
-// CHECK: puts("The first, second, and third items.");
-
-report(x>y, "x is %d but y is %d", x, y);
-// CHECK: ((x>y)?puts("x>y"): printf("x is %d but y is %d", x, y));
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/clang_headers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/clang_headers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/clang_headers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -ffreestanding -E %s
-
-#include <limits.h>

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -E -C %s | FileCheck -strict-whitespace %s
-
-// foo
-// CHECK: // foo
-
-/* bar */
-// CHECK: /* bar */
-
-#if FOO
-#endif
-/* baz */
-// CHECK: /* baz */
-
-_Pragma("unknown") // after unknown pragma
-// CHECK: #pragma unknown
-// CHECK-NEXT: #
-// CHECK-NEXT: // after unknown pragma
-
-_Pragma("comment(\"abc\")") // after known pragma
-// CHECK: #pragma comment("abc")
-// CHECK-NEXT: #
-// CHECK-NEXT: // after known pragma

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save_if.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save_if.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save_if.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -E -CC -pedantic -verify
-// expected-no-diagnostics
-
-#if 1 /*bar */
-
-#endif /*foo*/
-
-#if /*foo*/ defined /*foo*/ FOO /*foo*/
-#if /*foo*/ defined /*foo*/ ( /*foo*/ FOO /*foo*/ ) /*foo*/
-#endif
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save_macro.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save_macro.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/comment_save_macro.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -E -C %s | FileCheck -check-prefix=CHECK-C -strict-whitespace %s
-// CHECK-C: boo bork bar // zot
-
-// RUN: %clang_cc1 -E -CC %s | FileCheck -check-prefix=CHECK-CC -strict-whitespace %s
-// CHECK-CC: boo bork /* blah*/ bar // zot
-
-// RUN: %clang_cc1 -E %s | FileCheck -check-prefix=CHECK -strict-whitespace %s
-// CHECK: boo bork bar
-
-
-#define FOO bork // blah
-boo FOO bar // zot
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_and.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_and.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_and.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -DA -DB -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DA -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -DB -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -E %s | grep 'int a = 927 == 927'
-#if defined(A) and defined(B)
-#define X 37
-#else
-#define X 927
-#endif
-
-#if defined(A) && defined(B)
-#define Y 37
-#else
-#define Y 927
-#endif
-
-int a = X == Y;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_bitand.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_bitand.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_bitand.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -DA=1 -DB=2 -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -DA=1 -DB=1 -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -E %s | grep 'int a = 927 == 927'
-#if A bitand B
-#define X 37
-#else
-#define X 927
-#endif
-
-#if A & B
-#define Y 37
-#else
-#define Y 927
-#endif
-
-int a = X == Y;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_bitor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_bitor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_bitor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -DA=1 -DB=1 -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DA=0 -DB=1 -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DA=1 -DB=0 -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DA=0 -DB=0 -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -E %s | grep 'int a = 927 == 927'
-#if A bitor B
-#define X 37
-#else
-#define X 927
-#endif
-
-#if A | B
-#define Y 37
-#else
-#define Y 927
-#endif
-
-int a = X == Y;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_compl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_compl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_compl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -DA=1 -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DA=0 -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -E %s | grep 'int a = 927 == 927'
-#if compl 0 bitand A
-#define X 37
-#else
-#define X 927
-#endif
-
-#if ~0 & A
-#define Y 37
-#else
-#define Y 927
-#endif
-
-int a = X == Y;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_not.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_not.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_not.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -DA=1 -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -E %s | grep 'int a = 37 == 37'
-#if not defined(A)
-#define X 37
-#else
-#define X 927
-#endif
-
-#if ! defined(A)
-#define Y 37
-#else
-#define Y 927
-#endif
-
-int a = X == Y;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_not_eq.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_not_eq.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_not_eq.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -DA=1 -DB=1 -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -DA=1 -DB=2 -E %s | grep 'int a = 37 == 37'
-#if A not_eq B
-#define X 37
-#else
-#define X 927
-#endif
-
-#if A != B
-#define Y 37
-#else
-#define Y 927
-#endif
-
-int a = X == Y;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_keyword.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_keyword.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_keyword.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: not %clang_cc1 %s -E
-// RUN: %clang_cc1 %s -E -fno-operator-names
-
-// Not valid in C++ unless -fno-operator-names is passed.
-#define and foo
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_keyword_ms_compat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_keyword_ms_compat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_keyword_ms_compat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,179 +0,0 @@
-// RUN: %clang_cc1 %s -E -fms-compatibility
-
-bool f() {
-  // Check that operators still work before redefining them.
-#if compl 0 bitand 1
-  return true and false;
-#endif
-}
-
-// All c++ keywords should be #define-able in ms mode.
-// (operators like "and" aren't normally, the rest always is.)
-#define and
-#define and_eq
-#define alignas
-#define alignof
-#define asm
-#define auto
-#define bitand
-#define bitor
-#define bool
-#define break
-#define case
-#define catch
-#define char
-#define char16_t
-#define char32_t
-#define class
-#define compl
-#define const
-#define constexpr
-#define const_cast
-#define continue
-#define decltype
-#define default
-#define delete
-#define double
-#define dynamic_cast
-#define else
-#define enum
-#define explicit
-#define export
-#define extern
-#define false
-#define float
-#define for
-#define friend
-#define goto
-#define if
-#define inline
-#define int
-#define long
-#define mutable
-#define namespace
-#define new
-#define noexcept
-#define not
-#define not_eq
-#define nullptr
-#define operator
-#define or
-#define or_eq
-#define private
-#define protected
-#define public
-#define register
-#define reinterpret_cast
-#define return
-#define short
-#define signed
-#define sizeof
-#define static
-#define static_assert
-#define static_cast
-#define struct
-#define switch
-#define template
-#define this
-#define thread_local
-#define throw
-#define true
-#define try
-#define typedef
-#define typeid
-#define typename
-#define union
-#define unsigned
-#define using
-#define virtual
-#define void
-#define volatile
-#define wchar_t
-#define while
-#define xor
-#define xor_eq
-
-// Check this is all properly defined away.
-and
-and_eq
-alignas
-alignof
-asm
-auto
-bitand
-bitor
-bool
-break
-case
-catch
-char
-char16_t
-char32_t
-class
-compl
-const
-constexpr
-const_cast
-continue
-decltype
-default
-delete
-double
-dynamic_cast
-else
-enum
-explicit
-export
-extern
-false
-float
-for
-friend
-goto
-if
-inline
-int
-long
-mutable
-namespace
-new
-noexcept
-not
-not_eq
-nullptr
-operator
-or
-or_eq
-private
-protected
-public
-register
-reinterpret_cast
-return
-short
-signed
-sizeof
-static
-static_assert
-static_cast
-struct
-switch
-template
-this
-thread_local
-throw
-true
-try
-typedef
-typeid
-typename
-union
-unsigned
-using
-virtual
-void
-volatile
-wchar_t
-while
-xor
-xor_eq

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_spelling.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_spelling.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_oper_spelling.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck %s
-
-#define X(A) #A
-
-// C++'03 2.5p2: "In all respects of the language, each alternative 
-// token behaves the same, respectively, as its primary token, 
-// except for its spelling"
-//
-// This should be spelled as 'and', not '&&'
-a: X(and)
-// CHECK: a: "and"
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_or.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_or.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_or.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -DA -DB -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DA -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DB -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -E %s | grep 'int a = 927 == 927'
-#if defined(A) or defined(B)
-#define X 37
-#else
-#define X 927
-#endif
-
-#if defined(A) || defined(B)
-#define Y 37
-#else
-#define Y 927
-#endif
-
-int a = X == Y;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_true.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_true.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_true.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-/* RUN: %clang_cc1 -E %s -x c++ | grep block_1
-   RUN: %clang_cc1 -E %s -x c++ | not grep block_2
-   RUN: %clang_cc1 -E %s -x c | not grep block
-   RUN: %clang_cc1 -E %s -x c++ -verify -Wundef
-*/
-// expected-no-diagnostics
-
-#if true
-block_1
-#endif
-
-#if false
-block_2
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_xor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_xor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/cxx_xor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -DA=1 -DB=1 -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -DA=0 -DB=1 -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DA=1 -DB=0 -E %s | grep 'int a = 37 == 37'
-// RUN: %clang_cc1 -DA=0 -DB=0 -E %s | grep 'int a = 927 == 927'
-// RUN: %clang_cc1 -E %s | grep 'int a = 927 == 927'
-#if A xor B
-#define X 37
-#else
-#define X 927
-#endif
-
-#if A ^ B
-#define Y 37
-#else
-#define Y 927
-#endif
-
-int a = X == Y;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/dependencies-and-pp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/dependencies-and-pp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/dependencies-and-pp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// Test -MT and -E flags, PR4063
-
-// RUN: %clang -E -o %t.1 %s
-// RUN: %clang -E -MD -MF %t.d -MT foo -o %t.2 %s
-// RUN: diff %t.1 %t.2
-// RUN: FileCheck -check-prefix=TEST1 %s < %t.d
-// TEST1: foo:
-// TEST1: dependencies-and-pp.c
-
-// Test -MQ flag without quoting
-
-// RUN: %clang -E -MD -MF %t.d -MQ foo -o %t %s
-// RUN: FileCheck -check-prefix=TEST2 %s < %t.d
-// TEST2: foo:
-
-// Test -MQ flag with quoting
-
-// RUN: %clang -E -MD -MF %t.d -MQ '$fo\ooo ooo\ ooo\\ ooo#oo' -o %t %s
-// RUN: FileCheck -check-prefix=TEST3 %s < %t.d
-// TEST3: $$fo\ooo\ ooo\\\ ooo\\\\\ ooo\#oo:
-
-// Test consecutive -MT flags
-
-// RUN: %clang -E -MD -MF %t.d -MT foo -MT bar -MT baz -o %t %s
-// RUN: diff %t.1 %t
-// RUN: FileCheck -check-prefix=TEST4 %s < %t.d
-// TEST4: foo bar baz:
-
-// Test consecutive -MT and -MQ flags
-
-// RUN: %clang -E -MD -MF %t.d -MT foo -MQ '$(bar)' -MT 'b az' -MQ 'qu ux' -MQ ' space' -o %t %s
-// RUN: FileCheck -check-prefix=TEST5 %s < %t.d
-// TEST5: foo $$(bar) b az qu\ ux \ space:
-
-// TODO: Test default target without quoting
-// TODO: Test default target with quoting

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/directive-invalid.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/directive-invalid.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/directive-invalid.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -E -verify %s
-// rdar://7683173
-
-#define r_paren )
-#if defined( x r_paren  // expected-error {{missing ')' after 'defined'}} \
-                        // expected-note {{to match this '('}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/disabled-cond-diags.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/disabled-cond-diags.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/disabled-cond-diags.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E -verify %s
-// expected-no-diagnostics
-
-#if 0
-
-// Shouldn't get warnings here.
-??( ??)
-
-// Should not get an error here.
-` ` ` `
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/disabled-cond-diags2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/disabled-cond-diags2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/disabled-cond-diags2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -Eonly -verify %s
-
-#if 0
-#if 1
-#endif junk // shouldn't produce diagnostics
-#endif
-
-#if 0
-#endif junk // expected-warning{{extra tokens at end of #endif directive}}
-
-#if 1 junk  // expected-error{{token is not a valid binary operator in a preprocessor subexpression}}
-#X          // shouldn't produce diagnostics (block #if condition not valid, so skipped)
-#else
-#X          // expected-error{{invalid preprocessing directive}}
-#endif
-
-#if 0
-// diagnostics should not be produced until final #endif
-#X
-#include
-#if 1 junk
-#else junk
-#endif junk
-#line -2
-#error
-#warning
-#endif junk // expected-warning{{extra tokens at end of #endif directive}}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-macros-spacing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-macros-spacing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-macros-spacing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -E -dD < %s | grep stdin | grep -v define
-#define A A
-/* 1
- * 2
- * 3
- * 4
- * 5
- * 6
- * 7
- * 8
- */
-#define B B
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-macros-undef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-macros-undef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-macros-undef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -E -dD %s | FileCheck %s
-// PR7818
-
-// CHECK: # 1 "{{.+}}.c"
-#define X 3
-// CHECK: #define X 3
-#undef X
-// CHECK: #undef X

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-options.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-options.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/dump-options.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang %s -E -dD | grep __INTMAX_MAX__
-// RUN: %clang %s -E -dM | grep __INTMAX_MAX__
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/dump_macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/dump_macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/dump_macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -E -dM %s -o - | FileCheck %s -strict-whitespace
-
-// Space at end even without expansion tokens
-// CHECK: #define A(x) 
-#define A(x)
-
-// Space before expansion list.
-// CHECK: #define B(x,y) x y
-#define B(x,y)x y
-
-// No space in argument list.
-// CHECK: #define C(x,y) x y
-#define C(x, y) x y
-
-// No paste avoidance.
-// CHECK: #define D() ..
-#define D() ..
-
-// Simple test.
-// CHECK: #define E .
-// CHECK: #define F X()Y
-#define E .
-#define F X()Y
-
-// gcc prints macros at end of translation unit, so last one wins.
-// CHECK: #define G 2
-#define G 1
-#undef G
-#define G 2
-
-// Variadic macros of various sorts. PR5699
-
-// CHECK: H(x,...) __VA_ARGS__
-#define H(x, ...) __VA_ARGS__
-// CHECK: I(...) __VA_ARGS__
-#define I(...) __VA_ARGS__
-// CHECK: J(x...) __VA_ARGS__
-#define J(x ...) __VA_ARGS__

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/dumptokens_phyloc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/dumptokens_phyloc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/dumptokens_phyloc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -dump-tokens %s 2>&1 | grep "Spelling=.*dumptokens_phyloc.c:3:20"
-
-#define TESTPHYLOC 10
-
-TESTPHYLOC

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_comma.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_comma.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_comma.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// Comma is not allowed in C89
-// RUN: not %clang_cc1 -E %s -std=c89 -pedantic-errors
-
-// Comma is allowed if unevaluated in C99
-// RUN: %clang_cc1 -E %s -std=c99 -pedantic-errors 
-
-// PR2279
-
-#if 0? 1,2:3
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_define_expansion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_define_expansion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_define_expansion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -E -CC -pedantic -verify
-// expected-no-diagnostics
-
-#define FOO && 1
-#if defined FOO FOO
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_invalid_tok.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_invalid_tok.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_invalid_tok.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: not %clang_cc1 -E %s 2>&1 | grep 'invalid token at start of a preprocessor expression'
-// RUN: not %clang_cc1 -E %s 2>&1 | grep 'token is not a valid binary operator in a preprocessor subexpression'
-// RUN: not %clang_cc1 -E %s 2>&1 | grep ':14: error: expected end of line in preprocessor expression'
-// PR2220
-
-#if 1 * * 2
-#endif
-
-#if 4 [ 2
-#endif
-
-
-// PR2284 - The constant-expr production does not including comma.
-#if 1 ? 2 : 0, 1
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_liveness.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_liveness.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_liveness.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-/* RUN: %clang_cc1 -E %s -DNO_ERRORS -Werror -Wundef
-   RUN: not %clang_cc1 -E %s
- */
-
-#ifdef NO_ERRORS
-/* None of these divisions by zero are in live parts of the expression, do not
-   emit any diagnostics. */
-
-#define MACRO_0 0
-#define MACRO_1 1
-
-#if MACRO_0 && 10 / MACRO_0
-foo
-#endif
-
-#if MACRO_1 || 10 / MACRO_0
-bar
-#endif
-
-#if 0 ? 124/0 : 42
-#endif
-
-// PR2279
-#if 0 ? 1/0: 2
-#else
-#error
-#endif
-
-// PR2279
-#if 1 ? 2 ? 3 : 4 : 5
-#endif
-
-// PR2284
-#if 1 ? 0: 1 ? 1/0: 1/0
-#endif
-
-#else
-
-
-/* The 1/0 is live, it should error out. */
-#if 0 && 1 ? 4 : 1 / 0
-baz
-#endif
-
-
-#endif
-
-// rdar://6505352
-// -Wundef should not warn about use of undefined identifier if not live.
-#if (!defined(XXX) || XXX > 42)
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_multichar.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_multichar.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_multichar.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 < %s -E -verify -triple i686-pc-linux-gnu
-// expected-no-diagnostics
-
-#if (('1234' >> 24) != '1')
-#error Bad multichar constant calculation!
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_usual_conversions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_usual_conversions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/expr_usual_conversions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -E -verify
-
-#define INTMAX_MIN (-9223372036854775807LL -1)
-
-#if (-42 + 0U) /* expected-warning {{left side of operator converted from negative value to unsigned: -42 to 18446744073709551574}} */  \
-  / -2         /* expected-warning {{right side of operator converted from negative value to unsigned: -2 to 18446744073709551614}} */
-foo
-#endif
-
-// Shifts don't want the usual conversions: PR2279
-#if (2 << 1U) - 30 >= 0
-#error
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/extension-warning.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/extension-warning.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/extension-warning.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-// The preprocessor shouldn't warn about extensions within macro bodies that
-// aren't expanded.
-#define TY typeof
-#define TY1 typeof(1)
-
-// But we should warn here
-TY1 x; // expected-warning {{extension}}
-TY(1) x; // FIXME: And we should warn here
-
-// Note: this warning intentionally doesn't trigger on keywords like
-// __attribute; the standard allows implementation-defined extensions
-// prefixed with "__".
-// Current list of keywords this can trigger on:
-// inline, restrict, asm, typeof, _asm
-
-void whatever() {}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/feature_tests.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/feature_tests.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/feature_tests.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 %s -triple=i686-apple-darwin9
-// RUN: %clang_cc1 %s -E -triple=i686-apple-darwin9
-#ifndef __has_feature
-#error Should have __has_feature
-#endif
-
-
-#if __has_feature(something_we_dont_have)
-#error Bad
-#endif
-
-#if  !__has_builtin(__builtin_huge_val) || \
-     !__has_builtin(__builtin_shufflevector) || \
-     !__has_builtin(__builtin_trap) || \
-     !__has_builtin(__c11_atomic_init) || \
-     !__has_feature(attribute_analyzer_noreturn) || \
-     !__has_feature(attribute_overloadable)
-#error Clang should have these
-#endif
-
-#if __has_builtin(__builtin_insanity)
-#error Clang should not have this
-#endif
-
-#if !__has_feature(__attribute_deprecated_with_message__)
-#error Feature name in double underscores does not work
-#endif
-
-// Make sure we have x86 builtins only (forced with target triple).
-
-#if !__has_builtin(__builtin_ia32_emms) || \
-    __has_builtin(__builtin_altivec_abs_v4sf)
-#error Broken handling of target-specific builtins
-#endif
-
-// Macro expansion does not occur in the parameter to __has_builtin,
-// __has_feature, etc. (as is also expected behaviour for ordinary
-// macros), so the following should not expand:
-
-#define MY_ALIAS_BUILTIN __c11_atomic_init
-#define MY_ALIAS_FEATURE attribute_overloadable
-
-#if __has_builtin(MY_ALIAS_BUILTIN) || __has_feature(MY_ALIAS_FEATURE)
-#error Alias expansion not allowed
-#endif
-
-// But deferring should expand:
-
-#define HAS_BUILTIN(X) __has_builtin(X)
-#define HAS_FEATURE(X) __has_feature(X)
-
-#if !HAS_BUILTIN(MY_ALIAS_BUILTIN) || !HAS_FEATURE(MY_ALIAS_FEATURE)
-#error Expansion should have occurred
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/file_to_include.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/file_to_include.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/file_to_include.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-
-#warning file successfully included
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/first-line-indent.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/first-line-indent.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/first-line-indent.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-       foo
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-       bar
-
-// CHECK: {{^       }}foo
-// CHECK: {{^       }}bar
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/function_macro_file.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/function_macro_file.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/function_macro_file.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-/* RUN: %clang_cc1 -E -P %s | grep f
- */
-
-#include "function_macro_file.h"
-()

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/function_macro_file.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/function_macro_file.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/function_macro_file.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-
-#define f() x
-f

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/has_attribute.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/has_attribute.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/has_attribute.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -E %s -o - | FileCheck %s
-
-// CHECK: always_inline
-#if __has_attribute(always_inline)
-int always_inline();
-#endif
-
-// CHECK: __always_inline__
-#if __has_attribute(__always_inline__)
-int __always_inline__();
-#endif
-
-// CHECK: no_dummy_attribute
-#if !__has_attribute(dummy_attribute)
-int no_dummy_attribute();
-#endif
-
-// CHECK: has_has_attribute
-#ifdef __has_attribute
-int has_has_attribute();
-#endif
-
-// CHECK: has_something_we_dont_have
-#if !__has_attribute(something_we_dont_have)
-int has_something_we_dont_have();
-#endif
-
-// rdar://10253857
-#if __has_attribute(__const)
- int fn3() __attribute__ ((__const));
-#endif
-
-#if __has_attribute(const)
- static int constFunction() __attribute__((const));
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/has_include.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/has_include.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/has_include.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,187 +0,0 @@
-// RUN: %clang_cc1 -ffreestanding -Eonly -verify %s
-
-// Try different path permutations of __has_include with existing file.
-#if __has_include("stdint.h")
-#else
-  #error "__has_include failed (1)."
-#endif
-
-#if __has_include(<stdint.h>)
-#else
-  #error "__has_include failed (2)."
-#endif
-
-// Try unary expression.
-#if !__has_include("stdint.h")
-  #error "__has_include failed (5)."
-#endif
-
-// Try binary expression.
-#if __has_include("stdint.h") && __has_include("stddef.h")
-#else
-  #error "__has_include failed (6)."
-#endif
-
-// Try non-existing file.
-#if __has_include("blahblah.h")
-  #error "__has_include failed (7)."
-#endif
-
-// Try defined.
-#if !defined(__has_include)
-  #error "defined(__has_include) failed (8)."
-#endif
-
-// Try different path permutations of __has_include_next with existing file.
-#if __has_include_next("stddef.h") // expected-warning {{#include_next in primary source file}}
-#else
-  #error "__has_include failed (1)."
-#endif
-
-#if __has_include_next(<stddef.h>) // expected-warning {{#include_next in primary source file}}
-#else
-  #error "__has_include failed (2)."
-#endif
-
-// Try unary expression.
-#if !__has_include_next("stdint.h") // expected-warning {{#include_next in primary source file}}
-  #error "__has_include_next failed (5)."
-#endif
-
-// Try binary expression.
-#if __has_include_next("stdint.h") && __has_include("stddef.h") // expected-warning {{#include_next in primary source file}}
-#else
-  #error "__has_include_next failed (6)."
-#endif
-
-// Try non-existing file.
-#if __has_include_next("blahblah.h") // expected-warning {{#include_next in primary source file}}
-  #error "__has_include_next failed (7)."
-#endif
-
-// Try defined.
-#if !defined(__has_include_next)
-  #error "defined(__has_include_next) failed (8)."
-#endif
-
-// Fun with macros
-#define MACRO1 __has_include(<stdint.h>)
-#define MACRO2 ("stdint.h")
-#define MACRO3 ("blahblah.h")
-#define MACRO4 blahblah.h>)
-#define MACRO5 <stdint.h>
-
-#if !MACRO1
-  #error "__has_include with macro failed (1)."
-#endif
-
-#if !__has_include MACRO2
-  #error "__has_include with macro failed (2)."
-#endif
-
-#if __has_include MACRO3
-  #error "__has_include with macro failed (3)."
-#endif
-
-#if __has_include(<MACRO4
-  #error "__has_include with macro failed (4)."
-#endif
-
-#if !__has_include(MACRO5)
-  #error "__has_include with macro failed (2)."
-#endif
-
-// Try as non-preprocessor directives
-void foo( void ) {
-  __has_include_next("stdint.h")  // expected-warning {{#include_next in primary source file}} expected-error {{__has_include_next must be used within a preprocessing directive}}
-  __has_include("stdint.h")  // expected-error {{__has_include must be used within a preprocessing directive}}
-}
-
-MACRO1  // expected-error {{__has_include must be used within a preprocessing directive}}
-
-#if 1
-MACRO1  // expected-error {{__has_include must be used within a preprocessing directive}}
-#endif
-
-#if 0
-#elif 1
-MACRO1  // expected-error {{__has_include must be used within a preprocessing directive}}
-#endif
-
-#if 0
-MACRO1  // This should be fine because it is never actually reached
-#endif
-
-
-// Try badly formed expressions.
-// FIXME: We can recover better in almost all of these cases. (PR13335)
-
-// expected-error at +1 {{missing '(' after '__has_include'}}
-#if __has_include "stdint.h")
-#endif
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}} expected-error at +1 {{token is not a valid binary operator in a preprocessor subexpression}}
-#if __has_include(stdint.h)
-#endif
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}}
-#if __has_include()
-#endif
-
-// expected-error at +1 {{missing '(' after '__has_include'}}
-#if __has_include)
-#endif
-
-// expected-error at +1 {{missing '(' after '__has_include'}}
-#if __has_include<stdint.h>)
-#endif
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}} expected-warning at +1 {{missing terminating '"' character}}  expected-error at +1 {{invalid token at start of a preprocessor expression}}
-#if __has_include("stdint.h)
-#endif
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}} expected-warning at +1 {{missing terminating '"' character}} expected-error at +1 {{token is not a valid binary operator in a preprocessor subexpression}}
-#if __has_include(stdint.h")
-#endif
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}} expected-error at +1 {{token is not a valid binary operator in a preprocessor subexpression}}
-#if __has_include(stdint.h>)
-#endif
-
-// expected-error at +1 {{__has_include must be used within a preprocessing directive}}
-__has_include
-
-// expected-error at +1 {{missing ')' after '__has_include'}} // expected-error at +1 {{expected value in expression}}  // expected-note at +1 {{to match this '('}}
-#if __has_include("stdint.h"
-#endif
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}} // expected-error at +1 {{expected value in expression}}
-#if __has_include(
-#endif
-
-// expected-error at +1 {{missing '(' after '__has_include'}} // expected-error at +1 {{expected value in expression}}
-#if __has_include
-#endif
-
-// expected-error at +1 {{missing ')' after '__has_include'}}  // expected-error at +1 {{expected value in expression}}  // expected-note at +1 {{to match this '('}}
-#if __has_include(<stdint.h>
-#endif
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}} // expected-error at +1 {{expected value in expression}}
-#if __has_include(<stdint.h)
-#endif
-
-#define HAS_INCLUDE(header) __has_include(header)
-#if HAS_INCLUDE(<stdint.h>)
-#else
-  #error "__has_include failed (9)."
-#endif
-
-#if FOO
-#elif __has_include(<foo>)
-#endif
-
-// PR15539
-#ifdef FOO
-#elif __has_include(<foo>)
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/hash_line.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/hash_line.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/hash_line.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// The 1 and # should not go on the same line.
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-// CHECK-NOT: 1{{.*}}#
-// CHECK: {{^1$}}
-// CHECK-NOT: 1{{.*}}#
-// CHECK: {{^      #$}}
-// CHECK-NOT: 1{{.*}}#
-1
-#define EMPTY
-EMPTY #
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/hash_space.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/hash_space.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/hash_space.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -E | grep " #"
-
-// Should put a space before the # so that -fpreprocessed mode doesn't
-// macro expand this again.
-#define HASH #
-HASH define foo bar

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/header_lookup1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/header_lookup1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/header_lookup1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang -fno-ms-extensions %s -E | grep 'stddef.h.*3'
-#include <stddef.h>

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/if_warning.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/if_warning.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/if_warning.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 %s -Eonly -Werror=undef -verify
-// RUN: %clang_cc1 %s -Eonly -Werror-undef -verify
-
-extern int x;
-
-#if foo   // expected-error {{'foo' is not defined, evaluates to 0}}
-#endif
-
-#ifdef foo
-#endif
-
-#if defined(foo)
-#endif
-
-
-// PR3938
-#if 0
-#ifdef D
-#else 1       // Should not warn due to C99 6.10p4
-#endif
-#endif
-
-// rdar://9475098
-#if 0
-#else 1   // expected-warning {{extra tokens}}
-#endif
-
-// PR6852
-#if 'somesillylongthing'  // expected-warning {{character constant too long for its type}} \
-                          // expected-warning {{multi-character character constant}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/ifdef-recover.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/ifdef-recover.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/ifdef-recover.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-/* RUN: %clang_cc1 -E %s 2>&1 >/dev/null | grep error: | count 3
- */
-
-#ifdef
-
-#endif
-
-/* End of function-like macro invocation in #ifdef */
-/* PR1936 */
-#define f(x) x
-#if f(2
-#endif
-
-int x;
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/import_self.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/import_self.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/import_self.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -E -I%S %s | grep BODY_OF_FILE | wc -l | grep 1
-
-// This #import should have no effect, as we're importing the current file.
-#import <import_self.c>
-
-BODY_OF_FILE
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -E %s -fno-caret-diagnostics 2>&1 >/dev/null | grep 'file successfully included' | count 3
-
-// XX expands to nothing.
-#define XX
-
-// expand macros to get to file to include
-#define FILE "file_to_include.h"
-#include XX FILE
-
-#include FILE
-
-// normal include
-#include "file_to_include.h"
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -ffreestanding -Eonly -verify %s 
-#  define HEADER <stdarg.h>
-
-#  include HEADER
-
-#include <limits.h> NON_EMPTY // expected-warning {{extra tokens at end of #include directive}}
-
-// PR3916: these are ok.
-#define EMPTY
-#include <limits.h> EMPTY
-#include HEADER  EMPTY
-
-// PR3916
-#define FN limits.h>
-#include <FN
-
-#include <>    // expected-error {{empty filename}}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/include-directive3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -include %S/file_to_include.h -E %s -fno-caret-diagnostics 2>&1 >/dev/null | grep 'file successfully included' | count 1
-// PR3464
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/include-macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/include-macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/include-macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -E -Dtest=FOO -imacros %S/pr2086.h %s | grep 'HERE: test'
-
-// This should not be expanded into FOO because pr2086.h undefs 'test'.
-HERE: test

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/include-pth.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/include-pth.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/include-pth.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -emit-pth %s -o %t
-// RUN: %clang_cc1 -include-pth %t %s -E | grep 'file_to_include' | count 2
-#include "file_to_include.h"

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/indent_macro.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/indent_macro.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/indent_macro.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep '^   zzap$'
-
-// zzap is on a new line, should be indented.
-#define BLAH  zzap
-   BLAH
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2700 +0,0 @@
-// RUN: %clang_cc1 -E -dM -x assembler-with-cpp < /dev/null | FileCheck -check-prefix ASM %s
-//
-// ASM:#define __ASSEMBLER__ 1
-//
-// 
-// RUN: %clang_cc1 -fblocks -E -dM < /dev/null | FileCheck -check-prefix BLOCKS %s
-//
-// BLOCKS:#define __BLOCKS__ 1
-// BLOCKS:#define __block __attribute__((__blocks__(byref)))
-//
-//
-// RUN: %clang_cc1 -x c++ -std=c++1y -E -dM < /dev/null | FileCheck -check-prefix CXX1Y %s
-//
-// CXX1Y:#define __GNUG__
-// CXX1Y:#define __GXX_EXPERIMENTAL_CXX0X__ 1
-// CXX1Y:#define __GXX_RTTI 1
-// CXX1Y:#define __GXX_WEAK__ 1
-// CXX1Y:#define __cplusplus 201305L
-// CXX1Y:#define __private_extern__ extern
-//
-//
-// RUN: %clang_cc1 -x c++ -std=c++11 -E -dM < /dev/null | FileCheck -check-prefix CXX11 %s
-//
-// CXX11:#define __GNUG__
-// CXX11:#define __GXX_EXPERIMENTAL_CXX0X__ 1
-// CXX11:#define __GXX_RTTI 1
-// CXX11:#define __GXX_WEAK__ 1
-// CXX11:#define __cplusplus 201103L
-// CXX11:#define __private_extern__ extern
-//
-// 
-// RUN: %clang_cc1 -x c++ -std=c++98 -E -dM < /dev/null | FileCheck -check-prefix CXX98 %s
-// 
-// CXX98:#define __GNUG__
-// CXX98:#define __GXX_RTTI 1
-// CXX98:#define __GXX_WEAK__ 1
-// CXX98:#define __cplusplus 199711L
-// CXX98:#define __private_extern__ extern
-//
-// 
-// RUN: %clang_cc1 -fdeprecated-macro -E -dM < /dev/null | FileCheck -check-prefix DEPRECATED %s
-//
-// DEPRECATED:#define __DEPRECATED 1
-//
-// 
-// RUN: %clang_cc1 -std=c99 -E -dM < /dev/null | FileCheck -check-prefix C99 %s
-//
-// C99:#define __STDC_VERSION__ 199901L
-// C99:#define __STRICT_ANSI__ 1
-//
-// 
-// RUN: %clang_cc1 -E -dM < /dev/null | FileCheck -check-prefix COMMON %s
-//
-// COMMON:#define __CONSTANT_CFSTRINGS__ 1
-// COMMON:#define __FINITE_MATH_ONLY__ 0
-// COMMON:#define __GNUC_MINOR__
-// COMMON:#define __GNUC_PATCHLEVEL__
-// COMMON:#define __GNUC_STDC_INLINE__ 1
-// COMMON:#define __GNUC__
-// COMMON:#define __GXX_ABI_VERSION
-// COMMON:#define __ORDER_BIG_ENDIAN__ 4321
-// COMMON:#define __ORDER_LITTLE_ENDIAN__ 1234
-// COMMON:#define __ORDER_PDP_ENDIAN__ 3412
-// COMMON:#define __STDC_HOSTED__ 1
-// COMMON:#define __STDC_VERSION__
-// COMMON:#define __STDC__ 1
-// COMMON:#define __VERSION__
-// COMMON:#define __clang__ 1
-// COMMON:#define __clang_major__ {{[0-9]+}}
-// COMMON:#define __clang_minor__ {{[0-9]+}}
-// COMMON:#define __clang_patchlevel__ {{[0-9]+}}
-// COMMON:#define __clang_version__
-// COMMON:#define __llvm__ 1
-//
-// 
-// RUN: %clang_cc1 -ffreestanding -E -dM < /dev/null | FileCheck -check-prefix FREESTANDING %s
-// FREESTANDING:#define __STDC_HOSTED__ 0
-//
-//
-// RUN: %clang_cc1 -x c++ -std=gnu++1y -E -dM < /dev/null | FileCheck -check-prefix GXX1Y %s
-//
-// GXX1Y:#define __GNUG__
-// GXX1Y:#define __GXX_WEAK__ 1
-// GXX1Y:#define __cplusplus 201305L
-// GXX1Y:#define __private_extern__ extern
-//
-//
-// RUN: %clang_cc1 -x c++ -std=gnu++11 -E -dM < /dev/null | FileCheck -check-prefix GXX11 %s
-//
-// GXX11:#define __GNUG__
-// GXX11:#define __GXX_WEAK__ 1
-// GXX11:#define __cplusplus 201103L
-// GXX11:#define __private_extern__ extern
-//
-//
-// RUN: %clang_cc1 -x c++ -std=gnu++98 -E -dM < /dev/null | FileCheck -check-prefix GXX98 %s
-//
-// GXX98:#define __GNUG__
-// GXX98:#define __GXX_WEAK__ 1
-// GXX98:#define __cplusplus 199711L
-// GXX98:#define __private_extern__ extern
-//
-// 
-// RUN: %clang_cc1 -std=iso9899:199409 -E -dM < /dev/null | FileCheck -check-prefix C94 %s
-//
-// C94:#define __STDC_VERSION__ 199409L
-//
-// 
-// RUN: %clang_cc1 -fms-extensions -triple i686-pc-win32 -E -dM < /dev/null | FileCheck -check-prefix MSEXT %s
-//
-// MSEXT-NOT:#define __STDC__
-// MSEXT:#define _INTEGRAL_MAX_BITS 64
-// MSEXT-NOT:#define _NATIVE_WCHAR_T_DEFINED 1
-// MSEXT-NOT:#define _WCHAR_T_DEFINED 1
-//
-//
-// RUN: %clang_cc1 -x c++ -fms-extensions -triple i686-pc-win32 -E -dM < /dev/null | FileCheck -check-prefix MSEXT-CXX %s
-//
-// MSEXT-CXX:#define _NATIVE_WCHAR_T_DEFINED 1
-// MSEXT-CXX:#define _WCHAR_T_DEFINED 1
-//
-//
-// RUN: %clang_cc1 -x c++ -fno-wchar -fms-extensions -triple i686-pc-win32 -E -dM < /dev/null | FileCheck -check-prefix MSEXT-CXX-NOWCHAR %s
-//
-// MSEXT-CXX-NOWCHAR-NOT:#define _NATIVE_WCHAR_T_DEFINED 1
-// MSEXT-CXX-NOWCHAR-NOT:#define _WCHAR_T_DEFINED 1
-//
-// 
-// RUN: %clang_cc1 -x objective-c -E -dM < /dev/null | FileCheck -check-prefix OBJC %s
-//
-// OBJC:#define OBJC_NEW_PROPERTIES 1
-// OBJC:#define __NEXT_RUNTIME__ 1
-// OBJC:#define __OBJC__ 1
-//
-//
-// RUN: %clang_cc1 -x objective-c -fobjc-gc -E -dM < /dev/null | FileCheck -check-prefix OBJCGC %s
-//
-// OBJCGC:#define __OBJC_GC__ 1
-//
-// 
-// RUN: %clang_cc1 -x objective-c -fobjc-exceptions -E -dM < /dev/null | FileCheck -check-prefix NONFRAGILE %s
-//
-// NONFRAGILE:#define OBJC_ZEROCOST_EXCEPTIONS 1
-// NONFRAGILE:#define __OBJC2__ 1
-//
-//
-// RUN: %clang_cc1 -O0 -E -dM < /dev/null | FileCheck -check-prefix O0 %s
-//
-// O0:#define __NO_INLINE__ 1
-// O0-NOT:#define __OPTIMIZE_SIZE__
-// O0-NOT:#define __OPTIMIZE__
-//
-//
-// RUN: %clang_cc1 -fno-inline -O3 -E -dM < /dev/null | FileCheck -check-prefix NO_INLINE %s
-//
-// NO_INLINE:#define __NO_INLINE__ 1
-// NO_INLINE-NOT:#define __OPTIMIZE_SIZE__
-// NO_INLINE:#define __OPTIMIZE__
-//
-//
-// RUN: %clang_cc1 -O1 -E -dM < /dev/null | FileCheck -check-prefix O1 %s
-//
-// O1-NOT:#define __OPTIMIZE_SIZE__
-// O1:#define __OPTIMIZE__ 1
-//
-//
-// RUN: %clang_cc1 -Os -E -dM < /dev/null | FileCheck -check-prefix Os %s
-//
-// Os:#define __OPTIMIZE_SIZE__ 1
-// Os:#define __OPTIMIZE__ 1
-//
-//
-// RUN: %clang_cc1 -Oz -E -dM < /dev/null | FileCheck -check-prefix Oz %s
-//
-// Oz:#define __OPTIMIZE_SIZE__ 1
-// Oz:#define __OPTIMIZE__ 1
-//
-//
-// RUN: %clang_cc1 -fpascal-strings -E -dM < /dev/null | FileCheck -check-prefix PASCAL %s
-//
-// PASCAL:#define __PASCAL_STRINGS__ 1
-//
-// 
-// RUN: %clang_cc1 -E -dM < /dev/null | FileCheck -check-prefix SCHAR %s
-// 
-// SCHAR:#define __STDC__ 1
-// SCHAR-NOT:#define __UNSIGNED_CHAR__
-// SCHAR:#define __clang__ 1
-//
-// RUN: %clang_cc1 -E -dM -fshort-wchar < /dev/null | FileCheck -check-prefix SHORTWCHAR %s
-//
-// SHORTWCHAR: #define __SIZEOF_WCHAR_T__ 2
-// SHORTWCHAR: #define __WCHAR_MAX__ 65535U
-// SHORTWCHAR: #define __WCHAR_TYPE__ unsigned short
-// SHORTWCHAR: #define __WCHAR_WIDTH__ 16
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-none-none < /dev/null | FileCheck -check-prefix ARM %s
-//
-// ARM-NOT:#define _LP64
-// ARM:#define __APCS_32__ 1
-// ARM:#define __ARMEL__ 1
-// ARM:#define __ARM_ARCH_6J__ 1
-// ARM:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// ARM:#define __CHAR16_TYPE__ unsigned short
-// ARM:#define __CHAR32_TYPE__ unsigned int
-// ARM:#define __CHAR_BIT__ 8
-// ARM:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// ARM:#define __DBL_DIG__ 15
-// ARM:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// ARM:#define __DBL_HAS_DENORM__ 1
-// ARM:#define __DBL_HAS_INFINITY__ 1
-// ARM:#define __DBL_HAS_QUIET_NAN__ 1
-// ARM:#define __DBL_MANT_DIG__ 53
-// ARM:#define __DBL_MAX_10_EXP__ 308
-// ARM:#define __DBL_MAX_EXP__ 1024
-// ARM:#define __DBL_MAX__ 1.7976931348623157e+308
-// ARM:#define __DBL_MIN_10_EXP__ (-307)
-// ARM:#define __DBL_MIN_EXP__ (-1021)
-// ARM:#define __DBL_MIN__ 2.2250738585072014e-308
-// ARM:#define __DECIMAL_DIG__ 17
-// ARM:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// ARM:#define __FLT_DIG__ 6
-// ARM:#define __FLT_EPSILON__ 1.19209290e-7F
-// ARM:#define __FLT_EVAL_METHOD__ 0
-// ARM:#define __FLT_HAS_DENORM__ 1
-// ARM:#define __FLT_HAS_INFINITY__ 1
-// ARM:#define __FLT_HAS_QUIET_NAN__ 1
-// ARM:#define __FLT_MANT_DIG__ 24
-// ARM:#define __FLT_MAX_10_EXP__ 38
-// ARM:#define __FLT_MAX_EXP__ 128
-// ARM:#define __FLT_MAX__ 3.40282347e+38F
-// ARM:#define __FLT_MIN_10_EXP__ (-37)
-// ARM:#define __FLT_MIN_EXP__ (-125)
-// ARM:#define __FLT_MIN__ 1.17549435e-38F
-// ARM:#define __FLT_RADIX__ 2
-// ARM:#define __INT16_TYPE__ short
-// ARM:#define __INT32_TYPE__ int
-// ARM:#define __INT64_C_SUFFIX__ LL
-// ARM:#define __INT64_TYPE__ long long int
-// ARM:#define __INT8_TYPE__ char
-// ARM:#define __INTMAX_MAX__ 9223372036854775807LL
-// ARM:#define __INTMAX_TYPE__ long long int
-// ARM:#define __INTMAX_WIDTH__ 64
-// ARM:#define __INTPTR_TYPE__ long int
-// ARM:#define __INTPTR_WIDTH__ 32
-// ARM:#define __INT_MAX__ 2147483647
-// ARM:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// ARM:#define __LDBL_DIG__ 15
-// ARM:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// ARM:#define __LDBL_HAS_DENORM__ 1
-// ARM:#define __LDBL_HAS_INFINITY__ 1
-// ARM:#define __LDBL_HAS_QUIET_NAN__ 1
-// ARM:#define __LDBL_MANT_DIG__ 53
-// ARM:#define __LDBL_MAX_10_EXP__ 308
-// ARM:#define __LDBL_MAX_EXP__ 1024
-// ARM:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// ARM:#define __LDBL_MIN_10_EXP__ (-307)
-// ARM:#define __LDBL_MIN_EXP__ (-1021)
-// ARM:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// ARM:#define __LITTLE_ENDIAN__ 1
-// ARM:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// ARM:#define __LONG_MAX__ 2147483647L
-// ARM-NOT:#define __LP64__
-// ARM:#define __POINTER_WIDTH__ 32
-// ARM:#define __PTRDIFF_TYPE__ int
-// ARM:#define __PTRDIFF_WIDTH__ 32
-// ARM:#define __REGISTER_PREFIX__
-// ARM:#define __SCHAR_MAX__ 127
-// ARM:#define __SHRT_MAX__ 32767
-// ARM:#define __SIG_ATOMIC_WIDTH__ 32
-// ARM:#define __SIZEOF_DOUBLE__ 8
-// ARM:#define __SIZEOF_FLOAT__ 4
-// ARM:#define __SIZEOF_INT__ 4
-// ARM:#define __SIZEOF_LONG_DOUBLE__ 8
-// ARM:#define __SIZEOF_LONG_LONG__ 8
-// ARM:#define __SIZEOF_LONG__ 4
-// ARM:#define __SIZEOF_POINTER__ 4
-// ARM:#define __SIZEOF_PTRDIFF_T__ 4
-// ARM:#define __SIZEOF_SHORT__ 2
-// ARM:#define __SIZEOF_SIZE_T__ 4
-// ARM:#define __SIZEOF_WCHAR_T__ 4
-// ARM:#define __SIZEOF_WINT_T__ 4
-// ARM:#define __SIZE_MAX__ 4294967295U
-// ARM:#define __SIZE_TYPE__ unsigned int
-// ARM:#define __SIZE_WIDTH__ 32
-// ARM:#define __THUMB_INTERWORK__ 1
-// ARM:#define __UINTMAX_TYPE__ long long unsigned int
-// ARM:#define __USER_LABEL_PREFIX__ _
-// ARM:#define __WCHAR_MAX__ 4294967295U
-// ARM:#define __WCHAR_TYPE__ unsigned int
-// ARM:#define __WCHAR_WIDTH__ 32
-// ARM:#define __WINT_TYPE__ int
-// ARM:#define __WINT_WIDTH__ 32
-// ARM:#define __arm 1
-// ARM:#define __arm__ 1
-
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-none-linux-gnueabi -target-feature +soft-float -target-feature +soft-float-abi < /dev/null | FileCheck -check-prefix ARMEABISOFTFP %s
-//
-// ARM-NOT:#define _LP64
-// ARMEABISOFTFP:#define __APCS_32__ 1
-// ARMEABISOFTFP:#define __ARMEL__ 1
-// ARMEABISOFTFP:#define __ARM_ARCH 6
-// ARMEABISOFTFP:#define __ARM_ARCH_6J__ 1
-// ARMEABISOFTFP:#define __ARM_EABI__ 1
-// ARMEABISOFTFP:#define __ARM_PCS 1
-// ARMEABISOFTFP-NOT:#define __ARM_PCS_VFP 1
-// ARMEABISOFTFP:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// ARMEABISOFTFP:#define __CHAR16_TYPE__ unsigned short
-// ARMEABISOFTFP:#define __CHAR32_TYPE__ unsigned int
-// ARMEABISOFTFP:#define __CHAR_BIT__ 8
-// ARMEABISOFTFP:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// ARMEABISOFTFP:#define __DBL_DIG__ 15
-// ARMEABISOFTFP:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// ARMEABISOFTFP:#define __DBL_HAS_DENORM__ 1
-// ARMEABISOFTFP:#define __DBL_HAS_INFINITY__ 1
-// ARMEABISOFTFP:#define __DBL_HAS_QUIET_NAN__ 1
-// ARMEABISOFTFP:#define __DBL_MANT_DIG__ 53
-// ARMEABISOFTFP:#define __DBL_MAX_10_EXP__ 308
-// ARMEABISOFTFP:#define __DBL_MAX_EXP__ 1024
-// ARMEABISOFTFP:#define __DBL_MAX__ 1.7976931348623157e+308
-// ARMEABISOFTFP:#define __DBL_MIN_10_EXP__ (-307)
-// ARMEABISOFTFP:#define __DBL_MIN_EXP__ (-1021)
-// ARMEABISOFTFP:#define __DBL_MIN__ 2.2250738585072014e-308
-// ARMEABISOFTFP:#define __DECIMAL_DIG__ 17
-// ARMEABISOFTFP:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// ARMEABISOFTFP:#define __FLT_DIG__ 6
-// ARMEABISOFTFP:#define __FLT_EPSILON__ 1.19209290e-7F
-// ARMEABISOFTFP:#define __FLT_EVAL_METHOD__ 0
-// ARMEABISOFTFP:#define __FLT_HAS_DENORM__ 1
-// ARMEABISOFTFP:#define __FLT_HAS_INFINITY__ 1
-// ARMEABISOFTFP:#define __FLT_HAS_QUIET_NAN__ 1
-// ARMEABISOFTFP:#define __FLT_MANT_DIG__ 24
-// ARMEABISOFTFP:#define __FLT_MAX_10_EXP__ 38
-// ARMEABISOFTFP:#define __FLT_MAX_EXP__ 128
-// ARMEABISOFTFP:#define __FLT_MAX__ 3.40282347e+38F
-// ARMEABISOFTFP:#define __FLT_MIN_10_EXP__ (-37)
-// ARMEABISOFTFP:#define __FLT_MIN_EXP__ (-125)
-// ARMEABISOFTFP:#define __FLT_MIN__ 1.17549435e-38F
-// ARMEABISOFTFP:#define __FLT_RADIX__ 2
-// ARMEABISOFTFP:#define __INT16_TYPE__ short
-// ARMEABISOFTFP:#define __INT32_TYPE__ int
-// ARMEABISOFTFP:#define __INT64_C_SUFFIX__ LL
-// ARMEABISOFTFP:#define __INT64_TYPE__ long long int
-// ARMEABISOFTFP:#define __INT8_TYPE__ char
-// ARMEABISOFTFP:#define __INTMAX_MAX__ 9223372036854775807LL
-// ARMEABISOFTFP:#define __INTMAX_TYPE__ long long int
-// ARMEABISOFTFP:#define __INTMAX_WIDTH__ 64
-// ARMEABISOFTFP:#define __INTPTR_TYPE__ long int
-// ARMEABISOFTFP:#define __INTPTR_WIDTH__ 32
-// ARMEABISOFTFP:#define __INT_MAX__ 2147483647
-// ARMEABISOFTFP:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// ARMEABISOFTFP:#define __LDBL_DIG__ 15
-// ARMEABISOFTFP:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// ARMEABISOFTFP:#define __LDBL_HAS_DENORM__ 1
-// ARMEABISOFTFP:#define __LDBL_HAS_INFINITY__ 1
-// ARMEABISOFTFP:#define __LDBL_HAS_QUIET_NAN__ 1
-// ARMEABISOFTFP:#define __LDBL_MANT_DIG__ 53
-// ARMEABISOFTFP:#define __LDBL_MAX_10_EXP__ 308
-// ARMEABISOFTFP:#define __LDBL_MAX_EXP__ 1024
-// ARMEABISOFTFP:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// ARMEABISOFTFP:#define __LDBL_MIN_10_EXP__ (-307)
-// ARMEABISOFTFP:#define __LDBL_MIN_EXP__ (-1021)
-// ARMEABISOFTFP:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// ARMEABISOFTFP:#define __LITTLE_ENDIAN__ 1
-// ARMEABISOFTFP:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// ARMEABISOFTFP:#define __LONG_MAX__ 2147483647L
-// ARMEABISOFTFP-NOT:#define __LP64__
-// ARMEABISOFTFP:#define __POINTER_WIDTH__ 32
-// ARMEABISOFTFP:#define __PTRDIFF_TYPE__ int
-// ARMEABISOFTFP:#define __PTRDIFF_WIDTH__ 32
-// ARMEABISOFTFP:#define __REGISTER_PREFIX__
-// ARMEABISOFTFP:#define __SCHAR_MAX__ 127
-// ARMEABISOFTFP:#define __SHRT_MAX__ 32767
-// ARMEABISOFTFP:#define __SIG_ATOMIC_WIDTH__ 32
-// ARMEABISOFTFP:#define __SIZEOF_DOUBLE__ 8
-// ARMEABISOFTFP:#define __SIZEOF_FLOAT__ 4
-// ARMEABISOFTFP:#define __SIZEOF_INT__ 4
-// ARMEABISOFTFP:#define __SIZEOF_LONG_DOUBLE__ 8
-// ARMEABISOFTFP:#define __SIZEOF_LONG_LONG__ 8
-// ARMEABISOFTFP:#define __SIZEOF_LONG__ 4
-// ARMEABISOFTFP:#define __SIZEOF_POINTER__ 4
-// ARMEABISOFTFP:#define __SIZEOF_PTRDIFF_T__ 4
-// ARMEABISOFTFP:#define __SIZEOF_SHORT__ 2
-// ARMEABISOFTFP:#define __SIZEOF_SIZE_T__ 4
-// ARMEABISOFTFP:#define __SIZEOF_WCHAR_T__ 4
-// ARMEABISOFTFP:#define __SIZEOF_WINT_T__ 4
-// ARMEABISOFTFP:#define __SIZE_MAX__ 4294967295U
-// ARMEABISOFTFP:#define __SIZE_TYPE__ unsigned int
-// ARMEABISOFTFP:#define __SIZE_WIDTH__ 32
-// ARMEABISOFTFP:#define __SOFTFP__ 1
-// ARMEABISOFTFP:#define __THUMB_INTERWORK__ 1
-// ARMEABISOFTFP:#define __UINTMAX_TYPE__ long long unsigned int
-// ARMEABISOFTFP:#define __USER_LABEL_PREFIX__
-// ARMEABISOFTFP:#define __WCHAR_MAX__ 4294967295U
-// ARMEABISOFTFP:#define __WCHAR_TYPE__ unsigned int
-// ARMEABISOFTFP:#define __WCHAR_WIDTH__ 32
-// ARMEABISOFTFP:#define __WINT_TYPE__ unsigned int
-// ARMEABISOFTFP:#define __WINT_WIDTH__ 32
-// ARMEABISOFTFP:#define __arm 1
-// ARMEABISOFTFP:#define __arm__ 1
-
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-none-linux-gnueabi < /dev/null | FileCheck -check-prefix ARMEABIHARDFP %s
-//
-// ARM-NOT:#define _LP64
-// ARMEABIHARDFP:#define __APCS_32__ 1
-// ARMEABIHARDFP:#define __ARMEL__ 1
-// ARMEABIHARDFP:#define __ARM_ARCH 6
-// ARMEABIHARDFP:#define __ARM_ARCH_6J__ 1
-// ARMEABIHARDFP:#define __ARM_EABI__ 1
-// ARMEABIHARDFP:#define __ARM_PCS 1
-// ARMEABIHARDFP:#define __ARM_PCS_VFP 1
-// ARMEABIHARDFP:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// ARMEABIHARDFP:#define __CHAR16_TYPE__ unsigned short
-// ARMEABIHARDFP:#define __CHAR32_TYPE__ unsigned int
-// ARMEABIHARDFP:#define __CHAR_BIT__ 8
-// ARMEABIHARDFP:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// ARMEABIHARDFP:#define __DBL_DIG__ 15
-// ARMEABIHARDFP:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// ARMEABIHARDFP:#define __DBL_HAS_DENORM__ 1
-// ARMEABIHARDFP:#define __DBL_HAS_INFINITY__ 1
-// ARMEABIHARDFP:#define __DBL_HAS_QUIET_NAN__ 1
-// ARMEABIHARDFP:#define __DBL_MANT_DIG__ 53
-// ARMEABIHARDFP:#define __DBL_MAX_10_EXP__ 308
-// ARMEABIHARDFP:#define __DBL_MAX_EXP__ 1024
-// ARMEABIHARDFP:#define __DBL_MAX__ 1.7976931348623157e+308
-// ARMEABIHARDFP:#define __DBL_MIN_10_EXP__ (-307)
-// ARMEABIHARDFP:#define __DBL_MIN_EXP__ (-1021)
-// ARMEABIHARDFP:#define __DBL_MIN__ 2.2250738585072014e-308
-// ARMEABIHARDFP:#define __DECIMAL_DIG__ 17
-// ARMEABIHARDFP:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// ARMEABIHARDFP:#define __FLT_DIG__ 6
-// ARMEABIHARDFP:#define __FLT_EPSILON__ 1.19209290e-7F
-// ARMEABIHARDFP:#define __FLT_EVAL_METHOD__ 0
-// ARMEABIHARDFP:#define __FLT_HAS_DENORM__ 1
-// ARMEABIHARDFP:#define __FLT_HAS_INFINITY__ 1
-// ARMEABIHARDFP:#define __FLT_HAS_QUIET_NAN__ 1
-// ARMEABIHARDFP:#define __FLT_MANT_DIG__ 24
-// ARMEABIHARDFP:#define __FLT_MAX_10_EXP__ 38
-// ARMEABIHARDFP:#define __FLT_MAX_EXP__ 128
-// ARMEABIHARDFP:#define __FLT_MAX__ 3.40282347e+38F
-// ARMEABIHARDFP:#define __FLT_MIN_10_EXP__ (-37)
-// ARMEABIHARDFP:#define __FLT_MIN_EXP__ (-125)
-// ARMEABIHARDFP:#define __FLT_MIN__ 1.17549435e-38F
-// ARMEABIHARDFP:#define __FLT_RADIX__ 2
-// ARMEABIHARDFP:#define __INT16_TYPE__ short
-// ARMEABIHARDFP:#define __INT32_TYPE__ int
-// ARMEABIHARDFP:#define __INT64_C_SUFFIX__ LL
-// ARMEABIHARDFP:#define __INT64_TYPE__ long long int
-// ARMEABIHARDFP:#define __INT8_TYPE__ char
-// ARMEABIHARDFP:#define __INTMAX_MAX__ 9223372036854775807LL
-// ARMEABIHARDFP:#define __INTMAX_TYPE__ long long int
-// ARMEABIHARDFP:#define __INTMAX_WIDTH__ 64
-// ARMEABIHARDFP:#define __INTPTR_TYPE__ long int
-// ARMEABIHARDFP:#define __INTPTR_WIDTH__ 32
-// ARMEABIHARDFP:#define __INT_MAX__ 2147483647
-// ARMEABIHARDFP:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// ARMEABIHARDFP:#define __LDBL_DIG__ 15
-// ARMEABIHARDFP:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// ARMEABIHARDFP:#define __LDBL_HAS_DENORM__ 1
-// ARMEABIHARDFP:#define __LDBL_HAS_INFINITY__ 1
-// ARMEABIHARDFP:#define __LDBL_HAS_QUIET_NAN__ 1
-// ARMEABIHARDFP:#define __LDBL_MANT_DIG__ 53
-// ARMEABIHARDFP:#define __LDBL_MAX_10_EXP__ 308
-// ARMEABIHARDFP:#define __LDBL_MAX_EXP__ 1024
-// ARMEABIHARDFP:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// ARMEABIHARDFP:#define __LDBL_MIN_10_EXP__ (-307)
-// ARMEABIHARDFP:#define __LDBL_MIN_EXP__ (-1021)
-// ARMEABIHARDFP:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// ARMEABIHARDFP:#define __LITTLE_ENDIAN__ 1
-// ARMEABIHARDFP:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// ARMEABIHARDFP:#define __LONG_MAX__ 2147483647L
-// ARMEABIHARDFP-NOT:#define __LP64__
-// ARMEABIHARDFP:#define __POINTER_WIDTH__ 32
-// ARMEABIHARDFP:#define __PTRDIFF_TYPE__ int
-// ARMEABIHARDFP:#define __PTRDIFF_WIDTH__ 32
-// ARMEABIHARDFP:#define __REGISTER_PREFIX__
-// ARMEABIHARDFP:#define __SCHAR_MAX__ 127
-// ARMEABIHARDFP:#define __SHRT_MAX__ 32767
-// ARMEABIHARDFP:#define __SIG_ATOMIC_WIDTH__ 32
-// ARMEABIHARDFP:#define __SIZEOF_DOUBLE__ 8
-// ARMEABIHARDFP:#define __SIZEOF_FLOAT__ 4
-// ARMEABIHARDFP:#define __SIZEOF_INT__ 4
-// ARMEABIHARDFP:#define __SIZEOF_LONG_DOUBLE__ 8
-// ARMEABIHARDFP:#define __SIZEOF_LONG_LONG__ 8
-// ARMEABIHARDFP:#define __SIZEOF_LONG__ 4
-// ARMEABIHARDFP:#define __SIZEOF_POINTER__ 4
-// ARMEABIHARDFP:#define __SIZEOF_PTRDIFF_T__ 4
-// ARMEABIHARDFP:#define __SIZEOF_SHORT__ 2
-// ARMEABIHARDFP:#define __SIZEOF_SIZE_T__ 4
-// ARMEABIHARDFP:#define __SIZEOF_WCHAR_T__ 4
-// ARMEABIHARDFP:#define __SIZEOF_WINT_T__ 4
-// ARMEABIHARDFP:#define __SIZE_MAX__ 4294967295U
-// ARMEABIHARDFP:#define __SIZE_TYPE__ unsigned int
-// ARMEABIHARDFP:#define __SIZE_WIDTH__ 32
-// ARMEABIHARDFP-NOT:#define __SOFTFP__ 1
-// ARMEABIHARDFP:#define __THUMB_INTERWORK__ 1
-// ARMEABIHARDFP:#define __UINTMAX_TYPE__ long long unsigned int
-// ARMEABIHARDFP:#define __USER_LABEL_PREFIX__
-// ARMEABIHARDFP:#define __WCHAR_MAX__ 4294967295U
-// ARMEABIHARDFP:#define __WCHAR_TYPE__ unsigned int
-// ARMEABIHARDFP:#define __WCHAR_WIDTH__ 32
-// ARMEABIHARDFP:#define __WINT_TYPE__ unsigned int
-// ARMEABIHARDFP:#define __WINT_WIDTH__ 32
-// ARMEABIHARDFP:#define __arm 1
-// ARMEABIHARDFP:#define __arm__ 1
-
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=i386-none-none < /dev/null | FileCheck -check-prefix I386 %s
-//
-// I386-NOT:#define _LP64
-// I386:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// I386:#define __CHAR16_TYPE__ unsigned short
-// I386:#define __CHAR32_TYPE__ unsigned int
-// I386:#define __CHAR_BIT__ 8
-// I386:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// I386:#define __DBL_DIG__ 15
-// I386:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// I386:#define __DBL_HAS_DENORM__ 1
-// I386:#define __DBL_HAS_INFINITY__ 1
-// I386:#define __DBL_HAS_QUIET_NAN__ 1
-// I386:#define __DBL_MANT_DIG__ 53
-// I386:#define __DBL_MAX_10_EXP__ 308
-// I386:#define __DBL_MAX_EXP__ 1024
-// I386:#define __DBL_MAX__ 1.7976931348623157e+308
-// I386:#define __DBL_MIN_10_EXP__ (-307)
-// I386:#define __DBL_MIN_EXP__ (-1021)
-// I386:#define __DBL_MIN__ 2.2250738585072014e-308
-// I386:#define __DECIMAL_DIG__ 21
-// I386:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// I386:#define __FLT_DIG__ 6
-// I386:#define __FLT_EPSILON__ 1.19209290e-7F
-// I386:#define __FLT_EVAL_METHOD__ 2
-// I386:#define __FLT_HAS_DENORM__ 1
-// I386:#define __FLT_HAS_INFINITY__ 1
-// I386:#define __FLT_HAS_QUIET_NAN__ 1
-// I386:#define __FLT_MANT_DIG__ 24
-// I386:#define __FLT_MAX_10_EXP__ 38
-// I386:#define __FLT_MAX_EXP__ 128
-// I386:#define __FLT_MAX__ 3.40282347e+38F
-// I386:#define __FLT_MIN_10_EXP__ (-37)
-// I386:#define __FLT_MIN_EXP__ (-125)
-// I386:#define __FLT_MIN__ 1.17549435e-38F
-// I386:#define __FLT_RADIX__ 2
-// I386:#define __INT16_TYPE__ short
-// I386:#define __INT32_TYPE__ int
-// I386:#define __INT64_C_SUFFIX__ LL
-// I386:#define __INT64_TYPE__ long long int
-// I386:#define __INT8_TYPE__ char
-// I386:#define __INTMAX_MAX__ 9223372036854775807LL
-// I386:#define __INTMAX_TYPE__ long long int
-// I386:#define __INTMAX_WIDTH__ 64
-// I386:#define __INTPTR_TYPE__ int
-// I386:#define __INTPTR_WIDTH__ 32
-// I386:#define __INT_MAX__ 2147483647
-// I386:#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
-// I386:#define __LDBL_DIG__ 18
-// I386:#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
-// I386:#define __LDBL_HAS_DENORM__ 1
-// I386:#define __LDBL_HAS_INFINITY__ 1
-// I386:#define __LDBL_HAS_QUIET_NAN__ 1
-// I386:#define __LDBL_MANT_DIG__ 64
-// I386:#define __LDBL_MAX_10_EXP__ 4932
-// I386:#define __LDBL_MAX_EXP__ 16384
-// I386:#define __LDBL_MAX__ 1.18973149535723176502e+4932L
-// I386:#define __LDBL_MIN_10_EXP__ (-4931)
-// I386:#define __LDBL_MIN_EXP__ (-16381)
-// I386:#define __LDBL_MIN__ 3.36210314311209350626e-4932L
-// I386:#define __LITTLE_ENDIAN__ 1
-// I386:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// I386:#define __LONG_MAX__ 2147483647L
-// I386-NOT:#define __LP64__
-// I386:#define __NO_MATH_INLINES 1
-// I386:#define __POINTER_WIDTH__ 32
-// I386:#define __PTRDIFF_TYPE__ int
-// I386:#define __PTRDIFF_WIDTH__ 32
-// I386:#define __REGISTER_PREFIX__ 
-// I386:#define __SCHAR_MAX__ 127
-// I386:#define __SHRT_MAX__ 32767
-// I386:#define __SIG_ATOMIC_WIDTH__ 32
-// I386:#define __SIZEOF_DOUBLE__ 8
-// I386:#define __SIZEOF_FLOAT__ 4
-// I386:#define __SIZEOF_INT__ 4
-// I386:#define __SIZEOF_LONG_DOUBLE__ 12
-// I386:#define __SIZEOF_LONG_LONG__ 8
-// I386:#define __SIZEOF_LONG__ 4
-// I386:#define __SIZEOF_POINTER__ 4
-// I386:#define __SIZEOF_PTRDIFF_T__ 4
-// I386:#define __SIZEOF_SHORT__ 2
-// I386:#define __SIZEOF_SIZE_T__ 4
-// I386:#define __SIZEOF_WCHAR_T__ 4
-// I386:#define __SIZEOF_WINT_T__ 4
-// I386:#define __SIZE_MAX__ 4294967295U
-// I386:#define __SIZE_TYPE__ unsigned int
-// I386:#define __SIZE_WIDTH__ 32
-// I386:#define __UINTMAX_TYPE__ long long unsigned int
-// I386:#define __USER_LABEL_PREFIX__ _
-// I386:#define __WCHAR_MAX__ 2147483647
-// I386:#define __WCHAR_TYPE__ int
-// I386:#define __WCHAR_WIDTH__ 32
-// I386:#define __WINT_TYPE__ int
-// I386:#define __WINT_WIDTH__ 32
-// I386:#define __i386 1
-// I386:#define __i386__ 1
-// I386:#define i386 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=i386-pc-linux-gnu -target-cpu pentium4 < /dev/null | FileCheck -check-prefix I386-LINUX %s
-//
-// I386-LINUX-NOT:#define _LP64
-// I386-LINUX:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// I386-LINUX:#define __CHAR16_TYPE__ unsigned short
-// I386-LINUX:#define __CHAR32_TYPE__ unsigned int
-// I386-LINUX:#define __CHAR_BIT__ 8
-// I386-LINUX:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// I386-LINUX:#define __DBL_DIG__ 15
-// I386-LINUX:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// I386-LINUX:#define __DBL_HAS_DENORM__ 1
-// I386-LINUX:#define __DBL_HAS_INFINITY__ 1
-// I386-LINUX:#define __DBL_HAS_QUIET_NAN__ 1
-// I386-LINUX:#define __DBL_MANT_DIG__ 53
-// I386-LINUX:#define __DBL_MAX_10_EXP__ 308
-// I386-LINUX:#define __DBL_MAX_EXP__ 1024
-// I386-LINUX:#define __DBL_MAX__ 1.7976931348623157e+308
-// I386-LINUX:#define __DBL_MIN_10_EXP__ (-307)
-// I386-LINUX:#define __DBL_MIN_EXP__ (-1021)
-// I386-LINUX:#define __DBL_MIN__ 2.2250738585072014e-308
-// I386-LINUX:#define __DECIMAL_DIG__ 21
-// I386-LINUX:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// I386-LINUX:#define __FLT_DIG__ 6
-// I386-LINUX:#define __FLT_EPSILON__ 1.19209290e-7F
-// I386-LINUX:#define __FLT_EVAL_METHOD__ 0
-// I386-LINUX:#define __FLT_HAS_DENORM__ 1
-// I386-LINUX:#define __FLT_HAS_INFINITY__ 1
-// I386-LINUX:#define __FLT_HAS_QUIET_NAN__ 1
-// I386-LINUX:#define __FLT_MANT_DIG__ 24
-// I386-LINUX:#define __FLT_MAX_10_EXP__ 38
-// I386-LINUX:#define __FLT_MAX_EXP__ 128
-// I386-LINUX:#define __FLT_MAX__ 3.40282347e+38F
-// I386-LINUX:#define __FLT_MIN_10_EXP__ (-37)
-// I386-LINUX:#define __FLT_MIN_EXP__ (-125)
-// I386-LINUX:#define __FLT_MIN__ 1.17549435e-38F
-// I386-LINUX:#define __FLT_RADIX__ 2
-// I386-LINUX:#define __INT16_TYPE__ short
-// I386-LINUX:#define __INT32_TYPE__ int
-// I386-LINUX:#define __INT64_C_SUFFIX__ LL
-// I386-LINUX:#define __INT64_TYPE__ long long int
-// I386-LINUX:#define __INT8_TYPE__ char
-// I386-LINUX:#define __INTMAX_MAX__ 9223372036854775807LL
-// I386-LINUX:#define __INTMAX_TYPE__ long long int
-// I386-LINUX:#define __INTMAX_WIDTH__ 64
-// I386-LINUX:#define __INTPTR_TYPE__ int
-// I386-LINUX:#define __INTPTR_WIDTH__ 32
-// I386-LINUX:#define __INT_MAX__ 2147483647
-// I386-LINUX:#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
-// I386-LINUX:#define __LDBL_DIG__ 18
-// I386-LINUX:#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
-// I386-LINUX:#define __LDBL_HAS_DENORM__ 1
-// I386-LINUX:#define __LDBL_HAS_INFINITY__ 1
-// I386-LINUX:#define __LDBL_HAS_QUIET_NAN__ 1
-// I386-LINUX:#define __LDBL_MANT_DIG__ 64
-// I386-LINUX:#define __LDBL_MAX_10_EXP__ 4932
-// I386-LINUX:#define __LDBL_MAX_EXP__ 16384
-// I386-LINUX:#define __LDBL_MAX__ 1.18973149535723176502e+4932L
-// I386-LINUX:#define __LDBL_MIN_10_EXP__ (-4931)
-// I386-LINUX:#define __LDBL_MIN_EXP__ (-16381)
-// I386-LINUX:#define __LDBL_MIN__ 3.36210314311209350626e-4932L
-// I386-LINUX:#define __LITTLE_ENDIAN__ 1
-// I386-LINUX:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// I386-LINUX:#define __LONG_MAX__ 2147483647L
-// I386-LINUX-NOT:#define __LP64__
-// I386-LINUX:#define __NO_MATH_INLINES 1
-// I386-LINUX:#define __POINTER_WIDTH__ 32
-// I386-LINUX:#define __PTRDIFF_TYPE__ int
-// I386-LINUX:#define __PTRDIFF_WIDTH__ 32
-// I386-LINUX:#define __REGISTER_PREFIX__ 
-// I386-LINUX:#define __SCHAR_MAX__ 127
-// I386-LINUX:#define __SHRT_MAX__ 32767
-// I386-LINUX:#define __SIG_ATOMIC_WIDTH__ 32
-// I386-LINUX:#define __SIZEOF_DOUBLE__ 8
-// I386-LINUX:#define __SIZEOF_FLOAT__ 4
-// I386-LINUX:#define __SIZEOF_INT__ 4
-// I386-LINUX:#define __SIZEOF_LONG_DOUBLE__ 12
-// I386-LINUX:#define __SIZEOF_LONG_LONG__ 8
-// I386-LINUX:#define __SIZEOF_LONG__ 4
-// I386-LINUX:#define __SIZEOF_POINTER__ 4
-// I386-LINUX:#define __SIZEOF_PTRDIFF_T__ 4
-// I386-LINUX:#define __SIZEOF_SHORT__ 2
-// I386-LINUX:#define __SIZEOF_SIZE_T__ 4
-// I386-LINUX:#define __SIZEOF_WCHAR_T__ 4
-// I386-LINUX:#define __SIZEOF_WINT_T__ 4
-// I386-LINUX:#define __SIZE_MAX__ 4294967295U
-// I386-LINUX:#define __SIZE_TYPE__ unsigned int
-// I386-LINUX:#define __SIZE_WIDTH__ 32
-// I386-LINUX:#define __UINTMAX_TYPE__ long long unsigned int
-// I386-LINUX:#define __USER_LABEL_PREFIX__
-// I386-LINUX:#define __WCHAR_MAX__ 2147483647
-// I386-LINUX:#define __WCHAR_TYPE__ int
-// I386-LINUX:#define __WCHAR_WIDTH__ 32
-// I386-LINUX:#define __WINT_TYPE__ unsigned int
-// I386-LINUX:#define __WINT_WIDTH__ 32
-// I386-LINUX:#define __i386 1
-// I386-LINUX:#define __i386__ 1
-// I386-LINUX:#define i386 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=mips-none-none < /dev/null | FileCheck -check-prefix MIPS32BE %s
-//
-// MIPS32BE:#define MIPSEB 1
-// MIPS32BE:#define _ABIO32 1
-// MIPS32BE-NOT:#define _LP64
-// MIPS32BE:#define _MIPSEB 1
-// MIPS32BE:#define _MIPS_ARCH "mips32"
-// MIPS32BE:#define _MIPS_ARCH_MIPS32 1
-// MIPS32BE:#define _MIPS_SIM _ABIO32
-// MIPS32BE:#define _MIPS_SZINT 32
-// MIPS32BE:#define _MIPS_SZLONG 32
-// MIPS32BE:#define _MIPS_SZPTR 32
-// MIPS32BE:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// MIPS32BE:#define __CHAR16_TYPE__ unsigned short
-// MIPS32BE:#define __CHAR32_TYPE__ unsigned int
-// MIPS32BE:#define __CHAR_BIT__ 8
-// MIPS32BE:#define __CONSTANT_CFSTRINGS__ 1
-// MIPS32BE:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// MIPS32BE:#define __DBL_DIG__ 15
-// MIPS32BE:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// MIPS32BE:#define __DBL_HAS_DENORM__ 1
-// MIPS32BE:#define __DBL_HAS_INFINITY__ 1
-// MIPS32BE:#define __DBL_HAS_QUIET_NAN__ 1
-// MIPS32BE:#define __DBL_MANT_DIG__ 53
-// MIPS32BE:#define __DBL_MAX_10_EXP__ 308
-// MIPS32BE:#define __DBL_MAX_EXP__ 1024
-// MIPS32BE:#define __DBL_MAX__ 1.7976931348623157e+308
-// MIPS32BE:#define __DBL_MIN_10_EXP__ (-307)
-// MIPS32BE:#define __DBL_MIN_EXP__ (-1021)
-// MIPS32BE:#define __DBL_MIN__ 2.2250738585072014e-308
-// MIPS32BE:#define __DECIMAL_DIG__ 17
-// MIPS32BE:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// MIPS32BE:#define __FLT_DIG__ 6
-// MIPS32BE:#define __FLT_EPSILON__ 1.19209290e-7F
-// MIPS32BE:#define __FLT_EVAL_METHOD__ 0
-// MIPS32BE:#define __FLT_HAS_DENORM__ 1
-// MIPS32BE:#define __FLT_HAS_INFINITY__ 1
-// MIPS32BE:#define __FLT_HAS_QUIET_NAN__ 1
-// MIPS32BE:#define __FLT_MANT_DIG__ 24
-// MIPS32BE:#define __FLT_MAX_10_EXP__ 38
-// MIPS32BE:#define __FLT_MAX_EXP__ 128
-// MIPS32BE:#define __FLT_MAX__ 3.40282347e+38F
-// MIPS32BE:#define __FLT_MIN_10_EXP__ (-37)
-// MIPS32BE:#define __FLT_MIN_EXP__ (-125)
-// MIPS32BE:#define __FLT_MIN__ 1.17549435e-38F
-// MIPS32BE:#define __FLT_RADIX__ 2
-// MIPS32BE:#define __INT16_TYPE__ short
-// MIPS32BE:#define __INT32_TYPE__ int
-// MIPS32BE:#define __INT64_C_SUFFIX__ LL
-// MIPS32BE:#define __INT64_TYPE__ long long int
-// MIPS32BE:#define __INT8_TYPE__ char
-// MIPS32BE:#define __INTMAX_MAX__ 9223372036854775807LL
-// MIPS32BE:#define __INTMAX_TYPE__ long long int
-// MIPS32BE:#define __INTMAX_WIDTH__ 64
-// MIPS32BE:#define __INTPTR_TYPE__ long int
-// MIPS32BE:#define __INTPTR_WIDTH__ 32
-// MIPS32BE:#define __INT_MAX__ 2147483647
-// MIPS32BE:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// MIPS32BE:#define __LDBL_DIG__ 15
-// MIPS32BE:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// MIPS32BE:#define __LDBL_HAS_DENORM__ 1
-// MIPS32BE:#define __LDBL_HAS_INFINITY__ 1
-// MIPS32BE:#define __LDBL_HAS_QUIET_NAN__ 1
-// MIPS32BE:#define __LDBL_MANT_DIG__ 53
-// MIPS32BE:#define __LDBL_MAX_10_EXP__ 308
-// MIPS32BE:#define __LDBL_MAX_EXP__ 1024
-// MIPS32BE:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// MIPS32BE:#define __LDBL_MIN_10_EXP__ (-307)
-// MIPS32BE:#define __LDBL_MIN_EXP__ (-1021)
-// MIPS32BE:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// MIPS32BE:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// MIPS32BE:#define __LONG_MAX__ 2147483647L
-// MIPS32BE-NOT:#define __LP64__
-// MIPS32BE:#define __MIPSEB 1
-// MIPS32BE:#define __MIPSEB__ 1
-// MIPS32BE:#define __POINTER_WIDTH__ 32
-// MIPS32BE:#define __PRAGMA_REDEFINE_EXTNAME 1
-// MIPS32BE:#define __PTRDIFF_TYPE__ int
-// MIPS32BE:#define __PTRDIFF_WIDTH__ 32
-// MIPS32BE:#define __REGISTER_PREFIX__ 
-// MIPS32BE:#define __SCHAR_MAX__ 127
-// MIPS32BE:#define __SHRT_MAX__ 32767
-// MIPS32BE:#define __SIG_ATOMIC_WIDTH__ 32
-// MIPS32BE:#define __SIZEOF_DOUBLE__ 8
-// MIPS32BE:#define __SIZEOF_FLOAT__ 4
-// MIPS32BE:#define __SIZEOF_INT__ 4
-// MIPS32BE:#define __SIZEOF_LONG_DOUBLE__ 8
-// MIPS32BE:#define __SIZEOF_LONG_LONG__ 8
-// MIPS32BE:#define __SIZEOF_LONG__ 4
-// MIPS32BE:#define __SIZEOF_POINTER__ 4
-// MIPS32BE:#define __SIZEOF_PTRDIFF_T__ 4
-// MIPS32BE:#define __SIZEOF_SHORT__ 2
-// MIPS32BE:#define __SIZEOF_SIZE_T__ 4
-// MIPS32BE:#define __SIZEOF_WCHAR_T__ 4
-// MIPS32BE:#define __SIZEOF_WINT_T__ 4
-// MIPS32BE:#define __SIZE_MAX__ 4294967295U
-// MIPS32BE:#define __SIZE_TYPE__ unsigned int
-// MIPS32BE:#define __SIZE_WIDTH__ 32
-// MIPS32BE:#define __STDC_HOSTED__ 0
-// MIPS32BE:#define __STDC_VERSION__ 199901L
-// MIPS32BE:#define __STDC__ 1
-// MIPS32BE:#define __UINTMAX_TYPE__ long long unsigned int
-// MIPS32BE:#define __USER_LABEL_PREFIX__ _
-// MIPS32BE:#define __WCHAR_MAX__ 2147483647
-// MIPS32BE:#define __WCHAR_TYPE__ int
-// MIPS32BE:#define __WCHAR_WIDTH__ 32
-// MIPS32BE:#define __WINT_TYPE__ int
-// MIPS32BE:#define __WINT_WIDTH__ 32
-// MIPS32BE:#define __clang__ 1
-// MIPS32BE:#define __llvm__ 1
-// MIPS32BE:#define __mips 1
-// MIPS32BE:#define __mips__ 1
-// MIPS32BE:#define __mips_hard_float 1
-// MIPS32BE:#define __mips_o32 1
-// MIPS32BE:#define _mips 1
-// MIPS32BE:#define mips 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=mipsel-none-none < /dev/null | FileCheck -check-prefix MIPS32EL %s
-//
-// MIPS32EL:#define MIPSEL 1
-// MIPS32EL:#define _ABIO32 1
-// MIPS32EL-NOT:#define _LP64
-// MIPS32EL:#define _MIPSEL 1
-// MIPS32EL:#define _MIPS_ARCH "mips32"
-// MIPS32EL:#define _MIPS_ARCH_MIPS32 1
-// MIPS32EL:#define _MIPS_SIM _ABIO32
-// MIPS32EL:#define _MIPS_SZINT 32
-// MIPS32EL:#define _MIPS_SZLONG 32
-// MIPS32EL:#define _MIPS_SZPTR 32
-// MIPS32EL:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// MIPS32EL:#define __CHAR16_TYPE__ unsigned short
-// MIPS32EL:#define __CHAR32_TYPE__ unsigned int
-// MIPS32EL:#define __CHAR_BIT__ 8
-// MIPS32EL:#define __CONSTANT_CFSTRINGS__ 1
-// MIPS32EL:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// MIPS32EL:#define __DBL_DIG__ 15
-// MIPS32EL:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// MIPS32EL:#define __DBL_HAS_DENORM__ 1
-// MIPS32EL:#define __DBL_HAS_INFINITY__ 1
-// MIPS32EL:#define __DBL_HAS_QUIET_NAN__ 1
-// MIPS32EL:#define __DBL_MANT_DIG__ 53
-// MIPS32EL:#define __DBL_MAX_10_EXP__ 308
-// MIPS32EL:#define __DBL_MAX_EXP__ 1024
-// MIPS32EL:#define __DBL_MAX__ 1.7976931348623157e+308
-// MIPS32EL:#define __DBL_MIN_10_EXP__ (-307)
-// MIPS32EL:#define __DBL_MIN_EXP__ (-1021)
-// MIPS32EL:#define __DBL_MIN__ 2.2250738585072014e-308
-// MIPS32EL:#define __DECIMAL_DIG__ 17
-// MIPS32EL:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// MIPS32EL:#define __FLT_DIG__ 6
-// MIPS32EL:#define __FLT_EPSILON__ 1.19209290e-7F
-// MIPS32EL:#define __FLT_EVAL_METHOD__ 0
-// MIPS32EL:#define __FLT_HAS_DENORM__ 1
-// MIPS32EL:#define __FLT_HAS_INFINITY__ 1
-// MIPS32EL:#define __FLT_HAS_QUIET_NAN__ 1
-// MIPS32EL:#define __FLT_MANT_DIG__ 24
-// MIPS32EL:#define __FLT_MAX_10_EXP__ 38
-// MIPS32EL:#define __FLT_MAX_EXP__ 128
-// MIPS32EL:#define __FLT_MAX__ 3.40282347e+38F
-// MIPS32EL:#define __FLT_MIN_10_EXP__ (-37)
-// MIPS32EL:#define __FLT_MIN_EXP__ (-125)
-// MIPS32EL:#define __FLT_MIN__ 1.17549435e-38F
-// MIPS32EL:#define __FLT_RADIX__ 2
-// MIPS32EL:#define __INT16_TYPE__ short
-// MIPS32EL:#define __INT32_TYPE__ int
-// MIPS32EL:#define __INT64_C_SUFFIX__ LL
-// MIPS32EL:#define __INT64_TYPE__ long long int
-// MIPS32EL:#define __INT8_TYPE__ char
-// MIPS32EL:#define __INTMAX_MAX__ 9223372036854775807LL
-// MIPS32EL:#define __INTMAX_TYPE__ long long int
-// MIPS32EL:#define __INTMAX_WIDTH__ 64
-// MIPS32EL:#define __INTPTR_TYPE__ long int
-// MIPS32EL:#define __INTPTR_WIDTH__ 32
-// MIPS32EL:#define __INT_MAX__ 2147483647
-// MIPS32EL:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// MIPS32EL:#define __LDBL_DIG__ 15
-// MIPS32EL:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// MIPS32EL:#define __LDBL_HAS_DENORM__ 1
-// MIPS32EL:#define __LDBL_HAS_INFINITY__ 1
-// MIPS32EL:#define __LDBL_HAS_QUIET_NAN__ 1
-// MIPS32EL:#define __LDBL_MANT_DIG__ 53
-// MIPS32EL:#define __LDBL_MAX_10_EXP__ 308
-// MIPS32EL:#define __LDBL_MAX_EXP__ 1024
-// MIPS32EL:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// MIPS32EL:#define __LDBL_MIN_10_EXP__ (-307)
-// MIPS32EL:#define __LDBL_MIN_EXP__ (-1021)
-// MIPS32EL:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// MIPS32EL:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// MIPS32EL:#define __LONG_MAX__ 2147483647L
-// MIPS32EL-NOT:#define __LP64__
-// MIPS32EL:#define __MIPSEL 1
-// MIPS32EL:#define __MIPSEL__ 1
-// MIPS32EL:#define __POINTER_WIDTH__ 32
-// MIPS32EL:#define __PRAGMA_REDEFINE_EXTNAME 1
-// MIPS32EL:#define __PTRDIFF_TYPE__ int
-// MIPS32EL:#define __PTRDIFF_WIDTH__ 32
-// MIPS32EL:#define __REGISTER_PREFIX__ 
-// MIPS32EL:#define __SCHAR_MAX__ 127
-// MIPS32EL:#define __SHRT_MAX__ 32767
-// MIPS32EL:#define __SIG_ATOMIC_WIDTH__ 32
-// MIPS32EL:#define __SIZEOF_DOUBLE__ 8
-// MIPS32EL:#define __SIZEOF_FLOAT__ 4
-// MIPS32EL:#define __SIZEOF_INT__ 4
-// MIPS32EL:#define __SIZEOF_LONG_DOUBLE__ 8
-// MIPS32EL:#define __SIZEOF_LONG_LONG__ 8
-// MIPS32EL:#define __SIZEOF_LONG__ 4
-// MIPS32EL:#define __SIZEOF_POINTER__ 4
-// MIPS32EL:#define __SIZEOF_PTRDIFF_T__ 4
-// MIPS32EL:#define __SIZEOF_SHORT__ 2
-// MIPS32EL:#define __SIZEOF_SIZE_T__ 4
-// MIPS32EL:#define __SIZEOF_WCHAR_T__ 4
-// MIPS32EL:#define __SIZEOF_WINT_T__ 4
-// MIPS32EL:#define __SIZE_MAX__ 4294967295U
-// MIPS32EL:#define __SIZE_TYPE__ unsigned int
-// MIPS32EL:#define __SIZE_WIDTH__ 32
-// MIPS32EL:#define __UINTMAX_TYPE__ long long unsigned int
-// MIPS32EL:#define __USER_LABEL_PREFIX__ _
-// MIPS32EL:#define __WCHAR_MAX__ 2147483647
-// MIPS32EL:#define __WCHAR_TYPE__ int
-// MIPS32EL:#define __WCHAR_WIDTH__ 32
-// MIPS32EL:#define __WINT_TYPE__ int
-// MIPS32EL:#define __WINT_WIDTH__ 32
-// MIPS32EL:#define __clang__ 1
-// MIPS32EL:#define __llvm__ 1
-// MIPS32EL:#define __mips 1
-// MIPS32EL:#define __mips__ 1
-// MIPS32EL:#define __mips_hard_float 1
-// MIPS32EL:#define __mips_o32 1
-// MIPS32EL:#define _mips 1
-// MIPS32EL:#define mips 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=mips64-none-none < /dev/null | FileCheck -check-prefix MIPS64BE %s
-//
-// MIPS64BE:#define MIPSEB 1
-// MIPS64BE:#define _ABI64 3
-// MIPS64BE:#define _LP64 1
-// MIPS64BE:#define _MIPSEB 1
-// MIPS64BE:#define _MIPS_ARCH "mips64"
-// MIPS64BE:#define _MIPS_ARCH_MIPS64 1
-// MIPS64BE:#define _MIPS_SIM _ABI64
-// MIPS64BE:#define _MIPS_SZINT 32
-// MIPS64BE:#define _MIPS_SZLONG 64
-// MIPS64BE:#define _MIPS_SZPTR 64
-// MIPS64BE:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// MIPS64BE:#define __CHAR16_TYPE__ unsigned short
-// MIPS64BE:#define __CHAR32_TYPE__ unsigned int
-// MIPS64BE:#define __CHAR_BIT__ 8
-// MIPS64BE:#define __CONSTANT_CFSTRINGS__ 1
-// MIPS64BE:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// MIPS64BE:#define __DBL_DIG__ 15
-// MIPS64BE:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// MIPS64BE:#define __DBL_HAS_DENORM__ 1
-// MIPS64BE:#define __DBL_HAS_INFINITY__ 1
-// MIPS64BE:#define __DBL_HAS_QUIET_NAN__ 1
-// MIPS64BE:#define __DBL_MANT_DIG__ 53
-// MIPS64BE:#define __DBL_MAX_10_EXP__ 308
-// MIPS64BE:#define __DBL_MAX_EXP__ 1024
-// MIPS64BE:#define __DBL_MAX__ 1.7976931348623157e+308
-// MIPS64BE:#define __DBL_MIN_10_EXP__ (-307)
-// MIPS64BE:#define __DBL_MIN_EXP__ (-1021)
-// MIPS64BE:#define __DBL_MIN__ 2.2250738585072014e-308
-// MIPS64BE:#define __DECIMAL_DIG__ 36
-// MIPS64BE:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// MIPS64BE:#define __FLT_DIG__ 6
-// MIPS64BE:#define __FLT_EPSILON__ 1.19209290e-7F
-// MIPS64BE:#define __FLT_EVAL_METHOD__ 0
-// MIPS64BE:#define __FLT_HAS_DENORM__ 1
-// MIPS64BE:#define __FLT_HAS_INFINITY__ 1
-// MIPS64BE:#define __FLT_HAS_QUIET_NAN__ 1
-// MIPS64BE:#define __FLT_MANT_DIG__ 24
-// MIPS64BE:#define __FLT_MAX_10_EXP__ 38
-// MIPS64BE:#define __FLT_MAX_EXP__ 128
-// MIPS64BE:#define __FLT_MAX__ 3.40282347e+38F
-// MIPS64BE:#define __FLT_MIN_10_EXP__ (-37)
-// MIPS64BE:#define __FLT_MIN_EXP__ (-125)
-// MIPS64BE:#define __FLT_MIN__ 1.17549435e-38F
-// MIPS64BE:#define __FLT_RADIX__ 2
-// MIPS64BE:#define __INT16_TYPE__ short
-// MIPS64BE:#define __INT32_TYPE__ int
-// MIPS64BE:#define __INT64_C_SUFFIX__ LL
-// MIPS64BE:#define __INT64_TYPE__ long long int
-// MIPS64BE:#define __INT8_TYPE__ char
-// MIPS64BE:#define __INTMAX_MAX__ 9223372036854775807LL
-// MIPS64BE:#define __INTMAX_TYPE__ long long int
-// MIPS64BE:#define __INTMAX_WIDTH__ 64
-// MIPS64BE:#define __INTPTR_TYPE__ long int
-// MIPS64BE:#define __INTPTR_WIDTH__ 64
-// MIPS64BE:#define __INT_MAX__ 2147483647
-// MIPS64BE:#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
-// MIPS64BE:#define __LDBL_DIG__ 33
-// MIPS64BE:#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
-// MIPS64BE:#define __LDBL_HAS_DENORM__ 1
-// MIPS64BE:#define __LDBL_HAS_INFINITY__ 1
-// MIPS64BE:#define __LDBL_HAS_QUIET_NAN__ 1
-// MIPS64BE:#define __LDBL_MANT_DIG__ 113
-// MIPS64BE:#define __LDBL_MAX_10_EXP__ 4932
-// MIPS64BE:#define __LDBL_MAX_EXP__ 16384
-// MIPS64BE:#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
-// MIPS64BE:#define __LDBL_MIN_10_EXP__ (-4931)
-// MIPS64BE:#define __LDBL_MIN_EXP__ (-16381)
-// MIPS64BE:#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
-// MIPS64BE:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// MIPS64BE:#define __LONG_MAX__ 9223372036854775807L
-// MIPS64BE:#define __LP64__ 1
-// MIPS64BE:#define __MIPSEB 1
-// MIPS64BE:#define __MIPSEB__ 1
-// MIPS64BE:#define __POINTER_WIDTH__ 64
-// MIPS64BE:#define __PRAGMA_REDEFINE_EXTNAME 1
-// MIPS64BE:#define __PTRDIFF_TYPE__ long int
-// MIPS64BE:#define __PTRDIFF_WIDTH__ 64
-// MIPS64BE:#define __REGISTER_PREFIX__ 
-// MIPS64BE:#define __SCHAR_MAX__ 127
-// MIPS64BE:#define __SHRT_MAX__ 32767
-// MIPS64BE:#define __SIG_ATOMIC_WIDTH__ 32
-// MIPS64BE:#define __SIZEOF_DOUBLE__ 8
-// MIPS64BE:#define __SIZEOF_FLOAT__ 4
-// MIPS64BE:#define __SIZEOF_INT__ 4
-// MIPS64BE:#define __SIZEOF_LONG_DOUBLE__ 16
-// MIPS64BE:#define __SIZEOF_LONG_LONG__ 8
-// MIPS64BE:#define __SIZEOF_LONG__ 8
-// MIPS64BE:#define __SIZEOF_POINTER__ 8
-// MIPS64BE:#define __SIZEOF_PTRDIFF_T__ 8
-// MIPS64BE:#define __SIZEOF_SHORT__ 2
-// MIPS64BE:#define __SIZEOF_SIZE_T__ 8
-// MIPS64BE:#define __SIZEOF_WCHAR_T__ 4
-// MIPS64BE:#define __SIZEOF_WINT_T__ 4
-// MIPS64BE:#define __SIZE_MAX__ 18446744073709551615UL
-// MIPS64BE:#define __SIZE_TYPE__ long unsigned int
-// MIPS64BE:#define __SIZE_WIDTH__ 64
-// MIPS64BE:#define __UINTMAX_TYPE__ long long unsigned int
-// MIPS64BE:#define __USER_LABEL_PREFIX__ _
-// MIPS64BE:#define __WCHAR_MAX__ 2147483647
-// MIPS64BE:#define __WCHAR_TYPE__ int
-// MIPS64BE:#define __WCHAR_WIDTH__ 32
-// MIPS64BE:#define __WINT_TYPE__ int
-// MIPS64BE:#define __WINT_WIDTH__ 32
-// MIPS64BE:#define __clang__ 1
-// MIPS64BE:#define __llvm__ 1
-// MIPS64BE:#define __mips 1
-// MIPS64BE:#define __mips64 1
-// MIPS64BE:#define __mips64__ 1
-// MIPS64BE:#define __mips__ 1
-// MIPS64BE:#define __mips_hard_float 1
-// MIPS64BE:#define __mips_n64 1
-// MIPS64BE:#define _mips 1
-// MIPS64BE:#define mips 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=mips64el-none-none < /dev/null | FileCheck -check-prefix MIPS64EL %s
-//
-// MIPS64EL:#define MIPSEL 1
-// MIPS64EL:#define _ABI64 3
-// MIPS64EL:#define _LP64 1
-// MIPS64EL:#define _MIPSEL 1
-// MIPS64EL:#define _MIPS_ARCH "mips64"
-// MIPS64EL:#define _MIPS_ARCH_MIPS64 1
-// MIPS64EL:#define _MIPS_SIM _ABI64
-// MIPS64EL:#define _MIPS_SZINT 32
-// MIPS64EL:#define _MIPS_SZLONG 64
-// MIPS64EL:#define _MIPS_SZPTR 64
-// MIPS64EL:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// MIPS64EL:#define __CHAR16_TYPE__ unsigned short
-// MIPS64EL:#define __CHAR32_TYPE__ unsigned int
-// MIPS64EL:#define __CHAR_BIT__ 8
-// MIPS64EL:#define __CONSTANT_CFSTRINGS__ 1
-// MIPS64EL:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// MIPS64EL:#define __DBL_DIG__ 15
-// MIPS64EL:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// MIPS64EL:#define __DBL_HAS_DENORM__ 1
-// MIPS64EL:#define __DBL_HAS_INFINITY__ 1
-// MIPS64EL:#define __DBL_HAS_QUIET_NAN__ 1
-// MIPS64EL:#define __DBL_MANT_DIG__ 53
-// MIPS64EL:#define __DBL_MAX_10_EXP__ 308
-// MIPS64EL:#define __DBL_MAX_EXP__ 1024
-// MIPS64EL:#define __DBL_MAX__ 1.7976931348623157e+308
-// MIPS64EL:#define __DBL_MIN_10_EXP__ (-307)
-// MIPS64EL:#define __DBL_MIN_EXP__ (-1021)
-// MIPS64EL:#define __DBL_MIN__ 2.2250738585072014e-308
-// MIPS64EL:#define __DECIMAL_DIG__ 36
-// MIPS64EL:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// MIPS64EL:#define __FLT_DIG__ 6
-// MIPS64EL:#define __FLT_EPSILON__ 1.19209290e-7F
-// MIPS64EL:#define __FLT_EVAL_METHOD__ 0
-// MIPS64EL:#define __FLT_HAS_DENORM__ 1
-// MIPS64EL:#define __FLT_HAS_INFINITY__ 1
-// MIPS64EL:#define __FLT_HAS_QUIET_NAN__ 1
-// MIPS64EL:#define __FLT_MANT_DIG__ 24
-// MIPS64EL:#define __FLT_MAX_10_EXP__ 38
-// MIPS64EL:#define __FLT_MAX_EXP__ 128
-// MIPS64EL:#define __FLT_MAX__ 3.40282347e+38F
-// MIPS64EL:#define __FLT_MIN_10_EXP__ (-37)
-// MIPS64EL:#define __FLT_MIN_EXP__ (-125)
-// MIPS64EL:#define __FLT_MIN__ 1.17549435e-38F
-// MIPS64EL:#define __FLT_RADIX__ 2
-// MIPS64EL:#define __INT16_TYPE__ short
-// MIPS64EL:#define __INT32_TYPE__ int
-// MIPS64EL:#define __INT64_C_SUFFIX__ LL
-// MIPS64EL:#define __INT64_TYPE__ long long int
-// MIPS64EL:#define __INT8_TYPE__ char
-// MIPS64EL:#define __INTMAX_MAX__ 9223372036854775807LL
-// MIPS64EL:#define __INTMAX_TYPE__ long long int
-// MIPS64EL:#define __INTMAX_WIDTH__ 64
-// MIPS64EL:#define __INTPTR_TYPE__ long int
-// MIPS64EL:#define __INTPTR_WIDTH__ 64
-// MIPS64EL:#define __INT_MAX__ 2147483647
-// MIPS64EL:#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
-// MIPS64EL:#define __LDBL_DIG__ 33
-// MIPS64EL:#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
-// MIPS64EL:#define __LDBL_HAS_DENORM__ 1
-// MIPS64EL:#define __LDBL_HAS_INFINITY__ 1
-// MIPS64EL:#define __LDBL_HAS_QUIET_NAN__ 1
-// MIPS64EL:#define __LDBL_MANT_DIG__ 113
-// MIPS64EL:#define __LDBL_MAX_10_EXP__ 4932
-// MIPS64EL:#define __LDBL_MAX_EXP__ 16384
-// MIPS64EL:#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
-// MIPS64EL:#define __LDBL_MIN_10_EXP__ (-4931)
-// MIPS64EL:#define __LDBL_MIN_EXP__ (-16381)
-// MIPS64EL:#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
-// MIPS64EL:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// MIPS64EL:#define __LONG_MAX__ 9223372036854775807L
-// MIPS64EL:#define __LP64__ 1
-// MIPS64EL:#define __MIPSEL 1
-// MIPS64EL:#define __MIPSEL__ 1
-// MIPS64EL:#define __POINTER_WIDTH__ 64
-// MIPS64EL:#define __PRAGMA_REDEFINE_EXTNAME 1
-// MIPS64EL:#define __PTRDIFF_TYPE__ long int
-// MIPS64EL:#define __PTRDIFF_WIDTH__ 64
-// MIPS64EL:#define __REGISTER_PREFIX__ 
-// MIPS64EL:#define __SCHAR_MAX__ 127
-// MIPS64EL:#define __SHRT_MAX__ 32767
-// MIPS64EL:#define __SIG_ATOMIC_WIDTH__ 32
-// MIPS64EL:#define __SIZEOF_DOUBLE__ 8
-// MIPS64EL:#define __SIZEOF_FLOAT__ 4
-// MIPS64EL:#define __SIZEOF_INT__ 4
-// MIPS64EL:#define __SIZEOF_LONG_DOUBLE__ 16
-// MIPS64EL:#define __SIZEOF_LONG_LONG__ 8
-// MIPS64EL:#define __SIZEOF_LONG__ 8
-// MIPS64EL:#define __SIZEOF_POINTER__ 8
-// MIPS64EL:#define __SIZEOF_PTRDIFF_T__ 8
-// MIPS64EL:#define __SIZEOF_SHORT__ 2
-// MIPS64EL:#define __SIZEOF_SIZE_T__ 8
-// MIPS64EL:#define __SIZEOF_WCHAR_T__ 4
-// MIPS64EL:#define __SIZEOF_WINT_T__ 4
-// MIPS64EL:#define __SIZE_MAX__ 18446744073709551615UL
-// MIPS64EL:#define __SIZE_TYPE__ long unsigned int
-// MIPS64EL:#define __SIZE_WIDTH__ 64
-// MIPS64EL:#define __UINTMAX_TYPE__ long long unsigned int
-// MIPS64EL:#define __USER_LABEL_PREFIX__ _
-// MIPS64EL:#define __WCHAR_MAX__ 2147483647
-// MIPS64EL:#define __WCHAR_TYPE__ int
-// MIPS64EL:#define __WCHAR_WIDTH__ 32
-// MIPS64EL:#define __WINT_TYPE__ int
-// MIPS64EL:#define __WINT_WIDTH__ 32
-// MIPS64EL:#define __clang__ 1
-// MIPS64EL:#define __llvm__ 1
-// MIPS64EL:#define __mips 1
-// MIPS64EL:#define __mips64 1
-// MIPS64EL:#define __mips64__ 1
-// MIPS64EL:#define __mips__ 1
-// MIPS64EL:#define __mips_hard_float 1
-// MIPS64EL:#define __mips_n64 1
-// MIPS64EL:#define _mips 1
-// MIPS64EL:#define mips 1
-//
-// Check MIPS float ABI macros
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding \
-// RUN:   -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix MIPS-FABI-HARD %s
-// MIPS-FABI-HARD:#define __mips_hard_float 1
-//
-// RUN: %clang_cc1 -target-feature +soft-float -E -dM -ffreestanding \
-// RUN:   -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix MIPS-FABI-SOFT %s
-// MIPS-FABI-SOFT:#define __mips_soft_float 1
-//
-// RUN: %clang_cc1 -target-feature +single-float -E -dM -ffreestanding \
-// RUN:   -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix MIPS-FABI-SINGLE %s
-// MIPS-FABI-SINGLE:#define __mips_hard_float 1
-// MIPS-FABI-SINGLE:#define __mips_single_float 1
-//
-// RUN: %clang_cc1 -target-feature +soft-float -target-feature +single-float \
-// RUN:   -E -dM -ffreestanding -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix MIPS-FABI-SINGLE-SOFT %s
-// MIPS-FABI-SINGLE-SOFT:#define __mips_single_float 1
-// MIPS-FABI-SINGLE-SOFT:#define __mips_soft_float 1
-//
-// Check MIPS features macros
-//
-// RUN: %clang_cc1 -target-feature +mips16 \
-// RUN:   -E -dM -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix MIPS16 %s
-// MIPS16:#define __mips16 1
-//
-// RUN: %clang_cc1 -target-feature -mips16 \
-// RUN:   -E -dM -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix NOMIPS16 %s
-// NOMIPS16-NOT:#define __mips16 1
-//
-// RUN: %clang_cc1 -target-feature +micromips \
-// RUN:   -E -dM -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix MICROMIPS %s
-// MICROMIPS:#define __mips_micromips 1
-//
-// RUN: %clang_cc1 -target-feature -micromips \
-// RUN:   -E -dM -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix NOMICROMIPS %s
-// NOMICROMIPS-NOT:#define __mips_micromips 1
-//
-// RUN: %clang_cc1 -target-feature +dsp \
-// RUN:   -E -dM -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix MIPS-DSP %s
-// MIPS-DSP:#define __mips_dsp 1
-// MIPS-DSP:#define __mips_dsp_rev 1
-// MIPS-DSP-NOT:#define __mips_dspr2 1
-//
-// RUN: %clang_cc1 -target-feature +dspr2 \
-// RUN:   -E -dM -triple=mips-none-none < /dev/null \
-// RUN:   | FileCheck -check-prefix MIPS-DSPR2 %s
-// MIPS-DSPR2:#define __mips_dsp 1
-// MIPS-DSPR2:#define __mips_dsp_rev 2
-// MIPS-DSPR2:#define __mips_dspr2 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=msp430-none-none < /dev/null | FileCheck -check-prefix MSP430 %s
-//
-// MSP430:#define MSP430 1
-// MSP430-NOT:#define _LP64
-// MSP430:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// MSP430:#define __CHAR16_TYPE__ unsigned short
-// MSP430:#define __CHAR32_TYPE__ unsigned int
-// MSP430:#define __CHAR_BIT__ 8
-// MSP430:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// MSP430:#define __DBL_DIG__ 15
-// MSP430:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// MSP430:#define __DBL_HAS_DENORM__ 1
-// MSP430:#define __DBL_HAS_INFINITY__ 1
-// MSP430:#define __DBL_HAS_QUIET_NAN__ 1
-// MSP430:#define __DBL_MANT_DIG__ 53
-// MSP430:#define __DBL_MAX_10_EXP__ 308
-// MSP430:#define __DBL_MAX_EXP__ 1024
-// MSP430:#define __DBL_MAX__ 1.7976931348623157e+308
-// MSP430:#define __DBL_MIN_10_EXP__ (-307)
-// MSP430:#define __DBL_MIN_EXP__ (-1021)
-// MSP430:#define __DBL_MIN__ 2.2250738585072014e-308
-// MSP430:#define __DECIMAL_DIG__ 17
-// MSP430:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// MSP430:#define __FLT_DIG__ 6
-// MSP430:#define __FLT_EPSILON__ 1.19209290e-7F
-// MSP430:#define __FLT_EVAL_METHOD__ 0
-// MSP430:#define __FLT_HAS_DENORM__ 1
-// MSP430:#define __FLT_HAS_INFINITY__ 1
-// MSP430:#define __FLT_HAS_QUIET_NAN__ 1
-// MSP430:#define __FLT_MANT_DIG__ 24
-// MSP430:#define __FLT_MAX_10_EXP__ 38
-// MSP430:#define __FLT_MAX_EXP__ 128
-// MSP430:#define __FLT_MAX__ 3.40282347e+38F
-// MSP430:#define __FLT_MIN_10_EXP__ (-37)
-// MSP430:#define __FLT_MIN_EXP__ (-125)
-// MSP430:#define __FLT_MIN__ 1.17549435e-38F
-// MSP430:#define __FLT_RADIX__ 2
-// MSP430:#define __INT16_TYPE__ short
-// MSP430:#define __INT32_C_SUFFIX__ L
-// MSP430:#define __INT32_TYPE__ long int
-// MSP430:#define __INT8_TYPE__ char
-// MSP430:#define __INTMAX_MAX__ 2147483647L
-// MSP430:#define __INTMAX_TYPE__ long int
-// MSP430:#define __INTMAX_WIDTH__ 32
-// MSP430:#define __INTPTR_TYPE__ short
-// MSP430:#define __INTPTR_WIDTH__ 16
-// MSP430:#define __INT_MAX__ 32767
-// MSP430:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// MSP430:#define __LDBL_DIG__ 15
-// MSP430:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// MSP430:#define __LDBL_HAS_DENORM__ 1
-// MSP430:#define __LDBL_HAS_INFINITY__ 1
-// MSP430:#define __LDBL_HAS_QUIET_NAN__ 1
-// MSP430:#define __LDBL_MANT_DIG__ 53
-// MSP430:#define __LDBL_MAX_10_EXP__ 308
-// MSP430:#define __LDBL_MAX_EXP__ 1024
-// MSP430:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// MSP430:#define __LDBL_MIN_10_EXP__ (-307)
-// MSP430:#define __LDBL_MIN_EXP__ (-1021)
-// MSP430:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// MSP430:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// MSP430:#define __LONG_MAX__ 2147483647L
-// MSP430-NOT:#define __LP64__
-// MSP430:#define __MSP430__ 1
-// MSP430:#define __POINTER_WIDTH__ 16
-// MSP430:#define __PTRDIFF_TYPE__ int
-// MSP430:#define __PTRDIFF_WIDTH__ 16 
-// MSP430:#define __SCHAR_MAX__ 127
-// MSP430:#define __SHRT_MAX__ 32767
-// MSP430:#define __SIG_ATOMIC_WIDTH__ 32
-// MSP430:#define __SIZEOF_DOUBLE__ 8
-// MSP430:#define __SIZEOF_FLOAT__ 4
-// MSP430:#define __SIZEOF_INT__ 2
-// MSP430:#define __SIZEOF_LONG_DOUBLE__ 8
-// MSP430:#define __SIZEOF_LONG_LONG__ 8
-// MSP430:#define __SIZEOF_LONG__ 4
-// MSP430:#define __SIZEOF_POINTER__ 2
-// MSP430:#define __SIZEOF_PTRDIFF_T__ 2
-// MSP430:#define __SIZEOF_SHORT__ 2
-// MSP430:#define __SIZEOF_SIZE_T__ 2
-// MSP430:#define __SIZEOF_WCHAR_T__ 2
-// MSP430:#define __SIZEOF_WINT_T__ 2
-// MSP430:#define __SIZE_MAX__ 65535U
-// MSP430:#define __SIZE_TYPE__ unsigned int
-// MSP430:#define __SIZE_WIDTH__ 16
-// MSP430:#define __UINTMAX_TYPE__ long unsigned int
-// MSP430:#define __USER_LABEL_PREFIX__ _
-// MSP430:#define __WCHAR_MAX__ 32767
-// MSP430:#define __WCHAR_TYPE__ int
-// MSP430:#define __WCHAR_WIDTH__ 16
-// MSP430:#define __WINT_TYPE__ int
-// MSP430:#define __WINT_WIDTH__ 16
-// MSP430:#define __clang__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=nvptx-none-none < /dev/null | FileCheck -check-prefix NVPTX32 %s
-//
-// NVPTX32-NOT:#define _LP64
-// NVPTX32:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// NVPTX32:#define __CHAR16_TYPE__ unsigned short
-// NVPTX32:#define __CHAR32_TYPE__ unsigned int
-// NVPTX32:#define __CHAR_BIT__ 8
-// NVPTX32:#define __CONSTANT_CFSTRINGS__ 1
-// NVPTX32:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// NVPTX32:#define __DBL_DIG__ 15
-// NVPTX32:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// NVPTX32:#define __DBL_HAS_DENORM__ 1
-// NVPTX32:#define __DBL_HAS_INFINITY__ 1
-// NVPTX32:#define __DBL_HAS_QUIET_NAN__ 1
-// NVPTX32:#define __DBL_MANT_DIG__ 53
-// NVPTX32:#define __DBL_MAX_10_EXP__ 308
-// NVPTX32:#define __DBL_MAX_EXP__ 1024
-// NVPTX32:#define __DBL_MAX__ 1.7976931348623157e+308
-// NVPTX32:#define __DBL_MIN_10_EXP__ (-307)
-// NVPTX32:#define __DBL_MIN_EXP__ (-1021)
-// NVPTX32:#define __DBL_MIN__ 2.2250738585072014e-308
-// NVPTX32:#define __DECIMAL_DIG__ 17
-// NVPTX32:#define __FINITE_MATH_ONLY__ 0
-// NVPTX32:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// NVPTX32:#define __FLT_DIG__ 6
-// NVPTX32:#define __FLT_EPSILON__ 1.19209290e-7F
-// NVPTX32:#define __FLT_EVAL_METHOD__ 0
-// NVPTX32:#define __FLT_HAS_DENORM__ 1
-// NVPTX32:#define __FLT_HAS_INFINITY__ 1
-// NVPTX32:#define __FLT_HAS_QUIET_NAN__ 1
-// NVPTX32:#define __FLT_MANT_DIG__ 24
-// NVPTX32:#define __FLT_MAX_10_EXP__ 38
-// NVPTX32:#define __FLT_MAX_EXP__ 128
-// NVPTX32:#define __FLT_MAX__ 3.40282347e+38F
-// NVPTX32:#define __FLT_MIN_10_EXP__ (-37)
-// NVPTX32:#define __FLT_MIN_EXP__ (-125)
-// NVPTX32:#define __FLT_MIN__ 1.17549435e-38F
-// NVPTX32:#define __FLT_RADIX__ 2
-// NVPTX32:#define __INT16_TYPE__ short
-// NVPTX32:#define __INT32_TYPE__ int
-// NVPTX32:#define __INT64_C_SUFFIX__ LL
-// NVPTX32:#define __INT64_TYPE__ long long int
-// NVPTX32:#define __INT8_TYPE__ char
-// NVPTX32:#define __INTMAX_MAX__ 9223372036854775807LL
-// NVPTX32:#define __INTMAX_TYPE__ long long int
-// NVPTX32:#define __INTMAX_WIDTH__ 64
-// NVPTX32:#define __INTPTR_TYPE__ unsigned int
-// NVPTX32:#define __INTPTR_WIDTH__ 32
-// NVPTX32:#define __INT_MAX__ 2147483647
-// NVPTX32:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// NVPTX32:#define __LDBL_DIG__ 15
-// NVPTX32:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// NVPTX32:#define __LDBL_HAS_DENORM__ 1
-// NVPTX32:#define __LDBL_HAS_INFINITY__ 1
-// NVPTX32:#define __LDBL_HAS_QUIET_NAN__ 1
-// NVPTX32:#define __LDBL_MANT_DIG__ 53
-// NVPTX32:#define __LDBL_MAX_10_EXP__ 308
-// NVPTX32:#define __LDBL_MAX_EXP__ 1024
-// NVPTX32:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// NVPTX32:#define __LDBL_MIN_10_EXP__ (-307)
-// NVPTX32:#define __LDBL_MIN_EXP__ (-1021)
-// NVPTX32:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// NVPTX32:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// NVPTX32:#define __LONG_MAX__ 9223372036854775807L
-// NVPTX32-NOT:#define __LP64__
-// NVPTX32:#define __NVPTX__ 1
-// NVPTX32:#define __POINTER_WIDTH__ 32
-// NVPTX32:#define __PRAGMA_REDEFINE_EXTNAME 1
-// NVPTX32:#define __PTRDIFF_TYPE__ unsigned int
-// NVPTX32:#define __PTRDIFF_WIDTH__ 32
-// NVPTX32:#define __PTX__ 1
-// NVPTX32:#define __SCHAR_MAX__ 127
-// NVPTX32:#define __SHRT_MAX__ 32767
-// NVPTX32:#define __SIG_ATOMIC_WIDTH__ 32
-// NVPTX32:#define __SIZEOF_DOUBLE__ 8
-// NVPTX32:#define __SIZEOF_FLOAT__ 4
-// NVPTX32:#define __SIZEOF_INT__ 4
-// NVPTX32:#define __SIZEOF_LONG_DOUBLE__ 8
-// NVPTX32:#define __SIZEOF_LONG_LONG__ 8
-// NVPTX32:#define __SIZEOF_LONG__ 8
-// NVPTX32:#define __SIZEOF_POINTER__ 4
-// NVPTX32:#define __SIZEOF_PTRDIFF_T__ 4
-// NVPTX32:#define __SIZEOF_SHORT__ 2
-// NVPTX32:#define __SIZEOF_SIZE_T__ 4
-// NVPTX32:#define __SIZEOF_WCHAR_T__ 4
-// NVPTX32:#define __SIZEOF_WINT_T__ 4
-// NVPTX32:#define __SIZE_MAX__ 4294967295U
-// NVPTX32:#define __SIZE_TYPE__ unsigned int
-// NVPTX32:#define __SIZE_WIDTH__ 32
-// NVPTX32:#define __UINTMAX_TYPE__ long long unsigned int
-// NVPTX32:#define __USER_LABEL_PREFIX__ _
-// NVPTX32:#define __WCHAR_MAX__ 2147483647
-// NVPTX32:#define __WCHAR_TYPE__ int
-// NVPTX32:#define __WCHAR_WIDTH__ 32
-// NVPTX32:#define __WINT_TYPE__ int
-// NVPTX32:#define __WINT_WIDTH__ 32
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=nvptx64-none-none < /dev/null | FileCheck -check-prefix NVPTX64 %s
-//
-// NVPTX64:#define _LP64 1
-// NVPTX64:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// NVPTX64:#define __CHAR16_TYPE__ unsigned short
-// NVPTX64:#define __CHAR32_TYPE__ unsigned int
-// NVPTX64:#define __CHAR_BIT__ 8
-// NVPTX64:#define __CONSTANT_CFSTRINGS__ 1
-// NVPTX64:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// NVPTX64:#define __DBL_DIG__ 15
-// NVPTX64:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// NVPTX64:#define __DBL_HAS_DENORM__ 1
-// NVPTX64:#define __DBL_HAS_INFINITY__ 1
-// NVPTX64:#define __DBL_HAS_QUIET_NAN__ 1
-// NVPTX64:#define __DBL_MANT_DIG__ 53
-// NVPTX64:#define __DBL_MAX_10_EXP__ 308
-// NVPTX64:#define __DBL_MAX_EXP__ 1024
-// NVPTX64:#define __DBL_MAX__ 1.7976931348623157e+308
-// NVPTX64:#define __DBL_MIN_10_EXP__ (-307)
-// NVPTX64:#define __DBL_MIN_EXP__ (-1021)
-// NVPTX64:#define __DBL_MIN__ 2.2250738585072014e-308
-// NVPTX64:#define __DECIMAL_DIG__ 17
-// NVPTX64:#define __FINITE_MATH_ONLY__ 0
-// NVPTX64:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// NVPTX64:#define __FLT_DIG__ 6
-// NVPTX64:#define __FLT_EPSILON__ 1.19209290e-7F
-// NVPTX64:#define __FLT_EVAL_METHOD__ 0
-// NVPTX64:#define __FLT_HAS_DENORM__ 1
-// NVPTX64:#define __FLT_HAS_INFINITY__ 1
-// NVPTX64:#define __FLT_HAS_QUIET_NAN__ 1
-// NVPTX64:#define __FLT_MANT_DIG__ 24
-// NVPTX64:#define __FLT_MAX_10_EXP__ 38
-// NVPTX64:#define __FLT_MAX_EXP__ 128
-// NVPTX64:#define __FLT_MAX__ 3.40282347e+38F
-// NVPTX64:#define __FLT_MIN_10_EXP__ (-37)
-// NVPTX64:#define __FLT_MIN_EXP__ (-125)
-// NVPTX64:#define __FLT_MIN__ 1.17549435e-38F
-// NVPTX64:#define __FLT_RADIX__ 2
-// NVPTX64:#define __INT16_TYPE__ short
-// NVPTX64:#define __INT32_TYPE__ int
-// NVPTX64:#define __INT64_C_SUFFIX__ LL
-// NVPTX64:#define __INT64_TYPE__ long long int
-// NVPTX64:#define __INT8_TYPE__ char
-// NVPTX64:#define __INTMAX_MAX__ 9223372036854775807LL
-// NVPTX64:#define __INTMAX_TYPE__ long long int
-// NVPTX64:#define __INTMAX_WIDTH__ 64
-// NVPTX64:#define __INTPTR_TYPE__ long long unsigned int
-// NVPTX64:#define __INTPTR_WIDTH__ 64
-// NVPTX64:#define __INT_MAX__ 2147483647
-// NVPTX64:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// NVPTX64:#define __LDBL_DIG__ 15
-// NVPTX64:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// NVPTX64:#define __LDBL_HAS_DENORM__ 1
-// NVPTX64:#define __LDBL_HAS_INFINITY__ 1
-// NVPTX64:#define __LDBL_HAS_QUIET_NAN__ 1
-// NVPTX64:#define __LDBL_MANT_DIG__ 53
-// NVPTX64:#define __LDBL_MAX_10_EXP__ 308
-// NVPTX64:#define __LDBL_MAX_EXP__ 1024
-// NVPTX64:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// NVPTX64:#define __LDBL_MIN_10_EXP__ (-307)
-// NVPTX64:#define __LDBL_MIN_EXP__ (-1021)
-// NVPTX64:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// NVPTX64:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// NVPTX64:#define __LONG_MAX__ 9223372036854775807L
-// NVPTX64:#define __LP64__ 1
-// NVPTX64:#define __NVPTX__ 1
-// NVPTX64:#define __POINTER_WIDTH__ 64
-// NVPTX64:#define __PRAGMA_REDEFINE_EXTNAME 1
-// NVPTX64:#define __PTRDIFF_TYPE__ long long unsigned int
-// NVPTX64:#define __PTRDIFF_WIDTH__ 64
-// NVPTX64:#define __PTX__ 1
-// NVPTX64:#define __SCHAR_MAX__ 127
-// NVPTX64:#define __SHRT_MAX__ 32767
-// NVPTX64:#define __SIG_ATOMIC_WIDTH__ 32
-// NVPTX64:#define __SIZEOF_DOUBLE__ 8
-// NVPTX64:#define __SIZEOF_FLOAT__ 4
-// NVPTX64:#define __SIZEOF_INT__ 4
-// NVPTX64:#define __SIZEOF_LONG_DOUBLE__ 8
-// NVPTX64:#define __SIZEOF_LONG_LONG__ 8
-// NVPTX64:#define __SIZEOF_LONG__ 8
-// NVPTX64:#define __SIZEOF_POINTER__ 8
-// NVPTX64:#define __SIZEOF_PTRDIFF_T__ 8
-// NVPTX64:#define __SIZEOF_SHORT__ 2
-// NVPTX64:#define __SIZEOF_SIZE_T__ 8
-// NVPTX64:#define __SIZEOF_WCHAR_T__ 4
-// NVPTX64:#define __SIZEOF_WINT_T__ 4
-// NVPTX64:#define __SIZE_MAX__ 18446744073709551615UL
-// NVPTX64:#define __SIZE_TYPE__ long long unsigned int
-// NVPTX64:#define __SIZE_WIDTH__ 64
-// NVPTX64:#define __UINTMAX_TYPE__ long long unsigned int
-// NVPTX64:#define __USER_LABEL_PREFIX__ _
-// NVPTX64:#define __WCHAR_MAX__ 2147483647
-// NVPTX64:#define __WCHAR_TYPE__ int
-// NVPTX64:#define __WCHAR_WIDTH__ 32
-// NVPTX64:#define __WINT_TYPE__ int
-// NVPTX64:#define __WINT_WIDTH__ 32
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-none-none -target-cpu 603e < /dev/null | FileCheck -check-prefix PPC603E %s
-//
-// PPC603E:#define _ARCH_603 1
-// PPC603E:#define _ARCH_603E 1
-// PPC603E:#define _ARCH_PPC 1
-// PPC603E:#define _ARCH_PPCGR 1
-// PPC603E:#define _BIG_ENDIAN 1
-// PPC603E-NOT:#define _LP64
-// PPC603E:#define __BIG_ENDIAN__ 1
-// PPC603E:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// PPC603E:#define __CHAR16_TYPE__ unsigned short
-// PPC603E:#define __CHAR32_TYPE__ unsigned int
-// PPC603E:#define __CHAR_BIT__ 8
-// PPC603E:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// PPC603E:#define __DBL_DIG__ 15
-// PPC603E:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// PPC603E:#define __DBL_HAS_DENORM__ 1
-// PPC603E:#define __DBL_HAS_INFINITY__ 1
-// PPC603E:#define __DBL_HAS_QUIET_NAN__ 1
-// PPC603E:#define __DBL_MANT_DIG__ 53
-// PPC603E:#define __DBL_MAX_10_EXP__ 308
-// PPC603E:#define __DBL_MAX_EXP__ 1024
-// PPC603E:#define __DBL_MAX__ 1.7976931348623157e+308
-// PPC603E:#define __DBL_MIN_10_EXP__ (-307)
-// PPC603E:#define __DBL_MIN_EXP__ (-1021)
-// PPC603E:#define __DBL_MIN__ 2.2250738585072014e-308
-// PPC603E:#define __DECIMAL_DIG__ 33
-// PPC603E:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// PPC603E:#define __FLT_DIG__ 6
-// PPC603E:#define __FLT_EPSILON__ 1.19209290e-7F
-// PPC603E:#define __FLT_EVAL_METHOD__ 0
-// PPC603E:#define __FLT_HAS_DENORM__ 1
-// PPC603E:#define __FLT_HAS_INFINITY__ 1
-// PPC603E:#define __FLT_HAS_QUIET_NAN__ 1
-// PPC603E:#define __FLT_MANT_DIG__ 24
-// PPC603E:#define __FLT_MAX_10_EXP__ 38
-// PPC603E:#define __FLT_MAX_EXP__ 128
-// PPC603E:#define __FLT_MAX__ 3.40282347e+38F
-// PPC603E:#define __FLT_MIN_10_EXP__ (-37)
-// PPC603E:#define __FLT_MIN_EXP__ (-125)
-// PPC603E:#define __FLT_MIN__ 1.17549435e-38F
-// PPC603E:#define __FLT_RADIX__ 2
-// PPC603E:#define __INT16_TYPE__ short
-// PPC603E:#define __INT32_TYPE__ int
-// PPC603E:#define __INT64_C_SUFFIX__ LL
-// PPC603E:#define __INT64_TYPE__ long long int
-// PPC603E:#define __INT8_TYPE__ char
-// PPC603E:#define __INTMAX_MAX__ 9223372036854775807LL
-// PPC603E:#define __INTMAX_TYPE__ long long int
-// PPC603E:#define __INTMAX_WIDTH__ 64
-// PPC603E:#define __INTPTR_TYPE__ long int
-// PPC603E:#define __INTPTR_WIDTH__ 32
-// PPC603E:#define __INT_MAX__ 2147483647
-// PPC603E:#define __LDBL_DENORM_MIN__ 4.94065645841246544176568792868221e-324L
-// PPC603E:#define __LDBL_DIG__ 31
-// PPC603E:#define __LDBL_EPSILON__ 4.94065645841246544176568792868221e-324L
-// PPC603E:#define __LDBL_HAS_DENORM__ 1
-// PPC603E:#define __LDBL_HAS_INFINITY__ 1
-// PPC603E:#define __LDBL_HAS_QUIET_NAN__ 1
-// PPC603E:#define __LDBL_MANT_DIG__ 106
-// PPC603E:#define __LDBL_MAX_10_EXP__ 308
-// PPC603E:#define __LDBL_MAX_EXP__ 1024
-// PPC603E:#define __LDBL_MAX__ 1.79769313486231580793728971405301e+308L
-// PPC603E:#define __LDBL_MIN_10_EXP__ (-291)
-// PPC603E:#define __LDBL_MIN_EXP__ (-968)
-// PPC603E:#define __LDBL_MIN__ 2.00416836000897277799610805135016e-292L
-// PPC603E:#define __LONG_DOUBLE_128__ 1
-// PPC603E:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// PPC603E:#define __LONG_MAX__ 2147483647L
-// PPC603E-NOT:#define __LP64__
-// PPC603E:#define __NATURAL_ALIGNMENT__ 1
-// PPC603E:#define __POINTER_WIDTH__ 32
-// PPC603E:#define __POWERPC__ 1
-// PPC603E:#define __PTRDIFF_TYPE__ long int
-// PPC603E:#define __PTRDIFF_WIDTH__ 32
-// PPC603E:#define __REGISTER_PREFIX__
-// PPC603E:#define __SCHAR_MAX__ 127
-// PPC603E:#define __SHRT_MAX__ 32767
-// PPC603E:#define __SIG_ATOMIC_WIDTH__ 32
-// PPC603E:#define __SIZEOF_DOUBLE__ 8
-// PPC603E:#define __SIZEOF_FLOAT__ 4
-// PPC603E:#define __SIZEOF_INT__ 4
-// PPC603E:#define __SIZEOF_LONG_DOUBLE__ 16
-// PPC603E:#define __SIZEOF_LONG_LONG__ 8
-// PPC603E:#define __SIZEOF_LONG__ 4
-// PPC603E:#define __SIZEOF_POINTER__ 4
-// PPC603E:#define __SIZEOF_PTRDIFF_T__ 4
-// PPC603E:#define __SIZEOF_SHORT__ 2
-// PPC603E:#define __SIZEOF_SIZE_T__ 4
-// PPC603E:#define __SIZEOF_WCHAR_T__ 4
-// PPC603E:#define __SIZEOF_WINT_T__ 4
-// PPC603E:#define __SIZE_MAX__ 4294967295U
-// PPC603E:#define __SIZE_TYPE__ long unsigned int
-// PPC603E:#define __SIZE_WIDTH__ 32
-// PPC603E:#define __UINTMAX_TYPE__ long long unsigned int
-// PPC603E:#define __USER_LABEL_PREFIX__ _
-// PPC603E:#define __WCHAR_MAX__ 2147483647
-// PPC603E:#define __WCHAR_TYPE__ int
-// PPC603E:#define __WCHAR_WIDTH__ 32
-// PPC603E:#define __WINT_TYPE__ int
-// PPC603E:#define __WINT_WIDTH__ 32
-// PPC603E:#define __powerpc__ 1
-// PPC603E:#define __ppc__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr7 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC64 %s
-//
-// PPC64:#define _ARCH_PPC 1
-// PPC64:#define _ARCH_PPC64 1
-// PPC64:#define _ARCH_PPCGR 1
-// PPC64:#define _ARCH_PPCSQ 1
-// PPC64:#define _ARCH_PWR4 1
-// PPC64:#define _ARCH_PWR5 1
-// PPC64:#define _ARCH_PWR6 1
-// PPC64:#define _ARCH_PWR7 1
-// PPC64:#define _BIG_ENDIAN 1
-// PPC64:#define _LP64 1
-// PPC64:#define __BIG_ENDIAN__ 1
-// PPC64:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// PPC64:#define __CHAR16_TYPE__ unsigned short
-// PPC64:#define __CHAR32_TYPE__ unsigned int
-// PPC64:#define __CHAR_BIT__ 8
-// PPC64:#define __CHAR_UNSIGNED__ 1
-// PPC64:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// PPC64:#define __DBL_DIG__ 15
-// PPC64:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// PPC64:#define __DBL_HAS_DENORM__ 1
-// PPC64:#define __DBL_HAS_INFINITY__ 1
-// PPC64:#define __DBL_HAS_QUIET_NAN__ 1
-// PPC64:#define __DBL_MANT_DIG__ 53
-// PPC64:#define __DBL_MAX_10_EXP__ 308
-// PPC64:#define __DBL_MAX_EXP__ 1024
-// PPC64:#define __DBL_MAX__ 1.7976931348623157e+308
-// PPC64:#define __DBL_MIN_10_EXP__ (-307)
-// PPC64:#define __DBL_MIN_EXP__ (-1021)
-// PPC64:#define __DBL_MIN__ 2.2250738585072014e-308
-// PPC64:#define __DECIMAL_DIG__ 33
-// PPC64:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// PPC64:#define __FLT_DIG__ 6
-// PPC64:#define __FLT_EPSILON__ 1.19209290e-7F
-// PPC64:#define __FLT_EVAL_METHOD__ 0
-// PPC64:#define __FLT_HAS_DENORM__ 1
-// PPC64:#define __FLT_HAS_INFINITY__ 1
-// PPC64:#define __FLT_HAS_QUIET_NAN__ 1
-// PPC64:#define __FLT_MANT_DIG__ 24
-// PPC64:#define __FLT_MAX_10_EXP__ 38
-// PPC64:#define __FLT_MAX_EXP__ 128
-// PPC64:#define __FLT_MAX__ 3.40282347e+38F
-// PPC64:#define __FLT_MIN_10_EXP__ (-37)
-// PPC64:#define __FLT_MIN_EXP__ (-125)
-// PPC64:#define __FLT_MIN__ 1.17549435e-38F
-// PPC64:#define __FLT_RADIX__ 2
-// PPC64:#define __INT16_TYPE__ short
-// PPC64:#define __INT32_TYPE__ int
-// PPC64:#define __INT64_C_SUFFIX__ L
-// PPC64:#define __INT64_TYPE__ long int
-// PPC64:#define __INT8_TYPE__ char
-// PPC64:#define __INTMAX_MAX__ 9223372036854775807L
-// PPC64:#define __INTMAX_TYPE__ long int
-// PPC64:#define __INTMAX_WIDTH__ 64
-// PPC64:#define __INTPTR_TYPE__ long int
-// PPC64:#define __INTPTR_WIDTH__ 64
-// PPC64:#define __INT_MAX__ 2147483647
-// PPC64:#define __LDBL_DENORM_MIN__ 4.94065645841246544176568792868221e-324L
-// PPC64:#define __LDBL_DIG__ 31
-// PPC64:#define __LDBL_EPSILON__ 4.94065645841246544176568792868221e-324L
-// PPC64:#define __LDBL_HAS_DENORM__ 1
-// PPC64:#define __LDBL_HAS_INFINITY__ 1
-// PPC64:#define __LDBL_HAS_QUIET_NAN__ 1
-// PPC64:#define __LDBL_MANT_DIG__ 106
-// PPC64:#define __LDBL_MAX_10_EXP__ 308
-// PPC64:#define __LDBL_MAX_EXP__ 1024
-// PPC64:#define __LDBL_MAX__ 1.79769313486231580793728971405301e+308L
-// PPC64:#define __LDBL_MIN_10_EXP__ (-291)
-// PPC64:#define __LDBL_MIN_EXP__ (-968)
-// PPC64:#define __LDBL_MIN__ 2.00416836000897277799610805135016e-292L
-// PPC64:#define __LONG_DOUBLE_128__ 1
-// PPC64:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// PPC64:#define __LONG_MAX__ 9223372036854775807L
-// PPC64:#define __LP64__ 1
-// PPC64:#define __NATURAL_ALIGNMENT__ 1
-// PPC64:#define __POINTER_WIDTH__ 64
-// PPC64:#define __POWERPC__ 1
-// PPC64:#define __PTRDIFF_TYPE__ long int
-// PPC64:#define __PTRDIFF_WIDTH__ 64
-// PPC64:#define __REGISTER_PREFIX__ 
-// PPC64:#define __SCHAR_MAX__ 127
-// PPC64:#define __SHRT_MAX__ 32767
-// PPC64:#define __SIG_ATOMIC_WIDTH__ 32
-// PPC64:#define __SIZEOF_DOUBLE__ 8
-// PPC64:#define __SIZEOF_FLOAT__ 4
-// PPC64:#define __SIZEOF_INT__ 4
-// PPC64:#define __SIZEOF_LONG_DOUBLE__ 16
-// PPC64:#define __SIZEOF_LONG_LONG__ 8
-// PPC64:#define __SIZEOF_LONG__ 8
-// PPC64:#define __SIZEOF_POINTER__ 8
-// PPC64:#define __SIZEOF_PTRDIFF_T__ 8
-// PPC64:#define __SIZEOF_SHORT__ 2
-// PPC64:#define __SIZEOF_SIZE_T__ 8
-// PPC64:#define __SIZEOF_WCHAR_T__ 4
-// PPC64:#define __SIZEOF_WINT_T__ 4
-// PPC64:#define __SIZE_MAX__ 18446744073709551615UL
-// PPC64:#define __SIZE_TYPE__ long unsigned int
-// PPC64:#define __SIZE_WIDTH__ 64
-// PPC64:#define __UINTMAX_TYPE__ long unsigned int
-// PPC64:#define __USER_LABEL_PREFIX__ _
-// PPC64:#define __WCHAR_MAX__ 2147483647
-// PPC64:#define __WCHAR_TYPE__ int
-// PPC64:#define __WCHAR_WIDTH__ 32
-// PPC64:#define __WINT_TYPE__ int
-// PPC64:#define __WINT_WIDTH__ 32
-// PPC64:#define __ppc64__ 1
-// PPC64:#define __ppc__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu a2q -fno-signed-char < /dev/null | FileCheck -check-prefix PPCA2Q %s
-//
-// PPCA2Q:#define _ARCH_A2 1
-// PPCA2Q:#define _ARCH_A2Q 1
-// PPCA2Q:#define _ARCH_PPC 1
-// PPCA2Q:#define _ARCH_PPC64 1
-// PPCA2Q:#define _ARCH_QP 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-bgq-linux -fno-signed-char < /dev/null | FileCheck -check-prefix PPCBGQ %s
-//
-// PPCBGQ:#define __THW_BLUEGENE__ 1
-// PPCBGQ:#define __TOS_BGQ__ 1
-// PPCBGQ:#define __bg__ 1
-// PPCBGQ:#define __bgq__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu 630 -fno-signed-char < /dev/null | FileCheck -check-prefix PPC630 %s
-//
-// PPC630:#define _ARCH_630 1
-// PPC630:#define _ARCH_PPC 1
-// PPC630:#define _ARCH_PPC64 1
-// PPC630:#define _ARCH_PPCGR 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr3 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPWR3 %s
-//
-// PPCPWR3:#define _ARCH_PPC 1
-// PPCPWR3:#define _ARCH_PPC64 1
-// PPCPWR3:#define _ARCH_PPCGR 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power3 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPOWER3 %s
-//
-// PPCPOWER3:#define _ARCH_PPC 1
-// PPCPOWER3:#define _ARCH_PPC64 1
-// PPCPOWER3:#define _ARCH_PPCGR 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr4 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPWR4 %s
-//
-// PPCPWR4:#define _ARCH_PPC 1
-// PPCPWR4:#define _ARCH_PPC64 1
-// PPCPWR4:#define _ARCH_PPCGR 1
-// PPCPWR4:#define _ARCH_PPCSQ 1
-// PPCPWR4:#define _ARCH_PWR4 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power4 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPOWER4 %s
-//
-// PPCPOWER4:#define _ARCH_PPC 1
-// PPCPOWER4:#define _ARCH_PPC64 1
-// PPCPOWER4:#define _ARCH_PPCGR 1
-// PPCPOWER4:#define _ARCH_PPCSQ 1
-// PPCPOWER4:#define _ARCH_PWR4 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr5 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPWR5 %s
-//
-// PPCPWR5:#define _ARCH_PPC 1
-// PPCPWR5:#define _ARCH_PPC64 1
-// PPCPWR5:#define _ARCH_PPCGR 1
-// PPCPWR5:#define _ARCH_PPCSQ 1
-// PPCPWR5:#define _ARCH_PWR4 1
-// PPCPWR5:#define _ARCH_PWR5 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power5 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPOWER5 %s
-//
-// PPCPOWER5:#define _ARCH_PPC 1
-// PPCPOWER5:#define _ARCH_PPC64 1
-// PPCPOWER5:#define _ARCH_PPCGR 1
-// PPCPOWER5:#define _ARCH_PPCSQ 1
-// PPCPOWER5:#define _ARCH_PWR4 1
-// PPCPOWER5:#define _ARCH_PWR5 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr5x -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPWR5X %s
-//
-// PPCPWR5X:#define _ARCH_PPC 1
-// PPCPWR5X:#define _ARCH_PPC64 1
-// PPCPWR5X:#define _ARCH_PPCGR 1
-// PPCPWR5X:#define _ARCH_PPCSQ 1
-// PPCPWR5X:#define _ARCH_PWR4 1
-// PPCPWR5X:#define _ARCH_PWR5 1
-// PPCPWR5X:#define _ARCH_PWR5X 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power5x -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPOWER5X %s
-//
-// PPCPOWER5X:#define _ARCH_PPC 1
-// PPCPOWER5X:#define _ARCH_PPC64 1
-// PPCPOWER5X:#define _ARCH_PPCGR 1
-// PPCPOWER5X:#define _ARCH_PPCSQ 1
-// PPCPOWER5X:#define _ARCH_PWR4 1
-// PPCPOWER5X:#define _ARCH_PWR5 1
-// PPCPOWER5X:#define _ARCH_PWR5X 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr6 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPWR6 %s
-//
-// PPCPWR6:#define _ARCH_PPC 1
-// PPCPWR6:#define _ARCH_PPC64 1
-// PPCPWR6:#define _ARCH_PPCGR 1
-// PPCPWR6:#define _ARCH_PPCSQ 1
-// PPCPWR6:#define _ARCH_PWR4 1
-// PPCPWR6:#define _ARCH_PWR5 1
-// PPCPWR6:#define _ARCH_PWR5X 1
-// PPCPWR6:#define _ARCH_PWR6 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power6 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPOWER6 %s
-//
-// PPCPOWER6:#define _ARCH_PPC 1
-// PPCPOWER6:#define _ARCH_PPC64 1
-// PPCPOWER6:#define _ARCH_PPCGR 1
-// PPCPOWER6:#define _ARCH_PPCSQ 1
-// PPCPOWER6:#define _ARCH_PWR4 1
-// PPCPOWER6:#define _ARCH_PWR5 1
-// PPCPOWER6:#define _ARCH_PWR5X 1
-// PPCPOWER6:#define _ARCH_PWR6 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr6x -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPWR6X %s
-//
-// PPCPWR6X:#define _ARCH_PPC 1
-// PPCPWR6X:#define _ARCH_PPC64 1
-// PPCPWR6X:#define _ARCH_PPCGR 1
-// PPCPWR6X:#define _ARCH_PPCSQ 1
-// PPCPWR6X:#define _ARCH_PWR4 1
-// PPCPWR6X:#define _ARCH_PWR5 1
-// PPCPWR6X:#define _ARCH_PWR5X 1
-// PPCPWR6X:#define _ARCH_PWR6 1
-// PPCPWR6X:#define _ARCH_PWR6X 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power6x -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPOWER6X %s
-//
-// PPCPOWER6X:#define _ARCH_PPC 1
-// PPCPOWER6X:#define _ARCH_PPC64 1
-// PPCPOWER6X:#define _ARCH_PPCGR 1
-// PPCPOWER6X:#define _ARCH_PPCSQ 1
-// PPCPOWER6X:#define _ARCH_PWR4 1
-// PPCPOWER6X:#define _ARCH_PWR5 1
-// PPCPOWER6X:#define _ARCH_PWR5X 1
-// PPCPOWER6X:#define _ARCH_PWR6 1
-// PPCPOWER6X:#define _ARCH_PWR6X 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr7 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPWR7 %s
-//
-// PPCPWR7:#define _ARCH_PPC 1
-// PPCPWR7:#define _ARCH_PPC64 1
-// PPCPWR7:#define _ARCH_PPCGR 1
-// PPCPWR7:#define _ARCH_PPCSQ 1
-// PPCPWR7:#define _ARCH_PWR4 1
-// PPCPWR7:#define _ARCH_PWR5 1
-// PPCPWR7:#define _ARCH_PWR5X 1
-// PPCPWR7:#define _ARCH_PWR6 1
-// PPCPWR7:#define _ARCH_PWR6X 1
-// PPCPWR7:#define _ARCH_PWR7 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power7 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPOWER7 %s
-//
-// PPCPOWER7:#define _ARCH_PPC 1
-// PPCPOWER7:#define _ARCH_PPC64 1
-// PPCPOWER7:#define _ARCH_PPCGR 1
-// PPCPOWER7:#define _ARCH_PPCSQ 1
-// PPCPOWER7:#define _ARCH_PWR4 1
-// PPCPOWER7:#define _ARCH_PWR5 1
-// PPCPOWER7:#define _ARCH_PWR5X 1
-// PPCPOWER7:#define _ARCH_PWR6 1
-// PPCPOWER7:#define _ARCH_PWR6X 1
-// PPCPOWER7:#define _ARCH_PWR7 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-linux-gnu -fno-signed-char < /dev/null | FileCheck -check-prefix PPC64-LINUX %s
-//
-// PPC64-LINUX:#define _ARCH_PPC 1
-// PPC64-LINUX:#define _ARCH_PPC64 1
-// PPC64-LINUX:#define _BIG_ENDIAN 1
-// PPC64-LINUX:#define _LP64 1
-// PPC64-LINUX:#define __BIG_ENDIAN__ 1
-// PPC64-LINUX:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// PPC64-LINUX:#define __CHAR16_TYPE__ unsigned short
-// PPC64-LINUX:#define __CHAR32_TYPE__ unsigned int
-// PPC64-LINUX:#define __CHAR_BIT__ 8
-// PPC64-LINUX:#define __CHAR_UNSIGNED__ 1
-// PPC64-LINUX:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// PPC64-LINUX:#define __DBL_DIG__ 15
-// PPC64-LINUX:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// PPC64-LINUX:#define __DBL_HAS_DENORM__ 1
-// PPC64-LINUX:#define __DBL_HAS_INFINITY__ 1
-// PPC64-LINUX:#define __DBL_HAS_QUIET_NAN__ 1
-// PPC64-LINUX:#define __DBL_MANT_DIG__ 53
-// PPC64-LINUX:#define __DBL_MAX_10_EXP__ 308
-// PPC64-LINUX:#define __DBL_MAX_EXP__ 1024
-// PPC64-LINUX:#define __DBL_MAX__ 1.7976931348623157e+308
-// PPC64-LINUX:#define __DBL_MIN_10_EXP__ (-307)
-// PPC64-LINUX:#define __DBL_MIN_EXP__ (-1021)
-// PPC64-LINUX:#define __DBL_MIN__ 2.2250738585072014e-308
-// PPC64-LINUX:#define __DECIMAL_DIG__ 33
-// PPC64-LINUX:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// PPC64-LINUX:#define __FLT_DIG__ 6
-// PPC64-LINUX:#define __FLT_EPSILON__ 1.19209290e-7F
-// PPC64-LINUX:#define __FLT_EVAL_METHOD__ 0
-// PPC64-LINUX:#define __FLT_HAS_DENORM__ 1
-// PPC64-LINUX:#define __FLT_HAS_INFINITY__ 1
-// PPC64-LINUX:#define __FLT_HAS_QUIET_NAN__ 1
-// PPC64-LINUX:#define __FLT_MANT_DIG__ 24
-// PPC64-LINUX:#define __FLT_MAX_10_EXP__ 38
-// PPC64-LINUX:#define __FLT_MAX_EXP__ 128
-// PPC64-LINUX:#define __FLT_MAX__ 3.40282347e+38F
-// PPC64-LINUX:#define __FLT_MIN_10_EXP__ (-37)
-// PPC64-LINUX:#define __FLT_MIN_EXP__ (-125)
-// PPC64-LINUX:#define __FLT_MIN__ 1.17549435e-38F
-// PPC64-LINUX:#define __FLT_RADIX__ 2
-// PPC64-LINUX:#define __INT16_TYPE__ short
-// PPC64-LINUX:#define __INT32_TYPE__ int
-// PPC64-LINUX:#define __INT64_C_SUFFIX__ L
-// PPC64-LINUX:#define __INT64_TYPE__ long int
-// PPC64-LINUX:#define __INT8_TYPE__ char
-// PPC64-LINUX:#define __INTMAX_MAX__ 9223372036854775807L
-// PPC64-LINUX:#define __INTMAX_TYPE__ long int
-// PPC64-LINUX:#define __INTMAX_WIDTH__ 64
-// PPC64-LINUX:#define __INTPTR_TYPE__ long int
-// PPC64-LINUX:#define __INTPTR_WIDTH__ 64
-// PPC64-LINUX:#define __INT_MAX__ 2147483647
-// PPC64-LINUX:#define __LDBL_DENORM_MIN__ 4.94065645841246544176568792868221e-324L
-// PPC64-LINUX:#define __LDBL_DIG__ 31
-// PPC64-LINUX:#define __LDBL_EPSILON__ 4.94065645841246544176568792868221e-324L
-// PPC64-LINUX:#define __LDBL_HAS_DENORM__ 1
-// PPC64-LINUX:#define __LDBL_HAS_INFINITY__ 1
-// PPC64-LINUX:#define __LDBL_HAS_QUIET_NAN__ 1
-// PPC64-LINUX:#define __LDBL_MANT_DIG__ 106
-// PPC64-LINUX:#define __LDBL_MAX_10_EXP__ 308
-// PPC64-LINUX:#define __LDBL_MAX_EXP__ 1024
-// PPC64-LINUX:#define __LDBL_MAX__ 1.79769313486231580793728971405301e+308L
-// PPC64-LINUX:#define __LDBL_MIN_10_EXP__ (-291)
-// PPC64-LINUX:#define __LDBL_MIN_EXP__ (-968)
-// PPC64-LINUX:#define __LDBL_MIN__ 2.00416836000897277799610805135016e-292L
-// PPC64-LINUX:#define __LONG_DOUBLE_128__ 1
-// PPC64-LINUX:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// PPC64-LINUX:#define __LONG_MAX__ 9223372036854775807L
-// PPC64-LINUX:#define __LP64__ 1
-// PPC64-LINUX:#define __NATURAL_ALIGNMENT__ 1
-// PPC64-LINUX:#define __POINTER_WIDTH__ 64
-// PPC64-LINUX:#define __POWERPC__ 1
-// PPC64-LINUX:#define __PTRDIFF_TYPE__ long int
-// PPC64-LINUX:#define __PTRDIFF_WIDTH__ 64
-// PPC64-LINUX:#define __REGISTER_PREFIX__
-// PPC64-LINUX:#define __SCHAR_MAX__ 127
-// PPC64-LINUX:#define __SHRT_MAX__ 32767
-// PPC64-LINUX:#define __SIG_ATOMIC_WIDTH__ 32
-// PPC64-LINUX:#define __SIZEOF_DOUBLE__ 8
-// PPC64-LINUX:#define __SIZEOF_FLOAT__ 4
-// PPC64-LINUX:#define __SIZEOF_INT__ 4
-// PPC64-LINUX:#define __SIZEOF_LONG_DOUBLE__ 16
-// PPC64-LINUX:#define __SIZEOF_LONG_LONG__ 8
-// PPC64-LINUX:#define __SIZEOF_LONG__ 8
-// PPC64-LINUX:#define __SIZEOF_POINTER__ 8
-// PPC64-LINUX:#define __SIZEOF_PTRDIFF_T__ 8
-// PPC64-LINUX:#define __SIZEOF_SHORT__ 2
-// PPC64-LINUX:#define __SIZEOF_SIZE_T__ 8
-// PPC64-LINUX:#define __SIZEOF_WCHAR_T__ 4
-// PPC64-LINUX:#define __SIZEOF_WINT_T__ 4
-// PPC64-LINUX:#define __SIZE_MAX__ 18446744073709551615UL
-// PPC64-LINUX:#define __SIZE_TYPE__ long unsigned int
-// PPC64-LINUX:#define __SIZE_WIDTH__ 64
-// PPC64-LINUX:#define __UINTMAX_TYPE__ long unsigned int
-// PPC64-LINUX:#define __USER_LABEL_PREFIX__
-// PPC64-LINUX:#define __WCHAR_MAX__ 2147483647
-// PPC64-LINUX:#define __WCHAR_TYPE__ int
-// PPC64-LINUX:#define __WCHAR_WIDTH__ 32
-// PPC64-LINUX:#define __WINT_TYPE__ unsigned int
-// PPC64-LINUX:#define __WINT_UNSIGNED__ 1
-// PPC64-LINUX:#define __WINT_WIDTH__ 32
-// PPC64-LINUX:#define __powerpc64__ 1
-// PPC64-LINUX:#define __powerpc__ 1
-// PPC64-LINUX:#define __ppc64__ 1
-// PPC64-LINUX:#define __ppc__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-none-none -fno-signed-char < /dev/null | FileCheck -check-prefix PPC %s
-//
-// PPC:#define _ARCH_PPC 1
-// PPC:#define _BIG_ENDIAN 1
-// PPC-NOT:#define _LP64
-// PPC:#define __BIG_ENDIAN__ 1
-// PPC:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// PPC:#define __CHAR16_TYPE__ unsigned short
-// PPC:#define __CHAR32_TYPE__ unsigned int
-// PPC:#define __CHAR_BIT__ 8
-// PPC:#define __CHAR_UNSIGNED__ 1
-// PPC:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// PPC:#define __DBL_DIG__ 15
-// PPC:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// PPC:#define __DBL_HAS_DENORM__ 1
-// PPC:#define __DBL_HAS_INFINITY__ 1
-// PPC:#define __DBL_HAS_QUIET_NAN__ 1
-// PPC:#define __DBL_MANT_DIG__ 53
-// PPC:#define __DBL_MAX_10_EXP__ 308
-// PPC:#define __DBL_MAX_EXP__ 1024
-// PPC:#define __DBL_MAX__ 1.7976931348623157e+308
-// PPC:#define __DBL_MIN_10_EXP__ (-307)
-// PPC:#define __DBL_MIN_EXP__ (-1021)
-// PPC:#define __DBL_MIN__ 2.2250738585072014e-308
-// PPC:#define __DECIMAL_DIG__ 33
-// PPC:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// PPC:#define __FLT_DIG__ 6
-// PPC:#define __FLT_EPSILON__ 1.19209290e-7F
-// PPC:#define __FLT_EVAL_METHOD__ 0
-// PPC:#define __FLT_HAS_DENORM__ 1
-// PPC:#define __FLT_HAS_INFINITY__ 1
-// PPC:#define __FLT_HAS_QUIET_NAN__ 1
-// PPC:#define __FLT_MANT_DIG__ 24
-// PPC:#define __FLT_MAX_10_EXP__ 38
-// PPC:#define __FLT_MAX_EXP__ 128
-// PPC:#define __FLT_MAX__ 3.40282347e+38F
-// PPC:#define __FLT_MIN_10_EXP__ (-37)
-// PPC:#define __FLT_MIN_EXP__ (-125)
-// PPC:#define __FLT_MIN__ 1.17549435e-38F
-// PPC:#define __FLT_RADIX__ 2
-// PPC:#define __INT16_TYPE__ short
-// PPC:#define __INT32_TYPE__ int
-// PPC:#define __INT64_C_SUFFIX__ LL
-// PPC:#define __INT64_TYPE__ long long int
-// PPC:#define __INT8_TYPE__ char
-// PPC:#define __INTMAX_MAX__ 9223372036854775807LL
-// PPC:#define __INTMAX_TYPE__ long long int
-// PPC:#define __INTMAX_WIDTH__ 64
-// PPC:#define __INTPTR_TYPE__ long int
-// PPC:#define __INTPTR_WIDTH__ 32
-// PPC:#define __INT_MAX__ 2147483647
-// PPC:#define __LDBL_DENORM_MIN__ 4.94065645841246544176568792868221e-324L
-// PPC:#define __LDBL_DIG__ 31
-// PPC:#define __LDBL_EPSILON__ 4.94065645841246544176568792868221e-324L
-// PPC:#define __LDBL_HAS_DENORM__ 1
-// PPC:#define __LDBL_HAS_INFINITY__ 1
-// PPC:#define __LDBL_HAS_QUIET_NAN__ 1
-// PPC:#define __LDBL_MANT_DIG__ 106
-// PPC:#define __LDBL_MAX_10_EXP__ 308
-// PPC:#define __LDBL_MAX_EXP__ 1024
-// PPC:#define __LDBL_MAX__ 1.79769313486231580793728971405301e+308L
-// PPC:#define __LDBL_MIN_10_EXP__ (-291)
-// PPC:#define __LDBL_MIN_EXP__ (-968)
-// PPC:#define __LDBL_MIN__ 2.00416836000897277799610805135016e-292L
-// PPC:#define __LONG_DOUBLE_128__ 1
-// PPC:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// PPC:#define __LONG_MAX__ 2147483647L
-// PPC-NOT:#define __LP64__
-// PPC:#define __NATURAL_ALIGNMENT__ 1
-// PPC:#define __POINTER_WIDTH__ 32
-// PPC:#define __POWERPC__ 1
-// PPC:#define __PTRDIFF_TYPE__ long int
-// PPC:#define __PTRDIFF_WIDTH__ 32
-// PPC:#define __REGISTER_PREFIX__ 
-// PPC:#define __SCHAR_MAX__ 127
-// PPC:#define __SHRT_MAX__ 32767
-// PPC:#define __SIG_ATOMIC_WIDTH__ 32
-// PPC:#define __SIZEOF_DOUBLE__ 8
-// PPC:#define __SIZEOF_FLOAT__ 4
-// PPC:#define __SIZEOF_INT__ 4
-// PPC:#define __SIZEOF_LONG_DOUBLE__ 16
-// PPC:#define __SIZEOF_LONG_LONG__ 8
-// PPC:#define __SIZEOF_LONG__ 4
-// PPC:#define __SIZEOF_POINTER__ 4
-// PPC:#define __SIZEOF_PTRDIFF_T__ 4
-// PPC:#define __SIZEOF_SHORT__ 2
-// PPC:#define __SIZEOF_SIZE_T__ 4
-// PPC:#define __SIZEOF_WCHAR_T__ 4
-// PPC:#define __SIZEOF_WINT_T__ 4
-// PPC:#define __SIZE_MAX__ 4294967295U
-// PPC:#define __SIZE_TYPE__ long unsigned int
-// PPC:#define __SIZE_WIDTH__ 32
-// PPC:#define __UINTMAX_TYPE__ long long unsigned int
-// PPC:#define __USER_LABEL_PREFIX__ _
-// PPC:#define __WCHAR_MAX__ 2147483647
-// PPC:#define __WCHAR_TYPE__ int
-// PPC:#define __WCHAR_WIDTH__ 32
-// PPC:#define __WINT_TYPE__ int
-// PPC:#define __WINT_WIDTH__ 32
-// PPC:#define __ppc__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-unknown-linux-gnu -fno-signed-char < /dev/null | FileCheck -check-prefix PPC-LINUX %s
-//
-// PPC-LINUX:#define _ARCH_PPC 1
-// PPC-LINUX:#define _BIG_ENDIAN 1
-// PPC-LINUX-NOT:#define _LP64
-// PPC-LINUX:#define __BIG_ENDIAN__ 1
-// PPC-LINUX:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// PPC-LINUX:#define __CHAR16_TYPE__ unsigned short
-// PPC-LINUX:#define __CHAR32_TYPE__ unsigned int
-// PPC-LINUX:#define __CHAR_BIT__ 8
-// PPC-LINUX:#define __CHAR_UNSIGNED__ 1
-// PPC-LINUX:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// PPC-LINUX:#define __DBL_DIG__ 15
-// PPC-LINUX:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// PPC-LINUX:#define __DBL_HAS_DENORM__ 1
-// PPC-LINUX:#define __DBL_HAS_INFINITY__ 1
-// PPC-LINUX:#define __DBL_HAS_QUIET_NAN__ 1
-// PPC-LINUX:#define __DBL_MANT_DIG__ 53
-// PPC-LINUX:#define __DBL_MAX_10_EXP__ 308
-// PPC-LINUX:#define __DBL_MAX_EXP__ 1024
-// PPC-LINUX:#define __DBL_MAX__ 1.7976931348623157e+308
-// PPC-LINUX:#define __DBL_MIN_10_EXP__ (-307)
-// PPC-LINUX:#define __DBL_MIN_EXP__ (-1021)
-// PPC-LINUX:#define __DBL_MIN__ 2.2250738585072014e-308
-// PPC-LINUX:#define __DECIMAL_DIG__ 33
-// PPC-LINUX:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// PPC-LINUX:#define __FLT_DIG__ 6
-// PPC-LINUX:#define __FLT_EPSILON__ 1.19209290e-7F
-// PPC-LINUX:#define __FLT_EVAL_METHOD__ 0
-// PPC-LINUX:#define __FLT_HAS_DENORM__ 1
-// PPC-LINUX:#define __FLT_HAS_INFINITY__ 1
-// PPC-LINUX:#define __FLT_HAS_QUIET_NAN__ 1
-// PPC-LINUX:#define __FLT_MANT_DIG__ 24
-// PPC-LINUX:#define __FLT_MAX_10_EXP__ 38
-// PPC-LINUX:#define __FLT_MAX_EXP__ 128
-// PPC-LINUX:#define __FLT_MAX__ 3.40282347e+38F
-// PPC-LINUX:#define __FLT_MIN_10_EXP__ (-37)
-// PPC-LINUX:#define __FLT_MIN_EXP__ (-125)
-// PPC-LINUX:#define __FLT_MIN__ 1.17549435e-38F
-// PPC-LINUX:#define __FLT_RADIX__ 2
-// PPC-LINUX:#define __INT16_TYPE__ short
-// PPC-LINUX:#define __INT32_TYPE__ int
-// PPC-LINUX:#define __INT64_C_SUFFIX__ LL
-// PPC-LINUX:#define __INT64_TYPE__ long long int
-// PPC-LINUX:#define __INT8_TYPE__ char
-// PPC-LINUX:#define __INTMAX_MAX__ 9223372036854775807LL
-// PPC-LINUX:#define __INTMAX_TYPE__ long long int
-// PPC-LINUX:#define __INTMAX_WIDTH__ 64
-// PPC-LINUX:#define __INTPTR_TYPE__ int
-// PPC-LINUX:#define __INTPTR_WIDTH__ 32
-// PPC-LINUX:#define __INT_MAX__ 2147483647
-// PPC-LINUX:#define __LDBL_DENORM_MIN__ 4.94065645841246544176568792868221e-324L
-// PPC-LINUX:#define __LDBL_DIG__ 31
-// PPC-LINUX:#define __LDBL_EPSILON__ 4.94065645841246544176568792868221e-324L
-// PPC-LINUX:#define __LDBL_HAS_DENORM__ 1
-// PPC-LINUX:#define __LDBL_HAS_INFINITY__ 1
-// PPC-LINUX:#define __LDBL_HAS_QUIET_NAN__ 1
-// PPC-LINUX:#define __LDBL_MANT_DIG__ 106
-// PPC-LINUX:#define __LDBL_MAX_10_EXP__ 308
-// PPC-LINUX:#define __LDBL_MAX_EXP__ 1024
-// PPC-LINUX:#define __LDBL_MAX__ 1.79769313486231580793728971405301e+308L
-// PPC-LINUX:#define __LDBL_MIN_10_EXP__ (-291)
-// PPC-LINUX:#define __LDBL_MIN_EXP__ (-968)
-// PPC-LINUX:#define __LDBL_MIN__ 2.00416836000897277799610805135016e-292L
-// PPC-LINUX:#define __LONG_DOUBLE_128__ 1
-// PPC-LINUX:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// PPC-LINUX:#define __LONG_MAX__ 2147483647L
-// PPC-LINUX-NOT:#define __LP64__
-// PPC-LINUX:#define __NATURAL_ALIGNMENT__ 1
-// PPC-LINUX:#define __POINTER_WIDTH__ 32
-// PPC-LINUX:#define __POWERPC__ 1
-// PPC-LINUX:#define __PTRDIFF_TYPE__ int
-// PPC-LINUX:#define __PTRDIFF_WIDTH__ 32
-// PPC-LINUX:#define __REGISTER_PREFIX__
-// PPC-LINUX:#define __SCHAR_MAX__ 127
-// PPC-LINUX:#define __SHRT_MAX__ 32767
-// PPC-LINUX:#define __SIG_ATOMIC_WIDTH__ 32
-// PPC-LINUX:#define __SIZEOF_DOUBLE__ 8
-// PPC-LINUX:#define __SIZEOF_FLOAT__ 4
-// PPC-LINUX:#define __SIZEOF_INT__ 4
-// PPC-LINUX:#define __SIZEOF_LONG_DOUBLE__ 16
-// PPC-LINUX:#define __SIZEOF_LONG_LONG__ 8
-// PPC-LINUX:#define __SIZEOF_LONG__ 4
-// PPC-LINUX:#define __SIZEOF_POINTER__ 4
-// PPC-LINUX:#define __SIZEOF_PTRDIFF_T__ 4
-// PPC-LINUX:#define __SIZEOF_SHORT__ 2
-// PPC-LINUX:#define __SIZEOF_SIZE_T__ 4
-// PPC-LINUX:#define __SIZEOF_WCHAR_T__ 4
-// PPC-LINUX:#define __SIZEOF_WINT_T__ 4
-// PPC-LINUX:#define __SIZE_MAX__ 4294967295U
-// PPC-LINUX:#define __SIZE_TYPE__ unsigned int
-// PPC-LINUX:#define __SIZE_WIDTH__ 32
-// PPC-LINUX:#define __UINTMAX_TYPE__ long long unsigned int
-// PPC-LINUX:#define __USER_LABEL_PREFIX__
-// PPC-LINUX:#define __WCHAR_MAX__ 2147483647
-// PPC-LINUX:#define __WCHAR_TYPE__ int
-// PPC-LINUX:#define __WCHAR_WIDTH__ 32
-// PPC-LINUX:#define __WINT_TYPE__ unsigned int
-// PPC-LINUX:#define __WINT_UNSIGNED__ 1
-// PPC-LINUX:#define __WINT_WIDTH__ 32
-// PPC-LINUX:#define __powerpc__ 1
-// PPC-LINUX:#define __ppc__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=s390x-none-none -fno-signed-char < /dev/null | FileCheck -check-prefix S390X %s
-//
-// S390X:#define __CHAR16_TYPE__ unsigned short
-// S390X:#define __CHAR32_TYPE__ unsigned int
-// S390X:#define __CHAR_BIT__ 8
-// S390X:#define __CHAR_UNSIGNED__ 1
-// S390X:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// S390X:#define __DBL_DIG__ 15
-// S390X:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// S390X:#define __DBL_HAS_DENORM__ 1
-// S390X:#define __DBL_HAS_INFINITY__ 1
-// S390X:#define __DBL_HAS_QUIET_NAN__ 1
-// S390X:#define __DBL_MANT_DIG__ 53
-// S390X:#define __DBL_MAX_10_EXP__ 308
-// S390X:#define __DBL_MAX_EXP__ 1024
-// S390X:#define __DBL_MAX__ 1.7976931348623157e+308
-// S390X:#define __DBL_MIN_10_EXP__ (-307)
-// S390X:#define __DBL_MIN_EXP__ (-1021)
-// S390X:#define __DBL_MIN__ 2.2250738585072014e-308
-// S390X:#define __DECIMAL_DIG__ 36
-// S390X:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// S390X:#define __FLT_DIG__ 6
-// S390X:#define __FLT_EPSILON__ 1.19209290e-7F
-// S390X:#define __FLT_EVAL_METHOD__ 0
-// S390X:#define __FLT_HAS_DENORM__ 1
-// S390X:#define __FLT_HAS_INFINITY__ 1
-// S390X:#define __FLT_HAS_QUIET_NAN__ 1
-// S390X:#define __FLT_MANT_DIG__ 24
-// S390X:#define __FLT_MAX_10_EXP__ 38
-// S390X:#define __FLT_MAX_EXP__ 128
-// S390X:#define __FLT_MAX__ 3.40282347e+38F
-// S390X:#define __FLT_MIN_10_EXP__ (-37)
-// S390X:#define __FLT_MIN_EXP__ (-125)
-// S390X:#define __FLT_MIN__ 1.17549435e-38F
-// S390X:#define __FLT_RADIX__ 2
-// S390X:#define __INT16_TYPE__ short
-// S390X:#define __INT32_TYPE__ int
-// S390X:#define __INT64_C_SUFFIX__ L
-// S390X:#define __INT64_TYPE__ long long int
-// S390X:#define __INT8_TYPE__ char
-// S390X:#define __INTMAX_MAX__ 9223372036854775807LL
-// S390X:#define __INTMAX_TYPE__ long long int
-// S390X:#define __INTMAX_WIDTH__ 64
-// S390X:#define __INTPTR_TYPE__ long int
-// S390X:#define __INTPTR_WIDTH__ 64
-// S390X:#define __INT_MAX__ 2147483647
-// S390X:#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
-// S390X:#define __LDBL_DIG__ 33
-// S390X:#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
-// S390X:#define __LDBL_HAS_DENORM__ 1
-// S390X:#define __LDBL_HAS_INFINITY__ 1
-// S390X:#define __LDBL_HAS_QUIET_NAN__ 1
-// S390X:#define __LDBL_MANT_DIG__ 113
-// S390X:#define __LDBL_MAX_10_EXP__ 4932
-// S390X:#define __LDBL_MAX_EXP__ 16384
-// S390X:#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
-// S390X:#define __LDBL_MIN_10_EXP__ (-4931)
-// S390X:#define __LDBL_MIN_EXP__ (-16381)
-// S390X:#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
-// S390X:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// S390X:#define __LONG_MAX__ 9223372036854775807L
-// S390X:#define __NO_INLINE__ 1
-// S390X:#define __POINTER_WIDTH__ 64
-// S390X:#define __PTRDIFF_TYPE__ long int
-// S390X:#define __PTRDIFF_WIDTH__ 64
-// S390X:#define __SCHAR_MAX__ 127
-// S390X:#define __SHRT_MAX__ 32767
-// S390X:#define __SIG_ATOMIC_WIDTH__ 32
-// S390X:#define __SIZEOF_DOUBLE__ 8
-// S390X:#define __SIZEOF_FLOAT__ 4
-// S390X:#define __SIZEOF_INT__ 4
-// S390X:#define __SIZEOF_LONG_DOUBLE__ 16
-// S390X:#define __SIZEOF_LONG_LONG__ 8
-// S390X:#define __SIZEOF_LONG__ 8
-// S390X:#define __SIZEOF_POINTER__ 8
-// S390X:#define __SIZEOF_PTRDIFF_T__ 8
-// S390X:#define __SIZEOF_SHORT__ 2
-// S390X:#define __SIZEOF_SIZE_T__ 8
-// S390X:#define __SIZEOF_WCHAR_T__ 4
-// S390X:#define __SIZEOF_WINT_T__ 4
-// S390X:#define __SIZE_TYPE__ long unsigned int
-// S390X:#define __SIZE_WIDTH__ 64
-// S390X:#define __UINTMAX_TYPE__ long long unsigned int
-// S390X:#define __USER_LABEL_PREFIX__ _
-// S390X:#define __WCHAR_MAX__ 2147483647
-// S390X:#define __WCHAR_TYPE__ int
-// S390X:#define __WCHAR_WIDTH__ 32
-// S390X:#define __WINT_TYPE__ int
-// S390X:#define __WINT_WIDTH__ 32
-// S390X:#define __s390__ 1
-// S390X:#define __s390x__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=sparc-none-none < /dev/null | FileCheck -check-prefix SPARC %s
-//
-// SPARC-NOT:#define _LP64
-// SPARC:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// SPARC:#define __CHAR16_TYPE__ unsigned short
-// SPARC:#define __CHAR32_TYPE__ unsigned int
-// SPARC:#define __CHAR_BIT__ 8
-// SPARC:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// SPARC:#define __DBL_DIG__ 15
-// SPARC:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// SPARC:#define __DBL_HAS_DENORM__ 1
-// SPARC:#define __DBL_HAS_INFINITY__ 1
-// SPARC:#define __DBL_HAS_QUIET_NAN__ 1
-// SPARC:#define __DBL_MANT_DIG__ 53
-// SPARC:#define __DBL_MAX_10_EXP__ 308
-// SPARC:#define __DBL_MAX_EXP__ 1024
-// SPARC:#define __DBL_MAX__ 1.7976931348623157e+308
-// SPARC:#define __DBL_MIN_10_EXP__ (-307)
-// SPARC:#define __DBL_MIN_EXP__ (-1021)
-// SPARC:#define __DBL_MIN__ 2.2250738585072014e-308
-// SPARC:#define __DECIMAL_DIG__ 17
-// SPARC:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// SPARC:#define __FLT_DIG__ 6
-// SPARC:#define __FLT_EPSILON__ 1.19209290e-7F
-// SPARC:#define __FLT_EVAL_METHOD__ 0
-// SPARC:#define __FLT_HAS_DENORM__ 1
-// SPARC:#define __FLT_HAS_INFINITY__ 1
-// SPARC:#define __FLT_HAS_QUIET_NAN__ 1
-// SPARC:#define __FLT_MANT_DIG__ 24
-// SPARC:#define __FLT_MAX_10_EXP__ 38
-// SPARC:#define __FLT_MAX_EXP__ 128
-// SPARC:#define __FLT_MAX__ 3.40282347e+38F
-// SPARC:#define __FLT_MIN_10_EXP__ (-37)
-// SPARC:#define __FLT_MIN_EXP__ (-125)
-// SPARC:#define __FLT_MIN__ 1.17549435e-38F
-// SPARC:#define __FLT_RADIX__ 2
-// SPARC:#define __INT16_TYPE__ short
-// SPARC:#define __INT32_TYPE__ int
-// SPARC:#define __INT64_C_SUFFIX__ LL
-// SPARC:#define __INT64_TYPE__ long long int
-// SPARC:#define __INT8_TYPE__ char
-// SPARC:#define __INTMAX_MAX__ 9223372036854775807LL
-// SPARC:#define __INTMAX_TYPE__ long long int
-// SPARC:#define __INTMAX_WIDTH__ 64
-// SPARC:#define __INTPTR_TYPE__ long int
-// SPARC:#define __INTPTR_WIDTH__ 32
-// SPARC:#define __INT_MAX__ 2147483647
-// SPARC:#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
-// SPARC:#define __LDBL_DIG__ 15
-// SPARC:#define __LDBL_EPSILON__ 2.2204460492503131e-16L
-// SPARC:#define __LDBL_HAS_DENORM__ 1
-// SPARC:#define __LDBL_HAS_INFINITY__ 1
-// SPARC:#define __LDBL_HAS_QUIET_NAN__ 1
-// SPARC:#define __LDBL_MANT_DIG__ 53
-// SPARC:#define __LDBL_MAX_10_EXP__ 308
-// SPARC:#define __LDBL_MAX_EXP__ 1024
-// SPARC:#define __LDBL_MAX__ 1.7976931348623157e+308L
-// SPARC:#define __LDBL_MIN_10_EXP__ (-307)
-// SPARC:#define __LDBL_MIN_EXP__ (-1021)
-// SPARC:#define __LDBL_MIN__ 2.2250738585072014e-308L
-// SPARC:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// SPARC:#define __LONG_MAX__ 2147483647L
-// SPARC-NOT:#define __LP64__
-// SPARC:#define __POINTER_WIDTH__ 32
-// SPARC:#define __PTRDIFF_TYPE__ long int
-// SPARC:#define __PTRDIFF_WIDTH__ 32
-// SPARC:#define __REGISTER_PREFIX__
-// SPARC:#define __SCHAR_MAX__ 127
-// SPARC:#define __SHRT_MAX__ 32767
-// SPARC:#define __SIG_ATOMIC_WIDTH__ 32
-// SPARC:#define __SIZEOF_DOUBLE__ 8
-// SPARC:#define __SIZEOF_FLOAT__ 4
-// SPARC:#define __SIZEOF_INT__ 4
-// SPARC:#define __SIZEOF_LONG_DOUBLE__ 8
-// SPARC:#define __SIZEOF_LONG_LONG__ 8
-// SPARC:#define __SIZEOF_LONG__ 4
-// SPARC:#define __SIZEOF_POINTER__ 4
-// SPARC:#define __SIZEOF_PTRDIFF_T__ 4
-// SPARC:#define __SIZEOF_SHORT__ 2
-// SPARC:#define __SIZEOF_SIZE_T__ 4
-// SPARC:#define __SIZEOF_WCHAR_T__ 4
-// SPARC:#define __SIZEOF_WINT_T__ 4
-// SPARC:#define __SIZE_MAX__ 4294967295U
-// SPARC:#define __SIZE_TYPE__ long unsigned int
-// SPARC:#define __SIZE_WIDTH__ 32
-// SPARC:#define __UINTMAX_TYPE__ long long unsigned int
-// SPARC:#define __USER_LABEL_PREFIX__ _
-// SPARC:#define __VERSION__ "4.2.1 Compatible
-// SPARC:#define __WCHAR_MAX__ 2147483647
-// SPARC:#define __WCHAR_TYPE__ int
-// SPARC:#define __WCHAR_WIDTH__ 32
-// SPARC:#define __WINT_TYPE__ int
-// SPARC:#define __WINT_WIDTH__ 32
-// SPARC:#define __sparc 1
-// SPARC:#define __sparc__ 1
-// SPARC:#define __sparcv8 1
-// SPARC:#define sparc 1
-// 
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=tce-none-none < /dev/null | FileCheck -check-prefix TCE %s
-//
-// TCE-NOT:#define _LP64
-// TCE:#define __BYTE_ORDER__ __ORDER_BIG_ENDIAN__
-// TCE:#define __CHAR16_TYPE__ unsigned short
-// TCE:#define __CHAR32_TYPE__ unsigned int
-// TCE:#define __CHAR_BIT__ 8
-// TCE:#define __DBL_DENORM_MIN__ 1.40129846e-45
-// TCE:#define __DBL_DIG__ 6
-// TCE:#define __DBL_EPSILON__ 1.19209290e-7
-// TCE:#define __DBL_HAS_DENORM__ 1
-// TCE:#define __DBL_HAS_INFINITY__ 1
-// TCE:#define __DBL_HAS_QUIET_NAN__ 1
-// TCE:#define __DBL_MANT_DIG__ 24
-// TCE:#define __DBL_MAX_10_EXP__ 38
-// TCE:#define __DBL_MAX_EXP__ 128
-// TCE:#define __DBL_MAX__ 3.40282347e+38
-// TCE:#define __DBL_MIN_10_EXP__ (-37)
-// TCE:#define __DBL_MIN_EXP__ (-125)
-// TCE:#define __DBL_MIN__ 1.17549435e-38
-// TCE:#define __DECIMAL_DIG__ -1
-// TCE:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// TCE:#define __FLT_DIG__ 6
-// TCE:#define __FLT_EPSILON__ 1.19209290e-7F
-// TCE:#define __FLT_EVAL_METHOD__ 0
-// TCE:#define __FLT_HAS_DENORM__ 1
-// TCE:#define __FLT_HAS_INFINITY__ 1
-// TCE:#define __FLT_HAS_QUIET_NAN__ 1
-// TCE:#define __FLT_MANT_DIG__ 24
-// TCE:#define __FLT_MAX_10_EXP__ 38
-// TCE:#define __FLT_MAX_EXP__ 128
-// TCE:#define __FLT_MAX__ 3.40282347e+38F
-// TCE:#define __FLT_MIN_10_EXP__ (-37)
-// TCE:#define __FLT_MIN_EXP__ (-125)
-// TCE:#define __FLT_MIN__ 1.17549435e-38F
-// TCE:#define __FLT_RADIX__ 2
-// TCE:#define __INT16_TYPE__ short
-// TCE:#define __INT32_TYPE__ int
-// TCE:#define __INT8_TYPE__ char
-// TCE:#define __INTMAX_MAX__ 2147483647L
-// TCE:#define __INTMAX_TYPE__ long int
-// TCE:#define __INTMAX_WIDTH__ 32
-// TCE:#define __INTPTR_TYPE__ int
-// TCE:#define __INTPTR_WIDTH__ 32
-// TCE:#define __INT_MAX__ 2147483647
-// TCE:#define __LDBL_DENORM_MIN__ 1.40129846e-45L
-// TCE:#define __LDBL_DIG__ 6
-// TCE:#define __LDBL_EPSILON__ 1.19209290e-7L
-// TCE:#define __LDBL_HAS_DENORM__ 1
-// TCE:#define __LDBL_HAS_INFINITY__ 1
-// TCE:#define __LDBL_HAS_QUIET_NAN__ 1
-// TCE:#define __LDBL_MANT_DIG__ 24
-// TCE:#define __LDBL_MAX_10_EXP__ 38
-// TCE:#define __LDBL_MAX_EXP__ 128
-// TCE:#define __LDBL_MAX__ 3.40282347e+38L
-// TCE:#define __LDBL_MIN_10_EXP__ (-37)
-// TCE:#define __LDBL_MIN_EXP__ (-125)
-// TCE:#define __LDBL_MIN__ 1.17549435e-38L
-// TCE:#define __LONG_LONG_MAX__ 2147483647LL
-// TCE:#define __LONG_MAX__ 2147483647L
-// TCE-NOT:#define __LP64__
-// TCE:#define __POINTER_WIDTH__ 32
-// TCE:#define __PTRDIFF_TYPE__ int
-// TCE:#define __PTRDIFF_WIDTH__ 32
-// TCE:#define __SCHAR_MAX__ 127
-// TCE:#define __SHRT_MAX__ 32767
-// TCE:#define __SIG_ATOMIC_WIDTH__ 32
-// TCE:#define __SIZEOF_DOUBLE__ 4
-// TCE:#define __SIZEOF_FLOAT__ 4
-// TCE:#define __SIZEOF_INT__ 4
-// TCE:#define __SIZEOF_LONG_DOUBLE__ 4
-// TCE:#define __SIZEOF_LONG_LONG__ 4
-// TCE:#define __SIZEOF_LONG__ 4
-// TCE:#define __SIZEOF_POINTER__ 4
-// TCE:#define __SIZEOF_PTRDIFF_T__ 4
-// TCE:#define __SIZEOF_SHORT__ 2
-// TCE:#define __SIZEOF_SIZE_T__ 4
-// TCE:#define __SIZEOF_WCHAR_T__ 4
-// TCE:#define __SIZEOF_WINT_T__ 4
-// TCE:#define __SIZE_MAX__ 4294967295U
-// TCE:#define __SIZE_TYPE__ unsigned int
-// TCE:#define __SIZE_WIDTH__ 32
-// TCE:#define __TCE_V1__ 1
-// TCE:#define __TCE__ 1
-// TCE:#define __UINTMAX_TYPE__ long unsigned int
-// TCE:#define __USER_LABEL_PREFIX__ _
-// TCE:#define __WCHAR_MAX__ 2147483647
-// TCE:#define __WCHAR_TYPE__ int
-// TCE:#define __WCHAR_WIDTH__ 32
-// TCE:#define __WINT_TYPE__ int
-// TCE:#define __WINT_WIDTH__ 32
-// TCE:#define __tce 1
-// TCE:#define __tce__ 1
-// TCE:#define tce 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=x86_64-none-none < /dev/null | FileCheck -check-prefix X86_64 %s
-//
-// X86_64:#define _LP64 1
-// X86_64:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// X86_64:#define __CHAR16_TYPE__ unsigned short
-// X86_64:#define __CHAR32_TYPE__ unsigned int
-// X86_64:#define __CHAR_BIT__ 8
-// X86_64:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// X86_64:#define __DBL_DIG__ 15
-// X86_64:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// X86_64:#define __DBL_HAS_DENORM__ 1
-// X86_64:#define __DBL_HAS_INFINITY__ 1
-// X86_64:#define __DBL_HAS_QUIET_NAN__ 1
-// X86_64:#define __DBL_MANT_DIG__ 53
-// X86_64:#define __DBL_MAX_10_EXP__ 308
-// X86_64:#define __DBL_MAX_EXP__ 1024
-// X86_64:#define __DBL_MAX__ 1.7976931348623157e+308
-// X86_64:#define __DBL_MIN_10_EXP__ (-307)
-// X86_64:#define __DBL_MIN_EXP__ (-1021)
-// X86_64:#define __DBL_MIN__ 2.2250738585072014e-308
-// X86_64:#define __DECIMAL_DIG__ 21
-// X86_64:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// X86_64:#define __FLT_DIG__ 6
-// X86_64:#define __FLT_EPSILON__ 1.19209290e-7F
-// X86_64:#define __FLT_EVAL_METHOD__ 0
-// X86_64:#define __FLT_HAS_DENORM__ 1
-// X86_64:#define __FLT_HAS_INFINITY__ 1
-// X86_64:#define __FLT_HAS_QUIET_NAN__ 1
-// X86_64:#define __FLT_MANT_DIG__ 24
-// X86_64:#define __FLT_MAX_10_EXP__ 38
-// X86_64:#define __FLT_MAX_EXP__ 128
-// X86_64:#define __FLT_MAX__ 3.40282347e+38F
-// X86_64:#define __FLT_MIN_10_EXP__ (-37)
-// X86_64:#define __FLT_MIN_EXP__ (-125)
-// X86_64:#define __FLT_MIN__ 1.17549435e-38F
-// X86_64:#define __FLT_RADIX__ 2
-// X86_64:#define __INT16_TYPE__ short
-// X86_64:#define __INT32_TYPE__ int
-// X86_64:#define __INT64_C_SUFFIX__ L
-// X86_64:#define __INT64_TYPE__ long int
-// X86_64:#define __INT8_TYPE__ char
-// X86_64:#define __INTMAX_MAX__ 9223372036854775807L
-// X86_64:#define __INTMAX_TYPE__ long int
-// X86_64:#define __INTMAX_WIDTH__ 64
-// X86_64:#define __INTPTR_TYPE__ long int
-// X86_64:#define __INTPTR_WIDTH__ 64
-// X86_64:#define __INT_MAX__ 2147483647
-// X86_64:#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
-// X86_64:#define __LDBL_DIG__ 18
-// X86_64:#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
-// X86_64:#define __LDBL_HAS_DENORM__ 1
-// X86_64:#define __LDBL_HAS_INFINITY__ 1
-// X86_64:#define __LDBL_HAS_QUIET_NAN__ 1
-// X86_64:#define __LDBL_MANT_DIG__ 64
-// X86_64:#define __LDBL_MAX_10_EXP__ 4932
-// X86_64:#define __LDBL_MAX_EXP__ 16384
-// X86_64:#define __LDBL_MAX__ 1.18973149535723176502e+4932L
-// X86_64:#define __LDBL_MIN_10_EXP__ (-4931)
-// X86_64:#define __LDBL_MIN_EXP__ (-16381)
-// X86_64:#define __LDBL_MIN__ 3.36210314311209350626e-4932L
-// X86_64:#define __LITTLE_ENDIAN__ 1
-// X86_64:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// X86_64:#define __LONG_MAX__ 9223372036854775807L
-// X86_64:#define __LP64__ 1
-// X86_64:#define __MMX__ 1
-// X86_64:#define __NO_MATH_INLINES 1
-// X86_64:#define __POINTER_WIDTH__ 64
-// X86_64:#define __PTRDIFF_TYPE__ long int
-// X86_64:#define __PTRDIFF_WIDTH__ 64
-// X86_64:#define __REGISTER_PREFIX__ 
-// X86_64:#define __SCHAR_MAX__ 127
-// X86_64:#define __SHRT_MAX__ 32767
-// X86_64:#define __SIG_ATOMIC_WIDTH__ 32
-// X86_64:#define __SIZEOF_DOUBLE__ 8
-// X86_64:#define __SIZEOF_FLOAT__ 4
-// X86_64:#define __SIZEOF_INT__ 4
-// X86_64:#define __SIZEOF_LONG_DOUBLE__ 16
-// X86_64:#define __SIZEOF_LONG_LONG__ 8
-// X86_64:#define __SIZEOF_LONG__ 8
-// X86_64:#define __SIZEOF_POINTER__ 8
-// X86_64:#define __SIZEOF_PTRDIFF_T__ 8
-// X86_64:#define __SIZEOF_SHORT__ 2
-// X86_64:#define __SIZEOF_SIZE_T__ 8
-// X86_64:#define __SIZEOF_WCHAR_T__ 4
-// X86_64:#define __SIZEOF_WINT_T__ 4
-// X86_64:#define __SIZE_MAX__ 18446744073709551615UL
-// X86_64:#define __SIZE_TYPE__ long unsigned int
-// X86_64:#define __SIZE_WIDTH__ 64
-// X86_64:#define __SSE2_MATH__ 1
-// X86_64:#define __SSE2__ 1
-// X86_64:#define __SSE_MATH__ 1
-// X86_64:#define __SSE__ 1
-// X86_64:#define __UINTMAX_TYPE__ long unsigned int
-// X86_64:#define __USER_LABEL_PREFIX__ _
-// X86_64:#define __WCHAR_MAX__ 2147483647
-// X86_64:#define __WCHAR_TYPE__ int
-// X86_64:#define __WCHAR_WIDTH__ 32
-// X86_64:#define __WINT_TYPE__ int
-// X86_64:#define __WINT_WIDTH__ 32
-// X86_64:#define __amd64 1
-// X86_64:#define __amd64__ 1
-// X86_64:#define __x86_64 1
-// X86_64:#define __x86_64__ 1
-//
-// RUN: %clang_cc1 -E -dM -ffreestanding -triple=x86_64-pc-linux-gnu < /dev/null | FileCheck -check-prefix X86_64-LINUX %s
-//
-// X86_64-LINUX:#define _LP64 1
-// X86_64-LINUX:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
-// X86_64-LINUX:#define __CHAR16_TYPE__ unsigned short
-// X86_64-LINUX:#define __CHAR32_TYPE__ unsigned int
-// X86_64-LINUX:#define __CHAR_BIT__ 8
-// X86_64-LINUX:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
-// X86_64-LINUX:#define __DBL_DIG__ 15
-// X86_64-LINUX:#define __DBL_EPSILON__ 2.2204460492503131e-16
-// X86_64-LINUX:#define __DBL_HAS_DENORM__ 1
-// X86_64-LINUX:#define __DBL_HAS_INFINITY__ 1
-// X86_64-LINUX:#define __DBL_HAS_QUIET_NAN__ 1
-// X86_64-LINUX:#define __DBL_MANT_DIG__ 53
-// X86_64-LINUX:#define __DBL_MAX_10_EXP__ 308
-// X86_64-LINUX:#define __DBL_MAX_EXP__ 1024
-// X86_64-LINUX:#define __DBL_MAX__ 1.7976931348623157e+308
-// X86_64-LINUX:#define __DBL_MIN_10_EXP__ (-307)
-// X86_64-LINUX:#define __DBL_MIN_EXP__ (-1021)
-// X86_64-LINUX:#define __DBL_MIN__ 2.2250738585072014e-308
-// X86_64-LINUX:#define __DECIMAL_DIG__ 21
-// X86_64-LINUX:#define __FLT_DENORM_MIN__ 1.40129846e-45F
-// X86_64-LINUX:#define __FLT_DIG__ 6
-// X86_64-LINUX:#define __FLT_EPSILON__ 1.19209290e-7F
-// X86_64-LINUX:#define __FLT_EVAL_METHOD__ 0
-// X86_64-LINUX:#define __FLT_HAS_DENORM__ 1
-// X86_64-LINUX:#define __FLT_HAS_INFINITY__ 1
-// X86_64-LINUX:#define __FLT_HAS_QUIET_NAN__ 1
-// X86_64-LINUX:#define __FLT_MANT_DIG__ 24
-// X86_64-LINUX:#define __FLT_MAX_10_EXP__ 38
-// X86_64-LINUX:#define __FLT_MAX_EXP__ 128
-// X86_64-LINUX:#define __FLT_MAX__ 3.40282347e+38F
-// X86_64-LINUX:#define __FLT_MIN_10_EXP__ (-37)
-// X86_64-LINUX:#define __FLT_MIN_EXP__ (-125)
-// X86_64-LINUX:#define __FLT_MIN__ 1.17549435e-38F
-// X86_64-LINUX:#define __FLT_RADIX__ 2
-// X86_64-LINUX:#define __INT16_TYPE__ short
-// X86_64-LINUX:#define __INT32_TYPE__ int
-// X86_64-LINUX:#define __INT64_C_SUFFIX__ L
-// X86_64-LINUX:#define __INT64_TYPE__ long int
-// X86_64-LINUX:#define __INT8_TYPE__ char
-// X86_64-LINUX:#define __INTMAX_MAX__ 9223372036854775807L
-// X86_64-LINUX:#define __INTMAX_TYPE__ long int
-// X86_64-LINUX:#define __INTMAX_WIDTH__ 64
-// X86_64-LINUX:#define __INTPTR_TYPE__ long int
-// X86_64-LINUX:#define __INTPTR_WIDTH__ 64
-// X86_64-LINUX:#define __INT_MAX__ 2147483647
-// X86_64-LINUX:#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
-// X86_64-LINUX:#define __LDBL_DIG__ 18
-// X86_64-LINUX:#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
-// X86_64-LINUX:#define __LDBL_HAS_DENORM__ 1
-// X86_64-LINUX:#define __LDBL_HAS_INFINITY__ 1
-// X86_64-LINUX:#define __LDBL_HAS_QUIET_NAN__ 1
-// X86_64-LINUX:#define __LDBL_MANT_DIG__ 64
-// X86_64-LINUX:#define __LDBL_MAX_10_EXP__ 4932
-// X86_64-LINUX:#define __LDBL_MAX_EXP__ 16384
-// X86_64-LINUX:#define __LDBL_MAX__ 1.18973149535723176502e+4932L
-// X86_64-LINUX:#define __LDBL_MIN_10_EXP__ (-4931)
-// X86_64-LINUX:#define __LDBL_MIN_EXP__ (-16381)
-// X86_64-LINUX:#define __LDBL_MIN__ 3.36210314311209350626e-4932L
-// X86_64-LINUX:#define __LITTLE_ENDIAN__ 1
-// X86_64-LINUX:#define __LONG_LONG_MAX__ 9223372036854775807LL
-// X86_64-LINUX:#define __LONG_MAX__ 9223372036854775807L
-// X86_64-LINUX:#define __LP64__ 1
-// X86_64-LINUX:#define __MMX__ 1
-// X86_64-LINUX:#define __NO_MATH_INLINES 1
-// X86_64-LINUX:#define __POINTER_WIDTH__ 64
-// X86_64-LINUX:#define __PTRDIFF_TYPE__ long int
-// X86_64-LINUX:#define __PTRDIFF_WIDTH__ 64
-// X86_64-LINUX:#define __REGISTER_PREFIX__ 
-// X86_64-LINUX:#define __SCHAR_MAX__ 127
-// X86_64-LINUX:#define __SHRT_MAX__ 32767
-// X86_64-LINUX:#define __SIG_ATOMIC_WIDTH__ 32
-// X86_64-LINUX:#define __SIZEOF_DOUBLE__ 8
-// X86_64-LINUX:#define __SIZEOF_FLOAT__ 4
-// X86_64-LINUX:#define __SIZEOF_INT__ 4
-// X86_64-LINUX:#define __SIZEOF_LONG_DOUBLE__ 16
-// X86_64-LINUX:#define __SIZEOF_LONG_LONG__ 8
-// X86_64-LINUX:#define __SIZEOF_LONG__ 8
-// X86_64-LINUX:#define __SIZEOF_POINTER__ 8
-// X86_64-LINUX:#define __SIZEOF_PTRDIFF_T__ 8
-// X86_64-LINUX:#define __SIZEOF_SHORT__ 2
-// X86_64-LINUX:#define __SIZEOF_SIZE_T__ 8
-// X86_64-LINUX:#define __SIZEOF_WCHAR_T__ 4
-// X86_64-LINUX:#define __SIZEOF_WINT_T__ 4
-// X86_64-LINUX:#define __SIZE_MAX__ 18446744073709551615UL
-// X86_64-LINUX:#define __SIZE_TYPE__ long unsigned int
-// X86_64-LINUX:#define __SIZE_WIDTH__ 64
-// X86_64-LINUX:#define __SSE2_MATH__ 1
-// X86_64-LINUX:#define __SSE2__ 1
-// X86_64-LINUX:#define __SSE_MATH__ 1
-// X86_64-LINUX:#define __SSE__ 1
-// X86_64-LINUX:#define __UINTMAX_TYPE__ long unsigned int
-// X86_64-LINUX:#define __USER_LABEL_PREFIX__
-// X86_64-LINUX:#define __WCHAR_MAX__ 2147483647
-// X86_64-LINUX:#define __WCHAR_TYPE__ int
-// X86_64-LINUX:#define __WCHAR_WIDTH__ 32
-// X86_64-LINUX:#define __WINT_TYPE__ unsigned int
-// X86_64-LINUX:#define __WINT_WIDTH__ 32
-// X86_64-LINUX:#define __amd64 1
-// X86_64-LINUX:#define __amd64__ 1
-// X86_64-LINUX:#define __x86_64 1
-// X86_64-LINUX:#define __x86_64__ 1
-//
-// RUN: %clang_cc1 -x c++ -triple i686-pc-linux-gnu -fobjc-runtime=gcc -E -dM < /dev/null | FileCheck -check-prefix GNUSOURCE %s
-// GNUSOURCE:#define _GNU_SOURCE 1
-// 
-// RUN: %clang_cc1 -x c++ -std=c++98 -fno-rtti -E -dM < /dev/null | FileCheck -check-prefix NORTTI %s
-// NORTTI: __GXX_ABI_VERSION
-// NORTTI-NOT:#define __GXX_RTTI
-// NORTTI: __STDC__
-//
-// RUN: %clang_cc1 -triple arm-linux-androideabi -E -dM < /dev/null | FileCheck -check-prefix ANDROID %s
-// ANDROID: __ANDROID__ 1

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/invalid-__has_warning1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/invalid-__has_warning1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/invalid-__has_warning1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-// These must be the last lines in this test.
-// expected-error at +1{{expected string literal}} expected-error at +1 2{{expected}}
-int i = __has_warning(

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/invalid-__has_warning2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/invalid-__has_warning2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/invalid-__has_warning2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-// These must be the last lines in this test.
-// expected-error at +1{{expected string literal}} expected-error at +1{{expected}}
-int i = __has_warning();

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/iwithprefix.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/iwithprefix.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/iwithprefix.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// Check that -iwithprefix falls into the "after" search list.
-//
-// RUN: rm -rf %t.tmps
-// RUN: mkdir -p %t.tmps/first %t.tmps/second
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown \
-// RUN:   -iprefix %t.tmps/ -iwithprefix second \
-// RUN:    -isystem %t.tmps/first -v 2> %t.out
-// RUN: cat %t.out
-// RUN: FileCheck < %t.out %s
-
-// CHECK: #include <...> search starts here:
-// CHECK: {{.*}}.tmps/first
-// CHECK: /lib/clang/{{[.0-9]+}}/include
-// CHECK: {{.*}}.tmps/second
-// CHECK-NOT: {{.*}}.tmps
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/line-directive-output.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/line-directive-output.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/line-directive-output.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -E %s 2>&1 | FileCheck %s -strict-whitespace
-// PR6101
-int a;
-// CHECK: # 1 "{{.*}}line-directive-output.c"
-
-// Check that we do not emit an enter marker for the main file.
-// CHECK-NOT: # 1 "{{.*}}line-directive-output.c" 1
-
-// CHECK: int a;
-
-// CHECK-NEXT: # 50 "{{.*}}line-directive-output.c"
-// CHECK-NEXT: int b;
-#line 50
-int b;
-
-// CHECK: # 13 "{{.*}}line-directive-output.c"
-// CHECK-NEXT: int c;
-# 13
-int c;
-
-
-// CHECK-NEXT: # 1 "A.c"
-#line 1 "A.c"
-// CHECK-NEXT: # 2 "A.c"
-#line 2
-
-// CHECK-NEXT: # 1 "B.c"
-#line 1 "B.c"
-
-// CHECK-NEXT: # 1000 "A.c"
-#line 1000 "A.c"
-
-int y;
-
-
-
-
-
-
-
-// CHECK: # 1010 "A.c"
-int z;
-
-extern int x;
-
-# 3 "temp2.h" 1
-extern int y;
-
-# 7 "A.c" 2
-extern int z;
-
-
-
-
-
-
-
-
-
-
-
-
-
-// CHECK: # 25 "A.c"
-
-
-// CHECK: # 50 "C.c" 1
-# 50 "C.c" 1
-
-
-// CHECK-NEXT: # 2000 "A.c" 2
-# 2000 "A.c" 2
-# 42 "A.c"
-# 44 "A.c"
-# 49 "A.c"

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/line-directive.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/line-directive.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/line-directive.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,106 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-// RUN: %clang_cc1 -E %s 2>&1 | grep 'blonk.c:92:2: error: ABC'
-// RUN: %clang_cc1 -E %s 2>&1 | grep 'blonk.c:93:2: error: DEF'
-
-#line 'a'            // expected-error {{#line directive requires a positive integer argument}}
-#line 0              // expected-warning {{#line directive with zero argument is a GNU extension}}
-#line 00             // expected-warning {{#line directive with zero argument is a GNU extension}}
-#line 2147483648     // expected-warning {{C requires #line number to be less than 2147483648, allowed as extension}}
-#line 42             // ok
-#line 42 'a'         // expected-error {{invalid filename for #line directive}}
-#line 42 "foo/bar/baz.h"  // ok
-
-
-// #line directives expand macros.
-#define A 42 "foo"
-#line A
-
-# 42
-# 42 "foo"
-# 42 "foo" 2 // expected-error {{invalid line marker flag '2': cannot pop empty include stack}}
-# 42 "foo" 1 3  // enter
-# 42 "foo" 2 3  // exit
-# 42 "foo" 2 3 4 // expected-error {{invalid line marker flag '2': cannot pop empty include stack}}
-# 42 "foo" 3 4
-
-# 'a'            // expected-error {{invalid preprocessing directive}}
-# 42 'f'         // expected-error {{invalid filename for line marker directive}}
-# 42 1 3         // expected-error {{invalid filename for line marker directive}}
-# 42 "foo" 3 1   // expected-error {{invalid flag line marker directive}}
-# 42 "foo" 42    // expected-error {{invalid flag line marker directive}}
-# 42 "foo" 1 2   // expected-error {{invalid flag line marker directive}}
-# 42a33          // expected-error {{GNU line marker directive requires a simple digit sequence}}
-
-// These are checked by the RUN line.
-#line 92 "blonk.c"
-#error ABC
-#error DEF
-// expected-error at -2 {{ABC}}
-#line 150
-// expected-error at -3 {{DEF}}
-
-
-// Verify that linemarker diddling of the system header flag works.
-
-# 192 "glomp.h" // not a system header.
-typedef int x;  // expected-note {{previous definition is here}}
-typedef int x;  // expected-warning {{redefinition of typedef 'x' is a C11 feature}}
-
-# 192 "glomp.h" 3 // System header.
-typedef int y;  // ok
-typedef int y;  // ok
-
-typedef int q;  // q is in system header.
-
-#line 42 "blonk.h"  // doesn't change system headerness.
-
-typedef int z;  // ok
-typedef int z;  // ok
-
-# 97     // doesn't change system headerness.
-
-typedef int z1;  // ok
-typedef int z1;  // ok
-
-# 42 "blonk.h"  // DOES change system headerness.
-
-typedef int w;  // expected-note {{previous definition is here}}
-typedef int w;  // expected-warning {{redefinition of typedef 'w' is a C11 feature}}
-
-typedef int q;  // original definition in system header, should not diagnose.
-
-// This should not produce an "extra tokens at end of #line directive" warning,
-// because #line is allowed to contain expanded tokens.
-#define EMPTY()
-#line 2 "foo.c" EMPTY( )
-#line 2 "foo.c" NONEMPTY( )  // expected-warning{{extra tokens at end of #line directive}}
-
-// PR3940
-#line 0xf  // expected-error {{#line directive requires a simple digit sequence}}
-#line 42U  // expected-error {{#line directive requires a simple digit sequence}}
-
-
-// Line markers are digit strings interpreted as decimal numbers, this is
-// 10, not 8.
-#line 010  // expected-warning {{#line directive interprets number as decimal, not octal}}
-extern int array[__LINE__ == 10 ? 1:-1];
-
-# 020      // expected-warning {{GNU line marker directive interprets number as decimal, not octal}}
-extern int array_gnuline[__LINE__ == 20 ? 1:-1];
-
-/* PR3917 */
-#line 41
-extern char array2[\
-_\
-_LINE__ == 42 ? 1: -1];  /* line marker is location of first _ */
-
-# 51
-extern char array2_gnuline[\
-_\
-_LINE__ == 52 ? 1: -1];  /* line marker is location of first _ */
-
-// rdar://11550996
-#line 0 "line-directive.c" // expected-warning {{#line directive with zero argument is a GNU extension}}
-undefined t; // expected-error {{unknown type name 'undefined'}}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro-multiline.c.ignoreme
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro-multiline.c.ignoreme	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro-multiline.c.ignoreme	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang -E %s "-DX=A
-// RUN: THIS_SHOULD_NOT_EXIST_IN_THE_OUTPUT" > %t
-// RUN: grep "GOOD: A" %t
-// RUN: not grep THIS_SHOULD_NOT_EXIST_IN_THE_OUTPUT %t
-// rdar://6762183
-
-GOOD: X
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_directive.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_directive.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_directive.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-#define a(x) enum { x }
-a(n =
-#undef a
-#define a 5
-  a);
-_Static_assert(n == 5, "");
-
-// header1.h
-void fail(const char *);
-#define MUNCH(...) \
- ({ int result = 0; __VA_ARGS__; if (!result) { fail(#__VA_ARGS__); }; result })
-
-static inline int f(int k) {
-  return MUNCH( // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error {{returning 'void'}}
-    if (k < 3)
-      result = 24;
-    else if (k > 4)
-      result = k - 4;
-}
-
-#include "macro_arg_directive.h" // expected-error {{embedding a #include directive within macro arguments is not supported}}
-
-int g(int k) {
-  return f(k) + f(k-1));
-}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_directive.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_directive.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_directive.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// Support header for macro_arg_directive.c
-
-int n;
-
-struct S {
-  int k;
-};
-
-void g(int);

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_keyword.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_keyword.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_keyword.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep xxx-xxx
-
-#define foo(return) return-return
-
-foo(xxx)
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_slocentry_merge.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_slocentry_merge.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_slocentry_merge.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: not %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck %s
-
-#include "macro_arg_slocentry_merge.h"
-
-// CHECK: macro_arg_slocentry_merge.h:7:19: error: unknown type name 'win'
-// CHECK: macro_arg_slocentry_merge.h:5:16: note: expanded from macro 'WINDOW'
-// CHECK: macro_arg_slocentry_merge.h:6:18: note: expanded from macro 'P_'

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_slocentry_merge.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_slocentry_merge.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_arg_slocentry_merge.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-
-
-
-
-#define WINDOW win
-#define P_(args) args
-extern void f P_((WINDOW win));

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_disable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_disable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_disable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 %s -E | FileCheck -strict-whitespace %s
-// Check for C99 6.10.3.4p2.
-
-#define f(a) f(x * (a)) 
-#define x 2 
-#define z z[0] 
-f(f(z)); 
-// CHECK: f(2 * (f(2 * (z[0]))));
-
-
-
-#define A A B C 
-#define B B C A 
-#define C C A B 
-A 
-// CHECK: A B C A B A C A B C A
-
-
-// PR1820
-#define i(x) h(x
-#define h(x) x(void) 
-extern int i(i));
-// CHECK: int i(void)
-
-
-#define M_0(x) M_ ## x 
-#define M_1(x) x + M_0(0) 
-#define M_2(x) x + M_1(1) 
-#define M_3(x) x + M_2(2) 
-#define M_4(x) x + M_3(3) 
-#define M_5(x) x + M_4(4) 
-
-a: M_0(1)(2)(3)(4)(5);
-b: M_0(5)(4)(3)(2)(1);
-
-// CHECK: a: 2 + M_0(3)(4)(5);
-// CHECK: b: 4 + 4 + 3 + 2 + 1 + M_0(3)(2)(1);
-
-#define n(v) v
-#define l m
-#define m l a
-c: n(m) X
-// CHECK: c: m a X

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_expand.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_expand.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_expand.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-
-#define X() Y
-#define Y() X
-
-A: X()()()
-// CHECK: {{^}}A: Y{{$}}
-
-// PR3927
-#define f(x) h(x
-#define for(x) h(x
-#define h(x) x()
-B: f(f))
-C: for(for))
-
-// CHECK: {{^}}B: f(){{$}}
-// CHECK: {{^}}C: for(){{$}}
-
-// rdar://6880648
-#define f(x,y...) y
-f()

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_expandloc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_expandloc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_expandloc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -E -verify %s
-#define FOO 1
-
-// The error message should be on the #include line, not the 1.
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}}
-#include FOO
-
-#define BAR BAZ
-
-// expected-error at +1 {{expected "FILENAME" or <FILENAME>}}
-#include BAR
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-/* RUN: %clang_cc1 %s -Eonly -std=c89 -pedantic -verify
-*/
-/* PR3937 */
-#define zero() 0 /* expected-note 2 {{defined here}} */
-#define one(x) 0 /* expected-note 2 {{defined here}} */
-#define two(x, y) 0 /* expected-note 4 {{defined here}} */
-#define zero_dot(...) 0   /* expected-warning {{variadic macros are a C99 feature}} */
-#define one_dot(x, ...) 0 /* expected-warning {{variadic macros are a C99 feature}} expected-note 2{{macro 'one_dot' defined here}} */
-
-zero()
-zero(1);          /* expected-error {{too many arguments provided to function-like macro invocation}} */
-zero(1, 2, 3);    /* expected-error {{too many arguments provided to function-like macro invocation}} */
-
-one()   /* ok */
-one(a)
-one(a,)           /* expected-error {{too many arguments provided to function-like macro invocation}} */
-one(a, b)         /* expected-error {{too many arguments provided to function-like macro invocation}} */
-
-two()       /* expected-error {{too few arguments provided to function-like macro invocation}} */
-two(a)      /* expected-error {{too few arguments provided to function-like macro invocation}} */
-two(a,b)
-two(a, )    /* expected-warning {{empty macro arguments are a C99 feature}} */
-two(a,b,c)  /* expected-error {{too many arguments provided to function-like macro invocation}} */
-two(
-    ,     /* expected-warning {{empty macro arguments are a C99 feature}} */
-    ,     /* expected-warning {{empty macro arguments are a C99 feature}}  \
-             expected-error {{too many arguments provided to function-like macro invocation}} */
-    )     
-two(,)      /* expected-warning 2 {{empty macro arguments are a C99 feature}} */
-
-
-
-/* PR4006 & rdar://6807000 */
-#define e(...) __VA_ARGS__  /* expected-warning {{variadic macros are a C99 feature}} */
-e(x)
-e()
-
-zero_dot()
-one_dot(x)  /* empty ... argument: expected-warning {{must specify at least one argument for '...' parameter of variadic macro}}  */
-one_dot()   /* empty first argument, elided ...: expected-warning {{must specify at least one argument for '...' parameter of variadic macro}} */
-
-
-/* rdar://6816766 - Crash with function-like macro test at end of directive. */
-#define E() (i == 0)
-#if E
-#endif
-
-
-/* <rdar://problem/12292192> */
-#define NSAssert(condition, desc, ...) /* expected-warning {{variadic macros are a C99 feature}} */ \
-    SomeComplicatedStuff((desc), ##__VA_ARGS__) /* expected-warning {{token pasting of ',' and __VA_ARGS__ is a GNU extension}} */
-NSAssert(somecond, somedesc)

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_comma_swallow.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_comma_swallow.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_comma_swallow.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// Test the GNU comma swallowing extension.
-// RUN: %clang_cc1 %s -E | FileCheck -strict-whitespace %s
-
-// CHECK: 1: foo{A, }
-#define X(Y) foo{A, Y}
-1: X()
-
-
-// CHECK: 2: fo2{A,}
-#define X2(Y) fo2{A,##Y}
-2: X2()
-
-// should eat the comma.
-// CHECK: 3: {foo}
-#define X3(b, ...) {b, ## __VA_ARGS__}
-3: X3(foo)
-
-
-
-// PR3880
-// CHECK: 4: AA BB
-#define X4(...)  AA , ## __VA_ARGS__ BB
-4: X4()
-
-// PR7943
-// CHECK: 5: 1
-#define X5(x,...) x##,##__VA_ARGS__
-5: X5(1)

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_comma_swallow2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_comma_swallow2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_comma_swallow2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// Test the __VA_ARGS__ comma swallowing extensions of various compiler dialects.
-
-// RUN: %clang_cc1 -E %s | FileCheck -check-prefix=GCC -strict-whitespace %s
-// RUN: %clang_cc1 -E -std=c99 %s | FileCheck -check-prefix=C99 -strict-whitespace %s
-// RUN: %clang_cc1 -E -std=c11 %s | FileCheck -check-prefix=C99 -strict-whitespace %s
-// RUN: %clang_cc1 -E -x c++ %s | FileCheck -check-prefix=GCC -strict-whitespace %s
-// RUN: %clang_cc1 -E -std=gnu99 %s | FileCheck -check-prefix=GCC -strict-whitespace %s
-// RUN: %clang_cc1 -E -fms-compatibility %s | FileCheck -check-prefix=MS -strict-whitespace %s
-// RUN: %clang_cc1 -E -DNAMED %s | FileCheck -check-prefix=GCC -strict-whitespace %s
-// RUN: %clang_cc1 -E -std=c99 -DNAMED %s | FileCheck -check-prefix=C99 -strict-whitespace %s
-
-
-#ifndef NAMED
-# define A(...)   [ __VA_ARGS__ ]
-# define B(...)   [ , __VA_ARGS__ ]
-# define C(...)   [ , ## __VA_ARGS__ ]
-# define D(A,...) [ A , ## __VA_ARGS__ ]
-# define E(A,...) [ __VA_ARGS__ ## A ]
-#else
-// These are the GCC named argument versions of the C99-style variadic macros.
-// Note that __VA_ARGS__ *may* be used as the name, this is not prohibited!
-# define A(__VA_ARGS__...)   [ __VA_ARGS__ ]
-# define B(__VA_ARGS__...)   [ , __VA_ARGS__ ]
-# define C(__VA_ARGS__...)   [ , ## __VA_ARGS__ ]
-# define D(A,__VA_ARGS__...) [ A , ## __VA_ARGS__ ]
-# define E(A,__VA_ARGS__...) [ __VA_ARGS__ ## A ]
-#endif
-
-
-1: A()      B()      C()      D()      E()
-2: A(a)     B(a)     C(a)     D(a)     E(a)
-3: A(,)     B(,)     C(,)     D(,)     E(,)
-4: A(a,b,c) B(a,b,c) C(a,b,c) D(a,b,c) E(a,b,c)
-5: A(a,b,)  B(a,b,)  C(a,b,)  D(a,b,)
-
-// The GCC ", ## __VA_ARGS__" extension swallows the comma when followed by
-// empty __VA_ARGS__.  This extension does not apply in -std=c99 mode, but
-// does apply in C++.
-//
-// GCC: 1: [ ] [ , ] [ ] [ ] [ ]
-// GCC: 2: [ a ] [ , a ] [ ,a ] [ a ] [ a ]
-// GCC: 3: [ , ] [ , , ] [ ,, ] [ , ] [ ]
-// GCC: 4: [ a,b,c ] [ , a,b,c ] [ ,a,b,c ] [ a ,b,c ] [ b,ca ]
-// GCC: 5: [ a,b, ] [ , a,b, ] [ ,a,b, ] [ a ,b, ]
-
-// Under C99 standard mode, the GCC ", ## __VA_ARGS__" extension *does not*
-// swallow the comma when followed by empty __VA_ARGS__.
-//
-// C99: 1: [ ] [ , ] [ , ] [ ] [ ]
-// C99: 2: [ a ] [ , a ] [ ,a ] [ a ] [ a ]
-// C99: 3: [ , ] [ , , ] [ ,, ] [ , ] [ ]
-// C99: 4: [ a,b,c ] [ , a,b,c ] [ ,a,b,c ] [ a ,b,c ] [ b,ca ]
-// C99: 5: [ a,b, ] [ , a,b, ] [ ,a,b, ] [ a ,b, ]
-
-// Microsoft's extension is on ", __VA_ARGS__" (without explicit ##) where
-// the comma is swallowed when followed by empty __VA_ARGS__.
-//
-// MS: 1: [ ] [ ] [ ] [ ] [ ]
-// MS: 2: [ a ] [ , a ] [ ,a ] [ a ] [ a ]
-// MS: 3: [ , ] [ , , ] [ ,, ] [ , ] [ ]
-// MS: 4: [ a,b,c ] [ , a,b,c ] [ ,a,b,c ] [ a ,b,c ] [ b,ca ]
-// MS: 5: [ a,b, ] [ , a,b, ] [ ,a,b, ] [ a ,b, ]
-
-// FIXME: Item 3(d) in MS output should be [ ] not [ , ]

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_disable_expand.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_disable_expand.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_disable_expand.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 %s -E | FileCheck %s
-
-#define foo(x) bar x
-foo(foo) (2)
-// CHECK: bar foo (2)
-
-#define m(a) a(w)
-#define w ABCD
-m(m)
-// CHECK: m(ABCD)
-
-
-
-// rdar://7466570 PR4438, PR5163
-
-// We should get '42' in the argument list for gcc compatibility.
-#define A 1
-#define B 2
-#define C(x) (x + 1)
-
-X: C(
-#ifdef A
-#if A == 1
-#if B
-    42
-#endif
-#endif
-#endif
-    )
-// CHECK: X: (42 + 1)

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_lparen_scan.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_lparen_scan.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_lparen_scan.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep 'noexp: foo y'
-// RUN: %clang_cc1 -E %s | grep 'expand: abc'
-// RUN: %clang_cc1 -E %s | grep 'noexp2: foo nonexp'
-// RUN: %clang_cc1 -E %s | grep 'expand2: abc'
-
-#define A foo
-#define foo() abc
-#define X A y
-
-// This should not expand to abc, because the foo macro isn't followed by (.
-noexp: X
-
-
-// This should expand to abc.
-#undef X
-#define X A ()
-expand: X
-
-
-// This should be 'foo nonexp'
-noexp2: A nonexp
-
-// This should expand
-expand2: A (
-)
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_lparen_scan2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_lparen_scan2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_lparen_scan2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep 'FUNC (3 +1);'
-
-#define F(a) a 
-#define FUNC(a) (a+1) 
-
-F(FUNC) FUNC (3); /* final token sequence is FUNC(3+1) */ 
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_placemarker.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_placemarker.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_placemarker.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -E | grep 'foo(A, )'
-
-#define X(Y) foo(A, Y)
-X()
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_preexpand.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_preexpand.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_preexpand.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -E | grep 'pre: 1 1 X'
-// RUN: %clang_cc1 %s -E | grep 'nopre: 1A(X)'
-
-/* Preexpansion of argument. */
-#define A(X) 1 X
-pre: A(A(X))
-
-/* The ## operator disables preexpansion. */
-#undef A
-#define A(X) 1 ## X
-nopre: A(A(X))
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_varargs_iso.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_varargs_iso.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_varargs_iso.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-
-// RUN: %clang_cc1 -E %s | grep 'foo{a, b, c, d, e}'
-// RUN: %clang_cc1 -E %s | grep 'foo2{d, C, B}'
-// RUN: %clang_cc1 -E %s | grep 'foo2{d,e, C, B}'
-
-#define va1(...) foo{a, __VA_ARGS__, e}
-va1(b, c, d)
-#define va2(a, b, ...) foo2{__VA_ARGS__, b, a}
-va2(B, C, d)
-va2(B, C, d,e)
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_varargs_named.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_varargs_named.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_fn_varargs_named.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep '^a: x$'
-// RUN: %clang_cc1 -E %s | grep '^b: x y, z,h$'
-// RUN: %clang_cc1 -E %s | grep '^c: foo(x)$'
-
-#define A(b, c...) b c
-a: A(x)
-b: A(x, y, z,h)
-
-#define B(b, c...) foo(b, ## c)
-c: B(x)

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_misc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_misc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_misc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 %s -Eonly -verify
-
-// This should not be rejected.
-#ifdef defined
-#endif
-
-
-
-// PR3764
-
-// This should not produce a redefinition warning.
-#define FUNC_LIKE(a) (a)
-#define FUNC_LIKE(a)(a)
-
-// This either.
-#define FUNC_LIKE2(a)\
-(a)
-#define FUNC_LIKE2(a) (a)
-
-// This should.
-#define FUNC_LIKE3(a) ( a)  // expected-note {{previous definition is here}}
-#define FUNC_LIKE3(a) (a) // expected-warning {{'FUNC_LIKE3' macro redefined}}
-
-// RUN: %clang_cc1 -fms-extensions -DMS_EXT %s -Eonly -verify
-#ifndef MS_EXT
-// This should under C99.
-#define FUNC_LIKE4(a,b) (a+b)  // expected-note {{previous definition is here}}
-#define FUNC_LIKE4(x,y) (x+y) // expected-warning {{'FUNC_LIKE4' macro redefined}}
-#else
-// This shouldn't under MS extensions.
-#define FUNC_LIKE4(a,b) (a+b)
-#define FUNC_LIKE4(x,y) (x+y)
-
-// This should.
-#define FUNC_LIKE5(a,b) (a+b) // expected-note {{previous definition is here}}
-#define FUNC_LIKE5(x,y) (y+x) // expected-warning {{'FUNC_LIKE5' macro redefined}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_not_define.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_not_define.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_not_define.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep '^ # define X 3$'
-
-#define H # 
- #define D define 
- 
- #define DEFINE(a, b) H D a b 
- 
- DEFINE(X, 3) 
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_bad.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_bad.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_bad.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -Eonly -verify -pedantic %s
-// pasting ""x"" and ""+"" does not give a valid preprocessing token
-#define XYZ  x ## + 
-XYZ   // expected-error {{pasting formed 'x+', an invalid preprocessing token}}
-#define XXYZ  . ## test
-XXYZ   // expected-error {{pasting formed '.test', an invalid preprocessing token}}
-
-// GCC PR 20077
-
-#define a   a ## ## // expected-error {{'##' cannot appear at end of macro expansion}}
-#define b() b ## ## // expected-error {{'##' cannot appear at end of macro expansion}}
-#define c   c ##    // expected-error {{'##' cannot appear at end of macro expansion}}
-#define d() d ##    // expected-error {{'##' cannot appear at end of macro expansion}}
-
-
-#define e   ## ## e // expected-error {{'##' cannot appear at start of macro expansion}}
-#define f() ## ## f // expected-error {{'##' cannot appear at start of macro expansion}}
-#define g   ## g    // expected-error {{'##' cannot appear at start of macro expansion}}
-#define h() ## h    // expected-error {{'##' cannot appear at start of macro expansion}}
-#define i   ##      // expected-error {{'##' cannot appear at start of macro expansion}}
-#define j() ##      // expected-error {{'##' cannot appear at start of macro expansion}}
-
-// Invalid token pasting.
-// PR3918
-
-// When pasting creates poisoned identifiers, we error.
-#pragma GCC poison BLARG
-BLARG  // expected-error {{attempt to use a poisoned identifier}}
-#define XX BL ## ARG
-XX     // expected-error {{attempt to use a poisoned identifier}}
-
-#define VA __VA_ ## ARGS__
-int VA;   // expected-warning {{__VA_ARGS__ can only appear in the expansion of a C99 variadic macro}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_bcpl_comment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_bcpl_comment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_bcpl_comment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -Eonly 2>&1 | grep error
-
-#define COMM1 / ## /
-COMM1
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_c_block_comment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_c_block_comment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_c_block_comment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -Eonly -verify
-
-// expected-error at 9 {{EOF}}
-#define COMM / ## *
-COMM // expected-error {{pasting formed '/*', an invalid preprocessing token}}
-
-// Demonstrate that an invalid preprocessing token
-// doesn't swallow the rest of the file...
-#error EOF

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_commaext.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_commaext.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_commaext.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -E | grep 'V);'
-// RUN: %clang_cc1 %s -E | grep 'W, 1, 2);'
-// RUN: %clang_cc1 %s -E | grep 'X, 1, 2);'
-// RUN: %clang_cc1 %s -E | grep 'Y, );'
-// RUN: %clang_cc1 %s -E | grep 'Z, );'
-
-#define debug(format, ...) format, ## __VA_ARGS__)
-debug(V);
-debug(W, 1, 2);
-debug(X, 1, 2 );
-debug(Y, );
-debug(Z,);
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_empty.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_empty.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_empty.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep 'a:Y'
-// RUN: %clang_cc1 -E %s | grep 'b:Y'
-// RUN: %clang_cc1 -E %s | grep 'c:YY'
-
-#define FOO(X) X ## Y
-a:FOO()
-
-#define FOO2(X) Y ## X
-b:FOO2()
-
-#define FOO3(X) X ## Y ## X ## Y ## X ## X
-c:FOO3()
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_hard.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_hard.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_hard.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep '1: aaab 2'
-// RUN: %clang_cc1 -E %s | grep '2: 2 baaa'
-// RUN: %clang_cc1 -E %s | grep '3: 2 xx'
-
-#define a(n) aaa ## n
-#define b 2
-1: a(b b)   // aaab 2    2 gets expanded, not b.
-
-#undef a
-#undef b
-#define a(n) n ## aaa
-#define b 2
-2: a(b b)   // 2 baaa    2 gets expanded, not b.
-
-#define baaa xx
-3: a(b b)   // 2 xx
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_hashhash.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_hashhash.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_hashhash.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck %s
-#define hash_hash # ## # 
-#define mkstr(a) # a 
-#define in_between(a) mkstr(a) 
-#define join(c, d) in_between(c hash_hash d) 
-// CHECK: "x ## y";
-join(x, y);
-
-#define FOO(x) A x B
-// CHECK: A ## B;
-FOO(##);

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_identifier_error.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_identifier_error.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_identifier_error.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -Wno-invalid-token-paste %s -verify
-// RUN: %clang_cc1 -E -fms-extensions -Wno-invalid-token-paste %s | FileCheck %s
-// RUN: %clang_cc1 -E -fms-extensions -Wno-invalid-token-paste -x assembler-with-cpp %s | FileCheck %s
-// expected-no-diagnostics
-
-#define foo a ## b ## = 0
-int foo;
-// CHECK: int ab = 0;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -P -E -fms-extensions %s | FileCheck -strict-whitespace %s
-
-// This horrible stuff should preprocess into (other than whitespace):
-//   int foo;
-//   int bar;
-//   int baz;
-
-int foo;
-
-// CHECK: int foo;
-
-#define comment /##/  dead tokens live here
-comment This is stupidity
-
-int bar;
-
-// CHECK: int bar;
-
-#define nested(x) int x comment cute little dead tokens...
-
-nested(baz)  rise of the dead tokens
-
-;
-
-// CHECK: int baz
-// CHECK: ;
-
-
-// rdar://8197149 - VC++ allows invalid token pastes: (##baz
-#define foo(x) abc(x)
-#define bar(y) foo(##baz(y))
-bar(q)
-
-// CHECK: abc(baz(q))

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_none.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_none.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_none.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep '!!'
-
-#define A(B,C) B ## C
-
-!A(,)!
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_simple.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_simple.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_simple.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -E | FileCheck %s
-
-#define FOO bar ## baz ## 123
-
-// CHECK: A: barbaz123
-A: FOO
-
-// PR9981
-#define M1(A) A
-#define M2(X) X
-B: M1(M2(##))
-
-// CHECK: B: ##
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_spacing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_spacing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_spacing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -E | grep "^xy$"
-
-#define A  x ## y
-blah
-
-A
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_spacing2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_spacing2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_paste_spacing2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -E | grep "movl %eax"
-// PR4132
-#define R1E %eax
-#define epilogue(r1) movl r1 ## E;
-epilogue(R1)
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-
-#define M1(a) (a+1)
-#define M2(b) b
-
-int ei_1 = M2(M1)(17);
-// CHECK: {{^}}int ei_1 = (17 +1);{{$}}
-
-int ei_2 = (M2(M1))(17);
-// CHECK: {{^}}int ei_2 = (M1)(17);{{$}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -E | grep 'a: 2\*f(9)'
-// RUN: %clang_cc1 %s -E | grep 'b: 2\*9\*g'
-
-#define f(a) a*g 
-#define g f 
-a: f(2)(9) 
-
-#undef f
-#undef g
-
-#define f(a) a*g 
-#define g(a) f(a) 
-
-b: f(2)(9)
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan_varargs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan_varargs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rescan_varargs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-
-#define LPAREN ( 
-#define RPAREN ) 
-#define F(x, y) x + y 
-#define ELLIP_FUNC(...) __VA_ARGS__ 
-
-1: ELLIP_FUNC(F, LPAREN, 'a', 'b', RPAREN); /* 1st invocation */ 
-2: ELLIP_FUNC(F LPAREN 'a', 'b' RPAREN); /* 2nd invocation */ 
-
-// CHECK: 1: F, (, 'a', 'b', );
-// CHECK: 2: 'a' + 'b';
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rparen_scan.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rparen_scan.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rparen_scan.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -E %s | grep '^3 ;$'
-
-/* Right paren scanning, hard case.  Should expand to 3. */
-#define i(x) 3 
-#define a i(yz 
-#define b ) 
-a b ) ; 
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rparen_scan2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rparen_scan2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_rparen_scan2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-
-#define R_PAREN ) 
-
-#define FUNC(a) a 
-
-static int glob = (1 + FUNC(1 R_PAREN ); 
-
-// CHECK: static int glob = (1 + 1 );
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_space.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_space.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_space.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-
-#define XX
-! XX,
-
-// CHECK: {{^}}! ,{{$}}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_undef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_undef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_undef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -dM -undef -Dfoo=1 -E %s | FileCheck %s
-
-// CHECK-NOT: #define __clang__
-// CHECK: #define foo 1

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_variadic.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_variadic.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/macro_variadic.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-#define X(...) 1 // expected-error {{variadic macros not supported in OpenCL}}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: not %clang_cc1 -fsyntax-only %s
-// PR1900
-// This test should get a redefinition error from m_iopt.h: the MI opt 
-// shouldn't apply.
-
-#define MACRO
-#include "mi_opt.h"
-#undef MACRO
-#define MACRO || 1
-#include "mi_opt.h"
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-#if !defined foo MACRO
-#define foo
-int x = 2;
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck %s
-// PR6282
-// This test should not trigger the include guard optimization since
-// the guard macro is defined on the first include.
-
-#define ITERATING 1
-#define X 1
-#include "mi_opt2.h"
-#undef X
-#define X 2
-#include "mi_opt2.h"
-
-// CHECK: b: 1
-// CHECK: b: 2
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt2.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt2.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/mi_opt2.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-#ifndef ITERATING
-a: X
-#else
-b: X
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/microsoft-ext.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/microsoft-ext.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/microsoft-ext.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -E -fms-compatibility %s -o %t
-// RUN: FileCheck %s < %t
-
-# define M2(x, y) x + y
-# define P(x, y) {x, y}
-# define M(x, y) M2(x, P(x, y))
-M(a, b) // CHECK: a + {a, b}
-
-// Regression test for PR13924
-#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
-#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
-
-#define GMOCK_INTERNAL_COUNT_AND_2_VALUE_PARAMS(p0, p1) P2
-
-#define GMOCK_ACTION_CLASS_(name, value_params)\
-    GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params)
-
-#define ACTION_TEMPLATE(name, template_params, value_params)\
-class GMOCK_ACTION_CLASS_(name, value_params) {\
-}
-
-ACTION_TEMPLATE(InvokeArgument,
-                HAS_1_TEMPLATE_PARAMS(int, k),
-                AND_2_VALUE_PARAMS(p0, p1));

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/microsoft-import.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/microsoft-import.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/microsoft-import.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -E -verify -fms-compatibility %s
-
-#import "pp-record.h" // expected-error {{#import of type library is an unsupported Microsoft feature}}
-
-// Test attributes
-#import "pp-record.h" no_namespace, auto_rename // expected-error {{#import of type library is an unsupported Microsoft feature}}
-
-#import "pp-record.h" no_namespace \
-                      auto_rename \
-                      auto_search
-// expected-error at -3 {{#import of type library is an unsupported Microsoft feature}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/missing-system-header.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/missing-system-header.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/missing-system-header.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-#include "missing-system-header.h"

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/missing-system-header.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/missing-system-header.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/missing-system-header.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-#pragma clang system_header
-#include "not exist"  // expected-error {{file not found}}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/mmx.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/mmx.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/mmx.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang -march=i386 -m32 -E -dM %s -msse -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=SSE_AND_MMX
-// RUN: %clang -march=i386 -m32 -E -dM %s -msse -mno-mmx -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=SSE_NO_MMX
-// RUN: %clang -march=i386 -m32 -E -dM %s -mno-mmx -msse -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=SSE_NO_MMX
-
-// SSE_AND_MMX: #define __MMX__
-// SSE_AND_MMX: #define __SSE__
-
-// SSE_NO_MMX-NOT: __MMX__
-// SSE_NO_MMX: __SSE__
-// SSE_NO_MMX-NOT: __MMX__

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/non_fragile_feature.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/non_fragile_feature.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/non_fragile_feature.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s
-#ifndef __has_feature
-#error Should have __has_feature
-#endif
-
-#if !__has_feature(objc_nonfragile_abi)
-#error Non-fragile ABI used for compilation but feature macro not set.
-#endif
-
-#if !__has_feature(objc_weak_class)
-#error objc_weak_class should be enabled with nonfragile abi
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/non_fragile_feature1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/non_fragile_feature1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/non_fragile_feature1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=gcc %s
-#ifndef __has_feature
-#error Should have __has_feature
-#endif
-
-#if __has_feature(objc_nonfragile_abi)
-#error Non-fragile ABI not used for compilation but feature macro set.
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/objc-pp.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/objc-pp.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/objc-pp.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic -ffreestanding
-// expected-no-diagnostics
-
-#import <stdint.h>  // no warning on #import in objc mode.
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/optimize.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/optimize.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/optimize.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -Eonly %s -DOPT_O2 -O2 -verify
-#ifdef OPT_O2
-  // expected-no-diagnostics
-  #ifndef __OPTIMIZE__
-    #error "__OPTIMIZE__ not defined"
-  #endif
-  #ifdef __OPTIMIZE_SIZE__
-    #error "__OPTIMIZE_SIZE__ defined"
-  #endif
-#endif
-
-// RUN: %clang_cc1 -Eonly %s -DOPT_O0 -O0 -verify
-#ifdef OPT_O0
-  // expected-no-diagnostics
-  #ifdef __OPTIMIZE__
-    #error "__OPTIMIZE__ defined"
-  #endif
-  #ifdef __OPTIMIZE_SIZE__
-    #error "__OPTIMIZE_SIZE__ defined"
-  #endif
-#endif
-
-// RUN: %clang_cc1 -Eonly %s -DOPT_OS -Os -verify
-#ifdef OPT_OS
-  // expected-no-diagnostics
-  #ifndef __OPTIMIZE__
-    #error "__OPTIMIZE__ not defined"
-  #endif
-  #ifndef __OPTIMIZE_SIZE__
-    #error "__OPTIMIZE_SIZE__ not defined"
-  #endif
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/output_paste_avoid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/output_paste_avoid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/output_paste_avoid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -E -std=c++11 %s -o - | FileCheck -strict-whitespace %s
-
-
-#define y(a) ..a
-A: y(.)
-// This should print as ".. ." to avoid turning into ...
-// CHECK: A: .. .
-
-#define X 0 .. 1
-B: X
-// CHECK: B: 0 .. 1
-
-#define DOT .
-C: ..DOT
-// CHECK: C: .. .
-
-
-#define PLUS +
-#define EMPTY
-#define f(x) =x=
-D: +PLUS -EMPTY- PLUS+ f(=)
-// CHECK: D: + + - - + + = = =
-
-
-#define test(x) L#x
-E: test(str)
-// Should expand to L "str" not L"str"
-// CHECK: E: L "str"
-
-// Should avoid producing >>=.
-#define equal =
-F: >>equal
-// CHECK: F: >> =
-
-// Make sure we don't introduce spaces in the guid because we try to avoid
-// pasting '-' to a numeric constant.
-#define TYPEDEF(guid)   typedef [uuid(guid)]
-TYPEDEF(66504301-BE0F-101A-8BBB-00AA00300CAB) long OLE_COLOR;
-// CHECK: typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB)] long OLE_COLOR;
-
-// Be careful with UD-suffixes.
-#define StrSuffix() "abc"_suffix
-#define IntSuffix() 123_suffix
-UD: StrSuffix()ident
-UD: IntSuffix()ident
-// CHECK: UD: "abc"_suffix ident
-// CHECK: UD: 123_suffix ident

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/overflow.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/overflow.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/overflow.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -Eonly %s -verify -triple i686-pc-linux-gnu
-
-// Multiply signed overflow
-#if 0x7FFFFFFFFFFFFFFF*2 // expected-warning {{overflow}}
-#endif
-
-// Multiply unsigned overflow
-#if 0xFFFFFFFFFFFFFFFF*2
-#endif
-
-// Add signed overflow
-#if 0x7FFFFFFFFFFFFFFF+1 // expected-warning {{overflow}}
-#endif
-
-// Add unsigned overflow
-#if 0xFFFFFFFFFFFFFFFF+1
-#endif
-
-// Subtract signed overflow
-#if 0x7FFFFFFFFFFFFFFF- -1 // expected-warning {{overflow}}
-#endif
-
-// Subtract unsigned overflow
-#if 0xFFFFFFFFFFFFFFFF- -1 // expected-warning {{converted from negative value}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -dM -E -o - %s \
-// RUN:   | FileCheck %s
-// CHECK-NOT: #define __PIC__
-// CHECK-NOT: #define __PIE__
-// CHECK-NOT: #define __pic__
-// CHECK-NOT: #define __pie__
-//
-// RUN: %clang_cc1 -pic-level 1 -dM -E -o - %s \
-// RUN:   | FileCheck --check-prefix=CHECK-PIC1 %s
-// CHECK-PIC1: #define __PIC__ 1
-// CHECK-PIC1-NOT: #define __PIE__
-// CHECK-PIC1: #define __pic__ 1
-// CHECK-PIC1-NOT: #define __pie__
-//
-// RUN: %clang_cc1 -pic-level 2 -dM -E -o - %s \
-// RUN:   | FileCheck --check-prefix=CHECK-PIC2 %s
-// CHECK-PIC2: #define __PIC__ 2
-// CHECK-PIC2-NOT: #define __PIE__
-// CHECK-PIC2: #define __pic__ 2
-// CHECK-PIC2-NOT: #define __pie__
-//
-// RUN: %clang_cc1 -pie-level 1 -dM -E -o - %s \
-// RUN:   | FileCheck --check-prefix=CHECK-PIE1 %s
-// CHECK-PIE1-NOT: #define __PIC__
-// CHECK-PIE1: #define __PIE__ 1
-// CHECK-PIE1-NOT: #define __pic__
-// CHECK-PIE1: #define __pie__ 1
-//
-// RUN: %clang_cc1 -pie-level 2 -dM -E -o - %s \
-// RUN:   | FileCheck --check-prefix=CHECK-PIE2 %s
-// CHECK-PIE2-NOT: #define __PIC__
-// CHECK-PIE2: #define __PIE__ 2
-// CHECK-PIE2-NOT: #define __pic__
-// CHECK-PIE2: #define __pie__ 2

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-modules.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-modules.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-modules.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c %s -F %S/../Modules/Inputs -E -o - | FileCheck %s
-
-// CHECK: int bar();
-int bar();
-// CHECK: @import Module; /* clang -E: implicit import for "{{.*Headers[/\\]Module.h}}" */
-#include <Module/Module.h>
-// CHECK: int foo();
-int foo();
-// CHECK: @import Module; /* clang -E: implicit import for "{{.*Headers[/\\]Module.h}}" */
-#include <Module/Module.h>
-
-#include "pp-modules.h" // CHECK: # 1 "{{.*}}pp-modules.h" 1
-// CHECK: @import Module; /* clang -E: implicit import for "{{.*}}Module.h" */{{$}}
-// CHECK: # 14 "{{.*}}pp-modules.c" 2

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-modules.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-modules.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-modules.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#include <Module/Module.h>

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-record.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-record.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-record.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -detailed-preprocessing-record %s
-
-// http://llvm.org/PR11120
-
-#define STRINGIZE(text) STRINGIZE_I(text)
-#define STRINGIZE_I(text) #text
-
-#define INC pp-record.h
-
-#include STRINGIZE(INC)
-
-CAKE;
-
-#define DIR 1
-#define FNM(x) x
-
-FNM(
-#if DIR
-    int a;
-#else
-    int b;
-#endif
-)
-
-#define M1 c
-#define M2 int
-#define FM2(x,y) y x
-FM2(M1, M2);
-
-#define FM3(x) x
-FM3(
-#define M3 int x2
-)
-M3;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-record.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-record.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pp-record.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// Only useful for #inclusion.
-
-#define CAKE extern int is_a_lie

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pr13851.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pr13851.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pr13851.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Check that -E -M -MF does not cause an "argument unused" error, by adding
-// -Werror to the clang invocation.  Also check the dependency output, if any.
-// RUN: %clang -Werror -E -M -MF %t-M.d %s
-// RUN: FileCheck --input-file=%t-M.d %s
-// CHECK: pr13851.o:
-// CHECK: pr13851.c
-
-// Check that -E -MM -MF does not cause an "argument unused" error, by adding
-// -Werror to the clang invocation.  Also check the dependency output, if any.
-// RUN: %clang -Werror -E -MM -MF %t-MM.d %s
-// RUN: FileCheck --input-file=%t-MM.d %s

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pr2086.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pr2086.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pr2086.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -E %s
-
-#define test
-#include "pr2086.h"
-#define test
-#include "pr2086.h"
-
-#ifdef test
-#error
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pr2086.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pr2086.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pr2086.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-#ifndef test
-#endif
-
-#ifdef test
-#undef test
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma-captured.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma-captured.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma-captured.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck %s
-
-// Test pragma clang __debug captured, for Captured Statements
-
-void test1()
-{
-  #pragma clang __debug captured
-  {
-  }
-// CHECK: void test1()
-// CHECK: {
-// CHECK: #pragma clang __debug captured
-}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma-pushpop-macro.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma-pushpop-macro.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma-pushpop-macro.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-/* Test pragma pop_macro and push_macro directives from
-   http://msdn.microsoft.com/en-us/library/hsttss76.aspx */
-
-// pop_macro: Sets the value of the macro_name macro to the value on the top of
-// the stack for this macro.
-// #pragma pop_macro("macro_name")
-// push_macro: Saves the value of the macro_name macro on the top of the stack
-// for this macro.
-// #pragma push_macro("macro_name")
-//
-// RUN: %clang_cc1 -fms-extensions -E %s -o - | FileCheck %s
-
-#define X 1
-#define Y 2
-int pmx0 = X;
-int pmy0 = Y;
-#define Y 3
-#pragma push_macro("Y")
-#pragma push_macro("X")
-int pmx1 = X;
-#define X 2
-int pmx2 = X;
-#pragma pop_macro("X")
-int pmx3 = X;
-#pragma pop_macro("Y")
-int pmy1 = Y;
-
-// Have a stray 'push' to show we don't crash when having imbalanced
-// push/pop
-#pragma push_macro("Y")
-#define Y 4
-int pmy2 = Y;
-
-// The sequence push, define/undef, pop caused problems if macro was not
-// previously defined.
-#pragma push_macro("PREVIOUSLY_UNDEFINED1")
-#undef PREVIOUSLY_UNDEFINED1
-#pragma pop_macro("PREVIOUSLY_UNDEFINED1")
-#ifndef PREVIOUSLY_UNDEFINED1
-int Q;
-#endif
-
-#pragma push_macro("PREVIOUSLY_UNDEFINED2")
-#define PREVIOUSLY_UNDEFINED2
-#pragma pop_macro("PREVIOUSLY_UNDEFINED2")
-#ifndef PREVIOUSLY_UNDEFINED2
-int P;
-#endif
-
-// CHECK: int pmx0 = 1
-// CHECK: int pmy0 = 2
-// CHECK: int pmx1 = 1
-// CHECK: int pmx2 = 2
-// CHECK: int pmx3 = 1
-// CHECK: int pmy1 = 3
-// CHECK: int pmy2 = 4
-// CHECK: int Q;
-// CHECK: int P;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-undef %s
-// rdar://2362963
-
-#if FOO    // ok.
-#endif
-
-#pragma GCC diagnostic warning "-Wundef"
-
-#if FOO    // expected-warning {{'FOO' is not defined}}
-#endif
-
-#pragma GCC diagnostic ignored "-Wun" "def"
-
-#if FOO    // ok.
-#endif
-
-#pragma GCC diagnostic error "-Wundef"
-
-#if FOO    // expected-error {{'FOO' is not defined}}
-#endif
-
-
-#define foo error
-#pragma GCC diagnostic foo "-Wundef"  // expected-warning {{pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'}}
-
-#pragma GCC diagnostic error 42  // expected-error {{expected string literal in pragma diagnostic}}
-
-#pragma GCC diagnostic error "-Wundef" 42  // expected-warning {{unexpected token in pragma diagnostic}}
-#pragma GCC diagnostic error "invalid-name"  // expected-warning {{pragma diagnostic expected option name (e.g. "-Wundef")}}
-
-#pragma GCC diagnostic error "-Winvalid-name"  // expected-warning {{unknown warning group '-Winvalid-name', ignored}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic_output.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic_output.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic_output.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck %s
-// CHECK: #pragma GCC diagnostic warning "-Wall"
-#pragma GCC diagnostic warning "-Wall"
-// CHECK: #pragma GCC diagnostic ignored "-Wall"
-#pragma GCC diagnostic ignored "-Wall"
-// CHECK: #pragma GCC diagnostic error "-Wall"
-#pragma GCC diagnostic error "-Wall"
-// CHECK: #pragma GCC diagnostic fatal "-Wall"
-#pragma GCC diagnostic fatal "-Wall"
-// CHECK: #pragma GCC diagnostic push
-#pragma GCC diagnostic push
-// CHECK: #pragma GCC diagnostic pop
-#pragma GCC diagnostic pop
-
-// CHECK: #pragma clang diagnostic warning "-Wall"
-#pragma clang diagnostic warning "-Wall"
-// CHECK: #pragma clang diagnostic ignored "-Wall"
-#pragma clang diagnostic ignored "-Wall"
-// CHECK: #pragma clang diagnostic error "-Wall"
-#pragma clang diagnostic error "-Wall"
-// CHECK: #pragma clang diagnostic fatal "-Wall"
-#pragma clang diagnostic fatal "-Wall"
-// CHECK: #pragma clang diagnostic push
-#pragma clang diagnostic push
-// CHECK: #pragma clang diagnostic pop
-#pragma clang diagnostic pop

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic_sections.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic_sections.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_diagnostic_sections.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wall -Wunused-macros -Wunused-parameter -Wno-uninitialized -verify %s
-
-// rdar://8365684
-struct S {
-    void m1() { int b; while (b==b); } // expected-warning {{always evaluates to true}}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wtautological-compare"
-    void m2() { int b; while (b==b); }
-#pragma clang diagnostic pop
-
-    void m3() { int b; while (b==b); } // expected-warning {{always evaluates to true}}
-};
-
-//------------------------------------------------------------------------------
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wtautological-compare"
-template <typename T>
-struct TS {
-    void m() { T b; while (b==b); }
-};
-#pragma clang diagnostic pop
-
-void f() {
-    TS<int> ts;
-    ts.m();
-}
-
-//------------------------------------------------------------------------------
-
-#define UNUSED_MACRO1 // expected-warning {{macro is not used}}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunused-macros"
-#define UNUSED_MACRO2
-#pragma clang diagnostic pop
-
-//------------------------------------------------------------------------------
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wreturn-type"
-int g() { }
-#pragma clang diagnostic pop
-
-//------------------------------------------------------------------------------
-
-void ww(
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunused-parameter"
-        int x,
-#pragma clang diagnostic pop
-        int y) // expected-warning {{unused}}
-{
-}
-
-//------------------------------------------------------------------------------
-
-struct S2 {
-    int x, y;
-    S2() : 
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wreorder"
-    y(),
-    x()
-#pragma clang diagnostic pop
-    {}
-};
-
-//------------------------------------------------------------------------------
-
-// rdar://8790245
-#define MYMACRO \
-    _Pragma("clang diagnostic push") \
-    _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") \
-    _Pragma("clang diagnostic pop")
-MYMACRO
-#undef MYMACRO
-
-//------------------------------------------------------------------------------

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_microsoft.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_microsoft.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_microsoft.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions
-
-// rdar://6495941
-
-#define FOO 1
-#define BAR "2"
-
-#pragma comment(linker,"foo=" FOO) // expected-error {{pragma comment requires parenthesized identifier and optional string}}
-#pragma comment(linker," bar=" BAR)
-
-#pragma comment( user, "Compiled on " __DATE__ " at " __TIME__ ) 
-
-#pragma comment(foo)    // expected-error {{unknown kind of pragma comment}}
-#pragma comment(compiler,)     // expected-error {{expected string literal in pragma comment}}
-#define foo compiler
-#pragma comment(foo)   // macro expand kind.
-#pragma comment(foo) x // expected-error {{pragma comment requires}}
-
-#pragma comment(user, "foo\abar\nbaz\tsome	thing")
-
-
-// __pragma
-
-__pragma(comment(linker," bar=" BAR))                                            
-
-#define MACRO_WITH__PRAGMA { \
-  __pragma(warning(push)); \
-  __pragma(warning(disable: 10000)); \
-  1 + (2 > 3) ? 4 : 5; \
-  __pragma(warning(pop)); \
-}
-
-void f()
-{
-  __pragma()
-
-  // If we ever actually *support* __pragma(warning(disable: x)),
-  // this warning should go away.
-  MACRO_WITH__PRAGMA // expected-warning {{lower precedence}} \
-                     // expected-note 2 {{place parentheses}}
-}
-
-
-// This should include macro_arg_directive even though the include
-// is looking for test.h  This allows us to assign to "n"
-#pragma include_alias("test.h", "macro_arg_directive.h" )
-#include "test.h"
-void test( void ) {
-  n = 12;
-}
-
-#pragma include_alias(<bar.h>, "bar.h") // expected-warning {{angle-bracketed include <bar.h> cannot be aliased to double-quoted include "bar.h"}}
-#pragma include_alias("foo.h", <bar.h>) // expected-warning {{double-quoted include "foo.h" cannot be aliased to angle-bracketed include <bar.h>}}
-#pragma include_alias("test.h") // expected-warning {{pragma include_alias expected ','}}
-
-// Make sure that the names match exactly for a replacement, including path information.  If
-// this were to fail, we would get a file not found error
-#pragma include_alias(".\pp-record.h", "does_not_exist.h")
-#include "pp-record.h"
-
-#pragma include_alias(12) // expected-warning {{pragma include_alias expected include filename}}
-
-// It's expected that we can map "bar" and <bar> separately
-#define test
-// We can't actually look up stdio.h because we're using cc1 without header paths, but this will ensure
-// that we get the right bar.h, because the "bar.h" will undef test for us, where <bar.h> won't
-#pragma include_alias(<bar.h>, <stdio.h>)
-#pragma include_alias("bar.h", "pr2086.h")  // This should #undef test
-
-#include "bar.h"
-#if defined(test)
-// This should not warn because test should not be defined
-#pragma include_alias("test.h")
-#endif
-
-// Test to make sure there are no use-after-free problems
-#define B "pp-record.h"
-#pragma include_alias("quux.h", B)
-void g() {}
-#include "quux.h"
-
-// Make sure that empty includes don't work
-#pragma include_alias("", "foo.h")  // expected-error {{empty filename}}
-#pragma include_alias(<foo.h>, <>)  // expected-error {{empty filename}}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_poison.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_poison.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_poison.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -Eonly -verify
-
-#pragma GCC poison rindex
-rindex(some_string, 'h');   // expected-error {{attempt to use a poisoned identifier}}
-
-#define BAR _Pragma ("GCC poison XYZW")  XYZW /*NO ERROR*/
-  XYZW      // ok
-BAR
-  XYZW      // expected-error {{attempt to use a poisoned identifier}}
-
-// Pragma poison shouldn't warn from macro expansions defined before the token
-// is poisoned.
-
-#define strrchr rindex2
-#pragma GCC poison rindex2
-
-// Can poison multiple times.
-#pragma GCC poison rindex2
-
-strrchr(some_string, 'h');   // ok.

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_sysheader.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_sysheader.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_sysheader.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -verify -pedantic %s -fsyntax-only
-// RUN: %clang_cc1 -E %s | FileCheck %s
-// expected-no-diagnostics
-// rdar://6899937
-#include "pragma_sysheader.h"
-
-
-// PR9861: Verify that line markers are not messed up in -E mode.
-// CHECK: # 1 "{{.*}}pragma_sysheader.h" 1
-// CHECK-NEXT: # 2 "{{.*}}pragma_sysheader.h" 3
-// CHECK-NEXT: typedef int x;
-// CHECK-NEXT: typedef int x;
-// CHECK-NEXT: # 6 "{{.*}}pragma_sysheader.c" 2

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_sysheader.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_sysheader.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_sysheader.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-#pragma GCC system_header
-typedef int x;
-typedef int x;
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_unknown.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_unknown.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pragma_unknown.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunknown-pragmas -verify %s
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-
-// GCC doesn't expand macro args for unrecognized pragmas.
-#define bar xX
-#pragma foo bar   // expected-warning {{unknown pragma ignored}}
-// CHECK: {{^}}#pragma foo bar{{$}}
-
-#pragma STDC FP_CONTRACT ON
-#pragma STDC FP_CONTRACT OFF
-#pragma STDC FP_CONTRACT DEFAULT
-#pragma STDC FP_CONTRACT IN_BETWEEN  // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
-
-#pragma STDC FENV_ACCESS ON          // expected-warning {{pragma STDC FENV_ACCESS ON is not supported, ignoring pragma}}
-#pragma STDC FENV_ACCESS OFF
-#pragma STDC FENV_ACCESS DEFAULT
-#pragma STDC FENV_ACCESS IN_BETWEEN   // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
-
-#pragma STDC CX_LIMITED_RANGE ON
-#pragma STDC CX_LIMITED_RANGE OFF
-#pragma STDC CX_LIMITED_RANGE DEFAULT 
-#pragma STDC CX_LIMITED_RANGE IN_BETWEEN   // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
-
-#pragma STDC CX_LIMITED_RANGE    // expected-warning {{expected 'ON' or 'OFF' or 'DEFAULT' in pragma}}
-#pragma STDC CX_LIMITED_RANGE ON FULL POWER  // expected-warning {{expected end of directive in pragma}}
-
-#pragma STDC SO_GREAT  // expected-warning {{unknown pragma in STDC namespace}}
-#pragma STDC   // expected-warning {{unknown pragma in STDC namespace}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-arch-macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-arch-macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-arch-macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1262 +0,0 @@
-// These tests are generated by running utils/generate_arch_predefine_tests.sh
-// to observe GCC's behavior (or some other system compiler's behavior).
-//
-// Begin X86/GCC/Linux tests ----------------
-//
-// RUN: %clang -march=i386 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_I386_M32
-// CHECK_I386_M32: #define __i386 1
-// CHECK_I386_M32: #define __i386__ 1
-// CHECK_I386_M32: #define __tune_i386__ 1
-// CHECK_I386_M32: #define i386 1
-// RUN: %clang -march=i386 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_I386_M64
-// CHECK_I386_M64: error:
-//
-// RUN: %clang -march=i486 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_I486_M32
-// CHECK_I486_M32: #define __i386 1
-// CHECK_I486_M32: #define __i386__ 1
-// CHECK_I486_M32: #define __i486 1
-// CHECK_I486_M32: #define __i486__ 1
-// CHECK_I486_M32: #define __tune_i486__ 1
-// CHECK_I486_M32: #define i386 1
-// RUN: %clang -march=i486 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_I486_M64
-// CHECK_I486_M64: error:
-//
-// RUN: %clang -march=i586 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_I586_M32
-// CHECK_I586_M32: #define __i386 1
-// CHECK_I586_M32: #define __i386__ 1
-// CHECK_I586_M32: #define __i586 1
-// CHECK_I586_M32: #define __i586__ 1
-// CHECK_I586_M32: #define __pentium 1
-// CHECK_I586_M32: #define __pentium__ 1
-// CHECK_I586_M32: #define __tune_i586__ 1
-// CHECK_I586_M32: #define __tune_pentium__ 1
-// CHECK_I586_M32: #define i386 1
-// RUN: %clang -march=i586 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_I586_M64
-// CHECK_I586_M64: error:
-//
-// RUN: %clang -march=pentium -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM_M32
-// CHECK_PENTIUM_M32: #define __i386 1
-// CHECK_PENTIUM_M32: #define __i386__ 1
-// CHECK_PENTIUM_M32: #define __i586 1
-// CHECK_PENTIUM_M32: #define __i586__ 1
-// CHECK_PENTIUM_M32: #define __pentium 1
-// CHECK_PENTIUM_M32: #define __pentium__ 1
-// CHECK_PENTIUM_M32: #define __tune_i586__ 1
-// CHECK_PENTIUM_M32: #define __tune_pentium__ 1
-// CHECK_PENTIUM_M32: #define i386 1
-// RUN: %clang -march=pentium -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM_M64
-// CHECK_PENTIUM_M64: error:
-//
-// RUN: %clang -march=pentium-mmx -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM_MMX_M32
-// CHECK_PENTIUM_MMX_M32: #define __MMX__ 1
-// CHECK_PENTIUM_MMX_M32: #define __i386 1
-// CHECK_PENTIUM_MMX_M32: #define __i386__ 1
-// CHECK_PENTIUM_MMX_M32: #define __i586 1
-// CHECK_PENTIUM_MMX_M32: #define __i586__ 1
-// CHECK_PENTIUM_MMX_M32: #define __pentium 1
-// CHECK_PENTIUM_MMX_M32: #define __pentium__ 1
-// CHECK_PENTIUM_MMX_M32: #define __pentium_mmx__ 1
-// CHECK_PENTIUM_MMX_M32: #define __tune_i586__ 1
-// CHECK_PENTIUM_MMX_M32: #define __tune_pentium__ 1
-// CHECK_PENTIUM_MMX_M32: #define __tune_pentium_mmx__ 1
-// CHECK_PENTIUM_MMX_M32: #define i386 1
-// RUN: %clang -march=pentium-mmx -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM_MMX_M64
-// CHECK_PENTIUM_MMX_M64: error:
-//
-// RUN: %clang -march=winchip-c6 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_WINCHIP_C6_M32
-// CHECK_WINCHIP_C6_M32: #define __MMX__ 1
-// CHECK_WINCHIP_C6_M32: #define __i386 1
-// CHECK_WINCHIP_C6_M32: #define __i386__ 1
-// CHECK_WINCHIP_C6_M32: #define __i486 1
-// CHECK_WINCHIP_C6_M32: #define __i486__ 1
-// CHECK_WINCHIP_C6_M32: #define __tune_i486__ 1
-// CHECK_WINCHIP_C6_M32: #define i386 1
-// RUN: %clang -march=winchip-c6 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_WINCHIP_C6_M64
-// CHECK_WINCHIP_C6_M64: error:
-//
-// RUN: %clang -march=winchip2 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_WINCHIP2_M32
-// CHECK_WINCHIP2_M32: #define __3dNOW__ 1
-// CHECK_WINCHIP2_M32: #define __MMX__ 1
-// CHECK_WINCHIP2_M32: #define __i386 1
-// CHECK_WINCHIP2_M32: #define __i386__ 1
-// CHECK_WINCHIP2_M32: #define __i486 1
-// CHECK_WINCHIP2_M32: #define __i486__ 1
-// CHECK_WINCHIP2_M32: #define __tune_i486__ 1
-// CHECK_WINCHIP2_M32: #define i386 1
-// RUN: %clang -march=winchip2 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_WINCHIP2_M64
-// CHECK_WINCHIP2_M64: error:
-//
-// RUN: %clang -march=c3 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_C3_M32
-// CHECK_C3_M32: #define __3dNOW__ 1
-// CHECK_C3_M32: #define __MMX__ 1
-// CHECK_C3_M32: #define __i386 1
-// CHECK_C3_M32: #define __i386__ 1
-// CHECK_C3_M32: #define __i486 1
-// CHECK_C3_M32: #define __i486__ 1
-// CHECK_C3_M32: #define __tune_i486__ 1
-// CHECK_C3_M32: #define i386 1
-// RUN: %clang -march=c3 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_C3_M64
-// CHECK_C3_M64: error:
-//
-// RUN: %clang -march=c3-2 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_C3_2_M32
-// CHECK_C3_2_M32: #define __MMX__ 1
-// CHECK_C3_2_M32: #define __SSE__ 1
-// CHECK_C3_2_M32: #define __i386 1
-// CHECK_C3_2_M32: #define __i386__ 1
-// CHECK_C3_2_M32: #define __i686 1
-// CHECK_C3_2_M32: #define __i686__ 1
-// CHECK_C3_2_M32: #define __pentiumpro 1
-// CHECK_C3_2_M32: #define __pentiumpro__ 1
-// CHECK_C3_2_M32: #define __tune_i686__ 1
-// CHECK_C3_2_M32: #define __tune_pentium2__ 1
-// CHECK_C3_2_M32: #define __tune_pentiumpro__ 1
-// CHECK_C3_2_M32: #define i386 1
-// RUN: %clang -march=c3-2 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_C3_2_M64
-// CHECK_C3_2_M64: error:
-//
-// RUN: %clang -march=i686 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_I686_M32
-// CHECK_I686_M32: #define __i386 1
-// CHECK_I686_M32: #define __i386__ 1
-// CHECK_I686_M32: #define __i686 1
-// CHECK_I686_M32: #define __i686__ 1
-// CHECK_I686_M32: #define __pentiumpro 1
-// CHECK_I686_M32: #define __pentiumpro__ 1
-// CHECK_I686_M32: #define i386 1
-// RUN: %clang -march=i686 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_I686_M64
-// CHECK_I686_M64: error:
-//
-// RUN: %clang -march=pentiumpro -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUMPRO_M32
-// CHECK_PENTIUMPRO_M32: #define __i386 1
-// CHECK_PENTIUMPRO_M32: #define __i386__ 1
-// CHECK_PENTIUMPRO_M32: #define __i686 1
-// CHECK_PENTIUMPRO_M32: #define __i686__ 1
-// CHECK_PENTIUMPRO_M32: #define __pentiumpro 1
-// CHECK_PENTIUMPRO_M32: #define __pentiumpro__ 1
-// CHECK_PENTIUMPRO_M32: #define __tune_i686__ 1
-// CHECK_PENTIUMPRO_M32: #define __tune_pentiumpro__ 1
-// CHECK_PENTIUMPRO_M32: #define i386 1
-// RUN: %clang -march=pentiumpro -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUMPRO_M64
-// CHECK_PENTIUMPRO_M64: error:
-//
-// RUN: %clang -march=pentium2 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM2_M32
-// CHECK_PENTIUM2_M32: #define __MMX__ 1
-// CHECK_PENTIUM2_M32: #define __i386 1
-// CHECK_PENTIUM2_M32: #define __i386__ 1
-// CHECK_PENTIUM2_M32: #define __i686 1
-// CHECK_PENTIUM2_M32: #define __i686__ 1
-// CHECK_PENTIUM2_M32: #define __pentiumpro 1
-// CHECK_PENTIUM2_M32: #define __pentiumpro__ 1
-// CHECK_PENTIUM2_M32: #define __tune_i686__ 1
-// CHECK_PENTIUM2_M32: #define __tune_pentium2__ 1
-// CHECK_PENTIUM2_M32: #define __tune_pentiumpro__ 1
-// CHECK_PENTIUM2_M32: #define i386 1
-// RUN: %clang -march=pentium2 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM2_M64
-// CHECK_PENTIUM2_M64: error:
-//
-// RUN: %clang -march=pentium3 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM3_M32
-// CHECK_PENTIUM3_M32: #define __MMX__ 1
-// CHECK_PENTIUM3_M32: #define __SSE__ 1
-// CHECK_PENTIUM3_M32: #define __i386 1
-// CHECK_PENTIUM3_M32: #define __i386__ 1
-// CHECK_PENTIUM3_M32: #define __i686 1
-// CHECK_PENTIUM3_M32: #define __i686__ 1
-// CHECK_PENTIUM3_M32: #define __pentiumpro 1
-// CHECK_PENTIUM3_M32: #define __pentiumpro__ 1
-// CHECK_PENTIUM3_M32: #define __tune_i686__ 1
-// CHECK_PENTIUM3_M32: #define __tune_pentium2__ 1
-// CHECK_PENTIUM3_M32: #define __tune_pentium3__ 1
-// CHECK_PENTIUM3_M32: #define __tune_pentiumpro__ 1
-// CHECK_PENTIUM3_M32: #define i386 1
-// RUN: %clang -march=pentium3 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM3_M64
-// CHECK_PENTIUM3_M64: error:
-//
-// RUN: %clang -march=pentium3m -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM3M_M32
-// CHECK_PENTIUM3M_M32: #define __MMX__ 1
-// CHECK_PENTIUM3M_M32: #define __SSE__ 1
-// CHECK_PENTIUM3M_M32: #define __i386 1
-// CHECK_PENTIUM3M_M32: #define __i386__ 1
-// CHECK_PENTIUM3M_M32: #define __i686 1
-// CHECK_PENTIUM3M_M32: #define __i686__ 1
-// CHECK_PENTIUM3M_M32: #define __pentiumpro 1
-// CHECK_PENTIUM3M_M32: #define __pentiumpro__ 1
-// CHECK_PENTIUM3M_M32: #define __tune_i686__ 1
-// CHECK_PENTIUM3M_M32: #define __tune_pentiumpro__ 1
-// CHECK_PENTIUM3M_M32: #define i386 1
-// RUN: %clang -march=pentium3m -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM3M_M64
-// CHECK_PENTIUM3M_M64: error:
-//
-// RUN: %clang -march=pentium-m -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM_M_M32
-// CHECK_PENTIUM_M_M32: #define __MMX__ 1
-// CHECK_PENTIUM_M_M32: #define __SSE2__ 1
-// CHECK_PENTIUM_M_M32: #define __SSE__ 1
-// CHECK_PENTIUM_M_M32: #define __i386 1
-// CHECK_PENTIUM_M_M32: #define __i386__ 1
-// CHECK_PENTIUM_M_M32: #define __i686 1
-// CHECK_PENTIUM_M_M32: #define __i686__ 1
-// CHECK_PENTIUM_M_M32: #define __pentiumpro 1
-// CHECK_PENTIUM_M_M32: #define __pentiumpro__ 1
-// CHECK_PENTIUM_M_M32: #define __tune_i686__ 1
-// CHECK_PENTIUM_M_M32: #define __tune_pentiumpro__ 1
-// CHECK_PENTIUM_M_M32: #define i386 1
-// RUN: %clang -march=pentium-m -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM_M_M64
-// CHECK_PENTIUM_M_M64: error:
-//
-// RUN: %clang -march=pentium4 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM4_M32
-// CHECK_PENTIUM4_M32: #define __MMX__ 1
-// CHECK_PENTIUM4_M32: #define __SSE2__ 1
-// CHECK_PENTIUM4_M32: #define __SSE__ 1
-// CHECK_PENTIUM4_M32: #define __i386 1
-// CHECK_PENTIUM4_M32: #define __i386__ 1
-// CHECK_PENTIUM4_M32: #define __pentium4 1
-// CHECK_PENTIUM4_M32: #define __pentium4__ 1
-// CHECK_PENTIUM4_M32: #define __tune_pentium4__ 1
-// CHECK_PENTIUM4_M32: #define i386 1
-// RUN: %clang -march=pentium4 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM4_M64
-// CHECK_PENTIUM4_M64: error:
-//
-// RUN: %clang -march=pentium4m -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM4M_M32
-// CHECK_PENTIUM4M_M32: #define __MMX__ 1
-// CHECK_PENTIUM4M_M32: #define __SSE2__ 1
-// CHECK_PENTIUM4M_M32: #define __SSE__ 1
-// CHECK_PENTIUM4M_M32: #define __i386 1
-// CHECK_PENTIUM4M_M32: #define __i386__ 1
-// CHECK_PENTIUM4M_M32: #define __pentium4 1
-// CHECK_PENTIUM4M_M32: #define __pentium4__ 1
-// CHECK_PENTIUM4M_M32: #define __tune_pentium4__ 1
-// CHECK_PENTIUM4M_M32: #define i386 1
-// RUN: %clang -march=pentium4m -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PENTIUM4M_M64
-// CHECK_PENTIUM4M_M64: error:
-//
-// RUN: %clang -march=prescott -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PRESCOTT_M32
-// CHECK_PRESCOTT_M32: #define __MMX__ 1
-// CHECK_PRESCOTT_M32: #define __SSE2__ 1
-// CHECK_PRESCOTT_M32: #define __SSE3__ 1
-// CHECK_PRESCOTT_M32: #define __SSE__ 1
-// CHECK_PRESCOTT_M32: #define __i386 1
-// CHECK_PRESCOTT_M32: #define __i386__ 1
-// CHECK_PRESCOTT_M32: #define __nocona 1
-// CHECK_PRESCOTT_M32: #define __nocona__ 1
-// CHECK_PRESCOTT_M32: #define __tune_nocona__ 1
-// CHECK_PRESCOTT_M32: #define i386 1
-// RUN: %clang -march=prescott -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_PRESCOTT_M64
-// CHECK_PRESCOTT_M64: error:
-//
-// RUN: %clang -march=nocona -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_NOCONA_M32
-// CHECK_NOCONA_M32: #define __MMX__ 1
-// CHECK_NOCONA_M32: #define __SSE2__ 1
-// CHECK_NOCONA_M32: #define __SSE3__ 1
-// CHECK_NOCONA_M32: #define __SSE__ 1
-// CHECK_NOCONA_M32: #define __i386 1
-// CHECK_NOCONA_M32: #define __i386__ 1
-// CHECK_NOCONA_M32: #define __nocona 1
-// CHECK_NOCONA_M32: #define __nocona__ 1
-// CHECK_NOCONA_M32: #define __tune_nocona__ 1
-// CHECK_NOCONA_M32: #define i386 1
-// RUN: %clang -march=nocona -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_NOCONA_M64
-// CHECK_NOCONA_M64: #define __MMX__ 1
-// CHECK_NOCONA_M64: #define __SSE2_MATH__ 1
-// CHECK_NOCONA_M64: #define __SSE2__ 1
-// CHECK_NOCONA_M64: #define __SSE3__ 1
-// CHECK_NOCONA_M64: #define __SSE_MATH__ 1
-// CHECK_NOCONA_M64: #define __SSE__ 1
-// CHECK_NOCONA_M64: #define __amd64 1
-// CHECK_NOCONA_M64: #define __amd64__ 1
-// CHECK_NOCONA_M64: #define __nocona 1
-// CHECK_NOCONA_M64: #define __nocona__ 1
-// CHECK_NOCONA_M64: #define __tune_nocona__ 1
-// CHECK_NOCONA_M64: #define __x86_64 1
-// CHECK_NOCONA_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=core2 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_CORE2_M32
-// CHECK_CORE2_M32: #define __MMX__ 1
-// CHECK_CORE2_M32: #define __SSE2__ 1
-// CHECK_CORE2_M32: #define __SSE3__ 1
-// CHECK_CORE2_M32: #define __SSE__ 1
-// CHECK_CORE2_M32: #define __SSSE3__ 1
-// CHECK_CORE2_M32: #define __core2 1
-// CHECK_CORE2_M32: #define __core2__ 1
-// CHECK_CORE2_M32: #define __i386 1
-// CHECK_CORE2_M32: #define __i386__ 1
-// CHECK_CORE2_M32: #define __tune_core2__ 1
-// CHECK_CORE2_M32: #define i386 1
-// RUN: %clang -march=core2 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_CORE2_M64
-// CHECK_CORE2_M64: #define __MMX__ 1
-// CHECK_CORE2_M64: #define __SSE2_MATH__ 1
-// CHECK_CORE2_M64: #define __SSE2__ 1
-// CHECK_CORE2_M64: #define __SSE3__ 1
-// CHECK_CORE2_M64: #define __SSE_MATH__ 1
-// CHECK_CORE2_M64: #define __SSE__ 1
-// CHECK_CORE2_M64: #define __SSSE3__ 1
-// CHECK_CORE2_M64: #define __amd64 1
-// CHECK_CORE2_M64: #define __amd64__ 1
-// CHECK_CORE2_M64: #define __core2 1
-// CHECK_CORE2_M64: #define __core2__ 1
-// CHECK_CORE2_M64: #define __tune_core2__ 1
-// CHECK_CORE2_M64: #define __x86_64 1
-// CHECK_CORE2_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=corei7 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_COREI7_M32
-// CHECK_COREI7_M32: #define __MMX__ 1
-// CHECK_COREI7_M32: #define __POPCNT__ 1
-// CHECK_COREI7_M32: #define __SSE2__ 1
-// CHECK_COREI7_M32: #define __SSE3__ 1
-// CHECK_COREI7_M32: #define __SSE4_1__ 1
-// CHECK_COREI7_M32: #define __SSE4_2__ 1
-// CHECK_COREI7_M32: #define __SSE__ 1
-// CHECK_COREI7_M32: #define __SSSE3__ 1
-// CHECK_COREI7_M32: #define __corei7 1
-// CHECK_COREI7_M32: #define __corei7__ 1
-// CHECK_COREI7_M32: #define __i386 1
-// CHECK_COREI7_M32: #define __i386__ 1
-// CHECK_COREI7_M32: #define __tune_corei7__ 1
-// CHECK_COREI7_M32: #define i386 1
-// RUN: %clang -march=corei7 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_COREI7_M64
-// CHECK_COREI7_M64: #define __MMX__ 1
-// CHECK_COREI7_M64: #define __POPCNT__ 1
-// CHECK_COREI7_M64: #define __SSE2_MATH__ 1
-// CHECK_COREI7_M64: #define __SSE2__ 1
-// CHECK_COREI7_M64: #define __SSE3__ 1
-// CHECK_COREI7_M64: #define __SSE4_1__ 1
-// CHECK_COREI7_M64: #define __SSE4_2__ 1
-// CHECK_COREI7_M64: #define __SSE_MATH__ 1
-// CHECK_COREI7_M64: #define __SSE__ 1
-// CHECK_COREI7_M64: #define __SSSE3__ 1
-// CHECK_COREI7_M64: #define __amd64 1
-// CHECK_COREI7_M64: #define __amd64__ 1
-// CHECK_COREI7_M64: #define __corei7 1
-// CHECK_COREI7_M64: #define __corei7__ 1
-// CHECK_COREI7_M64: #define __tune_corei7__ 1
-// CHECK_COREI7_M64: #define __x86_64 1
-// CHECK_COREI7_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=corei7-avx -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_COREI7_AVX_M32
-// CHECK_COREI7_AVX_M32: #define __AES__ 1
-// CHECK_COREI7_AVX_M32: #define __AVX__ 1
-// CHECK_COREI7_AVX_M32: #define __MMX__ 1
-// CHECK_COREI7_AVX_M32: #define __PCLMUL__ 1
-// CHECK_COREI7_AVX_M32-NOT: __RDRND__
-// CHECK_COREI7_AVX_M32: #define __POPCNT__ 1
-// CHECK_COREI7_AVX_M32: #define __SSE2__ 1
-// CHECK_COREI7_AVX_M32: #define __SSE3__ 1
-// CHECK_COREI7_AVX_M32: #define __SSE4_1__ 1
-// CHECK_COREI7_AVX_M32: #define __SSE4_2__ 1
-// CHECK_COREI7_AVX_M32: #define __SSE__ 1
-// CHECK_COREI7_AVX_M32: #define __SSSE3__ 1
-// CHECK_COREI7_AVX_M32: #define __corei7 1
-// CHECK_COREI7_AVX_M32: #define __corei7__ 1
-// CHECK_COREI7_AVX_M32: #define __i386 1
-// CHECK_COREI7_AVX_M32: #define __i386__ 1
-// CHECK_COREI7_AVX_M32: #define __tune_corei7__ 1
-// CHECK_COREI7_AVX_M32: #define i386 1
-// RUN: %clang -march=corei7-avx -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_COREI7_AVX_M64
-// CHECK_COREI7_AVX_M64: #define __AES__ 1
-// CHECK_COREI7_AVX_M64: #define __AVX__ 1
-// CHECK_COREI7_AVX_M64: #define __MMX__ 1
-// CHECK_COREI7_AVX_M64: #define __PCLMUL__ 1
-// CHECK_COREI7_AVX_M64-NOT: __RDRND__
-// CHECK_COREI7_AVX_M64: #define __POPCNT__ 1
-// CHECK_COREI7_AVX_M64: #define __SSE2_MATH__ 1
-// CHECK_COREI7_AVX_M64: #define __SSE2__ 1
-// CHECK_COREI7_AVX_M64: #define __SSE3__ 1
-// CHECK_COREI7_AVX_M64: #define __SSE4_1__ 1
-// CHECK_COREI7_AVX_M64: #define __SSE4_2__ 1
-// CHECK_COREI7_AVX_M64: #define __SSE_MATH__ 1
-// CHECK_COREI7_AVX_M64: #define __SSE__ 1
-// CHECK_COREI7_AVX_M64: #define __SSSE3__ 1
-// CHECK_COREI7_AVX_M64: #define __amd64 1
-// CHECK_COREI7_AVX_M64: #define __amd64__ 1
-// CHECK_COREI7_AVX_M64: #define __corei7 1
-// CHECK_COREI7_AVX_M64: #define __corei7__ 1
-// CHECK_COREI7_AVX_M64: #define __tune_corei7__ 1
-// CHECK_COREI7_AVX_M64: #define __x86_64 1
-// CHECK_COREI7_AVX_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=core-avx-i -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_CORE_AVX_I_M32
-// CHECK_CORE_AVX_I_M32: #define __AES__ 1
-// CHECK_CORE_AVX_I_M32: #define __AVX__ 1
-// CHECK_CORE_AVX_I_M32: #define __F16C__ 1
-// CHECK_CORE_AVX_I_M32: #define __MMX__ 1
-// CHECK_CORE_AVX_I_M32: #define __PCLMUL__ 1
-// CHECK_CORE_AVX_I_M32: #define __RDRND__ 1
-// CHECK_CORE_AVX_I_M32: #define __SSE2__ 1
-// CHECK_CORE_AVX_I_M32: #define __SSE3__ 1
-// CHECK_CORE_AVX_I_M32: #define __SSE4_1__ 1
-// CHECK_CORE_AVX_I_M32: #define __SSE4_2__ 1
-// CHECK_CORE_AVX_I_M32: #define __SSE__ 1
-// CHECK_CORE_AVX_I_M32: #define __SSSE3__ 1
-// CHECK_CORE_AVX_I_M32: #define __corei7 1
-// CHECK_CORE_AVX_I_M32: #define __corei7__ 1
-// CHECK_CORE_AVX_I_M32: #define __i386 1
-// CHECK_CORE_AVX_I_M32: #define __i386__ 1
-// CHECK_CORE_AVX_I_M32: #define __tune_corei7__ 1
-// CHECK_CORE_AVX_I_M32: #define i386 1
-// RUN: %clang -march=core-avx-i -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_CORE_AVX_I_M64
-// CHECK_CORE_AVX_I_M64: #define __AES__ 1
-// CHECK_CORE_AVX_I_M64: #define __AVX__ 1
-// CHECK_CORE_AVX_I_M64: #define __F16C__ 1
-// CHECK_CORE_AVX_I_M64: #define __MMX__ 1
-// CHECK_CORE_AVX_I_M64: #define __PCLMUL__ 1
-// CHECK_CORE_AVX_I_M64: #define __RDRND__ 1
-// CHECK_CORE_AVX_I_M64: #define __SSE2_MATH__ 1
-// CHECK_CORE_AVX_I_M64: #define __SSE2__ 1
-// CHECK_CORE_AVX_I_M64: #define __SSE3__ 1
-// CHECK_CORE_AVX_I_M64: #define __SSE4_1__ 1
-// CHECK_CORE_AVX_I_M64: #define __SSE4_2__ 1
-// CHECK_CORE_AVX_I_M64: #define __SSE_MATH__ 1
-// CHECK_CORE_AVX_I_M64: #define __SSE__ 1
-// CHECK_CORE_AVX_I_M64: #define __SSSE3__ 1
-// CHECK_CORE_AVX_I_M64: #define __amd64 1
-// CHECK_CORE_AVX_I_M64: #define __amd64__ 1
-// CHECK_CORE_AVX_I_M64: #define __corei7 1
-// CHECK_CORE_AVX_I_M64: #define __corei7__ 1
-// CHECK_CORE_AVX_I_M64: #define __tune_corei7__ 1
-// CHECK_CORE_AVX_I_M64: #define __x86_64 1
-// CHECK_CORE_AVX_I_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=core-avx2 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_CORE_AVX2_M32
-// CHECK_CORE_AVX2_M32: #define __AES__ 1
-// CHECK_CORE_AVX2_M32: #define __AVX__ 1
-// CHECK_CORE_AVX2_M32: #define __BMI2__ 1
-// CHECK_CORE_AVX2_M32: #define __BMI__ 1
-// CHECK_CORE_AVX2_M32: #define __F16C__ 1
-// CHECK_CORE_AVX2_M32: #define __FMA__ 1
-// CHECK_CORE_AVX2_M32: #define __LZCNT__ 1
-// CHECK_CORE_AVX2_M32: #define __MMX__ 1
-// CHECK_CORE_AVX2_M32: #define __PCLMUL__ 1
-// CHECK_CORE_AVX2_M32: #define __POPCNT__ 1
-// CHECK_CORE_AVX2_M32: #define __RDRND__ 1
-// CHECK_CORE_AVX2_M32: #define __RTM__ 1
-// CHECK_CORE_AVX2_M32: #define __SSE2__ 1
-// CHECK_CORE_AVX2_M32: #define __SSE3__ 1
-// CHECK_CORE_AVX2_M32: #define __SSE4_1__ 1
-// CHECK_CORE_AVX2_M32: #define __SSE4_2__ 1
-// CHECK_CORE_AVX2_M32: #define __SSE__ 1
-// CHECK_CORE_AVX2_M32: #define __SSSE3__ 1
-// CHECK_CORE_AVX2_M32: #define __corei7 1
-// CHECK_CORE_AVX2_M32: #define __corei7__ 1
-// CHECK_CORE_AVX2_M32: #define __i386 1
-// CHECK_CORE_AVX2_M32: #define __i386__ 1
-// CHECK_CORE_AVX2_M32: #define __tune_corei7__ 1
-// CHECK_CORE_AVX2_M32: #define i386 1
-// RUN: %clang -march=core-avx2 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_CORE_AVX2_M64
-// CHECK_CORE_AVX2_M64: #define __AES__ 1
-// CHECK_CORE_AVX2_M64: #define __AVX__ 1
-// CHECK_CORE_AVX2_M64: #define __BMI2__ 1
-// CHECK_CORE_AVX2_M64: #define __BMI__ 1
-// CHECK_CORE_AVX2_M64: #define __F16C__ 1
-// CHECK_CORE_AVX2_M64: #define __FMA__ 1
-// CHECK_CORE_AVX2_M64: #define __LZCNT__ 1
-// CHECK_CORE_AVX2_M64: #define __MMX__ 1
-// CHECK_CORE_AVX2_M64: #define __PCLMUL__ 1
-// CHECK_CORE_AVX2_M64: #define __POPCNT__ 1
-// CHECK_CORE_AVX2_M64: #define __RDRND__ 1
-// CHECK_CORE_AVX2_M64: #define __RTM__ 1
-// CHECK_CORE_AVX2_M64: #define __SSE2_MATH__ 1
-// CHECK_CORE_AVX2_M64: #define __SSE2__ 1
-// CHECK_CORE_AVX2_M64: #define __SSE3__ 1
-// CHECK_CORE_AVX2_M64: #define __SSE4_1__ 1
-// CHECK_CORE_AVX2_M64: #define __SSE4_2__ 1
-// CHECK_CORE_AVX2_M64: #define __SSE_MATH__ 1
-// CHECK_CORE_AVX2_M64: #define __SSE__ 1
-// CHECK_CORE_AVX2_M64: #define __SSSE3__ 1
-// CHECK_CORE_AVX2_M64: #define __amd64 1
-// CHECK_CORE_AVX2_M64: #define __amd64__ 1
-// CHECK_CORE_AVX2_M64: #define __corei7 1
-// CHECK_CORE_AVX2_M64: #define __corei7__ 1
-// CHECK_CORE_AVX2_M64: #define __tune_corei7__ 1
-// CHECK_CORE_AVX2_M64: #define __x86_64 1
-// CHECK_CORE_AVX2_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATOM_M32
-// CHECK_ATOM_M32: #define __MMX__ 1
-// CHECK_ATOM_M32: #define __SSE2__ 1
-// CHECK_ATOM_M32: #define __SSE3__ 1
-// CHECK_ATOM_M32: #define __SSE__ 1
-// CHECK_ATOM_M32: #define __SSSE3__ 1
-// CHECK_ATOM_M32: #define __atom 1
-// CHECK_ATOM_M32: #define __atom__ 1
-// CHECK_ATOM_M32: #define __i386 1
-// CHECK_ATOM_M32: #define __i386__ 1
-// CHECK_ATOM_M32: #define __tune_atom__ 1
-// CHECK_ATOM_M32: #define i386 1
-// RUN: %clang -march=atom -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATOM_M64
-// CHECK_ATOM_M64: #define __MMX__ 1
-// CHECK_ATOM_M64: #define __SSE2_MATH__ 1
-// CHECK_ATOM_M64: #define __SSE2__ 1
-// CHECK_ATOM_M64: #define __SSE3__ 1
-// CHECK_ATOM_M64: #define __SSE_MATH__ 1
-// CHECK_ATOM_M64: #define __SSE__ 1
-// CHECK_ATOM_M64: #define __SSSE3__ 1
-// CHECK_ATOM_M64: #define __amd64 1
-// CHECK_ATOM_M64: #define __amd64__ 1
-// CHECK_ATOM_M64: #define __atom 1
-// CHECK_ATOM_M64: #define __atom__ 1
-// CHECK_ATOM_M64: #define __tune_atom__ 1
-// CHECK_ATOM_M64: #define __x86_64 1
-// CHECK_ATOM_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=geode -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_GEODE_M32
-// CHECK_GEODE_M32: #define __3dNOW_A__ 1
-// CHECK_GEODE_M32: #define __3dNOW__ 1
-// CHECK_GEODE_M32: #define __MMX__ 1
-// CHECK_GEODE_M32: #define __geode 1
-// CHECK_GEODE_M32: #define __geode__ 1
-// CHECK_GEODE_M32: #define __i386 1
-// CHECK_GEODE_M32: #define __i386__ 1
-// CHECK_GEODE_M32: #define __tune_geode__ 1
-// CHECK_GEODE_M32: #define i386 1
-// RUN: %clang -march=geode -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_GEODE_M64
-// CHECK_GEODE_M64: error:
-//
-// RUN: %clang -march=k6 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K6_M32
-// CHECK_K6_M32: #define __MMX__ 1
-// CHECK_K6_M32: #define __i386 1
-// CHECK_K6_M32: #define __i386__ 1
-// CHECK_K6_M32: #define __k6 1
-// CHECK_K6_M32: #define __k6__ 1
-// CHECK_K6_M32: #define __tune_k6__ 1
-// CHECK_K6_M32: #define i386 1
-// RUN: %clang -march=k6 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K6_M64
-// CHECK_K6_M64: error:
-//
-// RUN: %clang -march=k6-2 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K6_2_M32
-// CHECK_K6_2_M32: #define __3dNOW__ 1
-// CHECK_K6_2_M32: #define __MMX__ 1
-// CHECK_K6_2_M32: #define __i386 1
-// CHECK_K6_2_M32: #define __i386__ 1
-// CHECK_K6_2_M32: #define __k6 1
-// CHECK_K6_2_M32: #define __k6_2__ 1
-// CHECK_K6_2_M32: #define __k6__ 1
-// CHECK_K6_2_M32: #define __tune_k6_2__ 1
-// CHECK_K6_2_M32: #define __tune_k6__ 1
-// CHECK_K6_2_M32: #define i386 1
-// RUN: %clang -march=k6-2 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K6_2_M64
-// CHECK_K6_2_M64: error:
-//
-// RUN: %clang -march=k6-3 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K6_3_M32
-// CHECK_K6_3_M32: #define __3dNOW__ 1
-// CHECK_K6_3_M32: #define __MMX__ 1
-// CHECK_K6_3_M32: #define __i386 1
-// CHECK_K6_3_M32: #define __i386__ 1
-// CHECK_K6_3_M32: #define __k6 1
-// CHECK_K6_3_M32: #define __k6_3__ 1
-// CHECK_K6_3_M32: #define __k6__ 1
-// CHECK_K6_3_M32: #define __tune_k6_3__ 1
-// CHECK_K6_3_M32: #define __tune_k6__ 1
-// CHECK_K6_3_M32: #define i386 1
-// RUN: %clang -march=k6-3 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K6_3_M64
-// CHECK_K6_3_M64: error:
-//
-// RUN: %clang -march=athlon -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_M32
-// CHECK_ATHLON_M32: #define __3dNOW_A__ 1
-// CHECK_ATHLON_M32: #define __3dNOW__ 1
-// CHECK_ATHLON_M32: #define __MMX__ 1
-// CHECK_ATHLON_M32: #define __athlon 1
-// CHECK_ATHLON_M32: #define __athlon__ 1
-// CHECK_ATHLON_M32: #define __i386 1
-// CHECK_ATHLON_M32: #define __i386__ 1
-// CHECK_ATHLON_M32: #define __tune_athlon__ 1
-// CHECK_ATHLON_M32: #define i386 1
-// RUN: %clang -march=athlon -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_M64
-// CHECK_ATHLON_M64: error:
-//
-// RUN: %clang -march=athlon-tbird -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_TBIRD_M32
-// CHECK_ATHLON_TBIRD_M32: #define __3dNOW_A__ 1
-// CHECK_ATHLON_TBIRD_M32: #define __3dNOW__ 1
-// CHECK_ATHLON_TBIRD_M32: #define __MMX__ 1
-// CHECK_ATHLON_TBIRD_M32: #define __athlon 1
-// CHECK_ATHLON_TBIRD_M32: #define __athlon__ 1
-// CHECK_ATHLON_TBIRD_M32: #define __i386 1
-// CHECK_ATHLON_TBIRD_M32: #define __i386__ 1
-// CHECK_ATHLON_TBIRD_M32: #define __tune_athlon__ 1
-// CHECK_ATHLON_TBIRD_M32: #define i386 1
-// RUN: %clang -march=athlon-tbird -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_TBIRD_M64
-// CHECK_ATHLON_TBIRD_M64: error:
-//
-// RUN: %clang -march=athlon-4 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_4_M32
-// CHECK_ATHLON_4_M32: #define __3dNOW_A__ 1
-// CHECK_ATHLON_4_M32: #define __3dNOW__ 1
-// CHECK_ATHLON_4_M32: #define __MMX__ 1
-// CHECK_ATHLON_4_M32: #define __SSE__ 1
-// CHECK_ATHLON_4_M32: #define __athlon 1
-// CHECK_ATHLON_4_M32: #define __athlon__ 1
-// CHECK_ATHLON_4_M32: #define __athlon_sse__ 1
-// CHECK_ATHLON_4_M32: #define __i386 1
-// CHECK_ATHLON_4_M32: #define __i386__ 1
-// CHECK_ATHLON_4_M32: #define __tune_athlon__ 1
-// CHECK_ATHLON_4_M32: #define __tune_athlon_sse__ 1
-// CHECK_ATHLON_4_M32: #define i386 1
-// RUN: %clang -march=athlon-4 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_4_M64
-// CHECK_ATHLON_4_M64: error:
-//
-// RUN: %clang -march=athlon-xp -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_XP_M32
-// CHECK_ATHLON_XP_M32: #define __3dNOW_A__ 1
-// CHECK_ATHLON_XP_M32: #define __3dNOW__ 1
-// CHECK_ATHLON_XP_M32: #define __MMX__ 1
-// CHECK_ATHLON_XP_M32: #define __SSE__ 1
-// CHECK_ATHLON_XP_M32: #define __athlon 1
-// CHECK_ATHLON_XP_M32: #define __athlon__ 1
-// CHECK_ATHLON_XP_M32: #define __athlon_sse__ 1
-// CHECK_ATHLON_XP_M32: #define __i386 1
-// CHECK_ATHLON_XP_M32: #define __i386__ 1
-// CHECK_ATHLON_XP_M32: #define __tune_athlon__ 1
-// CHECK_ATHLON_XP_M32: #define __tune_athlon_sse__ 1
-// CHECK_ATHLON_XP_M32: #define i386 1
-// RUN: %clang -march=athlon-xp -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_XP_M64
-// CHECK_ATHLON_XP_M64: error:
-//
-// RUN: %clang -march=athlon-mp -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_MP_M32
-// CHECK_ATHLON_MP_M32: #define __3dNOW_A__ 1
-// CHECK_ATHLON_MP_M32: #define __3dNOW__ 1
-// CHECK_ATHLON_MP_M32: #define __MMX__ 1
-// CHECK_ATHLON_MP_M32: #define __SSE__ 1
-// CHECK_ATHLON_MP_M32: #define __athlon 1
-// CHECK_ATHLON_MP_M32: #define __athlon__ 1
-// CHECK_ATHLON_MP_M32: #define __athlon_sse__ 1
-// CHECK_ATHLON_MP_M32: #define __i386 1
-// CHECK_ATHLON_MP_M32: #define __i386__ 1
-// CHECK_ATHLON_MP_M32: #define __tune_athlon__ 1
-// CHECK_ATHLON_MP_M32: #define __tune_athlon_sse__ 1
-// CHECK_ATHLON_MP_M32: #define i386 1
-// RUN: %clang -march=athlon-mp -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_MP_M64
-// CHECK_ATHLON_MP_M64: error:
-//
-// RUN: %clang -march=x86-64 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_X86_64_M32
-// CHECK_X86_64_M32: #define __MMX__ 1
-// CHECK_X86_64_M32: #define __SSE2__ 1
-// CHECK_X86_64_M32: #define __SSE__ 1
-// CHECK_X86_64_M32: #define __i386 1
-// CHECK_X86_64_M32: #define __i386__ 1
-// CHECK_X86_64_M32: #define __k8 1
-// CHECK_X86_64_M32: #define __k8__ 1
-// CHECK_X86_64_M32: #define i386 1
-// RUN: %clang -march=x86-64 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_X86_64_M64
-// CHECK_X86_64_M64: #define __MMX__ 1
-// CHECK_X86_64_M64: #define __SSE2_MATH__ 1
-// CHECK_X86_64_M64: #define __SSE2__ 1
-// CHECK_X86_64_M64: #define __SSE_MATH__ 1
-// CHECK_X86_64_M64: #define __SSE__ 1
-// CHECK_X86_64_M64: #define __amd64 1
-// CHECK_X86_64_M64: #define __amd64__ 1
-// CHECK_X86_64_M64: #define __k8 1
-// CHECK_X86_64_M64: #define __k8__ 1
-// CHECK_X86_64_M64: #define __x86_64 1
-// CHECK_X86_64_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=k8 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K8_M32
-// CHECK_K8_M32: #define __3dNOW_A__ 1
-// CHECK_K8_M32: #define __3dNOW__ 1
-// CHECK_K8_M32: #define __MMX__ 1
-// CHECK_K8_M32: #define __SSE2__ 1
-// CHECK_K8_M32: #define __SSE__ 1
-// CHECK_K8_M32: #define __i386 1
-// CHECK_K8_M32: #define __i386__ 1
-// CHECK_K8_M32: #define __k8 1
-// CHECK_K8_M32: #define __k8__ 1
-// CHECK_K8_M32: #define __tune_k8__ 1
-// CHECK_K8_M32: #define i386 1
-// RUN: %clang -march=k8 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K8_M64
-// CHECK_K8_M64: #define __3dNOW_A__ 1
-// CHECK_K8_M64: #define __3dNOW__ 1
-// CHECK_K8_M64: #define __MMX__ 1
-// CHECK_K8_M64: #define __SSE2_MATH__ 1
-// CHECK_K8_M64: #define __SSE2__ 1
-// CHECK_K8_M64: #define __SSE_MATH__ 1
-// CHECK_K8_M64: #define __SSE__ 1
-// CHECK_K8_M64: #define __amd64 1
-// CHECK_K8_M64: #define __amd64__ 1
-// CHECK_K8_M64: #define __k8 1
-// CHECK_K8_M64: #define __k8__ 1
-// CHECK_K8_M64: #define __tune_k8__ 1
-// CHECK_K8_M64: #define __x86_64 1
-// CHECK_K8_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=k8-sse3 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K8_SSE3_M32
-// CHECK_K8_SSE3_M32: #define __3dNOW_A__ 1
-// CHECK_K8_SSE3_M32: #define __3dNOW__ 1
-// CHECK_K8_SSE3_M32: #define __MMX__ 1
-// CHECK_K8_SSE3_M32: #define __SSE2__ 1
-// CHECK_K8_SSE3_M32: #define __SSE3__ 1
-// CHECK_K8_SSE3_M32: #define __SSE__ 1
-// CHECK_K8_SSE3_M32: #define __i386 1
-// CHECK_K8_SSE3_M32: #define __i386__ 1
-// CHECK_K8_SSE3_M32: #define __k8 1
-// CHECK_K8_SSE3_M32: #define __k8__ 1
-// CHECK_K8_SSE3_M32: #define __tune_k8__ 1
-// CHECK_K8_SSE3_M32: #define i386 1
-// RUN: %clang -march=k8-sse3 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_K8_SSE3_M64
-// CHECK_K8_SSE3_M64: #define __3dNOW_A__ 1
-// CHECK_K8_SSE3_M64: #define __3dNOW__ 1
-// CHECK_K8_SSE3_M64: #define __MMX__ 1
-// CHECK_K8_SSE3_M64: #define __SSE2_MATH__ 1
-// CHECK_K8_SSE3_M64: #define __SSE2__ 1
-// CHECK_K8_SSE3_M64: #define __SSE3__ 1
-// CHECK_K8_SSE3_M64: #define __SSE_MATH__ 1
-// CHECK_K8_SSE3_M64: #define __SSE__ 1
-// CHECK_K8_SSE3_M64: #define __amd64 1
-// CHECK_K8_SSE3_M64: #define __amd64__ 1
-// CHECK_K8_SSE3_M64: #define __k8 1
-// CHECK_K8_SSE3_M64: #define __k8__ 1
-// CHECK_K8_SSE3_M64: #define __tune_k8__ 1
-// CHECK_K8_SSE3_M64: #define __x86_64 1
-// CHECK_K8_SSE3_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=opteron -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_OPTERON_M32
-// CHECK_OPTERON_M32: #define __3dNOW_A__ 1
-// CHECK_OPTERON_M32: #define __3dNOW__ 1
-// CHECK_OPTERON_M32: #define __MMX__ 1
-// CHECK_OPTERON_M32: #define __SSE2__ 1
-// CHECK_OPTERON_M32: #define __SSE__ 1
-// CHECK_OPTERON_M32: #define __i386 1
-// CHECK_OPTERON_M32: #define __i386__ 1
-// CHECK_OPTERON_M32: #define __k8 1
-// CHECK_OPTERON_M32: #define __k8__ 1
-// CHECK_OPTERON_M32: #define __tune_k8__ 1
-// CHECK_OPTERON_M32: #define i386 1
-// RUN: %clang -march=opteron -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_OPTERON_M64
-// CHECK_OPTERON_M64: #define __3dNOW_A__ 1
-// CHECK_OPTERON_M64: #define __3dNOW__ 1
-// CHECK_OPTERON_M64: #define __MMX__ 1
-// CHECK_OPTERON_M64: #define __SSE2_MATH__ 1
-// CHECK_OPTERON_M64: #define __SSE2__ 1
-// CHECK_OPTERON_M64: #define __SSE_MATH__ 1
-// CHECK_OPTERON_M64: #define __SSE__ 1
-// CHECK_OPTERON_M64: #define __amd64 1
-// CHECK_OPTERON_M64: #define __amd64__ 1
-// CHECK_OPTERON_M64: #define __k8 1
-// CHECK_OPTERON_M64: #define __k8__ 1
-// CHECK_OPTERON_M64: #define __tune_k8__ 1
-// CHECK_OPTERON_M64: #define __x86_64 1
-// CHECK_OPTERON_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=opteron-sse3 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_OPTERON_SSE3_M32
-// CHECK_OPTERON_SSE3_M32: #define __3dNOW_A__ 1
-// CHECK_OPTERON_SSE3_M32: #define __3dNOW__ 1
-// CHECK_OPTERON_SSE3_M32: #define __MMX__ 1
-// CHECK_OPTERON_SSE3_M32: #define __SSE2__ 1
-// CHECK_OPTERON_SSE3_M32: #define __SSE3__ 1
-// CHECK_OPTERON_SSE3_M32: #define __SSE__ 1
-// CHECK_OPTERON_SSE3_M32: #define __i386 1
-// CHECK_OPTERON_SSE3_M32: #define __i386__ 1
-// CHECK_OPTERON_SSE3_M32: #define __k8 1
-// CHECK_OPTERON_SSE3_M32: #define __k8__ 1
-// CHECK_OPTERON_SSE3_M32: #define __tune_k8__ 1
-// CHECK_OPTERON_SSE3_M32: #define i386 1
-// RUN: %clang -march=opteron-sse3 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_OPTERON_SSE3_M64
-// CHECK_OPTERON_SSE3_M64: #define __3dNOW_A__ 1
-// CHECK_OPTERON_SSE3_M64: #define __3dNOW__ 1
-// CHECK_OPTERON_SSE3_M64: #define __MMX__ 1
-// CHECK_OPTERON_SSE3_M64: #define __SSE2_MATH__ 1
-// CHECK_OPTERON_SSE3_M64: #define __SSE2__ 1
-// CHECK_OPTERON_SSE3_M64: #define __SSE3__ 1
-// CHECK_OPTERON_SSE3_M64: #define __SSE_MATH__ 1
-// CHECK_OPTERON_SSE3_M64: #define __SSE__ 1
-// CHECK_OPTERON_SSE3_M64: #define __amd64 1
-// CHECK_OPTERON_SSE3_M64: #define __amd64__ 1
-// CHECK_OPTERON_SSE3_M64: #define __k8 1
-// CHECK_OPTERON_SSE3_M64: #define __k8__ 1
-// CHECK_OPTERON_SSE3_M64: #define __tune_k8__ 1
-// CHECK_OPTERON_SSE3_M64: #define __x86_64 1
-// CHECK_OPTERON_SSE3_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=athlon64 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON64_M32
-// CHECK_ATHLON64_M32: #define __3dNOW_A__ 1
-// CHECK_ATHLON64_M32: #define __3dNOW__ 1
-// CHECK_ATHLON64_M32: #define __MMX__ 1
-// CHECK_ATHLON64_M32: #define __SSE2__ 1
-// CHECK_ATHLON64_M32: #define __SSE__ 1
-// CHECK_ATHLON64_M32: #define __i386 1
-// CHECK_ATHLON64_M32: #define __i386__ 1
-// CHECK_ATHLON64_M32: #define __k8 1
-// CHECK_ATHLON64_M32: #define __k8__ 1
-// CHECK_ATHLON64_M32: #define __tune_k8__ 1
-// CHECK_ATHLON64_M32: #define i386 1
-// RUN: %clang -march=athlon64 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON64_M64
-// CHECK_ATHLON64_M64: #define __3dNOW_A__ 1
-// CHECK_ATHLON64_M64: #define __3dNOW__ 1
-// CHECK_ATHLON64_M64: #define __MMX__ 1
-// CHECK_ATHLON64_M64: #define __SSE2_MATH__ 1
-// CHECK_ATHLON64_M64: #define __SSE2__ 1
-// CHECK_ATHLON64_M64: #define __SSE_MATH__ 1
-// CHECK_ATHLON64_M64: #define __SSE__ 1
-// CHECK_ATHLON64_M64: #define __amd64 1
-// CHECK_ATHLON64_M64: #define __amd64__ 1
-// CHECK_ATHLON64_M64: #define __k8 1
-// CHECK_ATHLON64_M64: #define __k8__ 1
-// CHECK_ATHLON64_M64: #define __tune_k8__ 1
-// CHECK_ATHLON64_M64: #define __x86_64 1
-// CHECK_ATHLON64_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=athlon64-sse3 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON64_SSE3_M32
-// CHECK_ATHLON64_SSE3_M32: #define __3dNOW_A__ 1
-// CHECK_ATHLON64_SSE3_M32: #define __3dNOW__ 1
-// CHECK_ATHLON64_SSE3_M32: #define __MMX__ 1
-// CHECK_ATHLON64_SSE3_M32: #define __SSE2__ 1
-// CHECK_ATHLON64_SSE3_M32: #define __SSE3__ 1
-// CHECK_ATHLON64_SSE3_M32: #define __SSE__ 1
-// CHECK_ATHLON64_SSE3_M32: #define __i386 1
-// CHECK_ATHLON64_SSE3_M32: #define __i386__ 1
-// CHECK_ATHLON64_SSE3_M32: #define __k8 1
-// CHECK_ATHLON64_SSE3_M32: #define __k8__ 1
-// CHECK_ATHLON64_SSE3_M32: #define __tune_k8__ 1
-// CHECK_ATHLON64_SSE3_M32: #define i386 1
-// RUN: %clang -march=athlon64-sse3 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON64_SSE3_M64
-// CHECK_ATHLON64_SSE3_M64: #define __3dNOW_A__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __3dNOW__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __MMX__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __SSE2_MATH__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __SSE2__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __SSE3__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __SSE_MATH__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __SSE__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __amd64 1
-// CHECK_ATHLON64_SSE3_M64: #define __amd64__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __k8 1
-// CHECK_ATHLON64_SSE3_M64: #define __k8__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __tune_k8__ 1
-// CHECK_ATHLON64_SSE3_M64: #define __x86_64 1
-// CHECK_ATHLON64_SSE3_M64: #define __x86_64__ 1
-//
-// RUN: %clang -march=athlon-fx -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_FX_M32
-// CHECK_ATHLON_FX_M32: #define __3dNOW_A__ 1
-// CHECK_ATHLON_FX_M32: #define __3dNOW__ 1
-// CHECK_ATHLON_FX_M32: #define __MMX__ 1
-// CHECK_ATHLON_FX_M32: #define __SSE2__ 1
-// CHECK_ATHLON_FX_M32: #define __SSE__ 1
-// CHECK_ATHLON_FX_M32: #define __i386 1
-// CHECK_ATHLON_FX_M32: #define __i386__ 1
-// CHECK_ATHLON_FX_M32: #define __k8 1
-// CHECK_ATHLON_FX_M32: #define __k8__ 1
-// CHECK_ATHLON_FX_M32: #define __tune_k8__ 1
-// CHECK_ATHLON_FX_M32: #define i386 1
-// RUN: %clang -march=athlon-fx -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_ATHLON_FX_M64
-// CHECK_ATHLON_FX_M64: #define __3dNOW_A__ 1
-// CHECK_ATHLON_FX_M64: #define __3dNOW__ 1
-// CHECK_ATHLON_FX_M64: #define __MMX__ 1
-// CHECK_ATHLON_FX_M64: #define __SSE2_MATH__ 1
-// CHECK_ATHLON_FX_M64: #define __SSE2__ 1
-// CHECK_ATHLON_FX_M64: #define __SSE_MATH__ 1
-// CHECK_ATHLON_FX_M64: #define __SSE__ 1
-// CHECK_ATHLON_FX_M64: #define __amd64 1
-// CHECK_ATHLON_FX_M64: #define __amd64__ 1
-// CHECK_ATHLON_FX_M64: #define __k8 1
-// CHECK_ATHLON_FX_M64: #define __k8__ 1
-// CHECK_ATHLON_FX_M64: #define __tune_k8__ 1
-// CHECK_ATHLON_FX_M64: #define __x86_64 1
-// CHECK_ATHLON_FX_M64: #define __x86_64__ 1
-// RUN: %clang -march=amdfam10 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_AMDFAM10_M32
-// CHECK_AMDFAM10_M32: #define __3dNOW_A__ 1
-// CHECK_AMDFAM10_M32: #define __3dNOW__ 1
-// CHECK_AMDFAM10_M32: #define __LZCNT__ 1
-// CHECK_AMDFAM10_M32: #define __MMX__ 1
-// CHECK_AMDFAM10_M32: #define __POPCNT__ 1
-// CHECK_AMDFAM10_M32: #define __SSE2_MATH__ 1
-// CHECK_AMDFAM10_M32: #define __SSE2__ 1
-// CHECK_AMDFAM10_M32: #define __SSE3__ 1
-// CHECK_AMDFAM10_M32: #define __SSE4A__ 1
-// CHECK_AMDFAM10_M32: #define __SSE_MATH__ 1
-// CHECK_AMDFAM10_M32: #define __SSE__ 1
-// CHECK_AMDFAM10_M32: #define __amdfam10 1
-// CHECK_AMDFAM10_M32: #define __amdfam10__ 1
-// CHECK_AMDFAM10_M32: #define __i386 1
-// CHECK_AMDFAM10_M32: #define __i386__ 1
-// CHECK_AMDFAM10_M32: #define __tune_amdfam10__ 1
-// RUN: %clang -march=amdfam10 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_AMDFAM10_M64
-// CHECK_AMDFAM10_M64: #define __3dNOW_A__ 1
-// CHECK_AMDFAM10_M64: #define __3dNOW__ 1
-// CHECK_AMDFAM10_M64: #define __LZCNT__ 1
-// CHECK_AMDFAM10_M64: #define __MMX__ 1
-// CHECK_AMDFAM10_M64: #define __POPCNT__ 1
-// CHECK_AMDFAM10_M64: #define __SSE2_MATH__ 1
-// CHECK_AMDFAM10_M64: #define __SSE2__ 1
-// CHECK_AMDFAM10_M64: #define __SSE3__ 1
-// CHECK_AMDFAM10_M64: #define __SSE4A__ 1
-// CHECK_AMDFAM10_M64: #define __SSE_MATH__ 1
-// CHECK_AMDFAM10_M64: #define __SSE__ 1
-// CHECK_AMDFAM10_M64: #define __amd64 1
-// CHECK_AMDFAM10_M64: #define __amd64__ 1
-// CHECK_AMDFAM10_M64: #define __amdfam10 1
-// CHECK_AMDFAM10_M64: #define __amdfam10__ 1
-// CHECK_AMDFAM10_M64: #define __tune_amdfam10__ 1
-// CHECK_AMDFAM10_M64: #define __x86_64 1
-// CHECK_AMDFAM10_M64: #define __x86_64__ 1
-// RUN: %clang -march=btver1 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_BTVER1_M32
-// CHECK_BTVER1_M32-NOT: #define __3dNOW_A__ 1
-// CHECK_BTVER1_M32-NOT: #define __3dNOW__ 1
-// CHECK_BTVER1_M32: #define __LZCNT__ 1
-// CHECK_BTVER1_M32: #define __MMX__ 1
-// CHECK_BTVER1_M32: #define __POPCNT__ 1
-// CHECK_BTVER1_M32: #define __SSE2_MATH__ 1
-// CHECK_BTVER1_M32: #define __SSE2__ 1
-// CHECK_BTVER1_M32: #define __SSE3__ 1
-// CHECK_BTVER1_M32: #define __SSE4A__ 1
-// CHECK_BTVER1_M32: #define __SSE_MATH__ 1
-// CHECK_BTVER1_M32: #define __SSE__ 1
-// CHECK_BTVER1_M32: #define __SSSE3__ 1
-// CHECK_BTVER1_M32: #define __btver1 1
-// CHECK_BTVER1_M32: #define __btver1__ 1
-// CHECK_BTVER1_M32: #define __i386 1
-// CHECK_BTVER1_M32: #define __i386__ 1
-// CHECK_BTVER1_M32: #define __tune_btver1__ 1
-// RUN: %clang -march=btver1 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_BTVER1_M64
-// CHECK_BTVER1_M64-NOT: #define __3dNOW_A__ 1
-// CHECK_BTVER1_M64-NOT: #define __3dNOW__ 1
-// CHECK_BTVER1_M64: #define __LZCNT__ 1
-// CHECK_BTVER1_M64: #define __MMX__ 1
-// CHECK_BTVER1_M64: #define __POPCNT__ 1
-// CHECK_BTVER1_M64: #define __SSE2_MATH__ 1
-// CHECK_BTVER1_M64: #define __SSE2__ 1
-// CHECK_BTVER1_M64: #define __SSE3__ 1
-// CHECK_BTVER1_M64: #define __SSE4A__ 1
-// CHECK_BTVER1_M64: #define __SSE_MATH__ 1
-// CHECK_BTVER1_M64: #define __SSE__ 1
-// CHECK_BTVER1_M64: #define __SSSE3__ 1
-// CHECK_BTVER1_M64: #define __amd64 1
-// CHECK_BTVER1_M64: #define __amd64__ 1
-// CHECK_BTVER1_M64: #define __btver1 1
-// CHECK_BTVER1_M64: #define __btver1__ 1
-// CHECK_BTVER1_M64: #define __tune_btver1__ 1
-// CHECK_BTVER1_M64: #define __x86_64 1
-// CHECK_BTVER1_M64: #define __x86_64__ 1
-// RUN: %clang -march=btver2 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_BTVER2_M32
-// CHECK_BTVER2_M32-NOT: #define __3dNOW_A__ 1
-// CHECK_BTVER2_M32-NOT: #define __3dNOW__ 1
-// CHECK_BTVER2_M32: #define __AES__ 1
-// CHECK_BTVER2_M32: #define __AVX__ 1
-// CHECK_BTVER2_M32: #define __LZCNT__ 1
-// CHECK_BTVER2_M32: #define __MMX__ 1
-// CHECK_BTVER2_M32: #define __POPCNT__ 1
-// CHECK_BTVER2_M32: #define __SSE2_MATH__ 1
-// CHECK_BTVER2_M32: #define __SSE2__ 1
-// CHECK_BTVER2_M32: #define __SSE3__ 1
-// CHECK_BTVER2_M32: #define __SSE4A__ 1
-// CHECK_BTVER2_M32: #define __SSE_MATH__ 1
-// CHECK_BTVER2_M32: #define __SSE__ 1
-// CHECK_BTVER2_M32: #define __SSSE3__ 1
-// CHECK_BTVER2_M32: #define __btver2 1
-// CHECK_BTVER2_M32: #define __btver2__ 1
-// CHECK_BTVER2_M32: #define __i386 1
-// CHECK_BTVER2_M32: #define __i386__ 1
-// CHECK_BTVER2_M32: #define __tune_btver2__ 1
-// RUN: %clang -march=btver2 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_BTVER2_M64
-// CHECK_BTVER2_M64-NOT: #define __3dNOW_A__ 1
-// CHECK_BTVER2_M64-NOT: #define __3dNOW__ 1
-// CHECK_BTVER2_M64: #define __AES__ 1
-// CHECK_BTVER2_M64: #define __AVX__ 1
-// CHECK_BTVER2_M64: #define __LZCNT__ 1
-// CHECK_BTVER2_M64: #define __MMX__ 1
-// CHECK_BTVER2_M64: #define __POPCNT__ 1
-// CHECK_BTVER2_M64: #define __SSE2_MATH__ 1
-// CHECK_BTVER2_M64: #define __SSE2__ 1
-// CHECK_BTVER2_M64: #define __SSE3__ 1
-// CHECK_BTVER2_M64: #define __SSE4A__ 1
-// CHECK_BTVER2_M64: #define __SSE_MATH__ 1
-// CHECK_BTVER2_M64: #define __SSE__ 1
-// CHECK_BTVER2_M64: #define __SSSE3__ 1
-// CHECK_BTVER2_M64: #define __amd64 1
-// CHECK_BTVER2_M64: #define __amd64__ 1
-// CHECK_BTVER2_M64: #define __btver2 1
-// CHECK_BTVER2_M64: #define __btver2__ 1
-// CHECK_BTVER2_M64: #define __tune_btver2__ 1
-// CHECK_BTVER2_M64: #define __x86_64 1
-// CHECK_BTVER2_M64: #define __x86_64__ 1
-// RUN: %clang -march=bdver1 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_BDVER1_M32
-// CHECK_BDVER1_M32-NOT: #define __3dNOW_A__ 1
-// CHECK_BDVER1_M32-NOT: #define __3dNOW__ 1
-// CHECK_BDVER1_M32: #define __AES__ 1
-// CHECK_BDVER1_M32: #define __AVX__ 1
-// CHECK_BDVER1_M32: #define __FMA4__ 1
-// CHECK_BDVER1_M32: #define __LZCNT__ 1
-// CHECK_BDVER1_M32: #define __MMX__ 1
-// CHECK_BDVER1_M32: #define __PCLMUL__ 1
-// CHECK_BDVER1_M32: #define __POPCNT__ 1
-// CHECK_BDVER1_M32: #define __SSE2_MATH__ 1
-// CHECK_BDVER1_M32: #define __SSE2__ 1
-// CHECK_BDVER1_M32: #define __SSE3__ 1
-// CHECK_BDVER1_M32: #define __SSE4A__ 1
-// CHECK_BDVER1_M32: #define __SSE4_1__ 1
-// CHECK_BDVER1_M32: #define __SSE4_2__ 1
-// CHECK_BDVER1_M32: #define __SSE_MATH__ 1
-// CHECK_BDVER1_M32: #define __SSE__ 1
-// CHECK_BDVER1_M32: #define __SSSE3__ 1
-// CHECK_BDVER1_M32: #define __XOP__ 1
-// CHECK_BDVER1_M32: #define __bdver1 1
-// CHECK_BDVER1_M32: #define __bdver1__ 1
-// CHECK_BDVER1_M32: #define __i386 1
-// CHECK_BDVER1_M32: #define __i386__ 1
-// CHECK_BDVER1_M32: #define __tune_bdver1__ 1
-// RUN: %clang -march=bdver1 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_BDVER1_M64
-// CHECK_BDVER1_M64-NOT: #define __3dNOW_A__ 1
-// CHECK_BDVER1_M64-NOT: #define __3dNOW__ 1
-// CHECK_BDVER1_M64: #define __AES__ 1
-// CHECK_BDVER1_M64: #define __AVX__ 1
-// CHECK_BDVER1_M64: #define __FMA4__ 1
-// CHECK_BDVER1_M64: #define __LZCNT__ 1
-// CHECK_BDVER1_M64: #define __MMX__ 1
-// CHECK_BDVER1_M64: #define __PCLMUL__ 1
-// CHECK_BDVER1_M64: #define __POPCNT__ 1
-// CHECK_BDVER1_M64: #define __SSE2_MATH__ 1
-// CHECK_BDVER1_M64: #define __SSE2__ 1
-// CHECK_BDVER1_M64: #define __SSE3__ 1
-// CHECK_BDVER1_M64: #define __SSE4A__ 1
-// CHECK_BDVER1_M64: #define __SSE4_1__ 1
-// CHECK_BDVER1_M64: #define __SSE4_2__ 1
-// CHECK_BDVER1_M64: #define __SSE_MATH__ 1
-// CHECK_BDVER1_M64: #define __SSE__ 1
-// CHECK_BDVER1_M64: #define __SSSE3__ 1
-// CHECK_BDVER1_M64: #define __XOP__ 1
-// CHECK_BDVER1_M64: #define __amd64 1
-// CHECK_BDVER1_M64: #define __amd64__ 1
-// CHECK_BDVER1_M64: #define __bdver1 1
-// CHECK_BDVER1_M64: #define __bdver1__ 1
-// CHECK_BDVER1_M64: #define __tune_bdver1__ 1
-// CHECK_BDVER1_M64: #define __x86_64 1
-// CHECK_BDVER1_M64: #define __x86_64__ 1
-// RUN: %clang -march=bdver2 -m32 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_BDVER2_M32
-// CHECK_BDVER2_M32-NOT: #define __3dNOW_A__ 1
-// CHECK_BDVER2_M32-NOT: #define __3dNOW__ 1
-// CHECK_BDVER2_M32: #define __AES__ 1
-// CHECK_BDVER2_M32: #define __AVX__ 1
-// CHECK_BDVER2_M32: #define __BMI__ 1
-// CHECK_BDVER2_M32: #define __F16C__ 1
-// CHECK_BDVER2_M32: #define __FMA4__ 1
-// CHECK_BDVER2_M32: #define __FMA__ 1
-// CHECK_BDVER2_M32: #define __LZCNT__ 1
-// CHECK_BDVER2_M32: #define __MMX__ 1
-// CHECK_BDVER2_M32: #define __PCLMUL__ 1
-// CHECK_BDVER2_M32: #define __POPCNT__ 1
-// CHECK_BDVER2_M32: #define __SSE2_MATH__ 1
-// CHECK_BDVER2_M32: #define __SSE2__ 1
-// CHECK_BDVER2_M32: #define __SSE3__ 1
-// CHECK_BDVER2_M32: #define __SSE4A__ 1
-// CHECK_BDVER2_M32: #define __SSE4_1__ 1
-// CHECK_BDVER2_M32: #define __SSE4_2__ 1
-// CHECK_BDVER2_M32: #define __SSE_MATH__ 1
-// CHECK_BDVER2_M32: #define __SSE__ 1
-// CHECK_BDVER2_M32: #define __SSSE3__ 1
-// CHECK_BDVER2_M32: #define __XOP__ 1
-// CHECK_BDVER2_M32: #define __bdver2 1
-// CHECK_BDVER2_M32: #define __bdver2__ 1
-// CHECK_BDVER2_M32: #define __i386 1
-// CHECK_BDVER2_M32: #define __i386__ 1
-// CHECK_BDVER2_M32: #define __tune_bdver2__ 1
-// RUN: %clang -march=bdver2 -m64 -E -dM %s -o - 2>&1 \
-// RUN:     -target i386-unknown-linux \
-// RUN:   | FileCheck %s -check-prefix=CHECK_BDVER2_M64
-// CHECK_BDVER2_M64-NOT: #define __3dNOW_A__ 1
-// CHECK_BDVER2_M64-NOT: #define __3dNOW__ 1
-// CHECK_BDVER2_M64: #define __AES__ 1
-// CHECK_BDVER2_M64: #define __AVX__ 1
-// CHECK_BDVER2_M64: #define __BMI__ 1
-// CHECK_BDVER2_M64: #define __F16C__ 1
-// CHECK_BDVER2_M64: #define __FMA4__ 1
-// CHECK_BDVER2_M64: #define __FMA__ 1
-// CHECK_BDVER2_M64: #define __LZCNT__ 1
-// CHECK_BDVER2_M64: #define __MMX__ 1
-// CHECK_BDVER2_M64: #define __PCLMUL__ 1
-// CHECK_BDVER2_M64: #define __POPCNT__ 1
-// CHECK_BDVER2_M64: #define __SSE2_MATH__ 1
-// CHECK_BDVER2_M64: #define __SSE2__ 1
-// CHECK_BDVER2_M64: #define __SSE3__ 1
-// CHECK_BDVER2_M64: #define __SSE4A__ 1
-// CHECK_BDVER2_M64: #define __SSE4_1__ 1
-// CHECK_BDVER2_M64: #define __SSE4_2__ 1
-// CHECK_BDVER2_M64: #define __SSE_MATH__ 1
-// CHECK_BDVER2_M64: #define __SSE__ 1
-// CHECK_BDVER2_M64: #define __SSSE3__ 1
-// CHECK_BDVER2_M64: #define __XOP__ 1
-// CHECK_BDVER2_M64: #define __amd64 1
-// CHECK_BDVER2_M64: #define __amd64__ 1
-// CHECK_BDVER2_M64: #define __bdver2 1
-// CHECK_BDVER2_M64: #define __bdver2__ 1
-// CHECK_BDVER2_M64: #define __tune_bdver2__ 1
-// CHECK_BDVER2_M64: #define __x86_64 1
-// CHECK_BDVER2_M64: #define __x86_64__ 1
-//
-// End X86/GCC/Linux tests ------------------

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-exceptions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-exceptions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-exceptions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -fobjc-exceptions -fexceptions -E -dM %s | FileCheck -check-prefix=CHECK-OBJC-NOCXX %s 
-// CHECK-OBJC-NOCXX: #define OBJC_ZEROCOST_EXCEPTIONS 1
-// CHECK-OBJC-NOCXX-NOT: #define __EXCEPTIONS 1
-
-// RUN: %clang_cc1 -x objective-c++ -fobjc-exceptions -fexceptions -fcxx-exceptions -E -dM %s | FileCheck -check-prefix=CHECK-OBJC-CXX %s 
-// CHECK-OBJC-CXX: #define OBJC_ZEROCOST_EXCEPTIONS 1
-// CHECK-OBJC-CXX: #define __EXCEPTIONS 1
-
-// RUN: %clang_cc1 -x objective-c++ -fexceptions -fcxx-exceptions -E -dM %s | FileCheck -check-prefix=CHECK-NOOBJC-CXX %s 
-// CHECK-NOOBJC-CXX-NOT: #define OBJC_ZEROCOST_EXCEPTIONS 1
-// CHECK-NOOBJC-CXX: #define __EXCEPTIONS 1
-
-// RUN: %clang_cc1 -x objective-c -E -dM %s | FileCheck -check-prefix=CHECK-NOOBJC-NOCXX %s 
-// CHECK-NOOBJC-NOCXX-NOT: #define OBJC_ZEROCOST_EXCEPTIONS 1
-// CHECK-NOOBJC-NOCXX-NOT: #define __EXCEPTIONS 1

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-macros.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-macros.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/predefined-macros.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// This test verifies that the correct macros are predefined.
-//
-// RUN: %clang_cc1 %s -E -dM -triple i686-pc-win32 -fms-extensions -fms-compatibility \
-// RUN:     -fmsc-version=1300 -o - | FileCheck %s --check-prefix=CHECK-MS
-// CHECK-MS: #define _INTEGRAL_MAX_BITS 64
-// CHECK-MS: #define _MSC_EXTENSIONS 1
-// CHECK-MS: #define _MSC_VER 1300
-// CHECK-MS: #define _M_IX86 600
-// CHECK-MS: #define _M_IX86_FP
-// CHECK-MS: #define _WIN32 1
-// CHECK-MS-NOT: #define __GNUC__
-//
-// RUN: %clang_cc1 %s -E -dM -ffast-math -o - \
-// RUN:   | FileCheck %s --check-prefix=CHECK-FAST-MATH
-// CHECK-FAST-MATH: #define __FAST_MATH__
-// CHECK-FAST-MATH: #define __FINITE_MATH_ONLY__ 1
-//
-// RUN: %clang_cc1 %s -E -dM -ffinite-math-only -o - \
-// RUN:   | FileCheck %s --check-prefix=CHECK-FINITE-MATH-ONLY
-// CHECK-FINITE-MATH-ONLY: #define __FINITE_MATH_ONLY__ 1
-//
-// RUN: %clang %s -E -dM -fno-finite-math-only -o - \
-// RUN:   | FileCheck %s --check-prefix=CHECK-NO-FINITE-MATH-ONLY
-// CHECK-NO-FINITE-MATH-ONLY: #define __FINITE_MATH_ONLY__ 0
-//
-// RUN: %clang_cc1 %s -E -dM -o - \
-// RUN:   | FileCheck %s --check-prefix=CHECK-FINITE-MATH-FLAG-UNDEFINED
-// CHECK-FINITE-MATH-FLAG-UNDEFINED: #define __FINITE_MATH_ONLY__ 0
-//
-// RUN: %clang_cc1 %s -E -dM -o - -triple i686 -target-cpu i386 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-SYNC_CAS_I386
-// CHECK-SYNC_CAS_I386-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP
-//
-// RUN: %clang_cc1 %s -E -dM -o - -triple i686 -target-cpu i486 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-SYNC_CAS_I486
-// CHECK-SYNC_CAS_I486: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
-// CHECK-SYNC_CAS_I486: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
-// CHECK-SYNC_CAS_I486: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
-// CHECK-SYNC_CAS_I486-NOT: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
-//
-// RUN: %clang_cc1 %s -E -dM -o - -triple i686 -target-cpu i586 \
-// RUN:   | FileCheck %s --check-prefix=CHECK-SYNC_CAS_I586
-// CHECK-SYNC_CAS_I586: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
-// CHECK-SYNC_CAS_I586: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
-// CHECK-SYNC_CAS_I586: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
-// CHECK-SYNC_CAS_I586: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_count.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_count.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_count.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-/* RUN: %clang -E -C -P %s | FileCheck --strict-whitespace %s
-   PR2741
-   comment */ 
-y
-// CHECK: {{^}}   comment */{{$}}
-// CHECK-NEXT: {{^}}y{{$}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_empty_file.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_empty_file.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_empty_file.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck %s
-
-#line 21 ""
-int foo() { return 42; }
-
-#line 4 "bug.c" 
-int bar() { return 21; }
-
-// CHECK: # 21 ""
-// CHECK: int foo() { return 42; }
-// CHECK: # 4 "bug.c"
-// CHECK: int bar() { return 21; }

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_include.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_include.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_include.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -E -P %s | FileCheck %s
-// CHECK: int x;
-// CHECK-NEXT: int x;
-
-#include "print_line_include.h"
-#include "print_line_include.h"

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_include.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_include.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_include.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-int x;

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_track.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_track.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/print_line_track.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-/* RUN: %clang_cc1 -E %s | grep 'a 3'
- * RUN: %clang_cc1 -E %s | grep 'b 16'
- * RUN: %clang_cc1 -E -P %s | grep 'a 3'
- * RUN: %clang_cc1 -E -P %s | grep 'b 16'
- * RUN: %clang_cc1 -E %s | not grep '# 0 '
- * RUN: %clang_cc1 -E -P %s | count 4
- * PR1848 PR3437 PR7360
-*/
-
-#define t(x) x
-
-t(a
-3)
-
-t(b
-__LINE__)
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/pushable-diagnostics.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/pushable-diagnostics.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/pushable-diagnostics.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-#pragma clang diagnostic pop // expected-warning{{pragma diagnostic pop could not pop, no matching push}}
-
-#pragma clang diagnostic puhs // expected-warning {{pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'}}
-
-int a = 'df'; // expected-warning{{multi-character character constant}}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wmultichar"
-
-int b = 'df'; // no warning.
-#pragma clang diagnostic pop
-
-int c = 'df';  // expected-warning{{multi-character character constant}}
-
-#pragma clang diagnostic pop // expected-warning{{pragma diagnostic pop could not pop, no matching push}}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/skipping_unclean.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/skipping_unclean.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/skipping_unclean.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-
-#if 0
-blah
-#\
-else
-bark
-#endif
-// CHECK: {{^}}bark{{$}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/stdint.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/stdint.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/stdint.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1066 +0,0 @@
-// RUN: %clang_cc1 -E -ffreestanding -triple=arm-none-none %s | FileCheck -check-prefix ARM %s
-//
-// ARM:typedef signed long long int int64_t;
-// ARM:typedef unsigned long long int uint64_t;
-// ARM:typedef int64_t int_least64_t;
-// ARM:typedef uint64_t uint_least64_t;
-// ARM:typedef int64_t int_fast64_t;
-// ARM:typedef uint64_t uint_fast64_t;
-//
-// ARM:typedef signed int int32_t;
-// ARM:typedef unsigned int uint32_t;
-// ARM:typedef int32_t int_least32_t;
-// ARM:typedef uint32_t uint_least32_t;
-// ARM:typedef int32_t int_fast32_t;
-// ARM:typedef uint32_t uint_fast32_t;
-// 
-// ARM:typedef signed short int16_t;
-// ARM:typedef unsigned short uint16_t;
-// ARM:typedef int16_t int_least16_t;
-// ARM:typedef uint16_t uint_least16_t;
-// ARM:typedef int16_t int_fast16_t;
-// ARM:typedef uint16_t uint_fast16_t;
-//
-// ARM:typedef signed char int8_t;
-// ARM:typedef unsigned char uint8_t;
-// ARM:typedef int8_t int_least8_t;
-// ARM:typedef uint8_t uint_least8_t;
-// ARM:typedef int8_t int_fast8_t;
-// ARM:typedef uint8_t uint_fast8_t;
-//
-// ARM:typedef int32_t intptr_t;
-// ARM:typedef uint32_t uintptr_t;
-// 
-// ARM:typedef long long int intmax_t;
-// ARM:typedef long long unsigned int uintmax_t;
-//
-// ARM:INT8_MAX_ 127
-// ARM:INT8_MIN_ (-127 -1)
-// ARM:UINT8_MAX_ 255
-// ARM:INT_LEAST8_MIN_ (-127 -1)
-// ARM:INT_LEAST8_MAX_ 127
-// ARM:UINT_LEAST8_MAX_ 255
-// ARM:INT_FAST8_MIN_ (-127 -1)
-// ARM:INT_FAST8_MAX_ 127
-// ARM:UINT_FAST8_MAX_ 255
-//
-// ARM:INT16_MAX_ 32767
-// ARM:INT16_MIN_ (-32767 -1)
-// ARM:UINT16_MAX_ 65535
-// ARM:INT_LEAST16_MIN_ (-32767 -1)
-// ARM:INT_LEAST16_MAX_ 32767
-// ARM:UINT_LEAST16_MAX_ 65535
-// ARM:INT_FAST16_MIN_ (-32767 -1)
-// ARM:INT_FAST16_MAX_ 32767
-// ARM:UINT_FAST16_MAX_ 65535
-//
-// ARM:INT32_MAX_ 2147483647
-// ARM:INT32_MIN_ (-2147483647 -1)
-// ARM:UINT32_MAX_ 4294967295U
-// ARM:INT_LEAST32_MIN_ (-2147483647 -1)
-// ARM:INT_LEAST32_MAX_ 2147483647
-// ARM:UINT_LEAST32_MAX_ 4294967295U
-// ARM:INT_FAST32_MIN_ (-2147483647 -1)
-// ARM:INT_FAST32_MAX_ 2147483647
-// ARM:UINT_FAST32_MAX_ 4294967295U
-//
-// ARM:INT64_MAX_ 9223372036854775807LL
-// ARM:INT64_MIN_ (-9223372036854775807LL -1)
-// ARM:UINT64_MAX_ 18446744073709551615ULL
-// ARM:INT_LEAST64_MIN_ (-9223372036854775807LL -1)
-// ARM:INT_LEAST64_MAX_ 9223372036854775807LL
-// ARM:UINT_LEAST64_MAX_ 18446744073709551615ULL
-// ARM:INT_FAST64_MIN_ (-9223372036854775807LL -1)
-// ARM:INT_FAST64_MAX_ 9223372036854775807LL
-// ARM:UINT_FAST64_MAX_ 18446744073709551615ULL
-//
-// ARM:INTPTR_MIN_ (-2147483647 -1)
-// ARM:INTPTR_MAX_ 2147483647
-// ARM:UINTPTR_MAX_ 4294967295U
-// ARM:PTRDIFF_MIN_ (-2147483647 -1)
-// ARM:PTRDIFF_MAX_ 2147483647
-// ARM:SIZE_MAX_ 4294967295U
-//
-// ARM:INTMAX_MIN_ (-9223372036854775807LL -1)
-// ARM:INTMAX_MAX_ 9223372036854775807LL
-// ARM:UINTMAX_MAX_ 18446744073709551615ULL
-//
-// ARM:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// ARM:SIG_ATOMIC_MAX_ 2147483647
-// ARM:WINT_MIN_ (-2147483647 -1)
-// ARM:WINT_MAX_ 2147483647
-//
-// ARM:WCHAR_MAX_ 4294967295U
-// ARM:WCHAR_MIN_ 0U
-//
-// ARM:INT8_C_(0) 0
-// ARM:UINT8_C_(0) 0U
-// ARM:INT16_C_(0) 0
-// ARM:UINT16_C_(0) 0U
-// ARM:INT32_C_(0) 0
-// ARM:UINT32_C_(0) 0U
-// ARM:INT64_C_(0) 0LL
-// ARM:UINT64_C_(0) 0ULL
-//
-// ARM:INTMAX_C_(0) 0LL
-// ARM:UINTMAX_C_(0) 0ULL
-//
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=i386-none-none %s | FileCheck -check-prefix I386 %s
-//
-// I386:typedef signed long long int int64_t;
-// I386:typedef unsigned long long int uint64_t;
-// I386:typedef int64_t int_least64_t;
-// I386:typedef uint64_t uint_least64_t;
-// I386:typedef int64_t int_fast64_t;
-// I386:typedef uint64_t uint_fast64_t;
-//
-// I386:typedef signed int int32_t;
-// I386:typedef unsigned int uint32_t;
-// I386:typedef int32_t int_least32_t;
-// I386:typedef uint32_t uint_least32_t;
-// I386:typedef int32_t int_fast32_t;
-// I386:typedef uint32_t uint_fast32_t;
-//
-// I386:typedef signed short int16_t;
-// I386:typedef unsigned short uint16_t;
-// I386:typedef int16_t int_least16_t;
-// I386:typedef uint16_t uint_least16_t;
-// I386:typedef int16_t int_fast16_t;
-// I386:typedef uint16_t uint_fast16_t;
-//
-// I386:typedef signed char int8_t;
-// I386:typedef unsigned char uint8_t;
-// I386:typedef int8_t int_least8_t;
-// I386:typedef uint8_t uint_least8_t;
-// I386:typedef int8_t int_fast8_t;
-// I386:typedef uint8_t uint_fast8_t;
-//
-// I386:typedef int32_t intptr_t;
-// I386:typedef uint32_t uintptr_t;
-//
-// I386:typedef long long int intmax_t;
-// I386:typedef long long unsigned int uintmax_t;
-//
-// I386:INT8_MAX_ 127
-// I386:INT8_MIN_ (-127 -1)
-// I386:UINT8_MAX_ 255
-// I386:INT_LEAST8_MIN_ (-127 -1)
-// I386:INT_LEAST8_MAX_ 127
-// I386:UINT_LEAST8_MAX_ 255
-// I386:INT_FAST8_MIN_ (-127 -1)
-// I386:INT_FAST8_MAX_ 127
-// I386:UINT_FAST8_MAX_ 255
-//
-// I386:INT16_MAX_ 32767
-// I386:INT16_MIN_ (-32767 -1)
-// I386:UINT16_MAX_ 65535
-// I386:INT_LEAST16_MIN_ (-32767 -1)
-// I386:INT_LEAST16_MAX_ 32767
-// I386:UINT_LEAST16_MAX_ 65535
-// I386:INT_FAST16_MIN_ (-32767 -1)
-// I386:INT_FAST16_MAX_ 32767
-// I386:UINT_FAST16_MAX_ 65535
-//
-// I386:INT32_MAX_ 2147483647
-// I386:INT32_MIN_ (-2147483647 -1)
-// I386:UINT32_MAX_ 4294967295U
-// I386:INT_LEAST32_MIN_ (-2147483647 -1)
-// I386:INT_LEAST32_MAX_ 2147483647
-// I386:UINT_LEAST32_MAX_ 4294967295U
-// I386:INT_FAST32_MIN_ (-2147483647 -1)
-// I386:INT_FAST32_MAX_ 2147483647
-// I386:UINT_FAST32_MAX_ 4294967295U
-//
-// I386:INT64_MAX_ 9223372036854775807LL
-// I386:INT64_MIN_ (-9223372036854775807LL -1)
-// I386:UINT64_MAX_ 18446744073709551615ULL
-// I386:INT_LEAST64_MIN_ (-9223372036854775807LL -1)
-// I386:INT_LEAST64_MAX_ 9223372036854775807LL
-// I386:UINT_LEAST64_MAX_ 18446744073709551615ULL
-// I386:INT_FAST64_MIN_ (-9223372036854775807LL -1)
-// I386:INT_FAST64_MAX_ 9223372036854775807LL
-// I386:UINT_FAST64_MAX_ 18446744073709551615ULL
-//
-// I386:INTPTR_MIN_ (-2147483647 -1)
-// I386:INTPTR_MAX_ 2147483647
-// I386:UINTPTR_MAX_ 4294967295U
-// I386:PTRDIFF_MIN_ (-2147483647 -1)
-// I386:PTRDIFF_MAX_ 2147483647
-// I386:SIZE_MAX_ 4294967295U
-//
-// I386:INTMAX_MIN_ (-9223372036854775807LL -1)
-// I386:INTMAX_MAX_ 9223372036854775807LL
-// I386:UINTMAX_MAX_ 18446744073709551615ULL
-//
-// I386:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// I386:SIG_ATOMIC_MAX_ 2147483647
-// I386:WINT_MIN_ (-2147483647 -1)
-// I386:WINT_MAX_ 2147483647
-//
-// I386:WCHAR_MAX_ 2147483647
-// I386:WCHAR_MIN_ (-2147483647 -1)
-//
-// I386:INT8_C_(0) 0
-// I386:UINT8_C_(0) 0U
-// I386:INT16_C_(0) 0
-// I386:UINT16_C_(0) 0U
-// I386:INT32_C_(0) 0
-// I386:UINT32_C_(0) 0U
-// I386:INT64_C_(0) 0LL
-// I386:UINT64_C_(0) 0ULL
-//
-// I386:INTMAX_C_(0) 0LL
-// I386:UINTMAX_C_(0) 0ULL
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=msp430-none-none %s | FileCheck -check-prefix MSP430 %s
-//
-// MSP430:typedef signed long int int32_t;
-// MSP430:typedef unsigned long int uint32_t;
-// MSP430:typedef int32_t int_least32_t;
-// MSP430:typedef uint32_t uint_least32_t;
-// MSP430:typedef int32_t int_fast32_t;
-// MSP430:typedef uint32_t uint_fast32_t;
-//
-// MSP430:typedef signed short int16_t;
-// MSP430:typedef unsigned short uint16_t;
-// MSP430:typedef int16_t int_least16_t;
-// MSP430:typedef uint16_t uint_least16_t;
-// MSP430:typedef int16_t int_fast16_t;
-// MSP430:typedef uint16_t uint_fast16_t;
-//
-// MSP430:typedef signed char int8_t;
-// MSP430:typedef unsigned char uint8_t;
-// MSP430:typedef int8_t int_least8_t;
-// MSP430:typedef uint8_t uint_least8_t;
-// MSP430:typedef int8_t int_fast8_t;
-// MSP430:typedef uint8_t uint_fast8_t;
-//
-// MSP430:typedef int16_t intptr_t;
-// MSP430:typedef uint16_t uintptr_t;
-//
-// MSP430:typedef long int intmax_t;
-// MSP430:typedef long unsigned int uintmax_t;
-//
-// MSP430:INT8_MAX_ 127
-// MSP430:INT8_MIN_ (-127 -1)
-// MSP430:UINT8_MAX_ 255
-// MSP430:INT_LEAST8_MIN_ (-127 -1)
-// MSP430:INT_LEAST8_MAX_ 127
-// MSP430:UINT_LEAST8_MAX_ 255
-// MSP430:INT_FAST8_MIN_ (-127 -1)
-// MSP430:INT_FAST8_MAX_ 127
-// MSP430:UINT_FAST8_MAX_ 255
-//
-// MSP430:INT16_MAX_ 32767
-// MSP430:INT16_MIN_ (-32767 -1)
-// MSP430:UINT16_MAX_ 65535
-// MSP430:INT_LEAST16_MIN_ (-32767 -1)
-// MSP430:INT_LEAST16_MAX_ 32767
-// MSP430:UINT_LEAST16_MAX_ 65535
-// MSP430:INT_FAST16_MIN_ (-32767 -1)
-// MSP430:INT_FAST16_MAX_ 32767
-// MSP430:UINT_FAST16_MAX_ 65535
-//
-// MSP430:INT32_MAX_ 2147483647L
-// MSP430:INT32_MIN_ (-2147483647L -1)
-// MSP430:UINT32_MAX_ 4294967295UL
-// MSP430:INT_LEAST32_MIN_ (-2147483647L -1)
-// MSP430:INT_LEAST32_MAX_ 2147483647L
-// MSP430:UINT_LEAST32_MAX_ 4294967295UL
-// MSP430:INT_FAST32_MIN_ (-2147483647L -1)
-// MSP430:INT_FAST32_MAX_ 2147483647L
-// MSP430:UINT_FAST32_MAX_ 4294967295UL
-//
-// MSP430:INT64_MAX_ 9223372036854775807LL
-// MSP430:INT64_MIN_ (-9223372036854775807LL -1)
-// MSP430:UINT64_MAX_ 18446744073709551615ULL
-// MSP430:INT_LEAST64_MIN_ (-9223372036854775807LL -1)
-// MSP430:INT_LEAST64_MAX_ 9223372036854775807LL
-// MSP430:UINT_LEAST64_MAX_ 18446744073709551615ULL
-// MSP430:INT_FAST64_MIN_ (-9223372036854775807LL -1)
-// MSP430:INT_FAST64_MAX_ 9223372036854775807LL
-// MSP430:UINT_FAST64_MAX_ 18446744073709551615ULL
-//
-// MSP430:INTPTR_MIN_ (-32767 -1)
-// MSP430:INTPTR_MAX_ 32767
-// MSP430:UINTPTR_MAX_ 65535
-// MSP430:PTRDIFF_MIN_ (-32767 -1)
-// MSP430:PTRDIFF_MAX_ 32767
-// MSP430:SIZE_MAX_ 65535
-//
-// MSP430:INTMAX_MIN_ (-2147483647L -1)
-// MSP430:INTMAX_MAX_ 2147483647L
-// MSP430:UINTMAX_MAX_ 4294967295UL
-//
-// MSP430:SIG_ATOMIC_MIN_ (-2147483647L -1)
-// MSP430:SIG_ATOMIC_MAX_ 2147483647L
-// MSP430:WINT_MIN_ (-32767 -1)
-// MSP430:WINT_MAX_ 32767
-//
-// MSP430:WCHAR_MAX_ 32767
-// MSP430:WCHAR_MIN_ (-32767 -1)
-//
-// MSP430:INT8_C_(0) 0
-// MSP430:UINT8_C_(0) 0U
-// MSP430:INT16_C_(0) 0
-// MSP430:UINT16_C_(0) 0U
-// MSP430:INT32_C_(0) 0L
-// MSP430:UINT32_C_(0) 0UL
-// MSP430:INT64_C_(0) 0LL
-// MSP430:UINT64_C_(0) 0ULL
-//
-// MSP430:INTMAX_C_(0) 0L
-// MSP430:UINTMAX_C_(0) 0UL
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=powerpc64-none-none %s | FileCheck -check-prefix PPC64 %s
-//
-// PPC64:typedef signed long int int64_t;
-// PPC64:typedef unsigned long int uint64_t;
-// PPC64:typedef int64_t int_least64_t;
-// PPC64:typedef uint64_t uint_least64_t;
-// PPC64:typedef int64_t int_fast64_t;
-// PPC64:typedef uint64_t uint_fast64_t;
-//
-// PPC64:typedef signed int int32_t;
-// PPC64:typedef unsigned int uint32_t;
-// PPC64:typedef int32_t int_least32_t;
-// PPC64:typedef uint32_t uint_least32_t;
-// PPC64:typedef int32_t int_fast32_t;
-// PPC64:typedef uint32_t uint_fast32_t;
-//
-// PPC64:typedef signed short int16_t;
-// PPC64:typedef unsigned short uint16_t;
-// PPC64:typedef int16_t int_least16_t;
-// PPC64:typedef uint16_t uint_least16_t;
-// PPC64:typedef int16_t int_fast16_t;
-// PPC64:typedef uint16_t uint_fast16_t;
-//
-// PPC64:typedef signed char int8_t;
-// PPC64:typedef unsigned char uint8_t;
-// PPC64:typedef int8_t int_least8_t;
-// PPC64:typedef uint8_t uint_least8_t;
-// PPC64:typedef int8_t int_fast8_t;
-// PPC64:typedef uint8_t uint_fast8_t;
-//
-// PPC64:typedef int64_t intptr_t;
-// PPC64:typedef uint64_t uintptr_t;
-//
-// PPC64:typedef long int intmax_t;
-// PPC64:typedef long unsigned int uintmax_t;
-//
-// PPC64:INT8_MAX_ 127
-// PPC64:INT8_MIN_ (-127 -1)
-// PPC64:UINT8_MAX_ 255
-// PPC64:INT_LEAST8_MIN_ (-127 -1)
-// PPC64:INT_LEAST8_MAX_ 127
-// PPC64:UINT_LEAST8_MAX_ 255
-// PPC64:INT_FAST8_MIN_ (-127 -1)
-// PPC64:INT_FAST8_MAX_ 127
-// PPC64:UINT_FAST8_MAX_ 255
-//
-// PPC64:INT16_MAX_ 32767
-// PPC64:INT16_MIN_ (-32767 -1)
-// PPC64:UINT16_MAX_ 65535
-// PPC64:INT_LEAST16_MIN_ (-32767 -1)
-// PPC64:INT_LEAST16_MAX_ 32767
-// PPC64:UINT_LEAST16_MAX_ 65535
-// PPC64:INT_FAST16_MIN_ (-32767 -1)
-// PPC64:INT_FAST16_MAX_ 32767
-// PPC64:UINT_FAST16_MAX_ 65535
-//
-// PPC64:INT32_MAX_ 2147483647
-// PPC64:INT32_MIN_ (-2147483647 -1)
-// PPC64:UINT32_MAX_ 4294967295U
-// PPC64:INT_LEAST32_MIN_ (-2147483647 -1)
-// PPC64:INT_LEAST32_MAX_ 2147483647
-// PPC64:UINT_LEAST32_MAX_ 4294967295U
-// PPC64:INT_FAST32_MIN_ (-2147483647 -1)
-// PPC64:INT_FAST32_MAX_ 2147483647
-// PPC64:UINT_FAST32_MAX_ 4294967295U
-//
-// PPC64:INT64_MAX_ 9223372036854775807L
-// PPC64:INT64_MIN_ (-9223372036854775807L -1)
-// PPC64:UINT64_MAX_ 18446744073709551615UL
-// PPC64:INT_LEAST64_MIN_ (-9223372036854775807L -1)
-// PPC64:INT_LEAST64_MAX_ 9223372036854775807L
-// PPC64:UINT_LEAST64_MAX_ 18446744073709551615UL
-// PPC64:INT_FAST64_MIN_ (-9223372036854775807L -1)
-// PPC64:INT_FAST64_MAX_ 9223372036854775807L
-// PPC64:UINT_FAST64_MAX_ 18446744073709551615UL
-//
-// PPC64:INTPTR_MIN_ (-9223372036854775807L -1)
-// PPC64:INTPTR_MAX_ 9223372036854775807L
-// PPC64:UINTPTR_MAX_ 18446744073709551615UL
-// PPC64:PTRDIFF_MIN_ (-9223372036854775807L -1)
-// PPC64:PTRDIFF_MAX_ 9223372036854775807L
-// PPC64:SIZE_MAX_ 18446744073709551615UL
-//
-// PPC64:INTMAX_MIN_ (-9223372036854775807L -1)
-// PPC64:INTMAX_MAX_ 9223372036854775807L
-// PPC64:UINTMAX_MAX_ 18446744073709551615UL
-//
-// PPC64:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// PPC64:SIG_ATOMIC_MAX_ 2147483647
-// PPC64:WINT_MIN_ (-2147483647 -1)
-// PPC64:WINT_MAX_ 2147483647
-//
-// PPC64:WCHAR_MAX_ 2147483647
-// PPC64:WCHAR_MIN_ (-2147483647 -1)
-//
-// PPC64:INT8_C_(0) 0
-// PPC64:UINT8_C_(0) 0U
-// PPC64:INT16_C_(0) 0
-// PPC64:UINT16_C_(0) 0U
-// PPC64:INT32_C_(0) 0
-// PPC64:UINT32_C_(0) 0U
-// PPC64:INT64_C_(0) 0L
-// PPC64:UINT64_C_(0) 0UL
-//
-// PPC64:INTMAX_C_(0) 0L
-// PPC64:UINTMAX_C_(0) 0UL
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=powerpc-none-none %s | FileCheck -check-prefix PPC %s
-//
-//
-// PPC:typedef signed long long int int64_t;
-// PPC:typedef unsigned long long int uint64_t;
-// PPC:typedef int64_t int_least64_t;
-// PPC:typedef uint64_t uint_least64_t;
-// PPC:typedef int64_t int_fast64_t;
-// PPC:typedef uint64_t uint_fast64_t;
-//
-// PPC:typedef signed int int32_t;
-// PPC:typedef unsigned int uint32_t;
-// PPC:typedef int32_t int_least32_t;
-// PPC:typedef uint32_t uint_least32_t;
-// PPC:typedef int32_t int_fast32_t;
-// PPC:typedef uint32_t uint_fast32_t;
-//
-// PPC:typedef signed short int16_t;
-// PPC:typedef unsigned short uint16_t;
-// PPC:typedef int16_t int_least16_t;
-// PPC:typedef uint16_t uint_least16_t;
-// PPC:typedef int16_t int_fast16_t;
-// PPC:typedef uint16_t uint_fast16_t;
-//
-// PPC:typedef signed char int8_t;
-// PPC:typedef unsigned char uint8_t;
-// PPC:typedef int8_t int_least8_t;
-// PPC:typedef uint8_t uint_least8_t;
-// PPC:typedef int8_t int_fast8_t;
-// PPC:typedef uint8_t uint_fast8_t;
-//
-// PPC:typedef int32_t intptr_t;
-// PPC:typedef uint32_t uintptr_t;
-//
-// PPC:typedef long long int intmax_t;
-// PPC:typedef long long unsigned int uintmax_t;
-//
-// PPC:INT8_MAX_ 127
-// PPC:INT8_MIN_ (-127 -1)
-// PPC:UINT8_MAX_ 255
-// PPC:INT_LEAST8_MIN_ (-127 -1)
-// PPC:INT_LEAST8_MAX_ 127
-// PPC:UINT_LEAST8_MAX_ 255
-// PPC:INT_FAST8_MIN_ (-127 -1)
-// PPC:INT_FAST8_MAX_ 127
-// PPC:UINT_FAST8_MAX_ 255
-//
-// PPC:INT16_MAX_ 32767
-// PPC:INT16_MIN_ (-32767 -1)
-// PPC:UINT16_MAX_ 65535
-// PPC:INT_LEAST16_MIN_ (-32767 -1)
-// PPC:INT_LEAST16_MAX_ 32767
-// PPC:UINT_LEAST16_MAX_ 65535
-// PPC:INT_FAST16_MIN_ (-32767 -1)
-// PPC:INT_FAST16_MAX_ 32767
-// PPC:UINT_FAST16_MAX_ 65535
-//
-// PPC:INT32_MAX_ 2147483647
-// PPC:INT32_MIN_ (-2147483647 -1)
-// PPC:UINT32_MAX_ 4294967295U
-// PPC:INT_LEAST32_MIN_ (-2147483647 -1)
-// PPC:INT_LEAST32_MAX_ 2147483647
-// PPC:UINT_LEAST32_MAX_ 4294967295U
-// PPC:INT_FAST32_MIN_ (-2147483647 -1)
-// PPC:INT_FAST32_MAX_ 2147483647
-// PPC:UINT_FAST32_MAX_ 4294967295U
-//
-// PPC:INT64_MAX_ 9223372036854775807LL
-// PPC:INT64_MIN_ (-9223372036854775807LL -1)
-// PPC:UINT64_MAX_ 18446744073709551615ULL
-// PPC:INT_LEAST64_MIN_ (-9223372036854775807LL -1)
-// PPC:INT_LEAST64_MAX_ 9223372036854775807LL
-// PPC:UINT_LEAST64_MAX_ 18446744073709551615ULL
-// PPC:INT_FAST64_MIN_ (-9223372036854775807LL -1)
-// PPC:INT_FAST64_MAX_ 9223372036854775807LL
-// PPC:UINT_FAST64_MAX_ 18446744073709551615ULL
-//
-// PPC:INTPTR_MIN_ (-2147483647 -1)
-// PPC:INTPTR_MAX_ 2147483647
-// PPC:UINTPTR_MAX_ 4294967295U
-// PPC:PTRDIFF_MIN_ (-2147483647 -1)
-// PPC:PTRDIFF_MAX_ 2147483647
-// PPC:SIZE_MAX_ 4294967295U
-//
-// PPC:INTMAX_MIN_ (-9223372036854775807LL -1)
-// PPC:INTMAX_MAX_ 9223372036854775807LL
-// PPC:UINTMAX_MAX_ 18446744073709551615ULL
-//
-// PPC:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// PPC:SIG_ATOMIC_MAX_ 2147483647
-// PPC:WINT_MIN_ (-2147483647 -1)
-// PPC:WINT_MAX_ 2147483647
-//
-// PPC:WCHAR_MAX_ 2147483647
-// PPC:WCHAR_MIN_ (-2147483647 -1)
-//
-// PPC:INT8_C_(0) 0
-// PPC:UINT8_C_(0) 0U
-// PPC:INT16_C_(0) 0
-// PPC:UINT16_C_(0) 0U
-// PPC:INT32_C_(0) 0
-// PPC:UINT32_C_(0) 0U
-// PPC:INT64_C_(0) 0LL
-// PPC:UINT64_C_(0) 0ULL
-//
-// PPC:INTMAX_C_(0) 0LL
-// PPC:UINTMAX_C_(0) 0ULL
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=s390x-none-none %s | FileCheck -check-prefix S390X %s
-//
-// S390X:typedef signed long long int int64_t;
-// S390X:typedef unsigned long long int uint64_t;
-// S390X:typedef int64_t int_least64_t;
-// S390X:typedef uint64_t uint_least64_t;
-// S390X:typedef int64_t int_fast64_t;
-// S390X:typedef uint64_t uint_fast64_t;
-//
-// S390X:typedef signed int int32_t;
-// S390X:typedef unsigned int uint32_t;
-// S390X:typedef int32_t int_least32_t;
-// S390X:typedef uint32_t uint_least32_t;
-// S390X:typedef int32_t int_fast32_t;
-// S390X:typedef uint32_t uint_fast32_t;
-//
-// S390X:typedef signed short int16_t;
-// S390X:typedef unsigned short uint16_t;
-// S390X:typedef int16_t int_least16_t;
-// S390X:typedef uint16_t uint_least16_t;
-// S390X:typedef int16_t int_fast16_t;
-// S390X:typedef uint16_t uint_fast16_t;
-//
-// S390X:typedef signed char int8_t;
-// S390X:typedef unsigned char uint8_t;
-// S390X:typedef int8_t int_least8_t;
-// S390X:typedef uint8_t uint_least8_t;
-// S390X:typedef int8_t int_fast8_t;
-// S390X:typedef uint8_t uint_fast8_t;
-//
-// S390X:typedef int64_t intptr_t;
-// S390X:typedef uint64_t uintptr_t;
-//
-// S390X:typedef long long int intmax_t;
-// S390X:typedef long long unsigned int uintmax_t;
-//
-// S390X:INT8_MAX_ 127
-// S390X:INT8_MIN_ (-127 -1)
-// S390X:UINT8_MAX_ 255
-// S390X:INT_LEAST8_MIN_ (-127 -1)
-// S390X:INT_LEAST8_MAX_ 127
-// S390X:UINT_LEAST8_MAX_ 255
-// S390X:INT_FAST8_MIN_ (-127 -1)
-// S390X:INT_FAST8_MAX_ 127
-// S390X:UINT_FAST8_MAX_ 255
-//
-// S390X:INT16_MAX_ 32767
-// S390X:INT16_MIN_ (-32767 -1)
-// S390X:UINT16_MAX_ 65535
-// S390X:INT_LEAST16_MIN_ (-32767 -1)
-// S390X:INT_LEAST16_MAX_ 32767
-// S390X:UINT_LEAST16_MAX_ 65535
-// S390X:INT_FAST16_MIN_ (-32767 -1)
-// S390X:INT_FAST16_MAX_ 32767
-// S390X:UINT_FAST16_MAX_ 65535
-//
-// S390X:INT32_MAX_ 2147483647
-// S390X:INT32_MIN_ (-2147483647 -1)
-// S390X:UINT32_MAX_ 4294967295U
-// S390X:INT_LEAST32_MIN_ (-2147483647 -1)
-// S390X:INT_LEAST32_MAX_ 2147483647
-// S390X:UINT_LEAST32_MAX_ 4294967295U
-// S390X:INT_FAST32_MIN_ (-2147483647 -1)
-// S390X:INT_FAST32_MAX_ 2147483647
-// S390X:UINT_FAST32_MAX_ 4294967295U
-//
-// S390X:INT64_MAX_ 9223372036854775807L
-// S390X:INT64_MIN_ (-9223372036854775807LL -1)
-// S390X:UINT64_MAX_ 18446744073709551615UL
-// S390X:INT_LEAST64_MIN_ (-9223372036854775807LL -1)
-// S390X:INT_LEAST64_MAX_ 9223372036854775807L
-// S390X:UINT_LEAST64_MAX_ 18446744073709551615UL
-// S390X:INT_FAST64_MIN_ (-9223372036854775807LL -1)
-// S390X:INT_FAST64_MAX_ 9223372036854775807L
-// S390X:UINT_FAST64_MAX_ 18446744073709551615UL
-//
-// S390X:INTPTR_MIN_ (-9223372036854775807LL -1)
-// S390X:INTPTR_MAX_ 9223372036854775807L
-// S390X:UINTPTR_MAX_ 18446744073709551615UL
-// S390X:PTRDIFF_MIN_ (-9223372036854775807LL -1)
-// S390X:PTRDIFF_MAX_ 9223372036854775807L
-// S390X:SIZE_MAX_ 18446744073709551615UL
-//
-// S390X:INTMAX_MIN_ (-9223372036854775807LL -1)
-// S390X:INTMAX_MAX_ 9223372036854775807L
-// S390X:UINTMAX_MAX_ 18446744073709551615UL
-//
-// S390X:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// S390X:SIG_ATOMIC_MAX_ 2147483647
-// S390X:WINT_MIN_ (-2147483647 -1)
-// S390X:WINT_MAX_ 2147483647
-//
-// S390X:WCHAR_MAX_ 2147483647
-// S390X:WCHAR_MIN_ (-2147483647 -1)
-//
-// S390X:INT8_C_(0) 0
-// S390X:UINT8_C_(0) 0U
-// S390X:INT16_C_(0) 0
-// S390X:UINT16_C_(0) 0U
-// S390X:INT32_C_(0) 0
-// S390X:UINT32_C_(0) 0U
-// S390X:INT64_C_(0) 0L
-// S390X:UINT64_C_(0) 0UL
-//
-// S390X:INTMAX_C_(0) 0L
-// S390X:UINTMAX_C_(0) 0UL
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=sparc-none-none %s | FileCheck -check-prefix SPARC %s
-//
-// SPARC:typedef signed long long int int64_t;
-// SPARC:typedef unsigned long long int uint64_t;
-// SPARC:typedef int64_t int_least64_t;
-// SPARC:typedef uint64_t uint_least64_t;
-// SPARC:typedef int64_t int_fast64_t;
-// SPARC:typedef uint64_t uint_fast64_t;
-//
-// SPARC:typedef signed int int32_t;
-// SPARC:typedef unsigned int uint32_t;
-// SPARC:typedef int32_t int_least32_t;
-// SPARC:typedef uint32_t uint_least32_t;
-// SPARC:typedef int32_t int_fast32_t;
-// SPARC:typedef uint32_t uint_fast32_t;
-//
-// SPARC:typedef signed short int16_t;
-// SPARC:typedef unsigned short uint16_t;
-// SPARC:typedef int16_t int_least16_t;
-// SPARC:typedef uint16_t uint_least16_t;
-// SPARC:typedef int16_t int_fast16_t;
-// SPARC:typedef uint16_t uint_fast16_t;
-//
-// SPARC:typedef signed char int8_t;
-// SPARC:typedef unsigned char uint8_t;
-// SPARC:typedef int8_t int_least8_t;
-// SPARC:typedef uint8_t uint_least8_t;
-// SPARC:typedef int8_t int_fast8_t;
-// SPARC:typedef uint8_t uint_fast8_t;
-//
-// SPARC:typedef int32_t intptr_t;
-// SPARC:typedef uint32_t uintptr_t;
-//
-// SPARC:typedef long long int intmax_t;
-// SPARC:typedef long long unsigned int uintmax_t;
-//
-// SPARC:INT8_MAX_ 127
-// SPARC:INT8_MIN_ (-127 -1)
-// SPARC:UINT8_MAX_ 255
-// SPARC:INT_LEAST8_MIN_ (-127 -1)
-// SPARC:INT_LEAST8_MAX_ 127
-// SPARC:UINT_LEAST8_MAX_ 255
-// SPARC:INT_FAST8_MIN_ (-127 -1)
-// SPARC:INT_FAST8_MAX_ 127
-// SPARC:UINT_FAST8_MAX_ 255
-//
-// SPARC:INT16_MAX_ 32767
-// SPARC:INT16_MIN_ (-32767 -1)
-// SPARC:UINT16_MAX_ 65535
-// SPARC:INT_LEAST16_MIN_ (-32767 -1)
-// SPARC:INT_LEAST16_MAX_ 32767
-// SPARC:UINT_LEAST16_MAX_ 65535
-// SPARC:INT_FAST16_MIN_ (-32767 -1)
-// SPARC:INT_FAST16_MAX_ 32767
-// SPARC:UINT_FAST16_MAX_ 65535
-//
-// SPARC:INT32_MAX_ 2147483647
-// SPARC:INT32_MIN_ (-2147483647 -1)
-// SPARC:UINT32_MAX_ 4294967295U
-// SPARC:INT_LEAST32_MIN_ (-2147483647 -1)
-// SPARC:INT_LEAST32_MAX_ 2147483647
-// SPARC:UINT_LEAST32_MAX_ 4294967295U
-// SPARC:INT_FAST32_MIN_ (-2147483647 -1)
-// SPARC:INT_FAST32_MAX_ 2147483647
-// SPARC:UINT_FAST32_MAX_ 4294967295U
-//
-// SPARC:INT64_MAX_ 9223372036854775807LL
-// SPARC:INT64_MIN_ (-9223372036854775807LL -1)
-// SPARC:UINT64_MAX_ 18446744073709551615ULL
-// SPARC:INT_LEAST64_MIN_ (-9223372036854775807LL -1)
-// SPARC:INT_LEAST64_MAX_ 9223372036854775807LL
-// SPARC:UINT_LEAST64_MAX_ 18446744073709551615ULL
-// SPARC:INT_FAST64_MIN_ (-9223372036854775807LL -1)
-// SPARC:INT_FAST64_MAX_ 9223372036854775807LL
-// SPARC:UINT_FAST64_MAX_ 18446744073709551615ULL
-//
-// SPARC:INTPTR_MIN_ (-2147483647 -1)
-// SPARC:INTPTR_MAX_ 2147483647
-// SPARC:UINTPTR_MAX_ 4294967295U
-// SPARC:PTRDIFF_MIN_ (-2147483647 -1)
-// SPARC:PTRDIFF_MAX_ 2147483647
-// SPARC:SIZE_MAX_ 4294967295U
-//
-// SPARC:INTMAX_MIN_ (-9223372036854775807LL -1)
-// SPARC:INTMAX_MAX_ 9223372036854775807LL
-// SPARC:UINTMAX_MAX_ 18446744073709551615ULL
-//
-// SPARC:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// SPARC:SIG_ATOMIC_MAX_ 2147483647
-// SPARC:WINT_MIN_ (-2147483647 -1)
-// SPARC:WINT_MAX_ 2147483647
-//
-// SPARC:WCHAR_MAX_ 2147483647
-// SPARC:WCHAR_MIN_ (-2147483647 -1)
-//
-// SPARC:INT8_C_(0) 0
-// SPARC:UINT8_C_(0) 0U
-// SPARC:INT16_C_(0) 0
-// SPARC:UINT16_C_(0) 0U
-// SPARC:INT32_C_(0) 0
-// SPARC:UINT32_C_(0) 0U
-// SPARC:INT64_C_(0) 0LL
-// SPARC:UINT64_C_(0) 0ULL
-//
-// SPARC:INTMAX_C_(0) 0LL
-// SPARC:UINTMAX_C_(0) 0ULL
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=tce-none-none %s | FileCheck -check-prefix TCE %s
-//
-// TCE:typedef signed int int32_t;
-// TCE:typedef unsigned int uint32_t;
-// TCE:typedef int32_t int_least32_t;
-// TCE:typedef uint32_t uint_least32_t;
-// TCE:typedef int32_t int_fast32_t;
-// TCE:typedef uint32_t uint_fast32_t;
-//
-// TCE:typedef signed short int16_t;
-// TCE:typedef unsigned short uint16_t;
-// TCE:typedef int16_t int_least16_t;
-// TCE:typedef uint16_t uint_least16_t;
-// TCE:typedef int16_t int_fast16_t;
-// TCE:typedef uint16_t uint_fast16_t;
-//
-// TCE:typedef signed char int8_t;
-// TCE:typedef unsigned char uint8_t;
-// TCE:typedef int8_t int_least8_t;
-// TCE:typedef uint8_t uint_least8_t;
-// TCE:typedef int8_t int_fast8_t;
-// TCE:typedef uint8_t uint_fast8_t;
-//
-// TCE:typedef int32_t intptr_t;
-// TCE:typedef uint32_t uintptr_t;
-//
-// TCE:typedef long int intmax_t;
-// TCE:typedef long unsigned int uintmax_t;
-//
-// TCE:INT8_MAX_ 127
-// TCE:INT8_MIN_ (-127 -1)
-// TCE:UINT8_MAX_ 255
-// TCE:INT_LEAST8_MIN_ (-127 -1)
-// TCE:INT_LEAST8_MAX_ 127
-// TCE:UINT_LEAST8_MAX_ 255
-// TCE:INT_FAST8_MIN_ (-127 -1)
-// TCE:INT_FAST8_MAX_ 127
-// TCE:UINT_FAST8_MAX_ 255
-//
-// TCE:INT16_MAX_ 32767
-// TCE:INT16_MIN_ (-32767 -1)
-// TCE:UINT16_MAX_ 65535
-// TCE:INT_LEAST16_MIN_ (-32767 -1)
-// TCE:INT_LEAST16_MAX_ 32767
-// TCE:UINT_LEAST16_MAX_ 65535
-// TCE:INT_FAST16_MIN_ (-32767 -1)
-// TCE:INT_FAST16_MAX_ 32767
-// TCE:UINT_FAST16_MAX_ 65535
-//
-// TCE:INT32_MAX_ 2147483647
-// TCE:INT32_MIN_ (-2147483647 -1)
-// TCE:UINT32_MAX_ 4294967295U
-// TCE:INT_LEAST32_MIN_ (-2147483647 -1)
-// TCE:INT_LEAST32_MAX_ 2147483647
-// TCE:UINT_LEAST32_MAX_ 4294967295U
-// TCE:INT_FAST32_MIN_ (-2147483647 -1)
-// TCE:INT_FAST32_MAX_ 2147483647
-// TCE:UINT_FAST32_MAX_ 4294967295U
-//
-// TCE:INT64_MAX_ INT64_MAX
-// TCE:INT64_MIN_ INT64_MIN
-// TCE:UINT64_MAX_ UINT64_MAX
-// TCE:INT_LEAST64_MIN_ INT_LEAST64_MIN
-// TCE:INT_LEAST64_MAX_ INT_LEAST64_MAX
-// TCE:UINT_LEAST64_MAX_ UINT_LEAST64_MAX
-// TCE:INT_FAST64_MIN_ INT_FAST64_MIN
-// TCE:INT_FAST64_MAX_ INT_FAST64_MAX
-// TCE:UINT_FAST64_MAX_ UINT_FAST64_MAX
-//
-// TCE:INTPTR_MIN_ (-2147483647 -1)
-// TCE:INTPTR_MAX_ 2147483647
-// TCE:UINTPTR_MAX_ 4294967295U
-// TCE:PTRDIFF_MIN_ (-2147483647 -1)
-// TCE:PTRDIFF_MAX_ 2147483647
-// TCE:SIZE_MAX_ 4294967295U
-//
-// TCE:INTMAX_MIN_ (-2147483647 -1)
-// TCE:INTMAX_MAX_ 2147483647
-// TCE:UINTMAX_MAX_ 4294967295U
-//
-// TCE:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// TCE:SIG_ATOMIC_MAX_ 2147483647
-// TCE:WINT_MIN_ (-2147483647 -1)
-// TCE:WINT_MAX_ 2147483647
-//
-// TCE:WCHAR_MAX_ 2147483647
-// TCE:WCHAR_MIN_ (-2147483647 -1)
-//
-// TCE:INT8_C_(0) 0
-// TCE:UINT8_C_(0) 0U
-// TCE:INT16_C_(0) 0
-// TCE:UINT16_C_(0) 0U
-// TCE:INT32_C_(0) 0
-// TCE:UINT32_C_(0) 0U
-// TCE:INT64_C_(0) INT64_C(0)
-// TCE:UINT64_C_(0) UINT64_C(0)
-//
-// TCE:INTMAX_C_(0) 0
-// TCE:UINTMAX_C_(0) 0U
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=x86_64-none-none %s | FileCheck -check-prefix X86_64 %s
-//
-//
-// X86_64:typedef signed long int int64_t;
-// X86_64:typedef unsigned long int uint64_t;
-// X86_64:typedef int64_t int_least64_t;
-// X86_64:typedef uint64_t uint_least64_t;
-// X86_64:typedef int64_t int_fast64_t;
-// X86_64:typedef uint64_t uint_fast64_t;
-//
-// X86_64:typedef signed int int32_t;
-// X86_64:typedef unsigned int uint32_t;
-// X86_64:typedef int32_t int_least32_t;
-// X86_64:typedef uint32_t uint_least32_t;
-// X86_64:typedef int32_t int_fast32_t;
-// X86_64:typedef uint32_t uint_fast32_t;
-//
-// X86_64:typedef signed short int16_t;
-// X86_64:typedef unsigned short uint16_t;
-// X86_64:typedef int16_t int_least16_t;
-// X86_64:typedef uint16_t uint_least16_t;
-// X86_64:typedef int16_t int_fast16_t;
-// X86_64:typedef uint16_t uint_fast16_t;
-//
-// X86_64:typedef signed char int8_t;
-// X86_64:typedef unsigned char uint8_t;
-// X86_64:typedef int8_t int_least8_t;
-// X86_64:typedef uint8_t uint_least8_t;
-// X86_64:typedef int8_t int_fast8_t;
-// X86_64:typedef uint8_t uint_fast8_t;
-//
-// X86_64:typedef int64_t intptr_t;
-// X86_64:typedef uint64_t uintptr_t;
-//
-// X86_64:typedef long int intmax_t;
-// X86_64:typedef long unsigned int uintmax_t;
-//
-// X86_64:INT8_MAX_ 127
-// X86_64:INT8_MIN_ (-127 -1)
-// X86_64:UINT8_MAX_ 255
-// X86_64:INT_LEAST8_MIN_ (-127 -1)
-// X86_64:INT_LEAST8_MAX_ 127
-// X86_64:UINT_LEAST8_MAX_ 255
-// X86_64:INT_FAST8_MIN_ (-127 -1)
-// X86_64:INT_FAST8_MAX_ 127
-// X86_64:UINT_FAST8_MAX_ 255
-//
-// X86_64:INT16_MAX_ 32767
-// X86_64:INT16_MIN_ (-32767 -1)
-// X86_64:UINT16_MAX_ 65535
-// X86_64:INT_LEAST16_MIN_ (-32767 -1)
-// X86_64:INT_LEAST16_MAX_ 32767
-// X86_64:UINT_LEAST16_MAX_ 65535
-// X86_64:INT_FAST16_MIN_ (-32767 -1)
-// X86_64:INT_FAST16_MAX_ 32767
-// X86_64:UINT_FAST16_MAX_ 65535
-//
-// X86_64:INT32_MAX_ 2147483647
-// X86_64:INT32_MIN_ (-2147483647 -1)
-// X86_64:UINT32_MAX_ 4294967295U
-// X86_64:INT_LEAST32_MIN_ (-2147483647 -1)
-// X86_64:INT_LEAST32_MAX_ 2147483647
-// X86_64:UINT_LEAST32_MAX_ 4294967295U
-// X86_64:INT_FAST32_MIN_ (-2147483647 -1)
-// X86_64:INT_FAST32_MAX_ 2147483647
-// X86_64:UINT_FAST32_MAX_ 4294967295U
-//
-// X86_64:INT64_MAX_ 9223372036854775807L
-// X86_64:INT64_MIN_ (-9223372036854775807L -1)
-// X86_64:UINT64_MAX_ 18446744073709551615UL
-// X86_64:INT_LEAST64_MIN_ (-9223372036854775807L -1)
-// X86_64:INT_LEAST64_MAX_ 9223372036854775807L
-// X86_64:UINT_LEAST64_MAX_ 18446744073709551615UL
-// X86_64:INT_FAST64_MIN_ (-9223372036854775807L -1)
-// X86_64:INT_FAST64_MAX_ 9223372036854775807L
-// X86_64:UINT_FAST64_MAX_ 18446744073709551615UL
-//
-// X86_64:INTPTR_MIN_ (-9223372036854775807L -1)
-// X86_64:INTPTR_MAX_ 9223372036854775807L
-// X86_64:UINTPTR_MAX_ 18446744073709551615UL
-// X86_64:PTRDIFF_MIN_ (-9223372036854775807L -1)
-// X86_64:PTRDIFF_MAX_ 9223372036854775807L
-// X86_64:SIZE_MAX_ 18446744073709551615UL
-//
-// X86_64:INTMAX_MIN_ (-9223372036854775807L -1)
-// X86_64:INTMAX_MAX_ 9223372036854775807L
-// X86_64:UINTMAX_MAX_ 18446744073709551615UL
-//
-// X86_64:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// X86_64:SIG_ATOMIC_MAX_ 2147483647
-// X86_64:WINT_MIN_ (-2147483647 -1)
-// X86_64:WINT_MAX_ 2147483647
-//
-// X86_64:WCHAR_MAX_ 2147483647
-// X86_64:WCHAR_MIN_ (-2147483647 -1)
-//
-// X86_64:INT8_C_(0) 0
-// X86_64:UINT8_C_(0) 0U
-// X86_64:INT16_C_(0) 0
-// X86_64:UINT16_C_(0) 0U
-// X86_64:INT32_C_(0) 0
-// X86_64:UINT32_C_(0) 0U
-// X86_64:INT64_C_(0) 0L
-// X86_64:UINT64_C_(0) 0UL
-//
-// X86_64:INTMAX_C_(0) 0L
-// X86_64:UINTMAX_C_(0) 0UL
-//
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=x86_64-pc-linux-gnu %s | FileCheck -check-prefix X86_64_LINUX %s
-//
-// X86_64_LINUX:WINT_MIN_ 0U
-// X86_64_LINUX:WINT_MAX_ 4294967295U
-//
-//
-// RUN: %clang_cc1 -E -ffreestanding -triple=i386-mingw32 %s | FileCheck -check-prefix I386_MINGW32 %s
-//
-// I386_MINGW32:WCHAR_MAX_ 65535U
-// I386_MINGW32:WCHAR_MIN_ 0U
-//
-//
-// stdint.h forms several macro definitions by pasting together identifiers
-// to form names (eg. int32_t is formed from int ## 32 ## _t). The following 
-// case tests that these joining operations are performed correctly even if
-// the identifiers used in the operations (int, uint, _t, INT, UINT, _MIN,
-// _MAX, and _C(v)) are themselves macros.
-//
-// RUN: %clang_cc1 -E -ffreestanding -U__UINTMAX_TYPE__ -U__INTMAX_TYPE__ -Dint=a -Duint=b -D_t=c -DINT=d -DUINT=e -D_MIN=f -D_MAX=g '-D_C(v)=h' -triple=i386-none-none %s | FileCheck -check-prefix JOIN %s
-// JOIN:typedef int32_t intptr_t;
-// JOIN:typedef uint32_t uintptr_t;
-// JOIN:typedef __INTMAX_TYPE__ intmax_t;
-// JOIN:typedef __UINTMAX_TYPE__ uintmax_t;
-// JOIN:INTPTR_MIN_ (-2147483647 -1)
-// JOIN:INTPTR_MAX_ 2147483647
-// JOIN:UINTPTR_MAX_ 4294967295U
-// JOIN:PTRDIFF_MIN_ (-2147483647 -1)
-// JOIN:PTRDIFF_MAX_ 2147483647
-// JOIN:SIZE_MAX_ 4294967295U
-// JOIN:INTMAX_MIN_ (-9223372036854775807LL -1)
-// JOIN:INTMAX_MAX_ 9223372036854775807LL
-// JOIN:UINTMAX_MAX_ 18446744073709551615ULL
-// JOIN:SIG_ATOMIC_MIN_ (-2147483647 -1)
-// JOIN:SIG_ATOMIC_MAX_ 2147483647
-// JOIN:WINT_MIN_ (-2147483647 -1)
-// JOIN:WINT_MAX_ 2147483647
-// JOIN:WCHAR_MAX_ 2147483647
-// JOIN:WCHAR_MIN_ (-2147483647 -1)
-// JOIN:INTMAX_C_(0) 0LL
-// JOIN:UINTMAX_C_(0) 0ULL
-
-#include <stdint.h>
-
-INT8_MAX_ INT8_MAX
-INT8_MIN_ INT8_MIN
-UINT8_MAX_ UINT8_MAX
-INT_LEAST8_MIN_ INT_LEAST8_MIN
-INT_LEAST8_MAX_ INT_LEAST8_MAX
-UINT_LEAST8_MAX_ UINT_LEAST8_MAX
-INT_FAST8_MIN_ INT_FAST8_MIN
-INT_FAST8_MAX_ INT_FAST8_MAX
-UINT_FAST8_MAX_ UINT_FAST8_MAX
-
-INT16_MAX_ INT16_MAX
-INT16_MIN_ INT16_MIN
-UINT16_MAX_ UINT16_MAX
-INT_LEAST16_MIN_ INT_LEAST16_MIN
-INT_LEAST16_MAX_ INT_LEAST16_MAX
-UINT_LEAST16_MAX_ UINT_LEAST16_MAX
-INT_FAST16_MIN_ INT_FAST16_MIN
-INT_FAST16_MAX_ INT_FAST16_MAX
-UINT_FAST16_MAX_ UINT_FAST16_MAX
-
-INT32_MAX_ INT32_MAX
-INT32_MIN_ INT32_MIN
-UINT32_MAX_ UINT32_MAX
-INT_LEAST32_MIN_ INT_LEAST32_MIN
-INT_LEAST32_MAX_ INT_LEAST32_MAX
-UINT_LEAST32_MAX_ UINT_LEAST32_MAX
-INT_FAST32_MIN_ INT_FAST32_MIN
-INT_FAST32_MAX_ INT_FAST32_MAX
-UINT_FAST32_MAX_ UINT_FAST32_MAX
-
-INT64_MAX_ INT64_MAX
-INT64_MIN_ INT64_MIN
-UINT64_MAX_ UINT64_MAX
-INT_LEAST64_MIN_ INT_LEAST64_MIN
-INT_LEAST64_MAX_ INT_LEAST64_MAX
-UINT_LEAST64_MAX_ UINT_LEAST64_MAX
-INT_FAST64_MIN_ INT_FAST64_MIN
-INT_FAST64_MAX_ INT_FAST64_MAX
-UINT_FAST64_MAX_ UINT_FAST64_MAX
-
-INTPTR_MIN_ INTPTR_MIN
-INTPTR_MAX_ INTPTR_MAX
-UINTPTR_MAX_ UINTPTR_MAX
-PTRDIFF_MIN_ PTRDIFF_MIN
-PTRDIFF_MAX_ PTRDIFF_MAX
-SIZE_MAX_ SIZE_MAX
-
-INTMAX_MIN_ INTMAX_MIN
-INTMAX_MAX_ INTMAX_MAX
-UINTMAX_MAX_ UINTMAX_MAX
-
-SIG_ATOMIC_MIN_ SIG_ATOMIC_MIN
-SIG_ATOMIC_MAX_ SIG_ATOMIC_MAX
-WINT_MIN_ WINT_MIN
-WINT_MAX_ WINT_MAX
-
-WCHAR_MAX_ WCHAR_MAX
-WCHAR_MIN_ WCHAR_MIN
-
-INT8_C_(0) INT8_C(0)
-UINT8_C_(0) UINT8_C(0)
-INT16_C_(0) INT16_C(0)
-UINT16_C_(0) UINT16_C(0)
-INT32_C_(0) INT32_C(0)
-UINT32_C_(0) UINT32_C(0)
-INT64_C_(0) INT64_C(0)
-UINT64_C_(0) UINT64_C(0)
-
-INTMAX_C_(0) INTMAX_C(0)
-UINTMAX_C_(0) UINTMAX_C(0)

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/stringize_misc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/stringize_misc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/stringize_misc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
-
-#define M(x, y) #x #y
-
-M( f(1, 2), g((x=y++, y))) 
-// CHECK: "f(1, 2)" "g((x=y++, y))"
-
-M( {a=1 , b=2;} ) /* A semicolon is not a comma */ 
-// CHECK: "{a=1" "b=2;}"
-
-M( <, [ ) /* Passes the arguments < and [ */ 
-// CHECK: "<" "["
-
-M( (,), (...) ) /* Passes the arguments (,) and (...) */ 
-// CHECK: "(,)" "(...)"
-
-#define START_END(start, end) start c=3; end 
-
-START_END( {a=1 , b=2;} ) /* braces are not parentheses */ 
-// CHECK: {a=1 c=3; b=2;}
-
-/* 
- * To pass a comma token as an argument it is 
- * necessary to write: 
- */ 
-#define COMMA , 
- 
-M(a COMMA b, (a, b)) 
-// CHECK: "a COMMA b" "(a, b)"
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/stringize_space.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/stringize_space.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/stringize_space.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -E %s | FileCheck --strict-whitespace %s
-
-#define A(b) -#b  ,  - #b  ,  -# b  ,  - # b
-A()
-
-// CHECK: {{^}}-"" , - "" , -"" , - ""{{$}}
-
-
-#define t(x) #x
-t(a
-c)
-
-// CHECK: {{^}}"a c"{{$}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/traditional-cpp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/traditional-cpp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/traditional-cpp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-/* Clang supports a very limited subset of -traditional-cpp, basically we only
- * intend to add support for things that people actually rely on when doing
- * things like using /usr/bin/cpp to preprocess non-source files. */
-
-/*
- RUN: %clang_cc1 -traditional-cpp %s -E -o %t
- RUN: FileCheck -strict-whitespace < %t %s
- RUN: %clang_cc1 -traditional-cpp %s -E -C | FileCheck -check-prefix=CHECK-COMMENTS %s
-*/
-
-/* -traditional-cpp should eliminate all C89 comments. */
-/* CHECK-NOT: /*
- * CHECK-COMMENTS: {{^}}/* -traditional-cpp should eliminate all C89 comments. *{{/$}}
- */
-
-/* CHECK: {{^}}foo // bar{{$}}
- */
-foo // bar
-
-
-/* The lines in this file contain hard tab characters and trailing whitespace; 
- * do not change them! */
-
-/* CHECK: {{^}}	indented!{{$}}
- * CHECK: {{^}}tab	separated	values{{$}}
- */
-	indented!
-tab	separated	values
-
-#define bracket(x) >>>x<<<
-bracket(|  spaces  |)
-/* CHECK: {{^}}>>>|  spaces  |<<<{{$}}
- */
-
-/* This is still a preprocessing directive. */
-# define foo bar
-foo!
--
-	foo!	foo!	
-/* CHECK: {{^}}bar!{{$}}
- * CHECK: {{^}}	bar!	bar!	{{$}}
- */
-
-/* Deliberately check a leading newline with spaces on that line. */
-   
-# define foo bar
-foo!
--
-	foo!	foo!	
-/* CHECK: {{^}}bar!{{$}}
- * CHECK: {{^}}	bar!	bar!	{{$}}
- */
-
-/* FIXME: -traditional-cpp should not consider this a preprocessing directive
- * because the # isn't in the first column.
- */
- #define foo2 bar
-foo2!
-/* If this were working, both of these checks would be on.
- * CHECK-NOT: {{^}} #define foo2 bar{{$}}
- * CHECK-NOT: {{^}}foo2!{{$}}
- */
-
-/* FIXME: -traditional-cpp should not homogenize whitespace in macros.
- */
-#define bracket2(x) >>>  x  <<<
-bracket2(spaces)
-/* If this were working, this check would be on.
- * CHECK-NOT: {{^}}>>>  spaces  <<<{{$}}
- */
-
-
-/* Check that #if 0 blocks work as expected */
-#if 0
-#error "this is not an error"
-
-#if 1
-a b c in skipped block
-#endif
-
-/* Comments are whitespace too */
-
-#endif
-/* CHECK-NOT: {{^}}a b c in skipped block{{$}}
- * CHECK-NOT: {{^}}/* Comments are whitespace too
- */
-
-Preserve URLs: http://clang.llvm.org
-/* CHECK: {{^}}Preserve URLs: http://clang.llvm.org{{$}}
- */

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/ucn-allowed-chars.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/ucn-allowed-chars.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/ucn-allowed-chars.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -std=c99 -verify
-// RUN: %clang_cc1 %s -fsyntax-only -std=c11 -Wc99-compat -verify
-// RUN: %clang_cc1 %s -fsyntax-only -x c++ -std=c++03 -Wc++11-compat -verify
-// RUN: %clang_cc1 %s -fsyntax-only -x c++ -std=c++11 -Wc++98-compat -verify
-
-// Identifier characters
-extern char a\u01F6; // C11, C++11
-extern char a\u00AA; // C99, C11, C++11
-extern char a\u0384; // C++03, C11, C++11
-extern char a\u0E50; // C99, C++03, C11, C++11
-extern char a\uFFFF; // none
-
-
-
-
-
-// Identifier initial characters
-extern char \u0E50; // C++03, C11, C++11
-extern char \u0300; // disallowed initially in C11/C++11, always in C99/C++03
-
-
-
-
-
-
-
-
-// Disallowed everywhere
-#define A \u0000 // expected-error{{control character}}
-#define B \u001F // expected-error{{control character}}
-#define C \u007F // expected-error{{control character}}
-#define D \u009F // expected-error{{control character}}
-#define E \uD800 // C++03 allows UCNs representing surrogate characters!
-
-
-
-
-
-
-#if __cplusplus
-# if __cplusplus >= 201103L
-// C++11
-// expected-warning at 7 {{using this character in an identifier is incompatible with C++98}}
-// expected-warning at 8 {{using this character in an identifier is incompatible with C++98}}
-// expected-error at 11 {{expected ';'}}
-// expected-error at 19 {{expected unqualified-id}}
-// expected-error at 33 {{invalid universal character}}
-
-# else
-// C++03
-// expected-error at 7 {{expected ';'}}
-// expected-error at 8 {{expected ';'}}
-// expected-error at 11 {{expected ';'}}
-// expected-error at 19 {{expected unqualified-id}}
-// expected-warning at 33 {{universal character name refers to a surrogate character}}
-
-# endif
-#else
-# if __STDC_VERSION__ >= 201112L
-// C11
-// expected-warning at 7 {{using this character in an identifier is incompatible with C99}}
-// expected-warning at 9 {{using this character in an identifier is incompatible with C99}}
-// expected-error at 11 {{expected ';'}}
-// expected-warning at 18 {{starting an identifier with this character is incompatible with C99}}
-// expected-error at 19 {{expected identifier}}
-// expected-error at 33 {{invalid universal character}}
-
-# else
-// C99
-// expected-error at 7 {{expected ';'}}
-// expected-error at 9 {{expected ';'}}
-// expected-error at 11 {{expected ';'}}
-// expected-error at 18 {{expected identifier}}
-// expected-error at 19 {{expected identifier}}
-// expected-error at 33 {{invalid universal character}}
-
-# endif
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/ucn-pp-identifier.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/ucn-pp-identifier.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/ucn-pp-identifier.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,106 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -std=c99 -pedantic -verify -Wundef
-// RUN: %clang_cc1 %s -fsyntax-only -x c++ -pedantic -verify -Wundef
-// RUN: %clang_cc1 %s -fsyntax-only -std=c99 -pedantic -Wundef 2>&1 | FileCheck -strict-whitespace %s
-
-#define \u00FC
-#define a\u00FD() 0
-#ifndef \u00FC
-#error "This should never happen"
-#endif
-
-#if a\u00FD()
-#error "This should never happen"
-#endif
-
-#if a\U000000FD()
-#error "This should never happen"
-#endif
-
-#if \uarecool // expected-warning{{incomplete universal character name; treating as '\' followed by identifier}} expected-error {{invalid token at start of a preprocessor expression}}
-#endif
-#if \uwerecool // expected-warning{{\u used with no following hex digits; treating as '\' followed by identifier}} expected-error {{invalid token at start of a preprocessor expression}}
-#endif
-#if \U0001000  // expected-warning{{incomplete universal character name; treating as '\' followed by identifier}} expected-error {{invalid token at start of a preprocessor expression}}
-#endif
-
-// Make sure we reject disallowed UCNs
-#define \ufffe // expected-error {{macro names must be identifiers}}
-#define \U10000000  // expected-error {{macro names must be identifiers}}
-#define \u0061  // expected-error {{character 'a' cannot be specified by a universal character name}} expected-error {{macro names must be identifiers}}
-
-// FIXME: Not clear what our behavior should be here; \u0024 is "$".
-#define a\u0024  // expected-warning {{whitespace}}
-
-#if \u0110 // expected-warning {{is not defined, evaluates to 0}}
-#endif
-
-
-#define \u0110 1 / 0
-#if \u0110 // expected-error {{division by zero in preprocessor expression}}
-#endif
-
-#define STRINGIZE(X) # X
-
-extern int check_size[sizeof(STRINGIZE(\u0112)) == 3 ? 1 : -1];
-
-// Check that we still diagnose disallowed UCNs in #if 0 blocks.
-// C99 5.1.1.2p1 and C++11 [lex.phases]p1 dictate that preprocessor tokens are
-// formed before directives are parsed.
-// expected-error at +4 {{character 'a' cannot be specified by a universal character name}}
-#if 0
-#define \ufffe // okay
-#define \U10000000 // okay
-#define \u0061 // error, but -verify only looks at comments outside #if 0
-#endif
-
-
-// A UCN formed by token pasting is undefined in both C99 and C++.
-// Right now we don't do anything special, which causes us to coincidentally
-// accept the first case below but reject the second two.
-#define PASTE(A, B) A ## B
-extern int PASTE(\, u00FD);
-extern int PASTE(\u, 00FD); // expected-warning{{\u used with no following hex digits}}
-extern int PASTE(\u0, 0FD); // expected-warning{{incomplete universal character name}}
-#ifdef __cplusplus
-// expected-error at -3 {{expected unqualified-id}}
-// expected-error at -3 {{expected unqualified-id}}
-#else
-// expected-error at -6 {{expected identifier}}
-// expected-error at -6 {{expected identifier}}
-#endif
-
-
-// A UCN produced by line splicing is valid in C99 but undefined in C++.
-// Since undefined behavior can do anything including working as intended,
-// we just accept it in C++ as well.;
-#define newline_1_\u00F\
-C 1
-#define newline_2_\u00\
-F\
-C 1
-#define newline_3_\u\
-00\
-FC 1
-#define newline_4_\\
-u00FC 1
-#define newline_5_\\
-u\
-\
-0\
-0\
-F\
-C 1
-
-#if (newline_1_\u00FC && newline_2_\u00FC && newline_3_\u00FC && \
-     newline_4_\u00FC && newline_5_\u00FC)
-#else
-#error "Line splicing failed to produce UCNs"
-#endif
-
-
-#define capital_u_\U00FC
-// expected-warning at -1 {{incomplete universal character name}} expected-note at -1 {{did you mean to use '\u'?}} expected-warning at -1 {{whitespace}}
-// CHECK: note: did you mean to use '\u'?
-// CHECK-NEXT:   #define capital_u_\U00FC
-// CHECK-NEXT: {{^                   \^}}
-// CHECK-NEXT: {{^                   u}}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/undef-error.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/undef-error.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/undef-error.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -pedantic-errors -Wno-empty-translation-unit -verify 
-// PR2045
-
-#define b
-/* expected-error {{extra tokens at end of #undef directive}} */ #undef a b

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/unterminated.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/unterminated.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/unterminated.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -E -verify %s
-// PR3096
-#ifdef FOO // expected-error {{unterminated conditional directive}}
-/* /* */
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/user_defined_system_framework.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/user_defined_system_framework.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/user_defined_system_framework.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -F %S/Inputs -Wsign-conversion -verify %s
-// expected-no-diagnostics
-
-// Check that TestFramework is treated as a system header.
-#include <TestFramework/TestFramework.h>
-
-int f1() {
-  return test_framework_func(1) + another_test_framework_func(2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/utf8-allowed-chars.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/utf8-allowed-chars.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/utf8-allowed-chars.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -std=c99 -verify
-// RUN: %clang_cc1 %s -fsyntax-only -std=c11 -Wc99-compat -verify
-// RUN: %clang_cc1 %s -fsyntax-only -x c++ -std=c++03 -Wc++11-compat -verify
-// RUN: %clang_cc1 %s -fsyntax-only -x c++ -std=c++11 -Wc++98-compat -verify
-
-// Note: This file contains Unicode characters; please do not remove them!
-
-// Identifier characters
-extern char aǶ; // C11, C++11
-extern char aª; // C99, C11, C++11
-extern char a΄; // C++03, C11, C++11
-extern char a๐; // C99, C++03, C11, C++11
-extern char a﹅; // none
-extern char x̀; // C11, C++11. Note that this does not have a composed form.
-
-
-
-
-// Identifier initial characters
-extern char ๐; // C++03, C11, C++11
-extern char ̀; // disallowed initially in C11/C++11, always in C99/C++03
-
-
-
-
-
-
-
-
-#if __cplusplus
-# if __cplusplus >= 201103L
-// C++11
-// expected-warning at 9 {{using this character in an identifier is incompatible with C++98}}
-// expected-warning at 10 {{using this character in an identifier is incompatible with C++98}}
-// expected-error at 13 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-warning at 14 {{using this character in an identifier is incompatible with C++98}}
-// expected-error at 21 {{expected unqualified-id}}
-
-# else
-// C++03
-// expected-error at 9 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-error at 10 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-error at 13 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-error at 14 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-error at 21 {{non-ASCII characters are not allowed outside of literals and identifiers}} expected-warning at 21 {{declaration does not declare anything}}
-
-# endif
-#else
-# if __STDC_VERSION__ >= 201112L
-// C11
-// expected-warning at 9 {{using this character in an identifier is incompatible with C99}}
-// expected-warning at 11 {{using this character in an identifier is incompatible with C99}}
-// expected-error at 13 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-warning at 14 {{using this character in an identifier is incompatible with C99}}
-// expected-warning at 20 {{starting an identifier with this character is incompatible with C99}}
-// expected-error at 21 {{expected identifier}}
-
-# else
-// C99
-// expected-error at 9 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-error at 11 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-error at 13 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-error at 14 {{non-ASCII characters are not allowed outside of literals and identifiers}}
-// expected-error at 20 {{expected identifier}}
-// expected-error at 21 {{non-ASCII characters are not allowed outside of literals and identifiers}} expected-warning at 21 {{declaration does not declare anything}}
-
-# endif
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-disabled-macro-expansion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-disabled-macro-expansion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-disabled-macro-expansion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 %s -E -Wdisabled-macro-expansion -verify
-
-#define p p
-
-#define a b
-#define b a
-
-#define f(a) a
-
-#define g(b) a
-
-#define h(x) i(x)
-#define i(y) i(y)
-
-#define c(x) x(0)
-
-#define y(x) y
-#define z(x) (z)(x)
-
-p // no warning
-
-a // expected-warning {{recursive macro}}
-
-f(2)
-
-g(3) // expected-warning {{recursive macro}}
-
-h(0) // expected-warning {{recursive macro}}
-
-c(c) // expected-warning {{recursive macro}}
-
-y(5) // expected-warning {{recursive macro}}
-
-z(z) // ok
-

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-macro-unused.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-macro-unused.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-macro-unused.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -Wunused-macros -Dfoo -Dfoo -verify
-
-#include "warn-macro-unused.h"
-
-#define unused // expected-warning {{macro is not used}}
-#define unused
-unused
-
-// rdar://9745065
-#undef unused_from_header // no warning

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-macro-unused.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-macro-unused.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/warn-macro-unused.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-#define unused_from_header

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/warning_tests.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/warning_tests.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/warning_tests.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-#ifndef __has_warning
-#error Should have __has_warning
-#endif
-
-#if __has_warning("not valid") // expected-warning {{__has_warning expected option name}}
-#endif
-
-// expected-warning at +2 {{Should have -Wparentheses}}
-#if __has_warning("-Wparentheses")
-#warning Should have -Wparentheses
-#endif
-
-// expected-error at +2 {{expected string literal in '__has_warning'}}
-// expected-error at +1 {{expected value in expression}}
-#if __has_warning(-Wfoo)
-#endif
-
-// expected-warning at +3 {{Not a valid warning flag}}
-#if __has_warning("-Wnot-a-valid-warning-flag-at-all")
-#else
-#warning Not a valid warning flag
-#endif
-
-// expected-error at +2 {{builtin warning check macro requires a parenthesized string}}
-// expected-error at +1 {{invalid token}}
-#if __has_warning "not valid"
-#endif
-
-// Macro expansion does not occur in the parameter to __has_warning
-// (as is also expected behaviour for ordinary macros), so the
-// following should not expand:
-
-#define MY_ALIAS "-Wparentheses"
-
-// expected-error at +1 2{{expected}}
-#if __has_warning(MY_ALIAS)
-#error Alias expansion not allowed
-#endif
-
-// But deferring should expand:
-#define HAS_WARNING(X) __has_warning(X)
-
-#if !HAS_WARNING(MY_ALIAS)
-#error Expansion should have occurred
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Preprocessor/x86_target_features.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Preprocessor/x86_target_features.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Preprocessor/x86_target_features.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang -target i386-unknown-unknown -march=core2 -msse4 -x c -E -dM -o %t %s
-// RUN: grep '#define __SSE2_MATH__ 1' %t
-// RUN: grep '#define __SSE2__ 1' %t
-// RUN: grep '#define __SSE3__ 1' %t
-// RUN: grep '#define __SSE4_1__ 1' %t
-// RUN: grep '#define __SSE4_2__ 1' %t
-// RUN: grep '#define __SSE_MATH__ 1' %t
-// RUN: grep '#define __SSE__ 1' %t
-// RUN: grep '#define __SSSE3__ 1' %t
-
-// RUN: %clang -target i386-unknown-unknown -march=core2 -msse4 -mno-sse2 -x c -E -dM -o %t %s
-// RUN: grep '#define __SSE2_MATH__ 1' %t | count 0
-// RUN: grep '#define __SSE2__ 1' %t | count 0
-// RUN: grep '#define __SSE3__ 1' %t | count 0
-// RUN: grep '#define __SSE4_1__ 1' %t | count 0
-// RUN: grep '#define __SSE4_2__ 1' %t | count 0
-// RUN: grep '#define __SSE_MATH__ 1' %t
-// RUN: grep '#define __SSE__ 1' %t
-// RUN: grep '#define __SSSE3__ 1' %t | count 0
-
-// RUN: %clang -target i386-unknown-unknown -march=pentium-m -x c -E -dM -o %t %s
-// RUN: grep '#define __SSE2_MATH__ 1' %t
-// RUN: grep '#define __SSE2__ 1' %t
-// RUN: grep '#define __SSE3__ 1' %t | count 0
-// RUN: grep '#define __SSE4_1__ 1' %t | count 0
-// RUN: grep '#define __SSE4_2__ 1' %t | count 0
-// RUN: grep '#define __SSE_MATH__ 1' %t
-// RUN: grep '#define __SSE__ 1' %t
-// RUN: grep '#define __SSSE3__ 1' %t | count 0
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/blockcast3.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/blockcast3.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/blockcast3.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %t.mm -o %t-rw.cpp
-// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o %t-modern-rw.cpp
-// RUN: FileCheck -check-prefix LP --input-file=%t-modern-rw.cpp %s
-// radar 7607781
-
-typedef struct {
-	int a;
-	int b;
-} mystruct;
-	
-void g(int (^block)(mystruct s)) {
-	mystruct x;
-	int v = block(x);
-}
-
-void f(const void **arg) {
-	__block const void **q = arg;
-	g(^(mystruct s){
-		*q++ = (void*)s.a;
-		return 314;
-		});
-}
-
-// CHECK-LP: (__Block_byref_q_0 *)&q

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/blockstruct.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/blockstruct.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/blockstruct.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://8918702
-
-typedef void (^b_t)(void);
-void a(b_t work) { }
-struct _s {
-    int a;
-};
-struct _s *r();
-
-void f() {
-    __block struct _s *s = 0;
-    a(^{
-        s = (struct _s *)r();
-    });
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/crash.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/crash.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/crash.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -o - %s
-// rdar://5950938
- at interface NSArray {}
-+ (id)arrayWithObjects:(id)firstObj, ...;
- at end
-
- at interface NSConstantString {}
- at end
-
-int main() {
-    id foo = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"12", 0];
-    return 0;
-}
-
-// rdar://6291588
- at protocol A
- at end
-
- at interface Foo
- at end
-
-void func() {
-  id <A> obj = (id <A>)[Foo bar];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/dllimport-typedef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/dllimport-typedef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/dllimport-typedef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-win32 -fms-extensions -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-NEG %s
-// RUN: %clang_cc1 -triple i686-pc-win32 -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-POS %s
-
-// Do not report an error with including dllimport in the typedef when -fms-extensions is specified.
-// Addresses <rdar://problem/7653870>.
-typedef __declspec(dllimport) int CB(void);
-
-// This function is added just to trigger a diagnostic.  This way we can test how many
-// diagnostics we expect.
-void bar() { return 1; }
-
-// CHECK-NEG: error: void function 'bar' should not return a value
-// CHECK-NEG: 1 error generated
-// CHECK-POS: warning: 'dllimport' attribute only applies to variables and functions
-// CHECK-POS: error: void function 'bar' should not return a value
-// CHECK-POS: 1 warning and 1 error generated
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/finally.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/finally.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/finally.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -fobjc-exceptions -verify %s -o -
-
-int main() {
-  @try {
-    printf("executing try"); // expected-warning{{implicitly declaring library function 'printf' with type 'int (const char *, ...)'}} \
-        // expected-note{{please include the header <stdio.h> or explicitly provide a declaration for 'printf'}}
-    return(0); // expected-warning{{rewriter doesn't support user-specified control flow semantics for @try/@finally (code may not execute properly)}}
-  } @finally {
-    printf("executing finally");
-  }
-  while (1) {
-    @try {
-      printf("executing try");
-      break;
-    } @finally {
-      printf("executing finally");
-    }
-    printf("executing after finally block");
-  }
-  @try {
-    printf("executing try");
-  } @finally {
-    printf("executing finally");
-  }
-  return 0;
-}
-
-void test_sync_with_implicit_finally() {
-    id foo;
-    @synchronized (foo) {
-        return; // The rewriter knows how to generate code for implicit finally
-    }
-}
-
-void test2_try_with_implicit_finally() {
-    @try {
-        return; // The rewriter knows how to generate code for implicit finally
-    } @catch (id e) {
-        
-    }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/func-in-impl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/func-in-impl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/func-in-impl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.m
-// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -rewrite-objc %t.m -o - | FileCheck %s
-
- at interface I {
-  id _delegate;
-}
--(void)foo;
- at end
-
- at implementation I
-
-static void KKKK(int w);
-
--(void) foo {
-  KKKK(0);
-}
-
-static void KKKK(int w) {
-  I *self = (I *)0;
-  if ([self->_delegate respondsToSelector:@selector(handlePortMessage:)]) {
-  }
-}
-
--(void) foo2 {
-  KKKK(0);
-}
-
- at end
-
-// CHECK: if (((id (*)(id, SEL, ...))(void *)objc_msgSend)((id)((struct I_IMPL *)self)->_delegate, sel_registerName("respondsToSelector:"), sel_registerName("handlePortMessage:")))

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/id-test-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/id-test-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/id-test-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o -
-
- at protocol P
-- (id<P>) Meth: (id<P>) Arg;
- at end
-
- at interface INTF<P>
-- (id<P>)IMeth;
- at end
-
- at implementation INTF
-- (id<P>)IMeth { return [(id<P>)self Meth: (id<P>)0]; }
-- (id<P>) Meth : (id<P>) Arg { return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/inner-block-helper-funcs.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/inner-block-helper-funcs.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/inner-block-helper-funcs.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: FileCheck  -check-prefix LP --input-file=%t-rw.cpp %s
-// rdar://9846759
-
-typedef void (^dispatch_block_t)(void);
-
-extern int printf(const char*, ...);
-
-extern "C" dispatch_block_t Block_copy(dispatch_block_t aBlock);
-
-int main (int argc, char *argv[]) {
-
-  dispatch_block_t innerBlock = ^{printf("argc = %d\n", argc); };
-  id innerObject = 0;
-
-  printf("innerBlock is %x\n", innerBlock);
-
-  dispatch_block_t wrapperBlock = ^{
-    printf("innerBlock is %x %x\n", innerBlock, innerObject);
-  };
-
-  wrapperBlock();
-
-  dispatch_block_t copiedBlock = Block_copy(wrapperBlock);
-  copiedBlock();
-
-  return 0;
-}
-// CHECK-LP: _Block_object_assign((void*)&dst->innerBlock, (void*)src->innerBlock, 7
-// CHECK-LP: _Block_object_dispose((void*)src->innerBlock, 7
-// CHECK-LP: _Block_object_assign((void*)&dst->innerObject, (void*)src->innerObject, 3
-// CHECK-LP: _Block_object_dispose((void*)src->innerObject, 3

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/instancetype-test.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/instancetype-test.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/instancetype-test.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-
-void *sel_registerName(const char *);
-
- at interface Root
-+ (instancetype)alloc;
-- (instancetype)init; // expected-note{{overridden method is part of the 'init' method family}}
-- (instancetype)self;
-- (Class)class;
-
- at property (assign) Root *selfProp;
-- (instancetype)selfProp;
- at end
-
- at protocol Proto1
- at optional
-- (instancetype)methodInProto1;
- at end
-
- at protocol Proto2
- at optional
-- (instancetype)methodInProto2; // expected-note{{overridden method returns an instance of its class type}}
-- (instancetype)otherMethodInProto2; // expected-note{{overridden method returns an instance of its class type}}
- at end
-
- at interface Subclass1 : Root
-- (instancetype)initSubclass1;
-- (void)methodOnSubclass1;
-+ (instancetype)allocSubclass1;
- at end
-
- at interface Subclass2 : Root
-- (instancetype)initSubclass2;
-- (void)methodOnSubclass2;
- at end
-
-// Sanity check: the basic initialization pattern.
-void test_instancetype_alloc_init_simple() {
-  Root *r1 = [[Root alloc] init];
-  Subclass1 *sc1 = [[Subclass1 alloc] init];
-}
-
-// Test that message sends to instancetype methods have the right type.
-void test_instancetype_narrow_method_search() {
-  // instancetype on class methods
-  Subclass1 *sc1 = [[Subclass1 alloc] initSubclass2]; // expected-warning{{'Subclass1' may not respond to 'initSubclass2'}}
-  Subclass2 *sc2 = [[Subclass2 alloc] initSubclass2]; // okay
-
-  // instancetype on instance methods
-  [[[Subclass1 alloc] init] methodOnSubclass2]; // expected-warning{{'Subclass1' may not respond to 'methodOnSubclass2'}}
-  [[[Subclass2 alloc] init] methodOnSubclass2];
-  
-  // instancetype on class methods using protocols
-  [[Subclass1<Proto1> alloc] methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [[Subclass1<Proto2> alloc] methodInProto2];
-
-  // instancetype on instance methods
-  Subclass1<Proto1> *sc1proto1 = 0;
-  [[sc1proto1 self] methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  Subclass1<Proto2> *sc1proto2 = 0;
-  [[sc1proto2 self] methodInProto2];
-
-  // Exact type checks
-  // Message sends to Class.
-  // FIXME. This is not supported due to missing capability in rewriter and not due to instancetype issues
-  //  Subclass1<Proto1> *sc1proto1_2 = [[[sc1proto1 class] alloc] init];
-
-  // Property access
-  [sc1proto1.self methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [sc1proto2.self methodInProto2];
-
-  [sc1proto1.selfProp methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [sc1proto2.selfProp methodInProto2];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/ivar-encoding-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/ivar-encoding-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/ivar-encoding-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at interface Intf
-{
-  id ivar;
-  id ivar1[12];
-
-  id **ivar3;
-
-  id (*ivar4) (id, id);
-}
- at end
-
- at implementation Intf
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/ivar-encoding-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/ivar-encoding-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/ivar-encoding-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at implementation Intf
-{
-  id ivar;
-  id ivar1[12];
-
-  id **ivar3;
-
-  id (*ivar4) (id, id);
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/line-generation-test.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/line-generation-test.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/line-generation-test.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -fms-extensions -rewrite-objc -g %t.mm -o %t-rw.cpp
-// RUN: FileCheck  -check-prefix LINE --input-file=%t-rw.cpp %s
-// RUN: %clang_cc1 -fms-extensions -rewrite-objc %t.mm -o %t-rwnog.cpp
-// RUN: FileCheck  -check-prefix NOLINE --input-file=%t-rwnog.cpp %s
-// rdar://13138170
-
-__attribute__((objc_root_class)) @interface MyObject {
- at public
-    id _myMaster;
-    id _isTickledPink;
-}
- at property(retain) id myMaster;
- at property(assign) id isTickledPink;
- at end
-
- at implementation MyObject
-
- at synthesize myMaster = _myMaster;
- at synthesize isTickledPink = _isTickledPink;
-
-- (void) doSomething {
-    _myMaster = _isTickledPink;
-}
-
- at end
-
-MyObject * foo ()
-{
-	MyObject* p;
-        p.isTickledPink = p.myMaster;	// ok
-	p->_isTickledPink = p->_myMaster;
-	return p->_isTickledPink;
-}
-
-// CHECK-LINE: #line 22
-// CHECK-LINE: #line 28
-// CHECK-NOLINE-NOT: #line 22
-// CHECK-NOLINE-NOT: #line 28
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/metadata-test-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/metadata-test-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/metadata-test-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at interface Intf 
- at end
-
- at implementation Intf(Category)
-- (void) CatMeth {}
- at end
-
- at implementation Another
-- (void) CatMeth {}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/metadata-test-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/metadata-test-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/metadata-test-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
-typedef struct _NSPoint {
-    float x;
-    float y;
-} NSPoint;
-
- at interface Intf
-- (void) MyMeth : (NSPoint) Arg1;
- at end
-
- at implementation Intf
-- (void) MyMeth : (NSPoint) Arg1{}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/method-encoding-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/method-encoding-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/method-encoding-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at protocol P1
-- (void) MyProtoMeth : (int **) arg1 : (void*) arg2;
-+ (void) MyProtoMeth : (int **) arg1 : (void*) arg2;
- at end
-
- at interface Intf <P1>
-- (char *) MyMeth : (double) arg1 : (char *[12]) arg2;
-- (id) address:(void *)location with:(unsigned **)arg2;
- at end
-
- at implementation Intf
-- (char *) MyMeth : (double) arg1 : (char *[12]) arg2{ return 0; }
-- (void) MyProtoMeth : (int **) arg1 : (void*) arg2 {}
-+ (void) MyProtoMeth : (int **) arg1 : (void*) arg2 {}
-- (id) address:(void *)location with:(unsigned **)arg2{ return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/missing-dllimport.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/missing-dllimport.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/missing-dllimport.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-win32 -fms-extensions -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-NEG %s
-// RUN: %clang_cc1 -triple i686-pc-win32 -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-POS %s
-
-// Do not report that 'foo()' is redeclared without dllimport attribute with -fms-extensions
-// specified.  Addresses <rdar://problem/7653912>.
-
-__declspec(dllimport) int __cdecl foo(void);
-inline int __cdecl foo() { return 0; }
-
-// This function is added just to trigger a diagnostic.  This way we can test how many
-// diagnostics we expect.
-void bar() { return 1; }
-
-// CHECK-NEG: error: void function 'bar' should not return a value
-// CHECK-NEG: 1 error generated
-// CHECK-POS: warning: 'foo' redeclared without dllimport attribute: previous dllimport ignored
-// CHECK-POS: error: void function 'bar' should not return a value
-// CHECK-POS: 1 warning and 1 error generated
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/modern-write-bf-abi.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/modern-write-bf-abi.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/modern-write-bf-abi.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// rdar://13138459
-
-// -Did="void*" -DSEL="void *" -DClass="void*"
- at interface NSMutableArray {
-  id isa;
-}
- at end
-
-typedef unsigned char BOOL;
-typedef unsigned long NSUInteger;
-
-__attribute__((visibility("hidden")))
- at interface __NSArrayM : NSMutableArray {
-    NSUInteger _used;
-    NSUInteger _doHardRetain:1;
-    NSUInteger _doWeakAccess:1;
-#if __LP64__
-    NSUInteger _size:62;
-#else
-    NSUInteger _size:30;
-#endif
-    NSUInteger _hasObjects:1;
-    NSUInteger _hasStrongReferences:1;
-#if __LP64__
-    NSUInteger _offset:62;
-#else
-    NSUInteger _offset:30;
-#endif
-    unsigned long _mutations;
-    id *_list;
-}
- at end
-
-
-id __CFAllocateObject2();
-BOOL objc_collectingEnabled();
-
- at implementation __NSArrayM
-+ (id)__new:(const id [])objects :(NSUInteger)count :(BOOL)hasObjects :(BOOL)hasStrong :(BOOL)transferRetain {
-    __NSArrayM *newArray = (__NSArrayM *)__CFAllocateObject2();
-    newArray->_size = count;
-    newArray->_mutations = 1;
-    newArray->_doHardRetain = (hasObjects && hasStrong);
-    newArray->_doWeakAccess = (objc_collectingEnabled() && !hasStrong);
-    newArray->_hasObjects = hasObjects;
-    newArray->_hasStrongReferences = hasStrong;
-    newArray->_list = 0;
-    return *newArray->_list;
-}
- at end
-
-// Test2
- at interface Super {
-  int ivar_super_a : 5;
-}
- at end
-
- at interface A : Super {
- at public
-  int ivar_a : 5;
-}
- at end
-
-int f0(A *a) {
-  return a->ivar_a;
-}
-
- at interface A () {
- at public
-  int ivar_ext_a : 5;
-  int ivar_ext_b : 5;
-}@end
-
-int f1(A *a) {
-  return a->ivar_ext_a + a->ivar_a;
-}
-
- at interface A () {
- at public
-  int ivar_ext2_a : 5;
-  int ivar_ext2_b : 5;
-}@end
-
-int f2(A* a) {
-  return a->ivar_ext2_a + a->ivar_ext_a + a->ivar_a;
-}
-
- at implementation A {
- at public
-  int ivar_b : 5;
-  int ivar_c : 5;
-  int ivar_d : 5;
-}
- at end
-
-int f3(A *a) {  
-  return a->ivar_d + a->ivar_ext2_a + a->ivar_ext_a + a->ivar_a;
-}
-
-__attribute__((objc_root_class)) @interface Base
-{
-    struct objc_class *isa;
-    int full;
-    int full2: 32;
-    int _refs: 8;
-    int field2: 3;
-    unsigned f3: 8;
-    short cc;
-    unsigned g: 16;
-    int r2: 8;
-    int r3: 8;
-    int r4: 2;
-    int r5: 8;
-    char c;
-}
- at end
-
- at implementation Base @end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/no-integrated-preprocessing-64bit.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/no-integrated-preprocessing-64bit.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/no-integrated-preprocessing-64bit.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang -target x86_64-unkown-unknown -fms-extensions -rewrite-objc %s -o - | FileCheck %s
-// rdar://12189793
-
-#ifdef __cplusplus
-
-void *sel_registerName(const char *);
-
- at interface Root @end
-
- at interface MYINTF : Root
- at end
-
-#endif
-
- at implementation MYINTF 
-- (id) MYMETH { return [self MYMETH]; }
- at end
-
-int main() {
-}
-
-// CHECK: static struct _class_ro_t _OBJC_CLASS_RO_$_MYINTF
-// CHECK-NEXT: 0, 0, 0,
-// CHECK-NEXT: (unsigned int)0,
-// CHECK-NEXT: 0,
-// CHECK-NEXT: "MYINTF",

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/no-integrated-preprocessing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/no-integrated-preprocessing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/no-integrated-preprocessing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang -arch i386 -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: FileCheck %s < %t-rw.cpp
-// rdar://12189793
-
-#ifdef __cplusplus
-
-void *sel_registerName(const char *);
-
- at interface Root @end
-
- at interface MYINTF : Root
- at end
-
-#endif
-
- at implementation MYINTF 
-- (id) MYMETH { return [self MYMETH]; }
- at end
-
-int main() {
-}
-
-// CHECK: static struct _class_ro_t _OBJC_CLASS_RO_$_MYINTF
-// CHECK-NEXT: 0, 0, 0,
-// CHECK-NEXT: 0,
-// CHECK-NEST: "MYINTF",

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-check-modern.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-check-modern.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-check-modern.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s 
-// rdar://11124775
-
-typedef bool BOOL;
-
-BOOL yes() {
-  return __objc_yes;
-}
-
-BOOL no() {
-  return __objc_no;
-}
-
-BOOL which (int flag) {
-  return flag ? yes() : no();
-}
-
-int main() {
-  which (__objc_yes);
-  which (__objc_no);
-  return __objc_yes;
-}
-
-// CHECK: return ((bool)1);
-// CHECK: return ((bool)0);
-// CHECK: which (((bool)1));
-// CHECK: which (((bool)0));
-// CHECK: return ((bool)1);

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-modern-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-modern-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-modern-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp 
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"__declspec(X)=" %t-rw.cpp
-// rdar://11231426
-
-// rdar://11375908
-typedef unsigned long size_t;
-
-typedef bool BOOL;
-
-BOOL yes() {
-  return __objc_yes;
-}
-
-BOOL no() {
-  return __objc_no;
-}
-
-BOOL which (int flag) {
-  return flag ? yes() : no();
-}
-
-int main() {
-  which (__objc_yes);
-  which (__objc_no);
-  return __objc_yes;
-}
-
-void y(BOOL (^foo)());
-
-void x() {
-    y(^{
-        return __objc_yes;
-    });
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-modern.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-modern.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-bool-literal-modern.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fms-extensions -rewrite-objc %s -o %t-rw.cpp 
-// RUN: %clang_cc1 -fsyntax-only -D"__declspec(X)=" %t-rw.cpp
-// rdar://11124775
-
-typedef bool BOOL;
-
-BOOL yes() {
-  return __objc_yes;
-}
-
-BOOL no() {
-  return __objc_no;
-}
-
-BOOL which (int flag) {
-  return flag ? yes() : no();
-}
-
-int main() {
-  which (__objc_yes);
-  which (__objc_no);
-  return __objc_yes;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-encoding-bug-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-encoding-bug-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-encoding-bug-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
-typedef struct NSMethodFrameArgInfo {
-    struct NSMethodFrameArgInfo *subInfo;
-    struct NSMethodFrameArgInfo *an;
-} NSMethodFrameArgInfo;
-
- at interface NSMethodSignature 
-- (NSMethodFrameArgInfo *)_argInfo;
- at end
-
- at implementation NSMethodSignature
-
-- (NSMethodFrameArgInfo *)_argInfo{
-    return 0;
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-ivar-receiver-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-ivar-receiver-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-ivar-receiver-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o - | grep 'newInv->_container'
-
- at interface NSMutableArray 
-- (void)addObject:(id)addObject;
- at end
-
- at interface NSInvocation {
- at private
-    id _container;
-}
-+ (NSInvocation *)invocationWithMethodSignature;
-
- at end
-
- at implementation NSInvocation
-
-+ (NSInvocation *)invocationWithMethodSignature {
-    NSInvocation *newInv;
-    id obj = newInv->_container;
-    [newInv->_container addObject:0];
-   return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-StretAPI-2.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-StretAPI-2.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-StretAPI-2.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://12142241
-
-extern "C" void *sel_registerName(const char *);
-typedef unsigned long size_t;
-
-typedef unsigned long NSUInteger;
-typedef struct _NSRange {
-    NSUInteger location;
-    NSUInteger length;
-} NSRange;
-
-
- at interface NSIndexSet
-- (NSRange)rangeAtIndex:(NSUInteger)rangeIndex;
- at end
-
- at interface NSArray
- at end
-
- at implementation NSArray
-- (NSArray *)objectsAtIndexes:(NSIndexSet *)iset {
-
-    NSUInteger ridx = 0;
-    NSRange range = [iset rangeAtIndex:ridx];
-    return 0;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-StretAPI.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-StretAPI.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-StretAPI.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://11359268
-
-extern "C" void *sel_registerName(const char *);
-typedef unsigned long size_t;
-
-union U {
-  double d1;
-  char filler[32];
-};
-
-struct S {
-  char filler[128];
-};
-
- at interface I
-- (struct S) Meth : (int) arg1 : (id) arg2;
-- (struct S) Meth1;
-- (union U) Meth2 : (double)d;
-- (struct S) VAMeth : (int)anchor, ...;
- at end
-
-I* PI();
-
-extern "C" {
-
-struct S foo () {
-  struct S s = [PI() Meth : 1 : (id)0];
-
-  U u = [PI() Meth2 : 3.14];
-
-  S s1 = [PI() VAMeth : 12, 13.4, 1000, "hello"];
-
-  S s2 = [PI() VAMeth : 12];
-
-  S s3 = [PI() VAMeth : 0, "hello", "there"];
-
-  S s4 = [PI() VAMeth : 2, ^{}, &foo];
-
-  return [PI() Meth1];
-}
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-boxing.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-boxing.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-boxing.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp -Wno-attributes
-
-extern char *strdup(const char *str);
-extern "C" void *sel_registerName(const char *);
-
-typedef signed char BOOL;
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-
-#if __has_feature(objc_bool)
-#define YES             __objc_yes
-#define NO              __objc_no
-#else
-#define YES             ((BOOL)1)
-#define NO              ((BOOL)0)
-#endif
-
- at interface NSNumber
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value ;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value ;
- at end
-
- at interface NSString
-+ (id)stringWithUTF8String:(const char *)str;
- at end
-
-int main(int argc, const char *argv[]) {
-  // character.
-  NSNumber *theLetterZ = @('Z');          // equivalent to [NSNumber numberWithChar:('Z')]
-
-  // integral.
-  NSNumber *fortyTwo = @(42);             // equivalent to [NSNumber numberWithInt:(42)]
-  NSNumber *fortyTwoUnsigned = @(42U);    // equivalent to [NSNumber numberWithUnsignedInt:(42U)]
-  NSNumber *fortyTwoLong = @(42L);        // equivalent to [NSNumber numberWithLong:(42L)]
-  NSNumber *fortyTwoLongLong = @(42LL);   // equivalent to [NSNumber numberWithLongLong:(42LL)]
-
-  // floating point.
-  NSNumber *piFloat = @(3.141592654F);    // equivalent to [NSNumber numberWithFloat:(3.141592654F)]
-  NSNumber *piDouble = @(3.1415926535);   // equivalent to [NSNumber numberWithDouble:(3.1415926535)]
-
-  BOOL b;
-  NSNumber *nsb = @(b);
-
-  // Strings.
-  NSString *duplicateString = @(strdup("Hello"));
-}
-
-// CHECK:  NSNumber *theLetterZ = ((NSNumber *(*)(id, SEL, char))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithChar:"), ('Z'));
-// CHECK:  NSNumber *fortyTwo = ((NSNumber *(*)(id, SEL, int))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithInt:"), (42));
-// CHECK:  NSNumber *fortyTwoUnsigned = ((NSNumber *(*)(id, SEL, unsigned int))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithUnsignedInt:"), (42U));
-// CHECK:  NSNumber *fortyTwoLong = ((NSNumber *(*)(id, SEL, long))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithLong:"), (42L));
-// CHECK:  NSNumber *fortyTwoLongLong = ((NSNumber *(*)(id, SEL, long long))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithLongLong:"), (42LL));
-// CHECK:  NSNumber *piFloat = ((NSNumber *(*)(id, SEL, float))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithFloat:"), (3.1415927F));
-// CHECK:  NSNumber *piDouble = ((NSNumber *(*)(id, SEL, double))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithDouble:"), (3.1415926535));
-// CHECK:  NSNumber *nsb = ((NSNumber *(*)(id, SEL, BOOL))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithBool:"), (BOOL)(b));
-// CHECK:  NSString *duplicateString = ((NSString *(*)(id, SEL, const char *))(void *)objc_msgSend)(objc_getClass("NSString"), sel_registerName("stringWithUTF8String:"), (const char *)(strdup("Hello")));

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-class-init-hooks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-class-init-hooks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-class-init-hooks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s 
-// rdar:// 11124354
-
- at interface Root @end
-
- at interface Super : Root
- at end
-
- at interface Sub : Super
- at end
-
- at implementation Sub @end
-
- at implementation Root @end
-
- at interface Root(Cat) @end
-
- at interface Sub(Cat) @end
-
- at implementation Root(Cat) @end
-
- at implementation Sub(Cat) @end
-
-
-// CHECK: #pragma section(".objc_inithooks$B", long, read, write)
-// CHECK: __declspec(allocate(".objc_inithooks$B")) static void *OBJC_CLASS_SETUP[] = {
-// CHECK:         (void *)&OBJC_CLASS_SETUP_$_Sub,
-// CHECK:         (void *)&OBJC_CLASS_SETUP_$_Root,
-// CHECK: };
-
-// CHECK: #pragma section(".objc_inithooks$B", long, read, write)
-// CHECK: __declspec(allocate(".objc_inithooks$B")) static void *OBJC_CATEGORY_SETUP[] = {
-// CHECK:         (void *)&OBJC_CATEGORY_SETUP_$_Root_$_Cat,
-// CHECK:         (void *)&OBJC_CATEGORY_SETUP_$_Sub_$_Cat,
-// CHECK: };

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-class-init.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-class-init.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-class-init.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp 
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar:// 11076938
-
- at interface Root @end
-
- at interface Super : Root
- at end
-
- at interface Sub : Super
- at end
-
- at implementation Sub @end
-
- at implementation Root @end
-
- at interface Root(Cat) @end
-
- at interface Sub(Cat) @end
-
- at implementation Root(Cat) @end
-
- at implementation Sub(Cat) @end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-container-subscript.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-container-subscript.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-container-subscript.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://11203853
-
-typedef unsigned long size_t;
-
-void *sel_registerName(const char *);
-
- at protocol P @end
-
- at interface NSMutableArray
-#if __has_feature(objc_subscripting)
-- (id)objectAtIndexedSubscript:(size_t)index;
-- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
-#endif
- at end
-
-#if __has_feature(objc_subscripting)
- at interface XNSMutableArray
-- (id)objectAtIndexedSubscript:(size_t)index;
-- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
-#endif
- at end
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id)key;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at class NSString;
-
-int main() {
-  NSMutableArray<P> * array;
-  id oldObject = array[10];
-
-  array[10] = oldObject;
-
-  id unknown_array;
-  oldObject = unknown_array[1];
-
-  unknown_array[1] = oldObject;
-
-  NSMutableDictionary *dictionary;
-  NSString *key;
-  id newObject;
-  oldObject = dictionary[key];
-  dictionary[key] = newObject;  // replace oldObject with newObject
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-getclass-proto.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-getclass-proto.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-getclass-proto.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %t.mm -o %t-rw.cpp
-// rdar://11375495
-
- at interface I @end
- at implementation I @end
-
-// CHECK: __OBJC_RW_DLLIMPORT struct objc_class *objc_getClass(const char *);
-// CHECK: __OBJC_RW_DLLIMPORT struct objc_class *objc_getMetaClass(const char *);
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-implicit-cast.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-implicit-cast.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-implicit-cast.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://11202764
-
-typedef void(^BL)(void);
-
-id return_id(void(^block)(void)) {
-  return block;
-}
-
-BL return_block(id obj) {
-  return obj;
-}
-
-int main()
-{
-    void(^block)(void);
-    id obj;
-    block = obj; // AnyPointerToBlockPointerCast
-    obj = block; // BlockPointerToObjCPointerCast
-
-   id obj1 = block;
-
-   void(^block1)(void) = obj1;
-
-   return_id(block1);
-
-   return_id(obj1);
-
-   return_block(block1);
-
-   return_block(obj1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-ivar-receiver-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-ivar-receiver-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-ivar-receiver-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s 
-
-void *sel_registerName(const char *);
-
- at interface NSMutableArray 
-- (void)addObject:(id)addObject;
- at end
-
- at interface NSInvocation {
- at private
-    id _container;
-}
-+ (NSInvocation *)invocationWithMethodSignature;
-
- at end
-
- at implementation NSInvocation
-
-+ (NSInvocation *)invocationWithMethodSignature {
-    NSInvocation *newInv;
-    id obj = newInv->_container;
-    [newInv->_container addObject:0];
-   return 0;
-}
- at end
-
-// CHECK: id obj = (*(id *)((char *)newInv + OBJC_IVAR_$_NSInvocation$_container));
-// rdar://11076938
-// CHECK: struct _class_t *superclass;
-// CHECK: extern "C" __declspec(dllimport) struct objc_cache _objc_empty_cache;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-linkage-spec.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-linkage-spec.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-linkage-spec.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-attributes -D"__declspec(X)=" %t-rw.cpp
-// rdar://11169733
-
-extern "C" __declspec(dllexport)
- at interface Test @end
-
- at implementation Test @end
-
-extern "C" {
-__declspec(dllexport)
- at interface Test1 @end
-
- at implementation Test1 @end
-
-__declspec(dllexport)
- at interface Test2 @end
-
- at implementation Test2 @end
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-metadata-visibility.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-metadata-visibility.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-metadata-visibility.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s 
-// rdar://11144048
-
- at class NSString;
-
- at interface NSObject {
-    Class isa;
-}
- at end
-
- at interface Sub : NSObject {
-    int subIvar;
-    NSString *nsstring;
- at private
-    id PrivateIvar;
-}
- at end
-
- at implementation Sub 
-- (id) MyNSString { return subIvar ? PrivateIvar : nsstring; }
- at end
-
- at interface NSString @end
- at implementation NSString @end
-
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$subIvar;
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long OBJC_IVAR_$_Sub$PrivateIvar;
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllimport) unsigned long OBJC_IVAR_$_Sub$nsstring;
-// CHECK: #pragma warning(disable:4273)
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$subIvar
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" __declspec(dllexport) unsigned long int OBJC_IVAR_$_Sub$nsstring
-// CHECK: __declspec(allocate(".objc_ivar$B")) extern "C" unsigned long int OBJC_IVAR_$_Sub$PrivateIvar
-// CHECK: extern "C" __declspec(dllimport) struct _class_t OBJC_METACLASS_$_NSObject;
-// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_Sub
-// CHECK: extern "C" __declspec(dllimport) struct _class_t OBJC_CLASS_$_NSObject;
-// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_Sub
-// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_NSString;
-// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_METACLASS_$_NSString
-// CHECK: extern "C" __declspec(dllexport) struct _class_t OBJC_CLASS_$_NSString

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-numeric-literal.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-numeric-literal.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-numeric-literal.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s 
-// rdar://10803676
-
-extern "C" void *sel_registerName(const char *);
-
-typedef bool BOOL;
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-
-#if __has_feature(objc_bool)
-#define YES             __objc_yes
-#define NO              __objc_no
-#else
-#define YES             ((BOOL)1)
-#define NO              ((BOOL)0)
-#endif
-
- at interface NSNumber
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value ;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value ;
- at end
-
-int main(int argc, const char *argv[]) {
-  // character literals.
-  NSNumber *theLetterZ = @'Z';          // equivalent to [NSNumber numberWithChar:'Z']
-
-  // integral literals.
-  NSNumber *fortyTwo = @42;             // equivalent to [NSNumber numberWithInt:42]
-  NSNumber *fortyTwoUnsigned = @42U;    // equivalent to [NSNumber numberWithUnsignedInt:42U]
-  NSNumber *fortyTwoLong = @42L;        // equivalent to [NSNumber numberWithLong:42L]
-  NSNumber *fortyTwoLongLong = @42LL;   // equivalent to [NSNumber numberWithLongLong:42LL]
-
-  // floating point literals.
-  NSNumber *piFloat = @3.141592654F;    // equivalent to [NSNumber numberWithFloat:3.141592654F]
-  NSNumber *piDouble = @3.1415926535;   // equivalent to [NSNumber numberWithDouble:3.1415926535]
-
-  // BOOL literals.
-  NSNumber *yesNumber = @YES;           // equivalent to [NSNumber numberWithBool:YES]
-  NSNumber *noNumber = @NO;             // equivalent to [NSNumber numberWithBool:NO]
-
-  NSNumber *trueNumber = @true;         // equivalent to [NSNumber numberWithBool:(BOOL)true]
-  NSNumber *falseNumber = @false;       // equivalent to [NSNumber numberWithBool:(BOOL)false]
-}
-
-// CHECK:  NSNumber *theLetterZ = ((NSNumber *(*)(id, SEL, char))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithChar:"), 'Z');
-// CHECK:  NSNumber *fortyTwo = ((NSNumber *(*)(id, SEL, int))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithInt:"), 42);
-// CHECK:  NSNumber *fortyTwoUnsigned = ((NSNumber *(*)(id, SEL, unsigned int))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithUnsignedInt:"), 42U);
-// CHECK:  NSNumber *fortyTwoLong = ((NSNumber *(*)(id, SEL, long))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithLong:"), 42L);
-// CHECK:  NSNumber *fortyTwoLongLong = ((NSNumber *(*)(id, SEL, long long))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithLongLong:"), 42LL);
-// CHECK:  NSNumber *piFloat = ((NSNumber *(*)(id, SEL, float))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithFloat:"), 3.1415927F);
-// CHECK:  NSNumber *piDouble = ((NSNumber *(*)(id, SEL, double))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithDouble:"), 3.1415926535);
-// CHECK:  NSNumber *yesNumber = ((NSNumber *(*)(id, SEL, BOOL))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithBool:"), true);
-// CHECK:  NSNumber *noNumber = ((NSNumber *(*)(id, SEL, BOOL))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithBool:"), false);
-// CHECK:  NSNumber *trueNumber = ((NSNumber *(*)(id, SEL, BOOL))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithBool:"), true);
-// CHECK:  NSNumber *falseNumber = ((NSNumber *(*)(id, SEL, BOOL))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithBool:"), false);

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-property-attributes.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-property-attributes.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-property-attributes.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s
-
-// rdar://11095151
-
-typedef void (^void_block_t)(void);
-
- at interface PropertyClass {
-    int q;
-    void_block_t __completion;
-    PropertyClass* YVAR;
-    id ID;
-}
- at property int q;
- at property int r;
-
- at property (copy) void_block_t completionBlock;
- at property (retain) PropertyClass* Yblock;
- at property (copy) id ID;
-
- at end
-
- at implementation PropertyClass
- at synthesize q;  // attributes should be "Ti,Vq"
- at dynamic r;     // attributes should be "Ti,D"
- at synthesize completionBlock=__completion; // "T@?,C,V__completion"
- at synthesize Yblock = YVAR; // "T@\"PropertyClass\",&,VYVAR"
- at synthesize  ID; // "T@,C,VID"
- at end
-
-// CHECK: Ti,Vq
-// CHECK: Ti,D
-// CHECK: T@?,C,V__completion
-// CHECK: T@\"PropertyClass\",&,VYVAR
-
- at interface Test @end
- at interface Test (Category)
- at property int q;
- at end
-
- at implementation Test (Category)
- at dynamic q;
- at end
-
-// CHECK: {{"q","Ti,D"}}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-property-bitfield.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-property-bitfield.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-modern-property-bitfield.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// rdar://13138459
-
-void *sel_registerName(const char *);
-extern void abort();
-
- at interface NSObject 
-+ alloc;
-- init;
- at end
-
-typedef unsigned char BOOL;
-
- at interface Foo : NSObject {
-
-   BOOL  _field1 : 5;
-   BOOL  _field2    : 3;
-}
-
- at property BOOL field1;
- at property BOOL field2;
- at end
-
- at implementation Foo
-
- at synthesize field1 = _field1;
- at synthesize field2 = _field2;
-
- at end
-
-int main()
-{
-  Foo *f = (Foo*)[[Foo alloc] init];
-  f.field1 = 0xF;
-  f.field2 = 0x3;
-  f.field1 = f.field1 & f.field2;
-  if (f.field1 != 0x3)
-    abort ();
-  return 0; 
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-string-concat-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-string-concat-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-string-concat-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at class NSString;
-
- at interface NSConstantString;
- at end
-
-
-
-NSConstantString *t0 = @"123";
-NSConstantString *t = @"123"     @"4567"; // concat
-NSConstantString *t1 = @"123"     @"4567" /* COMMENT */ @"89"; // concat
-NSConstantString *t2 = @"123"     @/* COMMENT */ "4567"; // concat
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-super-test.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-super-test.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-super-test.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o - | grep objc_msgSendSuper | grep MainMethod
-
-typedef struct objc_selector    *SEL;
-typedef struct objc_object *id;
-
- at interface SUPER
-- (int) MainMethod;
- at end
-
- at interface MyDerived : SUPER
-- (int) instanceMethod;
- at end
-
- at implementation MyDerived 
-- (int) instanceMethod {
-  return [super MainMethod];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/objc-synchronized-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/objc-synchronized-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/objc-synchronized-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
-id SYNCH_EXPR();
-void SYNCH_BODY();
-void  SYNCH_BEFORE();
-void  SYNC_AFTER();
-
-void foo(id sem)
-{
-  SYNCH_BEFORE();
-  @synchronized (SYNCH_EXPR()) { 
-    SYNCH_BODY();
-    return;
-  }
- SYNC_AFTER();
- @synchronized ([sem self]) {
-    SYNCH_BODY();
-    return;
- }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/properties.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/properties.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/properties.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fms-extensions -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-void *sel_registerName(const char *);
-
- at interface Foo {
-    int i;
-    int rrrr;
-    Foo *o;
-}
- at property int i;
- at property(readonly) int rrrr;
- at property int d;
- at property(retain) Foo *o;
-
-- (void)foo;
- at end
-
- at implementation Foo
- at synthesize i;
- at synthesize rrrr;
- at synthesize o;
-
- at dynamic d;
-
-- (void)foo {
-    i = 99;
-}
-
-- (int)bar {
-  return i;
-}
- at end
-
- at interface Bar {
-}
- at end
-
- at implementation Bar
-
-static int func(int i) { return 0; }
-
-- (void)baz {
-    Foo *obj1, *obj2;
-    int i;
-    if (obj1.i == obj2.rrrr)
-      obj1.i = 33;
-    obj1.i = func(obj2.rrrr);
-    obj1.i = obj2.rrrr;
-    obj1.i = (obj2.rrrr);
-    [obj1 setI:[obj2 rrrr]];
-    obj1.i = [obj2 rrrr];
-    obj1.i = 3 + [obj2 rrrr];
-    i = obj1.o.i;
-    obj1.o.i = 77;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/property-dot-syntax.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/property-dot-syntax.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/property-dot-syntax.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar:// 8520727
-
-void *sel_registerName(const char *);
-
- at class NSString;
-
- at protocol CoreDAVAccountInfoProvider
-- (NSString *)userAgentHeader;
- at end
-
- at interface CoreDAVTask
-{
-  id<CoreDAVAccountInfoProvider> _accountInfoProvider;
-}
-- (void)METHOD;
- at end
-
- at implementation CoreDAVTask
-- (void)METHOD {
-  if ([_accountInfoProvider userAgentHeader]) {
-  }
-  if (_accountInfoProvider.userAgentHeader) {
-  }
-}
- at end
-
-//rdar: // 8541517
- at interface A { }
- at property (retain) NSString *scheme;
- at end
-
- at interface B : A {
-	NSString* _schemeName;
-}
- at end
-
-
- at implementation B
--(void) test {
- B *b;
- b.scheme = _schemeName; // error because of this line
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/protocol-rewrite-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/protocol-rewrite-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/protocol-rewrite-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
-typedef struct MyWidget {
-  int a;
-} MyWidget;
-
-MyWidget gWidget = { 17 };
-
- at protocol MyProto
-- (MyWidget *)widget;
- at end
-
- at interface Foo 
- at end
-
- at interface Bar: Foo <MyProto>
- at end
-
- at interface Container 
-+ (MyWidget *)elementForView:(Foo *)view;
- at end
-
- at implementation Foo
- at end
-
- at implementation Bar
-- (MyWidget *)widget {
-  return &gWidget;
-}
- at end
-
- at implementation Container
-+ (MyWidget *)elementForView:(Foo *)view
-{
-  MyWidget *widget = (void*)0;
-  if (@protocol(MyProto)) {
-    widget = [(id <MyProto>)view widget];
-  }
-  return widget;
-}
- at end
-
-int main(void) {
-  id view;
-  MyWidget *w = [Container elementForView: view];
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/protocol-rewrite-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/protocol-rewrite-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/protocol-rewrite-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t.cpp
-// RUN: %clang_cc1 -fsyntax-only %t.cpp
-
-// rdar://10234024
- at protocol Foo;
- at protocol Foo
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-anonymous-union.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-anonymous-union.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-anonymous-union.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  -o - %s
-// rdar://6948022
-
-typedef unsigned int uint32_t;
-
-typedef struct {
-    union {
-        uint32_t daysOfWeek;
-        uint32_t dayOfMonth;
-    };
-    uint32_t nthOccurrence;
-} OSPatternSpecificData;
-
- at interface NSNumber
-+ (NSNumber *)numberWithLong:(long)value;
- at end
-
- at interface OSRecurrence  {
-    OSPatternSpecificData _pts;
-}
-- (void)_setTypeSpecificInfoOnRecord;
- at end
-
- at implementation OSRecurrence
-- (void)_setTypeSpecificInfoOnRecord
-{
-    [NSNumber numberWithLong:(_pts.dayOfMonth >= 31 ? -1 : _pts.dayOfMonth)];
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-api-bug.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-api-bug.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-api-bug.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at interface MyDerived
-- (void) instanceMethod;
- at end
-
- at implementation MyDerived
-- (void) instanceMethod {
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-argument.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-argument.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-argument.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp
-// RUN: %clang_cc1 -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" -emit-llvm -o %t %t-rw.cpp
-// radar 7987817
-
-void *sel_registerName(const char *);
-
- at interface Test {
-}
- at end
-
- at implementation Test
-
-- (void)enumerateProvidersWithBlock:(void (^)(void))block {
-    block();
-}
-
-- (void)providerEnumerator {
-    ^(void (^providerBlock)(void)) {
-        [self enumerateProvidersWithBlock:providerBlock];
-    };
-}
-
-- (void)testNilBlock {
-    [self enumerateProvidersWithBlock:0];
-}
-
- at end
-
-
-
-int main(int argc, char *argv[]) {
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-consts.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-consts.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-consts.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D__block="" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar:// 8243071
-
-void x(int y) {}
-void f() {
-    const int bar = 3;
-    int baz = 4;
-    __block int bab = 4;
-    __block const int bas = 5;
-    void (^b)() = ^{
-        x(bar);
-        x(baz);
-	x(bab);
-	x(bas);
-	b();
-    };    
-    b();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-ivar-call.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-ivar-call.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-ivar-call.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -o - %s
-
- at interface Foo {
-    void (^_block)(void);
-}
- at end
-
- at implementation Foo
-- (void)bar {
-    _block();
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-literal-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-literal-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-literal-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 9254348
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// rdar://11259664
-
-// rdar://11375908
-typedef unsigned long size_t;
-
-void *sel_registerName(const char *);
-typedef void (^BLOCK_TYPE)(void);
-
- at interface CoreDAVTaskGroup 
-{
-  int IVAR;
-}
- at property int IVAR;
-- (void) setCompletionBlock : (BLOCK_TYPE) arg;
- at end
-
- at implementation CoreDAVTaskGroup
-- (void)_finishInitialSync {
-                    CoreDAVTaskGroup *folderPost;
-  folderPost.completionBlock = ^{
-    self.IVAR = 0;
-    [self _finishInitialSync];
-  };
-
-  [folderPost setCompletionBlock : (^{
-    self.IVAR = 0;
-  })];
-}
- at dynamic IVAR;
-- (void) setCompletionBlock : (BLOCK_TYPE) arg {}
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-literal.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-literal.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-literal.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-
-// rdar://11375908
-typedef unsigned long size_t;
-
-// rdar: // 11006566
-
-void I( void (^)(void));
-void (^noop)(void);
-
-void nothing();
-int printf(const char*, ...);
-
-typedef void (^T) (void);
-
-void takeblock(T);
-int takeintint(int (^C)(int)) { return C(4); }
-
-T somefunction() {
-  if (^{ })
-    nothing();
-
-  noop = ^{};
-
-  noop = ^{printf("\nClosure\n"); };
-
-  I(^{ });
-
-  return ^{printf("\nClosure\n"); };
-}
-void test2() {
-  int x = 4;
-
-  takeblock(^{ printf("%d\n", x); });
-
-  while (1) {
-    takeblock(^{ 
-        while(1) break;  // ok
-      });
-    break;
-  }
-}
-
-void test4() {
-  void (^noop)(void) = ^{};
-  void (*noop2)() = 0;
-}
-
-void myfunc(int (^block)(int)) {}
-
-void myfunc3(const int *x);
-
-void test5() {
-  int a;
-
-  myfunc(^(int abcd) {
-      myfunc3(&a);
-      return 1;
-    });
-}
-
-void *X;
-
-static int global_x = 10;
-void (^global_block)(void) = ^{ printf("global x is %d\n", global_x); };
-
-// CHECK: static __global_block_block_impl_0 __global_global_block_block_impl_0((void *)__global_block_block_func_0, &__global_block_block_desc_0_DATA);
-// CHECK: void (*global_block)(void) = (void (*)())&__global_global_block_block_impl_0;
-
-typedef void (^void_block_t)(void);
-
-static const void_block_t myBlock = ^{ };
-
-static const void_block_t myBlock2 = ^ void(void) { }; 

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-pointer.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-pointer.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-pointer.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,112 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// radar 7638400
-
-// rdar://11375908
-typedef unsigned long size_t;
-
-typedef void * id;
-void *sel_registerName(const char *);
-
- at interface X
- at end
-
-void foo(void (^block)(int));
-
- at implementation X
-static void enumerateIt(void (^block)(id, id, char *)) {
-      foo(^(int idx) { });
-}
- at end
-
-// radar 7651312
-void apply(void (^block)(int));
-
-static void x(int (^cmp)(int, int)) {
-	x(cmp);
-}
-
-static void y(int (^cmp)(int, int)) {
-	apply(^(int sect) {
-		x(cmp);
-    });
-}
-
-// radar 7659483
-void *_Block_copy(const void *aBlock);
-void x(void (^block)(void)) {
-        block = ((__typeof(block))_Block_copy((const void *)(block)));
-}
-
-// radar 7682763
- at interface Y {
- at private
-    id _private;
-}
-- (void (^)(void))f;
- at end
-
-typedef void (^void_block_t)(void);
-
- at interface YY {
-    void_block_t __completion;
-}
- at property (copy) void_block_t f;
- at end
-
- at implementation Y
-- (void (^)(void))f {
-    return [_private f];
-}
-
- at end
-
-// rdar: //8608902
- at protocol CoreDAVAccountInfoProvider;
- at protocol CodeProvider;
-typedef void (^BDVDiscoveryCompletionHandler)(int success, id<CoreDAVAccountInfoProvider> discoveredInfo);
-typedef void (^BDVDiscoveryCompletion)(id<CodeProvider> codeInfo, int success, id<CoreDAVAccountInfoProvider> discoveredInfo);
-typedef void (^BDVDiscovery)(int success);
-typedef void (^BDVDisc)(id<CoreDAVAccountInfoProvider> discoveredInfo, id<CodeProvider> codeInfo, 
-                        int success, id<CoreDAVAccountInfoProvider, CodeProvider> Info);
-typedef void (^BLOCK)(id, id<CoreDAVAccountInfoProvider>, id<CodeProvider> codeInfo);
-typedef void (^EMPTY_BLOCK)();
-typedef void (^  BDVDiscoveryCompletion1  )(id<CodeProvider> codeInfo, int success, id<CoreDAVAccountInfoProvider> discoveredInfo);
-
-void (^BL)(void(^arg1)(), int i1, void(^arg)(int));
-
-typedef void (^iscoveryCompletionHandler)(void(^arg1)(), id<CoreDAVAccountInfoProvider> discoveredInfo);
-
-typedef void (^DVDisc)(id<CoreDAVAccountInfoProvider> discoveredInfo, id<CodeProvider> codeInfo,
-			void(^arg1)(), int i1, void(^arg)(id<CoreDAVAccountInfoProvider>),
-                        int success, id<CoreDAVAccountInfoProvider, CodeProvider> Info);
-
-
- at interface I @end
- at interface INTF @end
-void (^BLINT)(I<CoreDAVAccountInfoProvider>* ARG, INTF<CodeProvider, CoreDAVAccountInfoProvider>* ARG1);
-
-void  test8608902() {
-  BDVDiscoveryCompletionHandler ppp;
-  ppp(1, 0);
-}
-
-void test9204669() {
-   __attribute__((__blocks__(byref))) char (^addChangeToData)();
-
-   addChangeToData = ^() {
-      return 'b';
-   };
-   addChangeToData();
-}
-
-void test9204669_1() {
-   __attribute__((__blocks__(byref))) void (^addChangeToData)();
-
-   addChangeToData = ^() {
-    addChangeToData();
-   };
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-block-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-// rdar://9055596
-void *sel_registerName(const char *);
-
-typedef void (^FooBlock) (int foo, int bar, int baz);
-	
- at interface Foo { }
- at property (readwrite, copy, nonatomic) FooBlock fooBlock;
- at end
-	
-static void Bar (Foo * foo) {
-	foo.fooBlock (1,2,3);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-byref-in-nested-blocks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-byref-in-nested-blocks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-byref-in-nested-blocks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -D"SEL=void*" -U__declspec  -D"__declspec(X)=" %t-modern-rw.cpp
-// radar 7692350
-
-// rdar://11375908
-typedef unsigned long size_t;
-
-void f(void (^block)(void));
-
- at interface X {
-        int y;
-}
-- (void)foo;
- at end
-
- at implementation X
-- (void)foo {
-        __block int kerfluffle;
-        // radar 7692183
-        __block int x;
-        f(^{
-                f(^{
-                                y = 42;
-                            kerfluffle = 1;
-			    x = 2;
-                });
-        });
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-byref-vars.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-byref-vars.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-byref-vars.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 7540194
-
-extern "C" __declspec(dllexport) void BreakTheRewriter(int i) {
-        __block int aBlockVariable = 0;
-        void (^aBlock)(void) = ^ {
-                aBlockVariable = 42;
-        };
-        aBlockVariable++;
-	if (i) {
-	  __block int bbBlockVariable = 0;
-	  void (^aBlock)(void) = ^ {
-                bbBlockVariable = 42;
-          };
-        }
-}
-
-__declspec(dllexport) extern "C" __declspec(dllexport) void XXXXBreakTheRewriter(void) {
-
-        __block int aBlockVariable = 0;
-        void (^aBlock)(void) = ^ {
-                aBlockVariable = 42;
-        };
-        aBlockVariable++;
-        void (^bBlocks)(void) = ^ {
-                aBlockVariable = 43;
-        };
-        void (^c)(void) = ^ {
-                aBlockVariable = 44;
-        };
-
-}
-
- at interface I
-{
-   id list;
-}
-- (void) Meth;
-// radar 7589385 use before definition
-- (void) allObjects;
- at end
-
- at implementation I
-// radar 7589385 use before definition
-- (void) allObjects {
-    __attribute__((__blocks__(byref))) id *listp;
-
-    ^(void) {
-      *listp++ = 0;
-    };
-}
-- (void) Meth { __attribute__((__blocks__(byref))) void ** listp = (void **)list; }
- at end
-
-// $CLANG -cc1 -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -x objective-c++ -fblocks bug.mm
-// g++ -c -D"__declspec(X)=" bug.cpp

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-captured-nested-bvar.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-captured-nested-bvar.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-captured-nested-bvar.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -x c -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: FileCheck --input-file=%t-rw.cpp %s
-// rdar://9006279
-
-void q(void (^p)(void)) {
-    p();
-}
-
-void f() {
-    __block char BYREF_VAR_CHECK = 'a';
-    __block char d = 'd';
-    q(^{
-        q(^{
-            __block char e = 'e';
-            char l = 'l';
-            BYREF_VAR_CHECK = 'b';
-            d = 'd';
-            q(^{
-                 e = '1';
-                 BYREF_VAR_CHECK = '2';
-                 d = '3';
-               }
-             );
-        });
-    });
-}
-
-int main() {
-    f();
-    return 0;
-}
-
-// CHECK 2: (__Block_byref_BYREF_VAR_CHECK_0 *)BYREF_VAR_CHECK
-// CHECK: (__Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK
-// CHECK: (struct __Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, (struct __Block_byref_d_1 *)&d, 570425344));

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-ivar-access.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-ivar-access.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-ivar-access.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s
-// radar 7575882
-
- at interface F {
-  int supervar;
-}
- at end
-
- at interface G : F {
- at public
-  int ivar;
-}
- at end
-
- at implementation G
-- (void)foo:(F *)arg {
-        int q = arg->supervar;
-        int v = ((G *)arg)->ivar;
-}
- at end
-
-void objc_assign_strongCast(id);
-void __CFAssignWithWriteBarrier(void **location, void *value) {
-        objc_assign_strongCast((id)value);
-}
-
-// radar 7607605
- at interface RealClass {
-        @public
-        int f;
-}
- at end
-
- at implementation RealClass
- at end
-
- at interface Foo {
-        id reserved;
-}
- at end
-
- at implementation Foo
-- (void)bar {
-        ((RealClass*)reserved)->f = 99;
-}
- at end
-
-// CHECK-LP: ((struct G_IMPL *)arg)->ivar
-
-// CHECK-LP: objc_assign_strongCast((id)value)
-
-// CHECK-LP: ((struct RealClass_IMPL *)((RealClass *)((struct Foo_IMPL *)self)->reserved))->f

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-ivar-modern-access.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp 
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
- at interface F {
-  int supervar;
-}
- at end
-
- at interface G : F {
- at public
-  int ivar;
-}
- at end
-
- at implementation G
-- (void)foo:(F *)arg {
-        int q = arg->supervar;
-        int v = ((G *)arg)->ivar;
-}
- at end
-
-void objc_assign_strongCast(id);
-void __CFAssignWithWriteBarrier(void **location, void *value) {
-        objc_assign_strongCast((id)value);
-}
-
-// radar 7607605
- at interface RealClass {
-        @public
-        int f;
-}
- at end
-
- at implementation RealClass
- at end
-
- at interface Foo {
-        id reserved;
-}
- at end
-
- at implementation Foo
-- (void)bar {
-        ((RealClass*)reserved)->f = 99;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-to-bool.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-to-bool.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-cast-to-bool.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 9899834
-
-void *sel_registerName(const char *);
-
- at interface  NSURLDownload
--(void)setBool:(bool)Arg;
- at end
-
- at implementation NSURLDownload
-- (void) Meth
-{
-   [self setBool:(signed char)1];
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-category-property.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-category-property.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-category-property.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s
-// radar 7630636
-
- at class Y, Z;
-
- at interface A
- at property (readonly) Y *y;
- at end
-
- at interface A (cat)
- at property (readonly) Z *z;
- at end
-
-// CHECK-LP: // @property (readonly) Z *z;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-constructor-init.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-constructor-init.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-constructor-init.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar : // 8213998
-
-typedef unsigned int NSUInteger;
-
-typedef struct _NSRange {
-    NSUInteger location;
-    NSUInteger length;
-} NSRange;
-
-static __inline NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
-    NSRange r;
-    r.location = loc;
-    r.length = len;
-    return r;
-}
-
-void bar() {
-    __block NSRange previousRange = NSMakeRange(0, 0);    
-    void (^blk)() = ^{
-        previousRange = NSMakeRange(1, 0);
-    };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-eh.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-eh.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-eh.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  -fobjc-exceptions -o - %s
-// rdar://7522880
-
- at interface NSException
- at end
-
- at interface Foo
- at end
-
- at implementation Foo
-- (void)bar {
-    @try {
-    } @catch (NSException *e) {
-    }
-    @catch (Foo *f) {
-    }
-    @catch (...) {
-    }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-elaborated-type.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-elaborated-type.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-elaborated-type.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D_Bool=bool -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D_Bool=bool -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// radar 8143056
-
-typedef struct objc_class *Class;
-typedef unsigned NSPointerFunctionsOptions;
-extern "C" id NSClassFromObject(id object);
-void *sel_registerName(const char *);
-
-struct NSSlice {
-  int i1;
-};
-
- at interface NSConcretePointerFunctions {
-  @public
-    struct NSSlice slice;
-}
-- (bool)initializeSlice:(struct NSSlice *)slicep withOptions:(NSPointerFunctionsOptions)options;
- at end
-
- at implementation NSConcretePointerFunctions
-- (id)initWithOptions:(NSPointerFunctionsOptions)options {
-      if (![NSClassFromObject(self) initializeSlice:&slice withOptions:options])
-        return 0;
-      return self;
-  }
-- (bool)initializeSlice:(struct NSSlice *)slicep withOptions:(NSPointerFunctionsOptions)options {
-    return 0;
-  }
- at end
-
- at interface I1 @end
-
- at implementation I1
-+ (struct s1 *) f0 {
-  return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-extern-c.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-extern-c.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-extern-c.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -o - %s
-// radar 7546096
-
-extern "C" {
-        short foo() { } 
-}
-typedef unsigned char Boolean;
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-            
- at protocol P @end
-
- at interface MyList
- at end
-    
- at implementation MyList
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-        return 0;
-}
- at end
-
- at interface MyList (BasicTest)
-- (void)compilerTestAgainst;
- at end
-
-int LOOP();
- at implementation MyList (BasicTest)
-- (void)compilerTestAgainst {
-  id el;
-        for (el in self) 
-	  { LOOP(); }
-        for (id el1 in self) 
-	  LOOP();
-
-	for (el in (self)) 
-          if (el)
-            LOOP(); 
-
-	for (el in ((self))) 
-          if (el)
-            LOOP(); 
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at protocol P @end
-
- at interface MyList
- at end
-    
- at implementation MyList
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-        return 0;
-}
- at end
-
- at interface MyList (BasicTest)
-- (void)compilerTestAgainst;
- at end
-
-int LOOP();
-int INNERLOOP();
-void END_LOOP();
- at implementation MyList (BasicTest)
-- (void)compilerTestAgainst {
-  id el;
-        for (el in self) 
-	  { LOOP(); 
-            for (id el1 in self) 
-	       INNER_LOOP();
-
-	    END_LOOP();
-	  }
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at protocol P @end
-
- at interface MyList
- at end
-    
- at implementation MyList
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-        return 0;
-}
- at end
-
- at interface MyList (BasicTest)
-- (void)compilerTestAgainst;
- at end
-
-int LOOP();
- at implementation MyList (BasicTest)
-- (void)compilerTestAgainst {
-  MyList * el;
-        for (el in self) 
-	  { LOOP(); }
-        for (MyList *  el1 in self) 
-	  LOOP();
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at interface MyList
-- (id) allKeys;
- at end
-    
- at implementation MyList
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-        return 0;
-}
-- (id) allKeys { return 0; }
- at end
-
- at interface MyList (BasicTest)
-- (void)compilerTestAgainst;
- at end
-
-int LOOP();
- at implementation MyList (BasicTest)
-- (void)compilerTestAgainst {
-  MyList * el;
-        for (el in [el allKeys]) { LOOP(); 
-	  }
-
-        for (id el1 in[el allKeys]) { LOOP(); 
-	  }
-        for (el in([el allKeys])) { LOOP(); 
-	  }
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-void *sel_registerName(const char *);
-void objc_enumerationMutation(id);
-
- at interface MyList
-- (id) allKeys;
- at end
-    
- at implementation MyList
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount
-{
-        return 0;
-}
-- (id) allKeys { return 0; }
- at end
-
- at interface MyList (BasicTest)
-- (void)compilerTestAgainst;
- at end
-
-int LOOP();
- at implementation MyList (BasicTest)
-- (void)compilerTestAgainst {
-  MyList * el;
-  int i;
-        for (el in [el allKeys]) { 
-		for (i = 0; i < 10; i++)
-		  if (i == 5)
-		   break;
-
-		if (el == 0)
-		 break;
-		if (el != self)
-		  continue;
-		LOOP(); 
-	  }
-
-        for (id el1 in[el allKeys]) { 
-	    LOOP(); 
-	    for (el in self) {
-	      if (el)
-		continue;
-	    }
-	    if (el1)
-	      break;
-	  }
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-6.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-6.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-6.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://5716356
-// FIXME: Should be able to pipe into clang, but code is not
-// yet correct for other reasons: rdar://5716940
-
-void *sel_registerName(const char *);
-void objc_enumerationMutation(id);
-
- at class NSNotification;
- at class NSMutableArray;
-
-void foo(NSMutableArray *notificationArray, id X) {
-  for (NSNotification *notification in notificationArray)
-    [X postNotification:notification];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-7.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-7.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-7.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at class NSArray;
-int main() {
-	NSArray *foo;
-	for (Class c in foo) { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-in-block.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-in-block.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-in-block.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// rdar:// 9878420
-
-typedef unsigned long size_t;
-
-void objc_enumerationMutation(id);
-void *sel_registerName(const char *);
-typedef void (^CoreDAVCompletionBlock)(void);
-
- at interface I
-- (void)M;
-- (id) ARR;
- at property (readwrite, copy, nonatomic) CoreDAVCompletionBlock c;
- at end
-
- at implementation I
-- (void)M {
-    I* ace;
-    self.c = ^() {
-          // sanity test for the changes.
-	  [ace ARR];
-          for (I *privilege in [ace ARR]) { }
-    };
-    self.c = ^() {
-          // sanity test for the changes.
-	  [ace ARR];
-    };
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-protocol-id.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-protocol-id.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-foreach-protocol-id.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar:// 9039342
-
-void *sel_registerName(const char *);
-void objc_enumerationMutation(id);
-
- at protocol CoreDAVLeafDataPayload @end
-
- at class NSString;
-
- at interface CoreDAVAction
-- (id) context;
- at end
-
- at interface I
-{
-  id uuidsToAddActions;
-}
- at end
-
- at implementation I
-- (void) Meth {
-  for (id<CoreDAVLeafDataPayload> uuid in uuidsToAddActions) {
-    CoreDAVAction *action = 0;
-    id <CoreDAVLeafDataPayload> payload = [action context];
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-forward-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-forward-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-forward-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://6969189
-
- at class XX;
- at class YY, ZZ, QQ;
- at class ISyncClient, SMSession, ISyncManager, ISyncSession, SMDataclassInfo, SMClientInfo,
-    DMCConfiguration, DMCStatusEntry;
-
- at interface QQ
-
- at end
-
- at interface SMDataclassInfo : QQ
-- (XX*) Meth;
-- (DMCStatusEntry*)Meth2;
- at end
-
- at implementation SMDataclassInfo
-- (XX*) Meth { return 0; }
-- (DMCStatusEntry*)Meth2 { return 0; }
- at end
-
- at interface YY 
-{
-  ISyncClient *p1;
-  ISyncSession *p2;
-}
- at property (copy) ISyncClient *p1;
- at end
-
- at implementation YY
- at synthesize p1;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-forward-class.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-forward-class.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-forward-class.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-extern "C" {
- at class XX;
- at class YY, ZZ, QQ;
- at class ISyncClient, SMSession, ISyncManager, ISyncSession, SMDataclassInfo, SMClientInfo,
-    DMCConfiguration, DMCStatusEntry;
-
- at interface QQ
-
- at end
-
- at interface SMDataclassInfo : QQ
-- (XX*) Meth;
-- (DMCStatusEntry*)Meth2;
- at end
-
- at implementation SMDataclassInfo
-- (XX*) Meth { return 0; }
-- (DMCStatusEntry*)Meth2 { return 0; }
- at end
-
- at interface YY 
-{
-  ISyncClient *p1;
-  ISyncSession *p2;
-}
- at property (copy) ISyncClient *p1;
- at end
-
- at implementation YY
- at synthesize p1;
- at end
-
-extern "C" {
- at class CCC;
- at class Protocol, P , Q;
-int I,J,K;
-};
-
-};
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-function-decl.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-function-decl.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-function-decl.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -x objective-c++ -fblocks -o - %s
-
-extern "C" __declspec(dllexport) void BreakTheRewriter(void) {
-        __block int aBlockVariable = 0;
-        void (^aBlock)(void) = ^ {
-                aBlockVariable = 42;
-        };
-        aBlockVariable++;
-        void (^bBlocks)(void) = ^ {
-                aBlockVariable = 43;
-        };
-        void (^c)(void) = ^ {
-                aBlockVariable = 44;
-        };
-
-}
-__declspec(dllexport) extern "C" void AnotherBreakTheRewriter(int *p1, double d) {
-
-        __block int bBlockVariable = 0;
-        void (^aBlock)(void) = ^ {
-                bBlockVariable = 42;
-        };
-        bBlockVariable++;
-        void (^bBlocks)(void) = ^ {
-                bBlockVariable = 43;
-        };
-        void (^c)(void) = ^ {
-                bBlockVariable = 44;
-        };
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-implementation.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-implementation.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-implementation.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 7649577
-
- at interface a
- at end
-
- at interface b : a
- at end
-
- at implementation b
- at end
-
- at interface NSArray @end
- at class NSArray;
- at implementation NSArray @end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-ivar-use.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-ivar-use.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-ivar-use.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 7490331
-
-void *sel_registerName(const char *);
-
- at interface Foo {
-        int a;
-        id b;
-}
-- (void)bar;
-- (void)baz:(id)q;
- at end
-
- at implementation Foo
-// radar 7522803
-static void foo(id bar) {
-        int i = ((Foo *)bar)->a;
-}
-
-- (void)bar {
-        a = 42;
-        [self baz:b];
-}
-- (void)baz:(id)q {
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-line-directive.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-line-directive.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-line-directive.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang -fms-extensions -rewrite-objc %t.mm -o %t-rw.cpp
-// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s
-// RUN: %clang -g -fms-extensions -rewrite-objc %t.mm -o %t-rw.cpp
-// RUN: FileCheck -check-prefix LPG --input-file=%t-rw.cpp %s
-// rdar://13138170
-
-int z();
-
-int x() {
-    id foo;
-    for (id y in foo) {
-        z();
-    }
-    return 0;
-}
-// CHECK-LP-NOT: #line
-// CHECK-LPG: #line

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-local-externs-in-block.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-local-externs-in-block.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-local-externs-in-block.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 7735987
-
-extern "C" int printf(const char*, ...);
-
-void bar(void (^block)()) {
-	block();
-}
-
-int main() {
-	static int myArr[3] = {1, 2, 3};
-	printf ("%d %d %d\n", myArr[0], myArr[1], myArr[2]);
-	
-	bar(^{
-		printf ("%d %d %d\n", myArr[0], myArr[1], myArr[2]);
-		myArr[0] = 42;
-		myArr[2] = 100;
-		printf ("%d %d %d\n", myArr[0], myArr[1], myArr[2]);
-	});
-
-	printf ("%d %d %d\n", myArr[0], myArr[1], myArr[2]);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-local-static-id.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-local-static-id.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-local-static-id.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" -emit-llvm -o %t %t-rw.cpp
-// radar 7946975
-
-void *sel_registerName(const char *);
-
- at interface foo
- at end
-
- at interface foo2 : foo
-+ (id)x;
- at end
-
-typedef void (^b_t)(void);
-
-void bar(b_t block);
-
-void f() {
-        static id foo = 0;
-        bar(^{
-                foo = [foo2 x];
-        });
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-message-expr.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-message-expr.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-message-expr.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s
-// radar 7617047
-
- at interface Baz
-- (id)y;
-+ (id)z;
- at end
-
- at interface Foo {
- at public
-	int bar;
-}
- at end
-
-extern Foo* x(id a);
-
-int f(Baz *baz) {
-	int i = x([Baz z])->bar;
-        int j = ((Foo*)[Baz z])->bar;
-        int k = x([baz y])->bar;
-        return i+j+k;
-}
-
-// CHECK-LP: ((struct Foo_IMPL *)x(((id (*)(id, SEL))(void *)objc_msgSend)(objc_getClass("Baz"), sel_registerName("z"))))->bar

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-array-literal.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-array-literal.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-array-literal.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://10803676
-
-extern "C" void *sel_registerName(const char *);
- at class NSString;
-
- at interface NSNumber
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
-typedef unsigned long NSUInteger;
-
- at interface NSArray 
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
- at end
-
-int i;
-int main() {
-  NSArray *array = @[ @"Hello", @1234 ];
-  if (i) {
-    NSArray *array = @[ @"Hello", @1234 ];
-  }
-  NSArray *array1 = @[ @"Hello", @1234, @[ @"Hello", @1234 ] ];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-atautoreleasepool.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-atautoreleasepool.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-atautoreleasepool.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o %t-rw.cpp
-// RUN: FileCheck --input-file=%t-rw.cpp %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 11474836
-
-extern "C"
-void *sel_registerName(const char *);
-
- at interface I
-{
-  id ivar;
-}
-- (id) Meth;
-+ (id) MyAlloc;;
- at end
-
- at implementation I
-- (id) Meth {
-   @autoreleasepool {
-      id p = [I MyAlloc];
-      if (!p)
-        return ivar;
-   }
-  return 0;
-}
-+ (id) MyAlloc {
-    return 0;
-}
- at end
-
-// CHECK: /* @autoreleasepool */ { __AtAutoreleasePool __autoreleasepool;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block-consts.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block-consts.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block-consts.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -U__declspec -D"__declspec(X)=" %t-modern-rw.cpp
-// rdar:// 8243071
-
-// rdar://11375908
-typedef unsigned long size_t;
-
-void x(int y) {}
-void f() {
-    const int bar = 3;
-    int baz = 4;
-    __block int bab = 4;
-    __block const int bas = 5;
-    void (^b)() = ^{
-        x(bar);
-        x(baz);
-        x(bab);
-        x(bas);
-        b();
-    };
-    b();
-} 

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block-ivar-call.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block-ivar-call.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block-ivar-call.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.m
-// RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %t.m -o %t-rw.cpp 
-// RUN: FileCheck --input-file=%t-rw.cpp %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
- at interface Foo {
-    void (^_block)(void);
-}
- at end
-
- at implementation Foo
-- (void)bar {
-    _block();
-}
- at end
-
-// CHECK: ((void (*)(struct __block_impl *))((struct __block_impl *)(*(void (**)(void))((char *)self + OBJC_IVAR_$_Foo$_block)))->FuncPtr)((struct __block_impl *)(*(void (**)(void))((char *)self + OBJC_IVAR_$_Foo$_block)));

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-block.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-// rdar://11230308
-
-typedef unsigned long size_t;
-typedef struct {
-    char byte0;
-    char byte1;
-} CFUUIDBytes;
-
-void x(void *);
-
-void y() {
-    __block CFUUIDBytes bytes;
-    
-    void (^bar)() = ^{
-        x(&bytes);
-    };
-}
-
-// rdar://11236342
-int foo() {
-    __block int hello;
-    return hello;
-}
-
-// rdar://7547630
-// rewriting multiple __block decls on wintin same decl stmt.
-void radar7547630() {
-  __block int BI1, BI2;
-
-  __block float FLOAT1, FT2, FFFFFFFF3,
-   FFFXXX4;
-
-  __block void (^B)(), (^BB)();
-}
-
-// rewriting multiple __block decls on wintin same decl stmt
-// with initializers.
-int  rdar7547630(const char *keybuf, const char *valuebuf) {
-  __block int BI1 = 1, BI2 = 2;
-
-  double __block BYREFVAR = 1.34, BYREFVAR_NO_INIT, BYREFVAR2 = 1.37;
-
-  __block const char *keys = keybuf, *values = valuebuf, *novalues;
-
-  return BI2;
-}
-
-// rdar://11326988
-typedef struct _z {
-    int location;
-    int length;
-} z;
-
-z w(int loc, int len);
-
- at interface rdar11326988
- at end
- at implementation rdar11326988 
-- (void)y:(int)options {
-    __attribute__((__blocks__(byref))) z firstRange = w(1, 0);
-    options &= ~(1 | 2);
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-captured-nested-bvar.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-captured-nested-bvar.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-captured-nested-bvar.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s
-// rdar://9006279
-
-void q(void (^p)(void)) {
-    p();
-}
-
-void f() {
-    __block char BYREF_VAR_CHECK = 'a';
-    __block char d = 'd';
-    q(^{
-        q(^{
-            __block char e = 'e';
-            char l = 'l';
-            BYREF_VAR_CHECK = 'b';
-            d = 'd';
-            q(^{
-                 e = '1';
-                 BYREF_VAR_CHECK = '2';
-                 d = '3';
-               }
-             );
-        });
-    });
-}
-
-int main() {
-    f();
-    return 0;
-}
-
-// CHECK 2: (__Block_byref_BYREF_VAR_CHECK_0 *)BYREF_VAR_CHECK
-// CHECK: {(void*)0,(__Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, 0, sizeof(__Block_byref_BYREF_VAR_CHECK_0), 'a'}
-// CHECK: __Block_byref_BYREF_VAR_CHECK_0 *)&BYREF_VAR_CHECK, (__Block_byref_d_1 *)&d, 570425344));

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-catch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-catch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-catch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -fexceptions  -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-void foo(id arg);
-
- at interface NSException
- at end
-
- at interface Foo
- at end
-
- at implementation Foo
-- (void)bar {
-    @try {
-    } @catch (NSException *e) {
-	foo(e);
-    }
-    @catch (Foo *f) {
-    }
-    @catch (...) {
-      @try {
-      }
-      @catch (Foo *f1) {
-	foo(f1);
-      }
-      @catch (id pid) {
-	foo(pid);
-      }
-    }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-class.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-class.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-class.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,70 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
- at protocol PROTO @end
-
- at interface empty_root @end
-
- at interface root_with_ivars
-{
-  id ROOT_IVAR;
-  id ROOT1_IVAR;
-}
- at end
-
- at interface MAXIMAL : root_with_ivars<PROTO>
-{
-  double D_IVAR;
-  double D_PROPERTY;
-}
-- (void) V_METH;
- at end
-
- at implementation MAXIMAL
-- (void) V_METH {}
- at end
-//=========================================
- at interface empty_class @end
-
- at implementation empty_class @end
-//=========================================
- at interface class_empty_root : empty_root @end
-
- at implementation class_empty_root @end
-//=========================================
- at interface class_with_ivars : empty_root
-{
-  int class_with_ivars_IVAR;
-}
- at end
-
- at implementation class_with_ivars @end
-//=========================================
- at interface class_has_no_ivar : root_with_ivars @end
-
- at implementation class_has_no_ivar @end
-
-//============================class needs to be synthesized here=====================
- at interface SUPER  {
- at public
-  double divar;
-  SUPER *p_super;
-}
- at end
-
- at interface INTF @end
-
- at implementation INTF  
-- (SUPER *) Meth : (SUPER *)arg { 
-  return arg->p_super; 
-}
- at end
-
- at class FORM_CLASS;
- at interface INTF_DECL  {
-}
- at end
-
-double Meth(INTF_DECL *p, FORM_CLASS *f) {
-  return 1.34;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-container-literal.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-container-literal.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-container-literal.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://10803676
-
-void *sel_registerName(const char *);
-typedef unsigned long NSUInteger;
-typedef long NSInteger;
-typedef bool BOOL;
-
- at interface NSNumber
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value ;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value ;
- at end
-
- at protocol NSCopying @end
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id <NSCopying> [])keys count:(NSUInteger)cnt;
- at end
-
- at interface NSArray 
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
- at end
-
- at interface NSString<NSCopying>
- at end
-
-id NSUserName();
-
- at interface NSDate
-+ (id)date;
- at end
-
-int main() {
-NSArray *array = @[ @"Hello", NSUserName(), [NSDate date], [NSNumber numberWithInt:42]];
-
-NSDictionary *dictionary = @{ @"name" : NSUserName(), @"date" : [NSDate date], @"process" : @"processInfo"};
-
-NSDictionary *dict = @{ @"name":@666, @"man":@__objc_yes, @"date":@1.3 };
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-default-property-synthesis.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-default-property-synthesis.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-default-property-synthesis.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fms-extensions -fobjc-default-synthesize-properties -rewrite-objc %t.mm -o %t-rw.cpp 
-// RUN: FileCheck --input-file=%t-rw.cpp %s
-// RUN: %clang_cc1 -fsyntax-only  -Werror -DSEL="void *" -Did="struct objc_object *" -Wno-attributes -Wno-address-of-temporary -U__declspec -D"__declspec(X)=" %t-rw.cpp
-// rdar://11374235
-
-extern "C" void *sel_registerName(const char *);
-
- at interface NSObject 
-- (void) release;
-- (id) retain;
- at end
- at class NSString;
-
- at interface SynthItAll : NSObject
- at property int howMany;
- at property (retain) NSString* what; 
- at end
-
- at implementation SynthItAll
- at end
-
-
- at interface SynthSetter : NSObject
- at property (nonatomic) int howMany; 
- at property (nonatomic, retain) NSString* what; 
- at end
-
- at implementation SynthSetter
-
-- (int) howMany {
-    return _howMany;
-}
-// - (void) setHowMany: (int) value
-
-- (NSString*) what {
-    return _what;
-}
-// - (void) setWhat: (NSString*) value    
- at end
-
-
- at interface SynthGetter : NSObject
- at property (nonatomic) int howMany;
- at property (nonatomic, retain) NSString* what;
- at end
-
- at implementation SynthGetter
-// - (int) howMany
-- (void) setHowMany: (int) value {
-    _howMany = value;
-}
-
-// - (NSString*) what
-- (void) setWhat: (NSString*) value {
-    if (_what != value) {
-        [_what release];
-        _what = [value retain];
-    }
-}
- at end
-
-typedef struct {
-        int x:1;
-        int y:1;
-} TBAR;
-
- at interface NONAME
-{
-  TBAR _bar;
-}
- at property TBAR bad;
- at end
-
- at implementation NONAME
- at end
-
-// CHECK: (*(int *)((char *)self + OBJC_IVAR_$_SynthItAll$_howMany)) = howMany;
-// CHECK: return (*(int *)((char *)self + OBJC_IVAR_$_SynthGetter$_howMany));
-// CHECK: (*(TBAR *)((char *)self + OBJC_IVAR_$_NONAME$_bad)) = bad;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-extern-c-func-decl.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-extern-c-func-decl.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-extern-c-func-decl.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -U__declspec -rewrite-objc -x objective-c++ -fblocks -o %t-rw.cpp %s
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -Wno-attributes -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-// rdar://11131490
-
-typedef unsigned long size_t;
-extern "C" __declspec(dllexport) void BreakTheRewriter(void) {
-        __block int aBlockVariable = 0;
-        void (^aBlock)(void) = ^ {
-                aBlockVariable = 42;
-        };
-        aBlockVariable++;
-        void (^bBlocks)(void) = ^ {
-                aBlockVariable = 43;
-        };
-        void (^c)(void) = ^ {
-                aBlockVariable = 44;
-        };
-
-}
-__declspec(dllexport) extern "C" void AnotherBreakTheRewriter(int *p1, double d) {
-
-        __block int bBlockVariable = 0;
-        void (^aBlock)(void) = ^ {
-                bBlockVariable = 42;
-        };
-        bBlockVariable++;
-        void (^bBlocks)(void) = ^ {
-                bBlockVariable = 43;
-        };
-        void (^c)(void) = ^ {
-                bBlockVariable = 44;
-        };
-
-}
-
-int
-
-__declspec (dllexport)
-
-main (int argc, char *argv[])
-{
-        __block int bBlockVariable = 0;
-        void (^aBlock)(void) = ^ {
-                bBlockVariable = 42;
-        };
-}
-
-// rdar://11275241
-static char stringtype;
-char CFStringGetTypeID();
-void x(void (^)());
-
-static void initStatics(int arg, ...) {
-    x(^{
-        stringtype = CFStringGetTypeID();
-    });
-}
-static void initStatics1(...) {
-    x(^{
-        stringtype = CFStringGetTypeID();
-    });
-}
-static void initStatics2() {
-    x(^{
-        stringtype = CFStringGetTypeID();
-    });
-}
-
-// rdar://11314329
-static inline const void *auto_zone_base_pointer(void *zone, const void *ptr) { return 0; }
-
- at interface I
-{
-   id list;
-}
-- (void) Meth;
-// radar 7589385 use before definition
-- (void) allObjects;
- at end
-
- at implementation I
-// radar 7589385 use before definition
-- (void) allObjects {
-    __attribute__((__blocks__(byref))) id *listp;
-
-    void (^B)(void) = ^(void) {
-      *listp++ = 0;
-    };
-
-    B();
-}
-- (void) Meth { __attribute__((__blocks__(byref))) void ** listp = (void **)list; }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivar-access.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivar-access.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivar-access.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %s -o %t-rw.cpp
-// RUN: %clang_cc1 -Werror -fsyntax-only -Wno-address-of-temporary -Wno-c++11-narrowing -std=c++11 -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-
-struct OUTSIDE {
-  int i_OUTSIDE;
-  double d_OUTSIDE;
-};
-
-
- at interface I1 {
- at protected
-  struct OUTSIDE ivar_I1;
-
-  struct INNER_I1 {
-    int i_INNER_I1;
-    double d_INNER_I1;
-  };
-
-  struct INNER_I1 ivar_I2;
-
-  struct OUTSIDE ivar_I3;
-
-  struct {
-    int i_noname;
-    double d_noname;
-  } NONAME_I4;
-
-  struct {
-    int i_noname;
-    double d_noname;
-  } NONAME_I5;
-}
- at end
-
- at implementation I1
-- (void) I1_Meth {
-  ivar_I1.i_OUTSIDE = 0;
-
-  ivar_I2.i_INNER_I1 = 1;
-
-  ivar_I3.i_OUTSIDE = 2;
-
-  NONAME_I4.i_noname = 3;
-
-  NONAME_I5.i_noname = 4;
-}
- at end
-
- at interface INTF2 {
- at protected
-  struct OUTSIDE ivar_INTF2;
-
-  struct {
-    int i_noname;
-    double d_noname;
-  } NONAME_INTF4;
-
-
-  struct OUTSIDE ivar_INTF3;
-
-  struct INNER_I1 ivar_INTF4;
-
-  struct {
-    int i_noname;
-    double d_noname;
-  } NONAME_INTF5;
-
-  struct INNER_INTF2 {
-    int i_INNER_INTF2;
-    double d_INNER_INTF2;
-  };
-
-  struct INNER_INTF2 ivar_INTF6, ivar_INTF7;
-
-  struct INNER_INTF3 {
-    int i;
-  } X1,X2,X3;
-
-}
- at end
-
- at implementation INTF2
-- (void) I2_Meth {
-  ivar_INTF2.i_OUTSIDE = 0;
-
-  ivar_INTF4.i_INNER_I1 = 1;
-
-  ivar_INTF3.i_OUTSIDE = 2;
-
-  NONAME_INTF4.i_noname = 3;
-
-  NONAME_INTF5.i_noname = 4;
-  ivar_INTF6.i_INNER_INTF2 = 5;
-  ivar_INTF7.i_INNER_INTF2 = 5;
-  X1.i = X2.i = X3.i = 1;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivar-use.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivar-use.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivar-use.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw-modern.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw-modern.cpp
-
-void *sel_registerName(const char *);
-
- at interface Foo {
-        int a;
-        id b;
-}
-- (void)bar;
-- (void)baz:(id)q;
- at end
-
- at implementation Foo
-// radar 7522803
-static void foo(id bar) {
-        int i = ((Foo *)bar)->a;
-}
-
-- (void)bar {
-        a = 42;
-}
-- (void)baz:(id)q {
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,124 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-
- at interface NSCheapMutableString {
- at private
-    struct S s0;
-    union {
-        char *fat;
-        unsigned char *thin;
-    } contents;
-
-    struct {
-        unsigned int isFat:1;
-        unsigned int freeWhenDone:1;
-        unsigned int refs:30;
-    } flags;
-
-    struct S {
-        int iS1;
-        double dS1;
-    } others;
-
-    union U {
-      int iU1;
-      double dU1;
-    } u_others;
-
-   enum {
-    One, Two
-   } E1;
-
-   enum e {
-    Yes = 1,
-    No = 0
-   } BoOl;
-
-   struct S s1;
-
-   enum e E2;
-
-    union {
-        char *fat;
-        unsigned char *thin;
-    } Last_contents;
-
-    struct {
-        unsigned int isFat:1;
-        unsigned int freeWhenDone:1;
-        unsigned int refs:30;
-    } Last_flags;
-}
- at end
-
- at interface III {
- at private
-    struct S s0;
-
-    union {
-        char *fat;
-        unsigned char *thin;
-    } contents;
-
-    struct {
-        unsigned int isFat:1;
-        unsigned int freeWhenDone:1;
-        unsigned int refs:30;
-    } flags;
-
-   enum {
-    One1 = 1000, Two1, Three1
-   } E1;
-
-   struct S s1;
-
-   enum e E2;
-
-    union {
-        char *fat;
-        unsigned char *thin;
-    } Last_contents;
-
-    struct {
-        unsigned int isFat:1;
-        unsigned int freeWhenDone:1;
-        unsigned int refs:30;
-    } Last_flags;
-}
- at end
-
-enum OUTSIDE {
-  yes
-};
-
- at interface MoreEnumTests {
- at private
-    enum INSIDE {
-        no
-    } others;
-
-    enum OUTSIDE meetoo;
-
-    enum {
-       one,
-       two
-    } eu;
-}
- at end
-
- at interface I {
-    enum INSIDE I1;
-    enum OUTSIDE  I2;
-    enum ALSO_INSIDE {
-      maybe
-    } I3;
-
-   enum ALSO_INSIDE I4;
-
-    enum {
-       three,
-       four
-    } I5;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars-2.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars-2.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars-2.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
- at interface B @end
-
- at interface A {
-  struct s0 {
-    int f0;
-    int f1;
-  } f0;
-  id f1;
-__weak B *f2;
-  int f3 : 5;
-  struct s1 {
-    int *f0;
-    int *f1;
-  } f4[2][1];
-}
- at end
-
- at interface C : A
- at property int p3;
- at end
-
- at implementation C
- at synthesize p3 = _p3;
- at end
-
- at interface A()
- at property int p0;
- at property (assign) __strong id p1;
- at property (assign) __weak id p2;
- at end
-
-// FIXME: Check layout for this class, once it is clear what the right
-// answer is.
- at implementation A
- at synthesize p0 = _p0;
- at synthesize p1 = _p1;
- at synthesize p2 = _p2;
- at end
-
- at interface D : A
- at property int p3;
- at end
-
-// FIXME: Check layout for this class, once it is clear what the right
-// answer is.
- at implementation D
- at synthesize p3 = _p3;
- at end
-
-typedef unsigned short UInt16;
-
-
-typedef signed char BOOL;
-typedef unsigned int FSCatalogInfoBitmap;
-
- at interface NSFileLocationComponent {
-    @private
-
-    id _specifierOrStandardizedPath;
-    BOOL _carbonCatalogInfoAndNameAreValid;
-    FSCatalogInfoBitmap _carbonCatalogInfoMask;
-    id _name;
-    id _containerComponent;
-    id _presentableName;
-    id _iconAsAttributedString;
-}
- at end
-
- at implementation NSFileLocationComponent @end
-
-// rdar://11229770
-
- at interface Foo {
-  int bar:26;
-}
- at end
-
- at implementation Foo
- at end
-
- at interface Foo1 {
-  int bar:26;
-  int bar2:4;
-}
- at end
-
- at implementation Foo1
- at end
-
- at interface Foo3 {
-  int foo;
-  int bar:26;
-}
- at end
-
- at implementation Foo3
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-ivars.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
- at protocol P @end
- at protocol P1 @end
- at interface INTF
-{
-  id CLASS_IVAR;
-  id<P, P1> Q_IVAR;
-
-  void (^_block)(id<P>);
-  void (*_fptr)(void (^_block)(id<P>));
-  char CLASS_EXT_IVAR;
-  id<P, P1> (^ext_block)(id<P>, INTF<P,P1>*, INTF*);
-  id IMPL_IVAR;
-  double D_IMPL_IVAR;
-  INTF<P> *(*imp_fptr)(void (^_block)(id<P>, INTF<P,P1>*));
-  id arr[100];
-}
- at end
-
- at implementation INTF @end
-
- at interface MISC_INTF
-{
-  id CLASS_IVAR;
-  id<P, P1> Q_IVAR;
-
-  void (^_block)(id<P>);
-  void (*_fptr)(void (^_block)(id<P>));
-  unsigned int BF : 8;
-}
- at end
-
- at interface MISC_INTF()
-{
-  char CLASS_EXT_IVAR;
-  id<P, P1> (^ext_block)(id<P>, MISC_INTF<P,P1>*, MISC_INTF*);
-}
- at end
-
- at interface MISC_INTF() {
-  int II1;
-  double DD1; }
- at end
-
- at interface MISC_INTF() { int II2; double DD2; }
- at end
-
- at interface MISC_INTF() { int II3; 
-  double DD3; }
- at end
-
- at interface MISC_INTF() { int II4; double DD4; 
-}
- at end
-
- at implementation MISC_INTF
-{
-  id IMPL_IVAR;
-  double D_IMPL_IVAR;
-  MISC_INTF<P> *(*imp_fptr)(void (^_block)(id<P>, MISC_INTF<P,P1>*));
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-nested-ivar.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-nested-ivar.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-nested-ivar.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.m
-// RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %t.m -o %t-rw.cpp 
-// RUN: FileCheck --input-file=%t-rw.cpp %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
- at interface NSURLResponse {
- at public
-  NSURLResponse *InnerResponse;
-}
- at end
-
- at interface NSCachedURLResponseInternal 
-{
-    @public
-    NSURLResponse *response;
-}
- at end
-
- at interface NSCachedURLResponse
-{
-    @private
-    NSCachedURLResponseInternal *_internal;
-}
-- (void) Meth;
- at end
-
- at implementation NSCachedURLResponse
-- (void) Meth {
-    _internal->response->InnerResponse = 0;
-  }
- at end
-
-// CHECK: (*(NSURLResponse **)((char *)(*(NSURLResponse **)((char *)(*(NSCachedURLResponseInternal **)((char *)self + OBJC_IVAR_$_NSCachedURLResponse$_internal)) + OBJC_IVAR_$_NSCachedURLResponseInternal$response)) + OBJC_IVAR_$_NSURLResponse$InnerResponse)) = 0;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-private-ivars.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-private-ivars.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-private-ivars.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %s -o %t-rw.cpp
-// RUN: %clang_cc1 -Werror -fsyntax-only -Wno-address-of-temporary -Wno-c++11-narrowing -std=c++11 -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-// rdar://11351299
-
-struct Q {
-  int x;
-};
-
- at interface I
- at end
-
- at interface I() {
-
-  struct {
-    int x;
-  } unnamed;
-
-  struct S {
-    int x;
-  } foo;
-
-  double dd;
-
-  struct S foo1;
-}
- at end
-
- at implementation I 
-{
-  struct P {
-    int x;
-  } bar;
-
-  double ee;
-
-  struct Q bar1;
-
-  struct {
-    int x;
-  } noname;
-}
-
-- (void) Meth { 
-  foo.x = 1; 
-  bar.x = 2; 
-  dd = 1.23; 
-  ee = 0.0; 
-  foo1.x = 3;
-  bar1.x = 4;
-  noname.x = 3;
-  unnamed.x = 10;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-protocol-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-protocol-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-protocol-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s
-// rdar://11248048
-
- at protocol NSCopying @end
-
- at interface INTF<NSCopying>
- at end
-
- at implementation INTF @end
-
-// CHECK: static struct _protocol_t _OBJC_PROTOCOL_NSCopying
-// CHECK: static struct _protocol_t *_OBJC_LABEL_PROTOCOL_$_NSCopying = &_OBJC_PROTOCOL_NSCopying;
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-protocol.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-protocol.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-protocol.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
- at protocol ROOT @end
-
- at protocol P1 @end
-
- at protocol P2<ROOT> @end
-
- at class NSObject;
-
- at protocol PROTO <P1, P2>
-- (id) INST_METHOD;
-+ (id) CLASS_METHOD : (id)ARG;
- at property id Prop_in_PROTO;
- at optional
-- (id) opt_instance_method;
-+ (id) opt_class_method;
- at property (readonly, retain) NSObject *AnotherProperty;
- at required
-- (id) req;
- at optional
-- (id) X_opt_instance_method;
-+ (id) X_opt_class_method;
- at end
-
- at interface INTF <PROTO, ROOT>
- at end
-
- at implementation INTF
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-qualified-type.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-qualified-type.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-qualified-type.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D_Bool=bool -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// rdar://13562505
-
- at protocol OS_dispatch_object @end
-
- at interface NSObject @end
-
- at protocol OS_dispatch_queue <OS_dispatch_object> @end typedef NSObject<OS_dispatch_queue> *dispatch_queue_t;
-
-typedef id<OS_dispatch_queue> dispatch_queue_i;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-struct-ivar-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-struct-ivar-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-struct-ivar-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %s -o %t-rw.cpp
-// RUN: %clang_cc1 -Werror -fsyntax-only -Wno-address-of-temporary -Wno-c++11-narrowing -std=c++11 -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-// rdar://11323187
-
-typedef unsigned long NSUInteger;
-
-typedef struct _NSRange {
-    NSUInteger location;
-    NSUInteger length;
-} NSRange;
-
-typedef struct {
-    NSUInteger _capacity;
-    NSRange _ranges[0];
-} _NSRangeInfo;
-
- at interface Foo{
-    @protected 
-    struct _bar {
-        int x:1;
-        int y:1;
-    } bar;
-    union {
-        struct {
-            NSRange _range;
-        } _singleRange;
-        struct {
-            void *  _data;
-            void *_reserved;
-        } _multipleRanges;
-    } _internal;    
-}
- at end
- at implementation Foo
-- (void)x:(Foo *)other {
-  bar.x = 0;
-  bar.y = 1;
-  self->_internal._singleRange._range = (( other ->bar.x) ? &( other ->_internal._singleRange._range) : ((NSRange *)(&(((_NSRangeInfo *)( other ->_internal._multipleRanges._data))->_ranges))))[0];
-}
- at end
- at interface FooS : Foo
- at end
- at implementation FooS
-- (void)y {
-
-  NSUInteger asdf =  (( self ->bar.x) ? 1 : ((_NSRangeInfo *)( self ->_internal._multipleRanges._data))->_capacity ); 
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-struct-ivar.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-struct-ivar.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-struct-ivar.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -fblocks -rewrite-objc -fms-extensions %t.mm -o %t-rw.cpp 
-// RUN: FileCheck --input-file=%t-rw.cpp %s
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -Wno-c++11-narrowing -std=c++11 -D"Class=void*" -D"id=void*" -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-
-struct S {
-    int i1;
-    double d1;
-    void (^block1)();
-};
-
- at interface I
-{
-  struct S struct_ivar;
-
-  struct S *pstruct_ivar;
-}
- at end
-
- at implementation I
-- (struct S) dMeth{ return struct_ivar; }
- at end
-
-// CHECK: return (*(struct S *)((char *)self + OBJC_IVAR_$_I$struct_ivar));
-
-// rdar://11323187
- at interface Foo{
-    @protected 
-    struct {
-        int x:1;
-        int y:1;
-    } bar;
-
-    struct _S {
-        int x:1;
-        int y:1;
-    } s;
-
-}
- at end
- at implementation Foo
-- (void)x {
-  bar.x = 0;
-  bar.y = 1;
-
-  s.x = 0;
-  s.y = 1;
-}
- at end
-
-// CHECK: (*(decltype(((Foo_IMPL *)0U)->bar) *)((char *)self + OBJC_IVAR_$_Foo$bar)).x = 0;
-// CHECK: (*(struct _S *)((char *)self + OBJC_IVAR_$_Foo$s)).x = 0;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-super.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-super.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-super.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp 
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"id=struct objc_object *" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar://11239894
-
-extern "C" void *sel_registerName(const char *);
-
-typedef struct objc_class * Class;
-
- at interface Sub
-- (void)dealloc;
- at end
-
- at interface I : Sub
-- (void)dealloc;
- at end
-
- at implementation I
-- (void)dealloc {
-    return;
-    [super dealloc];
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-synchronized.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-synchronized.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-synchronized.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -fexceptions  -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
-
-void *sel_registerName(const char *);
-
-id SYNCH_EXPR();
-void SYNCH_BODY();
-void  SYNCH_BEFORE();
-void  SYNC_AFTER();
-
-void foo(id sem)
-{
-  SYNCH_BEFORE();
-  @synchronized (SYNCH_EXPR()) { 
-    SYNCH_BODY();
-    return;
-  }
- SYNC_AFTER();
- @synchronized ([sem self]) {
-    SYNCH_BODY();
-    return;
- }
-}
-
-void test_sync_with_implicit_finally() {
-    id foo;
-    @synchronized (foo) {
-        return; // The rewriter knows how to generate code for implicit finally
-    }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-throw.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-throw.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-throw.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,93 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -fexceptions  -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
-
-void *sel_registerName(const char *);
-
- at interface Foo @end
-void TRY();
-void SPLATCH();
-void MYTRY();
-void MYCATCH();
-
-void foo() {
-  @try  { TRY(); } 
-  @catch (...) { SPLATCH(); @throw; }
-}
-
-int main()
-{
-
-  @try  {
-     MYTRY();
-  }
-
-  @catch (Foo* localException) {
-     MYCATCH();
-     @throw localException;
-  }
-  
-  // no catch clause
-  @try { } 
-  @finally { }
-}
-
-
- at interface INST
-{
-  INST* throw_val;
-}
-
-- (id) ThrowThis;
-
-- (void) MainMeth;
-
- at end
-
-
- at implementation INST
-- (id) ThrowThis { return 0; }
-
-- (void) MainMeth {
-  @try  {
-     MYTRY();
-  }
-  @catch (Foo* localException) {
-     MYCATCH();
-     @throw [self ThrowThis];
-  }
-  @catch (...) {
-    @throw [throw_val ThrowThis];
-  }
-}
- at end
-
-// rdar://13186010
- at class NSDictionary, NSException;
- at class NSMutableDictionary;
-
- at interface NSString
-+ (id)stringWithFormat:(NSString *)format, ... ;
- at end
-
- at interface  NSException
-+ (NSException *)exceptionWithName:(NSString *)name reason:(NSString *)reason userInfo:(NSDictionary *)userInfo;
- at end
-id *_imp__NSInvalidArgumentException;
-
- at interface NSSetExpression @end
-
- at implementation NSSetExpression
--(id)expressionValueWithObject:(id)object context:(NSMutableDictionary*)bindings {
-    id leftSet;
-    id rightSet;
-    @throw [NSException exceptionWithName: *_imp__NSInvalidArgumentException reason: [NSString stringWithFormat: @"Can't evaluate set expression; left subexpression not a set (lhs = %@ rhs = %@)", leftSet, rightSet] userInfo: 0];
-
-    return leftSet ;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-try-catch-finally.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-try-catch-finally.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-try-catch-finally.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -fexceptions  -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
-
-extern int printf(const char *, ...);
-
-int main() {
-  @try {
-  } 
-  @finally {
-  }
-  while (1) {
-    @try {
-      printf("executing try");
-      break;
-    } @finally {
-      printf("executing finally");
-    }
-    printf("executing after finally block");
-  }
-  @try {
-    printf("executing try");
-  } @finally {
-    printf("executing finally");
-  }
-  return 0;
-}
-
-void test2_try_with_implicit_finally() {
-    @try {
-        return;
-    } @catch (id e) {
-        
-    }
-}
-
-void FINALLY();
-void TRY();
-void CATCH();
-
- at interface NSException
- at end
-
- at interface Foo
- at end
-
- at implementation Foo
-- (void)bar {
-    @try {
-	TRY();
-    } 
-    @catch (NSException *e) {
-	CATCH();
-    }
-    @finally {
-	FINALLY();
-    }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-try-finally.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-try-finally.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-try-finally.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -fexceptions  -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
-
-void FINALLY();
-void TRY();
-void INNER_FINALLY();
-void INNER_TRY();
-void CHECK();
-
- at interface Foo
- at end
-
- at implementation Foo
-- (void)bar {
-    @try {
-	TRY();
-    } 
-    @finally {
-	FINALLY();
-    }
-    CHECK();
-    @try {
-	TRY();
-    } 
-    @finally {
-      @try {
-        INNER_TRY();
-      }
-      @finally {
-        INNER_FINALLY();
-      }
-      FINALLY();
-    }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-typeof.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-typeof.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-modern-typeof.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
-// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -Wno-attributes -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-typedef unsigned long size_t;
-extern "C" {
-extern "C" void *_Block_copy(const void *aBlock);
-extern "C" void _Block_release(const void *aBlock);
-}
-
-int main() {
-    __attribute__((__blocks__(byref))) int a = 42;
-    int save_a = a;
-
-    void (^b)(void) = ^{
-        ((__typeof(^{ a = 2; }))_Block_copy((const void *)(^{ a = 2; })));
-    };
-
-    ((__typeof(b))_Block_copy((const void *)(b)));
-
-    return 0;
-}
-
-// CHECK-LP: ((void (^)(void))_Block_copy((const void *)(b)))
-
-// radar 7628153
-void f() {
-	int a;	
-	__typeof__(a) aVal = a;
-	char *a1t = (char *)@encode(__typeof__(a));
-        __typeof__(aVal) bVal;
-	char *a2t = (char *)@encode(__typeof__(bVal));
-        __typeof__(bVal) cVal = bVal;
-	char *a3t = (char *)@encode(__typeof__(cVal));
-
-}
-
-// rdar://11239324
-void x() {
-    id y;
-    void (^z)() = ^{ };
-    y = (id)((__typeof(z))_Block_copy((const void *)(z)));
-}
-
-// CHECK-LP: int aVal =  a;
-
-// CHECK-LP: int bVal;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nest.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nest.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nest.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at interface NSMapTable @end
- at interface NSEnumerator @end
-
-typedef unsigned int NSUInteger;
-
- at interface NSConcreteMapTable : NSMapTable {
- at public
-    NSUInteger capacity;
-}
- at end
-
- at interface NSConcreteMapTableValueEnumerator : NSEnumerator {
-    NSConcreteMapTable *mapTable;
-}
- at end
-
- at implementation NSConcreteMapTableValueEnumerator
-
-- nextObject {
-    while (mapTable->capacity) {
-    }
-    return 0;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// radar 7696893
-
-typedef unsigned long size_t;
-void *sel_registerName(const char *);
-
-void f(void (^block)(void));
-void f2(id);
-void f3(int);
-char f4(id, id);
-
- at interface Baz
-- (void)b:(void (^)(void))block;
- at end
-
- at interface Bar
- at end
-
- at interface Foo {
-	int _x;
-}
- at end
-
- at implementation Foo
-- (void)method:(Bar *)up {
-    Baz *down;
-	int at;
-    id cq;
-    __block char didit = 'a';
-    __block char upIsFinished = 'b';
-    f(^{
-            id old_cq;
-			f2(cq);
-            [down b:^{
-                    [down b:^{
-                            f(^{
-                                    didit = f4(up, down);
-									upIsFinished = 'c';
-                                    self->_x++;
-                                });
-                        }];
-                }];
-				f2(old_cq);
-			f3(at);
-    });
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks-2.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks-2.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks-2.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// grep "static void __FUNC_block_copy_" %t-rw.cpp | count 2
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// grep "static void __FUNC_block_copy_" %t-modern-rw.cpp | count 2
-// rdar://8499592
-
-typedef unsigned long size_t;
-void Outer(void (^bk)());
-void Inner(void (^bk)());
-void INNER_FUNC(id d);
-
-void FUNC() {
-    
-    id bar = (id)42;
-    Outer(^{
-        Inner(^{
-            INNER_FUNC(bar);
-        });
-    });    
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-blocks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// radar 7682149
-
-
-typedef unsigned long size_t;
-void f(void (^block)(void));
-
- at interface X {
-	int y;
-}
-- (void)foo;
- at end
-
- at implementation X
-- (void)foo {
-    f(^{
-  f(^{
-    f(^{
-      y=42;
-    });
-  });
-});
-
-}
- at end
-
-struct S {
-  int y;
-};
-
-void foo () {
-	struct S *SELF;
-	f(^{
-		f(^{
-			SELF->y = 42;
-		});
-	});
-}
-
-// radar 7692419
- at interface Bar
- at end
-
-void f(Bar *);
-void q(void (^block)(void));
-
-void x() {
-        void (^myblock)(Bar *b) = ^(Bar *b) {
-                q(^{
-                        f(b);   
-                });
-        };
-        
-        Bar *b = (Bar *)42;
-        myblock(b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-ivar.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-ivar.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-ivar.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw-modern.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw-modern.cpp
-// radar 7583971
-
-
- at interface NSURLResponse {
- at public
-  NSURLResponse *InnerResponse;
-}
- at end
-
- at interface NSCachedURLResponseInternal 
-{
-    @public
-    NSURLResponse *response;
-}
- at end
-
- at interface NSCachedURLResponse
-{
-    @private
-    NSCachedURLResponseInternal *_internal;
-}
-- (void) Meth;
- at end
-
- at implementation NSCachedURLResponse
-- (void) Meth {
-    _internal->response->InnerResponse = 0;
-  }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-property-in-blocks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-property-in-blocks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-nested-property-in-blocks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fms-extensions -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fms-extensions -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// radar 8608293
-
-typedef unsigned long size_t;
-void *sel_registerName(const char *);
-
-extern "C" void nowarn(id);
-
-extern "C" void noblockwarn(void (^)());
-
- at interface INTFOFPROP 
- at property (readwrite, retain) INTFOFPROP *outer;
- at property (readwrite, retain) id inner;
- at end
-
- at interface NSSet
-- (NSSet *)objectsPassingTest:(char (^)(id obj, char *stop))predicate ;
- at end
-
- at interface INTF
-- (NSSet *)Meth;
- at end
-
- at implementation INTF
-
-- (NSSet *)Meth
-{
-    NSSet *aces;
-
-    noblockwarn(^() {
-        INTFOFPROP *ace;
-        nowarn(ace.outer.inner);
-        noblockwarn(^() {
-          INTFOFPROP *ace;
-          nowarn(ace.outer.inner);
-        });
-    });
-
-    noblockwarn(^() {
-        INTFOFPROP *ace;
-        nowarn(ace.outer.inner);
-    });
-
-return [aces objectsPassingTest:^(id obj, char *stop)
-    {
-        INTFOFPROP *ace = (INTFOFPROP *)obj;
-        nowarn(ace.outer.inner);
-        return (char)0;
-    }];
-
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-no-nextline.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-no-nextline.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-no-nextline.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 7946975
-
- at interface RootObject {
-}
- at end void doStuff();
-int main(int argc, char *argv[]) {
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-property-attributes.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-property-attributes.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-property-attributes.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary  -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 7214439
-
-typedef void (^void_block_t)(void);
-
- at interface Y {
-    void_block_t __completion;
-    Y* YVAR;
-    id ID;
-}
- at property (copy) void_block_t completionBlock;
- at property (retain) Y* Yblock;
- at property (copy) id ID;
- at end
-
- at implementation Y
- at synthesize completionBlock=__completion;
- at synthesize Yblock = YVAR;
- at synthesize  ID;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-property-set-cfstring.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-property-set-cfstring.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-property-set-cfstring.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar:// 8527018
-
-void *sel_registerName(const char *);
-
- at class NSString;
- at interface CoreDAVDiscoveryAccountInfo  {
-  NSString *_scheme;
-}
- at property (retain) NSString *scheme;
-- (void) Meth ;
- at end
-
- at implementation CoreDAVDiscoveryAccountInfo
- at synthesize scheme=_scheme;
-- (void) Meth {
-  CoreDAVDiscoveryAccountInfo *discoveryInfo;
-  discoveryInfo.scheme = @"https";
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-property.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-property.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-property.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -Did="void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar:// 8558702
-
- at class NSString;
- at interface NSObject @end
-
- at protocol P
- at property (retain) NSString* test;
- at end
-
-
- at interface A : NSObject <P> {
-	NSString* _test;
-}
- at end
-
-
- at implementation A
- at synthesize test=_test;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-qualified.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-qualified.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-qualified.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"id=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 7589414
-
- at protocol NSPortDelegate;
- at interface NSConnection @end
-
- at interface NSMessagePort
-- (void) clone;
- at end
-
- at implementation NSMessagePort
-- (void) clone {
-     NSConnection <NSPortDelegate> *conn = 0;
-     id <NSPortDelegate> *idc = 0;
-}
- at end
-
-// radar 7607413
- at protocol Proto1, Proto2;
-
- at protocol Proto
- at end
-
-unsigned char func(id<Proto1, Proto2> inProxy);
-
-id bar(id);
-
-void f() {
-        id a;
-        id b = bar((id <Proto>)a);
-}
-
-// rdar://8472487
- at protocol NSObject @end
- at class NSRunLoop;
-
- at protocol CoreDAVTaskManager <NSObject> 
-  @property (retain) NSRunLoop *workRunLoop;  
- at end
-
-
-// rdar://8475819
- at protocol some_protocol;
-
-void foo (int n)
-{
-  id<some_protocol> array[n];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-type-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-type-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-protocol-type-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at protocol MyProto1 
- at end
-
- at protocol MyProto2
- at end
-
- at interface INTF @end
-
-INTF <MyProto1> *g1;
-
-INTF <MyProto1, MyProto2> *g2, *g3;
-
-INTF <MyProto1> * Func(INTF <MyProto1> *p2, INTF<MyProto1> *p3, INTF *p4, INTF<MyProto1> *p5)
-{
-	return p2;
-}
-
-INTF <MyProto1, MyProto2> * Func1(INTF *p2, INTF<MyProto1, MyProto2> *p3, INTF *p4, INTF<MyProto1> *p5)
-{
-	return p3;
-}
-
- at interface Foo
- at property int (*hashFunction)(const void *item, int (*size)(const void *item));
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-qualified-id.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-qualified-id.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-qualified-id.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// radar 7680953
-
-typedef void * id;
-
- at protocol foo
- at end
-
- at interface CL
-{
-  id <foo> changeSource;
-  CL <foo>* changeSource1;
-}
- at end
-
-typedef struct x
-{
-   id <foo> changeSource;
-} x;
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-rewritten-initializer.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-rewritten-initializer.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-rewritten-initializer.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw-modern.cpp
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wno-address-of-temporary -D"SEL=void*" -U__declspec -D"__declspec(X)=" %t-rw-modern.cpp
-// radar 7669784
-
-typedef unsigned long size_t;
-typedef void * id;
-void *sel_registerName(const char *);
-
- at interface NSMutableString
-- (NSMutableString *)string;
- at end
-
- at interface Z
- at end
-
- at implementation Z
-
-- (void)x {
-        id numbers;
-    int i, numbersCount = 42;
-    __attribute__((__blocks__(byref))) int blockSum = 0;
-    void (^add)(id n, int idx, char *stop) = ^(id n, int idx, char *stop) { };
-    [numbers enumerateObjectsUsingBlock:add];
-    NSMutableString *forwardAppend = [NSMutableString string];
-    __attribute__((__blocks__(byref))) NSMutableString *blockAppend = [NSMutableString string];
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-static-block.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-static-block.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-static-block.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp -emit-llvm -o %t-rw.ll
-// RUN: FileCheck --input-file=%t-rw.ll %s
-
-typedef void (^void_block_t)(void);
-
-static const void_block_t myblock = ^{
-        
-};
-
-// CHECK: myblock = internal global

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-super-message.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-super-message.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-super-message.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -DKEEP_ATTRIBUTES -D"id=struct objc_object *" -D"Class=struct objc_class *" -D"SEL=void*" -D"__declspec(X)=" -emit-llvm -o - %t-rw.cpp | FileCheck %t-rw.cpp
-// radar 7738453
-
-void *sel_registerName(const char *);
-
- at interface __NSCFType
- at end
-
- at interface __NSCFString : __NSCFType
-- (const char *)UTF8String;
- at end
-
- at implementation __NSCFString
-- (const char *)UTF8String {
-    return (const char *)[super UTF8String];
-}
- at end
-
-// CHECK: call %struct.objc_class* @class_getSuperclass
-
- at class NSZone;
-
- at interface NSObject {
-}
-
-+ (id)allocWithZone:(NSZone *)zone;
- at end
-
-
- at interface NSArray : NSObject
- at end
-
- at implementation NSArray
-+ (id)allocWithZone:(NSZone *)zone {
-    return [super allocWithZone:zone];
-}
- at end
-
- at interface XNSArray
-{
-  Class isa;
-}
- at end
-
- at class XNSArray;
-
- at interface __NSArray0 : XNSArray
- at end
-
- at implementation __NSArray0 @end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-trivial-constructor.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-trivial-constructor.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-trivial-constructor.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 -x objective-c++ -fblocks -o - %s
-// radar 7537770
-
-typedef struct {
-        int a;
-        int b;
-} s;
-
-extern void CFBasicHashApply(int (^block)(s)) {
-        int used, cnt;
-    for (int idx = 0; 0 < used && idx < cnt; idx++) {
-                s bkt;
-        if (0 < bkt.a) {
-            if (!block(bkt)) {
-                return;
-            }
-            used--;
-        }
-    }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-try-catch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-try-catch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-try-catch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at interface Foo @end
- at interface GARF @end
-
-void foo() {
-  @try  { TRY(); } 
-  @catch (...) { SPLATCH(); @throw; }
-}
-
-int main()
-{
-
-  @try  {
-     MYTRY();
-  }
-
-  @catch (Foo* localException) {
-     MYCATCH();
-     @throw;
-  }
-  
-  // no catch clause
-  @try { } 
-  @finally { }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-typeof.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-typeof.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-typeof.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s
-
-extern "C" {
-extern "C" void *_Block_copy(const void *aBlock);
-extern "C" void _Block_release(const void *aBlock);
-}
-
-int main() {
-    __attribute__((__blocks__(byref))) int a = 42;
-    int save_a = a;
-
-    void (^b)(void) = ^{
-        ((__typeof(^{ a = 2; }))_Block_copy((const void *)(^{ a = 2; })));
-    };
-
-    ((__typeof(b))_Block_copy((const void *)(b)));
-
-    return 0;
-}
-
-// CHECK-LP: ((void (^)(void))_Block_copy((const void *)(b)))
-
-// radar 7628153
-void f() {
-	int a;	
-	__typeof__(a) aVal = a;
-	char *a1t = (char *)@encode(__typeof__(a));
-        __typeof__(aVal) bVal;
-	char *a2t = (char *)@encode(__typeof__(bVal));
-        __typeof__(bVal) cVal = bVal;
-	char *a3t = (char *)@encode(__typeof__(cVal));
-
-}
-
-
-// CHECK-LP: int aVal =  a;
-
-// CHECK-LP: int bVal;

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-unique-block-api.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-unique-block-api.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-unique-block-api.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
-// radar 7630551
-
-typedef unsigned long size_t;
-void f(void (^b)(char c));
-
- at interface a
-- (void)processStuff;
- at end
-
- at implementation a
-- (void)processStuff {
-    f(^(char x) { });
-}
- at end
-
- at interface b
-- (void)processStuff;
- at end
-
- at implementation b
-- (void)processStuff {
-    f(^(char x) { });
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-user-defined-accessors.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-user-defined-accessors.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-user-defined-accessors.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -Did="void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-// rdar:// 8570020
-
- at interface Foo {
-	Foo *foo;
-}
-
- at property (retain, nonatomic) Foo *foo;
-
- at end
-
- at implementation Foo
-
-- (Foo *)foo {
-    if (!foo) {
-        foo = 0;
-    }
-    return foo;
-}
-
-
-- (void) setFoo : (Foo *) arg {
-  foo = arg;
-}
-
- at synthesize foo;
-
- at end 
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-vararg.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-vararg.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-vararg.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o %t-rw.cpp
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
-
-// rdar://9056351
-void *sel_registerName(const char *);
-
- at interface NSObject @end
- at class NSString;
-
- at protocol P
-  -(void)ParliamentFunkadelic;
- at end
-	
- at interface Foo {
-  NSObject <P> *_dataSource;
-}
- at end
-	
- at interface Bar { }
-+(void)WhateverBar:(NSString*)format, ...;
- at end
-	
- at implementation Foo
--(void)WhateverFoo {
-	[Bar WhateverBar:@"ISyncSessionDriverDataSource %@ responded poorly", _dataSource];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-weak-attr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-weak-attr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/rewrite-weak-attr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-win32 -fms-extensions -fblocks -Dnil=0 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5   -o - %s
-int main() {
-        __weak __block id foo = nil;
-        __block id foo2 = nil;
-        id foo3 = nil;
-        
-        void (^myblock)() = ^{
-                foo = nil;
-                foo2 = nil;
-                [foo3 bar];
-                id foo4 = foo3;
-        };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/static-type-protocol-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/static-type-protocol-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/static-type-protocol-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at protocol Proto
-- (void) ProtoDidget;
- at end
-
- at protocol MyProto <Proto>
-- (void) widget;
- at end
-
- at interface Foo 
-- (void)StillMode;
- at end
-
- at interface Container
-+ (void)MyMeth;
- at end
-
- at implementation Container
-+ (void)MyMeth
-{
-  Foo *view;
-  [(Foo <MyProto> *)view StillMode];
-  [(Foo <MyProto> *)view widget];
-  [(Foo <MyProto> *)view ProtoDidget];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/undecl-objc-h.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/undecl-objc-h.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/undecl-objc-h.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
-typedef struct S {
-	int * pint;
-	int size;
-}NSRec;
-
- at interface SUPER
-- (NSRec) MainMethod : (NSRec) Arg1 : (NSRec) Arg2;
- at end
-
- at interface MyDerived : SUPER
-{
-	NSRec d;
-}
-- (int) instanceMethod;
-- (int) another : (int) arg;
-- (NSRec) MainMethod : (NSRec) Arg1 : (NSRec) Arg2;
- at end
-
- at implementation MyDerived 
-- (int) instanceMethod {
-  return [self another : [self MainMethod : d : d].size];
-}
-
-- (int) another : (int) arg { return arg; }
-- (NSRec) MainMethod : (NSRec) Arg1 : (NSRec) Arg2 { return Arg2; }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/undeclared-method-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/undeclared-method-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/undeclared-method-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at interface Derived @end
-
-int main(void) {
-  Derived *v ;
-  [v free];
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/undef-field-reference-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/undef-field-reference-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/undef-field-reference-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
- at interface MyDerived 
-{
- at public
-	int IVAR;
-}
- at end
-
-MyDerived *pd;
-int main() {
-	return pd->IVAR;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/unnamed-bf-modern-write.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/unnamed-bf-modern-write.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/unnamed-bf-modern-write.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -E %s -o %t.mm
-// RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %t.mm -o - | FileCheck %s 
-// rdar://13138459
-
- at interface Foo {
- at private
-    int first;
-    int :1;
-    int third :1;
-    int :1;
-    int fifth :1;
-}
- at end
- at implementation Foo 
- at end
-
-// CHECK: struct Foo__T_1 {
-// CHECK-NEXT:         int : 1;
-// CHECK-NEXT:         int third : 1;
-// CHECK-NEXT:         int : 1;
-// CHECK-NEXT:         int fifth : 1;
-// CHECK-NEXT:         char : 0;
-// CHECK-NEXT:         } ;
-// CHECK: struct Foo_IMPL {
-// CHECK-NEXT:         int first;
-// CHECK-NEXT:         struct Foo__T_1 Foo__GRBF_1;
-// CHECK-NEXT: };

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/va-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/va-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/va-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
-#include <stdarg.h>
-
- at interface NSObject @end
- at interface XX : NSObject @end
-
- at implementation XX
-- (void)encodeValuesOfObjCTypes:(const char *)types, ... {
-   va_list ap;
-   va_start(ap, types); 
-   while (*types) ;
-   va_end(ap);
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/Rewriter/weak_byref_objects.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Rewriter/weak_byref_objects.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Rewriter/weak_byref_objects.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fblocks -triple i386-apple-darwin9 -fobjc-gc -rewrite-objc -fobjc-runtime=macosx-fragile-10.5  %s -o -
-
-#define nil 0
-int main() {
-        __weak __block id foo = nil;
-        __block id foo2 = nil;
-        id foo3 = nil;
-
-        void (^myblock)() = ^{
-                foo = nil;
-                foo2 = nil;
-                [foo3 bar];
-                id foo4 = foo3;
-        };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/128bitint.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/128bitint.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/128bitint.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin9 -fms-extensions %s -DHAVE
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-gnu -fms-extensions %s -DHAVE_NOT
-
-#ifdef HAVE
-typedef int i128 __attribute__((__mode__(TI)));
-typedef unsigned u128 __attribute__((__mode__(TI)));
-
-int a[((i128)-1 ^ (i128)-2) == 1 ? 1 : -1];
-int a[(u128)-1 > 1LL ? 1 : -1];
-int a[__SIZEOF_INT128__ == 16 ? 1 : -1];
-
-// PR5435
-__uint128_t b = (__uint128_t)-1;
-
-// PR11916: Support for libstdc++ 4.7
-__int128 i = (__int128)0;
-unsigned __int128 u = (unsigned __int128)-1;
-
-long long SignedTooBig = 123456789012345678901234567890; // expected-warning {{integer constant is too large for its type}}
-__int128_t Signed128 = 123456789012345678901234567890i128;
-long long Signed64 = 123456789012345678901234567890i128; // expected-warning {{implicit conversion from '__int128' to 'long long' changes value from 123456789012345678901234567890 to -4362896299872285998}}
-unsigned long long UnsignedTooBig = 123456789012345678901234567890; // expected-warning {{integer constant is too large for its type}}
-__uint128_t Unsigned128 = 123456789012345678901234567890Ui128;
-unsigned long long Unsigned64 = 123456789012345678901234567890Ui128; // expected-warning {{implicit conversion from 'unsigned __int128' to 'unsigned long long' changes value from 123456789012345678901234567890 to 14083847773837265618}}
-
-// Ensure we don't crash when user passes 128-bit values to type safety
-// attributes.
-void pointer_with_type_tag_arg_num_1(void *buf, int datatype)
-    __attribute__(( pointer_with_type_tag(mpi,0x10000000000000001i128,1) )); // expected-error {{attribute parameter 2 is out of bounds}}
-
-void pointer_with_type_tag_arg_num_2(void *buf, int datatype)
-    __attribute__(( pointer_with_type_tag(mpi,1,0x10000000000000001i128) )); // expected-error {{attribute parameter 3 is out of bounds}}
-
-void MPI_Send(void *buf, int datatype) __attribute__(( pointer_with_type_tag(mpi,1,2) ));
-
-static const __uint128_t mpi_int_wrong __attribute__(( type_tag_for_datatype(mpi,int) )) = 0x10000000000000001i128; // expected-error {{'type_tag_for_datatype' attribute requires the initializer to be an integer constant expression that can be represented by a 64 bit integer}}
-static const int mpi_int __attribute__(( type_tag_for_datatype(mpi,int) )) = 10;
-
-void test(int *buf)
-{
-  MPI_Send(buf, 0x10000000000000001i128); // expected-warning {{implicit conversion from '__int128' to 'int' changes value}}
-}
-#else
-
-__int128 n; // expected-error {{__int128 is not supported on this target}}
-
-#if defined(__SIZEOF_INT128__)
-#error __SIZEOF_INT128__ should not be defined
-#endif
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Sema/2007-10-01-BuildArrayRef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/2007-10-01-BuildArrayRef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/2007-10-01-BuildArrayRef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: not %clang_cc1_only -c %s -o - > /dev/null
-// PR 1603
-void func()
-{
-   const int *arr;
-   arr[0] = 1;  // expected-error {{assignment of read-only location}}
-}
-
-struct foo {
-  int bar;
-};
-struct foo sfoo = { 0 };
-
-int func2()
-{
-  const struct foo *fp;
-  fp = &sfoo;
-  fp[0].bar = 1;  // expected-error {{ assignment of read-only member}}
-  return sfoo.bar;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/2009-03-09-WeakDeclarations-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/2009-03-09-WeakDeclarations-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/2009-03-09-WeakDeclarations-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -triple i686-apple-darwin
-// Insist upon warnings for inappropriate weak attributes.
-
-// O.K.
-extern int ext_weak_import __attribute__ ((__weak_import__));
-
-// These are inappropriate, and should generate warnings:
-int decl_weak_import __attribute__ ((__weak_import__)); // expected-warning {'weak_import' attribute cannot be specified on a definition}
-int decl_initialized_weak_import __attribute__ ((__weak_import__)) = 13; // expected-warning {'weak_import' attribute cannot be specified on a definition}
-
-// O.K.
-extern int ext_f(void) __attribute__ ((__weak_import__));
-
-// These are inappropriate, and should generate warnings:
-int def_f(void) __attribute__ ((__weak_import__));
-int __attribute__ ((__weak_import__)) decl_f(void) {return 0;};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/2009-04-22-UnknownSize.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/2009-04-22-UnknownSize.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/2009-04-22-UnknownSize.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: not %clang_cc1 %s -emit-llvm -o -
-// PR2958
-static struct foo s; // expected-error { tentative definition has type 'struct foo' that is never completed }
-struct foo *p = &s;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/2009-07-17-VoidParameter.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/2009-07-17-VoidParameter.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/2009-07-17-VoidParameter.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: not %clang_cc1 -emit-llvm %s -o -
-// PR4214
-typedef void vt;
-void (*func_ptr)(vt my_vt); // expected-error {argument may not have 'void' type}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/2010-05-31-palignr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/2010-05-31-palignr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/2010-05-31-palignr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: not %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o /dev/null %s
-
-#include <tmmintrin.h>
-
-extern int i;
-
-int main ()
-{
-#if defined( __SSSE3__ )
-
-  typedef int16_t     vSInt16         __attribute__ ((__vector_size__ (16)));
-
-  short   dtbl[] = {1,2,3,4,5,6,7,8};
-  vSInt16 *vdtbl = (vSInt16*) dtbl;
-
-  vSInt16 v0;
-  v0 = *vdtbl;
-  v0 = _mm_alignr_epi8(v0, v0, i); // expected-error {{argument to '__builtin_ia32_palignr128' must be a constant integer}}
-
-  return 0;
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/Inputs/conversion.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/Inputs/conversion.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/Inputs/conversion.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-/* Fake system header for Sema/conversion.c */
-
-#define LONG_MAX __LONG_MAX__
-#define SETBIT(set,bit) do { int i = bit; set[i/(8*sizeof(set[0]))] |= (1 << (i%(8*sizeof(set)))); } while(0)

Modified: trunk/contrib/llvm/tools/clang/test/Sema/Inputs/format-unused-system-args.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/Inputs/format-unused-system-args.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/Inputs/format-unused-system-args.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// "System header" for testing that -Wformat-extra-args does not apply to
-// arguments specified in system headers.
-
-#define PRINT2(fmt, a1, a2) \
-  printf((fmt), (a1), (a2))
-
-#define PRINT1(fmt, a1) \
-  PRINT2((fmt), (a1), 0)

Modified: trunk/contrib/llvm/tools/clang/test/Sema/Inputs/pragma-arc-cf-code-audited.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/Inputs/pragma-arc-cf-code-audited.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/Inputs/pragma-arc-cf-code-audited.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#pragma clang arc_cf_code_audited begin

Modified: trunk/contrib/llvm/tools/clang/test/Sema/Inputs/unused-expr-system-header.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/Inputs/unused-expr-system-header.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/Inputs/unused-expr-system-header.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// "System header" for testing that -Wunused-value is properly suppressed in
-// certain cases.
-
-#define POSSIBLY_BAD_MACRO(x) \
-  { int i = x; \
-    i; }
-
-#define STATEMENT_EXPR_MACRO(x) \
-  (__extension__ \
-   ({int i = x; \
-     i;}))
-
-#define COMMA_MACRO_1(x, y) \
-  {x, y;}
-
-#define COMMA_MACRO_2(x, y) \
-  if (x) { 1 == 2, y; }
-
-#define COMMA_MACRO_3(x, y) \
-  (x, y)
-
-#define COMMA_MACRO_4(x, y) \
-  ( 1 == 2, y )

Modified: trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility-x64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility-x64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility-x64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-compatibility -triple x86_64-pc-win32
-int __stdcall f(void); /* expected-warning {{calling convention '__stdcall' ignored for this target}} */
-
-/* This should compile without warning because __stdcall is treated
-as __cdecl in MS compatibility mode for x64 compiles*/
-int __cdecl f(void) {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility-x86.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility-x86.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility-x86.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-compatibility -triple i386-pc-win32
-int __stdcall f(void); /* expected-note {{previous declaration is here}} */
-
-int __cdecl f(void) { /* expected-error {{function declared 'cdecl' here was previously declared 'stdcall'}} */
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-compatibility
-
-enum ENUM1; // expected-warning {{forward references to 'enum' types are a Microsoft extension}}
-enum ENUM1 var1 = 3;
-enum ENUM1* var2 = 0;
-
-
-enum ENUM2 {
-  ENUM2_a = (enum ENUM2) 4,
-  ENUM2_b = 0x9FFFFFFF, // expected-warning {{enumerator value is not representable in the underlying type 'int'}}
-  ENUM2_c = 0x100000000 // expected-warning {{enumerator value is not representable in the underlying type 'int'}}
-};
-
-__declspec(noreturn) void f6( void ) {
-	return;  // expected-warning {{function 'f6' declared 'noreturn' should not return}}
-}
-
-__declspec(align(32768)) struct S1 { int a; } s;	/* expected-error {{requested alignment must be 8192 bytes or smaller}} */
-struct __declspec(aligned) S2 {}; /* expected-warning {{unknown __declspec attribute 'aligned' ignored}} */
-
-struct __declspec(appdomain) S3 {}; /* expected-warning {{__declspec attribute 'appdomain' is not supported}} */

Modified: trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftCompatibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-compatibility
-
-// PR15845
-int foo(xxx); // expected-error{{unknown type name}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftExtensions.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftExtensions.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/MicrosoftExtensions.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-extensions
-
-
-struct A
-{
-   int a[];  /* expected-warning {{flexible array member 'a' in otherwise empty struct is a Microsoft extension}} */
-};
-
-struct C {
-   int l;
-   union {
-       int c1[];   /* expected-warning {{flexible array member 'c1' in a union is a Microsoft extension}}  */
-       char c2[];  /* expected-warning {{flexible array member 'c2' in a union is a Microsoft extension}} */
-   };
-};
-
-
-struct D {
-   int l;
-   int D[];
-};
-
-
-
-
-
-
-typedef struct notnested {
-  long bad1;
-  long bad2;
-} NOTNESTED;
-
-
-typedef struct nested1 {
-  long a;
-  struct notnested var1;
-  NOTNESTED var2;
-} NESTED1;
-
-struct nested2 {
-  long b;
-  NESTED1;  // expected-warning {{anonymous structs are a Microsoft extension}}
-};
-
-struct test {
-  int c;
-  struct nested2;   // expected-warning {{anonymous structs are a Microsoft extension}}
-};
-
-void foo()
-{
-  struct test var;
-  var.a;
-  var.b;
-  var.c;
-  var.bad1;   // expected-error {{no member named 'bad1' in 'struct test'}}
-  var.bad2;   // expected-error {{no member named 'bad2' in 'struct test'}}
-}
-
-// Enumeration types with a fixed underlying type.
-const int seventeen = 17;
-typedef int Int;
-
-struct X0 {
-  enum E1 : Int { SomeOtherValue } field;  // expected-warning{{enumeration types with a fixed underlying type are a Microsoft extension}}
-  enum E1 : seventeen;
-};
-
-enum : long long {  // expected-warning{{enumeration types with a fixed underlying type are a Microsoft extension}}
-  SomeValue = 0x100000000
-};
-
-
-void pointer_to_integral_type_conv(char* ptr) {
-   char ch = (char)ptr;
-   short sh = (short)ptr;
-   ch = (char)ptr;
-   sh = (short)ptr;
-}
-
-
-typedef struct {
-  UNKNOWN u; // expected-error {{unknown type name 'UNKNOWN'}}
-} AA;
-
-typedef struct {
-  AA; // expected-warning {{anonymous structs are a Microsoft extension}}
-} BB;
-
-__declspec(deprecated("This is deprecated")) enum DE1 { one, two } e1; // expected-note {{'e1' declared here}}
-struct __declspec(deprecated) DS1 { int i; float f; }; // expected-note {{declared here}}
-
-#define MY_TEXT		"This is also deprecated"
-__declspec(deprecated(MY_TEXT)) void Dfunc1( void ) {} // expected-note {{'Dfunc1' declared here}}
-
-struct __declspec(deprecated(123)) DS2 {};	// expected-error {{argument to deprecated attribute was not a string literal}}
-
-void test( void ) {
-	e1 = one;	// expected-warning {{'e1' is deprecated: This is deprecated}}
-	struct DS1 s = { 0 };	// expected-warning {{'DS1' is deprecated}}
-	Dfunc1();	// expected-warning {{'Dfunc1' is deprecated: This is also deprecated}}
-
-	enum DE1 no;	// no warning because E1 is not deprecated
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/PR2727.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/PR2727.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/PR2727.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -std=c90 %s
-// RUN: %clang_cc1 -verify -fsyntax-only -std=c99 %s
-// expected-no-diagnostics
-
-int f (int x)
-{
-  // sizeof applied to a type should not delete the type.
-  return sizeof (int[x]);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/PR2728.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/PR2728.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/PR2728.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -std=c90 %s
-// RUN: %clang_cc1 -verify -fsyntax-only -std=c99 %s
-// expected-no-diagnostics
-
-struct s
-{
-  int a;
-};
-
-int a[__builtin_offsetof(struct s, a) == 0];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/PR2919-builtin-types-compat-strips-crv.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/PR2919-builtin-types-compat-strips-crv.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/PR2919-builtin-types-compat-strips-crv.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-typedef struct foo T0;
-typedef const struct foo T1;
-
-int a0[__builtin_types_compatible_p(T0,
-                                    const T1) ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/PR2923.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/PR2923.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/PR2923.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Test for absence of crash reported in PR 2923:
-//
-//  http://llvm.org/bugs/show_bug.cgi?id=2923
-//
-// Previously we had a crash when deallocating the FunctionDecl for 'bar'
-// because FunctionDecl::getNumParams() just used the type of foo to determine
-// the number of parameters it has.  In the case of 'bar' there are no
-// ParmVarDecls.
-int foo(int x, int y) { return x + y; }
-extern typeof(foo) bar;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/PR2963-enum-constant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/PR2963-enum-constant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/PR2963-enum-constant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-
-typedef short short_fixed;
-
-enum
-{
-        // 8.8 short_fixed
-        SHORT_FIXED_FRACTIONAL_BITS= 8,
-        SHORT_FIXED_ONE= 1<<SHORT_FIXED_FRACTIONAL_BITS
-};
-
-#define FLOAT_TO_SHORT_FIXED(f) ((short_fixed)((f)*SHORT_FIXED_ONE))
-
-enum
-{
-        SOME_VALUE= FLOAT_TO_SHORT_FIXED(0.1) // expected-warning{{expression is not an integer constant expression}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/__try.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/__try.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/__try.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,172 +0,0 @@
-// RUN: %clang_cc1 -fborland-extensions -fsyntax-only -verify %s
-
-#define JOIN2(x,y) x ## y
-#define JOIN(x,y) JOIN2(x,y)
-#define TEST2(name) JOIN(name,__LINE__)
-#define TEST TEST2(test)
-typedef int DWORD;
-
-#pragma sysheader begin
-
-struct EXCEPTION_INFO{};
-
-int __exception_code();
-struct EXCEPTION_INFO* __exception_info();
-void __abnormal_termination();
-
-#define GetExceptionCode __exception_code
-#define GetExceptionInformation __exception_info
-#define AbnormalTermination __abnormal_termination
-
-#pragma sysheader end
-
-DWORD FilterExpression(int); // expected-note{{declared here}}
-DWORD FilterExceptionInformation(struct EXCEPTION_INFO*);
-
-const char * NotFilterExpression();
-
-void TEST() {
-  __try {
-    __try {
-      __try {
-      }
-      __finally{
-      }
-    }
-    __finally{
-    }
-  }
-  __finally{
-  }
-}
-
-void TEST() {
-  __try {
-
-  }
-}  // expected-error{{expected '__except' or '__finally' block}}
-
-void TEST() {
-  __except ( FilterExpression() ) { // expected-warning{{implicit declaration of function '__except' is invalid in C99}} \
-    // expected-error{{too few arguments to function call, expected 1, have 0}}
-
-  }
-}
-
-void TEST() {
-  __finally { } // expected-error{{}}
-}
-
-void TEST() {
-  __try{
-    int try_scope = 0;
-  } // TODO: expected expression is an extra error
-  __except( try_scope ? 1 : -1 ) // expected-error{{undeclared identifier 'try_scope'}} expected-error{{expected expression}}
-  {}
-}
-
-void TEST() {
-  __try {
-
-  }
-  // TODO: Why are there two errors?
-  __except( ) { // expected-error{{expected expression}} expected-error{{expected expression}}
-  }
-}
-
-void TEST() {
-  __try {
-
-  }
-  __except ( FilterExpression(GetExceptionCode()) ) {
-
-  }
-
-  __try {
-
-  }
-  __except( FilterExpression(__exception_code()) ) {
-
-  }
-
-  __try {
-
-  }
-  __except( FilterExceptionInformation(__exception_info()) ) {
-
-  }
-
-  __try {
-
-  }
-  __except(FilterExceptionInformation( GetExceptionInformation() ) ) {
-
-  }
-}
-
-void TEST() {
-  __try {
-
-  }
-  __except ( NotFilterExpression() ) { // expected-error{{filter expression type should be an integral value not 'const char *'}}
-
-  }
-}
-
-void TEST() {
-  int function_scope = 0;
-  __try {
-    int try_scope = 0;
-  }
-  __except ( FilterExpression(GetExceptionCode()) ) {
-    (void)function_scope;
-    (void)try_scope; // expected-error{{undeclared identifier}}
-  }
-}
-
-void TEST() {
-  int function_scope = 0;
-  __try {
-    int try_scope = 0;
-  }
-  __finally {
-    (void)function_scope;
-    (void)try_scope; // expected-error{{undeclared identifier}}
-  }
-}
-
-void TEST() {
-  int function_scope = 0;
-  __try {
-
-  }
-  __except( function_scope ? 1 : -1 ) {}
-}
-
-void TEST() {
-  __try {
-    (void)AbnormalTermination;  // expected-error{{only allowed in __finally block}}
-    (void)__abnormal_termination; // expected-error{{only allowed in __finally block}}
-  }
-  __except( 1 ) {
-    (void)AbnormalTermination;  // expected-error{{only allowed in __finally block}}
-    (void)__abnormal_termination; // expected-error{{only allowed in __finally block}}
-  }
-
-  __try {
-  }
-  __finally {
-    AbnormalTermination();
-    __abnormal_termination();
-  }
-}
-
-void TEST() {
-  (void)__exception_code;       // expected-error{{only allowed in __except block}}
-  (void)__exception_info;       // expected-error{{only allowed in __except filter expression}}
-  (void)__abnormal_termination; // expected-error{{only allowed in __finally block}}
-
-  (void)GetExceptionCode();     // expected-error{{only allowed in __except block}}
-  (void)GetExceptionInformation(); // expected-error{{only allowed in __except filter expression}}
-  (void)AbnormalTermination();  // expected-error{{only allowed in __finally block}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/address-constant.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/address-constant.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/address-constant.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-int i;
-int a[] = {0};
-struct { int i; } s;
-
-int *array[] = {&i, a, &s.i};
-
-extern void f(void);
-void (*f_addr)(void) = &f;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/address_spaces.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/address_spaces.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/address_spaces.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-#define _AS1 __attribute__((address_space(1)))
-#define _AS2 __attribute__((address_space(2)))
-#define _AS3 __attribute__((address_space(3)))
-
-void bar(_AS2 int a); // expected-error {{parameter may not be qualified with an address space}}
-
-void foo(_AS3 float *a,
-         _AS1 float b) // expected-error {{parameter may not be qualified with an address space}}
-{
-  _AS2 *x;// expected-warning {{type specifier missing, defaults to 'int'}}
-  _AS1 float * _AS2 *B;
-
-  int _AS1 _AS2 *Y;   // expected-error {{multiple address spaces specified for type}}
-  int *_AS1 _AS2 *Z;  // expected-error {{multiple address spaces specified for type}}
-
-  _AS1 int local;     // expected-error {{automatic variable qualified with an address space}}
-  _AS1 int array[5];  // expected-error {{automatic variable qualified with an address space}}
-  _AS1 int arrarr[5][5]; // expected-error {{automatic variable qualified with an address space}}
-
-  __attribute__((address_space(-1))) int *_boundsA; // expected-error {{address space is negative}}
-  __attribute__((address_space(0xFFFFFF))) int *_boundsB;
-  __attribute__((address_space(0x1000000))) int *_boundsC; // expected-error {{address space is larger than the maximum supported}}
-  // chosen specifically to overflow 32 bits and come out reasonable
-  __attribute__((address_space(4294967500))) int *_boundsD; // expected-error {{address space is larger than the maximum supported}}
-
-  *a = 5.0f + b;
-}
-
-struct _st {
- int x, y;
-} s __attribute ((address_space(1))) = {1, 1};
-
-
-// rdar://6774906
-__attribute__((address_space(256))) void * * const base = 0;
-void * get_0(void) {
-  return base[0];  // expected-error {{returning '__attribute__((address_space(256))) void *' from a function with result type 'void *' changes address space of pointer}}
-}
-
-__attribute__((address_space(1))) char test3_array[10];
-void test3(void) {
-  extern void test3_helper(char *p); // expected-note {{passing argument to parameter 'p' here}}
-  test3_helper(test3_array); // expected-error {{changes address space of pointer}}
-}
-
-typedef void ft(void);
-_AS1 ft qf; // expected-error {{function type may not be qualified with an address space}}
-typedef _AS1 ft qft; // expected-error {{function type may not be qualified with an address space}}
-
-
-typedef _AS2 int AS2Int;
-
-struct HasASFields
-{
-  _AS2 int as_field; // expected-error {{field may not be qualified with an address space}}
-   AS2Int typedef_as_field; // expected-error {{field may not be qualified with an address space}}
-};
-
-// Assertion failure was when the field was accessed
-void access_as_field()
-{
-    struct HasASFields x;
-    (void) bar.as_field;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/align-arm-apcs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/align-arm-apcs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/align-arm-apcs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -triple arm-unknown-unknown -target-abi apcs-gnu -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-struct s0 { double f0; int f1; };
-char chk0[__alignof__(struct s0) == 4 ? 1 : -1]; 

Modified: trunk/contrib/llvm/tools/clang/test/Sema/align-x86-64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/align-x86-64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/align-x86-64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR5599
-
-void frob(void *);
-
-void foo(void) {
-  float x[4];
-  char y[__alignof__(x) == 16 ? 1 : -1];
-  frob(y);
-}
-
-// PR5637
-
-typedef __attribute__((aligned(16))) struct {
-  unsigned long long w[3];
-} UINT192;
-
-UINT192 ten2mk192M[] = {
-    {{0xcddd6e04c0592104ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}},
-    {{0xcddd6e04c0592104ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}},
-    {{0xcddd6e04c0592104ULL, 0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}}
-};
-
-short chk1[sizeof(ten2mk192M) == 80 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/align-x86.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/align-x86.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/align-x86.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR3433
-double g1;
-short chk1[__alignof__(g1) == 8 ? 1 : -1]; 
-short chk2[__alignof__(double) == 8 ? 1 : -1];
-
-long long g2;
-short chk1[__alignof__(g2) == 8 ? 1 : -1]; 
-short chk2[__alignof__(long long) == 8 ? 1 : -1];
-
-unsigned long long g5;
-short chk1[__alignof__(g5) == 8 ? 1 : -1]; 
-short chk2[__alignof__(unsigned long long) == 8 ? 1 : -1];
-
-_Complex double g3;
-short chk1[__alignof__(g3) == 8 ? 1 : -1]; 
-short chk2[__alignof__(_Complex double) == 8 ? 1 : -1];
-
-// PR6362
-struct __attribute__((packed)) {unsigned int a;} g4;
-short chk1[__alignof__(g4) == 1 ? 1 : -1];
-short chk2[__alignof__(g4.a) == 1 ? 1 : -1];
-
-
-// PR5637
-
-#define ALIGNED(x) __attribute__((aligned(x)))
-
-typedef ALIGNED(2) struct {
-  char a[3];
-} T;
-
-short chk1[sizeof(T)       == 3 ? 1 : -1];
-short chk2[sizeof(T[1])    == 4 ? 1 : -1];
-short chk3[sizeof(T[2])    == 6 ? 1 : -1];
-short chk4[sizeof(T[2][1]) == 8 ? 1 : -1];
-short chk5[sizeof(T[1][2]) == 6 ? 1 : -1];
-
-typedef struct ALIGNED(2) {
-  char a[3];
-} T2;
-
-short chk1[sizeof(T2)       == 4 ? 1 : -1];
-short chk2[sizeof(T2[1])    == 4 ? 1 : -1];
-short chk3[sizeof(T2[2])    == 8 ? 1 : -1];
-short chk4[sizeof(T2[2][1]) == 8 ? 1 : -1];
-short chk5[sizeof(T2[1][2]) == 8 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/alignas.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/alignas.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/alignas.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -Dalignof=__alignof %s
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -Dalignof=_Alignof -DUSING_C11_SYNTAX %s
-
-_Alignas(3) int align_illegal; //expected-error {{requested alignment is not a power of 2}}
-_Alignas(int) char align_big;
-_Alignas(1) int align_small; // expected-error {{requested alignment is less than minimum}}
-_Alignas(1) unsigned _Alignas(8) int _Alignas(1) align_multiple;
-
-struct align_member {
-  _Alignas(8) int member;
-  _Alignas(1) char bitfield : 1; // expected-error {{'_Alignas' attribute cannot be applied to a bit-field}}
-};
-
-typedef _Alignas(8) char align_typedef; // expected-error {{'_Alignas' attribute only applies to variables and fields}}
-
-void f(_Alignas(1) char c) { // expected-error {{'_Alignas' attribute cannot be applied to a function parameter}}
-  _Alignas(1) register char k; // expected-error {{'_Alignas' attribute cannot be applied to a variable with 'register' storage class}}
-}
-
-#ifdef USING_C11_SYNTAX
-// expected-warning at +4{{'_Alignof' applied to an expression is a GNU extension}}
-// expected-warning at +4{{'_Alignof' applied to an expression is a GNU extension}}
-// expected-warning at +4{{'_Alignof' applied to an expression is a GNU extension}}
-#endif
-_Static_assert(alignof(align_big) == alignof(int), "k's alignment is wrong");
-_Static_assert(alignof(align_small) == 1, "j's alignment is wrong");
-_Static_assert(alignof(align_multiple) == 8, "l's alignment is wrong");
-_Static_assert(alignof(struct align_member) == 8, "quuux's alignment is wrong");
-_Static_assert(sizeof(struct align_member) == 8, "quuux's size is wrong");

Modified: trunk/contrib/llvm/tools/clang/test/Sema/alloc_size.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/alloc_size.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/alloc_size.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void* my_malloc(unsigned char) __attribute__((alloc_size(1)));
-void* my_calloc(unsigned char, short) __attribute__((alloc_size(1,2)));
-void* my_realloc(void*, unsigned) __attribute__((alloc_size(2)));
-
-
-void* fn1(int) __attribute__((alloc_size("xpto"))); // expected-error{{attribute requires integer constant}}
-
-void* fn2(void*) __attribute__((alloc_size(1))); // expected-error{{attribute requires integer constant}}
-
-void* fn3(unsigned) __attribute__((alloc_size(0))); // expected-error{{attribute parameter 1 is out of bounds}}
-void* fn4(unsigned) __attribute__((alloc_size(2))); // expected-error{{attribute parameter 1 is out of bounds}}
-
-void fn5(unsigned) __attribute__((alloc_size(1))); // expected-warning{{only applies to functions that return a pointer}}
-char fn6(unsigned) __attribute__((alloc_size(1))); // expected-warning{{only applies to functions that return a pointer}}
-
-void* fn7(unsigned) __attribute__((alloc_size)); // expected-error {{attribute takes at least 1 argument}}
-
-void *fn8(int, int) __attribute__((alloc_size(1, 1))); // OK
-
-void* fn9(unsigned) __attribute__((alloc_size(12345678901234567890123))); // expected-warning {{integer constant is too large for its type}} // expected-error {{attribute parameter 1 is out of bounds}}
-
-void* fn10(size_t, size_t) __attribute__((alloc_size(1,2))); // expected-error{{redefinition of parameter}} \
-                                                             // expected-error{{a parameter list without types is only allowed in a function definition}} \
-                                                             // expected-error{{attribute parameter 1 is out of bounds}}
-void* fn11() __attribute__((alloc_size(1))); // expected-error{{attribute parameter 1 is out of bounds}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/altivec-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/altivec-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/altivec-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 %s -triple=powerpc-apple-darwin8 -faltivec -verify -pedantic -fsyntax-only
-
-typedef int v4 __attribute((vector_size(16)));
-typedef short v8 __attribute((vector_size(16)));
-
-v8 foo(void) { 
-  v8 a;
-  v4 b;
-  a = (v8){4, 2};
-  b = (v4)(5, 6, 7, 8, 9); // expected-warning {{excess elements in vector initializer}}
-  b = (v4)(5, 6, 8, 8.0f);
-
-  vector int vi;
-  vi = (vector int)(1);
-  vi = (vector int)(1, 2);          // expected-error {{number of elements must be either one or match the size of the vector}}
-  vi = (vector int)(1, 2, 3, 4);
-  vi = (vector int)(1, 2, 3, 4, 5); // expected-warning {{excess elements in vector initializer}}
-  vi = (vector int){1};
-  vi = (vector int){1, 2};
-  vi = (vector int){1, 2, 3, 4, 5}; // expected-warning {{excess elements in vector initializer}}
-  vector float vf;
-  vf = (vector float)(1.0);
-
-  return (v8){0, 1, 2, 3, 1, 2, 3, 4};
-
-  // FIXME: test that (type)(fn)(args) still works with -faltivec
-  // FIXME: test that c++ overloaded commas still work -faltivec
-}
-
-void __attribute__((__overloadable__)) f(v4 a)
-{
-}
-
-void __attribute__((__overloadable__)) f(int a)
-{
-}
-
-void test()
-{
-  v4 vGCC;
-  vector int vAltiVec;
-
-  f(vAltiVec);
-  vGCC = vAltiVec;
-  int res = vGCC > vAltiVec;
-  vAltiVec = 0 ? vGCC : vGCC;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/annotate.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/annotate.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/annotate.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-void __attribute__((annotate("foo"))) foo(float *a) { 
-  __attribute__((annotate("bar"))) int x;
-  __attribute__((annotate(1))) int y; // expected-error {{argument to annotate attribute was not a string literal}}
-  __attribute__((annotate("bar", 1))) int z; // expected-error {{attribute takes one argument}}
-  int u = __builtin_annotation(z, (char*) 0); // expected-error {{second argument to __builtin_annotation must be a non-wide string constant}}
-  int v = __builtin_annotation(z, (char*) L"bar"); // expected-error {{second argument to __builtin_annotation must be a non-wide string constant}}
-  int w = __builtin_annotation(z, "foo");
-  float b = __builtin_annotation(*a, "foo"); // expected-error {{first argument to __builtin_annotation must be an integer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/anonymous-struct-union-c11.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/anonymous-struct-union-c11.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/anonymous-struct-union-c11.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// Check for warnings in non-C11 mode:
-// RUN: %clang_cc1 -fsyntax-only -verify -Wc11-extensions %s
-
-// Expect no warnings in C11 mode:
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -std=c11 %s
-
-struct s {
-  int a;
-  struct { // expected-warning{{anonymous structs are a C11 extension}}
-    int b;
-  };
-};
-
-struct t {
-  int a;
-  union { // expected-warning{{anonymous unions are a C11 extension}}
-    int b;
-  };
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/anonymous-struct-union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/anonymous-struct-union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/anonymous-struct-union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,110 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct X {
-  union {
-    float f3;
-    double d2;
-  } named;
-
-  union {
-    int i;
-    float f;
-    
-    union {
-      float f2;
-      double d;
-    };
-  };
-
-  struct {
-    int a;
-    float b;
-  };
-};
-
-void test_unqual_references(struct X x, const struct X xc) {
-  x.i = 0;
-  x.f = 0.0;
-  x.f2 = x.f;
-  x.d = x.f;
-  x.f3 = 0; // expected-error{{no member named 'f3'}}
-  x.a = 0;
-
-  xc.d = 0.0; // expected-error{{read-only variable is not assignable}}
-  xc.f = 0; // expected-error{{read-only variable is not assignable}}
-  xc.a = 0; // expected-error{{read-only variable is not assignable}}
-}
-
-
-struct Redecl {
-  int x; // expected-note{{previous declaration is here}}
-  struct y { };
-
-  union {
-    int x; // expected-error{{member of anonymous union redeclares 'x'}}
-    float y;
-    double z; // expected-note{{previous declaration is here}}
-    double zz; // expected-note{{previous declaration is here}}
-  };
-
-  int z; // expected-error{{duplicate member 'z'}}
-  void zz(); // expected-error{{duplicate member 'zz'}} 
-};
-
-union { // expected-warning{{declaration does not declare anything}}
-  int int_val;
-  float float_val;
-};
-
-static union { // expected-warning{{declaration does not declare anything}}
-  int int_val2;
-  float float_val2;
-};
-
-void f() {
-  int_val2 = 0; // expected-error{{use of undeclared identifier}}
-  float_val2 = 0.0; // expected-error{{use of undeclared identifier}}
-}
-
-void g() {
-  union { // expected-warning{{declaration does not declare anything}}
-    int i;
-    float f2;
-  };
-  i = 0; // expected-error{{use of undeclared identifier}}
-  f2 = 0.0; // expected-error{{use of undeclared identifier}}
-}
-
-// <rdar://problem/6483159>
-struct s0 { union { int f0; }; };
-
-// <rdar://problem/6481130>
-typedef struct { }; // expected-warning{{typedef requires a name}}
-
-// PR3675
-struct s1 {
-  int f0; // expected-note{{previous declaration is here}}
-  union {
-    int f0; // expected-error{{member of anonymous union redeclares 'f0'}}
-  };
-};
-
-// PR3680
-struct {}; // expected-warning{{declaration does not declare anything}}
-
-struct s2 {
-  union {
-    int a;
-  } // expected-warning{{expected ';' at end of declaration list}}
-}; // expected-error{{expected member name or ';' after declaration specifiers}}
-
-// Make sure we don't a.k.a. anonymous structs.
-typedef struct {
-  int x;
-} a_struct;
-int tmp = (a_struct) { .x = 0 }; // expected-error {{initializing 'int' with an expression of incompatible type 'a_struct'}}
-
-// This example comes out of the C11 standard; make sure we don't accidentally reject it.
-struct s {
-  struct { int i; };
-  int a[];
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/arg-duplicate.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/arg-duplicate.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/arg-duplicate.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int f3(y, x, 
-       x)          // expected-error {{redefinition of parameter}}
-  int y, 
-      x,           // expected-note {{previous declaration is here}}
-      x;           // expected-error {{redefinition of parameter}}
-{
-  return x + y; 
-} 
-
-void f4(void) { 
-  f3 (1, 1, 2, 3, 4); // expected-warning{{too many arguments}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/arg-scope-c99.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/arg-scope-c99.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/arg-scope-c99.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c99 -verify %s
-// expected-no-diagnostics
-void bb(int sz, int ar[sz][sz]) { }

Modified: trunk/contrib/llvm/tools/clang/test/Sema/arg-scope.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/arg-scope.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/arg-scope.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-void aa(int b, int x[sizeof b]) {}
-
-void foo(int i, int A[i]) {}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/arm-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/arm-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/arm-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -triple armv7-apple-darwin -verify -fsyntax-only
-
-void f (void) {
-  int Val;
-  asm volatile ("lw (r1), %0[val]": "=&b"(Val)); // expected-error {{invalid output constraint '=&b' in asm}}
-  return;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/arm-layout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/arm-layout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/arm-layout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -triple armv7-unknown-unknown -target-abi apcs-gnu %s -verify
-// RUN: %clang_cc1 -triple armv7-unknown-unknown -target-abi aapcs %s -verify
-// expected-no-diagnostics
-
-#define check(name, cond) int _##name##_check[(cond) ? 1 : -1]
-
-struct s0 { char field0; double field1; };
-#ifdef __ARM_EABI__
-check(s0_size, sizeof(struct s0) == 16);
-#else
-check(s0_size, sizeof(struct s0) == 12);
-#endif
-
-struct s1 { char field0; long double field1; };
-#ifdef __ARM_EABI__
-check(s1_size, sizeof(struct s1) == 16);
-#else
-check(s1_size, sizeof(struct s1) == 12);
-#endif
-
-struct s2 {
-  short field0;
-  int field1 : 24;
-  char field2;
-};
-#ifdef __ARM_EABI__
-check(s2_size, sizeof(struct s2) == 8);
-check(s2_offset_0, __builtin_offsetof(struct s2, field0) == 0);
-check(s2_offset_1, __builtin_offsetof(struct s2, field2) == 7);
-#else
-check(s2_size, sizeof(struct s2) == 6);
-check(s2_offset_0, __builtin_offsetof(struct s2, field0) == 0);
-check(s2_offset_1, __builtin_offsetof(struct s2, field2) == 5);
-#endif
-
-struct s3 {
-  short field0;
-  int field1 : 24 __attribute__((aligned(4)));
-  char field2;
-};
-check(s3_size, sizeof(struct s3) == 8);
-check(s3_offset_0, __builtin_offsetof(struct s3, field0) == 0);
-check(s3_offset_1, __builtin_offsetof(struct s3, field2) == 7);
-
-struct s4 {
-  int field0 : 4;
-};
-#ifdef __ARM_EABI__
-check(s4_size, sizeof(struct s4) == 4);
-check(s4_align, __alignof(struct s4) == 4);
-#else
-check(s4_size, sizeof(struct s4) == 1);
-check(s4_align, __alignof(struct s4) == 1);
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Sema/arm-neon-types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/arm-neon-types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/arm-neon-types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -triple thumbv7-apple-darwin10 -target-cpu cortex-a8 -fsyntax-only -Wvector-conversion -ffreestanding -verify %s
-#ifndef INCLUDE
-
-#include <arm_neon.h>
-
-// Radar 8228022: Should not report incompatible vector types.
-int32x2_t test(int32x2_t x) {
-  return vshr_n_s32(x, 31);
-}
-
-// ...but should warn when the types really do not match.
-float32x2_t test2(uint32x2_t x) {
-  return vcvt_n_f32_s32(x, 9); // expected-warning {{incompatible vector types}}
-}
-
-// Check immediate range for vcvt_n intrinsics is 1 to 32.  Radar 9558930.
-float32x2_t test3(uint32x2_t x) {
-  // FIXME: The "incompatible result type" error is due to pr10112 and should be
-  // removed when that is fixed.
-  return vcvt_n_f32_u32(x, 0); // expected-error {{argument should be a value from 1 to 32}} expected-error {{incompatible result type}}
-}
-
-typedef signed int vSInt32 __attribute__((__vector_size__(16)));
-int32x4_t test4(int32x4_t a, vSInt32 b) {
-  a += b;
-  b += a;
-  return b += a;
-}
-
-// Warn for incompatible pointer types used with vld/vst intrinsics.
-int16x8_t test5(int *p) {
-  return vld1q_s16(p); // expected-warning {{incompatible pointer types}}
-}
-void test6(float *p, int32x2_t v) {
-  return vst1_s32(p, v); // expected-warning {{incompatible pointer types}}
-}
-
-#define INCLUDE
-#include "arm-neon-types.c"
-#else
-
-// Make sure we don't get a warning about using a static function in an
-// extern inline function from a header.
-extern inline uint8x8_t test7(uint8x8_t a, uint8x8_t b) {
-  return vadd_u8(a, b);
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Sema/array-bounds-ptr-arith.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/array-bounds-ptr-arith.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/array-bounds-ptr-arith.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -verify -Warray-bounds-pointer-arithmetic %s
-
-// Test case from PR10615
-struct ext2_super_block{
-  unsigned char s_uuid[8]; // expected-note {{declared here}}
-};
-void* ext2_statfs (struct ext2_super_block *es,int a)
-{
-	 return (void *)es->s_uuid + sizeof(int); // no-warning
-}
-void* broken (struct ext2_super_block *es,int a)
-{
-	 return (void *)es->s_uuid + 80; // expected-warning {{refers past the end of the array}}
-}
-
-// Test case reduced from PR11594
-struct S { int n; };
-void pr11594(struct S *s) {
-  int a[10];
-  int *p = a - s->n;
-}
-
-// Test case reduced from <rdar://problem/11387038>.  This resulted in
-// an assertion failure because of the typedef instead of an explicit
-// constant array type.
-struct RDar11387038 {};
-typedef struct RDar11387038 RDar11387038Array[1];
-struct RDar11387038_Table {
-  RDar11387038Array z;
-};
-typedef struct RDar11387038_Table * TPtr;
-typedef TPtr *TabHandle;
-struct RDar11387038_B { TabHandle x; };
-typedef struct RDar11387038_B RDar11387038_B;
-
-void radar11387038() {
-  RDar11387038_B *pRDar11387038_B;
-  struct RDar11387038* y = &(*pRDar11387038_B->x)->z[4];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/array-constraint.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/array-constraint.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/array-constraint.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-struct s;  // expected-note 2 {{forward declaration of 'struct s'}}
-struct s* t (struct s z[]) {   // expected-error {{array has incomplete element type}}
-  return z;
-}
-
-void ff() { 
-  struct s v, *p; // expected-error {{variable has incomplete type 'struct s'}}
-
-  p = &v;
-}
-
-void *k (void l[2]) {          // expected-error {{array has incomplete element type}}
-  return l; 
-}
-
-struct vari {
-  int a;
-  int b[];
-};
-
-struct vari *func(struct vari a[]) { // expected-warning {{'struct vari' may not be used as an array element due to flexible array member}}
-  return a;
-}
-
-int foo[](void);  // expected-error {{'foo' declared as array of functions}}
-int foo2[1](void);  // expected-error {{'foo2' declared as array of functions}}
-
-typedef int (*pfunc)(void);
-
-pfunc xx(int f[](void)) { // expected-error {{'f' declared as array of functions}}
-  return f;
-}
-
-void check_size() {
-  float f;
-  int size_not_int[f]; // expected-error {{size of array has non-integer type 'float'}}
-  int negative_size[1-2]; // expected-error{{array with a negative size}}
-  int zero_size[0]; // expected-warning{{zero size arrays are an extension}}
-}
-
-static int I;
-typedef int TA[I]; // expected-error {{variable length array declaration not allowed at file scope}}
-
-void strFunc(char *); // expected-note{{passing argument to parameter here}}
-const char staticAry[] = "test";
-void checkStaticAry() { 
-  strFunc(staticAry); // expected-warning{{passing 'const char [5]' to parameter of type 'char *' discards qualifiers}}
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/array-declared-as-incorrect-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/array-declared-as-incorrect-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/array-declared-as-incorrect-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-extern int a1[];
-int a1[1];
-
-extern int a2[]; // expected-note {{previous definition is here}}
-float a2[1]; // expected-error {{redefinition of 'a2'}}
-
-extern int a3[][2];
-int a3[1][2];
-
-extern int a4[][2]; // expected-note {{previous definition is here}}
-int a4[2]; // expected-error {{redefinition of 'a4'}}
-
-extern int a5[1][2][3]; // expected-note {{previous definition is here}}
-int a5[3][2][1]; // expected-error {{redefinition of 'a5'}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/array-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/array-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/array-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,291 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wgnu -Wc11-extensions -verify %s
-// REQUIRES: LP64
-
-extern int foof() = 1; // expected-error{{illegal initializer (only variables can be initialized)}}
-
-static int x, y, z;
-
-static int ary[] = { x, y, z }; // expected-error{{initializer element is not a compile-time constant}}
-int ary2[] = { x, y, z }; // expected-error{{initializer element is not a compile-time constant}}
-
-extern int fileScopeExtern[3] = { 1, 3, 5 }; // expected-warning{{'extern' variable has an initializer}}
-
-static long ary3[] = { 1, "abc", 3, 4 }; // expected-warning{{incompatible pointer to integer conversion initializing 'long' with an expression of type 'char [4]'}}
-
-void func() {
-  int x = 1;
-
-  typedef int TInt = 1; // expected-error{{illegal initializer (only variables can be initialized)}}
-
-  int xComputeSize[] = { 1, 3, 5 };
-
-  int x3[x] = { 1, 2 }; // expected-error{{variable-sized object may not be initialized}}
-
-  int x4 = { 1, 2 }; // expected-warning{{excess elements in scalar initializer}}
-
-  int y[4][3] = { 
-    { 1, 3, 5 },
-    { 2, 4, 6 },
-    { 3, 5, 7 },
-  };
-
-  int y2[4][3] = {
-    1, 3, 5, 2, 4, 6, 3, 5, 7
-  };
-
-  int y3[4][3] = {  
-    { 1, 3, 5 },
-    { 2, 4, 6 },
-    { 3, 5, 7 },
-    { 4, 6, 8 },
-    { 5 }, // expected-warning{{excess elements in array initializer}}
-  };
-
-  struct threeElements {
-    int a,b,c;
-  } z = { 1 };
-
-  struct threeElements *p = 7; // expected-warning{{incompatible integer to pointer conversion initializing 'struct threeElements *' with an expression of type 'int'}}
-  
-  extern int blockScopeExtern[3] = { 1, 3, 5 }; // expected-error{{'extern' variable cannot have an initializer}}
-  
-  static long x2[3] = { 1.0,
-                        "abc", // expected-warning{{incompatible pointer to integer conversion initializing 'long' with an expression of type 'char [4]'}}
-                         5.8 }; // expected-warning {{implicit conversion from 'double' to 'long' changes value from 5.8 to 5}}
-}
-
-void test() {
-  int y1[3] = { 
-    { 1, 2, 3 } // expected-warning{{excess elements in scalar initializer}}
-  };
-  int y3[4][3] = {  
-    { 1, 3, 5 },
-    { 2, 4, 6 },
-    { 3, 5, 7 },
-    { 4, 6, 8 },
-    {  }, // expected-warning{{use of GNU empty initializer extension}} expected-warning{{excess elements in array initializer}}
-  };
-  int y4[4][3] = {  
-    { 1, 3, 5, 2 }, // expected-warning{{excess elements in array initializer}}
-    { 4, 6 },
-    { 3, 5, 7 },
-    { 4, 6, 8 },
-  };
-}
-
-void allLegalAndSynonymous() {
-  short q[4][3][2] = {
-    { 1 },
-    { 2, 3 },
-    { 4, 5, 6 }
-  };
-  short q2[4][3][2] = {
-    { 1, 0, 0, 0, 0, 0 },
-    { 2, 3, 0, 0, 0, 0 },
-    { 4, 5, 6 }
-  };
-  short q3[4][3][2] = {
-    { 
-      { 1 },
-    },
-    { 
-      { 2, 3 },
-    },
-    { 
-      { 4, 5 },
-      { 6 },
-    },
-  };
-}
-
-void legal() {
-  short q[][3][2] = {
-    { 1 },
-    { 2, 3 },
-    { 4, 5, 6 }
-  };
-  int q_sizecheck[(sizeof(q) / sizeof(short [3][2])) == 3? 1 : -1];
-}
-
-unsigned char asso_values[] = { 34 };
-int legal2() { 
-  return asso_values[0]; 
-}
-
-void illegal() {
-  short q2[4][][2] = { // expected-error{{array has incomplete element type 'short [][2]'}}
-    { 1, 0, 0, 0, 0, 0 },
-    { 2, 3, 0, 0, 0, 0 },
-    { 4, 5, 6 }
-  };
-  short q3[4][3][] = { // expected-error{{array has incomplete element type 'short []'}}
-    { 
-      { 1 },
-    },
-    { 
-      { 2, 3 },
-    },
-    { 
-      { 4, 5 },
-      { 6 },
-    },
-  };
-  int a[][] = { 1, 2 }; // expected-error{{array has incomplete element type 'int []'}}
-}
-
-typedef int AryT[];
-
-void testTypedef()
-{
-  AryT a = { 1, 2 }, b = { 3, 4, 5 };
-  int a_sizecheck[(sizeof(a) / sizeof(int)) == 2? 1 : -1];
-  int b_sizecheck[(sizeof(b) / sizeof(int)) == 3? 1 : -1];
-}
-
-static char const xx[] = "test";
-int xx_sizecheck[(sizeof(xx) / sizeof(char)) == 5? 1 : -1];
-static char const yy[5] = "test";
-static char const zz[3] = "test"; // expected-warning{{initializer-string for char array is too long}}
-
-void charArrays() {
-  static char const test[] = "test";
-  int test_sizecheck[(sizeof(test) / sizeof(char)) == 5? 1 : -1];
-  static char const test2[] = { "weird stuff" };
-  static char const test3[] = { "test", "excess stuff" }; // expected-warning{{excess elements in char array initializer}}
-
-  char* cp[] = { "Hello" };
-
-  char c[] = { "Hello" };
-  int l[sizeof(c) == 6 ? 1 : -1];
-  
-  int i[] = { "Hello "}; // expected-warning{{incompatible pointer to integer conversion initializing 'int' with an expression of type 'char [7]'}}
-  char c2[] = { "Hello", "Good bye" }; //expected-warning{{excess elements in char array initializer}}
-
-  int i2[1] = { "Hello" }; //expected-warning{{incompatible pointer to integer conversion initializing 'int' with an expression of type 'char [6]'}}
-  char c3[5] = { "Hello" };
-  char c4[4] = { "Hello" }; //expected-warning{{initializer-string for char array is too long}}
-
-  int i3[] = {}; //expected-warning{{zero size arrays are an extension}} expected-warning{{use of GNU empty initializer extension}}
-}
-
-void variableArrayInit() {
-  int a = 4;
-  char strlit[a] = "foo"; //expected-error{{variable-sized object may not be initialized}}
-  int b[a] = { 1, 2, 4 }; //expected-error{{variable-sized object may not be initialized}}
-}
-
-// Pure array tests
-float r1[10] = {{7}}; //expected-warning{{braces around scalar initializer}}
-float r2[] = {{8}}; //expected-warning{{braces around scalar initializer}}
-char r3[][5] = {1,2,3,4,5,6};
-int r3_sizecheck[(sizeof(r3) / sizeof(char[5])) == 2? 1 : -1];
-char r3_2[sizeof r3 == 10 ? 1 : -1];
-float r4[1][2] = {1,{2},3,4}; //expected-warning{{braces around scalar initializer}} expected-warning{{excess elements in array initializer}}
-char r5[][5] = {"aa", "bbb", "ccccc"};
-char r6[sizeof r5 == 15 ? 1 : -1];
-const char r7[] = "zxcv";
-char r8[5] = "5char";
-char r9[5] = "6chars"; //expected-warning{{initializer-string for char array is too long}}
-unsigned char r10[] = __extension__ (_Generic(0, int: (__extension__ "foo" )));
-int r11[0] = {}; //expected-warning{{zero size arrays are an extension}} expected-warning{{use of GNU empty initializer extension}}
-
-// Some struct tests
-void autoStructTest() {
-struct s1 {char a; char b;} t1;
-struct s2 {struct s1 c;} t2 = { t1 };
-// The following is a less than great diagnostic (though it's on par with EDG).
-struct s1 t3[] = {t1, t1, "abc", 0}; //expected-warning{{incompatible pointer to integer conversion initializing 'char' with an expression of type 'char [4]'}}
-int t4[sizeof t3 == 6 ? 1 : -1];
-}
-struct foo { int z; } w;
-int bar (void) { 
-  struct foo z = { w }; //expected-error{{initializing 'int' with an expression of incompatible type 'struct foo'}}
-  return z.z; 
-} 
-struct s3 {void (*a)(void);} t5 = {autoStructTest};
-struct {int a; int b[];} t6 = {1, {1, 2, 3}}; // expected-warning{{flexible array initialization is a GNU extension}} \
-// expected-note{{initialized flexible array member 'b' is here}}
-union {char a; int b;} t7[] = {1, 2, 3};
-int t8[sizeof t7 == (3*sizeof(int)) ? 1 : -1];
-
-struct bittest{int : 31, a, :21, :12, b;};
-struct bittest bittestvar = {1, 2, 3, 4}; //expected-warning{{excess elements in struct initializer}}
-
-// Not completely sure what should happen here...
-int u1 = {}; //expected-warning{{use of GNU empty initializer extension}} expected-error{{scalar initializer cannot be empty}}
-int u2 = {{3}}; //expected-warning{{too many braces around scalar initializer}}
-
-// PR2362
-void varArray() {
-  int c[][x] = { 0 }; //expected-error{{variable-sized object may not be initialized}}
-}
-
-// PR2151
-void emptyInit() {struct {} x[] = {6};} //expected-warning{{empty struct is a GNU extension}} \
-// expected-error{{initializer for aggregate with no elements}}
-
-void noNamedInit() {
-  struct {int:5;} x[] = {6}; //expected-error{{initializer for aggregate with no elements}}
-}
-struct {int a; int:5;} noNamedImplicit[] = {1,2,3};
-int noNamedImplicitCheck[sizeof(noNamedImplicit) == 3 * sizeof(*noNamedImplicit) ? 1 : -1];
-
-
-// ptrs are constant
-struct soft_segment_descriptor {
-  long ssd_base;
-};
-static int dblfault_tss;
-
-union uniao { int ola; } xpto[1];
-
-struct soft_segment_descriptor gdt_segs[] = {
-  {(long) &dblfault_tss},
-  { (long)xpto},
-};
-
-static void sppp_ipv6cp_up();
-const struct {} ipcp = { sppp_ipv6cp_up }; //expected-warning{{empty struct is a GNU extension}} \
-// expected-warning{{excess elements in struct initializer}}
-
-struct _Matrix { union { float m[4][4]; }; }; //expected-warning{{anonymous unions are a C11 extension}}
-typedef struct _Matrix Matrix;
-void test_matrix() {
-  const Matrix mat1 = {
-    { { 1.0f, 2.0f, 3.0f, 4.0f,
-        5.0f, 6.0f, 7.0f, 8.0f,
-        9.0f, 10.0f, 11.0f, 12.0f,
-        13.0f, 14.0f, 15.0f, 16.0f } }
-  };
-
-  const Matrix mat2 = {
-    1.0f, 2.0f, 3.0f, 4.0f,
-    5.0f, 6.0f, 7.0f, 8.0f,
-    9.0f, 10.0f, 11.0f, 12.0f,
-    13.0f, 14.0f, 15.0f, 16.0f 
-  };
-}
-
-char badchararray[1] = { badchararray[0], "asdf" }; // expected-warning {{excess elements in array initializer}} expected-error {{initializer element is not a compile-time constant}}
-
-// Test the GNU extension for initializing an array from an array
-// compound literal. PR9261.
-typedef int int5[5];
-int a1[5] = (int[]){1, 2, 3, 4, 5}; // expected-warning{{initialization of an array of type 'int [5]' from a compound literal of type 'int [5]' is a GNU extension}}
-int a2[5] = (int[5]){1, 2, 3, 4, 5}; // expected-warning{{initialization of an array of type 'int [5]' from a compound literal of type 'int [5]' is a GNU extension}}
-int a3[] = ((int[]){1, 2, 3, 4, 5}); // expected-warning{{initialization of an array of type 'int []' from a compound literal of type 'int [5]' is a GNU extension}}
-int a4[] = (int[5]){1, 2, 3, 4, 5}; // expected-warning{{initialization of an array of type 'int []' from a compound literal of type 'int [5]' is a GNU extension}}
-int a5[] = (int5){1, 2, 3, 4, 5}; // expected-warning{{initialization of an array of type 'int []' from a compound literal of type 'int5' (aka 'int [5]') is a GNU extension}}
-
-int a6[5] = (int[]){1, 2, 3}; // expected-error{{cannot initialize array of type 'int [5]' with array of type 'int [3]'}}
-
-int nonconst_value();
-int a7[5] = (int[5]){ 1, 2, 3, 4, nonconst_value() }; // expected-error{{initializer element is not a compile-time constant}}
-
-// <rdar://problem/10636946>
-__attribute__((weak)) const unsigned int test10_bound = 10;
-char test10_global[test10_bound]; // expected-error {{variable length array declaration not allowed at file scope}}
-void test10() {
-  char test10_local[test10_bound] = "help"; // expected-error {{variable-sized object may not be initialized}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/array-size-64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/array-size-64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/array-size-64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -verify %s
-
-void f() {
-  int a[2147483647U][2147483647U]; // expected-error{{array is too large}}
-  int b[1073741825U - 1U][2147483647U];
-  int c[18446744073709551615U/sizeof(int)/2];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/array-size.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/array-size.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/array-size.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin -verify %s
-
-void f() {
-  int x0[1073741824]; // expected-error{{array is too large}}
-  int x1[1073741824 + 1]; // expected-error{{array is too large}}
-  int x2[(unsigned)1073741824]; // expected-error{{array is too large}}
-  int x3[(unsigned)1073741824 + 1]; // expected-error{{array is too large}}
-  int x4[1073741824 - 1];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,148 +0,0 @@
-// RUN: %clang_cc1 %s -Wno-private-extern -triple i386-pc-linux-gnu -verify -fsyntax-only
-
-void f() {
-  int i;
-
-  asm ("foo\n" : : "a" (i + 2));
-  asm ("foo\n" : : "a" (f())); // expected-error {{invalid type 'void' in asm input}}
-
-  asm ("foo\n" : "=a" (f())); // expected-error {{invalid lvalue in asm output}}
-  asm ("foo\n" : "=a" (i + 2)); // expected-error {{invalid lvalue in asm output}}
-
-  asm ("foo\n" : [symbolic_name] "=a" (i) : "[symbolic_name]" (i));
-  asm ("foo\n" : "=a" (i) : "[" (i)); // expected-error {{invalid input constraint '[' in asm}}
-  asm ("foo\n" : "=a" (i) : "[foo" (i)); // expected-error {{invalid input constraint '[foo' in asm}}
-  asm ("foo\n" : "=a" (i) : "[symbolic_name]" (i)); // expected-error {{invalid input constraint '[symbolic_name]' in asm}}
-}
-
-void clobbers() {
-  asm ("nop" : : : "ax", "#ax", "%ax");
-  asm ("nop" : : : "eax", "rax", "ah", "al");
-  asm ("nop" : : : "0", "%0", "#0");
-  asm ("nop" : : : "foo"); // expected-error {{unknown register name 'foo' in asm}}
-  asm ("nop" : : : "52");
-  asm ("nop" : : : "104"); // expected-error {{unknown register name '104' in asm}}
-  asm ("nop" : : : "-1"); // expected-error {{unknown register name '-1' in asm}}
-  asm ("nop" : : : "+1"); // expected-error {{unknown register name '+1' in asm}}
-}
-
-// rdar://6094010
-void test3() {
-  int x;
-  asm(L"foo" : "=r"(x)); // expected-error {{wide string}}
-  asm("foo" : L"=r"(x)); // expected-error {{wide string}}
-}
-
-// <rdar://problem/6156893>
-void test4(const volatile void *addr)
-{
-    asm ("nop" : : "r"(*addr)); // expected-error {{invalid type 'const volatile void' in asm input for constraint 'r'}}
-    asm ("nop" : : "m"(*addr));
-
-    asm ("nop" : : "r"(test4(addr))); // expected-error {{invalid type 'void' in asm input for constraint 'r'}}
-    asm ("nop" : : "m"(test4(addr))); // expected-error {{invalid lvalue in asm input for constraint 'm'}}
-
-    asm ("nop" : : "m"(f())); // expected-error {{invalid lvalue in asm input for constraint 'm'}}
-}
-
-// <rdar://problem/6512595>
-void test5() {
-  asm("nop" : : "X" (8));
-}
-
-// PR3385
-void test6(long i) {
-  asm("nop" : : "er"(i));
-}
-
-void asm_string_tests(int i) {
-  asm("%!");   // simple asm string, %! is not an error.
-  asm("%!" : );   // expected-error {{invalid % escape in inline assembly string}}
-  asm("xyz %" : );   // expected-error {{invalid % escape in inline assembly string}}
-
-  asm ("%[somename]" :: [somename] "i"(4)); // ok
-  asm ("%[somename]" :: "i"(4)); // expected-error {{unknown symbolic operand name in inline assembly string}}
-  asm ("%[somename" :: "i"(4)); // expected-error {{unterminated symbolic operand name in inline assembly string}}
-  asm ("%[]" :: "i"(4)); // expected-error {{empty symbolic operand name in inline assembly string}}
-
-  // PR3258
-  asm("%9" :: "i"(4)); // expected-error {{invalid operand number in inline asm string}}
-  asm("%1" : "+r"(i)); // ok, referring to input.
-}
-
-// PR4077
-int test7(unsigned long long b) {
-  int a;
-  asm volatile("foo %0 %1" : "=a" (a) :"0" (b)); // expected-error {{input with type 'unsigned long long' matching output with type 'int'}}
-  return a;
-}
-
-// <rdar://problem/7574870>
-asm volatile (""); // expected-warning {{meaningless 'volatile' on asm outside function}}
-
-// PR3904
-void test8(int i) {
-  // A number in an input constraint can't point to a read-write constraint.
-  asm("" : "+r" (i), "=r"(i) :  "0" (i)); // expected-error{{invalid input constraint '0' in asm}}
-}
-
-// PR3905
-void test9(int i) {
-  asm("" : [foo] "=r" (i), "=r"(i) : "1[foo]"(i)); // expected-error{{invalid input constraint '1[foo]' in asm}}
-  asm("" : [foo] "=r" (i), "=r"(i) : "[foo]1"(i)); // expected-error{{invalid input constraint '[foo]1' in asm}}
-}
-
-register int g asm("dx"); // expected-error{{global register variables are not supported}}
-
-void test10(void){
-  static int g asm ("g_asm") = 0;
-  extern int gg asm ("gg_asm");
-  __private_extern__ int ggg asm ("ggg_asm");
-
-  int a asm ("a_asm"); // expected-warning{{ignored asm label 'a_asm' on automatic variable}}
-  auto int aa asm ("aa_asm"); // expected-warning{{ignored asm label 'aa_asm' on automatic variable}}
-
-  register int r asm ("cx");
-  register int rr asm ("rr_asm"); // expected-error{{unknown register name 'rr_asm' in asm}}
-}
-
-// This is just an assert because of the boolean conversion.
-// Feel free to change the assembly to something sensible if it causes a problem.
-// rdar://problem/9414925
-void test11(void) {
-  _Bool b;
-  asm volatile ("movb %%gs:%P2,%b0" : "=q"(b) : "0"(0), "i"(5L));
-}
-
-void test12(void) {
-  register int cc __asm ("cc"); // expected-error{{unknown register name 'cc' in asm}}
-}
-
-// PR10223
-void test13(void) {
-  void *esp;
-  __asm__ volatile ("mov %%esp, %o" : "=r"(esp) : : ); // expected-error {{invalid % escape in inline assembly string}}
-}
-
-// <rdar://problem/12700799>
-struct S;  // expected-note 2 {{forward declaration of 'struct S'}}
-void test14(struct S *s) {
-  __asm("": : "a"(*s)); // expected-error {{dereference of pointer to incomplete type 'struct S'}}
-  __asm("": "=a" (*s) :); // expected-error {{dereference of pointer to incomplete type 'struct S'}}
-}
-
-// PR15759.
-double test15() {
-  double ret = 0;
-  __asm("0.0":"="(ret)); // expected-error {{invalid output constraint '=' in asm}}
-  __asm("0.0":"=&"(ret)); // expected-error {{invalid output constraint '=&' in asm}}
-  __asm("0.0":"+?"(ret)); // expected-error {{invalid output constraint '+?' in asm}}
-  __asm("0.0":"+!"(ret)); // expected-error {{invalid output constraint '+!' in asm}}
-  __asm("0.0":"+#"(ret)); // expected-error {{invalid output constraint '+#' in asm}}
-  __asm("0.0":"+*"(ret)); // expected-error {{invalid output constraint '+*' in asm}}
-  __asm("0.0":"=%"(ret)); // expected-error {{invalid output constraint '=%' in asm}}
-  __asm("0.0":"=,="(ret)); // expected-error {{invalid output constraint '=,=' in asm}}
-  __asm("0.0":"=,g"(ret)); // no-error
-  __asm("0.0":"=g"(ret)); // no-error
-  return ret;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/assign-null.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/assign-null.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/assign-null.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-#include <stddef.h>
-
-typedef void (*hookfunc)(void *arg);
-hookfunc hook;
-
-void clear_hook() {
-  hook = NULL;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/assign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/assign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/assign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void *test1(void) { return 0; }
-
-void test2 (const struct {int a;} *x) {
-  x->a = 10; // expected-error {{read-only variable is not assignable}}
-}
-
-typedef int arr[10];
-void test3() {
-  const arr b;
-  const int b2[10]; 
-  b[4] = 1; // expected-error {{read-only variable is not assignable}}
-  b2[4] = 1; // expected-error {{read-only variable is not assignable}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ast-print.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ast-print.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ast-print.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -ast-print | FileCheck %s
-
-typedef void func_typedef();
-func_typedef xxx;
-
-typedef void func_t(int x);
-func_t a;
-
-struct blah {
-  struct {
-    struct {
-      int b;
-    };
-  };
-};
-
-int foo(const struct blah *b) {
-  // CHECK: return b->b;
-  return b->b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/atomic-expr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/atomic-expr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/atomic-expr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// expected-no-diagnostics
-
-_Atomic(unsigned int) data1;
-int _Atomic data2;
-
-// Shift operations
-
-int func_01 (int x) {
-  return data1 << x;
-}
-
-int func_02 (int x) {
-  return x << data1;
-}
-
-int func_03 (int x) {
-  return data2 << x;
-}
-
-int func_04 (int x) {
-  return x << data2;
-}
-
-int func_05 () {
-  return data2 << data1;
-}
-
-int func_06 () {
-  return data1 << data2;
-}
-
-void func_07 (int x) {
-  data1 <<= x;
-}
-
-void func_08 (int x) {
-  data2 <<= x;
-}
-
-void func_09 (int* xp) {
-  *xp <<= data1;
-}
-
-void func_10 (int* xp) {
-  *xp <<= data2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/atomic-ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/atomic-ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/atomic-ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,178 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -triple=i686-linux-gnu -std=c11
-// RUN: %clang_cc1 %s -verify -fsyntax-only -triple=aarch64-linux-gnu -std=c11
-
-// Basic parsing/Sema tests for __c11_atomic_*
-
-typedef enum memory_order {
-  memory_order_relaxed, memory_order_consume, memory_order_acquire,
-  memory_order_release, memory_order_acq_rel, memory_order_seq_cst
-} memory_order;
-
-struct S { char c[3]; };
-
-_Static_assert(__GCC_ATOMIC_BOOL_LOCK_FREE == 2, "");
-_Static_assert(__GCC_ATOMIC_CHAR_LOCK_FREE == 2, "");
-_Static_assert(__GCC_ATOMIC_CHAR16_T_LOCK_FREE == 2, "");
-_Static_assert(__GCC_ATOMIC_CHAR32_T_LOCK_FREE == 2, "");
-_Static_assert(__GCC_ATOMIC_WCHAR_T_LOCK_FREE == 2, "");
-_Static_assert(__GCC_ATOMIC_SHORT_LOCK_FREE == 2, "");
-_Static_assert(__GCC_ATOMIC_INT_LOCK_FREE == 2, "");
-_Static_assert(__GCC_ATOMIC_LONG_LOCK_FREE == 2, "");
-#ifdef __i386__
-_Static_assert(__GCC_ATOMIC_LLONG_LOCK_FREE == 1, "");
-#else
-_Static_assert(__GCC_ATOMIC_LLONG_LOCK_FREE == 2, "");
-#endif
-_Static_assert(__GCC_ATOMIC_POINTER_LOCK_FREE == 2, "");
-
-_Static_assert(__c11_atomic_is_lock_free(1), "");
-_Static_assert(__c11_atomic_is_lock_free(2), "");
-_Static_assert(__c11_atomic_is_lock_free(3), ""); // expected-error {{not an integral constant expression}}
-_Static_assert(__c11_atomic_is_lock_free(4), "");
-_Static_assert(__c11_atomic_is_lock_free(8), "");
-_Static_assert(__c11_atomic_is_lock_free(16), ""); // expected-error {{not an integral constant expression}}
-_Static_assert(__c11_atomic_is_lock_free(17), ""); // expected-error {{not an integral constant expression}}
-
-_Static_assert(__atomic_is_lock_free(1, 0), "");
-_Static_assert(__atomic_is_lock_free(2, 0), "");
-_Static_assert(__atomic_is_lock_free(3, 0), ""); // expected-error {{not an integral constant expression}}
-_Static_assert(__atomic_is_lock_free(4, 0), "");
-_Static_assert(__atomic_is_lock_free(8, 0), "");
-_Static_assert(__atomic_is_lock_free(16, 0), ""); // expected-error {{not an integral constant expression}}
-_Static_assert(__atomic_is_lock_free(17, 0), ""); // expected-error {{not an integral constant expression}}
-
-char i8;
-short i16;
-int i32;
-int __attribute__((vector_size(8))) i64;
-struct Incomplete *incomplete;
-
-_Static_assert(__atomic_is_lock_free(1, &i8), "");
-_Static_assert(__atomic_is_lock_free(1, &i64), "");
-_Static_assert(__atomic_is_lock_free(2, &i8), ""); // expected-error {{not an integral constant expression}}
-_Static_assert(__atomic_is_lock_free(2, &i16), "");
-_Static_assert(__atomic_is_lock_free(2, &i64), "");
-_Static_assert(__atomic_is_lock_free(4, &i16), ""); // expected-error {{not an integral constant expression}}
-_Static_assert(__atomic_is_lock_free(4, &i32), "");
-_Static_assert(__atomic_is_lock_free(4, &i64), "");
-_Static_assert(__atomic_is_lock_free(8, &i32), ""); // expected-error {{not an integral constant expression}}
-_Static_assert(__atomic_is_lock_free(8, &i64), "");
-
-_Static_assert(__atomic_always_lock_free(1, 0), "");
-_Static_assert(__atomic_always_lock_free(2, 0), "");
-_Static_assert(!__atomic_always_lock_free(3, 0), "");
-_Static_assert(__atomic_always_lock_free(4, 0), "");
-_Static_assert(__atomic_always_lock_free(8, 0), "");
-_Static_assert(!__atomic_always_lock_free(16, 0), "");
-_Static_assert(!__atomic_always_lock_free(17, 0), "");
-
-_Static_assert(__atomic_always_lock_free(1, incomplete), "");
-_Static_assert(!__atomic_always_lock_free(2, incomplete), "");
-_Static_assert(!__atomic_always_lock_free(4, incomplete), "");
-
-_Static_assert(__atomic_always_lock_free(1, &i8), "");
-_Static_assert(__atomic_always_lock_free(1, &i64), "");
-_Static_assert(!__atomic_always_lock_free(2, &i8), "");
-_Static_assert(__atomic_always_lock_free(2, &i16), "");
-_Static_assert(__atomic_always_lock_free(2, &i64), "");
-_Static_assert(!__atomic_always_lock_free(4, &i16), "");
-_Static_assert(__atomic_always_lock_free(4, &i32), "");
-_Static_assert(__atomic_always_lock_free(4, &i64), "");
-_Static_assert(!__atomic_always_lock_free(8, &i32), "");
-_Static_assert(__atomic_always_lock_free(8, &i64), "");
-
-void f(_Atomic(int) *i, _Atomic(int*) *p, _Atomic(float) *d,
-       int *I, int **P, float *D, struct S *s1, struct S *s2) {
-  __c11_atomic_init(I, 5); // expected-error {{pointer to _Atomic}}
-  __c11_atomic_load(0); // expected-error {{too few arguments to function}}
-  __c11_atomic_load(0,0,0); // expected-error {{too many arguments to function}}
-  __c11_atomic_store(0,0,0); // expected-error {{first argument to atomic builtin must be a pointer}}
-  __c11_atomic_store((int*)0,0,0); // expected-error {{first argument to atomic operation must be a pointer to _Atomic}}
-
-  __c11_atomic_load(i, memory_order_seq_cst);
-  __c11_atomic_load(p, memory_order_seq_cst);
-  __c11_atomic_load(d, memory_order_seq_cst);
-
-  int load_n_1 = __atomic_load_n(I, memory_order_relaxed);
-  int *load_n_2 = __atomic_load_n(P, memory_order_relaxed);
-  float load_n_3 = __atomic_load_n(D, memory_order_relaxed); // expected-error {{must be a pointer to integer or pointer}}
-  __atomic_load_n(s1, memory_order_relaxed); // expected-error {{must be a pointer to integer or pointer}}
-
-  __atomic_load(i, I, memory_order_relaxed); // expected-error {{must be a pointer to a trivially-copyable type}}
-  __atomic_load(I, i, memory_order_relaxed); // expected-warning {{passing '_Atomic(int) *' to parameter of type 'int *'}}
-  __atomic_load(I, *P, memory_order_relaxed);
-  __atomic_load(I, *P, memory_order_relaxed, 42); // expected-error {{too many arguments}}
-  (int)__atomic_load(I, I, memory_order_seq_cst); // expected-error {{operand of type 'void'}}
-  __atomic_load(s1, s2, memory_order_acquire);
-
-  __c11_atomic_store(i, 1, memory_order_seq_cst);
-  __c11_atomic_store(p, 1, memory_order_seq_cst); // expected-warning {{incompatible integer to pointer conversion}}
-  (int)__c11_atomic_store(d, 1, memory_order_seq_cst); // expected-error {{operand of type 'void'}}
-
-  __atomic_store_n(I, 4, memory_order_release);
-  __atomic_store_n(I, 4.0, memory_order_release);
-  __atomic_store_n(I, P, memory_order_release); // expected-warning {{parameter of type 'int'}}
-  __atomic_store_n(i, 1, memory_order_release); // expected-error {{must be a pointer to integer or pointer}}
-  __atomic_store_n(s1, *s2, memory_order_release); // expected-error {{must be a pointer to integer or pointer}}
-
-  __atomic_store(I, *P, memory_order_release);
-  __atomic_store(s1, s2, memory_order_release);
-  __atomic_store(i, I, memory_order_release); // expected-error {{trivially-copyable}}
-
-  int exchange_1 = __c11_atomic_exchange(i, 1, memory_order_seq_cst);
-  int exchange_2 = __c11_atomic_exchange(I, 1, memory_order_seq_cst); // expected-error {{must be a pointer to _Atomic}}
-  int exchange_3 = __atomic_exchange_n(i, 1, memory_order_seq_cst); // expected-error {{must be a pointer to integer or pointer}}
-  int exchange_4 = __atomic_exchange_n(I, 1, memory_order_seq_cst);
-
-  __atomic_exchange(s1, s2, s2, memory_order_seq_cst);
-  __atomic_exchange(s1, I, P, memory_order_seq_cst); // expected-warning 2{{parameter of type 'struct S *'}}
-  (int)__atomic_exchange(s1, s2, s2, memory_order_seq_cst); // expected-error {{operand of type 'void'}}
-
-  __c11_atomic_fetch_add(i, 1, memory_order_seq_cst);
-  __c11_atomic_fetch_add(p, 1, memory_order_seq_cst);
-  __c11_atomic_fetch_add(d, 1, memory_order_seq_cst); // expected-error {{must be a pointer to atomic integer or pointer}}
-
-  __atomic_fetch_add(i, 3, memory_order_seq_cst); // expected-error {{pointer to integer or pointer}}
-  __atomic_fetch_sub(I, 3, memory_order_seq_cst);
-  __atomic_fetch_sub(P, 3, memory_order_seq_cst);
-  __atomic_fetch_sub(D, 3, memory_order_seq_cst); // expected-error {{must be a pointer to integer or pointer}}
-  __atomic_fetch_sub(s1, 3, memory_order_seq_cst); // expected-error {{must be a pointer to integer or pointer}}
-
-  __c11_atomic_fetch_and(i, 1, memory_order_seq_cst);
-  __c11_atomic_fetch_and(p, 1, memory_order_seq_cst); // expected-error {{must be a pointer to atomic integer}}
-  __c11_atomic_fetch_and(d, 1, memory_order_seq_cst); // expected-error {{must be a pointer to atomic integer}}
-
-  __atomic_fetch_and(i, 3, memory_order_seq_cst); // expected-error {{pointer to integer}}
-  __atomic_fetch_or(I, 3, memory_order_seq_cst);
-  __atomic_fetch_xor(P, 3, memory_order_seq_cst); // expected-error {{must be a pointer to integer}}
-  __atomic_fetch_or(D, 3, memory_order_seq_cst); // expected-error {{must be a pointer to integer}}
-  __atomic_fetch_and(s1, 3, memory_order_seq_cst); // expected-error {{must be a pointer to integer}}
-
-  _Bool cmpexch_1 = __c11_atomic_compare_exchange_strong(i, 0, 1, memory_order_seq_cst, memory_order_seq_cst);
-  _Bool cmpexch_2 = __c11_atomic_compare_exchange_strong(p, 0, (int*)1, memory_order_seq_cst, memory_order_seq_cst);
-  _Bool cmpexch_3 = __c11_atomic_compare_exchange_strong(d, (int*)0, 1, memory_order_seq_cst, memory_order_seq_cst); // expected-warning {{incompatible pointer types}}
-
-  _Bool cmpexch_4 = __atomic_compare_exchange_n(I, I, 5, 1, memory_order_seq_cst, memory_order_seq_cst);
-  _Bool cmpexch_5 = __atomic_compare_exchange_n(I, P, 5, 0, memory_order_seq_cst, memory_order_seq_cst); // expected-warning {{; dereference with *}}
-  _Bool cmpexch_6 = __atomic_compare_exchange_n(I, I, P, 0, memory_order_seq_cst, memory_order_seq_cst); // expected-warning {{passing 'int **' to parameter of type 'int'}}
-
-  _Bool cmpexch_7 = __atomic_compare_exchange(I, I, 5, 1, memory_order_seq_cst, memory_order_seq_cst); // expected-warning {{passing 'int' to parameter of type 'int *'}}
-  _Bool cmpexch_8 = __atomic_compare_exchange(I, P, I, 0, memory_order_seq_cst, memory_order_seq_cst); // expected-warning {{; dereference with *}}
-  _Bool cmpexch_9 = __atomic_compare_exchange(I, I, I, 0, memory_order_seq_cst, memory_order_seq_cst);
-
-  const volatile int flag_k = 0;
-  volatile int flag = 0;
-  (void)(int)__atomic_test_and_set(&flag_k, memory_order_seq_cst); // expected-warning {{passing 'const volatile int *' to parameter of type 'volatile void *'}}
-  (void)(int)__atomic_test_and_set(&flag, memory_order_seq_cst);
-  __atomic_clear(&flag_k, memory_order_seq_cst); // expected-warning {{passing 'const volatile int *' to parameter of type 'volatile void *'}}
-  __atomic_clear(&flag, memory_order_seq_cst);
-  (int)__atomic_clear(&flag, memory_order_seq_cst); // expected-error {{operand of type 'void'}}
-
-  const _Atomic(int) const_atomic;
-  __c11_atomic_init(&const_atomic, 0); // expected-error {{first argument to atomic operation must be a pointer to non-const _Atomic type ('const _Atomic(int) *' invalid)}}
-  __c11_atomic_store(&const_atomic, 0, memory_order_release); // expected-error {{first argument to atomic operation must be a pointer to non-const _Atomic type ('const _Atomic(int) *' invalid)}}
-  __c11_atomic_load(&const_atomic, memory_order_acquire); // expected-error {{first argument to atomic operation must be a pointer to non-const _Atomic type ('const _Atomic(int) *' invalid)}}
-}
-
-_Atomic(int*) PR12527_a;
-void PR12527() { int *b = PR12527_a; }

Modified: trunk/contrib/llvm/tools/clang/test/Sema/atomic-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/atomic-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/atomic-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-// Basic parsing/Sema tests for _Atomic
-// No operations are actually supported on objects of this type yet.
-// The qualifier syntax is not supported yet.
-_Atomic(int) t1;
-_Atomic(int) *t2 = &t1;
-void testf(void*);
-void f(void) {
-  _Atomic(_Atomic(int)*) t3;
-  _Atomic(_Atomic(int)*) *t4[2] = { &t3, 0 };
-  testf(t4);
-}
-extern _Atomic(int (*)(int(*)[], int(*)[10])) mergetest;
-extern _Atomic(int (*)(int(*)[10], int(*)[])) mergetest;
-extern _Atomic(int (*)(int(*)[10], int(*)[10])) mergetest;
-
-_Atomic(int()) error1; // expected-error {{_Atomic cannot be applied to function type}}
-_Atomic(struct ErrorS) error2; // expected-error {{_Atomic cannot be applied to incomplete type}} expected-note {{forward declaration}}
-_Atomic(int[10]) error3; // expected-error {{_Atomic cannot be applied to array type}}
-_Atomic(const int) error4; // expected-error {{_Atomic cannot be applied to qualified type}}
-_Atomic(_Atomic(int)) error5; // expected-error {{_Atomic cannot be applied to atomic type}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-alias.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-alias.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-alias.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin  -fsyntax-only -verify %s
-
-void g() {}
-
-// It is important that the following string be in the error message. The gcc
-// testsuite looks for it to decide if a target supports aliases.
-
-void f() __attribute__((alias("g"))); //expected-error {{only weak aliases are supported}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-aligned.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-aligned.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-aligned.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-
-int x __attribute__((aligned(3))); // expected-error {{requested alignment is not a power of 2}}
-
-// PR3254
-short g0[3] __attribute__((aligned));
-short g0_chk[__alignof__(g0) == 16 ? 1 : -1]; 
-
-// <rdar://problem/6840045>
-typedef char ueber_aligned_char __attribute__((aligned(8)));
-
-struct struct_with_ueber_char {
-  ueber_aligned_char c;
-};
-
-char a = 0;
-
-char a0[__alignof__(ueber_aligned_char) == 8? 1 : -1] = { 0 };
-char a1[__alignof__(struct struct_with_ueber_char) == 8? 1 : -1] = { 0 };
-char a2[__alignof__(a) == 1? : -1] = { 0 };
-char a3[sizeof(a) == 1? : -1] = { 0 };
-
-// rdar://problem/8335865
-int b __attribute__((aligned(2)));
-char b1[__alignof__(b) == 2 ?: -1] = {0};
-
-struct C { int member __attribute__((aligned(2))); } c;
-char c1[__alignof__(c) == 4 ?: -1] = {0};
-char c2[__alignof__(c.member) == 4 ?: -1] = {0};
-
-struct D { int member __attribute__((aligned(2))) __attribute__((packed)); } d;
-char d1[__alignof__(d) == 2 ?: -1] = {0};
-char d2[__alignof__(d.member) == 2 ?: -1] = {0};
-
-struct E { int member __attribute__((align(2))); } __attribute__((packed));
-struct E e;
-char e1[__alignof__(e) == 2 ?: -1] = {0};
-char e2[__alignof__(e.member) == 2 ?: -1] = {0};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -DATTR=noreturn -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=always_inline -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=cdecl -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=const -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=fastcall -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=malloc -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=nothrow -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=stdcall -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=used -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=unused -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=weak -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-
-#define ATTR_DECL(a) __attribute__((ATTR(a)))
-
-int a;
-
-inline ATTR_DECL(a) void* foo(); // expected-error{{attribute takes no arguments}}
-
-
-
-// RUN: %clang_cc1 -DATTR=noreturn -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=always_inline -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=cdecl -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=const -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=fastcall -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=malloc -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=nothrow -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=stdcall -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=used -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=unused -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-// RUN: %clang_cc1 -DATTR=weak -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-
-#define ATTR_DECL(a) __attribute__((ATTR(a)))
-
-int a;
-
-inline ATTR_DECL(a) void* foo(); // expected-error{{attribute takes no arguments}}
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-availability-ios.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-availability-ios.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-availability-ios.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 "-triple" "x86_64-apple-ios3.0" -fsyntax-only -verify %s
-
-void f0(int) __attribute__((availability(ios,introduced=2.0,deprecated=2.1))); // expected-note {{'f0' declared here}}
-void f1(int) __attribute__((availability(ios,introduced=2.1)));
-void f2(int) __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{'f2' declared here}}
-void f3(int) __attribute__((availability(ios,introduced=3.0)));
-void f4(int) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,obsoleted=10.5), availability(ios,introduced=2.0,deprecated=2.1,obsoleted=3.0))); // expected-note{{explicitly marked unavailable}}
-
-void f5(int) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(ios,deprecated=3.0))); // expected-note {{'f5' declared here}}
-void f6(int) __attribute__((availability(ios,deprecated=3.0)));
-void f6(int) __attribute__((availability(ios,introduced=2.0))); // expected-note {{'f6' declared here}}
-
-void test() {
-  f0(0); // expected-warning{{'f0' is deprecated: first deprecated in iOS 2.1}}
-  f1(0);
-  f2(0); // expected-warning{{'f2' is deprecated: first deprecated in iOS 3.0}}
-  f3(0);
-  f4(0); // expected-error{{f4' is unavailable: obsoleted in iOS 3.0}}
-  f5(0); // expected-warning{{'f5' is deprecated: first deprecated in iOS 3.0}}
-  f6(0); // expected-warning{{'f6' is deprecated: first deprecated in iOS 3.0}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-availability-macosx.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-availability-macosx.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-availability-macosx.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 "-triple" "x86_64-apple-darwin9.0.0" -fsyntax-only -verify %s
-
-void f0(int) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6)));
-void f1(int) __attribute__((availability(macosx,introduced=10.5)));
-void f2(int) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5))); // expected-note {{'f2' declared here}}
-void f3(int) __attribute__((availability(macosx,introduced=10.6)));
-void f4(int) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,obsoleted=10.5), availability(ios,introduced=2.0,deprecated=3.0))); // expected-note{{explicitly marked unavailable}}
-void f5(int) __attribute__((availability(ios,introduced=3.2), availability(macosx,unavailable))); // expected-note{{function has been explicitly marked unavailable here}}
-
-void test() {
-  f0(0);
-  f1(0);
-  f2(0); // expected-warning{{'f2' is deprecated: first deprecated in OS X 10.5}}
-  f3(0);
-  f4(0); // expected-error{{f4' is unavailable: obsoleted in OS X 10.5}}
-  f5(0); // expected-error{{'f5' is unavailable: not available on OS X}}
-}
-
-// rdar://10535640
-
-enum {
-    foo __attribute__((availability(macosx,introduced=8.0,deprecated=9.0)))
-};
-
-enum {
-    bar __attribute__((availability(macosx,introduced=8.0,deprecated=9.0))) = foo
-};
-
-enum __attribute__((availability(macosx,introduced=8.0,deprecated=9.0))) {
-    bar1 = foo
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-availability.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-availability.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-availability.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fsyntax-only -fblocks -verify %s
-
-void f0() __attribute__((availability(macosx,introduced=10.4,deprecated=10.2))); // expected-warning{{feature cannot be deprecated in OS X version 10.2 before it was introduced in version 10.4; attribute ignored}}
-void f1() __attribute__((availability(ios,obsoleted=2.1,deprecated=3.0)));  // expected-warning{{feature cannot be obsoleted in iOS version 2.1 before it was deprecated in version 3.0; attribute ignored}}
-void f2() __attribute__((availability(ios,introduced=2.1,deprecated=2.1)));
-
-void f3() __attribute__((availability(otheros,introduced=2.2))); // expected-warning{{unknown platform 'otheros' in availability macro}}
-
-// rdar://10095131
-extern void 
-ATSFontGetName(const char *oName) __attribute__((availability(macosx,introduced=8.0,deprecated=9.0, message="use CTFontCopyFullName"))); // expected-note {{'ATSFontGetName' declared here}}
-
-extern void
-ATSFontGetPostScriptName(int flags) __attribute__((availability(macosx,introduced=8.0,obsoleted=9.0, message="use ATSFontGetFullPostScriptName"))); // expected-note {{function has been explicitly marked unavailable here}}
-
-void test_10095131() {
-  ATSFontGetName("Hello"); // expected-warning {{'ATSFontGetName' is deprecated: first deprecated in OS X 9.0 - use CTFontCopyFullName}}
-  ATSFontGetPostScriptName(100); // expected-error {{'ATSFontGetPostScriptName' is unavailable: obsoleted in OS X 9.0 - use ATSFontGetFullPostScriptName}}
-}
-
-// rdar://10711037
-__attribute__((availability(macos, unavailable))) // expected-warning {{attribute 'availability' is ignored}}
-enum {
-    NSDataWritingFileProtectionWriteOnly = 0x30000000,
-    NSDataWritingFileProtectionCompleteUntilUserAuthentication = 0x40000000,
-};
-
-void f4(int) __attribute__((availability(ios,deprecated=3.0)));
-void f4(int) __attribute__((availability(ios,introduced=4.0))); // expected-warning {{feature cannot be deprecated in iOS version 3.0 before it was introduced in version 4.0; attribute ignored}}
-
-void f5(int) __attribute__((availability(ios,deprecated=3.0),
-                            availability(ios,introduced=4.0)));  // expected-warning {{feature cannot be deprecated in iOS version 3.0 before it was introduced in version 4.0; attribute ignored}}
-
-void f6(int) __attribute__((availability(ios,deprecated=3.0))); // expected-note {{previous attribute is here}}
-void f6(int) __attribute__((availability(ios,deprecated=4.0))); // expected-warning {{availability does not match previous declaration}}
-
-void f7(int) __attribute__((availability(ios,introduced=2.0)));
-void f7(int) __attribute__((availability(ios,deprecated=3.0))); // expected-note {{previous attribute is here}}
-void f7(int) __attribute__((availability(ios,deprecated=4.0))); // expected-warning {{availability does not match previous declaration}}
-
-
-// <rdar://problem/11886458>
-#if !__has_feature(attribute_availability_with_message)
-# error "Missing __has_feature"
-#endif
-
-extern int x __attribute__((availability(macosx,introduced=10.5)));
-extern int x;
-
-void f8() {
-  int (^b)(int);
-  b = ^ (int i) __attribute__((availability(macosx,introduced=10.2))) { return 1; }; // expected-warning {{'availability' attribute ignored}}
-}
-
-extern int x2 __attribute__((availability(macosx,introduced=10.2))); // expected-note {{previous attribute is here}}
-extern int x2 __attribute__((availability(macosx,introduced=10.5))); // expected-warning {{availability does not match previous declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-cleanup.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-cleanup.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-cleanup.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-void c1(int *a);
-
-extern int g1 __attribute((cleanup(c1))); // expected-warning {{cleanup attribute ignored}}
-int g2 __attribute((cleanup(c1))); // expected-warning {{cleanup attribute ignored}}
-static int g3 __attribute((cleanup(c1))); // expected-warning {{cleanup attribute ignored}}
-
-void t1()
-{
-    int v1 __attribute((cleanup)); // expected-error {{attribute takes one argument}}
-    int v2 __attribute((cleanup(1, 2))); // expected-error {{attribute takes one argument}}
-    
-    static int v3 __attribute((cleanup(c1))); // expected-warning {{cleanup attribute ignored}}
-    
-    int v4 __attribute((cleanup(h))); // expected-error {{'cleanup' argument 'h' not found}}
-
-    int v5 __attribute((cleanup(c1)));
-    int v6 __attribute((cleanup(v3))); // expected-error {{'cleanup' argument 'v3' is not a function}}
-}
-
-struct s {
-    int a, b;
-};
-
-void c2();
-void c3(struct s a);
-
-void t2()
-{
-    int v1 __attribute__((cleanup(c2))); // expected-error {{'cleanup' function 'c2' must take 1 parameter}}
-    int v2 __attribute__((cleanup(c3))); // expected-error {{'cleanup' function 'c3' parameter has type 'struct s' which is incompatible with type 'int *'}}
-}
-
-// This is a manufactured testcase, but gcc accepts it...
-void c4(_Bool a);
-void t4() {
-  __attribute((cleanup(c4))) void* g;
-}
-
-void c5(void*) __attribute__((deprecated));  // expected-note{{'c5' declared here}}
-void t5() {
-  int i __attribute__((cleanup(c5)));  // expected-warning {{'c5' is deprecated}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-coldhot.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-coldhot.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-coldhot.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int foo() __attribute__((__hot__));
-int bar() __attribute__((__cold__));
-
-int var1 __attribute__((__cold__)); // expected-warning{{'__cold__' attribute only applies to functions}}
-int var2 __attribute__((__hot__)); // expected-warning{{'__hot__' attribute only applies to functions}}
-
-int qux() __attribute__((__hot__)) __attribute__((__cold__)); // expected-error{{'__hot__' and cold attributes are not compatible}}
-int baz() __attribute__((__cold__)) __attribute__((__hot__)); // expected-error{{'__cold__' and hot attributes are not compatible}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-decl-after-definition.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-decl-after-definition.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-decl-after-definition.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void foo();
-void foo() __attribute__((unused));
-void foo() __attribute__((unused));
-void foo(){} // expected-note {{previous definition is here}}
-void foo() __attribute__((constructor)); // expected-warning {{must precede definition}}
-void foo();
-
-int bar;
-extern int bar;
-int bar;
-int bar __attribute__((weak));
-int bar __attribute__((used));
-extern int bar __attribute__((weak));
-int bar = 0; // expected-note {{previous definition is here}}
-int bar __attribute__((weak)); // no warning as it matches the existing
-                               // attribute.
-int bar __attribute__((used,
-                       visibility("hidden"))); // expected-warning {{must precede definition}}
-int bar;
-
-struct zed {  // expected-note {{previous definition is here}}
-};
-struct __attribute__((visibility("hidden"))) zed; // expected-warning {{must precede definition}}
-
-struct __attribute__((visibility("hidden"))) zed2 {
-};
-struct __attribute__((visibility("hidden"))) zed2;
-
-struct __attribute__((visibility("hidden"))) zed3 {  // expected-note {{previous definition is here}}
-};
-struct __attribute__((visibility("hidden"),
-                     packed  // expected-warning {{must precede definition}}
-                     )) zed3;
-
-struct __attribute__((visibility("hidden"))) zed4 {  // expected-note {{previous attribute is here}}
-};
-struct __attribute__((visibility("default"))) zed4; // expected-error {{visibility does not match previous declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-declspec-ignored.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-declspec-ignored.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-declspec-ignored.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-__attribute__((visibility("hidden")))  __attribute__((aligned)) struct A; // expected-warning{{attribute 'visibility' is ignored, place it after "struct" to apply attribute to type declaration}} \
-// expected-warning{{attribute 'aligned' is ignored, place it after "struct" to apply attribute to type declaration}}
-__attribute__((visibility("hidden")))  __attribute__((aligned)) union B; // expected-warning{{attribute 'visibility' is ignored, place it after "union" to apply attribute to type declaration}} \
-// expected-warning{{attribute 'aligned' is ignored, place it after "union" to apply attribute to type declaration}} 
-__attribute__((visibility("hidden")))  __attribute__((aligned)) enum C {C}; // expected-warning{{attribute 'visibility' is ignored, place it after "enum" to apply attribute to type declaration}} \
-// expected-warning{{attribute 'aligned' is ignored, place it after "enum" to apply attribute to type declaration}}
-
-__attribute__((visibility("hidden")))  __attribute__((aligned)) struct D {} d;
-__attribute__((visibility("hidden")))  __attribute__((aligned)) union E {} e;
-__attribute__((visibility("hidden")))  __attribute__((aligned)) enum F {F} f;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-deprecated-message.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-deprecated-message.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-deprecated-message.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// rdar: // 6734520
-
-typedef int INT1 __attribute__((deprecated("Please avoid INT1"))); // expected-note 3 {{'INT1' declared here}}
-
-typedef INT1 INT2 __attribute__ ((__deprecated__("Please avoid INT2")));
-
-typedef INT1 INT1a; // expected-warning {{'INT1' is deprecated: Please avoid INT1}}
-
-typedef INT1 INT1b __attribute__ ((deprecated("Please avoid INT1b")));
-
-INT1 should_be_unavailable; // expected-warning {{'INT1' is deprecated: Please avoid INT1}}
-INT1a should_not_be_deprecated;
-
-INT1 f1(void) __attribute__ ((deprecated("Please avoid f1"))); // expected-note {{'f1' declared here}}
-INT1 f2(void); // expected-warning {{'INT1' is deprecated: Please avoid INT1}}
-
-typedef enum {red, green, blue} Color __attribute__((deprecated("Please avoid Color"))); // expected-note {{'Color' declared here}}
- 
-
-Color c1; // expected-warning {{'Color' is deprecated: Please avoid Color}}
-
-int g1;
-int g2 __attribute__ ((deprecated("Please avoid g2"))); // expected-note {{'g2' declared here}}
-
-int func1()
-{
-   int (*pf)() = f1; // expected-warning {{'f1' is deprecated: Please avoid f1}}
-   int i = f2();
-   return g1 + g2; // expected-warning {{'g2' is deprecated: Please avoid g2}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-deprecated.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-deprecated.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-deprecated.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-int f() __attribute__((deprecated)); // expected-note 2 {{declared here}}
-void g() __attribute__((deprecated));
-void g(); // expected-note {{declared here}}
-
-extern int var __attribute__((deprecated)); // expected-note {{declared here}}
-
-int a() {
-  int (*ptr)() = f; // expected-warning {{'f' is deprecated}}
-  f(); // expected-warning {{'f' is deprecated}}
-
-  // test if attributes propagate to functions
-  g(); // expected-warning {{'g' is deprecated}}
-
-  return var; // expected-warning {{'var' is deprecated}}
-}
-
-// test if attributes propagate to variables
-extern int var; // expected-note {{declared here}}
-int w() {
-  return var; // expected-warning {{'var' is deprecated}}
-}
-
-int old_fn() __attribute__ ((deprecated));
-int old_fn(); // expected-note {{declared here}}
-int (*fn_ptr)() = old_fn; // expected-warning {{'old_fn' is deprecated}}
-
-int old_fn() {
-  return old_fn()+1;  // no warning, deprecated functions can use deprecated symbols.
-}
-
-
-struct foo {
-  int x __attribute__((deprecated)); // expected-note 3 {{declared here}}
-};
-
-void test1(struct foo *F) {
-  ++F->x;  // expected-warning {{'x' is deprecated}}
-  struct foo f1 = { .x = 17 }; // expected-warning {{'x' is deprecated}}
-  struct foo f2 = { 17 }; // expected-warning {{'x' is deprecated}}
-}
-
-typedef struct foo foo_dep __attribute__((deprecated)); // expected-note 12 {{declared here}}
-foo_dep *test2;    // expected-warning {{'foo_dep' is deprecated}}
-
-struct __attribute__((deprecated, 
-                      invalid_attribute)) bar_dep ;  // expected-warning {{unknown attribute 'invalid_attribute' ignored}} expected-note 2 {{declared here}}
-
-struct bar_dep *test3;   // expected-warning {{'bar_dep' is deprecated}}
-
-
-// These should not warn because the actually declaration itself is deprecated.
-// rdar://6756623
-foo_dep *test4 __attribute__((deprecated));
-struct bar_dep *test5 __attribute__((deprecated));
-
-typedef foo_dep test6(struct bar_dep*); // expected-warning {{'foo_dep' is deprecated}} \
-                                        // expected-warning {{'bar_dep' is deprecated}}
-typedef foo_dep test7(struct bar_dep*) __attribute__((deprecated));
-
-int test8(char *p) {
-  p += sizeof(foo_dep); // expected-warning {{'foo_dep' is deprecated}}
-
-  foo_dep *ptr;         // expected-warning {{'foo_dep' is deprecated}}
-  ptr = (foo_dep*) p;   // expected-warning {{'foo_dep' is deprecated}}
-
-  int func(foo_dep *foo); // expected-warning {{'foo_dep' is deprecated}}
-  return func(ptr);
-}
-
-foo_dep *test9(void) __attribute__((deprecated));
-foo_dep *test9(void) {
-  void* myalloc(unsigned long);
-
-  foo_dep *ptr
-    = (foo_dep*)
-        myalloc(sizeof(foo_dep));
-  return ptr;
-}
-
-void test10(void) __attribute__((deprecated));
-void test10(void) {
-  if (sizeof(foo_dep) == sizeof(void*)) {
-  }
-  foo_dep *localfunc(void);
-  foo_dep localvar;
-}
-
-char test11[sizeof(foo_dep)] __attribute__((deprecated));
-char test12[sizeof(foo_dep)]; // expected-warning {{'foo_dep' is deprecated}}
-
-int test13(foo_dep *foo) __attribute__((deprecated));
-int test14(foo_dep *foo); // expected-warning {{'foo_dep' is deprecated}}
-
-unsigned long test15 = sizeof(foo_dep); // expected-warning {{'foo_dep' is deprecated}}
-unsigned long test16 __attribute__((deprecated))
-  = sizeof(foo_dep);
-
-foo_dep test17, // expected-warning {{'foo_dep' is deprecated}}
-        test18 __attribute__((deprecated)),
-        test19;
-
-// rdar://problem/8518751
-enum __attribute__((deprecated)) Test20 { // expected-note {{declared here}}
-  test20_a __attribute__((deprecated)), // expected-note {{declared here}}
-  test20_b // expected-note {{declared here}}
-};
-void test20() {
-  enum Test20 f; // expected-warning {{'Test20' is deprecated}}
-  f = test20_a; // expected-warning {{'test20_a' is deprecated}}
-  f = test20_b; // expected-warning {{'test20_b' is deprecated}}
-}
-
-char test21[__has_feature(attribute_deprecated_with_message) ? 1 : -1];
-
-struct test22 {
-  foo_dep a __attribute((deprecated));
-  foo_dep b; // expected-warning {{'foo_dep' is deprecated}}
-  foo_dep c, d __attribute((deprecated)); // expected-warning {{'foo_dep' is deprecated}}
-  __attribute((deprecated)) foo_dep e, f;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-format.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-format.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-format.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-//RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#include <stdarg.h>
-
-void a(const char *a, ...) __attribute__((format(printf, 1,2))); // no-error
-void b(const char *a, ...) __attribute__((format(printf, 1,1))); // expected-error {{'format' attribute parameter 3 is out of bounds}}
-void c(const char *a, ...) __attribute__((format(printf, 0,2))); // expected-error {{'format' attribute parameter 2 is out of bounds}}
-void d(const char *a, int c) __attribute__((format(printf, 1,2))); // expected-error {{format attribute requires variadic function}}
-void e(char *str, int c, ...) __attribute__((format(printf, 2,3))); // expected-error {{format argument not a string type}}
-
-typedef const char* xpto;
-void f(xpto c, va_list list) __attribute__((format(printf, 1, 0))); // no-error
-void g(xpto c) __attribute__((format(printf, 1, 0))); // no-error
-
-void y(char *str) __attribute__((format(strftime, 1,0))); // no-error
-void z(char *str, int c, ...) __attribute__((format(strftime, 1,2))); // expected-error {{strftime format attribute requires 3rd parameter to be 0}}
-
-int (*f_ptr)(char*,...) __attribute__((format(printf, 1,2))); // no-error
-int (*f2_ptr)(double,...) __attribute__((format(printf, 1, 2))); // expected-error {{format argument not a string type}}
-
-struct _mystruct {
-  int (*printf)(const char *format, ...) __attribute__((__format__(printf, 1, 2))); // no-error
-  int (*printf2)(double format, ...) __attribute__((__format__(printf, 1, 2))); // expected-error {{format argument not a string type}}
-};
-
-typedef int (*f3_ptr)(char*,...) __attribute__((format(printf,1,0))); // no-error
-
-// <rdar://problem/6623513>
-int rdar6623513(void *, const char*, const char*, ...)
-  __attribute__ ((format (printf, 3, 0)));
-
-int rdar6623513_aux(int len, const char* s) {
-  rdar6623513(0, "hello", "%.*s", len, s);
-}
-
-
-
-// same as format(printf(...))...
-void a2(const char *a, ...)    __attribute__((format(printf0, 1,2))); // no-error
-void b2(const char *a, ...)    __attribute__((format(printf0, 1,1))); // expected-error {{'format' attribute parameter 3 is out of bounds}}
-void c2(const char *a, ...)    __attribute__((format(printf0, 0,2))); // expected-error {{'format' attribute parameter 2 is out of bounds}}
-void d2(const char *a, int c)  __attribute__((format(printf0, 1,2))); // expected-error {{format attribute requires variadic function}}
-void e2(char *str, int c, ...) __attribute__((format(printf0, 2,3))); // expected-error {{format argument not a string type}}
-
-// FreeBSD usage
-#define __printf0like(fmt,va) __attribute__((__format__(__printf0__,fmt,va)))
-void null(int i, const char *a, ...) __printf0like(2,0); // no-error
-void null(int i, const char *a, ...) { // expected-note{{passing argument to parameter 'a' here}}
-  if (a)
-    (void)0/* vprintf(...) would go here */;
-}
-
-void callnull(void){
-  null(0,        0); // no error
-  null(0, (char*)0); // no error
-  null(0, (void*)0); // no error
-  null(0,  (int*)0); // expected-warning {{incompatible pointer types}}
-}
-
-
-
-// PR4470
-int xx_vprintf(const char *, va_list);
-
-const char *foo(const char *format) __attribute__((format_arg(1)));
-
-void __attribute__((format(printf, 1, 0)))
-foo2(const char *fmt, va_list va) {
-  xx_vprintf(foo(fmt), va);
-}
-
-// PR6542
-extern void gcc_format (const char *, ...)
-  __attribute__ ((__format__(__gcc_diag__, 1, 2)));
-extern void gcc_cformat (const char *, ...)
-  __attribute__ ((__format__(__gcc_cdiag__, 1, 2)));
-extern void gcc_cxxformat (const char *, ...)
-  __attribute__ ((__format__(__gcc_cxxdiag__, 1, 2)));
-extern void gcc_tformat (const char *, ...)
-  __attribute__ ((__format__(__gcc_tdiag__, 1, 2)));

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-format_arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-format_arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-format_arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int printf(const char *, ...);
-
-const char* f(const char *s) __attribute__((format_arg(1)));
-
-void g(const char *s) {
-  printf("%d", 123);
-  printf("%d %d", 123); // expected-warning{{more '%' conversions than data arguments}}
-
-  printf(f("%d"), 123);
-  printf(f("%d %d"), 123); // expected-warning{{more '%' conversions than data arguments}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-malloc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-malloc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-malloc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang -Xclang -verify -fsyntax-only %s
-// RUN: %clang -emit-llvm -S -o %t %s
-
-#include <stddef.h>
-
-// Declare malloc here explicitly so we don't depend on system headers.
-void * malloc(size_t) __attribute((malloc));
-
-int no_vars __attribute((malloc)); // expected-warning {{functions returning a pointer type}}
-
-void  returns_void  (void) __attribute((malloc)); // expected-warning {{functions returning a pointer type}}
-int   returns_int   (void) __attribute((malloc)); // expected-warning {{functions returning a pointer type}}
-int * returns_intptr(void) __attribute((malloc)); // no-warning
-typedef int * iptr;
-iptr  returns_iptr  (void) __attribute((malloc)); // no-warning
-
-__attribute((malloc)) void *(*f)(); //  expected-warning{{'malloc' attribute only applies to functions returning a pointer type}}
-__attribute((malloc)) int (*g)(); // expected-warning{{'malloc' attribute only applies to functions returning a pointer type}}
-
-__attribute((malloc))
-void * xalloc(unsigned n) { return malloc(n); } // no-warning
-// RUN: grep 'define noalias .* @xalloc(' %t
-
-#define malloc_like __attribute((__malloc__))
-void * xalloc2(unsigned) malloc_like;
-void * xalloc2(unsigned n) { return malloc(n); }
-// RUN: grep 'define noalias .* @xalloc2(' %t
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-minsize.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-minsize.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-minsize.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int foo() __attribute__((__minsize__));
-
-int var1 __attribute__((__minsize__)); // expected-error{{'__minsize__' attribute only applies to functions and methods}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-mode.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-mode.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-mode.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -DTEST_32BIT_X86 -fsyntax-only \
-// RUN:   -verify %s
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -DTEST_64BIT_X86 -fsyntax-only \
-// RUN:   -verify %s
-
-typedef int i16_1 __attribute((mode(HI)));
-int i16_1_test[sizeof(i16_1) == 2 ? 1 : -1];
-typedef int i16_2 __attribute((__mode__(__HI__)));
-int i16_2_test[sizeof(i16_1) == 2 ? 1 : -1];
-
-typedef float f64 __attribute((mode(DF)));
-int f64_test[sizeof(f64) == 8 ? 1 : -1];
-
-typedef int invalid_1 __attribute((mode)); // expected-error{{attribute requires unquoted parameter}}
-typedef int invalid_2 __attribute((mode())); // expected-error{{attribute requires unquoted parameter}}
-typedef int invalid_3 __attribute((mode(II))); // expected-error{{unknown machine mode}}
-typedef struct {int i,j,k;} invalid_4 __attribute((mode(SI))); // expected-error{{mode attribute only supported for integer and floating-point types}}
-typedef float invalid_5 __attribute((mode(SI))); // expected-error{{type of machine mode does not match type of base type}}
-
-typedef unsigned unwind_word __attribute((mode(unwind_word)));
-
-int **__attribute((mode(QI)))* i32;  // expected-error{{mode attribute}}
-
-typedef _Complex double c32 __attribute((mode(SC)));
-int c32_test[sizeof(c32) == 8 ? 1 : -1];
-typedef _Complex float c64 __attribute((mode(DC)));
-typedef _Complex float c80 __attribute((mode(XC)));
-
-// PR6108: Correctly select 'long' built in type on 64-bit platforms for 64 bit
-// modes. Also test other mode-based conversions.
-typedef int i8_mode_t __attribute__ ((__mode__ (__QI__)));
-typedef unsigned int ui8_mode_t __attribute__ ((__mode__ (__QI__)));
-typedef int i16_mode_t __attribute__ ((__mode__ (__HI__)));
-typedef unsigned int ui16_mode_t __attribute__ ((__mode__ (__HI__)));
-typedef int i32_mode_t __attribute__ ((__mode__ (__SI__)));
-typedef unsigned int ui32_mode_t __attribute__ ((__mode__ (__SI__)));
-typedef int i64_mode_t __attribute__ ((__mode__ (__DI__)));
-typedef unsigned int ui64_mode_t __attribute__ ((__mode__ (__DI__)));
-void f_i8_arg(i8_mode_t* x) { (void)x; }
-void f_ui8_arg(ui8_mode_t* x) { (void)x; }
-void f_i16_arg(i16_mode_t* x) { (void)x; }
-void f_ui16_arg(ui16_mode_t* x) { (void)x; }
-void f_i32_arg(i32_mode_t* x) { (void)x; }
-void f_ui32_arg(ui32_mode_t* x) { (void)x; }
-void f_i64_arg(i64_mode_t* x) { (void)x; }
-void f_ui64_arg(ui64_mode_t* x) { (void)x; }
-void test_char_to_i8(signed char* y) { f_i8_arg(y); }
-void test_char_to_ui8(unsigned char* y) { f_ui8_arg(y); }
-void test_short_to_i16(short* y) { f_i16_arg(y); }
-void test_short_to_ui16(unsigned short* y) { f_ui16_arg(y); }
-void test_int_to_i32(int* y) { f_i32_arg(y); }
-void test_int_to_ui32(unsigned int* y) { f_ui32_arg(y); }
-#if TEST_32BIT_X86
-void test_long_to_i64(long long* y) { f_i64_arg(y); }
-void test_long_to_ui64(unsigned long long* y) { f_ui64_arg(y); }
-#elif TEST_64BIT_X86
-void test_long_to_i64(long* y) { f_i64_arg(y); }
-void test_long_to_ui64(unsigned long* y) { f_ui64_arg(y); }
-#else
-#error Unknown test architecture.
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-naked.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-naked.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-naked.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-int a __attribute__((naked)); // expected-warning {{'naked' attribute only applies to functions}}
-
-__attribute__((naked)) int t0(void) { 
-  __asm__ volatile("mov r0, #0");
-}
-
-void t1() __attribute__((naked));
-
-void t2() __attribute__((naked(2))); // expected-error {{attribute takes no arguments}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-nodebug.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-nodebug.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-nodebug.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-int a __attribute__((nodebug));
-
-void b() {
-  int b __attribute__((nodebug)); // expected-warning {{'nodebug' only applies to variables with static storage duration and functions}}
-} 
-
-void t1() __attribute__((nodebug));
-
-void t2() __attribute__((nodebug(2))); // expected-error {{attribute takes no arguments}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-noinline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-noinline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-noinline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-int a __attribute__((noinline)); // expected-warning {{'noinline' attribute only applies to functions}}
-
-void t1() __attribute__((noinline));
-
-void t2() __attribute__((noinline(2))); // expected-error {{attribute takes no arguments}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-noreturn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-noreturn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-noreturn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-
-static void (*fp0)(void) __attribute__((noreturn));
-
-void fatal();
-
-static void __attribute__((noreturn)) f0(void) {
-  fatal();
-} // expected-warning {{function declared 'noreturn' should not return}}
-
-// On K&R
-int f1() __attribute__((noreturn));
-
-int g0 __attribute__((noreturn)); // expected-warning {{'noreturn' only applies to function types; type here is 'int'}}
-
-int f2() __attribute__((noreturn(1, 2))); // expected-error {{attribute takes no arguments}}
-
-void f3() __attribute__((noreturn));
-void f3() {
-  return;  // expected-warning {{function 'f3' declared 'noreturn' should not return}}
-}
-
-#pragma clang diagnostic error "-Winvalid-noreturn"
-
-void f4() __attribute__((noreturn));
-void f4() {
-  return;  // expected-error {{function 'f4' declared 'noreturn' should not return}}
-}
-
-// PR4685
-extern void f5 (unsigned long) __attribute__ ((__noreturn__));
-
-void
-f5 (unsigned long size)
-{
-  
-}
-
-// PR2461
-__attribute__((noreturn)) void f(__attribute__((noreturn)) void (*x)(void)) {
-  x();
-}
-
-typedef void (*Fun)(void) __attribute__ ((noreturn(2))); // expected-error {{attribute takes no arguments}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-print.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-print.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-print.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -ast-print -fms-extensions | FileCheck %s
-
-// CHECK: int x __attribute__((aligned(4)));
-int x __attribute__((aligned(4)));
-
-// FIXME: Print this at a valid location for a __declspec attr.
-// CHECK: int y __declspec(align(4));
-__declspec(align(4)) int y;
-
-// CHECK: void foo() __attribute__((const));
-void foo() __attribute__((const));
-
-// CHECK: void bar() __attribute__((__const));
-void bar() __attribute__((__const));
-
-// FIXME: Print these at a valid location for these attributes.
-// CHECK: int *p32 __ptr32;
-int * __ptr32 p32;
-
-// CHECK: int *p64 __ptr64;
-int * __ptr64 p64;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-regparm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-regparm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-regparm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-
-__attribute((regparm(2))) int x0(void);
-__attribute((regparm(1.0))) int x1(void); // expected-error{{'regparm' attribute requires integer constant}}
-__attribute((regparm(-1))) int x2(void); // expected-error{{'regparm' parameter must be between 0 and 3 inclusive}}
-__attribute((regparm(5))) int x3(void); // expected-error{{'regparm' parameter must be between 0 and 3 inclusive}}
-__attribute((regparm(5,3))) int x4(void); // expected-error{{attribute takes one argument}}
-
-void __attribute__((regparm(3))) x5(int);
-void x5(int); // expected-note{{previous declaration is here}}
-void __attribute__((regparm(2))) x5(int); // expected-error{{function declared with regparm(2) attribute was previously declared with the regparm(3) attribute}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-returns-twice.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-returns-twice.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-returns-twice.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-int a __attribute__((returns_twice)); // expected-warning {{'returns_twice' attribute only applies to functions}}
-
-__attribute__((returns_twice)) void t0(void) {
-}
-
-void t1() __attribute__((returns_twice));
-
-void t2() __attribute__((returns_twice(2))); // expected-error {{attribute takes no arguments}}
-
-typedef void (*t3)(void) __attribute__((returns_twice)); // expected-warning {{'returns_twice' attribute only applies to functions}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-section.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-section.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-section.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -triple x86_64-apple-darwin9 %s
-
-int x __attribute__((section(
-   42)));  // expected-error {{argument to section attribute was not a string literal}}
-
-
-// rdar://4341926
-int y __attribute__((section(
-   "sadf"))); // expected-error {{mach-o section specifier requires a segment and section separated by a comma}}
-
-// PR6007
-void test() {
-  __attribute__((section("NEAR,x"))) int n1; // expected-error {{'section' attribute is not valid on local variables}}
-  __attribute__((section("NEAR,x"))) static int n2; // ok.
-}
-
-// pr9356
-void __attribute__((section("foo,zed"))) test2(void); // expected-note {{previous attribute is here}}
-void __attribute__((section("bar,zed"))) test2(void) {} // expected-warning {{section does not match previous declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-sentinel.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-sentinel.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-sentinel.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
-#define NULL (void*)0
-
-#define ATTR __attribute__ ((__sentinel__)) 
-
-void foo1 (int x, ...) ATTR; // expected-note 3 {{function has been explicitly marked sentinel here}}
-void foo5 (int x, ...) __attribute__ ((__sentinel__(1))); // expected-note {{function has been explicitly marked sentinel here}}
-void foo6 (int x, ...) __attribute__ ((__sentinel__(5))); // expected-note {{function has been explicitly marked sentinel here}}
-void foo7 (int x, ...) __attribute__ ((__sentinel__(0))); // expected-note {{function has been explicitly marked sentinel here}}
-void foo10 (int x, ...) __attribute__ ((__sentinel__(1,1)));
-void foo12 (int x, ... ) ATTR; // expected-note {{function has been explicitly marked sentinel here}}
-
-#define FOOMACRO(...) foo1(__VA_ARGS__)
-
-void test1() {
-  foo1(1, NULL); // OK
-  foo1(1, 0) ; // expected-warning {{missing sentinel in function call}}
-  foo5(1, NULL, 2);  // OK
-  foo5(1,2,NULL, 1); // OK
-  foo5(1, NULL, 2, 1); // expected-warning {{missing sentinel in function call}}
-
-  foo6(1,2,3,4,5,6,7); // expected-warning {{missing sentinel in function call}}
-  foo6(1,NULL,3,4,5,6,7); // OK
-  foo7(1); // expected-warning {{not enough variable arguments in 'foo7' declaration to fit a sentinel}}
-  foo7(1, NULL); // OK
-
-  foo12(1); // expected-warning {{not enough variable arguments in 'foo12' declaration to fit a sentinel}}
-
-  // PR 5685
-  struct A {};
-  struct A a, b, c;
-  foo1(3, &a, &b, &c); // expected-warning {{missing sentinel in function call}}
-  foo1(3, &a, &b, &c, (struct A*) 0);
-
-  // PR11002
-  FOOMACRO(1, 2); // expected-warning {{missing sentinel in function call}}
-}
- 
-
-
-void (*e) (int arg, const char * format, ...) __attribute__ ((__sentinel__ (1,1)));
-
-void test2() {
-  void (*b) (int arg, const char * format, ...) __attribute__ ((__sentinel__));  // expected-note {{function has been explicitly marked sentinel here}}
-  void (*z) (int arg, const char * format, ...) __attribute__ ((__sentinel__ (2))); // expected-note {{function has been explicitly marked sentinel here}}
-  
-  
-  void (*y) (int arg, const char * format, ...) __attribute__ ((__sentinel__ (5))); // expected-note {{function has been explicitly marked sentinel here}}
-  
-  b(1, "%s", (void*)0); // OK
-  b(1, "%s", 0);  // expected-warning {{missing sentinel in function call}}
-  z(1, "%s",4 ,1,0);  // expected-warning {{missing sentinel in function call}}
-  z(1, "%s", (void*)0, 1, 0); // OK
-  
-  y(1, "%s", 1,2,3,4,5,6,7);  // expected-warning {{missing sentinel in function call}}
-  
-  y(1, "%s", (void*)0,3,4,5,6,7); // OK
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-tls_model.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-tls_model.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-tls_model.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -verify -fsyntax-only %s
-
-#if !__has_attribute(tls_model)
-#error "Should support tls_model attribute"
-#endif
-
-int f() __attribute((tls_model("global-dynamic"))); // expected-error {{'tls_model' attribute only applies to thread-local variables}}
-
-int x __attribute((tls_model("global-dynamic"))); // expected-error {{'tls_model' attribute only applies to thread-local variables}}
-static __thread int y __attribute((tls_model("global-dynamic"))); // no-warning
-
-static __thread int y __attribute((tls_model("local", "dynamic"))); // expected-error {{attribute takes one argument}}
-static __thread int y __attribute((tls_model(123))); // expected-error {{argument to tls_model attribute was not a string literal}}
-static __thread int y __attribute((tls_model("foobar"))); // expected-error {{tls_model must be "global-dynamic", "local-dynamic", "initial-exec" or "local-exec"}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-unavailable-message.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-unavailable-message.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-unavailable-message.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar: //6734520
-
-int foo(int)  __attribute__((__unavailable__("USE IFOO INSTEAD"))); // expected-note {{function has been explicitly marked unavailable here}}
-double dfoo(double)  __attribute__((__unavailable__("NO LONGER"))); // expected-note 2 {{function has been explicitly marked unavailable here}}
-
-void bar() __attribute__((__unavailable__)); // expected-note {{explicitly marked unavailable}}
-
-void test_foo() {
-  int ir = foo(1); // expected-error {{'foo' is unavailable: USE IFOO INSTEAD}}
-  double dr = dfoo(1.0); // expected-error {{'dfoo' is unavailable: NO LONGER}}
-
-  void (*fp)() = &bar; // expected-error {{'bar' is unavailable}}
-
-  double (*fp4)(double) = dfoo;  // expected-error {{'dfoo' is unavailable: NO LONGER}}
-}
-
-char test2[__has_feature(attribute_unavailable_with_message) ? 1 : -1];
-
-// rdar://9623855
-void unavail(void)  __attribute__((__unavailable__));
-void unavail(void) {
-  // No complains inside an unavailable function.
-  int ir = foo(1);
-  double dr = dfoo(1.0);
-  void (*fp)() = &bar;
-  double (*fp4)(double) = dfoo;
-}
-
-// rdar://10201690
-enum foo {
-    a = 1, // expected-note {{declared here}}
-    b __attribute__((deprecated())) = 2, // expected-note {{declared here}}
-    c = 3
-}__attribute__((deprecated()));  
-
-enum fee { // expected-note {{declaration has been explicitly marked unavailable here}}
-    r = 1, // expected-note {{declaration has been explicitly marked unavailable here}}
-    s = 2,
-    t = 3
-}__attribute__((unavailable()));  
-
-enum fee f() { // expected-error {{'fee' is unavailable}}
-    int i = a; // expected-warning {{'a' is deprecated}}
-
-    i = b; // expected-warning {{'b' is deprecated}}
-
-    return r; // expected-error {{'r' is unavailable}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-unknown.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-unknown.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-unknown.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wattributes %s
-
-int x __attribute__((foobar)); // expected-warning {{unknown attribute 'foobar' ignored}}
-void z() __attribute__((bogusattr)); // expected-warning {{unknown attribute 'bogusattr' ignored}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-unused.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-unused.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-unused.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -verify -Wunused -Wused-but-marked-unused -Wunused-parameter -Wunused -fsyntax-only %s
-
-static void (*fp0)(void) __attribute__((unused));
-
-static void __attribute__((unused)) f0(void);
-
-// On K&R
-int f1() __attribute__((unused));
-
-int g0 __attribute__((unused));
-
-int f2() __attribute__((unused(1, 2))); // expected-error {{attribute takes no arguments}}
-
-struct Test0_unused {} __attribute__((unused));
-struct Test0_not_unused {};
-typedef int Int_unused __attribute__((unused));
-typedef int Int_not_unused;
-
-void test0() {
-  int x; // expected-warning {{unused variable}}
-
-  Int_not_unused i0; // expected-warning {{unused variable}}
-  Int_unused i1; // expected-warning {{'Int_unused' was marked unused but was used}}
-
-  struct Test0_not_unused s0; // expected-warning {{unused variable}}
-  struct Test0_unused s1; // expected-warning {{'Test0_unused' was marked unused but was used}}
-}
-
-int f3(int x) { // expected-warning{{unused parameter 'x'}}
-  return 0;
-}
-
-int f4(int x) {
-  return x;
-}
-
-int f5(int x __attribute__((__unused__))) {
-  return 0;
-}
-
-int f6(int x __attribute__((__unused__))) {
-  return x; // expected-warning{{'x' was marked unused but was used}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-used.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-used.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-used.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-private-extern %s
-
-extern int l0 __attribute__((used)); // expected-warning {{used attribute ignored}}
-__private_extern__ int l1 __attribute__((used)); // expected-warning {{used attribute ignored}}
-
-struct __attribute__((used)) s { // expected-warning {{'used' attribute only applies to variables and functions}}
-  int x;
-};
-
-int a __attribute__((used));
-
-static void __attribute__((used)) f0(void) {
-}
-
-void f1() {
-  static int a __attribute__((used)); 
-  int b __attribute__((used)); // expected-warning {{used attribute ignored}}
-}
-
-static void __attribute__((used)) f0(void);

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-visibility.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-visibility.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-visibility.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
-
-void test0() __attribute__((visibility("default")));
-void test1() __attribute__((visibility("hidden")));
-void test2() __attribute__((visibility("internal")));
-
-// rdar://problem/10753392
-void test3() __attribute__((visibility("protected"))); // expected-warning {{target does not support 'protected' visibility; using 'default'}}
-
-struct __attribute__((visibility("hidden"))) test4; // expected-note {{previous attribute is here}}
-struct test4;
-struct __attribute__((visibility("default"))) test4; // expected-error {{visibility does not match previous declaration}}
-
-struct test5;
-struct __attribute__((visibility("hidden"))) test5; // expected-note {{previous attribute is here}}
-struct __attribute__((visibility("default"))) test5; // expected-error {{visibility does not match previous declaration}}
-
-void test6() __attribute__((visibility("hidden"), // expected-note {{previous attribute is here}}
-                            visibility("default"))); // expected-error {{visibility does not match previous declaration}}
-
-extern int test7 __attribute__((visibility("default"))); // expected-note {{previous attribute is here}}
-extern int test7 __attribute__((visibility("hidden"))); // expected-error {{visibility does not match previous declaration}}
-
-typedef int __attribute__((visibility("default"))) bar; // expected-warning {{'visibility' attribute ignored}}
-
-int x __attribute__((type_visibility("default"))); // expected-error {{'type_visibility' attribute only applies to types and namespaces}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/attr-weak.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/attr-weak.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/attr-weak.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-
-extern int g0 __attribute__((weak));
-extern int g1 __attribute__((weak_import));
-int g2 __attribute__((weak));
-int g3 __attribute__((weak_import)); // expected-warning {{'weak_import' attribute cannot be specified on a definition}}
-int __attribute__((weak_import)) g4(void);
-void __attribute__((weak_import)) g5(void) { 
-}
-
-struct __attribute__((weak)) s0 {}; // expected-warning {{'weak' attribute only applies to variables and functions}}
-struct __attribute__((weak_import)) s1 {}; // expected-warning {{'weak_import' attribute only applies to variables and functions}}
-
-static int x __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}}
-
-// rdar://9538608
-int C; // expected-note {{previous definition is here}}
-extern int C __attribute__((weak_import)); // expected-warning {{an already-declared variable is made a weak_import declaration}}
-
-static int pr14946_x;
-extern int pr14946_x  __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}}
-
-static void pr14946_f();
-void pr14946_f() __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/bitfield-layout.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/bitfield-layout.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/bitfield-layout.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=i686-apple-darwin9
-// expected-no-diagnostics
-
-#define CHECK_SIZE(kind, name, size) extern int name##1[sizeof(kind name) == size ? 1 : -1];
-#define CHECK_ALIGN(kind, name, size) extern int name##2[__alignof(kind name) == size ? 1 : -1];
-
-// Zero-width bit-fields
-struct a {char x; int : 0; char y;};
-CHECK_SIZE(struct, a, 5)
-CHECK_ALIGN(struct, a, 1)
-
-union b {char x; int : 0; char y;};
-CHECK_SIZE(union, b, 1)
-CHECK_ALIGN(union, b, 1)
-
-// Unnamed bit-field align
-struct c {char x; int : 20;};
-CHECK_SIZE(struct, c, 4)
-CHECK_ALIGN(struct, c, 1)
-
-union d {char x; int : 20;};
-CHECK_SIZE(union, d, 3)
-CHECK_ALIGN(union, d, 1)
-
-// Bit-field packing
-struct __attribute__((packed)) e {int x : 4, y : 30, z : 30;};
-CHECK_SIZE(struct, e, 8)
-CHECK_ALIGN(struct, e, 1)
-
-// Alignment on bit-fields
-struct f {__attribute((aligned(8))) int x : 30, y : 30, z : 30;};
-CHECK_SIZE(struct, f, 24)
-CHECK_ALIGN(struct, f, 8)
-
-// Large structure (overflows i32, in bits).
-struct s0 {
-  char a[0x32100000];
-  int x:30, y:30;
-};
-
-CHECK_SIZE(struct, s0, 0x32100008)
-CHECK_ALIGN(struct, s0, 4)
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/bitfield-promote.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/bitfield-promote.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/bitfield-promote.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-struct {unsigned x : 2;} x;
-__typeof__((x.x+=1)+1) y;
-__typeof__(x.x<<1) y;
-int y;
-
-
-struct { int x : 8; } x1;
-long long y1;
-__typeof__(((long long)x1.x + 1)) y1;
-
-
-// Check for extensions: variously sized unsigned bit-fields fitting
-// into a signed int promote to signed int.
-enum E { ec1, ec2, ec3 };
-struct S {
-  enum E          e : 2;
-  unsigned short us : 4;
-  unsigned long long ul1 : 8;
-  unsigned long long ul2 : 50;
-} s;
-
-__typeof(s.e + s.e) x_e;
-int x_e;
-
-__typeof(s.us + s.us) x_us;
-int x_us;
-
-__typeof(s.ul1 + s.ul1) x_ul1;
-int x_ul1;
-
-__typeof(s.ul2 + s.ul2) x_ul2;
-unsigned long long x_ul2;
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/bitfield.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/bitfield.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/bitfield.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify 
-enum e0; // expected-note{{forward declaration of 'enum e0'}}
-
-struct a {
-  int a : -1; // expected-error{{bit-field 'a' has negative width}}
-
-  // rdar://6081627
-  int b : 33; // expected-error{{size of bit-field 'b' (33 bits) exceeds size of its type (32 bits)}}
-
-  int c : (1 + 0.25); // expected-error{{expression is not an integer constant expression}}
-  int d : (int)(1 + 0.25); 
-
-  // rdar://6138816
-  int e : 0;  // expected-error {{bit-field 'e' has zero width}}
-
-  float xx : 4;  // expected-error {{bit-field 'xx' has non-integral type}}
-
-  // PR3607
-  enum e0 f : 1; // expected-error {{field has incomplete type 'enum e0'}}
-  
-  int g : (_Bool)1;
-  
-  // PR4017  
-  char : 10;      // expected-error {{size of anonymous bit-field (10 bits) exceeds size of its type (8 bits)}}
-  unsigned : -2;  // expected-error {{anonymous bit-field has negative width (-2)}}
-  float : 12;     // expected-error {{anonymous bit-field has non-integral type 'float'}}
-};
-
-struct b {unsigned x : 2;} x;
-__typeof__(x.x+1) y;
-int y;
-
-struct {unsigned x : 2;} x2;
-__typeof__((x.x+=1)+1) y;
-__typeof__((0,x.x)+1) y;
-__typeof__(x.x<<1) y;
-int y;
-
-struct PR8025 {
-  double : 2; // expected-error{{anonymous bit-field has non-integral type 'double'}}
-};
-
-struct Test4 {
-  unsigned bitX : 4;
-  unsigned bitY : 4;
-  unsigned var;
-};
-void test4(struct Test4 *t) {
-  (void) sizeof(t->bitX); // expected-error {{invalid application of 'sizeof' to bit-field}}
-  (void) sizeof((t->bitY)); // expected-error {{invalid application of 'sizeof' to bit-field}}
-  (void) sizeof(t->bitX = 4); // not a bitfield designator in C
-  (void) sizeof(t->bitX += 4); // not a bitfield designator in C
-  (void) sizeof((void) 0, t->bitX); // not a bitfield designator in C
-  (void) sizeof(t->var ? t->bitX : t->bitY); // not a bitfield designator in C
-  (void) sizeof(t->var ? t->bitX : t->bitX); // not a bitfield designator in C
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-args.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-args.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-args.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fblocks
-
-void take(void*);
-
-void test() {
-  take(^(int x){});
-  take(^(int x, int y){});
-  take(^(int x, int y){});
-  take(^(int x,      // expected-note {{previous declaration is here}}
-         int x){});  // expected-error {{redefinition of parameter 'x'}}
-
-
-  take(^(int x) { return x+1; });
-
-  int (^CP)(int) = ^(int x) { return x*x; };
-  take(CP);
-
-  int arg;
-  ^{return 1;}();
-  ^{return 2;}(arg); // expected-error {{too many arguments to block call}}
-  ^(void){return 3;}(1); // expected-error {{too many arguments to block call}}
-  ^(){return 4;}(arg); // expected-error {{too many arguments to block call}}
-  ^(int x, ...){return 5;}(arg, arg);   // Explicit varargs, ok.
-}
-
-int main(int argc, char** argv) {
-  ^(int argCount) {
-    argCount = 3;
-  }(argc);
-}
-
-// radar 7528255
-void f0() {
-  ^(int, double d, char) {}(1, 1.34, 'a'); // expected-error {{parameter name omitted}} \
-				 	   // expected-error {{parameter name omitted}}
-}
-
-// rdar://problem/8962770
-void test4() {
-  int (^f)() = ^((x)) { }; // expected-error {{expected ')'}} expected-warning {{type specifier missing}} expected-note {{to match this}}
-}
-
-// rdar://problem/9170609
-void test5_helper(void (^)(int, int[*]));
-void test5(void) {
-  test5_helper(^(int n, int array[n]) {});
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-call.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-call.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-call.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -fblocks
-
-int (*FP)();
-int (^IFP) ();
-int (^II) (int);
-int main() {
-  int (*FPL) (int) = FP; // C doesn't consider this an error.
-
-  // For Blocks, the ASTContext::typesAreBlockCompatible() makes sure this is an error.
-  int (^PFR) (int) = IFP; // OK
-  PFR = II;       // OK
-
-  int (^IFP) () = PFR; // OK
-
-
-  const int (^CIC) () = IFP; // OK -  initializing 'const int (^)()' with an expression of type 'int (^)()'}}
-
-  const int (^CICC) () = CIC;
-
-
-  int * const (^IPCC) () = 0;
-
-  int * const (^IPCC1) () = IPCC;
-
-  int * (^IPCC2) () = IPCC;       // expected-error {{incompatible block pointer types initializing 'int *(^)()' with an expression of type 'int *const (^)()'}}
-
-  int (^IPCC3) (const int) = PFR;
-
-  int (^IPCC4) (int, char (^CArg) (double));
-
-  int (^IPCC5) (int, char (^CArg) (double)) = IPCC4;
-
-  int (^IPCC6) (int, char (^CArg) (float))  = IPCC4; // expected-error {{incompatible block pointer types initializing 'int (^)(int, char (^)(float))' with an expression of type 'int (^)(int, char (^)(double))'}}
-
-  IPCC2 = 0;
-  IPCC2 = 1; // expected-error {{invalid block pointer conversion assigning to 'int *(^)()' from 'int'}}
-  int (^x)() = 0;
-  int (^y)() = 3;   // expected-error {{invalid block pointer conversion initializing 'int (^)()' with an expression of type 'int'}}
-  int a = 1;
-  int (^z)() = a+4;   // expected-error {{invalid block pointer conversion initializing 'int (^)()' with an expression of type 'int'}}
-}
-
-int blah() {
-  int (^IFP) (float);
-  char (^PCP)(double, double, char);
-
-  IFP(1.0);
-  IFP (1.0, 2.0); // expected-error {{too many arguments to block call}}
-
-  char ch = PCP(1.0, 2.0, 'a');
-  return PCP(1.0, 2.0);   // expected-error {{too few arguments to block}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-explicit-noreturn-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-explicit-noreturn-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-explicit-noreturn-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fblocks
-// rdar://10466373
-
-typedef short SHORT;
-
-void f0() {
-  (void) ^{
-    if (1)
-      return (float)1.0;
-    else if (2)
-      return (double)2.0; // expected-error {{return type 'double' must match previous return type 'float' when block literal has}}
-    else
-      return (SHORT)3; // expected-error {{return type 'SHORT' (aka 'short') must match previous return type 'float' when}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-labels.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-labels.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-labels.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fblocks -fsyntax-only
-
-void xx();
-
-int a() { 
-  A:
-  
-  if (1) xx();
-  return ^{
-         A: return 1;
-       }();
-}
-int b() { 
-  A: return ^{int a; A:return 1;}();
-}
-
-int d() { 
-  A: return ^{int a; A: a = ^{int a; A:return 1;}() + ^{int b; A:return 2;}(); return a; }();
-}
-
-int c() { 
-  goto A;     // expected-error {{use of undeclared label 'A'}}
-  return ^{
-       A:
-        return 1;
-     }();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -fblocks
-
-void I( void (^)(void));
-void (^noop)(void);
-
-void nothing();
-int printf(const char*, ...);
-
-typedef void (^T) (void);
-
-void takeblock(T);
-int takeintint(int (^C)(int)) { return C(4); }
-
-T somefunction() {
-  if (^{ })
-    nothing();
-
-  noop = ^{};
-
-  noop = ^{printf("\nClosure\n"); };
-
-  I(^{ });
-
-  return ^{printf("\nClosure\n"); };
-}
-void test2() {
-  int x = 4;
-
-  takeblock(^{ printf("%d\n", x); });
-
-  while (1) {
-    takeblock(^{ 
-        break;  // expected-error {{'break' statement not in loop or switch statement}}
-        continue; // expected-error {{'continue' statement not in loop statement}}
-        while(1) break;  // ok
-        goto foo; // expected-error {{use of undeclared label 'foo'}}
-        a: goto a;       // ok
-      });
-    break;
-  }
-
-  foo:
-  takeblock(^{ x = 4; });  // expected-error {{variable is not assignable (missing __block type specifier)}}
-  __block y = 7;    // expected-warning {{type specifier missing, defaults to 'int'}}
-  takeblock(^{ y = 8; });
-}
-
-
-void (^test3())(void) { 
-  return ^{};
-}
-
-void test4() {
-  void (^noop)(void) = ^{};
-  void (*noop2)() = 0;
-}
-
-void myfunc(int (^block)(int)) {}
-
-void myfunc3(const int *x);
-
-void test5() {
-  int a;
-
-  myfunc(^(int abcd) {
-      myfunc3(&a);
-      return 1;
-    });
-}
-
-void *X;
-
-void test_arguments() {
-  int y;
-  int (^c)(char);
-  (1 ? c : 0)('x');
-  (1 ? 0 : c)('x');
-
-  (1 ? c : c)('x');
-}
-
-static int global_x = 10;
-void (^global_block)(void) = ^{ printf("global x is %d\n", global_x); };
-
-typedef void (^void_block_t)(void);
-
-static const void_block_t myBlock = ^{ };
-
-static const void_block_t myBlock2 = ^ void(void) { }; 

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-misc.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-misc.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-misc.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,228 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -fblocks
-void donotwarn();
-
-int (^IFP) ();
-int (^II) (int);
-int test1() {
-  int (^PFR) (int) = 0; // OK
-  PFR = II;             // OK
-
-  if (PFR == II)        // OK
-    donotwarn();
-
-  if (PFR == IFP)       // OK
-    donotwarn();
-
-  if (PFR == (int (^) (int))IFP) // OK
-    donotwarn();
-
-  if (PFR == 0)         // OK
-    donotwarn();
-
-  if (PFR)              // OK
-    donotwarn();
-
-  if (!PFR)             // OK
-    donotwarn();
-
-  return PFR != IFP;    // OK
-}
-
-int test2(double (^S)()) {
-  double (^I)(int)  = (void*) S;
-  (void*)I = (void *)S; // expected-error {{assignment to cast is illegal, lvalue casts are not supported}}
-
-  void *pv = I;
-
-  pv = S;
-
-  I(1);
-
-  return (void*)I == (void *)S;
-}
-
-int^ x; // expected-error {{block pointer to non-function type is invalid}}
-int^^ x1; // expected-error {{block pointer to non-function type is invalid}} expected-error {{block pointer to non-function type is invalid}}
-
-void test3() {
-  char *^ y; // expected-error {{block pointer to non-function type is invalid}}
-}
-
-
-
-enum {NSBIRLazilyAllocated = 0};
-
-int test4(int argc) {  // rdar://6251437
-  ^{
-    switch (argc) {
-      case NSBIRLazilyAllocated:  // is an integer constant expression.
-      default:
-        break;
-    }
-  }();
-  return 0;
-}
-
-
-void bar(void*);
-// rdar://6257721 - reference to static/global is byref by default.
-static int test5g;
-void test5() {
-  bar(^{ test5g = 1; });
-}
-
-// rdar://6405429 - __func__ in a block refers to the containing function name.
-const char*test6() {
-  return ^{
-    return __func__;
-  } ();
-}
-
-// radr://6732116 - block comparisons
-void (^test7a)();
-int test7(void (^p)()) {
-  return test7a == p;
-}
-
-
-void test8() {
-somelabel:
-  ^{ goto somelabel; }();   // expected-error {{use of undeclared label 'somelabel'}}
-}
-
-void test9() {
-  goto somelabel;       // expected-error {{use of undeclared label 'somelabel'}}
-  ^{ somelabel: ; }();
-}
-
-void test10(int i) {
-  switch (i) {
-  case 41: ;
-  ^{ case 42: ; }();     // expected-error {{'case' statement not in switch statement}}
-  }
-}
-
-void test11(int i) {
-  switch (i) {
-  case 41: ;
-    ^{ break; }();     // expected-error {{'break' statement not in loop or switch statement}}
-  }
-  
-  for (; i < 100; ++i)
-    ^{ break; }();     // expected-error {{'break' statement not in loop or switch statement}}
-}
-
-void (^test12f)(void);
-void test12() {
-  test12f = ^test12f;  // expected-error {{type name requires a specifier or qualifier}} expected-error {{expected expression}}
-}
-
-// rdar://6808730
-void *test13 = ^{
-  int X = 32;
-
-  void *P = ^{
-    return X+4;  // References outer block's "X", so outer block is constant.
-  };
-};
-
-void test14() {
-  int X = 32;
-  static void *P = ^{  // expected-error {{initializer element is not a compile-time constant}}
-
-    void *Q = ^{
-      // References test14's "X": outer block is non constant.
-      return X+4;
-    };
-  };
-}
-
-enum { LESS };
-
-void foo(long (^comp)()) { // expected-note{{passing argument to parameter 'comp' here}}
-}
-
-void (^test15f)(void);
-void test15() {
-  foo(^{ return LESS; }); // expected-error {{incompatible block pointer types passing 'int (^)(void)' to parameter of type 'long (^)()'}}
-}
-
-__block int test16i;  // expected-error {{__block attribute not allowed, only allowed on local variables}}
-
-void test16(__block int i) { // expected-error {{__block attribute not allowed, only allowed on local variables}}
-  int size = 5;
-  extern __block double extern_var; // expected-error {{__block attribute not allowed, only allowed on local variables}}
-  static __block char * pch; // expected-error {{__block attribute not allowed, only allowed on local variables}}
-  __block int a[size]; // expected-error {{__block attribute not allowed on declaration with a variably modified type}}
-  __block int (*ap)[size]; // expected-error {{__block attribute not allowed on declaration with a variably modified type}}
-}
-
-void f();
-
-void test17() {
-  void (^bp)(int);
-  void (*rp)(int);
-  void (^bp1)();
-  void *vp = bp;
-
-  f(1 ? bp : vp);
-  f(1 ? vp : bp);
-  f(1 ? bp : bp1);
-  (void)(bp > rp); // expected-error {{invalid operands}}
-  (void)(bp > 0); // expected-error {{invalid operands}}
-  (void)(bp > bp); // expected-error {{invalid operands}}
-  (void)(bp > vp); // expected-error {{invalid operands}}
-  f(1 ? bp : rp); // expected-error {{incompatible operand types ('void (^)(int)' and 'void (*)(int)')}}
-  (void)(bp == 1); // expected-error {{invalid operands to binary expression}}
-  (void)(bp == 0);
-  (void)(1 == bp); // expected-error {{invalid operands to binary expression}}
-  (void)(0 == bp);
-  (void)(bp < 1); // expected-error {{invalid operands to binary expression}}
-  (void)(bp < 0); // expected-error {{invalid operands to binary expression}}
-  (void)(1 < bp); // expected-error {{invalid operands to binary expression}}
-  (void)(0 < bp); // expected-error {{invalid operands to binary expression}}
-}
-
-void test18() {
-  void (^const  blockA)(void) = ^{ };
-  blockA = ^{ }; // expected-error {{read-only variable is not assignable}}
-}
-
-// rdar://7072507
-int test19() {
-  goto L0;       // expected-error {{goto into protected scope}}
-  
-  __block int x; // expected-note {{jump bypasses setup of __block variable}}
-L0:
-  x = 0;
-  ^(){ ++x; }();
-  return x;
-}
-
-// radr://7438948
-void test20() {
-  int n = 7;
-  int vla[n]; // expected-note {{declared here}}
-  int (*vm)[n] = 0; // expected-note {{declared here}}
-  vla[1] = 4341;
-  ^{
-    (void)vla[1];  // expected-error {{cannot refer to declaration with a variably modified type inside block}}
-    (void)(vm+1);  // expected-error {{cannot refer to declaration with a variably modified type inside block}}
-  }();
-}
-
-// radr://7438948
-void test21() {
-  int a[7]; // expected-note {{declared here}}
-  __block int b[10]; // expected-note {{declared here}}
-  a[1] = 1;
-  ^{
-    (void)a[1]; // expected-error {{cannot refer to declaration with an array type inside block}}
-    (void)b[1]; // expected-error {{cannot refer to declaration with an array type inside block}}
-  }();
-}
-
-// rdar ://8218839
-const char * (^func)(void) = ^{ return __func__; };
-const char * (^function)(void) = ^{ return __FUNCTION__; };
-const char * (^pretty)(void) = ^{ return __PRETTY_FUNCTION__; };

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-printf-attribute-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-printf-attribute-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-printf-attribute-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fblocks
-
-#include <stdarg.h>
-
-int main() {
-  void (^b) (int arg, const char * format, ...) __attribute__ ((__format__ (__printf__, 1, 3))) =   // expected-error {{format argument not a string type}}
-    ^ __attribute__ ((__format__ (__printf__, 1, 3))) (int arg, const char * format, ...) {}; // expected-error {{format argument not a string type}}
- 
-  void (^z) (int arg, const char * format, ...) __attribute__ ((__format__ (__printf__, 2, 3))) = ^ __attribute__ ((__format__ (__printf__, 2, 3))) (int arg, const char * format, ...) {};
-
-  z(1, "%s", 1); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-  z(1, "%s", "HELLO"); // no-warning
-}
-
-void multi_attr(va_list ap, int *x, long *y) {
-  // Handle block with multiple format attributes.
-  void (^vprintf_scanf) (const char *, va_list, const char *, ...) __attribute__((__format__(__printf__, 1, 0))) __attribute__((__format__(__scanf__, 3, 4))) =
-  ^ __attribute__((__format__(__printf__, 1, 0))) __attribute__((__format__(__scanf__, 3, 4))) (const char *str, va_list args, const char *fmt, ...) {};
-
-  vprintf_scanf("%", ap, "%d"); // expected-warning {{incomplete format specifier}}, expected-warning {{more '%' conversions than data arguments}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-return-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-return-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-return-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -fblocks
-
-int j;
-void foo() {
-  ^ (void) { if (j) return 1; }(); // expected-error {{control may reach end of non-void block}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-return-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-return-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-return-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -fblocks
-
-void foo() {
-  ^ (void) __attribute__((noreturn)) { }(); // expected-error {{block declared 'noreturn' should not return}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-return-3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-return-3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-return-3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -fblocks
-
-void foo() {
-  ^ int (void) { }(); // expected-error {{control reaches end of non-void block}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-return.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-return.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-return.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,147 +0,0 @@
-// RUN: %clang_cc1 -Wno-int-to-pointer-cast -pedantic -fsyntax-only %s -verify -fblocks
-
-typedef void (^CL)(void);
-
-CL foo() {
-  short y;
-  short (^add1)(void) = ^{ return y+1; }; // expected-error {{incompatible block pointer types initializing 'short (^)(void)' with an expression of type 'int (^)(void)'}}
-
-  CL X = ^{
-    if (2)
-      return;
-    return 1;  // expected-error {{return type 'int' must match previous return type 'void' when block literal has unspecified explicit return type}}
-  };
-
-  int (^Y) (void)  = ^{
-    if (3)
-      return 1;
-    else
-      return; // expected-error {{return type 'void' must match previous return type 'int' when block literal has unspecified explicit return type}}
-  };
-
-  char *(^Z)(void) = ^{
-    if (3)
-      return "";
-    else
-      return (char*)0;
-  };
-
-  double (^A)(void) = ^ { // expected-error {{incompatible block pointer types initializing 'double (^)(void)' with an expression of type 'float (^)(void)'}}
-    if (1)
-      return (float)1.0;
-    else
-      if (2)
-        return (double)2.0; // expected-error {{return type 'double' must match previous return type 'float' when block literal has unspecified explicit return type}}
-    return 1; // expected-error {{return type 'int' must match previous return type 'float' when block literal has unspecified explicit return type}}
-  };
-  char *(^B)(void) = ^{
-    if (3)
-      return "";
-    else
-      return 2; // expected-error {{return type 'int' must match previous return type 'char *' when block literal has unspecified explicit return type}}
-  };
-
-  return ^{ return 1; }; // expected-error {{incompatible block pointer types returning 'int (^)(void)' from a function with result type 'CL' (aka 'void (^)(void)')}}
-}
-
-typedef int (^CL2)(void);
-
-CL2 foo2() {
-  return ^{ return 1; };
-}
-
-typedef unsigned int * uintptr_t;
-typedef char Boolean;
-typedef int CFBasicHash;
-
-#define INVOKE_CALLBACK2(P, A, B) (P)(A, B)
-
-typedef struct {
-    Boolean (^isEqual)(const CFBasicHash *, uintptr_t stack_value_or_key1, uintptr_t stack_value_or_key2, Boolean is_key);
-} CFBasicHashCallbacks;
-
-int foo3() {
-    CFBasicHashCallbacks cb;
-    
-    Boolean (*value_equal)(uintptr_t, uintptr_t) = 0;
-            
-    cb.isEqual = ^(const CFBasicHash *table, uintptr_t stack_value_or_key1, uintptr_t stack_value_or_key2, Boolean is_key) {
-      return (Boolean)(uintptr_t)INVOKE_CALLBACK2(value_equal, (uintptr_t)stack_value_or_key1, (uintptr_t)stack_value_or_key2);
-    };
-}
-
-static int funk(char *s) {
-  if (^{} == ((void*)0))
-    return 1;
-  else 
-    return 0;
-}
-void next();
-void foo4() {
-  int (^xx)(const char *s) = ^(char *s) { return 1; }; // expected-error {{incompatible block pointer types initializing 'int (^)(const char *)' with an expression of type 'int (^)(char *)'}}
-  int (*yy)(const char *s) = funk; // expected-warning {{incompatible pointer types initializing 'int (*)(const char *)' with an expression of type 'int (char *)'}}
-  
-  int (^nested)(char *s) = ^(char *str) { void (^nest)(void) = ^(void) { printf("%s\n", str); }; next(); return 1; }; // expected-warning{{implicitly declaring library function 'printf' with type 'int (const char *, ...)'}} \
-  // expected-note{{please include the header <stdio.h> or explicitly provide a declaration for 'printf'}}
-}
-
-typedef void (^bptr)(void);
-
-bptr foo5(int j) {
-  __block int i;
-  if (j)
-    return ^{ ^{ i=0; }(); };  // expected-error {{returning block that lives on the local stack}}
-  return ^{ i=0; };  // expected-error {{returning block that lives on the local stack}}
-  return (^{ i=0; });  // expected-error {{returning block that lives on the local stack}}
-  return (void*)(^{ i=0; });  // expected-error {{returning block that lives on the local stack}}
-}
-
-int (*funcptr3[5])(long);
-int sz8 = sizeof(^int (*[5])(long) {return funcptr3;}); // expected-error {{block cannot return array type}} expected-warning {{incompatible pointer to integer conversion}}
-int sz9 = sizeof(^int(*())()[3]{ }); // expected-error {{function cannot return array type}}
-
-void foo6() {
-  int (^b)(int) __attribute__((noreturn));
-  b = ^ (int i) __attribute__((noreturn)) { return 1; };  // expected-error {{block declared 'noreturn' should not return}}
-  b(1);
-  int (^c)(void) __attribute__((noreturn)) = ^ __attribute__((noreturn)) { return 100; }; // expected-error {{block declared 'noreturn' should not return}}
-}
-
-
-void foo7()
-{
- const int (^BB) (void) = ^{ const int i = 1; return i; }; // OK - initializing 'const int (^)(void)' with an expression of type 'int (^)(void)'
-
- const int (^CC) (void)  = ^const int{ const int i = 1; return i; };
-
-
-  int i;
-  int (^FF) (void)  = ^{ return i; }; // OK
-  int (^EE) (void)  = ^{ return i+1; }; // OK
-
-  __block int j;
-  int (^JJ) (void)  = ^{ return j; }; // OK
-  int (^KK) (void)  = ^{ return j+1; }; // OK
-
-  __block const int k;
-  const int cint = 100;
-
-  int (^MM) (void)  = ^{ return k; };
-  int (^NN) (void)  = ^{ return cint; };
-}
-
-// rdar://11069896
-void (^blk)(void) = ^{
-    return (void)0; // expected-warning {{void block literal should not return void expression}}
-};
-
-// rdar://13463504
-enum Test8 { T8_a, T8_b, T8_c };
-void test8(void) {
-  extern void test8_helper(int (^)(int));
-  test8_helper(^(int flag) { if (flag) return T8_a; return T8_b; });
-}
-void test8b(void) {
-  extern void test8_helper2(char (^)(int)); // expected-note {{here}}
-  test8_helper2(^(int flag) { if (flag) return T8_a; return T8_b; }); // expected-error {{passing 'enum Test8 (^)(int)' to parameter of type 'char (^)(int)'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-sentinel-attribute.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-sentinel-attribute.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-sentinel-attribute.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -verify %s
-
-void (^e) (int arg, const char * format, ...) __attribute__ ((__sentinel__ (1,1)));
-
-int main() {
-  void (^bbad) (int arg, const char * format) __attribute__ ((__sentinel__)) ; // expected-warning {{'sentinel' attribute only supported for variadic blocks}}
-  bbad = ^void (int arg, const char * format) __attribute__ ((__sentinel__)) {} ; // expected-warning {{'sentinel' attribute only supported for variadic blocks}}
-  void (^b) (int arg, const char * format, ...) __attribute__ ((__sentinel__)) =  // expected-note {{block has been explicitly marked sentinel here}}
-    ^ __attribute__ ((__sentinel__)) (int arg, const char * format, ...) {};
-  void (^z) (int arg, const char * format, ...) __attribute__ ((__sentinel__ (2))) = ^ __attribute__ ((__sentinel__ (2))) (int arg, const char * format, ...) {}; // expected-note {{block has been explicitly marked sentinel here}}
-
-
-  void (^y) (int arg, const char * format, ...) __attribute__ ((__sentinel__ (5))) = ^ __attribute__ ((__sentinel__ (5))) (int arg, const char * format, ...) {}; // expected-note {{block has been explicitly marked sentinel here}}
-
-  b(1, "%s", (void*)0); // OK
-  b(1, "%s", 0);  // expected-warning {{missing sentinel in block call}}
-  z(1, "%s",4 ,1,0);  // expected-warning {{missing sentinel in block call}}
-  z(1, "%s", (void*)0, 1, 0); // OK
-
-  y(1, "%s", 1,2,3,4,5,6,7);  // expected-warning {{missing sentinel in block call}}
-
-  y(1, "%s", (void*)0,3,4,5,6,7); // OK
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/block-storageclass.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/block-storageclass.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/block-storageclass.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fblocks
-// expected-no-diagnostics
-
-int printf(const char *, ...);
-void _Block_byref_release(void*src){}
-
-int main() {
-   __block  int X = 1234;
-   __block  const char * message = "HELLO";
-
-   X = X - 1234;
-
-   X += 1;
-
-   printf ("%s(%d)\n", message, X);
-   X -= 1;
-
-   return X;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtin-object-size.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtin-object-size.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtin-object-size.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin9 -verify %s
-
-int a[10];
-
-int f0() {
-  return __builtin_object_size(&a); // expected-error {{too few arguments to function}}
-}
-int f1() {
-  return (__builtin_object_size(&a, 0) + 
-          __builtin_object_size(&a, 1) + 
-          __builtin_object_size(&a, 2) + 
-          __builtin_object_size(&a, 3));
-}
-int f2() {
-  return __builtin_object_size(&a, -1); // expected-error {{argument should be a value from 0 to 3}}
-}
-int f3() {
-  return __builtin_object_size(&a, 4); // expected-error {{argument should be a value from 0 to 3}}
-}
-
-
-// rdar://6252231 - cannot call vsnprintf with va_list on x86_64
-void f4(const char *fmt, ...) {
- __builtin_va_list args;
- __builtin___vsnprintf_chk (0, 42, 0, 11, fmt, args);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtin-prefetch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtin-prefetch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtin-prefetch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void foo() {
-  int a;
-  __builtin_prefetch(&a);
-  __builtin_prefetch(&a, 1);
-  __builtin_prefetch(&a, 1, 2);
-  __builtin_prefetch(&a, 1, 9, 3); // expected-error{{too many arguments to function}}
-  __builtin_prefetch(&a, "hello", 2); // expected-error{{argument to '__builtin_prefetch' must be a constant integer}}
-  __builtin_prefetch(&a, a, 2); // expected-error{{argument to '__builtin_prefetch' must be a constant integer}}
-  __builtin_prefetch(&a, 2); // expected-error{{argument should be a value from 0 to 1}}
-  __builtin_prefetch(&a, 0, 4); // expected-error{{argument should be a value from 0 to 3}}
-  __builtin_prefetch(&a, -1, 4); // expected-error{{argument should be a value from 0 to 1}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtin-stackaddress.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtin-stackaddress.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtin-stackaddress.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-void* a(unsigned x) {
-return __builtin_return_address(0);
-}
-
-void b(unsigned x) {
-return __builtin_return_address(x); // expected-error{{argument to '__builtin_return_address' must be a constant integer}}
-}
-
-void* c(unsigned x) {
-return __builtin_frame_address(0);
-}
-
-void d(unsigned x) {
-return __builtin_frame_address(x); // expected-error{{argument to '__builtin_frame_address' must be a constant integer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtin-unary-fp.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtin-unary-fp.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtin-unary-fp.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
-void check(int);
-void a() {
-  check(__builtin_isfinite(1.0f));
-  check(__builtin_isinf(1.0));
-  check(__builtin_isinf_sign(1.0L));
-  check(__builtin_isnan(1.0f));
-  check(__builtin_isnormal(1.0f));
-  check(__builtin_isfinite(1)); // expected-error{{requires argument of floating point type}}
-  check(__builtin_isinf()); // expected-error{{too few arguments}}
-  check(__builtin_isnan(1,2)); // expected-error{{too many arguments}}
-  check(__builtin_fpclassify(0, 0, 0, 0, 0, 1.0));
-  check(__builtin_fpclassify(0, 0, 0, 0, 0, 1)); // expected-error{{requires argument of floating point type}}
-  check(__builtin_fpclassify(0, 0, 0, 0, 1)); // expected-error{{too few arguments}}
-  check(__builtin_fpclassify(0, 0, 0, 0, 0, 1, 0)); // expected-error{{too many arguments}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtin_objc_msgSend.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtin_objc_msgSend.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtin_objc_msgSend.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-// rdar://8632525
-
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
-
-
-typedef struct objc_selector *SEL;
-extern id objc_msgSend(id self, SEL op, ...);
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtins-aarch64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtins-aarch64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtins-aarch64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -fsyntax-only -verify %s
-
-void test_clear_cache_chars(char *start, char *end) {
-  __clear_cache(start, end);
-}
-
-void test_clear_cache_voids(void *start, void *end) {
-  __clear_cache(start, end);
-}
-
-void test_clear_cache_no_args() {
-  // AArch32 version of this is variadic (at least syntactically).
-  // However, on AArch64 GCC does not permit this call and the
-  // implementation I've seen would go disastrously wrong.
-  __clear_cache(); // expected-error {{too few arguments to function call}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtins-arm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtins-arm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtins-arm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple armv7 -fsyntax-only -verify -DTEST0 %s
-// RUN: %clang_cc1 -triple armv7 -fsyntax-only -verify -DTEST1 %s
-// RUN: %clang_cc1 -triple armv7 -target-abi apcs-gnu \
-// RUN:   -fsyntax-only -verify -DTEST1 %s
-
-#ifdef TEST0
-void __clear_cache(char*, char*);
-#endif
-
-#ifdef TEST1
-void __clear_cache(void*, void*);
-#endif
-
-#if defined(__ARM_PCS) || defined(__ARM_EABI__)
-// va_list on ARM AAPCS is struct { void* __ap }.
-void test1() {
-  __builtin_va_list ptr;
-  ptr.__ap = "x";
-  *(ptr.__ap) = '0'; // expected-error {{incomplete type 'void' is not assignable}}
-}
-#else
-// va_list on ARM apcs-gnu is void*.
-void test1() {
-  __builtin_va_list ptr;
-  ptr.__ap = "x";  // expected-error {{member reference base type '__builtin_va_list' is not a structure or union}}
-  *(ptr.__ap) = '0';// expected-error {{member reference base type '__builtin_va_list' is not a structure or union}}
-}
-
-void test2() {
-  __builtin_va_list ptr = "x";
-  *ptr = '0'; // expected-error {{incomplete type 'void' is not assignable}}
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtins-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtins-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtins-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=i686-mingw32
-// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=x86_64-mingw32
-// expected-no-diagnostics
-
-// mingw-w64's intrin.h has decls below.
-// we should accept them.
-extern unsigned int __builtin_ia32_crc32qi (unsigned int, unsigned char);
-extern unsigned int __builtin_ia32_crc32hi (unsigned int, unsigned short);
-extern unsigned int __builtin_ia32_crc32si (unsigned int, unsigned int);
-
-// GCC documents these as unsigned, but they are defined with a signed argument.
-extern int __builtin_ffs(int);
-extern int __builtin_ffsl(long);
-extern int __builtin_ffsll(long long);

Modified: trunk/contrib/llvm/tools/clang/test/Sema/builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,193 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic -Wno-string-plus-int -triple=i686-apple-darwin9
-// This test needs to set the target because it uses __builtin_ia32_vec_ext_v4si
-
-int test1(float a, int b) {
-  return __builtin_isless(a, b);
-}
-int test2(int a, int b) {
-  return __builtin_islessequal(a, b);  // expected-error {{floating point type}}
-}
-
-int test3(double a, float b) {
-  return __builtin_isless(a, b);
-}
-int test4(int* a, double b) {
-  return __builtin_islessequal(a, b);  // expected-error {{floating point type}}
-}
-
-int test5(float a, long double b) {
-  return __builtin_isless(a, b, b);  // expected-error {{too many arguments}}
-}
-int test6(float a, long double b) {
-  return __builtin_islessequal(a);  // expected-error {{too few arguments}}
-}
-
-
-#define CFSTR __builtin___CFStringMakeConstantString
-void test7() {
-  const void *X;
-  X = CFSTR("\242"); // expected-warning {{input conversion stopped}}
-  X = CFSTR("\0"); // no-warning
-  X = CFSTR(242); // expected-error {{CFString literal is not a string constant}} expected-warning {{incompatible integer to pointer conversion}}
-  X = CFSTR("foo", "bar"); // expected-error {{too many arguments to function call}}
-}
-
-
-// atomics.
-
-void test9(short v) {
-  unsigned i, old;
-
-  old = __sync_fetch_and_add();  // expected-error {{too few arguments to function call}}
-  old = __sync_fetch_and_add(&old);  // expected-error {{too few arguments to function call}}
-  old = __sync_fetch_and_add((unsigned*)0, 42i); // expected-warning {{imaginary constants are a GNU extension}}
-
-  // PR7600: Pointers are implicitly casted to integers and back.
-  void *old_ptr = __sync_val_compare_and_swap((void**)0, 0, 0);
-
-  // Ensure the return type is correct even when implicit casts are stripped
-  // away. This triggers an assertion while checking the comparison otherwise.
-  if (__sync_fetch_and_add(&old, 1) == 1) {
-  }
-}
-
-// overloaded atomics should be declared only once.
-void test9_1(volatile int* ptr, int val) {
-  __sync_fetch_and_add_4(ptr, val);
-}
-void test9_2(volatile int* ptr, int val) {
-  __sync_fetch_and_add(ptr, val);
-}
-void test9_3(volatile int* ptr, int val) {
-  __sync_fetch_and_add_4(ptr, val);
-  __sync_fetch_and_add(ptr, val);
-  __sync_fetch_and_add(ptr, val);
-  __sync_fetch_and_add_4(ptr, val);
-  __sync_fetch_and_add_4(ptr, val);
-}
-
-// rdar://7236819
-void test10(void) __attribute__((noreturn));
-
-void test10(void) {
-  __asm__("int3");
-  __builtin_unreachable();
-
-  // No warning about falling off the end of a noreturn function.
-}
-
-void test11(int X) {
-  switch (X) {
-  case __builtin_eh_return_data_regno(0):  // constant foldable.
-    break;
-  }
-
-  __builtin_eh_return_data_regno(X);  // expected-error {{argument to '__builtin_eh_return_data_regno' must be a constant integer}}
-}
-
-// PR5062
-void test12(void) __attribute__((__noreturn__));
-void test12(void) {
-  __builtin_trap();  // no warning because trap is noreturn.
-}
-
-void test_unknown_builtin(int a, int b) {
-  __builtin_isles(a, b); // expected-error{{use of unknown builtin}} \
-                         // expected-note{{did you mean '__builtin_isless'?}}
-}
-
-int test13() {
-  __builtin_eh_return(0, 0); // no warning, eh_return never returns.
-}
-
-// <rdar://problem/8228293>
-void test14() {
-  int old;
-  old = __sync_fetch_and_min((volatile int *)&old, 1);
-}
-
-// <rdar://problem/8336581>
-void test15(const char *s) {
-  __builtin_printf("string is %s\n", s);
-}
-
-// PR7885
-int test16() {
-  return __builtin_constant_p() + // expected-error{{too few arguments}}
-         __builtin_constant_p(1, 2); // expected-error {{too many arguments}}
-}
-
-const int test17_n = 0;
-const char test17_c[] = {1, 2, 3, 0};
-const char test17_d[] = {1, 2, 3, 4};
-typedef int __attribute__((vector_size(16))) IntVector;
-struct Aggregate { int n; char c; };
-enum Enum { EnumValue1, EnumValue2 };
-
-typedef __typeof(sizeof(int)) size_t;
-size_t strlen(const char *);
-
-void test17() {
-#define ASSERT(...) { int arr[(__VA_ARGS__) ? 1 : -1]; }
-#define T(...) ASSERT(__builtin_constant_p(__VA_ARGS__))
-#define F(...) ASSERT(!__builtin_constant_p(__VA_ARGS__))
-
-  // __builtin_constant_p returns 1 if the argument folds to:
-  //  - an arithmetic constant with value which is known at compile time
-  T(test17_n);
-  T(&test17_c[3] - test17_c);
-  T(3i + 5); // expected-warning {{imaginary constant}}
-  T(4.2 * 7.6);
-  T(EnumValue1);
-  T((enum Enum)(int)EnumValue2);
-
-  //  - the address of the first character of a string literal, losslessly cast
-  //    to any type
-  T("string literal");
-  T((double*)"string literal");
-  T("string literal" + 0);
-  T((long)"string literal");
-
-  // ... and otherwise returns 0.
-  F("string literal" + 1);
-  F(&test17_n);
-  F(test17_c);
-  F(&test17_c);
-  F(&test17_d);
-  F((struct Aggregate){0, 1});
-  F((IntVector){0, 1, 2, 3});
-
-  // Ensure that a technique used in glibc is handled correctly.
-#define OPT(...) (__builtin_constant_p(__VA_ARGS__) && strlen(__VA_ARGS__) < 4)
-  // FIXME: These are incorrectly treated as ICEs because strlen is treated as
-  // a builtin.
-  ASSERT(OPT("abc"));
-  ASSERT(!OPT("abcd"));
-  // In these cases, the strlen is non-constant, but the __builtin_constant_p
-  // is 0: the array size is not an ICE but is foldable.
-  ASSERT(!OPT(test17_c));        // expected-warning {{folded}}
-  ASSERT(!OPT(&test17_c[0]));    // expected-warning {{folded}}
-  ASSERT(!OPT((char*)test17_c)); // expected-warning {{folded}}
-  ASSERT(!OPT(test17_d));        // expected-warning {{folded}}
-  ASSERT(!OPT(&test17_d[0]));    // expected-warning {{folded}}
-  ASSERT(!OPT((char*)test17_d)); // expected-warning {{folded}}
-
-#undef OPT
-#undef T
-#undef F
-}
-
-void test18() {
-  char src[1024];
-  char dst[2048];
-  size_t result;
-  void *ptr;
-
-  ptr = __builtin___memccpy_chk(dst, src, '\037', sizeof(src), sizeof(dst));
-  result = __builtin___strlcpy_chk(dst, src, sizeof(src), sizeof(dst));
-  result = __builtin___strlcat_chk(dst, src, sizeof(src), sizeof(dst));
-
-  ptr = __builtin___memccpy_chk(dst, src, '\037', sizeof(src));      // expected-error {{too few arguments to function call}}
-  ptr = __builtin___strlcpy_chk(dst, src, sizeof(src), sizeof(dst)); // expected-warning {{incompatible integer to pointer conversion}}
-  ptr = __builtin___strlcat_chk(dst, src, sizeof(src), sizeof(dst)); // expected-warning {{incompatible integer to pointer conversion}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/c11-typedef-redef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/c11-typedef-redef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/c11-typedef-redef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -std=c11 %s -verify
-
-typedef int type;
-typedef type type;
-typedef int type;
-
-void f(int N) {
-  typedef int type2;
-  typedef type type2;
-  typedef int type2;
-
-  typedef int vla[N]; // expected-note{{previous definition is here}}
-  typedef int vla[N]; // expected-error{{redefinition of typedef for variably-modified type 'int [N]'}}
-
-  typedef int vla2[N];
-  typedef vla2 vla3; // expected-note{{previous definition is here}}
-  typedef vla2 vla3; // expected-error{{redefinition of typedef for variably-modified type 'vla2' (aka 'int [N]')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/c89.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/c89.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/c89.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,118 +0,0 @@
-/* RUN: %clang_cc1 %s -std=c89 -pedantic -fsyntax-only -verify -Wimplicit-function-declaration
- */
-void test1() {
-  {
-    int i;
-    i = i + 1;
-    int j;          /* expected-warning {{mixing declarations and code}} */
-  }
-  {
-    __extension__ int i;
-    i = i + 1;
-    int j;          /* expected-warning {{mixing declarations and code}} */
-  }
-  {
-    int i;
-    i = i + 1;
-    __extension__ int j; /* expected-warning {{mixing declarations and code}} */
-  }
-}
-
-long long test2;   /* expected-warning {{extension}} */
-
-
-void test3(int i) {
-  int A[i];        /* expected-warning {{variable length array}} */
-}
-
-int test4 = 0LL;   /* expected-warning {{long long}} */
-
-/* PR1999 */
-void test5(register);
-
-/* PR2041 */
-int *restrict;
-int *__restrict;  /* expected-error {{expected identifier}} */
-
-
-/* Implicit int, always ok */
-test6() { return 0; }
-
-/* PR2012 */
-test7;  /* expected-warning {{declaration specifier missing, defaulting to 'int'}} */
-
-void test8(int, x);  /* expected-warning {{declaration specifier missing, defaulting to 'int'}} */
-
-typedef int sometype;
-int a(sometype, y) {return 0;}  /* expected-warning {{declaration specifier missing, defaulting to 'int'}} \
-                                   expected-error {{parameter name omitted}}*/
-
-
-
-
-void bar (void *); 
-void f11 (z)       /* expected-error {{may not have 'void' type}} */
-void z; 
-{ bar (&z); }
-
-typedef void T;
-void foo(T); /* typedef for void is allowed */
-
-void foo(void) {}
-
-/* PR2759 */
-void test10 (int x[*]); /* expected-warning {{variable length arrays are a C99 feature}} */
-void test11 (int x[static 4]); /* expected-warning {{static array size is a C99 feature}} */
-
-void test12 (int x[const 4]) { /* expected-warning {{qualifier in array size is a C99 feature}} */
-  int Y[x[1]]; /* expected-warning {{variable length arrays are a C99 feature}} */
-}
-
-/* PR4074 */
-struct test13 {
-  int X[23];
-} test13a();
-
-void test13b() {
-  int a = test13a().X[1]; /* expected-warning {{ISO C90 does not allow subscripting non-lvalue array}} */
-  int b = 1[test13a().X]; /* expected-warning {{ISO C90 does not allow subscripting non-lvalue array}} */
-}
-
-/* Make sure we allow *test14 as a "function designator" */
-int test14() { return (&*test14)(); }
-
-int test15[5] = { [2] = 1 }; /* expected-warning {{designated initializers are a C99 feature}} */
-
-extern int printf(__const char *__restrict __format, ...);
-
-/* Warn, but don't suggest typo correction. */
-void test16() {
-  printg("Hello, world!\n"); /* expected-warning {{implicit declaration of function 'printg'}} */
-}
-
-struct x { int x,y[]; }; /* expected-warning {{Flexible array members are a C99-specific feature}} */
-
-/* Duplicated type-qualifiers aren't allowed by C90 */
-const const int c_i; /* expected-warning {{duplicate 'const' declaration specifier}} */
-typedef volatile int vol_int;
-volatile vol_int volvol_i; /* expected-warning {{duplicate 'volatile' declaration specifier}} */
-typedef volatile vol_int volvol_int; /* expected-warning {{duplicate 'volatile' declaration specifier}} */
-const int * const c;
-
-typedef const int CI;
-
-const CI mine1[5][5]; /* expected-warning {{duplicate 'const' declaration specifier}} */
-
-typedef CI array_of_CI[5];
-const array_of_CI mine2; /* expected-warning {{duplicate 'const' declaration specifier}} */
-
-typedef CI *array_of_pointer_to_CI[5];
-const array_of_pointer_to_CI mine3;
-
-void main() {} /* expected-error {{'main' must return 'int'}} */
-
-long long ll1 = /* expected-warning {{'long long' is an extension when C99 mode is not enabled}} */
-         -42LL; /* expected-warning {{'long long' is an extension when C99 mode is not enabled}} */
-unsigned long long ull1 = /* expected-warning {{'long long' is an extension when C99 mode is not enabled}} */
-                   42ULL; /* expected-warning {{'long long' is an extension when C99 mode is not enabled}} */
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/callingconv.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/callingconv.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/callingconv.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -triple i386-unknown-unknown -verify
-
-void __attribute__((fastcall)) foo(float *a) { 
-}
-
-void __attribute__((stdcall)) bar(float *a) { 
-}
-
-void __attribute__((fastcall(1))) baz(float *a) { // expected-error {{attribute takes no arguments}}
-}
-
-void __attribute__((fastcall)) test0() { // expected-error {{function with no prototype cannot use fastcall calling convention}}
-}
-
-void __attribute__((fastcall)) test1(void) {
-}
-
-void __attribute__((fastcall)) test2(int a, ...) { // expected-error {{variadic function cannot use fastcall calling convention}}
-}
-
-void __attribute__((cdecl)) ctest0() {}
-
-void __attribute__((cdecl(1))) ctest1(float x) {} // expected-error {{attribute takes no arguments}}
-
-void (__attribute__((fastcall)) *pfoo)(float*) = foo;
-
-void (__attribute__((stdcall)) *pbar)(float*) = bar;
-
-void (__attribute__((cdecl)) *ptest1)(void) = test1; // expected-warning {{incompatible pointer types}}
-
-void (*pctest0)() = ctest0;
-
-void ctest2() {}
-void (__attribute__((cdecl)) *pctest2)() = ctest2;
-
-typedef void (__attribute__((fastcall)) *Handler) (float *);
-Handler H = foo;
-
-int __attribute__((pcs("aapcs", "aapcs"))) pcs1(void); // expected-error {{attribute takes one argument}}
-int __attribute__((pcs())) pcs2(void); // expected-error {{attribute takes one argument}}
-int __attribute__((pcs(pcs1))) pcs3(void); // expected-error {{attribute takes one argument}}
-int __attribute__((pcs(0))) pcs4(void); // expected-error {{'pcs' attribute requires parameter 1 to be a string}}
-/* These are ignored because the target is i386 and not ARM */
-int __attribute__((pcs("aapcs"))) pcs5(void); // expected-warning {{calling convention 'pcs' ignored for this target}}
-int __attribute__((pcs("aapcs-vfp"))) pcs6(void); // expected-warning {{calling convention 'pcs' ignored for this target}}
-int __attribute__((pcs("foo"))) pcs7(void); // expected-error {{invalid PCS type}}
-
-// PR6361
-void ctest3();
-void __attribute__((cdecl)) ctest3() {}
-
-// PR6408
-typedef __attribute__((stdcall)) void (*PROC)();
-PROC __attribute__((cdecl)) ctest4(const char *x) {}
-
-void __attribute__((pnaclcall)) pnaclfunc(float *a) {} // expected-warning {{calling convention 'pnaclcall' ignored for this target}}
-
-void __attribute__((intel_ocl_bicc)) inteloclbifunc(float *a) {}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/captured-statements.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/captured-statements.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/captured-statements.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -fblocks
-
-void test_gotos() {
-  goto L1; // expected-error {{use of undeclared label 'L1'}}
-  goto L3; // OK
-  #pragma clang __debug captured
-  {
-L1:
-    goto L2; // OK
-L2:
-    goto L3; // expected-error {{use of undeclared label 'L3'}}
-  }
-L3: ;
-}
-
-void test_break_continue() {
-  while (1) {
-    #pragma clang __debug captured
-    {
-      break; // expected-error {{'break' statement not in loop or switch statement}}
-      continue; // expected-error {{'continue' statement not in loop statement}}
-    }
-  }
-}
-
-void test_return() {
-  while (1) {
-    #pragma clang __debug captured
-    {
-      return; // expected-error {{cannot return from default captured statement}}
-    }
-  }
-}
-
-void test_nest() {
-  int x;
-  #pragma clang __debug captured
-  {
-    int y;
-    #pragma clang __debug captured
-    {
-      int z;
-      #pragma clang __debug captured
-      {
-        x = z = y; // OK
-      }
-    }
-  }
-}
-
-void test_nest_block() {
-  __block int x;
-  int y;
-  ^{
-    int z;
-    #pragma clang __debug captured
-    {
-      x = y; // OK
-      y = z; // expected-error{{variable is not assignable (missing __block type specifier)}}
-      z = y; // OK
-    }
-  }();
-
-  __block int a;
-  int b;
-  #pragma clang __debug captured
-  {
-    __block int c;
-    int d;
-    ^{
-      a = b; // OK
-      a = c; // OK
-      b = d; // OK - Consistent with block inside a lambda
-      c = a; // OK
-      d = b; // expected-error{{variable is not assignable (missing __block type specifier)}}
-    }();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/carbon.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/carbon.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/carbon.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -fsyntax-only %s -print-stats
-#ifdef __APPLE__
-#include <Carbon/Carbon.h>
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/cast-incomplete.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/cast-incomplete.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/cast-incomplete.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-// PR5692
-
-enum x;            // expected-note   {{forward declaration}}
-extern struct y a; // expected-note   {{forward declaration}}
-extern union z b;  // expected-note 2 {{forward declaration}}
-
-void foo() {
-  (enum x)1;   // expected-error {{cast to incomplete type}}
-  (struct y)a; // expected-error {{cast to incomplete type}}
-  (union z)b;  // expected-error {{cast to incomplete type}}
-  (union z)1;  // expected-error {{cast to incomplete type}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/cast-to-union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/cast-to-union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/cast-to-union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-union u { int i; unsigned : 3; };
-void f(union u);
-
-void test(int x) {
-  f((union u)x); // expected-warning {{cast to union type is a GNU extension}}
-  f((union u)&x); // expected-error {{cast to union type from type 'int *' not present in union}}
-  f((union u)2U); // expected-error {{cast to union type from type 'unsigned int' not present in union}}
-}
-
-union u w = (union u)2; // expected-warning {{cast to union type is a GNU extension}}
-union u ww = (union u)1.0; // expected-error{{cast to union type from type 'double' not present in union}}
-union u x = 7; // expected-error{{initializing 'union u' with an expression of incompatible type 'int'}}
-int i;
-union u zz = (union u)i; // expected-error{{initializer element is not a compile-time constant}}  expected-warning {{cast to union type is a GNU extension}}
-
-struct s {int a, b;};
-struct s y = { 1, 5 };
-struct s z = (struct s){ 1, 5 };

Modified: trunk/contrib/llvm/tools/clang/test/Sema/cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-unknown-unknown %s -verify
-
-typedef struct { unsigned long bits[(((1) + (64) - 1) / (64))]; } cpumask_t;
-cpumask_t x;
-void foo() {
-  (void)x;
-}
-void bar() {
-  char* a;
-  double b;
-  b = (double)a; // expected-error {{pointer cannot be cast to type}}
-  a = (char*)b; // expected-error {{cannot be cast to a pointer type}}
-}
-
-long bar1(long *next) {
-        return (long)(*next)++;  
-}
-
-typedef _Bool Bool;
-typedef int Int;
-typedef long Long;
-typedef float Float;
-typedef double Double;
-typedef _Complex int CInt;
-typedef _Complex long CLong;
-typedef _Complex float CFloat;
-typedef _Complex double CDouble;
-typedef void *VoidPtr;
-typedef char *CharPtr;
-
-void testBool(Bool v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-  (void) (VoidPtr) v;
-  (void) (CharPtr) v;
-}
-
-void testInt(Int v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-  (void) (VoidPtr) v; // expected-warning{{cast to 'VoidPtr' (aka 'void *') from smaller integer type 'Int' (aka 'int')}}
-  (void) (CharPtr) v; // expected-warning{{cast to 'CharPtr' (aka 'char *') from smaller integer type 'Int' (aka 'int')}}
-}
-
-void testLong(Long v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-  (void) (VoidPtr) v;
-  (void) (CharPtr) v;
-}
-
-void testFloat(Float v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-}
-
-void testDouble(Double v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-}
-
-void testCI(CInt v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-}
-
-void testCLong(CLong v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-}
-
-void testCFloat(CFloat v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-}
-
-void testCDouble(CDouble v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (Float) v;
-  (void) (Double) v;
-  (void) (CInt) v;
-  (void) (CLong) v;
-  (void) (CFloat) v;
-  (void) (CDouble) v;
-}
-
-void testVoidPtr(VoidPtr v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (VoidPtr) v;
-  (void) (CharPtr) v;
-}
-
-void testCharPtr(CharPtr v) {
-  (void) (Bool) v;
-  (void) (Int) v;
-  (void) (Long) v;
-  (void) (VoidPtr) v;
-  (void) (CharPtr) v;
-}
-
-typedef enum { x_a, x_b } X;
-void *intToPointerCast2(X x) {
-  return (void*)x;
-}
-
-void *intToPointerCast3() {
-  return (void*)(1 + 3);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/check-increment.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/check-increment.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/check-increment.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-int printf(const char *, ...);
-typedef int *pint;
-int main() {
-   int a[5] = {0};
-   pint p = a;
-   p++;
-   printf("%d\n", *p);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/compare.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/compare.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/compare.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,342 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -pedantic -verify -Wsign-compare %s -Wno-unreachable-code
-
-int test(char *C) { // nothing here should warn.
-  return C != ((void*)0);
-  return C != (void*)0;
-  return C != 0;
-  return C != 1;  // expected-warning {{comparison between pointer and integer ('char *' and 'int')}}
-}
-
-int ints(long a, unsigned long b) {
-  enum EnumA {A};
-  enum EnumB {B};
-  enum EnumC {C = 0x10000};
-  return
-         // (a,b)
-         (a == (unsigned long) b) +  // expected-warning {{comparison of integers of different signs}}
-         (a == (unsigned int) b) +
-         (a == (unsigned short) b) +
-         (a == (unsigned char) b) +
-         ((long) a == b) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a == b) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a == b) +  // expected-warning {{comparison of integers of different signs}}
-         ((signed char) a == b) +  // expected-warning {{comparison of integers of different signs}}
-         ((long) a == (unsigned long) b) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a == (unsigned int) b) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a == (unsigned short) b) +
-         ((signed char) a == (unsigned char) b) +
-         (a < (unsigned long) b) +  // expected-warning {{comparison of integers of different signs}}
-         (a < (unsigned int) b) +
-         (a < (unsigned short) b) +
-         (a < (unsigned char) b) +
-         ((long) a < b) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < b) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < b) +  // expected-warning {{comparison of integers of different signs}}
-         ((signed char) a < b) +  // expected-warning {{comparison of integers of different signs}}
-         ((long) a < (unsigned long) b) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < (unsigned int) b) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < (unsigned short) b) +
-         ((signed char) a < (unsigned char) b) +
-
-         // (A,b)
-         (A == (unsigned long) b) +
-         (A == (unsigned int) b) +
-         (A == (unsigned short) b) +
-         (A == (unsigned char) b) +
-         ((long) A == b) +
-         ((int) A == b) +
-         ((short) A == b) +
-         ((signed char) A == b) +
-         ((long) A == (unsigned long) b) +
-         ((int) A == (unsigned int) b) +
-         ((short) A == (unsigned short) b) +
-         ((signed char) A == (unsigned char) b) +
-         (A < (unsigned long) b) +
-         (A < (unsigned int) b) +
-         (A < (unsigned short) b) +
-         (A < (unsigned char) b) +
-         ((long) A < b) +
-         ((int) A < b) +
-         ((short) A < b) +
-         ((signed char) A < b) +
-         ((long) A < (unsigned long) b) +
-         ((int) A < (unsigned int) b) +
-         ((short) A < (unsigned short) b) +
-         ((signed char) A < (unsigned char) b) +
-
-         // (a,B)
-         (a == (unsigned long) B) +
-         (a == (unsigned int) B) +
-         (a == (unsigned short) B) +
-         (a == (unsigned char) B) +
-         ((long) a == B) +
-         ((int) a == B) +
-         ((short) a == B) +
-         ((signed char) a == B) +
-         ((long) a == (unsigned long) B) +
-         ((int) a == (unsigned int) B) +
-         ((short) a == (unsigned short) B) +
-         ((signed char) a == (unsigned char) B) +
-         (a < (unsigned long) B) +  // expected-warning {{comparison of integers of different signs}}
-         (a < (unsigned int) B) +
-         (a < (unsigned short) B) +
-         (a < (unsigned char) B) +
-         ((long) a < B) +
-         ((int) a < B) +
-         ((short) a < B) +
-         ((signed char) a < B) +
-         ((long) a < (unsigned long) B) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < (unsigned int) B) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < (unsigned short) B) +
-         ((signed char) a < (unsigned char) B) +
-
-         // (C,b)
-         (C == (unsigned long) b) +
-         (C == (unsigned int) b) +
-         (C == (unsigned short) b) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'unsigned short' is always false}}
-         (C == (unsigned char) b) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'unsigned char' is always false}}
-         ((long) C == b) +
-         ((int) C == b) +
-         ((short) C == b) +
-         ((signed char) C == b) +
-         ((long) C == (unsigned long) b) +
-         ((int) C == (unsigned int) b) +
-         ((short) C == (unsigned short) b) +
-         ((signed char) C == (unsigned char) b) +
-         (C < (unsigned long) b) +
-         (C < (unsigned int) b) +
-         (C < (unsigned short) b) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'unsigned short' is always false}}
-         (C < (unsigned char) b) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'unsigned char' is always false}}
-         ((long) C < b) +
-         ((int) C < b) +
-         ((short) C < b) +
-         ((signed char) C < b) +
-         ((long) C < (unsigned long) b) +
-         ((int) C < (unsigned int) b) +
-         ((short) C < (unsigned short) b) +
-         ((signed char) C < (unsigned char) b) +
-
-         // (a,C)
-         (a == (unsigned long) C) +
-         (a == (unsigned int) C) +
-         (a == (unsigned short) C) +
-         (a == (unsigned char) C) +
-         ((long) a == C) +
-         ((int) a == C) +
-         ((short) a == C) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'short' is always false}}
-         ((signed char) a == C) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'signed char' is always false}}
-         ((long) a == (unsigned long) C) +
-         ((int) a == (unsigned int) C) +
-         ((short) a == (unsigned short) C) +
-         ((signed char) a == (unsigned char) C) +
-         (a < (unsigned long) C) +  // expected-warning {{comparison of integers of different signs}}
-         (a < (unsigned int) C) +
-         (a < (unsigned short) C) +
-         (a < (unsigned char) C) +
-         ((long) a < C) +
-         ((int) a < C) +
-         ((short) a < C) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'short' is always true}}
-         ((signed char) a < C) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'signed char' is always true}}
-         ((long) a < (unsigned long) C) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < (unsigned int) C) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < (unsigned short) C) +
-         ((signed char) a < (unsigned char) C) +
-
-         // (0x80000,b)
-         (0x80000 == (unsigned long) b) +
-         (0x80000 == (unsigned int) b) +
-         (0x80000 == (unsigned short) b) + // expected-warning {{comparison of constant 524288 with expression of type 'unsigned short' is always false}}
-         (0x80000 == (unsigned char) b) + // expected-warning {{comparison of constant 524288 with expression of type 'unsigned char' is always false}}
-         ((long) 0x80000 == b) +
-         ((int) 0x80000 == b) +
-         ((short) 0x80000 == b) +
-         ((signed char) 0x80000 == b) +
-         ((long) 0x80000 == (unsigned long) b) +
-         ((int) 0x80000 == (unsigned int) b) +
-         ((short) 0x80000 == (unsigned short) b) +
-         ((signed char) 0x80000 == (unsigned char) b) +
-         (0x80000 < (unsigned long) b) +
-         (0x80000 < (unsigned int) b) +
-         (0x80000 < (unsigned short) b) + // expected-warning {{comparison of constant 524288 with expression of type 'unsigned short' is always false}}
-         (0x80000 < (unsigned char) b) + // expected-warning {{comparison of constant 524288 with expression of type 'unsigned char' is always false}}
-         ((long) 0x80000 < b) +
-         ((int) 0x80000 < b) +
-         ((short) 0x80000 < b) +
-         ((signed char) 0x80000 < b) +
-         ((long) 0x80000 < (unsigned long) b) +
-         ((int) 0x80000 < (unsigned int) b) +
-         ((short) 0x80000 < (unsigned short) b) +
-         ((signed char) 0x80000 < (unsigned char) b) +
-
-         // (a,0x80000)
-         (a == (unsigned long) 0x80000) +
-         (a == (unsigned int) 0x80000) +
-         (a == (unsigned short) 0x80000) +
-         (a == (unsigned char) 0x80000) +
-         ((long) a == 0x80000) +
-         ((int) a == 0x80000) +
-         ((short) a == 0x80000) + // expected-warning {{comparison of constant 524288 with expression of type 'short' is always false}}
-         ((signed char) a == 0x80000) + // expected-warning {{comparison of constant 524288 with expression of type 'signed char' is always false}}
-         ((long) a == (unsigned long) 0x80000) +
-         ((int) a == (unsigned int) 0x80000) +
-         ((short) a == (unsigned short) 0x80000) +
-         ((signed char) a == (unsigned char) 0x80000) +
-         (a < (unsigned long) 0x80000) +  // expected-warning {{comparison of integers of different signs}}
-         (a < (unsigned int) 0x80000) +
-         (a < (unsigned short) 0x80000) +
-         (a < (unsigned char) 0x80000) +
-         ((long) a < 0x80000) +
-         ((int) a < 0x80000) +
-         ((short) a < 0x80000) + // expected-warning {{comparison of constant 524288 with expression of type 'short' is always true}}
-         ((signed char) a < 0x80000) + // expected-warning {{comparison of constant 524288 with expression of type 'signed char' is always true}}
-         ((long) a < (unsigned long) 0x80000) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < (unsigned int) 0x80000) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < (unsigned short) 0x80000) +
-         ((signed char) a < (unsigned char) 0x80000) +
-
-         // We should be able to avoid warning about this.
-         (b != (a < 4 ? 1 : 2)) +
-
-         10
-    ;
-}
-
-int equal(char *a, const char *b) {
-    return a == b;
-}
-
-int arrays(char (*a)[5], char(*b)[10], char(*c)[5]) {
-  int d = (a == c);
-  return a == b; // expected-warning {{comparison of distinct pointer types}}
-}
-
-int pointers(int *a) {
-  return a > 0; // expected-warning {{ordered comparison between pointer and zero ('int *' and 'int') is an extension}}
-  return a > 42; // expected-warning {{ordered comparison between pointer and integer ('int *' and 'int')}}
-  return a > (void *)0; // expected-warning {{comparison of distinct pointer types}}
-}
-
-int function_pointers(int (*a)(int), int (*b)(int), void (*c)(int)) {
-  return a > b; // expected-warning {{ordered comparison of function pointers}}
-  return function_pointers > function_pointers; // expected-warning {{self-comparison always evaluates to false}} expected-warning{{ordered comparison of function pointers}}
-  return a > c; // expected-warning {{comparison of distinct pointer types}}
-  return a == (void *) 0;
-  return a == (void *) 1; // expected-warning {{equality comparison between function pointer and void pointer}}
-}
-
-int void_pointers(void* foo) {
-  return foo == (void*) 0;
-  return foo == (void*) 1;
-}
-
-
-int test1(int i) {
-  enum en { zero };
-  return i > zero;
-}
-
-// PR5937
-int test2(int i32) {
-  struct foo {
-    unsigned int u8 : 8;
-    unsigned long long u31 : 31;
-    unsigned long long u32 : 32;
-    unsigned long long u63 : 63;
-    unsigned long long u64 : 64;
-  } *x;
-  
-  if (x->u8 == i32) { // comparison in int32, exact
-    return 0;
-  } else if (x->u31 == i32) { // comparison in int32, exact
-    return 1;
-  } else if (x->u32 == i32) { // expected-warning {{comparison of integers of different signs}}
-    return 2;
-  } else if (x->u63 == i32) { // comparison in uint64, exact because ==
-    return 3;
-  } else if (x->u64 == i32) { // expected-warning {{comparison of integers of different signs}}
-    return 4;
-  } else {
-    return 5;
-  }
-}
-
-// PR5887
-void test3() {
-  unsigned short x, y;
-  unsigned int z;
-  if ((x > y ? x : y) > z)
-    (void) 0;
-}
-
-// PR5961
-extern char *ptr4;
-void test4() {
-  long value;
-  if (value < (unsigned long) &ptr4) // expected-warning {{comparison of integers of different signs}}
-    return;
-}
-
-// PR4807
-int test5(unsigned int x) {
-  return (x < 0) // expected-warning {{comparison of unsigned expression < 0 is always false}}
-    && (0 > x)   // expected-warning {{comparison of 0 > unsigned expression is always false}}
-    && (x >= 0)  // expected-warning {{comparison of unsigned expression >= 0 is always true}}
-    && (0 <= x); // expected-warning {{comparison of 0 <= unsigned expression is always true}}
-}
-
-int test6(unsigned i, unsigned power) {
-  unsigned x = (i < (1 << power) ? i : 0);
-  return x != 3 ? 1 << power : i;
-}
-
-// <rdar://problem/8414119> enum >= (enum)0 comparison should not generate any warnings
-enum rdar8414119_Vals { X, Y, Z };
-#define ZERO 0
-#define CHECK(x) (x >= X)
-void rdar8414119_foo(enum rdar8414119_Vals v) {
-  if (CHECK(v)) // no-warning
-   return;
-  if (v >= X) // no-warning
-   return;
-}
-int rdar8414119_bar(unsigned x) {
-  return x >= ZERO; // no-warning
-}
-#undef ZERO
-#undef CHECK
-
-int rdar8511238() {
-  enum A { A_foo, A_bar };
-  enum A a;
-  if (a < 0) // expected-warning {{comparison of unsigned enum expression < 0 is always false}}
-    return 0;
-  return 20;
-}
-
-// PR10336
-int test9(int sv, unsigned uv, long slv) {
-  return sv == (uv ^= slv); // expected-warning {{comparison of integers of different signs: 'int' and 'unsigned int'}}
-}
-
-void test10(void) {
-  int si;
-  unsigned int ui;
-  long sl;
-
-  _Bool b;
-  b = (si == (ui = sl)); // expected-warning {{comparison of integers of different signs: 'int' and 'unsigned int'}}
-  b = (si == (ui = sl&15));
-}
-
-// PR11572
-struct test11S { unsigned x : 30; };
-int test11(unsigned y, struct test11S *p) {
-  return y > (p->x >> 24); // no-warning
-}
-
-typedef char one_char[1];
-typedef char two_chars[2];
-
-void test12(unsigned a) {
-  if (0 && -1 > a) { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/complex-imag.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/complex-imag.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/complex-imag.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-void f1() {
-  int a = 1;
-  int b = __imag a;
-  int *c = &__real a;
-  int *d = &__imag a; // expected-error {{cannot take the address of an rvalue of type 'int'}}
-}
-
-void f2() {
-  _Complex int a = 1;
-  int b = __imag a;
-  int *c = &__real a;
-  int *d = &__imag a;
-}
-
-void f3() {
-  double a = 1;
-  double b = __imag a;
-  double *c = &__real a;
-  double *d = &__imag a; // expected-error {{cannot take the address of an rvalue of type 'double'}}
-}
-
-void f4() {
-  _Complex double a = 1;
-  double b = __imag a;
-  double *c = &__real a;
-  double *d = &__imag a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/complex-init-list.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/complex-init-list.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/complex-init-list.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -pedantic
-
-// This file tests the clang extension which allows initializing the components
-// of a complex number individually using an initialization list. Basically,
-// if you have an explicit init list for a complex number that contains two
-// initializers, this extension kicks in to turn it into component-wise
-// initialization.
-//
-// This extension is useful because there isn't any way to accurately build
-// a complex number at the moment besides setting the components with
-// __real__ and __imag__, which is inconvenient and not usable for constants.
-// (Of course, there are other extensions we could implement that would
-// allow this, like some sort of __builtin_build_complex.)
-//
-// FIXME: It would be a good idea to have a warnings for implicit
-// real->complex and complex->real conversions; as-is, it's way too easy
-// to get implicit conversions when they are not intended.
-
-// Basic testcase
-_Complex float valid1 = { 1.0f, 2.0f }; // expected-warning {{specifying real and imaginary components is an extension}}
-
-
-// Struct for nesting tests
-struct teststruct { _Complex float x; };
-
-
-// Random other valid stuff
-_Complex int valid2 = { 1, 2 }; // expected-warning {{complex integer}} expected-warning {{specifying real and imaginary components is an extension}}
-struct teststruct valid3 = { { 1.0f, 2.0f} }; // expected-warning {{specifying real and imaginary components is an extension}}
-_Complex float valid4[2] = { {1.0f, 1.0f}, {1.0f, 1.0f} }; // expected-warning 2 {{specifying real and imaginary components is an extension}}
-// FIXME: We need some sort of warning for valid5
-_Complex float valid5 = {1.0f, 1.0fi}; // expected-warning {{imaginary constants}} expected-warning {{specifying real and imaginary components is an extension}}
-
-
-// Random invalid stuff
-struct teststruct invalid1 = { 1, 2 }; // expected-warning {{excess elements}}
-_Complex float invalid2 = { 1, 2, 3 }; // expected-warning {{excess elements}}
-_Complex float invalid3 = {}; // expected-error {{scalar initializer cannot be empty}} expected-warning {{GNU empty initializer}}
-
-
-// Check incomplete array sizing
-_Complex float sizetest1[] = { {1.0f, 1.0f}, {1.0f, 1.0f} }; // expected-warning 2 {{specifying real and imaginary components is an extension}}
-_Complex float sizecheck1[(sizeof(sizetest1) == sizeof(*sizetest1)*2) ? 1 : -1];
-_Complex float sizetest2[] = { 1.0f, 1.0f, {1.0f, 1.0f} };  // expected-warning {{specifying real and imaginary components is an extension}}
-_Complex float sizecheck2[(sizeof(sizetest2) == sizeof(*sizetest2)*3) ? 1 : -1];
-
-// Constant-folding with init list.
-_Complex float x = 2 + (_Complex float) { 1, 2 };  // expected-warning {{specifying real and imaginary components is an extension}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/complex-int.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/complex-int.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/complex-int.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-void a() {
-__complex__ int arr;
-__complex__ short brr;
-__complex__ unsigned xx;
-__complex__ signed yy;
-__complex__ int result;
-int ii;
-int aa = 1 + 1.0iF;
-
-result = arr*ii;
-result = ii*brr;
-
-result = arr*brr;
-result = xx*yy;
-
-switch (arr) { // expected-error{{statement requires expression of integer type ('_Complex int' invalid)}}
-  case brr: ; // expected-error{{expression is not an integer constant expression}}
-  case xx: ; // expected-error{{expression is not an integer constant expression}}
-}
-}
-
-void Tester() {
-__complex short a1;
-__complex int a2;
-__complex float a3;
-__complex double a4;
-short a5;
-int a6;
-float a7;
-double a8;
-#define TestPair(m,n) int x##m##n = a##m+a##n;
-#define TestPairs(m) TestPair(m,1) TestPair(m,2) \
-                    TestPair(m,3) TestPair(m,4) \
-                    TestPair(m,5) TestPair(m,6) \
-                    TestPair(m,7) TestPair(m,8)
-TestPairs(1); TestPairs(2);
-TestPairs(3); TestPairs(4);
-TestPairs(5); TestPairs(6);
-TestPairs(7); TestPairs(8);
-}
-
-// rdar://6097730
-void test3(_Complex int *x) {
-  *x = ~*x;
-}
-
-void test4(_Complex float *x) {
-  *x = ~*x;
-}
-
-void test5(_Complex int *x) {
-  (*x)++;
-}
-
-int i1[(2+3i)*(5+7i) == 29i-11 ? 1 : -1];
-int i2[(29i-11)/(5+7i) == 2+3i ? 1 : -1];
-int i3[-(2+3i) == +(-3i-2) ? 1 : -1];
-int i4[~(2+3i) == 2-3i ? 1 : -1];
-int i5[(3i == -(-3i) ? ((void)3, 1i - 1) : 0) == 1i - 1 ? 1 : -1];
-
-int f1[(2.0+3.0i)*(5.0+7.0i) == 29.0i-11.0 ? 1 : -1];
-int f2[(29.0i-11.0)/(5.0+7.0i) == 2.0+3.0i ? 1 : -1];
-int f3[-(2.0+3.0i) == +(-3.0i-2.0) ? 1 : -1];
-int f4[~(2.0+3.0i) == 2.0-3.0i ? 1 : -1];
-int f5[(3.0i == -(-3.0i) ? ((void)3.0, __extension__ (1.0i - 1.0)) : 0) == 1.0i - 1.0 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/complex-promotion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/complex-promotion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/complex-promotion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// expected-no-diagnostics
-
-float a;
-
-int b[__builtin_classify_type(a + 1i) == 9 ? 1 : -1];
-int c[__builtin_classify_type(1i + a) == 9 ? 1 : -1];
-
-double d;
-__typeof__ (d + 1i) e;
-
-int f[sizeof(e) == 2 * sizeof(double) ? 1 : -1];
-
-int g;
-int h[__builtin_classify_type(g + 1.0i) == 9 ? 1 : -1];
-int i[__builtin_classify_type(1.0i + a) == 9 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/compound-literal.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/compound-literal.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/compound-literal.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-// REQUIRES: LP64
-
-struct foo { int a, b; };
-
-static struct foo t = (struct foo){0,0};
-static struct foo t1 = __builtin_choose_expr(0, (struct foo){0,0}, (struct foo){0,0});
-static struct foo t2 = {0,0};
-static struct foo t3 = t2; // expected-error {{initializer element is not a compile-time constant}}
-static int *p = (int []){2,4};
-static int x = (int){1};
-
-static int *p2 = (int []){2,x}; // expected-error {{initializer element is not a compile-time constant}}
-static long *p3 = (long []){2,"x"}; // expected-warning {{incompatible pointer to integer conversion initializing 'long' with an expression of type 'char [2]'}}
-
-typedef struct { } cache_t; // expected-warning{{empty struct is a GNU extension}}
-static cache_t clo_I1_cache = ((cache_t) { } ); // expected-warning{{use of GNU empty initializer extension}}
-
-typedef struct Test {int a;int b;} Test;
-static Test* ll = &(Test) {0,0};
-
-extern void fooFunc(struct foo *pfoo);
-
-int main(int argc, char **argv) {
- int *l = (int []){x, *p, *p2};
- fooFunc(&(struct foo){ 1, 2 });
-}
-
-struct Incomplete; // expected-note{{forward declaration of 'struct Incomplete'}}
-struct Incomplete* I1 = &(struct Incomplete){1, 2, 3}; // expected-error {{variable has incomplete type}}
-void IncompleteFunc(unsigned x) {
-  struct Incomplete* I2 = (struct foo[x]){1, 2, 3}; // expected-error {{variable-sized object may not be initialized}}
-  (void){1,2,3}; // expected-error {{variable has incomplete type}}
-  (void(void)) { 0 }; // expected-error{{illegal initializer type 'void (void)'}}
-}
-
-// PR6080
-int array[(sizeof(int[3]) == sizeof( (int[]) {0,1,2} )) ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/conditional-expr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/conditional-expr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/conditional-expr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,112 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -Wsign-conversion %s
-void foo() {
-  *(0 ? (double *)0 : (void *)0) = 0;
-  // FIXME: GCC doesn't consider the following two statements to be errors.
-  *(0 ? (double *)0 : (void *)(int *)0) = 0; // expected-error {{incomplete type 'void' is not assignable}}
-  *(0 ? (double *)0 : (void *)(double *)0) = 0; // expected-error {{incomplete type 'void' is not assignable}}
-  *(0 ? (double *)0 : (int *)(void *)0) = 0; // expected-error {{incomplete type 'void' is not assignable}} expected-warning {{pointer type mismatch ('double *' and 'int *')}}
-  *(0 ? (double *)0 : (double *)(void *)0) = 0;
-  *((void *) 0) = 0; // expected-error {{incomplete type 'void' is not assignable}}
-  double *dp;
-  int *ip;
-  void *vp;
-
-  dp = vp;
-  vp = dp;
-  ip = dp; // expected-warning {{incompatible pointer types assigning to 'int *' from 'double *'}}
-  dp = ip; // expected-warning {{incompatible pointer types assigning to 'double *' from 'int *'}}
-  dp = 0 ? (double *)0 : (void *)0;
-  vp = 0 ? (double *)0 : (void *)0;
-  ip = 0 ? (double *)0 : (void *)0; // expected-warning {{incompatible pointer types assigning to 'int *' from 'double *'}}
-
-  const int *cip;
-  vp = (0 ? vp : cip); // expected-warning {{discards qualifiers}}
-  vp = (0 ? cip : vp); // expected-warning {{discards qualifiers}}
-
-  int i = 2;
-  int (*pf)[2];
-  int (*pv)[i];
-  pf = (i ? pf : pv);
-
-  enum {xxx,yyy,zzz} e, *ee;
-  short x;
-  ee = ee ? &x : ee ? &i : &e; // expected-warning {{pointer type mismatch}}
-
-  typedef void *asdf;
-  *(0 ? (asdf) 0 : &x) = 10;
-
-  unsigned long test0 = 5;
-  test0 = test0 ? (long) test0 : test0; // expected-warning {{operand of ? changes signedness: 'long' to 'unsigned long'}}
-  test0 = test0 ? (int) test0 : test0; // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-  test0 = test0 ? (short) test0 : test0; // expected-warning {{operand of ? changes signedness: 'short' to 'unsigned long'}}
-  test0 = test0 ? test0 : (long) test0; // expected-warning {{operand of ? changes signedness: 'long' to 'unsigned long'}}
-  test0 = test0 ? test0 : (int) test0; // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-  test0 = test0 ? test0 : (short) test0; // expected-warning {{operand of ? changes signedness: 'short' to 'unsigned long'}}
-  test0 = test0 ? test0 : (long) 10;
-  test0 = test0 ? test0 : (int) 10;
-  test0 = test0 ? test0 : (short) 10;
-  test0 = test0 ? (long) 10 : test0;
-  test0 = test0 ? (int) 10 : test0;
-  test0 = test0 ? (short) 10 : test0;
-
-  int test1;
-  enum Enum { EVal };
-  test0 = test0 ? EVal : test0;
-  test1 = test0 ? EVal : (int) test0;
-  test0 = test0 ?
-                  (unsigned) EVal
-                : (int) test0;  // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-
-  test0 = test0 ? EVal : test1; // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-  test0 = test0 ? test1 : EVal; // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-
-  const int *const_int;
-  int *nonconst_int;
-  *(test0 ? const_int : nonconst_int) = 42; // expected-error {{read-only variable is not assignable}}
-  *(test0 ? nonconst_int : const_int) = 42; // expected-error {{read-only variable is not assignable}}
-
-  // The composite type here should be "int (*)[12]", fine for the sizeof
-  int (*incomplete)[];
-  int (*complete)[12];
-  sizeof(*(test0 ? incomplete : complete)); // expected-warning {{expression result unused}}
-  sizeof(*(test0 ? complete : incomplete)); // expected-warning {{expression result unused}}
-
-  int __attribute__((address_space(2))) *adr2;
-  int __attribute__((address_space(3))) *adr3;
-  test0 ? adr2 : adr3; // expected-warning {{pointer type mismatch}} expected-warning {{expression result unused}}
-
-  // Make sure address-space mask ends up in the result type
-  (test0 ? (test0 ? adr2 : adr2) : nonconst_int); // expected-warning {{pointer type mismatch}} expected-warning {{expression result unused}}
-}
-
-int Postgresql() {
-  char x;
-  return ((((&x) != ((void *) 0)) ? (*(&x) = ((char) 1)) : (void) ((void *) 0)), (unsigned long) ((void *) 0)); // expected-warning {{C99 forbids conditional expressions with only one void side}}
-}
-
-#define nil ((void*) 0)
-
-extern int f1(void);
-
-int f0(int a) {
-  // GCC considers this a warning.
-  return a ? f1() : nil; // expected-warning {{pointer/integer type mismatch in conditional expression ('int' and 'void *')}} expected-warning {{incompatible pointer to integer conversion returning 'void *' from a function with result type 'int'}}
-}
-
-int f2(int x) {
-  // We can suppress this because the immediate context wants an int.
-  return (x != 0) ? 0U : x;
-}
-
-#define NULL (void*)0
-
-void PR9236() {
-  struct A {int i;} A1;
-  (void)(1 ? A1 : NULL); // expected-error{{non-pointer operand type 'struct A' incompatible with NULL}}
-  (void)(1 ? NULL : A1); // expected-error{{non-pointer operand type 'struct A' incompatible with NULL}}
-  (void)(1 ? 0 : A1); // expected-error{{incompatible operand types}}
-  (void)(1 ? (void*)0 : A1); // expected-error{{incompatible operand types}}
-  (void)(1 ? A1: (void*)0); // expected-error{{incompatible operand types}}
-  (void)(1 ? A1 : (NULL)); // expected-error{{non-pointer operand type 'struct A' incompatible with NULL}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/conditional.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/conditional.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/conditional.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-const char* test1 = 1 ? "i" : 1 == 1 ? "v" : "r";
-
-void _efree(void *ptr);
-void free(void *ptr);
-
-int _php_stream_free1() {
-  return (1 ? free(0) : _efree(0)); // expected-error {{returning 'void' from a function with incompatible result type 'int'}}
-}
-
-int _php_stream_free2() {
-  return (1 ? _efree(0) : free(0));  // expected-error {{returning 'void' from a function with incompatible result type 'int'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/const-eval-64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/const-eval-64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/const-eval-64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-linux %s
-// expected-no-diagnostics
-
-#define EVAL_EXPR(testno, expr) int test##testno = sizeof(struct{char qq[expr];});
-
-// <rdar://problem/10962435>
-EVAL_EXPR(1, ((char*)-1LL) + 1 == 0 ? 1 : -1)
-EVAL_EXPR(2, ((char*)-1LL) + 1 < (char*) -1 ? 1 : -1)

Modified: trunk/contrib/llvm/tools/clang/test/Sema/const-eval.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/const-eval.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/const-eval.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,136 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux %s
-
-#define EVAL_EXPR(testno, expr) int test##testno = sizeof(struct{char qq[expr];});
-int x;
-EVAL_EXPR(1, (_Bool)&x)
-EVAL_EXPR(2, (int)(1.0+(double)4))
-EVAL_EXPR(3, (int)(1.0+(float)4.0))
-EVAL_EXPR(4, (_Bool)(1 ? (void*)&x : 0))
-EVAL_EXPR(5, (_Bool)(int[]){0})
-struct y {int x,y;};
-EVAL_EXPR(6, (int)(1+(struct y*)0))
-EVAL_EXPR(7, (int)&((struct y*)0)->y)
-EVAL_EXPR(8, (_Bool)"asdf")
-EVAL_EXPR(9, !!&x)
-EVAL_EXPR(10, ((void)1, 12))
-void g0(void);
-EVAL_EXPR(11, (g0(), 12)) // expected-error {{must have a constant size}}
-EVAL_EXPR(12, 1.0&&2.0)
-EVAL_EXPR(13, x || 3.0) // expected-error {{must have a constant size}}
-
-unsigned int l_19 = 1;
-EVAL_EXPR(14, (1 ^ l_19) && 1); // expected-error {{fields must have a constant size}}
-
-void f()
-{
-  int a;
-  EVAL_EXPR(15, (_Bool)&a);
-}
-
-// FIXME: Turn into EVAL_EXPR test once we have more folding.
-_Complex float g16 = (1.0f + 1.0fi);
-
-// ?: in constant expressions.
-int g17[(3?:1) - 2]; 
-
-EVAL_EXPR(18, ((int)((void*)10 + 10)) == 20 ? 1 : -1);
-
-struct s {
-  int a[(int)-1.0f]; // expected-error {{'a' declared as an array with a negative size}}
-};
-
-EVAL_EXPR(19, ((int)&*(char*)10 == 10 ? 1 : -1));
-
-EVAL_EXPR(20, __builtin_constant_p(*((int*) 10)));
-
-EVAL_EXPR(21, (__imag__ 2i) == 2 ? 1 : -1);
-
-EVAL_EXPR(22, (__real__ (2i+3)) == 3 ? 1 : -1);
-
-int g23[(int)(1.0 / 1.0)] = { 1 };
-int g24[(int)(1.0 / 1.0)] = { 1 , 2 }; // expected-warning {{excess elements in array initializer}}
-int g25[(int)(1.0 + 1.0)], g26 = sizeof(g25);
-
-EVAL_EXPR(26, (_Complex double)0 ? -1 : 1)
-EVAL_EXPR(27, (_Complex int)0 ? -1 : 1)
-EVAL_EXPR(28, (_Complex double)1 ? 1 : -1)
-EVAL_EXPR(29, (_Complex int)1 ? 1 : -1)
-
-
-// PR4027 + rdar://6808859
-struct a { int x, y; };
-static struct a V2 = (struct a)(struct a){ 1, 2};
-static const struct a V1 = (struct a){ 1, 2};
-
-EVAL_EXPR(30, (int)(_Complex float)((1<<30)-1) == (1<<30) ? 1 : -1)
-EVAL_EXPR(31, (int*)0 == (int*)0 ? 1 : -1)
-EVAL_EXPR(32, (int*)0 != (int*)0 ? -1 : 1)
-EVAL_EXPR(33, (void*)0 - (void*)0 == 0 ? 1 : -1)
-void foo(void) {}
-EVAL_EXPR(34, (foo == (void *)0) ? -1 : 1)
-
-// No PR. Mismatched bitwidths lead to a crash on second evaluation.
-const _Bool constbool = 0;
-EVAL_EXPR(35, constbool)
-EVAL_EXPR(36, constbool)
-
-EVAL_EXPR(37, (1,2.0) == 2.0 ? 1 : -1)
-EVAL_EXPR(38, __builtin_expect(1,1) == 1 ? 1 : -1)
-
-// PR7884
-EVAL_EXPR(39, __real__(1.f) == 1 ? 1 : -1)
-EVAL_EXPR(40, __imag__(1.f) == 0 ? 1 : -1)
-
-// From gcc testsuite
-EVAL_EXPR(41, (int)(1+(_Complex unsigned)2))
-
-// rdar://8875946
-void rdar8875946() {
-  double _Complex  P;
-  float _Complex  P2 = 3.3f + P;
-}
-
-double d = (d = 0.0); // expected-error {{not a compile-time constant}}
-double d2 = ++d; // expected-error {{not a compile-time constant}}
-
-int n = 2;
-int intLvalue[*(int*)((long)&n ?: 1)] = { 1, 2 }; // expected-error {{variable length array}}
-
-union u { int a; char b[4]; };
-char c = ((union u)(123456)).b[0]; // expected-error {{not a compile-time constant}}
-
-extern const int weak_int __attribute__((weak));
-const int weak_int = 42;
-int weak_int_test = weak_int; // expected-error {{not a compile-time constant}}
-
-int literalVsNull1 = "foo" == 0;
-int literalVsNull2 = 0 == "foo";
-
-// PR11385.
-int castViaInt[*(int*)(unsigned long)"test"]; // expected-error {{variable length array}}
-
-// PR11391.
-struct PR11391 { _Complex float f; } pr11391;
-EVAL_EXPR(42, __builtin_constant_p(pr11391.f = 1))
-
-// PR12043
-float varfloat;
-const float constfloat = 0;
-EVAL_EXPR(43, varfloat && constfloat) // expected-error {{must have a constant size}}
-
-// <rdar://problem/11205586>
-// (Make sure we continue to reject this.)
-EVAL_EXPR(44, "x"[0]); // expected-error {{variable length array}}
-
-// <rdar://problem/10962435>
-EVAL_EXPR(45, ((char*)-1) + 1 == 0 ? 1 : -1)
-EVAL_EXPR(46, ((char*)-1) + 1 < (char*) -1 ? 1 : -1)
-EVAL_EXPR(47, &x < &x + 1 ? 1 : -1)
-EVAL_EXPR(48, &x != &x - 1 ? 1 : -1)
-EVAL_EXPR(49, &x < &x - 100 ? 1 : -1) // expected-error {{must have a constant size}}
-
-extern struct Test50S Test50;
-EVAL_EXPR(50, &Test50 < (struct Test50S*)((unsigned)&Test50 + 10)) // expected-error {{must have a constant size}}
-
-// <rdar://problem/11874571>
-EVAL_EXPR(51, 0 != (float)1e99)

Modified: trunk/contrib/llvm/tools/clang/test/Sema/const-ptr-int-ptr-cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/const-ptr-int-ptr-cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/const-ptr-int-ptr-cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -ffreestanding %s
-// expected-no-diagnostics
-
-#include <stdint.h>
-
-char *a = (void*)(uintptr_t)(void*)&a;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/constant-builtins-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/constant-builtins-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/constant-builtins-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-// Math stuff
-
-double       g0  = __builtin_huge_val();
-float        g1  = __builtin_huge_valf();
-long double  g2  = __builtin_huge_vall();
-
-double       g3  = __builtin_inf();
-float        g4  = __builtin_inff();
-long double  g5  = __builtin_infl();
-
-double       g6  = __builtin_nan("");
-float        g7  = __builtin_nanf("");
-long double  g8  = __builtin_nanl("");
-
-// GCC constant folds these too (via native strtol):
-//double       g6_1  = __builtin_nan("1");
-//float        g7_1  = __builtin_nanf("1");
-//long double  g8_1  = __builtin_nanl("1");
-
-// APFloat doesn't have signalling NaN functions.
-//double       g9  = __builtin_nans("");
-//float        g10 = __builtin_nansf("");
-//long double  g11 = __builtin_nansl("");
-
-//int          g12 = __builtin_abs(-12);
-
-double       g13 = __builtin_fabs(-12.);
-double       g13_0 = __builtin_fabs(-0.);
-double       g13_1 = __builtin_fabs(-__builtin_inf());
-float        g14 = __builtin_fabsf(-12.f);
-// GCC doesn't eat this one.
-//long double  g15 = __builtin_fabsfl(-12.0L);
-
-float        g16 = __builtin_copysign(1.0, -1.0);
-double       g17 = __builtin_copysignf(1.0f, -1.0f);
-long double  g18 = __builtin_copysignl(1.0L, -1.0L);
-
-//double       g19 = __builtin_powi(2.0, 4);
-//float        g20 = __builtin_powif(2.0f, 4);
-//long double  g21 = __builtin_powil(2.0L, 4);
-
-// GCC misc stuff
-
-extern int f();
-
-int h0 = __builtin_types_compatible_p(int, float);
-//int h1 = __builtin_choose_expr(1, 10, f());
-//int h2 = __builtin_expect(0, 0);
-int h3 = __builtin_bswap16(0x1234) == 0x3412 ? 1 : f();
-int h4 = __builtin_bswap32(0x1234) == 0x34120000 ? 1 : f();
-int h5 = __builtin_bswap64(0x1234) == 0x3412000000000000 ? 1 : f();
-extern long int bi0;
-extern __typeof__(__builtin_expect(0, 0)) bi0;
-
-// Strings
-int array1[__builtin_strlen("ab\0cd")];
-int array2[(sizeof(array1)/sizeof(int)) == 2? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/constant-builtins.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/constant-builtins.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/constant-builtins.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -pedantic
-// expected-no-diagnostics
-
-// Math stuff
-
-float        g0 = __builtin_huge_val();
-double       g1 = __builtin_huge_valf();
-long double  g2 = __builtin_huge_vall();
-float        g3 = __builtin_inf();
-double       g4 = __builtin_inff();
-long double  g5 = __builtin_infl();
-
-// GCC misc stuff
-
-extern int f();
-
-int h0 = __builtin_types_compatible_p(int,float);
-//int h1 = __builtin_choose_expr(1, 10, f());
-//int h2 = __builtin_expect(0, 0);
-int h3 = __builtin_bswap16(0x1234) == 0x3412 ? 1 : f();
-int h4 = __builtin_bswap32(0x1234) == 0x34120000 ? 1 : f();
-int h5 = __builtin_bswap64(0x1234) == 0x3412000000000000 ? 1 : f();
-
-short somefunc();
-
-short t = __builtin_constant_p(5353) ? 42 : somefunc();
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/constant-conversion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/constant-conversion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/constant-conversion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin %s
-
-// This file tests -Wconstant-conversion, a subcategory of -Wconversion
-// which is on by default.
-
-// rdar://problem/6792488
-void test_6792488(void) {
-  int x = 0x3ff0000000000000U; // expected-warning {{implicit conversion from 'unsigned long' to 'int' changes value from 4607182418800017408 to 0}}
-}
-
-void test_7809123(void) {
-  struct { int i5 : 5; } a;
-
-  a.i5 = 36; // expected-warning {{implicit truncation from 'int' to bitfield changes value from 36 to 4}}
-}
-
-void test() {
-  struct { int bit : 1; } a;
-  a.bit = 1; // shouldn't warn
-}
-
-enum Test2 { K_zero, K_one };
-enum Test2 test2(enum Test2 *t) {
-  *t = 20;
-  return 10; // shouldn't warn
-}
-
-void test3() {
-  struct A {
-    unsigned int foo : 2;
-    int bar : 2;
-  };
-
-  struct A a = { 0, 10 };            // expected-warning {{implicit truncation from 'int' to bitfield changes value from 10 to -2}}
-  struct A b[] = { 0, 10, 0, 0 };    // expected-warning {{implicit truncation from 'int' to bitfield changes value from 10 to -2}}
-  struct A c[] = {{10, 0}};          // expected-warning {{implicit truncation from 'int' to bitfield changes value from 10 to 2}}
-  struct A d = (struct A) { 10, 0 }; // expected-warning {{implicit truncation from 'int' to bitfield changes value from 10 to 2}}
-  struct A e = { .foo = 10 };        // expected-warning {{implicit truncation from 'int' to bitfield changes value from 10 to 2}}
-}
-
-void test4() {
-  struct A {
-    char c : 2;
-  } a;
-
-  a.c = 0x101; // expected-warning {{implicit truncation from 'int' to bitfield changes value from 257 to 1}}
-}
-
-void test5() {
-  struct A {
-    _Bool b : 1;
-  } a;
-
-  // Don't warn about this implicit conversion to bool, or at least
-  // don't warn about it just because it's a bitfield.
-  a.b = 100;
-}
-
-void test6() {
-  // Test that unreachable code doesn't trigger the truncation warning.
-  unsigned char x = 0 ? 65535 : 1; // no-warning
-  unsigned char y = 1 ? 65535 : 1; // expected-warning {{changes value}}
-}
-
-void test7() {
-	struct {
-		unsigned int twoBits1:2;
-		unsigned int twoBits2:2;
-		unsigned int reserved:28;
-	} f;
-
-	f.twoBits1 = ~1; // expected-warning {{implicit truncation from 'int' to bitfield changes value from -2 to 2}}
-	f.twoBits2 = ~2; // expected-warning {{implicit truncation from 'int' to bitfield changes value from -3 to 1}}
-	f.twoBits1 &= ~1; // no-warning
-	f.twoBits2 &= ~2; // no-warning
-}
-
-void test8() {
-  enum E { A, B, C };
-  struct { enum E x : 1; } f;
-  f.x = C; // expected-warning {{implicit truncation from 'int' to bitfield changes value from 2 to 0}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/constructor-attribute.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/constructor-attribute.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/constructor-attribute.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int x __attribute__((constructor)); // expected-warning {{'constructor' attribute only applies to functions}}
-int f() __attribute__((constructor));
-int f() __attribute__((constructor(1)));
-int f() __attribute__((constructor(1,2))); // expected-error {{attribute takes no more than 1 argument}}
-int f() __attribute__((constructor(1.0))); // expected-error {{'constructor' attribute requires parameter 1 to be an integer constant}}
-
-int x __attribute__((destructor)); // expected-warning {{'destructor' attribute only applies to functions}}
-int f() __attribute__((destructor));
-int f() __attribute__((destructor(1)));
-int f() __attribute__((destructor(1,2))); // expected-error {{attribute takes no more than 1 argument}}
-int f() __attribute__((destructor(1.0))); // expected-error {{'destructor' attribute requires parameter 1 to be an integer constant}}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/conversion-64-32.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/conversion-64-32.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/conversion-64-32.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wshorten-64-to-32 -triple x86_64-apple-darwin %s
-
-int test0(long v) {
-  return v; // expected-warning {{implicit conversion loses integer precision}}
-}
-
-
-// rdar://9546171
-typedef int  int4  __attribute__ ((vector_size(16)));
-typedef long long long2 __attribute__((__vector_size__(16)));
-
-int4 test1(long2 a) {
-  int4  v127 = a;  // no warning.
-  return v127; 
-}
-
-int test2(long v) {
-  return v / 2; // expected-warning {{implicit conversion loses integer precision: 'long' to 'int'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/conversion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/conversion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/conversion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,419 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wconversion \
-// RUN:   -nostdsysteminc -nobuiltininc -isystem %S/Inputs \
-// RUN:   -triple x86_64-apple-darwin %s -Wno-unreachable-code
-
-#include <conversion.h>
-
-#define BIG 0x7f7f7f7f7f7f7f7fL
-
-void test0(char c, short s, int i, long l, long long ll) {
-  c = c;
-  c = s; // expected-warning {{implicit conversion loses integer precision}}
-  c = i; // expected-warning {{implicit conversion loses integer precision}}
-  c = l; // expected-warning {{implicit conversion loses integer precision}}
-  s = c;
-  s = s;
-  s = i; // expected-warning {{implicit conversion loses integer precision}}
-  s = l; // expected-warning {{implicit conversion loses integer precision}}
-  i = c;
-  i = s;
-  i = i;
-  i = l; // expected-warning {{implicit conversion loses integer precision}}
-  l = c;
-  l = s;
-  l = i;
-  l = l;
-
-  c = (char) 0;
-  c = (short) 0;
-  c = (int) 0;
-  c = (long) 0;
-  s = (char) 0;
-  s = (short) 0;
-  s = (int) 0;
-  s = (long) 0;
-  i = (char) 0;
-  i = (short) 0;
-  i = (int) 0;
-  i = (long) 0;
-  l = (char) 0;
-  l = (short) 0;
-  l = (int) 0;
-  l = (long) 0;
-
-  c = (char) BIG;
-  c = (short) BIG; // expected-warning {{implicit conversion from 'short' to 'char' changes value}}
-  c = (int) BIG; // expected-warning {{implicit conversion from 'int' to 'char' changes value}}
-  c = (long) BIG; // expected-warning {{implicit conversion from 'long' to 'char' changes value}}
-  s = (char) BIG;
-  s = (short) BIG;
-  s = (int) BIG; // expected-warning {{implicit conversion from 'int' to 'short' changes value}}
-  s = (long) BIG; // expected-warning {{implicit conversion from 'long' to 'short' changes value}}
-  i = (char) BIG;
-  i = (short) BIG;
-  i = (int) BIG;
-  i = (long) BIG; // expected-warning {{implicit conversion from 'long' to 'int' changes value}}
-  l = (char) BIG;
-  l = (short) BIG;
-  l = (int) BIG;
-  l = (long) BIG;
-}
-
-char test1(long long ll) {
-  return (long long) ll; // expected-warning {{implicit conversion loses integer precision}}
-}
-char test1_a(long long ll) {
-  return (long) ll; // expected-warning {{implicit conversion loses integer precision}}
-}
-char test1_b(long long ll) {
-  return (int) ll; // expected-warning {{implicit conversion loses integer precision}}
-}
-char test1_c(long long ll) {
-  return (short) ll; // expected-warning {{implicit conversion loses integer precision}}
-}
-char test1_d(long long ll) {
-  return (char) ll;
-}
-char test1_e(long long ll) {
-  return (long long) BIG; // expected-warning {{implicit conversion from 'long long' to 'char' changes value}}
-}
-char test1_f(long long ll) {
-  return (long) BIG; // expected-warning {{implicit conversion from 'long' to 'char' changes value}}
-}
-char test1_g(long long ll) {
-  return (int) BIG; // expected-warning {{implicit conversion from 'int' to 'char' changes value}}
-}
-char test1_h(long long ll) {
-  return (short) BIG; // expected-warning {{implicit conversion from 'short' to 'char' changes value}}
-}
-char test1_i(long long ll) {
-  return (char) BIG;
-}
-
-short test2(long long ll) {
-  return (long long) ll; // expected-warning {{implicit conversion loses integer precision}}
-}
-short test2_a(long long ll) {
-  return (long) ll; // expected-warning {{implicit conversion loses integer precision}}
-}
-short test2_b(long long ll) {
-  return (int) ll; // expected-warning {{implicit conversion loses integer precision}}
-}
-short test2_c(long long ll) {
-  return (short) ll;
-}
-short test2_d(long long ll) {
-  return (char) ll;
-}
-short test2_e(long long ll) {
-  return (long long) BIG;  // expected-warning {{implicit conversion from 'long long' to 'short' changes value}}
-}
-short test2_f(long long ll) {
-  return (long) BIG;  // expected-warning {{implicit conversion from 'long' to 'short' changes value}}
-}
-short test2_g(long long ll) {
-  return (int) BIG;  // expected-warning {{implicit conversion from 'int' to 'short' changes value}}
-}
-short test2_h(long long ll) {
-  return (short) BIG;
-}
-short test2_i(long long ll) {
-  return (char) BIG;
-}
-
-int test3(long long ll) {
-  return (long long) ll;  // expected-warning {{implicit conversion loses integer precision}}
-}
-int test3_b(long long ll) {
-  return (long) ll;  // expected-warning {{implicit conversion loses integer precision}}
-}
-int test3_c(long long ll) {
-  return (int) ll;
-}
-int test3_d(long long ll) {
-  return (short) ll;
-}
-int test3_e(long long ll) {
-  return (char) ll;
-}
-int test3_f(long long ll) {
-  return (long long) BIG;  // expected-warning {{implicit conversion from 'long long' to 'int' changes value}}
-}
-int test3_g(long long ll) {
-  return (long) BIG; // expected-warning {{implicit conversion from 'long' to 'int' changes value}}
-}
-int test3_h(long long ll) {
-  return (int) BIG;
-}
-int test3_i(long long ll) {
-  return (short) BIG;
-}
-int test3_j(long long ll) {
-  return (char) BIG;
-}
-
-long test4(long long ll) {
-  return (long long) ll;
-}
-long test4_a(long long ll) {
-  return (long) ll;
-}
-long test4_b(long long ll) {
-  return (int) ll;
-}
-long test4_c(long long ll) {
-  return (short) ll;
-}
-long test4_d(long long ll) {
-  return (char) ll;
-}
-long test4_e(long long ll) {
-  return (long long) BIG;
-}
-long test4_f(long long ll) {
-  return (long) BIG;
-}
-long test4_g(long long ll) {
-  return (int) BIG;
-}
-long test4_h(long long ll) {
-  return (short) BIG;
-}
-long test4_i(long long ll) {
-  return (char) BIG;
-}
-
-long long test5(long long ll) {
-  return (long long) ll;
-  return (long) ll;
-  return (int) ll;
-  return (short) ll;
-  return (char) ll;
-  return (long long) BIG;
-  return (long) BIG;
-  return (int) BIG;
-  return (short) BIG;
-  return (char) BIG;
-}
-
-void takes_char(char);
-void takes_short(short);
-void takes_int(int);
-void takes_long(long);
-void takes_longlong(long long);
-void takes_float(float);
-void takes_double(double);
-void takes_longdouble(long double);
-
-void test6(char v) {
-  takes_char(v);
-  takes_short(v);
-  takes_int(v);
-  takes_long(v);
-  takes_longlong(v);
-  takes_float(v);
-  takes_double(v);
-  takes_longdouble(v);
-}
-
-void test7(short v) {
-  takes_char(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_short(v);
-  takes_int(v);
-  takes_long(v);
-  takes_longlong(v);
-  takes_float(v);
-  takes_double(v);
-  takes_longdouble(v);
-}
-
-void test8(int v) {
-  takes_char(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_short(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_int(v);
-  takes_long(v);
-  takes_longlong(v);
-  takes_float(v);
-  takes_double(v);
-  takes_longdouble(v);
-}
-
-void test9(long v) {
-  takes_char(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_short(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_int(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_long(v);
-  takes_longlong(v);
-  takes_float(v);
-  takes_double(v);
-  takes_longdouble(v);
-}
-
-void test10(long long v) {
-  takes_char(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_short(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_int(v); // expected-warning {{implicit conversion loses integer precision}}
-  takes_long(v);
-  takes_longlong(v);
-  takes_float(v);
-  takes_double(v);
-  takes_longdouble(v);
-}
-
-void test11(float v) {
-  takes_char(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_short(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_int(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_long(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_longlong(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_float(v);
-  takes_double(v);
-  takes_longdouble(v);
-}
-
-void test12(double v) {
-  takes_char(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_short(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_int(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_long(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_longlong(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_float(v); // expected-warning {{implicit conversion loses floating-point precision}}
-  takes_double(v);
-  takes_longdouble(v);
-}
-
-void test13(long double v) {
-  takes_char(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_short(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_int(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_long(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_longlong(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
-  takes_float(v); // expected-warning {{implicit conversion loses floating-point precision}}
-  takes_double(v); // expected-warning {{implicit conversion loses floating-point precision}}
-  takes_longdouble(v);
-}
-
-void test14(long l) {
-  // Fine because of the boolean whitelist.
-  char c;
-  c = (l == 4);
-  c = ((l <= 4) && (l >= 0));
-  c = ((l <= 4) && (l >= 0)) || (l > 20);
-}
-
-void test15(char c) {
-  c = c + 1 + c * 2;
-  c = (short) c + 1 + c * 2; // expected-warning {{implicit conversion loses integer precision}}
-}
-
-// PR 5422
-extern void *test16_external;
-void test16(void) {
-  int a = (unsigned long) &test16_external; // expected-warning {{implicit conversion loses integer precision}}
-}
-
-// PR 5938
-void test17() {
-  union {
-    unsigned long long a : 8;
-    unsigned long long b : 32;
-    unsigned long long c;
-  } U;
-
-  unsigned int x;
-  x = U.a;
-  x = U.b;
-  x = U.c; // expected-warning {{implicit conversion loses integer precision}} 
-}
-
-// PR 5939
-void test18() {
-  union {
-    unsigned long long a : 1;
-    unsigned long long b;
-  } U;
-
-  int x;
-  x = (U.a ? 0 : 1);
-  x = (U.b ? 0 : 1);
-}
-
-// None of these should warn.
-unsigned char test19(unsigned long u64) {
-  unsigned char x1 = u64 & 0xff;
-  unsigned char x2 = u64 >> 56;
-
-  unsigned char mask = 0xee;
-  unsigned char x3 = u64 & mask;
-  return x1 + x2 + x3;
-}
-
-// <rdar://problem/7631400>
-void test_7631400(void) {
-  // This should show up despite the caret being inside a macro substitution
-  char s = LONG_MAX; // expected-warning {{implicit conversion from 'long' to 'char' changes value}}
-}
-
-// <rdar://problem/7676608>: assertion for compound operators with non-integral RHS
-void f7676608(int);
-void test_7676608(void) {
-  float q = 0.7f;
-  char c = 5;
-  f7676608(c *= q);
-}
-
-// <rdar://problem/7904686>
-void test_7904686(void) {
-  const int i = -1;
-  unsigned u1 = i; // expected-warning {{implicit conversion changes signedness}}  
-  u1 = i; // expected-warning {{implicit conversion changes signedness}}  
-
-  unsigned u2 = -1; // expected-warning {{implicit conversion changes signedness}}  
-  u2 = -1; // expected-warning {{implicit conversion changes signedness}}  
-}
-
-// <rdar://problem/8232669>: don't warn about conversions required by
-// contexts in system headers
-void test_8232669(void) {
-  unsigned bitset[20];
-  SETBIT(bitset, 0);
-
-  unsigned y = 50;
-  SETBIT(bitset, y);
-
-#define USER_SETBIT(set,bit) do { int i = bit; set[i/(8*sizeof(set[0]))] |= (1 << (i%(8*sizeof(set)))); } while(0)
-  USER_SETBIT(bitset, 0); // expected-warning 2 {{implicit conversion changes signedness}}
-}
-
-// <rdar://problem/8559831>
-enum E8559831a { E8559831a_val };
-enum E8559831b { E8559831b_val };
-typedef enum { E8559831c_val } E8559831c;
-enum { E8559831d_val } value_d;
-
-void test_8559831_a(enum E8559831a value);
-void test_8559831(enum E8559831b value_a, E8559831c value_c) {
-  test_8559831_a(value_a); // expected-warning{{implicit conversion from enumeration type 'enum E8559831b' to different enumeration type 'enum E8559831a'}}
-  enum E8559831a a1 = value_a; // expected-warning{{implicit conversion from enumeration type 'enum E8559831b' to different enumeration type 'enum E8559831a'}}
-  a1 = value_a; // expected-warning{{implicit conversion from enumeration type 'enum E8559831b' to different enumeration type 'enum E8559831a'}}
-
-  test_8559831_a(E8559831b_val); // expected-warning{{implicit conversion from enumeration type 'enum E8559831b' to different enumeration type 'enum E8559831a'}}
-  enum E8559831a a1a = E8559831b_val; // expected-warning{{implicit conversion from enumeration type 'enum E8559831b' to different enumeration type 'enum E8559831a'}}
-  a1 = E8559831b_val; // expected-warning{{implicit conversion from enumeration type 'enum E8559831b' to different enumeration type 'enum E8559831a'}}
-  
-  test_8559831_a(value_c); // expected-warning{{implicit conversion from enumeration type 'E8559831c' to different enumeration type 'enum E8559831a'}}
-  enum E8559831a a2 = value_c; // expected-warning{{implicit conversion from enumeration type 'E8559831c' to different enumeration type 'enum E8559831a'}}
-  a2 = value_c; // expected-warning{{implicit conversion from enumeration type 'E8559831c' to different enumeration type 'enum E8559831a'}}
-  
-   test_8559831_a(value_d);
-   enum E8559831a a3 = value_d;
-   a3 = value_d;
-}
-
-void test26(int si, long sl) {
-  si = sl % sl; // expected-warning {{implicit conversion loses integer precision: 'long' to 'int'}}
-  si = sl % si;
-  si = si % sl;
-  si = si / sl;
-  si = sl / si; // expected-warning {{implicit conversion loses integer precision: 'long' to 'int'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/crash-invalid-array.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/crash-invalid-array.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/crash-invalid-array.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: not %clang_cc1 -O1 %s -emit-llvm
-// PR6913
-
-#include <stdio.h>
-
-int main()
-{
-   int x[10][10];
-   int (*p)[] = x; // expected-error {{invalid use of array with unspecified bounds}
-
-   int i;
-
-   for(i = 0; i < 10; ++i)
-   {
-       p[i][i] = i;
-   }
-}
-
-// rdar://13705391
-void foo(int a[*][2]) {(void)a[0][1]; } // expected-error {{variable length array must be bound in function definition}}
-void foo1(int a[2][*]) {(void)a[0][1]; } // expected-error {{variable length array must be bound in function definition}}
-void foo2(int a[*][*]) {(void)a[0][1]; } // expected-error {{variable length array must be bound in function definition}}
-void foo3(int a[2][*][2]) {(void)a[0][1][1]; } // expected-error {{variable length array must be bound in function definition}}
-void foo4(int a[2][*][*]) {(void)a[0][1][1]; } // expected-error {{variable length array must be bound in function definition}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/darwin-align-cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/darwin-align-cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/darwin-align-cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-typedef long unsigned int __darwin_size_t;
-typedef long __darwin_ssize_t;
-typedef __darwin_size_t size_t;
-typedef __darwin_ssize_t ssize_t;
-
-struct cmsghdr {};
-
-#if 0
-This code below comes from the following system headers:
-sys/socket.h:#define CMSG_SPACE(l) (__DARWIN_ALIGN(sizeof(struct  
-cmsghdr)) + __DARWIN_ALIGN(l))
-
-i386/_param.h:#define __DARWIN_ALIGN(p) ((__darwin_size_t)((char *)(p)  
-+ __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES)
-#endif
-
-ssize_t sendFileDescriptor(int fd, void *data, size_t nbytes, int sendfd) {
-  union {
-    char control[(((__darwin_size_t)((char *)(sizeof(struct cmsghdr)) + (sizeof(__darwin_size_t) - 1)) &~ (sizeof(__darwin_size_t) - 1)) + ((__darwin_size_t)((char *)(sizeof(int)) + (sizeof(__darwin_size_t) - 1)) &~ (sizeof(__darwin_size_t) - 1)))];
-  } control_un;
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/decl-in-prototype.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/decl-in-prototype.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/decl-in-prototype.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1_only -verify %s
-
-const int AA = 5;
-
-int f1(enum {AA,BB} E) {
-    return BB;
-}
-
-int f2(enum {AA=7,BB} E) {
-    return AA;
-}
-
-struct a {
-};
-
-int f3(struct a { } *); // expected-warning {{will not be visible outside of this function}}
-
-struct A { struct b { int j; } t; }; // expected-note {{previous definition is here}}
-
-int f4(struct A { struct b { int j; } t; } *); // expected-warning {{declaration of 'struct A' will not be visible outside of this function}} expected-warning {{redefinition of 'b' will not be visible outside of this function}}
-
-struct aA {
-    struct ab { // expected-note {{previous definition is here}} expected-note {{previous definition is here}}
-        int j;
-    } b;
-};
-
-int f5(struct aA { struct ab { int j; } b; struct ab { char glorx; } glorx; } *); // expected-warning {{declaration of 'struct aA' will not be visible}} expected-warning {{redefinition of 'ab' will not be visible}} expected-warning {{redefinition of 'ab' will not be visible}}
-
-void f6(struct z {int b;} c) { // expected-warning {{declaration of 'struct z' will not be visible outside of this function}}
-    struct z d;
-    d.b = 4;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/decl-invalid.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/decl-invalid.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/decl-invalid.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-// See Sema::ParsedFreeStandingDeclSpec about the double diagnostic
-typedef union <anonymous> __mbstate_t;  // expected-error {{declaration of anonymous union must be a definition}} expected-warning {{typedef requires a name}}
-
-
-// PR2017
-void x(); 
-int a() {
-  int r[x()];  // expected-error {{size of array has non-integer type 'void'}}
-
-  static y ?; // expected-error{{unknown type name 'y'}} \
-                 expected-error{{expected identifier or '('}}
-}
-
-int; // expected-warning {{declaration does not declare anything}}
-typedef int; // expected-warning {{typedef requires a name}}
-const int; // expected-warning {{declaration does not declare anything}}
-struct; // expected-error {{declaration of anonymous struct must be a definition}} // expected-warning {{declaration does not declare anything}}
-typedef int I;
-I; // expected-warning {{declaration does not declare anything}}
-
-
-
-// rdar://6880449
-register int test1;     // expected-error {{illegal storage class on file-scoped variable}}
-register int test2 __asm__("edi");  // expected-error {{global register variables are not supported}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/decl-type-merging.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/decl-type-merging.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/decl-type-merging.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c99 -verify -pedantic %s
-
-int x[10];
-int x[] = {1,2,3};
-int testx[(sizeof(x) == sizeof(int) * 10) ? 1 : -1];
-
-int (*a)(int (*x)[10], int (*y)[]);
-int (*a)(int (*x)[], int (*y)[5]);
-void b() {
-  int x[10], y[5];
-  a(&x, &y);
-  a(&y, &y); // expected-warning {{incompatible pointer}}
-  a(&x, &x); // expected-warning {{incompatible pointer}}
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/declspec.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/declspec.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/declspec.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-typedef char T[4];
-
-T foo(int n, int m) {  }  // expected-error {{cannot return array type}}
-
-void foof(const char *, ...) __attribute__((__format__(__printf__, 1, 2))), barf (void);
-
-int typedef validTypeDecl() { } // expected-error {{function definition declared 'typedef'}}
-
-struct _zend_module_entry { }    // expected-error {{expected ';' after struct}}
-int gv1;
-typedef struct _zend_function_entry { } // expected-error {{expected ';' after struct}} \
-                                        // expected-warning {{typedef requires a name}}
-int gv2;
-
-static void buggy(int *x) { }
-
-// Type qualifiers.
-typedef int f(void); 
-typedef f* fptr;
-const f* v1;         // expected-warning {{qualifier on function type 'f' (aka 'int (void)') has unspecified behavior}}
-__restrict__ f* v2;  // expected-error {{restrict requires a pointer or reference ('f' (aka 'int (void)') is invalid)}}
-__restrict__ fptr v3; // expected-error {{pointer to function type 'f' (aka 'int (void)') may not be 'restrict' qualified}}
-f *__restrict__ v4;   // expected-error {{pointer to function type 'f' (aka 'int (void)') may not be 'restrict' qualified}}
-
-restrict struct hallo; // expected-error {{restrict requires a pointer or reference}}
-
-// PR6180
-struct test1 {
-} // expected-error {{expected ';' after struct}}
-
-void test2() {}
-
-
-// PR6423
-struct test3s {
-} // expected-error {{expected ';' after struct}}
-typedef int test3g;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/default.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/default.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/default.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f5 (int z) { 
-  if (z) 
-    default:  // expected-error {{not in switch statement}}
-      ;
-} 
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/default1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/default1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/default1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-void f(int i = 0); // expected-error {{C does not support default arguments}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/deref.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/deref.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/deref.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only -verify -std=c90 -pedantic %s
- */
-void
-foo (void)
-{
- struct b;
- struct b* x = 0;
- struct b* y = &*x;
-}
-
-void foo2 (void)
-{
- typedef int (*arrayptr)[];
- arrayptr x = 0;
- arrayptr y = &*x;
-}
-
-void foo3 (void)
-{
- void* x = 0;
- void* y = &*x; /* expected-warning{{address of an expression of type 'void'}} */
-}
-
-extern const void cv1;
-
-const void *foo4 (void)
-{
-  return &cv1;
-}
-
-extern void cv2;
-void *foo5 (void)
-{
-  return &cv2; /* expected-warning{{address of an expression of type 'void'}} */
-}
-
-typedef const void CVT;
-extern CVT cv3;
-
-const void *foo6 (void)
-{
-  return &cv3;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/designated-initializers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/designated-initializers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/designated-initializers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,279 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-unknown-unknown %s
-
-int complete_array_from_init[] = { 1, 2, [10] = 5, 1, 2, [5] = 2, 6 };
-
-int complete_array_from_init_check[((sizeof(complete_array_from_init) / sizeof(int)) == 13)? 1 : -1];
-
-int iarray[10] = {
-  [0] = 1,
-  [1 ... 5] = 2,
-  [ 6 ... 6 ] = 3,
-  [ 8 ... 7 ] = 4, // expected-error{{array designator range [8, 7] is empty}}
-  [10] = 5,
-  [-1] = 6 // expected-error{{array designator value '-1' is negative}}
-};
-
-int iarray2[10] = {
-  [10] = 1, // expected-error{{array designator index (10) exceeds array bounds (10)}}
-};
-
-int iarray3[10] = {
-  [3] 2, // expected-warning{{use of GNU 'missing =' extension in designator}}
-  [5 ... 12] = 2 // expected-error{{array designator index (12) exceeds array bounds (10)}}
-};
-
-struct point {
-  double x;
-  double y;
-};
-
-struct point p1 = { 
-  .y = 1.0, 
-  x: 2.0, // expected-warning{{}}
-  .a = 4.0, // expected-error{{field designator 'a' does not refer to any field in type 'struct point'}}
-};
-
-struct point p2 = {
-  [1] = 1.0 // expected-error{{array designator cannot initialize non-array type}}
-};
-
-struct point array[10] = { 
-  [0].x = 1.0,
-  [1].y = 2.0,
-  [2].z = 3.0, // expected-error{{field designator 'z' does not refer to any field in type 'struct point'}}
-};
-
-struct point array2[10] = {
-  [10].x = 2.0, // expected-error{{array designator index (10) exceeds array bounds (10)}}
-  [4 ... 5].y = 2.0,
-  [4 ... 6] = { .x = 3, .y = 4.0 }
-};
-
-struct point array3[10] = {
-  .x = 5 // expected-error{{field designator cannot initialize a non-struct, non-union type}}
-};
-
-struct rect {
-  struct point top_left;
-  struct point bottom_right;
-};
-
-struct rect window = { .top_left.x = 1.0 };
-
-struct rect windows[] = {
-  [2].top_left = { 1.0, 2.0 },
-  [4].bottom_right = { .y = 1.0 },
-  { { .y = 7.0, .x = 8.0 }, { .x = 5.0 } },
-  [3] = { .top_left = { 1.1, 2.2 }, .bottom_right = { .y = 1.1 } }
-};
-
-int windows_size[((sizeof(windows) / sizeof(struct rect)) == 6)? 1 : -1];
-
-struct rect windows_bad[3] = {
-  [2].top_left = { { .x = 1.1 } }, // expected-error{{designator in initializer for scalar type}}
-  [1].top_left = { .x = 1.1 }
-};
-
-struct gui {
-  struct rect windows[10];
-};
-
-struct gui gui[] = {
-  [5].windows[3].top_left.x = { 7.0 } // expected-warning{{braces around scalar initializer}}
-};
-
-struct translator {
-  struct wonky { int * ptr; } wonky ;
-  struct rect window;
-  struct point offset;
-} tran = {
-  .window = { .top_left = { 1.0, 2.0 } },
-  { .x = 5.0, .y = 6.0 },
-  .wonky = { 0 }
-};
-
-int anint;
-struct {int x,*y;} z[] = {[0].x = 2, &z[0].x};
-
-struct outer { struct inner { int x, *y; } in, *inp; } zz[] = {
-  [0].in.x = 2, &zz[0].in.x, &zz[0].in,
-  0, &anint, &zz[1].in,
-  [3].in = { .y = &anint, .x = 17 },
-  [7].in.y = &anint, &zz[0].in,
-  [4].in.y = &anint, [5].in.x = 12
-};
-
-int zz_sizecheck[sizeof(zz) / sizeof(struct outer) == 8? 1 : -1 ];
-
-struct disklabel_ops {
-  struct {} type;
-  int labelsize;
-};
-
-struct disklabel_ops disklabel64_ops = {
-  .labelsize = sizeof(struct disklabel_ops)
-};
-
-// PR clang/3378
-int bitwidth[] = { [(long long int)1] = 5, [(short int)2] = 2 };
-int a[]= { [sizeof(int)] = 0 };
-int a2[]= { [0 ... sizeof(int)] = 0 };
-
-// Test warnings about initializers overriding previous initializers
-struct X {
-  int a, b, c;
-};
-
-int counter = 0;
-int get8() { ++counter; return 8; }
-
-void test() {
-  struct X xs[] = { 
-    [0] = (struct X){1, 2}, // expected-note{{previous initialization is here}}
-    [0].c = 3,  // expected-warning{{subobject initialization overrides initialization of other fields within its enclosing subobject}}
-    (struct X) {4, 5, 6}, // expected-note{{previous initialization is here}}
-    [1].b = get8(), // expected-warning{{subobject initialization overrides initialization of other fields within its enclosing subobject}}
-    [0].b = 8
-  };
-}
-
-// FIXME: How do we test that this initializes the long properly?
-union { char c; long l; } u1 = { .l = 0xFFFF };
-
-extern float global_float;
-
-struct XX { int a, *b; };
-struct XY { int before; struct XX xx, *xp; float* after; } xy[] = {
-  0, 0, &xy[0].xx.a, &xy[0].xx, &global_float,
-  [1].xx = 0, &xy[1].xx.a, &xy[1].xx, &global_float,
-  0, // expected-note{{previous initialization is here}}
-  0, // expected-note{{previous initialization is here}}
-  [2].before = 0, // expected-warning{{initializer overrides prior initialization of this subobject}}
-  0, // expected-warning{{initializer overrides prior initialization of this subobject}}
-  &xy[2].xx.a, &xy[2].xx, &global_float
-};
-
-// PR3519
-struct foo {
-  int arr[10];
-};
-
-struct foo Y[10] = {
-  [1] .arr [1] = 2,
-  [4] .arr [2] = 4
-};
-
-struct bar {
-  struct foo f;
-  float *arr[10];
-};
-
-extern float f;
-struct bar saloon = {
-  .f.arr[3] = 1,
-  .arr = { &f }
-};
-
-typedef unsigned char u_char;
-typedef unsigned short u_short;
-
-union wibble {
-        u_char  arr1[6];
-        u_short arr2[3];
-};
-
-const union wibble wobble = { .arr2[0] = 0xffff,
-                              .arr2[1] = 0xffff,
-                              .arr2[2] = 0xffff };
-
-const union wibble wobble2 = { .arr2 = {4, 5, 6}, 7 }; // expected-warning{{excess elements in union initializer}}
-
-// PR3778
-struct s {
-    union { int i; };
-};
-struct s si = {
-    { .i = 1 }
-};
-
-double d0;
-char c0;
-float f0;
-int i0;
-
-struct Enigma {
-  union {
-    struct {
-      struct {
-        double *double_ptr;
-        char *string;
-      };
-      float *float_ptr;
-    };
-    int *int_ptr;
-  };
-  char *string2;
-};
-
-struct Enigma enigma = { 
-  .double_ptr = &d0, &c0, 
-  &f0, // expected-note{{previous}}
-  &c0,
-  .float_ptr = &f0 // expected-warning{{overrides}}
-};
-
-
-/// PR4073
-/// Should use evaluate to fold aggressively and emit a warning if not an ice.
-extern int crazy_x;
-
-int crazy_Y[] = {
-  [ 0 ? crazy_x : 4] = 1
-};
-
-// PR5843
-struct expr {
-  int nargs;
-  union {
-    unsigned long int num;
-    struct expr *args[3];
-  } val;
-};
-
-struct expr expr0 = { 
-  .nargs = 2,
-  .val = {
-    .args = { 
-      [0] = (struct expr *)0, 
-      [1] = (struct expr *)0 
-    }
-  }
-};
-
-// PR6955
-
-struct ds {
-  struct {
-    struct {
-      unsigned int a;
-    };
-    unsigned int b;
-    struct {
-      unsigned int c;
-    };
-  };
-};
-
-// C1X lookup-based anonymous member init cases
-struct ds ds0 = {
-  { {
-      .a = 1 // expected-note{{previous initialization is here}}
-    } },
-  .a = 2, // expected-warning{{initializer overrides prior initialization of this subobject}}
-  .b = 3
-};
-struct ds ds1 = { .c = 0 };
-struct ds ds2 = { { {
-    .a = 0,
-    .b = 1 // expected-error{{field designator 'b' does not refer to any field}}
-} } };

Modified: trunk/contrib/llvm/tools/clang/test/Sema/dllimport-dllexport.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/dllimport-dllexport.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/dllimport-dllexport.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -triple i386-mingw32 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -triple x86_64-mingw32 -fsyntax-only -verify %s
-
-inline void __attribute__((dllexport)) foo1(){} // expected-warning{{dllexport attribute ignored}}
-inline void __attribute__((dllimport)) foo2(){} // expected-warning{{dllimport attribute ignored}}
-
-void __attribute__((dllimport)) foo3(){} // expected-error{{dllimport attribute can be applied only to symbol declaration}}
-
-void __attribute__((dllimport, dllexport)) foo4(); // expected-warning{{dllimport attribute ignored}}
-
-void __attribute__((dllexport)) foo5();
-void __attribute__((dllimport)) foo5(); // expected-warning{{dllimport attribute ignored}}
-
-typedef int __attribute__((dllexport)) type6; // expected-warning{{'dllexport' attribute only applies to variables and functions}}
-
-typedef int __attribute__((dllimport)) type7; // expected-warning{{'dllimport' attribute only applies to variables and functions}}
-
-void __attribute__((dllimport)) foo6();
-void foo6(){} // expected-warning {{'foo6' redeclared without dllimport attribute: previous dllimport ignored}}
-
-// PR6269
-inline void __declspec(dllexport) foo7(){} // expected-warning{{dllexport attribute ignored}}
-inline void __declspec(dllimport) foo8(){} // expected-warning{{dllimport attribute ignored}}
-
-void __declspec(dllimport) foo9(){} // expected-error{{dllimport attribute can be applied only to symbol declaration}}
-
-void __declspec(dllimport) __declspec(dllexport) foo10(); // expected-warning{{dllimport attribute ignored}}
-
-void __declspec(dllexport) foo11();
-void __declspec(dllimport) foo11(); // expected-warning{{dllimport attribute ignored}}
-
-typedef int __declspec(dllexport) type1; // expected-warning{{'dllexport' attribute only applies to variables and functions}}
-
-typedef int __declspec(dllimport) type2; // expected-warning{{'dllimport' attribute only applies to variables and functions}}
-
-void __declspec(dllimport) foo12();
-void foo12(){} // expected-warning {{'foo12' redeclared without dllimport attribute: previous dllimport ignored}}
-
-void __attribute__((dllimport)) foo13(); // expected-warning{{dllimport attribute ignored}}
-void __attribute__((dllexport)) foo13();
-
-extern int foo14 __attribute__((dllexport));
-extern int foo14 __attribute__((dllimport));  // expected-warning{{dllimport attribute ignored}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/enum-packed.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/enum-packed.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/enum-packed.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR7477
-enum __attribute__((packed)) E {
-  Ea, Eb, Ec, Ed
-};
-
-void test_E(enum E e) {
-  switch (e) {
-  case Ea:
-  case Eb:
-  case Ec:
-  case Ed:
-    break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,121 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
-enum e {A, 
-        B = 42LL << 32,        // expected-warning {{ISO C restricts enumerator values to range of 'int'}}
-      C = -4, D = 12456 };
-
-enum f { a = -2147483648, b = 2147483647 }; // ok.
-
-enum g {  // too negative
-   c = -2147483649,         // expected-warning {{ISO C restricts enumerator values to range of 'int'}}
-   d = 2147483647 };
-enum h { e = -2147483648, // too pos
-   f = 2147483648,           // expected-warning {{ISO C restricts enumerator values to range of 'int'}}
-  i = 0xFFFF0000 // expected-warning {{too large}}
-}; 
-
-// minll maxull
-enum x                      // expected-warning {{enumeration values exceed range of largest integer}}
-{ y = -9223372036854775807LL-1,  // expected-warning {{ISO C restricts enumerator values to range of 'int'}}
-z = 9223372036854775808ULL };    // expected-warning {{ISO C restricts enumerator values to range of 'int'}}
-
-int test() {
-  return sizeof(enum e) ;
-}
-
-enum gccForwardEnumExtension ve; // expected-warning{{ISO C forbids forward references to 'enum' types}} \
-// expected-error{{tentative definition has type 'enum gccForwardEnumExtension' that is never completed}} \
-// expected-note{{forward declaration of 'enum gccForwardEnumExtension'}}
-
-int test2(int i)
-{
-  ve + i; // expected-error{{invalid operands to binary expression}}
-}
-
-// PR2020
-union u0;    // expected-note {{previous use is here}}
-enum u0 { U0A }; // expected-error {{use of 'u0' with tag type that does not match previous declaration}}
-
-
-// rdar://6095136
-extern enum some_undefined_enum ve2; // expected-warning {{ISO C forbids forward references to 'enum' types}}
-
-void test4() {
-  for (; ve2;) // expected-error {{statement requires expression of scalar type}}
-    ;
-  (_Bool)ve2;  // expected-error {{arithmetic or pointer type is required}}
-
-  for (; ;ve2) // expected-warning {{expression result unused}}
-    ;
-  (void)ve2;
-  ve2;         // expected-warning {{expression result unused}}
-}
-
-// PR2416
-enum someenum {};  // expected-error {{use of empty enum}}
-
-// <rdar://problem/6093889>
-enum e0 { // expected-note {{previous definition is here}}
-  E0 = sizeof(enum e0 { E1 }), // expected-error {{nested redefinition}}
-};
-
-// PR3173
-enum { PR3173A, PR3173B = PR3173A+50 };
-
-// PR2753
-void foo() {
-  enum xpto; // expected-warning{{ISO C forbids forward references to 'enum' types}}
-  enum xpto; // expected-warning{{ISO C forbids forward references to 'enum' types}}
-}
-
-// <rdar://problem/6503878>
-typedef enum { X = 0 }; // expected-warning{{typedef requires a name}}
-
-
-enum NotYetComplete { // expected-note{{definition of 'enum NotYetComplete' is not complete until the closing '}'}}
-  NYC1 = sizeof(enum NotYetComplete) // expected-error{{invalid application of 'sizeof' to an incomplete type 'enum NotYetComplete'}}
-};
-
-/// PR3688
-struct s1 {
-  enum e1 (*bar)(void); // expected-warning{{ISO C forbids forward references to 'enum' types}}
-};
-
-enum e1 { YES, NO };
-
-static enum e1 badfunc(struct s1 *q) {
-  return q->bar();
-}
-
-
-// Make sure we don't a.k.a. anonymous enums.
-typedef enum {
-  an_enumerator = 20
-} an_enum;
-char * s = (an_enum) an_enumerator; // expected-warning {{incompatible integer to pointer conversion initializing 'char *' with an expression of type 'an_enum'}}
-
-// PR4515
-enum PR4515 {PR4515a=1u,PR4515b=(PR4515a-2)/2};
-int CheckPR4515[PR4515b==0?1:-1];
-
-// PR7911
-extern enum PR7911T PR7911V; // expected-warning{{ISO C forbids forward references to 'enum' types}}
-void PR7911F() {
-  switch (PR7911V); // expected-error {{statement requires expression of integer type}}
-}
-
-char test5[__has_feature(enumerator_attributes) ? 1 : -1];
-
-// PR8694
-// rdar://8707031
-void PR8694(int* e) // expected-note {{passing argument to parameter 'e' here}}
-{
-}
-
-void crash(enum E* e) // expected-warning {{declaration of 'enum E' will not be visible outside of this function}} \
-                      // expected-warning {{ISO C forbids forward references to 'enum' types}}
-{
-        PR8694(e); // expected-warning {{incompatible pointer types passing 'enum E *' to parameter of type 'int *'}}
-}
-
-typedef enum { NegativeShort = (short)-1 } NegativeShortEnum;
-int NegativeShortTest[NegativeShort == -1 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/expr-address-of.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/expr-address-of.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/expr-address-of.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-struct xx { int bitf:1; };
-
-struct entry { struct xx *whatever; 
-               int value; 
-               int bitf:1; };
-void add_one(int *p) { (*p)++; }
-
-void test() {
- register struct entry *p;
- add_one(&p->value);
- struct entry pvalue;
- add_one(&p->bitf);  // expected-error {{address of bit-field requested}}
- add_one(&pvalue.bitf); // expected-error {{address of bit-field requested}}
- add_one(&p->whatever->bitf); // expected-error {{address of bit-field requested}}
-}
-
-void foo() {
-  register int x[10];
-  &x[10];              // expected-error {{address of register variable requested}}
-    
-  register int *y;
-  
-  int *x2 = &y; // expected-error {{address of register variable requested}}
-  int *x3 = &y[10];
-}
-
-void testVectorComponentAccess() {
-  typedef float v4sf __attribute__ ((vector_size (16)));
-  static v4sf q;
-  float* r = &q[0]; // expected-error {{address of vector element requested}}
-}
-
-typedef __attribute__(( ext_vector_type(4) ))  float float4;
-
-float *testExtVectorComponentAccess(float4 x) { 
-  return &x.w; // expected-error {{address of vector element requested}}
-}
-
-void f0() {
-  register int *x0;
-  int *_dummy0 = &(*x0);
-
-  register int *x1;
-  int *_dummy1 = &(*(x1 + 1));
-}
-
-// FIXME: The checks for this function are broken; we should error
-// on promoting a register array to a pointer! (C99 6.3.2.1p3)
-void f1() {
-  register int x0[10];
-  int *_dummy00 = x0; // fixme-error {{address of register variable requested}}
-  int *_dummy01 = &(*x0); // fixme-error {{address of register variable requested}}
-
-  register int x1[10];
-  int *_dummy1 = &(*(x1 + 1)); // fixme-error {{address of register variable requested}}
-
-  register int *x2;
-  int *_dummy2 = &(*(x2 + 1));
-
-  register int x3[10][10][10];
-  int (*_dummy3)[10] = &x3[0][0]; // expected-error {{address of register variable requested}}
-
-  register struct { int f0[10]; } x4;
-  int *_dummy4 = &x4.f0[2]; // expected-error {{address of register variable requested}}
-}
-
-void f2() {
-  register int *y;
-  
-  int *_dummy0 = &y; // expected-error {{address of register variable requested}}
-  int *_dummy1 = &y[10];
-}
-
-void f3() {
-  extern void f4();
-  void (*_dummy0)() = &****f4;
-}
-
-void f4() {
-  register _Complex int x;
-  
-  int *_dummy0 = &__real__ x; // expected-error {{address of register variable requested}}
-}
-
-void f5() {
-  register int arr[2];
-
-  /* This is just here because if we happened to support this as an
-     lvalue we would need to give a warning. Note that gcc warns about
-     this as a register before it warns about it as an invalid
-     lvalue. */
-  int *_dummy0 = &(int*) arr; // expected-error {{cannot take the address of an rvalue}}
-  int *_dummy1 = &(arr + 1); // expected-error {{cannot take the address of an rvalue}}
-}
-
-void f6(register int x) {
-  int * dummy0 = &x; // expected-error {{address of register variable requested}}
-}
-
-char* f7() {
-  register struct {char* x;} t1 = {"Hello"};
-  char* dummy1 = &(t1.x[0]);
-
-  struct {int a : 10;} t2;
-  int* dummy2 = &(t2.a); // expected-error {{address of bit-field requested}}
-
-  void* t3 = &(*(void*)0);
-}
-
-void f8() {
-  void *dummy0 = &f8(); // expected-error {{cannot take the address of an rvalue of type 'void'}}
-
-  extern void v;
-  void *dummy1 = &(1 ? v : f8()); // expected-error {{cannot take the address of an rvalue of type 'void'}}
-
-  void *dummy2 = &(f8(), v); // expected-error {{cannot take the address of an rvalue of type 'void'}}
-
-  void *dummy3 = &({ ; }); // expected-error {{cannot take the address of an rvalue of type 'void'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/expr-comma-c99.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/expr-comma-c99.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/expr-comma-c99.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -std=c99 -Wno-sizeof-array-decay
-// expected-no-diagnostics
-// rdar://6095180
-
-struct s { char c[17]; };
-extern struct s foo(void);
-
-struct s a, b, c;
-
-int A[sizeof((foo().c)) == 17 ? 1 : -1];
-int B[sizeof((a.c)) == 17 ? 1 : -1];
-
-
-// comma does array/function promotion in c99.
-int X[sizeof(0, (foo().c)) == sizeof(char*) ? 1 : -1];
-int Y[sizeof(0, (a,b).c) == sizeof(char*) ? 1 : -1];
-int Z[sizeof(0, (a=b).c) == sizeof(char*) ? 1 : -1];
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/expr-comma.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/expr-comma.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/expr-comma.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -std=c89 -Wno-sizeof-array-decay
-// expected-no-diagnostics
-// rdar://6095180
-
-struct s { char c[17]; };
-extern struct s foo(void);
-
-struct s a, b, c;
-
-int A[sizeof((foo().c)) == 17 ? 1 : -1];
-int B[sizeof((a.c)) == 17 ? 1 : -1];
-
-
-// comma does not promote array/function in c90 unless they are lvalues.
-int W[sizeof(0, a.c) == sizeof(char*) ? 1 : -1];
-int X[sizeof(0, (foo().c)) == 17 ? 1 : -1];
-int Y[sizeof(0, (a,b).c) == 17 ? 1 : -1];
-int Z[sizeof(0, (a=b).c) == 17 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/exprs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/exprs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/exprs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,249 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-
-// PR 8876 - don't warn about trivially unreachable null derefs.  Note that
-// we put this here because the reachability analysis only kicks in for
-// suppressing false positives when code has no errors.
-#define PR8876(err_ptr) do {\
-    if (err_ptr) *(int*)(err_ptr) = 1;\
-  } while (0)
-
-#define PR8876_pos(err_ptr) do {\
-    if (!err_ptr) *(int*)(err_ptr) = 1;\
-  } while (0)
-
-
-// Test that we don't report divide-by-zero errors in unreachable code.
-// This test should be left as is, as it also tests CFG functionality.
-void radar9171946() {
-  if (0) {
-    0 / (0 ? 1 : 0); // expected-warning {{expression result unused}}
-  }
-}
-
-int test_pr8876() {
-  PR8876(0); // no-warning
-  PR8876_pos(0); // expected-warning{{indirection of non-volatile null pointer will be deleted, not trap}} expected-note{{consider using __builtin_trap() or qualifying pointer with 'volatile'}}
-  return 0;
-}
-
-// PR 8183 - Handle null pointer constants on the left-side of the '&&', and reason about
-// this when determining the reachability of the null pointer dereference on the right side.
-void pr8183(unsigned long long test)
-{
-  (void)((((void*)0)) && (*((unsigned long long*)(((void*)0))) = ((unsigned long long)((test)) % (unsigned long long)((1000000000)))));  // no-warning
-  (*((unsigned long long*)(((void*)0))) = ((unsigned long long)((test)) % (unsigned long long)((1000000000)))); // expected-warning {{indirection of non-volatile null pointer will be deleted, not trap}} expected-note {{consider using __builtin_trap() or qualifying pointer with 'volatile'}}
-}
-
-// PR1966
-_Complex double test1() {
-  return __extension__ 1.0if;
-}
-
-_Complex double test2() {
-  return 1.0if;    // expected-warning {{imaginary constants are a GNU extension}}
-}
-
-// rdar://6097308
-void test3() {
-  int x;
-  (__extension__ x) = 10;
-}
-
-// rdar://6162726
-void test4() {
-      static int var;
-      var =+ 5;  // expected-warning {{use of unary operator that may be intended as compound assignment (+=)}}
-      var =- 5;  // expected-warning {{use of unary operator that may be intended as compound assignment (-=)}}
-      var = +5;  // no warning when space between the = and +.
-      var = -5;
-
-      var =+5;  // no warning when the subexpr of the unary op has no space before it.
-      var =-5;
-  
-#define FIVE 5
-      var=-FIVE;  // no warning with macros.
-      var=-FIVE;
-}
-
-// rdar://6319320
-void test5(int *X, float *P) {
-  (float*)X = P;   // expected-error {{assignment to cast is illegal, lvalue casts are not supported}}
-#define FOO ((float*) X)
-  FOO = P;   // expected-error {{assignment to cast is illegal, lvalue casts are not supported}}
-}
-
-void test6() {
-  int X;
-  X();  // expected-error {{called object type 'int' is not a function or function pointer}}
-}
-
-void test7(int *P, _Complex float Gamma) {
-   P = (P-42) + Gamma*4;  // expected-error {{invalid operands to binary expression ('int *' and '_Complex float')}}
-}
-
-
-// rdar://6095061
-int test8(void) {
-  int i;
-  __builtin_choose_expr (0, 42, i) = 10;
-  return i;
-}
-
-
-// PR3386
-struct f { int x : 4;  float y[]; };
-int test9(struct f *P) {
-  int R;
-  R = __alignof(P->x);  // expected-error {{invalid application of 'alignof' to bit-field}}
-  R = __alignof(P->y);   // ok.
-  R = sizeof(P->x); // expected-error {{invalid application of 'sizeof' to bit-field}}
-  return R;
-}
-
-// PR3562
-void test10(int n,...) {
-  struct S {
-    double          a[n];  // expected-error {{fields must have a constant size}}
-  }               s;
-  double x = s.a[0];  // should not get another error here.
-}
-
-
-#define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
-
-struct mystruct {int A; };
-void test11(struct mystruct P, float F) {
-  MYMAX(P, F);  // expected-error {{invalid operands to binary expression ('typeof (P)' (aka 'struct mystruct') and 'typeof (F)' (aka 'float'))}}
-}
-
-// PR3753
-int test12(const char *X) {
-  return X == "foo";  // expected-warning {{comparison against a string literal is unspecified (use strncmp instead)}}
-}
-
-int test12b(const char *X) {
-  return sizeof(X == "foo"); // no-warning
-}
-
-// rdar://6719156
-void test13(
-            void (^P)()) { // expected-error {{blocks support disabled - compile with -fblocks}}
-  P();
-  P = ^(){}; // expected-error {{blocks support disabled - compile with -fblocks}}
-}
-
-void test14() {
-  typedef long long __m64 __attribute__((__vector_size__(8)));
-  typedef short __v4hi __attribute__((__vector_size__(8)));
-
-  // Ok.
-  __v4hi a;
-  __m64 mask = (__m64)((__v4hi)a > (__v4hi)a);
-}
-
-
-// PR5242
-typedef unsigned long *test15_t;
-
-test15_t test15(void) {
-  return (test15_t)0 + (test15_t)0;  // expected-error {{invalid operands to binary expression ('test15_t' (aka 'unsigned long *') and 'test15_t')}}
-}
-
-// rdar://7446395
-void test16(float x) { x == ((void*) 0); }  // expected-error {{invalid operands to binary expression}}
-
-// PR6004
-void test17(int x) {
-  x = x / 0;  // expected-warning {{division by zero is undefined}}
-  x = x % 0;  // expected-warning {{remainder by zero is undefined}}
-  x /= 0;  // expected-warning {{division by zero is undefined}}
-  x %= 0;  // expected-warning {{remainder by zero is undefined}}
-  
-  x = sizeof(x/0);  // no warning.
-}
-
-// PR6501 & PR11857
-void test18_a(int a); // expected-note 2 {{'test18_a' declared here}}
-void test18_b(int); // expected-note {{'test18_b' declared here}}
-void test18_c(int a, int b); // expected-note 2 {{'test18_c' declared here}}
-void test18_d(int a, ...); // expected-note {{'test18_d' declared here}}
-void test18_e(int a, int b, ...); // expected-note {{'test18_e' declared here}}
-void test18(int b) {
-  test18_a(b, b); // expected-error {{too many arguments to function call, expected single argument 'a', have 2}}
-  test18_a(); // expected-error {{too few arguments to function call, single argument 'a' was not specified}}
-  test18_b(); // expected-error {{too few arguments to function call, expected 1, have 0}}
-  test18_c(b); // expected-error {{too few arguments to function call, expected 2, have 1}}
-  test18_c(b, b, b); // expected-error {{too many arguments to function call, expected 2, have 3}}
-  test18_d(); // expected-error {{too few arguments to function call, at least argument 'a' must be specified}}
-  test18_e(); // expected-error {{too few arguments to function call, expected at least 2, have 0}}
-}
-
-// PR7569
-void test19() {
-  *(int*)0 = 0;   // expected-warning {{indirection of non-volatile null pointer}} \
-                  // expected-note {{consider using __builtin_trap}}
-  *(volatile int*)0 = 0;  // Ok.
-
-  // rdar://9269271
-  int x = *(int*)0;  // expected-warning {{indirection of non-volatile null pointer}} \
-                     // expected-note {{consider using __builtin_trap}}
-  int x2 = *(volatile int*)0; // Ok.
-  int *p = &(*(int*)0); // Ok;
-}
-
-int test20(int x) {
-  return x && 4; // expected-warning {{use of logical '&&' with constant operand}} \
-                 // expected-note {{use '&' for a bitwise operation}} \
-                 // expected-note {{remove constant to silence this warning}}
-
-  return x && sizeof(int) == 4;  // no warning, RHS is logical op.
-  
-  // no warning, this is an idiom for "true" in old C style.
-  return x && (signed char)1;
-
-  return x || 0;
-  return x || 1;
-  return x || -1; // expected-warning {{use of logical '||' with constant operand}} \
-                  // expected-note {{use '|' for a bitwise operation}}
-  return x || 5; // expected-warning {{use of logical '||' with constant operand}} \
-                 // expected-note {{use '|' for a bitwise operation}}
-  return x && 0;
-  return x && 1;
-  return x && -1; // expected-warning {{use of logical '&&' with constant operand}} \
-                  // expected-note {{use '&' for a bitwise operation}} \
-                  // expected-note {{remove constant to silence this warning}}
-  return x && 5; // expected-warning {{use of logical '&&' with constant operand}} \
-                 // expected-note {{use '&' for a bitwise operation}} \
-                 // expected-note {{remove constant to silence this warning}}
-  return x || (0);
-  return x || (1);
-  return x || (-1); // expected-warning {{use of logical '||' with constant operand}} \
-                    // expected-note {{use '|' for a bitwise operation}}
-  return x || (5); // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x && (0);
-  return x && (1);
-  return x && (-1); // expected-warning {{use of logical '&&' with constant operand}} \
-                    // expected-note {{use '&' for a bitwise operation}} \
-                    // expected-note {{remove constant to silence this warning}}
-  return x && (5); // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-
-}
-
-struct Test21; // expected-note 2 {{forward declaration}}
-void test21(volatile struct Test21 *ptr) {
-  void test21_help(void);
-  (test21_help(), *ptr); // expected-error {{incomplete type 'struct Test21' where a complete type is required}}
-  (*ptr, test21_help()); // expected-error {{incomplete type 'struct Test21' where a complete type is required}}
-}
-
-// Make sure we do function/array decay.
-void test22() {
-  if ("help")
-    (void) 0;
-
-  if (test22)
-    (void) 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_casts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_casts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_casts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fno-lax-vector-conversions %s
-
-typedef __attribute__(( ext_vector_type(2) )) float float2;
-typedef __attribute__(( ext_vector_type(4) )) int int4;
-typedef __attribute__(( ext_vector_type(8) )) short short8;
-typedef __attribute__(( ext_vector_type(4) )) float float4;
-typedef float t3 __attribute__ ((vector_size (16)));
-
-static void test() {
-    float2 vec2;
-    float4 vec4, vec4_2;
-    int4 ivec4;
-    short8 ish8;
-    t3 vec4_3;
-    int *ptr;
-    int i;
-    
-    vec4 = 5.0f;
-    vec4 = (float4)5.0f;
-    vec4 = (float4)5;
-    vec4 = (float4)vec4_3;
-    
-    ivec4 = (int4)5.0f;
-    ivec4 = (int4)5;
-    ivec4 = (int4)vec4_3;
-    
-    i = (int)ivec4; // expected-error {{invalid conversion between vector type 'int4' and integer type 'int' of different size}}
-    i = ivec4; // expected-error {{assigning to 'int' from incompatible type 'int4'}}
-    
-    ivec4 = (int4)ptr; // expected-error {{invalid conversion between vector type 'int4' and scalar type 'int *'}}
-    
-    vec4 = (float4)vec2; // expected-error {{invalid conversion between ext-vector type 'float4' and 'float2'}}
-    
-    ish8 += 5; // expected-error {{can't convert between vector values of different size ('short8' and 'int')}}
-    ish8 += (short)5;
-    ivec4 *= 5;
-     vec4 /= 5.2f;
-     vec4 %= 4; // expected-error {{invalid operands to binary expression ('float4' and 'int')}}
-    ivec4 %= 4;
-    ivec4 += vec4; // expected-error {{can't convert between vector values of different size ('int4' and 'float4')}}
-    ivec4 += (int4)vec4;
-    ivec4 -= ivec4;
-    ivec4 |= ivec4;
-    ivec4 += ptr; // expected-error {{can't convert between vector values of different size ('int4' and 'int *')}}
-}
-
-typedef __attribute__(( ext_vector_type(2) )) float2 vecfloat2; // expected-error{{invalid vector element type 'float2'}}
-
-void inc(float2 f2) {
-  f2++; // expected-error{{cannot increment value of type 'float2'}}
-  __real f2; // expected-error{{invalid type 'float2' to __real operator}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_comparisons.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_comparisons.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_comparisons.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-unreachable-code %s
-
-typedef __attribute__(( ext_vector_type(4) )) int int4;
-
-static int4 test1() {
-  int4 vec, rv;
-
-  // comparisons to self...
-  return vec == vec; // expected-warning{{self-comparison always evaluates to a constant}}
-  return vec != vec; // expected-warning{{self-comparison always evaluates to a constant}}
-  return vec < vec; // expected-warning{{self-comparison always evaluates to a constant}}
-  return vec <= vec; // expected-warning{{self-comparison always evaluates to a constant}}
-  return vec > vec; // expected-warning{{self-comparison always evaluates to a constant}}
-  return vec >= vec; // expected-warning{{self-comparison always evaluates to a constant}}
-}
-
-
-typedef __attribute__(( ext_vector_type(4) )) float float4;
-
-static int4 test2() {
-  float4 vec, rv;
-
-  // comparisons to self.  no warning, they're floats
-  return vec == vec; // no-warning
-  return vec != vec; // no-warning
-  return vec < vec;  // no-warning
-  return vec <= vec; // no-warning
-  return vec > vec;  // no-warning
-  return vec >= vec; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_components.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_components.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ext_vector_components.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef __attribute__(( ext_vector_type(2) )) float float2;
-typedef __attribute__(( ext_vector_type(3) )) float float3;
-typedef __attribute__(( ext_vector_type(4) )) float float4;
-typedef __attribute__(( ext_vector_type(16) )) float float16;
-
-static float4 vec4_0 = (float4)0.5f;
-
-static void test() {
-    float2 vec2, vec2_2;
-    float3 vec3;
-    float4 vec4, vec4_2, *vec4p;
-    float16 vec16;
-    float f;
-
-    vec2.z; // expected-error {{vector component access exceeds type 'float2'}}
-    vec2.xyzw; // expected-error {{vector component access exceeds type 'float2'}}
-    vec4.xyzw; // expected-warning {{expression result unused}}
-    vec4.xyzc; // expected-error {{illegal vector component name 'c'}}
-    vec4.s01z; // expected-error {{illegal vector component name 'z'}}
-    vec2 = vec4.s01; // legal, shorten
-    vec2 = vec4.S01; // legal, shorten
-    
-    vec3 = vec4.xyz; // legal, shorten
-    f = vec2.x; // legal, shorten
-    f = vec4.xy.x; // legal, shorten
-
-    vec4_2.xyzx = vec4.xyzw; // expected-error {{vector is not assignable (contains duplicate components)}}
-    vec4_2.xyzz = vec4.xyzw; // expected-error {{vector is not assignable (contains duplicate components)}}
-    vec4_2.xyyw = vec4.xyzw; // expected-error {{vector is not assignable (contains duplicate components)}}
-    vec2.x = f;
-    vec2.xx = vec2_2.xy; // expected-error {{vector is not assignable (contains duplicate components)}}
-    vec2.yx = vec2_2.xy;
-    vec4 = (float4){ 1,2,3,4 };
-    vec4.xy.w; // expected-error {{vector component access exceeds type 'float2'}}
-    vec4.s06; // expected-error {{vector component access exceeds type 'float4'}}
-    vec4.x = vec16.sf;
-    vec4.x = vec16.sF;
-  
-    vec4p->yz = vec4p->xy;
-}
-
-float2 lo(float3 x) { return x.lo; }
-float2 hi(float3 x) { return x.hi; }
-float2 ev(float3 x) { return x.even; }
-float2 od(float3 x) { return x.odd; }

Modified: trunk/contrib/llvm/tools/clang/test/Sema/extern-redecl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/extern-redecl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/extern-redecl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// rdar: // 8125274
-static int a16[];  // expected-warning {{tentative array definition assumed to have one element}}
-
-void f16(void) {
-    extern int a16[];
-}
-
-
-// PR10013: Scope of extern declarations extend past enclosing block
-extern int PR10013_x;
-int PR10013(void) {
-  int *PR10013_x = 0;
-  {
-    extern int PR10013_x;
-    extern int PR10013_x; 
-  }
-  
-  return PR10013_x; // expected-warning{{incompatible pointer to integer conversion}}
-}
-
-static int test1_a[]; // expected-warning {{tentative array definition assumed to have one element}}
-extern int test1_a[];
-
-// rdar://13535367
-void test2declarer() { extern int test2_array[100]; }
-extern int test2_array[];
-int test2v = sizeof(test2_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
-
-void test3declarer() {
-  { extern int test3_array[100]; }
-  extern int test3_array[];
-  int x = sizeof(test3_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
-}
-
-void test4() {
-  extern int test4_array[];
-  {
-    extern int test4_array[100];
-    int x = sizeof(test4_array); // fine
-  }
-  int x = sizeof(test4_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
-}
-
-// Test that invalid local extern declarations of library
-// builtins behave reasonably.
-extern void abort(void); // expected-note 2 {{previous declaration is here}}
-extern float *calloc(); // expected-warning {{incompatible redeclaration of library function}} expected-note {{is a builtin}} expected-note 2 {{previous declaration is here}}
-void test5a() {
-  int abort(); // expected-error {{conflicting types}}
-  float *malloc(); // expected-warning {{incompatible redeclaration of library function}} expected-note 2 {{is a builtin}}
-  int *calloc(); // expected-error {{conflicting types}}
-}
-void test5b() {
-  int abort(); // expected-error {{conflicting types}}
-  float *malloc(); // expected-warning {{incompatible redeclaration of library function}}
-  int *calloc(); // expected-error {{conflicting types}}
-}
-void test5c() {
-  void (*_abort)(void) = &abort;
-  void *(*_malloc)() = &malloc;
-  float *(*_calloc)() = &calloc;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/flexible-array-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/flexible-array-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/flexible-array-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-struct one {
-  int a;
-  int values[]; // expected-note 4{{initialized flexible array member 'values' is here}}
-} x = {5, {1, 2, 3}}; // expected-warning{{flexible array initialization is a GNU extension}}
-
-struct one x2 = { 5, 1, 2, 3 }; // expected-warning{{flexible array initialization is a GNU extension}}
-
-void test() {
-  struct one x3 = {5, {1, 2, 3}}; // expected-error{{initialization of flexible array member is not allowed}}
-  struct one x3a = { 5 };
-  struct one x3b = { .a = 5 };
-  struct one x3c = { 5, {} }; // expected-warning{{use of GNU empty initializer extension}} \
-  // expected-warning{{flexible array initialization is a GNU extension}} \
-  // expected-warning{{zero size arrays are an extension}}
-}
-
-struct foo { 
-  int x; 
-  int y[]; // expected-note 8 {{initialized flexible array member 'y' is here}}
-}; 
-struct bar { struct foo z; }; // expected-warning {{'z' may not be nested in a struct due to flexible array member}}
-     
-struct foo a = { 1, { 2, 3, 4 } };        // expected-warning{{flexible array initialization is a GNU extension}}
-struct bar b = { { 1, { 2, 3, 4 } } };    // expected-error{{initialization of flexible array member is not allowed}}
-struct bar c = { { 1, { } } };            // // expected-warning{{flexible array initialization is a GNU extension}} \
-              // expected-warning{{use of GNU empty initializer extension}} \
-              // expected-warning{{zero size arrays are an extension}}
-struct foo d[1] = { { 1, { 2, 3, 4 } } };  // expected-warning{{'struct foo' may not be used as an array element due to flexible array member}} \
-              // expected-error{{initialization of flexible array member is not allowed}}
-
-struct foo desig_foo = { .y = {2, 3, 4} }; // expected-warning{{flexible array initialization is a GNU extension}}
-struct bar desig_bar = { .z.y = { } }; // expected-warning{{use of GNU empty initializer extension}} \
-  // expected-warning{{zero size arrays are an extension}} \
-  // expected-warning{{flexible array initialization is a GNU extension}}
-struct bar desig_bar2 = { .z.y = { 2, 3, 4} }; // expected-error{{initialization of flexible array member is not allowed}}
-struct foo design_foo2 = { .y = 2 }; // expected-error{{flexible array requires brace-enclosed initializer}}
-
-struct point {
-  int x, y;
-};
-
-struct polygon {
-  int numpoints;
-  struct point points[]; // expected-note{{initialized flexible array member 'points' is here}}
-};
-struct polygon poly = { 
-  .points[2] = { 1, 2} }; // expected-error{{designator into flexible array member subobject}}
-
-// PR3540
-struct X {
-  int a;
-  int b;
-  char data[];
-};
-
-struct Y {
-  int a:4;
-  int b:4;
-  int c;
-  int d;
-  int e;
-  struct X xs[]; // expected-warning{{'struct X' may not be used as an array element due to flexible array member}}
-};
-
-
-// PR8217
-struct PR8217a {
-  int  i;
-  char v[]; // expected-note 2 {{initialized flexible array member 'v' is here}}
-};
-
-void PR8217() {
-  struct PR8217a foo1 = { .i = 0, .v = "foo" }; // expected-error {{initialization of flexible array member is not allowed}}
-  struct PR8217a foo2 = { .i = 0 };
-  struct PR8217a foo3 = { .i = 0, .v = { 'b', 'a', 'r', '\0' } }; // expected-error {{initialization of flexible array member is not allowed}}
-  struct PR8217a bar;
-}
-
-typedef struct PR10648 {
- unsigned long n;
- int v[]; // expected-note {{initialized flexible array member 'v' is here}}
-} PR10648;
-int f10648() { 
-  return (PR10648){2, {3, 4}}.v[1]; // expected-error {{initialization of flexible array member is not allowed}}
-}
-
-struct FlexWithUnnamedBitfield { int : 10; int x; int y[]; }; // expected-note {{initialized flexible array member 'y' is here}}
-void TestFlexWithUnnamedBitfield() {
-  struct FlexWithUnnamedBitfield x = {10, {3}}; // expected-error {{initialization of flexible array member is not allowed}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/floating-point-compare.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/floating-point-compare.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/floating-point-compare.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wfloat-equal -verify %s
-
-int f1(float x, float y) {
-  return x == y; // expected-warning {{comparing floating point with ==}}
-} 
-
-int f2(float x, float y) {
-  return x != y; // expected-warning {{comparing floating point with ==}}
-}
-
-int f3(float x) {
-  return x == x; // no-warning
-}
-
-int f4(float x) {
-  return x == 0.0; // no-warning {{comparing}}
-}
-
-int f5(float x) {
-  return x == __builtin_inf(); // no-warning
-}
-
-int f7(float x) {
-  return x == 3.14159; // expected-warning {{comparing}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/fn-ptr-as-fn-prototype.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/fn-ptr-as-fn-prototype.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/fn-ptr-as-fn-prototype.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1_only -ast-print %s | FileCheck %s
-
-// This testcase checks the functionality of 
-// Sema::ActOn{Start,End}FunctionDeclarator, specifically checking that
-// ActOnEndFunctionDeclarator is called after the typedef so the enum
-// is in the global scope, not the scope of f().
-
-// CHECK: typedef void (*g)();
-typedef void (*g) ();
-// CHECK: enum {
-enum {
-  k = -1
-};
-// CHECK: void f() {
-void f() {}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/for.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/for.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/for.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Check C99 6.8.5p3
-void b1 (void) { for (void (*f) (void);;); }
-void b2 (void) { for (void f (void);;); }   // expected-error {{declaration of non-local variable}}
-void b3 (void) { for (static int f;;); }    // expected-error {{declaration of non-local variable}}
-void b4 (void) { for (typedef int f;;); }   // expected-error {{declaration of non-local variable}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-string-percentm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-string-percentm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-string-percentm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -triple i686-pc-linux-gnu
-// expected-no-diagnostics
-
-// PR 4142 - support glibc extension to printf: '%m' (which prints strerror(errno)).
-int printf(char const*,...);
-void percentm(void) {
-  printf("%m");
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-c90.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-c90.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-c90.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only -verify -triple i386-apple-darwin9 -pedantic -std=c89 %s
- */
-
-int scanf(const char * restrict, ...);
-int printf(const char *restrict, ...);
-
-void foo(char **sp, float *fp, int *ip) {
-  scanf("%as", sp); /* expected-warning{{'a' length modifier is not supported by ISO C}} */
-  scanf("%a[abc]", sp); /* expected-warning{{'a' length modifier is not supported by ISO C}} */
-
-  /* TODO: Warn that the 'a' conversion specifier is a C99 feature. */
-  scanf("%a", fp);
-  scanf("%afoobar", fp);
-  printf("%a", 1.0);
-  printf("%as", 1.0);
-  printf("%aS", 1.0);
-  printf("%a[", 1.0);
-  printf("%afoo", 1.0);
-
-  scanf("%da", ip);
-
-  /* Test argument type check for the 'a' length modifier. */
-  scanf("%as", fp); /* expected-warning{{format specifies type 'char **' but the argument has type 'float *'}}
-                       expected-warning{{'a' length modifier is not supported by ISO C}} */
-  scanf("%aS", fp); /* expected-warning{{format specifies type 'wchar_t **' (aka 'int **') but the argument has type 'float *'}}
-                       expected-warning{{'a' length modifier is not supported by ISO C}}
-                       expected-warning{{'S' conversion specifier is not supported by ISO C}} */
-  scanf("%a[abc]", fp); /* expected-warning{{format specifies type 'char **' but the argument has type 'float *'}}
-                           expected-warning{{'a' length modifier is not supported by ISO C}} */
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-darwin.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-darwin.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-darwin.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i386-apple-darwin9 -pedantic -DALLOWED %s
-// RUN: %clang_cc1 -fsyntax-only -verify -triple thumbv6-apple-ios4.0 -pedantic -DALLOWED %s
-
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-mingw32 -pedantic %s
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-pc-win32 -pedantic %s
-
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-gnu -pedantic %s
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-unknown-freebsd -pedantic %s
-
-int printf(const char *restrict, ...);
-int scanf(const char * restrict, ...) ;
-
-void test() {
-  int justRight = 1;
-  long tooLong = 2;
-
-  printf("%D", justRight);
-  printf("%D", tooLong);
-  printf("%U", justRight);
-  printf("%U", tooLong);
-  printf("%O", justRight);
-  printf("%O", tooLong);
-
-#ifdef ALLOWED
-  // expected-warning at -8 {{'D' conversion specifier is not supported by ISO C}} expected-note at -8 {{did you mean to use 'd'?}}
-  // expected-warning at -8 {{'D' conversion specifier is not supported by ISO C}} expected-note at -8 {{did you mean to use 'd'?}} expected-warning at -8 {{format specifies type 'int' but the argument has type 'long'}}
-  // expected-warning at -8 {{'U' conversion specifier is not supported by ISO C}} expected-note at -8 {{did you mean to use 'u'?}}
-  // expected-warning at -8 {{'U' conversion specifier is not supported by ISO C}} expected-note at -8 {{did you mean to use 'u'?}} expected-warning at -8 {{format specifies type 'unsigned int' but the argument has type 'long'}}
-  // expected-warning at -8 {{'O' conversion specifier is not supported by ISO C}} expected-note at -8 {{did you mean to use 'o'?}}
-  // expected-warning at -8 {{'O' conversion specifier is not supported by ISO C}} expected-note at -8 {{did you mean to use 'o'?}} expected-warning at -8 {{format specifies type 'unsigned int' but the argument has type 'long'}}
-#else
-  // expected-warning at -15 {{invalid conversion specifier 'D'}}
-  // expected-warning at -15 {{invalid conversion specifier 'D'}}
-  // expected-warning at -15 {{invalid conversion specifier 'U'}}
-  // expected-warning at -15 {{invalid conversion specifier 'U'}}
-  // expected-warning at -15 {{invalid conversion specifier 'O'}}
-  // expected-warning at -15 {{invalid conversion specifier 'O'}}
-#endif
-}
-
-#ifdef ALLOWED
-void testPrintf(short x, long y) {
-  printf("%hD", x); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'd'?}}
-  printf("%lD", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'd'?}}
-  printf("%hU", x); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'u'?}}
-  printf("%lU", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'u'?}}
-  printf("%hO", x); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'o'?}}
-  printf("%lO", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'o'?}}
-
-  printf("%+'0.5lD", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'd'?}}
-  printf("% '0.5lD", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'd'?}}
-  printf("%#0.5lO", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'o'?}}
-  printf("%'0.5lU", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'u'?}}
-}
-
-void testScanf(short *x, long *y) {
-  scanf("%hD", x); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'd'?}}
-  scanf("%lD", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'd'?}}
-  scanf("%hU", x); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'u'?}}
-  scanf("%lU", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'u'?}}
-  scanf("%hO", x); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'o'?}}
-  scanf("%lO", y); // expected-warning{{conversion specifier is not supported by ISO C}} expected-note {{did you mean to use 'o'?}}
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-enum-fixed-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-enum-fixed-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-enum-fixed-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,92 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -x c++ -std=c++11 -verify %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -x objective-c -verify %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -x objective-c++ -verify %s
-
-#ifdef __cplusplus
-# define EXTERN_C extern "C"
-#else
-# define EXTERN_C extern
-#endif
-
-EXTERN_C int printf(const char *,...);
-
-typedef enum : short { Constant = 0 } TestEnum;
-// Note that in C (and Objective-C), the type of 'Constant' is 'short'.
-// In C++ (and Objective-C++) it is 'TestEnum'.
-// This is why we don't check for that in the expected output.
-
-void test(TestEnum input) {
-  printf("%hhd", input); // expected-warning{{format specifies type 'char' but the argument has type 'TestEnum'}}
-  printf("%hhd", Constant); // expected-warning{{format specifies type 'char'}}
-  
-  printf("%hd", input); // no-warning
-  printf("%hd", Constant); // no-warning
-
-  // While these are less correct, they are still safe.
-  printf("%d", input); // no-warning
-  printf("%d", Constant); // no-warning
-  
-  printf("%lld", input); // expected-warning{{format specifies type 'long long' but the argument has type 'TestEnum'}}
-  printf("%lld", Constant); // expected-warning{{format specifies type 'long long'}}
-}
-
-
-typedef enum : unsigned long { LongConstant = ~0UL } LongEnum;
-
-void testLong(LongEnum input) {
-  printf("%u", input); // expected-warning{{format specifies type 'unsigned int' but the argument has type 'LongEnum'}}
-  printf("%u", LongConstant); // expected-warning{{format specifies type 'unsigned int'}}
-  
-  printf("%lu", input);
-  printf("%lu", LongConstant);
-}
-
-
-typedef short short_t;
-typedef enum : short_t { ShortConstant = 0 } ShortEnum;
-
-void testUnderlyingTypedef(ShortEnum input) {
-  printf("%hhd", input); // expected-warning{{format specifies type 'char' but the argument has type 'ShortEnum'}}
-  printf("%hhd", ShortConstant); // expected-warning{{format specifies type 'char'}}
-  
-  printf("%hd", input); // no-warning
-  printf("%hd", ShortConstant); // no-warning
-  
-  // While these are less correct, they are still safe.
-  printf("%d", input); // no-warning
-  printf("%d", ShortConstant); // no-warning
-  
-  printf("%lld", input); // expected-warning{{format specifies type 'long long' but the argument has type 'ShortEnum'}}
-  printf("%lld", ShortConstant); // expected-warning{{format specifies type 'long long'}}
-}
-
-
-typedef ShortEnum ShortEnum2;
-
-void testTypedefChain(ShortEnum2 input) {
-  printf("%hhd", input); // expected-warning{{format specifies type 'char' but the argument has type 'ShortEnum2' (aka 'ShortEnum')}}
-  printf("%hd", input); // no-warning
-  printf("%d", input); // no-warning
-  printf("%lld", input); // expected-warning{{format specifies type 'long long' but the argument has type 'ShortEnum2' (aka 'ShortEnum')}}
-}
-
-
-typedef enum : char { CharConstant = 'a' } CharEnum;
-
-// %hhd is deliberately not required to be signed, because 'char' isn't either.
-// This is a separate code path in FormatString.cpp.
-void testChar(CharEnum input) {
-  printf("%hhd", input); // no-warning
-  printf("%hhd", CharConstant); // no-warning
-
-  // This is not correct but it is safe. We warn because '%hd' shows intent.
-  printf("%hd", input); // expected-warning{{format specifies type 'short' but the argument has type 'CharEnum'}}
-  printf("%hd", CharConstant); // expected-warning{{format specifies type 'short'}}
-  
-  // This is not correct but it matches the promotion rules (and is safe).
-  printf("%d", input); // no-warning
-  printf("%d", CharConstant); // no-warning
-  
-  printf("%lld", input); // expected-warning{{format specifies type 'long long' but the argument has type 'CharEnum'}}
-  printf("%lld", CharConstant); // expected-warning{{format specifies type 'long long'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -x c++ -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -x c++ -std=c++11 -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -x objective-c -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -x objective-c++ -std=c++11 -verify %s
-
-#ifdef __cplusplus
-# define EXTERN_C extern "C"
-#else
-# define EXTERN_C extern
-#endif
-
-EXTERN_C int printf(const char *,...);
-
-typedef enum { Constant = 0 } TestEnum;
-// Note that in C, the type of 'Constant' is 'int'. In C++ it is 'TestEnum'.
-// This is why we don't check for that in the expected output.
-
-void test(TestEnum input) {
-    printf("%d", input); // no-warning
-    printf("%d", Constant); // no-warning
-
-    printf("%lld", input); // expected-warning{{format specifies type 'long long' but the argument has type 'TestEnum'}}
-    printf("%lld", Constant); // expected-warning{{format specifies type 'long long'}}
-}
-
-
-typedef enum { LongConstant = ~0UL } LongEnum;
-
-void testLong(LongEnum input) {
-  printf("%u", input); // expected-warning{{format specifies type 'unsigned int' but the argument has type 'LongEnum'}}
-  printf("%u", LongConstant); // expected-warning{{format specifies type 'unsigned int'}}
-  
-  printf("%lu", input);
-  printf("%lu", LongConstant);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-fixit-ssize_t.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-fixit-ssize_t.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-fixit-ssize_t.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: cp %s %t
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -pedantic -Wall -fixit %t
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -pedantic -Wall -Werror %t
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -E -o - %t | FileCheck %s
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
-int printf(char const *, ...);
-
-void test() {
-  typedef signed long int ssize_t;
-  printf("%f", (ssize_t) 42);
-}
-
-// CHECK: printf("%zd", (ssize_t) 42);

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-fixit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-fixit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-fixit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,242 +0,0 @@
-// RUN: cp %s %t
-// RUN: %clang_cc1 -pedantic -Wall -fixit %t
-// RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror %t
-// RUN: %clang_cc1 -E -o - %t | FileCheck %s
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. All of the
-   warnings will be fixed by -fixit, and the resulting file should
-   compile cleanly with -Werror -pedantic. */
-
-int printf(char const *, ...);
-
-typedef __SIZE_TYPE__ size_t;
-typedef __INTMAX_TYPE__ intmax_t;
-typedef __UINTMAX_TYPE__ uintmax_t;
-typedef __PTRDIFF_TYPE__ ptrdiff_t;
-
-void test() {
-  // Basic types
-  printf("%s", (int) 123);
-  printf("abc%0f", "testing testing 123");
-  printf("%u", (long) -12);
-  printf("%p", 123);
-  printf("%c\n", "x");
-  printf("%c\n", 1.23);
-
-  // Larger types
-  printf("%+.2d", (unsigned long long) 123456);
-  printf("%1d", (long double) 1.23);
-
-  // Flag handling
-  printf("%0+s", (unsigned) 31337); // 0 flag should stay
-  printf("%#p", (void *) 0);
-  printf("% +f", 1.23); // + flag should stay
-  printf("%0-f", 1.23); // - flag should stay
-
-  // Positional arguments
-#pragma clang diagnostic push // Don't warn about using positional arguments.
-#pragma clang diagnostic ignored "-Wformat-non-iso"
-  printf("%1$f:%2$.*3$f:%4$.*3$f\n", 1, 2, 3, 4);
-#pragma clang diagnostic pop
-
-  // Precision
-  printf("%10.5d", 1l); // (bug 7394)
-  printf("%.2c", 'a');
-
-  // Ignored flags
-  printf("%0-f", 1.23);
-
-  // Bad length modifiers
-  printf("%hhs", "foo");
-#pragma clang diagnostic push // Don't warn about using positional arguments.
-#pragma clang diagnostic ignored "-Wformat-non-iso"
-  printf("%1$zp", (void *)0);
-#pragma clang diagnostic pop
-
-  // Preserve the original formatting for unsigned integers.
-  unsigned long val = 42;
-  printf("%X", val);
-
-  // size_t, etc.
-  printf("%f", (size_t) 42);
-  printf("%f", (intmax_t) 42);
-  printf("%f", (uintmax_t) 42);
-  printf("%f", (ptrdiff_t) 42);
-
-  // Look beyond the first typedef.
-  typedef size_t my_size_type;
-  typedef intmax_t my_intmax_type;
-  typedef uintmax_t my_uintmax_type;
-  typedef ptrdiff_t my_ptrdiff_type;
-  typedef int my_int_type;
-  printf("%f", (my_size_type) 42);
-  printf("%f", (my_intmax_type) 42);
-  printf("%f", (my_uintmax_type) 42);
-  printf("%f", (my_ptrdiff_type) 42);
-  printf("%f", (my_int_type) 42);
-
-  // string
-  printf("%ld", "foo");
-
-  // Preserve the original choice of conversion specifier.
-  printf("%o", (long) 42);
-  printf("%u", (long) 42);
-  printf("%x", (long) 42);
-  printf("%X", (long) 42);
-  printf("%i", (unsigned long) 42);
-  printf("%d", (unsigned long) 42);
-  printf("%F", (long double) 42);
-  printf("%e", (long double) 42);
-  printf("%E", (long double) 42);
-  printf("%g", (long double) 42);
-  printf("%G", (long double) 42);
-  printf("%a", (long double) 42);
-  printf("%A", (long double) 42);
-}
-
-int scanf(char const *, ...);
-
-void test2() {
-  char str[100];
-  short shortVar;
-  unsigned short uShortVar;
-  int intVar;
-  unsigned uIntVar;
-  float floatVar;
-  double doubleVar;
-  long double longDoubleVar;
-  long longVar;
-  unsigned long uLongVar;
-  long long longLongVar;
-  unsigned long long uLongLongVar;
-  size_t sizeVar;
-  intmax_t intmaxVar;
-  uintmax_t uIntmaxVar;
-  ptrdiff_t ptrdiffVar;
-
-  scanf("%lf", str);
-  scanf("%f", &shortVar);
-  scanf("%f", &uShortVar);
-  scanf("%p", &intVar);
-  scanf("%Lf", &uIntVar);
-  scanf("%ld", &floatVar);
-  scanf("%f", &doubleVar);
-  scanf("%d", &longDoubleVar);
-  scanf("%f", &longVar);
-  scanf("%f", &uLongVar);
-  scanf("%f", &longLongVar);
-  scanf("%f", &uLongLongVar);
-
-  // Some named ints.
-  scanf("%f", &sizeVar);
-  scanf("%f", &intmaxVar);
-  scanf("%f", &uIntmaxVar);
-  scanf("%f", &ptrdiffVar);
-
-  // Look beyond the first typedef for named integer types.
-  typedef size_t my_size_type;
-  typedef intmax_t my_intmax_type;
-  typedef uintmax_t my_uintmax_type;
-  typedef ptrdiff_t my_ptrdiff_type;
-  typedef int my_int_type;
-  scanf("%f", (my_size_type*)&sizeVar);
-  scanf("%f", (my_intmax_type*)&intmaxVar);
-  scanf("%f", (my_uintmax_type*)&uIntmaxVar);
-  scanf("%f", (my_ptrdiff_type*)&ptrdiffVar);
-  scanf("%f", (my_int_type*)&intVar);
-
-  // Preserve the original formatting.
-  scanf("%o", &longVar);
-  scanf("%u", &longVar);
-  scanf("%x", &longVar);
-  scanf("%X", &longVar);
-  scanf("%i", &uLongVar);
-  scanf("%d", &uLongVar);
-  scanf("%F", &longDoubleVar);
-  scanf("%e", &longDoubleVar);
-  scanf("%E", &longDoubleVar);
-  scanf("%g", &longDoubleVar);
-  scanf("%G", &longDoubleVar);
-  scanf("%a", &longDoubleVar);
-  scanf("%A", &longDoubleVar);
-}
-
-// Validate the fixes.
-// CHECK: printf("%d", (int) 123);
-// CHECK: printf("abc%s", "testing testing 123");
-// CHECK: printf("%ld", (long) -12);
-// CHECK: printf("%d", 123);
-// CHECK: printf("%s\n", "x");
-// CHECK: printf("%f\n", 1.23);
-// CHECK: printf("%+.2lld", (unsigned long long) 123456);
-// CHECK: printf("%1Lf", (long double) 1.23);
-// CHECK: printf("%0u", (unsigned) 31337);
-// CHECK: printf("%p", (void *) 0);
-// CHECK: printf("%+f", 1.23);
-// CHECK: printf("%-f", 1.23);
-// CHECK: printf("%1$d:%2$.*3$d:%4$.*3$d\n", 1, 2, 3, 4);
-// CHECK: printf("%10.5ld", 1l);
-// CHECK: printf("%c", 'a');
-// CHECK: printf("%-f", 1.23);
-// CHECK: printf("%s", "foo");
-// CHECK: printf("%1$p", (void *)0);
-// CHECK: printf("%lX", val);
-// CHECK: printf("%zu", (size_t) 42);
-// CHECK: printf("%jd", (intmax_t) 42);
-// CHECK: printf("%ju", (uintmax_t) 42);
-// CHECK: printf("%td", (ptrdiff_t) 42);
-// CHECK: printf("%zu", (my_size_type) 42);
-// CHECK: printf("%jd", (my_intmax_type) 42);
-// CHECK: printf("%ju", (my_uintmax_type) 42);
-// CHECK: printf("%td", (my_ptrdiff_type) 42);
-// CHECK: printf("%d", (my_int_type) 42);
-// CHECK: printf("%s", "foo");
-// CHECK: printf("%lo", (long) 42);
-// CHECK: printf("%ld", (long) 42);
-// CHECK: printf("%lx", (long) 42);
-// CHECK: printf("%lX", (long) 42);
-// CHECK: printf("%lu", (unsigned long) 42);
-// CHECK: printf("%lu", (unsigned long) 42);
-// CHECK: printf("%LF", (long double) 42);
-// CHECK: printf("%Le", (long double) 42);
-// CHECK: printf("%LE", (long double) 42);
-// CHECK: printf("%Lg", (long double) 42);
-// CHECK: printf("%LG", (long double) 42);
-// CHECK: printf("%La", (long double) 42);
-// CHECK: printf("%LA", (long double) 42);
-
-// CHECK: scanf("%s", str);
-// CHECK: scanf("%hd", &shortVar);
-// CHECK: scanf("%hu", &uShortVar);
-// CHECK: scanf("%d", &intVar);
-// CHECK: scanf("%u", &uIntVar);
-// CHECK: scanf("%f", &floatVar);
-// CHECK: scanf("%lf", &doubleVar);
-// CHECK: scanf("%Lf", &longDoubleVar);
-// CHECK: scanf("%ld", &longVar);
-// CHECK: scanf("%lu", &uLongVar);
-// CHECK: scanf("%lld", &longLongVar);
-// CHECK: scanf("%llu", &uLongLongVar);
-// CHECK: scanf("%zu", &sizeVar);
-// CHECK: scanf("%jd", &intmaxVar);
-// CHECK: scanf("%ju", &uIntmaxVar);
-// CHECK: scanf("%td", &ptrdiffVar);
-// CHECK: scanf("%zu", (my_size_type*)&sizeVar);
-// CHECK: scanf("%jd", (my_intmax_type*)&intmaxVar);
-// CHECK: scanf("%ju", (my_uintmax_type*)&uIntmaxVar);
-// CHECK: scanf("%td", (my_ptrdiff_type*)&ptrdiffVar);
-// CHECK: scanf("%d", (my_int_type*)&intVar);
-// CHECK: scanf("%lo", &longVar);
-// CHECK: scanf("%lu", &longVar);
-// CHECK: scanf("%lx", &longVar);
-// CHECK: scanf("%lX", &longVar);
-// CHECK: scanf("%li", &uLongVar);
-// CHECK: scanf("%ld", &uLongVar);
-// CHECK: scanf("%LF", &longDoubleVar);
-// CHECK: scanf("%Le", &longDoubleVar);
-// CHECK: scanf("%LE", &longDoubleVar);
-// CHECK: scanf("%Lg", &longDoubleVar);
-// CHECK: scanf("%LG", &longDoubleVar);
-// CHECK: scanf("%La", &longDoubleVar);
-// CHECK: scanf("%LA", &longDoubleVar);

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-gnu.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-gnu.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-gnu.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i386-apple-darwin9 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -triple thumbv6-apple-ios4.0 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-mingw32 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-pc-win32 %s
-
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-gnu -DALLOWED %s
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-unknown-freebsd -DALLOWED %s
-
-int printf(const char *restrict, ...);
-int scanf(const char * restrict, ...) ;
-
-void test() {
-  long notLongEnough = 1;
-  long long quiteLong = 2;
-
-  printf("%Ld", notLongEnough); // expected-warning {{format specifies type 'long long' but the argument has type 'long'}}
-  printf("%Ld", quiteLong);
-
-#ifndef ALLOWED
-  // expected-warning at -4 {{length modifier 'L' results in undefined behavior or no effect with 'd' conversion specifier}}
-  // expected-note at -5 {{did you mean to use 'll'?}}
-
-  // expected-warning at -6 {{length modifier 'L' results in undefined behavior or no effect with 'd' conversion specifier}}
-  // expected-note at -7 {{did you mean to use 'll'?}}
-#endif
-}
-
-void testAlwaysInvalid() {
-  // We should not suggest 'll' here!
-  printf("%Lc", 'a'); // expected-warning {{length modifier 'L' results in undefined behavior or no effect with 'c' conversion specifier}}
-  printf("%Ls", "a"); // expected-warning {{length modifier 'L' results in undefined behavior or no effect with 's' conversion specifier}}
-}
-
-#ifdef ALLOWED
-// PR 9466: clang: doesn't know about %Lu, %Ld, and %Lx
-void printf_longlong(long long x, unsigned long long y) {
-  printf("%Ld", y); // no-warning
-  printf("%Lu", y); // no-warning
-  printf("%Lx", y); // no-warning
-  printf("%Ld", x); // no-warning
-  printf("%Lu", x); // no-warning
-  printf("%Lx", x); // no-warning
-  printf("%Ls", "hello"); // expected-warning {{length modifier 'L' results in undefined behavior or no effect with 's' conversion specifier}}
-}
-
-void scanf_longlong(long long *x, unsigned long long *y) {
-  scanf("%Ld", y); // no-warning
-  scanf("%Lu", y); // no-warning
-  scanf("%Lx", y); // no-warning
-  scanf("%Ld", x); // no-warning
-  scanf("%Lu", x); // no-warning
-  scanf("%Lx", x); // no-warning
-  scanf("%Ls", "hello"); // expected-warning {{length modifier 'L' results in undefined behavior or no effect with 's' conversion specifier}}
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-int-typedefs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-int-typedefs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-int-typedefs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-
-int printf(char const *, ...);
-int scanf(char const *, ...);
-
-void test(void) {
-  printf("%jd", 42.0); // expected-warning {{format specifies type 'intmax_t' (aka 'long long')}}
-  printf("%ju", 42.0); // expected-warning {{format specifies type 'uintmax_t' (aka 'unsigned long long')}}
-  printf("%zu", 42.0); // expected-warning {{format specifies type 'size_t' (aka 'unsigned long')}}
-  printf("%td", 42.0); // expected-warning {{format specifies type 'ptrdiff_t' (aka 'int')}}
-  printf("%lc", 42.0); // expected-warning {{format specifies type 'wint_t' (aka 'int')}}
-  printf("%ls", 42.0); // expected-warning {{format specifies type 'wchar_t *' (aka 'int *')}}
-  printf("%S", 42.0);  // expected-warning {{format specifies type 'wchar_t *' (aka 'int *')}}
-  printf("%C", 42.0);  // expected-warning {{format specifies type 'wchar_t' (aka 'int')}}
-
-  scanf("%jd", 0); // expected-warning {{format specifies type 'intmax_t *' (aka 'long long *')}}
-  scanf("%ju", 0); // expected-warning {{format specifies type 'uintmax_t *' (aka 'unsigned long long *')}}
-  scanf("%zu", 0); // expected-warning {{format specifies type 'size_t *' (aka 'unsigned long *')}}
-  scanf("%td", 0); // expected-warning {{format specifies type 'ptrdiff_t *' (aka 'int *')}}
-  scanf("%lc", 0); // expected-warning {{format specifies type 'wchar_t *' (aka 'int *')}}
-  scanf("%ls", 0); // expected-warning {{format specifies type 'wchar_t *' (aka 'int *')}}
-  scanf("%S",  0);  // expected-warning {{format specifies type 'wchar_t *' (aka 'int *')}}
-  scanf("%C",  0);  // expected-warning {{format specifies type 'wchar_t *' (aka 'int *')}}
-
-
-  // typedef size_t et al. to something crazy.
-  typedef void *size_t;
-  typedef void *intmax_t;
-  typedef void *uintmax_t;
-  typedef void *ptrdiff_t;
-
-  // The warning still fires, because it checks the underlying type.
-  printf("%jd", (intmax_t)42); // expected-warning {{format specifies type 'intmax_t' (aka 'long long') but the argument has type 'intmax_t' (aka 'void *')}}
-  printf("%ju", (uintmax_t)42); // expected-warning {{format specifies type 'uintmax_t' (aka 'unsigned long long') but the argument has type 'uintmax_t' (aka 'void *')}}
-  printf("%zu", (size_t)42); // expected-warning {{format specifies type 'size_t' (aka 'unsigned long') but the argument has type 'size_t' (aka 'void *')}}
-  printf("%td", (ptrdiff_t)42); // expected-warning {{format specifies type 'ptrdiff_t' (aka 'int') but the argument has type 'ptrdiff_t' (aka 'void *')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-no-fixit.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-no-fixit.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-no-fixit.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: cp %s %t
-// RUN: %clang_cc1 -fsyntax-only -fixit %t
-// RUN: %clang_cc1 -E -o - %t | FileCheck %s
-
-/* This is a test of the various code modification hints that are
-   provided as part of warning or extension diagnostics. Only
-   warnings for format strings within the function call will be
-   fixed by -fixit.  Other format strings will be left alone. */
-
-int printf(char const *, ...);
-int scanf(char const *, ...);
-
-void pr9751() {
-  const char kFormat1[] = "%s";
-  printf(kFormat1, 5);
-  printf("%s", 5);
-
-  const char kFormat2[] = "%.3p";
-  void *p;
-  printf(kFormat2, p);
-  printf("%.3p", p);
-
-  const char kFormat3[] = "%0s";
-  printf(kFormat3, "a");
-  printf("%0s", "a");
-
-  const char kFormat4[] = "%hhs";
-  printf(kFormat4, "a");
-  printf("%hhs", "a");
-
-  const char kFormat5[] = "%-0d";
-  printf(kFormat5, 5);
-  printf("%-0d", 5);
-
-  const char kFormat6[] = "%00d";
-  int *i;
-  scanf(kFormat6, i);
-  scanf("%00d", i);
-}
-
-// CHECK:  const char kFormat1[] = "%s";
-// CHECK:  printf(kFormat1, 5);
-// CHECK:  printf("%d", 5);
-
-// CHECK:  const char kFormat2[] = "%.3p";
-// CHECK:  void *p;
-// CHECK:  printf(kFormat2, p);
-// CHECK:  printf("%p", p);
-
-// CHECK:  const char kFormat3[] = "%0s";
-// CHECK:  printf(kFormat3, "a");
-// CHECK:  printf("%s", "a");
-
-// CHECK:  const char kFormat4[] = "%hhs";
-// CHECK:  printf(kFormat4, "a");
-// CHECK:  printf("%s", "a");
-
-// CHECK:  const char kFormat5[] = "%-0d";
-// CHECK:  printf(kFormat5, 5);
-// CHECK:  printf("%-d", 5);
-
-// CHECK:  const char kFormat6[] = "%00d";
-// CHECK:  int *i;
-// CHECK:  scanf(kFormat6, i);
-// CHECK:  scanf("%d", i);

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-non-iso.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-non-iso.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-non-iso.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple i686-linux-gnu -fsyntax-only -verify -std=c99 -pedantic %s
-
-int printf(const char *restrict, ...);
-int scanf(const char * restrict, ...);
-
-void f(void) {
-  char *cp;
-
-  // The 'q' length modifier.
-  printf("%qd", (long long)42); // expected-warning{{'q' length modifier is not supported by ISO C}} expected-note{{did you mean to use 'll'?}}
-  scanf("%qd", (long long *)0); // expected-warning{{'q' length modifier is not supported by ISO C}} expected-note{{did you mean to use 'll'?}}
-
-  // The 'm' length modifier.
-  scanf("%ms", &cp); // expected-warning{{'m' length modifier is not supported by ISO C}}
-
-  // The 'S' and 'C' conversion specifiers.
-  printf("%S", L"foo"); // expected-warning{{'S' conversion specifier is not supported by ISO C}}
-  printf("%C", L'x'); // expected-warning{{'C' conversion specifier is not supported by ISO C}}
-
-  // Combining 'L' with an integer conversion specifier.
-  printf("%Li", (long long)42); // expected-warning{{using length modifier 'L' with conversion specifier 'i' is not supported by ISO C}} expected-note{{did you mean to use 'll'?}}
-  printf("%Lo", (long long)42); // expected-warning{{using length modifier 'L' with conversion specifier 'o' is not supported by ISO C}} expected-note{{did you mean to use 'll'?}}
-  printf("%Lu", (long long)42); // expected-warning{{using length modifier 'L' with conversion specifier 'u' is not supported by ISO C}} expected-note{{did you mean to use 'll'?}}
-  printf("%Lx", (long long)42); // expected-warning{{using length modifier 'L' with conversion specifier 'x' is not supported by ISO C}} expected-note{{did you mean to use 'll'?}}
-  printf("%LX", (long long)42); // expected-warning{{using length modifier 'L' with conversion specifier 'X' is not supported by ISO C}} expected-note{{did you mean to use 'll'?}}
-
-  // Positional arguments.
-  printf("%1$d", 42); // expected-warning{{positional arguments are not supported by ISO C}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-scanf.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-scanf.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-scanf.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wformat-nonliteral %s
-
-// Test that -Wformat=0 works:
-// RUN: %clang_cc1 -fsyntax-only -Werror -Wformat=0 %s
-
-#include <stdarg.h>
-typedef __typeof(sizeof(int)) size_t;
-typedef struct _FILE FILE;
-typedef __WCHAR_TYPE__ wchar_t;
-
-int fscanf(FILE * restrict, const char * restrict, ...) ;
-int scanf(const char * restrict, ...) ;
-int sscanf(const char * restrict, const char * restrict, ...) ;
-int my_scanf(const char * restrict, ...) __attribute__((__format__(__scanf__, 1, 2)));
-
-int vscanf(const char * restrict, va_list);
-int vfscanf(FILE * restrict, const char * restrict, va_list);
-int vsscanf(const char * restrict, const char * restrict, va_list);
-
-void test(const char *s, int *i) {
-  scanf(s, i); // expected-warning{{ormat string is not a string literal}}
-  scanf("%0d", i); // expected-warning{{zero field width in scanf format string is unused}}
-  scanf("%00d", i); // expected-warning{{zero field width in scanf format string is unused}}
-  scanf("%d%[asdfasdfd", i, s); // expected-warning{{no closing ']' for '%[' in scanf format string}}
-
-  unsigned short s_x;
-  scanf ("%" "hu" "\n", &s_x); // no-warning
-  scanf("%y", i); // expected-warning{{invalid conversion specifier 'y'}}
-  scanf("%%"); // no-warning
-  scanf("%%%1$d", i); // no-warning
-  scanf("%1$d%%", i); // no-warning
-  scanf("%d", i, i); // expected-warning{{data argument not used by format string}}
-  scanf("%*d", i); // // expected-warning{{data argument not used by format string}}
-  scanf("%*d", i); // // expected-warning{{data argument not used by format string}}
-  scanf("%*d%1$d", i); // no-warning
-
-  scanf("%s", (char*)0); // no-warning
-  scanf("%s", (volatile char*)0); // no-warning
-  scanf("%s", (signed char*)0); // no-warning
-  scanf("%s", (unsigned char*)0); // no-warning
-  scanf("%hhu", (signed char*)0); // no-warning
-}
-
-void bad_length_modifiers(char *s, void *p, wchar_t *ws, long double *ld) {
-  scanf("%hhs", "foo"); // expected-warning{{length modifier 'hh' results in undefined behavior or no effect with 's' conversion specifier}}
-  scanf("%1$zp", &p); // expected-warning{{length modifier 'z' results in undefined behavior or no effect with 'p' conversion specifier}}
-  scanf("%ls", ws); // no-warning
-  scanf("%#.2Lf", ld); // expected-warning{{invalid conversion specifier '#'}}
-}
-
-// Test that the scanf call site is where the warning is attached.  If the
-// format string is somewhere else, point to it in a note.
-void pr9751() {
-  int *i;
-  char str[100];
-  const char kFormat1[] = "%00d"; // expected-note{{format string is defined here}}}
-  scanf(kFormat1, i); // expected-warning{{zero field width in scanf format string is unused}}
-  scanf("%00d", i); // expected-warning{{zero field width in scanf format string is unused}}
-  const char kFormat2[] = "%["; // expected-note{{format string is defined here}}}
-  scanf(kFormat2, str); // expected-warning{{no closing ']' for '%[' in scanf format string}}
-  scanf("%[", str); // expected-warning{{no closing ']' for '%[' in scanf format string}}
-  const char kFormat3[] = "%hu"; // expected-note{{format string is defined here}}}
-  scanf(kFormat3, &i); // expected-warning {{format specifies type 'unsigned short *' but the argument}}
-  const char kFormat4[] = "%lp"; // expected-note{{format string is defined here}}}
-  scanf(kFormat4, &i); // expected-warning {{length modifier 'l' results in undefined behavior or no effect with 'p' conversion specifier}}
-}
-
-void test_variants(int *i, const char *s, ...) {
-  FILE *f = 0;
-  char buf[100];
-
-  fscanf(f, "%ld", i); // expected-warning{{format specifies type 'long *' but the argument has type 'int *'}}
-  sscanf(buf, "%ld", i); // expected-warning{{format specifies type 'long *' but the argument has type 'int *'}}
-  my_scanf("%ld", i); // expected-warning{{format specifies type 'long *' but the argument has type 'int *'}}
-
-  va_list ap;
-  va_start(ap, s);
-
-  vscanf("%[abc", ap); // expected-warning{{no closing ']' for '%[' in scanf format string}}
-  vfscanf(f, "%[abc", ap); // expected-warning{{no closing ']' for '%[' in scanf format string}}
-  vsscanf(buf, "%[abc", ap); // expected-warning{{no closing ']' for '%[' in scanf format string}}
-}
-
-void test_scanlist(int *ip, char *sp, wchar_t *ls) {
-  scanf("%[abc]", ip); // expected-warning{{format specifies type 'char *' but the argument has type 'int *'}}
-  scanf("%h[abc]", sp); // expected-warning{{length modifier 'h' results in undefined behavior or no effect with '[' conversion specifier}}
-  scanf("%l[xyx]", ls); // no-warning
-  scanf("%ll[xyx]", ls); // expected-warning {{length modifier 'll' results in undefined behavior or no effect with '[' conversion specifier}}
-}
-
-void test_alloc_extension(char **sp, wchar_t **lsp, float *fp) {
-  /* Make sure "%a" gets parsed as a conversion specifier for float,
-   * even when followed by an 's', 'S' or '[', which would cause it to be
-   * parsed as a length modifier in C90. */
-  scanf("%as", sp); // expected-warning{{format specifies type 'float *' but the argument has type 'char **'}}
-  scanf("%aS", lsp); // expected-warning{{format specifies type 'float *' but the argument has type 'wchar_t **'}}
-  scanf("%a[bcd]", sp); // expected-warning{{format specifies type 'float *' but the argument has type 'char **'}}
-
-  // Test that the 'm' length modifier is only allowed with s, S, c, C or [.
-  // TODO: Warn that 'm' is an extension.
-  scanf("%ms", sp); // No warning.
-  scanf("%mS", lsp); // No warning.
-  scanf("%mc", sp); // No warning.
-  scanf("%mC", lsp); // No warning.
-  scanf("%m[abc]", sp); // No warning.
-  scanf("%md", sp); // expected-warning{{length modifier 'm' results in undefined behavior or no effect with 'd' conversion specifier}}
-
-  // Test argument type check for the 'm' length modifier.
-  scanf("%ms", fp); // expected-warning{{format specifies type 'char **' but the argument has type 'float *'}}
-  scanf("%mS", fp); // expected-warning-re{{format specifies type 'wchar_t \*\*' \(aka '[^']+'\) but the argument has type 'float \*'}}
-  scanf("%mc", fp); // expected-warning{{format specifies type 'char **' but the argument has type 'float *'}}
-  scanf("%mC", fp); // expected-warning-re{{format specifies type 'wchar_t \*\*' \(aka '[^']+'\) but the argument has type 'float \*'}}
-  scanf("%m[abc]", fp); // expected-warning{{format specifies type 'char **' but the argument has type 'float *'}}
-}
-
-void test_quad(int *x, long long *llx) {
-  scanf("%qd", x); // expected-warning{{format specifies type 'long long *' but the argument has type 'int *'}}
-  scanf("%qd", llx); // no-warning
-}
-
-void test_writeback(int *x) {
-  scanf("%n", (void*)0); // expected-warning{{format specifies type 'int *' but the argument has type 'void *'}}
-  scanf("%n %c", x, x); // expected-warning{{format specifies type 'char *' but the argument has type 'int *'}}
-
-  scanf("%hhn", (signed char*)0); // no-warning
-  scanf("%hhn", (char*)0); // no-warning
-  scanf("%hhn", (unsigned char*)0); // no-warning
-  scanf("%hhn", (int*)0); // expected-warning{{format specifies type 'signed char *' but the argument has type 'int *'}}
-
-  scanf("%hn", (short*)0); // no-warning
-  scanf("%hn", (unsigned short*)0); // no-warning
-  scanf("%hn", (int*)0); // expected-warning{{format specifies type 'short *' but the argument has type 'int *'}}
-
-  scanf("%n", (int*)0); // no-warning
-  scanf("%n", (unsigned int*)0); // no-warning
-  scanf("%n", (char*)0); // expected-warning{{format specifies type 'int *' but the argument has type 'char *'}}
-
-  scanf("%ln", (long*)0); // no-warning
-  scanf("%ln", (unsigned long*)0); // no-warning
-  scanf("%ln", (int*)0); // expected-warning{{format specifies type 'long *' but the argument has type 'int *'}}
-
-  scanf("%lln", (long long*)0); // no-warning
-  scanf("%lln", (unsigned long long*)0); // no-warning
-  scanf("%lln", (int*)0); // expected-warning{{format specifies type 'long long *' but the argument has type 'int *'}}
-
-  scanf("%qn", (long long*)0); // no-warning
-  scanf("%qn", (unsigned long long*)0); // no-warning
-  scanf("%qn", (int*)0); // expected-warning{{format specifies type 'long long *' but the argument has type 'int *'}}
-
-}
-
-void test_qualifiers(const int *cip, volatile int* vip,
-                     const char *ccp, volatile char* vcp,
-                     const volatile int *cvip) {
-  scanf("%d", cip); // expected-warning{{format specifies type 'int *' but the argument has type 'const int *'}}
-  scanf("%n", cip); // expected-warning{{format specifies type 'int *' but the argument has type 'const int *'}}
-  scanf("%s", ccp); // expected-warning{{format specifies type 'char *' but the argument has type 'const char *'}}
-  scanf("%d", cvip); // expected-warning{{format specifies type 'int *' but the argument has type 'const volatile int *'}}
-
-  scanf("%d", vip); // No warning.
-  scanf("%n", vip); // No warning.
-  scanf("%c", vcp); // No warning.
-
-  typedef int* ip_t;
-  typedef const int* cip_t;
-  scanf("%d", (ip_t)0); // No warning.
-  scanf("%d", (cip_t)0); // expected-warning{{format specifies type 'int *' but the argument has type 'cip_t' (aka 'const int *')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings-size_t.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings-size_t.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings-size_t.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
-
-int printf(char const *, ...);
-
-void test(void) {
-  // size_t
-  printf("%zu", (double)42); // expected-warning {{format specifies type 'size_t' (aka 'unsigned long') but the argument has type 'double'}}
-
-  // intmax_t / uintmax_t
-  printf("%jd", (double)42); // expected-warning {{format specifies type 'intmax_t' (aka 'long') but the argument has type 'double'}}
-  printf("%ju", (double)42); // expected-warning {{format specifies type 'uintmax_t' (aka 'unsigned long') but the argument has type 'double'}}
-
-  // ptrdiff_t
-  printf("%td", (double)42); // expected-warning {{format specifies type 'ptrdiff_t' (aka 'long') but the argument has type 'double'}}
-}
-
-void test_writeback(void) {
-  printf("%jn", (long*)0); // no-warning
-  printf("%jn", (unsigned long*)0); // no-warning
-  printf("%jn", (int*)0); // expected-warning{{format specifies type 'intmax_t *' (aka 'long *') but the argument has type 'int *'}}
-
-  printf("%zn", (long*)0); // no-warning
-  // FIXME: Warn about %zn with non-ssize_t argument.
-
-  printf("%tn", (long*)0); // no-warning
-  printf("%tn", (unsigned long*)0); // no-warning
-  printf("%tn", (int*)0); // expected-warning{{format specifies type 'ptrdiff_t *' (aka 'long *') but the argument has type 'int *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/format-strings.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/format-strings.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/format-strings.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,593 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wformat-nonliteral -isystem %S/Inputs %s
-// RUN: %clang_cc1 -fsyntax-only -verify -Wformat-nonliteral -isystem %S/Inputs -fno-signed-char %s
-
-#define __need_wint_t
-#include <stdarg.h>
-#include <stddef.h> // For wint_t and wchar_t
-
-typedef struct _FILE FILE;
-int fprintf(FILE *, const char *restrict, ...);
-int printf(const char *restrict, ...); // expected-note{{passing argument to parameter here}}
-int snprintf(char *restrict, size_t, const char *restrict, ...);
-int sprintf(char *restrict, const char *restrict, ...);
-int vasprintf(char **, const char *, va_list);
-int asprintf(char **, const char *, ...);
-int vfprintf(FILE *, const char *restrict, va_list);
-int vprintf(const char *restrict, va_list);
-int vsnprintf(char *, size_t, const char *, va_list);
-int vsprintf(char *restrict, const char *restrict, va_list); // expected-note{{passing argument to parameter here}}
-
-int vscanf(const char *restrict format, va_list arg);
-
-char * global_fmt;
-
-void check_string_literal( FILE* fp, const char* s, char *buf, ... ) {
-
-  char * b;
-  va_list ap;
-  va_start(ap,buf);
-
-  printf(s); // expected-warning {{format string is not a string literal}}
-  vprintf(s,ap); // expected-warning {{format string is not a string literal}}
-  fprintf(fp,s); // expected-warning {{format string is not a string literal}}
-  vfprintf(fp,s,ap); // expected-warning {{format string is not a string literal}}
-  asprintf(&b,s); // expected-warning {{format string is not a string lit}}
-  vasprintf(&b,s,ap); // expected-warning {{format string is not a string literal}}
-  sprintf(buf,s); // expected-warning {{format string is not a string literal}}
-  snprintf(buf,2,s); // expected-warning {{format string is not a string lit}}
-  __builtin___sprintf_chk(buf,0,-1,s); // expected-warning {{format string is not a string literal}}
-  __builtin___snprintf_chk(buf,2,0,-1,s); // expected-warning {{format string is not a string lit}}
-  vsprintf(buf,s,ap); // expected-warning {{format string is not a string lit}}
-  vsnprintf(buf,2,s,ap); // expected-warning {{format string is not a string lit}}
-  vsnprintf(buf,2,global_fmt,ap); // expected-warning {{format string is not a string literal}}
-  __builtin___vsnprintf_chk(buf,2,0,-1,s,ap); // expected-warning {{format string is not a string lit}}
-  __builtin___vsnprintf_chk(buf,2,0,-1,global_fmt,ap); // expected-warning {{format string is not a string literal}}
-
-  vscanf(s, ap); // expected-warning {{format string is not a string literal}}
-
-  // rdar://6079877
-  printf("abc"
-         "%*d", 1, 1); // no-warning
-  printf("abc\
-def"
-         "%*d", 1, 1); // no-warning
-         
-  // <rdar://problem/6079850>, allow 'unsigned' (instead of 'int') to be used for both
-  // the field width and precision.  This deviates from C99, but is reasonably safe
-  // and is also accepted by GCC.
-  printf("%*d", (unsigned) 1, 1); // no-warning  
-}
-
-// When calling a non-variadic format function (vprintf, vscanf, NSLogv, ...),
-// warn only if the format string argument is a parameter that is not itself
-// declared as a format string with compatible format.
-__attribute__((__format__ (__printf__, 2, 4)))
-void check_string_literal2( FILE* fp, const char* s, char *buf, ... ) {
-  char * b;
-  va_list ap;
-  va_start(ap,buf);
-
-  printf(s); // expected-warning {{format string is not a string literal}}
-  vprintf(s,ap); // no-warning
-  fprintf(fp,s); // expected-warning {{format string is not a string literal}}
-  vfprintf(fp,s,ap); // no-warning
-  asprintf(&b,s); // expected-warning {{format string is not a string lit}}
-  vasprintf(&b,s,ap); // no-warning
-  sprintf(buf,s); // expected-warning {{format string is not a string literal}}
-  snprintf(buf,2,s); // expected-warning {{format string is not a string lit}}
-  __builtin___vsnprintf_chk(buf,2,0,-1,s,ap); // no-warning
-
-  vscanf(s, ap); // expected-warning {{format string is not a string literal}}
-}
-
-void check_conditional_literal(const char* s, int i) {
-  printf(i == 1 ? "yes" : "no"); // no-warning
-  printf(i == 0 ? (i == 1 ? "yes" : "no") : "dont know"); // no-warning
-  printf(i == 0 ? (i == 1 ? s : "no") : "dont know"); // expected-warning{{format string is not a string literal}}
-  printf("yes" ?: "no %d", 1); // expected-warning{{data argument not used by format string}}
-}
-
-void check_writeback_specifier()
-{
-  int x;
-  char *b;
-  printf("%n", b); // expected-warning{{format specifies type 'int *' but the argument has type 'char *'}}
-  printf("%n", &x); // no-warning
-
-  printf("%hhn", (signed char*)0); // no-warning
-  printf("%hhn", (char*)0); // no-warning
-  printf("%hhn", (unsigned char*)0); // no-warning
-  printf("%hhn", (int*)0); // expected-warning{{format specifies type 'signed char *' but the argument has type 'int *'}}
-
-  printf("%hn", (short*)0); // no-warning
-  printf("%hn", (unsigned short*)0); // no-warning
-  printf("%hn", (int*)0); // expected-warning{{format specifies type 'short *' but the argument has type 'int *'}}
-
-  printf("%n", (int*)0); // no-warning
-  printf("%n", (unsigned int*)0); // no-warning
-  printf("%n", (char*)0); // expected-warning{{format specifies type 'int *' but the argument has type 'char *'}}
-
-  printf("%ln", (long*)0); // no-warning
-  printf("%ln", (unsigned long*)0); // no-warning
-  printf("%ln", (int*)0); // expected-warning{{format specifies type 'long *' but the argument has type 'int *'}}
-
-  printf("%lln", (long long*)0); // no-warning
-  printf("%lln", (unsigned long long*)0); // no-warning
-  printf("%lln", (int*)0); // expected-warning{{format specifies type 'long long *' but the argument has type 'int *'}}
-
-  printf("%qn", (long long*)0); // no-warning
-  printf("%qn", (unsigned long long*)0); // no-warning
-  printf("%qn", (int*)0); // expected-warning{{format specifies type 'long long *' but the argument has type 'int *'}}
-
-  printf("%Ln", 0); // expected-warning{{length modifier 'L' results in undefined behavior or no effect with 'n' conversion specifier}}
-  // expected-note at -1{{did you mean to use 'll'?}}
-}
-
-void check_invalid_specifier(FILE* fp, char *buf)
-{
-  printf("%s%lb%d","unix",10,20); // expected-warning {{invalid conversion specifier 'b'}}
-  fprintf(fp,"%%%l"); // expected-warning {{incomplete format specifier}}
-  sprintf(buf,"%%%%%ld%d%d", 1, 2, 3); // expected-warning{{format specifies type 'long' but the argument has type 'int'}}
-  snprintf(buf, 2, "%%%%%ld%;%d", 1, 2, 3); // expected-warning{{format specifies type 'long' but the argument has type 'int'}} expected-warning {{invalid conversion specifier ';'}}
-}
-
-void check_null_char_string(char* b)
-{
-  printf("\0this is bogus%d",1); // expected-warning {{string contains '\0'}}
-  snprintf(b,10,"%%%%%d\0%d",1,2); // expected-warning {{string contains '\0'}}
-  printf("%\0d",1); // expected-warning {{string contains '\0'}}
-}
-
-void check_empty_format_string(char* buf, ...)
-{
-  va_list ap;
-  va_start(ap,buf);
-  vprintf("",ap); // expected-warning {{format string is empty}}
-  sprintf(buf, "", 1); // expected-warning {{format string is empty}}
-  
-  // Don't warn about empty format strings when there are no data arguments.
-  // This can arise from macro expansions and non-standard format string
-  // functions.
-  sprintf(buf, ""); // no-warning
-}
-
-void check_wide_string(char* b, ...)
-{
-  va_list ap;
-  va_start(ap,b);
-
-  printf(L"foo %d",2); // expected-warning {{incompatible pointer types}}, expected-warning {{should not be a wide string}}
-  vsprintf(b,L"bar %d",ap); // expected-warning {{incompatible pointer types}}, expected-warning {{should not be a wide string}}
-}
-
-void check_asterisk_precision_width(int x) {
-  printf("%*d"); // expected-warning {{'*' specified field width is missing a matching 'int' argument}}
-  printf("%.*d"); // expected-warning {{'.*' specified field precision is missing a matching 'int' argument}}
-  printf("%*d",12,x); // no-warning
-  printf("%*d","foo",x); // expected-warning {{field width should have type 'int', but argument has type 'char *'}}
-  printf("%.*d","foo",x); // expected-warning {{field precision should have type 'int', but argument has type 'char *'}}
-}
-
-void __attribute__((format(printf,1,3))) myprintf(const char*, int blah, ...);
-
-void test_myprintf() {
-  myprintf("%d", 17, 18); // okay
-}
-
-void test_constant_bindings(void) {
-  const char * const s1 = "hello";
-  const char s2[] = "hello";
-  const char *s3 = "hello";
-  char * const s4 = "hello";
-  extern const char s5[];
-  
-  printf(s1); // no-warning
-  printf(s2); // no-warning
-  printf(s3); // expected-warning{{not a string literal}}
-  printf(s4); // expected-warning{{not a string literal}}
-  printf(s5); // expected-warning{{not a string literal}}
-}
-
-
-// Test what happens when -Wformat-security only.
-#pragma GCC diagnostic ignored "-Wformat-nonliteral"
-#pragma GCC diagnostic warning "-Wformat-security"
-
-void test9(char *P) {
-  int x;
-  printf(P);   // expected-warning {{format string is not a string literal (potentially insecure)}}
-  printf(P, 42);
-}
-
-void torture(va_list v8) {
-  vprintf ("%*.*d", v8);  // no-warning
-  
-}
-
-void test10(int x, float f, int i, long long lli) {
-  printf("%s"); // expected-warning{{more '%' conversions than data arguments}}
-  printf("%@", 12); // expected-warning{{invalid conversion specifier '@'}}
-  printf("\0"); // expected-warning{{format string contains '\0' within the string body}}
-  printf("xs\0"); // expected-warning{{format string contains '\0' within the string body}}
-  printf("%*d\n"); // expected-warning{{'*' specified field width is missing a matching 'int' argument}}
-  printf("%*.*d\n", x); // expected-warning{{'.*' specified field precision is missing a matching 'int' argument}}
-  printf("%*d\n", f, x); // expected-warning{{field width should have type 'int', but argument has type 'double'}}
-  printf("%*.*d\n", x, f, x); // expected-warning{{field precision should have type 'int', but argument has type 'double'}}
-  printf("%**\n"); // expected-warning{{invalid conversion specifier '*'}}
-  printf("%d%d\n", x); // expected-warning{{more '%' conversions than data arguments}}
-  printf("%d\n", x, x); // expected-warning{{data argument not used by format string}}
-  printf("%W%d%Z\n", x, x, x); // expected-warning{{invalid conversion specifier 'W'}} expected-warning{{invalid conversion specifier 'Z'}}
-  printf("%"); // expected-warning{{incomplete format specifier}}
-  printf("%.d", x); // no-warning
-  printf("%.", x);  // expected-warning{{incomplete format specifier}}
-  printf("%f", 4); // expected-warning{{format specifies type 'double' but the argument has type 'int'}}
-  printf("%qd", lli); // no-warning
-  printf("%qd", x); // expected-warning{{format specifies type 'long long' but the argument has type 'int'}}
-  printf("%qp", (void *)0); // expected-warning{{length modifier 'q' results in undefined behavior or no effect with 'p' conversion specifier}}
-  printf("hhX %hhX", (unsigned char)10); // no-warning
-  printf("llX %llX", (long long) 10); // no-warning
-  // This is fine, because there is an implicit conversion to an int.
-  printf("%d", (unsigned char) 10); // no-warning
-  printf("%d", (long long) 10); // expected-warning{{format specifies type 'int' but the argument has type 'long long'}}
-  printf("%Lf\n", (long double) 1.0); // no-warning
-  printf("%f\n", (long double) 1.0); // expected-warning{{format specifies type 'double' but the argument has type 'long double'}}
-  // The man page says that a zero precision is okay.
-  printf("%.0Lf", (long double) 1.0); // no-warning
-  printf("%c\n", "x"); // expected-warning{{format specifies type 'int' but the argument has type 'char *'}}
-  printf("%c\n", 1.23); // expected-warning{{format specifies type 'int' but the argument has type 'double'}}
-  printf("Format %d, is %! %f", 1, 2, 4.4); // expected-warning{{invalid conversion specifier '!'}}
-}
-
-typedef unsigned char uint8_t;
-
-void should_understand_small_integers() {
-  printf("%hhu", (short) 10); // expected-warning{{format specifies type 'unsigned char' but the argument has type 'short'}}
-  printf("%hu\n", (unsigned char) 1); // expected-warning{{format specifies type 'unsigned short' but the argument has type 'unsigned char'}}
-  printf("%hu\n", (uint8_t)1); // expected-warning{{format specifies type 'unsigned short' but the argument has type 'uint8_t'}}
-}
-
-void test11(void *p, char *s) {
-  printf("%p", p); // no-warning
-  printf("%p", 123); // expected-warning{{format specifies type 'void *' but the argument has type 'int'}}
-  printf("%.4p", p); // expected-warning{{precision used with 'p' conversion specifier, resulting in undefined behavior}}
-  printf("%+p", p); // expected-warning{{flag '+' results in undefined behavior with 'p' conversion specifier}}
-  printf("% p", p); // expected-warning{{flag ' ' results in undefined behavior with 'p' conversion specifier}}
-  printf("%0p", p); // expected-warning{{flag '0' results in undefined behavior with 'p' conversion specifier}}
-  printf("%s", s); // no-warning
-  printf("%+s", p); // expected-warning{{flag '+' results in undefined behavior with 's' conversion specifier}}
-  printf("% s", p); // expected-warning{{flag ' ' results in undefined behavior with 's' conversion specifier}}
-  printf("%0s", p); // expected-warning{{flag '0' results in undefined behavior with 's' conversion specifier}}
-}
-
-void test12(char *b) {
-  unsigned char buf[4];
-  printf ("%.4s\n", buf); // no-warning
-  printf ("%.4s\n", &buf); // expected-warning{{format specifies type 'char *' but the argument has type 'unsigned char (*)[4]'}}
-  
-  // Verify that we are checking asprintf
-  asprintf(&b, "%d", "asprintf"); // expected-warning{{format specifies type 'int' but the argument has type 'char *'}}
-}
-
-void test13(short x) {
-  char bel = 007;
-  printf("bel: '0%hhd'\n", bel); // no-warning
-  printf("x: '0%hhd'\n", x); // expected-warning {{format specifies type 'char' but the argument has type 'short'}}
-}
-
-typedef struct __aslclient *aslclient;
-typedef struct __aslmsg *aslmsg;
-int asl_log(aslclient asl, aslmsg msg, int level, const char *format, ...) __attribute__((__format__ (__printf__, 4, 5)));
-void test_asl(aslclient asl) {
-  // Test case from <rdar://problem/7341605>.
-  asl_log(asl, 0, 3, "Error: %m"); // no-warning
-  asl_log(asl, 0, 3, "Error: %W"); // expected-warning{{invalid conversion specifier 'W'}}
-}
-
-// <rdar://problem/7595366>
-typedef enum { A } int_t;
-void f0(int_t x) { printf("%d\n", x); }
-
-// Unicode test cases.  These are possibly specific to Mac OS X.  If so, they should
-// eventually be moved into a separate test.
-
-void test_unicode_conversions(wchar_t *s) {
-  printf("%S", s); // no-warning
-  printf("%s", s); // expected-warning{{format specifies type 'char *' but the argument has type 'wchar_t *'}}
-  printf("%C", s[0]); // no-warning
-  printf("%c", s[0]);
-  // FIXME: This test reports inconsistent results. On Windows, '%C' expects
-  // 'unsigned short'.
-  // printf("%C", 10);
-  printf("%S", "hello"); // expected-warning{{but the argument has type 'char *'}}
-}
-
-// Mac OS X supports positional arguments in format strings.
-// This is an IEEE extension (IEEE Std 1003.1).
-// FIXME: This is probably not portable everywhere.
-void test_positional_arguments() {
-  printf("%0$", (int)2); // expected-warning{{position arguments in format strings start counting at 1 (not 0)}}
-  printf("%1$*0$d", (int) 2); // expected-warning{{position arguments in format strings start counting at 1 (not 0)}}
-  printf("%1$d", (int) 2); // no-warning
-  printf("%1$d", (int) 2, 2); // expected-warning{{data argument not used by format string}}
-  printf("%1$d%1$f", (int) 2); // expected-warning{{format specifies type 'double' but the argument has type 'int'}}
-  printf("%1$2.2d", (int) 2); // no-warning
-  printf("%2$*1$.2d", (int) 2, (int) 3); // no-warning
-  printf("%2$*8$d", (int) 2, (int) 3); // expected-warning{{specified field width is missing a matching 'int' argument}}
-  printf("%%%1$d", (int) 2); // no-warning
-  printf("%1$d%%", (int) 2); // no-warning
-}
-
-// PR 6697 - Handle format strings where the data argument is not adjacent to the format string
-void myprintf_PR_6697(const char *format, int x, ...) __attribute__((__format__(printf,1, 3)));
-void test_pr_6697() {
-  myprintf_PR_6697("%s\n", 1, "foo"); // no-warning
-  myprintf_PR_6697("%s\n", 1, (int)0); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-  // FIXME: Not everything should clearly support positional arguments,
-  // but we need a way to identify those cases.
-  myprintf_PR_6697("%1$s\n", 1, "foo"); // no-warning
-  myprintf_PR_6697("%2$s\n", 1, "foo"); // expected-warning{{data argument position '2' exceeds the number of data arguments (1)}}
-  myprintf_PR_6697("%18$s\n", 1, "foo"); // expected-warning{{data argument position '18' exceeds the number of data arguments (1)}}
-  myprintf_PR_6697("%1$s\n", 1, (int) 0); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-}
-
-void rdar8026030(FILE *fp) {
-  fprintf(fp, "\%"); // expected-warning{{incomplete format specifier}}
-}
-
-void bug7377_bad_length_mod_usage() {
-  // Bad length modifiers
-  printf("%hhs", "foo"); // expected-warning{{length modifier 'hh' results in undefined behavior or no effect with 's' conversion specifier}}
-  printf("%1$zp", (void *)0); // expected-warning{{length modifier 'z' results in undefined behavior or no effect with 'p' conversion specifier}}
-  printf("%ls", L"foo"); // no-warning
-  printf("%#.2Lf", (long double)1.234); // no-warning
-
-  // Bad flag usage
-  printf("%#p", (void *) 0); // expected-warning{{flag '#' results in undefined behavior with 'p' conversion specifier}}
-  printf("%0d", -1); // no-warning
-  printf("%#n", (int *) 0); // expected-warning{{flag '#' results in undefined behavior with 'n' conversion specifier}}
-  printf("%-n", (int *) 0); // expected-warning{{flag '-' results in undefined behavior with 'n' conversion specifier}}
-  printf("%-p", (void *) 0); // no-warning
-
-  // Bad optional amount use
-  printf("%.2c", 'a'); // expected-warning{{precision used with 'c' conversion specifier, resulting in undefined behavior}}
-  printf("%1n", (int *) 0); // expected-warning{{field width used with 'n' conversion specifier, resulting in undefined behavior}}
-  printf("%.9n", (int *) 0); // expected-warning{{precision used with 'n' conversion specifier, resulting in undefined behavior}}
-
-  // Ignored flags
-  printf("% +f", 1.23); // expected-warning{{flag ' ' is ignored when flag '+' is present}}
-  printf("%+ f", 1.23); // expected-warning{{flag ' ' is ignored when flag '+' is present}}
-  printf("%0-f", 1.23); // expected-warning{{flag '0' is ignored when flag '-' is present}}
-  printf("%-0f", 1.23); // expected-warning{{flag '0' is ignored when flag '-' is present}}
-  printf("%-+f", 1.23); // no-warning
-}
-
-// PR 7981 - handle '%lc' (wint_t)
-
-void pr7981(wint_t c, wchar_t c2) {
-  printf("%lc", c); // no-warning
-  printf("%lc", 1.0); // expected-warning{{the argument has type 'double'}}
-  printf("%lc", (char) 1); // no-warning
-  printf("%lc", &c); // expected-warning{{the argument has type 'wint_t *'}}
-  // If wint_t and wchar_t are the same width and wint_t is signed where
-  // wchar_t is unsigned, an implicit conversion isn't possible.
-#if defined(__WINT_UNSIGNED__) || !defined(__WCHAR_UNSIGNED__) ||   \
-  __WINT_WIDTH__ > __WCHAR_WIDTH__
-  printf("%lc", c2); // no-warning
-#endif
-}
-
-// <rdar://problem/8269537> -Wformat-security says NULL is not a string literal
-void rdar8269537() {
-  // This is likely to crash in most cases, but -Wformat-nonliteral technically
-  // doesn't warn in this case.
-  printf(0); // no-warning
-}
-
-// Handle functions with multiple format attributes.
-extern void rdar8332221_vprintf_scanf(const char *, va_list, const char *, ...)
-     __attribute__((__format__(__printf__, 1, 0)))
-     __attribute__((__format__(__scanf__, 3, 4)));
-     
-void rdar8332221(va_list ap, int *x, long *y) {
-  rdar8332221_vprintf_scanf("%", ap, "%d", x); // expected-warning{{incomplete format specifier}}
-}
-
-// PR8641
-void pr8641() {
-  printf("%#x\n", 10);
-  printf("%#X\n", 10);
-}
-
-void posix_extensions() {
-  // Test %'d, "thousands grouping".
-  // <rdar://problem/8816343>
-  printf("%'d\n", 123456789); // no-warning
-  printf("%'i\n", 123456789); // no-warning
-  printf("%'f\n", (float) 1.0); // no-warning
-  printf("%'p\n", (void*) 0); // expected-warning{{results in undefined behavior with 'p' conversion specifier}}
-}
-
-// PR8486
-//
-// Test what happens when -Wformat is on, but -Wformat-security is off.
-#pragma GCC diagnostic warning "-Wformat"
-#pragma GCC diagnostic ignored "-Wformat-security"
-
-void pr8486() {
-  printf("%s", 1); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-}
-
-// PR9314
-// Don't warn about string literals that are PreDefinedExprs, e.g. __func__.
-void pr9314() {
-  printf(__PRETTY_FUNCTION__); // no-warning
-  printf(__func__); // no-warning
-}
-
-int printf(const char * restrict, ...) __attribute__((__format__ (__printf__, 1, 2)));
-
-void rdar9612060(void) {
-  printf("%s", 2); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-}
-
-void check_char(unsigned char x, signed char y) {
-  printf("%c", y); // no-warning
-  printf("%hhu", x); // no-warning
-  printf("%hhi", y); // no-warning
-  printf("%hhi", x); // no-warning
-  printf("%c", x); // no-warning
-  printf("%hhu", y); // no-warning
-}
-
-// Test suppression of individual warnings.
-
-void test_suppress_invalid_specifier() {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wformat-invalid-specifier"
-  printf("%@", 12); // no-warning
-#pragma clang diagnostic pop
-}
-
-// Make sure warnings are on for next test.
-#pragma GCC diagnostic warning "-Wformat"
-#pragma GCC diagnostic warning "-Wformat-security"
-
-// Test that the printf call site is where the warning is attached.  If the
-// format string is somewhere else, point to it in a note.
-void pr9751() {
-  const char kFormat1[] = "%d %d \n"; // expected-note{{format string is defined here}}}
-  printf(kFormat1, 0); // expected-warning{{more '%' conversions than data arguments}}
-  printf("%d %s\n", 0); // expected-warning{{more '%' conversions than data arguments}}
-
-  const char kFormat2[] = "%18$s\n"; // expected-note{{format string is defined here}}
-  printf(kFormat2, 1, "foo"); // expected-warning{{data argument position '18' exceeds the number of data arguments (2)}}
-  printf("%18$s\n", 1, "foo"); // expected-warning{{data argument position '18' exceeds the number of data arguments (2)}}
-
-  const char kFormat4[] = "%y"; // expected-note{{format string is defined here}}
-  printf(kFormat4, 5); // expected-warning{{invalid conversion specifier 'y'}}
-  printf("%y", 5); // expected-warning{{invalid conversion specifier 'y'}}
-
-  const char kFormat5[] = "%."; // expected-note{{format string is defined here}}
-  printf(kFormat5, 5); // expected-warning{{incomplete format specifier}}
-  printf("%.", 5); // expected-warning{{incomplete format specifier}}
-
-  const char kFormat6[] = "%s"; // expected-note{{format string is defined here}}
-  printf(kFormat6, 5); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-  printf("%s", 5); // expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-
-  const char kFormat7[] = "%0$"; // expected-note{{format string is defined here}}
-  printf(kFormat7, 5); // expected-warning{{position arguments in format strings start counting at 1 (not 0)}}
-  printf("%0$", 5); // expected-warning{{position arguments in format strings start counting at 1 (not 0)}}
-
-  const char kFormat8[] = "%1$d %d"; // expected-note{{format string is defined here}}
-  printf(kFormat8, 4, 4); // expected-warning{{cannot mix positional and non-positional arguments in format string}}
-  printf("%1$d %d", 4, 4); // expected-warning{{cannot mix positional and non-positional arguments in format string}}
-
-  const char kFormat9[] = ""; // expected-note{{format string is defined here}}
-  printf(kFormat9, 4, 4); // expected-warning{{format string is empty}}
-  printf("", 4, 4); // expected-warning{{format string is empty}}
-
-  const char kFormat10[] = "\0%d"; // expected-note{{format string is defined here}}
-  printf(kFormat10, 4); // expected-warning{{format string contains '\0' within the string body}}
-  printf("\0%d", 4); // expected-warning{{format string contains '\0' within the string body}}
-
-  const char kFormat11[] = "%*d"; // expected-note{{format string is defined here}}
-  printf(kFormat11); // expected-warning{{'*' specified field width is missing a matching 'int' argument}}
-  printf("%*d"); // expected-warning{{'*' specified field width is missing a matching 'int' argument}}
-
-  const char kFormat12[] = "%*d"; // expected-note{{format string is defined here}}
-  printf(kFormat12, 4.4); // expected-warning{{field width should have type 'int', but argument has type 'double'}}
-  printf("%*d", 4.4); // expected-warning{{field width should have type 'int', but argument has type 'double'}}
-
-  const char kFormat13[] = "%.3p"; // expected-note{{format string is defined here}}
-  void *p;
-  printf(kFormat13, p); // expected-warning{{precision used with 'p' conversion specifier, resulting in undefined behavior}}
-  printf("%.3p", p); // expected-warning{{precision used with 'p' conversion specifier, resulting in undefined behavior}}
-
-  const char kFormat14[] = "%0s"; // expected-note{{format string is defined here}}
-  printf(kFormat14, "a"); // expected-warning{{flag '0' results in undefined behavior with 's' conversion specifier}}
-  printf("%0s", "a"); // expected-warning{{flag '0' results in undefined behavior with 's' conversion specifier}}
-
-  const char kFormat15[] = "%hhs"; // expected-note{{format string is defined here}}
-  printf(kFormat15, "a"); // expected-warning{{length modifier 'hh' results in undefined behavior or no effect with 's' conversion specifier}}
-  printf("%hhs", "a"); // expected-warning{{length modifier 'hh' results in undefined behavior or no effect with 's' conversion specifier}}
-
-  const char kFormat16[] = "%-0d"; // expected-note{{format string is defined here}}
-  printf(kFormat16, 5); // expected-warning{{flag '0' is ignored when flag '-' is present}}
-  printf("%-0d", 5); // expected-warning{{flag '0' is ignored when flag '-' is present}}
-
-  // Make sure that the "format string is defined here" note is not emitted
-  // when the original string is within the argument expression.
-  printf(1 ? "yes %d" : "no %d"); // expected-warning 2{{more '%' conversions than data arguments}}
-
-  const char kFormat17[] = "%hu"; // expected-note{{format string is defined here}}}
-  printf(kFormat17, (int[]){0}); // expected-warning{{format specifies type 'unsigned short' but the argument}}
-
-  printf("%a", (long double)0); // expected-warning{{format specifies type 'double' but the argument has type 'long double'}}
-
-  // Test braced char[] initializers.
-  const char kFormat18[] = { "%lld" }; // expected-note{{format string is defined here}}
-  printf(kFormat18, 0); // expected-warning{{format specifies type}}
-
-  // Make sure we point at the offending argument rather than the format string.
-  const char kFormat19[] = "%d";  // expected-note{{format string is defined here}}
-  printf(kFormat19,
-         0.0); // expected-warning{{format specifies}}
-}
-
-void __attribute__((format(strfmon,1,2))) monformat(const char *fmt, ...);
-void __attribute__((format(strftime,1,0))) dateformat(const char *fmt);
-
-// Other formats
-void test_other_formats() {
-  char *str = "";
-  monformat("", 1); // expected-warning{{format string is empty}}
-  monformat(str); // expected-warning{{format string is not a string literal (potentially insecure)}}
-  dateformat(""); // expected-warning{{format string is empty}}
-  dateformat(str); // no-warning (using strftime non literal is not unsafe)
-}
-
-// Do not warn about unused arguments coming from system headers.
-// <rdar://problem/11317765>
-#include <format-unused-system-args.h>
-void test_unused_system_args(int x) {
-  PRINT1("%d\n", x); // no-warning{{extra argument is system header is OK}}
-}
-
-void pr12761(char c) {
-  // This should not warn even with -fno-signed-char.
-  printf("%hhx", c);
-}
-
-
-// Test that we correctly merge the format in both orders.
-extern void test14_foo(const char *, const char *, ...)
-     __attribute__((__format__(__printf__, 1, 3)));
-extern void test14_foo(const char *, const char *, ...)
-     __attribute__((__format__(__scanf__, 2, 3)));
-
-extern void test14_bar(const char *, const char *, ...)
-     __attribute__((__format__(__scanf__, 2, 3)));
-extern void test14_bar(const char *, const char *, ...)
-     __attribute__((__format__(__printf__, 1, 3)));
-
-void test14_zed(int *p) {
-  test14_foo("%", "%d", p); // expected-warning{{incomplete format specifier}}
-  test14_bar("%", "%d", p); // expected-warning{{incomplete format specifier}}
-}
-
-void test_qualifiers(volatile int *vip, const int *cip,
-                     const volatile int *cvip) {
-  printf("%n", cip); // expected-warning{{format specifies type 'int *' but the argument has type 'const int *'}}
-  printf("%n", cvip); // expected-warning{{format specifies type 'int *' but the argument has type 'const volatile int *'}}
-
-  printf("%n", vip); // No warning.
-  printf("%p", cip); // No warning.
-  printf("%p", cvip); // No warning.
-
-
-  typedef int* ip_t;
-  typedef const int* cip_t;
-  printf("%n", (ip_t)0); // No warning.
-  printf("%n", (cip_t)0); // expected-warning{{format specifies type 'int *' but the argument has type 'cip_t' (aka 'const int *')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/fp16-sema.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/fp16-sema.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/fp16-sema.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Functions cannot have parameters of type __fp16.
-extern void f (__fp16); // expected-error {{parameters cannot have __fp16 type; did you forget * ?}}
-extern void g (__fp16 *);
-
-extern void (*pf) (__fp16);  // expected-error {{parameters cannot have __fp16 type; did you forget * ?}}
-extern void (*pg) (__fp16*);
-
-typedef void(*tf) (__fp16);  // expected-error {{parameters cannot have __fp16 type; did you forget * ?}}
-typedef void(*tg) (__fp16*);
-
-void kf(a)
- __fp16 a; {  // expected-error {{parameters cannot have __fp16 type; did you forget * ?}}
-}
-
-void kg(a)
- __fp16 *a; {
-}
-
-// Functions cannot return type __fp16.
-extern __fp16 f1 (void); // expected-error {{function return value cannot have __fp16 type; did you forget * ?}}
-extern __fp16 *g1 (void);
-
-extern __fp16 (*pf1) (void); // expected-error {{function return value cannot have __fp16 type; did you forget * ?}}
-extern __fp16 *(*gf1) (void);
-
-typedef __fp16 (*tf1) (void); // expected-error {{function return value cannot have __fp16 type; did you forget * ?}}
-typedef __fp16 *(*tg1) (void);
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/fpack-struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/fpack-struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/fpack-struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -DEXPECTED_STRUCT_SIZE=5 -fpack-struct=1 %s
-// RUN: %clang_cc1 -DEXPECTED_STRUCT_SIZE=6 -fpack-struct=2 %s
-
-struct s0 {
-       int x;
-       char c;
-};
-
-int t0[sizeof(struct s0) == EXPECTED_STRUCT_SIZE ?: -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/freemain.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/freemain.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/freemain.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -ffreestanding %s
-
-// Tests that -ffreestanding disables all special treatment of main().
-
-void* allocate(long size);
-
-void* main(void* context, long size) {
-  if (context) return allocate(size);
-} // expected-warning {{control may reach end of non-void function}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/function-ptr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/function-ptr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/function-ptr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic
-typedef int unary_int_func(int arg);
-unary_int_func *func;
-
-unary_int_func *set_func(void *p) {
- func = p; // expected-warning {{converts between void pointer and function pointer}}
- p = func; // expected-warning {{converts between void pointer and function pointer}}
-
- return p; // expected-warning {{converts between void pointer and function pointer}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/function-redecl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/function-redecl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/function-redecl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,133 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR3588
-void g0(int, int);
-void g0(); // expected-note{{previous declaration is here}} expected-note{{'g0' declared here}}
-
-void f0() {
-  g0(1, 2, 3); // expected-error{{too many arguments to function call}}
-}
-
-void g0(int); // expected-error{{conflicting types for 'g0'}}
-
-int g1(int, int);
-
-typedef int INT;
-
-INT g1(x, y)
-     int x;
-     int y;
-{
-  return x + y;
-}
-
-int g2(int, int); // expected-note{{previous declaration is here}}
-
-INT g2(x) // expected-error{{conflicting types for 'g2'}}
-     int x;
-{
-  return x;
-}
-
-void test() {
-  int f1;
-  {
-    void f1(double);
-    {
-      void f1(double); // expected-note{{previous declaration is here}}
-      {
-        int f1(int); // expected-error{{conflicting types for 'f1'}}
-      }
-    }
-  }
-}
-
-extern void g3(int); // expected-note{{previous declaration is here}}
-static void g3(int x) { } // expected-error{{static declaration of 'g3' follows non-static declaration}}
-
-void test2() {
-  extern int f2; // expected-note 2 {{previous definition is here}}
-  {
-    void f2(int); // expected-error{{redefinition of 'f2' as different kind of symbol}}
-  }
-
-  {
-    int f2;
-    {
-      void f2(int); // expected-error{{redefinition of 'f2' as different kind of symbol}}
-    }
-  }
-}
-
-// <rdar://problem/6127293>
-int outer1(int); // expected-note{{previous declaration is here}}
-struct outer3 { };
-int outer4(int); // expected-note{{previous declaration is here}}
-int outer5; // expected-note{{previous definition is here}}
-int *outer7(int);
-
-void outer_test() {
-  int outer1(float); // expected-error{{conflicting types for 'outer1'}}
-  int outer2(int); // expected-note{{previous declaration is here}}
-  int outer3(int); // expected-note{{previous declaration is here}}
-  int outer4(int);
-  int outer5(int); // expected-error{{redefinition of 'outer5' as different kind of symbol}}
-  int* outer6(int); // expected-note{{previous declaration is here}}
-  int *outer7(int);
-  int outer8(int);
-
-  int *ip7 = outer7(6);
-}
-
-int outer2(float); // expected-error{{conflicting types for 'outer2'}}
-int outer3(float); // expected-error{{conflicting types for 'outer3'}}
-int outer4(float); // expected-error{{conflicting types for 'outer4'}}
-
-void outer_test2(int x) {
-  int* ip = outer6(x); // expected-warning{{use of out-of-scope declaration of 'outer6'}}
-  int *ip2 = outer7(x);
-}
-
-void outer_test3() {
-  int *(*fp)(int) = outer8; // expected-error{{use of undeclared identifier 'outer8'}}
-}
-
-enum e { e1, e2 };
-
-// GNU extension: prototypes and K&R function definitions
-int isroot(short x, // expected-note{{previous declaration is here}}
-           enum e); 
-
-int isroot(x, y)
-     short x; // expected-warning{{promoted type 'int' of K&R function parameter is not compatible with the parameter type 'short' declared in a previous prototype}}
-     unsigned int y;
-{
-  return x == 1;
-}
-
-// PR3817
-void *h0(unsigned a0,     ...);
-extern __typeof (h0) h1 __attribute__((__sentinel__));
-extern __typeof (h1) h1 __attribute__((__sentinel__));
-
-// PR3840
-void i0 (unsigned short a0);
-extern __typeof (i0) i1;
-extern __typeof (i1) i1;
-
-typedef int a();
-typedef int a2(int*);
-a x;
-a2 x2; // expected-note{{passing argument to parameter here}}
-void test_x() {
-  x(5);
-  x2(5); // expected-warning{{incompatible integer to pointer conversion passing 'int' to parameter of type 'int *'}}
-}
-
-enum e0 {one}; 
-void f3(); 
-void f3(enum e0 x) {}
-
-enum incomplete_enum;
-void f4(); // expected-note {{previous declaration is here}}
-void f4(enum incomplete_enum); // expected-error {{conflicting types for 'f4'}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/function.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/function.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/function.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,105 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
-
-// PR1892, PR11354
-void f(double a[restrict][5]) { __typeof(a) x = 10; } // expected-warning {{(aka 'double (*restrict)[5]')}}
-
-int foo (__const char *__path);
-int foo(__const char *__restrict __file);
-
-void func(const char*); // expected-note {{previous declaration is here}}
-void func(char*); // expected-error{{conflicting types for 'func'}}
-
-void g(int (*)(const void **, const void **));
-void g(int (*compar)()) {
-}
-
-void h();  // expected-note {{previous declaration is here}}
-void h (const char *fmt, ...) {} // expected-error{{conflicting types for 'h'}}
-
-// PR1965
-int t5(b);          // expected-error {{parameter list without types}}
-int t6(int x, g);   // expected-warning {{type specifier missing, defaults to 'int'}}
-
-int t7(, );       // expected-error {{expected parameter declarator}} expected-error {{expected parameter declarator}}
-int t8(, int a);  // expected-error {{expected parameter declarator}}
-int t9(int a, );  // expected-error {{expected parameter declarator}}
-
-
-// PR2042
-void t10(){}
-void t11(){t10(1);} // expected-warning{{too many arguments}}
-
-// PR3208
-void t12(int) {}  // expected-error{{parameter name omitted}}
-
-// PR2790
-void t13() {
-  return 0; // expected-error {{void function 't13' should not return a value}}
-}
-int t14() {
-  return; // expected-error {{non-void function 't14' should return a value}}
-}
-
-// <rdar://problem/6097326>
-y(y) { return y; } // expected-warning{{parameter 'y' was not declared, defaulting to type 'int'}} \
-                   // expected-warning{{type specifier missing, defaults to 'int'}}
-
-
-// PR3137, <rdar://problem/6127293>
-extern int g0_3137(void);
-void f0_3137() {
-  int g0_3137(void);
-}
-void f1_3137() {
-  int (*fp)(void) = g0_3137;
-}
-
-void f1static() {
-  static void f2static(int); // expected-error{{function declared in block scope cannot have 'static' storage class}}
-  register void f2register(int); // expected-error{{illegal storage class on function}}
-}
-
-struct incomplete_test a(void) {} // expected-error{{incomplete result type 'struct incomplete_test' in function definition}} \
-    // expected-note{{forward declaration of 'struct incomplete_test'}}
-
-
-extern __inline
-__attribute__((__gnu_inline__))
-void gnu_inline1() {}
-
-void
-__attribute__((__gnu_inline__)) // expected-warning {{'gnu_inline' attribute requires function to be marked 'inline', attribute ignored}}
-gnu_inline2() {}
-
-
-// rdar://6802350
-inline foo_t invalid_type() {  // expected-error {{unknown type name 'foo_t'}}
-}
-
-typedef void fn_t(void);
-fn_t t17;
-
-// PR4049
-unknown_type t18(void*) {   // expected-error {{unknown type name 'unknown_type'}} expected-error{{parameter name omitted}}
-}
-
-unknown_type t19(int* P) {   // expected-error {{unknown type name 'unknown_type'}}
-  P = P+1;  // no warning.
-}
-
-// missing ',' before '...'
-void t20(int i...) { } // expected-error {{requires a comma}}
-
-int n;
-void t21(int n, int (*array)[n]);
-
-int func_e(int x) {
-  int func_n(int y) { // expected-error {{function definition is not allowed here}}
-    if (y > 22) {
-      return y+2;
-    } else {
-      return y-2;
-    }
-  }
-  return x + 3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/generic-selection.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/generic-selection.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/generic-selection.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -std=c1x -fsyntax-only -verify %s
-
-void foo(int n) {
-  (void) _Generic(0,
-      struct A: 0, // expected-error {{type 'struct A' in generic association incomplete}}
-      void(): 0,   // expected-error {{type 'void ()' in generic association not an object type}}
-      int[n]: 0);  // expected-error {{type 'int [n]' in generic association is a variably modified type}}
-
-  (void) _Generic(0,
-      void (*)():     0,  // expected-note {{compatible type 'void (*)()' specified here}}
-      void (*)(void): 0); // expected-error {{type 'void (*)(void)' in generic association compatible with previously specified type 'void (*)()'}}
-
-  (void) _Generic((void (*)()) 0, // expected-error {{controlling expression type 'void (*)()' compatible with 2 generic association types}}
-      void (*)(int):  0,  // expected-note {{compatible type 'void (*)(int)' specified here}}
-      void (*)(void): 0); // expected-note {{compatible type 'void (*)(void)' specified here}}
-
-  (void) _Generic(0, // expected-error {{controlling expression type 'int' not compatible with any generic association type}}
-      char: 0, short: 0, long: 0);
-
-  int a1[_Generic(0, int: 1, short: 2, float: 3, default: 4) == 1 ? 1 : -1];
-  int a2[_Generic(0, default: 1, short: 2, float: 3, int: 4) == 4 ? 1 : -1];
-  int a3[_Generic(0L, int: 1, short: 2, float: 3, default: 4) == 4 ? 1 : -1];
-  int a4[_Generic(0L, default: 1, short: 2, float: 3, int: 4) == 1 ? 1 : -1];
-  int a5[_Generic(0, int: 1, short: 2, float: 3) == 1 ? 1 : -1];
-  int a6[_Generic(0, short: 1, float: 2, int: 3) == 3 ? 1 : -1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/gnu89.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/gnu89.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/gnu89.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -std=gnu89 -pedantic -fsyntax-only -verify
-
-int f(int restrict);
-
-void main() {} // expected-warning {{return type of 'main' is not 'int'}} expected-note {{change return type to 'int'}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/heinous-extensions-off.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/heinous-extensions-off.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/heinous-extensions-off.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -verify
-
-int foo() {
-        int a;
-        // PR3788
-        asm("nop" : : "m"((int)(a))); // expected-error {{cast in a inline asm context requiring an l-value}}
-        // PR3794
-        asm("nop" : "=r"((unsigned)a)); // expected-error {{cast in a inline asm context requiring an l-value}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/heinous-extensions-on.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/heinous-extensions-on.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/heinous-extensions-on.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fheinous-gnu-extensions
-
-void foo() {
-  int a;
-  // PR3788
-  asm("nop" : : "m"((int)(a))); // expected-warning {{cast in an inline asm context requiring an l-value}}
-  // PR3794
-  asm("nop" : "=r"((unsigned)a)); // expected-warning {{cast in an inline asm context requiring an l-value}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/i-c-e.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/i-c-e.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/i-c-e.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang %s -ffreestanding -Wno-int-to-pointer-cast -fsyntax-only -Xclang -verify -pedantic -fpascal-strings -std=c99
-
-#include <stdint.h>
-#include <limits.h>
-
-int a() {int p; *(1 ? &p : (void*)(0 && (a(),1))) = 10;} // expected-error {{incomplete type 'void' is not assignable}}
-
-// rdar://6091492 - ?: with __builtin_constant_p as the operand is an i-c-e.
-int expr;
-char w[__builtin_constant_p(expr) ? expr : 1];
-
-char v[sizeof(__builtin_constant_p(0)) == sizeof(int) ? 1 : -1];
-
-int implicitConversion = 1.0;
-char floatArith[(int)(1.0+2.0)]; // expected-warning {{must be an integer constant expression}}
-
-// __builtin_constant_p as the condition of ?: allows arbitrary foldable
-// constants to be transmogrified into i-c-e's.
-char b[__builtin_constant_p((int)(1.0+2.0)) ? (int)(1.0+2.0) : -1];
-
-struct c {
-  int a : (
-           __builtin_constant_p((int)(1.0+2.0)) ? (int)(1.0+
-     expr // expected-error {{expression is not an integer constant expression}}
-           ) : -1);
-};
-
-
-
-
-void test1(int n, int* p) { *(n ? p : (void *)(7-7)) = 1; }
-void test2(int n, int* p) { *(n ? p : (void *)0) = 1; }
-
-
-
-char array[1024/(sizeof (long))];
-
-int x['\xBb' == (char) 187 ? 1: -1];
-
-// PR1992
-void func(int x)
-{
-  switch (x) {
-    case sizeof("abc"): break;
-    case sizeof("loooong"): func(4);
-    case sizeof("\ploooong"): func(4);
-  }
-}
-
-
-// rdar://4213768
-int expr;
-char y[__builtin_constant_p(expr) ? -1 : 1];
-char z[__builtin_constant_p(4) ? 1 : -1];
-
-// Comma tests
-int comma1[0?1,2:3];
-int comma2[1||(1,2)]; // expected-warning {{use of logical '||' with constant operand}} \
-                      // expected-note {{use '|' for a bitwise operation}}
-int comma3[(1,2)]; // expected-warning {{size of static array must be an integer constant expression}}
-
-// Pointer + __builtin_constant_p
-char pbcp[__builtin_constant_p(4) ? (intptr_t)&expr : 0]; // expected-error {{variable length array declaration not allowed at file scope}}
-
-int illegaldiv1a[1 || 1/0];
-int illegaldiv1b[1 && 1/0];  //expected-error{{variable length array declaration not allowed at file scope}}
-
-int illegaldiv2[1/0]; // expected-error {{variable length array declaration not allowed at file scope}}
-int illegaldiv3[INT_MIN / -1]; // expected-error {{variable length array declaration not allowed at file scope}}
-// PR9262
-int illegaldiv4[0 / (1 / 0)]; // expected-error {{variable length array declaration not allowed at file scope}}
-
-int chooseexpr[__builtin_choose_expr(1, 1, expr)];
-int realop[(__real__ 4) == 4 ? 1 : -1];
-int imagop[(__imag__ 4) == 0 ? 1 : -1];
-
-int *PR14729 = 0 ?: 1/0; // expected-error {{not a compile-time constant}} expected-warning 3{{}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/illegal-types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/illegal-types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/illegal-types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -x c++ -std=c++98 %s
-
-void a (void []()); // expected-error{{'type name' declared as array of functions}}
-void b (void p[]()); // expected-error{{'p' declared as array of functions}}
-void c (int &[]); // expected-error{{'type name' declared as array of references}}
-void d (int &p[]); // expected-error{{'p' declared as array of references}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-void f() {
-  int *ptr = malloc(sizeof(int) * 10); // expected-warning{{implicitly declaring library function 'malloc' with type}} \
-  // expected-note{{please include the header <stdlib.h> or explicitly provide a declaration for 'malloc'}} \
-  // expected-note{{'malloc' is a builtin with type 'void *}}
-}
-
-void *alloca(__SIZE_TYPE__); // redeclaration okay
-
-int *calloc(__SIZE_TYPE__, __SIZE_TYPE__); // expected-warning{{incompatible redeclaration of library function 'calloc'}} \
-                    // expected-note{{'calloc' is a builtin with type 'void *}}
-
-
-void g(int malloc) { // okay: these aren't functions
-  int calloc = 1;
-}
-
-void h() {
-  int malloc(int); // expected-warning{{incompatible redeclaration of library function 'malloc'}}
-  int strcpy(int); // expected-warning{{incompatible redeclaration of library function 'strcpy'}} \
-  // expected-note{{'strcpy' is a builtin with type 'char *(char *, const char *)'}}
-}
-
-void f2() {
-  fprintf(0, "foo"); // expected-warning{{declaration of built-in function 'fprintf' requires inclusion of the header <stdio.h>}} \
-   expected-warning {{implicit declaration of function 'fprintf' is invalid in C99}}
-}
-
-// PR2892
-void __builtin_object_size(); // expected-error{{conflicting types}} \
-// expected-note{{'__builtin_object_size' is a builtin with type}}
-
-int a[10];
-
-int f0() {
-  return __builtin_object_size(&a); // expected-error {{too few arguments to function}}
-}
-
-void * realloc(void *p, int size) { // expected-warning{{incompatible redeclaration of library function 'realloc'}} \
-// expected-note{{'realloc' is a builtin with type 'void *(void *,}}
-  return p;
-}
-
-// PR3855
-void snprintf(); // expected-warning{{incompatible redeclaration of library function 'snprintf'}} \
-    // expected-note{{'snprintf' is a builtin}}
-
-int
-main(int argc, char *argv[])
-{
-  snprintf();
-}
-
-void snprintf() { }
-
-// PR8316
-void longjmp(); // expected-warning{{declaration of built-in function 'longjmp' requires inclusion of the header <setjmp.h>}}
-
-extern float fmaxf(float, float);

Modified: trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-freestanding.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-freestanding.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-freestanding.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -ffreestanding %s
-// expected-no-diagnostics
-
-int malloc(int a) { return a; }
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-redecl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-redecl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/implicit-builtin-redecl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR3592
-static void* malloc(int);
-static void* malloc(int size) {
-  return ((void*)0); /*do not use heap in this file*/
-}
-
-void *calloc(int, int, int); // expected-warning{{incompatible redeclaration of library function 'calloc'}} \
-// expected-note{{'calloc' is a builtin with type 'void *}}
-
-void f1(void) { 
-  calloc(0, 0, 0);
-}
-
-void f2() {
-  int index = 1;
-}
-
-static int index;
-
-int f3() {
-  return index << 2;
-}
-
-typedef int rindex;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/implicit-cast-dump.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/implicit-cast-dump.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/implicit-cast-dump.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -ast-dump %s | FileCheck %s
-
-void foo1(void*);
-void foo2(void* const);
-
-
-void bar() {
-  // CHECK:  FunctionDecl {{.*}} <line:{{.*}}, line:{{.*}}> bar 'void ()'
-
-  foo1(0);
-  // CHECK: ImplicitCastExpr {{.*}} <col:{{.*}}> 'void *' <NullToPointer>
-
-  foo2(0);
-  // CHECK: ImplicitCastExpr {{.*}} <col:{{.*}}> 'void *' <NullToPointer>
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/implicit-cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/implicit-cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/implicit-cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-static char *test1(int cf) {
-  return cf ? "abc" : 0;
-}
-static char *test2(int cf) {
-  return cf ? 0 : "abc";
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/implicit-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/implicit-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/implicit-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -Werror
-
-typedef int int32_t;
-typedef unsigned char Boolean;
-
-extern int printf(__const char *__restrict __format, ...); // expected-note{{'printf' declared here}}
-
-void func() {
-   int32_t *vector[16];
-   const char compDesc[16 + 1];
-   int32_t compCount = 0;
-   if (_CFCalendarDecomposeAbsoluteTimeV(compDesc, vector, compCount)) { // expected-note {{previous implicit declaration is here}} \
-         expected-error {{implicit declaration of function '_CFCalendarDecomposeAbsoluteTimeV' is invalid in C99}}
-   }
-
-   printg("Hello, World!\n"); // expected-error{{implicit declaration of function 'printg' is invalid in C99}} \
-                              // expected-note{{did you mean 'printf'?}}
-
-  __builtin_is_les(1, 3); // expected-error{{use of unknown builtin '__builtin_is_les'}}
-}
-Boolean _CFCalendarDecomposeAbsoluteTimeV(const char *componentDesc, int32_t **vector, int32_t count) { // expected-error{{conflicting types for '_CFCalendarDecomposeAbsoluteTimeV'}}
- return 0;
-}
-
-
-// Test the typo-correction callback in Sema::ImplicitlyDefineFunction
-extern int sformatf(char *str, __const char *__restrict __format, ...); // expected-note{{'sformatf' declared here}}
-void test_implicit() {
-  int formats = 0;
-  formatd("Hello, World!\n"); // expected-error{{implicit declaration of function 'formatd' is invalid in C99}} \
-                              // expected-note{{did you mean 'sformatf'?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/implicit-def.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/implicit-def.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/implicit-def.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only %s -std=c89
- * RUN: not %clang_cc1 -fsyntax-only %s -std=c99 -pedantic-errors
- */
-
-int A() {
-  return X();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/implicit-int.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/implicit-int.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/implicit-int.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -pedantic
-
-foo() { // expected-warning {{type specifier missing, defaults to 'int'}}
-  return 0;
-}
-
-y;  // expected-warning {{type specifier missing, defaults to 'int'}}
-
-// rdar://6131634
-void f((x));  // expected-warning {{type specifier missing, defaults to 'int'}}
-
-
-// PR3702
-#define PAD(ms10) { \
-    register i;     \
-}
-
-#define ILPAD() PAD((NROW - tt.tt_row) * 10) /* 1 ms per char */
-
-void
-h19_insline(n)  // expected-warning {{parameter 'n' was not declared, defaulting to type 'int'}}
-{
-  ILPAD();  // expected-warning {{type specifier missing, defaults to 'int'}}
-}
-
-struct foo {
- __extension__ __attribute__((packed)) x : 4; // expected-warning {{type specifier missing, defaults to 'int'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/incompatible-sign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/incompatible-sign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/incompatible-sign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-int a(int* x); // expected-note{{passing argument to parameter 'x' here}}
-int b(unsigned* y) { return a(y); } // expected-warning {{passing 'unsigned int *' to parameter of type 'int *' converts between pointers to integer types with different sign}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/incomplete-call.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/incomplete-call.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/incomplete-call.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct foo; // expected-note 3 {{forward declaration of 'struct foo'}}
-
-struct foo a(); // expected-note {{'a' declared here}}
-void b(struct foo);
-void c();
-
-void func(void *p) {
-  a(); // expected-error{{calling 'a' with incomplete return type 'struct foo'}}
-  b(*(struct foo*)p); // expected-error{{argument type 'struct foo' is incomplete}}
-  c(*(struct foo*)p); // expected-error{{argument type 'struct foo' is incomplete}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/incomplete-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/incomplete-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/incomplete-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct foo; // expected-note 5 {{forward declaration of 'struct foo'}}
-
-void b;  // expected-error {{variable has incomplete type 'void'}}
-struct foo f; // expected-error{{tentative definition has type 'struct foo' that is never completed}}
-
-static void c; // expected-error {{variable has incomplete type 'void'}}
-static struct foo g;  // expected-warning {{tentative definition of variable with internal linkage has incomplete non-array type 'struct foo'}} \
-    expected-error{{tentative definition has type 'struct foo' that is never completed}}
-
-extern void d;
-extern struct foo e;
-
-int ary[]; // expected-warning {{tentative array definition assumed to have one element}}
-struct foo bary[]; // expected-error {{array has incomplete element type 'struct foo'}}
-
-void func() {
-  int ary[]; // expected-error{{definition of variable with array type needs an explicit size or an initializer}}
-  void b; // expected-error {{variable has incomplete type 'void'}}
-  struct foo f; // expected-error {{variable has incomplete type 'struct foo'}}
-}
-
-int h[]; // expected-warning {{tentative array definition assumed to have one element}}
-int (*i)[] = &h+1; // expected-error {{arithmetic on a pointer to an incomplete type 'int []'}}
-
-struct bar j = {1}; // expected-error {{variable has incomplete type 'struct bar'}} \
-    expected-note {{forward declaration of 'struct bar'}}
-struct bar k;
-struct bar { int a; };
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/indirect-goto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/indirect-goto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/indirect-goto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct c {int x;};
-int a(struct c x, long long y) {
-  void const* l1_ptr = &&l1;
-  goto *l1_ptr;
-l1:
-  goto *x; // expected-error{{incompatible type}}
-  goto *y; // expected-warning{{incompatible integer to pointer conversion}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/init-struct-qualified.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/init-struct-qualified.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/init-struct-qualified.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify < %s
-// expected-no-diagnostics
-typedef float CGFloat;
-typedef struct _NSPoint { CGFloat x; CGFloat y; } NSPoint;
-typedef struct _NSSize { CGFloat width; CGFloat height; } NSSize;
-typedef struct _NSRect { NSPoint origin; NSSize size; } NSRect;
-
-extern const NSPoint NSZeroPoint;
-
-extern NSSize canvasSize();
-void func() {
-   const NSRect canvasRect = { NSZeroPoint, canvasSize() };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/init-vector.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/init-vector.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/init-vector.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-typedef float __attribute__((vector_size (16))) v4f_t;
-
-typedef union {
-    struct {
-        float x, y, z, w;
-    }s;
-    v4f_t v;
-} vector_t;
-
-
-vector_t foo(v4f_t p)
-{
-  vector_t v = {.v = p};
-  return v;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,159 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -ffreestanding
-
-#include <stddef.h>
-#include <stdint.h>
-
-typedef void (* fp)(void);
-void foo(void);
-
-// PR clang/3377
-fp a[(short int)1] = { foo };
-
-int myArray[5] = {1, 2, 3, 4, 5};
-int *myPointer2 = myArray;
-int *myPointer = &(myArray[2]);
-
-
-extern int x;
-void *g = &x;
-int *h = &x;
-
-struct union_crash
-{
-    union
-    {
-    };
-};
-
-int test() {
-  int a[10];
-  int b[10] = a; // expected-error {{array initializer must be an initializer list}}
-  int +; // expected-error {{expected identifier or '('}}
-
-  struct union_crash u = { .d = 1 }; // expected-error {{field designator 'd' does not refer to any field in type 'struct union_crash'}}
-}
-
-
-// PR2050
-struct cdiff_cmd {
-          const char *name;
-          unsigned short argc;
-          int (*handler)();
-};
-int cdiff_cmd_open();
-struct cdiff_cmd commands[] = {
-        {"OPEN", 1, &cdiff_cmd_open }
-};
-
-// PR2348
-static struct { int z; } s[2];
-int *t = &(*s).z;
-
-// PR2349
-short *a2(void)
-{
-  short int b;
-  static short *bp = &b; // expected-error {{initializer element is not a compile-time constant}}
-
-  return bp;
-}
-
-int pbool(void) {
-  typedef const _Bool cbool;
-  _Bool pbool1 = (void *) 0;
-  cbool pbool2 = &pbool;
-  return pbool2;
-}
-
-
-// rdar://5870981
-union { float f; unsigned u; } u = { 1.0f };
-
-// rdar://6156694
-int f3(int x) { return x; }
-typedef void (*vfunc)(void);
-void *bar = (vfunc) f3;
-
-// PR2747
-struct sym_reg {
-        char nc_gpreg;
-};
-int sym_fw1a_scr[] = {
-           ((int)(&((struct sym_reg *)0)->nc_gpreg)) & 0,
-           8 * ((int)(&((struct sym_reg *)0)->nc_gpreg))
-};
-
-// PR3001
-struct s1 s2 = { // expected-error {{variable has incomplete type 'struct s1'}}  \
-                 // expected-note {{forward declaration of 'struct s1'}}
-    .a = sizeof(struct s3), // expected-error {{invalid application of 'sizeof'}} \
-                            // expected-note{{forward declaration of 'struct s3'}}
-    .b = bogus // expected-error {{use of undeclared identifier 'bogus'}}
-}
-
-// PR3382
-char t[] = ("Hello");
-
-// <rdar://problem/6094855>
-typedef struct { } empty;
-
-typedef struct {
-  empty e;
-  int i2;
-} st;
-
-st st1 = { .i2 = 1 };
-
-// <rdar://problem/6096826>
-struct {
-  int a;
-  int z[2];
-} y = { .z = {} };
-
-int bbb[10];
-
-struct foo2 {
-   uintptr_t a;
-};
-
-struct foo2 bar2[] = {
-   { (intptr_t)bbb }
-};
-
-struct foo2 bar3 = { 1, 2 }; // expected-warning{{excess elements in struct initializer}}
-
-int* ptest1 = __builtin_choose_expr(1, (int*)0, (int*)0);
-
-typedef int32_t ivector4 __attribute((vector_size(16)));
-ivector4 vtest1 = 1 ? (ivector4){1} : (ivector4){1};
-ivector4 vtest2 = __builtin_choose_expr(1, (ivector4){1}, (ivector4){1});
-
-uintptr_t ptrasintadd1 = (uintptr_t)&a - 4;
-uintptr_t ptrasintadd2 = (uintptr_t)&a + 4;
-uintptr_t ptrasintadd3 = 4 + (uintptr_t)&a;
-
-// PR4285
-const wchar_t widestr[] = L"asdf";
-
-// PR5447
-const double pr5447 = (0.05 < -1.0) ? -1.0 : 0.0499878;
-
-// PR4386
-
-// None of these are constant initializers, but we implement GCC's old
-// behaviour of accepting bar and zed but not foo. GCC's behaviour was
-// changed in 2007 (rev 122551), so we should be able to change too one
-// day.
-int PR4386_bar();
-int PR4386_foo() __attribute((weak));
-int PR4386_zed();
-
-int PR4386_a = ((void *) PR4386_bar) != 0;
-int PR4386_b = ((void *) PR4386_foo) != 0; // expected-error{{initializer element is not a compile-time constant}}
-int PR4386_c = ((void *) PR4386_zed) != 0;
-int PR4386_zed() __attribute((weak));
-
-// <rdar://problem/10185490> (derived from SPEC vortex benchmark)
-typedef char strty[10];
-struct vortexstruct { strty s; };
-struct vortexstruct vortexvar = { "asdf" };

Modified: trunk/contrib/llvm/tools/clang/test/Sema/initialize-noreturn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/initialize-noreturn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/initialize-noreturn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// rdar://10095762
-
-typedef void (*Fn_noret)(void) __attribute__((noreturn));
-typedef void (*Fn_ret)(void);
-
-void foo(void);
-void foo_noret(void)  __attribute__((noreturn));
-
-void test() {
-  Fn_noret fn2 = &foo; // expected-warning {{incompatible pointer types initializing 'Fn_noret'}}
-  Fn_noret fn3 = &foo_noret; 
-  Fn_ret fn4 = &foo_noret; 
-  Fn_ret fn5 = &foo;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/inline-redef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/inline-redef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/inline-redef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -std=gnu89 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#if __STDC_VERSION__ >= 199901
-#define GNU_INLINE __attribute((__gnu_inline__))
-#else
-#define GNU_INLINE
-#endif
-
-// PR5253
-// rdar://9559708 (same extension in C99 mode)
-// GNU Extension: check that we can redefine an extern inline function
-GNU_INLINE extern inline int f(int a) {return a;}
-int f(int b) {return b;} // expected-note{{previous definition is here}}
-// And now check that we can't redefine a normal function
-int f(int c) {return c;} // expected-error{{redefinition of 'f'}}
-
-// Check that we can redefine an extern inline function as a static function
-GNU_INLINE extern inline int g(int a) {return a;}
-static int g(int b) {return b;}
-
-// Check that we ensure the types of the two definitions are the same
-GNU_INLINE extern inline int h(int a) {return a;} // expected-note{{previous definition is here}}
-int h(short b) {return b;}  // expected-error{{conflicting types for 'h'}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/inline.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/inline.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/inline.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#if defined(INCLUDE)
-// -------
-// This section acts like a header file.
-// -------
-
-// Check the use of static variables in non-static inline functions.
-static int staticVar; // expected-note + {{'staticVar' declared here}}
-static int staticFunction(); // expected-note + {{'staticFunction' declared here}}
-static struct { int x; } staticStruct; // expected-note + {{'staticStruct' declared here}}
-
-inline int useStatic () { // expected-note 3 {{use 'static' to give inline function 'useStatic' internal linkage}}
-  staticFunction(); // expected-warning{{static function 'staticFunction' is used in an inline function with external linkage}}
-  (void)staticStruct.x; // expected-warning{{static variable 'staticStruct' is used in an inline function with external linkage}}
-  return staticVar; // expected-warning{{static variable 'staticVar' is used in an inline function with external linkage}}
-}
-
-extern inline int useStaticFromExtern () { // no suggestions
-  staticFunction(); // expected-warning{{static function 'staticFunction' is used in an inline function with external linkage}}
-  return staticVar; // expected-warning{{static variable 'staticVar' is used in an inline function with external linkage}}
-}
-
-static inline int useStaticFromStatic () {
-  staticFunction(); // no-warning
-  return staticVar; // no-warning
-}
-
-extern inline int useStaticInlineFromExtern () {
-  // Heuristic: if the function we're using is also inline, don't warn.
-  // This can still be wrong (in this case, we end up inlining calls to
-  // staticFunction and staticVar) but this got very noisy even using
-  // standard headers.
-  return useStaticFromStatic(); // no-warning
-}
-
-static int constFunction() __attribute__((const));
-
-inline int useConst () {
-  return constFunction(); // no-warning
-}
-
-#else
-// -------
-// This is the main source file.
-// -------
-
-#define INCLUDE
-#include "inline.c"
-
-// Check that we don't allow illegal uses of inline
-inline int a; // expected-error{{'inline' can only appear on functions}}
-typedef inline int b; // expected-error{{'inline' can only appear on functions}}
-int d(inline int a); // expected-error{{'inline' can only appear on functions}}
-
-// Check that the warnings from the "header file" aren't on by default in
-// the main source file.
-
-inline int useStaticMainFile () {
-  staticFunction(); // no-warning
-  return staticVar; // no-warning
-}
-
-// Check that the warnings show up when explicitly requested.
-
-#pragma clang diagnostic push
-#pragma clang diagnostic warning "-Wstatic-in-inline"
-
-inline int useStaticAgain () { // expected-note 2 {{use 'static' to give inline function 'useStaticAgain' internal linkage}}
-  staticFunction(); // expected-warning{{static function 'staticFunction' is used in an inline function with external linkage}}
-  return staticVar; // expected-warning{{static variable 'staticVar' is used in an inline function with external linkage}}
-}
-
-#pragma clang diagnostic pop
-
-inline void defineStaticVar() { // expected-note {{use 'static' to give inline function 'defineStaticVar' internal linkage}}
-  static const int x = 0; // ok
-  static int y = 0; // expected-warning {{non-constant static local variable in inline function may be different in different files}}
-}
-
-extern inline void defineStaticVarInExtern() {
-  static const int x = 0; // ok
-  static int y = 0; // ok
-}
-
-#endif
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/int-arith-convert.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/int-arith-convert.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/int-arith-convert.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-linux-gnu -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Check types are the same through redeclaration
-unsigned long x;
-__typeof(1u+1l) x;
-
-unsigned y;
-__typeof(1+1u) y;
-__typeof(1u+1) y;
-
-long long z;
-__typeof(1ll+1u) z;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/invalid-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/invalid-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/invalid-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-// expected-no-diagnostics
-// <rdar://problem/13153516> - This previously triggered an assertion failure.
-template<class T>
-struct X {
- T array;
-};
-
-int foo(X<int[1]> x0) {
- return x0.array[17];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/invalid-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/invalid-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/invalid-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-void test() {
-    char = 4;  // expected-error {{expected identifier}}
-}
-
-
-// PR2400
-typedef xtype (*x)(void* handle); // expected-error {{function cannot return function type}} expected-warning {{type specifier missing, defaults to 'int'}} expected-warning {{type specifier missing, defaults to 'int'}}
-
-typedef void ytype();
-
-
-typedef struct _zend_module_entry zend_module_entry;
-struct _zend_module_entry {
-    ytype globals_size; // expected-error {{field 'globals_size' declared as a function}}
-};
-
-zend_module_entry openssl_module_entry = {
-    sizeof(zend_module_entry)
-};
-
-// <rdar://problem/11067144>
-typedef int (FunctionType)(int *value);
-typedef struct {
-  UndefinedType undef; // expected-error {{unknown type name 'UndefinedType'}}
-  FunctionType fun; // expected-error {{field 'fun' declared as a function}}
-} StructType;
-void f(StructType *buf) {
-  buf->fun = 0;
-}
-
-// rdar://11743706
-static void bar(hid_t, char); // expected-error {{expected identifier}}
-
-static void bar(hid_t p, char); // expected-error {{unknown type name 'hid_t'}}
-
-void foo() {
-  (void)bar;
-}
-
-void test2();
-void test2(undef); // expected-error {{a parameter list without types is only allowed in a function definition}}
-void test2() { }
-
-void test3();
-void test3; // expected-error {{incomplete type}}
-void test3() { }

Modified: trunk/contrib/llvm/tools/clang/test/Sema/invalid-init-diag.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/invalid-init-diag.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/invalid-init-diag.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-int a;
-struct {int x;} x = a; // expected-error {{with an expression of incompatible type 'int'}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/invalid-struct-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/invalid-struct-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/invalid-struct-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-typedef struct _zend_module_entry zend_module_entry;
-struct _zend_module_entry {
-  _efree((p)); // expected-error{{type name requires a specifier or qualifier}} \
-                  expected-warning {{type specifier missing, defaults to 'int'}}
-  
-};
-typedef struct _zend_function_entry { } zend_function_entry;
-typedef struct _zend_pcre_globals { } zend_pcre_globals;
-zend_pcre_globals pcre_globals;
-
-static void zm_globals_ctor_pcre(zend_pcre_globals *pcre_globals ) { }
-static void zm_globals_dtor_pcre(zend_pcre_globals *pcre_globals ) { }
-static void zm_info_pcre(zend_module_entry *zend_module ) { }
-static int zm_startup_pcre(int type, int module_number ) { }
-
-static int zm_shutdown_pcre(int type, int module_number ) {
-  zend_function_entry pcre_functions[] = {{ }; // expected-error{{expected '}'}} expected-note {{to match this '{'}}
-  zend_module_entry pcre_module_entry = {
-    sizeof(zend_module_entry), 20071006, 0, 0, ((void *)0), ((void *)0),    
-    "pcre",  pcre_functions,  zm_startup_pcre,  zm_shutdown_pcre,  ((void *)0),  
-    ((void *)0),  zm_info_pcre,  ((void *)0),  sizeof(zend_pcre_globals), &pcre_globals,  
-    ((void (*)(void* ))(zm_globals_ctor_pcre)),  ((void (*)(void* ))(zm_globals_dtor_pcre)),  
-    ((void *)0),  0, 0, ((void *)0), 0 
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/knr-def-call.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/knr-def-call.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/knr-def-call.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -Wconversion -Wliteral-conversion -fsyntax-only -verify %s
-
-// C DR #316, PR 3626.
-void f0(a, b, c, d) int a,b,c,d; {}
-void t0(void) { 
-  f0(1);  // expected-warning{{too few arguments}}
-}
-
-void f1(a, b) int a, b; {}
-void t1(void) { 
-  f1(1, 2, 3); // expected-warning{{too many arguments}}
-}
-
-void f2(float); // expected-note{{previous declaration is here}}
-void f2(x) float x; { } // expected-warning{{promoted type 'double' of K&R function parameter is not compatible with the parameter type 'float' declared in a previous prototype}}
-
-typedef void (*f3)(void);
-f3 t3(int b) { return b? f0 : f1; } // okay
-
-// <rdar://problem/8193107>
-void f4() {
-    char *rindex();
-}
-
-char *rindex(s, c)
-     register char *s, c; // expected-warning{{promoted type 'char *' of K&R function parameter is not compatible with the parameter type 'const char *' declared in a previous prototype}}
-{
-  return 0;
-}
-
-// PR8314
-void proto(int);
-void proto(x) 
-     int x;
-{
-}
-
-void use_proto() {
-  proto(42.1); // expected-warning{{implicit conversion from 'double' to 'int' changes value from 42.1 to 42}}
-  (&proto)(42.1); // expected-warning{{implicit conversion from 'double' to 'int' changes value from 42.1 to 42}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/knr-variadic-def.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/knr-variadic-def.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/knr-variadic-def.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-// expected-no-diagnostics
-// PR4287
-
-#include <stdarg.h>
-char *foo = "test";
-int test(char*,...);
-
-int test(fmt)
-        char*fmt;
-{
-        va_list ap;
-        char*a;
-        int x;
-
-        va_start(ap,fmt);
-        a=va_arg(ap,char*);
-        x=(a!=foo);
-        va_end(ap);
-        return x;
-}
-
-void exit();
-
-int main(argc,argv)
-        int argc;char**argv;
-{
-        exit(test("",foo));
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/many-logical-ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/many-logical-ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/many-logical-ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2011 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wconstant-conversion -verify %s
-// expected-no-diagnostics
-
-// rdar://10913206&10941790
-// Check that we don't get stack overflow trying to evaluate a huge number of
-// logical operators.
-
-int foo(int x) {
-  return
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x &&
-    x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/many-parameters.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/many-parameters.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/many-parameters.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,310 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c99 %s
-
-// This test simply tests that the compiler does not crash.  An optimization
-// in ParmVarDecls means that functions with fewer than 256 parameters use a fast path,
-// while those with >= 256 parameters use a slow path.
-//
-// Crash was reported in PR 10538.
-
-void foo(
-int x0,
-int x1,
-int x2,
-int x3,
-int x4,
-int x5,
-int x6,
-int x7,
-int x8,
-int x9,
-int x10,
-int x11,
-int x12,
-int x13,
-int x14,
-int x15,
-int x16,
-int x17,
-int x18,
-int x19,
-int x20,
-int x21,
-int x22,
-int x23,
-int x24,
-int x25,
-int x26,
-int x27,
-int x28,
-int x29,
-int x30,
-int x31,
-int x32,
-int x33,
-int x34,
-int x35,
-int x36,
-int x37,
-int x38,
-int x39,
-int x40,
-int x41,
-int x42,
-int x43,
-int x44,
-int x45,
-int x46,
-int x47,
-int x48,
-int x49,
-int x50,
-int x51,
-int x52,
-int x53,
-int x54,
-int x55,
-int x56,
-int x57,
-int x58,
-int x59,
-int x60,
-int x61,
-int x62,
-int x63,
-int x64,
-int x65,
-int x66,
-int x67,
-int x68,
-int x69,
-int x70,
-int x71,
-int x72,
-int x73,
-int x74,
-int x75,
-int x76,
-int x77,
-int x78,
-int x79,
-int x80,
-int x81,
-int x82,
-int x83,
-int x84,
-int x85,
-int x86,
-int x87,
-int x88,
-int x89,
-int x90,
-int x91,
-int x92,
-int x93,
-int x94,
-int x95,
-int x96,
-int x97,
-int x98,
-int x99,
-int x100,
-int x101,
-int x102,
-int x103,
-int x104,
-int x105,
-int x106,
-int x107,
-int x108,
-int x109,
-int x110,
-int x111,
-int x112,
-int x113,
-int x114,
-int x115,
-int x116,
-int x117,
-int x118,
-int x119,
-int x120,
-int x121,
-int x122,
-int x123,
-int x124,
-int x125,
-int x126,
-int x127,
-int x128,
-int x129,
-int x130,
-int x131,
-int x132,
-int x133,
-int x134,
-int x135,
-int x136,
-int x137,
-int x138,
-int x139,
-int x140,
-int x141,
-int x142,
-int x143,
-int x144,
-int x145,
-int x146,
-int x147,
-int x148,
-int x149,
-int x150,
-int x151,
-int x152,
-int x153,
-int x154,
-int x155,
-int x156,
-int x157,
-int x158,
-int x159,
-int x160,
-int x161,
-int x162,
-int x163,
-int x164,
-int x165,
-int x166,
-int x167,
-int x168,
-int x169,
-int x170,
-int x171,
-int x172,
-int x173,
-int x174,
-int x175,
-int x176,
-int x177,
-int x178,
-int x179,
-int x180,
-int x181,
-int x182,
-int x183,
-int x184,
-int x185,
-int x186,
-int x187,
-int x188,
-int x189,
-int x190,
-int x191,
-int x192,
-int x193,
-int x194,
-int x195,
-int x196,
-int x197,
-int x198,
-int x199,
-int x200,
-int x201,
-int x202,
-int x203,
-int x204,
-int x205,
-int x206,
-int x207,
-int x208,
-int x209,
-int x210,
-int x211,
-int x212,
-int x213,
-int x214,
-int x215,
-int x216,
-int x217,
-int x218,
-int x219,
-int x220,
-int x221,
-int x222,
-int x223,
-int x224,
-int x225,
-int x226,
-int x227,
-int x228,
-int x229,
-int x230,
-int x231,
-int x232,
-int x233,
-int x234,
-int x235,
-int x236,
-int x237,
-int x238,
-int x239,
-int x240,
-int x241,
-int x242,
-int x243,
-int x244,
-int x245,
-int x246,
-int x247,
-int x248,
-int x249,
-int x250,
-int x251,
-int x252,
-int x253,
-int x254,
-int x255,
-int x256,
-int x257,
-int x258,
-int x259,
-int x260,
-int x261,
-int x262,
-int x263,
-int x264,
-int x265,
-int x266,
-int x267,
-int x268,
-int x269,
-int x270,
-int x271,
-int x272,
-int x273,
-int x274,
-int x275,
-int x276,
-int x277,
-int x278,
-int x279,
-int x280,
-int x281,
-int x282,
-int x283,
-int x284,
-int x285,
-int x286,
-int x287,
-int x288,
-int x289,
-int x290,
-int x291,
-int x292,
-int x293,
-int x294,
-int x295,
-int x296,
-int x297,
-int x298,
-int x299
-);

Modified: trunk/contrib/llvm/tools/clang/test/Sema/member-reference.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/member-reference.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/member-reference.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// expected-no-diagnostics
-
-struct simple { int i; };
-
-void f(void) {
-   struct simple s[1];
-   s->i = 1;
-}
-
-typedef int x;
-struct S {
-  int x;
-  x z;
-};
-
-void g(void) {
-  struct S s[1];
-  s->x = 1;
-  s->z = 2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/memset-invalid-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/memset-invalid-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/memset-invalid-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-// rdar://13081751
-
-typedef __SIZE_TYPE__ size_t;
-void *memset(void*, int, size_t);
-
-typedef struct __incomplete *incomplete;
-
-void mt_query_for_domain(const char *domain)
-{
-	incomplete	query = 0;
-	memset(query, 0, sizeof(query)); // expected-warning {{'memset' call operates on objects of type 'struct __incomplete' while the size is based on a different type 'incomplete'}} \
-	// expected-note {{did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/memset-invalid.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/memset-invalid.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/memset-invalid.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-
-char memset(); // expected-warning {{incompatible redeclaration of library function 'memset'}} expected-note{{'memset' is a builtin with type}}
-char test() {
-  return memset();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/merge-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/merge-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/merge-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,93 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-void foo(void);
-void foo(void) {} 
-void foo(void);
-void foo(void); // expected-note {{previous declaration is here}}
-
-void foo(int); // expected-error {{conflicting types for 'foo'}}
-
-int funcdef()
-{
- return 0;
-}
-
-int funcdef();
-
-int funcdef2() { return 0; } // expected-note {{previous definition is here}}
-int funcdef2() { return 0; } // expected-error {{redefinition of 'funcdef2'}}
-
-// PR2502
-void (*f)(void);
-void (*f)() = 0;
-
-typedef __attribute__(( ext_vector_type(2) )) int Vi2;
-typedef __attribute__(( ext_vector_type(2) )) float Vf2;
-
-Vf2 g0; // expected-note {{previous definition is here}}
-Vi2 g0; // expected-error {{redefinition of 'g0'}}
-
-_Complex int g1; // expected-note {{previous definition is here}}
-_Complex float g1; // expected-error {{redefinition of 'g1'}}
-
-// rdar://6096412
-extern char i6096412[10];
-extern char i6096412[];
-void foo6096412(void) {
-  int x = sizeof(i6096412);
-}
-
-
-typedef int test1_IA[];
-typedef int test1_A10[10];
-static test1_A10 *test1_f(void);
-void test1_g(void)
-{
-  {
-    extern test1_IA  *test1_f(void);
-  }
-  (void)sizeof(*test1_f());
-}
-
-typedef int test2_IA[];
-typedef int test2_A10[10];
-
-static test2_A10 *test2_f(void);
-static test2_IA  *test2_f(void);
-
-void test2_g(void)
-{
-  (void)sizeof(*test2_f());
-}
-
-int (*test3_f())[10];
-int (*test3_f())[];
-int test3_k = sizeof(*test3_f());
-
-void test4_f(int);
-void test4_f(a)
-  char a;
-{
-  int v[sizeof(a) == 1 ? 1 : -1];
-}
-
-int test5_f(int (*)[10]);
-int test5_f(int (*x)[]) {
-  return sizeof(*x); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
-}
-
-void test6_f(int (*a)[11]);
-void test6_f(a)
-   int (*a)[];
-{}
-void test6_g() {
-  int arr[10];
-  test6_f(&arr); // expected-warning {{incompatible pointer types passing 'int (*)[10]' to parameter of type 'int (*)[11]}}
-}
-
-void test7_f(int (*)[10]);
-void test7_f(int (*)[]); // expected-note {{passing argument to parameter here}}
-void test7_g() {
-  int x[5];
-  test7_f(&x); // expected-warning {{incompatible pointer types passing 'int (*)[5]' to parameter of type 'int (*)[10]}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/mips16_attr_allowed.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/mips16_attr_allowed.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/mips16_attr_allowed.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -triple mipsel-linux-gnu -fsyntax-only -verify %s
-
-void foo32();
-void foo16();
-void __attribute__((nomips16)) foo32(); 
-void __attribute__((mips16)) foo16(); 
-
-void __attribute__((nomips16)) foo32_(); 
-void __attribute__((mips16)) foo16_(); 
-void foo32_();
-void foo16_();
-
-void foo32__() __attribute__((nomips16)); 
-void foo32__() __attribute__((mips16)); 
-
-void foo32a() __attribute__((nomips16(xyz))) ; // expected-error {{attribute takes no arguments}}
-void __attribute__((mips16(xyz))) foo16a(); // expected-error {{attribute takes no arguments}}
-
-void __attribute__((nomips16(1, 2))) foo32b(); // expected-error {{attribute takes no arguments}}
-void __attribute__((mips16(1, 2))) foo16b(); // expected-error {{attribute takes no arguments}}
-
-
-__attribute((nomips16)) int a; // expected-error {{attribute only applies to functions}}
-
-__attribute((mips16)) int b; // expected-error {{attribute only applies to functions}}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/mips16_attr_not_allowed.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/mips16_attr_not_allowed.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/mips16_attr_not_allowed.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only -verify %s
-
-void __attribute__((nomips16)) foo32(); // expected-warning {{unknown attribute 'nomips16' ignored}}
-void __attribute__((mips16)) foo16(); // expected-warning {{unknown attribute 'mips16' ignored}}
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/missing-field-initializers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/missing-field-initializers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/missing-field-initializers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wmissing-field-initializers %s
-
-// This was PR4808.
-
-struct Foo { int a, b; };
-
-struct Foo foo0 = { 1 }; // expected-warning {{missing field 'b' initializer}}
-struct Foo foo1 = { .a = 1 }; // designator avoids MFI warning
-struct Foo foo2 = { .b = 1 }; // designator avoids MFI warning
-
-struct Foo bar0[] = {
-  { 1,2 },
-  { 1 },   // expected-warning {{missing field 'b' initializer}}
-  { 1,2 }
-};
-
-struct Foo bar1[] = {
-  1, 2,
-  1, 2,
-  1
-}; // expected-warning {{missing field 'b' initializer}}
-
-struct Foo bar2[] = { {}, {}, {} };
-
-struct One { int a; int b; };
-struct Two { float c; float d; float e; };
-
-struct Three {
-    union {
-        struct One one;
-        struct Two two;
-    } both;
-};
-
-struct Three t0 = {
-    { .one = { 1, 2 } }
-};
-struct Three t1 = {
-    { .two = { 1.0f, 2.0f, 3.0f } }
-};
-
-struct Three data[] = {
-  { { .one = { 1, 2 } } },
-  { { .one = { 1 } } }, // expected-warning {{missing field 'b' initializer}}
-  { { .two = { 1.0f, 2.0f, 3.0f } } },
-  { { .two = { 1.0f, 2.0f } } } // expected-warning {{missing field 'e' initializer}}
-};
-
-struct { int:5; int a; int:5; int b; int:5; } noNamedImplicit[] = {
-  { 1, 2 },
-  { 1 } // expected-warning {{missing field 'b' initializer}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/mms-bitfields.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/mms-bitfields.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/mms-bitfields.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -mms-bitfields -fsyntax-only -verify -triple x86_64-apple-darwin9 %s
-// expected-no-diagnostics
-
-// The -mms-bitfields commandline parameter should behave the same
-// as the ms_struct attribute.
-struct
-{
-   int a : 1;
-   short b : 1;
-} t;
-
-// MS pads out bitfields between different types.
-static int arr[(sizeof(t) == 8) ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ms-inline-asm-invalid-arch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ms-inline-asm-invalid-arch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ms-inline-asm-invalid-arch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -triple powerpc64-unknown-linux-gnu -fasm-blocks -verify -fsyntax-only
-
-void f() {
-  __asm nop // expected-error {{Unsupported architecture 'powerpc64' for MS-style inline assembly}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ms-inline-asm.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ms-inline-asm.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ms-inline-asm.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// REQUIRES: disabled
-// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -fasm-blocks -Wno-microsoft -verify -fsyntax-only
-
-void t1(void) { 
- __asm __asm // expected-error {{__asm used with no assembly instructions}}
-}
-
-void f() {
-  int foo;
-  __asm { 
-    mov eax, eax
-    .unknowndirective // expected-error {{unknown directive}}
-  }
-  f();
-  __asm {
-    mov eax, 1+=2 // expected-error 2 {{unknown token in expression}}
-  }
-  f();
-  __asm {
-    mov eax, 1+++ // expected-error 2 {{unknown token in expression}}
-  }
-  f();
-  __asm {
-    mov eax, LENGTH bar // expected-error {{Unable to lookup expr!}}
-  }
-  f();
-  __asm {
-    mov eax, SIZE bar // expected-error {{Unable to lookup expr!}}
-  }
-  f();
-  __asm {
-    mov eax, TYPE bar // expected-error {{Unable to lookup expr!}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ms_class_layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ms_class_layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ms_class_layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,508 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only -triple i686-pc-win32 -fdump-record-layouts -cxx-abi microsoft %s 2>&1 \
-// RUN:            | FileCheck %s
-
-#pragma pack(push, 8)
-
-class B {
-public:
-  virtual void b(){}
-  int b_field;
-protected:
-private:
-};
-
-class A : public B {
-public:
-  int a_field;
-  virtual void a(){}
-  char one;
-protected:
-private:
-};
-
-class D {
-public:
-  virtual void b(){}
-  double a;
-};
-
-class C : public virtual A, 
-          public D, public B {
-public:
-  double c1_field;
-  int c2_field;
-  double c3_field;
-  int c4_field;
-  virtual void foo(){}
-  virtual void bar(){}
-protected:
-private:
-};
-
-struct BaseStruct
-{
-    BaseStruct(){}
-    double v0;
-    float v1;
-    C fg;
-};
-
-struct DerivedStruct : public BaseStruct {
-  int x;
-};
-
-struct G
-{
-    int g_field;
-};
-
-struct H : public G, 
-           public virtual D
-{
-};
-
-struct I : public virtual D
-{
-  virtual ~I(){}
-  double q;
-};
-
-struct K
-{
-  int k;
-};
-
-struct L
-{
-  int l;
-};
-
-struct M : public virtual K
-{
-  int m;
-};
-
-struct N : public L, public M
-{
-  virtual void f(){}
-};
-
-struct O : public H, public G {
-  virtual void fo(){}
-};
-
-struct P : public M, public virtual L {
-  int p;
-};
-
-struct R {};
-
-class IA {
-public:
-  virtual ~IA(){}
-  virtual void ia() = 0;
-};
-
-class ICh : public virtual IA {
-public:
-  virtual ~ICh(){}
-  virtual void ia(){}
-  virtual void iCh(){}
-};
-
-struct f {
-  virtual int asd() {return -90;}
-};
-
-struct s : public virtual f {
-  virtual ~s(){}
-  int r;
-  virtual int asd() {return -9;}
-};
-
-struct sd : virtual s, virtual ICh {
-  virtual ~sd(){}
-  int q;
-  char y;
-  virtual int asd() {return -1;}
-};
-struct AV { 
-  virtual void foo(); 
-};
-struct BV : AV { 
-};
-struct CV : virtual BV { 
-  CV(); 
-  virtual void foo(); 
-};
-struct DV : BV {
-};
-struct EV : CV, DV {
-};
-#pragma pack(pop)
-
-// This needs only for building layouts. 
-// Without this clang doesn`t dump record layouts.
-int main() {
-  // This avoid "Can't yet mangle constructors!" for MS ABI.
-  C* c;
-  c->foo();
-  DerivedStruct* v;
-  H* g;
-  BaseStruct* u;
-  I* i;
-  N* n;
-  O* o;
-  P* p;
-  R* r;
-  sd *h;
-  EV *j;
-  return 0;
-}
-
-// CHECK:       0 | class D
-// CHECK-NEXT:  0 |   (D vftable pointer)
-// CHECK-NEXT:  8 |   double a
-
-// CHECK-NEXT: sizeof=16, dsize=16, align=8
-// CHECK-NEXT: nvsize=16, nvalign=8
-
-// CHECK: %class.D = type { i32 (...)**, double }
-
-// CHECK:       0 | class B
-// CHECK-NEXT:  0 |   (B vftable pointer)
-// CHECK-NEXT:  4 |   int b_field
-
-// CHECK-NEXT: sizeof=8, dsize=8, align=4
-// CHECK-NEXT: nvsize=8, nvalign=4
-
-// CHECK: %class.B = type { i32 (...)**, i32 }
-
-// CHECK:       0 | class A
-// CHECK-NEXT:  0 |   class B (primary base)
-// CHECK-NEXT:  0 |     (B vftable pointer)
-// CHECK-NEXT:  4 |     int b_field
-// CHECK-NEXT:  8 |   int a_field
-// CHECK-NEXT: 12 |   char one
-
-// CHECK-NEXT: sizeof=16, dsize=16, align=4
-// CHECK-NEXT: nvsize=16, nvalign=4
-
-// CHECK:       0 | class C
-// CHECK-NEXT:  0 |   class D (primary base)
-// CHECK-NEXT:  0 |     (D vftable pointer)
-// CHECK-NEXT:  8 |     double a
-// CHECK-NEXT: 16 |   class B (base)
-// CHECK-NEXT: 16 |     (B vftable pointer)
-// CHECK-NEXT: 20 |     int b_field
-// CHECK-NEXT: 24 |   (C vbtable pointer)
-// CHECK-NEXT: 32 |   double c1_field
-// CHECK-NEXT: 40 |   int c2_field
-// CHECK-NEXT: 48 |   double c3_field
-// CHECK-NEXT: 56 |   int c4_field
-// CHECK-NEXT: 64 |   class A (virtual base)
-// CHECK-NEXT: 64 |     class B (primary base)
-// CHECK-NEXT: 64 |       (B vftable pointer)
-// CHECK-NEXT: 68 |       int b_field
-// CHECK-NEXT: 72 |     int a_field
-// CHECK-NEXT: 76 |     char one
-
-// CHECK-NEXT: sizeof=80, dsize=80, align=8
-// CHECK-NEXT: nvsize=64, nvalign=8
-
-// CHECK: %class.A = type { %class.B, i32, i8 }
-
-// CHECK: %class.C = type { %class.D, %class.B, i32*, double, i32, double, i32, [4 x i8], %class.A }
-// CHECK: %class.C.base = type { %class.D, %class.B, i32*, double, i32, double, i32 }
-
-// CHECK:       0 | struct BaseStruct
-// CHECK-NEXT:  0 |   double v0
-// CHECK-NEXT:  8 |   float v1
-// CHECK-NEXT: 16 |   class C fg
-// CHECK-NEXT: 16 |     class D (primary base)
-// CHECK-NEXT: 16 |       (D vftable pointer)
-// CHECK-NEXT: 24 |       double a
-// CHECK-NEXT: 32 |     class B (base)
-// CHECK-NEXT: 32 |       (B vftable pointer)
-// CHECK-NEXT: 36 |       int b_field
-// CHECK-NEXT: 40 |     (C vbtable pointer)
-// CHECK-NEXT: 48 |     double c1_field
-// CHECK-NEXT: 56 |     int c2_field
-// CHECK-NEXT: 64 |     double c3_field
-// CHECK-NEXT: 72 |     int c4_field
-// CHECK-NEXT: 80 |     class A (virtual base)
-// CHECK-NEXT: 80 |       class B (primary base)
-// CHECK-NEXT: 80 |         (B vftable pointer)
-// CHECK-NEXT: 84 |         int b_field
-// CHECK-NEXT: 88 |       int a_field
-// CHECK-NEXT: 92 |       char one
-
-// CHECK-NEXT: sizeof=80, dsize=80, align=8
-// CHECK-NEXT: nvsize=64, nvalign=8
-
-// CHECK: sizeof=96, dsize=96, align=8
-// CHECK-NEXT: nvsize=96, nvalign=8
-
-// CHECK: %struct.BaseStruct = type { double, float, %class.C }
-
-// CHECK:       0 | struct DerivedStruct
-// CHECK-NEXT:  0 |   struct BaseStruct (base)
-// CHECK-NEXT:  0 |     double v0
-// CHECK-NEXT:  8 |     float v1
-// CHECK-NEXT: 16 |     class C fg
-// CHECK-NEXT: 16 |       class D (primary base)
-// CHECK-NEXT: 16 |         (D vftable pointer)
-// CHECK-NEXT: 24 |         double a
-// CHECK-NEXT: 32 |       class B (base)
-// CHECK-NEXT: 32 |         (B vftable pointer)
-// CHECK-NEXT: 36 |         int b_field
-// CHECK-NEXT: 40 |       (C vbtable pointer)
-// CHECK-NEXT: 48 |       double c1_field
-// CHECK-NEXT: 56 |       int c2_field
-// CHECK-NEXT: 64 |       double c3_field
-// CHECK-NEXT: 72 |       int c4_field
-// CHECK-NEXT: 80 |       class A (virtual base)
-// CHECK-NEXT: 80 |         class B (primary base)
-// CHECK-NEXT: 80 |           (B vftable pointer)
-// CHECK-NEXT: 84 |           int b_field
-// CHECK-NEXT: 88 |         int a_field
-// CHECK-NEXT: 92 |         char one
-// CHECK-NEXT: sizeof=80, dsize=80, align=8
-// CHECK-NEXT: nvsize=64, nvalign=8
-
-// CHECK: 96 |   int x
-// CHECK-NEXT: sizeof=104, dsize=104, align=8
-// CHECK-NEXT: nvsize=104, nvalign=8
-
-// CHECK: %struct.DerivedStruct = type { %struct.BaseStruct, i32 }
-
-// CHECK:      0 | struct G
-// CHECK-NEXT: 0 |   int g_field
-// CHECK-NEXT: sizeof=4, dsize=4, align=4
-// CHECK-NEXT: nvsize=4, nvalign=4
-
-// CHECK:       0 | struct H
-// CHECK-NEXT:  0 |   struct G (base)
-// CHECK-NEXT:  0 |     int g_field
-// CHECK-NEXT:  4 |   (H vbtable pointer)
-// CHECK-NEXT:  8 |   class D (virtual base)
-// CHECK-NEXT:  8 |     (D vftable pointer)
-// CHECK-NEXT: 16 |     double a
-// CHECK-NEXT: sizeof=24, dsize=24, align=8
-// CHECK-NEXT: nvsize=8, nvalign=4
-
-// CHECK: %struct.H = type { %struct.G, i32*, %class.D }
-
-// CHECK:       0 | struct I
-// CHECK-NEXT:  0 |   (I vftable pointer)
-// CHECK-NEXT:  8 |   (I vbtable pointer)
-// CHECK-NEXT: 16 |   double q
-// CHECK-NEXT: 24 |   class D (virtual base)
-// CHECK-NEXT: 24 |     (D vftable pointer)
-// CHECK-NEXT: 32 |     double a
-// CHECK-NEXT: sizeof=40, dsize=40, align=8
-// CHECK-NEXT: nvsize=24, nvalign=8
-
-// CHECK: %struct.I = type { i32 (...)**, [4 x i8], i32*, double, %class.D }
-// CHECK: %struct.I.base = type { i32 (...)**, [4 x i8], i32*, double }
-
-// CHECK:       0 | struct L
-// CHECK-NEXT:  0 |   int l
-// CHECK-NEXT: sizeof=4, dsize=4, align=4
-// CHECK-NEXT: nvsize=4, nvalign=4
-
-// CHECK:       0 | struct K
-// CHECK-NEXT:  0 |   int k
-// CHECK-NEXT: sizeof=4, dsize=4, align=4
-// CHECK-NEXT: nvsize=4, nvalign=4
-
-// CHECK:       0 | struct M
-// CHECK-NEXT:  0 |   (M vbtable pointer)
-// CHECK-NEXT:  4 |   int m
-// CHECK-NEXT:  8 |   struct K (virtual base)
-// CHECK-NEXT:  8 |     int k
-// CHECK-NEXT: sizeof=12, dsize=12, align=4
-
-//CHECK: %struct.M = type { i32*, i32, %struct.K }
-//CHECK: %struct.M.base = type { i32*, i32 }
-
-// CHECK:       0 | struct N
-// CHECK-NEXT:  4 |   struct L (base)
-// CHECK-NEXT:  4 |     int l
-// CHECK-NEXT:  8 |   struct M (base)
-// CHECK-NEXT:  8 |     (M vbtable pointer)
-// CHECK-NEXT: 12 |     int m
-// CHECK-NEXT:  0 |   (N vftable pointer)
-// CHECK-NEXT: 16 |   struct K (virtual base)
-// CHECK-NEXT: 16 |     int k
-// CHECK-NEXT: sizeof=20, dsize=20, align=4
-// CHECK-NEXT: nvsize=16, nvalign=4
-
-//CHECK: %struct.N = type { i32 (...)**, %struct.L, %struct.M.base, %struct.K }
-
-// FIXME: MSVC place struct H at offset 8.
-// CHECK:       0 | struct O
-// CHECK-NEXT:  4 |   struct H (base)
-// CHECK-NEXT:  4 |     struct G (base)
-// CHECK-NEXT:  4 |       int g_field
-// CHECK-NEXT:  8 |     (H vbtable pointer)
-// CHECK-NEXT: 12 |   struct G (base)
-// CHECK-NEXT: 12 |     int g_field
-// CHECK-NEXT:  0 |   (O vftable pointer)
-// CHECK-NEXT: 16 |   class D (virtual base)
-// CHECK-NEXT: 16 |     (D vftable pointer)
-// CHECK-NEXT: 24 |     double a
-// CHECK-NEXT: sizeof=32, dsize=32, align=8
-// CHECK-NEXT: nvsize=16, nvalign=4
-
-//CHECK: %struct.O = type { i32 (...)**, %struct.H.base, %struct.G, %class.D }
-//CHECK: %struct.O.base = type { i32 (...)**, %struct.H.base, %struct.G }
-
-// CHECK:       0 | struct P
-// CHECK-NEXT:  0 |   struct M (base)
-// CHECK-NEXT:  0 |     (M vbtable pointer)
-// CHECK-NEXT:  4 |     int m
-// CHECK-NEXT:  8 |   int p
-// CHECK-NEXT: 12 |   struct K (virtual base)
-// CHECK-NEXT: 12 |     int k
-// CHECK-NEXT: 16 |   struct L (virtual base)
-// CHECK-NEXT: 16 |     int l
-// CHECK-NEXT: sizeof=20, dsize=20, align=4
-// CHECK-NEXT: nvsize=12, nvalign=4
-
-//CHECK: %struct.P = type { %struct.M.base, i32, %struct.K, %struct.L }
-
-// CHECK:       0 | struct R (empty)
-// CHECK-NEXT:  sizeof=1, dsize=0, align=1
-// CHECK-NEXT:  nvsize=0, nvalign=1
-
-//CHECK: %struct.R = type { i8 }
-
-// CHECK:       0 | struct f
-// CHECK-NEXT:  0 |   (f vftable pointer)
-// CHECK-NEXT: sizeof=4, dsize=4, align=4
-// CHECK-NEXT: nvsize=4, nvalign=4
-
-// CHECK:       0 | struct s
-// CHECK-NEXT:  0 |   (s vftable pointer)
-// CHECK-NEXT:  4 |   (s vbtable pointer)
-// CHECK-NEXT:  8 |   int r
-// CHECK-NEXT: 12 |   (vtordisp for vbase f)
-// CHECK-NEXT: 16 |   struct f (virtual base)
-// CHECK-NEXT: 16 |     (f vftable pointer)
-// CHECK-NEXT: sizeof=20, dsize=20, align=4
-// CHECK-NEXT: nvsize=12, nvalign=4
-
-// CHECK:       0 | class IA
-// CHECK-NEXT:  0 |   (IA vftable pointer)
-// CHECK-NEXT:  sizeof=4, dsize=4, align=4
-// CHECK-NEXT:  nvsize=4, nvalign=4
-	
-// CHECK:       0 | class ICh
-// CHECK-NEXT:  0 |   (ICh vftable pointer)
-// CHECK-NEXT:  4 |   (ICh vbtable pointer)
-// CHECK-NEXT:  8 |   (vtordisp for vbase IA)
-// CHECK-NEXT: 12 |   class IA (virtual base)
-// CHECK-NEXT: 12 |     (IA vftable pointer)
-// CHECK-NEXT: sizeof=16, dsize=16, align=4
-// CHECK-NEXT: nvsize=8, nvalign=4
-
-// CHECK:       0 | struct sd
-// CHECK-NEXT:  0 |   (sd vbtable pointer)
-// CHECK-NEXT:  4 |   int q
-// CHECK-NEXT:  8 |   char y
-// CHECK-NEXT: 12 |   (vtordisp for vbase f)
-// CHECK-NEXT: 16 |   struct f (virtual base)
-// CHECK-NEXT: 16 |     (f vftable pointer)
-// CHECK-NEXT: 20 |   struct s (virtual base)
-// CHECK-NEXT: 20 |     (s vftable pointer)
-// CHECK-NEXT: 24 |     (s vbtable pointer)
-// CHECK-NEXT: 28 |     int r
-// CHECK-NEXT: 32 |   (vtordisp for vbase IA)
-// CHECK-NEXT: 36 |   class IA (virtual base)
-// CHECK-NEXT: 36 |     (IA vftable pointer)
-// CHECK-NEXT: 40 |   class ICh (virtual base)
-// CHECK-NEXT: 40 |     (ICh vftable pointer)
-// CHECK-NEXT: 44 |     (ICh vbtable pointer)
-// CHECK-NEXT: sizeof=48, dsize=48, align=4
-// CHECK-NEXT: nvsize=12, nvalign=4
-
-// CHECK: %struct.f = type { i32 (...)** }
-// CHECK: %struct.s = type { i32 (...)**, i32*, i32, [4 x i8], %struct.f }
-// CHECK: %class.IA = type { i32 (...)** }
-// CHECK: %class.ICh = type { i32 (...)**, i32*, [4 x i8], %class.IA }
-// CHECK: %struct.sd = type { i32*, i32, i8, [7 x i8], %struct.f, %struct.s.base, [4 x i8], %class.IA, %class.ICh.base }
-
-// CHECK:       0 | struct AV
-// CHECK-NEXT:  0 |   (AV vftable pointer)
-// CHECK-NEXT: sizeof=4, dsize=4, align=4
-// CHECK-NEXT: nvsize=4, nvalign=4
-
-
-// CHECK:       0 | struct BV
-// CHECK-NEXT:  0 |   struct AV (primary base)
-// CHECK-NEXT:  0 |     (AV vftable pointer)
-// CHECK-NEXT: sizeof=4, dsize=4, align=4
-// CHECK-NEXT: nvsize=4, nvalign=4
-
-
-// CHECK:       0 | struct CV
-// CHECK-NEXT:  0 |   (CV vbtable pointer)
-// CHECK-NEXT:  4 |   (vtordisp for vbase BV)
-// CHECK-NEXT:  8 |   struct BV (virtual base)
-// CHECK-NEXT:  8 |     struct AV (primary base)
-// CHECK-NEXT:  8 |       (AV vftable pointer)
-// CHECK-NEXT: sizeof=12, dsize=12, align=4
-// CHECK-NEXT: nvsize=4, nvalign=4
-
-// CHECK: %struct.AV = type { i32 (...)** }
-// CHECK: %struct.BV = type { %struct.AV }
-// CHECK: %struct.CV = type { i32*, [4 x i8], %struct.BV }
-// CHECK: %struct.CV.base = type { i32* }
-
-// CHECK:       0 | struct DV
-// CHECK-NEXT:  0 |   struct BV (primary base)
-// CHECK-NEXT:  0 |     struct AV (primary base)
-// CHECK-NEXT:  0 |       (AV vftable pointer)
-// CHECK-NEXT: sizeof=4, dsize=4, align=4
-// CHECK-NEXT: nvsize=4, nvalign=4
-
-// CHECK: %struct.DV = type { %struct.BV }
-
-// CHECK:       0 | struct EV
-// CHECK-NEXT:  4 |   struct CV (base)
-// CHECK-NEXT:  4 |     (CV vbtable pointer)
-// CHECK-NEXT:  0 |   struct DV (primary base)
-// CHECK-NEXT:  0 |     struct BV (primary base)
-// CHECK-NEXT:  0 |       struct AV (primary base)
-// CHECK-NEXT:  0 |         (AV vftable pointer)
-// CHECK-NEXT:  8 |   (vtordisp for vbase BV)
-// CHECK-NEXT: 12 |   struct BV (virtual base)
-// CHECK-NEXT: 12 |     struct AV (primary base)
-// CHECK-NEXT: 12 |       (AV vftable pointer)
-// CHECK-NEXT: sizeof=16, dsize=16, align=4
-// CHECK-NEXT: nvsize=8, nvalign=4
-
-// CHECK: %struct.EV = type { %struct.DV, %struct.CV.base, [4 x i8], %struct.BV }
-// CHECK: %struct.EV.base = type { %struct.DV, %struct.CV.base }
-
-// Overriding a method means that all the vbases containing that
-// method need a vtordisp.
-namespace test1 {
-  struct A { virtual void foo(); };
-  struct B : A {};
-  struct C : virtual A, virtual B { C(); virtual void foo(); };
-  void test() { C *c; }
-
-// CHECK:        0 | struct test1::C
-// CHECK-NEXT:   0 |   (C vbtable pointer)
-// CHECK-NEXT:   4 |   (vtordisp for vbase A)
-// CHECK-NEXT:   8 |   struct test1::A (virtual base)
-// CHECK-NEXT:   8 |     (A vftable pointer)
-// CHECK-NEXT:  12 |   (vtordisp for vbase B)
-// CHECK-NEXT:  16 |   struct test1::B (virtual base)
-// CHECK-NEXT:  16 |     struct test1::A (primary base)
-// CHECK-NEXT:  16 |       (A vftable pointer)
-// CHECK-NEXT:  sizeof=20, dsize=20, align=4
-// CHECK-NEXT:  nvsize=4, nvalign=4
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ms_wide_predefined_expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ms_wide_predefined_expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ms_wide_predefined_expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-extensions
-// expected-no-diagnostics
-
-// Wide character predefined identifiers
-#define _STR2WSTR(str) L##str
-#define STR2WSTR(str) _STR2WSTR(str)
-void abcdefghi12(void) {
- const wchar_t (*ss)[12] = &STR2WSTR(__FUNCTION__);
- static int arr[sizeof(STR2WSTR(__FUNCTION__))==12*sizeof(wchar_t) ? 1 : -1];
-}
-
-namespace PR13206 {
-void foo(const wchar_t *);
-
-template<class T> class A {
-public:
- void method() {
-  foo(L__FUNCTION__);
- }
-};
-
-void bar() {
- A<int> x;
- x.method();
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/neon-vector-types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/neon-vector-types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/neon-vector-types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-typedef float float32_t;
-typedef signed char poly8_t;
-typedef short poly16_t;
-typedef unsigned long long uint64_t;
-
-// Define some valid Neon types.
-typedef __attribute__((neon_vector_type(2))) int int32x2_t;
-typedef __attribute__((neon_vector_type(4))) int int32x4_t;
-typedef __attribute__((neon_vector_type(1))) uint64_t uint64x1_t;
-typedef __attribute__((neon_vector_type(2))) uint64_t uint64x2_t;
-typedef __attribute__((neon_vector_type(2))) float32_t float32x2_t;
-typedef __attribute__((neon_vector_type(4))) float32_t float32x4_t;
-typedef __attribute__((neon_polyvector_type(16))) poly8_t  poly8x16_t;
-typedef __attribute__((neon_polyvector_type(8)))  poly16_t poly16x8_t;
-
-// The attributes must have a single argument.
-typedef __attribute__((neon_vector_type(2, 4))) int only_one_arg; // expected-error{{attribute takes one argument}}
-
-// The number of elements must be an ICE.
-typedef __attribute__((neon_vector_type(2.0))) int non_int_width; // expected-error{{attribute requires integer constant}}
-
-// Only certain element types are allowed.
-typedef __attribute__((neon_vector_type(2))) double double_elt; // expected-error{{invalid vector element type}}
-typedef __attribute__((neon_vector_type(4))) void* ptr_elt; // expected-error{{invalid vector element type}}
-typedef __attribute__((neon_polyvector_type(4))) float32_t bad_poly_elt; // expected-error{{invalid vector element type}}
-struct aggr { signed char c; };
-typedef __attribute__((neon_vector_type(8))) struct aggr aggregate_elt; // expected-error{{invalid vector element type}}
-
-// The total vector size must be 64 or 128 bits.
-typedef __attribute__((neon_vector_type(1))) int int32x1_t; // expected-error{{Neon vector size must be 64 or 128 bits}}
-typedef __attribute__((neon_vector_type(3))) int int32x3_t; // expected-error{{Neon vector size must be 64 or 128 bits}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/nested-redef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/nested-redef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/nested-redef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct X { // expected-note{{previous definition is here}}
-  struct X { } x; // expected-error{{nested redefinition of 'X'}}
-}; 
-
-struct Y { };
-void f(void) {
-  struct Y { }; // okay: this is a different Y
-}
-
-struct T;
-struct Z {
-  struct T { int x; } t;
-  struct U { int x; } u;
-};
-
-void f2(void) {
-  struct T t;
-  struct U u;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/no-documentation-warn-tagdecl-specifier.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/no-documentation-warn-tagdecl-specifier.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/no-documentation-warn-tagdecl-specifier.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -verify %s
-// rdar://12390371
-
-/** @return s Test*/
-struct s* f(void);
-struct s;
-
-struct s1;
-/** @return s1 Test 1*/
-struct s1* f1(void);
-
-struct s2;
-/** @return s2 Test 2*/
-struct s2* f2(void);
-struct s2;
-
-// expected-warning at +1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
-/** @return s3 Test 3 - expected warning here */
-struct s3;
-struct s3* f3(void);
-
-/** @return s4 Test 4 */
-struct s4* f4(void);
-struct s4 { int is; };
-
-// expected-warning at +1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
-/** @return s5 Test 5  - expected warning here */
-struct s5 { int is; };
-struct s5* f5(void);
-
-// expected-warning at +1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
-/** @return s6 Test 6  - expected warning here */
-struct s6 *ps6;
-struct s6* f6(void);
-
-// expected-warning at +1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
-/** @return s7 Test 7  - expected warning here */
-struct s7;
-struct s7* f7(void);
-
-struct s8 { int is8; };
-/** @return s8 Test 8 */
-struct s4 *f8(struct s8 *p);
-
-
-/** @return e Test*/
-enum e* g(void);
-enum e;
-
-enum e1;
-/** @return e1 Test 1*/
-enum e1* g1(void);
-
-enum e2;
-/** @return e2 Test 2*/
-enum e2* g2(void);
-enum e2;
-
-// expected-warning at +1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
-/** @return e3 Test 3 - expected warning here */
-enum e3;
-enum e3* g3(void);
-
-/** @return e4 Test 4 */
-enum e4* g4(void);
-enum e4 { one };
-
-// expected-warning at +1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
-/** @return e5 Test 5  - expected warning here */
-enum e5 { two };
-enum e5* g5(void);
-
-// expected-warning at +1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
-/** @return e6 Test 6  - expected warning here */
-enum e6 *pe6;
-enum e6* g6(void);
-
-// expected-warning at +1 {{'@return' command used in a comment that is not attached to a function or method declaration}}
-/** @return e7 Test 7  - expected warning here */
-enum e7;
-enum e7* g7(void);
-
-enum e8 { three };
-/** @return e8 Test 8 */
-enum e4 *g8(enum e8 *p);

Modified: trunk/contrib/llvm/tools/clang/test/Sema/no-format-y2k-turnsoff-format.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/no-format-y2k-turnsoff-format.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/no-format-y2k-turnsoff-format.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wformat -Wno-format-y2k %s
-// rdar://9504680
-
-void foo(const char *, ...) __attribute__((__format__ (__printf__, 1, 2)));
-
-void bar(unsigned int a) {
-        foo("%s", a); // expected-warning {{format specifies type 'char *' but the argument has type 'unsigned int'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/nonnull.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/nonnull.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/nonnull.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-// rdar://9584012
-
-typedef struct {
-	char *str;
-} Class;
-
-typedef union {
-	Class *object;
-} Instance __attribute__((transparent_union));
-
-__attribute__((nonnull(1))) void Class_init(Instance this, char *str) {
-	this.object->str = str;
-}
-
-int main(void) {
-	Class *obj;
-	Class_init(0, "Hello World"); // expected-warning {{null passed to a callee which requires a non-null argument}}
-	Class_init(obj, "Hello World");
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/nowarn-documentation-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/nowarn-documentation-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/nowarn-documentation-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-objc-root-class -Wdocumentation -verify %s
-// expected-no-diagnostics
-// rdar://13189938
-
- at interface NSPredicate
-///     The full predicate to be used for drawing objects from the store.
-///     It is an AND of the parent's `prefixPredicate` (e.g., the selection for
-///     volume number) and the `filterPredicate` (selection by matching the name).
-///     @return `nil` if there is no search string, and no prefix.
-
- at property(readonly) NSPredicate *andPredicate;
-///     The predicate that matches the string to be searched for. This
-///     @return `nil` if there is no search string.
- at property(readonly) NSPredicate *filterPredicate;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Sema/offsetof.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/offsetof.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/offsetof.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
-
-typedef struct P { int i; float f; } PT;
-struct external_sun3_core
-{
- unsigned c_regs; 
-
-  PT  X[100];
-  
-};
-
-void swap()
-{
-  int x;
-  x = offsetof(struct external_sun3_core, c_regs);
-  x = __builtin_offsetof(struct external_sun3_core, X[42].f);
-  
-  x = __builtin_offsetof(struct external_sun3_core, X[42].f2);  // expected-error {{no member named 'f2'}}
-  x = __builtin_offsetof(int, X[42].f2);  // expected-error {{offsetof requires struct}}
-  
-  int a[__builtin_offsetof(struct external_sun3_core, X) == 4 ? 1 : -1];
-  int b[__builtin_offsetof(struct external_sun3_core, X[42]) == 340 ? 1 : -1];
-  int c[__builtin_offsetof(struct external_sun3_core, X[42].f2) == 344 ? 1 : -1];  // expected-error {{no member named 'f2'}}
-}    
-
-extern int f();
-
-struct s1 { int a; }; 
-int v1 = offsetof (struct s1, a) == 0 ? 0 : f();
-
-struct s2 { int a; }; 
-int v2 = (int)(&((struct s2 *) 0)->a) == 0 ? 0 : f();
-
-struct s3 { int a; }; 
-int v3 = __builtin_offsetof(struct s3, a) == 0 ? 0 : f();
-
-// PR3396
-struct sockaddr_un {
- unsigned char sun_len;
- char sun_path[104];
-};
-int a(int len) {
-int a[__builtin_offsetof(struct sockaddr_un, sun_path[len+1])];
-}
-
-// PR4079
-union x {struct {int x;};};
-int x[__builtin_offsetof(union x, x)];
-
-// rdar://problem/7222956
-struct incomplete; // expected-note 2 {{forward declaration of 'struct incomplete'}}
-int test1[__builtin_offsetof(struct incomplete, foo)]; // expected-error {{offsetof of incomplete type 'struct incomplete'}}
-
-int test2[__builtin_offsetof(struct incomplete[10], [4].foo)]; // expected-error {{array has incomplete element type 'struct incomplete'}}
-
-// Bitfields
-struct has_bitfields {
-  int i : 7;
-  int j : 12; // expected-note{{bit-field is declared here}}
-};
-
-int test3 = __builtin_offsetof(struct has_bitfields, j); // expected-error{{cannot compute offset of bit-field 'j'}}
-
-typedef struct Array { int array[1]; } Array;
-int test4 = __builtin_offsetof(Array, array);
-
-int test5() {
-  return __builtin_offsetof(Array, array[*(int*)0]); // expected-warning{{indirection of non-volatile null pointer}} expected-note{{__builtin_trap}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/outof-range-constant-compare.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/outof-range-constant-compare.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/outof-range-constant-compare.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,149 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -Wtautological-constant-out-of-range-compare -verify %s 
-// rdar://12202422
-
-int value(void);
-
-int main()
-{
-    int a = value();
-    if (a == 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always false}}
-        return 0;
-    if (a != 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always true}}
-        return 0;
-    if (a < 0x1234567812345678L)  // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always true}}
-        return 0;
-    if (a <= 0x1234567812345678L)  // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always true}}
-        return 0;
-    if (a > 0x1234567812345678L)  // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always false}}
-        return 0;
-    if (a >= 0x1234567812345678L)  // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always false}}
-        return 0;
-
-    if (0x1234567812345678L == a) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always false}}
-        return 0;
-    if (0x1234567812345678L != a) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always true}}
-        return 0;
-    if (0x1234567812345678L < a)  // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always false}}
-        return 0;
-    if (0x1234567812345678L <= a)  // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always false}}
-        return 0;
-    if (0x1234567812345678L > a) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always true}}
-        return 0;
-    if (0x1234567812345678L >= a) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always true}}
-        return 0;
-    if (a == 0x1234567812345678LL) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'int' is always false}}
-      return 0;
-    if (a == -0x1234567812345678L) // expected-warning {{comparison of constant -1311768465173141112 with expression of type 'int' is always false}}
-      return 0;
-    if (a < -0x1234567812345678L) // expected-warning {{comparison of constant -1311768465173141112 with expression of type 'int' is always false}}
-      return 0;
-    if (a > -0x1234567812345678L) // expected-warning {{comparison of constant -1311768465173141112 with expression of type 'int' is always true}}
-      return 0;
-    if (a <= -0x1234567812345678L) // expected-warning {{comparison of constant -1311768465173141112 with expression of type 'int' is always false}}
-      return 0;
-    if (a >= -0x1234567812345678L) // expected-warning {{comparison of constant -1311768465173141112 with expression of type 'int' is always true}}
-      return 0;
-
-
-    if (a == 0x12345678L) // no warning
-      return 1;
-
-    short s = value();
-    if (s == 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always false}}
-        return 0;
-    if (s != 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always true}}
-        return 0;
-    if (s < 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always true}}
-        return 0;
-    if (s <= 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always true}}
-        return 0;
-    if (s > 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always false}}
-        return 0;
-    if (s >= 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always false}}
-        return 0;
-
-    if (0x1234567812345678L == s) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always false}}
-        return 0;
-    if (0x1234567812345678L != s) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always true}}
-        return 0;
-    if (0x1234567812345678L < s) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always false}}
-        return 0;
-    if (0x1234567812345678L <= s) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always false}}
-        return 0;
-    if (0x1234567812345678L > s) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always true}}
-        return 0;
-    if (0x1234567812345678L >= s) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'short' is always true}}
-        return 0;
-    long l = value();
-    if (l == 0x1234567812345678L)
-        return 0;
-    if (l != 0x1234567812345678L)
-        return 0;
-    if (l < 0x1234567812345678L)
-        return 0;
-    if (l <= 0x1234567812345678L)
-        return 0;
-    if (l > 0x1234567812345678L)
-        return 0;
-    if (l >= 0x1234567812345678L)
-        return 0;
-
-    if (0x1234567812345678L == l)
-        return 0;
-    if (0x1234567812345678L != l)
-        return 0;
-    if (0x1234567812345678L < l)
-        return 0;
-    if (0x1234567812345678L <= l)
-        return 0;
-    if (0x1234567812345678L > l)
-        return 0;
-    if (0x1234567812345678L >= l)
-        return 0;
-
-    unsigned un = 0;
-    if (un == 0x0000000000000000L)
-        return 0;
-    if (un != 0x0000000000000000L)
-        return 0;
-    if (un < 0x0000000000000000L)
-        return 0;
-    if (un <= 0x0000000000000000L)
-        return 0;
-    if (un > 0x0000000000000000L)
-        return 0;
-    if (un >= 0x0000000000000000L)
-        return 0;
-
-    if (0x0000000000000000L == un)
-        return 0;
-    if (0x0000000000000000L != un)
-        return 0;
-    if (0x0000000000000000L < un)
-        return 0;
-    if (0x0000000000000000L <= un)
-        return 0;
-    if (0x0000000000000000L > un)
-        return 0;
-    if (0x0000000000000000L >= un)
-        return 0;
-    float fl = 0;
-    if (fl == 0x0000000000000000L) // no warning
-      return 0;
-
-    float dl = 0;
-    if (dl == 0x0000000000000000L) // no warning
-      return 0;
-
-    enum E {
-    yes,
-    no, 
-    maybe
-    };
-    enum E e;
-
-    if (e == 0x1234567812345678L) // expected-warning {{comparison of constant 1311768465173141112 with expression of type 'enum E' is always false}}
-      return 0;
-
-    return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/overloadable-complex.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/overloadable-complex.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/overloadable-complex.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-char *foo(float) __attribute__((__overloadable__));
-
-void test_foo_1(float fv, double dv, float _Complex fc, double _Complex dc) {
-  char *cp1 = foo(fv);
-  char *cp2 = foo(dv);
-  // Note: GCC and EDG reject these two, but they are valid C99 conversions
-  char *cp3 = foo(fc);
-  char *cp4 = foo(dc);
-}
-
-int *foo(float _Complex) __attribute__((__overloadable__));
-
-void test_foo_2(float fv, double dv, float _Complex fc, double _Complex dc) {
-  char *cp1 = foo(fv);
-  char *cp2 = foo(dv);
-  int *ip = foo(fc);
-  int *lp = foo(dc);
-}
-
-long *foo(double _Complex) __attribute__((__overloadable__));
-
-void test_foo_3(float fv, double dv, float _Complex fc, double _Complex dc) {
-  char *cp1 = foo(fv);
-  char *cp2 = foo(dv);
-  int *ip = foo(fc);
-  long *lp = foo(dc);
-}
-
-char *promote_or_convert(double _Complex) __attribute__((__overloadable__));  // expected-note 2 {{candidate function}}
-int *promote_or_convert(long double _Complex) __attribute__((__overloadable__)); // expected-note 2 {{candidate function}} 
-
-void test_promote_or_convert(float f, float _Complex fc) {
-  char *cp = promote_or_convert(fc); // expected-error{{call to 'promote_or_convert' is ambiguous}}
-  int *ip2 = promote_or_convert(f); // expected-error{{call to 'promote_or_convert' is ambiguous}}
-}
-
-char *promote_or_convert2(float) __attribute__((__overloadable__));
-int *promote_or_convert2(double _Complex) __attribute__((__overloadable__));
-
-void test_promote_or_convert2(float _Complex fc) {
-  int *cp = promote_or_convert2(fc);
-}
-
-char *promote_or_convert3(int _Complex) __attribute__((__overloadable__));
-int *promote_or_convert3(long _Complex) __attribute__((__overloadable__));
-
-void test_promote_or_convert3(short _Complex sc) {
-  char *cp = promote_or_convert3(sc);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/overloadable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/overloadable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/overloadable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int var __attribute__((overloadable)); // expected-error{{'overloadable' attribute can only be applied to a function}}
-
-int *f(int) __attribute__((overloadable)); // expected-note 2{{previous overload of function is here}}
-float *f(float); // expected-error{{overloaded function 'f' must have the 'overloadable' attribute}}
-int *f(int); // expected-error{{redeclaration of 'f' must have the 'overloadable' attribute}} \
-             // expected-note{{previous declaration is here}}
-double *f(double) __attribute__((overloadable)); // okay, new
-
-void test_f(int iv, float fv, double dv) {
-  int *ip = f(iv);
-  float *fp = f(fv);
-  double *dp = f(dv);
-}
-
-int *accept_funcptr(int (*)()) __attribute__((overloadable)); //         \
-  // expected-note{{candidate function}}
-float *accept_funcptr(int (*)(int, double)) __attribute__((overloadable)); //  \
-  // expected-note{{candidate function}}
-
-void test_funcptr(int (*f1)(int, double),
-                  int (*f2)(int, float)) {
-  float *fp = accept_funcptr(f1);
-  accept_funcptr(f2); // expected-error{{no matching function for call to 'accept_funcptr'}}
-}
-
-struct X { int x; float y; };
-struct Y { int x; float y; };
-int* accept_struct(struct X x) __attribute__((__overloadable__));
-float* accept_struct(struct Y y) __attribute__((overloadable));
-
-void test_struct(struct X x, struct Y y) {
-  int *ip = accept_struct(x);
-  float *fp = accept_struct(y);
-}
-
-double *f(int) __attribute__((overloadable)); // expected-error{{conflicting types for 'f'}}
-
-double promote(float) __attribute__((__overloadable__)); // expected-note {{candidate}}
-double promote(double) __attribute__((__overloadable__)); // expected-note {{candidate}}
-long double promote(long double) __attribute__((__overloadable__)); // expected-note {{candidate}}
-
-void promote(...) __attribute__((__overloadable__, __unavailable__)); // \
-    // expected-note{{candidate function}}
-
-void test_promote(short* sp) {
-  promote(1.0);
-  promote(sp); // expected-error{{call to unavailable function 'promote'}}
-}
-
-// PR6600
-typedef double Double;
-typedef Double DoubleVec __attribute__((vector_size(16)));
-typedef int Int;
-typedef Int IntVec __attribute__((vector_size(16)));
-double magnitude(DoubleVec) __attribute__((__overloadable__));
-double magnitude(IntVec) __attribute__((__overloadable__));
-double test_p6600(DoubleVec d) {
-  return magnitude(d) * magnitude(d);
-}
-
-// PR7738
-extern int __attribute__((overloadable)) f0(); // expected-error{{'overloadable' function 'f0' must have a prototype}}
-typedef int f1_type();
-f1_type __attribute__((overloadable)) f1; // expected-error{{'overloadable' function 'f1' must have a prototype}}
-
-void test() { 
-  f0();
-  f1();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/overloaded-func-transparent-union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/overloaded-func-transparent-union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/overloaded-func-transparent-union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-// rdar:// 9129552
-// PR9406
-
-typedef struct {
-	char *str;
-	char *str2;
-} Class;
-
-typedef union {
-	Class *object;
-} Instance __attribute__((transparent_union));
-
-__attribute__((overloadable)) void Class_Init(Instance this, char *str, void *str2) {
-	this.object->str  = str;
-	this.object->str2 = str2;
-}
-
-__attribute__((overloadable)) void Class_Init(Instance this, char *str) {
-	this.object->str  = str;
-	this.object->str2 = str;
-}
-
-int main(void) {
-	Class obj;
-	Class_Init(&obj, "Hello ", " World");
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/parentheses.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/parentheses.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/parentheses.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-// RUN: %clang_cc1 -Wparentheses -fsyntax-only -verify %s
-// RUN: %clang_cc1 -Wparentheses -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-// Test the various warnings under -Wparentheses
-void if_assign(void) {
-  int i;
-  if (i = 4) {} // expected-warning {{assignment as a condition}} \
-                // expected-note{{place parentheses around the assignment to silence this warning}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:7-[[@LINE-3]]:7}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:12-[[@LINE-4]]:12}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:9-[[@LINE-5]]:10}:"=="
-
-  if ((i = 4)) {}
-}
-
-void bitwise_rel(unsigned i) {
-  (void)(i & 0x2 == 0); // expected-warning {{& has lower precedence than ==}} \
-                        // expected-note{{place parentheses around the '==' expression to silence this warning}} \
-                        // expected-note{{place parentheses around the & expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:14-[[@LINE-3]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:22-[[@LINE-4]]:22}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:10-[[@LINE-5]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:17-[[@LINE-6]]:17}:")"
-
-  (void)(0 == i & 0x2); // expected-warning {{& has lower precedence than ==}} \
-                        // expected-note{{place parentheses around the '==' expression to silence this warning}} \
-                        // expected-note{{place parentheses around the & expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:16-[[@LINE-4]]:16}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:15-[[@LINE-5]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:22-[[@LINE-6]]:22}:")"
-
-  (void)(i & 0xff < 30); // expected-warning {{& has lower precedence than <}} \
-                         // expected-note{{place parentheses around the '<' expression to silence this warning}} \
-                         // expected-note{{place parentheses around the & expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:14-[[@LINE-3]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:23-[[@LINE-4]]:23}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:10-[[@LINE-5]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:18-[[@LINE-6]]:18}:")"
-
-  (void)((i & 0x2) == 0);
-  (void)(i & (0x2 == 0));
-  // Eager logical op
-  (void)(i == 1 | i == 2 | i == 3);
-  (void)(i != 1 & i != 2 & i != 3);
-
-  (void)(i & i | i); // expected-warning {{'&' within '|'}} \
-                     // expected-note {{place parentheses around the '&' expression to silence this warning}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:10-[[@LINE-2]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:15-[[@LINE-3]]:15}:")"
-
-  (void)(i | i & i); // expected-warning {{'&' within '|'}} \
-                     // expected-note {{place parentheses around the '&' expression to silence this warning}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:14-[[@LINE-2]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:19-[[@LINE-3]]:19}:")"
-
-  (void)(i ||
-             i && i); // expected-warning {{'&&' within '||'}} \
-                      // expected-note {{place parentheses around the '&&' expression to silence this warning}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:14-[[@LINE-2]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:20-[[@LINE-3]]:20}:")"
-
-  (void)(i || i && "w00t"); // no warning.
-  (void)("w00t" && i || i); // no warning.
-
-  (void)(i || i && "w00t" || i); // expected-warning {{'&&' within '||'}} \
-                                 // expected-note {{place parentheses around the '&&' expression to silence this warning}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:15-[[@LINE-2]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:26-[[@LINE-3]]:26}:")"
-
-  (void)(i || "w00t" && i || i); // expected-warning {{'&&' within '||'}} \
-                                 // expected-note {{place parentheses around the '&&' expression to silence this warning}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:15-[[@LINE-2]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:26-[[@LINE-3]]:26}:")"
-
-  (void)(i && i || 0); // no warning.
-  (void)(0 || i && i); // no warning.
-}
-
-_Bool someConditionFunc();
-
-void conditional_op(int x, int y, _Bool b) {
-  (void)(x + someConditionFunc() ? 1 : 2); // expected-warning {{operator '?:' has lower precedence than '+'}} \
-                                           // expected-note {{place parentheses around the '+' expression to silence this warning}} \
-                                           // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:33-[[@LINE-4]]:33}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:14-[[@LINE-5]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:41-[[@LINE-6]]:41}:")"
-
-  (void)((x + someConditionFunc()) ? 1 : 2); // no warning
-
-  (void)(x - b ? 1 : 2); // expected-warning {{operator '?:' has lower precedence than '-'}} \
-                         // expected-note {{place parentheses around the '-' expression to silence this warning}} \
-                         // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:15-[[@LINE-4]]:15}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:14-[[@LINE-5]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:23-[[@LINE-6]]:23}:")"
-
-  (void)(x * (x == y) ? 1 : 2); // expected-warning {{operator '?:' has lower precedence than '*'}} \
-                                // expected-note {{place parentheses around the '*' expression to silence this warning}} \
-                                // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:22-[[@LINE-4]]:22}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:14-[[@LINE-5]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:30-[[@LINE-6]]:30}:")"
-
-  (void)(x / !x ? 1 : 2); // expected-warning {{operator '?:' has lower precedence than '/'}} \
-                          // expected-note {{place parentheses around the '/' expression to silence this warning}} \
-                          // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:16-[[@LINE-4]]:16}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:14-[[@LINE-5]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:24-[[@LINE-6]]:24}:")"
-
-  (void)(x % 2 ? 1 : 2); // no warning
-}
-
-// RUN: %clang_cc1 -fsyntax-only -Wparentheses -Werror -fdiagnostics-show-option %s 2>&1 | FileCheck %s -check-prefix=CHECK-FLAG
-// CHECK-FLAG: error: using the result of an assignment as a condition without parentheses [-Werror,-Wparentheses]

Modified: trunk/contrib/llvm/tools/clang/test/Sema/parentheses.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/parentheses.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/parentheses.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,115 +0,0 @@
-// RUN: %clang_cc1 -Wparentheses -fsyntax-only -verify %s
-// RUN: %clang_cc1 -Wparentheses -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-bool someConditionFunc();
-
-void conditional_op(int x, int y, bool b) {
-  (void)(x + someConditionFunc() ? 1 : 2); // expected-warning {{operator '?:' has lower precedence than '+'}} \
-                                           // expected-note {{place parentheses around the '+' expression to silence this warning}} \
-                                           // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:33-[[@LINE-4]]:33}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:14-[[@LINE-5]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:41-[[@LINE-6]]:41}:")"
-
-  (void)(x - b ? 1 : 2); // expected-warning {{operator '?:' has lower precedence than '-'}} \
-                         // expected-note {{place parentheses around the '-' expression to silence this warning}} \
-                         // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:15-[[@LINE-4]]:15}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:14-[[@LINE-5]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:23-[[@LINE-6]]:23}:")"
-
-  (void)(x * (x == y) ? 1 : 2); // expected-warning {{operator '?:' has lower precedence than '*'}} \
-                                // expected-note {{place parentheses around the '*' expression to silence this warning}} \
-                                // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:22-[[@LINE-4]]:22}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:14-[[@LINE-5]]:14}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:30-[[@LINE-6]]:30}:")"
-}
-
-class Stream {
-public:
-  operator int();
-  Stream &operator<<(int);
-  Stream &operator<<(const char*);
-  Stream &operator>>(int);
-  Stream &operator>>(const char*);
-};
-
-void f(Stream& s, bool b) {
-  (void)(s << b ? "foo" : "bar"); // expected-warning {{operator '?:' has lower precedence than '<<'}} \
-                                  // expected-note {{place parentheses around the '<<' expression to silence this warning}} \
-                                  // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:16-[[@LINE-4]]:16}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:15-[[@LINE-5]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:32-[[@LINE-6]]:32}:")"
-
-  (void)(s << 5 == 1); // expected-warning {{overloaded operator << has lower precedence than comparison operator}} \
-                       // expected-note {{place parentheses around the '<<' expression to silence this warning}} \
-                       // expected-note {{place parentheses around comparison expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:16-[[@LINE-4]]:16}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:15-[[@LINE-5]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:21-[[@LINE-6]]:21}:")"
-
-  (void)(s >> 5 == 1); // expected-warning {{overloaded operator >> has lower precedence than comparison operator}} \
-                       // expected-note {{place parentheses around the '>>' expression to silence this warning}} \
-                       // expected-note {{place parentheses around comparison expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:16-[[@LINE-4]]:16}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:15-[[@LINE-5]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:21-[[@LINE-6]]:21}:")"
-}
-
-struct S {
-  operator int() { return 42; }
-  friend S operator+(const S &lhs, bool) { return S(); }
-};
-
-void test(S *s, bool (S::*m_ptr)()) {
-  (void)(*s + true ? "foo" : "bar"); // expected-warning {{operator '?:' has lower precedence than '+'}} \
-                                     // expected-note {{place parentheses around the '+' expression to silence this warning}} \
-                                     // expected-note {{place parentheses around the '?:' expression to evaluate it first}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:10-[[@LINE-3]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-4]]:19-[[@LINE-4]]:19}:")"
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-5]]:15-[[@LINE-5]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:35-[[@LINE-6]]:35}:")"
-
-  (void)((*s + true) ? "foo" : "bar"); // No warning.
-
-  // Don't crash on unusual member call expressions.
-  (void)((s->*m_ptr)() ? "foo" : "bar");
-}
-
-void test(int a, int b, int c) {
-  (void)(a >> b + c); // expected-warning {{operator '>>' has lower precedence than '+'; '+' will be evaluated first}} \
-                         expected-note {{place parentheses around the '+' expression to silence this warning}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:15-[[@LINE-2]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:20-[[@LINE-3]]:20}:")"
-
-  (void)(a - b << c); // expected-warning {{operator '<<' has lower precedence than '-'; '-' will be evaluated first}} \
-                         expected-note {{place parentheses around the '-' expression to silence this warning}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:10-[[@LINE-2]]:10}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:15-[[@LINE-3]]:15}:")"
-
-  Stream() << b + c;
-  Stream() >> b + c; // expected-warning {{operator '>>' has lower precedence than '+'; '+' will be evaluated first}} \
-                        expected-note {{place parentheses around the '+' expression to silence this warning}}
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:15-[[@LINE-2]]:15}:"("
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:20-[[@LINE-3]]:20}:")"
-}
-
-namespace PR15628 {
-  struct BlockInputIter {
-    void* operator++(int);
-    void* operator--(int);
-  };
-
-  void test(BlockInputIter i) {
-    (void)(i++ ? true : false); // no-warning
-    (void)(i-- ? true : false); // no-warning
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pid_t.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pid_t.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pid_t.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple i586-pc-haiku -fsyntax-only -verify %s
-// RUN: %clang_cc1 -triple i686-pc-linux -fsyntax-only -verify %s
-
-// expected-no-diagnostics
-
-#ifdef __HAIKU__
-typedef signed long pid_t;
-#else
-typedef signed int pid_t;
-#endif
-pid_t	 vfork(void);
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pointer-addition.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pointer-addition.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pointer-addition.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
-
-typedef struct S S; // expected-note 3 {{forward declaration of 'struct S'}}
-void a(S* b, void* c) {
-  void (*fp)(int) = 0;
-  b++;       // expected-error {{arithmetic on a pointer to an incomplete type}}
-  b += 1;    // expected-error {{arithmetic on a pointer to an incomplete type}}
-  c++;       // expected-warning {{arithmetic on a pointer to void is a GNU extension}}
-  c += 1;    // expected-warning {{arithmetic on a pointer to void is a GNU extension}}
-  c--;       // expected-warning {{arithmetic on a pointer to void is a GNU extension}}
-  c -= 1;    // expected-warning {{arithmetic on a pointer to void is a GNU extension}}
-  (void) c[1]; // expected-warning {{subscript of a pointer to void is a GNU extension}}
-  b = 1+b;   // expected-error {{arithmetic on a pointer to an incomplete type}}
-  /* The next couple tests are only pedantic warnings in gcc */
-  void (*d)(S*,void*) = a;
-  d += 1;    // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
-  d++;       // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
-  d--;       // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
-  d -= 1;    // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
-  (void)(1 + d); // expected-warning {{arithmetic on a pointer to the function type 'void (S *, void *)' is a GNU extension}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pointer-conversion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pointer-conversion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pointer-conversion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-//RUN: %clang_cc1 -fsyntax-only -verify %s
-
-char * c;
-char const ** c2 = &c; // expected-warning {{discards qualifiers in nested pointer types}}
-
-typedef char dchar;
-dchar *** c3 = &c2; // expected-warning {{discards qualifiers in nested pointer types}}
-
-volatile char * c4;
-char ** c5 = &c4; // expected-warning {{discards qualifiers in nested pointer types}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pointer-subtract-compat.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pointer-subtract-compat.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pointer-subtract-compat.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic
-
-typedef const char rchar;
-int a(char* a, rchar* b) {
-  return a-b;
-}
-
-// <rdar://problem/6520707> 
-void f0(void (*fp)(void)) {
-  int x = fp - fp; // expected-warning{{arithmetic on pointers to the function type 'void (void)' is a GNU extension}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ppc-bool.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ppc-bool.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ppc-bool.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -triple powerpc-apple-macosx10.4.0 -verify -fsyntax-only %s
-// expected-no-diagnostics
-extern __typeof(+(_Bool)0) should_be_int;
-extern int should_be_int;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-mac68k-unsupported.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-mac68k-unsupported.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-mac68k-unsupported.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -fsyntax-only -verify %s
-
-/* expected-error {{mac68k alignment pragma is not supported}} */ #pragma options align=mac68k

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-mac68k.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-mac68k.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-mac68k.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,111 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-#include <stddef.h>
-
-#pragma options align=mac68k
-
-typedef float __attribute__((vector_size (8))) v2f_t;
-typedef float __attribute__((vector_size (16))) v4f_t;
-
-extern int a0_0[__alignof(v2f_t) == 8 ? 1 : -1];
-extern int a0_1[__alignof(v4f_t) == 16 ? 1 : -1];
-
-struct s1 {
-  char f0;
-  int  f1;
-};
-extern int a1_0[offsetof(struct s1, f0) == 0 ? 1 : -1];
-extern int a1_1[offsetof(struct s1, f1) == 2 ? 1 : -1];
-extern int a1_2[sizeof(struct s1) == 6 ? 1 : -1];
-extern int a1_3[__alignof(struct s1) == 2 ? 1 : -1];
-
-struct s2 {
-  char f0;
-  double f1;
-};
-extern int a2_0[offsetof(struct s2, f0) == 0 ? 1 : -1];
-extern int a2_1[offsetof(struct s2, f1) == 2 ? 1 : -1];
-extern int a2_2[sizeof(struct s2) == 10 ? 1 : -1];
-extern int a2_3[__alignof(struct s2) == 2 ? 1 : -1];
-
-struct s3 {
-  char f0;
-  v4f_t f1;
-};
-extern int a3_0[offsetof(struct s3, f0) == 0 ? 1 : -1];
-extern int a3_1[offsetof(struct s3, f1) == 2 ? 1 : -1];
-extern int a3_2[sizeof(struct s3) == 18 ? 1 : -1];
-extern int a3_3[__alignof(struct s3) == 2 ? 1 : -1];
-
-struct s4 {
-  char f0;
-  char f1;
-};
-extern int a4_0[offsetof(struct s4, f0) == 0 ? 1 : -1];
-extern int a4_1[offsetof(struct s4, f1) == 1 ? 1 : -1];
-extern int a4_2[sizeof(struct s4) == 2 ? 1 : -1];
-extern int a4_3[__alignof(struct s4) == 2 ? 1 : -1];
-
-struct s5 {
-  unsigned f0 : 9;
-  unsigned f1 : 9;
-};
-extern int a5_0[sizeof(struct s5) == 4 ? 1 : -1];
-extern int a5_1[__alignof(struct s5) == 2 ? 1 : -1];
-
-struct s6 {
-  unsigned : 0;
-  unsigned : 0;
-};
-extern int a6_0[sizeof(struct s6) == 0 ? 1 : -1];
-extern int a6_1[__alignof(struct s6) == 2 ? 1 : -1];
-
-struct s7 {
-  char : 1;
-  unsigned : 1;
-};
-extern int a7_0[sizeof(struct s7) == 2 ? 1 : -1];
-extern int a7_1[__alignof(struct s7) == 2 ? 1 : -1];
-
-struct s8 {
-  char f0;
-  unsigned : 1;
-};
-extern int a8_0[sizeof(struct s8) == 2 ? 1 : -1];
-extern int a8_1[__alignof(struct s8) == 2 ? 1 : -1];
-
-struct s9 {
-  char f0[3];
-  unsigned : 0;
-  char f1;
-};
-extern int a9_0[sizeof(struct s9) == 6 ? 1 : -1];
-extern int a9_1[__alignof(struct s9) == 2 ? 1 : -1];
-
-struct s10 {
-  char f0;
-};
-extern int a10_0[sizeof(struct s10) == 2 ? 1 : -1];
-extern int a10_1[__alignof(struct s10) == 2 ? 1 : -1];
-
-struct s11 {
-  char f0;
-  v2f_t f1;
-};
-extern int a11_0[offsetof(struct s11, f0) == 0 ? 1 : -1];
-extern int a11_1[offsetof(struct s11, f1) == 2 ? 1 : -1];
-extern int a11_2[sizeof(struct s11) == 10 ? 1 : -1];
-extern int a11_3[__alignof(struct s11) == 2 ? 1 : -1];
-
-#pragma options align=reset
-
-void f12(void) {
-  #pragma options align=mac68k
-  struct s12 {
-    char f0;
-    int  f1;
-  };
-  #pragma options align=reset
-  extern int a12[sizeof(struct s12) == 6 ? 1 : -1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-packed.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-packed.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-align-packed.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-#pragma pack(push, 1)
-struct s0 {
-  char f0;
-  int  f1 __attribute__((aligned(4)));
-};
-extern int a[sizeof(struct s0) == 5 ? 1 : -1];
-#pragma pack(pop)
-
-struct __attribute__((packed)) s1 {
-  char f0;
-  int  f1 __attribute__((aligned(4)));
-};
-extern int a[sizeof(struct s1) == 8 ? 1 : -1];
-
-#pragma options align=packed
-struct s2 {
-  char f0;
-  int  f1 __attribute__((aligned(4)));
-};
-extern int a[sizeof(struct s2) == 5 ? 1 : -1];
-#pragma options align=reset
-
-#pragma pack(1)
-struct s3_0 { unsigned char f0; unsigned int f1; };
-int t3_0[sizeof(struct s3_0) == 5 ? 1 : -1];
-#pragma options align=reset
-struct s3_1 { unsigned char f0; unsigned int f1; };
-int t3_1[sizeof(struct s3_1) == 8 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-arc-cf-code-audited.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-arc-cf-code-audited.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-arc-cf-code-audited.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#pragma clang arc_cf_code_audited foo // expected-error {{expected 'begin' or 'end'}}
-
-#pragma clang arc_cf_code_audited begin foo // expected-warning {{extra tokens at end of #pragma directive}}
-
-#pragma clang arc_cf_code_audited end
-#pragma clang arc_cf_code_audited end // expected-error {{not currently inside '#pragma clang arc_cf_code_audited'}}
-
-#pragma clang arc_cf_code_audited begin // expected-note {{#pragma entered here}}
-#pragma clang arc_cf_code_audited begin // expected-error {{already inside '#pragma clang arc_cf_code_audited'}} expected-note {{#pragma entered here}}
-
-#include "Inputs/pragma-arc-cf-code-audited.h" // expected-error {{cannot #include files inside '#pragma clang arc_cf_code_audited'}}
-
-// This is actually on the #pragma line in the header.
-// expected-error at Inputs/pragma-arc-cf-code-audited.h:16 {{'#pragma clang arc_cf_code_audited' was not ended within this file}}
-
-#pragma clang arc_cf_code_audited begin // expected-error {{'#pragma clang arc_cf_code_audited' was not ended within this file}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-ms_struct.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-ms_struct.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-ms_struct.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin9 %s
-
-#pragma ms_struct on
-
-#pragma ms_struct off
-
-#pragma ms_struct reset
-
-#pragma ms_struct // expected-warning {{incorrect use of '#pragma ms_struct on|off' - ignored}}
-
-#pragma ms_struct on top of spaghetti  // expected-warning {{extra tokens at end of '#pragma ms_struct' - ignored}}
-
-struct foo
-{
-  int a;
-  int b;
-  char c;
-};
-
-
-struct {
-                   unsigned long bf_1 : 12;
-                   unsigned long : 0;
-                   unsigned long bf_2 : 12;
-} __attribute__((__ms_struct__)) t1;
-
-struct S {
-		   double __attribute__((ms_struct)) d;	// expected-warning {{'ms_struct' attribute ignored}}
-                   unsigned long bf_1 : 12;
-                   unsigned long : 0;
-                   unsigned long bf_2 : 12;
-} __attribute__((ms_struct)) t2;
-
-enum
-{
-  A = 0,
-  B,
-  C
-} __attribute__((ms_struct)) e1; // expected-warning {{'ms_struct' attribute ignored}}
-
-// rdar://10513599
-#pragma ms_struct on
-
-typedef struct
-{
-void *pv;
-int l;
-} Foo;
-
-typedef struct
-{
-void *pv1;
-Foo foo;
-unsigned short fInited : 1;
-void *pv2;		
-} PackOddity;		
-
-#pragma ms_struct off
-
-static int arr[sizeof(PackOddity) == 40 ? 1 : -1];
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-#include <stddef.h>
-
-#pragma pack(4)
-
-// Baseline
-struct s0 {
-  char f0;
-  int  f1;
-};
-extern int a0[offsetof(struct s0, f1) == 4 ? 1 : -1];
-
-#pragma pack(push, 2)
-struct s1 {
-  char f0;
-  int  f1;
-};
-extern int a1[offsetof(struct s1, f1) == 2 ? 1 : -1];
-#pragma pack(pop)
-
-#pragma pack(1)
-struct s3_0 {
-  char f0;
-  int f1;
-};
-#pragma pack()
-struct s3_1 {
-  char f0;
-  int f1;
-};
-extern int a3_0[offsetof(struct s3_0, f1) == 1 ? 1 : -1];
-extern int a3_1[offsetof(struct s3_1, f1) == 4 ? 1 : -1];
-
-// pack(0) is like pack()
-#pragma pack(1)
-struct s4_0 {
-  char f0;
-  int f1;
-};
-#pragma pack(0)
-struct s4_1 {
-  char f0;
-  int f1;
-};
-extern int a4_0[offsetof(struct s4_0, f1) == 1 ? 1 : -1];
-extern int a4_1[offsetof(struct s4_1, f1) == 4 ? 1 : -1];
-
-void f() {
-  #pragma pack(push, 2)
-  struct s5_0 {
-    char f0;
-    struct s2_4_0 { 
-      int f0;
-    } f1;
-  };
-  #pragma pack(pop)
-  extern int s5_0[offsetof(struct s5_0, f1) == 2 ? 1 : -1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-3.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-3.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-3.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-// Stack: [], Alignment: 8
-
-#pragma pack(push, 1)
-// Stack: [8], Alignment: 1
-
-#pragma pack(push, 4)
-// Stack: [8, 1], Alignment: 4
-
-// Note that this differs from gcc; pack() in gcc appears to pop the
-// top stack entry and resets the current alignment. This is both
-// inconsistent with MSVC, and the gcc documentation. In other cases,
-// for example changing this to pack(8), I don't even understand what gcc
-// is doing.
-
-#pragma pack()
-// Stack: [8, 1], Alignment: 8
-
-#pragma pack(pop)
-// Stack: [8], Alignment: 1
-struct s0 {
-  char f0;
-  short f1;
-};
-int a[sizeof(struct s0) == 3 ? 1 : -1];
-
-#pragma pack(pop)
-// Stack: [], Alignment: 8
-struct s1 {
-  char f0;
-  short f1;
-};
-int b[sizeof(struct s1) == 4 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-4.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-4.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-4.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 %s -fsyntax-only -verify
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-// rdar://problem/7095436
-#pragma pack(4)
-
-struct s0 {
-  long long a __attribute__((aligned(8)));
-  long long b __attribute__((aligned(8)));
-  unsigned int c __attribute__((aligned(8)));
-  int d[12];
-};
-
-struct s1 {
-  int a[15];
-  struct s0 b;
-};
-
-int arr0[((sizeof(struct s1) % 64) == 0) ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-5.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-5.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-5.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 %s -fsyntax-only -verify -ffreestanding
-// expected-no-diagnostics
-// <rdar://problem/10494810> and PR9560
-// Check #pragma pack handling with bitfields.
-
-#include <stddef.h>
-#pragma pack(2)
-
-struct s0 {
-     char        f1;
-     unsigned    f2 : 32;
-     char        f3;
-};
-extern int check[sizeof(struct s0) == 6 ? 1 : -1];
-
-struct s1 {
-     char        f1;
-     unsigned       : 0;
-     char        f3;
-};
-extern int check[sizeof(struct s1) == 5 ? 1 : -1];
-
-struct s2 {
-     char        f1;
-     unsigned       : 0;
-     unsigned    f3 : 8;
-     char        f4;
-};
-extern int check[sizeof(struct s2) == 6 ? 1 : -1];
-
-struct s3 {
-     char        f1;
-     unsigned       : 0;
-     unsigned    f3 : 16;
-     char        f4;
-};
-extern int check[sizeof(struct s3) == 8 ? 1 : -1];
-extern int check[offsetof(struct s3, f4) == 6 ? 1 : -1];
-
-struct s4 {
-     char        f1;
-     unsigned    f2 : 8;
-     char        f3;
-};
-extern int check[sizeof(struct s4) == 4 ? 1 : -1];
-extern int check[offsetof(struct s4, f3) == 2 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-6.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-6.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-6.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-// Pragma pack handling with tag declarations
-
-struct X;
-
-#pragma pack(2)
-struct X { int x; };
-struct Y;
-#pragma pack()
-
-struct Y { int y; };
-
-extern int check[__alignof(struct X) == 2 ? 1 : -1];
-extern int check[__alignof(struct Y) == 4 ? 1 : -1];
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-and-options-align.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-and-options-align.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-and-options-align.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 %s -fsyntax-only -verify
-
-// Check that #pragma pack and #pragma options share the same stack.
-
-#pragma pack(push, 1)
-struct s0 {
-  char c;
-  int x;
-};
-extern int a[sizeof(struct s0) == 5 ? 1 : -1];
-
-#pragma options align=natural
-struct s1 {
-  char c;
-  int x;
-};
-extern int a[sizeof(struct s1) == 8 ? 1 : -1];
-
-#pragma options align=reset
-#pragma options align=native
-struct s1_1 {
-  char c;
-  int x;
-};
-extern int a[sizeof(struct s1_1) == 8 ? 1 : -1];
-
-#pragma pack(pop)
-struct s2 {
-  char c;
-  int x;
-};
-extern int a[sizeof(struct s2) == 5 ? 1 : -1];
-#pragma pack(pop)
-
-struct s3 {
-  char c;
-  int x;
-};
-extern int a[sizeof(struct s3) == 8 ? 1 : -1];
-
-#pragma pack(push,2)
-#pragma options align=power
-struct s4 {
-  char c;
-  int x;
-};
-#pragma pack(pop)
-#pragma options align=reset
-extern int a[sizeof(struct s4) == 8 ? 1 : -1];
-
-/* expected-warning {{#pragma options align=reset failed: stack empty}} */ #pragma options align=reset
-/* expected-warning {{#pragma pack(pop, ...) failed: stack empty}} */ #pragma pack(pop)
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-apple.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-apple.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack-apple.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang -fsyntax-only %s 2>&1 | FileCheck %s
-// RUN: %clang -fsyntax-only -fapple-pragma-pack %s 2>&1 | FileCheck -check-prefix=CHECK-APPLE %s
-
-#pragma pack(push,1)
-#pragma pack(2)
-#pragma pack()
-#pragma pack(show)
-
-// CHECK: pack(show) == 8
-// CHECK-APPLE: pack(show) == 1

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-pack.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -verify %s
-
-/* expected-warning {{value of #pragma pack(show) == 8}} */ #pragma pack(show)
-/* expected-warning {{expected #pragma pack parameter to be}} */ #pragma pack(3)
-/* expected-warning {{value of #pragma pack(show) == 8}} */ #pragma pack(show)
-#pragma pack(4)
-/* expected-warning {{value of #pragma pack(show) == 4}} */ #pragma pack(show)
-#pragma pack() // resets to default
-/* expected-warning {{value of #pragma pack(show) == 8}} */ #pragma pack(show)
-#pragma pack(2)
-#pragma pack(push, eek, 16) // -> (eek, 2), 16
-/* expected-warning {{value of #pragma pack(show) == 16}} */ #pragma pack(show)
-#pragma pack(push) // -> (eek, 2), (, 2), 16
-/* expected-warning {{value of #pragma pack(show) == 16}} */ #pragma pack(show)
-#pragma pack(1) 
-#pragma pack(push, 8) // -> (eek, 2), (, 2), (, 1), 8
-/* expected-warning {{value of #pragma pack(show) == 8}} */ #pragma pack(show)
-#pragma pack(pop) // -> (eek, 2), (,2), 1
-/* expected-warning {{value of #pragma pack(show) == 1}} */ #pragma pack(show)
-#pragma pack(pop, eek)
-/* expected-warning {{value of #pragma pack(show) == 2}} */ #pragma pack(show)
-/* expected-warning {{pack(pop, ...) failed: stack empty}} */ #pragma pack(pop)
-
-#pragma pack(push)
-#pragma pack(pop, 16)
-/* expected-warning {{value of #pragma pack(show) == 16}} */ #pragma pack(show)
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/pragma-unused.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/pragma-unused.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/pragma-unused.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-parameter -Wused-but-marked-unused -Wunused -verify %s
-
-void f1(void) {
-  int x, y, z;
-  #pragma unused(x)
-  #pragma unused(y, z)
-  
-  int w; // expected-warning {{unused}}
-  #pragma unused w // expected-warning{{missing '(' after '#pragma unused' - ignoring}}
-}
-
-void f2(void) {
-  int x, y; // expected-warning {{unused}} expected-warning {{unused}}
-  #pragma unused(x,) // expected-warning{{expected '#pragma unused' argument to be a variable name}}
-  #pragma unused() // expected-warning{{expected '#pragma unused' argument to be a variable name}}
-}
-
-void f3(void) {
-  #pragma unused(x) // expected-warning{{undeclared variable 'x' used as an argument for '#pragma unused'}}
-}
-
-void f4(void) {
-  int w; // expected-warning {{unused}}
-  #pragma unused((w)) // expected-warning{{expected '#pragma unused' argument to be a variable name}}
-}
-
-void f6(void) {
-  int z; // no-warning
-  {
-    #pragma unused(z) // no-warning
-  }
-}
-
-void f7() {
-  int y;
-  #pragma unused(undeclared, undefined, y) // expected-warning{{undeclared variable 'undeclared' used as an argument for '#pragma unused'}} expected-warning{{undeclared variable 'undefined' used as an argument for '#pragma unused'}}
-}
-
-int f8(int x) { // expected-warning{{unused parameter 'x'}}
-  return 0;
-}
-
-int f9(int x) {
-  return x;
-}
-
-int f10(int x) {
-  #pragma unused(x)
-  return 0;
-}
-
-int f11(int x) {
-  #pragma unused(x)
-  return x; // expected-warning{{'x' was marked unused but was used}}
-}
-
-int f12(int x) {
-  int y = x;
-  #pragma unused(x) // expected-warning{{'x' was marked unused but was used}}
-  return y;
-}
-
-// rdar://8793832
-static int glob_var = 0;
-#pragma unused(glob_var)

Modified: trunk/contrib/llvm/tools/clang/test/Sema/predef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/predef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/predef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void abcdefghi12(void) {
- const char (*ss)[12] = &__func__;
- static int arr[sizeof(__func__)==12 ? 1 : -1];
-}
-
-char *X = __func__; // expected-warning {{predefined identifier is only valid}} \
-                       expected-warning {{initializing 'char *' with an expression of type 'const char [1]' discards qualifiers}}
-
-void a() {
-  __func__[0] = 'a';  // expected-error {{variable is not assignable}}
-}
-
-// rdar://6097892 - GCC permits this insanity.
-const char *b = __func__;  // expected-warning {{predefined identifier is only valid}}
-const char *c = __FUNCTION__; // expected-warning {{predefined identifier is only valid}}
-const char *d = __PRETTY_FUNCTION__; // expected-warning {{predefined identifier is only valid}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/predefined-function.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/predefined-function.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/predefined-function.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-char *funk(int format);
-enum Test {A=-1};
-char *funk(enum Test x);
-
-int eli(float b); // expected-note {{previous declaration is here}} \
-// expected-note{{passing argument to parameter 'b' here}}
-int b(int c) {return 1;}
-
-int foo();
-int foo() {
-  int eli(int (int)); // expected-error {{conflicting types for 'eli'}}
-  eli(b); // expected-error{{passing 'int (int)' to parameter of incompatible type 'float'}}
-  return 0;
-}
-
-int bar();
-int bar(int i) // expected-note {{previous definition is here}}
-{
-  return 0;
-}
-int bar() // expected-error {{redefinition of 'bar'}} 
-{
-  return 0;
-}
-
-int foobar(int); // note {{previous declaration is here}}
-int foobar() // error {{conflicting types for 'foobar'}}
-{
-  return 0;
-}
-
-int wibble(); // expected-note {{previous declaration is here}}
-float wibble() // expected-error {{conflicting types for 'wibble'}}
-{
-  return 0.0f;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/private-extern.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/private-extern.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/private-extern.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-private-extern %s
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-private-extern -fmodules %s
-
-static int g0; // expected-note{{previous definition}}
-int g0; // expected-error{{non-static declaration of 'g0' follows static declaration}}
-
-static int g1;
-extern int g1;
-
-static int g2; 
-__private_extern__ int g2;
-
-int g3; // expected-note{{previous definition}}
-static int g3; // expected-error{{static declaration of 'g3' follows non-static declaration}}
-
-extern int g4; // expected-note{{previous definition}}
-static int g4; // expected-error{{static declaration of 'g4' follows non-static declaration}}
-
-__private_extern__ int g5; // expected-note{{previous definition}}
-static int g5; // expected-error{{static declaration of 'g5' follows non-static declaration}}
-
-void f0() {
-  int g6; // expected-note {{previous}}
-  extern int g6; // expected-error {{extern declaration of 'g6' follows non-extern declaration}}
-}
-
-void f1() {
-  int g7; // expected-note {{previous}}
-  __private_extern__ int g7; // expected-error {{extern declaration of 'g7' follows non-extern declaration}}
-}
-
-void f2() {
-  extern int g8; // expected-note{{previous definition}}
-  int g8; // expected-error {{non-extern declaration of 'g8' follows extern declaration}}
-}
-
-void f3() {
-  __private_extern__ int g9; // expected-note{{previous definition}}
-  int g9; // expected-error {{non-extern declaration of 'g9' follows extern declaration}}
-}
-
-void f4() {
-  extern int g10;
-  extern int g10;
-}
-
-void f5() {
-  __private_extern__ int g11;
-  __private_extern__ int g11;
-}
-
-void f6() {
-  // FIXME: Diagnose
-  extern int g12;
-  __private_extern__ int g12;
-}
-
-void f7() {
-  // FIXME: Diagnose
-  __private_extern__ int g13;
-  extern int g13;
-}
-
-struct s0;
-void f8() {
-  extern struct s0 g14;
-  __private_extern__ struct s0 g14;
-}
-struct s0 { int x; };
-
-void f9() {
-  extern int g15 = 0; // expected-error{{'extern' variable cannot have an initializer}}
-  // FIXME: linkage specifier in warning.
-  __private_extern__ int g16 = 0; // expected-error{{'extern' variable cannot have an initializer}}
-}
-
-extern int g17;
-int g17 = 0;
-
-extern int g18 = 0; // expected-warning{{'extern' variable has an initializer}}
-
-__private_extern__ int g19;
-int g19 = 0;
-
-__private_extern__ int g20 = 0;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/rdr6094103-unordered-compare-promote.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/rdr6094103-unordered-compare-promote.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/rdr6094103-unordered-compare-promote.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -ast-dump %s 2>&1 | grep ImplicitCastExpr | count 4
-
-int foo (double x, long double y) {
-  // There needs to be an implicit cast on x here.
-  return __builtin_isgreater(x, y);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/recover-goto.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/recover-goto.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/recover-goto.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-
-void a() { // expected-note {{to match this '{'}}
-  goto A; // expected-error {{use of undeclared label}}
-// expected-error {{expected '}'}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/redefinition.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/redefinition.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/redefinition.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-int f(int a) { return 0; } // expected-note {{previous definition is here}}
-int f(int);
-int f(int a) { return 0; } // expected-error {{redefinition of 'f'}}
-
-// <rdar://problem/6097326>
-int foo(x) {
-  return 0;
-}
-int x = 1;
-
-// <rdar://problem/6880464>
-extern inline int g(void) { return 0; } // expected-note{{previous definition}}
-int g(void) { return 0; } // expected-error{{redefinition of a 'extern inline' function 'g' is not supported in C99 mode}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/return-noreturn.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/return-noreturn.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/return-noreturn.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fblocks -Wmissing-noreturn -Wno-unreachable-code
-
-int j;
-void test1() { // expected-warning {{function 'test1' could be declared with attribute 'noreturn'}}
-  ^ (void) { while (1) { } }(); // expected-warning {{block could be declared with attribute 'noreturn'}}
-  ^ (void) { if (j) while (1) { } }();
-  while (1) { }
-}
-
-void test2() {
-  if (j) while (1) { }
-}
-
-__attribute__((__noreturn__))
-void test2_positive() {
-  if (j) while (1) { }
-} // expected-warning{{function declared 'noreturn' should not return}}
-
-
-// This test case illustrates that we don't warn about the missing return
-// because the function is marked noreturn and there is an infinite loop.
-extern int foo_test_3();
-__attribute__((__noreturn__)) void* test3(int arg) {
-  while (1) foo_test_3();
-}
-
-__attribute__((__noreturn__)) void* test3_positive(int arg) {
-  while (0) foo_test_3();
-} // expected-warning{{function declared 'noreturn' should not return}}
-
-
-// PR5298 - -Wmissing-noreturn shouldn't warn if the function is already
-// declared noreturn.
-void __attribute__((noreturn))
-test4() {
-  test2_positive();
-}
-
-// Do not warn here.
-_Noreturn void test5() {
-  test2_positive();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/return-silent.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/return-silent.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/return-silent.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -Wno-return-type -fsyntax-only -verify
-// expected-no-diagnostics
-
-int t14() {
-  return;
-}
-
-void t15() {
-  return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/return.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/return.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/return.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,277 +0,0 @@
-// RUN: %clang %s -fsyntax-only -Wignored-qualifiers -Wno-error=return-type -Xclang -verify -fblocks -Wno-unreachable-code -Wno-unused-value
-
-// clang emits the following warning by default.
-// With GCC, -pedantic, -Wreturn-type or -Wall are required to produce the 
-// following warning.
-int t14() {
-  return; // expected-warning {{non-void function 't14' should return a value}}
-}
-
-void t15() {
-  return 1; // expected-warning {{void function 't15' should not return a value}}
-}
-
-int unknown();
-
-void test0() {
-}
-
-int test1() {
-} // expected-warning {{control reaches end of non-void function}}
-
-int test2() {
-  a: goto a;
-}
-
-int test3() {
-  goto a;
-  a: ;
-} // expected-warning {{control reaches end of non-void function}}
-
-
-void halt() {
-  a: goto a;
-}
-
-void halt2() __attribute__((noreturn));
-
-int test4() {
-  halt2();
-}
-
-int test5() {
-  halt2(), (void)1;
-}
-
-int test6() {
-  1, halt2();
-}
-
-int j;
-int unknown_nohalt() {
-  return j;
-}
-
-int test7() {
-  unknown();
-} // expected-warning {{control reaches end of non-void function}}
-
-int test8() {
-  (void)(1 + unknown());
-} // expected-warning {{control reaches end of non-void function}}
-
-int halt3() __attribute__((noreturn));
-
-int test9() {
-  (void)(halt3() + unknown());
-}
-
-int test10() {
-  (void)(unknown() || halt3());
-} // expected-warning {{control may reach end of non-void function}}
-
-int test11() {
-  (void)(unknown() && halt3());
-} // expected-warning {{control may reach end of non-void function}}
-
-int test12() {
-  (void)(halt3() || unknown());
-}
-
-int test13() {
-  (void)(halt3() && unknown());
-}
-
-int test14() {
-  (void)(1 || unknown());
-} // expected-warning {{control reaches end of non-void function}}
-
-int test15() {
-  (void)(0 || unknown());
-} // expected-warning {{control reaches end of non-void function}}
-
-int test16() {
-  (void)(0 && unknown());
-} // expected-warning {{control reaches end of non-void function}}
-
-int test17() {
-  (void)(1 && unknown());
-} // expected-warning {{control reaches end of non-void function}}
-
-int test18() {
-  (void)(unknown_nohalt() && halt3());
-} // expected-warning {{control may reach end of non-void function}}
-
-int test19() {
-  (void)(unknown_nohalt() && unknown());
-} // expected-warning {{control reaches end of non-void function}}
-
-int test20() {
-  int i;
-  if (i)
-    return 0;
-  else if (0)
-    return 2;
-} // expected-warning {{control may reach end of non-void function}}
-
-int test21() {
-  int i;
-  if (i)
-    return 0;
-  else if (1)
-    return 2;
-}
-
-int test22() {
-  int i;
-  switch (i) default: ;
-} // expected-warning {{control reaches end of non-void function}}
-
-int test23() {
-  int i;
-  switch (i) {
-  case 0:
-    return 0;
-  case 2:
-    return 2;
-  }
-} // expected-warning {{control may reach end of non-void function}}
-
-int test24() {
-  int i;
-  switch (i) {
-    case 0:
-    return 0;
-  case 2:
-    return 2;
-  default:
-    return -1;
-  }
-}
-
-int test25() {
-  1 ? halt3() : unknown();
-}
-
-int test26() {
-  0 ? halt3() : unknown();
-} // expected-warning {{control reaches end of non-void function}}
-
-int j;
-void (*fptr)() __attribute__((noreturn));
-int test27() {
-  switch (j) {
-  case 1:
-    do { } while (1);
-    break;
-  case 2:
-    for (;;) ;
-    break;
-  case 3:
-    for (;1;) ;
-    for (;0;) {
-      goto done;
-    }
-    return 1;
-  case 4:    
-    while (0) { goto done; }
-    return 1;
-  case 5:
-    while (1) { return 1; }
-    break;
-  case 6:
-    fptr();
-    break;
-  default:
-    return 1;
-  }
-  done: ;
-}
-
-// PR4624
-void test28() __attribute__((noreturn));
-void test28(x) { while (1) { } }
-
-void exit(int);
-int test29() {
-  exit(1);
-}
-
-// Include these declarations here explicitly so we don't depend on system headers.
-typedef struct __jmp_buf_tag{} jmp_buf[1];
-
-extern void longjmp (struct __jmp_buf_tag __env[1], int __val) __attribute__ ((noreturn));
-extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) __attribute__ ((noreturn));
-
-jmp_buf test30_j;
-
-int test30() {
-  if (j)
-    longjmp(test30_j, 1);
-  else
-#if defined(_WIN32) || defined(_WIN64) || defined(__CYGWIN__)
-    longjmp(test30_j, 2);
-#else
-    _longjmp(test30_j, 1);
-#endif
-}
-
-typedef void test31_t(int status);
-void test31(test31_t *callback __attribute__((noreturn)));
-
-void test32() {
-  ^ (void) { while (1) { } }();
-  ^ (void) { if (j) while (1) { } }();
-  while (1) { }
-}
-
-void test33() {
-  if (j) while (1) { }
-}
-
-// Test that 'static inline' functions are only analyzed for CFG-based warnings
-// when they are used.
-static inline int si_has_missing_return() {} // expected-warning{{control reaches end of non-void function}}
-static inline int si_has_missing_return_2() {}; // expected-warning{{control reaches end of non-void function}}
-static inline int si_forward();
-static inline int si_has_missing_return_3(int x) {
-  if (x)
-   return si_has_missing_return_3(x+1);
-} // expected-warning{{control may reach end of non-void function}}
-
-int test_static_inline(int x) {
-  si_forward();
-  return x ? si_has_missing_return_2() : si_has_missing_return_3(x);
-}
-static inline int si_forward() {} // expected-warning{{control reaches end of non-void function}}
-
-// Test warnings on ignored qualifiers on return types.
-const int ignored_c_quals(); // expected-warning{{'const' type qualifier on return type has no effect}}
-const volatile int ignored_cv_quals(); // expected-warning{{'const volatile' type qualifiers on return type have no effect}}
-char* const volatile restrict ignored_cvr_quals(); // expected-warning{{'const volatile restrict' type qualifiers on return type have no effect}}
-
-typedef const int CI;
-CI ignored_quals_typedef();
-
-const CI ignored_quals_typedef_2(); // expected-warning{{'const' type qualifier}}
-
-// Test that for switch(enum) that if the switch statement covers all the cases
-// that we don't consider that for -Wreturn-type.
-enum Cases { C1, C2, C3, C4 };
-int test_enum_cases(enum Cases C) {
-  switch (C) {
-  case C1: return 1;
-  case C2: return 2;
-  case C4: return 3;
-  case C3: return 4;
-  }
-} // no-warning
-
-// PR12318 - Don't give a may reach end of non-void function warning.
-int test34(int x) {
-  if (x == 1) {
-    return 3;
-  } else if ( x == 2 || 1) {
-    return 5;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/scope-check.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/scope-check.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/scope-check.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,234 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -std=gnu99 %s -Wno-unreachable-code
-
-int test1(int x) {
-  goto L;    // expected-error{{goto into protected scope}}
-  int a[x];  // expected-note {{jump bypasses initialization of variable length array}}
-  int b[x];  // expected-note {{jump bypasses initialization of variable length array}}
-  L:
-  return sizeof a;
-}
-
-int test2(int x) {
-  goto L;            // expected-error{{goto into protected scope}}
-  typedef int a[x];  // expected-note {{jump bypasses initialization of VLA typedef}}
-  L:
-  return sizeof(a);
-}
-
-void test3clean(int*);
-
-int test3() {
-  goto L;            // expected-error{{goto into protected scope}}
-int a __attribute((cleanup(test3clean))); // expected-note {{jump bypasses initialization of variable with __attribute__((cleanup))}}
-L:
-  return a;
-}
-
-int test4(int x) {
-  goto L;       // expected-error{{goto into protected scope}}
-int a[x];       // expected-note {{jump bypasses initialization of variable length array}}
-  test4(x);
-L:
-  return sizeof a;
-}
-
-int test5(int x) {
-  int a[x];
-  test5(x);
-  goto L;  // Ok.
-L:
-  goto L;  // Ok.
-  return sizeof a;
-}
-
-int test6() { 
-  // just plain invalid.
-  goto x;  // expected-error {{use of undeclared label 'x'}}
-}
-
-void test7(int x) {
-  switch (x) {
-  case 1: ;
-    int a[x];       // expected-note {{jump bypasses initialization of variable length array}}
-  case 2:           // expected-error {{switch case is in protected scope}}
-    a[1] = 2;
-    break;
-  }
-}
-
-int test8(int x) {
-  // For statement.
-  goto L2;     // expected-error {{goto into protected scope}}
-  for (int arr[x];   // expected-note {{jump bypasses initialization of variable length array}}  
-       ; ++x)
-    L2:;
-
-  // Statement expressions.
-  goto L3;   // expected-error {{goto into protected scope}}
-  int Y = ({  int a[x];   // expected-note {{jump bypasses initialization of variable length array}}  
-           L3: 4; });
-  
-  goto L4; // expected-error {{goto into protected scope}}
-  {
-    int A[x],  // expected-note {{jump bypasses initialization of variable length array}}
-        B[x];  // expected-note {{jump bypasses initialization of variable length array}}
-  L4: ;
-  }
-  
-  {
-  L5: ;// ok
-    int A[x], B = ({ if (x)
-                       goto L5;
-                     else 
-                       goto L6;
-                   4; }); 
-  L6:; // ok.
-    if (x) goto L6; // ok
-  }
-  
-  {
-  L7: ;// ok
-    int A[x], B = ({ if (x)
-                       goto L7;
-                     else 
-                       goto L8;  // expected-error {{goto into protected scope}}
-                     4; }),
-        C[x];   // expected-note {{jump bypasses initialization of variable length array}}
-  L8:; // bad
-  }
- 
-  {
-  L9: ;// ok
-    int A[({ if (x)
-               goto L9;
-             else
-               // FIXME:
-               goto L10;  // fixme-error {{goto into protected scope}}
-           4; })];
-  L10:; // bad
-  }
-  
-  {
-    // FIXME: Crashes goto checker.
-    //goto L11;// ok
-    //int A[({   L11: 4; })];
-  }
-  
-  {
-    goto L12;
-    
-    int y = 4;   // fixme-warn: skips initializer.
-  L12:
-    ;
-  }
-  
-  // Statement expressions 2.
-  goto L1;     // expected-error {{goto into protected scope}}
-  return x == ({
-                 int a[x];   // expected-note {{jump bypasses initialization of variable length array}}  
-               L1:
-                 42; });
-}
-
-void test9(int n, void *P) {
-  int Y;
-  int Z = 4;
-  goto *P;  // expected-error {{indirect goto might cross protected scopes}}
-
-L2: ;
-  int a[n]; // expected-note {{jump bypasses initialization of variable length array}}
-
-L3:         // expected-note {{possible target of indirect goto}}
-L4:  
-  goto *P;
-  goto L3;  // ok
-  goto L4;  // ok
-  
-  void *Ptrs[] = {
-    &&L2,
-    &&L3
-  };
-}
-
-void test10(int n, void *P) {
-  goto L0;     // expected-error {{goto into protected scope}}
-  typedef int A[n];  // expected-note {{jump bypasses initialization of VLA typedef}}
-L0:
-  
-  goto L1;      // expected-error {{goto into protected scope}}
-  A b, c[10];        // expected-note 2 {{jump bypasses initialization of variable length array}}
-L1:
-  goto L2;     // expected-error {{goto into protected scope}}
-  A d[n];      // expected-note {{jump bypasses initialization of variable length array}}
-L2:
-  return;
-}
-
-void test11(int n) {
-  void *P = ^{
-    switch (n) {
-    case 1:;
-    case 2: 
-    case 3:;
-      int Arr[n]; // expected-note {{jump bypasses initialization of variable length array}}
-    case 4:       // expected-error {{switch case is in protected scope}}
-      return;
-    }
-  };
-}
-
-
-// TODO: When and if gotos are allowed in blocks, this should work.
-void test12(int n) {
-  void *P = ^{
-    goto L1;
-  L1:
-    goto L2;
-  L2:
-    goto L3;    // expected-error {{goto into protected scope}}
-    int Arr[n]; // expected-note {{jump bypasses initialization of variable length array}}
-  L3:
-    goto L4;
-  L4: return;
-  };
-}
-
-void test13(int n, void *p) {
-  int vla[n];
-  goto *p;
- a0: ;
-  static void *ps[] = { &&a0 };
-}
-
-int test14(int n) {
-  static void *ps[] = { &&a0, &&a1 };
-  if (n < 0)
-    goto *&&a0;
-
-  if (n > 0) {
-    int vla[n];
-   a1:
-    vla[n-1] = 0;
-  }
- a0:
-  return 0;
-}
-
-
-// PR8473: IR gen can't deal with indirect gotos past VLA
-// initialization, so that really needs to be a hard error.
-void test15(int n, void *pc) {
-  static const void *addrs[] = { &&L1, &&L2 };
-
-  goto *pc; // expected-error {{indirect goto might cross protected scope}}
-
- L1:
-  {
-    char vla[n]; // expected-note {{jump bypasses initialization}}
-   L2: // expected-note {{possible target}}
-    vla[0] = 'a';
-  }
-}
-
-// rdar://9024687
-int test16(int [sizeof &&z]); // expected-error {{use of address-of-label extension outside of a function body}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/self-comparison.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/self-comparison.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/self-comparison.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int foo(int x) {
-  return x == x; // expected-warning {{self-comparison always evaluates to true}}
-}
-
-int foo2(int x) {
-  return (x) != (((x))); // expected-warning {{self-comparison always evaluates to false}}
-}
-
-void foo3(short s, short t) { 
-  if (s == s) {} // expected-warning {{self-comparison always evaluates to true}}
-  if (s == t) {} // no-warning
-}
-
-void foo4(void* v, void* w) {
-  if (v == v) {} // expected-warning {{self-comparison always evaluates to true}}
-  if (v == w) {} // no-warning
-}
-
-int qux(int x) {
-   return x < x; // expected-warning {{self-comparison}}
-}
-
-int qux2(int x) {
-   return x > x; // expected-warning {{self-comparison}}
-}
-
-int bar(float x) {
-  return x == x; // no-warning
-}
-
-int bar2(float x) {
-  return x != x; // no-warning
-}
-
-#define IS_THE_ANSWER(x) (x == 42)
-
-int macro_comparison() {
-  return IS_THE_ANSWER(42);
-}
-
-// Don't complain in unevaluated contexts.
-int compare_sizeof(int x) {
-  return sizeof(x == x); // no-warning
-}
-
-int array_comparisons() {
-  int array1[2];
-  int array2[2];
-
-  //
-  // compare same array
-  //
-  return array1 == array1; // expected-warning{{self-comparison always evaluates to true}}
-  return array1 != array1; // expected-warning{{self-comparison always evaluates to false}}
-  return array1 < array1; // expected-warning{{self-comparison always evaluates to false}}
-  return array1 <= array1; // expected-warning{{self-comparison always evaluates to true}}
-  return array1 > array1; // expected-warning{{self-comparison always evaluates to false}}
-  return array1 >= array1; // expected-warning{{self-comparison always evaluates to true}}
-
-  //
-  // compare differrent arrays
-  //
-  return array1 == array2; // expected-warning{{array comparison always evaluates to false}}
-  return array1 != array2; // expected-warning{{array comparison always evaluates to true}}
-
-  //
-  // we don't know what these are going to be
-  //
-  return array1 < array2; // expected-warning{{array comparison always evaluates to a constant}}
-  return array1 <= array2; // expected-warning{{array comparison always evaluates to a constant}}
-  return array1 > array2; // expected-warning{{array comparison always evaluates to a constant}}
-  return array1 >= array2; // expected-warning{{array comparison always evaluates to a constant}}
-
-}
-
-// Don't issue a warning when either the left or right side of the comparison
-// results from a macro expansion.  <rdar://problem/8435950>
-#define R8435950_A i 
-#define R8435950_B i 
-
-int R8435950(int i) {
-  if (R8435950_A == R8435950_B) // no-warning
-   return 0;
-  return 1;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/sentinel-attribute.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/sentinel-attribute.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/sentinel-attribute.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-int x __attribute__((sentinel)); //expected-warning{{'sentinel' attribute only applies to functions, methods and blocks}}
-
-void f1(int a, ...) __attribute__ ((sentinel));
-void f2(int a, ...) __attribute__ ((sentinel(1)));
-
-void f3(int a, ...) __attribute__ ((sentinel("hello"))); //expected-error{{'sentinel' attribute requires parameter 1 to be an integer constant}}
-void f4(int a, ...) __attribute__ ((sentinel(1, 2, 3))); //expected-error{{attribute takes no more than 2 arguments}}
-void f4(int a, ...) __attribute__ ((sentinel(-1))); //expected-error{{parameter 1 less than zero}}
-void f4(int a, ...) __attribute__ ((sentinel(0, 2))); // expected-error{{parameter 2 not 0 or 1}}
-
-void f5(int a) __attribute__ ((sentinel)); //expected-warning{{'sentinel' attribute only supported for variadic functions}}
-
-
-void f6() __attribute__((__sentinel__));  // expected-warning {{'sentinel' attribute requires named arguments}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/shift.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/shift.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/shift.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang -Wall -Wshift-sign-overflow -ffreestanding -fsyntax-only -Xclang -verify %s
-
-#include <limits.h>
-
-#define WORD_BIT (sizeof(int) * CHAR_BIT)
-
-enum {
-  X = 1 << 0,
-  Y = 1 << 1,
-  Z = 1 << 2
-};
-
-void test() {
-  char c;
-
-  c = 0 << 0;
-  c = 0 << 1;
-  c = 1 << 0;
-  c = 1 << -0;
-  c = 1 >> -0;
-  c = 1 << -1; // expected-warning {{shift count is negative}}
-  c = 1 >> -1; // expected-warning {{shift count is negative}}
-  c = 1 << c;
-  c <<= 0;
-  c >>= 0;
-  c <<= 1;
-  c >>= 1;
-  c <<= -1; // expected-warning {{shift count is negative}}
-  c >>= -1; // expected-warning {{shift count is negative}}
-  c <<= 999999; // expected-warning {{shift count >= width of type}}
-  c >>= 999999; // expected-warning {{shift count >= width of type}}
-  c <<= CHAR_BIT; // expected-warning {{shift count >= width of type}}
-  c >>= CHAR_BIT; // expected-warning {{shift count >= width of type}}
-  c <<= CHAR_BIT+1; // expected-warning {{shift count >= width of type}}
-  c >>= CHAR_BIT+1; // expected-warning {{shift count >= width of type}}
-  (void)((long)c << CHAR_BIT);
-
-  int i;
-  i = 1 << (WORD_BIT - 2);
-  i = 2 << (WORD_BIT - 1); // expected-warning {{bits to represent, but 'int' only has}}
-  i = 1 << (WORD_BIT - 1); // expected-warning {{sets the sign bit of the shift expression}}
-  i = -1 << (WORD_BIT - 1);
-  i = 0 << (WORD_BIT - 1);
-  i = (char)1 << (WORD_BIT - 2);
-
-  unsigned u;
-  u = 1U << (WORD_BIT - 1);
-  u = 5U << (WORD_BIT - 1);
-
-  long long int lli;
-  lli = INT_MIN << 2; // expected-warning {{bits to represent, but 'int' only has}}
-  lli = 1LL << (sizeof(long long) * CHAR_BIT - 2);
-}
-
-#define a 0
-#define ashift 8
-enum { b = (a << ashift) };
-
-// Don't warn for negative shifts in code that is unreachable.
-void test_pr5544() {
-  (void) (((1) > 63 && (1) < 128 ? (((unsigned long long) 1)<<((1)-64)) : (unsigned long long) 0)); // no-warning
-}
-
-void test_shift_too_much(char x) {
-  if (0)
-    (void) (x >> 80); // no-warning
-  (void) (x >> 80); // expected-warning {{shift count >= width of type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/short-enums.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/short-enums.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/short-enums.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: not %clang_cc1 -fsyntax-only %s -verify
-// RUN: %clang_cc1 -fshort-enums -fsyntax-only %s -verify
-// expected-no-diagnostics
-
-enum x { A };
-int t0[sizeof(enum x) == 1 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/Sema/sign-conversion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/sign-conversion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/sign-conversion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wsign-conversion %s
-
-// PR9345: make a subgroup of -Wconversion for signedness changes
-
-void test(int x) {
-  unsigned t0 = x; // expected-warning {{implicit conversion changes signedness}}
-  unsigned t1 = (t0 == 5 ? x : 0); // expected-warning {{operand of ? changes signedness}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/statements.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/statements.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/statements.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-typedef unsigned __uint32_t;
-
-#define __byte_swap_int_var(x) \
-__extension__ ({ register __uint32_t __X = (x); \
-   __asm ("bswap %0" : "+r" (__X)); \
-   __X; })
-
-int test(int _x) {
- return (__byte_swap_int_var(_x));
-}
-
-// PR2374
-int test2() { return ({L:5;}); }
-int test3() { return ({ {5;} }); }         // expected-error {{returning 'void' from a function with incompatible result type 'int'}}\
-                                           // expected-warning {{expression result unused}}
-int test4() { return ({ ({5;}); }); }
-int test5() { return ({L1: L2: L3: 5;}); }
-int test6() { return ({5;}); }
-void test7() { ({5;}); }                   // expected-warning {{expression result unused}}
-
-// PR3062
-int test8[({10;})]; // expected-error {{statement expression not allowed at file scope}}
-
-// PR3912
-void test9(const void *P) {
-  __builtin_prefetch(P);
-}
-
-
-void *test10() { 
-bar:
-  return &&bar;  // expected-warning {{returning address of label, which is local}}
-}
-
-// PR6034
-void test11(int bit) {
-  switch (bit) // expected-warning {{switch statement has empty body}} expected-note {{put the semicolon on a separate line to silence this warning}}
-  switch (env->fpscr)  // expected-error {{use of undeclared identifier 'env'}}
-  {
-  }
-}
-
-// rdar://3271964
-enum Numbers { kOne,  kTwo,  kThree,  kFour};
-int test12(enum Numbers num) {
-  switch (num == kOne) {// expected-warning {{switch condition has boolean value}}
-  default: 
-  case kThree:
-    break;
-  }
-}
-
-
-enum x { a, b, c, d, e, f, g };
-
-void foo(enum x X) {
-  switch (X) { // expected-warning {{enumeration value 'g' not handled in switch}}
-  case a:
-  case b:
-  case c:
-  case d:
-  case e:
-  case f:
-    break;
-  }
-
-  switch (X) { // expected-warning {{enumeration values 'f' and 'g' not handled in switch}}
-  case a:
-  case b:
-  case c:
-  case d:
-  case e:
-    break;
-  }
-
-  switch (X) {  // expected-warning {{enumeration values 'e', 'f', and 'g' not handled in switch}}
-    case a:
-    case b:
-    case c:
-    case d:
-      break;
-  }
-
-  switch (X) { // expected-warning {{5 enumeration values not handled in switch: 'c', 'd', 'e'...}}
-  case a:
-  case b:
-    break;
-  }
-}
-
-// PR 8880
-// FIXME: Clang should reject this, since GCC does.  Previously this
-// was causing a crash in the CFG builder.
-int test_pr8880() {
-  int first = 1;
-  for ( ; ({ if (first) { first = 0; continue; } 0; }); )
-    return 0;
-  return 1;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/static-array.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/static-array.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/static-array.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -verify %s
-
-void cat0(int a[static 0]) {} // expected-warning {{'static' has no effect on zero-length arrays}}
-
-void cat(int a[static 3]) {} // expected-note 2 {{callee declares array parameter as static here}}
-
-void vat(int i, int a[static i]) {} // expected-note {{callee declares array parameter as static here}}
-
-void f(int *p) {
-  int a[2], b[3], c[4];
-
-  cat0(0);
-
-  cat(0); // expected-warning {{null passed to a callee which requires a non-null argument}}
-  cat(a); // expected-warning {{array argument is too small; contains 2 elements, callee requires at least 3}}
-  cat(b);
-  cat(c);
-  cat(p);
-
-  vat(1, 0); // expected-warning {{null passed to a callee which requires a non-null argument}}
-  vat(3, b);
-}
-
-
-typedef int td[static 3]; // expected-error {{'static' used in array declarator outside of function prototype}}
-typedef void(*fp)(int[static 42]); // no-warning
-
-void g(void) {
-  int a[static 42]; // expected-error {{'static' used in array declarator outside of function prototype}}
-
-  int b[const 10]; // expected-error {{type qualifier used in array declarator outside of function prototype}}
-  int c[volatile 10]; // expected-error {{type qualifier used in array declarator outside of function prototype}}
-  int d[restrict 10]; // expected-error {{type qualifier used in array declarator outside of function prototype}}
-
-  int e[static restrict 1]; // expected-error {{'static' used in array declarator outside of function prototype}}
-}
-
-void h(int [static const 10][42]); // no-warning
-
-void i(int [10]
-       [static 42]); // expected-error {{'static' used in non-outermost array type derivation}}
-
-void j(int [10]
-       [const 42]); // expected-error {{type qualifier used in non-outermost array type derivation}}
-
-void k(int (*x)[static 10]); // expected-error {{'static' used in non-outermost array type derivation}}
-void l(int (x)[static 10]); // no-warning
-void m(int *x[static 10]); // no-warning
-void n(int *(x)[static 10]); // no-warning
-
-void o(int (x[static 10])(void)); // expected-error{{'x' declared as array of functions of type 'int (void)'}}
-void p(int (^x)[static 10]); // expected-error{{block pointer to non-function type is invalid}}
-void q(int (^x[static 10])()); // no-warning
-
-void r(x)
-  int x[restrict]; // no-warning
-{}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/static-assert.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/static-assert.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/static-assert.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -std=c11 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -xc++ -std=c++11 -fsyntax-only -verify %s
-
-_Static_assert("foo", "string is nonzero");
-#ifndef __cplusplus
-// expected-error at -2 {{static_assert expression is not an integral constant expression}}
-#endif
-
-_Static_assert(1, "1 is nonzero");
-_Static_assert(0, "0 is nonzero"); // expected-error {{static_assert failed "0 is nonzero"}}
-
-void foo(void) {
-  _Static_assert(1, "1 is nonzero");
-  _Static_assert(0, "0 is nonzero"); // expected-error {{static_assert failed "0 is nonzero"}}
-}
-
-_Static_assert(1, invalid); // expected-error {{expected string literal for diagnostic message in static_assert}}
-
-struct A {
-  int a;
-  _Static_assert(1, "1 is nonzero");
-  _Static_assert(0, "0 is nonzero"); // expected-error {{static_assert failed "0 is nonzero"}}
-};
-
-#ifdef __cplusplus
-#define ASSERT_IS_TYPE(T) __is_same(T, T)
-#else
-#define ASSERT_IS_TYPE(T) __builtin_types_compatible_p(T, T)
-#endif
-
-#define UNION(T1, T2) union { \
-    __typeof__(T1) one; \
-    __typeof__(T2) two; \
-    _Static_assert(ASSERT_IS_TYPE(T1), "T1 is not a type"); \
-    _Static_assert(ASSERT_IS_TYPE(T2), "T2 is not a type"); \
-    _Static_assert(sizeof(T1) == sizeof(T2), "type size mismatch"); \
-  }
-
-typedef UNION(unsigned, struct A) U1;
-UNION(char[2], short) u2 = { .one = { 'a', 'b' } };
-typedef UNION(char, short) U3; // expected-error {{static_assert failed "type size mismatch"}}
-typedef UNION(float, 0.5f) U4; // expected-error {{expected a type}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/static-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/static-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/static-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef __typeof((int*) 0 - (int*) 0) intptr_t;
-
-static int f = 10;
-static int b = f; // expected-error {{initializer element is not a compile-time constant}}
-
-float r  = (float) (intptr_t) &r; // expected-error {{initializer element is not a compile-time constant}}
-intptr_t s = (intptr_t) &s;
-_Bool t = &t;
-
-
-union bar {
-  int i;
-};
-
-struct foo {
-  short ptr;
-};
-
-union bar u[1];
-struct foo x = {(intptr_t) u}; // expected-error {{initializer element is not a compile-time constant}}
-struct foo y = {(char) u}; // expected-error {{initializer element is not a compile-time constant}}
-intptr_t z = (intptr_t) u; // no-error

Modified: trunk/contrib/llvm/tools/clang/test/Sema/stdcall-fastcall-x64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/stdcall-fastcall-x64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/stdcall-fastcall-x64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-pc-linux-gnu %s
-
-// CC qualifier can be applied only to functions
-int __attribute__((stdcall)) var1; // expected-warning{{'stdcall' only applies to function types; type here is 'int'}}
-int __attribute__((fastcall)) var2; // expected-warning{{'fastcall' only applies to function types; type here is 'int'}}
-
-// Different CC qualifiers are not compatible
-void __attribute__((stdcall, fastcall)) foo3(void); // expected-warning{{calling convention 'stdcall' ignored for this target}} expected-warning {{calling convention 'fastcall' ignored for this target}}
-void __attribute__((stdcall)) foo4(); // expected-warning{{calling convention 'stdcall' ignored for this target}}
-void __attribute__((fastcall)) foo4(void); // expected-warning {{calling convention 'fastcall' ignored for this target}}
-
-// rdar://8876096
-void rdar8876096foo1(int i, int j) __attribute__((fastcall, cdecl)); // expected-warning{{calling convention 'fastcall' ignored for this target}}
-void rdar8876096foo2(int i, int j) __attribute__((fastcall, stdcall)); // expected-warning{{calling convention 'stdcall' ignored for this target}} expected-warning {{calling convention 'fastcall' ignored for this target}}
-void rdar8876096foo3(int i, int j) __attribute__((fastcall, regparm(2))); // expected-warning {{calling convention 'fastcall' ignored for this target}}
-void rdar8876096foo4(int i, int j) __attribute__((stdcall, cdecl)); // expected-warning{{calling convention 'stdcall' ignored for this target}}
-void rdar8876096foo5(int i, int j) __attribute__((stdcall, fastcall)); // expected-warning{{calling convention 'stdcall' ignored for this target}} expected-warning {{calling convention 'fastcall' ignored for this target}}
-void rdar8876096foo6(int i, int j) __attribute__((cdecl, fastcall)); // expected-warning {{calling convention 'fastcall' ignored for this target}}
-void rdar8876096foo7(int i, int j) __attribute__((cdecl, stdcall)); // expected-warning{{calling convention 'stdcall' ignored for this target}}
-void rdar8876096foo8(int i, int j) __attribute__((regparm(2), fastcall)); // expected-warning {{calling convention 'fastcall' ignored for this target}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/stdcall-fastcall.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/stdcall-fastcall.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/stdcall-fastcall.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-apple-darwin10 %s
-
-// CC qualifier can be applied only to functions
-int __attribute__((stdcall)) var1; // expected-warning{{'stdcall' only applies to function types; type here is 'int'}}
-int __attribute__((fastcall)) var2; // expected-warning{{'fastcall' only applies to function types; type here is 'int'}}
-
-// Different CC qualifiers are not compatible
-void __attribute__((stdcall, fastcall)) foo3(void); // expected-error{{fastcall and stdcall attributes are not compatible}}
-void __attribute__((stdcall)) foo4(); // expected-note{{previous declaration is here}}
-void __attribute__((fastcall)) foo4(void); // expected-error{{function declared 'fastcall' here was previously declared 'stdcall'}}
-
-// rdar://8876096
-void rdar8876096foo1(int i, int j) __attribute__((fastcall, cdecl)); // expected-error {{not compatible}}
-void rdar8876096foo2(int i, int j) __attribute__((fastcall, stdcall)); // expected-error {{not compatible}}
-void rdar8876096foo3(int i, int j) __attribute__((fastcall, regparm(2))); // expected-error {{not compatible}}
-void rdar8876096foo4(int i, int j) __attribute__((stdcall, cdecl)); // expected-error {{not compatible}}
-void rdar8876096foo5(int i, int j) __attribute__((stdcall, fastcall)); // expected-error {{not compatible}}
-void rdar8876096foo6(int i, int j) __attribute__((cdecl, fastcall)); // expected-error {{not compatible}}
-void rdar8876096foo7(int i, int j) __attribute__((cdecl, stdcall)); // expected-error {{not compatible}}
-void rdar8876096foo8(int i, int j) __attribute__((regparm(2), fastcall)); // expected-error {{not compatible}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/struct-cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/struct-cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/struct-cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-// expected-no-diagnostics
-
-struct S {
- int one;
- int two;
-};
-
-struct S const foo(void);
-
-
-struct S tmp;
-
-void priv_sock_init() {
-  tmp = (struct S)foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/struct-compat.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/struct-compat.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/struct-compat.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-/* RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
- */
-
-extern struct {int a;} x; // expected-note {{previous definition is here}}
-extern struct {int a;} x; // expected-error {{redefinition of 'x'}}
-
-struct x;
-int a(struct x* b) {
-// Per C99 6.7.2.3, since the outer and inner "struct x"es have different
-// scopes, they don't refer to the same type, and are therefore incompatible
-struct x {int a;} *c = b; // expected-warning {{incompatible pointer types}}
-}
-
-struct x {int a;} r;
-int b() {
-struct x {char x;} s = r; // expected-error {{initializing 'struct x' with an expression of incompatible type 'struct x'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/struct-decl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/struct-decl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/struct-decl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR3459
-struct bar {
-  char n[1];
-};
-
-struct foo {
-  char name[(int)&((struct bar *)0)->n];
-  char name2[(int)&((struct bar *)0)->n - 1]; //expected-error{{'name2' declared as an array with a negative size}}
-};
-
-// PR3430
-struct s {
-  struct st {
-    int v;
-  } *ts;
-};
-
-struct st;
-
-int foo() {
-  struct st *f;
-  return f->v + f[0].v;
-}
-
-// PR3642, PR3671
-struct pppoe_tag {
- short tag_type;
- char tag_data[];
-};
-struct datatag {
-  struct pppoe_tag hdr; //expected-warning{{field 'hdr' with variable sized type 'struct pppoe_tag' not at the end of a struct or class is a GNU extension}}
-  char data;
-};
-
-
-// PR4092
-struct s0 {
-  char a;  // expected-note {{previous declaration is here}}
-  char a;  // expected-error {{duplicate member 'a'}}
-};
-
-struct s0 f0(void) {}
-
-// <rdar://problem/8177927> - This previously triggered an assertion failure.
-struct x0 {
-  unsigned int x1;
-};
-
-// rdar://problem/9150338
-static struct test1 { // expected-warning {{'static' ignored on this declaration}}
-  int x;
-};
-const struct test2 { // expected-warning {{'const' ignored on this declaration}}
-  int x;
-};
-inline struct test3 { // expected-error {{'inline' can only appear on functions}}
-  int x;
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/struct-packed-align.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/struct-packed-align.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/struct-packed-align.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-// Packed structs.
-struct s {
-    char a;
-    int b  __attribute__((packed));
-    char c;
-    int d;
-};
-
-extern int a1[sizeof(struct s) == 12 ? 1 : -1];
-extern int a2[__alignof(struct s) == 4 ? 1 : -1];
-
-struct __attribute__((packed)) packed_s {
-    char a;
-    int b  __attribute__((packed));
-    char c;
-    int d;
-};
-
-extern int b1[sizeof(struct packed_s) == 10 ? 1 : -1];
-extern int b2[__alignof(struct packed_s) == 1 ? 1 : -1];
-
-struct fas {
-    char a;
-    int b[];
-};
-
-extern int c1[sizeof(struct fas) == 4 ? 1 : -1];
-extern int c2[__alignof(struct fas) == 4 ? 1 : -1];
-
-struct __attribute__((packed)) packed_fas {
-    char a;
-    int b[];
-};
-
-extern int d1[sizeof(struct packed_fas) == 1 ? 1 : -1];
-extern int d2[__alignof(struct packed_fas) == 1 ? 1 : -1];
-
-struct packed_after_fas {
-    char a;
-    int b[];
-} __attribute__((packed));
-
-extern int d1_2[sizeof(struct packed_after_fas) == 1 ? 1 : -1];
-extern int d2_2[__alignof(struct packed_after_fas) == 1 ? 1 : -1];
-
-// Alignment
-
-struct __attribute__((aligned(8))) as1 {
-    char c;
-};
-
-extern int e1[sizeof(struct as1) == 8 ? 1 : -1];
-extern int e2[__alignof(struct as1) == 8 ? 1 : -1];
-
-// FIXME: Will need to force arch once max usable alignment isn't hard
-// coded.
-struct __attribute__((aligned)) as1_2 {
-    char c;
-};
-extern int e1_2[sizeof(struct as1_2) == 16 ? 1 : -1];
-extern int e2_2[__alignof(struct as1_2) == 16 ? 1 : -1];
-
-struct as2 {
-    char c;
-    int __attribute__((aligned(8))) a;
-};
-
-extern int f1[sizeof(struct as2) == 16 ? 1 : -1];
-extern int f2[__alignof(struct as2) == 8 ? 1 : -1];
-
-struct __attribute__((packed)) as3 {
-    char c;
-    int a;
-    int __attribute__((aligned(8))) b;
-};
-
-extern int g1[sizeof(struct as3) == 16 ? 1 : -1];
-extern int g2[__alignof(struct as3) == 8 ? 1 : -1];
-
-
-// rdar://5921025
-struct packedtest {
-  int ted_likes_cheese;
-  void *args[] __attribute__((packed));
-};
-
-// Packed union
-union __attribute__((packed)) au4 {char c; int x;};
-extern int h1[sizeof(union au4) == 4 ? 1 : -1];
-extern int h2[__alignof(union au4) == 1 ? 1 : -1];
-
-// Aligned union
-union au5 {__attribute__((aligned(4))) char c;};
-extern int h1[sizeof(union au5) == 4 ? 1 : -1];
-extern int h2[__alignof(union au5) == 4 ? 1 : -1];
-
-// Alignment+packed
-struct as6 {char c; __attribute__((packed, aligned(2))) int x;};
-extern int i1[sizeof(struct as6) == 6 ? 1 : -1];
-extern int i2[__alignof(struct as6) == 2 ? 1 : -1];
-
-union au6 {char c; __attribute__((packed, aligned(2))) int x;};
-extern int k1[sizeof(union au6) == 4 ? 1 : -1];
-extern int k2[__alignof(union au6) == 2 ? 1 : -1];
-
-// Check postfix attributes
-union au7 {char c; int x;} __attribute__((packed));
-extern int l1[sizeof(union au7) == 4 ? 1 : -1];
-extern int l2[__alignof(union au7) == 1 ? 1 : -1];
-
-struct packed_fas2 {
-    char a;
-    int b[];
-} __attribute__((packed));
-
-extern int m1[sizeof(struct packed_fas2) == 1 ? 1 : -1];
-extern int m2[__alignof(struct packed_fas2) == 1 ? 1 : -1];
-
-// Attribute aligned can round down typedefs.  PR9253
-typedef long long  __attribute__((aligned(1))) nt;
-
-struct nS {
-  char buf_nr;
-  nt start_lba;
-};
-
-extern int n1[sizeof(struct nS) == 9 ? 1 : -1];
-extern int n2[__alignof(struct nS) == 1 ? 1 : -1];
-
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/surpress-deprecated.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/surpress-deprecated.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/surpress-deprecated.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-deprecated-declarations -verify %s
-// expected-no-diagnostics
-extern void OldFunction() __attribute__((deprecated));
-
-int main (int argc, const char * argv[]) {
-  OldFunction();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/switch-1.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/switch-1.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/switch-1.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin10 %s
-// RUN: %clang_cc1 -x c++ -fsyntax-only -verify -triple x86_64-apple-darwin10 %s
-// rdar://11577384
-// rdar://13423975
-
-int f(int i) {
-  switch (i) {
-    case 2147483647 + 2: // expected-warning {{overflow in expression; result is -2147483647 with type 'int'}}
-      return 1;
-    case 9223372036854775807L * 4: // expected-warning {{overflow in expression; result is -4 with type 'long'}}
-      return 2;
-    case (123456 *789012) + 1:  // expected-warning {{overflow in expression; result is -1375982336 with type 'int'}}
-      return 3;
-    case (2147483647*4)/4: 	// expected-warning {{overflow in expression; result is -4 with type 'int'}}
-    case (2147483647*4)%4: 	// expected-warning {{overflow in expression; result is -4 with type 'int'}}
-      return 4;
-    case 2147483647:
-      return 0;
-  }
-  return (i, 65537) * 65537; // expected-warning {{overflow in expression; result is 131073 with type 'int'}} \
-			     // expected-warning {{expression result unused}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/switch.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/switch.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/switch.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,351 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wswitch-enum -Wcovered-switch-default %s
-void f (int z) { 
-  while (z) { 
-    default: z--;            // expected-error {{statement not in switch}}
-  } 
-}
-
-void foo(int X) {
-  switch (X) {
-  case 42: ;                 // expected-note {{previous case}}
-  case 5000000000LL:         // expected-warning {{overflow}}
-  case 42:                   // expected-error {{duplicate case value '42'}}
-   ;
-
-  case 100 ... 99: ;         // expected-warning {{empty case range}}
-
-  case 43: ;                 // expected-note {{previous case}}
-  case 43 ... 45:  ;         // expected-error {{duplicate case value}}
-
-  case 100 ... 20000:;       // expected-note {{previous case}}
-  case 15000 ... 40000000:;  // expected-error {{duplicate case value}}
-  }
-}
-
-void test3(void) { 
-  // empty switch;
-  switch (0); // expected-warning {{no case matching constant switch condition '0'}} \
-              // expected-warning {{switch statement has empty body}} \
-              // expected-note{{put the semicolon on a separate line to silence this warning}}
-}
-
-extern int g();
-
-void test4()
-{
-  int cond;
-  switch (cond) {
-  case 0 && g():
-  case 1 || g():
-    break;
-  }
-
-  switch(cond)  {
-  case g(): // expected-error {{expression is not an integer constant expression}}
-  case 0 ... g(): // expected-error {{expression is not an integer constant expression}}
-    break;
-  }
-  
-  switch (cond) {
-  case 0 && g() ... 1 || g():
-    break;
-  }
-  
-  switch (cond) {
-  case g() // expected-error {{expression is not an integer constant expression}}
-      && 0:
-    break;
-  }
-  
-  switch (cond) {
-  case 0 ...
-      g() // expected-error {{expression is not an integer constant expression}}
-      || 1:
-    break;
-  }
-}
-
-void test5(int z) { 
-  switch(z) {
-    default:  // expected-note {{previous case defined here}}
-    default:  // expected-error {{multiple default labels in one switch}}
-      break;
-  }
-} 
-
-void test6() {
-  char ch = 'a';
-  switch(ch) {
-    case 1234:  // expected-warning {{overflow converting case value}}
-      break;
-  }
-}
-
-// PR5606
-int f0(int var) {
-  switch (va) { // expected-error{{use of undeclared identifier 'va'}}
-  case 1:
-    break;
-  case 2:
-    return 1;
-  }
-  return 2;
-}
-
-void test7() {
-  enum {
-    A = 1,
-    B
-  } a;
-  switch(a) { //expected-warning{{enumeration value 'B' not handled in switch}}
-    case A:
-      break;
-  }
-  switch(a) {
-    case B:
-    case A:
-      break;
-  }
-  switch(a) {
-    case A:
-    case B:
-    case 3: // expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-      break;
-  }
-  switch(a) {
-    case A:
-    case B:
-    case 3 ... //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-        4: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-      break;
-  }
-  switch(a) {
-    case 1 ... 2:
-      break;
-  }
-  switch(a) {
-    case 0 ... 2: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-      break;
-  }
-  switch(a) {
-    case 1 ... 3: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-      break;
-  }
-  switch(a) {
-    case 0 ...  //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-      3:  //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-      break;
-  }
-
-}
-
-void test8() {
-  enum {
-    A,
-    B,
-    C = 1
-  } a;
-  switch(a) {
-    case A:
-    case B:
-     break;
-  }
-  switch(a) {
-    case A:
-    case C:
-      break;
-  }
-  switch(a) { //expected-warning{{enumeration value 'B' not handled in switch}}
-    case A:
-      break;
-  }
-}
-
-void test9() {
-  enum {
-    A = 3,
-    C = 1
-  } a;
-  switch(a) {
-    case 0: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-    case 1:
-    case 2: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-    case 3:
-    case 4: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-      break;
-  }
-}
-
-void test10() {
-  enum {
-    A = 10,
-    C = 2,
-    B = 4,
-    D = 12
-  } a;
-  switch(a) {
-    case 0 ...  //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-	    1:  //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-    case 2 ... 4:
-    case 5 ...  //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}	
-	      9:  //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-    case 10 ... 12:
-    case 13 ...  //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-              16: //expected-warning{{case value not in enumerated type 'enum <anonymous enum}}
-      break;
-  }
-}
-
-void test11() {
-  enum {
-    A = -1,
-    B,
-    C
-  } a;
-  switch(a) { //expected-warning{{enumeration value 'A' not handled in switch}}
-    case B:
-    case C:
-      break;
-  }
-
-  switch(a) { //expected-warning{{enumeration value 'A' not explicitly handled in switch}}
-    case B:
-    case C:
-      break;
-      
-    default:
-      break;
-  }
-}
-
-void test12() {
-  enum {
-    A = -1,
-    B = 4294967286
-  } a;
-  switch(a) {
-    case A:
-    case B:
-      break;
-  }
-}
-
-// <rdar://problem/7643909>
-typedef enum {
-    val1,
-    val2,
-    val3
-} my_type_t;
-
-int test13(my_type_t t) {
-  switch(t) { // expected-warning{{enumeration value 'val3' not handled in switch}}
-  case val1:
-    return 1;
-  case val2:
-    return 2;
-  }
-  return -1;
-}
-
-// <rdar://problem/7658121>
-enum {
-  EC0 = 0xFFFF0000,
-  EC1 = 0xFFFF0001,
-};
-
-int test14(int a) {
-  switch(a) {
-  case EC0: return 0;
-  case EC1: return 1;
-  }
-  return 0;
-}
-
-void f1(unsigned x) {
-  switch (x) {
-  case -1: break;
-  default: break;
-  }
-}
-
-void test15() {
-  int i = 0;
-  switch (1) { // expected-warning {{no case matching constant switch condition '1'}}
-  case 0: i = 0; break;
-  case 2: i++; break;
-  }
-}
-
-void test16() {
-  const char c = '5';
-  switch (c) { // expected-warning {{no case matching constant switch condition '53'}}
-  case '6': return;
-  }
-}
-
-// PR7359
-void test17(int x) {
-  switch (x >= 17) { // expected-warning {{switch condition has boolean value}}
-  case 0: return;
-  }
-
-  switch ((int) (x <= 17)) {
-  case 0: return;
-  }
-}
-
-int test18() {
-  enum { A, B } a;
-  switch (a) {
-  case A: return 0;
-  case B: return 1;
-  case 7: return 1; // expected-warning {{case value not in enumerated type}}
-  default: return 2; // expected-warning {{default label in switch which covers all enumeration values}}
-  }
-}
-
-// rdar://110822110
-typedef enum {
-        kOne = 1,
-} Ints;
-        
-void rdar110822110(Ints i)
-{
-        switch (i) {
-                case kOne:
-                        break;
-                case 2: 	// expected-warning {{case value not in enumerated type 'Ints'}}          
-                        break;
-                default:	// expected-warning {{default label in switch which covers all enumeration values}}
-                        break;
-                }
-}
-
-// PR9243
-#define TEST19MACRO 5
-void test19(int i) {
-  enum {
-    kTest19Enum1 = 7,
-    kTest19Enum2 = kTest19Enum1
-  };
-  const int a = 3;
-  switch (i) {
-    case 5: // expected-note {{previous case}}
-    case TEST19MACRO: // expected-error {{duplicate case value '5'}}
-
-    case 7: // expected-note {{previous case}}
-    case kTest19Enum1: // expected-error {{duplicate case value: '7' and 'kTest19Enum1' both equal '7'}} \
-                       // expected-note {{previous case}}
-    case kTest19Enum1: // expected-error {{duplicate case value 'kTest19Enum1'}} \
-                       // expected-note {{previous case}}
-    case kTest19Enum2: // expected-error {{duplicate case value: 'kTest19Enum1' and 'kTest19Enum2' both equal '7'}} \
-                       // expected-note {{previous case}}
-    case (int)kTest19Enum2: //expected-error {{duplicate case value 'kTest19Enum2'}}
-
-    case 3: // expected-note {{previous case}}
-    case a: // expected-error {{duplicate case value: '3' and 'a' both equal '3'}} \
-            // expected-note {{previous case}}
-    case a: // expected-error {{duplicate case value 'a'}}
-      break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/template-specialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/template-specialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/template-specialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-// Verify the absence of assertion failures when solving calls to unresolved
-// template member functions.
-
-struct A {
-  template <typename T>
-  static void bar(int) { } // expected-note {{candidate template ignored: couldn't infer template argument 'T'}}
-};
-
-struct B {
-  template <int i>
-  static void foo() {
-    int array[i];
-    A::template bar(array[0]); // expected-error {{no matching function for call to 'bar'}}
-  }
-};
-
-int main() {
-  B::foo<4>(); // expected-note {{in instantiation of function template specialization 'B::foo<4>'}}
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/tentative-decls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/tentative-decls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/tentative-decls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wprivate-extern -verify
-
-// PR3310
-struct a x1; // expected-note 2{{forward declaration of 'struct a'}}
-static struct a x2; // expected-warning{{tentative definition of variable with internal linkage has incomplete non-array type 'struct a'}}
-struct a x3[10]; // expected-error{{array has incomplete element type 'struct a'}}
-struct a {int x;};
-static struct a x2_okay;
-struct a x3_okay[10];
-struct b x4; // expected-error{{tentative definition has type 'struct b' that is never completed}} \
-            // expected-note{{forward declaration of 'struct b'}}
-
-const int a [1] = {1};
-extern const int a[];
-
-extern const int b[];
-const int b [1] = {1};
-
-extern const int c[] = {1}; // expected-warning{{'extern' variable has an initializer}}
-const int c[];
-
-int i1 = 1; // expected-note {{previous definition is here}}
-int i1 = 2; // expected-error {{redefinition of 'i1'}}
-int i1;
-int i1;
-extern int i5; // expected-note {{previous definition is here}}
-static int i5; // expected-error{{static declaration of 'i5' follows non-static declaration}}
-
-static int i2 = 5; // expected-note 1 {{previous definition is here}}
-int i2 = 3; // expected-error{{non-static declaration of 'i2' follows static declaration}}
-
-static int i3 = 5;
-extern int i3;
-
-// rdar://7703982
-__private_extern__ int pExtern; // expected-warning {{use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated}} \
-// expected-note {{use __attribute__((visibility("hidden"))) attribute instead}}
-int pExtern = 0;
-
-int i4;
-int i4;
-extern int i4;
-
-int (*pToArray)[];
-int (*pToArray)[8];
-
-int redef[10];
-int redef[];  // expected-note {{previous definition is here}}
-int redef[11]; // expected-error{{redefinition of 'redef'}}
-
-void func() {
-  extern int i6; // expected-note {{previous definition is here}}
-  static int i6; // expected-error{{static declaration of 'i6' follows non-static declaration}}
-}
-
-void func2(void)
-{
-  extern double *p;
-  extern double *p;
-}
-
-// <rdar://problem/6808352>
-static int a0[];
-static int b0;
-
-static int a0[] = { 4 };
-static int b0 = 5;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/text-diag.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/text-diag.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/text-diag.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-unsigned char *foo = "texto\
-que continua\
-e continua";

Modified: trunk/contrib/llvm/tools/clang/test/Sema/thread-specifier.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/thread-specifier.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/thread-specifier.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,110 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -Wno-private-extern -verify -pedantic %s -DGNU
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -Wno-private-extern -verify -pedantic -x c++ %s -DGNU
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -Wno-private-extern -verify -pedantic %s -DC11 -D__thread=_Thread_local
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -Wno-private-extern -verify -pedantic -x c++ %s -DC11 -D__thread=_Thread_local
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -Wno-private-extern -verify -pedantic -x c++ %s -DCXX11 -D__thread=thread_local -std=c++11
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -Wno-private-extern -verify -pedantic -x c++ %s -DC11 -D__thread=_Thread_local -std=c++11
-
-#ifdef __cplusplus
-// In C++, we define __private_extern__ to extern.
-#undef __private_extern__
-#endif
-
-__thread int t1;
-__thread extern int t2;
-__thread static int t3;
-#ifdef GNU
-// expected-warning at -3 {{'__thread' before 'extern'}}
-// expected-warning at -3 {{'__thread' before 'static'}}
-#endif
-
-__thread __private_extern__ int t4;
-struct t5 { __thread int x; };
-#ifdef __cplusplus
-// expected-error-re at -2 {{'(__thread|_Thread_local|thread_local)' is only allowed on variable declarations}}
-#else
-// FIXME: The 'is only allowed on variable declarations' diagnostic is better here.
-// expected-error at -5 {{type name does not allow storage class to be specified}}
-#endif
-
-__thread int t6();
-#if defined(GNU)
-// expected-error at -2 {{'__thread' is only allowed on variable declarations}}
-#elif defined(C11)
-// expected-error at -4 {{'_Thread_local' is only allowed on variable declarations}}
-#else
-// expected-error at -6 {{'thread_local' is only allowed on variable declarations}}
-#endif
-
-int f(__thread int t7) { // expected-error {{' is only allowed on variable declarations}}
-  __thread int t8;
-#if defined(GNU)
-  // expected-error at -2 {{'__thread' variables must have global storage}}
-#elif defined(C11)
-  // expected-error at -4 {{'_Thread_local' variables must have global storage}}
-#endif
-  extern __thread int t9;
-  static __thread int t10;
-  __thread __private_extern__ int t11;
-#if __cplusplus < 201103L
-  __thread auto int t12a; // expected-error-re {{cannot combine with previous '(__thread|_Thread_local)' declaration specifier}}
-  auto __thread int t12b; // expected-error {{cannot combine with previous 'auto' declaration specifier}}
-#elif !defined(CXX11)
-  __thread auto t12a = 0; // expected-error-re {{'_Thread_local' variables must have global storage}}
-  auto __thread t12b = 0; // expected-error-re {{'_Thread_local' variables must have global storage}}
-#endif
-  __thread register int t13a; // expected-error-re {{cannot combine with previous '(__thread|_Thread_local|thread_local)' declaration specifier}}
-  register __thread int t13b; // expected-error {{cannot combine with previous 'register' declaration specifier}}
-}
-
-__thread typedef int t14; // expected-error-re {{cannot combine with previous '(__thread|_Thread_local|thread_local)' declaration specifier}}
-__thread int t15; // expected-note {{previous declaration is here}}
-extern int t15; // expected-error {{non-thread-local declaration of 't15' follows thread-local declaration}}
-extern int t16; // expected-note {{previous declaration is here}}
-__thread int t16; // expected-error {{thread-local declaration of 't16' follows non-thread-local declaration}}
-
-#ifdef CXX11
-extern thread_local int t17; // expected-note {{previous declaration is here}}
-_Thread_local int t17; // expected-error {{thread-local declaration of 't17' with static initialization follows declaration with dynamic initialization}}
-extern _Thread_local int t18; // expected-note {{previous declaration is here}}
-thread_local int t18; // expected-error {{thread-local declaration of 't18' with dynamic initialization follows declaration with static initialization}}
-#endif
-
-// PR13720
-__thread int thread_int;
-int *thread_int_ptr = &thread_int;
-#ifndef __cplusplus
-// expected-error at -2 {{initializer element is not a compile-time constant}}
-#endif
-void g() {
-  int *p = &thread_int; // This is perfectly fine, though.
-}
-#if __cplusplus >= 201103L
-constexpr int *thread_int_ptr_2 = &thread_int; // expected-error {{must be initialized by a constant expression}}
-#endif
-
-int non_const();
-__thread int non_const_init = non_const();
-#if !defined(__cplusplus)
-// expected-error at -2 {{initializer element is not a compile-time constant}}
-#elif !defined(CXX11)
-// expected-error at -4 {{initializer for thread-local variable must be a constant expression}}
-#if __cplusplus >= 201103L
-// expected-note at -6 {{use 'thread_local' to allow this}}
-#endif
-#endif
-
-#ifdef __cplusplus
-struct S {
-  ~S();
-};
-__thread S s;
-#if !defined(CXX11)
-// expected-error at -2 {{type of thread-local variable has non-trivial destruction}}
-#if __cplusplus >= 201103L
-// expected-note at -4 {{use 'thread_local' to allow this}}
-#endif
-#endif
-#endif
-
-__thread int aggregate[10] = {0};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/tls.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/tls.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/tls.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// Test that TLS is correctly considered supported or unsupported for the
-// different targets.
-
-// Linux supports TLS.
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only %s
-// RUN: %clang_cc1 -triple i386-pc-linux-gnu -fsyntax-only %s
-
-// Darwin supports TLS since 10.7.
-// RUN: not %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only %s
-// RUN: %clang_cc1 -triple x86_64-apple-macos10.7.0 -fsyntax-only %s
-
-// FIXME: I thought it was supported actually?
-// RUN: not %clang_cc1 -triple x86_64-pc-win32 -fsyntax-only %s
-// RUN: not %clang_cc1 -triple i386-pc-win32 -fsyntax-only %s
-
-// OpenBSD does not suppport TLS.
-// RUN: not %clang_cc1 -triple x86_64-pc-openbsd -fsyntax-only %s
-// RUN: not %clang_cc1 -triple i386-pc-openbsd -fsyntax-only %s
-
-// Haiku does not suppport TLS.
-// RUN: not %clang_cc1 -triple i586-pc-haiku -fsyntax-only %s
-
-__thread int x;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/transparent-union-pointer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/transparent-union-pointer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/transparent-union-pointer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-typedef union   {
-  union wait *__uptr;
-  int *__iptr;
-} __WAIT_STATUS __attribute__ ((__transparent_union__));
-
-extern int wait (__WAIT_STATUS __stat_loc);
-
-void fastcgi_cleanup() {
-  int status = 0;
-  wait(&status);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/transparent-union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/transparent-union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/transparent-union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang -fsyntax-only -Xclang -verify %s
-typedef union {
-  int *ip;
-  float *fp;
-  long *__restrict rlp;
-  void *vpa[1];
-} TU __attribute__((transparent_union));
-
-void f(TU); // expected-note{{passing argument to parameter here}}
-
-void g(int *ip, float *fp, char *cp) {
-  f(ip);
-  f(fp);
-  f(cp); // expected-error{{incompatible type}}
-  f(0);
-
-  TU tu_ip = ip; // expected-error{{incompatible type}}
-  TU tu;
-  tu.ip = ip;
-}
-
-/* Test ability to redeclare a function taking a transparent_union arg
-   with various compatible and incompatible argument types. */
-
-void fip(TU);
-void fip(int *i) {}
-
-void ffp(TU);
-void ffp(float *f) {}
-
-void flp(TU);
-void flp(long *l) {}
-
-void fvp(TU); // expected-note{{previous declaration is here}}
-void fvp(void *p) {} // expected-error{{conflicting types}}
-
-void fsp(TU); // expected-note{{previous declaration is here}}
-void fsp(short *s) {} // expected-error{{conflicting types}}
-
-void fi(TU); // expected-note{{previous declaration is here}}
-void fi(int i) {} // expected-error{{conflicting types}}
-
-void fvpp(TU); // expected-note{{previous declaration is here}}
-void fvpp(void **v) {} // expected-error{{conflicting types}}
-
-/* FIXME: we'd like to just use an "int" here and align it differently
-   from the normal "int", but if we do so we lose the alignment
-   information from the typedef within the compiler. */
-typedef struct { int x, y; } __attribute__((aligned(8))) aligned_struct8;
-
-typedef struct { int x, y; } __attribute__((aligned(4))) aligned_struct4;
-typedef union {
-  aligned_struct4 s4; // expected-note{{alignment of first field}}
-  aligned_struct8 s8; // expected-warning{{alignment of field}}
-} TU1 __attribute__((transparent_union));
-
-typedef union {
-  char c; // expected-note{{size of first field is 8 bits}}
-  int i; // expected-warning{{size of field}}
-} TU2 __attribute__((transparent_union));
-
-typedef union {
-  float f; // expected-warning{{floating}}
-} TU3 __attribute__((transparent_union));
-
-typedef union { } TU4 __attribute__((transparent_union)); // expected-warning{{field}} 
-
-typedef int int4 __attribute__((ext_vector_type(4)));
-typedef union {
-  int4 vec; // expected-warning{{first field of a transparent union cannot have vector type 'int4'; transparent_union attribute ignored}}
-} TU5 __attribute__((transparent_union));
-
-  

Modified: trunk/contrib/llvm/tools/clang/test/Sema/type-spec-struct-union.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/type-spec-struct-union.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/type-spec-struct-union.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-/* This test checks the introduction of struct and union types based
-   on a type specifier of the form "struct-or-union identifier" when they
-   type has not yet been declared. See C99 6.7.2.3p8. */
-
-typedef struct S1 {
-  union {
-    struct S2 *x;
-    struct S3 *y;
-  } u1;
-} S1;
-
-int test_struct_scope(S1 *s1, struct S2 *s2, struct S3 *s3) {
-  if (s1->u1.x == s2) return 1;
-  if (s1->u1.y == s3) return 1;
-  return 0;
-}
-
-int test_struct_scope_2(S1 *s1) {
-  struct S2 { int x; } *s2 = 0;
-  if (s1->u1.x == s2) return 1; /* expected-warning {{comparison of distinct pointer types ('struct S2 *' and 'struct S2 *')}} */
-  return 0;
-}
-
-// FIXME: We do not properly implement C99 6.2.1p4, which says that
-// the type "struct S4" declared in the function parameter list has
-// block scope within the function definition. The problem, in this
-// case, is that the code is ill-formed but we warn about the two S4's
-// being incompatible (we think they are two different types).
-int test_struct_scope_3(struct S4 * s4) { // expected-warning{{declaration of 'struct S4' will not be visible outside of this function}}
-  struct S4 { int y; } *s4_2 = 0;
-  /*  if (s4 == s4_2) return 1; */
-  return 0;
-}
-
-void f(struct S5 { int y; } s5); // expected-warning{{declaration of 'struct S5' will not be visible outside of this function}}
-
-// PR clang/3312
-struct S6 {
-        enum { BAR } e;
-};
-
-void test_S6() {
-        struct S6 a;
-        a.e = BAR;
-}
-
-// <rdar://problem/6487669>
-typedef struct z_foo_s {
-  struct bar_baz *baz;
-} z_foo;
-typedef z_foo *z_foop;
-struct bar_baz {
-  enum {
-    SQUAT, FLAG, DICT4, DICT3, DICT2, DICT1, DICT0, HOP, CHECK4, CHECK3, CHECK2, CHECK1, DONE, BAD
-  } mode;
-  int             nowrap;
-};
-void
-wizbiz_quxPoof(z)
-  z_foop       z;
-{
-  z->baz->mode = z->baz->nowrap ? HOP : SQUAT;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/typecheck-binop.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/typecheck-binop.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/typecheck-binop.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-/* RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
- */
-struct incomplete; // expected-note{{forward declaration of 'struct incomplete'}}
-
-int sub1(int *a, double *b) { 
-  return a - b;    /* expected-error{{not pointers to compatible types}} */
-}
-
-void *sub2(struct incomplete *P) {
-  return P-4;      /* expected-error{{arithmetic on a pointer to an incomplete type 'struct incomplete'}} */
-}
-
-void *sub3(void *P) {
-  return P-4;      /* expected-warning{{arithmetic on a pointer to void is a GNU extension}} */
-}
-
-int sub4(void *P, void *Q) {
-  return P-Q;      /* expected-warning{{arithmetic on pointers to void is a GNU extension}} */
-}
-
-int sub5(void *P, int *Q) {
-  return P-Q;      /* expected-error{{not pointers to compatible types}} */
-}
-
-int logicaland1(int a) {
-  return a && (void)a; /* expected-error{{invalid operands}} */
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/typedef-prototype.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/typedef-prototype.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/typedef-prototype.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-typedef int unary_int_func(int arg);
-unary_int_func add_one;
-
-int add_one(int arg) {
-  return arg + 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/typedef-redef.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/typedef-redef.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/typedef-redef.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef const int x; // expected-note {{previous definition is here}}
-extern x a;
-typedef int x;  // expected-error {{typedef redefinition with different types}}
-extern x a;
-
-// <rdar://problem/6097585>
-int y; // expected-note 2 {{previous definition is here}}
-float y; // expected-error{{redefinition of 'y' with a different type}}
-double y; // expected-error{{redefinition of 'y' with a different type}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/typedef-retain.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/typedef-retain.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/typedef-retain.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -fno-lax-vector-conversions
-
-typedef float float4 __attribute__((vector_size(16)));
-typedef int int4 __attribute__((vector_size(16)));
-typedef int4* int4p;
-
-void test1(float4 a, int4 *result, int i) {
-    result[i] = a; // expected-error {{assigning to 'int4' from incompatible type 'float4'}}
-}
-
-void test2(float4 a, int4p result, int i) {
-    result[i] = a; // expected-error {{assigning to 'int4' from incompatible type 'float4'}}
-}
-
-// PR2039
-typedef int a[5];
-void test3() {
-  typedef const a b;
-  b r;
-  r[0]=10;  // expected-error {{read-only variable is not assignable}}
-}
-
-int test4(const a y) {
-  y[0] = 10; // expected-error {{read-only variable is not assignable}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/typedef-variable-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/typedef-variable-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/typedef-variable-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -pedantic -Wno-typedef-redefinition -std=c99
-
-// Make sure we accept a single typedef
-typedef int (*a)[!.0]; // expected-warning{{size of static array must be an integer constant expression}}
-
-// And make sure we accept identical redefinitions in system headers
-// (The test uses -Wno-typedef-redefinition to simulate this.)
-typedef int (*a)[!.0]; // expected-warning{{size of static array must be an integer constant expression}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/typeof-use-deprecated.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/typeof-use-deprecated.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/typeof-use-deprecated.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-struct s { int a; } __attribute__((deprecated)) x;  // expected-warning {{'s' is deprecated}} expected-note 2 {{'s' declared here}}
-
-typeof(x) y;  // expected-warning {{'s' is deprecated}}
-
-union un{ int a; } __attribute__((deprecated)) u;  // expected-warning {{'un' is deprecated}} expected-note 2 {{'un' declared here}}
-
-typeof(     u) z; // expected-warning {{'un' is deprecated}}
-
-enum E{ one} __attribute__((deprecated))  e; // expected-warning {{'E' is deprecated}} expected-note 2 {{'E' declared here}}
-
-typeof( e) w; // expected-warning {{'E' is deprecated}}
-
-struct foo { int x; } __attribute__((deprecated)); // expected-note {{'foo' declared here}}
-typedef struct foo bar __attribute__((deprecated)); // expected-note {{'bar' declared here}}
-bar x1;	// expected-warning {{'bar' is deprecated}}
-
-int main() { typeof(x1) y; }	// expected-warning {{'foo' is deprecated}}
-
-struct gorf { int x; };
-typedef struct gorf T __attribute__((deprecated));  // expected-note {{'T' declared here}}
-T t;	// expected-warning {{'T' is deprecated}}
-void wee() { typeof(t) y; }
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/types.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/types.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/types.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 %s -pedantic -verify -triple=x86_64-apple-darwin9
-
-// rdar://6097662
-typedef int (*T)[2];
-restrict T x;
-
-typedef int *S[2];
-restrict S y; // expected-error {{restrict requires a pointer or reference ('S' (aka 'int *[2]') is invalid)}}
-
-
-
-// int128_t is available.
-int a() {
-  __int128_t s;
-  __uint128_t t;
-}
-// but not a keyword
-int b() {
-  int __int128_t;
-  int __uint128_t;
-}
-// __int128 is a keyword
-int c() {
-  __int128 i;
-  unsigned __int128 j;
-  long unsigned __int128 k; // expected-error {{'long __int128' is invalid}}
-  int __int128; // expected-error {{cannot combine with previous}} expected-warning {{does not declare anything}}
-}
-// __int128_t is __int128; __uint128_t is unsigned __int128.
-typedef __int128 check_int_128; // expected-note {{here}}
-typedef __int128_t check_int_128; // expected-note {{here}} expected-warning {{redefinition}}
-typedef int check_int_128; // expected-error {{different types ('int' vs '__int128_t' (aka '__int128'))}}
-
-typedef unsigned __int128 check_uint_128; // expected-note {{here}}
-typedef __uint128_t check_uint_128; // expected-note {{here}} expected-warning {{redefinition}}
-typedef int check_uint_128; // expected-error {{different types ('int' vs '__uint128_t' (aka 'unsigned __int128'))}}
-
-// Array type merging should convert array size to whatever matches the target
-// pointer size.
-// rdar://6880874
-extern int i[1LL];
-int i[(short)1];
-
-enum e { e_1 };
-extern int j[sizeof(enum e)];  // expected-note {{previous definition}}
-int j[42];   // expected-error {{redefinition of 'j' with a different type: 'int [42]' vs 'int [4]'}}
-
-// rdar://6880104
-_Decimal32 x;  // expected-error {{GNU decimal type extension not supported}}
-
-
-// rdar://6880951
-int __attribute__ ((vector_size (8), vector_size (8))) v;  // expected-error {{invalid vector element type}}
-
-void test(int i) {
-  char c = (char __attribute__((align(8)))) i; // expected-warning {{'align' attribute ignored when parsing type}}
-}
-
-// http://llvm.org/PR11082
-//
-// FIXME: This may or may not be the correct approach (no warning or error),
-// but large amounts of Linux and FreeBSD code need this attribute to not be
-// a hard error in order to work correctly.
-void test2(int i) {
-  char c = (char __attribute__((may_alias))) i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ucn-cstring.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ucn-cstring.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ucn-cstring.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -pedantic
-
-int printf(const char *, ...);
-
-int main(void) {
-  int a[sizeof("hello \u2192 \u2603 \u2190 world") == 24 ? 1 : -1];
-  
-  printf("%s (%zd)\n", "hello \u2192 \u2603 \u2190 world", sizeof("hello \u2192 \u2603 \u2190 world"));
-  printf("%s (%zd)\n", "\U00010400\U0001D12B", sizeof("\U00010400\U0001D12B"));
-  // Some error conditions...
-  printf("%s\n", "\U"); // expected-error{{\U used with no following hex digits}}
-  printf("%s\n", "\U00"); // expected-error{{incomplete universal character name}}
-  printf("%s\n", "\U0001"); // expected-error{{incomplete universal character name}}
-  printf("%s\n", "\u0001"); // expected-error{{universal character name refers to a control character}}
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/ucn-identifiers.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/ucn-identifiers.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/ucn-identifiers.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -pedantic
-// RUN: %clang_cc1 %s -verify -fsyntax-only -x c++ -pedantic
-
-// This file contains UTF-8; please do not fix!
-
-
-extern void \u00FCber(int);
-extern void \U000000FCber(int); // redeclaration, no warning
-#ifdef __cplusplus
-// expected-note at -2 + {{candidate function not viable}}
-#else
-// expected-note at -4 + {{declared here}}
-#endif
-
-void goodCalls() {
-  \u00FCber(0);
-  \u00fcber(1);
-  über(2);
-  \U000000FCber(3);
-}
-
-void badCalls() {
-  \u00FCber(0.5); // expected-warning{{implicit conversion from 'double' to 'int'}}
-  \u00fcber = 0; // expected-error{{non-object type 'void (int)' is not assignable}}
-
-  über(1, 2);
-  \U000000FCber(); 
-#ifdef __cplusplus
-  // expected-error at -3 {{no matching function}}
-  // expected-error at -3 {{no matching function}}
-#else
-  // expected-error at -6 {{too many arguments to function call, expected 1, have 2}}
-  // expected-error at -6 {{too few arguments to function call, expected 1, have 0}}
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/uninit-det-order.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/uninit-det-order.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/uninit-det-order.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -Wuninitialized -fsyntax-only %s 2>&1 | FileCheck %s
-
-void pr14901(int a) {
-   int b, c;
-   a = b;
-   a = c;
-}
-
-// CHECK: 5:8: warning: variable 'b' is uninitialized when used here
-// CHECK: 4:9: note: initialize the variable 'b' to silence this warning
-// CHECK: 6:8: warning: variable 'c' is uninitialized when used here
-// CHECK: 4:12: note: initialize the variable 'c' to silence this warning
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/uninit-variables-vectors.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/uninit-variables-vectors.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/uninit-variables-vectors.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -fsyntax-only -Wuninitialized -fsyntax-only %s -verify
-
-typedef int __v4si __attribute__((__vector_size__(16)));
-typedef float __m128 __attribute__((__vector_size__(16)));
-__m128 _mm_xor_ps(__m128 a, __m128 b);
-__m128 _mm_loadu_ps(const float *p);
-
-void test1(float *input) {
-  __m128 x, y, z, w, X; // expected-note {{variable 'x' is declared here}} expected-note {{variable 'y' is declared here}} expected-note {{variable 'w' is declared here}}  expected-note {{variable 'z' is declared here}}
-  x = _mm_xor_ps(x,x); // expected-warning {{variable 'x' is uninitialized when used here}}
-  y = _mm_xor_ps(y,y); // expected-warning {{variable 'y' is uninitialized when used here}}
-  z = _mm_xor_ps(z,z); // expected-warning {{variable 'z' is uninitialized when used here}}
-  w = _mm_xor_ps(w,w); // expected-warning {{variable 'w' is uninitialized when used here}}
-  X = _mm_loadu_ps(&input[0]);
-  X = _mm_xor_ps(X,X); // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/uninit-variables.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/uninit-variables.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/uninit-variables.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,533 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -Wconditional-uninitialized -fsyntax-only -fblocks %s -verify
-
-typedef __typeof(sizeof(int)) size_t;
-void *malloc(size_t);
-
-int test1() {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  return x; // expected-warning{{variable 'x' is uninitialized when used here}}
-}
-
-int test2() {
-  int x = 0;
-  return x; // no-warning
-}
-
-int test3() {
-  int x;
-  x = 0;
-  return x; // no-warning
-}
-
-int test4() {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  ++x; // expected-warning{{variable 'x' is uninitialized when used here}}
-  return x; 
-}
-
-int test5() {
-  int x, y; // expected-note{{initialize the variable 'y' to silence this warning}}
-  x = y; // expected-warning{{variable 'y' is uninitialized when used here}}
-  return x;
-}
-
-int test6() {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  x += 2; // expected-warning{{variable 'x' is uninitialized when used here}}
-  return x;
-}
-
-int test7(int y) {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  if (y) // expected-warning{{variable 'x' is used uninitialized whenever 'if' condition is false}} \
-         // expected-note{{remove the 'if' if its condition is always true}}
-    x = 1;
-  return x; // expected-note{{uninitialized use occurs here}}
-}
-
-int test7b(int y) {
-  int x = x; // expected-note{{variable 'x' is declared here}}
-  if (y)
-    x = 1;
-  // Warn with "may be uninitialized" here (not "is sometimes uninitialized"),
-  // since the self-initialization is intended to suppress a -Wuninitialized
-  // warning.
-  return x; // expected-warning{{variable 'x' may be uninitialized when used here}}
-}
-
-int test8(int y) {
-  int x;
-  if (y)
-    x = 1;
-  else
-    x = 0;
-  return x;
-}
-
-int test9(int n) {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  for (unsigned i = 0 ; i < n; ++i) {
-    if (i == n - 1)
-      break;
-    x = 1;
-  }
-  return x; // expected-warning{{variable 'x' may be uninitialized when used here}}
-}
-
-int test10(unsigned n) {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  for (unsigned i = 0 ; i < n; ++i) {
-    x = 1;
-  }
-  return x; // expected-warning{{variable 'x' may be uninitialized when used here}}
-}
-
-int test11(unsigned n) {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  for (unsigned i = 0 ; i <= n; ++i) {
-    x = 1;
-  }
-  return x; // expected-warning{{variable 'x' may be uninitialized when used here}}
-}
-
-void test12(unsigned n) {
-  for (unsigned i ; n ; ++i) ; // expected-warning{{variable 'i' is uninitialized when used here}} expected-note{{initialize the variable 'i' to silence this warning}}
-}
-
-int test13() {
-  static int i;
-  return i; // no-warning
-}
-
-// Simply don't crash on this test case.
-void test14() {
-  const char *p = 0;
-  for (;;) {}
-}
-
-void test15() {
-  int x = x; // no-warning: signals intended lack of initialization.
-}
-
-int test15b() {
-  // Warn here with the self-init, since it does result in a use of
-  // an unintialized variable and this is the root cause.
-  int x = x; // expected-warning {{variable 'x' is uninitialized when used within its own initialization}}
-  return x;
-}
-
-// Don't warn in the following example; shows dataflow confluence.
-char *test16_aux();
-void test16() {
-  char *p = test16_aux();
-  for (unsigned i = 0 ; i < 100 ; i++)
-    p[i] = 'a'; // no-warning
-}
-
-void test17() {
-  // Don't warn multiple times about the same uninitialized variable
-  // along the same path.
-  int *x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  *x = 1; // expected-warning{{variable 'x' is uninitialized when used here}}
-  *x = 1; // no-warning
-}
-
-int test18(int x, int y) {
-  int z;
-  if (x && y && (z = 1)) {
-    return z; // no-warning
-  }
-  return 0;
-}
-
-int test19_aux1();
-int test19_aux2();
-int test19_aux3(int *x);
-int test19() {
-  int z;
-  if (test19_aux1() + test19_aux2() && test19_aux1() && test19_aux3(&z))
-    return z; // no-warning
-  return 0;
-}
-
-int test20() {
-  int z; // expected-note{{initialize the variable 'z' to silence this warning}}
-  if ((test19_aux1() + test19_aux2() && test19_aux1()) || test19_aux3(&z)) // expected-warning {{variable 'z' is used uninitialized whenever '||' condition is true}} expected-note {{remove the '||' if its condition is always false}}
-    return z; // expected-note {{uninitialized use occurs here}}
-  return 0;
-}
-
-int test21(int x, int y) {
-  int z; // expected-note{{initialize the variable 'z' to silence this warning}}
-  if ((x && y) || test19_aux3(&z) || test19_aux2()) // expected-warning {{variable 'z' is used uninitialized whenever '||' condition is true}} expected-note {{remove the '||' if its condition is always false}}
-    return z; // expected-note {{uninitialized use occurs here}}
-  return 0;
-}
-
-int test22() {
-  int z;
-  while (test19_aux1() + test19_aux2() && test19_aux1() && test19_aux3(&z))
-    return z; // no-warning
-  return 0;
-}
-
-int test23() {
-  int z;
-  for ( ; test19_aux1() + test19_aux2() && test19_aux1() && test19_aux3(&z) ; )
-    return z; // no-warning
-  return 0;
-}
-
-// The basic uninitialized value analysis doesn't have enough path-sensitivity
-// to catch initializations relying on control-dependencies spanning multiple
-// conditionals.  This possibly can be handled by making the CFG itself
-// represent such control-dependencies, but it is a niche case.
-int test24(int flag) {
-  unsigned val; // expected-note{{initialize the variable 'val' to silence this warning}}
-  if (flag)
-    val = 1;
-  if (!flag)
-    val = 1;
-  return val; // expected-warning{{variable 'val' may be uninitialized when used here}}
-}
-
-float test25() {
-  float x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  return x; // expected-warning{{variable 'x' is uninitialized when used here}}
-}
-
-typedef int MyInt;
-MyInt test26() {
-  MyInt x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  return x; // expected-warning{{variable 'x' is uninitialized when used here}}
-}
-
-// Test handling of sizeof().
-int test27() {
-  struct test_27 { int x; } *y;
-  return sizeof(y->x); // no-warning
-}
-
-int test28() {
-  int len; // expected-note{{initialize the variable 'len' to silence this warning}}
-  return sizeof(int[len]); // expected-warning{{variable 'len' is uninitialized when used here}}
-}
-
-void test29() {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  (void) ^{ (void) x; }; // expected-warning{{variable 'x' is uninitialized when captured by block}}
-}
-
-void test30() {
-  static int x; // no-warning
-  (void) ^{ (void) x; };
-}
-
-void test31() {
-  __block int x; // no-warning
-  (void) ^{ (void) x; };
-}
-
-int test32_x;
-void test32() {
-  (void) ^{ (void) test32_x; }; // no-warning
-}
-
-void test_33() {
-  int x; // no-warning
-  (void) x;
-}
-
-int test_34() {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  (void) x;
-  return x; // expected-warning{{variable 'x' is uninitialized when used here}}
-}
-
-// Test that this case doesn't crash.
-void test35(int x) {
-  __block int y = 0;
-  ^{ y = (x == 0); }();
-}
-
-// Test handling of indirect goto.
-void test36()
-{
-  void **pc; // expected-note{{initialize the variable 'pc' to silence this warning}}
-  void *dummy[] = { &&L1, &&L2 };
- L1:
-    goto *pc; // expected-warning{{variable 'pc' is uninitialized when used here}}
- L2:
-    goto *pc;
-}
-
-// Test && nested in ||.
-int test37_a();
-int test37_b();
-int test37()
-{
-    int identifier;
-    if ((test37_a() && (identifier = 1)) ||
-        (test37_b() && (identifier = 2))) {
-        return identifier; // no-warning
-    }
-    return 0;
-}
-
-// Test merging of path-specific dataflow values (without asserting).
-int test38(int r, int x, int y)
-{
-  int z;
-  return ((r < 0) || ((r == 0) && (x < y)));
-}
-
-int test39(int x) {
-  int y; // expected-note{{initialize the variable 'y' to silence this warning}}
-  int z = x + y; // expected-warning {{variable 'y' is uninitialized when used here}}
-  return z;
-}
-
-
-int test40(int x) {
-  int y; // expected-note{{initialize the variable 'y' to silence this warning}}
-  return x ? 1 : y; // expected-warning {{variable 'y' is uninitialized when used here}}
-}
-
-int test41(int x) {
-  int y; // expected-note{{initialize the variable 'y' to silence this warning}}
-  if (x) y = 1; // expected-warning{{variable 'y' is used uninitialized whenever 'if' condition is false}} \
-                // expected-note{{remove the 'if' if its condition is always true}}
-  return y; // expected-note{{uninitialized use occurs here}}
-}
-
-void test42() {
-  int a;
-  a = 30; // no-warning
-}
-
-void test43_aux(int x);
-void test43(int i) {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  for (i = 0 ; i < 10; i++)
-    test43_aux(x++); // expected-warning {{variable 'x' is uninitialized when used here}}
-}
-
-void test44(int i) {
-  int x = i;
-  int y; // expected-note{{initialize the variable 'y' to silence this warning}}
-  for (i = 0; i < 10; i++ ) {
-    test43_aux(x++); // no-warning
-    x += y; // expected-warning {{variable 'y' is uninitialized when used here}}
-  }
-}
-
-int test45(int j) {
-  int x = 1, y = x + 1;
-  if (y) // no-warning
-    return x;
-  return y;
-}
-
-void test46()
-{
-  int i; // expected-note{{initialize the variable 'i' to silence this warning}}
-  int j = i ? : 1; // expected-warning {{variable 'i' is uninitialized when used here}}
-}
-
-void *test47(int *i)
-{
-  return i ? : 0; // no-warning
-}
-
-void *test49(int *i)
-{
-  int a;
-  return &a ? : i; // no-warning
-}
-
-void test50()
-{
-  char c[1 ? : 2]; // no-warning
-}
-
-int test51(void)
-{
-    __block int a;
-    ^(void) {
-      a = 42;
-    }();
-    return a; // no-warning
-}
-
-// FIXME: This is a false positive, but it tests logical operations in switch statements.
-int test52(int a, int b) {
-  int x;  // expected-note {{initialize the variable 'x' to silence this warning}}
-  switch (a || b) { // expected-warning {{switch condition has boolean value}}
-    case 0:
-      x = 1;
-      break;
-    case 1:
-      x = 2;
-      break;
-  }
-  return x; // expected-warning {{variable 'x' may be uninitialized when used here}}
-}
-
-void test53() {
-  int x; // expected-note {{initialize the variable 'x' to silence this warning}}
-  int y = (x);  // expected-warning {{variable 'x' is uninitialized when used here}}
-}
-
-// This CFG caused the uninitialized values warning to inf-loop.
-extern int PR10379_g();
-void PR10379_f(int *len) {
-  int new_len; // expected-note{{initialize the variable 'new_len' to silence this warning}}
-  for (int i = 0; i < 42 && PR10379_g() == 0; i++) {
-    if (PR10379_g() == 1)
-      continue;
-    if (PR10379_g() == 2)
-      PR10379_f(&new_len);
-    else if (PR10379_g() == 3)
-      PR10379_f(&new_len);
-    *len += new_len; // expected-warning {{variable 'new_len' may be uninitialized when used here}}
-  }
-}
-
-// Test that sizeof(VLA) doesn't trigger a warning.
-void test_vla_sizeof(int x) {
-  double (*memory)[2][x] = malloc(sizeof(*memory)); // no-warning
-}
-
-// Test absurd case of deadcode + use of blocks.  This previously was a false positive
-// due to an analysis bug.
-int test_block_and_dead_code() {
-  __block int x;
-  ^{ x = 1; }();
-  if (0)
-    return x;
-  return x; // no-warning
-}
-
-// This previously triggered an infinite loop in the analysis.
-void PR11069(int a, int b) {
-  unsigned long flags;
-  for (;;) {
-    if (a && !b)
-      break;
-  }
-  for (;;) {
-    // This does not trigger a warning because it isn't a real use.
-    (void)(flags); // no-warning
-  }
-}
-
-// Test uninitialized value used in loop condition.
-void rdar9432305(float *P) {
-  int i; // expected-note {{initialize the variable 'i' to silence this warning}}
-  for (; i < 10000; ++i) // expected-warning {{variable 'i' is uninitialized when used here}}
-    P[i] = 0.0f;
-}
-
-// Test that fixits are not emitted inside macros.
-#define UNINIT(T, x, y) T x; T y = x;
-#define ASSIGN(T, x, y) T y = x;
-void test54() {
-  UNINIT(int, a, b);  // expected-warning {{variable 'a' is uninitialized when used here}} \
-                      // expected-note {{variable 'a' is declared here}}
-  int c;  // expected-note {{initialize the variable 'c' to silence this warning}}
-  ASSIGN(int, c, d);  // expected-warning {{variable 'c' is uninitialized when used here}}
-}
-
-// Taking the address is fine
-struct { struct { void *p; } a; } test55 = { { &test55.a }}; // no-warning
-struct { struct { void *p; } a; } test56 = { { &(test56.a) }}; // no-warning
-
-void uninit_in_loop() {
-  int produce(void);
-  void consume(int);
-  for (int n = 0; n < 100; ++n) {
-    int k; // expected-note {{initialize}}
-    consume(k); // expected-warning {{variable 'k' is uninitialized}}
-    k = produce();
-  }
-}
-
-void uninit_in_loop_goto() {
-  int produce(void);
-  void consume(int);
-  for (int n = 0; n < 100; ++n) {
-    goto skip_decl;
-    int k; // expected-note {{initialize}}
-skip_decl:
-    // FIXME: This should produce the 'is uninitialized' diagnostic, but we
-    // don't have enough information in the CFG to easily tell that the
-    // variable's scope has been left and re-entered.
-    consume(k); // expected-warning {{variable 'k' may be uninitialized}}
-    k = produce();
-  }
-}
-
-typedef char jmp_buf[256];
-extern int setjmp(jmp_buf env); // implicitly returns_twice
-
-void do_stuff_and_longjmp(jmp_buf env, int *result) __attribute__((noreturn));
-
-int returns_twice() {
-  int a; // expected-note {{initialize}}
-  if (!a) { // expected-warning {{variable 'a' is uninitialized}}
-    jmp_buf env;
-    int b;
-    if (setjmp(env) == 0) {
-      do_stuff_and_longjmp(env, &b);
-    } else {
-      a = b; // no warning
-    }
-  }
-  return a;
-}
-
-int compound_assign(int *arr, int n) {
-  int sum; // expected-note {{initialize}}
-  for (int i = 0; i < n; ++i)
-    sum += arr[i]; // expected-warning {{variable 'sum' is uninitialized}}
-  return sum / n;
-}
-
-int compound_assign_2() {
-  int x; // expected-note {{initialize}}
-  return x += 1; // expected-warning {{variable 'x' is uninitialized}}
-}
-
-int compound_assign_3() {
-  int x; // expected-note {{initialize}}
-  x *= 0; // expected-warning {{variable 'x' is uninitialized}}
-  return x;
-}
-
-int self_init_in_cond(int *p) {
-  int n = ((p && (0 || 1)) && (n = *p)) ? n : -1; // ok
-  return n;
-}
-
-void test_analyzer_noreturn_aux() __attribute__((analyzer_noreturn));
-
-void test_analyzer_noreturn(int y) {
-  int x; // expected-note {{initialize the variable 'x' to silence this warning}}
-  if (y) {
-    test_analyzer_noreturn_aux();
-	++x; // no-warning
-  }
-  else {
-	++x; // expected-warning {{variable 'x' is uninitialized when used here}}
-  }
-}
-void test_analyzer_noreturn_2(int y) {
-  int x;
-  if (y) {
-    test_analyzer_noreturn_aux();
-  }
-  else {
-	x = 1;
-  }
-  ++x; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/unnamed-bitfield-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/unnamed-bitfield-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/unnamed-bitfield-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-typedef struct {
-        int a; int : 24; char b;
-} S;
-
-S a = { 1, 2 };

Modified: trunk/contrib/llvm/tools/clang/test/Sema/unused-expr-system-header.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/unused-expr-system-header.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/unused-expr-system-header.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -isystem %S/Inputs -fsyntax-only -verify %s
-#include <unused-expr-system-header.h>
-void f(int i1, int i2) {
-  POSSIBLY_BAD_MACRO(5);
-  STATEMENT_EXPR_MACRO(5);
-  COMMA_MACRO_1(i1 == i2, f(i1, i2)); // expected-warning {{comparison result unused}} \
-                                      // expected-note {{equality comparison}}
-  COMMA_MACRO_2(i1 == i2, f(i1, i2));
-  COMMA_MACRO_3(i1 == i2, f(i1, i2)); // expected-warning {{comparison result unused}} \
-                                      // expected-note {{equality comparison}}
-  COMMA_MACRO_4(i1 == i2, f(i1, i2));
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/unused-expr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/unused-expr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/unused-expr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,158 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code
-
-int foo(int X, int Y);
-
-double sqrt(double X);  // implicitly const because of no -fmath-errno!
-
-void bar(volatile int *VP, int *P, int A,
-         _Complex double C, volatile _Complex double VC) {
-  
-  VP < P;              // expected-warning {{expression result unused}}
-  (void)A;
-  (void)foo(1,2);      // no warning.
-  
-  A < foo(1, 2);       // expected-warning {{expression result unused}}
-
-  foo(1,2)+foo(4,3);   // expected-warning {{expression result unused}}
-
-
-  *P;                  // expected-warning {{expression result unused}}
-  *VP;                 // no warning.
-  P[4];                // expected-warning {{expression result unused}}
-  VP[4];               // no warning.
-
-  __real__ C;          // expected-warning {{expression result unused}}
-  __real__ VC;
-  
-  // We know this can't change errno because of no -fmath-errno.
-  sqrt(A);  // expected-warning {{ignoring return value of function declared with const attribute}}
-}
-
-extern void t1();
-extern void t2();
-void t3(int c) {
-  c ? t1() : t2();
-}
-
-// This shouldn't warn: the expr at the end of the stmtexpr really is used.
-int stmt_expr(int x, int y) {
-  return ({int _a = x, _b = y; _a > _b ? _a : _b; });
-}
-
-void nowarn(unsigned char* a, unsigned char* b)
-{
-  unsigned char c = 1;
-  *a |= c, *b += c;
-
-
-  // PR4633
-  int y, x;
-  ((void)0), y = x;
-}
-
-void t4(int a) {
-  int b = 0;
-
-  if (a)
-    b < 1; // expected-warning{{expression result unused}}
-  else
-    b < 2; // expected-warning{{expression result unused}}
-    
-  while (1)
-    b < 3; // expected-warning{{expression result unused}}
-
-  do
-    b < 4; // expected-warning{{expression result unused}}
-  while (1);
-  
-  for (;;)
-    b < 5; // expected-warning{{expression result unused}}
-    
-  for (b < 1;;) {} // expected-warning{{expression result unused}}
-  for (;b < 1;) {}
-  for (;;b < 1) {} // expected-warning{{expression result unused}}
-}
-
-// rdar://7186119
-int t5f(void) __attribute__((warn_unused_result));
-void t5() {
-  t5f();   // expected-warning {{ignoring return value of function declared with warn_unused_result}}
-}
-
-
-int fn1() __attribute__ ((warn_unused_result));
-int fn2() __attribute__ ((pure));
-int fn3() __attribute__ ((__const));
-// rdar://6587766
-int t6() {
-  if (fn1() < 0 || fn2(2,1) < 0 || fn3(2) < 0)  // no warnings
-    return -1;
-
-  fn1();  // expected-warning {{ignoring return value of function declared with warn_unused_result attribute}}
-  fn2(92, 21);  // expected-warning {{ignoring return value of function declared with pure attribute}}
-  fn3(42);  // expected-warning {{ignoring return value of function declared with const attribute}}
-  __builtin_fabsf(0); // expected-warning {{ignoring return value of function declared with const attribute}}
-  (void)0, fn1();  // expected-warning {{ignoring return value of function declared with warn_unused_result attribute}}
-  return 0;
-}
-
-int t7 __attribute__ ((warn_unused_result)); // expected-warning {{'warn_unused_result' attribute only applies to functions}}
-
-// PR4010
-int (*fn4)(void) __attribute__ ((warn_unused_result));
-void t8() {
-  fn4(); // expected-warning {{ignoring return value of function declared with warn_unused_result attribute}}
-}
-
-void t9() __attribute__((warn_unused_result)); // expected-warning {{attribute 'warn_unused_result' cannot be applied to functions without return value}}
-
-// rdar://7410924
-void *some_function(void);
-void t10() {
-  (void*) some_function(); //expected-warning {{expression result unused; should this cast be to 'void'?}}
-}
-
-void f(int i, ...) {
-    __builtin_va_list ap;
-    
-    __builtin_va_start(ap, i);
-    __builtin_va_arg(ap, int);
-    __builtin_va_end(ap);
-}
-
-// PR8371
-int fn5() __attribute__ ((__const));
-
-// Don't warn for unused expressions in macro bodies; however, do warn for
-// unused expressions in macro arguments. Macros below are reduced from code
-// found in the wild.
-#define NOP(a) (a)
-#define M1(a, b) (long)foo((a), (b))
-#define M2 (long)0;
-#define M3(a) (t3(a), fn2())
-#define M4(a, b) (foo((a), (b)) ? 0 : t3(a), 1)
-#define M5(a, b) (foo((a), (b)), 1)
-#define M6() fn1()
-#define M7() fn2()
-void t11(int i, int j) {
-  M1(i, j);  // no warning
-  NOP((long)foo(i, j)); // expected-warning {{expression result unused}}
-  M2;  // no warning
-  NOP((long)0); // expected-warning {{expression result unused}}
-  M3(i); // no warning
-  NOP((t3(i), fn2())); // expected-warning {{ignoring return value}}
-  M4(i, j); // no warning
-  NOP((foo(i, j) ? 0 : t3(i), 1)); // expected-warning {{expression result unused}}
-  M5(i, j); // no warning
-  NOP((foo(i, j), 1)); // expected-warning {{expression result unused}}
-  M6(); // expected-warning {{ignoring return value}}
-  M7(); // no warning
-}
-#undef NOP
-#undef M1
-#undef M2
-#undef M3
-#undef M4
-#undef M5
-#undef M6
-#undef M7

Modified: trunk/contrib/llvm/tools/clang/test/Sema/usual-float.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/usual-float.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/usual-float.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only
-
-typedef float CGFloat;
-
-extern void func(CGFloat);
-void foo(int dir, int n, int tindex) {
-  const float PI = 3.142;
-  CGFloat cgf = 3.4;
-
-  float ang = (float) tindex * (-dir*2.0f*PI/n);
-  func((CGFloat)cgf/65535.0f);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/va_arg_x86_32.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/va_arg_x86_32.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/va_arg_x86_32.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple=i686-pc-linux-gnu %s
-
-int a() {
-  __builtin_va_arg((char*)0, int); // expected-error {{expression is not assignable}}
-  __builtin_va_arg((void*){0}, int); // expected-error {{first argument to 'va_arg' is of type 'void *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/va_arg_x86_64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/va_arg_x86_64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/va_arg_x86_64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple=x86_64-unknown-freebsd7.0 %s
-// expected-no-diagnostics
-
-// PR2631
-char* foo(char *fmt, __builtin_va_list ap)
-{
-  return __builtin_va_arg((ap), char *);
-}
-
-// PR2692
-typedef __builtin_va_list va_list;
-static void f (char * (*g) (char **, int), char **p, ...) {
-  char *s;
-  va_list v;
-  s = g (p, __builtin_va_arg(v, int));
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/var-redecl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/var-redecl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/var-redecl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int outer1; // expected-note{{previous definition is here}}
-extern int outer2; // expected-note{{previous definition is here}}
-int outer4;
-int outer4; // expected-note{{previous definition is here}}
-int outer5; // expected-note{{previous definition is here}}
-int outer6(float); // expected-note{{previous definition is here}}
-int outer7(float);
-
-void outer_test() {
-  extern float outer1; // expected-error{{redefinition of 'outer1' with a different type}}
-  extern float outer2; // expected-error{{redefinition of 'outer2' with a different type}}
-  extern float outer3; // expected-note{{previous definition is here}}
-  double outer4;
-  extern int outer5;
-  extern int outer6; // expected-error{{redefinition of 'outer6' as different kind of symbol}}
-  int outer7;
-  extern int outer8; // expected-note{{previous definition is here}}
-  extern int outer9;
-  {
-    extern int outer9; // expected-note{{previous definition is here}}
-  }
-}
-
-int outer3; // expected-error{{redefinition of 'outer3' with a different type}}
-float outer4; // expected-error{{redefinition of 'outer4' with a different type}}
-float outer5;  // expected-error{{redefinition of 'outer5' with a different type}}
-int outer8(int); // expected-error{{redefinition of 'outer8' as different kind of symbol}}
-float outer9; // expected-error{{redefinition of 'outer9' with a different type}}
-
-extern int outer13; // expected-note{{previous definition is here}}
-void outer_shadowing_test() {
-  extern int outer10;
-  extern int outer11; // expected-note{{previous definition is here}}
-  extern int outer12; // expected-note{{previous definition is here}}
-  {
-    float outer10;
-    float outer11;
-    float outer12;
-    {
-      extern int outer10; // okay
-      extern float outer11; // expected-error{{redefinition of 'outer11' with a different type}}
-      static double outer12;
-      {
-        extern float outer12; // expected-error{{redefinition of 'outer12' with a different type}}
-        extern float outer13; // expected-error{{redefinition of 'outer13' with a different type}}
-      }
-    }
-  }
-}
-
-void g18(void) { // expected-note{{'g18' declared here}}
-  extern int g19;
-}
-int *p=&g19; // expected-error{{use of undeclared identifier 'g19'}} \
-             // expected-warning{{incompatible pointer types}}
-
-// PR3645
-static int a;
-extern int a; // expected-note {{previous definition is here}}
-int a;	// expected-error {{non-static declaration of 'a' follows static declaration}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/varargs-x86-64.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/varargs-x86-64.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/varargs-x86-64.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -triple x86_64-apple-darwin9
-
-// rdar://6726818
-void f1() {
-  const __builtin_va_list args2;
-  (void)__builtin_va_arg(args2, int); // expected-error {{first argument to 'va_arg' is of type 'const __builtin_va_list' and not 'va_list'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/varargs.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/varargs.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/varargs.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -verify %s -triple x86_64-apple-darwin9
-
-void f1(int a)
-{
-    __builtin_va_list ap;
-    
-    __builtin_va_start(ap, a, a); // expected-error {{too many arguments to function}}
-    __builtin_va_start(ap, a); // expected-error {{'va_start' used in function with fixed args}}
-}
-
-void f2(int a, int b, ...)
-{
-    __builtin_va_list ap;
-    
-    __builtin_va_start(ap, 10); // expected-warning {{second parameter of 'va_start' not last named argument}}
-    __builtin_va_start(ap, a); // expected-warning {{second parameter of 'va_start' not last named argument}}
-    __builtin_va_start(ap, b);
-}
-
-void f3(float a, ...)
-{
-    __builtin_va_list ap;
-    
-    __builtin_va_start(ap, a);
-    __builtin_va_start(ap, (a));
-}
-
-
-// stdarg: PR3075
-void f4(const char *msg, ...) {
- __builtin_va_list ap;
- __builtin_stdarg_start((ap), (msg));
- __builtin_va_end (ap);
-}
-
-void f5() {
-  __builtin_va_list ap;
-  __builtin_va_start(ap,ap); // expected-error {{'va_start' used in function with fixed args}}
-}
-
-void f6(int a, ...) {
-  __builtin_va_list ap;
-  __builtin_va_start(ap); // expected-error {{too few arguments to function}}
-}
-
-// PR3350
-void
-foo(__builtin_va_list authors, ...) {
-  __builtin_va_start (authors, authors);
-  (void)__builtin_va_arg(authors, int);
-  __builtin_va_end (authors);
-}
-
-void f7(int a, ...) {
-  __builtin_va_list ap;
-  __builtin_va_start(ap, a);
-  // FIXME: This error message is sub-par.
-  __builtin_va_arg(ap, int) = 1; // expected-error {{expression is not assignable}}
-  int *x = &__builtin_va_arg(ap, int); // expected-error {{cannot take the address of an rvalue}}
-  __builtin_va_end(ap);
-}
-
-void f8(int a, ...) {
-  __builtin_va_list ap;
-  __builtin_va_start(ap, a);
-  (void)__builtin_va_arg(ap, void); // expected-error {{second argument to 'va_arg' is of incomplete type 'void'}}
-  __builtin_va_end(ap);
-}
-
-enum E { x = -1, y = 2, z = 10000 };
-void f9(__builtin_va_list args)
-{
-    (void)__builtin_va_arg(args, float); // expected-warning {{second argument to 'va_arg' is of promotable type 'float'}}
-    (void)__builtin_va_arg(args, enum E); // Don't warn here in C
-    (void)__builtin_va_arg(args, short); // expected-warning {{second argument to 'va_arg' is of promotable type 'short'}}
-    (void)__builtin_va_arg(args, char); // expected-warning {{second argument to 'va_arg' is of promotable type 'char'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/varargs_unreachable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/varargs_unreachable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/varargs_unreachable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -triple x86_64-apple-darwin9
-// expected-no-diagnostics
-
-// From <rdar://problem/12322000>.  Do not warn about undefined behavior of parameter
-// argument types in unreachable code in a macro.
-#define VA_ARG_RDAR12322000(Marker, TYPE)         ((sizeof (TYPE) < sizeof (UINTN_RDAR12322000)) ? (TYPE)(__builtin_va_arg (Marker, UINTN_RDAR12322000)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
-
-// 64-bit system
-typedef unsigned long long  UINTN_RDAR12322000;
-
-int test_VA_ARG_RDAR12322000 (__builtin_va_list Marker)
-{
-  return VA_ARG_RDAR12322000 (Marker, short); // no-warning
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/Sema/variadic-block.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/variadic-block.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/variadic-block.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -fblocks
-// expected-no-diagnostics
-
-#include <stdarg.h>
-
-int main(int argc, char *argv[]) {
-    
-    long (^addthem)(const char *, ...) = ^long (const char *format, ...){
-        va_list argp;
-        const char *p;
-        int i;
-        char c;
-        double d;
-        long result = 0;
-        va_start(argp, format);
-        for (p = format; *p; p++) switch (*p) {
-            case 'i':
-                i = va_arg(argp, int);
-                result += i;
-                break;
-            case 'd':
-                d = va_arg(argp, double);
-                result += (int)d;
-                break;
-            case 'c':
-                c = va_arg(argp, int);
-                result += c;
-                break;
-        }
-        return result;
-    };
-    long testresult = addthem("ii", 10, 20);
-    if (testresult != 30) {
-        return 1;
-    }
-    testresult = addthem("idc", 30, 40.0, 'a');
-    if (testresult != (70+'a')) {
-        return 1;
-    }
-    return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/variadic-incomplete-arg-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/variadic-incomplete-arg-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/variadic-incomplete-arg-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify 
-// rdar://10961370
-
-typedef struct __CFError * CFErrorRef; // expected-note {{forward declaration of 'struct __CFError'}}
-
-void junk(int, ...);
-
-int main()
-{
- CFErrorRef error;
- junk(1, *error, (void)0); // expected-error {{argument type 'struct __CFError' is incomplete}} \
-                           // expected-error {{argument type 'void' is incomplete}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/variadic-promotion.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/variadic-promotion.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/variadic-promotion.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -ast-dump %s | FileCheck %s
-
-void variadic(int, ...);
-
-void test_floating_promotion(__fp16 *f16, float f32, double f64) {
-  variadic(3, *f16, f32, f64);
-
-// CHECK: ImplicitCastExpr {{.*}} 'double' <FloatingCast>
-// CHECK-NEXT: 'half'
-
-// CHECK: ImplicitCastExpr {{.*}} 'double' <FloatingCast>
-// CHECK-NEXT: 'float'
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/vector-assign.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/vector-assign.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/vector-assign.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -Wvector-conversion
-typedef unsigned int v2u __attribute__ ((vector_size (8)));
-typedef signed int v2s __attribute__ ((vector_size (8)));
-typedef signed int v1s __attribute__ ((vector_size (4)));
-typedef float v2f __attribute__ ((vector_size(8)));
-typedef signed short v4ss __attribute__ ((vector_size (8)));
-
-void test1() {
-  v2s v1;
-  v2u v2;
-  v1s v3;
-  v2f v4;
-  v4ss v5;
-  
-  v1 = v2; // expected-warning {{incompatible vector types assigning to 'v2s' from 'v2u'}}
-  v1 = v3; // expected-error {{assigning to 'v2s' from incompatible type 'v1s'}}
-  v1 = v4; // expected-warning {{incompatible vector types assigning to 'v2s' from 'v2f'}}
-  v1 = v5; // expected-warning {{incompatible vector types assigning to 'v2s' from 'v4ss'}}
-  
-  v2 = v1; // expected-warning {{incompatible vector types assigning to 'v2u' from 'v2s'}}
-  v2 = v3; // expected-error {{assigning to 'v2u' from incompatible type 'v1s'}}
-  v2 = v4; // expected-warning {{incompatible vector types assigning to 'v2u' from 'v2f'}}
-  v2 = v5; // expected-warning {{incompatible vector types assigning to 'v2u' from 'v4ss'}}
-  
-  v3 = v1; // expected-error {{assigning to 'v1s' from incompatible type 'v2s'}}
-  v3 = v2; // expected-error {{assigning to 'v1s' from incompatible type 'v2u'}}
-  v3 = v4; // expected-error {{assigning to 'v1s' from incompatible type 'v2f'}}
-  v3 = v5; // expected-error {{assigning to 'v1s' from incompatible type 'v4ss'}}
-  
-  v4 = v1; // expected-warning {{incompatible vector types assigning to 'v2f' from 'v2s'}}
-  v4 = v2; // expected-warning {{incompatible vector types assigning to 'v2f' from 'v2u'}}
-  v4 = v3; // expected-error {{assigning to 'v2f' from incompatible type 'v1s'}}
-  v4 = v5; // expected-warning {{incompatible vector types assigning to 'v2f' from 'v4ss'}}
-  
-  v5 = v1; // expected-warning {{incompatible vector types assigning to 'v4ss' from 'v2s'}}
-  v5 = v2; // expected-warning {{incompatible vector types assigning to 'v4ss' from 'v2u'}}
-  v5 = v3; // expected-error {{assigning to 'v4ss' from incompatible type 'v1s'}}
-  v5 = v4; // expected-warning {{incompatible vector types assigning to 'v4ss' from 'v2f'}}
-}
-
-// PR2263
-float test2(__attribute__((vector_size(16))) float a, int b) {
-   return a[b];
-}
-
-// PR4838
-typedef long long __attribute__((__vector_size__(2 * sizeof(long long))))
-longlongvec;
-
-void test3a(longlongvec *); // expected-note{{passing argument to parameter here}}
-void test3(const unsigned *src) {
-  test3a(src);  // expected-warning {{incompatible pointer types passing 'const unsigned int *' to parameter of type 'longlongvec *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/vector-cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/vector-cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/vector-cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -Wvector-conversion
-
-typedef long long t1 __attribute__ ((vector_size (8)));
-typedef char t2 __attribute__ ((vector_size (16)));
-typedef float t3 __attribute__ ((vector_size (16)));
-
-void f()
-{  
-  t1 v1;
-  t2 v2;
-  t3 v3;
-  
-  v2 = (t2)v1; // expected-error {{invalid conversion between vector type \
-'t2' and 't1' of different size}}
-  v1 = (t1)v2; // expected-error {{invalid conversion between vector type \
-'t1' and 't2' of different size}}
-  v3 = (t3)v2;
-  
-  v1 = (t1)(char *)10; // expected-error {{invalid conversion between vector \
-type 't1' and scalar type 'char *'}}
-  v1 = (t1)(long long)10;
-  v1 = (t1)(short)10; // expected-error {{invalid conversion between vector \
-type 't1' and integer type 'short' of different size}}
-  
-  long long r1 = (long long)v1;
-  short r2 = (short)v1; // expected-error {{invalid conversion between vector \
-type 't1' and integer type 'short' of different size}}
-  char *r3 = (char *)v1; // expected-error {{invalid conversion between vector\
- type 't1' and scalar type 'char *'}}
-}
-
-
-void f2(t2 X); // expected-note{{passing argument to parameter 'X' here}}
-
-void f3(t3 Y) {
-  f2(Y);  // expected-warning {{incompatible vector types passing 't3' to parameter of type 't2'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/vector-init.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/vector-init.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/vector-init.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-//typedef __attribute__(( ext_vector_type(4) ))  float float4;
-typedef float float4 __attribute__((vector_size(16)));
-
-float4 foo = (float4){ 1.0, 2.0, 3.0, 4.0 };
-
-float4 foo2 = (float4){ 1.0, 2.0, 3.0, 4.0 , 5.0 }; // expected-warning{{excess elements in vector initializer}}
-
-float4 array[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
-int array_sizecheck[(sizeof(array) / sizeof(float4)) == 3 ? 1 : -1];
-
-float4 array2[2] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 
-                     9.0 }; // expected-warning {{excess elements in array initializer}}
-
-float4 array3[2] = { {1.0, 2.0, 3.0}, 5.0, 6.0, 7.0, 8.0,
-                     9.0 }; // expected-warning {{excess elements in array initializer}}
-
-// PR5650
-__attribute__((vector_size(16))) float f1(void) {
-  __attribute__((vector_size(16))) float vec = {0.0f, 0.0f, 0.0f};
-  return(vec);
-}
-
-__attribute__((vector_size(16))) float f2(
-    __attribute__((vector_size(16))) float a1) {
-  return(a1);
-}
-
-
-
-// PR5265
-typedef float __attribute__((ext_vector_type (3))) float3;
-int test2[sizeof(float3) == sizeof(float4) ? 1 : -1];
-
-// rdar://problem/8345836
-typedef long long __attribute__((vector_size(16))) longlong2;
-typedef short __attribute__((vector_size(16))) short8;
-typedef short __attribute__((vector_size(8))) short4;
-void test3() {
-  extern short8 test3_helper(void);
-  longlong2 arr1[2] = { test3_helper(), test3_helper() };
-  short4 arr2[2] = { test3_helper(), test3_helper() }; // expected-error 2 {{initializing 'short4' with an expression of incompatible type 'short8'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/vector-ops.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/vector-ops.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/vector-ops.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -Wvector-conversion
-typedef unsigned int v2u __attribute__ ((vector_size (8)));
-typedef int v2s __attribute__ ((vector_size (8)));
-typedef float v2f __attribute__ ((vector_size(8)));
-
-void test1(v2u v2ua, v2s v2sa, v2f v2fa) {
-  // Bitwise binary operators
-  (void)(v2ua & v2ua);
-  (void)(v2fa & v2fa); // expected-error{{invalid operands to binary expression}}
-
-  // Unary operators
-  (void)(~v2ua);
-  (void)(~v2fa); // expected-error{{invalid argument type 'v2f' to unary}}
-
-  // Comparison operators
-  v2ua = (v2ua==v2sa); // expected-warning{{incompatible vector types assigning to 'v2u' from 'int __attribute__((ext_vector_type(2)))'}}
-  v2sa = (v2ua==v2sa);
-  
-  // Arrays
-  int array1[v2ua]; // expected-error{{size of array has non-integer type 'v2u'}}
-  int array2[17];
-  // FIXME: error message below needs type!
-  (void)(array2[v2ua]); // expected-error{{array subscript is not an integer}}
-
-  v2u *v2u_ptr = 0;
-  v2s *v2s_ptr;
-  v2s_ptr = v2u_ptr; // expected-warning{{converts between pointers to integer types with different sign}}
-}
- 

Modified: trunk/contrib/llvm/tools/clang/test/Sema/vfprintf-invalid-redecl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/vfprintf-invalid-redecl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/vfprintf-invalid-redecl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// PR4290
-
-// The following declaration is not compatible with vfprintf(), but make
-// sure this isn't an error: autoconf expects this to build.
-char vfprintf(); // expected-warning {{incompatible redeclaration of library function 'vfprintf'}} expected-note {{'vfprintf' is a builtin}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/vfprintf-valid-redecl.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/vfprintf-valid-redecl.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/vfprintf-valid-redecl.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
-// expected-no-diagnostics
-// PR4290
-
-// The following declaration is compatible with vfprintf, so we shouldn't
-// warn.
-int vfprintf();

Modified: trunk/contrib/llvm/tools/clang/test/Sema/vla-2.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/vla-2.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/vla-2.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -pedantic
-// Check that we don't crash trying to emit warnings in a potentially-evaluated
-// sizeof or typeof.  (This test needs to be in a separate file because we use
-// a different codepath when we have already emitted an error.)
-
-int PotentiallyEvaluatedSizeofWarn(int n) {
-  return (int)sizeof *(0 << 32,(int(*)[n])0); // expected-warning {{expression result unused}} expected-warning {{shift count >= width of type}}
-}
-
-void PotentiallyEvaluatedTypeofWarn(int n) {
-  __typeof(*(0 << 32,(int(*)[n])0)) x; // expected-warning {{expression result unused}} expected-warning {{shift count >= width of type}}
-  (void)x;
-}
-
-void PotentiallyEvaluatedArrayBoundWarn(int n) {
-  (void)*(int(*)[(0 << 32,n)])0; // FIXME: We should warn here.
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/vla.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/vla.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/vla.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -pedantic
-
-int test1() {
-  typedef int x[test1()];  // vla
-  static int y = sizeof(x);  // expected-error {{not a compile-time constant}}
-}
-
-// PR2347
-void f (unsigned int m)
-{
-  int e[2][m];
-
-  e[0][0] = 0;
-}
-
-// PR3048
-int x = sizeof(struct{char qq[x];}); // expected-error {{fields must have a constant size}}
-
-// PR2352
-void f2(unsigned int m)
-{
-  extern int e1[2][m]; // expected-error {{variable length array declaration can not have 'extern' linkage}}
-
-  e1[0][0] = 0;
-  
-}
-
-// PR2361
-int i; 
-int c[][i]; // expected-error {{variably modified type declaration not allowed at file scope}}
-int d[i]; // expected-error {{variable length array declaration not allowed at file scope}}
-
-int (*e)[i]; // expected-error {{variably modified type declaration not allowed at file scope}}
-
-void f3()
-{
-  static int a[i]; // expected-error {{variable length array declaration can not have 'static' storage duration}}
-  extern int b[i]; // expected-error {{variable length array declaration can not have 'extern' linkage}}
-
-  extern int (*c1)[i]; // expected-error {{variably modified type declaration can not have 'extern' linkage}}
-  static int (*d)[i];
-}
-
-// PR3663
-static const unsigned array[((2 * (int)((((4) / 2) + 1.0/3.0) * (4) - 1e-8)) + 1)]; // expected-warning {{variable length array folded to constant array as an extension}}
-
-int a[*]; // expected-error {{star modifier used outside of function prototype}}
-int f4(int a[*][*]);
-
-// PR2044
-int pr2044(int b) {int (*c(void))[b];**c() = 2;} // expected-error {{variably modified type}}
-int pr2044b;
-int (*pr2044c(void))[pr2044b]; // expected-error {{variably modified type}}
-
-const int f5_ci = 1;
-void f5() { char a[][f5_ci] = {""}; } // expected-warning {{variable length array folded to constant array as an extension}}
-
-// PR5185
-void pr5185(int a[*]);
-void pr5185(int a[*]) // expected-error {{variable length array must be bound in function definition}}
-{
-}
-
-// Make sure this isn't treated as an error
-int TransformBug(int a) {
- return sizeof(*(int(*)[({ goto v; v: a;})]) 0); // expected-warning {{use of GNU statement expression extension}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/void_arg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/void_arg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/void_arg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-/* RUN: %clang_cc1 -fsyntax-only %s -verify
- */
-
-typedef void Void;
-
-void foo() {
-  int X;
-  
-  X = sizeof(int (void a));    // expected-error {{argument may not have 'void' type}}
-  X = sizeof(int (int, void)); // expected-error {{must be the first and only parameter}}
-  X = sizeof(int (void, ...)); // expected-error {{must be the first and only parameter}}
-
-  X = sizeof(int (Void a));    // expected-error {{argument may not have 'void' type}}
-  X = sizeof(int (int, Void)); // expected-error {{must be the first and only parameter}}
-  X = sizeof(int (Void, ...)); // expected-error {{must be the first and only parameter}}
-
-  // Accept these.
-  X = sizeof(int (void));
-  X = sizeof(int (Void));
-}
-
-// this is ok.
-void bar(Void) {
-}
-
-void f(const void);            // expected-error {{parameter must not have type qualifiers}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-bad-function-cast.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-bad-function-cast.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-bad-function-cast.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wbad-function-cast -triple x86_64-unknown-unknown -verify
-// rdar://9103192
-
-void vf(void);
-int if1(void);
-char if2(void);
-long if3(void);
-float rf1(void);
-double rf2(void);
-_Complex double cf(void);
-enum e { E1 } ef(void);
-_Bool bf(void);
-char *pf1(void);
-int *pf2(void);
-
-void
-foo(void)
-{
-  /* Casts to void types are always OK.  */
-  (void)vf();
-  (void)if1();
-  (void)cf();
-  (const void)bf();
-  /* Casts to the same type or similar types are OK.  */
-  (int)if1();
-  (long)if2();
-  (char)if3();
-  (float)rf1();
-  (long double)rf2();
-  (_Complex float)cf();
-  (enum f { F1 })ef();
-  (_Bool)bf();
-  (void *)pf1();
-  (char *)pf2();
-  /* All following casts issue warning */
-  (float)if1(); /* expected-warning {{cast from function call of type 'int' to non-matching type 'float'}} */
-  (double)if2(); /* expected-warning {{cast from function call of type 'char' to non-matching type 'double'}} */
-  (_Bool)if3(); /* expected-warning {{cast from function call of type 'long' to non-matching type '_Bool'}} */
-  (int)rf1(); /* expected-warning {{cast from function call of type 'float' to non-matching type 'int'}} */
-  (long)rf2(); /* expected-warning {{cast from function call of type 'double' to non-matching type 'long'}} */
-  (double)cf(); /* expected-warning {{cast from function call of type '_Complex double' to non-matching type 'double'}} */
-  (int)ef(); /* expected-warning {{cast from function call of type 'enum e' to non-matching type 'int'}} */
-  (int)bf(); /* expected-warning {{cast from function call of type '_Bool' to non-matching type 'int'}} */
-  (__SIZE_TYPE__)pf1(); /* expected-warning {{cast from function call of type 'char *' to non-matching type 'unsigned long'}} */
-  (__PTRDIFF_TYPE__)pf2(); /* expected-warning {{cast from function call of type 'int *' to non-matching type 'long'}} */
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-cast-align.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-cast-align.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-cast-align.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -Wcast-align -verify %s
-
-// Simple casts.
-void test0(char *P) {
-  char *a  = (char*)  P;
-  short *b = (short*) P; // expected-warning {{cast from 'char *' to 'short *' increases required alignment from 1 to 2}}
-  int *c   = (int*)   P; // expected-warning {{cast from 'char *' to 'int *' increases required alignment from 1 to 4}}
-}
-
-// Casts from void* are a special case.
-void test1(void *P) {
-  char *a  = (char*)  P;
-  short *b = (short*) P;
-  int *c   = (int*)   P;
-
-  const volatile void *P2 = P;
-  char *d  = (char*)  P2;
-  short *e = (short*) P2;
-  int *f   = (int*)   P2;
-
-  const char *g  = (const char*)  P2;
-  const short *h = (const short*) P2;
-  const int *i   = (const int*)   P2;
-
-  const volatile char *j  = (const volatile char*)  P2;
-  const volatile short *k = (const volatile short*) P2;
-  const volatile int *l   = (const volatile int*)   P2;
-}
-
-// Aligned struct.
-struct __attribute__((aligned(16))) A {
-  char buffer[16];
-};
-void test2(char *P) {
-  struct A *a = (struct A*) P; // expected-warning {{cast from 'char *' to 'struct A *' increases required alignment from 1 to 16}}
-}
-
-// Incomplete type.
-void test3(char *P) {
-  struct B *b = (struct B*) P;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-char-subscripts.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-char-subscripts.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-char-subscripts.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -Wchar-subscripts -fsyntax-only -verify %s
-
-void t1() {
-  int array[1] = { 0 };
-  char subscript = 0;
-  int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
-}
-
-void t2() {
-  int array[1] = { 0 };
-  char subscript = 0;
-  int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
-}
-
-void t3() {
-  int *array = 0;
-  char subscript = 0;
-  int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
-}
-
-void t4() {
-  int *array = 0;
-  char subscript = 0;
-  int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
-}
-
-char returnsChar();
-void t5() {
-  int *array = 0;
-  int val = array[returnsChar()]; // expected-warning{{array subscript is of type 'char'}}
-}
-
-void t6() {
-  int array[1] = { 0 };
-  signed char subscript = 0;
-  int val = array[subscript]; // no warning for explicit signed char
-}
-
-void t7() {
-  int array[1] = { 0 };
-  unsigned char subscript = 0;
-  int val = array[subscript]; // no warning for unsigned char
-}
-
-typedef char CharTy;
-void t8() {
-  int array[1] = { 0 };
-  CharTy subscript = 0;
-  int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
-}
-
-typedef signed char SignedCharTy;
-void t9() {
-  int array[1] = { 0 };
-  SignedCharTy subscript = 0;
-  int val = array[subscript]; // no warning for explicit signed char
-}
-
-typedef unsigned char UnsignedCharTy;
-void t10() {
-  int array[1] = { 0 };
-  UnsignedCharTy subscript = 0;
-  int val = array[subscript]; // no warning for unsigned char
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-almost-trailing.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-almost-trailing.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-almost-trailing.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-// RUN: cp %s %t
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -fixit %t
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -Werror %t
-
-struct a {
-  int x; //< comment // expected-warning {{not a Doxygen trailing comment}}
-  int y; /*< comment */ // expected-warning {{not a Doxygen trailing comment}}
-};
-
-// CHECK: fix-it:"{{.*}}":{8:10-8:13}:"///<"
-// CHECK: fix-it:"{{.*}}":{9:10-9:13}:"/**<"
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-crlf.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-crlf.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-crlf.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation %s
-// The run line does not have '-verify' because we were crashing while printing
-// the diagnostic.
-
-// This file has DOS-style line endings (CR LF).  Please don't change it to
-// Unix-style LF!
-
-// PR14591.  Check that we don't crash on this.
-/**
- * @param abc
- */
-void nocrash1(int qwerty);
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-fixits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-fixits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation-fixits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-// expected-warning at +1 {{parameter 'ZZZZZZZZZZ' not found in the function declaration}} expected-note at +1 {{did you mean 'a'?}}
-/// \param ZZZZZZZZZZ Blah blah.
-int test1(int a);
-
-// expected-warning at +1 {{parameter 'aab' not found in the function declaration}} expected-note at +1 {{did you mean 'aaa'?}}
-/// \param aab Blah blah.
-int test2(int aaa, int bbb);
-
-// expected-warning at +1 {{template parameter 'ZZZZZZZZZZ' not found in the template declaration}} expected-note at +1 {{did you mean 'T'?}}
-/// \tparam ZZZZZZZZZZ Aaa
-template<typename T>
-void test3(T aaa);
-
-// expected-warning at +1 {{template parameter 'SomTy' not found in the template declaration}} expected-note at +1 {{did you mean 'SomeTy'?}}
-/// \tparam SomTy Aaa
-/// \tparam OtherTy Bbb
-template<typename SomeTy, typename OtherTy>
-void test4(SomeTy aaa, OtherTy bbb);
-
-// expected-warning at +1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +2 {{add a deprecation attribute to the declaration to silence this warning}}
-/// \deprecated
-void test_deprecated_1();
-
-// expected-warning at +1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +2 {{add a deprecation attribute to the declaration to silence this warning}}
-/// \deprecated
-void test_deprecated_2(int a);
-
-struct test_deprecated_3 {
-  // expected-warning at +1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +2 {{add a deprecation attribute to the declaration to silence this warning}}
-  /// \deprecated
-  void test_deprecated_4();
-
-  // expected-warning at +1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +2 {{add a deprecation attribute to the declaration to silence this warning}}
-  /// \deprecated
-  void test_deprecated_5() {
-  }
-};
-
-template<typename T>
-struct test_deprecated_6 {
-  // expected-warning at +1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +2 {{add a deprecation attribute to the declaration to silence this warning}}
-  /// \deprecated
-  void test_deprecated_7();
-
-  // expected-warning at +1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +2 {{add a deprecation attribute to the declaration to silence this warning}}
-  /// \deprecated
-  void test_deprecated_8() {
-  }
-};
-
-#define MY_ATTR_DEPRECATED __attribute__((deprecated))
-
-// expected-warning at +1 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +2 {{add a deprecation attribute to the declaration to silence this warning}}
-/// \deprecated
-void test_deprecated_9(int a);
-
-// CHECK: fix-it:"{{.*}}":{5:12-5:22}:"a"
-// CHECK: fix-it:"{{.*}}":{9:12-9:15}:"aaa"
-// CHECK: fix-it:"{{.*}}":{13:13-13:23}:"T"
-// CHECK: fix-it:"{{.*}}":{18:13-18:18}:"SomeTy"
-// CHECK: fix-it:"{{.*}}":{25:25-25:25}:" __attribute__((deprecated))"
-// CHECK: fix-it:"{{.*}}":{29:30-29:30}:" __attribute__((deprecated))"
-// CHECK: fix-it:"{{.*}}":{34:27-34:27}:" __attribute__((deprecated))"
-// CHECK: fix-it:"{{.*}}":{38:27-38:27}:" __attribute__((deprecated))"
-// CHECK: fix-it:"{{.*}}":{46:27-46:27}:" __attribute__((deprecated))"
-// CHECK: fix-it:"{{.*}}":{50:27-50:27}:" __attribute__((deprecated))"
-// CHECK: fix-it:"{{.*}}":{58:30-58:30}:" MY_ATTR_DEPRECATED"
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,952 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -Wdocumentation -Wdocumentation-pedantic -verify %s
-
-// This file contains lots of corner cases, so ensure that XML we generate is not invalid.
-// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s | FileCheck %s -check-prefix=WRONG
-// WRONG-NOT: CommentXMLInvalid
-
-// expected-warning at +1 {{expected quoted string after equals sign}}
-/// <a href=>
-int test_html1(int);
-
-// expected-warning at +1 {{expected quoted string after equals sign}}
-/// <a href==>
-int test_html2(int);
-
-// expected-warning at +2 {{expected quoted string after equals sign}}
-// expected-warning at +1 {{HTML start tag prematurely ended, expected attribute name or '>'}}
-/// <a href= blah
-int test_html3(int);
-
-// expected-warning at +1 {{HTML start tag prematurely ended, expected attribute name or '>'}}
-/// <a =>
-int test_html4(int);
-
-// expected-warning at +1 {{HTML start tag prematurely ended, expected attribute name or '>'}}
-/// <a "aaa">
-int test_html5(int);
-
-// expected-warning at +1 {{HTML start tag prematurely ended, expected attribute name or '>'}}
-/// <a a="b" =>
-int test_html6(int);
-
-// expected-warning at +1 {{HTML start tag prematurely ended, expected attribute name or '>'}}
-/// <a a="b" "aaa">
-int test_html7(int);
-
-// expected-warning at +1 {{HTML start tag prematurely ended, expected attribute name or '>'}}
-/// <a a="b" =
-int test_html8(int);
-
-// expected-warning at +2 {{HTML start tag prematurely ended, expected attribute name or '>'}} expected-note at +1 {{HTML tag started here}}
-/** Aaa bbb<img ddd eee
- * fff ggg.
- */
-int test_html9(int);
-
-// expected-warning at +1 {{HTML start tag prematurely ended, expected attribute name or '>'}}
-/** Aaa bbb<img ddd eee 42%
- * fff ggg.
- */
-int test_html10(int);
-
-// expected-warning at +1 {{HTML end tag 'br' is forbidden}}
-/// <br></br>
-int test_html11(int);
-
-/// <blockquote>Meow</blockquote>
-int test_html_nesting1(int);
-
-/// <b><i>Meow</i></b>
-int test_html_nesting2(int);
-
-/// <p>Aaa<br>
-/// Bbb</p>
-int test_html_nesting3(int);
-
-/// <p>Aaa<br />
-/// Bbb</p>
-int test_html_nesting4(int);
-
-// expected-warning at +1 {{HTML end tag does not match any start tag}}
-/// <b><i>Meow</a>
-int test_html_nesting5(int);
-
-// expected-warning at +2 {{HTML start tag 'i' closed by 'b'}}
-// expected-warning at +1 {{HTML end tag does not match any start tag}}
-/// <b><i>Meow</b></b>
-int test_html_nesting6(int);
-
-// expected-warning at +2 {{HTML start tag 'i' closed by 'b'}}
-// expected-warning at +1 {{HTML end tag does not match any start tag}}
-/// <b><i>Meow</b></i>
-int test_html_nesting7(int);
-
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\returns Aaa
-int test_block_command1(int);
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief \returns Aaa
-int test_block_command2(int);
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief
-/// \returns Aaa
-int test_block_command3(int);
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief
-///
-/// \returns Aaa
-int test_block_command4(int);
-
-// There is trailing whitespace on one of the following lines, don't remove it!
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief
-/// 
-/// \returns Aaa
-int test_block_command5(int);
-
-/// \brief \c Aaa
-int test_block_command6(int);
-
-// expected-warning at +5 {{duplicated command '\brief'}} expected-note at +1 {{previous command '\brief' here}}
-/// \brief Aaa
-///
-/// Bbb
-///
-/// \brief Ccc
-int test_duplicate_brief1(int);
-
-// expected-warning at +5 {{duplicated command '\short'}} expected-note at +1 {{previous command '\short' here}}
-/// \short Aaa
-///
-/// Bbb
-///
-/// \short Ccc
-int test_duplicate_brief2(int);
-
-// expected-warning at +5 {{duplicated command '\brief'}} expected-note at +1 {{previous command '\short' (an alias of '\brief') here}}
-/// \short Aaa
-///
-/// Bbb
-///
-/// \brief Ccc
-int test_duplicate_brief3(int);
-
-
-// expected-warning at +5 {{duplicated command '\return'}} expected-note at +1 {{previous command '\return' here}}
-/// \return Aaa
-///
-/// Bbb
-///
-/// \return Ccc
-int test_duplicate_returns1(int);
-
-// expected-warning at +5 {{duplicated command '\returns'}} expected-note at +1 {{previous command '\returns' here}}
-/// \returns Aaa
-///
-/// Bbb
-///
-/// \returns Ccc
-int test_duplicate_returns2(int);
-
-// expected-warning at +5 {{duplicated command '\result'}} expected-note at +1 {{previous command '\result' here}}
-/// \result Aaa
-///
-/// Bbb
-///
-/// \result Ccc
-int test_duplicate_returns3(int);
-
-// expected-warning at +5 {{duplicated command '\return'}} expected-note at +1 {{previous command '\returns' (an alias of '\return') here}}
-/// \returns Aaa
-///
-/// Bbb
-///
-/// \return Ccc
-int test_duplicate_returns4(int);
-
-
-// expected-warning at +1 {{'\param' command used in a comment that is not attached to a function declaration}}
-/// \param a Blah blah.
-int test_param1;
-
-// expected-warning at +1 {{empty paragraph passed to '\param' command}}
-/// \param
-/// \param a Blah blah.
-int test_param2(int a);
-
-// expected-warning at +1 {{empty paragraph passed to '\param' command}}
-/// \param a
-int test_param3(int a);
-
-/// \param a Blah blah.
-int test_param4(int a);
-
-/// \param [in] a Blah blah.
-int test_param5(int a);
-
-/// \param [out] a Blah blah.
-int test_param6(int a);
-
-/// \param [in,out] a Blah blah.
-int test_param7(int a);
-
-// expected-warning at +1 {{whitespace is not allowed in parameter passing direction}}
-/// \param [ in ] a Blah blah.
-int test_param8(int a);
-
-// expected-warning at +1 {{whitespace is not allowed in parameter passing direction}}
-/// \param [in, out] a Blah blah.
-int test_param9(int a);
-
-// expected-warning at +1 {{unrecognized parameter passing direction, valid directions are '[in]', '[out]' and '[in,out]'}}
-/// \param [ junk] a Blah blah.
-int test_param10(int a);
-
-// expected-warning at +1 {{parameter 'a' not found in the function declaration}}
-/// \param a Blah blah.
-int test_param11();
-
-// expected-warning at +1 {{parameter 'A' not found in the function declaration}} expected-note at +1 {{did you mean 'a'?}}
-/// \param A Blah blah.
-int test_param12(int a);
-
-// expected-warning at +1 {{parameter 'aab' not found in the function declaration}} expected-note at +1 {{did you mean 'aaa'?}}
-/// \param aab Blah blah.
-int test_param13(int aaa, int bbb);
-
-// expected-warning at +2 {{parameter 'aab' not found in the function declaration}} expected-note at +2 {{did you mean 'bbb'?}}
-/// \param aaa Blah blah.
-/// \param aab Blah blah.
-int test_param14(int aaa, int bbb);
-
-// expected-warning at +1 {{parameter 'aab' not found in the function declaration}}
-/// \param aab Blah blah.
-int test_param15(int bbb, int ccc);
-
-// expected-warning at +1 {{parameter 'aab' not found in the function declaration}}
-/// \param aab Ccc.
-/// \param aaa Aaa.
-/// \param bbb Bbb.
-int test_param16(int aaa, int bbb);
-
-// expected-warning at +2 {{parameter 'aab' not found in the function declaration}}
-/// \param aaa Aaa.
-/// \param aab Ccc.
-/// \param bbb Bbb.
-int test_param17(int aaa, int bbb);
-
-// expected-warning at +3 {{parameter 'aab' not found in the function declaration}}
-/// \param aaa Aaa.
-/// \param bbb Bbb.
-/// \param aab Ccc.
-int test_param18(int aaa, int bbb);
-
-class C {
-  // expected-warning at +1 {{parameter 'aaa' not found in the function declaration}}
-  /// \param aaa Blah blah.
-  C(int bbb, int ccc);
-
-  // expected-warning at +1 {{parameter 'aaa' not found in the function declaration}}
-  /// \param aaa Blah blah.
- int test_param19(int bbb, int ccc);
-};
-
-// expected-warning at +1 {{parameter 'aab' not found in the function declaration}}
-/// \param aab Blah blah.
-template<typename T>
-void test_param20(int bbb, int ccc);
-
-// expected-warning at +3 {{parameter 'a' is already documented}}
-// expected-note at +1 {{previous documentation}}
-/// \param a Aaa.
-/// \param a Aaa.
-int test_param21(int a);
-
-// expected-warning at +4 {{parameter 'x2' is already documented}}
-// expected-note at +2 {{previous documentation}}
-/// \param x1 Aaa.
-/// \param x2 Bbb.
-/// \param x2 Ccc.
-int test_param22(int x1, int x2, int x3);
-
-// expected-warning at +2 {{parameter 'bbb' not found in the function declaration}} expected-note at +2 {{did you mean 'ccc'?}}
-/// \param aaa Meow.
-/// \param bbb Bbb.
-/// \returns aaa.
-typedef int test_param23(int aaa, int ccc);
-
-// expected-warning at +2 {{parameter 'bbb' not found in the function declaration}} expected-note at +2 {{did you mean 'ccc'?}}
-/// \param aaa Meow.
-/// \param bbb Bbb.
-/// \returns aaa.
-typedef int (*test_param24)(int aaa, int ccc);
-
-// expected-warning at +2 {{parameter 'bbb' not found in the function declaration}} expected-note at +2 {{did you mean 'ccc'?}}
-/// \param aaa Meow.
-/// \param bbb Bbb.
-/// \returns aaa.
-typedef int (* const test_param25)(int aaa, int ccc);
-
-// expected-warning at +2 {{parameter 'bbb' not found in the function declaration}} expected-note at +2 {{did you mean 'ccc'?}}
-/// \param aaa Meow.
-/// \param bbb Bbb.
-/// \returns aaa.
-typedef int (C::*test_param26)(int aaa, int ccc);
-
-typedef int (*test_param27)(int aaa);
-
-// expected-warning at +1 {{'\param' command used in a comment that is not attached to a function declaration}}
-/// \param aaa Meow.
-typedef test_param27 test_param28;
-
-// rdar://13066276
-// expected-warning at +1 {{'@param' command used in a comment that is not attached to a function declaration}}
-/// @param aaa Meow.
-typedef unsigned int test_param29;
-
-
-// expected-warning at +1 {{'\tparam' command used in a comment that is not attached to a template declaration}}
-/// \tparam T Aaa
-int test_tparam1;
-
-// expected-warning at +1 {{'\tparam' command used in a comment that is not attached to a template declaration}}
-/// \tparam T Aaa
-void test_tparam2(int aaa);
-
-// expected-warning at +1 {{empty paragraph passed to '\tparam' command}}
-/// \tparam
-/// \param aaa Blah blah
-template<typename T>
-void test_tparam3(T aaa);
-
-// expected-warning at +1 {{template parameter 'T' not found in the template declaration}} expected-note at +1 {{did you mean 'TT'?}}
-/// \tparam T Aaa
-template<typename TT>
-void test_tparam4(TT aaa);
-
-// expected-warning at +1 {{template parameter 'T' not found in the template declaration}} expected-note at +1 {{did you mean 'TT'?}}
-/// \tparam T Aaa
-template<typename TT>
-class test_tparam5 {
-  // expected-warning at +1 {{template parameter 'T' not found in the template declaration}} expected-note at +1 {{did you mean 'TTT'?}}
-  /// \tparam T Aaa
-  template<typename TTT>
-  void test_tparam6(TTT aaa);
-};
-
-/// \tparam T1 Aaa
-/// \tparam T2 Bbb
-template<typename T1, typename T2>
-void test_tparam7(T1 aaa, T2 bbb);
-
-// expected-warning at +1 {{template parameter 'SomTy' not found in the template declaration}} expected-note at +1 {{did you mean 'SomeTy'?}}
-/// \tparam SomTy Aaa
-/// \tparam OtherTy Bbb
-template<typename SomeTy, typename OtherTy>
-void test_tparam8(SomeTy aaa, OtherTy bbb);
-
-// expected-warning at +2 {{template parameter 'T1' is already documented}} expected-note at +1 {{previous documentation}}
-/// \tparam T1 Aaa
-/// \tparam T1 Bbb
-template<typename T1, typename T2>
-void test_tparam9(T1 aaa, T2 bbb);
-
-/// \tparam T Aaa
-/// \tparam TT Bbb
-template<template<typename T> class TT>
-void test_tparam10(TT<int> aaa);
-
-/// \tparam T Aaa
-/// \tparam TT Bbb
-/// \tparam TTT Ccc
-template<template<template<typename T> class TT, class C> class TTT>
-void test_tparam11();
-
-/// \tparam I Aaa
-template<int I>
-void test_tparam12();
-
-template<typename T, typename U>
-class test_tparam13 { };
-
-/// \tparam T Aaa
-template<typename T>
-using test_tparam14 = test_tparam13<T, int>;
-
-// expected-warning at +1 {{template parameter 'U' not found in the template declaration}} expected-note at +1 {{did you mean 'T'?}}
-/// \tparam U Aaa
-template<typename T>
-using test_tparam15 = test_tparam13<T, int>;
-
-// ----
-
-/// \tparam T Aaa
-template<typename T>
-class test_tparam16 { };
-
-typedef test_tparam16<int> test_tparam17;
-typedef test_tparam16<double> test_tparam18;
-
-// ----
-
-template<typename T>
-class test_tparam19;
-
-typedef test_tparam19<int> test_tparam20;
-typedef test_tparam19<double> test_tparam21;
-
-/// \tparam T Aaa
-template<typename T>
-class test_tparam19 { };
-
-// ----
-
-// expected-warning at +1 {{'@tparam' command used in a comment that is not attached to a template declaration}}
-/// @tparam T Aaa
-int test_tparam22;
-
-// ----
-
-
-/// Aaa
-/// \deprecated Bbb
-void test_deprecated_1(int a) __attribute__((deprecated));
-
-// We don't want \deprecated to warn about empty paragraph.  It is fine to use
-// \deprecated by itself without explanations.
-
-/// Aaa
-/// \deprecated
-void test_deprecated_2(int a) __attribute__((deprecated));
-
-/// Aaa
-/// \deprecated
-void test_deprecated_3(int a) __attribute__((availability(macosx,introduced=10.4)));
-
-/// Aaa
-/// \deprecated
-void test_deprecated_4(int a) __attribute__((unavailable));
-
-// expected-warning at +2 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +3 {{add a deprecation attribute to the declaration to silence this warning}}
-/// Aaa
-/// \deprecated
-void test_deprecated_5(int a);
-
-// expected-warning at +2 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}} expected-note at +3 {{add a deprecation attribute to the declaration to silence this warning}}
-/// Aaa
-/// \deprecated
-void test_deprecated_6(int a) {
-}
-
-// expected-warning at +2 {{declaration is marked with '\deprecated' command but does not have a deprecation attribute}}
-/// Aaa
-/// \deprecated
-template<typename T>
-void test_deprecated_7(T aaa);
-
-
-// rdar://12397511
-// expected-note at +2 {{previous command '\headerfile' here}}
-// expected-warning at +2 {{duplicated command '\headerfile'}}
-/// \headerfile ""
-/// \headerfile foo.h
-int test__headerfile_1(int a);
-
-
-/// \invariant aaa
-void test_invariant_1(int a);
-
-// expected-warning at +1 {{empty paragraph passed to '\invariant' command}}
-/// \invariant
-void test_invariant_2(int a);
-
-
-// no-warning
-/// \returns Aaa
-int test_returns_right_decl_1(int);
-
-class test_returns_right_decl_2 {
-  // no-warning
-  /// \returns Aaa
-  int test_returns_right_decl_3(int);
-};
-
-// no-warning
-/// \returns Aaa
-template<typename T>
-int test_returns_right_decl_4(T aaa);
-
-// no-warning
-/// \returns Aaa
-template<>
-int test_returns_right_decl_4(int aaa);
-
-/// \returns Aaa
-template<typename T>
-T test_returns_right_decl_5(T aaa);
-
-// expected-warning at +1 {{'\returns' command used in a comment that is not attached to a function or method declaration}}
-/// \returns Aaa
-int test_returns_wrong_decl_1;
-
-// expected-warning at +1 {{'\return' command used in a comment that is not attached to a function or method declaration}}
-/// \return Aaa
-int test_returns_wrong_decl_2;
-
-// expected-warning at +1 {{'\result' command used in a comment that is not attached to a function or method declaration}}
-/// \result Aaa
-int test_returns_wrong_decl_3;
-
-// expected-warning at +1 {{'\returns' command used in a comment that is attached to a function returning void}}
-/// \returns Aaa
-void test_returns_wrong_decl_4(int);
-
-// expected-warning at +1 {{'\returns' command used in a comment that is attached to a function returning void}}
-/// \returns Aaa
-template<typename T>
-void test_returns_wrong_decl_5(T aaa);
-
-// expected-warning at +1 {{'\returns' command used in a comment that is attached to a function returning void}}
-/// \returns Aaa
-template<>
-void test_returns_wrong_decl_5(int aaa);
-
-// expected-warning at +1 {{'\returns' command used in a comment that is not attached to a function or method declaration}}
-/// \returns Aaa
-struct test_returns_wrong_decl_6 { };
-
-// expected-warning at +1 {{'\returns' command used in a comment that is not attached to a function or method declaration}}
-/// \returns Aaa
-class test_returns_wrong_decl_7 {
-  // expected-warning at +1 {{'\returns' command used in a comment that is attached to a constructor}}
-  /// \returns Aaa
-  test_returns_wrong_decl_7();
-
-  // expected-warning at +1 {{'\returns' command used in a comment that is attached to a destructor}}
-  /// \returns Aaa
-  ~test_returns_wrong_decl_7();
-};
-
-// expected-warning at +1 {{'\returns' command used in a comment that is not attached to a function or method declaration}}
-/// \returns Aaa
-enum test_returns_wrong_decl_8 {
-  // expected-warning at +1 {{'\returns' command used in a comment that is not attached to a function or method declaration}}
-  /// \returns Aaa
-  test_returns_wrong_decl_9
-};
-
-// expected-warning at +1 {{'\returns' command used in a comment that is not attached to a function or method declaration}}
-/// \returns Aaa
-namespace test_returns_wrong_decl_10 { };
-
-// rdar://13066276
-// expected-warning at +1 {{'@returns' command used in a comment that is not attached to a function or method declaration}}
-/// @returns Aaa
-typedef unsigned int test_returns_wrong_decl_11;
-
-// rdar://13094352
-// expected-warning at +1 {{'@function' command should be used in a comment attached to a function declaration}}
-/*!	@function test_function
-*/
-typedef unsigned int Base64Flags;
-unsigned test_function(Base64Flags inFlags);
-
-// expected-warning at +1 {{'@callback' command should be used in a comment attached to a pointer to function declaration}}
-/*! @callback test_callback
-*/
-typedef unsigned int BaseFlags;
-unsigned (*test_callback)(BaseFlags inFlags);
-
-// expected-warning at +1 {{'\endverbatim' command does not terminate a verbatim text block}}
-/// \endverbatim
-int test_verbatim_1();
-
-// expected-warning at +1 {{'\endcode' command does not terminate a verbatim text block}}
-/// \endcode
-int test_verbatim_2();
-
-// FIXME: we give a bad diagnostic here because we throw away non-documentation
-// comments early.
-//
-// expected-warning at +3 {{'\endcode' command does not terminate a verbatim text block}}
-/// \code
-//  foo
-/// \endcode
-int test_verbatim_3();
-
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-int test1; ///< \brief\author Aaa
-
-// expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-// expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-int test2, ///< \brief\author Aaa
-    test3; ///< \brief\author Aaa
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-int test4; ///< \brief
-           ///< \author Aaa
-
-
-// Check that we attach the comment to the declaration during parsing in the
-// following cases.  The test is based on the fact that we don't parse
-// documentation comments that are not attached to anything.
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-int test_attach1;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-int test_attach2(int);
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-struct test_attach3 {
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  /// \brief\author Aaa
-  int test_attach4;
-
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  int test_attach5; ///< \brief\author Aaa
-
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  /// \brief\author Aaa
-  int test_attach6(int);
-};
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-class test_attach7 {
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  /// \brief\author Aaa
-  int test_attach8;
-
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  int test_attach9; ///< \brief\author Aaa
-
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  /// \brief\author Aaa
-  int test_attach10(int);
-};
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-enum test_attach9 {
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  /// \brief\author Aaa
-  test_attach10,
-
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  test_attach11 ///< \brief\author Aaa
-};
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-struct test_noattach12 *test_attach13;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-typedef struct test_noattach14 *test_attach15;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-typedef struct test_attach16 { int a; } test_attach17;
-
-struct S { int a; };
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-struct S *test_attach18;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-typedef struct S *test_attach19;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-struct test_attach20;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-typedef struct test_attach21 {
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  /// \brief\author Aaa
-  int test_attach22;
-} test_attach23;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-namespace test_attach24 {
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  /// \brief\author Aaa
-  namespace test_attach25 {
-  }
-}
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T>
-void test_attach26(T aaa);
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T, typename U>
-void test_attach27(T aaa, U bbb);
-
-// expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-// expected-warning at +2 {{template parameter 'T' not found in the template declaration}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<>
-void test_attach27(int aaa, int bbb);
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T>
-class test_attach28 {
-  T aaa;
-};
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-using test_attach29 = test_attach28<int>;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T, typename U>
-class test_attach30 { };
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T>
-class test_attach30<T, int> { };
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-template<>
-class test_attach30<int, int> { };
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-template<typename T>
-using test_attach31 = test_attach30<T, int>;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T, typename U, typename V>
-class test_attach32 { };
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T, typename U>
-class test_attach32<T, U, int> { };
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T>
-class test_attach32<T, int, int> { };
-
-// expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-// expected-warning at +2 {{template parameter 'T' not found in the template declaration}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<>
-class test_attach32<int, int, int> { };
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-class test_attach33 {
-  // expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-  /// \brief\author Aaa
-  /// \tparam T Aaa
-  template<typename T, typename U>
-  void test_attach34(T aaa, U bbb);
-};
-
-template<typename T>
-class test_attach35 {
-  // expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-  // expected-warning at +2 {{template parameter 'T' not found in the template declaration}}
-  /// \brief\author Aaa
-  /// \tparam T Aaa
-  template<typename TT, typename UU>
-  void test_attach36(TT aaa, UU bbb);
-};
-
-// expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-// expected-warning at +2 {{template parameter 'T' not found in the template declaration}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<> template<>
-void test_attach35<int>::test_attach36(int aaa, int bbb) {}
-
-template<typename T>
-class test_attach37 {
-  // expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-  // expected-warning at +2 {{'\tparam' command used in a comment that is not attached to a template declaration}}
-  /// \brief\author Aaa
-  /// \tparam T Aaa
-  void test_attach38(int aaa, int bbb);
-
-  void test_attach39(int aaa, int bbb);
-};
-
-// expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-// expected-warning at +2 {{template parameter 'T' not found in the template declaration}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<>
-void test_attach37<int>::test_attach38(int aaa, int bbb) {}
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-/// \tparam T Aaa
-template<typename T>
-void test_attach37<T>::test_attach39(int aaa, int bbb) {}
-
-// We used to emit warning that parameter 'a' is not found because we parsed
-// the comment in context of the redeclaration which does not have parameter
-// names.
-template <typename T>
-struct test_attach38 {
-  /*!
-    \param a  First param
-    \param b  Second param
-  */
-  template <typename B>
-  void test_attach39(T a, B b);
-};
-
-template <>
-template <typename B>
-void test_attach38<int>::test_attach39(int, B);
-
-
-// PR13411, reduced.  We used to crash on this.
-/**
- * @code Aaa.
- */
-void test_nocrash1(int);
-
-// We used to crash on this.
-// expected-warning at +2 {{empty paragraph passed to '\param' command}}
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \param\brief
-void test_nocrash2(int);
-
-// PR13593, example 1 and 2
-
-/**
-* Bla.
-*/
-template <typename>
-void test_nocrash3();
-
-/// Foo
-template <typename, typename>
-void test_nocrash4() { }
-
-template <typename>
-void test_nocrash3()
-{
-}
-
-// PR13593, example 3
-
-/**
- * aaa
- */
-template <typename T>
-inline T test_nocrash5(T a1)
-{
-    return a1;
-}
-
-///
-//,
-
-inline void test_nocrash6()
-{
-    test_nocrash5(1);
-}
-
-// We used to crash on this.
-
-/*!
-  Blah.
-*/
-typedef const struct test_nocrash7 * test_nocrash8;
-
-// We used to crash on this.
-
-// expected-warning at +1 {{unknown command tag name}}
-/// aaa \unknown aaa \unknown aaa
-int test_nocrash9;
-
-// We used to crash on this.  PR15068
-
-// expected-warning at +2 {{empty paragraph passed to '@param' command}}
-// expected-warning at +2 {{empty paragraph passed to '@param' command}}
-///@param x
-///@param y
-int test_nocrash10(int x, int y);
-
-// expected-warning at +2 {{empty paragraph passed to '@param' command}} expected-warning at +2 {{parameter 'x' not found in the function declaration}}
-// expected-warning at +2 {{empty paragraph passed to '@param' command}} expected-warning at +2 {{parameter 'y' not found in the function declaration}}
-///@param x
-///@param y
-int test_nocrash11();
-
-// expected-warning at +3 {{empty paragraph passed to '@param' command}} expected-warning at +3 {{parameter 'x' not found in the function declaration}}
-// expected-warning at +3 {{empty paragraph passed to '@param' command}} expected-warning at +3 {{parameter 'y' not found in the function declaration}}
-/**
- at param x
- at param y
-**/
-int test_nocrash12();
-
-// expected-warning at +2 {{empty paragraph passed to '@param' command}}
-// expected-warning at +1 {{empty paragraph passed to '@param' command}}
-///@param x at param y
-int test_nocrash13(int x, int y);
-
-// rdar://12379114
-// expected-warning at +2 {{'@union' command should not be used in a comment attached to a non-union declaration}}
-/*!
-   @union U This is new 
-*/
-struct U { int iS; };
-
-/*!
-  @union U1
-*/
-union U1 {int i; };
-
-// expected-warning at +2 {{'@struct' command should not be used in a comment attached to a non-struct declaration}}
-/*!
- @struct S2
-*/
-union S2 {};
-
-/*!
-  @class C1
-*/
-class C1;
-
-/*!
-  @struct S3;
-*/
-class S3;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-documentation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,174 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-objc-root-class -Wdocumentation -Wdocumentation-pedantic -verify %s
-
- at class NSString;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at interface Test1
-// expected-warning at +2 {{empty paragraph passed to '\brief' command}}
-/**
- * \brief\author Aaa
- * \param aaa Aaa
- * \param bbb Bbb
- */
-+ (NSString *)test1:(NSString *)aaa suffix:(NSString *)bbb;
-
-// expected-warning at +2 {{parameter 'aab' not found in the function declaration}} expected-note at +2 {{did you mean 'aaa'?}}
-/**
- * \param aab Aaa
- */
-+ (NSString *)test2:(NSString *)aaa;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at property int test3; // a property: ObjCPropertyDecl
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at property int test4; // a property: ObjCPropertyDecl
- at end
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at interface Test1()
- at end
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at implementation Test1 // a class implementation : ObjCImplementationDecl
-+ (NSString *)test1:(NSString *)aaa suffix:(NSString *)bbb {
-  return 0;
-}
-
-+ (NSString *)test2:(NSString *)aaa {
-  return 0;
-}
-
- at synthesize test3; // a property implementation: ObjCPropertyImplDecl
- at dynamic test4; // a property implementation: ObjCPropertyImplDecl
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-NSString *_test5;
- at end
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at interface Test1(Test1Category) // a category: ObjCCategoryDecl
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
-+ (NSString *)test3:(NSString *)aaa;
- at end
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at implementation Test1(Test1Category) // a category implementation: ObjCCategoryImplDecl
-+ (NSString *)test3:(NSString *)aaa {
-  return 0;
-}
- at end
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at protocol TestProto1 // a protocol: ObjCProtocolDecl
- at end
-
-int a;
-
-// expected-warning at +1 {{empty paragraph passed to '\brief' command}}
-/// \brief\author Aaa
- at interface Test4
- at end
-
-int b;
-
- at interface TestReturns1
-/// \returns Aaa
-- (int)test1:(NSString *)aaa;
-
-// expected-warning at +1 {{'\returns' command used in a comment that is attached to a method returning void}}
-/// \returns Aaa
-- (void)test2:(NSString *)aaa;
- at end
-
-// expected-warning at +2 {{parameter 'bbb' not found in the function declaration}} expected-note at +2 {{did you mean 'ccc'?}}
-/// \param aaa Meow.
-/// \param bbb Bbb.
-/// \returns aaa.
-typedef int (^test_param1)(int aaa, int ccc);
-
-// rdar://13094352
-// expected-warning at +2 {{'@method' command should be used in a comment attached to an Objective-C method declaration}}
- at interface I
-/*!	@method Base64EncodeEx
-*/
-typedef id ID;
-- (unsigned) Base64EncodeEx : (ID)Arg;
- at end
-
-// rdar://12379114
-// expected-warning at +5 {{'@interface' command should not be used in a comment attached to a non-interface declaration}} 
-// expected-warning at +5 {{'@classdesign' command should not be used in a comment attached to a non-container declaration}}
-// expected-warning at +5 {{'@coclass' command should not be used in a comment attached to a non-container declaration}} 
- at interface NSObject @end
-/*!
- at interface IOCommandGate
- at classdesign Multiple paragraphs go here.
- at coclass myCoClass 
-*/
-
-typedef id OBJ;
- at interface IOCommandGate : NSObject {
-  OBJ iv;
-}
- at end
-
-// rdar://12379114
-// expected-warning at +4 {{'@methodgroup' command should be used in a comment attached to an Objective-C method declaration}}
-// expected-warning at +6 {{'@method' command should be used in a comment attached to an Objective-C method declaratio}}
- at interface rdar12379114
-/*!
- @methodgroup Creating a request
-*/
-/*!
- @method initWithTimeout is the 2nd method
-*/
-typedef unsigned int NSTimeInterval;
-- (id)initWithTimeout:(NSTimeInterval)timeout;
- at end
-
-// expected-warning at +2 {{'@protocol' command should not be used in a comment attached to a non-protocol declaration}}
-/*!
- at protocol PROTO
-*/
-struct S;
-
-/*!
-  @interface NSArray This is an array
-*/
- at class NSArray;
- at interface NSArray @end
-
-// expected-warning at +3 {{unknown command tag name}}
-/*!
- at interface NSMutableArray 
- at super NSArray
-*/
- at interface NSMutableArray : NSArray @end
-
-/*!
-  @protocol MyProto
-*/
- at protocol MyProto @end
-
-// expected-warning at +2 {{'@protocol' command should not be used in a comment attached to a non-protocol declaration}}
-/*!
- @protocol MyProto
-*/
- at interface INTF <MyProto> @end
-
-// expected-warning at +2 {{'@struct' command should not be used in a comment attached to a non-struct declaration}}
-/*!
-  @struct S1 THIS IS IT
-*/
- at interface S1 @end

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-duplicate-enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-duplicate-enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-duplicate-enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -Wduplicate-enum
-// RUN: %clang_cc1 %s -x c++ -fsyntax-only -verify -Wduplicate-enum
-enum A {
-  A1 = 0,  // expected-note {{element A1 also has value 0}}
-  A2 = -1,
-  A3,  // expected-warning {{element A3 has been implicitly assigned 0 which another element has been assigned}}
-  A4};
-
-enum B {
-  B1 = -1,  // expected-note {{element B1 also has value -1}}
-  B2,       // expected-warning {{element B2 has been implicitly assigned 0 which another element has been assigned}}
-  B3,
-  B4 = -2,
-  B5,  // expected-warning {{element B5 has been implicitly assigned -1 which another element has been assigned}}
-  B6   // expected-note {{element B6 also has value 0}}
-};
-
-enum C { C1, C2 = -1, C3 }; // expected-warning{{element C1 has been implicitly assigned 0 which another element has been assigned}} \
-  // expected-note {{element C3 also has value 0}}
-
-enum D {
-  D1,
-  D2,
-  D3,  // expected-warning{{element D3 has been implicitly assigned 2 which another element has been assigned}}
-  D4 = D2,  // no warning
-  D5 = 2  // expected-note {{element D5 also has value 2}}
-};
-
-enum E {
-  E1,
-  E2 = E1,
-  E3 = E2
-};
-
-enum F {
-  F1,
-  F2,
-  FCount,
-  FMax = FCount - 1
-};
-
-enum G {
-  G1,
-  G2,
-  GMax = G2,
-  GCount = GMax + 1
-};
-
-enum {
-  H1 = 0,
-  H2 = -1,
-  H3,
-  H4};
-
-enum {
-  I1 = -1,
-  I2,
-  I3,
-  I4 = -2,
-  I5,
-  I6
-};
-
-enum { J1, J2 = -1, J3 };
-
-enum { 
-  K1, 
-  K2, 
-  K3,
-  K4 = K2,
-  K5 = 2
-};
-
-enum {
-  L1,
-  L2 = L1,
-  L3 = L2
-};
-
-enum {
-  M1,
-  M2,
-  MCount,
-  MMax = MCount - 1
-};
-
-enum {
-  N1,
-  N2,
-  NMax = N2,
-  NCount = NMax + 1
-};
-
-// PR15693
-enum enum1 {
-  VALUE // expected-note{{previous definition is here}}
-};
-
-enum enum2 {
-  VALUE // expected-error{{redefinition of enumerator 'VALUE'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-freestanding-complex.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-freestanding-complex.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-freestanding-complex.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -ffreestanding -pedantic -verify %s
-
-void foo(float _Complex c) { // expected-warning{{complex numbers are an extension in a freestanding C99 implementation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-gnu-designators.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-gnu-designators.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-gnu-designators.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -Wno-gnu-designator -verify %s
-// expected-no-diagnostics
-struct { int x, y, z[12]; } value = { x:17, .z [3 ... 5] = 7 };

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-main-return-type.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-main-return-type.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-main-return-type.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -x c++ %s 2>&1 | FileCheck %s
-
-// expected-note at +1 5{{previous definition is here}}
-int main() {
-  return 0;
-}
-
-// expected-error at +3 {{conflicting types for 'main}}
-// expected-warning at +2 {{return type of 'main' is not 'int'}}
-// expected-note at +1 {{change return type to 'int'}}
-void main() {
-// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:5}:"int"
-}
-
-// expected-error at +3 {{conflicting types for 'main}}
-// expected-warning at +2 {{return type of 'main' is not 'int'}}
-// expected-note at +1 {{change return type to 'int'}}
-double main() {
-// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:7}:"int"
-  return 0.0;
-}
-
-// Currently we suggest to replace only 'float' here because we don't store
-// enough source locations.
-//
-// expected-error at +3 {{conflicting types for 'main}}
-// expected-warning at +2 {{return type of 'main' is not 'int'}}
-// expected-note at +1 {{change return type to 'int'}}
-const float main() {
-// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:7-[[@LINE-1]]:12}:"int"
-  return 0.0f;
-}
-
-typedef void *(*fptr)(int a);
-
-// expected-error at +2 {{conflicting types for 'main}}
-// expected-warning at +1 {{return type of 'main' is not 'int'}}
-fptr main() {
-  return (fptr) 0;
-}
-
-// expected-error at +2 {{conflicting types for 'main}}
-// expected-warning at +1 {{return type of 'main' is not 'int'}}
-void *(*main())(int a) {
-  return (fptr) 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-main.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-main.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-main.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -x c++ %s 2>&1 | FileCheck %s
-
-// expected-note at +1 2{{previous definition is here}}
-int main() {
-  return 0;
-}
-
-// expected-error at +2 {{static declaration of 'main' follows non-static declaration}}
-// expected-warning at +1 {{'main' should not be declared static}}
-static int main() {
-// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:8}:""
-  return 0;
-}
-
-// expected-error at +3 {{redefinition of 'main'}}
-// expected-error at +2 {{'main' is not allowed to be declared inline}}
-// expected-note at +1 {{previous definition is here}}
-inline int main() {
-// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:8}:""
-  return 0;
-}
-
-// expected-warning at +6 {{function 'main' declared 'noreturn' should not return}}
-// expected-error at +3 {{redefinition of 'main'}}
-// expected-warning at +2 {{'main' is not allowed to be declared _Noreturn}}
-// expected-note at +1 {{remove '_Noreturn'}}
-_Noreturn int main() {
-// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:11}:""
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-braces.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-braces.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-braces.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wmissing-braces -verify %s
-
-int a[2][2] = { 0, 1, 2, 3 }; // expected-warning{{suggest braces}} expected-warning{{suggest braces}}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-prototypes.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-prototypes.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-prototypes.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -Wmissing-prototypes -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -Wmissing-prototypes -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-int f();
-
-int f(int x) { return x; } // expected-warning{{no previous prototype for function 'f'}}
-
-static int g(int x) { return x; }
-
-int h(int x) { return x; } // expected-warning{{no previous prototype for function 'h'}}
-
-static int g2();
-
-int g2(int x) { return x; }
-
-void test(void);
-
-int h3();
-int h4(int);
-int h4();
-
-void test(void) {
-  int h2(int x);
-  int h3(int x);
-  int h4();
-}
-
-int h2(int x) { return x; } // expected-warning{{no previous prototype for function 'h2'}}
-int h3(int x) { return x; } // expected-warning{{no previous prototype for function 'h3'}}
-int h4(int x) { return x; }
-
-int f2(int);
-int f2();
-
-int f2(int x) { return x; }
-
-// rdar://6759522
-int main(void) { return 0; }
-
-void not_a_prototype_test(); // expected-note{{this declaration is not a prototype; add 'void' to make it a prototype for a zero-parameter function}}
-void not_a_prototype_test() { } // expected-warning{{no previous prototype for function 'not_a_prototype_test'}}
-
-// CHECK: fix-it:"{{.*}}":{40:27-40:27}:"void"

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-variable-declarations.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-variable-declarations.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-missing-variable-declarations.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang -Wmissing-variable-declarations -fsyntax-only -Xclang -verify %s
-
-int vbad1; // expected-warning{{no previous extern declaration for non-static variable 'vbad1'}}
-
-int vbad2;
-int vbad2 = 10; // expected-warning{{no previous extern declaration for non-static variable 'vbad2'}}
-
-struct {
-  int mgood1;
-} vbad3; // expected-warning{{no previous extern declaration for non-static variable 'vbad3'}}
-
-int vbad4;
-int vbad4 = 10; // expected-warning{{no previous extern declaration for non-static variable 'vbad4'}}
-extern int vbad4;
-
-extern int vgood1;
-int vgood1;
-int vgood1 = 10;

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-outof-range-assign-enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-outof-range-assign-enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-outof-range-assign-enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wassign-enum %s
-// rdar://11824807
-
-typedef enum CCTestEnum
-{
-  One,
-  Two=4,
-  Three
-} CCTestEnum;
-
-CCTestEnum test = 50; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
-CCTestEnum test1 = -50; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
-
-CCTestEnum foo(CCTestEnum r) {
-  return 20; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
-}
-
-enum Test2 { K_zero, K_one };
-enum Test2 test2(enum Test2 *t) {
-  *t = 20; // expected-warning {{integer constant not in range of enumerated type 'enum Test2'}}
-  return 10; // expected-warning {{integer constant not in range of enumerated type 'enum Test2'}}
-}
-
-int main() {
-  CCTestEnum test = 1; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
-  test = 600; // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
-  foo(2); // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
-  foo(-1); // expected-warning {{integer constant not in range of enumerated type 'CCTestEnum'}}
-  foo(4);
-  foo(Two+1);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-self-assign-field.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-self-assign-field.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-self-assign-field.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-objc-root-class -verify %s
-
-class S {
- public:
-  int a_;
-  void s(int a) {
-    a_ = a_;  // expected-warning {{assigning field to itself}}
-
-    // Don't really care about this one either way.
-    this->a_ = a_;  // expected-warning {{assigning field to itself}}
-
-    a_ += a_;  // Shouldn't warn.
-  }
-};
-
-void f0(S* s) {
-  // Would be nice to have, but not important.
-  s->a_ = s->a_;
-}
-
-void f1(S* s, S* t) {
-  // Shouldn't warn.
-  t->a_ = s->a_;
-}
-
-struct T {
-  S* s_;
-};
-
-void f2(T* t) {
-  // Would be nice to have, but even less important.
-  t->s_->a_ = t->s_->a_;
-}
-
-void f3(T* t, T* t2) {
-  // Shouldn't warn.
-  t2->s_->a_ = t->s_->a_;
-}
-
-void f4(int i) {
-  // This is a common pattern to silence "parameter unused". Shouldn't warn.
-  i = i;
-
-  int j = 0;
-  j = j;  // Likewise.
-}
-
- at interface I {
-  int a_;
-}
- at end
-
- at implementation I
-- (void)setA:(int)a {
-  a_ = a_;  // expected-warning {{assigning instance variable to itself}}
-}
-
-- (void)foo:(I*)i {
-  // Don't care much about this warning.
-  i->a_ = i->a_;  // expected-warning {{assigning instance variable to itself}}
-
-  // Shouldn't warn.
-  a_ = i->a_;
-  i->a_ = a_;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-shadow.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-shadow.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-shadow.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -fblocks -Wshadow %s
-
-int i;          // expected-note 3 {{previous declaration is here}}
-
-void foo() {
-  int pass1;
-  int i;        // expected-warning {{declaration shadows a variable in the global scope}} \
-                // expected-note {{previous declaration is here}}
-  {
-    int pass2;
-    int i;      // expected-warning {{declaration shadows a local variable}} \
-                // expected-note {{previous declaration is here}}
-    {
-      int pass3;
-      int i;    // expected-warning {{declaration shadows a local variable}}
-    }
-  }
-
-  int sin; // okay; 'sin' has not been declared, even though it's a builtin.
-}
-
-// <rdar://problem/7677531>
-void (^test1)(int) = ^(int i) { // expected-warning {{declaration shadows a variable in the global scope}} \
-                                 // expected-note{{previous declaration is here}}
-  {
-    int i; // expected-warning {{declaration shadows a local variable}} \
-           // expected-note{{previous declaration is here}}
-    
-    (^(int i) { return i; })(i); //expected-warning {{declaration shadows a local variable}}
-  }
-};
-
-
-struct test2 {
-  int i;
-};
-
-void test3(void) {
-  struct test4 {
-    int i;
-  };
-}
-
-void test4(int i) { // expected-warning {{declaration shadows a variable in the global scope}}
-}
-
-// Don't warn about shadowing for function declarations.
-void test5(int i);
-void test6(void (*f)(int i)) {}
-void test7(void *context, void (*callback)(void *context)) {}
-
-extern int bob; // expected-note {{previous declaration is here}}
-
-// rdar://8883302
-void rdar8883302() {
-  extern int bob; // don't warn for shadowing.
-}
-
-void test8() {
-  int bob; // expected-warning {{declaration shadows a variable in the global scope}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-sizeof-array-decay.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-sizeof-array-decay.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-sizeof-array-decay.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f(int x) {
-  char foo[10];
-  int bar[20];
-  char qux[30];
-
-  (void)sizeof(bar + 10); // expected-warning{{sizeof on pointer operation will return size of 'int *' instead of 'int [20]'}}
-  (void)sizeof(foo - 20); // expected-warning{{sizeof on pointer operation will return size of 'char *' instead of 'char [10]'}}
-  (void)sizeof(bar - x); // expected-warning{{sizeof on pointer operation will return size of 'int *' instead of 'int [20]'}}
-  (void)sizeof(foo + x); // expected-warning{{sizeof on pointer operation will return size of 'char *' instead of 'char [10]'}}
-
-  // This is ptrdiff_t.
-  (void)sizeof(foo - qux); // no-warning
-
-  (void)sizeof(foo, x); // no-warning
-  (void)sizeof(x, foo); // expected-warning{{sizeof on pointer operation will return size of 'char *' instead of 'char [10]'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-sizeof-arrayarg.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-sizeof-arrayarg.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-sizeof-arrayarg.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef int Arr[10];
-
-typedef int trungl_int;
-
-void f(int a[10], Arr arr) {  // \
-// expected-note {{declared here}} \
-// expected-note {{declared here}} \
-// expected-note {{declared here}} \
-// expected-note {{declared here}}
-
-  /* Should warn. */
-  (void)sizeof(a);  // \
-      // expected-warning{{sizeof on array function parameter will return size of 'int *' instead of 'int [10]'}}
-  (void)sizeof((((a))));  // \
-      // expected-warning{{sizeof on array function parameter will return size of 'int *' instead of 'int [10]'}}
-  (void)sizeof a;  // \
-      // expected-warning{{sizeof on array function parameter will return size of 'int *' instead of 'int [10]'}}
-  (void)sizeof arr;  // \
-      // expected-warning{{sizeof on array function parameter will return size of 'int *' instead of 'Arr' (aka 'int [10]')}}
-
-  /* Shouldn't warn. */
-  int b[10];
-  (void)sizeof b;
-  Arr brr;
-  (void)sizeof brr;
-  (void)sizeof(Arr);
-  (void)sizeof(int);
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-strlcpycat-size.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-strlcpycat-size.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-strlcpycat-size.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -Wstrlcpy-strlcat-size -verify -fsyntax-only %s
-
-typedef __SIZE_TYPE__ size_t;
-size_t strlcpy (char * restrict dst, const char * restrict src, size_t size);
-size_t strlcat (char * restrict dst, const char * restrict src, size_t size);
-size_t strlen (const char *s);
-
-char s1[100];
-char s2[200];
-char * s3;
-
-struct {
-  char f1[100];
-  char f2[100][3];
-} s4, **s5;
-
-int x;
-
-void f(void)
-{
-  strlcpy(s1, s2, sizeof(s1)); // no warning
-  strlcpy(s1, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
-  strlcpy(s1, s3, strlen(s3)+1); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
-  strlcat(s2, s3, sizeof(s3)); // expected-warning {{size argument in 'strlcat' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
-  strlcpy(s4.f1, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
-  strlcpy((*s5)->f2[x], s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
-  strlcpy(s1+3, s2, sizeof(s2)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Don't issue FIXIT for flexible arrays.
-struct S {
-  int y; 
-  char x[];
-};
-
-void flexible_arrays(struct S *s) {
-  char str[] = "hi";
-  strlcpy(s->x, str, sizeof(str));  // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Don't issue FIXIT for destinations of size 1.
-void size_1() {
-  char z[1];
-  char str[] = "hi";
-
-  strlcpy(z, str, sizeof(str));  // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}}
-}
-
-// Support VLAs.
-void vlas(int size) {
-  char z[size];
-  char str[] = "hi";
-
-  strlcpy(z, str, sizeof(str)); // expected-warning {{size argument in 'strlcpy' call appears to be size of the source; expected the size of the destination}} expected-note {{change size argument to be the size of the destination}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-strncat-size.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-strncat-size.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-strncat-size.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -Wstrncat-size -verify -fsyntax-only %s
-// RUN: %clang_cc1 -DUSE_BUILTINS -Wstrncat-size -verify -fsyntax-only %s
-// RUN: %clang_cc1 -fsyntax-only -Wstrncat-size -fixit -x c %s
-// RUN: %clang_cc1 -DUSE_BUILTINS -fsyntax-only -Wstrncat-size -fixit -x c %s
-
-typedef __SIZE_TYPE__ size_t;
-size_t strlen (const char *s);
-
-#ifdef USE_BUILTINS
-# define BUILTIN(f) __builtin_ ## f
-#else
-# define BUILTIN(f) f
-#endif
-
-#define strncat BUILTIN(strncat)
-char *strncat(char *restrict s1, const char *restrict s2, size_t n);
-
-struct {
-  char f1[100];
-  char f2[100][3];
-} s4, **s5;
-
-char s1[100];
-char s2[200];
-int x;
-
-void test(char *src) {
-  char dest[10];
-
-  strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest) - strlen(dest) - 1); // no-warning
-  strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest) - 1); // no-warning - the code might assume that dest is empty
-
-  strncat(dest, src, sizeof(src)); // expected-warning {{size argument in 'strncat' call appears to be size of the source}} expected-note {{change the argument to be the free space in the destination buffer minus the terminating null byte}}
-
-  strncat(dest, src, sizeof(src) - 1); // expected-warning {{size argument in 'strncat' call appears to be size of the source}} expected-note {{change the argument to be the free space in the destination buffer minus the terminating null byte}}
-
-  strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest)); // expected-warning{{the value of the size argument in 'strncat' is too large, might lead to a buffer overflow}} expected-note {{change the argument to be the free space in the destination buffer minus the terminating null byte}}
-
-  strncat(dest, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", sizeof(dest) - strlen(dest)); // expected-warning{{the value of the size argument in 'strncat' is too large, might lead to a buffer overflow}} expected-note {{change the argument to be the free space in the destination buffer minus the terminating null byte}}
-
-  strncat((*s5)->f2[x], s2, sizeof(s2)); // expected-warning {{size argument in 'strncat' call appears to be size of the source}} expected-note {{change the argument to be the free space in the destination buffer minus the terminating null byte}}
-  strncat(s1+3, s2, sizeof(s2)); // expected-warning {{size argument in 'strncat' call appears to be size of the source}}
-  strncat(s4.f1, s2, sizeof(s2)); // expected-warning {{size argument in 'strncat' call appears to be size of the source}} expected-note {{change the argument to be the free space in the destination buffer minus the terminating null byte}}
-}
-
-// Don't issue FIXIT for flexible arrays.
-struct S {
-  int y;
-  char x[];
-};
-
-void flexible_arrays(struct S *s) {
-  char str[] = "hi";
-  strncat(s->x, str,  sizeof(str)); // expected-warning {{size argument in 'strncat' call appears to be size of the source}}
-}
-
-// Don't issue FIXIT for destinations of size 1.
-void size_1() {
-  char z[1];
-  char str[] = "hi";
-
-  strncat(z, str, sizeof(z)); // expected-warning{{the value of the size argument to 'strncat' is wrong}}
-}
-
-// Support VLAs.
-void vlas(int size) {
-  char z[size];
-  char str[] = "hi";
-
-  strncat(z, str, sizeof(str)); // expected-warning {{size argument in 'strncat' call appears to be size of the source}} expected-note {{change the argument to be the free space in the destination buffer minus the terminating null byte}}
-}
-
-// Non-array type gets a different error message.
-void f(char* s, char* d) {
-  strncat(d, s, sizeof(d)); // expected-warning {{the value of the size argument to 'strncat' is wrong}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety-mpi-hdf5.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety-mpi-hdf5.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety-mpi-hdf5.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,319 +0,0 @@
-// RUN: %clang_cc1 -std=c99 -DOPEN_MPI -fsyntax-only -verify %s
-// RUN: %clang_cc1 -std=c99 -DMPICH -fsyntax-only -verify %s
-// RUN: %clang_cc1 -x c++ -std=c++98 -DOPEN_MPI -fsyntax-only -verify %s
-// RUN: %clang_cc1 -x c++ -std=c++98 -DMPICH -fsyntax-only -verify %s
-//
-// RUN: %clang_cc1 -std=c99 -DOPEN_MPI -fno-signed-char -fsyntax-only -verify %s
-// RUN: %clang_cc1 -std=c99 -DMPICH -fno-signed-char -fsyntax-only -verify %s
-
-//===--- limits.h mock ----------------------------------------------------===//
-
-#ifdef __CHAR_UNSIGNED__
-#define CHAR_MIN 0
-#define CHAR_MAX (__SCHAR_MAX__*2  +1)
-#else
-#define CHAR_MIN (-__SCHAR_MAX__-1)
-#define CHAR_MAX __SCHAR_MAX__
-#endif
-
-//===--- mpi.h mock -------------------------------------------------------===//
-
-#define NULL ((void *)0)
-
-#ifdef OPEN_MPI
-typedef struct ompi_datatype_t *MPI_Datatype;
-#endif
-
-#ifdef MPICH
-typedef int MPI_Datatype;
-#endif
-
-int MPI_Send(void *buf, int count, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag(mpi,1,3) ));
-
-int MPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
-               void *recvbuf, int recvcount, MPI_Datatype recvtype)
-               __attribute__(( pointer_with_type_tag(mpi,1,3), pointer_with_type_tag(mpi,4,6) ));
-
-#ifdef OPEN_MPI
-// OpenMPI and LAM/MPI-style datatype definitions
-
-#define OMPI_PREDEFINED_GLOBAL(type, global) ((type) &(global))
-
-#define MPI_DATATYPE_NULL OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_datatype_null)
-#define MPI_FLOAT         OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_float)
-#define MPI_INT           OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_int)
-#define MPI_LONG          OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long)
-#define MPI_LONG_LONG_INT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_long_long_int)
-#define MPI_CHAR          OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_char)
-
-#define MPI_FLOAT_INT     OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_float_int)
-#define MPI_2INT          OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_2int)
-
-#define MPI_IN_PLACE ((void *) 1)
-
-extern struct ompi_predefined_datatype_t ompi_mpi_datatype_null __attribute__(( type_tag_for_datatype(mpi,void,must_be_null) ));
-extern struct ompi_predefined_datatype_t ompi_mpi_float         __attribute__(( type_tag_for_datatype(mpi,float) ));
-extern struct ompi_predefined_datatype_t ompi_mpi_int           __attribute__(( type_tag_for_datatype(mpi,int) ));
-extern struct ompi_predefined_datatype_t ompi_mpi_long          __attribute__(( type_tag_for_datatype(mpi,long) ));
-extern struct ompi_predefined_datatype_t ompi_mpi_long_long_int __attribute__(( type_tag_for_datatype(mpi,long long int) ));
-extern struct ompi_predefined_datatype_t ompi_mpi_char          __attribute__(( type_tag_for_datatype(mpi,char) ));
-
-struct ompi_struct_mpi_float_int {float f; int i;};
-extern struct ompi_predefined_datatype_t ompi_mpi_float_int     __attribute__(( type_tag_for_datatype(mpi, struct ompi_struct_mpi_float_int, layout_compatible) ));
-
-struct ompi_struct_mpi_2int {int i1; int i2;};
-extern struct ompi_predefined_datatype_t ompi_mpi_2int          __attribute__(( type_tag_for_datatype(mpi, struct ompi_struct_mpi_2int, layout_compatible) ));
-#endif
-
-#ifdef MPICH
-// MPICH2 and MVAPICH2-style datatype definitions
-
-#define MPI_COMM_WORLD ((MPI_Comm) 0x44000000)
-
-#define MPI_DATATYPE_NULL ((MPI_Datatype) 0xa0000000)
-#define MPI_FLOAT         ((MPI_Datatype) 0xa0000001)
-#define MPI_INT           ((MPI_Datatype) 0xa0000002)
-#define MPI_LONG          ((MPI_Datatype) 0xa0000003)
-#define MPI_LONG_LONG_INT ((MPI_Datatype) 0xa0000004)
-#define MPI_CHAR          ((MPI_Datatype) 0xa0000005)
-
-#define MPI_FLOAT_INT     ((MPI_Datatype) 0xa0000006)
-#define MPI_2INT          ((MPI_Datatype) 0xa0000007)
-
-#define MPI_IN_PLACE  (void *) -1
-
-static const MPI_Datatype mpich_mpi_datatype_null __attribute__(( type_tag_for_datatype(mpi,void,must_be_null) )) = 0xa0000000;
-static const MPI_Datatype mpich_mpi_float         __attribute__(( type_tag_for_datatype(mpi,float) ))             = 0xa0000001;
-static const MPI_Datatype mpich_mpi_int           __attribute__(( type_tag_for_datatype(mpi,int) ))               = 0xa0000002;
-static const MPI_Datatype mpich_mpi_long          __attribute__(( type_tag_for_datatype(mpi,long) ))              = 0xa0000003;
-static const MPI_Datatype mpich_mpi_long_long_int __attribute__(( type_tag_for_datatype(mpi,long long int) ))     = 0xa0000004;
-static const MPI_Datatype mpich_mpi_char          __attribute__(( type_tag_for_datatype(mpi,char) ))              = 0xa0000005;
-
-struct mpich_struct_mpi_float_int { float f; int i; };
-struct mpich_struct_mpi_2int { int i1; int i2; };
-static const MPI_Datatype mpich_mpi_float_int     __attribute__(( type_tag_for_datatype(mpi, struct mpich_struct_mpi_float_int, layout_compatible) )) = 0xa0000006;
-static const MPI_Datatype mpich_mpi_2int          __attribute__(( type_tag_for_datatype(mpi, struct mpich_struct_mpi_2int, layout_compatible) )) = 0xa0000007;
-#endif
-
-//===--- HDF5 headers mock ------------------------------------------------===//
-
-typedef int hid_t;
-void H5open(void);
-
-#ifndef HDF_PRIVATE
-#define H5OPEN  H5open(),
-#else
-#define H5OPEN
-#endif
-
-#define H5T_NATIVE_CHAR         (CHAR_MIN?H5T_NATIVE_SCHAR:H5T_NATIVE_UCHAR)
-#define H5T_NATIVE_SCHAR        (H5OPEN H5T_NATIVE_SCHAR_g)
-#define H5T_NATIVE_UCHAR        (H5OPEN H5T_NATIVE_UCHAR_g)
-#define H5T_NATIVE_INT          (H5OPEN H5T_NATIVE_INT_g)
-#define H5T_NATIVE_LONG         (H5OPEN H5T_NATIVE_LONG_g)
-
-hid_t H5T_NATIVE_SCHAR_g __attribute__(( type_tag_for_datatype(hdf5,signed char) ));
-hid_t H5T_NATIVE_UCHAR_g __attribute__(( type_tag_for_datatype(hdf5,unsigned char) ));
-hid_t H5T_NATIVE_INT_g   __attribute__(( type_tag_for_datatype(hdf5,int) ));
-hid_t H5T_NATIVE_LONG_g  __attribute__(( type_tag_for_datatype(hdf5,long) ));
-
-void H5Dwrite(hid_t mem_type_id, const void *buf) __attribute__(( pointer_with_type_tag(hdf5,2,1) ));
-
-//===--- Tests ------------------------------------------------------------===//
-
-//===--- MPI
-
-struct pair_float_int
-{
-  float f; int i;
-};
-
-struct pair_int_int
-{
-  int i1; int i2;
-};
-
-void test_mpi_predefined_types(
-    int *int_buf,
-    long *long_buf1,
-    long *long_buf2,
-    void *void_buf,
-    struct pair_float_int *pfi,
-    struct pair_int_int *pii)
-{
-  char char_buf[255];
-
-  // Layout-compatible scalar types.
-  MPI_Send(int_buf,   1, MPI_INT); // no-warning
-
-  // Null pointer constant.
-  MPI_Send(0,         0, MPI_INT); // no-warning
-  MPI_Send(NULL,      0, MPI_INT); // no-warning
-
-  // Layout-compatible class types.
-  MPI_Send(pfi, 1, MPI_FLOAT_INT); // no-warning
-  MPI_Send(pii, 1, MPI_2INT); // no-warning
-
-  // Layout-incompatible scalar types.
-  MPI_Send(long_buf1, 1, MPI_INT); // expected-warning {{argument type 'long *' doesn't match specified 'mpi' type tag that requires 'int *'}}
-
-  // Layout-incompatible class types.
-  MPI_Send(pii, 1, MPI_FLOAT_INT); // expected-warning {{argument type 'struct pair_int_int *' doesn't match specified 'mpi' type tag}}
-  MPI_Send(pfi, 1, MPI_2INT); // expected-warning {{argument type 'struct pair_float_int *' doesn't match specified 'mpi' type tag}}
-
-  // Layout-incompatible class-scalar types.
-  MPI_Send(long_buf1, 1, MPI_2INT); // expected-warning {{argument type 'long *' doesn't match specified 'mpi' type tag}}
-
-  // Function with two buffers.
-  MPI_Gather(long_buf1, 1, MPI_INT,  // expected-warning {{argument type 'long *' doesn't match specified 'mpi' type tag that requires 'int *'}}
-             long_buf2, 1, MPI_INT); // expected-warning {{argument type 'long *' doesn't match specified 'mpi' type tag that requires 'int *'}}
-
-  // Array buffers should work like pointer buffers.
-  MPI_Send(char_buf,  255, MPI_CHAR); // no-warning
-
-  // Explicit casts should not be dropped.
-  MPI_Send((int *) char_buf,  255, MPI_INT); // no-warning
-  MPI_Send((int *) char_buf,  255, MPI_CHAR); // expected-warning {{argument type 'int *' doesn't match specified 'mpi' type tag that requires 'char *'}}
-
-  // `void*' buffer should never warn.
-  MPI_Send(void_buf,  255, MPI_CHAR); // no-warning
-
-  // We expect that MPI_IN_PLACE is `void*', shouldn't warn.
-  MPI_Gather(MPI_IN_PLACE, 0, MPI_INT,
-             int_buf,      1, MPI_INT);
-
-  // Special handling for MPI_DATATYPE_NULL: buffer pointer should be either
-  // a `void*' pointer or a null pointer constant.
-  MPI_Gather(NULL,    0, MPI_DATATYPE_NULL, // no-warning
-             int_buf, 1, MPI_INT);
-
-  MPI_Gather(int_buf, 0, MPI_DATATYPE_NULL, // expected-warning {{specified mpi type tag requires a null pointer}}
-             int_buf, 1, MPI_INT);
-}
-
-MPI_Datatype my_int_datatype __attribute__(( type_tag_for_datatype(mpi,int) ));
-
-struct S1 { int a; int b; };
-MPI_Datatype my_s1_datatype __attribute__(( type_tag_for_datatype(mpi,struct S1) ));
-
-// Layout-compatible to S1, but should be treated as a different type.
-struct S2 { int a; int b; };
-MPI_Datatype my_s2_datatype __attribute__(( type_tag_for_datatype(mpi,struct S2) ));
-
-enum E1 { Foo };
-MPI_Datatype my_e1_datatype __attribute__(( type_tag_for_datatype(mpi,enum E1) ));
-
-void test_user_types(int *int_buf,
-                     long *long_buf,
-                     struct S1 *s1_buf,
-                     struct S2 *s2_buf,
-                     enum E1 *e1_buf)
-{
-  MPI_Send(int_buf,  1, my_int_datatype); // no-warning
-  MPI_Send(long_buf, 1, my_int_datatype); // expected-warning {{argument type 'long *' doesn't match specified 'mpi' type tag that requires 'int *'}}
-
-  MPI_Send(s1_buf, 1, my_s1_datatype); // no-warning
-  MPI_Send(s1_buf, 1, my_s2_datatype); // expected-warning {{argument type 'struct S1 *' doesn't match specified 'mpi' type tag that requires 'struct S2 *'}}
-
-  MPI_Send(long_buf, 1, my_s1_datatype); // expected-warning {{argument type 'long *' doesn't match specified 'mpi' type tag that requires 'struct S1 *'}}
-  MPI_Send(s1_buf, 1, MPI_INT); // expected-warning {{argument type 'struct S1 *' doesn't match specified 'mpi' type tag that requires 'int *'}}
-
-  MPI_Send(e1_buf, 1, my_e1_datatype); // no-warning
-  MPI_Send(e1_buf, 1, MPI_INT); // expected-warning {{argument type 'enum E1 *' doesn't match specified 'mpi' type tag that requires 'int *'}}
-  MPI_Send(int_buf, 1, my_e1_datatype); // expected-warning {{argument type 'int *' doesn't match specified 'mpi' type tag that requires 'enum E1 *'}}
-}
-
-MPI_Datatype my_unknown_datatype;
-
-void test_not_annotated(int *int_buf,
-                        long *long_buf,
-                        MPI_Datatype type)
-{
-  // Using 'MPI_Datatype's without attributes should not produce warnings.
-  MPI_Send(long_buf, 1, my_unknown_datatype); // no-warning
-  MPI_Send(int_buf, 1, type); // no-warning
-}
-
-struct S1_compat { int a; int b; };
-MPI_Datatype my_s1_compat_datatype
-    __attribute__(( type_tag_for_datatype(mpi, struct S1_compat, layout_compatible) ));
-
-struct S3        { int a; long b; double c; double d; struct S1 s1; };
-struct S3_compat { int a; long b; double c; double d; struct S2 s2; };
-MPI_Datatype my_s3_compat_datatype
-    __attribute__(( type_tag_for_datatype(mpi, struct S3_compat, layout_compatible) ));
-
-struct S4        { char c; };
-struct S4_compat { signed char c; };
-MPI_Datatype my_s4_compat_datatype
-    __attribute__(( type_tag_for_datatype(mpi, struct S4_compat, layout_compatible) ));
-
-union U1        { int a; long b; double c; double d; struct S1 s1; };
-union U1_compat { long b; double c; struct S2 s; int a; double d; };
-MPI_Datatype my_u1_compat_datatype
-    __attribute__(( type_tag_for_datatype(mpi, union U1_compat, layout_compatible) ));
-
-union U2 { int a; long b; double c; struct S1 s1; };
-MPI_Datatype my_u2_datatype
-    __attribute__(( type_tag_for_datatype(mpi, union U2, layout_compatible) ));
-
-void test_layout_compatibility(struct S1 *s1_buf, struct S3 *s3_buf,
-                               struct S4 *s4_buf,
-                               union U1 *u1_buf, union U2 *u2_buf)
-{
-  MPI_Send(s1_buf, 1, my_s1_compat_datatype); // no-warning
-  MPI_Send(s3_buf, 1, my_s3_compat_datatype); // no-warning
-  MPI_Send(s1_buf, 1, my_s3_compat_datatype); // expected-warning {{argument type 'struct S1 *' doesn't match specified 'mpi' type tag}}
-  MPI_Send(s4_buf, 1, my_s4_compat_datatype); // expected-warning {{argument type 'struct S4 *' doesn't match specified 'mpi' type tag}}
-  MPI_Send(u1_buf, 1, my_u1_compat_datatype); // no-warning
-  MPI_Send(u1_buf, 1, my_u2_datatype);        // expected-warning {{argument type 'union U1 *' doesn't match specified 'mpi' type tag}}
-  MPI_Send(u2_buf, 1, my_u1_compat_datatype); // expected-warning {{argument type 'union U2 *' doesn't match specified 'mpi' type tag}}
-}
-
-// There is an MPI_REAL predefined in MPI, but some existing MPI programs do
-// this.
-typedef float real;
-#define MPI_REAL MPI_FLOAT
-
-void test_mpi_real_user_type(real *real_buf, float *float_buf)
-{
-  MPI_Send(real_buf,  1, MPI_REAL);  // no-warning
-  MPI_Send(real_buf,  1, MPI_FLOAT); // no-warning
-  MPI_Send(float_buf, 1, MPI_REAL);  // no-warning
-  MPI_Send(float_buf, 1, MPI_FLOAT); // no-warning
-}
-
-//===--- HDF5
-
-void test_hdf5(char *char_buf,
-               signed char *schar_buf,
-               unsigned char *uchar_buf,
-               int *int_buf,
-               long *long_buf)
-{
-  H5Dwrite(H5T_NATIVE_CHAR,  char_buf);  // no-warning
-#ifdef __CHAR_UNSIGNED__
-  H5Dwrite(H5T_NATIVE_CHAR,  schar_buf); // expected-warning {{argument type 'signed char *' doesn't match specified 'hdf5' type tag that requires 'unsigned char *'}}
-  H5Dwrite(H5T_NATIVE_CHAR,  uchar_buf); // no-warning
-#else
-  H5Dwrite(H5T_NATIVE_CHAR,  schar_buf); // no-warning
-  H5Dwrite(H5T_NATIVE_CHAR,  uchar_buf); // expected-warning {{argument type 'unsigned char *' doesn't match specified 'hdf5' type tag that requires 'signed char *'}}
-#endif
-  H5Dwrite(H5T_NATIVE_SCHAR, schar_buf); // no-warning
-  H5Dwrite(H5T_NATIVE_UCHAR, uchar_buf); // no-warning
-  H5Dwrite(H5T_NATIVE_INT,   int_buf);   // no-warning
-  H5Dwrite(H5T_NATIVE_LONG,  long_buf);  // no-warning
-
-#ifdef __CHAR_UNSIGNED__
-  H5Dwrite(H5T_NATIVE_CHAR,  int_buf);  // expected-warning {{argument type 'int *' doesn't match specified 'hdf5' type tag that requires 'unsigned char *'}}
-#else
-  H5Dwrite(H5T_NATIVE_CHAR,  int_buf);  // expected-warning {{argument type 'int *' doesn't match specified 'hdf5' type tag that requires 'signed char *'}}
-#endif
-  H5Dwrite(H5T_NATIVE_INT,   long_buf); // expected-warning {{argument type 'long *' doesn't match specified 'hdf5' type tag that requires 'int *'}}
-
-  // FIXME: we should warn here, but it will cause false positives because
-  // different kinds may use same magic values.
-  //H5Dwrite(MPI_INT, int_buf);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,160 +0,0 @@
-// RUN: %clang_cc1 -std=c99 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -x c++ -std=c++98 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -std=c99 -fno-signed-char -fsyntax-only -verify %s
-
-struct A {};
-
-typedef struct A *MPI_Datatype;
-
-int wrong1(void *buf, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag )); // expected-error {{attribute requires parameter 1 to be an identifier}}
-
-int wrong2(void *buf, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag(mpi,0,7) )); // expected-error {{attribute parameter 2 is out of bounds}}
-
-int wrong3(void *buf, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag(mpi,3,7) )); // expected-error {{attribute parameter 2 is out of bounds}}
-
-int wrong4(void *buf, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag(mpi,1,0) )); // expected-error {{attribute parameter 3 is out of bounds}}
-
-int wrong5(void *buf, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag(mpi,1,3) )); // expected-error {{attribute parameter 3 is out of bounds}}
-
-int wrong6(void *buf, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag(mpi,0x8000000000000001ULL,1) )); // expected-error {{attribute parameter 2 is out of bounds}}
-
-extern int x;
-
-int wrong7(void *buf, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag(mpi,x,2) )); // expected-error {{attribute requires parameter 2 to be an integer constant}}
-
-int wrong8(void *buf, MPI_Datatype datatype)
-    __attribute__(( pointer_with_type_tag(mpi,1,x) )); // expected-error {{attribute requires parameter 3 to be an integer constant}}
-
-int wrong9 __attribute__(( pointer_with_type_tag(mpi,1,2) )); // expected-error {{attribute only applies to functions and methods}}
-
-int wrong10(double buf, MPI_Datatype type)
-    __attribute__(( pointer_with_type_tag(mpi,1,2) )); // expected-error {{'pointer_with_type_tag' attribute only applies to pointer arguments}}
-
-
-extern struct A datatype_wrong1
-    __attribute__(( type_tag_for_datatype )); // expected-error {{attribute requires parameter 1 to be an identifier}}
-
-extern struct A datatype_wrong2
-    __attribute__(( type_tag_for_datatype(mpi,1,2) )); // expected-error {{expected a type}}
-
-extern struct A datatype_wrong3
-    __attribute__(( type_tag_for_datatype(mpi,not_a_type) )); // expected-error {{unknown type name 'not_a_type'}}
-
-extern struct A datatype_wrong4
-    __attribute__(( type_tag_for_datatype(mpi,int,int) )); // expected-error {{expected identifier}}
-
-extern struct A datatype_wrong5
-    __attribute__(( type_tag_for_datatype(mpi,int,not_a_flag) )); // expected-error {{invalid comparison flag 'not_a_flag'}}
-
-extern struct A datatype_wrong6
-    __attribute__(( type_tag_for_datatype(mpi,int,layout_compatible,not_a_flag) )); // expected-error {{invalid comparison flag 'not_a_flag'}}
-
-
-// Using a tag with kind A in a place where the function requires kind B should
-// warn.
-
-void A_func(void *ptr, void *tag) __attribute__(( pointer_with_type_tag(a,1,2) ));
-
-extern struct A A_tag __attribute__(( type_tag_for_datatype(a,int) ));
-extern struct A B_tag __attribute__(( type_tag_for_datatype(b,int) ));
-
-void C_func(void *ptr, int tag) __attribute__(( pointer_with_type_tag(c,1,2) ));
-
-static const int C_tag __attribute__(( type_tag_for_datatype(c,int) )) = 10;
-static const int D_tag __attribute__(( type_tag_for_datatype(d,int) )) = 20;
-
-void test_tag_mismatch(int *ptr)
-{
-  A_func(ptr, &A_tag); // no-warning
-  A_func(ptr, &B_tag); // expected-warning {{this type tag was not designed to be used with this function}}
-  C_func(ptr, C_tag); // no-warning
-  C_func(ptr, D_tag); // expected-warning {{this type tag was not designed to be used with this function}}
-  C_func(ptr, 10); // no-warning
-  C_func(ptr, 20); // should warn, but may cause false positives
-}
-
-void test_null_pointer()
-{
-  C_func(0, C_tag); // no-warning
-  C_func((void *) 0, C_tag); // no-warning
-  C_func((int *) 0, C_tag); // no-warning
-  C_func((long *) 0, C_tag); // expected-warning {{argument type 'long *' doesn't match specified 'c' type tag that requires 'int *'}}
-}
-
-// Check that we look through typedefs in the special case of allowing 'char'
-// to be matched with 'signed char' or 'unsigned char'.
-void E_func(void *ptr, int tag) __attribute__(( pointer_with_type_tag(e,1,2) ));
-
-typedef char E_char;
-typedef char E_char_2;
-typedef signed char E_char_signed;
-typedef unsigned char E_char_unsigned;
-
-static const int E_tag __attribute__(( type_tag_for_datatype(e,E_char) )) = 10;
-
-void test_char_typedef(char *char_buf,
-                       E_char_2 *e_char_buf,
-                       E_char_signed *e_char_signed_buf,
-                       E_char_unsigned *e_char_unsigned_buf)
-{
-  E_func(char_buf, E_tag);
-  E_func(e_char_buf, E_tag);
-#ifdef __CHAR_UNSIGNED__
-  E_func(e_char_signed_buf, E_tag); // expected-warning {{argument type 'E_char_signed *' (aka 'signed char *') doesn't match specified 'e' type tag that requires 'E_char *' (aka 'char *')}}
-  E_func(e_char_unsigned_buf, E_tag);
-#else
-  E_func(e_char_signed_buf, E_tag);
-  E_func(e_char_unsigned_buf, E_tag); // expected-warning {{argument type 'E_char_unsigned *' (aka 'unsigned char *') doesn't match specified 'e' type tag that requires 'E_char *' (aka 'char *')}}
-#endif
-}
-
-// Tests for argument_with_type_tag.
-
-#define F_DUPFD 10
-#define F_SETLK 20
-
-struct flock { };
-
-static const int F_DUPFD_tag __attribute__(( type_tag_for_datatype(fcntl,int) )) = F_DUPFD;
-static const int F_SETLK_tag __attribute__(( type_tag_for_datatype(fcntl,struct flock *) )) = F_SETLK;
-
-int fcntl(int fd, int cmd, ...) __attribute__(( argument_with_type_tag(fcntl,3,2) ));
-
-void test_argument_with_type_tag(struct flock *f)
-{
-  fcntl(0, F_DUPFD, 10); // no-warning
-  fcntl(0, F_SETLK, f);  // no-warning
-
-  fcntl(0, F_SETLK, 10); // expected-warning {{argument type 'int' doesn't match specified 'fcntl' type tag that requires 'struct flock *'}}
-  fcntl(0, F_DUPFD, f);  // expected-warning {{argument type 'struct flock *' doesn't match specified 'fcntl' type tag that requires 'int'}}
-}
-
-void test_tag_expresssion(int b) {
-  fcntl(0, b ? F_DUPFD : F_SETLK, 10); // no-warning
-  fcntl(0, b + F_DUPFD, 10); // no-warning
-  fcntl(0, (b, F_DUPFD), 10); // expected-warning {{expression result unused}}
-}
-
-// Check that using 64-bit magic values as tags works and tag values do not
-// overflow internally.
-void F_func(void *ptr, unsigned long long tag) __attribute__((pointer_with_type_tag(f,1,2) ));
-
-static const unsigned long long F_tag1 __attribute__(( type_tag_for_datatype(f,int) )) = 0xFFFFFFFFFFFFFFFFULL;
-static const unsigned long long F_tag2 __attribute__(( type_tag_for_datatype(f,float) )) = 0xFFFFFFFFULL;
-
-void test_64bit_magic(int *int_ptr, float *float_ptr)
-{
-  F_func(int_ptr,   0xFFFFFFFFFFFFFFFFULL);
-  F_func(int_ptr,   0xFFFFFFFFULL);         // expected-warning {{argument type 'int *' doesn't match specified 'f' type tag that requires 'float *'}}
-  F_func(float_ptr, 0xFFFFFFFFFFFFFFFFULL); // expected-warning {{argument type 'float *' doesn't match specified 'f' type tag that requires 'int *'}}
-  F_func(float_ptr, 0xFFFFFFFFULL);
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-type-safety.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-typedef struct ompi_datatype_t *MPI_Datatype;
-
-#define OMPI_PREDEFINED_GLOBAL(type, global) ((type) &(global))
-
-#define MPI_FLOAT OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_float)
-#define MPI_INT   OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_int)
-#define MPI_NULL  OMPI_PREDEFINED_GLOBAL(MPI_Datatype, ompi_mpi_null)
-
-extern struct ompi_predefined_datatype_t ompi_mpi_float __attribute__(( type_tag_for_datatype(mpi,float) ));
-extern struct ompi_predefined_datatype_t ompi_mpi_int   __attribute__(( type_tag_for_datatype(mpi,int) ));
-extern struct ompi_predefined_datatype_t ompi_mpi_null  __attribute__(( type_tag_for_datatype(mpi,void,must_be_null) ));
-
-int f(int x) { return x; }
-static const int wrong_init __attribute__(( type_tag_for_datatype(zzz,int) )) = f(100); // expected-error {{'type_tag_for_datatype' attribute requires the initializer to be an integral constant expression}}
-
-//===--- Tests ------------------------------------------------------------===//
-// Check that hidden 'this' is handled correctly.
-
-class C
-{
-public:
-  void f1(void *buf, int count, MPI_Datatype datatype)
-       __attribute__(( pointer_with_type_tag(mpi,5,6) )); // expected-error {{attribute parameter 2 is out of bounds}}
-
-  void f2(void *buf, int count, MPI_Datatype datatype)
-       __attribute__(( pointer_with_type_tag(mpi,2,5) )); // expected-error {{attribute parameter 3 is out of bounds}}
-
-  void f3(void *buf, int count, MPI_Datatype datatype)
-       __attribute__(( pointer_with_type_tag(mpi,1,5) )); // expected-error {{attribute is invalid for the implicit this argument}}
-
-  void f4(void *buf, int count, MPI_Datatype datatype)
-       __attribute__(( pointer_with_type_tag(mpi,2,1) )); // expected-error {{attribute is invalid for the implicit this argument}}
-
-  void MPI_Send(void *buf, int count, MPI_Datatype datatype)
-       __attribute__(( pointer_with_type_tag(mpi,2,4) )); // no-error
-};
-
-// Check that we don't crash on type and value dependent expressions.
-template<int a>
-void value_dep(void *buf, int count, MPI_Datatype datatype)
-     __attribute__(( pointer_with_type_tag(mpi,a,5) )); // expected-error {{attribute requires parameter 2 to be an integer constant}}
-
-class OperatorIntStar
-{
-public:
-  operator int*();
-};
-
-void test1(C *c, int *int_buf)
-{
-  c->MPI_Send(int_buf, 1, MPI_INT); // no-warning
-  c->MPI_Send(int_buf, 1, MPI_FLOAT); // expected-warning {{argument type 'int *' doesn't match specified 'mpi' type tag that requires 'float *'}}
-  c->MPI_Send(0, 0, MPI_INT); // no-warning
-  c->MPI_Send(nullptr, 0, MPI_INT); // no-warning
-
-  OperatorIntStar i;
-  c->MPI_Send(i, 1, MPI_INT); // no-warning
-  c->MPI_Send(i, 1, MPI_FLOAT); // expected-warning {{argument type 'int *' doesn't match specified 'mpi' type tag that requires 'float *'}}
-}
-
-template<typename T>
-void test2(C *c, int *int_buf, T tag)
-{
-  c->MPI_Send(int_buf, 1, tag); // no-warning
-}
-
-void test3(C *c, int *int_buf) {
-  test2(c, int_buf, MPI_INT);
-  test2(c, int_buf, MPI_NULL);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-unreachable.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-unreachable.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-unreachable.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,143 +0,0 @@
-// RUN: %clang %s -fsyntax-only -Xclang -verify -fblocks -Wunreachable-code -Wno-unused-value -Wno-covered-switch-default
-
-int halt() __attribute__((noreturn));
-int live();
-int dead();
-
-void test1() {
-  goto c;
-  d:
-  goto e;       // expected-warning {{will never be executed}}
-  c: ;
-  int i;
-  return;
-  goto b;        // expected-warning {{will never be executed}}
-  goto a;        // expected-warning {{will never be executed}}
-  b:
-  i = 1;
-  a:
-  i = 2;
-  goto f;
-  e:
-  goto d;
-  f: ;
-}
-
-void test2() {
-  int i;
-  switch (live()) {
-  case 1:
-    halt(),
-      dead();   // expected-warning {{will never be executed}}
-
-  case 2:
-    live(), halt(),
-      dead();   // expected-warning {{will never be executed}}
-
-  case 3:
-  live()
-    +           // expected-warning {{will never be executed}}
-    halt();
-  dead();
-
-  case 4:
-  a4:
-    live(),
-      halt();
-    goto a4;    // expected-warning {{will never be executed}}
-
-  case 5:
-    goto a5;
-  c5:
-    dead();     // expected-warning {{will never be executed}}
-    goto b5;
-  a5:
-    live(),
-      halt();
-  b5:
-    goto c5;
-
-  case 6:
-    if (live())
-      goto e6;
-    live(),
-      halt();
-  d6:
-    dead();     // expected-warning {{will never be executed}}
-    goto b6;
-  c6:
-    dead();
-    goto b6;
-  e6:
-    live(),
-      halt();
-  b6:
-    goto c6;
-  case 7:
-    halt()
-      +
-      dead();   // expected-warning {{will never be executed}}
-    -           // expected-warning {{will never be executed}}
-      halt();
-  case 8:
-    i
-      +=        // expected-warning {{will never be executed}}
-      halt();
-  case 9:
-    halt()
-      ?         // expected-warning {{will never be executed}}
-      dead() : dead();
-  case 10:
-    (           // expected-warning {{will never be executed}}
-      float)halt();
-  case 11: {
-    int a[5];
-    live(),
-      a[halt()
-        ];      // expected-warning {{will never be executed}}
-  }
-  }
-}
-
-enum Cases { C1, C2, C3 };
-int test_enum_cases(enum Cases C) {
-  switch (C) {
-    case C1:
-    case C2:
-    case C3:
-      return 1;
-    default: {
-      int i = 0; // expected-warning{{will never be executed}}
-      ++i;
-      return i;
-    }
-  }  
-}
-
-// Handle unreachable code triggered by macro expansions.
-void __myassert_rtn(const char *, const char *, int, const char *) __attribute__((__noreturn__));
-
-#define myassert(e) \
-    (__builtin_expect(!(e), 0) ? __myassert_rtn(__func__, __FILE__, __LINE__, #e) : (void)0)
-
-void test_assert() {
-  myassert(0 && "unreachable");
-  return; // no-warning
-}
-
-// Test case for PR 9774.  Tests that dead code in macros aren't warned about.
-#define MY_MAX(a,b)     ((a) >= (b) ? (a) : (b))
-void PR9774(int *s) {
-    for (int i = 0; i < MY_MAX(2, 3); i++) // no-warning
-        s[i] = 0;
-}
-
-// Test case for <rdar://problem/11005770>.  We should treat code guarded
-// by 'x & 0' and 'x * 0' as unreachable.
-void calledFun();
-void test_mul_and_zero(int x) {
-  if (x & 0) calledFun(); // expected-warning {{will never be executed}}
-  if (0 & x) calledFun(); // expected-warning {{will never be executed}}
-  if (x * 0) calledFun(); // expected-warning {{will never be executed}}
-  if (0 * x) calledFun(); // expected-warning {{will never be executed}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-function.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-function.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-function.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wused-but-marked-unused -Wunused-function -Wunneeded-internal-declaration -verify %s
-// RUN: %clang_cc1 -fsyntax-only -verify -Wunused %s
-// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
-
-void foo() {}
-static void f2() {} 
-static void f1() {f2();} // expected-warning{{unused}}
-
-static int f0() { return 17; } // expected-warning{{not needed and will not be emitted}}
-int x = sizeof(f0());
-
-static void f3();
-extern void f3() { } // expected-warning{{unused}}
-
-// FIXME: This will trigger a warning when it should not.
-// Update once PR6281 is fixed.
-//inline static void f4();
-//void f4() { }
-
-static void __attribute__((used)) f5() {}
-static void f6();
-static void __attribute__((used)) f6();
-static void f6() {};
-
-static void f7(void);
-void f8(void(*a0)(void));
-void f9(void) { f8(f7); }
-static void f7(void) {}
-
-__attribute__((unused)) static void bar(void);
-void bar(void) { }
-
-__attribute__((constructor)) static void bar2(void);
-void bar2(void) { }
-
-__attribute__((destructor)) static void bar3(void);
-void bar3(void) { }
-
-static void f10(void); // expected-warning{{unused}}
-static void f10(void);
-
-static void f11(void);
-static void f11(void) { }  // expected-warning{{unused}}
-
-static void f12(void) { }  // expected-warning{{unused}}
-static void f12(void);
-
-// PR7923
-static void unused(void) { unused(); }  // expected-warning{{not needed and will not be emitted}}
-
-// rdar://8728293
-static void cleanupMalloc(char * const * const allocation) { }
-void f13(void) {
-  char * const __attribute__((cleanup(cleanupMalloc))) a;
-  (void)a;
-}
-
-// rdar://12233989
-extern void a(void) __attribute__((unused));
-extern void b(void) __attribute__((unused));
-
-void b(void)
-{
-}
-void a(void)
-{
-  b();
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-label.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-label.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-label.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-label -verify %s
-
-void f() {
-  a:
-  goto a;
-  b: // expected-warning{{unused}}
-  c: __attribute__((unused));
-  d: __attribute__((noreturn)); // expected-warning {{'noreturn' attribute only applies to functions}}
-  goto d;
-  return;
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-parameters.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-parameters.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-parameters.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -Wunused-parameter %s 2>&1 | FileCheck %s
-// RUN: %clang_cc1 -fblocks -fsyntax-only -Wunused %s 2>&1 | FileCheck -check-prefix=CHECK-unused %s
-
-int f0(int x,
-       int y,
-       int z __attribute__((unused))) {
-  return x;
-}
-
-void f1() {
-  (void)^(int x,
-          int y,
-          int z __attribute__((unused))) { return x; };
-}
-
-// Used when testing '-Wunused' to see that we only emit one diagnostic, and no
-// warnings for the above cases.
-static void achor() {};
-
-// CHECK: 5:12: warning: unused parameter 'y'
-// CHECK: 12:15: warning: unused parameter 'y'
-// CHECK-unused: 1 warning generated
-
-// RUN: %clang_cc1 -fblocks -fsyntax-only -Weverything %s 2>&1 | FileCheck -check-prefix=CHECK-everything %s
-// RUN: %clang_cc1 -fblocks -fsyntax-only -Weverything -Werror %s 2>&1 | FileCheck -check-prefix=CHECK-everything-error %s
-// RUN: %clang_cc1 -fblocks -fsyntax-only -Weverything -Wno-unused %s 2>&1 | FileCheck -check-prefix=CHECK-everything-no-unused %s
-// CHECK-everything: 6 warnings generated
-// CHECK-everything-error: 5 errors generated
-// CHECK-everything-no-unused: 5 warnings generated
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-value.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-value.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-value.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wunused-value -Wunused-label %s
-// RUN: %clang_cc1 -fsyntax-only -verify -Wunused %s
-// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
-
-int i = 0;
-int j = 0;
-
-void foo();
-
-// PR4806
-void pr4806() {
-  1,foo();          // expected-warning {{expression result unused}}
-
-  // other
-  foo();
-  i;                // expected-warning {{expression result unused}}
-
-  i,foo();          // expected-warning {{expression result unused}}
-  foo(),i;          // expected-warning {{expression result unused}}
-
-  i,j,foo();        // expected-warning {{expression result unused}} expected-warning {{expression result unused}}
-  i,foo(),j;        // expected-warning {{expression result unused}} expected-warning {{expression result unused}}
-  foo(),i,j;        // expected-warning {{expression result unused}} expected-warning {{expression result unused}}
-
-  i++;
-
-  i++,foo();
-  foo(),i++;
-
-  i++,j,foo();      // expected-warning {{expression result unused}}
-  i++,foo(),j;      // expected-warning {{expression result unused}}
-  foo(),i++,j;      // expected-warning {{expression result unused}}
-
-  i,j++,foo();      // expected-warning {{expression result unused}}
-  i,foo(),j++;      // expected-warning {{expression result unused}}
-  foo(),i,j++;      // expected-warning {{expression result unused}}
-
-  i++,j++,foo();
-  i++,foo(),j++;
-  foo(),i++,j++;
-
-  {};
-  ({});
-  ({}),foo();
-  foo(),({});
-
-  (int)1U;          // expected-warning {{expression result unused}}
-  (void)1U;
-
-  // pointer to volatile has side effect (thus no warning)
-  int* pi = &i;
-  volatile int* pj = &j;
-  *pi;              // expected-warning {{expression result unused}}
-  *pj;
-
-  foo_label:        // expected-warning {{unused label}}
-  i;                // expected-warning {{expression result unused}}
-}
-
-// Don't warn about unused '||', '&&' expressions that contain assignments.
-int test_logical_foo1();
-int test_logical_foo2();
-int test_logical_foo3();
-int test_logical_bar() {
-  int x = 0;
-  (x = test_logical_foo1()) ||  // no-warning
-  (x = test_logical_foo2()) ||  // no-warning
-  (x = test_logical_foo3());    // no-warning
-
-  x || test_logical_foo1();     // no-warning
-
-  return x;
-}
-
-// PR8282
-void conditional_for_control_flow(int cond, int x, int y)
-{
-    cond? y++ : x; // no-warning
-    cond? y : ++x; // no-warning
-    cond? (x |= y) : ++x; // no-warning
-    cond? y : x; // expected-warning {{expression result unused}}
-}
-
-struct s0 { int f0; };
-
-void f0(int a);
-void f1(struct s0 *a) {
-  // rdar://8139785
-  f0((int)(a->f0 + 1, 10)); // expected-warning {{expression result unused}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-variables-werror.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-variables-werror.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-variables-werror.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -Werror -verify %s
-
-void f() {
-  int i;  // expected-error{{unused}}
-  int j;  // expected-error{{unused}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-variables.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-variables.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-unused-variables.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -fblocks -verify %s
-
-struct s0 {
-	unsigned int	i;
-};
-
-int proto(int a, int b);
-
-void f0(void) {
-	int	a __attribute__((unused)),
-		b; // expected-warning{{unused}}
-	return;
-}
-
-void f1(void) {
-	int	i;
-	(void)sizeof(i);
-	return;
-}
-
-// PR5933
-int f2() {
-  int X = 4;  // Shouldn't have a bogus 'unused variable X' warning.
-  return Y + X; // expected-error {{use of undeclared identifier 'Y'}}
-}
-
-int f3() {
-  int X1 = 4; 
-  (void)(Y1 + X1); // expected-error {{use of undeclared identifier 'Y1'}}
-  (void)(^() { int X = 4; }); // expected-warning{{unused}}
-  (void)(^() { int X = 4; return Y + X; }); // expected-error {{use of undeclared identifier 'Y'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-vla.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-vla.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-vla.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -std=c99 -fsyntax-only -verify -Wvla %s
-// RUN: %clang_cc1 -std=c89 -fsyntax-only -verify -Wvla %s
-
-void test1(int n) {
-  int v[n]; // expected-warning {{variable length array used}}
-}
-
-void test2(int n, int v[n]) { // expected-warning {{variable length array used}}
-}
-
-void test3(int n, int v[n]); // expected-warning {{variable length array used}}
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/warn-write-strings.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/warn-write-strings.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/warn-write-strings.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -fconst-strings %s
-
-// PR4804
-char* x = "foo"; // expected-warning {{initializing 'char *' with an expression of type 'const char [4]' discards qualifiers}}
-
-// PR7192
-#include <stddef.h>
-void test(wchar_t *dst) {
-  dst[0] = 0;  // Ok.
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/wchar.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/wchar.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/wchar.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang %s -fsyntax-only -Xclang -verify
-// RUN: %clang %s -fsyntax-only -fshort-wchar -Xclang -verify -DSHORT_WCHAR
-
-typedef __WCHAR_TYPE__ wchar_t;
-
-#if defined(_WIN32) || defined(_M_IX86) || defined(__CYGWIN__) \
- || defined(_M_X64) || defined(SHORT_WCHAR)
-  #define WCHAR_T_TYPE unsigned short
-#elif defined(__arm) || defined(__aarch64__)
-  #define WCHAR_T_TYPE unsigned int
-#elif defined(__sun) || defined(__AuroraUX__)
-  #define WCHAR_T_TYPE long
-#else /* Solaris or AuroraUX. */
-  #define WCHAR_T_TYPE int
-#endif
- 
-int check_wchar_size[sizeof(*L"") == sizeof(wchar_t) ? 1 : -1];
- 
-void foo() {
-  WCHAR_T_TYPE t1[] = L"x";
-  wchar_t tab[] = L"x";
-  WCHAR_T_TYPE t2[] = "x";     // expected-error {{initializer}}
-  char t3[] = L"x";   // expected-error {{initializer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/Sema/weak-import-on-enum.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/weak-import-on-enum.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/weak-import-on-enum.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -triple x86_64-apple-darwin %s
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// rdar://10277579
-
-enum __attribute__((deprecated)) __attribute__((weak_import)) A {
-    a0
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/x86-attr-force-align-arg-pointer.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/x86-attr-force-align-arg-pointer.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/x86-attr-force-align-arg-pointer.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin10 -fsyntax-only -verify %s
-
-int a __attribute__((force_align_arg_pointer)); // expected-warning{{attribute only applies to functions}}
-
-// It doesn't matter where the attribute is located.
-void b(void) __attribute__((force_align_arg_pointer));
-void __attribute__((force_align_arg_pointer)) c(void);
-
-// Functions only have to be declared force_align_arg_pointer once.
-void b(void) {}
-
-// It doesn't matter which declaration has the attribute.
-void d(void);
-void __attribute__((force_align_arg_pointer)) d(void) {}
-
-// Attribute is ignored on function pointer types.
-void (__attribute__((force_align_arg_pointer)) *p)();
-typedef void (__attribute__((__force_align_arg_pointer__)) *p2)();
-// Attribute is also ignored on function typedefs.
-typedef void __attribute__((force_align_arg_pointer)) e(void);
-

Modified: trunk/contrib/llvm/tools/clang/test/Sema/x86-builtin-palignr.c
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Sema/x86-builtin-palignr.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Sema/x86-builtin-palignr.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -ffreestanding -fsyntax-only -target-feature +ssse3 -target-feature +mmx -verify -triple x86_64-pc-linux-gnu %s
-// RUN: %clang_cc1 -ffreestanding -fsyntax-only -target-feature +ssse3 -target-feature +mmx -verify -triple i686-apple-darwin10 %s
-
-#include <tmmintrin.h>
-
-__m64 test1(__m64 a, __m64 b, int c) {
-   // FIXME: The "incompatible result type" error is due to pr10112 and should
-   // be removed when that is fixed.
-   return _mm_alignr_pi8(a, b, c); // expected-error {{argument to '__builtin_ia32_palignr' must be a constant integer}} expected-error {{incompatible result type}}
-}
-
-int test2(int N) {
- __m128i white2;
- white2 = __builtin_ia32_pslldqi128(white2, N); // expected-error {{argument to '__builtin_ia32_pslldqi128' must be a constant integer}}
- return 0;
-} 
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCUDA/config-type.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCUDA/config-type.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCUDA/config-type.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void cudaConfigureCall(unsigned gridSize, unsigned blockSize); // expected-error {{must have scalar return type}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCUDA/cuda.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCUDA/cuda.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCUDA/cuda.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-/* Minimal declarations for CUDA support.  Testing purposes only. */
-
-#include <stddef.h>
-
-#define __constant__ __attribute__((constant))
-#define __device__ __attribute__((device))
-#define __global__ __attribute__((global))
-#define __host__ __attribute__((host))
-#define __shared__ __attribute__((shared))
-
-struct dim3 {
-  unsigned x, y, z;
-  __host__ __device__ dim3(unsigned x, unsigned y = 1, unsigned z = 1) : x(x), y(y), z(z) {}
-};
-
-typedef struct cudaStream *cudaStream_t;
-
-int cudaConfigureCall(dim3 gridSize, dim3 blockSize, size_t sharedSize = 0,
-                      cudaStream_t stream = 0);

Modified: trunk/contrib/llvm/tools/clang/test/SemaCUDA/function-target.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCUDA/function-target.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCUDA/function-target.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#include "cuda.h"
-
-__host__ void h1h(void);
-__device__ void h1d(void); // expected-note {{candidate function not viable: call to __device__ function from __host__ function}}
-__host__ __device__ void h1hd(void);
-__global__ void h1g(void);
-
-struct h1ds { // expected-note {{requires 1 argument}}
-  __device__ h1ds(); // expected-note {{candidate constructor not viable: call to __device__ function from __host__ function}}
-};
-
-__host__ void h1(void) {
-  h1h();
-  h1d(); // expected-error {{no matching function}}
-  h1hd();
-  h1g<<<1, 1>>>();
-  h1ds x; // expected-error {{no matching constructor}}
-}
-
-__host__ void d1h(void); // expected-note {{candidate function not viable: call to __host__ function from __device__ function}}
-__device__ void d1d(void);
-__host__ __device__ void d1hd(void);
-__global__ void d1g(void); // expected-note {{'d1g' declared here}}
-
-__device__ void d1(void) {
-  d1h(); // expected-error {{no matching function}}
-  d1d();
-  d1hd();
-  d1g<<<1, 1>>>(); // expected-error {{reference to __global__ function 'd1g' in __device__ function}}
-}
-
-__host__ void hd1h(void); // expected-note {{candidate function not viable: call to __host__ function from __host__ __device__ function}}
-__device__ void hd1d(void); // expected-note {{candidate function not viable: call to __device__ function from __host__ __device__ function}}
-__host__ __device__ void hd1hd(void);
-__global__ void hd1g(void); // expected-note {{'hd1g' declared here}}
-
-__host__ __device__ void hd1(void) {
-  hd1h(); // expected-error {{no matching function}}
-  hd1d(); // expected-error {{no matching function}}
-  hd1hd();
-  hd1g<<<1, 1>>>(); // expected-error {{reference to __global__ function 'hd1g' in __host__ __device__ function}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCUDA/kernel-call.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCUDA/kernel-call.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCUDA/kernel-call.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#include "cuda.h"
-
-__global__ void g1(int x) {}
-
-template <typename T> void t1(T arg) {
-  g1<<<arg, arg>>>(1);
-}
-
-void h1(int x) {}
-int h2(int x) { return 1; }
-
-int main(void) {
-  g1<<<1, 1>>>(42);
-  g1(42); // expected-error {{call to global function g1 not configured}}
-  g1<<<1>>>(42); // expected-error {{too few execution configuration arguments to kernel function call}}
-  g1<<<1, 1, 0, 0, 0>>>(42); // expected-error {{too many execution configuration arguments to kernel function call}}
-
-  t1(1);
-
-  h1<<<1, 1>>>(42); // expected-error {{kernel call to non-global function h1}}
-
-  int (*fp)(int) = h2;
-  fp<<<1, 1>>>(42); // expected-error {{must have void return type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCUDA/qualifiers.cu
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCUDA/qualifiers.cu	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCUDA/qualifiers.cu	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#include "cuda.h"
-
-__global__ void g1(int x) {}
-__global__ int g2(int x) { // expected-error {{must have void return type}}
-  return 1;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/2008-01-11-BadWarning.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/2008-01-11-BadWarning.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/2008-01-11-BadWarning.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
-// expected-no-diagnostics
-// rdar://5683899
-void** f(void **Buckets, unsigned NumBuckets) {
-  return Buckets + NumBuckets;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/array-bounds-system-header.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/array-bounds-system-header.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/array-bounds-system-header.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// "System header" for testing that -Warray-bounds is properly suppressed in
-// certain cases.
-
-#define BAD_MACRO_1 \
-    int i[3]; \
-    i[3] = 5
-#define BAD_MACRO_2(_b, _i) \
-    (_b)[(_i)] = 5
-#define QUESTIONABLE_MACRO(_a) \
-    sizeof(_a) > 3 ? (_a)[3] = 5 : 5
-#define NOP(x) (x)

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = []

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/malloc.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/malloc.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/malloc.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-extern "C" {
-extern void *malloc (__SIZE_TYPE__ __size) throw () __attribute__ ((__malloc__)) ;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/warn-new-overaligned-3.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/warn-new-overaligned-3.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/warn-new-overaligned-3.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-#pragma GCC system_header
-
-// This header file pretends to be <new> from the system library, for the
-// purpose of the over-aligned warnings test.
-
-void* operator new(unsigned long) {
-  return 0;
-}
-void* operator new[](unsigned long) {
-  return 0;
-}
-
-void* operator new(unsigned long, void *) {
-  return 0;
-}
-
-void* operator new[](unsigned long, void *) {
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/warn-unused-variables.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/warn-unused-variables.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/Inputs/warn-unused-variables.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// Verify that we don't warn about variables of internal-linkage type in
-// headers, as the use may be in another TU.
-namespace PR15558 {
-namespace {
-class A {};
-}
-
-class B {
-  static A a;
-};
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibility-cxx98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibility-cxx98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibility-cxx98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -std=c++98 -Wmicrosoft -verify -fms-compatibility -fexceptions -fcxx-exceptions
-
-
-//MSVC allows forward enum declaration
-enum ENUM; // expected-warning {{forward references to 'enum' types are a Microsoft extension}}
-ENUM *var = 0;     
-ENUM var2 = (ENUM)3;
-enum ENUM1* var3 = 0;// expected-warning {{forward references to 'enum' types are a Microsoft extension}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,180 +0,0 @@
-// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -std=c++11 -Wmicrosoft -verify -fms-compatibility -fexceptions -fcxx-exceptions
-
-
-typedef unsigned short char16_t;
-typedef unsigned int char32_t;
-
-typename decltype(3) a; // expected-warning {{expected a qualified name after 'typename'}}
-
-namespace ms_conversion_rules {
-
-void f(float a);
-void f(int a);
-
-void test()
-{
-    long a = 0;
-    f((long)0);
-	f(a);
-}
-
-}
-
-
-
-namespace ms_protected_scope {
-  struct C { C(); };
-
-  int jump_over_variable_init(bool b) {
-    if (b)
-      goto foo; // expected-warning {{goto into protected scope}}
-    C c; // expected-note {{jump bypasses variable initialization}}
-  foo:
-    return 1;
-  }
-
-struct Y {
-  ~Y();
-};
-
-void jump_over_var_with_dtor() {
-  goto end; // expected-warning{{goto into protected scope}}
-  Y y; // expected-note {{jump bypasses variable with a non-trivial destructor}}
- end:
-    ;
-}
-
-  void jump_over_variable_case(int c) {
-    switch (c) {
-    case 0:
-      int x = 56; // expected-note {{jump bypasses variable initialization}}
-    case 1:       // expected-error {{switch case is in protected scope}}
-      x = 10;
-    }
-  }
-
- 
-void exception_jump() {
-  goto l2; // expected-error {{goto into protected scope}}
-  try { // expected-note {{jump bypasses initialization of try block}}
-     l2: ;
-  } catch(int) {
-  }
-}
-
-int jump_over_indirect_goto() {
-  static void *ps[] = { &&a0 };
-  goto *&&a0; // expected-warning {{goto into protected scope}}
-  int a = 3; // expected-note {{jump bypasses variable initialization}}
- a0:
-  return 0;
-}
-  
-}
-
-namespace PR11826 {
-  struct pair {
-    pair(int v) { }
-    void operator=(pair&& rhs) { }
-  };
-  void f() {
-    pair p0(3);
-    pair p = p0;
-  }
-}
-
-namespace PR11826_for_symmetry {
-  struct pair {
-    pair(int v) { }
-    pair(pair&& rhs) { }
-  };
-  void f() {
-    pair p0(3);
-    pair p(4);
-    p = p0;
-  }
-}
-
-namespace ms_using_declaration_bug {
-
-class A {
-public: 
-  int f(); 
-};
-
-class B : public A {
-private:   
-  using A::f;
-};
-
-class C : public B { 
-private:   
-  using B::f; // expected-warning {{using declaration referring to inaccessible member 'ms_using_declaration_bug::B::f' (which refers to accessible member 'ms_using_declaration_bug::A::f') is a Microsoft compatibility extension}}
-};
-
-}
-
-
-namespace MissingTypename {
-
-template<class T> class A {
-public:
-	 typedef int TYPE;
-};
-
-template<class T> class B {
-public:
-	 typedef int TYPE;
-};
-
-
-template<class T, class U>
-class C : private A<T>, public B<U> {
-public:
-   typedef A<T> Base1;
-   typedef B<U> Base2;
-   typedef A<U> Base3;
-
-   A<T>::TYPE a1; // expected-warning {{missing 'typename' prior to dependent type name}}
-   Base1::TYPE a2; // expected-warning {{missing 'typename' prior to dependent type name}}
-
-   B<U>::TYPE a3; // expected-warning {{missing 'typename' prior to dependent type name}}
-   Base2::TYPE a4; // expected-warning {{missing 'typename' prior to dependent type name}}
-
-   A<U>::TYPE a5; // expected-error {{missing 'typename' prior to dependent type name}}
-   Base3::TYPE a6; // expected-error {{missing 'typename' prior to dependent type name}}
- };
-
-class D {
-public:
-    typedef int Type;
-};
-
-template <class T>
-void function_missing_typename(const T::Type param)// expected-warning {{missing 'typename' prior to dependent type name}}
-{
-    const T::Type var = 2; // expected-warning {{missing 'typename' prior to dependent type name}}
-}
-
-template void function_missing_typename<D>(const D::Type param);
-
-}
-
-enum ENUM2 {
-	ENUM2_a = (enum ENUM2) 4,
-	ENUM2_b = 0x9FFFFFFF, // expected-warning {{enumerator value is not representable in the underlying type 'int'}}
-	ENUM2_c = 0x100000000 // expected-warning {{enumerator value is not representable in the underlying type 'int'}}
-};
-
-
-namespace PR11791 {
-  template<class _Ty>
-  void del(_Ty *_Ptr) {
-    _Ptr->~_Ty();  // expected-warning {{pseudo-destructors on type void are a Microsoft extension}}
-  }
-
-  void f() {
-    int* a = 0;
-    del((void*)a);  // expected-note {{in instantiation of function template specialization}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibilityNoExceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibilityNoExceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftCompatibilityNoExceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-compatibility
-// expected-no-diagnostics
-
-// PR13153
-namespace std {}
-class type_info {};
-void f() {
-  (void)typeid(int);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftExtensions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftExtensions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/MicrosoftExtensions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,335 +0,0 @@
-// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wmicrosoft -Wc++11-extensions -Wno-long-long -verify -fms-extensions -fexceptions -fcxx-exceptions
-
-
-// ::type_info is predeclared with forward class declartion
-void f(const type_info &a);
-
-
-// Microsoft doesn't validate exception specification.
-namespace microsoft_exception_spec {
-
-void foo(); // expected-note {{previous declaration}}
-void foo() throw(); // expected-warning {{exception specification in declaration does not match previous declaration}}
-
-void r6() throw(...); // expected-note {{previous declaration}}
-void r6() throw(int); // expected-warning {{exception specification in declaration does not match previous declaration}}
-
-struct Base {
-  virtual void f2();
-  virtual void f3() throw(...);
-};
-
-struct Derived : Base {
-  virtual void f2() throw(...);
-  virtual void f3();
-};
-
-class A {
-  virtual ~A() throw();  // expected-note {{overridden virtual function is here}}
-};
-
-class B : public A {
-  virtual ~B();  // expected-warning {{exception specification of overriding function is more lax than base version}}
-};
-
-}
-
-// MSVC allows type definition in anonymous union and struct
-struct A
-{
-  union 
-  {
-    int a;
-    struct B  // expected-warning {{types declared in an anonymous union are a Microsoft extension}}
-    { 
-      int c;
-    } d;
-
-    union C   // expected-warning {{types declared in an anonymous union are a Microsoft extension}}
-    {
-      int e;
-      int ee;
-    } f;
-
-    typedef int D;  // expected-warning {{types declared in an anonymous union are a Microsoft extension}}
-    struct F;  // expected-warning {{types declared in an anonymous union are a Microsoft extension}}
-  };
-
-  struct
-  {
-    int a2;
-
-    struct B2  // expected-warning {{types declared in an anonymous struct are a Microsoft extension}}
-    {
-      int c2;
-    } d2;
-    
-	union C2  // expected-warning {{types declared in an anonymous struct are a Microsoft extension}}
-    {
-      int e2;
-      int ee2;
-    } f2;
-
-    typedef int D2;  // expected-warning {{types declared in an anonymous struct are a Microsoft extension}}
-    struct F2;  // expected-warning {{types declared in an anonymous struct are a Microsoft extension}}
-  };
-};
-
-// __stdcall handling
-struct M {
-    int __stdcall addP();
-    float __stdcall subtractP(); 
-};
-
-// __unaligned handling
-typedef char __unaligned *aligned_type;
-
-
-template<typename T> void h1(T (__stdcall M::* const )()) { }
-
-void m1() {
-  h1<int>(&M::addP);
-  h1(&M::subtractP);
-} 
-
-
-
-
-
-void f(long long);
-void f(int);
- 
-int main()
-{
-  // This is an ambiguous call in standard C++.
-  // This calls f(long long) in Microsoft mode because LL is always signed.
-  f(0xffffffffffffffffLL);
-  f(0xffffffffffffffffi64);
-}
-
-// Enumeration types with a fixed underlying type.
-const int seventeen = 17;
-typedef int Int;
-
-struct X0 {
-  enum E1 : Int { SomeOtherValue } field; // expected-warning{{enumeration types with a fixed underlying type are a C++11 extension}}
-  enum E1 : seventeen;
-};
-
-enum : long long {  // expected-warning{{enumeration types with a fixed underlying type are a C++11 extension}}
-  SomeValue = 0x100000000
-};
-
-
-class AAA {
-__declspec(dllimport) void f(void) { }
-void f2(void);
-};
-
-__declspec(dllimport) void AAA::f2(void) { // expected-error {{dllimport attribute can be applied only to symbol}}
-
-}
-
-
-
-template <class T>
-class BB {
-public:
-   void f(int g = 10 ); // expected-note {{previous definition is here}}
-};
-
-template <class T>
-void BB<T>::f(int g = 0) { } // expected-warning {{redefinition of default argument}}
-
-
-
-extern void static_func();
-void static_func(); // expected-note {{previous declaration is here}}
-
-
-static void static_func() // expected-warning {{static declaration of 'static_func' follows non-static declaration}}
-{
-
-}
-
-long function_prototype(int a);
-long (*function_ptr)(int a);
-
-void function_to_voidptr_conv() {
-   void *a1 = function_prototype;
-   void *a2 = &function_prototype;
-   void *a3 = function_ptr;
-}
-
-
-void pointer_to_integral_type_conv(char* ptr) {
-   char ch = (char)ptr;
-   short sh = (short)ptr;
-   ch = (char)ptr;
-   sh = (short)ptr;
-} 
-
-
-namespace friend_as_a_forward_decl {
-
-class A {
-  class Nested {
-    friend class B;
-    B* b;
-  };
-  B* b;
-};
-B* global_b;
-
-
-void f()
-{
-  class Local {
-    friend class Z;
-    Z* b;
-  };
-  Z* b;
-}
-
-}
-
-struct PR11150 {
-  class X {
-    virtual void f() = 0;
-  };
-
-  int array[__is_abstract(X)? 1 : -1];
-};
-
-void f() { int __except = 0; }
-
-void ::f(); // expected-warning{{extra qualification on member 'f'}}
-
-class C {
-  C::C(); // expected-warning{{extra qualification on member 'C'}}
-};
-
-struct StructWithProperty {
-  __declspec(property(get=GetV)) int V1;
-  __declspec(property(put=SetV)) int V2;
-  __declspec(property(get=GetV, put=SetV_NotExist)) int V3;
-  __declspec(property(get=GetV_NotExist, put=SetV)) int V4;
-  __declspec(property(get=GetV, put=SetV)) int V5;
-
-  int GetV() { return 123; }
-  void SetV(int i) {}
-};
-void TestProperty() {
-  StructWithProperty sp;
-  int i = sp.V2; // expected-error{{no getter defined for property 'V2'}}
-  sp.V1 = 12; // expected-error{{no setter defined for property 'V1'}}
-  int j = sp.V4; // expected-error{{no member named 'GetV_NotExist' in 'StructWithProperty'}} expected-error{{cannot find suitable getter for property 'V4'}}
-  sp.V3 = 14; // expected-error{{no member named 'SetV_NotExist' in 'StructWithProperty'}} expected-error{{cannot find suitable setter for property 'V3'}}
-  int k = sp.V5;
-  sp.V5 = k++;
-}
-
-/* 4 tests for PseudoObject, begin */
-struct SP1
-{
-  bool operator()() { return true; }
-};
-struct SP2
-{
-  __declspec(property(get=GetV)) SP1 V;
-  SP1 GetV() { return SP1(); }
-};
-void TestSP2() {
-  SP2 sp2;
-  bool b = sp2.V();
-}
-
-struct SP3 {
-  template <class T>
-  void f(T t) {}
-};
-template <class T>
-struct SP4
-{
-  __declspec(property(get=GetV)) int V;
-  int GetV() { return 123; }
-  void f() { SP3 s2; s2.f(V); }
-};
-void TestSP4() {
-  SP4<int> s;
-  s.f();
-}
-
-template <class T>
-struct SP5
-{
-  __declspec(property(get=GetV)) T V;
-  int GetV() { return 123; }
-  void f() { int *p = new int[V]; }
-};
-
-template <class T>
-struct SP6
-{
-public:
-  __declspec(property(get=GetV)) T V;
-  T GetV() { return 123; }
-  void f() { int t = V; }
-};
-void TestSP6() {
-  SP6<int> c;
-  c.f();
-}
-/* 4 tests for PseudoObject, end */
-
-// Property access: explicit, implicit, with Qualifier
-struct SP7 {
-  __declspec(property(get=GetV, put=SetV)) int V;
-  int GetV() { return 123; }
-  void SetV(int v) {}
-
-  void ImplicitAccess() { int i = V; V = i; }
-  void ExplicitAccess() { int i = this->V; this->V = i; }
-};
-struct SP8: public SP7 {
-  void AccessWithQualifier() { int i = SP7::V; SP7::V = i; }
-};
-
-// Property usage
-template <class T>
-struct SP9 {
-  __declspec(property(get=GetV, put=SetV)) T V;
-  T GetV() { return 0; }
-  void SetV(T v) {}
-  void f() { V = this->V; V < this->V; }
-  void g() { V++; }
-  void h() { V*=2; }
-};
-struct SP10 {
-  SP10(int v) {}
-  bool operator<(const SP10& v) { return true; }
-  SP10 operator*(int v) { return *this; }
-  SP10 operator+(int v) { return *this; }
-  SP10& operator=(const SP10& v) { return *this; }
-};
-void TestSP9() {
-  SP9<int> c;
-  int i = c.V; // Decl initializer
-  i = c.V; // Binary op operand
-  c.SetV(c.V); // CallExpr arg
-  int *p = new int[c.V + 1]; // Array size
-  p[c.V] = 1; // Array index
-
-  c.V = 123; // Setter
-
-  c.V++; // Unary op operand
-  c.V *= 2; // Unary op operand
-
-  SP9<int*> c2;
-  c2.V[0] = 123; // Array
-
-  SP9<SP10> c3;
-  c3.f(); // Overloaded binary op operand
-  c3.g(); // Overloaded incdec op operand
-  c3.h(); // Overloaded unary op operand
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10177.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10177.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10177.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-template<typename T, typename U, U> using alias_ref = T;
-template<typename T, typename U, U> void func_ref() {}
-template<typename T, typename U, U> struct class_ref {};
-
-template<int N>
-struct U {
-  static int a;
-};
-
-template<int N> struct S; // expected-note 2{{here}}
-
-template<int N>
-int U<N>::a = S<N>::kError; // expected-error 2{{undefined}}
-
-template<typename T>
-void f() {
-  // FIXME: The standard suggests that U<0>::a is odr-used by this expression,
-  // but it's not entirely clear that's the right behaviour.
-  (void)alias_ref<int, int&, U<0>::a>();
-  (void)func_ref<int, int&, U<1>::a>(); // expected-note {{here}}
-  (void)class_ref<int, int&, U<2>::a>(); // expected-note {{here}}
-};
-
-int main() {
-  f<int>(); // expected-note 2{{here}}
-}
-
-namespace N {
-  template<typename T> struct S { static int n; };
-  template<typename T> int S<T>::n = 5;
-  void g(int*);
-  template<typename T> int f() {
-    int k[S<T>::n];
-    g(k);
-    return k[3];
-  }
-  int j = f<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10243.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10243.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10243.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct S; // expected-note 4{{forward declaration of 'S'}}
-
-struct T0 {
-  S s; // expected-error{{field has incomplete type 'S'}}
-  T0() = default;
-};
-
-struct T1 {
-  S s; // expected-error{{field has incomplete type 'S'}}
-  T1(const T1&) = default;
-};
-
-struct T2 {
-  S s; // expected-error{{field has incomplete type 'S'}}
-  T2& operator=(const T2&) = default;
-};
-
-struct T3 {
-  S s; // expected-error{{field has incomplete type 'S'}}
-  ~T3() = default;
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10447.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10447.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10447.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-// expected-no-diagnostics
-
-// PR12223
-namespace test1 {
-  namespace N {
-    extern "C" void f(struct S*);
-    void g(S*);
-  }
-  namespace N {
-    void f(struct S *s) {
-      g(s);
-    }
-  }
-}
-
-// PR10447
-namespace test2 {
-  extern "C" {
-    void f(struct Bar*) { }
-    test2::Bar *ptr;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10458.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10458.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR10458.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98
-
-void f() {
-  int arr[] = { 1, 2, 3 };
-  for (auto &i : arr) { // expected-warning {{'auto' type specifier is a C++11 extension}} expected-warning {{range-based for loop is a C++11 extension}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR11358.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR11358.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR11358.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 %s -verify
-// PR11358
-
-namespace test1 {
-  template<typename T>
-  struct container {
-    class iterator {};
-    iterator begin() { return iterator(); }
-  };
-
-  template<typename T>
-  struct Test {
-    typedef container<T> Container;
-    void test() {
-      Container::iterator i = c.begin(); // expected-error{{missing 'typename'}}
-    }
-    Container c;
-  };
-}
-
-namespace test2 {
-  template <typename Key, typename Value>
-  class hash_map {
-    class const_iterator { void operator++(); };
-    const_iterator begin() const;
-    const_iterator end() const;
-  };
-
-  template <typename KeyType, typename ValueType>
-  void MapTest(hash_map<KeyType, ValueType> map) {
-    for (hash_map<KeyType, ValueType>::const_iterator it = map.begin(); // expected-error{{missing 'typename'}}
-         it != map.end(); it++) {
-    }
-  }
-}
-
-namespace test3 {
-  template<typename T>
-  struct container {
-    class iterator {};
-  };
-
-  template<typename T>
-  struct Test {
-    typedef container<T> Container;
-    void test() {
-      Container::iterator const i; // expected-error{{missing 'typename'}}
-    }
-    Container c;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR12481.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR12481.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR12481.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -x c++ -fsyntax-only %s
-
-class C1 { };
-class C2 { };
-template<class TrieData> struct BinaryTrie {
-  ~BinaryTrie() {
-    (void)(({
-      static int x = 5;
-    }
-    ));
-  }
-};
-class FooTable {
-  BinaryTrie<C1> c1_trie_;
-  BinaryTrie<C2> c2_trie_;
-};
-FooTable* foo = new FooTable;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR5086-ambig-resolution-enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR5086-ambig-resolution-enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR5086-ambig-resolution-enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-
-class C {
-public:
-        enum E { e1=0 };
-        const char * fun1(int , enum E) const;
-        int fun1(unsigned, const char *) const;
-};
-
-void foo(const C& rc) {
-        enum {BUFLEN = 128 };
-        const char *p = rc.fun1(BUFLEN - 2, C::e1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR6562.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR6562.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR6562.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-struct X { ~X(); };
-template <typename T>
-struct A {
-  struct B { X x; };
-  struct C : public B {
-    C() : B() { }
-  };
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR6618.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR6618.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR6618.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class bar; // expected-note {{forward declaration of 'bar'}}
-struct zed {
-  bar g; // expected-error {{field has incomplete type}}
-};
-class baz {
-  zed h;
-};
-void f() {
-  enum {
-    e = sizeof(baz)
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR7410.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR7410.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR7410.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct BaseReturn {};
-
-struct Base {
-  virtual BaseReturn Foo() = 0;  // expected-note{{overridden virtual function is here}}
-};
-struct X {};
-struct Derived : Base {
-  X Foo();  // expected-error{{virtual function 'Foo' has a different return type ('X') than the function it overrides (which has return type 'BaseReturn')}}
-};
-
-Derived d;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR7944.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR7944.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR7944.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR7944
-
-#define MACRO(x) x
-
-struct B { int f() { return 0; } };
-struct A { B* b() { return new B; } };
-
-void g() {
-  A a;
-  MACRO(a.b->f());  // expected-error{{reference to non-static member function must be called; did you mean to call it with no arguments?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8012.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8012.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8012.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-void foo (int operator+); // expected-error{{cannot be the name of a parameter}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8385.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8385.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8385.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: not %clang_cc1 -fsyntax-only %s
-
-// don't crash on this, but don't constrain our diagnostics here as they're
-// currently rather poor (we even accept things like "template struct {}").
-// Other, explicit tests, should verify the relevant behavior of template 
-// instantiation.
-struct{template struct{

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8755.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8755.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8755.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <typename T>
-struct A {
-  typedef int iterator;  // expected-note{{declared here}}
-};
-
-template <typename T>
-void f() {
-  class A <T> ::iterator foo;  // expected-error{{elaborated type refers to a typedef}}
-}
-
-void g() {
-  f<int>();  // expected-note{{in instantiation of function template}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8884.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8884.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR8884.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only  %s
-extern "C" {
-  class bar {
-    friend struct foo;
-    static struct foo& baz ();
-  };
-  struct foo {
-    void zed () {
-      bar::baz();
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9459.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9459.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9459.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Don't crash.
-
-template<typename>struct ae_same;
-template<typename>struct ts{}ap() // expected-error {{expected ';' after struct}} expected-error {{requires a type specifier}}
-{ts<a>::ap<ae_same<int>::&ae_same<>>::p(a); }; // expected-error {{use of undeclared identifier 'a'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9460.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9460.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9460.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-// Don't crash.
-
-template<typename aT>
-struct basic_string{
-  a; // expected-error {{requires a type specifier}}
-  basic_string(aT*);
-};
-
-struct runtime_error{
-  runtime_error(
-basic_string<char> struct{ // expected-error {{cannot combine with previous 'type-name' declaration specifier}}
-a(){ // expected-error {{requires a type specifier}}
-  runtime_error(0);
-}
-}
-);
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9461.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9461.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9461.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-// Don't crash.
-
-template<typename,typename=int,typename=int>struct basic_string;
-
-typedef basic_string<char> string;
-
-
-
-template<typename aT,typename,typename oc>
-struct basic_string
-{
-int us;
-basic_string(const aT*,const oc&a=int());
-
-int _S_construct();
-
-int _S_construct(int);
-
-_S_construct(); // expected-error {{requires}}
-};
-
-template<typename _CharT,typename _Traits,typename _Alloc>
-basic_string<_CharT,_Traits,_Alloc>::basic_string(const _CharT*,const _Alloc&)
-:us(_S_construct)
-{string a;}
-
-struct runtime_error{runtime_error(string);};
-
-struct system_error:runtime_error{ // expected-note {{to match}}
-system_error():time_error("" // expected-error 3 {{expected}} expected-note {{to match}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9572.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9572.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9572.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class Base {
-  virtual ~Base(); // expected-note {{implicitly declared private here}}
-};
-struct Foo : public Base { // expected-error {{base class 'Base' has private destructor}}
-  const int kBlah = 3; // expected-warning {{is a C++11 extension}}
-  Foo();
-};
-struct Bar : public Foo {
-  Bar() { } // expected-note {{implicit default destructor for 'Foo' first required here}}
-};
-struct Baz {
-  Foo f;
-  Baz() { }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9884.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9884.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9884.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-class Base {
-protected:
-  Base(int val);
-};
-
-
-class Derived : public Base {
-public:
-  Derived(int val);
-};
-
-
-Derived::Derived(int val)
-  :  Base( val )
-{
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9902.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9902.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9902.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-template <class _Tp, class _Up, bool = false>
-struct __allocator_traits_rebind
-{
-};
-
-template <template <class, class...> class _Alloc, class _Tp, class ..._Args,
-class _Up>
-struct __allocator_traits_rebind<_Alloc<_Tp, _Args...>, _Up, false>
-{
-   typedef _Alloc<_Up, _Args...> type;
-};
-
-template <class Alloc>
-struct allocator_traits
-{
-   template <class T> using rebind_alloc = typename __allocator_traits_rebind<Alloc, T>::type;
-   template <class T> using rebind_traits = allocator_traits<rebind_alloc<T>>;
-};
-
-template <class T>
-struct allocator {};
-
-int main()
-{
-   allocator_traits<allocator<char>>::rebind_alloc<int> a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9908.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9908.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/PR9908.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-template <class _Tp, class _Up>
-struct __allocator_traits_rebind
-{
-    typedef typename _Tp::template rebind<_Up>::other type;
-};
-
-template <class Alloc>
-struct allocator_traits
-{
-    typedef Alloc allocator_type;
-    template <class T> using rebind_alloc = typename
-__allocator_traits_rebind<allocator_type, T>::type;
-    template <class T> using rebind_traits = allocator_traits<rebind_alloc<T>>;
-};
-
-template <class T>
-struct ReboundA {};
-
-template <class T>
-struct A
-{
-    typedef T value_type;
-
-    template <class U> struct rebind {typedef ReboundA<U> other;};
-};
-
-int main()
-{
-    allocator_traits<A<char> >::rebind_traits<double> a;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/__null.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/__null.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/__null.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -Wno-null-conversion -fsyntax-only -verify
-// RUN: %clang_cc1 -triple i686-unknown-unknown %s -Wno-null-conversion -fsyntax-only -verify
-
-void f() {
-  int* i = __null;
-  i = __null;
-  int i2 = __null;
-
-  // Verify statically that __null is the right size
-  int a[sizeof(typeof(__null)) == sizeof(void*)? 1 : -1];
-  
-  // Verify that null is evaluated as 0.
-  int b[__null ? -1 : 1];
-}
-
-struct A {};
-
-void g() {
-  (void)(0 ? __null : A()); // expected-error {{non-pointer operand type 'A' incompatible with NULL}}
-  (void)(0 ? A(): __null); // expected-error {{non-pointer operand type 'A' incompatible with NULL}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/__try.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/__try.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/__try.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fborland-extensions -fcxx-exceptions %s
-// expected-no-diagnostics
-
-// This test is from http://docwiki.embarcadero.com/RADStudio/en/Try
-
-int puts(const char *);
-
-template<typename T>
-int printf(const char *, T);
-
-const char * strdup(const char *);
-
-void free(const void *);
-
-#define EXCEPTION_EXECUTE_HANDLER 1
-
-class Exception
-{
-public:
-  Exception(const char* s = "Unknown"){what = strdup(s);      }
-  Exception(const Exception& e ){what = strdup(e.what); }
-  ~Exception()                   {free(what);         }
-  const char* msg() const             {return what;           }
-private:
-  const char* what;
-};
-
-int main()
-{
-  float e, f, g;
-  try
-  {
-    try
-    {
-      f = 1.0;
-      g = 0.0;
-      try
-      {
-        puts("Another exception:");
-
-        e = f / g;
-      }
-      __except(EXCEPTION_EXECUTE_HANDLER)
-      {
-        puts("Caught a C-based exception.");
-        throw(Exception("Hardware error: Divide by 0"));
-      }
-    }
-    catch(const Exception& e)
-    {
-      printf("Caught C++ Exception: %s :\n", e.msg());
-    }
-  }
-  __finally
-  {
-    puts("C++ allows __finally too!");
-  }
-  return e;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/abstract.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/abstract.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/abstract.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,275 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-#ifndef __GXX_EXPERIMENTAL_CXX0X__
-#define __CONCAT(__X, __Y) __CONCAT1(__X, __Y)
-#define __CONCAT1(__X, __Y) __X ## __Y
-
-#define static_assert(__b, __m) \
-  typedef int __CONCAT(__sa, __LINE__)[__b ? 1 : -1]
-#endif
-
-class C {
-  virtual void f() = 0; // expected-note {{unimplemented pure virtual method 'f'}}
-};
-
-static_assert(__is_abstract(C), "C has a pure virtual function");
-
-class D : C {
-};
-
-static_assert(__is_abstract(D), "D inherits from an abstract class");
-
-class E : D {
-  virtual void f();
-};
-
-static_assert(!__is_abstract(E), "E inherits from an abstract class but implements f");
-
-C *d = new C; // expected-error {{allocating an object of abstract class type 'C'}}
-
-C c; // expected-error {{variable type 'C' is an abstract class}}
-void t1(C c); // expected-error {{parameter type 'C' is an abstract class}}
-void t2(C); // expected-error {{parameter type 'C' is an abstract class}}
-
-struct S {
-  C c; // expected-error {{field type 'C' is an abstract class}}
-};
-
-void t3(const C&);
-
-void f() {
-  C(); // expected-error {{allocating an object of abstract class type 'C'}}
-  t3(C()); // expected-error {{allocating an object of abstract class type 'C'}}
-}
-
-C e1[2]; // expected-error {{array of abstract class type 'C'}}
-C (*e2)[2]; // expected-error {{array of abstract class type 'C'}}
-C (**e3)[2]; // expected-error {{array of abstract class type 'C'}}
-
-void t4(C c[2]); // expected-error {{array of abstract class type 'C'}}
-
-void t5(void (*)(C)); // expected-error {{parameter type 'C' is an abstract class}}
-
-typedef void (*Func)(C); // expected-error {{parameter type 'C' is an abstract class}}
-void t6(Func);
-
-class F {
-  F a() { while (1) {} } // expected-error {{return type 'F' is an abstract class}}
-    
-  class D {
-    void f(F c); // expected-error {{parameter type 'F' is an abstract class}}
-  };
-
-  union U {
-    void u(F c); // expected-error {{parameter type 'F' is an abstract class}}
-  };
-    
-  virtual void f() = 0; // expected-note {{unimplemented pure virtual method 'f'}}
-};
-
-// Diagnosing in these cases is prohibitively expensive.  We still
-// diagnose at the function definition, of course.
-
-class Abstract;
-
-void t7(Abstract a);
-
-void t8() {
-  void h(Abstract a);
-}
-
-namespace N {
-void h(Abstract a);
-}
-
-class Abstract {
-  virtual void f() = 0;
-};
-
-// <rdar://problem/6854087>
-class foo {
-public:
-  virtual foo *getFoo() = 0;
-};
-
-class bar : public foo {
-public:
-  virtual bar *getFoo();
-};
-
-bar x;
-
-// <rdar://problem/6902298>
-class A {
-public:
-  virtual void release() = 0;
-  virtual void release(int count) = 0;
-  virtual void retain() = 0;
-};
-
-class B : public A {
-public:
-  virtual void release();
-  virtual void release(int count);
-  virtual void retain();
-};
-
-void foo(void) {
-  B b;
-}
-
-struct K {
- int f;
- virtual ~K();
-};
-
-struct L : public K {
- void f();
-};
-
-// PR5222
-namespace PR5222 {
-  struct A {
-    virtual A *clone() = 0;
-  };
-  struct B : public A {
-    virtual B *clone() = 0;
-  };
-  struct C : public B {
-    virtual C *clone();
-  };
-
-  C c;  
-}
-
-// PR5550 - instantiating template didn't track overridden methods
-namespace PR5550 {
-  struct A {
-    virtual void a() = 0;
-    virtual void b() = 0;
-  };
-  template<typename T> struct B : public A {
-    virtual void b();
-    virtual void c() = 0;
-  };
-  struct C : public B<int> {
-    virtual void a();
-    virtual void c();
-  }; 
-  C x;
-}
-
-namespace PureImplicit {
-  // A pure virtual destructor should be implicitly overridden.
-  struct A { virtual ~A() = 0; };
-  struct B : A {};
-  B x;
-
-  // A pure virtual assignment operator should be implicitly overridden.
-  struct D;
-  struct C { virtual D& operator=(const D&) = 0; };
-  struct D : C {};
-  D y;
-}
-
-namespace test1 {
-  struct A {
-    virtual void foo() = 0;
-  };
-
-  struct B : A {
-    using A::foo;
-  };
-
-  struct C : B {
-    void foo();
-  };
-
-  void test() {
-    C c;
-  }
-}
-
-// rdar://problem/8302168
-namespace test2 {
-  struct X1 {
-    virtual void xfunc(void) = 0;  // expected-note {{unimplemented pure virtual method}}
-    void g(X1 parm7);        // expected-error {{parameter type 'test2::X1' is an abstract class}}
-    void g(X1 parm8[2]);     // expected-error {{array of abstract class type 'test2::X1'}}
-  };
-
-  template <int N>
-  struct X2 {
-    virtual void xfunc(void) = 0;  // expected-note {{unimplemented pure virtual method}}
-    void g(X2 parm10);        // expected-error {{parameter type 'X2<N>' is an abstract class}}
-    void g(X2 parm11[2]);     // expected-error {{array of abstract class type 'X2<N>'}}
-  };
-}
-
-namespace test3 {
-  struct A { // expected-note {{not complete until}}
-    A x; // expected-error {{field has incomplete type}}
-    virtual void abstract() = 0;
-  };
-
-  struct B { // expected-note {{not complete until}}
-    virtual void abstract() = 0;
-    B x; // expected-error {{field has incomplete type}}
-  };
-
-  struct C {
-    static C x; // expected-error {{abstract class}}
-    virtual void abstract() = 0; // expected-note {{unimplemented pure virtual method}}
-  };
-
-  struct D {
-    virtual void abstract() = 0; // expected-note {{unimplemented pure virtual method}}
-    static D x; // expected-error {{abstract class}}
-  };
-}
-
-namespace test4 {
-  template <class T> struct A {
-    A x; // expected-error {{abstract class}}
-    virtual void abstract() = 0; // expected-note {{unimplemented pure virtual method}}
-  };
-
-  template <class T> struct B {
-    virtual void abstract() = 0; // expected-note {{unimplemented pure virtual method}}
-    B x; // expected-error {{abstract class}}
-  };
-
-  template <class T> struct C {
-    static C x; // expected-error {{abstract class}}
-    virtual void abstract() = 0; // expected-note {{unimplemented pure virtual method}}
-  };
-
-  template <class T> struct D {
-    virtual void abstract() = 0; // expected-note {{unimplemented pure virtual method}}
-    static D x; // expected-error {{abstract class}}
-  };
-}
-
-// PR9247: Crash on invalid in clang::Sema::ActOnFinishCXXMemberSpecification
-namespace pr9247 {
-  struct A {
-    virtual void g(const A& input) = 0;
-    struct B {
-      C* f(int foo);
-    };
-  };
-}
-
-namespace pr12658 {
-  class C {
-    public:
-      C(int v){}
-      virtual void f() = 0; // expected-note {{unimplemented pure virtual method 'f' in 'C'}}
-  };
-
-  void foo( C& c ) {}
-
-  void bar( void ) {
-    foo(C(99)); // expected-error {{allocating an object of abstract class type 'pr12658::C'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/access-base-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/access-base-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/access-base-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-namespace T1 {
-  
-class A { };
-class B : private A { }; // expected-note {{declared private here}}
-
-void f(B* b) {
-  A *a = b; // expected-error{{cannot cast 'T1::B' to its private base class 'T1::A'}}
-}
-
-}
-
-namespace T2 { 
-
-class A { };
-class B : A { }; // expected-note {{implicitly declared private here}}
-
-void f(B* b) {
-  A *a = b; // expected-error {{cannot cast 'T2::B' to its private base class 'T2::A'}}
-}
-
-}
-
-namespace T3 {
-
-class A { };
-class B : public A { }; 
-
-void f(B* b) {
-  A *a = b;
-}
-
-}
-
-namespace T4 {
-
-class A {};
-
-class B : private virtual A {};
-class C : public virtual A {};
-
-class D : public B, public C {};
-
-void f(D *d) {
-  // This takes the D->C->B->A path.
-  A *a = d;
-}
-
-}
-
-namespace T5 {
-  class A {};
-    
-  class B : private A {
-    void f(B *b) {
-      A *a = b;
-    }
-  };    
-}
-
-namespace T6 {
-  class C;
-  
-  class A {}; // expected-note{{member is declared here}}
-  
-  class B : private A { // expected-note {{declared private here}} expected-note {{constrained by private inheritance here}}
-    void f(C* c);
-  };
-  
-  class C : public B { 
-    void f(C *c) {
-      A* a = c; // expected-error {{cannot cast 'T6::C' to its private base class 'T6::A'}} \
-                // expected-error {{'A' is a private member of 'T6::A'}}
-    }
-  };
-  
-  void B::f(C *c) {
-    A *a = c;
-  }
-}
-
-namespace T7 {
-  class A {};
-  class B : public A {};
-  class C : private B { 
-    void f(C *c) {
-      A* a = c; // okay
-    }
-  };
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/access-control-check.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/access-control-check.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/access-control-check.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class M {
-  int iM;
-};
-
-class P {
-  int iP; // expected-note {{declared private here}}
-  int PPR(); // expected-note {{declared private here}}
-};
-
-class N : M,P {
-  N() {}
-  int PR() { return iP + PPR(); } // expected-error 2 {{private member of 'P'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/access-member-pointer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/access-member-pointer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/access-member-pointer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR7694
-
-class A { };
-class B : private A { public: void foo(); }; // expected-note {{declared private here}}
-void B::foo() {
-  (void)static_cast<void(A::*)()>(&B::foo);
-}
-void bar() {
-  (void)static_cast<void(A::*)()>(&B::foo); // expected-error {{cannot cast 'B' to its private base class 'A'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/access.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/access.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/access.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-class C {
-    struct S; // expected-note {{previously declared 'private' here}}
-public:
-    
-    struct S {}; // expected-error {{'S' redeclared with 'public' access}}
-};
-
-struct S {
-    class C; // expected-note {{previously declared 'public' here}}
-    
-private:
-    class C { }; // expected-error {{'C' redeclared with 'private' access}}
-};
-
-class T {
-protected:
-    template<typename T> struct A; // expected-note {{previously declared 'protected' here}}
-    
-private:
-    template<typename T> struct A {}; // expected-error {{'A' redeclared with 'private' access}}
-};
-
-// PR5573
-namespace test1 {
-  class A {
-  private:
-    class X; // expected-note {{previously declared 'private' here}}
-  public:
-    class X; // expected-error {{'X' redeclared with 'public' access}}
-    class X {};
-  };
-}
-
-// PR15209
-namespace PR15209 {
-  namespace alias_templates {
-    template<typename T1, typename T2> struct U { };
-    template<typename T1> using W = U<T1, float>;
-
-    class A {
-      typedef int I;
-      static constexpr I x = 0; // expected-note {{implicitly declared private here}}
-      static constexpr I y = 42; // expected-note {{implicitly declared private here}}
-      friend W<int>;
-    };
-
-    template<typename T1>
-    struct U<T1, float>  {
-      int v_;
-      // the following will trigger for U<float, float> instantiation, via W<float>
-      U() : v_(A::x) { } // expected-error {{'x' is a private member of 'PR15209::alias_templates::A'}}
-    };
-
-    template<typename T1>
-    struct U<T1, int> {
-      int v_;
-      U() : v_(A::y) { } // expected-error {{'y' is a private member of 'PR15209::alias_templates::A'}}
-    };
-
-    template struct U<int, int>; // expected-note {{in instantiation of member function 'PR15209::alias_templates::U<int, int>::U' requested here}}
-
-    void f()
-    {
-      W<int>();
-      // we should issue diagnostics for the following
-      W<float>(); // expected-note {{in instantiation of member function 'PR15209::alias_templates::U<float, float>::U' requested here}}
-    }
-  }
-
-  namespace templates {
-    class A {
-      typedef int I;  // expected-note {{implicitly declared private here}}
-      static constexpr I x = 0; // expected-note {{implicitly declared private here}}
-
-      template<int> friend struct B;
-      template<int> struct C;
-      template<template<int> class T> friend struct TT;
-      template<typename T> friend void funct(T);
-    };
-    template<A::I> struct B { };
-
-    template<A::I> struct A::C { };
-
-    template<template<A::I> class T> struct TT {
-      T<A::x> t;
-    };
-
-    template struct TT<B>;
-    template<A::I> struct D { };  // expected-error {{'I' is a private member of 'PR15209::templates::A'}}
-    template struct TT<D>;
-
-    // function template case
-    template<typename T>
-    void funct(T)
-    {
-      (void)A::x;
-    }
-
-    template void funct<int>(int);
-
-    void f()
-    {
-      (void)A::x;  // expected-error {{'x' is a private member of 'PR15209::templates::A'}}
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/addr-of-overloaded-function-casting.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/addr-of-overloaded-function-casting.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/addr-of-overloaded-function-casting.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-void g();
-
-void f(); // expected-note 9{{candidate function}}
-void f(int); // expected-note 9{{candidate function}}
-
-template<class T> void t(T); // expected-note 6{{candidate function}}
-template<class T> void t(T*); // expected-note 6{{candidate function}}
-
-template<class T> void u(T);
-
-int main()
-{
-  { bool b = (void (&)(char))f; } // expected-error{{does not match required type}}
-  { bool b = (void (*)(char))f; } // expected-error{{does not match required type}}
-  
-  { bool b = (void (&)(int))f; } //ok
-  { bool b = (void (*)(int))f; } //ok
-  
-  { bool b = static_cast<void (&)(char)>(f); } // expected-error{{does not match}}
-  { bool b = static_cast<void (*)(char)>(f); } // expected-error{{address of overloaded function}}
-  
-  { bool b = static_cast<void (&)(int)>(f); } //ok
-  { bool b = static_cast<void (*)(int)>(f); } //ok
-  
-  
-  { bool b = reinterpret_cast<void (&)(char)>(f); } // expected-error{{cannot resolve}}
-  { bool b = reinterpret_cast<void (*)(char)>(f); } // expected-error{{cannot resolve}}
-  
-  { bool b = reinterpret_cast<void (*)(char)>(g); } //ok
-  { bool b = static_cast<void (*)(char)>(g); } // expected-error{{not allowed}}
-  
-  { bool b = reinterpret_cast<void (&)(int)>(f); } // expected-error{{cannot resolve}}
-  { bool b = reinterpret_cast<void (*)(int)>(f); } // expected-error{{cannot resolve}}
-
-  { bool b = (int (&)(char))t; } // expected-error{{does not match}}
-  { bool b = (int (*)(char))t; } // expected-error{{does not match}}
-  
-  { bool b = (void (&)(int))t; } //ok
-  { bool b = (void (*)(int))t; } //ok
-  
-  { bool b = static_cast<void (&)(char)>(t); } //ok
-  { bool b = static_cast<void (*)(char)>(t); } //ok
-  
-  { bool b = static_cast<void (&)(int)>(t); } //ok
-  { bool b = static_cast<void (*)(int)>(t); } //ok
-  
-  
-  { bool b = reinterpret_cast<void (&)(char)>(t); } // expected-error{{cannot resolve}}
-  { bool b = reinterpret_cast<void (*)(char)>(t); } // expected-error{{cannot resolve}}
-  
-  { bool b = reinterpret_cast<int (*)(char)>(g); } //ok
-  { bool b = static_cast<int (*)(char)>(t); } // expected-error{{cannot be static_cast}}
-  { bool b = static_cast<int (&)(char)>(t); } // expected-error{{does not match required}}
-  
-  { bool b = static_cast<void (&)(char)>(f); } // expected-error{{does not match}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/addr-of-overloaded-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/addr-of-overloaded-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/addr-of-overloaded-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,210 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-int f(double); // expected-note{{candidate function}}
-int f(int); // expected-note{{candidate function}}
-
-int (*pfd)(double) = f; // selects f(double)
-int (*pfd2)(double) = &f; // selects f(double)
-int (*pfd3)(double) = ((&((f)))); // selects f(double)
-int (*pfi)(int) = &f;    // selects f(int)
-// FIXME: This error message is not very good. We need to keep better
-// track of what went wrong when the implicit conversion failed to
-// give a better error message here.
-int (*pfe)(...) = &f;    // expected-error{{address of overloaded function 'f' does not match required type 'int (...)'}}
-int (&rfi)(int) = f;     // selects f(int)
-int (&rfd)(double) = f;  // selects f(double)
-
-void g(int (*fp)(int));   // expected-note{{candidate function}}
-void g(int (*fp)(float));
-void g(int (*fp)(double)); // expected-note{{candidate function}}
-
-int g1(int);
-int g1(char);
-
-int g2(int);
-int g2(double);
-
-template<typename T> T g3(T);
-int g3(int);
-int g3(char);
-
-void g_test() {
-  g(g1);
-  g(g2); // expected-error{{call to 'g' is ambiguous}}
-  g(g3);
-}
-
-template<typename T> T h1(T);
-template<typename R, typename A1> R h1(A1);
-int h1(char);
-
-void ha(int (*fp)(int));
-void hb(int (*fp)(double));
-
-void h_test() {
-  ha(h1);
-  hb(h1);
-}
-
-struct A { };
-void f(void (*)(A *));
-
-struct B
-{
-  void g() { f(d); }
-  void d(void *);
-  static void d(A *);
-};
-
-struct C {
-  C &getC() {
-    return makeAC; // expected-error{{reference to non-static member function must be called}}
-  }
-
-  C &makeAC();
-  const C &makeAC() const;
-
-  static void f(); // expected-note{{candidate function}}
-  static void f(int); // expected-note{{candidate function}}
-
-  void g() {
-    int (&fp)() = f; // expected-error{{address of overloaded function 'f' does not match required type 'int ()'}}
-  }
-};
-
-// PR6886
-namespace test0 {
-  void myFunction(void (*)(void *));
-
-  class Foo {
-    void foo();
-
-    static void bar(void*);
-    static void bar();
-  };
-
-  void Foo::foo() {
-    myFunction(bar);
-  }
-}
-
-namespace PR7971 {
-  struct S {
-    void g() {
-      f(&g);
-    }
-    void f(bool (*)(int, char));
-    static bool g(int, char);
-  };
-}
-
-namespace PR8033 {
-  template <typename T1, typename T2> int f(T1 *, const T2 *); // expected-note {{candidate function [with T1 = const int, T2 = int]}} \
-  // expected-note{{candidate function}}
-  template <typename T1, typename T2> int f(const T1 *, T2 *); // expected-note {{candidate function [with T1 = int, T2 = const int]}} \
-  // expected-note{{candidate function}}
-  int (*p)(const int *, const int *) = f; // expected-error{{address of overloaded function 'f' is ambiguous}} \
-  // expected-error{{address of overloaded function 'f' is ambiguous}}
-
-}
-
-namespace PR8196 {
-  template <typename T> struct mcdata {
-    typedef int result_type;
-  };
-  template <class T> 
-    typename mcdata<T>::result_type wrap_mean(mcdata<T> const&);
-  void add_property(double(*)(mcdata<double> const &)); // expected-note{{candidate function not viable: no overload of 'wrap_mean' matching}}
-  void f() {
-    add_property(&wrap_mean); // expected-error{{no matching function for call to 'add_property'}}
-  }
-}
-
-namespace PR7425 {
-  template<typename T>
-  void foo()
-  {
-  }
-
-  struct B
-  {
-    template<typename T>
-    B(const T&)
-    {
-    }
-  };
-
-  void bar(const B& b)
-  {
-  }
-
-  void bar2(const B& b = foo<int>)
-  {
-  }
-
-  void test(int argc, char** argv)
-  {
-    bar(foo<int>);
-    bar2();
-  }
-}
-
-namespace test1 {
-  void fun(int x) {}
-
-  void parameter_number() {
-    void (*ptr1)(int, int) = &fun; // expected-error {{cannot initialize a variable of type 'void (*)(int, int)' with an rvalue of type 'void (*)(int)': different number of parameters (2 vs 1)}}
-    void (*ptr2)(int, int);
-    ptr2 = &fun;  // expected-error {{assigning to 'void (*)(int, int)' from incompatible type 'void (*)(int)': different number of parameters (2 vs 1)}}
-  }
-
-  void parameter_mismatch() {
-    void (*ptr1)(double) = &fun; // expected-error {{cannot initialize a variable of type 'void (*)(double)' with an rvalue of type 'void (*)(int)': type mismatch at 1st parameter ('double' vs 'int')}}
-    void (*ptr2)(double);
-    ptr2 = &fun; // expected-error {{assigning to 'void (*)(double)' from incompatible type 'void (*)(int)': type mismatch at 1st parameter ('double' vs 'int')}}
-  }
-
-  void return_type_test() {
-    int (*ptr1)(int) = &fun; // expected-error {{cannot initialize a variable of type 'int (*)(int)' with an rvalue of type 'void (*)(int)': different return type ('int' vs 'void')}}
-    int (*ptr2)(int);
-    ptr2 = &fun;  // expected-error {{assigning to 'int (*)(int)' from incompatible type 'void (*)(int)': different return type ('int' vs 'void')}}
-  }
-
-  int foo(double x, double y) {return 0;} // expected-note {{candidate function has different number of parameters (expected 1 but has 2)}}
-  int foo(int x, int y) {return 0;} // expected-note {{candidate function has different number of parameters (expected 1 but has 2)}}
-  int foo(double x) {return 0;} // expected-note {{candidate function has type mismatch at 1st parameter (expected 'int' but has 'double')}}
-  double foo(float x, float y) {return 0;} // expected-note {{candidate function has different number of parameters (expected 1 but has 2)}}
-  double foo(int x, float y) {return 0;} // expected-note {{candidate function has different number of parameters (expected 1 but has 2)}}
-  double foo(float x) {return 0;} // expected-note {{candidate function has type mismatch at 1st parameter (expected 'int' but has 'float')}}
-  double foo(int x) {return 0;} // expected-note {{candidate function has different return type ('int' expected but has 'double')}}
-  
-  int (*ptr)(int) = &foo; // expected-error {{address of overloaded function 'foo' does not match required type 'int (int)'}}
-
-  struct Qualifiers {
-    void N() {};
-    void C() const {};
-    void V() volatile {};
-    void R() __restrict {};
-    void CV() const volatile {};
-    void CR() const __restrict {};
-    void VR() volatile __restrict {};
-    void CVR() const volatile __restrict {};
-  };
-
-
-  void QualifierTest() {
-    void (Qualifiers::*X)();
-    X = &Qualifiers::C; // expected-error {{assigning to 'void (test1::Qualifiers::*)()' from incompatible type 'void (test1::Qualifiers::*)() const': different qualifiers (none vs const)}}
-    X = &Qualifiers::V; // expected-error{{assigning to 'void (test1::Qualifiers::*)()' from incompatible type 'void (test1::Qualifiers::*)() volatile': different qualifiers (none vs volatile)}}
-    X = &Qualifiers::R; // expected-error{{assigning to 'void (test1::Qualifiers::*)()' from incompatible type 'void (test1::Qualifiers::*)() restrict': different qualifiers (none vs restrict)}}
-    X = &Qualifiers::CV; // expected-error{{assigning to 'void (test1::Qualifiers::*)()' from incompatible type 'void (test1::Qualifiers::*)() const volatile': different qualifiers (none vs const and volatile)}}
-    X = &Qualifiers::CR; // expected-error{{assigning to 'void (test1::Qualifiers::*)()' from incompatible type 'void (test1::Qualifiers::*)() const restrict': different qualifiers (none vs const and restrict)}}
-    X = &Qualifiers::VR; // expected-error{{assigning to 'void (test1::Qualifiers::*)()' from incompatible type 'void (test1::Qualifiers::*)() volatile restrict': different qualifiers (none vs volatile and restrict)}}
-    X = &Qualifiers::CVR; // expected-error{{assigning to 'void (test1::Qualifiers::*)()' from incompatible type 'void (test1::Qualifiers::*)() const volatile restrict': different qualifiers (none vs const, volatile, and restrict)}}
-  }
-
-  struct Dummy {
-    void N() {};
-  };
-
-  void (Qualifiers::*X)() = &Dummy::N; // expected-error{{cannot initialize a variable of type 'void (test1::Qualifiers::*)()' with an rvalue of type 'void (test1::Dummy::*)()': different classes ('test1::Qualifiers' vs 'test1::Dummy')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/address-of-temporary.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/address-of-temporary.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/address-of-temporary.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-error=address-of-temporary -verify -std=gnu++11 %s
-struct X {
-  X();
-  X(int);
-  X(int, int);
-};
-
-void f0() { (void)&X(); } // expected-warning{{taking the address of a temporary object}}
-void f1() { (void)&X(1); } // expected-warning{{taking the address of a temporary object}}
-void f2() { (void)&X(1, 2); } // expected-warning{{taking the address of a temporary object}}
-void f3() { (void)&(X)1; } // expected-warning{{taking the address of a temporary object}}
-
-
-namespace PointerToArrayDecay {
-  struct Y {
-    int a[4];
-  };
-  struct Z {
-    int n;
-    ~Z();
-  };
-
-  typedef int A[4];
-  typedef Z AZ[4];
-
-  template<typename T> void consume(T);
-  struct S { int *p; };
-
-  void g0() { int *p = Y().a; } // expected-warning{{pointer is initialized by a temporary array}}
-  void g1() { int *p = Y{}.a; } // expected-warning{{pointer is initialized by a temporary array}}
-  void g2() { int *p = A{}; } // expected-warning{{pointer is initialized by a temporary array}}
-  void g3() { int *p = (A){}; } // expected-warning{{pointer is initialized by a temporary array}}
-  void g4() { Z *p = AZ{}; } // expected-warning{{pointer is initialized by a temporary array}}
-
-  void h0() { consume(Y().a); }
-  void h1() { consume(Y{}.a); }
-  void h2() { consume(A{}); }
-  void h3() { consume((A){}); }
-  void h4() { consume(AZ{}); }
-
-  void i0() { S s = { Y().a }; } // expected-warning{{pointer is initialized by a temporary array}}
-  void i1() { S s = { Y{}.a }; } // expected-warning{{pointer is initialized by a temporary array}}
-  void i2() { S s = { A{} }; } // expected-warning{{pointer is initialized by a temporary array}}
-  void i3() { S s = { (A){} }; } // expected-warning{{pointer is initialized by a temporary array}}
-
-  void j0() { (void)S { Y().a }; }
-  void j1() { (void)S { Y{}.a }; }
-  void j2() { (void)S { A{} }; }
-  void j3() { (void)S { (A){} }; }
-
-  void k0() { consume(S { Y().a }); }
-  void k1() { consume(S { Y{}.a }); }
-  void k2() { consume(S { A{} }); }
-  void k3() { consume(S { (A){} }); }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/address-of.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/address-of.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/address-of.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR clang/3175
-
-void bar(int*);
-
-class c {
-  int var;
-  static int svar;
-  void foo() { 
-    bar(&var); 
-    bar(&svar);  
-  }
-
-  static void wibble() {
-    bar(&var); // expected-error{{invalid use of member 'var' in static member function}}
-    bar(&svar); 
-  }
-};
-
-enum E {
-  Enumerator
-};
-
-void test() {
-  (void)&Enumerator; // expected-error{{cannot take the address of an rvalue of type 'E'}}
-}
-
-template<int N>
-void test2() {
-  (void)&N; // expected-error{{cannot take the address of an rvalue of type 'int'}}
-}
-
-// PR clang/3222
-void xpto();
-void (*xyz)(void) = &xpto;
-
-struct PR11066 {
-  static int foo(short);
-  static int foo(float);
-  void test();
-};
-
-void PR11066::test() {
-  int (PR11066::*ptr)(int) = & &PR11066::foo; // expected-error{{extra '&' taking address of overloaded function}}
-}
-
-namespace test3 {
-  // emit no error
-  template<typename T> struct S {
-    virtual void f() = 0;
-  };
-  template<typename T> void S<T>::f() { T::error; }
-  void (S<int>::*p)() = &S<int>::f;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,197 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// This test checks for the various conversions and casting operations
-// with address-space-qualified pointers.
-
-struct A { virtual ~A() {} };
-struct B : A { };
-
-typedef void *void_ptr;
-typedef void __attribute__((address_space(1))) *void_ptr_1;
-typedef void __attribute__((address_space(2))) *void_ptr_2;
-
-typedef int *int_ptr;
-typedef int __attribute__((address_space(1))) *int_ptr_1;
-typedef int __attribute__((address_space(2))) *int_ptr_2;
-
-typedef A *A_ptr;
-typedef A __attribute__((address_space(1))) *A_ptr_1;
-typedef A __attribute__((address_space(2))) *A_ptr_2;
-
-typedef B *B_ptr;
-typedef B __attribute__((address_space(1))) *B_ptr_1;
-typedef B __attribute__((address_space(2))) *B_ptr_2;
-
-void test_const_cast(int_ptr ip, int_ptr_1 ip1, int_ptr_2 ip2,
-                     A_ptr ap, A_ptr_1 ap1, A_ptr_2 ap2,
-                     const int *cip, 
-                     const int __attribute__((address_space(1))) *cip1) {
-  // Cannot use const_cast to cast between address spaces, add an
-  // address space, or remove an address space.
-  (void)const_cast<int_ptr>(ip1); // expected-error{{is not allowed}}
-  (void)const_cast<int_ptr>(ip2); // expected-error{{is not allowed}}
-  (void)const_cast<int_ptr_1>(ip); // expected-error{{is not allowed}}
-  (void)const_cast<int_ptr_1>(ip2); // expected-error{{is not allowed}}
-  (void)const_cast<int_ptr_2>(ip); // expected-error{{is not allowed}}
-  (void)const_cast<int_ptr_2>(ip1); // expected-error{{is not allowed}}
-
-  (void)const_cast<A_ptr>(ap1); // expected-error{{is not allowed}}
-  (void)const_cast<A_ptr>(ap2); // expected-error{{is not allowed}}
-  (void)const_cast<A_ptr_1>(ap); // expected-error{{is not allowed}}
-  (void)const_cast<A_ptr_1>(ap2); // expected-error{{is not allowed}}
-  (void)const_cast<A_ptr_2>(ap); // expected-error{{is not allowed}}
-  (void)const_cast<A_ptr_2>(ap1); // expected-error{{is not allowed}}
-
-  // It's acceptable to cast away constness.
-  (void)const_cast<int_ptr>(cip);
-  (void)const_cast<int_ptr_1>(cip1);
-}
-
-void test_static_cast(void_ptr vp, void_ptr_1 vp1, void_ptr_2 vp2,
-                      A_ptr ap, A_ptr_1 ap1, A_ptr_2 ap2,
-                      B_ptr bp, B_ptr_1 bp1, B_ptr_2 bp2) {
-  // Well-formed upcast
-  (void)static_cast<A_ptr>(bp);
-  (void)static_cast<A_ptr_1>(bp1);
-  (void)static_cast<A_ptr_2>(bp2);
-
-  // Well-formed downcast
-  (void)static_cast<B_ptr>(ap);
-  (void)static_cast<B_ptr_1>(ap1);
-  (void)static_cast<B_ptr_2>(ap2);
-
-  // Well-formed cast to/from void
-  (void)static_cast<void_ptr>(ap);
-  (void)static_cast<void_ptr_1>(ap1);
-  (void)static_cast<void_ptr_2>(ap2);
-  (void)static_cast<A_ptr>(vp);
-  (void)static_cast<A_ptr_1>(vp1);
-  (void)static_cast<A_ptr_2>(vp2);
-  
-  // Ill-formed upcasts
-  (void)static_cast<A_ptr>(bp1); // expected-error{{is not allowed}}
-  (void)static_cast<A_ptr>(bp2); // expected-error{{is not allowed}}
-  (void)static_cast<A_ptr_1>(bp); // expected-error{{is not allowed}}
-  (void)static_cast<A_ptr_1>(bp2); // expected-error{{is not allowed}}
-  (void)static_cast<A_ptr_2>(bp); // expected-error{{is not allowed}}
-  (void)static_cast<A_ptr_2>(bp1); // expected-error{{is not allowed}}
-
-  // Ill-formed downcasts
-  (void)static_cast<B_ptr>(ap1); // expected-error{{casts away qualifiers}}
-  (void)static_cast<B_ptr>(ap2); // expected-error{{casts away qualifiers}}
-  (void)static_cast<B_ptr_1>(ap); // expected-error{{casts away qualifiers}}
-  (void)static_cast<B_ptr_1>(ap2); // expected-error{{casts away qualifiers}}
-  (void)static_cast<B_ptr_2>(ap); // expected-error{{casts away qualifiers}}
-  (void)static_cast<B_ptr_2>(ap1); // expected-error{{casts away qualifiers}}
-
-  // Ill-formed cast to/from void
-  (void)static_cast<void_ptr>(ap1); // expected-error{{is not allowed}}
-  (void)static_cast<void_ptr>(ap2); // expected-error{{is not allowed}}
-  (void)static_cast<void_ptr_1>(ap); // expected-error{{is not allowed}}
-  (void)static_cast<void_ptr_1>(ap2); // expected-error{{is not allowed}}
-  (void)static_cast<void_ptr_2>(ap); // expected-error{{is not allowed}}
-  (void)static_cast<void_ptr_2>(ap1); // expected-error{{is not allowed}}
-  (void)static_cast<A_ptr>(vp1); // expected-error{{casts away qualifiers}}
-  (void)static_cast<A_ptr>(vp2); // expected-error{{casts away qualifiers}}
-  (void)static_cast<A_ptr_1>(vp); // expected-error{{casts away qualifiers}}
-  (void)static_cast<A_ptr_1>(vp2); // expected-error{{casts away qualifiers}}
-  (void)static_cast<A_ptr_2>(vp); // expected-error{{casts away qualifiers}}
-  (void)static_cast<A_ptr_2>(vp1); // expected-error{{casts away qualifiers}}
-}
-
-void test_dynamic_cast(A_ptr ap, A_ptr_1 ap1, A_ptr_2 ap2,
-                       B_ptr bp, B_ptr_1 bp1, B_ptr_2 bp2) {
-  // Well-formed upcast
-  (void)dynamic_cast<A_ptr>(bp);
-  (void)dynamic_cast<A_ptr_1>(bp1);
-  (void)dynamic_cast<A_ptr_2>(bp2);
-
-  // Well-formed downcast
-  (void)dynamic_cast<B_ptr>(ap);
-  (void)dynamic_cast<B_ptr_1>(ap1);
-  (void)dynamic_cast<B_ptr_2>(ap2);
-
-  // Ill-formed upcasts
-  (void)dynamic_cast<A_ptr>(bp1); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<A_ptr>(bp2); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<A_ptr_1>(bp); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<A_ptr_1>(bp2); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<A_ptr_2>(bp); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<A_ptr_2>(bp1); // expected-error{{casts away qualifiers}}
-
-  // Ill-formed downcasts
-  (void)dynamic_cast<B_ptr>(ap1); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<B_ptr>(ap2); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<B_ptr_1>(ap); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<B_ptr_1>(ap2); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<B_ptr_2>(ap); // expected-error{{casts away qualifiers}}
-  (void)dynamic_cast<B_ptr_2>(ap1); // expected-error{{casts away qualifiers}}
-}
-
-void test_reinterpret_cast(void_ptr vp, void_ptr_1 vp1, void_ptr_2 vp2,
-                           A_ptr ap, A_ptr_1 ap1, A_ptr_2 ap2,
-                           B_ptr bp, B_ptr_1 bp1, B_ptr_2 bp2,
-                           const void __attribute__((address_space(1))) *cvp1) {
-  // reinterpret_cast can be used to cast to a different address space.
-  (void)reinterpret_cast<A_ptr>(ap1);
-  (void)reinterpret_cast<A_ptr>(ap2);
-  (void)reinterpret_cast<A_ptr>(bp);
-  (void)reinterpret_cast<A_ptr>(bp1);
-  (void)reinterpret_cast<A_ptr>(bp2);
-  (void)reinterpret_cast<A_ptr>(vp);
-  (void)reinterpret_cast<A_ptr>(vp1);
-  (void)reinterpret_cast<A_ptr>(vp2);
-  (void)reinterpret_cast<A_ptr_1>(ap);
-  (void)reinterpret_cast<A_ptr_1>(ap2);
-  (void)reinterpret_cast<A_ptr_1>(bp);
-  (void)reinterpret_cast<A_ptr_1>(bp1);
-  (void)reinterpret_cast<A_ptr_1>(bp2);
-  (void)reinterpret_cast<A_ptr_1>(vp);
-  (void)reinterpret_cast<A_ptr_1>(vp1);
-  (void)reinterpret_cast<A_ptr_1>(vp2);
-
-  // ... but don't try to cast away constness!
-  (void)reinterpret_cast<A_ptr_2>(cvp1); // expected-error{{casts away qualifiers}}
-}
-
-void test_cstyle_cast(void_ptr vp, void_ptr_1 vp1, void_ptr_2 vp2,
-                      A_ptr ap, A_ptr_1 ap1, A_ptr_2 ap2,
-                      B_ptr bp, B_ptr_1 bp1, B_ptr_2 bp2,
-                      const void __attribute__((address_space(1))) *cvp1) {
-  // C-style casts are the wild west of casts.
-  (void)(A_ptr)(ap1);
-  (void)(A_ptr)(ap2);
-  (void)(A_ptr)(bp);
-  (void)(A_ptr)(bp1);
-  (void)(A_ptr)(bp2);
-  (void)(A_ptr)(vp);
-  (void)(A_ptr)(vp1);
-  (void)(A_ptr)(vp2);
-  (void)(A_ptr_1)(ap);
-  (void)(A_ptr_1)(ap2);
-  (void)(A_ptr_1)(bp);
-  (void)(A_ptr_1)(bp1);
-  (void)(A_ptr_1)(bp2);
-  (void)(A_ptr_1)(vp);
-  (void)(A_ptr_1)(vp1);
-  (void)(A_ptr_1)(vp2);
-  (void)(A_ptr_2)(cvp1);
-}
-
-void test_implicit_conversion(void_ptr vp, void_ptr_1 vp1, void_ptr_2 vp2,
-                              A_ptr ap, A_ptr_1 ap1, A_ptr_2 ap2,
-                              B_ptr bp, B_ptr_1 bp1, B_ptr_2 bp2) {
-  // Well-formed conversions
-  void_ptr vpA = ap;
-  void_ptr_1 vp_1A = ap1;
-  void_ptr_2 vp_2A = ap2;
-  A_ptr ap_A = bp;
-  A_ptr_1 ap_A1 = bp1;
-  A_ptr_2 ap_A2 = bp2;
-
-  // Ill-formed conversions
-  void_ptr vpB = ap1; // expected-error{{cannot initialize a variable of type}}
-  void_ptr_1 vp_1B = ap2; // expected-error{{cannot initialize a variable of type}}
-  A_ptr ap_B = bp1; // expected-error{{cannot initialize a variable of type}}
-  A_ptr_1 ap_B1 = bp2; // expected-error{{cannot initialize a variable of type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-initialize.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-initialize.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-initialize.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-__attribute__((address_space(42)))
-const float withc = 1.0f;
-
-__attribute__((address_space(42)))
-volatile float withv = 1.0f;
-
-__attribute__((address_space(42)))
-float nocv = 1.0f;
-
-__attribute__((address_space(42)))
-float nocv_array[10] = { 1.0f };
-
-__attribute__((address_space(42)))
-int nocv_iarray[10] = { 4 };
-
-
-__attribute__((address_space(9999)))
-int* as_ptr = nocv_iarray; // expected-error{{cannot initialize a variable of type '__attribute__((address_space(9999))) int *' with an lvalue of type '__attribute__((address_space(42))) int [10]'}}
-
-
-__attribute__((address_space(42))) int* __attribute__((address_space(42))) ptr_in_same_addr_space = nocv_iarray;
-__attribute__((address_space(42))) int* __attribute__((address_space(999))) ptr_in_different_addr_space = nocv_iarray;
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-newdelete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-newdelete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-newdelete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void* operator new (__SIZE_TYPE__ size, void* ptr);
-void* operator new[](__SIZE_TYPE__ size, void* ptr);
-
-typedef int __attribute__((address_space(1))) int_1;
-
-void test_new(void *p) {
-  (void)new int_1; // expected-error{{'new' cannot allocate objects of type 'int' in address space '1'}}
-  (void)new __attribute__((address_space(1))) int; // expected-error{{'new' cannot allocate objects of type 'int' in address space '1'}}
-  (void)new int_1 [5]; // expected-error{{'new' cannot allocate objects of type 'int' in address space '1'}}
-  (void)new __attribute__((address_space(1))) int [5]; // expected-error{{'new' cannot allocate objects of type 'int' in address space '1'}}
-
-  // Placement new
-  (void)new (p) int_1; // expected-error{{'new' cannot allocate objects of type 'int' in address space '1'}}
-  (void)new (p) __attribute__((address_space(1))) int; // expected-error{{'new' cannot allocate objects of type 'int' in address space '1'}}
-  (void)new (p) int_1 [5]; // expected-error{{'new' cannot allocate objects of type 'int' in address space '1'}}
-  (void)new (p) __attribute__((address_space(1))) int [5]; // expected-error{{'new' cannot allocate objects of type 'int' in address space '1'}}
-}
-
-void test_delete(int_1 *ip1) {
-  delete ip1; // expected-error{{'delete' cannot delete objects of type 'int' in address space '1'}}
-  delete [] ip1; // expected-error{{'delete' cannot delete objects of type 'int' in address space '1'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-references.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-references.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/address-space-references.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef int __attribute__((address_space(1))) int_1;
-typedef int __attribute__((address_space(2))) int_2;
-
-void f0(int_1 &); // expected-note{{candidate function not viable: 1st argument ('int') is in address space 0, but parameter must be in address space 1}} \
-// expected-note{{candidate function not viable: 1st argument ('int_2' (aka '__attribute__((address_space(2))) int')) is in address space 2, but parameter must be in address space 1}}
-void f0(const int_1 &); // expected-note{{candidate function not viable: 1st argument ('int') is in address space 0, but parameter must be in address space 1}} \
-// expected-note{{candidate function not viable: 1st argument ('int_2' (aka '__attribute__((address_space(2))) int')) is in address space 2, but parameter must be in address space 1}}
-
-void test_f0() {
-  int i;
-  static int_1 i1;
-  static int_2 i2;
-
-  f0(i); // expected-error{{no matching function for call to 'f0'}}
-  f0(i1);
-  f0(i2); // expected-error{{no matching function for call to 'f0'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/aggregate-initialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/aggregate-initialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/aggregate-initialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 
-
-// Verify that using an initializer list for a non-aggregate looks for
-// constructors..
-// Note that due to a (likely) standard bug, this is technically an aggregate,
-// but we do not treat it as one.
-struct NonAggr1 { // expected-note 2 {{candidate constructor}}
-  NonAggr1(int, int) { } // expected-note {{candidate constructor}}
-
-  int m;
-};
-
-struct Base { };
-struct NonAggr2 : public Base { // expected-note 3 {{candidate constructor}}
-  int m;
-};
-
-class NonAggr3 { // expected-note 3 {{candidate constructor}}
-  int m;
-};
-
-struct NonAggr4 { // expected-note 3 {{candidate constructor}}
-  int m;
-  virtual void f();
-};
-
-NonAggr1 na1 = { 17 }; // expected-error{{no matching constructor for initialization of 'NonAggr1'}}
-NonAggr2 na2 = { 17 }; // expected-error{{no matching constructor for initialization of 'NonAggr2'}}
-NonAggr3 na3 = { 17 }; // expected-error{{no matching constructor for initialization of 'NonAggr3'}}
-NonAggr4 na4 = { 17 }; // expected-error{{no matching constructor for initialization of 'NonAggr4'}}
-
-// PR5817
-typedef int type[][2];
-const type foo = {0};
-
-// Vector initialization.
-typedef short __v4hi __attribute__ ((__vector_size__ (8)));
-__v4hi v1 = { (void *)1, 2, 3 }; // expected-error {{cannot initialize a vector element of type 'short' with an rvalue of type 'void *'}}
-
-// Array initialization.
-int a[] = { (void *)1 }; // expected-error {{cannot initialize an array element of type 'int' with an rvalue of type 'void *'}}
-
-// Struct initialization.
-struct S { int a; } s = { (void *)1 }; // expected-error {{cannot initialize a member subobject of type 'int' with an rvalue of type 'void *'}}
-
-// Check that we're copy-initializing the structs.
-struct A {
-  A();
-  A(int);
-  ~A();
-  
-  A(const A&) = delete; // expected-note 2 {{function has been explicitly marked deleted here}}
-};
-
-struct B {
-  A a;
-};
-
-struct C {
-  const A& a;
-};
-
-void f() {
-  A as1[1] = { };
-  A as2[1] = { 1 }; // expected-error {{copying array element of type 'A' invokes deleted constructor}}
-
-  B b1 = { };
-  B b2 = { 1 }; // expected-error {{copying member subobject of type 'A' invokes deleted constructor}}
-  
-  C c1 = { 1 };
-}
-
-class Agg {
-public:
-  int i, j;
-};
-
-class AggAgg {
-public:
-  Agg agg1;
-  Agg agg2;
-};
-
-AggAgg aggagg = { 1, 2, 3, 4 };

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/alias-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/alias-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/alias-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,172 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-
-namespace RedeclAliasTypedef {
-  template<typename U> using T = int;
-  template<typename U> using T = int;
-  template<typename U> using T = T<U>;
-}
-
-namespace IllegalTypeIds {
-  template<typename U> using A = void(int n = 0); // expected-error {{default arguments can only be specified for parameters in a function declaration}}
-  template<typename U> using B = inline void(int n); // expected-error {{type name does not allow function specifier}}
-  template<typename U> using C = virtual void(int n); // expected-error {{type name does not allow function specifier}}
-  template<typename U> using D = explicit void(int n); // expected-error {{type name does not allow function specifier}}
-  template<typename U> using E = void(int n) throw(); // expected-error {{exception specifications are not allowed in type aliases}}
-  template<typename U> using F = void(*)(int n) &&; // expected-error {{pointer to function type cannot have '&&' qualifier}}
-  template<typename U> using G = __thread void(int n); // expected-error {{type name does not allow storage class to be specified}}
-  template<typename U> using H = constexpr int; // expected-error {{type name does not allow constexpr specifier}}
-
-  template<typename U> using Y = void(int n); // ok
-  template<typename U> using Z = void(int n) &&; // ok
-}
-
-namespace IllegalSyntax {
-  template<typename Z> using ::T = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-  template<typename Z> using operator int = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-  template<typename Z> using typename U = void; // expected-error {{name defined in alias declaration must be an identifier}}
-  template<typename Z> using typename ::V = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-  template<typename Z> using typename ::operator bool = void(int n); // expected-error {{name defined in alias declaration must be an identifier}}
-}
-
-namespace VariableLengthArrays {
-  template<typename Z> using T = int[42]; // ok
-
-  int n = 32;
-  template<typename Z> using T = int[n]; // expected-error {{variable length array declaration not allowed at file scope}}
-
-  const int m = 42;
-  template<typename Z> using U = int[m]; // expected-note {{previous definition}}
-  template<typename Z> using U = int[42]; // ok
-  template<typename Z> using U = int; // expected-error {{type alias template redefinition with different types ('int' vs 'int [42]')}}
-}
-
-namespace RedeclFunc {
-  int f(int, char**);
-  template<typename Z> using T = int;
-  T<char> f(int, char **); // ok
-}
-
-namespace LookupFilter {
-  namespace N { template<typename U> using S = int; }
-  using namespace N;
-  template<typename U> using S = S<U>*; // ok
-}
-
-namespace InFunctions {
-  template<typename...T> struct S0 {
-    template<typename Z> using U = T*; // expected-error {{declaration type contains unexpanded parameter pack 'T'}}
-    U<char> u;
-  };
-
-  template<typename Z> using T1 = int;
-  template<typename Z> using T2 = int[-1]; // expected-error {{array size is negative}}
-  template<typename...T> struct S3 { // expected-note {{template parameter is declared here}}
-    template<typename Z> using T = int; // expected-error {{declaration of 'T' shadows template parameter}}
-  };
-  template<typename Z> using Z = Z;
-}
-
-namespace ClassNameRedecl {
-  class C0 {
-    // FIXME: this diagnostic is pretty poor
-    template<typename U> using C0 = int; // expected-error {{name defined in alias declaration must be an identifier}}
-  };
-  class C1 {
-    // FIXME: this diagnostic is pretty poor
-    template<typename U> using C1 = C1; // expected-error {{name defined in alias declaration must be an identifier}}
-  };
-  class C2 {
-    template<typename U> using C0 = C1; // ok
-  };
-  template<typename...T> class C3 {
-    template<typename U> using f = T; // expected-error {{declaration type contains unexpanded parameter pack 'T'}}
-  };
-  template<typename T> class C4 { // expected-note {{template parameter is declared here}}
-    template<typename U> using T = int; // expected-error {{declaration of 'T' shadows template parameter}}
-  };
-  class C5 {
-    class c; // expected-note {{previous definition}}
-    template<typename U> using c = int; // expected-error {{redefinition of 'c' as different kind of symbol}}
-    class d; // expected-note {{previous definition}}
-    template<typename U> using d = d; // expected-error {{redefinition of 'd' as different kind of symbol}}
-  };
-  class C6 {
-    class c { template<typename U> using C6 = int; }; // ok
-  };
-}
-
-class CtorDtorName {
-  template<typename T> using X = CtorDtorName;
-  X<int>(); // expected-error {{expected member name}}
-  ~X<int>(); // expected-error {{destructor cannot be declared using a type alias}}
-};
-
-namespace TagName {
-  template<typename Z> using S = struct { int n; }; // expected-error {{can not be defined}}
-  template<typename Z> using T = class { int n; }; // expected-error {{can not be defined}}
-  template<typename Z> using U = enum { a, b, c }; // expected-error {{can not be defined}}
-  template<typename Z> using V = struct V { int n; }; // expected-error {{'TagName::V' can not be defined in a type alias template}}
-}
-
-namespace StdExample {
-  template<typename T, typename U> struct pair;
-
-  template<typename T> using handler_t = void (*)(T);
-  extern handler_t<int> ignore;
-  extern void (*ignore)(int);
-  // FIXME: we recover as if cell is an undeclared variable. the diagnostics are terrible!
-  template<typename T> using cell = pair<T*, cell<T>*>; // expected-error {{use of undeclared identifier 'cell'}} \
-                                                           expected-error {{'T' does not refer to a value}} \
-                                                           expected-note {{declared here}} \
-                                                           expected-error {{expected ';' after alias declaration}}
-}
-
-namespace Access {
-  class C0 {
-    template<typename Z> using U = int; // expected-note {{declared private here}}
-  };
-  C0::U<int> v; // expected-error {{'U' is a private member}}
-  class C1 {
-  public:
-    template<typename Z> using U = int;
-  };
-  C1::U<int> w; // ok
-}
-
-namespace VoidArg {
-  template<typename Z> using V = void;
-  V<int> f(int); // ok
-  V<char> g(V<double>); // expected-error {{empty parameter list defined with a type alias of 'void' not allowed}}
-}
-
-namespace Curried {
-  template<typename T, typename U> struct S;
-  template<typename T> template<typename U> using SS = S<T, U>; // expected-error {{extraneous template parameter list in alias template declaration}}
-}
-
-// PR12647
-namespace SFINAE {
-  template<bool> struct enable_if; // expected-note 2{{here}}
-  template<> struct enable_if<true> { using type = void; };
-
-  template<typename T> struct is_enum { static constexpr bool value = __is_enum(T); };
-
-  template<typename T> using EnableIf = typename enable_if<T::value>::type; // expected-error {{undefined template}}
-  template<typename T> using DisableIf = typename enable_if<!T::value>::type; // expected-error {{undefined template}}
-
-  template<typename T> EnableIf<is_enum<T>> f();
-  template<typename T> DisableIf<is_enum<T>> f();
-
-  enum E { e };
-
-  int main() {
-    f<int>();
-    f<E>();
-  }
-
-  template<typename T, typename U = EnableIf<is_enum<T>>> struct fail1 {}; // expected-note {{here}}
-  template<typename T> struct fail2 : DisableIf<is_enum<T>> {}; // expected-note {{here}}
-
-  fail1<int> f1; // expected-note {{here}}
-  fail2<E> f2; // expected-note {{here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/alignof-sizeof-reference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/alignof-sizeof-reference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/alignof-sizeof-reference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct s0; // expected-note {{forward declaration}}
-char ar[sizeof(s0&)]; // expected-error {{invalid application of 'sizeof' to an incomplete type}}
-void test() {
-  char &r = ar[0];
-  static_assert(alignof(r) == 1, "bad alignment"); // expected-warning {{GNU extension}}
-  static_assert(alignof(char&) == 1, "bad alignment");
-  static_assert(sizeof(r) == 1, "bad size");
-  static_assert(sizeof(char&) == 1, "bad size");
-}
-
-void f();  // expected-note{{possible target for call}}
-void f(int);  // expected-note{{possible target for call}}
-void g() { 
-  sizeof(&f); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}} \
-  // expected-warning{{expression result unused}}
-}
-
-template<typename T> void f_template(); // expected-note{{possible target for call}}
-template<typename T> void f_template(T*); // expected-note{{possible target for call}}
-void rdar9659191() {
-  (void)alignof(f_template<int>); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}} expected-warning {{GNU extension}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/alignof.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/alignof.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/alignof.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// rdar://13784901
-
-struct S0 {
-  int x;
-  static const int test0 = __alignof__(x); // expected-error {{invalid application of 'alignof' to a field of a class still being defined}}
-  static const int test1 = __alignof__(S0::x); // expected-error {{invalid application of 'alignof' to a field of a class still being defined}}
-  auto test2() -> char(&)[__alignof__(x)]; // expected-error {{invalid application of 'alignof' to a field of a class still being defined}}
-};
-
-struct S1; // expected-note 5 {{forward declaration}}
-extern S1 s1;
-const int test3 = __alignof__(s1); // expected-error {{invalid application of 'alignof' to an incomplete type 'S1'}}
-
-struct S2 {
-  S2();
-  S1 &s;
-  int x;
-
-  int test4 = __alignof__(x); // ok
-  int test5 = __alignof__(s); // expected-error {{invalid application of 'alignof' to an incomplete type 'S1'}}
-};
-
-const int test6 = __alignof__(S2::x);
-const int test7 = __alignof__(S2::s); // expected-error {{invalid application of 'alignof' to an incomplete type 'S1'}}
-
-// Arguably, these should fail like the S1 cases do: the alignment of
-// 's2.x' should depend on the alignment of both x-within-S2 and
-// s2-within-S3 and thus require 'S3' to be complete.  If we start
-// doing the appropriate recursive walk to do that, we should make
-// sure that these cases don't explode.
-struct S3 {
-  S2 s2;
-
-  static const int test8 = __alignof__(s2.x);
-  static const int test9 = __alignof__(s2.s); // expected-error {{invalid application of 'alignof' to an incomplete type 'S1'}}
-  auto test10() -> char(&)[__alignof__(s2.x)];
-  static const int test11 = __alignof__(S3::s2.x);
-  static const int test12 = __alignof__(S3::s2.s); // expected-error {{invalid application of 'alignof' to an incomplete type 'S1'}}
-  auto test13() -> char(&)[__alignof__(s2.x)];
-};
-
-// Same reasoning as S3.
-struct S4 {
-  union {
-    int x;
-  };
-  static const int test0 = __alignof__(x);
-  static const int test1 = __alignof__(S0::x);
-  auto test2() -> char(&)[__alignof__(x)];
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/altivec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/altivec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/altivec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,83 +0,0 @@
-// RUN: %clang_cc1 -faltivec -fno-lax-vector-conversions -triple powerpc-unknown-unknown -fcxx-exceptions -verify %s
-
-typedef int V4i __attribute__((vector_size(16)));
-
-void test_vec_step(vector short arg1) {
-  vector bool char vbc;
-  vector signed char vsc;
-  vector unsigned char vuc;
-  vector bool short vbs;
-  vector short vs;
-  vector unsigned short vus;
-  vector pixel vp;
-  vector bool int vbi;
-  vector int vi;
-  vector unsigned int vui;
-  vector float vf;
-
-  vector int *pvi;
-
-  int res1[vec_step(arg1) == 8 ? 1 : -1];
-  int res2[vec_step(vbc) == 16 ? 1 : -1];
-  int res3[vec_step(vsc) == 16 ? 1 : -1];
-  int res4[vec_step(vuc) == 16 ? 1 : -1];
-  int res5[vec_step(vbs) == 8 ? 1 : -1];
-  int res6[vec_step(vs) == 8 ? 1 : -1];
-  int res7[vec_step(vus) == 8 ? 1 : -1];
-  int res8[vec_step(vp) == 8 ? 1 : -1];
-  int res9[vec_step(vbi) == 4 ? 1 : -1];
-  int res10[vec_step(vi) == 4 ? 1 : -1];
-  int res11[vec_step(vui) == 4 ? 1 : -1];
-  int res12[vec_step(vf) == 4 ? 1 : -1];
-  int res13[vec_step(*pvi) == 4 ? 1 : -1];
-}
-
-void f(V4i a)
-{
-}
-
-void test1()
-{
-  V4i vGCC;
-  vector int vAltiVec;
-
-  f(vAltiVec);
-  vGCC = vAltiVec;
-  bool res = vGCC > vAltiVec;
-  vAltiVec = 0 ? vGCC : vGCC;
-}
-
-template<typename T>
-void template_f(T param) {
-  param++;
-}
-
-void test2()
-{
-  vector int vi;
-  ++vi;
-  vi++;
-  --vi;
-  vi--;
-  vector float vf;
-  vf++;
-
-  ++vi=vi; // expected-warning {{unsequenced}}
-  (++vi)[1]=1;
-  template_f(vi);
-}
-
-namespace LValueToRValueConversions {
-  struct Struct {
-    float f();
-    int n();
-  };
-
-  vector float initFloat = (vector float)(Struct().f); // expected-error {{did you mean to call it}}
-  vector int initInt = (vector int)(Struct().n); // expected-error {{did you mean to call it}}
-}
-
-void f() {
-  try {}
-  catch (vector pixel px) {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ambig-user-defined-conversions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ambig-user-defined-conversions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ambig-user-defined-conversions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace test0 {
-  struct BASE { 
-    operator int &(); // expected-note {{candidate function}}
-  }; 
-  struct BASE1 { 
-    operator int &(); // expected-note {{candidate function}}
-  }; 
-
-  struct B : public BASE, BASE1 {};
-
-  extern B f(); 
-  B b1;
-
-  void func(const int ci, const char cc); // expected-note {{candidate function}}
-  void func(const char ci, const B b); // expected-note {{candidate function}}
-  void func(const B b, const int ci); // expected-note {{candidate function}}
-
-  const int Test1() {
-
-    func(b1, f()); // expected-error {{call to 'func' is ambiguous}}
-    return f(); // expected-error {{conversion from 'test0::B' to 'const int' is ambiguous}}
-  }
-
-  // This used to crash when comparing the two operands.
-  void func2(const char cc); // expected-note {{candidate function}}
-  void func2(const int ci); // expected-note {{candidate function}}
-  void Test2() {
-    func2(b1); // expected-error {{call to 'func2' is ambiguous}}
-  }
-}
-
-namespace test1 {
-  struct E;
-  struct A { 
-    A (E&); 
-  };
-
-  struct E { 
-    operator A (); 
-  };
-
-  struct C { 
-    C (E&);  
-  };
-
-  void f1(A);	// expected-note {{candidate function}}
-  void f1(C);	// expected-note {{candidate function}}
-
-  void Test2()
-  {
-    E b;
-    f1(b);  // expected-error {{call to 'f1' is ambiguous}}	
-            // ambiguous because b -> C via constructor and
-            // b -> A via constructor or conversion function.
-  }
-}
-
-namespace rdar8876150 {
-  struct A { operator bool(); };
-  struct B : A { };
-  struct C : A { };
-  struct D : B, C { };
-
-  bool f(D d) { return !d; } // expected-error{{ambiguous conversion from derived class 'rdar8876150::D' to base class 'rdar8876150::A':}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ambiguous-builtin-unary-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ambiguous-builtin-unary-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ambiguous-builtin-unary-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-struct A {
-  operator int&();
-  operator long*& ();
-};
-
-struct B {
-  operator long&();
-  operator int*& ();
-};
-
-struct C : B, A { };
-
-void test(C c) {
-  ++c; // expected-error {{use of overloaded operator '++' is ambiguous}}\
-       // expected-note {{built-in candidate operator++(int &)}} \
-       // expected-note {{built-in candidate operator++(long &)}} \
-       // expected-note {{built-in candidate operator++(long *&)}} \
-       // expected-note {{built-in candidate operator++(int *&)}}
-}
-
-struct A1 { operator volatile int&(); };
-
-struct B1 { operator volatile long&(); };
-
-struct C1 : B1, A1 { };
-
-void test(C1 c) {
-  ++c;	// expected-error {{use of overloaded operator '++' is ambiguous}} \
-	// expected-note {{built-in candidate operator++(volatile int &)}} \
-	// expected-note {{built-in candidate operator++(volatile long &)}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ambiguous-conversion-show-overload.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ambiguous-conversion-show-overload.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ambiguous-conversion-show-overload.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fshow-overloads=best -fno-caret-diagnostics %s 2>&1 | FileCheck %s
-struct S {
-  S(void*);
-  S(char*);
-  S(unsigned char*);
-  S(signed char*);
-  S(unsigned short*);
-  S(signed short*);
-  S(unsigned int*);
-  S(signed int*);
-};
-void f(const S& s);
-void g() {
-  f(0);
-}
-// CHECK: {{conversion from 'int' to 'const S' is ambiguous}}
-// CHECK-NEXT: {{candidate constructor}}
-// CHECK-NEXT: {{candidate constructor}}
-// CHECK-NEXT: {{candidate constructor}}
-// CHECK-NEXT: {{candidate constructor}}
-// CHECK-NEXT: {{remaining 4 candidates omitted; pass -fshow-overloads=all to show them}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-struct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-struct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-struct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct S {
-  S();  // expected-note {{because type 'S' has a user-provided default constructor}}
-};
-
-struct { // expected-error {{anonymous structs and classes must be class members}}
-};
-
-struct E {
-  struct {
-    S x;  // expected-error {{anonymous struct member 'x' has a non-trivial constructor}}
-  };
-  static struct {
-  };
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-union-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-union-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-union-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -pedantic %s
-// expected-no-diagnostics
-
-namespace PR12866 {
-  struct bar {
-    union {
-      int member;
-    };
-  };
-
-  void foo( void ) {
-    (void)sizeof(bar::member);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/anonymous-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,199 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-struct X {
-  union {
-    float f3;
-    double d2;
-  } named;
-
-  union {
-    int i;
-    float f;
-    
-    union { // expected-warning{{anonymous types declared in an anonymous union are an extension}}
-      float f2;
-      mutable double d;
-    };
-  };
-
-  void test_unqual_references();
-
-  struct { // expected-warning{{anonymous structs are a GNU extension}}
-    int a;
-    float b;
-  };
-
-  void test_unqual_references_const() const;
-
-  mutable union { // expected-error{{anonymous union at class scope must not have a storage specifier}}
-    float c1;
-    double c2;
-  };
-};
-
-void X::test_unqual_references() {
-  i = 0;
-  f = 0.0;
-  f2 = f;
-  d = f;
-  f3 = 0; // expected-error{{use of undeclared identifier 'f3'}}
-  a = 0;
-}
-
-void X::test_unqual_references_const() const {
-  d = 0.0;
-  f2 = 0; // expected-error{{read-only variable is not assignable}}
-  a = 0; // expected-error{{read-only variable is not assignable}}
-}
-
-void test_unqual_references(X x, const X xc) {
-  x.i = 0;
-  x.f = 0.0;
-  x.f2 = x.f;
-  x.d = x.f;
-  x.f3 = 0; // expected-error{{no member named 'f3'}}
-  x.a = 0;
-
-  xc.d = 0.0;
-  xc.f = 0; // expected-error{{read-only variable is not assignable}}
-  xc.a = 0; // expected-error{{read-only variable is not assignable}}
-}
-
-
-struct Redecl {
-  int x; // expected-note{{previous declaration is here}}
-  class y { };
-
-  union {
-    int x; // expected-error{{member of anonymous union redeclares 'x'}}
-    float y;
-    double z; // expected-note{{previous declaration is here}}
-    double zz; // expected-note{{previous definition is here}}
-  };
-
-  int z; // expected-error{{duplicate member 'z'}}
-  void zz(); // expected-error{{redefinition of 'zz' as different kind of symbol}}
-};
-
-union { // expected-error{{anonymous unions at namespace or global scope must be declared 'static'}}
-  int int_val;
-  float float_val;
-};
-
-static union {
-  int int_val2;
-  float float_val2;
-};
-
-void f() {
-  int_val2 = 0;
-  float_val2 = 0.0;
-}
-
-void g() {
-  union {
-    int i;
-    float f2;
-  };
-  i = 0;
-  f2 = 0.0;
-}
-
-struct BadMembers {
-  union {
-    struct X { }; // expected-error {{types cannot be declared in an anonymous union}}
-    struct { int x; int y; } y; // expected-warning{{anonymous types declared in an anonymous union are an extension}}
-    
-    void f(); // expected-error{{functions cannot be declared in an anonymous union}}
-  private: int x1; // expected-error{{anonymous union cannot contain a private data member}}
-  protected: float x2; // expected-error{{anonymous union cannot contain a protected data member}}
-  };
-};
-
-// <rdar://problem/6481130>
-typedef union { }; // expected-warning{{typedef requires a name}}
-
-// <rdar://problem/7562438>
-typedef struct objc_module *Foo ;
-
-typedef struct _s {
-    union {
-        int a;
-        int Foo;
-    };
-} s, *ps;
-
-// <rdar://problem/7987650>
-namespace test4 {
-  class A {
-    struct { // expected-warning{{anonymous structs are a GNU extension}}
-      int s0; // expected-note {{declared private here}}
-      double s1; // expected-note {{declared private here}}
-      union { // expected-warning{{anonymous types declared in an anonymous struct are an extension}}
-        int su0; // expected-note {{declared private here}}
-        double su1; // expected-note {{declared private here}}
-      };
-    };
-    union {
-      int u0; // expected-note {{declared private here}}
-      double u1; // expected-note {{declared private here}}
-      struct { // expected-warning{{anonymous structs are a GNU extension}} expected-warning{{anonymous types declared in an anonymous union are an extension}}
-        int us0; // expected-note {{declared private here}}
-        double us1; // expected-note {{declared private here}}
-      };
-    };
-  };
-
-  void test() {
-    A a;
-    (void) a.s0;  // expected-error {{private member}}
-    (void) a.s1;  // expected-error {{private member}}
-    (void) a.su0; // expected-error {{private member}}
-    (void) a.su1; // expected-error {{private member}}
-    (void) a.u0;  // expected-error {{private member}}
-    (void) a.u1;  // expected-error {{private member}}
-    (void) a.us0; // expected-error {{private member}}
-    (void) a.us1; // expected-error {{private member}}
-  }
-}
-
-typedef void *voidPtr;
-
-void f2() {
-    union { int **ctxPtr; void **voidPtr; };
-}
-
-void foo_PR6741() {
-    union {
-        char *m_a;
-        int *m_b;
-    };
- 
-    if(1) {
-        union {
-            char *m_a;
-            int *m_b;
-        };
-    }
-}
-
-namespace PR8326 {
-  template <class T>
-  class Foo {
-  public:
-    Foo()
-      : x(0)
-      , y(1){
-    }
-  
-  private:
-    const union { // expected-warning{{anonymous union cannot be 'const'}}
-      struct { // expected-warning{{anonymous structs are a GNU extension}} expected-warning{{declared in an anonymous union}}
-        T x;
-        T y;
-      };
-      T v[2];
-    };
-  };
-
-  Foo<int> baz;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bound-merge.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bound-merge.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bound-merge.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR5515
-
-extern int a[];
-int a[10];
-extern int b[10];
-int b[];
-extern int c[1];
-int c[] = {1,2}; // expected-error {{excess elements in array initializer}}
-
-int d[1][]; // expected-error {{array has incomplete element type 'int []'}}
-
-extern const int e[2]; // expected-note {{previous definition is here}}
-int e[] = { 1 }; // expected-error {{redefinition of 'e' with a different type: 'int []' vs 'const int [2]'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds-ptr-arith.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds-ptr-arith.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds-ptr-arith.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-string-plus-int -Warray-bounds-pointer-arithmetic %s
-
-void swallow (const char *x) { (void)x; }
-void test_pointer_arithmetic(int n) {
-  const char hello[] = "Hello world!"; // expected-note 2 {{declared here}}
-  const char *helloptr = hello;
-
-  swallow("Hello world!" + 6); // no-warning
-  swallow("Hello world!" - 6); // expected-warning {{refers before the beginning of the array}}
-  swallow("Hello world!" + 14); // expected-warning {{refers past the end of the array}}
-  swallow("Hello world!" + 13); // no-warning
-
-  swallow(hello + 6); // no-warning
-  swallow(hello - 6); // expected-warning {{refers before the beginning of the array}}
-  swallow(hello + 14); // expected-warning {{refers past the end of the array}}
-  swallow(hello + 13); // no-warning
-
-  swallow(helloptr + 6); // no-warning
-  swallow(helloptr - 6); // no-warning
-  swallow(helloptr + 14); // no-warning
-  swallow(helloptr + 13); // no-warning
-
-  double numbers[2]; // expected-note {{declared here}}
-  swallow((char*)numbers + sizeof(double)); // no-warning
-  swallow((char*)numbers + 60); // expected-warning {{refers past the end of the array}}
-
-  char buffer[5]; // expected-note 2 {{declared here}}
-  // TODO: Add FixIt notes for adding parens around non-ptr part of arith expr
-  swallow(buffer + sizeof("Hello")-1); // expected-warning {{refers past the end of the array}}
-  swallow(buffer + (sizeof("Hello")-1)); // no-warning
-  if (n > 0 && n <= 6) swallow(buffer + 6 - n); // expected-warning {{refers past the end of the array}}
-  if (n > 0 && n <= 6) swallow(buffer + (6 - n)); // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds-system-header.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds-system-header.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds-system-header.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -isystem %S/Inputs -verify %s
-#include <array-bounds-system-header.h>
-void test_system_header_macro() {
-  BAD_MACRO_1; // no-warning
-  char a[3]; // expected-note 2 {{declared here}}
-  BAD_MACRO_2(a, 3); // expected-warning {{array index 3}}
-  QUESTIONABLE_MACRO(a);
-  NOP(a[3] = 5); // expected-warning {{array index 3}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/array-bounds.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,255 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-int foo() {
-  int x[2]; // expected-note 4 {{array 'x' declared here}}
-  int y[2]; // expected-note 2 {{array 'y' declared here}}
-  int z[1]; // expected-note {{array 'z' declared here}}
-  int w[1][1]; // expected-note {{array 'w' declared here}}
-  int v[1][1][1]; // expected-note {{array 'v' declared here}}
-  int *p = &y[2]; // no-warning
-  (void) sizeof(x[2]); // no-warning
-  y[2] = 2; // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
-  z[1] = 'x'; // expected-warning {{array index 1 is past the end of the array (which contains 1 element)}}
-  w[0][2] = 0; // expected-warning {{array index 2 is past the end of the array (which contains 1 element)}}
-  v[0][0][2] = 0; // expected-warning {{array index 2 is past the end of the array (which contains 1 element)}}
-  return x[2] +  // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
-         y[-1] + // expected-warning {{array index -1 is before the beginning of the array}}
-         x[sizeof(x)] +  // expected-warning {{array index 8 is past the end of the array (which contains 2 elements)}}
-         x[sizeof(x) / sizeof(x[0])] +  // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
-         x[sizeof(x) / sizeof(x[0]) - 1] + // no-warning
-         x[sizeof(x[2])]; // expected-warning {{array index 4 is past the end of the array (which contains 2 elements)}}
-}
-
-// This code example tests that -Warray-bounds works with arrays that
-// are template parameters.
-template <char *sz> class Qux {
-  bool test() { return sz[0] == 'a'; }
-};
-
-void f1(int a[1]) {
-  int val = a[3]; // no warning for function argumnet
-}
-
-void f2(const int (&a)[2]) { // expected-note {{declared here}}
-  int val = a[3];  // expected-warning {{array index 3 is past the end of the array (which contains 2 elements)}}
-}
-
-void test() {
-  struct {
-    int a[0];
-  } s2;
-  s2.a[3] = 0; // no warning for 0-sized array
-
-  union {
-    short a[2]; // expected-note 4 {{declared here}}
-    char c[4];
-  } u;
-  u.a[3] = 1; // expected-warning {{array index 3 is past the end of the array (which contains 2 elements)}}
-  u.c[3] = 1; // no warning
-  short *p = &u.a[2]; // no warning
-  p = &u.a[3]; // expected-warning {{array index 3 is past the end of the array (which contains 2 elements)}}
-  *(&u.a[2]) = 1; // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
-  *(&u.a[3]) = 1; // expected-warning {{array index 3 is past the end of the array (which contains 2 elements)}}
-  *(&u.c[3]) = 1; // no warning
-
-  const int const_subscript = 3;
-  int array[2]; // expected-note {{declared here}}
-  array[const_subscript] = 0;  // expected-warning {{array index 3 is past the end of the array (which contains 2 elements)}}
-
-  int *ptr;
-  ptr[3] = 0; // no warning for pointer references
-  int array2[] = { 0, 1, 2 }; // expected-note 2 {{declared here}}
-
-  array2[3] = 0; // expected-warning {{array index 3 is past the end of the array (which contains 3 elements)}}
-  array2[2+2] = 0; // expected-warning {{array index 4 is past the end of the array (which contains 3 elements)}}
-
-  const char *str1 = "foo";
-  char c1 = str1[5]; // no warning for pointers
-
-  const char str2[] = "foo"; // expected-note {{declared here}}
-  char c2 = str2[5]; // expected-warning {{array index 5 is past the end of the array (which contains 4 elements)}}
-
-  int (*array_ptr)[2];
-  (*array_ptr)[3] = 1; // expected-warning {{array index 3 is past the end of the array (which contains 2 elements)}}
-}
-
-template <int I> struct S {
-  char arr[I]; // expected-note 3 {{declared here}}
-};
-template <int I> void f() {
-  S<3> s;
-  s.arr[4] = 0; // expected-warning 2 {{array index 4 is past the end of the array (which contains 3 elements)}}
-  s.arr[I] = 0; // expected-warning {{array index 5 is past the end of the array (which contains 3 elements)}}
-}
-
-void test_templates() {
-  f<5>(); // expected-note {{in instantiation}}
-}
-
-#define SIZE 10
-#define ARR_IN_MACRO(flag, arr, idx) flag ? arr[idx] : 1
-
-int test_no_warn_macro_unreachable() {
-  int arr[SIZE]; // expected-note {{array 'arr' declared here}}
-  return ARR_IN_MACRO(0, arr, SIZE) + // no-warning
-         ARR_IN_MACRO(1, arr, SIZE); // expected-warning{{array index 10 is past the end of the array (which contains 10 elements)}}
-}
-
-// This exhibited an assertion failure for a 32-bit build of Clang.
-int test_pr9240() {
-  short array[100]; // expected-note {{array 'array' declared here}}
-  return array[(unsigned long long) 100]; // expected-warning {{array index 100 is past the end of the array (which contains 100 elements)}}
-}
-
-// PR 9284 - a template parameter can cause an array bounds access to be
-// infeasible.
-template <bool extendArray>
-void pr9284() {
-    int arr[3 + (extendArray ? 1 : 0)];
-
-    if (extendArray)
-        arr[3] = 42; // no-warning
-}
-
-template <bool extendArray>
-void pr9284b() {
-    int arr[3 + (extendArray ? 1 : 0)]; // expected-note {{array 'arr' declared here}}
-
-    if (!extendArray)
-        arr[3] = 42; // expected-warning{{array index 3 is past the end of the array (which contains 3 elements)}}
-}
-
-void test_pr9284() {
-    pr9284<true>();
-    pr9284<false>();
-    pr9284b<true>();
-    pr9284b<false>(); // expected-note{{in instantiation of function template specialization 'pr9284b<false>' requested here}}
-}
-
-int test_pr9296() {
-    int array[2];
-    return array[true]; // no-warning
-}
-
-int test_sizeof_as_condition(int flag) {
-  int arr[2] = { 0, 0 }; // expected-note {{array 'arr' declared here}}
-  if (flag) 
-    return sizeof(char) != sizeof(char) ? arr[2] : arr[1];
-  return sizeof(char) == sizeof(char) ? arr[2] : arr[1]; // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
-}
-
-void test_switch() {
-  switch (4) {
-    case 1: {
-      int arr[2];
-      arr[2] = 1; // no-warning
-      break;
-    }
-    case 4: {
-      int arr[2]; // expected-note {{array 'arr' declared here}}
-      arr[2] = 1; // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
-      break;
-    }
-    default: {
-      int arr[2];
-      arr[2] = 1; // no-warning
-      break;
-    }
-  }
-}
-
-// Test nested switch statements.
-enum enumA { enumA_A, enumA_B, enumA_C, enumA_D, enumA_E };
-enum enumB { enumB_X, enumB_Y, enumB_Z };
-static enum enumB myVal = enumB_X;
-void test_nested_switch() {
-  switch (enumA_E) { // expected-warning {{no case matching constant}}
-    switch (myVal) { // expected-warning {{enumeration values 'enumB_X' and 'enumB_Z' not handled in switch}}
-      case enumB_Y: ;
-    }
-  }
-}
-
-// Test that if all the values of an enum covered, that the 'default' branch
-// is unreachable.
-enum Values { A, B, C, D };
-void test_all_enums_covered(enum Values v) {
-  int x[2];
-  switch (v) {
-  case A: return;
-  case B: return;
-  case C: return;
-  case D: return;
-  }
-  x[2] = 0; // no-warning
-}
-
-namespace tailpad {
-  struct foo {
-    char c1[1]; // expected-note {{declared here}}
-    int x;
-    char c2[1];
-  };
-
-  class baz {
-   public:
-    char c1[1]; // expected-note {{declared here}}
-    int x;
-    char c2[1];
-  };
-
-  char bar(struct foo *F, baz *B) {
-    return F->c1[3] + // expected-warning {{array index 3 is past the end of the array (which contains 1 element)}}
-           F->c2[3] + // no warning, foo could have tail padding allocated.
-           B->c1[3] + // expected-warning {{array index 3 is past the end of the array (which contains 1 element)}}
-           B->c2[3]; // no warning, baz could have tail padding allocated.
-  }
-}
-
-namespace metaprogramming {
-#define ONE 1
-  struct foo { char c[ONE]; }; // expected-note {{declared here}}
-  template <int N> struct bar { char c[N]; }; // expected-note {{declared here}}
-
-  char test(foo *F, bar<1> *B) {
-    return F->c[3] + // expected-warning {{array index 3 is past the end of the array (which contains 1 element)}}
-           B->c[3]; // expected-warning {{array index 3 is past the end of the array (which contains 1 element)}}
-  }
-}
-
-void bar(int x) {}
-int test_more() {
-  int foo[5]; // expected-note 5 {{array 'foo' declared here}}
-  bar(foo[5]); // expected-warning {{array index 5 is past the end of the array (which contains 5 elements)}}
-  ++foo[5]; // expected-warning {{array index 5 is past the end of the array (which contains 5 elements)}}
-  if (foo[6]) // expected-warning {{array index 6 is past the end of the array (which contains 5 elements)}}
-    return --foo[6]; // expected-warning {{array index 6 is past the end of the array (which contains 5 elements)}}
-  else
-    return foo[5]; // expected-warning {{array index 5 is past the end of the array (which contains 5 elements)}}
-}
-
-void test_pr10771() {
-    double foo[4096];  // expected-note {{array 'foo' declared here}}
-
-    ((char*)foo)[sizeof(foo) - 1] = '\0';  // no-warning
-    *(((char*)foo) + sizeof(foo) - 1) = '\0';  // no-warning
-
-    ((char*)foo)[sizeof(foo)] = '\0';  // expected-warning {{array index 32768 is past the end of the array (which contains 32768 elements)}}
-
-    // TODO: This should probably warn, too.
-    *(((char*)foo) + sizeof(foo)) = '\0';  // no-warning
-}
-
-int test_pr11007_aux(const char * restrict, ...);
-  
-// Test checking with varargs.
-void test_pr11007() {
-  double a[5]; // expected-note {{array 'a' declared here}}
-  test_pr11007_aux("foo", a[1000]); // expected-warning {{array index 1000 is past the end of the array}}
-}
-
-void test_rdar10916006(void)
-{
-	int a[128]; // expected-note {{array 'a' declared here}}
-	a[(unsigned char)'\xA1'] = 1; // expected-warning {{array index 161 is past the end of the array}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/arrow-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/arrow-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/arrow-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct T { 
-  void f();
-};
-
-struct A {
-  T* operator->(); // expected-note{{candidate function}}
-};
-
-struct B {
-  T* operator->(); // expected-note{{candidate function}}
-};
-
-struct C : A, B {
-};
-
-struct D : A { };
-
-struct E; // expected-note {{forward declaration of 'E'}}
-
-void f(C &c, D& d, E& e) {
-  c->f(); // expected-error{{use of overloaded operator '->' is ambiguous}}
-  d->f();
-  e->f(); // expected-error{{incomplete definition of type}}
-}
-
-// rdar://8875304
-namespace rdar8875304 {
-class Point {};
-class Line_Segment{ public: Line_Segment(const Point&){} };
-class Node { public: Point Location(){ Point p; return p; } };
-
-void f()
-{
-   Node** node1;
-   Line_Segment(node1->Location()); // expected-error {{not a structure or union}}
-}
-}
-
-
-namespace arrow_suggest {
-
-template <typename T>
-class wrapped_ptr {
- public:
-  wrapped_ptr(T* ptr) : ptr_(ptr) {}
-  T* operator->() { return ptr_; }
-  void Check(); // expected-note {{'Check' declared here}}
- private:
-  T *ptr_;
-};
-
-class Worker {
- public:
-  void DoSomething();
-  void Chuck();
-};
-
-void test() {
-  wrapped_ptr<Worker> worker(new Worker);
-  worker.DoSomething(); // expected-error {{no member named 'DoSomething' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'; did you mean to use '->' instead of '.'?}}
-  worker.DoSamething(); // expected-error {{no member named 'DoSamething' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'}}
-  worker.Chuck(); // expected-error {{no member named 'Chuck' in 'arrow_suggest::wrapped_ptr<arrow_suggest::Worker>'; did you mean 'Check'?}}
-}
-
-} // namespace arrow_suggest

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ast-print.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ast-print.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ast-print.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,150 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s | FileCheck %s
-
-// CHECK: r;
-// CHECK-NEXT: (r->method());
-struct MyClass
-{
-    void method() {}
-};
-
-struct Reference
-{
-    MyClass* object;
-    MyClass* operator ->() { return object; }
-};
-
-void test1() {
-    Reference r;
-    (r->method());
-}
-
-// CHECK: if (int a = 1)
-// CHECK:  while (int a = 1)
-// CHECK:  switch (int a = 1)
-
-void test2()
-{
-    if (int a = 1) { }
-    while (int a = 1) { }
-    switch (int a = 1) { }
-}
-
-// CHECK: new (1) int;
-void *operator new (typeof(sizeof(1)), int, int = 2);
-void test3() {
-  new (1) int;
-}
-
-// CHECK: new X;
-struct X {
-  void *operator new (typeof(sizeof(1)), int = 2);
-};
-void test4() { new X; }
-
-// CHECK: for (int i = 2097, j = 42; false;)
-void test5() {
-  for (int i = 2097, j = 42; false;) {}
-}
-
-// CHECK: test6fn((int &)y);
-void test6fn(int& x);
-void test6() {
-    unsigned int y = 0;
-    test6fn((int&)y);
-}
-
-// CHECK: S s( 1, 2 );
-
-template <class S> void test7()
-{
-    S s( 1,2 );
-}
-
-
-// CHECK: t.~T();
-
-template <typename T> void test8(T t) { t.~T(); }
-
-
-// CHECK:      enum E {
-// CHECK-NEXT:  A,
-// CHECK-NEXT:  B,
-// CHECK-NEXT:  C
-// CHECK-NEXT:  };
-// CHECK-NEXT: {{^[ ]+}}E a = A;
-
-struct test9
-{
-    void f()
-    {
-        enum E { A, B, C };
-        E a = A;
-    }
-};
-
-namespace test10 {
-  namespace M {
-    template<typename T>
-    struct X {
-      enum { value };
-    };
-  }
-}
-
-typedef int INT;
-
-// CHECK: test11
-// CHECK-NEXT: return test10::M::X<INT>::value;
-int test11() {
-  return test10::M::X<INT>::value;
-}
-
-
-struct DefaultArgClass
-{
-  DefaultArgClass(int a = 1) {}
-};
-
-struct NoArgClass
-{
-  NoArgClass() {}
-};
-
-struct VirualDestrClass
-{
-  VirualDestrClass(int arg);
-  virtual ~VirualDestrClass();
-};
-
-struct ConstrWithCleanupsClass
-{
-  ConstrWithCleanupsClass(const VirualDestrClass& cplx = VirualDestrClass(42));
-};
-
-// CHECK: test12
-// CHECK-NEXT: DefaultArgClass useDefaultArg;
-// CHECK-NEXT: DefaultArgClass overrideDefaultArg(1);
-// CHECK-NEXT: NoArgClass noArg;
-// CHECK-NEXT: ConstrWithCleanupsClass cwcNoArg;
-// CHECK-NEXT: ConstrWithCleanupsClass cwcOverrideArg(48);
-// CHECK-NEXT: ConstrWithCleanupsClass cwcExplicitArg(VirualDestrClass(56));
-void test12() {
-  DefaultArgClass useDefaultArg;
-  DefaultArgClass overrideDefaultArg(1);
-  NoArgClass noArg;
-  ConstrWithCleanupsClass cwcNoArg;
-  ConstrWithCleanupsClass cwcOverrideArg(48);
-  ConstrWithCleanupsClass cwcExplicitArg(VirualDestrClass(56));
-}
-
-// CHECK: void test13() {
-// CHECK:   _Atomic(int) i;
-// CHECK:   __c11_atomic_init(&i, 0);
-// CHECK:   __c11_atomic_load(&i, 0);
-// CHECK: }
-void test13() {
-  _Atomic(int) i;
-  __c11_atomic_init(&i, 0);
-  __c11_atomic_load(&i, 0);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/atomic-type.cxx
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/atomic-type.cxx	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/atomic-type.cxx	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -verify -pedantic %s
-
-template<typename T> struct atomic {
-  _Atomic(T) value;
-
-  void f() _Atomic; // expected-error {{expected ';' at end of declaration list}}
-};
-
-template<typename T> struct user {
-  struct inner { char n[sizeof(T)]; };
-  atomic<inner> i;
-};
-
-user<int> u;
-
-// Test overloading behavior of atomics.
-struct A { };
-
-int &ovl1(_Atomic(int));
-int &ovl1(_Atomic int); // ok, redeclaration
-long &ovl1(_Atomic(long));
-float &ovl1(_Atomic(float));
-double &ovl1(_Atomic(A const *const *));
-double &ovl1(A const *const *_Atomic);
-short &ovl1(_Atomic(A **));
-
-void test_overloading(int i, float f, _Atomic(int) ai, _Atomic(float) af,
-                      long l, _Atomic(long) al, A const *const *acc,
-                      A const ** ac, A **a) {
-  int& ir1 = ovl1(i);
-  int& ir2 = ovl1(ai);
-  long& lr1 = ovl1(l);
-  long& lr2 = ovl1(al);
-  float &fr1 = ovl1(f);
-  float &fr2 = ovl1(af);
-  double &dr1 = ovl1(acc);
-  double &dr2 = ovl1(ac);
-  short &sr1 = ovl1(a);
-}
-
-typedef int (A::*fp)() _Atomic; // expected-error {{expected ';' after top level declarator}} expected-warning {{does not declare anything}}
-
-typedef _Atomic(int(A::*)) atomic_mem_ptr_to_int;
-typedef int(A::*_Atomic atomic_mem_ptr_to_int);
-
-typedef _Atomic(int)(A::*mem_ptr_to_atomic_int);
-typedef _Atomic int(A::*mem_ptr_to_atomic_int);
-
-typedef _Atomic(int)&atomic_int_ref;
-typedef _Atomic int &atomic_int_ref;
-typedef _Atomic atomic_int_ref atomic_int_ref; // ok, qualifiers on references ignored in this case.
-
-typedef int &_Atomic atomic_reference_to_int; // expected-error {{'_Atomic' qualifier may not be applied to a reference}}
-typedef _Atomic(int &) atomic_reference_to_int; // expected-error {{_Atomic cannot be applied to reference type 'int &'}}
-
-struct S {
-  _Atomic union { int n; }; // expected-warning {{anonymous union cannot be '_Atomic'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-after-definition.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-after-definition.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-after-definition.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct X { };
-struct Y { };
-
-bool f0(X) { return true; } // expected-note{{definition}}
-bool f1(X) { return true; }
-
-__attribute__ ((__visibility__("hidden"))) bool f0(X); // expected-warning{{attribute}}
-__attribute__ ((__visibility__("hidden"))) bool f1(Y);

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -verify -pedantic -std=c++11 %s
-
-int align_illegal alignas(3); //expected-error {{requested alignment is not a power of 2}}
-char align_big alignas(int);
-int align_small alignas(1); // expected-error {{requested alignment is less than minimum}}
-int align_multiple alignas(1) alignas(8) alignas(1);
-alignas(4) int align_before;
-
-struct align_member {
-  int member alignas(8);
-  int bitfield alignas(1) : 1; // expected-error {{}}
-};
-
-void f(alignas(1) char c) { // expected-error {{'alignas' attribute cannot be applied to a function parameter}}
-  alignas(1) register char k; // expected-error {{'alignas' attribute cannot be applied to a variable with 'register' storage class}}
-  try {
-  } catch (alignas(4) int n) { // expected-error {{'alignas' attribute cannot be applied to a 'catch' variable}}
-  }
-}
-
-
-template <unsigned A> struct alignas(A) align_class_template {};
-
-template <typename... T> struct alignas(T...) align_class_temp_pack_type {};
-template <unsigned... A> struct alignas(A...) align_class_temp_pack_expr {};
-struct alignas(int...) alignas_expansion_no_packs {}; // expected-error {{pack expansion does not contain any unexpanded parameter packs}}
-template <typename... A> struct outer {
-  template <typename... B> struct alignas(alignof(A) * alignof(B)...) inner {};
-  // expected-error at -1 {{pack expansion contains parameter packs 'A' and 'B' that have different lengths (1 vs. 2)}}
-};
-outer<int>::inner<short, double> mismatched_packs; // expected-note {{in instantiation of}}
-
-typedef char align_typedef alignas(8); // expected-error {{'alignas' attribute only applies to variables, data members and tag types}}
-template<typename T> using align_alias_template = align_typedef alignas(8); // expected-error {{'alignas' attribute cannot be applied to types}}
-
-static_assert(alignof(align_big) == alignof(int), "k's alignment is wrong"); // expected-warning{{'alignof' applied to an expression is a GNU extension}}
-static_assert(alignof(align_small) == 1, "j's alignment is wrong"); // expected-warning{{'alignof' applied to an expression is a GNU extension}}
-static_assert(alignof(align_multiple) == 8, "l's alignment is wrong"); // expected-warning{{'alignof' applied to an expression is a GNU extension}}
-static_assert(alignof(align_member) == 8, "quuux's alignment is wrong");
-static_assert(sizeof(align_member) == 8, "quuux's size is wrong");
-static_assert(alignof(align_class_template<8>) == 8, "template's alignment is wrong");
-static_assert(alignof(align_class_template<16>) == 16, "template's alignment is wrong");
-static_assert(alignof(align_class_temp_pack_type<short, int, long>) == alignof(long), "template's alignment is wrong");
-static_assert(alignof(align_class_temp_pack_expr<8, 16, 32>) == 32, "template's alignment is wrong");
-static_assert(alignof(outer<int,char>::inner<double,short>) == alignof(int) * alignof(double), "template's alignment is wrong");
-
-static_assert(alignof(int(int)) >= 1, "alignof(function) not positive"); // expected-warning{{invalid application of 'alignof' to a function type}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-declspec-ignored.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-declspec-ignored.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-declspec-ignored.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
-namespace test1 {
-  __attribute__((visibility("hidden")))  __attribute__((aligned)) class A; // expected-warning{{attribute 'visibility' is ignored, place it after "class" to apply attribute to type declaration}} \
-  // expected-warning{{attribute 'aligned' is ignored, place it after "class" to apply attribute to type declaration}}
-  __attribute__((visibility("hidden")))  __attribute__((aligned)) struct B; // expected-warning{{attribute 'visibility' is ignored, place it after "struct" to apply attribute to type declaration}} \
-  // expected-warning{{attribute 'aligned' is ignored, place it after "struct" to apply attribute to type declaration}}
-  __attribute__((visibility("hidden")))  __attribute__((aligned)) union C; // expected-warning{{attribute 'visibility' is ignored, place it after "union" to apply attribute to type declaration}} \
-  // expected-warning{{attribute 'aligned' is ignored, place it after "union" to apply attribute to type declaration}} 
-  __attribute__((visibility("hidden")))  __attribute__((aligned)) enum D {D}; // expected-warning{{attribute 'visibility' is ignored, place it after "enum" to apply attribute to type declaration}} \
-  // expected-warning{{attribute 'aligned' is ignored, place it after "enum" to apply attribute to type declaration}}
-}
-
-namespace test2 {
-  __attribute__((visibility("hidden")))  __attribute__((aligned)) class A {} a;
-  __attribute__((visibility("hidden")))  __attribute__((aligned)) struct B {} b;
-  __attribute__((visibility("hidden")))  __attribute__((aligned)) union C {} c;
-  __attribute__((visibility("hidden")))  __attribute__((aligned)) enum D {D} d;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-deprecated.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-deprecated.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-deprecated.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,246 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fexceptions
-class A {
-  void f() __attribute__((deprecated)); // expected-note 2 {{declared here}}
-  void g(A* a);
-  void h(A* a) __attribute__((deprecated));
-
-  int b __attribute__((deprecated)); // expected-note 2 {{declared here}}
-};
-
-void A::g(A* a)
-{
-  f(); // expected-warning{{'f' is deprecated}}
-  a->f(); // expected-warning{{'f' is deprecated}}
-  
-  (void)b; // expected-warning{{'b' is deprecated}}
-  (void)a->b; // expected-warning{{'b' is deprecated}}
-}
-
-void A::h(A* a)
-{
-  f();
-  a->f();
-  
-  (void)b;
-  (void)a->b;
-}
-
-struct B {
-  virtual void f() __attribute__((deprecated)); // expected-note 4 {{declared here}}
-  void g();
-};
-
-void B::g() {
-  f();
-  B::f(); // expected-warning{{'f' is deprecated}}
-}
-
-struct C : B {
-  virtual void f();
-  void g();
-};
-
-void C::g() {
-  f();
-  C::f();
-  B::f(); // expected-warning{{'f' is deprecated}}
-}
-
-void f(B* b, C *c) {
-  b->f();
-  b->B::f(); // expected-warning{{'f' is deprecated}}
-  
-  c->f();
-  c->C::f();
-  c->B::f(); // expected-warning{{'f' is deprecated}}
-}
-
-struct D {
-  virtual void f() __attribute__((deprecated));
-};
-
-void D::f() { }
-
-void f(D* d) {
-  d->f();
-}
-
-
-// Overloaded namespace members.
-namespace test1 {
-  void foo(int) __attribute__((deprecated)); // expected-note {{declared here}}
-  void test1() { foo(10); } // expected-warning {{deprecated}}
-  void foo(short) __attribute__((deprecated)); // expected-note {{declared here}}
-  void test2(short s) { foo(s); } // expected-warning {{deprecated}}
-  void foo(long);
-  void test3(long l) { foo(l); }
-  struct A {
-    friend void foo(A*) __attribute__((deprecated)); // expected-note {{declared here}}
-  };
-  void test4(A *a) { foo(a); } // expected-warning {{deprecated}}
-
-  namespace ns {
-    struct Foo {};
-    void foo(const Foo &f) __attribute__((deprecated)); // expected-note {{declared here}}
-  }
-  void test5() {
-    foo(ns::Foo()); // expected-warning {{deprecated}}
-  }
-}
-
-// Overloaded class members.
-namespace test2 {
-  struct A {
-    void foo(int) __attribute__((deprecated)); // expected-note 2 {{declared here}}
-    void foo(long);
-    static void bar(int) __attribute__((deprecated)); // expected-note 3 {{declared here}}
-    static void bar(long);
-
-    void test2(int i, long l);
-  };
-  void test1(int i, long l) {
-    A a;
-    a.foo(i); // expected-warning {{deprecated}}
-    a.foo(l);
-    a.bar(i); // expected-warning {{deprecated}}
-    a.bar(l);
-    A::bar(i); // expected-warning {{deprecated}}
-    A::bar(l);
-  }
-
-  void A::test2(int i, long l) {
-    foo(i); // expected-warning {{deprecated}}
-    foo(l);
-    bar(i); // expected-warning {{deprecated}}
-    bar(l);
-  }
-}
-
-// Overloaded operators.
-namespace test3 {
-  struct A {
-    void operator*(const A &);
-    void operator*(int) __attribute__((deprecated)); // expected-note {{declared here}}
-    void operator-(const A &) const;
-  };
-  void operator+(const A &, const A &);
-  void operator+(const A &, int) __attribute__((deprecated)); // expected-note {{declared here}}
-  void operator-(const A &, int) __attribute__((deprecated)); // expected-note {{declared here}}
-
-  void test() {
-    A a, b;
-    a + b;
-    a + 1; // expected-warning {{deprecated}}
-    a - b;
-    a - 1; // expected-warning {{deprecated}}
-    a * b;
-    a * 1; // expected-warning {{deprecated}}
-  }
-}
-
-// Overloaded operator call.
-namespace test4 {
-  struct A {
-    typedef void (*intfn)(int);
-    typedef void (*unintfn)(unsigned);
-    operator intfn() __attribute__((deprecated)); // expected-note {{declared here}}
-    operator unintfn();
-    void operator ()(A &) __attribute__((deprecated)); // expected-note {{declared here}}
-    void operator ()(const A &);
-  };
-
-  void test() {
-    A a;
-    a(1); // expected-warning {{deprecated}}
-    a(1U);
-
-    A &b = a;
-    const A &c = a;
-    a(b); // expected-warning {{deprecated}}
-    a(c);
-  }
-}
-
-namespace test5 {
-  struct A {
-    operator int() __attribute__((deprecated)); // expected-note 3 {{declared here}}
-    operator long();
-  };
-  void test1(A a) {
-    int i = a; // expected-warning {{deprecated}}
-    long l = a;
-  }
-
-  void foo(int);
-  void foo(void*);
-  void bar(long);
-  void bar(void*);
-  void test2(A a) {
-    foo(a); // expected-warning {{deprecated}}
-    bar(a);
-  }
-
-  struct B {
-    int myInt;
-    long myLong;
-
-    B(A &a) :
-      myInt(a), // expected-warning {{deprecated}}
-      myLong(a)
-    {}
-  };
-}
-
-// rdar://problem/8518751
-namespace test6 {
-  enum __attribute__((deprecated)) A { // expected-note {{declared here}}
-    a0 // expected-note {{declared here}}
-  };
-  void testA() {
-    A x; // expected-warning {{'A' is deprecated}}
-    x = a0; // expected-warning {{'a0' is deprecated}}
-  }
-  
-  enum B {
-    b0 __attribute__((deprecated)), // expected-note {{declared here}}
-    b1
-  };
-  void testB() {
-    B x;
-    x = b0; // expected-warning {{'b0' is deprecated}}
-    x = b1;
-  }
-
-  template <class T> struct C {
-    enum __attribute__((deprecated)) Enum { // expected-note {{declared here}}
-      c0 // expected-note {{declared here}}
-    };
-  };
-  void testC() {
-    C<int>::Enum x; // expected-warning {{'Enum' is deprecated}}
-    x = C<int>::c0; // expected-warning {{'c0' is deprecated}}
-  }
-
-  template <class T> struct D {
-    enum Enum {
-      d0,
-      d1 __attribute__((deprecated)), // expected-note {{declared here}}
-    };
-  };
-  void testD() {
-    D<int>::Enum x;
-    x = D<int>::d0;
-    x = D<int>::d1; // expected-warning {{'d1' is deprecated}}
-  }
-}
-
-namespace test7 {
-  struct X {
-    void* operator new(typeof(sizeof(void*))) __attribute__((deprecated));  // expected-note{{'operator new' declared here}}
-    void operator delete(void *) __attribute__((deprecated));  // expected-note{{'operator delete' declared here}}
-  };
-
-  void test() {
-    X *x = new X;  // expected-warning{{'operator new' is deprecated}} expected-warning{{'operator delete' is deprecated}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-format.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-format.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-format.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wformat-nonliteral -verify %s
-struct S {
-  static void f(const char*, ...) __attribute__((format(printf, 1, 2)));
-  static const char* f2(const char*) __attribute__((format_arg(1)));
-
-  // GCC has a hidden 'this' argument in member functions which is why
-  // the format argument is argument 2 here.
-  void g(const char*, ...) __attribute__((format(printf, 2, 3)));
-  const char* g2(const char*) __attribute__((format_arg(2)));
-
-  void h(const char*, ...) __attribute__((format(printf, 1, 4))); // \
-      expected-error{{implicit this argument as the format string}}
-  void h2(const char*, ...) __attribute__((format(printf, 2, 1))); // \
-      expected-error{{out of bounds}}
-  const char* h3(const char*) __attribute__((format_arg(1))); // \
-      expected-error{{invalid for the implicit this argument}}
-
-  void operator() (const char*, ...) __attribute__((format(printf, 2, 3)));
-};
-
-// PR5521
-struct A { void a(const char*,...) __attribute((format(printf,2,3))); };
-void b(A x) {
-  x.a("%d", 3);
-}
-
-// PR8625: correctly interpret static member calls as not having an implicit
-// 'this' argument.
-namespace PR8625 {
-  struct S {
-    static void f(const char*, const char*, ...)
-      __attribute__((format(printf, 2, 3)));
-  };
-  void test(S s, const char* str) {
-    s.f(str, "%s", str);
-  }
-}
-
-// Make sure we interpret member operator calls as having an implicit
-// this argument.
-void test_operator_call(S s, const char* str) {
-  s("%s", str);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-address.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-address.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-address.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify  %s
-
-#define NO_SANITIZE_ADDRESS __attribute__((no_sanitize_address))
-
-#if !__has_attribute(no_sanitize_address)
-#error "Should support no_sanitize_address"
-#endif
-
-void noanal_fun() NO_SANITIZE_ADDRESS;
-
-void noanal_fun_args() __attribute__((no_sanitize_address(1))); // \
-  // expected-error {{attribute takes no arguments}}
-
-int noanal_testfn(int y) NO_SANITIZE_ADDRESS;
-
-int noanal_testfn(int y) {
-  int x NO_SANITIZE_ADDRESS = y; // \
-    // expected-error {{'no_sanitize_address' attribute only applies to functions and methods}}
-  return x;
-}
-
-int noanal_test_var NO_SANITIZE_ADDRESS; // \
-  // expected-error {{'no_sanitize_address' attribute only applies to functions and methods}}
-
-class NoanalFoo {
- private:
-  int test_field NO_SANITIZE_ADDRESS; // \
-    // expected-error {{'no_sanitize_address' attribute only applies to functions and methods}}
-  void test_method() NO_SANITIZE_ADDRESS;
-};
-
-class NO_SANITIZE_ADDRESS NoanalTestClass { // \
-  // expected-error {{'no_sanitize_address' attribute only applies to functions and methods}}
-};
-
-void noanal_fun_params(int lvar NO_SANITIZE_ADDRESS); // \
-  // expected-error {{'no_sanitize_address' attribute only applies to functions and methods}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-memory.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-memory.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-memory.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify  %s
-
-#define NO_SANITIZE_MEMORY __attribute__((no_sanitize_memory))
-
-#if !__has_attribute(no_sanitize_memory)
-#error "Should support no_sanitize_memory"
-#endif
-
-void noanal_fun() NO_SANITIZE_MEMORY;
-
-void noanal_fun_args() __attribute__((no_sanitize_memory(1))); // \
-  // expected-error {{attribute takes no arguments}}
-
-int noanal_testfn(int y) NO_SANITIZE_MEMORY;
-
-int noanal_testfn(int y) {
-  int x NO_SANITIZE_MEMORY = y; // \
-    // expected-error {{'no_sanitize_memory' attribute only applies to functions and methods}}
-  return x;
-}
-
-int noanal_test_var NO_SANITIZE_MEMORY; // \
-  // expected-error {{'no_sanitize_memory' attribute only applies to functions and methods}}
-
-class NoanalFoo {
- private:
-  int test_field NO_SANITIZE_MEMORY; // \
-    // expected-error {{'no_sanitize_memory' attribute only applies to functions and methods}}
-  void test_method() NO_SANITIZE_MEMORY;
-};
-
-class NO_SANITIZE_MEMORY NoanalTestClass { // \
-  // expected-error {{'no_sanitize_memory' attribute only applies to functions and methods}}
-};
-
-void noanal_fun_params(int lvar NO_SANITIZE_MEMORY); // \
-  // expected-error {{'no_sanitize_memory' attribute only applies to functions and methods}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-thread.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-thread.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-no-sanitize-thread.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify  %s
-
-#define NO_SANITIZE_THREAD __attribute__((no_sanitize_thread))
-
-#if !__has_attribute(no_sanitize_thread)
-#error "Should support no_sanitize_thread"
-#endif
-
-void noanal_fun() NO_SANITIZE_THREAD;
-
-void noanal_fun_args() __attribute__((no_sanitize_thread(1))); // \
-  // expected-error {{attribute takes no arguments}}
-
-int noanal_testfn(int y) NO_SANITIZE_THREAD;
-
-int noanal_testfn(int y) {
-  int x NO_SANITIZE_THREAD = y; // \
-    // expected-error {{'no_sanitize_thread' attribute only applies to functions and methods}}
-  return x;
-}
-
-int noanal_test_var NO_SANITIZE_THREAD; // \
-  // expected-error {{'no_sanitize_thread' attribute only applies to functions and methods}}
-
-class NoanalFoo {
- private:
-  int test_field NO_SANITIZE_THREAD; // \
-    // expected-error {{'no_sanitize_thread' attribute only applies to functions and methods}}
-  void test_method() NO_SANITIZE_THREAD;
-};
-
-class NO_SANITIZE_THREAD NoanalTestClass { // \
-  // expected-error {{'no_sanitize_thread' attribute only applies to functions and methods}}
-};
-
-void noanal_fun_params(int lvar NO_SANITIZE_THREAD); // \
-  // expected-error {{'no_sanitize_thread' attribute only applies to functions and methods}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-nodebug.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-nodebug.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-nodebug.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// Note: most of the 'nodebug' tests are in attr-nodebug.c.
-
-// expected-no-diagnostics
-class c {
-  void t3() __attribute__((nodebug));
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-nonnull.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-nonnull.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-nonnull.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct S {
-  S(const char *) __attribute__((nonnull(2)));
-
-  static void f(const char*, const char*) __attribute__((nonnull(1)));
-
-  // GCC has a hidden 'this' argument in member functions, so the middle
-  // argument is the one that must not be null.
-  void g(const char*, const char*, const char*) __attribute__((nonnull(3)));
-
-  void h(const char*) __attribute__((nonnull(1))); // \
-      expected-error{{invalid for the implicit this argument}}
-};
-
-void test() {
-  S s(0); // expected-warning{{null passed}}
-
-  s.f(0, ""); // expected-warning{{null passed}}
-  s.f("", 0);
-  s.g("", 0, ""); // expected-warning{{null passed}}
-  s.g(0, "", 0);
-}
-
-namespace rdar8769025 {
-  __attribute__((nonnull)) void f0(int *&p);
-  __attribute__((nonnull)) void f1(int * const &p);
-  __attribute__((nonnull(2))) void f2(int i, int * const &p);
-
-  void test_f1() {
-    f1(0); // expected-warning{{null passed to a callee which requires a non-null argument}}
-    f2(0, 0); // expected-warning{{null passed to a callee which requires a non-null argument}}
-  }
-}
-
-namespace test3 {
-__attribute__((nonnull(1))) void f(void *ptr);
-
-void g() {
-  f(static_cast<char*>((void*)0));  // expected-warning{{null passed}}
-  f(static_cast<char*>(0));  // expected-warning{{null passed}}
-}
-}
-
-namespace test4 {
-struct X {
-  bool operator!=(const void *) const __attribute__((nonnull(2)));
-};
-bool operator==(const X&, const void *) __attribute__((nonnull(2)));
-
-void test(const X& x) {
-  (void)(x == 0);  // expected-warning{{null passed}}
-  (void)(x != 0);  // expected-warning{{null passed}}
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-noreturn.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-noreturn.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-noreturn.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,165 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Reachability tests have to come first because they get suppressed
-// if any errors have occurred.
-namespace test5 {
-  struct A {
-    __attribute__((noreturn)) void fail();
-    void nofail();
-  } a;
-
-  int &test1() {
-    a.nofail();
-  } // expected-warning {{control reaches end of non-void function}}
-
-  int &test2() {
-    a.fail();
-  }
-}
-
-// PR5620
-void f0() __attribute__((__noreturn__));
-void f1(void (*)()); 
-void f2() { f1(f0); }
-
-// Taking the address of a noreturn function
-void test_f0a() {
-  void (*fp)() = f0;
-  void (*fp1)() __attribute__((noreturn)) = f0;
-}
-
-// Taking the address of an overloaded noreturn function 
-void f0(int) __attribute__((__noreturn__));
-
-void test_f0b() {
-  void (*fp)() = f0;
-  void (*fp1)() __attribute__((noreturn)) = f0;
-}
-
-// No-returned function pointers
-typedef void (* noreturn_fp)() __attribute__((noreturn));
-
-void f3(noreturn_fp); // expected-note{{candidate function}}
-
-void test_f3() {
-  f3(f0); // okay
-  f3(f2); // expected-error{{no matching function for call}}
-}
-
-
-class xpto {
-  int blah() __attribute__((noreturn));
-};
-
-int xpto::blah() {
-  return 3; // expected-warning {{function 'blah' declared 'noreturn' should not return}}
-}
-
-// PR12948
-
-namespace PR12948 {
-  template<int>
-  void foo() __attribute__((__noreturn__));
-
-  template<int>
-  void foo() {
-    while (1) continue;
-  }
-
-  void bar() __attribute__((__noreturn__));
-
-  void bar() {
-    foo<0>();
-  }
-
-
-  void baz() __attribute__((__noreturn__));
-  typedef void voidfn();
-  voidfn baz;
-
-  template<typename> void wibble()  __attribute__((__noreturn__));
-  template<typename> voidfn wibble;
-}
-
-// PR15291
-// Overload resolution per over.over should allow implicit noreturn adjustment.
-namespace PR15291 {
-  __attribute__((noreturn)) void foo(int) {}
-  __attribute__((noreturn)) void foo(double) {}
-
-  template <typename T>
-  __attribute__((noreturn)) void bar(T) {}
-
-  void baz(int) {}
-  void baz(double) {}
-
-  template <typename T>
-  void qux(T) {}
-
-  // expected-note at +5 {{candidate function [with T = void (*)(int) __attribute__((noreturn))] not viable: no overload of 'baz' matching 'void (*)(int) __attribute__((noreturn))' for 1st argument}}
-  // expected-note at +4 {{candidate function [with T = void (*)(int) __attribute__((noreturn))] not viable: no overload of 'qux' matching 'void (*)(int) __attribute__((noreturn))' for 1st argument}}
-  // expected-note at +3 {{candidate function [with T = void (*)(int) __attribute__((noreturn))] not viable: no overload of 'bar' matching 'void (*)(int) __attribute__((noreturn))' for 1st argument}}
-  // expected-note at +2 {{candidate function [with T = void (*)(int)] not viable: no overload of 'bar' matching 'void (*)(int)' for 1st argument}}
-  // expected-note at +1 {{candidate function [with T = void (int)] not viable: no overload of 'bar' matching 'void (*)(int)' for 1st argument}}
-  template <typename T> void accept_T(T) {}
-
-  // expected-note at +1 {{candidate function not viable: no overload of 'bar' matching 'void (*)(int)' for 1st argument}}
-  void accept_fptr(void (*f)(int)) {
-    f(42);
-  }
-
-  // expected-note at +2 {{candidate function not viable: no overload of 'baz' matching 'void (*)(int) __attribute__((noreturn))' for 1st argument}}
-  // expected-note at +1 {{candidate function not viable: no overload of 'qux' matching 'void (*)(int) __attribute__((noreturn))' for 1st argument}}
-  void accept_noreturn_fptr(void __attribute__((noreturn)) (*f)(int)) {
-    f(42);
-  }
-
-  typedef void (*fptr_t)(int);
-  typedef void __attribute__((noreturn)) (*fptr_noreturn_t)(int);
-
-  // expected-note at +1 {{candidate function not viable: no overload of 'bar' matching 'fptr_t' (aka 'void (*)(int)') for 1st argument}}
-  void accept_fptr_t(fptr_t f) {
-    f(42);
-  }
-
-  // expected-note at +2 {{candidate function not viable: no overload of 'baz' matching 'fptr_noreturn_t' (aka 'void (*)(int) __attribute__((noreturn))') for 1st argument}}
-  // expected-note at +1 {{candidate function not viable: no overload of 'qux' matching 'fptr_noreturn_t' (aka 'void (*)(int) __attribute__((noreturn))') for 1st argument}}
-  void accept_fptr_noreturn_t(fptr_noreturn_t f) {
-    f(42);
-  }
-
-  // Stripping noreturn should work if everything else is correct.
-  void strip_noreturn() {
-    accept_fptr(foo);
-    accept_fptr(bar<int>);
-    accept_fptr(bar<double>); // expected-error {{no matching function for call to 'accept_fptr'}}
-
-    accept_fptr_t(foo);
-    accept_fptr_t(bar<int>);
-    accept_fptr_t(bar<double>); // expected-error {{no matching function for call to 'accept_fptr_t'}}
-
-    accept_T<void __attribute__((noreturn)) (*)(int)>(foo);
-    accept_T<void __attribute__((noreturn)) (*)(int)>(bar<int>);
-    accept_T<void __attribute__((noreturn)) (*)(int)>(bar<double>); // expected-error {{no matching function for call to 'accept_T'}}
-
-    accept_T<void (*)(int)>(foo);
-    accept_T<void (*)(int)>(bar<int>);
-    accept_T<void (*)(int)>(bar<double>); // expected-error {{no matching function for call to 'accept_T'}}
-
-    accept_T<void (int)>(foo);
-    accept_T<void (int)>(bar<int>);
-    accept_T<void (int)>(bar<double>); // expected-error {{no matching function for call to 'accept_T'}}
-  }
-
-  // Introducing noreturn should not work.
-  void introduce_noreturn() {
-    accept_noreturn_fptr(baz); // expected-error {{no matching function for call to 'accept_noreturn_fptr'}}
-    accept_noreturn_fptr(qux<int>); // expected-error {{no matching function for call to 'accept_noreturn_fptr'}}
-
-    accept_fptr_noreturn_t(baz); // expected-error {{no matching function for call to 'accept_fptr_noreturn_t'}}
-    accept_fptr_noreturn_t(qux<int>); // expected-error {{no matching function for call to 'accept_fptr_noreturn_t'}}
-
-    accept_T<void __attribute__((noreturn)) (*)(int)>(baz); // expected-error {{no matching function for call to 'accept_T'}}
-    accept_T<void __attribute__((noreturn)) (*)(int)>(qux<int>); // expected-error {{no matching function for call to 'accept_T'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-print.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-print.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-print.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -ast-print -fms-extensions | FileCheck %s
-
-// CHECK: int x __attribute__((aligned(4)));
-int x __attribute__((aligned(4)));
-
-// FIXME: Print this at a valid location for a __declspec attr.
-// CHECK: int y __declspec(align(4));
-__declspec(align(4)) int y;
-
-// CHECK: void foo() __attribute__((const));
-void foo() __attribute__((const));
-
-// CHECK: void bar() __attribute__((__const));
-void bar() __attribute__((__const));
-
-// FIXME: Print this with correct format and order.
-// CHECK: void foo1() __attribute__((pure)) __attribute__((noinline));
-void foo1() __attribute__((noinline, pure));

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-regparm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-regparm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-regparm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-pc-linux-gnu %s
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-apple-darwin10 %s
-
-// PR7025
-struct X0 {
-  void __attribute__((regparm(3))) f0();
-  void __attribute__((regparm(3))) f1();
-  void __attribute__((regparm(3))) f2(); // expected-note{{previous declaration is here}}
-  void f3(); // expected-note{{previous declaration is here}}
-};
-
-void X0::f0() { }
-void __attribute__((regparm(3))) X0::f1() { }
-void __attribute__((regparm(2))) X0::f2() { } // expected-error{{function declared with regparm(2) attribute was previously declared with the regparm(3) attribute}}
-void __attribute__((regparm(2))) X0::f3() { } // expected-error{{function declared with regparm(2) attribute was previously declared without the regparm attribute}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-sentinel.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-sentinel.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-sentinel.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f(int, ...) __attribute__((sentinel));
-
-void g() {
-  f(1, 2, __null);
-}
-
-typedef __typeof__(sizeof(int)) size_t;
-
-struct S {
-  S(int,...) __attribute__((sentinel)); // expected-note {{marked sentinel}}
-  void a(int,...) __attribute__((sentinel)); // expected-note {{marked sentinel}}
-  void* operator new(size_t,...) __attribute__((sentinel)); // expected-note {{marked sentinel}}
-  void operator()(int,...) __attribute__((sentinel)); // expected-note {{marked sentinel}}
-};
-
-void class_test() {
-  S s(1,2,3); // expected-warning {{missing sentinel in function call}}
-  S* s2 = new (1,2,3) S(1, __null); // expected-warning {{missing sentinel in function call}}
-  s2->a(1,2,3); // expected-warning {{missing sentinel in function call}}
-  s(1,2,3); // expected-warning {{missing sentinel in function call}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-unavailable.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-unavailable.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-unavailable.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int &foo(int); // expected-note {{candidate}}
-double &foo(double); // expected-note {{candidate}}
-void foo(...) __attribute__((__unavailable__)); // expected-note {{candidate function}} \
-// expected-note{{function has been explicitly marked unavailable here}}
-
-void bar(...) __attribute__((__unavailable__)); // expected-note 2{{explicitly marked unavailable}}
-
-void test_foo(short* sp) {
-  int &ir = foo(1);
-  double &dr = foo(1.0);
-  foo(sp); // expected-error{{call to unavailable function 'foo'}}
-
-  void (*fp)(...) = &bar; // expected-error{{'bar' is unavailable}}
-  void (*fp2)(...) = bar; // expected-error{{'bar' is unavailable}}
-
-  int &(*fp3)(int) = foo;
-  void (*fp4)(...) = foo; // expected-error{{'foo' is unavailable}}
-}
-
-namespace radar9046492 {
-// rdar://9046492
-#define FOO __attribute__((unavailable("not available - replaced")))
-
-void foo() FOO; // expected-note {{candidate function has been explicitly made unavailable}}
-void bar() {
-  foo(); // expected-error {{call to unavailable function 'foo': not available - replaced}}
-}
-}
-
-void unavail(short* sp)  __attribute__((__unavailable__));
-void unavail(short* sp) {
-  // No complains inside an unavailable function.
-  int &ir = foo(1);
-  double &dr = foo(1.0);
-  foo(sp);
-  foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-unused.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-unused.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-unused.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -verify -Wunused -Wused-but-marked-unused -fsyntax-only %s
-
-namespace ns_unused { typedef int Int_unused __attribute__((unused)); }
-namespace ns_not_unused { typedef int Int_not_unused; }
-
-void f() {
-  ns_not_unused::Int_not_unused i1; // expected-warning {{unused variable}}
-  ns_unused::Int_unused i0; // expected-warning {{'Int_unused' was marked unused but was used}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-visibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-visibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-visibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <class Element>
-void foo() {
-}
-template <>
- __attribute__((visibility("hidden")))  // expected-note {{previous attribute is here}}
-void foo<int>();
-
-template <>
-void foo<int>();
-
-template <>
- __attribute__((visibility("default"))) // expected-error {{visibility does not match previous declaration}}
-void foo<int>() {
-}
-
-struct x3 {
-  static int y;
-} __attribute((visibility("default"))); // expected-warning {{attribute 'visibility' after definition is ignored}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-weak.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-weak.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-weak.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -verify %s
-
-static int test0 __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}}
-static void test1() __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}}
-
-namespace test2 __attribute__((weak)) { // expected-warning {{'weak' attribute only applies to variables and functions}}
-}
-
-namespace {
-  int test3 __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}}
-  void test4() __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}}
-}
-
-struct Test5 {
-  static void test5() __attribute__((weak)); // no error
-};
-
-namespace {
-  struct Test6 {
-    static void test6() __attribute__((weak)); // expected-error {{weak declaration cannot have internal linkage}}
-  };
-}
-
-// GCC rejects the instantiation with the internal type, but some existing
-// code expects it. It is also not that different from giving hidden visibility
-// to parts of a template that have explicit default visibility, so we accept
-// this.
-template <class T> struct Test7 {
-  void test7() __attribute__((weak)) {}
-  static int var __attribute__((weak));
-};
-template <class T>
-int Test7<T>::var;
-namespace { class Internal; }
-template struct Test7<Internal>;
-template struct Test7<int>;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-weakref.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-weakref.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/attr-weakref.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -fsyntax-only -verify %s
-
-// GCC will accept anything as the argument of weakref. Should we
-// check for an existing decl?
-static int a1() __attribute__((weakref ("foo")));
-static int a2() __attribute__((weakref, alias ("foo")));
-
-static int a3 __attribute__((weakref ("foo")));
-static int a4 __attribute__((weakref, alias ("foo")));
-
-// gcc rejects, clang accepts
-static int a5 __attribute__((alias ("foo"), weakref));
-
-// this is pointless, but accepted by gcc. We reject it.
-static int a6 __attribute__((weakref)); //expected-error {{weakref declaration of 'a6' must also have an alias attribute}}
-
-// gcc warns, clang rejects
-void f(void) {
-  static int a __attribute__((weakref ("v2"))); // expected-error {{declaration of 'a' must be in a global context}}
-}
-
-// both gcc and clang reject
-class c {
-  static int a __attribute__((weakref ("v2"))); // expected-error {{declaration of 'a' must be in a global context}}
-  static int b() __attribute__((weakref ("f3"))); // expected-error {{declaration of 'b' must be in a global context}}
-};
-int a7() __attribute__((weakref ("f1"))); // expected-error {{weakref declaration must have internal linkage}}
-int a8 __attribute__((weakref ("v1"))); // expected-error {{weakref declaration must have internal linkage}}
-
-// gcc accepts this
-int a9 __attribute__((weakref));  // expected-error {{weakref declaration of 'a9' must also have an alias attribute}}
-
-static int a10();
-int a10() __attribute__((weakref ("foo")));

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-void f() {
-  auto int a; // expected-warning {{'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases}}
-  int auto b; // expected-error{{cannot combine with previous 'int' declaration specifier}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-cxx98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-cxx98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-cxx98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wc++11-compat 
-void f() {
-  auto int a; // expected-warning {{'auto' storage class specifier is redundant and incompatible with C++11}}
-  int auto b; // expected-warning {{'auto' storage class specifier is redundant and incompatible with C++11}}
-  auto c; // expected-warning {{C++11 extension}} expected-error {{requires an initializer}}
-  static auto d = 0; // expected-warning {{C++11 extension}}
-  auto static e = 0; // expected-warning {{C++11 extension}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-pragma.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-pragma.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-pragma.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -std=c++11 -ast-dump -ast-dump-filter AutoVar | FileCheck %s
-
-namespace {
-  class foo {
-  };
-}
-
-#pragma GCC visibility push(hidden)
-auto AutoVar = foo();
-
-// CHECK: VarDecl {{.*}} AutoVar
-// CHECK-NOT: VisibilityAttr

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-subst-failure.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-subst-failure.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/auto-subst-failure.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-void f() {
-  auto a = f(); // expected-error {{variable has incomplete type 'void'}}
-  auto &b = f(); // expected-error {{cannot form a reference to 'void'}}
-  auto *c = f(); // expected-error {{incompatible initializer of type 'void'}}
-
-  auto d(f()); // expected-error {{variable has incomplete type 'void'}}
-  auto &&e(f()); // expected-error {{cannot form a reference to 'void'}}
-  auto *g(f()); // expected-error {{incompatible initializer of type 'void'}}
-
-  (void)new auto(f()); // expected-error {{allocation of incomplete type 'void'}}
-  (void)new auto&(f()); // expected-error {{cannot form a reference to 'void'}}
-  (void)new auto*(f()); // expected-error {{incompatible constructor argument of type 'void'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/bitfield-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/bitfield-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/bitfield-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -triple=x86_64-apple-darwin10
-
-#define CHECK_SIZE(name, size) extern int name##1[sizeof(name) == size ? 1 : -1];
-#define CHECK_ALIGN(name, size) extern int name##2[__alignof(name) == size ? 1 : -1];
-
-// Simple tests.
-struct Test1 {
-  char c : 9; // expected-warning {{size of bit-field 'c' (9 bits) exceeds the size of its type; value will be truncated to 8 bits}}
-};
-CHECK_SIZE(Test1, 2);
-CHECK_ALIGN(Test1, 1);
-
-struct Test2 {
-  char c : 16; // expected-warning {{size of bit-field 'c' (16 bits) exceeds the size of its type; value will be truncated to 8 bits}}
-};
-CHECK_SIZE(Test2, 2);
-CHECK_ALIGN(Test2, 2);
-
-struct Test3 {
-  char c : 32; // expected-warning {{size of bit-field 'c' (32 bits) exceeds the size of its type; value will be truncated to 8 bits}}
-};
-CHECK_SIZE(Test3, 4);
-CHECK_ALIGN(Test3, 4);
-
-struct Test4 {
-  char c : 64; // expected-warning {{size of bit-field 'c' (64 bits) exceeds the size of its type; value will be truncated to 8 bits}}
-};
-CHECK_SIZE(Test4, 8);
-CHECK_ALIGN(Test4, 8);
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/block-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/block-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/block-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -x c++ -fsyntax-only -verify %s -fblocks
-
-int (*FP)();
-int (^IFP) ();
-int (^II) (int);
-int main() {
-  int (*FPL) (int) = FP; // expected-error {{cannot initialize a variable of type 'int (*)(int)' with an lvalue of type 'int (*)()'}} 
-
-  // For Blocks, the ASTContext::typesAreBlockCompatible() makes sure this is an error.
-  int (^PFR) (int) = IFP; // expected-error {{cannot initialize a variable of type 'int (^)(int)' with an lvalue of type 'int (^)()'}}
-  PFR = II;       // OK
-
-  int (^IFP) () = PFR; // OK
-
-
-  const int (^CIC) () = IFP; // OK -  initializing 'const int (^)()' with an expression of type 'int (^)()'}}
-
-  const int (^CICC) () = CIC;
-
-
-  int * const (^IPCC) () = 0;
-
-  int * const (^IPCC1) () = IPCC;
-
-  int * (^IPCC2) () = IPCC;       // expected-error  {{cannot initialize a variable of type 'int *(^)()' with an lvalue of type 'int *const (^)()'}}
-
-  int (^IPCC3) (const int) = PFR;
-
-  int (^IPCC4) (int, char (^CArg) (double));
-
-  int (^IPCC5) (int, char (^CArg) (double)) = IPCC4;
-
-  int (^IPCC6) (int, char (^CArg) (float))  = IPCC4; // expected-error {{cannot initialize a variable of type 'int (^)(int, char (^)(float))' with an lvalue of type}}
-
-  IPCC2 = 0;
-  IPCC2 = 1; 
-  int (^x)() = 0;
-  int (^y)() = 3;   // expected-error {{cannot initialize a variable of type 'int (^)()' with an rvalue of type 'int'}}
-  int a = 1;
-  int (^z)() = a+4;   // expected-error {{cannot initialize a variable of type 'int (^)()' with an rvalue of type 'int'}}
-}
-
-int blah() {
-  int (^IFP) (float);
-  char (^PCP)(double, double, char);
-
-  IFP(1.0);
-  IFP (1.0, 2.0); // expected-error {{too many arguments to block call}}
-
-  char ch = PCP(1.0, 2.0, 'a');
-  return PCP(1.0, 2.0);   // expected-error {{too few arguments to block}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/blocks-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/blocks-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/blocks-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -fblocks -std=c++11
-// expected-no-diagnostics
-
-extern "C" int exit(int);
-
-typedef struct {
-    unsigned long ps[30];
-    int qs[30];
-} BobTheStruct;
-
-int main (int argc, const char * argv[]) {
-    BobTheStruct inny;
-    BobTheStruct outty;
-    BobTheStruct (^copyStruct)(BobTheStruct);
-    int i;
-    
-    for(i=0; i<30; i++) {
-        inny.ps[i] = i * i * i;
-        inny.qs[i] = -i * i * i;
-    }
-    
-    copyStruct = ^(BobTheStruct aBigStruct){ return aBigStruct; };  // pass-by-value intrinsically copies the argument
-    
-    outty = copyStruct(inny);
-
-    if ( &inny == &outty ) {
-        exit(1);
-    }
-    for(i=0; i<30; i++) {
-        if ( (inny.ps[i] != outty.ps[i]) || (inny.qs[i] != outty.qs[i]) ) {
-            exit(1);
-        }
-    }
-    
-    return 0;
-}
-
-namespace rdar8134521 {
-  void foo() {
-    int (^P)(int) = reinterpret_cast<int(^)(int)>(1);
-    P = (int(^)(int))(1);
-    
-    P = reinterpret_cast<int(^)(int)>((void*)1);
-    P = (int(^)(int))((void*)1);
-  }
-}
-
-namespace rdar11055105 {
-  struct A {
-    void foo();
-  };
-
-  template <class T> void foo(T &x) noexcept(noexcept(x.foo()));
-
-  void (^block)() = ^{
-    A a;
-    foo(a);
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s -fblocks
-
-void tovoid(void*);
-
-void tovoid_test(int (^f)(int, int)) {
-  tovoid(f);
-}
-
-void reference_lvalue_test(int& (^f)()) {
-  f() = 10;
-}
-
-// PR 7165
-namespace test1 {
-  void g(void (^)());
-  struct Foo {
-    void foo();   
-    void test() {
-      (void) ^{ foo(); };
-    }
-  };
-}
-
-namespace test2 {
-  int repeat(int value, int (^block)(int), unsigned n) {
-    while (n--) value = block(value);
-    return value;
-  }
-
-  class Power {
-    int base;
-
-  public:
-    Power(int base) : base(base) {}
-    int calculate(unsigned n) {
-      return repeat(1, ^(int v) { return v * base; }, n);
-    }
-  };
-
-  int test() {
-    return Power(2).calculate(10);
-  }
-}
-
-// rdar: // 8382559
-namespace radar8382559 {
-  void func(bool& outHasProperty);
-
-  int test3() {
-    __attribute__((__blocks__(byref))) bool hasProperty = false;
-    bool has = true;
-
-    bool (^b)() = ^ {
-     func(hasProperty);
-     if (hasProperty)
-       hasProperty = 0;
-     if (has)
-       hasProperty = 1;
-     return hasProperty;
-     };
-    func(hasProperty);
-    func(has);
-    b();
-    if (hasProperty)
-      hasProperty = 1;
-    if (has)
-      has = 2;
-    return hasProperty = 1;
-  }
-}
-
-// Move __block variables to the heap when possible.
-class MoveOnly {
-public:
-  MoveOnly();
-  MoveOnly(const MoveOnly&) = delete;
-  MoveOnly(MoveOnly&&);
-};
-
-void move_block() {
-  __block MoveOnly mo;
-}
-
-// Don't crash after failing to build a block due to a capture of an
-// invalid declaration.
-namespace test5 {
-  struct B { // expected-note 2 {{candidate constructor}}
-    void *p;
-    B(int); // expected-note {{candidate constructor}}
-  };
-
-  void use_block(void (^)());
-  void use_block_2(void (^)(), const B &a);
-
-  void test() {
-    B x; // expected-error {{no matching constructor for initialization}}
-    use_block(^{
-        int y;
-        use_block_2(^{ (void) y; }, x);
-      });
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/bool.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/bool.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/bool.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-constant-conversion %s
-
-// Bool literals can be enum values.
-enum {
-  ReadWrite = false,
-  ReadOnly = true
-};
-
-// bool cannot be decremented, and gives a warning on increment
-void test(bool b)
-{
-  ++b; // expected-warning {{incrementing expression of type bool is deprecated}}
-  b++; // expected-warning {{incrementing expression of type bool is deprecated}}
-  --b; // expected-error {{cannot decrement expression of type bool}}
-  b--; // expected-error {{cannot decrement expression of type bool}}
-
-  bool *b1 = (int *)0; // expected-error{{cannot initialize}}
-}
-
-// static_assert_arg_is_bool(x) compiles only if x is a bool.
-template <typename T>
-void static_assert_arg_is_bool(T x) {
-  bool* p = &x;
-}
-
-void test2() {
-  int n = 2;
-  static_assert_arg_is_bool(n && 4);  // expected-warning {{use of logical '&&' with constant operand}} \
-                                      // expected-note {{use '&' for a bitwise operation}} \
-                                      // expected-note {{remove constant to silence this warning}}
-  static_assert_arg_is_bool(n || 5);  // expected-warning {{use of logical '||' with constant operand}} \
-                                      // expected-note {{use '|' for a bitwise operation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/borland-extensions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/borland-extensions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/borland-extensions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -fborland-extensions -triple x86_64-linux-gnu -verify
-// RUN: %clang_cc1 %s -fsyntax-only -fborland-extensions -triple i686-linux-gnu -Werror
-
-// Borland extensions
-
-// 1. test  -fborland-extensions
-int dummy_function() { return 0; }
-
-// 2. test __pascal
-// expected-warning at +1 {{calling convention '_pascal' ignored for this target}}
-int _pascal f2();
-
-// expected-warning at +1 {{calling convention '__pascal' ignored for this target}}
-float __pascal gi2(int, int); 
-// expected-warning at +1 {{calling convention '__pascal' ignored for this target}}
-template<typename T> T g2(T (__pascal * const )(int, int)) { return 0; }
-
-struct M {
-    // expected-warning at +1 {{calling convention '__pascal' ignored for this target}}
-    int __pascal addP();
-    // expected-warning at +1 {{calling convention '__pascal' ignored for this target}}
-    float __pascal subtractP(); 
-};
-// expected-warning at +1 {{calling convention '__pascal' ignored for this target}}
-template<typename T> int h2(T (__pascal M::* const )()) { return 0; }
-void m2() {
-    int i; float f;
-    i = f2();
-    f = gi2(2, i);
-    f = g2(gi2);
-    i = h2<int>(&M::addP);
-    f = h2(&M::subtractP);
-} 
-
-// 3. test other calling conventions
-int _cdecl fa3();
-// expected-warning at +1 {{calling convention '_fastcall' ignored for this target}}
-int _fastcall fc3();
-// expected-warning at +1 {{calling convention '_stdcall' ignored for this target}}
-int _stdcall fd3();
-
-// 4. test __uuidof()
-typedef struct _GUID {
-     unsigned long  Data1;
-     unsigned short Data2;
-     unsigned short Data3;
-     unsigned char  Data4[ 8 ];
-} GUID;
-
-struct __declspec(uuid("{12345678-1234-1234-1234-123456789abc}")) Foo;
-struct Data {
-     GUID const* Guid;
-};
-
-void t4() {
-    unsigned long  data;
-
-    const GUID guid_inl = __uuidof(Foo);
-    Data ata1 = { &guid_inl};
-    data = ata1.Guid->Data1;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-exception-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-exception-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-exception-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -isystem %S/Inputs -fsyntax-only -verify %s
-// expected-no-diagnostics
-#include <malloc.h>
-
-extern "C" {
-void *malloc(__SIZE_TYPE__);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-ambig.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-ambig.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-ambig.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-struct A {};
-
-struct R {
-    operator const A*();
-};
-
-
-struct B  : R {
-    operator A*();
-};
-
-struct C : B {
-
-};
-
-
-void foo(C c, int A::* pmf) {
-       				// FIXME. Why so many built-in candidates?
-	int i = c->*pmf; 	// expected-error {{use of overloaded operator '->*' is ambiguous}} \
-				// expected-note {{built-in candidate operator->*(const struct A *, const int struct A::*)}} \
-				// expected-note {{built-in candidate operator->*(const struct A *, int struct A::*)}} \
-				// expected-note {{built-in candidate operator->*(struct A *, const int struct A::*)}} \
-				// expected-note {{built-in candidate operator->*(struct A *, int struct A::*)}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-overload-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-overload-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-overload-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-struct A {};
-struct E {};
-
-struct R {
-    operator A*();
-    operator E*();	// expected-note{{candidate function}}
-};
-
-
-struct S {
-    operator A*();
-    operator E*();	// expected-note{{candidate function}}
-};
-
-struct B  : R {
-    operator A*();
-};
-
-struct C : B {
-
-};
-
-void foo(C c, int A::* pmf) {
-	int i = c->*pmf; 
-}
-
-struct B1  : R, S {
-    operator A*();
-};
-
-struct C1 : B1 {
-
-};
-
-void foo1(C1 c1, int A::* pmf) {
-        int i = c1->*pmf;
-        c1->*pmf = 10;
-}
-
-void foo1(C1 c1, int E::* pmf) {
-        int i = c1->*pmf;	// expected-error {{use of overloaded operator '->*' is ambiguous}} \
-                                // expected-note {{because of ambiguity in conversion of 'C1' to 'E *'}} \
-                                // expected-note 4 {{built-in candidate operator}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-overload.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-overload.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin-ptrtomember-overload.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-
-struct A {};
-
-struct B {
-	operator A*();
-};
-
-struct C : B {
-
-};
-
-
-void foo(C c, B b, int A::* pmf) {
-	int j = c->*pmf; 
-	int i = b->*pmf;
-}
-
-struct D {
- operator const D *();
-};
-
-struct DPtr {
- operator volatile int D::*();
-};
-
-int test(D d, DPtr dptr) {
- return d->*dptr;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin_objc_msgSend.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin_objc_msgSend.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/builtin_objc_msgSend.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-// rdar://8686888
-
-typedef struct objc_selector *SEL;
-typedef struct objc_object *id;
-
-extern "C" __attribute__((visibility("default"))) id objc_msgSend(id self, SEL op, ...)
-    __attribute__((visibility("default")));
-
-inline void TCFReleaseGC(void * object)
-{
- static SEL SEL_release;
- objc_msgSend((id)object, SEL_release);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins-arm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins-arm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins-arm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple armv7 -fsyntax-only -verify %s
-
-// va_list on ARM AAPCS is struct { void* __ap }.
-int test1(const __builtin_va_list &ap) {
-  return __builtin_va_arg(ap, int); // expected-error {{binding of reference to type '__builtin_va_list' to a value of type 'const __builtin_va_list' drops qualifiers}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins-va_arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins-va_arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins-va_arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 %s -ffreestanding
-// RUN: %clang_cc1 %s -ffreestanding -triple i686-unknown-linux
-// RUN: %clang_cc1 %s -ffreestanding -triple x86_64-unknown-linux
-// RUN: %clang_cc1 %s -ffreestanding -triple mips-unknown-linux
-// RUN: %clang_cc1 %s -ffreestanding -triple mipsel-unknown-linux
-// RUN: %clang_cc1 %s -ffreestanding -triple armv7-unknown-linux-gnueabi
-// RUN: %clang_cc1 %s -ffreestanding -triple thumbv7-unknown-linux-gnueabi
-
-#include "stdarg.h"
-
-int int_accumulator = 0;
-double double_accumulator = 0;
-
-int test_vprintf(const char *fmt, va_list ap) {
-  char ch;
-  int result = 0;
-  while (*fmt != '\0') {
-    ch = *fmt++;
-    if (ch != '%') {
-      continue;
-    }
-
-    ch = *fmt++;
-    switch (ch) {
-    case 'd':
-      int_accumulator += va_arg(ap, int);
-      result++;
-      break;
-
-    case 'f':
-      double_accumulator += va_arg(ap, double);
-      result++;
-      break;
-
-    default:
-      break;
-    }
-
-    if (ch == '0') {
-      break;
-    }
-  }
-  return result;
-}
-
-int test_printf(const char *fmt, ...) {
-  va_list ap;
-  va_start(ap, fmt);
-  int result = test_vprintf(fmt, ap);
-  va_end(ap);
-  return result;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/builtins.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-typedef const struct __CFString * CFStringRef;
-#define CFSTR __builtin___CFStringMakeConstantString
-
-void f() {
-  (void)CFStringRef(CFSTR("Hello"));
-}
-
-void a() { __builtin_va_list x, y; ::__builtin_va_copy(x, y); }
-
-// <rdar://problem/10063539>
-template<int (*Compare)(const char *s1, const char *s2)>
-int equal(const char *s1, const char *s2) {
-  return Compare(s1, s2) == 0;
-}
-// FIXME: Our error recovery here sucks
-template int equal<&__builtin_strcmp>(const char*, const char*); // expected-error {{builtin functions must be directly called}} expected-error {{expected unqualified-id}} expected-error {{expected ')'}} expected-note {{to match this '('}}
-
-// PR13195
-void f2() {
-  __builtin_isnan; // expected-error {{builtin functions must be directly called}}
-}
-
-// pr14895
-typedef __typeof(sizeof(int)) size_t;
-extern "C" void *__builtin_alloca (size_t);

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wvla-extension %s
-struct StillPOD {
-  StillPOD() = default;
-};
-
-struct StillPOD2 {
-  StillPOD np;
-};
-
-struct NonPOD {
-  NonPOD(int) {}
-};
-
-struct POD {
-  int x;
-  int y;
-};
-
-// We allow VLAs of POD types, only.
-void vla(int N) {
-  int array1[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  POD array2[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  StillPOD array3[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  StillPOD2 array4[N][3]; // expected-warning{{variable length arrays are a C99 feature}}
-  NonPOD array5[N]; // expected-error{{variable length array of non-POD element type 'NonPOD'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/c99-variable-length-array.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/c99-variable-length-array.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/c99-variable-length-array.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,142 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wvla-extension %s
-struct NonPOD {
-  NonPOD();
-};
-
-struct NonPOD2 {
-  NonPOD np;
-};
-
-struct POD {
-  int x;
-  int y;
-};
-
-// We allow VLAs of POD types, only.
-void vla(int N) {
-  int array1[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  POD array2[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  NonPOD array3[N]; // expected-error{{variable length array of non-POD element type 'NonPOD'}}
-  NonPOD2 array4[N][3]; // expected-error{{variable length array of non-POD element type 'NonPOD2'}}
-}
-
-/// Warn about VLAs in templates.
-template<typename T>
-void vla_in_template(int N, T t) {
-  int array1[N]; // expected-warning{{variable length arrays are a C99 feature}}
-}
-
-struct HasConstantValue {
-  static const unsigned int value = 2;
-};
-
-struct HasNonConstantValue {
-  static unsigned int value;
-};
-
-template<typename T>
-void vla_in_template(T t) {
-  int array2[T::value]; // expected-warning{{variable length arrays are a C99 feature}}
-}
-
-template void vla_in_template<HasConstantValue>(HasConstantValue);
-template void vla_in_template<HasNonConstantValue>(HasNonConstantValue); // expected-note{{instantiation of}}
-
-template<typename T> struct X0 { };
-
-// Cannot use any variably-modified type with a template parameter or
-// argument.
-void inst_with_vla(int N) {
-  int array[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  X0<__typeof__(array)> x0a; // expected-error{{variably modified type 'typeof (array)' (aka 'int [N]') cannot be used as a template argument}}
-}
-
-template<typename T>
-struct X1 {
-  template<int (&Array)[T::value]> // expected-error{{non-type template parameter of variably modified type 'int (&)[HasNonConstantValue::value]'}}  \
-  // expected-warning{{variable length arrays are a C99 feature}}
-  struct Inner {
-    
-  };
-};
-
-X1<HasConstantValue> x1a;
-X1<HasNonConstantValue> x1b; // expected-note{{in instantiation of}}
-
-// Template argument deduction does not allow deducing a size from a VLA.
-// FIXME: This diagnostic should make it clear that the two 'N's are different entities!
-template<typename T, unsigned N>
-void accept_array(T (&array)[N]); // expected-note{{candidate template ignored: could not match 'T [N]' against 'int [N]'}}
-
-void test_accept_array(int N) {
-  int array[N]; // expected-warning{{variable length arrays are a C99 feature}}
-  accept_array(array); // expected-error{{no matching function for call to 'accept_array'}}
-}
-
-// Variably-modified types cannot be used in local classes.
-void local_classes(int N) { // expected-note {{declared here}}
-  struct X {
-    int size;
-    int array[N]; // expected-error{{fields must have a constant size: 'variable length array in structure' extension will never be supported}} \
-                  // expected-error{{reference to local variable 'N' declared in enclosing function 'local_classes'}} \
-                  // expected-warning{{variable length arrays are a C99 feature}}
-  };
-}
-
-namespace PR7206 {
-  void f(int x) {
-    struct edge_info {
-      float left;
-      float right;
-    };
-    struct edge_info edgeInfo[x]; // expected-warning{{variable length arrays are a C99 feature}}
-  }
-}
-
-namespace rdar8020206 {
-  template<typename T>
-  void f(int i) {
-    const unsigned value = i;
-    int array[value * i]; // expected-warning 2{{variable length arrays are a C99 feature}}
-  }
-
-  template void f<int>(int); // expected-note{{instantiation of}}
-}
-
-namespace rdar8021385 {
-  typedef int my_int;
-  struct A { typedef int my_int; };
-  template<typename T>
-  struct B {
-    typedef typename T::my_int my_int;
-    void f0() {
-      int M = 4;
-      my_int a[M]; // expected-warning{{variable length arrays are a C99 feature}}
-    }
-  };
-  B<A> a;
-}
-
-namespace PR8209 {
-  void f(int n) {
-    typedef int vla_type[n]; // expected-warning{{variable length arrays are a C99 feature}}
-    (void)new vla_type; // expected-error{{variably}}
-  }
-}
-
-namespace rdar8733881 { // rdar://8733881
-
-static const int k_cVal3 = (int)(1000*0.2f);
-  int f() {
-    // Ok, fold to a constant size array as an extension.
-    char rgch[k_cVal3] = {0};
-  }
-}
-
-namespace PR11744 {
-  template<typename T> int f(int n) {
-    T arr[3][n]; // expected-warning 3 {{variable length arrays are a C99 feature}}
-    return 3;
-  }
-  int test = f<int>(0); // expected-note {{instantiation of}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/c99.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/c99.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/c99.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-void f1(int i[static 5]) { // expected-error{{C99}}
-}
-
-struct Point { int x; int y; };
-
-Point p1 = { .x = 17, // expected-warning{{designated initializers are a C99 feature}}
-             y: 25 }; // expected-warning{{designated initializers are a C99 feature}} \
-                      // expected-warning{{use of GNU old-style field designator extension}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/captured-statements.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/captured-statements.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/captured-statements.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,166 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -fblocks
-
-void test_nest_lambda() {
-  int x;
-  int y;
-  [&,y]() {
-    int z;
-    #pragma clang __debug captured
-    {
-      x = y; // OK
-      y = z; // expected-error{{cannot assign to a variable captured by copy in a non-mutable lambda}}
-      z = y; // OK
-    }
-  }();
-
-  int a;
-  #pragma clang __debug captured
-  {
-    int b;
-    int c;
-    [&,c]() {
-      a = b; // OK
-      b = c; // OK
-      c = a; // expected-error{{cannot assign to a variable captured by copy in a non-mutable lambda}}
-    }();
-  }
-}
-
-class test_obj_capture {
-  int a;
-  void b();
-  static void test() {
-    test_obj_capture c;
-    #pragma clang __debug captured
-    { (void)c.a; }  // OK
-    #pragma clang __debug captured
-    { c.b(); }      // OK
-  }
-};
-
-class test_this_capture {
-  int a;
-  void b();
-  void test() {
-    #pragma clang __debug captured
-    { (void)this; } // OK
-    #pragma clang __debug captured
-    { (void)a; }    // OK
-    #pragma clang __debug captured
-    { b(); }        // OK
-  }
-};
-
-template <typename T>
-void template_capture_var() {
-  T x; // expected-error{{declaration of reference variable 'x' requires an initializer}}
-  #pragma clang _debug captured
-  {
-    (void)x;
-  }
-}
-
-template <typename T>
-class Val {
-  T v;
-public:
-  void set(const T &v0) {
-    #pragma clang __debug captured
-    {
-      v = v0;
-    }
-  }
-};
-
-void test_capture_var() {
-  template_capture_var<int>(); // OK
-  template_capture_var<int&>(); // expected-note{{in instantiation of function template specialization 'template_capture_var<int &>' requested here}}
-
-  Val<float> Obj;
-  Obj.set(0.0f); // OK
-}
-
-template <typename S, typename T>
-S template_capture_var(S x, T y) {
-  #pragma clang _debug captured
-  {
-    x++;
-    y++;  // expected-error{{read-only variable is not assignable}}
-  }
-
-  return x;
-}
-
-// Check if can recover from a template error.
-void test_capture_var_error() {
-  template_capture_var<int, int>(0, 1); // OK
-  template_capture_var<int, const int>(0, 1); // expected-note{{in instantiation of function template specialization 'template_capture_var<int, const int>' requested here}}
-  template_capture_var<int, int>(0, 1); // OK
-}
-
-template <typename T>
-void template_capture_in_lambda() {
-  T x, y;
-  [=, &y]() {
-    #pragma clang __debug captured
-    {
-      y += x;
-    }
-  }();
-}
-
-void test_lambda() {
-  template_capture_in_lambda<int>(); // OK
-}
-
-struct Foo {
-  void foo() { }
-  static void bar() { }
-};
-
-template <typename T>
-void template_capture_func(T &t) {
-  #pragma clang __debug captured
-  {
-    t.foo();
-  }
-
-  #pragma clang __debug captured
-  {
-    T::bar();
-  }
-}
-
-void test_template_capture_func() {
-  Foo Obj;
-  template_capture_func(Obj);
-}
-
-template <typename T>
-T captured_sum(const T &a, const T &b) {
-  T result;
-
-  #pragma clang __debug captured
-  {
-    result = a + b;
-  }
-
-  return result;
-}
-
-template <typename T, typename... Args>
-T captured_sum(const T &a, const Args&... args) {
-  T result;
-
-  #pragma clang __debug captured
-  {
-    result = a + captured_sum(args...);
-  }
-
-  return result;
-}
-
-void test_capture_variadic() {
-  (void)captured_sum(1, 2, 3); // OK
-  (void)captured_sum(1, 2, 3, 4, 5); // OK
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cast-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cast-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cast-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-unknown-unknown -verify %s -std=c++11
-
-struct R {
-  R(int);
-};
-
-struct A {
-  A(R);
-};
-
-struct B { // expected-note 3 {{candidate constructor (the implicit copy constructor) not viable}} \
-              expected-note 3 {{candidate constructor (the implicit move constructor) not viable}}
-  B(A); // expected-note 3 {{candidate constructor not viable}}
-};
-
-int main () {
-  B(10);	// expected-error {{no matching conversion for functional-style cast from 'int' to 'B'}}
-  (B)10;	// expected-error {{no matching conversion for C-style cast from 'int' to 'B'}}
-  static_cast<B>(10);	// expected-error {{no matching conversion for static_cast from 'int' to 'B'}} \\
-			// expected-warning {{expression result unused}}
-}
-
-template<class T>
-struct X0 {
-  X0(const T &);
-};
-
-template<class T>
-X0<T> make_X0(const T &Val) {
-  return X0<T>(Val);
-}
-
-void test_X0() {
-  const char array[2] = { 'a', 'b' };
-  make_X0(array);
-}
-
-// PR5210 recovery
-class C {
-protected:
-  template <int> float* &f0(); // expected-note{{candidate}}
-  template <unsigned> float* &f0(); // expected-note{{candidate}}
-
-  void f1() {
-    static_cast<float*>(f0<0>()); // expected-error{{ambiguous}}
-  }
-};
-
-void *intToPointer1(short s) {
-  return (void*)s; // expected-warning{{cast to 'void *' from smaller integer type 'short'}}
-}
-
-void *intToPointer2(short s) {
-  return reinterpret_cast<void*>(s);
-}
-
-void *intToPointer3(bool b) {
-  return (void*)b;
-}
-
-void *intToPointer4() {
-  return (void*)(3 + 7);
-}
-
-void *intToPointer5(long l) {
-  return (void*)l;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cast-explicit-ctor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cast-explicit-ctor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cast-explicit-ctor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-struct B { explicit B(bool); };
-void f() { 
-  (void)(B)true;
-  (void)B(true); 
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/class-base-member-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/class-base-member-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/class-base-member-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-class S {
-public:
-  S (); 
-};
-
-struct D : S {
-  D() : 
-    b1(0), // expected-note {{previous initialization is here}}
-    b2(1),
-    b1(0), // expected-error {{multiple initializations given for non-static member 'b1'}}
-    S(),   // expected-note {{previous initialization is here}}
-    S()    // expected-error {{multiple initializations given for base 'S'}}
-    {}
-  int b1;
-  int b2;
-};
-
-struct A {
-  struct {
-    int a;
-    int b; 
-  };
-  A();
-};
-
-A::A() : a(10), b(20) { }
-
-namespace Test1 {
-  template<typename T> struct A {};
-  template<typename T> struct B : A<T> {
-
-    B() : A<T>(), // expected-note {{previous initialization is here}} 
-      A<T>() { } // expected-error {{multiple initializations given for base 'A<T>'}}
-  };
-}
-
-namespace Test2 {
-  template<typename T> struct A : T {
-    A() : T(), // expected-note {{previous initialization is here}}
-      T() { } // expected-error {{multiple initializations given for base 'T'}}
-  };
-}
-
-namespace Test3 {
-  template<typename T> struct A {
-    T t;
-    
-    A() : t(1), // expected-note {{previous initialization is here}}
-      t(2) { } // expected-error {{multiple initializations given for non-static member 't'}}
-  };
-}
-
-namespace test4 {
-  class A {
-    union {
-      struct {
-        int a;
-        int b;
-      };
-
-      int c;
-
-      union {
-        int d;
-        int e;
-      };
-    };
-
-    A(char _) : a(0), b(0) {}
-    A(short _) : a(0), c(0) {} // expected-error {{initializing multiple members of union}} expected-note {{previous initialization is here}}
-    A(int _) : d(0), e(0) {} // expected-error {{initializing multiple members of union}} expected-note {{previous initialization is here}}
-    A(long _) : a(0), d(0) {} // expected-error {{initializing multiple members of union}} expected-note {{previous initialization is here}}
-  };
-}
-
-namespace test5 {
-  struct Base {
-    Base(int);
-  };
-  struct A : Base {
-    A() : decltype(Base(1))(3) {
-    }
-    A(int) : Base(3), // expected-note {{previous initialization is here}}
-             decltype(Base(1))(2), // expected-error {{multiple initializations given for base 'decltype(test5::Base(1))' (aka 'test5::Base')}}
-             decltype(int())() { // expected-error {{constructor initializer 'decltype(int())' (aka 'int') does not name a class}}
-    }
-    A(float) : decltype(A())(3) {
-    }
-  };
-}
-
-namespace rdar13185264 {
-  class X {
-    X() : a(), // expected-note{{previous initialization is here}}
-          a()  { } // expected-error{{multiple initializations given for non-static member 'a'}}
-    union { void *a; };
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/class-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/class-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/class-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,105 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -fsyntax-only -verify 
-// expected-no-diagnostics
-
-#define SA(n, p) int a##n[(p) ? 1 : -1]
-
-struct A {
-  int a;
-  char b;
-};
-
-SA(0, sizeof(A) == 8);
-
-struct B : A {
-  char c;
-};
-
-SA(1, sizeof(B) == 12);
-
-struct C {
-// Make fields private so C won't be a POD type.
-private:
-  int a;
-  char b;
-};
-
-SA(2, sizeof(C) == 8);
-
-struct D : C {
-  char c;
-};
-
-SA(3, sizeof(D) == 8);
-
-struct __attribute__((packed)) E {
-  char b;
-  int a;
-};
-
-SA(4, sizeof(E) == 5);
-
-struct __attribute__((packed)) F : E {
-  char d;
-};
-
-SA(5, sizeof(F) == 6);
-
-struct G { G(); };
-struct H : G { };
-
-SA(6, sizeof(H) == 1);
-
-struct I {
-  char b;
-  int a;
-} __attribute__((packed));
-
-SA(6_1, sizeof(I) == 5);
-
-// PR5580
-namespace PR5580 {
-
-class A { bool iv0 : 1; };
-SA(7, sizeof(A) == 1);  
-
-class B : A { bool iv0 : 1; };
-SA(8, sizeof(B) == 2);
-
-struct C { bool iv0 : 1; };
-SA(9, sizeof(C) == 1);  
-
-struct D : C { bool iv0 : 1; };
-SA(10, sizeof(D) == 2);
-
-}
-
-namespace Test1 {
-
-// Test that we don't assert on this hierarchy.
-struct A { };
-struct B : A { virtual void b(); };
-class C : virtual A { int c; };
-struct D : virtual B { };
-struct E : C, virtual D { };
-class F : virtual E { };
-struct G : virtual E, F { };
-
-SA(0, sizeof(G) == 24);
-
-}
-
-namespace Test2 {
-
-// Test that this somewhat complex class structure is laid out correctly.
-struct A { };
-struct B : A { virtual void b(); };
-struct C : virtual B { };
-struct D : virtual A { };
-struct E : virtual B, D { };
-struct F : E, virtual C { };
-struct G : virtual F, A { };
-struct H { G g; };
-
-SA(0, sizeof(H) == 24);
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/class-names.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/class-names.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/class-names.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class C { };
-
-C c;
-
-void D(int);
-
-class D {};
-
-void foo()
-{
-  D(5);
-  class D d;
-}
-
-class D; // expected-note {{previous use is here}}
-
-enum D; // expected-error {{use of 'D' with tag type that does not match previous declaration}}
-
-class A * A;
-
-class A * a2;
-
-void bar()
-{
-  A = 0;
-}
-
-void C(int);
-
-void bar2()
-{
-  C(17);
-}
-
-extern int B;
-class B;
-class B {};
-int B;
-
-enum E { e1_val };
-E e1;
-
-void E(int);
-
-void bar3() {
-  E(17);
-}
-
-enum E e2;
-
-enum E2 { E2 };

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,197 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wc++11-compat %s 
-class C {
-public:
-  auto int errx; // expected-error {{storage class specified for a member declaration}} expected-warning {{'auto' storage class specifier is redundant}}
-  register int erry; // expected-error {{storage class specified for a member declaration}}
-  extern int errz; // expected-error {{storage class specified for a member declaration}}
-
-  static void sm() {
-    sx = 0;
-    this->x = 0; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-    x = 0; // expected-error {{invalid use of member 'x' in static member function}}
-  }
-
-  class NestedC {
-  public:
-    NestedC(int);
-    void f() {
-      sx = 0;
-      x = 0; // expected-error {{use of non-static data member 'x' of 'C' from nested type 'NestedC'}}
-      sm();
-      m(); // expected-error {{call to non-static member function 'm' of 'C' from nested type 'NestedC'}}
-    }
-  };
-
-  int b : 1, w : 2;
-  int : 1, : 2;
-  typedef int E : 1; // expected-error {{typedef member 'E' cannot be a bit-field}}
-  static int sb : 1; // expected-error {{static member 'sb' cannot be a bit-field}}
-  static int vs;
-
-  typedef int func();
-  func tm;
-  func *ptm;
-  func btm : 1; // expected-error {{bit-field 'btm' has non-integral type}}
-  NestedC bc : 1; // expected-error {{bit-field 'bc' has non-integral type}}
-
-  enum E1 { en1, en2 };
-
-  int i = 0; // expected-warning {{in-class initialization of non-static data member is a C++11 extension}}
-  static int si = 0; // expected-error {{non-const static data member must be initialized out of line}}
-  static const NestedC ci = 0; // expected-error {{static data member of type 'const C::NestedC' must be initialized out of line}}
-  static const int nci = vs; // expected-error {{in-class initializer for static data member is not a constant expression}}
-  static const int vi = 0;
-  static const volatile int cvi = 0; // ok, illegal in C++11
-  static const E evi = 0;
-
-  void m() {
-    sx = 0;
-    this->x = 0;
-    y = 0;
-    this = 0; // expected-error {{expression is not assignable}}
-  }
-
-  int f1(int p) {
-    A z = 6;
-    return p + x + this->y + z;
-  }
-
-  typedef int A;
-
-  virtual int viv; // expected-error {{'virtual' can only appear on non-static member functions}}
-  virtual static int vsif(); // expected-error {{'virtual' can only appear on non-static member functions}}
-  virtual int vif();
-
-private:
-  int x,y;
-  static int sx;
-
-  mutable int mi;
-  mutable int &mir; // expected-error {{'mutable' cannot be applied to references}}
-  mutable void mfn(); // expected-error {{'mutable' cannot be applied to functions}}
-  mutable const int mci; // expected-error {{'mutable' and 'const' cannot be mixed}}
-
-  static const int number = 50;
-  static int arr[number];
-};
-
-class C2 {
-  void f() {
-    static int lx;
-    class LC1 {
-      int m() { return lx; }
-    };
-    class LC2 {
-      int m() { return lx; }
-    };
-  }
-};
-
-struct C3 {
-  int i;
-  mutable int j;
-};
-void f()
-{
-  const C3 c3 = { 1, 2 };
-  (void)static_cast<int*>(&c3.i); // expected-error {{static_cast from 'const int *' to 'int *' is not allowed}}
-  // but no error here
-  (void)static_cast<int*>(&c3.j);
-}
-
-// Play with mutable a bit more, to make sure it doesn't crash anything.
-mutable int gi; // expected-error {{'mutable' can only be applied to member variables}}
-mutable void gfn(); // expected-error {{illegal storage class on function}}
-void ogfn()
-{
-  mutable int ml; // expected-error {{'mutable' can only be applied to member variables}}
-
-  // PR3020: This used to crash due to double ownership of C4.
-  struct C4;
-  C4; // expected-warning {{declaration does not declare anything}}
-}
-
-struct C4 {
-  void f(); // expected-note{{previous declaration is here}}
-  int f; // expected-error{{duplicate member 'f'}}
-};
-
-// PR5415 - don't hang!
-struct S
-{
-  void f(); // expected-note 1 {{previous declaration}}
-  void S::f() {} // expected-error {{extra qualification on member}} expected-error {{class member cannot be redeclared}} expected-note {{previous declaration}} expected-note {{previous definition}}
-  void f() {} // expected-error {{class member cannot be redeclared}} expected-error {{redefinition}}
-};
-
-// Don't crash on this bogus code.
-namespace pr6629 {
-  // TODO: most of these errors are spurious
-  template<class T1, class T2> struct foo :
-    bogus<foo<T1,T2> > // expected-error {{unknown template name 'bogus'}} \
-                       // BOGUS expected-error {{expected '{' after base class list}} \
-                       // BOGUS expected-error {{expected ';' after struct}} \
-                       // BOGUS expected-error {{expected unqualified-id}}
-  { };
-
-  template<> struct foo<unknown,unknown> { // expected-error {{undeclared identifier 'unknown'}}
-    template <typename U1, typename U2> struct bar {
-      typedef bar type;
-      static const int value = 0;
-    };
-  };
-}
-
-namespace PR7153 {
-  class EnclosingClass {
-  public:
-    struct A { } mutable *member;
-  };
- 
-  void f(const EnclosingClass &ec) {
-    ec.member = 0;
-  }
-}
-
-namespace PR7196 {
-  struct A {
-    int a;
-
-    void f() {
-      char i[sizeof(a)];
-      enum { x = sizeof(i) };
-      enum { y = sizeof(a) };
-    }
-  };
-}
-
-namespace rdar8066414 {
-  class C {
-    C() {}
-  } // expected-error{{expected ';' after class}}
-}
-
-namespace rdar8367341 {
-  float foo();
-
-  struct A {
-    static const float x = 5.0f; // expected-warning {{in-class initializer for static data member of type 'const float' is a GNU extension}}
-    static const float y = foo(); // expected-warning {{in-class initializer for static data member of type 'const float' is a GNU extension}} expected-error {{in-class initializer for static data member is not a constant expression}}
-  };
-}
-
-namespace with_anon {
-struct S {
-  union {
-    char c;
-  };
-};
-
-void f() {
-    S::c; // expected-error {{invalid use of non-static data member}}
-}
-}
-
-struct PR9989 { 
-  static int const PR9989_Member = sizeof PR9989_Member; 
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/comma.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/comma.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/comma.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR6076
-void f();
-void (&g)() = (void(), f);
-
-int a[1];
-int (&b)[1] = (void(), a);

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/compare.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/compare.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/compare.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,357 +0,0 @@
-// Force x86-64 because some of our heuristics are actually based
-// on integer sizes.
-
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -pedantic -verify -Wsign-compare -std=c++11 %s
-
-int test0(long a, unsigned long b) {
-  enum EnumA {A};
-  enum EnumB {B};
-  enum EnumC {C = 0x10000};
-  return
-         // (a,b)
-         (a == (unsigned long) b) +  // expected-warning {{comparison of integers of different signs}}
-         (a == (unsigned int) b) +
-         (a == (unsigned short) b) +
-         (a == (unsigned char) b) +
-         ((long) a == b) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a == b) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a == b) +  // expected-warning {{comparison of integers of different signs}}
-         ((signed char) a == b) +  // expected-warning {{comparison of integers of different signs}}
-         ((long) a == (unsigned long) b) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a == (unsigned int) b) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a == (unsigned short) b) +
-         ((signed char) a == (unsigned char) b) +
-         (a < (unsigned long) b) +  // expected-warning {{comparison of integers of different signs}}
-         (a < (unsigned int) b) +
-         (a < (unsigned short) b) +
-         (a < (unsigned char) b) +
-         ((long) a < b) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < b) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < b) +  // expected-warning {{comparison of integers of different signs}}
-         ((signed char) a < b) +  // expected-warning {{comparison of integers of different signs}}
-         ((long) a < (unsigned long) b) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < (unsigned int) b) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < (unsigned short) b) +
-         ((signed char) a < (unsigned char) b) +
-
-         // (A,b)
-         (A == (unsigned long) b) +
-         (A == (unsigned int) b) +
-         (A == (unsigned short) b) +
-         (A == (unsigned char) b) +
-         ((long) A == b) +
-         ((int) A == b) +
-         ((short) A == b) +
-         ((signed char) A == b) +
-         ((long) A == (unsigned long) b) +
-         ((int) A == (unsigned int) b) +
-         ((short) A == (unsigned short) b) +
-         ((signed char) A == (unsigned char) b) +
-         (A < (unsigned long) b) +
-         (A < (unsigned int) b) +
-         (A < (unsigned short) b) +
-         (A < (unsigned char) b) +
-         ((long) A < b) +
-         ((int) A < b) +
-         ((short) A < b) +
-         ((signed char) A < b) +
-         ((long) A < (unsigned long) b) +
-         ((int) A < (unsigned int) b) +
-         ((short) A < (unsigned short) b) +
-         ((signed char) A < (unsigned char) b) +
-
-         // (a,B)
-         (a == (unsigned long) B) +
-         (a == (unsigned int) B) +
-         (a == (unsigned short) B) +
-         (a == (unsigned char) B) +
-         ((long) a == B) +
-         ((int) a == B) +
-         ((short) a == B) +
-         ((signed char) a == B) +
-         ((long) a == (unsigned long) B) +
-         ((int) a == (unsigned int) B) +
-         ((short) a == (unsigned short) B) +
-         ((signed char) a == (unsigned char) B) +
-         (a < (unsigned long) B) +  // expected-warning {{comparison of integers of different signs}}
-         (a < (unsigned int) B) +
-         (a < (unsigned short) B) +
-         (a < (unsigned char) B) +
-         ((long) a < B) +
-         ((int) a < B) +
-         ((short) a < B) +
-         ((signed char) a < B) +
-         ((long) a < (unsigned long) B) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < (unsigned int) B) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < (unsigned short) B) +
-         ((signed char) a < (unsigned char) B) +
-
-         // (C,b)
-         (C == (unsigned long) b) +
-         (C == (unsigned int) b) +
-         (C == (unsigned short) b) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'unsigned short' is always false}}
-         (C == (unsigned char) b) +  // expected-warning {{comparison of constant 'C' (65536) with expression of type 'unsigned char' is always false}}
-         ((long) C == b) +
-         ((int) C == b) +
-         ((short) C == b) +
-         ((signed char) C == b) +
-         ((long) C == (unsigned long) b) +
-         ((int) C == (unsigned int) b) +
-         ((short) C == (unsigned short) b) +
-         ((signed char) C == (unsigned char) b) +
-         (C < (unsigned long) b) +
-         (C < (unsigned int) b) +
-         (C < (unsigned short) b) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'unsigned short' is always false}}
-         (C < (unsigned char) b) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'unsigned char' is always false}}
-         ((long) C < b) +
-         ((int) C < b) +
-         ((short) C < b) +
-         ((signed char) C < b) +
-         ((long) C < (unsigned long) b) +
-         ((int) C < (unsigned int) b) +
-         ((short) C < (unsigned short) b) +
-         ((signed char) C < (unsigned char) b) +
-
-         // (a,C)
-         (a == (unsigned long) C) +
-         (a == (unsigned int) C) +
-         (a == (unsigned short) C) +
-         (a == (unsigned char) C) +
-         ((long) a == C) +
-         ((int) a == C) +
-         ((short) a == C) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'short' is always false}}
-         ((signed char) a == C) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'signed char' is always false}}
-         ((long) a == (unsigned long) C) +
-         ((int) a == (unsigned int) C) +
-         ((short) a == (unsigned short) C) +
-         ((signed char) a == (unsigned char) C) +
-         (a < (unsigned long) C) +  // expected-warning {{comparison of integers of different signs}}
-         (a < (unsigned int) C) +
-         (a < (unsigned short) C) +
-         (a < (unsigned char) C) +
-         ((long) a < C) +
-         ((int) a < C) +
-         ((short) a < C) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'short' is always true}}
-         ((signed char) a < C) + // expected-warning {{comparison of constant 'C' (65536) with expression of type 'signed char' is always true}}
-         ((long) a < (unsigned long) C) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < (unsigned int) C) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < (unsigned short) C) +
-         ((signed char) a < (unsigned char) C) +
-
-         // (0x80000,b)
-         (0x80000 == (unsigned long) b) +
-         (0x80000 == (unsigned int) b) +
-         (0x80000 == (unsigned short) b) + // expected-warning {{comparison of constant 524288 with expression of type 'unsigned short' is always false}}
-         (0x80000 == (unsigned char) b) + // expected-warning {{comparison of constant 524288 with expression of type 'unsigned char' is always false}}
-         ((long) 0x80000 == b) +
-         ((int) 0x80000 == b) +
-         ((short) 0x80000 == b) +
-         ((signed char) 0x80000 == b) +
-         ((long) 0x80000 == (unsigned long) b) +
-         ((int) 0x80000 == (unsigned int) b) +
-         ((short) 0x80000 == (unsigned short) b) +
-         ((signed char) 0x80000 == (unsigned char) b) +
-         (0x80000 < (unsigned long) b) +
-         (0x80000 < (unsigned int) b) +
-         (0x80000 < (unsigned short) b) + // expected-warning {{comparison of constant 524288 with expression of type 'unsigned short' is always false}}
-         (0x80000 < (unsigned char) b) + // expected-warning {{comparison of constant 524288 with expression of type 'unsigned char' is always false}}
-         ((long) 0x80000 < b) +
-         ((int) 0x80000 < b) +
-         ((short) 0x80000 < b) +
-         ((signed char) 0x80000 < b) +
-         ((long) 0x80000 < (unsigned long) b) +
-         ((int) 0x80000 < (unsigned int) b) +
-         ((short) 0x80000 < (unsigned short) b) +
-         ((signed char) 0x80000 < (unsigned char) b) +
-
-         // (a,0x80000)
-         (a == (unsigned long) 0x80000) +
-         (a == (unsigned int) 0x80000) +
-         (a == (unsigned short) 0x80000) +
-         (a == (unsigned char) 0x80000) +
-         ((long) a == 0x80000) +
-         ((int) a == 0x80000) +
-         ((short) a == 0x80000) + // expected-warning {{comparison of constant 524288 with expression of type 'short' is always false}}
-         ((signed char) a == 0x80000) + // expected-warning {{comparison of constant 524288 with expression of type 'signed char' is always false}}
-         ((long) a == (unsigned long) 0x80000) +
-         ((int) a == (unsigned int) 0x80000) +
-         ((short) a == (unsigned short) 0x80000) +
-         ((signed char) a == (unsigned char) 0x80000) +
-         (a < (unsigned long) 0x80000) +  // expected-warning {{comparison of integers of different signs}}
-         (a < (unsigned int) 0x80000) +
-         (a < (unsigned short) 0x80000) +
-         (a < (unsigned char) 0x80000) +
-         ((long) a < 0x80000) +
-         ((int) a < 0x80000) +
-         ((short) a < 0x80000) + // expected-warning {{comparison of constant 524288 with expression of type 'short' is always true}}
-         ((signed char) a < 0x80000) + // expected-warning {{comparison of constant 524288 with expression of type 'signed char' is always true}}
-         ((long) a < (unsigned long) 0x80000) +  // expected-warning {{comparison of integers of different signs}}
-         ((int) a < (unsigned int) 0x80000) +  // expected-warning {{comparison of integers of different signs}}
-         ((short) a < (unsigned short) 0x80000) +
-         ((signed char) a < (unsigned char) 0x80000) +
-
-         10
-    ;
-}
-
-int test1(int i) {
-  enum en { zero };
-  return i > zero;
-}
-
-enum E { e };
-void test2(int i, void *vp) {
-  if (test1 == vp) { } // expected-warning{{equality comparison between function pointer and void pointer}}
-  if (test1 == e) { } // expected-error{{comparison between pointer and integer}}
-  if (vp < 0) { }
-  if (test1 < e) { } // expected-error{{comparison between pointer and integer}}
-}
-
-// PR7536
-static const unsigned int kMax = 0;
-int pr7536() {
-  return (kMax > 0);
-}
-
-// -Wsign-compare should not warn when ?: operands have different signedness.
-// This will be caught by -Wsign-conversion
-void test3() {
-  unsigned long a;
-  signed long b;
-  (void) (true ? a : b);
-  (void) (true ? (unsigned int)a : (signed int)b);
-  (void) (true ? b : a);
-  (void) (true ? (unsigned char)b : (signed char)a);
-}
-
-// Test comparison of short to unsigned.  If tautological compare does not
-// trigger, then the signed comparision warning will.
-void test4(short s) {
-  // A is max short plus 1.  All zero and positive shorts are smaller than it.
-  // All negative shorts are cast towards the max unsigned range.  Relation
-  // comparisons are possible, but equality comparisons are tautological.
-  const unsigned A = 32768;
-  void (s < A); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-  void (s > A); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-  void (s <= A); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-  void (s >= A); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-
-  void (s == A); // expected-warning{{comparison of constant 32768 with expression of type 'short' is always false}}
-  void (s != A); // expected-warning{{comparison of constant 32768 with expression of type 'short' is always true}}
-
-  // When negative one is converted to an unsigned value, it becomes the max
-  // unsigned.  Likewise, a negative one short can also be converted to max
-  // unsigned.
-  const unsigned B = -1;
-  void (s < B); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-  void (s > B); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-  void (s <= B); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-  void (s >= B); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-  void (s == B); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-  void (s != B); // expected-warning{{comparison of integers of different signs: 'short' and 'const unsigned int'}}
-
-}
-
-void test5(bool b) {
-  (void) (b < -1); // expected-warning{{comparison of constant -1 with expression of type 'bool' is always false}}
-  (void) (b > -1); // expected-warning{{comparison of constant -1 with expression of type 'bool' is always true}}
-  (void) (b == -1); // expected-warning{{comparison of constant -1 with expression of type 'bool' is always false}}
-  (void) (b != -1); // expected-warning{{comparison of constant -1 with expression of type 'bool' is always true}}
-  (void) (b <= -1); // expected-warning{{comparison of constant -1 with expression of type 'bool' is always false}}
-  (void) (b >= -1); // expected-warning{{comparison of constant -1 with expression of type 'bool' is always true}}
-
-  (void) (b < -10); // expected-warning{{comparison of constant -10 with expression of type 'bool' is always false}}
-  (void) (b > -10); // expected-warning{{comparison of constant -10 with expression of type 'bool' is always true}}
-  (void) (b == -10); // expected-warning{{comparison of constant -10 with expression of type 'bool' is always false}}
-  (void) (b != -10); // expected-warning{{comparison of constant -10 with expression of type 'bool' is always true}}
-  (void) (b <= -10); // expected-warning{{comparison of constant -10 with expression of type 'bool' is always false}}
-  (void) (b >= -10); // expected-warning{{comparison of constant -10 with expression of type 'bool' is always true}}
-
-  (void) (b < 2); // expected-warning{{comparison of constant 2 with expression of type 'bool' is always true}}
-  (void) (b > 2); // expected-warning{{comparison of constant 2 with expression of type 'bool' is always false}}
-  (void) (b == 2); // expected-warning{{comparison of constant 2 with expression of type 'bool' is always false}}
-  (void) (b != 2); // expected-warning{{comparison of constant 2 with expression of type 'bool' is always true}}
-  (void) (b <= 2); // expected-warning{{comparison of constant 2 with expression of type 'bool' is always true}}
-  (void) (b >= 2); // expected-warning{{comparison of constant 2 with expression of type 'bool' is always false}}
-
-  (void) (b < 10); // expected-warning{{comparison of constant 10 with expression of type 'bool' is always true}}
-  (void) (b > 10); // expected-warning{{comparison of constant 10 with expression of type 'bool' is always false}}
-  (void) (b == 10); // expected-warning{{comparison of constant 10 with expression of type 'bool' is always false}}
-  (void) (b != 10); // expected-warning{{comparison of constant 10 with expression of type 'bool' is always true}}
-  (void) (b <= 10); // expected-warning{{comparison of constant 10 with expression of type 'bool' is always true}}
-  (void) (b >= 10); // expected-warning{{comparison of constant 10 with expression of type 'bool' is always false}}
-}
-
-void test6(signed char sc) {
-  (void)(sc < 200); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always true}}
-  (void)(sc > 200); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always false}}
-  (void)(sc <= 200); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always true}}
-  (void)(sc >= 200); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always false}}
-  (void)(sc == 200); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always false}}
-  (void)(sc != 200); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always true}}
-
-  (void)(200 < sc); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always false}}
-  (void)(200 > sc); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always true}}
-  (void)(200 <= sc); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always false}}
-  (void)(200 >= sc); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always true}}
-  (void)(200 == sc); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always false}}
-  (void)(200 != sc); // expected-warning{{comparison of constant 200 with expression of type 'signed char' is always true}}
-}
-
-// Test many signedness combinations.
-void test7(unsigned long other) {
-  // Common unsigned, other unsigned, constant unsigned
-  (void)((unsigned)other != (unsigned long)(0x1ffffffff)); // expected-warning{{true}}
-  (void)((unsigned)other != (unsigned long)(0xffffffff));
-  (void)((unsigned long)other != (unsigned)(0x1ffffffff));
-  (void)((unsigned long)other != (unsigned)(0xffffffff));
-
-  // Common unsigned, other signed, constant unsigned
-  (void)((int)other != (unsigned long)(0xffffffffffffffff)); // expected-warning{{different signs}}
-  (void)((int)other != (unsigned long)(0x00000000ffffffff)); // expected-warning{{true}}
-  (void)((int)other != (unsigned long)(0x000000000fffffff));
-  (void)((int)other < (unsigned long)(0x00000000ffffffff));  // expected-warning{{different signs}}
-  (void)((int)other == (unsigned)(0x800000000));
-
-  // Common unsigned, other unsigned, constant signed
-  (void)((unsigned long)other != (int)(0xffffffff));  // expected-warning{{different signs}}
-
-  // Common unsigned, other signed, constant signed
-  // Should not be possible as the common type should also be signed.
-
-  // Common signed, other signed, constant signed
-  (void)((int)other != (long)(0xffffffff));  // expected-warning{{true}}
-  (void)((int)other != (long)(0xffffffff00000000));  // expected-warning{{true}}
-  (void)((int)other != (long)(0xfffffff));
-  (void)((int)other != (long)(0xfffffffff0000000));
-
-  // Common signed, other signed, constant unsigned
-  (void)((int)other != (unsigned char)(0xffff));
-  (void)((int)other != (unsigned char)(0xff));
-
-  // Common signed, other unsigned, constant signed
-  (void)((unsigned char)other != (int)(0xff));
-  (void)((unsigned char)other != (int)(0xffff));  // expected-warning{{true}}
-
-  // Common signed, other unsigned, constant unsigned
-  (void)((unsigned char)other != (unsigned short)(0xff));
-  (void)((unsigned char)other != (unsigned short)(0x100)); // expected-warning{{true}}
-  (void)((unsigned short)other != (unsigned char)(0xff));
-}
-
-void test8(int x) {
-  enum E {
-    Negative = -1,
-    Positive = 1
-  };
-
-  (void)((E)x == 1);
-  (void)((E)x == -1);
-}
-
-void test9(int x) {
-  enum E : int {
-    Positive = 1
-  };
-  (void)((E)x == 1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/complex-init-list.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/complex-init-list.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/complex-init-list.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -pedantic
-// expected-no-diagnostics
-
-// This file tests the clang extension which allows initializing the components
-// of a complex number individually using an initialization list. Basically,
-// if you have an explicit init list for a complex number that contains two
-// initializers, this extension kicks in to turn it into component-wise
-// initialization.
-// 
-// See also the testcase for the C version of this extension in
-// test/Sema/complex-init-list.c.
-
-// Basic testcase
-// (No pedantic warning is necessary because _Complex is not part of C++.)
-_Complex float valid1 = { 1.0f, 2.0f };

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/complex-overload.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/complex-overload.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/complex-overload.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-char *foo(float);
-
-void test_foo_1(float fv, double dv, float _Complex fc, double _Complex dc) {
-  char *cp1 = foo(fv);
-  char *cp2 = foo(dv);
-  // Note: GCC and EDG reject these two, but they are valid C99 conversions
-  char *cp3 = foo(fc);
-  char *cp4 = foo(dc);
-}
-
-int *foo(float _Complex);
-
-void test_foo_2(float fv, double dv, float _Complex fc, double _Complex dc) {
-  char *cp1 = foo(fv);
-  char *cp2 = foo(dv);
-  int *ip = foo(fc);
-  int *lp = foo(dc);
-}
-
-long *foo(double _Complex);
-
-void test_foo_3(float fv, double dv, float _Complex fc, double _Complex dc) {
-  char *cp1 = foo(fv);
-  char *cp2 = foo(dv);
-  int *ip = foo(fc);
-  long *lp = foo(dc);
-}
-
-char *promote_or_convert(double _Complex);  // expected-note{{candidate function}}
-int *promote_or_convert(long double _Complex); // expected-note{{candidate function}} 
-
-void test_promote_or_convert(float f, float _Complex fc) {
-  char *cp = promote_or_convert(fc);
-  int *ip2 = promote_or_convert(f); // expected-error{{call to 'promote_or_convert' is ambiguous}}
-}
-
-char *promote_or_convert2(float);
-int *promote_or_convert2(double _Complex);
-
-void test_promote_or_convert2(float _Complex fc) {
-  int *cp = promote_or_convert2(fc);
-}
-
-char *promote_or_convert3(int _Complex);
-int *promote_or_convert3(long _Complex);
-
-void test_promote_or_convert3(short _Complex sc) {
-  char *cp = promote_or_convert3(sc);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/composite-pointer-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/composite-pointer-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/composite-pointer-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class Base { };
-class Derived1 : public Base { };
-class Derived2 : public Base { };
-
-void f0(volatile Base *b, Derived1 *d1, const Derived2 *d2) {
-  if (b > d1)
-    return;
-  if (d1 <= b)
-    return;
-  if (b > d2)
-    return;
-  if (d1 >= d2) // expected-error{{comparison of distinct}}
-    return;
-}
-
-void f1(volatile Base *b, Derived1 *d1, const Derived2 *d2) {
-  if (b == d1)
-    return;
-  if (d1 == b)
-    return;
-  if (b != d2)
-    return;
-  if (d1 == d2) // expected-error{{comparison of distinct}}
-    return;
-}
-
-// PR4691
-int ptrcmp1(void *a, int *b) {
-  return a < b;
-}
-int ptrcmp2(long *a, int *b) {
-  return a < b; // expected-error{{distinct}}
-}
-
-// PR5509 - Multi-level pointers
-int f2() {
-  typedef int *IntPtr;
-  typedef IntPtr *IntPtrPtr;
-  typedef IntPtr const *IntPtrConstPtr;
-  IntPtrConstPtr i = 0;
-  IntPtrPtr j = 0;
-  return i != j;
-}
-
-// PR5763
-typedef double Matrix4[4][4];
-
-bool f(Matrix4 m1, const Matrix4 m2) {
-  return m1 != m2;
-}
-
-// PR6346
-bool f1(bool b, void **p, const void **q) {
-  if (p == q) // expected-warning{{comparison of distinct pointer types ('void **' and 'const void **') uses non-standard composite pointer type 'const void *const *'}}
-    return false;
-
-  return b? p : q; // expected-warning{{incompatible operand types ('void **' and 'const void **') use non-standard composite pointer type 'const void *const *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/compound-literal.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/compound-literal.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/compound-literal.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++03 -verify -ast-dump %s > %t-03
-// RUN: FileCheck --input-file=%t-03 %s
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify -ast-dump %s > %t-11
-// RUN: FileCheck --input-file=%t-11 %s
-// RUN: FileCheck --input-file=%t-11 %s --check-prefix=CHECK-CXX11
-
-// http://llvm.org/PR7905
-namespace PR7905 {
-struct S; // expected-note {{forward declaration}}
-void foo1() {
-  (void)(S[]) {{3}}; // expected-error {{array has incomplete element type}}
-}
-
-template <typename T> struct M { T m; };
-void foo2() {
-  (void)(M<short> []) {{3}};
-}
-}
-
-// Check compound literals mixed with C++11 list-initialization.
-namespace brace_initializers {
-  struct POD {
-    int x, y;
-  };
-  struct HasCtor {
-    HasCtor(int x, int y);
-  };
-  struct HasDtor {
-    int x, y;
-    ~HasDtor();
-  };
-  struct HasCtorDtor {
-    HasCtorDtor(int x, int y);
-    ~HasCtorDtor();
-  };
-
-  void test() {
-    (void)(POD){1, 2};
-    // CHECK-NOT: CXXBindTemporaryExpr {{.*}} 'struct brace_initializers::POD'
-    // CHECK: CompoundLiteralExpr {{.*}} 'struct brace_initializers::POD'
-    // CHECK-NEXT: InitListExpr {{.*}} 'struct brace_initializers::POD'
-    // CHECK-NEXT: IntegerLiteral {{.*}} 1{{$}}
-    // CHECK-NEXT: IntegerLiteral {{.*}} 2{{$}}
-
-    (void)(HasDtor){1, 2};
-    // CHECK: CXXBindTemporaryExpr {{.*}} 'struct brace_initializers::HasDtor'
-    // CHECK-NEXT: CompoundLiteralExpr {{.*}} 'struct brace_initializers::HasDtor'
-    // CHECK-NEXT: InitListExpr {{.*}} 'struct brace_initializers::HasDtor'
-    // CHECK-NEXT: IntegerLiteral {{.*}} 1{{$}}
-    // CHECK-NEXT: IntegerLiteral {{.*}} 2{{$}}
-
-#if __cplusplus >= 201103L
-    (void)(HasCtor){1, 2};
-    // CHECK-CXX11-NOT: CXXBindTemporaryExpr {{.*}} 'struct brace_initializers::HasCtor'
-    // CHECK-CXX11: CompoundLiteralExpr {{.*}} 'struct brace_initializers::HasCtor'
-    // CHECK-CXX11-NEXT: CXXTemporaryObjectExpr {{.*}} 'struct brace_initializers::HasCtor'
-    // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 1{{$}}
-    // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 2{{$}}
-
-    (void)(HasCtorDtor){1, 2};
-    // CHECK-CXX11: CXXBindTemporaryExpr {{.*}} 'struct brace_initializers::HasCtorDtor'
-    // CHECK-CXX11-NEXT: CompoundLiteralExpr {{.*}} 'struct brace_initializers::HasCtorDtor'
-    // CHECK-CXX11-NEXT: CXXTemporaryObjectExpr {{.*}} 'struct brace_initializers::HasCtorDtor'
-    // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 1{{$}}
-    // CHECK-CXX11-NEXT: IntegerLiteral {{.*}} 2{{$}}
-#endif
-  }
-
-  struct PrivateDtor {
-    int x, y;
-  private:
-    ~PrivateDtor(); // expected-note {{declared private here}}
-  };
-
-  void testPrivateDtor() {
-    (void)(PrivateDtor){1, 2}; // expected-error {{temporary of type 'brace_initializers::PrivateDtor' has private destructor}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/condition.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/condition.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/condition.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 
-
-void test() {
-  int x;
-  if (x) ++x;
-  if (int x=0) ++x;
-
-  typedef int arr[10];
-  while (arr x={0}) ; // expected-error {{an array type is not allowed here}}
-  while (int f()=0) ; // expected-error {{a function type is not allowed here}}
-
-  struct S {} s;
-  if (s) ++x; // expected-error {{value of type 'struct S' is not contextually convertible to 'bool'}}
-  while (struct S x=s) ; // expected-error {{value of type 'struct S' is not contextually convertible to 'bool'}}
-  do ; while (s); // expected-error {{value of type 'struct S' is not contextually convertible to 'bool'}}
-  for (;s;) ; // expected-error {{value of type 'struct S' is not contextually convertible to 'bool'}}
-  switch (s) {} // expected-error {{statement requires expression of integer type ('struct S' invalid)}}
-
-  while (struct NewS *x=0) ;
-  while (struct S {} *x=0) ; // expected-error {{types may not be defined in conditions}}
-  while (struct {} *x=0) ; // expected-error {{types may not be defined in conditions}}
-  switch (enum {E} x=0) ; // expected-error {{types may not be defined in conditions}}
-
-  if (int x=0) { // expected-note 2 {{previous definition is here}}
-    int x;  // expected-error {{redefinition of 'x'}}
-  }
-  else
-    int x;  // expected-error {{redefinition of 'x'}}
-  while (int x=0) int x; // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
-  while (int x=0) { int x; } // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
-  for (int x; int x=0; ) ; // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
-  for (int x; ; ) int x; // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
-  for (; int x=0; ) int x; // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
-  for (; int x=0; ) { int x; } // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
-  switch (int x=0) { default: int x; } // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
-}
-
-int* get_int_ptr();
-
-void test2() {
-  float *ip;
-  if (int *ip = ip) {
-  }
-}
-
-// Make sure we do function/array decay.
-void test3() {
-  if ("help")
-    (void) 0;
-
-  if (test3) // expected-warning {{address of function 'test3' will always evaluate to 'true'}} \
-                expected-note {{prefix with the address-of operator to silence this warning}}
-    (void) 0;
-}
-
-void test4(bool (&x)(void)) {
-  while (x);
-}
-
-template <class>
-void test5() {
-  if (struct S {}* p = 0) // expected-error {{types may not be defined in conditions}}
-    ;
-}
-void test5_inst() {
-   test5<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/conditional-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/conditional-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/conditional-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,367 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify -std=c++11 -Wsign-conversion %s
-
-// C++ rules for ?: are a lot stricter than C rules, and have to take into
-// account more conversion options.
-// This test runs in C++11 mode for the contextual conversion of the condition.
-
-struct ToBool { explicit operator bool(); };
-
-struct B;
-struct A {
-  A(); 
-  A(const B&); // expected-note 2 {{candidate constructor}}
-}; 
-struct B { operator A() const; }; // expected-note 2 {{candidate function}}
-struct I { operator int(); };
-struct J { operator I(); };
-struct K { operator double(); };
-typedef void (*vfn)();
-struct F { operator vfn(); };
-struct G { operator vfn(); };
-
-struct Base {
-  int trick();
-  A trick() const;
-  void fn1();
-};
-struct Derived : Base {
-  void fn2();
-};
-struct Convertible { operator Base&(); };
-struct Priv : private Base {}; // expected-note 4 {{declared private here}}
-struct Mid : Base {};
-struct Fin : Mid, Derived {};
-typedef void (Derived::*DFnPtr)();
-struct ToMemPtr { operator DFnPtr(); };
-
-struct BadDerived;
-struct BadBase { operator BadDerived&(); };
-struct BadDerived : BadBase {};
-
-struct Fields {
-  int i1, i2, b1 : 3, b2 : 3;
-};
-struct MixedFields {
-  int i;
-  volatile int vi;
-  const int ci;
-  const volatile int cvi;
-};
-struct MixedFieldsDerived : MixedFields {
-};
-
-enum Enum { EVal };
-
-struct Ambig {
-  operator short(); // expected-note 2 {{candidate function}}
-  operator signed char(); // expected-note 2 {{candidate function}}
-};
-
-struct Abstract {
-  virtual ~Abstract() = 0; // expected-note {{unimplemented pure virtual method '~Abstract' in 'Abstract'}}
-};
-
-struct Derived1: Abstract {
-};
-
-struct Derived2: Abstract {
-};
-
-void test()
-{
-  // This function tests C++0x 5.16
-
-  // p1 (contextually convert to bool)
-  int i1 = ToBool() ? 0 : 1;
-
-  // p2 (one or both void, and throwing)
-  i1 ? throw 0 : throw 1;
-  i1 ? test() : throw 1;
-  i1 ? throw 0 : test();
-  i1 ? test() : test();
-  i1 = i1 ? throw 0 : 0;
-  i1 = i1 ? 0 : throw 0;
-  i1 ? 0 : test(); // expected-error {{right operand to ? is void, but left operand is of type 'int'}}
-  i1 ? test() : 0; // expected-error {{left operand to ? is void, but right operand is of type 'int'}}
-  (i1 ? throw 0 : i1) = 0; // expected-error {{expression is not assignable}}
-  (i1 ? i1 : throw 0) = 0; // expected-error {{expression is not assignable}}
-
-  // p3 (one or both class type, convert to each other)
-  // b1 (lvalues)
-  Base base;
-  Derived derived;
-  Convertible conv;
-  Base &bar1 = i1 ? base : derived;
-  Base &bar2 = i1 ? derived : base;
-  Base &bar3 = i1 ? base : conv;
-  Base &bar4 = i1 ? conv : base;
-  // these are ambiguous
-  BadBase bb;
-  BadDerived bd;
-  (void)(i1 ? bb : bd); // expected-error {{conditional expression is ambiguous; 'BadBase' can be converted to 'BadDerived' and vice versa}}
-  (void)(i1 ? bd : bb); // expected-error {{conditional expression is ambiguous}}
-  // curiously enough (and a defect?), these are not
-  // for rvalues, hierarchy takes precedence over other conversions
-  (void)(i1 ? BadBase() : BadDerived());
-  (void)(i1 ? BadDerived() : BadBase());
-
-  // b2.1 (hierarchy stuff)
-  extern const Base constret();
-  extern const Derived constder();
-  // should use const overload
-  A a1((i1 ? constret() : Base()).trick());
-  A a2((i1 ? Base() : constret()).trick());
-  A a3((i1 ? constret() : Derived()).trick());
-  A a4((i1 ? Derived() : constret()).trick());
-  // should use non-const overload
-  i1 = (i1 ? Base() : Base()).trick();
-  i1 = (i1 ? Base() : Base()).trick();
-  i1 = (i1 ? Base() : Derived()).trick();
-  i1 = (i1 ? Derived() : Base()).trick();
-  // should fail: const lost
-  (void)(i1 ? Base() : constder()); // expected-error {{incompatible operand types ('Base' and 'const Derived')}}
-  (void)(i1 ? constder() : Base()); // expected-error {{incompatible operand types ('const Derived' and 'Base')}}
-
-  Priv priv;
-  Fin fin;
-  (void)(i1 ? Base() : Priv()); // expected-error{{private base class}}
-  (void)(i1 ? Priv() : Base()); // expected-error{{private base class}}
-  (void)(i1 ? Base() : Fin()); // expected-error{{ambiguous conversion from derived class 'Fin' to base class 'Base':}}
-  (void)(i1 ? Fin() : Base()); // expected-error{{ambiguous conversion from derived class 'Fin' to base class 'Base':}}
-  (void)(i1 ? base : priv); // expected-error {{private base class}}
-  (void)(i1 ? priv : base); // expected-error {{private base class}}
-  (void)(i1 ? base : fin); // expected-error {{ambiguous conversion from derived class 'Fin' to base class 'Base':}}
-  (void)(i1 ? fin : base); // expected-error {{ambiguous conversion from derived class 'Fin' to base class 'Base':}}
-
-  // b2.2 (non-hierarchy)
-  i1 = i1 ? I() : i1;
-  i1 = i1 ? i1 : I();
-  I i2(i1 ? I() : J());
-  I i3(i1 ? J() : I());
-  // "the type [it] woud have if E2 were converted to an rvalue"
-  vfn pfn = i1 ? F() : test;
-  pfn = i1 ? test : F();
-  (void)(i1 ? A() : B()); // expected-error {{conversion from 'B' to 'A' is ambiguous}}
-  (void)(i1 ? B() : A()); // expected-error {{conversion from 'B' to 'A' is ambiguous}}
-  (void)(i1 ? 1 : Ambig()); // expected-error {{conversion from 'Ambig' to 'int' is ambiguous}}
-  (void)(i1 ? Ambig() : 1); // expected-error {{conversion from 'Ambig' to 'int' is ambiguous}}
-  // By the way, this isn't an lvalue:
-  &(i1 ? i1 : i2); // expected-error {{cannot take the address of an rvalue}}
-
-  // p4 (lvalue, same type)
-  Fields flds;
-  int &ir1 = i1 ? flds.i1 : flds.i2;
-  (i1 ? flds.b1 : flds.i2) = 0;
-  (i1 ? flds.i1 : flds.b2) = 0;
-  (i1 ? flds.b1 : flds.b2) = 0;
-
-  // p5 (conversion to built-in types)
-  // GCC 4.3 fails these
-  double d1 = i1 ? I() : K();
-  pfn = i1 ? F() : G();
-  DFnPtr pfm;
-  pfm = i1 ? DFnPtr() : &Base::fn1;
-  pfm = i1 ? &Base::fn1 : DFnPtr();
-
-  // p6 (final conversions)
-  i1 = i1 ? i1 : ir1;
-  int *pi1 = i1 ? &i1 : 0;
-  pi1 = i1 ? 0 : &i1;
-  i1 = i1 ? i1 : EVal;
-  i1 = i1 ? EVal : i1;
-  d1 = i1 ? 'c' : 4.0;
-  d1 = i1 ? 4.0 : 'c';
-  Base *pb = i1 ? (Base*)0 : (Derived*)0;
-  pb = i1 ? (Derived*)0 : (Base*)0;
-  pfm = i1 ? &Base::fn1 : &Derived::fn2;
-  pfm = i1 ? &Derived::fn2 : &Base::fn1;
-  pfm = i1 ? &Derived::fn2 : 0;
-  pfm = i1 ? 0 : &Derived::fn2;
-  const int (MixedFieldsDerived::*mp1) =
-    i1 ? &MixedFields::ci : &MixedFieldsDerived::i;
-  const volatile int (MixedFields::*mp2) =
-    i1 ? &MixedFields::ci : &MixedFields::cvi;
-  (void)(i1 ? &MixedFields::ci : &MixedFields::vi);
-  // Conversion of primitives does not result in an lvalue.
-  &(i1 ? i1 : d1); // expected-error {{cannot take the address of an rvalue}}
-
-  (void)&(i1 ? flds.b1 : flds.i1); // expected-error {{address of bit-field requested}}
-  (void)&(i1 ? flds.i1 : flds.b1); // expected-error {{address of bit-field requested}}
-  
-
-  unsigned long test0 = 5;
-  test0 = test0 ? (long) test0 : test0; // expected-warning {{operand of ? changes signedness: 'long' to 'unsigned long'}}
-  test0 = test0 ? (int) test0 : test0; // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-  test0 = test0 ? (short) test0 : test0; // expected-warning {{operand of ? changes signedness: 'short' to 'unsigned long'}}
-  test0 = test0 ? test0 : (long) test0; // expected-warning {{operand of ? changes signedness: 'long' to 'unsigned long'}}
-  test0 = test0 ? test0 : (int) test0; // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-  test0 = test0 ? test0 : (short) test0; // expected-warning {{operand of ? changes signedness: 'short' to 'unsigned long'}}
-  test0 = test0 ? test0 : (long) 10;
-  test0 = test0 ? test0 : (int) 10;
-  test0 = test0 ? test0 : (short) 10;
-  test0 = test0 ? (long) 10 : test0;
-  test0 = test0 ? (int) 10 : test0;
-  test0 = test0 ? (short) 10 : test0;
-
-  int test1;
-  test0 = test0 ? EVal : test0;
-  test1 = test0 ? EVal : (int) test0;
-
-  test0 = test0 ? EVal : test1; // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-  test0 = test0 ? test1 : EVal; // expected-warning {{operand of ? changes signedness: 'int' to 'unsigned long'}}
-
-  test1 = test0 ? EVal : (int) test0;
-  test1 = test0 ? (int) test0 : EVal;
-
-  // Note the thing that this does not test: since DR446, various situations
-  // *must* create a separate temporary copy of class objects. This can only
-  // be properly tested at runtime, though.
-
-  const Abstract &a = true ? static_cast<const Abstract&>(Derived1()) : Derived2(); // expected-error {{allocating an object of abstract class type 'const Abstract'}}
-  true ? static_cast<const Abstract&>(Derived1()) : throw 3; // expected-error {{allocating an object of abstract class type 'const Abstract'}}
-}
-
-namespace PR6595 {
-  struct OtherString {
-    OtherString();
-    OtherString(const char*);
-  };
-
-  struct String {
-    String(const char *);
-    String(const OtherString&);
-    operator const char*() const;
-  };
-
-  void f(bool Cond, String S, OtherString OS) {
-    (void)(Cond? S : "");
-    (void)(Cond? "" : S);
-    const char a[1] = {'a'};
-    (void)(Cond? S : a);
-    (void)(Cond? a : S);
-    (void)(Cond? OS : S);
-  }
-}
-
-namespace PR6757 {
-  struct Foo1 {
-    Foo1();
-    Foo1(const Foo1&);
-  };
-
-  struct Foo2 { };
-
-  struct Foo3 {
-    Foo3();
-    Foo3(Foo3&); // expected-note{{would lose const qualifier}}
-  };
-
-  struct Bar {
-    operator const Foo1&() const;
-    operator const Foo2&() const;
-    operator const Foo3&() const;
-  };
-
-  void f() {
-    (void)(true ? Bar() : Foo1()); // okay
-    (void)(true ? Bar() : Foo2()); // okay
-    (void)(true ? Bar() : Foo3()); // expected-error{{no viable constructor copying temporary}}
-  }
-}
-
-// Reduced from selfhost.
-namespace test1 {
-  struct A {
-    enum Foo {
-      fa, fb, fc, fd, fe, ff
-    };
-
-    Foo x();
-  };
-
-  void foo(int);
-
-  void test(A *a) {
-    foo(a ? a->x() : 0);
-  }
-}
-
-namespace rdar7998817 {
-  class X { 
-    X(X&); // expected-note{{declared private here}}
-
-    struct ref { };
-
-  public:
-    X();
-    X(ref);
-    
-    operator ref();
-  };
-
-  void f(bool B) {
-    X x;
-    (void)(B? x // expected-error{{calling a private constructor of class 'rdar7998817::X'}}
-           : X());
-  }
-}
-
-namespace PR7598 {
-  enum Enum {
-    v = 1,
-  };
-
-  const Enum g() {
-    return v;
-  }
-
-  const volatile Enum g2() {
-    return v;
-  }
-
-  void f() {
-    const Enum v2 = v;
-    Enum e = false ? g() : v;
-    Enum e2 = false ? v2 : v;
-    Enum e3 = false ? g2() : v;
-  }
-
-}
-
-namespace PR9236 {
-#define NULL 0L
-  void f() {
-    int i;
-    (void)(true ? A() : NULL); // expected-error{{non-pointer operand type 'A' incompatible with NULL}}
-    (void)(true ? NULL : A()); // expected-error{{non-pointer operand type 'A' incompatible with NULL}}
-    (void)(true ? 0 : A()); // expected-error{{incompatible operand types}}
-    (void)(true ? nullptr : A()); // expected-error{{non-pointer operand type 'A' incompatible with nullptr}}
-    (void)(true ? nullptr : i); // expected-error{{non-pointer operand type 'int' incompatible with nullptr}}
-    (void)(true ? __null : A()); // expected-error{{non-pointer operand type 'A' incompatible with NULL}}
-    (void)(true ? (void*)0 : A()); // expected-error{{incompatible operand types}}
-  }
-}
-
-namespace DR587 {
-  template<typename T>
-  const T *f(bool b) {
-    static T t1 = T();
-    static const T t2 = T();
-    return &(b ? t1 : t2);
-  }
-  struct S {};
-  template const int *f(bool);
-  template const S *f(bool);
-
-  extern bool b;
-  int i = 0;
-  const int ci = 0;
-  volatile int vi = 0;
-  const volatile int cvi = 0;
-
-  const int &cir = b ? i : ci;
-  volatile int &vir = b ? vi : i;
-  const volatile int &cvir1 = b ? ci : cvi;
-  const volatile int &cvir2 = b ? cvi : vi;
-  const volatile int &cvir3 = b ? ci : vi; // expected-error{{volatile lvalue reference to type 'const volatile int' cannot bind to a temporary of type 'int'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/const-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/const-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/const-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A {};
-
-// See if aliasing can confuse this baby.
-typedef char c;
-typedef c *cp;
-typedef cp *cpp;
-typedef cpp *cppp;
-typedef cppp &cpppr;
-typedef const cppp &cpppcr;
-typedef const char cc;
-typedef cc *ccp;
-typedef volatile ccp ccvp;
-typedef ccvp *ccvpp;
-typedef const volatile ccvpp ccvpcvp;
-typedef ccvpcvp *ccvpcvpp;
-typedef int iar[100];
-typedef iar &iarr;
-typedef int (*f)(int);
-
-char ***good_const_cast_test(ccvpcvpp var)
-{
-  // Cast away deep consts and volatiles.
-  char ***var2 = const_cast<cppp>(var);
-  char ***const &var3 = var2;
-  // Const reference to reference.
-  char ***&var4 = const_cast<cpppr>(var3);
-  // Drop reference. Intentionally without qualifier change.
-  char *** var5 = const_cast<cppp>(var4);
-  // Const array to array reference.
-  const int ar[100] = {0};
-  int (&rar)[100] = const_cast<iarr>(ar);
-  // Array decay. Intentionally without qualifier change.
-  int *pi = const_cast<int*>(ar);
-  f fp = 0;
-  // Don't misidentify fn** as a function pointer.
-  f *fpp = const_cast<f*>(&fp);
-  int const A::* const A::*icapcap = 0;
-  int A::* A::* iapap = const_cast<int A::* A::*>(icapcap);
-
-  return var4;
-}
-
-short *bad_const_cast_test(char const *volatile *const volatile *var)
-{
-  // Different pointer levels.
-  char **var2 = const_cast<char**>(var); // expected-error {{const_cast from 'const char *volatile *const volatile *' to 'char **' is not allowed}}
-  // Different final type.
-  short ***var3 = const_cast<short***>(var); // expected-error {{const_cast from 'const char *volatile *const volatile *' to 'short ***' is not allowed}}
-  // Rvalue to reference.
-  char ***&var4 = const_cast<cpppr>(&var2); // expected-error {{const_cast from rvalue to reference type 'cpppr'}}
-  // Non-pointer.
-  char v = const_cast<char>(**var2); // expected-error {{const_cast to 'char', which is not a reference, pointer-to-object, or pointer-to-data-member}}
-  const int *ar[100] = {0};
-  // Not even lenient g++ accepts this.
-  int *(*rar)[100] = const_cast<int *(*)[100]>(&ar); // expected-error {{const_cast from 'const int *(*)[100]' to 'int *(*)[100]' is not allowed}}
-  f fp1 = 0;
-  // Function pointers.
-  f fp2 = const_cast<f>(fp1); // expected-error {{const_cast to 'f' (aka 'int (*)(int)'), which is not a reference, pointer-to-object, or pointer-to-data-member}}
-  void (A::*mfn)() = 0;
-  (void)const_cast<void (A::*)()>(mfn); // expected-error {{const_cast to 'void (A::*)()', which is not a reference, pointer-to-object, or pointer-to-data-member}}
-  return **var3;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1505 +0,0 @@
-// RUN: %clang_cc1 -triple i686-linux -Wno-string-plus-int -fsyntax-only -fcxx-exceptions -verify -std=c++11 -pedantic %s -Wno-comment
-
-namespace StaticAssertFoldTest {
-
-int x;
-static_assert(++x, "test"); // expected-error {{not an integral constant expression}}
-static_assert(false, "test"); // expected-error {{test}}
-
-}
-
-typedef decltype(sizeof(char)) size_t;
-
-template<typename T> constexpr T id(const T &t) { return t; }
-template<typename T> constexpr T min(const T &a, const T &b) {
-  return a < b ? a : b;
-}
-template<typename T> constexpr T max(const T &a, const T &b) {
-  return a < b ? b : a;
-}
-template<typename T, size_t N> constexpr T *begin(T (&xs)[N]) { return xs; }
-template<typename T, size_t N> constexpr T *end(T (&xs)[N]) { return xs + N; }
-
-struct MemberZero {
-  constexpr int zero() const { return 0; }
-};
-
-namespace DerivedToVBaseCast {
-
-  struct U { int n; };
-  struct V : U { int n; };
-  struct A : virtual V { int n; };
-  struct Aa { int n; };
-  struct B : virtual A, Aa {};
-  struct C : virtual A, Aa {};
-  struct D : B, C {};
-
-  D d;
-  constexpr B *p = &d;
-  constexpr C *q = &d;
-
-  static_assert((void*)p != (void*)q, "");
-  static_assert((A*)p == (A*)q, "");
-  static_assert((Aa*)p != (Aa*)q, "");
-
-  constexpr B &pp = d;
-  constexpr C &qq = d;
-  static_assert((void*)&pp != (void*)&qq, "");
-  static_assert(&(A&)pp == &(A&)qq, "");
-  static_assert(&(Aa&)pp != &(Aa&)qq, "");
-
-  constexpr V *v = p;
-  constexpr V *w = q;
-  constexpr V *x = (A*)p;
-  static_assert(v == w, "");
-  static_assert(v == x, "");
-
-  static_assert((U*)&d == p, "");
-  static_assert((U*)&d == q, "");
-  static_assert((U*)&d == v, "");
-  static_assert((U*)&d == w, "");
-  static_assert((U*)&d == x, "");
-
-  struct X {};
-  struct Y1 : virtual X {};
-  struct Y2 : X {};
-  struct Z : Y1, Y2 {};
-  Z z;
-  static_assert((X*)(Y1*)&z != (X*)(Y2*)&z, "");
-}
-
-namespace ConstCast {
-
-constexpr int n1 = 0;
-constexpr int n2 = const_cast<int&>(n1);
-constexpr int *n3 = const_cast<int*>(&n1);
-constexpr int n4 = *const_cast<int*>(&n1);
-constexpr const int * const *n5 = const_cast<const int* const*>(&n3);
-constexpr int **n6 = const_cast<int**>(&n3);
-constexpr int n7 = **n5;
-constexpr int n8 = **n6;
-
-}
-
-namespace TemplateArgumentConversion {
-  template<int n> struct IntParam {};
-
-  using IntParam0 = IntParam<0>;
-  using IntParam0 = IntParam<id(0)>;
-  using IntParam0 = IntParam<MemberZero().zero>; // expected-error {{did you mean to call it with no arguments?}}
-}
-
-namespace CaseStatements {
-  void f(int n) {
-    switch (n) {
-    case MemberZero().zero: // expected-error {{did you mean to call it with no arguments?}} expected-note {{previous}}
-    case id(0): // expected-error {{duplicate case value '0'}}
-      return;
-    }
-  }
-}
-
-extern int &Recurse1;
-int &Recurse2 = Recurse1; // expected-note {{declared here}}
-int &Recurse1 = Recurse2;
-constexpr int &Recurse3 = Recurse2; // expected-error {{must be initialized by a constant expression}} expected-note {{initializer of 'Recurse2' is not a constant expression}}
-
-extern const int RecurseA;
-const int RecurseB = RecurseA; // expected-note {{declared here}}
-const int RecurseA = 10;
-constexpr int RecurseC = RecurseB; // expected-error {{must be initialized by a constant expression}} expected-note {{initializer of 'RecurseB' is not a constant expression}}
-
-namespace MemberEnum {
-  struct WithMemberEnum {
-    enum E { A = 42 };
-  } wme;
-
-  static_assert(wme.A == 42, "");
-}
-
-namespace DefaultArguments {
-
-const int z = int();
-constexpr int Sum(int a = 0, const int &b = 0, const int *c = &z, char d = 0) {
-  return a + b + *c + d;
-}
-const int four = 4;
-constexpr int eight = 8;
-constexpr const int twentyseven = 27;
-static_assert(Sum() == 0, "");
-static_assert(Sum(1) == 1, "");
-static_assert(Sum(1, four) == 5, "");
-static_assert(Sum(1, eight, &twentyseven) == 36, "");
-static_assert(Sum(1, 2, &four, eight) == 15, "");
-
-}
-
-namespace Ellipsis {
-
-// Note, values passed through an ellipsis can't actually be used.
-constexpr int F(int a, ...) { return a; }
-static_assert(F(0) == 0, "");
-static_assert(F(1, 0) == 1, "");
-static_assert(F(2, "test") == 2, "");
-static_assert(F(3, &F) == 3, "");
-int k = 0; // expected-note {{here}}
-static_assert(F(4, k) == 3, ""); // expected-error {{constant expression}} expected-note {{read of non-const variable 'k'}}
-
-}
-
-namespace Recursion {
-  constexpr int fib(int n) { return n > 1 ? fib(n-1) + fib(n-2) : n; }
-  static_assert(fib(11) == 89, "");
-
-  constexpr int gcd_inner(int a, int b) {
-    return b == 0 ? a : gcd_inner(b, a % b);
-  }
-  constexpr int gcd(int a, int b) {
-    return gcd_inner(max(a, b), min(a, b));
-  }
-
-  static_assert(gcd(1749237, 5628959) == 7, "");
-}
-
-namespace FunctionCast {
-  // When folding, we allow functions to be cast to different types. Such
-  // cast functions cannot be called, even if they're constexpr.
-  constexpr int f() { return 1; }
-  typedef double (*DoubleFn)();
-  typedef int (*IntFn)();
-  int a[(int)DoubleFn(f)()]; // expected-error {{variable length array}} expected-warning{{C99 feature}}
-  int b[(int)IntFn(f)()];    // ok
-}
-
-namespace StaticMemberFunction {
-  struct S {
-    static constexpr int k = 42;
-    static constexpr int f(int n) { return n * k + 2; }
-  } s;
-
-  constexpr int n = s.f(19);
-  static_assert(S::f(19) == 800, "");
-  static_assert(s.f(19) == 800, "");
-  static_assert(n == 800, "");
-
-  constexpr int (*sf1)(int) = &S::f;
-  constexpr int (*sf2)(int) = &s.f;
-  constexpr const int *sk = &s.k;
-}
-
-namespace ParameterScopes {
-
-  const int k = 42;
-  constexpr const int &ObscureTheTruth(const int &a) { return a; }
-  constexpr const int &MaybeReturnJunk(bool b, const int a) { // expected-note 2{{declared here}}
-    return ObscureTheTruth(b ? a : k);
-  }
-  static_assert(MaybeReturnJunk(false, 0) == 42, ""); // ok
-  constexpr int a = MaybeReturnJunk(true, 0); // expected-error {{constant expression}} expected-note {{read of variable whose lifetime has ended}}
-
-  constexpr const int MaybeReturnNonstaticRef(bool b, const int a) {
-    return ObscureTheTruth(b ? a : k);
-  }
-  static_assert(MaybeReturnNonstaticRef(false, 0) == 42, ""); // ok
-  constexpr int b = MaybeReturnNonstaticRef(true, 0); // ok
-
-  constexpr int InternalReturnJunk(int n) {
-    return MaybeReturnJunk(true, n); // expected-note {{read of variable whose lifetime has ended}}
-  }
-  constexpr int n3 = InternalReturnJunk(0); // expected-error {{must be initialized by a constant expression}} expected-note {{in call to 'InternalReturnJunk(0)'}}
-
-  constexpr int LToR(int &n) { return n; }
-  constexpr int GrabCallersArgument(bool which, int a, int b) {
-    return LToR(which ? b : a);
-  }
-  static_assert(GrabCallersArgument(false, 1, 2) == 1, "");
-  static_assert(GrabCallersArgument(true, 4, 8) == 8, "");
-
-}
-
-namespace Pointers {
-
-  constexpr int f(int n, const int *a, const int *b, const int *c) {
-    return n == 0 ? 0 : *a + f(n-1, b, c, a);
-  }
-
-  const int x = 1, y = 10, z = 100;
-  static_assert(f(23, &x, &y, &z) == 788, "");
-
-  constexpr int g(int n, int a, int b, int c) {
-    return f(n, &a, &b, &c);
-  }
-  static_assert(g(23, x, y, z) == 788, "");
-
-}
-
-namespace FunctionPointers {
-
-  constexpr int Double(int n) { return 2 * n; }
-  constexpr int Triple(int n) { return 3 * n; }
-  constexpr int Twice(int (*F)(int), int n) { return F(F(n)); }
-  constexpr int Quadruple(int n) { return Twice(Double, n); }
-  constexpr auto Select(int n) -> int (*)(int) {
-    return n == 2 ? &Double : n == 3 ? &Triple : n == 4 ? &Quadruple : 0;
-  }
-  constexpr int Apply(int (*F)(int), int n) { return F(n); } // expected-note {{subexpression}}
-
-  static_assert(1 + Apply(Select(4), 5) + Apply(Select(3), 7) == 42, "");
-
-  constexpr int Invalid = Apply(Select(0), 0); // expected-error {{must be initialized by a constant expression}} expected-note {{in call to 'Apply(0, 0)'}}
-
-}
-
-namespace PointerComparison {
-
-int x, y;
-static_assert(&x == &y, "false"); // expected-error {{false}}
-static_assert(&x != &y, "");
-constexpr bool g1 = &x == &y;
-constexpr bool g2 = &x != &y;
-constexpr bool g3 = &x <= &y; // expected-error {{must be initialized by a constant expression}}
-constexpr bool g4 = &x >= &y; // expected-error {{must be initialized by a constant expression}}
-constexpr bool g5 = &x < &y; // expected-error {{must be initialized by a constant expression}}
-constexpr bool g6 = &x > &y; // expected-error {{must be initialized by a constant expression}}
-
-struct S { int x, y; } s;
-static_assert(&s.x == &s.y, "false"); // expected-error {{false}}
-static_assert(&s.x != &s.y, "");
-static_assert(&s.x <= &s.y, "");
-static_assert(&s.x >= &s.y, "false"); // expected-error {{false}}
-static_assert(&s.x < &s.y, "");
-static_assert(&s.x > &s.y, "false"); // expected-error {{false}}
-
-static_assert(0 == &y, "false"); // expected-error {{false}}
-static_assert(0 != &y, "");
-constexpr bool n3 = 0 <= &y; // expected-error {{must be initialized by a constant expression}}
-constexpr bool n4 = 0 >= &y; // expected-error {{must be initialized by a constant expression}}
-constexpr bool n5 = 0 < &y; // expected-error {{must be initialized by a constant expression}}
-constexpr bool n6 = 0 > &y; // expected-error {{must be initialized by a constant expression}}
-
-static_assert(&x == 0, "false"); // expected-error {{false}}
-static_assert(&x != 0, "");
-constexpr bool n9 = &x <= 0; // expected-error {{must be initialized by a constant expression}}
-constexpr bool n10 = &x >= 0; // expected-error {{must be initialized by a constant expression}}
-constexpr bool n11 = &x < 0; // expected-error {{must be initialized by a constant expression}}
-constexpr bool n12 = &x > 0; // expected-error {{must be initialized by a constant expression}}
-
-static_assert(&x == &x, "");
-static_assert(&x != &x, "false"); // expected-error {{false}}
-static_assert(&x <= &x, "");
-static_assert(&x >= &x, "");
-static_assert(&x < &x, "false"); // expected-error {{false}}
-static_assert(&x > &x, "false"); // expected-error {{false}}
-
-constexpr S* sptr = &s;
-constexpr bool dyncast = sptr == dynamic_cast<S*>(sptr); // expected-error {{constant expression}} expected-note {{dynamic_cast}}
-
-struct U {};
-struct Str {
-  int a : dynamic_cast<S*>(sptr) == dynamic_cast<S*>(sptr); // \
-    expected-warning {{not an integral constant expression}} \
-    expected-note {{dynamic_cast is not allowed in a constant expression}}
-  int b : reinterpret_cast<S*>(sptr) == reinterpret_cast<S*>(sptr); // \
-    expected-warning {{not an integral constant expression}} \
-    expected-note {{reinterpret_cast is not allowed in a constant expression}}
-  int c : (S*)(long)(sptr) == (S*)(long)(sptr); // \
-    expected-warning {{not an integral constant expression}} \
-    expected-note {{cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression}}
-  int d : (S*)(42) == (S*)(42); // \
-    expected-warning {{not an integral constant expression}} \
-    expected-note {{cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression}}
-  int e : (Str*)(sptr) == (Str*)(sptr); // \
-    expected-warning {{not an integral constant expression}} \
-    expected-note {{cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression}}
-  int f : &(U&)(*sptr) == &(U&)(*sptr); // \
-    expected-warning {{not an integral constant expression}} \
-    expected-note {{cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression}}
-  int g : (S*)(void*)(sptr) == sptr; // \
-    expected-warning {{not an integral constant expression}} \
-    expected-note {{cast from 'void *' is not allowed in a constant expression}}
-};
-
-extern char externalvar[];
-constexpr bool constaddress = (void *)externalvar == (void *)0x4000UL; // expected-error {{must be initialized by a constant expression}}
-constexpr bool litaddress = "foo" == "foo"; // expected-error {{must be initialized by a constant expression}} expected-warning {{unspecified}}
-static_assert(0 != "foo", "");
-
-}
-
-namespace MaterializeTemporary {
-
-constexpr int f(const int &r) { return r; }
-constexpr int n = f(1);
-
-constexpr bool same(const int &a, const int &b) { return &a == &b; }
-constexpr bool sameTemporary(const int &n) { return same(n, n); }
-
-static_assert(n, "");
-static_assert(!same(4, 4), "");
-static_assert(same(n, n), "");
-static_assert(sameTemporary(9), "");
-
-}
-
-constexpr int strcmp_ce(const char *p, const char *q) {
-  return (!*p || *p != *q) ? *p - *q : strcmp_ce(p+1, q+1);
-}
-
-namespace StringLiteral {
-
-template<typename Char>
-constexpr int MangleChars(const Char *p) {
-  return *p + 3 * (*p ? MangleChars(p+1) : 0);
-}
-
-static_assert(MangleChars("constexpr!") == 1768383, "");
-static_assert(MangleChars(u8"constexpr!") == 1768383, "");
-static_assert(MangleChars(L"constexpr!") == 1768383, "");
-static_assert(MangleChars(u"constexpr!") == 1768383, "");
-static_assert(MangleChars(U"constexpr!") == 1768383, "");
-
-constexpr char c0 = "nought index"[0];
-constexpr char c1 = "nice index"[10];
-constexpr char c2 = "nasty index"[12]; // expected-error {{must be initialized by a constant expression}} expected-warning {{is past the end}} expected-note {{read of dereferenced one-past-the-end pointer}}
-constexpr char c3 = "negative index"[-1]; // expected-error {{must be initialized by a constant expression}} expected-warning {{is before the beginning}} expected-note {{cannot refer to element -1 of array of 15 elements}}
-constexpr char c4 = ((char*)(int*)"no reinterpret_casts allowed")[14]; // expected-error {{must be initialized by a constant expression}} expected-note {{cast that performs the conversions of a reinterpret_cast}}
-
-constexpr const char *p = "test" + 2;
-static_assert(*p == 's', "");
-
-constexpr const char *max_iter(const char *a, const char *b) {
-  return *a < *b ? b : a;
-}
-constexpr const char *max_element(const char *a, const char *b) {
-  return (a+1 >= b) ? a : max_iter(a, max_element(a+1, b));
-}
-
-constexpr char str[] = "the quick brown fox jumped over the lazy dog";
-constexpr const char *max = max_element(begin(str), end(str));
-static_assert(*max == 'z', "");
-static_assert(max == str + 38, "");
-
-static_assert(strcmp_ce("hello world", "hello world") == 0, "");
-static_assert(strcmp_ce("hello world", "hello clang") > 0, "");
-static_assert(strcmp_ce("constexpr", "test") < 0, "");
-static_assert(strcmp_ce("", " ") < 0, "");
-
-struct S {
-  int n : "foo"[4]; // expected-error {{constant expression}} expected-note {{read of dereferenced one-past-the-end pointer is not allowed in a constant expression}}
-};
-
-struct T {
-  char c[6];
-  constexpr T() : c{"foo"} {}
-};
-constexpr T t;
-
-static_assert(t.c[0] == 'f', "");
-static_assert(t.c[1] == 'o', "");
-static_assert(t.c[2] == 'o', "");
-static_assert(t.c[3] == 0, "");
-static_assert(t.c[4] == 0, "");
-static_assert(t.c[5] == 0, "");
-static_assert(t.c[6] == 0, ""); // expected-error {{constant expression}} expected-note {{one-past-the-end}}
-
-struct U {
-  wchar_t chars[6];
-  int n;
-} constexpr u = { { L"test" }, 0 };
-static_assert(u.chars[2] == L's', "");
-
-struct V {
-  char c[4];
-  constexpr V() : c("hi!") {}
-};
-static_assert(V().c[1] == "i"[0], "");
-
-namespace Parens {
-  constexpr unsigned char a[] = ("foo"), b[] = {"foo"}, c[] = {("foo")},
-                          d[4] = ("foo"), e[5] = {"foo"}, f[6] = {("foo")};
-  static_assert(a[0] == 'f', "");
-  static_assert(b[1] == 'o', "");
-  static_assert(c[2] == 'o', "");
-  static_assert(d[0] == 'f', "");
-  static_assert(e[1] == 'o', "");
-  static_assert(f[2] == 'o', "");
-  static_assert(f[5] == 0, "");
-  static_assert(f[6] == 0, ""); // expected-error {{constant expression}} expected-note {{one-past-the-end}}
-}
-
-}
-
-namespace Array {
-
-template<typename Iter>
-constexpr auto Sum(Iter begin, Iter end) -> decltype(+*begin) {
-  return begin == end ? 0 : *begin + Sum(begin+1, end);
-}
-
-constexpr int xs[] = { 1, 2, 3, 4, 5 };
-constexpr int ys[] = { 5, 4, 3, 2, 1 };
-constexpr int sum_xs = Sum(begin(xs), end(xs));
-static_assert(sum_xs == 15, "");
-
-constexpr int ZipFoldR(int (*F)(int x, int y, int c), int n,
-                       const int *xs, const int *ys, int c) {
-  return n ? F(
-               *xs, // expected-note {{read of dereferenced one-past-the-end pointer}}
-               *ys,
-               ZipFoldR(F, n-1, xs+1, ys+1, c)) // \
-      expected-note {{in call to 'ZipFoldR(&SubMul, 2, &xs[4], &ys[4], 1)'}} \
-      expected-note {{in call to 'ZipFoldR(&SubMul, 1, &xs[5], &ys[5], 1)'}}
-           : c;
-}
-constexpr int MulAdd(int x, int y, int c) { return x * y + c; }
-constexpr int InnerProduct = ZipFoldR(MulAdd, 5, xs, ys, 0);
-static_assert(InnerProduct == 35, "");
-
-constexpr int SubMul(int x, int y, int c) { return (x - y) * c; }
-constexpr int DiffProd = ZipFoldR(SubMul, 2, xs+3, ys+3, 1);
-static_assert(DiffProd == 8, "");
-static_assert(ZipFoldR(SubMul, 3, xs+3, ys+3, 1), ""); // \
-      expected-error {{constant expression}} \
-      expected-note {{in call to 'ZipFoldR(&SubMul, 3, &xs[3], &ys[3], 1)'}}
-
-constexpr const int *p = xs + 3;
-constexpr int xs4 = p[1]; // ok
-constexpr int xs5 = p[2]; // expected-error {{constant expression}} expected-note {{read of dereferenced one-past-the-end pointer}}
-constexpr int xs6 = p[3]; // expected-error {{constant expression}} expected-note {{cannot refer to element 6}}
-constexpr int xs0 = p[-3]; // ok
-constexpr int xs_1 = p[-4]; // expected-error {{constant expression}} expected-note {{cannot refer to element -1}}
-
-constexpr int zs[2][2][2][2] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
-static_assert(zs[0][0][0][0] == 1, "");
-static_assert(zs[1][1][1][1] == 16, "");
-static_assert(zs[0][0][0][2] == 3, ""); // expected-error {{constant expression}} expected-note {{read of dereferenced one-past-the-end pointer}}
-static_assert((&zs[0][0][0][2])[-1] == 2, "");
-static_assert(**(**(zs + 1) + 1) == 11, "");
-static_assert(*(&(&(*(*&(&zs[2] - 1)[0] + 2 - 2))[2])[-1][-1] + 1) == 11, ""); // expected-error {{constant expression}} expected-note {{cannot refer to element -1 of array of 2 elements in a constant expression}}
-static_assert(*(&(&(*(*&(&zs[2] - 1)[0] + 2 - 2))[2])[-1][2] - 2) == 11, "");
-constexpr int err_zs_1_2_0_0 = zs[1][2][0][0]; // expected-error {{constant expression}} expected-note {{cannot access array element of pointer past the end}}
-
-constexpr int fail(const int &p) {
-  return (&p)[64]; // expected-note {{cannot refer to element 64 of array of 2 elements}}
-}
-static_assert(fail(*(&(&(*(*&(&zs[2] - 1)[0] + 2 - 2))[2])[-1][2] - 2)) == 11, ""); // \
-expected-error {{static_assert expression is not an integral constant expression}} \
-expected-note {{in call to 'fail(zs[1][0][1][0])'}}
-
-constexpr int arr[40] = { 1, 2, 3, [8] = 4 }; // expected-warning {{C99 feature}}
-constexpr int SumNonzero(const int *p) {
-  return *p + (*p ? SumNonzero(p+1) : 0);
-}
-constexpr int CountZero(const int *p, const int *q) {
-  return p == q ? 0 : (*p == 0) + CountZero(p+1, q);
-}
-static_assert(SumNonzero(arr) == 6, "");
-static_assert(CountZero(arr, arr + 40) == 36, "");
-
-struct ArrayElem {
-  constexpr ArrayElem() : n(0) {}
-  int n;
-  constexpr int f() const { return n; }
-};
-struct ArrayRVal {
-  constexpr ArrayRVal() {}
-  ArrayElem elems[10];
-};
-static_assert(ArrayRVal().elems[3].f() == 0, "");
-
-constexpr int selfref[2][2][2] = {
-  selfref[1][1][1] + 1, selfref[0][0][0] + 1,
-  selfref[1][0][1] + 1, selfref[0][1][0] + 1,
-  selfref[1][0][0] + 1, selfref[0][1][1] + 1 };
-static_assert(selfref[0][0][0] == 1, "");
-static_assert(selfref[0][0][1] == 2, "");
-static_assert(selfref[0][1][0] == 1, "");
-static_assert(selfref[0][1][1] == 2, "");
-static_assert(selfref[1][0][0] == 1, "");
-static_assert(selfref[1][0][1] == 3, "");
-static_assert(selfref[1][1][0] == 0, "");
-static_assert(selfref[1][1][1] == 0, "");
-
-struct TrivialDefCtor { int n; };
-typedef TrivialDefCtor TDCArray[2][2];
-static_assert(TDCArray{}[1][1].n == 0, "");
-
-struct NonAggregateTDC : TrivialDefCtor {};
-typedef NonAggregateTDC NATDCArray[2][2];
-static_assert(NATDCArray{}[1][1].n == 0, "");
-
-}
-
-namespace DependentValues {
-
-struct I { int n; typedef I V[10]; };
-I::V x, y;
-int g();
-template<bool B, typename T> struct S : T {
-  int k;
-  void f() {
-    I::V &cells = B ? x : y;
-    I &i = cells[k];
-    switch (i.n) {}
-
-    // FIXME: We should be able to diagnose this.
-    constexpr int n = g();
-
-    constexpr int m = this->g(); // ok, could be constexpr
-  }
-};
-
-}
-
-namespace Class {
-
-struct A { constexpr A(int a, int b) : k(a + b) {} int k; };
-constexpr int fn(const A &a) { return a.k; }
-static_assert(fn(A(4,5)) == 9, "");
-
-struct B { int n; int m; } constexpr b = { 0, b.n }; // expected-warning {{uninitialized}}
-struct C {
-  constexpr C(C *this_) : m(42), n(this_->m) {} // ok
-  int m, n;
-};
-struct D {
-  C c;
-  constexpr D() : c(&c) {}
-};
-static_assert(D().c.n == 42, "");
-
-struct E {
-  constexpr E() : p(&p) {}
-  void *p;
-};
-constexpr const E &e1 = E(); // expected-error {{constant expression}} expected-note {{reference to temporary is not a constant expression}} expected-note {{temporary created here}}
-// This is a constant expression if we elide the copy constructor call, and
-// is not a constant expression if we don't! But we do, so it is.
-constexpr E e2 = E();
-static_assert(e2.p == &e2.p, "");
-constexpr E e3;
-static_assert(e3.p == &e3.p, "");
-
-extern const class F f;
-struct F {
-  constexpr F() : p(&f.p) {}
-  const void *p;
-};
-constexpr F f;
-
-struct G {
-  struct T {
-    constexpr T(T *p) : u1(), u2(p) {}
-    union U1 {
-      constexpr U1() {}
-      int a, b = 42;
-    } u1;
-    union U2 {
-      constexpr U2(T *p) : c(p->u1.b) {}
-      int c, d;
-    } u2;
-  } t;
-  constexpr G() : t(&t) {}
-} constexpr g;
-
-static_assert(g.t.u1.a == 42, ""); // expected-error {{constant expression}} expected-note {{read of member 'a' of union with active member 'b'}}
-static_assert(g.t.u1.b == 42, "");
-static_assert(g.t.u2.c == 42, "");
-static_assert(g.t.u2.d == 42, ""); // expected-error {{constant expression}} expected-note {{read of member 'd' of union with active member 'c'}}
-
-struct S {
-  int a, b;
-  const S *p;
-  double d;
-  const char *q;
-
-  constexpr S(int n, const S *p) : a(5), b(n), p(p), d(n), q("hello") {}
-};
-
-S global(43, &global);
-
-static_assert(S(15, &global).b == 15, "");
-
-constexpr bool CheckS(const S &s) {
-  return s.a == 5 && s.b == 27 && s.p == &global && s.d == 27. && s.q[3] == 'l';
-}
-static_assert(CheckS(S(27, &global)), "");
-
-struct Arr {
-  char arr[3];
-  constexpr Arr() : arr{'x', 'y', 'z'} {}
-};
-constexpr int hash(Arr &&a) {
-  return a.arr[0] + a.arr[1] * 0x100 + a.arr[2] * 0x10000;
-}
-constexpr int k = hash(Arr());
-static_assert(k == 0x007a7978, "");
-
-
-struct AggregateInit {
-  const char &c;
-  int n;
-  double d;
-  int arr[5];
-  void *p;
-};
-
-constexpr AggregateInit agg1 = { "hello"[0] };
-
-static_assert(strcmp_ce(&agg1.c, "hello") == 0, "");
-static_assert(agg1.n == 0, "");
-static_assert(agg1.d == 0.0, "");
-static_assert(agg1.arr[-1] == 0, ""); // expected-error {{constant expression}} expected-note {{cannot refer to element -1}}
-static_assert(agg1.arr[0] == 0, "");
-static_assert(agg1.arr[4] == 0, "");
-static_assert(agg1.arr[5] == 0, ""); // expected-error {{constant expression}} expected-note {{read of dereferenced one-past-the-end}}
-static_assert(agg1.p == nullptr, "");
-
-static constexpr const unsigned char uc[] = { "foo" };
-static_assert(uc[0] == 'f', "");
-static_assert(uc[3] == 0, "");
-
-namespace SimpleDerivedClass {
-
-struct B {
-  constexpr B(int n) : a(n) {}
-  int a;
-};
-struct D : B {
-  constexpr D(int n) : B(n) {}
-};
-constexpr D d(3);
-static_assert(d.a == 3, "");
-
-}
-
-struct Bottom { constexpr Bottom() {} };
-struct Base : Bottom {
-  constexpr Base(int a = 42, const char *b = "test") : a(a), b(b) {}
-  int a;
-  const char *b;
-};
-struct Base2 : Bottom {
-  constexpr Base2(const int &r) : r(r) {}
-  int q = 123;
-  const int &r;
-};
-struct Derived : Base, Base2 {
-  constexpr Derived() : Base(76), Base2(a) {}
-  int c = r + b[1];
-};
-
-constexpr bool operator==(const Base &a, const Base &b) {
-  return a.a == b.a && strcmp_ce(a.b, b.b) == 0;
-}
-
-constexpr Base base;
-constexpr Base base2(76);
-constexpr Derived derived;
-static_assert(derived.a == 76, "");
-static_assert(derived.b[2] == 's', "");
-static_assert(derived.c == 76 + 'e', "");
-static_assert(derived.q == 123, "");
-static_assert(derived.r == 76, "");
-static_assert(&derived.r == &derived.a, "");
-
-static_assert(!(derived == base), "");
-static_assert(derived == base2, "");
-
-constexpr Bottom &bot1 = (Base&)derived;
-constexpr Bottom &bot2 = (Base2&)derived;
-static_assert(&bot1 != &bot2, "");
-
-constexpr Bottom *pb1 = (Base*)&derived;
-constexpr Bottom *pb2 = (Base2*)&derived;
-static_assert(&pb1 != &pb2, "");
-static_assert(pb1 == &bot1, "");
-static_assert(pb2 == &bot2, "");
-
-constexpr Base2 &fail = (Base2&)bot1; // expected-error {{constant expression}} expected-note {{cannot cast object of dynamic type 'const Class::Derived' to type 'Class::Base2'}}
-constexpr Base &fail2 = (Base&)*pb2; // expected-error {{constant expression}} expected-note {{cannot cast object of dynamic type 'const Class::Derived' to type 'Class::Base'}}
-constexpr Base2 &ok2 = (Base2&)bot2;
-static_assert(&ok2 == &derived, "");
-
-constexpr Base2 *pfail = (Base2*)pb1; // expected-error {{constant expression}} expected-note {{cannot cast object of dynamic type 'const Class::Derived' to type 'Class::Base2'}}
-constexpr Base *pfail2 = (Base*)&bot2; // expected-error {{constant expression}} expected-note {{cannot cast object of dynamic type 'const Class::Derived' to type 'Class::Base'}}
-constexpr Base2 *pok2 = (Base2*)pb2;
-static_assert(pok2 == &derived, "");
-static_assert(&ok2 == pok2, "");
-static_assert((Base2*)(Derived*)(Base*)pb1 == pok2, "");
-static_assert((Derived*)(Base*)pb1 == (Derived*)pok2, "");
-
-constexpr Base *nullB = 42 - 6 * 7; // expected-warning {{expression which evaluates to zero treated as a null pointer constant of type 'Class::Base *const'}}
-static_assert((Bottom*)nullB == 0, "");
-static_assert((Derived*)nullB == 0, "");
-static_assert((void*)(Bottom*)nullB == (void*)(Derived*)nullB, "");
-Base * nullB2 = '\0'; // expected-warning {{expression which evaluates to zero treated as a null pointer constant of type 'Class::Base *'}}
-Base * nullB3 = (0);
-// We suppress the warning in unevaluated contexts to workaround some gtest
-// behavior. Once this becomes an error this isn't a problem anymore.
-static_assert(nullB == (1 - 1), "");
-
-
-namespace ConversionOperators {
-
-struct T {
-  constexpr T(int n) : k(5*n - 3) {}
-  constexpr operator int() const { return k; }
-  int k;
-};
-
-struct S {
-  constexpr S(int n) : k(2*n + 1) {}
-  constexpr operator int() const { return k; }
-  constexpr operator T() const { return T(k); }
-  int k;
-};
-
-constexpr bool check(T a, T b) { return a == b.k; }
-
-static_assert(S(5) == 11, "");
-static_assert(check(S(5), 11), "");
-
-namespace PR14171 {
-
-struct X {
-  constexpr (operator int)() const { return 0; }
-};
-static_assert(X() == 0, "");
-
-}
-
-}
-
-}
-
-namespace Temporaries {
-
-struct S {
-  constexpr S() {}
-  constexpr int f() const;
-};
-struct T : S {
-  constexpr T(int n) : S(), n(n) {}
-  int n;
-};
-constexpr int S::f() const {
-  // 'this' must be the postfix-expression in a class member access expression,
-  // so we can't just use
-  //   return static_cast<T*>(this)->n;
-  return this->*(int(S::*))&T::n;
-}
-// The T temporary is implicitly cast to an S subobject, but we can recover the
-// T full-object via a base-to-derived cast, or a derived-to-base-casted member
-// pointer.
-static_assert(T(3).f() == 3, "");
-
-constexpr int f(const S &s) {
-  return static_cast<const T&>(s).n;
-}
-constexpr int n = f(T(5));
-static_assert(f(T(5)) == 5, "");
-
-constexpr bool b(int n) { return &n; }
-static_assert(b(0), "");
-
-}
-
-namespace Union {
-
-union U {
-  int a;
-  int b;
-};
-
-constexpr U u[4] = { { .a = 0 }, { .b = 1 }, { .a = 2 }, { .b = 3 } }; // expected-warning 4{{C99 feature}}
-static_assert(u[0].a == 0, "");
-static_assert(u[0].b, ""); // expected-error {{constant expression}} expected-note {{read of member 'b' of union with active member 'a'}}
-static_assert(u[1].b == 1, "");
-static_assert((&u[1].b)[1] == 2, ""); // expected-error {{constant expression}} expected-note {{read of dereferenced one-past-the-end pointer}}
-static_assert(*(&(u[1].b) + 1 + 1) == 3, ""); // expected-error {{constant expression}} expected-note {{cannot refer to element 2 of non-array object}}
-static_assert((&(u[1]) + 1 + 1)->b == 3, "");
-
-constexpr U v = {};
-static_assert(v.a == 0, "");
-
-union Empty {};
-constexpr Empty e = {};
-
-// Make sure we handle trivial copy constructors for unions.
-constexpr U x = {42};
-constexpr U y = x;
-static_assert(y.a == 42, "");
-static_assert(y.b == 42, ""); // expected-error {{constant expression}} expected-note {{'b' of union with active member 'a'}}
-
-}
-
-namespace MemberPointer {
-  struct A {
-    constexpr A(int n) : n(n) {}
-    int n;
-    constexpr int f() const { return n + 3; }
-  };
-  constexpr A a(7);
-  static_assert(A(5).*&A::n == 5, "");
-  static_assert((&a)->*&A::n == 7, "");
-  static_assert((A(8).*&A::f)() == 11, "");
-  static_assert(((&a)->*&A::f)() == 10, "");
-
-  struct B : A {
-    constexpr B(int n, int m) : A(n), m(m) {}
-    int m;
-    constexpr int g() const { return n + m + 1; }
-  };
-  constexpr B b(9, 13);
-  static_assert(B(4, 11).*&A::n == 4, "");
-  static_assert(B(4, 11).*&B::m == 11, "");
-  static_assert(B(4, 11).*(int(A::*))&B::m == 11, "");
-  static_assert((&b)->*&A::n == 9, "");
-  static_assert((&b)->*&B::m == 13, "");
-  static_assert((&b)->*(int(A::*))&B::m == 13, "");
-  static_assert((B(4, 11).*&A::f)() == 7, "");
-  static_assert((B(4, 11).*&B::g)() == 16, "");
-  static_assert((B(4, 11).*(int(A::*)()const)&B::g)() == 16, "");
-  static_assert(((&b)->*&A::f)() == 12, "");
-  static_assert(((&b)->*&B::g)() == 23, "");
-  static_assert(((&b)->*(int(A::*)()const)&B::g)() == 23, "");
-
-  struct S {
-    constexpr S(int m, int n, int (S::*pf)() const, int S::*pn) :
-      m(m), n(n), pf(pf), pn(pn) {}
-    constexpr S() : m(), n(), pf(&S::f), pn(&S::n) {}
-
-    constexpr int f() const { return this->*pn; }
-    virtual int g() const;
-
-    int m, n;
-    int (S::*pf)() const;
-    int S::*pn;
-  };
-
-  constexpr int S::*pm = &S::m;
-  constexpr int S::*pn = &S::n;
-  constexpr int (S::*pf)() const = &S::f;
-  constexpr int (S::*pg)() const = &S::g;
-
-  constexpr S s(2, 5, &S::f, &S::m);
-
-  static_assert((s.*&S::f)() == 2, "");
-  static_assert((s.*s.pf)() == 2, "");
-
-  static_assert(pf == &S::f, "");
-  static_assert(pf == s.*&S::pf, "");
-  static_assert(pm == &S::m, "");
-  static_assert(pm != pn, "");
-  static_assert(s.pn != pn, "");
-  static_assert(s.pn == pm, "");
-  static_assert(pg != nullptr, "");
-  static_assert(pf != nullptr, "");
-  static_assert((int S::*)nullptr == nullptr, "");
-  static_assert(pg == pg, ""); // expected-error {{constant expression}} expected-note {{comparison of pointer to virtual member function 'g' has unspecified value}}
-  static_assert(pf != pg, ""); // expected-error {{constant expression}} expected-note {{comparison of pointer to virtual member function 'g' has unspecified value}}
-
-  template<int n> struct T : T<n-1> {};
-  template<> struct T<0> { int n; };
-  template<> struct T<30> : T<29> { int m; };
-
-  T<17> t17;
-  T<30> t30;
-
-  constexpr int (T<10>::*deepn) = &T<0>::n;
-  static_assert(&(t17.*deepn) == &t17.n, "");
-  static_assert(deepn == &T<2>::n, "");
-
-  constexpr int (T<15>::*deepm) = (int(T<10>::*))&T<30>::m;
-  constexpr int *pbad = &(t17.*deepm); // expected-error {{constant expression}}
-  static_assert(&(t30.*deepm) == &t30.m, "");
-  static_assert(deepm == &T<50>::m, "");
-  static_assert(deepm != deepn, "");
-
-  constexpr T<5> *p17_5 = &t17;
-  constexpr T<13> *p17_13 = (T<13>*)p17_5;
-  constexpr T<23> *p17_23 = (T<23>*)p17_13; // expected-error {{constant expression}} expected-note {{cannot cast object of dynamic type 'T<17>' to type 'T<23>'}}
-  static_assert(&(p17_5->*(int(T<3>::*))deepn) == &t17.n, "");
-  static_assert(&(p17_13->*deepn) == &t17.n, "");
-  constexpr int *pbad2 = &(p17_13->*(int(T<9>::*))deepm); // expected-error {{constant expression}}
-
-  constexpr T<5> *p30_5 = &t30;
-  constexpr T<23> *p30_23 = (T<23>*)p30_5;
-  constexpr T<13> *p30_13 = p30_23;
-  static_assert(&(p30_5->*(int(T<3>::*))deepn) == &t30.n, "");
-  static_assert(&(p30_13->*deepn) == &t30.n, "");
-  static_assert(&(p30_23->*deepn) == &t30.n, "");
-  static_assert(&(p30_5->*(int(T<2>::*))deepm) == &t30.m, "");
-  static_assert(&(((T<17>*)p30_13)->*deepm) == &t30.m, "");
-  static_assert(&(p30_23->*deepm) == &t30.m, "");
-
-  struct Base { int n; };
-  template<int N> struct Mid : Base {};
-  struct Derived : Mid<0>, Mid<1> {};
-  static_assert(&Mid<0>::n == &Mid<1>::n, "");
-  static_assert((int Derived::*)(int Mid<0>::*)&Mid<0>::n !=
-                (int Derived::*)(int Mid<1>::*)&Mid<1>::n, "");
-  static_assert(&Mid<0>::n == (int Mid<0>::*)&Base::n, "");
-}
-
-namespace ArrayBaseDerived {
-
-  struct Base {
-    constexpr Base() {}
-    int n = 0;
-  };
-  struct Derived : Base {
-    constexpr Derived() {}
-    constexpr const int *f() const { return &n; }
-  };
-
-  constexpr Derived a[10];
-  constexpr Derived *pd3 = const_cast<Derived*>(&a[3]);
-  constexpr Base *pb3 = const_cast<Derived*>(&a[3]);
-  static_assert(pb3 == pd3, "");
-
-  // pb3 does not point to an array element.
-  constexpr Base *pb4 = pb3 + 1; // ok, one-past-the-end pointer.
-  constexpr int pb4n = pb4->n; // expected-error {{constant expression}} expected-note {{cannot access field of pointer past the end}}
-  constexpr Base *err_pb5 = pb3 + 2; // expected-error {{constant expression}} expected-note {{cannot refer to element 2}} expected-note {{here}}
-  constexpr int err_pb5n = err_pb5->n; // expected-error {{constant expression}} expected-note {{initializer of 'err_pb5' is not a constant expression}}
-  constexpr Base *err_pb2 = pb3 - 1; // expected-error {{constant expression}} expected-note {{cannot refer to element -1}} expected-note {{here}}
-  constexpr int err_pb2n = err_pb2->n; // expected-error {{constant expression}} expected-note {{initializer of 'err_pb2'}}
-  constexpr Base *pb3a = pb4 - 1;
-
-  // pb4 does not point to a Derived.
-  constexpr Derived *err_pd4 = (Derived*)pb4; // expected-error {{constant expression}} expected-note {{cannot access derived class of pointer past the end}}
-  constexpr Derived *pd3a = (Derived*)pb3a;
-  constexpr int pd3n = pd3a->n;
-
-  // pd3a still points to the Derived array.
-  constexpr Derived *pd6 = pd3a + 3;
-  static_assert(pd6 == &a[6], "");
-  constexpr Derived *pd9 = pd6 + 3;
-  constexpr Derived *pd10 = pd6 + 4;
-  constexpr int pd9n = pd9->n; // ok
-  constexpr int err_pd10n = pd10->n; // expected-error {{constant expression}} expected-note {{cannot access base class of pointer past the end}}
-  constexpr int pd0n = pd10[-10].n;
-  constexpr int err_pdminus1n = pd10[-11].n; // expected-error {{constant expression}} expected-note {{cannot refer to element -1 of}}
-
-  constexpr Base *pb9 = pd9;
-  constexpr const int *(Base::*pfb)() const =
-      static_cast<const int *(Base::*)() const>(&Derived::f);
-  static_assert((pb9->*pfb)() == &a[9].n, "");
-}
-
-namespace Complex {
-
-class complex {
-  int re, im;
-public:
-  constexpr complex(int re = 0, int im = 0) : re(re), im(im) {}
-  constexpr complex(const complex &o) : re(o.re), im(o.im) {}
-  constexpr complex operator-() const { return complex(-re, -im); }
-  friend constexpr complex operator+(const complex &l, const complex &r) {
-    return complex(l.re + r.re, l.im + r.im);
-  }
-  friend constexpr complex operator-(const complex &l, const complex &r) {
-    return l + -r;
-  }
-  friend constexpr complex operator*(const complex &l, const complex &r) {
-    return complex(l.re * r.re - l.im * r.im, l.re * r.im + l.im * r.re);
-  }
-  friend constexpr bool operator==(const complex &l, const complex &r) {
-    return l.re == r.re && l.im == r.im;
-  }
-  constexpr bool operator!=(const complex &r) const {
-    return re != r.re || im != r.im;
-  }
-  constexpr int real() const { return re; }
-  constexpr int imag() const { return im; }
-};
-
-constexpr complex i = complex(0, 1);
-constexpr complex k = (3 + 4*i) * (6 - 4*i);
-static_assert(complex(1,0).real() == 1, "");
-static_assert(complex(1,0).imag() == 0, "");
-static_assert(((complex)1).imag() == 0, "");
-static_assert(k.real() == 34, "");
-static_assert(k.imag() == 12, "");
-static_assert(k - 34 == 12*i, "");
-static_assert((complex)1 == complex(1), "");
-static_assert((complex)1 != complex(0, 1), "");
-static_assert(complex(1) == complex(1), "");
-static_assert(complex(1) != complex(0, 1), "");
-constexpr complex makeComplex(int re, int im) { return complex(re, im); }
-static_assert(makeComplex(1,0) == complex(1), "");
-static_assert(makeComplex(1,0) != complex(0, 1), "");
-
-class complex_wrap : public complex {
-public:
-  constexpr complex_wrap(int re, int im = 0) : complex(re, im) {}
-  constexpr complex_wrap(const complex_wrap &o) : complex(o) {}
-};
-
-static_assert((complex_wrap)1 == complex(1), "");
-static_assert((complex)1 != complex_wrap(0, 1), "");
-static_assert(complex(1) == complex_wrap(1), "");
-static_assert(complex_wrap(1) != complex(0, 1), "");
-constexpr complex_wrap makeComplexWrap(int re, int im) {
-  return complex_wrap(re, im);
-}
-static_assert(makeComplexWrap(1,0) == complex(1), "");
-static_assert(makeComplexWrap(1,0) != complex(0, 1), "");
-
-}
-
-namespace PR11595 {
-  struct A { constexpr bool operator==(int x) const { return true; } };
-  struct B { B(); A& x; };
-  static_assert(B().x == 3, "");  // expected-error {{constant expression}} expected-note {{non-literal type 'PR11595::B' cannot be used in a constant expression}}
-
-  constexpr bool f(int k) { // expected-error {{constexpr function never produces a constant expression}}
-    return B().x == k; // expected-note {{non-literal type 'PR11595::B' cannot be used in a constant expression}}
-  }
-}
-
-namespace ExprWithCleanups {
-  struct A { A(); ~A(); int get(); };
-  constexpr int get(bool FromA) { return FromA ? A().get() : 1; }
-  constexpr int n = get(false);
-}
-
-namespace Volatile {
-
-volatile constexpr int n1 = 0; // expected-note {{here}}
-volatile const int n2 = 0; // expected-note {{here}}
-int n3 = 37; // expected-note {{declared here}}
-
-constexpr int m1 = n1; // expected-error {{constant expression}} expected-note {{read of volatile-qualified type 'const volatile int'}}
-constexpr int m2 = n2; // expected-error {{constant expression}} expected-note {{read of volatile-qualified type 'const volatile int'}}
-constexpr int m1b = const_cast<const int&>(n1); // expected-error {{constant expression}} expected-note {{read of volatile object 'n1'}}
-constexpr int m2b = const_cast<const int&>(n2); // expected-error {{constant expression}} expected-note {{read of volatile object 'n2'}}
-
-struct T { int n; };
-const T t = { 42 }; // expected-note {{declared here}}
-
-constexpr int f(volatile int &&r) {
-  return r; // expected-note {{read of volatile-qualified type 'volatile int'}}
-}
-constexpr int g(volatile int &&r) {
-  return const_cast<int&>(r); // expected-note {{read of volatile temporary is not allowed in a constant expression}}
-}
-struct S {
-  int j : f(0); // expected-error {{constant expression}} expected-note {{in call to 'f(0)'}}
-  int k : g(0); // expected-error {{constant expression}} expected-note {{temporary created here}} expected-note {{in call to 'g(0)'}}
-  int l : n3; // expected-error {{constant expression}} expected-note {{read of non-const variable}}
-  int m : t.n; // expected-error {{constant expression}} expected-note {{read of non-constexpr variable}}
-};
-
-}
-
-namespace ExternConstexpr {
-  extern constexpr int n = 0;
-  extern constexpr int m; // expected-error {{constexpr variable declaration must be a definition}}
-  void f() {
-    extern constexpr int i; // expected-error {{constexpr variable declaration must be a definition}}
-    constexpr int j = 0;
-    constexpr int k; // expected-error {{default initialization of an object of const type}}
-  }
-}
-
-namespace ComplexConstexpr {
-  constexpr _Complex float test1 = {};
-  constexpr _Complex float test2 = {1};
-  constexpr _Complex double test3 = {1,2};
-  constexpr _Complex int test4 = {4};
-  constexpr _Complex int test5 = 4;
-  constexpr _Complex int test6 = {5,6};
-  typedef _Complex float fcomplex;
-  constexpr fcomplex test7 = fcomplex();
-
-  constexpr const double &t2r = __real test3;
-  constexpr const double &t2i = __imag test3;
-  static_assert(&t2r + 1 == &t2i, "");
-  static_assert(t2r == 1.0, "");
-  static_assert(t2i == 2.0, "");
-  constexpr const double *t2p = &t2r;
-  static_assert(t2p[-1] == 0.0, ""); // expected-error {{constant expr}} expected-note {{cannot refer to element -1 of array of 2 elements}}
-  static_assert(t2p[0] == 1.0, "");
-  static_assert(t2p[1] == 2.0, "");
-  static_assert(t2p[2] == 0.0, ""); // expected-error {{constant expr}} expected-note {{one-past-the-end pointer}}
-  static_assert(t2p[3] == 0.0, ""); // expected-error {{constant expr}} expected-note {{cannot refer to element 3 of array of 2 elements}}
-  constexpr _Complex float *p = 0;
-  constexpr float pr = __real *p; // expected-error {{constant expr}} expected-note {{cannot access real component of null}}
-  constexpr float pi = __imag *p; // expected-error {{constant expr}} expected-note {{cannot access imaginary component of null}}
-  constexpr const _Complex double *q = &test3 + 1;
-  constexpr double qr = __real *q; // expected-error {{constant expr}} expected-note {{cannot access real component of pointer past the end}}
-  constexpr double qi = __imag *q; // expected-error {{constant expr}} expected-note {{cannot access imaginary component of pointer past the end}}
-
-  static_assert(__real test6 == 5, "");
-  static_assert(__imag test6 == 6, "");
-  static_assert(&__imag test6 == &__real test6 + 1, "");
-}
-
-namespace InstantiateCaseStmt {
-  template<int x> constexpr int f() { return x; }
-  template<int x> int g(int c) { switch(c) { case f<x>(): return 1; } return 0; }
-  int gg(int c) { return g<4>(c); }
-}
-
-namespace ConvertedConstantExpr {
-  extern int &m;
-  extern int &n;
-
-  constexpr int k = 4;
-  int &m = const_cast<int&>(k);
-
-  // If we have nothing more interesting to say, ensure we don't produce a
-  // useless note and instead just point to the non-constant subexpression.
-  enum class E {
-    em = m,
-    en = n, // expected-error {{not a constant expression}}
-    eo = (m +
-          n // expected-error {{not a constant expression}}
-          ),
-    eq = reinterpret_cast<int>((int*)0) // expected-error {{not a constant expression}} expected-note {{reinterpret_cast}}
-  };
-}
-
-namespace IndirectField {
-  struct S {
-    struct { // expected-warning {{GNU extension}}
-      union { // expected-warning {{declared in an anonymous struct}}
-        struct { // expected-warning {{GNU extension}} expected-warning {{declared in an anonymous union}}
-          int a;
-          int b;
-        };
-        int c;
-      };
-      int d;
-    };
-    union {
-      int e;
-      int f;
-    };
-    constexpr S(int a, int b, int d, int e) : a(a), b(b), d(d), e(e) {}
-    constexpr S(int c, int d, int f) : c(c), d(d), f(f) {}
-  };
-
-  constexpr S s1(1, 2, 3, 4);
-  constexpr S s2(5, 6, 7);
-
-  // FIXME: The diagnostics here do a very poor job of explaining which unnamed
-  // member is active and which is requested.
-  static_assert(s1.a == 1, "");
-  static_assert(s1.b == 2, "");
-  static_assert(s1.c == 0, ""); // expected-error {{constant expression}} expected-note {{union with active member}}
-  static_assert(s1.d == 3, "");
-  static_assert(s1.e == 4, "");
-  static_assert(s1.f == 0, ""); // expected-error {{constant expression}} expected-note {{union with active member}}
-
-  static_assert(s2.a == 0, ""); // expected-error {{constant expression}} expected-note {{union with active member}}
-  static_assert(s2.b == 0, ""); // expected-error {{constant expression}} expected-note {{union with active member}}
-  static_assert(s2.c == 5, "");
-  static_assert(s2.d == 6, "");
-  static_assert(s2.e == 0, ""); // expected-error {{constant expression}} expected-note {{union with active member}}
-  static_assert(s2.f == 7, "");
-}
-
-// DR1405: don't allow reading mutable members in constant expressions.
-namespace MutableMembers {
-  struct MM {
-    mutable int n; // expected-note 3{{declared here}}
-  } constexpr mm = { 4 };
-  constexpr int mmn = mm.n; // expected-error {{constant expression}} expected-note {{read of mutable member 'n' is not allowed in a constant expression}}
-  int x = (mm.n = 1, 3);
-  constexpr int mmn2 = mm.n; // expected-error {{constant expression}} expected-note {{read of mutable member 'n' is not allowed in a constant expression}}
-
-  // Here's one reason why allowing this would be a disaster...
-  template<int n> struct Id { int k = n; };
-  int f() {
-    constexpr MM m = { 0 };
-    ++m.n;
-    return Id<m.n>().k; // expected-error {{not a constant expression}} expected-note {{read of mutable member 'n' is not allowed in a constant expression}}
-  }
-
-  struct A { int n; };
-  struct B { mutable A a; }; // expected-note {{here}}
-  struct C { B b; };
-  constexpr C c[3] = {};
-  constexpr int k = c[1].b.a.n; // expected-error {{constant expression}} expected-note {{mutable}}
-}
-
-namespace Fold {
-
-  // This macro forces its argument to be constant-folded, even if it's not
-  // otherwise a constant expression.
-  #define fold(x) (__builtin_constant_p(x) ? (x) : (x))
-
-  constexpr int n = (int)(char*)123; // expected-error {{constant expression}} expected-note {{reinterpret_cast}}
-  constexpr int m = fold((int)(char*)123); // ok
-  static_assert(m == 123, "");
-
-  #undef fold
-
-}
-
-namespace DR1454 {
-
-constexpr const int &f(const int &n) { return n; }
-constexpr int k1 = f(0); // ok
-
-struct Wrap {
-  const int &value;
-};
-constexpr const Wrap &g(const Wrap &w) { return w; }
-constexpr int k2 = g({0}).value; // ok
-
-constexpr const int &i = 0; // expected-error {{constant expression}} expected-note {{temporary}} expected-note 2{{here}}
-constexpr const int j = i; // expected-error {{constant expression}} expected-note {{initializer of 'i' is not a constant expression}}
-
-}
-
-namespace RecursiveOpaqueExpr {
-  template<typename Iter>
-  constexpr auto LastNonzero(Iter p, Iter q) -> decltype(+*p) {
-    return p != q ? (LastNonzero(p+1, q) ?: *p) : 0; // expected-warning {{GNU}}
-  }
-
-  constexpr int arr1[] = { 1, 0, 0, 3, 0, 2, 0, 4, 0, 0 };
-  static_assert(LastNonzero(begin(arr1), end(arr1)) == 4, "");
-
-  constexpr int arr2[] = { 1, 0, 0, 3, 0, 2, 0, 4, 0, 5 };
-  static_assert(LastNonzero(begin(arr2), end(arr2)) == 5, "");
-
-  constexpr int arr3[] = {
-    1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
-    1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
-    1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
-    1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
-    1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
-    1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
-    1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
-    2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-  static_assert(LastNonzero(begin(arr3), end(arr3)) == 2, "");
-}
-
-namespace VLASizeof {
-
-  void f(int k) {
-    int arr[k]; // expected-warning {{C99}}
-    constexpr int n = 1 +
-        sizeof(arr) // expected-error {{constant expression}}
-        * 3;
-  }
-}
-
-namespace CompoundLiteral {
-  // FIXME:
-  // We don't model the semantics of this correctly: the compound literal is
-  // represented as a prvalue in the AST, but actually behaves like an lvalue.
-  // We treat the compound literal as a temporary and refuse to produce a
-  // pointer to it. This is OK: we're not required to treat this as a constant
-  // in C++, and in C we model compound literals as lvalues.
-  constexpr int *p = (int*)(int[1]){0}; // expected-warning {{C99}} expected-error {{constant expression}} expected-note 2{{temporary}}
-}
-
-namespace Vector {
-  typedef int __attribute__((vector_size(16))) VI4;
-  constexpr VI4 f(int n) {
-    return VI4 { n * 3, n + 4, n - 5, n / 6 };
-  }
-  constexpr auto v1 = f(10);
-
-  typedef double __attribute__((vector_size(32))) VD4;
-  constexpr VD4 g(int n) {
-    return (VD4) { n / 2.0, n + 1.5, n - 5.4, n * 0.9 }; // expected-warning {{C99}}
-  }
-  constexpr auto v2 = g(4);
-}
-
-// PR12626, redux
-namespace InvalidClasses {
-  void test0() {
-    struct X; // expected-note {{forward declaration}}
-    struct Y { bool b; X x; }; // expected-error {{field has incomplete type}}
-    Y y;
-    auto& b = y.b;
-  }
-}
-
-namespace NamespaceAlias {
-  constexpr int f() {
-    namespace NS = NamespaceAlias; // expected-warning {{use of this statement in a constexpr function is a C++1y extension}}
-    return &NS::f != nullptr;
-  }
-}
-
-// Constructors can be implicitly constexpr, even for a non-literal type.
-namespace ImplicitConstexpr {
-  struct Q { Q() = default; Q(const Q&) = default; Q(Q&&) = default; ~Q(); }; // expected-note 3{{here}}
-  struct R { constexpr R() noexcept; constexpr R(const R&) noexcept; constexpr R(R&&) noexcept; ~R() noexcept; };
-  struct S { R r; }; // expected-note 3{{here}}
-  struct T { T(const T&) noexcept; T(T &&) noexcept; ~T() noexcept; };
-  struct U { T t; }; // expected-note 3{{here}}
-  static_assert(!__is_literal_type(Q), "");
-  static_assert(!__is_literal_type(R), "");
-  static_assert(!__is_literal_type(S), "");
-  static_assert(!__is_literal_type(T), "");
-  static_assert(!__is_literal_type(U), "");
-  struct Test {
-    friend Q::Q() noexcept; // expected-error {{follows constexpr}}
-    friend Q::Q(Q&&) noexcept; // expected-error {{follows constexpr}}
-    friend Q::Q(const Q&) noexcept; // expected-error {{follows constexpr}}
-    friend S::S() noexcept; // expected-error {{follows constexpr}}
-    friend S::S(S&&) noexcept; // expected-error {{follows constexpr}}
-    friend S::S(const S&) noexcept; // expected-error {{follows constexpr}}
-    friend constexpr U::U() noexcept; // expected-error {{follows non-constexpr}}
-    friend constexpr U::U(U&&) noexcept; // expected-error {{follows non-constexpr}}
-    friend constexpr U::U(const U&) noexcept; // expected-error {{follows non-constexpr}}
-  };
-}
-
-// Indirectly test that an implicit lvalue to xvalue conversion performed for
-// an NRVO move operation isn't implemented as CK_LValueToRValue.
-namespace PR12826 {
-  struct Foo {};
-  constexpr Foo id(Foo x) { return x; }
-  constexpr Foo res(id(Foo()));
-}
-
-namespace PR13273 {
-  struct U {
-    int t;
-    U() = default;
-  };
-
-  struct S : U {
-    S() = default;
-  };
-
-  // S's default constructor isn't constexpr, because U's default constructor
-  // doesn't initialize 't', but it's trivial, so value-initialization doesn't
-  // actually call it.
-  static_assert(S{}.t == 0, "");
-}
-
-namespace PR12670 {
-  struct S {
-    constexpr S(int a0) : m(a0) {}
-    constexpr S() : m(6) {}
-    int m;
-  };
-  constexpr S x[3] = { {4}, 5 };
-  static_assert(x[0].m == 4, "");
-  static_assert(x[1].m == 5, "");
-  static_assert(x[2].m == 6, "");
-}
-
-// Indirectly test that an implicit lvalue-to-rvalue conversion is performed
-// when a conditional operator has one argument of type void and where the other
-// is a glvalue of class type.
-namespace ConditionalLValToRVal {
-  struct A {
-    constexpr A(int a) : v(a) {}
-    int v;
-  };
-
-  constexpr A f(const A &a) {
-    return a.v == 0 ? throw a : a;
-  }
-
-  constexpr A a(4);
-  static_assert(f(a).v == 4, "");
-}
-
-namespace TLS {
-  __thread int n;
-  int m;
-
-  constexpr bool b = &n == &n;
-
-  constexpr int *p = &n; // expected-error{{constexpr variable 'p' must be initialized by a constant expression}}
-
-  constexpr int *f() { return &n; }
-  constexpr int *q = f(); // expected-error{{constexpr variable 'q' must be initialized by a constant expression}}
-  constexpr bool c = f() == f();
-
-  constexpr int *g() { return &m; }
-  constexpr int *r = g();
-}
-
-namespace Void {
-  constexpr void f() { return; } // expected-error{{constexpr function's return type 'void' is not a literal type}}
-
-  void assert_failed(const char *msg, const char *file, int line); // expected-note {{declared here}}
-#define ASSERT(expr) ((expr) ? static_cast<void>(0) : assert_failed(#expr, __FILE__, __LINE__))
-  template<typename T, size_t S>
-  constexpr T get(T (&a)[S], size_t k) {
-    return ASSERT(k > 0 && k < S), a[k]; // expected-note{{non-constexpr function 'assert_failed'}}
-  }
-#undef ASSERT
-  template int get(int (&a)[4], size_t);
-  constexpr int arr[] = { 4, 1, 2, 3, 4 };
-  static_assert(get(arr, 1) == 1, "");
-  static_assert(get(arr, 4) == 4, "");
-  static_assert(get(arr, 0) == 4, ""); // expected-error{{not an integral constant expression}} \
-  // expected-note{{in call to 'get(arr, 0)'}}
-}
-
-namespace std { struct type_info; }
-
-namespace TypeId {
-  struct A { virtual ~A(); };
-  A f();
-  A &g();
-  constexpr auto &x = typeid(f());
-  constexpr auto &y = typeid(g()); // expected-error{{constant expression}} \
-  // expected-note{{typeid applied to expression of polymorphic type 'TypeId::A' is not allowed in a constant expression}}
-}
-
-namespace PR14203 {
-  struct duration {
-    constexpr duration() {}
-    constexpr operator int() const { return 0; }
-  };
-  template<typename T> void f() {
-    // If we want to evaluate this at the point of the template definition, we
-    // need to trigger the implicit definition of the move constructor at that
-    // point.
-    // FIXME: C++ does not permit us to implicitly define it at the appropriate
-    // times, since it is only allowed to be implicitly defined when it is
-    // odr-used.
-    constexpr duration d = duration();
-  }
-  // FIXME: It's unclear whether this is valid. On the one hand, we're not
-  // allowed to generate a move constructor. On the other hand, if we did,
-  // this would be a constant expression. For now, we generate a move
-  // constructor here.
-  int n = sizeof(short{duration(duration())});
-}
-
-namespace ArrayEltInit {
-  struct A {
-    constexpr A() : p(&p) {}
-    void *p;
-  };
-  constexpr A a[10];
-  static_assert(a[0].p == &a[0].p, "");
-  static_assert(a[9].p == &a[9].p, "");
-  static_assert(a[0].p != &a[9].p, "");
-  static_assert(a[9].p != &a[0].p, "");
-
-  constexpr A b[10] = {};
-  static_assert(b[0].p == &b[0].p, "");
-  static_assert(b[9].p == &b[9].p, "");
-  static_assert(b[0].p != &b[9].p, "");
-  static_assert(b[9].p != &b[0].p, "");
-}
-
-namespace PR15884 {
-  struct S {};
-  constexpr S f() { return {}; }
-  constexpr S *p = &f();
-  // expected-error at -1 {{taking the address of a temporary}}
-  // expected-error at -2 {{constexpr variable 'p' must be initialized by a constant expression}}
-  // expected-note at -3 {{pointer to temporary is not a constant expression}}
-  // expected-note at -4 {{temporary created here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression-cxx1y.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression-cxx1y.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression-cxx1y.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,459 +0,0 @@
-// RUN: %clang_cc1 -std=c++1y -verify %s -fcxx-exceptions -triple=x86_64-linux-gnu
-
-struct S {
-  // dummy ctor to make this a literal type
-  constexpr S(int);
-
-  S();
-
-  int arr[10];
-
-  constexpr int &get(int n) { return arr[n]; }
-  constexpr const int &get(int n) const { return arr[n]; }
-};
-
-S s = S();
-const S &sr = s;
-static_assert(&s.get(4) - &sr.get(2) == 2, "");
-
-// Compound-statements can be used in constexpr functions.
-constexpr int e() {{{{}} return 5; }}
-static_assert(e() == 5, "");
-
-// Types can be defined in constexpr functions.
-constexpr int f() {
-  enum E { e1, e2, e3 };
-
-  struct S {
-    constexpr S(E e) : e(e) {}
-    constexpr int get() { return e; }
-    E e;
-  };
-
-  return S(e2).get();
-}
-static_assert(f() == 1, "");
-
-// Variables can be declared in constexpr functions.
-constexpr int g(int k) {
-  const int n = 9;
-  int k2 = k * k;
-  int k3 = k2 * k;
-  return 3 * k3 + 5 * k2 + n * k - 20;
-}
-static_assert(g(2) == 42, "");
-constexpr int h(int n) {
-  static const int m = n; // expected-error {{static variable not permitted in a constexpr function}}
-  return m;
-}
-constexpr int i(int n) {
-  thread_local const int m = n; // expected-error {{thread_local variable not permitted in a constexpr function}}
-  return m;
-}
-
-// if-statements can be used in constexpr functions.
-constexpr int j(int k) {
-  if (k == 5)
-    return 1;
-  if (k == 1)
-    return 5;
-  else {
-    if (int n = 2 * k - 4) {
-      return n + 1;
-      return 2;
-    }
-  }
-} // expected-note 2{{control reached end of constexpr function}}
-static_assert(j(0) == -3, "");
-static_assert(j(1) == 5, "");
-static_assert(j(2), ""); // expected-error {{constant expression}} expected-note {{in call to 'j(2)'}}
-static_assert(j(3) == 3, "");
-static_assert(j(4) == 5, "");
-static_assert(j(5) == 1, "");
-
-// There can be 0 return-statements.
-constexpr void k() {
-}
-
-// If the return type is not 'void', no return statements => never a constant
-// expression, so still diagnose that case.
-[[noreturn]] constexpr int fn() { // expected-error {{no return statement in constexpr function}}
-  fn();
-}
-
-// We evaluate the body of a constexpr constructor, to check for side-effects.
-struct U {
-  constexpr U(int n) {
-    if (j(n)) {} // expected-note {{in call to 'j(2)'}}
-  }
-};
-constexpr U u1{1};
-constexpr U u2{2}; // expected-error {{constant expression}} expected-note {{in call to 'U(2)'}}
-
-// We allow expression-statements.
-constexpr int l(bool b) {
-  if (b)
-    throw "invalid value for b!"; // expected-note {{subexpression not valid}}
-  return 5;
-}
-static_assert(l(false) == 5, "");
-static_assert(l(true), ""); // expected-error {{constant expression}} expected-note {{in call to 'l(true)'}}
-
-// Potential constant expression checking is still applied where possible.
-constexpr int htonl(int x) { // expected-error {{never produces a constant expression}}
-  typedef unsigned char uchar;
-  uchar arr[4] = { uchar(x >> 24), uchar(x >> 16), uchar(x >> 8), uchar(x) };
-  return *reinterpret_cast<int*>(arr); // expected-note {{reinterpret_cast is not allowed in a constant expression}}
-}
-
-constexpr int maybe_htonl(bool isBigEndian, int x) {
-  if (isBigEndian)
-    return x;
-
-  typedef unsigned char uchar;
-  uchar arr[4] = { uchar(x >> 24), uchar(x >> 16), uchar(x >> 8), uchar(x) };
-  return *reinterpret_cast<int*>(arr); // expected-note {{reinterpret_cast is not allowed in a constant expression}}
-}
-
-constexpr int swapped = maybe_htonl(false, 123); // expected-error {{constant expression}} expected-note {{in call}}
-
-namespace NS {
-  constexpr int n = 0;
-}
-constexpr int namespace_alias() {
-  namespace N = NS;
-  return N::n;
-}
-
-namespace assign {
-  constexpr int a = 0;
-  const int b = 0;
-  int c = 0; // expected-note 2{{here}}
-
-  constexpr void set(const int &a, int b) {
-    const_cast<int&>(a) = b; // expected-note 2{{constant expression cannot modify an object that is visible outside that expression}}
-  }
-  constexpr int wrap(int a, int b) {
-    set(a, b);
-    return a;
-  }
-
-  static_assert((set(a, 1), a) == 1, ""); // expected-error {{constant expression}} expected-note {{in call to 'set(a, 1)'}}
-  static_assert((set(b, 1), b) == 1, ""); // expected-error {{constant expression}} expected-note {{in call to 'set(b, 1)'}}
-  static_assert((set(c, 1), c) == 1, ""); // expected-error {{constant expression}} expected-note {{read of non-const variable 'c'}}
-
-  static_assert(wrap(a, 1) == 1, "");
-  static_assert(wrap(b, 1) == 1, "");
-  static_assert(wrap(c, 1) == 1, ""); // expected-error {{constant expression}} expected-note {{read of non-const variable 'c'}}
-}
-
-namespace string_assign {
-  template<typename T>
-  constexpr void swap(T &a, T &b) {
-    T tmp = a;
-    a = b;
-    b = tmp;
-  }
-  template<typename Iterator>
-  constexpr void reverse(Iterator begin, Iterator end) {
-    while (begin != end && begin != --end)
-      swap(*begin++, *end);
-  }
-  template<typename Iterator1, typename Iterator2>
-  constexpr bool equal(Iterator1 a, Iterator1 ae, Iterator2 b, Iterator2 be) {
-    while (a != ae && b != be)
-      if (*a++ != *b++)
-        return false;
-    return a == ae && b == be;
-  }
-  constexpr bool test1(int n) {
-    char stuff[100] = "foobarfoo";
-    const char stuff2[100] = "oofraboof";
-    reverse(stuff, stuff + n); // expected-note {{cannot refer to element 101 of array of 100 elements}}
-    return equal(stuff, stuff + n, stuff2, stuff2 + n);
-  }
-  static_assert(!test1(1), "");
-  static_assert(test1(3), "");
-  static_assert(!test1(6), "");
-  static_assert(test1(9), "");
-  static_assert(!test1(100), "");
-  static_assert(!test1(101), ""); // expected-error {{constant expression}} expected-note {{in call to 'test1(101)'}}
-
-  // FIXME: We should be able to reject this before it's called
-  constexpr void f() {
-    char foo[10] = { "z" }; // expected-note {{here}}
-    foo[10] = 'x'; // expected-warning {{past the end}} expected-note {{assignment to dereferenced one-past-the-end pointer}}
-  }
-  constexpr int k = (f(), 0); // expected-error {{constant expression}} expected-note {{in call}}
-}
-
-namespace array_resize {
-  constexpr int do_stuff(int k1, int k2) {
-    int arr[1234] = { 1, 2, 3, 4 };
-    arr[k1] = 5; // expected-note {{past-the-end}} expected-note {{cannot refer to element 1235}} expected-note {{cannot refer to element -1}}
-    return arr[k2];
-  }
-  static_assert(do_stuff(1, 2) == 3, "");
-  static_assert(do_stuff(0, 0) == 5, "");
-  static_assert(do_stuff(1233, 1233) == 5, "");
-  static_assert(do_stuff(1233, 0) == 1, "");
-  static_assert(do_stuff(1234, 0) == 1, ""); // expected-error {{constant expression}} expected-note {{in call}}
-  static_assert(do_stuff(1235, 0) == 1, ""); // expected-error {{constant expression}} expected-note {{in call}}
-  static_assert(do_stuff(-1, 0) == 1, ""); // expected-error {{constant expression}} expected-note {{in call}}
-}
-
-namespace potential_const_expr {
-  constexpr void set(int &n) { n = 1; }
-  constexpr int div_zero_1() { int z = 0; set(z); return 100 / z; } // no error
-  constexpr int div_zero_2() { // expected-error {{never produces a constant expression}}
-    int z = 0;
-    return 100 / (set(z), 0); // expected-note {{division by zero}}
-  }
-  int n; // expected-note {{declared here}}
-  constexpr int ref() { // expected-error {{never produces a constant expression}}
-    int &r = n;
-    return r; // expected-note {{read of non-const variable 'n'}}
-  }
-}
-
-namespace subobject {
-  union A { constexpr A() : y(5) {} int x, y; };
-  struct B { A a; };
-  struct C : B {};
-  union D { constexpr D() : c() {} constexpr D(int n) : n(n) {} C c; int n; };
-  constexpr void f(D &d) {
-    d.c.a.y = 3;
-    // expected-note at -1 {{cannot modify an object that is visible outside}}
-    // expected-note at -2 {{assignment to member 'c' of union with active member 'n'}}
-  }
-  constexpr bool check(D &d) { return d.c.a.y == 3; }
-
-  constexpr bool g() { D d; f(d); return d.c.a.y == 3; }
-  static_assert(g(), "");
-
-  D d;
-  constexpr bool h() { f(d); return check(d); } // expected-note {{in call}}
-  static_assert(h(), ""); // expected-error {{constant expression}} expected-note {{in call}}
-
-  constexpr bool i() { D d(0); f(d); return check(d); } // expected-note {{in call}}
-  static_assert(i(), ""); // expected-error {{constant expression}} expected-note {{in call}}
-
-  constexpr bool j() { D d; d.c.a.x = 3; return check(d); } // expected-note {{assignment to member 'x' of union with active member 'y'}}
-  static_assert(j(), ""); // expected-error {{constant expression}} expected-note {{in call}}
-}
-
-namespace lifetime {
-  constexpr int &&id(int &&n) { return static_cast<int&&>(n); }
-  constexpr int &&dead() { return id(0); } // expected-note {{temporary created here}}
-  constexpr int bad() { int &&n = dead(); n = 1; return n; } // expected-note {{assignment to temporary whose lifetime has ended}}
-  static_assert(bad(), ""); // expected-error {{constant expression}} expected-note {{in call}}
-}
-
-namespace const_modify {
-  constexpr int modify(int &n) { return n = 1; } // expected-note {{modification of object of const-qualified type 'const int'}}
-  constexpr int test1() { int k = 0; return modify(k); }
-  constexpr int test2() { const int k = 0; return modify(const_cast<int&>(k)); } // expected-note {{in call}}
-  static_assert(test1() == 1, "");
-  static_assert(test2() == 1, ""); // expected-error {{constant expression}} expected-note {{in call}}
-}
-
-namespace null {
-  constexpr int test(int *p) {
-    return *p = 123; // expected-note {{assignment to dereferenced null pointer}}
-  }
-  static_assert(test(0), ""); // expected-error {{constant expression}} expected-note {{in call}}
-}
-
-namespace incdec {
-  template<typename T> constexpr T &ref(T &&r) { return r; }
-  template<typename T> constexpr T postinc(T &&r) { return (r++, r); }
-  template<typename T> constexpr T postdec(T &&r) { return (r--, r); }
-
-  static_assert(++ref(0) == 1, "");
-  static_assert(ref(0)++ == 0, "");
-  static_assert(postinc(0) == 1, "");
-  static_assert(--ref(0) == -1, "");
-  static_assert(ref(0)-- == 0, "");
-  static_assert(postdec(0) == -1, "");
-
-  constexpr int overflow_int_inc_1 = ref(0x7fffffff)++; // expected-error {{constant}} expected-note {{2147483648}}
-  constexpr int overflow_int_inc_1_ok = ref(0x7ffffffe)++;
-  constexpr int overflow_int_inc_2 = ++ref(0x7fffffff); // expected-error {{constant}} expected-note {{2147483648}}
-  constexpr int overflow_int_inc_2_ok = ++ref(0x7ffffffe);
-
-  // inc/dec on short can't overflow because we promote to int first
-  static_assert(++ref<short>(0x7fff) == (int)0xffff8000u, "");
-  static_assert(--ref<short>(0x8000) == 0x7fff, "");
-
-  // inc on bool sets to true
-  static_assert(++ref(false), ""); // expected-warning {{deprecated}}
-  static_assert(++ref(true), ""); // expected-warning {{deprecated}}
-
-  int arr[10];
-  static_assert(++ref(&arr[0]) == &arr[1], "");
-  static_assert(++ref(&arr[9]) == &arr[10], "");
-  static_assert(++ref(&arr[10]) == &arr[11], ""); // expected-error {{constant}} expected-note {{cannot refer to element 11}}
-  static_assert(ref(&arr[0])++ == &arr[0], "");
-  static_assert(ref(&arr[10])++ == &arr[10], ""); // expected-error {{constant}} expected-note {{cannot refer to element 11}}
-  static_assert(postinc(&arr[0]) == &arr[1], "");
-  static_assert(--ref(&arr[10]) == &arr[9], "");
-  static_assert(--ref(&arr[1]) == &arr[0], "");
-  static_assert(--ref(&arr[0]) != &arr[0], ""); // expected-error {{constant}} expected-note {{cannot refer to element -1}}
-  static_assert(ref(&arr[1])-- == &arr[1], "");
-  static_assert(ref(&arr[0])-- == &arr[0], ""); // expected-error {{constant}} expected-note {{cannot refer to element -1}}
-  static_assert(postdec(&arr[1]) == &arr[0], "");
-
-  int x;
-  static_assert(++ref(&x) == &x + 1, "");
-
-  static_assert(++ref(0.0) == 1.0, "");
-  static_assert(ref(0.0)++ == 0.0, "");
-  static_assert(postinc(0.0) == 1.0, "");
-  static_assert(--ref(0.0) == -1.0, "");
-  static_assert(ref(0.0)-- == 0.0, "");
-  static_assert(postdec(0.0) == -1.0, "");
-
-  static_assert(++ref(1e100) == 1e100, "");
-  static_assert(--ref(1e100) == 1e100, "");
-
-  union U {
-    int a, b;
-  };
-  constexpr int f(U u) {
-    return ++u.b; // expected-note {{increment of member 'b' of union with active member 'a'}}
-  }
-  constexpr int wrong_member = f({0}); // expected-error {{constant}} expected-note {{in call to 'f({.a = 0})'}}
-  constexpr int vol = --ref<volatile int>(0); // expected-error {{constant}} expected-note {{decrement of volatile-qualified}}
-
-  constexpr int incr(int k) {
-    int x = k;
-    if (x++ == 100)
-      return x;
-    return incr(x);
-  }
-  static_assert(incr(0) == 101, "");
-}
-
-namespace loops {
-  constexpr int fib_loop(int a) {
-    int f_k = 0, f_k_plus_one = 1;
-    for (int k = 1; k != a; ++k) {
-      int f_k_plus_two = f_k + f_k_plus_one;
-      f_k = f_k_plus_one;
-      f_k_plus_one = f_k_plus_two;
-    }
-    return f_k_plus_one;
-  }
-  static_assert(fib_loop(46) == 1836311903, "");
-
-  constexpr bool breaks_work() {
-    int a = 0;
-    for (int n = 0; n != 100; ++n) {
-      ++a;
-      if (a == 5) continue;
-      if ((a % 5) == 0) break;
-    }
-
-    int b = 0;
-    while (b != 17) {
-      ++b;
-      if (b == 6) continue;
-      if ((b % 6) == 0) break;
-    }
-
-    int c = 0;
-    do {
-      ++c;
-      if (c == 7) continue;
-      if ((c % 7) == 0) break;
-    } while (c != 21);
-
-    return a == 10 && b == 12 & c == 14;
-  }
-  static_assert(breaks_work(), "");
-
-  void not_constexpr();
-  constexpr bool no_cont_after_break() {
-    for (;;) {
-      break;
-      not_constexpr();
-    }
-    while (true) {
-      break;
-      not_constexpr();
-    }
-    do {
-      break;
-      not_constexpr();
-    } while (true);
-    return true;
-  }
-  static_assert(no_cont_after_break(), "");
-
-  constexpr bool cond() {
-    for (int a = 1; bool b = a != 3; ++a) {
-      if (!b)
-        return false;
-    }
-    while (bool b = true) {
-      b = false;
-      break;
-    }
-    return true;
-  }
-  static_assert(cond(), "");
-
-  constexpr int range_for() {
-    int arr[] = { 1, 2, 3, 4, 5 };
-    int sum = 0;
-    for (int x : arr)
-      sum = sum + x;
-    return sum;
-  }
-  static_assert(range_for() == 15, "");
-
-  template<int...N> struct ints {};
-  template<typename A, typename B> struct join_ints;
-  template<int...As, int...Bs> struct join_ints<ints<As...>, ints<Bs...>> {
-    using type = ints<As..., sizeof...(As) + Bs...>;
-  };
-  template<unsigned N> struct make_ints {
-    using type = typename join_ints<typename make_ints<N/2>::type, typename make_ints<(N+1)/2>::type>::type;
-  };
-  template<> struct make_ints<0> { using type = ints<>; };
-  template<> struct make_ints<1> { using type = ints<0>; };
-
-  struct ignore { template<typename ...Ts> constexpr ignore(Ts &&...) {} };
-
-  template<typename T, unsigned N> struct array {
-    constexpr array() : arr{} {}
-    template<typename ...X>
-    constexpr array(X ...x) : arr{} {
-      init(typename make_ints<sizeof...(X)>::type{}, x...);
-    }
-    template<int ...I, typename ...X> constexpr void init(ints<I...>, X ...x) {
-      ignore{arr[I] = x ...};
-    }
-    T arr[N];
-    struct iterator {
-      T *p;
-      constexpr explicit iterator(T *p) : p(p) {}
-      constexpr bool operator!=(iterator o) { return p != o.p; }
-      constexpr iterator &operator++() { ++p; return *this; }
-      constexpr T &operator*() { return *p; }
-    };
-    constexpr iterator begin() { return iterator(arr); }
-    constexpr iterator end() { return iterator(arr + N); }
-  };
-
-  constexpr int range_for_2() {
-    array<int, 5> arr { 1, 2, 3, 4, 5 };
-    int sum = 0;
-    for (int k : arr) {
-      sum = sum + k;
-      if (sum > 8) break;
-    }
-    return sum;
-  }
-  static_assert(range_for_2() == 10, "");
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constant-expression.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,126 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 -pedantic %s
-// C++ [expr.const]p1:
-//   In several places, C++ requires expressions that evaluate to an integral
-//   or enumeration constant: as array bounds, as case expressions, as
-//   bit-field lengths, as enumerator initializers, as static member
-//   initializers, and as integral or enumeration non-type template arguments.
-//   An integral constant-expression can involve only literals, enumerators,
-//   const variables or static data members of integral or enumeration types
-//   initialized with constant expressions, and sizeof expressions. Floating
-//   literals can appear only if they are cast to integral or enumeration types.
-
-enum Enum { eval = 1 };
-const int cval = 2;
-const Enum ceval = eval;
-struct Struct {
-  static const int sval = 3;
-  static const Enum seval = eval;
-};
-
-template <int itval, Enum etval> struct C {
-  enum E {
-    v1 = 1,
-    v2 = eval,
-    v3 = cval,
-    v4 = ceval,
-    v5 = Struct::sval,
-    v6 = Struct::seval,
-    v7 = itval,
-    v8 = etval,
-    v9 = (int)1.5,
-    v10 = sizeof(Struct),
-    v11 = true? 1 + cval * Struct::sval ^ itval / (int)1.5 - sizeof(Struct) : 0
-  };
-  unsigned
-    b1 : 1,
-    b2 : eval,
-    b3 : cval,
-    b4 : ceval,
-    b5 : Struct::sval,
-    b6 : Struct::seval,
-    b7 : itval,
-    b8 : etval,
-    b9 : (int)1.5,
-    b10 : sizeof(Struct),
-    b11 : true? 1 + cval * Struct::sval ^ itval / (int)1.5 - sizeof(Struct) : 0
-    ;
-  static const int
-    i1 = 1,
-    i2 = eval,
-    i3 = cval,
-    i4 = ceval,
-    i5 = Struct::sval,
-    i6 = Struct::seval,
-    i7 = itval,
-    i8 = etval,
-    i9 = (int)1.5,
-    i10 = sizeof(Struct),
-    i11 = true? 1 + cval * Struct::sval ^ itval / (int)1.5 - sizeof(Struct) : 0
-    ;
-  void f(int cond) {
-    switch(cond) {
-    case    0 + 1:
-    case  100 + eval:
-    case  200 + cval:
-    case  300 + ceval:
-    case  400 + Struct::sval:
-    case  500 + Struct::seval:
-    case  600 + itval:
-    case  700 + etval:
-    case  800 + (int)1.5:
-    case  900 + sizeof(Struct):
-    case 1000 + (true? 1 + cval * Struct::sval ^
-                 itval / (int)1.5 - sizeof(Struct) : 0):
-      ;
-    }
-  }
-  typedef C<itval, etval> T0;
-};
-
-template struct C<1, eval>;
-template struct C<cval, ceval>;
-template struct C<Struct::sval, Struct::seval>;
-
-enum {
-  a = sizeof(int) == 8,
-  b = a? 8 : 4
-};
-
-void diags(int n) {
-  switch (n) {
-    case (1/0, 1): // expected-error {{not an integral constant expression}} expected-note {{division by zero}}
-    case (int)(1/0, 2.0): // expected-error {{not an integral constant expression}} expected-note {{division by zero}}
-    case __imag(1/0): // expected-error {{not an integral constant expression}} expected-note {{division by zero}}
-    case (int)__imag((double)(1/0)): // expected-error {{not an integral constant expression}} expected-note {{division by zero}}
-      ;
-  }
-}
-
-namespace IntOrEnum {
-  const int k = 0;
-  const int &p = k;
-  template<int n> struct S {};
-  S<p> s; // expected-error {{not an integral constant expression}}
-}
-
-extern const int recurse1;
-// recurse2 cannot be used in a constant expression because it is not
-// initialized by a constant expression. The same expression appearing later in
-// the TU would be a constant expression, but here it is not.
-const int recurse2 = recurse1;
-const int recurse1 = 1;
-int array1[recurse1]; // ok
-int array2[recurse2]; // expected-warning {{variable length array}} expected-warning {{integer constant expression}}
-
-namespace FloatConvert {
-  typedef int a[(int)42.3];
-  typedef int a[(int)42.997];
-  typedef int b[(long long)4e20]; // expected-warning {{variable length}} expected-error {{variable length}} expected-warning {{'long long' is a C++11 extension}}
-}
-
-// PR12626
-namespace test3 {
-  struct X; // expected-note {{forward declaration of 'test3::X'}}
-  struct Y { bool b; X x; }; // expected-error {{field has incomplete type 'test3::X'}}
-  int f() { return Y().b; }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-ackermann.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-ackermann.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-ackermann.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s
-
-constexpr unsigned long long A(unsigned long long m, unsigned long long n) {
-  return m == 0 ? n + 1 : n == 0 ? A(m-1, 1) : A(m - 1, A(m, n - 1));
-}
-
-using X = int[A(3,4)];
-using X = int[125];

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-backtrace-limit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-backtrace-limit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-backtrace-limit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s -fconstexpr-backtrace-limit 0 -fconstexpr-depth 4 -fno-caret-diagnostics 2>&1 | FileCheck %s -check-prefix=TEST1
-// TEST1: constant expression
-// TEST1-NEXT: exceeded maximum depth of 4
-// TEST1-NEXT: in call to 'recurse(2)'
-// TEST1-NEXT: in call to 'recurse(3)'
-// TEST1-NEXT: in call to 'recurse(4)'
-// TEST1-NEXT: in call to 'recurse(5)'
-
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s -fconstexpr-backtrace-limit 2 -fconstexpr-depth 4 -fno-caret-diagnostics 2>&1 | FileCheck %s -check-prefix=TEST2
-// TEST2: constant expression
-// TEST2-NEXT: exceeded maximum depth of 4
-// TEST2-NEXT: in call to 'recurse(2)'
-// TEST2-NEXT: skipping 2 calls
-// TEST2-NEXT: in call to 'recurse(5)'
-
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s -fconstexpr-backtrace-limit 2 -fconstexpr-depth 8 -fno-caret-diagnostics 2>&1 | FileCheck %s -check-prefix=TEST3
-// TEST3: constant expression
-// TEST3-NEXT: reinterpret_cast
-// TEST3-NEXT: in call to 'recurse(0)'
-// TEST3-NEXT: skipping 4 calls
-// TEST3-NEXT: in call to 'recurse(5)'
-
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s -fconstexpr-backtrace-limit 8 -fconstexpr-depth 8 -fno-caret-diagnostics 2>&1 | FileCheck %s -check-prefix=TEST4
-// TEST4: constant expression
-// TEST4-NEXT: reinterpret_cast
-// TEST4-NEXT: in call to 'recurse(0)'
-// TEST4-NEXT: in call to 'recurse(1)'
-// TEST4-NEXT: in call to 'recurse(2)'
-// TEST4-NEXT: in call to 'recurse(3)'
-// TEST4-NEXT: in call to 'recurse(4)'
-// TEST4-NEXT: in call to 'recurse(5)'
-
-constexpr int recurse(int n) { return n ? recurse(n-1) : *(int*)n; }
-static_assert(recurse(5), "");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-depth.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-depth.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-depth.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s -DMAX=128 -fconstexpr-depth 128
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s -DMAX=2 -fconstexpr-depth 2
-// RUN: %clang -std=c++11 -fsyntax-only -Xclang -verify %s -DMAX=10 -fconstexpr-depth=10
-
-constexpr int depth(int n) { return n > 1 ? depth(n-1) : 0; } // expected-note {{exceeded maximum depth}} expected-note +{{}}
-
-constexpr int kBad = depth(MAX + 1); // expected-error {{must be initialized by a constant expression}} expected-note {{in call to 'depth(}}
-constexpr int kGood = depth(MAX);

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-factorial.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-factorial.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-factorial.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s
-
-constexpr unsigned oddfac(unsigned n) {
-  return n == 1 ? 1 : n * oddfac(n-2);
-}
-constexpr unsigned k = oddfac(123);
-
-using A = int[k % 256];
-using A = int[43];

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-many-arguments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-many-arguments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-many-arguments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s
-// PR13197
-
-struct type1
-{
-  constexpr type1(int a0) : my_data{a0} {}
-  int my_data[1];
-};
-
-struct type2
-{
-  typedef type1 T;
-  constexpr type2(T a00, T a01, T a02, T a03, T a04, T a05, T a06, T a07, T a08, T a09,
-                       T a10, T a11, T a12, T a13, T a14, T a15, T a16, T a17, T a18, T a19,
-                       T a20, T a21, T a22) 
-    : my_data{a00, a01, a02, a03, a04, a05, a06, a07, a08, a09,
-              a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,
-              a20, a21, a22}
-  {}
-  type1 my_data[23];
-};
-
-struct type3
-{
-  constexpr type3(type2 a0, type2 a1) : my_data{a0, a1} {}
-  type2 my_data[2];
-};
-
-constexpr type3 g
-{
-  {
-   {0},{0},{0},{0},{0},{0},{0},{0},{0},{0},
-   {0},{0},{0},{0},{0},{0},{0},{0},{0},{0},
-   {0},{0},{0}
-  }, 
-  {
-   {0},{0},{0},{0},{0},{0},{0},{0},{0},{0},
-   {0},{0},{0},{0},{0},{0},{0},{0},{0},{0},
-   {0},{0},{0}
-  }
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-nqueens.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-nqueens.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-nqueens.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only %s
-
-typedef unsigned long uint64_t;
-
-struct Board {
-  uint64_t State;
-  bool Failed;
-
-  constexpr Board() : State(0), Failed(false) {}
-  constexpr Board(const Board &O) : State(O.State), Failed(O.Failed) {}
-  constexpr Board(uint64_t State, bool Failed = false) :
-    State(State), Failed(Failed) {}
-  constexpr Board addQueen(int Row, int Col) {
-    return Board(State | ((uint64_t)Row << (Col * 4)));
-  }
-  constexpr int getQueenRow(int Col) {
-    return (State >> (Col * 4)) & 0xf;
-  }
-  constexpr bool ok(int Row, int Col) {
-    return okRecurse(Row, Col, 0);
-  }
-  constexpr bool okRecurse(int Row, int Col, int CheckCol) {
-    return Col == CheckCol ? true :
-           getQueenRow(CheckCol) == Row ? false :
-           getQueenRow(CheckCol) == Row + (Col - CheckCol) ? false :
-           getQueenRow(CheckCol) == Row + (CheckCol - Col) ? false :
-           okRecurse(Row, Col, CheckCol + 1);
-  }
-  constexpr bool at(int Row, int Col) {
-    return getQueenRow(Col) == Row;
-  }
-  constexpr bool check(const char *, int=0, int=0);
-};
-
-constexpr Board buildBoardRecurse(int N, int Col, const Board &B);
-constexpr Board buildBoardScan(int N, int Col, int Row, const Board &B);
-constexpr Board tryBoard(const Board &Try,
-                         int N, int Col, int Row, const Board &B) {
-  return Try.Failed ? buildBoardScan(N, Col, Row, B) : Try;
-}
-constexpr Board buildBoardScan(int N, int Col, int Row, const Board &B) {
-  return Row == N ? Board(0, true) :
-         B.ok(Row, Col) ?
-         tryBoard(buildBoardRecurse(N, Col + 1, B.addQueen(Row, Col)),
-                  N, Col, Row+1, B) :
-         buildBoardScan(N, Col, Row + 1, B);
-}
-constexpr Board buildBoardRecurse(int N, int Col, const Board &B) {
-  return Col == N ? B : buildBoardScan(N, Col, 0, B);
-}
-constexpr Board buildBoard(int N) {
-  return buildBoardRecurse(N, 0, Board());
-}
-
-constexpr Board q8 = buildBoard(8);
-
-constexpr bool Board::check(const char *p, int Row, int Col) {
-  return
-    *p == '\n' ? check(p+1, Row+1, 0) :
-    *p == 'o' ? at(Row, Col) && check(p+1, Row, Col+1) :
-    *p == '-' ? !at(Row, Col) && check(p+1, Row, Col+1) :
-    *p == 0 ? true :
-    false;
-}
-static_assert(q8.check(
-    "o-------\n"
-    "------o-\n"
-    "----o---\n"
-    "-------o\n"
-    "-o------\n"
-    "---o----\n"
-    "-----o--\n"
-    "--o-----\n"), "");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-printing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-printing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-printing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -fsyntax-only -verify -triple x86_64-linux-gnu
-
-struct S;
-constexpr int extract(const S &s);
-
-struct S {
-  constexpr S() : n(extract(*this)), m(0) {} // expected-note {{in call to 'extract(s1)'}}
-  constexpr S(int k) : n(k), m(extract(*this)) {}
-  int n, m;
-};
-
-constexpr int extract(const S &s) { return s.n; } // expected-note {{read of object outside its lifetime is not allowed in a constant expression}}
-
-constexpr S s1; // ok
-void f() {
-  constexpr S s1; // expected-error {{constant expression}} expected-note {{in call to 'S()'}}
-  constexpr S s2(10);
-}
-
-typedef __attribute__((vector_size(16))) int vector_int;
-
-struct T {
-  constexpr T() : arr() {}
-  int arr[4];
-};
-struct U : T {
-  constexpr U(const int *p) : T(), another(), p(p) {}
-  constexpr U(const U &u) : T(), another(), p(u.p) {}
-  T another;
-  const int *p;
-};
-constexpr U u1(&u1.arr[2]);
-
-constexpr int test_printing(int a, float b, _Complex int c, _Complex float d,
-                            int *e, int &f, vector_int g, U h) {
-  return *e; // expected-note {{read of non-constexpr variable 'u2'}}
-}
-U u2(0); // expected-note {{here}}
-static_assert(test_printing(12, 39.762, 3 + 4i, 12.9 + 3.6i, &u2.arr[4], u2.another.arr[2], (vector_int){5, 1, 2, 3}, u1) == 0, ""); // \
-expected-error {{constant expression}} \
-expected-note {{in call to 'test_printing(12, 3.976200e+01, 3+4i, 1.290000e+01+3.600000e+00i, &u2.T::arr[4], u2.another.arr[2], {5, 1, 2, 3}, {{{}}, {{}}, &u1.T::arr[2]})'}}
-
-struct V {
-  // FIXME: when we can generate these as constexpr constructors, remove the
-  // explicit definitions.
-  constexpr V() : arr{[255] = 42} {}
-  constexpr V(const V &v) : arr{[255] = 42} {}
-  int arr[256];
-};
-constexpr V v;
-constexpr int get(const int *p) { return *p; } // expected-note {{read of dereferenced one-past-the-end pointer}}
-constexpr int passLargeArray(V v) { return get(v.arr+256); } // expected-note {{in call to 'get(&v.arr[256])'}}
-static_assert(passLargeArray(v) == 0, ""); // expected-error {{constant expression}} expected-note {{in call to 'passLargeArray({{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...}})'}}
-
-union Union {
-  constexpr Union(int n) : b(n) {}
-  constexpr Union(const Union &u) : b(u.b) {}
-  int a, b;
-};
-constexpr Union myUnion = 76;
-
-constexpr int badness(Union u) { return u.a + u.b; } // expected-note {{read of member 'a' of union with active member 'b'}}
-static_assert(badness(myUnion), ""); // expected-error {{constant expression}} \
-        expected-note {{in call to 'badness({.b = 76})'}}
-
-struct MemPtrTest {
-  int n;
-  void f();
-};
-MemPtrTest mpt; // expected-note {{here}}
-constexpr int MemPtr(int (MemPtrTest::*a), void (MemPtrTest::*b)(), int &c) {
-  return c; // expected-note {{read of non-constexpr variable 'mpt'}}
-}
-static_assert(MemPtr(&MemPtrTest::n, &MemPtrTest::f, mpt.*&MemPtrTest::n), ""); // expected-error {{constant expression}} \
-expected-note {{in call to 'MemPtr(&MemPtrTest::n, &MemPtrTest::f, mpt.n)'}}
-
-template<typename CharT>
-constexpr CharT get(const CharT *p) { return p[-1]; } // expected-note 5{{}}
-
-constexpr char c = get("test\0\\\"\t\a\b\234"); // \
-  expected-error {{}} expected-note {{"test\000\\\"\t\a\b\234"}}
-constexpr char c8 = get(u8"test\0\\\"\t\a\b\234"); // \
-  expected-error {{}} expected-note {{u8"test\000\\\"\t\a\b\234"}}
-constexpr char16_t c16 = get(u"test\0\\\"\t\a\b\234\u1234"); // \
-  expected-error {{}} expected-note {{u"test\000\\\"\t\a\b\234\u1234"}}
-constexpr char32_t c32 = get(U"test\0\\\"\t\a\b\234\u1234\U0010ffff"); // \
-  expected-error {{}} expected-note {{U"test\000\\\"\t\a\b\234\u1234\U0010FFFF"}}
-constexpr wchar_t wc = get(L"test\0\\\"\t\a\b\234\u1234\xffffffff"); // \
-  expected-error {{}} expected-note {{L"test\000\\\"\t\a\b\234\x1234\xFFFFFFFF"}}
-
-constexpr char32_t c32_err = get(U"\U00110000"); // expected-error {{invalid universal character}}
-
-typedef decltype(sizeof(int)) LabelDiffTy;
-constexpr LabelDiffTy mulBy3(LabelDiffTy x) { return x * 3; } // expected-note {{subexpression}}
-void LabelDiffTest() {
-  static_assert(mulBy3((LabelDiffTy)&&a-(LabelDiffTy)&&b) == 3, ""); // expected-error {{constant expression}} expected-note {{call to 'mulBy3(&&a - &&b)'}}
-  a:b:return;
-}
-
-constexpr bool test_bool_printing(bool b) { return 1 / !(2*b | !(2*b)); } // expected-note 2{{division by zero}}
-constexpr bool test_bool_0 = test_bool_printing(false); // expected-error {{constant expr}} expected-note {{in call to 'test_bool_printing(false)'}}
-constexpr bool test_bool_1 = test_bool_printing(true); // expected-error {{constant expr}} expected-note {{in call to 'test_bool_printing(true)'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-strlen.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-strlen.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-strlen.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -fsyntax-only -verify -pedantic
-
-# 1 "/usr/include/string.h" 1 3 4
-extern "C" {
-  typedef decltype(sizeof(int)) size_t;
-  extern size_t strlen(const char *p);
-}
-
-# 10 "SemaCXX/constexpr-strlen.cpp" 2
-constexpr int n = __builtin_strlen("hello"); // ok
-constexpr int m = strlen("hello"); // expected-error {{constant expression}} expected-note {{non-constexpr function 'strlen' cannot be used in a constant expression}}
-
-// Make sure we can evaluate a call to strlen.
-int arr[3]; // expected-note {{here}}
-int k = arr[strlen("hello")]; // expected-warning {{array index 5}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-turing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-turing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-turing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s
-// expected-no-diagnostics
-
-// A direct proof that constexpr is Turing-complete, once DR1454 is implemented.
-
-const unsigned halt = (unsigned)-1;
-
-enum Dir { L, R };
-struct Action {
-  bool tape;
-  Dir dir;
-  unsigned next;
-};
-using State = Action[2];
-
-// An infinite tape!
-struct Tape {
-  constexpr Tape() : l(0), val(false), r(0) {}
-  constexpr Tape(const Tape &old, bool write) :
-    l(old.l), val(write), r(old.r) {}
-  constexpr Tape(const Tape &old, Dir dir) :
-    l(dir == L ? old.l ? old.l->l : 0 : &old),
-    val(dir == L ? old.l ? old.l->val : false
-                 : old.r ? old.r->val : false),
-    r(dir == R ? old.r ? old.r->r : 0 : &old) {}
-  const Tape *l;
-  bool val;
-  const Tape *r;
-};
-constexpr Tape update(const Tape &old, bool write) { return Tape(old, write); }
-constexpr Tape move(const Tape &old, Dir dir) { return Tape(old, dir); }
-
-// Run turing machine 'tm' on tape 'tape' from state 'state'. Return number of
-// steps taken until halt.
-constexpr unsigned run(const State *tm, const Tape &tape, unsigned state) {
-  return state == halt ? 1 :
-         run(tm, move(update(tape, tm[state][tape.val].tape),
-                      tm[state][tape.val].dir),
-             tm[state][tape.val].next) + 1;
-}
-
-// 3-state busy beaver. 14 steps.
-constexpr State bb3[] = {
-  { { true, R, 1 }, { true, L, 2 } },
-  { { true, L, 0 }, { true, R, 1 } },
-  { { true, L, 1 }, { true, R, halt } }
-};
-static_assert(run(bb3, Tape(), 0) == 14, "");
-
-// 4-state busy beaver. 108 steps.
-constexpr State bb4[] = {
-  { { true, R, 1 }, { true, L, 1 } },
-  { { true, L, 0 }, { false, L, 2 } },
-  { { true, R, halt }, { true, L, 3 } },
-  { { true, R, 3 }, { false, R, 0 } } };
-static_assert(run(bb4, Tape(), 0) == 108, "");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-value-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-value-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constexpr-value-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -fsyntax-only -verify
-
-struct A {
-  constexpr A() : a(b + 1), b(a + 1) {} // expected-note {{outside its lifetime}}
-  int a;
-  int b;
-};
-struct B {
-  A a;
-};
-
-constexpr A a; // ok, zero initialization preceeds static initialization
-void f() {
-  constexpr A a; // expected-error {{constant expression}} expected-note {{in call to 'A()'}}
-}
-
-constexpr B b1; // expected-error {{requires a user-provided default constructor}}
-constexpr B b2 = B(); // ok
-static_assert(b2.a.a == 1, "");
-static_assert(b2.a.b == 2, "");
-
-struct C {
-  int c;
-};
-struct D : C { int d; };
-constexpr C c1; // expected-error {{requires a user-provided default constructor}}
-constexpr C c2 = C(); // ok
-constexpr D d1; // expected-error {{requires a user-provided default constructor}}
-constexpr D d2 = D(); // ok with DR1452
-static_assert(D().c == 0, "");
-static_assert(D().d == 0, "");
-
-struct V : virtual C {};
-template<typename T> struct Z : T {
-  constexpr Z() : V() {}
-};
-constexpr int n = Z<V>().c; // expected-error {{constant expression}} expected-note {{virtual base class}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor-initializer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor-initializer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor-initializer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,293 +0,0 @@
-// RUN: %clang_cc1 -Wreorder -fsyntax-only -verify %s
-class A { 
-  int m;
-public:
-   A() : A::m(17) { } // expected-error {{member initializer 'm' does not name a non-static data member or base class}}
-   A(int);
-};
-
-class B : public A { 
-public:
-  B() : A(), m(1), n(3.14) { }
-
-private:
-  int m;
-  float n;  
-};
-
-
-class C : public virtual B { 
-public:
-  C() : B() { }
-};
-
-class D : public C { 
-public:
-  D() : B(), C() { }
-};
-
-class E : public D, public B { 
-public:
-  E() : B(), D() { } // expected-error{{base class initializer 'B' names both a direct base class and an inherited virtual base class}}
-};
-
-
-typedef int INT;
-
-class F : public B { 
-public:
-  int B;
-
-  F() : B(17),
-        m(17), // expected-error{{member initializer 'm' does not name a non-static data member or base class}}
-        INT(17) // expected-error{{constructor initializer 'INT' (aka 'int') does not name a class}}
-  { 
-  }
-};
-
-class G : A {
-  G() : A(10); // expected-error{{expected '{'}}
-};
-
-void f() : a(242) { } // expected-error{{only constructors take base initializers}}
-
-class H : A {
-  H();
-};
-
-H::H() : A(10) { }
-
-
-class  X {};
-class Y {};
-
-struct S : Y, virtual X {
-  S (); 
-};
-
-struct Z : S { 
-  Z() : X(), S(), E()  {} // expected-error {{type 'E' is not a direct or virtual base of 'Z'}}
-};
-
-class U { 
-  union { int a; char* p; };
-  union { int b; double d; };
-
-  U() :  a(1), // expected-note {{previous initialization is here}}
-         p(0), // expected-error {{initializing multiple members of union}}
-         d(1.0)  {}
-};
-
-struct V {};
-struct Base {};
-struct Base1 {};
-
-struct Derived : Base, Base1, virtual V {
-  Derived ();
-};
-
-struct Current : Derived {
-  int Derived;
-  Current() : Derived(1), ::Derived(), // expected-warning {{field 'Derived' will be initialized after base '::Derived'}} \
-                                       // expected-warning {{base class '::Derived' will be initialized after base 'Derived::V'}}
-                          ::Derived::Base(), // expected-error {{type '::Derived::Base' is not a direct or virtual base of 'Current'}}
-                           Derived::Base1(), // expected-error {{type 'Derived::Base1' is not a direct or virtual base of 'Current'}}
-                           Derived::V(),
-                           ::NonExisting(), // expected-error {{member initializer 'NonExisting' does not name a non-static data member or}}
-                           INT::NonExisting()  {} // expected-error {{expected a class or namespace}} \
-                                                  // expected-error {{member initializer 'NonExisting' does not name a non-static data member or}}
-};
-
-struct M {              // expected-note 2 {{candidate constructor (the implicit copy constructor)}} \
-                        // expected-note {{declared here}} \
-                        // expected-note {{declared here}}
-  M(int i, int j);      // expected-note 2 {{candidate constructor}}
-};
-
-struct N : M  {
-  N() : M(1),        // expected-error {{no matching constructor for initialization of 'M'}}
-        m1(100) {  } // expected-error {{no matching constructor for initialization of 'M'}}
-  M m1;
-};
-
-struct P : M  {
-  P()  {  } // expected-error {{constructor for 'P' must explicitly initialize the base class 'M' which does not have a default constructor}} \
-            // expected-error {{member 'm'}}
-  M m; // expected-note {{member is declared here}}
-};
-
-struct Q {
-  Q() : f1(1,2),       // expected-error {{excess elements in scalar initializer}}
-        pf(0.0)  { }   // expected-error {{cannot initialize a member subobject of type 'float *' with an rvalue of type 'double'}}
-  float f1;
-
-  float *pf;
-};
-
-// A silly class used to demonstrate field-is-uninitialized in constructors with
-// multiple params.
-int IntParam(int i) { return 0; };
-class TwoInOne { public: TwoInOne(TwoInOne a, TwoInOne b) {} };
-class InitializeUsingSelfTest {
-  bool A;
-  char* B;
-  int C;
-  TwoInOne D;
-  int E;
-  InitializeUsingSelfTest(int F)
-      : A(A),  // expected-warning {{field 'A' is uninitialized when used here}}
-        B((((B)))),  // expected-warning {{field 'B' is uninitialized when used here}}
-        C(A && InitializeUsingSelfTest::C),  // expected-warning {{field 'C' is uninitialized when used here}}
-        D(D,  // expected-warning {{field 'D' is uninitialized when used here}}
-          D), // expected-warning {{field 'D' is uninitialized when used here}}
-        E(IntParam(E)) {} // expected-warning {{field 'E' is uninitialized when used here}}
-};
-
-int IntWrapper(int &i) { return 0; };
-class InitializeUsingSelfExceptions {
-  int A;
-  int B;
-  int C;
-  void *P;
-  InitializeUsingSelfExceptions(int B)
-      : A(IntWrapper(A)),  // Due to a conservative implementation, we do not report warnings inside function/ctor calls even though it is possible to do so.
-        B(B),  // Not a warning; B is a local variable.
-        C(sizeof(C)),  // sizeof doesn't reference contents, do not warn
-        P(&P) {} // address-of doesn't reference contents (the pointer may be dereferenced in the same expression but it would be rare; and weird)
-};
-
-class CopyConstructorTest {
-  bool A, B, C;
-  CopyConstructorTest(const CopyConstructorTest& rhs)
-      : A(rhs.A),
-        B(B),  // expected-warning {{field 'B' is uninitialized when used here}}
-        C(rhs.C || C) { }  // expected-warning {{field 'C' is uninitialized when used here}}
-};
-
-// Make sure we aren't marking default constructors when we shouldn't be.
-template<typename T>
-struct NDC {
-  T &ref;
-  
-  NDC() { }
-  NDC(T &ref) : ref(ref) { }
-};
-  
-struct X0 : NDC<int> {
-  X0(int &ref) : NDC<int>(ref), ndc(ref) { }
-  
-  NDC<int> ndc;
-};
-
-namespace Test0 {
-
-struct A { A(); };
-
-struct B {
-  B() { } 
-  const A a;
-};
-
-}
-
-namespace Test1 {
-  struct A {
-    enum Kind { Foo } Kind;
-    A() : Kind(Foo) {}
-  };
-}
-
-namespace Test2 {
-
-struct A { 
-  A(const A&);
-};
-
-struct B : virtual A { };
-struct C : A, B { };
-
-C f(C c) {
-  return c;
-}
-
-}
-
-// Don't build implicit initializers for anonymous union fields when we already
-// have an explicit initializer for another field in the union.
-namespace PR7402 {
-  struct S {
-    union {
-      void* ptr_;
-      struct { int i_; };
-    };
-
-    template <typename T> S(T) : ptr_(0) { }
-  };
-
-  void f() {
-    S s(3);
-  }
-}
-
-// <rdar://problem/8308215>: don't crash.
-// Lots of questionable recovery here;  errors can change.
-namespace test3 {
-  class A : public std::exception {}; // expected-error {{undeclared identifier}} expected-error {{expected class name}} expected-note 4 {{candidate}}
-  class B : public A {
-  public:
-    B(const String& s, int e=0) // expected-error {{unknown type name}} 
-      : A(e), m_String(s) , m_ErrorStr(__null) {} // expected-error {{no matching constructor}} expected-error {{does not name}}
-    B(const B& e)
-      : A(e), m_String(e.m_String), m_ErrorStr(__null) { // expected-error {{does not name}} \
-      // expected-error {{no member named 'm_String' in 'test3::B'}} \
-      // expected-error {{no matching}}
-    }
-  };
-}
-
-// PR8075
-namespace PR8075 {
-
-struct S1 {
-  enum { FOO = 42 };
-  static const int bar = 42;
-  static int baz();
-  S1(int);
-};
-
-const int S1::bar;
-
-struct S2 {
-  S1 s1;
-  S2() : s1(s1.FOO) {}
-};
-
-struct S3 {
-  S1 s1;
-  S3() : s1(s1.bar) {}
-};
-
-struct S4 {
-  S1 s1;
-  S4() : s1(s1.baz()) {}
-};
-
-}
-
-namespace PR12049 {
-  int function();
-
-  class Class
-  {
-  public:
-      Class() : member(function() {} // expected-note {{to match this '('}}
-
-      int member; // expected-error {{expected ')'}}
-  };
-}
-
-namespace PR14073 {
-  struct S1 { union { int n; }; S1() : n(n) {} };  // expected-warning {{field 'n' is uninitialized when used here}}
-  struct S2 { union { union { int n; }; char c; }; S2() : n(n) {} };  // expected-warning {{field 'n' is uninitialized when used here}}
-  struct S3 { struct { int n; }; S3() : n(n) {} };  // expected-warning {{field 'n' is uninitialized when used here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor-recovery.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor-recovery.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor-recovery.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct C {
-  virtual C() = 0; // expected-error{{constructor cannot be declared 'virtual'}}
-};
-
-void f() {
- C c;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/constructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-typedef int INT;
-
-class Foo {
-  Foo();
-  (Foo)(float) { }
-  explicit Foo(int); // expected-note {{previous declaration is here}}
-  Foo(const Foo&);
-
-  ((Foo))(INT); // expected-error{{cannot be redeclared}}
-
-  Foo(Foo foo, int i = 17, int j = 42); // expected-error{{copy constructor must pass its first argument by reference}}
-
-  static Foo(short, short); // expected-error{{constructor cannot be declared 'static'}}
-  virtual Foo(double); // expected-error{{constructor cannot be declared 'virtual'}}
-  Foo(long) const; // expected-error{{'const' qualifier is not allowed on a constructor}}
-  
-  int Foo(int, int); // expected-error{{constructor cannot have a return type}} \
-  // expected-error{{member 'Foo' has the same name as its class}}
-};
-
-Foo::Foo(const Foo&) { }
-
-typedef struct {
-  int version;
-} Anon;
-extern const Anon anon;
-extern "C" const Anon anon2;
-
-// PR3188: The extern declaration complained about not having an appropriate
-// constructor.
-struct x;
-extern x a;
-
-// A similar case.
-struct y {
-  y(int);
-};
-extern y b;
-
-struct Length {
-  Length l() const { return *this; }
-};
-
-// <rdar://problem/6815988>
-struct mmst_reg{
- char mmst_reg[10];
-};
-
-// PR3948
-namespace PR3948 {
-// PR3948
-class a {
-  public:
-  int b(int a());
-};
-int x();
-void y() {
-  a z; z.b(x);
-}
-}
-
-namespace A {
-  struct S {
-    S();
-    S(int);
-    void f1();
-    void f2();
-    operator int ();
-    ~S();
-  };
-}
-
-A::S::S() {}
-
-void A::S::f1() {}
-
-struct S {};
-
-A::S::S(int) {}
-
-void A::S::f2() {}
-
-A::S::operator int() { return 1; }
-
-A::S::~S() {}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion-delete-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion-delete-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion-delete-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,109 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// Test1
-struct B {
-  operator char *(); // expected-note {{candidate function}}
-};
-
-struct D : B {
-  operator int *(); // expected-note {{candidate function}}
-};
-
-void f (D d)
-{
-   delete d; // expected-error {{ambiguous conversion of delete expression of type 'D' to a pointer}}
-}
-
-// Test2
-struct B1 {
-  operator int *();
-};
-
-struct D1 : B1 {
-  operator int *();
-};
-
-void f1 (D1 d)
-{
-   delete d;
-}
-
-// Test3
-struct B2 {
-  operator const int *();	// expected-note {{candidate function}}
-};
-
-struct D2 : B2 {
-  operator int *();	// expected-note {{candidate function}}
-};
-
-void f2 (D2 d)
-{
-   delete d; // expected-error {{ambiguous conversion of delete expression of type 'D2' to a pointer}}
-}
-
-// Test4
-struct B3 {
-  operator const int *();	// expected-note {{candidate function}}
-};
-
-struct A3 {
-  operator const int *();	// expected-note {{candidate function}}
-};
-
-struct D3 : A3, B3 {
-};
-
-void f3 (D3 d)
-{
-   delete d; // expected-error {{ambiguous conversion of delete expression of type 'D3' to a pointer}}
-}
-
-// Test5
-struct X {
-   operator int();
-   operator int*();
-};
-
-void f4(X x) { delete x; delete x; }
-
-// Test6
-struct X1 {
-   operator int();
-   operator int*();
-   template<typename T> operator T*() const; // converts to any pointer!
-};
-
-void f5(X1 x) { delete x; }  // OK. In selecting a conversion to pointer function, template convesions are skipped.
-
-// Test7
-struct Base {
-   operator int*();	
-};
-
-struct Derived : Base {
-   // not the same function as Base's non-const operator int()
-   operator int*() const;
-};
-
-void foo6(const Derived cd, Derived d) {
-	// overload resolution selects Derived::operator int*() const;
-	delete cd;
-	delete d;	
-}
-
-// Test8
-struct BB {
-   template<typename T> operator T*() const;
-};
-
-struct DD : BB {
-   template<typename T> operator T*() const; // hides base conversion
-   operator int *() const;
-};
-
-void foo7 (DD d)
-{
-        // OK. In selecting a conversion to pointer function, template convesions are skipped.
-	delete d;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,405 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class X { 
-public:
-  operator bool();
-  operator int() const;
-
-  bool f() {
-    return operator bool();
-  }
-
-  float g() {
-    return operator float(); // expected-error{{use of undeclared 'operator float'}}
-  }
-};
-
-operator int(); // expected-error{{conversion function must be a non-static member function}}
-
-operator int; // expected-error{{'operator int' cannot be the name of a variable or data member}}
-
-typedef int func_type(int);
-typedef int array_type[10];
-
-class Y {
-public:
-  void operator bool(int, ...) const; // expected-error{{conversion function cannot have a return type}} \
-  // expected-error{{conversion function cannot have any parameters}}
-  
-  operator float(...) const;  // expected-error{{conversion function cannot be variadic}}
-  
-  
-  operator func_type(); // expected-error{{conversion function cannot convert to a function type}}
-  operator array_type(); // expected-error{{conversion function cannot convert to an array type}}
-};
-
-
-typedef int INT;
-typedef INT* INT_PTR;
-
-class Z { 
-  operator int(); // expected-note {{previous declaration is here}}
-  operator int**(); // expected-note {{previous declaration is here}}
-  
-  operator INT();  // expected-error{{conversion function cannot be redeclared}}
-  operator INT_PTR*(); // expected-error{{conversion function cannot be redeclared}}
-};
-
-
-class A { };
-
-class B : public A {
-public:
-  operator A&() const; // expected-warning{{conversion function converting 'B' to its base class 'A' will never be used}}
-  operator const void() const; // expected-warning{{conversion function converting 'B' to 'const void' will never be used}}
-  operator const B(); // expected-warning{{conversion function converting 'B' to itself will never be used}}
-};
-
-// This used to crash Clang.
-struct Flip;
-struct Flop {
-  Flop();
-  Flop(const Flip&); // expected-note{{candidate constructor}}
-};
-struct Flip {
-  operator Flop() const; // expected-note{{candidate function}}
-};
-Flop flop = Flip(); // expected-error {{conversion from 'Flip' to 'Flop' is ambiguous}}
-
-// This tests that we don't add the second conversion declaration to the list of user conversions
-struct C {
-  operator const char *() const;
-};
-
-C::operator const char*() const { return 0; }
-
-void f(const C& c) {
-  const char* v = c;
-}
-
-// Test. Conversion in base class is visible in derived class.
-class XB { 
-public:
-  operator int(); // expected-note {{candidate function}}
-};
-
-class Yb : public XB { 
-public:
-  operator char(); // expected-note {{candidate function}}
-};
-
-void f(Yb& a) {
-  if (a) { } // expected-error {{conversion from 'Yb' to 'bool' is ambiguous}}
-  int i = a; // OK. calls XB::operator int();
-  char ch = a;  // OK. calls Yb::operator char();
-}
-
-// Test conversion + copy construction.
-class AutoPtrRef { };
-
-class AutoPtr {
-  AutoPtr(AutoPtr &); // expected-note{{declared private here}}
-  
-public:
-  AutoPtr();
-  AutoPtr(AutoPtrRef);
-  
-  operator AutoPtrRef();
-};
-
-AutoPtr make_auto_ptr();
-
-AutoPtr test_auto_ptr(bool Cond) {
-  AutoPtr p1( make_auto_ptr() );
-  
-  AutoPtr p;
-  if (Cond)
-    return p; // expected-error{{calling a private constructor}}
-  
-  return AutoPtr();
-}
-
-struct A1 {
-  A1(const char *);
-  ~A1();
-
-private:
-  A1(const A1&); // expected-note 2 {{declared private here}}
-};
-
-A1 f() {
-  // FIXME: redundant diagnostics!
-  return "Hello"; // expected-error {{calling a private constructor}} expected-warning {{an accessible copy constructor}}
-}
-
-namespace source_locations {
-  template<typename T>
-  struct sneaky_int {
-    typedef int type;
-  };
-
-  template<typename T, typename U>
-  struct A { };
-
-  template<typename T>
-  struct A<T, T> : A<T, int> { };
-
-  struct E {
-    template<typename T>
-    operator A<T, typename sneaky_int<T>::type>&() const; // expected-note{{candidate function}}
-  };
-
-  void f() {
-    A<float, float> &af = E(); // expected-error{{no viable conversion}}
-    A<float, int> &af2 = E();
-    const A<float, int> &caf2 = E();
-  }
-
-  // Check 
-  template<typename T>
-  struct E2 {
-    operator T
-    * // expected-error{{pointer to a reference}}
-    () const;
-  };
-
-  E2<int&> e2i; // expected-note{{in instantiation}}
-}
-
-namespace crazy_declarators {
-  struct A {
-    (&operator bool())(); // expected-error {{must use a typedef to declare a conversion to 'bool (&)()'}}
-
-    // FIXME: This diagnostic is misleading (the correct spelling
-    // would be 'operator int*'), but it's a corner case of a
-    // rarely-used syntax extension.
-    *operator int();  // expected-error {{must use a typedef to declare a conversion to 'int *'}}
-  };
-}
-
-namespace smart_ptr {
-  class Y { 
-    class YRef { };
-
-    Y(Y&);
-
-  public:
-    Y();
-    Y(YRef);
-
-    operator YRef(); // expected-note{{candidate function}}
-  };
-
-  struct X { // expected-note{{candidate constructor (the implicit copy constructor) not}}
-    explicit X(Y);
-  };
-
-  Y make_Y();
-
-  X f() {
-    X x = make_Y(); // expected-error{{no viable conversion from 'smart_ptr::Y' to 'smart_ptr::X'}}
-    X x2(make_Y());
-    return X(Y());
-  }
-}
-
-struct Any {
-  Any(...);
-};
-
-struct Other {
-  Other(const Other &); 
-  Other();
-};
-
-void test_any() {
-  Any any = Other(); // expected-error{{cannot pass object of non-POD type 'Other' through variadic constructor; call will abort at runtime}}
-}
-
-namespace PR7055 {
-  // Make sure that we don't allow too many conversions in an
-  // auto_ptr-like template. In particular, we can't create multiple
-  // temporary objects when binding to a reference.
-  struct auto_ptr {
-    struct auto_ptr_ref { };
-
-    auto_ptr(auto_ptr&);
-    auto_ptr(auto_ptr_ref);
-    explicit auto_ptr(int *);
-
-    operator auto_ptr_ref();
-  };
-
-  struct X {
-    X(auto_ptr);
-  };
-
-  X f() {
-    X x(auto_ptr(new int));
-    return X(auto_ptr(new int));
-  }
-
-  auto_ptr foo();
-
-  X e(foo());
-
-  struct Y {
-    Y(X);
-  };
-  
-  Y f2(foo());
-}
-
-namespace PR7934 {
-  typedef unsigned char uint8;
-
-  struct MutablePtr {
-    MutablePtr() : ptr(0) {}
-    void *ptr;
-
-    operator void*() { return ptr; }
-
-  private:
-    operator uint8*() { return reinterpret_cast<uint8*>(ptr); }
-    operator const char*() const { return reinterpret_cast<const char*>(ptr); }
-  };
-
-  void fake_memcpy(const void *);
-
-  void use() {
-    MutablePtr ptr;
-    fake_memcpy(ptr);
-  }
-}
-
-namespace rdar8018274 {
-  struct X { };
-  struct Y {
-    operator const struct X *() const;
-  };
-
-  struct Z : Y {
-    operator struct X * ();
-  };
-
-  void test() {
-    Z x;
-    (void) (x != __null);
-  }
-
-
-  struct Base {
-    operator int();
-  };
-
-  struct Derived1 : Base { };
-
-  struct Derived2 : Base { };
-
-  struct SuperDerived : Derived1, Derived2 { 
-    using Derived1::operator int;
-  };
-
-  struct UeberDerived : SuperDerived {
-    operator long();
-  };
-
-  void test2(UeberDerived ud) {
-    int i = ud; // expected-error{{ambiguous conversion from derived class 'rdar8018274::SuperDerived' to base class 'rdar8018274::Base'}}
-  }
-
-  struct Base2 {
-    operator int();
-  };
-
-  struct Base3 {
-    operator int();
-  };
-
-  struct Derived23 : Base2, Base3 { 
-    using Base2::operator int;
-  };
-
-  struct ExtraDerived23 : Derived23 { };
-
-  void test3(ExtraDerived23 ed) {
-    int i = ed;
-  }
-}
-
-namespace PR8065 {
-  template <typename T> struct Iterator;
-  template <typename T> struct Container;
-
-  template<>
-  struct Iterator<int> {
-    typedef Container<int> container_type;
-  };
-
-  template <typename T>
-  struct Container {
-    typedef typename Iterator<T>::container_type X;
-    operator X(void) { return X(); }
-  };
-
-  Container<int> test;
-}
-
-namespace PR8034 {
-  struct C {
-    operator int();
-
-  private:
-    template <typename T> operator T();
-  };
-  int x = C().operator int();
-}
-
-namespace PR9336 {
-  template<class T>
-  struct generic_list
-  {
-    template<class Container>
-    operator Container()
-    { 
-      Container ar;
-      T* i;
-      ar[0]=*i;
-      return ar;
-    }
-  };
-
-  template<class T>
-  struct array
-  {
-    T& operator[](int);
-    const T& operator[](int)const;
-  };
-
-  generic_list<generic_list<int> > l;
-  array<array<int> > a = l;
-}
-
-namespace PR8800 {
-  struct A;
-  struct C {
-    operator A&();
-  };
-  void f() {
-    C c;
-    A& a1(c);
-    A& a2 = c;
-    A& a3 = static_cast<A&>(c);
-    A& a4 = (A&)c;
-  }
-}
-
-namespace PR12712 {
-  struct A {};
-  struct B {
-    operator A();
-    operator A() const;
-  };
-  struct C : B {};
-
-  A f(const C c) { return c; }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,139 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -Wconversion -std=c++11 -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -fsyntax-only -Wconversion -std=c++11 %s 2>&1 | FileCheck %s
-
-#include <stddef.h>
-
-typedef   signed char  int8_t;
-typedef   signed short int16_t;
-typedef   signed int   int32_t;
-typedef   signed long  int64_t;
-
-typedef unsigned char  uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int   uint32_t;
-typedef unsigned long  uint64_t;
-
-// <rdar://problem/7909130>
-namespace test0 {
-  int32_t test1_positive(char *I, char *E) {
-    return (E - I); // expected-warning {{implicit conversion loses integer precision}}
-  }
-
-  int32_t test1_negative(char *I, char *E) {
-    return static_cast<int32_t>(E - I);
-  }
-
-  uint32_t test2_positive(uint64_t x) {
-    return x; // expected-warning {{implicit conversion loses integer precision}}
-  }
-
-  uint32_t test2_negative(uint64_t x) {
-    return (uint32_t) x;
-  }
-}
-
-namespace test1 {
-  uint64_t test1(int x, unsigned y) {
-    return sizeof(x == y);
-  }
-
-  uint64_t test2(int x, unsigned y) {
-    return __alignof(x == y);
-  }
-
-  void * const foo();
-  bool test2(void *p) {
-    return p == foo();
-  }
-}
-
-namespace test2 {
-  struct A {
-    unsigned int x : 2;
-    A() : x(10) {} // expected-warning {{implicit truncation from 'int' to bitfield changes value from 10 to 2}}
-  };
-}
-
-// This file tests -Wnull-conversion, a subcategory of -Wconversion
-// which is on by default.
-
-void test3() {
-  int a = NULL; // expected-warning {{implicit conversion of NULL constant to 'int'}}
-  int b;
-  b = NULL; // expected-warning {{implicit conversion of NULL constant to 'int'}}
-  long l = NULL; // FIXME: this should also warn, but currently does not if sizeof(NULL)==sizeof(inttype)
-  int c = ((((NULL)))); // expected-warning {{implicit conversion of NULL constant to 'int'}}
-  int d;
-  d = ((((NULL)))); // expected-warning {{implicit conversion of NULL constant to 'int'}}
-  bool bl = NULL; // expected-warning {{implicit conversion of NULL constant to 'bool'}}
-  char ch = NULL; // expected-warning {{implicit conversion of NULL constant to 'char'}}
-  unsigned char uch = NULL; // expected-warning {{implicit conversion of NULL constant to 'unsigned char'}}
-  short sh = NULL; // expected-warning {{implicit conversion of NULL constant to 'short'}}
-  double dbl = NULL; // expected-warning {{implicit conversion of NULL constant to 'double'}}
-
-  // Use FileCheck to ensure we don't get any unnecessary macro-expansion notes 
-  // (that don't appear as 'real' notes & can't be seen/tested by -verify)
-  // CHECK-NOT: note:
-  // CHECK: note: expanded from macro 'FINIT'
-#define FINIT int a3 = NULL;
-  FINIT // expected-warning {{implicit conversion of NULL constant to 'int'}}
-
-  // we don't catch the case of #define FOO NULL ... int i = FOO; but that seems a bit narrow anyway
-  // and avoiding that helps us skip these cases:
-#define NULL_COND(cond) ((cond) ? &a : NULL)
-  bool bl2 = NULL_COND(true); // don't warn on NULL conversion through the conditional operator across a macro boundary
-  if (NULL_COND(true))
-    ;
-  while (NULL_COND(true))
-    ;
-  for (; NULL_COND(true); )
-    ;
-  do ;
-  while(NULL_COND(true));
-  int *ip = NULL;
-  int (*fp)() = NULL;
-  struct foo {
-    int n;
-    void func();
-  };
-  int foo::*datamem = NULL;
-  int (foo::*funmem)() = NULL;
-}
-
-namespace test4 {
-  // FIXME: We should warn for non-dependent args (only when the param type is also non-dependent) only once
-  // not once for the template + once for every instantiation
-  template<typename T>
-  void tmpl(char c = NULL, // expected-warning 4 {{implicit conversion of NULL constant to 'char'}}
-            T a = NULL, // expected-warning {{implicit conversion of NULL constant to 'char'}} \
-                           expected-warning 2 {{implicit conversion of NULL constant to 'int'}}
-            T b = 1024) { // expected-warning {{implicit conversion from 'int' to 'char' changes value from 1024 to 0}}
-  }
-
-  template<typename T>
-  void tmpl2(T t = NULL) {
-  }
-
-  void func() {
-    tmpl<char>(); // expected-note 2 {{in instantiation of default function argument expression for 'tmpl<char>' required here}}
-    tmpl<int>(); // expected-note 2 {{in instantiation of default function argument expression for 'tmpl<int>' required here}}
-    // FIXME: We should warn only once for each template instantiation - not once for each call
-    tmpl<int>(); // expected-note 2 {{in instantiation of default function argument expression for 'tmpl<int>' required here}}
-    tmpl2<int*>();
-  }
-}
-
-namespace test5 {
-  template<int I>
-  void func() {
-    bool b = I;
-  }
-
-  template void func<3>();
-}
-
-namespace test6 {
-  decltype(nullptr) func() {
-    return NULL;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/convert-to-bool.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/convert-to-bool.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/convert-to-bool.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-struct ConvToBool {
-  operator bool() const;
-};
-
-struct ConvToInt {
-  operator int();
-};
-
-struct ExplicitConvToBool {
-  explicit operator bool(); // expected-warning{{explicit conversion functions are a C++11 extension}}
-};
-
-void test_conv_to_bool(ConvToBool ctb, ConvToInt cti, ExplicitConvToBool ecb) {
-  if (ctb) { }
-  if (cti) { }
-  if (ecb) { }
-  for (; ctb; ) { }
-  for (; cti; ) { }
-  for (; ecb; ) { }
-  while (ctb) { };
-  while (cti) { }
-  while (ecb) { }
-  do { } while (ctb);
-  do { } while (cti);
-  do { } while (ecb);
-
-  if (!ctb) { }
-  if (!cti) { }
-  if (!ecb) { }
-
-  bool b1 = !ecb;
-  if (ctb && ecb) { }
-  bool b2 = ctb && ecb;
-  if (ctb || ecb) { }
-  bool b3 = ctb || ecb;
-}
-
-void accepts_bool(bool) { } // expected-note{{candidate function}}
-
-struct ExplicitConvToRef {
-  explicit operator int&(); // expected-warning{{explicit conversion functions are a C++11 extension}}
-};
-
-void test_explicit_bool(ExplicitConvToBool ecb) {
-  bool b1(ecb); // okay
-  bool b2 = ecb; // expected-error{{no viable conversion from 'ExplicitConvToBool' to 'bool'}}
-  accepts_bool(ecb); // expected-error{{no matching function for call to}}
-}
-
-void test_explicit_conv_to_ref(ExplicitConvToRef ecr) {
-  int& i1 = ecr; // expected-error{{non-const lvalue reference to type 'int' cannot bind to a value of unrelated type 'ExplicitConvToRef'}}
-  int& i2(ecr); // okay
-}
-
-struct A { };
-struct B { };
-struct C {
-  explicit operator A&(); // expected-warning{{explicit conversion functions are a C++11 extension}}
-  operator B&(); // expected-note{{candidate}}
-};
-
-void test_copy_init_conversions(C c) {
-  A &a = c; // expected-error{{no viable conversion from 'C' to 'A'}}
-  B &b = c; // okay
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/converting-constructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/converting-constructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/converting-constructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-class Z { };
-
-class Y { 
-public:
-  Y(const Z&);
-};
-
-class X {
-public:
-  X(int);
-  X(const Y&);
-};
-
-void f(X); // expected-note{{candidate function}}
-
-void g(short s, Y y, Z z) {
-  f(s);
-  f(1.0f);
-  f(y);
-  f(z); // expected-error{{no matching function}}
-}
-
-
-class FromShort {
-public:
-  FromShort(short s);
-};
-
-class FromShortExplicitly { // expected-note{{candidate constructor (the implicit copy constructor)}}
-public:
-  explicit FromShortExplicitly(short s);
-};
-
-void explicit_constructor(short s) {
-  FromShort fs1(s);
-  FromShort fs2 = s;
-  FromShortExplicitly fse1(s);
-  FromShortExplicitly fse2 = s; // expected-error{{no viable conversion}}
-}
-
-// PR5519
-struct X1 { X1(const char&); };
-void x1(X1);
-void y1() {
-  x1(1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-assignment.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-assignment.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-assignment.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,110 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-struct A {
-};
-
-struct ConvertibleToA {
-  operator A();
-};
-
-struct ConvertibleToConstA {
-  operator const A();
-};
-
-struct B {
-  B& operator=(B&);  // expected-note 4 {{candidate function}}
-};
-
-struct ConvertibleToB {
-  operator B();
-};
-
-struct ConvertibleToBref {
-  operator B&();
-};
-
-struct ConvertibleToConstB {
-  operator const B();
-};
-
-struct ConvertibleToConstBref {
-  operator const B&();
-};
-
-struct C {
-  int operator=(int); // expected-note{{candidate function}}
-  long operator=(long); // expected-note{{candidate function}}
-  int operator+=(int); // expected-note{{candidate function}}
-  int operator+=(long); // expected-note{{candidate function}}
-};
-
-struct D {
-  D& operator+=(const D &);
-};
-
-struct ConvertibleToInt {
-  operator int();
-};
-
-void test() {
-  A a, na;
-  const A constA = A();
-  ConvertibleToA convertibleToA;
-  ConvertibleToConstA convertibleToConstA;
-
-  B b, nb;
-  const B constB = B();
-  ConvertibleToB convertibleToB;
-  ConvertibleToBref convertibleToBref;
-  ConvertibleToConstB convertibleToConstB;
-  ConvertibleToConstBref convertibleToConstBref;
-
-  C c, nc;
-  const C constC = C();
-
-  D d, nd;
-  const D constD = D();
-
-  ConvertibleToInt convertibleToInt;
-
-  na = a;
-  na = constA;
-  na = convertibleToA;
-  na = convertibleToConstA;
-  na += a; // expected-error{{no viable overloaded '+='}}
-
-  nb = b;
-  nb = constB;  // expected-error{{no viable overloaded '='}}
-  nb = convertibleToB; // expected-error{{no viable overloaded '='}}
-  nb = convertibleToBref;
-  nb = convertibleToConstB; // expected-error{{no viable overloaded '='}}
-  nb = convertibleToConstBref; // expected-error{{no viable overloaded '='}}
-
-  nc = c;
-  nc = constC;
-  nc = 1;
-  nc = 1L;
-  nc = 1.0; // expected-error{{use of overloaded operator '=' is ambiguous}}
-  nc += 1;
-  nc += 1L;
-  nc += 1.0; // expected-error{{use of overloaded operator '+=' is ambiguous}}
-
-  nd = d;
-  nd += d;
-  nd += constD;
-
-  int i;
-  i = convertibleToInt;
-  i = a; // expected-error{{assigning to 'int' from incompatible type 'A'}}
-}
-
-// <rdar://problem/8315440>: Don't crash
-namespace test1 {
-  template<typename T> class A : public unknown::X { // expected-error {{undeclared identifier 'unknown'}} expected-error {{expected class name}}
-    A(UndeclaredType n) : X(n) {} // expected-error {{unknown type name 'UndeclaredType'}}
-  };
-  template<typename T> class B : public A<T>     {
-    virtual void foo() {}
-  };
-  extern template class A<char>;
-  extern template class B<char>;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-constructor-error.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-constructor-error.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-constructor-error.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct S {
-   S (S);  // expected-error {{copy constructor must pass its first argument by reference}}
-};
-
-S f();
-
-void g() { 
-  S a( f() );
-}
-
-class foo {
-  foo(foo&, int); // expected-note {{previous}}
-  foo(int); // expected-note {{previous}}
-  foo(const foo&); // expected-note {{previous}}
-};
-
-foo::foo(foo&, int = 0) { } // expected-error {{makes this constructor a copy constructor}}
-foo::foo(int = 0) { } // expected-error {{makes this constructor a default constructor}}
-foo::foo(const foo& = 0) { } //expected-error {{makes this constructor a default constructor}}
-
-namespace PR6064 {
-  struct A {
-    A() { }
-    inline A(A&, int); // expected-note {{previous}}
-  };
-
-  A::A(A&, int = 0) { } // expected-error {{makes this constructor a copy constructor}}
-
-  void f() {
-    A const a;
-    A b(a);
-  }
-}
-
-namespace PR10618 {
-  struct A {
-    A(int, int, int); // expected-note {{previous}}
-  };
-  A::A(int a = 0, // expected-error {{makes this constructor a default constructor}}
-       int b = 0,
-       int c = 0) {}
-
-  struct B {
-    B(int);
-    B(const B&, int); // expected-note {{previous}}
-  };
-  B::B(const B& = B(0), // expected-error {{makes this constructor a default constructor}}
-       int = 0) {
-  }
-
-  struct C {
-    C(const C&, int); // expected-note {{previous}}
-  };
-  C::C(const C&,
-       int = 0) { // expected-error {{makes this constructor a copy constructor}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-initialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-initialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/copy-initialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-class X {
-public:
-  explicit X(const X&); // expected-note {{candidate constructor}}
-  X(int*); // expected-note 3{{candidate constructor}}
-  explicit X(float*); // expected-note {{candidate constructor}}
-};
-
-class Y : public X { };
-
-void f(Y y, int *ip, float *fp) {
-  X x1 = y; // expected-error{{no matching constructor for initialization of 'X'}}
-  X x2 = 0;
-  X x3 = ip;
-  X x4 = fp; // expected-error{{no viable conversion}}
-  X x2a(0); // expected-error{{call to constructor of 'X' is ambiguous}}
-  X x3a(ip);
-  X x4a(fp);
-}
-
-struct foo {
- void bar(); // expected-note{{declared here}}
-};
-
-// PR3600
-void test(const foo *P) { P->bar(); } // expected-error{{'bar' not viable: 'this' argument has type 'const foo', but function is not marked const}}
-
-namespace PR6757 {
-  struct Foo {
-    Foo();
-    Foo(Foo&); // expected-note{{candidate constructor not viable}}
-  };
-
-  struct Bar {
-    operator const Foo&() const;
-  };
-
-  void f(Foo);
-
-  void g(Foo foo) {
-    f(Bar()); // expected-error{{no viable constructor copying parameter of type 'const PR6757::Foo'}}
-    f(foo);
-  }
-}
-
-namespace DR5 {
-  // Core issue 5: if a temporary is created in copy-initialization, it is of
-  // the cv-unqualified version of the destination type.
-  namespace Ex1 {
-    struct C { };
-    C c;
-    struct A {
-        A(const A&);
-        A(const C&);
-    };
-    const volatile A a = c; // ok
-  }
-
-  namespace Ex2 {
-    struct S {
-      S(S&&); // expected-warning {{C++11}}
-      S(int);
-    };
-    const S a(0);
-    const S b = 0;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/crash-lambda-12645424.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/crash-lambda-12645424.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/crash-lambda-12645424.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
-
-// rdar://12645424, crash due to a double-free
-
-template<typename _Tp> struct __add_lvalue_reference_helper {};
-template<typename _Tp> struct add_lvalue_reference :  __add_lvalue_reference_helper<_Tp> {
-  typedef _Tp type;
-};
-
-template<typename... Types> struct type_list;
-template<typename , template<typename> class... Funs> struct C;
-
-template<typename T> struct C<T> {
-	typedef T type;
-};
-
-template<typename T, template<typename>  class Fun0, template<typename> class... Funs> struct C<T, Fun0, Funs...> {
-  typedef  typename C<typename Fun0<T>::type, Funs...>::type type;
-};
-
-template<class , template<typename> class... Funs> struct tl_map;
-template<typename... Ts, template<typename> class... Funs> struct tl_map<type_list<Ts...>, Funs...> {
-  typedef type_list<typename C<Ts, Funs...>::type...> type;
-};
-
-template<   class Pattern> struct F {
- typedef Pattern  filtered_pattern;
-  tl_map< filtered_pattern, add_lvalue_reference > type;
-};
-
-template<class, class Pattern> struct get_case {
-  F<Pattern> type;
-};
-
-template<class Pattern> struct rvalue_builder {
-  template<typename Expr> typename get_case<Expr, Pattern>::type operator>>(Expr ); // expected-note {{candidate template ignored}}
-};
-  
-template<typename Arg0> rvalue_builder< type_list<Arg0> > on(const Arg0& ) ;
-
-class Z {
-  int empty = on(0) >> [] {}; // expected-error {{invalid operands to binary expression}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/crashes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/crashes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/crashes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,173 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// <rdar://problem/8124080>
-template<typename _Alloc> class allocator;
-template<class _CharT> struct char_traits;
-template<typename _CharT, typename _Traits = char_traits<_CharT>,            
-         typename _Alloc = allocator<_CharT> >
-class basic_string;
-template<typename _CharT, typename _Traits, typename _Alloc>
-const typename basic_string<_CharT, _Traits, _Alloc>::size_type   
-basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_max_size // expected-error{{no member named '_Rep' in 'basic_string<_CharT, _Traits, _Alloc>'}}
-  = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4; 
-
-// PR7118
-template<typename T>
-class Foo {
-  class Bar;
-  void f() {
-    Bar i;
-  }
-};
-
-// PR7625
-template<typename T> struct a : T {
- struct x : T {
-   int aa() { return p; } // expected-error{{use of undeclared identifier 'p'}}
- };
-};
-
-// rdar://8605381
-namespace rdar8605381 {
-struct X {};
-
-struct Y { // expected-note{{candidate}}
-  Y();
-};
-
-struct {
-  Y obj;
-} objs[] = {
-  new Y // expected-error{{no viable conversion}}
-};
-}
-
-// http://llvm.org/PR8234
-namespace PR8234 {
-template<typename Signature>
-class callback
-{
-};
-
-template<typename R , typename ARG_TYPE0>
-class callback<R( ARG_TYPE0)>
-{
-    public:
-        callback() {}
-};
-
-template< typename ARG_TYPE0>
-class callback<void( ARG_TYPE0)>
-{
-    public:
-        callback() {}
-};
-
-void f()
-{
-    callback<void(const int&)> op;
-}
-}
-
-namespace PR9007 {
-  struct bar {
-    enum xxx {
-      yyy = sizeof(struct foo*)
-    };
-    foo *xxx();
-  };
-}
-
-namespace PR9026 {
-  class InfallibleTArray {
-  };
-  class Variant;
-  class CompVariant {
-    operator const InfallibleTArray&() const;
-  };
-  class Variant {
-    operator const CompVariant&() const;
-  };
-  void     Write(const Variant& __v);
-  void     Write(const InfallibleTArray& __v);
-  Variant x;
-  void Write2() {
-    Write(x);
-  }
-}
-
-namespace PR10270 {
-  template<typename T> class C;
-  template<typename T> void f() {
-    if (C<T> == 1) // expected-error{{expected unqualified-id}} \
-                   // expected-error{{invalid '==' at end of declaration}}
-      return;
-  }
-}
-
-namespace rdar11806334 {
-
-class cc_YCbCr;
-
-class cc_rgb
-{
- public:
-  cc_rgb( uint p ); // expected-error {{unknown type name}}
-  cc_rgb( cc_YCbCr v_in );
-};
-
-class cc_hsl
-{
- public:
-  cc_rgb rgb();
-  cc_YCbCr YCbCr();
-};
-
-class cc_YCbCr
-{
- public:
-  cc_YCbCr( const cc_rgb v_in );
-};
-
-cc_YCbCr cc_hsl::YCbCr()
-{
- cc_YCbCr v_out = cc_YCbCr( rgb());
- return v_out;
-}
-
-}
-
-namespace test1 {
-  int getString(const int*);
-  template<int a> class ELFObjectFile  {
-    const int* sh;
-    ELFObjectFile() {
-      switch (*sh) {
-      }
-      int SectionName(getString(sh));
-    }
-  };
-}
-
-namespace test2 {
-  struct fltSemantics ;
-  const fltSemantics &foobar();
-  void VisitCastExpr(int x) {
-    switch (x) {
-    case 42:
-      const fltSemantics &Sem = foobar();
-    }
-  }
-}
-
-namespace test3 {
-  struct nsCSSRect {
-  };
-  static int nsCSSRect::* sides;
-  nsCSSRect dimenX;
-  void ParseBoxCornerRadii(int y) {
-    switch (y) {
-    }
-    int& x = dimenX.*sides;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cstyle-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cstyle-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cstyle-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,232 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// REQUIRES: LP64
-
-struct A {};
-
-// ----------- const_cast --------------
-
-typedef char c;
-typedef c *cp;
-typedef cp *cpp;
-typedef cpp *cppp;
-typedef cppp &cpppr;
-typedef const cppp &cpppcr;
-typedef const char cc;
-typedef cc *ccp;
-typedef volatile ccp ccvp;
-typedef ccvp *ccvpp;
-typedef const volatile ccvpp ccvpcvp;
-typedef ccvpcvp *ccvpcvpp;
-typedef int iar[100];
-typedef iar &iarr;
-typedef int (*f)(int);
-
-void t_cc()
-{
-  ccvpcvpp var = 0;
-  // Cast away deep consts and volatiles.
-  char ***var2 = (cppp)(var);
-  char ***const &var3 = var2;
-  // Const reference to reference.
-  char ***&var4 = (cpppr)(var3);
-  // Drop reference. Intentionally without qualifier change.
-  char *** var5 = (cppp)(var4);
-  const int ar[100] = {0};
-  // Array decay. Intentionally without qualifier change.
-  int *pi = (int*)(ar);
-  f fp = 0;
-  // Don't misidentify fn** as a function pointer.
-  f *fpp = (f*)(&fp);
-  int const A::* const A::*icapcap = 0;
-  int A::* A::* iapap = (int A::* A::*)(icapcap);
-}
-
-// ----------- static_cast -------------
-
-struct B : public A {};             // Single public base.
-struct C1 : public virtual B {};    // Single virtual base.
-struct C2 : public virtual B {};
-struct D : public C1, public C2 {}; // Diamond
-struct E : private A {};            // Single private base.
-struct F : public C1 {};            // Single path to B with virtual.
-struct G1 : public B {};
-struct G2 : public B {};
-struct H : public G1, public G2 {}; // Ambiguous path to B.
-
-enum Enum { En1, En2 };
-enum Onom { On1, On2 };
-
-struct Co1 { operator int(); };
-struct Co2 { Co2(int); };
-struct Co3 { };
-struct Co4 { Co4(Co3); operator Co3(); };
-
-// Explicit implicits
-void t_529_2()
-{
-  int i = 1;
-  (void)(float)(i);
-  double d = 1.0;
-  (void)(float)(d);
-  (void)(int)(d);
-  (void)(char)(i);
-  (void)(unsigned long)(i);
-  (void)(int)(En1);
-  (void)(double)(En1);
-  (void)(int&)(i);
-  (void)(const int&)(i);
-
-  int ar[1];
-  (void)(const int*)(ar);
-  (void)(void (*)())(t_529_2);
-
-  (void)(void*)(0);
-  (void)(void*)((int*)0);
-  (void)(volatile const void*)((const int*)0);
-  (void)(A*)((B*)0);
-  (void)(A&)(*((B*)0));
-  (void)(const B*)((C1*)0);
-  (void)(B&)(*((C1*)0));
-  (void)(A*)((D*)0);
-  (void)(const A&)(*((D*)0));
-  (void)(int B::*)((int A::*)0);
-  (void)(void (B::*)())((void (A::*)())0);
-  (void)(A*)((E*)0); // C-style cast ignores access control
-  (void)(void*)((const int*)0); // const_cast appended
-
-  (void)(int)(Co1());
-  (void)(Co2)(1);
-  (void)(Co3)((Co4)(Co3()));
-
-  // Bad code below
-  //(void)(A*)((H*)0); // {{static_cast from 'struct H *' to 'struct A *' is not allowed}}
-}
-
-// Anything to void
-void t_529_4()
-{
-  (void)(1);
-  (void)(t_529_4);
-}
-
-// Static downcasts
-void t_529_5_8()
-{
-  (void)(B*)((A*)0);
-  (void)(B&)(*((A*)0));
-  (void)(const G1*)((A*)0);
-  (void)(const G1&)(*((A*)0));
-  (void)(B*)((const A*)0); // const_cast appended
-  (void)(B&)(*((const A*)0)); // const_cast appended
-  (void)(E*)((A*)0); // access control ignored
-  (void)(E&)(*((A*)0)); // access control ignored
-
-  // Bad code below
-
-  (void)(C1*)((A*)0); // expected-error {{cannot cast 'A *' to 'C1 *' via virtual base 'B'}}
-  (void)(C1&)(*((A*)0)); // expected-error {{cannot cast 'A' to 'C1 &' via virtual base 'B'}}
-  (void)(D*)((A*)0); // expected-error {{cannot cast 'A *' to 'D *' via virtual base 'B'}}
-  (void)(D&)(*((A*)0)); // expected-error {{cannot cast 'A' to 'D &' via virtual base 'B'}}
-  (void)(H*)((A*)0); // expected-error {{ambiguous cast from base 'A' to derived 'H':\n    struct A -> struct B -> struct G1 -> struct H\n    struct A -> struct B -> struct G2 -> struct H}}
-  (void)(H&)(*((A*)0)); // expected-error {{ambiguous cast from base 'A' to derived 'H':\n    struct A -> struct B -> struct G1 -> struct H\n    struct A -> struct B -> struct G2 -> struct H}}
-
-  // TODO: Test DR427. This requires user-defined conversions, though.
-}
-
-// Enum conversions
-void t_529_7()
-{
-  (void)(Enum)(1);
-  (void)(Enum)(1.0);
-  (void)(Onom)(En1);
-
-  // Bad code below
-
-  (void)(Enum)((int*)0); // expected-error {{C-style cast from 'int *' to 'Enum' is not allowed}}
-}
-
-// Void pointer to object pointer
-void t_529_10()
-{
-  (void)(int*)((void*)0);
-  (void)(const A*)((void*)0);
-  (void)(int*)((const void*)0); // const_cast appended
-}
-
-// Member pointer upcast.
-void t_529_9()
-{
-  (void)(int A::*)((int B::*)0);
-
-  // Bad code below
-  (void)(int A::*)((int H::*)0); // expected-error {{ambiguous conversion from pointer to member of derived class 'H' to pointer to member of base class 'A':}}
-  (void)(int A::*)((int F::*)0); // expected-error {{conversion from pointer to member of class 'F' to pointer to member of class 'A' via virtual base 'B' is not allowed}}
-}
-
-// -------- reinterpret_cast -----------
-
-enum test { testval = 1 };
-struct structure { int m; };
-typedef void (*fnptr)();
-
-// Test conversion between pointer and integral types, as in p3 and p4.
-void integral_conversion()
-{
-  void *vp = (void*)(testval);
-  long l = (long)(vp);
-  (void)(float*)(l);
-  fnptr fnp = (fnptr)(l);
-  (void)(char)(fnp); // expected-error {{cast from pointer to smaller type 'char' loses information}}
-  (void)(long)(fnp);
-}
-
-void pointer_conversion()
-{
-  int *p1 = 0;
-  float *p2 = (float*)(p1);
-  structure *p3 = (structure*)(p2);
-  typedef int **ppint;
-  ppint *deep = (ppint*)(p3);
-  (void)(fnptr*)(deep);
-}
-
-void constness()
-{
-  int ***const ipppc = 0;
-  int const *icp = (int const*)(ipppc);
-  (void)(int*)(icp); // const_cast appended
-  int const *const **icpcpp = (int const* const**)(ipppc); // const_cast appended
-  int *ip = (int*)(icpcpp);
-  (void)(int const*)(ip);
-  (void)(int const* const* const*)(ipppc);
-}
-
-void fnptrs()
-{
-  typedef int (*fnptr2)(int);
-  fnptr fp = 0;
-  (void)(fnptr2)(fp);
-  void *vp = (void*)(fp);
-  (void)(fnptr)(vp);
-}
-
-void refs()
-{
-  long l = 0;
-  char &c = (char&)(l);
-  // Bad: from rvalue
-  (void)(int&)(&c); // expected-error {{C-style cast from rvalue to reference type 'int &'}}
-}
-
-void memptrs()
-{
-  const int structure::*psi = 0;
-  (void)(const float structure::*)(psi);
-  (void)(int structure::*)(psi); // const_cast appended
-
-  void (structure::*psf)() = 0;
-  (void)(int (structure::*)())(psf);
-
-  (void)(void (structure::*)())(psi); // expected-error {{C-style cast from 'const int structure::*' to 'void (structure::*)()' is not allowed}}
-  (void)(int structure::*)(psf); // expected-error {{C-style cast from 'void (structure::*)()' to 'int structure::*' is not allowed}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cv-unqual-rvalues.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cv-unqual-rvalues.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cv-unqual-rvalues.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR7463: Make sure that when we have an rvalue, it does not have
-// cv-qualified non-class type.
-template <typename T_> void g (T_&); // expected-note 7{{not viable}}
-
-template<const int X> void h() { 
-  g(X); // expected-error{{no matching function for call to 'g'}}
-}
-
-template<typename T, T X> void h2() { 
-  g(X); // expected-error{{no matching function for call to 'g'}}
-}
-
-void a(__builtin_va_list x) {
-  g(__builtin_va_arg(x, const int)); // expected-error{{no matching function for call to 'g'}}
-  g((const int)0); // expected-error{{no matching function for call to 'g'}}
-  typedef const int cint;
-  g(cint(0)); // expected-error{{no matching function for call to 'g'}}
-  g(static_cast<const int>(1)); // expected-error{{no matching function for call to 'g'}}
-  g(reinterpret_cast<int *const>(0)); // expected-error{{no matching function for call to 'g'}}
-  h<0>(); 
-  h2<const int, 0>(); // expected-note{{instantiation of}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx-member-pointer-op.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx-member-pointer-op.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx-member-pointer-op.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-struct C {
-  static int (C::* a);
-};
-
-typedef void (C::*pmfc)();
-
-void g(pmfc) {
-  C *c;
-  c->*pmfc(); // expected-error {{invalid use of pointer to member type after ->*}}
-  C c1;
-  c1.*pmfc(); // expected-error {{invalid use of pointer to member type after .*}}
-  c->*(pmfc()); // expected-error {{invalid use of pointer to member type after ->*}}
-  c1.*((pmfc())); // expected-error {{invalid use of pointer to member type after .*}}
-}
-
-int a(C* x) { 
-  return x->*C::a; 
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wno-error=static-float-init %s 
-
-int vs = 0;
-
-class C {
-public:
-  struct NestedC {
-    NestedC(int);
-  };
-
-  int i = 0;
-  static int si = 0; // expected-error {{non-const static data member must be initialized out of line}}
-  static const NestedC ci = 0; // expected-error {{static data member of type 'const C::NestedC' must be initialized out of line}}
-  static const int nci = vs; // expected-error {{in-class initializer for static data member is not a constant expression}}
-  static const int vi = 0;
-  static const volatile int cvi = 0; // expected-error {{static const volatile data member must be initialized out of line}}
-};
-
-namespace rdar8367341 {
-  float foo(); // expected-note {{here}}
-
-  struct A {
-    static const float x = 5.0f; // expected-warning {{requires 'constexpr'}} expected-note {{add 'constexpr'}}
-    static const float y = foo(); // expected-warning {{requires 'constexpr'}} expected-note {{add 'constexpr'}}
-    static constexpr float x2 = 5.0f;
-    static constexpr float y2 = foo(); // expected-error {{must be initialized by a constant expression}} expected-note {{non-constexpr function 'foo'}}
-  };
-}
-
-
-namespace Foo {
-  // Regression test -- forward declaration of Foo should not cause error about
-  // nonstatic data member.
-  class Foo;
-  class Foo {
-    int x;
-    int y = x;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-compat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-compat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-compat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++98 -Wc++11-compat -verify %s
-
-namespace N {
-  template<typename T> void f(T) {} // expected-note 2{{here}}
-  namespace M {
-    template void ::N::f<int>(int); // expected-warning {{explicit instantiation of 'f' not in a namespace enclosing 'N'}}
-  }
-}
-using namespace N;
-template void f<char>(char); // expected-warning {{explicit instantiation of 'N::f' must occur in namespace 'N'}}
-
-template<typename T> void g(T) {} // expected-note 2{{here}}
-namespace M {
-  template void g<int>(int); // expected-warning {{explicit instantiation of 'g' must occur at global scope}}
-  template void ::g<char>(char); // expected-warning {{explicit instantiation of 'g' must occur at global scope}}
-}
-
-template inline void g<double>(double); // expected-warning {{explicit instantiation cannot be 'inline'}}
-
-void g() {
-  auto int n = 0; // expected-warning {{'auto' storage class specifier is redundant and incompatible with C++11}}
-}
-
-int n;
-struct S {
-  char c;
-}
-s = { n }, // expected-warning {{non-constant-expression cannot be narrowed from type 'int' to 'char' in initializer list in C++11}} expected-note {{explicit cast}}
-t = { 1234 }; // expected-warning {{constant expression evaluates to 1234 which cannot be narrowed to type 'char' in C++11}} expected-warning {{changes value}} expected-note {{explicit cast}}
-
-#define PRIuS "uS"
-int printf(const char *, ...);
-typedef __typeof(sizeof(int)) size_t;
-void h(size_t foo, size_t bar) {
-  printf("foo is %"PRIuS", bar is %"PRIuS, foo, bar); // expected-warning 2{{identifier after literal will be treated as a reserved user-defined literal suffix in C++11}}
-}
-
-#define _x + 1
-char c = 'x'_x; // expected-warning {{will be treated as a user-defined literal suffix}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-constexpr-const.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-constexpr-const.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-constexpr-const.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-constexpr int x = 1;
-constexpr int id(int x) { return x; }
-
-void foo(void) {
-  x = 2; // expected-error {{read-only variable is not assignable}}
-  int (*idp)(int) = id;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-cursory-default-delete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-cursory-default-delete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-cursory-default-delete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct non_copiable {
-  non_copiable(const non_copiable&) = delete; // expected-note {{marked deleted here}}
-  non_copiable& operator = (const non_copiable&) = delete; // expected-note {{explicitly deleted}}
-  non_copiable() = default;
-};
-
-struct non_const_copy {
-  non_const_copy(non_const_copy&);
-  non_const_copy& operator = (non_const_copy&) &;
-  non_const_copy& operator = (non_const_copy&) &&;
-  non_const_copy() = default; // expected-note {{not viable}}
-};
-non_const_copy::non_const_copy(non_const_copy&) = default; // expected-note {{not viable}}
-non_const_copy& non_const_copy::operator = (non_const_copy&) & = default; // expected-note {{not viable}}
-non_const_copy& non_const_copy::operator = (non_const_copy&) && = default; // expected-note {{not viable}}
-
-void fn1 () {
-  non_copiable nc;
-  non_copiable nc2 = nc; // expected-error {{deleted constructor}}
-  nc = nc; // expected-error {{deleted operator}}
-
-  non_const_copy ncc;
-  non_const_copy ncc2 = ncc;
-  ncc = ncc2;
-  const non_const_copy cncc{};
-  const non_const_copy cncc1; // expected-error {{default initialization of an object of const type 'const non_const_copy' requires a user-provided default constructor}}
-  non_const_copy ncc3 = cncc; // expected-error {{no matching}}
-  ncc = cncc; // expected-error {{no viable overloaded}}
-};
-
-struct non_const_derived : non_const_copy {
-  non_const_derived(const non_const_derived&) = default; // expected-error {{requires it to be non-const}}
-  non_const_derived& operator =(non_const_derived&) = default;
-};
-
-struct bad_decls {
-  bad_decls(volatile bad_decls&) = default; // expected-error {{may not be volatile}}
-  bad_decls&& operator = (bad_decls) = default; // expected-error {{lvalue reference}} expected-error {{must return 'bad_decls &'}}
-  bad_decls& operator = (volatile bad_decls&) = default; // expected-error {{may not be volatile}}
-  bad_decls& operator = (const bad_decls&) const = default; // expected-error {{may not have 'const', 'constexpr' or 'volatile' qualifiers}}
-};
-
-struct A {}; struct B {};
-
-struct except_spec_a {
-  virtual ~except_spec_a() throw(A);
-  except_spec_a() throw(A);
-};
-struct except_spec_b {
-  virtual ~except_spec_b() throw(B);
-  except_spec_b() throw(B);
-};
-
-struct except_spec_d_good : except_spec_a, except_spec_b {
-  ~except_spec_d_good();
-};
-except_spec_d_good::~except_spec_d_good() = default;
-struct except_spec_d_good2 : except_spec_a, except_spec_b {
-  ~except_spec_d_good2() = default;
-};
-struct except_spec_d_bad : except_spec_a, except_spec_b {
-  ~except_spec_d_bad() noexcept;
-};
-// FIXME: This should error because this exception spec is not
-// compatible with the implicit exception spec.
-except_spec_d_bad::~except_spec_d_bad() noexcept = default;
-
-// FIXME: This should error because this exception spec is not
-// compatible with the implicit exception spec.
-struct except_spec_d_mismatch : except_spec_a, except_spec_b {
-  except_spec_d_mismatch() throw(A) = default;
-};
-struct except_spec_d_match : except_spec_a, except_spec_b {
-  except_spec_d_match() throw(A, B) = default;
-};
-
-// gcc-compatibility: allow attributes on default definitions
-// (but not normal definitions)
-struct S { S(); };
-S::S() __attribute((pure)) = default;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-defaulted-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-defaulted-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-defaulted-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,190 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -fcxx-exceptions %s
-
-void fn() = default; // expected-error {{only special member}}
-struct foo {
-  void fn() = default; // expected-error {{only special member}}
-
-  foo() = default;
-  foo(const foo&) = default;
-  foo(foo&&) = default;
-  foo& operator = (const foo&) = default;
-  foo& operator = (foo&&) = default;
-  ~foo() = default;
-};
-
-struct bar {
-  bar();
-  bar(const bar&);
-  bar(bar&&);
-  bar& operator = (const bar&);
-  bar& operator = (bar&&);
-  ~bar();
-};
-
-bar::bar() = default;
-bar::bar(const bar&) = default;
-bar::bar(bar&&) = default;
-bar& bar::operator = (const bar&) = default;
-bar& bar::operator = (bar&&) = default;
-bar::~bar() = default;
-
-static_assert(__is_trivial(foo), "foo should be trivial");
-
-static_assert(!__has_trivial_destructor(bar), "bar's destructor isn't trivial");
-static_assert(!__has_trivial_constructor(bar),
-              "bar's default constructor isn't trivial");
-static_assert(!__has_trivial_copy(bar), "bar has no trivial copy");
-static_assert(!__has_trivial_assign(bar), "bar has no trivial assign");
-
-void tester() {
-  foo f, g(f);
-  bar b, c(b);
-  f = g;
-  b = c;
-}
-
-template<typename T> struct S : T {
-  constexpr S() = default;
-  constexpr S(const S&) = default;
-  constexpr S(S&&) = default;
-};
-struct lit { constexpr lit() {} };
-S<lit> s_lit; // ok
-S<bar> s_bar; // ok
-
-struct Friends {
-  friend S<bar>::S();
-  friend S<bar>::S(const S&);
-  friend S<bar>::S(S&&);
-};
-
-namespace DefaultedFnExceptionSpec {
-  // DR1330: The exception-specification of an implicitly-declared special
-  // member function is evaluated as needed.
-  template<typename T> T &&declval();
-  template<typename T> struct pair {
-    pair(const pair&) noexcept(noexcept(T(declval<T>())));
-  };
-
-  struct Y;
-  struct X { X(); X(const Y&); };
-  struct Y { pair<X> p; };
-
-  template<typename T>
-  struct A {
-    pair<T> p;
-  };
-  struct B {
-    B();
-    B(const A<B>&);
-  };
-
-  // Don't crash here.
-  void f() {
-    X x = X();
-    (void)noexcept(B(declval<B>()));
-  }
-
-  template<typename T>
-  struct Error {
-    // FIXME: Type canonicalization causes all the errors to point at the first
-    // declaration which has the type 'void () noexcept (T::error)'. We should
-    // get one error for 'Error<int>::Error()' and one for 'Error<int>::~Error()'.
-    void f() noexcept(T::error); // expected-error 2{{has no members}}
-
-    Error() noexcept(T::error);
-    Error(const Error&) noexcept(T::error);
-    Error(Error&&) noexcept(T::error);
-    Error &operator=(const Error&) noexcept(T::error);
-    Error &operator=(Error&&) noexcept(T::error);
-    ~Error() noexcept(T::error);
-  };
-
-  struct DelayImplicit {
-    Error<int> e;
-  };
-
-  // Don't instantiate the exception specification here.
-  void test1(decltype(declval<DelayImplicit>() = DelayImplicit(DelayImplicit())));
-  void test2(decltype(declval<DelayImplicit>() = declval<const DelayImplicit>()));
-  void test3(decltype(DelayImplicit(declval<const DelayImplicit>())));
-
-  // Any odr-use causes the exception specification to be evaluated.
-  struct OdrUse { // \
-    expected-note {{instantiation of exception specification for 'Error'}} \
-    expected-note {{instantiation of exception specification for '~Error'}}
-    Error<int> e;
-  };
-  OdrUse use; // expected-note {{implicit default constructor for 'DefaultedFnExceptionSpec::OdrUse' first required here}}
-}
-
-namespace PR13527 {
-  struct X {
-    X() = delete; // expected-note {{here}}
-    X(const X&) = delete; // expected-note {{here}}
-    X(X&&) = delete; // expected-note {{here}}
-    X &operator=(const X&) = delete; // expected-note {{here}}
-    X &operator=(X&&) = delete; // expected-note {{here}}
-    ~X() = delete; // expected-note {{here}}
-  };
-  X::X() = default; // expected-error {{redefinition}}
-  X::X(const X&) = default; // expected-error {{redefinition}}
-  X::X(X&&) = default; // expected-error {{redefinition}}
-  X &X::operator=(const X&) = default; // expected-error {{redefinition}}
-  X &X::operator=(X&&) = default; // expected-error {{redefinition}}
-  X::~X() = default; // expected-error {{redefinition}}
-
-  struct Y {
-    Y() = default;
-    Y(const Y&) = default;
-    Y(Y&&) = default;
-    Y &operator=(const Y&) = default;
-    Y &operator=(Y&&) = default;
-    ~Y() = default;
-  };
-  Y::Y() = default; // expected-error {{definition of explicitly defaulted}}
-  Y::Y(const Y&) = default; // expected-error {{definition of explicitly defaulted}}
-  Y::Y(Y&&) = default; // expected-error {{definition of explicitly defaulted}}
-  Y &Y::operator=(const Y&) = default; // expected-error {{definition of explicitly defaulted}}
-  Y &Y::operator=(Y&&) = default; // expected-error {{definition of explicitly defaulted}}
-  Y::~Y() = default; // expected-error {{definition of explicitly defaulted}}
-}
-
-namespace PR14577 {
-  template<typename T>
-  struct Outer {
-    template<typename U>
-    struct Inner1 {
-      ~Inner1();
-    };
-
-    template<typename U>
-    struct Inner2 {
-      ~Inner2();
-    };
-  };
-
-  template<typename T>
-  Outer<T>::Inner1<T>::~Inner1() = delete; // expected-error {{nested name specifier 'Outer<T>::Inner1<T>::' for declaration does not refer into a class, class template or class template partial specialization}}  expected-error {{only functions can have deleted definitions}}
-
-  template<typename T>
-  Outer<T>::Inner2<T>::~Inner2() = default; // expected-error {{nested name specifier 'Outer<T>::Inner2<T>::' for declaration does not refer into a class, class template or class template partial specialization}}  expected-error {{only special member functions may be defaulted}}
-}
-
-extern "C" {
- template<typename _Tp> // expected-error {{templates must have C++ linkage}}
- void PR13573(const _Tp&) = delete; // expected-error {{only functions can have deleted definitions}}
-}
-
-namespace PR15597 {
-  template<typename T> struct A {
-    A() noexcept(true) = default;
-    ~A() noexcept(true) = default;
-  };
-  template<typename T> struct B {
-    B() noexcept(false) = default; // expected-error {{does not match the calculated one}}
-    ~B() noexcept(false) = default; // expected-error {{does not match the calculated one}}
-  };
-  A<int> a;
-  B<int> b; // expected-note {{here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-delegating-ctors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-delegating-ctors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-delegating-ctors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-struct foo {
-  int i;
-  foo();
-  foo(int);
-  foo(int, int);
-  foo(bool);
-  foo(char);
-  foo(const float*);
-  foo(const float&);
-  foo(void*);
-};
-
-// Good
-foo::foo (int i) : i(i) {
-}
-// Good
-foo::foo () : foo(-1) {
-}
-// Good
-foo::foo (int, int) : foo() {
-}
-
-foo::foo (bool) : foo(true) { // expected-error{{creates a delegation cycle}}
-}
-
-// Good
-foo::foo (const float* f) : foo(*f) { // expected-note{{it delegates to}}
-}
-
-foo::foo (const float &f) : foo(&f) { //expected-error{{creates a delegation cycle}} \
-                                      //expected-note{{which delegates to}}
-}
-
-foo::foo (char) :
-  i(3),
-  foo(3) { // expected-error{{must appear alone}}
-}
-
-// This should not cause an infinite loop
-foo::foo (void*) : foo(4.0f) {
-}
-
-struct deleted_dtor {
-  ~deleted_dtor() = delete; // expected-note{{function has been explicitly marked deleted here}}
-  deleted_dtor();
-  deleted_dtor(int) : deleted_dtor() // expected-error{{attempt to use a deleted function}}
-  {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-deleted-default-ctor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,131 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct non_trivial {
-  non_trivial();
-  non_trivial(const non_trivial&);
-  non_trivial& operator = (const non_trivial&);
-  ~non_trivial();
-};
-
-union bad_union {
-  non_trivial nt; // expected-note {{non-trivial default constructor}}
-};
-bad_union u; // expected-error {{call to implicitly-deleted default constructor}}
-union bad_union2 { // expected-note {{all data members are const-qualified}}
-  const int i;
-};
-bad_union2 u2; // expected-error {{call to implicitly-deleted default constructor}}
-
-struct bad_anon {
-  union {
-    non_trivial nt; // expected-note {{non-trivial default constructor}}
-  };
-};
-bad_anon a; // expected-error {{call to implicitly-deleted default constructor}}
-struct bad_anon2 {
-  union { // expected-note {{all data members of an anonymous union member are const-qualified}}
-    const int i;
-  };
-};
-bad_anon2 a2; // expected-error {{call to implicitly-deleted default constructor}}
-
-// This would be great except that we implement
-union good_union {
-  const int i;
-  float f;
-};
-good_union gu;
-struct good_anon {
-  union {
-    const int i;
-    float f;
-  };
-};
-good_anon ga;
-
-struct good : non_trivial {
-  non_trivial nt;
-};
-good g;
-
-struct bad_const {
-  const good g; // expected-note {{field 'g' of const-qualified type 'const good' would not be initialized}}
-};
-bad_const bc; // expected-error {{call to implicitly-deleted default constructor}}
-
-struct good_const {
-  const non_trivial nt;
-};
-good_const gc;
-
-struct no_default {
-  no_default() = delete; // expected-note 3{{deleted here}}
-};
-struct no_dtor {
-  ~no_dtor() = delete; // expected-note 2{{deleted here}}
-};
-
-struct bad_field_default {
-  no_default nd; // expected-note {{field 'nd' has a deleted default constructor}}
-};
-bad_field_default bfd; // expected-error {{call to implicitly-deleted default constructor}}
-struct bad_base_default : no_default { // expected-note {{base class 'no_default' has a deleted default constructor}}
-};
-bad_base_default bbd; // expected-error {{call to implicitly-deleted default constructor}}
-
-struct bad_field_dtor {
-  no_dtor nd; // expected-note {{field 'nd' has a deleted destructor}}
-};
-bad_field_dtor bfx; // expected-error {{call to implicitly-deleted default constructor}}
-struct bad_base_dtor : no_dtor { // expected-note {{base class 'no_dtor' has a deleted destructor}}
-};
-bad_base_dtor bbx; // expected-error {{call to implicitly-deleted default constructor}}
-
-struct ambiguous_default {
-  ambiguous_default();
-  ambiguous_default(int = 2);
-};
-struct has_amb_field {
-  ambiguous_default ad; // expected-note {{field 'ad' has multiple default constructors}}
-};
-has_amb_field haf; // expected-error {{call to implicitly-deleted default constructor}}
-
-class inaccessible_default {
-  inaccessible_default();
-};
-struct has_inacc_field {
-  inaccessible_default id; // expected-note {{field 'id' has an inaccessible default constructor}}
-};
-has_inacc_field hif; // expected-error {{call to implicitly-deleted default constructor}}
-
-class friend_default {
-  friend struct has_friend;
-  friend_default();
-};
-struct has_friend {
-  friend_default fd;
-};
-has_friend hf;
-
-struct defaulted_delete {
-  no_default nd; // expected-note {{because field 'nd' has a deleted default constructor}}
-  defaulted_delete() = default; // expected-note{{implicitly deleted here}}
-};
-defaulted_delete dd; // expected-error {{call to implicitly-deleted default constructor}}
-
-struct late_delete {
-  no_default nd;
-  late_delete();
-};
-late_delete::late_delete() = default; // expected-error {{would delete it}}
-
-// See also rdar://problem/8125400.
-namespace empty {
-  static union {};
-  static union { union {}; };
-  static union { struct {}; };
-  static union { union { union {}; }; };
-  static union { union { struct {}; }; };
-  static union { struct { union {}; }; };
-  static union { struct { struct {}; }; };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,132 +0,0 @@
-// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
-
-struct one { char c[1]; };
-struct two { char c[2]; };
-
-namespace aggregate {
-  // Direct list initialization does NOT allow braces to be elided!
-  struct S {
-    int ar[2];
-    struct T {
-      int i1;
-      int i2;
-    } t;
-    struct U {
-      int i1;
-    } u[2];
-    struct V {
-      int var[2];
-    } v;
-  };
-
-  void bracing() {
-    S s1 = { 1, 2, 3 ,4, 5, 6, 7, 8 }; // no-error
-    S s2{ {1, 2}, {3, 4}, { {5}, {6} }, { {7, 8} } }; // completely braced
-    S s3{ 1, 2, 3, 4, 5, 6 }; // expected-error 5 {{cannot omit braces}}
-    S s4{ {1, 2}, {3, 4}, {5, 6}, { {7, 8} } }; // expected-error 2 {{cannot omit braces}}
-    S s5{ {1, 2}, {3, 4}, { {5}, {6} }, {7, 8} }; // expected-error {{cannot omit braces}}
-  }
-
-  void bracing_new() {
-    new S{ {1, 2}, {3, 4}, { {5}, {6} }, { {7, 8} } }; // completely braced
-    new S{ 1, 2, 3, 4, 5, 6 }; // expected-error 5 {{cannot omit braces}}
-    new S{ {1, 2}, {3, 4}, {5, 6}, { {7, 8} } }; // expected-error 2 {{cannot omit braces}}
-    new S{ {1, 2}, {3, 4}, { {5}, {6} }, {7, 8} }; // expected-error {{cannot omit braces}}
-  }
-
-  void bracing_construct() {
-    (void) S{ {1, 2}, {3, 4}, { {5}, {6} }, { {7, 8} } }; // completely braced
-    (void) S{ 1, 2, 3, 4, 5, 6 }; // expected-error 5 {{cannot omit braces}}
-    (void) S{ {1, 2}, {3, 4}, {5, 6}, { {7, 8} } }; // expected-error 2 {{cannot omit braces}}
-    (void) S{ {1, 2}, {3, 4}, { {5}, {6} }, {7, 8} }; // expected-error {{cannot omit braces}}
-  }
-
-  struct String {
-    String(const char*);
-  };
-
-  struct A {
-    int m1;
-    int m2;
-  };
-
-  void function_call() {
-    void takes_A(A);
-    takes_A({1, 2});
-  }
-
-  struct B {
-    int m1;
-    String m2;
-  };
-
-  void overloaded_call() {
-    one overloaded(A);
-    two overloaded(B);
-
-    static_assert(sizeof(overloaded({1, 2})) == sizeof(one), "bad overload");
-    static_assert(sizeof(overloaded({1, "two"})) == sizeof(two),
-      "bad overload");
-    // String is not default-constructible
-    static_assert(sizeof(overloaded({1})) == sizeof(one), "bad overload");
-  }
-
-  struct C { int a[2]; C():a({1, 2}) { } }; // expected-error {{parenthesized initialization of a member array is a GNU extension}}
-}
-
-namespace array_explicit_conversion {
-  typedef int test1[2];
-  typedef int test2[];
-  template<int x> struct A { int a[x]; }; // expected-error {{'a' declared as an array with a negative size}}
-  typedef A<1> test3[];
-  typedef A<-1> test4[];
-  void f() {
-    (void)test1{1};
-    (void)test2{1};
-    (void)test3{{{1}}};
-    (void)test4{{{1}}}; // expected-note {{in instantiation of template class 'array_explicit_conversion::A<-1>' requested here}}
-  }
-}
-
-namespace sub_constructor {
-  struct DefaultConstructor { // expected-note 2 {{not viable}}
-    DefaultConstructor(); // expected-note  {{not viable}}
-    int x;
-  };
-  struct NoDefaultConstructor1 { // expected-note 2 {{not viable}}
-    NoDefaultConstructor1(int); // expected-note {{not viable}}
-    int x;
-  };
-  struct NoDefaultConstructor2 {  // expected-note 4 {{not viable}}
-    NoDefaultConstructor2(int,int); // expected-note 2 {{not viable}}
-    int x;
-  };
-
-  struct Aggr {
-    DefaultConstructor a;
-    NoDefaultConstructor1 b;
-    NoDefaultConstructor2 c;
-  };
-
-  Aggr ok1 { {}, {0} , {0,0} };
-  Aggr ok2 = { {}, {0} , {0,0} };
-  Aggr too_many { {0} , {0} , {0,0} }; // expected-error {{no matching constructor for initialization}}
-  Aggr too_few { {} , {0} , {0} }; // expected-error {{no matching constructor for initialization}}
-  Aggr invalid { {} , {&ok1} , {0,0} }; // expected-error {{no matching constructor for initialization}}
-  NoDefaultConstructor2 array_ok[] = { {0,0} , {0,1} };
-  NoDefaultConstructor2 array_error[] = { {0,0} , {0} }; // expected-error {{no matching constructor for initialization}}
-}
-
-namespace multidimensional_array {
-  void g(const int (&)[2][2]) {}
-  void g(const int (&)[2][2][2]) = delete;
-
-  void h() {
-    g({{1,2},{3,4}});
-  }
-}
-
-namespace array_addressof {
-  using T = int[5];
-  T *p = &T{1,2,3,4,5}; // expected-error {{taking the address of a temporary object of type 'T' (aka 'int [5]')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-constructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,367 +0,0 @@
-// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
-
-struct one { char c[1]; };
-struct two { char c[2]; };
-
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  // libc++'s implementation
-  template <class _E>
-  class initializer_list
-  {
-    const _E* __begin_;
-    size_t    __size_;
-
-    initializer_list(const _E* __b, size_t __s)
-      : __begin_(__b),
-        __size_(__s)
-    {}
-
-  public:
-    typedef _E        value_type;
-    typedef const _E& reference;
-    typedef const _E& const_reference;
-    typedef size_t    size_type;
-
-    typedef const _E* iterator;
-    typedef const _E* const_iterator;
-
-    initializer_list() : __begin_(nullptr), __size_(0) {}
-
-    size_t    size()  const {return __size_;}
-    const _E* begin() const {return __begin_;}
-    const _E* end()   const {return __begin_ + __size_;}
-  };
-}
-
-namespace objects {
-
-  struct X1 { X1(int); };
-  struct X2 { explicit X2(int); }; // expected-note {{constructor declared here}}
-
-  template <int N>
-  struct A {
-    A() { static_assert(N == 0, ""); }
-    A(int, double) { static_assert(N == 1, ""); }
-  };
-
-  template <int N>
-  struct F {
-    F() { static_assert(N == 0, ""); }
-    F(int, double) { static_assert(N == 1, ""); }
-    F(std::initializer_list<int>) { static_assert(N == 3, ""); }
-  };
-
-  template <int N>
-  struct D {
-    D(std::initializer_list<int>) { static_assert(N == 0, ""); } // expected-note 1 {{candidate}}
-    D(std::initializer_list<double>) { static_assert(N == 1, ""); } // expected-note 1 {{candidate}}
-  };
-
-  template <int N>
-  struct E {
-    E(int, int) { static_assert(N == 0, ""); }
-    E(X1, int) { static_assert(N == 1, ""); }
-  };
-
-  void overload_resolution() {
-    { A<0> a{}; }
-    { A<0> a = {}; }
-    { A<1> a{1, 1.0}; }
-    { A<1> a = {1, 1.0}; }
-
-    { F<0> f{}; }
-    { F<0> f = {}; }
-    // Narrowing conversions don't affect viability. The next two choose
-    // the initializer_list constructor.
-    { F<3> f{1, 1.0}; } // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}}
-    { F<3> f = {1, 1.0}; } // expected-error {{type 'double' cannot be narrowed to 'int' in initializer list}} expected-note {{override}}
-    { F<3> f{1, 2, 3, 4, 5, 6, 7, 8}; }
-    { F<3> f = {1, 2, 3, 4, 5, 6, 7, 8}; }
-    { F<3> f{1, 2, 3, 4, 5, 6, 7, 8}; }
-    { F<3> f{1, 2}; }
-
-    { D<0> d{1, 2, 3}; }
-    { D<1> d{1.0, 2.0, 3.0}; }
-    { D<-1> d{1, 2.0}; } // expected-error {{ambiguous}}
-
-    { E<0> e{1, 2}; }
-  }
-
-  void explicit_implicit() {
-    { X1 x{0}; }
-    { X1 x = {0}; }
-    { X2 x{0}; }
-    { X2 x = {0}; } // expected-error {{constructor is explicit}}
-  }
-
-  struct C {
-    C();
-    C(int, double);
-    C(int, int);
-
-    int operator[](C);
-  };
-
-  C function_call() {
-    void takes_C(C);
-    takes_C({1, 1.0});
-
-    C c;
-    c[{1, 1.0}];
-
-    return {1, 1.0};
-  }
-
-  void inline_init() {
-    (void) C{1, 1.0};
-    (void) new C{1, 1.0};
-    (void) A<1>{1, 1.0};
-    (void) new A<1>{1, 1.0};
-  }
-
-  struct B { // expected-note 2 {{candidate constructor}}
-    B(C, int, C); // expected-note {{candidate constructor not viable: cannot convert initializer list argument to 'objects::C'}}
-  };
-
-  void nested_init() {
-    B b1{{1, 1.0}, 2, {3, 4}};
-    B b2{{1, 1.0, 4}, 2, {3, 4}}; // expected-error {{no matching constructor for initialization of 'objects::B'}}
-  }
-
-  void overloaded_call() {
-    one ov1(B); // expected-note {{not viable: cannot convert initializer list}}
-    two ov1(C); // expected-note {{not viable: cannot convert initializer list}}
-
-    static_assert(sizeof(ov1({})) == sizeof(two), "bad overload");
-    static_assert(sizeof(ov1({1, 2})) == sizeof(two), "bad overload");
-    static_assert(sizeof(ov1({{1, 1.0}, 2, {3, 4}})) == sizeof(one), "bad overload");
-
-    ov1({1}); // expected-error {{no matching function}}
-
-    one ov2(int);
-    two ov2(F<3>);
-    static_assert(sizeof(ov2({1})) == sizeof(one), "bad overload"); // list -> int ranks as identity
-    static_assert(sizeof(ov2({1, 2, 3})) == sizeof(two), "bad overload"); // list -> F only viable
-  }
-
-  struct G { // expected-note 6 {{not viable}}
-    // This is not an initializer-list constructor.
-    template<typename ...T>
-    G(std::initializer_list<int>, T ...);  // expected-note 3 {{not viable}}
-  };
-
-  struct H { // expected-note 6 {{not viable}}
-    explicit H(int, int); // expected-note 3 {{not viable}} expected-note {{declared here}}
-    H(int, void*); // expected-note 3 {{not viable}}
-  };
-
-  void edge_cases() {
-    // invalid (the first phase only considers init-list ctors)
-    // (for the second phase, no constructor is viable)
-    G g1{1, 2, 3}; // expected-error {{no matching constructor}}
-    (void) new G{1, 2, 3}; // expected-error {{no matching constructor}}
-    (void) G{1, 2, 3} // expected-error {{no matching constructor}}
-
-    // valid (T deduced to <>).
-    G g2({1, 2, 3});
-    (void) new G({1, 2, 3});
-    (void) G({1, 2, 3});
-
-    // invalid
-    H h1({1, 2}); // expected-error {{no matching constructor}}
-    (void) new H({1, 2}); // expected-error {{no matching constructor}}
-    // FIXME: Bad diagnostic, mentions void type instead of init list.
-    (void) H({1, 2}); // expected-error {{no matching conversion}}
-
-    // valid (by copy constructor).
-    H h2({1, nullptr});
-    (void) new H({1, nullptr});
-    (void) H({1, nullptr});
-
-    // valid
-    H h3{1, 2};
-    (void) new H{1, 2};
-    (void) H{1, 2};
-  }
-
-  struct memberinit {
-    H h1{1, nullptr};
-    H h2 = {1, nullptr};
-    H h3{1, 1};
-    H h4 = {1, 1}; // expected-error {{constructor is explicit}}
-  };
-}
-
-namespace PR12092 {
-
-  struct S {
-    S(const char*);
-  };
-  struct V {
-    template<typename T> V(T, T);
-    void f(std::initializer_list<S>);
-    void f(const V &);
-  };
-
-  void g() {
-    extern V s;
-    s.f({"foo", "bar"});
-  }
-
-}
-
-namespace PR12117 {
-  struct A { A(int); }; 
-  struct B { B(A); } b{{0}};
-  struct C { C(int); } c{0};
-}
-
-namespace PR12167 {
-  template<int N> struct string {};
-
-  struct X {
-    X(const char v);
-    template<typename T> bool operator()(T) const;
-  };
-
-  template<int N, class Comparator> bool g(const string<N>& s, Comparator cmp) {
-    return cmp(s);
-  }
-  template<int N> bool f(const string<N> &s) {
-    return g(s, X{'x'});
-  }
-
-  bool s = f(string<1>());
-}
-
-namespace PR12257_PR12241 {
-  struct command_pair
-  {
-    command_pair(int, int);
-  };
-
-  struct command_map
-  {
-    command_map(std::initializer_list<command_pair>);
-  };
-
-  struct generator_pair
-  {
-    generator_pair(const command_map);
-  };
-
-  // 5 levels: init list, gen_pair, command_map, init list, command_pair
-  const std::initializer_list<generator_pair> x = {{{{{3, 4}}}}};
-
-  // 4 levels: init list, gen_pair, command_map via init list, command_pair
-  const std::initializer_list<generator_pair> y = {{{{1, 2}}}};
-}
-
-namespace PR12120 {
-  struct A { explicit A(int); A(float); }; // expected-note {{declared here}}
-  A a = { 0 }; // expected-error {{constructor is explicit}}
-
-  struct B { explicit B(short); B(long); }; // expected-note 2 {{candidate}}
-  B b = { 0 }; // expected-error {{ambiguous}}
-}
-
-namespace PR12498 {
-  class ArrayRef; // expected-note{{forward declaration}}
-
-  struct C {
-    void foo(const ArrayRef&); // expected-note{{passing argument to parameter here}}
-  };
-
-  static void bar(C* c)
-  {
-    c->foo({ nullptr, 1 }); // expected-error{{initialization of incomplete type 'const PR12498::ArrayRef'}}
-  }
-}
-
-namespace explicit_default {
-  struct A {
-    explicit A(); // expected-note{{here}}
-  };
-  A a {}; // ok
-  // This is copy-list-initialization, and we choose an explicit constructor
-  // (even though we do so via value-initialization), so the initialization is
-  // ill-formed.
-  A b = {}; // expected-error{{chosen constructor is explicit}}
-}
-
-namespace init_list_default {
-  struct A {
-    A(std::initializer_list<int>);
-  };
-  A a {}; // calls initializer list constructor
-
-  struct B {
-    B();
-    B(std::initializer_list<int>) = delete;
-  };
-  B b {}; // calls default constructor
-}
-
-
-// PR13470, <rdar://problem/11974632>
-namespace PR13470 {
-  struct W {
-    explicit W(int); // expected-note {{here}}
-  };
-
-  struct X {
-    X(const X&) = delete; // expected-note 3 {{here}}
-    X(int);
-  };
-
-  template<typename T, typename Fn> void call(Fn f) {
-    f({1}); // expected-error {{constructor is explicit}}
-    f(T{1}); // expected-error {{call to deleted constructor}}
-  }
-
-  void ref_w(const W &); // expected-note 2 {{not viable}}
-  void call_ref_w() {
-    ref_w({1}); // expected-error {{no matching function}}
-    ref_w(W{1});
-    call<W>(ref_w); // expected-note {{instantiation of}}
-  }
-
-  void ref_x(const X &);
-  void call_ref_x() {
-    ref_x({1});
-    ref_x(X{1});
-    call<X>(ref_x); // ok
-  }
-
-  void val_x(X); // expected-note 2 {{parameter}}
-  void call_val_x() {
-    val_x({1});
-    val_x(X{1}); // expected-error {{call to deleted constructor}}
-    call<X>(val_x); // expected-note {{instantiation of}}
-  }
-
-  template<typename T>
-  struct Y {
-    X x{1};
-    void f() { X x{1}; }
-    void h() {
-      ref_w({1}); // expected-error {{no matching function}}
-      ref_w(W{1});
-      ref_x({1});
-      ref_x(X{1});
-      val_x({1});
-      val_x(X{1}); // expected-error {{call to deleted constructor}}
-    }
-    Y() {}
-    Y(int) : x{1} {}
-  };
-
-  Y<int> yi;
-  Y<int> yi2(0);
-  void g() {
-    yi.f();
-    yi.h(); // ok, all diagnostics produced in template definition
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-references.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-references.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-references.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct one { char c; };
-struct two { char c[2]; };
-
-namespace reference {
-  struct A {
-    int i1, i2;
-  };
-
-  void single_init() {
-    const int &cri1a = {1};
-    const int &cri1b{1};
-
-    int i = 1;
-    int &ri1a = {i};
-    int &ri1b{i};
-
-    int &ri2 = {1}; // expected-error {{cannot bind to an initializer list temporary}}
-
-    A a{1, 2};
-    A &ra1a = {a};
-    A &ra1b{a};
-  }
-
-  void reference_to_aggregate() {
-    const A &ra1{1, 2};
-    A &ra2{1, 2}; // expected-error {{cannot bind to an initializer list temporary}}
-
-    const int (&arrayRef)[] = {1, 2, 3};
-    static_assert(sizeof(arrayRef) == 3 * sizeof(int), "bad array size");
-  }
-
-  struct B {
-    int i1;
-  };
-
-  void call() {
-    void f(const int&);
-    f({1});
-
-    void g(int&); // expected-note {{passing argument}}
-    g({1}); // expected-error {{cannot bind to an initializer list temporary}}
-    int i = 0;
-    g({i});
-
-    void h(const B&);
-    h({1});
-
-    void a(B&); // expected-note {{passing argument}}
-    a({1}); // expected-error {{cannot bind to an initializer list temporary}}
-    B b{1};
-    a({b});
-  }
-
-  void overloading() {
-    one f(const int&);
-    two f(const B&);
-
-    // First is identity conversion, second is user-defined conversion.
-    static_assert(sizeof(f({1})) == sizeof(one), "bad overload resolution");
-
-    one g(int&);
-    two g(const B&);
-
-    static_assert(sizeof(g({1})) == sizeof(two), "bad overload resolution");
-
-    one h(const int&);
-    two h(const A&);
-
-    static_assert(sizeof(h({1, 2})) == sizeof(two), "bad overload resolution");
-  }
-
-  void edge_cases() {
-    // FIXME: very poor error message
-    int const &b({0}); // expected-error {{could not bind}}
-  }
-
-}
-
-namespace PR12182 {
-  void f(int const(&)[3]);
-
-  void g() {
-      f({1, 2});
-  }
-}
-
-namespace PR12660 {
-  const int &i { 1 };
-  struct S { S(int); } const &s { 2 };
-}
-
-namespace b7891773 {
-  typedef void (*ptr)();
-  template <class T> void f();
-  int g(const ptr &);
-  int k = g({ f<int> });
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-scalars.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-scalars.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-scalars.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct one { char c[1]; };
-struct two { char c[2]; };
-
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  // libc++'s implementation
-  template <class _E>
-  class initializer_list
-  {
-    const _E* __begin_;
-    size_t    __size_;
-
-    initializer_list(const _E* __b, size_t __s)
-      : __begin_(__b),
-        __size_(__s)
-    {}
-
-  public:
-    typedef _E        value_type;
-    typedef const _E& reference;
-    typedef const _E& const_reference;
-    typedef size_t    size_type;
-
-    typedef const _E* iterator;
-    typedef const _E* const_iterator;
-
-    initializer_list() : __begin_(nullptr), __size_(0) {}
-
-    size_t    size()  const {return __size_;}
-    const _E* begin() const {return __begin_;}
-    const _E* end()   const {return __begin_ + __size_;}
-  };
-}
-
-namespace integral {
-
-  void initialization() {
-    { const int a{}; static_assert(a == 0, ""); }
-    { const int a = {}; static_assert(a == 0, ""); }
-    { const int a{1}; static_assert(a == 1, ""); }
-    { const int a = {1}; static_assert(a == 1, ""); }
-    { const int a{1, 2}; } // expected-error {{excess elements}}
-    { const int a = {1, 2}; } // expected-error {{excess elements}}
-    // FIXME: Redundant warnings.
-    { const short a{100000}; } // expected-error {{cannot be narrowed}} expected-note {{inserting an explicit cast}} expected-warning {{changes value}}
-    { const short a = {100000}; } // expected-error {{cannot be narrowed}} expected-note {{inserting an explicit cast}} expected-warning {{changes value}}
-    { if (const int a{1}) static_assert(a == 1, ""); }
-    { if (const int a = {1}) static_assert(a == 1, ""); }
-  }
-
-  int direct_usage() {
-    int ar[10];
-    (void) ar[{1}]; // expected-error {{array subscript is not an integer}}
-
-    return {1};
-  }
-
-  void inline_init() {
-    auto v = int{1};
-    (void) new int{1};
-  }
-
-  struct A {
-    int i;
-    A() : i{1} {}
-  };
-
-  void function_call() {
-    void takes_int(int);
-    takes_int({1});
-  }
-
-  void overloaded_call() {
-    one overloaded(int);
-    two overloaded(double);
-
-    static_assert(sizeof(overloaded({0})) == sizeof(one), "bad overload");
-    static_assert(sizeof(overloaded({0.0})) == sizeof(two), "bad overload");
-
-    void ambiguous(int, double); // expected-note {{candidate}}
-    void ambiguous(double, int); // expected-note {{candidate}}
-    ambiguous({0}, {0}); // expected-error {{ambiguous}}
-
-    void emptylist(int);
-    void emptylist(int, int, int);
-    emptylist({});
-    emptylist({}, {}, {});
-  }
-
-  void edge_cases() {
-    // FIXME: very poor error message
-    int a({0}); // expected-error {{cannot initialize}}
-    (void) int({0}); // expected-error {{functional-style cast}}
-    new int({0});  // expected-error {{cannot initialize}}
-  }
-
-  void default_argument(int i = {}) {
-  }
-  struct DefaultArgument {
-    void default_argument(int i = {}) {
-    }
-  };
-}
-
-namespace PR12118 {
-  void test() {
-    one f(std::initializer_list<int>); 
-    two f(int); 
-
-    // to initializer_list is preferred
-    static_assert(sizeof(f({0})) == sizeof(one), "bad overload");
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,210 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// This must obviously come before the definition of std::initializer_list.
-void missing_initializerlist() {
-  auto l = {1, 2, 3, 4}; // expected-error {{std::initializer_list was not found}}
-}
-
-namespace std {
-  typedef decltype(sizeof(int)) size_t;
-
-  // libc++'s implementation
-  template <class _E>
-  class initializer_list
-  {
-    const _E* __begin_;
-    size_t    __size_;
-
-    initializer_list(const _E* __b, size_t __s)
-      : __begin_(__b),
-        __size_(__s)
-    {}
-
-  public:
-    typedef _E        value_type;
-    typedef const _E& reference;
-    typedef const _E& const_reference;
-    typedef size_t    size_type;
-
-    typedef const _E* iterator;
-    typedef const _E* const_iterator;
-
-    initializer_list() : __begin_(nullptr), __size_(0) {}
-
-    size_t    size()  const {return __size_;}
-    const _E* begin() const {return __begin_;}
-    const _E* end()   const {return __begin_ + __size_;}
-  };
-}
-
-template <typename T, typename U>
-struct same_type { static const bool value = false; };
-template <typename T>
-struct same_type<T, T> { static const bool value = true; };
-
-struct one { char c[1]; };
-struct two { char c[2]; };
-
-struct A {
-  int a, b;
-};
-
-struct B {
-  B();
-  B(int, int);
-};
-
-void simple_list() {
-  std::initializer_list<int> il = { 1, 2, 3 };
-  std::initializer_list<double> dl = { 1.0, 2.0, 3 };
-  std::initializer_list<A> al = { {1, 2}, {2, 3}, {3, 4} };
-  std::initializer_list<B> bl = { {1, 2}, {2, 3}, {} };
-}
-
-void function_call() {
-  void f(std::initializer_list<int>);
-  f({1, 2, 3});
-
-  void g(std::initializer_list<B>);
-  g({ {1, 2}, {2, 3}, {} });
-}
-
-struct C {
-  C(int);
-};
-
-struct D {
-  D();
-  operator int();
-  operator C();
-};
-
-void overloaded_call() {
-    one overloaded(std::initializer_list<int>);
-    two overloaded(std::initializer_list<B>);
-
-    static_assert(sizeof(overloaded({1, 2, 3})) == sizeof(one), "bad overload");
-    static_assert(sizeof(overloaded({ {1, 2}, {2, 3}, {} })) == sizeof(two), "bad overload");
-
-    void ambiguous(std::initializer_list<A>); // expected-note {{candidate}}
-    void ambiguous(std::initializer_list<B>); // expected-note {{candidate}}
-    ambiguous({ {1, 2}, {2, 3}, {3, 4} }); // expected-error {{ambiguous}}
-
-    one ov2(std::initializer_list<int>); // expected-note {{candidate}}
-    two ov2(std::initializer_list<C>); // expected-note {{candidate}}
-    // Worst sequence to int is identity, whereas to C it's user-defined.
-    static_assert(sizeof(ov2({1, 2, 3})) == sizeof(one), "bad overload");
-    // But here, user-defined is worst in both cases.
-    ov2({1, 2, D()}); // expected-error {{ambiguous}}
-}
-
-template <typename T>
-T deduce(std::initializer_list<T>); // expected-note {{conflicting types for parameter 'T' ('int' vs. 'double')}}
-template <typename T>
-T deduce_ref(const std::initializer_list<T>&); // expected-note {{conflicting types for parameter 'T' ('int' vs. 'double')}}
-
-void argument_deduction() {
-  static_assert(same_type<decltype(deduce({1, 2, 3})), int>::value, "bad deduction");
-  static_assert(same_type<decltype(deduce({1.0, 2.0, 3.0})), double>::value, "bad deduction");
-
-  deduce({1, 2.0}); // expected-error {{no matching function}}
-
-  static_assert(same_type<decltype(deduce_ref({1, 2, 3})), int>::value, "bad deduction");
-  static_assert(same_type<decltype(deduce_ref({1.0, 2.0, 3.0})), double>::value, "bad deduction");
-
-  deduce_ref({1, 2.0}); // expected-error {{no matching function}}
-}
-
-void auto_deduction() {
-  auto l = {1, 2, 3, 4};
-  static_assert(same_type<decltype(l), std::initializer_list<int>>::value, "");
-  auto bl = {1, 2.0}; // expected-error {{cannot deduce}}
-
-  for (int i : {1, 2, 3, 4}) {}
-}
-
-void dangle() {
-  new auto{1, 2, 3}; // expected-error {{cannot use list-initialization}}
-  new std::initializer_list<int>{1, 2, 3}; // expected-warning {{at the end of the full-expression}}
-}
-
-struct haslist1 {
-  std::initializer_list<int> il = {1, 2, 3}; // expected-warning{{at the end of the constructor}}
-  std::initializer_list<int> jl{1, 2, 3}; // expected-warning{{at the end of the constructor}}
-  haslist1();
-};
-
-haslist1::haslist1()
-: il{1, 2, 3} // expected-warning{{at the end of the constructor}}
-{}
-
-namespace PR12119 {
-  // Deduction with nested initializer lists.
-  template<typename T> void f(std::initializer_list<T>);
-  template<typename T> void g(std::initializer_list<std::initializer_list<T>>);
-
-  void foo() {
-    f({0, {1}});
-    g({{0, 1}, {2, 3}});
-    std::initializer_list<int> il = {1, 2};
-    g({il, {2, 3}});
-  }
-}
-
-namespace Decay {
-  template<typename T>
-  void f(std::initializer_list<T>) {
-    T x = 1; // expected-error{{cannot initialize a variable of type 'const char *' with an rvalue of type 'int'}}
-  }
-
-  void g() {
-    f({"A", "BB", "CCC"}); // expected-note{{in instantiation of function template specialization 'Decay::f<const char *>' requested here}}
-
-    auto x = { "A", "BB", "CCC" };
-    std::initializer_list<const char *> *il = &x;
-
-    for( auto s : {"A", "BB", "CCC", "DDD"}) { }
-  }
-}
-
-namespace PR12436 {
-  struct X {
-    template<typename T>
-    X(std::initializer_list<int>, T);
-  };
-  
-  X x({}, 17);
-}
-
-namespace rdar11948732 {
-  template<typename T> struct X {};
-
-  struct XCtorInit {
-    XCtorInit(std::initializer_list<X<int>>);
-  };
-
-  void f(X<int> &xi) {
-    XCtorInit xc = { xi, xi };
-  }
-}
-
-namespace PR14272 {
-  auto x { { 0, 0 } }; // expected-error {{cannot deduce actual type for variable 'x' with type 'auto' from initializer list}}
-}
-
-namespace initlist_of_array {
-  void f(std::initializer_list<int[2]>) {}
-  void f(std::initializer_list<int[2][2]>) = delete;
-  void h() {
-    f({{1,2},{3,4}});
-  }
-}
-
-namespace init_list_deduction_failure {
-  void f();
-  void f(int);
-  template<typename T> void g(std::initializer_list<T>);
-  // expected-note at -1 {{candidate template ignored: couldn't resolve reference to overloaded function 'f'}}
-  void h() { g({f}); }
-  // expected-error at -1 {{no matching function for call to 'g'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-nontrivial-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-nontrivial-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-nontrivial-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,124 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct non_trivial {
-  non_trivial();
-  non_trivial(const non_trivial&);
-  non_trivial& operator = (const non_trivial&);
-  ~non_trivial();
-};
-
-union u {
-  non_trivial nt;
-};
-union u2 {
-  non_trivial nt;
-  int k;
-  u2(int k) : k(k) {}
-  u2() : nt() {}
-};
-
-union static_data_member {
-  static int i;
-};
-int static_data_member::i;
-
-union bad {
-  int &i; // expected-error {{union member 'i' has reference type 'int &'}}
-};
-
-struct s {
-  union {
-    non_trivial nt;
-  };
-};
-
-// Don't crash on this.
-struct TemplateCtor { template<typename T> TemplateCtor(T); };
-union TemplateCtorMember { TemplateCtor s; };
-
-template<typename T> struct remove_ref { typedef T type; };
-template<typename T> struct remove_ref<T&> { typedef T type; };
-template<typename T> struct remove_ref<T&&> { typedef T type; };
-template<typename T> T &&forward(typename remove_ref<T>::type &&t);
-template<typename T> T &&forward(typename remove_ref<T>::type &t);
-template<typename T> typename remove_ref<T>::type &&move(T &&t);
-
-using size_t = decltype(sizeof(int));
-void *operator new(size_t, void *p) noexcept { return p; }
-
-namespace disabled_dtor {
-  template<typename T>
-  union disable_dtor {
-    T val;
-    template<typename...U>
-    disable_dtor(U &&...u) : val(forward<U>(u)...) {}
-    ~disable_dtor() {}
-  };
-
-  struct deleted_dtor {
-    deleted_dtor(int n, char c) : n(n), c(c) {}
-    int n;
-    char c;
-    ~deleted_dtor() = delete;
-  };
-
-  disable_dtor<deleted_dtor> dd(4, 'x');
-}
-
-namespace optional {
-  template<typename T> struct optional {
-    bool has;
-    union { T value; };
-
-    optional() : has(false) {}
-    template<typename...U>
-    optional(U &&...u) : has(true), value(forward<U>(u)...) {}
-
-    optional(const optional &o) : has(o.has) {
-      if (has) new (&value) T(o.value);
-    }
-    optional(optional &&o) : has(o.has) {
-      if (has) new (&value) T(move(o.value));
-    }
-
-    optional &operator=(const optional &o) {
-      if (has) {
-        if (o.has)
-          value = o.value;
-        else
-          value.~T();
-      } else if (o.has) {
-        new (&value) T(o.value);
-      }
-      has = o.has;
-    }
-    optional &operator=(optional &&o) {
-      if (has) {
-        if (o.has)
-          value = move(o.value);
-        else
-          value.~T();
-      } else if (o.has) {
-        new (&value) T(move(o.value));
-      }
-      has = o.has;
-    }
-
-    ~optional() {
-      if (has)
-        value.~T();
-    }
-
-    explicit operator bool() const { return has; }
-    T &operator*() const { return value; }
-  };
-
-  optional<non_trivial> o1;
-  optional<non_trivial> o2{non_trivial()};
-  optional<non_trivial> o3{*o2};
-  void f() {
-    if (o2)
-      o1 = o2;
-    o2 = optional<non_trivial>();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-return-init-list.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-return-init-list.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-return-init-list.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Test that a very basic variation of generalized initializer returns (that
-// required for libstdc++ 4.5) is supported in C++98.
-
-int test0(int i) {
-  return { i }; // expected-warning{{generalized initializer lists are a C++11 extension}}
-}
-
-template<typename T, typename U>
-T test1(U u) {
-  return { u }; // expected-warning{{generalized initializer lists are a C++11 extension}}
-}
-
-template int test1(char);
-template long test1(int);

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-type-convert-construct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-type-convert-construct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx0x-type-convert-construct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -std=gnu++11 -fsyntax-only -verify %s 
-
-void f() {
-  char *u8str;
-  u8str = u8"a UTF-8 string"; // expected-error {{assigning to 'char *' from incompatible type 'const char [15]'}}
-  char16_t *ustr;
-  ustr = u"a UTF-16 string"; // expected-error {{assigning to 'char16_t *' from incompatible type 'const char16_t [16]'}}
-  char32_t *Ustr;
-  Ustr = U"a UTF-32 string"; // expected-error {{assigning to 'char32_t *' from incompatible type 'const char32_t [16]'}}
-
-  char *Rstr;
-  Rstr = R"foo(a raw string)foo"; // expected-warning{{conversion from string literal to 'char *' is deprecated}}
-  wchar_t *LRstr;
-  LRstr = LR"foo(a wide raw string)foo"; // expected-warning{{conversion from string literal to 'wchar_t *' is deprecated}}
-  char *u8Rstr;
-  u8Rstr = u8R"foo(a UTF-8 raw string)foo"; // expected-error {{assigning to 'char *' from incompatible type 'const char [19]'}}
-  char16_t *uRstr;
-  uRstr = uR"foo(a UTF-16 raw string)foo"; // expected-error {{assigning to 'char16_t *' from incompatible type 'const char16_t [20]'}}
-  char32_t *URstr;
-  URstr = UR"foo(a UTF-32 raw string)foo"; // expected-error {{assigning to 'char32_t *' from incompatible type 'const char32_t [20]'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-ast-print.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-ast-print.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-ast-print.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -ast-print %s | FileCheck %s
-
-// CHECK: auto operator "" _foo(const char *p, decltype(sizeof(int))) -> decltype(nullptr);
-auto operator"" _foo(const char *p, decltype(sizeof(int))) -> decltype(nullptr);
-
-// CHECK: decltype(""_foo) operator "" _bar(unsigned long long);
-decltype(""_foo) operator"" _bar(unsigned long long);
-
-// CHECK: decltype(42_bar) operator "" _baz(long double);
-decltype(42_bar) operator"" _baz(long double);
-
-// CHECK: decltype(4.5_baz) operator "" _baz(char);
-decltype(4.5_baz) operator"" _baz(char);
-
-// CHECK: const char *operator "" _quux(const char *);
-const char *operator"" _quux(const char *);
-
-// CHECK: template <char...> const char *operator "" _fritz();
-template<char...> const char *operator"" _fritz();
-
-// CHECK: const char *p1 = "bar1"_foo;
-const char *p1 = "bar1"_foo;
-// CHECK: const char *p2 = "bar2"_foo;
-const char *p2 = R"x(bar2)x"_foo;
-// CHECK: const char *p3 = u8"bar3"_foo;
-const char *p3 = u8"bar3"_foo;
-// CHECK: const char *p4 = 297_bar;
-const char *p4 = 0x129_bar;
-// CHECK: const char *p5 = 1.0E+12_baz;
-const char *p5 = 1e12_baz;
-// CHECK: const char *p6 = 'x'_baz;
-const char *p6 = 'x'_baz;
-// CHECK: const char *p7 = 123_quux;
-const char *p7 = 123_quux;
-// CHECK: const char *p8 = 4.9_quux;
-const char *p8 = 4.9_quux;
-// CHECK: const char *p9 = 0x42e3F_fritz;
-const char *p9 = 0x42e3F_fritz;
-// CHECK: const char *p10 = 3.300e+15_fritz;
-const char *p10 = 3.300e+15_fritz;
-// CHECK: ;
-;
-// CHECK-NOT: ;
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-attr-print.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-attr-print.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-attr-print.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -ast-print -fms-extensions %s | FileCheck %s
-//
-// CHECK: int x __attribute__((aligned(4)));
-int x __attribute__((aligned(4)));
-
-// FIXME: Print this at a valid location for a __declspec attr.
-// CHECK: int y __declspec(align(4));
-__declspec(align(4)) int y;
-
-// CHECK: int z {{\[}}[gnu::aligned(4)]];
-int z [[gnu::aligned(4)]];
-
-// CHECK: __attribute__((deprecated("warning")));
-int a __attribute__((deprecated("warning")));
-
-// CHECK: int b {{\[}}[gnu::deprecated("warning")]];
-int b [[gnu::deprecated("warning")]];
-
-// CHECK: int cxx11_alignas alignas(4);
-alignas(4) int cxx11_alignas;
-
-// CHECK: int c11_alignas _Alignas(alignof(int));
-_Alignas(int) int c11_alignas;
-
-// CHECK: void foo() __attribute__((const));
-void foo() __attribute__((const));
-
-// CHECK: void bar() __attribute__((__const));
-void bar() __attribute__((__const));
-
-// CHECK: int f1() __attribute__((warn_unused_result));
-int f1() __attribute__((warn_unused_result));
-
-// CHECK: {{\[}}[clang::warn_unused_result]];
-int f2 [[clang::warn_unused_result]] ();
-
-// CHECK: {{\[}}[gnu::warn_unused_result]];
-int f3 [[gnu::warn_unused_result]] ();
-
-// FIXME: ast-print need to print C++11
-// attribute after function declare-id.
-// CHECK: {{\[}}[noreturn]];
-void f4 [[noreturn]] ();
-
-// CHECK: {{\[}}[std::noreturn]];
-void f5 [[std::noreturn]] ();
-
-// CHECK: __attribute__((gnu_inline));
-inline void f6() __attribute__((gnu_inline));
-
-// CHECK: {{\[}}[gnu::gnu_inline]];
-inline void f7 [[gnu::gnu_inline]] ();
-
-// arguments printing
-// CHECK: __attribute__((format("printf", 2, 3)));
-void f8 (void *, const char *, ...) __attribute__ ((format (printf, 2, 3)));
-
-// CHECK: int m __attribute__((aligned(4
-// CHECK: int n alignas(4
-// CHECK: static int f() __attribute__((pure))
-// CHECK: static int g() {{\[}}[gnu::pure]]
-template <typename T> struct S {
-  __attribute__((aligned(4))) int m;
-  alignas(4) int n;
-  __attribute__((pure)) static int f() {
-    return 0;
-  }
-  [[gnu::pure]] static int g() {
-    return 1;
-  }
-};
-
-// CHECK: int m __attribute__((aligned(4
-// CHECK: int n alignas(4
-// CHECK: static int f() __attribute__((pure))
-// CHECK: static int g() {{\[}}[gnu::pure]]
-template struct S<int>;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-crashes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-crashes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-crashes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// rdar://12240916 stack overflow.
-namespace rdar12240916 {
-
-struct S2 {
-  S2(const S2&);
-  S2();
-};
-
-struct S { // expected-note {{not complete}}
-  S x; // expected-error {{incomplete type}}
-  S2 y;
-};
-
-S foo() {
-  S s;
-  return s;
-}
-
-struct S3; // expected-note {{forward declaration}}
-
-struct S4 {
-  S3 x; // expected-error {{incomplete type}}
-  S2 y;
-};
-
-struct S3 {
-  S4 x;
-  S2 y;
-};
-
-S4 foo2() {
-  S4 s;
-  return s;
-}
-
-}
-
-// rdar://12542261 stack overflow.
-namespace rdar12542261 {
-
-template <class _Tp>
-struct check_complete
-{
-  static_assert(sizeof(_Tp) > 0, "Type must be complete.");
-};
-
-
-template<class _Rp>
-class function // expected-note 2 {{candidate}}
-{
-public:
-  template<class _Fp>
-  function(_Fp, typename check_complete<_Fp>::type* = 0);  // expected-note {{candidate}}
-};
-
-void foobar()
-{
-  auto LeftCanvas = new Canvas(); // expected-error {{unknown type name}}
-  function<void()> m_OnChange = [&, LeftCanvas]() { }; // expected-error {{no viable conversion}}
-}
-
-}
-
-namespace b6981007 {
-  struct S {}; // expected-note 3{{candidate}}
-  void f() {
-    S s(1, 2, 3); // expected-error {{no matching}}
-    for (auto x : s) {
-      // We used to attempt to evaluate the initializer of this variable,
-      // and crash because it has an undeduced type.
-      // FIXME: We should set the loop variable to be invalid if we can't build
-      // the loop, to suppress this follow-on error.
-      const int &n(x); // expected-error {{could not bind to an lvalue of type 'auto'}}
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-gnu-attrs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-gnu-attrs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-gnu-attrs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang -cc1 -triple x86_64-unknown-unknown -std=c++11 -verify %s
-
-// Error cases.
-
-[[gnu::this_attribute_does_not_exist]] int unknown_attr;
-// expected-warning at -1 {{unknown attribute 'this_attribute_does_not_exist' ignored}}
-int [[gnu::unused]] attr_on_type;
-// expected-error at -1 {{'unused' attribute cannot be applied to types}}
-int *[[gnu::unused]] attr_on_ptr;
-// expected-warning at -1 {{attribute 'unused' ignored, because it cannot be applied to a type}}
-
-// Valid cases.
-
-void alias1() {}
-void alias2 [[gnu::alias("_Z6alias1v")]] ();
-
-[[gnu::aligned(8)]] int aligned;
-void aligned_fn [[gnu::aligned(32)]] ();
-struct [[gnu::aligned(8)]] aligned_struct {};
-
-[[gnu::malloc, gnu::alloc_size(1,2)]] void *alloc_size(int a, int b);
-
-void always_inline [[gnu::always_inline]] ();
-
-__thread int tls_model [[gnu::tls_model("local-exec")]];
-
-void cleanup(int *p) {
-  int n [[gnu::cleanup(cleanup)]];
-}
-
-void deprecated1 [[gnu::deprecated]] (); // expected-note {{here}}
-[[gnu::deprecated("custom message")]] void deprecated2(); // expected-note {{here}}
-void deprecated3() {
-  deprecated1(); // expected-warning {{deprecated}}
-  deprecated2(); // expected-warning {{custom message}}
-}
-
-[[gnu::naked(1,2,3)]] void naked(); // expected-error {{takes no arguments}}
-
-void nonnull [[gnu::nonnull]] (); // expected-warning {{applied to function with no pointer arguments}}
-
-// [[gnu::noreturn]] appertains to a declaration, and marks the innermost
-// function declarator in that declaration as being noreturn.
-int noreturn [[gnu::noreturn]]; // expected-warning {{'noreturn' only applies to function types}}
-int noreturn_fn_1();
-int noreturn_fn_2() [[gnu::noreturn]]; // expected-warning {{cannot be applied to a type}}
-int noreturn_fn_3 [[gnu::noreturn]] ();
-[[gnu::noreturn]] int noreturn_fn_4();
-int (*noreturn_fn_ptr_1 [[gnu::noreturn]])() = &noreturn_fn_1; // expected-error {{cannot initialize}}
-int (*noreturn_fn_ptr_2 [[gnu::noreturn]])() = &noreturn_fn_3;
-[[gnu::noreturn]] int (*noreturn_fn_ptr_3)() = &noreturn_fn_1; // expected-error {{cannot initialize}}
-[[gnu::noreturn]] int (*noreturn_fn_ptr_4)() = &noreturn_fn_3;
-
-struct [[gnu::packed]] packed { char c; int n; };
-static_assert(sizeof(packed) == sizeof(char) + sizeof(int), "not packed");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-inheriting-ctors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-inheriting-ctors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-inheriting-ctors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-
-// expected-no-diagnostics
-
-namespace PR15757 {
-  struct S {
-  };
-
-  template<typename X, typename Y> struct T {
-    template<typename A> T(X x, A &&a) {}
-
-    template<typename A> explicit T(A &&a)
-        noexcept(noexcept(T(X(), static_cast<A &&>(a))))
-      : T(X(), static_cast<A &&>(a)) {}
-  };
-
-  template<typename X, typename Y> struct U : T<X, Y> {
-    using T<X, Y>::T;
-  };
-
-  U<S, char> foo(char ch) { return U<S, char>(ch); }
-
-  int main() {
-    U<S, int> a(42);
-    U<S, char> b('4');
-    return 0;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-thread-local-print.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-thread-local-print.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-thread-local-print.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple=x86_64-linux-gnu -ast-print %s | FileCheck %s
-
-// CHECK: __thread int gnu_tl;
-// CHECK: _Thread_local int c11_tl;
-// CHECK: thread_local int cxx11_tl;
-__thread int gnu_tl;
-_Thread_local int c11_tl;
-thread_local int cxx11_tl;
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-thread-local.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-thread-local.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-thread-local.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -triple=x86_64-linux-gnu -verify %s
-
-struct S {
-  static thread_local int a;
-  static int b; // expected-note {{here}}
-  thread_local int c; // expected-error {{'thread_local' is only allowed on variable declarations}}
-  static thread_local int d; // expected-note {{here}}
-};
-
-thread_local int S::a;
-thread_local int S::b; // expected-error {{thread-local declaration of 'b' follows non-thread-local declaration}}
-thread_local int S::c; // expected-error {{non-static data member defined out-of-line}}
-int S::d; // expected-error {{non-thread-local declaration of 'd' follows thread-local declaration}}
-
-thread_local int x[3];
-thread_local int y[3];
-thread_local int z[3]; // expected-note {{previous}}
-
-void f() {
-  thread_local int x;
-  static thread_local int y;
-  extern thread_local int z; // expected-error {{redefinition of 'z' with a different type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-user-defined-literals-unused.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-user-defined-literals-unused.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-user-defined-literals-unused.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s -Wunused
-
-namespace {
-double operator"" _x(long double value) { return double(value); }
-int operator"" _ii(long double value) { return int(value); } // expected-warning {{not needed and will not be emitted}}
-}
-
-namespace rdar13589856 {
-  template<class T> double value() { return 3.2_x; }
-  template<class T> int valuei() { return 3.2_ii; }
-
-  double get_value() { return value<double>(); }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-user-defined-literals.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-user-defined-literals.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx11-user-defined-literals.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,143 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s -fms-extensions -triple x86_64-apple-darwin9.0.0
-
-using size_t = decltype(sizeof(int));
-enum class LitKind {
-  Char, WideChar, Char16, Char32,
-  CharStr, WideStr, Char16Str, Char32Str,
-  Integer, Floating, Raw, Template
-};
-constexpr LitKind operator"" _kind(char p) { return LitKind::Char; }
-constexpr LitKind operator"" _kind(wchar_t p) { return LitKind::WideChar; }
-constexpr LitKind operator"" _kind(char16_t p) { return LitKind::Char16; }
-constexpr LitKind operator"" _kind(char32_t p) { return LitKind::Char32; }
-constexpr LitKind operator"" _kind(const char *p, size_t n) { return LitKind::CharStr; }
-constexpr LitKind operator"" _kind(const wchar_t *p, size_t n) { return LitKind::WideStr; }
-constexpr LitKind operator"" _kind(const char16_t *p, size_t n) { return LitKind::Char16Str; }
-constexpr LitKind operator"" _kind(const char32_t *p, size_t n) { return LitKind::Char32Str; }
-constexpr LitKind operator"" _kind(unsigned long long n) { return LitKind::Integer; }
-constexpr LitKind operator"" _kind(long double n) { return LitKind::Floating; }
-constexpr LitKind operator"" _kind2(const char *p) { return LitKind::Raw; }
-template<char ...Cs> constexpr LitKind operator"" _kind3() { return LitKind::Template; }
-
-static_assert('x'_kind == LitKind::Char, "");
-static_assert(L'x'_kind == LitKind::WideChar, "");
-static_assert(u'x'_kind == LitKind::Char16, "");
-static_assert(U'x'_kind == LitKind::Char32, "");
-static_assert("foo"_kind == LitKind::CharStr, "");
-static_assert(u8"foo"_kind == LitKind::CharStr, "");
-static_assert(L"foo"_kind == LitKind::WideStr, "");
-static_assert(u"foo"_kind == LitKind::Char16Str, "");
-static_assert(U"foo"_kind == LitKind::Char32Str, "");
-static_assert(194_kind == LitKind::Integer, "");
-static_assert(0377_kind == LitKind::Integer, "");
-static_assert(0x5ffc_kind == LitKind::Integer, "");
-static_assert(.5954_kind == LitKind::Floating, "");
-static_assert(1._kind == LitKind::Floating, "");
-static_assert(1.e-2_kind == LitKind::Floating, "");
-static_assert(4e6_kind == LitKind::Floating, "");
-static_assert(4e6_kind2 == LitKind::Raw, "");
-static_assert(4e6_kind3 == LitKind::Template, "");
-
-constexpr const char *fractional_digits_impl(const char *p) {
-  return *p == '.' ? p + 1 : *p ? fractional_digits_impl(p + 1) : 0;
-}
-constexpr const char *operator"" _fractional_digits(const char *p) {
-  return fractional_digits_impl(p) ?: p;
-}
-constexpr bool streq(const char *p, const char *q) {
-  return *p == *q && (!*p || streq(p+1, q+1));
-}
-
-static_assert(streq(143.97_fractional_digits, "97"), "");
-static_assert(streq(0x786_fractional_digits, "0x786"), "");
-static_assert(streq(.4_fractional_digits, "4"), "");
-static_assert(streq(4._fractional_digits, ""), "");
-static_assert(streq(1e+97_fractional_digits, "1e+97"), "");
-static_assert(streq(0377_fractional_digits, "0377"), "");
-static_assert(streq(0377.5_fractional_digits, "5"), "");
-
-int operator"" _ambiguous(char); // expected-note {{candidate}}
-namespace N {
-  void *operator"" _ambiguous(char); // expected-note {{candidate}}
-}
-using namespace N;
-int k = 'x'_ambiguous; // expected-error {{ambiguous}}
-
-int operator"" _deleted(unsigned long long) = delete; // expected-note {{here}}
-int m = 42_deleted; // expected-error {{attempt to use a deleted}}
-
-namespace Using {
-  namespace M {
-    int operator"" _using(char);
-  }
-  int k1 = 'x'_using; // expected-error {{no matching literal operator for call to 'operator "" _using'}}
-
-  using M::operator "" _using;
-  int k2 = 'x'_using;
-}
-
-namespace AmbiguousRawTemplate {
-  int operator"" _ambig1(const char *); // expected-note {{candidate}}
-  template<char...> int operator"" _ambig1(); // expected-note {{candidate}}
-
-  int k1 = 123_ambig1; // expected-error {{call to 'operator "" _ambig1' is ambiguous}}
-
-  namespace Inner {
-    template<char...> int operator"" _ambig2(); // expected-note 3{{candidate}}
-  }
-  int operator"" _ambig2(const char *); // expected-note 3{{candidate}}
-  using Inner::operator"" _ambig2;
-
-  int k2 = 123_ambig2; // expected-error {{call to 'operator "" _ambig2' is ambiguous}}
-
-  namespace N {
-    using Inner::operator"" _ambig2;
-
-    int k3 = 123_ambig2; // ok
-
-    using AmbiguousRawTemplate::operator"" _ambig2;
-
-    int k4 = 123_ambig2; // expected-error {{ambiguous}}
-
-    namespace M {
-
-      template<char...> int operator"" _ambig2();
-
-      int k5 = 123_ambig2; // ok
-    }
-
-    int operator"" _ambig2(unsigned long long);
-
-    int k6 = 123_ambig2; // ok
-    int k7 = 123._ambig2; // expected-error {{ambiguous}}
-  }
-}
-
-constexpr unsigned mash(unsigned a) {
- return 0x93ae27b5 * ((a >> 13) | a << 19);
-}
-template<typename=void> constexpr unsigned hash(unsigned a) { return a; }
-template<char C, char...Cs> constexpr unsigned hash(unsigned a) {
- return hash<Cs...>(mash(a ^ mash(C)));
-}
-template<typename T, T v> struct constant { constexpr static T value = v; };
-template<char...Cs> constexpr unsigned operator"" _hash() {
-  return constant<unsigned, hash<Cs...>(0)>::value;
-}
-static_assert(0x1234_hash == 0x103eff5e, "");
-static_assert(hash<'0', 'x', '1', '2', '3', '4'>(0) == 0x103eff5e, "");
-
-// Functions and literal suffixes go in separate namespaces.
-namespace Namespace {
-  template<char...> int operator"" _x();
-  int k = _x(); // expected-error {{undeclared identifier '_x'}}
-
-  int _y(unsigned long long);
-  int k2 = 123_y; // expected-error {{no matching literal operator for call to 'operator "" _y'}}
-}
-
-namespace PR14950 {
-  template<...> // expected-error {{expected template parameter}}
-  int operator"" _b(); // expected-error {{no function template matches function template specialization}}
-  int main() { return 0_b; } // expected-error {{no matching literal operator for call to 'operator "" _b'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-array-runtime-bound.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-array-runtime-bound.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-array-runtime-bound.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -std=c++1y %s -verify -triple=x86_64-linux-gnu -pedantic-errors
-
-// FIXME: many diagnostics here say 'variably modified type'.
-//        catch this case and say 'array of runtime bound' instead.
-
-namespace std { struct type_info; }
-
-struct S {
-  int arr[__SIZE_MAX__ / 32];
-};
-S s[32]; // expected-error {{array is too large}}
-
-int n;
-int a[n]; // expected-error {{not allowed at file scope}}
-
-struct T {
-  int a[n]; // expected-error {{fields must have a constant size}}
-  static int b[n]; // expected-error {{not allowed at file scope}}
-};
-
-int g(int n, int a[n]);
-
-template<typename T> struct X {};
-template<int N, int[N]> struct Y {};
-template<int[n]> struct Z {}; // expected-error {{of variably modified type}}
-
-int f(int n) {
-  int arb[n]; // expected-note 3{{here}}
-  [arb] {} (); // expected-error {{cannot be captured}}
-
-  // FIXME: an array of runtime bound can be captured by reference.
-  [&arb] { // expected-error {{cannot be captured}}
-    // Capturing the array implicitly captures the bound, if we need it
-    // in a range-based for loop.
-    for (auto &n : arb) { } // expected-error {{cannot be captured}}
-  } ();
-
-  X<int[n]> x; // expected-error {{variably modified type}}
-
-  int arb_neg[-1]; // expected-error {{negative size}}
-  int arb_of_array[n][2];
-  int arr[3] = { 1, 2, 3, 4 }; // expected-error {{excess elements}}
-  char foo[4] = "fool"; // expected-error {{initializer-string for char array is too long}}
-
-  static int not_auto1[n]; // expected-error {{can not have 'static'}}
-  extern int not_auto2[n]; // expected-error {{can not have 'extern'}}
-  // FIXME: say 'thread_local' not 'static'.
-  thread_local int not_auto1[n]; // expected-error {{can not have 'static'}}
-
-  // FIXME: these should all be invalid.
-  auto &&ti1 = typeid(arb);
-  auto &&ti2 = typeid(int[n]);
-  auto &&so1 = sizeof(arb);
-  auto &&so2 = sizeof(int[n]);
-  auto *p = &arb;
-  decltype(arb) arb2;
-  int (*arbp)[n] = 0;
-  const int (&arbr)[n] = arbr; // expected-warning {{not yet bound}}
-  typedef int arbty[n];
-  int array_of_arb[2][n];
-
-  struct Dyn { Dyn() {} Dyn(int) {} ~Dyn() {} };
-
-  // FIXME: these should be valid.
-  int arb_dynamic[n] = { 1, 2, 3, 4 }; // expected-error {{may not be initialized}}
-  Dyn dyn[n]; // expected-error {{non-POD}}
-  Dyn dyn_init[n] = { 1, 2, 3, 4 }; // expected-error {{non-POD}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-constexpr-not-const.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-constexpr-not-const.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-constexpr-not-const.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -verify
-// RUN: %clang_cc1 -std=c++1y %s -verify -DCXX1Y
-
-struct X {
-  constexpr int f(); // @5
-  int f();           // @6
-};
-
-#ifdef CXX1Y
-// FIXME: Detect this situation and provide a better recovery.
-
-// expected-error at 6 {{class member cannot be redeclared}}
-// expected-note at 5 {{previous}}
-// expected-error at 6 {{non-constexpr declaration of 'f' follows constexpr declaration}}
-// expected-note at 5 {{previous}}
-#else
-// expected-warning at 5 {{'constexpr' non-static member function will not be implicitly 'const' in C++1y; add 'const' to avoid a change in behavior}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-deduced-return-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-deduced-return-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-deduced-return-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,338 +0,0 @@
-// RUN: %clang_cc1 -std=c++1y -verify -fsyntax-only %s
-
-auto f(); // expected-note {{previous}}
-int f(); // expected-error {{differ only in their return type}}
-
-auto &g();
-auto g() -> auto &;
-
-auto h() -> auto *;
-auto *h();
-
-struct Conv1 {
-  operator auto(); // expected-note {{declared here}}
-} conv1;
-int conv1a = conv1; // expected-error {{function 'operator auto' with deduced return type cannot be used before it is defined}}
-// expected-error at -1 {{no viable conversion}}
-Conv1::operator auto() { return 123; }
-int conv1b = conv1;
-int conv1c = conv1.operator auto();
-int conv1d = conv1.operator int(); // expected-error {{no member named 'operator int'}}
-
-struct Conv2 {
-  operator auto() { return 0; }  // expected-note 2{{previous}}
-  operator auto() { return 0.; } // expected-error {{cannot be redeclared}} expected-error {{redefinition of 'operator auto'}}
-};
-
-struct Conv3 {
-  operator auto() { int *p = nullptr; return p; }  // expected-note {{candidate}}
-  operator auto*() { int *p = nullptr; return p; } // expected-note {{candidate}}
-} conv3;
-int *conv3a = conv3; // expected-error {{ambiguous}}
-int *conv3b = conv3.operator auto();
-int *conv3c = conv3.operator auto*();
-
-template<typename T>
-struct Conv4 {
-  operator auto() { return T(); }
-};
-Conv4<int> conv4int;
-int conv4a = conv4int;
-int conv4b = conv4int.operator auto();
-
-auto a();
-auto a() { return 0; }
-using T = decltype(a());
-using T = int;
-auto a(); // expected-note {{previous}}
-using T = decltype(a());
-auto *a(); // expected-error {{differ only in their return type}}
-
-auto b(bool k) {
-  if (k)
-    return "hello";
-  return "goodbye";
-}
-
-auto *ptr_1() {
-  return 100; // expected-error {{cannot deduce return type 'auto *' from returned value of type 'int'}}
-}
-
-const auto &ref_1() {
-  return 0; // expected-warning {{returning reference to local temporary}}
-}
-
-auto init_list() {
-  return { 1, 2, 3 }; // expected-error {{cannot deduce return type from initializer list}}
-}
-
-auto fwd_decl(); // expected-note 2{{here}}
-
-int n = fwd_decl(); // expected-error {{function 'fwd_decl' with deduced return type cannot be used before it is defined}}
-int k = sizeof(fwd_decl()); // expected-error {{used before it is defined}}
-
-auto fac(int n) {
-  if (n <= 2)
-    return n;
-  return n * fac(n-1); // ok
-}
-
-auto fac_2(int n) { // expected-note {{declared here}}
-  if (n > 2)
-    return n * fac_2(n-1); // expected-error {{cannot be used before it is defined}}
-  return n;
-}
-
-auto void_ret() {}
-using Void = void;
-using Void = decltype(void_ret());
-
-auto &void_ret_2() {} // expected-error {{cannot deduce return type 'auto &' for function with no return statements}}
-const auto void_ret_3() {} // ok, return type 'const void' is adjusted to 'void'
-
-const auto void_ret_4() {
-  if (false)
-    return void();
-  if (false)
-    return;
-  return 0; // expected-error {{'auto' in return type deduced as 'int' here but deduced as 'void' in earlier return statement}}
-}
-
-namespace Templates {
-  template<typename T> auto f1() {
-    return T() + 1;
-  }
-  template<typename T> auto &f2(T &&v) { return v; }
-  int a = f1<int>();
-  const int &b = f2(0);
-  double d;
-  float &c = f2(0.0); // expected-error {{non-const lvalue reference to type 'float' cannot bind to a value of unrelated type 'double'}}
-
-  template<typename T> auto fwd_decl(); // expected-note {{declared here}}
-  int e = fwd_decl<int>(); // expected-error {{cannot be used before it is defined}}
-  template<typename T> auto fwd_decl() { return 0; }
-  int f = fwd_decl<int>();
-  template<typename T> auto fwd_decl();
-  int g = fwd_decl<char>();
-
-  auto (*p)() = f1; // expected-error {{incompatible initializer}}
-  auto (*q)() = f1<int>; // ok
-
-  typedef decltype(f2(1.2)) dbl; // expected-note {{previous}}
-  typedef float dbl; // expected-error {{typedef redefinition with different types ('float' vs 'decltype(f2(1.2))' (aka 'double &'))}}
-
-  extern template auto fwd_decl<double>();
-  int k1 = fwd_decl<double>();
-  extern template int fwd_decl<char>(); // expected-error {{does not refer to a function template}}
-  int k2 = fwd_decl<char>();
-
-  template<typename T> auto instantiate() { T::error; } // expected-error {{has no members}}
-  extern template auto instantiate<int>(); // ok
-  int k = instantiate<int>(); // expected-note {{in instantiation of}}
-  template<> auto instantiate<char>() {} // ok
-  template<> void instantiate<double>() {} // expected-error {{no function template matches}}
-
-  template<typename T> auto arg_single() { return 0; }
-  template<typename T> auto arg_multi() { return 0l; }
-  template<typename T> auto arg_multi(int) { return "bad"; }
-  template<typename T> struct Outer {
-    static auto arg_single() { return 0.f; }
-    static auto arg_multi() { return 0.; }
-    static auto arg_multi(int) { return "bad"; }
-  };
-  template<typename T> T &take_fn(T (*p)());
-
-  int &check1 = take_fn(arg_single); // expected-error {{no matching}} expected-note at -2 {{couldn't infer}}
-  int &check2 = take_fn(arg_single<int>);
-  int &check3 = take_fn<int>(arg_single); // expected-error {{no matching}} expected-note at -4{{no overload of 'arg_single'}}
-  int &check4 = take_fn<int>(arg_single<int>);
-  long &check5 = take_fn(arg_multi); // expected-error {{no matching}} expected-note at -6 {{couldn't infer}}
-  long &check6 = take_fn(arg_multi<int>);
-  long &check7 = take_fn<long>(arg_multi); // expected-error {{no matching}} expected-note at -8{{no overload of 'arg_multi'}}
-  long &check8 = take_fn<long>(arg_multi<int>);
-
-  float &mem_check1 = take_fn(Outer<int>::arg_single);
-  float &mem_check2 = take_fn<float>(Outer<char>::arg_single);
-  double &mem_check3 = take_fn(Outer<long>::arg_multi);
-  double &mem_check4 = take_fn<double>(Outer<double>::arg_multi);
-
-  namespace Deduce1 {
-    template<typename T> auto f() { return 0; } // expected-note {{candidate}}
-    template<typename T> void g(T(*)()); // expected-note 2{{candidate}}
-    void h() {
-      auto p = f<int>;
-      auto (*q)() = f<int>;
-      int (*r)() = f; // expected-error {{does not match}}
-      g(f<int>);
-      g<int>(f); // expected-error {{no matching function}}
-      g(f); // expected-error {{no matching function}}
-    }
-  }
-
-  namespace Deduce2 {
-    template<typename T> auto f(int) { return 0; } // expected-note {{candidate}}
-    template<typename T> void g(T(*)(int)); // expected-note 2{{candidate}}
-    void h() {
-      auto p = f<int>;
-      auto (*q)(int) = f<int>;
-      int (*r)(int) = f; // expected-error {{does not match}}
-      g(f<int>);
-      g<int>(f); // expected-error {{no matching function}}
-      g(f); // expected-error {{no matching function}}
-    }
-  }
-
-  namespace Deduce3 {
-    template<typename T> auto f(T) { return 0; }
-    template<typename T> void g(T(*)(int)); // expected-note {{couldn't infer}}
-    void h() {
-      auto p = f<int>;
-      auto (*q)(int) = f<int>;
-      int (*r)(int) = f; // ok
-      g(f<int>);
-      g<int>(f); // ok
-      g(f); // expected-error {{no matching function}}
-    }
-  }
-
-  namespace DeduceInDeducedReturnType {
-    template<typename T, typename U> auto f() -> auto (T::*)(U) {
-      int (T::*result)(U) = nullptr;
-      return result;
-    }
-    struct S {};
-    int (S::*(*p)())(double) = f;
-    int (S::*(*q)())(double) = f<S, double>;
-  }
-}
-
-auto fwd_decl_using();
-namespace N { using ::fwd_decl_using; }
-auto fwd_decl_using() { return 0; }
-namespace N { int k = N::fwd_decl_using(); }
-
-namespace OverloadResolutionNonTemplate {
-  auto f();
-  auto f(int); // expected-note {{here}}
-
-  int &g(int (*f)()); // expected-note {{not viable: no overload of 'f' matching 'int (*)()'}}
-  char &g(int (*f)(int)); // expected-note {{not viable: no overload of 'f' matching 'int (*)(int)'}}
-
-  int a = g(f); // expected-error {{no matching function}}
-
-  auto f() { return 0; }
-
-  // FIXME: It's not completely clear whether this should be ill-formed.
-  int &b = g(f); // expected-error {{used before it is defined}}
-
-  auto f(int) { return 0.0; }
-
-  int &c = g(f); // ok
-}
-
-namespace OverloadResolutionTemplate {
-  auto f();
-  template<typename T> auto f(T);
-
-  int &g(int (*f)()); // expected-note {{not viable: no overload of 'f' matching 'int (*)()'}} expected-note {{candidate}}
-  char &g(int (*f)(int)); // expected-note {{not viable: no overload of 'f' matching 'int (*)(int)'}} expected-note {{candidate}}
-
-  int a = g(f); // expected-error {{no matching function}}
-
-  auto f() { return 0; }
-
-  int &b = g(f); // ok (presumably), due to deduction failure forming type of 'f<int>'
-
-  template<typename T> auto f(T) { return 0; }
-
-  int &c = g(f); // expected-error {{ambiguous}}
-}
-
-namespace DefaultedMethods {
-  struct A {
-    auto operator=(const A&) = default; // expected-error {{must return 'DefaultedMethods::A &'}}
-    A &operator=(A&&); // expected-note {{previous}}
-  };
-  auto A::operator=(A&&) = default; // expected-error {{differs from the declaration in the return type}}
-}
-
-namespace Constexpr {
-  constexpr auto f1(int n) { return n; }
-  struct NonLiteral { ~NonLiteral(); } nl; // expected-note {{user-provided destructor}}
-  constexpr auto f2(int n) { return nl; } // expected-error {{return type 'Constexpr::NonLiteral' is not a literal type}}
-}
-
-// It's not really clear whether these are valid, but this matches g++.
-using size_t = decltype(sizeof(0));
-auto operator new(size_t n, const char*); // expected-error {{must return type 'void *'}}
-auto operator delete(void *, const char*); // expected-error {{must return type 'void'}}
-
-namespace Virtual {
-  struct S {
-    virtual auto f() { return 0; } // expected-error {{function with deduced return type cannot be virtual}} expected-note {{here}}
-  };
-  // Allow 'auto' anyway for error recovery.
-  struct T : S {
-    int f();
-  };
-  struct U : S {
-    auto f(); // expected-error {{different return}}
-  };
-
-  // And here's why...
-  struct V { virtual auto f(); }; // expected-error {{cannot be virtual}}
-  struct W : V { virtual auto f(); }; // expected-error {{cannot be virtual}}
-  auto V::f() { return 0; } // in tu1.cpp
-  auto W::f() { return 0.0; } // in tu2.cpp
-  W w;
-  int k1 = w.f();
-  int k2 = ((V&)w).f();
-}
-
-namespace std_examples {
-
-namespace NoReturn {
-  auto f() {}
-  void (*p)() = &f;
-
-  auto *g() {} // expected-error {{cannot deduce return type 'auto *' for function with no return statements}}
-}
-
-namespace UseBeforeComplete {
-  auto n = n; // expected-error {{variable 'n' declared with 'auto' type cannot appear in its own initializer}}
-  auto f(); // expected-note {{declared here}}
-  void g() { &f; } // expected-error {{function 'f' with deduced return type cannot be used before it is defined}}
-  auto sum(int i) {
-    if (i == 1)
-      return i;
-    else
-      return sum(i - 1) + i;
-  }
-}
-
-namespace Redecl {
-  auto f();
-  auto f() { return 42; }
-  auto f(); // expected-note 2{{previous}}
-  int f(); // expected-error {{functions that differ only in their return type cannot be overloaded}}
-  decltype(auto) f(); // expected-error {{cannot be overloaded}}
-
-  template<typename T> auto g(T t) { return t; } // expected-note {{candidate}}
-  template auto g(int);
-  template char g(char); // expected-error {{does not refer to a function}}
-  template<> auto g(double);
-
-  template<typename T> T g(T t) { return t; } // expected-note {{candidate}}
-  template char g(char);
-  template auto g(float);
-
-  void h() { return g(42); } // expected-error {{ambiguous}}
-}
-
-namespace ExplicitInstantiationDecl {
-  template<typename T> auto f(T t) { return t; }
-  extern template auto f(int);
-  int (*p)(int) = f;
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-initializer-aggregates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-initializer-aggregates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx1y-initializer-aggregates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -std=c++1y %s -verify
-
-namespace in_class_init {
-  union U { char c; double d = 4.0; };
-  constexpr U u1 = U();
-  constexpr U u2 {};
-  constexpr U u3 { 'x' };
-  static_assert(u1.d == 4.0, "");
-  static_assert(u2.d == 4.0, "");
-  static_assert(u3.c == 'x', "");
-
-  struct A {
-    int n = 5;
-    int m = n * 3;
-    union {
-      char c;
-      double d = 4.0;
-    };
-  };
-  constexpr A a1 {};
-  constexpr A a2 { 8 };
-  constexpr A a3 { 1, 2, { 3 } };
-  constexpr A a4 { 1, 2, { .d = 3.0 } };
-  static_assert(a1.d == 4.0, "");
-  static_assert(a2.m == 24, "");
-  static_assert(a2.d == 4.0, "");
-  static_assert(a3.c == 3, "");
-  static_assert(a3.d == 4.0, ""); // expected-error {{constant expression}} expected-note {{active member 'c'}}
-  static_assert(a4.d == 3.0, "");
-
-  struct B {
-    int n;
-    constexpr int f() { return n * 5; }
-    int m = f();
-  };
-  B b1 {};
-  constexpr B b2 { 2 };
-  B b3 { 1, 2 };
-  static_assert(b2.m == 10, "");
-
-  struct C {
-    int k;
-    union {
-      int l = k; // expected-error {{invalid use of non-static}}
-    };
-  };
-}
-
-namespace nested_aggregate_init {
-  struct A {
-    int n = 5;
-    int b = n * 3;
-  };
-  struct B {
-    constexpr B(int k) : d(1.23), k(k) {}
-    // Within this aggregate, both this object's 'this' and the temporary's
-    // 'this' are used.
-    constexpr int f() const { return A{k}.b; }
-    double d;
-    int k;
-  };
-  static_assert(B(6).f() == 18, "");
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat-flags.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat-flags.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat-flags.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wc++98-compat -verify %s
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wc++98-compat -Wno-bind-to-temporary-copy -Wno-unnamed-type-template-args -Wno-local-type-template-args -Werror %s
-
-template<typename T> int TemplateFn(T) { return 0; }
-void LocalTemplateArg() {
-  struct S {};
-  TemplateFn(S()); // expected-warning {{local type 'S' as template argument is incompatible with C++98}}
-}
-struct {} obj_of_unnamed_type; // expected-note {{here}}
-int UnnamedTemplateArg = TemplateFn(obj_of_unnamed_type); // expected-warning {{unnamed type as template argument is incompatible with C++98}}
-
-namespace CopyCtorIssues {
-  struct Private {
-    Private();
-  private:
-    Private(const Private&); // expected-note {{declared private here}}
-  };
-  struct NoViable {
-    NoViable();
-    NoViable(NoViable&); // expected-note {{not viable}}
-  };
-  struct Ambiguous {
-    Ambiguous();
-    Ambiguous(const Ambiguous &, int = 0); // expected-note {{candidate}}
-    Ambiguous(const Ambiguous &, double = 0); // expected-note {{candidate}}
-  };
-  struct Deleted {
-    Private p; // expected-note {{copy constructor of 'Deleted' is implicitly deleted because field 'p' has an inaccessible copy constructor}}
-  };
-
-  const Private &a = Private(); // expected-warning {{copying variable of type 'CopyCtorIssues::Private' when binding a reference to a temporary would invoke an inaccessible constructor in C++98}}
-  const NoViable &b = NoViable(); // expected-warning {{copying variable of type 'CopyCtorIssues::NoViable' when binding a reference to a temporary would find no viable constructor in C++98}}
-  const Ambiguous &c = Ambiguous(); // expected-warning {{copying variable of type 'CopyCtorIssues::Ambiguous' when binding a reference to a temporary would find ambiguous constructors in C++98}}
-  const Deleted &d = Deleted(); // expected-warning {{copying variable of type 'CopyCtorIssues::Deleted' when binding a reference to a temporary would invoke a deleted constructor in C++98}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat-pedantic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat-pedantic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat-pedantic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++1y -DCXX1Y -Wc++98-compat-pedantic -verify %s
-// RUN: %clang_cc1 -fsyntax-only -std=c++1y -DCXX1Y -Wc++98-compat -Werror %s
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wc++98-compat-pedantic -verify %s
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wc++98-compat -Werror %s
-// RUN: %clang_cc1 -fsyntax-only -std=c++98 -Werror %s
-
-// -Wc++98-compat-pedantic warns on C++11 features which we accept without a
-// warning in C++98 mode.
-
-#line 32767 // ok
-#line 32768 // expected-warning {{#line number greater than 32767 is incompatible with C++98}}
-
-#define VA_MACRO(x, ...) x // expected-warning {{variadic macros are incompatible with C++98}}
-VA_MACRO(,x) // expected-warning {{empty macro arguments are incompatible with C++98}}
-
-; // expected-warning {{extra ';' outside of a function is incompatible with C++98}}
-
-enum Enum {
-  Enum_value, // expected-warning {{commas at the end of enumerator lists are incompatible with C++98}}
-};
-
-template<typename T> struct InstantiationAfterSpecialization {};
-template<> struct InstantiationAfterSpecialization<int> {}; // expected-note {{here}}
-template struct InstantiationAfterSpecialization<int>; // expected-warning {{explicit instantiation of 'InstantiationAfterSpecialization<int>' that occurs after an explicit specialization is incompatible with C++98}}
-
-void *dlsym();
-void (*FnPtr)() = (void(*)())dlsym(); // expected-warning {{cast between pointer-to-function and pointer-to-object is incompatible with C++98}}
-void *FnVoidPtr = (void*)&dlsym; // expected-warning {{cast between pointer-to-function and pointer-to-object is incompatible with C++98}}
-
-struct ConvertToInt {
-  operator int();
-};
-int *ArraySizeConversion = new int[ConvertToInt()]; // expected-warning {{implicit conversion from array size expression of type 'ConvertToInt' to integral type 'int' is incompatible with C++98}}
-
-template<typename T> class ExternTemplate {};
-extern template class ExternTemplate<int>; // expected-warning {{extern templates are incompatible with C++98}}
-
-long long ll1 = // expected-warning {{'long long' is incompatible with C++98}}
-         -42LL; // expected-warning {{'long long' is incompatible with C++98}}
-unsigned long long ull1 = // expected-warning {{'long long' is incompatible with C++98}}
-                   42ULL; // expected-warning {{'long long' is incompatible with C++98}}
-
-int k = 0b1001;
-#ifdef CXX1Y
-// expected-warning at -2 {{binary integer literals are incompatible with C++ standards before C++1y}}
-#endif
-
-void f(int n) { int a[n]; }
-#ifdef CXX1Y
-// expected-warning at -2 {{arrays of runtime bound are incompatible with C++ standards before C++1y}}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/cxx98-compat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,384 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wc++98-compat -verify %s
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s
-
-namespace std {
-  struct type_info;
-  using size_t = decltype(sizeof(0)); // expected-warning {{decltype}} expected-warning {{alias}}
-  template<typename T> struct initializer_list {
-    initializer_list(T*, size_t);
-    T *p;
-    size_t n;
-    T *begin();
-    T *end();
-  };
-}
-
-template<typename ...T>  // expected-warning {{variadic templates are incompatible with C++98}}
-class Variadic1 {};
-
-template<template<typename> class ...T>  // expected-warning {{variadic templates are incompatible with C++98}}
-class Variadic2 {};
-
-template<int ...I>  // expected-warning {{variadic templates are incompatible with C++98}}
-class Variadic3 {};
-
-alignas(8) int with_alignas; // expected-warning {{'alignas' is incompatible with C++98}}
-int with_attribute [[ ]]; // expected-warning {{attributes are incompatible with C++98}}
-
-void Literals() {
-  (void)u8"str"; // expected-warning {{unicode literals are incompatible with C++98}}
-  (void)u"str"; // expected-warning {{unicode literals are incompatible with C++98}}
-  (void)U"str"; // expected-warning {{unicode literals are incompatible with C++98}}
-  (void)u'x'; // expected-warning {{unicode literals are incompatible with C++98}}
-  (void)U'x'; // expected-warning {{unicode literals are incompatible with C++98}}
-
-  (void)u8R"X(str)X"; // expected-warning {{raw string literals are incompatible with C++98}}
-  (void)uR"X(str)X"; // expected-warning {{raw string literals are incompatible with C++98}}
-  (void)UR"X(str)X"; // expected-warning {{raw string literals are incompatible with C++98}}
-  (void)R"X(str)X"; // expected-warning {{raw string literals are incompatible with C++98}}
-  (void)LR"X(str)X"; // expected-warning {{raw string literals are incompatible with C++98}}
-}
-
-template<typename T> struct S {};
-namespace TemplateParsing {
-  S<::S<void> > s; // expected-warning {{'<::' is treated as digraph '<:' (aka '[') followed by ':' in C++98}}
-  S< ::S<void>> t; // expected-warning {{consecutive right angle brackets are incompatible with C++98 (use '> >')}}
-}
-
-void Lambda() {
-  []{}(); // expected-warning {{lambda expressions are incompatible with C++98}}
-}
-
-struct Ctor {
-  Ctor(int, char);
-  Ctor(double, long);
-};
-struct InitListCtor {
-  InitListCtor(std::initializer_list<bool>);
-};
-
-int InitList(int i = {}) { // expected-warning {{generalized initializer lists are incompatible with C++98}} \
-                           // expected-warning {{scalar initialized from empty initializer list is incompatible with C++98}}
-  (void)new int {}; // expected-warning {{generalized initializer lists are incompatible with C++98}} \
-                    // expected-warning {{scalar initialized from empty initializer list is incompatible with C++98}}
-  (void)int{}; // expected-warning {{generalized initializer lists are incompatible with C++98}} \
-               // expected-warning {{scalar initialized from empty initializer list is incompatible with C++98}}
-  int x { 0 }; // expected-warning {{generalized initializer lists are incompatible with C++98}}
-  S<int> s = {}; // ok, aggregate
-  s = {}; // expected-warning {{generalized initializer lists are incompatible with C++98}}
-  std::initializer_list<int> xs = { 1, 2, 3 }; // expected-warning {{initialization of initializer_list object is incompatible with C++98}}
-  auto ys = { 1, 2, 3 }; // expected-warning {{initialization of initializer_list object is incompatible with C++98}} \
-                         // expected-warning {{'auto' type specifier is incompatible with C++98}}
-  Ctor c1 = { 1, 2 }; // expected-warning {{constructor call from initializer list is incompatible with C++98}}
-  Ctor c2 = { 3.0, 4l }; // expected-warning {{constructor call from initializer list is incompatible with C++98}}
-  InitListCtor ilc = { true, false }; // expected-warning {{initialization of initializer_list object is incompatible with C++98}}
-  const int &r = { 0 }; // expected-warning {{reference initialized from initializer list is incompatible with C++98}}
-  struct { int a; const int &r; } rr = { 0, {{0}} }; // expected-warning {{reference initialized from initializer list is incompatible with C++98}}
-  return { 0 }; // expected-warning {{generalized initializer lists are incompatible with C++98}}
-}
-struct DelayedDefaultArgumentParseInitList {
-  void f(int i = {1}) { // expected-warning {{generalized initializer lists are incompatible with C++98}}
-  }
-};
-
-int operator"" _hello(const char *); // expected-warning {{literal operators are incompatible with C++98}}
-
-enum EnumFixed : int { // expected-warning {{enumeration types with a fixed underlying type are incompatible with C++98}}
-};
-
-enum class EnumScoped { // expected-warning {{scoped enumerations are incompatible with C++98}}
-};
-
-void Deleted() = delete; // expected-warning {{deleted function definitions are incompatible with C++98}}
-struct Defaulted {
-  Defaulted() = default; // expected-warning {{defaulted function definitions are incompatible with C++98}}
-};
-
-int &&RvalueReference = 0; // expected-warning {{rvalue references are incompatible with C++98}}
-struct RefQualifier {
-  void f() &; // expected-warning {{reference qualifiers on functions are incompatible with C++98}}
-};
-
-auto f() -> int; // expected-warning {{trailing return types are incompatible with C++98}}
-
-void RangeFor() {
-  int xs[] = {1, 2, 3};
-  for (int &a : xs) { // expected-warning {{range-based for loop is incompatible with C++98}}
-  }
-  for (auto &b : {1, 2, 3}) {
-  // expected-warning at -1 {{range-based for loop is incompatible with C++98}}
-  // expected-warning at -2 {{'auto' type specifier is incompatible with C++98}}
-  // expected-warning at -3 {{initialization of initializer_list object is incompatible with C++98}}
-  // expected-warning at -4 {{reference initialized from initializer list is incompatible with C++98}}
-  }
-  struct Agg { int a, b; } const &agg = { 1, 2 }; // expected-warning {{reference initialized from initializer list is incompatible with C++98}}
-}
-
-struct InClassInit {
-  int n = 0; // expected-warning {{in-class initialization of non-static data members is incompatible with C++98}}
-};
-
-struct OverrideControlBase {
-  virtual void f();
-  virtual void g();
-};
-struct OverrideControl final : OverrideControlBase { // expected-warning {{'final' keyword is incompatible with C++98}}
-  virtual void f() override; // expected-warning {{'override' keyword is incompatible with C++98}}
-  virtual void g() final; // expected-warning {{'final' keyword is incompatible with C++98}}
-};
-
-using AliasDecl = int; // expected-warning {{alias declarations are incompatible with C++98}}
-template<typename T> using AliasTemplate = T; // expected-warning {{alias declarations are incompatible with C++98}}
-
-inline namespace InlineNS { // expected-warning {{inline namespaces are incompatible with C++98}}
-}
-
-auto auto_deduction = 0; // expected-warning {{'auto' type specifier is incompatible with C++98}}
-int *p = new auto(0); // expected-warning {{'auto' type specifier is incompatible with C++98}}
-
-const int align_of = alignof(int); // expected-warning {{alignof expressions are incompatible with C++98}}
-char16_t c16 = 0; // expected-warning {{'char16_t' type specifier is incompatible with C++98}}
-char32_t c32 = 0; // expected-warning {{'char32_t' type specifier is incompatible with C++98}}
-constexpr int const_expr = 0; // expected-warning {{'constexpr' specifier is incompatible with C++98}}
-decltype(const_expr) decl_type = 0; // expected-warning {{'decltype' type specifier is incompatible with C++98}}
-__decltype(const_expr) decl_type2 = 0; // ok
-void no_except() noexcept; // expected-warning {{noexcept specifications are incompatible with C++98}}
-bool no_except_expr = noexcept(1 + 1); // expected-warning {{noexcept expressions are incompatible with C++98}}
-void *null = nullptr; // expected-warning {{'nullptr' is incompatible with C++98}}
-static_assert(true, "!"); // expected-warning {{static_assert declarations are incompatible with C++98}}
-
-// FIXME: Reintroduce this test if support for inheriting constructors is
-//        implemented.
-#if 0
-struct InhCtorBase {
-  InhCtorBase(int);
-};
-struct InhCtorDerived : InhCtorBase {
-  using InhCtorBase::InhCtorBase; // xpected-warning {{inheriting constructors are incompatible with C++98}}
-};
-#endif
-
-struct FriendMember {
-  static void MemberFn();
-  friend void FriendMember::MemberFn(); // expected-warning {{friend declaration naming a member of the declaring class is incompatible with C++98}}
-};
-
-struct DelegCtor {
-  DelegCtor(int) : DelegCtor() {} // expected-warning {{delegating constructors are incompatible with C++98}}
-  DelegCtor();
-};
-
-template<int n = 0> void DefaultFuncTemplateArg(); // expected-warning {{default template arguments for a function template are incompatible with C++98}}
-
-template<typename T> int TemplateFn(T) { return 0; }
-void LocalTemplateArg() {
-  struct S {};
-  TemplateFn(S()); // expected-warning {{local type 'S' as template argument is incompatible with C++98}}
-}
-struct {} obj_of_unnamed_type; // expected-note {{here}}
-int UnnamedTemplateArg = TemplateFn(obj_of_unnamed_type); // expected-warning {{unnamed type as template argument is incompatible with C++98}}
-
-namespace RedundantParensInAddressTemplateParam {
-  int n;
-  template<int*p> struct S {};
-  S<(&n)> s; // expected-warning {{redundant parentheses surrounding address non-type template argument are incompatible with C++98}}
-  S<(((&n)))> t; // expected-warning {{redundant parentheses surrounding address non-type template argument are incompatible with C++98}}
-}
-
-namespace TemplateSpecOutOfScopeNs {
-  template<typename T> struct S {}; // expected-note {{here}}
-}
-template<> struct TemplateSpecOutOfScopeNs::S<char> {}; // expected-warning {{class template specialization of 'S' outside namespace 'TemplateSpecOutOfScopeNs' is incompatible with C++98}}
-
-struct Typename {
-  template<typename T> struct Inner {};
-};
-typename ::Typename TypenameOutsideTemplate(); // expected-warning {{use of 'typename' outside of a template is incompatible with C++98}}
-Typename::template Inner<int> TemplateOutsideTemplate(); // expected-warning {{use of 'template' keyword outside of a template is incompatible with C++98}}
-
-struct TrivialButNonPOD {
-  int f(int);
-private:
-  int k;
-};
-void Ellipsis(int n, ...);
-void TrivialButNonPODThroughEllipsis() {
-  Ellipsis(1, TrivialButNonPOD()); // expected-warning {{passing object of trivial but non-POD type 'TrivialButNonPOD' through variadic function is incompatible with C++98}}
-}
-
-struct HasExplicitConversion {
-  explicit operator bool(); // expected-warning {{explicit conversion functions are incompatible with C++98}}
-};
-
-struct Struct {};
-enum Enum { enum_val = 0 };
-struct BadFriends {
-  friend enum ::Enum; // expected-warning {{befriending enumeration type 'enum ::Enum' is incompatible with C++98}}
-  friend int; // expected-warning {{non-class friend type 'int' is incompatible with C++98}}
-  friend Struct; // expected-warning {{befriending 'Struct' without 'struct' keyword is incompatible with C++98}}
-};
-
-int n = {}; // expected-warning {{scalar initialized from empty initializer list is incompatible with C++98}}
-
-class PrivateMember {
-  struct ImPrivate {};
-};
-template<typename T> typename T::ImPrivate SFINAEAccessControl(T t) { // expected-warning {{substitution failure due to access control is incompatible with C++98}} expected-note {{while substituting deduced template arguments into function template 'SFINAEAccessControl' [with T = PrivateMember]}}
-  return typename T::ImPrivate();
-}
-int SFINAEAccessControl(...) { return 0; }
-int CheckSFINAEAccessControl = SFINAEAccessControl(PrivateMember());
-
-template<typename T>
-struct FriendRedefinition {
-  friend void Friend() {} // expected-warning {{friend function 'Friend' would be implicitly redefined in C++98}} expected-note {{previous}}
-};
-FriendRedefinition<int> FriendRedef1;
-FriendRedefinition<char> FriendRedef2; // expected-note {{requested here}}
-
-namespace CopyCtorIssues {
-  struct Private {
-    Private();
-  private:
-    Private(const Private&); // expected-note {{declared private here}}
-  };
-  struct NoViable {
-    NoViable();
-    NoViable(NoViable&); // expected-note {{not viable}}
-  };
-  struct Ambiguous {
-    Ambiguous();
-    Ambiguous(const Ambiguous &, int = 0); // expected-note {{candidate}}
-    Ambiguous(const Ambiguous &, double = 0); // expected-note {{candidate}}
-  };
-  struct Deleted {
-    Private p; // expected-note {{implicitly deleted}}
-  };
-
-  const Private &a = Private(); // expected-warning {{copying variable of type 'CopyCtorIssues::Private' when binding a reference to a temporary would invoke an inaccessible constructor in C++98}}
-  const NoViable &b = NoViable(); // expected-warning {{copying variable of type 'CopyCtorIssues::NoViable' when binding a reference to a temporary would find no viable constructor in C++98}}
-  const Ambiguous &c = Ambiguous(); // expected-warning {{copying variable of type 'CopyCtorIssues::Ambiguous' when binding a reference to a temporary would find ambiguous constructors in C++98}}
-  const Deleted &d = Deleted(); // expected-warning {{copying variable of type 'CopyCtorIssues::Deleted' when binding a reference to a temporary would invoke a deleted constructor in C++98}}
-}
-
-namespace UnionOrAnonStructMembers {
-  struct NonTrivCtor {
-    NonTrivCtor(); // expected-note 2{{user-provided default constructor}}
-  };
-  struct NonTrivCopy {
-    NonTrivCopy(const NonTrivCopy&); // expected-note 2{{user-provided copy constructor}}
-  };
-  struct NonTrivDtor {
-    ~NonTrivDtor(); // expected-note 2{{user-provided destructor}}
-  };
-  union BadUnion {
-    NonTrivCtor ntc; // expected-warning {{union member 'ntc' with a non-trivial constructor is incompatible with C++98}}
-    NonTrivCopy ntcp; // expected-warning {{union member 'ntcp' with a non-trivial copy constructor is incompatible with C++98}}
-    NonTrivDtor ntd; // expected-warning {{union member 'ntd' with a non-trivial destructor is incompatible with C++98}}
-  };
-  struct Wrap {
-    struct {
-      NonTrivCtor ntc; // expected-warning {{anonymous struct member 'ntc' with a non-trivial constructor is incompatible with C++98}}
-      NonTrivCopy ntcp; // expected-warning {{anonymous struct member 'ntcp' with a non-trivial copy constructor is incompatible with C++98}}
-      NonTrivDtor ntd; // expected-warning {{anonymous struct member 'ntd' with a non-trivial destructor is incompatible with C++98}}
-    };
-  };
-  union WithStaticDataMember {
-    static constexpr double d = 0.0; // expected-warning {{static data member 'd' in union is incompatible with C++98}} expected-warning {{'constexpr' specifier is incompatible with C++98}}
-    static const int n = 0; // expected-warning {{static data member 'n' in union is incompatible with C++98}}
-    static int k; // expected-warning {{static data member 'k' in union is incompatible with C++98}}
-  };
-}
-
-int EnumNNS = Enum::enum_val; // expected-warning {{enumeration type in nested name specifier is incompatible with C++98}}
-template<typename T> void EnumNNSFn() {
-  int k = T::enum_val; // expected-warning {{enumeration type in nested name specifier is incompatible with C++98}}
-};
-template void EnumNNSFn<Enum>(); // expected-note {{in instantiation}}
-
-void JumpDiagnostics(int n) {
-  goto DirectJump; // expected-warning {{goto would jump into protected scope in C++98}}
-  TrivialButNonPOD tnp1; // expected-note {{jump bypasses initialization of non-POD variable}}
-
-DirectJump:
-  void *Table[] = {&&DirectJump, &&Later};
-  goto *Table[n]; // expected-warning {{indirect goto might cross protected scopes in C++98}}
-
-  TrivialButNonPOD tnp2; // expected-note {{jump bypasses initialization of non-POD variable}}
-Later: // expected-note {{possible target of indirect goto}}
-  switch (n) {
-    TrivialButNonPOD tnp3; // expected-note {{jump bypasses initialization of non-POD variable}}
-  default: // expected-warning {{switch case would be in a protected scope in C++98}}
-    return;
-  }
-}
-
-namespace UnevaluatedMemberAccess {
-  struct S {
-    int n;
-    int f() { return sizeof(S::n); } // ok
-  };
-  int k = sizeof(S::n); // expected-warning {{use of non-static data member 'n' in an unevaluated context is incompatible with C++98}}
-  const std::type_info &ti = typeid(S::n); // expected-warning {{use of non-static data member 'n' in an unevaluated context is incompatible with C++98}}
-}
-
-namespace LiteralUCNs {
-  char c1 = '\u001e'; // expected-warning {{universal character name referring to a control character is incompatible with C++98}}
-  wchar_t c2 = L'\u0041'; // expected-warning {{specifying character 'A' with a universal character name is incompatible with C++98}}
-  const char *s1 = "foo\u0031"; // expected-warning {{specifying character '1' with a universal character name is incompatible with C++98}}
-  const wchar_t *s2 = L"bar\u0085"; // expected-warning {{universal character name referring to a control character is incompatible with C++98}}
-}
-
-namespace NonTypeTemplateArgs {
-  template<typename T, T v> struct S {};
-  const int k = 5; // expected-note {{here}}
-  static void f() {} // expected-note {{here}}
-  S<const int&, k> s1; // expected-warning {{non-type template argument referring to object 'k' with internal linkage is incompatible with C++98}}
-  S<void(&)(), f> s2; // expected-warning {{non-type template argument referring to function 'f' with internal linkage is incompatible with C++98}}
-}
-
-namespace NullPointerTemplateArg {
-  struct A {};
-  template<int*> struct X {};
-  template<int A::*> struct Y {};
-  X<(int*)0> x; // expected-warning {{use of null pointer as non-type template argument is incompatible with C++98}}
-  Y<(int A::*)0> y; // expected-warning {{use of null pointer as non-type template argument is incompatible with C++98}}
-}
-
-namespace PR13480 {
-  struct basic_iterator {
-    basic_iterator(const basic_iterator &it) {} // expected-note {{because type 'PR13480::basic_iterator' has a user-provided copy constructor}}
-    basic_iterator(basic_iterator &it) {}
-  };
-
-  union test {
-    basic_iterator it; // expected-warning {{union member 'it' with a non-trivial copy constructor is incompatible with C++98}}
-  };
-}
-
-namespace AssignOpUnion {
-  struct a {
-    void operator=(const a &it) {} // expected-note {{because type 'AssignOpUnion::a' has a user-provided copy assignment operator}}
-    void operator=(a &it) {}
-  };
-
-  struct b {
-    void operator=(const b &it) {} // expected-note {{because type 'AssignOpUnion::b' has a user-provided copy assignment operator}}
-  };
-
-  union test1 {
-    a x; // expected-warning {{union member 'x' with a non-trivial copy assignment operator is incompatible with C++98}}
-    b y; // expected-warning {{union member 'y' with a non-trivial copy assignment operator is incompatible with C++98}}
-  };
-}
-
-namespace rdar11736429 {
-  struct X { // expected-note {{because type 'rdar11736429::X' has no default constructor}}
-    X(const X&) = delete; // expected-warning{{deleted function definitions are incompatible with C++98}} \
-    // expected-note {{implicit default constructor suppressed by user-declared constructor}}
-  };
-
-  union S {
-    X x; // expected-warning{{union member 'x' with a non-trivial constructor is incompatible with C++98}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/dcl_ambig_res.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/dcl_ambig_res.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/dcl_ambig_res.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-// PR13819
-// REQUIRES: LP64
-
-// [dcl.ambig.res]p1:
-struct S { 
-  S(int); 
-  void bar();
-}; 
-
-int returns_an_int();
-
-void foo(double a) 
-{ 
-  S w(int(a)); // expected-warning{{disambiguated as a function declaration}} expected-note{{add a pair of parentheses}} 
-  w(17);
-  S x1(int()); // expected-warning{{disambiguated as a function declaration}} expected-note{{add a pair of parentheses}} 
-  x1(&returns_an_int);
-  S y((int)a); 
-  y.bar();
-  S z = int(a);
-  z.bar();
-} 
-
-// [dcl.ambig.res]p3:
-char *p; 
-void *operator new(__SIZE_TYPE__, int); 
-void foo3() { 
-  const int x = 63; 
-  new (int(*p)) int; //new-placement expression 
-  new (int(*[x])); //new type-id 
-} 
-
-// [dcl.ambig.res]p4:
-template <class T>  // expected-note{{here}}
-struct S4 { 
-  T *p; 
-}; 
-S4<int()> x; //type-id 
-S4<int(1)> y; // expected-error{{must be a type}}
-
-// [dcl.ambig.res]p5:
-void foo5() 
-{ 
-  (void)sizeof(int(1)); //expression 
-  // FIXME: should we make this an error rather than a warning? 
-  // (It affects SFINAE)
-  (void)sizeof(int()); // expected-warning{{function type}}
-}
-
-// [dcl.ambig.res]p6:
-void foo6() 
-{ 
-  (void)(int(1)); //expression 
-  (void)(int())1; // expected-error{{to 'int ()'}}
-} 
-
-// [dcl.ambig.res]p7:
-class C7 { }; 
-void f7(int(C7)) { } // expected-note{{candidate}}
-int g7(C7); 
-void foo7() { 
-  f7(1); // expected-error{{no matching function}}
-  f7(g7); //OK 
-} 
-
-void h7(int *(C7[10])) { } // expected-note{{previous}}
-void h7(int *(*_fp)(C7 _parm[10])) { } // expected-error{{redefinition}}
-
-struct S5 {
-  static bool const value = false;
-};
-int foo8() {
-  int v(int(S5::value)); // expected-warning{{disambiguated as a function declaration}} expected-note{{add a pair of parentheses}} expected-error{{parameter declarator cannot be qualified}}
-}
-
-template<typename T>
-void rdar8739801( void (T::*)( void ) __attribute__((unused)) );

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/dcl_init_aggr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/dcl_init_aggr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/dcl_init_aggr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,123 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-// C++ [dcl.init.aggr]p2
-struct A { 
-  int x;
-  struct B { 
-    int i;
-    int j;
-  } b; 
-} a1 = { 1, { 2, 3 } };
-
-struct NonAggregate {
-  NonAggregate();
-
-  int a, b;
-};
-NonAggregate non_aggregate_test = { 1, 2 }; // expected-error{{non-aggregate type 'NonAggregate' cannot be initialized with an initializer list}}
-
-NonAggregate non_aggregate_test2[2] = { { 1, 2 }, { 3, 4 } }; // expected-error 2 {{non-aggregate type 'NonAggregate' cannot be initialized with an initializer list}}
-
-
-// C++ [dcl.init.aggr]p3
-A a_init = A(); 
-
-// C++ [dcl.init.aggr]p4
-int x[] = { 1, 3, 5 };
-int x_sizecheck[(sizeof(x) / sizeof(int)) == 3? 1 : -1];
-int x2[] = { }; // expected-warning{{zero size arrays are an extension}}
-
-// C++ [dcl.init.aggr]p5
-struct StaticMemberTest {
-  int i;
-  static int s;
-  int *j;
-} smt = { 1, &smt.i };
-
-// C++ [dcl.init.aggr]p6
-char cv[4] = { 'a', 's', 'd', 'f', 0 }; // expected-error{{excess elements in array initializer}}
-
-// C++ [dcl.init.aggr]p7
-struct TooFew { int a; char* b; int c; }; 
-TooFew too_few = { 1, "asdf" }; // expected-warning{{conversion from string literal to 'char *' is deprecated}}
-
-struct NoDefaultConstructor { // expected-note 3 {{candidate constructor (the implicit copy constructor)}} \
-                              // expected-note{{declared here}}
-  NoDefaultConstructor(int); // expected-note 3 {{candidate constructor}}
-};
-struct TooFewError { // expected-error{{implicit default constructor for}}
-  int a;
-  NoDefaultConstructor nodef; // expected-note{{member is declared here}}
-};
-TooFewError too_few_okay = { 1, 1 };
-TooFewError too_few_error = { 1 }; // expected-error{{no matching constructor}}
-
-TooFewError too_few_okay2[2] = { 1, 1 }; // expected-note{{implicit default constructor for 'TooFewError' first required here}}
-TooFewError too_few_error2[2] = { 1 }; // expected-error{{no matching constructor}}
-
-NoDefaultConstructor too_few_error3[3] = { }; // expected-error {{no matching constructor}}
-
-// C++ [dcl.init.aggr]p8
-struct Empty { };
-struct EmptyTest {
-  Empty s;
-  int i;
-} empty_test = { { }, 3 };
-
-EmptyTest empty_test2 = { 3 }; // expected-error{{initializer for aggregate with no elements requires explicit braces}}
-
-struct NonEmpty { 
-  int a;
-  Empty empty;
-};
-struct NonEmptyTest {
-  NonEmpty a, b;
-} non_empty_test = { { }, { } };
-
-// C++ [dcl.init.aggr]p9
-struct HasReference {
-  int i;
-  int &j; // expected-note{{uninitialized reference member is here}}
-};
-int global_int;
-HasReference r1 = { 1, global_int };
-HasReference r2 = { 1 } ; // expected-error{{reference member of type 'int &' uninitialized}}
-
-// C++ [dcl.init.aggr]p10
-// Note: the behavior here is identical to C
-int xs[2][2] = { 3, 1, 4, 2 };
-float y[4][3] = { { 1 }, { 2 }, { 3 }, { 4 } };
-
-// C++ [dcl.init.aggr]p11
-// Note: the behavior here is identical to C
-float y2[4][3] = { { 1, 3, 5 }, { 2, 4, 6 }, { 3, 5, 7 } };
-float same_as_y2[4][3] = { 1, 3, 5, 2, 4, 6, 3, 5, 7 };
-
-// C++ [dcl.init.aggr]p12
-struct A2 { 
-  int i;
-  operator int *();
-}; 
-struct B2 {
-  A2 a1, a2; 
-  int *z;
-}; 
-struct C2 {
-  operator A2();
-};
-struct D2 {
-  operator int();
-};
-A2 a2;
-C2 c2; 
-D2 d2;
-B2 b2 = { 4, a2, a2 };
-B2 b2_2 = { 4, d2, 0 };
-B2 b2_3 = { c2, a2, a2 };
-
-// C++ [dcl.init.aggr]p15:
-union u { int a; char* b; }; // expected-note{{candidate constructor (the implicit copy constructor)}}
-u u1 = { 1 }; 
-u u2 = u1; 
-u u3 = 1; // expected-error{{no viable conversion}}
-u u4 = { 0, "asdf" };  // expected-error{{excess elements in union initializer}}
-u u5 = { "asdf" }; // expected-error{{cannot initialize a member subobject of type 'int' with an lvalue of type 'const char [5]'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-expr-ambiguity.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-expr-ambiguity.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-expr-ambiguity.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -Wno-int-to-pointer-cast -fsyntax-only -verify -pedantic-errors %s
-
-void f() {
-  int a;
-  struct S { int m; };
-  typedef S *T;
-
-  // Expressions.
-  T(a)->m = 7;
-  int(a)++; // expected-error {{assignment to cast is illegal}}
-  __extension__ int(a)++; // expected-error {{assignment to cast is illegal}}
-  __typeof(int)(a,5)<<a; // expected-error {{excess elements in scalar initializer}}
-  void(a), ++a;
-  if (int(a)+1) {}
-  for (int(a)+1;;) {} // expected-warning {{expression result unused}}
-  a = sizeof(int()+1);
-  a = sizeof(int(1));
-  typeof(int()+1) a2; // expected-error {{extension used}}
-  (int(1)); // expected-warning {{expression result unused}}
-
-  // type-id
-  (int())1; // expected-error {{C-style cast from 'int' to 'int ()' is not allowed}}
-
-  // Declarations.
-  int fd(T(a)); // expected-warning {{disambiguated as a function declaration}} expected-note{{add a pair of parentheses}}
-  T(*d)(int(p)); // expected-note {{previous}}
-  typedef T td(int(p));
-  extern T tp(int(p));
-  T d3(); // expected-warning {{empty parentheses interpreted as a function declaration}} expected-note {{replace parentheses with an initializer}}
-  T d3v(void);
-  typedef T d3t();
-  extern T f3();
-  __typeof(*T()) f4(); // expected-warning {{empty parentheses interpreted as a function declaration}} expected-note {{replace parentheses with an initializer}}
-  typedef void *V;
-  __typeof(*V()) f5();
-  T multi1,
-    multi2(); // expected-warning {{empty parentheses interpreted as a function declaration}} expected-note {{replace parentheses with an initializer}}
-  T(d)[5]; // expected-error {{redefinition of 'd'}}
-  typeof(int[])(f) = { 1, 2 }; // expected-error {{extension used}}
-  void(b)(int);
-  int(d2) __attribute__(());
-  if (int(a)=1) {}
-  int(d3(int()));
-}
-
-struct RAII {
-  RAII();
-  ~RAII();
-};
-
-void func();
-void func2(short);
-namespace N {
-  struct S;
-
-  void emptyParens() {
-    RAII raii(); // expected-warning {{function declaration}} expected-note {{remove parentheses to declare a variable}}
-    int a, b, c, d, e, // expected-note {{change this ',' to a ';' to call 'func'}}
-    func(); // expected-warning {{function declaration}} expected-note {{replace parentheses with an initializer}}
-
-    S s(); // expected-warning {{function declaration}}
-  }
-  void nonEmptyParens() {
-    int f = 0, // g = 0; expected-note {{change this ',' to a ';' to call 'func2'}}
-    func2(short(f)); // expected-warning {{function declaration}} expected-note {{add a pair of parentheses}}
-  }
-}
-
-class C { };
-void fn(int(C)) { } // void fn(int(*fp)(C c)) { } expected-note{{candidate function}}
-                    // not: void fn(int C);
-int g(C);
-
-void foo() {
-  fn(1); // expected-error {{no matching function}}
-  fn(g); // OK
-}
-
-namespace PR11874 {
-void foo(); // expected-note 3 {{class 'foo' is hidden by a non-type declaration of 'foo' here}}
-class foo {};
-class bar {
-  bar() {
-    const foo* f1 = 0; // expected-error {{must use 'class' tag to refer to type 'foo' in this scope}}
-    foo* f2 = 0; // expected-error {{must use 'class' tag to refer to type 'foo' in this scope}}
-    foo f3; // expected-error {{must use 'class' tag to refer to type 'foo' in this scope}}
-  }
-};
-
-int baz; // expected-note 2 {{class 'baz' is hidden by a non-type declaration of 'baz' here}}
-class baz {};
-void fizbin() {
-  const baz* b1 = 0; // expected-error {{must use 'class' tag to refer to type 'baz' in this scope}}
-  baz* b2; // expected-error {{use of undeclared identifier 'b2'}}
-  baz b3; // expected-error {{must use 'class' tag to refer to type 'baz' in this scope}}
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-init-ref.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-init-ref.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-init-ref.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct A {};
-
-struct BASE {
-  operator A(); // expected-note {{candidate function}}
-};
-
-struct BASE1 {
- operator A();  // expected-note {{candidate function}}
-};
-
-class B : public BASE , public BASE1
-{
-  public:
-  B();
-} b;
-
-extern B f();
-
-const int& ri = (void)0; // expected-error {{reference to type 'const int' could not bind to an rvalue of type 'void'}}
-
-int main() {
-        const A& rca = f(); // expected-error {{reference initialization of type 'const A &' with initializer of type 'B' is ambiguous}}
-        A& ra = f(); // expected-error {{non-const lvalue reference to type 'A' cannot bind to a temporary of type 'B'}}
-}
-
-struct PR6139 { A (&x)[1]; };
-PR6139 x = {{A()}}; // expected-error{{non-const lvalue reference to type 'A [1]' cannot bind to a temporary of type 'A'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-microsoft-call-conv.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-microsoft-call-conv.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decl-microsoft-call-conv.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -triple i686-pc-win32 -cxx-abi microsoft -fms-extensions -verify %s
-
-// Pointers to free functions
-void            free_func_default();
-void __cdecl    free_func_cdecl();
-void __stdcall  free_func_stdcall(); // expected-note {{previous declaration is here}}
-void __fastcall free_func_fastcall(); // expected-note 2 {{previous declaration is here}}
-
-void __cdecl    free_func_default(); // expected-note 2 {{previous declaration is here}}
-void __stdcall  free_func_default(); // expected-error {{function declared 'stdcall' here was previously declared without calling convention}}
-void __fastcall free_func_default(); // expected-error {{function declared 'fastcall' here was previously declared without calling convention}}
-
-void            free_func_cdecl(); // expected-note 2 {{previous declaration is here}}
-void __stdcall  free_func_cdecl(); // expected-error {{function declared 'stdcall' here was previously declared 'cdecl'}}
-void __fastcall free_func_cdecl(); // expected-error {{function declared 'fastcall' here was previously declared 'cdecl'}}
-
-void __cdecl    free_func_stdcall(); // expected-error {{function declared 'cdecl' here was previously declared 'stdcall'}}
-void            free_func_stdcall(); // expected-note {{previous declaration is here}}
-void __fastcall free_func_stdcall(); // expected-error {{function declared 'fastcall' here was previously declared 'stdcall'}}
-
-void __cdecl    free_func_fastcall(); // expected-error {{function declared 'cdecl' here was previously declared 'fastcall'}}
-void __stdcall  free_func_fastcall(); // expected-error {{function declared 'stdcall' here was previously declared 'fastcall'}}
-void            free_func_fastcall();
-
-// Overloaded functions may have different calling conventions
-void __fastcall free_func_default(int);
-void __cdecl    free_func_default(int *);
-
-void __thiscall free_func_cdecl(char *);
-void __cdecl    free_func_cdecl(double);
-
-
-// Pointers to member functions
-struct S {
-  void            member_default1(); // expected-note {{previous declaration is here}}
-  void            member_default2();
-  void __cdecl    member_cdecl1();
-  void __cdecl    member_cdecl2(); // expected-note {{previous declaration is here}}
-  void __thiscall member_thiscall1();
-  void __thiscall member_thiscall2(); // expected-note {{previous declaration is here}}
-  
-  // Static member functions can't be __thiscall
-  static void            static_member_default1();
-  static void            static_member_default2(); // expected-note {{previous declaration is here}}
-  static void __cdecl    static_member_cdecl1();
-  static void __cdecl    static_member_cdecl2(); // expected-note {{previous declaration is here}}
-  static void __stdcall  static_member_stdcall1();
-  static void __stdcall  static_member_stdcall2();
-
-  // Variadic functions can't be other than default or __cdecl
-  void            member_variadic_default(int x, ...);
-  void __cdecl    member_variadic_cdecl(int x, ...);
-
-  static void            static_member_variadic_default(int x, ...);
-  static void __cdecl    static_member_variadic_cdecl(int x, ...);
-};
-
-void __cdecl    S::member_default1() {} // expected-error {{function declared 'cdecl' here was previously declared without calling convention}}
-void __thiscall S::member_default2() {}
-
-void            S::member_cdecl1() {}
-void __thiscall S::member_cdecl2() {} // expected-error {{function declared 'thiscall' here was previously declared 'cdecl'}}
-
-void            S::member_thiscall1() {}
-void __cdecl    S::member_thiscall2() {} // expected-error {{function declared 'cdecl' here was previously declared 'thiscall'}}
-
-void __cdecl    S::static_member_default1() {}
-void __stdcall  S::static_member_default2() {} // expected-error {{function declared 'stdcall' here was previously declared without calling convention}}
-
-void            S::static_member_cdecl1() {}
-void __stdcall  S::static_member_cdecl2() {} // expected-error {{function declared 'stdcall' here was previously declared 'cdecl'}}
-
-void __cdecl    S::member_variadic_default(int x, ...) {
-  (void)x;
-}
-void            S::member_variadic_cdecl(int x, ...) {
-  (void)x;
-}
-
-void __cdecl    S::static_member_variadic_default(int x, ...) {
-  (void)x;
-}
-void            S::static_member_variadic_cdecl(int x, ...) {
-  (void)x;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify %s
-// expected-no-diagnostics
-extern int x;
-__decltype(1) x = 3;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wc++11-compat %s
-
-int& a();
-
-void f() {
-  decltype(a()) c; // expected-warning {{'decltype' is a keyword in C++11}} expected-error {{use of undeclared identifier 'decltype'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-overloaded-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-overloaded-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-overloaded-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-void f();  // expected-note{{possible target for call}}
-void f(int);  // expected-note{{possible target for call}}
-decltype(f) a;  // expected-error{{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}} expected-error {{variable has incomplete type 'decltype(f())' (aka 'void')}}
-
-template<typename T> struct S {
-  decltype(T::f) * f; // expected-error {{call to non-static member function without an object argument}}
-};
-
-struct K { 
-  void f();
-  void f(int);
-};
-S<K> b; // expected-note{{in instantiation of template class 'S<K>' requested here}}
-
-namespace PR13978 {
-  template<typename T> struct S { decltype(1) f(); };
-  template<typename T> decltype(1) S<T>::f() { return 1; }
-
-  // This case is ill-formed (no diagnostic required) because the decltype
-  // expressions are functionally equivalent but not equivalent. It would
-  // be acceptable for us to reject this case.
-  template<typename T> struct U { struct A {}; decltype(A{}) f(); };
-  template<typename T> decltype(typename U<T>::A{}) U<T>::f() {}
-
-  // This case is valid.
-  template<typename T> struct V { struct A {}; decltype(typename V<T>::A{}) f(); };
-  template<typename T> decltype(typename V<T>::A{}) V<T>::f() {}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-pr4444.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-pr4444.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-pr4444.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-
-template<typename T, T t>
-struct TestStruct {
-   typedef decltype(t+2) sum_type;
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-pr4448.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-pr4448.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-pr4448.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-
-template< typename T, T t, decltype(t+2) v >
-struct Convoluted {};
-
-int test_array[5];
-
-Convoluted< int *, test_array, nullptr > tarray;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-this.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-this.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype-this.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-template<typename T, typename U> struct is_same {
-  static const bool value = false;
-};
-
-template<typename T> struct is_same<T, T> {
-  static const bool value = true;
-};
-
-struct S {
-  void f() { static_assert(is_same<decltype(this), S*>::value, ""); }
-  void g() const { static_assert(is_same<decltype(this), const S*>::value, ""); }
-  void h() volatile { static_assert(is_same<decltype(this), volatile S*>::value, ""); }
-  void i() const volatile { static_assert(is_same<decltype(this), const volatile S*>::value, ""); }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/decltype.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-// PR5290
-int const f0();
-void f0_test() {
-  decltype(0, f0()) i = 0;
-  i = 0;
-}
-
-struct A { int a[1]; A() { } };
-typedef A const AC;
-int &f1(int*);
-float &f2(int const*);
-
-void test_f2() {
-  float &fr = f2(AC().a);
-}
-
-namespace pr10154 {
-  class A{
-      A(decltype(nullptr) param);
-  };
-}
-
-template<typename T> struct S {};
-template<typename T> auto f(T t) -> decltype(S<int>(t)) {
-  using U = decltype(S<int>(t));
-  using U = S<int>;
-  return S<int>(t);
-}
-
-struct B {
-  B(decltype(undeclared)); // expected-error {{undeclared identifier}}
-};
-struct C {
-  C(decltype(undeclared; // expected-error {{undeclared identifier}} \
-                         // expected-error {{expected ')'}} expected-note {{to match this '('}}
-};
-
-template<typename>
-class conditional {
-};
-
-void foo(conditional<decltype((1),int>) {  // expected-note 2 {{to match this '('}} expected-error {{expected ')'}}
-} // expected-error {{expected function body after function declarator}} expected-error 2 {{expected '>'}} expected-error {{expected ')'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/default-argument-temporaries.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/default-argument-temporaries.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/default-argument-temporaries.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-struct B { B(void* = 0); };
-
-struct A {
-  A(B b = B()) { }
-};
-
-void f() {
-  (void)B();
-  (void)A();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/default-assignment-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/default-assignment-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/default-assignment-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,118 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class Base { // expected-error {{cannot define the implicit default assignment operator for 'Base', because non-static reference member 'ref' can't use default assignment operator}} \
-  // expected-warning{{class 'Base' does not declare any constructor to initialize its non-modifiable members}}
-  int &ref;  // expected-note {{declared here}} \
-  // expected-note{{reference member 'ref' will never be initialized}}
-};
-
-class X  : Base {  // // expected-error {{cannot define the implicit default assignment operator for 'X', because non-static const member 'cint' can't use default assignment operator}} \
-// expected-note{{assignment operator for 'Base' first required here}}
-public: 
-  X();
-  const int cint;  // expected-note {{declared here}}
-}; 
-
-struct Y  : X { 
-  Y();
-  Y& operator=(const Y&);
-  Y& operator=(volatile Y&);
-  Y& operator=(const volatile Y&);
-  Y& operator=(Y&);
-}; 
-
-class Z : Y {};
-
-Z z1;
-Z z2;
-
-// Test1
-void f(X x, const X cx) {
-  x = cx; // expected-note{{assignment operator for 'X' first required here}}
-  x = cx;
-  z1 = z2;
-}
-
-// Test2
-class T {};
-T t1;
-T t2;
-
-void g() {
-  t1 = t2;
-}
-
-// Test3
-class V {
-public:
-  V();
-  V &operator = (V &b);
-};
-
-class W : V {};
-W w1, w2;
-
-void h() {
-  w1 = w2;
-}
-
-// Test4
-
-class B1 {
-public:
-  B1();
-  B1 &operator = (B1 b);
-};
-
-class D1 : B1 {};
-D1 d1, d2;
-
-void i() {
-  d1 = d2;
-}
-
-// Test5
-
-class E1 { // expected-error{{cannot define the implicit default assignment operator for 'E1', because non-static const member 'a' can't use default assignment operator}}
-
-public:
-  const int a; // expected-note{{declared here}}
-  E1() : a(0) {}  
-
-};
-
-E1 e1, e2;
-
-void j() {
-  e1 = e2; // expected-note{{assignment operator for 'E1' first required here}}
-}
-
-namespace ProtectedCheck {
-  struct X {
-  protected:
-    X &operator=(const X&); // expected-note{{declared protected here}}
-  };
-
-  struct Y : public X { };
-
-  void f(Y y) { y = y; }
-
-  struct Z { // expected-error{{'operator=' is a protected member of 'ProtectedCheck::X'}}
-    X x;
-  };
-
-  void f(Z z) { z = z; }  // expected-note{{implicit default copy assignment operator}}
-
-}
-
-namespace MultiplePaths {
-  struct X0 { 
-    X0 &operator=(const X0&);
-  };
-
-  struct X1 : public virtual X0 { };
-
-  struct X2 : X0, X1 { };
-
-  void f(X2 x2) { x2 = x2; }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/default-constructor-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/default-constructor-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/default-constructor-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct X1 { // has no implicit default constructor
-   X1(int);
-};
-
-struct X2  : X1 {  // expected-note 2 {{'X2' declared here}}
-   X2(int);
-};
-
-struct X3 : public X2 { // expected-error {{implicit default constructor for 'X3' must explicitly initialize the base class 'X2' which does not have a default constructor}}
-};
-X3 x3; // expected-note {{first required here}}
-
-
-struct X4 { // expected-error {{must explicitly initialize the member 'x2'}} \
-            // expected-error {{must explicitly initialize the reference member 'rx2'}}
-  X2 x2; 	// expected-note {{member is declared here}}
-  X2 & rx2; // expected-note {{declared here}}
-};
-
-X4 x4; // expected-note {{first required here}}
-
-
-struct Y1 { // has no implicit default constructor
-   Y1(int);
-};
-
-struct Y2  : Y1 { 
-   Y2(int);
-   Y2();
-};
-
-struct Y3 : public Y2 {
-};
-Y3 y3; 
-
-struct Y4 {
-  Y2 y2; 
-};
-
-Y4 y4;
-
-// More tests
-
-struct Z1 { // expected-error {{must explicitly initialize the reference member 'z'}} \
-            // expected-error {{must explicitly initialize the const member 'c1'}}
-  int& z;       // expected-note {{declared here}}
-  const int c1; // expected-note {{declared here}}
-  volatile int v1;
-};
-
-// Test default initialization which *requires* a constructor call for non-POD.
-Z1 z1; // expected-note {{first required here}}
-
-// Ensure that value initialization doesn't use trivial implicit constructors.
-namespace PR7948 {
-  // Note that this is also non-POD to ensure we don't just special case PODs.
-  struct S { const int x; ~S(); };
-  const S arr[2] = { { 42 } };
-}
-
-// This is valid
-union U {
-  const int i;
-  float f;
-};
-U u;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/default1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/default1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/default1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-void f(int i);
-void f(int i = 0); // expected-note {{previous definition is here}}
-void f(int i = 17); // expected-error {{redefinition of default argument}}
-
-
-void g(int i, int j, int k = 3);
-void g(int i, int j = 2, int k);
-void g(int i = 1, int j, int k);
-
-void h(int i, int j = 2, int k = 3, 
-       int l, // expected-error {{missing default argument on parameter 'l'}}
-       int,   // expected-error {{missing default argument on parameter}}
-       int n);// expected-error {{missing default argument on parameter 'n'}}
-
-struct S { } s;
-void i(int = s) { } // expected-error {{no viable conversion}} \
-// expected-note{{passing argument to parameter here}}
-
-struct X { 
-  X(int);
-};
-
-void j(X x = 17);
-
-struct Y { // expected-note 2{{candidate}}
-  explicit Y(int);
-};
-
-void k(Y y = 17); // expected-error{{no viable conversion}} \
-// expected-note{{passing argument to parameter 'y' here}}
-
-void kk(Y = 17); // expected-error{{no viable conversion}} \
-// expected-note{{passing argument to parameter here}}
-
-int l () {
-  int m(int i, int j, int k = 3);
-  if (1)
-  {
-    int m(int i, int j = 2, int k = 4);
-    m(8);
-  }
-  return 0;
-}
-
-int i () {
-  void j (int f = 4);
-  {
-    void j (int f); // expected-note{{'j' declared here}}
-    j(); // expected-error{{too few arguments to function call, single argument 'f' was not specified}}
-  }
-}
-
-int i2() {
-  void j(int f = 4); // expected-note{{'j' declared here}}
-  {
-    j(2, 3); // expected-error{{too many arguments to function call, expected at most single argument 'f', have 2}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/default2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/default2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/default2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,124 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f(int i, int j, int k = 3);
-void f(int i, int j, int k);
-void f(int i, int j = 2, int k);
-void f(int i, int j, int k);
-void f(int i = 1, int j, int k);
-void f(int i, int j, int k);
-
-void i()
-{
-  f();
-  f(0);
-  f(0, 1);
-  f(0, 1, 2);
-}
-
-
-int f1(int i,          // expected-note {{previous declaration is here}}
-       int i, int j) { // expected-error {{redefinition of parameter 'i'}}
-  i = 17;
-  return j;
-} 
-
-int x;
-void g(int x, int y = x); // expected-error {{default argument references parameter 'x'}}
-
-void g2(int x, int y, int z = x + y); // expected-error {{default argument references parameter 'x'}} expected-error {{default argument references parameter 'y'}}
-
-class X {
-  void f(X* x = this); // expected-error{{invalid use of 'this' outside of a non-static member function}}
-
-  void g() { 
-    int f(X* x = this); // expected-error{{default argument references 'this'}}
-  }
-};
-
-// C++ [dcl.fct.default]p6
-class C { 
-  static int x;
-  void f(int i = 3); // expected-note{{previous definition is here}}
-  void g(int i, int j = x); 
-
-  void h();
-}; 
-void C::f(int i = 3) // expected-error{{redefinition of default argument}}
-{ } 
-
-void C::g(int i = 88, int j) {}
-
-void C::h() {
-  g(); // okay
-}
-
-// C++ [dcl.fct.default]p9
-struct Y { 
-  int a; 
-  int mem1(int i = a); // expected-error{{invalid use of non-static data member 'a'}}
-  int mem2(int i = b); // OK; use Y::b 
-  int mem3(int i);
-  int mem4(int i);
-
-  struct Nested {
-    int mem5(int i = b, // OK; use Y::b
-             int j = c, // OK; use Y::Nested::c
-             int k = j, // expected-error{{default argument references parameter 'j'}}
-             int l = a,  // expected-error{{invalid use of non-static data member 'a'}}
-             Nested* self = this, // expected-error{{invalid use of 'this' outside of a non-static member function}}
-             int m); // expected-error{{missing default argument on parameter 'm'}}
-    static int c;
-    Nested(int i = 42);
-  };
-
-  int mem7(Nested n = Nested());
-
-  static int b; 
-}; 
-
-int Y::mem3(int i = b) { return i; } // OK; use X::b
-
-int Y::mem4(int i = a) // expected-error{{invalid use of non-static data member 'a'}}
-{ return i; }
-
-
-// Try to verify that default arguments interact properly with copy
-// constructors.
-class Z {
-public:
-  Z(Z&, int i = 17); // expected-note 3 {{candidate constructor}}
-
-  void f(Z& z) { 
-    Z z2;    // expected-error{{no matching constructor for initialization}}
-    Z z3(z);
-  }
-
-  void test_Z(const Z& z) {
-    Z z2(z); // expected-error{{no matching constructor for initialization of 'Z'}}
-  }
-};
-
-void test_Z(const Z& z) {
-  Z z2(z); // expected-error{{no matching constructor for initialization of 'Z'}}
-}
-
-struct ZZ {
-  static ZZ g(int = 17);
-
-  void f(ZZ z = g()); // expected-error{{no matching constructor for initialization}} \
-  // expected-note{{passing argument to parameter 'z' here}}
-
-  ZZ(ZZ&, int = 17); // expected-note{{candidate constructor}}
-};
-
-// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#325
-class C2 {
-  static void g(int = f()); // expected-error{{use of default argument to function 'f' that is declared later in class 'C2'}}
-  static int f(int = 10); // expected-note{{default argument declared here}}
-};
-
-// Make sure we actually parse the default argument for an inline definition
-class XX {
-  void A(int length = -1 ) {  } 
-  void B() { A(); }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/defaulted-ctor-loop.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/defaulted-ctor-loop.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/defaulted-ctor-loop.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// WARNING: This test may recurse infinitely if failing.
-
-struct foo;
-struct bar {
-  bar(foo&);
-};
-struct foo {
-  bar b;
-  foo()
-    : b(b) // expected-warning{{field 'b' is uninitialized}}
-  {}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/defaulted-private-dtor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/defaulted-private-dtor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/defaulted-private-dtor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -verify -std=c++11 %s -fcxx-exceptions
-
-class BadDtor {
-  // A private, but nonetheless trivial, destructor.
-  ~BadDtor() = default; // expected-note 9{{here}}
-  friend class K;
-};
-void f() {
-  BadDtor *p = new BadDtor[3]; // expected-error {{private destructor}}
-  delete [] p; // expected-error {{private destructor}}
-  const BadDtor &dd2 = BadDtor(); // expected-error {{private destructor}}
-  BadDtor dd; // expected-error {{private destructor}}
-  throw dd; // expected-error {{private destructor}}
-}
-struct V {
-  V();
-  BadDtor bd; // expected-note {{inaccessible destructor}}
-};
-V v; // expected-error {{deleted function}}
-struct W : BadDtor { // expected-note {{inaccessible destructor}}
-  W();
-};
-W w; // expected-error {{deleted function}}
-struct X : BadDtor { // expected-error {{private destructor}}
-  ~X() {}
-};
-struct Y {
-  BadDtor dd; // expected-error {{private destructor}}
-  ~Y() {}
-};
-struct Z : virtual BadDtor { // expected-error {{private destructor}}
-  ~Z() {}
-};
-BadDtor dd; // expected-error {{private destructor}}
-
-class K : BadDtor {
-  void f() {
-    BadDtor *p = new BadDtor[3];
-    delete [] p;
-    const BadDtor &dd2 = BadDtor();
-    BadDtor dd;
-    throw dd;
-
-    {
-      BadDtor x;
-      goto dont_call_dtor;
-    }
-dont_call_dtor:
-    ;
-  }
-  struct Z : virtual BadDtor {
-    ~Z() {}
-  };
-  BadDtor dd;
-  ~K();
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/delete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/delete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/delete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: cp %s %t
-// RUN: %clang_cc1 -fixit -x c++ %t
-// RUN: %clang_cc1 -E -o - %t | FileCheck %s
-
-void f(int a[10][20]) {
-  // CHECK: delete[] a;
-  delete a; // expected-warning {{'delete' applied to a pointer-to-array type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/deleted-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/deleted-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/deleted-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -fcxx-exceptions %s
-
-int i = delete; // expected-error {{only functions can have deleted definitions}}
-
-void fn() = delete; // expected-note {{candidate function has been explicitly deleted}}
-
-void fn2(); // expected-note {{previous declaration is here}}
-void fn2() = delete; // expected-error {{deleted definition must be first declaration}}
-
-void fn3() = delete; // expected-note {{previous definition is here}}
-void fn3() { // expected-error {{redefinition}}
-}
-
-void ov(int) {} // expected-note {{candidate function}}
-void ov(double) = delete; // expected-note {{candidate function has been explicitly deleted}}
-
-struct WithDel {
-  WithDel() = delete; // expected-note {{function has been explicitly marked deleted here}}
-  void fn() = delete; // expected-note {{function has been explicitly marked deleted here}}
-  operator int() = delete; // expected-note {{function has been explicitly marked deleted here}}
-  void operator +(int) = delete;
-
-  int i = delete; // expected-error {{only functions can have deleted definitions}}
-};
-
-void test() {
-  fn(); // expected-error {{call to deleted function 'fn'}}
-  ov(1);
-  ov(1.0); // expected-error {{call to deleted function 'ov'}}
-
-  WithDel dd; // expected-error {{call to deleted constructor of 'WithDel'}}
-  WithDel *d = 0;
-  d->fn(); // expected-error {{attempt to use a deleted function}}
-  int i = *d; // expected-error {{invokes a deleted function}}
-}
-
-struct DelDtor {
-  ~DelDtor() = delete; // expected-note 9{{here}}
-};
-void f() {
-  DelDtor *p = new DelDtor[3]; // expected-error {{attempt to use a deleted function}}
-  delete [] p; // expected-error {{attempt to use a deleted function}}
-  const DelDtor &dd2 = DelDtor(); // expected-error {{attempt to use a deleted function}}
-  DelDtor dd; // expected-error {{attempt to use a deleted function}}
-  throw dd; // expected-error {{attempt to use a deleted function}}
-}
-struct X : DelDtor {
-  ~X() {} // expected-error {{attempt to use a deleted function}}
-};
-struct Y {
-  DelDtor dd;
-  ~Y() {} // expected-error {{attempt to use a deleted function}}
-};
-struct Z : virtual DelDtor {
-  ~Z() {} // expected-error {{attempt to use a deleted function}}
-};
-DelDtor dd; // expected-error {{attempt to use a deleted function}}
-
-template<typename> void test2() = delete;
-template void test2<int>();
-
-template<typename> void test3() = delete;
-template<typename> void test3();
-template void test3<int>();
-
-void test4() {} // expected-note {{previous definition is here}}
-void test4() = delete; // expected-error {{redefinition of 'test4'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/deleted-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/deleted-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/deleted-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct PR10757 {
-  bool operator~() = delete; // expected-note {{explicitly deleted}}
-  bool operator==(const PR10757&) = delete; // expected-note {{explicitly deleted}}
-  operator float();
-};
-int PR10757f() {
-  PR10757 a1;
-  // FIXME: We get a ridiculous number of "built-in candidate" notes here...
-  if(~a1) {} // expected-error {{overload resolution selected deleted operator}} expected-note 8 {{built-in candidate}}
-  if(a1==a1) {} // expected-error {{overload resolution selected deleted operator}} expected-note 121 {{built-in candidate}}
-}
-
-struct DelOpDel {
-  virtual ~DelOpDel() {} // expected-error {{deleted function}}
-  void operator delete(void*) = delete; // expected-note {{deleted here}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-auto.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-auto.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-auto.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-template<typename T>
-struct only {
-  only(T);
-  template<typename U> only(U) = delete; // expected-note {{here}}
-};
-
-template<typename ...T>
-void f(T ...t) {
-  auto x(t...); // expected-error {{is empty}} expected-error {{contains multiple expressions}}
-  only<int> check = x;
-}
-
-void g() {
-  f(); // expected-note {{here}}
-  f(0);
-  f(0, 1); // expected-note {{here}}
-}
-
-
-template<typename T>
-bool h(T t) {
-  auto a = t;
-  decltype(a) b;
-  a = a + b;
-
-  auto p = new auto(t);
-
-  only<double*> test = p; // expected-error {{conversion function from 'char *' to 'only<double *>'}}
-  return p;
-}
-
-bool b = h('x'); // expected-note {{here}}
-
-// PR 9276 - Make sure we check auto types deduce the same
-// in the case of a dependent initializer
-namespace PR9276 {
-  template<typename T>
-  void f() {
-    auto i = T(), j = 0; // expected-error {{deduced as 'long' in declaration of 'i' and deduced as 'int' in declaration of 'j'}}
-  }
-
-  void g() {
-    f<long>(); // expected-note {{here}}
-    f<int>();
-  }
-}
-
-namespace NoRepeatedDiagnostic {
-  template<typename T>
-  void f() {
-    auto a = 0, b = 0.0, c = T(); // expected-error {{deduced as 'int' in declaration of 'a' and deduced as 'double' in declaration of 'b'}}
-  }
-  // We've already diagnosed an issue. No extra diagnostics is needed for these.
-  template void f<int>();
-  template void f<double>();
-  template void f<char>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-noexcept-unevaluated.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s
-
-template <class T>
-T&&
-declval() noexcept;
-
-template <class T>
-struct some_trait
-{
-    static const bool value = false;
-};
-
-template <class T>
-void swap(T& x, T& y) noexcept(some_trait<T>::value)
-{
-    T tmp(static_cast<T&&>(x));
-    x = static_cast<T&&>(y);
-    y = static_cast<T&&>(tmp);
-}
-
-template <class T, unsigned N>
-struct array
-{
-    T data[N];
-
-    void swap(array& a) noexcept(noexcept(swap(declval<T&>(), declval<T&>())));
-};
-
-struct DefaultOnly
-{
-    DefaultOnly() = default;
-    DefaultOnly(const DefaultOnly&) = delete;
-    DefaultOnly& operator=(const DefaultOnly&) = delete;
-    ~DefaultOnly() = default;
-};
-
-int main()
-{
-    array<DefaultOnly, 1> a, b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/dependent-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify -std=c++11 %s
-
-template<typename T> using U = int &;
-
-template<typename T, int Size> void f() {
-  T x1;
-  T* x2;
-  T& x3; // expected-error{{declaration of reference variable 'x3' requires an initializer}}
-  T x4[]; // expected-error{{needs an explicit size or an initializer}}
-  T x5[Size];
-  int x6[Size];
-  U<T> x7; // expected-error{{declaration of reference variable 'x7' requires an initializer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/derived-to-base-ambig.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/derived-to-base-ambig.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/derived-to-base-ambig.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class A { };
-class B : public A { };
-class C : public A { };
-class D : public B, public C { };
-
-void f(D* d) {
-  A* a;
-  a = d; // expected-error{{ambiguous conversion from derived class 'D' to base class 'A':}} expected-error{{assigning to 'A *' from incompatible type 'D *'}}
-}
-
-class Object2 { };
-class A2 : public Object2 { };
-class B2 : public virtual A2 { };
-class C2 : virtual public A2 { };
-class D2 : public B2, public C2 { };
-class E2 : public D2, public C2, public virtual A2 { };
-class F2 : public E2, public A2 { };
-
-void g(E2* e2, F2* f2) {
-  Object2* o2;
-  o2 = e2;
-  o2 = f2; // expected-error{{ambiguous conversion from derived class 'F2' to base class 'Object2':}} expected-error{{assigning to 'Object2 *' from incompatible type 'F2 *'}}
-}
-
-// Test that ambiguous/inaccessibility checking does not trigger too
-// early, because it should not apply during overload resolution.
-void overload_okay(Object2*);
-void overload_okay(E2*);
-
-void overload_call(F2* f2) {
-  overload_okay(f2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/destructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/destructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/destructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,365 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -verify %s
-class A {
-public:
-  ~A();
-};
-
-class B {
-public:
-  ~B() { }
-};
-
-class C {
-public:
-  (~C)() { }
-};
-
-struct D {
-  static void ~D(int, ...) const { } //                          \
-    // expected-error{{static member function cannot have 'const' qualifier}} \
-    // expected-error{{destructor cannot be declared 'static'}}  \
-    // expected-error{{destructor cannot have any parameters}}   \
-    // expected-error{{destructor cannot be variadic}} \
-    // expected-error{{destructor cannot have a return type}} \
-    // expected-error{{'const' qualifier is not allowed on a destructor}}
-};
-
-struct D2 {
-  void ~D2() { } //                          \
-  // expected-error{{destructor cannot have a return type}}  
-};
-
-
-struct E;
-
-typedef E E_typedef;
-struct E {
-  ~E_typedef(); // expected-error{{destructor cannot be declared using a typedef 'E_typedef' (aka 'E') of the class name}}
-};
-
-struct F {
-  (~F)(); // expected-note {{previous declaration is here}}
-  ~F(); // expected-error {{destructor cannot be redeclared}}
-};
-
-~; // expected-error {{expected a class name after '~' to name a destructor}}
-~undef(); // expected-error {{expected the class name after '~' to name a destructor}}
-~operator+(int, int);  // expected-error {{expected a class name after '~' to name a destructor}}
-~F(){} // expected-error {{destructor must be a non-static member function}}
-
-struct G {
-  ~G();
-};
-
-G::~G() { }
-
-// <rdar://problem/6841210>
-struct H {
-  ~H(void) { } 
-};
-
-struct X {};
-
-struct Y {
-  ~X(); // expected-error {{expected the class name after '~' to name the enclosing class}}
-};
-
-namespace PR6421 {
-  class T; // expected-note{{forward declaration}}
-
-  class QGenericArgument // expected-note{{declared here}}
-  {
-    template<typename U>
-    void foo(T t) // expected-error{{variable has incomplete type}}
-    { }
-    
-    void disconnect()
-    {
-      T* t;
-      bob<QGenericArgument>(t); // expected-error{{undeclared identifier 'bob'}} \
-      // expected-error{{does not refer to a value}}
-    }
-  };
-}
-
-namespace PR6709 {
-  template<class T> class X { T v; ~X() { ++*v; } };
-  void a(X<int> x) {}
-}
-
-struct X0 { virtual ~X0() throw(); };
-struct X1 : public X0 { };
-
-// Make sure we instantiate operator deletes when building a virtual
-// destructor.
-namespace test6 {
-  template <class T> class A {
-  public:
-    void *operator new(__SIZE_TYPE__);
-    void operator delete(void *p) {
-      T::deleteIt(p); // expected-error {{type 'int' cannot be used prior to '::'}}
-    }
-
-    virtual ~A() {}
-  };
-
-  class B : A<int> { B(); }; // expected-note {{in instantiation of member function 'test6::A<int>::operator delete' requested here}}
-  B::B() {}
-}
-
-// Make sure classes are marked invalid when they have invalid
-// members.  This avoids a crash-on-invalid.
-namespace test7 {
-  struct A {
-    ~A() const; // expected-error {{'const' qualifier is not allowed on a destructor}}
-  };
-  struct B : A {};
-
-  void test() {
-    B *b;
-    b->~B();
-  }
-}
-
-namespace nonvirtualdtor {
-struct S1 { // expected-warning {{has virtual functions but non-virtual destructor}}
-  virtual void m();
-};
-
-struct S2 {
-  ~S2(); // expected-warning {{has virtual functions but non-virtual destructor}}
-  virtual void m();
-};
-
-struct S3 : public S1 {  // expected-warning {{has virtual functions but non-virtual destructor}}
-  virtual void m();
-};
-
-struct S4 : public S2 {  // expected-warning {{has virtual functions but non-virtual destructor}}
-  virtual void m();
-};
-
-struct B {
-  virtual ~B();
-  virtual void m();
-};
-
-struct S5 : public B {
-  virtual void m();
-};
-
-struct S6 {
-  virtual void m();
-private:
-  ~S6();
-};
-
-struct S7 {
-  virtual void m();
-protected:
-  ~S7();
-};
-
-template<class T> class TS : public B {
-  virtual void m();
-};
-
-TS<int> baz;
-
-template<class T> class TS2 { // expected-warning {{'nonvirtualdtor::TS2<int>' has virtual functions but non-virtual destructor}}
-  virtual void m();
-};
-
-TS2<int> foo; // expected-note {{instantiation}}
-}
-
-namespace dnvd { // delete-non-virtual-dtor warning
-struct NP {};
-
-struct B { // expected-warning {{has virtual functions but non-virtual destructor}}
-  virtual void foo();
-};
-
-struct D: B {}; // expected-warning {{has virtual functions but non-virtual destructor}}
-
-struct F final: B {}; // expected-warning {{has virtual functions but non-virtual destructor}}
-
-struct VB {
-  virtual void foo();
-  virtual ~VB();
-};
-
-struct VD: VB {};
-
-struct VF final: VB {};
-
-template <typename T>
-class simple_ptr {
-public:
-  simple_ptr(T* t): _ptr(t) {}
-  ~simple_ptr() { delete _ptr; } // \
-    // expected-warning {{delete called on 'dnvd::B' that has virtual functions but non-virtual destructor}} \
-    // expected-warning {{delete called on 'dnvd::D' that has virtual functions but non-virtual destructor}}
-  T& operator*() const { return *_ptr; }
-private:
-  T* _ptr;
-};
-
-template <typename T>
-class simple_ptr2 {
-public:
-  simple_ptr2(T* t): _ptr(t) {}
-  ~simple_ptr2() { delete _ptr; } // expected-warning {{delete called on 'dnvd::B' that has virtual functions but non-virtual destructor}}
-  T& operator*() const { return *_ptr; }
-private:
-  T* _ptr;
-};
-
-void use(B&);
-void use(VB&);
-
-void nowarnstack() {
-  B b; use(b);
-  D d; use(d);
-  F f; use(f);
-  VB vb; use(vb);
-  VD vd; use(vd);
-  VF vf; use(vf);
-}
-
-void nowarnnonpoly() {
-  {
-    NP* np = new NP();
-    delete np;
-  }
-  {
-    NP* np = new NP[4];
-    delete[] np;
-  }
-}
-
-void nowarnarray() {
-  {
-    B* b = new B[4];
-    delete[] b;
-  }
-  {
-    D* d = new D[4];
-    delete[] d;
-  }
-  {
-    VB* vb = new VB[4];
-    delete[] vb;
-  }
-  {
-    VD* vd = new VD[4];
-    delete[] vd;
-  }
-}
-
-template <typename T>
-void nowarntemplate() {
-  {
-    T* t = new T();
-    delete t;
-  }
-  {
-    T* t = new T[4];
-    delete[] t;
-  }
-}
-
-void nowarn0() {
-  {
-    F* f = new F();
-    delete f;
-  }
-  {
-    VB* vb = new VB();
-    delete vb;
-  }
-  {
-    VB* vb = new VD();
-    delete vb;
-  }
-  {
-    VD* vd = new VD();
-    delete vd;
-  }
-  {
-    VF* vf = new VF();
-    delete vf;
-  }
-}
-
-void warn0() {
-  {
-    B* b = new B();
-    delete b; // expected-warning {{delete called on 'dnvd::B' that has virtual functions but non-virtual destructor}}
-  }
-  {
-    B* b = new D();
-    delete b; // expected-warning {{delete called on 'dnvd::B' that has virtual functions but non-virtual destructor}}
-  }
-  {
-    D* d = new D();
-    delete d; // expected-warning {{delete called on 'dnvd::D' that has virtual functions but non-virtual destructor}}
-  }
-}
-
-void nowarn1() {
-  {
-    simple_ptr<F> f(new F());
-    use(*f);
-  }
-  {
-    simple_ptr<VB> vb(new VB());
-    use(*vb);
-  }
-  {
-    simple_ptr<VB> vb(new VD());
-    use(*vb);
-  }
-  {
-    simple_ptr<VD> vd(new VD());
-    use(*vd);
-  }
-  {
-    simple_ptr<VF> vf(new VF());
-    use(*vf);
-  }
-}
-
-void warn1() {
-  {
-    simple_ptr<B> b(new B()); // expected-note {{in instantiation of member function 'dnvd::simple_ptr<dnvd::B>::~simple_ptr' requested here}}
-    use(*b);
-  }
-  {
-    simple_ptr2<B> b(new D()); // expected-note {{in instantiation of member function 'dnvd::simple_ptr2<dnvd::B>::~simple_ptr2' requested here}}
-    use(*b);
-  }
-  {
-    simple_ptr<D> d(new D()); // expected-note {{in instantiation of member function 'dnvd::simple_ptr<dnvd::D>::~simple_ptr' requested here}}
-    use(*d);
-  }
-}
-}
-
-namespace PR9238 {
-  class B { public: ~B(); };
-  class C : virtual B { public: ~C() { } };
-}
-
-namespace PR7900 {
-  struct A { // expected-note 2{{type 'PR7900::A' is declared here}}
-  };
-  struct B : public A {
-  };
-  void foo() {
-    B b;
-    b.~B();
-    b.~A(); // expected-error{{destructor type 'PR7900::A' in object destruction expression does not match the type 'PR7900::B' of the object being destroyed}}
-    (&b)->~A(); // expected-error{{destructor type 'PR7900::A' in object destruction expression does not match the type 'PR7900::B' of the object being destroyed}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/direct-initializer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/direct-initializer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/direct-initializer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-int x(1);
-int (x2)(1);
-
-void f() {
-  int x(1);
-  int (x2)(1);
-  for (int x(1);;) {}
-}
-
-class Y { 
-public: explicit Y(float);
-};
-
-class X { // expected-note{{candidate constructor (the implicit copy constructor)}}
-public:
-  explicit X(int); // expected-note{{candidate constructor}}
-  X(float, float, float); // expected-note{{candidate constructor}}
-  X(float, Y); // expected-note{{candidate constructor}}
-};
-
-class Z { // expected-note{{candidate constructor (the implicit copy constructor)}}
-public:
-  Z(int); // expected-note{{candidate constructor}}
-};
-
-void g() {
-  X x1(5);
-  X x2(1.0, 3, 4.2);
-  X x3(1.0, 1.0); // expected-error{{no matching constructor for initialization of 'X'}}
-  Y y(1.0);
-  X x4(3.14, y);
-
-  Z z; // expected-error{{no matching constructor for initialization of 'Z'}}
-}
-
-struct Base {
-   operator int*() const; 
-};
-
-struct Derived : Base {
-   operator int*(); // expected-note {{candidate function}}
-};
-
-void foo(const Derived cd, Derived d) {
-        int *pi = cd;	// expected-error {{no viable conversion from 'const Derived' to 'int *'}}
-        int *ppi = d; 
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/discrim-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/discrim-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/discrim-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,118 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 %s -fsyntax-only -fcxx-exceptions
-
-template<typename T> struct remove_reference { typedef T type; };
-template<typename T> struct remove_reference<T&> { typedef T type; };
-template<typename T> struct remove_reference<T&&> { typedef T type; };
-
-template<typename T> constexpr T &&forward(typename remove_reference<T>::type &t) noexcept { return static_cast<T&&>(t); }
-template<typename T> constexpr T &&forward(typename remove_reference<T>::type &&t) noexcept { return static_cast<T&&>(t); }
-template<typename T> constexpr typename remove_reference<T>::type &&move(T &&t) noexcept { return static_cast<typename remove_reference<T>::type&&>(t); }
-
-template<typename T> T declval() noexcept;
-
-namespace detail {
-  template<unsigned N> struct select {}; // : integral_constant<unsigned, N> {};
-  template<typename T> struct type {};
-
-  template<typename...T> union either_impl;
-
-  template<> union either_impl<> {
-    void get(...);
-    void destroy(...) { throw "logic_error"; }
-  };
-
-  template<typename T, typename...Ts> union either_impl<T, Ts...> {
-  private:
-    T val;
-    either_impl<Ts...> rest;
-    typedef either_impl<Ts...> rest_t;
-
-  public:
-    constexpr either_impl(select<0>, T &&t) : val(move(t)) {}
-
-    template<unsigned N, typename U>
-    constexpr either_impl(select<N>, U &&u) : rest(select<N-1>(), move(u)) {}
-
-    constexpr static unsigned index(type<T>) { return 0; }
-    template<typename U>
-    constexpr static unsigned index(type<U> t) {
-      return decltype(rest)::index(t) + 1;
-    }
-
-    void destroy(unsigned elem) {
-      if (elem)
-        rest.destroy(elem - 1);
-      else
-        val.~T();
-    }
-
-    constexpr const T &get(select<0>) { return val; }
-    template<unsigned N> constexpr const decltype(static_cast<const rest_t&>(rest).get(select<N-1>{})) get(select<N>) {
-      return rest.get(select<N-1>{});
-    }
-  };
-}
-
-template<typename T>
-struct a {
-  T value;
-  template<typename...U>
-  constexpr a(U &&...u) : value{forward<U>(u)...} {}
-};
-template<typename T> using an = a<T>;
-
-template<typename T, typename U> T throw_(const U &u) { throw u; }
-
-template<typename...T>
-class either {
-  unsigned elem;
-  detail::either_impl<T...> impl;
-  typedef decltype(impl) impl_t;
-
-public:
-  template<typename U>
-  constexpr either(a<U> &&t) :
-    elem(impl_t::index(detail::type<U>())),
-    impl(detail::select<impl_t::index(detail::type<U>())>(), move(t.value)) {}
-
-  // Destruction disabled to allow use in a constant expression.
-  // FIXME: declare a destructor iff any element has a nontrivial destructor
-  //~either() { impl.destroy(elem); }
-
-  constexpr unsigned index() noexcept { return elem; }
-
-  template<unsigned N> using const_get_result =
-    decltype(static_cast<const impl_t&>(impl).get(detail::select<N>{}));
-
-  template<unsigned N>
-  constexpr const_get_result<N> get() {
-    // Can't just use throw here, since that makes the conditional a prvalue,
-    // which means we return a reference to a temporary.
-    return (elem != N ? throw_<const_get_result<N>>("bad_either_get")
-                      : impl.get(detail::select<N>{}));
-  }
-
-  template<typename U>
-  constexpr const U &get() {
-    return get<impl_t::index(detail::type<U>())>();
-  }
-};
-
-typedef either<int, char, double> icd;
-constexpr icd icd1 = an<int>(4);
-constexpr icd icd2 = a<char>('x');
-constexpr icd icd3 = a<double>(6.5);
-
-static_assert(icd1.get<int>() == 4, "");
-static_assert(icd2.get<char>() == 'x', "");
-static_assert(icd3.get<double>() == 6.5, "");
-
-struct non_triv {
-  constexpr non_triv() : n(5) {}
-  int n;
-};
-constexpr either<const icd*, non_triv> icd4 = a<const icd*>(&icd2);
-constexpr either<const icd*, non_triv> icd5 = a<non_triv>();
-
-static_assert(icd4.get<const icd*>()->get<char>() == 'x', "");
-static_assert(icd5.get<non_triv>().n == 5, "");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/do-while-scope.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/do-while-scope.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/do-while-scope.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// expected-no-diagnostics
-
-void test() {
-  int x;
-  do
-    int x;
-  while (1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/dr1301.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/dr1301.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/dr1301.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-struct A { // expected-note 2{{candidate}}
-  A(int); // expected-note {{candidate}}
-  int n;
-};
-int a = A().n; // expected-error {{no matching constructor}}
-
-struct B {
-  B() = delete; // expected-note 3{{here}}
-  int n;
-};
-int b = B().n; // expected-error {{call to deleted}}
-
-struct C {
-  B b; // expected-note {{deleted default constructor}}
-};
-int c = C().b.n; // expected-error {{call to implicitly-deleted default}}
-
-struct D {
-  D() = default; // expected-note {{here}}
-  B b; // expected-note {{'b' has a deleted default constructor}}
-};
-int d = D().b.n; // expected-error {{call to implicitly-deleted default}}
-
-struct E {
-  E() = default;
-  int n;
-};
-int e = E().n; // ok
-
-struct F {
-  F();
-  int n;
-};
-int f = F().n; // ok
-
-union G {
-  F f; // expected-note {{non-trivial default constructor}}
-};
-int g = G().f.n; // expected-error {{call to implicitly-deleted default}}
-
-struct H {
-  int n;
-private:
-  H(); // expected-note {{here}}
-};
-int h = H().n; // expected-error {{private constructor}}
-
-struct I {
-  H h; // expected-note {{inaccessible default constructor}}
-};
-int i = I().h.n; // expected-error {{call to implicitly-deleted default}}
-
-struct J {
-  J();
-  virtual int f();
-  int n;
-};
-int j1 = J().n; // ok
-int j2 = J().f(); // ok
-
-union K {
-  J j; // expected-note 2{{non-trivial default constructor}}
-  int m;
-};
-int k1 = K().j.n; // expected-error {{call to implicitly-deleted default}}
-int k2 = K().j.f(); // expected-error {{call to implicitly-deleted default}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/dynamic-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/dynamic-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/dynamic-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A {};
-struct B : A {};
-struct C : B {};
-
-struct D : private A {};
-struct E : A {};
-struct F : B, E {};
-
-struct Incomplete; // expected-note 2 {{forward declaration of 'Incomplete'}}
-
-struct Poly
-{
-  virtual void f();
-};
-
-struct PolyDerived : Poly
-{
-};
-
-void basic_bad()
-{
-  // ptr -> nonptr
-  (void)dynamic_cast<A>((A*)0); // expected-error {{'A' is not a reference or pointer}}
-  // nonptr -> ptr
-  (void)dynamic_cast<A*>(0); // expected-error {{'int' is not a pointer}}
-  // ptr -> noncls
-  (void)dynamic_cast<int*>((A*)0); // expected-error {{'int' is not a class}}
-  // noncls -> ptr
-  (void)dynamic_cast<A*>((int*)0); // expected-error {{'int' is not a class}}
-  // ref -> noncls
-  (void)dynamic_cast<int&>(*((A*)0)); // expected-error {{'int' is not a class}}
-  // noncls -> ref
-  (void)dynamic_cast<A&>(*((int*)0)); // expected-error {{'int' is not a class}}
-  // ptr -> incomplete
-  (void)dynamic_cast<Incomplete*>((A*)0); // expected-error {{'Incomplete' is an incomplete type}}
-  // incomplete -> ptr
-  (void)dynamic_cast<A*>((Incomplete*)0); // expected-error {{'Incomplete' is an incomplete type}}
-}
-
-void same()
-{
-  (void)dynamic_cast<A*>((A*)0);
-  (void)dynamic_cast<A&>(*((A*)0));
-}
-
-void up()
-{
-  (void)dynamic_cast<A*>((B*)0);
-  (void)dynamic_cast<A&>(*((B*)0));
-  (void)dynamic_cast<A*>((C*)0);
-  (void)dynamic_cast<A&>(*((C*)0));
-
-  // Inaccessible
-  //(void)dynamic_cast<A*>((D*)0);
-  //(void)dynamic_cast<A&>(*((D*)0));
-
-  // Ambiguous
-  (void)dynamic_cast<A*>((F*)0); // expected-error {{ambiguous conversion from derived class 'F' to base class 'A':\n    struct F -> struct B -> struct A\n    struct F -> struct E -> struct A}}
-  (void)dynamic_cast<A&>(*((F*)0)); // expected-error {{ambiguous conversion from derived class 'F' to base class 'A':\n    struct F -> struct B -> struct A\n    struct F -> struct E -> struct A}}
-}
-
-void poly()
-{
-  (void)dynamic_cast<A*>((Poly*)0);
-  (void)dynamic_cast<A&>(*((Poly*)0));
-  (void)dynamic_cast<A*>((PolyDerived*)0);
-  (void)dynamic_cast<A&>(*((PolyDerived*)0));
-
-  // Not polymorphic source
-  (void)dynamic_cast<Poly*>((A*)0); // expected-error {{'A' is not polymorphic}}
-  (void)dynamic_cast<PolyDerived&>(*((A*)0)); // expected-error {{'A' is not polymorphic}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/elaborated-type-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/elaborated-type-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/elaborated-type-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Test the use of elaborated-type-specifiers to inject the names of
-// structs (or classes or unions) into an outer scope as described in
-// C++ [basic.scope.pdecl]p5.
-typedef struct S1 {
-  union {
-    struct S2 *x;
-    struct S3 *y;
-  };
-} S1;
-
-bool test_elab(S1 *s1, struct S2 *s2, struct S3 *s3) {
-  if (s1->x == s2) return true;
-  if (s1->y == s3) return true;
-  return false;
-}
-
-namespace NS {
-  class X {
-  public:
-    void test_elab2(struct S4 *s4); // expected-note{{'NS::S4' declared here}}
-  };
-
-  void X::test_elab2(S4 *s4) { } // expected-note{{passing argument to parameter 's4' here}}
-}
-
-void test_X_elab(NS::X x) {
-  struct S4 *s4 = 0;
-  x.test_elab2(s4); // expected-error{{cannot initialize a parameter of type 'NS::S4 *' with an lvalue of type 'struct S4 *'}}
-}
-
-namespace NS {
-  S4 *get_S4();
-}
-
-void test_S5_scope() {
-  S4 *s4; // expected-error{{unknown type name 'S4'; did you mean 'NS::S4'?}}
-}
-
-int test_funcparam_scope(struct S5 * s5) {
-  struct S5 { int y; } *s5_2 = 0;
-  if (s5 == s5_2) return 1; // expected-error {{comparison of distinct pointer types ('struct S5 *' and 'struct S5 *')}}
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/empty-class-layout.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/empty-class-layout.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/empty-class-layout.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,173 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -fsyntax-only -verify 
-// expected-no-diagnostics
-
-#define SA(n, p) int a##n[(p) ? 1 : -1]
-
-namespace Test0 {
-
-struct A { int a; };
-SA(0, sizeof(A) == 4);
-
-struct B { };
-SA(1, sizeof(B) == 1);
-
-struct C : A, B { };
-SA(2, sizeof(C) == 4);
-
-struct D { };
-struct E : D { };
-struct F : E { };
-
-struct G : E, F { };
-SA(3, sizeof(G) == 2);
-
-struct Empty { Empty(); };
-
-struct I : Empty { 
-  Empty e;
-};
-SA(4, sizeof(I) == 2);
-
-struct J : Empty { 
-  Empty e[2];
-};
-SA(5, sizeof(J) == 3);
-
-template<int N> struct Derived : Empty, Derived<N - 1> { 
-};
-template<> struct Derived<0> : Empty { };
-
-struct S1 : virtual Derived<10> { 
-  Empty e;
-};
-SA(6, sizeof(S1) == 24);
-
-struct S2 : virtual Derived<10> { 
-  Empty e[2];
-};
-SA(7, sizeof(S2) == 24);
-
-struct S3 {
-  Empty e;
-};
-
-struct S4 : Empty, S3 { 
-};
-SA(8, sizeof(S4) == 2);
-
-struct S5 : S3, Empty {};
-SA(9, sizeof(S5) == 2);
-
-struct S6 : S5 { };
-SA(10, sizeof(S6) == 2);
-
-struct S7 : Empty {
-  void *v;
-};
-SA(11, sizeof(S7) == 8);
-
-struct S8 : Empty, A {
-};
-SA(12, sizeof(S8) == 4);
-
-}
-
-namespace Test1 {
-
-// Test that we don't try to place both A subobjects at offset 0.
-struct A { };
-class B { virtual void f(); };
-class C : A, virtual B { };
-struct D : virtual C { };
-struct E : virtual A { };
-class F : D, E { };
-
-SA(0, sizeof(F) == 24);
-
-}
-
-namespace Test2 {
-
-// Test that B::a isn't laid out at offset 0.
-struct Empty { };
-struct A : Empty { };
-struct B : Empty {
-  A a;
-};
-
-SA(0, sizeof(B) == 2);
-
-}
-
-namespace Test3 {
-
-// Test that B::a isn't laid out at offset 0.
-struct Empty { };
-struct A { Empty e; };
-struct B : Empty { A a; };
-SA(0, sizeof(B) == 2);
-
-}
-
-namespace Test4 {
-
-// Test that C::Empty isn't laid out at offset 0.
-struct Empty { };
-struct A : Empty { };
-struct B { A a; };
-struct C : B, Empty { };
-SA(0, sizeof(C) == 2);
-
-}
-
-namespace Test5 {
-
-// Test that B::Empty isn't laid out at offset 0.
-struct Empty { };
-struct Field : virtual Empty { };
-struct A {
-  Field f;
-};
-struct B : A, Empty { };
-SA(0, sizeof(B) == 16);
-
-}
-
-namespace Test6 {
-
-// Test that B::A isn't laid out at offset 0.
-struct Empty { };
-struct Field : virtual Empty { };
-struct A {
-  Field f;
-};
-struct B : Empty, A { };
-SA(0, sizeof(B) == 16);
-
-}
-
-namespace Test7 {
-  // Make sure we reserve enough space for both bases; PR11745.
-  struct Empty { };
-  struct Base1 : Empty { };
-  struct Base2 : Empty { };
-  struct Test : Base1, Base2 {
-    char c;
-  };
-  SA(0, sizeof(Test) == 2);
-}
-
-namespace Test8 {
-  // Test that type sugar doesn't make us incorrectly determine the size of an
-  // array of empty classes.
-  struct Empty1 {};
-  struct Empty2 {};
-  struct Empties : Empty1, Empty2 {};
-  typedef Empty1 Sugar[4];
-  struct A : Empty2, Empties {
-    // This must go at offset 2, because if it were at offset 0,
-    // V[0][1] would overlap Empties::Empty1.
-    Sugar V[1];
-  };
-  SA(0, sizeof(A) == 6);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-bitfield.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-bitfield.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-bitfield.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -std=c++11 -verify -triple x86_64-apple-darwin %s
-
-enum E {};
-
-struct Z {};
-typedef int Integer;
-
-struct X {
-  enum E : 1;
-  enum E : Z; // expected-error{{invalid underlying type}}
-  enum E2 : int;
-  enum E3 : Integer;
-};
-
-struct Y {
-  enum E : int(2);
-  enum E : Z(); // expected-error{{integral constant expression must have integral or unscoped enumeration type, not 'Z'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-scoped.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-scoped.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-scoped.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,268 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -std=c++11 -verify -triple x86_64-apple-darwin %s
-
-enum class E1 {
-  Val1 = 1L
-};
-
-enum struct E2 {
-  Val1 = '\0'
-};
-
-E1 v1 = Val1; // expected-error{{undeclared identifier}}
-E1 v2 = E1::Val1;
-
-static_assert(sizeof(E1) == sizeof(int), "bad size");
-static_assert(sizeof(E1::Val1) == sizeof(int), "bad size");
-static_assert(sizeof(E2) == sizeof(int), "bad size");
-static_assert(sizeof(E2::Val1) == sizeof(int), "bad size");
-
-E1 v3 = E2::Val1; // expected-error{{cannot initialize a variable}}
-int x1 = E1::Val1; // expected-error{{cannot initialize a variable}}
-
-enum E3 : char {
-  Val2 = 1
-};
-
-E3 v4 = Val2;
-E1 v5 = Val2; // expected-error{{cannot initialize a variable}}
-
-static_assert(sizeof(E3) == 1, "bad size");
-
-int x2 = Val2;
-
-int a1[Val2];
-int a2[E1::Val1]; // expected-error{{size of array has non-integer type}}
-
-int* p1 = new int[Val2];
-int* p2 = new int[E1::Val1]; // expected-error{{array size expression must have integral or unscoped enumeration type, not 'E1'}}
-
-enum class E4 {
-  e1 = -2147483648, // ok
-  e2 = 2147483647, // ok
-  e3 = 2147483648 // expected-error{{enumerator value evaluates to 2147483648, which cannot be narrowed to type 'int'}}
-};
-
-enum class E5 {
-  e1 = 2147483647, // ok
-  e2 // expected-error{{2147483648 is not representable in the underlying}}
-};
-
-enum class E6 : bool {
-    e1 = false, e2 = true,
-    e3 // expected-error{{2 is not representable in the underlying}}
-};
-
-enum E7 : bool {
-    e1 = false, e2 = true,
-    e3 // expected-error{{2 is not representable in the underlying}}
-};
-
-template <class T>
-struct X {
-  enum E : T {
-    e1, e2,
-    e3 // expected-error{{2 is not representable in the underlying}}
-  };
-};
-
-X<bool> X2; // expected-note{{in instantiation of template}}
-
-enum Incomplete1; // expected-error{{C++ forbids forward references}}
-
-enum Complete1 : int;
-Complete1 complete1;
-
-enum class Complete2;
-Complete2 complete2;
-
-// All the redeclarations below are done twice on purpose. Tests that the type
-// of the declaration isn't changed.
-
-enum class Redeclare2; // expected-note{{previous use is here}} expected-note{{previous use is here}}
-enum Redeclare2; // expected-error{{previously declared as scoped}}
-enum Redeclare2; // expected-error{{previously declared as scoped}}
-
-enum Redeclare3 : int; // expected-note{{previous use is here}} expected-note{{previous use is here}}
-enum Redeclare3; // expected-error{{previously declared with fixed underlying type}}
-enum Redeclare3; // expected-error{{previously declared with fixed underlying type}}
-
-enum class Redeclare5;
-enum class Redeclare5 : int; // ok
-
-enum Redeclare6 : int; // expected-note{{previous use is here}} expected-note{{previous use is here}}
-enum Redeclare6 : short; // expected-error{{redeclared with different underlying type}}
-enum Redeclare6 : short; // expected-error{{redeclared with different underlying type}}
-
-enum class Redeclare7; // expected-note{{previous use is here}} expected-note{{previous use is here}}
-enum class Redeclare7 : short; // expected-error{{redeclared with different underlying type}}
-enum class Redeclare7 : short; // expected-error{{redeclared with different underlying type}}
-
-enum : long {
-  long_enum_val = 10000
-};
-
-enum : long x; // expected-error{{unnamed enumeration must be a definition}} \
-// expected-warning{{declaration does not declare anything}}
-
-void PR9333() {
-  enum class scoped_enum { yes, no, maybe };
-  scoped_enum e = scoped_enum::yes;
-  if (e == scoped_enum::no) { }
-}
-
-// <rdar://problem/9366066>
-namespace rdar9366066 {
-  enum class X : unsigned { value };
-
-  void f(X x) {
-    x % X::value; // expected-error{{invalid operands to binary expression ('rdar9366066::X' and 'rdar9366066::X')}}
-    x % 8; // expected-error{{invalid operands to binary expression ('rdar9366066::X' and 'int')}}
-  }
-}
-
-// Part 1 of PR10264
-namespace test5 {
-  namespace ns {
-    typedef unsigned Atype;
-    enum A : Atype;
-  }
-  enum ns::A : ns::Atype {
-    x, y, z
-  };
-}
-
-// Part 2 of PR10264
-namespace test6 {
-  enum A : unsigned;
-  struct A::a; // expected-error {{incomplete type 'test6::A' named in nested name specifier}}
-  enum A::b; // expected-error {{incomplete type 'test6::A' named in nested name specifier}}
-  int A::c; // expected-error {{incomplete type 'test6::A' named in nested name specifier}}
-  void A::d(); // expected-error {{incomplete type 'test6::A' named in nested name specifier}}
-  void test() {
-    (void) A::e; // expected-error {{incomplete type 'test6::A' named in nested name specifier}}
-  }
-}
-
-namespace PR11484 {
-  const int val = 104;
-  enum class test1 { owner_dead = val, };
-}
-
-namespace N2764 {
-  enum class E { a, b };
-  enum E x1 = E::a; // ok
-  enum class E x2 = E::a; // expected-error {{reference to scoped enumeration must use 'enum' not 'enum class'}}
-
-  enum F { a, b };
-  enum F y1 = a; // ok
-  enum class F y2 = a; // expected-error {{reference to enumeration must use 'enum' not 'enum class'}}
-
-  struct S {
-    friend enum class E; // expected-error {{reference to scoped enumeration must use 'enum' not 'enum class'}}
-    friend enum class F; // expected-error {{reference to enumeration must use 'enum' not 'enum class'}}
-
-    friend enum G {}; // expected-error {{forward reference}} expected-error {{cannot define a type in a friend declaration}}
-    friend enum class H {}; // expected-error {{cannot define a type in a friend declaration}}
-
-    enum A : int;
-    A a;
-  } s;
-
-  enum S::A : int {};
-
-  enum class B;
-}
-
-enum class N2764::B {};
-
-namespace PR12106 {
-  template<typename E> struct Enum {
-    Enum() : m_e(E::Last) {}
-    E m_e;
-  };
-
-  enum eCOLORS { Last };
-  Enum<eCOLORS> e;
-}
-
-namespace test7 {
-  enum class E { e = (struct S*)0 == (struct S*)0 };
-  S *p;
-}
-
-namespace test8 {
-  template<typename T> struct S {
-    enum A : int; // expected-note {{here}}
-    enum class B; // expected-note {{here}}
-    enum class C : int; // expected-note {{here}}
-    enum class D : int; // expected-note {{here}}
-  };
-  template<typename T> enum S<T>::A { a }; // expected-error {{previously declared with fixed underlying type}}
-  template<typename T> enum class S<T>::B : char { b }; // expected-error {{redeclared with different underlying}}
-  template<typename T> enum S<T>::C : int { c }; // expected-error {{previously declared as scoped}}
-  template<typename T> enum class S<T>::D : char { d }; // expected-error {{redeclared with different underlying}}
-}
-
-namespace test9 {
-  template<typename T> struct S {
-    enum class ET : T; // expected-note 2{{here}}
-    enum class Eint : int; // expected-note 2{{here}}
-  };
-  template<> enum class S<int>::ET : int {};
-  template<> enum class S<char>::ET : short {}; // expected-error {{different underlying type}}
-  template<> enum class S<int>::Eint : short {}; // expected-error {{different underlying type}}
-  template<> enum class S<char>::Eint : int {};
-
-  template<typename T> enum class S<T>::ET : int {}; // expected-error {{different underlying type 'int' (was 'short')}}
-  template<typename T> enum class S<T>::Eint : T {}; // expected-error {{different underlying type 'short' (was 'int')}}
-
-  // The implicit instantiation of S<short> causes the implicit instantiation of
-  // all declarations of member enumerations, so is ill-formed, even though we
-  // never instantiate the definitions of S<short>::ET nor S<short>::Eint.
-  S<short> s; // expected-note {{in instantiation of}}
-}
-
-namespace test10 {
-  template<typename T> int f() {
-    enum E : int;
-    enum E : T; // expected-note {{here}}
-    E x;
-    enum E : int { e }; // expected-error {{different underlying}}
-    x = e;
-    return x;
-  }
-  int k = f<int>();
-  int l = f<short>(); // expected-note {{here}}
-
-  template<typename T> int g() {
-    enum class E : int;
-    enum class E : T; // expected-note {{here}}
-    E x;
-    enum class E : int { e }; // expected-error {{different underlying}}
-    x = E::e;
-    return (int)x;
-  }
-  int m = g<int>();
-  int n = g<short>(); // expected-note {{here}}
-}
-
-namespace pr13128 {
-  // This should compile cleanly
-  class C {
-    enum class E { C };
-  };
-}
-
-namespace PR15633 {
-  template<typename T> struct A {
-    struct B {
-      enum class E : T;
-      enum class E2 : T;
-    };
-  };
-  template<typename T> enum class A<T>::B::E { e };
-  template class A<int>;
-
-  struct B { enum class E; };
-  template<typename T> enum class B::E { e }; // expected-error {{enumeration cannot be a template}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-unscoped-nonexistent.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-unscoped-nonexistent.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/enum-unscoped-nonexistent.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-struct Base {
-  static const int a = 1;
-};
-template<typename T> struct S : Base {
-  enum E : int;
-  constexpr int f() const;
-  constexpr int g() const; // expected-note {{declared here}}
-  void h();
-};
-template<> enum S<char>::E : int {}; // expected-note {{enum 'S<char>::E' was explicitly specialized here}}
-template<> enum S<short>::E : int { b = 2 };
-template<> enum S<int>::E : int { a = 4 };
-template<typename T> enum S<T>::E : int { b = 8 };
-
-// The unqualified-id here names a member of the non-dependent base class Base
-// and not the injected enumerator name 'a' from the specialization.
-template<typename T> constexpr int S<T>::f() const { return a; }
-static_assert(S<char>().f() == 1, "");
-static_assert(S<int>().f() == 1, "");
-
-// The unqualified-id here names a member of the current instantiation, which
-// bizarrely might not exist in some instantiations.
-template<typename T> constexpr int S<T>::g() const { return b; } // expected-error {{enumerator 'b' does not exist in instantiation of 'S<char>'}}
-static_assert(S<char>().g() == 1, ""); // expected-note {{here}} expected-error {{not an integral constant expression}} expected-note {{undefined}}
-static_assert(S<short>().g() == 2, "");
-static_assert(S<long>().g() == 8, "");
-
-// 'b' is type-dependent, so these assertions should not fire before 'h' is
-// instantiated.
-template<typename T> void S<T>::h() {
-  char c[S<T>::b];
-  static_assert(b != 8, "");
-  static_assert(sizeof(c) != 8, "");
-}
-void f() {
-  S<short>().h(); // ok, b == 2
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -std=c++98 -verify -triple x86_64-apple-darwin %s
-enum E { // expected-note{{previous definition is here}}
-  Val1,
-  Val2
-};
-
-enum E; // expected-warning{{redeclaration of already-defined enum 'E' is a GNU extension}}
-
-int& enumerator_type(int);
-float& enumerator_type(E);
-
-void f() {
-  E e = Val1;
-  float& fr = enumerator_type(Val2);
-}
-
-// <rdar://problem/6502934>
-typedef enum Foo {
-  A = 0,
-  B = 1
-} Foo;
-
-void bar() {
-  Foo myvar = A;
-  myvar = B;
-}
-
-/// PR3688
-struct s1 {
-  enum e1 (*bar)(void); // expected-error{{ISO C++ forbids forward references to 'enum' types}}
-};
-
-enum e1 { YES, NO };
-
-static enum e1 badfunc(struct s1 *q) {
-  return q->bar();
-}
-
-enum e2; // expected-error{{ISO C++ forbids forward references to 'enum' types}}
-
-namespace test1 {
-  template <class A, class B> struct is_same { static const int value = -1; };
-  template <class A> struct is_same<A,A> { static const int value = 1; };
-
-  enum enum0 { v0 };
-  int test0[is_same<__typeof(+v0), int>::value];
-
-  enum enum1 { v1 = __INT_MAX__ };
-  int test1[is_same<__typeof(+v1), int>::value];
-
-  enum enum2 { v2 = __INT_MAX__ * 2U };
-  int test2[is_same<__typeof(+v2), unsigned int>::value];
-
-  enum enum3 { v3 = __LONG_MAX__ };
-  int test3[is_same<__typeof(+v3), long>::value];
-
-  enum enum4 { v4 = __LONG_MAX__ * 2UL };
-  int test4[is_same<__typeof(+v4), unsigned long>::value];
-}
-
-// PR6061
-namespace PR6061 {
-  struct A { enum { id }; };
-  struct B { enum { id }; };
-  
-  struct C : public A, public B
-  { 
-    enum { id }; 
-  };
-}
-
-namespace Conditional {
-  enum a { A }; a x(const enum a x) { return 1?x:A; }
-}
-
-namespace PR7051 {
-  enum E { e0 };
-  void f() {
-    E e;
-    e = 1; // expected-error{{assigning to 'PR7051::E' from incompatible type 'int'}}
-    e |= 1; // expected-error{{assigning to 'PR7051::E' from incompatible type 'int'}}
-  }
-}
-
-// PR7466
-enum { }; // expected-warning{{declaration does not declare anything}}
-typedef enum { }; // expected-warning{{typedef requires a name}}
-
-// PR7921
-enum PR7921E {
-    PR7921V = (PR7921E)(123) // expected-error {{expression is not an integral constant expression}}
-};
-
-void PR8089() {
-  enum E; // expected-error{{ISO C++ forbids forward references to 'enum' types}}
-  int a = (E)3; // expected-error{{cannot initialize a variable of type 'int' with an rvalue of type 'E'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/exception-spec-no-exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/exception-spec-no-exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/exception-spec-no-exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fexceptions -fobjc-exceptions %s
-// expected-no-diagnostics
-
-// Note that we're specifically excluding -fcxx-exceptions in the command line above.
-
-// That this should work even with -fobjc-exceptions is PR9358
-
-// PR7243: redeclarations
-namespace test0 {
-  void foo() throw(int);
-  void foo() throw();
-}
-
-// Overrides.
-namespace test1 {
-  struct A {
-    virtual void foo() throw();
-  };
-
-  struct B : A {
-    virtual void foo() throw(int);
-  };
-}
-
-// Calls from less permissive contexts.  We don't actually do this
-// check, but if we did it should also be disabled under
-// -fno-exceptions.
-namespace test2 {
-  void foo() throw(int);
-  void bar() throw() {
-    foo();
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,147 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
-
-struct A; // expected-note 4 {{forward declaration of 'A'}}
-
-struct Abstract { virtual void f() = 0; }; // expected-note {{unimplemented pure virtual method 'f'}}
-
-void trys() {
-  try {
-  } catch(int i) { // expected-note {{previous definition}}
-    int j = i;
-    int i; // expected-error {{redefinition of 'i'}}
-  } catch(float i) {
-  } catch(void v) { // expected-error {{cannot catch incomplete type 'void'}}
-  } catch(A a) { // expected-error {{cannot catch incomplete type 'A'}}
-  } catch(A *a) { // expected-error {{cannot catch pointer to incomplete type 'A'}}
-  } catch(A &a) { // expected-error {{cannot catch reference to incomplete type 'A'}}
-  } catch(Abstract) { // expected-error {{variable type 'Abstract' is an abstract class}}
-  } catch(...) {
-    int j = i; // expected-error {{use of undeclared identifier 'i'}}
-  }
-
-  try {
-  } catch(...) { // expected-error {{catch-all handler must come last}}
-  } catch(int) {
-  }
-}
-
-void throws() {
-  throw;
-  throw 0;
-  throw throw; // expected-error {{cannot throw object of incomplete type 'void'}}
-  throw (A*)0; // expected-error {{cannot throw pointer to object of incomplete type 'A'}}
-}
-
-void jumps() {
-l1:
-  goto l5;
-  goto l4; // expected-error {{goto into protected scope}}
-  goto l3; // expected-error {{goto into protected scope}}
-  goto l2; // expected-error {{goto into protected scope}}
-  goto l1;
-  try { // expected-note 4 {{jump bypasses initialization of try block}}
-  l2:
-    goto l5;
-    goto l4; // expected-error {{goto into protected scope}}
-    goto l3; // expected-error {{goto into protected scope}}
-    goto l2;
-    goto l1;
-  } catch(int) { // expected-note 4 {{jump bypasses initialization of catch block}}
-  l3:
-    goto l5;
-    goto l4; // expected-error {{goto into protected scope}}
-    goto l3;
-    goto l2; // expected-error {{goto into protected scope}}
-    goto l1;
-  } catch(...) { // expected-note 4 {{jump bypasses initialization of catch block}}
-  l4:
-    goto l5;
-    goto l4;
-    goto l3; // expected-error {{goto into protected scope}}
-    goto l2; // expected-error {{goto into protected scope}}
-    goto l1;
-  }
-l5:
-  goto l5;
-  goto l4; // expected-error {{goto into protected scope}}
-  goto l3; // expected-error {{goto into protected scope}}
-  goto l2; // expected-error {{goto into protected scope}}
-  goto l1;
-}
-
-struct BadReturn {
-  BadReturn() try {
-  } catch(...) {
-    // Try to hide
-    try {
-    } catch(...) {
-      {
-        if (0)
-          return; // expected-error {{return in the catch of a function try block of a constructor is illegal}}
-      }
-    }
-  }
-  BadReturn(int);
-};
-
-BadReturn::BadReturn(int) try {
-} catch(...) {
-  // Try to hide
-  try {
-  } catch(int) {
-    return; // expected-error {{return in the catch of a function try block of a constructor is illegal}}
-  } catch(...) {
-    {
-      if (0)
-        return; // expected-error {{return in the catch of a function try block of a constructor is illegal}}
-    }
-  }
-}
-
-// Cannot throw an abstract type.
-class foo {
-public:
-  foo() {}
-  void bar () {
-    throw *this; // expected-error{{cannot throw an object of abstract type 'foo'}}
-  }
-  virtual void test () = 0; // expected-note{{unimplemented pure virtual method 'test'}}
-};
-
-namespace PR6831 {
-  namespace NA { struct S; }
-  namespace NB { struct S; }
-  
-  void f() {
-    using namespace NA;
-    using namespace NB;
-    try {
-    } catch (int S) { 
-    }
-  }
-}
-
-namespace Decay {
-  struct A {
-    void f() throw (A[10]);
-  };
-
-  template<typename T> struct B {
-    void f() throw (B[10]);
-  };
-  template struct B<int>;
-
-  void f() throw (int[10], int(*)());
-  void f() throw (int*, int());
-
-  template<typename T> struct C {
-    void f() throw (T); // expected-error {{pointer to incomplete type 'Decay::E' is not allowed in exception specification}}
-  };
-  struct D {
-    C<D[10]> c;
-  };
-  struct E; // expected-note {{forward declaration}}
-  C<E[10]> e; // expected-note {{in instantiation of}}
-}
-
-void rval_ref() throw (int &&); // expected-error {{rvalue reference type 'int &&' is not allowed in exception specification}} expected-warning {{C++11}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/explicit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/explicit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/explicit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,175 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-namespace Constructor {
-struct A {
-  A(int);
-};
-
-struct B {
-  explicit B(int);
-};
-
-B::B(int) { }
-
-struct C {
-  void f(const A&);
-  void f(const B&);
-};
-
-void f(C c) {
-  c.f(10);
-}
-}
-
-namespace Conversion {
-  struct A {
-    operator int();
-    explicit operator bool();
-  };
-
-  A::operator bool() { return false; } 
-
-  struct B {
-    void f(int);
-    void f(bool);
-  };
-
-  void f(A a, B b) {
-    b.f(a);
-  }
-  
-  void testExplicit()
-  {
-    // Taken from 12.3.2p2
-    class Y { }; // expected-note {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'Z' to 'const Y &' for 1st argument}} \
-					          expected-note {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'Z' to 'Y &&' for 1st argument}} \
-                    expected-note {{candidate constructor (the implicit copy constructor) not viable: no known conversion from 'Z' to 'const Y &' for 1st argument}} \
-          expected-note {{candidate constructor (the implicit move constructor) not viable: no known conversion from 'Z' to 'Y &&' for 1st argument}}
-
-    struct Z {
-      explicit operator Y() const;
-      explicit operator int() const;
-    };
-    
-    Z z;
-    // 13.3.1.4p1 & 8.5p16:
-    Y y2 = z; // expected-error {{no viable conversion from 'Z' to 'Y'}}
-    Y y3 = (Y)z;
-    Y y4 = Y(z);
-    Y y5 = static_cast<Y>(z);
-    // 13.3.1.5p1 & 8.5p16:
-    int i1 = (int)z;
-    int i2 = int(z);
-    int i3 = static_cast<int>(z);
-    int i4(z);
-    // 13.3.1.6p1 & 8.5.3p5:
-    const Y& y6 = z; // expected-error {{no viable conversion from 'Z' to 'const Y'}}
-    const int& y7(z);
-  }
-  
-  void testBool() {
-    struct Bool {
-      operator bool();
-    };
-
-    struct NotBool {
-      explicit operator bool(); // expected-note {{conversion to integral type 'bool'}}
-    };
-    Bool    b;
-    NotBool n;
-
-    (void) (1 + b);
-    (void) (1 + n); // expected-error {{invalid operands to binary expression ('int' and 'NotBool')}}
-    
-    // 5.3.1p9:
-    (void) (!b);
-    (void) (!n);
-    
-    // 5.14p1:
-    (void) (b && true);
-    (void) (n && true);
-    
-    // 5.15p1:
-    (void) (b || true);
-    (void) (n || true);
-    
-    // 5.16p1:
-    (void) (b ? 0 : 1);
-    (void) (n ? 0: 1);
-    
-    // 5.19p5:
-    // TODO: After constexpr has been implemented
-    
-    // 6.4p4:
-    if (b) {}
-    if (n) {}
-    
-    // 6.4.2p2:
-    switch (b) {} // expected-warning {{switch condition has boolean value}}
-    switch (n) {} // expected-error {{switch condition type 'NotBool' requires explicit conversion to 'bool'}} \
-                     expected-warning {{switch condition has boolean value}}
-    
-    // 6.5.1:
-    while (b) {}
-    while (n) {}
-    
-    // 6.5.2p1:
-    do {} while (b);
-    do {} while (n);
-    
-    // 6.5.3:
-    for (;b;) {}
-    for (;n;) {}
-  }
-  
-  void testNew()
-  {
-    // 5.3.4p6:
-    struct Int {
-      operator int();
-    };
-    struct NotInt {
-      explicit operator int(); // expected-note {{conversion to integral type 'int' declared here}}
-    };
-    
-    Int    i;
-    NotInt ni;
-    
-    new int[i];
-    new int[ni]; // expected-error {{array size expression of type 'NotInt' requires explicit conversion to type 'int'}}
-  }
-  
-  void testDelete()
-  {
-    // 5.3.5pp2:
-    struct Ptr {
-      operator int*();
-    };
-    struct NotPtr {
-      explicit operator int*();
-    };
-    
-    Ptr    p;
-    NotPtr np;
-    
-    delete p;
-    delete np; // expected-error {{cannot delete expression of type 'NotPtr'}}
-  }
-  
-  void testFunctionPointer()
-  {
-    // 13.3.1.1.2p2:
-    using Func = void(*)(int);
-    
-    struct FP {
-      operator Func();
-    };
-    struct NotFP {
-      explicit operator Func();
-    };
-    
-    FP    fp;
-    NotFP nfp;
-    fp(1);
-    nfp(1); // expected-error {{type 'NotFP' does not provide a call operator}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/expression-traits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/expression-traits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/expression-traits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,620 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fcxx-exceptions %s
-
-//
-// Tests for "expression traits" intrinsics such as __is_lvalue_expr.
-//
-// For the time being, these tests are written against the 2003 C++
-// standard (ISO/IEC 14882:2003 -- see draft at
-// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2001/n1316/).
-//
-// C++0x has its own, more-refined, idea of lvalues and rvalues.
-// If/when we need to support those, we'll need to track both
-// standard documents.
-
-#if !__has_feature(cxx_static_assert)
-# define CONCAT_(X_, Y_) CONCAT1_(X_, Y_)
-# define CONCAT1_(X_, Y_) X_ ## Y_
-
-// This emulation can be used multiple times on one line (and thus in
-// a macro), except at class scope
-# define static_assert(b_, m_) \
-  typedef int CONCAT_(sa_, __LINE__)[b_ ? 1 : -1]
-#endif
-
-// Tests are broken down according to section of the C++03 standard
-// (ISO/IEC 14882:2003(E))
-
-// Assertion macros encoding the following two paragraphs
-//
-// basic.lval/1 Every expression is either an lvalue or an rvalue.
-//
-// expr.prim/5 A parenthesized expression is a primary expression whose type
-// and value are identical to those of the enclosed expression. The
-// presence of parentheses does not affect whether the expression is
-// an lvalue.
-//
-// Note: these asserts cannot be made at class scope in C++03.  Put
-// them in a member function instead.
-#define ASSERT_LVALUE(expr)                                             \
-    static_assert(__is_lvalue_expr(expr), "should be an lvalue");       \
-    static_assert(__is_lvalue_expr((expr)),                             \
-                  "the presence of parentheses should have"             \
-                  " no effect on lvalueness (expr.prim/5)");            \
-    static_assert(!__is_rvalue_expr(expr), "should be an lvalue");      \
-    static_assert(!__is_rvalue_expr((expr)),                            \
-                  "the presence of parentheses should have"             \
-                  " no effect on lvalueness (expr.prim/5)")
-
-#define ASSERT_RVALUE(expr);                                            \
-    static_assert(__is_rvalue_expr(expr), "should be an rvalue");       \
-    static_assert(__is_rvalue_expr((expr)),                             \
-                  "the presence of parentheses should have"             \
-                  " no effect on lvalueness (expr.prim/5)");            \
-    static_assert(!__is_lvalue_expr(expr), "should be an rvalue");      \
-    static_assert(!__is_lvalue_expr((expr)),                            \
-                  "the presence of parentheses should have"             \
-                  " no effect on lvalueness (expr.prim/5)")
-
-enum Enum { Enumerator };
-
-int ReturnInt();
-void ReturnVoid();
-Enum ReturnEnum();
-
-void basic_lval_5()
-{
-    // basic.lval/5: The result of calling a function that does not return
-    // a reference is an rvalue.
-    ASSERT_RVALUE(ReturnInt());
-    ASSERT_RVALUE(ReturnVoid());
-    ASSERT_RVALUE(ReturnEnum());
-}
-
-int& ReturnIntReference();
-extern Enum& ReturnEnumReference();
-
-void basic_lval_6()
-{
-    // basic.lval/6: An expression which holds a temporary object resulting
-    // from a cast to a nonreference type is an rvalue (this includes
-    // the explicit creation of an object using functional notation
-    struct IntClass
-    {
-        explicit IntClass(int = 0);
-        IntClass(char const*);
-        operator int() const;
-    };
-    
-    struct ConvertibleToIntClass
-    {
-        operator IntClass() const;
-    };
-
-    ConvertibleToIntClass b;
-
-    // Make sure even trivial conversions are not detected as lvalues
-    int intLvalue = 0;
-    ASSERT_RVALUE((int)intLvalue);
-    ASSERT_RVALUE((short)intLvalue);
-    ASSERT_RVALUE((long)intLvalue);
-    
-    // Same tests with function-call notation
-    ASSERT_RVALUE(int(intLvalue));
-    ASSERT_RVALUE(short(intLvalue));
-    ASSERT_RVALUE(long(intLvalue));
-
-    char charLValue = 'x';
-    ASSERT_RVALUE((signed char)charLValue);
-    ASSERT_RVALUE((unsigned char)charLValue);
-
-    ASSERT_RVALUE(static_cast<int>(IntClass()));
-    IntClass intClassLValue;
-    ASSERT_RVALUE(static_cast<int>(intClassLValue)); 
-    ASSERT_RVALUE(static_cast<IntClass>(ConvertibleToIntClass()));
-    ConvertibleToIntClass convertibleToIntClassLValue;
-    ASSERT_RVALUE(static_cast<IntClass>(convertibleToIntClassLValue));
-    
-
-    typedef signed char signed_char;
-    typedef unsigned char unsigned_char;
-    ASSERT_RVALUE(signed_char(charLValue));
-    ASSERT_RVALUE(unsigned_char(charLValue));
-
-    ASSERT_RVALUE(int(IntClass()));
-    ASSERT_RVALUE(int(intClassLValue)); 
-    ASSERT_RVALUE(IntClass(ConvertibleToIntClass()));
-    ASSERT_RVALUE(IntClass(convertibleToIntClassLValue));
-}
-
-void conv_ptr_1()
-{
-    // conv.ptr/1: A null pointer constant is an integral constant
-    // expression (5.19) rvalue of integer type that evaluates to
-    // zero.
-    ASSERT_RVALUE(0);
-}
-
-void expr_6()
-{
-    // expr/6: If an expression initially has the type "reference to T"
-    // (8.3.2, 8.5.3), ... the expression is an lvalue.
-    int x = 0;
-    int& referenceToInt = x;
-    ASSERT_LVALUE(referenceToInt);
-    ASSERT_LVALUE(ReturnIntReference());
-}
-
-void expr_prim_2()
-{
-    // 5.1/2 A string literal is an lvalue; all other
-    // literals are rvalues.
-    ASSERT_LVALUE("foo");
-    ASSERT_RVALUE(1);
-    ASSERT_RVALUE(1.2);
-    ASSERT_RVALUE(10UL);
-}
-
-void expr_prim_3()
-{
-    // 5.1/3: The keyword "this" names a pointer to the object for
-    // which a nonstatic member function (9.3.2) is invoked. ...The
-    // expression is an rvalue.
-    struct ThisTest
-    {
-        void f() { ASSERT_RVALUE(this); }
-    };
-}
-
-extern int variable;
-void Function();
-
-struct BaseClass
-{
-    virtual ~BaseClass();
-    
-    int BaseNonstaticMemberFunction();
-    static int BaseStaticMemberFunction();
-    int baseDataMember;
-};
-
-struct Class : BaseClass
-{
-    static void function();
-    static int variable;
-
-    template <class T>
-    struct NestedClassTemplate {};
-
-    template <class T>
-    static int& NestedFuncTemplate() { return variable; }  // expected-note{{possible target for call}}
-
-    template <class T>
-    int& NestedMemfunTemplate() { return variable; }
-
-    int operator*() const;
-
-    template <class T>
-    int operator+(T) const;
-
-    int NonstaticMemberFunction();
-    static int StaticMemberFunction();
-    int dataMember;
-
-    int& referenceDataMember;
-    static int& staticReferenceDataMember;
-    static int staticNonreferenceDataMember;
-
-    enum Enum { Enumerator };
-
-    operator long() const;
-    
-    Class();
-    Class(int,int);
-
-    void expr_prim_4()
-    {
-        // 5.1/4: The operator :: followed by an identifier, a
-        // qualified-id, or an operator-function-id is a primary-
-        // expression. ...The result is an lvalue if the entity is
-        // a function or variable.
-        ASSERT_LVALUE(::Function);         // identifier: function
-        ASSERT_LVALUE(::variable);         // identifier: variable
-
-        // the only qualified-id form that can start without "::" (and thus
-        // be legal after "::" ) is
-        //
-        // ::<sub>opt</sub> nested-name-specifier template<sub>opt</sub> unqualified-id
-        ASSERT_LVALUE(::Class::function);  // qualified-id: function
-        ASSERT_LVALUE(::Class::variable);  // qualified-id: variable
-
-        // The standard doesn't give a clear answer about whether these
-        // should really be lvalues or rvalues without some surrounding
-        // context that forces them to be interpreted as naming a
-        // particular function template specialization (that situation
-        // doesn't come up in legal pure C++ programs). This language
-        // extension simply rejects them as requiring additional context
-        __is_lvalue_expr(::Class::NestedFuncTemplate);    // qualified-id: template \
-        // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}
-        
-        __is_lvalue_expr(::Class::NestedMemfunTemplate);  // qualified-id: template \
-        // expected-error{{reference to non-static member function must be called}}
-        
-        __is_lvalue_expr(::Class::operator+);             // operator-function-id: template \
-        // expected-error{{reference to non-static member function must be called}}
-
-        //ASSERT_RVALUE(::Class::operator*);         // operator-function-id: member function
-    }
-
-    void expr_prim_7()
-    {
-        // expr.prim/7 An identifier is an id-expression provided it has been
-        // suitably declared (clause 7). [Note: ... ] The type of the
-        // expression is the type of the identifier. The result is the
-        // entity denoted by the identifier. The result is an lvalue if
-        // the entity is a function, variable, or data member... (cont'd)
-        ASSERT_LVALUE(Function);        // identifier: function
-        ASSERT_LVALUE(StaticMemberFunction);        // identifier: function
-        ASSERT_LVALUE(variable);        // identifier: variable
-        ASSERT_LVALUE(dataMember);      // identifier: data member
-        //ASSERT_RVALUE(NonstaticMemberFunction); // identifier: member function
-
-        // (cont'd)...A nested-name-specifier that names a class,
-        // optionally followed by the keyword template (14.2), and then
-        // followed by the name of a member of either that class (9.2) or
-        // one of its base classes... is a qualified-id... The result is
-        // the member. The type of the result is the type of the
-        // member. The result is an lvalue if the member is a static
-        // member function or a data member.
-        ASSERT_LVALUE(Class::dataMember);
-        ASSERT_LVALUE(Class::StaticMemberFunction);
-        //ASSERT_RVALUE(Class::NonstaticMemberFunction); // identifier: member function
-
-        ASSERT_LVALUE(Class::baseDataMember);
-        ASSERT_LVALUE(Class::BaseStaticMemberFunction);
-        //ASSERT_RVALUE(Class::BaseNonstaticMemberFunction); // identifier: member function
-    }
-};
-
-void expr_call_10()
-{
-    // expr.call/10: A function call is an lvalue if and only if the
-    // result type is a reference.  This statement is partially
-    // redundant with basic.lval/5
-    basic_lval_5();
-    
-    ASSERT_LVALUE(ReturnIntReference());
-    ASSERT_LVALUE(ReturnEnumReference());
-}
-
-namespace Namespace
-{
-  int x;
-  void function();
-}
-
-void expr_prim_8()
-{
-    // expr.prim/8 A nested-name-specifier that names a namespace
-    // (7.3), followed by the name of a member of that namespace (or
-    // the name of a member of a namespace made visible by a
-    // using-directive ) is a qualified-id; 3.4.3.2 describes name
-    // lookup for namespace members that appear in qualified-ids. The
-    // result is the member. The type of the result is the type of the
-    // member. The result is an lvalue if the member is a function or
-    // a variable.
-    ASSERT_LVALUE(Namespace::x);
-    ASSERT_LVALUE(Namespace::function);
-}
-
-void expr_sub_1(int* pointer)
-{
-    // expr.sub/1 A postfix expression followed by an expression in
-    // square brackets is a postfix expression. One of the expressions
-    // shall have the type "pointer to T" and the other shall have
-    // enumeration or integral type. The result is an lvalue of type
-    // "T."
-    ASSERT_LVALUE(pointer[1]);
-    
-    // The expression E1[E2] is identical (by definition) to *((E1)+(E2)).
-    ASSERT_LVALUE(*(pointer+1));
-}
-
-void expr_type_conv_1()
-{
-    // expr.type.conv/1 A simple-type-specifier (7.1.5) followed by a
-    // parenthesized expression-list constructs a value of the specified
-    // type given the expression list. ... If the expression list
-    // specifies more than a single value, the type shall be a class with
-    // a suitably declared constructor (8.5, 12.1), and the expression
-    // T(x1, x2, ...) is equivalent in effect to the declaration T t(x1,
-    // x2, ...); for some invented temporary variable t, with the result
-    // being the value of t as an rvalue.
-    ASSERT_RVALUE(Class(2,2));
-}
-
-void expr_type_conv_2()
-{
-    // expr.type.conv/2 The expression T(), where T is a
-    // simple-type-specifier (7.1.5.2) for a non-array complete object
-    // type or the (possibly cv-qualified) void type, creates an
-    // rvalue of the specified type,
-    ASSERT_RVALUE(int());
-    ASSERT_RVALUE(Class());
-    ASSERT_RVALUE(void());
-}
-
-
-void expr_ref_4()
-{
-    // Applies to expressions of the form E1.E2
-    
-    // If E2 is declared to have type "reference to T", then E1.E2 is
-    // an lvalue;.... Otherwise, one of the following rules applies.
-    ASSERT_LVALUE(Class().staticReferenceDataMember);
-    ASSERT_LVALUE(Class().referenceDataMember);
-    
-    // - If E2 is a static data member, and the type of E2 is T, then
-    // E1.E2 is an lvalue; ...
-    ASSERT_LVALUE(Class().staticNonreferenceDataMember);
-    ASSERT_LVALUE(Class().staticReferenceDataMember);
-
-
-    // - If E2 is a non-static data member, ... If E1 is an lvalue,
-    // then E1.E2 is an lvalue...
-    Class lvalue;
-    ASSERT_LVALUE(lvalue.dataMember);
-    ASSERT_RVALUE(Class().dataMember);
-
-    // - If E1.E2 refers to a static member function, ... then E1.E2
-    // is an lvalue
-    ASSERT_LVALUE(Class().StaticMemberFunction);
-    
-    // - Otherwise, if E1.E2 refers to a non-static member function,
-    // then E1.E2 is not an lvalue.
-    //ASSERT_RVALUE(Class().NonstaticMemberFunction);
-
-    // - If E2 is a member enumerator, and the type of E2 is T, the
-    // expression E1.E2 is not an lvalue. The type of E1.E2 is T.
-    ASSERT_RVALUE(Class().Enumerator);
-    ASSERT_RVALUE(lvalue.Enumerator);
-}
-
-
-void expr_post_incr_1(int x)
-{
-    // expr.post.incr/1 The value obtained by applying a postfix ++ is
-    // the value that the operand had before applying the
-    // operator... The result is an rvalue.
-    ASSERT_RVALUE(x++);
-}
-
-void expr_dynamic_cast_2()
-{
-    // expr.dynamic.cast/2: If T is a pointer type, v shall be an
-    // rvalue of a pointer to complete class type, and the result is
-    // an rvalue of type T.
-    Class instance;
-    ASSERT_RVALUE(dynamic_cast<Class*>(&instance));
-
-    // If T is a reference type, v shall be an
-    // lvalue of a complete class type, and the result is an lvalue of
-    // the type referred to by T.
-    ASSERT_LVALUE(dynamic_cast<Class&>(instance));
-}
-
-void expr_dynamic_cast_5()
-{
-    // expr.dynamic.cast/5: If T is "reference to cv1 B" and v has type
-    // "cv2 D" such that B is a base class of D, the result is an
-    // lvalue for the unique B sub-object of the D object referred
-    // to by v.
-    typedef BaseClass B;
-    typedef Class D;
-    D object;
-    ASSERT_LVALUE(dynamic_cast<B&>(object));
-}
-
-// expr.dynamic.cast/8: The run-time check logically executes as follows:
-//
-// - If, in the most derived object pointed (referred) to by v, v
-// points (refers) to a public base class subobject of a T object, and
-// if only one object of type T is derived from the sub-object pointed
-// (referred) to by v, the result is a pointer (an lvalue referring)
-// to that T object.
-//
-// - Otherwise, if v points (refers) to a public base class sub-object
-// of the most derived object, and the type of the most derived object
-// has a base class, of type T, that is unambiguous and public, the
-// result is a pointer (an lvalue referring) to the T sub-object of
-// the most derived object.
-//
-// The mention of "lvalue" in the text above appears to be a
-// defect that is being corrected by the response to UK65 (see
-// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2841.html).
-
-#if 0
-void expr_typeid_1()
-{
-    // expr.typeid/1: The result of a typeid expression is an lvalue...
-    ASSERT_LVALUE(typeid(1));
-}
-#endif
-
-void expr_static_cast_1(int x)
-{
-    // expr.static.cast/1: The result of the expression
-    // static_cast<T>(v) is the result of converting the expression v
-    // to type T. If T is a reference type, the result is an lvalue;
-    // otherwise, the result is an rvalue.
-    ASSERT_LVALUE(static_cast<int&>(x));
-    ASSERT_RVALUE(static_cast<int>(x));
-}
-
-void expr_reinterpret_cast_1()
-{
-    // expr.reinterpret.cast/1: The result of the expression
-    // reinterpret_cast<T>(v) is the result of converting the
-    // expression v to type T. If T is a reference type, the result is
-    // an lvalue; otherwise, the result is an rvalue
-    ASSERT_RVALUE(reinterpret_cast<int*>(0));
-    char const v = 0;
-    ASSERT_LVALUE(reinterpret_cast<char const&>(v));
-}
-
-void expr_unary_op_1(int* pointer, struct incomplete* pointerToIncompleteType)
-{
-    // expr.unary.op/1: The unary * operator performs indirection: the
-    // expression to which it is applied shall be a pointer to an
-    // object type, or a pointer to a function type and the result is
-    // an lvalue referring to the object or function to which the
-    // expression points.  
-    ASSERT_LVALUE(*pointer);
-    ASSERT_LVALUE(*Function);
-
-    // [Note: a pointer to an incomplete type
-    // (other than cv void ) can be dereferenced. ]
-    ASSERT_LVALUE(*pointerToIncompleteType);
-}
-
-void expr_pre_incr_1(int operand)
-{
-    // expr.pre.incr/1: The operand of prefix ++ ... shall be a
-    // modifiable lvalue.... The value is the new value of the
-    // operand; it is an lvalue.
-    ASSERT_LVALUE(++operand);
-}
-
-void expr_cast_1(int x)
-{
-    // expr.cast/1: The result of the expression (T) cast-expression
-    // is of type T. The result is an lvalue if T is a reference type,
-    // otherwise the result is an rvalue.
-    ASSERT_LVALUE((void(&)())expr_cast_1);
-    ASSERT_LVALUE((int&)x);
-    ASSERT_RVALUE((void(*)())expr_cast_1);
-    ASSERT_RVALUE((int)x);
-}
-
-void expr_mptr_oper()
-{
-    // expr.mptr.oper/6: The result of a .* expression is an lvalue
-    // only if its first operand is an lvalue and its second operand
-    // is a pointer to data member... (cont'd)
-    typedef Class MakeRValue;
-    ASSERT_RVALUE(MakeRValue().*(&Class::dataMember));
-    //ASSERT_RVALUE(MakeRValue().*(&Class::NonstaticMemberFunction));
-    Class lvalue;
-    ASSERT_LVALUE(lvalue.*(&Class::dataMember));
-    //ASSERT_RVALUE(lvalue.*(&Class::NonstaticMemberFunction));
-    
-    // (cont'd)...The result of an ->* expression is an lvalue only
-    // if its second operand is a pointer to data member. If the
-    // second operand is the null pointer to member value (4.11), the
-    // behavior is undefined.
-    ASSERT_LVALUE((&lvalue)->*(&Class::dataMember));
-    //ASSERT_RVALUE((&lvalue)->*(&Class::NonstaticMemberFunction));
-}
-
-void expr_cond(bool cond)
-{
-    // 5.16 Conditional operator [expr.cond]
-    //
-    // 2 If either the second or the third operand has type (possibly
-    // cv-qualified) void, then the lvalue-to-rvalue (4.1),
-    // array-to-pointer (4.2), and function-to-pointer (4.3) standard
-    // conversions are performed on the second and third operands, and one
-    // of the following shall hold:
-    //
-    // - The second or the third operand (but not both) is a
-    // throw-expression (15.1); the result is of the type of the other and
-    // is an rvalue.
-
-    Class classLvalue;
-    ASSERT_RVALUE(cond ? throw 1 : (void)0);
-    ASSERT_RVALUE(cond ? (void)0 : throw 1);
-    ASSERT_RVALUE(cond ? throw 1 : classLvalue);
-    ASSERT_RVALUE(cond ? classLvalue : throw 1);
-
-    // - Both the second and the third operands have type void; the result
-    // is of type void and is an rvalue. [Note: this includes the case
-    // where both operands are throw-expressions. ]
-    ASSERT_RVALUE(cond ? (void)1 : (void)0);
-    ASSERT_RVALUE(cond ? throw 1 : throw 0);
-    
-    // expr.cond/4: If the second and third operands are lvalues and
-    // have the same type, the result is of that type and is an
-    // lvalue.
-    ASSERT_LVALUE(cond ? classLvalue : classLvalue);
-    int intLvalue = 0;
-    ASSERT_LVALUE(cond ? intLvalue : intLvalue);
-    
-    // expr.cond/5:Otherwise, the result is an rvalue.
-    typedef Class MakeRValue;
-    ASSERT_RVALUE(cond ? MakeRValue() : classLvalue);
-    ASSERT_RVALUE(cond ? classLvalue : MakeRValue());
-    ASSERT_RVALUE(cond ? MakeRValue() : MakeRValue());
-    ASSERT_RVALUE(cond ? classLvalue : intLvalue);
-    ASSERT_RVALUE(cond ? intLvalue : int());
-}
-
-void expr_ass_1(int x)
-{
-    // expr.ass/1: There are several assignment operators, all of
-    // which group right-to-left. All require a modifiable lvalue as
-    // their left operand, and the type of an assignment expression is
-    // that of its left operand. The result of the assignment
-    // operation is the value stored in the left operand after the
-    // assignment has taken place; the result is an lvalue.
-    ASSERT_LVALUE(x = 1);
-    ASSERT_LVALUE(x += 1);
-    ASSERT_LVALUE(x -= 1);
-    ASSERT_LVALUE(x *= 1);
-    ASSERT_LVALUE(x /= 1);
-    ASSERT_LVALUE(x %= 1);
-    ASSERT_LVALUE(x ^= 1);
-    ASSERT_LVALUE(x &= 1);
-    ASSERT_LVALUE(x |= 1);
-}
-
-void expr_comma(int x)
-{
-    // expr.comma: A pair of expressions separated by a comma is
-    // evaluated left-to-right and the value of the left expression is
-    // discarded... result is an lvalue if its right operand is.
-
-    // Can't use the ASSERT_XXXX macros without adding parens around
-    // the comma expression.
-    static_assert(__is_lvalue_expr(x,x), "expected an lvalue");
-    static_assert(__is_rvalue_expr(x,1), "expected an rvalue");
-    static_assert(__is_lvalue_expr(1,x), "expected an lvalue");
-    static_assert(__is_rvalue_expr(1,1), "expected an rvalue");
-}
-
-#if 0
-template<typename T> void f();
-
-// FIXME These currently fail
-void expr_fun_lvalue()
-{
-  ASSERT_LVALUE(&f<int>);
-}
-
-void expr_fun_rvalue()
-{
-  ASSERT_RVALUE(f<int>);
-}
-#endif
-
-template <int NonTypeNonReferenceParameter, int& NonTypeReferenceParameter>
-void check_temp_param_6()
-{
-    ASSERT_RVALUE(NonTypeNonReferenceParameter);
-    ASSERT_LVALUE(NonTypeReferenceParameter);
-}
-
-int AnInt = 0;
-
-void temp_param_6()
-{
-    check_temp_param_6<3,AnInt>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/expressions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/expressions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/expressions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-constant-conversion %s
-
-void choice(int);
-int choice(bool);
-
-void test() {
-  // Result of ! must be type bool.
-  int i = choice(!1);
-}
-
-// rdar://8018252
-void f0() {
-  extern void f0_1(int*);
-  register int x;
-  f0_1(&x);
-}
-
-namespace test1 {
-  template <class T> void bar(T &x) { T::fail(); }
-  template <class T> void bar(volatile T &x) {}
-
-  void test_ints() {
-    volatile int x;
-    bar(x = 5);
-    bar(x += 5);
-  }
-
-  enum E { E_zero };
-  void test_enums() {
-    volatile E x;
-    bar(x = E_zero);
-    bar(x += E_zero); // expected-error {{incompatible type}}
-  }
-}
-
-int test2(int x) {
-  return x && 4; // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-
-  return x && sizeof(int) == 4;  // no warning, RHS is logical op.
-  return x && true;
-  return x && false;
-  return x || true;
-  return x || false;
-
-  return x && (unsigned)0; // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-
-  return x || (unsigned)1; // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-
-  return x || 0; // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x || 1; // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x || -1; // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x || 5; // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x && 0; // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-  return x && 1; // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-  return x && -1; // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-  return x && 5; // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-  return x || (0); // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x || (1); // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x || (-1); // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x || (5); // expected-warning {{use of logical '||' with constant operand}} \
-                   // expected-note {{use '|' for a bitwise operation}}
-  return x && (0); // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-  return x && (1); // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-  return x && (-1); // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-  return x && (5); // expected-warning {{use of logical '&&' with constant operand}} \
-                   // expected-note {{use '&' for a bitwise operation}} \
-                   // expected-note {{remove constant to silence this warning}}
-}
-
-template<unsigned int A, unsigned int B> struct S
-{
-  enum {
-    e1 = A && B,
-    e2 = A && 7      // expected-warning {{use of logical '&&' with constant operand}} \
-                     // expected-note {{use '&' for a bitwise operation}} \
-                     // expected-note {{remove constant to silence this warning}}
-  };
-
-  int foo() {
-    int x = A && B;
-    int y = B && 3;  // expected-warning {{use of logical '&&' with constant operand}} \
-                     // expected-note {{use '&' for a bitwise operation}} \
-                     // expected-note {{remove constant to silence this warning}}
-
-    return x + y;
-  }
-};
-
-void test3() {
-  S<5, 8> s1;
-  S<2, 7> s2;
-  (void)s1.foo();
-  (void)s2.foo();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/extern-c.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/extern-c.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/extern-c.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace test1 {
-  extern "C" {
-    void f() {
-      void test1_g(int); // expected-note {{previous declaration is here}}
-    }
-  }
-}
-int test1_g(int); // expected-error {{functions that differ only in their return type cannot be overloaded}}
-
-namespace test2 {
-  extern "C" {
-    void f() {
-      extern int test2_x; // expected-note {{previous definition is here}}
-    }
-  }
-}
-float test2_x; // expected-error {{redefinition of 'test2_x' with a different type: 'float' vs 'int'}}
-
-namespace test3 {
-  extern "C" {
-    void f() {
-      extern int test3_b; // expected-note {{previous definition is here}}
-    }
-  }
-  extern "C" {
-    float test3_b; // expected-error {{redefinition of 'test3_b' with a different type: 'float' vs 'int'}}
-  }
-}
-
-extern "C" {
-  void test4_f() {
-    extern int test4_b; // expected-note {{previous definition is here}}
-  }
-}
-static float test4_b; // expected-error {{redefinition of 'test4_b' with a different type: 'float' vs 'int'}}
-
-extern "C" {
-  void test5_f() {
-    extern int test5_b; // expected-note {{previous definition is here}}
-  }
-}
-extern "C" {
-  static float test5_b; // expected-error {{redefinition of 'test5_b' with a different type: 'float' vs 'int'}}
-}
-
-extern "C" {
-  void f() {
-    extern int test6_b;
-  }
-}
-namespace foo {
-  extern "C" {
-    static float test6_b;
-    extern float test6_b;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/flexible-array-test.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/flexible-array-test.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/flexible-array-test.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// pr7029
-
-template <class Key, class T> struct QMap
-{
-  void insert(const Key &, const T &);
-  T v;
-};
-
-
-template <class Key, class T>
-void QMap<Key, T>::insert(const Key &, const T &avalue)
-{
-  v = avalue;
-}
-
-
-struct inotify_event
-{
-  int wd;
- 
-  // clang doesn't like '[]': 
-  // cannot initialize a parameter of type 'void *' with an rvalue of type 'char (*)[]'
-  char name [];	
-};
-
-
-void foo()
-{
-    inotify_event event;
-    inotify_event* ptr = &event;
-    inotify_event event1 = *ptr;
-    *ptr = event;
-    QMap<int, inotify_event> eventForId;
-    eventForId.insert(ptr->wd, *ptr);
-}
-
-struct S {
-	virtual void foo();
-};
-
-struct X {
-   int blah;
-   S strings[];	// expected-error {{flexible array member 'strings' of non-POD element type 'S []'}}
-};
-
-class A {
-  int s;
-  char c[];
-};
-
-union B {
-  int s;
-  char c[];
-};
-
-namespace rdar9065507 {
-
-struct StorageBase {
-  long ref_count;
-  unsigned size;
-  unsigned capacity;
-};
-
-struct Storage : StorageBase {
-  int data[];
-};
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/fntype-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/fntype-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/fntype-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR2942
-typedef void fn(int);
-fn f; // expected-note {{previous declaration is here}}
-
-int g(int x, int y);
-int g(int x, int y = 2);
-
-typedef int g_type(int, int);
-g_type g;
-
-int h(int x) { // expected-note {{previous definition is here}}
-  return g(x);
-}
-
-float f(int) { } // expected-error{{functions that differ only in their return type cannot be overloaded}}
-
-int h(int) { } // expected-error{{redefinition of 'h'}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-dereference.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-dereference.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-dereference.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-struct Data { };
-struct T {
-  Data *begin();
-  Data *end();
-};
-
-struct NoBegin {
-  Data *end();
-};
-
-struct DeletedEnd : public T {
-  Data *begin();
-  Data *end() = delete; //expected-note {{function has been explicitly marked deleted here}}
-};
-
-struct DeletedADLBegin { };
-
-int* begin(DeletedADLBegin) = delete; //expected-note {{candidate function has been explicitly deleted}} \
- expected-note 5 {{candidate function not viable: no known conversion}}
-
-struct PrivateEnd {
-  Data *begin();
-
- private:
-  Data *end(); // expected-note 2 {{declared private here}}
-};
-
-struct ADLNoEnd { };
-Data * begin(ADLNoEnd); // expected-note 6 {{candidate function not viable: no known conversion}}
-
-struct OverloadedStar {
-  T operator*();
-};
-
-void f() {
-  T t;
-  for (auto i : t) { }
-  T *pt;
-  for (auto i : pt) { } // expected-error{{invalid range expression of type 'T *'; did you mean to dereference it with '*'?}}
-
-  int arr[10];
-  for (auto i : arr) { }
-  int (*parr)[10];
-  for (auto i : parr) { }// expected-error{{invalid range expression of type 'int (*)[10]'; did you mean to dereference it with '*'?}}
-
-  NoBegin NB;
-  for (auto i : NB) { }// expected-error{{range type 'NoBegin' has 'end' member but no 'begin' member}}
-  NoBegin *pNB;
-  for (auto i : pNB) { }// expected-error{{invalid range expression of type 'NoBegin *'; no viable 'begin' function available}}
-  NoBegin **ppNB;
-  for (auto i : ppNB) { }// expected-error{{invalid range expression of type 'NoBegin **'; no viable 'begin' function available}}
-  NoBegin *****pppppNB;
-  for (auto i : pppppNB) { }// expected-error{{invalid range expression of type 'NoBegin *****'; no viable 'begin' function available}}
-
-  ADLNoEnd ANE;
-  for (auto i : ANE) { } // expected-error{{invalid range expression of type 'ADLNoEnd'; no viable 'end' function available}}
-  ADLNoEnd *pANE;
-  for (auto i : pANE) { } // expected-error{{invalid range expression of type 'ADLNoEnd *'; no viable 'begin' function available}}
-
-  DeletedEnd DE;
-  for (auto i : DE) { } // expected-error{{attempt to use a deleted function}} \
-expected-note {{when looking up 'end' function for range expression of type 'DeletedEnd'}}
-  DeletedEnd *pDE;
-
-  for (auto i : pDE) { } // expected-error {{invalid range expression of type 'DeletedEnd *'; no viable 'begin' function available}}
-
-  PrivateEnd PE;
-  // FIXME: This diagnostic should be improved, as it does not specify that
-  // the range is invalid.
-  for (auto i : PE) { } // expected-error{{'end' is a private member of 'PrivateEnd'}}
-
-  PrivateEnd *pPE;
-  for (auto i : pPE) { }// expected-error {{invalid range expression of type 'PrivateEnd *'}}
-  // expected-error at -1 {{'end' is a private member of 'PrivateEnd'}}
-
-  DeletedADLBegin DAB;
-  for (auto i : DAB) { } // expected-error {{call to deleted function 'begin'}}\
-  expected-note {{when looking up 'begin' function for range expression of type 'DeletedADLBegin'}}
-
-  OverloadedStar OS;
-  for (auto i : *OS) { }
-
-  for (auto i : OS) { } // expected-error {{invalid range expression of type 'OverloadedStar'; did you mean to dereference it with '*'?}}
-
-  for (Data *p : pt) { } // expected-error {{invalid range expression of type 'T *'; did you mean to dereference it with '*'?}}
-  // expected-error at -1 {{no viable conversion from 'Data' to 'Data *'}}
-  // expected-note at 4 {{selected 'begin' function with iterator type 'Data *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-examples.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-examples.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-examples.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,182 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-namespace value_range_detail {
-  template<typename T>
-  class value_range_iter {
-    T t;
-  public:
-    value_range_iter(const T &t) : t(t) {}
-    T operator*() const { return t; }
-    bool operator!=(const value_range_iter &o) const { return t != o.t; }
-    value_range_iter &operator++() { ++t; return *this; }
-  };
-
-  template<typename T>
-  struct value_range {
-    value_range(const T &a, const T &b) : begin_(a), end_(b) {}
-    value_range_iter<T> begin_, end_;
-  };
-
-  template<typename T>
-  value_range_iter<T> begin(const value_range<T> &r) { return r.begin_; }
-  template<typename T>
-  value_range_iter<T> end(const value_range<T> &r) { return r.end_; }
-
-
-  struct end_t {};
-
-  template<typename T>
-  class value_range_step_iter {
-    T it, step;
-  public:
-    value_range_step_iter(const T &it, const T &step) : it(it), step(step) {}
-    T operator*() const { return it; }
-    bool operator!=(value_range_step_iter end) const { return it != end.it; }
-    value_range_step_iter &operator++() { it += step; return *this; }
-  };
-
-  template<typename T>
-  class value_range_step {
-    T it, step, end_;
-  public:
-    value_range_step(const T &it, const T &end, const T &step) :
-      it(it), end_(end), step(step) {}
-    typedef value_range_step_iter<T> iterator;
-    iterator begin() const { return iterator(it, step); }
-    iterator end() const { return iterator(end_, step); }
-  };
-}
-
-template<typename T>
-value_range_detail::value_range<T> range(const T &a, const T &b) { return value_range_detail::value_range<T>(a, b); }
-
-template<typename T>
-value_range_detail::value_range_step<T> range(const T &a, const T &b, const T &step) { return value_range_detail::value_range_step<T>(a, b, step); }
-
-
-namespace map_range {
-  template<typename T>
-  class vector {
-    T storage[100];
-    decltype(sizeof(char)) size;
-  public:
-    vector() : size() {}
-    void push_back(T t) { storage[size++] = t; }
-    T *begin() { return storage; }
-    T *end() { return storage + size; }
-  };
-
-  template<typename T> struct tuple_elem {
-    T t;
-    tuple_elem() {}
-    tuple_elem(T t) : t(t) {}
-  };
-  template<typename... A>
-  struct tuple : tuple_elem<A>... {
-    tuple() : tuple_elem<A>()... {}
-    tuple(A... a) : tuple_elem<A>(a)... {}
-    template<typename B> B &get() { return tuple_elem<B>::t; }
-  };
-
-  template<typename F, typename I>
-  class map_iter {
-    F f;
-    I i;
-  public:
-    map_iter(F f, I i) : f(f), i(i) {}
-    auto operator*() const -> decltype(f(*i)) { return f(*i); }
-    bool operator!=(const map_iter &o) const { return i != o.i; }
-    map_iter &operator++() { ++i; return *this; }
-  };
-
-  template<typename T>
-  struct iter_pair {
-    T begin_, end_;
-    iter_pair(T begin, T end) : begin_(begin), end_(end) {}
-  };
-  template<typename T> T begin(iter_pair<T> p) { return p.begin_; }
-  template<typename T> T end(iter_pair<T> p) { return p.end_; }
-
-  template<typename...> class mem_fun_impl;
-  template<typename R, typename T, typename... A>
-  class mem_fun_impl<R (T::*)(A...)> {
-    typedef R (T::*F)(A...);
-    F f;
-  public:
-    mem_fun_impl(F f) : f(f) {}
-    R operator()(T &t, A &&...a) const { return (t.*f)(static_cast<A&&>(a)...); }
-  };
-  template<typename F> mem_fun_impl<F> mem_fun(F f) { return mem_fun_impl<F>(f); }
-
-  template<typename F, typename T>
-  auto map(const F &f, T &t) -> iter_pair<map_iter<F, decltype(t.begin())>> {
-    typedef map_iter<F, decltype(t.begin())> iter;
-    return iter_pair<iter>(iter(f, t.begin()), iter(f, t.end()));
-  }
-}
-
-#define assert(b) if (!(b)) { return 1; }
-int main() {
-  int total = 0;
-
-  for (auto n : range(1, 5)) {
-    total += n;
-  }
-  assert(total == 10);
-
-  for (auto n : range(10, 100, 10)) {
-    total += n;
-  }
-  assert(total == 460);
-
-  map_range::vector<char> chars;
-  chars.push_back('a');
-  chars.push_back('b');
-  chars.push_back('c');
-  for (char c : chars) {
-    ++total;
-  }
-  assert(total == 463);
-
-  typedef map_range::tuple<int, double> T;
-  map_range::vector<T> pairs;
-  pairs.push_back(T(42, 12.9));
-  pairs.push_back(T(6, 4.2));
-  pairs.push_back(T(9, 1.1));
-  for (auto a : map(map_range::mem_fun(&T::get<int>), pairs)) {
-    total += a;
-  }
-  assert(total == 500);
-}
-
-// PR11793
-namespace test2 {
-  class A {
-    int xs[10]; // expected-note {{implicitly declared private here}}
-  };
-  void test(A &a) {
-    for (int x : a.xs) { } // expected-error {{'xs' is a private member of 'test2::A'}}
-  }
-}
-
-namespace test3 {
-  // Make sure this doesn't crash
-  struct A {};
-  struct B { ~B(); operator bool(); };
-  struct C { B operator!=(const C&); C& operator++(); int operator*(); };
-  C begin(const A&);
-  C end(const A&);
-  template<typename T> void f() { for (auto a : A()) {} }
-  void g() { f<int>(); }
-}
-
-namespace test4 {
-  void f() {
-    int y;
-
-    // Make sure these don't crash. Better diagnostics would be nice.
-    for (: {1, 2, 3}) {} // expected-error {{expected expression}} expected-error {{expected ';'}}
-    for (x : {1, 2, 3}) {} // expected-error {{undeclared identifier}} expected-error {{expected ';'}}
-    for (y : {1, 2, 3}) {} // expected-error {{must declare a variable}} expected-warning {{result unused}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-no-std.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-no-std.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-no-std.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++11-extensions
-
-struct S {
-  int *begin();
-  int *end();
-};
-
-struct T {
-};
-
-struct Range {};
-int begin(Range); // expected-note {{not viable}}
-int end(Range);
-
-namespace NS {
-  struct ADL {};
-  struct iter {
-    int operator*();
-    bool operator!=(iter);
-    void operator++();
-  };
-  iter begin(ADL); // expected-note {{not viable}}
-  iter end(ADL);
-
-  struct NoADL {};
-}
-NS::iter begin(NS::NoADL); // expected-note {{not viable}}
-NS::iter end(NS::NoADL);
-
-void f() {
-  int a[] = {1, 2, 3};
-  for (auto b : S()) {} // ok
-  for (auto b : T()) {} // expected-error {{invalid range expression of type 'T'}}
-  for (auto b : a) {} // ok
-  for (int b : NS::ADL()) {} // ok
-  for (int b : NS::NoADL()) {} // expected-error {{invalid range expression of type 'NS::NoADL'}}
-}
-
-void PR11601() {
-  void (*vv[])() = {PR11601, PR11601, PR11601};
-  for (void (*i)() : vv) i();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-unused.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-unused.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/for-range-unused.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 -Wunused
-
-// PR9968: We used to warn that __range is unused in a dependent for-range.
-
-template <typename T>
-  struct Vector {
-    void doIt() {
-      int a; // expected-warning {{unused variable 'a'}}
-
-      for (auto& e : elements) // expected-warning {{unused variable 'e'}}
-        ;
-    }
-
-    T elements[10];
-  };
-
-
-int main(int, char**) {
-  Vector<int>    vector;
-  vector.doIt(); // expected-note {{here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/format-strings-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/format-strings-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/format-strings-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=c++11 %s
-
-extern "C" {
-extern int scanf(const char *restrict, ...);
-extern int printf(const char *restrict, ...);
-}
-
-void f(char **sp, float *fp) {
-  scanf("%as", sp); // expected-warning{{format specifies type 'float *' but the argument has type 'char **'}}
-
-  printf("%a", 1.0);
-  scanf("%afoobar", fp);
-  printf(nullptr);
-  printf(*sp); // expected-warning {{not a string literal}}
-
-  // PR13099
-  printf(
-    R"foobar(%)foobar"
-    R"bazquux(d)bazquux" // expected-warning {{more '%' conversions than data arguments}}
-    R"xyzzy()xyzzy");
-
-  printf(u8"this is %d test", 0); // ok
-  printf(u8R"foo(
-      \u1234\U0010fffe
-      %d)foo" // expected-warning {{more '%' conversions than data arguments}}
-  );
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/format-strings.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/format-strings.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/format-strings.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wformat-nonliteral -pedantic -fblocks %s
-
-#include <stdarg.h>
-
-extern "C" {
-extern int scanf(const char *restrict, ...);
-extern int printf(const char *restrict, ...);
-extern int vprintf(const char *restrict, va_list);
-}
-
-void f(char **sp, float *fp) {
-  scanf("%as", sp); // expected-warning{{'a' length modifier is not supported by ISO C}}
-
-  // TODO: Warn that the 'a' conversion specifier is a C++11 feature.
-  printf("%a", 1.0);
-  scanf("%afoobar", fp);
-}
-
-void g() {
-  printf("%ls", "foo"); // expected-warning{{format specifies type 'wchar_t *' but the argument has type 'const char *'}}
-}
-
-// Test that we properly handle format_idx on C++ members.
-class Foo {
-public:
-  const char *gettext(const char *fmt) __attribute__((format_arg(2)));
-
-  int scanf(const char *, ...) __attribute__((format(scanf, 2, 3)));
-  int printf(const char *, ...) __attribute__((format(printf, 2, 3)));
-  int printf2(const char *, ...);
-
-  static const char *gettext_static(const char *fmt) __attribute__((format_arg(1)));
-  static int printf_static(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
-};
-
-void h(int *i) {
-  Foo foo;
-  foo.scanf("%d"); // expected-warning{{more '%' conversions than data arguments}}
-  foo.printf("%d", i); // expected-warning{{format specifies type 'int' but the argument has type 'int *'}}
-  Foo::printf_static("%d", i); // expected-warning{{format specifies type 'int' but the argument has type 'int *'}}
-
-  printf(foo.gettext("%d"), i); // expected-warning{{format specifies type 'int' but the argument has type 'int *'}}
-  printf(Foo::gettext_static("%d"), i); // expected-warning{{format specifies type 'int' but the argument has type 'int *'}}
-}
-
-// Test handling __null for format string literal checking.
-extern "C" {
-  int test_null_format(const char *format, ...) __attribute__((__format__ (__printf__, 1, 2)));
-}
-
-void rdar8269537(const char *f)
-{
-  test_null_format(false); // expected-warning {{null from a constant boolean}}
-  test_null_format(0); // no-warning
-  test_null_format(__null); // no-warning
-  test_null_format(f); // expected-warning {{not a string literal}}
-}
-
-int Foo::printf(const char *fmt, ...) {
-  va_list ap;
-  va_start(ap,fmt);
-  const char * const format = fmt;
-  vprintf(format, ap); // no-warning
-
-  const char *format2 = fmt;
-  vprintf(format2, ap); // expected-warning{{format string is not a string literal}}
-
-  return 0;
-}
-
-int Foo::printf2(const char *fmt, ...) {
-  va_list ap;
-  va_start(ap,fmt);
-  vprintf(fmt, ap); // expected-warning{{format string is not a string literal}}
-
-  return 0;
-}
-
-
-namespace Templates {
-  template<typename T>
-  void my_uninstantiated_print(const T &arg) {
-    printf("%d", arg); // no-warning
-  }
-
-  template<typename T>
-  void my_print(const T &arg) {
-    printf("%d", arg); // expected-warning {{format specifies type 'int' but the argument has type 'const char *'}}
-  }
-
-  void use_my_print() {
-    my_print("abc"); // expected-note {{requested here}}
-  }
-
-
-  template<typename T>
-  class UninstantiatedPrinter {
-  public:
-    static void print(const T &arg) {
-      printf("%d", arg); // no-warning
-    }
-  };
-
-  template<typename T>
-  class Printer {
-    void format(const char *fmt, ...) __attribute__((format(printf,2,3)));
-  public:
-
-    void print(const T &arg) {
-      format("%d", arg); // expected-warning {{format specifies type 'int' but the argument has type 'const char *'}}
-    }
-  };
-
-  void use_class(Printer<const char *> &p) {
-    p.print("abc"); // expected-note {{requested here}}
-  }
-
-  
-  extern void (^block_print)(const char * format, ...) __attribute__((format(printf, 1, 2)));
-
-  template<typename T>
-  void uninstantiated_call_block_print(const T &arg) {
-    block_print("%d", arg); // no-warning
-  }
-
-  template<typename T>
-  void call_block_print(const T &arg) {
-    block_print("%d", arg); // expected-warning {{format specifies type 'int' but the argument has type 'const char *'}}
-  }
-
-  void use_block_print() {
-    call_block_print("abc"); // expected-note {{requested here}}
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/friend-class-nodecl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/friend-class-nodecl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/friend-class-nodecl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s -o %t
-// RUN: not grep '^ *class B' %t
-
-// Tests that the tag decls in friend declarations aren't added to the
-// declaring class's decl chain.
-
-class A {
-  friend class B;
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/friend-out-of-line.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/friend-out-of-line.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/friend-out-of-line.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// <rdar://problem/10204947>
-namespace N {
-  class X;
-};
-
-class N::X {
-  template<typename T> friend const T& f(const X&);
-  friend const int& g(const X&);
-  friend class Y;
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/friend.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/friend.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/friend.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,156 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-friend class A; // expected-error {{'friend' used outside of class}}
-void f() { friend class A; } // expected-error {{'friend' used outside of class}}
-class C { friend class A; };
-class D { void f() { friend class A; } }; // expected-error {{'friend' used outside of class}}
-
-// PR5760
-namespace test0 {
-  namespace ns {
-    void f(int);
-  }
-
-  struct A {
-    friend void ns::f(int a);
-  };
-}
-
-// Test derived from LLVM's Registry.h
-namespace test1 {
-  template <class T> struct Outer {
-    void foo(T);
-    struct Inner {
-      friend void Outer::foo(T);
-    };
-  };
-
-  void test() {
-    (void) Outer<int>::Inner();
-  }
-}
-
-// PR5476
-namespace test2 {
-  namespace foo {
-    void Func(int x);
-  }
-
-  class Bar {
-    friend void ::test2::foo::Func(int x);
-  };
-}
-
-// PR5134
-namespace test3 {
-  class Foo {
-    friend const int getInt(int inInt = 0);
-
-  };
-}
-
-namespace test4 {
-  class T4A {
-    friend class T4B;
-  
-  public:
-    T4A(class T4B *);
-
-  protected:
-    T4B *mB;          // error here
-  };
- 
-  class T4B {};
-}
-
-namespace rdar8529993 {
-struct A { ~A(); };
-
-struct B : A
-{
-  template<int> friend A::~A(); // expected-error {{destructor cannot be declared as a template}}
-};
-}
-
-// PR7915
-namespace test5 {
-  struct A;
-  struct A1 { friend void A(); };
-
-  struct B { friend void B(); };
-}
-
-// PR8479
-namespace test6_1 {
-  class A {
-   public:
-   private:
-    friend class vectorA;
-    A() {}
-  };
-  class vectorA {
-   public:
-    vectorA(int i, const A& t = A()) {}
-  };
-  void f() {
-    vectorA v(1);
-  }
-}
-namespace test6_2 {
-  template<class T>
-  class vector {
-   public:
-    vector(int i, const T& t = T()) {}
-  };
-  class A {
-   public:
-   private:
-    friend class vector<A>;
-    A() {}
-  };
-  void f() {
-    vector<A> v(1);
-  }
-}
-namespace test6_3 {
-  template<class T>
-  class vector {
-   public:
-    vector(int i) {}
-    void f(const T& t = T()) {}
-  };
-  class A {
-   public:
-   private:
-    friend void vector<A>::f(const A&);
-    A() {}
-  };
-  void f() {
-    vector<A> v(1);
-    v.f();
-  }
-}
-
-namespace test7 {
-  extern "C" {
-    class X {
-      friend int f() { return 42; }
-    };
-  }
-}
-
-// PR15485
-namespace test8 {
-  namespace ns1 {
-    namespace ns2 {
-      template<class T> void f(T t); // expected-note {{target of using declaration}}
-    }
-    using ns2::f; // expected-note {{using declaration}}
-  }
-  struct A { void f(); }; // expected-note {{target of using declaration}}
-  struct B : public A { using A::f; }; // expected-note {{using declaration}}
-  struct X {
-    template<class T> friend void ns1::f(T t); // expected-error {{cannot befriend target of using declaration}}
-    friend void B::f(); // expected-error {{cannot befriend target of using declaration}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/function-extern-c.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/function-extern-c.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/function-extern-c.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -Wreturn-type -fsyntax-only -std=c++11 -verify %s
-
-class A {
-public:
-  A(const A&);
-};
-
-struct S {
-  int i;
-  double d;
-
-  virtual void B() {}
-};
-
-union U {
-  struct {
-    int i;
-    virtual void B() {} // Can only do this in C++11
-  } t;
-};
-
-struct S2 {
-  int i;
-  double d;
-};
-
-extern "C" U f3( void ); // expected-warning {{'f3' has C-linkage specified, but returns user-defined type 'U' which is incompatible with C}}
-extern "C" S f0(void); // expected-warning {{'f0' has C-linkage specified, but returns user-defined type 'S' which is incompatible with C}}
-extern "C" A f4( void ); // expected-warning {{'f4' has C-linkage specified, but returns user-defined type 'A' which is incompatible with C}}
-
-// These should all be fine
-extern "C" S2 f5( void );
-extern "C" void f2( A x );
-extern "C" void f6( S s );
-extern "C" void f7( U u );
-extern "C" double f8(void);
-extern "C" long long f11( void );
-extern "C" A *f10( void );
-
-extern "C" struct mypodstruct f12(); // expected-warning {{'f12' has C-linkage specified, but returns incomplete type 'struct mypodstruct' which could be incompatible with C}}
-
-namespace test2 {
-  // FIXME: we should probably suppress the first warning as the second one
-  // is more precise.
-  // For now this tests that a second 'extern "C"' is not necessary to trigger
-  // the warning.
-  struct A;
-  extern "C" A f(void); // expected-warning {{'f' has C-linkage specified, but returns incomplete type 'test2::A' which could be incompatible with C}}
-  struct A {
-    A(const A&);
-  };
-  A f(void);  // no warning. warning is already issued on first declaration.
-}
-
-namespace test3 {
-  struct A {
-    A(const A&);
-  };
-  extern "C" {
-    // Don't warn for static functions.
-    static A f(void);
-  }
-}
-
-// rdar://13364028
-namespace rdar13364028 {
-class A {
-public:
-    virtual int x();
-};
-
-extern "C" {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
-A xyzzy();
-#pragma clang diagnostic pop
-A bbb(); // expected-warning {{'bbb' has C-linkage specified, but returns user-defined type 'rdar13364028::A' which is incompatible with C}}
-A ccc() { // expected-warning {{'ccc' has C-linkage specified, but returns user-defined type 'rdar13364028::A' which is incompatible with C}}
-  return A();
-};
-}
-
-A xyzzy();
-
-A xyzzy()
-{
-  return A();
-}
-
-A bbb()
-{
-  return A();
-}
-
-A bbb();
-
-A ccc();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/function-overload-typo-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/function-overload-typo-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/function-overload-typo-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR10283
-void min(); //expected-note {{'min' declared here}}
-void min(int);
-
-template <typename T> void max(T); //expected-note {{'max' declared here}}
-
-void f() {
-  fin(); //expected-error {{use of undeclared identifier 'fin'; did you mean 'min'}}
-  fax(0); //expected-error {{use of undeclared identifier 'fax'; did you mean 'max'}}
-}
-
-template <typename T> void somefunc(T*, T*); //expected-note {{'somefunc' declared here}}
-template <typename T> void somefunc(const T[]); //expected-note {{'somefunc' declared here}}
-template <typename T1, typename T2> void somefunc(T1*, T2*); //expected-note {{'somefunc' declared here}}
-template <typename T1, typename T2> void somefunc(T1*, const T2[]); //expected-note 2 {{'somefunc' declared here}}
-
-void c() {
-  int *i = 0, *j = 0;
-  const int x[] = {1, 2, 3};
-  long *l = 0;
-  somefun(i, j); //expected-error {{use of undeclared identifier 'somefun'; did you mean 'somefunc'?}}
-  somefun(x); //expected-error {{use of undeclared identifier 'somefun'; did you mean 'somefunc'?}}
-  somefun(i, l); //expected-error {{use of undeclared identifier 'somefun'; did you mean 'somefunc'?}}
-  somefun(l, x); //expected-error {{use of undeclared identifier 'somefun'; did you mean 'somefunc'?}}
-  somefun(i, x); //expected-error {{use of undeclared identifier 'somefun'; did you mean 'somefunc'?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/function-overloaded-redecl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/function-overloaded-redecl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/function-overloaded-redecl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-typedef const int cInt;
-
-void f (int); 
-void f (const int);  // redecl
-
-void f (int) {  }    // expected-note {{previous definition is here}}
-void f (cInt) { }    // expected-error {{redefinition of 'f'}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/function-redecl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/function-redecl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/function-redecl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,118 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-int foo(int);
-
-namespace N {
-  void f1() {
-    void foo(int); // okay
-  }
-
-  // FIXME: we shouldn't even need this declaration to detect errors
-  // below.
-  void foo(int); // expected-note{{previous declaration is here}}
-
-  void f2() {
-    int foo(int); // expected-error{{functions that differ only in their return type cannot be overloaded}}
-
-    {
-      int foo;
-      {
-        // FIXME: should diagnose this because it's incompatible with
-        // N::foo. However, name lookup isn't properly "skipping" the
-        // "int foo" above.
-        float foo(int); 
-      }
-    }
-  }
-}
-
-class A {
- void typocorrection(); // expected-note {{'typocorrection' declared here}}
-};
-
-void A::Notypocorrection() { // expected-error {{out-of-line definition of 'Notypocorrection' does not match any declaration in 'A'; did you mean 'typocorrection'}}
-}
-
-
-namespace test0 {
-  void dummy() {
-    void Bar(); // expected-note {{'Bar' declared here}}
-    class A {
-      friend void bar(); // expected-error {{no matching function 'bar' found in local scope; did you mean 'Bar'}}
-    };
-  }
-}
-
-
-class B {
- void typocorrection(const int); // expected-note {{'typocorrection' declared here}}
- void typocorrection(double);
-};
-
-void B::Notypocorrection(int) { // expected-error {{out-of-line definition of 'Notypocorrection' does not match any declaration in 'B'; did you mean 'typocorrection'}}
-}
-
-struct X { int f(); };
-struct Y : public X {};
-int Y::f() { return 3; } // expected-error {{out-of-line definition of 'f' does not match any declaration in 'Y'}}
-
-namespace test1 {
-struct Foo {
-  class Inner { };
-};
-}
-
-class Bar {
-  void f(test1::Foo::Inner foo) const; // expected-note {{member declaration does not match because it is const qualified}}
-};
-
-using test1::Foo;
-
-void Bar::f(Foo::Inner foo) { // expected-error {{out-of-line definition of 'f' does not match any declaration in 'Bar'}}
-  (void)foo;
-}
-
-class Crash {
- public:
-  void GetCart(int count) const;
-};
-// This out-of-line definition was fine...
-void Crash::cart(int count) const {} // expected-error {{out-of-line definition of 'cart' does not match any declaration in 'Crash'}}
-// ...while this one crashed clang
-void Crash::chart(int count) const {} // expected-error {{out-of-line definition of 'chart' does not match any declaration in 'Crash'}}
-
-class TestConst {
- public:
-  int getit() const; // expected-note {{member declaration does not match because it is const qualified}}
-  void setit(int); // expected-note {{member declaration does not match because it is not const qualified}}
-};
-
-int TestConst::getit() { // expected-error {{out-of-line definition of 'getit' does not match any declaration in 'TestConst'}}
-  return 1;
-}
-
-void TestConst::setit(int) const { // expected-error {{out-of-line definition of 'setit' does not match any declaration in 'TestConst'}}
-}
-
-struct J { int typo() const; };
-int J::typo_() { return 3; } // expected-error {{out-of-line definition of 'typo_' does not match any declaration in 'J'}}
-
-// Ensure we correct the redecl of Foo::isGood to Bar::Foo::isGood and not
-// Foo::IsGood even though Foo::IsGood is technically a closer match since it
-// already has a body. Also make sure Foo::beEvil is corrected to Foo::BeEvil
-// since it is a closer match than Bar::Foo::beEvil and neither have a body.
-namespace redecl_typo {
-namespace Foo {
-  bool IsGood() { return false; }
-  void BeEvil(); // expected-note {{'BeEvil' declared here}}
-}
-namespace Bar {
-  namespace Foo {
-    bool isGood(); // expected-note {{'Bar::Foo::isGood' declared here}}
-    void beEvil();
-  }
-}
-bool Foo::isGood() { // expected-error {{out-of-line definition of 'isGood' does not match any declaration in namespace 'redecl_typo::Foo'; did you mean 'Bar::Foo::isGood'?}}
-  return true;
-}
-void Foo::beEvil() {} // expected-error {{out-of-line definition of 'beEvil' does not match any declaration in namespace 'redecl_typo::Foo'; did you mean 'BeEvil'?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/function-type-qual.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/function-type-qual.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/function-type-qual.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f() const; // expected-error {{non-member function cannot have 'const' qualifier}}
-void (*pf)() const; // expected-error {{pointer to function type cannot have 'const' qualifier}}
-extern void (&rf)() const; // expected-error {{reference to function type cannot have 'const' qualifier}}
-
-typedef void cfn() const;
-cfn f2; // expected-error {{non-member function of type 'cfn' (aka 'void () const') cannot have 'const' qualifier}}
-
-class C {
-  void f() const;
-  cfn f2;
-  static void f3() const; // expected-error {{static member function cannot have 'const' qualifier}}
-  static cfn f4; // expected-error {{static member function of type 'cfn' (aka 'void () const') cannot have 'const' qualifier}}
-
-  void m1() {
-    x = 0;
-  }
-
-  void m2() const {
-    x = 0; // expected-error {{read-only variable is not assignable}}
-  }
-
-  int x;
-};
-
-void (C::*mpf)() const;
-cfn C::*mpg;
-
-// Don't crash!
-void (PR14171)() const; // expected-error {{non-member function cannot have 'const' qualifier}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/functional-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/functional-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/functional-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,321 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// REQUIRES: LP64
-
-// ------------ not interpreted as C-style cast ------------
-
-struct SimpleValueInit {
-  int i;
-};
-
-struct InitViaConstructor {
-  InitViaConstructor(int i = 7);
-};
-
-struct NoValueInit { // expected-note 2 {{candidate constructor (the implicit copy constructor)}} 
-  NoValueInit(int i, int j); // expected-note 2 {{candidate constructor}}
-};
-
-void test_cxx_functional_value_init() {
-  (void)SimpleValueInit();
-  (void)InitViaConstructor();
-  (void)NoValueInit(); // expected-error{{no matching constructor for initialization}}
-}
-
-void test_cxx_function_cast_multi() { 
-  (void)NoValueInit(0, 0);
-  (void)NoValueInit(0, 0, 0); // expected-error{{no matching constructor for initialization}}
-  (void)int(1, 2); // expected-error{{excess elements in scalar initializer}}
-}
-
-
-// ------------------ everything else --------------------
-
-struct A {};
-
-// ----------- const_cast --------------
-
-typedef char c;
-typedef c *cp;
-typedef cp *cpp;
-typedef cpp *cppp;
-typedef cppp &cpppr;
-typedef const cppp &cpppcr;
-typedef const char cc;
-typedef cc *ccp;
-typedef volatile ccp ccvp;
-typedef ccvp *ccvpp;
-typedef const volatile ccvpp ccvpcvp;
-typedef ccvpcvp *ccvpcvpp;
-typedef int iar[100];
-typedef iar &iarr;
-typedef int (*f)(int);
-
-void t_cc()
-{
-  ccvpcvpp var = 0;
-  // Cast away deep consts and volatiles.
-  char ***var2 = cppp(var);
-  char ***const &var3 = var2;
-  // Const reference to reference.
-  char ***&var4 = cpppr(var3);
-  // Drop reference. Intentionally without qualifier change.
-  char *** var5 = cppp(var4);
-  const int ar[100] = {0};
-  // Array decay. Intentionally without qualifier change.
-  typedef int *intp;
-  int *pi = intp(ar);
-  f fp = 0;
-  // Don't misidentify fn** as a function pointer.
-  typedef f *fp_t;
-  f *fpp = fp_t(&fp);
-  int const A::* const A::*icapcap = 0;
-  typedef int A::* A::*iapap_t;
-  iapap_t iapap = iapap_t(icapcap);
-}
-
-// ----------- static_cast -------------
-
-struct B : public A {};             // Single public base.
-struct C1 : public virtual B {};    // Single virtual base.
-struct C2 : public virtual B {};
-struct D : public C1, public C2 {}; // Diamond
-struct E : private A {};            // Single private base.
-struct F : public C1 {};            // Single path to B with virtual.
-struct G1 : public B {};
-struct G2 : public B {};
-struct H : public G1, public G2 {}; // Ambiguous path to B.
-
-enum Enum { En1, En2 };
-enum Onom { On1, On2 };
-
-struct Co1 { operator int(); };
-struct Co2 { Co2(int); };
-struct Co3 { };
-struct Co4 { Co4(Co3); operator Co3(); };
-
-// Explicit implicits
-void t_529_2()
-{
-  int i = 1;
-  (void)float(i);
-  double d = 1.0;
-  (void)float(d);
-  (void)int(d);
-  (void)char(i);
-  typedef unsigned long ulong;
-  (void)ulong(i);
-  (void)int(En1);
-  (void)double(En1);
-  typedef int &intr;
-  (void)intr(i);
-  typedef const int &cintr;
-  (void)cintr(i);
-
-  int ar[1];
-  typedef const int *cintp;
-  (void)cintp(ar);
-  typedef void (*pfvv)();
-  (void)pfvv(t_529_2);
-
-  typedef void *voidp;
-  (void)voidp(0);
-  (void)voidp((int*)0);
-  typedef volatile const void *vcvoidp;
-  (void)vcvoidp((const int*)0);
-  typedef A *Ap;
-  (void)Ap((B*)0);
-  typedef A &Ar;
-  (void)Ar(*((B*)0));
-  typedef const B *cBp;
-  (void)cBp((C1*)0);
-  typedef B &Br;
-  (void)Br(*((C1*)0));
-  (void)Ap((D*)0);
-  typedef const A &cAr;
-  (void)cAr(*((D*)0));
-  typedef int B::*Bmp;
-  (void)Bmp((int A::*)0);
-  typedef void (B::*Bmfp)();
-  (void)Bmfp((void (A::*)())0);
-  (void)Ap((E*)0); // functional-style cast ignores access control
-  (void)voidp((const int*)0); // const_cast appended
-
-  (void)int(Co1());
-  (void)Co2(1);
-  (void)Co3((Co4)(Co3()));
-
-  // Bad code below
-  //(void)(A*)((H*)0); // {{static_cast from 'struct H *' to 'struct A *' is not allowed}}
-}
-
-// Anything to void
-void t_529_4()
-{
-  void(1);
-  (void(t_529_4));
-}
-
-// Static downcasts
-void t_529_5_8()
-{
-  typedef B *Bp;
-  (void)Bp((A*)0);
-  typedef B &Br;
-  (void)Br(*((A*)0));
-  typedef const G1 *cG1p;
-  (void)cG1p((A*)0);
-  typedef const G1 &cG1r;
-  (void)cG1r(*((A*)0));
-  (void)Bp((const A*)0); // const_cast appended
-  (void)Br(*((const A*)0)); // const_cast appended
-  typedef E *Ep;
-  (void)Ep((A*)0); // access control ignored
-  typedef E &Er;
-  (void)Er(*((A*)0)); // access control ignored
-
-  // Bad code below
-
-  typedef C1 *C1p;
-  (void)C1p((A*)0); // expected-error {{cannot cast 'A *' to 'C1p' (aka 'C1 *') via virtual base 'B'}}
-  typedef C1 &C1r;
-  (void)C1r(*((A*)0)); // expected-error {{cannot cast 'A' to 'C1r' (aka 'C1 &') via virtual base 'B'}}
-  typedef D *Dp;
-  (void)Dp((A*)0); // expected-error {{cannot cast 'A *' to 'Dp' (aka 'D *') via virtual base 'B'}}
-  typedef D &Dr;
-  (void)Dr(*((A*)0)); // expected-error {{cannot cast 'A' to 'Dr' (aka 'D &') via virtual base 'B'}}
-  typedef H *Hp;
-  (void)Hp((A*)0); // expected-error {{ambiguous cast from base 'A' to derived 'H':\n    struct A -> struct B -> struct G1 -> struct H\n    struct A -> struct B -> struct G2 -> struct H}}
-  typedef H &Hr;
-  (void)Hr(*((A*)0)); // expected-error {{ambiguous cast from base 'A' to derived 'H':\n    struct A -> struct B -> struct G1 -> struct H\n    struct A -> struct B -> struct G2 -> struct H}}
-
-  // TODO: Test DR427. This requires user-defined conversions, though.
-}
-
-// Enum conversions
-void t_529_7()
-{
-  (void)Enum(1);
-  (void)Enum(1.0);
-  (void)Onom(En1);
-
-  // Bad code below
-
-  (void)Enum((int*)0); // expected-error {{functional-style cast from 'int *' to 'Enum' is not allowed}}
-}
-
-// Void pointer to object pointer
-void t_529_10()
-{
-  typedef int *intp;
-  (void)intp((void*)0);
-  typedef const A *cAp;
-  (void)cAp((void*)0);
-  (void)intp((const void*)0); // const_cast appended
-}
-
-// Member pointer upcast.
-void t_529_9()
-{
-  typedef int A::*Amp;
-  (void)Amp((int B::*)0);
-
-  // Bad code below
-  (void)Amp((int H::*)0); // expected-error {{ambiguous conversion from pointer to member of derived class 'H' to pointer to member of base class 'A':}}
-  (void)Amp((int F::*)0); // expected-error {{conversion from pointer to member of class 'F' to pointer to member of class 'A' via virtual base 'B' is not allowed}}
-}
-
-// -------- reinterpret_cast -----------
-
-enum test { testval = 1 };
-struct structure { int m; };
-typedef void (*fnptr)();
-
-// Test conversion between pointer and integral types, as in p3 and p4.
-void integral_conversion()
-{
-  typedef void *voidp;
-  void *vp = voidp(testval);
-  long l = long(vp);
-  typedef float *floatp;
-  (void)floatp(l);
-  fnptr fnp = fnptr(l);
-  (void)char(fnp); // expected-error {{cast from pointer to smaller type 'char' loses information}}
-  (void)long(fnp);
-}
-
-void pointer_conversion()
-{
-  int *p1 = 0;
-  typedef float *floatp;
-  float *p2 = floatp(p1);
-  typedef structure *structurep;
-  structure *p3 = structurep(p2);
-  typedef int **ppint;
-  typedef ppint *pppint;
-  ppint *deep = pppint(p3);
-  typedef fnptr fnptrp;
-  (void)fnptrp(deep);
-}
-
-void constness()
-{
-  int ***const ipppc = 0;
-  typedef int const *icp_t;
-  int const *icp = icp_t(ipppc);
-  typedef int *intp;
-  (void)intp(icp); // const_cast appended
-  typedef int const *const ** intcpcpp;
-  intcpcpp icpcpp = intcpcpp(ipppc); // const_cast appended
-  int *ip = intp(icpcpp);
-  (void)icp_t(ip);
-  typedef int const *const *const *intcpcpcp;
-  (void)intcpcpcp(ipppc);
-}
-
-void fnptrs()
-{
-  typedef int (*fnptr2)(int);
-  fnptr fp = 0;
-  (void)fnptr2(fp);
-  typedef void *voidp;
-  void *vp = voidp(fp);
-  (void)fnptr(vp);
-}
-
-void refs()
-{
-  long l = 0;
-  typedef char &charr;
-  char &c = charr(l);
-  // Bad: from rvalue
-  typedef int &intr;
-  (void)intr(&c); // expected-error {{functional-style cast from rvalue to reference type 'intr' (aka 'int &')}}
-}
-
-void memptrs()
-{
-  const int structure::*psi = 0;
-  typedef const float structure::*structurecfmp;
-  (void)structurecfmp(psi);
-  typedef int structure::*structureimp;
-  (void)structureimp(psi); // const_cast appended
-
-  void (structure::*psf)() = 0;
-  typedef int (structure::*structureimfp)();
-  (void)structureimfp(psf);
-
-  typedef void (structure::*structurevmfp)();
-  (void)structurevmfp(psi); // expected-error {{functional-style cast from 'const int structure::*' to 'structurevmfp' (aka 'void (structure::*)()') is not allowed}}
-  (void)structureimp(psf); // expected-error {{functional-style cast from 'void (structure::*)()' to 'structureimp' (aka 'int structure::*') is not allowed}}
-}
-
-// ---------------- misc ------------------
-
-void crash_on_invalid_1()
-{
-  typedef itn Typo; // expected-error {{unknown type name 'itn'}}
-  (void)Typo(1); // used to crash
-
-  typedef int &int_ref;
-  (void)int_ref(); // expected-error {{reference to type 'int' requires an initializer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/generic-selection.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/generic-selection.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/generic-selection.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template <typename T, typename U = void*>
-struct A {
-  enum {
-    id = _Generic(T(), // expected-error {{controlling expression type 'char' not compatible with any generic association type}}
-        int: 1, // expected-note {{compatible type 'int' specified here}}
-        float: 2,
-        U: 3) // expected-error {{type 'int' in generic association compatible with previously specified type 'int'}}
-  };
-};
-
-static_assert(A<int>::id == 1, "fail");
-static_assert(A<float>::id == 2, "fail");
-static_assert(A<double, double>::id == 3, "fail");
-
-A<char> a1; // expected-note {{in instantiation of template class 'A<char, void *>' requested here}}
-A<short, int> a2; // expected-note {{in instantiation of template class 'A<short, int>' requested here}}
-
-template <typename T, typename U>
-struct B {
-  enum {
-    id = _Generic(T(),
-        int: 1, // expected-note {{compatible type 'int' specified here}}
-        int: 2, // expected-error {{type 'int' in generic association compatible with previously specified type 'int'}}
-        U: 3)
-  };
-};
-
-template <unsigned Arg, unsigned... Args> struct Or {
-  enum { result = Arg | Or<Args...>::result };
-};
-
-template <unsigned Arg> struct Or<Arg> {
-  enum { result = Arg };
-};
-
-template <class... Args> struct TypeMask {
-  enum {
-   result = Or<_Generic(Args(), int: 1, long: 2, short: 4, float: 8)...>::result
-  };
-};
-
-static_assert(TypeMask<int, long, short>::result == 7, "fail");
-static_assert(TypeMask<float, short>::result == 12, "fail");
-static_assert(TypeMask<int, float, float>::result == 9, "fail");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/gnu-case-ranges.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/gnu-case-ranges.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/gnu-case-ranges.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-covered-switch-default %s
-// expected-no-diagnostics
-
-enum E {
-    one,
-    two,
-    three,
-    four
-};
-
-
-int test(enum E e) 
-{
-    switch (e) 
-    {
-        case one:
-            return 7;
-        case two ... two + 1:
-            return 42;
-        case four:
-            return 25;
-        default:
-            return 0;
-    }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/goto.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/goto.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/goto.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,127 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wall -fblocks %s
-
-// PR9463
-double *end;
-void f(bool b1, bool b2) {
-  {
-    do {
-      int end = 0;
-      if (b2) {
-        do {
-          goto end;
-        } while (b2);
-      }
-      end = 1;
-    } while (b1);
-  }
-
- end:
-  return;
-}
-
-namespace N {
-  float* end;
-  void f(bool b1, bool b2) {
-    {
-      do {
-        int end = 0;
-        if (b2) {
-          do {
-            goto end;
-          } while (b2);
-        }
-        end = 1;
-      } while (b1);
-    }
-
-  end:
-    return;
-  }
-}
-
-void g() {
-  end = 1; // expected-error{{assigning to 'double *' from incompatible type 'int'}}
-}
-
-void h(int end) {
-  {
-    goto end; // expected-error{{use of undeclared label 'end'}}
-  }
-}
-
-void h2(int end) {
-  {
-    __label__ end;
-    goto end;
-
-  end:
-    ::end = 0;
-  }
- end: // expected-warning{{unused label 'end'}}
-  end = 1;
-}
-
-class X {
-public:
-  X();
-};
-
-void rdar9135994()
-{
-X:  
-    goto X;
-}
-
-namespace PR9495 {
-  struct NonPOD { NonPOD(); ~NonPOD(); };  
-  
-  void f(bool b) {
-    NonPOD np;
-    if (b) {
-      goto undeclared; // expected-error{{use of undeclared label 'undeclared'}}
-    }
-  }
-
-  void g() {
-    (void)^(bool b){
-      NonPOD np;
-      if (b) {
-        goto undeclared; // expected-error{{use of undeclared label 'undeclared'}}
-      }
-    };
-  }
-}
-
-extern "C" {
-  void exit(int);
-}
-
-void f() {
-  {
-    goto exit;
-  }
- exit:
-  return;
-}
-
-namespace PR10620 {
-  struct S {
-    ~S() {}
-  };
-  void g(const S& s) {
-    goto done; // expected-error {{goto into protected scope}}
-    const S s2(s); // expected-note {{jump bypasses variable initialization}}
-  done:
-    ;
-  }
-}
-
-namespace test12 {
-  struct A { A(); A(const A&); ~A(); };
-  void test(A a) { // expected-note {{jump enters lifetime of block}} FIXME: wierd location
-    goto lbl; // expected-error {{goto into protected scope}}
-    (void) ^{ (void) a; };
-  lbl:
-    return;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/goto2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/goto2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/goto2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-//PR9463
-int subfun(const char *text) {
-  const char *tmp = text;
-  return 0;
-}
-
-void fun(const char* text) {
-  int count = 0;
-  bool check = true;
-
-  if (check)
-    {
-      const char *end = text;
-
-      if (check)
-        {
-          do
-            {
-              if (check)
-                {
-                  count = subfun(end);
-                  goto end;
-                }
-
-              check = !check;
-            }
-          while (check);
-        }
-      // also works, after commenting following line of source code
-      int e = subfun(end);
-    }
- end:
-  if (check)
-    ++count;
-}
-
-const char *text = "some text";
-
-int main() {
-	const char *ptr = text;
-
-	fun(ptr);
-
-	return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/i-c-e-cxx.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/i-c-e-cxx.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/i-c-e-cxx.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-// C++-specific tests for integral constant expressions.
-
-const int c = 10;
-int ar[c];
-
-struct X0 {
-  static const int value = static_cast<int>(4.0);
-};
-
-void f() {
-  if (const int value = 17) {
-    int array[value];
-  }
-}
-
-int a() {
-  const int t=t; // expected-note {{declared here}}
-  switch(1) { // expected-warning {{no case matching constant switch condition '1'}}
-    case t:; // expected-error {{not an integral constant expression}} expected-note {{initializer of 't' is not a constant expression}}
-  }
-}
-
-// PR6206:  out-of-line definitions are legit
-namespace pr6206 {
-  class Foo {
-  public:
-    static const int kBar;
-  };
-
-  const int Foo::kBar = 20;
-  
-  char Test() {
-    char str[Foo::kBar];
-    str[0] = '0';
-    return str[0];
-  }
-}
-
-// PR6373:  default arguments don't count.
-void pr6373(const unsigned x = 0) {
-  unsigned max = 80 / x;
-}
-
-
-// rdar://9204520
-namespace rdar9204520 {
-  
-struct A {
-  static const int B = int(0.75 * 1000 * 1000); // expected-warning {{not a constant expression; folding it to a constant is a GNU extension}}
-};
-
-int foo() { return A::B; }
-}
-
-// PR11040
-const int x = 10;
-int* y = reinterpret_cast<const char&>(x); // expected-error {{cannot initialize}}
-
-// This isn't an integral constant expression, but make sure it folds anyway.
-struct PR8836 { char _; long long a; }; // expected-warning {{long long}}
-int PR8836test[(__typeof(sizeof(int)))&reinterpret_cast<const volatile char&>((((PR8836*)0)->a))]; // expected-warning {{folded to constant array as an extension}} expected-note {{cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression}}
-
-const int nonconst = 1.0; // expected-note {{declared here}}
-int arr[nonconst]; // expected-warning {{folded to constant array as an extension}} expected-note {{initializer of 'nonconst' is not a constant expression}}
-const int castfloat = static_cast<int>(1.0);
-int arr2[castfloat]; // ok

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/illegal-member-initialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/illegal-member-initialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/illegal-member-initialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-struct A {
-   A() : value(), cvalue() { } // expected-error {{reference to type 'int' requires an initializer}}
-   int &value;
-   const int cvalue;
-};
-
-struct B {
-};
-
-struct X {
-   X() { }      // expected-error {{constructor for 'X' must explicitly initialize the reference member 'value'}} \
-                // expected-error {{constructor for 'X' must explicitly initialize the const member 'cvalue'}} \
-                // expected-error {{constructor for 'X' must explicitly initialize the reference member 'b'}} \
-                // expected-error {{constructor for 'X' must explicitly initialize the const member 'cb'}}
-   int &value; // expected-note{{declared here}}
-   const int cvalue; // expected-note{{declared here}}
-   B& b; // expected-note{{declared here}}
-   const B cb; // expected-note{{declared here}}
-};
-
-
-// PR5924
-struct bar {};
-bar xxx();
-
-struct foo {
-  foo_t a;  // expected-error {{unknown type name 'foo_t'}}
-  foo() : a(xxx()) {}  // no error here.
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-exception-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-exception-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-exception-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -verify -std=c++11 -Wall %s
-
-template<bool b> struct ExceptionIf { static int f(); };
-template<> struct ExceptionIf<false> { typedef int f; };
-
-// The exception specification of a defaulted default constructor depends on
-// the contents of in-class member initializers. However, the in-class member
-// initializers can depend on the exception specification of the constructor,
-// since the class is considered complete within them. We reject any such cases.
-namespace InClassInitializers {
-  // Noexcept::Noexcept() is implicitly declared as noexcept(false), because it
-  // directly invokes ThrowSomething(). However...
-  //
-  // If noexcept(Noexcept()) is false, then Noexcept() is a constant expression,
-  // so noexcept(Noexcept()) is true. But if noexcept(Noexcept()) is true, then
-  // Noexcept::Noexcept is not declared constexpr, therefore noexcept(Noexcept())
-  // is false.
-  bool ThrowSomething() noexcept(false);
-  struct ConstExpr {
-    bool b = noexcept(ConstExpr()) && ThrowSomething(); // expected-error {{cannot be used by non-static data member initializer}}
-  };
-  // We can use it now.
-  bool w = noexcept(ConstExpr());
-
-  // Much more obviously broken: we can't parse the initializer without already
-  // knowing whether it produces a noexcept expression.
-  struct TemplateArg {
-    int n = ExceptionIf<noexcept(TemplateArg())>::f(); // expected-error {{cannot be used by non-static data member initializer}}
-  };
-  bool x = noexcept(TemplateArg());
-
-  // And within a nested class.
-  struct Nested { // expected-error {{cannot be used by non-static data member initializer}}
-    struct Inner {
-      int n = ExceptionIf<noexcept(Nested())>::f(); // expected-note {{implicit default constructor for 'InClassInitializers::Nested' first required here}}
-    } inner;
-  };
-
-  struct Nested2 {
-    struct Inner;
-    int n = Inner().n; // expected-error {{cannot be used by non-static data member initializer}}
-    struct Inner {
-      int n = ExceptionIf<noexcept(Nested2())>::f();
-    } inner;
-  };
-}
-
-namespace ExceptionSpecification {
-  // A type is permitted to be used in a dynamic exception specification when it
-  // is still being defined, but isn't complete within such an exception
-  // specification.
-  struct Nested { // expected-note {{not complete}}
-    struct T {
-      T() noexcept(!noexcept(Nested())); // expected-error{{incomplete type}}
-    } t;
-  };
-}
-
-namespace DefaultArgument {
-  struct Default {
-    struct T {
-      T(int = ExceptionIf<noexcept(Default())::f()); // expected-error {{call to implicitly-deleted default constructor}}
-    } t; // expected-note {{has no default constructor}}
-  };
-}
-
-namespace ImplicitDtorExceptionSpec {
-  struct A {
-    virtual ~A();
-
-    struct Inner {
-      ~Inner() throw();
-    };
-    Inner inner;
-  };
-
-  struct B {
-    virtual ~B() {} // expected-note {{here}}
-  };
-
-  struct C : B {
-    virtual ~C() {}
-    A a;
-  };
-
-  struct D : B {
-    ~D(); // expected-error {{more lax than base}}
-    struct E {
-      ~E();
-      struct F {
-        ~F() throw(A);
-      } f;
-    } e;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-int.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-int.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-int.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-x; // expected-error{{C++ requires a type specifier for all declarations}}
-
-f(int y) { return y; } // expected-error{{C++ requires a type specifier for all declarations}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-member-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-member-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-member-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,119 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct A { };
-A::A() { } // expected-error {{definition of implicitly declared default constructor}}
-
-struct B { };
-B::B(const B&) { } // expected-error {{definition of implicitly declared copy constructor}}
-
-struct C { };
-C& C::operator=(const C&) { return *this; } // expected-error {{definition of implicitly declared copy assignment operator}}
-
-struct D { };
-D::~D() { } // expected-error {{definition of implicitly declared destructor}}
-
-// Make sure that the special member functions are introduced for
-// name-lookup purposes and overload with user-declared
-// constructors and assignment operators.
-namespace PR6570 {
-  class A { };
-
-  class B {
-  public:
-    B() {}
-
-    B(const A& a) {
-      operator = (CONST);
-      operator = (a);
-    }
-
-    B& operator = (const A& a) {
-      return *this;
-    }
-
-    void f(const A &a) {
-      B b(a);
-    };
-
-    static const B CONST;
-  };
-
-}
-
-namespace PR7594 {
-  // If the lazy declaration of special member functions is triggered
-  // in an out-of-line initializer, make sure the functions aren't in
-  // the initializer scope. This used to crash Clang:
-  struct C {
-    C();
-    static C *c;
-  };
-  C *C::c = new C();
-}
-
-namespace Recursion {
-  template<typename T> struct InvokeCopyConstructor {
-    static const T &get();
-    typedef decltype(T(get())) type; // expected-error {{no matching conver}}
-  };
-  struct B;
-  struct A {
-    typedef B type;
-    template<typename T,
-             typename = typename InvokeCopyConstructor<typename T::type>::type>
-    // expected-note at -1 {{in instantiation of template class}}
-    A(const T &);
-    // expected-note at -1 {{in instantiation of default argument}}
-    // expected-note at -2 {{while substituting deduced template arguments}}
-  };
-  struct B { // expected-note {{candidate constructor (the implicit move }}
-    B(); // expected-note {{candidate constructor not viable}}
-    A a;
-  };
-  // Triggering the declaration of B's copy constructor causes overload
-  // resolution to occur for A's copying constructor, which instantiates
-  // InvokeCopyConstructor<B>, which triggers the declaration of B's copy
-  // constructor. Notionally, this happens when we get to the end of the
-  // definition of 'struct B', so there is no declared copy constructor yet.
-  //
-  // This behavior is g++-compatible, but isn't exactly right; the class is
-  // supposed to be incomplete when we implicitly declare its special members.
-  B b = B();
-
-
-  // Another case, which isn't ill-formed under our rules. This is inspired by
-  // a problem which occurs when combining CGAL with libstdc++-4.7.
-
-  template<typename T> T &&declval();
-  template<typename T, typename U> struct pair {
-    pair();
-    template<typename V, typename W,
-             typename = decltype(T(declval<const V&>())),
-             typename = decltype(U(declval<const W&>()))>
-    pair(const pair<V,W> &);
-  };
-
-  template<typename K> struct Line;
-
-  template<typename K> struct Vector {
-    Vector(const Line<K> &l);
-  };
-
-  template<typename K> struct Point {
-    Vector<K> v;
-  };
-
-  template<typename K> struct Line {
-    pair<Point<K>, Vector<K>> x;
-  };
-
-  // Trigger declaration of Line copy ctor, which causes substitution into
-  // pair's templated constructor, which triggers instantiation of the
-  // definition of Point's copy constructor, which performs overload resolution
-  // on Vector's constructors, which requires declaring all of Line's
-  // constructors. That should not find a copy constructor (because we've not
-  // declared it yet), but by the time we get all the way back here, we should
-  // find the copy constructor.
-  Line<void> L1;
-  Line<void> L2(L1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-virtual-member-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-virtual-member-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/implicit-virtual-member-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A {
-  virtual ~A();
-};
-
-struct B : A { // expected-error {{no suitable member 'operator delete' in 'B'}}
-  virtual void f();
-
-  void operator delete (void *, int); // expected-note {{'operator delete' declared here}}
-};
-
-void B::f() { // expected-note {{implicit default destructor for 'B' first required here}}
-}
-
-struct C : A { // expected-error {{no suitable member 'operator delete' in 'C'}}
-  C();
-  void operator delete(void *, int); // expected-note {{'operator delete' declared here}}
-};
-
-C::C() { }  // expected-note {{implicit default destructor for 'C' first required here}}
-
-struct D : A { // expected-error {{no suitable member 'operator delete' in 'D'}}
-  void operator delete(void *, int); // expected-note {{'operator delete' declared here}}
-}; 
-
-void f() {
-  new D; // expected-note {{implicit default destructor for 'D' first required here}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/incomplete-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/incomplete-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/incomplete-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A; // expected-note 14 {{forward declaration of 'A'}}
-
-A f(); // expected-note {{'f' declared here}}
-
-struct B {
-  A f(); // expected-note {{'f' declared here}}
-  A operator()(); // expected-note 2 {{'operator()' declared here}}
-  operator A(); // expected-note {{'operator A' declared here}}
-  A operator!(); // expected-note 2 {{'operator!' declared here}}
-  A operator++(int); // expected-note {{'operator++' declared here}}
-  A operator[](int); // expected-note {{'operator[]' declared here}}
-  A operator+(int); // expected-note {{'operator+' declared here}}
-  A operator->(); // expected-note {{'operator->' declared here}}
-};
-
-void g() {
-  f(); // expected-error {{calling 'f' with incomplete return type 'A'}}
-
-  typedef A (*Func)();
-  Func fp;
-  fp(); // expected-error {{calling function with incomplete return type 'A'}}
-  ((Func)0)();  // expected-error {{calling function with incomplete return type 'A'}}  
-  
-  B b;
-  b.f(); // expected-error {{calling 'f' with incomplete return type 'A'}}
-  
-  b.operator()(); // expected-error {{calling 'operator()' with incomplete return type 'A'}}
-  b.operator A(); // expected-error {{calling 'operator A' with incomplete return type 'A'}}
-  b.operator!(); // expected-error {{calling 'operator!' with incomplete return type 'A'}}
-  
-  !b; // expected-error {{calling 'operator!' with incomplete return type 'A'}}
-  b(); // expected-error {{calling 'operator()' with incomplete return type 'A'}}
-  b++; // expected-error {{calling 'operator++' with incomplete return type 'A'}}
-  b[0]; // expected-error {{calling 'operator[]' with incomplete return type 'A'}}
-  b + 1; // expected-error {{calling 'operator+' with incomplete return type 'A'}}
-  b->f(); // expected-error {{calling 'operator->' with incomplete return type 'A'}}
-  
-  A (B::*mfp)() = 0;
-  (b.*mfp)(); // expected-error {{calling function with incomplete return type 'A'}}
-  
-}
-
-
-struct C; // expected-note{{forward declaration}}
-
-void test_incomplete_object_call(C& c) {
-  c(); // expected-error{{incomplete type in call to object of type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/increment-decrement.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/increment-decrement.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/increment-decrement.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-volatile int i;
-
-const int &inc = i++;
-const int &dec = i--;
-
-const int &incfail = ++i; // expected-error {{drops qualifiers}}
-const int &decfail = --i; // expected-error {{drops qualifiers}}
-
-// PR7794
-void f0(int e) {
-  ++(int&)e;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/indirect-goto.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/indirect-goto.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/indirect-goto.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace test1 {
-  // Make sure this doesn't crash.
-  struct A { ~A(); };
-  void a() { goto *(A(), &&L); L: return; }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/inherit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/inherit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/inherit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class A { };
-
-class B1 : A { };
-
-class B2 : virtual A { };
-
-class B3 : virtual virtual A { }; // expected-error{{duplicate 'virtual' in base specifier}}
-
-class C : public B1, private B2 { };
-
-
-class D;                // expected-note {{forward declaration of 'D'}}
-
-class E : public D { }; // expected-error{{base class has incomplete type}}
-
-typedef int I;
-
-class F : public I { }; // expected-error{{base specifier must name a class}}
-
-union U1 : public A { }; // expected-error{{unions cannot have base classes}}
-
-union U2 {};
-
-class G : public U2 { }; // expected-error{{unions cannot be base classes}}
-
-typedef G G_copy;
-typedef G G_copy_2;
-typedef G_copy G_copy_3;
-
-class H : G_copy, A, G_copy_2, // expected-error{{base class 'G_copy' (aka 'G') specified more than once as a direct base class}}
-          public G_copy_3 { }; // expected-error{{base class 'G_copy' (aka 'G') specified more than once as a direct base class}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/init-priority-attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/init-priority-attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/init-priority-attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class Two {
-private:
-    int i, j, k;
-public:
-    static int count;
-    Two( int ii, int jj ) { i = ii; j = jj; k = count++; };
-    Two( void )           { i =  0; j =  0; k = count++; };
-    int eye( void ) { return i; };
-    int jay( void ) { return j; };
-    int kay( void ) { return k; };
-};
-
-extern Two foo;
-extern Two goo;
-extern Two coo[];
-extern Two koo[];
-
-Two foo __attribute__((init_priority(101))) ( 5, 6 );
-
-Two goo __attribute__((init_priority(2,3))) ( 5, 6 ); // expected-error {{attribute takes one argument}}
-
-Two coo[2]  __attribute__((init_priority(3)));	// expected-error {{init_priority attribute requires integer constant between 101 and 65535 inclusive}}
-
-Two koo[4]  __attribute__((init_priority(1.13))); // expected-error {{'init_priority' attribute requires integer constant}}
-
-
-Two func()  __attribute__((init_priority(1001))); // expected-error {{can only use 'init_priority' attribute on file-scope definitions of objects of class type}}
-
-int i  __attribute__((init_priority(1001))); // expected-error {{can only use 'init_priority' attribute on file-scope definitions of objects of class type}}
-
-int main() {
-	Two foo __attribute__((init_priority(1001)));	// expected-error {{can only use 'init_priority' attribute on file-scope definitions of objects of class type}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/inline.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/inline.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/inline.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Check that we don't allow illegal uses of inline
-// (checking C++-only constructs here)
-struct c {inline int a;}; // expected-error{{'inline' can only appear on functions}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/instantiate-blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/instantiate-blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/instantiate-blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -verify %s
-// rdar: // 6182276
-
-template <typename T, typename T1> void foo(T t, T1 r)
-{
-    T block_arg;
-    __block T1 byref_block_arg;
-
-    T1 (^block)(T)  =  ^ T1 (T arg) { 
-         byref_block_arg = arg;
-         block_arg = arg; 	// expected-error {{variable is not assignable (missing __block type specifier)}}
-         return block_arg+arg; };
-}
-
-// rdar://10466373
-template <typename T, typename T1> void noret(T t, T1 r)
-{
-    (void) ^{
-    if (1)
-      return t;
-    else if (2)
-      return r;  // expected-error {{return type 'double' must match previous return type 'float' when block literal has unspecified explicit return type}}
-  };
-}
-
-int main(void)
-{
-    foo(100, 'a');	// expected-note {{in instantiation of function template specialization 'foo<int, char>' requested here}}
-
-   noret((float)0.0, double(0.0)); // expected-note {{in instantiation of function template specialization 'noret<float, double>' requested here}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-instantiated-field-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-instantiated-field-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-instantiated-field-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <typename T>
-class SmallVectorImpl  {
-public:
-  explicit SmallVectorImpl(unsigned N) {
-  }
-
-  ~SmallVectorImpl() { }
-
-};
-
-template <typename T, unsigned N>
-class SmallVector : public SmallVectorImpl<T> {
-  typedef typename SmallVectorImpl<T>::U U; // expected-error {{no type named 'U' in 'SmallVectorImpl<CallSite>'}}
-  enum {
-
-    MinUs = (static_cast<unsigned int>(sizeof(T))*N +	// expected-error {{invalid application of 'sizeof' to an incomplete type 'CallSite'}}
-             static_cast<unsigned int>(sizeof(U)) - 1) /
-            static_cast<unsigned int>(sizeof(U)),
-    NumInlineEltsElts = MinUs 
-  };
-  U InlineElts[NumInlineEltsElts];
-public:
-  SmallVector() : SmallVectorImpl<T>(NumInlineEltsElts) {
-  }
-
-};
-
-class CallSite;	// expected-note {{forward declaration of 'CallSite'}}
-class InlineFunctionInfo {
-public:
-  explicit InlineFunctionInfo() {}
-  SmallVector<CallSite, 2> DevirtualizedCalls;	// expected-note {{in instantiation of template class 'SmallVector<CallSite, 2>' requested}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-member-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-member-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-member-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,70 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class X {};
-
-void test() {
-  X x;
-
-  x.int; // expected-error{{expected unqualified-id}}
-  x.~int(); // expected-error{{expected a class name}}
-  x.operator; // expected-error{{expected a type}}
-  x.operator typedef; // expected-error{{expected a type}} expected-error{{type name does not allow storage class}}
-}
-
-void test2() {
-  X *x;
-
-  x->int; // expected-error{{expected unqualified-id}}
-  x->~int(); // expected-error{{expected a class name}}
-  x->operator; // expected-error{{expected a type}}
-  x->operator typedef; // expected-error{{expected a type}} expected-error{{type name does not allow storage class}}
-}
-
-// PR6327
-namespace test3 {
-  template <class A, class B> struct pair {};
-
-  void test0() {
-    pair<int, int> z = minmax({}); // expected-error {{expected expression}}
-  }
-
-  struct string {
-    class iterator {};
-  };
-
-  void test1() {
-    string s;
-    string::iterator i = s.foo(); // expected-error {{no member named 'foo'}}
-  }
-}
-
-
-// Make sure we don't crash.
-namespace rdar11293995 {
-
-struct Length {
-  explicit Length(PassRefPtr<CalculationValue>); // expected-error {{unknown type name}} \
-                    expected-error {{expected ')'}} \
-                    expected-note {{to match this '('}}
-};
-
-struct LengthSize {
-    Length m_width;
-    Length m_height;
-};
-
-enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
-
-struct FillSize {
-    EFillSizeType type;
-    LengthSize size;
-};
-
-class FillLayer {
-public:
-    void setSize(FillSize f) { m_sizeType = f.type;}
-private:
-    unsigned m_sizeType : 2;
-};
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-template-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-template-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/invalid-template-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// PR4809
-// This test is primarily checking that this doesn't crash, not the particular
-// diagnostics.
-
-const template basic_istream<char>; // expected-error {{expected unqualified-id}}
-
-namespace S {}
-template <class X> class Y {
-  void x() { S::template y<char>(1); } // expected-error {{does not refer to a template}} \
-                                       // expected-error {{unqualified-id}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/issue547.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/issue547.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/issue547.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T>
-struct classify_function {
-  static const unsigned value = 0;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args...)> {
-  static const unsigned value = 1;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args...) const> {
-  static const unsigned value = 2;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args...) volatile> {
-  static const unsigned value = 3;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args...) const volatile> {
-  static const unsigned value = 4;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args......)> {
-  static const unsigned value = 5;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args......) const> {
-  static const unsigned value = 6;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args......) volatile> {
-  static const unsigned value = 7;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args......) const volatile> {
-  static const unsigned value = 8;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args......) &&> {
-  static const unsigned value = 9;
-};
-
-template<typename R, typename ...Args>
-struct classify_function<R(Args......) const &> {
-  static const unsigned value = 10;
-};
-
-typedef void f0(int) const;
-typedef void f1(int, float...) const volatile;
-typedef void f2(int, double, ...) &&;
-typedef void f3(int, double, ...) const &;
-
-int check0[classify_function<f0>::value == 2? 1 : -1];
-int check1[classify_function<f1>::value == 8? 1 : -1];
-int check2[classify_function<f2>::value == 9? 1 : -1];
-int check3[classify_function<f3>::value == 10? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/lambda-expressions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/lambda-expressions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/lambda-expressions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,242 +0,0 @@
-// RUN: %clang_cc1 -std=c++0x -Wno-unused-value -fsyntax-only -verify -fblocks %s
-
-namespace std { class type_info; };
-
-namespace ExplicitCapture {
-  class C {
-    int Member;
-
-    static void Overload(int);
-    void Overload();
-    virtual C& Overload(float);
-
-    void ImplicitThisCapture() {
-      [](){(void)Member;}; // expected-error {{'this' cannot be implicitly captured in this context}}
-      [&](){(void)Member;};
-
-      [this](){(void)Member;};
-      [this]{[this]{};};
-      []{[this]{};};// expected-error {{'this' cannot be implicitly captured in this context}}
-      []{Overload(3);};
-      []{Overload();}; // expected-error {{'this' cannot be implicitly captured in this context}}
-      []{(void)typeid(Overload());};
-      []{(void)typeid(Overload(.5f));};// expected-error {{'this' cannot be implicitly captured in this context}}
-    }
-  };
-
-  void f() {
-    [this] () {}; // expected-error {{'this' cannot be captured in this context}}
-  }
-}
-
-namespace ReturnDeduction {
-  void test() {
-    [](){ return 1; };
-    [](){ return 1; };
-    [](){ return ({return 1; 1;}); };
-    [](){ return ({return 'c'; 1;}); }; // expected-error {{must match previous return type}}
-    []()->int{ return 'c'; return 1; };
-    [](){ return 'c'; return 1; };  // expected-error {{must match previous return type}}
-    []() { return; return (void)0; };
-    [](){ return 1; return 1; };
-  }
-}
-
-namespace ImplicitCapture {
-  void test() {
-    int a = 0; // expected-note 5 {{declared}}
-    []() { return a; }; // expected-error {{variable 'a' cannot be implicitly captured in a lambda with no capture-default specified}} expected-note {{begins here}}
-    [&]() { return a; };
-    [=]() { return a; };
-    [=]() { int* b = &a; }; // expected-error {{cannot initialize a variable of type 'int *' with an rvalue of type 'const int *'}}
-    [=]() { return [&]() { return a; }; };
-    []() { return [&]() { return a; }; }; // expected-error {{variable 'a' cannot be implicitly captured in a lambda with no capture-default specified}} expected-note {{lambda expression begins here}}
-    []() { return ^{ return a; }; };// expected-error {{variable 'a' cannot be implicitly captured in a lambda with no capture-default specified}} expected-note {{lambda expression begins here}}
-    []() { return [&a] { return a; }; }; // expected-error 2 {{variable 'a' cannot be implicitly captured in a lambda with no capture-default specified}} expected-note 2 {{lambda expression begins here}}
-    [=]() { return [&a] { return a; }; }; //
-
-    const int b = 2;
-    []() { return b; };
-
-    union { // expected-note {{declared}}
-      int c;
-      float d;
-    };
-    d = 3;
-    [=]() { return c; }; // expected-error {{unnamed variable cannot be implicitly captured in a lambda expression}}
-
-    __block int e; // expected-note 3 {{declared}}
-    [&]() { return e; }; // expected-error {{__block variable 'e' cannot be captured in a lambda expression}}
-    [&e]() { return e; }; // expected-error 2 {{__block variable 'e' cannot be captured in a lambda expression}}
-
-    int f[10]; // expected-note {{declared}}
-    [&]() { return f[2]; };
-    (void) ^{ return []() { return f[2]; }; }; // expected-error {{variable 'f' cannot be implicitly captured in a lambda with no capture-default specified}} \
-    // expected-note{{lambda expression begins here}}
-
-    struct G { G(); G(G&); int a; }; // expected-note 6 {{not viable}}
-    G g;
-    [=]() { const G* gg = &g; return gg->a; };
-    [=]() { return [=]{ const G* gg = &g; return gg->a; }(); }; // expected-error {{no matching constructor for initialization of 'G'}}
-    (void)^{ return [=]{ const G* gg = &g; return gg->a; }(); }; // expected-error 2 {{no matching constructor for initialization of 'const G'}}
-
-    const int h = a; // expected-note {{declared}}
-    []() { return h; }; // expected-error {{variable 'h' cannot be implicitly captured in a lambda with no capture-default specified}} expected-note {{lambda expression begins here}}
-
-    // References can appear in constant expressions if they are initialized by
-    // reference constant expressions.
-    int i;
-    int &ref_i = i; // expected-note {{declared}}
-    [] { return ref_i; }; // expected-error {{variable 'ref_i' cannot be implicitly captured in a lambda with no capture-default specified}} expected-note {{lambda expression begins here}}
-
-    static int j;
-    int &ref_j = j;
-    [] { return ref_j; }; // ok
-  }
-}
-
-namespace PR12031 {
-  struct X {
-    template<typename T>
-    X(const T&);
-    ~X();
-  };
-
-  void f(int i, X x);
-  void g() {
-    const int v = 10;
-    f(v, [](){});
-  }
-}
-
-namespace NullPtr {
-  int &f(int *p);
-  char &f(...);
-  void g() {
-    int n = 0;
-    [=] {
-      char &k = f(n); // not a null pointer constant
-    } ();
-
-    const int m = 0;
-    [=] {
-      int &k = f(m); // expected-warning{{expression which evaluates to zero treated as a null pointer constant of type 'int *'}}
-    } ();
-
-    [=] () -> bool {
-      int &k = f(m); // expected-warning{{expression which evaluates to zero treated as a null pointer constant of type 'int *'}}
-      return &m == 0;
-    } ();
-
-    [m] {
-      int &k = f(m); // expected-warning{{expression which evaluates to zero treated as a null pointer constant of type 'int *'}}
-    } ();
-  }
-}
-
-void PR12248()
-{
-  unsigned int result = 0;
-  auto l = [&]() { ++result; };
-}
-
-namespace ModifyingCapture {
-  void test() {
-    int n = 0;
-    [=] {
-      n = 1; // expected-error {{cannot assign to a variable captured by copy in a non-mutable lambda}}
-    };
-  }
-}
-
-namespace VariadicPackExpansion {
-  template<typename T, typename U> using Fst = T;
-  template<typename...Ts> bool g(Fst<bool, Ts> ...bools);
-  template<typename...Ts> bool f(Ts &&...ts) {
-    return g<Ts...>([&ts] {
-      if (!ts)
-        return false;
-      --ts;
-      return true;
-    } () ...);
-  }
-  void h() {
-    int a = 5, b = 2, c = 3;
-    while (f(a, b, c)) {
-    }
-  }
-
-  struct sink {
-    template<typename...Ts> sink(Ts &&...) {}
-  };
-
-  template<typename...Ts> void local_class() {
-    sink {
-      [] (Ts t) {
-        struct S : Ts {
-          void f(Ts t) {
-            Ts &that = *this;
-            that = t;
-          }
-          Ts g() { return *this; };
-        };
-        S s;
-        s.f(t);
-        return s;
-      } (Ts()).g() ...
-    };
-  };
-  struct X {}; struct Y {};
-  template void local_class<X, Y>();
-
-  template<typename...Ts> void nested(Ts ...ts) {
-    f(
-      // Each expansion of this lambda implicitly captures all of 'ts', because
-      // the inner lambda also expands 'ts'.
-      [&] {
-        return ts + [&] { return f(ts...); } ();
-      } () ...
-    );
-  }
-  template void nested(int, int, int);
-
-  template<typename...Ts> void nested2(Ts ...ts) { // expected-note 2{{here}}
-    // Capture all 'ts', use only one.
-    f([&ts...] { return ts; } ()...);
-    // Capture each 'ts', use it.
-    f([&ts] { return ts; } ()...);
-    // Capture all 'ts', use all of them.
-    f([&ts...] { return (int)f(ts...); } ());
-    // Capture each 'ts', use all of them. Ill-formed. In more detail:
-    //
-    // We instantiate two lambdas here; the first captures ts$0, the second
-    // captures ts$1. Both of them reference both ts parameters, so both are
-    // ill-formed because ts can't be implicitly captured.
-    //
-    // FIXME: This diagnostic does not explain what's happening. We should
-    // specify which 'ts' we're referring to in its diagnostic name. We should
-    // also say which slice of the pack expansion is being performed in the
-    // instantiation backtrace.
-    f([&ts] { return (int)f(ts...); } ()...); // \
-    // expected-error 2{{'ts' cannot be implicitly captured}} \
-    // expected-note 2{{lambda expression begins here}}
-  }
-  template void nested2(int); // ok
-  template void nested2(int, int); // expected-note {{in instantiation of}}
-}
-
-namespace PR13860 {
-  void foo() {
-    auto x = PR13860UndeclaredIdentifier(); // expected-error {{use of undeclared identifier 'PR13860UndeclaredIdentifier'}}
-    auto y = [x]() { };
-    static_assert(sizeof(y), "");
-  }
-}
-
-namespace PR13854 {
-  auto l = [](void){};
-}
-
-namespace PR14518 {
-  auto f = [](void) { return __func__; }; // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_atomic_ns_hack.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_atomic_ns_hack.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_atomic_ns_hack.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-
-// libstdc++ 4.6.x contains a bug where it defines std::__atomic[0,1,2] as a
-// non-inline namespace, then selects one of those namespaces and reopens it
-// as inline, as a strange way of providing something like a using-directive.
-// Clang has an egregious hack to work around the problem, by allowing a
-// namespace to be converted from non-inline to inline in this one specific
-// case.
-
-#ifdef BE_THE_HEADER
-
-#pragma clang system_header
-
-namespace std {
-  namespace __atomic0 {
-    typedef int foobar;
-  }
-  namespace __atomic1 {
-    typedef void foobar;
-  }
-
-  inline namespace __atomic0 {}
-}
-
-#else
-
-#define BE_THE_HEADER
-#include "libstdcxx_atomic_ns_hack.cpp"
-
-std::foobar fb;
-
-using T = void; // expected-note {{here}}
-using T = std::foobar; // expected-error {{different types ('std::foobar' (aka 'int') vs 'void')}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_common_type_hack.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_common_type_hack.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_common_type_hack.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -std=c++11 -verify
-
-// This is a test for an egregious hack in Clang that works around
-// an issue with GCC's <type_traits> implementation. std::common_type
-// relies on pre-standard rules for decltype(), in which it doesn't
-// produce reference types so frequently.
-
-#ifdef BE_THE_HEADER
-
-#pragma GCC system_header
-namespace std {
-  template<typename T> T &&declval();
-
-  template<typename...Ts> struct common_type {};
-  template<typename A, typename B> struct common_type<A, B> {
-    // Under the rules in the standard, this always produces a
-    // reference type.
-    typedef decltype(true ? declval<A>() : declval<B>()) type;
-  };
-}
-
-#else
-
-#define BE_THE_HEADER
-#include "libstdcxx_common_type_hack.cpp"
-
-using T = int;
-using T = std::common_type<int, int>::type;
-
-using U = int; // expected-note {{here}}
-using U = decltype(true ? std::declval<int>() : std::declval<int>()); // expected-error {{different types}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_is_pod_hack.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-// This is a test for an egregious hack in Clang that works around
-// issues with GCC's evolution. libstdc++ 4.2.x uses __is_pod as an
-// identifier (to declare a struct template like the one below), while
-// GCC 4.3 and newer make __is_pod a keyword. Clang treats __is_pod as
-// a keyword *unless* it is introduced following the struct keyword.
-
-template<typename T>
-struct __is_pod {
-  __is_pod() {}
-};
-
-__is_pod<int> ipi;
-
-// Ditto for __is_same.
-template<typename T>
-struct __is_same {
-};
-
-__is_same<int> isi;
-
-// Another, similar egregious hack for __is_signed, which is a type
-// trait in Embarcadero's compiler but is used as an identifier in
-// libstdc++.
-struct test_is_signed {
-  static const bool __is_signed = true;
-};
-
-bool check_signed = test_is_signed::__is_signed;
-
-template<bool B> struct must_be_true {};
-template<> struct must_be_true<false>;
-
-void foo() {
-  bool b = __is_pod(int);
-  must_be_true<__is_pod(int)> mbt;
-}
-#if !__has_feature(is_pod)
-#  error __is_pod should still be available.
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_map_base_hack.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_map_base_hack.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/libstdcxx_map_base_hack.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-// libstdc++ 4.2.x contains a bug where a friend struct template
-// declaration for std::tr1::__detail::_Map base has different
-// template arguments than the real declaration. Clang has an
-// egregious hack to work around this problem, since we can't modify
-// all of the world's libstdc++'s.
-
-namespace std { namespace tr1 { namespace __detail {
-  template<typename _Key, typename _Value, typename _Ex, bool __unique,
-	   typename _Hashtable>
-    struct _Map_base { };
-
-} } } 
-
-namespace std { namespace tr1 {
-  template<typename T>
-  struct X1 {
-    template<typename _Key2, typename _Pair, typename _Hashtable>
-    friend struct __detail::_Map_base;
-  };
-
-} }
-
-std::tr1::X1<int> x1i;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-extern "C" {
-  extern "C" void f(int);
-}
-
-extern "C++" {
-  extern "C++" int& g(int);
-  float& g();
-}
-double& g(double);
-
-void test(int x, double d) {
-  f(x);
-  float &f1 = g();
-  int& i1 = g(x);
-  double& d1 = g(d);
-}
-
-extern "C" int foo;
-extern "C" int foo;
-
-extern "C" const int bar;
-extern "C" int const bar;
-
-// <rdar://problem/6895431>
-extern "C" struct bar d;
-extern struct bar e;
-
-extern "C++" {
-  namespace N0 {
-    struct X0 {
-      int foo(int x) { return x; }
-    };
-  }
-}
-
-// PR5430
-namespace pr5430 {
-  extern "C" void func(void);
-}
-using namespace pr5430;
-extern "C" void pr5430::func(void) { }
-
-// PR5404
-int f2(char *)
-{
-        return 0;
-}
-
-extern "C"
-{
-    int f2(int)
-    {
-        return f2((char *)0);
-    }
-}
-
-// PR6991
-extern "C" typedef int (*PutcFunc_t)(int);
-
-
-// PR7859
-extern "C" void pr7859_a(int) {} // expected-note {{previous definition}}
-extern "C" void pr7859_a(int) {} // expected-error {{redefinition}}
-
-extern "C" void pr7859_b() {} // expected-note {{previous definition}}
-extern "C" void pr7859_b(int) {} // expected-error {{conflicting}}
-
-extern "C" void pr7859_c(short) {} // expected-note {{previous definition}}
-extern "C" void pr7859_c(int) {} // expected-error {{conflicting}}
-
-// <rdar://problem/8318976>
-extern "C" {
-  struct s0 {
-  private:
-    s0();
-    s0(const s0 &);
-  };
-}
-
-//PR7754
-extern "C++" template <class T> int pr7754(T param);
-
-namespace N {
-  int value;
-}
-
-extern "C++" using N::value;
-
-// PR7076
-extern "C" const char *Version_string = "2.9";
-
-extern "C" {
-  extern const char *Version_string2 = "2.9";
-}
-
-namespace PR9162 {
-  extern "C" {
-    typedef struct _ArtsSink ArtsSink;
-    struct _ArtsSink {
-      int sink;
-    };
-  }
-  int arts_sink_get_type()
-  {
-    return sizeof(ArtsSink);
-  }
-}
-
-namespace pr14958 {
-  namespace js { extern int ObjectClass; }
-  extern "C" {
-    namespace js {}
-  }
-  int js::ObjectClass;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,105 +0,0 @@
-// This is an IR generation test because the calculation of visibility
-// during IR gen will cause linkage to be implicitly recomputed and
-// compared against the earlier cached value.  If we had a way of
-// testing linkage directly in Sema, that would be better.
-
-// RUN: %clang_cc1 -Werror -triple x86_64-apple-darwin10 -emit-llvm %s -o - | FileCheck %s
-
-// PR8926
-namespace test0 {
-  typedef struct {
-    void *foo() { return 0; }
-  } A;
-
-  // CHECK: define linkonce_odr i8* @_ZN5test01A3fooEv(
-
-  void test(A *a) {
-    a->foo();
-  }
-}
-
-namespace test1 {
-  typedef struct {
-    template <unsigned n> void *foo() { return 0; }
-
-    void foo() {
-      foo<0>();
-    }
-  } A;
-
-  // CHECK: define linkonce_odr void @_ZN5test11A3fooEv(
-  // another at the end
-
-  void test(A *a) {
-    a->foo();
-  }
-}
-
-namespace test2 {
-  typedef struct {
-    template <unsigned n> struct B {
-      void *foo() { return 0; }
-    };
-
-    void foo(B<0> *b) {
-      b->foo();
-    }
-  } A;
-
-  // CHECK: define linkonce_odr void @_ZN5test21A3fooEPNS0_1BILj0EEE(
-
-  void test(A *a) {
-    a->foo(0);
-  }
-}
-
-namespace test3 {
-  namespace { struct A {}; }
-
-  // CHECK: define internal void @_ZN5test34testENS_12_GLOBAL__N_11AE(
-  void test(A a) {}
-  void force() { test(A()); }
-
-  // CHECK: define void @test3(
-  extern "C" void test3(A a) {}
-}
-
-namespace {
-  // CHECK: define void @test4(
-  extern "C" void test4(void) {}
-}
-
-// PR9316: Ensure that even non-namespace-scope function declarations in
-// a C declaration context respect that over the anonymous namespace.
-extern "C" {
-  namespace {
-    struct X {
-      int f() {
-        extern int g();
-        extern int a;
-
-        // Test both for mangling in the code generation and warnings from use
-        // of internal, undefined names via -Werror.
-        // CHECK: call i32 @g(
-        // CHECK: load i32* @a,
-        return g() + a;
-      }
-    };
-  }
-  // Force the above function to be emitted by codegen.
-  int test(X& x) {
-    return x.f();
-  }
-}
-
-// CHECK: define linkonce_odr i8* @_ZN5test21A1BILj0EE3fooEv(
-// CHECK: define linkonce_odr i8* @_ZN5test11A3fooILj0EEEPvv(
-
-namespace test5 {
-  struct foo {
-  };
-  extern "C" {
-    const foo bar[]  = {
-    };
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/linkage2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,166 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -verify -fmodules %s
-
-namespace test1 {
-  int x; // expected-note {{previous definition is here}}
-  static int y;
-  void f() {} // expected-note {{previous definition is here}}
-
-  extern "C" {
-    extern int x; // expected-error {{declaration of 'x' has a different language linkage}}
-    extern int y; // OK, has internal linkage, so no language linkage.
-    void f(); // expected-error {{declaration of 'f' has a different language linkage}}
-  }
-}
-
-// This is OK. Both test2_f don't have language linkage since they have
-// internal linkage.
-extern "C" {
-  static void test2_f() {
-  }
-  static void test2_f(int x) {
-  }
-}
-
-namespace test3 {
-  extern "C" {
-    namespace {
-      extern int x2;
-      void f2();
-    }
-  }
-  namespace {
-    int x2;
-    void f2() {}
-  }
-}
-
-namespace test4 {
-  void dummy() {
-    void Bar();
-    class A {
-      friend void Bar();
-    };
-  }
-}
-
-namespace test5 {
-  static void g();
-  void f()
-  {
-    void g();
-  }
-}
-
-// pr14898
-namespace test6 {
-  template <class _Rp>
-  class __attribute__ ((__visibility__("default"))) shared_future;
-  template <class _Rp>
-  class future {
-    template <class> friend class shared_future;
-    shared_future<_Rp> share();
-  };
-  template <class _Rp> future<_Rp>
-  get_future();
-  template <class _Rp>
-  struct shared_future<_Rp&> {
-    shared_future(future<_Rp&>&& __f); // expected-warning {{rvalue references are a C++11 extension}}
-  };
-  void f() {
-    typedef int T;
-    get_future<int>();
-    typedef int& U;
-    shared_future<int&> f1 = get_future<int&>();
-  }
-}
-
-// This is OK. The variables have internal linkage and therefore no language
-// linkage.
-extern "C" {
-  static int test7_x;
-}
-extern "C++" {
-  extern int test7_x;
-}
-extern "C++" {
-  static int test7_y;
-}
-extern "C" {
-  extern int test7_y;
-}
-extern "C" { typedef int test7_F(); static test7_F test7_f; }
-extern "C++" { extern test7_F test7_f; }
-
-// FIXME: This should be invalid. The function has no language linkage, but
-// the function type has, so this is redeclaring the function with a different
-// type.
-extern "C++" {
-  static void test8_f();
-}
-extern "C" {
-  extern void test8_f();
-}
-extern "C" {
-  static void test8_g();
-}
-extern "C++" {
-  extern void test8_g();
-}
-
-extern "C" {
-  void __attribute__((overloadable)) test9_f(int c); // expected-note {{previous declaration is here}}
-}
-extern "C++" {
-  void __attribute__((overloadable)) test9_f(int c); // expected-error {{declaration of 'test9_f' has a different language linkage}}
-}
-
-extern "C" {
-  void __attribute__((overloadable)) test10_f(int);
-  void __attribute__((overloadable)) test10_f(double);
-}
-
-extern "C" {
-  void test11_f() {
-    void  __attribute__((overloadable)) test11_g(int);
-    void  __attribute__((overloadable)) test11_g(double);
-  }
-}
-
-namespace test12 {
-  const int n = 0;
-  extern const int n;
-  void f() {
-    extern const int n;
-  }
-}
-
-namespace test13 {
-  static void a(void);
-  extern void a();
-  static void a(void) {}
-}
-
-namespace test14 {
-  namespace {
-    void a(void); // expected-note {{previous declaration is here}}
-    static void a(void) {} // expected-error {{static declaration of 'a' follows non-static declaration}}
-  }
-}
-
-namespace test15 {
-  const int a = 5; // expected-note {{previous definition is here}}
-  static const int a; // expected-error {{redefinition of 'a'}}
-}
-
-namespace test16 {
-  extern "C" {
-    class Foo {
-      int x;
-      friend int bar(Foo *y);
-    };
-    int bar(Foo *y) {
-      return y->x;
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/literal-operators.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/literal-operators.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/literal-operators.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-#include <stddef.h>
-
-struct tag {
-  void operator "" _tag_bad (const char *); // expected-error {{literal operator 'operator "" _tag_bad' must be in a namespace or global scope}}
-  friend void operator "" _tag_good (const char *);
-};
-
-namespace ns { void operator "" _ns_good (const char *); }
-
-// Check extern "C++" declarations
-extern "C++" void operator "" _extern_good (const char *);
-extern "C++" { void operator "" _extern_good (const char *); }
-
-void fn () { void operator "" _fn_good (const char *); }
-
-// One-param declarations (const char * was already checked)
-void operator "" _good (char);
-void operator "" _good (wchar_t);
-void operator "" _good (char16_t);
-void operator "" _good (char32_t);
-void operator "" _good (unsigned long long);
-void operator "" _good (long double);
-
-// Two-param declarations
-void operator "" _good (const char *, size_t);
-void operator "" _good (const wchar_t *, size_t);
-void operator "" _good (const char16_t *, size_t);
-void operator "" _good (const char32_t *, size_t);
-
-// Check typedef and array equivalences
-void operator "" _good (const char[]);
-typedef const char c;
-void operator "" _good (c*);
-
-// Check extra cv-qualifiers
-void operator "" _cv_good (volatile const char *, const size_t); // expected-error {{parameter declaration for literal operator 'operator "" _cv_good' is not valid}}
-
-// Template declaration
-template <char...> void operator "" _good ();
-
-// FIXME: Test some invalid decls that might crop up.
-template <typename...> void operator "" _invalid(); // expected-error {{parameter declaration for literal operator 'operator "" _invalid' is not valid}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/literal-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/literal-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/literal-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-static_assert(__is_literal(int), "fail");
-static_assert(__is_literal_type(int), "fail"); // alternate spelling for GCC
-static_assert(__is_literal(void*), "fail");
-enum E { E1 };
-static_assert(__is_literal(E), "fail");
-static_assert(__is_literal(decltype(E1)), "fail");
-typedef int IAR[10];
-static_assert(__is_literal(IAR), "fail");
-typedef int Vector __attribute__((vector_size(16)));
-typedef int VectorExt __attribute__((ext_vector_type(4)));
-static_assert(__is_literal(Vector), "fail");
-static_assert(__is_literal(VectorExt), "fail");
-
-// C++0x [basic.types]p10:
-//   A type is a literal type if it is:
-//    [...]
-//    -- a class type that has all of the following properties:
-//        -- it has a trivial destructor
-//        -- every constructor call and full-expression in the
-//           brace-or-equal-initializers for non-static data members (if an) is
-//           a constant expression,
-//        -- it is an aggregate type or has at least one constexpr constructor
-//           or constructor template that is not a copy or move constructor, and
-//           [DR1452 adds class types with trivial default constructors to
-//            this list]
-//        -- it has all non-static data members and base classes of literal
-//           types
-struct Empty {};
-struct LiteralType {
-  int x;
-  E e;
-  IAR arr;
-  Empty empty;
-  int method();
-};
-struct HasDtor { ~HasDtor(); };
-
-class NonAggregate { int x; };
-struct NonLiteral { NonLiteral(); };
-struct HasNonLiteralBase : NonLiteral {};
-struct HasNonLiteralMember { HasDtor x; };
-
-static_assert(__is_literal(Empty), "fail");
-static_assert(__is_literal(LiteralType), "fail");
-static_assert(__is_literal(NonAggregate), "fail");
-static_assert(!__is_literal(NonLiteral), "fail");
-static_assert(!__is_literal(HasDtor), "fail");
-static_assert(!__is_literal(HasNonLiteralBase), "fail");
-static_assert(!__is_literal(HasNonLiteralMember), "fail");
-
-// DR1361 removes the brace-or-equal-initializer bullet so that we can allow:
-extern int f(); // expected-note {{here}}
-struct HasNonConstExprMemInit {
-  int x = f(); // expected-note {{non-constexpr function}}
-  constexpr HasNonConstExprMemInit() {} // expected-error {{never produces a constant expression}}
-  constexpr HasNonConstExprMemInit(int y) : x(y) {} // ok
-};
-static_assert(__is_literal(HasNonConstExprMemInit), "fail");
-
-class HasConstExprCtor {
-  int x;
-public:
-  constexpr HasConstExprCtor(int x) : x(x) {}
-};
-template <typename T> class HasConstExprCtorTemplate {
-  T x;
-public:
-  template <typename U> constexpr HasConstExprCtorTemplate(U y) : x(y) {}
-};
-template <typename T> class HasConstExprCtorT {
-  constexpr HasConstExprCtorT(T) {}
-};
-static_assert(__is_literal(HasConstExprCtor), "fail");
-static_assert(__is_literal(HasConstExprCtorTemplate<int>), "fail");
-static_assert(__is_literal(HasConstExprCtorT<NonLiteral>), "fail");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/local-classes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/local-classes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/local-classes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace PR6382 {
-  int foo()
-  {
-    goto error;
-    {
-      struct BitPacker {
-        BitPacker() {}
-      };
-      BitPacker packer;
-    }
-
-  error:
-    return -1;
-  }
-}
-
-namespace PR6383 {
-  void test (bool gross)
-  {
-    struct compare_and_set
-    {
-      void operator() (const bool inner, const bool gross = false)
-      {
-        // the code
-      }
-    } compare_and_set2;
-
-    compare_and_set2 (false, gross);
-  }
-}
-
-namespace Templates {
-  template<int Value>
-  void f() {
-    struct Inner {
-      static int getValue() { return Value; }
-    };
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/long-virtual-inheritance-chain.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/long-virtual-inheritance-chain.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/long-virtual-inheritance-chain.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-class test0                   { virtual void f(); };
-class test1  : virtual test0  { virtual void f(); };
-class test2  : virtual test1  { virtual void f(); };
-class test3  : virtual test2  { virtual void f(); };
-class test4  : virtual test3  { virtual void f(); };
-class test5  : virtual test4  { virtual void f(); };
-class test6  : virtual test5  { virtual void f(); };
-class test7  : virtual test6  { virtual void f(); };
-class test8  : virtual test7  { virtual void f(); };
-class test9  : virtual test8  { virtual void f(); };
-class test10 : virtual test9  { virtual void f(); };
-class test11 : virtual test10 { virtual void f(); };
-class test12 : virtual test11 { virtual void f(); };
-class test13 : virtual test12 { virtual void f(); };
-class test14 : virtual test13 { virtual void f(); };
-class test15 : virtual test14 { virtual void f(); };
-class test16 : virtual test15 { virtual void f(); };
-class test17 : virtual test16 { virtual void f(); };
-class test18 : virtual test17 { virtual void f(); };
-class test19 : virtual test18 { virtual void f(); };
-class test20 : virtual test19 { virtual void f(); };
-class test21 : virtual test20 { virtual void f(); };
-class test22 : virtual test21 { virtual void f(); };
-class test23 : virtual test22 { virtual void f(); };
-class test24 : virtual test23 { virtual void f(); };
-class test25 : virtual test24 { virtual void f(); };
-class test26 : virtual test25 { virtual void f(); };
-class test27 : virtual test26 { virtual void f(); };
-class test28 : virtual test27 { virtual void f(); };
-class test29 : virtual test28 { virtual void f(); };
-class test30 : virtual test29 { virtual void f(); };
-class test31 : virtual test30 { virtual void f(); };
-class test32 : virtual test31 { virtual void f(); };
-class test33 : virtual test32 { virtual void f(); };
-class test34 : virtual test33 { virtual void f(); };
-class test35 : virtual test34 { virtual void f(); };
-class test36 : virtual test35 { virtual void f(); };
-class test37 : virtual test36 { virtual void f(); };
-class test38 : virtual test37 { virtual void f(); };
-class test39 : virtual test38 { virtual void f(); };
-class test40 : virtual test39 { virtual void f(); };
-class test41 : virtual test40 { virtual void f(); };
-class test42 : virtual test41 { virtual void f(); };
-class test43 : virtual test42 { virtual void f(); };
-class test44 : virtual test43 { virtual void f(); };
-class test45 : virtual test44 { virtual void f(); };
-class test46 : virtual test45 { virtual void f(); };
-class test47 : virtual test46 { virtual void f(); };
-class test48 : virtual test47 { virtual void f(); };
-class test49 : virtual test48 { virtual void f(); };
-class test50 : virtual test49 { virtual void f(); };

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/lookup-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/lookup-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/lookup-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace A {
-  class String;
-};
-
-using A::String;
-class String;
-
-// rdar://8603569
-union value {
-char *String;
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-class-11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-class-11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-class-11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-struct rdar9677163 {
-  struct Y { ~Y(); };
-  struct Z { ~Z(); };
-  Y::~Y() { } // expected-error{{non-friend class member '~Y' cannot have a qualified name}}
-  ~Z(); // expected-error{{expected the class name after '~' to name the enclosing class}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr-anonymous-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr-anonymous-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr-anonymous-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-// PR5543
-
-struct A { int x; union { int* y; float* z; }; }; struct B : A {int a;};
-int* a(B* x) { return x->y; }
-
-struct x { union { int y; }; }; x y; template <int X> int f() { return X+y.y; }
-int g() { return f<2>(); }
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr-static.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr-static.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr-static.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-typedef void (*thread_continue_t)();
-
-extern "C" {
-  extern void kernel_thread_start(thread_continue_t continuation);
-  extern void pure_c(void);
-}
-
-class _IOConfigThread {
-public:
-  static void main( void );
-};
-
-
-void foo( void ) {
-  kernel_thread_start(&_IOConfigThread::main);
-  kernel_thread_start((thread_continue_t)&_IOConfigThread::main);
-  kernel_thread_start(&pure_c);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,174 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class X{
-public:
-  enum E {Enumerator}; // expected-note 2{{declared here}}
-  int f();
-  static int mem;
-  static float g();
-};
-
-void test(X* xp, X x) {
-  int i1 = x.f();
-  int i2 = xp->f();
-  x.E; // expected-error{{cannot refer to type member 'E' in 'X' with '.'}}
-  xp->E; // expected-error{{cannot refer to type member 'E' in 'X' with '->'}}
-  int i3 = x.Enumerator;
-  int i4 = xp->Enumerator;
-  x.mem = 1;
-  xp->mem = 2;
-  float f1 = x.g();
-  float f2 = xp->g();
-}
-
-struct A {
- int f0;
-};
-struct B {
- A *f0();
-};
-int f0(B *b) {
-  return b->f0->f0; // expected-error{{did you mean to call it with no arguments}}
-}
-
-int i;
-
-namespace C {
-  int i;
-}
-
-void test2(X *xp) {
-  xp->::i = 7; // expected-error{{qualified member access refers to a member in the global namespace}}
-  xp->C::i = 7; // expected-error{{qualified member access refers to a member in namespace 'C'}}
-}
-
-
-namespace test3 {
-  struct NamespaceDecl;
-
-  struct NamedDecl {
-    void *getIdentifier() const;
-  };
-
-  struct NamespaceDecl : NamedDecl {
-    bool isAnonymousNamespace() const {
-      return !getIdentifier();
-    }
-  };
-}
-
-namespace test4 {
-  class X {
-  protected:
-    template<typename T> void f(T);
-  };
-
-  class Y : public X {
-  public:
-    using X::f;
-  };
-
-  void test_f(Y y) {
-    y.f(17);
-  }
-}
-
-namespace test5 {
-  struct A {
-    template <class T> void foo();
-  };
-
-  void test0(int x) {
-    x.A::foo<int>(); // expected-error {{'int' is not a structure or union}}
-  }
-
-  void test1(A *x) {
-    x.A::foo<int>(); // expected-error {{'test5::A *' is a pointer}}
-  }
-
-  void test2(A &x) {
-    x->A::foo<int>(); // expected-error {{'test5::A' is not a pointer}}
-  }
-}
-
-namespace PR7508 {
-  struct A {
-    struct CleanupScope {};
-    void PopCleanupBlock(); // expected-note{{'PopCleanupBlock' declared here}}
-  };
-
-  void foo(A &a) {
-    a.PopCleanupScope(); // expected-error{{no member named 'PopCleanupScope' in 'PR7508::A'; did you mean 'PopCleanupBlock'?}}
-  }
-}
-
-namespace rdar8231724 {
-  namespace N {
-    template<typename T> struct X1;
-    int i;
-  }
-
-  struct X { };
-  struct Y : X { };
-
-  template<typename T> struct Z { int n; };
-
-  void f(Y *y) {
-    y->N::X1<int>; // expected-error{{'rdar8231724::N::X1' is not a member of class 'rdar8231724::Y'}}
-    y->Z<int>::n; // expected-error{{'rdar8231724::Z<int>::n' is not a member of class 'rdar8231724::Y'}}
-    y->template Z<int>::n; // expected-error{{'rdar8231724::Z<int>::n' is not a member of class 'rdar8231724::Y'}} \
-    // expected-warning{{'template' keyword outside of a template}}
-  }
-}
-
-namespace PR9025 {
-  struct S { int x; };
-  S fun(); // expected-note{{possible target for call}}
-  int fun(int i); // expected-note{{possible target for call}}
-  int g() {
-    return fun.x; // expected-error{{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
-  }
-
-  S fun2(); // expected-note{{possible target for call}}
-  S fun2(int i); // expected-note{{possible target for call}}
-  int g2() {
-    return fun2.x; // expected-error{{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
-  }
-
-  S fun3(int i=0); // expected-note{{possible target for call}}
-  int fun3(int i, int j); // expected-note{{possible target for call}}
-  int g3() {
-    return fun3.x; // expected-error{{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
-  }
-
-  template <typename T> S fun4(); // expected-note{{possible target for call}}
-  int g4() {
-    return fun4.x; // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}
-  }
-
-  S fun5(int i); // expected-note{{possible target for call}}
-  S fun5(float f); // expected-note{{possible target for call}}
-  int g5() {
-    return fun5.x; // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}
-  }
-}
-
-namespace FuncInMemberExpr {
-  struct Vec { int size(); };
-  Vec fun1();
-  int test1() { return fun1.size(); } // expected-error {{base of member reference is a function; perhaps you meant to call it with no arguments}}
-  Vec *fun2();
-  int test2() { return fun2->size(); } // expected-error {{base of member reference is a function; perhaps you meant to call it with no arguments}}
-  Vec fun3(int x = 0);
-  int test3() { return fun3.size(); } // expected-error {{base of member reference is a function; perhaps you meant to call it with no arguments}}
-}
-
-namespace DotForSemiTypo {
-void f(int i) {
-  // If the programmer typo'd '.' for ';', make sure we point at the '.' rather
-  // than the "field name" (whatever the first token on the next line happens to
-  // be).
-  int j = i. // expected-error {{member reference base type 'int' is not a structure or union}}
-  j = 0;
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -verify -std=c++11 -Wall %s
-
-struct Bitfield {
-  int n : 3 = 7; // expected-error {{bitfield member cannot have an in-class initializer}}
-};
-
-int a;
-class NoWarning {
-  int &n = a;
-public:
-  int &GetN() { return n; }
-};
-
-bool b();
-int k;
-struct Recurse {
-  int &n = b() ? Recurse().n : k; // expected-error {{defaulted default constructor of 'Recurse' cannot be used by non-static data member initializer which appears before end of class definition}}
-};
-
-struct UnknownBound {
-  int as[] = { 1, 2, 3 }; // expected-error {{array bound cannot be deduced from an in-class initializer}}
-  int bs[4] = { 4, 5, 6, 7 };
-  int cs[] = { 8, 9, 10 }; // expected-error {{array bound cannot be deduced from an in-class initializer}}
-};
-
-template<int n> struct T { static const int B; };
-template<> struct T<2> { template<int C, int D> using B = int; };
-const int C = 0, D = 0;
-struct S {
-  int as[] = { decltype(x)::B<C, D>(0) }; // expected-error {{array bound cannot be deduced from an in-class initializer}}
-  T<sizeof(as) / sizeof(int)> x;
-  // test that we handle invalid array bound deductions without crashing when the declarator name is itself invalid
-  operator int[](){}; // expected-error {{'operator int' cannot be the name of a variable or data member}} \
-                      // expected-error {{array bound cannot be deduced from an in-class initializer}}
-};
-
-struct ThrowCtor { ThrowCtor(int) noexcept(false); };
-struct NoThrowCtor { NoThrowCtor(int) noexcept(true); };
-
-struct Throw { ThrowCtor tc = 42; };
-struct NoThrow { NoThrowCtor tc = 42; };
-
-static_assert(!noexcept(Throw()), "incorrect exception specification");
-static_assert(noexcept(NoThrow()), "incorrect exception specification");
-
-struct CheckExcSpec {
-  CheckExcSpec() noexcept(true) = default;
-  int n = 0;
-};
-struct CheckExcSpecFail {
-  CheckExcSpecFail() noexcept(true) = default; // expected-error {{exception specification of explicitly defaulted default constructor does not match the calculated one}}
-  ThrowCtor tc = 123;
-};
-
-struct TypedefInit {
-  typedef int A = 0; // expected-error {{illegal initializer}}
-};
-
-// PR10578 / <rdar://problem/9877267>
-namespace PR10578 {
-  template<typename T>
-  struct X { 
-    X() {
-      T* x = 1; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}}
-    }
-  };
-
-  struct Y : X<int> {
-    Y();
-  };
-
-  Y::Y() try { // expected-note{{in instantiation of member function 'PR10578::X<int>::X' requested here}}
-  } catch(...) {
-  }
-}
-
-namespace PR14838 {
-  struct base { ~base() {} };
-  class function : base {
-    ~function() {} // expected-note {{implicitly declared private here}}
-  public:
-    function(...) {}
-  };
-  struct thing {};
-  struct another {
-    another() : r(thing()) {}
-    // expected-error at -1 {{temporary of type 'const PR14838::function' has private destructor}}
-    // expected-warning at -2 {{binding reference member 'r' to a temporary value}}
-    const function &r; // expected-note {{reference member declared here}}
-  } af;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-location.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-location.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-location.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR4103: Make sure we have a location for the error
-class A { 
-  float a(int *); // expected-note{{passing argument to parameter here}}
-  int b(); 
-};
-int A::b() { return a(a((int*)0)); } // expected-error {{cannot initialize a parameter of type 'int *' with an rvalue of type 'float'}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-name-lookup.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-name-lookup.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-name-lookup.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,158 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A { 
-  int a;  // expected-note 4{{member found by ambiguous name lookup}}
-  static int b;
-  static int c; // expected-note 2{{member found by ambiguous name lookup}}
-
-  enum E { enumerator };
-
-  typedef int type;
-
-  static void f(int);
-  void f(float); // expected-note 2{{member found by ambiguous name lookup}}
-
-  static void static_f(int);
-  static void static_f(double);
-};
-
-struct B : A {
-  int d; // expected-note 2{{member found by ambiguous name lookup}}
-
-  enum E2 { enumerator2 };
-
-  enum E3 { enumerator3 }; // expected-note 2{{member found by ambiguous name lookup}}
-};
-
-struct C : A {
-  int c; // expected-note 2{{member found by ambiguous name lookup}}
-  int d; // expected-note 2{{member found by ambiguous name lookup}}
-
-  enum E3 { enumerator3_2 }; // expected-note 2{{member found by ambiguous name lookup}}
-};
-
-struct D : B, C {
-  void test_lookup();
-};
-
-void test_lookup(D d) {
-  d.a; // expected-error{{non-static member 'a' found in multiple base-class subobjects of type 'A':}}
-  (void)d.b; // okay
-  d.c; // expected-error{{member 'c' found in multiple base classes of different types}}
-  d.d; // expected-error{{member 'd' found in multiple base classes of different types}}
-  d.f(0); // expected-error{{non-static member 'f' found in multiple base-class subobjects of type 'A':}}
-  d.static_f(0); // okay
-
-  D::E e = D::enumerator; // okay
-  D::type t = 0; // okay
-
-  D::E2 e2 = D::enumerator2; // okay
-
-  D::E3 e3; // expected-error{{multiple base classes}}
-}
-
-void D::test_lookup() {
-  a; // expected-error{{non-static member 'a' found in multiple base-class subobjects of type 'A':}}
-  (void)b; // okay
-  c; // expected-error{{member 'c' found in multiple base classes of different types}}
-  d; // expected-error{{member 'd' found in multiple base classes of different types}}
-  f(0); // expected-error{{non-static member 'f' found in multiple base-class subobjects of type 'A':}}
-  static_f(0); // okay
-
-  E e = enumerator; // okay
-  type t = 0; // okay
-
-  E2 e2 = enumerator2; // okay
-
-  E3 e3; // expected-error{{member 'E3' found in multiple base classes of different types}}
-}
-
-struct B2 : virtual A {
-  int d; // expected-note 2{{member found by ambiguous name lookup}}
-
-  enum E2 { enumerator2 };
-
-  enum E3 { enumerator3 }; // expected-note 2 {{member found by ambiguous name lookup}}
-};
-
-struct C2 : virtual A {
-  int c;
-  int d; // expected-note 2{{member found by ambiguous name lookup}}
-
-  enum E3 { enumerator3_2 }; // expected-note 2{{member found by ambiguous name lookup}}
-};
-
-struct D2 : B2, C2 { 
-  void test_virtual_lookup();
-};
-
-struct F : A { };
-struct G : F, D2 { 
-  void test_virtual_lookup();
-};
-
-void test_virtual_lookup(D2 d2, G g) {
-  (void)d2.a;
-  (void)d2.b;
-  (void)d2.c; // okay
-  d2.d; // expected-error{{member 'd' found in multiple base classes of different types}}
-  d2.f(0); // okay
-  d2.static_f(0); // okay
-
-  D2::E e = D2::enumerator; // okay
-  D2::type t = 0; // okay
-
-  D2::E2 e2 = D2::enumerator2; // okay
-
-  D2::E3 e3; // expected-error{{member 'E3' found in multiple base classes of different types}}
-
-  g.a; // expected-error{{non-static member 'a' found in multiple base-class subobjects of type 'A':}}
-  g.static_f(0); // okay
-}
-
-void D2::test_virtual_lookup() {
-  (void)a;
-  (void)b;
-  (void)c; // okay
-  d; // expected-error{{member 'd' found in multiple base classes of different types}}
-  f(0); // okay
-  static_f(0); // okay
-
-  E e = enumerator; // okay
-  type t = 0; // okay
-
-  E2 e2 = enumerator2; // okay
-
-  E3 e3; // expected-error{{member 'E3' found in multiple base classes of different types}}
-}
-
-void G::test_virtual_lookup() {
-  a; // expected-error{{non-static member 'a' found in multiple base-class subobjects of type 'A':}}
-  static_f(0); // okay
-}
-
-
-struct HasMemberType1 {
-  struct type { }; // expected-note{{member found by ambiguous name lookup}}
-};
-
-struct HasMemberType2 {
-  struct type { }; // expected-note{{member found by ambiguous name lookup}}
-};
-
-struct HasAnotherMemberType : HasMemberType1, HasMemberType2 { 
-  struct type { };
-};
-
-struct UsesAmbigMemberType : HasMemberType1, HasMemberType2 {
-  type t; // expected-error{{member 'type' found in multiple base classes of different types}}
-};
-
-struct X0 {
-  struct Inner {
-    static const int m;
-  };
-  
-  static const int n = 17;
-};
-
-const int X0::Inner::m = n;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-operator-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-operator-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-operator-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-class X {
-public:
-  int operator++();
-  operator int();
-};
-
-void test() {
-  X x;
-  int i;
-
-  i = x.operator++();
-  i = x.operator int();
-  x.operator--(); // expected-error{{no member named 'operator--'}}
-  x.operator float(); // expected-error{{no member named 'operator float'}}
-  x.operator; // expected-error{{expected a type}}
-}
-
-void test2() {
-  X *x;
-  int i;
-
-  i = x->operator++();
-  i = x->operator int();
-  x->operator--(); // expected-error{{no member named 'operator--'}}
-  x->operator float(); // expected-error{{no member named 'operator float'}}
-  x->operator; // expected-error{{expected a type}}
-}
-
-namespace pr13157 {
-  class A { public: void operator()(int x, int y = 2, ...) {} };
-  void f() { A()(1); }
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer-ms.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer-ms.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer-ms.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,167 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -cxx-abi microsoft -fms-compatibility -fsyntax-only -triple=i386-pc-win32 -verify %s
-// RUN: %clang_cc1 -std=c++11 -cxx-abi microsoft -fms-compatibility -fsyntax-only -triple=x86_64-pc-win32 -verify %s
-//
-// This file should also give no diagnostics when run through cl.exe from MSVS
-// 2012, which supports C++11 and static_assert.  It should pass for both 64-bit
-// and 32-bit x86.
-//
-// expected-no-diagnostics
-
-// Test the size of various member pointer combinations:
-// - complete and incomplete
-// - single, multiple, and virtual inheritance (and unspecified for incomplete)
-// - data and function pointers
-// - templated with declared specializations with annotations
-// - template that can be instantiated
-
-// http://llvm.org/PR12070
-struct Foo {
-  typedef int Foo::*FooInt;
-  int f;
-};
-
-enum {
-  kSingleDataSize             = 1 * sizeof(int),
-  kSingleFunctionSize         = 1 * sizeof(void *),
-  kMultipleDataSize           = 1 * sizeof(int),
-  kMultipleFunctionSize       = 2 * sizeof(void *),
-  kVirtualDataSize            = 2 * sizeof(int),
-  kVirtualFunctionSize        = 2 * sizeof(int) + 1 * sizeof(void *),
-  // Unspecified is weird, it's 1 more slot than virtual.
-  kUnspecifiedDataSize        = kVirtualDataSize + 1 * sizeof(int),
-  kUnspecifiedFunctionSize    = kVirtualFunctionSize + 1 * sizeof(void *),
-};
-
-// incomplete types
-class __single_inheritance IncSingle;
-class __multiple_inheritance IncMultiple;
-class __virtual_inheritance IncVirtual;
-static_assert(sizeof(int IncSingle::*)        == kSingleDataSize, "");
-static_assert(sizeof(int IncMultiple::*)      == kMultipleDataSize, "");
-static_assert(sizeof(int IncVirtual::*)       == kVirtualDataSize, "");
-static_assert(sizeof(void (IncSingle::*)())   == kSingleFunctionSize, "");
-static_assert(sizeof(void (IncMultiple::*)()) == kMultipleFunctionSize, "");
-static_assert(sizeof(void (IncVirtual::*)())  == kVirtualFunctionSize, "");
-
-// An incomplete type with an unspecified inheritance model seems to take one
-// more slot than virtual.  It's not clear what it's used for yet.
-class IncUnspecified;
-static_assert(sizeof(int IncUnspecified::*) == kUnspecifiedDataSize, "");
-static_assert(sizeof(void (IncUnspecified::*)()) == kUnspecifiedFunctionSize, "");
-
-// complete types
-struct B1 { };
-struct B2 { };
-struct Single { };
-struct Multiple : B1, B2 { };
-struct Virtual : virtual B1 { };
-static_assert(sizeof(int Single::*)        == kSingleDataSize, "");
-static_assert(sizeof(int Multiple::*)      == kMultipleDataSize, "");
-static_assert(sizeof(int Virtual::*)       == kVirtualDataSize, "");
-static_assert(sizeof(void (Single::*)())   == kSingleFunctionSize, "");
-static_assert(sizeof(void (Multiple::*)()) == kMultipleFunctionSize, "");
-static_assert(sizeof(void (Virtual::*)())  == kVirtualFunctionSize, "");
-
-// Test both declared and defined templates.
-template <typename T> class X;
-template <> class __single_inheritance   X<IncSingle>;
-template <> class __multiple_inheritance X<IncMultiple>;
-template <> class __virtual_inheritance  X<IncVirtual>;
-// Don't declare X<IncUnspecified>.
-static_assert(sizeof(int X<IncSingle>::*)           == kSingleDataSize, "");
-static_assert(sizeof(int X<IncMultiple>::*)         == kMultipleDataSize, "");
-static_assert(sizeof(int X<IncVirtual>::*)          == kVirtualDataSize, "");
-static_assert(sizeof(int X<IncUnspecified>::*)      == kUnspecifiedDataSize, "");
-static_assert(sizeof(void (X<IncSingle>::*)())      == kSingleFunctionSize, "");
-static_assert(sizeof(void (X<IncMultiple>::*)())    == kMultipleFunctionSize, "");
-static_assert(sizeof(void (X<IncVirtual>::*)())     == kVirtualFunctionSize, "");
-static_assert(sizeof(void (X<IncUnspecified>::*)()) == kUnspecifiedFunctionSize, "");
-
-template <typename T>
-struct Y : T { };
-static_assert(sizeof(int Y<Single>::*)        == kSingleDataSize, "");
-static_assert(sizeof(int Y<Multiple>::*)      == kMultipleDataSize, "");
-static_assert(sizeof(int Y<Virtual>::*)       == kVirtualDataSize, "");
-static_assert(sizeof(void (Y<Single>::*)())   == kSingleFunctionSize, "");
-static_assert(sizeof(void (Y<Multiple>::*)()) == kMultipleFunctionSize, "");
-static_assert(sizeof(void (Y<Virtual>::*)())  == kVirtualFunctionSize, "");
-
-struct A { int x; void bar(); };
-struct B : A { virtual void foo(); };
-static_assert(sizeof(int B::*) == kSingleDataSize, "");
-// A non-primary base class uses the multiple inheritance model for member
-// pointers.
-static_assert(sizeof(void (B::*)()) == kMultipleFunctionSize, "");
-
-struct AA { int x; virtual void foo(); };
-struct BB : AA { void bar(); };
-struct CC : BB { virtual void baz(); };
-static_assert(sizeof(void (CC::*)()) == kSingleFunctionSize, "");
-
-// We start out unspecified.
-struct ForwardDecl1;
-struct ForwardDecl2;
-
-// Re-declare to force us to iterate decls when adding attributes.
-struct ForwardDecl1;
-struct ForwardDecl2;
-
-typedef int ForwardDecl1::*MemPtr1;
-typedef int ForwardDecl2::*MemPtr2;
-MemPtr1 variable_forces_sizing;
-
-struct ForwardDecl1 : B {
-  virtual void foo();
-};
-struct ForwardDecl2 : B {
-  virtual void foo();
-};
-
-static_assert(sizeof(variable_forces_sizing) == kUnspecifiedDataSize, "");
-static_assert(sizeof(MemPtr1) == kUnspecifiedDataSize, "");
-// FIXME: Clang fails this assert because it locks in the inheritance model at
-// the point of the typedef instead of the first usage, while MSVC does not.
-//static_assert(sizeof(MemPtr2) == kSingleDataSize, "");
-
-struct MemPtrInBody {
-  typedef int MemPtrInBody::*MemPtr;
-  int a;
-  operator MemPtr() const {
-    return a ? &MemPtrInBody::a : 0;
-  }
-};
-
-static_assert(sizeof(MemPtrInBody::MemPtr) == kSingleDataSize, "");
-
-// Passing a member pointer through a template should get the right size.
-template<typename T>
-struct SingleTemplate;
-template<typename T>
-struct SingleTemplate<void (T::*)(void)> {
-  static_assert(sizeof(int T::*) == kSingleDataSize, "");
-  static_assert(sizeof(void (T::*)()) == kSingleFunctionSize, "");
-};
-
-template<typename T>
-struct UnspecTemplate;
-template<typename T>
-struct UnspecTemplate<void (T::*)(void)> {
-  static_assert(sizeof(int T::*) == kUnspecifiedDataSize, "");
-  static_assert(sizeof(void (T::*)()) == kUnspecifiedFunctionSize, "");
-};
-
-struct NewUnspecified;
-SingleTemplate<void (IncSingle::*)()> tmpl_single;
-UnspecTemplate<void (NewUnspecified::*)()> tmpl_unspec;
-
-struct NewUnspecified { };
-
-static_assert(sizeof(void (NewUnspecified::*)()) == kUnspecifiedFunctionSize, "");
-
-template <typename T>
-struct MemPtrInTemplate {
-  // We can't require that the template arg be complete until we're
-  // instantiated.
-  int T::*data_ptr;
-  void (T::*func_ptr)();
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer-size.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer-size.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer-size.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -fsyntax-only -verify
-// RUN: %clang_cc1 -triple i686-unknown-unknown %s -fsyntax-only -verify
-// expected-no-diagnostics
-#include <stddef.h>
-
-struct A;
-
-void f() {
-  int A::*dataMember;
-  
-  int (A::*memberFunction)();
-  
-  typedef int assert1[sizeof(dataMember) == sizeof(ptrdiff_t) ? 1 : -1];
-  typedef int assert2[sizeof(memberFunction) == sizeof(ptrdiff_t) * 2 ? 1 : -1];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,314 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A {};
-enum B { Dummy };
-namespace C {}
-struct D : A {};
-struct E : A {};
-struct F : D, E {};
-struct G : virtual D {};
-
-int A::*pdi1;
-int (::A::*pdi2);
-int (A::*pfi)(int);
-
-int B::*pbi; // expected-error {{expected a class or namespace}}
-int C::*pci; // expected-error {{'pci' does not point into a class}}
-void A::*pdv; // expected-error {{'pdv' declared as a member pointer to void}}
-int& A::*pdr; // expected-error {{'pdr' declared as a member pointer to a reference}}
-
-void f() {
-  // This requires tentative parsing.
-  int (A::*pf)(int, int);
-
-  // Implicit conversion to bool.
-  bool b = pdi1;
-  b = pfi;
-
-  // Conversion from null pointer constant.
-  pf = 0;
-  pf = __null;
-
-  // Conversion to member of derived.
-  int D::*pdid = pdi1;
-  pdid = pdi2;
-
-  // Fail conversion due to ambiguity and virtuality.
-  int F::*pdif = pdi1; // expected-error {{ambiguous conversion from pointer to member of base class 'A' to pointer to member of derived class 'F':}}
-  int G::*pdig = pdi1; // expected-error {{conversion from pointer to member of class 'A' to pointer to member of class 'G' via virtual base 'D' is not allowed}}
-
-  // Conversion to member of base.
-  pdi1 = pdid; // expected-error {{assigning to 'int A::*' from incompatible type 'int D::*'}}
-  
-  // Comparisons
-  int (A::*pf2)(int, int);
-  int (D::*pf3)(int, int) = 0;
-  bool b1 = (pf == pf2); (void)b1;
-  bool b2 = (pf != pf2); (void)b2;
-  bool b3 = (pf == pf3); (void)b3;
-  bool b4 = (pf != 0); (void)b4;
-}
-
-struct TheBase
-{
-  void d();
-};
-
-struct HasMembers : TheBase
-{
-  int i;
-  void f();
-
-  void g();
-  void g(int);
-  static void g(double);
-};
-
-namespace Fake
-{
-  int i;
-  void f();
-}
-
-void g() {
-  HasMembers hm;
-
-  int HasMembers::*pmi = &HasMembers::i;
-  int *pni = &Fake::i;
-  int *pmii = &hm.i;
-
-  void (HasMembers::*pmf)() = &HasMembers::f;
-  void (*pnf)() = &Fake::f;
-  &hm.f; // expected-error {{cannot create a non-constant pointer to member function}}
-
-  void (HasMembers::*pmgv)() = &HasMembers::g;
-  void (HasMembers::*pmgi)(int) = &HasMembers::g;
-  void (*pmgd)(double) = &HasMembers::g;
-
-  void (HasMembers::*pmd)() = &HasMembers::d;
-}
-
-struct Incomplete;
-
-void h() {
-  HasMembers hm, *phm = &hm;
-
-  int HasMembers::*pi = &HasMembers::i;
-  hm.*pi = 0;
-  int i = phm->*pi;
-  (void)&(hm.*pi);
-  (void)&(phm->*pi);
-  (void)&((&hm)->*pi); 
-
-  void (HasMembers::*pf)() = &HasMembers::f;
-  (hm.*pf)();
-  (phm->*pf)();
-
-  (void)(hm->*pi); // expected-error {{left hand operand to ->* must be a pointer to class compatible with the right hand operand, but is 'HasMembers'}}
-  (void)(phm.*pi); // expected-error {{left hand operand to .* must be a class compatible with the right hand operand, but is 'HasMembers *'}}
-  (void)(i.*pi); // expected-error {{left hand operand to .* must be a class compatible with the right hand operand, but is 'int'}}
-  int *ptr;
-  (void)(ptr->*pi); // expected-error {{left hand operand to ->* must be a pointer to class compatible with the right hand operand, but is 'int *'}}
-
-  int A::*pai = 0;
-  D d, *pd = &d;
-  (void)(d.*pai);
-  (void)(pd->*pai);
-  F f, *ptrf = &f;
-  (void)(f.*pai); // expected-error {{left hand operand to .* must be a class compatible with the right hand operand, but is 'F'}}
-  (void)(ptrf->*pai); // expected-error {{left hand operand to ->* must be a pointer to class compatible with the right hand operand, but is 'F *'}}
-
-  (void)(hm.*i); // expected-error {{pointer-to-member}}
-  (void)(phm->*i); // expected-error {{pointer-to-member}}
-
-  // Okay
-  Incomplete *inc;
-  int Incomplete::*pii = 0;
-  (void)(inc->*pii);
-}
-
-struct OverloadsPtrMem
-{
-  int operator ->*(const char *);
-};
-
-void i() {
-  OverloadsPtrMem m;
-  int foo = m->*"Awesome!";
-}
-
-namespace pr5985 {
-  struct c {
-    void h();
-    void f() {
-      void (c::*p)();
-      p = &h; // expected-error {{must explicitly qualify}}
-      p = &this->h; // expected-error {{cannot create a non-constant pointer to member function}}
-      p = &(*this).h; // expected-error {{cannot create a non-constant pointer to member function}}
-    }
-  };
-}
-
-namespace pr6783 {
-  struct Base {};
-  struct X; // expected-note {{forward declaration}}
-
-  int test1(int Base::* p2m, X* object)
-  {
-    return object->*p2m; // expected-error {{left hand operand to ->*}}
-  }
-}
-
-namespace PR7176 {
-  namespace base
-  {
-    struct Process
-    { };
-    struct Continuous : Process
-    {
-      bool cond();
-    };
-  }
-
-  typedef bool( base::Process::*Condition )();
-
-  void m()
-  { (void)(Condition) &base::Continuous::cond; }
-}
-
-namespace rdar8358512 {
-  // We can't call this with an overload set because we're not allowed
-  // to look into overload sets unless the parameter has some kind of
-  // function type.
-  template <class F> void bind(F f); // expected-note 12 {{candidate template ignored}}
-  template <class F, class T> void bindmem(F (T::*f)()); // expected-note 4 {{candidate template ignored}}
-  template <class F> void bindfn(F (*f)()); // expected-note 4 {{candidate template ignored}}
-
-  struct A {
-    void nonstat();
-    void nonstat(int);
-
-    void mixed();
-    static void mixed(int);
-
-    static void stat();
-    static void stat(int);
-    
-    template <typename T> struct Test0 {
-      void test() {
-        bind(&nonstat); // expected-error {{no matching function for call}}
-        bind(&A::nonstat); // expected-error {{no matching function for call}}
-
-        bind(&mixed); // expected-error {{no matching function for call}}
-        bind(&A::mixed); // expected-error {{no matching function for call}}
-
-        bind(&stat); // expected-error {{no matching function for call}}
-        bind(&A::stat); // expected-error {{no matching function for call}}
-      }
-    };
-
-    template <typename T> struct Test1 {
-      void test() {
-        bindmem(&nonstat); // expected-error {{no matching function for call}}
-        bindmem(&A::nonstat);
-
-        bindmem(&mixed); // expected-error {{no matching function for call}}
-        bindmem(&A::mixed);
-
-        bindmem(&stat); // expected-error {{no matching function for call}}
-        bindmem(&A::stat); // expected-error {{no matching function for call}}
-      }
-    };
-
-    template <typename T> struct Test2 {
-      void test() {
-        bindfn(&nonstat); // expected-error {{no matching function for call}}
-        bindfn(&A::nonstat); // expected-error {{no matching function for call}}
-
-        bindfn(&mixed); // expected-error {{no matching function for call}}
-        bindfn(&A::mixed); // expected-error {{no matching function for call}}
-
-        bindfn(&stat);
-        bindfn(&A::stat);
-      }
-    };
-  };
-
-  template <class T> class B {
-    void nonstat();
-    void nonstat(int);
-
-    void mixed();
-    static void mixed(int);
-
-    static void stat();
-    static void stat(int);
-
-    // None of these can be diagnosed yet, because the arguments are
-    // still dependent.
-    void test0a() {
-      bind(&nonstat);
-      bind(&B::nonstat);
-
-      bind(&mixed);
-      bind(&B::mixed);
-
-      bind(&stat);
-      bind(&B::stat);
-    }
-
-    void test0b() {
-      bind(&nonstat); // expected-error {{no matching function for call}}
-      bind(&B::nonstat); // expected-error {{no matching function for call}}
-
-      bind(&mixed); // expected-error {{no matching function for call}}
-      bind(&B::mixed); // expected-error {{no matching function for call}}
-
-      bind(&stat); // expected-error {{no matching function for call}}
-      bind(&B::stat); // expected-error {{no matching function for call}}
-    }
-  };
-
-  template void B<int>::test0b(); // expected-note {{in instantiation}}
-}
-
-namespace PR9973 {
-  template<class R, class T> struct dm
-  {
-    typedef R T::*F;
-    F f_;
-    template<class U> int & call(U u)
-    { return u->*f_; } // expected-error{{reference to non-static member function must be called; did you mean to call it with no arguments?}} expected-error {{non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'}}
-
-    template<class U> int operator()(U u)
-    { call(u); } // expected-note{{in instantiation of}}
-  };
-
-  template<class R, class T> 
-  dm<R, T> mem_fn(R T::*) ;
-
-  struct test
-  { int nullary_v(); };
-
-  void f()
-  {
-    test* t;
-    mem_fn(&test::nullary_v)(t); // expected-note{{in instantiation of}}
-  }
-}
-
-namespace test8 {
-  struct A { int foo; };
-  int test1() {
-    // Verify that we perform (and check) an lvalue conversion on the operands here.
-    return (*((A**) 0)) // expected-warning {{indirection of non-volatile null pointer will be deleted}} expected-note {{consider}}
-             ->**(int A::**) 0; // expected-warning {{indirection of non-volatile null pointer will be deleted}} expected-note {{consider}}
-  }
-
-  int test2() {
-    // Verify that we perform (and check) an lvalue conversion on the operands here.
-    // TODO: the .* should itself warn about being a dereference of null.
-    return (*((A*) 0))
-             .**(int A::**) 0; // expected-warning {{indirection of non-volatile null pointer will be deleted}} expected-note {{consider}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointers-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointers-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/member-pointers-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-// Tests that Sema properly creates member-access expressions for
-// these instead of bare FieldDecls.
-
-struct Foo {
-  int myvalue;
-
-  // We have to override these to get something with an lvalue result.
-  int &operator++(int);
-  int &operator--(int);
-};
-
-struct Test0 {
-  Foo memfoo;
-  int memint;
-  int memarr[10];
-  Test0 *memptr;
-  struct MemClass { int a; } memstruct;
-  int &memfun();
-  
-  void test() {
-    int *p;
-    p = &Test0::memfoo++;
-    p = &Test0::memfoo--;
-    p = &Test0::memarr[1];
-    p = &Test0::memptr->memint;
-    p = &Test0::memstruct.a;
-    p = &Test0::memfun();
-  }
-};
-
-void test0() {
-  Test0 mytest;
-  mytest.test();
-}
-
-namespace rdar9065289 {
-  typedef void (*FuncPtr)();
-  struct X0 { };
-
-  struct X1
-  {
-    X0* x0;
-    FuncPtr X0::*fptr;
-  };
-
-  void f(X1 p) {
-    (p.x0->*(p.fptr))();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/microsoft-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/microsoft-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/microsoft-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wc++11-narrowing -Wmicrosoft -verify -fms-extensions -std=c++11
-// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wc++11-narrowing -Wmicrosoft -verify -fms-extensions -std=c++11 -fms-compatibility -DMS_COMPAT
-
-
-struct A {
-     unsigned int a;
-};
-int b = 3;
-A var = {  b }; // expected-warning {{ cannot be narrowed }} expected-note {{override}}
-
-
-namespace PR13433 {
-  struct S;
-  S make();
-
-  template<typename F> auto x(F f) -> decltype(f(make()));
-#ifndef MS_COMPAT
-// expected-error at -2{{calling 'make' with incomplete return type 'PR13433::S'}}
-// expected-note at -5{{'make' declared here}}
-// expected-note at -7{{forward declaration of 'PR13433::S'}}
-#endif
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-header.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-header.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-header.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#include "not exist" // expected-error{{'not exist' file not found}}
-
-class AnalysisDeclContext {};
-static ControlFlowKind CheckFallThrough(AnalysisDeclContext &AC) {
-  if (const GCCAsmStmt *AS = dyn_cast<GCCAsmStmt>(S)) {}
-  bool NoReturnEdge = false;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-members.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-members.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-members.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-namespace A {
-  namespace B {
-    class C { };
-    struct S { };
-    union U { };
-  }
-}
-
-void f() {
-  A::B::i; // expected-error {{no member named 'i' in namespace 'A::B'}}
-  A::B::C::i; // expected-error {{no member named 'i' in 'A::B::C'}}
-  ::i; // expected-error {{no member named 'i' in the global namespace}}
-}
-
-namespace B {
-  class B { };
-}
-
-void g() {
-  A::B::D::E; // expected-error {{no member named 'D' in namespace 'A::B'}}
-  B::B::C::D; // expected-error {{no member named 'C' in 'B::B'}}
-  ::C::D; // expected-error {{no member named 'C' in the global namespace}}
-}
-
-int A::B::i = 10; // expected-error {{no member named 'i' in namespace 'A::B'}}
-int A::B::C::i = 10; // expected-error {{no member named 'i' in 'A::B::C'}}
-int A::B::S::i = 10; // expected-error {{no member named 'i' in 'A::B::S'}}
-int A::B::U::i = 10; // expected-error {{no member named 'i' in 'A::B::U'}}
-
-using A::B::D; // expected-error {{no member named 'D' in namespace 'A::B'}}
-
-struct S : A::B::C { 
-  using A::B::C::f; // expected-error {{no member named 'f' in 'A::B::C'}}
-  
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-namespace-qualifier-typo-corrections.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-namespace-qualifier-typo-corrections.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/missing-namespace-qualifier-typo-corrections.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,121 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-c++11-extensions %s
-
-namespace fizbin { class Foobar {}; } // expected-note 2 {{'fizbin::Foobar' declared here}} \
-                                      // expected-note {{'Foobar' declared here}}
-Foobar *my_bar  // expected-error{{unknown type name 'Foobar'; did you mean 'fizbin::Foobar'?}}
-    = new Foobar; // expected-error{{unknown type name 'Foobar'; did you mean 'fizbin::Foobar'?}}
-fizbin::Foobar *my_foo = new fizbin::FooBar; // expected-error{{no type named 'FooBar' in namespace 'fizbin'; did you mean 'Foobar'?}}
-
-namespace barstool { int toFoobar() { return 1; } } // expected-note 3 {{'barstool::toFoobar' declared here}}
-int Double(int x) { return x + x; }
-void empty() {
-  Double(toFoobar()); // expected-error{{use of undeclared identifier 'toFoobar'; did you mean 'barstool::toFoobar'?}}
-}
-
-namespace fizbin {
-  namespace baztool { bool toFoobar() { return true; } } // expected-note{{'fizbin::baztool' declared here}}
-  namespace nested { bool moreFoobar() { return true; } } // expected-note{{'fizbin::nested::moreFoobar' declared here}}
-  namespace nested { bool lessFoobar() { return true; } } // expected-note{{'fizbin::nested' declared here}} \
-                                                          // expected-note{{'fizbin::nested::lessFoobar' declared here}}
-  class dummy { // expected-note 2 {{'fizbin::dummy' declared here}}
-   public:
-    static bool moreFoobar() { return false; } // expected-note{{'moreFoobar' declared here}}
-  };
-}
-void Check() { // expected-note{{'Check' declared here}}
-  if (toFoobar()) Double(7); // expected-error{{use of undeclared identifier 'toFoobar'; did you mean 'barstool::toFoobar'?}}
-  if (noFoobar()) Double(7); // expected-error{{use of undeclared identifier 'noFoobar'; did you mean 'barstool::toFoobar'?}}
-  if (moreFoobar()) Double(7); // expected-error{{use of undeclared identifier 'moreFoobar'; did you mean 'fizbin::nested::moreFoobar'}}
-  if (lessFoobar()) Double(7); // expected-error{{use of undeclared identifier 'lessFoobar'; did you mean 'fizbin::nested::lessFoobar'?}}
-  if (baztool::toFoobar()) Double(7); // expected-error{{use of undeclared identifier 'baztool'; did you mean 'fizbin::baztool'?}}
-  if (nested::moreFoobar()) Double(7); // expected-error{{use of undeclared identifier 'nested'; did you mean 'fizbin::nested'?}}
-  if (dummy::moreFoobar()) Double(7); // expected-error{{use of undeclared identifier 'dummy'; did you mean 'fizbin::dummy'?}}
-  if (dummy::mreFoobar()) Double(7); // expected-error{{use of undeclared identifier 'dummy'; did you mean 'fizbin::dummy'?}} \
-                                     // expected-error{{no member named 'mreFoobar' in 'fizbin::dummy'; did you mean 'moreFoobar'?}}
-  if (moFoobin()) Double(7); // expected-error{{use of undeclared identifier 'moFoobin'}}
-}
-
-void Alt() {
-  Cleck(); // expected-error{{use of undeclared identifier 'Cleck'; did you mean 'Check'?}}
-}
-
-namespace N {
-  namespace inner {
-    class myvector { /* ... */ }; // expected-note{{'inner::myvector' declared here}}
-  }
-
-  void f() {
-    myvector v; // expected-error{{unknown type name 'myvector'; did you mean 'inner::myvector'?}}
-  }
-}
-
-namespace realstd {
-  inline namespace __1 {
-    class mylinkedlist { /* ... */ }; // expected-note 2 {{'realstd::mylinkedlist' declared here}}
-  }
-
-  class linkedlist { /* ... */ };
-}
-
-void f() {
-  mylinkedlist v; // expected-error{{unknown type name 'mylinkedlist'; did you mean 'realstd::mylinkedlist'?}}
-  nylinkedlist w; // expected-error{{unknown type name 'nylinkedlist'; did you mean 'realstd::mylinkedlist'?}}
-}
-
-// Test case from http://llvm.org/bugs/show_bug.cgi?id=10318
-namespace llvm {
- template <typename T> class GraphWriter {}; // expected-note 3{{declared here}}
-}
-
-struct S {};
-void bar() {
- GraphWriter<S> x; //expected-error{{no template named 'GraphWriter'; did you mean 'llvm::GraphWriter'?}}
- (void)new llvm::GraphWriter; // expected-error {{use of class template 'llvm::GraphWriter' requires template arguments}}
- (void)new llvm::Graphwriter<S>; // expected-error {{no template named 'Graphwriter' in namespace 'llvm'; did you mean 'GraphWriter'?}}
-}
-
-// If namespace prefixes and character edits have the same weight, correcting
-// "fimish" to "N::famish" would have the same edit distance as correcting
-// "fimish" to "Finish". The result would be no correction being suggested
-// unless one of the corrections is given precedence (e.g. by filtering out
-// suggestions with added namespace qualifiers).
-namespace N { void famish(int); }
-void Finish(int); // expected-note {{'Finish' declared here}}
-void Start() {
-  fimish(7); // expected-error {{use of undeclared identifier 'fimish'; did you mean 'Finish'?}}
-}
-
-// But just eliminating the corrections containing added namespace qualifiers
-// won't work if both of the tied corrections have namespace qualifiers added.
-namespace N {
-void someCheck(int); // expected-note {{'N::someCheck' declared here}}
-namespace O { void somechock(int); }
-}
-void confusing() {
-  somechick(7); // expected-error {{use of undeclared identifier 'somechick'; did you mean 'N::someCheck'?}}
-}
-
-
-class Message {};
-namespace extra {
-  namespace util {
-    namespace MessageUtils {
-      bool Equivalent(const Message&, const Message&); // expected-note {{'extra::util::MessageUtils::Equivalent' declared here}} \
-                                                       // expected-note {{'::extra::util::MessageUtils::Equivalent' declared here}}
-    }
-  }
-}
-namespace util { namespace MessageUtils {} }
-bool nstest () {
-  Message a, b;
-  return util::MessageUtils::Equivalent(a, b); // expected-error {{no member named 'Equivalent' in namespace 'util::MessageUtils'; did you mean 'extra::util::MessageUtils::Equivalent'?}}
-}
-
-namespace util {
-  namespace extra {
-    bool nstest () {
-      Message a, b;
-      return MessageUtils::Equivalent(a, b); // expected-error {{no member named 'Equivalent' in namespace 'util::MessageUtils'; did you mean '::extra::util::MessageUtils::Equivalent'?}}
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ms-exception-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ms-exception-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ms-exception-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions
-// expected-no-diagnostics
-
-void f() throw(...) { }

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ms-interface.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ms-interface.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ms-interface.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions -Wno-microsoft -std=c++11
-
-__interface I1 {
-  // expected-error at +1 {{user-declared constructor is not permitted within an interface type}}
-  I1();
-  // expected-error at +1 {{user-declared destructor is not permitted within an interface type}}
-  ~I1();
-  virtual void fn1() const;
-  // expected-error at +1 {{operator 'operator!' is not permitted within an interface type}}
-  bool operator!();
-  // expected-error at +1 {{operator 'operator int' is not permitted within an interface type}}
-  operator int();
-  // expected-error at +1 {{nested class I1::<anonymous> is not permitted within an interface type}}
-  struct { int a; };
-  void fn2() {
-    struct A { }; // should be ignored: not a nested class
-  }
-protected: // expected-error {{interface types cannot specify 'protected' access}}
-  typedef void void_t;
-  using int_t = int;
-private:   // expected-error {{interface types cannot specify 'private' access}}
-  static_assert(true, "oops");
-};
-
-__interface I2 {
-  // expected-error at +1 {{data member 'i' is not permitted within an interface type}}
-  int i;
-  // expected-error at +1 {{static member function 'fn1' is not permitted within an interface type}}
-  static int fn1();
-private:   // expected-error {{interface types cannot specify 'private' access}}
-  // expected-error at +1 {{non-public member function 'fn2' is not permitted within an interface type}}
-  void fn2();
-protected: // expected-error {{interface types cannot specify 'protected' access}}
-  // expected-error at +1 {{non-public member function 'fn3' is not permitted within an interface type}}
-  void fn3();
-public:
-  void fn4();
-};
-
-// expected-error at +1 {{'final' keyword not permitted with interface types}}
-__interface I3 final {
-};
-
-__interface I4 : I1, I2 {
-  void fn1() const override;
-  // expected-error at +1 {{'final' keyword not permitted with interface types}}
-  void fn2() final;
-};
-
-// expected-error at +1 {{interface type cannot inherit from non-public 'interface I1'}}
-__interface I5 : private I1 {
-};
-
-template <typename X>
-__interface I6 : X {
-};
-
-struct S { };
-class C { };
-__interface I { };
-
-static_assert(!__is_interface_class(S), "oops");
-static_assert(!__is_interface_class(C), "oops");
-static_assert(__is_interface_class(I), "oops");
-
-// expected-error at 55 {{interface type cannot inherit from 'struct S'}}
-// expected-note at +1 {{in instantiation of template class 'I6<S>' requested here}}
-struct S1 : I6<S> {
-};
-
-// expected-error at 55 {{interface type cannot inherit from 'class C'}}
-// expected-note at +1 {{in instantiation of template class 'I6<C>' requested here}}
-class C1 : I6<C> {
-};
-
-class C2 : I6<I> {
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/namespace-alias.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/namespace-alias.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/namespace-alias.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,127 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace N { struct X { }; };
-
-namespace A = N;
-
-int B; // expected-note {{previous definition is here}}
-namespace B = N; // expected-error {{redefinition of 'B' as different kind of symbol}}
-
-namespace C { } // expected-note {{previous definition is here}}
-namespace C = N; // expected-error {{redefinition of 'C'}}
-
-int i;
-namespace D =
-i; // expected-error {{expected namespace name}}
-
-namespace E1 = N::
-Foo; // expected-error {{expected namespace name}}
-namespace E2 = N::
-X; // expected-error {{expected namespace name}}
-
-namespace F {
-  namespace A { namespace B { } } // expected-note {{candidate found by name lookup is 'F::A::B'}}
-  namespace B { } // expected-note {{candidate found by name lookup is 'F::B'}}
-  using namespace A;
-  namespace D = B; // expected-error {{reference to 'B' is ambiguous}}
-}
-
-namespace G { 
-  namespace B = N;
-}
-
-namespace H {
-  namespace A1 { }
-  namespace A2 { }
-
-  // These all point to A1.
-  namespace B = A1; // expected-note {{previous definition is here}}
-  namespace B = A1;
-  namespace C = B;
-  namespace B = C;
-
-  namespace B = A2; // expected-error {{redefinition of 'B' as different kind of symbol}}
-}
-
-namespace I { 
-  namespace A1 { int i; }
-  
-  namespace A2 = A1;
-}
-
-int f() {
-  return I::A2::i;
-}
-
-namespace J {
-  namespace A { 
-    namespace B { void func (); }
-  }
-
-  namespace C = A;
-
-  using namespace C::B;
-
-  void g() {
-    func();
-  }
-}
-
-namespace K {
-  namespace KA { void func(); }
-
-  void f() {
-    namespace KB = KA;
-    KB::func();
-  }
-
-  template <class T> void g() {
-    namespace KC = KA;
-    KC::func();
-  }
-  template void g<int>();
-  template void g<long>();
-
-  void h() {
-    KB::func(); // expected-error {{undeclared identifier 'KB'}}
-    KC::func(); // expected-error {{undeclared identifier 'KC'}}
-  }
-}
-
-namespace {
-  class C1;
-}
-namespace {
-  class C1;
-}
-C1 *pc1 = 0;
-
-namespace N {
-  namespace {
-    class C2;
-  }
-}
-namespace N {
-  namespace {
-    class C2;
-  }
-}
-N::C2 *pc2 = 0;
-
-// PR6341
-namespace A = N;
-namespace N { }
-namespace A = N;
-
-A::X nx;
-
-namespace PR7014 {
-  namespace X
-  {
-    namespace Y {}
-  }
-
-  using namespace X;
-
-  namespace Y = X::Y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/namespace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/namespace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/namespace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,92 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-namespace A { // expected-note 2 {{previous definition is here}}
-  int A;
-  void f() { A = 0; }
-}
-
-void f() { A = 0; } // expected-error {{unexpected namespace name 'A': expected expression}}
-int A; // expected-error {{redefinition of 'A' as different kind of symbol}}
-class A; // expected-error {{redefinition of 'A' as different kind of symbol}}
-
-class B {}; // expected-note {{previous definition is here}} \
-            // expected-note{{candidate function (the implicit copy assignment operator)}}
-
-void C(); // expected-note {{previous definition is here}}
-namespace C {} // expected-error {{redefinition of 'C' as different kind of symbol}}
-
-namespace D {
-  class D {};
-}
-
-namespace S1 {
-  int x;
-
-  namespace S2 {
-
-    namespace S3 {
-      B x;
-    }
-  }
-}
-
-namespace S1 {
-  void f() {
-    x = 0;
-  }
-
-  namespace S2 {
-    
-    namespace S3 {
-      void f() {
-        x = 0; // expected-error {{no viable overloaded '='}}
-      }
-    }
-
-    int y;
-  }
-}
-
-namespace S1 {
-  namespace S2 {
-    namespace S3 {
-      void f3() {
-        y = 0;
-      }
-    }
-  }
-}
-
-namespace B {} // expected-error {{redefinition of 'B' as different kind of symbol}}
-
-
-namespace foo {
-  enum x {
-    Y
-  };
-}
-
-static foo::x  test1;  // ok
-
-static foo::X  test2;  // typo: expected-error {{no type named 'X' in}}
-
-namespace PR6620 {
-  namespace numeric {
-    namespace op {
-      struct greater {};
-    }
-    namespace {
-      extern op::greater const greater;
-    }
-  }
-
-  namespace numeric {
-    namespace {
-      op::greater const greater = op::greater();
-    }
-
-    template<typename T, typename U>
-    int f(T& l, U& r)
-    { numeric::greater(l, r); }
-
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/neon-vector-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/neon-vector-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/neon-vector-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify "-triple" "thumbv7-apple-ios3.0.0" %s
-// rdar://9208404
-
-typedef int MP4Err;
-typedef float Float32;
-typedef float float32_t;
-typedef __attribute__((neon_vector_type(4))) float32_t float32x4_t;
-typedef float vFloat __attribute__((__vector_size__(16)));
-typedef vFloat VFLOAT;
-typedef unsigned long UInt32;
-
-extern int bar (float32x4_t const *p);
-
-int foo (const Float32 *realBufPtr) {
-  float32x4_t const *vRealPtr = (VFLOAT *)&realBufPtr[0];
-  return bar(vRealPtr);
-}
-
-MP4Err autoCorrelation2nd_Neon(Float32 *alphar, Float32 *alphai,
-			    const Float32 *realBufPtr,
-			    const Float32 *imagBufPtr,
-			    const UInt32 len)
-{
-  float32x4_t const *vRealPtr = (VFLOAT *)&realBufPtr[0];
-  return 0;
-}
-
-namespace rdar11688587 {
-  typedef float float32_t;
-  typedef __attribute__((neon_vector_type(4))) float32_t float32x4_t;
-
-  template<int I>
-  float test()
-  {
-    extern float32x4_t vec;
-    return __extension__ ({ 
-        float32x4_t __a = (vec); 
-        (float32_t)__builtin_neon_vgetq_lane_f32(__a, I);  // expected-error{{argument should be a value from 0 to 3}}
-      });
-  }
-
-  template float test<1>();
-  template float test<4>(); // expected-note{{in instantiation of function template specialization 'rdar11688587::test<4>' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/nested-name-spec-locations.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/nested-name-spec-locations.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/nested-name-spec-locations.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,162 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Note: the formatting in this test case is intentionally funny, with
-// nested-name-specifiers stretched out vertically so that we can
-// match up diagnostics per-line and still verify that we're getting
-// good source-location information.
-
-namespace outer {
-  namespace inner {
-    template<typename T>
-    struct X0 {
-    };
-  }
-}
-
-template<typename T>
-struct add_reference {
-  typedef T& type;
-};
-
-namespace outer_alias = outer;
-
-template<typename T>
-struct UnresolvedUsingValueDeclTester {
-  using outer::inner::X0<
-          typename add_reference<T>::type 
-    * // expected-error{{declared as a pointer to a reference of type}}
-        >::value;
-};
-
-UnresolvedUsingValueDeclTester<int> UnresolvedUsingValueDeclCheck; // expected-note{{in instantiation of template class}}
-
-template<typename T>
-struct UnresolvedUsingTypenameDeclTester {
-  using outer::inner::X0<
-          typename add_reference<T>::type 
-    * // expected-error{{declared as a pointer to a reference of type}}
-        >::value;
-};
-
-UnresolvedUsingTypenameDeclTester<int> UnresolvedUsingTypenameDeclCheck; // expected-note{{in instantiation of template class}}
-
-
-template<typename T, typename U>
-struct PseudoDestructorExprTester {
-  void f(T *t) {
-    t->T::template Inner<typename add_reference<U>::type 
-      * // expected-error{{as a pointer to a reference of type}}
-      >::Blarg::~Blarg();
-  }
-};
-
-struct HasInnerTemplate {
-  template<typename T>
-  struct Inner;
-
-  typedef HasInnerTemplate T;
-};
-
-void PseudoDestructorExprCheck(
-                    PseudoDestructorExprTester<HasInnerTemplate, float> tester) {
-  tester.f(0); // expected-note{{in instantiation of member function}}
-}
-
-template<typename T>
-struct DependentScopedDeclRefExpr {
-  void f() {
-    outer_alias::inner::X0<typename add_reference<T>::type 
-      * // expected-error{{as a pointer to a reference of type}}
-      >::value = 17;
-  }
-};
-
-void DependentScopedDeclRefExprCheck(DependentScopedDeclRefExpr<int> t) {
-  t.f(); // expected-note{{in instantiation of member function}}
-}
-
-
-template<typename T>
-struct TypenameTypeTester {
-  typedef typename outer::inner::X0<
-          typename add_reference<T>::type 
-    * // expected-error{{declared as a pointer to a reference of type}}
-        >::type type;
-};
-
-TypenameTypeTester<int> TypenameTypeCheck; // expected-note{{in instantiation of template class}}
-
-template<typename T, typename U>
-struct DependentTemplateSpecializationTypeTester {
-  typedef typename T::template apply<typename add_reference<U>::type 
-                                     * // expected-error{{declared as a pointer to a reference of type}}
-                                     >::type type;
-};
-
-struct HasApply {
-  template<typename T>
-  struct apply {
-    typedef T type;
-  };
-};
-
-DependentTemplateSpecializationTypeTester<HasApply, int> DTSTCheck; // expected-note{{in instantiation of template class}}
-
-template<typename T, typename U>
-struct DependentTemplateSpecializationTypeTester2 {
-  typedef typename T::template apply<typename add_reference<U>::type 
-                                     * // expected-error{{declared as a pointer to a reference of type}}
-                                     > type;
-};
-
-DependentTemplateSpecializationTypeTester2<HasApply, int> DTSTCheck2; // expected-note{{in instantiation of template class}}
-
-template<typename T, typename U>
-struct DependentTemplateSpecializationTypeTester3 :
-  T::template apply<typename add_reference<U>::type 
-                                     * // expected-error{{declared as a pointer to a reference of type}}
-                                     >
-{};
-
-DependentTemplateSpecializationTypeTester3<HasApply, int> DTSTCheck3; // expected-note{{in instantiation of template class}}
-
-template<typename T, typename U>
-struct DependentTemplateSpecializationTypeTester4 {
-  typedef class T::template apply<typename add_reference<U>::type 
-                                     * // expected-error{{declared as a pointer to a reference of type}}
-                                     > type;
-};
-
-DependentTemplateSpecializationTypeTester4<HasApply, int> DTSTCheck4; // expected-note{{in instantiation of template class}}
-
-template<template<class T> class TTP>
-struct AcceptedTemplateTemplateParameter {
-};
-
-template<typename T, typename U>
-struct DependentTemplateTemplateArgumentTester {
-  typedef AcceptedTemplateTemplateParameter<
-            T::
-            template apply<
-              typename add_reference<U>::type
-              * // expected-error{{declared as a pointer to a reference of type}}
-            >::
-            template X>
-    type;
-};
-
-DependentTemplateTemplateArgumentTester<HasApply, int> DTTACheck; // expected-note{{in instantiation of template class}}
-
-namespace PR9388 {
-  namespace std {
-    template<typename T>     class vector     {
-    };
-  }
-  template<typename T> static void foo(std::vector<T*> &V) {
-    __PRETTY_FUNCTION__; // expected-warning{{expression result unused}}
-  }
-  void bar(std::vector<int*> &Blocks) {
-    foo(Blocks); // expected-note{{in instantiation of}}
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/nested-name-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/nested-name-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/nested-name-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,299 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++98 -verify %s 
-namespace A {
-  struct C {
-    static int cx;
-
-    static int cx2;
-
-    static int Ag1();
-    static int Ag2();
-  };
-  int ax;
-  void Af();
-}
-
-A:: ; // expected-error {{expected unqualified-id}}
-// FIXME: there is a member 'ax'; it's just not a class.
-::A::ax::undef ex3; // expected-error {{no member named 'ax'}}
-A::undef1::undef2 ex4; // expected-error {{no member named 'undef1'}}
-
-int A::C::Ag1() { return 0; }
-
-static int A::C::Ag2() { return 0; } // expected-error{{'static' can}}
-
-int A::C::cx = 17;
-
-
-static int A::C::cx2 = 17; // expected-error{{'static' can}}
-
-class C2 {
-  void m(); // expected-note{{member declaration does not match because it is not const qualified}}
-
-  void f(const int& parm); // expected-note{{type of 1st parameter of member declaration does not match definition ('const int &' vs 'int')}}
-  void f(int) const; // expected-note{{member declaration does not match because it is const qualified}}
-  void f(float);
-
-  int x;
-};
-
-void C2::m() const { } // expected-error{{out-of-line definition of 'm' does not match any declaration in 'C2'}}
-
-void C2::f(int) { } // expected-error{{out-of-line definition of 'f' does not match any declaration in 'C2'}}
-
-void C2::m() {
-  x = 0;
-}
-
-namespace B {
-  void ::A::Af() {} // expected-error {{cannot define or redeclare 'Af' here because namespace 'B' does not enclose namespace 'A'}}
-}
-
-void f1() {
-  void A::Af(); // expected-error {{definition or redeclaration of 'Af' not allowed inside a function}}
-}
-
-void f2() {
-  A:: ; // expected-error {{expected unqualified-id}}
-  A::C::undef = 0; // expected-error {{no member named 'undef'}}
-  ::A::C::cx = 0;
-  int x = ::A::ax = A::C::cx;
-  x = sizeof(A::C);
-  x = sizeof(::A::C::cx);
-}
-
-A::C c1;
-struct A::C c2;
-struct S : public A::C {};
-struct A::undef; // expected-error {{no struct named 'undef' in namespace 'A'}}
-
-namespace A2 {
-  typedef int INT;
-  struct RC;
-  struct CC {
-    struct NC;
-  };
-}
-
-struct A2::RC {
-  INT x;
-};
-
-struct A2::CC::NC {
-  void m() {}
-};
-
-void f3() {
-  N::x = 0; // expected-error {{use of undeclared identifier 'N'}}
-  int N;
-  N::x = 0; // expected-error {{expected a class or namespace}}
-  { int A;           A::ax = 0; }
-  { typedef int A;   A::ax = 0; } // expected-error{{expected a class or namespace}}
-  { typedef A::C A;  A::ax = 0; } // expected-error {{no member named 'ax'}}
-  { typedef A::C A;  A::cx = 0; }
-}
-
-// make sure the following doesn't hit any asserts
-void f4(undef::C); // expected-error {{use of undeclared identifier 'undef'}}
-
-typedef void C2::f5(int); // expected-error{{typedef declarator cannot be qualified}}
-
-void f6(int A2::RC::x); // expected-error{{parameter declarator cannot be qualified}}
-
-int A2::RC::x; // expected-error{{non-static data member defined out-of-line}}
-
-void A2::CC::NC::m(); // expected-error{{out-of-line declaration of a member must be a definition}}
-
-
-namespace E {
-  int X = 5;
-  
-  namespace Nested {
-    enum E {
-      X = 0
-    };
-
-    void f() {
-      return E::X; // expected-error{{expected a class or namespace}}
-    }
-  }
-}
-
-
-class Operators {
-  Operators operator+(const Operators&) const; // expected-note{{member declaration does not match because it is const qualified}}
-  operator bool();
-};
-
-Operators Operators::operator+(const Operators&) { // expected-error{{out-of-line definition of 'operator+' does not match any declaration in 'Operators'}}
-  Operators ops;
-  return ops;
-}
-
-Operators Operators::operator+(const Operators&) const {
-  Operators ops;
-  return ops;
-}
-
-Operators::operator bool() {
-  return true;
-}
-
-namespace A {
-  void g(int&); // expected-note{{type of 1st parameter of member declaration does not match definition ('int &' vs 'const int &')}}
-} 
-
-void A::f() {} // expected-error-re{{out-of-line definition of 'f' does not match any declaration in namespace 'A'$}}
-
-void A::g(const int&) { } // expected-error{{out-of-line definition of 'g' does not match any declaration in namespace 'A'}}
-
-struct Struct { };
-
-void Struct::f() { } // expected-error{{out-of-line definition of 'f' does not match any declaration in 'Struct'}}
-
-void global_func(int);
-void global_func2(int);
-
-namespace N {
-  void ::global_func(int) { } // expected-error{{definition or redeclaration of 'global_func' cannot name the global scope}}
-
-  void f();
-  // FIXME: if we move this to a separate definition of N, things break!
-}
-void ::global_func2(int) { } // expected-error{{extra qualification on member 'global_func2'}}
-
-void N::f() { } // okay
-
-struct Y;  // expected-note{{forward declaration of 'Y'}}
-Y::foo y; // expected-error{{incomplete type 'Y' named in nested name specifier}}
-
-X::X() : a(5) { } // expected-error{{use of undeclared identifier 'X'}} \
-      // expected-error{{C++ requires a type specifier for all declarations}} \
-      // expected-error{{only constructors take base initializers}}
-
-struct foo_S {
-  static bool value;
-};
-bool (foo_S::value);
-
-
-namespace somens {
-  struct a { }; // expected-note{{candidate constructor (the implicit copy constructor)}}
-}
-
-template <typename T>
-class foo {
-};
-
-
-// PR4452 / PR4451
-foo<somens:a> a2;  // expected-error {{unexpected ':' in nested name specifier}}
-
-somens::a a3 = a2; // expected-error {{no viable conversion}}
-
-// typedefs and using declarations.
-namespace test1 {
-  namespace ns {
-    class Counter { public: static int count; };
-    typedef Counter counter;
-  }
-  using ns::counter;
-
-  class Test {
-    void test1() {
-      counter c;
-      c.count++;
-      counter::count++;
-    }
-  };
-}
-
-// We still need to do lookup in the lexical scope, even if we push a
-// non-lexical scope.
-namespace test2 {
-  namespace ns {
-    extern int *count_ptr;
-  }
-  namespace {
-    int count = 0;
-  }
-
-  int *ns::count_ptr = &count;
-}
-
-// PR6259, invalid case
-namespace test3 {
-  class A; // expected-note {{forward declaration}}
-  void foo(const char *path) {
-    A::execute(path); // expected-error {{incomplete type 'test3::A' named in nested name specifier}}
-  }
-}
-
-namespace PR7133 {
-  namespace A {
-    class Foo;
-  }
-
-  namespace A {
-    namespace B {
-      bool foo(Foo &);
-    }
-  }
-
-  bool A::B::foo(Foo &) {
-    return false;
-  }
-}
-
-class CLASS {
-  void CLASS::foo2(); // expected-error {{extra qualification on member 'foo2'}}
-};
-
-namespace PR8159 {
-  class B { };
-
-  class A {
-    int A::a; // expected-error{{extra qualification on member 'a'}}
-    static int A::b; // expected-error{{extra qualification on member 'b'}}
-    int ::c; // expected-error{{non-friend class member 'c' cannot have a qualified name}}
-  };
-}
-
-namespace rdar7980179 {
-  class A { void f0(); }; // expected-note {{previous}}
-  int A::f0() {} // expected-error {{out-of-line definition of 'rdar7980179::A::f0' differs from the declaration in the return type}}
-}
-
-namespace alias = A;
-double *dp = (alias::C*)0; // expected-error{{cannot initialize a variable of type 'double *' with an rvalue of type 'alias::C *'}}
-
-// http://llvm.org/PR10109
-namespace PR10109 {
-template<typename T>
-struct A {
-protected:
-  struct B;
-  struct B::C; // expected-error {{requires a template parameter list}} \
-               // expected-error {{no struct named 'C'}} \
-    // expected-error{{non-friend class member 'C' cannot have a qualified name}}
-};
-
-template<typename T>
-struct A2 {
-protected:
-  struct B;
-};
-template <typename T>
-struct A2<T>::B::C; // expected-error {{no struct named 'C'}}
-}
-
-namespace PR13033 {
-namespace NS {
- int a; // expected-note {{'NS::a' declared here}}
- int longer_b; //expected-note {{'NS::longer_b' declared here}}
-}
-
-// Suggest adding a namespace qualifier to both variable names even though one
-// is only a single character long.
-int foobar = a + longer_b; // expected-error {{use of undeclared identifier 'a'; did you mean 'NS::a'?}} \
-                           // expected-error {{use of undeclared identifier 'longer_b'; did you mean 'NS::longer_b'?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/new-array-size-conv.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/new-array-size-conv.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/new-array-size-conv.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-struct ValueInt
-{
-  ValueInt(int v = 0) : ValueLength(v) {}
-  operator int () const { return ValueLength; } // expected-note 3{{conversion to integral type 'int' declared here}}
-private:
-  int ValueLength;
-};
-
-enum E { e };
-struct ValueEnum {
-  operator E() const; // expected-note{{conversion to enumeration type 'E' declared here}}
-};
-
-struct ValueBoth : ValueInt, ValueEnum { };
-
-struct IndirectValueInt : ValueInt { };
-struct TwoValueInts : ValueInt, IndirectValueInt { };
-
-void test() {
-  (void)new int[ValueInt(10)]; // expected-warning{{implicit conversion from array size expression of type 'ValueInt' to integral type 'int' is a C++11 extension}}
-  (void)new int[ValueEnum()]; // expected-warning{{implicit conversion from array size expression of type 'ValueEnum' to enumeration type 'E' is a C++11 extension}}
-  (void)new int[ValueBoth()]; // expected-error{{ambiguous conversion of array size expression of type 'ValueBoth' to an integral or enumeration type}}
-
-  (void)new int[TwoValueInts()]; // expected-error{{ambiguous conversion of array size expression of type 'TwoValueInts' to an integral or enumeration type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -triple=i686-pc-linux-gnu -std=c++11
-
-using size_t = decltype(sizeof(0));
-struct noreturn_t {} constexpr noreturn = {};
-
-void *operator new [[noreturn]] (size_t, noreturn_t);
-void operator delete [[noreturn]] (void*, noreturn_t);
-
-void good_news()
-{
-  auto p = new int[2][[]];
-  auto q = new int[[]][2];
-  auto r = new int*[[]][2][[]];
-  auto s = new (int(*[[]])[2][[]]);
-}
-
-void bad_news(int *ip)
-{
-  // attribute-specifiers can go almost anywhere in a new-type-id...
-  auto r = new int[[]{return 1;}()][2]; // expected-error {{expected ']'}}
-  auto s = new int*[[]{return 1;}()][2]; // expected-error {{expected ']'}}
-  // ... but not here:
-  auto t = new (int(*)[[]]); // expected-error {{an attribute list cannot appear here}}
-  auto u = new (int(*)[[]{return 1;}()][2]); // expected-error {{C++11 only allows consecutive left square brackets when introducing an attribute}} expected-error {{variably modified type}}
-}
-
-void good_deletes()
-{
-  delete [&]{ return (int*)0; }();
-}
-
-void bad_deletes()
-{
-  // 'delete []' is always array delete, per [expr.delete]p1.
-  // FIXME: Give a better diagnostic.
-  delete []{ return (int*)0; }(); // expected-error {{expected expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 -triple=i686-pc-linux-gnu
-
-void ugly_news(int *ip) {
-  // These are ill-formed according to one reading of C++98, and at the least
-  // have undefined behavior. But they're well-formed, and defined to throw
-  // std::bad_array_new_length, in C++11.
-  (void)new int[-1]; // expected-warning {{array size is negative}}
-  (void)new int[2000000000]; // expected-warning {{array is too large}}
-}
-
-
-struct S {
-  S(int);
-  S();
-  ~S();
-};
-
-struct T { // expected-note 2 {{not viable}}
-  T(int); // expected-note {{not viable}}
-};
-
-void fn() {
-  (void) new int[2] {1, 2};
-  (void) new S[2] {1, 2};
-  (void) new T[2] {1, 2}; // expected-error {{no matching constructor}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-predefined-decl-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-predefined-decl-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-predefined-decl-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -DQUALIFIED -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR5904
-void f0(int *ptr) {
-#ifndef QUALIFIED
-  operator delete(ptr);
-#endif
-}
-
-void f1(int *ptr) {
-  ::operator delete[](ptr);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-predefined-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-predefined-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete-predefined-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -DTEMPLATE_OVERLOAD -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-#include <stddef.h>
-
-// Note that each test must be run separately so it can be the first operator
-// new declaration in the file.
-
-#if defined(TEMPLATE_OVERLOAD)
-// Don't crash on global template operator new overloads.
-template<typename T> void* operator new(size_t, T);
-void test_template_overload() {
-  (void)new(0) double;
-}
-#endif
-
-void test_predefined() {
-  (void)new double;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/new-delete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,512 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -triple=i686-pc-linux-gnu
-
-#include <stddef.h>
-
-struct S // expected-note {{candidate}}
-{
-  S(int, int, double); // expected-note {{candidate}}
-  S(double, int); // expected-note 2 {{candidate}}
-  S(float, int); // expected-note 2 {{candidate}}
-};
-struct T; // expected-note{{forward declaration of 'T'}}
-struct U
-{
-  // A special new, to verify that the global version isn't used.
-  void* operator new(size_t, S*); // expected-note {{candidate}}
-};
-struct V : U
-{
-};
-
-// PR5823
-void* operator new(const size_t); // expected-note 2 {{candidate}}
-void* operator new(size_t, int*); // expected-note 3 {{candidate}}
-void* operator new(size_t, float*); // expected-note 3 {{candidate}}
-void* operator new(size_t, S); // expected-note 2 {{candidate}}
-
-struct foo { };
-
-void good_news()
-{
-  int *pi = new int;
-  float *pf = new (pi) float();
-  pi = new int(1);
-  pi = new int('c');
-  const int *pci = new const int();
-  S *ps = new S(1, 2, 3.4);
-  ps = new (pf) (S)(1, 2, 3.4);
-  S *(*paps)[2] = new S*[*pi][2];
-  typedef int ia4[4];
-  ia4 *pai = new (int[3][4]);
-  pi = ::new int;
-  U *pu = new (ps) U;
-  V *pv = new (ps) V;
-  
-  pi = new (S(1.0f, 2)) int;
-  
-  (void)new int[true];
-
-  // PR7147
-  typedef int a[2];
-  foo* f1 = new foo;
-  foo* f2 = new foo[2];
-  typedef foo x[2];
-  typedef foo y[2][2];
-  x* f3 = new y;
-}
-
-struct abstract {
-  virtual ~abstract() = 0;
-};
-
-void bad_news(int *ip)
-{
-  int i = 1; // expected-note 2{{here}}
-  (void)new; // expected-error {{expected a type}}
-  (void)new 4; // expected-error {{expected a type}}
-  (void)new () int; // expected-error {{expected expression}}
-  (void)new int[1.1]; // expected-error {{array size expression must have integral or enumeration type, not 'double'}}
-  (void)new int[1][i]; // expected-error {{only the first dimension}} expected-note {{read of non-const variable 'i' is not allowed in a constant expression}}
-  (void)new (int[1][i]); // expected-error {{only the first dimension}} expected-note {{read of non-const variable 'i' is not allowed in a constant expression}}
-  (void)new (int[i]); // expected-warning {{when type is in parentheses}}
-  (void)new int(*(S*)0); // expected-error {{no viable conversion from 'S' to 'int'}}
-  (void)new int(1, 2); // expected-error {{excess elements in scalar initializer}}
-  (void)new S(1); // expected-error {{no matching constructor}}
-  (void)new S(1, 1); // expected-error {{call to constructor of 'S' is ambiguous}}
-  (void)new const int; // expected-error {{default initialization of an object of const type 'const int'}}
-  (void)new float*(ip); // expected-error {{cannot initialize a new value of type 'float *' with an lvalue of type 'int *'}}
-  // Undefined, but clang should reject it directly.
-  (void)new int[-1]; // expected-error {{array size is negative}}
-  (void)new int[2000000000]; // expected-error {{array is too large}}
-  (void)new int[*(S*)0]; // expected-error {{array size expression must have integral or enumeration type, not 'S'}}
-  (void)::S::new int; // expected-error {{expected unqualified-id}}
-  (void)new (0, 0) int; // expected-error {{no matching function for call to 'operator new'}}
-  (void)new (0L) int; // expected-error {{call to 'operator new' is ambiguous}}
-  // This must fail, because the member version shouldn't be found.
-  (void)::new ((S*)0) U; // expected-error {{no matching function for call to 'operator new'}}
-  // This must fail, because any member version hides all global versions.
-  (void)new U; // expected-error {{no matching function for call to 'operator new'}}
-  (void)new (int[]); // expected-error {{array size must be specified in new expressions}}
-  (void)new int&; // expected-error {{cannot allocate reference type 'int &' with new}}
-  // Some lacking cases due to lack of sema support.
-}
-
-void good_deletes()
-{
-  delete (int*)0;
-  delete [](int*)0;
-  delete (S*)0;
-  ::delete (int*)0;
-}
-
-void bad_deletes()
-{
-  delete 0; // expected-error {{cannot delete expression of type 'int'}}
-  delete [0] (int*)0; // expected-error {{expected expression}}
-  delete (void*)0; // expected-warning {{cannot delete expression with pointer-to-'void' type 'void *'}}
-  delete (T*)0; // expected-warning {{deleting pointer to incomplete type}}
-  ::S::delete (int*)0; // expected-error {{expected unqualified-id}}
-}
-
-struct X0 { };
-
-struct X1 {
-  operator int*();
-  operator float();
-};
-
-struct X2 {
-  operator int*(); // expected-note {{candidate function}}
-  operator float*(); // expected-note {{candidate function}}
-};
-
-void test_delete_conv(X0 x0, X1 x1, X2 x2) {
-  delete x0; // expected-error{{cannot delete}}
-  delete x1;
-  delete x2; // expected-error{{ambiguous conversion of delete expression of type 'X2' to a pointer}}
-}
-
-// PR4782
-class X3 {
-public:
-  static void operator delete(void * mem, size_t size);
-};
-
-class X4 {
-public:
-  static void release(X3 *x);
-  static void operator delete(void * mem, size_t size);
-};
-
-
-void X4::release(X3 *x) {
-  delete x;
-}
-
-class X5 {
-public:
-  void Destroy() const { delete this; }
-};
-
-class Base {
-public:
-  static void *operator new(signed char) throw(); // expected-error {{'operator new' takes type size_t}}
-  static int operator new[] (size_t) throw(); // expected-error {{operator new[]' must return type 'void *'}}
-};
-
-class Tier {};
-class Comp : public Tier {};
-
-class Thai : public Base {
-public:
-  Thai(const Tier *adoptDictionary);
-};
-
-void loadEngineFor() {
-  const Comp *dict;
-  new Thai(dict);
-}
-
-template <class T> struct TBase {
-  void* operator new(T size, int); // expected-error {{'operator new' cannot take a dependent type as first parameter; use size_t}}
-};
-
-TBase<int> t1;
-
-class X6 {
-public:
-  static void operator delete(void*, int); // expected-note {{member found by ambiguous name lookup}}
-};
-
-class X7 {
-public:
-  static void operator delete(void*, int); // expected-note {{member found by ambiguous name lookup}}
-};
-
-class X8 : public X6, public X7 {
-};
-
-void f(X8 *x8) {
-  delete x8; // expected-error {{member 'operator delete' found in multiple base classes of different types}}
-}
-
-class X9 {
-public:
-  static void operator delete(void*, int); // expected-note {{'operator delete' declared here}}
-  static void operator delete(void*, float); // expected-note {{'operator delete' declared here}}
-};
-
-void f(X9 *x9) {
-  delete x9; // expected-error {{no suitable member 'operator delete' in 'X9'}}
-}
-
-struct X10 {
-  virtual ~X10();
-};
-
-struct X11 : X10 { // expected-error {{no suitable member 'operator delete' in 'X11'}}
-  void operator delete(void*, int); // expected-note {{'operator delete' declared here}}
-};
-
-void f() {
-  X11 x11; // expected-note {{implicit default destructor for 'X11' first required here}}
-}
-
-struct X12 {
-  void* operator new(size_t, void*);
-};
-
-struct X13 : X12 {
-  using X12::operator new;
-};
-
-static void* f(void* g)
-{
-    return new (g) X13();
-}
-
-class X14 {
-public:
-  static void operator delete(void*, const size_t);
-};
-
-void f(X14 *x14a, X14 *x14b) {
-  delete x14a;
-}
-
-class X15 {
-private:
-  X15(); // expected-note {{declared private here}}
-  ~X15(); // expected-note {{declared private here}}
-};
-
-void f(X15* x) {
-  new X15(); // expected-error {{calling a private constructor}}
-  delete x; // expected-error {{calling a private destructor}}
-}
-
-namespace PR5918 { // Look for template operator new overloads.
-  struct S { template<typename T> static void* operator new(size_t, T); };
-  void test() {
-    (void)new(0) S;
-  }
-}
-
-namespace Test1 {
-
-void f() {
-  (void)new int[10](1, 2); // expected-error {{array 'new' cannot have initialization arguments}}
-  
-  typedef int T[10];
-  (void)new T(1, 2); // expected-error {{array 'new' cannot have initialization arguments}}
-}
-
-template<typename T>
-void g(unsigned i) {
-  (void)new T[1](i); // expected-error {{array 'new' cannot have initialization arguments}}
-}
-
-template<typename T>
-void h(unsigned i) {
-  (void)new T(i); // expected-error {{array 'new' cannot have initialization arguments}}
-}
-template void h<unsigned>(unsigned);
-template void h<unsigned[10]>(unsigned); // expected-note {{in instantiation of function template specialization 'Test1::h<unsigned int [10]>' requested here}}
-
-}
-
-// Don't diagnose access for overload candidates that aren't selected.
-namespace PR7436 {
-struct S1 {
-  void* operator new(size_t);
-  void operator delete(void* p);
-
-private:
-  void* operator new(size_t, void*); // expected-note {{declared private here}}
-  void operator delete(void*, void*);
-};
-class S2 {
-  void* operator new(size_t); // expected-note {{declared private here}}
-  void operator delete(void* p); // expected-note {{declared private here}}
-};
-
-void test(S1* s1, S2* s2) { 
-  delete s1;
-  delete s2; // expected-error {{is a private member}}
-  (void)new S1();
-  (void)new (0L) S1(); // expected-error {{is a private member}}
-  (void)new S2(); // expected-error {{is a private member}}
-}
-}
-
-namespace rdar8018245 {
-  struct X0 {
-    static const int value = 17;
-  };
-
-  const int X0::value;
-
-  struct X1 {
-    static int value;
-  };
-
-  int X1::value;
-
-  template<typename T>
-  int *f() {
-    return new (int[T::value]); // expected-warning{{when type is in parentheses, array cannot have dynamic size}}
-  }
-
-  template int *f<X0>();
-  template int *f<X1>(); // expected-note{{in instantiation of}}
-
-}
-
-// <rdar://problem/8248780>
-namespace Instantiate {
-  template<typename T> struct X { 
-    operator T*();
-  };
-
-  void f(X<int> &xi) {
-    delete xi;
-  }
-}
-
-namespace PR7810 {
-  struct X {
-    // cv is ignored in arguments
-    static void operator delete(void *const);
-  };
-  struct Y {
-    // cv is ignored in arguments
-    static void operator delete(void *volatile);
-  };
-}
-
-// Don't crash on template delete operators
-namespace TemplateDestructors {
-  struct S {
-    virtual ~S() {}
-
-    void* operator new(const size_t size);
-    template<class T> void* operator new(const size_t, const int, T*);
-    void operator delete(void*, const size_t);
-    template<class T> void operator delete(void*, const size_t, const int, T*);
-  };
-}
-
-namespace DeleteParam {
-  struct X {
-    void operator delete(X*); // expected-error{{first parameter of 'operator delete' must have type 'void *'}}
-  };
-
-  struct Y {
-    void operator delete(void* const);
-  };
-}
-
-// <rdar://problem/8427878>
-// Test that the correct 'operator delete' is selected to pair with
-// the unexpected placement 'operator new'.
-namespace PairedDelete {
-  template <class T> struct A {
-    A();
-    void *operator new(size_t s, double d = 0);
-    void operator delete(void *p, double d);
-    void operator delete(void *p) {
-      T::dealloc(p);
-    }
-  };
-
-  A<int> *test() {
-    return new A<int>();
-  }
-}
-
-namespace PR7702 {
-  void test1() {
-    new DoesNotExist; // expected-error {{unknown type name 'DoesNotExist'}}
-  }
-}
-
-namespace ArrayNewNeedsDtor {
-  struct A { A(); private: ~A(); }; // expected-note {{declared private here}}
-  struct B { B(); A a; }; // expected-error {{field of type 'ArrayNewNeedsDtor::A' has private destructor}}
-  B *test9() {
-    return new B[5]; // expected-note {{implicit default destructor for 'ArrayNewNeedsDtor::B' first required here}}
-  }
-}
-
-namespace DeleteIncompleteClass {
-  struct A; // expected-note {{forward declaration}}
-  extern A x;
-  void f() { delete x; } // expected-error {{deleting incomplete class type}}
-}
-
-namespace DeleteIncompleteClassPointerError {
-  struct A; // expected-note {{forward declaration}}
-  void f(A *x) { 1+delete x; } // expected-warning {{deleting pointer to incomplete type}} \
-                               // expected-error {{invalid operands to binary expression}}
-}
-
-namespace PR10504 {
-  struct A {
-    virtual void foo() = 0;
-  };
-  void f(A *x) { delete x; } // expected-warning {{delete called on 'PR10504::A' that is abstract but has non-virtual destructor}}
-}
-
-struct PlacementArg {};
-inline void *operator new[](size_t, const PlacementArg &) throw () {
-  return 0;
-}
-inline void operator delete[](void *, const PlacementArg &) throw () {
-}
-
-namespace r150682 {
-
-  template <typename X>
-  struct S {
-    struct Inner {};
-    S() { new Inner[1]; }
-  };
-
-  struct T {
-  };
-
-  template<typename X>
-  void tfn() {
-    new (*(PlacementArg*)0) T[1];
-  }
-
-  void fn() {
-    tfn<int>();
-  }
-
-}
-
-namespace P12023 {
-  struct CopyCounter
-  {
-      CopyCounter();
-      CopyCounter(const CopyCounter&);
-  };
-
-  int main()
-  {
-    CopyCounter* f = new CopyCounter[10](CopyCounter()); // expected-error {{cannot have initialization arguments}}
-      return 0;
-  }
-}
-
-namespace PR12061 {
-  template <class C> struct scoped_array {
-    scoped_array(C* p = __null);
-  };
-  template <class Payload> struct Foo {
-    Foo() : a_(new scoped_array<int>[5]) { }
-    scoped_array< scoped_array<int> > a_;
-  };
-  class Bar {};
-  Foo<Bar> x;
-
-  template <class C> struct scoped_array2 {
-    scoped_array2(C* p = __null, C* q = __null);
-  };
-  template <class Payload> struct Foo2 {
-    Foo2() : a_(new scoped_array2<int>[5]) { }
-    scoped_array2< scoped_array2<int> > a_;
-  };
-  class Bar2 {};
-  Foo2<Bar2> x2;
-
-  class MessageLoop {
-  public:
-    explicit MessageLoop(int type = 0);
-  };
-  template <class CookieStoreTestTraits>
-  class CookieStoreTest {
-  protected:
-    CookieStoreTest() {
-      new MessageLoop;
-    }
-  };
-  struct CookieMonsterTestTraits {
-  };
-  class DeferredCookieTaskTest : public CookieStoreTest<CookieMonsterTestTraits>
-  {
-    DeferredCookieTaskTest() {}
-  };
-}
-
-class DeletingPlaceholder {
-  int* f() {
-    delete f; // expected-error {{reference to non-static member function must be called; did you mean to call it with no arguments?}}
-    return 0;
-  }
-  int* g(int, int) {
-    delete g; // expected-error {{reference to non-static member function must be called}}
-    return 0;
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/no-exceptions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/no-exceptions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/no-exceptions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Various tests for -fno-exceptions
-
-typedef __SIZE_TYPE__ size_t;
-
-namespace test0 {
-  // rdar://problem/7878149
-  class Foo {
-  public:
-    void* operator new(size_t x);
-  private:
-    void operator delete(void *x);
-  };
-
-  void test() {
-    // Under -fexceptions, this does access control for the associated
-    // 'operator delete'.
-    (void) new Foo();
-  }
-}
-
-namespace test1 {
-void f() {
-  throw; // expected-error {{cannot use 'throw' with exceptions disabled}}
-}
-
-void g() {
-  try { // expected-error {{cannot use 'try' with exceptions disabled}}
-    f();
-  } catch (...) {
-  }
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/no-implicit-builtin-decls.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/no-implicit-builtin-decls.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/no-implicit-builtin-decls.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f() {
-  void *p = malloc(sizeof(int) * 10); // expected-error{{use of undeclared identifier 'malloc'}}
-}
-
-int malloc(double);

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/no-rtti.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/no-rtti.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/no-rtti.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fno-rtti %s
-
-namespace std {
-  class type_info;
-}
-
-void f()
-{
-  (void)typeid(int); // expected-error {{cannot use typeid with -fno-rtti}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/no-warn-composite-pointer-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/no-warn-composite-pointer-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/no-warn-composite-pointer-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-compare-distinct-pointer-types -verify %s
-// expected-no-diagnostics
-// rdar://12501960
-
-void Foo(int **thing, const int **thingMax)
-{
-        if ((thing + 3) > thingMax)
-                return;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/no-wchar.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/no-wchar.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/no-wchar.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple i386-pc-win32 -fsyntax-only -fno-wchar -verify %s
-wchar_t x; // expected-error {{unknown type name 'wchar_t'}}
-
-typedef unsigned short wchar_t;
-void foo(const wchar_t* x);
-
-void bar() {
-  foo(L"wide string literal");
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/non-empty-class-size-zero.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/non-empty-class-size-zero.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/non-empty-class-size-zero.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only %s
-// rdar://8945175
-
-struct X { 
-  int array[0]; 
-  int array1[0]; 
-  int array2[0]; 
-  X();
-  ~X();
-};
-
-struct Y {
-  int first;
-  X padding;
-  int second;
-};
-
-int zero_size_array[(sizeof(Y)  == 8) -1]; // no error here!

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/null_in_arithmetic_ops.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/null_in_arithmetic_ops.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/null_in_arithmetic_ops.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -fblocks -Wnull-arithmetic -verify -Wno-string-plus-int %s
-#include <stddef.h>
-
-void f() {
-  int a;
-  bool b;
-  void (^c)();
-  class X;
-  void (X::*d) ();
-  extern void e();
-  int f[2];
-  const void *v;
-
-  a = 0 ? NULL + a : a + NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  a = 0 ? NULL - a : a - NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  a = 0 ? NULL / a : a / NULL; // expected-warning 2{{use of NULL in arithmetic operation}} \
-                               // expected-warning {{division by zero is undefined}}
-  a = 0 ? NULL * a : a * NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  a = 0 ? NULL >> a : a >> NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  a = 0 ? NULL << a : a << NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  a = 0 ? NULL % a : a % NULL; // expected-warning 2{{use of NULL in arithmetic operation}} \
-                                  expected-warning {{remainder by zero is undefined}}
-  a = 0 ? NULL & a : a & NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  a = 0 ? NULL | a : a | NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  a = 0 ? NULL ^ a : a ^ NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-
-  // Check for warnings or errors when doing arithmetic on pointers and other
-  // types.
-  v = 0 ? NULL + &a : &a + NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  v = 0 ? NULL + c : c + NULL; // \
-    expected-error {{invalid operands to binary expression ('long' and 'void (^)()')}} \
-    expected-error {{invalid operands to binary expression ('void (^)()' and 'long')}}
-  v = 0 ? NULL + d : d + NULL; // \
-    expected-error {{invalid operands to binary expression ('long' and 'void (X::*)()')}} \
-    expected-error {{invalid operands to binary expression ('void (X::*)()' and 'long')}}
-  v = 0 ? NULL + e : e + NULL; // expected-error 2{{arithmetic on a pointer to the function type 'void ()'}}
-  v = 0 ? NULL + f : f + NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-  v = 0 ? NULL + "f" : "f" + NULL; // expected-warning 2{{use of NULL in arithmetic operation}}
-
-  // Using two NULLs should only give one error instead of two.
-  a = NULL + NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a = NULL - NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a = NULL / NULL; // expected-warning{{use of NULL in arithmetic operation}} \
-                   // expected-warning{{division by zero is undefined}}
-  a = NULL * NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a = NULL >> NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a = NULL << NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a = NULL % NULL; // expected-warning{{use of NULL in arithmetic operation}} \
-                   // expected-warning{{remainder by zero is undefined}}
-  a = NULL & NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a = NULL | NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a = NULL ^ NULL; // expected-warning{{use of NULL in arithmetic operation}}
-
-  a += NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a -= NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a /= NULL; // expected-warning{{use of NULL in arithmetic operation}} \
-             // expected-warning{{division by zero is undefined}}
-  a *= NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a >>= NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a <<= NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a %= NULL; // expected-warning{{use of NULL in arithmetic operation}} \
-             // expected-warning{{remainder by zero is undefined}}
-  a &= NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a |= NULL; // expected-warning{{use of NULL in arithmetic operation}}
-  a ^= NULL; // expected-warning{{use of NULL in arithmetic operation}}
-
-  b = a < NULL || a > NULL; // expected-warning 2{{comparison between NULL and non-pointer ('int' and NULL)}}
-  b = NULL < a || NULL > a; // expected-warning 2{{comparison between NULL and non-pointer (NULL and 'int')}}
-  b = a <= NULL || a >= NULL; // expected-warning 2{{comparison between NULL and non-pointer ('int' and NULL)}}
-  b = NULL <= a || NULL >= a; // expected-warning 2{{comparison between NULL and non-pointer (NULL and 'int')}}
-  b = a == NULL || a != NULL; // expected-warning 2{{comparison between NULL and non-pointer ('int' and NULL)}}
-  b = NULL == a || NULL != a; // expected-warning 2{{comparison between NULL and non-pointer (NULL and 'int')}}
-
-  b = &a < NULL || NULL < &a || &a > NULL || NULL > &a;
-  b = &a <= NULL || NULL <= &a || &a >= NULL || NULL >= &a;
-  b = &a == NULL || NULL == &a || &a != NULL || NULL != &a;
-
-  b = 0 == a;
-  b = 0 == &a;
-
-  b = NULL < NULL || NULL > NULL;
-  b = NULL <= NULL || NULL >= NULL;
-  b = NULL == NULL || NULL != NULL;
-
-  b = ((NULL)) != a;  // expected-warning{{comparison between NULL and non-pointer (NULL and 'int')}}
-
-  // Check that even non-standard pointers don't warn.
-  b = c == NULL || NULL == c || c != NULL || NULL != c;
-  b = d == NULL || NULL == d || d != NULL || NULL != d;
-  b = e == NULL || NULL == e || e != NULL || NULL != e;
-  b = f == NULL || NULL == f || f != NULL || NULL != f;
-  b = "f" == NULL || NULL == "f" || "f" != NULL || NULL != "f";
-
-  return NULL; // expected-error{{void function 'f' should not return a value}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr-98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr-98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr-98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -std=c++98 -fsyntax-only -verify %s
-// expected-no-diagnostics
-void f(void *);
-void g() { f(__nullptr); }

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,187 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify -std=c++11 -ffreestanding %s
-#include <stdint.h>
-
-typedef decltype(nullptr) nullptr_t;
-
-struct A {};
-
-int o1(char*);
-void o1(uintptr_t);
-void o2(char*); // expected-note {{candidate}}
-void o2(int A::*); // expected-note {{candidate}}
-
-nullptr_t f(nullptr_t null)
-{
-  // Implicit conversions.
-  null = nullptr;
-  void *p = nullptr;
-  p = null;
-  int *pi = nullptr;
-  pi = null;
-  null = 0;
-  int A::*pm = nullptr;
-  pm = null;
-  void (*pf)() = nullptr;
-  pf = null;
-  void (A::*pmf)() = nullptr;
-  pmf = null;
-  bool b = nullptr;
-
-  // Can't convert nullptr to integral implicitly.
-  uintptr_t i = nullptr; // expected-error {{cannot initialize}}
-
-  // Operators
-  (void)(null == nullptr);
-  (void)(null <= nullptr);
-  (void)(null == 0);
-  (void)(null == (void*)0);
-  (void)((void*)0 == nullptr);
-  (void)(null <= 0);
-  (void)(null <= (void*)0);
-  (void)((void*)0 <= nullptr);
-  (void)(0 == nullptr);
-  (void)(nullptr == 0);
-  (void)(nullptr <= 0);
-  (void)(0 <= nullptr);
-  (void)(1 > nullptr); // expected-error {{invalid operands to binary expression}}
-  (void)(1 != nullptr); // expected-error {{invalid operands to binary expression}}
-  (void)(1 + nullptr); // expected-error {{invalid operands to binary expression}}
-  (void)(0 ? nullptr : 0);
-  (void)(0 ? nullptr : (void*)0);
-  (void)(0 ? nullptr : A()); // expected-error {{non-pointer operand type 'A' incompatible with nullptr}}
-  (void)(0 ? A() : nullptr); // expected-error {{non-pointer operand type 'A' incompatible with nullptr}}
-
-  // Overloading
-  int t = o1(nullptr);
-  t = o1(null);
-  o2(nullptr); // expected-error {{ambiguous}}
-
-  // nullptr is an rvalue, null is an lvalue
-  (void)&nullptr; // expected-error {{cannot take the address of an rvalue of type 'nullptr_t'}}
-  nullptr_t *pn = &null;
-
-  // You can reinterpret_cast nullptr to an integer.
-  (void)reinterpret_cast<uintptr_t>(nullptr);
-  (void)reinterpret_cast<uintptr_t>(*pn);
-
-  int *ip = *pn;
-  if (*pn) { }
-
-  // You can throw nullptr.
-  throw nullptr;
-}
-
-// Template arguments can be nullptr.
-template <int *PI, void (*PF)(), int A::*PM, void (A::*PMF)()>
-struct T {};
-
-typedef T<nullptr, nullptr, nullptr, nullptr> NT;
-
-namespace test1 { 
-template<typename T, typename U> struct is_same {
-  static const bool value = false;
-};
-
-template<typename T> struct is_same<T, T> {
-  static const bool value = true;
-};
-
-void *g(void*);
-bool g(bool);
-
-// Test that we prefer g(void*) over g(bool).
-static_assert(is_same<decltype(g(nullptr)), void*>::value, "");
-}
-
-namespace test2 {
-  void f(int, ...) __attribute__((sentinel));
-
-  void g() {
-    // nullptr can be used as the sentinel value.
-    f(10, nullptr);
-  }
-}
-
-namespace test3 {
-  void f(const char*, ...) __attribute__((format(printf, 1, 2)));
-
-  void g() {
-    // Don't warn when using nullptr with %p.
-    f("%p", nullptr);
-  }
-}
-
-static_assert(__is_scalar(nullptr_t), "");
-static_assert(__is_pod(nullptr_t), "");
-static_assert(sizeof(nullptr_t) == sizeof(void*), "");
-
-static_assert(!(nullptr < nullptr), "");
-static_assert(!(nullptr > nullptr), "");
-static_assert(  nullptr <= nullptr, "");
-static_assert(  nullptr >= nullptr, "");
-static_assert(  nullptr == nullptr, "");
-static_assert(!(nullptr != nullptr), "");
-
-static_assert(!(0 < nullptr), "");
-static_assert(!(0 > nullptr), "");
-static_assert(  0 <= nullptr, "");
-static_assert(  0 >= nullptr, "");
-static_assert(  0 == nullptr, "");
-static_assert(!(0 != nullptr), "");
-
-static_assert(!(nullptr < 0), "");
-static_assert(!(nullptr > 0), "");
-static_assert(  nullptr <= 0, "");
-static_assert(  nullptr >= 0, "");
-static_assert(  nullptr == 0, "");
-static_assert(!(nullptr != 0), "");
-
-namespace overloading {
-  int &f1(int*);
-  float &f1(bool);
-
-  void test_f1() {
-    int &ir = (f1)(nullptr);
-  }
-
-  struct ConvertsToNullPtr {
-    operator nullptr_t() const;
-  };
-
-  void test_conversion(ConvertsToNullPtr ctn) {
-    (void)(ctn == ctn);
-    (void)(ctn != ctn);
-    (void)(ctn <= ctn);
-    (void)(ctn >= ctn);
-    (void)(ctn < ctn);
-    (void)(ctn > ctn);
-  }
-}
-
-namespace templates {
-  template<typename T, nullptr_t Value>
-  struct X { 
-    X() { ptr = Value; }
-
-    T *ptr;
-  };
-  
-  X<int, nullptr> x;
-
-
-  template<int (*fp)(int), int* p, int A::* pmd, int (A::*pmf)(int)>
-  struct X2 {};
-  
-  X2<nullptr, nullptr, nullptr, nullptr> x2;
-}
-
-namespace null_pointer_constant {
-
-// Pending implementation of core issue 903, ensure we don't allow any of the
-// C++11 constant evaluation semantics in null pointer constants.
-struct S { int n; };
-constexpr int null() { return 0; }
-void *p = S().n; // expected-error {{cannot initialize}}
-void *q = null(); // expected-error {{cannot initialize}}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr_in_arithmetic_ops.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr_in_arithmetic_ops.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/nullptr_in_arithmetic_ops.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -std=c++11 -verify %s
-
-void foo() {
-  int a;
-  bool b;
-
-  a = 0 ? nullptr + a : a + nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr - a : a - nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr / a : a / nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr * a : a * nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr >> a : a >> nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr << a : a << nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr % a : a % nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr & a : a & nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr | a : a | nullptr; // expected-error 2{{invalid operands to binary expression}}
-  a = 0 ? nullptr ^ a : a ^ nullptr; // expected-error 2{{invalid operands to binary expression}}
-
-  // Using two nullptrs should only give one error instead of two.
-  a = nullptr + nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr - nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr / nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr * nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr >> nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr << nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr % nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr & nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr | nullptr; // expected-error{{invalid operands to binary expression}}
-  a = nullptr ^ nullptr; // expected-error{{invalid operands to binary expression}}
-
-  a += nullptr; // expected-error{{invalid operands to binary expression}}
-  a -= nullptr; // expected-error{{invalid operands to binary expression}}
-  a /= nullptr; // expected-error{{invalid operands to binary expression}}
-  a *= nullptr; // expected-error{{invalid operands to binary expression}}
-  a >>= nullptr; // expected-error{{invalid operands to binary expression}}
-  a <<= nullptr; // expected-error{{invalid operands to binary expression}}
-  a %= nullptr; // expected-error{{invalid operands to binary expression}}
-  a &= nullptr; // expected-error{{invalid operands to binary expression}}
-  a |= nullptr; // expected-error{{invalid operands to binary expression}}
-  a ^= nullptr; // expected-error{{invalid operands to binary expression}}
-
-  b = a < nullptr || nullptr < a; // expected-error 2{{invalid operands to binary expression}}
-  b = a > nullptr || nullptr > a; // expected-error 2{{invalid operands to binary expression}}
-  b = a <= nullptr || nullptr <= a; // expected-error 2{{invalid operands to binary expression}}
-  b = a >= nullptr || nullptr >= a; // expected-error 2{{invalid operands to binary expression}}
-  b = a == nullptr || nullptr == a; // expected-error 2{{invalid operands to binary expression}}
-  b = a != nullptr || nullptr != a; // expected-error 2{{invalid operands to binary expression}}
-
-  b = &a < nullptr || nullptr < &a || &a > nullptr || nullptr > &a;
-  b = &a <= nullptr || nullptr <= &a || &a >= nullptr || nullptr >= &a;
-  b = &a == nullptr || nullptr == &a || &a != nullptr || nullptr != &a;
-
-  b = nullptr < nullptr || nullptr > nullptr;
-  b = nullptr <= nullptr || nullptr >= nullptr;
-  b = nullptr == nullptr || nullptr != nullptr;
-
-  b = ((nullptr)) != a;  // expected-error{{invalid operands to binary expression}}
-
-  void (^c)();
-  c = nullptr;
-  b = c == nullptr || nullptr == c || c != nullptr || nullptr != c;
-  
-  class X;
-  void (X::*d) ();
-  d = nullptr;
-  b = d == nullptr || nullptr == d || d != nullptr || nullptr != d;
-
-  extern void e();
-  b = e == nullptr || nullptr == e || e != nullptr || nullptr != e;
-
-  int f[2];
-  b = f == nullptr || nullptr == f || f != nullptr || nullptr != f;
-  b = "f" == nullptr || nullptr == "f" || "f" != nullptr || nullptr != "f";
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/offsetof-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/offsetof-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/offsetof-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -fsyntax-only -std=c++11 -verify %s -Winvalid-offsetof
-
-struct NonPOD {
-  virtual void f();
-  int m;
-};
-
-struct P {
-  NonPOD fieldThatPointsToANonPODType;
-};
-
-void f() {
-  int i = __builtin_offsetof(P, fieldThatPointsToANonPODType.m); // expected-warning{{offset of on non-standard-layout type 'P'}}
-}
-
-struct StandardLayout {
-  int x;
-  StandardLayout() {}
-};
-int o = __builtin_offsetof(StandardLayout, x); // no-warning

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/offsetof.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/offsetof.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/offsetof.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -fsyntax-only -verify %s -Winvalid-offsetof
-
-struct NonPOD {
-  virtual void f();
-  int m;
-};
-
-struct P {
-  NonPOD fieldThatPointsToANonPODType;
-};
-
-void f() {
-  int i = __builtin_offsetof(P, fieldThatPointsToANonPODType.m); // expected-warning{{offset of on non-POD type 'P'}}
-}
-
-struct Base { int x; };
-struct Derived : Base { int y; };
-int o = __builtin_offsetof(Derived, x); // expected-warning{{offset of on non-POD type}}
-
-const int o2 = sizeof(__builtin_offsetof(Derived, x));
-
-struct HasArray {
-  int array[17];
-};
-
-// Constant and non-constant offsetof expressions
-void test_ice(int i) {
-  int array0[__builtin_offsetof(HasArray, array[5])];
-  int array1[__builtin_offsetof(HasArray, array[i])];
-}
-
-// Bitfields
-struct has_bitfields {
-  int i : 7;
-  int j : 12; // expected-note{{bit-field is declared here}}
-};
-
-int test3 = __builtin_offsetof(struct has_bitfields, j); // expected-error{{cannot compute offset of bit-field 'j'}}
-
-// offsetof referring to members of a base class.
-struct Base1 { 
-  int x;
-};
-
-struct Base2 {
-  int y;
-};
-
-struct Derived2 : public Base1, public Base2 {
-  int z; 
-};
-
-int derived1[__builtin_offsetof(Derived2, x) == 0? 1 : -1];
-int derived2[__builtin_offsetof(Derived2, y)  == 4? 1 : -1];
-int derived3[__builtin_offsetof(Derived2, z)  == 8? 1 : -1];
-
-// offsetof referring to anonymous struct in base.
-// PR7769
-struct foo {
-    struct {
-        int x;
-    };
-};
-
-struct bar : public foo  {
-};
-
-int anonstruct[__builtin_offsetof(bar, x) == 0 ? 1 : -1];
-
-struct LtoRCheck {
-  int a[10];
-  int f();
-};
-int ltor = __builtin_offsetof(struct LtoRCheck, a[LtoRCheck().f]); // \
-  expected-error {{reference to non-static member function must be called}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/operator-arrow-temporary.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/operator-arrow-temporary.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/operator-arrow-temporary.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR9615
-
-struct Resource {
-  void doit();
-};
-
-template<int x> struct Lock {
-  ~Lock() { int a[x]; } // expected-error {{declared as an array with a negative size}}
-  Resource* operator->() { return 0; }
-};
-
-struct Accessor {
-  Lock<-1> operator->();
-};
-
-// Make sure we try to instantiate the destructor for Lock here
-void f() { Accessor acc; acc->doit(); } // expected-note {{requested here}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/out-of-line-def-mismatch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/out-of-line-def-mismatch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/out-of-line-def-mismatch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++98 -verify %s
-
-namespace N2 {
-  struct S1;
-
-  namespace N1 {
-    class C1 {};
-
-    struct S2 {
-      void func(S1*); // expected-note {{type of 1st parameter of member declaration does not match definition ('N2::S1 *' vs 'N2::N1::S1 *')}}
-      void func(C1&, unsigned, const S1*); // expected-note {{type of 3rd parameter of member declaration does not match definition ('const N2::S1 *' vs 'const N2::N1::S1 *')}}
-      void func(const S1*, unsigned); //expected-note {{type of 1st parameter of member declaration does not match definition ('const N2::S1 *' vs 'N2::N1::S1')}}
-      void func(unsigned, const S1*); // expected-note {{type of 1st parameter of member declaration does not match definition ('unsigned int' vs 'unsigned int *')}}
-    };
-
-    struct S1 {};
-  }
-}
-
-void N2::N1::S2::func(S1*) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}}
-void N2::N1::S2::func(C1&, unsigned, const S1*) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}}
-void N2::N1::S2::func(S1*, double) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}}
-void N2::N1::S2::func(S1, unsigned) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}}
-void N2::N1::S2::func(unsigned*, S1*) {} // expected-error {{out-of-line definition of 'func' does not match any declaration in 'N2::N1::S2'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s 
-
-namespace test0 {
-  struct A { // expected-note {{candidate function (the implicit copy assignment operator) not viable: 'this' argument has type 'const test0::A', but method is not marked const}} expected-note {{candidate function (the implicit move assignment operator) not viable: 'this' argument has type 'const test0::A', but method is not marked const}}
-    A &operator=(void*); // expected-note {{candidate function not viable: 'this' argument has type 'const test0::A', but method is not marked const}}
-  };
-
-  void test(const A &a) {
-    a = "help"; // expected-error {{no viable overloaded '='}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-call-copycon.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-call-copycon.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-call-copycon.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -Wnon-pod-varargs
-class X { }; // expected-note {{the implicit copy constructor}} \
-             // expected-note{{the implicit default constructor}}
-
-int& copycon(X x); // expected-note{{passing argument to parameter}}
-float& copycon(...);
-
-void test_copycon(X x, X const xc, X volatile xv) {
-  int& i1 = copycon(x);
-  int& i2 = copycon(xc);
-  copycon(xv); // expected-error{{no matching constructor}}
-}
-
-class A {
-public:
-  A(A&); // expected-note{{would lose const qualifier}} \
-         // expected-note{{no known conversion}}
-};
-
-class B : public A { }; // expected-note{{would lose const qualifier}} \
-// expected-note{{would lose volatile qualifier}} \
-// expected-note 2{{requires 0 arguments}}
-
-short& copycon2(A a); // expected-note{{passing argument to parameter}}
-int& copycon2(B b); // expected-note 2{{passing argument to parameter}}
-float& copycon2(...);
-
-void test_copycon2(A a, const A ac, B b, B const bc, B volatile bv) {
-  int& i1 = copycon2(b);
-  copycon2(bc); // expected-error{{no matching constructor}}
-  copycon2(bv); // expected-error{{no matching constructor}}
-  short& s1 = copycon2(a);
-  copycon2(ac); // expected-error{{no matching constructor}}
-}
-
-int& copycon3(A a); // expected-note{{passing argument to parameter 'a' here}}
-float& copycon3(...);
-
-void test_copycon3(B b, const B bc) {
-  int& i1 = copycon3(b);
-  copycon3(bc); // expected-error{{no matching constructor}}
-}
-
-class C : public B { };
-
-float& copycon4(A a);
-int& copycon4(B b);
-
-void test_copycon4(C c) {
-  int& i = copycon4(c);
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,582 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-int* f(int) { return 0; }
-float* f(float) { return 0; }
-void f();
-
-void test_f(int iv, float fv) {
-  float* fp = f(fv);
-  int* ip = f(iv);
-}
-
-int* g(int, float, int); // expected-note {{candidate function}}
-float* g(int, int, int); // expected-note {{candidate function}}
-double* g(int, float, float); // expected-note {{candidate function}}
-char* g(int, float, ...); // expected-note {{candidate function}}
-void g();
-
-void test_g(int iv, float fv) {
-  int* ip1 = g(iv, fv, 0);
-  float* fp1 = g(iv, iv, 0);
-  double* dp1 = g(iv, fv, fv);
-  char* cp1 = g(0, 0);
-  char* cp2 = g(0, 0, 0, iv, fv);
-
-  double* dp2 = g(0, fv, 1.5); // expected-error {{call to 'g' is ambiguous}}
-}
-
-double* h(double f);
-int* h(int);
-
-void test_h(float fv, unsigned char cv) {
-  double* dp = h(fv);
-  int* ip = h(cv);
-}
-
-int* i(int);
-double* i(long);
-
-void test_i(short sv, int iv, long lv, unsigned char ucv) {
-  int* ip1 = i(sv);
-  int* ip2 = i(iv);
-  int* ip3 = i(ucv);
-  double* dp1 = i(lv);
-}
-
-int* j(void*);
-double* j(bool);
-
-void test_j(int* ip) {
-  int* ip1 = j(ip);
-}
-
-int* k(char*);
-double* k(bool);
-
-void test_k() {
-  int* ip1 = k("foo"); // expected-warning{{conversion from string literal to 'char *' is deprecated}}
-  int* ip2 = k(("foo")); // expected-warning{{conversion from string literal to 'char *' is deprecated}}
-  double* dp1 = k(L"foo");
-}
-
-int* l(wchar_t*);
-double* l(bool);
-
-void test_l() {
-  int* ip1 = l(L"foo"); // expected-warning{{conversion from string literal to 'wchar_t *' is deprecated}}
-  double* dp1 = l("foo");
-}
-
-int* m(const char*);
-double* m(char*);
-
-void test_m() {
-  int* ip = m("foo");
-}
-
-int* n(char*);
-double* n(void*);
-class E;
-
-void test_n(E* e) {
-  char ca[7];
-  int* ip1 = n(ca);
-  int* ip2 = n("foo"); // expected-warning{{conversion from string literal to 'char *' is deprecated}}
-
-  float fa[7];
-  double* dp1 = n(fa);
-
-  double* dp2 = n(e);
-}
-
-enum PromotesToInt {
-  PromotesToIntValue = -1
-};
-
-enum PromotesToUnsignedInt {
-  PromotesToUnsignedIntValue = __INT_MAX__ * 2U
-};
-
-int* o(int);
-double* o(unsigned int);
-float* o(long);
-
-void test_o() {
-  int* ip1 = o(PromotesToIntValue);
-  double* dp1 = o(PromotesToUnsignedIntValue);
-}
-
-int* p(int);
-double* p(double);
-
-void test_p() {
-  int* ip = p((short)1);
-  double* dp = p(1.0f);
-}
-
-struct Bits {
-  signed short int_bitfield : 5;
-  unsigned int uint_bitfield : 8;
-};
-
-int* bitfields(int, int);
-float* bitfields(unsigned int, int);
-
-void test_bitfield(Bits bits, int x) {
-  int* ip = bitfields(bits.int_bitfield, 0);
-  float* fp = bitfields(bits.uint_bitfield, 0u);
-}
-
-int* multiparm(long, int, long); // expected-note {{candidate function}}
-float* multiparm(int, int, int); // expected-note {{candidate function}}
-double* multiparm(int, int, short); // expected-note {{candidate function}}
-
-void test_multiparm(long lv, short sv, int iv) {
-  int* ip1 = multiparm(lv, iv, lv);
-  int* ip2 = multiparm(lv, sv, lv);
-  float* fp1 = multiparm(iv, iv, iv);
-  float* fp2 = multiparm(sv, iv, iv);
-  double* dp1 = multiparm(sv, sv, sv);
-  double* dp2 = multiparm(iv, sv, sv);
-  multiparm(sv, sv, lv); // expected-error {{call to 'multiparm' is ambiguous}}
-}
-
-// Test overloading based on qualification vs. no qualification
-// conversion.
-int* quals1(int const * p);
-char* quals1(int * p);
-
-int* quals2(int const * const * pp);
-char* quals2(int * * pp);
-
-int* quals3(int const * * const * ppp);
-char* quals3(int *** ppp);
-
-void test_quals(int * p, int * * pp, int * * * ppp) {
-  char* q1 = quals1(p);
-  char* q2 = quals2(pp);
-  char* q3 = quals3(ppp);
-}
-
-// Test overloading based on qualification ranking (C++ 13.3.2)p3.
-int* quals_rank1(int const * p);
-float* quals_rank1(int const volatile *p);
-char* quals_rank1(char*);
-double* quals_rank1(const char*);
-
-int* quals_rank2(int const * const * pp);
-float* quals_rank2(int * const * pp);
-
-void quals_rank3(int const * const * const volatile * p); // expected-note{{candidate function}}
-void quals_rank3(int const * const volatile * const * p); // expected-note{{candidate function}}
-
-void quals_rank3(int const *); // expected-note{{candidate function}}
-void quals_rank3(int volatile *); // expected-note{{candidate function}}
-
-void test_quals_ranking(int * p, int volatile *pq, int * * pp, int * * * ppp) {
-  int* q1 = quals_rank1(p);
-  float* q2 = quals_rank1(pq); 
-  double* q3 = quals_rank1("string literal");
-  char a[17];
-  const char* ap = a;
-  char* q4 = quals_rank1(a);
-  double* q5 = quals_rank1(ap);
-
-  float* q6 = quals_rank2(pp);
-
-  quals_rank3(ppp); // expected-error {{call to 'quals_rank3' is ambiguous}}
-
-  quals_rank3(p); // expected-error {{call to 'quals_rank3' is ambiguous}}
-  quals_rank3(pq);
-}
-
-// Test overloading based on derived-to-base conversions
-class A { };
-class B : public A { };
-class C : public B { };
-class D : public C { };
-
-int* derived1(A*);
-char* derived1(const A*);
-float* derived1(void*);
-
-int* derived2(A*);
-float* derived2(B*);
-
-int* derived3(A*);
-float* derived3(const B*);
-char* derived3(C*);
-
-void test_derived(B* b, B const* bc, C* c, const C* cc, void* v, D* d) {
-  int* d1 = derived1(b);
-  char* d2 = derived1(bc);
-  int* d3 = derived1(c);
-  char* d4 = derived1(cc);
-  float* d5 = derived1(v);
-
-  float* d6 = derived2(b);
-  float* d7 = derived2(c);
-
-  char* d8 = derived3(d);
-}
-
-void derived4(C*); // expected-note{{candidate function not viable: cannot convert from base class pointer 'A *' to derived class pointer 'C *' for 1st argument}}
-
-void test_base(A* a) {
-  derived4(a); // expected-error{{no matching function for call to 'derived4}}
-}
-
-// Test overloading of references. 
-// (FIXME: tests binding to determine candidate sets, not overload 
-//  resolution per se).
-int* intref(int&);
-float* intref(const int&);
-
-void intref_test() {
-  float* ir1 = intref(5);
-  float* ir2 = intref(5.5); // expected-warning{{implicit conversion from 'double' to 'int' changes value from 5.5 to 5}}
-}
-
-void derived5(C&); // expected-note{{candidate function not viable: cannot bind base class object of type 'A' to derived class reference 'C &' for 1st argument}}
-
-void test_base(A& a) {
-  derived5(a); // expected-error{{no matching function for call to 'derived5}}
-}
-
-// Test reference binding vs. standard conversions.
-int& bind_vs_conv(const double&);
-float& bind_vs_conv(int);
-
-void bind_vs_conv_test()
-{
-  int& i1 = bind_vs_conv(1.0f);
-  float& f1 = bind_vs_conv((short)1);
-}
-
-// Test that cv-qualifiers get subsumed in the reference binding.
-struct X { };
-struct Y { };
-struct Z : X, Y { };
-
-int& cvqual_subsume(X&); // expected-note{{candidate function}}
-float& cvqual_subsume(const Y&); // expected-note{{candidate function}}
-
-int& cvqual_subsume2(X&); // expected-note{{candidate function}}
-float& cvqual_subsume2(volatile Y&); // expected-note{{candidate function}}
-
-void cvqual_subsume_test(Z z) {
-  cvqual_subsume(z); // expected-error{{call to 'cvqual_subsume' is ambiguous}}
-  cvqual_subsume2(z); // expected-error{{call to 'cvqual_subsume2' is ambiguous}}
-}
-
-// Test overloading with cv-qualification differences in reference
-// binding.
-int& cvqual_diff(X&);
-float& cvqual_diff(const X&);
-
-void cvqual_diff_test(X x, Z z) {
-  int& i1 = cvqual_diff(x);
-  int& i2 = cvqual_diff(z);
-}
-
-// Test overloading with derived-to-base differences in reference
-// binding.
-struct Z2 : Z { };
-
-int& db_rebind(X&);
-long& db_rebind(Y&);
-float& db_rebind(Z&);
-
-void db_rebind_test(Z2 z2) {
-  float& f1 = db_rebind(z2);
-}
-
-class string { };
-class opt : public string { };
-
-struct SR {
-  SR(const string&);
-};
-
-void f(SR) { }
-
-void g(opt o) {
-  f(o);
-}
-
-
-namespace PR5756 {
-  int &a(void*, int);
-  float &a(void*, float);
-  void b() { 
-    int &ir = a(0,0);
-    (void)ir;
-  }
-}
-
-// Tests the exact text used to note the candidates
-namespace test1 {
-  template <class T> void foo(T t, unsigned N); // expected-note {{candidate function [with T = int] not viable: no known conversion from 'const char [6]' to 'unsigned int' for 2nd argument}}
-  void foo(int n, char N); // expected-note {{candidate function not viable: no known conversion from 'const char [6]' to 'char' for 2nd argument}} 
-  void foo(int n, const char *s, int t); // expected-note {{candidate function not viable: requires 3 arguments, but 2 were provided}}
-  void foo(int n, const char *s, int t, ...); // expected-note {{candidate function not viable: requires at least 3 arguments, but 2 were provided}}
-  void foo(int n, const char *s, int t, int u = 0); // expected-note {{candidate function not viable: requires at least 3 arguments, but 2 were provided}}
-
-  // PR 11857
-  void foo(int n); // expected-note {{candidate function not viable: requires single argument 'n', but 2 arguments were provided}}
-  void foo(unsigned n = 10); // expected-note {{candidate function not viable: allows at most single argument 'n', but 2 arguments were provided}}
-  void bar(int n, int u = 0); // expected-note {{candidate function not viable: requires at least argument 'n', but no arguments were provided}}
-  void baz(int n = 0, int u = 0); // expected-note {{candidate function not viable: requires at most 2 arguments, but 3 were provided}}
-
-  void test() {
-    foo(4, "hello"); //expected-error {{no matching function for call to 'foo'}}
-    bar(); //expected-error {{no matching function for call to 'bar'}}
-    baz(3, 4, 5); // expected-error {{no matching function for call to 'baz'}}
-  }
-}
-
-// PR 6014
-namespace test2 {
-  struct QFixed {
-    QFixed(int i);
-    QFixed(long i);
-  };
-
-  bool operator==(const QFixed &f, int i);
-
-  class qrgb666 {
-    inline operator unsigned int () const;
-
-    inline bool operator==(const qrgb666 &v) const;
-    inline bool operator!=(const qrgb666 &v) const { return !(*this == v); }
-  };
-}
-
-// PR 6117
-namespace test3 {
-  struct Base {};
-  struct Incomplete;
-
-  void foo(Base *); // expected-note 2 {{cannot convert argument of incomplete type}}
-  void foo(Base &); // expected-note 2 {{cannot convert argument of incomplete type}}
-
-  void test(Incomplete *P) {
-    foo(P); // expected-error {{no matching function for call to 'foo'}}
-    foo(*P); // expected-error {{no matching function for call to 'foo'}}
-  }
-}
-
-namespace DerivedToBaseVsVoid {
-  struct A { };
-  struct B : A { };
-  
-  float &f(void *);
-  int &f(const A*);
-  
-  void g(B *b) {
-    int &ir = f(b);
-  }
-}
-
-// PR 6398 + PR 6421
-namespace test4 {
-  class A;
-  class B {
-    static void foo(); // expected-note {{not viable}}
-    static void foo(int*); // expected-note {{not viable}}
-    static void foo(long*); // expected-note {{not viable}}
-
-    void bar(A *a) { 
-      foo(a); // expected-error {{no matching function for call}}
-    }
-  };
-}
-
-namespace DerivedToBase {
-  struct A { };
-  struct B : A { };
-  struct C : B { };
-  
-  int &f0(const A&);
-  float &f0(B);
-  
-  void g() {
-    float &fr = f0(C());
-  }
-}
-
-namespace PR6483 {
-  struct X0 {
-    operator const unsigned int & () const;
-  };
-
-  struct X1 {
-    operator unsigned int & () const;
-  };
-
-  void f0(const bool &);
-  void f1(bool &); // expected-note 2{{not viable}}
-
-  void g(X0 x0, X1 x1) {
-    f0(x0);
-    f1(x0); // expected-error{{no matching function for call}}
-    f0(x1);
-    f1(x1); // expected-error{{no matching function for call}}
-  }  
-}
-
-namespace PR6078 {
-  struct A {
-    A(short); // expected-note{{candidate constructor}}
-    A(long); // expected-note{{candidate constructor}}
-  };
-  struct S {
-    typedef void ft(A);
-    operator ft*();
-  };
-
-  void f() {
-    S()(0); // expected-error{{conversion from 'int' to 'PR6078::A' is ambiguous}}
-  }
-}
-
-namespace PR6177 {
-  struct String { String(char const*); };
-
-  void f(bool const volatile&);
-  int &f(String);
-
-  void g() { int &r = f(""); }
-}
-
-namespace PR7095 {
-  struct X { };
-
-  struct Y {
-    operator const X*();
-
-  private:
-    operator X*();
-  };
-
-  void f(const X *);
-  void g(Y y) { f(y); }
-}
-
-namespace PR7224 {
-  class A {};
-  class B : public A {};
-
-  int &foo(A *const d);
-  float &foo(const A *const d);
-
-  void bar()
-  {
-    B *const d = 0;
-    B const *const d2 = 0;
-    int &ir = foo(d);
-    float &fr = foo(d2);
-  }
-}
-
-namespace NontrivialSubsequence {
-  struct X0;
-
-  class A {
-    operator X0 *();
-  public:
-    operator const X0 *();
-  };
- 
-  A a;
-  void foo( void const * );
-
-  void g() {
-    foo(a);
-  }
-}
-
-// rdar://rdar8499524
-namespace rdar8499524 {
-  struct W {};
-  struct S {
-      S(...);
-  };
-
-  void g(const S&);
-  void f() {
-    g(W());
-  }
-}
-
-namespace rdar9173984 {
-  template <typename T, unsigned long N> int &f(const T (&)[N]);
-  template <typename T> float &f(const T *);
-
-  void test() {
-    int arr[2] = {0, 0};
-    int *arrp = arr;
-    int &ir = f(arr);
-    float &fr = f(arrp);
-  }
-}
-
-namespace PR9507 {
-  void f(int * const&); // expected-note{{candidate function}}
-  void f(int const(&)[1]); // expected-note{{candidate function}}
- 
-  int main() {
-    int n[1];
-    f(n); // expected-error{{call to 'f' is ambiguous}}
-  }
-}
-
-namespace rdar9803316 {
-  void foo(float);
-  int &foo(int);
-
-  void bar() {
-    int &ir = (&foo)(0);
-  }
-}
-
-namespace IncompleteArg {
-  // Ensure that overload resolution attempts to complete argument types when
-  // performing ADL.
-  template<typename T> struct S {
-    friend int f(const S&);
-  };
-  extern S<int> s;
-  int k = f(s);
-
-  template<typename T> struct Op {
-    friend bool operator==(const Op &, const Op &);
-  };
-  extern Op<char> op;
-  bool b = op == op;
-
-  // ... and not in other cases! Nothing here requires U<int()> to be complete.
-  // (Note that instantiating U<int()> will fail.)
-  template<typename T> struct U {
-    T t;
-  };
-  struct Consumer {
-    template<typename T>
-    int operator()(const U<T> &);
-  };
-  template<typename T> U<T> &make();
-  Consumer c;
-  int n = sizeof(c(make<int()>()));
-}
-
-namespace PR12142 {
-  void fun(int (*x)[10]); // expected-note{{candidate function not viable: 1st argument ('const int (*)[10]') would lose const qualifier}}
-  void g() { fun((const int(*)[10])0); } // expected-error{{no matching function for call to 'fun'}}
-}
-
-// DR1152: Take 'volatile' into account when handling reference bindings in
-//         overload resolution.
-namespace PR12931 {
-  void f(const int &, ...);
-  void f(const volatile int &, int);
-  void g() { f(0, 0); }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-void f();
-void f(int);
-void f(int, float); 
-void f(int, int);
-void f(int, ...);
-
-typedef float Float;
-void f(int, Float); // expected-note {{previous declaration is here}}
-
-int f(int, Float); // expected-error {{functions that differ only in their return type cannot be overloaded}}
-
-void g(void); // expected-note {{previous declaration is here}}
-int g(); // expected-error {{functions that differ only in their return type cannot be overloaded}}
-
-typedef int INT;
-
-class X {
-  void f();
-  void f(int); // expected-note {{previous declaration is here}}
-  void f() const;
-
-  void f(INT); // expected-error{{cannot be redeclared}}
-
-  void g(int); // expected-note {{previous declaration is here}}
-  void g(int, float); // expected-note {{previous declaration is here}}
-  int g(int, Float); // expected-error {{functions that differ only in their return type cannot be overloaded}}
-
-  static void g(float);
-  static void g(int); // expected-error {{static and non-static member functions with the same parameter types cannot be overloaded}}
-};
-
-int main() {} // expected-note {{previous definition is here}}
-int main(int,char**) {} // expected-error {{conflicting types for 'main'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-member-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-member-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-member-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,115 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct X {
-  int& f(int) const; // expected-note 2 {{candidate function}}
-  float& f(int); // expected-note 2 {{candidate function}}
-
-  void test_f(int x) const {
-    int& i = f(x);
-  }
-
-  void test_f2(int x) {
-    float& f2 = f(x);
-  }
-
-  int& g(int) const; // expected-note 2 {{candidate function}}
-  float& g(int); // expected-note 2 {{candidate function}}
-  static double& g(double); // expected-note 2 {{candidate function}}
-
-  void h(int);
-
-  void test_member() {
-    float& f1 = f(0);
-    float& f2 = g(0);
-    double& d1 = g(0.0);
-  }
-
-  void test_member_const() const {
-    int &i1 = f(0);
-    int &i2 = g(0);
-    double& d1 = g(0.0);
-  }
-
-  static void test_member_static() {
-    double& d1 = g(0.0);
-    g(0); // expected-error{{call to 'g' is ambiguous}}
-  }
-};
-
-void test(X x, const X xc, X* xp, const X* xcp, volatile X xv, volatile X* xvp) {
-  int& i1 = xc.f(0);
-  int& i2 = xcp->f(0);
-  float& f1 = x.f(0);
-  float& f2 = xp->f(0);
-  xv.f(0); // expected-error{{no matching member function for call to 'f'}}
-  xvp->f(0); // expected-error{{no matching member function for call to 'f'}}
-
-  int& i3 = xc.g(0);
-  int& i4 = xcp->g(0);
-  float& f3 = x.g(0);
-  float& f4 = xp->g(0);
-  double& d1 = xp->g(0.0);
-  double& d2 = X::g(0.0);
-  X::g(0); // expected-error{{call to 'g' is ambiguous}}
-  
-  X::h(0); // expected-error{{call to non-static member function without an object argument}}
-}
-
-struct X1 {
-  int& member();
-  float& member() const;
-};
-
-struct X2 : X1 { };
-
-void test_X2(X2 *x2p, const X2 *cx2p) {
-  int &ir = x2p->member();
-  float &fr = cx2p->member();
-}
-
-// Tests the exact text used to note the candidates
-namespace test1 {
-  class A {
-    template <class T> void foo(T t, unsigned N); // expected-note {{candidate function [with T = int] not viable: no known conversion from 'const char [6]' to 'unsigned int' for 2nd argument}}
-    void foo(int n, char N); // expected-note {{candidate function not viable: no known conversion from 'const char [6]' to 'char' for 2nd argument}} 
-    void foo(int n, const char *s, int t); // expected-note {{candidate function not viable: requires 3 arguments, but 2 were provided}}
-    void foo(int n, const char *s, int t, ...); // expected-note {{candidate function not viable: requires at least 3 arguments, but 2 were provided}}
-    void foo(int n, const char *s, int t, int u = 0); // expected-note {{candidate function not viable: requires at least 3 arguments, but 2 were provided}}
-
-    void bar(double d); //expected-note {{candidate function not viable: 'this' argument has type 'const test1::A', but method is not marked const}}
-    void bar(int i); //expected-note {{candidate function not viable: 'this' argument has type 'const test1::A', but method is not marked const}}
-
-    void baz(A &d); // expected-note {{candidate function not viable: 1st argument ('const test1::A') would lose const qualifier}}
-    void baz(int i); // expected-note {{candidate function not viable: no known conversion from 'const test1::A' to 'int' for 1st argument}} 
-
-    // PR 11857
-    void foo(int n); // expected-note {{candidate function not viable: requires single argument 'n', but 2 arguments were provided}}
-    void foo(unsigned n = 10); // expected-note {{candidate function not viable: allows at most single argument 'n', but 2 arguments were provided}}
-    void rab(double n, int u = 0); // expected-note {{candidate function not viable: requires at least argument 'n', but no arguments were provided}}
-    void rab(int n, int u = 0); // expected-note {{candidate function not viable: requires at least argument 'n', but no arguments were provided}}
-    void zab(double n = 0.0, int u = 0); // expected-note {{candidate function not viable: requires at most 2 arguments, but 3 were provided}}
-    void zab(int n = 0, int u = 0); // expected-note {{candidate function not viable: requires at most 2 arguments, but 3 were provided}}
-  };
-
-  void test() {
-    A a;
-    a.foo(4, "hello"); //expected-error {{no matching member function for call to 'foo'}}
-
-    const A b = A();
-    b.bar(0); //expected-error {{no matching member function for call to 'bar'}}
-
-    a.baz(b); //expected-error {{no matching member function for call to 'baz'}}
-
-    a.rab(); //expected-error {{no matching member function for call to 'rab'}}
-    a.zab(3, 4, 5); //expected-error {{no matching member function for call to 'zab'}}
-  }
-}
-
-namespace b7398190 {
-  struct S {
-    int f(); // expected-note {{'this' argument has type 'const b7398190::S', but method is not marked const}}
-    void f(int); // expected-note {{requires 1 argument, but 0 were provided}}
-  };
-  const S *p;
-  int k = p->f(); // expected-error {{no matching member function for call to 'f'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-value-dep-arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-value-dep-arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overload-value-dep-arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-class C {
-  C(void*);
-};
-
-int f(const C&);
-int f(unsigned long);
-
-template<typename T> int f(const T* t) {
-  return f(reinterpret_cast<unsigned long>(t));
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-builtin-operators-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-builtin-operators-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-builtin-operators-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fshow-overloads=best -std=c++11 -verify %s 
-// expected-no-diagnostics
-
-template <class T>
-struct X
-{
-   operator T() const {return T();}
-};
-
-void test_char16t(X<char16_t> x) {
-   bool b = x == char16_t();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-builtin-operators.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-builtin-operators.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-builtin-operators.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,271 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fshow-overloads=best -verify -triple x86_64-linux-gnu %s
-
-struct yes;
-struct no;
-
-struct Short {
-  operator short();
-};
-
-struct Long {
-  operator long();
-};
-
-enum E1 { };
-struct Enum1 {
-  operator E1();
-};
-
-enum E2 { };
-struct Enum2 {
-  operator E2();
-};
-
-
-struct X { 
-  void f();
-};
-
-typedef void (X::*pmf)();
-struct Xpmf {
-  operator pmf();
-};
-
-yes& islong(long);
-yes& islong(unsigned long); // FIXME: shouldn't be needed
-no& islong(int);
-
-void f(Short s, Long l, Enum1 e1, Enum2 e2, Xpmf pmf) {
-  // C++ [over.built]p8
-  int i1 = +e1;
-  int i2 = -e2;
-
-  // C++  [over.built]p10:
-  int i3 = ~s;
-  bool b1 = !s;
-
-  // C++ [over.built]p12
-  (void)static_cast<yes&>(islong(s + l));
-  (void)static_cast<no&>(islong(s + s));
-
-  // C++ [over.built]p16
-  (void)(pmf == &X::f);
-  (void)(pmf == 0);
-  
-  // C++ [over.built]p17
-  (void)static_cast<yes&>(islong(s % l));
-  (void)static_cast<yes&>(islong(l << s));
-  (void)static_cast<no&>(islong(s << l));
-  (void)static_cast<yes&>(islong(e1 % l));
-  // FIXME: should pass (void)static_cast<no&>(islong(e1 % e2));
-}
-
-struct ShortRef { // expected-note{{candidate function (the implicit copy assignment operator)}}
-  operator short&();
-};
-
-struct LongRef {
-  operator volatile long&();
-};
-
-struct XpmfRef { // expected-note{{candidate function (the implicit copy assignment operator)}}
-  operator pmf&();
-};
-
-struct E2Ref {
-  operator E2&();
-};
-
-void g(ShortRef sr, LongRef lr, E2Ref e2_ref, XpmfRef pmf_ref) {
-  // C++ [over.built]p3
-  short s1 = sr++;
-
-  // C++ [over.built]p3
-  long l1 = lr--;
-
-  // C++ [over.built]p18
-  short& sr1 = (sr *= lr);
-  volatile long& lr1 = (lr *= sr);
-
-  // C++ [over.built]p20:
-  E2 e2r2;
-  e2r2 = e2_ref;
-  
-  pmf &pmr = (pmf_ref = &X::f); // expected-error{{no viable overloaded '='}}
-  pmf pmr2;
-  pmr2 = pmf_ref;
-               
-  // C++ [over.built]p22
-  short& sr2 = (sr %= lr);
-  volatile long& lr2 = (lr <<= sr);
-
-  bool b1 = (sr && lr) || (sr || lr);
-}
-
-struct VolatileIntPtr {
-  operator int volatile *();
-};
-
-struct ConstIntPtr {
-  operator int const *();
-};
-
-struct VolatileIntPtrRef {
-  operator int volatile *&();
-};
-
-struct ConstIntPtrRef {
-  operator int const *&();
-};
-
-void test_with_ptrs(VolatileIntPtr vip, ConstIntPtr cip, ShortRef sr,
-                    VolatileIntPtrRef vipr, ConstIntPtrRef cipr) {
-  const int& cir1 = cip[sr];
-  const int& cir2 = sr[cip];
-  volatile int& vir1 = vip[sr];
-  volatile int& vir2 = sr[vip];
-  bool b1 = (vip == cip);
-  long p1 = vip - cip;
-
-  // C++ [over.built]p5:
-  int volatile *vip1 = vipr++;
-  int const *cip1 = cipr++;
-  int volatile *&vipr1 = ++vipr;
-  int const *&cipr1 = --cipr;
-
-  // C++ [over.built]p6:
-  int volatile &ivr = *vip;
-
-  // C++ [over.built]p8:
-  int volatile *vip2 = +vip;
-  int i1 = +sr;
-  int i2 = -sr;
-
-  // C++ [over.built]p13:
-  int volatile &ivr2 = vip[17];
-  int const &icr2 = 17[cip];
-}
-
-// C++ [over.match.open]p4
-
-void test_assign_restrictions(ShortRef& sr) {
-  sr = (short)0; // expected-error{{no viable overloaded '='}}
-}
-
-struct Base { };
-struct Derived1 : Base { };
-struct Derived2 : Base { };
-
-template<typename T>
-struct ConvertibleToPtrOf {
-  operator T*();
-};
-
-bool test_with_base_ptrs(ConvertibleToPtrOf<Derived1> d1, 
-                         ConvertibleToPtrOf<Derived2> d2) {
-  return d1 == d2; // expected-error{{invalid operands}}
-}
-
-// DR425
-struct A {
-  template< typename T > operator T() const;
-};
-
-void test_dr425(A a) {
-  // FIXME: lots of candidates here!
-  (void)(1.0f * a); // expected-error{{ambiguous}} \
-                    // expected-note 4{{candidate}} \
-                    // expected-note {{remaining 117 candidates omitted; pass -fshow-overloads=all to show them}}
-}
-
-// pr5432
-enum e {X};
-
-const int a[][2] = {{1}};
-
-int test_pr5432() {
-  return a[X][X];
-}
-
-void f() {
-  (void)__extension__(A());
-}
-
-namespace PR7319 {
-  typedef enum { Enum1, Enum2, Enum3 } MyEnum;
-
-  template<typename X> bool operator>(const X &inX1, const X &inX2);
-
-  void f() {
-    MyEnum e1, e2;
-    if (e1 > e2) {}
-  }
-}
-
-namespace PR8477 {
-  struct Foo {
-    operator bool();
-    operator const char *();
-  };
-
-  bool doit() {
-    Foo foo;
-    long long zero = 0;
-    (void)(foo + zero);
-    (void)(foo - zero);
-    (void)(zero + foo);
-    (void)(zero[foo]);
-    (void)(foo - foo); // expected-error{{use of overloaded operator '-' is ambiguous}} \
-    // expected-note 4{{built-in candidate operator-}} \
-    // expected-note{{candidates omitted}}
-    return foo[zero] == zero;
-  }
-}
-
-namespace PR7851 {
-  struct X {
-    operator const void *() const;
-    operator void *();
-
-    operator const unsigned *() const;
-    operator unsigned *();
-  };
-
-  void f() {
-    X x;
-    x[0] = 1;
-    *x = 0;
-    (void)(x - x);
-  }
-}
-
-namespace PR12854 {
-  enum { size = 1 };
-  void plus_equals() {
-    int* __restrict py;
-    py += size;
-  }
-
-  struct RestrictInt {
-    operator int* __restrict &();
-  };
-
-  void user_conversions(RestrictInt ri) {
-    ++ri;
-    --ri;
-    ri++;
-    ri--;
-  }
-}
-
-namespace PR12964 {
-  struct X { operator  __int128() const; } x;
-  bool a = x == __int128(0);
-  bool b = x == 0;
-
-  struct Y { operator unsigned __int128() const; } y;
-  bool c = y == __int128(0);
-  bool d = y == 0;
-
-  bool e = x == y;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-name.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-name.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-name.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int ovl(int); // expected-note 3{{possible target for call}}
-float ovl(float); // expected-note 3{{possible target for call}}
-
-template<typename T> T ovl(T); // expected-note 3{{possible target for call}}
-
-void test(bool b) {
-  (void)((void)0, ovl); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}
-  // PR7863
-  (void)(b? ovl : &ovl); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}
-  (void)(b? ovl<float> : &ovl); // expected-error{{reference to overloaded function could not be resolved; did you mean to call it?}}
-  (void)(b? ovl<float> : ovl<float>);
-}
-
-namespace rdar9623945 {
-  void f(...) {
-  }
-  
-  class X {
-  public:
-    const char* text(void);
-    void g(void) {
-      f(text());
-      f(text); // expected-error {{reference to non-static member function must be called; did you mean to call it with no arguments?}}
-      f(text());
-      f(text); // expected-error {{reference to non-static member function must be called; did you mean to call it with no arguments?}}
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-operator-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-operator-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-operator-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-struct X { 
-  X();
-  X(int); 
-};
-
-X operator+(X, X);
-X operator-(X, X) { X x; return x; }
-
-struct Y {
-  Y operator-() const;
-  void operator()(int x = 17) const;
-  int operator[](int);
-
-  static int operator+(Y, Y); // expected-error{{overloaded 'operator+' cannot be a static member function}}
-};
-
-
-void f(X x) {
-  x = operator+(x, x);
-}
-
-X operator+(int, float); // expected-error{{overloaded 'operator+' must have at least one parameter of class or enumeration type}}
-
-X operator*(X, X = 5); // expected-error{{parameter of overloaded 'operator*' cannot have a default argument}}
-
-X operator/(X, X, ...); // expected-error{{overloaded 'operator/' cannot be variadic}}
-
-X operator%(Y); // expected-error{{overloaded 'operator%' must be a binary operator (has 1 parameter)}}
-
-void operator()(Y&, int, int); // expected-error{{overloaded 'operator()' must be a non-static member function}}
-
-typedef int INT;
-typedef float FLOAT;
-Y& operator++(Y&);
-Y operator++(Y&, INT);
-X operator++(X&, FLOAT); // expected-error{{parameter of overloaded post-increment operator must have type 'int' (not 'FLOAT' (aka 'float'))}}
-
-int operator+; // expected-error{{'operator+' cannot be the name of a variable or data member}}
-
-namespace PR6238 {
-  static struct {
-    void operator()();
-  } plus;
-}
-
-struct PR10839 {
-  operator int; // expected-error{{'operator int' cannot be the name of a variable or data member}}
-  int operator+; // expected-error{{'operator+' cannot be the name of a variable or data member}}
-};
-
-namespace PR14120 {
-  struct A {
-    static void operator()(int& i) { ++i; } // expected-error{{overloaded 'operator()' cannot be a static member function}}
-  };
-  void f() {
-    int i = 0;
-    A()(i);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/overloaded-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,442 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-class X { };
-
-X operator+(X, X);
-
-void f(X x) {
-  x = x + x;
-}
-
-struct Y;
-struct Z;
-
-struct Y {
-  Y(const Z&);
-};
-
-struct Z {
-  Z(const Y&);
-};
-
-Y operator+(Y, Y);
-bool operator-(Y, Y); // expected-note{{candidate function}}
-bool operator-(Z, Z); // expected-note{{candidate function}}
-
-void g(Y y, Z z) {
-  y = y + z;
-  bool b = y - z; // expected-error{{use of overloaded operator '-' is ambiguous}}
-}
-
-struct A {
-  bool operator==(Z&); // expected-note 2{{candidate function}}
-};
-
-A make_A();
-
-bool operator==(A&, Z&); // expected-note 3{{candidate function}}
-
-void h(A a, const A ac, Z z) {
-  make_A() == z; // expected-warning{{equality comparison result unused}}
-  a == z; // expected-error{{use of overloaded operator '==' is ambiguous}}
-  ac == z; // expected-error{{invalid operands to binary expression ('const A' and 'Z')}}
-}
-
-struct B {
-  bool operator==(const B&) const;
-
-  void test(Z z) {
-    make_A() == z; // expected-warning{{equality comparison result unused}}
-  }
-};
-
-// we shouldn't see warnings about self-comparison,
-// this is a member function, we dunno what it'll do
-bool i(B b)
-{
-  return b == b;
-}
-
-enum Enum1 { };
-enum Enum2 { };
-
-struct E1 {
-  E1(Enum1) { }
-};
-
-struct E2 {
-  E2(Enum2);
-};
-
-// C++ [over.match.oper]p3 - enum restriction.
-float& operator==(E1, E2);  // expected-note{{candidate function}}
-
-void enum_test(Enum1 enum1, Enum2 enum2, E1 e1, E2 e2, Enum1 next_enum1) {
-  float &f1 = (e1 == e2);
-  float &f2 = (enum1 == e2); 
-  float &f3 = (e1 == enum2); 
-  float &f4 = (enum1 == next_enum1);  // expected-error{{non-const lvalue reference to type 'float' cannot bind to a temporary of type 'bool'}}
-}
-
-// PR5244 - Argument-dependent lookup would include the two operators below,
-// which would break later assumptions and lead to a crash.
-class pr5244_foo
-{
-  pr5244_foo(int);
-  pr5244_foo(char);
-};
-
-bool operator==(const pr5244_foo& s1, const pr5244_foo& s2); // expected-note{{candidate function}}
-bool operator==(char c, const pr5244_foo& s); // expected-note{{candidate function}}
-
-enum pr5244_bar
-{
-    pr5244_BAR
-};
-
-class pr5244_baz
-{
-public:
-    pr5244_bar quux;
-};
-
-void pr5244_barbaz()
-{
-  pr5244_baz quuux;
-  (void)(pr5244_BAR == quuux.quux);
-}
-
-
-
-struct PostInc {
-  PostInc operator++(int);
-  PostInc& operator++();
-};
-
-struct PostDec {
-  PostDec operator--(int);
-  PostDec& operator--();
-};
-
-void incdec_test(PostInc pi, PostDec pd) {
-  const PostInc& pi1 = pi++;
-  const PostDec& pd1 = pd--;
-  PostInc &pi2 = ++pi;
-  PostDec &pd2 = --pd;
-}
-
-struct SmartPtr {
-  int& operator*();
-  long& operator*() const volatile;
-};
-
-void test_smartptr(SmartPtr ptr, const SmartPtr cptr, 
-                   const volatile SmartPtr cvptr) {
-  int &ir = *ptr;
-  long &lr = *cptr;
-  long &lr2 = *cvptr;
-}
-
-
-struct ArrayLike {
-  int& operator[](int);
-};
-
-void test_arraylike(ArrayLike a) {
-  int& ir = a[17];
-}
-
-struct SmartRef {
-  int* operator&();
-};
-
-void test_smartref(SmartRef r) {
-  int* ip = &r;
-}
-
-bool& operator,(X, Y);
-
-void test_comma(X x, Y y) {
-  bool& b1 = (x, y);
-  X& xr = (x, x); // expected-warning {{expression result unused}}
-}
-
-struct Callable {
-  int& operator()(int, double = 2.71828); // expected-note{{candidate function}}
-  float& operator()(int, double, long, ...); // expected-note{{candidate function}}
-
-  double& operator()(float); // expected-note{{candidate function}}
-};
-
-struct Callable2 {
-  int& operator()(int i = 0);
-  double& operator()(...) const;
-};
-
-struct DerivesCallable : public Callable {
-};
-
-void test_callable(Callable c, Callable2 c2, const Callable2& c2c,
-                   DerivesCallable dc) {
-  int &ir = c(1);
-  float &fr = c(1, 3.14159, 17, 42);
-
-  c(); // expected-error{{no matching function for call to object of type 'Callable'}}
-
-  double &dr = c(1.0f);
-
-  int &ir2 = c2();
-  int &ir3 = c2(1);
-  double &fr2 = c2c();
-  
-  int &ir4 = dc(17);
-  double &fr3 = dc(3.14159f);
-}
-
-typedef float FLOAT;
-typedef int& INTREF;
-typedef INTREF Func1(FLOAT, double);
-typedef float& Func2(int, double);
-
-struct ConvertToFunc {
-  operator Func1*(); // expected-note 2{{conversion candidate of type 'INTREF (*)(FLOAT, double)'}}
-  operator Func2&(); // expected-note 2{{conversion candidate of type 'float &(&)(int, double)'}}
-  void operator()();
-};
-
-struct ConvertToFuncDerived : ConvertToFunc { };
-
-void test_funcptr_call(ConvertToFunc ctf, ConvertToFuncDerived ctfd) {
-  int &i1 = ctf(1.0f, 2.0);
-  float &f1 = ctf((short int)1, 1.0f);
-  ctf((long int)17, 2.0); // expected-error{{call to object of type 'ConvertToFunc' is ambiguous}}
-  ctf();
-
-  int &i2 = ctfd(1.0f, 2.0);
-  float &f2 = ctfd((short int)1, 1.0f);
-  ctfd((long int)17, 2.0); // expected-error{{call to object of type 'ConvertToFuncDerived' is ambiguous}}
-  ctfd();
-}
-
-struct HasMember {
-  int m;
-};
-
-struct Arrow1 {
-  HasMember* operator->();
-};
-
-struct Arrow2 {
-  Arrow1 operator->(); // expected-note{{candidate function}}
-};
-
-void test_arrow(Arrow1 a1, Arrow2 a2, const Arrow2 a3) {
-  int &i1 = a1->m;
-  int &i2 = a2->m;
-  a3->m; // expected-error{{no viable overloaded 'operator->'}}
-}
-
-struct CopyConBase {
-};
-
-struct CopyCon : public CopyConBase {
-  CopyCon(const CopyConBase &Base);
-
-  CopyCon(const CopyConBase *Base) {
-    *this = *Base;
-  }
-};
-
-namespace N {
-  struct X { };
-}
-
-namespace M {
-  N::X operator+(N::X, N::X);
-}
-
-namespace M {
-  void test_X(N::X x) {
-    (void)(x + x);
-  }
-}
-
-struct AA { bool operator!=(AA&); };
-struct BB : AA {};
-bool x(BB y, BB z) { return y != z; }
-
-
-struct AX { 
-  AX& operator ->();	 // expected-note {{declared here}}
-  int b;
-}; 
-
-void m() {
-  AX a; 
-  a->b = 0; // expected-error {{circular pointer delegation detected}}
-}
-
-struct CircA {
-  struct CircB& operator->(); // expected-note {{declared here}}
-  int val;
-};
-struct CircB {
-  struct CircC& operator->(); // expected-note {{declared here}}
-};
-struct CircC {
-  struct CircA& operator->(); // expected-note {{declared here}}
-};
-
-void circ() {
-  CircA a;
-  a->val = 0; // expected-error {{circular pointer delegation detected}}
-}
-
-// PR5360: Arrays should lead to built-in candidates for subscript.
-typedef enum {
-  LastReg = 23,
-} Register;
-class RegAlloc {
-  int getPriority(Register r) {
-    return usepri[r];
-  }
-  int usepri[LastReg + 1];
-};
-
-// PR5546: Don't generate incorrect and ambiguous overloads for multi-level
-// arrays.
-namespace pr5546
-{
-  enum { X };
-  extern const char *const sMoveCommands[][2][2];
-  const char* a() { return sMoveCommands[X][0][0]; }
-  const char* b() { return (*(sMoveCommands+X))[0][0]; }
-}
-
-// PR5512 and its discussion
-namespace pr5512 {
-  struct Y {
-    operator short();
-    operator float();
-  };
-  void g_test(Y y) {
-    short s = 0;
-    // DR507, this should be ambiguous, but we special-case assignment
-    s = y;
-    // Note: DR507, this is ambiguous as specified
-    //s += y;
-  }
-
-  struct S {};
-  void operator +=(int&, S);
-  void f(S s) {
-    int i = 0;
-    i += s;
-  }
-
-  struct A {operator int();};
-  int a;
-  void b(A x) {
-    a += x;
-  }
-}
-
-// PR5900
-namespace pr5900 {
-  struct NotAnArray {};
-  void test0() {
-    NotAnArray x;
-    x[0] = 0; // expected-error {{does not provide a subscript operator}}
-  }
-
-  struct NonConstArray {
-    int operator[](unsigned); // expected-note {{candidate}}
-  };
-  int test1() {
-    const NonConstArray x = NonConstArray();
-    return x[0]; // expected-error {{no viable overloaded operator[] for type}}
-  }
-
-  // Not really part of this PR, but implemented at the same time.
-  struct NotAFunction {};
-  void test2() {
-    NotAFunction x;
-    x(); // expected-error {{does not provide a call operator}}
-  }
-}
-
-// Operator lookup through using declarations.
-namespace N {
-  struct X2 { };
-}
-
-namespace N2 {
-  namespace M {
-    namespace Inner {
-      template<typename T>
-      N::X2 &operator<<(N::X2&, const T&);
-    }
-    using Inner::operator<<;
-  }
-}
-
-void test_lookup_through_using() {
-  using namespace N2::M;
-  N::X2 x;
-  x << 17;
-}
-
-namespace rdar9136502 {
-  struct X {
-    int i();
-    int i(int);
-  };
-
-  struct Y {
-    Y &operator<<(int);
-  };
-
-  void f(X x, Y y) {
-    y << x.i; // expected-error{{reference to non-static member function must be called}}
-  }
-}
-
-namespace rdar9222009 {
-class StringRef {
-  inline bool operator==(StringRef LHS, StringRef RHS) { // expected-error{{overloaded 'operator==' must be a binary operator (has 3 parameters)}}
-    return !(LHS == RHS); // expected-error{{invalid operands to binary expression ('rdar9222009::StringRef' and 'rdar9222009::StringRef')}}
-  }
-};
-
-}
-
-namespace PR11784 {
-  struct A { A& operator=(void (*x)()); };
-  void f();
-  void f(int);
-  void g() { A x; x = f; }
-}
-
-namespace test10 {
-  struct A {
-    void operator[](float (*fn)(int)); // expected-note 2 {{not viable: no overload of 'bar' matching 'float (*)(int)'}}
-  };
-
-  float foo(int);
-  float foo(float);
-
-  template <class T> T bar(T);
-  template <class T, class U> T bar(U);
-
-  void test(A &a) {
-    a[&foo];
-    a[foo];
-
-    a[&bar<int>]; // expected-error {{no viable overloaded operator[]}}
-    a[bar<int>]; // expected-error {{no viable overloaded operator[]}}
-
-    // If these fail, it's because we're not letting the overload
-    // resolution for operator| resolve the overload of 'bar'.
-    a[&bar<float>];
-    a[bar<float>];
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/pascal-strings.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/pascal-strings.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/pascal-strings.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -fpascal-strings
-const wchar_t *pascalString = L"\pThis is a Pascal string";
-
-unsigned char a[3] = "\pa";
-unsigned char b[3] = "\pab";
-unsigned char c[3] = "\pabc"; // expected-error {{initializer-string for char array is too long}}
-unsigned char d[3] = ("\pab");
-unsigned char e[3] = ("\pabc"); // expected-error {{initializer-string for char array is too long}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/pr13353.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/pr13353.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/pr13353.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only  %s
-struct foo {
-  virtual void bar() ;
-};
-template<typename T>
-class zed : public foo {
-};
-template<typename T>
-class bah : public zed<T> {
-  void f() {
-     const_cast<foo *>(this->g())->bar();
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/pr13394-crash-on-invalid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/pr13394-crash-on-invalid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/pr13394-crash-on-invalid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// Don't crash (PR13394).
-
-namespace stretch_v1 {
-  struct closure_t {
-    const stretch_v1::ops_t* d_methods; // expected-error {{no type named 'ops_t' in namespace 'stretch_v1'}}
-  };
-}
-namespace gatekeeper_v1 {
-  namespace gatekeeper_factory_v1 {
-    struct closure_t { // expected-note {{'closure_t' declared here}}
-      gatekeeper_v1::closure_t* create(); // expected-error {{no type named 'closure_t' in namespace 'gatekeeper_v1'; did you mean 'closure_t'?}}
-    };
-  }
-  gatekeeper_v1::closure_t *x; // expected-error {{no type named 'closure_t' in namespace 'gatekeeper_v1}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-pack.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-pack.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-pack.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace rdar8745206 {
-
-struct Base {
-  int i;
-};
-
-#pragma pack(push, 1)
-struct Sub : public Base {
-  char c;
-};
-#pragma pack(pop)
-
-int check[sizeof(Sub) == 5 ? 1 : -1];
-
-}
-
-namespace check2 {
-
-struct Base {
-  virtual ~Base();
-  int x;
-};
-
-#pragma pack(push, 1)
-struct Sub : virtual Base {
-  char c;
-};
-#pragma pack(pop)
-
-int check[sizeof(Sub) == 13 ? 1 : -1];
-
-}
-
-namespace llvm_support_endian {
-
-template<typename, bool> struct X;
-
-#pragma pack(push)
-#pragma pack(1)
-template<typename T> struct X<T, true> {
-  T t;
-};
-#pragma pack(pop)
-
-#pragma pack(push)
-#pragma pack(2)
-template<> struct X<long double, true> {
-  long double c;
-};
-#pragma pack(pop)
-
-int check1[__alignof(X<int, true>) == 1 ? 1 : -1];
-int check2[__alignof(X<long double, true>) == 2 ? 1 : -1];
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-unused.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-unused.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-unused.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-parameter -Wunused -verify %s
-// expected-no-diagnostics
-
-struct S {
-  void m(int x, int y) {
-    int z;
-    #pragma unused(x,y,z)
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-visibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-visibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-visibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace test1 __attribute__((visibility("hidden"))) { // expected-note{{surrounding namespace with visibility attribute starts here}}
-#pragma GCC visibility pop // expected-error{{#pragma visibility pop with no matching #pragma visibility push}}
-}
-
-// GCC 4.6 accepts this, but the "hidden" leaks past the namespace end.
-namespace test2 __attribute__((visibility("hidden"))) {
-#pragma GCC visibility push(protected) // expected-error{{#pragma visibility push with no matching #pragma visibility pop}}
-} // expected-note{{surrounding namespace with visibility attribute ends here}}
-
-#pragma GCC visibility pop // expected-error{{#pragma visibility pop with no matching #pragma visibility push}}
-
-// <rdar://problem/10871094>
-struct A {
-  #pragma GCC visibility push(protected)
-  #pragma GCC visibility pop
-};
-
-void f() {
-  #pragma GCC visibility push(protected)
-  #pragma GCC visibility pop
-}
-
-namespace pr13662 {
-#pragma GCC visibility push(hidden)
-  template<class T> class __attribute__((__visibility__("default"))) foo;
-  class bar { template<class T> friend class foo; };
-#pragma GCC visibility pop
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-weak.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-weak.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/pragma-weak.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 %s
-
-#pragma weak foo
-static void foo();
-extern "C" {
-  void foo() {
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/prefetch-enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/prefetch-enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/prefetch-enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify
-// expected-no-diagnostics
-// PR5679
-
-enum X { A = 3 };
-
-void Test() {
-  char ch;
-  __builtin_prefetch(&ch, 0, A);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/primary-base.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/primary-base.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/primary-base.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-class A { virtual void f(); };
-class B : virtual A { };
-
-class C : B { };
-
-// Since A is already a primary base class, C should be the primary base class
-// of F.
-class F : virtual A, virtual C { };
-
-int sa[sizeof(F) == sizeof(A) ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/printf-block.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/printf-block.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/printf-block.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wformat -verify %s -Wno-error=non-pod-varargs
-
-int (^block) (int, const char *,...) __attribute__((__format__(__printf__,2,3))) = ^ __attribute__((__format__(__printf__,2,3))) (int arg, const char *format,...) {return 5;};
-
-class HasNoCStr {
-  const char *str;
- public:
-  HasNoCStr(const char *s): str(s) { }
-  const char *not_c_str() {return str;}
-};
-
-void test_block() {
-  const char str[] = "test";
-  HasNoCStr hncs(str);
-  int n = 4;
-  block(n, "%s %d", str, n); // no-warning
-  block(n, "%s %s", hncs, n); // expected-warning{{cannot pass non-POD object of type 'HasNoCStr' to variadic block; expected type from format string was 'char *'}} expected-warning{{format specifies type 'char *' but the argument has type 'int'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/printf-cstr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/printf-cstr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/printf-cstr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wformat -verify %s -Wno-error=non-pod-varargs
-
-#include <stdarg.h>
-
-extern "C" {
-extern int printf(const char *restrict, ...);
-extern int sprintf(char *, const char *restrict, ...);
-}
-
-class HasCStr {
-  const char *str;
- public:
-  HasCStr(const char *s): str(s) { }
-  const char *c_str() {return str;}
-};
-
-class HasNoCStr {
-  const char *str;
- public:
-  HasNoCStr(const char *s): str(s) { }
-  const char *not_c_str() {return str;}
-};
-
-extern const char extstr[16];
-void pod_test() {
-  char str[] = "test";
-  char dest[32];
-  char formatString[] = "non-const %s %s";
-  HasCStr hcs(str);
-  HasNoCStr hncs(str);
-  int n = 10;
-
-  printf("%d: %s\n", n, hcs.c_str());
-  printf("%d: %s\n", n, hcs); // expected-warning{{cannot pass non-POD object of type 'HasCStr' to variadic function; expected type from format string was 'char *'}} expected-note{{did you mean to call the c_str() method?}}
-  printf("%d: %s\n", n, hncs); // expected-warning{{cannot pass non-POD object of type 'HasNoCStr' to variadic function; expected type from format string was 'char *'}}
-  sprintf(str, "%d: %s", n, hcs); // expected-warning{{cannot pass non-POD object of type 'HasCStr' to variadic function; expected type from format string was 'char *'}} expected-note{{did you mean to call the c_str() method?}}
-
-  printf(formatString, hcs, hncs); // expected-warning{{cannot pass object of non-POD type 'HasCStr' through variadic function}} expected-warning{{cannot pass object of non-POD type 'HasNoCStr' through variadic function}}
-  printf(extstr, hcs, n); // expected-warning{{cannot pass object of non-POD type 'HasCStr' through variadic function}}
-}
-
-struct Printf {
-  Printf();
-  Printf(const Printf&);
-  Printf(const char *,...) __attribute__((__format__(__printf__,2,3)));
-};
-
-void constructor_test() {
-  const char str[] = "test";
-  HasCStr hcs(str);
-  Printf p("%s %d %s", str, 10, 10); // expected-warning {{format specifies type 'char *' but the argument has type 'int'}}
-  Printf q("%s %d", hcs, 10); // expected-warning {{cannot pass non-POD object of type 'HasCStr' to variadic constructor; expected type from format string was 'char *'}} expected-note{{did you mean to call the c_str() method?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/pseudo-destructors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/pseudo-destructors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/pseudo-destructors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-struct A {};
-
-enum Foo { F };
-typedef Foo Bar; // expected-note{{type 'Bar' (aka 'Foo') is declared here}}
-
-typedef int Integer;
-typedef double Double;
-
-void g();
-
-namespace N {
-  typedef Foo Wibble;
-  typedef int OtherInteger;
-}
-
-template <typename T>
-void cv_test(const volatile T* cvt) {
-  cvt->T::~T(); // no-warning
-}
-
-void f(A* a, Foo *f, int *i, double *d, int ii) {
-  a->~A();
-  a->A::~A();
-  
-  a->~foo(); // expected-error{{identifier 'foo' in object destruction expression does not name a type}}
-  
-  a->~Bar(); // expected-error{{destructor type 'Bar' (aka 'Foo') in object destruction expression does not match the type 'A' of the object being destroyed}}
-  
-  f->~Bar();
-  f->~Foo();
-  i->~Bar(); // expected-error{{does not match}}
-  
-  g().~Bar(); // expected-error{{non-scalar}}
-  
-  f->::~Bar();
-  f->N::~Wibble(); // FIXME: technically, Wibble isn't a class-name
-  
-  f->::~Bar(17, 42); // expected-error{{cannot have any arguments}}
-
-  i->~Integer();
-  i->Integer::~Integer();
-  i->N::~OtherInteger();
-  i->N::OtherInteger::~OtherInteger();
-  i->N::OtherInteger::~Integer(); // expected-error{{'Integer' does not refer to a type name in pseudo-destructor expression; expected the name of type 'int'}}
-  i->N::~Integer(); // expected-error{{'Integer' does not refer to a type name in pseudo-destructor expression; expected the name of type 'int'}}
-  i->Integer::~Double(); // expected-error{{the type of object expression ('int') does not match the type being destroyed ('Double' (aka 'double')) in pseudo-destructor expression}}
-
-  ii->~Integer(); // expected-error{{member reference type 'int' is not a pointer; maybe you meant to use '.'?}}
-  ii.~Integer();
-
-  cv_test(a);
-  cv_test(f);
-  cv_test(i);
-  cv_test(d);
-}
-
-
-typedef int Integer;
-
-void destroy_without_call(int *ip) {
-  ip->~Integer; // expected-error{{called immediately}}
-}
-
-// PR5530
-namespace N1 {
-  class X0 { };
-}
-
-void test_X0(N1::X0 &x0) {
-  x0.~X0();
-}
-
-namespace PR11339 {
-  template<class T>
-  void destroy(T* p) {
-    p->~T(); // ok
-    p->~oops(); // expected-error{{expected the class name after '~' to name a destructor}}
-  }
-
-  template void destroy(int*); // expected-note{{in instantiation of function template specialization}}
-}
-
-template<typename T> using Id = T;
-void AliasTemplate(int *p) {
-  p->~Id<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ptrtomember-overload-resolution.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ptrtomember-overload-resolution.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ptrtomember-overload-resolution.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-
-// 13.3.3.2 Ranking implicit conversion sequences
-// conversion of A::* to B::* is better than conversion of A::* to C::*,
-struct A {
-int Ai;
-}; 
-
-struct B : public A {}; 
-struct C : public B {}; 
-
-const char * f(int C::*){ return ""; } 
-int f(int B::*) { return 1; } 
-
-struct D : public C {}; 
-
-const char * g(int B::*){ return ""; } 
-int g(int D::*) { return 1; } 
-
-void test() 
-{
-  int i = f(&A::Ai);
-
-  const char * str = g(&A::Ai);
-}
-
-// conversion of B::* to C::* is better than conversion of A::* to C::*
-typedef void (A::*pmfa)();
-typedef void (B::*pmfb)();
-typedef void (C::*pmfc)();
-
-struct X {
-	operator pmfa();
-	operator pmfb();
-};
-
-
-void g(pmfc);
-
-void test2(X x) 
-{
-    g(x);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ptrtomember.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ptrtomember.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ptrtomember.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-struct  S {
-	int i;
-
-	int mem(int);
-};
-
-int foo(int S::* ps, S *s)
-{
-    return (s->*ps)(1); // expected-error {{called object type 'int' is not a function or function pointer}}
-}
-
-struct S2 {
-  int bitfield : 1;
-};
-
-int S2::*pf = &S2::bitfield; // expected-error {{address of bit-field requested}}
-
-struct S3 {
-  void m();
-};
-
-void f3(S3* p, void (S3::*m)()) {
-    p->*m; // expected-error {{reference to non-static member function must be called}}
-    (void)(p->*m); // expected-error {{reference to non-static member function must be called}}
-    (void)(void*)(p->*m); // expected-error {{reference to non-static member function must be called}} expected-error {{cannot cast from type 'void' to pointer type 'void *'}}
-    (void)reinterpret_cast<void*>(p->*m); // expected-error {{reference to non-static member function must be called}} expected-error {{reinterpret_cast from 'void' to 'void *' is not allowed}}
-    if (p->*m) {} // expected-error {{reference to non-static member function must be called}} expected-error {{value of type 'void' is not contextually convertible to 'bool'}}
-    if (!(p->*m)) {} // expected-error {{reference to non-static member function must be called}} expected-error {{invalid argument type 'void' to unary expression}}
-    if (p->m) {}; // expected-error {{reference to non-static member function must be called}} expected-error {{value of type 'void' is not contextually convertible to 'bool'}}
-    if (!p->m) {}; // expected-error {{reference to non-static member function must be called}} expected-error {{invalid argument type 'void' to unary expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/qual-id-test.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/qual-id-test.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/qual-id-test.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,149 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-namespace A
-{
-    namespace B
-    {
-        struct base // expected-note{{object type}}
-        {
-            void x() {}
-            void y() {}
-        };
-    }
-
-    struct member
-    {
-        void foo();
-    };
-
-    struct middleman
-    {
-        member * operator->() { return 0; }
-    };
-
-    struct sub : B::base
-    {
-        void x() {}
-        middleman operator->() { return middleman(); }
-    };
-}
-
-struct bad
-{
-  int x();
-};
-
-namespace C
-{
-    void fun()
-    {
-        A::sub a;
-
-        a.x();
-    
-        a.sub::x();
-        a.base::x();
-
-        a.B::base::x(); // expected-error{{use of undeclared identifier 'B'}}
-
-        a.A::sub::x();
-        a.A::B::base::x();
-
-        a.bad::x(); // expected-error{{'bad::x' is not a member of class 'A::sub'}}
-
-        a->foo();
-        a->member::foo();
-        a->A::member::foo();
-    }
-
-    void fun2()
-    {
-        A::sub *a;
-
-        a->x();
-
-        a->sub::x();
-        a->base::x();
-
-        a->B::base::x(); // expected-error{{use of undeclared identifier 'B'}}
-
-        a->A::sub::x();
-        a->A::B::base::x();
-
-        a->bad::x(); // expected-error{{'bad::x' is not a member of class 'A::sub'}}
-
-        (*a)->foo();
-        (*a)->member::foo();
-        (*a)->A::member::foo();
-    }
-
-    void fun3()
-    {
-        int i;
-        i.foo(); // expected-error{{member reference base type 'int' is not a structure or union}}
-    }
-
-    void fun4a() {
-      A::sub *a;
-      
-      typedef A::member base; // expected-note{{current scope}}
-      a->base::x(); // expected-error{{ambiguous}}      
-    }
-
-    void fun4b() {
-      A::sub *a;
-      
-      typedef A::B::base base;
-      a->base::x();
-    }
-  
-    template<typename T>
-    void fun5()
-    {
-        T a;
-        a.x();
-        a->foo();
-
-        a.A::sub::x();
-        a.A::B::base::x();
-        a->A::member::foo();
-
-        a.bad::x(); // expected-error{{'bad::x' is not a member of class 'A::sub'}}
-    }
-
-  void test_fun5() {
-    fun5<A::sub>(); // expected-note{{instantiation}}
-  }
-  
-  template<typename T>
-  void fun6() {
-    T a;
-    a.sub::x();
-    a.base::x();
-    a->member::foo();
-    a.B::base::x(); // expected-error{{use of undeclared identifier 'B'}}
-   }
-  
-  void test_fun6() {
-    fun6<A::sub>(); // expected-note{{instantiation}}
-  }
-  
-}
-
-// PR4703
-struct a {
-  int a;
-  static int sa;
-};
-
-a a;
-
-int a::sa = a.a; // expected-error {{invalid use of non-static data member 'a'}}
-
-
-namespace PR6645 {
-  typedef int foo;
-  namespace Inner {
-    typedef int PR6645::foo; // expected-error{{typedef declarator cannot be qualified}} \
-    // expected-error{{cannot define or redeclare 'foo' here because namespace 'Inner' does not enclose namespace 'PR6645'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/qualification-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/qualification-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/qualification-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s 
-int* quals1(int const * p);
-int* quals2(int const * const * pp);
-int* quals3(int const * * const * ppp); // expected-note{{candidate function}}
-
-void test_quals(int * p, int * * pp, int * * * ppp) {
-  int const * const * pp2 = pp; 
-  quals1(p);
-  quals2(pp);
-  quals3(ppp); // expected-error {{no matching}}
-}
-
-struct A {};
-void mquals1(int const A::*p);
-void mquals2(int const A::* const A::*pp);
-void mquals3(int const A::* A::* const A::*ppp);  // expected-note{{candidate function}}
-
-void test_mquals(int A::*p, int A::* A::*pp, int A::* A::* A::*ppp) {
-  int const A::* const A::* pp2 = pp;
-  mquals1(p);
-  mquals2(pp);
-  mquals3(ppp); // expected-error {{no matching}}
-}
-
-void aquals1(int const (*p)[1]);
-void aquals2(int * const (*pp)[1]);
-void aquals2a(int const * (*pp2)[1]); // expected-note{{candidate function}}
-
-void test_aquals(int (*p)[1], int * (*pp)[1], int * (*pp2)[1]) {
-  int const (*p2)[1] = p;
-  aquals1(p);
-  aquals2(pp);
-  aquals2a(pp2); // expected-error {{no matching}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-id-lookup.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-id-lookup.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-id-lookup.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,154 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-namespace Ns {
-  int f(); // expected-note{{previous declaration is here}}
-
-  enum E {
-    Enumerator
-  };
-}
-namespace Ns {
-  double f(); // expected-error{{functions that differ only in their return type cannot be overloaded}}
-
-  int x = Enumerator;
-}
-
-namespace Ns2 {
-  float f();
-}
-
-int y = Ns::Enumerator;
-
-namespace Ns2 {
-  float f(int); // expected-note{{previous declaration is here}}
-}
-
-namespace Ns2 {
-  double f(int); // expected-error{{functions that differ only in their return type cannot be overloaded}}
-}
-
-namespace N {
-  int& f1();
-}
-
-namespace N {
-  struct f1 {
-    static int member;
-
-    typedef int type;
-
-    void foo(type);
-  };
-
-  void test_f1() {
-    int &i1 = f1();
-  }
-}
-
-void N::f1::foo(int i) { 
-  f1::member = i; 
-  f1::type &ir = i;
-}
-
-namespace N {
-  float& f1(int x) {
-    N::f1::type& i1 = x;
-    f1::type& i2 = x;
-  }
-
-  struct f2 {
-    static int member;
-  };
-  void f2();
-}
-
-int i1 = N::f1::member;
-typedef struct N::f1 type1;
-int i2 = N::f2::member;
-typedef struct N::f2 type2;
-
-void test_f1(int i) {
-  int &v1 = N::f1();
-  float &v2 = N::f1(i);
-  int v3 = ::i1;
-  int v4 = N::f1::member;
-}
-
-typedef int f2_type;
-namespace a {
-  typedef int f2_type(int, int);
-
-  void test_f2() {
-    ::f2_type(1, 2); // expected-error {{excess elements in scalar initializer}}
-  }
-}
-
-// PR clang/3291
-namespace a {  
-  namespace a {   // A1
-    namespace a { // A2
-      int i; // expected-note{{'::a::a::a::i' declared here}}
-    }
-  }
-}
-
-void test_a() {
-  a::a::i = 3; // expected-error{{no member named 'i' in namespace 'a::a'; did you mean '::a::a::a::i'?}}
-  a::a::a::i = 4;
-  a::a::j = 3; // expected-error-re{{no member named 'j' in namespace 'a::a'$}}
-}
-  
-struct Undef { // expected-note{{definition of 'Undef' is not complete until the closing '}'}}
-  typedef int type;
-
-  Undef::type member;
-
-  static int size = sizeof(Undef); // expected-error{{invalid application of 'sizeof' to an incomplete type 'Undef'}}
-
-  int f();
-};
-
-int Undef::f() {
-  return sizeof(Undef);
-}
-
-// PR clang/5667
-namespace test1 {
-  template <typename T> struct is_class {
-    enum { value = 0 };
-  };
-
-  template <typename T> class ClassChecker {
-    bool isClass() {
-      return is_class<T>::value;
-    }
-  };
-
-  template class ClassChecker<int>;  
-}
-
-namespace PR6830 {
-  namespace foo {
-
-    class X {
-    public:
-      X() {}
-    };
-
-  }  // namespace foo
-
-  class Z {
-  public:
-    explicit Z(const foo::X& x) {}
-
-    void Work() {}
-  };
-
-  void Test() {
-    Z(foo::X()).Work();
-  }
-}
-
-namespace pr12339 {
-  extern "C" void i;
-  pr12339::FOO  // expected-error{{no type named 'FOO' in namespace 'pr12339'}}
-}  // expected-error{{expected unqualified-id}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-member-enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-member-enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-member-enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// expected-no-diagnostics
-
-// Check that this doesn't crash.
-struct A {
-  enum {LABEL};
-};
-int f() {
-  return A().A::LABEL;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-names-diag.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-names-diag.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/qualified-names-diag.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-namespace foo {
-  namespace wibble {
-    struct x { int y; };
-
-    namespace bar {
-      namespace wonka {
-        struct x {
-          struct y { };
-        };
-      }
-    }
-  }
-}
-
-namespace bar {
-  typedef int y;
-
-  struct incomplete; // expected-note{{forward declaration of 'bar::incomplete'}}
-}
-void test() {
-  foo::wibble::x a;
-  ::bar::y b;
-  a + b; // expected-error{{invalid operands to binary expression ('foo::wibble::x' and '::bar::y' (aka 'int'))}}
-
-  ::foo::wibble::bar::wonka::x::y c;
-  c + b; // expected-error{{invalid operands to binary expression ('::foo::wibble::bar::wonka::x::y' and '::bar::y' (aka 'int'))}}
-
-  (void)sizeof(bar::incomplete); // expected-error{{invalid application of 'sizeof' to an incomplete type 'bar::incomplete'}}
-}
-
-int ::foo::wibble::bar::wonka::x::y::* ptrmem;
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/redeclared-alias-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/redeclared-alias-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/redeclared-alias-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-template<typename T> using A = int; // expected-note 2{{previous}}
-template<typename T> using A = char; // expected-error {{type alias template redefinition with different types ('char' vs 'int')}}
-template<typename T1, typename T2> using A = T1; // expected-error {{too many template parameters in template redeclaration}}
-
-template<typename T1, typename T2> using B = T1; // expected-note {{previous}}
-template<typename T2, typename T1> using B = T1; // expected-error {{type alias template redefinition with different types}}
-
-
-template<typename> struct S;
-template<template<typename> class F> using FInt = F<int>;
-template<typename X> using SXRInt = FInt<S<X>::template R>;
-template<typename X> using SXRInt = typename S<X>::template R<int>; // ok, redeclaration.
-
-template<template<typename> class> struct TT;
-
-namespace FilterLookup {
-  TT<A> f(); // expected-note {{previous declaration is here}}
-
-  template<typename> using A = int;
-  TT<A> f(); // expected-error {{functions that differ only in their return type cannot be overloaded}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/redeclared-auto.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/redeclared-auto.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/redeclared-auto.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-extern int a;
-auto a = 0; // expected-note 2{{here}}
-auto a = 0; // expected-error {{redefinition}}
-int a = 0; // expected-error {{redefinition}}
-extern auto a; // expected-error {{requires an initializer}}
-
-extern int b; // expected-note {{here}}
-auto b = 0.0; // expected-error {{different type}}
-
-struct S {
-  static int a;
-  static int b; // expected-note {{here}}
-};
-
-auto S::a = 0; // expected-note 2{{here}}
-auto S::a; // expected-error {{redefinition}} expected-error {{requires an initializer}}
-int S::a = 0; // expected-error {{redefinition}}
-
-auto S::b = 0.0; // expected-error {{different type}}
-
-void f() {
-  extern int a;
-  extern auto a; // expected-error {{requires an initializer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/ref-init-ambiguous.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/ref-init-ambiguous.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/ref-init-ambiguous.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-enum E2 { };
-
-struct A { 
-  operator E2&(); // expected-note 3 {{candidate function}}
-};
-
-struct B { 
-  operator E2&(); // expected-note 3 {{candidate function}}
-};
-
-struct C : B, A { 
-};
-
-void test(C c) {
-  const E2 &e2 = c; // expected-error {{reference initialization of type 'const E2 &' with initializer of type 'C' is ambiguous}}
-}
-
-void foo(const E2 &);// expected-note{{passing argument to parameter here}}
-
-const E2 & re(C c) {
-    foo(c); // expected-error {{reference initialization of type 'const E2 &' with initializer of type 'C' is ambiguous}}
-
-    return c; // expected-error {{reference initialization of type 'const E2 &' with initializer of type 'C' is ambiguous}}
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/references.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/references.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/references.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,139 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-int g(int);
-
-void f() {
-  int i;
-  int &r = i;
-  r = 1;
-  int *p = &r;
-  int &rr = r;
-  int (&rg)(int) = g;
-  rg(i);
-  int a[3];
-  int (&ra)[3] = a;
-  ra[1] = i;
-  int *Q;
-  int *& P = Q;
-  P[1] = 1;
-}
-
-typedef int t[1];
-void test2() {
-    t a;
-    t& b = a;
-
-
-    int c[3];
-    int (&rc)[3] = c;
-}
-
-// C++ [dcl.init.ref]p5b1
-struct A { };
-struct B : A { } b;
-
-void test3() {
-  double d = 2.0;
-  double& rd = d; // rd refers to d
-  const double& rcd = d; // rcd refers to d
-
-  A& ra = b; // ra refers to A subobject in b
-  const A& rca = b; // rca refers to A subobject in b
-}
-
-B fB();
-
-// C++ [dcl.init.ref]p5b2
-void test4() {
-  double& rd2 = 2.0; // expected-error{{non-const lvalue reference to type 'double' cannot bind to a temporary of type 'double'}}
-  int i = 2;
-  double& rd3 = i; // expected-error{{non-const lvalue reference to type 'double' cannot bind to a value of unrelated type 'int'}}
-
-  const A& rca = fB();
-}
-
-void test5() {
-  //  const double& rcd2 = 2; // rcd2 refers to temporary with value 2.0
-  const volatile int cvi = 1;
-  const int& r = cvi; // expected-error{{binding of reference to type 'const int' to a value of type 'const volatile int' drops qualifiers}}
-}
-
-// C++ [dcl.init.ref]p3
-int& test6(int& x) {
-  int& yo; // expected-error{{declaration of reference variable 'yo' requires an initializer}}
-
-  return x;
-}
-int& not_initialized_error; // expected-error{{declaration of reference variable 'not_initialized_error' requires an initializer}}
-extern int& not_initialized_okay;
-
-class Test6 { // expected-warning{{class 'Test6' does not declare any constructor to initialize its non-modifiable members}}
-  int& okay; // expected-note{{reference member 'okay' will never be initialized}}
-};
-
-struct C : B, A { };
-
-void test7(C& c) {
-  A& a1 = c; // expected-error {{ambiguous conversion from derived class 'C' to base class 'A':}}
-}
-
-// C++ [dcl.ref]p1, C++ [dcl.ref]p4
-void test8(int& const,// expected-error{{'const' qualifier may not be applied to a reference}}
-           
-           void&,     // expected-error{{cannot form a reference to 'void'}}
-           int& &)    // expected-error{{type name declared as a reference to a reference}}
-{
-  typedef int& intref;
-  typedef intref& intrefref; // C++ DR 106: reference collapsing
-
-  typedef intref const intref_c; // okay. FIXME: how do we verify that this is the same type as intref?
-}
-
-
-class string {
-  char *Data;
-  unsigned Length;
-public:
-  string(); 
-  ~string();
-};
-
-string getInput();
-
-void test9() {
-  string &s = getInput(); // expected-error{{lvalue reference}}
-}
-
-void test10() {
-  __attribute((vector_size(16))) typedef int vec4;
-  typedef __attribute__(( ext_vector_type(4) )) int ext_vec4;
-  
-  vec4 v;
-  int &a = v[0]; // expected-error{{non-const reference cannot bind to vector element}}
-  const int &b = v[0];
-  
-  ext_vec4 ev;
-  int &c = ev.x; // expected-error{{non-const reference cannot bind to vector element}}
-  const int &d = ev.x;
-}
-
-namespace PR7149 {
-  template<typename T> struct X0
-  {
-    T& first;
-    X0(T& p1) : first(p1) { }
-  };
-
-
-  void f()
-  {
-    int p1[1];
-    X0< const int[1]> c(p1);
-  }
-}
-
-namespace PR8608 {
-  bool& f(unsigned char& c) { return (bool&)c; }
-}
-
-// The following crashed trying to recursively evaluate the LValue.
-const int &do_not_crash = do_not_crash; // expected-warning{{reference 'do_not_crash' is not yet bound to a value when used within its own initialization}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/reinterpret-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/reinterpret-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/reinterpret-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,292 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -ffreestanding -Wundefined-reinterpret-cast -Wno-unused-volatile-lvalue %s
-
-#include <stdint.h>
-
-enum test { testval = 1 };
-struct structure { int m; };
-typedef void (*fnptr)();
-
-// Test the conversion to self.
-void self_conversion()
-{
-  // T->T is allowed per [expr.reinterpret.cast]p2 so long as it doesn't
-  // cast away constness, and is integral, enumeration, pointer or 
-  // pointer-to-member.
-  int i = 0;
-  (void)reinterpret_cast<int>(i);
-
-  test e = testval;
-  (void)reinterpret_cast<test>(e);
-
-  // T*->T* is allowed
-  int *pi = 0;
-  (void)reinterpret_cast<int*>(pi);
-
-  const int structure::*psi = 0;
-  (void)reinterpret_cast<const int structure::*>(psi);
-
-  structure s;
-  (void)reinterpret_cast<structure>(s); // expected-error {{reinterpret_cast from 'structure' to 'structure' is not allowed}}
-
-  float f = 0.0f;
-  (void)reinterpret_cast<float>(f); // expected-error {{reinterpret_cast from 'float' to 'float' is not allowed}}
-}
-
-// Test conversion between pointer and integral types, as in /3 and /4.
-void integral_conversion()
-{
-  void *vp = reinterpret_cast<void*>(testval);
-  intptr_t i = reinterpret_cast<intptr_t>(vp);
-  (void)reinterpret_cast<float*>(i);
-  fnptr fnp = reinterpret_cast<fnptr>(i);
-  (void)reinterpret_cast<char>(fnp); // expected-error {{cast from pointer to smaller type 'char' loses information}}
-  (void)reinterpret_cast<intptr_t>(fnp);
-}
-
-void pointer_conversion()
-{
-  int *p1 = 0;
-  float *p2 = reinterpret_cast<float*>(p1);
-  structure *p3 = reinterpret_cast<structure*>(p2);
-  typedef int **ppint;
-  ppint *deep = reinterpret_cast<ppint*>(p3);
-  (void)reinterpret_cast<fnptr*>(deep);
-}
-
-void constness()
-{
-  int ***const ipppc = 0;
-  // Valid: T1* -> T2 const*
-  int const *icp = reinterpret_cast<int const*>(ipppc);
-  // Invalid: T1 const* -> T2*
-  (void)reinterpret_cast<int*>(icp); // expected-error {{reinterpret_cast from 'const int *' to 'int *' casts away qualifiers}}
-  // Invalid: T1*** -> T2 const* const**
-  int const *const **icpcpp = reinterpret_cast<int const* const**>(ipppc); // expected-error {{reinterpret_cast from 'int ***' to 'const int *const **' casts away qualifiers}}
-  // Valid: T1* -> T2*
-  int *ip = reinterpret_cast<int*>(icpcpp);
-  // Valid: T* -> T const*
-  (void)reinterpret_cast<int const*>(ip);
-  // Valid: T*** -> T2 const* const* const*
-  (void)reinterpret_cast<int const* const* const*>(ipppc);
-}
-
-void fnptrs()
-{
-  typedef int (*fnptr2)(int);
-  fnptr fp = 0;
-  (void)reinterpret_cast<fnptr2>(fp);
-  void *vp = reinterpret_cast<void*>(fp);
-  (void)reinterpret_cast<fnptr>(vp);
-}
-
-void refs()
-{
-  long l = 0;
-  char &c = reinterpret_cast<char&>(l);
-  // Bad: from rvalue
-  (void)reinterpret_cast<int&>(&c); // expected-error {{reinterpret_cast from rvalue to reference type 'int &'}}
-}
-
-void memptrs()
-{
-  const int structure::*psi = 0;
-  (void)reinterpret_cast<const float structure::*>(psi);
-  (void)reinterpret_cast<int structure::*>(psi); // expected-error {{reinterpret_cast from 'const int structure::*' to 'int structure::*' casts away qualifiers}}
-
-  void (structure::*psf)() = 0;
-  (void)reinterpret_cast<int (structure::*)()>(psf);
-
-  (void)reinterpret_cast<void (structure::*)()>(psi); // expected-error {{reinterpret_cast from 'const int structure::*' to 'void (structure::*)()' is not allowed}}
-  (void)reinterpret_cast<int structure::*>(psf); // expected-error {{reinterpret_cast from 'void (structure::*)()' to 'int structure::*' is not allowed}}
-
-  // Cannot cast from integers to member pointers, not even the null pointer
-  // literal.
-  (void)reinterpret_cast<void (structure::*)()>(0); // expected-error {{reinterpret_cast from 'int' to 'void (structure::*)()' is not allowed}}
-  (void)reinterpret_cast<int structure::*>(0); // expected-error {{reinterpret_cast from 'int' to 'int structure::*' is not allowed}}
-}
-
-namespace PR5545 {
-// PR5545
-class A;
-class B;
-void (A::*a)();
-void (B::*b)() = reinterpret_cast<void (B::*)()>(a);
-}
-
-// <rdar://problem/8018292>
-void const_arrays() {
-  typedef char STRING[10];
-  const STRING *s;
-  const char *c;
-
-  (void)reinterpret_cast<char *>(s); // expected-error {{reinterpret_cast from 'const STRING *' (aka 'char const (*)[10]') to 'char *' casts away qualifiers}}
-  (void)reinterpret_cast<const STRING *>(c);
-}
-
-namespace PR9564 {
-  struct a { int a : 10; }; a x;
-  int *y = &reinterpret_cast<int&>(x.a); // expected-error {{not allowed}}
-
-  __attribute((ext_vector_type(4))) typedef float v4;
-  float& w(v4 &a) { return reinterpret_cast<float&>(a[1]); } // expected-error {{not allowed}}
-}
-
-void dereference_reinterpret_cast() {
-  struct A {};
-  typedef A A2;
-  class B {};
-  typedef B B2;
-  A a;
-  B b;
-  A2 a2;
-  B2 b2;
-  long l;
-  double d;
-  float f;
-  char c;
-  unsigned char uc;
-  void* v_ptr;
-  (void)reinterpret_cast<double&>(l);  // expected-warning {{reinterpret_cast from 'long' to 'double &' has undefined behavior}}
-  (void)*reinterpret_cast<double*>(&l);  // expected-warning {{dereference of type 'double *' that was reinterpret_cast from type 'long *' has undefined behavior}}
-  (void)reinterpret_cast<double&>(f);  // expected-warning {{reinterpret_cast from 'float' to 'double &' has undefined behavior}}
-  (void)*reinterpret_cast<double*>(&f);  // expected-warning {{dereference of type 'double *' that was reinterpret_cast from type 'float *' has undefined behavior}}
-  (void)reinterpret_cast<float&>(l);  // expected-warning {{reinterpret_cast from 'long' to 'float &' has undefined behavior}}
-  (void)*reinterpret_cast<float*>(&l);  // expected-warning {{dereference of type 'float *' that was reinterpret_cast from type 'long *' has undefined behavior}}
-  (void)reinterpret_cast<float&>(d);  // expected-warning {{reinterpret_cast from 'double' to 'float &' has undefined behavior}}
-  (void)*reinterpret_cast<float*>(&d);  // expected-warning {{dereference of type 'float *' that was reinterpret_cast from type 'double *' has undefined behavior}}
-
-  // TODO: add warning for tag types
-  (void)reinterpret_cast<A&>(b);
-  (void)*reinterpret_cast<A*>(&b);
-  (void)reinterpret_cast<B&>(a);
-  (void)*reinterpret_cast<B*>(&a);
-  (void)reinterpret_cast<A2&>(b2);
-  (void)*reinterpret_cast<A2*>(&b2);
-  (void)reinterpret_cast<B2&>(a2);
-  (void)*reinterpret_cast<B2*>(&a2);
-
-  // Casting to itself is allowed
-  (void)reinterpret_cast<A&>(a);
-  (void)*reinterpret_cast<A*>(&a);
-  (void)reinterpret_cast<B&>(b);
-  (void)*reinterpret_cast<B*>(&b);
-  (void)reinterpret_cast<long&>(l);
-  (void)*reinterpret_cast<long*>(&l);
-  (void)reinterpret_cast<double&>(d);
-  (void)*reinterpret_cast<double*>(&d);
-  (void)reinterpret_cast<char&>(c);
-  (void)*reinterpret_cast<char*>(&c);
-
-  // Casting to and from chars are allowable
-  (void)reinterpret_cast<A&>(c);
-  (void)*reinterpret_cast<A*>(&c);
-  (void)reinterpret_cast<B&>(c);
-  (void)*reinterpret_cast<B*>(&c);
-  (void)reinterpret_cast<long&>(c);
-  (void)*reinterpret_cast<long*>(&c);
-  (void)reinterpret_cast<double&>(c);
-  (void)*reinterpret_cast<double*>(&c);
-  (void)reinterpret_cast<char&>(l);
-  (void)*reinterpret_cast<char*>(&l);
-  (void)reinterpret_cast<char&>(d);
-  (void)*reinterpret_cast<char*>(&d);
-  (void)reinterpret_cast<char&>(f);
-  (void)*reinterpret_cast<char*>(&f);
-
-  // Casting from void pointer.
-  (void)*reinterpret_cast<A*>(v_ptr);
-  (void)*reinterpret_cast<B*>(v_ptr);
-  (void)*reinterpret_cast<long*>(v_ptr);
-  (void)*reinterpret_cast<double*>(v_ptr);
-  (void)*reinterpret_cast<float*>(v_ptr);
-
-  // Casting to void pointer
-  (void)*reinterpret_cast<void*>(&a);
-  (void)*reinterpret_cast<void*>(&b);
-  (void)*reinterpret_cast<void*>(&l);
-  (void)*reinterpret_cast<void*>(&d);
-  (void)*reinterpret_cast<void*>(&f);
-}
-
-void reinterpret_cast_whitelist () {
-  // the dynamic type of the object
-  int a;
-  float b;
-  (void)reinterpret_cast<int&>(a);
-  (void)*reinterpret_cast<int*>(&a);
-  (void)reinterpret_cast<float&>(b);
-  (void)*reinterpret_cast<float*>(&b);
-
-  // a cv-qualified version of the dynamic object
-  (void)reinterpret_cast<const int&>(a);
-  (void)*reinterpret_cast<const int*>(&a);
-  (void)reinterpret_cast<volatile int&>(a);
-  (void)*reinterpret_cast<volatile int*>(&a);
-  (void)reinterpret_cast<const volatile int&>(a);
-  (void)*reinterpret_cast<const volatile int*>(&a);
-  (void)reinterpret_cast<const float&>(b);
-  (void)*reinterpret_cast<const float*>(&b);
-  (void)reinterpret_cast<volatile float&>(b);
-  (void)*reinterpret_cast<volatile float*>(&b);
-  (void)reinterpret_cast<const volatile float&>(b);
-  (void)*reinterpret_cast<const volatile float*>(&b);
-
-  // a type that is the signed or unsigned type corresponding to the dynamic
-  // type of the object
-  signed d;
-  unsigned e;
-  (void)reinterpret_cast<signed&>(d);
-  (void)*reinterpret_cast<signed*>(&d);
-  (void)reinterpret_cast<signed&>(e);
-  (void)*reinterpret_cast<signed*>(&e);
-  (void)reinterpret_cast<unsigned&>(d);
-  (void)*reinterpret_cast<unsigned*>(&d);
-  (void)reinterpret_cast<unsigned&>(e);
-  (void)*reinterpret_cast<unsigned*>(&e);
-
-  // a type that is the signed or unsigned type corresponding a cv-qualified
-  // version of the dynamic type the object
-  (void)reinterpret_cast<const signed&>(d);
-  (void)*reinterpret_cast<const signed*>(&d);
-  (void)reinterpret_cast<const signed&>(e);
-  (void)*reinterpret_cast<const signed*>(&e);
-  (void)reinterpret_cast<const unsigned&>(d);
-  (void)*reinterpret_cast<const unsigned*>(&d);
-  (void)reinterpret_cast<const unsigned&>(e);
-  (void)*reinterpret_cast<const unsigned*>(&e);
-  (void)reinterpret_cast<volatile signed&>(d);
-  (void)*reinterpret_cast<volatile signed*>(&d);
-  (void)reinterpret_cast<volatile signed&>(e);
-  (void)*reinterpret_cast<volatile signed*>(&e);
-  (void)reinterpret_cast<volatile unsigned&>(d);
-  (void)*reinterpret_cast<volatile unsigned*>(&d);
-  (void)reinterpret_cast<volatile unsigned&>(e);
-  (void)*reinterpret_cast<volatile unsigned*>(&e);
-  (void)reinterpret_cast<const volatile signed&>(d);
-  (void)*reinterpret_cast<const volatile signed*>(&d);
-  (void)reinterpret_cast<const volatile signed&>(e);
-  (void)*reinterpret_cast<const volatile signed*>(&e);
-  (void)reinterpret_cast<const volatile unsigned&>(d);
-  (void)*reinterpret_cast<const volatile unsigned*>(&d);
-  (void)reinterpret_cast<const volatile unsigned&>(e);
-  (void)*reinterpret_cast<const volatile unsigned*>(&e);
-
-  // an aggregate or union type that includes one of the aforementioned types
-  // among its members (including, recursively, a member of a subaggregate or
-  // contained union)
-  // TODO: checking is not implemented for tag types
-
-  // a type that is a (possible cv-qualified) base class type of the dynamic
-  // type of the object
-  // TODO: checking is not implemented for tag types
-
-  // a char or unsigned char type
-  (void)reinterpret_cast<char&>(a);
-  (void)*reinterpret_cast<char*>(&a);
-  (void)reinterpret_cast<unsigned char&>(a);
-  (void)*reinterpret_cast<unsigned char*>(&a);
-  (void)reinterpret_cast<char&>(b);
-  (void)*reinterpret_cast<char*>(&b);
-  (void)reinterpret_cast<unsigned char&>(b);
-  (void)*reinterpret_cast<unsigned char*>(&b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/reinterpret-fn-obj-pedantic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/reinterpret-fn-obj-pedantic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/reinterpret-fn-obj-pedantic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 -pedantic %s
-
-void fnptrs()
-{
-  typedef void (*fnptr)();
-  fnptr fp = 0;
-  void *vp = reinterpret_cast<void*>(fp); // expected-warning {{cast between pointer-to-function and pointer-to-object is an extension}}
-  (void)reinterpret_cast<fnptr>(vp); // expected-warning {{cast between pointer-to-function and pointer-to-object is an extension}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/return-noreturn.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/return-noreturn.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/return-noreturn.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,140 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -Wreturn-type -Wmissing-noreturn -Wno-unreachable-code -Wno-covered-switch-default
-// RUN: %clang_cc1 %s -fsyntax-only -std=c++11 -verify -Wreturn-type -Wmissing-noreturn -Wno-unreachable-code -Wno-covered-switch-default
-
-// A destructor may be marked noreturn and should still influence the CFG.
-void pr6884_abort() __attribute__((noreturn));
-
-struct pr6884_abort_struct {
-  pr6884_abort_struct() {}
-  ~pr6884_abort_struct() __attribute__((noreturn)) { pr6884_abort(); }
-};
-
-struct other { ~other() {} };
-
-// Ensure that destructors from objects are properly modeled in the CFG despite
-// the presence of switches, case statements, labels, and blocks. These tests
-// try to cover bugs reported in both PR6884 and PR10063.
-namespace abort_struct_complex_cfgs {
-  int basic(int x) {
-    switch (x) { default: pr6884_abort(); }
-  }
-  int f1(int x) {
-    switch (x) default: pr6884_abort_struct();
-  }
-  int f2(int x) {
-    switch (x) { default: pr6884_abort_struct(); }
-  }
-  int f2_positive(int x) {
-    switch (x) { default: ; }
-  } // expected-warning {{control reaches end of non-void function}}
-  int f3(int x) {
-    switch (x) { default: { pr6884_abort_struct(); } }
-  }
-  int f4(int x) {
-    switch (x) default: L1: L2: case 4: pr6884_abort_struct();
-  }
-  int f5(int x) {
-    switch (x) default: L1: { L2: case 4: pr6884_abort_struct(); }
-  }
-  int f6(int x) {
-    switch (x) default: L1: L2: case 4: { pr6884_abort_struct(); }
-  }
-
-  // Test that these constructs work even when extraneous blocks are created
-  // before and after the switch due to implicit destructors.
-  int g1(int x) {
-    other o;
-    switch (x) default: pr6884_abort_struct();
-  }
-  int g2(int x) {
-    other o;
-    switch (x) { default: pr6884_abort_struct(); }
-  }
-  int g2_positive(int x) {
-    other o;
-    switch (x) { default: ; }
-  } // expected-warning {{control reaches end of non-void function}}
-  int g3(int x) {
-    other o;
-    switch (x) { default: { pr6884_abort_struct(); } }
-  }
-  int g4(int x) {
-    other o;
-    switch (x) default: L1: L2: case 4: pr6884_abort_struct();
-  }
-  int g5(int x) {
-    other o;
-    switch (x) default: L1: { L2: case 4: pr6884_abort_struct(); }
-  }
-  int g6(int x) {
-    other o;
-    switch (x) default: L1: L2: case 4: { pr6884_abort_struct(); }
-  }
-
-  // Test that these constructs work even with variables carrying the no-return
-  // destructor instead of temporaries.
-  int h1(int x) {
-    other o;
-    switch (x) default: pr6884_abort_struct a;
-  }
-  int h2(int x) {
-    other o;
-    switch (x) { default: pr6884_abort_struct a; }
-  }
-  int h3(int x) {
-    other o;
-    switch (x) { default: { pr6884_abort_struct a; } }
-  }
-  int h4(int x) {
-    other o;
-    switch (x) default: L1: L2: case 4: pr6884_abort_struct a;
-  }
-  int h5(int x) {
-    other o;
-    switch (x) default: L1: { L2: case 4: pr6884_abort_struct a; }
-  }
-  int h6(int x) {
-    other o;
-    switch (x) default: L1: L2: case 4: { pr6884_abort_struct a; }
-  }
-}
-
-// PR9380
-struct PR9380 {
-  ~PR9380();
-};
-struct PR9380_B : public PR9380 {
-  PR9380_B( const PR9380& str );
-};
-void test_PR9380(const PR9380& aKey) {
-  const PR9380& flatKey = PR9380_B(aKey);
-}
-
-// Array of objects with destructors.  This is purely a coverage test case.
-void test_array() {
-  PR9380 a[2];
-}
-
-// Test classes wrapped in typedefs.  This is purely a coverage test case
-// for CFGImplictDtor::getDestructorDecl().
-void test_typedefs() {
-  typedef PR9380 PR9380_Ty;
-  PR9380_Ty test;
-  PR9380_Ty test2[20];
-}
-
-// PR9412 - Handle CFG traversal with null successors.
-enum PR9412_MatchType { PR9412_Exact };
-
-template <PR9412_MatchType type> int PR9412_t() {
-  switch (type) {
-    case PR9412_Exact:
-    default:
-        break;
-  }
-} // expected-warning {{control reaches end of non-void function}}
-
-void PR9412_f() {
-    PR9412_t<PR9412_Exact>(); // expected-note {{in instantiation of function template specialization 'PR9412_t<0>' requested here}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/return-stack-addr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/return-stack-addr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/return-stack-addr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,141 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int* ret_local() {
-  int x = 1;
-  return &x; // expected-warning {{address of stack memory}}
-}
-
-int* ret_local_array() {
-  int x[10];
-  return x; // expected-warning {{address of stack memory}}
-}
-
-int* ret_local_array_element(int i) {
-  int x[10];
-  return &x[i]; // expected-warning {{address of stack memory}}
-}
-
-int *ret_local_array_element_reversed(int i) {
-  int x[10];
-  return &i[x]; // expected-warning {{address of stack memory}}
-}
-
-int* ret_local_array_element_const_index() {
-  int x[10];
-  return &x[2];  // expected-warning {{address of stack memory}}
-}
-
-int& ret_local_ref() {
-  int x = 1;
-  return x;  // expected-warning {{reference to stack memory}}
-}
-
-int* ret_local_addrOf() {
-  int x = 1;
-  return &*&x; // expected-warning {{address of stack memory}}
-}
-
-int* ret_local_addrOf_paren() {
-  int x = 1;
-  return (&(*(&x))); // expected-warning {{address of stack memory}}
-}
-
-int* ret_local_addrOf_ptr_arith() {
-  int x = 1;
-  return &*(&x+1); // expected-warning {{address of stack memory}}
-}
-
-int* ret_local_addrOf_ptr_arith2() {
-  int x = 1;
-  return &*(&x+1); // expected-warning {{address of stack memory}}
-}
-
-int* ret_local_field() {
-  struct { int x; } a;
-  return &a.x; // expected-warning {{address of stack memory}}
-}
-
-int& ret_local_field_ref() {
-  struct { int x; } a;
-  return a.x; // expected-warning {{reference to stack memory}}
-}
-
-int* ret_conditional(bool cond) {
-  int x = 1;
-  int y = 2;
-  return cond ? &x : &y; // expected-warning {{address of stack memory}}
-}
-
-int* ret_conditional_rhs(int *x, bool cond) {
-  int y = 1;
-  return cond ? x : &y;  // expected-warning {{address of stack memory}}
-}
-
-void* ret_c_cast() {
-  int x = 1;
-  return (void*) &x;  // expected-warning {{address of stack memory}}
-}
-
-int* ret_static_var() {
-  static int x = 1;
-  return &x;  // no warning.
-}
-
-int z = 1;
-
-int* ret_global() {
-  return &z;  // no warning.
-}
-
-int* ret_parameter(int x) {
-  return &x;  // expected-warning {{address of stack memory}}
-}
-
-
-void* ret_cpp_static_cast(short x) {
-  return static_cast<void*>(&x); // expected-warning {{address of stack memory}}
-}
-
-int* ret_cpp_reinterpret_cast(double x) {
-  return reinterpret_cast<int*>(&x); // expected-warning {{address of stack me}}
-}
-
-int* ret_cpp_reinterpret_cast_no_warning(long x) {
-  return reinterpret_cast<int*>(x); // no-warning
-}
-
-int* ret_cpp_const_cast(const int x) {
-  return const_cast<int*>(&x);  // expected-warning {{address of stack memory}}
-}
-
-// PR 7999 - handle the case where a field is itself a reference.
-template <typename T> struct PR7999 {
-  PR7999(T& t) : value(t) {}
-  T& value;
-};
-
-struct PR7999_X {};
-
-PR7999_X& PR7999_f(PR7999<PR7999_X> s) { return s.value; } // no-warning
-void test_PR7999(PR7999_X& x) { (void)PR7999_f(x); } // no-warning
-
-// PR 8774: Don't try to evaluate parameters with default arguments like
-// variables with an initializer, especially in templates where the default
-// argument may not be an expression (yet).
-namespace PR8774 {
-  template <typename U> struct B { };
-  template <typename V> V f(typename B<V>::type const &v = B<V>::value()) {
-    return v;
-  }
-  template <> struct B<const char *> {
-    typedef const char *type;
-    static const char *value();
-  };
-  void g() {
-    const char *t;
-    f<const char*>(t);
-  }
-}
-
-// TODO: test case for dynamic_cast.  clang does not yet have
-// support for C++ classes to write such a test case.

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/return.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/return.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/return.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: %clang_cc1 %s -std=c++11 -fcxx-exceptions -fexceptions -fsyntax-only -Wignored-qualifiers -verify
-
-int test1() {
-  throw;
-}
-
-// PR5071
-template<typename T> T f() { }
-
-template<typename T>
-void g(T t) {
-  return t * 2; // okay
-}
-
-template<typename T>
-T h() {
-  return 17;
-}
-
-// Don't warn on cv-qualified class return types, only scalar return types.
-namespace ignored_quals {
-struct S {};
-const S class_c();
-const volatile S class_cv();
-
-const int scalar_c(); // expected-warning{{'const' type qualifier on return type has no effect}}
-int const scalar_c2(); // expected-warning{{'const' type qualifier on return type has no effect}}
-
-const
-char*
-const // expected-warning{{'const' type qualifier on return type has no effect}}
-f();
-
-char
-const*
-const // expected-warning{{'const' type qualifier on return type has no effect}}
-g();
-
-char* const h(); // expected-warning{{'const' type qualifier on return type has no effect}}
-char* volatile i(); // expected-warning{{'volatile' type qualifier on return type has no effect}}
-
-char*
-volatile // expected-warning{{'const volatile' type qualifiers on return type have no effect}}
-const
-j();
-
-const volatile int scalar_cv(); // expected-warning{{'const volatile' type qualifiers on return type have no effect}}
-
-// FIXME: Maintain enough information that we can point the diagnostic at the 'volatile' keyword.
-const
-int S::*
-volatile
-mixed_ret(); // expected-warning {{'volatile' type qualifier on return type has no effect}}
-
-const int volatile // expected-warning {{'const volatile' type qualifiers on return type have no effect}}
-    (((parens())));
-
-_Atomic(int) atomic();
-
-_Atomic // expected-warning {{'_Atomic' type qualifier on return type has no effect}}
-    int
-    atomic();
-
-auto
-    trailing_return_type() -> // expected-warning {{'const' type qualifier on return type has no effect}}
-    const int;
-
-const int ret_array()[4]; // expected-error {{cannot return array}}
-}
-
-namespace PR9328 {
-  typedef char *PCHAR;
-  class Test 
-  {
-    const PCHAR GetName() { return 0; } // expected-warning{{'const' type qualifier on return type has no effect}}
-  };
-}
-
-class foo  {
-  operator const int ();
-  operator int * const ();
-};
-
-namespace PR10057 {
-  struct S {
-    ~S();
-  };
-
-  template <class VarType>
-  void Test(const VarType& value) {
-    return S() = value;
-  }
-}
-
-namespace return_has_expr {
-  struct S {
-    S() {
-      return 42; // expected-error {{constructor 'S' should not return a value}}
-    }
-    ~S() {
-      return 42; // expected-error {{destructor '~S' should not return a value}}
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/runtimediag-ppe.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/runtimediag-ppe.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/runtimediag-ppe.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Make sure diagnostics that we don't print based on runtime control
-// flow are delayed correctly in cases where we can't immediately tell whether
-// the context is unevaluated.
-
-namespace std {
-  class type_info;
-}
-
-int& NP(int);
-void test1() { (void)typeid(NP(1 << 32)); }
-
-class Poly { virtual ~Poly(); };
-Poly& P(int);
-void test2() { (void)typeid(P(1 << 32)); } // expected-warning {{shift count >= width of type}}
-
-void test3() { 1 ? (void)0 : (void)typeid(P(1 << 32)); }

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/rval-references-examples.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/rval-references-examples.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/rval-references-examples.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,112 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<typename T>
-class unique_ptr {
-  T *ptr;
-
-  unique_ptr(const unique_ptr&) = delete; // expected-note 3{{function has been explicitly marked deleted here}}
-  unique_ptr &operator=(const unique_ptr&) = delete; // expected-note{{candidate function has been explicitly deleted}}
-public:
-  unique_ptr() : ptr(0) { }
-  unique_ptr(unique_ptr &&other) : ptr(other.ptr) { other.ptr = 0; }
-  explicit unique_ptr(T *ptr) : ptr(ptr) { }
-
-  ~unique_ptr() { delete ptr; }
-
-  unique_ptr &operator=(unique_ptr &&other) { // expected-note{{candidate function not viable: no known conversion from 'unique_ptr<int>' to 'unique_ptr<int> &&' for 1st argument}}
-    if (this == &other)
-      return *this;
-
-    delete ptr;
-    ptr = other.ptr;
-    other.ptr = 0;
-    return *this;
-  }
-};
-
-template<typename T>
-struct remove_reference {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_reference<T&> {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_reference<T&&> {
-  typedef T type;
-};
-
-
-template <class T> typename remove_reference<T>::type&& move(T&& t) {
-  return static_cast<typename remove_reference<T>::type&&>(t);
-}
-
-template <class T> T&& forward(typename remove_reference<T>::type& t) {
-  return static_cast<T&&>(t);
-}
-
-template <class T> T&& forward(typename remove_reference<T>::type&& t) {
-  return static_cast<T&&>(t);
-}
-
-template<typename T, typename ...Args>
-unique_ptr<T> make_unique_ptr(Args &&...args) {
-  return unique_ptr<T>(new T(forward<Args>(args)...));
-}
-
-template<typename T> void accept_unique_ptr(unique_ptr<T>); // expected-note{{passing argument to parameter here}}
-
-unique_ptr<int> test_unique_ptr() {
-  // Simple construction
-  unique_ptr<int> p;
-  unique_ptr<int> p1(new int);
-
-  // Move construction
-  unique_ptr<int> p2(make_unique_ptr<int>(17));
-  unique_ptr<int> p3 = make_unique_ptr<int>(17);
-
-  // Copy construction (failures)
-  unique_ptr<int> p4(p); // expected-error{{call to deleted constructor of 'unique_ptr<int>'}}
-  unique_ptr<int> p5 = p; // expected-error{{call to deleted constructor of 'unique_ptr<int>'}}
-
-  // Move assignment
-  p2 = move(p);
-  p2 = make_unique_ptr<int>(0);
-
-  // Copy assignment (failures);
-  p2 = p3; // expected-error{{overload resolution selected deleted operator '='}}
-
-  // Implicit copies
-  accept_unique_ptr(make_unique_ptr<double>(0.0));
-  accept_unique_ptr(move(p2));
-
-  // Implicit copies (failures);
-  accept_unique_ptr(p); // expected-error{{call to deleted constructor of 'unique_ptr<int>'}}
-
-  return p;
-}
-
-namespace perfect_forwarding {
-  struct A { };
-
-  struct F0 {
-    void operator()(A&, const A&, A&&, const A&&, A&&, const A&&); // expected-note{{candidate function not viable: 5th argument ('const perfect_forwarding::A') would lose const qualifier}}
-  };
-
-  template<typename F, typename ...Args>
-  void forward(F f, Args &&...args) {
-    f(static_cast<Args&&>(args)...); // expected-error{{no matching function for call to object of type 'perfect_forwarding::F0'}}
-  }
-
-  template<typename T> T get();
-
-  void test_forward() {
-    forward(F0(), get<A&>(), get<A const&>(), get<A>(), get<const A>(),
-            get<A&&>(), get<const A&&>());
-    forward(F0(), get<A&>(), get<A const&>(), get<A>(), get<const A>(), // expected-note{{in instantiation of function template specialization 'perfect_forwarding::forward<perfect_forwarding::F0, perfect_forwarding::A &, const perfect_forwarding::A &, perfect_forwarding::A, const perfect_forwarding::A, const perfect_forwarding::A, const perfect_forwarding::A>' requested here}}
-            get<const A&&>(), get<const A&&>());
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/rval-references.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/rval-references.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/rval-references.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify -std=c++11 %s
-
-typedef int&& irr;
-typedef irr& ilr_c1; // Collapses to int&
-typedef int& ilr;
-typedef ilr&& ilr_c2; // Collapses to int&
-
-irr ret_irr() {
-  return 0; // expected-warning {{returning reference to local temporary}}
-}
-
-struct not_int {};
-
-int over(int&);
-not_int over(int&&);
-
-int over2(const int&);
-not_int over2(int&&);
-
-struct conv_to_not_int_rvalue {
-  operator not_int &&();
-};
-
-typedef void (fun_type)();
-void fun();
-fun_type &&make_fun();
-
-void f() {
-  int &&virr1; // expected-error {{declaration of reference variable 'virr1' requires an initializer}}
-  int &&virr2 = 0;
-  int &&virr3 = virr2; // expected-error {{rvalue reference to type 'int' cannot bind to lvalue of type 'int'}}
-  int i1 = 0;
-  int &&virr4 = i1; // expected-error {{rvalue reference to type 'int' cannot bind to lvalue of type 'int'}}
-  int &&virr5 = ret_irr();
-  int &&virr6 = static_cast<int&&>(i1);
-  (void)static_cast<not_int&&>(i1); // expected-error {{types are not compatible}}
-
-  int i2 = over(i1);
-  not_int ni1 = over(0);
-  int i3 = over(virr2);
-  not_int ni2 = over(ret_irr());
-
-  int i4 = over2(i1);
-  not_int ni3 = over2(0);
-
-  ilr_c1 vilr1 = i1;
-  ilr_c2 vilr2 = i1;
-
-  conv_to_not_int_rvalue cnir;
-  not_int &&ni4 = cnir;
-  not_int &ni5 = cnir; // expected-error{{non-const lvalue reference to type 'not_int' cannot bind to a value of unrelated type 'conv_to_not_int_rvalue'}}
-  not_int &&ni6 = conv_to_not_int_rvalue();
-
-  fun_type &&fun_ref = fun; // works because functions are special
-  fun_type &&fun_ref2 = make_fun(); // same
-  fun_type &fun_lref = make_fun(); // also special
-
-  try {
-  } catch(int&&) { // expected-error {{cannot catch exceptions by rvalue reference}}
-  }
-}
-
-int&& should_warn(int i) {
-  // FIXME: The stack address return test doesn't reason about casts.
-  return static_cast<int&&>(i); // xpected-warning {{returning reference to temporary}}
-}
-int&& should_not_warn(int&& i) { // But GCC 4.4 does
-  return static_cast<int&&>(i);
-}
-
-
-// Test the return dance. This also tests IsReturnCopyElidable.
-struct MoveOnly {
-  MoveOnly();
-  MoveOnly(const MoveOnly&) = delete;	// expected-note {{candidate constructor}} \
-  // expected-note 3{{explicitly marked deleted here}}
-  MoveOnly(MoveOnly&&);	// expected-note {{candidate constructor}}
-  MoveOnly(int&&);	// expected-note {{candidate constructor}}
-};
-
-MoveOnly gmo;
-MoveOnly returningNonEligible() {
-  int i;
-  static MoveOnly mo;
-  MoveOnly &r = mo;
-  if (0) // Copy from global can't be elided
-    return gmo; // expected-error {{call to deleted constructor}}
-  else if (0) // Copy from local static can't be elided
-    return mo; // expected-error {{call to deleted constructor}}
-  else if (0) // Copy from reference can't be elided
-    return r; // expected-error {{call to deleted constructor}}
-  else // Construction from different type can't be elided
-    return i; // expected-error {{no viable conversion from 'int' to 'MoveOnly'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/scope-check.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/scope-check.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/scope-check.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,288 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -fcxx-exceptions %s -Wno-unreachable-code
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -fcxx-exceptions -std=gnu++11 %s -Wno-unreachable-code
-
-namespace test0 {
-  struct D { ~D(); };
-
-  int f(bool b) {
-    if (b) {
-      D d;
-      goto end;
-    }
-
-  end:
-    return 1;
-  }
-}
-
-namespace test1 {
-  struct C { C(); };
-
-  int f(bool b) {
-    if (b)
-      goto foo; // expected-error {{goto into protected scope}}
-    C c; // expected-note {{jump bypasses variable initialization}}
-  foo:
-    return 1;
-  }
-}
-
-namespace test2 {
-  struct C { C(); };
-
-  int f(void **ip) {
-    static void *ips[] = { &&lbl1, &&lbl2 };
-
-    C c;
-    goto *ip;
-  lbl1:
-    return 0;
-  lbl2:
-    return 1;
-  }
-}
-
-namespace test3 {
-  struct C { C(); };
-
-  int f(void **ip) {
-    static void *ips[] = { &&lbl1, &&lbl2 };
-
-    goto *ip;
-  lbl1: {
-    C c;
-    return 0;
-  }
-  lbl2:
-    return 1;
-  }
-}
-
-namespace test4 {
-  struct C { C(); };
-  struct D { ~D(); };
-
-  int f(void **ip) {
-    static void *ips[] = { &&lbl1, &&lbl2 };
-
-    C c0;
-
-    goto *ip; // expected-error {{indirect goto might cross protected scopes}}
-    C c1; // expected-note {{jump bypasses variable initialization}}
-  lbl1: // expected-note {{possible target of indirect goto}}
-    return 0;
-  lbl2:
-    return 1;
-  }
-}
-
-namespace test5 {
-  struct C { C(); };
-  struct D { ~D(); };
-
-  int f(void **ip) {
-    static void *ips[] = { &&lbl1, &&lbl2 };
-    C c0;
-
-    goto *ip;
-  lbl1: // expected-note {{possible target of indirect goto}}
-    return 0;
-  lbl2:
-    if (ip[1]) {
-      D d; // expected-note {{jump exits scope of variable with non-trivial destructor}}
-      ip += 2;
-      goto *ip; // expected-error {{indirect goto might cross protected scopes}}
-    }
-    return 1;
-  }
-}
-
-namespace test6 {
-  struct C { C(); };
-
-  unsigned f(unsigned s0, unsigned s1, void **ip) {
-    static void *ips[] = { &&lbl1, &&lbl2, &&lbl3, &&lbl4 };
-    C c0;
-
-    goto *ip;
-  lbl1:
-    s0++;
-    goto *++ip;
-  lbl2:
-    s0 -= s1;
-    goto *++ip;
-  lbl3: {
-    unsigned tmp = s0;
-    s0 = s1;
-    s1 = tmp;
-    goto *++ip;
-  }
-  lbl4:
-    return s0;
-  }
-}
-
-// C++0x says it's okay to skip non-trivial initializers on static
-// locals, and we implement that in '03 as well.
-namespace test7 {
-  struct C { C(); };
-
-  void test() {
-    goto foo;
-    static C c;
-  foo:
-    return;
-  }
-}
-
-// PR7789
-namespace test8 {
-  void test1(int c) {
-    switch (c) {
-    case 0:
-      int x = 56; // expected-note {{jump bypasses variable initialization}}
-    case 1:       // expected-error {{switch case is in protected scope}}
-      x = 10;
-    }
-  }
-
-  void test2() {
-    goto l2;     // expected-error {{goto into protected scope}}
-  l1: int x = 5; // expected-note {{jump bypasses variable initialization}}
-  l2: x++;
-  }
-}
-
-namespace test9 {
-  struct S { int i; };
-  void test1() {
-    goto foo;
-    S s;
-  foo:
-    return;
-  }
-  unsigned test2(unsigned x, unsigned y) {
-    switch (x) {
-    case 2:
-      S s;
-      if (y > 42) return x + y;
-    default:
-      return x - 2;
-    }
-  }
-}
-
-// http://llvm.org/PR10462
-namespace PR10462 {
-  enum MyEnum {
-    something_valid,
-    something_invalid
-  };
-
-  bool recurse() {
-    MyEnum K;
-    switch (K) { // expected-warning {{enumeration value 'something_invalid' not handled in switch}}
-    case something_valid:
-    case what_am_i_thinking: // expected-error {{use of undeclared identifier}}
-      int *X = 0;
-      if (recurse()) {
-      }
-
-      break;
-    }
-  }
-}
-
-namespace test10 {
-  int test() {
-    static void *ps[] = { &&a0 };
-    goto *&&a0; // expected-error {{goto into protected scope}}
-    int a = 3; // expected-note {{jump bypasses variable initialization}}
-  a0:
-    return 0;
-  }
-}
-
-// pr13812
-namespace test11 {
-  struct C {
-    C(int x);
-    ~C();
-  };
-  void f(void **ip) {
-    static void *ips[] = { &&l0 };
-  l0:  // expected-note {{possible target of indirect goto}}
-    C c0 = 42; // expected-note {{jump exits scope of variable with non-trivial destructor}}
-    goto *ip; // expected-error {{indirect goto might cross protected scopes}}
-  }
-}
-
-namespace test12 {
-  struct C {
-    C(int x);
-    ~C();
-  };
-  void f(void **ip) {
-    static void *ips[] = { &&l0 };
-    const C c0 = 17;
-  l0: // expected-note {{possible target of indirect goto}}
-    const C &c1 = 42; // expected-note {{jump exits scope of variable with non-trivial destructor}}
-    const C &c2 = c0;
-    goto *ip; // expected-error {{indirect goto might cross protected scopes}}
-  }
-}
-
-namespace test13 {
-  struct C {
-    C(int x);
-    ~C();
-    int i;
-  };
-  void f(void **ip) {
-    static void *ips[] = { &&l0 };
-  l0: // expected-note {{possible target of indirect goto}}
-    const int &c1 = C(1).i; // expected-note {{jump exits scope of variable with non-trivial destructor}}
-    goto *ip;  // expected-error {{indirect goto might cross protected scopes}}
-  }
-}
-
-namespace test14 {
-  struct C {
-    C(int x);
-    ~C();
-    operator int&() const;
-  };
-  void f(void **ip) {
-    static void *ips[] = { &&l0 };
-  l0:
-    // no warning since the C temporary is destructed before the goto.
-    const int &c1 = C(1);
-    goto *ip;
-  }
-}
-
-// PR14225
-namespace test15 {
-  void f1() try {
-    goto x; // expected-error {{goto into protected scope}}
-  } catch(...) {  // expected-note {{jump bypasses initialization of catch block}}
-    x: ;
-  }
-  void f2() try {  // expected-note {{jump bypasses initialization of try block}}
-    x: ;
-  } catch(...) {
-    goto x; // expected-error {{goto into protected scope}}
-  }
-}
-
-namespace test16 {
-Invalid inv; // expected-error {{unknown type name}}
-// Make sure this doesn't assert.
-void fn()
-{
-    int c = 0;
-    if (inv)
-Here: ;
-    goto Here;
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/shift.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/shift.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/shift.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -Wall -Wshift-sign-overflow -ffreestanding -fsyntax-only -verify %s
-
-#include <limits.h>
-
-#define WORD_BIT (sizeof(int) * CHAR_BIT)
-
-template <int N> void f() {
-  (void)(N << 30); // expected-warning {{bits to represent, but 'int' only has}}
-  (void)(30 << N); // expected-warning {{bits to represent, but 'int' only has}}
-}
-
-void test() {
-  f<30>(); // expected-note {{instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/short-enums.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/short-enums.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/short-enums.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fshort-enums -fsyntax-only %s
-
-// This shouldn't crash: PR9474
-
-enum E { VALUE_1 };
-
-template <typename T>
-struct A {};
-
-template <E Enum>
-struct B : A<B<Enum> > {};
-
-void bar(int x) {
-  switch (x) {
-    case sizeof(B<VALUE_1>): ;
-  }
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/short-wchar-sign.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/short-wchar-sign.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/short-wchar-sign.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -triple i386-mingw32 -fsyntax-only -pedantic -verify %s
-// RUN: %clang_cc1 -fshort-wchar -fsyntax-only -pedantic -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -pedantic -verify %s
-// expected-no-diagnostics
-
-// Check that short wchar_t is unsigned, and that regular wchar_t is not.
-int test[(wchar_t(-1)<wchar_t(0)) == (sizeof(wchar_t) == 4) ?1:-1];

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/sourceranges.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/sourceranges.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/sourceranges.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -ast-dump %s | FileCheck %s
-
-template<class T>
-class P {
- public:
-  P(T* t) {}
-};
-
-namespace foo {
-class A { public: A() {} };
-enum B {};
-typedef int C;
-}
-
-// CHECK: VarDecl {{0x[0-9a-fA-F]+}} <line:16:1, col:36> ImplicitConstrArray 'foo::A [2]'
-static foo::A ImplicitConstrArray[2];
-
-int main() {
-  // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} <col:19, col:28> 'foo::A *'
-  P<foo::A> p14 = new foo::A;
-  // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} <col:19, col:28> 'foo::B *'
-  P<foo::B> p24 = new foo::B;
-  // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} <col:19, col:28> 'foo::C *'
-  P<foo::C> pr4 = new foo::C;
-}
-
-foo::A getName() {
-  // CHECK: CXXConstructExpr {{0x[0-9a-fA-F]+}} <col:10, col:17> 'foo::A'
-  return foo::A();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/statements.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/statements.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/statements.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
-
-void foo() { 
-  return foo();
-}
-
-// PR6451 - C++ Jump checking
-struct X {
-  X();
-};
-
-void test2() {
-  goto later;  // expected-error {{goto into protected scope}}
-  X x;         // expected-note {{jump bypasses variable initialization}} 
-later:
-  ;
-}
-
-namespace PR6536 {
-  struct A {};
-  void a() { goto out; A x; out: return; }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/static-array-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/static-array-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/static-array-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-struct X0 {
-  static int array[];
-  
-  int x;
-  int y;
-};
-
-int X0::array[sizeof(X0) * 2];
-
-template<typename T, int N>
-struct X1 {
-  static T array[];
-};
-
-template<typename T, int N>
-T X1<T, N>::array[N];

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/static-assert.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/static-assert.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/static-assert.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 -triple=x86_64-linux-gnu
-
-int f(); // expected-note {{declared here}}
-
-static_assert(f(), "f"); // expected-error {{static_assert expression is not an integral constant expression}} expected-note {{non-constexpr function 'f' cannot be used in a constant expression}}
-static_assert(true, "true is not false");
-static_assert(false, "false is false"); // expected-error {{static_assert failed "false is false"}}
-
-void g() {
-    static_assert(false, "false is false"); // expected-error {{static_assert failed "false is false"}}
-}
-
-class C {
-    static_assert(false, "false is false"); // expected-error {{static_assert failed "false is false"}}
-};
-
-template<int N> struct T {
-    static_assert(N == 2, "N is not 2!"); // expected-error {{static_assert failed "N is not 2!"}}
-};
-
-T<1> t1; // expected-note {{in instantiation of template class 'T<1>' requested here}}
-T<2> t2;
-
-template<typename T> struct S {
-    static_assert(sizeof(T) > sizeof(char), "Type not big enough!"); // expected-error {{static_assert failed "Type not big enough!"}}
-};
-
-S<char> s1; // expected-note {{in instantiation of template class 'S<char>' requested here}}
-S<int> s2;
-
-static_assert(false, L"\xFFFFFFFF"); // expected-error {{static_assert failed L"\xFFFFFFFF"}}
-static_assert(false, u"\U000317FF"); // expected-error {{static_assert failed u"\U000317FF"}}
-// FIXME: render this as u8"\u03A9"
-static_assert(false, u8"Ω"); // expected-error {{static_assert failed u8"\316\251"}}
-static_assert(false, L"\u1234"); // expected-error {{static_assert failed L"\x1234"}}
-static_assert(false, L"\x1ff" "0\x123" "fx\xfffff" "goop"); // expected-error {{static_assert failed L"\x1FF""0\x123""fx\xFFFFFgoop"}}
-
-template<typename T> struct AlwaysFails {
-  // Only give one error here.
-  static_assert(false, ""); // expected-error {{static_assert failed}}
-};
-AlwaysFails<int> alwaysFails;
-
-template<typename T> struct StaticAssertProtected {
-  static_assert(__is_literal(T), ""); // expected-error {{static_assert failed}}
-  static constexpr T t = {}; // no error here
-};
-struct X { ~X(); };
-StaticAssertProtected<int> sap1;
-StaticAssertProtected<X> sap2; // expected-note {{instantiation}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/static-cast-complete-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/static-cast-complete-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/static-cast-complete-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T> struct S {
-  S(int);
-};
-
-struct T; // expected-note{{forward declaration of 'T'}}
-
-void f() {
-  S<int> s0 = static_cast<S<int> >(0);
-  S<void*> s1 = static_cast<S<void*> >(00);
-
-  (void)static_cast<T>(10); // expected-error{{'T' is an incomplete type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/static-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/static-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/static-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,197 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A {};
-struct B : public A {};             // Single public base.
-struct C1 : public virtual B {};    // Single virtual base.
-struct C2 : public virtual B {};
-struct D : public C1, public C2 {}; // Diamond
-struct E : private A {};            // Single private base. expected-note 3 {{declared private here}}
-struct F : public C1 {};            // Single path to B with virtual.
-struct G1 : public B {};
-struct G2 : public B {};
-struct H : public G1, public G2 {}; // Ambiguous path to B.
-
-enum Enum { En1, En2 };
-enum Onom { On1, On2 };
-
-struct Co1 { operator int(); };
-struct Co2 { Co2(int); };
-struct Co3 { };
-struct Co4 { Co4(Co3); operator Co3(); };
-
-// Explicit implicits
-void t_529_2()
-{
-  int i = 1;
-  (void)static_cast<float>(i);
-  double d = 1.0;
-  (void)static_cast<float>(d);
-  (void)static_cast<int>(d);
-  (void)static_cast<char>(i);
-  (void)static_cast<unsigned long>(i);
-  (void)static_cast<int>(En1);
-  (void)static_cast<double>(En1);
-  (void)static_cast<int&>(i);
-  (void)static_cast<const int&>(i);
-
-  int ar[1];
-  (void)static_cast<const int*>(ar);
-  (void)static_cast<void (*)()>(t_529_2);
-
-  (void)static_cast<void*>(0);
-  (void)static_cast<void*>((int*)0);
-  (void)static_cast<volatile const void*>((const int*)0);
-  (void)static_cast<A*>((B*)0);
-  (void)static_cast<A&>(*((B*)0));
-  (void)static_cast<const B*>((C1*)0);
-  (void)static_cast<B&>(*((C1*)0));
-  (void)static_cast<A*>((D*)0);
-  (void)static_cast<const A&>(*((D*)0));
-  (void)static_cast<int B::*>((int A::*)0);
-  (void)static_cast<void (B::*)()>((void (A::*)())0);
-
-  (void)static_cast<int>(Co1());
-  (void)static_cast<Co2>(1);
-  (void)static_cast<Co3>(static_cast<Co4>(Co3()));
-
-  // Bad code below
-
-  (void)static_cast<void*>((const int*)0); // expected-error {{static_cast from 'const int *' to 'void *' is not allowed}}
-  (void)static_cast<A*>((E*)0); // expected-error {{cannot cast 'E' to its private base class 'A'}}
-  (void)static_cast<A*>((H*)0); // expected-error {{ambiguous conversion}}
-  (void)static_cast<int>((int*)0); // expected-error {{static_cast from 'int *' to 'int' is not allowed}}
-  (void)static_cast<A**>((B**)0); // expected-error {{static_cast from 'B **' to 'A **' is not allowed}}
-  (void)static_cast<char&>(i); // expected-error {{non-const lvalue reference to type 'char' cannot bind to a value of unrelated type 'int'}}
-}
-
-// Anything to void
-void t_529_4()
-{
-  static_cast<void>(1);
-  static_cast<void>(t_529_4);
-}
-
-// Static downcasts
-void t_529_5_8()
-{
-  (void)static_cast<B*>((A*)0);
-  (void)static_cast<B&>(*((A*)0));
-  (void)static_cast<const G1*>((A*)0);
-  (void)static_cast<const G1&>(*((A*)0));
-
-  // Bad code below
-
-  (void)static_cast<C1*>((A*)0); // expected-error {{cannot cast 'A *' to 'C1 *' via virtual base 'B'}}
-  (void)static_cast<C1&>(*((A*)0)); // expected-error {{cannot cast 'A' to 'C1 &' via virtual base 'B'}}
-  (void)static_cast<D*>((A*)0); // expected-error {{cannot cast 'A *' to 'D *' via virtual base 'B'}}
-  (void)static_cast<D&>(*((A*)0)); // expected-error {{cannot cast 'A' to 'D &' via virtual base 'B'}}
-  (void)static_cast<B*>((const A*)0); // expected-error {{static_cast from 'const A *' to 'B *' casts away qualifiers}}
-  (void)static_cast<B&>(*((const A*)0)); // expected-error {{static_cast from 'const A' to 'B &' casts away qualifiers}}
-  (void)static_cast<E*>((A*)0); // expected-error {{cannot cast private base class 'A' to 'E'}}
-  (void)static_cast<E&>(*((A*)0)); // expected-error {{cannot cast private base class 'A' to 'E'}}
-  (void)static_cast<H*>((A*)0); // expected-error {{ambiguous cast from base 'A' to derived 'H':\n    struct A -> struct B -> struct G1 -> struct H\n    struct A -> struct B -> struct G2 -> struct H}}
-  (void)static_cast<H&>(*((A*)0)); // expected-error {{ambiguous cast from base 'A' to derived 'H':\n    struct A -> struct B -> struct G1 -> struct H\n    struct A -> struct B -> struct G2 -> struct H}}
-  (void)static_cast<E*>((B*)0); // expected-error {{static_cast from 'B *' to 'E *' is not allowed}}
-  (void)static_cast<E&>(*((B*)0)); // expected-error {{non-const lvalue reference to type 'E' cannot bind to a value of unrelated type 'B'}}
-
-  // TODO: Test inaccessible base in context where it's accessible, i.e.
-  // member function and friend.
-
-  // TODO: Test DR427. This requires user-defined conversions, though.
-}
-
-// Enum conversions
-void t_529_7()
-{
-  (void)static_cast<Enum>(1);
-  (void)static_cast<Enum>(1.0);
-  (void)static_cast<Onom>(En1);
-
-  // Bad code below
-
-  (void)static_cast<Enum>((int*)0); // expected-error {{static_cast from 'int *' to 'Enum' is not allowed}}
-}
-
-// Void pointer to object pointer
-void t_529_10()
-{
-  (void)static_cast<int*>((void*)0);
-  (void)static_cast<const A*>((void*)0);
-
-  // Bad code below
-
-  (void)static_cast<int*>((const void*)0); // expected-error {{static_cast from 'const void *' to 'int *' casts away qualifiers}}
-  (void)static_cast<void (*)()>((void*)0); // expected-error {{static_cast from 'void *' to 'void (*)()' is not allowed}}
-}
-
-// Member pointer upcast.
-void t_529_9()
-{
-  (void)static_cast<int A::*>((int B::*)0);
-
-  // Bad code below
-  (void)static_cast<int A::*>((int H::*)0); // expected-error {{ambiguous conversion from pointer to member of derived class 'H' to pointer to member of base class 'A':}}
-  (void)static_cast<int A::*>((int F::*)0); // expected-error {{conversion from pointer to member of class 'F' to pointer to member of class 'A' via virtual base 'B' is not allowed}}
-}
-
-// PR 5261 - static_cast should instantiate template if possible
-namespace pr5261 {
-  struct base {};
-  template<typename E> struct derived : public base {};
-  template<typename E> struct outer {
-    base *pb;
-    ~outer() { (void)static_cast<derived<E>*>(pb); }
-  };
-  outer<int> EntryList;
-}
-
-
-// Initialization by constructor
-struct X0;
-
-struct X1 {
-  X1();
-  X1(X1&);
-  X1(const X0&);
-  
-  operator X0() const;
-};
-
-struct X0 { };
-
-void test_ctor_init() {
-  (void)static_cast<X1>(X1());
-}
-
-// Casting away constness
-struct X2 {
-};
-
-struct X3 : X2 {
-};
-
-struct X4 {
-  typedef const X3 X3_typedef;
-  
-  void f() const {
-    (void)static_cast<X3_typedef*>(x2);
-  }
-  
-  const X2 *x2;
-};
-
-// PR5897 - accept static_cast from const void* to const int (*)[1].
-void PR5897() { (void)static_cast<const int(*)[1]>((const void*)0); }
-
-namespace PR6072 {
-  struct A { }; 
-  struct B : A { void f(int); void f(); };  // expected-note 2{{candidate function}}
-  struct C : B { };
-  struct D { };
-
-  void f() {
-    (void)static_cast<void (A::*)()>(&B::f);
-    (void)static_cast<void (B::*)()>(&B::f);
-    (void)static_cast<void (C::*)()>(&B::f);
-    (void)static_cast<void (D::*)()>(&B::f); // expected-error{{address of overloaded function 'f' cannot be static_cast to type 'void (PR6072::D::*)()'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/static-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/static-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/static-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// expected-no-diagnostics
-int f() {
-  return 10;
-}
-
-void g() {
-  static int a = f();
-}
-
-static int b = f();

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/storage-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/storage-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/storage-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-extern const int PR6495a = 42;
-extern int PR6495b = 42; // expected-warning{{'extern' variable has an initializer}}
-extern const int PR6495c[] = {42,43,44};
-
-extern struct Test1 {}; // expected-warning {{'extern' is not permitted on a declaration of a type}}
-extern "C" struct Test0 {}; // no warning

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/string-plus-int.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/string-plus-int.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/string-plus-int.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-array-bounds %s -fpascal-strings
-// RUN: %clang_cc1 -fdiagnostics-parseable-fixits -x c++ %s 2>&1 -Wno-array-bounds -fpascal-strings | FileCheck %s
-
-void consume(const char* c) {}
-void consume(const unsigned char* c) {}
-void consume(const wchar_t* c) {}
-void consumeChar(char c) {}
-
-enum MyEnum {
-  kMySmallEnum = 1,
-  kMyEnum = 5
-};
-
-enum OperatorOverloadEnum {
-  kMyOperatorOverloadedEnum = 5
-};
-
-const char* operator+(const char* c, OperatorOverloadEnum e) {
-  return "yo";
-}
-
-const char* operator+(OperatorOverloadEnum e, const char* c) {
-  return "yo";
-}
-
-void f(int index) {
-  // Should warn.
-  // CHECK: fix-it:"{{.*}}":{31:11-31:11}:"&"
-  // CHECK: fix-it:"{{.*}}":{31:17-31:18}:"["
-  // CHECK: fix-it:"{{.*}}":{31:20-31:20}:"]"
-  consume("foo" + 5);  // expected-warning {{adding 'int' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-  consume("foo" + index);  // expected-warning {{adding 'int' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-  consume("foo" + kMyEnum);  // expected-warning {{adding 'MyEnum' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-
-  consume(5 + "foo");  // expected-warning {{adding 'int' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-  consume(index + "foo");  // expected-warning {{adding 'int' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-  consume(kMyEnum + "foo");  // expected-warning {{adding 'MyEnum' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-
-  // FIXME: suggest replacing with "foo"[5]
-  consumeChar(*("foo" + 5));  // expected-warning {{adding 'int' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-  consumeChar(*(5 + "foo"));  // expected-warning {{adding 'int' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-
-  consume(L"foo" + 5);  // expected-warning {{adding 'int' to a string does not append to the string}} expected-note {{use array indexing to silence this warning}}
-
-  // Should not warn.
-  consume(&("foo"[3]));
-  consume(&("foo"[index]));
-  consume(&("foo"[kMyEnum]));
-  consume("foo" + kMySmallEnum);
-  consume(kMySmallEnum + "foo");
-
-  consume(L"foo" + 2);
-
-  consume("foo" + 3);  // Points at the \0
-  consume("foo" + 4);  // Points 1 past the \0, which is legal too.
-  consume("\pfoo" + 4);  // Pascal strings don't have a trailing \0, but they
-                         // have a leading length byte, so this is fine too.
-
-  consume("foo" + kMyOperatorOverloadedEnum);
-  consume(kMyOperatorOverloadedEnum + "foo");
-
-  #define A "foo"
-  #define B "bar"
-  consume(A B + sizeof(A) - 1);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/struct-class-redecl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/struct-class-redecl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/struct-class-redecl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wmismatched-tags -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wmismatched-tags %s 2>&1 | FileCheck %s
-class X; // expected-note 2{{here}}
-typedef struct X * X_t; // expected-warning{{previously declared}}
-union X { int x; float y; }; // expected-error{{use of 'X' with tag type that does not match previous declaration}}
-
-template<typename T> struct Y; // expected-note{{did you mean class here?}}
-template<class U> class Y { }; // expected-warning{{previously declared}}
-
-class A;
-class A;  // expected-note{{previous use is here}}
-struct A;  // expected-warning{{struct 'A' was previously declared as a class}}
-
-class B;  // expected-note{{did you mean struct here?}}
-class B;  // expected-note{{previous use is here}}\
-          // expected-note{{did you mean struct here?}}
-struct B;  // expected-warning{{struct 'B' was previously declared as a class}}
-struct B {};  // expected-warning{{'B' defined as a struct here but previously declared as a class}}
-
-class C;  // expected-note{{previous use is here}}
-struct C;  // expected-warning{{struct 'C' was previously declared as a class}}\
-           // expected-note{{previous use is here}}\
-           // expected-note{{did you mean class here?}}
-class C;  // expected-warning{{class 'C' was previously declared as a struct}}\
-          // expected-note{{previous use is here}}
-struct C;  // expected-warning{{struct 'C' was previously declared as a class}}\
-           // expected-note{{did you mean class here?}}
-class C {};  // expected-warning{{'C' defined as a class here but previously declared as a struct}}
-
-struct D {};  // expected-note{{previous definition is here}}\
-              // expected-note{{previous use is here}}
-class D {};  // expected-error{{redefinition of 'D'}}
-struct D;
-class D;  // expected-warning{{class 'D' was previously declared as a struct}}\
-          // expected-note{{did you mean struct here?}}
-
-class E;
-class E;
-class E {};
-class E;
-
-struct F;
-struct F;
-struct F {};
-struct F;
-
-template<class U> class G;  // expected-note{{previous use is here}}\
-                            // expected-note{{did you mean struct here?}}
-template<class U> struct G;  // expected-warning{{struct template 'G' was previously declared as a class template}}
-template<class U> struct G {};  // expected-warning{{'G' defined as a struct template here but previously declared as a class template}}
-
-/*
-*** 'X' messages ***
-CHECK: warning: struct 'X' was previously declared as a class
-CHECK: {{^}}typedef struct X * X_t;
-CHECK: {{^}}        ^{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}class X;
-CHECK: {{^}}      ^{{$}}
-CHECK: error: use of 'X' with tag type that does not match previous declaration
-CHECK: {{^}}union X { int x; float y; };
-CHECK: {{^}}^~~~~{{$}}
-CHECK: {{^}}class{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}class X;
-CHECK: {{^}}      ^{{$}}
-*** 'Y' messages ***
-CHECK: warning: 'Y' defined as a class template here but
-      previously declared as a struct template
-CHECK: {{^}}template<class U> class Y { };
-CHECK: {{^}}                  ^{{$}}
-CHECK: note: did you mean class here?
-CHECK: {{^}}template<typename T> struct Y;
-CHECK: {{^}}                     ^~~~~~{{$}}
-CHECK: {{^}}                     class{{$}}
-*** 'A' messages ***
-CHECK: warning: struct 'A' was previously declared as a class
-CHECK: {{^}}struct A;
-CHECK: {{^}}^{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}class A;
-CHECK: {{^}}      ^{{$}}
-*** 'B' messages ***
-CHECK: warning: struct 'B' was previously declared as a class
-CHECK: {{^}}struct B;
-CHECK: {{^}}^{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}class B;
-CHECK: {{^}}      ^{{$}}
-CHECK: 'B' defined as a struct here but previously declared as a class
-CHECK: {{^}}struct B {};
-CHECK: {{^}}^{{$}}
-CHECK: note: did you mean struct here?
-CHECK: {{^}}class B;
-CHECK: {{^}}^~~~~{{$}}
-CHECK: {{^}}struct{{$}}
-CHECK: note: did you mean struct here?
-CHECK: {{^}}class B;
-CHECK: {{^}}^~~~~{{$}}
-CHECK: {{^}}struct{{$}}
-*** 'C' messages ***
-CHECK: warning: struct 'C' was previously declared as a class
-CHECK: {{^}}struct C;
-CHECK: {{^}}^{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}class C;
-CHECK: {{^}}      ^{{$}}
-CHECK: warning: class 'C' was previously declared as a struct
-CHECK: {{^}}class C;
-CHECK: {{^}}^{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}struct C;
-CHECK: {{^}}       ^{{$}}
-CHECK: warning: struct 'C' was previously declared as a class
-CHECK: {{^}}struct C;
-CHECK: {{^}}^{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}class C;
-CHECK: {{^}}      ^{{$}}
-CHECK: warning: 'C' defined as a class here but previously declared as a struct
-CHECK: {{^}}class C {};
-CHECK: {{^}}^{{$}}
-CHECK: note: did you mean class here?
-CHECK: {{^}}struct C;
-CHECK: {{^}}^~~~~~{{$}}
-CHECK: {{^}}class{{$}}
-CHECK: note: did you mean class here?
-CHECK: {{^}}struct C;
-CHECK: {{^}}^~~~~~{{$}}
-CHECK: {{^}}class{{$}}
-*** 'D' messages ***
-CHECK: error: redefinition of 'D'
-CHECK: {{^}}class D {};
-CHECK: {{^}}      ^{{$}}
-CHECK: note: previous definition is here
-CHECK: {{^}}struct D {};
-CHECK: {{^}}       ^{{$}}
-CHECK: warning: class 'D' was previously declared as a struct
-CHECK: {{^}}class D;
-CHECK: {{^}}^{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}struct D {};
-CHECK: {{^}}       ^{{$}}
-CHECK: note: did you mean struct here?
-CHECK: {{^}}class D;
-CHECK: {{^}}^~~~~{{$}}
-CHECK: {{^}}struct{{$}}
-*** 'E' messages ***
-*** 'F' messages ***
-*** 'G' messages ***
-CHECK: warning: struct template 'G' was previously declared as a class template
-CHECK: {{^}}template<class U> struct G;
-CHECK: {{^}}                  ^{{$}}
-CHECK: note: previous use is here
-CHECK: {{^}}template<class U> class G;
-CHECK: {{^}}                        ^{{$}}
-CHECK: warning: 'G' defined as a struct template here but previously declared as a class template
-CHECK: {{^}}template<class U> struct G {};
-CHECK: {{^}}                  ^{{$}}
-CHECK: note: did you mean struct here?
-CHECK: {{^}}template<class U> class G;
-CHECK: {{^}}                  ^~~~~
-CHECK: {{^}}                  struct
-*/

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// PR5518
-struct A { 
-  explicit operator int(); // expected-note{{conversion to integral type}}
-};
-
-void x() { 
-  switch(A()) { // expected-error{{explicit conversion to}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-cxx98.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-cxx98.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-cxx98.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 -Wimplicit-fallthrough %s
-// XFAIL: *
-
-// NOTE: This test is marked XFAIL until we come up with a good language design
-// for a worfklow to use this warning outside of C++11.
-
-int fallthrough(int n) {
-  switch (n / 10) {
-      if (n - 1) {
-        n = 100;
-      } else if (n - 2) {
-        n = 101;
-      } else if (n - 3) {
-        n = 102;
-      }
-    case -1: // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'break;' to avoid fall-through}}
-      ;
-    case 0: {// expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'break;' to avoid fall-through}}
-    }
-    case 1:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'break;' to avoid fall-through}}
-      n += 100         ;
-    case 3:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'break;' to avoid fall-through}}
-      if (n > 0)
-        n += 200;
-    case 4:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'break;' to avoid fall-through}}
-      if (n < 0)
-        ;
-    case 5:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'break;' to avoid fall-through}}
-      switch (n) {
-      case 111:
-        break;
-      case 112:
-        break;
-      case 113:
-        break    ;
-      }
-    case 6:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'break;' to avoid fall-through}}
-      n += 300;
-  }
-  switch (n / 30) {
-    case 11:
-    case 12:  // no warning here, intended fall-through, no statement between labels
-      n += 1600;
-  }
-  switch (n / 40) {
-    case 13:
-      if (n % 2 == 0) {
-        return 1;
-      } else {
-        return 2;
-      }
-    case 15:  // no warning here, there's no fall-through
-      n += 3200;
-  }
-  switch (n / 50) {
-    case 17: {
-      if (n % 2 == 0) {
-        return 1;
-      } else {
-        return 2;
-      }
-    }
-    case 19: { // no warning here, there's no fall-through
-      n += 6400;
-      return 3;
-    }
-    case 21: { // no warning here, there's no fall-through
-      break;
-    }
-    case 23: // no warning here, there's no fall-through
-      n += 128000;
-      break;
-    case 25: // no warning here, there's no fall-through
-      break;
-  }
-
-  return n;
-}
-
-class ClassWithDtor {
-public:
-  ~ClassWithDtor() {}
-};
-
-void fallthrough2(int n) {
-  switch (n) {
-    case 0:
-    {
-      ClassWithDtor temp;
-      break;
-    }
-    default: // no warning here, there's no fall-through
-      break;
-  }
-}
-
-#define MY_SWITCH(X, Y, Z, U, V) switch (X) { case Y: Z; case U: V; }
-#define MY_SWITCH2(X, Y, Z) switch (X) { Y; Z; }
-#define MY_CASE(X, Y) case X: Y
-#define MY_CASE2(X, Y, U, V) case X: Y; case U: V
-
-int fallthrough_macro1(int n) {
-  MY_SWITCH(n, 13, n *= 2, 14, break)  // expected-warning{{unannotated fall-through between switch labels}}
-
-  switch (n + 1) {
-    MY_CASE(33, n += 2);
-    MY_CASE(44, break);  // expected-warning{{unannotated fall-through between switch labels}}
-    MY_CASE(55, n += 3);
-  }
-
-  switch (n + 3) {
-    MY_CASE(333, return 333);
-    MY_CASE2(444, n += 44, 4444, break);  // expected-warning{{unannotated fall-through between switch labels}}
-    MY_CASE(555, n += 33);
-  }
-
-  MY_SWITCH2(n + 4, MY_CASE(17, n *= 3), MY_CASE(19, break))  // expected-warning{{unannotated fall-through between switch labels}}
-
-  MY_SWITCH2(n + 5, MY_CASE(21, break), MY_CASE2(23, n *= 7, 25, break))  // expected-warning{{unannotated fall-through between switch labels}}
-
-  return n;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-macro.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-macro.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-macro.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,139 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wimplicit-fallthrough -DCOMMAND_LINE_FALLTHROUGH=[[clang::fallthrough]] %s
-
-int fallthrough_compatibility_macro_from_command_line(int n) {
-  switch (n) {
-    case 0:
-      n = n * 10;
-    case 1: // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'COMMAND_LINE_FALLTHROUGH;' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      ;
-  }
-  return n;
-}
-
-#ifdef __clang__
-#if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
-#define COMPATIBILITY_FALLTHROUGH   [ [ /* test */  clang /* test */ \
-    ::  fallthrough  ]  ]    // testing whitespace and comments in macro definition
-#endif
-#endif
-
-#ifndef COMPATIBILITY_FALLTHROUGH
-#define COMPATIBILITY_FALLTHROUGH do { } while (0)
-#endif
-
-int fallthrough_compatibility_macro_from_source(int n) {
-  switch (n) {
-    case 0:
-      n = n * 20;
-    case 1: // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'COMPATIBILITY_FALLTHROUGH;' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      ;
-  }
-  return n;
-}
-
-// Deeper macro substitution
-#define M1 [[clang::fallthrough]]
-#ifdef __clang__
-#define M2 M1
-#else
-#define M2
-#endif
-
-#define WRONG_MACRO1 clang::fallthrough
-#define WRONG_MACRO2 [[clang::fallthrough]
-#define WRONG_MACRO3 [[clang::fall through]]
-#define WRONG_MACRO4 [[clang::fallthrough]]]
-
-int fallthrough_compatibility_macro_in_macro(int n) {
-  switch (n) {
-    case 0:
-      n = n * 20;
-    case 1: // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'M1;' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-                                                                          // there was an idea that this ^ should be M2
-      ;
-  }
-  return n;
-}
-
-#undef M1
-#undef M2
-#undef COMPATIBILITY_FALLTHROUGH
-#undef COMMAND_LINE_FALLTHROUGH
-
-int fallthrough_compatibility_macro_undefined(int n) {
-  switch (n) {
-    case 0:
-      n = n * 20;
-    case 1: // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      ;
-  }
-#define TOO_LATE [[clang::fallthrough]]
-  return n;
-}
-#undef TOO_LATE
-
-#define MACRO_WITH_HISTORY 11111111
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY [[clang::fallthrough]]
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY 2222222
-
-int fallthrough_compatibility_macro_history(int n) {
-  switch (n) {
-    case 0:
-      n = n * 20;
-#undef MACRO_WITH_HISTORY
-    case 1: // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      ;
-#define MACRO_WITH_HISTORY [[clang::fallthrough]]
-  }
-  return n;
-}
-
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY 11111111
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY [[clang::fallthrough]]
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY 2222222
-#undef MACRO_WITH_HISTORY
-
-int fallthrough_compatibility_macro_history2(int n) {
-  switch (n) {
-    case 0:
-      n = n * 20;
-#define MACRO_WITH_HISTORY [[clang::fallthrough]]
-    case 1: // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'MACRO_WITH_HISTORY;' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      ;
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY 3333333
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY 4444444
-#undef MACRO_WITH_HISTORY
-#define MACRO_WITH_HISTORY 5555555
-  }
-  return n;
-}
-
-template<const int N>
-int fallthrough_compatibility_macro_history_template(int n) {
-  switch (N * n) {
-    case 0:
-      n = n * 20;
-#define MACRO_WITH_HISTORY2 [[clang::fallthrough]]
-    case 1: // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'MACRO_WITH_HISTORY2;' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      ;
-#undef MACRO_WITH_HISTORY2
-#define MACRO_WITH_HISTORY2 3333333
-  }
-  return n;
-}
-
-#undef MACRO_WITH_HISTORY2
-#define MACRO_WITH_HISTORY2 4444444
-#undef MACRO_WITH_HISTORY2
-#define MACRO_WITH_HISTORY2 5555555
-
-void f() {
-  fallthrough_compatibility_macro_history_template<1>(0); // expected-note{{in instantiation of function template specialization 'fallthrough_compatibility_macro_history_template<1>' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough-per-method.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wimplicit-fallthrough-per-function %s
-
-
-int fallthrough(int n) {
-  switch (n / 10) {
-    case 0:
-      n += 100;
-    case 1:  // expected-warning{{unannotated fall-through}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      switch (n) {
-      case 111:
-        n += 111;
-        [[clang::fallthrough]];
-      case 112:
-        n += 112;
-      case 113:  // expected-warning{{unannotated fall-through}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-        n += 113;
-        break    ;
-      }
-  }
-  return n;
-}
-
-int fallthrough2(int n) {
-  switch (n / 10) {
-    case 0:
-      n += 100;
-    case 1:  // no warning, as we didn't "opt-in" for it in this method
-      switch (n) {
-      case 111:
-        n += 111;
-      case 112:  // no warning, as we didn't "opt-in" for it in this method
-        n += 112;
-      case 113:  // no warning, as we didn't "opt-in" for it in this method
-        n += 113;
-        break    ;
-      }
-  }
-  return n;
-}
-
-void unscoped(int n) {
-  switch (n % 2) {
-    case 0:
-      // FIXME: This should be typo-corrected, probably.
-      [[fallthrough]]; // expected-warning{{unknown attribute 'fallthrough' ignored}}
-    case 2: // expected-warning{{unannotated fall-through}} expected-note{{clang::fallthrough}} expected-note{{break;}}
-      [[clang::fallthrough]];
-    case 1:
-      break;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/switch-implicit-fallthrough.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,267 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wimplicit-fallthrough %s
-
-
-int fallthrough(int n) {
-  switch (n / 10) {
-      if (n - 1) {
-        n = 100;
-      } else if (n - 2) {
-        n = 101;
-      } else if (n - 3) {
-        n = 102;
-      }
-    case -1:  // no warning here, ignore fall-through from unreachable code
-      ;
-    case 0: {// expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-    }
-    case 1:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      n += 100         ;
-    case 3:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      if (n > 0)
-        n += 200;
-    case 4:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      if (n < 0)
-        ;
-    case 5:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      switch (n) {
-      case 111:
-        break;
-      case 112:
-        break;
-      case 113:
-        break    ;
-      }
-    case 6:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      n += 300;
-    case 66:  // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert 'break;' to avoid fall-through}}
-    case 67:
-    case 68:
-      break;
-  }
-  switch (n / 15) {
-label_default:
-    default:
-      n += 333;
-      if (n % 10)
-        goto label_default;
-      break;
-    case 70:
-      n += 335;
-      break;
-  }
-  switch (n / 20) {
-    case 7:
-      n += 400;
-      [[clang::fallthrough]];
-    case 9:  // no warning here, intended fall-through marked with an attribute
-      n += 800;
-      [[clang::fallthrough]];
-    default: { // no warning here, intended fall-through marked with an attribute
-      if (n % 2 == 0) {
-        return 1;
-      } else {
-        [[clang::fallthrough]];
-      }
-    }
-    case 10:  // no warning here, intended fall-through marked with an attribute
-      if (n % 3 == 0) {
-        n %= 3;
-      } else {
-        [[clang::fallthrough]];
-      }
-    case 110:  // expected-warning{{unannotated fall-through between switch labels}} but no fix-it hint as we have one fall-through annotation!
-      n += 800;
-  }
-  switch (n / 30) {
-    case 11:
-    case 12:  // no warning here, intended fall-through, no statement between labels
-      n += 1600;
-  }
-  switch (n / 40) {
-    case 13:
-      if (n % 2 == 0) {
-        return 1;
-      } else {
-        return 2;
-      }
-    case 15:  // no warning here, there's no fall-through
-      n += 3200;
-  }
-  switch (n / 50) {
-    case 17: {
-      if (n % 2 == 0) {
-        return 1;
-      } else {
-        return 2;
-      }
-    }
-    case 19: { // no warning here, there's no fall-through
-      n += 6400;
-      return 3;
-    }
-    case 21: { // no warning here, there's no fall-through
-      break;
-    }
-    case 23: // no warning here, there's no fall-through
-      n += 128000;
-      break;
-    case 25: // no warning here, there's no fall-through
-      break;
-  }
-
-  return n;
-}
-
-class ClassWithDtor {
-public:
-  ~ClassWithDtor() {}
-};
-
-void fallthrough2(int n) {
-  switch (n) {
-    case 0:
-    {
-      ClassWithDtor temp;
-      break;
-    }
-    default: // no warning here, there's no fall-through
-      break;
-  }
-}
-
-void fallthrough3(int n) {
-  switch (n) {
-    case 1:
-      do {
-        return;
-      } while (0);
-    case 2:
-      do {
-        ClassWithDtor temp;
-        return;
-      } while (0);
-    case 3:
-      break;
-  }
-}
-
-#define MY_SWITCH(X, Y, Z, U, V) switch (X) { case Y: Z; case U: V; }
-#define MY_SWITCH2(X, Y, Z) switch (X) { Y; Z; }
-#define MY_CASE(X, Y) case X: Y
-#define MY_CASE2(X, Y, U, V) case X: Y; case U: V
-
-int fallthrough_macro1(int n) {
-  MY_SWITCH(n, 13, n *= 2, 14, break)  // expected-warning{{unannotated fall-through between switch labels}}
-
-  switch (n + 1) {
-    MY_CASE(33, n += 2);
-    MY_CASE(44, break);  // expected-warning{{unannotated fall-through between switch labels}}
-    MY_CASE(55, n += 3);
-  }
-
-  switch (n + 3) {
-    MY_CASE(333, return 333);
-    MY_CASE2(444, n += 44, 4444, break);  // expected-warning{{unannotated fall-through between switch labels}}
-    MY_CASE(555, n += 33);
-  }
-
-  MY_SWITCH2(n + 4, MY_CASE(17, n *= 3), MY_CASE(19, break))  // expected-warning{{unannotated fall-through between switch labels}}
-
-  MY_SWITCH2(n + 5, MY_CASE(21, break), MY_CASE2(23, n *= 7, 25, break))  // expected-warning{{unannotated fall-through between switch labels}}
-
-  return n;
-}
-
-void fallthrough_cfgblock_with_null_successor(int x) {
-  (x && "") ? (void)(0) : (void)(1);
-  switch (x) {}
-}
-
-int fallthrough_position(int n) {
-  switch (n) {
-      [[clang::fallthrough]];  // expected-warning{{fallthrough annotation does not directly precede switch label}}
-      n += 300;
-      [[clang::fallthrough]];  // expected-warning{{fallthrough annotation in unreachable code}}
-    case 221:
-      [[clang::fallthrough]];  // expected-warning{{fallthrough annotation does not directly precede switch label}}
-      return 1;
-      [[clang::fallthrough]];  // expected-warning{{fallthrough annotation in unreachable code}}
-    case 222:
-      [[clang::fallthrough]];  // expected-warning{{fallthrough annotation does not directly precede switch label}}
-      n += 400;
-    case 223:          // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
-      [[clang::fallthrough]]; // expected-warning{{fallthrough annotation does not directly precede switch label}}
-  }
-
-  long p = static_cast<long>(n) * n;
-  switch (sizeof(p)) {
-    case 9:
-      n += static_cast<int>(p >> 32);
-      [[clang::fallthrough]];  // no warning here
-    case 5:
-      n += static_cast<int>(p);
-      [[clang::fallthrough]];  // no warning here
-    default:
-      n += 1;
-      break;
-  }
-
-  return n;
-}
-
-enum Enum {
-  Value1, Value2
-};
-
-int fallthrough_covered_enums(Enum e) {
-  int n = 0;
-  switch (e) {
-    default:
-      n += 17;
-      [[clang::fallthrough]];  // no warning here, this shouldn't be treated as unreachable code
-    case Value1:
-      n += 19;
-      break;
-    case Value2:
-      n += 21;
-      break;
-  }
-  return n;
-}
-
-int fallthrough_targets(int n) {
-  [[clang::fallthrough]]; // expected-error{{fallthrough annotation is outside switch statement}}
-
-  [[clang::fallthrough]]  // expected-error{{fallthrough attribute is only allowed on empty statements}}
-  switch (n) {
-    case 121:
-      n += 400;
-      [[clang::fallthrough]]; // no warning here, correct target
-    case 123:
-      [[clang::fallthrough]]  // expected-error{{fallthrough attribute is only allowed on empty statements}}
-      n += 800;
-      break;
-    [[clang::fallthrough]]    // expected-error{{fallthrough attribute is only allowed on empty statements}} expected-note{{did you forget ';'?}}
-    case 125:
-      n += 1600;
-  }
-  return n;
-}
-
-// Fallthrough annotations in local classes used to generate "fallthrough
-// annotation does not directly precede switch label" warning.
-void fallthrough_in_local_class() {
-  class C {
-    void f(int x) {
-      switch (x) {
-        case 0:
-          x++;
-          [[clang::fallthrough]]; // no diagnostics
-        case 1:
-          x++;
-          break;
-      }
-    }
-  };
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/switch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/switch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/switch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-void test() {
-  bool x = true;
-  switch (x) { // expected-warning {{bool}}
-    case 0:
-      break;
-  }
-
-  int n = 3;
-  switch (n && true) { // expected-warning {{bool}}
-    case 1:
-      break;
-  }
-}
-
-// PR5518
-struct A { 
-  operator int(); // expected-note{{conversion to integral type}}
-};
-
-void x() { 
-  switch(A()) {
-  }
-}
-
-enum E { e1, e2 };
-struct B : A {
-  operator E() const; // expected-note{{conversion to enumeration type}}
-};
-
-void x2() {
-  switch (B()) { // expected-error{{multiple conversions}}
-  }
-}
-
-struct C; // expected-note{{forward declaration}}
-
-void x3(C &c) {
-  switch (c) { // expected-error{{incomplete class type}}
-  }
-}
-
-namespace test3 {
-  enum En { A, B, C };
-  template <En how> void foo() {
-    int x = 0, y = 5;
-
-    switch (how) { //expected-warning {{no case matching constant switch condition '2'}}
-    case A: x *= y; break;
-    case B: x += y; break;
-    // No case for C, but it's okay because we have a constant condition.
-    }
-  }
-
-  template void foo<A>();
-  template void foo<B>();
-  template void foo<C>(); //expected-note {{in instantiation}}
-}
-
-// PR9304 and rdar://9045501
-void click_check_header_sizes() {
-  switch (0 == 8) {  // expected-warning {{switch condition has boolean value}}
-  case 0: ;
-  }
-}
-
-void local_class(int n) {
-  for (;;) switch (n) {
-  case 0:
-    struct S {
-      void f() {
-        case 1: // expected-error {{'case' statement not in switch statement}}
-        break; // expected-error {{'break' statement not in loop or switch statement}}
-        default: // expected-error {{'default' statement not in switch statement}}
-        continue; // expected-error {{'continue' statement not in loop statement}}
-      }
-    };
-    S().f();
-    []{
-      case 2: // expected-error {{'case' statement not in switch statement}}
-      break; // expected-error {{'break' statement not in loop or switch statement}}
-      default: // expected-error {{'default' statement not in switch statement}}
-      continue; // expected-error {{'continue' statement not in loop statement}}
-    }();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/tag-ambig.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/tag-ambig.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/tag-ambig.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// <rdar://problem/9168556>
-typedef struct Point Point;
-
-namespace NameSpace {
-  class Point;
-}
-
-using namespace NameSpace;
-
-class Test
-{
-public:
-  struct Point { };
-  virtual bool testMethod (Test::Point& p) = 0;
-};
-
-// PR8151
-namespace A { struct Face {}; }
-namespace B { struct Face {}; }
-using namespace A;
-using namespace B;
- 
-class C {
-  struct Face;
-  Face *mFaces;
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/templated-friend-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/templated-friend-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/templated-friend-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s
-
-template <typename T>
-struct Foo {
-  template <typename U>
-  struct Bar {};
-
-  // The templated declaration for class Bar should not be instantiated when
-  // Foo<int> is. This is to protect against PR5848; for now, this "parses" but
-  // requires a rewrite of the templated friend code to be properly fixed.
-  template <typename U>
-  friend struct Bar;
-};
-
-Foo<int> x;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/this.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/this.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/this.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-int x = this; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-
-void f() {
-  int x = this; // expected-error {{invalid use of 'this' outside of a non-static member function}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/trailing-return-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/trailing-return-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/trailing-return-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-template <class T>
-struct only
-{
-    only(T) {}
-
-    template <class U>
-    only(U)
-    {
-        static_assert(sizeof(U) == 0, "expected type failure");
-    }
-};
-
-auto f() -> int
-{
-    return 0;
-}
-
-auto g(); // expected-error{{return without trailing return type}}
-
-int h() -> int; // expected-error{{trailing return type must specify return type 'auto', not 'int'}}
-
-int i();
-auto i() -> int;
-int i() {}
-
-using T = auto (int) -> auto (*)(char) -> void; // expected-note {{previous}}
-using T = void; // expected-error {{type alias redefinition with different types ('void' vs 'auto (int) -> auto (*)(char) -> void')}}
-
-using U = auto (int) -> auto (*)(char) -> void;
-using U = void (*(int))(char); // ok
-
-int x;
-
-template <class T>
-auto i(T x) -> decltype(x)
-{
-    return x;
-}
-
-only<double> p1 = i(1.0);
-
-template <class T>
-struct X
-{
-    auto f(T x) -> T { return x; }
-
-    template <class U>
-    auto g(T x, U y) -> decltype(x + y)
-    {
-        return x + y;
-    }
-
-  template<typename U>
-  struct nested {
-    template <class V>
-    auto h(T x, U y, V z) -> decltype(x + y + z)
-    {
-        return x + y + z;
-    }
-  };
-
-  template<typename U>
-  nested<U> get_nested();
-};
-
-X<int> xx;
-only<int> p2 = xx.f(0L);
-only<double> p3 = xx.g(0L, 1.0);
-only<double> p4 = xx.get_nested<double>().h(0L, 1.0, 3.14f);
-
-namespace PR12053 {
-  template <typename T>
-  auto f1(T t) -> decltype(f1(t)) {} // expected-note{{candidate template ignored}}
-  
-  void test_f1() {
-    f1(0); // expected-error{{no matching function for call to 'f1'}}
-  }
-  
-  template <typename T>
-  auto f2(T t) -> decltype(f2(&t)) {} // expected-note{{candidate template ignored}}
-  
-  void test_f2() {
-    f2(0); // expected-error{{no matching function for call to 'f2'}}
-  }
-}
-
-namespace DR1608 {
-  struct S {
-    void operator+();
-    int operator[](int);
-    auto f() -> decltype(+*this); // expected-note {{here}}
-    auto f() -> decltype((*this)[0]); // expected-error {{cannot be overloaded}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/trivial-constructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/trivial-constructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/trivial-constructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-struct T1 {
-};
-static_assert(__has_trivial_constructor(T1), "T1 has trivial constructor!");
-
-struct T2 {
-  T2();
-};
-static_assert(!__has_trivial_constructor(T2), "T2 has a user-declared constructor!");
-
-struct T3 {
-  virtual void f();
-};
-static_assert(!__has_trivial_constructor(T3), "T3 has a virtual function!");
-
-struct T4 : virtual T3 {
-};
-static_assert(!__has_trivial_constructor(T4), "T4 has a virtual base class!");
-
-struct T5 : T1 {
-};
-static_assert(__has_trivial_constructor(T5), "All the direct base classes of T5 have trivial constructors!");
-
-struct T6 {
-  T5 t5;
-  T1 t1[2][2];
-  static T2 t2;
-};
-static_assert(__has_trivial_constructor(T6), "All nonstatic data members of T6 have trivial constructors!");
-
-struct T7 {
-  T4 t4;
-};
-static_assert(!__has_trivial_constructor(T7), "t4 does not have a trivial constructor!");
-
-struct T8 : T2 {
-};
-static_assert(!__has_trivial_constructor(T8), "The base class T2 does not have a trivial constructor!");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/trivial-destructor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/trivial-destructor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/trivial-destructor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-struct T1 {
-};
-static_assert(__has_trivial_destructor(T1), "T1 has trivial destructor!");
-
-struct T2 {
-  ~T2();
-};
-static_assert(!__has_trivial_destructor(T2), "T2 has a user-declared destructor!");
-
-struct T3 {
-  virtual void f();
-};
-static_assert(__has_trivial_destructor(T3), "T3 has a virtual function (but still a trivial destructor)!");
-
-struct T4 : virtual T3 {
-};
-static_assert(__has_trivial_destructor(T4), "T4 has a virtual base class! (but still a trivial destructor)!");
-
-struct T5 : T1 {
-};
-static_assert(__has_trivial_destructor(T5), "All the direct base classes of T5 have trivial destructors!");
-
-struct T6 {
-  T5 t5;
-  T1 t1[2][2];
-  static T2 t2;
-};
-static_assert(__has_trivial_destructor(T6), "All nonstatic data members of T6 have trivial destructors!");
-
-struct T7 {
-  T2 t2;
-};
-static_assert(!__has_trivial_destructor(T7), "t2 does not have a trivial destructor!");
-
-struct T8 : T2 {
-};
-static_assert(!__has_trivial_destructor(T8), "The base class T2 does not have a trivial destructor!");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/type-convert-construct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/type-convert-construct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/type-convert-construct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-void f() {
-  float v1 = float(1);
-  int v2 = typeof(int)(1,2); // expected-error {{excess elements in scalar initializer}}
-  typedef int arr[];
-  int v3 = arr(); // expected-error {{array types cannot be value-initialized}}
-  int v4 = int();
-  int v5 = int; // expected-error {{expected '(' for function-style cast or type construction}}
-  typedef int T;
-  int *p;
-  bool v6 = T(0) == p;
-  char *str;
-  str = "a string"; // expected-warning{{conversion from string literal to 'char *' is deprecated}}
-  wchar_t *wstr;
-  wstr = L"a wide string"; // expected-warning{{conversion from string literal to 'wchar_t *' is deprecated}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/type-definition-in-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/type-definition-in-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/type-definition-in-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct S0;
-struct S1;
-struct S2;
-struct S3;
-struct S4;
-struct S5;
-struct S6;
-
-struct S0 { int x; };
-
-void f0() {
-  typedef struct S1 { int x; } S1_typedef;
-
-  (void)((struct S2 { int x; }*)0); // expected-error{{can not be defined}}
-
-  struct S3 { int x; } s3;
-
-  (void)static_cast<struct S4 { int x; } *>(0); // expected-error{{can not be defined}}
-}
-
-struct S5 { int x; } f1() { return S5(); } // expected-error{{result type}}
-
-void f2(struct S6 { int x; } p); // expected-error{{parameter type}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/type-dependent-exprs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/type-dependent-exprs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/type-dependent-exprs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class X { 
-public:
-  virtual int f();
-};
-
-void g(int); // expected-note{{candidate function}}
-
-template<typename T>
-T f(T x) {
-  (void)(x + 0);
-  (void)T(0);
-  (void)(x += 0);
-  (void)(x? x : x);
-  (void)static_cast<int>(x);
-  (void)reinterpret_cast<int>(x);
-  (void)dynamic_cast<X*>(&x);
-  (void)const_cast<int>(x);
-  return g(x);
-  h(x); // h is a dependent name
-  g(1, 1); // expected-error{{no matching function for call}}
-  h(1); // expected-error{{use of undeclared identifier 'h'}}
-  return 0;
-}
-
-// This one entered into an infinite loop.
-template <unsigned long N>
-void rdar8520617() {
-  if (N > 1) { }
-}
-
-int f2() {
-  rdar8520617<0>();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/type-formatting.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/type-formatting.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/type-formatting.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct X0 { };
-struct X1 { };
-
-template<typename T>
-void f0() {
-  const T *t = (const X0*)0; // expected-error{{cannot initialize a variable of type 'const X1 *' with an rvalue of type 'const X0 *'}}
-}
-template void f0<X1>(); // expected-note{{instantiation of}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/type-traits-incomplete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/type-traits-incomplete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/type-traits-incomplete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-
-struct S; // expected-note 2 {{forward declaration of 'S'}}
-
-void f() {
-  __is_pod(S); // expected-error{{incomplete type 'S' used in type trait expression}}
-  __is_pod(S[]); // expected-error{{incomplete type 'S' used in type trait expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/type-traits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/type-traits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/type-traits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1929 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=gnu++11 %s 
-#define T(b) (b) ? 1 : -1
-#define F(b) (b) ? -1 : 1
-
-struct NonPOD { NonPOD(int); };
-
-// PODs
-enum Enum { EV };
-struct POD { Enum e; int i; float f; NonPOD* p; };
-struct Empty {};
-typedef Empty EmptyAr[10];
-typedef int Int;
-typedef Int IntAr[10];
-typedef Int IntArNB[];
-class Statics { static int priv; static NonPOD np; };
-union EmptyUnion {};
-union Union { int i; float f; };
-struct HasFunc { void f (); };
-struct HasOp { void operator *(); };
-struct HasConv { operator int(); };
-struct HasAssign { void operator =(int); };
-
-struct HasAnonymousUnion {
-  union {
-    int i;
-    float f;
-  };
-};
-
-typedef int Vector __attribute__((vector_size(16)));
-typedef int VectorExt __attribute__((ext_vector_type(4)));
-
-// Not PODs
-typedef const void cvoid;
-struct Derives : POD {};
-typedef Derives DerivesAr[10];
-typedef Derives DerivesArNB[];
-struct DerivesEmpty : Empty {};
-struct HasCons { HasCons(int); };
-struct HasCopyAssign { HasCopyAssign operator =(const HasCopyAssign&); };
-struct HasMoveAssign { HasMoveAssign operator =(const HasMoveAssign&&); };
-struct HasNoThrowMoveAssign { 
-  HasNoThrowMoveAssign& operator=(
-    const HasNoThrowMoveAssign&&) throw(); };
-struct HasNoExceptNoThrowMoveAssign { 
-  HasNoExceptNoThrowMoveAssign& operator=(
-    const HasNoExceptNoThrowMoveAssign&&) noexcept; 
-};
-struct HasThrowMoveAssign { 
-  HasThrowMoveAssign& operator=(
-    const HasThrowMoveAssign&&) throw(POD); };
-struct HasNoExceptFalseMoveAssign { 
-  HasNoExceptFalseMoveAssign& operator=(
-    const HasNoExceptFalseMoveAssign&&) noexcept(false); };
-struct HasMoveCtor { HasMoveCtor(const HasMoveCtor&&); };
-struct HasMemberMoveCtor { HasMoveCtor member; };
-struct HasMemberMoveAssign { HasMoveAssign member; };
-struct HasStaticMemberMoveCtor { static HasMoveCtor member; };
-struct HasStaticMemberMoveAssign { static HasMoveAssign member; };
-struct HasMemberThrowMoveAssign { HasThrowMoveAssign member; };
-struct HasMemberNoExceptFalseMoveAssign { 
-  HasNoExceptFalseMoveAssign member; };
-struct HasMemberNoThrowMoveAssign { HasNoThrowMoveAssign member; };
-struct HasMemberNoExceptNoThrowMoveAssign { 
-  HasNoExceptNoThrowMoveAssign member; };
-
-struct HasDefaultTrivialCopyAssign { 
-  HasDefaultTrivialCopyAssign &operator=(
-    const HasDefaultTrivialCopyAssign&) = default; 
-};
-struct TrivialMoveButNotCopy { 
-  TrivialMoveButNotCopy &operator=(TrivialMoveButNotCopy&&) = default;
-  TrivialMoveButNotCopy &operator=(const TrivialMoveButNotCopy&);
-};
-struct NonTrivialDefault {
-  NonTrivialDefault();
-};
-
-struct HasDest { ~HasDest(); };
-class  HasPriv { int priv; };
-class  HasProt { protected: int prot; };
-struct HasRef { int i; int& ref; HasRef() : i(0), ref(i) {} };
-struct HasNonPOD { NonPOD np; };
-struct HasVirt { virtual void Virt() {}; };
-typedef NonPOD NonPODAr[10];
-typedef HasVirt VirtAr[10];
-typedef NonPOD NonPODArNB[];
-union NonPODUnion { int i; Derives n; };
-struct DerivesHasCons : HasCons {};
-struct DerivesHasCopyAssign : HasCopyAssign {};
-struct DerivesHasMoveAssign : HasMoveAssign {};
-struct DerivesHasDest : HasDest {};
-struct DerivesHasPriv : HasPriv {};
-struct DerivesHasProt : HasProt {};
-struct DerivesHasRef : HasRef {};
-struct DerivesHasVirt : HasVirt {};
-struct DerivesHasMoveCtor : HasMoveCtor {};
-
-struct HasNoThrowCopyAssign {
-  void operator =(const HasNoThrowCopyAssign&) throw();
-};
-struct HasMultipleCopyAssign {
-  void operator =(const HasMultipleCopyAssign&) throw();
-  void operator =(volatile HasMultipleCopyAssign&);
-};
-struct HasMultipleNoThrowCopyAssign {
-  void operator =(const HasMultipleNoThrowCopyAssign&) throw();
-  void operator =(volatile HasMultipleNoThrowCopyAssign&) throw();
-};
-
-struct HasNoThrowConstructor { HasNoThrowConstructor() throw(); };
-struct HasNoThrowConstructorWithArgs {
-  HasNoThrowConstructorWithArgs(HasCons i = HasCons(0)) throw();
-};
-
-struct HasNoThrowCopy { HasNoThrowCopy(const HasNoThrowCopy&) throw(); };
-struct HasMultipleCopy {
-  HasMultipleCopy(const HasMultipleCopy&) throw();
-  HasMultipleCopy(volatile HasMultipleCopy&);
-};
-struct HasMultipleNoThrowCopy {
-  HasMultipleNoThrowCopy(const HasMultipleNoThrowCopy&) throw();
-  HasMultipleNoThrowCopy(volatile HasMultipleNoThrowCopy&) throw();
-};
-
-struct HasVirtDest { virtual ~HasVirtDest(); };
-struct DerivedVirtDest : HasVirtDest {};
-typedef HasVirtDest VirtDestAr[1];
-
-class AllPrivate {
-  AllPrivate() throw();
-  AllPrivate(const AllPrivate&) throw();
-  AllPrivate &operator=(const AllPrivate &) throw();
-  ~AllPrivate() throw();
-};
-
-struct ThreeArgCtor {
-  ThreeArgCtor(int*, char*, int);
-};
-
-void is_pod()
-{
-  { int arr[T(__is_pod(int))]; }
-  { int arr[T(__is_pod(Enum))]; }
-  { int arr[T(__is_pod(POD))]; }
-  { int arr[T(__is_pod(Int))]; }
-  { int arr[T(__is_pod(IntAr))]; }
-  { int arr[T(__is_pod(Statics))]; }
-  { int arr[T(__is_pod(Empty))]; }
-  { int arr[T(__is_pod(EmptyUnion))]; }
-  { int arr[T(__is_pod(Union))]; }
-  { int arr[T(__is_pod(HasFunc))]; }
-  { int arr[T(__is_pod(HasOp))]; }
-  { int arr[T(__is_pod(HasConv))]; }
-  { int arr[T(__is_pod(HasAssign))]; }
-  { int arr[T(__is_pod(IntArNB))]; }
-  { int arr[T(__is_pod(HasAnonymousUnion))]; }
-  { int arr[T(__is_pod(Vector))]; }
-  { int arr[T(__is_pod(VectorExt))]; }
-  { int arr[T(__is_pod(Derives))]; }
-  { int arr[T(__is_pod(DerivesAr))]; }
-  { int arr[T(__is_pod(DerivesArNB))]; }
-  { int arr[T(__is_pod(DerivesEmpty))]; }
-  { int arr[T(__is_pod(HasPriv))]; }
-  { int arr[T(__is_pod(HasProt))]; }
-  { int arr[T(__is_pod(DerivesHasPriv))]; }
-  { int arr[T(__is_pod(DerivesHasProt))]; }
-
-  { int arr[F(__is_pod(HasCons))]; }
-  { int arr[F(__is_pod(HasCopyAssign))]; }
-  { int arr[F(__is_pod(HasMoveAssign))]; }
-  { int arr[F(__is_pod(HasDest))]; }
-  { int arr[F(__is_pod(HasRef))]; }
-  { int arr[F(__is_pod(HasVirt))]; }
-  { int arr[F(__is_pod(DerivesHasCons))]; }
-  { int arr[F(__is_pod(DerivesHasCopyAssign))]; }
-  { int arr[F(__is_pod(DerivesHasMoveAssign))]; }
-  { int arr[F(__is_pod(DerivesHasDest))]; }
-  { int arr[F(__is_pod(DerivesHasRef))]; }
-  { int arr[F(__is_pod(DerivesHasVirt))]; }
-  { int arr[F(__is_pod(NonPOD))]; }
-  { int arr[F(__is_pod(HasNonPOD))]; }
-  { int arr[F(__is_pod(NonPODAr))]; }
-  { int arr[F(__is_pod(NonPODArNB))]; }
-  { int arr[F(__is_pod(void))]; }
-  { int arr[F(__is_pod(cvoid))]; }
-// { int arr[F(__is_pod(NonPODUnion))]; }
-}
-
-typedef Empty EmptyAr[10];
-struct Bit0 { int : 0; };
-struct Bit0Cons { int : 0; Bit0Cons(); };
-struct BitOnly { int x : 3; };
-struct DerivesVirt : virtual POD {};
-
-void is_empty()
-{
-  { int arr[T(__is_empty(Empty))]; }
-  { int arr[T(__is_empty(DerivesEmpty))]; }
-  { int arr[T(__is_empty(HasCons))]; }
-  { int arr[T(__is_empty(HasCopyAssign))]; }
-  { int arr[T(__is_empty(HasMoveAssign))]; }
-  { int arr[T(__is_empty(HasDest))]; }
-  { int arr[T(__is_empty(HasFunc))]; }
-  { int arr[T(__is_empty(HasOp))]; }
-  { int arr[T(__is_empty(HasConv))]; }
-  { int arr[T(__is_empty(HasAssign))]; }
-  { int arr[T(__is_empty(Bit0))]; }
-  { int arr[T(__is_empty(Bit0Cons))]; }
-
-  { int arr[F(__is_empty(Int))]; }
-  { int arr[F(__is_empty(POD))]; }
-  { int arr[F(__is_empty(EmptyUnion))]; }
-  { int arr[F(__is_empty(EmptyAr))]; }
-  { int arr[F(__is_empty(HasRef))]; }
-  { int arr[F(__is_empty(HasVirt))]; }
-  { int arr[F(__is_empty(BitOnly))]; }
-  { int arr[F(__is_empty(void))]; }
-  { int arr[F(__is_empty(IntArNB))]; }
-  { int arr[F(__is_empty(HasAnonymousUnion))]; }
-//  { int arr[F(__is_empty(DerivesVirt))]; }
-}
-
-typedef Derives ClassType;
-
-void is_class()
-{
-  { int arr[T(__is_class(Derives))]; }
-  { int arr[T(__is_class(HasPriv))]; }
-  { int arr[T(__is_class(ClassType))]; }
-  { int arr[T(__is_class(HasAnonymousUnion))]; }
-
-  { int arr[F(__is_class(int))]; }
-  { int arr[F(__is_class(Enum))]; }
-  { int arr[F(__is_class(Int))]; }
-  { int arr[F(__is_class(IntAr))]; }
-  { int arr[F(__is_class(DerivesAr))]; }
-  { int arr[F(__is_class(Union))]; }
-  { int arr[F(__is_class(cvoid))]; }
-  { int arr[F(__is_class(IntArNB))]; }
-}
-
-typedef Union UnionAr[10];
-typedef Union UnionType;
-
-void is_union()
-{
-  { int arr[T(__is_union(Union))]; }
-  { int arr[T(__is_union(UnionType))]; }
-
-  { int arr[F(__is_union(int))]; }
-  { int arr[F(__is_union(Enum))]; }
-  { int arr[F(__is_union(Int))]; }
-  { int arr[F(__is_union(IntAr))]; }
-  { int arr[F(__is_union(UnionAr))]; }
-  { int arr[F(__is_union(cvoid))]; }
-  { int arr[F(__is_union(IntArNB))]; }
-  { int arr[F(__is_union(HasAnonymousUnion))]; }
-}
-
-typedef Enum EnumType;
-
-void is_enum()
-{
-  { int arr[T(__is_enum(Enum))]; }
-  { int arr[T(__is_enum(EnumType))]; }
-
-  { int arr[F(__is_enum(int))]; }
-  { int arr[F(__is_enum(Union))]; }
-  { int arr[F(__is_enum(Int))]; }
-  { int arr[F(__is_enum(IntAr))]; }
-  { int arr[F(__is_enum(UnionAr))]; }
-  { int arr[F(__is_enum(Derives))]; }
-  { int arr[F(__is_enum(ClassType))]; }
-  { int arr[F(__is_enum(cvoid))]; }
-  { int arr[F(__is_enum(IntArNB))]; }
-  { int arr[F(__is_enum(HasAnonymousUnion))]; }
-}
-
-struct FinalClass final {
-};
-
-template<typename T> 
-struct PotentiallyFinal { };
-
-template<typename T>
-struct PotentiallyFinal<T*> final { };
-
-template<>
-struct PotentiallyFinal<int> final { };
-
-void is_final()
-{
-	{ int arr[T(__is_final(FinalClass))]; }
-	{ int arr[T(__is_final(PotentiallyFinal<float*>))]; }
-	{ int arr[T(__is_final(PotentiallyFinal<int>))]; }
-
-	{ int arr[F(__is_final(int))]; }
-	{ int arr[F(__is_final(Union))]; }
-	{ int arr[F(__is_final(Int))]; }
-	{ int arr[F(__is_final(IntAr))]; }
-	{ int arr[F(__is_final(UnionAr))]; }
-	{ int arr[F(__is_final(Derives))]; }
-	{ int arr[F(__is_final(ClassType))]; }
-	{ int arr[F(__is_final(cvoid))]; }
-	{ int arr[F(__is_final(IntArNB))]; }
-	{ int arr[F(__is_final(HasAnonymousUnion))]; }
-	{ int arr[F(__is_final(PotentiallyFinal<float>))]; }
-}
-
-typedef HasVirt Polymorph;
-struct InheritPolymorph : Polymorph {};
-
-void is_polymorphic()
-{
-  { int arr[T(__is_polymorphic(Polymorph))]; }
-  { int arr[T(__is_polymorphic(InheritPolymorph))]; }
-
-  { int arr[F(__is_polymorphic(int))]; }
-  { int arr[F(__is_polymorphic(Union))]; }
-  { int arr[F(__is_polymorphic(Int))]; }
-  { int arr[F(__is_polymorphic(IntAr))]; }
-  { int arr[F(__is_polymorphic(UnionAr))]; }
-  { int arr[F(__is_polymorphic(Derives))]; }
-  { int arr[F(__is_polymorphic(ClassType))]; }
-  { int arr[F(__is_polymorphic(Enum))]; }
-  { int arr[F(__is_polymorphic(cvoid))]; }
-  { int arr[F(__is_polymorphic(IntArNB))]; }
-}
-
-void is_integral()
-{
-  int t01[T(__is_integral(bool))];
-  int t02[T(__is_integral(char))];
-  int t03[T(__is_integral(signed char))];
-  int t04[T(__is_integral(unsigned char))];
-  //int t05[T(__is_integral(char16_t))];
-  //int t06[T(__is_integral(char32_t))];
-  int t07[T(__is_integral(wchar_t))];
-  int t08[T(__is_integral(short))];
-  int t09[T(__is_integral(unsigned short))];
-  int t10[T(__is_integral(int))];
-  int t11[T(__is_integral(unsigned int))];
-  int t12[T(__is_integral(long))];
-  int t13[T(__is_integral(unsigned long))];
-
-  int t21[F(__is_integral(float))];
-  int t22[F(__is_integral(double))];
-  int t23[F(__is_integral(long double))];
-  int t24[F(__is_integral(Union))];
-  int t25[F(__is_integral(UnionAr))];
-  int t26[F(__is_integral(Derives))];
-  int t27[F(__is_integral(ClassType))];
-  int t28[F(__is_integral(Enum))];
-  int t29[F(__is_integral(void))];
-  int t30[F(__is_integral(cvoid))];
-  int t31[F(__is_integral(IntArNB))];
-}
-
-void is_floating_point()
-{
-  int t01[T(__is_floating_point(float))];
-  int t02[T(__is_floating_point(double))];
-  int t03[T(__is_floating_point(long double))];
-
-  int t11[F(__is_floating_point(bool))];
-  int t12[F(__is_floating_point(char))];
-  int t13[F(__is_floating_point(signed char))];
-  int t14[F(__is_floating_point(unsigned char))];
-  //int t15[F(__is_floating_point(char16_t))];
-  //int t16[F(__is_floating_point(char32_t))];
-  int t17[F(__is_floating_point(wchar_t))];
-  int t18[F(__is_floating_point(short))];
-  int t19[F(__is_floating_point(unsigned short))];
-  int t20[F(__is_floating_point(int))];
-  int t21[F(__is_floating_point(unsigned int))];
-  int t22[F(__is_floating_point(long))];
-  int t23[F(__is_floating_point(unsigned long))];
-  int t24[F(__is_floating_point(Union))];
-  int t25[F(__is_floating_point(UnionAr))];
-  int t26[F(__is_floating_point(Derives))];
-  int t27[F(__is_floating_point(ClassType))];
-  int t28[F(__is_floating_point(Enum))];
-  int t29[F(__is_floating_point(void))];
-  int t30[F(__is_floating_point(cvoid))];
-  int t31[F(__is_floating_point(IntArNB))];
-}
-
-void is_arithmetic()
-{
-  int t01[T(__is_arithmetic(float))];
-  int t02[T(__is_arithmetic(double))];
-  int t03[T(__is_arithmetic(long double))];
-  int t11[T(__is_arithmetic(bool))];
-  int t12[T(__is_arithmetic(char))];
-  int t13[T(__is_arithmetic(signed char))];
-  int t14[T(__is_arithmetic(unsigned char))];
-  //int t15[T(__is_arithmetic(char16_t))];
-  //int t16[T(__is_arithmetic(char32_t))];
-  int t17[T(__is_arithmetic(wchar_t))];
-  int t18[T(__is_arithmetic(short))];
-  int t19[T(__is_arithmetic(unsigned short))];
-  int t20[T(__is_arithmetic(int))];
-  int t21[T(__is_arithmetic(unsigned int))];
-  int t22[T(__is_arithmetic(long))];
-  int t23[T(__is_arithmetic(unsigned long))];
-
-  int t24[F(__is_arithmetic(Union))];
-  int t25[F(__is_arithmetic(UnionAr))];
-  int t26[F(__is_arithmetic(Derives))];
-  int t27[F(__is_arithmetic(ClassType))];
-  int t28[F(__is_arithmetic(Enum))];
-  int t29[F(__is_arithmetic(void))];
-  int t30[F(__is_arithmetic(cvoid))];
-  int t31[F(__is_arithmetic(IntArNB))];
-}
-
-struct ACompleteType {};
-struct AnIncompleteType;
-
-void is_complete_type()
-{
-  int t01[T(__is_complete_type(float))];
-  int t02[T(__is_complete_type(double))];
-  int t03[T(__is_complete_type(long double))];
-  int t11[T(__is_complete_type(bool))];
-  int t12[T(__is_complete_type(char))];
-  int t13[T(__is_complete_type(signed char))];
-  int t14[T(__is_complete_type(unsigned char))];
-  //int t15[T(__is_complete_type(char16_t))];
-  //int t16[T(__is_complete_type(char32_t))];
-  int t17[T(__is_complete_type(wchar_t))];
-  int t18[T(__is_complete_type(short))];
-  int t19[T(__is_complete_type(unsigned short))];
-  int t20[T(__is_complete_type(int))];
-  int t21[T(__is_complete_type(unsigned int))];
-  int t22[T(__is_complete_type(long))];
-  int t23[T(__is_complete_type(unsigned long))];
-  int t24[T(__is_complete_type(ACompleteType))];
-
-  int t30[F(__is_complete_type(AnIncompleteType))];
-}
-
-void is_void()
-{
-  int t01[T(__is_void(void))];
-  int t02[T(__is_void(cvoid))];
-
-  int t10[F(__is_void(float))];
-  int t11[F(__is_void(double))];
-  int t12[F(__is_void(long double))];
-  int t13[F(__is_void(bool))];
-  int t14[F(__is_void(char))];
-  int t15[F(__is_void(signed char))];
-  int t16[F(__is_void(unsigned char))];
-  int t17[F(__is_void(wchar_t))];
-  int t18[F(__is_void(short))];
-  int t19[F(__is_void(unsigned short))];
-  int t20[F(__is_void(int))];
-  int t21[F(__is_void(unsigned int))];
-  int t22[F(__is_void(long))];
-  int t23[F(__is_void(unsigned long))];
-  int t24[F(__is_void(Union))];
-  int t25[F(__is_void(UnionAr))];
-  int t26[F(__is_void(Derives))];
-  int t27[F(__is_void(ClassType))];
-  int t28[F(__is_void(Enum))];
-  int t29[F(__is_void(IntArNB))];
-  int t30[F(__is_void(void*))];
-  int t31[F(__is_void(cvoid*))];
-}
-
-void is_array()
-{
-  int t01[T(__is_array(IntAr))];
-  int t02[T(__is_array(IntArNB))];
-  int t03[T(__is_array(UnionAr))];
-
-  int t10[F(__is_array(void))];
-  int t11[F(__is_array(cvoid))];
-  int t12[F(__is_array(float))];
-  int t13[F(__is_array(double))];
-  int t14[F(__is_array(long double))];
-  int t15[F(__is_array(bool))];
-  int t16[F(__is_array(char))];
-  int t17[F(__is_array(signed char))];
-  int t18[F(__is_array(unsigned char))];
-  int t19[F(__is_array(wchar_t))];
-  int t20[F(__is_array(short))];
-  int t21[F(__is_array(unsigned short))];
-  int t22[F(__is_array(int))];
-  int t23[F(__is_array(unsigned int))];
-  int t24[F(__is_array(long))];
-  int t25[F(__is_array(unsigned long))];
-  int t26[F(__is_array(Union))];
-  int t27[F(__is_array(Derives))];
-  int t28[F(__is_array(ClassType))];
-  int t29[F(__is_array(Enum))];
-  int t30[F(__is_array(void*))];
-  int t31[F(__is_array(cvoid*))];
-}
-
-template <typename T> void tmpl_func(T&) {}
-
-template <typename T> struct type_wrapper {
-  typedef T type;
-  typedef T* ptrtype;
-  typedef T& reftype;
-};
-
-void is_function()
-{
-  int t01[T(__is_function(type_wrapper<void(void)>::type))];
-  int t02[T(__is_function(typeof(tmpl_func<int>)))];
-
-  typedef void (*ptr_to_func_type)(void);
-
-  int t10[F(__is_function(void))];
-  int t11[F(__is_function(cvoid))];
-  int t12[F(__is_function(float))];
-  int t13[F(__is_function(double))];
-  int t14[F(__is_function(long double))];
-  int t15[F(__is_function(bool))];
-  int t16[F(__is_function(char))];
-  int t17[F(__is_function(signed char))];
-  int t18[F(__is_function(unsigned char))];
-  int t19[F(__is_function(wchar_t))];
-  int t20[F(__is_function(short))];
-  int t21[F(__is_function(unsigned short))];
-  int t22[F(__is_function(int))];
-  int t23[F(__is_function(unsigned int))];
-  int t24[F(__is_function(long))];
-  int t25[F(__is_function(unsigned long))];
-  int t26[F(__is_function(Union))];
-  int t27[F(__is_function(Derives))];
-  int t28[F(__is_function(ClassType))];
-  int t29[F(__is_function(Enum))];
-  int t30[F(__is_function(void*))];
-  int t31[F(__is_function(cvoid*))];
-  int t32[F(__is_function(void(*)()))];
-  int t33[F(__is_function(ptr_to_func_type))];
-  int t34[F(__is_function(type_wrapper<void(void)>::ptrtype))];
-  int t35[F(__is_function(type_wrapper<void(void)>::reftype))];
-}
-
-void is_reference()
-{
-  int t01[T(__is_reference(int&))];
-  int t02[T(__is_reference(const int&))];
-  int t03[T(__is_reference(void *&))];
-
-  int t10[F(__is_reference(int))];
-  int t11[F(__is_reference(const int))];
-  int t12[F(__is_reference(void *))];
-}
-
-void is_lvalue_reference()
-{
-  int t01[T(__is_lvalue_reference(int&))];
-  int t02[T(__is_lvalue_reference(void *&))];
-  int t03[T(__is_lvalue_reference(const int&))];
-  int t04[T(__is_lvalue_reference(void * const &))];
-
-  int t10[F(__is_lvalue_reference(int))];
-  int t11[F(__is_lvalue_reference(const int))];
-  int t12[F(__is_lvalue_reference(void *))];
-}
-
-#if __has_feature(cxx_rvalue_references)
-
-void is_rvalue_reference()
-{
-  int t01[T(__is_rvalue_reference(const int&&))];
-  int t02[T(__is_rvalue_reference(void * const &&))];
-
-  int t10[F(__is_rvalue_reference(int&))];
-  int t11[F(__is_rvalue_reference(void *&))];
-  int t12[F(__is_rvalue_reference(const int&))];
-  int t13[F(__is_rvalue_reference(void * const &))];
-  int t14[F(__is_rvalue_reference(int))];
-  int t15[F(__is_rvalue_reference(const int))];
-  int t16[F(__is_rvalue_reference(void *))];
-}
-
-#endif
-
-void is_fundamental()
-{
-  int t01[T(__is_fundamental(float))];
-  int t02[T(__is_fundamental(double))];
-  int t03[T(__is_fundamental(long double))];
-  int t11[T(__is_fundamental(bool))];
-  int t12[T(__is_fundamental(char))];
-  int t13[T(__is_fundamental(signed char))];
-  int t14[T(__is_fundamental(unsigned char))];
-  //int t15[T(__is_fundamental(char16_t))];
-  //int t16[T(__is_fundamental(char32_t))];
-  int t17[T(__is_fundamental(wchar_t))];
-  int t18[T(__is_fundamental(short))];
-  int t19[T(__is_fundamental(unsigned short))];
-  int t20[T(__is_fundamental(int))];
-  int t21[T(__is_fundamental(unsigned int))];
-  int t22[T(__is_fundamental(long))];
-  int t23[T(__is_fundamental(unsigned long))];
-  int t24[T(__is_fundamental(void))];
-  int t25[T(__is_fundamental(cvoid))];
-
-  int t30[F(__is_fundamental(Union))];
-  int t31[F(__is_fundamental(UnionAr))];
-  int t32[F(__is_fundamental(Derives))];
-  int t33[F(__is_fundamental(ClassType))];
-  int t34[F(__is_fundamental(Enum))];
-  int t35[F(__is_fundamental(IntArNB))];
-}
-
-void is_object()
-{
-  int t01[T(__is_object(int))];
-  int t02[T(__is_object(int *))];
-  int t03[T(__is_object(void *))];
-  int t04[T(__is_object(Union))];
-  int t05[T(__is_object(UnionAr))];
-  int t06[T(__is_object(ClassType))];
-  int t07[T(__is_object(Enum))];
-
-  int t10[F(__is_object(type_wrapper<void(void)>::type))];
-  int t11[F(__is_object(int&))];
-  int t12[F(__is_object(void))];
-}
-
-void is_scalar()
-{
-  int t01[T(__is_scalar(float))];
-  int t02[T(__is_scalar(double))];
-  int t03[T(__is_scalar(long double))];
-  int t04[T(__is_scalar(bool))];
-  int t05[T(__is_scalar(char))];
-  int t06[T(__is_scalar(signed char))];
-  int t07[T(__is_scalar(unsigned char))];
-  int t08[T(__is_scalar(wchar_t))];
-  int t09[T(__is_scalar(short))];
-  int t10[T(__is_scalar(unsigned short))];
-  int t11[T(__is_scalar(int))];
-  int t12[T(__is_scalar(unsigned int))];
-  int t13[T(__is_scalar(long))];
-  int t14[T(__is_scalar(unsigned long))];
-  int t15[T(__is_scalar(Enum))];
-  int t16[T(__is_scalar(void*))];
-  int t17[T(__is_scalar(cvoid*))];
-
-  int t20[F(__is_scalar(void))];
-  int t21[F(__is_scalar(cvoid))];
-  int t22[F(__is_scalar(Union))];
-  int t23[F(__is_scalar(UnionAr))];
-  int t24[F(__is_scalar(Derives))];
-  int t25[F(__is_scalar(ClassType))];
-  int t26[F(__is_scalar(IntArNB))];
-}
-
-struct StructWithMembers {
-  int member;
-  void method() {}
-};
-
-void is_compound()
-{
-  int t01[T(__is_compound(void*))];
-  int t02[T(__is_compound(cvoid*))];
-  int t03[T(__is_compound(void (*)()))];
-  int t04[T(__is_compound(int StructWithMembers::*))];
-  int t05[T(__is_compound(void (StructWithMembers::*)()))];
-  int t06[T(__is_compound(int&))];
-  int t07[T(__is_compound(Union))];
-  int t08[T(__is_compound(UnionAr))];
-  int t09[T(__is_compound(Derives))];
-  int t10[T(__is_compound(ClassType))];
-  int t11[T(__is_compound(IntArNB))];
-  int t12[T(__is_compound(Enum))];
-
-  int t20[F(__is_compound(float))];
-  int t21[F(__is_compound(double))];
-  int t22[F(__is_compound(long double))];
-  int t23[F(__is_compound(bool))];
-  int t24[F(__is_compound(char))];
-  int t25[F(__is_compound(signed char))];
-  int t26[F(__is_compound(unsigned char))];
-  int t27[F(__is_compound(wchar_t))];
-  int t28[F(__is_compound(short))];
-  int t29[F(__is_compound(unsigned short))];
-  int t30[F(__is_compound(int))];
-  int t31[F(__is_compound(unsigned int))];
-  int t32[F(__is_compound(long))];
-  int t33[F(__is_compound(unsigned long))];
-  int t34[F(__is_compound(void))];
-  int t35[F(__is_compound(cvoid))];
-}
-
-void is_pointer()
-{
-  StructWithMembers x;
-
-  int t01[T(__is_pointer(void*))];
-  int t02[T(__is_pointer(cvoid*))];
-  int t03[T(__is_pointer(cvoid*))];
-  int t04[T(__is_pointer(char*))];
-  int t05[T(__is_pointer(int*))];
-  int t06[T(__is_pointer(int**))];
-  int t07[T(__is_pointer(ClassType*))];
-  int t08[T(__is_pointer(Derives*))];
-  int t09[T(__is_pointer(Enum*))];
-  int t10[T(__is_pointer(IntArNB*))];
-  int t11[T(__is_pointer(Union*))];
-  int t12[T(__is_pointer(UnionAr*))];
-  int t13[T(__is_pointer(StructWithMembers*))];
-  int t14[T(__is_pointer(void (*)()))];
-
-  int t20[F(__is_pointer(void))];
-  int t21[F(__is_pointer(cvoid))];
-  int t22[F(__is_pointer(cvoid))];
-  int t23[F(__is_pointer(char))];
-  int t24[F(__is_pointer(int))];
-  int t25[F(__is_pointer(int))];
-  int t26[F(__is_pointer(ClassType))];
-  int t27[F(__is_pointer(Derives))];
-  int t28[F(__is_pointer(Enum))];
-  int t29[F(__is_pointer(IntArNB))];
-  int t30[F(__is_pointer(Union))];
-  int t31[F(__is_pointer(UnionAr))];
-  int t32[F(__is_pointer(StructWithMembers))];
-  int t33[F(__is_pointer(int StructWithMembers::*))];
-  int t34[F(__is_pointer(void (StructWithMembers::*) ()))];
-}
-
-void is_member_object_pointer()
-{
-  StructWithMembers x;
-
-  int t01[T(__is_member_object_pointer(int StructWithMembers::*))];
-
-  int t10[F(__is_member_object_pointer(void (StructWithMembers::*) ()))];
-  int t11[F(__is_member_object_pointer(void*))];
-  int t12[F(__is_member_object_pointer(cvoid*))];
-  int t13[F(__is_member_object_pointer(cvoid*))];
-  int t14[F(__is_member_object_pointer(char*))];
-  int t15[F(__is_member_object_pointer(int*))];
-  int t16[F(__is_member_object_pointer(int**))];
-  int t17[F(__is_member_object_pointer(ClassType*))];
-  int t18[F(__is_member_object_pointer(Derives*))];
-  int t19[F(__is_member_object_pointer(Enum*))];
-  int t20[F(__is_member_object_pointer(IntArNB*))];
-  int t21[F(__is_member_object_pointer(Union*))];
-  int t22[F(__is_member_object_pointer(UnionAr*))];
-  int t23[F(__is_member_object_pointer(StructWithMembers*))];
-  int t24[F(__is_member_object_pointer(void))];
-  int t25[F(__is_member_object_pointer(cvoid))];
-  int t26[F(__is_member_object_pointer(cvoid))];
-  int t27[F(__is_member_object_pointer(char))];
-  int t28[F(__is_member_object_pointer(int))];
-  int t29[F(__is_member_object_pointer(int))];
-  int t30[F(__is_member_object_pointer(ClassType))];
-  int t31[F(__is_member_object_pointer(Derives))];
-  int t32[F(__is_member_object_pointer(Enum))];
-  int t33[F(__is_member_object_pointer(IntArNB))];
-  int t34[F(__is_member_object_pointer(Union))];
-  int t35[F(__is_member_object_pointer(UnionAr))];
-  int t36[F(__is_member_object_pointer(StructWithMembers))];
-  int t37[F(__is_member_object_pointer(void (*)()))];
-}
-
-void is_member_function_pointer()
-{
-  StructWithMembers x;
-
-  int t01[T(__is_member_function_pointer(void (StructWithMembers::*) ()))];
-
-  int t10[F(__is_member_function_pointer(int StructWithMembers::*))];
-  int t11[F(__is_member_function_pointer(void*))];
-  int t12[F(__is_member_function_pointer(cvoid*))];
-  int t13[F(__is_member_function_pointer(cvoid*))];
-  int t14[F(__is_member_function_pointer(char*))];
-  int t15[F(__is_member_function_pointer(int*))];
-  int t16[F(__is_member_function_pointer(int**))];
-  int t17[F(__is_member_function_pointer(ClassType*))];
-  int t18[F(__is_member_function_pointer(Derives*))];
-  int t19[F(__is_member_function_pointer(Enum*))];
-  int t20[F(__is_member_function_pointer(IntArNB*))];
-  int t21[F(__is_member_function_pointer(Union*))];
-  int t22[F(__is_member_function_pointer(UnionAr*))];
-  int t23[F(__is_member_function_pointer(StructWithMembers*))];
-  int t24[F(__is_member_function_pointer(void))];
-  int t25[F(__is_member_function_pointer(cvoid))];
-  int t26[F(__is_member_function_pointer(cvoid))];
-  int t27[F(__is_member_function_pointer(char))];
-  int t28[F(__is_member_function_pointer(int))];
-  int t29[F(__is_member_function_pointer(int))];
-  int t30[F(__is_member_function_pointer(ClassType))];
-  int t31[F(__is_member_function_pointer(Derives))];
-  int t32[F(__is_member_function_pointer(Enum))];
-  int t33[F(__is_member_function_pointer(IntArNB))];
-  int t34[F(__is_member_function_pointer(Union))];
-  int t35[F(__is_member_function_pointer(UnionAr))];
-  int t36[F(__is_member_function_pointer(StructWithMembers))];
-  int t37[F(__is_member_function_pointer(void (*)()))];
-}
-
-void is_member_pointer()
-{
-  StructWithMembers x;
-
-  int t01[T(__is_member_pointer(int StructWithMembers::*))];
-  int t02[T(__is_member_pointer(void (StructWithMembers::*) ()))];
-
-  int t10[F(__is_member_pointer(void*))];
-  int t11[F(__is_member_pointer(cvoid*))];
-  int t12[F(__is_member_pointer(cvoid*))];
-  int t13[F(__is_member_pointer(char*))];
-  int t14[F(__is_member_pointer(int*))];
-  int t15[F(__is_member_pointer(int**))];
-  int t16[F(__is_member_pointer(ClassType*))];
-  int t17[F(__is_member_pointer(Derives*))];
-  int t18[F(__is_member_pointer(Enum*))];
-  int t19[F(__is_member_pointer(IntArNB*))];
-  int t20[F(__is_member_pointer(Union*))];
-  int t21[F(__is_member_pointer(UnionAr*))];
-  int t22[F(__is_member_pointer(StructWithMembers*))];
-  int t23[F(__is_member_pointer(void))];
-  int t24[F(__is_member_pointer(cvoid))];
-  int t25[F(__is_member_pointer(cvoid))];
-  int t26[F(__is_member_pointer(char))];
-  int t27[F(__is_member_pointer(int))];
-  int t28[F(__is_member_pointer(int))];
-  int t29[F(__is_member_pointer(ClassType))];
-  int t30[F(__is_member_pointer(Derives))];
-  int t31[F(__is_member_pointer(Enum))];
-  int t32[F(__is_member_pointer(IntArNB))];
-  int t33[F(__is_member_pointer(Union))];
-  int t34[F(__is_member_pointer(UnionAr))];
-  int t35[F(__is_member_pointer(StructWithMembers))];
-  int t36[F(__is_member_pointer(void (*)()))];
-}
-
-void is_const()
-{
-  int t01[T(__is_const(cvoid))];
-  int t02[T(__is_const(const char))];
-  int t03[T(__is_const(const int))];
-  int t04[T(__is_const(const long))];
-  int t05[T(__is_const(const short))];
-  int t06[T(__is_const(const signed char))];
-  int t07[T(__is_const(const wchar_t))];
-  int t08[T(__is_const(const bool))];
-  int t09[T(__is_const(const float))];
-  int t10[T(__is_const(const double))];
-  int t11[T(__is_const(const long double))];
-  int t12[T(__is_const(const unsigned char))];
-  int t13[T(__is_const(const unsigned int))];
-  int t14[T(__is_const(const unsigned long long))];
-  int t15[T(__is_const(const unsigned long))];
-  int t16[T(__is_const(const unsigned short))];
-  int t17[T(__is_const(const void))];
-  int t18[T(__is_const(const ClassType))];
-  int t19[T(__is_const(const Derives))];
-  int t20[T(__is_const(const Enum))];
-  int t21[T(__is_const(const IntArNB))];
-  int t22[T(__is_const(const Union))];
-  int t23[T(__is_const(const UnionAr))];
-
-  int t30[F(__is_const(char))];
-  int t31[F(__is_const(int))];
-  int t32[F(__is_const(long))];
-  int t33[F(__is_const(short))];
-  int t34[F(__is_const(signed char))];
-  int t35[F(__is_const(wchar_t))];
-  int t36[F(__is_const(bool))];
-  int t37[F(__is_const(float))];
-  int t38[F(__is_const(double))];
-  int t39[F(__is_const(long double))];
-  int t40[F(__is_const(unsigned char))];
-  int t41[F(__is_const(unsigned int))];
-  int t42[F(__is_const(unsigned long long))];
-  int t43[F(__is_const(unsigned long))];
-  int t44[F(__is_const(unsigned short))];
-  int t45[F(__is_const(void))];
-  int t46[F(__is_const(ClassType))];
-  int t47[F(__is_const(Derives))];
-  int t48[F(__is_const(Enum))];
-  int t49[F(__is_const(IntArNB))];
-  int t50[F(__is_const(Union))];
-  int t51[F(__is_const(UnionAr))];
-}
-
-void is_volatile()
-{
-  int t02[T(__is_volatile(volatile char))];
-  int t03[T(__is_volatile(volatile int))];
-  int t04[T(__is_volatile(volatile long))];
-  int t05[T(__is_volatile(volatile short))];
-  int t06[T(__is_volatile(volatile signed char))];
-  int t07[T(__is_volatile(volatile wchar_t))];
-  int t08[T(__is_volatile(volatile bool))];
-  int t09[T(__is_volatile(volatile float))];
-  int t10[T(__is_volatile(volatile double))];
-  int t11[T(__is_volatile(volatile long double))];
-  int t12[T(__is_volatile(volatile unsigned char))];
-  int t13[T(__is_volatile(volatile unsigned int))];
-  int t14[T(__is_volatile(volatile unsigned long long))];
-  int t15[T(__is_volatile(volatile unsigned long))];
-  int t16[T(__is_volatile(volatile unsigned short))];
-  int t17[T(__is_volatile(volatile void))];
-  int t18[T(__is_volatile(volatile ClassType))];
-  int t19[T(__is_volatile(volatile Derives))];
-  int t20[T(__is_volatile(volatile Enum))];
-  int t21[T(__is_volatile(volatile IntArNB))];
-  int t22[T(__is_volatile(volatile Union))];
-  int t23[T(__is_volatile(volatile UnionAr))];
-
-  int t30[F(__is_volatile(char))];
-  int t31[F(__is_volatile(int))];
-  int t32[F(__is_volatile(long))];
-  int t33[F(__is_volatile(short))];
-  int t34[F(__is_volatile(signed char))];
-  int t35[F(__is_volatile(wchar_t))];
-  int t36[F(__is_volatile(bool))];
-  int t37[F(__is_volatile(float))];
-  int t38[F(__is_volatile(double))];
-  int t39[F(__is_volatile(long double))];
-  int t40[F(__is_volatile(unsigned char))];
-  int t41[F(__is_volatile(unsigned int))];
-  int t42[F(__is_volatile(unsigned long long))];
-  int t43[F(__is_volatile(unsigned long))];
-  int t44[F(__is_volatile(unsigned short))];
-  int t45[F(__is_volatile(void))];
-  int t46[F(__is_volatile(ClassType))];
-  int t47[F(__is_volatile(Derives))];
-  int t48[F(__is_volatile(Enum))];
-  int t49[F(__is_volatile(IntArNB))];
-  int t50[F(__is_volatile(Union))];
-  int t51[F(__is_volatile(UnionAr))];
-}
-
-struct TrivialStruct {
-  int member;
-};
-
-struct NonTrivialStruct {
-  int member;
-  NonTrivialStruct() {
-    member = 0;
-  }
-};
-
-struct SuperNonTrivialStruct {
-  SuperNonTrivialStruct() { }
-  ~SuperNonTrivialStruct() { }
-};
-
-struct NonTCStruct {
-  NonTCStruct(const NonTCStruct&) {}
-};
-
-struct AllDefaulted {
-  AllDefaulted() = default;
-  AllDefaulted(const AllDefaulted &) = default;
-  AllDefaulted(AllDefaulted &&) = default;
-  AllDefaulted &operator=(const AllDefaulted &) = default;
-  AllDefaulted &operator=(AllDefaulted &&) = default;
-  ~AllDefaulted() = default;
-};
-
-struct NoDefaultMoveAssignDueToUDCopyCtor {
-  NoDefaultMoveAssignDueToUDCopyCtor(const NoDefaultMoveAssignDueToUDCopyCtor&);
-};
-
-struct NoDefaultMoveAssignDueToUDCopyAssign {
-  NoDefaultMoveAssignDueToUDCopyAssign& operator=(
-    const NoDefaultMoveAssignDueToUDCopyAssign&);
-};
-
-struct NoDefaultMoveAssignDueToDtor {
-  ~NoDefaultMoveAssignDueToDtor();
-};
-
-struct AllDeleted {
-  AllDeleted() = delete;
-  AllDeleted(const AllDeleted &) = delete;
-  AllDeleted(AllDeleted &&) = delete;
-  AllDeleted &operator=(const AllDeleted &) = delete;
-  AllDeleted &operator=(AllDeleted &&) = delete;
-  ~AllDeleted() = delete;
-};
-
-struct ExtDefaulted {
-  ExtDefaulted();
-  ExtDefaulted(const ExtDefaulted &);
-  ExtDefaulted(ExtDefaulted &&);
-  ExtDefaulted &operator=(const ExtDefaulted &);
-  ExtDefaulted &operator=(ExtDefaulted &&);
-  ~ExtDefaulted();
-};
-
-// Despite being defaulted, these functions are not trivial.
-ExtDefaulted::ExtDefaulted() = default;
-ExtDefaulted::ExtDefaulted(const ExtDefaulted &) = default;
-ExtDefaulted::ExtDefaulted(ExtDefaulted &&) = default;
-ExtDefaulted &ExtDefaulted::operator=(const ExtDefaulted &) = default;
-ExtDefaulted &ExtDefaulted::operator=(ExtDefaulted &&) = default;
-ExtDefaulted::~ExtDefaulted() = default;
-
-void is_trivial2()
-{
-  int t01[T(__is_trivial(char))];
-  int t02[T(__is_trivial(int))];
-  int t03[T(__is_trivial(long))];
-  int t04[T(__is_trivial(short))];
-  int t05[T(__is_trivial(signed char))];
-  int t06[T(__is_trivial(wchar_t))];
-  int t07[T(__is_trivial(bool))];
-  int t08[T(__is_trivial(float))];
-  int t09[T(__is_trivial(double))];
-  int t10[T(__is_trivial(long double))];
-  int t11[T(__is_trivial(unsigned char))];
-  int t12[T(__is_trivial(unsigned int))];
-  int t13[T(__is_trivial(unsigned long long))];
-  int t14[T(__is_trivial(unsigned long))];
-  int t15[T(__is_trivial(unsigned short))];
-  int t16[T(__is_trivial(ClassType))];
-  int t17[T(__is_trivial(Derives))];
-  int t18[T(__is_trivial(Enum))];
-  int t19[T(__is_trivial(IntAr))];
-  int t20[T(__is_trivial(Union))];
-  int t21[T(__is_trivial(UnionAr))];
-  int t22[T(__is_trivial(TrivialStruct))];
-  int t23[T(__is_trivial(AllDefaulted))];
-  int t24[T(__is_trivial(AllDeleted))];
-
-  int t30[F(__is_trivial(void))];
-  int t31[F(__is_trivial(NonTrivialStruct))];
-  int t32[F(__is_trivial(SuperNonTrivialStruct))];
-  int t33[F(__is_trivial(NonTCStruct))];
-  int t34[F(__is_trivial(ExtDefaulted))];
-}
-
-void is_trivially_copyable2()
-{
-  int t01[T(__is_trivially_copyable(char))];
-  int t02[T(__is_trivially_copyable(int))];
-  int t03[T(__is_trivially_copyable(long))];
-  int t04[T(__is_trivially_copyable(short))];
-  int t05[T(__is_trivially_copyable(signed char))];
-  int t06[T(__is_trivially_copyable(wchar_t))];
-  int t07[T(__is_trivially_copyable(bool))];
-  int t08[T(__is_trivially_copyable(float))];
-  int t09[T(__is_trivially_copyable(double))];
-  int t10[T(__is_trivially_copyable(long double))];
-  int t11[T(__is_trivially_copyable(unsigned char))];
-  int t12[T(__is_trivially_copyable(unsigned int))];
-  int t13[T(__is_trivially_copyable(unsigned long long))];
-  int t14[T(__is_trivially_copyable(unsigned long))];
-  int t15[T(__is_trivially_copyable(unsigned short))];
-  int t16[T(__is_trivially_copyable(ClassType))];
-  int t17[T(__is_trivially_copyable(Derives))];
-  int t18[T(__is_trivially_copyable(Enum))];
-  int t19[T(__is_trivially_copyable(IntAr))];
-  int t20[T(__is_trivially_copyable(Union))];
-  int t21[T(__is_trivially_copyable(UnionAr))];
-  int t22[T(__is_trivially_copyable(TrivialStruct))];
-  int t23[T(__is_trivially_copyable(NonTrivialStruct))];
-  int t24[T(__is_trivially_copyable(AllDefaulted))];
-  int t25[T(__is_trivially_copyable(AllDeleted))];
-
-  int t30[F(__is_trivially_copyable(void))];
-  int t31[F(__is_trivially_copyable(SuperNonTrivialStruct))];
-  int t32[F(__is_trivially_copyable(NonTCStruct))];
-  int t33[F(__is_trivially_copyable(ExtDefaulted))];
-}
-
-struct CStruct {
-  int one;
-  int two;
-};
-
-struct CEmptyStruct {};
-
-struct CppEmptyStruct : CStruct {};
-struct CppStructStandard : CEmptyStruct {
-  int three;
-  int four;
-};
-struct CppStructNonStandardByBase : CStruct {
-  int three;
-  int four;
-};
-struct CppStructNonStandardByVirt : CStruct {
-  virtual void method() {}
-};
-struct CppStructNonStandardByMemb : CStruct {
-  CppStructNonStandardByVirt member;
-};
-struct CppStructNonStandardByProt : CStruct {
-  int five;
-protected:
-  int six;
-};
-struct CppStructNonStandardByVirtBase : virtual CStruct {
-};
-struct CppStructNonStandardBySameBase : CEmptyStruct {
-  CEmptyStruct member;
-};
-struct CppStructNonStandardBy2ndVirtBase : CEmptyStruct {
-  CEmptyStruct member;
-};
-
-void is_standard_layout()
-{
-  typedef const int ConstInt;
-  typedef ConstInt ConstIntAr[4];
-  typedef CppStructStandard CppStructStandardAr[4];
-
-  int t01[T(__is_standard_layout(int))];
-  int t02[T(__is_standard_layout(ConstInt))];
-  int t03[T(__is_standard_layout(ConstIntAr))];
-  int t04[T(__is_standard_layout(CStruct))];
-  int t05[T(__is_standard_layout(CppStructStandard))];
-  int t06[T(__is_standard_layout(CppStructStandardAr))];
-  int t07[T(__is_standard_layout(Vector))];
-  int t08[T(__is_standard_layout(VectorExt))];
-
-  typedef CppStructNonStandardByBase CppStructNonStandardByBaseAr[4];
-
-  int t10[F(__is_standard_layout(CppStructNonStandardByVirt))];
-  int t11[F(__is_standard_layout(CppStructNonStandardByMemb))];
-  int t12[F(__is_standard_layout(CppStructNonStandardByProt))];
-  int t13[F(__is_standard_layout(CppStructNonStandardByVirtBase))];
-  int t14[F(__is_standard_layout(CppStructNonStandardByBase))];
-  int t15[F(__is_standard_layout(CppStructNonStandardByBaseAr))];
-  int t16[F(__is_standard_layout(CppStructNonStandardBySameBase))];
-  int t17[F(__is_standard_layout(CppStructNonStandardBy2ndVirtBase))];
-}
-
-void is_signed()
-{
-  //int t01[T(__is_signed(char))];
-  int t02[T(__is_signed(int))];
-  int t03[T(__is_signed(long))];
-  int t04[T(__is_signed(short))];
-  int t05[T(__is_signed(signed char))];
-  int t06[T(__is_signed(wchar_t))];
-
-  int t10[F(__is_signed(bool))];
-  int t11[F(__is_signed(cvoid))];
-  int t12[F(__is_signed(float))];
-  int t13[F(__is_signed(double))];
-  int t14[F(__is_signed(long double))];
-  int t15[F(__is_signed(unsigned char))];
-  int t16[F(__is_signed(unsigned int))];
-  int t17[F(__is_signed(unsigned long long))];
-  int t18[F(__is_signed(unsigned long))];
-  int t19[F(__is_signed(unsigned short))];
-  int t20[F(__is_signed(void))];
-  int t21[F(__is_signed(ClassType))];
-  int t22[F(__is_signed(Derives))];
-  int t23[F(__is_signed(Enum))];
-  int t24[F(__is_signed(IntArNB))];
-  int t25[F(__is_signed(Union))];
-  int t26[F(__is_signed(UnionAr))];
-}
-
-void is_unsigned()
-{
-  int t01[T(__is_unsigned(bool))];
-  int t02[T(__is_unsigned(unsigned char))];
-  int t03[T(__is_unsigned(unsigned short))];
-  int t04[T(__is_unsigned(unsigned int))];
-  int t05[T(__is_unsigned(unsigned long))];
-  int t06[T(__is_unsigned(unsigned long long))];
-  int t07[T(__is_unsigned(Enum))];
-
-  int t10[F(__is_unsigned(void))];
-  int t11[F(__is_unsigned(cvoid))];
-  int t12[F(__is_unsigned(float))];
-  int t13[F(__is_unsigned(double))];
-  int t14[F(__is_unsigned(long double))];
-  int t16[F(__is_unsigned(char))];
-  int t17[F(__is_unsigned(signed char))];
-  int t18[F(__is_unsigned(wchar_t))];
-  int t19[F(__is_unsigned(short))];
-  int t20[F(__is_unsigned(int))];
-  int t21[F(__is_unsigned(long))];
-  int t22[F(__is_unsigned(Union))];
-  int t23[F(__is_unsigned(UnionAr))];
-  int t24[F(__is_unsigned(Derives))];
-  int t25[F(__is_unsigned(ClassType))];
-  int t26[F(__is_unsigned(IntArNB))];
-}
-
-typedef Int& IntRef;
-typedef const IntAr ConstIntAr;
-typedef ConstIntAr ConstIntArAr[4];
-
-struct HasCopy {
-  HasCopy(HasCopy& cp);
-};
-
-struct HasMove {
-  HasMove(HasMove&& cp);
-};
-
-struct HasTemplateCons {
-  HasVirt Annoying;
-
-  template <typename T>
-  HasTemplateCons(const T&);
-};
-
-void has_trivial_default_constructor() {
-  { int arr[T(__has_trivial_constructor(Int))]; }
-  { int arr[T(__has_trivial_constructor(IntAr))]; }
-  { int arr[T(__has_trivial_constructor(Union))]; }
-  { int arr[T(__has_trivial_constructor(UnionAr))]; }
-  { int arr[T(__has_trivial_constructor(POD))]; }
-  { int arr[T(__has_trivial_constructor(Derives))]; }
-  { int arr[T(__has_trivial_constructor(DerivesAr))]; }
-  { int arr[T(__has_trivial_constructor(ConstIntAr))]; }
-  { int arr[T(__has_trivial_constructor(ConstIntArAr))]; }
-  { int arr[T(__has_trivial_constructor(HasDest))]; }
-  { int arr[T(__has_trivial_constructor(HasPriv))]; }
-  { int arr[T(__has_trivial_constructor(HasCopyAssign))]; }
-  { int arr[T(__has_trivial_constructor(HasMoveAssign))]; }
-  { int arr[T(__has_trivial_constructor(const Int))]; }
-  { int arr[T(__has_trivial_constructor(AllDefaulted))]; }
-  { int arr[T(__has_trivial_constructor(AllDeleted))]; }
-
-  { int arr[F(__has_trivial_constructor(HasCons))]; }
-  { int arr[F(__has_trivial_constructor(HasRef))]; }
-  { int arr[F(__has_trivial_constructor(HasCopy))]; }
-  { int arr[F(__has_trivial_constructor(IntRef))]; }
-  { int arr[F(__has_trivial_constructor(VirtAr))]; }
-  { int arr[F(__has_trivial_constructor(void))]; }
-  { int arr[F(__has_trivial_constructor(cvoid))]; }
-  { int arr[F(__has_trivial_constructor(HasTemplateCons))]; }
-  { int arr[F(__has_trivial_constructor(AllPrivate))]; }
-  { int arr[F(__has_trivial_constructor(ExtDefaulted))]; }
-}
-
-void has_trivial_move_constructor() {
-  // n3376 12.8 [class.copy]/12
-  // A copy/move constructor for class X is trivial if it is not 
-  // user-provided, its declared parameter type is the same as 
-  // if it had been implicitly declared, and if
-  //   \x97 class X has no virtual functions (10.3) and no virtual 
-  //     base classes (10.1), and
-  //   \x97 the constructor selected to copy/move each direct base 
-  //     class subobject is trivial, and
-  //   \x97 for each non-static data member of X that is of class 
-  //     type (or array thereof), the constructor selected
-  //     to copy/move that member is trivial;
-  // otherwise the copy/move constructor is non-trivial.
-  { int arr[T(__has_trivial_move_constructor(POD))]; }
-  { int arr[T(__has_trivial_move_constructor(Union))]; }
-  { int arr[T(__has_trivial_move_constructor(HasCons))]; }
-  { int arr[T(__has_trivial_move_constructor(HasStaticMemberMoveCtor))]; }
-  { int arr[T(__has_trivial_move_constructor(AllDeleted))]; }
-  
-  { int arr[F(__has_trivial_move_constructor(HasVirt))]; }
-  { int arr[F(__has_trivial_move_constructor(DerivesVirt))]; }
-  { int arr[F(__has_trivial_move_constructor(HasMoveCtor))]; }
-  { int arr[F(__has_trivial_move_constructor(DerivesHasMoveCtor))]; }
-  { int arr[F(__has_trivial_move_constructor(HasMemberMoveCtor))]; }
-}
-
-void has_trivial_copy_constructor() {
-  { int arr[T(__has_trivial_copy(Int))]; }
-  { int arr[T(__has_trivial_copy(IntAr))]; }
-  { int arr[T(__has_trivial_copy(Union))]; }
-  { int arr[T(__has_trivial_copy(UnionAr))]; }
-  { int arr[T(__has_trivial_copy(POD))]; }
-  { int arr[T(__has_trivial_copy(Derives))]; }
-  { int arr[T(__has_trivial_copy(ConstIntAr))]; }
-  { int arr[T(__has_trivial_copy(ConstIntArAr))]; }
-  { int arr[T(__has_trivial_copy(HasDest))]; }
-  { int arr[T(__has_trivial_copy(HasPriv))]; }
-  { int arr[T(__has_trivial_copy(HasCons))]; }
-  { int arr[T(__has_trivial_copy(HasRef))]; }
-  { int arr[T(__has_trivial_copy(HasMove))]; }
-  { int arr[T(__has_trivial_copy(IntRef))]; }
-  { int arr[T(__has_trivial_copy(HasCopyAssign))]; }
-  { int arr[T(__has_trivial_copy(HasMoveAssign))]; }
-  { int arr[T(__has_trivial_copy(const Int))]; }
-  { int arr[T(__has_trivial_copy(AllDefaulted))]; }
-  { int arr[T(__has_trivial_copy(AllDeleted))]; }
-  { int arr[T(__has_trivial_copy(DerivesAr))]; }
-  { int arr[T(__has_trivial_copy(DerivesHasRef))]; }
-
-  { int arr[F(__has_trivial_copy(HasCopy))]; }
-  { int arr[F(__has_trivial_copy(HasTemplateCons))]; }
-  { int arr[F(__has_trivial_copy(VirtAr))]; }
-  { int arr[F(__has_trivial_copy(void))]; }
-  { int arr[F(__has_trivial_copy(cvoid))]; }
-  { int arr[F(__has_trivial_copy(AllPrivate))]; }
-  { int arr[F(__has_trivial_copy(ExtDefaulted))]; }
-}
-
-void has_trivial_copy_assignment() {
-  { int arr[T(__has_trivial_assign(Int))]; }
-  { int arr[T(__has_trivial_assign(IntAr))]; }
-  { int arr[T(__has_trivial_assign(Union))]; }
-  { int arr[T(__has_trivial_assign(UnionAr))]; }
-  { int arr[T(__has_trivial_assign(POD))]; }
-  { int arr[T(__has_trivial_assign(Derives))]; }
-  { int arr[T(__has_trivial_assign(HasDest))]; }
-  { int arr[T(__has_trivial_assign(HasPriv))]; }
-  { int arr[T(__has_trivial_assign(HasCons))]; }
-  { int arr[T(__has_trivial_assign(HasRef))]; }
-  { int arr[T(__has_trivial_assign(HasCopy))]; }
-  { int arr[T(__has_trivial_assign(HasMove))]; }
-  { int arr[T(__has_trivial_assign(HasMoveAssign))]; }
-  { int arr[T(__has_trivial_assign(AllDefaulted))]; }
-  { int arr[T(__has_trivial_assign(AllDeleted))]; }
-  { int arr[T(__has_trivial_assign(DerivesAr))]; }
-  { int arr[T(__has_trivial_assign(DerivesHasRef))]; }
-
-  { int arr[F(__has_trivial_assign(IntRef))]; }
-  { int arr[F(__has_trivial_assign(HasCopyAssign))]; }
-  { int arr[F(__has_trivial_assign(const Int))]; }
-  { int arr[F(__has_trivial_assign(ConstIntAr))]; }
-  { int arr[F(__has_trivial_assign(ConstIntArAr))]; }
-  { int arr[F(__has_trivial_assign(VirtAr))]; }
-  { int arr[F(__has_trivial_assign(void))]; }
-  { int arr[F(__has_trivial_assign(cvoid))]; }
-  { int arr[F(__has_trivial_assign(AllPrivate))]; }
-  { int arr[F(__has_trivial_assign(ExtDefaulted))]; }
-}
-
-void has_trivial_destructor() {
-  { int arr[T(__has_trivial_destructor(Int))]; }
-  { int arr[T(__has_trivial_destructor(IntAr))]; }
-  { int arr[T(__has_trivial_destructor(Union))]; }
-  { int arr[T(__has_trivial_destructor(UnionAr))]; }
-  { int arr[T(__has_trivial_destructor(POD))]; }
-  { int arr[T(__has_trivial_destructor(Derives))]; }
-  { int arr[T(__has_trivial_destructor(ConstIntAr))]; }
-  { int arr[T(__has_trivial_destructor(ConstIntArAr))]; }
-  { int arr[T(__has_trivial_destructor(HasPriv))]; }
-  { int arr[T(__has_trivial_destructor(HasCons))]; }
-  { int arr[T(__has_trivial_destructor(HasRef))]; }
-  { int arr[T(__has_trivial_destructor(HasCopy))]; }
-  { int arr[T(__has_trivial_destructor(HasMove))]; }
-  { int arr[T(__has_trivial_destructor(IntRef))]; }
-  { int arr[T(__has_trivial_destructor(HasCopyAssign))]; }
-  { int arr[T(__has_trivial_destructor(HasMoveAssign))]; }
-  { int arr[T(__has_trivial_destructor(const Int))]; }
-  { int arr[T(__has_trivial_destructor(DerivesAr))]; }
-  { int arr[T(__has_trivial_destructor(VirtAr))]; }
-  { int arr[T(__has_trivial_destructor(AllDefaulted))]; }
-  { int arr[T(__has_trivial_destructor(AllDeleted))]; }
-  { int arr[T(__has_trivial_destructor(DerivesHasRef))]; }
-
-  { int arr[F(__has_trivial_destructor(HasDest))]; }
-  { int arr[F(__has_trivial_destructor(void))]; }
-  { int arr[F(__has_trivial_destructor(cvoid))]; }
-  { int arr[F(__has_trivial_destructor(AllPrivate))]; }
-  { int arr[F(__has_trivial_destructor(ExtDefaulted))]; }
-}
-
-struct A { ~A() {} };
-template<typename> struct B : A { };
-
-void f() {
-  { int arr[F(__has_trivial_destructor(A))]; }
-  { int arr[F(__has_trivial_destructor(B<int>))]; }
-}
-
-class PR11110 {
-  template <int> int operator=( int );
-  int operator=(PR11110);
-};
-
-class UsingAssign;
-
-class UsingAssignBase {
-protected:
-  UsingAssign &operator=(const UsingAssign&) throw();
-};
-
-class UsingAssign : public UsingAssignBase {
-public:
-  using UsingAssignBase::operator=;
-};
-
-void has_nothrow_assign() {
-  { int arr[T(__has_nothrow_assign(Int))]; }
-  { int arr[T(__has_nothrow_assign(IntAr))]; }
-  { int arr[T(__has_nothrow_assign(Union))]; }
-  { int arr[T(__has_nothrow_assign(UnionAr))]; }
-  { int arr[T(__has_nothrow_assign(POD))]; }
-  { int arr[T(__has_nothrow_assign(Derives))]; }
-  { int arr[T(__has_nothrow_assign(HasDest))]; }
-  { int arr[T(__has_nothrow_assign(HasPriv))]; }
-  { int arr[T(__has_nothrow_assign(HasCons))]; }
-  { int arr[T(__has_nothrow_assign(HasRef))]; }
-  { int arr[T(__has_nothrow_assign(HasCopy))]; }
-  { int arr[T(__has_nothrow_assign(HasMove))]; }
-  { int arr[T(__has_nothrow_assign(HasMoveAssign))]; }
-  { int arr[T(__has_nothrow_assign(HasNoThrowCopyAssign))]; }
-  { int arr[T(__has_nothrow_assign(HasMultipleNoThrowCopyAssign))]; }
-  { int arr[T(__has_nothrow_assign(HasVirtDest))]; }
-  { int arr[T(__has_nothrow_assign(AllPrivate))]; }
-  { int arr[T(__has_nothrow_assign(UsingAssign))]; }
-  { int arr[T(__has_nothrow_assign(DerivesAr))]; }
-
-  { int arr[F(__has_nothrow_assign(IntRef))]; }
-  { int arr[F(__has_nothrow_assign(HasCopyAssign))]; }
-  { int arr[F(__has_nothrow_assign(HasMultipleCopyAssign))]; }
-  { int arr[F(__has_nothrow_assign(const Int))]; }
-  { int arr[F(__has_nothrow_assign(ConstIntAr))]; }
-  { int arr[F(__has_nothrow_assign(ConstIntArAr))]; }
-  { int arr[F(__has_nothrow_assign(VirtAr))]; }
-  { int arr[F(__has_nothrow_assign(void))]; }
-  { int arr[F(__has_nothrow_assign(cvoid))]; }
-  { int arr[F(__has_nothrow_assign(PR11110))]; }
-}
-
-void has_nothrow_move_assign() {
-  { int arr[T(__has_nothrow_move_assign(Int))]; }
-  { int arr[T(__has_nothrow_move_assign(Enum))]; }
-  { int arr[T(__has_nothrow_move_assign(Int*))]; }
-  { int arr[T(__has_nothrow_move_assign(Enum POD::*))]; }
-  { int arr[T(__has_nothrow_move_assign(POD))]; }
-  { int arr[T(__has_nothrow_move_assign(HasPriv))]; }
-  { int arr[T(__has_nothrow_move_assign(HasNoThrowMoveAssign))]; }
-  { int arr[T(__has_nothrow_move_assign(HasNoExceptNoThrowMoveAssign))]; }
-  { int arr[T(__has_nothrow_move_assign(HasMemberNoThrowMoveAssign))]; }
-  { int arr[T(__has_nothrow_move_assign(HasMemberNoExceptNoThrowMoveAssign))]; }
-  { int arr[T(__has_nothrow_move_assign(AllDeleted))]; }
-
-
-  { int arr[F(__has_nothrow_move_assign(HasThrowMoveAssign))]; }
-  { int arr[F(__has_nothrow_move_assign(HasNoExceptFalseMoveAssign))]; }
-  { int arr[F(__has_nothrow_move_assign(HasMemberThrowMoveAssign))]; }
-  { int arr[F(__has_nothrow_move_assign(HasMemberNoExceptFalseMoveAssign))]; }
-  { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToUDCopyCtor))]; }
-  { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToUDCopyAssign))]; }
-  { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToDtor))]; }
-}
-
-void has_trivial_move_assign() {
-  // n3376 12.8 [class.copy]/25
-  // A copy/move assignment operator for class X is trivial if it 
-  // is not user-provided, its declared parameter type is the same 
-  // as if it had been implicitly declared, and if:
-  //  \x97 class X has no virtual functions (10.3) and no virtual base 
-  //    classes (10.1), and
-  //  \x97 the assignment operator selected to copy/move each direct 
-  //    base class subobject is trivial, and
-  //  \x97 for each non-static data member of X that is of class type 
-  //    (or array thereof), the assignment operator
-  //    selected to copy/move that member is trivial;
-  { int arr[T(__has_trivial_move_assign(Int))]; }
-  { int arr[T(__has_trivial_move_assign(HasStaticMemberMoveAssign))]; }
-  { int arr[T(__has_trivial_move_assign(AllDeleted))]; }
-
-  { int arr[F(__has_trivial_move_assign(HasVirt))]; }
-  { int arr[F(__has_trivial_move_assign(DerivesVirt))]; }
-  { int arr[F(__has_trivial_move_assign(HasMoveAssign))]; }
-  { int arr[F(__has_trivial_move_assign(DerivesHasMoveAssign))]; }
-  { int arr[F(__has_trivial_move_assign(HasMemberMoveAssign))]; }
-  { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToUDCopyCtor))]; }
-  { int arr[F(__has_nothrow_move_assign(NoDefaultMoveAssignDueToUDCopyAssign))]; }
-}
-
-void has_nothrow_copy() {
-  { int arr[T(__has_nothrow_copy(Int))]; }
-  { int arr[T(__has_nothrow_copy(IntAr))]; }
-  { int arr[T(__has_nothrow_copy(Union))]; }
-  { int arr[T(__has_nothrow_copy(UnionAr))]; }
-  { int arr[T(__has_nothrow_copy(POD))]; }
-  { int arr[T(__has_nothrow_copy(const Int))]; }
-  { int arr[T(__has_nothrow_copy(ConstIntAr))]; }
-  { int arr[T(__has_nothrow_copy(ConstIntArAr))]; }
-  { int arr[T(__has_nothrow_copy(Derives))]; }
-  { int arr[T(__has_nothrow_copy(IntRef))]; }
-  { int arr[T(__has_nothrow_copy(HasDest))]; }
-  { int arr[T(__has_nothrow_copy(HasPriv))]; }
-  { int arr[T(__has_nothrow_copy(HasCons))]; }
-  { int arr[T(__has_nothrow_copy(HasRef))]; }
-  { int arr[T(__has_nothrow_copy(HasMove))]; }
-  { int arr[T(__has_nothrow_copy(HasCopyAssign))]; }
-  { int arr[T(__has_nothrow_copy(HasMoveAssign))]; }
-  { int arr[T(__has_nothrow_copy(HasNoThrowCopy))]; }
-  { int arr[T(__has_nothrow_copy(HasMultipleNoThrowCopy))]; }
-  { int arr[T(__has_nothrow_copy(HasVirtDest))]; }
-  { int arr[T(__has_nothrow_copy(HasTemplateCons))]; }
-  { int arr[T(__has_nothrow_copy(AllPrivate))]; }
-  { int arr[T(__has_nothrow_copy(DerivesAr))]; }
-
-  { int arr[F(__has_nothrow_copy(HasCopy))]; }
-  { int arr[F(__has_nothrow_copy(HasMultipleCopy))]; }
-  { int arr[F(__has_nothrow_copy(VirtAr))]; }
-  { int arr[F(__has_nothrow_copy(void))]; }
-  { int arr[F(__has_nothrow_copy(cvoid))]; }
-}
-
-void has_nothrow_constructor() {
-  { int arr[T(__has_nothrow_constructor(Int))]; }
-  { int arr[T(__has_nothrow_constructor(IntAr))]; }
-  { int arr[T(__has_nothrow_constructor(Union))]; }
-  { int arr[T(__has_nothrow_constructor(UnionAr))]; }
-  { int arr[T(__has_nothrow_constructor(POD))]; }
-  { int arr[T(__has_nothrow_constructor(Derives))]; }
-  { int arr[T(__has_nothrow_constructor(DerivesAr))]; }
-  { int arr[T(__has_nothrow_constructor(ConstIntAr))]; }
-  { int arr[T(__has_nothrow_constructor(ConstIntArAr))]; }
-  { int arr[T(__has_nothrow_constructor(HasDest))]; }
-  { int arr[T(__has_nothrow_constructor(HasPriv))]; }
-  { int arr[T(__has_nothrow_constructor(HasCopyAssign))]; }
-  { int arr[T(__has_nothrow_constructor(const Int))]; }
-  { int arr[T(__has_nothrow_constructor(HasNoThrowConstructor))]; }
-  { int arr[T(__has_nothrow_constructor(HasVirtDest))]; }
-  // { int arr[T(__has_nothrow_constructor(VirtAr))]; } // not implemented
-  { int arr[T(__has_nothrow_constructor(AllPrivate))]; }
-
-  { int arr[F(__has_nothrow_constructor(HasCons))]; }
-  { int arr[F(__has_nothrow_constructor(HasRef))]; }
-  { int arr[F(__has_nothrow_constructor(HasCopy))]; }
-  { int arr[F(__has_nothrow_constructor(HasMove))]; }
-  { int arr[F(__has_nothrow_constructor(HasNoThrowConstructorWithArgs))]; }
-  { int arr[F(__has_nothrow_constructor(IntRef))]; }
-  { int arr[F(__has_nothrow_constructor(void))]; }
-  { int arr[F(__has_nothrow_constructor(cvoid))]; }
-  { int arr[F(__has_nothrow_constructor(HasTemplateCons))]; }
-}
-
-void has_virtual_destructor() {
-  { int arr[F(__has_virtual_destructor(Int))]; }
-  { int arr[F(__has_virtual_destructor(IntAr))]; }
-  { int arr[F(__has_virtual_destructor(Union))]; }
-  { int arr[F(__has_virtual_destructor(UnionAr))]; }
-  { int arr[F(__has_virtual_destructor(POD))]; }
-  { int arr[F(__has_virtual_destructor(Derives))]; }
-  { int arr[F(__has_virtual_destructor(DerivesAr))]; }
-  { int arr[F(__has_virtual_destructor(const Int))]; }
-  { int arr[F(__has_virtual_destructor(ConstIntAr))]; }
-  { int arr[F(__has_virtual_destructor(ConstIntArAr))]; }
-  { int arr[F(__has_virtual_destructor(HasDest))]; }
-  { int arr[F(__has_virtual_destructor(HasPriv))]; }
-  { int arr[F(__has_virtual_destructor(HasCons))]; }
-  { int arr[F(__has_virtual_destructor(HasRef))]; }
-  { int arr[F(__has_virtual_destructor(HasCopy))]; }
-  { int arr[F(__has_virtual_destructor(HasMove))]; }
-  { int arr[F(__has_virtual_destructor(HasCopyAssign))]; }
-  { int arr[F(__has_virtual_destructor(HasMoveAssign))]; }
-  { int arr[F(__has_virtual_destructor(IntRef))]; }
-  { int arr[F(__has_virtual_destructor(VirtAr))]; }
-
-  { int arr[T(__has_virtual_destructor(HasVirtDest))]; }
-  { int arr[T(__has_virtual_destructor(DerivedVirtDest))]; }
-  { int arr[F(__has_virtual_destructor(VirtDestAr))]; }
-  { int arr[F(__has_virtual_destructor(void))]; }
-  { int arr[F(__has_virtual_destructor(cvoid))]; }
-  { int arr[F(__has_virtual_destructor(AllPrivate))]; }
-}
-
-
-class Base {};
-class Derived : Base {};
-class Derived2a : Derived {};
-class Derived2b : Derived {};
-class Derived3 : virtual Derived2a, virtual Derived2b {};
-template<typename T> struct BaseA { T a;  };
-template<typename T> struct DerivedB : BaseA<T> { };
-template<typename T> struct CrazyDerived : T { };
-
-
-class class_forward; // expected-note {{forward declaration of 'class_forward'}}
-
-template <typename Base, typename Derived>
-void isBaseOfT() {
-  int t[T(__is_base_of(Base, Derived))];
-};
-template <typename Base, typename Derived>
-void isBaseOfF() {
-  int t[F(__is_base_of(Base, Derived))];
-};
-
-template <class T> class DerivedTemp : Base {};
-template <class T> class NonderivedTemp {};
-template <class T> class UndefinedTemp; // expected-note {{declared here}}
-
-void is_base_of() {
-  { int arr[T(__is_base_of(Base, Derived))]; }
-  { int arr[T(__is_base_of(const Base, Derived))]; }
-  { int arr[F(__is_base_of(Derived, Base))]; }
-  { int arr[F(__is_base_of(Derived, int))]; }
-  { int arr[T(__is_base_of(Base, Base))]; }
-  { int arr[T(__is_base_of(Base, Derived3))]; }
-  { int arr[T(__is_base_of(Derived, Derived3))]; }
-  { int arr[T(__is_base_of(Derived2b, Derived3))]; }
-  { int arr[T(__is_base_of(Derived2a, Derived3))]; }
-  { int arr[T(__is_base_of(BaseA<int>, DerivedB<int>))]; }
-  { int arr[F(__is_base_of(DerivedB<int>, BaseA<int>))]; }
-  { int arr[T(__is_base_of(Base, CrazyDerived<Base>))]; }
-  { int arr[F(__is_base_of(Union, Union))]; }
-  { int arr[T(__is_base_of(Empty, Empty))]; }
-  { int arr[T(__is_base_of(class_forward, class_forward))]; }
-  { int arr[F(__is_base_of(Empty, class_forward))]; } // expected-error {{incomplete type 'class_forward' used in type trait expression}}
-  { int arr[F(__is_base_of(Base&, Derived&))]; }
-  int t18[F(__is_base_of(Base[10], Derived[10]))];
-  { int arr[F(__is_base_of(int, int))]; }
-  { int arr[F(__is_base_of(long, int))]; }
-  { int arr[T(__is_base_of(Base, DerivedTemp<int>))]; }
-  { int arr[F(__is_base_of(Base, NonderivedTemp<int>))]; }
-  { int arr[F(__is_base_of(Base, UndefinedTemp<int>))]; } // expected-error {{implicit instantiation of undefined template 'UndefinedTemp<int>'}}
-
-  isBaseOfT<Base, Derived>();
-  isBaseOfF<Derived, Base>();
-
-  isBaseOfT<Base, CrazyDerived<Base> >();
-  isBaseOfF<CrazyDerived<Base>, Base>();
-
-  isBaseOfT<BaseA<int>, DerivedB<int> >();
-  isBaseOfF<DerivedB<int>, BaseA<int> >();
-}
-
-template<class T, class U>
-class TemplateClass {};
-
-template<class T>
-using TemplateAlias = TemplateClass<T, int>;
-
-typedef class Base BaseTypedef;
-
-void is_same()
-{
-  int t01[T(__is_same(Base, Base))];
-  int t02[T(__is_same(Base, BaseTypedef))];
-  int t03[T(__is_same(TemplateClass<int, int>, TemplateAlias<int>))];
-
-  int t10[F(__is_same(Base, const Base))];
-  int t11[F(__is_same(Base, Base&))];
-  int t12[F(__is_same(Base, Derived))];
-}
-
-struct IntWrapper
-{
-  int value;
-  IntWrapper(int _value) : value(_value) {}
-  operator int() const {
-    return value;
-  }
-};
-
-struct FloatWrapper
-{
-  float value;
-  FloatWrapper(float _value) : value(_value) {}
-  FloatWrapper(const IntWrapper& obj)
-    : value(static_cast<float>(obj.value)) {}
-  operator float() const {
-    return value;
-  }
-  operator IntWrapper() const {
-    return IntWrapper(static_cast<int>(value));
-  }
-};
-
-void is_convertible()
-{
-  int t01[T(__is_convertible(IntWrapper, IntWrapper))];
-  int t02[T(__is_convertible(IntWrapper, const IntWrapper))];
-  int t03[T(__is_convertible(IntWrapper, int))];
-  int t04[T(__is_convertible(int, IntWrapper))];
-  int t05[T(__is_convertible(IntWrapper, FloatWrapper))];
-  int t06[T(__is_convertible(FloatWrapper, IntWrapper))];
-  int t07[T(__is_convertible(FloatWrapper, float))];
-  int t08[T(__is_convertible(float, FloatWrapper))];
-}
-
-struct FromInt { FromInt(int); };
-struct ToInt { operator int(); };
-typedef void Function();
-
-void is_convertible_to();
-class PrivateCopy {
-  PrivateCopy(const PrivateCopy&);
-  friend void is_convertible_to();
-};
-
-template<typename T>
-struct X0 { 
-  template<typename U> X0(const X0<U>&);
-};
-
-struct Abstract { virtual void f() = 0; };
-
-void is_convertible_to() {
-  { int arr[T(__is_convertible_to(Int, Int))]; }
-  { int arr[F(__is_convertible_to(Int, IntAr))]; }
-  { int arr[F(__is_convertible_to(IntAr, IntAr))]; }
-  { int arr[T(__is_convertible_to(void, void))]; }
-  { int arr[T(__is_convertible_to(cvoid, void))]; }
-  { int arr[T(__is_convertible_to(void, cvoid))]; }
-  { int arr[T(__is_convertible_to(cvoid, cvoid))]; }
-  { int arr[T(__is_convertible_to(int, FromInt))]; }
-  { int arr[T(__is_convertible_to(long, FromInt))]; }
-  { int arr[T(__is_convertible_to(double, FromInt))]; }
-  { int arr[T(__is_convertible_to(const int, FromInt))]; }
-  { int arr[T(__is_convertible_to(const int&, FromInt))]; }
-  { int arr[T(__is_convertible_to(ToInt, int))]; }
-  { int arr[T(__is_convertible_to(ToInt, const int&))]; }
-  { int arr[T(__is_convertible_to(ToInt, long))]; }
-  { int arr[F(__is_convertible_to(ToInt, int&))]; }
-  { int arr[F(__is_convertible_to(ToInt, FromInt))]; }
-  { int arr[T(__is_convertible_to(IntAr&, IntAr&))]; }
-  { int arr[T(__is_convertible_to(IntAr&, const IntAr&))]; }
-  { int arr[F(__is_convertible_to(const IntAr&, IntAr&))]; }
-  { int arr[F(__is_convertible_to(Function, Function))]; }
-  { int arr[F(__is_convertible_to(PrivateCopy, PrivateCopy))]; }
-  { int arr[T(__is_convertible_to(X0<int>, X0<float>))]; }
-  { int arr[F(__is_convertible_to(Abstract, Abstract))]; }
-}
-
-namespace is_convertible_to_instantiate {
-  // Make sure we don't try to instantiate the constructor.
-  template<int x> class A { A(int) { int a[x]; } };
-  int x = __is_convertible_to(int, A<-1>);
-}
-
-void is_trivial()
-{
-  { int arr[T(__is_trivial(int))]; }
-  { int arr[T(__is_trivial(Enum))]; }
-  { int arr[T(__is_trivial(POD))]; }
-  { int arr[T(__is_trivial(Int))]; }
-  { int arr[T(__is_trivial(IntAr))]; }
-  { int arr[T(__is_trivial(IntArNB))]; }
-  { int arr[T(__is_trivial(Statics))]; }
-  { int arr[T(__is_trivial(Empty))]; }
-  { int arr[T(__is_trivial(EmptyUnion))]; }
-  { int arr[T(__is_trivial(Union))]; }
-  { int arr[T(__is_trivial(Derives))]; }
-  { int arr[T(__is_trivial(DerivesAr))]; }
-  { int arr[T(__is_trivial(DerivesArNB))]; }
-  { int arr[T(__is_trivial(DerivesEmpty))]; }
-  { int arr[T(__is_trivial(HasFunc))]; }
-  { int arr[T(__is_trivial(HasOp))]; }
-  { int arr[T(__is_trivial(HasConv))]; }
-  { int arr[T(__is_trivial(HasAssign))]; }
-  { int arr[T(__is_trivial(HasAnonymousUnion))]; }
-  { int arr[T(__is_trivial(HasPriv))]; }
-  { int arr[T(__is_trivial(HasProt))]; }
-  { int arr[T(__is_trivial(DerivesHasPriv))]; }
-  { int arr[T(__is_trivial(DerivesHasProt))]; }
-  { int arr[T(__is_trivial(Vector))]; }
-  { int arr[T(__is_trivial(VectorExt))]; }
-
-  { int arr[F(__is_trivial(HasCons))]; }
-  { int arr[F(__is_trivial(HasCopyAssign))]; }
-  { int arr[F(__is_trivial(HasMoveAssign))]; }
-  { int arr[F(__is_trivial(HasDest))]; }
-  { int arr[F(__is_trivial(HasRef))]; }
-  { int arr[F(__is_trivial(HasNonPOD))]; }
-  { int arr[F(__is_trivial(HasVirt))]; }
-  { int arr[F(__is_trivial(DerivesHasCons))]; }
-  { int arr[F(__is_trivial(DerivesHasCopyAssign))]; }
-  { int arr[F(__is_trivial(DerivesHasMoveAssign))]; }
-  { int arr[F(__is_trivial(DerivesHasDest))]; }
-  { int arr[F(__is_trivial(DerivesHasRef))]; }
-  { int arr[F(__is_trivial(DerivesHasVirt))]; }
-  { int arr[F(__is_trivial(void))]; }
-  { int arr[F(__is_trivial(cvoid))]; }
-}
-
-void trivial_checks()
-{
-  { int arr[T(__is_trivially_copyable(int))]; }
-  { int arr[T(__is_trivially_copyable(Enum))]; }
-  { int arr[T(__is_trivially_copyable(POD))]; }
-  { int arr[T(__is_trivially_copyable(Int))]; }
-  { int arr[T(__is_trivially_copyable(IntAr))]; }
-  { int arr[T(__is_trivially_copyable(IntArNB))]; }
-  { int arr[T(__is_trivially_copyable(Statics))]; }
-  { int arr[T(__is_trivially_copyable(Empty))]; }
-  { int arr[T(__is_trivially_copyable(EmptyUnion))]; }
-  { int arr[T(__is_trivially_copyable(Union))]; }
-  { int arr[T(__is_trivially_copyable(Derives))]; }
-  { int arr[T(__is_trivially_copyable(DerivesAr))]; }
-  { int arr[T(__is_trivially_copyable(DerivesArNB))]; }
-  { int arr[T(__is_trivially_copyable(DerivesEmpty))]; }
-  { int arr[T(__is_trivially_copyable(HasFunc))]; }
-  { int arr[T(__is_trivially_copyable(HasOp))]; }
-  { int arr[T(__is_trivially_copyable(HasConv))]; }
-  { int arr[T(__is_trivially_copyable(HasAssign))]; }
-  { int arr[T(__is_trivially_copyable(HasAnonymousUnion))]; }
-  { int arr[T(__is_trivially_copyable(HasPriv))]; }
-  { int arr[T(__is_trivially_copyable(HasProt))]; }
-  { int arr[T(__is_trivially_copyable(DerivesHasPriv))]; }
-  { int arr[T(__is_trivially_copyable(DerivesHasProt))]; }
-  { int arr[T(__is_trivially_copyable(Vector))]; }
-  { int arr[T(__is_trivially_copyable(VectorExt))]; }
-  { int arr[T(__is_trivially_copyable(HasCons))]; }
-  { int arr[T(__is_trivially_copyable(HasRef))]; }
-  { int arr[T(__is_trivially_copyable(HasNonPOD))]; }
-  { int arr[T(__is_trivially_copyable(DerivesHasCons))]; }
-  { int arr[T(__is_trivially_copyable(DerivesHasRef))]; }
-
-  { int arr[F(__is_trivially_copyable(HasCopyAssign))]; }
-  { int arr[F(__is_trivially_copyable(HasMoveAssign))]; }
-  { int arr[F(__is_trivially_copyable(HasDest))]; }
-  { int arr[F(__is_trivially_copyable(HasVirt))]; }
-  { int arr[F(__is_trivially_copyable(DerivesHasCopyAssign))]; }
-  { int arr[F(__is_trivially_copyable(DerivesHasMoveAssign))]; }
-  { int arr[F(__is_trivially_copyable(DerivesHasDest))]; }
-  { int arr[F(__is_trivially_copyable(DerivesHasVirt))]; }
-  { int arr[F(__is_trivially_copyable(void))]; }
-  { int arr[F(__is_trivially_copyable(cvoid))]; }
-
-  { int arr[T((__is_trivially_constructible(int)))]; }
-  { int arr[T((__is_trivially_constructible(int, int)))]; }
-  { int arr[T((__is_trivially_constructible(int, float)))]; }
-  { int arr[T((__is_trivially_constructible(int, int&)))]; }
-  { int arr[T((__is_trivially_constructible(int, const int&)))]; }
-  { int arr[T((__is_trivially_constructible(int, int)))]; }
-  { int arr[T((__is_trivially_constructible(HasCopyAssign, HasCopyAssign)))]; }
-  { int arr[T((__is_trivially_constructible(HasCopyAssign, const HasCopyAssign&)))]; }
-  { int arr[T((__is_trivially_constructible(HasCopyAssign, HasCopyAssign&&)))]; }
-  { int arr[T((__is_trivially_constructible(HasCopyAssign)))]; }
-  { int arr[T((__is_trivially_constructible(NonTrivialDefault,
-                                            const NonTrivialDefault&)))]; }
-  { int arr[T((__is_trivially_constructible(NonTrivialDefault,
-                                            NonTrivialDefault&&)))]; }
-  { int arr[T((__is_trivially_constructible(AllDefaulted)))]; }
-  { int arr[T((__is_trivially_constructible(AllDefaulted,
-                                            const AllDefaulted &)))]; }
-  { int arr[T((__is_trivially_constructible(AllDefaulted,
-                                            AllDefaulted &&)))]; }
-
-  { int arr[F((__is_trivially_constructible(int, int*)))]; }
-  { int arr[F((__is_trivially_constructible(NonTrivialDefault)))]; }
-  { int arr[F((__is_trivially_constructible(ThreeArgCtor, int*, char*, int&)))]; }
-  { int arr[F((__is_trivially_constructible(AllDeleted)))]; }
-  { int arr[F((__is_trivially_constructible(AllDeleted,
-                                            const AllDeleted &)))]; }
-  { int arr[F((__is_trivially_constructible(AllDeleted,
-                                            AllDeleted &&)))]; }
-  { int arr[F((__is_trivially_constructible(ExtDefaulted)))]; }
-  { int arr[F((__is_trivially_constructible(ExtDefaulted,
-                                            const ExtDefaulted &)))]; }
-  { int arr[F((__is_trivially_constructible(ExtDefaulted,
-                                            ExtDefaulted &&)))]; }
-
-  { int arr[T((__is_trivially_assignable(int&, int)))]; }
-  { int arr[T((__is_trivially_assignable(int&, int&)))]; }
-  { int arr[T((__is_trivially_assignable(int&, int&&)))]; }
-  { int arr[T((__is_trivially_assignable(int&, const int&)))]; }
-  { int arr[T((__is_trivially_assignable(POD&, POD)))]; }
-  { int arr[T((__is_trivially_assignable(POD&, POD&)))]; }
-  { int arr[T((__is_trivially_assignable(POD&, POD&&)))]; }
-  { int arr[T((__is_trivially_assignable(POD&, const POD&)))]; }
-  { int arr[T((__is_trivially_assignable(int*&, int*)))]; }
-  { int arr[T((__is_trivially_assignable(AllDefaulted,
-                                         const AllDefaulted &)))]; }
-  { int arr[T((__is_trivially_assignable(AllDefaulted,
-                                         AllDefaulted &&)))]; }
-
-  { int arr[F((__is_trivially_assignable(int*&, float*)))]; }
-  { int arr[F((__is_trivially_assignable(HasCopyAssign&, HasCopyAssign)))]; }
-  { int arr[F((__is_trivially_assignable(HasCopyAssign&, HasCopyAssign&)))]; }
-  { int arr[F((__is_trivially_assignable(HasCopyAssign&, const HasCopyAssign&)))]; }
-  { int arr[F((__is_trivially_assignable(HasCopyAssign&, HasCopyAssign&&)))]; }
-  { int arr[F((__is_trivially_assignable(TrivialMoveButNotCopy&,
-                                        TrivialMoveButNotCopy&)))]; }
-  { int arr[F((__is_trivially_assignable(TrivialMoveButNotCopy&,
-                                        const TrivialMoveButNotCopy&)))]; }
-  { int arr[F((__is_trivially_assignable(AllDeleted,
-                                         const AllDeleted &)))]; }
-  { int arr[F((__is_trivially_assignable(AllDeleted,
-                                         AllDeleted &&)))]; }
-  { int arr[F((__is_trivially_assignable(ExtDefaulted,
-                                         const ExtDefaulted &)))]; }
-  { int arr[F((__is_trivially_assignable(ExtDefaulted,
-                                         ExtDefaulted &&)))]; }
-
-  { int arr[T((__is_trivially_assignable(HasDefaultTrivialCopyAssign&,
-                                         HasDefaultTrivialCopyAssign&)))]; }
-  { int arr[T((__is_trivially_assignable(HasDefaultTrivialCopyAssign&,
-                                       const HasDefaultTrivialCopyAssign&)))]; }
-  { int arr[T((__is_trivially_assignable(TrivialMoveButNotCopy&,
-                                         TrivialMoveButNotCopy)))]; }
-  { int arr[T((__is_trivially_assignable(TrivialMoveButNotCopy&,
-                                         TrivialMoveButNotCopy&&)))]; }
-}
-
-// Instantiation of __is_trivially_constructible
-template<typename T, typename ...Args>
-struct is_trivially_constructible {
-  static const bool value = __is_trivially_constructible(T, Args...);
-};
-
-void is_trivially_constructible_test() {
-  { int arr[T((is_trivially_constructible<int>::value))]; }
-  { int arr[T((is_trivially_constructible<int, int>::value))]; }
-  { int arr[T((is_trivially_constructible<int, float>::value))]; }
-  { int arr[T((is_trivially_constructible<int, int&>::value))]; }
-  { int arr[T((is_trivially_constructible<int, const int&>::value))]; }
-  { int arr[T((is_trivially_constructible<int, int>::value))]; }
-  { int arr[T((is_trivially_constructible<HasCopyAssign, HasCopyAssign>::value))]; }
-  { int arr[T((is_trivially_constructible<HasCopyAssign, const HasCopyAssign&>::value))]; }
-  { int arr[T((is_trivially_constructible<HasCopyAssign, HasCopyAssign&&>::value))]; }
-  { int arr[T((is_trivially_constructible<HasCopyAssign>::value))]; }
-  { int arr[T((is_trivially_constructible<NonTrivialDefault,
-                                            const NonTrivialDefault&>::value))]; }
-  { int arr[T((is_trivially_constructible<NonTrivialDefault,
-                                            NonTrivialDefault&&>::value))]; }
-
-  { int arr[F((is_trivially_constructible<int, int*>::value))]; }
-  { int arr[F((is_trivially_constructible<NonTrivialDefault>::value))]; }
-  { int arr[F((is_trivially_constructible<ThreeArgCtor, int*, char*, int&>::value))]; }
-}
-
-void array_rank() {
-  int t01[T(__array_rank(IntAr) == 1)];
-  int t02[T(__array_rank(ConstIntArAr) == 2)];
-}
-
-void array_extent() {
-  int t01[T(__array_extent(IntAr, 0) == 10)];
-  int t02[T(__array_extent(ConstIntArAr, 0) == 4)];
-  int t03[T(__array_extent(ConstIntArAr, 1) == 10)];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/typedef-redecl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/typedef-redecl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/typedef-redecl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-typedef int INT;
-typedef INT REALLY_INT; // expected-note {{previous definition is here}}
-typedef REALLY_INT REALLY_REALLY_INT;
-typedef REALLY_INT BOB;
-typedef float REALLY_INT; // expected-error{{typedef redefinition with different types ('float' vs 'INT' (aka 'int'))}}
-
-struct X {
-  typedef int result_type; // expected-note {{previous definition is here}}
-  typedef INT result_type; // expected-error {{redefinition of 'result_type'}}
-};
-
-struct Y; // expected-note{{previous definition is here}}
-typedef int Y;  // expected-error{{typedef redefinition with different types ('int' vs 'Y')}}
-
-typedef int Y2; // expected-note{{declared here}}
-struct Y2; // expected-error{{definition of type 'Y2' conflicts with typedef of the same name}}
-
-void f(); // expected-note{{previous definition is here}}
-typedef int f; // expected-error{{redefinition of 'f' as different kind of symbol}}
-
-typedef int f2; // expected-note{{previous definition is here}}
-void f2(); // expected-error{{redefinition of 'f2' as different kind of symbol}}
-
-typedef struct s s; 
-typedef int I; 
-typedef int I; 
-typedef I I; 
-
-struct s { };
-
-// PR5874
-namespace test1 {
-  typedef int foo;
-  namespace a { using test1::foo; };
-  typedef int foo;
-  using namespace a; 
-  foo x;
-}
-
-namespace PR6923 {
-  struct A;
-
-  extern "C" {
-    struct A;
-    typedef struct A A;
-  }
-
-  struct A;
-}
-
-namespace PR7462 {
-  struct A {};
-  typedef int operator! (A); // expected-error{{typedef name must be an identifier}}
-  int i = !A(); // expected-error{{invalid argument type}}
-}
-
-template<typename T>
-typedef T f(T t) { return t; } // expected-error {{function definition declared 'typedef'}}
-int k = f(0);
-int k2 = k;
-
-namespace PR11630 {
-  template <class T>
-  struct S
-  {
-    static const unsigned C = 1;
-    static void f()
-    {
-      typedef int q[C == 1 ? 1 : -1]; // expected-note{{previous definition is here}}
-      typedef int q[C >= 1 ? 2 : -2]; // expected-error{{typedef redefinition with different types ('int [2]' vs 'int [1]')}}
-      typedef int n[C == 1 ? 1 : -1];
-      typedef int n[C >= 1 ? 1 : -1];
-    }
-  };
-
-  template <int T>
-  struct S2
-  {
-    static void f()
-    {
-      typedef int q[1];  // expected-note{{previous definition is here}}
-      typedef int q[T];  // expected-error{{typedef redefinition with different types ('int [2]' vs 'int [1]')}}
-    }
-  };
-
-  void f() {
-    S<int> a;
-    a.f(); // expected-note{{in instantiation of member function 'PR11630::S<int>::f' requested here}}
-    S2<1> b;
-    b.f();
-    S2<2> b2;
-    b2.f(); // expected-note{{in instantiation of member function 'PR11630::S2<2>::f' requested here}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/typeid-ref.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/typeid-ref.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/typeid-ref.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
-namespace std {
-  class type_info;
-}
-
-struct X { };
-
-void f() {
-  // CHECK: @_ZTS1X = linkonce_odr constant
-  // CHECK: @_ZTI1X = linkonce_odr unnamed_addr constant 
-  (void)typeid(X&);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/typeid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/typeid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/typeid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f()
-{
-  (void)typeid(int); // expected-error {{you need to include <typeinfo> before using the 'typeid' operator}}
-}
-
-namespace std {
-  class type_info;
-}
-
-void g()
-{
-  (void)typeid(int);
-}
-
-struct X; // expected-note 3{{forward declaration}}
-
-void g1(X &x) {
-  (void)typeid(X); // expected-error{{'typeid' of incomplete type 'X'}}
-  (void)typeid(X&); // expected-error{{'typeid' of incomplete type 'X'}}
-  (void)typeid(x); // expected-error{{'typeid' of incomplete type 'X'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/types_compatible_p.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/types_compatible_p.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/types_compatible_p.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-bool f() {
-  return __builtin_types_compatible_p(int, const int); // expected-error{{C++}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/typo-correction.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/typo-correction.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/typo-correction.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,262 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-c++11-extensions %s
-
-struct errc {
-  int v_;
-  operator int() const {return v_;}
-};
-
-class error_condition
-{
-  int _val_;
-public:
-  error_condition() : _val_(0) {}
-
-  error_condition(int _val)
-    : _val_(_val) {}
-
-  template <class E>
-  error_condition(E _e) {
-    // make_error_condition must not be typo corrected to error_condition
-    // even though the first declaration of make_error_condition has not
-    // yet been encountered. This was a bug in the first version of the type
-    // name typo correction patch that wasn't noticed until building LLVM with
-    // Clang failed.
-    *this = make_error_condition(_e);
-  }
-
-};
-
-inline error_condition make_error_condition(errc _e) {
-  return error_condition(static_cast<int>(_e));
-}
-
-
-// Prior to the introduction of a callback object to further filter possible
-// typo corrections, this example would not trigger a suggestion as "base_type"
-// is a closer match to "basetype" than is "BaseType" but "base_type" does not
-// refer to a base class or non-static data member.
-struct BaseType { };
-struct Derived : public BaseType { // expected-note {{base class 'BaseType' specified here}}
-  static int base_type; // expected-note {{'base_type' declared here}}
-  Derived() : basetype() {} // expected-error{{initializer 'basetype' does not name a non-static data member or base class; did you mean the base class 'BaseType'?}}
-};
-
-// Test the improvement from passing a callback object to CorrectTypo in
-// the helper function LookupMemberExprInRecord.
-int get_type(struct Derived *st) {
-  return st->Base_Type; // expected-error{{no member named 'Base_Type' in 'Derived'; did you mean 'base_type'?}}
-}
-
-// In this example, somename should not be corrected to the cached correction
-// "some_name" since "some_name" is a class and a namespace name is needed.
-class some_name {}; // expected-note {{'some_name' declared here}}
-somename Foo; // expected-error {{unknown type name 'somename'; did you mean 'some_name'?}}
-namespace SomeName {} // expected-note {{namespace 'SomeName' defined here}}
-using namespace somename; // expected-error {{no namespace named 'somename'; did you mean 'SomeName'?}}
-
-
-// Without the callback object, CorrectTypo would choose "field1" as the
-// correction for "fielda" as it is closer than "FieldA", but that correction
-// would be later discarded by the caller and no suggestion would be given.
-struct st {
-  struct {
-    int field1;
-  };
-  double FieldA; // expected-note{{'FieldA' declared here}}
-};
-st var = { .fielda = 0.0 }; // expected-error{{field designator 'fielda' does not refer to any field in type 'st'; did you mean 'FieldA'?}}
-
-// Test the improvement from passing a callback object to CorrectTypo in
-// Sema::BuildCXXNestedNameSpecifier. And also for the improvement by doing
-// so in Sema::getTypeName.
-typedef char* another_str; // expected-note{{'another_str' declared here}}
-namespace AnotherStd { // expected-note{{'AnotherStd' declared here}}
-  class string {};
-}
-another_std::string str; // expected-error{{use of undeclared identifier 'another_std'; did you mean 'AnotherStd'?}}
-another_str *cstr = new AnotherStr; // expected-error{{unknown type name 'AnotherStr'; did you mean 'another_str'?}}
-
-// Test the improvement from passing a callback object to CorrectTypo in
-// Sema::ActOnSizeofParameterPackExpr.
-char* TireNames;
-template<typename ...TypeNames> struct count { // expected-note{{parameter pack 'TypeNames' declared here}}
-  static const unsigned value = sizeof...(TyreNames); // expected-error{{'TyreNames' does not refer to the name of a parameter pack; did you mean 'TypeNames'?}}
-};
-
-// Test the typo-correction callback in Sema::DiagnoseUnknownTypeName.
-namespace unknown_type_test {
-  class StreamOut {}; // expected-note 2 {{'StreamOut' declared here}}
-  long stream_count; // expected-note 2 {{'stream_count' declared here}}
-};
-unknown_type_test::stream_out out; // expected-error{{no type named 'stream_out' in namespace 'unknown_type_test'; did you mean 'StreamOut'?}}
-
-// Demonstrate a case where using only the cached value returns the wrong thing
-// when the cached value was the result of a previous callback object that only
-// accepts a subset of the current callback object.
-namespace {
-using namespace unknown_type_test;
-void bar(long i);
-void before_caching_classname() {
-  bar((stream_out)); // expected-error{{use of undeclared identifier 'stream_out'; did you mean 'stream_count'?}}
-}
-stream_out out; // expected-error{{unknown type name 'stream_out'; did you mean 'StreamOut'?}}
-void after_caching_classname() {
-  bar((stream_out)); // expected-error{{use of undeclared identifier 'stream_out'; did you mean 'stream_count'?}}
-}
-}
-
-// Test the typo-correction callback in Sema::DiagnoseInvalidRedeclaration.
-struct BaseDecl {
-  void add_in(int i);
-};
-struct TestRedecl : public BaseDecl {
-  void add_it(int i); // expected-note{{'add_it' declared here}}
-};
-void TestRedecl::add_in(int i) {} // expected-error{{out-of-line definition of 'add_in' does not match any declaration in 'TestRedecl'; did you mean 'add_it'?}}
-
-// Test the improved typo correction for the Parser::ParseCastExpr =>
-// Sema::ActOnIdExpression => Sema::DiagnoseEmptyLookup call path.
-class SomeNetMessage; // expected-note 2{{'SomeNetMessage'}}
-class Message {};
-void foo(Message&);
-void foo(SomeNetMessage&);
-void doit(void *data) {
-  Message somenetmsg; // expected-note{{'somenetmsg' declared here}}
-  foo(somenetmessage); // expected-error{{use of undeclared identifier 'somenetmessage'; did you mean 'somenetmsg'?}}
-  foo((somenetmessage)data); // expected-error{{unknown type name 'somenetmessage'; did you mean 'SomeNetMessage'?}} expected-error{{incomplete type}}
-}
-
-// Test the typo-correction callback in BuildRecoveryCallExpr.
-// Solves the main issue in PR 9320 of suggesting corrections that take the
-// wrong number of arguments.
-void revoke(const char*); // expected-note 2{{'revoke' declared here}}
-void Test() {
-  Invoke(); // expected-error{{use of undeclared identifier 'Invoke'}}
-  Invoke("foo"); // expected-error{{use of undeclared identifier 'Invoke'; did you mean 'revoke'?}}
-  Invoke("foo", "bar"); // expected-error{{use of undeclared identifier 'Invoke'}}
-}
-void Test2(void (*invoke)(const char *, int)) { // expected-note{{'invoke' declared here}}
-  Invoke(); // expected-error{{use of undeclared identifier 'Invoke'}}
-  Invoke("foo"); // expected-error{{use of undeclared identifier 'Invoke'; did you mean 'revoke'?}}
-  Invoke("foo", 7); // expected-error{{use of undeclared identifier 'Invoke'; did you mean 'invoke'?}}
-  Invoke("foo", 7, 22); // expected-error{{use of undeclared identifier 'Invoke'}}
-}
-
-void provoke(const char *x, bool y=false) {} // expected-note 2{{'provoke' declared here}}
-void Test3() {
-  Provoke(); // expected-error{{use of undeclared identifier 'Provoke'}}
-  Provoke("foo"); // expected-error{{use of undeclared identifier 'Provoke'; did you mean 'provoke'?}}
-  Provoke("foo", true); // expected-error{{use of undeclared identifier 'Provoke'; did you mean 'provoke'?}}
-  Provoke("foo", 7, 22); // expected-error{{use of undeclared identifier 'Provoke'}}
-}
-
-// PR 11737 - Don't try to typo-correct the implicit 'begin' and 'end' in a
-// C++11 for-range statement.
-struct R {};
-bool begun(R);
-void RangeTest() {
-  for (auto b : R()) {} // expected-error {{invalid range expression of type 'R'}}
-}
-
-// PR 12019 - Avoid infinite mutual recursion in DiagnoseInvalidRedeclaration
-// by not trying to typo-correct a method redeclaration to declarations not
-// in the current record.
-class Parent {
- void set_types(int index, int value);
- void add_types(int value);
-};
-class Child: public Parent {};
-void Child::add_types(int value) {} // expected-error{{out-of-line definition of 'add_types' does not match any declaration in 'Child'}}
-
-// Fix the callback based filtering of typo corrections within
-// Sema::ActOnIdExpression by Parser::ParseCastExpression to allow type names as
-// potential corrections for template arguments.
-namespace clash {
-class ConstructExpr {}; // expected-note 2{{'clash::ConstructExpr' declared here}}
-}
-class ClashTool {
-  bool HaveConstructExpr();
-  template <class T> T* getExprAs();
-
-  void test() {
-    ConstructExpr *expr = // expected-error{{unknown type name 'ConstructExpr'; did you mean 'clash::ConstructExpr'?}}
-        getExprAs<ConstructExpr>(); // expected-error{{unknown type name 'ConstructExpr'; did you mean 'clash::ConstructExpr'?}}
-  }
-};
-
-namespace test1 {
-  struct S {
-    struct Foobar *f;  // expected-note{{'Foobar' declared here}}
-  };
-  test1::FooBar *b;  // expected-error{{no type named 'FooBar' in namespace 'test1'; did you mean 'Foobar'?}}
-}
-
-namespace ImplicitInt {
-  void f(int, unsinged); // expected-error{{did you mean 'unsigned'}}
-  struct S {
-    unsinged : 4; // expected-error{{did you mean 'unsigned'}}
-  };
-}
-
-namespace PR12951 {
-// If there are two corrections that have the same identifier and edit distance
-// and only differ by their namespaces, don't suggest either as a correction
-// since both are equally likely corrections.
-namespace foobar { struct Thing {}; }
-namespace bazquux { struct Thing {}; }
-void f() { Thing t; } // expected-error{{unknown type name 'Thing'}}
-}
-
-namespace PR13051 {
-  template<typename T> struct S {
-    template<typename U> void f();
-    operator bool() const;
-  };
-
-  void f() {
-    f(&S<int>::tempalte f<int>); // expected-error{{did you mean 'template'?}}
-    f(&S<int>::opeartor bool); // expected-error{{did you mean 'operator'?}}
-    f(&S<int>::foo); // expected-error-re{{no member named 'foo' in 'PR13051::S<int>'$}}
-  }
-}
-
-inf f(doulbe); // expected-error{{'int'}} expected-error{{'double'}}
-
-namespace PR6325 {
-class foo { }; // expected-note{{'foo' declared here}}
-// Note that for this example (pulled from the PR), if keywords are not excluded
-// as correction candidates then no suggestion would be given; correcting
-// 'boo' to 'bool' is the same edit distance as correcting 'boo' to 'foo'.
-class bar : boo { }; // expected-error{{unknown class name 'boo'; did you mean 'foo'?}}
-}
-
-namespace bogus_keyword_suggestion {
-void test() {
-   status = "OK"; // expected-error-re{{use of undeclared identifier 'status'$}}
-   return status; // expected-error-re{{use of undeclared identifier 'status'$}}
- }
-}
-
-namespace PR13387 {
-struct A {
-  void CreateFoo(float, float); // expected-note {{'CreateFoo' declared here}}
-  void CreateBar(float, float);
-};
-struct B : A {
-  using A::CreateFoo;
-  void CreateFoo(int, int);
-};
-void f(B &x) {
-  x.Createfoo(0,0); // expected-error {{no member named 'Createfoo' in 'PR13387::B'; did you mean 'CreateFoo'?}}
-}
-}
-
-struct DataStruct {void foo();};
-struct T {
- DataStruct data_struct;
- void f();
-};
-// should be void T::f();
-void f() {
- data_struct->foo(); // expected-error-re{{use of undeclared identifier 'data_struct'$}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unary-real-imag.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unary-real-imag.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unary-real-imag.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A {};
-int i = __real__ A(); // expected-error {{invalid type 'A' to __real operator}}
-int j = __imag__ A(); // expected-error {{invalid type 'A' to __imag operator}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/undefined-inline.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/undefined-inline.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/undefined-inline.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR14993
-
-namespace test1 {
-  inline void f();  // expected-warning{{inline function 'test1::f' is not defined}}
-  void test() { f(); }  // expected-note{{used here}}
-}
-
-namespace test2 {
-  inline int f();
-  void test() { (void)sizeof(f()); }
-}
-
-namespace test3 {
-  void f();  // expected-warning{{inline function 'test3::f' is not defined}}
-  inline void f();
-  void test() { f(); }  // expected-note{{used here}}
-}
-
-namespace test4 {
-  inline void error_on_zero(int);    // expected-warning{{inline function 'test4::error_on_zero' is not defined}}
-  inline void error_on_zero(char*) {}
-  void test() { error_on_zero(0); }  // expected-note{{used here}}
-}
-
-namespace test5 {
-  struct X { void f(); };
-  void test(X &x) { x.f(); }
-}
-
-namespace test6 {
-  struct X { inline void f(); };  // expected-warning{{inline function 'test6::X::f' is not defined}}
-  void test(X &x) { x.f(); }  // expected-note{{used here}}
-}
-
-namespace test7 {
-  void f();  // expected-warning{{inline function 'test7::f' is not defined}}
-  void test() { f(); } // no used-here note.
-  inline void f();
-}
-
-namespace test8 {
-  inline void foo() __attribute__((gnu_inline));
-  void test() { foo(); }
-}
-
-namespace test9 {
-  void foo();
-  void test() { foo(); }
-  inline void foo() __attribute__((gnu_inline));
-}
-
-namespace test10 {
-  inline void foo();
-  void test() { foo(); }
-  inline void foo() __attribute__((gnu_inline));
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/undefined-internal.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/undefined-internal.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/undefined-internal.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,332 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Make sure we don't produce invalid IR.
-// RUN: %clang_cc1 -emit-llvm-only %s
-
-namespace test1 {
-  static void foo(); // expected-warning {{function 'test1::foo' has internal linkage but is not defined}}
-  template <class T> static void bar(); // expected-warning {{function 'test1::bar<int>' has internal linkage but is not defined}}
-
-  void test() {
-    foo(); // expected-note {{used here}}
-    bar<int>(); // expected-note {{used here}}
-  }
-}
-
-namespace test2 {
-  namespace {
-    void foo(); // expected-warning {{function 'test2::<anonymous namespace>::foo' has internal linkage but is not defined}}
-    extern int var; // expected-warning {{variable 'test2::<anonymous namespace>::var' has internal linkage but is not defined}}
-    template <class T> void bar(); // expected-warning {{function 'test2::<anonymous namespace>::bar<int>' has internal linkage but is not defined}}
-  }
-  void test() {
-    foo(); // expected-note {{used here}}
-    var = 0; // expected-note {{used here}}
-    bar<int>(); // expected-note {{used here}}
-  }
-}
-
-namespace test3 {
-  namespace {
-    void foo();
-    extern int var;
-    template <class T> void bar();
-  }
-
-  void test() {
-    foo();
-    var = 0;
-    bar<int>();
-  }
-
-  namespace {
-    void foo() {}
-    int var = 0;
-    template <class T> void bar() {}
-  }
-}
-
-namespace test4 {
-  namespace {
-    struct A {
-      A(); // expected-warning {{function 'test4::<anonymous namespace>::A::A' has internal linkage but is not defined}}
-      ~A();// expected-warning {{function 'test4::<anonymous namespace>::A::~A' has internal linkage but is not defined}}
-      virtual void foo(); // expected-warning {{function 'test4::<anonymous namespace>::A::foo' has internal linkage but is not defined}}
-      virtual void bar() = 0;
-      virtual void baz(); // expected-warning {{function 'test4::<anonymous namespace>::A::baz' has internal linkage but is not defined}}
-    };
-  }
-
-  void test(A &a) {
-    a.foo(); // expected-note {{used here}}
-    a.bar();
-    a.baz(); // expected-note {{used here}}
-  }
-
-  struct Test : A {
-    Test() {} // expected-note 2 {{used here}}
-  };
-}
-
-// rdar://problem/9014651
-namespace test5 {
-  namespace {
-    struct A {};
-  }
-
-  template <class N> struct B {
-    static int var; // expected-warning {{variable 'test5::B<test5::<anonymous>::A>::var' has internal linkage but is not defined}}
-    static void foo(); // expected-warning {{function 'test5::B<test5::<anonymous>::A>::foo' has internal linkage but is not defined}}
-  };
-
-  void test() {
-    B<A>::var = 0; // expected-note {{used here}}
-    B<A>::foo(); // expected-note {{used here}}
-  }
-}
-
-namespace test6 {
-  template <class T> struct A {
-    static const int zero = 0;
-    static const int one = 1;
-    static const int two = 2;
-
-    int value;
-
-    A() : value(zero) {
-      value = one;
-    }
-  };
-
-  namespace { struct Internal; }
-
-  void test() {
-    A<Internal> a;
-    a.value = A<Internal>::two;
-  }
-}
-
-// We support (as an extension) private, undefined copy constructors when
-// a temporary is bound to a reference even in C++98. Similarly, we shouldn't
-// warn about this copy constructor being used without a definition.
-namespace PR9323 {
-  namespace {
-    struct Uncopyable {
-      Uncopyable() {}
-    private:
-      Uncopyable(const Uncopyable&); // expected-note {{declared private here}}
-    };
-  }
-  void f(const Uncopyable&) {}
-  void test() {
-    f(Uncopyable()); // expected-warning {{C++98 requires an accessible copy constructor}}
-  };
-}
-
-
-namespace std { class type_info; };
-namespace cxx11_odr_rules {
-  // Note: the way this test is written isn't really ideal, but there really
-  // isn't any other way to check that the odr-used logic for constants
-  // is working without working implicit capture in lambda-expressions.
-  // (The more accurate used-but-not-defined warning is the only other visible
-  // effect of accurate odr-used computation.)
-  //
-  // Note that the warning in question can trigger in cases some people would
-  // consider false positives; hopefully that happens rarely in practice.
-  //
-  // FIXME: Suppressing this test while I figure out how to fix a bug in the
-  // odr-use marking code.
-
-  namespace {
-    struct A {
-      static const int unused = 10;
-      static const int used1 = 20; // xpected-warning {{internal linkage}}
-      static const int used2 = 20; // xpected-warning {{internal linkage}}
-      virtual ~A() {}
-    };
-  }
-
-  void a(int,int);
-  A& p(const int&) { static A a; return a; }
-
-  // Check handling of default arguments
-  void b(int = A::unused);
-
-  void tests() {
-    // Basic test
-    a(A::unused, A::unused);
-
-    // Check that nesting an unevaluated or constant-evaluated context does
-    // the right thing.
-    a(A::unused, sizeof(int[10]));
-
-    // Check that the checks work with unevaluated contexts
-    (void)sizeof(p(A::used1));
-    (void)typeid(p(A::used1)); // xpected-note {{used here}}
-
-    // Misc other testing
-    a(A::unused, 1 ? A::used2 : A::used2); // xpected-note {{used here}}
-    b();
-  }
-}
-
-
-namespace OverloadUse {
-  namespace {
-    void f();
-    void f(int); // expected-warning {{function 'OverloadUse::<anonymous namespace>::f' has internal linkage but is not defined}}
-  }
-  template<void x()> void t(int*) { x(); }
-  template<void x(int)> void t(long*) { x(10); } // expected-note {{used here}}
-  void g() { long a; t<f>(&a); }
-}
-
-namespace test7 {
-  typedef struct {
-    void bar();
-    void foo() {
-      bar();
-    }
-  } A;
-}
-
-namespace test8 {
-  typedef struct {
-    void bar(); // expected-warning {{function 'test8::<anonymous struct>::bar' has internal linkage but is not defined}}
-    void foo() {
-      bar(); // expected-note {{used here}}
-    }
-  } *A;
-}
-
-namespace test9 {
-  namespace {
-    struct X {
-      virtual void notused() = 0;
-      virtual void used() = 0; // expected-warning {{function 'test9::<anonymous namespace>::X::used' has internal linkage but is not defined}}
-    };
-  }
-  void test(X &x) {
-    x.notused();
-    x.X::used(); // expected-note {{used here}}
-  }
-}
-
-namespace test10 {
-  namespace {
-    struct X {
-      virtual void notused() = 0;
-      virtual void used() = 0; // expected-warning {{function 'test10::<anonymous namespace>::X::used' has internal linkage but is not defined}}
-
-      void test() {
-        notused();
-        (void)&X::notused;
-        (this->*&X::notused)();
-        X::used();  // expected-note {{used here}}
-      }
-    };
-    struct Y : X {
-      using X::notused;
-    };
-  }
-}
-
-namespace test11 {
-  namespace {
-    struct A {
-      virtual bool operator()() const = 0;
-      virtual void operator!() const = 0;
-      virtual bool operator+(const A&) const = 0;
-      virtual int operator[](int) const = 0;
-      virtual const A* operator->() const = 0;
-      int member;
-    };
-
-    struct B {
-      bool operator()() const;  // expected-warning {{function 'test11::<anonymous namespace>::B::operator()' has internal linkage but is not defined}}
-      void operator!() const;  // expected-warning {{function 'test11::<anonymous namespace>::B::operator!' has internal linkage but is not defined}}
-      bool operator+(const B&) const;  // expected-warning {{function 'test11::<anonymous namespace>::B::operator+' has internal linkage but is not defined}}
-      int operator[](int) const;  // expected-warning {{function 'test11::<anonymous namespace>::B::operator[]' has internal linkage but is not defined}}
-      const B* operator->() const;  // expected-warning {{function 'test11::<anonymous namespace>::B::operator->' has internal linkage but is not defined}}
-      int member;
-    };
-  }
-
-  void test1(A &a1, A &a2) {
-    a1();
-    !a1;
-    a1 + a2;
-    a1[0];
-    (void)a1->member;
-  }
-
-  void test2(B &b1, B &b2) {
-    b1();  // expected-note {{used here}}
-    !b1;  // expected-note {{used here}}
-    b1 + b2;  // expected-note {{used here}}
-    b1[0];  // expected-note {{used here}}
-    (void)b1->member;  // expected-note {{used here}}
-  }
-}
-
-namespace test12 {
-  class T1 {}; class T2 {}; class T3 {}; class T4 {}; class T5 {}; class T6 {};
-  class T7 {};
-
-  namespace {
-    struct Cls {
-      virtual void f(int) = 0;
-      virtual void f(int, double) = 0;
-      void g(int);  // expected-warning {{function 'test12::<anonymous namespace>::Cls::g' has internal linkage but is not defined}}
-      void g(int, double);
-      virtual operator T1() = 0;
-      virtual operator T2() = 0;
-      virtual operator T3&() = 0;
-      operator T4();  // expected-warning {{function 'test12::<anonymous namespace>::Cls::operator T4' has internal linkage but is not defined}}
-      operator T5();  // expected-warning {{function 'test12::<anonymous namespace>::Cls::operator T5' has internal linkage but is not defined}}
-      operator T6&();  // expected-warning {{function 'test12::<anonymous namespace>::Cls::operator class test12::T6 &' has internal linkage but is not defined}}
-    };
-
-    struct Cls2 {
-      Cls2(T7);  // expected-warning {{function 'test12::<anonymous namespace>::Cls2::Cls2' has internal linkage but is not defined}}
-    };
-  }
-
-  void test(Cls &c) {
-    c.f(7);
-    c.g(7);  // expected-note {{used here}}
-    (void)static_cast<T1>(c);
-    T2 t2 = c;
-    T3 &t3 = c;
-    (void)static_cast<T4>(c); // expected-note {{used here}}
-    T5 t5 = c;  // expected-note {{used here}}
-    T6 &t6 = c;  // expected-note {{used here}}
-
-    Cls2 obj1((T7()));  // expected-note {{used here}}
-  }
-}
-
-namespace test13 {
-  namespace {
-    struct X {
-      virtual void f() { }
-    };
-
-    struct Y : public X {
-      virtual void f() = 0;
-
-      virtual void g() {
-        X::f();
-      }
-    };
-  }
-}
-
-namespace test14 {
-  extern "C" const int foo;
-
-  int f() {
-    return foo;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/underlying_type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/underlying_type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/underlying_type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -ffreestanding -fsyntax-only -verify -std=c++11 %s
-
-#include "limits.h"
-
-template<typename T, typename U>
-struct is_same_type {
-  static const bool value = false;
-};
-template <typename T>
-struct is_same_type<T, T> {
-  static const bool value = true;
-};
-
-__underlying_type(int) a; // expected-error {{only enumeration types}}
-__underlying_type(struct b) c; // expected-error {{only enumeration types}}
-
-enum class f : char;
-static_assert(is_same_type<char, __underlying_type(f)>::value,
-              "f has the wrong underlying type");
-
-enum g {d = INT_MIN };
-static_assert(is_same_type<int, __underlying_type(g)>::value,
-              "g has the wrong underlying type");
-
-__underlying_type(f) h;
-static_assert(is_same_type<char, decltype(h)>::value,
-              "h has the wrong type");
-
-template <typename T>
-struct underlying_type {
-  typedef __underlying_type(T) type; // expected-error {{only enumeration types}}
-};
-
-static_assert(is_same_type<underlying_type<f>::type, char>::value,
-              "f has the wrong underlying type in the template");
-
-underlying_type<int>::type e; // expected-note {{requested here}}
-
-using uint = unsigned;
-enum class foo : uint { bar };
- 
-static_assert(is_same_type<underlying_type<foo>::type, unsigned>::value,
-              "foo has the wrong underlying type");

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/uninit-variables-conditional.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/uninit-variables-conditional.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/uninit-variables-conditional.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wconditional-uninitialized -fsyntax-only %s -verify
-
-class Foo {
-public:
-  Foo();
-  ~Foo();
-  operator bool();
-};
-
-int bar();
-int baz();
-int init(double *);
-
-// This case flags a false positive under -Wconditional-uninitialized because
-// the destructor in Foo fouls about the minor bit of path-sensitivity in
-// -Wuninitialized.
-double test() {
-  double x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  if (bar() || baz() || Foo() || init(&x))
-    return 1.0;
-
-  return x; // expected-warning {{variable 'x' may be uninitialized when used here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/uninit-variables.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/uninit-variables.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/uninit-variables.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,149 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -fsyntax-only -fcxx-exceptions %s -verify
-
-// Stub out types for 'typeid' to work.
-namespace std { class type_info {}; }
-
-int test1_aux(int &x);
-int test1() {
-  int x;
-  test1_aux(x);
-  return x; // no-warning
-}
-
-int test2_aux() {
-  int x;
-  int &y = x;
-  return x; // no-warning
-}
-
-// Don't warn on unevaluated contexts.
-void unevaluated_tests() {
-  int x;
-  (void)sizeof(x);
-  (void)typeid(x);
-}
-
-// Warn for glvalue arguments to typeid whose type is polymorphic.
-struct A { virtual ~A() {} };
-void polymorphic_test() {
-  A *a; // expected-note{{initialize the variable 'a' to silence this warning}}
-  (void)typeid(*a); // expected-warning{{variable 'a' is uninitialized when used here}}
-}
-
-// Handle cases where the CFG may constant fold some branches, thus
-// mitigating the need for some path-sensitivity in the analysis.
-unsigned test3_aux();
-unsigned test3() {
-  unsigned x = 0;
-  const bool flag = true;
-  if (flag && (x = test3_aux()) == 0) {
-    return x;
-  }
-  return x;
-}
-unsigned test3_b() {
-  unsigned x ;
-  const bool flag = true;
-  if (flag && (x = test3_aux()) == 0) {
-    x = 1;
-  }
-  return x; // no-warning
-}
-unsigned test3_c() {
-  unsigned x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  const bool flag = false;
-  if (flag && (x = test3_aux()) == 0) {
-    x = 1;
-  }
-  return x; // expected-warning{{variable 'x' is uninitialized when used here}}
-}
-
-enum test4_A {
- test4_A_a, test_4_A_b
-};
-test4_A test4() {
- test4_A a; // expected-note{{variable 'a' is declared here}}
- return a; // expected-warning{{variable 'a' is uninitialized when used here}}
-}
-
-// Test variables getting invalidated by function calls with reference arguments
-// *AND* there are multiple invalidated arguments.
-void test5_aux(int &, int &);
-
-int test5() {
-  int x, y;
-  test5_aux(x, y);
-  return x + y; // no-warning
-}
-
-// This test previously crashed Sema.
-class Rdar9188004A {
-public: 
-  virtual ~Rdar9188004A();
-};
-
-template< typename T > class Rdar9188004B : public Rdar9188004A {
-virtual double *foo(Rdar9188004B *next) const  {
-    double *values = next->foo(0);
-    try {
-    }
-    catch(double e) {
-      values[0] = e;
-    }
-    return 0;
-  }
-};
-class Rdar9188004C : public Rdar9188004B<Rdar9188004A> {
-  virtual void bar(void) const;
-};
-void Rdar9188004C::bar(void) const {}
-
-// Don't warn about uninitialized variables in unreachable code.
-void PR9625() {
-  if (false) {
-    int x;
-    (void)static_cast<float>(x); // no-warning
-  }
-}
-
-// Don't warn about variables declared in "catch"
-void RDar9251392_bar(const char *msg);
-
-void RDar9251392() {
-  try {
-    throw "hi";
-  }
-  catch (const char* msg) {
-    RDar9251392_bar(msg); // no-warning
-  }
-}
-
-// Test handling of "no-op" casts.
-void test_noop_cast()
-{
-    int x = 1;
-    int y = (int&)x; // no-warning
-}
-
-void test_noop_cast2() {
-    int x; // expected-note {{initialize the variable 'x' to silence this warning}}
-    int y = (int&)x; // expected-warning {{uninitialized when used here}}
-}
-
-// Test handling of bit casts.
-void test_bitcasts() {
-  int x = 1;
-  int y = (float &)x; // no-warning
-}
-
-void test_bitcasts_2() {
-  int x;  // expected-note {{initialize the variable 'x' to silence this warning}}
-  int y = (float &)x; // expected-warning {{uninitialized when used here}}
-}
-
-void consume_const_ref(const int &n);
-int test_const_ref() {
-  int n; // expected-note {{variable}}
-  consume_const_ref(n);
-  return n; // expected-warning {{uninitialized when used here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/uninitialized.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/uninitialized.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/uninitialized.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,525 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wall -Wuninitialized -Wno-unused-value -std=c++11 -verify %s
-
-int foo(int x);
-int bar(int* x);
-int boo(int& x);
-int far(const int& x);
-
-// Test self-references within initializers which are guaranteed to be
-// uninitialized.
-int a = a; // no-warning: used to signal intended lack of initialization.
-int b = b + 1; // expected-warning {{variable 'b' is uninitialized when used within its own initialization}}
-int c = (c + c); // expected-warning 2 {{variable 'c' is uninitialized when used within its own initialization}}
-int e = static_cast<long>(e) + 1; // expected-warning {{variable 'e' is uninitialized when used within its own initialization}}
-int f = foo(f); // expected-warning {{variable 'f' is uninitialized when used within its own initialization}}
-
-// Thes don't warn as they don't require the value.
-int g = sizeof(g);
-void* ptr = &ptr;
-int h = bar(&h);
-int i = boo(i);
-int j = far(j);
-int k = __alignof__(k);
-
-int l = k ? l : l;  // expected-warning 2{{variable 'l' is uninitialized when used within its own initialization}}
-int m = 1 + (k ? m : m);  // expected-warning 2{{variable 'm' is uninitialized when used within its own initialization}}
-int n = -n;  // expected-warning {{variable 'n' is uninitialized when used within its own initialization}}
-
-void test_stuff () {
-  int a = a; // no-warning: used to signal intended lack of initialization.
-  int b = b + 1; // expected-warning {{variable 'b' is uninitialized when used within its own initialization}}
-  int c = (c + c); // expected-warning {{variable 'c' is uninitialized when used within its own initialization}}
-  int d = ({ d + d ;}); // expected-warning {{variable 'd' is uninitialized when used within its own initialization}}
-  int e = static_cast<long>(e) + 1; // expected-warning {{variable 'e' is uninitialized when used within its own initialization}}
-  int f = foo(f); // expected-warning {{variable 'f' is uninitialized when used within its own initialization}}
-
-  // Thes don't warn as they don't require the value.
-  int g = sizeof(g);
-  void* ptr = &ptr;
-  int h = bar(&h);
-  int i = boo(i);
-  int j = far(j);
-  int k = __alignof__(k);
-
-  int l = k ? l : l;  // expected-warning {{variable 'l' is uninitialized when used within its own initialization}}
-  int m = 1 + (k ? m : m);  // expected-warning {{'m' is uninitialized when used within its own initialization}}
-  int n = -n;  // expected-warning {{variable 'n' is uninitialized when used within its own initialization}}
-
-  for (;;) {
-    int a = a; // no-warning: used to signal intended lack of initialization.
-    int b = b + 1; // expected-warning {{variable 'b' is uninitialized when used within its own initialization}}
-    int c = (c + c); // expected-warning {{variable 'c' is uninitialized when used within its own initialization}}
-    int d = ({ d + d ;}); // expected-warning {{variable 'd' is uninitialized when used within its own initialization}}
-    int e = static_cast<long>(e) + 1; // expected-warning {{variable 'e' is uninitialized when used within its own initialization}}
-    int f = foo(f); // expected-warning {{variable 'f' is uninitialized when used within its own initialization}}
-
-    // Thes don't warn as they don't require the value.
-    int g = sizeof(g);
-    void* ptr = &ptr;
-    int h = bar(&h);
-    int i = boo(i);
-    int j = far(j);
-    int k = __alignof__(k);
-
-    int l = k ? l : l;  // expected-warning {{variable 'l' is uninitialized when used within its own initialization}}
-    int m = 1 + (k ? m : m);  // expected-warning {{'m' is uninitialized when used within its own initialization}}
-    int n = -n;  // expected-warning {{variable 'n' is uninitialized when used within its own initialization}}
-  }
-}
-
-// Test self-references with record types.
-class A {
-  // Non-POD class.
-  public:
-    enum count { ONE, TWO, THREE };
-    int num;
-    static int count;
-    int get() const { return num; }
-    int get2() { return num; }
-    void set(int x) { num = x; }
-    static int zero() { return 0; }
-
-    A() {}
-    A(A const &a) {}
-    A(int x) {}
-    A(int *x) {}
-    A(A *a) {}
-    ~A();
-};
-
-A getA() { return A(); }
-A getA(int x) { return A(); }
-A getA(A* a) { return A(); }
-A getA(A a) { return A(); }
-
-void setupA(bool x) {
-  A a1;
-  a1.set(a1.get());
-  A a2(a1.get());
-  A a3(a1);
-  A a4(&a4);
-  A a5(a5.zero());
-  A a6(a6.ONE);
-  A a7 = getA();
-  A a8 = getA(a8.TWO);
-  A a9 = getA(&a9);
-  A a10(a10.count);
-
-  A a11(a11);  // expected-warning {{variable 'a11' is uninitialized when used within its own initialization}}
-  A a12(a12.get());  // expected-warning {{variable 'a12' is uninitialized when used within its own initialization}}
-  A a13(a13.num);  // expected-warning {{variable 'a13' is uninitialized when used within its own initialization}}
-  A a14 = A(a14);  // expected-warning {{variable 'a14' is uninitialized when used within its own initialization}}
-  A a15 = getA(a15.num);  // expected-warning {{variable 'a15' is uninitialized when used within its own initialization}}
-  A a16(&a16.num);  // expected-warning {{variable 'a16' is uninitialized when used within its own initialization}}
-  A a17(a17.get2());  // expected-warning {{variable 'a17' is uninitialized when used within its own initialization}}
-  A a18 = x ? a18 : a17;  // expected-warning {{variable 'a18' is uninitialized when used within its own initialization}}
-  A a19 = getA(x ? a19 : a17);  // expected-warning {{variable 'a19' is uninitialized when used within its own initialization}}
-  A a20{a20};  // expected-warning {{variable 'a20' is uninitialized when used within its own initialization}}
-  A a21 = {a21};  // expected-warning {{variable 'a21' is uninitialized when used within its own initialization}}
-
-  // FIXME: Make the local uninitialized warning consistant with the global
-  // uninitialized checking.
-  A *a22 = new A(a22->count);  // expected-warning {{variable 'a22' is uninitialized when used within its own initialization}}
-  A *a23 = new A(a23->ONE);  // expected-warning {{variable 'a23' is uninitialized when used within its own initialization}}
-  A *a24 = new A(a24->TWO);  // expected-warning {{variable 'a24' is uninitialized when used within its own initialization}}
-  A *a25 = new A(a25->zero());  // expected-warning {{variable 'a25' is uninitialized when used within its own initialization}}
-
-  A *a26 = new A(a26->get());    // expected-warning {{variable 'a26' is uninitialized when used within its own initialization}}
-  A *a27 = new A(a27->get2());  // expected-warning {{variable 'a27' is uninitialized when used within its own initialization}}
-  A *a28 = new A(a28->num);  // expected-warning {{variable 'a28' is uninitialized when used within its own initialization}}
-}
-
-bool x;
-
-A a1;
-A a2(a1.get());
-A a3(a1);
-A a4(&a4);
-A a5(a5.zero());
-A a6(a6.ONE);
-A a7 = getA();
-A a8 = getA(a8.TWO);
-A a9 = getA(&a9);
-A a10(a10.count);
-
-A a11(a11);  // expected-warning {{variable 'a11' is uninitialized when used within its own initialization}}
-A a12(a12.get());  // expected-warning {{variable 'a12' is uninitialized when used within its own initialization}}
-A a13(a13.num);  // expected-warning {{variable 'a13' is uninitialized when used within its own initialization}}
-A a14 = A(a14);  // expected-warning {{variable 'a14' is uninitialized when used within its own initialization}}
-A a15 = getA(a15.num);  // expected-warning {{variable 'a15' is uninitialized when used within its own initialization}}
-A a16(&a16.num);  // expected-warning {{variable 'a16' is uninitialized when used within its own initialization}}
-A a17(a17.get2());  // expected-warning {{variable 'a17' is uninitialized when used within its own initialization}}
-A a18 = x ? a18 : a17;  // expected-warning {{variable 'a18' is uninitialized when used within its own initialization}}
-A a19 = getA(x ? a19 : a17);  // expected-warning {{variable 'a19' is uninitialized when used within its own initialization}}
-A a20{a20};  // expected-warning {{variable 'a20' is uninitialized when used within its own initialization}}
-A a21 = {a21};  // expected-warning {{variable 'a21' is uninitialized when used within its own initialization}}
-
-A *a22 = new A(a22->count);
-A *a23 = new A(a23->ONE);
-A *a24 = new A(a24->TWO);
-A *a25 = new A(a25->zero());
-
-A *a26 = new A(a26->get());    // expected-warning {{variable 'a26' is uninitialized when used within its own initialization}}
-A *a27 = new A(a27->get2());  // expected-warning {{variable 'a27' is uninitialized when used within its own initialization}}
-A *a28 = new A(a28->num);  // expected-warning {{variable 'a28' is uninitialized when used within its own initialization}}
-
-struct B {
-  // POD struct.
-  int x;
-  int *y;
-};
-
-B getB() { return B(); };
-B getB(int x) { return B(); };
-B getB(int *x) { return B(); };
-B getB(B *b) { return B(); };
-
-B* getPtrB() { return 0; };
-B* getPtrB(int x) { return 0; };
-B* getPtrB(int *x) { return 0; };
-B* getPtrB(B **b) { return 0; };
-
-void setupB() {
-  B b1;
-  B b2(b1);
-  B b3 = { 5, &b3.x };
-  B b4 = getB();
-  B b5 = getB(&b5);
-  B b6 = getB(&b6.x);
-
-  // Silence unused warning
-  (void) b2;
-  (void) b4;
-
-  B b7(b7);  // expected-warning {{variable 'b7' is uninitialized when used within its own initialization}}
-  B b8 = getB(b8.x);  // expected-warning {{variable 'b8' is uninitialized when used within its own initialization}}
-  B b9 = getB(b9.y);  // expected-warning {{variable 'b9' is uninitialized when used within its own initialization}}
-  B b10 = getB(-b10.x);  // expected-warning {{variable 'b10' is uninitialized when used within its own initialization}}
-
-  B* b11 = 0;
-  B* b12(b11);
-  B* b13 = getPtrB();
-  B* b14 = getPtrB(&b14);
-
-  (void) b12;
-  (void) b13;
-
-  B* b15 = getPtrB(b15->x);  // expected-warning {{variable 'b15' is uninitialized when used within its own initialization}}
-  B* b16 = getPtrB(b16->y);  // expected-warning {{variable 'b16' is uninitialized when used within its own initialization}}
-
-  B b17 = { b17.x = 5, b17.y = 0 };
-  B b18 = { b18.x + 1, b18.y };  // expected-warning 2{{variable 'b18' is uninitialized when used within its own initialization}}
-}
-
-B b1;
-B b2(b1);
-B b3 = { 5, &b3.x };
-B b4 = getB();
-B b5 = getB(&b5);
-B b6 = getB(&b6.x);
-
-B b7(b7);  // expected-warning {{variable 'b7' is uninitialized when used within its own initialization}}
-B b8 = getB(b8.x);  // expected-warning {{variable 'b8' is uninitialized when used within its own initialization}}
-B b9 = getB(b9.y);  // expected-warning {{variable 'b9' is uninitialized when used within its own initialization}}
-B b10 = getB(-b10.x);  // expected-warning {{variable 'b10' is uninitialized when used within its own initialization}}
-
-B* b11 = 0;
-B* b12(b11);
-B* b13 = getPtrB();
-B* b14 = getPtrB(&b14);
-
-B* b15 = getPtrB(b15->x);  // expected-warning {{variable 'b15' is uninitialized when used within its own initialization}}
-B* b16 = getPtrB(b16->y);  // expected-warning {{variable 'b16' is uninitialized when used within its own initialization}}
-
-B b17 = { b17.x = 5, b17.y = 0 };
-B b18 = { b18.x + 1, b18.y };  // expected-warning 2{{variable 'b18' is uninitialized when used within its own initialization}}
-
-
-// Also test similar constructs in a field's initializer.
-struct S {
-  int x;
-  void *ptr;
-
-  S(bool (*)[1]) : x(x) {} // expected-warning {{field 'x' is uninitialized when used here}}
-  S(bool (*)[2]) : x(x + 1) {} // expected-warning {{field 'x' is uninitialized when used here}}
-  S(bool (*)[3]) : x(x + x) {} // expected-warning 2{{field 'x' is uninitialized when used here}}
-  S(bool (*)[4]) : x(static_cast<long>(x) + 1) {} // expected-warning {{field 'x' is uninitialized when used here}}
-  S(bool (*)[5]) : x(foo(x)) {} // expected-warning {{field 'x' is uninitialized when used here}}
-
-  // These don't actually require the value of x and so shouldn't warn.
-  S(char (*)[1]) : x(sizeof(x)) {} // rdar://8610363
-  S(char (*)[2]) : ptr(&ptr) {}
-  S(char (*)[3]) : x(__alignof__(x)) {}
-  S(char (*)[4]) : x(bar(&x)) {}
-  S(char (*)[5]) : x(boo(x)) {}
-  S(char (*)[6]) : x(far(x)) {}
-};
-
-struct C { char a[100], *e; } car = { .e = car.a };
-
-// <rdar://problem/10398199>
-namespace rdar10398199 {
-  class FooBase { protected: ~FooBase() {} };
-  class Foo : public FooBase {
-  public:
-    operator int&() const;
-  };
-  void stuff();
-  template <typename T> class FooImpl : public Foo {
-    T val;
-  public:
-    FooImpl(const T &x) : val(x) {}
-    ~FooImpl() { stuff(); }
-  };
-
-  template <typename T> FooImpl<T> makeFoo(const T& x) {
-    return FooImpl<T>(x);
-  }
-
-  void test() {
-    const Foo &x = makeFoo(42);
-    const int&y = makeFoo(42u);
-    (void)x;
-    (void)y;
-  };
-}
-
-// PR 12325 - this was a false uninitialized value warning due to
-// a broken CFG.
-int pr12325(int params) {
-  int x = ({
-    while (false)
-      ;
-    int _v = params;
-    if (false)
-      ;
-    _v; // no-warning
-  });
-  return x;
-}
-
-// Test lambda expressions with -Wuninitialized
-int test_lambda() {
-  auto f1 = [] (int x, int y) { int z; return x + y + z; }; // expected-warning{{variable 'z' is uninitialized when used here}} expected-note {{initialize the variable 'z' to silence this warning}}
-  return f1(1, 2);
-}
-
-namespace {
-  struct A {
-    enum { A1 };
-    static int A2() {return 5;}
-    int A3;
-    int A4() { return 5;}
-  };
-
-  struct B {
-    A a;
-  };
-
-  struct C {
-    C() {}
-    C(int x) {}
-    static A a;
-    B b;
-  };
-  A C::a = A();
-
-  // Accessing non-static members will give a warning.
-  struct D {
-    C c;
-    D(char (*)[1]) : c(c.b.a.A1) {}
-    D(char (*)[2]) : c(c.b.a.A2()) {}
-    D(char (*)[3]) : c(c.b.a.A3) {}    // expected-warning {{field 'c' is uninitialized when used here}}
-    D(char (*)[4]) : c(c.b.a.A4()) {}  // expected-warning {{field 'c' is uninitialized when used here}}
-
-    // c::a is static, so it is already initialized
-    D(char (*)[5]) : c(c.a.A1) {}
-    D(char (*)[6]) : c(c.a.A2()) {}
-    D(char (*)[7]) : c(c.a.A3) {}
-    D(char (*)[8]) : c(c.a.A4()) {}
-  };
-
-  struct E {
-    int a, b, c;
-    E(char (*)[1]) : a(a ? b : c) {}  // expected-warning {{field 'a' is uninitialized when used here}}
-    E(char (*)[2]) : a(b ? a : a) {} // expected-warning 2{{field 'a' is uninitialized when used here}}
-    E(char (*)[3]) : a(b ? (a) : c) {} // expected-warning {{field 'a' is uninitialized when used here}}
-    E(char (*)[4]) : a(b ? c : (a+c)) {} // expected-warning {{field 'a' is uninitialized when used here}}
-    E(char (*)[5]) : a(b ? c : b) {}
-
-    E(char (*)[6]) : a(a ?: a) {} // expected-warning 2{{field 'a' is uninitialized when used here}}
-    E(char (*)[7]) : a(b ?: a) {} // expected-warning {{field 'a' is uninitialized when used here}}
-    E(char (*)[8]) : a(a ?: c) {} // expected-warning {{field 'a' is uninitialized when used here}}
-    E(char (*)[9]) : a(b ?: c) {}
-
-    E(char (*)[10]) : a((a, a, b)) {}
-    E(char (*)[11]) : a((c + a, a + 1, b)) {} // expected-warning 2{{field 'a' is uninitialized when used here}}
-    E(char (*)[12]) : a((b + c, c, a)) {} // expected-warning {{field 'a' is uninitialized when used here}}
-    E(char (*)[13]) : a((a, a, a, a)) {} // expected-warning {{field 'a' is uninitialized when used here}}
-    E(char (*)[14]) : a((b, c, c)) {}
-  };
-
-  struct F {
-    int a;
-    F* f;
-    F(int) {}
-    F() {}
-  };
-
-  int F::*ptr = &F::a;
-  F* F::*f_ptr = &F::f;
-  struct G {
-    F f1, f2;
-    F *f3, *f4;
-    G(char (*)[1]) : f1(f1) {} // expected-warning {{field 'f1' is uninitialized when used here}}
-    G(char (*)[2]) : f2(f1) {}
-    G(char (*)[3]) : f2(F()) {}
-
-    G(char (*)[4]) : f1(f1.*ptr) {} // expected-warning {{field 'f1' is uninitialized when used here}}
-    G(char (*)[5]) : f2(f1.*ptr) {}
-
-    G(char (*)[6]) : f3(f3) {}  // expected-warning {{field 'f3' is uninitialized when used here}}
-    G(char (*)[7]) : f3(f3->*f_ptr) {} // expected-warning {{field 'f3' is uninitialized when used here}}
-    G(char (*)[8]) : f3(new F(f3->*ptr)) {} // expected-warning {{field 'f3' is uninitialized when used here}}
-  };
-}
-
-namespace statics {
-  static int a = a; // no-warning: used to signal intended lack of initialization.
-  static int b = b + 1; // expected-warning {{variable 'b' is uninitialized when used within its own initialization}}
-  static int c = (c + c); // expected-warning 2{{variable 'c' is uninitialized when used within its own initialization}}
-  static int e = static_cast<long>(e) + 1; // expected-warning {{variable 'e' is uninitialized when used within its own initialization}}
-  static int f = foo(f); // expected-warning {{variable 'f' is uninitialized when used within its own initialization}}
-
-  // Thes don't warn as they don't require the value.
-  static int g = sizeof(g);
-  int gg = g;  // Silence unneeded warning
-  static void* ptr = &ptr;
-  static int h = bar(&h);
-  static int i = boo(i);
-  static int j = far(j);
-  static int k = __alignof__(k);
-
-  static int l = k ? l : l;  // expected-warning 2{{variable 'l' is uninitialized when used within its own initialization}}
-  static int m = 1 + (k ? m : m);  // expected-warning 2{{variable 'm' is uninitialized when used within its own initialization}}
-  static int n = -n;  // expected-warning {{variable 'n' is uninitialized when used within its own initialization}}
-
-  void test() {
-    static int a = a; // no-warning: used to signal intended lack of initialization.
-    static int b = b + 1; // expected-warning {{static variable 'b' is suspiciously used within its own initialization}}
-    static int c = (c + c); // expected-warning 2{{static variable 'c' is suspiciously used within its own initialization}}
-    static int d = ({ d + d ;}); // expected-warning 2{{static variable 'd' is suspiciously used within its own initialization}}
-    static int e = static_cast<long>(e) + 1; // expected-warning {{static variable 'e' is suspiciously used within its own initialization}}
-    static int f = foo(f); // expected-warning {{static variable 'f' is suspiciously used within its own initialization}}
-
-    // Thes don't warn as they don't require the value.
-    static int g = sizeof(g);
-    static void* ptr = &ptr;
-    static int h = bar(&h);
-    static int i = boo(i);
-    static int j = far(j);
-    static int k = __alignof__(k);
-
-    static int l = k ? l : l;  // expected-warning 2{{static variable 'l' is suspiciously used within its own initialization}}
-    static int m = 1 + (k ? m : m);  // expected-warning 2{{static variable 'm' is suspiciously used within its own initialization}}
-    static int n = -n;  // expected-warning {{static variable 'n' is suspiciously used within its own initialization}}
-   for (;;) {
-      static int a = a; // no-warning: used to signal intended lack of initialization.
-      static int b = b + 1; // expected-warning {{static variable 'b' is suspiciously used within its own initialization}}
-      static int c = (c + c); // expected-warning 2{{static variable 'c' is suspiciously used within its own initialization}}
-      static int d = ({ d + d ;}); // expected-warning 2{{static variable 'd' is suspiciously used within its own initialization}}
-      static int e = static_cast<long>(e) + 1; // expected-warning {{static variable 'e' is suspiciously used within its own initialization}}
-      static int f = foo(f); // expected-warning {{static variable 'f' is suspiciously used within its own initialization}}
-
-      // Thes don't warn as they don't require the value.
-      static int g = sizeof(g);
-      static void* ptr = &ptr;
-      static int h = bar(&h);
-      static int i = boo(i);
-      static int j = far(j);
-      static int k = __alignof__(k);
-
-      static int l = k ? l : l;  // expected-warning 2{{static variable 'l' is suspiciously used within its own initialization}}
-      static int m = 1 + (k ? m : m); // expected-warning 2{{static variable 'm' is suspiciously used within its own initialization}}
-      static int n = -n;  // expected-warning {{static variable 'n' is suspiciously used within its own initialization}}
-    }
-  }
-}
-
-namespace in_class_initializers {
-  struct S {
-    S() : a(a + 1) {} // expected-warning{{field 'a' is uninitialized when used here}}
-    int a = 42; // Note: because a is in a member initializer list, this initialization is ignored.
-  };
-
-  struct T {
-    T() : b(a + 1) {} // No-warning.
-    int a = 42;
-    int b;
-  };
-
-  struct U {
-    U() : a(b + 1), b(a + 1) {} // FIXME: Warn here.
-    int a = 42; // Note: because a and b are in the member initializer list, these initializers are ignored.
-    int b = 1;
-  };
-}
-
-namespace references {
-  int &a = a; // expected-warning{{reference 'a' is not yet bound to a value when used within its own initialization}}
-  int &b(b); // expected-warning{{reference 'b' is not yet bound to a value when used within its own initialization}}
-  int &c = a ? b : c; // expected-warning{{reference 'c' is not yet bound to a value when used within its own initialization}}
-  int &d{d}; // expected-warning{{reference 'd' is not yet bound to a value when used within its own initialization}}
-
-  struct S {
-    S() : a(a) {} // expected-warning{{reference 'a' is not yet bound to a value when used here}}
-    int &a;
-  };
-
-  void f() {
-    int &a = a; // expected-warning{{reference 'a' is not yet bound to a value when used within its own initialization}}
-    int &b(b); // expected-warning{{reference 'b' is not yet bound to a value when used within its own initialization}}
-    int &c = a ? b : c; // expected-warning{{reference 'c' is not yet bound to a value when used within its own initialization}}
-    int &d{d}; // expected-warning{{reference 'd' is not yet bound to a value when used within its own initialization}}
-  }
-
-  struct T {
-    T() : a(b), b(a) {} // FIXME: Warn here.
-    int &a, &b;
-    int &c = c; // expected-warning{{reference 'c' is not yet bound to a value when used here}}
-  };
-
-  int x;
-  struct U {
-    U() : b(a) {} // No-warning.
-    int &a = x;
-    int &b;
-  };
-}
-
-namespace operators {
-  struct A {
-    A(bool);
-    bool operator==(A);
-  };
-
-  A makeA();
-
-  A a1 = a1 = makeA();  // expected-warning{{variable 'a1' is uninitialized when used within its own initialization}}
-  A a2 = a2 == a1;  // expected-warning{{variable 'a2' is uninitialized when used within its own initialization}}
-  A a3 = a2 == a3;  // expected-warning{{variable 'a3' is uninitialized when used within its own initialization}}
-
-  int x = x = 5;
-}
-
-namespace lambdas {
-  struct A {
-    template<typename T> A(T) {}
-    int x;
-  };
-  A a0([] { return a0.x; }); // ok
-  void f() { 
-    A a1([=] { return a1.x; }); // expected-warning{{variable 'a1' is uninitialized when used within its own initialization}}
-    A a2([&] { return a2.x; }); // ok
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-anytype-blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-anytype-blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-anytype-blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -funknown-anytype -fblocks -fsyntax-only -verify -std=c++11 %s
-
-namespace test1 {
-  __unknown_anytype (^foo)();
-  __unknown_anytype (^bar)();
-  int test() {
-    auto ret1 = (int)foo();
-    auto ret2 = bar(); // expected-error {{'bar' has unknown return type; cast the call to its declared return type}}
-    return ret1;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-anytype.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-anytype.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-anytype.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -funknown-anytype -fsyntax-only -verify %s
-
-namespace test0 {
-  extern __unknown_anytype test0;
-  extern __unknown_anytype test1();
-  extern __unknown_anytype test2(int);
-}
-
-namespace test1 {
-  extern __unknown_anytype foo;
-  int test() {
-    // TODO: it would be great if the 'cannot initialize' errors
-    // turned into something more interesting.  It's just a matter of
-    // making sure that these locations check for placeholder types
-    // properly.
-
-    int x = foo; // expected-error {{'foo' has unknown type}}
-    int y = 0 + foo; // expected-error {{'foo' has unknown type}}
-    return foo; // expected-error {{'foo' has unknown type}}
-  }
-}
-
-namespace test2 {
-  extern __unknown_anytype foo();
-  void test() {
-    foo(); // expected-error {{'foo' has unknown return type}}
-  }
-}
-
-namespace test3 {
-  extern __unknown_anytype foo;
-  void test() {
-    foo(); // expected-error {{call to unsupported expression with unknown type}}
-    ((void(void)) foo)(); // expected-error {{variable 'foo' with unknown type cannot be given a function type}}
-  }
-}
-
-// rdar://problem/9899447
-namespace test4 {
-  extern __unknown_anytype test0(...);
-  extern __unknown_anytype test1(...);
-
-  void test() {
-    void (*fn)(int) = (void(*)(int)) test0;
-    int x = (int) test1; // expected-error {{function 'test1' with unknown type must be given a function type}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-type-name.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-type-name.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unknown-type-name.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR3990
-namespace N {
-  struct Wibble {
-  };
-
-  typedef Wibble foo;
-
-  int zeppelin; // expected-note{{declared here}}
-}
-using namespace N;
-
-foo::bar x; // expected-error{{no type named 'bar' in 'N::Wibble'}}
-
-void f() {
-  foo::bar  = 4; // expected-error{{no member named 'bar' in 'N::Wibble'}}
-}
-
-int f(foo::bar); // expected-error{{no type named 'bar' in 'N::Wibble'}}
-
-int f(doulbe); // expected-error{{did you mean 'double'?}}
-
-int fun(zapotron); // expected-error{{unknown type name 'zapotron'}}
-int var(zepelin); // expected-error{{did you mean 'zeppelin'?}}
-
-template<typename T>
-struct A {
-  typedef T type;
-  
-  type f();
-
-  type g();
-
-  static int n;
-  static type m;
-  static int h(T::type, int); // expected-error{{missing 'typename'}}
-  static int h(T::type x, char); // expected-error{{missing 'typename'}}
-};
-
-template<typename T>
-A<T>::type g(T t) { return t; } // expected-error{{missing 'typename'}}
-
-template<typename T>
-A<T>::type A<T>::f() { return type(); } // expected-error{{missing 'typename'}}
-
-template<typename T>
-void f(T::type) { } // expected-error{{missing 'typename'}}
-
-template<typename T>
-void g(T::type x) { } // expected-error{{missing 'typename'}}
-
-template<typename T>
-void f(T::type, int) { } // expected-error{{missing 'typename'}}
-
-template<typename T>
-void f(T::type x, char) { } // expected-error{{missing 'typename'}}
-
-template<typename T>
-void f(int, T::type) { } // expected-error{{missing 'typename'}}
-
-template<typename T>
-void f(char, T::type x) { } // expected-error{{missing 'typename'}}
-
-template<typename T>
-void f(int, T::type, int) { } // expected-error{{missing 'typename'}}
-
-template<typename T>
-void f(int, T::type x, char) { } // expected-error{{missing 'typename'}}
-
-int *p;
-
-// FIXME: We should assume that 'undeclared' is a type, not a parameter name
-//        here, and produce an 'unknown type name' diagnostic instead.
-int f1(undeclared, int); // expected-error{{requires a type specifier}}
-
-int f2(undeclared, 0); // expected-error{{undeclared identifier}}
-
-int f3(undeclared *p, int); // expected-error{{unknown type name 'undeclared'}}
-
-int f4(undeclared *p, 0); // expected-error{{undeclared identifier}}
-
-int *test(UnknownType *fool) { return 0; } // expected-error{{unknown type name 'UnknownType'}}
-
-template<typename T> int A<T>::n(T::value); // ok
-template<typename T>
-A<T>::type // expected-error{{missing 'typename'}}
-A<T>::m(T::value, 0); // ok
-
-template<typename T> int A<T>::h(T::type, int) {} // expected-error{{missing 'typename'}}
-template<typename T> int A<T>::h(T::type x, char) {} // expected-error{{missing 'typename'}}
-
-template<typename T> int h(T::type, int); // expected-error{{missing 'typename'}}
-template<typename T> int h(T::type x, char); // expected-error{{missing 'typename'}}
-
-template<typename T> int junk1(T::junk); // expected-error{{declared as a template}}
-template<typename T> int junk2(T::junk) throw(); // expected-error{{missing 'typename'}}
-template<typename T> int junk3(T::junk) = delete; // expected-error{{missing 'typename'}} expected-warning{{C++11}}
-template<typename T> int junk4(T::junk j); // expected-error{{missing 'typename'}}
-
-// FIXME: We can tell this was intended to be a function because it does not
-//        have a dependent nested name specifier.
-template<typename T> int i(T::type, int()); // expected-error{{variable 'i' declared as a template}}
-
-// FIXME: We know which type specifier should have been specified here. Provide
-//        a fix-it to add 'typename A<T>::type'
-template<typename T>
-A<T>::g() { } // expected-error{{requires a type specifier}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unreachable-catch-clauses.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unreachable-catch-clauses.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unreachable-catch-clauses.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
-
-class BaseEx {};
-class Ex1: public BaseEx {};
-typedef Ex1 Ex2;
-
-void f();
-
-void test()
-try {}
-catch (BaseEx &e) { f(); }
-catch (Ex1 &e) { f(); } // expected-note {{for type class Ex1 &}}
-catch (Ex2 &e) { f(); } // expected-warning {{exception of type Ex2 & will be caught by earlier handler}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unreachable-code.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unreachable-code.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unreachable-code.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -Wunreachable-code -fblocks -verify %s
-
-int j;
-void bar() { }
-int test1() {
-  for (int i = 0;
-       i != 10;
-       ++i) {  // expected-warning {{will never be executed}}
-    if (j == 23) // missing {}'s
-      bar();
-      return 1;
-  }
-  return 0;
-  return 1;    // expected-warning {{will never be executed}}
-}
-
-void test2(int i) {
-  switch (i) {
-  case 0:
-    break;
-    bar();     // expected-warning {{will never be executed}}
-  case 2:
-    switch (i) {
-    default:
-    a: goto a;
-    }
-    bar();     // expected-warning {{will never be executed}}
-  }
-  b: goto b;
-  bar();       // expected-warning {{will never be executed}}
-}
-
-void test3() {
-  ^{ return;
-     bar();    // expected-warning {{will never be executed}}
-  }();
-  while (++j) {
-    continue;
-    bar();     // expected-warning {{will never be executed}}
-  }
-}
-
-// PR 6130 - Don't warn about bogus unreachable code with throw's and
-// temporary objects.
-class PR6130 {
-public:
-  PR6130();
-  ~PR6130();
-};
-
-int pr6130(unsigned i) {
-  switch(i) {
-    case 0: return 1;
-    case 1: return 2;
-    default:
-      throw PR6130(); // no-warning
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unused-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unused-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unused-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -Wunused -verify %s
-// expected-no-diagnostics
-
-static int foo(int x) { return x; }
-
-template<typename T>
-T get_from_foo(T y) { return foo(y); }
-
-int g(int z) { return get_from_foo(z); }
-
-namespace { void f() = delete; }

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unused-with-error.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unused-with-error.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unused-with-error.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused -verify %s
-
-// Make sure 'unused' warnings are disabled when errors occurred.
-static void foo(int *X) { // expected-note {{candidate}}
-}
-void bar(const int *Y) {
-  foo(Y); // expected-error {{no matching function for call}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/unused.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/unused.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/unused.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR4103 : Make sure we don't get a bogus unused expression warning
-namespace PR4103 {
-  class APInt {
-    char foo;
-  };
-  class APSInt : public APInt {
-    char bar;
-  public:
-    APSInt &operator=(const APSInt &RHS);
-  };
-
-  APSInt& APSInt::operator=(const APSInt &RHS) {
-    APInt::operator=(RHS);
-    return *this;
-  }
-
-  template<typename T>
-  struct X {
-    X();
-  };
-
-  void test() {
-    X<int>();
-  }
-}
-
-namespace derefvolatile {
-  void f(volatile char* x) {
-    *x; // expected-warning {{expression result unused; assign into a variable to force a volatile load}}
-    (void)*x; // expected-warning {{expression result unused; assign into a variable to force a volatile load}}
-    volatile char y = 10;
-    (void)y; // don't warn here, because it's a common pattern.
-  }
-}
-
-// <rdar://problem/12359208>
-namespace AnonObject {
-  struct Foo {
-    Foo(const char* const message);
-    ~Foo();
-  };
-  void f() {
-    Foo("Hello World!");  // don't warn
-    int(1); // expected-warning {{expression result unused}}
-  }
-}
-
-// Test that constructing an object (which may have side effects) with
-// constructor arguments which are dependent doesn't produce an unused value
-// warning.
-namespace UnresolvedLookup {
-  struct Foo {
-    Foo(int i, int j);
-  };
-  template <typename T>
-  struct Bar {
-    void f(T t) {
-      Foo(t, 0);  // no warning
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/user-defined-conversions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/user-defined-conversions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/user-defined-conversions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-struct X {
-  operator bool();
-};
-
-int& f(bool);
-float& f(int);
-
-void f_test(X x) {
-  int& i1 = f(x);
-}
-
-struct Y {
-  operator short();
-  operator float();
-};
-
-void g(int);
-
-void g_test(Y y) {
-  g(y);
-  short s;
-  s = y;
-}
-
-struct A { };
-struct B : A { };
-
-struct C {
-  operator B&();
-};
-
-// Test reference binding via an lvalue conversion function.
-void h(volatile A&);
-void h_test(C c) {
-  h(c);
-}
-
-// Test conversion followed by copy-construction
-struct FunkyDerived;
-
-struct Base { 
-  Base(const FunkyDerived&);
-};
-
-struct Derived : Base { };
-
-struct FunkyDerived : Base { };
-
-struct ConvertibleToBase {
-  operator Base();
-};
-
-struct ConvertibleToDerived {
-  operator Derived();
-};
-
-struct ConvertibleToFunkyDerived {
-  operator FunkyDerived();
-};
-
-void test_conversion(ConvertibleToBase ctb, ConvertibleToDerived ctd,
-                     ConvertibleToFunkyDerived ctfd) {
-  Base b1 = ctb;
-  Base b2(ctb);
-  Base b3 = ctd;
-  Base b4(ctd);
-  Base b5 = ctfd;
-}
-
-struct X1 {
-  X1(X1&); // expected-note{{candidate constructor not viable: expects an l-value for 1st argument}}
-};
-
-struct X2 {
-  operator X1();
-};
-
-int &f(X1);
-float &f(...);
-
-void g(X2 b) {
-  int &ir = f(b); // expected-error{{no viable constructor copying parameter of type 'X1'}}
-}
-
-namespace rdar10202900 {
-  class A {
-  public:
-    A();
-
-  private:
-    A(int i); // expected-note{{declared private here}}
-  };
-
-  void testA(A a) {
-    int b = 10;
-    a = b; // expected-error{{calling a private constructor of class 'rdar10202900::A'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-extern "C" { void f(bool); }
-
-namespace std {
-  using ::f;
-  inline void f() { return f(true); }
-}
-
-namespace M {
-  void f(float);
-}
-
-namespace N {
-  using M::f;
-  void f(int) { } // expected-note{{previous}}
-  
-  void f(int) { } // expected-error{{redefinition}}
-}
-
-namespace N {
-  void f(double);
-  void f(long);
-}
-
-struct X0 {
-  void operator()(int);
-  void operator()(long);
-};
-
-struct X1 : X0 {
-  // FIXME: give this operator() a 'float' parameter to test overloading
-  // behavior. It currently fails.
-  void operator()();
-  using X0::operator();
-  
-  void test() {
-    (*this)(1);
-  }
-};
-
-struct A { void f(); };
-struct B : A { };
-class C : B { using B::f; };
-
-// PR5751: Resolve overloaded functions through using decls.
-namespace O {
-  void f(int i);
-  void f(double d);
-}
-namespace P {
-  void f();
-  void g(void (*ptr)(int));
-  using O::f;
-  void test() {
-    f();
-    f(1);
-    void (*f_ptr1)(double) = f;
-    void (*f_ptr2)() = f;
-    g(f);
-  }
-}
-
-// Make sure that ADL can find names brought in by using decls.
-namespace test0 {
-  namespace ns {
-    class Foo {};
-    
-    namespace inner {
-      void foo(char *); // expected-note {{no known conversion}} 
-    }
-
-    using inner::foo;
-  }
-
-  void test(ns::Foo *p) {
-    foo(*p); // expected-error {{no matching function for call to 'foo'}}
-  }
-}
-
-// Redeclarations!
-namespace test1 {
-  namespace ns0 { struct Foo {}; }
-  namespace A { void foo(ns0::Foo *p, int y, int z); }
-  namespace ns2 { using A::foo; }
-  namespace ns1 { struct Bar : ns0::Foo {}; }
-  namespace A { void foo(ns0::Foo *p, int y, int z = 0); } // expected-note {{candidate}}
-  namespace ns1 { using A::foo; }
-  namespace ns2 { struct Baz : ns1::Bar {}; }
-  namespace A { void foo(ns0::Foo *p, int y = 0, int z); }
-
-  void test(ns2::Baz *p) {
-    foo(p, 0, 0); // okay!
-    foo(p, 0); // should be fine!
-    foo(p); // expected-error {{no matching function}}
-  }
-}
-
-namespace test2 {
-  namespace ns { int foo; }
-  template <class T> using ns::foo; // expected-error {{cannot template a using declaration}}
-
-  // PR8022
-  struct A {
-    template <typename T> void f(T);
-  };
-  class B : A {
-    template <typename T> using A::f<T>; // expected-error {{cannot template a using declaration}}
-  };
-}
-
-// PR8756
-namespace foo
-{
-  class Class1; // expected-note{{forward declaration}}
-  class Class2
-  {
-    using ::foo::Class1::Function; // expected-error{{incomplete type 'foo::Class1' named in nested name specifier}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-pr4441.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-pr4441.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-pr4441.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace A {
-    struct B { };
-    void operator+(B,B);
-}
-
-using A::operator+;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-pr4450.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-pr4450.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-pr4450.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-namespace A {
-  void g();
-}
-
-namespace X {
-  using A::g; 
-}
-
-void h()
-{
-  A::g();
-  X::g();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/using-decl-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> struct A {
-  void f() { }
-  struct N { }; // expected-note{{target of using declaration}}
-};
-
-template<typename T> struct B : A<T> {
-  using A<T>::f;
-  using A<T>::N; // expected-error{{dependent using declaration resolved to type without 'typename'}}
-  
-  using A<T>::foo; // expected-error{{no member named 'foo'}}
-  using A<double>::f; // expected-error{{using declaration refers into 'A<double>::', which is not a base class of 'B<int>'}}
-};
-
-B<int> a; // expected-note{{in instantiation of template class 'B<int>' requested here}}
-
-template<typename T> struct C : A<T> {
-  using A<T>::f;
-  
-  void f() { };
-};
-
-template <typename T> struct D : A<T> {
-  using A<T>::f;
-  
-  void f();
-};
-
-template<typename T> void D<T>::f() { }
-
-template<typename T> struct E : A<T> {
-  using A<T>::f;
-
-  void g() { f(); }
-};
-
-namespace test0 {
-  struct Base {
-    int foo;
-  };
-  template<typename T> struct E : Base {
-    using Base::foo;
-  };
-
-  template struct E<int>;
-}
-
-// PR7896
-namespace PR7896 {
-template <class T> struct Foo {
-  int k (float);
-};
-struct Baz {
-  int k (int);
-};
-template <class T> struct Bar : public Foo<T>, Baz {
-  using Foo<T>::k;
-  using Baz::k;
-  int foo() {
-    return k (1.0f);
-  }
-};
-template int Bar<int>::foo();
-}
-
-// PR10883
-namespace PR10883 {
-  template <typename T>
-  class Base {
-   public:
-    typedef long Container;
-  };
-
-  template <typename T>
-  class Derived : public Base<T> {
-   public:
-    using Base<T>::Container;
-
-    void foo(const Container& current); // expected-error {{unknown type name 'Container'}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/using-directive.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/using-directive.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/using-directive.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace A {
-  short i; // expected-note 2{{candidate found by name lookup is 'A::i'}}
-  namespace B {
-    long i; // expected-note{{candidate found by name lookup is 'A::B::i'}}
-    void f() {} // expected-note{{candidate function}}
-    int k;
-    namespace E {} // \
-      expected-note{{candidate found by name lookup is 'A::B::E'}}
-  }
-
-  namespace E {} // expected-note{{candidate found by name lookup is 'A::E'}}
-
-  namespace C {
-    using namespace B;
-    namespace E {} // \
-      expected-note{{candidate found by name lookup is 'A::C::E'}}
-  }
-
-  void f() {} // expected-note{{candidate function}}
-
-  class K1 {
-    void foo();
-  };
-
-  void local_i() {
-    char i;
-    using namespace A;
-    using namespace B;
-    int a[sizeof(i) == sizeof(char)? 1 : -1]; // okay
-  }
-  namespace B {
-    int j;
-  }
-
-  void ambig_i() {
-    using namespace A;
-    using namespace A::B;
-    (void) i; // expected-error{{reference to 'i' is ambiguous}}
-    f(); // expected-error{{call to 'f' is ambiguous}}
-    (void) j; // okay
-    using namespace C;
-    (void) k; // okay
-    using namespace E; // expected-error{{reference to 'E' is ambiguous}}
-  }
-
-  struct K2 {}; // expected-note 2{{candidate found by name lookup is 'A::K2'}}
-}
-
-struct K2 {}; // expected-note 2{{candidate found by name lookup is 'K2'}}
-
-using namespace A;
-
-void K1::foo() {} // okay
-
-struct K2 *k2; // expected-error{{reference to 'K2' is ambiguous}}
-
-K2 *k3; // expected-error{{reference to 'K2' is ambiguous}}
-
-class X { // expected-note{{candidate found by name lookup is 'X'}}
-  // FIXME: produce a suitable error message for this
-  using namespace A; // expected-error{{not allowed}}
-};
-
-namespace N {
-  struct K2;
-  struct K2 { };
-}
-
-namespace Ni {
- int i(); // expected-note{{candidate found by name lookup is 'Ni::i'}}
-}
-
-namespace NiTest {
- using namespace A;
- using namespace Ni;
-
- int test() {
-   return i; // expected-error{{reference to 'i' is ambiguous}}
- }
-}
-
-namespace OneTag {
-  struct X; // expected-note{{candidate found by name lookup is 'OneTag::X'}}
-}
-
-namespace OneFunction {
-  void X(); // expected-note{{candidate found by name lookup is 'OneFunction::X'}}
-}
-
-namespace TwoTag {
-  struct X; // expected-note{{candidate found by name lookup is 'TwoTag::X'}}
-}
-
-namespace FuncHidesTagAmbiguity {
-  using namespace OneTag;
-  using namespace OneFunction;
-  using namespace TwoTag;
-
-  void test() {
-    (void)X(); // expected-error{{reference to 'X' is ambiguous}}
-  }
-}
-
-// PR5479
-namespace Aliased {
-  void inAliased();
-}
-namespace Alias = Aliased;
-using namespace Alias;
-void testAlias() {
-  inAliased();
-}
-
-namespace N { void f2(int); }
-
-extern "C++" {
-  using namespace N;
-  void f3() { f2(1); }
-}
-
-void f4() { f2(1); }
-
-// PR7517
-using namespace std; // expected-warning{{using directive refers to implicitly-defined namespace 'std'}}
-using namespace ::std; // expected-warning{{using directive refers to implicitly-defined namespace 'std'}}
-
-namespace test1 {
-  namespace ns { typedef int test1; }
-  template <class T> using namespace ns; // expected-error {{cannot template a using directive}}
-
-  // Test that we recovered okay.
-  test1 x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/value-dependent-exprs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/value-dependent-exprs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/value-dependent-exprs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-// expected-no-diagnostics
-
-template <unsigned I>
-class C0 {
-  static const int iv0 = 1 << I;
-
-  enum {
-    A = I,
-    B = I + 1
-  };
-
-  struct s0 {
-    int a : I;
-    int b[I];
-  };
-
-  // FIXME: I'm unclear where the right place to handle this is.
-#if 0
-  void f0(int *p) {
-    if (p == I) {
-    }
-  }
-#endif
-
-#if 0
-  // FIXME: Not sure whether we care about these.
-  void f1(int *a)
-    __attribute__((nonnull(1 + I)))
-    __attribute__((constructor(1 + I)))
-    __attribute__((destructor(1 + I)))
-    __attribute__((sentinel(1 + I, 2 + I))),
-    __attribute__((reqd_work_group_size(1 + I, 2 + I, 3 + I))),
-    __attribute__((format_arg(1 + I))),
-    __attribute__((aligned(1 + I))),
-    __attribute__((regparm(1 + I)));
-
-  typedef int int_a0 __attribute__((address_space(1 + B)));
-#endif
-
-#if 0
-  // FIXME: This doesn't work. PR4996.
-  int f2() {
-    return __builtin_choose_expr(I, 1, 2);
-  }
-#endif
-
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/value-initialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/value-initialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/value-initialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-
-struct A { // expected-warning {{does not declare any constructor to initialize}}
-     const int i; // expected-note{{const member 'i' will never be initialized}} expected-note {{implicitly deleted}}
-     virtual void f() { } 
-};
-
-int main () {
-      (void)A(); // expected-error {{call to implicitly-deleted default constructor}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/vararg-default-arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/vararg-default-arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/vararg-default-arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// expected-no-diagnostics
-// PR5462
-
-void f1(void);
-void f2(const char * = __null, ...);
-
-void f1(void)
-{
-        f2();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/vararg-non-pod.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/vararg-non-pod.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/vararg-non-pod.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,143 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s -Wno-error=non-pod-varargs
-
-extern char version[];
-
-class C {
-public:
-  C(int);
-  void g(int a, ...);
-  static void h(int a, ...);
-};
-
-void g(int a, ...);
-
-void t1()
-{
-  C c(10);
-  
-  g(10, c); // expected-warning{{cannot pass object of non-POD type 'C' through variadic function; call will abort at runtime}}
-  g(10, version);
-}
-
-void t2()
-{
-  C c(10);
-
-  c.g(10, c); // expected-warning{{cannot pass object of non-POD type 'C' through variadic method; call will abort at runtime}}
-  c.g(10, version);
-  
-  C::h(10, c); // expected-warning{{cannot pass object of non-POD type 'C' through variadic function; call will abort at runtime}}
-  C::h(10, version);
-}
-
-int (^block)(int, ...);
-
-void t3()
-{
-  C c(10);
-  
-  block(10, c); // expected-warning{{cannot pass object of non-POD type 'C' through variadic block; call will abort at runtime}}
-  block(10, version);
-}
-
-class D {
-public:
-  void operator() (int a, ...);
-};
-
-void t4()
-{
-  C c(10);
-
-  D d;
-  
-  d(10, c); // expected-warning{{cannot pass object of non-POD type 'C' through variadic method; call will abort at runtime}}
-  d(10, version);
-}
-
-class E {
-  E(int, ...); // expected-note 2{{implicitly declared private here}}
-};
-
-void t5()
-{
-  C c(10);
-  
-  E e(10, c); // expected-warning{{cannot pass object of non-POD type 'C' through variadic constructor; call will abort at runtime}} \
-    // expected-error{{calling a private constructor of class 'E'}}
-  (void)E(10, c); // expected-warning{{cannot pass object of non-POD type 'C' through variadic constructor; call will abort at runtime}} \
-    // expected-error{{calling a private constructor of class 'E'}}
-
-}
-
-// PR5761: unevaluated operands and the non-POD warning
-class Foo {
- public:
-  Foo() {}
-};
-
-int Helper(...);
-const int size = sizeof(Helper(Foo()));
-
-namespace std {
-  class type_info { };
-}
-
-struct Base { virtual ~Base(); };
-Base &get_base(...);
-int eat_base(...);
-
-void test_typeid(Base &base) {
-  (void)typeid(get_base(base)); // expected-warning{{cannot pass object of non-POD type 'Base' through variadic function; call will abort at runtime}}
-  (void)typeid(eat_base(base)); // okay
-}
-
-
-// rdar://7985267 - Shouldn't warn, doesn't actually use __builtin_va_start is
-// magic.
-
-void t6(Foo somearg, ... ) {
-  __builtin_va_list list;
-  __builtin_va_start(list, somearg);
-}
-
-void t7(int n, ...) {
-  __builtin_va_list list;
-  __builtin_va_start(list, n);
-  (void)__builtin_va_arg(list, C); // expected-warning{{second argument to 'va_arg' is of non-POD type 'C'}}
-  __builtin_va_end(list);
-}
-
-struct Abstract {
-  virtual void doit() = 0; // expected-note{{unimplemented pure virtual method}}
-};
-
-void t8(int n, ...) {
-  __builtin_va_list list;
-  __builtin_va_start(list, n);
-  (void)__builtin_va_arg(list, Abstract); // expected-error{{second argument to 'va_arg' is of abstract type 'Abstract'}}
-  __builtin_va_end(list);
-}
-
-int t9(int n) {
-  // Make sure the error works in potentially-evaluated sizeof
-  return (int)sizeof(*(Helper(Foo()), (int (*)[n])0)); // expected-warning{{cannot pass object of non-POD type}}
-}
-
-// PR14057
-namespace t10 {
-  struct F {
-    F();
-  };
-
-  struct S {
-    void operator()(F, ...);
-  };
-
-  void foo() {
-    S s;
-    F f;
-    s.operator()(f);
-    s(f);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/vector-casts.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/vector-casts.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/vector-casts.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-typedef int __v2si __attribute__((__vector_size__(8)));
-typedef short __v4hi __attribute__((__vector_size__(8)));
-typedef short __v8hi __attribute__((__vector_size__(16)));
-
-struct S { }; // expected-note 2 {{candidate constructor}}
-
-void f() {
-  __v2si v2si;
-  __v4hi v4hi;
-  __v8hi v8hi;
-  unsigned long long ll;
-  unsigned char c;
-  S s;
-  
-  (void)reinterpret_cast<__v2si>(v4hi);
-  (void)(__v2si)v4hi;
-  (void)reinterpret_cast<__v4hi>(v2si);
-  (void)(__v4hi)v2si;
-  (void)reinterpret_cast<unsigned long long>(v2si);
-  (void)(unsigned long long)v2si;
-  (void)reinterpret_cast<__v2si>(ll);
-  (void)(__v2si)(ll);
-
-  (void)reinterpret_cast<S>(v2si); // expected-error {{reinterpret_cast from '__v2si' to 'S' is not allowed}}
-  (void)(S)v2si; // expected-error {{no matching conversion for C-style cast from '__v2si' to 'S'}}
-  (void)reinterpret_cast<__v2si>(s); // expected-error {{reinterpret_cast from 'S' to '__v2si' is not allowed}}
-  (void)(__v2si)s; // expected-error {{cannot convert 'S' to '__v2si' without a conversion operator}}
-  
-  (void)reinterpret_cast<unsigned char>(v2si); // expected-error {{reinterpret_cast from vector '__v2si' to scalar 'unsigned char' of different size}}
-  (void)(unsigned char)v2si; // expected-error {{C-style cast from vector '__v2si' to scalar 'unsigned char' of different size}}
-  (void)reinterpret_cast<__v2si>(c); // expected-error {{reinterpret_cast from scalar 'unsigned char' to vector '__v2si' of different size}}
-
-  (void)reinterpret_cast<__v8hi>(v4hi); // expected-error {{reinterpret_cast from vector '__v4hi' to vector '__v8hi' of different size}}
-  (void)(__v8hi)v4hi; // expected-error {{C-style cast from vector '__v4hi' to vector '__v8hi' of different size}}
-  (void)reinterpret_cast<__v4hi>(v8hi); // expected-error {{reinterpret_cast from vector '__v8hi' to vector '__v4hi' of different size}}
-  (void)(__v4hi)v8hi; // expected-error {{C-style cast from vector '__v8hi' to vector '__v4hi' of different size}}
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/vector-no-lax.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/vector-no-lax.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/vector-no-lax.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fno-lax-vector-conversions -verify %s
-typedef unsigned int __attribute__((vector_size (16))) vUInt32;
-typedef int __attribute__((vector_size (16))) vSInt32;
-
-vSInt32 foo (vUInt32 a) {
-  vSInt32 b = { 0, 0, 0, 0 };
-  b += a; // expected-error{{can't convert between vector values}}
-  return b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/vector.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/vector.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/vector.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,280 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
-typedef char char16 __attribute__ ((__vector_size__ (16)));
-typedef long long longlong16 __attribute__ ((__vector_size__ (16)));
-typedef char char16_e __attribute__ ((__ext_vector_type__ (16)));
-typedef long long longlong16_e __attribute__ ((__ext_vector_type__ (2)));
-
-// Test overloading and function calls with vector types.
-void f0(char16);
-
-void f0_test(char16 c16, longlong16 ll16, char16_e c16e, longlong16_e ll16e) {
-  f0(c16);
-  f0(ll16);
-  f0(c16e);
-  f0(ll16e);
-}
-
-int &f1(char16); // expected-note 2{{candidate function}}
-float &f1(longlong16); // expected-note 2{{candidate function}}
-
-void f1_test(char16 c16, longlong16 ll16, char16_e c16e, longlong16_e ll16e) {
-  int &ir1 = f1(c16);
-  float &fr1 = f1(ll16);
-  f1(c16e); // expected-error{{call to 'f1' is ambiguous}}
-  f1(ll16e); // expected-error{{call to 'f1' is ambiguous}}
-}
-
-void f2(char16_e); // expected-note{{no known conversion from 'longlong16_e' to 'char16_e' for 1st argument}} \
-       // expected-note{{candidate function not viable: no known conversion from 'convertible_to<longlong16_e>' to 'char16_e' for 1st argument}}
-
-void f2_test(char16 c16, longlong16 ll16, char16_e c16e, longlong16_e ll16e) {
-  f2(c16);
-  f2(ll16);
-  f2(c16e);
-  f2(ll16e); // expected-error{{no matching function}}
-  f2('a');
-  f2(17);
-}
-
-// Test the conditional operator with vector types.
-void conditional(bool Cond, char16 c16, longlong16 ll16, char16_e c16e, 
-                 longlong16_e ll16e) {
-  // Conditional operators with the same type.
-  __typeof__(Cond? c16 : c16) *c16p1 = &c16;
-  __typeof__(Cond? ll16 : ll16) *ll16p1 = &ll16;
-  __typeof__(Cond? c16e : c16e) *c16ep1 = &c16e;
-  __typeof__(Cond? ll16e : ll16e) *ll16ep1 = &ll16e;
-
-  // Conditional operators with similar types.
-  __typeof__(Cond? c16 : c16e) *c16ep2 = &c16e;
-  __typeof__(Cond? c16e : c16) *c16ep3 = &c16e;
-  __typeof__(Cond? ll16 : ll16e) *ll16ep2 = &ll16e;
-  __typeof__(Cond? ll16e : ll16) *ll16ep3 = &ll16e;
-
-  // Conditional operators with compatible types under -flax-vector-conversions (default)
-  (void)(Cond? c16 : ll16);
-  (void)(Cond? ll16e : c16e);
-  (void)(Cond? ll16e : c16);
-}
-
-// Test C++ cast'ing of vector types.
-void casts(longlong16 ll16, longlong16_e ll16e) {
-  // C-style casts.
-  (void)(char16)ll16;
-  (void)(char16_e)ll16;
-  (void)(longlong16)ll16;
-  (void)(longlong16_e)ll16;
-  (void)(char16)ll16e;
-  (void)(char16_e)ll16e;
-  (void)(longlong16)ll16e;
-  (void)(longlong16_e)ll16e;
-
-  // Function-style casts.
-  (void)char16(ll16);
-  (void)char16_e(ll16);
-  (void)longlong16(ll16);
-  (void)longlong16_e(ll16);
-  (void)char16(ll16e);
-  (void)char16_e(ll16e);
-  (void)longlong16(ll16e);
-  (void)longlong16_e(ll16e);
-
-  // static_cast
-  (void)static_cast<char16>(ll16);
-  (void)static_cast<char16_e>(ll16);
-  (void)static_cast<longlong16>(ll16);
-  (void)static_cast<longlong16_e>(ll16);
-  (void)static_cast<char16>(ll16e);
-  (void)static_cast<char16_e>(ll16e); // expected-error{{static_cast from 'longlong16_e' to 'char16_e' is not allowed}}
-  (void)static_cast<longlong16>(ll16e);
-  (void)static_cast<longlong16_e>(ll16e);
-
-  // reinterpret_cast
-  (void)reinterpret_cast<char16>(ll16);
-  (void)reinterpret_cast<char16_e>(ll16);
-  (void)reinterpret_cast<longlong16>(ll16);
-  (void)reinterpret_cast<longlong16_e>(ll16);
-  (void)reinterpret_cast<char16>(ll16e);
-  (void)reinterpret_cast<char16_e>(ll16e);
-  (void)reinterpret_cast<longlong16>(ll16e);
-  (void)reinterpret_cast<longlong16_e>(ll16e);
-}
-
-template<typename T>
-struct convertible_to { // expected-note 3 {{candidate function (the implicit copy assignment operator)}}
-  operator T() const;
-};
-
-void test_implicit_conversions(bool Cond, char16 c16, longlong16 ll16, 
-                               char16_e c16e, longlong16_e ll16e,
-                               convertible_to<char16> to_c16, 
-                               convertible_to<longlong16> to_ll16, 
-                               convertible_to<char16_e> to_c16e, 
-                               convertible_to<longlong16_e> to_ll16e,
-                               convertible_to<char16&> rto_c16,
-                               convertible_to<char16_e&> rto_c16e) {
-  f0(to_c16);
-  f0(to_ll16);
-  f0(to_c16e);
-  f0(to_ll16e);
-  f2(to_c16);
-  f2(to_ll16);
-  f2(to_c16e);
-  f2(to_ll16e); // expected-error{{no matching function}}
-
-  (void)(c16 == c16e);
-  (void)(c16 == to_c16);
-  (void)+to_c16;
-  (void)-to_c16;
-  (void)~to_c16;
-  (void)(to_c16 == to_c16e);
-  (void)(to_c16 != to_c16e);
-  (void)(to_c16 <  to_c16e);
-  (void)(to_c16 <= to_c16e);
-  (void)(to_c16 >  to_c16e);
-  (void)(to_c16 >= to_c16e);
-  (void)(to_c16 + to_c16);
-  (void)(to_c16 - to_c16);
-  (void)(to_c16 * to_c16);
-  (void)(to_c16 / to_c16);
-  (void)(rto_c16 = to_c16); // expected-error{{no viable overloaded '='}}
-  (void)(rto_c16 += to_c16);
-  (void)(rto_c16 -= to_c16);
-  (void)(rto_c16 *= to_c16);
-  (void)(rto_c16 /= to_c16);
-
-  (void)+to_c16e;
-  (void)-to_c16e;
-  (void)~to_c16e;
-  (void)(to_c16e == to_c16e);
-  (void)(to_c16e != to_c16e);
-  (void)(to_c16e <  to_c16e);
-  (void)(to_c16e <= to_c16e);
-  (void)(to_c16e >  to_c16e);
-  (void)(to_c16e >= to_c16e);
-  (void)(to_c16e + to_c16);
-  (void)(to_c16e - to_c16);
-  (void)(to_c16e * to_c16);
-  (void)(to_c16e / to_c16);
-  (void)(rto_c16e = to_c16); // expected-error{{no viable overloaded '='}}
-  (void)(rto_c16e += to_c16);
-  (void)(rto_c16e -= to_c16);
-  (void)(rto_c16e *= to_c16);
-  (void)(rto_c16e /= to_c16);
-
-  (void)+to_c16;
-  (void)-to_c16;
-  (void)~to_c16;
-  (void)(to_c16 == to_c16e);
-  (void)(to_c16 != to_c16e);
-  (void)(to_c16 <  to_c16e);
-  (void)(to_c16 <= to_c16e);
-  (void)(to_c16 >  to_c16e);
-  (void)(to_c16 >= to_c16e);
-  (void)(to_c16 + to_c16e);
-  (void)(to_c16 - to_c16e);
-  (void)(to_c16 * to_c16e);
-  (void)(to_c16 / to_c16e);
-  (void)(rto_c16 = c16e); // expected-error{{no viable overloaded '='}}
-  (void)(rto_c16 += to_c16e);
-  (void)(rto_c16 -= to_c16e);
-  (void)(rto_c16 *= to_c16e);
-  (void)(rto_c16 /= to_c16e);
-
-  (void)(Cond? to_c16 : to_c16e);
-  (void)(Cond? to_ll16e : to_ll16);
-  
-  // These 2 are convertable with -flax-vector-conversions (default)
-  (void)(Cond? to_c16 : to_ll16);
-  (void)(Cond? to_c16e : to_ll16e);
-}
-
-typedef float fltx2 __attribute__((__vector_size__(8)));
-typedef float fltx4 __attribute__((__vector_size__(16)));
-typedef double dblx2 __attribute__((__vector_size__(16)));
-typedef double dblx4 __attribute__((__vector_size__(32)));
-
-void accept_fltx2(fltx2); // expected-note{{candidate function not viable: no known conversion from 'double' to 'fltx2' for 1st argument}}
-void accept_fltx4(fltx4);
-void accept_dblx2(dblx2);
-void accept_dblx4(dblx4);
-void accept_bool(bool); // expected-note{{candidate function not viable: no known conversion from 'fltx2' to 'bool' for 1st argument}}
-
-void test(fltx2 fltx2_val, fltx4 fltx4_val, dblx2 dblx2_val, dblx4 dblx4_val) {
-  // Exact matches
-  accept_fltx2(fltx2_val);
-  accept_fltx4(fltx4_val);
-  accept_dblx2(dblx2_val);
-  accept_dblx4(dblx4_val);
-
-  // Same-size conversions
-  // FIXME: G++ rejects these conversions, we accept them. Revisit this!
-  accept_fltx4(dblx2_val);
-  accept_dblx2(fltx4_val);
-
-  // Conversion to bool.
-  accept_bool(fltx2_val); // expected-error{{no matching function for call to 'accept_bool'}}
-
-  // Scalar-to-vector conversions.
-  accept_fltx2(1.0); // expected-error{{no matching function for call to 'accept_fltx2'}}
-}
-
-typedef int intx4 __attribute__((__vector_size__(16)));
-typedef int inte4 __attribute__((__ext_vector_type__(4)));
-typedef int flte4 __attribute__((__ext_vector_type__(4)));
-
-void test_mixed_vector_types(fltx4 f, intx4 n, flte4 g, flte4 m) {
-  (void)(f == g);
-  (void)(g != f);
-  (void)(f <= g);
-  (void)(g >= f);
-  (void)(f < g);
-  (void)(g > f);
-
-  (void)(+g);
-  (void)(-g);
-
-  (void)(f + g);
-  (void)(f - g);
-  (void)(f * g);
-  (void)(f / g);
-  (void)(f = g);
-  (void)(f += g);
-  (void)(f -= g);
-  (void)(f *= g);
-  (void)(f /= g);
-
-
-  (void)(n == m);
-  (void)(m != n);
-  (void)(n <= m);
-  (void)(m >= n);
-  (void)(n < m);
-  (void)(m > n);
-
-  (void)(+m);
-  (void)(-m);
-  (void)(~m);
-
-  (void)(n + m);
-  (void)(n - m);
-  (void)(n * m);
-  (void)(n / m);
-  (void)(n % m);
-  (void)(n = m);
-  (void)(n += m);
-  (void)(n -= m);
-  (void)(n *= m);
-  (void)(n /= m);
-}
-
-template<typename T> void test_pseudo_dtor_tmpl(T *ptr) {
-  ptr->~T();
-  (*ptr).~T();
-}
-
-void test_pseudo_dtor(fltx4 *f) {
-  f->~fltx4();
-  (*f).~fltx4();
-  test_pseudo_dtor_tmpl(f);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-base-used.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-base-used.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-base-used.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR7800
-
-class NoDestroy { ~NoDestroy(); }; // expected-note 3 {{declared private here}}
-struct A {
-  virtual ~A();
-};
-
-struct B : public virtual A {
-  NoDestroy x; // expected-error {{field of type 'NoDestroy' has private destructor}}
-};
-struct D : public virtual B {
-  virtual void foo();
-  ~D();
-};
-void D::foo() { // expected-note {{implicit default destructor for 'B' first required here}}
-}
-
-struct E : public virtual A {
-  NoDestroy x; // expected-error {{field of type 'NoDestroy' has private destructor}}
-};
-struct F : public E { // expected-note {{implicit default destructor for 'E' first required here}}
-};
-struct G : public virtual F {
-  virtual void foo();
-  ~G();
-};
-void G::foo() { // expected-note {{implicit default destructor for 'F' first required here}}
-}
-
-struct H : public virtual A {
-  NoDestroy x; // expected-error {{field of type 'NoDestroy' has private destructor}}
-};
-struct I : public virtual H {
-  ~I();
-};
-struct J : public I {
-  virtual void foo();
-  ~J();
-};
-void J::foo() { // expected-note {{implicit default destructor for 'H' first required here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-member-functions-key-function.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-member-functions-key-function.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-member-functions-key-function.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A {
-  virtual ~A();
-};
-
-struct B : A {  // expected-error {{no suitable member 'operator delete' in 'B'}}
-  B() { } // expected-note {{implicit default destructor for 'B' first required here}}
-  void operator delete(void *, int); // expected-note {{'operator delete' declared here}}
-}; 
-
-struct C : A {  // expected-error {{no suitable member 'operator delete' in 'C'}}
-  void operator delete(void *, int); // expected-note {{'operator delete' declared here}}
-}; 
-
-void f() {
-  (void)new B; 
-  (void)new C; // expected-note {{implicit default destructor for 'C' first required here}}
-}
-
-// Make sure that the key-function computation is consistent when the
-// first virtual member function of a nested class has an inline body.
-struct Outer {
-  struct Inner {
-    virtual void f() { }
-    void g();
-  };
-};
-
-void Outer::Inner::g() { }

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override-x64.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override-x64.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override-x64.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-pc-unknown -fsyntax-only -verify %s
-
-// Non-x86 targets ignore the calling conventions by default (but will warn
-// when one is encountered), so we want to make sure the virtual overrides
-// continue to work.
-namespace PR14339 {
-  class A {
-  public:
-    virtual void __attribute__((thiscall)) f();	// expected-warning {{calling convention 'thiscall' ignored for this target}}
-  };
-
-  class B : public A {
-  public:
-    void __attribute__((cdecl)) f();
-  };
-
-  class C : public A {
-  public:
-    void __attribute__((thiscall)) f();  // expected-warning {{calling convention 'thiscall' ignored for this target}}
-  };
-
-  class D : public A {
-  public:
-    void f();
-  };
-
-  class E {
-  public:
-    virtual void __attribute__((stdcall)) g();  // expected-warning {{calling convention 'stdcall' ignored for this target}}
-  };
-
-  class F : public E {
-  public:
-    void g();
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override-x86.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override-x86.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override-x86.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -triple=i686-pc-unknown -fsyntax-only -verify %s -std=c++11
-
-namespace PR14339 {
-  class A {
-  public:
-    virtual void __attribute__((thiscall)) f();	// expected-note{{overridden virtual function is here}}
-  };
-
-  class B : public A {
-  public:
-    void __attribute__((cdecl)) f();  // expected-error{{virtual function 'f' has different calling convention attributes ('void () __attribute__((cdecl))') than the function it overrides (which has calling convention 'void () __attribute__((thiscall))'}}
-  };
-
-  class C : public A {
-  public:
-    void __attribute__((thiscall)) f();  // This override is correct
-  };
-
-  class D : public A {
-  public:
-    void f();  // This override is correct because thiscall is the default calling convention for class members
-  };
-
-  class E {
-  public:
-    virtual void __attribute__((stdcall)) g();  // expected-note{{overridden virtual function is here}}
-  };
-
-  class F : public E {
-  public:
-    void g();  // expected-error{{virtual function 'g' has different calling convention attributes ('void ()') than the function it overrides (which has calling convention 'void () __attribute__((stdcall))'}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/virtual-override.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,290 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-namespace T1 {
-
-class A {
-  virtual int f(); // expected-note{{overridden virtual function is here}}
-};
-
-class B : A {
-  virtual void f(); // expected-error{{virtual function 'f' has a different return type ('void') than the function it overrides (which has return type 'int')}}
-};
-
-}
-
-namespace T2 {
-
-struct a { };
-struct b { };
-  
-class A {
-  virtual a* f(); // expected-note{{overridden virtual function is here}}
-};
-
-class B : A {
-  virtual b* f(); // expected-error{{return type of virtual function 'f' is not covariant with the return type of the function it overrides ('T2::b *' is not derived from 'T2::a *')}}
-};
-
-}
-
-namespace T3 {
-
-struct a { };
-struct b : private a { }; // expected-note{{declared private here}}
-  
-class A {
-  virtual a* f(); // FIXME: desired-note{{overridden virtual function is here}}
-};
-
-class B : A {
-  virtual b* f(); // expected-error{{invalid covariant return for virtual function: 'T3::a' is a private base class of 'T3::b'}}
-};
-
-}
-
-namespace T4 {
-
-struct a { };
-struct a1 : a { };
-struct b : a, a1 { };
-  
-class A {
-  virtual a* f(); // expected-note{{overridden virtual function is here}}
-};
-
-class B : A {
-  virtual b* f(); // expected-error{{return type of virtual function 'f' is not covariant with the return type of the function it overrides (ambiguous conversion from derived class 'T4::b' to base class 'T4::a':\n\
-    struct T4::b -> struct T4::a\n\
-    struct T4::b -> struct T4::a1 -> struct T4::a)}}
-};
-
-}
-
-namespace T5 {
-  
-struct a { };
-
-class A {
-  virtual a* const f(); 
-  virtual a* const g(); // expected-note{{overridden virtual function is here}}
-};
-
-class B : A {
-  virtual a* const f(); 
-  virtual a* g(); // expected-error{{return type of virtual function 'g' is not covariant with the return type of the function it overrides ('T5::a *' has different qualifiers than 'T5::a *const')}}
-};
-
-}
-
-namespace T6 {
-  
-struct a { };
-
-class A {
-  virtual const a* f(); 
-  virtual a* g(); // expected-note{{overridden virtual function is here}}
-};
-
-class B : A {
-  virtual a* f(); 
-  virtual const a* g(); // expected-error{{return type of virtual function 'g' is not covariant with the return type of the function it overrides (class type 'const T6::a *' is more qualified than class type 'T6::a *'}}
-};
-
-}
-
-namespace T7 {
-  struct a { };
-  struct b { };
-
-  class A {
-    a* f();
-  };
-
-  class B : A {
-    virtual b* f();
-  };
-}
-
-namespace T8 {
-  struct a { };
-  struct b; // expected-note {{forward declaration of 'T8::b'}}
-  
-  class A {
-    virtual a *f();
-  };
-  
-  class B : A {
-    b* f(); // expected-error {{return type of virtual function 'f' is not covariant with the return type of the function it overrides ('T8::b' is incomplete)}}
-  };
-}
-
-namespace T9 {
-  struct a { };
-  
-  template<typename T> struct b : a {
-    int a[sizeof(T) ? -1 : -1]; // expected-error {{array with a negative size}}
-  };
-  
-  class A {
-    virtual a *f();
-  };
-  
-  class B : A {
-    virtual b<int> *f(); // expected-note {{in instantiation of template class 'T9::b<int>' requested here}}
-  };
-}
-
-// PR5656
-class X0 {
-  virtual void f0();
-};
-class X1 : public X0 {
-  void f0() = 0;
-};
-
-template <typename Base>
-struct Foo : Base { 
-  void f(int) = 0; // expected-error{{not virtual and cannot be declared pure}}
-};
-
-struct Base1 { virtual void f(int); };
-struct Base2 { };
-
-void test() {
-  (void)sizeof(Foo<Base1>);
-  (void)sizeof(Foo<Base2>); // expected-note{{instantiation}}
-}
-
-template<typename Base>
-struct Foo2 : Base {
-  template<typename T> int f(T);
-};
-
-void test2() {
-  Foo2<Base1> f1;
-  Foo2<Base2> f2;
-  f1.f(17);
-  f2.f(17);
-};
-
-struct Foo3 {
-  virtual void f(int) = 0; // expected-note{{unimplemented pure virtual method}}
-};
-
-template<typename T>
-struct Bar3 : Foo3 {
-  void f(T);
-};
-
-void test3() {
-  Bar3<int> b3i; // okay
-  Bar3<float> b3f; // expected-error{{is an abstract class}}
-}
-
-// 5920
-namespace PR5920 {
-  class Base {};
-
-  template <typename T>
-  class Derived : public Base {};
-
-  class Foo {
-   public:
-    virtual Base* Method();
-  };
-
-  class Bar : public Foo {
-   public:
-    virtual Derived<int>* Method();
-  };
-}
-
-// Look through template types and typedefs to see whether return types are
-// pointers or references.
-namespace PR6110 {
-  class Base {};
-  class Derived : public Base {};
-
-  typedef Base* BaseP;
-  typedef Derived* DerivedP;
-
-  class X { virtual BaseP f(); };
-  class X1 : public X { virtual DerivedP f(); };
-
-  template <typename T> class Y { virtual T f(); };
-  template <typename T1, typename T> class Y1 : public Y<T> { virtual T1 f(); };
-  Y1<Derived*, Base*> y;
-}
-
-// Defer checking for covariance if either return type is dependent.
-namespace type_dependent_covariance {
-  struct B {};
-  template <int N> struct TD : public B {};
-  template <> struct TD<1> {};
-
-  template <int N> struct TB {};
-  struct D : public TB<0> {};
-
-  template <int N> struct X {
-    virtual B* f1(); // expected-note{{overridden virtual function is here}}
-    virtual TB<N>* f2(); // expected-note{{overridden virtual function is here}}
-  };
-  template <int N, int M> struct X1 : X<N> {
-    virtual TD<M>* f1(); // expected-error{{return type of virtual function 'f1' is not covariant with the return type of the function it overrides ('TD<1> *'}}
-    virtual D* f2(); // expected-error{{return type of virtual function 'f2' is not covariant with the return type of the function it overrides ('type_dependent_covariance::D *' is not derived from 'TB<1> *')}}
-  };
-
-  X1<0, 0> good;
-  X1<0, 1> bad_derived; // expected-note{{instantiation}}
-  X1<1, 0> bad_base; // expected-note{{instantiation}}
-}
-
-namespace T10 {
-  struct A { };
-  struct B : A { };
-
-  struct C { 
-    virtual A&& f();
-  };
-
-  struct D : C {
-    virtual B&& f();
-  };
-};
-
-namespace T11 {
-  struct A { };
-  struct B : A { };
-
-  struct C { 
-    virtual A& f(); // expected-note {{overridden virtual function is here}}
-  };
-
-  struct D : C {
-    virtual B&& f(); // expected-error {{virtual function 'f' has a different return type ('T11::B &&') than the function it overrides (which has return type 'T11::A &')}}
-  };
-};
-
-namespace T12 {
-  struct A { };
-  struct B : A { };
-
-  struct C { 
-    virtual A&& f(); // expected-note {{overridden virtual function is here}}
-  };
-
-  struct D : C {
-    virtual B& f(); // expected-error {{virtual function 'f' has a different return type ('T12::B &') than the function it overrides (which has return type 'T12::A &&')}}
-  };
-};
-
-namespace PR8168 {
-  class A {
-  public:
-    virtual void foo() {} // expected-note{{overridden virtual function is here}}
-  };
-
-  class B : public A {
-  public:
-    static void foo() {} // expected-error{{'static' member function 'foo' overrides a virtual function}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/virtuals.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/virtuals.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/virtuals.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -verify -std=c++11 %s
-
-class A {
-  virtual void f();
-  virtual void g() = 0; // expected-note{{unimplemented pure virtual method 'g' in 'A'}}
-
-  void h() = 0; // expected-error {{'h' is not virtual and cannot be declared pure}}
-  void i() = 1; // expected-error {{initializer on function does not look like a pure-specifier}}
-  void j() = 0u; // expected-error {{initializer on function does not look like a pure-specifier}}
-
-
-  void k();
-
-public:
-  A(int);
-};
-
-virtual void A::k() { } // expected-error{{'virtual' can only be specified inside the class definition}}
-
-class B : public A {
-  // Needs to recognize that overridden function is virtual.
-  void g() = 0;
-
-  // Needs to recognize that function does not override.
-  void g(int) = 0; // expected-error{{'g' is not virtual and cannot be declared pure}}
-};
-
-// Needs to recognize invalid uses of abstract classes.
-A fn(A) // expected-error{{parameter type 'A' is an abstract class}} \
-        // expected-error{{return type 'A' is an abstract class}}
-{
-  A a; // expected-error{{variable type 'A' is an abstract class}}
-  (void)static_cast<A>(0); // expected-error{{allocating an object of abstract class type 'A'}}
-  try {
-  } catch(A) { // expected-error{{variable type 'A' is an abstract class}}
-  }
-}
-
-namespace rdar9670557 {
-  typedef int func(int);
-  func *a();
-  struct X {
-    virtual func f = 0;
-    virtual func (g) = 0;
-    func *h = 0;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/visibility.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/visibility.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/visibility.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-namespace test1 {
-  template <class C>
-  struct C2
-  {
-    static int p __attribute__((visibility("hidden")));
-  };
-  int f() {
-    return C2<int>::p;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/vla.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/vla.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/vla.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-// PR11925
-int n;
-int (&f())[n]; // expected-error {{function declaration cannot have variably modified type}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/vtable-instantiation.cc
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/vtable-instantiation.cc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/vtable-instantiation.cc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace PR8640 {
-  template<class T1> struct C1 {
-    virtual void c1() {
-      T1 t1 = 3;  // expected-error {{cannot initialize a variable}}
-    }
-  };
-
-  template<class T2> struct C2 {
-    void c2() {
-      new C1<T2>();  // expected-note {{in instantiation of member function}}
-    }
-  };
-
-  void f() {
-    C2<int*> c2;
-    c2.c2();  // expected-note {{in instantiation of member function}}
-  }
-}
-
-namespace PR9325 {
-  template<typename T>
-  class Target
-  {
-  public:
-    virtual T Value() const
-    {
-      return 1; // expected-error{{cannot initialize return object of type 'int *' with an rvalue of type 'int'}}
-    }
-  };
-
-  template<typename T>
-  struct Provider
-  {
-    static Target<T> Instance;
-  };
-
-  template<typename T>
-  Target<T> Provider<T>::Instance; // expected-note{{in instantiation of}}
-
-  void f()
-  {
-    Target<int*>* traits = &Provider<int*>::Instance;
-  }
-}
-
-namespace PR10020 {
-  struct MG {
-    virtual void Accept(int) = 0;
-  };
-
-  template <typename Type>
-  struct GMG : MG {
-    void Accept(int i) {
-      static_cast<Type *>(0)->Accept(i); // expected-error{{member reference base}}
-    }
-    static GMG* Method() { return &singleton; } // expected-note{{in instantiation of}}
-    static GMG singleton;
-  };
-
-  template <typename Type>
-  GMG<Type> GMG<Type>::singleton;
-
-  void test(void) {
-    GMG<int>::Method(); // expected-note{{in instantiation of}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-assignment-condition.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-assignment-condition.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-assignment-condition.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,146 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wparentheses -verify %s
-
-struct A {
-  int foo();
-  friend A operator+(const A&, const A&);
-  A operator|=(const A&);
-  operator bool();
-};
-
-void test() {
-  int x, *p;
-  A a, b;
-
-  // With scalars.
-  if (x = 7) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  if ((x = 7)) {}
-  do {
-  } while (x = 7); // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  do {
-  } while ((x = 7));
-  while (x = 7) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-
-  while ((x = 7)) {}
-  for (; x = 7; ) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  for (; (x = 7); ) {}
-
-  if (p = p) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  if ((p = p)) {}
-  do {
-  } while (p = p); // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  do {
-  } while ((p = p));
-  while (p = p) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  while ((p = p)) {}
-  for (; p = p; ) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  for (; (p = p); ) {}
-
-  // Initializing variables (shouldn't warn).
-  if (int y = x) {}
-  while (int y = x) {}
-  if (A y = a) {}
-  while (A y = a) {}
-
-  // With temporaries.
-  if (x = (b+b).foo()) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  if ((x = (b+b).foo())) {}
-  do {
-  } while (x = (b+b).foo()); // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  do {
-  } while ((x = (b+b).foo()));
-  while (x = (b+b).foo()) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  while ((x = (b+b).foo())) {}
-  for (; x = (b+b).foo(); ) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  for (; (x = (b+b).foo()); ) {}
-
-  // With a user-defined operator.
-  if (a = b + b) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  if ((a = b + b)) {}
-  do {
-  } while (a = b + b); // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  do {
-  } while ((a = b + b));
-  while (a = b + b) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  while ((a = b + b)) {}
-  for (; a = b + b; ) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-  for (; (a = b + b); ) {}
-
-  // Compound assignments.
-  if (x |= 2) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '!=' to turn this compound assignment into an inequality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-
-  if (a |= b) {} // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                // expected-note{{use '!=' to turn this compound assignment into an inequality comparison}} \
-  // expected-note{{place parentheses around the assignment to silence this warning}}
-
-  if ((x == 5)) {} // expected-warning {{equality comparison with extraneous parentheses}} \
-                   // expected-note {{use '=' to turn this equality comparison into an assignment}} \
-                   // expected-note {{remove extraneous parentheses around the comparison to silence this warning}}
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wparentheses-equality"
-  if ((x == 5)) {} // no-warning
-#pragma clang diagnostic pop
-
-  if ((5 == x)) {}
-
-#define EQ(x,y) ((x) == (y))
-  if (EQ(x, 5)) {}
-#undef EQ
-}
-
-void (*fn)();
-
-void test2() {
-    if ((fn == test2)) {} // expected-warning {{equality comparison with extraneous parentheses}} \
-                          // expected-note {{use '=' to turn this equality comparison into an assignment}} \
-                          // expected-note {{remove extraneous parentheses around the comparison to silence this warning}}
-    if ((test2 == fn)) {}
-}
-
-namespace rdar9027658 {
-template <typename T>
-void f(T t) {
-    if ((t.g == 3)) { } // expected-warning {{equality comparison with extraneous parentheses}} \
-                         // expected-note {{use '=' to turn this equality comparison into an assignment}} \
-                         // expected-note {{remove extraneous parentheses around the comparison to silence this warning}}
-}
-
-struct S { int g; };
-void test() {
-  f(S()); // expected-note {{in instantiation}}
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-bad-memaccess.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-bad-memaccess.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-bad-memaccess.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wdynamic-class-memaccess -verify %s
-
-extern "C" void *memset(void *, int, unsigned);
-extern "C" void *memmove(void *s1, const void *s2, unsigned n);
-extern "C" void *memcpy(void *s1, const void *s2, unsigned n);
-extern "C" void *memcmp(void *s1, const void *s2, unsigned n);
-
-
-// Redeclare without the extern "C" to test that we still figure out that this
-// is the "real" memset.
-void *memset(void *, int, unsigned);
-
-// Several types that should not warn.
-struct S1 {} s1;
-struct S2 { int x; } s2;
-struct S3 { float x, y; S1 s[4]; void (*f)(S1**); } s3;
-
-class C1 {
-  int x, y, z;
-public:
-  void foo() {}
-} c1;
-
-struct X1 { virtual void f(); } x1;
-struct X2 : virtual S1 {} x2;
-
-void test_warn() {
-  memset(&x1, 0, sizeof x1); // \
-      // expected-warning {{destination for this 'memset' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  memset(&x2, 0, sizeof x2); // \
-      // expected-warning {{destination for this 'memset' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-
-  memmove(&x1, 0, sizeof x1); // \
-      // expected-warning{{destination for this 'memmove' call is a pointer to dynamic class 'struct X1'; vtable pointer will be overwritten}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  memmove(0, &x1, sizeof x1); // \
-      // expected-warning{{source of this 'memmove' call is a pointer to dynamic class 'struct X1'; vtable pointer will be moved}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  memcpy(&x1, 0, sizeof x1); // \
-      // expected-warning{{destination for this 'memcpy' call is a pointer to dynamic class 'struct X1'; vtable pointer will be overwritten}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  memcpy(0, &x1, sizeof x1); // \
-      // expected-warning{{source of this 'memcpy' call is a pointer to dynamic class 'struct X1'; vtable pointer will be copied}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  memcmp(&x1, 0, sizeof x1); // \
-      // expected-warning{{first operand of this 'memcmp' call is a pointer to dynamic class 'struct X1'; vtable pointer will be compared}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  memcmp(0, &x1, sizeof x1); // \
-      // expected-warning{{second operand of this 'memcmp' call is a pointer to dynamic class 'struct X1'; vtable pointer will be compared}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-
-  __builtin_memset(&x1, 0, sizeof x1); // \
-      // expected-warning {{destination for this '__builtin_memset' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  __builtin_memset(&x2, 0, sizeof x2); // \
-      // expected-warning {{destination for this '__builtin_memset' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-
-  __builtin_memmove(&x1, 0, sizeof x1); // \
-      // expected-warning{{destination for this '__builtin_memmove' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  __builtin_memmove(0, &x1, sizeof x1); // \
-      // expected-warning{{source of this '__builtin_memmove' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  __builtin_memcpy(&x1, 0, sizeof x1); // \
-      // expected-warning{{destination for this '__builtin_memcpy' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  __builtin_memcpy(0, &x1, sizeof x1); // \
-      // expected-warning{{source of this '__builtin_memcpy' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-
-  __builtin___memset_chk(&x1, 0, sizeof x1, sizeof x1); //                    \
-      // expected-warning {{destination for this '__builtin___memset_chk' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  __builtin___memset_chk(&x2, 0, sizeof x2, sizeof x2); //                    \
-      // expected-warning {{destination for this '__builtin___memset_chk' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-
-  __builtin___memmove_chk(&x1, 0, sizeof x1, sizeof x1); //                   \
-      // expected-warning{{destination for this '__builtin___memmove_chk' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  __builtin___memmove_chk(0, &x1, sizeof x1, sizeof x1); //                   \
-      // expected-warning{{source of this '__builtin___memmove_chk' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  __builtin___memcpy_chk(&x1, 0, sizeof x1, sizeof x1); //                    \
-      // expected-warning{{destination for this '__builtin___memcpy_chk' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-  __builtin___memcpy_chk(0, &x1, sizeof x1, sizeof x1); //                    \
-      // expected-warning{{source of this '__builtin___memcpy_chk' call is a pointer to dynamic class}} \
-      // expected-note {{explicitly cast the pointer to silence this warning}}
-}
-
-void test_nowarn(void *void_ptr) {
-  int i, *iptr;
-  float y;
-  char c;
-
-  memset(&i, 0, sizeof i);
-  memset(&iptr, 0, sizeof iptr);
-  memset(&y, 0, sizeof y);
-  memset(&c, 0, sizeof c);
-  memset(void_ptr, 0, 42);
-  memset(&s1, 0, sizeof s1);
-  memset(&s2, 0, sizeof s2);
-  memset(&s3, 0, sizeof s3);
-  memset(&c1, 0, sizeof c1);
-
-  // Unevaluated code shouldn't warn.
-  (void)sizeof memset(&x1, 0, sizeof x1);
-
-  // Dead code shouldn't warn.
-  if (false) memset(&x1, 0, sizeof x1);
-}
-
-namespace N {
-  void *memset(void *, int, unsigned);
-  void test_nowarn() {
-    N::memset(&x1, 0, sizeof x1);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-bool-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-bool-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-bool-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int* j = false; // expected-warning{{initialization of pointer of type 'int *' to null from a constant boolean expression}}
-
-void foo(int* i, int *j=(false)) // expected-warning{{initialization of pointer of type 'int *' to null from a constant boolean expression}}
-{
-  foo(false); // expected-warning{{initialization of pointer of type 'int *' to null from a constant boolean expression}}
-  foo((int*)false); // no-warning: explicit cast
-  foo(0); // no-warning: not a bool, even though its convertible to bool
-
-  foo(false == true); // expected-warning{{initialization of pointer of type 'int *' to null from a constant boolean expression}}
-  foo((42 + 24) < 32); // expected-warning{{initialization of pointer of type 'int *' to null from a constant boolean expression}}
-
-  const bool kFlag = false;
-  foo(kFlag); // expected-warning{{initialization of pointer of type 'int *' to null from a constant boolean expression}}
-}
-
-char f(struct Undefined*);
-double f(...);
-
-// Ensure that when using false in metaprogramming machinery its conversion
-// isn't flagged.
-template <int N> struct S {};
-S<sizeof(f(false))> s;

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-c++11-extensions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-c++11-extensions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-c++11-extensions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++98 -Wc++11-extensions -verify %s
-
-long long ll1 = // expected-warning {{'long long' is a C++11 extension}}
-         -42LL; // expected-warning {{'long long' is a C++11 extension}}
-unsigned long long ull1 = // expected-warning {{'long long' is a C++11 extension}}
-                   42ULL; // expected-warning {{'long long' is a C++11 extension}}
-
-enum struct E1 { A, B }; // expected-warning {{scoped enumerations are a C++11 extension}}
-enum class E2 { C, D }; // expected-warning {{scoped enumerations are a C++11 extension}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-cast-align.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-cast-align.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-cast-align.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -Wcast-align -verify %s
-
-// Simple casts.
-void test0(char *P) {
-  char *a; short *b; int *c;
-
-  a = (char*) P;
-  a = static_cast<char*>(P);
-  a = reinterpret_cast<char*>(P);
-  typedef char *CharPtr;
-  a = CharPtr(P);
-
-  b = (short*) P; // expected-warning {{cast from 'char *' to 'short *' increases required alignment from 1 to 2}}
-  b = reinterpret_cast<short*>(P);
-  typedef short *ShortPtr;
-  b = ShortPtr(P); // expected-warning {{cast from 'char *' to 'ShortPtr' (aka 'short *') increases required alignment from 1 to 2}}
-
-  c = (int*) P; // expected-warning {{cast from 'char *' to 'int *' increases required alignment from 1 to 4}}
-  c = reinterpret_cast<int*>(P);
-  typedef int *IntPtr;
-  c = IntPtr(P); // expected-warning {{cast from 'char *' to 'IntPtr' (aka 'int *') increases required alignment from 1 to 4}}
-}
-
-// Casts from void* are a special case.
-void test1(void *P) {
-  char *a; short *b; int *c;
-
-  a = (char*) P;
-  a = static_cast<char*>(P);
-  a = reinterpret_cast<char*>(P);
-  typedef char *CharPtr;
-  a = CharPtr(P);
-
-  b = (short*) P;
-  b = static_cast<short*>(P);
-  b = reinterpret_cast<short*>(P);
-  typedef short *ShortPtr;
-  b = ShortPtr(P);
-
-  c = (int*) P;
-  c = static_cast<int*>(P);
-  c = reinterpret_cast<int*>(P);
-  typedef int *IntPtr;
-  c = IntPtr(P);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-char-subscripts.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-char-subscripts.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-char-subscripts.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -Wchar-subscripts -fsyntax-only -verify %s
-
-template<typename T>
-void t1() {
-  int array[1] = { 0 };
-  T subscript = 0;
-  int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
-}
-
-template<typename T>
-void t2() {
-  int array[1] = { 0 };
-  T subscript = 0;
-  int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
-}
-
-void test() {
-  t1<char>(); // expected-note {{in instantiation of function template specialization 't1<char>' requested here}}
-  t2<char>(); // expected-note {{in instantiation of function template specialization 't2<char>' requested here}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-dangling-field.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-dangling-field.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-dangling-field.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wdangling-field -verify %s
-
-struct X {
-  X(int);
-};
-struct Y {
-  operator X*();
-  operator X&();
-};
-
-struct S {
-  int &x, *y;  // expected-note {{reference member declared here}} \
-               // expected-note {{pointer member declared here}}
-  S(int i)
-    : x(i),    // expected-warning {{binding reference member 'x' to stack allocated parameter 'i'}}
-      y(&i) {} // expected-warning {{initializing pointer member 'y' with the stack address of parameter 'i'}}
-  S(int &i) : x(i), y(&i) {} // no-warning: reference parameter
-  S(int *i) : x(*i), y(i) {} // no-warning: pointer parameter
-};
-
-struct S2 {
-  const X &x; // expected-note {{reference member declared here}}
-  S2(int i) : x(i) {} // expected-warning {{binding reference member 'x' to a temporary}}
-};
-
-struct S3 {
-  X &x1, *x2;
-  S3(Y y) : x1(y), x2(y) {} // no-warning: conversion operator
-};
-
-template <typename T> struct S4 {
-  T x; // expected-note {{reference member declared here}}
-  S4(int i) : x(i) {} // expected-warning {{binding reference member 'x' to stack allocated parameter 'i'}}
-};
-
-template struct S4<int>; // no warning from this instantiation
-template struct S4<int&>; // expected-note {{in instantiation}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-deprecated-header.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-deprecated-header.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-deprecated-header.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fdeprecated-macro -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Werror %s
-
-// expected-warning at +2 {{This file is deprecated.}}
-#ifdef __DEPRECATED
-#warning This file is deprecated.
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-empty-body.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-empty-body.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-empty-body.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,271 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-void a(int i);
-int b();
-int c();
-
-void test1(int x, int y) {
-  while(true) {
-    if (x); // expected-warning {{if statement has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-
-    int i;
-    // PR11329
-    for (i = 0; i < x; i++); { // expected-warning{{for loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-      a(i);
-      b();
-    }
-
-    for (i = 0; i < x; i++); // expected-warning{{for loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    {
-      a(i);
-    }
-
-    for (i = 0;
-         i < x;
-         i++); // expected-warning{{for loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    {
-      a(i);
-    }
-
-    int arr[3] = { 1, 2, 3 };
-    for (int j : arr); // expected-warning{{range-based for loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-      a(i);
-
-    for (int j :
-         arr); // expected-warning{{range-based for loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-      a(i);
-
-    while (b() == 0); // expected-warning{{while loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-      a(i);
-
-    while (b() == 0); { // expected-warning{{while loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-      a(i);
-    }
-
-    while (b() == 0); // expected-warning{{while loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    {
-      a(i);
-    }
-
-    while (b() == 0 ||
-           c() == 0); // expected-warning{{while loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    {
-      a(i);
-    }
-
-    do;          // expected-note{{to match this 'do'}}
-      b();       // expected-error{{expected 'while' in do/while loop}}
-    while (b()); // no-warning
-    c();
-
-    do;          // expected-note{{to match this 'do'}}
-      b();       // expected-error{{expected 'while' in do/while loop}}
-    while (b()); // expected-warning{{while loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-      c();
-
-    switch(x) // no-warning
-    {
-      switch(y); // expected-warning{{switch statement has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-      {
-        case 0:
-          a(10);
-          break;
-        default:
-          a(20);
-          break;
-      }
-    }
-  }
-}
-
-/// There should be no warning  when null statement is placed on its own line.
-void test2(int x, int y) {
-  if (x) // no-warning
-    ; // no-warning
-
-  int i;
-  for (i = 0; i < x; i++) // no-warning
-    ; // no-warning
-
-  for (i = 0;
-       i < x;
-       i++) // no-warning
-    ; // no-warning
-
-  int arr[3] = { 1, 2, 3 };
-  for (int j : arr) // no-warning
-    ; // no-warning
-
-  while (b() == 0) // no-warning
-    ; // no-warning
-
-  while (b() == 0 ||
-         c() == 0) // no-warning
-    ; // no-warning
-
-  switch(x)
-  {
-    switch(y) // no-warning
-      ; // no-warning
-  }
-
-  // Last `for' or `while' statement in compound statement shouldn't warn.
-  while(b() == 0); // no-warning
-}
-
-/// There should be no warning for a null statement resulting from an empty macro.
-#define EMPTY(a)
-void test3(int x, int y) {
-  if (x) EMPTY(x); // no-warning
-
-  int i;
-  for (i = 0; i < x; i++) EMPTY(i); // no-warning
-
-  for (i = 0;
-       i < x;
-       i++) EMPTY(i); // no-warning
-
-  int arr[3] = { 1, 2, 3 };
-  for (int j : arr) EMPTY(j); // no-warning
-
-  for (int j :
-       arr) EMPTY(j); // no-warning
-
-  while (b() == 0) EMPTY(i); // no-warning
-
-  while (b() == 0 ||
-         c() == 0) EMPTY(i); // no-warning
-
-  switch (x) {
-    switch (y)
-      EMPTY(i); // no-warning
-  }
-}
-
-void test4(int x)
-{
-  // Idiom used in some metaprogramming constructs.
-  switch (x) default:; // no-warning
-
-  // Frequent idiom used in macros.
-  do {} while (false); // no-warning
-}
-
-/// There should be no warning for a common for/while idiom when it is obvious
-/// from indentation that next statement wasn't meant to be a body.
-void test5(int x, int y) {
-  int i;
-  for (i = 0; i < x; i++); // expected-warning{{for loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    a(i);
-
-  for (i = 0; i < x; i++); // no-warning
-  a(i);
-
-  for (i = 0;
-       i < x;
-       i++); // expected-warning{{for loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    a(i);
-
-  for (i = 0;
-       i < x;
-       i++); // no-warning
-  a(i);
-
-  while (b() == 0); // expected-warning{{while loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    a(i);
-
-  while (b() == 0); // no-warning
-  a(i);
-
-  while (b() == 0 ||
-         c() == 0); // expected-warning{{while loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    a(i);
-
-  while (b() == 0 ||
-         c() == 0); // no-warning
-  a(i);
-}
-
-/// There should be no warning for a statement with a non-null body.
-void test6(int x, int y) {
-  if (x) {} // no-warning
-
-  if (x)
-    a(x); // no-warning
-
-  int i;
-  for (i = 0; i < x; i++) // no-warning
-    a(i); // no-warning
-
-  for (i = 0; i < x; i++) { // no-warning
-    a(i); // no-warning
-  }
-
-  for (i = 0;
-       i < x;
-       i++) // no-warning
-    a(i); // no-warning
-
-  int arr[3] = { 1, 2, 3 };
-  for (int j : arr) // no-warning
-    a(j);
-
-  for (int j : arr) {} // no-warning
-
-  while (b() == 0) // no-warning
-    a(i); // no-warning
-
-  while (b() == 0) {} // no-warning
-
-  switch(x) // no-warning
-  {
-    switch(y) // no-warning
-    {
-      case 0:
-        a(10);
-        break;
-      default:
-        a(20);
-        break;
-    }
-  }
-}
-
-void test_errors(int x) {
-  if (1)
-    aa; // expected-error{{use of undeclared identifier}}
-        // no empty body warning.
-
-  int i;
-  for (i = 0; i < x; i++)
-    bb; // expected-error{{use of undeclared identifier}}
-
-  int arr[3] = { 1, 2, 3 };
-  for (int j : arr)
-    cc; // expected-error{{use of undeclared identifier}}
-
-  while (b() == 0)
-    dd; // expected-error{{use of undeclared identifier}}
-}
-
-// Warnings for statements in templates shouldn't be duplicated for all
-// instantiations.
-template <typename T>
-void test_template(int x) {
-  if (x); // expected-warning{{if statement has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-
-  if (x)
-    EMPTY(x); // no-warning
-
-  int arr[3] = { 1, 2, 3 };
-  for (int j : arr); // expected-warning{{range-based for loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-
-  while (b() == 0); // expected-warning{{while loop has empty body}} expected-note{{put the semicolon on a separate line to silence this warning}}
-    a(x);
-}
-
-void test_template_inst(int x) {
-  test_template<int>(x);
-  test_template<double>(x);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-enum-compare.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-enum-compare.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-enum-compare.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,212 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-enum Foo { FooA, FooB, FooC };
-enum Bar { BarD, BarE, BarF };
-enum { AnonAA = 42, AnonAB = 43 };
-enum { AnonBA = 44, AnonBB = 45 };
-
-namespace name1 {
-  enum Foo {F1, F2, F3};
-  enum Baz {B1, B2, B3};
-}
-
-namespace name2 {
-  enum Baz {B1, B2, B3};
-}
-
-using name1::Baz;
-using name1::B1;
-using name2::B2;
-typedef name1::Foo oneFoo;
-typedef name1::Foo twoFoo;
-Foo getFoo();
-Bar getBar();
-
-void test () {
-  Foo x = FooA;
-  Bar y = BarD;
-  Baz z = name1::B3;
-  name1::Foo a;
-  oneFoo b;
-  twoFoo c;
-
-  while (x == FooA);
-  while (y == BarD);
-  while (a == name1::F1);
-  while (z == name1::B2);
-  while (a == b);
-  while (a == c);
-  while (b == c);
-  while (B1 == name1::B2);
-  while (B2 == name2::B1);
-  while (x == AnonAA); // expected-warning {{comparison of constant 'AnonAA' (42) with expression of type 'Foo' is always false}}
-  while (AnonBB == y); // expected-warning {{comparison of constant 'AnonBB' (45) with expression of type 'Bar' is always false}}
-  while (AnonAA == AnonAB);
-  while (AnonAB == AnonBA);
-  while (AnonBB == AnonAA);
-
-  while ((x) == FooA);
-  while ((y) == BarD);
-  while ((a) == name1::F1);
-  while (z == (name1::B2));
-  while (a == (b));
-  while (a == (c));
-  while ((b) == (c));
-  while ((B1) == (name1::B2));
-  while ((B2) == (name2::B1));
-
-  while (((x)) == FooA);
-  while ((y) == (BarD));
-  while ((a) == (name1::F1));
-  while (z == (name1::B2));
-  while ((a) == ((((b)))));
-  while (((a)) == (c));
-  while ((b) == (((c))));
-  while ((((((B1))))) == (((name1::B2))));
-  while (B2 == ((((((name2::B1)))))));
-
-  while (B1 == B2); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-  while (name1::B2 == name2::B3); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-  while (z == name2::B2); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-
-  while (((((B1)))) == B2); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-  while (name1::B2 == (name2::B3)); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-  while (z == ((((name2::B2))))); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-
-  while ((((B1))) == (((B2)))); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-  while ((name1::B2) == (((name2::B3)))); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-  while ((((z))) == (name2::B2)); // expected-warning  {{comparison of two values with different enumeration types ('name1::Baz' and 'name2::Baz')}}
-
-  while (x == a); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'name1::Foo')}}
-  while (x == b); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'oneFoo' (aka 'name1::Foo'))}}
-  while (x == c); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'twoFoo' (aka 'name1::Foo'))}}
-
-  while (x == y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x != y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x >= y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x <= y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x > y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x < y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-  while (FooB == y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB != y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB >= y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB <= y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB > y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB < y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-  while (FooB == BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB != BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB >= BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB <= BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB > BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB < BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-  while (x == BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x != BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x >= BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x <= BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x > BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x < BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-  while (getFoo() == y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() != y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() >= y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() <= y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() > y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() < y); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-  while (getFoo() == BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() != BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() >= BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() <= BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() > BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() < BarD); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-  while (getFoo() == getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() != getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() >= getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() <= getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() > getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (getFoo() < getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-  while (FooB == getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB != getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB >= getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB <= getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB > getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (FooB < getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-  while (x == getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x != getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x >= getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x <= getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x > getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-  while (x < getBar()); // expected-warning  {{comparison of two values with different enumeration types ('Foo' and 'Bar')}}
-
-
-
-  while (y == x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y != x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y >= x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y <= x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y > x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y < x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-  while (y == FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y != FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y >= FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y <= FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y > FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y < FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-  while (BarD == FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD != FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD >= FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD <= FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD > FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD <FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-  while (BarD == x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD != x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD >= x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD <= x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD < x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD > x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-  while (y == getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y != getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y >= getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y <= getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y > getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (y < getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-  while (BarD == getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD != getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD >= getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD <= getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD > getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (BarD < getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-  while (getBar() == getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() != getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() >= getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() <= getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() > getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() < getFoo()); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-  while (getBar() == FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() != FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() >= FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() <= FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() > FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() < FooB); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-  while (getBar() == x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() != x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() >= x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() <= x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() > x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-  while (getBar() < x); // expected-warning  {{comparison of two values with different enumeration types ('Bar' and 'Foo')}}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-everthing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-everthing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-everthing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -Weverything -fsyntax-only %s -verify
-
-// This previously crashed due to a bug in the CFG.  Exercising all
-// warnings helps check CFG construction.
-class PR12271 {
-public:
-  PR12271();
-  ~PR12271();
-};
-
-void testPR12271() { // expected-warning {{no previous prototype for function 'testPR12271'}}
-  PR12271 a[1][1]; // expected-warning {{unused variable 'a'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-exit-time-destructors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-exit-time-destructors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-exit-time-destructors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wexit-time-destructors %s -verify
-
-namespace test1 {
-  struct A { ~A(); };
-  A a; // expected-warning {{declaration requires an exit-time destructor}}
-  A b[10]; // expected-warning {{declaration requires an exit-time destructor}}
-  A c[10][10]; // expected-warning {{declaration requires an exit-time destructor}}
-
-  A &d = a;
-  A &e = b[5];
-  A &f = c[5][7];
-}
-
-namespace test2 {
-void f() {
-  struct A { ~A() { } };
-  
-  static A a; // expected-warning {{declaration requires an exit-time destructor}}
-  static A b[10]; // expected-warning {{declaration requires an exit-time destructor}}
-  static A c[10][10]; // expected-warning {{declaration requires an exit-time destructor}}
-
-  static A &d = a;
-  static A &e = b[5];
-  static A &f = c[5][7];
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-func-as-bool.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-func-as-bool.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-func-as-bool.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -x c++ -verify -fsyntax-only %s
-
-void f1();
-
-struct S {
-  static void f2();
-};
-
-extern void f3() __attribute__((weak_import));
-
-struct S2 {
-  static void f4() __attribute__((weak_import));
-};
-
-bool f5();
-bool f6(int);
-
-void bar() {
-  bool b;
-
-  b = f1; // expected-warning {{address of function 'f1' will always evaluate to 'true'}} \
-             expected-note {{prefix with the address-of operator to silence this warning}}
-  if (f1) {} // expected-warning {{address of function 'f1' will always evaluate to 'true'}} \
-                expected-note {{prefix with the address-of operator to silence this warning}}
-  b = S::f2; // expected-warning {{address of function 'S::f2' will always evaluate to 'true'}} \
-                expected-note {{prefix with the address-of operator to silence this warning}}
-  if (S::f2) {} // expected-warning {{address of function 'S::f2' will always evaluate to 'true'}} \
-                   expected-note {{prefix with the address-of operator to silence this warning}}
-  b = f5; // expected-warning {{address of function 'f5' will always evaluate to 'true'}} \
-             expected-note {{prefix with the address-of operator to silence this warning}} \
-             expected-note {{suffix with parentheses to turn this into a function call}}
-  b = f6; // expected-warning {{address of function 'f6' will always evaluate to 'true'}} \
-             expected-note {{prefix with the address-of operator to silence this warning}}
-
-  // implicit casts of weakly imported symbols are ok:
-  b = f3;
-  if (f3) {}
-  b = S2::f4;
-  if (S2::f4) {}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-func-not-needed.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-func-not-needed.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-func-not-needed.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
-
-namespace test1 {
-  static void f() {} // expected-warning {{is not needed and will not be emitted}}
-  static void f();
-  template <typename T>
-  void foo() {
-    f();
-  }
-}
-
-namespace test2 {
-  static void f() {}
-  static void f();
-  static void g() { f(); }
-  void h() { g(); }
-}
-
-namespace test3 {
-  static void f();
-  template<typename T>
-  static void g() {
-    f();
-  }
-  static void f() {
-  }
-  void h() {
-    g<int>();
-  }
-}
-
-namespace test4 {
-  static void f();
-  static void f();
-  template<typename T>
-  static void g() {
-    f();
-  }
-  static void f() {
-  }
-  void h() {
-    g<int>();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-global-constructors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-global-constructors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-global-constructors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wglobal-constructors %s -verify
-
-int opaque_int();
-
-namespace test0 {
-  // These should never require global constructors.
-  int a;
-  int b = 20;
-  float c = 5.0f;
-
-  // This global constructor is avoidable based on initialization order.
-  int d = b; // expected-warning {{global constructor}}
-
-  // These global constructors are unavoidable.
-  int e = opaque_int(); // expected-warning {{global constructor}}
-  int f = b; // expected-warning {{global constructor}}
-}
-
-namespace test1 {
-  struct A { int x; };
-  A a;
-  A b = A();
-  A c = { 10 };
-  A d = { opaque_int() }; // expected-warning {{global constructor}}
-  A e = A(A());
-  A f = A(a); // expected-warning {{global constructor}}
-  A g(a); // expected-warning {{global constructor}}
-  A h((A()));  // elided
-  A i((A(A()))); // elided
-}
-
-namespace test2 {
-  struct A { A(); };
-  A a; // expected-warning {{global constructor}}
-  A b[10]; // expected-warning {{global constructor}}
-  A c[10][10]; // expected-warning {{global constructor}}
-
-  A &d = a;
-  A &e = b[5];
-  A &f = c[5][7];
-}
-
-namespace test3 {
-  struct A { ~A(); };
-  A a; // expected-warning {{global destructor}}
-  A b[10]; // expected-warning {{global destructor}}
-  A c[10][10]; // expected-warning {{global destructor}}
-
-  A &d = a;
-  A &e = b[5];
-  A &f = c[5][7];
-}
-
-namespace test4 {
-  char a[] = "hello";
-  char b[6] = "hello";
-  char c[][6] = { "hello" };
-}
-
-namespace test5 {
-  struct A { A(); };
-
-  void f1() {
-    static A a;
-  }
-  void f2() {
-    static A& a = *new A;
-  }
-}
-
-namespace test6 {
-  struct A { ~A(); };
-
-  void f1() {
-    static A a;
-  }
-  void f2() {
-    static A& a = *new A;
-  }
-}
-
-namespace pr8095 {
-  struct Foo {
-    int x;
-    Foo(int x1) : x(x1) {}
-  };
-  void foo() {
-    static Foo a(0);
-  }
-
-  struct Bar {
-    ~Bar();
-  };
-  void bar() {
-    static Bar b;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-implicit-conversion-floating-point-to-bool.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-implicit-conversion-floating-point-to-bool.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-implicit-conversion-floating-point-to-bool.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-
-float foof(float x);
-double food(double x);
-void foo(bool b, float f);
-
-void bar() {
-
-  float c = 1.7;
-  bool b = c;
-
-  double e = 1.7;
-  b = e;
-
-  b = foof(4.0);
-
-  b = foof(c < 1); // expected-warning {{implicit conversion turns floating-point number into bool: 'float' to 'bool'}}
-
-  b = food(e < 2); // expected-warning {{implicit conversion turns floating-point number into bool: 'double' to 'bool'}}
-
-  foo(c, b);    // expected-warning {{implicit conversion turns floating-point number into bool: 'float' to 'bool'}}
-  foo(c, c);
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-large-by-value-copy.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-large-by-value-copy.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-large-by-value-copy.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wlarge-by-value-copy=100 %s
-
-// rdar://8548050
-namespace rdar8548050 {
-
-struct S100 {
-    char x[100];
-};
-
-struct S101 {
-    char x[101];
-};
-
-S100 f100(S100 s) { return s; }
-
-S101 f101(S101 s) { return s; } // expected-warning {{return value of 'f101' is a large (101 bytes) pass-by-value object}} \
-                                // expected-warning {{'s' is a large (101 bytes) pass-by-value argument}}
-
-typedef int Arr[200];
-void farr(Arr a) { }
-
-struct NonPOD {
-  char x[200];
-  virtual void m();
-};
-
-NonPOD fNonPOD(NonPOD s) { return s; }
-
-template <unsigned size>
-struct TS {
-    char x[size];
-};
-
-template <unsigned size>
-void tf(TS<size> ts) {} // expected-warning {{ts' is a large (300 bytes) pass-by-value argument}}
-
-void g() {
-    TS<300> ts;
-    tf<300>(ts); // expected-note {{instantiation}}
-}
-
-}
-
-template<typename T> class DependentPOD {
-  enum b { x };
-  b foo() { return x; }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-literal-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-literal-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-literal-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wliteral-conversion -verify %s
-
-void foo(int y);
-
-// Warn when a literal float or double is assigned or bound to an integer.
-void test0() {
-  // Float
-  int y0 = 1.2222F; // expected-warning {{implicit conversion from 'float' to 'int' changes value from 1.2222 to 1}}
-  int y1 = (1.2222F); // expected-warning {{implicit conversion from 'float' to 'int' changes value from 1.2222 to 1}}
-  int y2 = (((1.2222F))); // expected-warning {{implicit conversion from 'float' to 'int' changes value from 1.2222 to 1}}
-  int y3 = 12E-1F; // expected-warning {{implicit conversion from 'float' to 'int' changes value from 1.2 to 1}}
-  int y4 = 1.23E1F; // expected-warning {{implicit conversion from 'float' to 'int' changes value from 12.3 to 12}}
-  // Double
-  int y5 = 1.2222; // expected-warning {{implicit conversion from 'double' to 'int' changes value from 1.2222 to 1}}
-  int y6 = 12E-1; // expected-warning {{implicit conversion from 'double' to 'int' changes value from 1.2 to 1}}
-  int y7 = 1.23E1; // expected-warning {{implicit conversion from 'double' to 'int' changes value from 12.3 to 12}}
-  int y8 = (1.23E1); // expected-warning {{implicit conversion from 'double' to 'int' changes value from 12.3 to 12}}
-
-  // Test assignment to an existing variable.
-  y8 = 2.22F; // expected-warning {{implicit conversion from 'float' to 'int' changes value from 2.22 to 2}}
-
-  // Test direct initialization.
-  int y9(1.23F); // expected-warning {{implicit conversion from 'float' to 'int' changes value from 1.23 to 1}}
-
-  // Test passing a literal floating-point value to a function that takes an integer.
-  foo(1.2F); // expected-warning {{implicit conversion from 'float' to 'int' changes value from 1.2 to 1}}
-
-  int y10 = -1.2F;  // expected-warning {{implicit conversion from 'float' to 'int' changes value from 1.2 to 1}}
-
-  // -Wliteral-conversion does NOT catch const values.
-  // (-Wconversion DOES catch them.)
-  static const float sales_tax_rate = .095F;
-  int z = sales_tax_rate;
-  foo(sales_tax_rate);
-
-  // Expressions, such as those that indicate rounding-down, should NOT produce warnings.
-  int x = 24 * 0.5;
-  int y = (24*60*60) * 0.25;
-  int pennies = 123.45 * 100;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-loop-analysis.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-loop-analysis.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-loop-analysis.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,154 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wloop-analysis -verify %s
-
-struct S {
-  bool stop() { return false; }
-  bool keep_running;
-};
-
-void by_ref(int &value) { }
-void by_value(int value) { }
-void by_pointer(int *value) {}
-
-void test1() {
-  S s;
-  for (; !s.stop();) {}
-  for (; s.keep_running;) {}
-  for (int i; i < 1; ++i) {}
-  for (int i; i < 1; ) {}  // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (int i; i < 1; ) { ++i; }
-  for (int i; i < 1; ) { return; }
-  for (int i; i < 1; ) { break; }
-  for (int i; i < 1; ) { goto exit_loop; }
-exit_loop:
-  for (int i; i < 1; ) { by_ref(i); }
-  for (int i; i < 1; ) { by_value(i); }  // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (int i; i < 1; ) { by_pointer(&i); }
-
-  for (int i; i < 1; ++i)
-    for (int j; j < 1; ++j)
-      { }
-  for (int i; i < 1; ++i)
-    for (int j; j < 1; ++i)  // expected-warning {{variable 'j' used in loop condition not modified in loop body}}
-      { }
-  for (int i; i < 1; ++i)
-    for (int j; i < 1; ++j)  // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-      { }
-
-  for (int *i, *j; i < j; ++i) {}
-  for (int *i, *j; i < j;) {}  // expected-warning {{variables 'i' and 'j' used in loop condition not modified in loop body}}
-
-  // Dereferencing pointers is ignored for now.
-  for (int *i; *i; ) {}
-}
-
-void test2() {
-  int i, j, k;
-  int *ptr;
-
-  // Testing CastExpr
-  for (; i; ) {} // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i; ) { i = 5; }
-
-  // Testing BinaryOperator
-  for (; i < j; ) {} // expected-warning {{variables 'i' and 'j' used in loop condition not modified in loop body}}
-  for (; i < j; ) { i = 5; }
-  for (; i < j; ) { j = 5; }
-
-  // Testing IntegerLiteral
-  for (; i < 5; ) {} // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i < 5; ) { i = 5; }
-
-  // Testing FloatingLiteral
-  for (; i < 5.0; ) {} // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i < 5.0; ) { i = 5; }
-
-  // Testing CharacterLiteral
-  for (; i == 'a'; ) {} // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i == 'a'; ) { i = 5; }
-
-  // Testing CXXBoolLiteralExpr
-  for (; i == true; ) {} // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i == true; ) { i = 5; }
-
-  // Testing GNUNullExpr
-  for (; ptr == __null; ) {} // expected-warning {{variable 'ptr' used in loop condition not modified in loop body}}
-  for (; ptr == __null; ) { ptr = &i; }
-
-  // Testing UnaryOperator
-  for (; -i > 5; ) {} // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; -i > 5; ) { ++i; }
-
-  // Testing ImaginaryLiteral
-  for (; i != 3i; ) {} // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i != 3i; ) { ++i; }
-
-  // Testing ConditionalOperator
-  for (; i ? j : k; ) {} // expected-warning {{variables 'i', 'j', and 'k' used in loop condition not modified in loop body}}
-  for (; i ? j : k; ) { ++i; }
-  for (; i ? j : k; ) { ++j; }
-  for (; i ? j : k; ) { ++k; }
-  for (; i; ) { j = i ? i : i; }  // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i; ) { j = (i = 1) ? i : i; }
-  for (; i; ) { j = i ? i : ++i; }
-
-  // Testing BinaryConditionalOperator
-  for (; i ?: j; ) {} // expected-warning {{variables 'i' and 'j' used in loop condition not modified in loop body}}
-  for (; i ?: j; ) { ++i; }
-  for (; i ?: j; ) { ++j; }
-  for (; i; ) { j = i ?: i; }  // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-
-  // Testing ParenExpr
-  for (; (i); ) { }  // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; (i); ) { ++i; }
-
-  // Testing non-evaluated variables
-  for (; i < sizeof(j); ) { }  // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i < sizeof(j); ) { ++j; }  // expected-warning {{variable 'i' used in loop condition not modified in loop body}}
-  for (; i < sizeof(j); ) { ++i; }
-}
-
-// False positive and how to silence.
-void test3() {
-  int x;
-  int *ptr = &x;
-  for (;x<5;) { *ptr = 6; }  // expected-warning {{variable 'x' used in loop condition not modified in loop body}}
-
-  for (;x<5;) {
-    *ptr = 6;
-    (void)x;
-  }
-}
-
-// Check ordering and printing of variables.  Max variables is currently 4.
-void test4() {
-  int a, b, c, d, e, f;
-  for (; a;);  // expected-warning {{variable 'a' used in loop condition not modified in loop body}}
-  for (; a + b;);  // expected-warning {{variables 'a' and 'b' used in loop condition not modified in loop body}}
-  for (; a + b + c;);  // expected-warning {{variables 'a', 'b', and 'c' used in loop condition not modified in loop body}}
-  for (; a + b + c + d;);  // expected-warning {{variables 'a', 'b', 'c', and 'd' used in loop condition not modified in loop body}}
-  for (; a + b + c + d + e;);  // expected-warning {{variables used in loop condition not modified in loop body}}
-  for (; a + b + c + d + e + f;);  // expected-warning {{variables used in loop condition not modified in loop body}}
-  for (; a + c + d + b;);  // expected-warning {{variables 'a', 'c', 'd', and 'b' used in loop condition not modified in loop body}}
-  for (; d + c + b + a;);  // expected-warning {{variables 'd', 'c', 'b', and 'a' used in loop condition not modified in loop body}}
-}
-
-// Ensure that the warning doesn't fail when lots of variables are used
-// in the conditional.
-void test5() {
-  for (int a; a+a+a+a+a+a+a+a+a+a;); // \
-   // expected-warning {{variable 'a' used in loop condition not modified in loop body}}
-  for (int a; a+a+a+a+a+a+a+a+a+a+a;); // \
-   // expected-warning {{variable 'a' used in loop condition not modified in loop body}}
-  for (int a; a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a;);  // \
-   // expected-warning {{variable 'a' used in loop condition not modified in loop body}}
-  for (int a; a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a;);//\
-   // expected-warning {{variable 'a' used in loop condition not modified in loop body}}
-}
-
-// Ignore global variables and static variables.
-int x6;
-void test6() {
-  static int y;
-  for (;x6;);
-  for (;y;);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-memset-bad-sizeof.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-memset-bad-sizeof.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-memset-bad-sizeof.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,145 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-sizeof-array-argument %s
-//
-extern "C" void *memset(void *, int, unsigned);
-extern "C" void *memmove(void *s1, const void *s2, unsigned n);
-extern "C" void *memcpy(void *s1, const void *s2, unsigned n);
-extern "C" void *memcmp(void *s1, const void *s2, unsigned n);
-
-struct S {int a, b, c, d;};
-typedef S* PS;
-
-struct Foo {};
-typedef const Foo& CFooRef;
-typedef const Foo CFoo;
-typedef volatile Foo VFoo;
-typedef const volatile Foo CVFoo;
-
-typedef double Mat[4][4];
-
-template <class Dest, class Source>
-inline Dest bit_cast(const Source& source) {
-  Dest dest;
-  memcpy(&dest, &source, sizeof(dest));
-  return dest;
-}
-
-// http://www.lysator.liu.se/c/c-faq/c-2.html#2-6
-void f(Mat m, const Foo& const_foo, char *buffer) {
-  S s;
-  S* ps = &s;
-  PS ps2 = &s;
-  char arr[5];
-  char* parr[5];
-  Foo foo;
-  char* heap_buffer = new char[42];
-
-  /* Should warn */
-  memset(&s, 0, sizeof(&s));  // \
-      // expected-warning {{'memset' call operates on objects of type 'S' while the size is based on a different type 'S *'}} expected-note{{did you mean to remove the addressof in the argument to 'sizeof' (and multiply it by the number of elements)?}}
-  memset(ps, 0, sizeof(ps));  // \
-      // expected-warning {{'memset' call operates on objects of type 'S' while the size is based on a different type 'S *'}} expected-note{{did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?}}
-  memset(ps2, 0, sizeof(ps2));  // \
-      // expected-warning {{'memset' call operates on objects of type 'S' while the size is based on a different type 'PS' (aka 'S *')}} expected-note{{did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?}}
-  memset(ps2, 0, sizeof(typeof(ps2)));  // \
-      // expected-warning {{argument to 'sizeof' in 'memset' call is the same pointer type}}
-  memset(ps2, 0, sizeof(PS));  // \
-      // expected-warning {{argument to 'sizeof' in 'memset' call is the same pointer type}}
-  memset(heap_buffer, 0, sizeof(heap_buffer));  // \
-      // expected-warning {{'memset' call operates on objects of type 'char' while the size is based on a different type 'char *'}} expected-note{{did you mean to provide an explicit length?}}
-
-  memcpy(&s, 0, sizeof(&s));  // \
-      // expected-warning {{'memcpy' call operates on objects of type 'S' while the size is based on a different type 'S *'}} expected-note{{did you mean to remove the addressof in the argument to 'sizeof' (and multiply it by the number of elements)?}}
-  memcpy(0, &s, sizeof(&s));  // \
-      // expected-warning {{'memcpy' call operates on objects of type 'S' while the size is based on a different type 'S *'}} expected-note{{did you mean to remove the addressof in the argument to 'sizeof' (and multiply it by the number of elements)?}}
-
-  memmove(ps, 0, sizeof(ps));  // \
-      // expected-warning {{'memmove' call operates on objects of type 'S' while the size is based on a different type 'S *'}} expected-note{{did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?}}
-  memcmp(ps, 0, sizeof(ps));  // \
-      // expected-warning {{'memcmp' call operates on objects of type 'S' while the size is based on a different type 'S *'}} expected-note{{did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?}}
-
-  /* Shouldn't warn */
-  memset((void*)&s, 0, sizeof(&s));
-  memset(&s, 0, sizeof(s));
-  memset(&s, 0, sizeof(S));
-  memset(&s, 0, sizeof(const S));
-  memset(&s, 0, sizeof(volatile S));
-  memset(&s, 0, sizeof(volatile const S));
-  memset(&foo, 0, sizeof(CFoo));
-  memset(&foo, 0, sizeof(VFoo));
-  memset(&foo, 0, sizeof(CVFoo));
-  memset(ps, 0, sizeof(*ps));
-  memset(ps2, 0, sizeof(*ps2));
-  memset(ps2, 0, sizeof(typeof(*ps2)));
-  memset(arr, 0, sizeof(arr));
-  memset(parr, 0, sizeof(parr));
-
-  memcpy(&foo, &const_foo, sizeof(Foo));
-  memcpy((void*)&s, 0, sizeof(&s));
-  memcpy(0, (void*)&s, sizeof(&s));
-  char *cptr;
-  memcpy(&cptr, buffer, sizeof(cptr));
-  memcpy((char*)&cptr, buffer, sizeof(cptr));
-
-  CFooRef cfoo = foo;
-  memcpy(&foo, &cfoo, sizeof(Foo));
-
-  memcpy(0, &arr, sizeof(arr));
-  typedef char Buff[8];
-  memcpy(0, &arr, sizeof(Buff));
-
-  unsigned char* puc;
-  bit_cast<char*>(puc);
-
-  float* pf;
-  bit_cast<int*>(pf);
-
-  int iarr[14];
-  memset(&iarr[0], 0, sizeof iarr);
-
-  int* iparr[14];
-  memset(&iparr[0], 0, sizeof iparr);
-
-  memset(m, 0, sizeof(Mat));
-
-  // Copy to raw buffer shouldn't warn either
-  memcpy(&foo, &arr, sizeof(Foo));
-  memcpy(&arr, &foo, sizeof(Foo));
-
-  // Shouldn't warn, and shouldn't crash either.
-  memset(({
-    if (0) {}
-    while (0) {}
-    for (;;) {}
-    &s;
-  }), 0, sizeof(s));
-}
-
-namespace ns {
-void memset(void* s, char c, int n);
-void f(int* i) {
-  memset(i, 0, sizeof(i));
-}
-}
-
-extern "C" int strncmp(const char *s1, const char *s2, unsigned n);
-extern "C" int strncasecmp(const char *s1, const char *s2, unsigned n);
-extern "C" char *strncpy(char *det, const char *src, unsigned n);
-extern "C" char *strncat(char *dst, const char *src, unsigned n);
-extern "C" char *strndup(const  char *src, unsigned n);
-
-void strcpy_and_friends() {
-  const char* FOO = "<- should be an array instead";
-  const char* BAR = "<- this, too";
-
-  strncmp(FOO, BAR, sizeof(FOO)); // \
-      // expected-warning {{'strncmp' call operates on objects of type 'const char' while the size is based on a different type 'const char *'}} expected-note{{did you mean to provide an explicit length?}}
-  strncasecmp(FOO, BAR, sizeof(FOO));  // \
-      // expected-warning {{'strncasecmp' call operates on objects of type 'const char' while the size is based on a different type 'const char *'}} expected-note{{did you mean to provide an explicit length?}}
-
-  char buff[80];
-
-  strncpy(buff, BAR, sizeof(BAR)); // \
-      // expected-warning {{'strncpy' call operates on objects of type 'const char' while the size is based on a different type 'const char *'}} expected-note{{did you mean to provide an explicit length?}}
-  strndup(FOO, sizeof(FOO)); // \
-      // expected-warning {{'strndup' call operates on objects of type 'const char' while the size is based on a different type 'const char *'}} expected-note{{did you mean to provide an explicit length?}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-noreturn.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-noreturn.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-noreturn.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,125 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -Wmissing-noreturn -Wreturn-type
-void f() __attribute__((noreturn));
-
-template<typename T> void g(T) {
-  f();
-}
-
-template void g<int>(int);
-
-template<typename T> struct A {
-  void g() {
-    f();
-  }
-};
-
-template struct A<int>;
-
-struct B {
-  template<typename T> void g(T) {
-    f();
-  }
-};
-
-template void B::g<int>(int);
-
-// We don't want a warning here.
-struct X {
-  virtual void g() { f(); }
-};
-
-namespace test1 {
-  bool condition();
-
-  // We don't want a warning here.
-  void foo() {
-    while (condition()) {}
-  }
-}
-
-
-// <rdar://problem/7880658> - This test case previously had a false "missing return"
-// warning.
-struct R7880658 {
-  R7880658 &operator++();
-  bool operator==(const R7880658 &) const;
-  bool operator!=(const R7880658 &) const;
-};
-
-void f_R7880658(R7880658 f, R7880658 l) {  // no-warning
-  for (; f != l; ++f) {
-  }
-}
-
-namespace test2 {
-
-  bool g();
-  void *h() __attribute__((noreturn));
-  void *j();
-
-  struct A {
-    void *f;
-
-    A() : f(0) { }
-    A(int) : f(h()) { } // expected-warning {{function 'A' could be declared with attribute 'noreturn'}}
-    A(char) : f(j()) { }
-    A(bool b) : f(b ? h() : j()) { }
-  };
-}
-
-namespace test3 {
-  struct A {
-    ~A();
-  };
-
-  struct B {
-    ~B() { }
-
-    A a;
-  };
-
-  struct C : A { 
-    ~C() { }
-  };
-}
-
-// <rdar://problem/8875247> - Properly handle CFGs with destructors.
-struct rdar8875247 {
-  ~rdar8875247 ();
-};
-void rdar8875247_aux();
-
-int rdar8875247_test() {
-  rdar8875247 f;
-} // expected-warning{{control reaches end of non-void function}}
-
-struct rdar8875247_B {
-  rdar8875247_B();
-  ~rdar8875247_B();
-};
-
-rdar8875247_B test_rdar8875247_B() {
-  rdar8875247_B f;
-  return f;
-} // no-warning
-
-namespace PR10801 {
-  struct Foo {
-    void wibble() __attribute((__noreturn__));
-  };
-
-  struct Bar {
-    void wibble();
-  };
-
-  template <typename T> void thingy(T thing) {
-    thing.wibble();
-  }
-
-  void test() {
-    Foo f;
-    Bar b;
-    thingy(f);
-    thingy(b);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-prototypes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-prototypes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-prototypes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wmissing-prototypes %s
-
-void f() { } // expected-warning {{no previous prototype for function 'f'}}
-
-namespace NS {
-  void f() { } // expected-warning {{no previous prototype for function 'f'}}
-}
-
-namespace {
-  // Don't warn about functions in anonymous namespaces.
-  void f() { }
-}
-
-struct A {
-  // Don't warn about member functions.
-  void f() { }
-};
-
-// Don't warn about inline functions.
-inline void g() { }
-
-// Don't warn about function templates.
-template<typename> void h() { }
-
-// Don't warn when instantiating function templates.
-template void h<int>();
-
-// PR9519: don't warn about friend functions.
-class I {
-  friend void I_friend() {}
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-variable-declarations.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-variable-declarations.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-missing-variable-declarations.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang -Wmissing-variable-declarations -fsyntax-only -Xclang -verify %s
-
-// Variable declarations that should trigger a warning.
-int vbad1; // expected-warning{{no previous extern declaration for non-static variable 'vbad1'}}
-int vbad2 = 10; // expected-warning{{no previous extern declaration for non-static variable 'vbad2'}}
-
-namespace x {
-  int vbad3; // expected-warning{{no previous extern declaration for non-static variable 'vbad3'}}
-}
-
-// Variable declarations that should not trigger a warning.
-static int vgood1;
-extern int vgood2;
-int vgood2;
-static struct {
-  int mgood1;
-} vgood3;
-
-// Functions should never trigger a warning.
-void fgood1(void);
-void fgood2(void) {
-  int lgood1;
-  static int lgood2;
-}
-static void fgood3(void) {
-  int lgood3;
-  static int lgood4;
-}
-
-// Structures, namespaces and classes should be unaffected.
-struct sgood1 {
-  int mgood2;
-};
-struct {
-  int mgood3;
-} sgood2;
-class CGood1 {
-  static int MGood1;
-};
-int CGood1::MGood1;
-namespace {
-  int mgood4;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -Wover-aligned -verify %s
-// expected-no-diagnostics
-
-// This test verifies that we don't warn when the global operator new is
-// overridden. That's why we can't merge this with the other test file.
-
-void* operator new(unsigned long);
-void* operator new[](unsigned long);
-
-struct Test {
-  template <typename T>
-  struct SeparateCacheLines {
-    T data;
-  } __attribute__((aligned(256)));
-
-  SeparateCacheLines<int> high_contention_data[10];
-};
-
-void helper() {
-  Test t;
-  new Test;
-  new Test[10];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned-3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned-3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned-3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -Wover-aligned %s -isystem %S/Inputs -verify
-
-// This test ensures that we still get the warning even if we #include <new>
-// where the header here simulates <new>.
-#include <warn-new-overaligned-3.h>
-
-namespace test1 {
-struct Test {
-  template <typename T>
-  struct SeparateCacheLines {
-    T data;
-  } __attribute__((aligned(256)));
-
-  SeparateCacheLines<int> high_contention_data[10];
-};
-
-void helper() {
-  Test t;
-  new Test;  // expected-warning {{type 'test1::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
-  new Test[10];  // expected-warning {{type 'test1::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
-}
-}
-
-namespace test2 {
-struct helper { int i __attribute__((aligned(256))); };
-
-struct Placement {
-  Placement() {
-    new (d) helper();
-  }
-  helper *d;
-};
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-new-overaligned.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -Wover-aligned -verify %s
-
-namespace test1 {
-struct Test {
-  template <typename T>
-  struct SeparateCacheLines {
-    T data;
-  } __attribute__((aligned(256)));
-
-  SeparateCacheLines<int> high_contention_data[10];
-};
-
-void helper() {
-  Test t;
-  new Test;  // expected-warning {{type 'test1::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
-  new Test[10];  // expected-warning {{type 'test1::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
-}
-}
-
-namespace test2 {
-class Test {
-  typedef int __attribute__((aligned(256))) aligned_int;
-  aligned_int high_contention_data[10];
-};
-
-void helper() {
-  Test t;
-  new Test;  // expected-warning {{type 'test2::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
-  new Test[10];  // expected-warning {{type 'test2::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
-}
-}
-
-namespace test3 {
-struct Test {
-  template <typename T>
-  struct SeparateCacheLines {
-    T data;
-  } __attribute__((aligned(256)));
-
-  void* operator new(unsigned long) {
-    return 0;
-  }
-
-  SeparateCacheLines<int> high_contention_data[10];
-};
-
-void helper() {
-  Test t;
-  new Test;
-  new Test[10];  // expected-warning {{type 'test3::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
-}
-}
-
-namespace test4 {
-struct Test {
-  template <typename T>
-  struct SeparateCacheLines {
-    T data;
-  } __attribute__((aligned(256)));
-
-  void* operator new[](unsigned long) {
-    return 0;
-  }
-
-  SeparateCacheLines<int> high_contention_data[10];
-};
-
-void helper() {
-  Test t;
-  new Test;  // expected-warning {{type 'test4::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
-  new Test[10];
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-overloaded-virtual.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-overloaded-virtual.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-overloaded-virtual.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,140 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Woverloaded-virtual -verify %s
-
-struct B1 {
-  virtual void foo(int); // expected-note {{declared here}}
-  virtual void foo(); // expected-note {{declared here}}
-};
-
-struct S1 : public B1 {
-  void foo(float); // expected-warning {{hides overloaded virtual functions}}
-};
-
-struct S2 : public B1 {
-  void foo(); // expected-note {{declared here}}
-};
-
-struct B2 {
-  virtual void foo(void*); // expected-note {{declared here}}
-};
-
-struct MS1 : public S2, public B2 {
-   virtual void foo(int); // expected-warning {{hides overloaded virtual functions}}
-};
-
-struct B3 {
-  virtual void foo(int);
-  virtual void foo();
-};
-
-struct S3 : public B3 {
-  using B3::foo;
-  void foo(float);
-};
-
-struct B4 {
-  virtual void foo();
-};
-
-struct S4 : public B4 {
-  void foo(float);
-  void foo();
-};
-
-namespace PR9182 {
-struct Base {
-  virtual void foo(int);
-};
-
-void Base::foo(int) { }
-
-struct Derived : public Base {
-  virtual void foo(int);   
-  void foo(int, int);   
-};
-}
-
-namespace PR9396 {
-class A {
-public:
-  virtual void f(int) {}
-};
-
-class B : public A {
-public:
-  static void f() {}
-};
-}
-
-namespace ThreeLayer {
-struct A {
-  virtual void f();
-};
-
-struct B: A {
-  void f();
-  void f(int);
-};
-
-struct C: B {
-  void f(int);
-  using A::f;
-};
-}
-
-namespace UnbalancedVirtual {
-struct Base {
-  virtual void func();
-};
-
-struct Derived1: virtual Base {
-  virtual void func();
-};
-
-struct Derived2: virtual Base {
-};
-
-struct MostDerived: Derived1, Derived2 {
-  void func(int);
-  void func();
-};
-}
-
-namespace UnbalancedVirtual2 {
-struct Base {
-  virtual void func();
-};
-
-struct Derived1: virtual Base {
-  virtual void func();
-};
-
-struct Derived2: virtual Base {
-};
-
-struct Derived3: Derived1 {
-  virtual void func();
-};
-
-struct MostDerived: Derived3, Derived2 {
-  void func(int);
-  void func();
-};
-}
-
-namespace {
-  class A {
-    virtual int foo(bool) const;
-    // expected-note at -1{{type mismatch at 1st parameter ('bool' vs 'int')}}
-    virtual int foo(int, int) const;
-    // expected-note at -1{{different number of parameters (2 vs 1)}}
-    virtual int foo(int*) const;
-    // expected-note at -1{{type mismatch at 1st parameter ('int *' vs 'int')}}
-    virtual int foo(int) volatile;
-    // expected-note at -1{{different qualifiers (volatile vs const)}}
-  };
-
-  class B : public A {
-    virtual int foo(int) const;
-    // expected-warning at -1{{hides overloaded virtual functions}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-pure-virtual-call-from-ctor-dtor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-pure-virtual-call-from-ctor-dtor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-pure-virtual-call-from-ctor-dtor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-struct A {
-  A() { f(); } // expected-warning {{call to pure virtual member function 'f'; overrides of 'f' in subclasses are not available in the constructor of 'A'}}
-  ~A() { f(); } // expected-warning {{call to pure virtual member function 'f'; overrides of 'f' in subclasses are not available in the destructor of 'A'}}
-
-  virtual void f() = 0; // expected-note 2 {{'f' declared here}}
-};
-
-// Don't warn (or note) when calling the function on a pointer. (PR10195)
-struct B {
-  A *a;
-  B() { a->f(); };
-  ~B() { a->f(); };
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-reinterpret-base-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-reinterpret-base-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-reinterpret-base-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,323 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -Wreinterpret-base-class -Wno-unused-volatile-lvalue %s
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fdiagnostics-parseable-fixits -Wreinterpret-base-class -Wno-unused-volatile-lvalue %s 2>&1 | FileCheck %s
-
-// PR 13824
-class A {
-};
-class DA : public A {
-};
-class DDA : public DA {
-};
-class DAo : protected A {
-};
-class DAi : private A {
-};
-
-class DVA : public virtual A {
-};
-class DDVA : public virtual DA {
-};
-class DMA : public virtual A, public virtual DA {
-};
-
-class B;
-
-struct C {
-  // Do not fail on incompletely-defined classes.
-  decltype(reinterpret_cast<C *>(0)) foo;
-  decltype(reinterpret_cast<A *>((C *) 0)) bar;
-  decltype(reinterpret_cast<C *>((A *) 0)) baz;
-};
-
-void reinterpret_not_defined_class(B *b, C *c) {
-  // Should not fail if class has no definition.
-  (void)*reinterpret_cast<C *>(b);
-  (void)*reinterpret_cast<B *>(c);
-
-  (void)reinterpret_cast<C &>(*b);
-  (void)reinterpret_cast<B &>(*c);
-}
-
-// Do not fail on erroneous classes with fields of incompletely-defined types.
-// Base class is malformed.
-namespace BaseMalformed {
-  struct A; // expected-note {{forward declaration of 'BaseMalformed::A'}}
-  struct B {
-    A a; // expected-error {{field has incomplete type 'BaseMalformed::A'}}
-  };
-  struct C : public B {} c;
-  B *b = reinterpret_cast<B *>(&c);
-} // end anonymous namespace
-
-// Child class is malformed.
-namespace ChildMalformed {
-  struct A; // expected-note {{forward declaration of 'ChildMalformed::A'}}
-  struct B {};
-  struct C : public B {
-    A a; // expected-error {{field has incomplete type 'ChildMalformed::A'}}
-  } c;
-  B *b = reinterpret_cast<B *>(&c);
-} // end anonymous namespace
-
-// Base class outside upcast base-chain is malformed.
-namespace BaseBaseMalformed {
-  struct A; // expected-note {{forward declaration of 'BaseBaseMalformed::A'}}
-  struct Y {};
-  struct X { A a; }; // expected-error {{field has incomplete type 'BaseBaseMalformed::A'}}
-  struct B : Y, X {};
-  struct C : B {} c;
-  B *p = reinterpret_cast<B*>(&c);
-}
-
-namespace InheritanceMalformed {
-  struct A; // expected-note {{forward declaration of 'InheritanceMalformed::A'}}
-  struct B : A {}; // expected-error {{base class has incomplete type}}
-  struct C : B {} c;
-  B *p = reinterpret_cast<B*>(&c);
-}
-
-// Virtual base class outside upcast base-chain is malformed.
-namespace VBaseMalformed{
-  struct A; // expected-note {{forward declaration of 'VBaseMalformed::A'}}
-  struct X { A a; };  // expected-error {{field has incomplete type 'VBaseMalformed::A'}}
-  struct B : public virtual X {};
-  struct C : B {} c;
-  B *p = reinterpret_cast<B*>(&c);
-}
-
-void reinterpret_not_updowncast(A *pa, const A *pca, A &a, const A &ca) {
-  (void)*reinterpret_cast<C *>(pa);
-  (void)*reinterpret_cast<const C *>(pa);
-  (void)*reinterpret_cast<volatile C *>(pa);
-  (void)*reinterpret_cast<const volatile C *>(pa);
-
-  (void)*reinterpret_cast<const C *>(pca);
-  (void)*reinterpret_cast<const volatile C *>(pca);
-
-  (void)reinterpret_cast<C &>(a);
-  (void)reinterpret_cast<const C &>(a);
-  (void)reinterpret_cast<volatile C &>(a);
-  (void)reinterpret_cast<const volatile C &>(a);
-
-  (void)reinterpret_cast<const C &>(ca);
-  (void)reinterpret_cast<const volatile C &>(ca);
-}
-
-void reinterpret_pointer_downcast(A *a, const A *ca) {
-  (void)*reinterpret_cast<DA *>(a);
-  (void)*reinterpret_cast<const DA *>(a);
-  (void)*reinterpret_cast<volatile DA *>(a);
-  (void)*reinterpret_cast<const volatile DA *>(a);
-
-  (void)*reinterpret_cast<const DA *>(ca);
-  (void)*reinterpret_cast<const volatile DA *>(ca);
-
-  (void)*reinterpret_cast<DDA *>(a);
-  (void)*reinterpret_cast<DAo *>(a);
-  (void)*reinterpret_cast<DAi *>(a);
-  // expected-warning at +2 {{'reinterpret_cast' to class 'DVA *' from its virtual base 'A *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)*reinterpret_cast<DVA *>(a);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:26}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' to class 'DDVA *' from its virtual base 'A *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)*reinterpret_cast<DDVA *>(a);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:26}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' to class 'DMA *' from its virtual base 'A *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)*reinterpret_cast<DMA *>(a);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:26}:"static_cast"
-}
-
-void reinterpret_reference_downcast(A a, A &ra, const A &cra) {
-  (void)reinterpret_cast<DA &>(a);
-  (void)reinterpret_cast<const DA &>(a);
-  (void)reinterpret_cast<volatile DA &>(a);
-  (void)reinterpret_cast<const volatile DA &>(a);
-
-  (void)reinterpret_cast<DA &>(ra);
-  (void)reinterpret_cast<const DA &>(ra);
-  (void)reinterpret_cast<volatile DA &>(ra);
-  (void)reinterpret_cast<const volatile DA &>(ra);
-
-  (void)reinterpret_cast<const DA &>(cra);
-  (void)reinterpret_cast<const volatile DA &>(cra);
-
-  (void)reinterpret_cast<DDA &>(a);
-  (void)reinterpret_cast<DAo &>(a);
-  (void)reinterpret_cast<DAi &>(a);
-  // expected-warning at +2 {{'reinterpret_cast' to class 'DVA &' from its virtual base 'A' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)reinterpret_cast<DVA &>(a);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' to class 'DDVA &' from its virtual base 'A' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)reinterpret_cast<DDVA &>(a);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' to class 'DMA &' from its virtual base 'A' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)reinterpret_cast<DMA &>(a);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-}
-
-void reinterpret_pointer_upcast(DA *da, const DA *cda, DDA *dda, DAo *dao,
-                                DAi *dai, DVA *dva, DDVA *ddva, DMA *dma) {
-  (void)*reinterpret_cast<A *>(da);
-  (void)*reinterpret_cast<const A *>(da);
-  (void)*reinterpret_cast<volatile A *>(da);
-  (void)*reinterpret_cast<const volatile A *>(da);
-
-  (void)*reinterpret_cast<const A *>(cda);
-  (void)*reinterpret_cast<const volatile A *>(cda);
-
-  (void)*reinterpret_cast<A *>(dda);
-  (void)*reinterpret_cast<DA *>(dda);
-  (void)*reinterpret_cast<A *>(dao);
-  (void)*reinterpret_cast<A *>(dai);
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DVA *' to its virtual base 'A *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)*reinterpret_cast<A *>(dva);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:26}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DDVA *' to its virtual base 'A *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)*reinterpret_cast<A *>(ddva);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:26}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DDVA *' to its virtual base 'DA *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)*reinterpret_cast<DA *>(ddva);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:26}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DMA *' to its virtual base 'A *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)*reinterpret_cast<A *>(dma);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:26}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DMA *' to its virtual base 'DA *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)*reinterpret_cast<DA *>(dma);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:10-[[@LINE-1]]:26}:"static_cast"
-}
-
-void reinterpret_reference_upcast(DA &da, const DA &cda, DDA &dda, DAo &dao,
-                                  DAi &dai, DVA &dva, DDVA &ddva, DMA &dma) {
-  (void)reinterpret_cast<A &>(da);
-  (void)reinterpret_cast<const A &>(da);
-  (void)reinterpret_cast<volatile A &>(da);
-  (void)reinterpret_cast<const volatile A &>(da);
-
-  (void)reinterpret_cast<const A &>(cda);
-  (void)reinterpret_cast<const volatile A &>(cda);
-
-  (void)reinterpret_cast<A &>(dda);
-  (void)reinterpret_cast<DA &>(dda);
-  (void)reinterpret_cast<A &>(dao);
-  (void)reinterpret_cast<A &>(dai);
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DVA' to its virtual base 'A &' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<A &>(dva);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DDVA' to its virtual base 'A &' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<A &>(ddva);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DDVA' to its virtual base 'DA &' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<DA &>(ddva);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DMA' to its virtual base 'A &' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<A &>(dma);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'DMA' to its virtual base 'DA &' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<DA &>(dma);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-}
-
-struct E {
-  int x;
-};
-
-class F : public E {
-  virtual int foo() { return x; }
-};
-
-class G : public F {
-};
-
-class H : public E, public A {
-};
-
-class I : virtual public F {
-};
-
-typedef const F * K;
-typedef volatile K L;
-
-void different_subobject_downcast(E *e, F *f, A *a) {
-  // expected-warning at +2 {{'reinterpret_cast' to class 'F *' from its base at non-zero offset 'E *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)reinterpret_cast<F *>(e);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' to class 'G *' from its base at non-zero offset 'E *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)reinterpret_cast<G *>(e);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  (void)reinterpret_cast<H *>(e);
-  // expected-warning at +2 {{'reinterpret_cast' to class 'I *' from its virtual base 'E *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)reinterpret_cast<I *>(e);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-
-  (void)reinterpret_cast<G *>(f);
-  // expected-warning at +2 {{'reinterpret_cast' to class 'I *' from its virtual base 'F *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)reinterpret_cast<I *>(f);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  (void)reinterpret_cast<H *>(a);
-
-  // expected-warning at +2 {{'reinterpret_cast' to class 'L' (aka 'const F *volatile') from its base at non-zero offset 'E *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while downcasting}}
-  (void)reinterpret_cast<L>(e);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-}
-
-void different_subobject_upcast(F *f, G *g, H *h, I *i) {
-  // expected-warning at +2 {{'reinterpret_cast' from class 'F *' to its base at non-zero offset 'E *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<E *>(f);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  (void)reinterpret_cast<F *>(g);
-  // expected-warning at +2 {{'reinterpret_cast' from class 'G *' to its base at non-zero offset 'E *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<E *>(g);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  (void)reinterpret_cast<E *>(h);
-  (void)reinterpret_cast<A *>(h);
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'I *' to its virtual base 'F *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<F *>(i);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-
-  // expected-warning at +2 {{'reinterpret_cast' from class 'I *' to its virtual base 'E *' behaves differently from 'static_cast'}}
-  // expected-note at +1 {{use 'static_cast' to adjust the pointer correctly while upcasting}}
-  (void)reinterpret_cast<E *>(i);
-  // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:9-[[@LINE-1]]:25}:"static_cast"
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-reorder-ctor-initialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,143 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wreorder -verify %s
-
-struct BB {};
-
-struct BB1 {};
-
-class complex : public BB, BB1 { 
-public: 
-  complex()
-    : s2(1), // expected-warning {{field 's2' will be initialized after field 's1'}}
-      s1(1),
-      s3(3), // expected-warning {{field 's3' will be initialized after base 'BB1'}} 
-      BB1(), // expected-warning {{base class 'BB1' will be initialized after base 'BB'}}
-      BB()
-  {}
-  int s1;
-  int s2;
-  int s3;
-}; 
-
-
-// testing virtual bases.
-
-
-struct V { 
-  V();
-};
-
-struct A : public virtual V { 
-  A(); 
-};
-
-struct B : public virtual V {
-  B(); 
-};
-
-struct Diamond : public A, public B {
-  Diamond() : A(), B() {}
-};
-
-
-struct C : public A, public B, private virtual V { 
-  C() { }
-};
-
-
-struct D : public A, public B { 
-  D()  : A(), V() {   } // expected-warning {{base class 'A' will be initialized after base 'V'}}
-};
-
-
-struct E : public A, public B, private virtual V { 
-  E()  : A(), V() {  } // expected-warning {{base class 'A' will be initialized after base 'V'}}
-};
-
-
-struct A1  { 
-  A1(); 
-};
-
-struct B1 {
-  B1();
-};
-
-struct F : public A1, public B1, private virtual V { 
-  F()  : A1(), V() {  } // expected-warning {{base class 'A1' will be initialized after base 'V'}}
-};
-
-struct X : public virtual A, virtual V, public virtual B {
-  X(): A(), V(), B() {} // expected-warning {{base class 'A' will be initialized after base 'V'}}
-};
-
-class Anon {
-  int c; union {int a,b;}; int d;
-  Anon() : c(10), b(1), d(2) {}
-};
-class Anon2 {
-  int c; union {int a,b;}; int d;
-  Anon2() : c(2),
-            d(10), // expected-warning {{field 'd' will be initialized after field 'b'}}
-            b(1) {}
-};
-class Anon3 {
-  union {int a,b;};
-  Anon3() : b(1) {}
-};
-
-namespace T1 {
-
-struct S1 { };
-struct S2: virtual S1 { };
-struct S3 { };
-
-struct S4: virtual S3, S2 {
-  S4() : S2(), // expected-warning {{base class 'T1::S2' will be initialized after base 'T1::S3'}}
-    S3() { };
-};
-}
-
-namespace test2 {
-  struct Foo { Foo(); };
-  class A {
-    template <class T> A(T *t) :
-      y(),  // expected-warning {{field 'y' will be initialized after field 'x'}}
-      x()
-    {}
-    Foo x;
-    Foo y;
-  };
-}
-
-// PR6575: this should not crash
-namespace test3 {
-  struct MyClass {
-    MyClass() : m_int(0) {}
-    union {
-      struct {
-        int m_int;
-      };
-    };
-  };
-}
-
-namespace PR7179 {
-  struct X
-  {
-    struct Y
-    {
-      template <class T> Y(T x) : X(x) { }
-    };
-  };
-}
-
-namespace test3 {
-  struct foo {
-    struct {
-      int a;
-      int b;
-    };
-    foo() : b(), a() { // expected-warning {{field 'b' will be initialized after field 'a'}}
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-self-assign.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-self-assign.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-self-assign.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wself-assign -verify %s
-
-void f() {
-  int a = 42, b = 42;
-  a = a; // expected-warning{{explicitly assigning}}
-  b = b; // expected-warning{{explicitly assigning}}
-  a = b;
-  b = a = b;
-  a = a = a; // expected-warning{{explicitly assigning}}
-  a = b = b = a;
-}
-
-// Dummy type.
-struct S {};
-
-void false_positives() {
-#define OP =
-#define LHS a
-#define RHS a
-  int a = 42;
-  // These shouldn't warn due to the use of the preprocessor.
-  a OP a;
-  LHS = a;
-  a = RHS;
-  LHS OP RHS;
-#undef OP
-#undef LHS
-#undef RHS
-
-  S s;
-  s = s; // Not a builtin assignment operator, no warning.
-
-  // Volatile stores aren't side-effect free.
-  volatile int vol_a;
-  vol_a = vol_a;
-  volatile int &vol_a_ref = vol_a;
-  vol_a_ref = vol_a_ref;
-}
-
-template <typename T> void g() {
-  T a;
-  a = a; // May or may not be a builtin assignment operator, no warning.
-}
-void instantiate() {
-  g<int>();
-  g<S>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-self-comparisons.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-self-comparisons.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-self-comparisons.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-void f(int (&array1)[2], int (&array2)[2]) {
-  if (array1 == array2) { } // no warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-shadow.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-shadow.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-shadow.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,83 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wshadow %s
-
-namespace {
-  int i; // expected-note {{previous declaration is here}}
-}
-
-namespace one {
-namespace two {
-  int j; // expected-note {{previous declaration is here}}
-}
-}
-
-namespace xx {
-  int m;
-}
-namespace yy {
-  int m;
-}
-
-using namespace one::two;
-using namespace xx;
-using namespace yy;
-
-void foo() {
-  int i; // expected-warning {{declaration shadows a variable in namespace '<anonymous>'}}
-  int j; // expected-warning {{declaration shadows a variable in namespace 'one::two'}}
-  int m;
-}
-
-class A {
-  static int data; // expected-note {{previous declaration}}
-  int field; // expected-note {{previous declaration}}
-
-  void test() {
-    char *field; // expected-warning {{declaration shadows a field of 'A'}}
-    char *data; // expected-warning {{declaration shadows a static data member of 'A'}}
-  }
-};
-
-// TODO: this should warn, <rdar://problem/5018057>
-class B : A {
-  int data;
-  static int field;
-};
-
-// rdar://8900456
-namespace rdar8900456 {
-struct Foo {
-  static void Baz();
-private:
-  int Bar;
-};
-
-void Foo::Baz() {
-  double Bar = 12; // Don't warn.
-}
-}
-
-// http://llvm.org/PR9160
-namespace PR9160 {
-struct V {
-  V(int);
-};
-struct S {
-  V v;
-  static void m() {
-    if (1) {
-      V v(0);
-    }
-  }
-};
-}
-
-extern int bob; // expected-note {{previous declaration is here}}
-
-// rdar://8883302
-void rdar8883302() {
-  extern int bob; // don't warn for shadowing.
-}
-
-void test8() {
-  int bob; // expected-warning {{declaration shadows a variable in the global namespace}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-sign-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-sign-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-sign-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wsign-conversion %s
-
-// NOTE: When a 'enumeral mismatch' warning is implemented then expect several
-// of the following cases to be impacted.
-
-// namespace for anonymous enums tests
-namespace test1 {
-  enum { A };
-  enum { B = -1 };
-
-  template <typename T> struct Foo {
-    enum { C };
-    enum { D = ~0U };
-  };
-
-  enum { E = ~0U };
-
-  void doit_anonymous( int i ) {
-    int a1 = 1 ? i : A;
-    int a2 = 1 ? A : i;
-
-    int b1 = 1 ? i : B;
-    int b2 = 1 ? B : i;
-
-    int c1 = 1 ? i : Foo<bool>::C;
-    int c2 = 1 ? Foo<bool>::C : i;
-
-    int d1a = 1 ? i : Foo<bool>::D; // expected-warning {{test1::Foo<bool>::<anonymous enum at }}
-    int d1b = 1 ? i : Foo<bool>::D; // expected-warning {{warn-sign-conversion.cpp:13:5>' to 'int'}}
-    int d2a = 1 ? Foo<bool>::D : i; // expected-warning {{operand of ? changes signedness: 'test1::Foo<bool>::<anonymous enum at }}
-    int d2b = 1 ? Foo<bool>::D : i; // expected-warning {{warn-sign-conversion.cpp:13:5>' to 'int'}}
-    int d3a = 1 ? B : Foo<bool>::D; // expected-warning {{operand of ? changes signedness: 'test1::Foo<bool>::<anonymous enum at }}
-    int d3b = 1 ? B : Foo<bool>::D; // expected-warning {{warn-sign-conversion.cpp:13:5>' to 'int'}}
-    int d4a = 1 ? Foo<bool>::D : B; // expected-warning {{operand of ? changes signedness: 'test1::Foo<bool>::<anonymous enum at }}
-    int d4b = 1 ? Foo<bool>::D : B; // expected-warning {{warn-sign-conversion.cpp:13:5>' to 'int'}}
-
-    int e1a = 1 ? i : E; // expected-warning {{operand of ? changes signedness: 'test1::<anonymous enum at }}
-    int e1b = 1 ? i : E; // expected-warning {{warn-sign-conversion.cpp:16:3>' to 'int'}}
-    int e2a = 1 ? E : i; // expected-warning {{operand of ? changes signedness: 'test1::<anonymous enum at }}
-    int e2b = 1 ? E : i; // expected-warning {{warn-sign-conversion.cpp:16:3>' to 'int'}}
-    int e3a = 1 ? E : B; // expected-warning {{operand of ? changes signedness: 'test1::<anonymous enum at }}
-    int e3b = 1 ? E : B; // expected-warning {{warn-sign-conversion.cpp:16:3>' to 'int'}}
-    int e4a = 1 ? B : E; // expected-warning {{operand of ? changes signedness: 'test1::<anonymous enum at }}
-    int e4b = 1 ? B : E; // expected-warning {{warn-sign-conversion.cpp:16:3>' to 'int'}}
-  }
-}
-
-// namespace for named enums tests
-namespace test2 {
-  enum Named1 { A };
-  enum Named2 { B = -1 };
-
-  template <typename T> struct Foo {
-    enum Named3 { C };
-    enum Named4 { D = ~0U };
-  };
-
-  enum Named5 { E = ~0U };
-
-  void doit_anonymous( int i ) {
-    int a1 = 1 ? i : A;
-    int a2 = 1 ? A : i;
-
-    int b1 = 1 ? i : B;
-    int b2 = 1 ? B : i;
-
-    int c1 = 1 ? i : Foo<bool>::C;
-    int c2 = 1 ? Foo<bool>::C : i;
-
-    int d1 = 1 ? i : Foo<bool>::D; // expected-warning {{operand of ? changes signedness: 'test2::Foo<bool>::Named4' to 'int'}}
-    int d2 = 1 ? Foo<bool>::D : i; // expected-warning {{operand of ? changes signedness: 'test2::Foo<bool>::Named4' to 'int'}}
-    int d3 = 1 ? B : Foo<bool>::D; // expected-warning {{operand of ? changes signedness: 'test2::Foo<bool>::Named4' to 'int'}}
-    int d4 = 1 ? Foo<bool>::D : B; // expected-warning {{operand of ? changes signedness: 'test2::Foo<bool>::Named4' to 'int'}}
-
-    int e1 = 1 ? i : E; // expected-warning {{operand of ? changes signedness: 'test2::Named5' to 'int'}}
-    int e2 = 1 ? E : i; // expected-warning {{operand of ? changes signedness: 'test2::Named5' to 'int'}}
-    int e3 = 1 ? E : B; // expected-warning {{operand of ? changes signedness: 'test2::Named5' to 'int'}}
-    int e4 = 1 ? B : E; // expected-warning {{operand of ? changes signedness: 'test2::Named5' to 'int'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-const-float.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-const-float.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-const-float.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -verify %s -std=c++98 -DEXT
-// RUN: %clang_cc1 -verify %s -std=c++98 -Wno-gnu -DNONE
-// RUN: %clang_cc1 -verify %s -std=c++98 -Wno-static-float-init -DNONE
-// RUN: %clang_cc1 -verify %s -std=c++98 -Wno-gnu-static-float-init -DNONE
-// RUN: %clang_cc1 -verify %s -std=c++11 -DERR
-// RUN: %clang_cc1 -verify %s -std=c++11 -Wno-gnu -DERR
-// RUN: %clang_cc1 -verify %s -std=c++11 -Wno-static-float-init -DNONE
-// RUN: %clang_cc1 -verify %s -std=c++11 -Wno-gnu-static-float-init -DERR
-
-#if NONE
-// expected-no-diagnostics
-#elif ERR
-// expected-error at 20 {{in-class initializer for static data member of type 'const double' requires 'constexpr' specifier}}
-// expected-note at 20 {{add 'constexpr'}}
-#elif EXT
-// expected-warning at 20 {{in-class initializer for static data member of type 'const double' is a GNU extension}}
-#endif
-
-struct X {
-  static const double x = 0.0;
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-function-inheader.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-function-inheader.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-function-inheader.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-#include "warn-static-function-inheader.h"
-// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
-// rdar://11202617
-
-static void another(void) { // expected-warning {{function 'another' is not needed and will not be emitted}}
-}
-
-template <typename T>
-void foo(void) {
-        thing();
-	another();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-function-inheader.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-function-inheader.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-static-function-inheader.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3 +0,0 @@
-static void thing(void) { // expected-warning {{'static' function 'thing' declared in header file should be declared 'static inline'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-string-conversion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-string-conversion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-string-conversion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wstring-conversion -verify %s
-
-// Warn on cases where a string literal is converted into a bool.
-// An exception is made for this in logical operators.
-void assert(bool condition);
-void test0() {
-  bool b0 = "hi"; // expected-warning{{implicit conversion turns string literal into bool: 'const char [3]' to 'bool'}}
-  b0 = ""; // expected-warning{{implicit conversion turns string literal into bool: 'const char [1]' to 'bool'}}
-  b0 = 0 && "";
-  assert("error"); // expected-warning{{implicit conversion turns string literal into bool: 'const char [6]' to 'bool'}}
-  assert(0 && "error");
-
-  while("hi") {} // expected-warning{{implicit conversion turns string literal into bool: 'const char [3]' to 'bool'}}
-  do {} while("hi"); // expected-warning{{implicit conversion turns string literal into bool: 'const char [3]' to 'bool'}}
-  for (;"hi";); // expected-warning{{implicit conversion turns string literal into bool: 'const char [3]' to 'bool'}}
-  if("hi") {} // expected-warning{{implicit conversion turns string literal into bool: 'const char [3]' to 'bool'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-thread-safety-analysis.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-thread-safety-analysis.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-thread-safety-analysis.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3987 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wthread-safety -Wthread-safety-beta -fcxx-exceptions %s
-
-// FIXME: should also run  %clang_cc1 -fsyntax-only -verify -Wthread-safety -std=c++11 -Wc++98-compat %s
-// FIXME: should also run  %clang_cc1 -fsyntax-only -verify -Wthread-safety %s
-
-#define LOCKABLE            __attribute__ ((lockable))
-#define SCOPED_LOCKABLE     __attribute__ ((scoped_lockable))
-#define GUARDED_BY(x)       __attribute__ ((guarded_by(x)))
-#define GUARDED_VAR         __attribute__ ((guarded_var))
-#define PT_GUARDED_BY(x)    __attribute__ ((pt_guarded_by(x)))
-#define PT_GUARDED_VAR      __attribute__ ((pt_guarded_var))
-#define ACQUIRED_AFTER(...) __attribute__ ((acquired_after(__VA_ARGS__)))
-#define ACQUIRED_BEFORE(...) __attribute__ ((acquired_before(__VA_ARGS__)))
-#define EXCLUSIVE_LOCK_FUNCTION(...)   __attribute__ ((exclusive_lock_function(__VA_ARGS__)))
-#define SHARED_LOCK_FUNCTION(...)      __attribute__ ((shared_lock_function(__VA_ARGS__)))
-#define EXCLUSIVE_TRYLOCK_FUNCTION(...) __attribute__ ((exclusive_trylock_function(__VA_ARGS__)))
-#define SHARED_TRYLOCK_FUNCTION(...)    __attribute__ ((shared_trylock_function(__VA_ARGS__)))
-#define UNLOCK_FUNCTION(...)            __attribute__ ((unlock_function(__VA_ARGS__)))
-#define LOCK_RETURNED(x)    __attribute__ ((lock_returned(x)))
-#define LOCKS_EXCLUDED(...) __attribute__ ((locks_excluded(__VA_ARGS__)))
-#define EXCLUSIVE_LOCKS_REQUIRED(...) \
-  __attribute__ ((exclusive_locks_required(__VA_ARGS__)))
-#define SHARED_LOCKS_REQUIRED(...) \
-  __attribute__ ((shared_locks_required(__VA_ARGS__)))
-#define NO_THREAD_SAFETY_ANALYSIS  __attribute__ ((no_thread_safety_analysis))
-
-
-class  __attribute__((lockable)) Mutex {
- public:
-  void Lock() __attribute__((exclusive_lock_function));
-  void ReaderLock() __attribute__((shared_lock_function));
-  void Unlock() __attribute__((unlock_function));
-  bool TryLock() __attribute__((exclusive_trylock_function(true)));
-  bool ReaderTryLock() __attribute__((shared_trylock_function(true)));
-  void LockWhen(const int &cond) __attribute__((exclusive_lock_function));
-};
-
-class __attribute__((scoped_lockable)) MutexLock {
- public:
-  MutexLock(Mutex *mu) __attribute__((exclusive_lock_function(mu)));
-  ~MutexLock() __attribute__((unlock_function));
-};
-
-class __attribute__((scoped_lockable)) ReaderMutexLock {
- public:
-  ReaderMutexLock(Mutex *mu) __attribute__((exclusive_lock_function(mu)));
-  ~ReaderMutexLock() __attribute__((unlock_function));
-};
-
-class SCOPED_LOCKABLE ReleasableMutexLock {
- public:
-  ReleasableMutexLock(Mutex *mu) EXCLUSIVE_LOCK_FUNCTION(mu);
-  ~ReleasableMutexLock() UNLOCK_FUNCTION();
-
-  void Release() UNLOCK_FUNCTION();
-};
-
-
-// The universal lock, written "*", allows checking to be selectively turned
-// off for a particular piece of code.
-void beginNoWarnOnReads()  SHARED_LOCK_FUNCTION("*");
-void endNoWarnOnReads()    UNLOCK_FUNCTION("*");
-void beginNoWarnOnWrites() EXCLUSIVE_LOCK_FUNCTION("*");
-void endNoWarnOnWrites()   UNLOCK_FUNCTION("*");
-
-
-// For testing handling of smart pointers.
-template<class T>
-class SmartPtr {
-public:
-  SmartPtr(T* p) : ptr_(p) { }
-  SmartPtr(const SmartPtr<T>& p) : ptr_(p.ptr_) { }
-  ~SmartPtr();
-
-  T* get()        const { return ptr_; }
-  T* operator->() const { return ptr_; }
-  T& operator*()  const { return *ptr_; }
-
-private:
-  T* ptr_;
-};
-
-
-// For testing destructor calls and cleanup.
-class MyString {
-public:
-  MyString(const char* s);
-  ~MyString();
-};
-
-
-
-Mutex sls_mu;
-
-Mutex sls_mu2 __attribute__((acquired_after(sls_mu)));
-int sls_guard_var __attribute__((guarded_var)) = 0;
-int sls_guardby_var __attribute__((guarded_by(sls_mu))) = 0;
-
-bool getBool();
-
-class MutexWrapper {
-public:
-   Mutex mu;
-   int x __attribute__((guarded_by(mu)));
-   void MyLock() __attribute__((exclusive_lock_function(mu))); 
-};
-
-MutexWrapper sls_mw;
-
-void sls_fun_0() {
-  sls_mw.mu.Lock();
-  sls_mw.x = 5; 
-  sls_mw.mu.Unlock();
-}
-
-void sls_fun_2() {
-  sls_mu.Lock();
-  int x = sls_guard_var;
-  sls_mu.Unlock();
-}
-
-void sls_fun_3() {
-  sls_mu.Lock();
-  sls_guard_var = 2;
-  sls_mu.Unlock();
-}
-
-void sls_fun_4() {
-  sls_mu2.Lock();
-  sls_guard_var = 2;
-  sls_mu2.Unlock();
-}
-
-void sls_fun_5() {
-  sls_mu.Lock();
-  int x = sls_guardby_var;
-  sls_mu.Unlock();
-}
-
-void sls_fun_6() {
-  sls_mu.Lock();
-  sls_guardby_var = 2;
-  sls_mu.Unlock();
-}
-
-void sls_fun_7() {
-  sls_mu.Lock();
-  sls_mu2.Lock();
-  sls_mu2.Unlock();
-  sls_mu.Unlock();
-}
-
-void sls_fun_8() {
-  sls_mu.Lock();
-  if (getBool())
-    sls_mu.Unlock();
-  else
-    sls_mu.Unlock();
-}
-
-void sls_fun_9() {
-  if (getBool())
-    sls_mu.Lock();
-  else
-    sls_mu.Lock();
-  sls_mu.Unlock();
-}
-
-void sls_fun_good_6() {
-  if (getBool()) {
-    sls_mu.Lock();
-  } else {
-    if (getBool()) {
-      getBool(); // EMPTY
-    } else {
-      getBool(); // EMPTY
-    }
-    sls_mu.Lock();
-  }
-  sls_mu.Unlock();
-}
-
-void sls_fun_good_7() {
-  sls_mu.Lock();
-  while (getBool()) {
-    sls_mu.Unlock();
-    if (getBool()) {
-      if (getBool()) {
-        sls_mu.Lock();
-        continue;
-      }
-    }
-    sls_mu.Lock();
-  }
-  sls_mu.Unlock();
-}
-
-void sls_fun_good_8() {
-  sls_mw.MyLock();
-  sls_mw.mu.Unlock();
-}
-
-void sls_fun_bad_1() {
-  sls_mu.Unlock(); // \
-    // expected-warning{{unlocking 'sls_mu' that was not locked}}
-}
-
-void sls_fun_bad_2() {
-  sls_mu.Lock();
-  sls_mu.Lock(); // \
-    // expected-warning{{locking 'sls_mu' that is already locked}}
-  sls_mu.Unlock();
-}
-
-void sls_fun_bad_3() {
-  sls_mu.Lock(); // expected-note {{mutex acquired here}}
-} // expected-warning{{mutex 'sls_mu' is still locked at the end of function}}
-
-void sls_fun_bad_4() {
-  if (getBool())
-    sls_mu.Lock();  // expected-note{{mutex acquired here}}
-  else
-    sls_mu2.Lock(); // expected-note{{mutex acquired here}}
-} // expected-warning{{mutex 'sls_mu' is not locked on every path through here}}  \
-  // expected-warning{{mutex 'sls_mu2' is not locked on every path through here}}
-
-void sls_fun_bad_5() {
-  sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  if (getBool())
-    sls_mu.Unlock();
-} // expected-warning{{mutex 'sls_mu' is not locked on every path through here}}
-
-void sls_fun_bad_6() {
-  if (getBool()) {
-    sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  } else {
-    if (getBool()) {
-      getBool(); // EMPTY
-    } else {
-      getBool(); // EMPTY
-    }
-  }
-  sls_mu.Unlock(); // \
-    expected-warning{{mutex 'sls_mu' is not locked on every path through here}}\
-    expected-warning{{unlocking 'sls_mu' that was not locked}}
-}
-
-void sls_fun_bad_7() {
-  sls_mu.Lock();
-  while (getBool()) {
-    sls_mu.Unlock();
-    if (getBool()) {
-      if (getBool()) {
-        continue; // \
-        expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}}
-      }
-    }
-    sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  }
-  sls_mu.Unlock();
-}
-
-void sls_fun_bad_8() {
-  sls_mu.Lock(); // expected-note{{mutex acquired here}}
-
-  do {
-    sls_mu.Unlock(); // expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}}
-  } while (getBool());
-}
-
-void sls_fun_bad_9() {
-  do {
-    sls_mu.Lock();  // \
-      // expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}} \
-      // expected-note{{mutex acquired here}}
-  } while (getBool());
-  sls_mu.Unlock();
-}
-
-void sls_fun_bad_10() {
-  sls_mu.Lock();  // expected-note 2{{mutex acquired here}}
-  while(getBool()) {  // expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}}
-    sls_mu.Unlock();
-  }
-} // expected-warning{{mutex 'sls_mu' is still locked at the end of function}}
-
-void sls_fun_bad_11() {
-  while (getBool()) { // \
-      expected-warning{{expecting mutex 'sls_mu' to be locked at start of each loop}}
-    sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  }
-  sls_mu.Unlock(); // \
-    // expected-warning{{unlocking 'sls_mu' that was not locked}}
-}
-
-void sls_fun_bad_12() {
-  sls_mu.Lock(); // expected-note {{mutex acquired here}}
-  while (getBool()) {
-    sls_mu.Unlock();
-    if (getBool()) {
-      if (getBool()) {
-        break; // expected-warning{{mutex 'sls_mu' is not locked on every path through here}}
-      }
-    }
-    sls_mu.Lock();
-  }
-  sls_mu.Unlock();
-}
-
-//-----------------------------------------//
-// Handling lock expressions in attribute args
-// -------------------------------------------//
-
-Mutex aa_mu;
-
-class GlobalLocker {
-public:
-  void globalLock() __attribute__((exclusive_lock_function(aa_mu)));
-  void globalUnlock() __attribute__((unlock_function(aa_mu)));
-};
-
-GlobalLocker glock;
-
-void aa_fun_1() {
-  glock.globalLock();
-  glock.globalUnlock();
-}
-
-void aa_fun_bad_1() {
-  glock.globalUnlock(); // \
-    // expected-warning{{unlocking 'aa_mu' that was not locked}}
-}
-
-void aa_fun_bad_2() {
-  glock.globalLock();
-  glock.globalLock(); // \
-    // expected-warning{{locking 'aa_mu' that is already locked}}
-  glock.globalUnlock();
-}
-
-void aa_fun_bad_3() {
-  glock.globalLock(); // expected-note{{mutex acquired here}}
-} // expected-warning{{mutex 'aa_mu' is still locked at the end of function}}
-
-//--------------------------------------------------//
-// Regression tests for unusual method names
-//--------------------------------------------------//
-
-Mutex wmu;
-
-// Test diagnostics for other method names.
-class WeirdMethods {
-  // FIXME: can't currently check inside constructors and destructors.
-  WeirdMethods() {
-    wmu.Lock(); // EXPECTED-NOTE {{mutex acquired here}}
-  } // EXPECTED-WARNING {{mutex 'wmu' is still locked at the end of function}}
-  ~WeirdMethods() {
-    wmu.Lock(); // EXPECTED-NOTE {{mutex acquired here}}
-  } // EXPECTED-WARNING {{mutex 'wmu' is still locked at the end of function}}
-  void operator++() {
-    wmu.Lock(); // expected-note {{mutex acquired here}}
-  } // expected-warning {{mutex 'wmu' is still locked at the end of function}}
-  operator int*() {
-    wmu.Lock(); // expected-note {{mutex acquired here}}
-    return 0;
-  } // expected-warning {{mutex 'wmu' is still locked at the end of function}}
-};
-
-//-----------------------------------------------//
-// Errors for guarded by or guarded var variables
-// ----------------------------------------------//
-
-int *pgb_gvar __attribute__((pt_guarded_var));
-int *pgb_var __attribute__((pt_guarded_by(sls_mu)));
-
-class PGBFoo {
- public:
-  int x;
-  int *pgb_field __attribute__((guarded_by(sls_mu2)))
-                 __attribute__((pt_guarded_by(sls_mu)));
-  void testFoo() {
-    pgb_field = &x; // \
-      // expected-warning {{writing variable 'pgb_field' requires locking 'sls_mu2' exclusively}}
-    *pgb_field = x; // expected-warning {{reading variable 'pgb_field' requires locking 'sls_mu2'}} \
-      // expected-warning {{writing the value pointed to by 'pgb_field' requires locking 'sls_mu' exclusively}}
-    x = *pgb_field; // expected-warning {{reading variable 'pgb_field' requires locking 'sls_mu2'}} \
-      // expected-warning {{reading the value pointed to by 'pgb_field' requires locking 'sls_mu'}}
-    (*pgb_field)++; // expected-warning {{reading variable 'pgb_field' requires locking 'sls_mu2'}} \
-      // expected-warning {{writing the value pointed to by 'pgb_field' requires locking 'sls_mu' exclusively}}
-  }
-};
-
-class GBFoo {
- public:
-  int gb_field __attribute__((guarded_by(sls_mu)));
-
-  void testFoo() {
-    gb_field = 0; // \
-      // expected-warning {{writing variable 'gb_field' requires locking 'sls_mu' exclusively}}
-  }
-
-  void testNoAnal() __attribute__((no_thread_safety_analysis)) {
-    gb_field = 0;
-  }
-};
-
-GBFoo GlobalGBFoo __attribute__((guarded_by(sls_mu)));
-
-void gb_fun_0() {
-  sls_mu.Lock();
-  int x = *pgb_var;
-  sls_mu.Unlock();
-}
-
-void gb_fun_1() {
-  sls_mu.Lock();
-  *pgb_var = 2;
-  sls_mu.Unlock();
-}
-
-void gb_fun_2() {
-  int x;
-  pgb_var = &x;
-}
-
-void gb_fun_3() {
-  int *x = pgb_var;
-}
-
-void gb_bad_0() {
-  sls_guard_var = 1; // \
-    // expected-warning{{writing variable 'sls_guard_var' requires locking any mutex exclusively}}
-}
-
-void gb_bad_1() {
-  int x = sls_guard_var; // \
-    // expected-warning{{reading variable 'sls_guard_var' requires locking any mutex}}
-}
-
-void gb_bad_2() {
-  sls_guardby_var = 1; // \
-    // expected-warning {{writing variable 'sls_guardby_var' requires locking 'sls_mu' exclusively}}
-}
-
-void gb_bad_3() {
-  int x = sls_guardby_var; // \
-    // expected-warning {{reading variable 'sls_guardby_var' requires locking 'sls_mu'}}
-}
-
-void gb_bad_4() {
-  *pgb_gvar = 1; // \
-    // expected-warning {{writing the value pointed to by 'pgb_gvar' requires locking any mutex exclusively}}
-}
-
-void gb_bad_5() {
-  int x = *pgb_gvar; // \
-    // expected-warning {{reading the value pointed to by 'pgb_gvar' requires locking any mutex}}
-}
-
-void gb_bad_6() {
-  *pgb_var = 1; // \
-    // expected-warning {{writing the value pointed to by 'pgb_var' requires locking 'sls_mu' exclusively}}
-}
-
-void gb_bad_7() {
-  int x = *pgb_var; // \
-    // expected-warning {{reading the value pointed to by 'pgb_var' requires locking 'sls_mu'}}
-}
-
-void gb_bad_8() {
-  GBFoo G;
-  G.gb_field = 0; // \
-    // expected-warning {{writing variable 'gb_field' requires locking 'sls_mu'}}
-}
-
-void gb_bad_9() {
-  sls_guard_var++; // \
-    // expected-warning{{writing variable 'sls_guard_var' requires locking any mutex exclusively}}
-  sls_guard_var--; // \
-    // expected-warning{{writing variable 'sls_guard_var' requires locking any mutex exclusively}}
-  ++sls_guard_var; // \
-    // expected-warning{{writing variable 'sls_guard_var' requires locking any mutex exclusively}}
-  --sls_guard_var;// \
-    // expected-warning{{writing variable 'sls_guard_var' requires locking any mutex exclusively}}
-}
-
-//-----------------------------------------------//
-// Warnings on variables with late parsed attributes
-// ----------------------------------------------//
-
-class LateFoo {
-public:
-  int a __attribute__((guarded_by(mu)));
-  int b;
-
-  void foo() __attribute__((exclusive_locks_required(mu))) { }
-
-  void test() {
-    a = 0; // \
-      // expected-warning{{writing variable 'a' requires locking 'mu' exclusively}}
-    b = a; // \
-      // expected-warning {{reading variable 'a' requires locking 'mu'}}
-    c = 0; // \
-      // expected-warning {{writing variable 'c' requires locking 'mu' exclusively}}
-  }
-
-  int c __attribute__((guarded_by(mu)));
-
-  Mutex mu;
-};
-
-class LateBar {
- public:
-  int a_ __attribute__((guarded_by(mu1_)));
-  int b_;
-  int *q __attribute__((pt_guarded_by(mu)));
-  Mutex mu1_;
-  Mutex mu;
-  LateFoo Foo;
-  LateFoo Foo2;
-  LateFoo *FooPointer;
-};
-
-LateBar b1, *b3;
-
-void late_0() {
-  LateFoo FooA;
-  LateFoo FooB;
-  FooA.mu.Lock();
-  FooA.a = 5;
-  FooA.mu.Unlock();
-}
-
-void late_1() {
-  LateBar BarA;
-  BarA.FooPointer->mu.Lock();
-  BarA.FooPointer->a = 2;
-  BarA.FooPointer->mu.Unlock();
-}
-
-void late_bad_0() {
-  LateFoo fooA;
-  LateFoo fooB;
-  fooA.mu.Lock();
-  fooB.a = 5; // \
-    // expected-warning{{writing variable 'a' requires locking 'fooB.mu' exclusively}} \
-    // expected-note{{found near match 'fooA.mu'}}
-  fooA.mu.Unlock();
-}
-
-void late_bad_1() {
-  Mutex mu;
-  mu.Lock();
-  b1.mu1_.Lock();
-  int res = b1.a_ + b3->b_;
-  b3->b_ = *b1.q; // \
-    // expected-warning{{reading the value pointed to by 'q' requires locking 'b1.mu'}}
-  b1.mu1_.Unlock();
-  b1.b_ = res;
-  mu.Unlock();
-}
-
-void late_bad_2() {
-  LateBar BarA;
-  BarA.FooPointer->mu.Lock();
-  BarA.Foo.a = 2; // \
-    // expected-warning{{writing variable 'a' requires locking 'BarA.Foo.mu' exclusively}} \
-    // expected-note{{found near match 'BarA.FooPointer->mu'}}
-  BarA.FooPointer->mu.Unlock();
-}
-
-void late_bad_3() {
-  LateBar BarA;
-  BarA.Foo.mu.Lock();
-  BarA.FooPointer->a = 2; // \
-    // expected-warning{{writing variable 'a' requires locking 'BarA.FooPointer->mu' exclusively}} \
-    // expected-note{{found near match 'BarA.Foo.mu'}}
-  BarA.Foo.mu.Unlock();
-}
-
-void late_bad_4() {
-  LateBar BarA;
-  BarA.Foo.mu.Lock();
-  BarA.Foo2.a = 2; // \
-    // expected-warning{{writing variable 'a' requires locking 'BarA.Foo2.mu' exclusively}} \
-    // expected-note{{found near match 'BarA.Foo.mu'}}
-  BarA.Foo.mu.Unlock();
-}
-
-//-----------------------------------------------//
-// Extra warnings for shared vs. exclusive locks
-// ----------------------------------------------//
-
-void shared_fun_0() {
-  sls_mu.Lock();
-  do {
-    sls_mu.Unlock();
-    sls_mu.Lock();
-  } while (getBool());
-  sls_mu.Unlock();
-}
-
-void shared_fun_1() {
-  sls_mu.ReaderLock(); // \
-    // expected-warning {{mutex 'sls_mu' is locked exclusively and shared in the same scope}}
-  do {
-    sls_mu.Unlock();
-    sls_mu.Lock();  // \
-      // expected-note {{the other lock of mutex 'sls_mu' is here}}
-  } while (getBool());
-  sls_mu.Unlock();
-}
-
-void shared_fun_3() {
-  if (getBool())
-    sls_mu.Lock();
-  else
-    sls_mu.Lock();
-  *pgb_var = 1;
-  sls_mu.Unlock();
-}
-
-void shared_fun_4() {
-  if (getBool())
-    sls_mu.ReaderLock();
-  else
-    sls_mu.ReaderLock();
-  int x = sls_guardby_var;
-  sls_mu.Unlock();
-}
-
-void shared_fun_8() {
-  if (getBool())
-    sls_mu.Lock(); // \
-      // expected-warning {{mutex 'sls_mu' is locked exclusively and shared in the same scope}}
-  else
-    sls_mu.ReaderLock(); // \
-      // expected-note {{the other lock of mutex 'sls_mu' is here}}
-  sls_mu.Unlock();
-}
-
-void shared_bad_0() {
-  sls_mu.Lock();  // \
-    // expected-warning {{mutex 'sls_mu' is locked exclusively and shared in the same scope}}
-  do {
-    sls_mu.Unlock();
-    sls_mu.ReaderLock();  // \
-      // expected-note {{the other lock of mutex 'sls_mu' is here}}
-  } while (getBool());
-  sls_mu.Unlock();
-}
-
-void shared_bad_1() {
-  if (getBool())
-    sls_mu.Lock(); // \
-      // expected-warning {{mutex 'sls_mu' is locked exclusively and shared in the same scope}}
-  else
-    sls_mu.ReaderLock(); // \
-      // expected-note {{the other lock of mutex 'sls_mu' is here}}
-  *pgb_var = 1;
-  sls_mu.Unlock();
-}
-
-void shared_bad_2() {
-  if (getBool())
-    sls_mu.ReaderLock(); // \
-      // expected-warning {{mutex 'sls_mu' is locked exclusively and shared in the same scope}}
-  else
-    sls_mu.Lock(); // \
-      // expected-note {{the other lock of mutex 'sls_mu' is here}}
-  *pgb_var = 1;
-  sls_mu.Unlock();
-}
-
-// FIXME: Add support for functions (not only methods)
-class LRBar {
- public:
-  void aa_elr_fun() __attribute__((exclusive_locks_required(aa_mu)));
-  void aa_elr_fun_s() __attribute__((shared_locks_required(aa_mu)));
-  void le_fun() __attribute__((locks_excluded(sls_mu)));
-};
-
-class LRFoo {
- public:
-  void test() __attribute__((exclusive_locks_required(sls_mu)));
-  void testShared() __attribute__((shared_locks_required(sls_mu2)));
-};
-
-void elr_fun() __attribute__((exclusive_locks_required(sls_mu)));
-void elr_fun() {}
-
-LRFoo MyLRFoo;
-LRBar Bar;
-
-void es_fun_0() {
-  aa_mu.Lock();
-  Bar.aa_elr_fun();
-  aa_mu.Unlock();
-}
-
-void es_fun_1() {
-  aa_mu.Lock();
-  Bar.aa_elr_fun_s();
-  aa_mu.Unlock();
-}
-
-void es_fun_2() {
-  aa_mu.ReaderLock();
-  Bar.aa_elr_fun_s();
-  aa_mu.Unlock();
-}
-
-void es_fun_3() {
-  sls_mu.Lock();
-  MyLRFoo.test();
-  sls_mu.Unlock();
-}
-
-void es_fun_4() {
-  sls_mu2.Lock();
-  MyLRFoo.testShared();
-  sls_mu2.Unlock();
-}
-
-void es_fun_5() {
-  sls_mu2.ReaderLock();
-  MyLRFoo.testShared();
-  sls_mu2.Unlock();
-}
-
-void es_fun_6() {
-  Bar.le_fun();
-}
-
-void es_fun_7() {
-  sls_mu.Lock();
-  elr_fun();
-  sls_mu.Unlock();
-}
-
-void es_fun_8() __attribute__((no_thread_safety_analysis));
-
-void es_fun_8() {
-  Bar.aa_elr_fun_s();
-}
-
-void es_fun_9() __attribute__((shared_locks_required(aa_mu)));
-void es_fun_9() {
-  Bar.aa_elr_fun_s();
-}
-
-void es_fun_10() __attribute__((exclusive_locks_required(aa_mu)));
-void es_fun_10() {
-  Bar.aa_elr_fun_s();
-}
-
-void es_bad_0() {
-  Bar.aa_elr_fun(); // \
-    // expected-warning {{calling function 'aa_elr_fun' requires exclusive lock on 'aa_mu'}}
-}
-
-void es_bad_1() {
-  aa_mu.ReaderLock();
-  Bar.aa_elr_fun(); // \
-    // expected-warning {{calling function 'aa_elr_fun' requires exclusive lock on 'aa_mu'}}
-  aa_mu.Unlock();
-}
-
-void es_bad_2() {
-  Bar.aa_elr_fun_s(); // \
-    // expected-warning {{calling function 'aa_elr_fun_s' requires shared lock on 'aa_mu'}}
-}
-
-void es_bad_3() {
-  MyLRFoo.test(); // \
-    // expected-warning {{calling function 'test' requires exclusive lock on 'sls_mu'}}
-}
-
-void es_bad_4() {
-  MyLRFoo.testShared(); // \
-    // expected-warning {{calling function 'testShared' requires shared lock on 'sls_mu2'}}
-}
-
-void es_bad_5() {
-  sls_mu.ReaderLock();
-  MyLRFoo.test(); // \
-    // expected-warning {{calling function 'test' requires exclusive lock on 'sls_mu'}}
-  sls_mu.Unlock();
-}
-
-void es_bad_6() {
-  sls_mu.Lock();
-  Bar.le_fun(); // \
-    // expected-warning {{cannot call function 'le_fun' while mutex 'sls_mu' is locked}}
-  sls_mu.Unlock();
-}
-
-void es_bad_7() {
-  sls_mu.ReaderLock();
-  Bar.le_fun(); // \
-    // expected-warning {{cannot call function 'le_fun' while mutex 'sls_mu' is locked}}
-  sls_mu.Unlock();
-}
-
-
-//-----------------------------------------------//
-// Unparseable lock expressions
-// ----------------------------------------------//
-
-// FIXME -- derive new tests for unhandled expressions
-
-
-//----------------------------------------------------------------------------//
-// The following test cases are ported from the gcc thread safety implementation
-// They are each wrapped inside a namespace with the test number of the gcc test
-//
-// FIXME: add all the gcc tests, once this analysis passes them.
-//----------------------------------------------------------------------------//
-
-//-----------------------------------------//
-// Good testcases (no errors)
-//-----------------------------------------//
-
-namespace thread_annot_lock_20 {
-class Bar {
- public:
-  static int func1() EXCLUSIVE_LOCKS_REQUIRED(mu1_);
-  static int b_ GUARDED_BY(mu1_);
-  static Mutex mu1_;
-  static int a_ GUARDED_BY(mu1_);
-};
-
-Bar b1;
-
-int Bar::func1()
-{
-  int res = 5;
-
-  if (a_ == 4)
-    res = b_;
-  return res;
-}
-} // end namespace thread_annot_lock_20
-
-namespace thread_annot_lock_22 {
-// Test various usage of GUARDED_BY and PT_GUARDED_BY annotations, especially
-// uses in class definitions.
-Mutex mu;
-
-class Bar {
- public:
-  int a_ GUARDED_BY(mu1_);
-  int b_;
-  int *q PT_GUARDED_BY(mu);
-  Mutex mu1_ ACQUIRED_AFTER(mu);
-};
-
-Bar b1, *b3;
-int *p GUARDED_BY(mu) PT_GUARDED_BY(mu);
-int res GUARDED_BY(mu) = 5;
-
-int func(int i)
-{
-  int x;
-  mu.Lock();
-  b1.mu1_.Lock();
-  res = b1.a_ + b3->b_;
-  *p = i;
-  b1.a_ = res + b3->b_;
-  b3->b_ = *b1.q;
-  b1.mu1_.Unlock();
-  b1.b_ = res;
-  x = res;
-  mu.Unlock();
-  return x;
-}
-} // end namespace thread_annot_lock_22
-
-namespace thread_annot_lock_27_modified {
-// test lock annotations applied to function definitions
-// Modified: applied annotations only to function declarations
-Mutex mu1;
-Mutex mu2 ACQUIRED_AFTER(mu1);
-
-class Foo {
- public:
-  int method1(int i) SHARED_LOCKS_REQUIRED(mu2) EXCLUSIVE_LOCKS_REQUIRED(mu1);
-};
-
-int Foo::method1(int i) {
-  return i;
-}
-
-
-int foo(int i) EXCLUSIVE_LOCKS_REQUIRED(mu2) SHARED_LOCKS_REQUIRED(mu1);
-int foo(int i) {
-  return i;
-}
-
-static int bar(int i) EXCLUSIVE_LOCKS_REQUIRED(mu1);
-static int bar(int i) {
-  return i;
-}
-
-void main() {
-  Foo a;
-
-  mu1.Lock();
-  mu2.Lock();
-  a.method1(1);
-  foo(2);
-  mu2.Unlock();
-  bar(3);
-  mu1.Unlock();
-}
-} // end namespace thread_annot_lock_27_modified
-
-
-namespace thread_annot_lock_38 {
-// Test the case where a template member function is annotated with lock
-// attributes in a non-template class.
-class Foo {
- public:
-  void func1(int y) LOCKS_EXCLUDED(mu_);
-  template <typename T> void func2(T x) LOCKS_EXCLUDED(mu_);
- private:
-  Mutex mu_;
-};
-
-Foo *foo;
-
-void main()
-{
-  foo->func1(5);
-  foo->func2(5);
-}
-} // end namespace thread_annot_lock_38
-
-namespace thread_annot_lock_43 {
-// Tests lock canonicalization
-class Foo {
- public:
-  Mutex *mu_;
-};
-
-class FooBar {
- public:
-  Foo *foo_;
-  int GetA() EXCLUSIVE_LOCKS_REQUIRED(foo_->mu_) { return a_; }
-  int a_ GUARDED_BY(foo_->mu_);
-};
-
-FooBar *fb;
-
-void main()
-{
-  int x;
-  fb->foo_->mu_->Lock();
-  x = fb->GetA();
-  fb->foo_->mu_->Unlock();
-}
-} // end namespace thread_annot_lock_43
-
-namespace thread_annot_lock_49 {
-// Test the support for use of lock expression in the annotations
-class Foo {
- public:
-  Mutex foo_mu_;
-};
-
-class Bar {
- private:
-  Foo *foo;
-  Mutex bar_mu_ ACQUIRED_AFTER(foo->foo_mu_);
-
- public:
-  void Test1() {
-    foo->foo_mu_.Lock();
-    bar_mu_.Lock();
-    bar_mu_.Unlock();
-    foo->foo_mu_.Unlock();
-  }
-};
-
-void main() {
-  Bar bar;
-  bar.Test1();
-}
-} // end namespace thread_annot_lock_49
-
-namespace thread_annot_lock_61_modified {
-  // Modified to fix the compiler errors
-  // Test the fix for a bug introduced by the support of pass-by-reference
-  // paramters.
-  struct Foo { Foo &operator<< (bool) {return *this;} };
-  Foo &getFoo();
-  struct Bar { Foo &func () {return getFoo();} };
-  struct Bas { void operator& (Foo &) {} };
-  void mumble()
-  {
-    Bas() & Bar().func() << "" << "";
-    Bas() & Bar().func() << "";
-  }
-} // end namespace thread_annot_lock_61_modified
-
-
-namespace thread_annot_lock_65 {
-// Test the fix for a bug in the support of allowing reader locks for
-// non-const, non-modifying overload functions. (We didn't handle the builtin
-// properly.)
-enum MyFlags {
-  Zero,
-  One,
-  Two,
-  Three,
-  Four,
-  Five,
-  Six,
-  Seven,
-  Eight,
-  Nine
-};
-
-inline MyFlags
-operator|(MyFlags a, MyFlags b)
-{
-  return MyFlags(static_cast<int>(a) | static_cast<int>(b));
-}
-
-inline MyFlags&
-operator|=(MyFlags& a, MyFlags b)
-{
-    return a = a | b;
-}
-} // end namespace thread_annot_lock_65
-
-namespace thread_annot_lock_66_modified {
-// Modified: Moved annotation to function defn
-// Test annotations on out-of-line definitions of member functions where the
-// annotations refer to locks that are also data members in the class.
-Mutex mu;
-
-class Foo {
- public:
-  int method1(int i) SHARED_LOCKS_REQUIRED(mu1, mu, mu2);
-  int data GUARDED_BY(mu1);
-  Mutex *mu1;
-  Mutex *mu2;
-};
-
-int Foo::method1(int i)
-{
-  return data + i;
-}
-
-void main()
-{
-  Foo a;
-
-  a.mu2->Lock();
-  a.mu1->Lock();
-  mu.Lock();
-  a.method1(1);
-  mu.Unlock();
-  a.mu1->Unlock();
-  a.mu2->Unlock();
-}
-} // end namespace thread_annot_lock_66_modified
-
-namespace thread_annot_lock_68_modified {
-// Test a fix to a bug in the delayed name binding with nested template
-// instantiation. We use a stack to make sure a name is not resolved to an
-// inner context.
-template <typename T>
-class Bar {
-  Mutex mu_;
-};
-
-template <typename T>
-class Foo {
- public:
-  void func(T x) {
-    mu_.Lock();
-    count_ = x;
-    mu_.Unlock();
-  }
-
- private:
-  T count_ GUARDED_BY(mu_);
-  Bar<T> bar_;
-  Mutex mu_;
-};
-
-void main()
-{
-  Foo<int> *foo;
-  foo->func(5);
-}
-} // end namespace thread_annot_lock_68_modified
-
-namespace thread_annot_lock_30_modified {
-// Test delay parsing of lock attribute arguments with nested classes.
-// Modified: trylocks replaced with exclusive_lock_fun
-int a = 0;
-
-class Bar {
-  struct Foo;
-
- public:
-  void MyLock() EXCLUSIVE_LOCK_FUNCTION(mu);
-
-  int func() {
-    MyLock();
-//    if (foo == 0) {
-//      return 0;
-//    }
-    a = 5;
-    mu.Unlock();
-    return 1;
-  }
-
-  class FooBar {
-    int x;
-    int y;
-  };
-
- private:
-  Mutex mu;
-};
-
-Bar *bar;
-
-void main()
-{
-  bar->func();
-}
-} // end namespace thread_annot_lock_30_modified
-
-namespace thread_annot_lock_47 {
-// Test the support for annotations on virtual functions.
-// This is a good test case. (i.e. There should be no warning emitted by the
-// compiler.)
-class Base {
- public:
-  virtual void func1() EXCLUSIVE_LOCKS_REQUIRED(mu_);
-  virtual void func2() LOCKS_EXCLUDED(mu_);
-  Mutex mu_;
-};
-
-class Child : public Base {
- public:
-  virtual void func1() EXCLUSIVE_LOCKS_REQUIRED(mu_);
-  virtual void func2() LOCKS_EXCLUDED(mu_);
-};
-
-void main() {
-  Child *c;
-  Base *b = c;
-
-  b->mu_.Lock();
-  b->func1();
-  b->mu_.Unlock();
-  b->func2();
-
-  c->mu_.Lock();
-  c->func1();
-  c->mu_.Unlock();
-  c->func2();
-}
-} // end namespace thread_annot_lock_47
-
-//-----------------------------------------//
-// Tests which produce errors
-//-----------------------------------------//
-
-namespace thread_annot_lock_13 {
-Mutex mu1;
-Mutex mu2;
-
-int g GUARDED_BY(mu1);
-int w GUARDED_BY(mu2);
-
-class Foo {
- public:
-  void bar() LOCKS_EXCLUDED(mu_, mu1);
-  int foo() SHARED_LOCKS_REQUIRED(mu_) EXCLUSIVE_LOCKS_REQUIRED(mu2);
-
- private:
-  int a_ GUARDED_BY(mu_);
- public:
-  Mutex mu_ ACQUIRED_AFTER(mu1);
-};
-
-int Foo::foo()
-{
-  int res;
-  w = 5;
-  res = a_ + 5;
-  return res;
-}
-
-void Foo::bar()
-{
-  int x;
-  mu_.Lock();
-  x = foo(); // expected-warning {{calling function 'foo' requires exclusive lock on 'mu2'}}
-  a_ = x + 1;
-  mu_.Unlock();
-  if (x > 5) {
-    mu1.Lock();
-    g = 2;
-    mu1.Unlock();
-  }
-}
-
-void main()
-{
-  Foo f1, *f2;
-  f1.mu_.Lock();
-  f1.bar(); // expected-warning {{cannot call function 'bar' while mutex 'f1.mu_' is locked}}
-  mu2.Lock();
-  f1.foo();
-  mu2.Unlock();
-  f1.mu_.Unlock();
-  f2->mu_.Lock();
-  f2->bar(); // expected-warning {{cannot call function 'bar' while mutex 'f2->mu_' is locked}}
-  f2->mu_.Unlock();
-  mu2.Lock();
-  w = 2;
-  mu2.Unlock();
-}
-} // end namespace thread_annot_lock_13
-
-namespace thread_annot_lock_18_modified {
-// Modified: Trylocks removed
-// Test the ability to distnguish between the same lock field of
-// different objects of a class.
-  class Bar {
- public:
-  bool MyLock() EXCLUSIVE_LOCK_FUNCTION(mu1_);
-  void MyUnlock() UNLOCK_FUNCTION(mu1_);
-  int a_ GUARDED_BY(mu1_);
-
- private:
-  Mutex mu1_;
-};
-
-Bar *b1, *b2;
-
-void func()
-{
-  b1->MyLock();
-  b1->a_ = 5;
-  b2->a_ = 3; // \
-    // expected-warning {{writing variable 'a_' requires locking 'b2->mu1_' exclusively}} \
-    // expected-note {{found near match 'b1->mu1_'}}
-  b2->MyLock();
-  b2->MyUnlock();
-  b1->MyUnlock();
-}
-} // end namespace thread_annot_lock_18_modified
-
-namespace thread_annot_lock_21 {
-// Test various usage of GUARDED_BY and PT_GUARDED_BY annotations, especially
-// uses in class definitions.
-Mutex mu;
-
-class Bar {
- public:
-  int a_ GUARDED_BY(mu1_);
-  int b_;
-  int *q PT_GUARDED_BY(mu);
-  Mutex mu1_ ACQUIRED_AFTER(mu);
-};
-
-Bar b1, *b3;
-int *p GUARDED_BY(mu) PT_GUARDED_BY(mu);
-
-int res GUARDED_BY(mu) = 5;
-
-int func(int i)
-{
-  int x;
-  b3->mu1_.Lock();
-  res = b1.a_ + b3->b_; // expected-warning {{reading variable 'a_' requires locking 'b1.mu1_'}} \
-    // expected-warning {{writing variable 'res' requires locking 'mu' exclusively}} \
-    // expected-note {{found near match 'b3->mu1_'}}
-  *p = i; // expected-warning {{reading variable 'p' requires locking 'mu'}} \
-    // expected-warning {{writing the value pointed to by 'p' requires locking 'mu' exclusively}}
-  b1.a_ = res + b3->b_; // expected-warning {{reading variable 'res' requires locking 'mu'}} \
-    // expected-warning {{writing variable 'a_' requires locking 'b1.mu1_' exclusively}} \
-    // expected-note {{found near match 'b3->mu1_'}}
-  b3->b_ = *b1.q; // expected-warning {{reading the value pointed to by 'q' requires locking 'mu'}}
-  b3->mu1_.Unlock();
-  b1.b_ = res; // expected-warning {{reading variable 'res' requires locking 'mu'}}
-  x = res; // expected-warning {{reading variable 'res' requires locking 'mu'}}
-  return x;
-}
-} // end namespace thread_annot_lock_21
-
-namespace thread_annot_lock_35_modified {
-// Test the analyzer's ability to distinguish the lock field of different
-// objects.
-class Foo {
- private:
-  Mutex lock_;
-  int a_ GUARDED_BY(lock_);
-
- public:
-  void Func(Foo* child) LOCKS_EXCLUDED(lock_) {
-     Foo *new_foo = new Foo;
-
-     lock_.Lock();
-
-     child->Func(new_foo); // There shouldn't be any warning here as the
-                           // acquired lock is not in child.
-     child->bar(7); // \
-       // expected-warning {{calling function 'bar' requires exclusive lock on 'child->lock_'}} \
-       // expected-note {{found near match 'lock_'}}
-     child->a_ = 5; // \
-       // expected-warning {{writing variable 'a_' requires locking 'child->lock_' exclusively}} \
-       // expected-note {{found near match 'lock_'}}
-     lock_.Unlock();
-  }
-
-  void bar(int y) EXCLUSIVE_LOCKS_REQUIRED(lock_) {
-    a_ = y;
-  }
-};
-
-Foo *x;
-
-void main() {
-  Foo *child = new Foo;
-  x->Func(child);
-}
-} // end namespace thread_annot_lock_35_modified
-
-namespace thread_annot_lock_36_modified {
-// Modified to move the annotations to function defns.
-// Test the analyzer's ability to distinguish the lock field of different
-// objects
-class Foo {
- private:
-  Mutex lock_;
-  int a_ GUARDED_BY(lock_);
-
- public:
-  void Func(Foo* child) LOCKS_EXCLUDED(lock_);
-  void bar(int y) EXCLUSIVE_LOCKS_REQUIRED(lock_);
-};
-
-void Foo::Func(Foo* child) {
-  Foo *new_foo = new Foo;
-
-  lock_.Lock();
-
-  child->lock_.Lock();
-  child->Func(new_foo); // expected-warning {{cannot call function 'Func' while mutex 'child->lock_' is locked}}
-  child->bar(7);
-  child->a_ = 5;
-  child->lock_.Unlock();
-
-  lock_.Unlock();
-}
-
-void Foo::bar(int y) {
-  a_ = y;
-}
-
-
-Foo *x;
-
-void main() {
-  Foo *child = new Foo;
-  x->Func(child);
-}
-} // end namespace thread_annot_lock_36_modified
-
-
-namespace thread_annot_lock_42 {
-// Test support of multiple lock attributes of the same kind on a decl.
-class Foo {
- private:
-  Mutex mu1, mu2, mu3;
-  int x GUARDED_BY(mu1) GUARDED_BY(mu2);
-  int y GUARDED_BY(mu2);
-
-  void f2() LOCKS_EXCLUDED(mu1) LOCKS_EXCLUDED(mu2) LOCKS_EXCLUDED(mu3) {
-    mu2.Lock();
-    y = 2;
-    mu2.Unlock();
-  }
-
- public:
-  void f1() EXCLUSIVE_LOCKS_REQUIRED(mu2) EXCLUSIVE_LOCKS_REQUIRED(mu1) {
-    x = 5;
-    f2(); // expected-warning {{cannot call function 'f2' while mutex 'mu1' is locked}} \
-      // expected-warning {{cannot call function 'f2' while mutex 'mu2' is locked}}
-  }
-};
-
-Foo *foo;
-
-void func()
-{
-  foo->f1(); // expected-warning {{calling function 'f1' requires exclusive lock on 'foo->mu2'}} \
-             // expected-warning {{calling function 'f1' requires exclusive lock on 'foo->mu1'}}
-}
-} // end namespace thread_annot_lock_42
-
-namespace thread_annot_lock_46 {
-// Test the support for annotations on virtual functions.
-class Base {
- public:
-  virtual void func1() EXCLUSIVE_LOCKS_REQUIRED(mu_);
-  virtual void func2() LOCKS_EXCLUDED(mu_);
-  Mutex mu_;
-};
-
-class Child : public Base {
- public:
-  virtual void func1() EXCLUSIVE_LOCKS_REQUIRED(mu_);
-  virtual void func2() LOCKS_EXCLUDED(mu_);
-};
-
-void main() {
-  Child *c;
-  Base *b = c;
-
-  b->func1(); // expected-warning {{calling function 'func1' requires exclusive lock on 'b->mu_'}}
-  b->mu_.Lock();
-  b->func2(); // expected-warning {{cannot call function 'func2' while mutex 'b->mu_' is locked}}
-  b->mu_.Unlock();
-
-  c->func1(); // expected-warning {{calling function 'func1' requires exclusive lock on 'c->mu_'}}
-  c->mu_.Lock();
-  c->func2(); // expected-warning {{cannot call function 'func2' while mutex 'c->mu_' is locked}}
-  c->mu_.Unlock();
-}
-} // end namespace thread_annot_lock_46
-
-namespace thread_annot_lock_67_modified {
-// Modified: attributes on definitions moved to declarations
-// Test annotations on out-of-line definitions of member functions where the
-// annotations refer to locks that are also data members in the class.
-Mutex mu;
-Mutex mu3;
-
-class Foo {
- public:
-  int method1(int i) SHARED_LOCKS_REQUIRED(mu1, mu, mu2, mu3);
-  int data GUARDED_BY(mu1);
-  Mutex *mu1;
-  Mutex *mu2;
-};
-
-int Foo::method1(int i) {
-  return data + i;
-}
-
-void main()
-{
-  Foo a;
-  a.method1(1); // expected-warning {{calling function 'method1' requires shared lock on 'a.mu1'}} \
-    // expected-warning {{calling function 'method1' requires shared lock on 'mu'}} \
-    // expected-warning {{calling function 'method1' requires shared lock on 'a.mu2'}} \
-    // expected-warning {{calling function 'method1' requires shared lock on 'mu3'}}
-}
-} // end namespace thread_annot_lock_67_modified
-
-
-namespace substitution_test {
-  class MyData  {
-  public:
-    Mutex mu;
-
-    void lockData()    __attribute__((exclusive_lock_function(mu)));
-    void unlockData()  __attribute__((unlock_function(mu)));
-
-    void doSomething() __attribute__((exclusive_locks_required(mu)))  { }
-  };
-
-
-  class DataLocker {
-  public:
-    void lockData  (MyData *d) __attribute__((exclusive_lock_function(d->mu)));
-    void unlockData(MyData *d) __attribute__((unlock_function(d->mu)));
-  };
-
-
-  class Foo {
-  public:
-    void foo(MyData* d) __attribute__((exclusive_locks_required(d->mu))) { }
-
-    void bar1(MyData* d) {
-      d->lockData();
-      foo(d);
-      d->unlockData();
-    }
-
-    void bar2(MyData* d) {
-      DataLocker dlr;
-      dlr.lockData(d);
-      foo(d);
-      dlr.unlockData(d);
-    }
-
-    void bar3(MyData* d1, MyData* d2) {
-      DataLocker dlr;
-      dlr.lockData(d1);   // expected-note {{mutex acquired here}}
-      dlr.unlockData(d2); // \
-        // expected-warning {{unlocking 'd2->mu' that was not locked}}
-    } // expected-warning {{mutex 'd1->mu' is still locked at the end of function}}
-
-    void bar4(MyData* d1, MyData* d2) {
-      DataLocker dlr;
-      dlr.lockData(d1);
-      foo(d2); // \
-        // expected-warning {{calling function 'foo' requires exclusive lock on 'd2->mu'}} \
-        // expected-note {{found near match 'd1->mu'}}
-      dlr.unlockData(d1);
-    }
-  };
-} // end namespace substituation_test
-
-
-
-namespace constructor_destructor_tests {
-  Mutex fooMu;
-  int myVar GUARDED_BY(fooMu);
-
-  class Foo {
-  public:
-    Foo()  __attribute__((exclusive_lock_function(fooMu))) { }
-    ~Foo() __attribute__((unlock_function(fooMu))) { }
-  };
-
-  void fooTest() {
-    Foo foo;
-    myVar = 0;
-  }
-}
-
-
-namespace template_member_test {
-
-  struct S { int n; };
-  struct T {
-    Mutex m;
-    S *s GUARDED_BY(this->m);
-  };
-  Mutex m;
-  struct U {
-    union {
-      int n;
-    };
-  } *u GUARDED_BY(m);
-
-  template<typename U>
-  struct IndirectLock {
-    int DoNaughtyThings(T *t) {
-      u->n = 0; // expected-warning {{reading variable 'u' requires locking 'm'}}
-      return t->s->n; // expected-warning {{reading variable 's' requires locking 't->m'}}
-    }
-  };
-
-  template struct IndirectLock<int>; // expected-note {{here}}
-
-  struct V {
-    void f(int);
-    void f(double);
-
-    Mutex m;
-    V *p GUARDED_BY(this->m);
-  };
-  template<typename U> struct W {
-    V v;
-    void f(U u) {
-      v.p->f(u); // expected-warning {{reading variable 'p' requires locking 'v.m'}}
-    }
-  };
-  template struct W<int>; // expected-note {{here}}
-
-}
-
-namespace test_scoped_lockable {
-
-struct TestScopedLockable {
-  Mutex mu1;
-  Mutex mu2;
-  int a __attribute__((guarded_by(mu1)));
-  int b __attribute__((guarded_by(mu2)));
-
-  bool getBool();
-
-  void foo1() {
-    MutexLock mulock(&mu1);
-    a = 5;
-  }
-
-  void foo2() {
-    ReaderMutexLock mulock1(&mu1);
-    if (getBool()) {
-      MutexLock mulock2a(&mu2);
-      b = a + 1;
-    }
-    else {
-      MutexLock mulock2b(&mu2);
-      b = a + 2;
-    }
-  }
-
-  void foo3() {
-    MutexLock mulock_a(&mu1);
-    MutexLock mulock_b(&mu1); // \
-      // expected-warning {{locking 'mu1' that is already locked}}
-  }
-
-  void foo4() {
-    MutexLock mulock1(&mu1), mulock2(&mu2);
-    a = b+1;
-    b = a+1;
-  }
-};
-
-} // end namespace test_scoped_lockable
-
-
-namespace FunctionAttrTest {
-
-class Foo {
-public:
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-};
-
-Foo fooObj;
-
-void foo() EXCLUSIVE_LOCKS_REQUIRED(fooObj.mu_);
-
-void bar() {
-  foo();  // expected-warning {{calling function 'foo' requires exclusive lock on 'fooObj.mu_'}}
-  fooObj.mu_.Lock();
-  foo();
-  fooObj.mu_.Unlock();
-}
-
-};  // end namespace FunctionAttrTest
-
-
-namespace TryLockTest {
-
-struct TestTryLock {
-  Mutex mu;
-  int a GUARDED_BY(mu);
-  bool cond;
-
-  void foo1() {
-    if (mu.TryLock()) {
-      a = 1;
-      mu.Unlock();
-    }
-  }
-
-  void foo2() {
-    if (!mu.TryLock()) return;
-    a = 2;
-    mu.Unlock();
-  }
-
-  void foo3() {
-    bool b = mu.TryLock();
-    if (b) {
-      a = 3;
-      mu.Unlock();
-    }
-  }
-
-  void foo4() {
-    bool b = mu.TryLock();
-    if (!b) return;
-    a = 4;
-    mu.Unlock();
-  }
-
-  void foo5() {
-    while (mu.TryLock()) {
-      a = a + 1;
-      mu.Unlock();
-    }
-  }
-
-  void foo6() {
-    bool b = mu.TryLock();
-    b = !b;
-    if (b) return;
-    a = 6;
-    mu.Unlock();
-  }
-
-  void foo7() {
-    bool b1 = mu.TryLock();
-    bool b2 = !b1;
-    bool b3 = !b2;
-    if (b3) {
-      a = 7;
-      mu.Unlock();
-    }
-  }
-
-  // Test use-def chains: join points
-  void foo8() {
-    bool b  = mu.TryLock();
-    bool b2 = b;
-    if (cond)
-      b = true;
-    if (b) {    // b should be unknown at this point, because of the join point
-      a = 8;    // expected-warning {{writing variable 'a' requires locking 'mu' exclusively}}
-    }
-    if (b2) {   // b2 should be known at this point.
-      a = 8;
-      mu.Unlock();
-    }
-  }
-
-  // Test use-def-chains: back edges
-  void foo9() {
-    bool b = mu.TryLock();
-
-    for (int i = 0; i < 10; ++i);
-
-    if (b) {  // b is still known, because the loop doesn't alter it
-      a = 9;
-      mu.Unlock();
-    }
-  }
-
-  // Test use-def chains: back edges
-  void foo10() {
-    bool b = mu.TryLock();
-
-    while (cond) {
-      if (b) {   // b should be uknown at this point b/c of the loop
-        a = 10;  // expected-warning {{writing variable 'a' requires locking 'mu' exclusively}}
-      }
-      b = !b;
-    }
-  }
-
-  // Test merge of exclusive trylock
-  void foo11() {
-   if (cond) {
-     if (!mu.TryLock())
-       return;
-   }
-   else {
-     mu.Lock();
-   }
-   a = 10;
-   mu.Unlock();
-  }
-
-  // Test merge of shared trylock
-  void foo12() {
-   if (cond) {
-     if (!mu.ReaderTryLock())
-       return;
-   }
-   else {
-     mu.ReaderLock();
-   }
-   int i = a;
-   mu.Unlock();
-  }
-};  // end TestTrylock
-
-} // end namespace TrylockTest
-
-
-namespace TestTemplateAttributeInstantiation {
-
-class Foo1 {
-public:
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-};
-
-class Foo2 {
-public:
-  int a GUARDED_BY(mu_);
-  Mutex mu_;
-};
-
-
-class Bar {
-public:
-  // Test non-dependent expressions in attributes on template functions
-  template <class T>
-  void barND(Foo1 *foo, T *fooT) EXCLUSIVE_LOCKS_REQUIRED(foo->mu_) {
-    foo->a = 0;
-  }
-
-  // Test dependent expressions in attributes on template functions
-  template <class T>
-  void barD(Foo1 *foo, T *fooT) EXCLUSIVE_LOCKS_REQUIRED(fooT->mu_) {
-    fooT->a = 0;
-  }
-};
-
-
-template <class T>
-class BarT {
-public:
-  Foo1 fooBase;
-  T    fooBaseT;
-
-  // Test non-dependent expression in ordinary method on template class
-  void barND() EXCLUSIVE_LOCKS_REQUIRED(fooBase.mu_) {
-    fooBase.a = 0;
-  }
-
-  // Test dependent expressions in ordinary methods on template class
-  void barD() EXCLUSIVE_LOCKS_REQUIRED(fooBaseT.mu_) {
-    fooBaseT.a = 0;
-  }
-
-  // Test dependent expressions in template method in template class
-  template <class T2>
-  void barTD(T2 *fooT) EXCLUSIVE_LOCKS_REQUIRED(fooBaseT.mu_, fooT->mu_) {
-    fooBaseT.a = 0;
-    fooT->a = 0;
-  }
-};
-
-template <class T>
-class Cell {
-public:
-  Mutex mu_;
-  // Test dependent guarded_by
-  T data GUARDED_BY(mu_);
-
-  void fooEx() EXCLUSIVE_LOCKS_REQUIRED(mu_) {
-    data = 0;
-  }
-
-  void foo() {
-    mu_.Lock();
-    data = 0;
-    mu_.Unlock();
-  }
-};
-
-void test() {
-  Bar b;
-  BarT<Foo2> bt;
-  Foo1 f1;
-  Foo2 f2;
-
-  f1.mu_.Lock();
-  f2.mu_.Lock();
-  bt.fooBase.mu_.Lock();
-  bt.fooBaseT.mu_.Lock();
-
-  b.barND(&f1, &f2);
-  b.barD(&f1, &f2);
-  bt.barND();
-  bt.barD();
-  bt.barTD(&f2);
-
-  f1.mu_.Unlock();
-  bt.barTD(&f1);  // \
-    // expected-warning {{calling function 'barTD' requires exclusive lock on 'f1.mu_'}} \
-    // expected-note {{found near match 'bt.fooBase.mu_'}}
-
-  bt.fooBase.mu_.Unlock();
-  bt.fooBaseT.mu_.Unlock();
-  f2.mu_.Unlock();
-
-  Cell<int> cell;
-  cell.data = 0; // \
-    // expected-warning {{writing variable 'data' requires locking 'cell.mu_' exclusively}}
-  cell.foo();
-  cell.mu_.Lock();
-  cell.fooEx();
-  cell.mu_.Unlock();
-}
-
-
-template <class T>
-class CellDelayed {
-public:
-  // Test dependent guarded_by
-  T data GUARDED_BY(mu_);
-  static T static_data GUARDED_BY(static_mu_);
-
-  void fooEx(CellDelayed<T> *other) EXCLUSIVE_LOCKS_REQUIRED(mu_, other->mu_) {
-    this->data = other->data;
-  }
-
-  template <class T2>
-  void fooExT(CellDelayed<T2> *otherT) EXCLUSIVE_LOCKS_REQUIRED(mu_, otherT->mu_) {
-    this->data = otherT->data;
-  }
-
-  void foo() {
-    mu_.Lock();
-    data = 0;
-    mu_.Unlock();
-  }
-
-  Mutex mu_;
-  static Mutex static_mu_;
-};
-
-void testDelayed() {
-  CellDelayed<int> celld;
-  CellDelayed<int> celld2;
-  celld.foo();
-  celld.mu_.Lock();
-  celld2.mu_.Lock();
-
-  celld.fooEx(&celld2);
-  celld.fooExT(&celld2);
-
-  celld2.mu_.Unlock();
-  celld.mu_.Unlock();
-}
-
-};  // end namespace TestTemplateAttributeInstantiation
-
-
-namespace FunctionDeclDefTest {
-
-class Foo {
-public:
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-
-  virtual void foo1(Foo *f_declared) EXCLUSIVE_LOCKS_REQUIRED(f_declared->mu_);
-};
-
-// EXCLUSIVE_LOCKS_REQUIRED should be applied, and rewritten to f_defined->mu_
-void Foo::foo1(Foo *f_defined) {
-  f_defined->a = 0;
-};
-
-void test() {
-  Foo myfoo;
-  myfoo.foo1(&myfoo);  // \
-    // expected-warning {{calling function 'foo1' requires exclusive lock on 'myfoo.mu_'}}
-  myfoo.mu_.Lock();
-  myfoo.foo1(&myfoo);
-  myfoo.mu_.Unlock();
-}
-
-};
-
-namespace GoingNative {
-
-  struct __attribute__((lockable)) mutex {
-    void lock() __attribute__((exclusive_lock_function));
-    void unlock() __attribute__((unlock_function));
-    // ...
-  };
-  bool foo();
-  bool bar();
-  mutex m;
-  void test() {
-    m.lock();
-    while (foo()) {
-      m.unlock();
-      // ...
-      if (bar()) {
-        // ...
-        if (foo())
-          continue; // expected-warning {{expecting mutex 'm' to be locked at start of each loop}}
-        //...
-      }
-      // ...
-      m.lock(); // expected-note {{mutex acquired here}}
-    }
-    m.unlock();
-  }
-
-}
-
-
-
-namespace FunctionDefinitionTest {
-
-class Foo {
-public:
-  void foo1();
-  void foo2();
-  void foo3(Foo *other);
-
-  template<class T>
-  void fooT1(const T& dummy1);
-
-  template<class T>
-  void fooT2(const T& dummy2) EXCLUSIVE_LOCKS_REQUIRED(mu_);
-
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-};
-
-template<class T>
-class FooT {
-public:
-  void foo();
-
-  Mutex mu_;
-  T a GUARDED_BY(mu_);
-};
-
-
-void Foo::foo1() NO_THREAD_SAFETY_ANALYSIS {
-  a = 1;
-}
-
-void Foo::foo2() EXCLUSIVE_LOCKS_REQUIRED(mu_) {
-  a = 2;
-}
-
-void Foo::foo3(Foo *other) EXCLUSIVE_LOCKS_REQUIRED(other->mu_) {
-  other->a = 3;
-}
-
-template<class T>
-void Foo::fooT1(const T& dummy1) EXCLUSIVE_LOCKS_REQUIRED(mu_) {
-  a = dummy1;
-}
-
-/* TODO -- uncomment with template instantiation of attributes.
-template<class T>
-void Foo::fooT2(const T& dummy2) {
-  a = dummy2;
-}
-*/
-
-void fooF1(Foo *f) EXCLUSIVE_LOCKS_REQUIRED(f->mu_) {
-  f->a = 1;
-}
-
-void fooF2(Foo *f);
-void fooF2(Foo *f) EXCLUSIVE_LOCKS_REQUIRED(f->mu_) {
-  f->a = 2;
-}
-
-void fooF3(Foo *f) EXCLUSIVE_LOCKS_REQUIRED(f->mu_);
-void fooF3(Foo *f) {
-  f->a = 3;
-}
-
-template<class T>
-void FooT<T>::foo() EXCLUSIVE_LOCKS_REQUIRED(mu_) {
-  a = 0;
-}
-
-void test() {
-  int dummy = 0;
-  Foo myFoo;
-
-  myFoo.foo2();        // \
-    // expected-warning {{calling function 'foo2' requires exclusive lock on 'myFoo.mu_'}}
-  myFoo.foo3(&myFoo);  // \
-    // expected-warning {{calling function 'foo3' requires exclusive lock on 'myFoo.mu_'}}
-  myFoo.fooT1(dummy);  // \
-    // expected-warning {{calling function 'fooT1' requires exclusive lock on 'myFoo.mu_'}}
-
-  myFoo.fooT2(dummy);  // \
-    // expected-warning {{calling function 'fooT2' requires exclusive lock on 'myFoo.mu_'}}
-
-  fooF1(&myFoo);  // \
-    // expected-warning {{calling function 'fooF1' requires exclusive lock on 'myFoo.mu_'}}
-  fooF2(&myFoo);  // \
-    // expected-warning {{calling function 'fooF2' requires exclusive lock on 'myFoo.mu_'}}
-  fooF3(&myFoo);  // \
-    // expected-warning {{calling function 'fooF3' requires exclusive lock on 'myFoo.mu_'}}
-
-  myFoo.mu_.Lock();
-  myFoo.foo2();
-  myFoo.foo3(&myFoo);
-  myFoo.fooT1(dummy);
-
-  myFoo.fooT2(dummy);
-
-  fooF1(&myFoo);
-  fooF2(&myFoo);
-  fooF3(&myFoo);
-  myFoo.mu_.Unlock();
-
-  FooT<int> myFooT;
-  myFooT.foo();  // \
-    // expected-warning {{calling function 'foo' requires exclusive lock on 'myFooT.mu_'}}
-}
-
-} // end namespace FunctionDefinitionTest
-
-
-namespace SelfLockingTest {
-
-class LOCKABLE MyLock {
-public:
-  int foo GUARDED_BY(this);
-
-  void lock()   EXCLUSIVE_LOCK_FUNCTION();
-  void unlock() UNLOCK_FUNCTION();
-
-  void doSomething() {
-    this->lock();  // allow 'this' as a lock expression
-    foo = 0;
-    doSomethingElse();
-    this->unlock();
-  }
-
-  void doSomethingElse() EXCLUSIVE_LOCKS_REQUIRED(this) {
-    foo = 1;
-  };
-
-  void test() {
-    foo = 2;  // \
-      // expected-warning {{writing variable 'foo' requires locking 'this' exclusively}}
-  }
-};
-
-
-class LOCKABLE MyLock2 {
-public:
-  Mutex mu_;
-  int foo GUARDED_BY(this);
-
-  // don't check inside lock and unlock functions
-  void lock()   EXCLUSIVE_LOCK_FUNCTION() { mu_.Lock();   }
-  void unlock() UNLOCK_FUNCTION()         { mu_.Unlock(); }
-
-  // don't check inside constructors and destructors
-  MyLock2()  { foo = 1; }
-  ~MyLock2() { foo = 0; }
-};
-
-
-} // end namespace SelfLockingTest
-
-
-namespace InvalidNonstatic {
-
-// Forward decl here causes bogus "invalid use of non-static data member"
-// on reference to mutex_ in guarded_by attribute.
-class Foo;
-
-class Foo {
-  Mutex* mutex_;
-
-  int foo __attribute__((guarded_by(mutex_)));
-};
-
-}  // end namespace InvalidNonStatic
-
-
-namespace NoReturnTest {
-
-bool condition();
-void fatal() __attribute__((noreturn));
-
-Mutex mu_;
-
-void test1() {
-  MutexLock lock(&mu_);
-  if (condition()) {
-    fatal();
-    return;
-  }
-}
-
-} // end namespace NoReturnTest
-
-
-namespace TestMultiDecl {
-
-class Foo {
-public:
-  int GUARDED_BY(mu_) a;
-  int GUARDED_BY(mu_) b, c;
-
-  void foo() {
-    a = 0; // \
-      // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-    b = 0; // \
-      // expected-warning {{writing variable 'b' requires locking 'mu_' exclusively}}
-    c = 0; // \
-      // expected-warning {{writing variable 'c' requires locking 'mu_' exclusively}}
-  }
-
-private:
-  Mutex mu_;
-};
-
-} // end namespace TestMultiDecl
-
-
-namespace WarnNoDecl {
-
-class Foo {
-  void foo(int a);  __attribute__(( // \
-    // expected-warning {{declaration does not declare anything}}
-    exclusive_locks_required(a))); // \
-    // expected-warning {{attribute exclusive_locks_required ignored}}
-};
-
-} // end namespace WarnNoDecl
-
-
-
-namespace MoreLockExpressions {
-
-class Foo {
-public:
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-};
-
-class Bar {
-public:
-  int b;
-  Foo* f;
-
-  Foo& getFoo()              { return *f; }
-  Foo& getFoo2(int c)        { return *f; }
-  Foo& getFoo3(int c, int d) { return *f; }
-
-  Foo& getFooey() { return *f; }
-};
-
-Foo& getBarFoo(Bar &bar, int c) { return bar.getFoo2(c); }
-
-void test() {
-  Foo foo;
-  Foo *fooArray;
-  Bar bar;
-  int a;
-  int b;
-  int c;
-
-  bar.getFoo().mu_.Lock();
-  bar.getFoo().a = 0;
-  bar.getFoo().mu_.Unlock();
-
-  (bar.getFoo().mu_).Lock();   // test parenthesis
-  bar.getFoo().a = 0;
-  (bar.getFoo().mu_).Unlock();
-
-  bar.getFoo2(a).mu_.Lock();
-  bar.getFoo2(a).a = 0;
-  bar.getFoo2(a).mu_.Unlock();
-
-  bar.getFoo3(a, b).mu_.Lock();
-  bar.getFoo3(a, b).a = 0;
-  bar.getFoo3(a, b).mu_.Unlock();
-
-  getBarFoo(bar, a).mu_.Lock();
-  getBarFoo(bar, a).a = 0;
-  getBarFoo(bar, a).mu_.Unlock();
-
-  bar.getFoo2(10).mu_.Lock();
-  bar.getFoo2(10).a = 0;
-  bar.getFoo2(10).mu_.Unlock();
-
-  bar.getFoo2(a + 1).mu_.Lock();
-  bar.getFoo2(a + 1).a = 0;
-  bar.getFoo2(a + 1).mu_.Unlock();
-
-  (a > 0 ? fooArray[1] : fooArray[b]).mu_.Lock();
-  (a > 0 ? fooArray[1] : fooArray[b]).a = 0;
-  (a > 0 ? fooArray[1] : fooArray[b]).mu_.Unlock();
-
-  bar.getFoo().mu_.Lock();
-  bar.getFooey().a = 0; // \
-    // expected-warning {{writing variable 'a' requires locking 'bar.getFooey().mu_' exclusively}} \
-    // expected-note {{found near match 'bar.getFoo().mu_'}}
-  bar.getFoo().mu_.Unlock();
-
-  bar.getFoo2(a).mu_.Lock();
-  bar.getFoo2(b).a = 0; // \
-    // expected-warning {{writing variable 'a' requires locking 'bar.getFoo2(b).mu_' exclusively}} \
-    // expected-note {{found near match 'bar.getFoo2(a).mu_'}}
-  bar.getFoo2(a).mu_.Unlock();
-
-  bar.getFoo3(a, b).mu_.Lock();
-  bar.getFoo3(a, c).a = 0;  // \
-    // expected-warning {{writing variable 'a' requires locking 'bar.getFoo3(a,c).mu_' exclusively}} \
-    // expected-note {{'bar.getFoo3(a,b).mu_'}}
-  bar.getFoo3(a, b).mu_.Unlock();
-
-  getBarFoo(bar, a).mu_.Lock();
-  getBarFoo(bar, b).a = 0;  // \
-    // expected-warning {{writing variable 'a' requires locking 'getBarFoo(bar,b).mu_' exclusively}} \
-    // expected-note {{'getBarFoo(bar,a).mu_'}}
-  getBarFoo(bar, a).mu_.Unlock();
-
-  (a > 0 ? fooArray[1] : fooArray[b]).mu_.Lock();
-  (a > 0 ? fooArray[b] : fooArray[c]).a = 0; // \
-    // expected-warning {{writing variable 'a' requires locking '((a#_)#_#fooArray[b]).mu_' exclusively}} \
-    // expected-note {{'((a#_)#_#fooArray[_]).mu_'}}
-  (a > 0 ? fooArray[1] : fooArray[b]).mu_.Unlock();
-}
-
-
-} // end namespace MoreLockExpressions
-
-
-namespace TrylockJoinPoint {
-
-class Foo {
-  Mutex mu;
-  bool c;
-
-  void foo() {
-    if (c) {
-      if (!mu.TryLock())
-        return;
-    } else {
-      mu.Lock();
-    }
-    mu.Unlock();
-  }
-};
-
-} // end namespace TrylockJoinPoint
-
-
-namespace LockReturned {
-
-class Foo {
-public:
-  int a             GUARDED_BY(mu_);
-  void foo()        EXCLUSIVE_LOCKS_REQUIRED(mu_);
-  void foo2(Foo* f) EXCLUSIVE_LOCKS_REQUIRED(mu_, f->mu_);
-
-  static void sfoo(Foo* f) EXCLUSIVE_LOCKS_REQUIRED(f->mu_);
-
-  Mutex* getMu() LOCK_RETURNED(mu_);
-
-  Mutex mu_;
-
-  static Mutex* getMu(Foo* f) LOCK_RETURNED(f->mu_);
-};
-
-
-// Calls getMu() directly to lock and unlock
-void test1(Foo* f1, Foo* f2) {
-  f1->a = 0;       // expected-warning {{writing variable 'a' requires locking 'f1->mu_' exclusively}}
-  f1->foo();       // expected-warning {{calling function 'foo' requires exclusive lock on 'f1->mu_'}}
-
-  f1->foo2(f2);    // expected-warning {{calling function 'foo2' requires exclusive lock on 'f1->mu_'}} \
-                   // expected-warning {{calling function 'foo2' requires exclusive lock on 'f2->mu_'}}
-  Foo::sfoo(f1);   // expected-warning {{calling function 'sfoo' requires exclusive lock on 'f1->mu_'}}
-
-  f1->getMu()->Lock();
-
-  f1->a = 0;
-  f1->foo();
-  f1->foo2(f2); // \
-    // expected-warning {{calling function 'foo2' requires exclusive lock on 'f2->mu_'}} \
-    // expected-note {{found near match 'f1->mu_'}}
-
-  Foo::getMu(f2)->Lock();
-  f1->foo2(f2);
-  Foo::getMu(f2)->Unlock();
-
-  Foo::sfoo(f1);
-
-  f1->getMu()->Unlock();
-}
-
-
-Mutex* getFooMu(Foo* f) LOCK_RETURNED(Foo::getMu(f));
-
-class Bar : public Foo {
-public:
-  int  b            GUARDED_BY(getMu());
-  void bar()        EXCLUSIVE_LOCKS_REQUIRED(getMu());
-  void bar2(Bar* g) EXCLUSIVE_LOCKS_REQUIRED(getMu(this), g->getMu());
-
-  static void sbar(Bar* g)  EXCLUSIVE_LOCKS_REQUIRED(g->getMu());
-  static void sbar2(Bar* g) EXCLUSIVE_LOCKS_REQUIRED(getFooMu(g));
-};
-
-
-
-// Use getMu() within other attributes.
-// This requires at lest levels of substitution, more in the case of
-void test2(Bar* b1, Bar* b2) {
-  b1->b = 0;       // expected-warning {{writing variable 'b' requires locking 'b1->mu_' exclusively}}
-  b1->bar();       // expected-warning {{calling function 'bar' requires exclusive lock on 'b1->mu_'}}
-  b1->bar2(b2);    // expected-warning {{calling function 'bar2' requires exclusive lock on 'b1->mu_'}} \
-                   // expected-warning {{calling function 'bar2' requires exclusive lock on 'b2->mu_'}}
-  Bar::sbar(b1);   // expected-warning {{calling function 'sbar' requires exclusive lock on 'b1->mu_'}}
-  Bar::sbar2(b1);  // expected-warning {{calling function 'sbar2' requires exclusive lock on 'b1->mu_'}}
-
-  b1->getMu()->Lock();
-
-  b1->b = 0;
-  b1->bar();
-  b1->bar2(b2);  // \
-    // expected-warning {{calling function 'bar2' requires exclusive lock on 'b2->mu_'}} \
-    // // expected-note {{found near match 'b1->mu_'}}
-
-  b2->getMu()->Lock();
-  b1->bar2(b2);
-
-  b2->getMu()->Unlock();
-
-  Bar::sbar(b1);
-  Bar::sbar2(b1);
-
-  b1->getMu()->Unlock();
-}
-
-
-// Sanity check -- lock the mutex directly, but use attributes that call getMu()
-// Also lock the mutex using getFooMu, which calls a lock_returned function.
-void test3(Bar* b1, Bar* b2) {
-  b1->mu_.Lock();
-  b1->b = 0;
-  b1->bar();
-
-  getFooMu(b2)->Lock();
-  b1->bar2(b2);
-  getFooMu(b2)->Unlock();
-
-  Bar::sbar(b1);
-  Bar::sbar2(b1);
-
-  b1->mu_.Unlock();
-}
-
-} // end namespace LockReturned
-
-
-namespace ReleasableScopedLock {
-
-class Foo {
-  Mutex mu_;
-  bool c;
-  int a GUARDED_BY(mu_);
-
-  void test1();
-  void test2();
-  void test3();
-  void test4();
-  void test5();
-};
-
-
-void Foo::test1() {
-  ReleasableMutexLock rlock(&mu_);
-  rlock.Release();
-}
-
-void Foo::test2() {
-  ReleasableMutexLock rlock(&mu_);
-  if (c) {            // test join point -- held/not held during release
-    rlock.Release();
-  }
-}
-
-void Foo::test3() {
-  ReleasableMutexLock rlock(&mu_);
-  a = 0;
-  rlock.Release();
-  a = 1;  // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-}
-
-void Foo::test4() {
-  ReleasableMutexLock rlock(&mu_);
-  rlock.Release();
-  rlock.Release();  // expected-warning {{unlocking 'mu_' that was not locked}}
-}
-
-void Foo::test5() {
-  ReleasableMutexLock rlock(&mu_);
-  if (c) {
-    rlock.Release();
-  }
-  // no warning on join point for managed lock.
-  rlock.Release();  // expected-warning {{unlocking 'mu_' that was not locked}}
-}
-
-
-} // end namespace ReleasableScopedLock
-
-
-namespace TrylockFunctionTest {
-
-class Foo {
-public:
-  Mutex mu1_;
-  Mutex mu2_;
-  bool c;
-
-  bool lockBoth() EXCLUSIVE_TRYLOCK_FUNCTION(true, mu1_, mu2_);
-};
-
-bool Foo::lockBoth() {
-  if (!mu1_.TryLock())
-    return false;
-
-  mu2_.Lock();
-  if (!c) {
-    mu1_.Unlock();
-    mu2_.Unlock();
-    return false;
-  }
-
-  return true;
-}
-
-
-}  // end namespace TrylockFunctionTest
-
-
-
-namespace DoubleLockBug {
-
-class Foo {
-public:
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-
-  void foo1() EXCLUSIVE_LOCKS_REQUIRED(mu_);
-  int  foo2() SHARED_LOCKS_REQUIRED(mu_);
-};
-
-
-void Foo::foo1() EXCLUSIVE_LOCKS_REQUIRED(mu_) {
-  a = 0;
-}
-
-int Foo::foo2() SHARED_LOCKS_REQUIRED(mu_) {
-  return a;
-}
-
-}
-
-
-
-namespace UnlockBug {
-
-class Foo {
-public:
-  Mutex mutex_;
-
-  void foo1() EXCLUSIVE_LOCKS_REQUIRED(mutex_) {  // expected-note {{mutex acquired here}}
-    mutex_.Unlock();
-  }  // expected-warning {{expecting mutex 'mutex_' to be locked at the end of function}}
-
-
-  void foo2() SHARED_LOCKS_REQUIRED(mutex_) {   // expected-note {{mutex acquired here}}
-    mutex_.Unlock();
-  }  // expected-warning {{expecting mutex 'mutex_' to be locked at the end of function}}
-};
-
-} // end namespace UnlockBug
-
-
-
-namespace FoolishScopedLockableBug {
-
-class SCOPED_LOCKABLE WTF_ScopedLockable {
-public:
-  WTF_ScopedLockable(Mutex* mu) EXCLUSIVE_LOCK_FUNCTION(mu);
-
-  // have to call release() manually;
-  ~WTF_ScopedLockable();
-
-  void release() UNLOCK_FUNCTION();
-};
-
-
-class Foo {
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-  bool c;
-
-  void doSomething();
-
-  void test1() {
-    WTF_ScopedLockable wtf(&mu_);
-    wtf.release();
-  }
-
-  void test2() {
-    WTF_ScopedLockable wtf(&mu_);  // expected-note {{mutex acquired here}}
-  }  // expected-warning {{mutex 'mu_' is still locked at the end of function}}
-
-  void test3() {
-    if (c) {
-      WTF_ScopedLockable wtf(&mu_);
-      wtf.release();
-    }
-  }
-
-  void test4() {
-    if (c) {
-      doSomething();
-    }
-    else {
-      WTF_ScopedLockable wtf(&mu_);
-      wtf.release();
-    }
-  }
-
-  void test5() {
-    if (c) {
-      WTF_ScopedLockable wtf(&mu_);  // expected-note {{mutex acquired here}}
-    }
-  } // expected-warning {{mutex 'mu_' is not locked on every path through here}}
-
-  void test6() {
-    if (c) {
-      doSomething();
-    }
-    else {
-      WTF_ScopedLockable wtf(&mu_);  // expected-note {{mutex acquired here}}
-    }
-  } // expected-warning {{mutex 'mu_' is not locked on every path through here}}
-};
-
-
-} // end namespace FoolishScopedLockableBug
-
-
-
-namespace TemporaryCleanupExpr {
-
-class Foo {
-  int a GUARDED_BY(getMutexPtr().get());
-
-  SmartPtr<Mutex> getMutexPtr();
-
-  void test();
-};
-
-
-void Foo::test() {
-  {
-    ReaderMutexLock lock(getMutexPtr().get());
-    int b = a;
-  }
-  int b = a;  // expected-warning {{reading variable 'a' requires locking 'getMutexPtr()'}}
-}
-
-} // end namespace TemporaryCleanupExpr
-
-
-
-namespace SmartPointerTests {
-
-class Foo {
-public:
-  SmartPtr<Mutex> mu_;
-  int a GUARDED_BY(mu_);
-  int b GUARDED_BY(mu_.get());
-  int c GUARDED_BY(*mu_);
-
-  void Lock()   EXCLUSIVE_LOCK_FUNCTION(mu_);
-  void Unlock() UNLOCK_FUNCTION(mu_);
-
-  void test0();
-  void test1();
-  void test2();
-  void test3();
-  void test4();
-  void test5();
-  void test6();
-  void test7();
-  void test8();
-};
-
-void Foo::test0() {
-  a = 0;  // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-  b = 0;  // expected-warning {{writing variable 'b' requires locking 'mu_' exclusively}}
-  c = 0;  // expected-warning {{writing variable 'c' requires locking 'mu_' exclusively}}
-}
-
-void Foo::test1() {
-  mu_->Lock();
-  a = 0;
-  b = 0;
-  c = 0;
-  mu_->Unlock();
-}
-
-void Foo::test2() {
-  (*mu_).Lock();
-  a = 0;
-  b = 0;
-  c = 0;
-  (*mu_).Unlock();
-}
-
-
-void Foo::test3() {
-  mu_.get()->Lock();
-  a = 0;
-  b = 0;
-  c = 0;
-  mu_.get()->Unlock();
-}
-
-
-void Foo::test4() {
-  MutexLock lock(mu_.get());
-  a = 0;
-  b = 0;
-  c = 0;
-}
-
-
-void Foo::test5() {
-  MutexLock lock(&(*mu_));
-  a = 0;
-  b = 0;
-  c = 0;
-}
-
-
-void Foo::test6() {
-  Lock();
-  a = 0;
-  b = 0;
-  c = 0;
-  Unlock();
-}
-
-
-void Foo::test7() {
-  {
-    Lock();
-    mu_->Unlock();
-  }
-  {
-    mu_->Lock();
-    Unlock();
-  }
-  {
-    mu_.get()->Lock();
-    mu_->Unlock();
-  }
-  {
-    mu_->Lock();
-    mu_.get()->Unlock();
-  }
-  {
-    mu_.get()->Lock();
-    (*mu_).Unlock();
-  }
-  {
-    (*mu_).Lock();
-    mu_->Unlock();
-  }
-}
-
-
-void Foo::test8() {
-  mu_->Lock();
-  mu_.get()->Lock();    // expected-warning {{locking 'mu_' that is already locked}}
-  (*mu_).Lock();        // expected-warning {{locking 'mu_' that is already locked}}
-  mu_.get()->Unlock();
-  Unlock();             // expected-warning {{unlocking 'mu_' that was not locked}}
-}
-
-
-class Bar {
-  SmartPtr<Foo> foo;
-
-  void test0();
-  void test1();
-  void test2();
-  void test3();
-};
-
-
-void Bar::test0() {
-  foo->a = 0;         // expected-warning {{writing variable 'a' requires locking 'foo->mu_' exclusively}}
-  (*foo).b = 0;       // expected-warning {{writing variable 'b' requires locking 'foo->mu_' exclusively}}
-  foo.get()->c = 0;   // expected-warning {{writing variable 'c' requires locking 'foo->mu_' exclusively}}
-}
-
-
-void Bar::test1() {
-  foo->mu_->Lock();
-  foo->a = 0;
-  (*foo).b = 0;
-  foo.get()->c = 0;
-  foo->mu_->Unlock();
-}
-
-
-void Bar::test2() {
-  (*foo).mu_->Lock();
-  foo->a = 0;
-  (*foo).b = 0;
-  foo.get()->c = 0;
-  foo.get()->mu_->Unlock();
-}
-
-
-void Bar::test3() {
-  MutexLock lock(foo->mu_.get());
-  foo->a = 0;
-  (*foo).b = 0;
-  foo.get()->c = 0;
-}
-
-}  // end namespace SmartPointerTests
-
-
-
-namespace DuplicateAttributeTest {
-
-class LOCKABLE Foo {
-public:
-  Mutex mu1_;
-  Mutex mu2_;
-  Mutex mu3_;
-  int a GUARDED_BY(mu1_);
-  int b GUARDED_BY(mu2_);
-  int c GUARDED_BY(mu3_);
-
-  void lock()   EXCLUSIVE_LOCK_FUNCTION();
-  void unlock() UNLOCK_FUNCTION();
-
-  void lock1()  EXCLUSIVE_LOCK_FUNCTION(mu1_);
-  void slock1() SHARED_LOCK_FUNCTION(mu1_);
-  void lock3()  EXCLUSIVE_LOCK_FUNCTION(mu1_, mu2_, mu3_);
-  void locklots()
-    EXCLUSIVE_LOCK_FUNCTION(mu1_)
-    EXCLUSIVE_LOCK_FUNCTION(mu2_)
-    EXCLUSIVE_LOCK_FUNCTION(mu1_, mu2_, mu3_);
-
-  void unlock1() UNLOCK_FUNCTION(mu1_);
-  void unlock3() UNLOCK_FUNCTION(mu1_, mu2_, mu3_);
-  void unlocklots()
-    UNLOCK_FUNCTION(mu1_)
-    UNLOCK_FUNCTION(mu2_)
-    UNLOCK_FUNCTION(mu1_, mu2_, mu3_);
-};
-
-
-void Foo::lock()   EXCLUSIVE_LOCK_FUNCTION() { }
-void Foo::unlock() UNLOCK_FUNCTION()         { }
-
-void Foo::lock1()  EXCLUSIVE_LOCK_FUNCTION(mu1_) {
-  mu1_.Lock();
-}
-
-void Foo::slock1() SHARED_LOCK_FUNCTION(mu1_) {
-  mu1_.ReaderLock();
-}
-
-void Foo::lock3()  EXCLUSIVE_LOCK_FUNCTION(mu1_, mu2_, mu3_) {
-  mu1_.Lock();
-  mu2_.Lock();
-  mu3_.Lock();
-}
-
-void Foo::locklots()
-    EXCLUSIVE_LOCK_FUNCTION(mu1_, mu2_)
-    EXCLUSIVE_LOCK_FUNCTION(mu2_, mu3_) {
-  mu1_.Lock();
-  mu2_.Lock();
-  mu3_.Lock();
-}
-
-void Foo::unlock1() UNLOCK_FUNCTION(mu1_) {
-  mu1_.Unlock();
-}
-
-void Foo::unlock3() UNLOCK_FUNCTION(mu1_, mu2_, mu3_) {
-  mu1_.Unlock();
-  mu2_.Unlock();
-  mu3_.Unlock();
-}
-
-void Foo::unlocklots()
-    UNLOCK_FUNCTION(mu1_, mu2_)
-    UNLOCK_FUNCTION(mu2_, mu3_) {
-  mu1_.Unlock();
-  mu2_.Unlock();
-  mu3_.Unlock();
-}
-
-
-void test0() {
-  Foo foo;
-  foo.lock();
-  foo.unlock();
-
-  foo.lock();
-  foo.lock();     // expected-warning {{locking 'foo' that is already locked}}
-  foo.unlock();
-  foo.unlock();   // expected-warning {{unlocking 'foo' that was not locked}}
-}
-
-
-void test1() {
-  Foo foo;
-  foo.lock1();
-  foo.a = 0;
-  foo.unlock1();
-
-  foo.lock1();
-  foo.lock1();    // expected-warning {{locking 'foo.mu1_' that is already locked}}
-  foo.a = 0;
-  foo.unlock1();
-  foo.unlock1();  // expected-warning {{unlocking 'foo.mu1_' that was not locked}}
-}
-
-
-int test2() {
-  Foo foo;
-  foo.slock1();
-  int d1 = foo.a;
-  foo.unlock1();
-
-  foo.slock1();
-  foo.slock1();    // expected-warning {{locking 'foo.mu1_' that is already locked}}
-  int d2 = foo.a;
-  foo.unlock1();
-  foo.unlock1();   // expected-warning {{unlocking 'foo.mu1_' that was not locked}}
-  return d1 + d2;
-}
-
-
-void test3() {
-  Foo foo;
-  foo.lock3();
-  foo.a = 0;
-  foo.b = 0;
-  foo.c = 0;
-  foo.unlock3();
-
-  foo.lock3();
-  foo.lock3(); // \
-    // expected-warning {{locking 'foo.mu1_' that is already locked}} \
-    // expected-warning {{locking 'foo.mu2_' that is already locked}} \
-    // expected-warning {{locking 'foo.mu3_' that is already locked}}
-  foo.a = 0;
-  foo.b = 0;
-  foo.c = 0;
-  foo.unlock3();
-  foo.unlock3(); // \
-    // expected-warning {{unlocking 'foo.mu1_' that was not locked}} \
-    // expected-warning {{unlocking 'foo.mu2_' that was not locked}} \
-    // expected-warning {{unlocking 'foo.mu3_' that was not locked}}
-}
-
-
-void testlots() {
-  Foo foo;
-  foo.locklots();
-  foo.a = 0;
-  foo.b = 0;
-  foo.c = 0;
-  foo.unlocklots();
-
-  foo.locklots();
-  foo.locklots(); // \
-    // expected-warning {{locking 'foo.mu1_' that is already locked}} \
-    // expected-warning {{locking 'foo.mu2_' that is already locked}} \
-    // expected-warning {{locking 'foo.mu3_' that is already locked}}
-  foo.a = 0;
-  foo.b = 0;
-  foo.c = 0;
-  foo.unlocklots();
-  foo.unlocklots(); // \
-    // expected-warning {{unlocking 'foo.mu1_' that was not locked}} \
-    // expected-warning {{unlocking 'foo.mu2_' that was not locked}} \
-    // expected-warning {{unlocking 'foo.mu3_' that was not locked}}
-}
-
-}  // end namespace DuplicateAttributeTest
-
-
-
-namespace TryLockEqTest {
-
-class Foo {
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-  bool c;
-
-  int    tryLockMutexI() EXCLUSIVE_TRYLOCK_FUNCTION(1, mu_);
-  Mutex* tryLockMutexP() EXCLUSIVE_TRYLOCK_FUNCTION(1, mu_);
-  void unlock() UNLOCK_FUNCTION(mu_);
-
-  void test1();
-  void test2();
-};
-
-
-void Foo::test1() {
-  if (tryLockMutexP() == 0) {
-    a = 0;  // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-    return;
-  }
-  a = 0;
-  unlock();
-
-  if (tryLockMutexP() != 0) {
-    a = 0;
-    unlock();
-  }
-
-  if (0 != tryLockMutexP()) {
-    a = 0;
-    unlock();
-  }
-
-  if (!(tryLockMutexP() == 0)) {
-    a = 0;
-    unlock();
-  }
-
-  if (tryLockMutexI() == 0) {
-    a = 0;   // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-    return;
-  }
-  a = 0;
-  unlock();
-
-  if (0 == tryLockMutexI()) {
-    a = 0;   // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-    return;
-  }
-  a = 0;
-  unlock();
-
-  if (tryLockMutexI() == 1) {
-    a = 0;
-    unlock();
-  }
-
-  if (mu_.TryLock() == false) {
-    a = 0;   // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-    return;
-  }
-  a = 0;
-  unlock();
-
-  if (mu_.TryLock() == true) {
-    a = 0;
-    unlock();
-  }
-  else {
-    a = 0;  // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-  }
-
-#if __has_feature(cxx_nullptr)
-  if (tryLockMutexP() == nullptr) {
-    a = 0;  // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-    return;
-  }
-  a = 0;
-  unlock();
-#endif
-}
-
-
-void Foo::test2() {
-/* FIXME: these tests depend on changes to the CFG.
- *
-  if (mu_.TryLock() && c) {
-    a = 0;
-    unlock();
-  }
-  else return;
-
-  if (c && mu_.TryLock()) {
-    a = 0;
-    unlock();
-  }
-  else return;
-
-  if (!(mu_.TryLock() && c))
-    return;
-  a = 0;
-  unlock();
-
-  if (!(c && mu_.TryLock()))
-    return;
-  a = 0;
-  unlock();
-
-  if (!(mu_.TryLock() == 0) && c) {
-    a = 0;
-    unlock();
-  }
-
-  if (!mu_.TryLock() || c)
-    return;
-  a = 0;
-  unlock();
-*/
-}
-
-} // end namespace TryLockEqTest
-
-
-namespace ExistentialPatternMatching {
-
-class Graph {
-public:
-  Mutex mu_;
-};
-
-void LockAllGraphs()   EXCLUSIVE_LOCK_FUNCTION(&Graph::mu_);
-void UnlockAllGraphs() UNLOCK_FUNCTION(&Graph::mu_);
-
-class Node {
-public:
-  int a GUARDED_BY(&Graph::mu_);
-
-  void foo()  EXCLUSIVE_LOCKS_REQUIRED(&Graph::mu_) {
-    a = 0;
-  }
-  void foo2() LOCKS_EXCLUDED(&Graph::mu_);
-};
-
-void test() {
-  Graph g1;
-  Graph g2;
-  Node n1;
-
-  n1.a = 0;   // expected-warning {{writing variable 'a' requires locking '&ExistentialPatternMatching::Graph::mu_' exclusively}}
-  n1.foo();   // expected-warning {{calling function 'foo' requires exclusive lock on '&ExistentialPatternMatching::Graph::mu_'}}
-  n1.foo2();
-
-  g1.mu_.Lock();
-  n1.a = 0;
-  n1.foo();
-  n1.foo2();  // expected-warning {{cannot call function 'foo2' while mutex '&ExistentialPatternMatching::Graph::mu_' is locked}}
-  g1.mu_.Unlock();
-
-  g2.mu_.Lock();
-  n1.a = 0;
-  n1.foo();
-  n1.foo2();  // expected-warning {{cannot call function 'foo2' while mutex '&ExistentialPatternMatching::Graph::mu_' is locked}}
-  g2.mu_.Unlock();
-
-  LockAllGraphs();
-  n1.a = 0;
-  n1.foo();
-  n1.foo2();  // expected-warning {{cannot call function 'foo2' while mutex '&ExistentialPatternMatching::Graph::mu_' is locked}}
-  UnlockAllGraphs();
-
-  LockAllGraphs();
-  g1.mu_.Unlock();
-
-  LockAllGraphs();
-  g2.mu_.Unlock();
-
-  LockAllGraphs();
-  g1.mu_.Lock();  // expected-warning {{locking 'g1.mu_' that is already locked}}
-  g1.mu_.Unlock();
-}
-
-} // end namespace ExistentialPatternMatching
-
-
-namespace StringIgnoreTest {
-
-class Foo {
-public:
-  Mutex mu_;
-  void lock()   EXCLUSIVE_LOCK_FUNCTION("");
-  void unlock() UNLOCK_FUNCTION("");
-  void goober() EXCLUSIVE_LOCKS_REQUIRED("");
-  void roober() SHARED_LOCKS_REQUIRED("");
-};
-
-
-class Bar : public Foo {
-public:
-  void bar(Foo* f) {
-    f->unlock();
-    f->goober();
-    f->roober();
-    f->lock();
-  };
-};
-
-} // end namespace StringIgnoreTest
-
-
-namespace LockReturnedScopeFix {
-
-class Base {
-protected:
-  struct Inner;
-  bool c;
-
-  const Mutex& getLock(const Inner* i);
-
-  void lockInner  (Inner* i) EXCLUSIVE_LOCK_FUNCTION(getLock(i));
-  void unlockInner(Inner* i) UNLOCK_FUNCTION(getLock(i));
-  void foo(Inner* i) EXCLUSIVE_LOCKS_REQUIRED(getLock(i));
-
-  void bar(Inner* i);
-};
-
-
-struct Base::Inner {
-  Mutex lock_;
-  void doSomething() EXCLUSIVE_LOCKS_REQUIRED(lock_);
-};
-
-
-const Mutex& Base::getLock(const Inner* i) LOCK_RETURNED(i->lock_) {
-  return i->lock_;
-}
-
-
-void Base::foo(Inner* i) {
-  i->doSomething();
-}
-
-void Base::bar(Inner* i) {
-  if (c) {
-    i->lock_.Lock();
-    unlockInner(i);
-  }
-  else {
-    lockInner(i);
-    i->lock_.Unlock();
-  }
-}
-
-} // end namespace LockReturnedScopeFix
-
-
-namespace TrylockWithCleanups {
-
-struct Foo {
-  Mutex mu_;
-  int a GUARDED_BY(mu_);
-};
-
-Foo* GetAndLockFoo(const MyString& s)
-    EXCLUSIVE_TRYLOCK_FUNCTION(true, &Foo::mu_);
-
-static void test() {
-  Foo* lt = GetAndLockFoo("foo");
-  if (!lt) return;
-  int a = lt->a;
-  lt->mu_.Unlock();
-}
-
-}  // end namespace TrylockWithCleanups
-
-
-namespace UniversalLock {
-
-class Foo {
-  Mutex mu_;
-  bool c;
-
-  int a        GUARDED_BY(mu_);
-  void r_foo() SHARED_LOCKS_REQUIRED(mu_);
-  void w_foo() EXCLUSIVE_LOCKS_REQUIRED(mu_);
-
-  void test1() {
-    int b;
-
-    beginNoWarnOnReads();
-    b = a;
-    r_foo();
-    endNoWarnOnReads();
-
-    beginNoWarnOnWrites();
-    a = 0;
-    w_foo();
-    endNoWarnOnWrites();
-  }
-
-  // don't warn on joins with universal lock
-  void test2() {
-    if (c) {
-      beginNoWarnOnWrites();
-    }
-    a = 0; // \
-      // expected-warning {{writing variable 'a' requires locking 'mu_' exclusively}}
-    endNoWarnOnWrites();  // \
-      // expected-warning {{unlocking '*' that was not locked}}
-  }
-
-
-  // make sure the universal lock joins properly
-  void test3() {
-    if (c) {
-      mu_.Lock();
-      beginNoWarnOnWrites();
-    }
-    else {
-      beginNoWarnOnWrites();
-      mu_.Lock();
-    }
-    a = 0;
-    endNoWarnOnWrites();
-    mu_.Unlock();
-  }
-
-
-  // combine universal lock with other locks
-  void test4() {
-    beginNoWarnOnWrites();
-    mu_.Lock();
-    mu_.Unlock();
-    endNoWarnOnWrites();
-
-    mu_.Lock();
-    beginNoWarnOnWrites();
-    endNoWarnOnWrites();
-    mu_.Unlock();
-
-    mu_.Lock();
-    beginNoWarnOnWrites();
-    mu_.Unlock();
-    endNoWarnOnWrites();
-  }
-};
-
-}  // end namespace UniversalLock
-
-
-namespace TemplateLockReturned {
-
-template<class T>
-class BaseT {
-public:
-  virtual void baseMethod() = 0;
-  Mutex* get_mutex() LOCK_RETURNED(mutex_) { return &mutex_; }
-
-  Mutex mutex_;
-  int a GUARDED_BY(mutex_);
-};
-
-
-class Derived : public BaseT<int> {
-public:
-  void baseMethod() EXCLUSIVE_LOCKS_REQUIRED(get_mutex()) {
-    a = 0;
-  }
-};
-
-}  // end namespace TemplateLockReturned
-
-
-namespace ExprMatchingBugFix {
-
-class Foo {
-public:
-  Mutex mu_;
-};
-
-
-class Bar {
-public:
-  bool c;
-  Foo* foo;
-  Bar(Foo* f) : foo(f) { }
-
-  struct Nested {
-    Foo* foo;
-    Nested(Foo* f) : foo(f) { }
-
-    void unlockFoo() UNLOCK_FUNCTION(&Foo::mu_);
-  };
-
-  void test();
-};
-
-
-void Bar::test() {
-  foo->mu_.Lock();
-  if (c) {
-    Nested *n = new Nested(foo);
-    n->unlockFoo();
-  }
-  else {
-    foo->mu_.Unlock();
-  }
-}
-
-}; // end namespace ExprMatchingBugfix
-
-
-namespace ComplexNameTest {
-
-class Foo {
-public:
-  static Mutex mu_;
-
-  Foo() EXCLUSIVE_LOCKS_REQUIRED(mu_)  { }
-  ~Foo() EXCLUSIVE_LOCKS_REQUIRED(mu_) { }
-
-  int operator[](int i) EXCLUSIVE_LOCKS_REQUIRED(mu_) { return 0; }
-};
-
-class Bar {
-public:
-  static Mutex mu_;
-
-  Bar()  LOCKS_EXCLUDED(mu_) { }
-  ~Bar() LOCKS_EXCLUDED(mu_) { }
-
-  int operator[](int i) LOCKS_EXCLUDED(mu_) { return 0; }
-};
-
-
-void test1() {
-  Foo f;           // expected-warning {{calling function 'Foo' requires exclusive lock on 'mu_'}}
-  int a = f[0];    // expected-warning {{calling function 'operator[]' requires exclusive lock on 'mu_'}}
-}                  // expected-warning {{calling function '~Foo' requires exclusive lock on 'mu_'}}
-
-
-void test2() {
-  Bar::mu_.Lock();
-  {
-    Bar b;         // expected-warning {{cannot call function 'Bar' while mutex 'mu_' is locked}}
-    int a = b[0];  // expected-warning {{cannot call function 'operator[]' while mutex 'mu_' is locked}}
-  }                // expected-warning {{cannot call function '~Bar' while mutex 'mu_' is locked}}
-  Bar::mu_.Unlock();
-}
-
-};  // end namespace ComplexNameTest
-
-
-namespace UnreachableExitTest {
-
-class FemmeFatale {
-public:
-  FemmeFatale();
-  ~FemmeFatale() __attribute__((noreturn));
-};
-
-void exitNow() __attribute__((noreturn));
-void exitDestruct(const MyString& ms) __attribute__((noreturn));
-
-Mutex fatalmu_;
-
-void test1() EXCLUSIVE_LOCKS_REQUIRED(fatalmu_) {
-  exitNow();
-}
-
-void test2() EXCLUSIVE_LOCKS_REQUIRED(fatalmu_) {
-  FemmeFatale femme;
-}
-
-bool c;
-
-void test3() EXCLUSIVE_LOCKS_REQUIRED(fatalmu_) {
-  if (c) {
-    exitNow();
-  }
-  else {
-    FemmeFatale femme;
-  }
-}
-
-void test4() EXCLUSIVE_LOCKS_REQUIRED(fatalmu_) {
-  exitDestruct("foo");
-}
-
-}   // end namespace UnreachableExitTest
-
-
-namespace VirtualMethodCanonicalizationTest {
-
-class Base {
-public:
-  virtual Mutex* getMutex() = 0;
-};
-
-class Base2 : public Base {
-public:
-  Mutex* getMutex();
-};
-
-class Base3 : public Base2 {
-public:
-  Mutex* getMutex();
-};
-
-class Derived : public Base3 {
-public:
-  Mutex* getMutex();  // overrides Base::getMutex()
-};
-
-void baseFun(Base *b) EXCLUSIVE_LOCKS_REQUIRED(b->getMutex()) { }
-
-void derivedFun(Derived *d) EXCLUSIVE_LOCKS_REQUIRED(d->getMutex()) {
-  baseFun(d);
-}
-
-}  // end namespace VirtualMethodCanonicalizationTest
-
-
-namespace TemplateFunctionParamRemapTest {
-
-template <class T>
-struct Cell {
-  T dummy_;
-  Mutex* mu_;
-};
-
-class Foo {
-public:
-  template <class T>
-  void elr(Cell<T>* c) __attribute__((exclusive_locks_required(c->mu_)));
-
-  void test();
-};
-
-template<class T>
-void Foo::elr(Cell<T>* c1) { }
-
-void Foo::test() {
-  Cell<int> cell;
-  elr(&cell); // \
-    // expected-warning {{calling function 'elr' requires exclusive lock on 'cell.mu_'}}
-}
-
-
-template<class T>
-void globalELR(Cell<T>* c) __attribute__((exclusive_locks_required(c->mu_)));
-
-template<class T>
-void globalELR(Cell<T>* c1) { }
-
-void globalTest() {
-  Cell<int> cell;
-  globalELR(&cell); // \
-    // expected-warning {{calling function 'globalELR' requires exclusive lock on 'cell.mu_'}}
-}
-
-
-template<class T>
-void globalELR2(Cell<T>* c) __attribute__((exclusive_locks_required(c->mu_)));
-
-// second declaration
-template<class T>
-void globalELR2(Cell<T>* c2);
-
-template<class T>
-void globalELR2(Cell<T>* c3) { }
-
-// re-declaration after definition
-template<class T>
-void globalELR2(Cell<T>* c4);
-
-void globalTest2() {
-  Cell<int> cell;
-  globalELR2(&cell); // \
-    // expected-warning {{calling function 'globalELR2' requires exclusive lock on 'cell.mu_'}}
-}
-
-
-template<class T>
-class FooT {
-public:
-  void elr(Cell<T>* c) __attribute__((exclusive_locks_required(c->mu_)));
-};
-
-template<class T>
-void FooT<T>::elr(Cell<T>* c1) { }
-
-void testFooT() {
-  Cell<int> cell;
-  FooT<int> foo;
-  foo.elr(&cell); // \
-    // expected-warning {{calling function 'elr' requires exclusive lock on 'cell.mu_'}}
-}
-
-}  // end namespace TemplateFunctionParamRemapTest
-
-
-namespace SelfConstructorTest {
-
-class SelfLock {
-public:
-  SelfLock()  EXCLUSIVE_LOCK_FUNCTION(mu_);
-  ~SelfLock() UNLOCK_FUNCTION(mu_);
-
-  void foo() EXCLUSIVE_LOCKS_REQUIRED(mu_);
-
-  Mutex mu_;
-};
-
-class LOCKABLE SelfLock2 {
-public:
-  SelfLock2()  EXCLUSIVE_LOCK_FUNCTION();
-  ~SelfLock2() UNLOCK_FUNCTION();
-
-  void foo() EXCLUSIVE_LOCKS_REQUIRED(this);
-};
-
-
-void test() {
-  SelfLock s;
-  s.foo();
-}
-
-void test2() {
-  SelfLock2 s2;
-  s2.foo();
-}
-
-}  // end namespace SelfConstructorTest
-
-
-namespace MultipleAttributeTest {
-
-class Foo {
-  Mutex mu1_;
-  Mutex mu2_;
-  int  a GUARDED_BY(mu1_);
-  int  b GUARDED_BY(mu2_);
-  int  c GUARDED_BY(mu1_)    GUARDED_BY(mu2_);
-  int* d PT_GUARDED_BY(mu1_) PT_GUARDED_BY(mu2_);
-
-  void foo1()          EXCLUSIVE_LOCKS_REQUIRED(mu1_)
-                       EXCLUSIVE_LOCKS_REQUIRED(mu2_);
-  void foo2()          SHARED_LOCKS_REQUIRED(mu1_)
-                       SHARED_LOCKS_REQUIRED(mu2_);
-  void foo3()          LOCKS_EXCLUDED(mu1_)
-                       LOCKS_EXCLUDED(mu2_);
-  void lock()          EXCLUSIVE_LOCK_FUNCTION(mu1_)
-                       EXCLUSIVE_LOCK_FUNCTION(mu2_);
-  void readerlock()    SHARED_LOCK_FUNCTION(mu1_)
-                       SHARED_LOCK_FUNCTION(mu2_);
-  void unlock()        UNLOCK_FUNCTION(mu1_)
-                       UNLOCK_FUNCTION(mu2_);
-  bool trylock()       EXCLUSIVE_TRYLOCK_FUNCTION(true, mu1_)
-                       EXCLUSIVE_TRYLOCK_FUNCTION(true, mu2_);
-  bool readertrylock() SHARED_TRYLOCK_FUNCTION(true, mu1_)
-                       SHARED_TRYLOCK_FUNCTION(true, mu2_);
-
-  void test();
-};
-
-
-void Foo::foo1() {
-  a = 1;
-  b = 2;
-}
-
-void Foo::foo2() {
-  int result = a + b;
-}
-
-void Foo::foo3() { }
-void Foo::lock() { mu1_.Lock();  mu2_.Lock(); }
-void Foo::readerlock() { mu1_.ReaderLock();  mu2_.ReaderLock(); }
-void Foo::unlock() { mu1_.Unlock();  mu2_.Unlock(); }
-bool Foo::trylock()       { return true; }
-bool Foo::readertrylock() { return true; }
-
-
-void Foo::test() {
-  mu1_.Lock();
-  foo1();             // expected-warning {{}}
-  c = 0;              // expected-warning {{}}
-  *d = 0;             // expected-warning {{}}
-  mu1_.Unlock();
-
-  mu1_.ReaderLock();
-  foo2();             // expected-warning {{}}
-  int x = c;          // expected-warning {{}}
-  int y = *d;         // expected-warning {{}}
-  mu1_.Unlock();
-
-  mu2_.Lock();
-  foo3();             // expected-warning {{}}
-  mu2_.Unlock();
-
-  lock();
-  a = 0;
-  b = 0;
-  unlock();
-
-  readerlock();
-  int z = a + b;
-  unlock();
-
-  if (trylock()) {
-    a = 0;
-    b = 0;
-    unlock();
-  }
-
-  if (readertrylock()) {
-    int zz = a + b;
-    unlock();
-  }
-}
-
-
-}  // end namespace MultipleAttributeTest
-
-
-namespace GuardedNonPrimitiveTypeTest {
-
-
-class Data {
-public:
-  Data(int i) : dat(i) { }
-
-  int  getValue() const { return dat; }
-  void setValue(int i)  { dat = i; }
-
-  int  operator[](int i) const { return dat; }
-  int& operator[](int i)       { return dat; }
-
-  void operator()() { }
-
-private:
-  int dat;
-};
-
-
-class DataCell {
-public:
-  DataCell(const Data& d) : dat(d) { }
-
-private:
-  Data dat;
-};
-
-
-void showDataCell(const DataCell& dc);
-
-
-class Foo {
-public:
-  // method call tests
-  void test() {
-    data_.setValue(0);         // FIXME -- should be writing \
-      // expected-warning {{reading variable 'data_' requires locking 'mu_'}}
-    int a = data_.getValue();  // \
-      // expected-warning {{reading variable 'data_' requires locking 'mu_'}}
-
-    datap1_->setValue(0);      // FIXME -- should be writing \
-      // expected-warning {{reading variable 'datap1_' requires locking 'mu_'}}
-    a = datap1_->getValue();   // \
-      // expected-warning {{reading variable 'datap1_' requires locking 'mu_'}}
-
-    datap2_->setValue(0);      // FIXME -- should be writing \
-      // expected-warning {{reading the value pointed to by 'datap2_' requires locking 'mu_'}}
-    a = datap2_->getValue();   // \
-      // expected-warning {{reading the value pointed to by 'datap2_' requires locking 'mu_'}}
-
-    (*datap2_).setValue(0);    // FIXME -- should be writing \
-      // expected-warning {{reading the value pointed to by 'datap2_' requires locking 'mu_'}}
-    a = (*datap2_).getValue(); // \
-      // expected-warning {{reading the value pointed to by 'datap2_' requires locking 'mu_'}}
-
-    mu_.Lock();
-    data_.setValue(1);
-    datap1_->setValue(1);
-    datap2_->setValue(1);
-    mu_.Unlock();
-
-    mu_.ReaderLock();
-    a = data_.getValue();
-    datap1_->setValue(0);  // reads datap1_, writes *datap1_
-    a = datap1_->getValue();
-    a = datap2_->getValue();
-    mu_.Unlock();
-  }
-
-  // operator tests
-  void test2() {
-    data_    = Data(1);   // expected-warning {{writing variable 'data_' requires locking 'mu_' exclusively}}
-    *datap1_ = data_;     // expected-warning {{reading variable 'datap1_' requires locking 'mu_'}} \
-                          // expected-warning {{reading variable 'data_' requires locking 'mu_'}}
-    *datap2_ = data_;     // expected-warning {{writing the value pointed to by 'datap2_' requires locking 'mu_' exclusively}} \
-                          // expected-warning {{reading variable 'data_' requires locking 'mu_'}}
-    data_ = *datap1_;     // expected-warning {{writing variable 'data_' requires locking 'mu_' exclusively}} \
-                          // expected-warning {{reading variable 'datap1_' requires locking 'mu_'}}
-    data_ = *datap2_;     // expected-warning {{writing variable 'data_' requires locking 'mu_' exclusively}} \
-                          // expected-warning {{reading the value pointed to by 'datap2_' requires locking 'mu_'}}
-
-    data_[0] = 0;         // expected-warning {{reading variable 'data_' requires locking 'mu_'}}
-    (*datap2_)[0] = 0;    // expected-warning {{reading the value pointed to by 'datap2_' requires locking 'mu_'}}
-
-    data_();              // expected-warning {{reading variable 'data_' requires locking 'mu_'}}
-  }
-
-  // const operator tests
-  void test3() const {
-    Data mydat(data_);      // expected-warning {{reading variable 'data_' requires locking 'mu_'}}
-
-    //FIXME
-    //showDataCell(data_);    // xpected-warning {{reading variable 'data_' requires locking 'mu_'}}
-    //showDataCell(*datap2_); // xpected-warning {{reading the value pointed to by 'datap2_' requires locking 'mu_'}}
-
-    int a = data_[0];       // expected-warning {{reading variable 'data_' requires locking 'mu_'}}
-  }
-
-private:
-  Mutex mu_;
-  Data  data_   GUARDED_BY(mu_);
-  Data* datap1_ GUARDED_BY(mu_);
-  Data* datap2_ PT_GUARDED_BY(mu_);
-};
-
-}  // end namespace GuardedNonPrimitiveTypeTest
-
-
-namespace GuardedNonPrimitive_MemberAccess {
-
-class Cell {
-public:
-  Cell(int i);
-
-  void cellMethod();
-
-  int a;
-};
-
-
-class Foo {
-public:
-  int   a;
-  Cell  c  GUARDED_BY(cell_mu_);
-  Cell* cp PT_GUARDED_BY(cell_mu_);
-
-  void myMethod();
-
-  Mutex cell_mu_;
-};
-
-
-class Bar {
-private:
-  Mutex mu_;
-  Foo  foo  GUARDED_BY(mu_);
-  Foo* foop PT_GUARDED_BY(mu_);
-
-  void test() {
-    foo.myMethod();      // expected-warning {{reading variable 'foo' requires locking 'mu_'}}
-
-    int fa = foo.a;      // expected-warning {{reading variable 'foo' requires locking 'mu_'}}
-    foo.a  = fa;         // expected-warning {{writing variable 'foo' requires locking 'mu_' exclusively}}
-
-    fa = foop->a;        // expected-warning {{reading the value pointed to by 'foop' requires locking 'mu_'}}
-    foop->a = fa;        // expected-warning {{writing the value pointed to by 'foop' requires locking 'mu_' exclusively}}
-
-    fa = (*foop).a;      // expected-warning {{reading the value pointed to by 'foop' requires locking 'mu_'}}
-    (*foop).a = fa;      // expected-warning {{writing the value pointed to by 'foop' requires locking 'mu_' exclusively}}
-
-    foo.c  = Cell(0);    // expected-warning {{writing variable 'foo' requires locking 'mu_'}} \
-                         // expected-warning {{writing variable 'c' requires locking 'foo.cell_mu_' exclusively}}
-    foo.c.cellMethod();  // expected-warning {{reading variable 'foo' requires locking 'mu_'}} \
-                         // expected-warning {{reading variable 'c' requires locking 'foo.cell_mu_'}}
-
-    foop->c  = Cell(0);    // expected-warning {{writing the value pointed to by 'foop' requires locking 'mu_'}} \
-                           // expected-warning {{writing variable 'c' requires locking 'foop->cell_mu_' exclusively}}
-    foop->c.cellMethod();  // expected-warning {{reading the value pointed to by 'foop' requires locking 'mu_'}} \
-                           // expected-warning {{reading variable 'c' requires locking 'foop->cell_mu_'}}
-
-    (*foop).c  = Cell(0);    // expected-warning {{writing the value pointed to by 'foop' requires locking 'mu_'}} \
-                             // expected-warning {{writing variable 'c' requires locking 'foop->cell_mu_' exclusively}}
-    (*foop).c.cellMethod();  // expected-warning {{reading the value pointed to by 'foop' requires locking 'mu_'}} \
-                             // expected-warning {{reading variable 'c' requires locking 'foop->cell_mu_'}}
-  };
-};
-
-}  // namespace GuardedNonPrimitive_MemberAccess
-
-
-namespace TestThrowExpr {
-
-class Foo {
-  Mutex mu_;
-
-  bool hasError();
-
-  void test() {
-    mu_.Lock();
-    if (hasError()) {
-      throw "ugly";
-    }
-    mu_.Unlock();
-  }
-};
-
-}  // end namespace TestThrowExpr
-
-
-namespace UnevaluatedContextTest {
-
-// parse attribute expressions in an unevaluated context.
-
-static inline Mutex* getMutex1();
-static inline Mutex* getMutex2();
-
-void bar() EXCLUSIVE_LOCKS_REQUIRED(getMutex1());
-
-void bar2() EXCLUSIVE_LOCKS_REQUIRED(getMutex1(), getMutex2());
-
-}  // end namespace UnevaluatedContextTest
-
-
-namespace LockUnlockFunctionTest {
-
-// Check built-in lock functions
-class LOCKABLE MyLockable  {
-public:
-  void lock()       EXCLUSIVE_LOCK_FUNCTION() { mu_.Lock(); }
-  void readerLock() SHARED_LOCK_FUNCTION()    { mu_.ReaderLock(); }
-  void unlock()     UNLOCK_FUNCTION()         { mu_.Unlock(); }
-
-private:
-  Mutex mu_;
-};
-
-
-class Foo {
-public:
-  // Correct lock/unlock functions
-  void lock() EXCLUSIVE_LOCK_FUNCTION(mu_) {
-    mu_.Lock();
-  }
-
-  void readerLock() SHARED_LOCK_FUNCTION(mu_) {
-    mu_.ReaderLock();
-  }
-
-  void unlock() UNLOCK_FUNCTION(mu_) {
-    mu_.Unlock();
-  }
-
-  // Check failure to lock.
-  void lockBad() EXCLUSIVE_LOCK_FUNCTION(mu_) {    // expected-note {{mutex acquired here}}
-    mu2_.Lock();
-    mu2_.Unlock();
-  }  // expected-warning {{expecting mutex 'mu_' to be locked at the end of function}}
-
-  void readerLockBad() SHARED_LOCK_FUNCTION(mu_) {  // expected-note {{mutex acquired here}}
-    mu2_.Lock();
-    mu2_.Unlock();
-  }  // expected-warning {{expecting mutex 'mu_' to be locked at the end of function}}
-
-  void unlockBad() UNLOCK_FUNCTION(mu_) {  // expected-note {{mutex acquired here}}
-    mu2_.Lock();
-    mu2_.Unlock();
-  }  // expected-warning {{mutex 'mu_' is still locked at the end of function}}
-
-  // Check locking the wrong thing.
-  void lockBad2() EXCLUSIVE_LOCK_FUNCTION(mu_) {   // expected-note {{mutex acquired here}}
-    mu2_.Lock();            // expected-note {{mutex acquired here}}
-  } // expected-warning {{expecting mutex 'mu_' to be locked at the end of function}} \
-    // expected-warning {{mutex 'mu2_' is still locked at the end of function}}
-
-
-  void readerLockBad2() SHARED_LOCK_FUNCTION(mu_) {   // expected-note {{mutex acquired here}}
-    mu2_.ReaderLock();      // expected-note {{mutex acquired here}}
-  } // expected-warning {{expecting mutex 'mu_' to be locked at the end of function}} \
-    // expected-warning {{mutex 'mu2_' is still locked at the end of function}}
-
-
-  void unlockBad2() UNLOCK_FUNCTION(mu_) {  // expected-note {{mutex acquired here}}
-    mu2_.Unlock();  // expected-warning {{unlocking 'mu2_' that was not locked}}
-  }  // expected-warning {{mutex 'mu_' is still locked at the end of function}}
-
-private:
-  Mutex mu_;
-  Mutex mu2_;
-};
-
-}  // end namespace LockUnlockFunctionTest
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-thread-safety-parsing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-thread-safety-parsing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-thread-safety-parsing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1489 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wthread-safety %s
-
-#define LOCKABLE            __attribute__ ((lockable))
-#define SCOPED_LOCKABLE     __attribute__ ((scoped_lockable))
-#define GUARDED_BY(x)       __attribute__ ((guarded_by(x)))
-#define GUARDED_VAR         __attribute__ ((guarded_var))
-#define PT_GUARDED_BY(x)    __attribute__ ((pt_guarded_by(x)))
-#define PT_GUARDED_VAR      __attribute__ ((pt_guarded_var))
-#define ACQUIRED_AFTER(...) __attribute__ ((acquired_after(__VA_ARGS__)))
-#define ACQUIRED_BEFORE(...) __attribute__ ((acquired_before(__VA_ARGS__)))
-#define EXCLUSIVE_LOCK_FUNCTION(...)   __attribute__ ((exclusive_lock_function(__VA_ARGS__)))
-#define SHARED_LOCK_FUNCTION(...)      __attribute__ ((shared_lock_function(__VA_ARGS__)))
-#define EXCLUSIVE_TRYLOCK_FUNCTION(...) __attribute__ ((exclusive_trylock_function(__VA_ARGS__)))
-#define SHARED_TRYLOCK_FUNCTION(...)    __attribute__ ((shared_trylock_function(__VA_ARGS__)))
-#define UNLOCK_FUNCTION(...)            __attribute__ ((unlock_function(__VA_ARGS__)))
-#define LOCK_RETURNED(x)    __attribute__ ((lock_returned(x)))
-#define LOCKS_EXCLUDED(...) __attribute__ ((locks_excluded(__VA_ARGS__)))
-#define EXCLUSIVE_LOCKS_REQUIRED(...) \
-  __attribute__ ((exclusive_locks_required(__VA_ARGS__)))
-#define SHARED_LOCKS_REQUIRED(...) \
-  __attribute__ ((shared_locks_required(__VA_ARGS__)))
-#define NO_THREAD_SAFETY_ANALYSIS  __attribute__ ((no_thread_safety_analysis))
-
-
-class LOCKABLE Mutex {
-  public:
-  void Lock();
-};
-
-class UnlockableMu{
-};
-
-class MuWrapper {
-  public:
-  Mutex mu;
-  Mutex getMu() {
-    return mu;
-  }
-  Mutex * getMuPointer() {
-    return μ
-  }
-};
-
-
-class MuDoubleWrapper {
-  public:
-  MuWrapper* muWrapper;
-  MuWrapper* getWrapper() {
-    return muWrapper;
-  }
-};
-
-Mutex mu1;
-UnlockableMu umu;
-Mutex mu2;
-MuWrapper muWrapper;
-MuDoubleWrapper muDoubleWrapper;
-Mutex* muPointer;
-Mutex** muDoublePointer = & muPointer;
-Mutex& muRef = mu1;
-
-//---------------------------------------//
-// Scoping tests
-//--------------------------------------//
-
-class Foo {
-  Mutex foomu;
-  void needLock() EXCLUSIVE_LOCK_FUNCTION(foomu);
-};
-
-class Foo2 {
-  void needLock() EXCLUSIVE_LOCK_FUNCTION(foomu);
-  Mutex foomu;
-};
-
-class Bar {
- Mutex barmu;
- Mutex barmu2 ACQUIRED_AFTER(barmu);
-};
-
-
-//-----------------------------------------//
-//   No Thread Safety Analysis (noanal)    //
-//-----------------------------------------//
-
-// FIXME: Right now we cannot parse attributes put on function definitions
-// We would like to patch this at some point.
-
-#if !__has_attribute(no_thread_safety_analysis)
-#error "Should support no_thread_safety_analysis attribute"
-#endif
-
-void noanal_fun() NO_THREAD_SAFETY_ANALYSIS;
-
-void noanal_fun_args() __attribute__((no_thread_safety_analysis(1))); // \
-  // expected-error {{attribute takes no arguments}}
-
-int noanal_testfn(int y) NO_THREAD_SAFETY_ANALYSIS;
-
-int noanal_testfn(int y) {
-  int x NO_THREAD_SAFETY_ANALYSIS = y; // \
-    // expected-warning {{'no_thread_safety_analysis' attribute only applies to functions and methods}}
-  return x;
-};
-
-int noanal_test_var NO_THREAD_SAFETY_ANALYSIS; // \
-  // expected-warning {{'no_thread_safety_analysis' attribute only applies to functions and methods}}
-
-class NoanalFoo {
- private:
-  int test_field NO_THREAD_SAFETY_ANALYSIS; // \
-    // expected-warning {{'no_thread_safety_analysis' attribute only applies to functions and methods}}
-  void test_method() NO_THREAD_SAFETY_ANALYSIS;
-};
-
-class NO_THREAD_SAFETY_ANALYSIS NoanalTestClass { // \
-  // expected-warning {{'no_thread_safety_analysis' attribute only applies to functions and methods}}
-};
-
-void noanal_fun_params(int lvar NO_THREAD_SAFETY_ANALYSIS); // \
-  // expected-warning {{'no_thread_safety_analysis' attribute only applies to functions and methods}}
-
-
-//-----------------------------------------//
-//  Guarded Var Attribute (gv)
-//-----------------------------------------//
-
-#if !__has_attribute(guarded_var)
-#error "Should support guarded_var attribute"
-#endif
-
-int gv_var_noargs GUARDED_VAR;
-
-int gv_var_args __attribute__((guarded_var(1))); // \
-  // expected-error {{attribute takes no arguments}}
-
-class GVFoo {
- private:
-  int gv_field_noargs GUARDED_VAR;
-  int gv_field_args __attribute__((guarded_var(1))); // \
-    // expected-error {{attribute takes no arguments}}
-};
-
-class GUARDED_VAR GV { // \
-  // expected-warning {{'guarded_var' attribute only applies to fields and global variables}}
-};
-
-void gv_function() GUARDED_VAR; // \
-  // expected-warning {{'guarded_var' attribute only applies to fields and global variables}}
-
-void gv_function_params(int gv_lvar GUARDED_VAR); // \
-  // expected-warning {{'guarded_var' attribute only applies to fields and global variables}}
-
-int gv_testfn(int y){
-  int x GUARDED_VAR = y; // \
-    // expected-warning {{'guarded_var' attribute only applies to fields and global variables}}
-  return x;
-}
-
-//-----------------------------------------//
-//   Pt Guarded Var Attribute (pgv)
-//-----------------------------------------//
-
-//FIXME: add support for boost::scoped_ptr<int> fancyptr  and references
-
-#if !__has_attribute(pt_guarded_var)
-#error "Should support pt_guarded_var attribute"
-#endif
-
-int *pgv_pt_var_noargs PT_GUARDED_VAR;
-
-int pgv_var_noargs PT_GUARDED_VAR; // \
-    // expected-warning {{'pt_guarded_var' only applies to pointer types; type here is 'int'}}
-
-class PGVFoo {
- private:
-  int *pt_field_noargs PT_GUARDED_VAR;
-  int field_noargs PT_GUARDED_VAR; // \
-    // expected-warning {{'pt_guarded_var' only applies to pointer types; type here is 'int'}}
-  int *gv_field_args __attribute__((pt_guarded_var(1))); // \
-    // expected-error {{attribute takes no arguments}}
-};
-
-class PT_GUARDED_VAR PGV { // \
-  // expected-warning {{'pt_guarded_var' attribute only applies to fields and global variables}}
-};
-
-int *pgv_var_args __attribute__((pt_guarded_var(1))); // \
-  // expected-error {{attribute takes no arguments}}
-
-
-void pgv_function() PT_GUARDED_VAR; // \
-  // expected-warning {{'pt_guarded_var' attribute only applies to fields and global variables}}
-
-void pgv_function_params(int *gv_lvar PT_GUARDED_VAR); // \
-  // expected-warning {{'pt_guarded_var' attribute only applies to fields and global variables}}
-
-void pgv_testfn(int y){
-  int *x PT_GUARDED_VAR = new int(0); // \
-    // expected-warning {{'pt_guarded_var' attribute only applies to fields and global variables}}
-  delete x;
-}
-
-//-----------------------------------------//
-//  Lockable Attribute (l)
-//-----------------------------------------//
-
-//FIXME: In future we may want to add support for structs, ObjC classes, etc.
-
-#if !__has_attribute(lockable)
-#error "Should support lockable attribute"
-#endif
-
-class LOCKABLE LTestClass {
-};
-
-class __attribute__((lockable (1))) LTestClass_args { // \
-    // expected-error {{attribute takes no arguments}}
-};
-
-void l_test_function() LOCKABLE;  // \
-  // expected-warning {{'lockable' attribute only applies to classes}}
-
-int l_testfn(int y) {
-  int x LOCKABLE = y; // \
-    // expected-warning {{'lockable' attribute only applies to classes}}
-  return x;
-}
-
-int l_test_var LOCKABLE; // \
-  // expected-warning {{'lockable' attribute only applies to classes}}
-
-class LFoo {
- private:
-  int test_field LOCKABLE; // \
-    // expected-warning {{'lockable' attribute only applies to classes}}
-  void test_method() LOCKABLE; // \
-    // expected-warning {{'lockable' attribute only applies to classes}}
-};
-
-
-void l_function_params(int lvar LOCKABLE); // \
-  // expected-warning {{'lockable' attribute only applies to classes}}
-
-
-//-----------------------------------------//
-//  Scoped Lockable Attribute (sl)
-//-----------------------------------------//
-
-#if !__has_attribute(scoped_lockable)
-#error "Should support scoped_lockable attribute"
-#endif
-
-class SCOPED_LOCKABLE SLTestClass {
-};
-
-class __attribute__((scoped_lockable (1))) SLTestClass_args { // \
-  // expected-error {{attribute takes no arguments}}
-};
-
-void sl_test_function() SCOPED_LOCKABLE;  // \
-  // expected-warning {{'scoped_lockable' attribute only applies to classes}}
-
-int sl_testfn(int y) {
-  int x SCOPED_LOCKABLE = y; // \
-    // expected-warning {{'scoped_lockable' attribute only applies to classes}}
-  return x;
-}
-
-int sl_test_var SCOPED_LOCKABLE; // \
-  // expected-warning {{'scoped_lockable' attribute only applies to classes}}
-
-class SLFoo {
- private:
-  int test_field SCOPED_LOCKABLE; // \
-    // expected-warning {{'scoped_lockable' attribute only applies to classes}}
-  void test_method() SCOPED_LOCKABLE; // \
-    // expected-warning {{'scoped_lockable' attribute only applies to classes}}
-};
-
-
-void sl_function_params(int lvar SCOPED_LOCKABLE); // \
-  // expected-warning {{'scoped_lockable' attribute only applies to classes}}
-
-
-//-----------------------------------------//
-//  Guarded By Attribute (gb)
-//-----------------------------------------//
-
-// FIXME: Eventually, would we like this attribute to take more than 1 arg?
-
-#if !__has_attribute(guarded_by)
-#error "Should support guarded_by attribute"
-#endif
-
-//1. Check applied to the right types & argument number
-
-int gb_var_arg GUARDED_BY(mu1);
-
-int gb_var_args __attribute__((guarded_by(mu1, mu2))); // \
-  // expected-error {{attribute takes one argument}}
-
-int gb_var_noargs __attribute__((guarded_by)); // \
-  // expected-error {{attribute takes one argument}}
-
-class GBFoo {
- private:
-  int gb_field_noargs __attribute__((guarded_by)); // \
-    // expected-error {{attribute takes one argument}}
-  int gb_field_args GUARDED_BY(mu1);
-};
-
-class GUARDED_BY(mu1) GB { // \
-  // expected-warning {{'guarded_by' attribute only applies to fields and global variables}}
-};
-
-void gb_function() GUARDED_BY(mu1); // \
-  // expected-warning {{'guarded_by' attribute only applies to fields and global variables}}
-
-void gb_function_params(int gv_lvar GUARDED_BY(mu1)); // \
-  // expected-warning {{'guarded_by' attribute only applies to fields and global variables}}
-
-int gb_testfn(int y){
-  int x GUARDED_BY(mu1) = y; // \
-    // expected-warning {{'guarded_by' attribute only applies to fields and global variables}}
-  return x;
-}
-
-//2. Check argument parsing.
-
-// legal attribute arguments
-int gb_var_arg_1 GUARDED_BY(muWrapper.mu);
-int gb_var_arg_2 GUARDED_BY(muDoubleWrapper.muWrapper->mu);
-int gb_var_arg_3 GUARDED_BY(muWrapper.getMu());
-int gb_var_arg_4 GUARDED_BY(*muWrapper.getMuPointer());
-int gb_var_arg_5 GUARDED_BY(&mu1);
-int gb_var_arg_6 GUARDED_BY(muRef);
-int gb_var_arg_7 GUARDED_BY(muDoubleWrapper.getWrapper()->getMu());
-int gb_var_arg_8 GUARDED_BY(muPointer);
-
-
-// illegal attribute arguments
-int gb_var_arg_bad_1 GUARDED_BY(1); // \
-  // expected-warning {{'guarded_by' attribute requires arguments that are class type or point to class type; type here is 'int'}}
-int gb_var_arg_bad_2 GUARDED_BY("mu"); // \
-  // expected-warning {{ignoring 'guarded_by' attribute because its argument is invalid}}
-int gb_var_arg_bad_3 GUARDED_BY(muDoublePointer); // \
-  // expected-warning {{'guarded_by' attribute requires arguments that are class type or point to class type; type here is 'class Mutex **'}}
-int gb_var_arg_bad_4 GUARDED_BY(umu); // \
-  // expected-warning {{'guarded_by' attribute requires arguments whose type is annotated with 'lockable' attribute; type here is 'class UnlockableMu'}}
-
-//3.
-// Thread Safety analysis tests
-
-
-//-----------------------------------------//
-//  Pt Guarded By Attribute (pgb)
-//-----------------------------------------//
-
-#if !__has_attribute(pt_guarded_by)
-#error "Should support pt_guarded_by attribute"
-#endif
-
-//1. Check applied to the right types & argument number
-
-int *pgb_var_noargs __attribute__((pt_guarded_by)); // \
-  // expected-error {{attribute takes one argument}}
-
-int *pgb_ptr_var_arg PT_GUARDED_BY(mu1);
-
-int *pgb_ptr_var_args __attribute__((pt_guarded_by(mu1, mu2))); // \
-  // expected-error {{attribute takes one argument}}
-
-int pgb_var_args PT_GUARDED_BY(mu1); // \
-  // expected-warning {{'pt_guarded_by' only applies to pointer types; type here is 'int'}}
-
-class PGBFoo {
- private:
-  int *pgb_field_noargs __attribute__((pt_guarded_by)); // \
-    // expected-error {{attribute takes one argument}}
-  int *pgb_field_args PT_GUARDED_BY(mu1);
-};
-
-class PT_GUARDED_BY(mu1) PGB { // \
-  // expected-warning {{'pt_guarded_by' attribute only applies to fields and global variables}}
-};
-
-void pgb_function() PT_GUARDED_BY(mu1); // \
-  // expected-warning {{'pt_guarded_by' attribute only applies to fields and global variables}}
-
-void pgb_function_params(int gv_lvar PT_GUARDED_BY(mu1)); // \
-  // expected-warning {{'pt_guarded_by' attribute only applies to fields and global variables}}
-
-void pgb_testfn(int y){
-  int *x PT_GUARDED_BY(mu1) = new int(0); // \
-    // expected-warning {{'pt_guarded_by' attribute only applies to fields and global variables}}
-  delete x;
-}
-
-//2. Check argument parsing.
-
-// legal attribute arguments
-int * pgb_var_arg_1 PT_GUARDED_BY(muWrapper.mu);
-int * pgb_var_arg_2 PT_GUARDED_BY(muDoubleWrapper.muWrapper->mu);
-int * pgb_var_arg_3 PT_GUARDED_BY(muWrapper.getMu());
-int * pgb_var_arg_4 PT_GUARDED_BY(*muWrapper.getMuPointer());
-int * pgb_var_arg_5 PT_GUARDED_BY(&mu1);
-int * pgb_var_arg_6 PT_GUARDED_BY(muRef);
-int * pgb_var_arg_7 PT_GUARDED_BY(muDoubleWrapper.getWrapper()->getMu());
-int * pgb_var_arg_8 PT_GUARDED_BY(muPointer);
-
-
-// illegal attribute arguments
-int * pgb_var_arg_bad_1 PT_GUARDED_BY(1); // \
-  // expected-warning {{'pt_guarded_by' attribute requires arguments that are class type or point to class type}}
-int * pgb_var_arg_bad_2 PT_GUARDED_BY("mu"); // \
-  // expected-warning {{ignoring 'pt_guarded_by' attribute because its argument is invalid}}
-int * pgb_var_arg_bad_3 PT_GUARDED_BY(muDoublePointer); // \
-  // expected-warning {{'pt_guarded_by' attribute requires arguments that are class type or point to class type}}
-int * pgb_var_arg_bad_4 PT_GUARDED_BY(umu); // \
-  // expected-warning {{'pt_guarded_by' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-
-//-----------------------------------------//
-//  Acquired After (aa)
-//-----------------------------------------//
-
-// FIXME: Would we like this attribute to take more than 1 arg?
-
-#if !__has_attribute(acquired_after)
-#error "Should support acquired_after attribute"
-#endif
-
-Mutex mu_aa ACQUIRED_AFTER(mu1);
-
-Mutex aa_var_noargs __attribute__((acquired_after)); // \
-  // expected-error {{attribute takes at least 1 argument}}
-
-class AAFoo {
- private:
-  Mutex aa_field_noargs __attribute__((acquired_after)); // \
-    // expected-error {{attribute takes at least 1 argument}}
-  Mutex aa_field_args ACQUIRED_AFTER(mu1);
-};
-
-class ACQUIRED_AFTER(mu1) AA { // \
-  // expected-warning {{'acquired_after' attribute only applies to fields and global variables}}
-};
-
-void aa_function() ACQUIRED_AFTER(mu1); // \
-  // expected-warning {{'acquired_after' attribute only applies to fields and global variables}}
-
-void aa_function_params(int gv_lvar ACQUIRED_AFTER(mu1)); // \
-  // expected-warning {{'acquired_after' attribute only applies to fields and global variables}}
-
-void aa_testfn(int y){
-  Mutex x ACQUIRED_AFTER(mu1) = Mutex(); // \
-    // expected-warning {{'acquired_after' attribute only applies to fields and global variables}}
-}
-
-//Check argument parsing.
-
-// legal attribute arguments
-Mutex aa_var_arg_1 ACQUIRED_AFTER(muWrapper.mu);
-Mutex aa_var_arg_2 ACQUIRED_AFTER(muDoubleWrapper.muWrapper->mu);
-Mutex aa_var_arg_3 ACQUIRED_AFTER(muWrapper.getMu());
-Mutex aa_var_arg_4 ACQUIRED_AFTER(*muWrapper.getMuPointer());
-Mutex aa_var_arg_5 ACQUIRED_AFTER(&mu1);
-Mutex aa_var_arg_6 ACQUIRED_AFTER(muRef);
-Mutex aa_var_arg_7 ACQUIRED_AFTER(muDoubleWrapper.getWrapper()->getMu());
-Mutex aa_var_arg_8 ACQUIRED_AFTER(muPointer);
-
-
-// illegal attribute arguments
-Mutex aa_var_arg_bad_1 ACQUIRED_AFTER(1); // \
-  // expected-warning {{'acquired_after' attribute requires arguments that are class type or point to class type}}
-Mutex aa_var_arg_bad_2 ACQUIRED_AFTER("mu"); // \
-  // expected-warning {{ignoring 'acquired_after' attribute because its argument is invalid}}
-Mutex aa_var_arg_bad_3 ACQUIRED_AFTER(muDoublePointer); // \
-  // expected-warning {{'acquired_after' attribute requires arguments that are class type or point to class type}}
-Mutex aa_var_arg_bad_4 ACQUIRED_AFTER(umu); // \
-  // expected-warning {{'acquired_after' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-UnlockableMu aa_var_arg_bad_5 ACQUIRED_AFTER(mu_aa); // \
-  // expected-warning {{'acquired_after' attribute can only be applied in a context annotated with 'lockable' attribute}}
-
-//-----------------------------------------//
-//  Acquired Before (ab)
-//-----------------------------------------//
-
-#if !__has_attribute(acquired_before)
-#error "Should support acquired_before attribute"
-#endif
-
-Mutex mu_ab ACQUIRED_BEFORE(mu1);
-
-Mutex ab_var_noargs __attribute__((acquired_before)); // \
-  // expected-error {{attribute takes at least 1 argument}}
-
-class ABFoo {
- private:
-  Mutex ab_field_noargs __attribute__((acquired_before)); // \
-    // expected-error {{attribute takes at least 1 argument}}
-  Mutex ab_field_args ACQUIRED_BEFORE(mu1);
-};
-
-class ACQUIRED_BEFORE(mu1) AB { // \
-  // expected-warning {{'acquired_before' attribute only applies to fields and global variables}}
-};
-
-void ab_function() ACQUIRED_BEFORE(mu1); // \
-  // expected-warning {{'acquired_before' attribute only applies to fields and global variables}}
-
-void ab_function_params(int gv_lvar ACQUIRED_BEFORE(mu1)); // \
-  // expected-warning {{'acquired_before' attribute only applies to fields and global variables}}
-
-void ab_testfn(int y){
-  Mutex x ACQUIRED_BEFORE(mu1) = Mutex(); // \
-    // expected-warning {{'acquired_before' attribute only applies to fields and global variables}}
-}
-
-// Note: illegal int ab_int ACQUIRED_BEFORE(mu1) will
-// be taken care of by warnings that ab__int is not lockable.
-
-//Check argument parsing.
-
-// legal attribute arguments
-Mutex ab_var_arg_1 ACQUIRED_BEFORE(muWrapper.mu);
-Mutex ab_var_arg_2 ACQUIRED_BEFORE(muDoubleWrapper.muWrapper->mu);
-Mutex ab_var_arg_3 ACQUIRED_BEFORE(muWrapper.getMu());
-Mutex ab_var_arg_4 ACQUIRED_BEFORE(*muWrapper.getMuPointer());
-Mutex ab_var_arg_5 ACQUIRED_BEFORE(&mu1);
-Mutex ab_var_arg_6 ACQUIRED_BEFORE(muRef);
-Mutex ab_var_arg_7 ACQUIRED_BEFORE(muDoubleWrapper.getWrapper()->getMu());
-Mutex ab_var_arg_8 ACQUIRED_BEFORE(muPointer);
-
-
-// illegal attribute arguments
-Mutex ab_var_arg_bad_1 ACQUIRED_BEFORE(1); // \
-  // expected-warning {{'acquired_before' attribute requires arguments that are class type or point to class type}}
-Mutex ab_var_arg_bad_2 ACQUIRED_BEFORE("mu"); // \
-  // expected-warning {{ignoring 'acquired_before' attribute because its argument is invalid}}
-Mutex ab_var_arg_bad_3 ACQUIRED_BEFORE(muDoublePointer); // \
-  // expected-warning {{'acquired_before' attribute requires arguments that are class type or point to class type}}
-Mutex ab_var_arg_bad_4 ACQUIRED_BEFORE(umu); // \
-  // expected-warning {{'acquired_before' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-UnlockableMu ab_var_arg_bad_5 ACQUIRED_BEFORE(mu_ab); // \
-  // expected-warning {{'acquired_before' attribute can only be applied in a context annotated with 'lockable' attribute}}
-
-
-//-----------------------------------------//
-//  Exclusive Lock Function (elf)
-//-----------------------------------------//
-
-#if !__has_attribute(exclusive_lock_function)
-#error "Should support exclusive_lock_function attribute"
-#endif
-
-// takes zero or more arguments, all locks (vars/fields)
-
-void elf_function() EXCLUSIVE_LOCK_FUNCTION();
-
-void elf_function_args() EXCLUSIVE_LOCK_FUNCTION(mu1, mu2);
-
-int elf_testfn(int y) EXCLUSIVE_LOCK_FUNCTION();
-
-int elf_testfn(int y) {
-  int x EXCLUSIVE_LOCK_FUNCTION() = y; // \
-    // expected-warning {{'exclusive_lock_function' attribute only applies to functions and methods}}
-  return x;
-};
-
-int elf_test_var EXCLUSIVE_LOCK_FUNCTION(); // \
-  // expected-warning {{'exclusive_lock_function' attribute only applies to functions and methods}}
-
-class ElfFoo {
- private:
-  int test_field EXCLUSIVE_LOCK_FUNCTION(); // \
-    // expected-warning {{'exclusive_lock_function' attribute only applies to functions and methods}}
-  void test_method() EXCLUSIVE_LOCK_FUNCTION();
-};
-
-class EXCLUSIVE_LOCK_FUNCTION() ElfTestClass { // \
-  // expected-warning {{'exclusive_lock_function' attribute only applies to functions and methods}}
-};
-
-void elf_fun_params(int lvar EXCLUSIVE_LOCK_FUNCTION()); // \
-  // expected-warning {{'exclusive_lock_function' attribute only applies to functions and methods}}
-
-// Check argument parsing.
-
-// legal attribute arguments
-int elf_function_1() EXCLUSIVE_LOCK_FUNCTION(muWrapper.mu);
-int elf_function_2() EXCLUSIVE_LOCK_FUNCTION(muDoubleWrapper.muWrapper->mu);
-int elf_function_3() EXCLUSIVE_LOCK_FUNCTION(muWrapper.getMu());
-int elf_function_4() EXCLUSIVE_LOCK_FUNCTION(*muWrapper.getMuPointer());
-int elf_function_5() EXCLUSIVE_LOCK_FUNCTION(&mu1);
-int elf_function_6() EXCLUSIVE_LOCK_FUNCTION(muRef);
-int elf_function_7() EXCLUSIVE_LOCK_FUNCTION(muDoubleWrapper.getWrapper()->getMu());
-int elf_function_8() EXCLUSIVE_LOCK_FUNCTION(muPointer);
-int elf_function_9(Mutex x) EXCLUSIVE_LOCK_FUNCTION(1);
-int elf_function_9(Mutex x, Mutex y) EXCLUSIVE_LOCK_FUNCTION(1,2);
-
-
-// illegal attribute arguments
-int elf_function_bad_2() EXCLUSIVE_LOCK_FUNCTION("mu"); // \
-  // expected-warning {{ignoring 'exclusive_lock_function' attribute because its argument is invalid}}
-int elf_function_bad_3() EXCLUSIVE_LOCK_FUNCTION(muDoublePointer); // \
-  // expected-warning {{'exclusive_lock_function' attribute requires arguments that are class type or point to class type}}
-int elf_function_bad_4() EXCLUSIVE_LOCK_FUNCTION(umu); // \
-  // expected-warning {{'exclusive_lock_function' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-int elf_function_bad_1() EXCLUSIVE_LOCK_FUNCTION(1); // \
-  // expected-error {{'exclusive_lock_function' attribute parameter 1 is out of bounds: no parameters to index into}}
-int elf_function_bad_5(Mutex x) EXCLUSIVE_LOCK_FUNCTION(0); // \
-  // expected-error {{'exclusive_lock_function' attribute parameter 1 is out of bounds: can only be 1, since there is one parameter}}
-int elf_function_bad_6(Mutex x, Mutex y) EXCLUSIVE_LOCK_FUNCTION(0); // \
-  // expected-error {{'exclusive_lock_function' attribute parameter 1 is out of bounds: must be between 1 and 2}}
-int elf_function_bad_7() EXCLUSIVE_LOCK_FUNCTION(0); // \
-  // expected-error {{'exclusive_lock_function' attribute parameter 1 is out of bounds: no parameters to index into}}
-
-
-//-----------------------------------------//
-//  Shared Lock Function (slf)
-//-----------------------------------------//
-
-#if !__has_attribute(shared_lock_function)
-#error "Should support shared_lock_function attribute"
-#endif
-
-// takes zero or more arguments, all locks (vars/fields)
-
-void slf_function() SHARED_LOCK_FUNCTION();
-
-void slf_function_args() SHARED_LOCK_FUNCTION(mu1, mu2);
-
-int slf_testfn(int y) SHARED_LOCK_FUNCTION();
-
-int slf_testfn(int y) {
-  int x SHARED_LOCK_FUNCTION() = y; // \
-    // expected-warning {{'shared_lock_function' attribute only applies to functions and methods}}
-  return x;
-};
-
-int slf_test_var SHARED_LOCK_FUNCTION(); // \
-  // expected-warning {{'shared_lock_function' attribute only applies to functions and methods}}
-
-void slf_fun_params(int lvar SHARED_LOCK_FUNCTION()); // \
-  // expected-warning {{'shared_lock_function' attribute only applies to functions and methods}}
-
-class SlfFoo {
- private:
-  int test_field SHARED_LOCK_FUNCTION(); // \
-    // expected-warning {{'shared_lock_function' attribute only applies to functions and methods}}
-  void test_method() SHARED_LOCK_FUNCTION();
-};
-
-class SHARED_LOCK_FUNCTION() SlfTestClass { // \
-  // expected-warning {{'shared_lock_function' attribute only applies to functions and methods}}
-};
-
-// Check argument parsing.
-
-// legal attribute arguments
-int slf_function_1() SHARED_LOCK_FUNCTION(muWrapper.mu);
-int slf_function_2() SHARED_LOCK_FUNCTION(muDoubleWrapper.muWrapper->mu);
-int slf_function_3() SHARED_LOCK_FUNCTION(muWrapper.getMu());
-int slf_function_4() SHARED_LOCK_FUNCTION(*muWrapper.getMuPointer());
-int slf_function_5() SHARED_LOCK_FUNCTION(&mu1);
-int slf_function_6() SHARED_LOCK_FUNCTION(muRef);
-int slf_function_7() SHARED_LOCK_FUNCTION(muDoubleWrapper.getWrapper()->getMu());
-int slf_function_8() SHARED_LOCK_FUNCTION(muPointer);
-int slf_function_9(Mutex x) SHARED_LOCK_FUNCTION(1);
-int slf_function_9(Mutex x, Mutex y) SHARED_LOCK_FUNCTION(1,2);
-
-
-// illegal attribute arguments
-int slf_function_bad_2() SHARED_LOCK_FUNCTION("mu"); // \
-  // expected-warning {{ignoring 'shared_lock_function' attribute because its argument is invalid}}
-int slf_function_bad_3() SHARED_LOCK_FUNCTION(muDoublePointer); // \
-  // expected-warning {{'shared_lock_function' attribute requires arguments that are class type or point to class type}}
-int slf_function_bad_4() SHARED_LOCK_FUNCTION(umu); // \
-  // expected-warning {{'shared_lock_function' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-int slf_function_bad_1() SHARED_LOCK_FUNCTION(1); // \
-  // expected-error {{'shared_lock_function' attribute parameter 1 is out of bounds: no parameters to index into}}
-int slf_function_bad_5(Mutex x) SHARED_LOCK_FUNCTION(0); // \
-  // expected-error {{'shared_lock_function' attribute parameter 1 is out of bounds: can only be 1, since there is one parameter}}
-int slf_function_bad_6(Mutex x, Mutex y) SHARED_LOCK_FUNCTION(0); // \
-  // expected-error {{'shared_lock_function' attribute parameter 1 is out of bounds: must be between 1 and 2}}
-int slf_function_bad_7() SHARED_LOCK_FUNCTION(0); // \
-  // expected-error {{'shared_lock_function' attribute parameter 1 is out of bounds: no parameters to index into}}
-
-
-//-----------------------------------------//
-//  Exclusive TryLock Function (etf)
-//-----------------------------------------//
-
-#if !__has_attribute(exclusive_trylock_function)
-#error "Should support exclusive_trylock_function attribute"
-#endif
-
-// takes a mandatory boolean or integer argument specifying the retval
-// plus an optional list of locks (vars/fields)
-
-void etf_function() __attribute__((exclusive_trylock_function));  // \
-  // expected-error {{attribute takes at least 1 argument}}
-
-void etf_function_args() EXCLUSIVE_TRYLOCK_FUNCTION(1, mu2);
-
-void etf_function_arg() EXCLUSIVE_TRYLOCK_FUNCTION(1);
-
-int etf_testfn(int y) EXCLUSIVE_TRYLOCK_FUNCTION(1);
-
-int etf_testfn(int y) {
-  int x EXCLUSIVE_TRYLOCK_FUNCTION(1) = y; // \
-    // expected-warning {{'exclusive_trylock_function' attribute only applies to functions and methods}}
-  return x;
-};
-
-int etf_test_var EXCLUSIVE_TRYLOCK_FUNCTION(1); // \
-  // expected-warning {{'exclusive_trylock_function' attribute only applies to functions and methods}}
-
-class EtfFoo {
- private:
-  int test_field EXCLUSIVE_TRYLOCK_FUNCTION(1); // \
-    // expected-warning {{'exclusive_trylock_function' attribute only applies to functions and methods}}
-  void test_method() EXCLUSIVE_TRYLOCK_FUNCTION(1);
-};
-
-class EXCLUSIVE_TRYLOCK_FUNCTION(1) EtfTestClass { // \
-  // expected-warning {{'exclusive_trylock_function' attribute only applies to functions and methods}}
-};
-
-void etf_fun_params(int lvar EXCLUSIVE_TRYLOCK_FUNCTION(1)); // \
-  // expected-warning {{'exclusive_trylock_function' attribute only applies to functions and methods}}
-
-// Check argument parsing.
-
-// legal attribute arguments
-int etf_function_1() EXCLUSIVE_TRYLOCK_FUNCTION(1, muWrapper.mu);
-int etf_function_2() EXCLUSIVE_TRYLOCK_FUNCTION(1, muDoubleWrapper.muWrapper->mu);
-int etf_function_3() EXCLUSIVE_TRYLOCK_FUNCTION(1, muWrapper.getMu());
-int etf_function_4() EXCLUSIVE_TRYLOCK_FUNCTION(1, *muWrapper.getMuPointer());
-int etf_function_5() EXCLUSIVE_TRYLOCK_FUNCTION(1, &mu1);
-int etf_function_6() EXCLUSIVE_TRYLOCK_FUNCTION(1, muRef);
-int etf_function_7() EXCLUSIVE_TRYLOCK_FUNCTION(1, muDoubleWrapper.getWrapper()->getMu());
-int etf_functetfn_8() EXCLUSIVE_TRYLOCK_FUNCTION(1, muPointer);
-int etf_function_9() EXCLUSIVE_TRYLOCK_FUNCTION(true);
-
-
-// illegal attribute arguments
-int etf_function_bad_1() EXCLUSIVE_TRYLOCK_FUNCTION(mu1); // \
-  // expected-error {{'exclusive_trylock_function' attribute first argument must be of int or bool type}}
-int etf_function_bad_2() EXCLUSIVE_TRYLOCK_FUNCTION("mu"); // \
-  // expected-error {{'exclusive_trylock_function' attribute first argument must be of int or bool type}}
-int etf_function_bad_3() EXCLUSIVE_TRYLOCK_FUNCTION(muDoublePointer); // \
-  // expected-error {{'exclusive_trylock_function' attribute first argument must be of int or bool type}}
-
-int etf_function_bad_4() EXCLUSIVE_TRYLOCK_FUNCTION(1, "mu"); // \
-  // expected-warning {{ignoring 'exclusive_trylock_function' attribute because its argument is invalid}}
-int etf_function_bad_5() EXCLUSIVE_TRYLOCK_FUNCTION(1, muDoublePointer); // \
-  // expected-warning {{'exclusive_trylock_function' attribute requires arguments that are class type or point to class type}}
-int etf_function_bad_6() EXCLUSIVE_TRYLOCK_FUNCTION(1, umu); // \
-  // expected-warning {{'exclusive_trylock_function' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-
-//-----------------------------------------//
-//  Shared TryLock Function (stf)
-//-----------------------------------------//
-
-#if !__has_attribute(shared_trylock_function)
-#error "Should support shared_trylock_function attribute"
-#endif
-
-// takes a mandatory boolean or integer argument specifying the retval
-// plus an optional list of locks (vars/fields)
-
-void stf_function() __attribute__((shared_trylock_function));  // \
-  // expected-error {{attribute takes at least 1 argument}}
-
-void stf_function_args() SHARED_TRYLOCK_FUNCTION(1, mu2);
-
-void stf_function_arg() SHARED_TRYLOCK_FUNCTION(1);
-
-int stf_testfn(int y) SHARED_TRYLOCK_FUNCTION(1);
-
-int stf_testfn(int y) {
-  int x SHARED_TRYLOCK_FUNCTION(1) = y; // \
-    // expected-warning {{'shared_trylock_function' attribute only applies to functions and methods}}
-  return x;
-};
-
-int stf_test_var SHARED_TRYLOCK_FUNCTION(1); // \
-  // expected-warning {{'shared_trylock_function' attribute only applies to functions and methods}}
-
-void stf_fun_params(int lvar SHARED_TRYLOCK_FUNCTION(1)); // \
-  // expected-warning {{'shared_trylock_function' attribute only applies to functions and methods}}
-
-
-class StfFoo {
- private:
-  int test_field SHARED_TRYLOCK_FUNCTION(1); // \
-    // expected-warning {{'shared_trylock_function' attribute only applies to functions and methods}}
-  void test_method() SHARED_TRYLOCK_FUNCTION(1);
-};
-
-class SHARED_TRYLOCK_FUNCTION(1) StfTestClass { // \
-    // expected-warning {{'shared_trylock_function' attribute only applies to functions and methods}}
-};
-
-// Check argument parsing.
-
-// legal attribute arguments
-int stf_function_1() SHARED_TRYLOCK_FUNCTION(1, muWrapper.mu);
-int stf_function_2() SHARED_TRYLOCK_FUNCTION(1, muDoubleWrapper.muWrapper->mu);
-int stf_function_3() SHARED_TRYLOCK_FUNCTION(1, muWrapper.getMu());
-int stf_function_4() SHARED_TRYLOCK_FUNCTION(1, *muWrapper.getMuPointer());
-int stf_function_5() SHARED_TRYLOCK_FUNCTION(1, &mu1);
-int stf_function_6() SHARED_TRYLOCK_FUNCTION(1, muRef);
-int stf_function_7() SHARED_TRYLOCK_FUNCTION(1, muDoubleWrapper.getWrapper()->getMu());
-int stf_function_8() SHARED_TRYLOCK_FUNCTION(1, muPointer);
-int stf_function_9() SHARED_TRYLOCK_FUNCTION(true);
-
-
-// illegal attribute arguments
-int stf_function_bad_1() SHARED_TRYLOCK_FUNCTION(mu1); // \
-  // expected-error {{'shared_trylock_function' attribute first argument must be of int or bool type}}
-int stf_function_bad_2() SHARED_TRYLOCK_FUNCTION("mu"); // \
-  // expected-error {{'shared_trylock_function' attribute first argument must be of int or bool type}}
-int stf_function_bad_3() SHARED_TRYLOCK_FUNCTION(muDoublePointer); // \
-  // expected-error {{'shared_trylock_function' attribute first argument must be of int or bool type}}
-
-int stf_function_bad_4() SHARED_TRYLOCK_FUNCTION(1, "mu"); // \
-  // expected-warning {{ignoring 'shared_trylock_function' attribute because its argument is invalid}}
-int stf_function_bad_5() SHARED_TRYLOCK_FUNCTION(1, muDoublePointer); // \
-  // expected-warning {{'shared_trylock_function' attribute requires arguments that are class type or point to class type}}
-int stf_function_bad_6() SHARED_TRYLOCK_FUNCTION(1, umu); // \
-  // expected-warning {{'shared_trylock_function' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-
-//-----------------------------------------//
-//  Unlock Function (uf)
-//-----------------------------------------//
-
-#if !__has_attribute(unlock_function)
-#error "Should support unlock_function attribute"
-#endif
-
-// takes zero or more arguments, all locks (vars/fields)
-
-void uf_function() UNLOCK_FUNCTION();
-
-void uf_function_args() UNLOCK_FUNCTION(mu1, mu2);
-
-int uf_testfn(int y) UNLOCK_FUNCTION();
-
-int uf_testfn(int y) {
-  int x UNLOCK_FUNCTION() = y; // \
-    // expected-warning {{'unlock_function' attribute only applies to functions and methods}}
-  return x;
-};
-
-int uf_test_var UNLOCK_FUNCTION(); // \
-  // expected-warning {{'unlock_function' attribute only applies to functions and methods}}
-
-class UfFoo {
- private:
-  int test_field UNLOCK_FUNCTION(); // \
-    // expected-warning {{'unlock_function' attribute only applies to functions and methods}}
-  void test_method() UNLOCK_FUNCTION();
-};
-
-class NO_THREAD_SAFETY_ANALYSIS UfTestClass { // \
-  // expected-warning {{'no_thread_safety_analysis' attribute only applies to functions and methods}}
-};
-
-void uf_fun_params(int lvar UNLOCK_FUNCTION()); // \
-  // expected-warning {{'unlock_function' attribute only applies to functions and methods}}
-
-// Check argument parsing.
-
-// legal attribute arguments
-int uf_function_1() UNLOCK_FUNCTION(muWrapper.mu);
-int uf_function_2() UNLOCK_FUNCTION(muDoubleWrapper.muWrapper->mu);
-int uf_function_3() UNLOCK_FUNCTION(muWrapper.getMu());
-int uf_function_4() UNLOCK_FUNCTION(*muWrapper.getMuPointer());
-int uf_function_5() UNLOCK_FUNCTION(&mu1);
-int uf_function_6() UNLOCK_FUNCTION(muRef);
-int uf_function_7() UNLOCK_FUNCTION(muDoubleWrapper.getWrapper()->getMu());
-int uf_function_8() UNLOCK_FUNCTION(muPointer);
-int uf_function_9(Mutex x) UNLOCK_FUNCTION(1);
-int uf_function_9(Mutex x, Mutex y) UNLOCK_FUNCTION(1,2);
-
-
-// illegal attribute arguments
-int uf_function_bad_2() UNLOCK_FUNCTION("mu"); // \
-  // expected-warning {{ignoring 'unlock_function' attribute because its argument is invalid}}
-int uf_function_bad_3() UNLOCK_FUNCTION(muDoublePointer); // \
-  // expected-warning {{'unlock_function' attribute requires arguments that are class type or point to class type}}
-int uf_function_bad_4() UNLOCK_FUNCTION(umu); // \
-  // expected-warning {{'unlock_function' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-int uf_function_bad_1() UNLOCK_FUNCTION(1); // \
-  // expected-error {{'unlock_function' attribute parameter 1 is out of bounds: no parameters to index into}}
-int uf_function_bad_5(Mutex x) UNLOCK_FUNCTION(0); // \
-  // expected-error {{'unlock_function' attribute parameter 1 is out of bounds: can only be 1, since there is one parameter}}
-int uf_function_bad_6(Mutex x, Mutex y) UNLOCK_FUNCTION(0); // \
-  // expected-error {{'unlock_function' attribute parameter 1 is out of bounds: must be between 1 and 2}}
-int uf_function_bad_7() UNLOCK_FUNCTION(0); // \
-  // expected-error {{'unlock_function' attribute parameter 1 is out of bounds: no parameters to index into}}
-
-
-//-----------------------------------------//
-//  Lock Returned (lr)
-//-----------------------------------------//
-
-#if !__has_attribute(lock_returned)
-#error "Should support lock_returned attribute"
-#endif
-
-// Takes exactly one argument, a var/field
-
-void lr_function() __attribute__((lock_returned)); // \
-  // expected-error {{attribute takes one argument}}
-
-void lr_function_arg() LOCK_RETURNED(mu1);
-
-void lr_function_args() __attribute__((lock_returned(mu1, mu2))); // \
-  // expected-error {{attribute takes one argument}}
-
-int lr_testfn(int y) LOCK_RETURNED(mu1);
-
-int lr_testfn(int y) {
-  int x LOCK_RETURNED(mu1) = y; // \
-    // expected-warning {{'lock_returned' attribute only applies to functions and methods}}
-  return x;
-};
-
-int lr_test_var LOCK_RETURNED(mu1); // \
-  // expected-warning {{'lock_returned' attribute only applies to functions and methods}}
-
-void lr_fun_params(int lvar LOCK_RETURNED(mu1)); // \
-  // expected-warning {{'lock_returned' attribute only applies to functions and methods}}
-
-class LrFoo {
- private:
-  int test_field LOCK_RETURNED(mu1); // \
-    // expected-warning {{'lock_returned' attribute only applies to functions and methods}}
-  void test_method() LOCK_RETURNED(mu1);
-};
-
-class LOCK_RETURNED(mu1) LrTestClass { // \
-    // expected-warning {{'lock_returned' attribute only applies to functions and methods}}
-};
-
-// Check argument parsing.
-
-// legal attribute arguments
-int lr_function_1() LOCK_RETURNED(muWrapper.mu);
-int lr_function_2() LOCK_RETURNED(muDoubleWrapper.muWrapper->mu);
-int lr_function_3() LOCK_RETURNED(muWrapper.getMu());
-int lr_function_4() LOCK_RETURNED(*muWrapper.getMuPointer());
-int lr_function_5() LOCK_RETURNED(&mu1);
-int lr_function_6() LOCK_RETURNED(muRef);
-int lr_function_7() LOCK_RETURNED(muDoubleWrapper.getWrapper()->getMu());
-int lr_function_8() LOCK_RETURNED(muPointer);
-
-
-// illegal attribute arguments
-int lr_function_bad_1() LOCK_RETURNED(1); // \
-  // expected-warning {{'lock_returned' attribute requires arguments that are class type or point to class type}}
-int lr_function_bad_2() LOCK_RETURNED("mu"); // \
-  // expected-warning {{ignoring 'lock_returned' attribute because its argument is invalid}}
-int lr_function_bad_3() LOCK_RETURNED(muDoublePointer); // \
-  // expected-warning {{'lock_returned' attribute requires arguments that are class type or point to class type}}
-int lr_function_bad_4() LOCK_RETURNED(umu); // \
-  // expected-warning {{'lock_returned' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-
-
-//-----------------------------------------//
-//  Locks Excluded (le)
-//-----------------------------------------//
-
-#if !__has_attribute(locks_excluded)
-#error "Should support locks_excluded attribute"
-#endif
-
-// takes one or more arguments, all locks (vars/fields)
-
-void le_function() __attribute__((locks_excluded)); // \
-  // expected-error {{attribute takes at least 1 argument}}
-
-void le_function_arg() LOCKS_EXCLUDED(mu1);
-
-void le_function_args() LOCKS_EXCLUDED(mu1, mu2);
-
-int le_testfn(int y) LOCKS_EXCLUDED(mu1);
-
-int le_testfn(int y) {
-  int x LOCKS_EXCLUDED(mu1) = y; // \
-    // expected-warning {{'locks_excluded' attribute only applies to functions and methods}}
-  return x;
-};
-
-int le_test_var LOCKS_EXCLUDED(mu1); // \
-  // expected-warning {{'locks_excluded' attribute only applies to functions and methods}}
-
-void le_fun_params(int lvar LOCKS_EXCLUDED(mu1)); // \
-  // expected-warning {{'locks_excluded' attribute only applies to functions and methods}}
-
-class LeFoo {
- private:
-  int test_field LOCKS_EXCLUDED(mu1); // \
-    // expected-warning {{'locks_excluded' attribute only applies to functions and methods}}
-  void test_method() LOCKS_EXCLUDED(mu1);
-};
-
-class LOCKS_EXCLUDED(mu1) LeTestClass { // \
-  // expected-warning {{'locks_excluded' attribute only applies to functions and methods}}
-};
-
-// Check argument parsing.
-
-// legal attribute arguments
-int le_function_1() LOCKS_EXCLUDED(muWrapper.mu);
-int le_function_2() LOCKS_EXCLUDED(muDoubleWrapper.muWrapper->mu);
-int le_function_3() LOCKS_EXCLUDED(muWrapper.getMu());
-int le_function_4() LOCKS_EXCLUDED(*muWrapper.getMuPointer());
-int le_function_5() LOCKS_EXCLUDED(&mu1);
-int le_function_6() LOCKS_EXCLUDED(muRef);
-int le_function_7() LOCKS_EXCLUDED(muDoubleWrapper.getWrapper()->getMu());
-int le_function_8() LOCKS_EXCLUDED(muPointer);
-
-
-// illegal attribute arguments
-int le_function_bad_1() LOCKS_EXCLUDED(1); // \
-  // expected-warning {{'locks_excluded' attribute requires arguments that are class type or point to class type}}
-int le_function_bad_2() LOCKS_EXCLUDED("mu"); // \
-  // expected-warning {{ignoring 'locks_excluded' attribute because its argument is invalid}}
-int le_function_bad_3() LOCKS_EXCLUDED(muDoublePointer); // \
-  // expected-warning {{'locks_excluded' attribute requires arguments that are class type or point to class type}}
-int le_function_bad_4() LOCKS_EXCLUDED(umu); // \
-  // expected-warning {{'locks_excluded' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-
-
-//-----------------------------------------//
-//  Exclusive Locks Required (elr)
-//-----------------------------------------//
-
-#if !__has_attribute(exclusive_locks_required)
-#error "Should support exclusive_locks_required attribute"
-#endif
-
-// takes one or more arguments, all locks (vars/fields)
-
-void elr_function() __attribute__((exclusive_locks_required)); // \
-  // expected-error {{attribute takes at least 1 argument}}
-
-void elr_function_arg() EXCLUSIVE_LOCKS_REQUIRED(mu1);
-
-void elr_function_args() EXCLUSIVE_LOCKS_REQUIRED(mu1, mu2);
-
-int elr_testfn(int y) EXCLUSIVE_LOCKS_REQUIRED(mu1);
-
-int elr_testfn(int y) {
-  int x EXCLUSIVE_LOCKS_REQUIRED(mu1) = y; // \
-    // expected-warning {{'exclusive_locks_required' attribute only applies to functions and methods}}
-  return x;
-};
-
-int elr_test_var EXCLUSIVE_LOCKS_REQUIRED(mu1); // \
-  // expected-warning {{'exclusive_locks_required' attribute only applies to functions and methods}}
-
-void elr_fun_params(int lvar EXCLUSIVE_LOCKS_REQUIRED(mu1)); // \
-  // expected-warning {{'exclusive_locks_required' attribute only applies to functions and methods}}
-
-class ElrFoo {
- private:
-  int test_field EXCLUSIVE_LOCKS_REQUIRED(mu1); // \
-    // expected-warning {{'exclusive_locks_required' attribute only applies to functions and methods}}
-  void test_method() EXCLUSIVE_LOCKS_REQUIRED(mu1);
-};
-
-class EXCLUSIVE_LOCKS_REQUIRED(mu1) ElrTestClass { // \
-  // expected-warning {{'exclusive_locks_required' attribute only applies to functions and methods}}
-};
-
-// Check argument parsing.
-
-// legal attribute arguments
-int elr_function_1() EXCLUSIVE_LOCKS_REQUIRED(muWrapper.mu);
-int elr_function_2() EXCLUSIVE_LOCKS_REQUIRED(muDoubleWrapper.muWrapper->mu);
-int elr_function_3() EXCLUSIVE_LOCKS_REQUIRED(muWrapper.getMu());
-int elr_function_4() EXCLUSIVE_LOCKS_REQUIRED(*muWrapper.getMuPointer());
-int elr_function_5() EXCLUSIVE_LOCKS_REQUIRED(&mu1);
-int elr_function_6() EXCLUSIVE_LOCKS_REQUIRED(muRef);
-int elr_function_7() EXCLUSIVE_LOCKS_REQUIRED(muDoubleWrapper.getWrapper()->getMu());
-int elr_function_8() EXCLUSIVE_LOCKS_REQUIRED(muPointer);
-
-
-// illegal attribute arguments
-int elr_function_bad_1() EXCLUSIVE_LOCKS_REQUIRED(1); // \
-  // expected-warning {{'exclusive_locks_required' attribute requires arguments that are class type or point to class type}}
-int elr_function_bad_2() EXCLUSIVE_LOCKS_REQUIRED("mu"); // \
-  // expected-warning {{ignoring 'exclusive_locks_required' attribute because its argument is invalid}}
-int elr_function_bad_3() EXCLUSIVE_LOCKS_REQUIRED(muDoublePointer); // \
-  // expected-warning {{'exclusive_locks_required' attribute requires arguments that are class type or point to class type}}
-int elr_function_bad_4() EXCLUSIVE_LOCKS_REQUIRED(umu); // \
-  // expected-warning {{'exclusive_locks_required' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-
-
-
-//-----------------------------------------//
-//  Shared Locks Required (slr)
-//-----------------------------------------//
-
-#if !__has_attribute(shared_locks_required)
-#error "Should support shared_locks_required attribute"
-#endif
-
-// takes one or more arguments, all locks (vars/fields)
-
-void slr_function() __attribute__((shared_locks_required)); // \
-  // expected-error {{attribute takes at least 1 argument}}
-
-void slr_function_arg() SHARED_LOCKS_REQUIRED(mu1);
-
-void slr_function_args() SHARED_LOCKS_REQUIRED(mu1, mu2);
-
-int slr_testfn(int y) SHARED_LOCKS_REQUIRED(mu1);
-
-int slr_testfn(int y) {
-  int x SHARED_LOCKS_REQUIRED(mu1) = y; // \
-    // expected-warning {{'shared_locks_required' attribute only applies to functions and methods}}
-  return x;
-};
-
-int slr_test_var SHARED_LOCKS_REQUIRED(mu1); // \
-  // expected-warning {{'shared_locks_required' attribute only applies to functions and methods}}
-
-void slr_fun_params(int lvar SHARED_LOCKS_REQUIRED(mu1)); // \
-  // expected-warning {{'shared_locks_required' attribute only applies to functions and methods}}
-
-class SlrFoo {
- private:
-  int test_field SHARED_LOCKS_REQUIRED(mu1); // \
-    // expected-warning {{'shared_locks_required' attribute only applies to functions and methods}}
-  void test_method() SHARED_LOCKS_REQUIRED(mu1);
-};
-
-class SHARED_LOCKS_REQUIRED(mu1) SlrTestClass { // \
-  // expected-warning {{'shared_locks_required' attribute only applies to functions and methods}}
-};
-
-// Check argument parsing.
-
-// legal attribute arguments
-int slr_function_1() SHARED_LOCKS_REQUIRED(muWrapper.mu);
-int slr_function_2() SHARED_LOCKS_REQUIRED(muDoubleWrapper.muWrapper->mu);
-int slr_function_3() SHARED_LOCKS_REQUIRED(muWrapper.getMu());
-int slr_function_4() SHARED_LOCKS_REQUIRED(*muWrapper.getMuPointer());
-int slr_function_5() SHARED_LOCKS_REQUIRED(&mu1);
-int slr_function_6() SHARED_LOCKS_REQUIRED(muRef);
-int slr_function_7() SHARED_LOCKS_REQUIRED(muDoubleWrapper.getWrapper()->getMu());
-int slr_function_8() SHARED_LOCKS_REQUIRED(muPointer);
-
-
-// illegal attribute arguments
-int slr_function_bad_1() SHARED_LOCKS_REQUIRED(1); // \
-  // expected-warning {{'shared_locks_required' attribute requires arguments that are class type or point to class type}}
-int slr_function_bad_2() SHARED_LOCKS_REQUIRED("mu"); // \
-  // expected-warning {{ignoring 'shared_locks_required' attribute because its argument is invalid}}
-int slr_function_bad_3() SHARED_LOCKS_REQUIRED(muDoublePointer); // \
-  // expected-warning {{'shared_locks_required' attribute requires arguments that are class type or point to class type}}
-int slr_function_bad_4() SHARED_LOCKS_REQUIRED(umu); // \
-  // expected-warning {{'shared_locks_required' attribute requires arguments whose type is annotated with 'lockable' attribute}}
-
-
-//-----------------------------------------//
-//  Regression tests for unusual cases.
-//-----------------------------------------//
-
-int trivially_false_edges(bool b) {
-  // Create NULL (never taken) edges in CFG
-  if (false) return 1;
-  else       return 2;
-}
-
-// Possible Clang bug -- method pointer in template parameter
-class UnFoo {
-public:
-  void foo();
-};
-
-template<void (UnFoo::*methptr)()>
-class MCaller {
-public:
-  static void call_method_ptr(UnFoo *f) {
-    // FIXME: Possible Clang bug:
-    // getCalleeDecl() returns NULL in the following case:
-    (f->*methptr)();
-  }
-};
-
-void call_method_ptr_inst(UnFoo* f) {
-  MCaller<&UnFoo::foo>::call_method_ptr(f);
-}
-
-int temp;
-void empty_back_edge() {
-  // Create a back edge to a block with with no statements
-  for (;;) {
-    ++temp;
-    if (temp > 10) break;
-  }
-}
-
-struct Foomger {
-  void operator++();
-};
-
-struct Foomgoper {
-  Foomger f;
-
-  bool done();
-  void invalid_back_edge() {
-    do {
-      // FIXME: Possible Clang bug:
-      // The first statement in this basic block has no source location
-      ++f;
-    } while (!done());
-  }
-};
-
-
-//-----------------------------------------------------
-// Parsing of member variables and function parameters
-//------------------------------------------------------
-
-Mutex gmu;
-
-class StaticMu {
-  static Mutex statmu;
-};
-
-class FooLate {
-public:
-  void foo1()           EXCLUSIVE_LOCKS_REQUIRED(gmu)   { }
-  void foo2()           EXCLUSIVE_LOCKS_REQUIRED(mu)    { }
-  void foo3(Mutex *m)   EXCLUSIVE_LOCKS_REQUIRED(m)     { }
-  void foo3(FooLate *f) EXCLUSIVE_LOCKS_REQUIRED(f->mu) { }
-  void foo4(FooLate *f) EXCLUSIVE_LOCKS_REQUIRED(f->mu);
-
-  static void foo5()    EXCLUSIVE_LOCKS_REQUIRED(mu); // \
-    // expected-error {{invalid use of member 'mu' in static member function}}
-
-  template <class T>
-  void foo6() EXCLUSIVE_LOCKS_REQUIRED(T::statmu) { }
-
-  template <class T>
-  void foo7(T* f) EXCLUSIVE_LOCKS_REQUIRED(f->mu) { }
-
-  int a GUARDED_BY(gmu);
-  int b GUARDED_BY(mu);
-  int c GUARDED_BY(this->mu);
-
-  Mutex mu;
-};
-
-//-------------------------
-// Empty argument lists
-//-------------------------
-
-class LOCKABLE EmptyArgListsTest {
-  void lock() EXCLUSIVE_LOCK_FUNCTION() { }
-  void unlock() UNLOCK_FUNCTION() { }
-};
-
-
-namespace FunctionDefinitionParseTest {
-// Test parsing of attributes on function definitions.
-
-class Foo {
-public:
-  Mutex mu_;
-  void foo1();
-  void foo2(Foo *f);
-};
-
-template <class T>
-class Bar {
-public:
-  Mutex mu_;
-  void bar();
-};
-
-void Foo::foo1()       EXCLUSIVE_LOCKS_REQUIRED(mu_) { }
-void Foo::foo2(Foo *f) EXCLUSIVE_LOCKS_REQUIRED(f->mu_) { }
-
-template <class T>
-void Bar<T>::bar() EXCLUSIVE_LOCKS_REQUIRED(mu_) { }
-
-void baz(Foo *f) EXCLUSIVE_LOCKS_REQUIRED(f->mu_) { }
-
-} // end namespace
-
-
-namespace TestMultiDecl {
-
-class Foo {
-public:
-  int GUARDED_BY(mu_) a;
-  int GUARDED_BY(mu_) b, c;
-
-private:
-  Mutex mu_;
-};
-
-} // end namespace TestMultiDecl
-
-
-namespace NestedClassLateDecl {
-
-class Foo {
-  class Bar {
-    int a GUARDED_BY(mu);
-    int b GUARDED_BY(fooMuStatic);
-
-    void bar()        EXCLUSIVE_LOCKS_REQUIRED(mu)       { a = 0;    }
-    void bar2(Bar* b) EXCLUSIVE_LOCKS_REQUIRED(b->mu)    { b->a = 0; }
-    void bar3(Foo* f) EXCLUSIVE_LOCKS_REQUIRED(f->fooMu) { f->a = 0; }
-
-    Mutex mu;
-  };
-
-  int a GUARDED_BY(fooMu);
-  Mutex fooMu;
-  static Mutex fooMuStatic;
-};
-
-}
-
-namespace PointerToMemberTest {
-
-// Empty string should be ignored.
-int  testEmptyAttribute GUARDED_BY("");
-void testEmptyAttributeFunction() EXCLUSIVE_LOCKS_REQUIRED("");
-
-class Graph {
-public:
-  Mutex mu_;
-
-  static Mutex* get_static_mu() LOCK_RETURNED(&Graph::mu_);
-};
-
-class Node {
-public:
-  void foo() EXCLUSIVE_LOCKS_REQUIRED(&Graph::mu_);
-  int a GUARDED_BY(&Graph::mu_);
-};
-
-}
-
-
-namespace SmartPointerTest {
-
-template<class T>
-class smart_ptr {
- public:
-  T* operator->() { return ptr_; }
-  T& operator*()  { return ptr_; }
-
- private:
-  T* ptr_;
-};
-
-
-Mutex gmu;
-smart_ptr<int> gdat PT_GUARDED_BY(gmu);
-
-
-class MyClass {
-public:
-  Mutex mu_;
-  smart_ptr<Mutex> smu_;
-
-
-  smart_ptr<int> a PT_GUARDED_BY(mu_);
-  int b            GUARDED_BY(smu_);
-};
-
-}
-
-
-namespace InheritanceTest {
-
-class LOCKABLE Base {
- public:
-  void lock()   EXCLUSIVE_LOCK_FUNCTION();
-  void unlock() UNLOCK_FUNCTION();
-};
-
-class Base2 { };
-
-class Derived1 : public Base { };
-
-class Derived2 : public Base2, public Derived1 { };
-
-class Derived3 : public Base2 { };
-
-class Foo {
-  Derived1 mu1_;
-  Derived2 mu2_;
-  Derived3 mu3_;
-  int a GUARDED_BY(mu1_);
-  int b GUARDED_BY(mu2_);
-  int c GUARDED_BY(mu3_);  // \
-    // expected-warning {{'guarded_by' attribute requires arguments whose type is annotated with 'lockable' attribute; type here is 'class InheritanceTest::Derived3'}}
-
-  void foo() EXCLUSIVE_LOCKS_REQUIRED(mu1_, mu2_) {
-    a = 0;
-    b = 0;
-  }
-};
-
-}
-
-
-namespace InvalidDeclTest {
-
-class Foo { };
-namespace {
-void Foo::bar(Mutex* mu) LOCKS_EXCLUDED(mu) { } // \
-   // expected-error   {{cannot define or redeclare 'bar' here because namespace '' does not enclose namespace 'Foo'}} \
-   // expected-warning {{attribute locks_excluded ignored, because it is not attached to a declaration}}
-}
-
-} // end namespace InvalidDeclTest
-
-
-namespace StaticScopeTest {
-
-class FooStream;
-
-class Foo {
-  mutable Mutex mu;
-  int a GUARDED_BY(mu);
-
-  static int si GUARDED_BY(mu); // \
-    // expected-error {{invalid use of non-static data member 'mu'}}
-
-  static void foo() EXCLUSIVE_LOCKS_REQUIRED(mu); // \
-    // expected-error {{invalid use of member 'mu' in static member function}}
-
-  friend FooStream& operator<<(FooStream& s, const Foo& f)
-    EXCLUSIVE_LOCKS_REQUIRED(mu); // \
-    // expected-error {{invalid use of non-static data member 'mu'}}
-};
-
-
-} // end namespace StaticScopeTest
-
-
-namespace FunctionAttributesInsideClass_ICE_Test {
-
-class Foo {
-public:
-  /*  Originally found when parsing foo() as an ordinary method after the
-   *  the following:
-
-  template <class T>
-  void syntaxErrorMethod(int i) {
-    if (i) {
-      foo(
-    }
-  }
-  */
-
-  void method() {
-    void foo() EXCLUSIVE_LOCKS_REQUIRED(mu); // \
-      // expected-error {{use of undeclared identifier 'mu'}}
-  }
-};
-
-}  // end namespace FunctionAttributesInsideClass_ICE_Test
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unreachable.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unreachable.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unreachable.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,109 +0,0 @@
-// RUN: %clang_cc1 %s -fcxx-exceptions -fexceptions -fsyntax-only -verify -fblocks -Wunreachable-code -Wno-unused-value
-
-int &halt() __attribute__((noreturn));
-int &live();
-int dead();
-int liveti() throw(int);
-int (*livetip)() throw(int);
-
-int test1() {
-  try {
-    live();
-  } catch (int i) {
-    live();
-  }
-  return 1;
-}
-
-void test2() {
-  try {
-    live();
-  } catch (int i) {
-    live();
-  }
-  try {
-    liveti();
-  } catch (int i) {
-    live();
-  }
-  try {
-    livetip();
-  } catch (int i) {
-    live();
-  }
-  throw 1;
-  dead();       // expected-warning {{will never be executed}}
-}
-
-
-void test3() {
-  halt()
-    --;         // expected-warning {{will never be executed}}
-  // FIXME: The unreachable part is just the '?', but really all of this
-  // code is unreachable and shouldn't be separately reported.
-  halt()        // expected-warning {{will never be executed}}
-    ? 
-    dead() : dead();
-  live(),
-    float       
-      (halt()); // expected-warning {{will never be executed}}
-}
-
-void test4() {
-  struct S {
-    int mem;
-  } s;
-  S &foor();
-  halt(), foor()// expected-warning {{will never be executed}}
-    .mem;       
-}
-
-void test5() {
-  struct S {
-    int mem;
-  } s;
-  S &foor() __attribute__((noreturn));
-  foor()
-    .mem;       // expected-warning {{will never be executed}}
-}
-
-void test6() {
-  struct S {
-    ~S() { }
-    S(int i) { }
-  };
-  live(),
-    S
-      (halt());  // expected-warning {{will never be executed}}
-}
-
-// Don't warn about unreachable code in template instantiations, as
-// they may only be unreachable in that specific instantiation.
-void isUnreachable();
-
-template <typename T> void test_unreachable_templates() {
-  T::foo();
-  isUnreachable();  // no-warning
-}
-
-struct TestUnreachableA {
-  static void foo() __attribute__((noreturn));
-};
-struct TestUnreachableB {
-  static void foo();
-};
-
-void test_unreachable_templates_harness() {
-  test_unreachable_templates<TestUnreachableA>();
-  test_unreachable_templates<TestUnreachableB>(); 
-}
-
-// Do warn about explict template specializations, as they represent
-// actual concrete functions that somebody wrote.
-
-template <typename T> void funcToSpecialize() {}
-template <> void funcToSpecialize<int>() {
-  halt();
-  dead(); // expected-warning {{will never be executed}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unsequenced.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unsequenced.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unsequenced.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wno-unused %s
-
-int f(int, int);
-
-struct A {
-  int x, y;
-};
-struct S {
-  S(int, int);
-};
-
-void test() {
-  int a;
-  int xs[10];
-  ++a = 0; // ok
-  a + ++a; // expected-warning {{unsequenced modification and access to 'a'}}
-  a = ++a; // ok
-  a + a++; // expected-warning {{unsequenced modification and access to 'a'}}
-  a = a++; // expected-warning {{multiple unsequenced modifications to 'a'}}
-  ++ ++a; // ok
-  (a++, a++); // ok
-  ++a + ++a; // expected-warning {{multiple unsequenced modifications to 'a'}}
-  a++ + a++; // expected-warning {{multiple unsequenced modifications}}
-  (a++, a) = 0; // ok, increment is sequenced before value computation of LHS
-  a = xs[++a]; // ok
-  a = xs[a++]; // expected-warning {{multiple unsequenced modifications}}
-  (a ? xs[0] : xs[1]) = ++a; // expected-warning {{unsequenced modification and access}}
-  a = (++a, ++a); // ok
-  a = (a++, ++a); // ok
-  a = (a++, a++); // expected-warning {{multiple unsequenced modifications}}
-  f(a, a); // ok
-  f(a = 0, a); // expected-warning {{unsequenced modification and access}}
-  f(a, a += 0); // expected-warning {{unsequenced modification and access}}
-  f(a = 0, a = 0); // expected-warning {{multiple unsequenced modifications}}
-
-  // Compound assignment "A OP= B" is equivalent to "A = A OP B" except that A
-  // is evaluated only once.
-  (++a, a) = 1; // ok
-  (++a, a) += 1; // ok
-  a = ++a; // ok
-  a += ++a; // expected-warning {{unsequenced modification and access}}
-
-  A agg1 = { a++, a++ }; // ok
-  A agg2 = { a++ + a, a++ }; // expected-warning {{unsequenced modification and access}}
-
-  S str1(a++, a++); // expected-warning {{multiple unsequenced modifications}}
-  S str2 = { a++, a++ }; // ok
-  S str3 = { a++ + a, a++ }; // expected-warning {{unsequenced modification and access}}
-
-  (xs[2] && (a = 0)) + a; // ok
-  (0 && (a = 0)) + a; // ok
-  (1 && (a = 0)) + a; // expected-warning {{unsequenced modification and access}}
-
-  (xs[3] || (a = 0)) + a; // ok
-  (0 || (a = 0)) + a; // expected-warning {{unsequenced modification and access}}
-  (1 || (a = 0)) + a; // ok
-
-  (xs[4] ? a : ++a) + a; // ok
-  (0 ? a : ++a) + a; // expected-warning {{unsequenced modification and access}}
-  (1 ? a : ++a) + a; // ok
-  (xs[5] ? ++a : ++a) + a; // FIXME: warn here
-
-  (++a, xs[6] ? ++a : 0) + a; // expected-warning {{unsequenced modification and access}}
-
-  // Here, the read of the fourth 'a' might happen before or after the write to
-  // the second 'a'.
-  a += (a++, a) + a; // expected-warning {{unsequenced modification and access}}
-
-  int *p = xs;
-  a = *(a++, p); // ok
-  a = a++ && a; // ok
-
-  A *q = &agg1;
-  (q = &agg2)->y = q->x; // expected-warning {{unsequenced modification and access to 'q'}}
-
-  // This has undefined behavior if a == 0; otherwise, the side-effect of the
-  // increment is sequenced before the value computation of 'f(a, a)', which is
-  // sequenced before the value computation of the '&&', which is sequenced
-  // before the assignment. We treat the sequencing in '&&' as being
-  // unconditional.
-  a = a++ && f(a, a);
-
-  // This has undefined behavior if a != 0. FIXME: We should diagnose this.
-  (a && a++) + a;
-
-  (xs[7] && ++a) * (!xs[7] && ++a); // ok
-
-  xs[0] = (a = 1, a); // ok
-  (a -= 128) &= 128; // ok
-  ++a += 1; // ok
-
-  xs[8] ? ++a + a++ : 0; // expected-warning {{multiple unsequenced modifications}}
-  xs[8] ? 0 : ++a + a++; // expected-warning {{multiple unsequenced modifications}}
-  xs[8] ? ++a : a++; // ok
-
-  xs[8] && (++a + a++); // expected-warning {{multiple unsequenced modifications}}
-  xs[8] || (++a + a++); // expected-warning {{multiple unsequenced modifications}}
-
-  (__builtin_classify_type(++a) ? 1 : 0) + ++a; // ok
-  (__builtin_constant_p(++a) ? 1 : 0) + ++a; // ok
-  (__builtin_object_size(&(++a, a), 0) ? 1 : 0) + ++a; // ok
-  (__builtin_expect(++a, 0) ? 1 : 0) + ++a; // expected-warning {{multiple unsequenced modifications}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-comparison.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-comparison.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-comparison.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -verify -Wno-unused -Wunused-comparison %s
-
-struct A {
-  bool operator==(const A&);
-  bool operator!=(const A&);
-  A operator|=(const A&);
-  operator bool();
-};
-
-void test() {
-  int x, *p;
-  A a, b;
-
-  x == 7; // expected-warning {{equality comparison result unused}} \
-          // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  x != 7; // expected-warning {{inequality comparison result unused}} \
-          // expected-note {{use '|=' to turn this inequality comparison into an or-assignment}}
-  7 == x; // expected-warning {{equality comparison result unused}}
-  p == p; // expected-warning {{equality comparison result unused}} \
-          // expected-note {{use '=' to turn this equality comparison into an assignment}} \
-          // expected-warning {{self-comparison always evaluates to true}}
-  a == a; // expected-warning {{equality comparison result unused}} \
-          // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  a == b; // expected-warning {{equality comparison result unused}} \
-          // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  a != b; // expected-warning {{inequality comparison result unused}} \
-          // expected-note {{use '|=' to turn this inequality comparison into an or-assignment}}
-  A() == b; // expected-warning {{equality comparison result unused}}
-  if (42) x == 7; // expected-warning {{equality comparison result unused}} \
-                  // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  else if (42) x == 7; // expected-warning {{equality comparison result unused}} \
-                       // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  else x == 7; // expected-warning {{equality comparison result unused}} \
-               // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  do x == 7; // expected-warning {{equality comparison result unused}} \
-             // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  while (false);
-  while (false) x == 7; // expected-warning {{equality comparison result unused}} \
-                        // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  for (x == 7; // expected-warning {{equality comparison result unused}} \
-               // expected-note {{use '=' to turn this equality comparison into an assignment}}
-       x == 7; // No warning -- result is used
-       x == 7) // expected-warning {{equality comparison result unused}} \
-               // expected-note {{use '=' to turn this equality comparison into an assignment}}
-    x == 7; // expected-warning {{equality comparison result unused}} \
-            // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  switch (42) default: x == 7; // expected-warning {{equality comparison result unused}} \
-                               // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  switch (42) case 42: x == 7; // expected-warning {{equality comparison result unused}} \
-                               // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  switch (42) {
-    case 1:
-    case 2:
-    default:
-    case 3:
-    case 4:
-      x == 7; // expected-warning {{equality comparison result unused}} \
-              // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  }
-
-  (void)(x == 7);
-  (void)(p == p); // expected-warning {{self-comparison always evaluates to true}}
-  { bool b = x == 7; }
-
-  { bool b = ({ x == 7; // expected-warning {{equality comparison result unused}} \
-                        // expected-note {{use '=' to turn this equality comparison into an assignment}}
-                x == 7; }); } // no warning on the second, its result is used!
-
-#define EQ(x,y) (x) == (y)
-  EQ(x, 5);
-#undef EQ
-}
-
-namespace PR10291 {
-  template<typename T>
-  class X
-  {
-  public:
-
-    X() : i(0) { } 
-
-    void foo()
-    {   
-      throw 
-        i == 0u ?
-        5 : 6;
-    }   
-
-  private:
-    int i;
-  };
-
-  X<int> x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-filescoped.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-filescoped.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-filescoped.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,163 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wunused -Wunused-member-function -Wno-c++11-extensions -std=c++98 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -Wunused -Wunused-member-function -std=c++11 %s
-
-static void f1(); // expected-warning{{unused}}
-
-namespace {
-  void f2();  // expected-warning{{unused}}
-
-  void f3() { }  // expected-warning{{unused}}
-
-  struct S {
-    void m1() { }  // expected-warning{{unused}}
-    void m2();  // expected-warning{{unused}}
-    void m3();
-    S(const S&);
-    void operator=(const S&);
-  };
-
-  template <typename T>
-  struct TS {
-    void m();
-  };
-  template <> void TS<int>::m() { }  // expected-warning{{unused}}
-
-  template <typename T>
-  void tf() { }
-  template <> void tf<int>() { }  // expected-warning{{unused}}
-  
-  struct VS {
-    virtual void vm() { }
-  };
-  
-  struct SVS : public VS {
-    void vm() { }
-  };
-}
-
-void S::m3() { }  // expected-warning{{unused}}
-
-static inline void f4() { }
-const unsigned int cx = 0;
-
-static int x1;  // expected-warning{{unused}}
-
-namespace {
-  int x2;  // expected-warning{{unused}}
-  
-  struct S2 {
-    static int x;  // expected-warning{{unused}}
-  };
-
-  template <typename T>
-  struct TS2 {
-    static int x;
-  };
-  template <> int TS2<int>::x;  // expected-warning{{unused}}
-}
-
-namespace PR8841 {
-  // Ensure that friends of class templates are considered to have a dependent
-  // context and not marked unused.
-  namespace {
-    template <typename T> struct X {
-      friend bool operator==(const X&, const X&) { return false; }
-    };
-  }
-  template <typename T> void template_test(X<T> x) {
-    (void)(x == x);
-  }
-  void test() {
-    X<int> x;
-    template_test(x);
-  }
-}
-
-namespace test4 {
-  namespace { struct A {}; }
-
-  void test(A a); // expected-warning {{unused function}}
-  extern "C" void test4(A a);
-}
-
-namespace rdar8733476 {
-  static void foo() { } // expected-warning {{not needed and will not be emitted}}
-
-  template <int>
-  void bar() {
-    foo();
-  }
-}
-
-namespace test5 {
-  static int n = 0;
-  static int &r = n;
-  int f(int &);
-  int k = f(r);
-
-  // FIXME: We should produce warnings for both of these.
-  static const int m = n;
-  int x = sizeof(m);
-  static const double d = 0.0;
-  int y = sizeof(d);
-}
-
-namespace unused_nested {
-  class outer {
-    void func1();
-    struct {
-      void func2() {
-      }
-    } x;
-  };
-}
-
-namespace unused {
-  struct {
-    void func() { // expected-warning {{unused member function}}
-    }
-  } x; // expected-warning {{unused variable}}
-}
-
-namespace test6 {
-  typedef struct {
-    void bar();
-  } A;
-
-  typedef struct {
-    void bar();  // expected-warning {{unused member function 'bar'}}
-  } *B;
-
-  struct C {
-    void bar();
-  };
-}
-
-namespace test7
-{
-  template<typename T>
-  static inline void foo(T) { }
-
-  // This should not emit an unused-function warning since it inherits
-  // the static storage type from the base template.
-  template<>
-  inline void foo(int) {  }
-
-  // Partial specialization
-  template<typename T, typename U>
-  static inline void bar(T, U) { }
-
-  template<typename U>
-  inline void bar(int, U) { }
-
-  template<>
-  inline void bar(int, int) { }
-};
-
-namespace pr14776 {
-  namespace {
-    struct X {};
-  }
-  X a = X(); // expected-warning {{unused variable 'a'}}
-  auto b = X(); // expected-warning {{unused variable 'b'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-parameters.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-parameters.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-parameters.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-parameter -verify -std=c++11 %s
-template<typename T>
-struct X {
-  T f0(T x);
-  T f1(T x);
-  T f2(T);
-  template<typename U> U f3(U x);
-  template<typename U> U f4(U x);
-  template<typename U> U f5(U);
-};
-
-template<typename T> T X<T>::f0(T x) { return x; }
-template<typename T> T X<T>::f1(T) { return T(); }
-template<typename T> T X<T>::f2(T x) { return T(); } // expected-warning{{unused parameter 'x'}}
-template<typename T> template<typename U> U X<T>::f3(U x) { return x; }
-template<typename T> template<typename U> U X<T>::f4(U) { return U(); }
-template<typename T> template<typename U> U X<T>::f5(U x) { return U(); } // expected-warning{{unused parameter 'x'}}
-
-void test_X(X<int> &x, int i) {
-  x.f0(i);
-  x.f1(i);
-  x.f2(i);
-  x.f3(i);
-  x.f4(i);
-  x.f5(i);
-}
-
-// Make sure both parameters aren't considered unused.
-template <typename... T>
-static int test_pack(T... t, T... s)
-{
-  auto l = [&t...]() { return sizeof...(s); };
-  return l();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-private-field.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-private-field.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-private-field.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,246 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-private-field -Wused-but-marked-unused -verify -std=c++11 %s
-
-class NotFullyDefined {
- public:
-  NotFullyDefined();
- private:
-  int y;
-};
-
-class HasUndefinedNestedClass {
-  class Undefined;
-  int unused_;
-};
-
-class HasUndefinedPureVirtualDestructor {
-  virtual ~HasUndefinedPureVirtualDestructor() = 0;
-  int unused_;
-};
-
-class HasDefinedNestedClasses {
-  class DefinedHere {};
-  class DefinedOutside;
-  int unused_; // expected-warning{{private field 'unused_' is not used}}
-};
-class HasDefinedNestedClasses::DefinedOutside {};
-
-class HasUndefinedFriendFunction {
-  friend void undefinedFriendFunction();
-  int unused_;
-};
-
-class HasUndefinedFriendClass {
-  friend class NotFullyDefined;
-  friend class NotDefined;
-  int unused_;
-};
-
-class HasFriend {
-  friend class FriendClass;
-  friend void friendFunction(HasFriend f);
-  int unused_; // expected-warning{{private field 'unused_' is not used}}
-  int used_by_friend_class_;
-  int used_by_friend_function_;
-};
-
-class ClassWithTemplateFriend {
-  template <typename T> friend class TemplateFriend;
-  int used_by_friend_;
-  int unused_;
-};
-
-template <typename T> class TemplateFriend {
-public:
-  TemplateFriend(ClassWithTemplateFriend my_friend) {
-    int var = my_friend.used_by_friend_;
-  }
-};
-
-class FriendClass {
-  HasFriend my_friend_;
-  void use() {
-    my_friend_.used_by_friend_class_ = 42;
-  }
-};
-
-void friendFunction(HasFriend my_friend) {
-  my_friend.used_by_friend_function_ = 42;
-}
-
-class NonTrivialConstructor {
- public:
-  NonTrivialConstructor() {}
-};
-
-class NonTrivialDestructor {
- public:
-  ~NonTrivialDestructor() {}
-};
-
-class Trivial {
- public:
-  Trivial() = default;
-  Trivial(int a) {}
-};
-
-int side_effect() {
-  return 42;
-}
-
-class A {
- public:
-  A() : primitive_type_(42), default_initializer_(), other_initializer_(42),
-        trivial_(), user_constructor_(42),
-        initialized_with_side_effect_(side_effect()) {
-    used_ = 42;
-    attr_used_ = 42; // expected-warning{{'attr_used_' was marked unused but was used}}
-  }
-
-  A(int x, A* a) : pointer_(a) {}
-
- private:
-  int primitive_type_; // expected-warning{{private field 'primitive_type_' is not used}}
-  A* pointer_; // expected-warning{{private field 'pointer_' is not used}}
-  int no_initializer_; // expected-warning{{private field 'no_initializer_' is not used}}
-  int default_initializer_; // expected-warning{{private field 'default_initializer_' is not used}}
-  int other_initializer_; // expected-warning{{private field 'other_initializer_' is not used}}
-  int used_, unused_; // expected-warning{{private field 'unused_' is not used}}
-  int in_class_initializer_ = 42; // expected-warning{{private field 'in_class_initializer_' is not used}}
-  int in_class_initializer_with_side_effect_ = side_effect();
-  Trivial trivial_initializer_ = Trivial(); // expected-warning{{private field 'trivial_initializer_' is not used}}
-  Trivial non_trivial_initializer_ = Trivial(42);
-  int initialized_with_side_effect_;
-  static int static_fields_are_ignored_;
-
-  Trivial trivial_; // expected-warning{{private field 'trivial_' is not used}}
-  Trivial user_constructor_;
-  NonTrivialConstructor non_trivial_constructor_;
-  NonTrivialDestructor non_trivial_destructor_;
-
-  int attr_ __attribute__((unused));
-  int attr_used_ __attribute__((unused));
-};
-
-class EverythingUsed {
- public:
-  EverythingUsed() : as_array_index_(0), var_(by_initializer_) {
-    var_ = sizeof(sizeof_);
-    int *use = &by_reference_;
-    int test[2];
-    test[as_array_index_] = 42;
-  }
-
-  template<class T>
-  void useStuff(T t) {
-    by_template_function_ = 42;
-  }
-
- private:
-  int var_;
-  int sizeof_;
-  int by_reference_;
-  int by_template_function_;
-  int as_array_index_;
-  int by_initializer_;
-};
-
-class HasFeatureTest {
-#if __has_feature(attribute_unused_on_fields)
-  int unused_; // expected-warning{{private field 'unused_' is not used}}
-  int unused2_ __attribute__((unused)); // no-warning
-#endif
-};
-
-namespace templates {
-class B {
-  template <typename T> void f(T t);
-  int a;
-};
-}  // namespace templates
-
-namespace mutual_friends {
-// Undefined methods make mutual friends undefined.
-class A {
-  int a;
-  friend class B;
-  void doSomethingToAOrB();
-};
-class B {
-  int b;
-  friend class A;
-};
-
-// Undefined friends do not make a mutual friend undefined.
-class C {
-  int c;
-  void doSomethingElse() {}
-  friend class E;
-  friend class D;
-};
-class D {
-  int d; // expected-warning{{private field 'd' is not used}}
-  friend class C;
-};
-
-// Undefined nested classes make mutual friends undefined.
-class F {
-  int f;
-  class G;
-  friend class H;
-};
-class H {
-  int h;
-  friend class F;
-};
-}  // namespace mutual_friends
-
-namespace anonymous_structs_unions {
-class A {
- private:
-  // FIXME: Look at the DeclContext for anonymous structs/unions.
-  union {
-    int *Aligner;
-    unsigned char Data[8];
-  };
-};
-union S {
- private:
-  int *Aligner;
-  unsigned char Data[8];
-};
-}  // namespace anonymous_structs_unions
-
-namespace pr13413 {
-class A {
-  A() : p_(__null), b_(false), a_(this), p2_(nullptr) {}
-  void* p_;  // expected-warning{{private field 'p_' is not used}}
-  bool b_;  // expected-warning{{private field 'b_' is not used}}
-  A* a_;  // expected-warning{{private field 'a_' is not used}}
-  void* p2_;  // expected-warning{{private field 'p2_' is not used}}
-};
-}
-
-namespace pr13543 {
-  void f(int);
-  void f(char);
-  struct S {
-    S() : p(&f) {}
-  private:
-    void (*p)(int); // expected-warning{{private field 'p' is not used}}
-  };
-
-  struct A { int n; };
-  struct B {
-    B() : a(A()) {}
-    B(char) {}
-    B(int n) : a{n}, b{(f(n), 0)} {}
-  private:
-    A a = A(); // expected-warning{{private field 'a' is not used}}
-    A b;
-  };
-
-  struct X { ~X(); };
-  class C {
-    X x[4]; // no-warning
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-result.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-result.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-result.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-int f() __attribute__((warn_unused_result));
-
-struct S {
-  void t() const;
-};
-S g1() __attribute__((warn_unused_result));
-S *g2() __attribute__((warn_unused_result));
-S &g3() __attribute__((warn_unused_result));
-
-void test() {
-  f(); // expected-warning {{ignoring return value}}
-  g1(); // expected-warning {{ignoring return value}}
-  g2(); // expected-warning {{ignoring return value}}
-  g3(); // expected-warning {{ignoring return value}}
-
-  (void)f();
-  (void)g1();
-  (void)g2();
-  (void)g3();
-
-  if (f() == 0) return;
-
-  g1().t();
-  g2()->t();
-  g3().t();
-
-  int i = f();
-  S s1 = g1();
-  S *s2 = g2();
-  S &s3 = g3();
-  const S &s4 = g1();
-}
-
-struct X {
- int foo() __attribute__((warn_unused_result));
-};
-
-void bah() {
-  X x, *x2;
-  x.foo(); // expected-warning {{ignoring return value}}
-  x2->foo(); // expected-warning {{ignoring return value}}
-}
-
-namespace warn_unused_CXX11 {
-struct [[clang::warn_unused_result]] Status {
-  bool ok() const;
-  Status& operator=(const Status& x);
-  inline void Update(const Status& new_status) {
-    if (ok()) {
-      *this = new_status; //no-warning
-    }
-  }
-};
-Status DoSomething();
-Status& DoSomethingElse();
-Status* DoAnotherThing();
-Status** DoYetAnotherThing();
-void lazy() {
-  Status s = DoSomething();
-  if (!s.ok()) return;
-  Status &rs = DoSomethingElse();
-  if (!rs.ok()) return;
-  Status *ps = DoAnotherThing();
-  if (!ps->ok()) return;
-  Status **pps = DoYetAnotherThing();
-  if (!(*pps)->ok()) return;
-
-  (void)DoSomething();
-  (void)DoSomethingElse();
-  (void)DoAnotherThing();
-  (void)DoYetAnotherThing();
-
-  DoSomething(); // expected-warning {{ignoring return value}}
-  DoSomethingElse(); // expected-warning {{ignoring return value}}
-  DoAnotherThing(); // expected-warning {{ignoring return value}}
-  DoYetAnotherThing();
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-value.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-value.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-value.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wunused-value %s
-
-// PR4806
-namespace test0 {
-  class Box {
-  public:
-    int i;
-    volatile int j;
-  };
-
-  void doit() {
-    // pointer to volatile has side effect (thus no warning)
-    Box* box = new Box;
-    box->i; // expected-warning {{expression result unused}}
-    box->j; // expected-warning {{expression result unused}}
-  }
-}
-
-namespace test1 {
-struct Foo {
-  int i;
-  bool operator==(const Foo& rhs) {
-    return i == rhs.i;
-  }
-};
-
-#define NOP(x) (x)
-void b(Foo f1, Foo f2) {
-  NOP(f1 == f2);  // expected-warning {{expression result unused}}
-}
-#undef NOP
-}
-
-namespace test2 {
-  extern "C" {
-    namespace std {
-      template<typename T> struct basic_string {
-        struct X {};
-        void method() const {
-         X* x;
-         &x[0];  // expected-warning {{expression result unused}}
-        }  
-      };
-      typedef basic_string<char> string;
-      void func(const std::string& str) { 
-        str.method();  // expected-note {{in instantiation of member function}}
-      }
-    } 
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-variables-error.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-variables-error.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-variables-error.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -verify %s
-
-namespace PR6948 {
-  template<typename T> class X; // expected-note{{template is declared here}}
-  
-  void f() {
-    X<char> str (read_from_file()); // expected-error{{use of undeclared identifier 'read_from_file'}} \
-                                       expected-error{{implicit instantiation of undefined template 'PR6948::X<char>'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-variables.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-variables.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-unused-variables.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,130 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused-variable -verify %s
-template<typename T> void f() {
-  T t;
-  t = 17;
-}
-
-// PR5407
-struct A { A(); };
-struct B { ~B(); };
-void f() {
-  A a;
-  B b;
-}
-
-// PR5531
-namespace PR5531 {
-  struct A {
-  };
-
-  struct B {
-    B(int);
-  };
-
-  struct C {
-    ~C();
-  };
-
-  void test() {
-    A();
-    B(17);
-    C();
-  }
-}
-
-template<typename T>
-struct X0 { };
-
-template<typename T>
-void test_dependent_init(T *p) {
-  X0<int> i(p);
-  (void)i;
-}
-
-void unused_local_static() {
-  static int x = 0;
-  static int y = 0; // expected-warning{{unused variable 'y'}}
-#pragma unused(x)
-}
-
-// PR10168
-namespace PR10168 {
-  // We expect a warning in the definition only for non-dependent variables, and
-  // a warning in the instantiation only for dependent variables.
-  template<typename T>
-  struct S {
-    void f() {
-      int a; // expected-warning {{unused variable 'a'}}
-      T b; // expected-warning 2{{unused variable 'b'}}
-    }
-  };
-
-  template<typename T>
-  void f() {
-    int a; // expected-warning {{unused variable 'a'}}
-    T b; // expected-warning 2{{unused variable 'b'}}
-  }
-
-  void g() {
-    S<int>().f(); // expected-note {{here}}
-    S<char>().f(); // expected-note {{here}}
-    f<int>(); // expected-note {{here}}
-    f<char>(); // expected-note {{here}}
-  }
-}
-
-namespace PR11550 {
-  struct S1 {
-    S1();
-  };
-  S1 makeS1();
-  void testS1(S1 a) {
-    // This constructor call can be elided.
-    S1 x = makeS1(); // expected-warning {{unused variable 'x'}}
-
-    // This one cannot, so no warning.
-    S1 y;
-
-    // This call cannot, but the constructor is trivial.
-    S1 z = a; // expected-warning {{unused variable 'z'}}
-  }
-
-  // The same is true even when we know thet constructor has side effects.
-  void foo();
-  struct S2 {
-    S2() {
-      foo();
-    }
-  };
-  S2 makeS2();
-  void testS2(S2 a) {
-    S2 x = makeS2(); // expected-warning {{unused variable 'x'}}
-    S2 y;
-    S2 z = a; // expected-warning {{unused variable 'z'}}
-  }
-
-  // Or when the constructor is not declared by the user.
-  struct S3 {
-    S1 m;
-  };
-  S3 makeS3();
-  void testS3(S3 a) {
-    S3 x = makeS3(); // expected-warning {{unused variable 'x'}}
-    S3 y;
-    S3 z = a; // expected-warning {{unused variable 'z'}}
-  }
-}
-
-namespace ctor_with_cleanups {
-  struct S1 {
-    ~S1();
-  };
-  struct S2 {
-    S2(const S1&);
-  };
-  void func() {
-    S2 s((S1()));
-  }
-}
-
-#include "Inputs/warn-unused-variables.h"

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-using-namespace-in-header.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-using-namespace-in-header.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-using-namespace-in-header.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wheader-hygiene -verify %s
-
-#ifdef BE_THE_HEADER
-namespace warn_in_header_in_global_context {}
-using namespace warn_in_header_in_global_context; // expected-warning {{using namespace directive in global context in header}}
-
-// While we want to error on the previous using directive, we don't when we are
-// inside a namespace
-namespace dont_warn_here {
-using namespace warn_in_header_in_global_context;
-}
-
-// We should warn in toplevel extern contexts.
-namespace warn_inside_linkage {}
-extern "C++" {
-using namespace warn_inside_linkage; // expected-warning {{using namespace directive in global context in header}}
-}
-
-// This is really silly, but we should warn on it:
-extern "C++" {
-extern "C" {
-extern "C++" {
-using namespace warn_inside_linkage; // expected-warning {{using namespace directive in global context in header}}
-}
-}
-}
-
-// But we shouldn't warn in extern contexts inside namespaces.
-namespace dont_warn_here {
-extern "C++" {
-using namespace warn_in_header_in_global_context;
-}
-}
-
-// We also shouldn't warn in case of functions.
-inline void foo() {
-  using namespace warn_in_header_in_global_context;
-}
-
-
-namespace macronamespace {}
-#define USING_MACRO using namespace macronamespace;
-
-// |using namespace| through a macro should warn if the instantiation is in a
-// header.
-USING_MACRO // expected-warning {{using namespace directive in global context in header}}
-
-#else
-
-#define BE_THE_HEADER
-#include __FILE__
-
-namespace dont_warn {}
-using namespace dont_warn;
-
-// |using namespace| through a macro shouldn't warn if the instantiation is in a
-// cc file.
-USING_MACRO
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-variable-not-needed.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-variable-not-needed.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-variable-not-needed.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
-
-namespace test1 {
-  static int abc = 42; // expected-warning {{variable 'abc' is not needed and will not be emitted}}
-  template <typename T>
-  int foo(void) {
-    return abc;
-  }
-}
-
-namespace test2 {
-  struct bah {
-  };
-  namespace {
-    struct foo : bah {
-      static char bar;
-      virtual void zed();
-    };
-    void foo::zed() {
-      bar++;
-    }
-    char foo::bar=0;
-  }
-  bah *getfoo() {
-    return new foo();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-vla.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-vla.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-vla.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wvla %s
-
-void test1(int n) {
-  int v[n]; // expected-warning {{variable length array used}}
-}
-
-void test2(int n, int v[n]) { // expected-warning {{variable length array used}}
-}
-
-void test3(int n, int v[n]); // expected-warning {{variable length array used}}
-
-template<typename T>
-void test4(int n) {
-  int v[n]; // expected-warning {{variable length array used}}
-}
-
-template<typename T>
-void test5(int n, int v[n]) { // expected-warning {{variable length array used}}
-}
-
-template<typename T>
-void test6(int n, int v[n]); // expected-warning {{variable length array used}}
-
-template<typename T>
-void test7(int n, T v[n]) { // expected-warning {{variable length array used}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-weak-vtables.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-weak-vtables.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/warn-weak-vtables.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -Wweak-vtables -Wweak-template-vtables
-
-struct A { // expected-warning {{'A' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit}}
-  virtual void f() { } 
-};
-
-template<typename T> struct B {
-  virtual void f() { } 
-};
-
-namespace {
-  struct C { 
-    virtual void f() { }
-  };
-}
-
-void f() {
-  struct A {
-    virtual void f() { }
-  };
-
-  A *a;
-  a->f();
-}
-
-// Use the vtables
-void uses(A &a, B<int> &b, C &c) {
-  a.f();
-  b.f();
-  c.f();
-}
-
-// <rdar://problem/9979458>
-class Parent {
-public:
-  Parent() {}
-  virtual ~Parent();
-  virtual void * getFoo() const = 0;    
-};
-  
-class Derived : public Parent {
-public:
-  Derived();
-  void * getFoo() const;
-};
-
-class VeryDerived : public Derived { // expected-warning{{'VeryDerived' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit}}
-public:
-  void * getFoo() const { return 0; }
-};
-
-Parent::~Parent() {}
-
-void uses(Parent &p, Derived &d, VeryDerived &vd) {
-  p.getFoo();
-  d.getFoo();
-  vd.getFoo();
-}
-
-template<typename T> struct TemplVirt {
-  virtual void f();
-};
-
-template class TemplVirt<float>; // expected-warning{{explicit template instantiation 'TemplVirt<float>' will emit a vtable in every translation unit}}
-
-template<> struct TemplVirt<bool> {
-  virtual void f();
-};
-
-template<> struct TemplVirt<long> { // expected-warning{{'TemplVirt<long>' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit}}
-  virtual void f() {}
-};
-
-void uses(TemplVirt<float>& f, TemplVirt<bool>& b, TemplVirt<long>& l) {
-  f.f();
-  b.f();
-  l.f();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/wchar_t.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/wchar_t.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/wchar_t.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s 
-wchar_t x;
-
-void f(wchar_t p) {
-  wchar_t x;
-  unsigned wchar_t y; // expected-warning {{'wchar_t' cannot be signed or unsigned}}
-  signed wchar_t z; // expected-warning {{'wchar_t' cannot be signed or unsigned}}
-  ++x;
-}
-
-// PR4502
-wchar_t const c = L'c';
-int a[c == L'c' ? 1 : -1];
-
-
-// PR5917
-template<typename _CharT>
-struct basic_string {
-};
-
-template<typename _CharT>
-basic_string<_CharT> operator+ (const basic_string<_CharT>&, _CharT);
-
-int t(void) {
-  basic_string<wchar_t>() + L'-';
-  return (0);
-}
-
-
-// rdar://8040728
-wchar_t in[] = L"\x434" "\x434";  // No warning
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/writable-strings-deprecated.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/writable-strings-deprecated.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/writable-strings-deprecated.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-deprecated-writable-strings -verify %s
-// RUN: %clang_cc1 -fsyntax-only -fwritable-strings -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-write-strings -verify %s
-// rdar://8827606
-
-char *fun(void)
-{
-   return "foo";
-}
-
-void test(bool b)
-{
-  ++b; // expected-warning {{incrementing expression of type bool is deprecated}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaCXX/zero-length-arrays.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaCXX/zero-length-arrays.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaCXX/zero-length-arrays.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// <rdar://problem/10228639>
-class Foo {
-  ~Foo();
-  Foo(const Foo&);
-public:
-  Foo(int);
-};
-
-class Bar {
-  int foo_count;
-  Foo foos[0];
-  Foo foos2[0][2];
-  Foo foos3[2][0];
-
-public:
-  Bar(): foo_count(0) { }    
-  ~Bar() { }
-};
-
-void testBar() {
-  Bar b;
-  Bar b2(b);
-  b = b2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ClassPropertyNotObject.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ClassPropertyNotObject.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ClassPropertyNotObject.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://10565506
-
- at protocol P @end
-
- at interface I
- at property Class<P> MyClass;
- at property Class MyClass1;
- at property void * VOIDSTAR;
- at end
-
- at implementation I
- at synthesize MyClass, MyClass1, VOIDSTAR;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ContClassPropertyLookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ContClassPropertyLookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ContClassPropertyLookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface MyObject {
-    int _foo;
-}
- at end
-
- at interface MyObject(whatever)
- at property (assign) int foo;
- at end
-
- at interface MyObject()
- at property (assign) int foo;
- at end
-
- at implementation MyObject
- at synthesize foo = _foo;
- at end
-
-// rdar://10666594
- at interface MPMediaItem
- at end
-
- at class MPMediaItem;
-
- at interface MPMediaItem ()
- at property (nonatomic, readonly) id title;
- at end
-
- at interface PodcastEpisodesViewController
- at end
-
- at implementation PodcastEpisodesViewController
-- (id) Meth {
-    MPMediaItem *episode;
-    return episode.title;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/DoubleMethod.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/DoubleMethod.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/DoubleMethod.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -Wduplicate-method-match -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface Subclass
-{
-    int ivar;
-}
-
-- (void) method; // expected-note {{previous declaration is here}}
-- (void) method; // expected-warning {{multiple declarations of method 'method' found and ignored}}
- at end
-
- at implementation Subclass
-- (void) method {;} // expected-note {{previous declaration is here}}
-- (void) method {;} // expected-error {{duplicate declaration of method 'method'}}
- at end
-
-int main (void) {
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/Inputs/arc-system-header.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/Inputs/arc-system-header.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/Inputs/arc-system-header.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-static inline void *test0(id x) {
-  return x;
-}
-
-static inline void **test1(__strong id* x) {
-  return (void**) x;
-}
-
-
-
-
-
-struct Test3 {
-  id *field;
-};
-
- at interface Test4 {
- at public
-  id *field1;
-  __strong id *field2;
-}
- at end
-
-struct Test5 {
-  id field;
-};
-
-
-
-
-
-
-
-extern struct Test6 *const kMagicConstant;
-
-
-
-
-
- at interface Test7
- at property id *prop;
- at end
-
-
-
-
-
-
-
-static inline void *test8(id ptr) {
-  return (__bridge_retain void*) ptr;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/NSString-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/NSString-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/NSString-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1  -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -verify %s
-// rdar://10907410
-
-void test(id pid, Class pclass) {
-  void (^block)(void) = @"help"; // expected-error {{initializing 'void (^)(void)' with an expression of incompatible type 'NSString *'}}
-  void (^block1)(void) = pid;
-  void (^block2)(void) = @"help"; // expected-error {{initializing 'void (^)(void)' with an expression of incompatible type 'NSString *'}}
-  void (^block3)(void) = @"help"; // expected-error {{initializing 'void (^)(void)' with an expression of incompatible type 'NSString *'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/access-property-getter.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/access-property-getter.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/access-property-getter.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
- at protocol NSObject
-- (oneway void)release;
- at end
-
- at protocol XCOutputStreams <NSObject>
- at end
-
-
- at interface XCWorkQueueCommandInvocation 
-{
-    id <XCOutputStreams> _outputStream;
-}
- at end
-
- at interface XCWorkQueueCommandSubprocessInvocation : XCWorkQueueCommandInvocation
- at end
-
- at interface XCWorkQueueCommandLocalSubprocessInvocation : XCWorkQueueCommandSubprocessInvocation
- at end
-
- at interface XCWorkQueueCommandDistributedSubprocessInvocation : XCWorkQueueCommandSubprocessInvocation
- at end
-
- at interface XCWorkQueueCommandCacheFetchInvocation : XCWorkQueueCommandSubprocessInvocation
-
- at end
-
- at implementation XCWorkQueueCommandCacheFetchInvocation
-- (id)harvestPredictivelyProcessedOutputFiles
-{
-     _outputStream.release;	// expected-warning {{property access result unused - getters should not be used for side effects}}
-     return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/alias-test-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/alias-test-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/alias-test-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at compatibility_alias alias4 foo; // expected-warning {{cannot find interface declaration for 'foo'}}
-
- at class class2; // expected-note {{previous declaration is here}}
- at class class3;
-
-typedef int I;  // expected-note {{previous declaration is here}}
-
- at compatibility_alias alias1 I;  // expected-warning {{cannot find interface declaration for 'I'}}
-
- at compatibility_alias alias class2;     
- at compatibility_alias alias class3;   // expected-error {{conflicting types for alias 'alias'}}
-
-
-typedef int alias2;	// expected-note {{previous declaration is here}}
- at compatibility_alias alias2 class3;  // expected-error {{conflicting types for alias 'alias2'}}
-
-alias *p;
-class2 *p2;
-
-int foo ()
-{
-
-	if (p == p2) {
-	  int alias = 1;
-	}
-
-	alias *p3;
-	return p3 == p2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/alias-test-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/alias-test-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/alias-test-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-// Note: GCC doesn't produce any of the following errors.
- at interface Super @end // expected-note {{previous definition is here}}
-
- at interface MyWpModule @end  // expected-note {{previous definition is here}}
-
- at compatibility_alias  MyAlias MyWpModule;
-
- at compatibility_alias  AliasForSuper Super;
-
- at implementation MyAlias : AliasForSuper // expected-error {{conflicting super class name 'Super'}}
- at end
-
- at interface MyAlias : AliasForSuper // expected-error {{duplicate interface definition for class 'MyWpModule'}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-bridged-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-bridged-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-bridged-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-
-typedef const void *CFTypeRef;
-CFTypeRef CFBridgingRetain(id X);
-id CFBridgingRelease(CFTypeRef);
-typedef const struct __CFString *CFStringRef;
-
- at interface NSString
- at end
-
-CFTypeRef CFCreateSomething();
-CFStringRef CFCreateString();
-CFTypeRef CFGetSomething();
-CFStringRef CFGetString();
-
-id CreateSomething();
-NSString *CreateNSString();
-
-void from_cf() {
-  id obj1 = (__bridge_transfer id)CFCreateSomething();
-  id obj2 = (__bridge_transfer NSString*)CFCreateString();
-  (__bridge int*)CFCreateSomething(); // expected-error{{incompatible types casting 'CFTypeRef' (aka 'const void *') to 'int *' with a __bridge cast}}
-  id obj3 = (__bridge id)CFGetSomething();
-  id obj4 = (__bridge NSString*)CFGetString();
-}
-
-void to_cf(id obj) {
-  CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething();
-  CFStringRef cf2 = (__bridge_retained CFStringRef)CreateNSString();
-  CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething();
-  CFStringRef cf4 = (__bridge CFStringRef)CreateNSString();
-
-  // rdar://problem/9629566 - temporary workaround
-  CFTypeRef cf5 = (__bridge_retain CFTypeRef)CreateSomething(); // expected-error {{unknown cast annotation __bridge_retain; did you mean __bridge_retained?}}
-  // CHECK: fix-it:"{{.*}}":{35:20-35:35}:"__bridge_retained"
-}
-
-CFTypeRef fixits() {
-  id obj1 = (id)CFCreateSomething(); // expected-error{{cast of C pointer type 'CFTypeRef' (aka 'const void *') to Objective-C pointer type 'id' requires a bridged cast}} \
-  // expected-note{{use __bridge to convert directly (no change in ownership)}} expected-note{{use CFBridgingRelease call to transfer ownership of a +1 'CFTypeRef' (aka 'const void *') into ARC}}
-  // CHECK: fix-it:"{{.*}}":{40:17-40:17}:"CFBridgingRelease("
-  // CHECK: fix-it:"{{.*}}":{40:36-40:36}:")"
-
-  CFTypeRef cf1 = (CFTypeRef)CreateSomething(); // expected-error{{cast of Objective-C pointer type 'id' to C pointer type 'CFTypeRef' (aka 'const void *') requires a bridged cast}} \
-  // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-  // expected-note{{use CFBridgingRetain call to make an ARC object available as a +1 'CFTypeRef' (aka 'const void *')}}
-  // CHECK: fix-it:"{{.*}}":{45:30-45:30}:"CFBridgingRetain("
-  // CHECK: fix-it:"{{.*}}":{45:47-45:47}:")"
-
-  return (obj1); // expected-error{{implicit conversion of Objective-C pointer type 'id' to C pointer type 'CFTypeRef' (aka 'const void *') requires a bridged cast}} \
-  // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-  // expected-note{{use CFBridgingRetain call to make an ARC object available as a +1 'CFTypeRef' (aka 'const void *')}}
-  // CHECK: fix-it:"{{.*}}":{51:10-51:10}:"(__bridge CFTypeRef)"
-  // CHECK: fix-it:"{{.*}}":{51:10-51:10}:"CFBridgingRetain"
-}
-
-CFTypeRef fixitsWithSpace(id obj) {
-  return(obj); // expected-error{{implicit conversion of Objective-C pointer type 'id' to C pointer type 'CFTypeRef' (aka 'const void *') requires a bridged cast}} \
-  // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-  // expected-note{{use CFBridgingRetain call to make an ARC object available as a +1 'CFTypeRef' (aka 'const void *')}}
-  // CHECK: fix-it:"{{.*}}":{59:9-59:9}:"(__bridge CFTypeRef)"
-  // CHECK: fix-it:"{{.*}}":{59:9-59:9}:" CFBridgingRetain"
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-cf.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-cf.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-cf.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify %s
-
-#if __has_feature(arc_cf_code_audited)
-char _global[-1]; // expected-error {{declared as an array with a negative size}}
-#endif
-
-typedef const void *CFTypeRef;
-CFTypeRef CFBridgingRetain(id X);
-id CFBridgingRelease(CFTypeRef);
-typedef const struct __CFString *CFStringRef;
-
-extern CFStringRef CFMakeString0(void);
-#pragma clang arc_cf_code_audited begin
-extern CFStringRef CFCreateString0(void);
-#pragma clang arc_cf_code_audited end
-void test0() {
-  id x;
-  x = (id) CFMakeString0(); // expected-error {{requires a bridged cast}} expected-note {{__bridge to convert directly}} expected-note {{CFBridgingRelease call to transfer}}
-  x = (id) CFCreateString0(); // expected-error {{requires a bridged cast}} expected-note {{CFBridgingRelease call to transfer}}
-}
-
-extern CFStringRef CFMakeString1(void) __attribute__((cf_returns_not_retained));
-extern CFStringRef CFCreateString1(void) __attribute__((cf_returns_retained));
-void test1() {
-  id x;
-  x = (id) CFMakeString1();
-  x = (id) CFCreateString1(); // expected-error {{requires a bridged cast}} expected-note {{CFBridgingRelease call to transfer}}
-}
-
-#define CF_AUDIT_BEGIN _Pragma("clang arc_cf_code_audited begin")
-#define CF_AUDIT_END _Pragma("clang arc_cf_code_audited end")
-#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
-#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
-
-CF_AUDIT_BEGIN
-extern CFStringRef CFMakeString2(void);
-extern CFStringRef CFCreateString2(void) CF_RETURNS_NOT_RETAINED;
-extern CFStringRef CFMakeString3(void) CF_RETURNS_RETAINED;
-extern CFStringRef CFCreateString3(void);
-CF_AUDIT_END
-void test2() {
-  id x;
-  x = (id) CFMakeString2();
-  x = (id) CFCreateString2();
-  x = (id) CFMakeString3(); // expected-error {{requires a bridged cast}} expected-note {{CFBridgingRelease call to transfer}}
-  x = (id) CFCreateString3(); // expected-error {{requires a bridged cast}} expected-note {{CFBridgingRelease call to transfer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-decls.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-decls.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-decls.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -fobjc-arc -verify -Wno-objc-root-class %s
-
-// rdar://8843524
-
-struct A {
-    id x; // expected-error {{ARC forbids Objective-C objects in struct}}
-};
-
-union u {
-    id u; // expected-error {{ARC forbids Objective-C objects in union}}
-};
-
- at interface I {
-   struct A a; 
-   struct B {
-    id y[10][20]; // expected-error {{ARC forbids Objective-C objects in struct}}
-    id z;
-   } b;
-
-   union u c; 
-};
- at end
-
-// rdar://10260525
-struct r10260525 {
-  id (^block) (); // expected-error {{ARC forbids blocks in struct}}
-};
-
-struct S { 
-    id __attribute__((objc_ownership(none))) i;
-    void * vp;
-    int i1;
-};
-
-// rdar://9046528
-
- at class NSError;
-
-__autoreleasing id X; // expected-error {{global variables cannot have __autoreleasing ownership}}
-__autoreleasing NSError *E; // expected-error {{global variables cannot have __autoreleasing ownership}}
-
-
-extern id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing ownership}}
-
-void func()
-{
-    id X;
-    static id __autoreleasing X1; // expected-error {{global variables cannot have __autoreleasing ownership}}
-    extern id __autoreleasing E; // expected-error {{global variables cannot have __autoreleasing ownership}}
-
-}
-
-// rdar://9157348
-
- at interface J
- at property (retain) id newFoo; // expected-note {{property declared here}}
- at property (strong) id copyBar; // expected-note {{property declared here}}
- at property (copy) id allocBaz; // expected-note {{property declared here}}
- at property (copy, nonatomic) id new;
- at end
-
- at implementation J
- at synthesize newFoo;	// expected-error {{property's synthesized getter follows Cocoa naming convention for returning}}
- at synthesize copyBar;	// expected-error {{property's synthesized getter follows Cocoa naming convention for returning}}
- at synthesize allocBaz;	// expected-error {{property's synthesized getter follows Cocoa naming convention for returning}}
- at synthesize new;
-- new {return 0; };
- at end
-
-
-// rdar://10187884
- at interface Super
-- (void)bar:(id)b; // expected-note {{parameter declared here}}
-- (void)bar1:(id) __attribute((ns_consumed)) b;
-- (void)ok:(id) __attribute((ns_consumed)) b;
-- (id)ns_non; // expected-note {{method declared here}}
-- (id)not_ret:(id) b __attribute((ns_returns_not_retained)); // expected-note {{method declared here}}
-- (id)both__returns_not_retained:(id) b __attribute((ns_returns_not_retained));
- at end
-
- at interface Sub : Super
-- (void)bar:(id) __attribute((ns_consumed)) b; // expected-error {{overriding method has mismatched ns_consumed attribute on its parameter}}
-- (void)bar1:(id)b;
-- (void)ok:(id) __attribute((ns_consumed)) b;
-- (id)ns_non __attribute((ns_returns_not_retained)); // expected-error {{overriding method has mismatched ns_returns_not_retained attributes}}
-- (id)not_ret:(id) b __attribute((ns_returns_retained)); // expected-error {{overriding method has mismatched ns_returns_retained attributes}}
-- (id)both__returns_not_retained:(id) b __attribute((ns_returns_not_retained));
-// rdar://12173491
- at property (copy, nonatomic) __attribute__((ns_returns_retained)) id (^fblock)(void);
- at end
-
-// Test that we give a good diagnostic here that mentions the missing
-// ownership qualifier.  We don't want this to get suppressed because
-// of an invalid conversion.
-void test7(void) {
-  id x;
-  id *px = &x; // expected-error {{pointer to non-const type 'id' with no explicit ownership}}
-
-  I *y;
-  J **py = &y; // expected-error {{pointer to non-const type 'J *' with no explicit ownership}} expected-warning {{incompatible pointer types initializing}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-dict-bridged-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-dict-bridged-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-dict-bridged-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-// rdar://11913153
-
-typedef const struct __CFString * CFStringRef;
-typedef struct __CFString * CFMutableStringRef;
-typedef signed long CFIndex;
-typedef const struct __CFAllocator * CFAllocatorRef;
-
-extern const CFStringRef kCFBundleNameKey;
-
- at protocol NSCopying @end
-
- at interface NSDictionary
-- (id)objectForKeyedSubscript:(id<NSCopying>)key;
- at end
-
-#pragma clang arc_cf_code_audited begin
-extern
-CFMutableStringRef CFStringCreateMutable(CFAllocatorRef alloc, CFIndex maxLength);
-#pragma clang arc_cf_code_audited end
-
-typedef const void * CFTypeRef;
-
-id CFBridgingRelease(CFTypeRef __attribute__((cf_consumed)) X);
-
- at interface NSMutableString @end
-
-NSMutableString *test() {
-  NSDictionary *infoDictionary;
-  infoDictionary[kCFBundleNameKey] = 0; // expected-error {{indexing expression is invalid because subscript type 'CFStringRef' (aka 'const struct __CFString *') is not an integral or Objective-C pointer type}} \
-                                        // expected-error {{implicit conversion of C pointer type 'CFStringRef' (aka 'const struct __CFString *') to Objective-C pointer type '__strong id<NSCopying>' requires a bridged cast}} \
-                                        // expected-note {{use __bridge to convert directly (no change in ownership)}} \
-                                        // expected-note {{use CFBridgingRelease call to transfer ownership of a +1 'CFStringRef' (aka 'const struct __CFString *') into ARC}}
-  return infoDictionary[CFStringCreateMutable(((void*)0), 100)]; // expected-error {{indexing expression is invalid because subscript type 'CFMutableStringRef' (aka 'struct __CFString *') is not an integral or Objective-C pointer type}} \
-                                       // expected-error {{implicit conversion of C pointer type 'CFMutableStringRef' (aka 'struct __CFString *') to Objective-C pointer type '__strong id<NSCopying>' requires a bridged cast}} \
-                                        // expected-note {{use CFBridgingRelease call to transfer ownership of a +1 'CFMutableStringRef' (aka 'struct __CFString *') into ARC}}
-					
-}
-
-// CHECK: fix-it:"{{.*}}":{31:18-31:18}:"(__bridge __strong id<NSCopying>)("
-// CHECK: fix-it:"{{.*}}":{31:34-31:34}:")"
-// CHECK: fix-it:"{{.*}}":{31:18-31:18}:"CFBridgingRelease("
-// CHECK: fix-it:"{{.*}}":{31:34-31:34}:")"
-// CHECK: fix-it:"{{.*}}":{35:25-35:25}:"CFBridgingRelease("
-// CHECK: fix-it:"{{.*}}":{35:63-35:63}:")"

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-invalid.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-invalid.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-invalid.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fblocks -verify %s
-
-// rdar://problem/10982793
-// [p foo] in ARC creates a cleanup.
-// The plus is invalid and causes the cleanup to go unbound.
-// Don't crash.
- at interface A
-- (id) foo;
- at end
-void takeBlock(void (^)(void));
-void test0(id p) {
-  takeBlock(^{ [p foo] + p; }); // expected-error {{invalid operands to binary expression}}
-}
-
-void test1(void) {
-  __autoreleasing id p; // expected-note {{'p' declared here}}
-  takeBlock(^{ (void) p; }); // expected-error {{cannot capture __autoreleasing variable in a block}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-jump-block.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-jump-block.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-jump-block.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -verify -Wno-objc-root-class %s
-// rdar://9535237
-
-typedef struct dispatch_queue_s *dispatch_queue_t;
-
-typedef void (^dispatch_block_t)(void);
-
-void dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
-
-extern __attribute__((visibility("default"))) struct dispatch_queue_s _dispatch_main_q;
-
- at interface SwitchBlockCrashAppDelegate
-- (void)pageLeft;
-- (void)pageRight;;
- at end
-
- at implementation SwitchBlockCrashAppDelegate
-
-- (void)choose:(int)button {
-    switch (button) {
-    case 0:
-        dispatch_async((&_dispatch_main_q), ^{ [self pageLeft]; }); // expected-note 3 {{jump enters lifetime of block which strongly captures a variable}}
-        break;
-    case 2:  // expected-error {{switch case is in protected scope}}
-        dispatch_async((&_dispatch_main_q), ^{ [self pageRight]; }); // expected-note 2 {{jump enters lifetime of block which strongly captures a variable}}
-        break;
-    case 3: // expected-error {{switch case is in protected scope}}
-        {
-          dispatch_async((&_dispatch_main_q), ^{ [self pageRight]; });
-          break;
-        }
-    case 4: // expected-error {{switch case is in protected scope}}
-        break;
-    }
-
-    __block SwitchBlockCrashAppDelegate *captured_block_obj;
-    switch (button) {
-    case 10:
-      {
-        dispatch_async((&_dispatch_main_q), ^{ [self pageLeft]; });
-        break;
-      }
-    case 12:
-        if (button)
-          dispatch_async((&_dispatch_main_q), ^{ [captured_block_obj pageRight]; });
-        break;
-    case 13:
-        while (button)
-          dispatch_async((&_dispatch_main_q), ^{ [self pageRight]; });
-        break;
-    case 14:
-        break;
-    }
-
-    switch (button) {
-    case 10:
-      {
-        dispatch_async((&_dispatch_main_q), ^{ [self pageLeft]; });
-        break;
-      }
-    case 12:
-        if (button)
-          dispatch_async((&_dispatch_main_q), ^{ [self pageRight]; });
-        switch (button) {
-          case 0:
-            {
-              dispatch_async((&_dispatch_main_q), ^{ [self pageLeft]; });
-              break;
-            }
-         case 4: 
-          break;
-        }
-        break;
-    case 13:
-        while (button)
-          dispatch_async((&_dispatch_main_q), ^{ [self pageRight]; });
-        break;
-    case 14:
-        break;
-    }
-}
-- (void)pageLeft {}
-- (void)pageRight {}
- at end
-
-// Test 2.  rdar://problem/11150919
-int test2(id obj, int state) { // expected-note {{jump enters lifetime of block}} FIXME: wierd location
-  switch (state) {
-  case 0:
-    (void) ^{ (void) obj; };
-    return 0;
-
-  default: // expected-error {{switch case is in protected scope}}
-    return 1;
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-no-runtime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-no-runtime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-no-runtime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -verify -Wno-objc-root-class %s
-
-// rdar://problem/9150784
-void test(void) {
-  __weak id x; // expected-error {{the current deployment target does not support automated __weak references}}
-  __weak void *v; // expected-warning {{'__weak' only applies to Objective-C object or block pointer types}}
-}
-
- at interface A
- at property (weak) id testObjectWeakProperty; // expected-note {{declared here}}
- at end
-
- at implementation A
-// rdar://9605088
- at synthesize testObjectWeakProperty; // expected-error {{the current deployment target does not support automated __weak references}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-non-pod-memaccess.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-non-pod-memaccess.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-non-pod-memaccess.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -verify -fblocks -triple x86_64-apple-darwin10.0.0 %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -verify -fblocks -triple x86_64-apple-darwin10.0.0 %s
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void *memset(void *, int, __SIZE_TYPE__);
-void *memmove(void *s1, const void *s2, __SIZE_TYPE__ n);
-void *memcpy(void *s1, const void *s2, __SIZE_TYPE__ n);
-
-#ifdef __cplusplus
-}
-#endif
-
-void test(id __strong *sip, id __weak *wip, id __autoreleasing *aip,
-          id __unsafe_unretained *uip, void *ptr) {
-  // All okay.
-  memset(sip, 0, 17);
-  memset(wip, 0, 17);
-  memset(aip, 0, 17);
-  memset(uip, 0, 17);
-
-  memcpy(sip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(wip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(aip, ptr, 17); // expected-warning{{destination for this 'memcpy' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(uip, ptr, 17);
-
-  memcpy(ptr, sip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(ptr, wip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(ptr, aip, 17); // expected-warning{{source of this 'memcpy' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memcpy(ptr, uip, 17);
-
-  memmove(sip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(wip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(aip, ptr, 17); // expected-warning{{destination for this 'memmove' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(uip, ptr, 17);
-
-  memmove(ptr, sip, 17); // expected-warning{{source of this 'memmove' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(ptr, wip, 17); // expected-warning{{source of this 'memmove' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(ptr, aip, 17); // expected-warning{{source of this 'memmove' call is a pointer to ownership-qualified type}} \
-                      // expected-note{{explicitly cast the pointer to silence this warning}}
-  memmove(ptr, uip, 17);
-}
-
-void rdar9772982(int i, ...) {
-    __builtin_va_list ap;
-    
-    __builtin_va_start(ap, i);
-    __builtin_va_arg(ap, __strong id); // expected-error{{second argument to 'va_arg' is of ARC ownership-qualified type '__strong id'}}
-    __builtin_va_end(ap);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-nsconsumed-errors.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-nsconsumed-errors.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-nsconsumed-errors.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify -fblocks -triple x86_64-apple-darwin10.0.0 %s
-// rdar://10187884
-
-typedef void (^blk)(id arg1, __attribute((ns_consumed)) id arg2);
-typedef void (^blk1)(__attribute((ns_consumed))id arg1, __attribute((ns_consumed)) id arg2);
-blk a = ^void (__attribute((ns_consumed)) id arg1, __attribute((ns_consumed)) id arg2){}; // expected-error {{incompatible block pointer types initializing}}
-
-blk b = ^void (id arg1, __attribute((ns_consumed)) id arg2){};
-
-blk c = ^void (__attribute((ns_consumed)) id arg1, __attribute((ns_consumed)) id arg2){}; // expected-error {{incompatible block pointer types initializing}}
-
-blk d = ^void (id arg1, id arg2) {}; // expected-error {{incompatible block pointer types initializing}}
-
-blk1 a1 = ^void (__attribute((ns_consumed)) id arg1, id arg2){}; // expected-error {{incompatible block pointer types initializing}}
-
-blk1 b2 = ^void (id arg1, __attribute((ns_consumed)) id arg2){}; // expected-error {{incompatible block pointer types initializing}}
-
-blk1 c3 = ^void (__attribute((ns_consumed)) id arg1, __attribute((ns_consumed)) id arg2){};
-
-blk1 d4 = ^void (id arg1, id arg2) {}; // expected-error {{incompatible block pointer types initializing}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-objc-lifetime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-objc-lifetime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-objc-lifetime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,127 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -fobjc-runtime-has-weak -Wexplicit-ownership-type  -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -fobjc-runtime-has-weak -Wexplicit-ownership-type -verify -Wno-objc-root-class %s
-// rdar://10244607
-
-typedef const struct __CFString * CFStringRef;
- at class NSString;
-
-NSString *CFBridgingRelease();
-
-typedef NSString * PNSString;
-
-typedef __autoreleasing NSString * AUTORELEASEPNSString;
-
- at interface I @end
-
- at implementation I
-- (CFStringRef)myString
-{
-    CFStringRef myString =
-      (__bridge CFStringRef) (__strong NSString *)CFBridgingRelease(); // expected-error {{explicit ownership qualifier on cast result has no effect}}
-
-    myString =
-      (__bridge CFStringRef) (__autoreleasing PNSString) CFBridgingRelease(); // expected-error {{explicit ownership qualifier on cast result has no effect}}
-    myString =
-      (__bridge CFStringRef) (AUTORELEASEPNSString) CFBridgingRelease(); // OK
-    myString =
-      (__bridge CFStringRef) (typeof(__strong NSString *)) CFBridgingRelease(); // expected-error {{explicit ownership qualifier on cast result has no effect}}
-    return myString;
-}
-
-- (void)decodeValueOfObjCType:(const char *)type at:(void *)addr {
-        __autoreleasing id *stuff = (__autoreleasing id *)addr;
-}
- at end
-
-// rdar://problem/10711456
-__strong I *__strong test1; // expected-error {{the type 'I *__strong' is already explicitly ownership-qualified}}
-__strong I *(__strong test2); // expected-error {{the type 'I *__strong' is already explicitly ownership-qualified}}
-__strong I *(__strong (test3)); // expected-error {{the type 'I *__strong' is already explicitly ownership-qualified}}
-__unsafe_unretained __typeof__(test3) test4;
-typedef __strong I *strong_I;
-__unsafe_unretained strong_I test5;
-
-// rdar://10907090
-typedef void (^T) ();
- at interface NSObject @end
- at protocol P;
- at interface Radar10907090 @end
-
- at implementation Radar10907090
-- (void) MMM : (NSObject*) arg0 : (NSObject<P>**)arg : (id) arg1 : (id<P>*) arg2 {} // expected-warning {{method parameter of type 'NSObject<P> *__autoreleasing *' with no explicit ownership}} \
-					// expected-warning {{method parameter of type '__autoreleasing id<P> *' with no explicit ownership}}
-- (void) MM : (NSObject*) arg0 : (__strong NSObject**)arg : (id) arg1 : (__strong id*) arg2 {}
-- (void) M : (NSObject**)arg0 : (id*)arg {} // expected-warning {{method parameter of type 'NSObject *__autoreleasing *' with no explicit ownership}} \
-                                            // expected-warning {{method parameter of type '__autoreleasing id *' with no explicit ownership}}
-- (void) N : (__strong NSObject***) arg0 : (__strong NSObject<P>***)arg : (float**) arg1 : (double) arg2 {} 
-- (void) BLOCK : (T*) arg0 : (T)arg  : (__strong T*) arg1 {} // expected-warning {{method parameter of type '__autoreleasing T *' (aka 'void (^__autoreleasing *)()') with no explicit ownership}}
- at end
-
-// rdar://12280826
- at class NSMutableDictionary, NSError;
- at interface Radar12280826
-- (void)createInferiorTransportAndSetEnvironment:(NSMutableDictionary*)environment error:(__autoreleasing NSError**)error;
- at end
-
- at implementation Radar12280826
-- (void)createInferiorTransportAndSetEnvironment:(NSMutableDictionary*)environment error:(__autoreleasing NSError**)error {}
- at end
-
-// <rdar://problem/12367446>
-typedef __strong id strong_id;
-typedef NSObject *NSObject_ptr;
-typedef __strong NSObject *strong_NSObject_ptr;
-
-// Warn
-__strong id f1(); // expected-warning{{ARC __strong lifetime qualifier on return type is ignored}}
-NSObject __unsafe_unretained *f2(int); // expected-warning{{ARC __unsafe_unretained lifetime qualifier on return type is ignored}}
-__autoreleasing NSObject *f3(void); // expected-warning{{ARC __autoreleasing lifetime qualifier on return type is ignored}}
-NSObject * __strong f4(void); // expected-warning{{ARC __strong lifetime qualifier on return type is ignored}}
-NSObject_ptr __strong f5(); // expected-warning{{ARC __strong lifetime qualifier on return type is ignored}}
-
-typedef __strong id (*fptr)(int); // expected-warning{{ARC __strong lifetime qualifier on return type is ignored}}
-
-// Don't warn
-strong_id f6();
-strong_NSObject_ptr f7();
-typedef __strong id (^block_ptr)(int);
-
-// rdar://10127067
-void test8_a() {
-  __weak id *(^myBlock)(void);
-  __weak id *var = myBlock();
-  (void) (__strong id *) &myBlock;
-  (void) (__weak id *) &myBlock; // expected-error {{cast}}
-}
-void test8_b() {
-  __weak id (^myBlock)(void);
-  (void) (__weak id *) &myBlock;
-  (void) (__strong id *) &myBlock; // expected-error {{cast}}
-}
-void test8_c() {
-  __weak id (^*(^myBlock)(void))(void);
-  (void) (__weak id*) myBlock();
-  (void) (__strong id*) myBlock(); // expected-error {{cast}}
-  (void) (__weak id*) &myBlock; // expected-error {{cast}}
-  (void) (__strong id*) &myBlock;
-}
-
- at class Test9;
-void test9_a() {
-  __weak Test9 **(^myBlock)(void);
-  __weak Test9 **var = myBlock();
-  (void) (__strong Test9 **) &myBlock;
-  (void) (__weak Test9 **) &myBlock; // expected-error {{cast}}
-}
-void test9_b() {
-  __weak Test9 *(^myBlock)(void);
-  (void) (__weak Test9**) &myBlock;
-  (void) (__strong Test9**) &myBlock; // expected-error {{cast}}
-}
-void test9_c() {
-  __weak Test9 *(^*(^myBlock)(void))(void);
-  (void) (__weak Test9 **) myBlock();
-  (void) (__strong Test9 **) myBlock(); // expected-error {{cast}}
-  (void) (__weak Test9 **) &myBlock; // expected-error {{cast}}
-  (void) (__strong Test9 **) &myBlock;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-peformselector.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-peformselector.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-peformselector.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -verify %s
-// rdar://9659270
-
- at interface NSObject
-- (id)copy; // expected-note {{method 'copy' declared here}}
-- (id) test __attribute__((ns_returns_retained)); // expected-note {{method 'test' declared here}}
-+ (id) new ; // expected-note {{method 'new' declared here}}
-- (id) init __attribute__((ns_returns_not_retained));
-- (id)PlusZero;
-- (id)PlusOne __attribute__((ns_returns_retained)); // expected-note {{method 'PlusOne' declared here}}
- at end
-
- at interface I : NSObject
-{
-  SEL sel1;
-}
-- (id)performSelector:(SEL)aSelector;
-- (id)performSelector:(SEL)aSelector withObject:(id)object;
-- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
- at end
-
- at implementation I
-- (id) Meth {
-  return [self performSelector : @selector(copy)]; // expected-error {{performSelector names a selector which retains the object}}
-  return [self performSelector : @selector(test)]; // expected-error {{performSelector names a selector which retains the object}}
-  return [self performSelector : @selector(new)]; // expected-error {{performSelector names a selector which retains the object}}
-  return [self performSelector : @selector(init)];
-  return [self performSelector : sel1]; // expected-warning {{performSelector may cause a leak because its selector is unknown}} \
-					// expected-note {{used here}}
-
-  return [self performSelector : @selector(PlusZero)];
-  return [self performSelector : @selector(PlusOne)]; // expected-error {{performSelector names a selector which retains the object}}
-}
-
-- (id)performSelector:(SEL)aSelector { return 0; }
-- (id)performSelector:(SEL)aSelector withObject:(id)object { return 0; }
-- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2 { return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property-decl-attrs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property-decl-attrs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property-decl-attrs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -verify %s
-// rdar://9340606
-
- at interface Foo {
- at public
-    id __unsafe_unretained x;
-    id __weak y;
-    id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}}
-}
- at property(strong) id x;
- at property(strong) id y;
- at property(strong) id z;
- at end
-
- at interface Bar {
- at public
-    id __unsafe_unretained x;
-    id __weak y;
-    id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}}
-}
- at property(retain) id x;
- at property(retain) id y;
- at property(retain) id z;
- at end
-
- at interface Bas {
- at public
-    id __unsafe_unretained x;
-    id __weak y;
-    id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}}
-}
- at property(copy) id x;
- at property(copy) id y;
- at property(copy) id z;
- at end
-
-// Errors should start about here :-)
-
- at interface Bat 
- at property(strong) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}}
- at property(strong) __weak id y; // expected-error {{strong property 'y' may not also be declared __weak}} expected-error {{property attributes 'strong' and 'weak' are mutually exclusive}}
- at property(strong) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}}
- at end
-
- at interface Bau
- at property(retain) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}}
- at property(retain) __weak id y; // expected-error {{strong property 'y' may not also be declared __weak}} expected-error {{property attributes 'retain' and 'weak' are mutually exclusive}}
- at property(retain) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}}
- at end
-
- at interface Bav 
- at property(copy) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}}
- at property(copy) __weak id y; // expected-error {{strong property 'y' may not also be declared __weak}} expected-error {{property attributes 'copy' and 'weak' are mutually exclusive}}
- at property(copy) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}}
- at end
-
- at interface Bingo 
- at property(assign) __unsafe_unretained id x;
- at property(assign) __weak id y; // expected-error {{property attributes 'assign' and 'weak' are mutually exclusive}}
- at property(assign) __autoreleasing id z; // expected-error {{unsafe_unretained property 'z' may not also be declared __autoreleasing}}
- at end
-
- at interface Batman 
- at property(unsafe_unretained) __unsafe_unretained id x;
- at property(unsafe_unretained) __weak id y; // expected-error {{property attributes 'unsafe_unretained' and 'weak' are mutually exclusive}}
- at property(unsafe_unretained) __autoreleasing id z; // expected-error {{unsafe_unretained property 'z' may not also be declared __autoreleasing}}
- at end
-
-// rdar://9396329
- at interface Super
- at property (readonly, retain) id foo;
- at property (readonly, weak) id fee;
- at property (readonly, strong) id frr;
- at end
-
- at interface Bugg : Super
- at property (readwrite) id foo;
- at property (readwrite) id fee;
- at property (readwrite) id frr;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property-lifetime.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property-lifetime.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property-lifetime.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,184 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-default-synthesize-properties -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -verify -Wno-objc-root-class %s
-// rdar://9340606
-
- at interface Foo {
- at public
-    id __unsafe_unretained x; // expected-error {{existing instance variable 'x' for strong property 'x' may not be __unsafe_unretained}}
-    id __weak y; // expected-error {{existing instance variable 'y' for strong property 'y' may not be __weak}}
-    id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}}
-}
- at property(strong) id x; // expected-note {{property declared here}}
- at property(strong) id y; // expected-note {{property declared here}}
- at property(strong) id z;
- at end
-
- at implementation Foo
- at synthesize x; // expected-note {{property synthesized here}}
- at synthesize y; // expected-note {{property synthesized here}}
- at synthesize z; // suppressed
- at end
-
- at interface Bar {
- at public
-    id __unsafe_unretained x; // expected-error {{existing instance variable 'x' for strong property 'x' may not be __unsafe_unretained}}
-    id __weak y; // expected-error {{existing instance variable 'y' for strong property 'y' may not be __weak}}
-    id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}}
-}
- at property(retain) id x; // expected-note {{property declared here}}
- at property(retain) id y; // expected-note {{property declared here}}
- at property(retain) id z;
- at end
-
- at implementation Bar
- at synthesize x; // expected-note {{property synthesized here}}
- at synthesize y; // expected-note {{property synthesized here}}
- at synthesize z; // suppressed
- at end
-
- at interface Bas {
- at public
-    id __unsafe_unretained x; // expected-error {{existing instance variable 'x' for strong property 'x' may not be __unsafe_unretained}}
-    id __weak y; // expected-error {{existing instance variable 'y' for strong property 'y' may not be __weak}}
-    id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}}
-}
- at property(copy) id x; // expected-note {{property declared here}}
- at property(copy) id y; // expected-note {{property declared here}} 
- at property(copy) id z;
- at end
-
- at implementation Bas
- at synthesize x; // expected-note {{property synthesized here}}
- at synthesize y; // expected-note {{property synthesized here}}
- at synthesize z; // suppressed
- at end
-
- at interface Bat 
- at property(strong) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}}
- at property(strong) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}}
- at end
-
- at interface Bau 
- at property(retain) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}}
- at property(retain) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}}
- at end
-
- at interface Bav 
- at property(copy) __unsafe_unretained id x; // expected-error {{strong property 'x' may not also be declared __unsafe_unretained}}
- at property(copy) __autoreleasing id z; // expected-error {{strong property 'z' may not also be declared __autoreleasing}}
- at end
-
-// rdar://9341593
- at interface Gorf  {
-   id __unsafe_unretained x;
-   id y; // expected-error {{existing instance variable 'y' for property 'y' with  assign attribute must be __unsafe_unretained}}
-}
- at property(assign) id __unsafe_unretained x;
- at property(assign) id y; // expected-note {{property declared here}}
- at property(assign) id z;
- at end
-
- at implementation Gorf
- at synthesize x;
- at synthesize y; // expected-note {{property synthesized here}}
- at synthesize z;
- at end
-
- at interface Gorf2  {
-   id __unsafe_unretained x;
-   id y; // expected-error {{existing instance variable 'y' for property 'y' with unsafe_unretained attribute must be __unsafe_unretained}}
-}
- at property(unsafe_unretained) id __unsafe_unretained x;
- at property(unsafe_unretained) id y; // expected-note {{property declared here}}
- at property(unsafe_unretained) id z;
- at end
-
- at implementation Gorf2
- at synthesize x;
- at synthesize y; // expected-note {{property synthesized here}}
- at synthesize z;
- at end
-
-// rdar://9355230
- at interface I {
-  char _isAutosaving;
-}
- at property char isAutosaving;
-
- at end
-
- at implementation I
- at synthesize isAutosaving = _isAutosaving;
- at end
-
-// rdar://10239594
-// Test for 'Class' properties being unretained.
- at interface MyClass {
- at private
-    Class _controllerClass;
-    id _controllerId;
-}
- at property (copy) Class controllerClass;
- at property (copy) id controllerId;
- at end
-
- at implementation MyClass
- at synthesize controllerClass = _controllerClass;
- at synthesize controllerId = _controllerId;
- at end
-
-// rdar://10630891
- at interface UIView @end
- at class UIColor;
-
- at interface UIView(UIViewRendering)
- at property(nonatomic,copy) UIColor *backgroundColor;
- at end
-
- at interface UILabel : UIView
- at end
-
- at interface MyView 
- at property (strong) UILabel *label;
- at end
-
- at interface MyView2 : MyView @end
-
- at implementation MyView2
-- (void)foo {
-  super.label.backgroundColor = 0;
-}
- at end
-
-// rdar://10694932
- at interface Baz 
- at property  id prop;
- at property  __strong id strong_prop;
- at property  (strong) id strong_attr_prop;
- at property  (strong) __strong id realy_strong_attr_prop;
-+ (id) alloc;
-- (id) init;
-- (id) implicit;
-- (void) setImplicit : (id) arg; 
- at end
-
-void foo(Baz *f) {
-        f.prop = [[Baz alloc] init];
-        f.strong_prop = [[Baz alloc] init];
-        f.strong_attr_prop = [[Baz alloc] init];
-        f.realy_strong_attr_prop = [[Baz alloc] init];
-        f.implicit = [[Baz alloc] init];
-}
-
-// rdar://11253688
- at interface Boom 
- at property (readonly) const void * innerPointer __attribute__((objc_returns_inner_pointer)); // expected-error {{'objc_returns_inner_pointer' attribute only applies to methods}}
- at end
-
- at interface Foo2 {
-  id _prop; // expected-error {{existing instance variable '_prop' for property 'prop' with  assign attribute must be __unsafe_unretained}}
-}
- at property (nonatomic, assign) id prop; // expected-note {{property declared here}}
- at end
-
- at implementation Foo2
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -fblocks -fobjc-exceptions -verify -Wno-objc-root-class %s
-// rdar://9309489
-
- at interface MyClass {
-        id __weak myString; // expected-error {{existing instance variable 'myString' for strong property 'myString' may not be __weak}}
-        id StrongIvar;
-        id __weak myString2; // expected-error {{existing instance variable 'myString2' for strong property 'myString2' may not be __weak}}
-        id __weak myString3;
-        id StrongIvar5; // expected-error {{existing instance variable 'StrongIvar5' for __weak property 'myString5' must be __weak}}
-}
- at property (strong) id myString; // expected-note {{property declared here}}
- at property (strong) id myString1;
- at property (retain) id myString2; // expected-note {{property declared here}}
-//
- at property (weak) id myString3;
- at property (weak) id myString4;
- at property __weak id myString5; // expected-note {{property declared here}}
- at end
-
- at implementation MyClass
- at synthesize myString; // expected-note {{property synthesized here}}
- at synthesize myString1 = StrongIvar; // OK
- at synthesize myString2 = myString2; // expected-note {{property synthesized here}}
-//
- at synthesize myString3; // OK
- at synthesize myString4; // OK
- at synthesize myString5 = StrongIvar5; // expected-note {{property synthesized here}}
-
- at end
-
-// rdar://9340692
- at interface Foo {
- at public
-    id __unsafe_unretained x; // expected-error {{existing instance variable 'x' for __weak property 'x' must be __weak}}
-    id __strong y;  // expected-error {{existing instance variable 'y' for __weak property 'y' must be __weak}}
-    id __autoreleasing z; // expected-error {{instance variables cannot have __autoreleasing ownership}}
-}
- at property(weak) id x; // expected-note {{property declared here}}
- at property(weak) id y; // expected-note {{property declared here}}
- at property(weak) id z;
- at end
-
- at implementation Foo
- at synthesize x; // expected-note {{property synthesized here}}
- at synthesize y; // expected-note {{property synthesized here}}
- at synthesize z;  // suppressed
- at end
-
-// rdar://problem/10904479
-// Don't crash.
- at interface Test2
-// Minor FIXME: kill the redundant error
- at property (strong) UndeclaredClass *test2;  // expected-error {{unknown type name 'UndeclaredClass'}} expected-error {{must be of object type}}
- at end
- at implementation Test2
- at synthesize test2;
- at end
-
-// rdar://problem/11144407
- at interface Test3
- at property (strong) id exception;
- at end
-void test3(Test3 *t3) {
-  @throw t3.exception;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-readonly-property-ivar-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-readonly-property-ivar-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-readonly-property-ivar-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1  -fobjc-default-synthesize-properties  -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-arc -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1  -x objective-c++ -fobjc-default-synthesize-properties  -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-arc -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar:// 10558871
-
- at interface PP
- at property (readonly) id ReadOnlyPropertyNoBackingIvar;
- at property (readonly) id ReadOnlyProperty;
- at property (readonly) id ReadOnlyPropertyX;
- at end
-
- at implementation PP {
-__weak id _ReadOnlyProperty;
-}
- at synthesize ReadOnlyPropertyNoBackingIvar;
- at synthesize ReadOnlyProperty = _ReadOnlyProperty;
- at synthesize ReadOnlyPropertyX = _ReadOnlyPropertyX;
- at end
-
- at interface DD
- at property (readonly) id ReadOnlyProperty;
- at property (readonly) id ReadOnlyPropertyStrong;
- at property (readonly) id ReadOnlyPropertyNoBackingIvar;
- at end
-
- at implementation DD {
-__weak id _ReadOnlyProperty;
-__strong id _ReadOnlyPropertyStrong;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-readonly-property-ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-readonly-property-ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-readonly-property-ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1  -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fobjc-arc -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar:// 10558871
-
- at interface PP
- at property (readonly) id ReadOnlyPropertyNoBackingIvar;
- at property (readonly) id ReadOnlyProperty;
- at property (readonly) id ReadOnlyPropertyX;
- at end
-
- at implementation PP {
-__weak id _ReadOnlyProperty;
-}
- at synthesize ReadOnlyPropertyNoBackingIvar;
- at synthesize ReadOnlyProperty = _ReadOnlyProperty;
- at synthesize ReadOnlyPropertyX = _ReadOnlyPropertyX;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-repeated-weak.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-repeated-weak.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-repeated-weak.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,412 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -fblocks -Wno-objc-root-class -std=c++11 -Warc-repeated-use-of-weak -verify %s
-
- at interface Test {
- at public
-  Test *ivar;
-  __weak id weakIvar;
-}
- at property(weak) Test *weakProp;
- at property(strong) Test *strongProp;
-
-- (__weak id)implicitProp;
-
-+ (__weak id)weakProp;
- at end
-
-extern void use(id);
-extern id get();
-extern bool condition();
-#define nil ((id)0)
-
-void sanity(Test *a) {
-  use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times in this function but may be unpredictably set to nil; assign to a strong variable to keep the object alive}}
-  use(a.weakProp); // expected-note{{also accessed here}}
-
-  use(a.strongProp);
-  use(a.strongProp); // no-warning
-
-  use(a.weakProp); // expected-note{{also accessed here}}
-}
-
-void singleUse(Test *a) {
-  use(a.weakProp); // no-warning
-  use(a.strongProp); // no-warning
-}
-
-void assignsOnly(Test *a) {
-  a.weakProp = get(); // no-warning
-
-  id next = get();
-  if (next)
-    a.weakProp = next; // no-warning
-
-  a->weakIvar = get(); // no-warning
-  next = get();
-  if (next)
-    a->weakIvar = next; // no-warning
-
-  extern __weak id x;
-  x = get(); // no-warning
-  next = get();
-  if (next)
-    x = next; // no-warning
-}
-
-void assignThenRead(Test *a) {
-  a.weakProp = get(); // expected-note{{also accessed here}}
-  use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-}
-
-void twoVariables(Test *a, Test *b) {
-  use(a.weakProp); // no-warning
-  use(b.weakProp); // no-warning
-}
-
-void doubleLevelAccess(Test *a) {
-  use(a.strongProp.weakProp); // expected-warning{{weak property 'weakProp' may be accessed multiple times in this function and may be unpredictably set to nil; assign to a strong variable to keep the object alive}}
-  use(a.strongProp.weakProp); // expected-note{{also accessed here}}
-}
-
-void doubleLevelAccessIvar(Test *a) {
-  use(a.strongProp.weakProp); // expected-warning{{weak property 'weakProp' may be accessed multiple times}}
-  use(a.strongProp.weakProp); // expected-note{{also accessed here}}
-}
-
-void implicitProperties(Test *a) {
-  use(a.implicitProp); // expected-warning{{weak implicit property 'implicitProp' is accessed multiple times}}
-  use(a.implicitProp); // expected-note{{also accessed here}}
-}
-
-void classProperties() {
-  use(Test.weakProp); // expected-warning{{weak implicit property 'weakProp' is accessed multiple times}}
-  use(Test.weakProp); // expected-note{{also accessed here}}
-}
-
-void classPropertiesAreDifferent(Test *a) {
-  use(Test.weakProp); // no-warning
-  use(a.weakProp); // no-warning
-  use(a.strongProp.weakProp); // no-warning
-}
-
-void ivars(Test *a) {
-  use(a->weakIvar); // expected-warning{{weak instance variable 'weakIvar' is accessed multiple times}}
-  use(a->weakIvar); // expected-note{{also accessed here}}
-}
-
-void globals() {
-  extern __weak id a;
-  use(a); // expected-warning{{weak variable 'a' is accessed multiple times}}
-  use(a); // expected-note{{also accessed here}}
-}
-
-void messageGetter(Test *a) {
-  use([a weakProp]); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-  use([a weakProp]); // expected-note{{also accessed here}}
-}
-
-void messageSetter(Test *a) {
-  [a setWeakProp:get()]; // no-warning
-  [a setWeakProp:get()]; // no-warning
-}
-
-void messageSetterAndGetter(Test *a) {
-  [a setWeakProp:get()]; // expected-note{{also accessed here}}
-  use([a weakProp]); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-}
-
-void mixDotAndMessageSend(Test *a, Test *b) {
-  use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-  use([a weakProp]); // expected-note{{also accessed here}}
-
-  use([b weakProp]); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-  use(b.weakProp); // expected-note{{also accessed here}}
-}
-
-
-void assignToStrongWrongInit(Test *a) {
-  id val = a.weakProp; // expected-note{{also accessed here}}
-  use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-}
-
-void assignToStrongWrong(Test *a) {
-  id val;
-  val = a.weakProp; // expected-note{{also accessed here}}
-  use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-}
-
-void assignToIvarWrong(Test *a) {
-  a->weakIvar = get(); // expected-note{{also accessed here}}
-  use(a->weakIvar); // expected-warning{{weak instance variable 'weakIvar' is accessed multiple times}}
-}
-
-void assignToGlobalWrong() {
-  extern __weak id a;
-  a = get(); // expected-note{{also accessed here}}
-  use(a); // expected-warning{{weak variable 'a' is accessed multiple times}}
-}
-
-void assignToStrongOK(Test *a) {
-  if (condition()) {
-    id val = a.weakProp; // no-warning
-    (void)val;
-  } else {
-    id val;
-    val = a.weakProp; // no-warning
-    (void)val;
-  }
-}
-
-void assignToStrongConditional(Test *a) {
-  id val = (condition() ? a.weakProp : a.weakProp); // no-warning
-  id val2 = a.implicitProp ?: a.implicitProp; // no-warning
-}
-
-void testBlock(Test *a) {
-  use(a.weakProp); // no-warning
-
-  use(^{
-    use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times in this block}}
-    use(a.weakProp); // expected-note{{also accessed here}}
-  });
-}
-
-void assignToStrongWithCasts(Test *a) {
-  if (condition()) {
-    Test *val = (Test *)a.weakProp; // no-warning
-    (void)val;
-  } else {
-    id val;
-    val = (Test *)a.weakProp; // no-warning
-    (void)val;
-  }
-}
-
-void assignToStrongWithMessages(Test *a) {
-  if (condition()) {
-    id val = [a weakProp]; // no-warning
-    (void)val;
-  } else {
-    id val;
-    val = [a weakProp]; // no-warning
-    (void)val;
-  }
-}
-
-
-void assignAfterRead(Test *a) {
-  // Special exception for a single read before any writes.
-  if (!a.weakProp) // no-warning
-    a.weakProp = get(); // no-warning
-}
-
-void readOnceWriteMany(Test *a) {
-  if (!a.weakProp) { // no-warning
-    a.weakProp = get(); // no-warning
-    a.weakProp = get(); // no-warning
-  }
-}
-
-void readOnceAfterWrite(Test *a) {
-  a.weakProp = get(); // expected-note{{also accessed here}}
-  if (!a.weakProp) { // expected-warning{{weak property 'weakProp' is accessed multiple times in this function}}
-    a.weakProp = get(); // expected-note{{also accessed here}}
-  }
-}
-
-void readOnceWriteManyLoops(Test *a, Test *b, Test *c, Test *d, Test *e) {
-  while (condition()) {
-    if (!a.weakProp) { // expected-warning{{weak property 'weakProp' is accessed multiple times in this function}}
-      a.weakProp = get(); // expected-note{{also accessed here}}
-      a.weakProp = get(); // expected-note{{also accessed here}}
-    }
-  }
-
-  do {
-    if (!b.weakProp) { // expected-warning{{weak property 'weakProp' is accessed multiple times in this function}}
-      b.weakProp = get(); // expected-note{{also accessed here}}
-      b.weakProp = get(); // expected-note{{also accessed here}}
-    }
-  } while (condition());
-
-  for (id x = get(); x; x = get()) {
-    if (!c.weakProp) { // expected-warning{{weak property 'weakProp' is accessed multiple times in this function}}
-      c.weakProp = get(); // expected-note{{also accessed here}}
-      c.weakProp = get(); // expected-note{{also accessed here}}
-    }
-  }
-
-  for (id x in get()) {
-    if (!d.weakProp) { // expected-warning{{weak property 'weakProp' is accessed multiple times in this function}}
-      d.weakProp = get(); // expected-note{{also accessed here}}
-      d.weakProp = get(); // expected-note{{also accessed here}}
-    }
-  }
-
-  int array[] = { 1, 2, 3 };
-  for (int i : array) {
-    if (!e.weakProp) { // expected-warning{{weak property 'weakProp' is accessed multiple times in this function}}
-      e.weakProp = get(); // expected-note{{also accessed here}}
-      e.weakProp = get(); // expected-note{{also accessed here}}
-    }
-  }
-}
-
-void readOnlyLoop(Test *a) {
-  while (condition()) {
-    use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times in this function}}
-  }
-}
-
-void readInIterationLoop() {
-  for (Test *a in get())
-    use(a.weakProp); // no-warning
-}
-
-void readDoubleLevelAccessInLoop() {
-  for (Test *a in get()) {
-    use(a.strongProp.weakProp); // no-warning
-  }
-}
-
-void readParameterInLoop(Test *a) {
-  for (id unused in get()) {
-    use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times in this function}}
-    (void)unused;
-  }
-}
-
-void readGlobalInLoop() {
-  static __weak id a;
-  for (id unused in get()) {
-    use(a); // expected-warning{{weak variable 'a' is accessed multiple times in this function}}
-    (void)unused;
-  }
-}
-
-void doWhileLoop(Test *a) {
-  do {
-    use(a.weakProp); // no-warning
-  } while(0);
-}
-
-
- at interface Test (Methods)
- at end
-
- at implementation Test (Methods)
-- (void)sanity {
-  use(self.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times in this method but may be unpredictably set to nil; assign to a strong variable to keep the object alive}}
-  use(self.weakProp); // expected-note{{also accessed here}}
-}
-
-- (void)ivars {
-  use(weakIvar); // expected-warning{{weak instance variable 'weakIvar' is accessed multiple times in this method but may be unpredictably set to nil; assign to a strong variable to keep the object alive}}
-  use(weakIvar); // expected-note{{also accessed here}}
-}
-
-- (void)doubleLevelAccessForSelf {
-  use(self.strongProp.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-  use(self.strongProp.weakProp); // expected-note{{also accessed here}}
-
-  use(self->ivar.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-  use(self->ivar.weakProp); // expected-note{{also accessed here}}
-
-  use(self->ivar->weakIvar); // expected-warning{{weak instance variable 'weakIvar' is accessed multiple times}}
-  use(self->ivar->weakIvar); // expected-note{{also accessed here}}
-}
-
-- (void)distinctFromOther:(Test *)other {
-  use(self.strongProp.weakProp); // no-warning
-  use(other.strongProp.weakProp); // no-warning
-
-  use(self->ivar.weakProp); // no-warning
-  use(other->ivar.weakProp); // no-warning
-
-  use(self.strongProp->weakIvar); // no-warning
-  use(other.strongProp->weakIvar); // no-warning
-}
- at end
-
- at interface Base1
- at end
- at interface Sub1 : Base1
- at end
- at interface Sub1(cat)
--(id)prop;
- at end
-
-void test1(Sub1 *s) {
-  use([s prop]);
-  use([s prop]);
-}
-
- at interface Base1(cat)
- at property (weak) id prop;
- at end
-
-void test2(Sub1 *s) {
-  // This does not warn because the "prop" in "Base1(cat)" was introduced
-  // after the method declaration and we don't find it as overridden.
-  // Always looking for overridden methods after the method declaration is expensive
-  // and it's not clear it is worth it currently.
-  use([s prop]);
-  use([s prop]);
-}
-
-
-class Wrapper {
-  Test *a;
-
-public:
-  void fields() {
-    use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times in this function but may be unpredictably set to nil; assign to a strong variable to keep the object alive}}
-    use(a.weakProp); // expected-note{{also accessed here}}
-  }
-
-  void distinctFromOther(Test *b, const Wrapper &w) {
-    use(a.weakProp); // no-warning
-    use(b.weakProp); // no-warning
-    use(w.a.weakProp); // no-warning
-  }
-
-  static void doubleLevelAccessField(const Wrapper &x, const Wrapper &y) {
-    use(x.a.weakProp); // expected-warning{{weak property 'weakProp' may be accessed multiple times}}
-    use(y.a.weakProp); // expected-note{{also accessed here}}
-  }
-};
-
-
-// -----------------------
-// False positives
-// -----------------------
-
-// Most of these would require flow-sensitive analysis to silence correctly.
-
-void assignNil(Test *a) {
-  if (condition())
-    a.weakProp = nil; // expected-note{{also accessed here}}
-
-  use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-}
-
-void branch(Test *a) {
-  if (condition())
-    use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times}}
-  else
-    use(a.weakProp); // expected-note{{also accessed here}}
-}
-
-void doubleLevelAccess(Test *a, Test *b) {
-  use(a.strongProp.weakProp); // expected-warning{{weak property 'weakProp' may be accessed multiple times}}
-  use(b.strongProp.weakProp); // expected-note{{also accessed here}}
-
-  use(a.weakProp.weakProp); // no-warning
-}
-
-void doubleLevelAccessIvar(Test *a, Test *b) {
-  use(a->ivar.weakProp); // expected-warning{{weak property 'weakProp' may be accessed multiple times}}
-  use(b->ivar.weakProp); // expected-note{{also accessed here}}
-
-  use(a.strongProp.weakProp); // no-warning
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-setter-property-match.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-setter-property-match.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-setter-property-match.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://10156674
-
- at class NSArray;
-
- at interface MyClass2  {
- at private
-    NSArray *_names1;
-    NSArray *_names2;
-    NSArray *_names3;
-    NSArray *_names4;
-}
- at property (readwrite, strong) NSArray *names1; // <-- warning: Type of property....
-- (void)setNames1:(NSArray *)names;
- at property (readwrite, strong) __strong NSArray *names2; // <-- warning: Type of property....
-- (void)setNames2:(NSArray *)names;
- at property (readwrite, strong) __strong NSArray *names3; // <-- OK
-- (void)setNames3:(__strong NSArray *)names;
- at property (readwrite, strong) NSArray *names4; // <-- warning: Type of property....
-- (void)setNames4:(__strong NSArray *)names;
-
- at end
-
- at implementation MyClass2
-- (NSArray *)names1 { return _names1; }
-- (void)setNames1:(NSArray *)names {}
-- (NSArray *)names2 { return _names2; }
-- (void)setNames2:(NSArray *)names {}
-- (NSArray *)names3 { return _names3; }
-- (void)setNames3:(__strong NSArray *)names {}
-- (NSArray *)names4 { return _names4; }
-- (void)setNames4:(__strong NSArray *)names {}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-system-header.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-system-header.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-system-header.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -isystem %S/Inputs %s -DNO_USE
-// RUN: %clang_cc1 -fobjc-arc -isystem %S/Inputs %s -verify
-
-#include <arc-system-header.h>
-
-#ifndef NO_USE
-void test(id op, void *cp) {
-  cp = test0(op); // expected-error {{'test0' is unavailable: converts between Objective-C and C pointers in -fobjc-arc}}
-  cp = *test1(&op); // expected-error {{'test1' is unavailable: converts between Objective-C and C pointers in -fobjc-arc}}
-// expected-note at arc-system-header.h:1 {{marked unavailable here}}
-// expected-note at arc-system-header.h:5 {{marked unavailable here}}
-}
-
-void test3(struct Test3 *p) {
-  p->field = 0; // expected-error {{'field' is unavailable: this system declaration uses an unsupported type}}
-                // expected-note at arc-system-header.h:14 {{marked unavailable here}}
-}
-
-void test4(Test4 *p) {
-  p->field1 = 0; // expected-error {{'field1' is unavailable: this system declaration uses an unsupported type}}
-                 // expected-note at arc-system-header.h:19 {{marked unavailable here}}
-  p->field2 = 0;
-}
-
-void test5(struct Test5 *p) {
-  p->field = 0; // expected-error {{'field' is unavailable: this system field has retaining ownership}}
-                // expected-note at arc-system-header.h:25 {{marked unavailable here}}
-}
-
-id test6() {
-  // This is actually okay to use if declared in a system header.
-  id x;
-  x = (id) kMagicConstant;
-  x = (id) (x ? kMagicConstant : kMagicConstant);
-  x = (id) (x ? kMagicConstant : (void*) 0);
-
-  extern void test6_helper();
-  x = (id) (test6_helper(), kMagicConstant);
-}
-
-void test7(Test7 *p) {
-  *p.prop = 0; // expected-error {{'prop' is unavailable: this system declaration uses an unsupported type}}
-  p.prop = 0; // expected-error {{'prop' is unavailable: this system declaration uses an unsupported type}}
-  *[p prop] = 0; // expected-error {{'prop' is unavailable: this system declaration uses an unsupported type}}
-  [p setProp: 0]; // expected-error {{'setProp:' is unavailable: this system declaration uses an unsupported type}}
-// expected-note at arc-system-header.h:41 4 {{marked unavailable here}}
-// expected-note at arc-system-header.h:41 2 {{property 'prop' is declared unavailable here}}
-}
-#endif
-
-// test8 in header

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-type-conversion.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-type-conversion.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-type-conversion.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -verify -fblocks %s
-
-typedef const void * CFTypeRef;
-CFTypeRef CFBridgingRetain(id X);
-id CFBridgingRelease(CFTypeRef);
-
-void * cvt(id arg)
-{
-  void* voidp_val;
-  (void)(int*)arg; // expected-error {{cast of an Objective-C pointer to 'int *' is disallowed with ARC}}
-  (void)(id)arg;
-  (void)(__autoreleasing id*)arg; // expected-error {{cast of an Objective-C pointer to '__autoreleasing id *' is disallowed with ARC}}
-  (void)(id*)arg; // expected-error {{cast of an Objective-C pointer to '__strong id *' is disallowed with ARC}}
-
-  (void)(__autoreleasing id**)voidp_val;
-  (void)(void*)voidp_val;
-  (void)(void**)arg; // expected-error {{cast of an Objective-C pointer to 'void **' is disallowed with ARC}}
-  cvt((void*)arg); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} \
-                   // expected-error {{implicit conversion of C pointer type 'void *' to Objective-C pointer type 'id' requires a bridged cast}} \
-                   // expected-note 2 {{use __bridge to convert directly (no change in ownership)}} \
-                   // expected-note {{use CFBridgingRetain call to make an ARC object available as a +1 'void *'}} \
-                   // expected-note {{use CFBridgingRelease call to transfer ownership of a +1 'void *' into ARC}}
-  cvt(0);
-  (void)(__strong id**)(0);
-  return arg; // expected-error {{implicit conversion of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} \
-                   // expected-note {{use __bridge to convert directly (no change in ownership)}} \
-                   // expected-note {{use CFBridgingRetain call to make an ARC object available as a +1 'void *'}}
-}
-
-void to_void(__strong id *sip, __weak id *wip,
-             __autoreleasing id *aip,
-             __unsafe_unretained id *uip) {
-  void *vp1 = sip;
-  void *vp2 = wip;
-  void *vp3 = aip;
-  void *vp4 = uip;
-  (void)(void*)sip;
-  (void)(void*)wip;
-  (void)(void*)aip;
-  (void)(void*)uip;
-  (void)(void*)&sip;
-  (void)(void*)&wip;
-  (void)(void*)&aip;
-  (void)(void*)&uip;
-}
-
-void from_void(void *vp) {
-  __strong id *sip = (__strong id *)vp;
-  __weak id *wip = (__weak id *)vp;
-  __autoreleasing id *aip = (__autoreleasing id *)vp;
-  __unsafe_unretained id *uip = (__unsafe_unretained id *)vp;
-
-  __strong id **sipp = (__strong id **)vp;
-  __weak id **wipp = (__weak id **)vp;
-  __autoreleasing id **aipp = (__autoreleasing id **)vp;
-  __unsafe_unretained id **uipp = (__unsafe_unretained id **)vp;
-
-  sip = vp; // expected-error{{implicit conversion of a non-Objective-C pointer type 'void *' to '__strong id *' is disallowed with ARC}}
-  wip = vp; // expected-error{{implicit conversion of a non-Objective-C pointer type 'void *' to '__weak id *' is disallowed with ARC}}
-  aip = vp; // expected-error{{implicit conversion of a non-Objective-C pointer type 'void *' to '__autoreleasing id *' is disallowed with ARC}}
-  uip = vp; // expected-error{{implicit conversion of a non-Objective-C pointer type 'void *' to '__unsafe_unretained id *' is disallowed with ARC}}
-}
-
-typedef void (^Block)();
-typedef void (^Block_strong)() __strong;
-typedef void (^Block_autoreleasing)() __autoreleasing;
-
- at class NSString;
-
-void ownership_transfer_in_cast(void *vp, Block *pblk) {
-  __strong NSString **sip = (NSString**)(__strong id *)vp;
-  __weak NSString **wip = (NSString**)(__weak id *)vp;
-  __autoreleasing id *aip = (id*)(__autoreleasing id *)vp;
-  __unsafe_unretained id *uip = (id*)(__unsafe_unretained id *)vp;
-
-  __strong id **sipp = (id**)(__strong id **)vp;
-  __weak id **wipp = (id**)(__weak id **)vp;
-  __autoreleasing id **aipp = (id**)(__autoreleasing id **)vp;
-  __unsafe_unretained id **uipp = (id**)(__unsafe_unretained id **)vp;
-
-  Block_strong blk_strong1;
-  Block_strong blk_strong2 = (Block)blk_strong1;
-  Block_autoreleasing *blk_auto = (Block*)pblk;
-
-  id lv;
-  (void)(id)&lv; // expected-error {{cast of an indirect pointer to an Objective-C pointer to 'id'}}
-  (void)(id*)lv; // expected-error {{cast of an Objective-C pointer to '__strong id *'}}
-  (void)(NSString*)&lv; // expected-error {{cast of an indirect pointer to an Objective-C pointer to 'NSString *'}}
-  (void)(NSString**)lv; // expected-error {{cast of an Objective-C pointer to 'NSString *__strong *'}}
-  (void)(Block)&lv; // expected-error {{cast of an indirect pointer to an Objective-C pointer to 'Block'}}
-  (void)(Block*)lv; // expected-error {{cast of an Objective-C pointer to '__strong Block *'}}
-}
-
-// <rdar://problem/10486347>
-void conversion_in_conditional(id a, void* b) {
-  id c = 1 ? a : b; // expected-error {{operands to conditional of types 'id' and 'void *' are incompatible in ARC mode}}
-  id d = 1 ? b : a; // expected-error {{operands to conditional of types 'void *' and 'id' are incompatible in ARC mode}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unavailable-for-weakref.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unavailable-for-weakref.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unavailable-for-weakref.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,88 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -verify -Wno-objc-root-class %s
-// rdar://9693477
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface NSOptOut1072  // expected-note {{class is declared here}}
- at end
-
- at interface sub : NSOptOut1072 @end // expected-note 2 {{class is declared here}}
-
-int main() {
-  __weak sub *w2; // expected-error {{class is incompatible with __weak references}}
-
-  __weak NSOptOut1072 *ns1; // expected-error {{class is incompatible with __weak references}}
-
-  id obj;
-
-  ns1 = (__weak sub *)obj; // expected-error {{assignment of a weak-unavailable object to a __weak object}} \
-                           // expected-error {{class is incompatible with __weak references}} \
-                           // expected-error {{explicit ownership qualifier on cast result has no effect}}
-}
-
-// rdar://9732636
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface NOWEAK
-+ (id) new;
- at end
-
-NOWEAK * Test1() {
-  NOWEAK * strong1 = [NOWEAK new];
-  __weak id weak1;
-  weak1 = strong1; // expected-error {{assignment of a weak-unavailable object to a __weak object}}
-
-  __weak id weak2 = strong1; // expected-error {{assignment of a weak-unavailable object to a __weak object}}
-  return (__weak id)strong1; // expected-error {{cast of weak-unavailable object of type 'NOWEAK *' to a __weak object of type '__weak id'}} \
-                             // expected-error {{explicit ownership qualifier on cast result has no effect}}
-}
-
- at protocol P @end
- at protocol P1 @end
-
-NOWEAK<P, P1> * Test2() {
-  NOWEAK<P, P1> * strong1 = 0;
-  __weak id<P> weak1;
-  weak1 = strong1; // expected-error {{assignment of a weak-unavailable object to a __weak object}}
-
-  __weak id<P> weak2 = strong1; // expected-error {{assignment of a weak-unavailable object to a __weak object}}
-  return (__weak id<P>)strong1; // expected-error {{cast of weak-unavailable object of type 'NOWEAK<P,P1> *' to a __weak object of type '__weak id<P>'}} \
-                                // expected-error {{explicit ownership qualifier on cast result has no effect}}
-}
-
-// rdar://10535245
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface NSFont
- at end
-
- at interface I
-{
-}
- at property (weak) NSFont *font; // expected-error {{synthesizing __weak instance variable of type 'NSFont *', which does not support weak references}}
- at end
-
- at implementation I // expected-note {{when implemented by class I}}
- at synthesize font = _font;
- at end
-
-// rdar://13676793
- at protocol MyProtocol
- at property (weak) NSFont *font; // expected-error {{synthesizing __weak instance variable of type 'NSFont *', which does not support weak references}}
- at end
-
- at interface I1 <MyProtocol>
- at end
-
- at implementation I1 // expected-note {{when implemented by class I1}}
- at synthesize font = _font;
- at end
-
- at interface Super
- at property (weak) NSFont *font;  // expected-error {{synthesizing __weak instance variable of type 'NSFont *', which does not support weak references}}
- at end
-
-
- at interface I2 : Super
- at end
-
- at implementation I2 // expected-note {{when implemented by class I2}}
- at synthesize font = _font;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unavailable-system-function.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unavailable-system-function.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unavailable-system-function.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin11 -fobjc-arc -verify %s
-// rdar://10186625
-
-# 1 "<command line>"
-# 1 "/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h" 1 3
-id * foo(); // expected-note {{function has been explicitly marked unavailable here}}
-
-# 1 "arc-unavailable-system-function.m" 2
-void ret() {
-  foo(); // expected-error {{'foo' is unavailable: this system declaration uses an unsupported type}}
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unbridged-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unbridged-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unbridged-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,123 +0,0 @@
-// // RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -verify %s
-
-typedef const struct __CFString * CFStringRef;
-typedef const void * CFTypeRef;
-CFTypeRef CFBridgingRetain(id X);
-id CFBridgingRelease(CFTypeRef);
-
-
- at interface Object
- at property CFStringRef property;
-- (CFStringRef) implicitProperty;
-- (CFStringRef) newString;
-- (CFStringRef) makeString;
- at end
-
-extern Object *object;
-
-// rdar://9744349
-id test0(void) {
-  id p1 = (id)[object property];
-  id p2 = (__bridge_transfer id)[object property];
-  id p3 = (__bridge id)[object property];
-  return (id) object.property;
-}
-
-// rdar://10140692
-CFStringRef unauditedString(void);
-CFStringRef plusOneString(void) __attribute__((cf_returns_retained));
-
-#pragma clang arc_cf_code_audited begin
-CFStringRef auditedString(void);
-CFStringRef auditedCreateString(void);
-#pragma clang arc_cf_code_audited end
-
-void test1(int cond) {
-  id x;
-  x = (id) auditedString();
-  x = (id) (cond ? auditedString() : (void*) 0);
-  x = (id) (cond ? (void*) 0 : auditedString());
-  x = (id) (cond ? (CFStringRef) @"help" : auditedString());
-
-  x = (id) unauditedString(); // expected-error {{requires a bridged cast}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? unauditedString() : (void*) 0); // expected-error {{requires a bridged cast}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? (void*) 0 : unauditedString()); // expected-error {{requires a bridged cast}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? (CFStringRef) @"help" : unauditedString()); // expected-error {{requires a bridged cast}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRelease call to}}
-
-  x = (id) auditedCreateString(); // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? auditedCreateString() : (void*) 0); // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? (void*) 0 : auditedCreateString()); // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? (CFStringRef) @"help" : auditedCreateString()); // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRelease call to}}
-
-  x = (id) [object property];
-  x = (id) (cond ? [object property] : (void*) 0);
-  x = (id) (cond ? (void*) 0 : [object property]);
-  x = (id) (cond ? (CFStringRef) @"help" : [object property]);  
-
-  x = (id) object.property;
-  x = (id) (cond ? object.property : (void*) 0);
-  x = (id) (cond ? (void*) 0 : object.property);
-  x = (id) (cond ? (CFStringRef) @"help" : object.property);  
-
-  x = (id) object.implicitProperty;
-  x = (id) (cond ? object.implicitProperty : (void*) 0);
-  x = (id) (cond ? (void*) 0 : object.implicitProperty);
-  x = (id) (cond ? (CFStringRef) @"help" : object.implicitProperty);  
-
-  x = (id) [object makeString];
-  x = (id) (cond ? [object makeString] : (void*) 0);
-  x = (id) (cond ? (void*) 0 : [object makeString]);
-  x = (id) (cond ? (CFStringRef) @"help" : [object makeString]);  
-
-  x = (id) [object newString];
-  x = (id) (cond ? [object newString] : (void*) 0);
-  x = (id) (cond ? (void*) 0 : [object newString]);
-  x = (id) (cond ? (CFStringRef) @"help" : [object newString]); // a bit questionable
-}
-
-// rdar://problem/10246264
- at interface CFTaker
-- (void) takeOrdinary: (CFStringRef) arg;
-- (void) takeVariadic: (int) n, ...;
-- (void) takeConsumed: (CFStringRef __attribute__((cf_consumed))) arg;
- at end
-void testCFTaker(CFTaker *taker, id string) {
-  [taker takeOrdinary: (CFStringRef) string];
-  [taker takeVariadic: 1, (CFStringRef) string];
-  [taker takeConsumed: (CFStringRef) string]; // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-}
-
-void takeCFOrdinaryUnaudited(CFStringRef arg);
-void takeCFVariadicUnaudited(int n, ...);
-void takeCFConsumedUnaudited(CFStringRef __attribute__((cf_consumed)) arg);
-#pragma clang arc_cf_code_audited begin
-void takeCFOrdinaryAudited(CFStringRef arg);
-void takeCFVariadicAudited(int n, ...);
-void takeCFConsumedAudited(CFStringRef __attribute__((cf_consumed)) arg);
-#pragma clang arc_cf_code_audited end
-
-void testTakerFunctions(id string) {
-  takeCFOrdinaryUnaudited((CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-  takeCFVariadicUnaudited(1, (CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-  takeCFConsumedUnaudited((CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-
-  void (*taker)(CFStringRef) = 0;
-  taker((CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-
-  takeCFOrdinaryAudited((CFStringRef) string);
-  takeCFVariadicAudited(1, (CFStringRef) string);
-  takeCFConsumedAudited((CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-}
-
-void testTakerFunctions_parens(id string) {
-  takeCFOrdinaryUnaudited(((CFStringRef) string)); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-  takeCFVariadicUnaudited(1, ((CFStringRef) string)); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-  takeCFConsumedUnaudited(((CFStringRef) string)); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-
-  void (*taker)(CFStringRef) = 0;
-  taker(((CFStringRef) string)); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-
-  takeCFOrdinaryAudited(((CFStringRef) string));
-  takeCFVariadicAudited(1, ((CFStringRef) string));
-  takeCFConsumedAudited(((CFStringRef) string)); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unsafe-assigns.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unsafe-assigns.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unsafe-assigns.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -verify -Wno-objc-root-class %s
-// rdar://9495837
-
- at interface Foo {
-  __unsafe_unretained id unsafe_ivar;
-}
-
- at property (assign,nonatomic) id unsafe_prop;
-
-- (id)init;
-+ (id)new;
-+ (id)alloc;
-
--(void)Meth;
- at end
-
- at implementation Foo
- at synthesize unsafe_prop;
--(id)init { return self; }
-+(id)new { return 0; }
-+(id)alloc { return 0; }
-
--(void)Meth {
-  self.unsafe_prop = [Foo new]; // expected-warning {{assigning retained object to unsafe property}}
-  self->unsafe_ivar = [Foo new]; // expected-warning {{assigning retained object to unsafe_unretained}}
-  self.unsafe_prop = [[Foo alloc] init]; // expected-warning {{assigning retained object to unsafe property}}
-  self->unsafe_ivar = [[Foo alloc] init]; // expected-warning {{assigning retained object to unsafe_unretained}}
-
-  __unsafe_unretained id unsafe_var;
-  unsafe_var = [Foo new]; // expected-warning {{assigning retained object to unsafe_unretained}}
-  unsafe_var = [[Foo alloc] init]; // expected-warning {{assigning retained object to unsafe_unretained}}
-}
- at end
-
-void bar(Foo *f) {
-  f.unsafe_prop = [Foo new]; // expected-warning {{assigning retained object to unsafe property}}
-
-  __unsafe_unretained id unsafe_var;
-  unsafe_var = [Foo new]; // expected-warning {{assigning retained object to unsafe_unretained}}
-  unsafe_var = [[Foo alloc] init]; // expected-warning {{assigning retained object to unsafe_unretained}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unsafe_unretained.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unsafe_unretained.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc-unsafe_unretained.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks %s
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -fobjc-arc %s
-// expected-no-diagnostics
-
-struct X {
-  __unsafe_unretained id object;
-  int (^ __unsafe_unretained block)(int, int);
-};
-
-void f(struct X x) {
-  x.object = 0;
-  x.block = ^(int x, int y) { return x + y; };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/arc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/arc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/arc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,769 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -fblocks -verify -Wno-objc-root-class %s
-
-typedef unsigned long NSUInteger;
-typedef const void * CFTypeRef;
-CFTypeRef CFBridgingRetain(id X);
-id CFBridgingRelease(CFTypeRef);
- at protocol NSCopying @end
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id <NSCopying> [])keys count:(NSUInteger)cnt;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
- at class NSFastEnumerationState;
- at protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __unsafe_unretained [])buffer count:(NSUInteger)len;
- at end
- at interface NSNumber 
-+ (NSNumber *)numberWithInt:(int)value;
- at end
- at interface NSArray <NSFastEnumeration>
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
- at end
-
-void test0(void (*fn)(int), int val) {
-  fn(val);
-}
-
- at interface A
-- (id)retain;
-- (id)autorelease;
-- (oneway void)release;
-- (void)dealloc;
-- (NSUInteger)retainCount;
- at end
-
-void test1(A *a) {
-  SEL s = @selector(retain);	// expected-error {{ARC forbids use of 'retain' in a @selector}}
-  s = @selector(release);	// expected-error {{ARC forbids use of 'release' in a @selector}}
-  s = @selector(autorelease);	// expected-error {{ARC forbids use of 'autorelease' in a @selector}}
-  s = @selector(dealloc);	// expected-error {{ARC forbids use of 'dealloc' in a @selector}}
-  [a dealloc]; // expected-error {{ARC forbids explicit message send of 'dealloc'}}
-  [a retain]; // expected-error {{ARC forbids explicit message send of 'retain'}}
-  [a retainCount]; // expected-error {{ARC forbids explicit message send of 'retainCount'}}
-  [a release]; // expected-error {{ARC forbids explicit message send of 'release'}}
-  [a autorelease]; // expected-error {{ARC forbids explicit message send of 'autorelease'}}
-}
-
- at interface Test2 : A
-- (void) dealloc;
- at end
- at implementation Test2
-- (void) dealloc {
-  // This should maybe just be ignored.  We're just going to warn about it for now.
-  [super dealloc]; // expected-error {{ARC forbids explicit message send of 'dealloc'}}
-}
- at end
-
-// rdar://8843638
-
- at interface I
-- (id)retain; // expected-note {{method 'retain' declared here}}
-- (id)autorelease; // expected-note {{method 'autorelease' declared here}}
-- (oneway void)release; // expected-note {{method 'release' declared here}}
-- (NSUInteger)retainCount; // expected-note {{method 'retainCount' declared here}}
- at end
-
- at implementation I
-- (id)retain{return 0;} // expected-error {{ARC forbids implementation of 'retain'}}
-- (id)autorelease{return 0;} // expected-error {{ARC forbids implementation of 'autorelease'}}
-- (oneway void)release{} // expected-error {{ARC forbids implementation of 'release'}}
-- (NSUInteger)retainCount{ return 0; } // expected-error {{ARC forbids implementation of 'retainCount'}}
- at end
-
- at implementation I(CAT)
-- (id)retain{return 0;} // expected-error {{ARC forbids implementation of 'retain'}} \
-                        // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
-- (id)autorelease{return 0;} // expected-error {{ARC forbids implementation of 'autorelease'}} \
-                         // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
-- (oneway void)release{} // expected-error {{ARC forbids implementation of 'release'}} \
-                          // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
-- (NSUInteger)retainCount{ return 0; } // expected-error {{ARC forbids implementation of 'retainCount'}} \
-                          // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
- at end
-
-// rdar://8861761
-
- at interface B
--(id)alloc;
-- (id)initWithInt: (int) i;
- at end
-
-void rdar8861761() {
-  B *o1 = [[B alloc] initWithInt:0];
-  B *o2 = [B alloc];
-  [o2 initWithInt:0]; // expected-warning {{expression result unused}}
-}
-
-// rdar://8925835
- at interface rdar8925835
-- (void)foo:(void (^)(unsigned captureCount, I * const capturedStrings[captureCount]))block;
- at end
-
-void test5() {
-  extern void test5_helper(__autoreleasing id *);
-  id x;
-
-  // Okay because of magic temporaries.
-  test5_helper(&x);
-
-  __autoreleasing id *a = &x; // expected-error {{initializing '__autoreleasing id *' with an expression of type '__strong id *' changes retain/release properties of pointer}}
-
-  a = &x; // expected-error {{assigning '__strong id *' to '__autoreleasing id *' changes retain/release properties of pointer}}
-
-  extern void test5_helper2(id const *);
-  test5_helper2(&x);
-
-  extern void test5_helper3(__weak id *); // expected-note {{passing argument to parameter here}}
-  test5_helper3(&x); // expected-error {{passing '__strong id *' to parameter of type '__weak id *' changes retain/release properties of pointer}}
-}
-
-// rdar://problem/8937869
-void test6(unsigned cond) {
-  switch (cond) {
-  case 0:
-    ;
-    id x; // expected-note {{jump bypasses initialization of retaining variable}}
-
-  case 1: // expected-error {{switch case is in protected scope}}
-    break;
-  }
-}
-
- at class NSError;
-void test7(void) {
-  extern void test7_helper(NSError **);
-  NSError *err;
-  test7_helper(&err);
-}
-void test7_weak(void) {
-  extern void test7_helper(NSError **);
-  __weak NSError *err;
-  test7_helper(&err);
-}
-void test7_unsafe(void) {
-  extern void test7_helper(NSError **); // expected-note {{passing argument to parameter here}}
-  __unsafe_unretained NSError *err;
-  test7_helper(&err); // expected-error {{passing 'NSError *__unsafe_unretained *' to parameter of type 'NSError *__autoreleasing *' changes retain/release properties of pointer}}
-}
-
- at class Test8_incomplete;
- at interface Test8_complete @end;
- at interface Test8_super @end;
- at interface Test8 : Test8_super
-- (id) init00;
-- (id) init01; // expected-note {{declaration in interface}} \
-               // expected-note{{overridden method}}
-- (id) init02; // expected-note{{overridden method}}
-- (id) init03; // covariance
-- (id) init04; // covariance
-- (id) init05; // expected-note{{overridden method}}
-
-- (void) init10; // expected-note {{declaration in interface is not in the 'init' family because its result type is not an object pointer}}
-- (void) init11;
-- (void) init12;
-- (void) init13; // expected-note {{declaration in interface is not in the 'init' family because its result type is not an object pointer}}
-- (void) init14; // expected-note {{declaration in interface is not in the 'init' family because its result type is not an object pointer}}
-- (void) init15;
-
-// These should be invalid to actually call.
-- (Test8_incomplete*) init20;
-- (Test8_incomplete*) init21; // expected-note {{declaration in interface}}
-- (Test8_incomplete*) init22;
-- (Test8_incomplete*) init23;
-- (Test8_incomplete*) init24;
-- (Test8_incomplete*) init25;
-
-- (Test8_super*) init30; // id exception to covariance
-- (Test8_super*) init31; // expected-note {{declaration in interface}} \
-                         // expected-note{{overridden method}}
-- (Test8_super*) init32; // expected-note{{overridden method}}
-- (Test8_super*) init33;
-- (Test8_super*) init34; // covariance
-- (Test8_super*) init35; // expected-note{{overridden method}}
-
-- (Test8*) init40; // id exception to covariance
-- (Test8*) init41; // expected-note {{declaration in interface}} \
-                   // expected-note{{overridden method}}
-- (Test8*) init42; // expected-note{{overridden method}}
-- (Test8*) init43; // this should be a warning, but that's a general language thing, not an ARC thing
-- (Test8*) init44;
-- (Test8*) init45; // expected-note{{overridden method}}
-
-- (Test8_complete*) init50; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init51; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init52; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init53; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init54; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init55; // expected-error {{init methods must return a type related to the receiver type}}
- at end
- at implementation Test8
-- (id) init00 { return 0; }
-- (id) init10 { return 0; } // expected-error {{method implementation does not match its declaration}}
-- (id) init20 { return 0; }
-- (id) init30 { return 0; }
-- (id) init40 { return 0; }
-- (id) init50 { return 0; }
-
-- (void) init01 {} // expected-error {{method was declared as an 'init' method, but its implementation doesn't match because its result type is not an object pointer}} \
-                   // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'void'}}
-- (void) init11 {}
-- (void) init21 {} // expected-error {{method was declared as an 'init' method, but its implementation doesn't match because its result type is not an object pointer}}
-- (void) init31 {} // expected-error {{method was declared as an 'init' method, but its implementation doesn't match because its result type is not an object pointer}} \
-                   // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'void'}}
-- (void) init41 {} // expected-error {{method was declared as an 'init' method, but its implementation doesn't match because its result type is not an object pointer}} \
-                   // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'void'}}
-- (void) init51 {}
-
-- (Test8_incomplete*) init02 { return 0; } // expected-error {{init methods must return a type related to the receiver type}} \
-                                           // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'Test8_incomplete *'}}
-- (Test8_incomplete*) init12 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_incomplete*) init22 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_incomplete*) init32 { return 0; } // expected-error {{init methods must return a type related to the receiver type}} \
-                                           // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'Test8_incomplete *'}}
-- (Test8_incomplete*) init42 { return 0; } // expected-error {{init methods must return a type related to the receiver type}} \
-                                           // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'Test8_incomplete *'}}
-- (Test8_incomplete*) init52 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-
-- (Test8_super*) init03 { return 0; }
-- (Test8_super*) init13 { return 0; } // expected-error {{method implementation does not match its declaration}}
-- (Test8_super*) init23 { return 0; }
-- (Test8_super*) init33 { return 0; }
-- (Test8_super*) init43 { return 0; }
-- (Test8_super*) init53 { return 0; }
-
-- (Test8*) init04 { return 0; }
-- (Test8*) init14 { return 0; } // expected-error {{method implementation does not match its declaration}}
-- (Test8*) init24 { return 0; }
-- (Test8*) init34 { return 0; }
-- (Test8*) init44 { return 0; }
-- (Test8*) init54 { return 0; }
-
-- (Test8_complete*) init05 { return 0; } // expected-error {{init methods must return a type related to the receiver type}} \
-                                         // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'Test8_complete *'}}
-- (Test8_complete*) init15 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init25 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
-- (Test8_complete*) init35 { return 0; } // expected-error {{init methods must return a type related to the receiver type}} \
-                                         // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'Test8_complete *'}}
-- (Test8_complete*) init45 { return 0; } // expected-error {{init methods must return a type related to the receiver type}} \
-                                         // expected-warning{{method is expected to return an instance of its class type 'Test8', but is declared to return 'Test8_complete *'}}
-- (Test8_complete*) init55 { return 0; } // expected-error {{init methods must return a type related to the receiver type}}
- at end
-
- at class Test9_incomplete;
- at interface Test9
-- (Test9_incomplete*) init1; // expected-error {{init methods must return a type related to the receiver type}}
-- (Test9_incomplete*) init2;
- at end
-id test9(Test9 *v) {
-  return [v init1];
-}
-
-// Test that the inference rules are different for fast enumeration variables.
-void test10(id collection) {
-  for (id x in collection) {
-    __strong id *ptr = &x; // expected-warning {{initializing '__strong id *' with an expression of type 'const __strong id *' discards qualifiers}}
-  }
-
-  for (__strong id x in collection) {
-    __weak id *ptr = &x; // expected-error {{initializing '__weak id *' with an expression of type '__strong id *' changes retain/release properties of pointer}}
-  }
-}
-
-// rdar://problem/9078626
-#define nil ((void*) 0)
-void test11(id op, void *vp) {
-  _Bool b;
-  b = (op == nil);
-  b = (nil == op);
-
-  b = (vp == nil);
-  b = (nil == vp);
-
-  b = (vp == op); // expected-error {{implicit conversion of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} expected-note {{use __bridge}} expected-note {{use CFBridgingRetain call}}
-  b = (op == vp); // expected-error {{implicit conversion of C pointer type 'void *' to Objective-C pointer type 'id' requires a bridged cast}} expected-note {{use __bridge}} expected-note {{use CFBridgingRelease call}}
-}
-
-void test12(id collection) {
-  for (id x in collection) {
-    x = 0; // expected-error {{fast enumeration variables can't be modified in ARC by default; declare the variable __strong to allow this}}
-  }
-
-  for (const id x in collection) {
-    x = 0; // expected-error {{read-only variable is not assignable}}
-  }
-
-  for (__strong id x in collection) {
-    x = 0;
-  }
-}
-
- at interface Test13
-- (id) init0;
-- (void) noninit;
- at end
- at implementation Test13
-- (id) init0 {
-  self = 0;
-}
-- (void) noninit {
-  self = 0; // expected-error {{cannot assign to 'self' outside of a method in the init family}}
-}
- at end
-
-// <rdar://problem/10274056>
- at interface Test13_B
-- (id) consumesSelf __attribute__((ns_consumes_self));
- at end
- at implementation Test13_B
-- (id) consumesSelf {
-  self = 0; // no-warning
-}
- at end
-
-// rdar://problem/9172151
- at class Test14A, Test14B;
-void test14() {
-  extern void test14_consume(id *);
-  extern int test14_cond(void);
-  extern float test14_nowriteback(id __autoreleasing const *); // expected-note{{passing argument to parameter here}}
-
-  Test14A *a;
-  Test14B *b;
-  id i;
-  id cla[10];
-  id vla[test14_cond() + 10];
-
-  test14_consume((__strong id*) &a);
-  test14_consume((test14_cond() ? (__strong id*) &b : &i));
-  test14_consume(test14_cond() ? 0 : &a);
-  test14_consume(test14_cond() ? (void*) 0 : (&a));
-  test14_consume(cla); // expected-error {{passing address of non-scalar object to __autoreleasing parameter for write-back}}
-  test14_consume(vla); // expected-error {{passing address of non-scalar object to __autoreleasing parameter for write-back}}
-  test14_consume(&cla[5]); // expected-error {{passing address of non-scalar object to __autoreleasing parameter for write-back}}
-
-  __strong id *test14_indirect(void);
-  test14_consume(test14_indirect()); // expected-error {{passing address of non-local object to __autoreleasing parameter for write-back}}
-
-  extern id test14_global;
-  test14_consume(&test14_global); // expected-error {{passing address of non-local object to __autoreleasing parameter for write-back}}
-
-  extern __strong id *test14_global_ptr;
-  test14_consume(test14_global_ptr); // expected-error {{passing address of non-local object to __autoreleasing parameter for write-back}}
-
-  static id static_local;
-  test14_consume(&static_local); // expected-error {{passing address of non-local object to __autoreleasing parameter for write-back}}
-
-  __weak id* wip;
-  test14_nowriteback(&static_local); // okay, not a write-back.
-  test14_nowriteback(wip); // expected-error{{passing '__weak id *' to parameter of type '__autoreleasing id const *' changes retain/release properties of pointer}}
-}
-
-void test15() {
-  __block __autoreleasing id x; // expected-error {{__block variables cannot have __autoreleasing ownership}}
-}
-
-struct Test16;
- at interface Test16a
-- (void) test16_0: (int) x;
-- (int) test16_1: (int) x; // expected-note {{one possibility}}
-- (int) test16_2: (int) x; // expected-note {{one possibility}}
-- (id) test16_3: (int) x __attribute__((ns_returns_retained)); // expected-note {{one possibility}}
-- (void) test16_4: (int) x __attribute__((ns_consumes_self)); // expected-note {{one possibility}}
-- (void) test16_5: (id) __attribute__((ns_consumed)) x; // expected-note {{one possibility}}
-- (void) test16_6: (id) x;
- at end
-
- at interface Test16b 
-- (void) test16_0: (int) x;
-- (int) test16_1: (char*) x; // expected-note {{also found}}
-- (char*) test16_2: (int) x; // expected-note {{also found}}
-- (id) test16_3: (int) x; // expected-note {{also found}}
-- (void) test16_4: (int) x; // expected-note {{also found}}
-- (void) test16_5: (id) x; // expected-note {{also found}}
-- (void) test16_6: (struct Test16 *) x;
- at end
-
-void test16(void) {
-  id v;
-  [v test16_0: 0];
-  [v test16_1: 0]; // expected-error {{multiple methods named 'test16_1:' found with mismatched result, parameter type or attributes}}
-  [v test16_2: 0]; // expected-error {{multiple methods named}}
-  [v test16_3: 0]; // expected-error {{multiple methods named}}
-  [v test16_4: 0]; // expected-error {{multiple methods named}}
-  [v test16_5: 0]; // expected-error {{multiple methods named}}
-  [v test16_6: 0];
-}
-
- at class Test17; // expected-note 2{{forward declaration of class here}}
- at protocol Test17p
-- (void) test17;
-+ (void) test17;
- at end
-void test17(void) {
-  Test17 *v0;
-  [v0 test17]; // expected-error {{receiver type 'Test17' for instance message is a forward declaration}}
-
-  Test17<Test17p> *v1;
-  [v1 test17]; // expected-error {{receiver type 'Test17<Test17p>' for instance message is a forward declaration}}
-
-  [Test17 test17]; // expected-error {{receiver 'Test17' for class message is a forward declaration}}
-}
-
-void test18(void) {
-  id x;
-  [x test18]; // expected-error {{no known instance method for selector 'test18'}}
-}
-
-extern struct Test19 *test19a;
-struct Test19 *const test19b = 0;
-void test19(void) {
-  id x;
-  x = (id) test19a; // expected-error {{bridged cast}} \
-  // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-  // expected-note{{use CFBridgingRelease call to transfer ownership of a +1 'struct Test19 *' into ARC}}
-  x = (id) test19b; // expected-error {{bridged cast}} \
-  // expected-note{{use __bridge to convert directly (no change in ownership)}} \
-  // expected-note{{use CFBridgingRelease call to transfer ownership of a +1 'struct Test19 *' into ARC}}
-}
-
-// rdar://problem/8951453
-static __thread id test20_implicit; // expected-error {{thread-local variable has non-trivial ownership: type is '__strong id'}}
-static __thread __strong id test20_strong; // expected-error {{thread-local variable has non-trivial ownership: type is '__strong id'}}
-static __thread __weak id test20_weak; // expected-error {{thread-local variable has non-trivial ownership: type is '__weak id'}}
-static __thread __autoreleasing id test20_autoreleasing; // expected-error {{thread-local variable has non-trivial ownership: type is '__autoreleasing id'}} expected-error {{global variables cannot have __autoreleasing ownership}}
-static __thread __unsafe_unretained id test20_unsafe;
-void test20(void) {
-  static __thread id test20_implicit; // expected-error {{thread-local variable has non-trivial ownership: type is '__strong id'}}
-  static __thread __strong id test20_strong; // expected-error {{thread-local variable has non-trivial ownership: type is '__strong id'}}
-  static __thread __weak id test20_weak; // expected-error {{thread-local variable has non-trivial ownership: type is '__weak id'}}
-  static __thread __autoreleasing id test20_autoreleasing; // expected-error {{thread-local variable has non-trivial ownership: type is '__autoreleasing id'}} expected-error {{global variables cannot have __autoreleasing ownership}}
-  static __thread __unsafe_unretained id test20_unsafe;
-}
-
-// rdar://9310049
-_Bool fn(id obj) {
-    return (_Bool)obj;
-}
-
-// Check casting w/ ownership qualifiers.
-void test21() {
-  __strong id *sip;
-  (void)(__weak id *)sip; // expected-error{{casting '__strong id *' to type '__weak id *' changes retain/release properties of pointer}}
-  (void)(__weak const id *)sip; // expected-error{{casting '__strong id *' to type '__weak id const *' changes retain/release properties of pointer}}
-  (void)(__autoreleasing id *)sip; // expected-error{{casting '__strong id *' to type '__autoreleasing id *' changes retain/release properties of pointer}}
-  (void)(__autoreleasing const id *)sip; // okay
-}
-
-// rdar://problem/9340462
-void test22(id x[]) { // expected-error {{must explicitly describe intended ownership of an object array parameter}}
-}
-
-// rdar://problem/9400219
-void test23(void) {
-  void *ptr;
-  ptr = @"foo";
-  ptr = (ptr ? @"foo" : 0);
-  ptr = (ptr ? @"foo" : @"bar");
-}
-
-id test24(void) {
-  extern void test24_helper(void);
-  return test24_helper(), (void*) 0;
-}
-
-// rdar://9400841
- at interface Base
- at property (assign) id content;
- at end
-
- at interface Foo : Base
--(void)test;
- at end
-
- at implementation Foo
--(void)test {
-	super.content = 0;
-}
- at end
-
-// <rdar://problem/9398437>
-void test25(Class *classes) {
-  Class *other_classes;
-  test25(other_classes);
-}
-
-void test26(id y) {
-  extern id test26_var1;
-  __sync_swap(&test26_var1, 0, y); // expected-error {{cannot perform atomic operation on a pointer to type '__strong id': type has non-trivial ownership}}
-
-  extern __unsafe_unretained id test26_var2;
-  __sync_swap(&test26_var2, 0, y);
-}
-
- at interface Test26
-- (id) init;
-- (id) initWithInt: (int) x;
- at end
- at implementation Test26
-- (id) init { return self; }
-- (id) initWithInt: (int) x {
-  [self init]; // expected-error {{the result of a delegate init call must be immediately returned or assigned to 'self'}}
-  return self;
-}
- at end
-
-// rdar://9525555
- at interface  Test27 {
-  __weak id _myProp1;
-  id myProp2;
-}
- at property id x;
- at property (readonly) id ro;
- at property (readonly) id custom_ro;
- at property int y;
-
- at property (readonly) __weak id myProp1;
- at property (readonly) id myProp2;
- at property (readonly) __strong id myProp3;
- at end
-
- at implementation Test27
- at synthesize x;
- at synthesize ro;
- at synthesize y;
-
- at synthesize myProp1 = _myProp1;
- at synthesize myProp2;
- at synthesize myProp3;
-
--(id)custom_ro { return 0; }
- at end
-
-// rdar://9569264
- at interface Test28
- at property (nonatomic, assign) __strong id a; // expected-error {{unsafe_unretained property 'a' may not also be declared __strong}}
- at end
-
- at interface Test28 ()
- at property (nonatomic, assign) __strong id b; // expected-error {{unsafe_unretained property 'b' may not also be declared __strong}}
- at end
-
- at implementation Test28
- at synthesize a;
- at synthesize b;
- at end
-
-// rdar://9573962
-typedef struct Bark Bark;
- at interface Test29
- at property Bark* P;
- at end
-
- at implementation Test29
- at synthesize P;
-- (id)Meth { 
-  Bark** f = &P; 
-  return 0; 
-}
- at end
-
-// rdar://9495837
- at interface Test30
-+ (id) new;
-- (void)Meth;
- at end
-
- at implementation Test30
-+ (id) new { return 0; }
-- (void) Meth {
-  __weak id x = [Test30 new]; // expected-warning {{assigning retained object to weak variable}}
-  id __unsafe_unretained u = [Test30 new]; // expected-warning {{assigning retained object to unsafe_unretained variable}}
-  id y = [Test30 new];
-  x = [Test30 new]; // expected-warning {{assigning retained object to weak variable}}
-  u = [Test30 new]; // expected-warning {{assigning retained object to unsafe_unretained variable}}
-  y = [Test30 new];
-}
- at end
-
-// rdar://9411838
- at protocol PTest31 @end
-
-int Test31() {
-    Class cls;
-    id ids;
-    id<PTest31> pids;
-    Class<PTest31> pcls;
-
-    int i =  (ids->isa ? 1 : 0); // expected-error {{member reference base type 'id' is not a structure or union}}
-    int j = (pids->isa ? 1 : 0); // expected-error {{member reference base type 'id<PTest31>' is not a structure or union}}
-    int k = (pcls->isa ? i : j); // expected-error {{member reference base type 'Class<PTest31>' is not a structure or union}}
-    return cls->isa ? i : j; // expected-error {{member reference base type 'Class' is not a structure or union}}
-}
-
-// rdar://9612030
- at interface ITest32 {
- at public
- id ivar;
-}
- at end
-
-id Test32(__weak ITest32 *x) {
-  __weak ITest32 *y;
-  x->ivar = 0; // expected-error {{dereferencing a __weak pointer is not allowed}}
-  return y ? y->ivar     // expected-error {{dereferencing a __weak pointer is not allowed}}
-           : (*x).ivar;  // expected-error {{dereferencing a __weak pointer is not allowed}}
-}
-
-// rdar://9619861
-extern int printf(const char*, ...);
-typedef long intptr_t;
-
-int Test33(id someid) {
-  printf( "Hello%ld", (intptr_t)someid);
-  return (int)someid;
-}
-
-// rdar://9636091
- at interface I34
- at property (nonatomic, retain) id newName __attribute__((ns_returns_not_retained)) ;
-
- at property (nonatomic, retain) id newName1 __attribute__((ns_returns_not_retained)) ;
-- (id) newName1 __attribute__((ns_returns_not_retained));
-
- at property (nonatomic, retain) id newName2 __attribute__((ns_returns_not_retained)); // expected-note {{roperty declared here}}
-- (id) newName2;   // expected-warning {{property declared as returning non-retained objects; getter returning retained objects}}
- at end
-
- at implementation I34
- at synthesize newName;
-
- at synthesize newName1;
-- (id) newName1 { return 0; }
-
- at synthesize newName2;
- at end
-
-void test35(void) {
-  extern void test36_helper(id*);
-  id x;
-  __strong id *xp = 0;
-
-  test36_helper(&x);
-  test36_helper(xp); // expected-error {{passing address of non-local object to __autoreleasing parameter for write-back}}
-
-  // rdar://problem/9665710
-  __block id y;
-  test36_helper(&y);
-  ^{ test36_helper(&y); }();
-
-  __strong int non_objc_type; // expected-warning {{'__strong' only applies to Objective-C object or block pointer types}} 
-}
-
-void test36(int first, ...) {
-  // <rdar://problem/9758798>
-  __builtin_va_list arglist;
-  __builtin_va_start(arglist, first);
-  id obj = __builtin_va_arg(arglist, id);
-  __builtin_va_end(arglist);
-}
-
- at class Test37; // expected-note{{forward declaration of class here}}
-void test37(Test37 *c) {
-  for (id y in c) { // expected-error {{collection expression type 'Test37' is a forward declaration}}
-    (void) y;
-  }
-
-  (void)sizeof(id*); // no error.
-}
-
-// rdar://problem/9887979
- at interface Test38
- at property int value;
- at end
-void test38() {
-  extern Test38 *test38_helper(void);
-  switch (test38_helper().value) {
-  case 0:
-  case 1:
-    ;
-  }
-}
-
-// rdar://10186536
- at class NSColor;
-void _NSCalc(NSColor* color, NSColor* bezelColors[]) __attribute__((unavailable("not available in automatic reference counting mode")));
-
-void _NSCalcBeze(NSColor* color, NSColor* bezelColors[]); // expected-error {{must explicitly describe intended ownership of an object array parameter}}
-
-// rdar://9970739
- at interface RestaurantTableViewCell
-- (void) restaurantLocation;
- at end
-
- at interface Radar9970739
-- (void) Meth;
- at end
-
- at implementation Radar9970739
-- (void) Meth { 
-  RestaurantTableViewCell *cell;
-  [cell restaurantLocatoin]; // expected-error {{no visible @interface for 'RestaurantTableViewCell' declares the selector 'restaurantLocatoin'}}
-}
- at end
-
-// rdar://11814185
- at interface Radar11814185
- at property (nonatomic, weak)  Radar11814185* picker1;
-+ alloc;
-- init;
- at end
-
- at implementation Radar11814185
-
- at synthesize picker1;
-
-- (void)viewDidLoad
-{
-    picker1 = [[Radar11814185 alloc] init]; // expected-warning {{assigning retained object to weak variable; object will be released after assignment}}
-    self.picker1 = [[Radar11814185 alloc] init]; // expected-warning {{assigning retained object to weak property; object will be released after assignment}}
-}
-
-+ alloc { return 0; }
-- init { return 0; }
- at end
-
-// <rdar://problem/12569201>.  Warn on cases of initializing a weak variable
-// with an Objective-C object literal.
-void rdar12569201(id key, id value) {
-    // Declarations.
-    __weak id x = @"foo"; // no-warning
-    __weak id y = @{ key : value }; // expected-warning {{assigning dictionary literal to a weak variable; object will be released after assignment}}
-    __weak id z = @[ value ]; // expected-warning {{assigning array literal to a weak variable; object will be released after assignment}}
-    __weak id b = ^() {}; // expected-warning {{assigning block literal to a weak variable; object will be released after assignment}}
-    __weak id n = @42; // expected-warning {{assigning numeric literal to a weak variable; object will be released after assignment}}
-    __weak id e = @(42); // expected-warning {{assigning numeric literal to a weak variable; object will be released after assignment}}
-    __weak id m = @(41 + 1); // expected-warning {{assigning boxed expression to a weak variable; object will be released after assignment}}
-    
-    // Assignments.
-    y = @{ key : value }; // expected-warning {{assigning dictionary literal to a weak variable; object will be released after assignment}}
-    z = @[ value ]; // expected-warning {{assigning array literal to a weak variable; object will be released after assignment}}
-    b = ^() {}; // expected-warning {{assigning block literal to a weak variable; object will be released after assignment}}
-    n = @42; // expected-warning {{assigning numeric literal to a weak variable; object will be released after assignment}}
-    e = @(42); // expected-warning {{assigning numeric literal to a weak variable; object will be released after assignment}}
-    m = @(41 + 1); // expected-warning {{assigning boxed expression to a weak variable; object will be released after assignment}}
-}
-
- at interface C
-- (void)method:(id[])objects; // expected-error{{must explicitly describe intended ownership of an object array parameter}}
- at end
-
-// rdar://13752880
- at interface NSMutableArray : NSArray @end
-
-typedef __strong NSMutableArray * PSNS;
-
-void test(NSArray *x) {
-  NSMutableArray *y = x; // expected-warning {{incompatible pointer types initializing 'NSMutableArray *' with an expression of type 'NSArray *'}}
-  __strong NSMutableArray *y1 = x; // expected-warning {{incompatible pointer types initializing 'NSMutableArray *' with an expression of type 'NSArray *'}}
-  PSNS y2 = x; // expected-warning {{incompatible pointer types initializing 'NSMutableArray *' with an expression of type 'NSArray *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/argument-checking.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/argument-checking.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/argument-checking.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-struct S { int a; };
-
-extern int charStarFunc(char *); // expected-note{{passing argument to parameter here}}
-extern int charFunc(char); // expected-note{{passing argument to parameter here}}
-
- at interface Test
-+alloc;
--(int)charStarMeth:(char *)s; // expected-note{{passing argument to parameter 's' here}}
--structMeth:(struct S)s; // expected-note{{passing argument to parameter 's' here}}
--structMeth:(struct S)s 
-   :(struct S)s2; // expected-note{{passing argument to parameter 's2' here}}
- at end
-
-void test() {
-  id obj = [Test alloc];
-  struct S sInst;
-
-  charStarFunc(1); // expected-warning {{incompatible integer to pointer conversion passing 'int' to parameter of type 'char *'}}
-  charFunc("abc"); // expected-warning {{incompatible pointer to integer conversion passing 'char [4]' to parameter of type 'char'}}
-
-  [obj charStarMeth:1]; // expected-warning {{incompatible integer to pointer conversion sending 'int'}}
-  [obj structMeth:1]; // expected-error {{sending 'int'}}
-  [obj structMeth:sInst :1]; // expected-error {{sending 'int'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/assign-rvalue-message.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/assign-rvalue-message.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/assign-rvalue-message.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://9005189
-
- at interface Foo 
- at end
-
-struct Bar {
-    int x;
-};
-
- at implementation Foo {
-    struct Bar bar;
-}
-
-- (const struct Bar)bar {
-    return bar;
-}
-
-- (void)baz {
-    bar.x = 0;
-    [self bar].x = 10; // expected-error {{assigning to 'readonly' return result of an Objective-C message not allowed}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/at-defs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/at-defs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/at-defs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 %s -fsyntax-only
-
- at interface Test {
-	double a;
-}
- at end
- at implementation Test
- at end
- at interface TestObject : Test {
- at public
-  float bar;
-  int foo;
-}
- at end
- at implementation TestObject
- at end
-struct wibble {
-  @defs(TestObject)
-};
-
-
-int main(void)
-{
-	TestObject * a = (id)malloc(100);
-	a->foo = 12;
-	printf("12: %d\n", ((struct wibble*)a)->foo);
-	printf("%d: %d\n", ((char*)&(((struct wibble*)a)->foo)) - (char*)a, ((char*)&(a->foo)) - (char*)a);
-	return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/atomoic-property-synnthesis-rules.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/atomoic-property-synnthesis-rules.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/atomoic-property-synnthesis-rules.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,377 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-/*
-  Conditions for warning:
-  1. the property is atomic
-  2. the current @implementation contains an @synthesize for the property
-  3. the current @implementation contains a hand-written setter XOR getter
-  4. the property is read-write
-  
-  Cases marked WARN should warn one the following:
-  warning: Atomic property 'x' has a synthesized setter and a 
-  manually-implemented getter, which may break atomicity.
-  warning: Atomic property 'x' has a synthesized getter and a 
-  manually-implemented setter, which may break atomicity.
-  
-  Cases not marked WARN only satisfy the indicated subset 
-  of the conditions required to warn.
-
-  There should be 8 warnings.
-*/
-
- at interface Foo 
-{
-    /* 12 4 */    int GetSet;
-    /* WARN */    int Get;
-    /* WARN */    int Set;
-    /* 12 4 */    int None;
-    /*  2 4 */    int GetSet_Nonatomic;
-    /*  234 */    int Get_Nonatomic;
-    /*  234 */    int Set_Nonatomic;
-    /*  2 4 */    int None_Nonatomic;
-
-    /* 12   */    int GetSet_ReadOnly;
-    /* 123  */    int Get_ReadOnly;
-    /* 123  */    int Set_ReadOnly;
-    /* 12   */    int None_ReadOnly;
-    /*  2   */    int GetSet_Nonatomic_ReadOnly;
-    /*  23  */    int Get_Nonatomic_ReadOnly;
-    /*  23  */    int Set_Nonatomic_ReadOnly;
-    /*  2   */    int None_Nonatomic_ReadOnly;
-
-    /* 12 4 */    int GetSet_ReadWriteInExt;
-    /* WARN */    int Get_ReadWriteInExt;
-    /* WARN */    int Set_ReadWriteInExt;
-    /* 12 4 */    int None_ReadWriteInExt;
-    /*  2 4 */    int GetSet_Nonatomic_ReadWriteInExt;
-    /*  234 */    int Get_Nonatomic_ReadWriteInExt;
-    /*  234 */    int Set_Nonatomic_ReadWriteInExt;
-    /*  2 4 */    int None_Nonatomic_ReadWriteInExt;
-
-
-    /* 12 4 */    int GetSet_LateSynthesize;
-    /* WARN */    int Get_LateSynthesize;
-    /* WARN */    int Set_LateSynthesize;
-    /* 12 4 */    int None_LateSynthesize;
-    /*  2 4 */    int GetSet_Nonatomic_LateSynthesize;
-    /*  234 */    int Get_Nonatomic_LateSynthesize;
-    /*  234 */    int Set_Nonatomic_LateSynthesize;
-    /*  2 4 */    int None_Nonatomic_LateSynthesize;
-
-    /* 12   */    int GetSet_ReadOnly_LateSynthesize;
-    /* 123  */    int Get_ReadOnly_LateSynthesize;
-    /* 123  */    int Set_ReadOnly_LateSynthesize;
-    /* 12   */    int None_ReadOnly_LateSynthesize;
-    /*  2   */    int GetSet_Nonatomic_ReadOnly_LateSynthesize;
-    /*  23  */    int Get_Nonatomic_ReadOnly_LateSynthesize;
-    /*  23  */    int Set_Nonatomic_ReadOnly_LateSynthesize;
-    /*  2   */    int None_Nonatomic_ReadOnly_LateSynthesize;
-
-    /* 12 4 */    int GetSet_ReadWriteInExt_LateSynthesize;
-    /* WARN */    int Get_ReadWriteInExt_LateSynthesize;
-    /* WARN */    int Set_ReadWriteInExt_LateSynthesize;
-    /* 12 4 */    int None_ReadWriteInExt_LateSynthesize;
-    /*  2 4 */    int GetSet_Nonatomic_ReadWriteInExt_LateSynthesize;
-    /*  234 */    int Get_Nonatomic_ReadWriteInExt_LateSynthesize;
-    /*  234 */    int Set_Nonatomic_ReadWriteInExt_LateSynthesize;
-    /*  2 4 */    int None_Nonatomic_ReadWriteInExt_LateSynthesize;
-
-
-    /* 1  4 */    int GetSet_NoSynthesize;
-    /* 1 34 */    int Get_NoSynthesize;
-    /* 1 34 */    int Set_NoSynthesize;
-    /* 1  4 */    int None_NoSynthesize;
-    /*    4 */    int GetSet_Nonatomic_NoSynthesize;
-    /*   34 */    int Get_Nonatomic_NoSynthesize;
-    /*   34 */    int Set_Nonatomic_NoSynthesize;
-    /*    4 */    int None_Nonatomic_NoSynthesize;
-
-    /* 1    */    int GetSet_ReadOnly_NoSynthesize;
-    /* 1 3  */    int Get_ReadOnly_NoSynthesize;
-    /* 1 3  */    int Set_ReadOnly_NoSynthesize;
-    /* 1    */    int None_ReadOnly_NoSynthesize;
-    /*      */    int GetSet_Nonatomic_ReadOnly_NoSynthesize;
-    /*   3  */    int Get_Nonatomic_ReadOnly_NoSynthesize;
-    /*   3  */    int Set_Nonatomic_ReadOnly_NoSynthesize;
-    /*      */    int None_Nonatomic_ReadOnly_NoSynthesize;
-
-    /* 1  4 */    int GetSet_ReadWriteInExt_NoSynthesize;
-    /* 1 34 */    int Get_ReadWriteInExt_NoSynthesize;
-    /* 1 34 */    int Set_ReadWriteInExt_NoSynthesize;
-    /* 1  4 */    int None_ReadWriteInExt_NoSynthesize;
-    /*    4 */    int GetSet_Nonatomic_ReadWriteInExt_NoSynthesize;
-    /*   34 */    int Get_Nonatomic_ReadWriteInExt_NoSynthesize;
-    /*   34 */    int Set_Nonatomic_ReadWriteInExt_NoSynthesize;
-    /*    4 */    int None_Nonatomic_ReadWriteInExt_NoSynthesize;
-}
-
-// read-write - might warn
- at property int GetSet;
- at property int Get;	// expected-note {{property declared here}} \
-                        // expected-note {{setter and getter must both be synthesized}}
- at property int Set;	// expected-note {{property declared here}} \
-                        // expected-note {{setter and getter must both be synthesized}}
- at property int None;
- at property(nonatomic) int GetSet_Nonatomic;
- at property(nonatomic) int Get_Nonatomic;
- at property(nonatomic) int Set_Nonatomic;
- at property(nonatomic) int None_Nonatomic;
-
-// read-only - must not warn
- at property(readonly) int GetSet_ReadOnly;
- at property(readonly) int Get_ReadOnly;
- at property(readonly) int Set_ReadOnly;
- at property(readonly) int None_ReadOnly;
- at property(nonatomic,readonly) int GetSet_Nonatomic_ReadOnly;
- at property(nonatomic,readonly) int Get_Nonatomic_ReadOnly;
- at property(nonatomic,readonly) int Set_Nonatomic_ReadOnly;
- at property(nonatomic,readonly) int None_Nonatomic_ReadOnly;
-
-// read-only in class, read-write in class extension - might warn
- at property(readonly) int GetSet_ReadWriteInExt;
- at property(readonly) int Get_ReadWriteInExt;	// expected-note {{property declared here}} \
-                                                // expected-note {{setter and getter must both be synthesized}}
- at property(readonly) int Set_ReadWriteInExt;	// expected-note {{property declared here}} \
-                                                // expected-note {{setter and getter must both be synthesized}}
- at property(readonly) int None_ReadWriteInExt;
- at property(nonatomic,readonly) int GetSet_Nonatomic_ReadWriteInExt;
- at property(nonatomic,readonly) int Get_Nonatomic_ReadWriteInExt;
- at property(nonatomic,readonly) int Set_Nonatomic_ReadWriteInExt;
- at property(nonatomic,readonly) int None_Nonatomic_ReadWriteInExt;
-
-
-// same as above, but @synthesize follows the hand-written methods - might warn
- at property int GetSet_LateSynthesize;
- at property int Get_LateSynthesize;	// expected-note {{property declared here}} \
-                                        // expected-note {{setter and getter must both be synthesized}}
- at property int Set_LateSynthesize;	// expected-note {{property declared here}} \
-                                        // expected-note {{setter and getter must both be synthesized}}
- at property int None_LateSynthesize;
- at property(nonatomic) int GetSet_Nonatomic_LateSynthesize;
- at property(nonatomic) int Get_Nonatomic_LateSynthesize;
- at property(nonatomic) int Set_Nonatomic_LateSynthesize;
- at property(nonatomic) int None_Nonatomic_LateSynthesize;
-
- at property(readonly) int GetSet_ReadOnly_LateSynthesize;
- at property(readonly) int Get_ReadOnly_LateSynthesize;
- at property(readonly) int Set_ReadOnly_LateSynthesize;
- at property(readonly) int None_ReadOnly_LateSynthesize;
- at property(nonatomic,readonly) int GetSet_Nonatomic_ReadOnly_LateSynthesize;
- at property(nonatomic,readonly) int Get_Nonatomic_ReadOnly_LateSynthesize;
- at property(nonatomic,readonly) int Set_Nonatomic_ReadOnly_LateSynthesize;
- at property(nonatomic,readonly) int None_Nonatomic_ReadOnly_LateSynthesize;
-
- at property(readonly) int GetSet_ReadWriteInExt_LateSynthesize;
- at property(readonly) int Get_ReadWriteInExt_LateSynthesize;	// expected-note {{property declared here}} \
-                                                                // expected-note {{setter and getter must both be synthesized}}
- at property(readonly) int Set_ReadWriteInExt_LateSynthesize;	// expected-note {{property declared here}} \
-                                                                // expected-note {{setter and getter must both be synthesized}}
- at property(readonly) int None_ReadWriteInExt_LateSynthesize;
- at property(nonatomic,readonly) int GetSet_Nonatomic_ReadWriteInExt_LateSynthesize;
- at property(nonatomic,readonly) int Get_Nonatomic_ReadWriteInExt_LateSynthesize;
- at property(nonatomic,readonly) int Set_Nonatomic_ReadWriteInExt_LateSynthesize;
- at property(nonatomic,readonly) int None_Nonatomic_ReadWriteInExt_LateSynthesize;
-
-
-// same as above, but with no @synthesize - must not warn
- at property int GetSet_NoSynthesize;
- at property int Get_NoSynthesize;
- at property int Set_NoSynthesize;
- at property int None_NoSynthesize;
- at property(nonatomic) int GetSet_Nonatomic_NoSynthesize;
- at property(nonatomic) int Get_Nonatomic_NoSynthesize;
- at property(nonatomic) int Set_Nonatomic_NoSynthesize;
- at property(nonatomic) int None_Nonatomic_NoSynthesize;
-
- at property(readonly) int GetSet_ReadOnly_NoSynthesize;
- at property(readonly) int Get_ReadOnly_NoSynthesize;
- at property(readonly) int Set_ReadOnly_NoSynthesize;
- at property(readonly) int None_ReadOnly_NoSynthesize;
- at property(nonatomic,readonly) int GetSet_Nonatomic_ReadOnly_NoSynthesize;
- at property(nonatomic,readonly) int Get_Nonatomic_ReadOnly_NoSynthesize;
- at property(nonatomic,readonly) int Set_Nonatomic_ReadOnly_NoSynthesize;
- at property(nonatomic,readonly) int None_Nonatomic_ReadOnly_NoSynthesize;
-
- at property(readonly) int GetSet_ReadWriteInExt_NoSynthesize;
- at property(readonly) int Get_ReadWriteInExt_NoSynthesize;
- at property(readonly) int Set_ReadWriteInExt_NoSynthesize;
- at property(readonly) int None_ReadWriteInExt_NoSynthesize;
- at property(nonatomic,readonly) int GetSet_Nonatomic_ReadWriteInExt_NoSynthesize;
- at property(nonatomic,readonly) int Get_Nonatomic_ReadWriteInExt_NoSynthesize;
- at property(nonatomic,readonly) int Set_Nonatomic_ReadWriteInExt_NoSynthesize;
- at property(nonatomic,readonly) int None_Nonatomic_ReadWriteInExt_NoSynthesize;
-
- at end
-
-
- at interface Foo ()
-
- at property(readwrite) int GetSet_ReadWriteInExt;
- at property(readwrite) int Get_ReadWriteInExt;
- at property(readwrite) int Set_ReadWriteInExt;
- at property(readwrite) int None_ReadWriteInExt;
- at property(nonatomic,readwrite) int GetSet_Nonatomic_ReadWriteInExt;
- at property(nonatomic,readwrite) int Get_Nonatomic_ReadWriteInExt;
- at property(nonatomic,readwrite) int Set_Nonatomic_ReadWriteInExt;
- at property(nonatomic,readwrite) int None_Nonatomic_ReadWriteInExt;
-
- at property(readwrite) int GetSet_ReadWriteInExt_LateSynthesize;
- at property(readwrite) int Get_ReadWriteInExt_LateSynthesize;
- at property(readwrite) int Set_ReadWriteInExt_LateSynthesize;
- at property(readwrite) int None_ReadWriteInExt_LateSynthesize;
- at property(nonatomic,readwrite) int GetSet_Nonatomic_ReadWriteInExt_LateSynthesize;
- at property(nonatomic,readwrite) int Get_Nonatomic_ReadWriteInExt_LateSynthesize;
- at property(nonatomic,readwrite) int Set_Nonatomic_ReadWriteInExt_LateSynthesize;
- at property(nonatomic,readwrite) int None_Nonatomic_ReadWriteInExt_LateSynthesize;
-
- at property(readwrite) int GetSet_ReadWriteInExt_NoSynthesize;
- at property(readwrite) int Get_ReadWriteInExt_NoSynthesize;
- at property(readwrite) int Set_ReadWriteInExt_NoSynthesize;
- at property(readwrite) int None_ReadWriteInExt_NoSynthesize;
- at property(nonatomic,readwrite) int GetSet_Nonatomic_ReadWriteInExt_NoSynthesize;
- at property(nonatomic,readwrite) int Get_Nonatomic_ReadWriteInExt_NoSynthesize;
- at property(nonatomic,readwrite) int Set_Nonatomic_ReadWriteInExt_NoSynthesize;
- at property(nonatomic,readwrite) int None_Nonatomic_ReadWriteInExt_NoSynthesize;
-
- at end
-
- at implementation Foo
-
- at synthesize GetSet, Get, Set, None, GetSet_Nonatomic, Get_Nonatomic, Set_Nonatomic, None_Nonatomic;
- at synthesize GetSet_ReadOnly, Get_ReadOnly, Set_ReadOnly, None_ReadOnly, GetSet_Nonatomic_ReadOnly, Get_Nonatomic_ReadOnly, Set_Nonatomic_ReadOnly, None_Nonatomic_ReadOnly;
- at synthesize GetSet_ReadWriteInExt, Get_ReadWriteInExt, Set_ReadWriteInExt, None_ReadWriteInExt, GetSet_Nonatomic_ReadWriteInExt, Get_Nonatomic_ReadWriteInExt, Set_Nonatomic_ReadWriteInExt, None_Nonatomic_ReadWriteInExt;
-
-#define GET(x) \
-    -(int) x { return self->x; }  
-#define SET(x) \
-    -(void) set##x:(int)value { self->x = value; }  
-
-GET(GetSet)
-SET(GetSet)
-GET(Get) // expected-warning {{writable atomic property 'Get' cannot pair a synthesized setter with a user defined getter}} 
-SET(Set) // expected-warning {{writable atomic property 'Set' cannot pair a synthesized getter with a user defined setter}}
-GET(GetSet_Nonatomic)
-SET(GetSet_Nonatomic)
-GET(Get_Nonatomic)
-SET(Set_Nonatomic)
-
-GET(GetSet_ReadOnly)
-SET(GetSet_ReadOnly)
-GET(Get_ReadOnly)
-SET(Set_ReadOnly)
-GET(GetSet_Nonatomic_ReadOnly)
-SET(GetSet_Nonatomic_ReadOnly)
-GET(Get_Nonatomic_ReadOnly)
-SET(Set_Nonatomic_ReadOnly)
-
-GET(GetSet_ReadWriteInExt)
-SET(GetSet_ReadWriteInExt)
-GET(Get_ReadWriteInExt) // expected-warning {{writable atomic property 'Get_ReadWriteInExt' cannot pair a synthesized setter with a user defined getter}} 
-SET(Set_ReadWriteInExt) // expected-warning {{writable atomic property 'Set_ReadWriteInExt' cannot pair a synthesized getter with a user defined setter}}
-GET(GetSet_Nonatomic_ReadWriteInExt)
-SET(GetSet_Nonatomic_ReadWriteInExt)
-GET(Get_Nonatomic_ReadWriteInExt)
-SET(Set_Nonatomic_ReadWriteInExt)
-
-
-GET(GetSet_LateSynthesize)
-SET(GetSet_LateSynthesize)
-GET(Get_LateSynthesize) // expected-warning {{writable atomic property 'Get_LateSynthesize' cannot pair a synthesized setter with a user defined getter}} 
-SET(Set_LateSynthesize) // expected-warning {{writable atomic property 'Set_LateSynthesize' cannot pair a synthesized getter with a user defined setter}}
-GET(GetSet_Nonatomic_LateSynthesize)
-SET(GetSet_Nonatomic_LateSynthesize)
-GET(Get_Nonatomic_LateSynthesize)
-SET(Set_Nonatomic_LateSynthesize)
-
-GET(GetSet_ReadOnly_LateSynthesize)
-SET(GetSet_ReadOnly_LateSynthesize)
-GET(Get_ReadOnly_LateSynthesize)
-SET(Set_ReadOnly_LateSynthesize)
-GET(GetSet_Nonatomic_ReadOnly_LateSynthesize)
-SET(GetSet_Nonatomic_ReadOnly_LateSynthesize)
-GET(Get_Nonatomic_ReadOnly_LateSynthesize)
-SET(Set_Nonatomic_ReadOnly_LateSynthesize)
-
-GET(GetSet_ReadWriteInExt_LateSynthesize)
-SET(GetSet_ReadWriteInExt_LateSynthesize)
-GET(Get_ReadWriteInExt_LateSynthesize) // expected-warning {{writable atomic property 'Get_ReadWriteInExt_LateSynthesize' cannot pair a synthesized setter with a user defined getter}}
-SET(Set_ReadWriteInExt_LateSynthesize) // expected-warning {{writable atomic property 'Set_ReadWriteInExt_LateSynthesize' cannot pair a synthesized getter with a user defined setter}}
-GET(GetSet_Nonatomic_ReadWriteInExt_LateSynthesize)
-SET(GetSet_Nonatomic_ReadWriteInExt_LateSynthesize)
-GET(Get_Nonatomic_ReadWriteInExt_LateSynthesize)
-SET(Set_Nonatomic_ReadWriteInExt_LateSynthesize)
-
-
-GET(GetSet_NoSynthesize)
-SET(GetSet_NoSynthesize)
-GET(Get_NoSynthesize)
-SET(Set_NoSynthesize)
-GET(GetSet_Nonatomic_NoSynthesize)
-SET(GetSet_Nonatomic_NoSynthesize)
-GET(Get_Nonatomic_NoSynthesize)
-SET(Set_Nonatomic_NoSynthesize)
-
-GET(GetSet_ReadOnly_NoSynthesize)
-SET(GetSet_ReadOnly_NoSynthesize)
-GET(Get_ReadOnly_NoSynthesize)
-SET(Set_ReadOnly_NoSynthesize)
-GET(GetSet_Nonatomic_ReadOnly_NoSynthesize)
-SET(GetSet_Nonatomic_ReadOnly_NoSynthesize)
-GET(Get_Nonatomic_ReadOnly_NoSynthesize)
-SET(Set_Nonatomic_ReadOnly_NoSynthesize)
-
-GET(GetSet_ReadWriteInExt_NoSynthesize)
-SET(GetSet_ReadWriteInExt_NoSynthesize)
-GET(Get_ReadWriteInExt_NoSynthesize)
-SET(Set_ReadWriteInExt_NoSynthesize)
-GET(GetSet_Nonatomic_ReadWriteInExt_NoSynthesize)
-SET(GetSet_Nonatomic_ReadWriteInExt_NoSynthesize)
-GET(Get_Nonatomic_ReadWriteInExt_NoSynthesize)
-SET(Set_Nonatomic_ReadWriteInExt_NoSynthesize)
-
-
-// late synthesize - follows getter/setter implementations
-
- at synthesize GetSet_LateSynthesize, Get_LateSynthesize, Set_LateSynthesize, None_LateSynthesize, GetSet_Nonatomic_LateSynthesize, Get_Nonatomic_LateSynthesize, Set_Nonatomic_LateSynthesize, None_Nonatomic_LateSynthesize;
- at synthesize GetSet_ReadOnly_LateSynthesize, Get_ReadOnly_LateSynthesize, Set_ReadOnly_LateSynthesize, None_ReadOnly_LateSynthesize, GetSet_Nonatomic_ReadOnly_LateSynthesize, Get_Nonatomic_ReadOnly_LateSynthesize, Set_Nonatomic_ReadOnly_LateSynthesize, None_Nonatomic_ReadOnly_LateSynthesize;
- at synthesize GetSet_ReadWriteInExt_LateSynthesize, Get_ReadWriteInExt_LateSynthesize, Set_ReadWriteInExt_LateSynthesize, None_ReadWriteInExt_LateSynthesize, GetSet_Nonatomic_ReadWriteInExt_LateSynthesize, Get_Nonatomic_ReadWriteInExt_LateSynthesize, Set_Nonatomic_ReadWriteInExt_LateSynthesize, None_Nonatomic_ReadWriteInExt_LateSynthesize;
-
-// no synthesize - use dynamic instead
-
- at dynamic GetSet_NoSynthesize, Get_NoSynthesize, Set_NoSynthesize, None_NoSynthesize, GetSet_Nonatomic_NoSynthesize, Get_Nonatomic_NoSynthesize, Set_Nonatomic_NoSynthesize, None_Nonatomic_NoSynthesize;
- at dynamic GetSet_ReadOnly_NoSynthesize, Get_ReadOnly_NoSynthesize, Set_ReadOnly_NoSynthesize, None_ReadOnly_NoSynthesize, GetSet_Nonatomic_ReadOnly_NoSynthesize, Get_Nonatomic_ReadOnly_NoSynthesize, Set_Nonatomic_ReadOnly_NoSynthesize, None_Nonatomic_ReadOnly_NoSynthesize;
- at dynamic GetSet_ReadWriteInExt_NoSynthesize, Get_ReadWriteInExt_NoSynthesize, Set_ReadWriteInExt_NoSynthesize, None_ReadWriteInExt_NoSynthesize, GetSet_Nonatomic_ReadWriteInExt_NoSynthesize, Get_Nonatomic_ReadWriteInExt_NoSynthesize, Set_Nonatomic_ReadWriteInExt_NoSynthesize, None_Nonatomic_ReadWriteInExt_NoSynthesize;
-
- at end
-
-/*
-// the following method should cause a warning along the lines of
-// :warning: Atomic property 'x' cannot pair a synthesized setter/getter with a manually implemented setter/getter
-- (void) setX: (int) aValue
-{
-    x = aValue;
-}
-
-// no warning 'cause this is nonatomic
-- (void) setY: (int) aValue
-{
-    y = aValue;
-}
-
-// the following method should cause a warning along the lines of
-// :warning: Atomic property 'x' cannot pair a synthesized setter/getter with a manually implemented setter/getter
-- (int) j
-{
-    return j;
-}
-
-// no warning 'cause this is nonatomic
-- (int) k
-{
-    return k;
-}
- at end
-*/
-int main (int argc, const char * argv[]) {
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-availability.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-availability.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-availability.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9.0.0 -fsyntax-only -verify %s
-
- at protocol P
-- (void)proto_method __attribute__((availability(macosx,introduced=10.1,deprecated=10.2))); // expected-note 2 {{method 'proto_method' declared here}}
- at end
-
- at interface A <P>
-- (void)method __attribute__((availability(macosx,introduced=10.1,deprecated=10.2))); // expected-note {{method 'method' declared here}}
-
-- (void)overridden __attribute__((availability(macosx,introduced=10.3))); // expected-note{{overridden method is here}}
-- (void)overridden2 __attribute__((availability(macosx,introduced=10.3)));
-- (void)overridden3 __attribute__((availability(macosx,deprecated=10.3)));
-- (void)overridden4 __attribute__((availability(macosx,deprecated=10.3))); // expected-note{{overridden method is here}}
-- (void)overridden5 __attribute__((availability(macosx,unavailable)));
-- (void)overridden6 __attribute__((availability(macosx,introduced=10.3))); // expected-note{{overridden method is here}}
- at end
-
-// rdar://11475360
- at interface B : A
-- (void)method; // NOTE: we expect 'method' to *not* inherit availability.
-- (void)overridden __attribute__((availability(macosx,introduced=10.4))); // expected-warning{{overriding method introduced after overridden method on OS X (10.4 vs. 10.3)}}
-- (void)overridden2 __attribute__((availability(macosx,introduced=10.2)));
-- (void)overridden3 __attribute__((availability(macosx,deprecated=10.4)));
-- (void)overridden4 __attribute__((availability(macosx,deprecated=10.2))); // expected-warning{{overriding method deprecated before overridden method on OS X (10.3 vs. 10.2)}}
-- (void)overridden5 __attribute__((availability(macosx,introduced=10.3)));
-- (void)overridden6 __attribute__((availability(macosx,unavailable))); // expected-warning{{overriding method cannot be unavailable on OS X when its overridden method is available}}
- at end
-
-void f(A *a, B *b) {
-  [a method]; // expected-warning{{'method' is deprecated: first deprecated in OS X 10.2}}
-  [b method]; // no-warning
-  [a proto_method]; // expected-warning{{'proto_method' is deprecated: first deprecated in OS X 10.2}}
-  [b proto_method]; // expected-warning{{'proto_method' is deprecated: first deprecated in OS X 10.2}}
-}
-
-// Test case for <rdar://problem/11627873>.  Warn about
-// using a deprecated method when that method is re-implemented in a
-// subclass where the redeclared method is not deprecated.
- at interface C
-- (void) method __attribute__((availability(macosx,introduced=10.1,deprecated=10.2))); // expected-note {{method 'method' declared here}}
- at end
-
- at interface D : C
-- (void) method;
- at end
-
- at interface E : D
-- (void) method;
- at end
-
- at implementation D
-- (void) method {
-  [super method]; // expected-warning {{'method' is deprecated: first deprecated in OS X 10.2}}
-}
- at end
-
- at implementation E
-- (void) method {
-  [super method]; // no-warning
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-cleanup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-cleanup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-cleanup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// expected-no-diagnostics
-
- at class NSString;
-
-void c1(id *a);
-
-void t1()
-{
-  NSString *s __attribute((cleanup(c1)));
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-deprecated.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-deprecated.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-deprecated.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,156 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface A {
-  int X __attribute__((deprecated)); // expected-note 2 {{declared here}}
-}
-+ (void)F __attribute__((deprecated)); // expected-note 2 {{declared here}}
-- (void)f __attribute__((deprecated)); // expected-note 4 {{declared here}}
- at end
-
- at implementation A
-+ (void)F __attribute__((deprecated))
-{
-  [self F]; // no warning, since the caller is also deprecated.
-}
-
-- (void)g
-{
-  X++;        // expected-warning{{'X' is deprecated}}
-  self->X++;  // expected-warning{{'X' is deprecated}}
-  [self f]; // expected-warning{{'f' is deprecated}}
-}
-
-- (void)f
-{
-  [self f]; // no warning, the caller is deprecated in its interface.
-}
- at end
-
- at interface B: A
- at end
-  
- at implementation B
-+ (void)G
-{
-  [super F]; // expected-warning{{'F' is deprecated}}
-}
-
-- (void)g
-{
-  [super f]; // // expected-warning{{'f' is deprecated}}
-}
- at end
-
- at protocol P
-- (void)p __attribute__((deprecated)); // expected-note {{declared here}}
- at end
-
-void t1(A *a)
-{
-  [A F]; // expected-warning{{'F' is deprecated}}
-  [a f]; // expected-warning{{'f' is deprecated}}
-}
-
-void t2(id a)
-{
-  [a f];
-}
-
-void t3(A<P>* a)
-{
-  [a f]; // expected-warning{{'f' is deprecated}}
-  [a p]; // expected-warning{{'p' is deprecated}}
-} 
-
-void t4(Class c)
-{
-  [c F];
-}
-
-
-
- at interface Bar 
-
- at property (assign, setter = MySetter:) int FooBar __attribute__ ((deprecated)); // expected-note 2 {{declared here}}
-- (void) MySetter : (int) value;
- at end
-
-int t5() {
-  Bar *f;
-  f.FooBar = 1;	   // expected-warning {{'FooBar' is deprecated}}
-  return f.FooBar; // expected-warning {{'FooBar' is deprecated}}
-}
-
-
-__attribute ((deprecated))  
- at interface DEPRECATED { // expected-note 2 {{declared here}}
-  @public int ivar; 
-  DEPRECATED *ivar2; // no warning.
-} 
-- (int) instancemethod;
-- (DEPRECATED *) meth; // no warning.
- at property  int prop; 
- at end
-
- at interface DEPRECATED (Category) // no warning.
-- (DEPRECATED *) meth2; // no warning.
- at end
-
- at interface DEPRECATED (Category2) // no warning.
- at end
-
- at implementation DEPRECATED (Category2) // expected-warning {{'DEPRECATED' is deprecated}}
- at end
-
- at interface NS : DEPRECATED  // expected-warning {{'DEPRECATED' is deprecated}}
- at end
-
-
- at interface Test2
- at property int test2 __attribute__((deprecated)); // expected-note 4 {{declared here}} \
-						 // expected-note 2 {{property 'test2' is declared deprecated here}}
- at end
-
-void test(Test2 *foo) {
-  int x;
-  x = foo.test2; // expected-warning {{'test2' is deprecated}}
-  x = [foo test2]; // expected-warning {{'test2' is deprecated}}
-  foo.test2 = x; // expected-warning {{'test2' is deprecated}}
-  [foo setTest2: x]; // expected-warning {{'setTest2:' is deprecated}}
-}
-
-__attribute__((deprecated))
- at interface A(Blah) // expected-error{{attributes may not be specified on a category}}
- at end
-
-
-typedef struct {
-	int x;
-} footype __attribute((deprecated)); // expected-note 2 {{declared here}}
-
- at interface foo {
-	footype a; // expected-warning {{'footype' is deprecated}}
-	footype b __attribute((deprecated));
-}
- at property footype c; // expected-warning {{'footype' is deprecated}}
- at property footype d __attribute((deprecated));
- at end
-
-// rdar://13569424
- at interface NewI
-+(void)cmeth;
- at end
-
-typedef NewI DeprI __attribute__((deprecated("blah"))); // expected-note 4 {{'DeprI' declared here}}
-
- at interface SI : DeprI // expected-warning {{'DeprI' is deprecated: blah}}
--(DeprI*)meth; // expected-warning {{'DeprI' is deprecated: blah}}
- at end
-
- at implementation SI
--(DeprI*)meth { // expected-warning {{'DeprI' is deprecated: blah}}
-  [DeprI cmeth]; // expected-warning {{'DeprI' is deprecated: blah}}
-  return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-malloc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-malloc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-malloc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -fblocks %s
-
- at interface TestAttrMallocOnMethods {}
-- (id) test1 __attribute((malloc)); //  expected-warning {{functions returning a pointer type}}
-- (int) test2 __attribute((malloc)); //  expected-warning {{functions returning a pointer type}}
- at end
-
-id bar(void) __attribute((malloc)); // no-warning
-
-typedef void (^bptr)(void);
-bptr baz(void) __attribute((malloc)); // no-warning
-
-__attribute((malloc)) id (*f)(); //  expected-warning {{functions returning a pointer type}}
-__attribute((malloc)) bptr (*g)(); //  expected-warning {{functions returning a pointer type}}
-__attribute((malloc)) void *(^h)(); //  expected-warning {{functions returning a pointer type}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-ns-bridged.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-ns-bridged.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-ns-bridged.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef struct __attribute__((ns_bridged)) test0s *test0ref;
-
-void test0func(void) __attribute__((ns_bridged)); // expected-error {{'ns_bridged' attribute only applies to structs}}
-
-union __attribute__((ns_bridged)) test0u; // expected-error {{'ns_bridged' attribute only applies to structs}}
-
-struct __attribute__((ns_bridged(Test1))) test1s;
-
- at class Test2;
-struct __attribute__((ns_bridged(Test2))) test2s;
-
-void Test3(void); // expected-note {{declared here}}
-struct __attribute__((ns_bridged(Test3))) test3s; // expected-error {{parameter of 'ns_bridged' attribute does not name an Objective-C class}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-objc-exception.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-objc-exception.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-objc-exception.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-__attribute__((__objc_exception__))
- at interface NSException {
-  int x;
-}
-
- at end
-
-
-__attribute__((__objc_exception__)) // expected-error {{attribute may only be applied to an Objective-C interface}}
-int X;
-
-__attribute__((__objc_exception__)) // expected-error {{attribute may only be applied to an Objective-C interface}}
-void foo();
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-objc-gc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-objc-gc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-objc-gc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
-static id __attribute((objc_gc(weak))) a;
-static id __attribute((objc_gc(strong))) b;
-
-static id __attribute((objc_gc())) c; // expected-error{{'objc_gc' attribute requires parameter 1 to be a string}}
-static id __attribute((objc_gc(123))) d; // expected-error{{'objc_gc' attribute requires parameter 1 to be a string}}
-static id __attribute((objc_gc(foo, 456))) e; // expected-error{{attribute takes one argument}}
-static id __attribute((objc_gc(hello))) f; // expected-warning{{'objc_gc' attribute argument not supported: 'hello'}}
-
-static int __attribute__((objc_gc(weak))) g; // expected-warning {{'objc_gc' only applies to pointer types; type here is 'int'}}
-
-static __weak int h; // expected-warning {{'__weak' only applies to pointer types; type here is 'int'}}
-
-// TODO: it would be great if this reported as __weak
-#define WEAK __weak
-static WEAK int h; // expected-warning {{'objc_gc' only applies to pointer types; type here is 'int'}}
-
-/* expected-warning {{'__weak' only applies to pointer types; type here is 'int'}}*/ static __we\
-ak int i;
-
-// rdar://problem/9126213
-void test2(id __attribute((objc_gc(strong))) *strong,
-           id __attribute((objc_gc(weak))) *weak) {
-  void *opaque;
-  opaque = strong;
-  strong = opaque;
-
-  opaque = weak;
-  weak = opaque;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-root-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-root-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/attr-root-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wattributes -Wobjc-root-class %s
- at interface RootClass {} // expected-warning {{class 'RootClass' defined without specifying a base class}} \
-                        // expected-note {{add a super class to fix this problem}}
- at end
- at implementation RootClass
- at end
-
-__attribute__((objc_root_class))
- at interface NonRootClass : RootClass   // expected-error {{objc_root_class attribute may only be specified on a root class declaration}}
- at end
- at implementation NonRootClass
- at end
-
-__attribute__((objc_root_class)) static void nonClassDeclaration()  // expected-error {{attribute may only be applied to an Objective-C interface}}
-{
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/autoreleasepool.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/autoreleasepool.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/autoreleasepool.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-void *objc_autoreleasepool_push();
-void autoreleasepool_pop(void*);
-
- at interface AUTORP @end
-
- at implementation AUTORP
-- (void) unregisterTask:(id) task {
-  goto L;	// expected-error {{goto into protected scope}}
-
-  @autoreleasepool { // expected-note {{jump bypasses auto release push of @autoreleasepool block}}
-        void *tmp = objc_autoreleasepool_push();
-        L:
-        autoreleasepool_pop(tmp);
-        @autoreleasepool {
-          return;
-        }
-  }
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/bad-property-synthesis-crash.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/bad-property-synthesis-crash.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/bad-property-synthesis-crash.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://10177744
-
- at interface Foo
- at property (nonatomic, retain) NSString* what; // expected-error {{unknown type name 'NSString'}} \
-                                              // expected-error {{property with}} \
-                                              // expected-note {{previous definition is here}}
- at end
- 
- at implementation Foo
-- (void) setWhat: (NSString*) value { // expected-error {{expected a type}} \
-                                      // expected-warning {{conflicting parameter types in implementation of}}
-  __what; // expected-error {{use of undeclared identifier}} \
-          // expected-warning {{expression result unused}}
-}
- at synthesize what; // expected-note 2 {{'what' declared here}}
- at end
-
- at implementation Bar // expected-warning {{cannot find interface declaration for}}
-- (NSString*) what { // expected-error {{expected a type}}
-  return __what; // expected-error {{use of undeclared identifier}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/bad-receiver-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/bad-receiver-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/bad-receiver-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface I
-- (id) retain;
- at end
-
-int objc_lookUpClass(const char*);
-
-void __raiseExc1() {
- [objc_lookUpClass("NSString") retain]; // expected-warning {{receiver type 'int' is not 'id'}}
-}
-
-typedef const struct __CFString * CFStringRef;
-
-void func() {
-  CFStringRef obj;
-
-  [obj self]; // expected-warning {{receiver type 'CFStringRef' (aka 'const struct __CFString *') is not 'id'}} \\
-                 expected-warning {{method '-self' not found}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/block-as-object.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/block-as-object.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/block-as-object.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fblocks
-// expected-no-diagnostics
-
- at interface Whatever
-- copy;
- at end
-
-typedef long (^MyBlock)(id obj1, id obj2);
-
-void foo(MyBlock b) {
-    id bar = [b copy];
-}
-
-void foo2(id b) {
-}
-
-void foo3(void (^block)(void)) {
-    foo2(block);
-    id x;
-    foo(x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/block-attr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/block-attr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/block-attr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks -fobjc-gc-only %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks -fobjc-gc-only %s
-
- at interface Thing  {}
-
- at property void(^someBlock)(void); // expected-warning {{'copy' attribute must be specified for the block property}}
- at property(copy)  void(^OK)(void);
-
-// rdar://8820813
- at property (readonly) void (^block)(void); // readonly property is OK
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/block-explicit-return-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/block-explicit-return-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/block-explicit-return-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -fblocks
-// FIXME: should compile
-// Test for blocks with explicit return type specified.
-
-typedef float * PF;
-float gf;
-
- at interface NSView
-  - (id) some_method_that_returns_id;
- at end
-
-NSView *some_object;
-
-void some_func (NSView * (^) (id));
-
-typedef struct dispatch_item_s *dispatch_item_t;
-typedef void (^completion_block_t)(void);
-
-typedef double (^myblock)(int);
-double test(myblock I);
-
-int main() {
-  __block int x = 1;
-  __block int y = 2;
-
-  (void)^void *{ return 0; };
-
-  (void)^float(float y){ return y; };
-
-  (void)^double (float y, double d) {
-    if (y)
-      return d;
-    else
-      return y;
-  };
-
-  const char * (^chb) (int flag, const char *arg, char *arg1) = ^ const char * (int flag, const char *arg, char *arg1) {
-    if (flag)
-      return 0;
-    if (flag == 1)
-      return arg;
-    else if (flag == 2)
-      return "";
-    return arg1; 
-  };
-
-  (void)^PF { return &gf; };
-
-  some_func(^ NSView * (id whatever) { return [some_object some_method_that_returns_id]; });
-
-  double res = test(^(int z){x = y+z; return (double)z; });
-}
-
-void func() {
-  completion_block_t X;
-
-  completion_block_t (^blockx)(dispatch_item_t) = ^completion_block_t (dispatch_item_t item) {
-    return X;
-  };
-
-  completion_block_t (^blocky)(dispatch_item_t) = ^(dispatch_item_t item) {
-    return X;
-  };
-
-  blockx = blocky;
-}
-
-
-// intent: block taking int returning block that takes char,int and returns int
-int (^(^block)(double x))(char, short);
-
-void foo() {
-   int one = 1;
-   block = ^(double x){ return ^(char c, short y) { return one + c + y; };};  // expected-error {{returning block that lives on the local stack}}
-   // or:
-   block = ^(double x){ return ^(char c, short y) { return one + (int)c + y; };};  // expected-error {{returning block that lives on the local stack}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/block-id-as-block-argtype.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/block-id-as-block-argtype.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/block-id-as-block-argtype.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify -fblocks
-// rdar://10734265
-
- at class NSObject;
-typedef void (^block1_t)(int arg);
-typedef void (^block2_t)(block1_t arg);
-typedef void (^block3_t)(NSObject *arg);
-typedef void (^block4_t)(id arg);
-
-void fn(block4_t arg); // expected-note {{passing argument to parameter 'arg' here}}
-
-void another_fn(block2_t arg);
-
-int main() {
-    block1_t b1;
-    block2_t b2;
-    block3_t b3;
-    block3_t b4;
-    block4_t b5;
-
-    fn(b1);  // expected-error {{incompatible block pointer types passing 'block1_t' (aka 'void (^)(int)') to parameter of type 'block4_t' (aka 'void (^)(id)')}}
-    fn(b2);  // must succeed: block1_t *is* compatible with id
-    fn(b3);  // succeeds: NSObject* compatible with id
-    fn(b4);  // succeeds: id compatible with id
-
-    another_fn(b5);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/block-ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/block-ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/block-ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -fblocks
-// expected-no-diagnostics
-
- at interface NSObject {
-  struct objc_object *isa;
-}
- at end
- at interface Foo : NSObject {
-  int _prop;
-}
- at end
-
- at implementation Foo
-- (int)doSomething {
-  int (^blk)(void) = ^{ return _prop; };
-  return blk();
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/block-on-method-param.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/block-on-method-param.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/block-on-method-param.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
-
-// rdar://10681443
- at interface I
-- (void) compileSandboxProfileAndReturnError:(__attribute__((__blocks__(byref))) id)errorp; // expected-error {{__block attribute not allowed, only allowed on local variables}}
- at end
-
- at implementation I
-- (void) compileSandboxProfileAndReturnError:(__attribute__((__blocks__(byref))) id)errorp {} // expected-error {{__block attribute not allowed, only allowed on local variables}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/block-return.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/block-return.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/block-return.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -fblocks -fobjc-gc-only %s
-// expected-no-diagnostics
-// rdar://8979379
-
- at interface NSString
-- (__attribute__((objc_gc(strong))) const char *)UTF8String;
- at end
-
-int main() {
-__attribute__((objc_gc(strong))) char const *(^libraryNameForIndex)() = ^() {
-        NSString *moduleName;
-        return [moduleName UTF8String];
-    };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/block-type-safety.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/block-type-safety.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/block-type-safety.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,157 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
-// test for block type safety.
-
- at interface Super  @end
- at interface Sub : Super @end
-
-void f2(void(^f)(Super *)) { // expected-note{{passing argument to parameter 'f' here}}
-    Super *o;
-    f(o);
-}
-
-void f3(void(^f)(Sub *)) {
-    Sub *o;
-    f(o);
-}
-
-void r0(Super* (^f)()) {
-     Super *o = f();
-}
-
-void r1(Sub* (^f)()) { // expected-note{{passing argument to parameter 'f' here}}
-    Sub *o = f();
-}
-
- at protocol NSObject;
-
-void r2 (id<NSObject> (^f) (void)) {
-  id o = f();
-}
-
-void test1() {
-    f2(^(Sub *o) { });    // expected-error {{incompatible block pointer types passing}}
-    f3(^(Super *o) { });  // OK, block taking Super* may be called with a Sub*
-
-    r0(^Super* () { return 0; });  // OK
-    r0(^Sub* () { return 0; });    // OK, variable of type Super* gets return value of type Sub*
-    r0(^id () { return 0; });
-
-    r1(^Super* () { return 0; });  // expected-error {{incompatible block pointer types passing}}
-    r1(^Sub* () { return 0; });    // OK
-    r1(^id () { return 0; }); 
-     
-    r2(^id<NSObject>() { return 0; });
-}
-
-
- at interface A @end
- at interface B @end
-
-void f0(void (^f)(A* x)) {
-  A* a;
-  f(a);
-}
-
-void f1(void (^f)(id x)) {
-  B *b;
-  f(b);
-}
-
-void test2(void) 
-{ 
-  f0(^(id a) { }); // OK
-  f1(^(A* a) { });
-   f1(^(id<NSObject> a) { });	// OK
-}
-
- at interface NSArray
-   // Calls block() with every object in the array
-   -enumerateObjectsWithBlock:(void (^)(id obj))block;
- at end
-
- at interface MyThing
--(void) printThing;
- at end
-
- at implementation MyThing
-    static NSArray* myThings;  // array of MyThing*
-
-   -(void) printThing {  }
-
-// programmer wants to write this:
-   -printMyThings1 {
-       [myThings enumerateObjectsWithBlock: ^(MyThing *obj) {
-           [obj printThing];
-       }];
-   }
-
-// strict type safety requires this:
-   -printMyThings {
-       [myThings enumerateObjectsWithBlock: ^(id obj) {
-           MyThing *obj2 = (MyThing *)obj;
-           [obj2 printThing];
-       }];
-   }
- at end
-
- at protocol P, P2;
-void f4(void (^f)(id<P> x)) { // expected-note{{passing argument to parameter 'f' here}}
-    NSArray<P2> *b;
-    f(b);	// expected-warning {{passing 'NSArray<P2> *' to parameter of incompatible type 'id<P>'}}
-}
-
-void test3() {
-  f4(^(NSArray<P2>* a) { });  // expected-error {{incompatible block pointer types passing 'void (^)(NSArray<P2> *)' to parameter of type 'void (^)(id<P>)'}}
-}
-
-// rdar : //8302845
- at protocol Foo @end
-
- at interface Baz @end
-
- at interface Baz(FooConformance) <Foo>
- at end
-
- at implementation Baz @end
-
-int test4 () {
-    id <Foo> (^b)() = ^{ // Doesn't work
-        return (Baz *)0;
-    };
-    return 0;
-}
-
-// rdar:// 9118343
-
- at protocol NSCopying @end
-
- at interface NSAllArray <NSCopying>
- at end
-
- at interface NSAllArray (FooConformance) <Foo>
- at end
-
-int test5() {
-    NSAllArray *(^block)(id);
-    id <Foo> (^genericBlock)(id);
-    genericBlock = block;
-    return 0;
-}
-
-// rdar://10798770
-typedef int NSInteger;
-
-typedef enum : NSInteger {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending} NSComparisonResult;
-
-typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
-
- at interface radar10798770
-- (void)sortUsingComparator:(NSComparator)c;
- at end
-
-void f() {
-   radar10798770 *f;
-   [f sortUsingComparator:^(id a, id b) {
-        return NSOrderedSame;
-   }];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/blocks.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/blocks.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/blocks.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,208 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s
-
-#define bool _Bool
- at protocol NSObject;
-
-void bar(id(^)(void));
-void foo(id <NSObject>(^objectCreationBlock)(void)) {
-    return bar(objectCreationBlock);
-}
-
-void bar2(id(*)(void));
-void foo2(id <NSObject>(*objectCreationBlock)(void)) {
-    return bar2(objectCreationBlock);
-}
-
-void bar3(id(*)());
-void foo3(id (*objectCreationBlock)(int)) {
-    return bar3(objectCreationBlock);
-}
-
-void bar4(id(^)());
-void foo4(id (^objectCreationBlock)(int)) {
-    return bar4(objectCreationBlock);
-}
-
-void bar5(id(^)(void)); // expected-note 3{{passing argument to parameter here}}
-void foo5(id (^objectCreationBlock)(bool)) {
-    bar5(objectCreationBlock); // expected-error {{incompatible block pointer types passing 'id (^)(bool)' to parameter of type 'id (^)(void)'}}
-#undef bool
-    bar5(objectCreationBlock); // expected-error {{incompatible block pointer types passing 'id (^)(_Bool)' to parameter of type 'id (^)(void)'}}
-#define bool int
-    bar5(objectCreationBlock); // expected-error {{incompatible block pointer types passing 'id (^)(_Bool)' to parameter of type 'id (^)(void)'}}
-}
-
-void bar6(id(^)(int));
-void foo6(id (^objectCreationBlock)()) {
-    return bar6(objectCreationBlock);
-}
-
-void foo7(id (^x)(int)) {
-  if (x) { }
-}
-
- at interface itf
- at end
-
-void foo8() {
-  void *P = ^(itf x) {};  // expected-error {{interface type 'itf' cannot be passed by value; did you forget * in 'itf'}}
-  P = ^itf(int x) {};     // expected-error {{interface type 'itf' cannot be returned by value; did you forget * in 'itf'}}
-  P = ^itf() {};          // expected-error {{interface type 'itf' cannot be returned by value; did you forget * in 'itf'}}
-  P = ^itf{};             // expected-error {{interface type 'itf' cannot be returned by value; did you forget * in 'itf'}}
-}
-
-
-int foo9() {
-  typedef void (^DVTOperationGroupScheduler)();
-  id _suboperationSchedulers;
-
-  for (DVTOperationGroupScheduler scheduler in _suboperationSchedulers) {
-            ;
-        }
-
-}
-
-// rdar 7725203
- at class NSString;
-
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-
-void foo10() {
-    void(^myBlock)(void) = ^{
-    };
-    NSLog(@"%@", myBlock);
-}
-
-
-// In C, enum constants have the type of the underlying integer type, not the
-// enumeration they are part of. We pretend the constants have enum type if
-// all the returns seem to be playing along.
-enum CStyleEnum {
-  CSE_Value = 1,
-  CSE_Value2 = 2
-};
-enum CStyleEnum getCSE();
-typedef enum CStyleEnum (^cse_block_t)();
-
-void testCStyleEnumInference(bool arg) {
-  cse_block_t a;
-
-  // No warnings here.
-  a = ^{ return getCSE(); };
-
-  a = ^{ // expected-error {{incompatible block pointer types assigning to 'cse_block_t' (aka 'enum CStyleEnum (^)()') from 'int (^)(void)'}}
-    return 1;
-  };
-
-  // No warning here.
-  a = ^{
-    return CSE_Value;
-  };
-
-  // No warnings here.
-  a = ^{ if (arg) return CSE_Value; else return getCSE();  };
-  a = ^{ if (arg) return getCSE();  else return CSE_Value; };
-
-  // These two blocks actually return 'int'
-  a = ^{ // expected-error {{incompatible block pointer types assigning to 'cse_block_t' (aka 'enum CStyleEnum (^)()') from 'int (^)(void)'}}
-    if (arg)
-      return 1;
-    else
-      return CSE_Value;
-  };
-
-  a = ^{ // expected-error {{incompatible block pointer types assigning to 'cse_block_t' (aka 'enum CStyleEnum (^)()') from 'int (^)(void)'}}
-    if (arg)
-      return CSE_Value;
-    else
-      return 1;
-  };
-
-  // rdar://13200889
-  extern void check_enum(void);
-  a = ^{
-    return (arg ? (CSE_Value) : (check_enum(), (!arg ? CSE_Value2 : getCSE())));
-  };
-  a = ^{
-    return (arg ? (CSE_Value) : ({check_enum(); CSE_Value2; }));
-  };
-}
-
-
-enum FixedTypeEnum : unsigned {
-  FTE_Value = 1U
-};
-enum FixedTypeEnum getFTE();
-typedef enum FixedTypeEnum (^fte_block_t)();
-
-void testFixedTypeEnumInference(bool arg) {
-  fte_block_t a;
-  
-  // No warnings here.
-  a = ^{ return getFTE(); };
-
-  // Since we fixed the underlying type of the enum, this is considered a
-  // compatible block type.
-  a = ^{
-    return 1U;
-  };
-  a = ^{
-    return FTE_Value;
-  };
-
-  // No warnings here.
-  a = ^{ if (arg) return FTE_Value; else return FTE_Value; };
-  a = ^{ if (arg) return getFTE();  else return getFTE();  };
-  a = ^{ if (arg) return FTE_Value; else return getFTE();  };
-  a = ^{ if (arg) return getFTE();  else return FTE_Value; };
-  
-  // These two blocks actually return 'unsigned'.
-  a = ^{
-    if (arg)
-      return 1U;
-    else
-      return FTE_Value;
-  };
-  
-  a = ^{
-    if (arg)
-      return FTE_Value;
-    else
-      return 1U;
-  };
-}
-
-
-enum {
-  AnonymousValue = 1
-};
-
-enum : short {
-  FixedAnonymousValue = 1
-};
-
-typedef enum {
-  TDE_Value
-} TypeDefEnum;
-TypeDefEnum getTDE();
-
-typedef enum : short {
-  TDFTE_Value
-} TypeDefFixedTypeEnum;
-TypeDefFixedTypeEnum getTDFTE();
-
-typedef int (^int_block_t)();
-typedef short (^short_block_t)();
-void testAnonymousEnumTypes(int arg) {
-  int_block_t IB;
-  IB = ^{ return AnonymousValue; };
-  IB = ^{ if (arg) return TDE_Value; else return getTDE(); };
-  IB = ^{ if (arg) return getTDE(); else return TDE_Value; };
-
-  // Since we fixed the underlying type of the enum, these are considered
-  // compatible block types anyway.
-  short_block_t SB;
-  SB = ^{ return FixedAnonymousValue; };
-  SB = ^{ if (arg) return TDFTE_Value; else return getTDFTE(); };
-  SB = ^{ if (arg) return getTDFTE(); else return TDFTE_Value; };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/boxing-illegal.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/boxing-illegal.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/boxing-illegal.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wattributes %s
-
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-
- at interface NSNumber
- at end
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
- at end
-
-typedef struct {
-    int x, y, z;
-} point;
-
-void testStruct() {
-    point p = { 0, 0, 0 };
-    id boxed = @(p);    // expected-error {{illegal type 'point' used in a boxed expression}}
-}
-
-void testPointers() {
-    void *null = 0;
-    id boxed_null = @(null);        // expected-error {{illegal type 'void *' used in a boxed expression}}
-    int numbers[] = { 0, 1, 2 };
-    id boxed_numbers = @(numbers);  // expected-error {{illegal type 'int *' used in a boxed expression}}
-}
-
-void testInvalid() {
-  @(not_defined); // expected-error {{use of undeclared identifier 'not_defined'}}
-}
-
-enum MyEnum {
-  ME_foo
-};
-
-enum ForwE;
-
-void testEnum(void *p) {
-  enum MyEnum myen;
-  id box = @(myen);
-  box = @(ME_foo);
-  box = @(*(enum ForwE*)p); // expected-error {{incomplete type 'enum ForwE' used in a boxed expression}}
-}
-
-// rdar://13333205
- at class NSMutableDictionary;
-
- at interface NSMutableArray
-+ (NSMutableArray*) array;
- at end
-
-NSMutableDictionary* mBars;
-
-__attribute((objc_root_class)) @interface rdar13333205 @end
-
- at implementation rdar13333205
-- (void) insertBar:(id)preset ofKind:(id) kind atIndex:(int)index {
-  NSMutableArray* presetArray = mBars[kind] ?: [NSMutableArray array]; // expected-error {{expected method to read dictionary element not found on object of type 'NSMutableDictionary *'}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_assign_ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_assign_ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_assign_ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -x objective-c %s -fsyntax-only -verify
-// expected-no-diagnostics
-// rdar://9362887
-
-typedef __typeof__(((int*)0)-((int*)0)) ptrdiff_t;
-extern id objc_assign_ivar(id value, id dest, ptrdiff_t offset);
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_lib_functions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_lib_functions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_lib_functions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -x objective-c %s -fsyntax-only -verify
-// rdar://8592641
-Class f0() { return objc_getClass("a"); } // expected-warning {{implicitly declaring library function 'objc_getClass' with type 'id (const char *)'}} \
-					  // expected-note {{please include the header <objc/runtime.h> or explicitly provide a declaration for 'objc_getClass'}}
-
-// rdar://8735023
-Class f1() { return objc_getMetaClass("a"); } // expected-warning {{implicitly declaring library function 'objc_getMetaClass' with type 'id (const char *)'}} \
-					  // expected-note {{please include the header <objc/runtime.h> or explicitly provide a declaration for 'objc_getMetaClass'}}
-
-void f2(id val) { objc_enumerationMutation(val); } // expected-warning {{implicitly declaring library function 'objc_enumerationMutation' with type 'void (id)'}} \
-						   // expected-note {{please include the header <objc/runtime.h> or explicitly provide a declaration for 'objc_enumerationMutation'}}
-
-long double f3(id self, SEL op) { return objc_msgSend_fpret(self, op); } // expected-warning {{implicitly declaring library function 'objc_msgSend_fpret' with type 'long double (id, SEL, ...)'}} \
-    // expected-note {{please include the header <objc/message.h> or explicitly provide a declaration for 'objc_msgSend_fpret'}}
-
-id f4(struct objc_super *super, SEL op) { // expected-warning {{declaration of 'struct objc_super' will not be visible outside of this function}}
-  return objc_msgSendSuper(super, op); // expected-warning {{implicitly declaring library function 'objc_msgSendSuper' with type 'id (struct objc_super *, SEL, ...)'}} \
-					// expected-note {{please include the header <objc/message.h> or explicitly provide a declaration for 'objc_msgSendSuper'}}
-}
-
-id f5(id val, id *dest) {
-  return objc_assign_strongCast(val, dest); // expected-warning {{implicitly declaring library function 'objc_assign_strongCast' with type 'id (id, id *)'}} \
-					    // expected-note {{please include the header <objc/objc-auto.h> or explicitly provide a declaration for 'objc_assign_strongCast'}}
-}
-
-int f6(Class exceptionClass, id exception) {
-  return objc_exception_match(exceptionClass, exception); // expected-warning {{implicitly declaring library function 'objc_exception_match' with type 'int (id, id)'}} \
-  							  // expected-note {{please include the header <objc/objc-exception.h> or explicitly provide a declaration for 'objc_exception_match'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_msgSend.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_msgSend.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_msgSend.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-// rdar://8632525
-extern id objc_msgSend(id self, SEL op, ...);
-
-// rdar://12489098
-struct objc_super {
-  id receiver;
-  Class super_class;
-};
-
-extern __attribute__((visibility("default"))) id objc_msgSendSuper(struct objc_super *super, SEL op, ...)
-    __attribute__((availability(macosx,introduced=10.0)));
-    
-extern __attribute__((visibility("default"))) void objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...)
-    __attribute__((availability(macosx,introduced=10.0)));
-    
-extern __attribute__((visibility("default"))) void objc_msgSend_stret(id self, SEL op, ...)
-    __attribute__((availability(macosx,introduced=10.0)));
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_nslog.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_nslog.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/builtin_objc_nslog.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -x objective-c %s -fsyntax-only -verify
-
-#include <stdarg.h>
-
-void f1(id arg) {
-  NSLog(@"%@", arg); // expected-warning {{implicitly declaring library function 'NSLog' with type 'void (id, ...)'}} \
-  // expected-note {{please include the header <Foundation/NSObjCRuntime.h> or explicitly provide a declaration for 'NSLog'}}
-}
-
-void f2(id str, va_list args) {
-  NSLogv(@"%@", args); // expected-warning {{implicitly declaring library function 'NSLogv' with type }} \
-  // expected-note {{please include the header <Foundation/NSObjCRuntime.h> or explicitly provide a declaration for 'NSLogv'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/call-super-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/call-super-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/call-super-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#include <stddef.h>
-
-typedef struct objc_object *id;
-id objc_getClass(const char *s);
-
- at interface Object 
-- (id) initWithInt: (int) i;
- at end
-
- at protocol Func
-+ (int) class_func0;
-- (int) instance_func0;
- at end
-
- at interface Derived: Object
-+ (int) class_func1;
-+ (int) class_func2;
-+ (int) class_func3;
-+ (int) class_func4;
-+ (int) class_func5;
-+ (int) class_func6;
-+ (int) class_func7;
-- (int) instance_func1;
-- (int) instance_func2;
-- (int) instance_func3;
-- (int) instance_func4;
-- (int) instance_func5;
-- (int) instance_func6;
-- (int) instance_func7;
-- (id) initWithInt: (int) i;
- at end
-
- at implementation Derived
-+ (int) class_func1
-{
-   int i = (size_t)[self class_func0];       // expected-warning {{class method '+class_func0' not found (return type defaults to 'id')}}
-   return i + (size_t)[super class_func0];   // expected-warning {{class method '+class_func0' not found (return type defaults to 'id')}}
-}
-+ (int) class_func2
-{
-   int i = [(id <Func>)self class_func0];
-   i += [(id <Func>)super class_func0];    // expected-error {{cannot cast 'super' (it isn't an expression)}}
-   i += [(Class <Func>)self class_func0];  // 
-   return i + [(Class <Func>)super class_func0]; // // expected-error {{cannot cast 'super' (it isn't an expression)}}
-}
-+ (int) class_func3
-{
-   return [(Object <Func> *)super class_func0];  // expected-error {{cannot cast 'super' (it isn't an expression)}}
-}
-+ (int) class_func4
-{
-   return [(Derived <Func> *)super class_func0]; // expected-error {{cannot cast 'super' (it isn't an expression)}}
-}   
-+ (int) class_func5
-{
-   int i = (size_t)[Derived class_func0];    // expected-warning {{class method '+class_func0' not found (return type defaults to 'id')}}
-   return i + (size_t)[Object class_func0];  // expected-warning {{class method '+class_func0' not found (return type defaults to 'id')}}
-}
-+ (int) class_func6
-{
-   return (size_t)[objc_getClass("Object") class_func1]; // GCC warns about this
-}
-+ (int) class_func7
-{
-   return [objc_getClass("Derived") class_func1];
-}
-- (int) instance_func1
-{
-   int i = (size_t)[self instance_func0];     // expected-warning {{instance method '-instance_func0' not found (return type defaults to 'id')}}
-   return i + (size_t)[super instance_func0]; // expected-warning {{'Object' may not respond to 'instance_func0'}}
-}
-- (int) instance_func2
-{
-   return [(id <Func>)super instance_func0]; // expected-error {{cannot cast 'super' (it isn't an expression)}}
-}
-- (int) instance_func3
-{
-   return [(Object <Func> *)super instance_func0]; // expected-error {{cannot cast 'super' (it isn't an expression)}}
-}
-- (int) instance_func4
-{
-   return [(Derived <Func> *)super instance_func0]; // expected-error {{cannot cast 'super' (it isn't an expression)}}
-}   
-- (int) instance_func5
-{
-   int i = (size_t)[Derived instance_func1]; // expected-warning {{class method '+instance_func1' not found (return type defaults to 'id')}} 
-   return i + (size_t)[Object instance_func1]; // expected-warning {{class method '+instance_func1' not found (return type defaults to 'id')}}
-}
-- (int) instance_func6
-{
-   return (size_t)[objc_getClass("Object") class_func1];
-}
-- (int) instance_func7
-{
-   return [objc_getClass("Derived") class_func1];
-}
-- (id) initWithInt: (int) i
-{
-   // Don't warn about parentheses here.
-   if (self = [super initWithInt: i]) {
-     [self instance_func1];
-   }
-   return self;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/catch-stmt.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/catch-stmt.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/catch-stmt.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -verify -fobjc-exceptions %s
- at interface A @end
- at protocol P;
-
-void f() {
-  @try {
-  } @catch (void a) { // expected-error{{@catch parameter is not a pointer to an interface type}}
-  } @catch (int) { // expected-error{{@catch parameter is not a pointer to an interface type}}
-  } @catch (int *b) { // expected-error{{@catch parameter is not a pointer to an interface type}}
-  } @catch (id <P> c) { // expected-error{{illegal qualifiers on @catch parameter}}
-  } @catch(A* a) { }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/category-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/category-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/category-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,109 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface MyClass1 @end
-
- at protocol p1,p2,p3;
-
- at interface MyClass1 (Category1)  <p1> // expected-warning {{cannot find protocol definition for 'p1'}} expected-note {{previous definition is here}}
- at end
-
- at interface MyClass1 (Category1)  // expected-warning {{duplicate definition of category 'Category1' on interface 'MyClass1'}}
- at end
-
- at interface MyClass1 (Category3) 
- at end
-
- at interface MyClass1 (Category4) @end // expected-note {{previous definition is here}}
- at interface MyClass1 (Category5) @end
- at interface MyClass1 (Category6) @end
- at interface MyClass1 (Category7) @end // expected-note {{previous definition is here}}
- at interface MyClass1 (Category8) @end // expected-note {{previous definition is here}}
-
-
- at interface MyClass1 (Category4) @end // expected-warning {{duplicate definition of category 'Category4' on interface 'MyClass1'}}
- at interface MyClass1 (Category7) @end // expected-warning {{duplicate definition of category 'Category7' on interface 'MyClass1'}}
- at interface MyClass1 (Category8) @end // expected-warning {{duplicate definition of category 'Category8' on interface 'MyClass1'}}
-
-
- at protocol p3 @end
-
- at interface MyClass1 (Category) <p2, p3> @end  // expected-warning {{cannot find protocol definition for 'p2'}}
-
- at interface UnknownClass  (Category) @end // expected-error {{cannot find interface declaration for 'UnknownClass'}}
-
- at class MyClass2; // expected-note{{forward declaration of class here}}
-
- at interface MyClass2  (Category) @end  // expected-error {{cannot define category for undefined class 'MyClass2'}}
-
- at interface XCRemoteComputerManager
- at end
-
- at interface XCRemoteComputerManager() 
- at end 
-
- at interface XCRemoteComputerManager()
- at end
-
- at interface XCRemoteComputerManager(x) // expected-note {{previous definition is here}}
- at end 
-
- at interface XCRemoteComputerManager(x) // expected-warning {{duplicate definition of category 'x' on interface 'XCRemoteComputerManager'}}
- at end
-
- at implementation XCRemoteComputerManager
- at end
-
- at implementation XCRemoteComputerManager(x) // expected-note {{previous definition is here}}
- at end
-
- at implementation XCRemoteComputerManager(x) // expected-error {{reimplementation of category 'x' for class 'XCRemoteComputerManager'}}
- at end
-
-// <rdar://problem/7249233>
-
- at protocol MultipleCat_P
--(void) im0; // expected-note {{method 'im0' declared here}}
- at end
-
- at interface MultipleCat_I @end // expected-note {{required for direct or indirect protocol 'MultipleCat_P'}}
-
- at interface MultipleCat_I()  @end
-
- at interface MultipleCat_I() <MultipleCat_P>  @end
-
- at implementation MultipleCat_I // expected-warning {{method 'im0' in protocol not implemented}}
- at end
-
-// <rdar://problem/7680391> - Handle nameless categories with no name that refer
-// to an undefined class
- at interface RDar7680391 () @end // expected-error{{cannot find interface declaration}}
-
-// <rdar://problem/8891119> - Handle @synthesize being used in conjunction
-// with explicitly declared accessor.
- at interface RDar8891119 {
-  id _name;
-}
- at end
- at interface RDar8891119 ()
-- (id)name;
- at end
- at interface RDar8891119 ()
- at property (copy) id name;
- at end
- at implementation RDar8891119
- at synthesize name = _name;
- at end
-
-// rdar://10968158
- at class I; // expected-note {{forward declaration}}
- at implementation I(cat) // expected-error{{cannot find interface declaration}}
- at end
-
-// <rdar://problem/11478173>
- at interface Unrelated
-- foo;
- at end
-
- at interface Blah (Blarg) // expected-error{{cannot find interface declaration for 'Blah'}}
-- foo;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/category-method-lookup-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/category-method-lookup-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/category-method-lookup-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-typedef struct objc_class *Class;
- at interface NSObject
-- (Class)class;
- at end
- at interface Bar : NSObject
- at end
- at interface Bar (Cat)
- at end
-
-// NOTE: No class implementation for Bar precedes this category definition.
- at implementation Bar (Cat)
-
-// private method.
-+ classMethod { return self; }
-
-- instanceMethod {
-  [[self class] classMethod];
-  return 0;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/category-method-lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/category-method-lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/category-method-lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface Foo
- at end
- at implementation Foo
- at end
-
- at implementation Foo(Whatever)
-+(float)returnsFloat { return 7.0; }
- at end
-
- at interface Foo (MoreStuff)
-+(int)returnsInt;
- at end
-
- at implementation Foo (MoreStuff)
-+(int)returnsInt {
-  return 0;
-}
-
-+(void)returnsNothing {
-}
--(int)callsReturnsInt {
-  float f = [Foo returnsFloat]; // GCC doesn't find this method (which is a bug IMHO).
-  [Foo returnsNothing];
-  return [Foo returnsInt];
-}
- at end
-
-int main() {return 0;}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/check-dup-decl-methods-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/check-dup-decl-methods-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/check-dup-decl-methods-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -Wduplicate-method-match -fsyntax-only -verify %s
-
- at interface SUPER
-- (int) meth;
-+ (int) foobar;
- at end
-
- at interface T @end
-
- at interface class1 : SUPER
-- (int) meth;	// expected-note {{previous declaration is here}}
-- (int*) meth;	// expected-error {{duplicate declaration of method 'meth'}}
-- (T*) meth1;   // expected-note {{previous declaration is here}}
-- (T*) meth1;   // expected-warning {{multiple declarations of method 'meth1' found and ignored}}
-+ (T*) meth1;
- at end
-
- at interface class1(cat)
-- (int) catm : (char)ch1; // expected-note {{previous declaration is here}}
-- (int) catm1 : (char)ch : (int)i;
-- (int) catm : (char*)ch1; // expected-error {{duplicate declaration of method 'catm:'}}
-+ (int) catm1 : (char)ch : (int)i;
-+ (T*) meth1;
- at end
-
- at interface class1(cat1)
-+ (int) catm1 : (char)ch : (int)i; // expected-note {{previous declaration is here}}
-+ (T*) meth1; // expected-note {{previous declaration is here}}
-+ (int) catm1 : (char)ch : (int*)i; // expected-error {{duplicate declaration of method 'catm1::'}}
-+ (T**) meth1; // expected-error {{duplicate declaration of method 'meth1'}}
-+ (int) foobar;
- at end
-
- at protocol P
-- (int) meth; // expected-note {{previous declaration is here}}
-- (int*) meth; // expected-error {{duplicate declaration of method 'meth'}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/check-dup-objc-decls-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/check-dup-objc-decls-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/check-dup-objc-decls-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface Foo // expected-note {{previous definition is here}}
- at end
-
-float Foo;	// expected-error {{redefinition of 'Foo' as different kind of symbol}}
-
- at class Bar;  // expected-note {{previous definition is here}}
-
-typedef int Bar;  // expected-error {{redefinition of 'Bar' as different kind of symbol}}
-
- at implementation FooBar // expected-warning {{cannot find interface declaration for 'FooBar'}} 
- at end
-
-
-typedef int OBJECT; // expected-note {{previous definition is here}}
-
- at class OBJECT ;	// expected-error {{redefinition of 'OBJECT' as different kind of symbol}}
-
-
-typedef int Gorf;  // expected-note {{previous definition is here}}
-
- at interface Gorf @end // expected-error {{redefinition of 'Gorf' as different kind of symbol}} expected-note {{previous definition is here}}
-
-void Gorf() // expected-error {{redefinition of 'Gorf' as different kind of symbol}}
-{
-  int Bar, Foo, FooBar;
-}
-
- at protocol P -im1; @end
- at protocol Q -im2; @end
- at interface A<P> @end  // expected-note {{previous definition is here}}
- at interface A<Q> @end  // expected-error {{duplicate interface definition for class 'A'}}
-
- at protocol PP<P> @end  // expected-note {{previous definition is here}}
- at protocol PP<Q> @end  // expected-warning {{duplicate protocol definition of 'PP'}}
-
- at interface A(Cat)<P> @end // expected-note {{previous definition is here}}
- at interface A(Cat)<Q> @end // expected-warning {{duplicate definition of category 'Cat' on interface 'A'}}
-
-// rdar 7626768
- at class NSString;
-NSString * TestBaz;  // expected-note {{previous definition is here}}
-NSString * const TestBaz;  // expected-error {{redefinition of 'TestBaz' with a different type}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-bitfield.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-bitfield.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-bitfield.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 %s -fobjc-runtime=macosx-fragile-10.5 -fsyntax-only -verify 
-
- at interface X 
-{
-  int a : -1; // expected-error{{bit-field 'a' has negative width}}
-
-  // rdar://6081627
-  int b : 33; // expected-error{{size of bit-field 'b' (33 bits) exceeds size of its type (32 bits)}}
-
-  int c : (1 + 0.25); // expected-error{{expression is not an integer constant expression}}
-  int d : (int)(1 + 0.25); 
-
-  // rdar://6138816
-  int e : 0;  // expected-error {{bit-field 'e' has zero width}}
-}
- at end
-
- at interface Base {
-  int i;
-}
- at end
-
- at interface WithBitFields: Base {
-  void *isa; // expected-note {{previous definition is here}}
-  unsigned a: 5;
-  signed b: 4;
-  int c: 5; // expected-note {{previous definition is here}}
-}
- at end
-
- at implementation WithBitFields {
-  char *isa;  // expected-error {{instance variable 'isa' has conflicting type: 'char *' vs 'void *'}}
-  unsigned a: 5;  
-  signed b: 4; 
-  int c: 3;  // expected-error {{instance variable 'c' has conflicting bit-field width}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-conforming-protocol-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-conforming-protocol-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-conforming-protocol-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -Wduplicate-method-match -fsyntax-only -verify %s
-
- at protocol P1 @end
- at protocol P2 @end
- at protocol P3 @end
-
- at interface INTF 
-- (INTF*) METH1;	// expected-note {{previous declaration is here}}
-- (INTF<P1>*) METH1;	// expected-error {{duplicate declaration of method 'METH1'}}
-
-- (INTF<P2,P1>*) METH2;  // expected-note {{previous declaration is here}}
-- (INTF<P2,P1,P3>*) METH2;  // expected-error {{duplicate declaration of method 'METH2'}}
-
-- (INTF<P2,P1,P3>*) METH3; // expected-note {{previous declaration is here}}
-- (INTF<P3,P1,P2, P3>*) METH3; // expected-warning {{multiple declarations of method 'METH3' found and ignored}}
-
- at end
-
-INTF<P2,P1,P3>* p1;
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-conforming-protocol-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-conforming-protocol-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-conforming-protocol-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify %s
-
- at protocol NSWindowDelegate @end
-
- at protocol IBStringsTableWindowDelegate <NSWindowDelegate>
- at end
-
- at interface NSWindow
-- (void)setDelegate:(id <NSWindowDelegate>)anObject; // expected-note {{previous definition is here}}
-- (id <IBStringsTableWindowDelegate>) delegate; // expected-note {{previous definition is here}}
- at end
-
-
- at interface IBStringsTableWindow : NSWindow {}
- at end
-
- at implementation IBStringsTableWindow
-- (void)setDelegate:(id <IBStringsTableWindowDelegate>)delegate { // expected-warning {{conflicting parameter types in implementation of 'setDelegate:'}}
-}
-- (id <NSWindowDelegate>)delegate { // expected-warning {{conflicting return type in implementation of 'delegate':}}
-        return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-def-test-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-def-test-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-def-test-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol SUPER;
-
- at interface SUPER <SUPER> @end // expected-warning {{cannot find protocol definition for 'SUPER'}}
-
-typedef int INTF; //  expected-note {{previous definition is here}}
-
- at interface INTF @end // expected-error {{redefinition of 'INTF' as different kind of symbol}}
-
- at interface OBJECT @end	// expected-note {{previous definition is here}}
-
- at interface INTF1 : OBJECT @end // expected-note {{previous definition is here}}
-
- at interface INTF1 : OBJECT @end // expected-error {{duplicate interface definition for class 'INTF1'}}
-
-typedef int OBJECT; // expected-error {{redefinition of 'OBJECT' as different kind of symbol}}
-
-typedef int OBJECT2; // expected-note {{previous definition is here}}
- at interface INTF2 : OBJECT2 @end // expected-error {{redefinition of 'OBJECT2' as different kind of symbol}}
-
-
- at protocol PROTO;
-
- at interface INTF3 : PROTO @end // expected-error {{cannot find interface declaration for 'PROTO', superclass of 'INTF3'}}
-
-// Make sure we allow the following (for GCC compatibility).
- at interface NSObject @end
-typedef NSObject TD_NSObject;
- at interface XCElementUnit : TD_NSObject {}
- at end
-
-// Make sure we don't typo-correct to ourselves.
- at interface SomeClassSub : SomeClassSup // expected-error{{cannot find interface declaration for 'SomeClassSup', superclass of 'SomeClassSub'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-extension-after-implementation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-extension-after-implementation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-extension-after-implementation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://7822210
-
- at interface A @end
-
- at implementation A @end // expected-note {{class implementation is declared here}}
-
- at interface A () // expected-error {{cannot declare class extension for 'A' after class implementation}}
--(void) im0;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-extension-dup-methods.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-extension-dup-methods.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-extension-dup-methods.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface Foo
-- (int)  garf; // expected-note {{previous declaration is here}}
-- (int) OK;
-+ (int)  cgarf; // expected-note {{previous declaration is here}}
-- (int)  InstMeth;
- at end
-
- at interface Foo()
-- (void)  garf; // expected-error {{duplicate declaration of method 'garf'}}
-+ (void)  cgarf; // expected-error {{duplicate declaration of method 'cgarf'}}
-+ (int)  InstMeth;
-- (int) OK;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-getter-using-dotsyntax.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-getter-using-dotsyntax.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-getter-using-dotsyntax.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-typedef struct objc_class *Class;
-
-struct objc_class {
-    Class isa;
-};
-
-typedef struct objc_object {
-    Class isa;
-} *id;
-
- at interface XCActivityLogSection 
-+ (unsigned)serializationFormatVersion;
-+ (unsigned)sectionByDeserializingData;
-+ (Class)retursClass;
- at end
-
- at implementation XCActivityLogSection
-
-+ (unsigned)serializationFormatVersion
-{
-
-    return 0;
-}
-+ (unsigned)sectionByDeserializingData {
-    unsigned version;
-    return self.serializationFormatVersion;
-}
-
-+ (Class)retursClass {
-    Class version;
-    // FIXIT. (*version).isa does not work. Results in compiler error.
-    return version->isa;
-}
-
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-impl-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-impl-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-impl-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-typedef int INTF3; // expected-note {{previous definition is here}}
-
- at interface SUPER @end // expected-note {{previous definition is here}}
-
- at interface OBJECT @end
-
- at interface INTF  : OBJECT
- at end
-
- at implementation INTF @end // expected-note {{previous definition is here}}
-
- at implementation INTF //  expected-error {{reimplementation of class 'INTF'}}
- at end
-
-
- at interface INTF1 : OBJECT
- at end
-
- at implementation INTF1 : SUPER // expected-error {{conflicting super class name 'SUPER'}}
- at end
-
- at interface INTF2 
- at end
-
- at implementation INTF2 : SUPR //  expected-error {{cannot find interface declaration for 'SUPR', superclass of 'INTF2'}}
- at end
-
- at implementation INTF3 @end // expected-error {{redefinition of 'INTF3' as different kind of symbol}}
-
- at implementation INTF4 @end // expected-warning {{cannot find interface declaration for 'INTF4'}}
-
- at class INTF5; // expected-note{{forward declaration of class here}}
-
- at implementation INTF5 {  // expected-warning {{cannot find interface declaration for 'INTF5'}}
-  int x;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-message-protocol-lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-message-protocol-lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-message-protocol-lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://9224670
-
- at interface RandomObject {
- at private
-}
-+ (id)alloc;
- at end
-
- at protocol TestProtocol
-- (void)nothingInteresting;
- at end
-
- at protocol Test2Protocol
-+ (id)alloc;
-- (id)alloc2; // expected-note 2 {{method 'alloc2' declared here}}
- at end
-
- at implementation RandomObject
-- (void) Meth {
-    Class<TestProtocol> c = [c alloc]; //  expected-warning {{class method '+alloc' not found (return type defaults to 'id')}}
-    Class<Test2Protocol> c1 = [c1 alloc2]; //  expected-warning {{instance method 'alloc2' found instead of class method 'alloc2'}}
-    Class<Test2Protocol> c2 = [c2 alloc]; //  ok
-}
-+ (id)alloc { return 0; }
- at end
-
-int main ()
-{
-    Class<TestProtocol> c = [c alloc]; //  expected-warning {{class method '+alloc' not found (return type defaults to 'id')}}
-    Class<Test2Protocol> c1 = [c1 alloc2]; //  expected-warning {{instance method 'alloc2' found instead of class method 'alloc2'}}
-    Class<Test2Protocol> c2 = [c2 alloc]; //  ok
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-method-lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-method-lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-method-lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface MyBase 
-- (void) rootInstanceMethod;
- at end
-
- at interface MyIntermediate: MyBase
- at end
-
- at interface MyDerived: MyIntermediate
-- (void) instanceMethod;
-+ (void) classMethod;
- at end
-
- at implementation MyDerived
-- (void) instanceMethod {
-}
-
-+ (void) classMethod {                    /* If a class method is not found, the root  */
-    [self rootInstanceMethod];            /* class is searched for an instance method  */
-    [MyIntermediate rootInstanceMethod];  /* with the same name.                       */
-
-    [self instanceMethod];// expected-warning {{'+instanceMethod' not found (return type defaults to 'id')}}
-    [MyDerived instanceMethod];// expected-warning {{'+instanceMethod' not found (return type defaults to 'id')}}
-}
- at end
-
- at interface Object @end
-
- at interface Class1
-- (void)setWindow:(Object *)wdw;
- at end
-
- at interface Class2
-- (void)setWindow:(Class1 *)window;
- at end
-
-#define nil (void*)0
-
-id foo(void) {
-  Object *obj;
-  id obj2 = obj;
-  [obj setWindow:nil]; // expected-warning {{'Object' may not respond to 'setWindow:'}}
-
-  return obj;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-method-self.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-method-self.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-method-self.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-objc-root-class %s
-
-typedef struct objc_class *Class;
- at interface XX
-
-- (void)addObserver:(XX*)o; // expected-note 2{{passing argument to parameter 'o' here}}
-
- at end
-
- at interface YY
-
-+ (void)classMethod;
-
- at end
-
- at implementation YY
-
-static XX *obj;
-
-+ (void)classMethod {
-  [obj addObserver:self];     // expected-warning {{incompatible pointer types sending 'Class' to parameter of type 'XX *'}}
-  Class whatever;
-  [obj addObserver:whatever]; // expected-warning {{incompatible pointer types sending 'Class' to parameter of type 'XX *'}}
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-property-access.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-property-access.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-property-access.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface Test {}
-+ (Test*)one;
-- (int)two;
- at end
-
-int main ()
-{
-  return Test.one.two;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-proto-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-proto-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-proto-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface INTF1 @end
-
- at protocol p1,p2,p3;
-
- at protocol p1;
-
- at protocol PROTO1
-- (INTF1<p1>*) meth;
- at end
-
- at protocol p1 @end
-
- at interface I1 <p1> @end
-
- at interface E1 <p2> @end	// expected-warning {{cannot find protocol definition for 'p2'}}
-
- at protocol p2 @end
-
-
- at interface I2 <p1,p2> @end
-
- at interface E2 <p1,p2,p3> @end  // expected-warning {{cannot find protocol definition for 'p3'}}
-
- at class U1, U2; // expected-note {{forward declaration of class here}}
-
- at interface E3 : U1 @end // expected-error {{attempting to use the forward class 'U1' as superclass of 'E3'}}
-
-
- at interface I3 : E3  @end
-
- at interface U2 @end
-
- at interface I4 : U2 <p1,p2>
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-protocol-method-match.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-protocol-method-match.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-protocol-method-match.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1  -Woverriding-method-mismatch -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://9352731
-
- at protocol Bar 
- at required
-- (bycopy id)bud; // expected-note {{previous declaration is here}}
-- (unsigned char) baz; // expected-note {{previous declaration is here}}
-- (char) ok;
-- (void) also_ok;
- at end
-
- at protocol Bar1 
- at required
-- (unsigned char) baz; // expected-note {{previous declaration is here}}
-- (unsigned char) also_ok; // expected-note {{previous declaration is here}}
-- (void) ban : (int) arg, ...; // expected-note {{previous declaration is here}}
- at end
-
- at protocol Baz <Bar, Bar1>
-- (void) bar : (unsigned char)arg; // expected-note {{previous declaration is here}}
-- (void) ok;
-- (char) bak; // expected-note {{previous declaration is here}}
- at end
-
- at interface Foo <Baz>
-- (id)bud; // expected-warning {{conflicting distributed object modifiers on return type in declaration of 'bud'}}
-- (void) baz; // expected-warning 2 {{conflicting return type in declaration of 'baz': 'unsigned char' vs 'void'}}
-- (void) bar : (unsigned char*)arg; // expected-warning {{conflicting parameter types in declaration of 'bar:': 'unsigned char' vs 'unsigned char *'}}
-- (void) ok;
-- (void) also_ok; // expected-warning {{conflicting return type in declaration of 'also_ok': 'unsigned char' vs 'void'}}
-- (void) still_ok;
-- (void) ban : (int) arg; // expected-warning {{conflicting variadic declaration of method and its implementation}}
- at end
-
- at interface Foo()
-- (void) bak;
- at end
-
- at implementation Foo
-- (bycopy id)bud { return 0; }
-- (void) baz {}
-- (void) bar : (unsigned char*)arg {}
-- (void) ok {}
-- (void) also_ok {}
-- (void) still_ok {}
-- (void) ban : (int) arg {}
-- (void) bak {} // expected-warning {{conflicting return type in declaration of 'bak': 'char' vs 'void'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-protocol.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-protocol.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-protocol.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// expected-no-diagnostics
-// pr5552
-
- at interface Protocol 
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/class-unavail-warning.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/class-unavail-warning.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/class-unavail-warning.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://9092208
-
-__attribute__((unavailable("not available")))
- at interface MyClass { // expected-note 8 {{declaration has been explicitly marked unavailable here}}
- at public
-    void *_test;
-    MyClass *ivar; // no error.
-}
-
-- (id)self;
-- new;
-+ (void)addObject:(id)anObject;
-- (MyClass *)meth; // no error.
-
- at end
-
- at interface Foo {
-  MyClass *ivar; // expected-error {{unavailable}}
-}
-- (MyClass *)meth; // expected-error {{unavailable}}
- at end
-
- at interface MyClass (Cat1)
-- (MyClass *)meth; // no error.
- at end
-
- at interface MyClass (Cat2) // no error.
- at end
-
- at implementation MyClass (Cat2) // expected-error {{unavailable}}
- at end
-
-int main() {
- [MyClass new]; // expected-error {{'MyClass' is unavailable: not available}}
- [MyClass self]; // expected-error {{'MyClass' is unavailable: not available}}
- [MyClass addObject:((void *)0)]; // expected-error {{'MyClass' is unavailable: not available}}
-
- MyClass *foo = [MyClass new]; // expected-error 2 {{'MyClass' is unavailable: not available}}
-
- return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa-api-usage.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa-api-usage.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa-api-usage.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc %s -fsyntax-only -Wobjc-cocoa-api -verify
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc -x objective-c %s.fixed -fsyntax-only
-// RUN: cp %s %t.m
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc %t.m -fixit -Wobjc-cocoa-api
-// RUN: diff %s.fixed %t.m
-
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSString : NSObject
-+ (id)stringWithString:(NSString *)string;
-- (id)initWithString:(NSString *)aString;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
-- (id)objectAtIndexedSubscript:(int)index;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ...;
-+ (id)arrayWithArray:(NSArray *)array;
-
-- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
-- (id)initWithObjects:(id)firstObj, ...;
-- (id)initWithArray:(NSArray *)array;
-
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
- at interface NSDictionary : NSObject
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
-+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-- (id)initWithObjectsAndKeys:(id)firstObject, ...;
-- (id)initWithDictionary:(NSDictionary *)otherDictionary;
-- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)objectForKey:(id)aKey;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id)aKey;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
-#define M(x) (x)
-#define PAIR(x) @#x, [NSNumber numberWithInt:(x)]
-#define TWO(x) ((x), (x))
-
-void foo() {
-  NSString *str = M([NSString stringWithString:@"foo"]); // expected-warning {{redundant}}
-  str = [[NSString alloc] initWithString:@"foo"]; // expected-warning {{redundant}}
-  NSArray *arr = [NSArray arrayWithArray:@[str]]; // expected-warning {{redundant}}
-  NSDictionary *dict = [NSDictionary dictionaryWithDictionary:@{str: arr}]; // expected-warning {{redundant}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa-api-usage.m.fixed
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa-api-usage.m.fixed	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa-api-usage.m.fixed	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc %s -fsyntax-only -Wobjc-cocoa-api -verify
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc -x objective-c %s.fixed -fsyntax-only
-// RUN: cp %s %t.m
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc %t.m -fixit -Wobjc-cocoa-api
-// RUN: diff %s.fixed %t.m
-
-typedef signed char BOOL;
-#define nil ((void*) 0)
-
- at interface NSObject
-+ (id)alloc;
- at end
-
- at interface NSString : NSObject
-+ (id)stringWithString:(NSString *)string;
-- (id)initWithString:(NSString *)aString;
- at end
-
- at interface NSArray : NSObject
-- (id)objectAtIndex:(unsigned long)index;
-- (id)objectAtIndexedSubscript:(int)index;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)array;
-+ (id)arrayWithObject:(id)anObject;
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
-+ (id)arrayWithObjects:(id)firstObj, ...;
-+ (id)arrayWithArray:(NSArray *)array;
-
-- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
-- (id)initWithObjects:(id)firstObj, ...;
-- (id)initWithArray:(NSArray *)array;
-
-- (id)objectAtIndex:(unsigned long)index;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
- at interface NSDictionary : NSObject
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
- at interface NSDictionary (NSDictionaryCreation)
-+ (id)dictionary;
-+ (id)dictionaryWithObject:(id)object forKey:(id)key;
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
-+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
-+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
-- (id)initWithObjectsAndKeys:(id)firstObject, ...;
-- (id)initWithDictionary:(NSDictionary *)otherDictionary;
-- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
-
-- (id)objectForKey:(id)aKey;
- at end
-
- at interface NSMutableDictionary : NSDictionary
-- (void)setObject:(id)anObject forKey:(id)aKey;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at interface NSNumber : NSObject
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
-#define M(x) (x)
-#define PAIR(x) @#x, [NSNumber numberWithInt:(x)]
-#define TWO(x) ((x), (x))
-
-void foo() {
-  NSString *str = M(@"foo"); // expected-warning {{redundant}}
-  str = @"foo"; // expected-warning {{redundant}}
-  NSArray *arr = @[str]; // expected-warning {{redundant}}
-  NSDictionary *dict = @{str: arr}; // expected-warning {{redundant}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/cocoa.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang -arch x86_64 %s -fsyntax-only -Xclang -print-stats 
-#ifdef __APPLE__
-#include <Cocoa/Cocoa.h>
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/compare-qualified-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/compare-qualified-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/compare-qualified-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar://8191774
-
- at protocol SomeProtocol
- at end
-
- at protocol SomeProtocol1
- at end
-
- at interface SomeObject <SomeProtocol>
- at end
-
-int main () {
-    Class <SomeProtocol> classA;
-    Class <SomeProtocol> classB;
-    Class <SomeProtocol, SomeProtocol1> classC;
-    Class <SomeProtocol1> classD;
-    void * pv = 0;
-    Class c = (Class)0;;
-    if (pv)
-      return classA == pv;
-
-    if (c)
-      return classA == c;
-    
-    return classA == classB  || classA == classC ||
-           classC == classA ||
-           classA == classD; // expected-warning {{comparison of distinct pointer types ('Class<SomeProtocol> *' and 'Class<SomeProtocol1> *')}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/compare-qualified-id.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/compare-qualified-id.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/compare-qualified-id.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end // expected-note {{method 'copyWithZone:' declared here}}
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} @end
-typedef struct {} NSFastEnumerationState;
- at protocol NSFastEnumeration  - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len; @end
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count; @end
- at interface NSMutableDictionary : NSDictionary  - (void)removeObjectForKey:(id)aKey; @end
-extern NSString * const NSTaskDidTerminateNotification;
-
- at interface XCPropertyExpansionContext : NSObject <NSCopying> { // expected-note {{required for direct or indirect protocol 'NSCopying'}}
-  NSMutableDictionary * _propNamesToPropValuesCache;
-} @end
-
- at protocol XCPropertyValues <NSObject, NSCopying>
-- (NSString *)evaluateAsStringInContext:(XCPropertyExpansionContext *)context withNestingState:(const void *)state;
- at end
-
- at implementation XCPropertyExpansionContext // expected-warning {{method 'copyWithZone:' in protocol not implemented}}
-- (NSString *)expandedValueForProperty:(NSString *)property {
-  id <XCPropertyValues> cachedValueNode = [_propNamesToPropValuesCache objectForKey:property]; // expected-warning {{method '-objectForKey:' not found (return type defaults to 'id')}}
-  if (cachedValueNode == ((void *)0)) { }
-  NSString * expandedValue = [cachedValueNode evaluateAsStringInContext:self withNestingState:((void *)0)];
-  return expandedValue;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/compatible-protocol-qualified-types.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/compatible-protocol-qualified-types.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/compatible-protocol-qualified-types.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -pedantic -fsyntax-only -verify -Wno-objc-root-class %s
-typedef signed char BOOL;
-
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
- at end
-
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
-typedef float CGFloat;
-
- at interface NSResponder : NSObject <NSCoding> {}
- at end
-
- at protocol XCSelectionSource;
-
- at interface XCSelection : NSResponder {}
-- (NSObject <XCSelectionSource> *) source;
- at end
-
-extern NSString * const XCActiveSelectionLevel;
-
- at interface XCActionManager : NSResponder {}
-+defaultActionManager;
--selectionAtLevel:(NSString *const)s;
- at end
-
- at implementation XDMenuItemsManager // expected-warning {{cannot find interface declaration for 'XDMenuItemsManager'}}
-+ (void)initialize {
-  id<XCSelectionSource, NSObject> source = 
-    [[[XCActionManager defaultActionManager] selectionAtLevel:XCActiveSelectionLevel] source];
-}
- at end
-
- at protocol NSTextStorageDelegate;
- at class NSNotification;
-
- at interface NSTextStorage : NSObject
-
-- (void)setDelegate:(id <NSTextStorageDelegate>)delegate; // expected-note{{passing argument to parameter 'delegate' here}}
-- (id <NSTextStorageDelegate>)delegate;
-
- at end
-
- at protocol NSTextStorageDelegate <NSObject>
- at optional
-
-- (void)textStorageWillProcessEditing:(NSNotification *)notification;
-- (void)textStorageDidProcessEditing:(NSNotification *)notification;
-
- at end
-
- at interface SKTText : NSObject {
-    @private
-
-
-    NSTextStorage *_contents;
-}
- at end
-
- at implementation SKTText
-
-
-- (NSTextStorage *)contents {
- [_contents setDelegate:self]; // expected-warning {{sending 'SKTText *' to parameter of incompatible type 'id<NSTextStorageDelegate>'}}
- return 0;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/compound-init.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/compound-init.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/compound-init.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
- at interface A
- at end
-
-void f() {
-  (A){ 0 }; // expected-error{{cannot initialize Objective-C class type 'A'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-#define nil (void *)0;
-#define Nil (void *)0;
-
-extern void foo();
-
- at protocol MyProtocol
-- (void) foo;
- at end
-
- at interface MyClass
- at end
-
- at interface MyOtherClass <MyProtocol>
-- (void) foo;
- at end
-
-int main()
-{
-  id obj = nil;
-  id<MyProtocol> obj_p = nil;
-  MyClass *obj_c = nil;
-  MyOtherClass *obj_cp = nil;
-  Class obj_C = Nil;
-
-  /* Assigning to an 'id' variable should never
-     generate a warning.  */
-  obj = obj_p;  /* Ok  */
-  obj = obj_c;  /* Ok  */
-  obj = obj_cp; /* Ok  */
-  obj = obj_C;  /* Ok  */
-  
-  /* Assigning to a 'MyClass *' variable should always generate a
-     warning, unless done from an 'id'.  */
-  obj_c = obj;    /* Ok */
-  obj_c = obj_cp; // // expected-warning {{incompatible pointer types assigning to 'MyClass *' from 'MyOtherClass *'}}
-  obj_c = obj_C;  // expected-warning {{incompatible pointer types assigning to 'MyClass *' from 'Class'}}
-
-  /* Assigning to an 'id<MyProtocol>' variable should generate a
-     warning if done from a 'MyClass *' (which doesn't implement
-     MyProtocol), but not from an 'id' or from a 'MyOtherClass *'
-     (which implements MyProtocol).  */
-  obj_p = obj;    /* Ok */
-  obj_p = obj_c;  // expected-warning {{assigning to 'id<MyProtocol>' from incompatible type 'MyClass *'}}
-  obj_p = obj_cp; /* Ok  */
-  obj_p = obj_C;  // expected-warning {{incompatible pointer types assigning to 'id<MyProtocol>' from 'Class'}}
-
-  /* Assigning to a 'MyOtherClass *' variable should always generate
-     a warning, unless done from an 'id' or an 'id<MyProtocol>' (since
-     MyOtherClass implements MyProtocol).  */
-  obj_cp = obj;    /* Ok */
-  obj_cp = obj_c;  // expected-warning {{incompatible pointer types assigning to 'MyOtherClass *' from 'MyClass *'}}
-  obj_cp = obj_p;  /* Ok */
-  obj_cp = obj_C;  // expected-warning {{incompatible pointer types assigning to 'MyOtherClass *' from 'Class'}}
-
-  /* Any comparison involving an 'id' must be without warnings.  */
-  if (obj == obj_p) foo() ;  /* Ok  */ /*Bogus warning here in 2.95.4*/
-  if (obj_p == obj) foo() ;  /* Ok  */
-  if (obj == obj_c) foo() ;  /* Ok  */
-  if (obj_c == obj) foo() ;  /* Ok  */
-  if (obj == obj_cp) foo() ; /* Ok  */
-  if (obj_cp == obj) foo() ; /* Ok  */
-  if (obj == obj_C) foo() ;  /* Ok  */
-  if (obj_C == obj) foo() ;  /* Ok  */
-
-  /* Any comparison between 'MyClass *' and anything which is not an 'id'
-     must generate a warning.  */
-  if (obj_p == obj_c) foo() ; // expected-warning {{comparison of distinct pointer types ('id<MyProtocol>' and 'MyClass *')}}
-
-  if (obj_c == obj_cp) foo() ; // expected-warning {{comparison of distinct pointer types ('MyClass *' and 'MyOtherClass *')}} 
-  if (obj_cp == obj_c) foo() ; // expected-warning {{comparison of distinct pointer types ('MyOtherClass *' and 'MyClass *')}}
-
-  if (obj_c == obj_C) foo() ;
-  if (obj_C == obj_c) foo() ;
-
-  /* Any comparison between 'MyOtherClass *' (which implements
-     MyProtocol) and an 'id' implementing MyProtocol are Ok.  */
-  if (obj_cp == obj_p) foo() ; /* Ok */
-  if (obj_p == obj_cp) foo() ; /* Ok */
-
-
-  if (obj_p == obj_C) foo() ;  
-  if (obj_C == obj_p) foo() ;
-  if (obj_cp == obj_C) foo() ;  
-  if (obj_C == obj_cp) foo() ;
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-10.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-10.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-10.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-//rdar: //8591619
-// pr8453
-
- at protocol NSCopying @end
- at protocol NSPROTO @end
- at protocol NSPROTO1 @end
- at protocol NSPROTO2 @end
-
- at interface NSObject <NSCopying, NSPROTO, NSPROTO1> {
-    Class isa;
-}
- at end
-
-void gorf(NSObject <NSCopying> *); // expected-note {{passing argument to parameter here}}
-
-NSObject <NSCopying> *foo(id <NSCopying> bar, id id_obj)
-{
- 	NSObject <NSCopying> *Init = bar; // expected-warning {{initializing 'NSObject<NSCopying> *' with an expression of incompatible type 'id<NSCopying>'}}
-        NSObject *Init1 = bar; // expected-warning {{initializing 'NSObject *' with an expression of incompatible type 'id<NSCopying>'}}
-
- 	NSObject <NSCopying> *I = id_obj; 
-        NSObject *I1 = id_obj; 
-        gorf(bar);	// expected-warning {{passing 'id<NSCopying>' to parameter of incompatible type 'NSObject<NSCopying> *'}}
-
-        gorf(id_obj);	
-
-	return bar; 	// expected-warning {{returning 'id<NSCopying>' from a function with incompatible result type 'NSObject<NSCopying> *'}} 
-}
-
-void test(id <NSCopying, NSPROTO, NSPROTO2> bar)
-{
-  NSObject <NSCopying> *Init = bar; // expected-warning {{initializing 'NSObject<NSCopying> *' with an expression of incompatible type 'id<NSCopying,NSPROTO,NSPROTO2>'}}
-}
-
-// rdar://8843851
- at interface NSObject (CAT)
-+ (struct S*)Meth : (struct S*)arg;
- at end
-
-struct S {
- char *types;
-};
-
- at interface I
- at end
-
- at implementation I
-- (struct S *)Meth : (struct S*)a {
-  return [NSObject Meth : a];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-#define nil (void *)0;
-#define Nil (void *)0;
-
- at protocol MyProtocol
-- (void) foo;
- at end
-
- at interface MyClass
- at end
-
-int main()
-{
-  id obj = nil;
-  id<MyProtocol> obj_p = nil;
-  MyClass *obj_c = nil;
-  Class obj_C = Nil;
-
-  /* All these casts should generate no warnings.  */
-
-  obj = (id)obj_p;
-  obj = (id)obj_c;
-  obj = (id)obj_C;
-  obj_c = (MyClass *)obj;
-  obj_c = (MyClass *)obj_p;
-  obj_c = (MyClass *)obj_C;
-  obj_p = (id<MyProtocol>)obj;
-  obj_p = (id<MyProtocol>)obj_c;
-  obj_p = (id<MyProtocol>)obj_C;
-  obj_C = (Class)obj;
-  obj_C = (Class)obj_p;
-  obj_C = (Class)obj_c;
-  
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#define nil (void *)0;
-
-extern void foo();
-
- at protocol MyProtocolA
-- (void) methodA;
- at end
-
- at protocol MyProtocolB
-- (void) methodB;
- at end
-
- at protocol MyProtocolAB <MyProtocolA, MyProtocolB>
- at end
-
- at protocol MyProtocolAC <MyProtocolA>
-- (void) methodC;
- at end
-
-int main()
-{
-  id<MyProtocolA> obj_a = nil;
-  id<MyProtocolB> obj_b = nil;
-  id<MyProtocolAB> obj_ab = nil;
-  id<MyProtocolAC> obj_ac = nil;
-
-  obj_a = obj_b;  // expected-warning {{assigning to 'id<MyProtocolA>' from incompatible type 'id<MyProtocolB>'}}
-  obj_a = obj_ab; /* Ok */
-  obj_a = obj_ac; /* Ok */
-  
-  obj_b = obj_a;  // expected-warning {{assigning to 'id<MyProtocolB>' from incompatible type 'id<MyProtocolA>'}}
-  obj_b = obj_ab; /* Ok */
-  obj_b = obj_ac; // expected-warning {{assigning to 'id<MyProtocolB>' from incompatible type 'id<MyProtocolAC>'}}
-  
-  obj_ab = obj_a;  // expected-warning {{assigning to 'id<MyProtocolAB>' from incompatible type 'id<MyProtocolA>'}}
-  obj_ab = obj_b;  // expected-warning {{assigning to 'id<MyProtocolAB>' from incompatible type 'id<MyProtocolB>'}}
-  obj_ab = obj_ac; // expected-warning {{assigning to 'id<MyProtocolAB>' from incompatible type 'id<MyProtocolAC>'}}
-  
-  obj_ac = obj_a;  // expected-warning {{assigning to 'id<MyProtocolAC>' from incompatible type 'id<MyProtocolA>'}}
-  obj_ac = obj_b;  // expected-warning {{assigning to 'id<MyProtocolAC>' from incompatible type 'id<MyProtocolB>'}}
-  obj_ac = obj_ab; // expected-warning {{assigning to 'id<MyProtocolAC>' from incompatible type 'id<MyProtocolAB>'}}
-
-  if (obj_a == obj_b) foo (); // expected-warning {{comparison of distinct pointer types ('id<MyProtocolA>' and 'id<MyProtocolB>')}}
-  if (obj_b == obj_a) foo (); // expected-warning {{comparison of distinct pointer types ('id<MyProtocolB>' and 'id<MyProtocolA>')}}
-
-  if (obj_a == obj_ab) foo (); /* Ok */
-  if (obj_ab == obj_a) foo (); /* Ok */ 
-
-  if (obj_a == obj_ac) foo (); /* Ok */ 
-  if (obj_ac == obj_a) foo (); /* Ok */ 
-
-  if (obj_b == obj_ab) foo (); /* Ok */ 
-  if (obj_ab == obj_b) foo (); /* Ok */ 
-
-  if (obj_b == obj_ac) foo (); // expected-warning {{comparison of distinct pointer types ('id<MyProtocolB>' and 'id<MyProtocolAC>')}} 
-  if (obj_ac == obj_b) foo (); // expected-warning {{comparison of distinct pointer types ('id<MyProtocolAC>' and 'id<MyProtocolB>')}} 
-
-  if (obj_ab == obj_ac) foo (); // expected-warning {{comparison of distinct pointer types ('id<MyProtocolAB>' and 'id<MyProtocolAC>')}} 
-  if (obj_ac == obj_ab) foo (); // expected-warning {{comparison of distinct pointer types ('id<MyProtocolAC>' and 'id<MyProtocolAB>')}} 
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-extern void foo();
-
- at protocol MyProtocol @end
-
- at interface MyClass @end
-
-int main()
-{
-  MyClass <MyProtocol> *obj_p;
-  MyClass *obj_cp;
-
-  obj_cp = obj_p;  
-  obj_p = obj_cp;	// expected-warning {{incompatible pointer types assigning to 'MyClass<MyProtocol> *' from 'MyClass *'}}
-
-  if (obj_cp == obj_p)
-    foo();
-
-  if (obj_p == obj_cp)
-    foo();
-
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-#define nil (void *)0;
-
-extern void foo();
-
- at protocol MyProtocol
-- (void) method;
- at end
-
- at interface MyClass
- at end
-
- at interface MyClass (Addition) <MyProtocol>
-- (void) method;
- at end
-
- at interface MyOtherClass : MyClass
- at end
-
-int main()
-{
-  id <MyProtocol> obj_id_p = nil;
-  MyClass *obj_c_cat_p = nil;
-  MyOtherClass *obj_c_super_p = nil;
-  MyOtherClass<MyProtocol> *obj_c_super_p_q = nil;
-  MyClass<MyProtocol> *obj_c_cat_p_q = nil;
-
-  obj_c_cat_p = obj_id_p;
-  obj_c_super_p = obj_id_p;
-  obj_id_p = obj_c_cat_p;  /* Ok */
-  obj_id_p = obj_c_super_p; /* Ok */
-
-  if (obj_c_cat_p == obj_id_p) foo(); /* Ok */
-  if (obj_c_super_p == obj_id_p) foo() ; /* Ok */
-  if (obj_id_p == obj_c_cat_p)  foo(); /* Ok */
-  if (obj_id_p == obj_c_super_p)  foo(); /* Ok */
-
-  obj_c_cat_p = obj_c_super_p; // ok.
-  obj_c_cat_p = obj_c_super_p_q; // ok.
-  obj_c_super_p = obj_c_cat_p_q; // expected-warning {{incompatible pointer types}}
-  obj_c_cat_p_q = obj_c_super_p;
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-6.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-6.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-6.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
- at interface Derived
- at end
-
- at interface Object @end
-
-extern Object* foo(void);
-
-static Derived *test(void)
-{
-   Derived *m = foo();   // expected-warning {{incompatible pointer types initializing 'Derived *' with an expression of type 'Object *'}}
-
-   return m;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-7.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-7.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-7.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
-#define nil (void *)0;
-#define Nil (void *)0;
-
-extern void foo();
-
- at protocol MyProtocol
-- (void) method;
- at end
-
- at interface MyClass
- at end
-
-int main()
-{
-  id obj = nil;
-  id <MyProtocol> obj_p = nil;
-  MyClass *obj_c = nil;
-  Class obj_C = Nil;
-  
-  int i = 0;
-  int *j = nil;
-
-  /* These should all generate warnings.  */
-  
-  obj = i; // expected-warning {{incompatible integer to pointer conversion assigning to 'id' from 'int'}}
-  obj = j; // expected-warning {{incompatible pointer types assigning to 'id' from 'int *'}}
-
-  obj_p = i; // expected-warning {{incompatible integer to pointer conversion assigning to 'id<MyProtocol>' from 'int'}}
-  obj_p = j; // expected-warning {{incompatible pointer types assigning to 'id<MyProtocol>' from 'int *'}}
-  
-  obj_c = i; // expected-warning {{incompatible integer to pointer conversion assigning to 'MyClass *' from 'int'}}
-  obj_c = j; // expected-warning {{incompatible pointer types assigning to 'MyClass *' from 'int *'}}
-
-  obj_C = i; // expected-warning {{incompatible integer to pointer conversion assigning to 'Class' from 'int'}}
-  obj_C = j; // expected-warning {{incompatible pointer types assigning to 'Class' from 'int *'}}
-  
-  i = obj;   // expected-warning {{incompatible pointer to integer conversion assigning to 'int' from 'id'}}
-  i = obj_p; // expected-warning {{incompatible pointer to integer conversion assigning to 'int' from 'id<MyProtocol>'}}
-  i = obj_c; // expected-warning {{incompatible pointer to integer conversion assigning to 'int' from 'MyClass *'}}
-  i = obj_C; // expected-warning {{incompatible pointer to integer conversion assigning to 'int' from 'Class'}}
-  
-  j = obj;   // expected-warning {{incompatible pointer types assigning to 'int *' from 'id'}}
-  j = obj_p; // expected-warning {{incompatible pointer types assigning to 'int *' from 'id<MyProtocol>'}}
-  j = obj_c; // expected-warning {{incompatible pointer types assigning to 'int *' from 'MyClass *'}}
-  j = obj_C; // expected-warning {{incompatible pointer types assigning to 'int *' from 'Class'}}
-  
-  if (obj == i) foo() ; // expected-warning {{comparison between pointer and integer ('id' and 'int')}}
-  if (i == obj) foo() ; // expected-warning {{comparison between pointer and integer ('int' and 'id')}}
-  if (obj == j) foo() ; // expected-warning {{comparison of distinct pointer types ('id' and 'int *')}}
-  if (j == obj) foo() ; // expected-warning {{comparison of distinct pointer types ('int *' and 'id')}}
-
-  if (obj_c == i) foo() ; // expected-warning {{comparison between pointer and integer ('MyClass *' and 'int')}}
-  if (i == obj_c) foo() ; // expected-warning {{comparison between pointer and integer ('int' and 'MyClass *')}}
-  if (obj_c == j) foo() ; // expected-warning {{comparison of distinct pointer types ('MyClass *' and 'int *')}}
-  if (j == obj_c) foo() ; // expected-warning {{comparison of distinct pointer types ('int *' and 'MyClass *')}}
-
-  if (obj_p == i) foo() ; // expected-warning {{comparison between pointer and integer ('id<MyProtocol>' and 'int')}}
-  if (i == obj_p) foo() ; // expected-warning {{comparison between pointer and integer ('int' and 'id<MyProtocol>')}}
-  if (obj_p == j) foo() ; // expected-warning {{comparison of distinct pointer types ('id<MyProtocol>' and 'int *')}}
-  if (j == obj_p) foo() ; // expected-warning {{comparison of distinct pointer types ('int *' and 'id<MyProtocol>')}}
-
-  if (obj_C == i) foo() ; // expected-warning {{comparison between pointer and integer ('Class' and 'int')}}
-  if (i == obj_C) foo() ; // expected-warning {{comparison between pointer and integer ('int' and 'Class')}}
-  if (obj_C == j) foo() ; // expected-warning {{comparison of distinct pointer types ('Class' and 'int *')}}
-  if (j == obj_C) foo() ; // expected-warning {{comparison of distinct pointer types ('int *' and 'Class')}}
-
-  Class bar1 = Nil;
-  Class <MyProtocol> bar = Nil;
-  bar = bar1;
-  bar1 = bar;
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-8.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-8.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-8.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at protocol MyProtocol
- at end
-
-id<MyProtocol> obj_p = 0;
-
-int main()
-{
-  obj_p = 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-9.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-9.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-9.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-// FIXME: This test case tests the patch applied in: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080602/006017.html
-//   Eventually that logic should be treated as an extension.
-
-typedef signed char BOOL;
-typedef int NSInteger;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
- at end
-
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
-
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
-
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at class NSArray;
-
-typedef struct {} NSFastEnumerationState;
-
- at protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
-
- at class NSString;
-
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
-- (id)objectAtIndex:(NSUInteger)index;
- at end
-
-typedef unsigned short unichar;
-
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
- at end
-
- at interface NSSimpleCString : NSString
-{}
-
- at end
-
- at interface NSConstantString : NSSimpleCString @end
-
-extern void *_NSConstantStringClassReference;
-
- at interface NSResponder : NSObject <NSCoding> {}
- at end
-
- at class NSDate, NSDictionary, NSError, NSException, NSNotification;
-
- at interface NSWindowController : NSResponder <NSCoding> {}
- at end
-
- at class PBXBuildLog, PBXBuildLogItem, PBXBuildLogContainerItem, XCWorkQueueCommand, XCBuildLogContainerItemMutationState;
-
- at protocol PBXBuildLogContainerItems <NSObject>
-- (PBXBuildLog *)buildLog;
- at end
-
- at interface PBXBuildLogItem : NSObject {}
-- (id <PBXBuildLogContainerItems>)superitem;
- at end
- at interface PBXBuildResultsModule
- at end
-
- at implementation PBXBuildResultsModule
-- (void) revealItems
-{
-        PBXBuildLogItem *objItem;
-        PBXBuildLogItem *superitem = [objItem superitem];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-a.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-a.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-a.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wmethod-signatures -verify -pedantic -Wno-objc-root-class %s
-typedef signed char BOOL;
-typedef int NSInteger;
-
- at class NSString;
-
- at protocol PBXCompletionItem
-- (NSString *) name;
-- (NSInteger)priority;
- at end
-
-extern NSInteger codeAssistantCaseCompareItems(id a, id b, void *context);
-
-NSInteger codeAssistantCaseCompareItems(id<PBXCompletionItem> a, id<PBXCompletionItem> b, void *context)
-{
-  return 0;
-}
-
- at interface TedWantsToVerifyObjCDoesTheRightThing
-
-- compareThis:(int)a withThat:(id)b;  // expected-note {{previous definition is here}} \
-				      // expected-note {{previous definition is here}}
-
- at end
-
- at implementation TedWantsToVerifyObjCDoesTheRightThing
-
-- compareThis:(id<PBXCompletionItem>)
-    a // expected-warning {{conflicting parameter types in implementation of 'compareThis:withThat:': 'int' vs 'id<PBXCompletionItem>'}}
-     withThat:(id<PBXCompletionItem>)b { // expected-warning {{conflicting parameter types in implementation of 'compareThis:withThat:': 'id' vs 'id<PBXCompletionItem>'}}
-  return self;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-legal.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-legal.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/comptypes-legal.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
-
- at protocol NSObject
- at end
- at interface NSObject <NSObject> {
-}
- at end
- at interface NSString : NSObject
- at end
-void __setRetained(id *ivar, id value, NSObject **o) {
-    *ivar = value;
-}
-static NSString *_logProcessPrefix = 0;
-void func() {
-  __setRetained(&_logProcessPrefix, _logProcessPrefix, &_logProcessPrefix);
-}
- at implementation NSObject (ScopeAdditions)
-+ (void)setObjectLogProcessPrefix:(NSString *)processPrefix {
-    __setRetained(&_logProcessPrefix, processPrefix, &_logProcessPrefix);
-}
- at end
-
- at class Derived;
-
-NSObject *ExternFunc (NSObject *filePath, NSObject *key);
-typedef id FuncSignature (NSObject *arg1, Derived *arg2);
-
- at interface Derived: NSObject
-+ (void)registerFunc:(FuncSignature *)function; // expected-note{{passing argument to parameter 'function' here}}
- at end
-
-void foo(void)
-{
-  // GCC currently allows this (it has some fiarly new support for covariant return types and contravariant argument types).
-  // Since registerFunc: expects a Derived object as it's second argument, I don't know why this would be legal.
-  [Derived registerFunc: ExternFunc];  // expected-warning{{incompatible pointer types sending 'NSObject *(NSObject *, NSObject *)' to parameter of type 'FuncSignature *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface A
- at end
- at interface B
- at end
-
-void f0(int cond, A *a, B *b) {
-  // Ensure that we can still send a message to result of incompatible
-  // conditional expression.
-  [ (cond ? a : b) test ]; // expected-warning{{incompatible operand types ('A *' and 'B *')}} expected-warning {{method '-test' not found}}
-}
-
- at interface NSKey @end
- at interface KeySub : NSKey @end
-
- at interface UpdatesList @end
-
-void foo (int i, NSKey *NSKeyValueCoding_NullValue, UpdatesList *nukedUpdatesList)
-{
-  id obj;
-  NSKey *key;
-  KeySub *keysub;
-
-  obj = i ? NSKeyValueCoding_NullValue : nukedUpdatesList; // expected-warning{{incompatible operand types ('NSKey *' and 'UpdatesList *')}}
-  key = i ? NSKeyValueCoding_NullValue : nukedUpdatesList; // expected-warning{{incompatible operand types ('NSKey *' and 'UpdatesList *')}}
-  key = i ? NSKeyValueCoding_NullValue : keysub;
-  keysub = i ? NSKeyValueCoding_NullValue : keysub; // expected-warning{{incompatible pointer types assigning to 'KeySub *' from 'NSKey *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol P0
- at end
- at protocol P1
- at end
- at protocol P2
- at end
-
- at interface A <P0>
- at end
-
- at interface B : A
- at end
-
-void bar(id x);
-void barP0(id<P0> x);
-void barP1(id<P1> x);
-void barP2(id<P2> x);
-
-void f0(A *a) {
-  id l = a;
-}
-
-void f1(id x, A *a) {
-  id<P0> l = a;
-}
-
-void f2(id<P1> x) {
-  id<P0> l = x; // expected-warning {{initializing 'id<P0>' with an expression of incompatible type 'id<P1>'}}
-}
-
-void f3(A *a) {
-  id<P1> l = a; // expected-warning {{initializing 'id<P1>' with an expression of incompatible type 'A *'}}
-}
-
-void f4(int cond, id x, A *a) {
-  bar(cond ? x : a);
-}
-
-void f5(int cond, A *a, B *b) {
-  bar(cond ? a : b);
-}
-
-void f6(int cond, id x, A *a) {
-  bar(cond ? (id<P0, P1>) x : a);
-}
-
-void f7(int cond, id x, A *a) {
-  bar(cond ? a : (id<P0, P1>) x);
-}
-
-void f8(int cond, id<P0,P1> x0, id<P0,P2> x1) {
-  barP0(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
-}
-
-void f9(int cond, id<P0,P1> x0, id<P0,P2> x1) {
-  barP1(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
-}
-
-void f10(int cond, id<P0,P1> x0, id<P0,P2> x1) {
-  barP2(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
-}
-
-int f11(int cond, A* a, B* b) {
-  return (cond? b : a)->x; // expected-error{{'A' does not have a member named 'x'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// <rdar://problem/6212771>
-
-#define nil ((void*) 0)
-
- at interface A 
- at property int x;
- at end
-
- at interface B : A
- at end
-
-// Basic checks...
-id f0(int cond, id a, void *b) {
-  return cond ? a : b;
-}
-A *f0_a(int cond, A *a, void *b) {
-  return cond ? a : b;
-}
-
-id f1(int cond, id a) {
-  return cond ? a : nil;
-}
-A *f1_a(int cond, A *a) {
-  return cond ? a : nil;
-}
-
-void *f1_const_a(int x, void *p, const A * q) {
-  void *r = x ? p : q; // expected-warning{{initializing 'void *' with an expression of type 'const void *' discards qualifiers}}
-  return r;
-}
-
-// Check interaction with qualified id
-
- at protocol P0 @end
-
-id f2(int cond, id<P0> a, void *b) {
-  return cond ? a : b;
-}
-
-id f3(int cond, id<P0> a) {
-  return cond ? a : nil;
-}
-
-// Check that result actually has correct type.
-
-// Using properties is one way to find the compiler internal type of a
-// conditional expression. Simple assignment doesn't work because if
-// the type is id then it can be implicitly promoted.
- at protocol P1
- at property int x;
- at end
-
-int f5(int cond, id<P1> a, id<P1> b) {
-  return (cond ? a : b).x;
-}
-int f5_a(int cond, A *a, A *b) {
-  return (cond ? a : b).x;
-}
-int f5_b(int cond, A *a, B *b) {
-  return (cond ? a : b).x;
-}
-
-int f6(int cond, id<P1> a, void *b) {
-  // This should result in something with id type, currently.
-  return (cond ? a : b).x; // expected-error {{member reference base type 'void *' is not a structure or union}}
-}
-
-int f7(int cond, id<P1> a) {
-  return (cond ? a : nil).x;
-}
-
-int f8(int cond, id<P1> a, A *b) {
-  return a == b; // expected-warning {{comparison of distinct pointer types ('id<P1>' and 'A *')}}
-}
-
-int f9(int cond, id<P1> a, A *b) {
-  return (cond ? a : b).x; // expected-warning {{incompatible operand types ('id<P1>' and 'A *')}} \
-                              expected-error {{property 'x' not found on object of type 'id'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface PBXBuildSettingsDictionary
-{
-  int i;
-}
- at end
-
- at interface XCConditionalBuildSettingsDictionary : PBXBuildSettingsDictionary
-{
-}
- at end
-
- at implementation PBXBuildSettingsDictionary
-
-- (XCConditionalBuildSettingsDictionary *)conditionalDictionaryForConditionSet
-{
-  return i ? self : (id)0;
-}
-
-- (XCConditionalBuildSettingsDictionary *)conditionalDictionaryForConditionSet2
-{
-  return i ? (id)0 : self;
-}
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-6.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-6.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-6.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at protocol MyProtocol @end
-
- at interface NSObject @end
-
- at interface NSInterm : NSObject <MyProtocol>
- at end
-
- at interface NSArray : NSInterm 
- at end
-
- at interface NSSet : NSObject <MyProtocol>
- at end
-
-
- at interface N1 : NSObject
- at end
-
- at interface N1() <MyProtocol>
- at end
-
-NSObject* test (int argc) {
-    NSArray *array = ((void*)0);
-    NSSet *set = ((void*)0);
-    return (argc) ? set : array ;
-}
-
-
-NSObject* test1 (int argc) {
-    NSArray *array = ((void*)0);
-    NSSet *set = ((void*)0);
-    id <MyProtocol> instance = (argc) ? array : set;
-    id <MyProtocol> instance1 = (argc) ? set : array;
-
-    N1 *n1 = ((void*)0);
-    id <MyProtocol> instance2 = (argc) ? set : n1;
-    id <MyProtocol> instance3 = (argc) ? n1 : array;
-
-    NSArray<MyProtocol> *qual_array = ((void*)0);
-    id <MyProtocol> instance4 = (argc) ? array : qual_array;
-    id <MyProtocol> instance5 = (argc) ? qual_array : array;
-    NSSet<MyProtocol> *qual_set = ((void*)0);
-    id <MyProtocol> instance6 = (argc) ? qual_set : qual_array;
-    id <MyProtocol> instance7 = (argc) ? qual_set : array;
-    id <MyProtocol> instance8 = (argc) ? qual_array : set;
-    id <MyProtocol> instance9 = (argc) ? qual_array : qual_set;
-
-
-    return (argc) ? array : set;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-7.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-7.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-7.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// radar 7682116
-
- at interface Super @end
-
- at interface NSArray : Super @end
- at interface NSSet : Super @end
-
- at protocol MyProtocol
-- (void)myMethod;
- at end
-
- at protocol MyProtocol2 <MyProtocol>
-- (void)myMethod2;
- at end
-
- at interface NSArray() <MyProtocol2>
- at end
-
- at interface NSSet() <MyProtocol>
- at end
-
-int main (int argc, const char * argv[]) {
-    NSArray *array = (void*)0;
-    NSSet *set = (void*)0;
-    id <MyProtocol> instance = (argc) ? array : set;
-    instance = (void*)0;
-    return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-8.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-8.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr-8.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// rdar://9296866
-
- at interface NSResponder
- at end
-
-
- at interface NSView : NSResponder
- at end
-
- at interface WebView : NSView
- at end
-
- at protocol WebDocumentView
- at end
-
- at implementation NSView
-
-- (void) FUNC : (id)s {
-  WebView *m_webView;
-  NSView <WebDocumentView> *documentView;
-  NSView *coordinateView = s ?  documentView : m_webView;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conditional-expr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,119 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -Wno-objc-root-class %s
- at protocol NSObject
- at end
-
- at protocol DTOutputStreams <NSObject>
- at end
-
- at interface DTFilterOutputStream <DTOutputStreams>
-- nextOutputStream;
- at end
-
- at implementation DTFilterOutputStream
-- (id)initWithNextOutputStream:(id <DTOutputStreams>) outputStream {
-  id <DTOutputStreams> nextOutputStream = [self nextOutputStream];
-  self = nextOutputStream;
-  return nextOutputStream ? nextOutputStream : self;
-}
-- nextOutputStream {
-  return self;
-}
- at end
-
- at interface DTFilterOutputStream2
-- nextOutputStream; // expected-note {{method 'nextOutputStream' declared here}}
- at end
-
- at implementation DTFilterOutputStream2 // expected-warning {{method definition for 'nextOutputStream' not found}}
-- (id)initWithNextOutputStream:(id <DTOutputStreams>) outputStream {
-  id <DTOutputStreams> nextOutputStream = [self nextOutputStream];
-  self = nextOutputStream; // expected-warning {{assigning to 'DTFilterOutputStream2 *' from incompatible type 'id<DTOutputStreams>'}}
-  return nextOutputStream ? nextOutputStream : self; // expected-warning {{incompatible operand types ('id<DTOutputStreams>' and 'DTFilterOutputStream2 *')}}
-}
- at end
-
-// No @interface declaration for DTFilterOutputStream3
- at implementation DTFilterOutputStream3 // expected-warning {{cannot find interface declaration for 'DTFilterOutputStream3'}}
-- (id)initWithNextOutputStream:(id <DTOutputStreams>) outputStream {
-  id <DTOutputStreams> nextOutputStream = [self nextOutputStream]; // expected-warning {{method '-nextOutputStream' not found (return type defaults to 'id')}}
-  self = nextOutputStream; // expected-warning {{assigning to 'DTFilterOutputStream3 *' from incompatible type 'id<DTOutputStreams>'}}
-  return nextOutputStream ? nextOutputStream : self; // expected-warning {{incompatible operand types ('id<DTOutputStreams>' and 'DTFilterOutputStream3 *')}}
-}
- at end
-
-//
-
- at protocol P0
- at property int intProp;
- at end
- at protocol P1
- at end
- at protocol P2
- at end
-
- at interface A <P0>
- at end
-
- at interface B : A
- at end
-
- at interface C
- at end
-
- at interface D
- at end
-
-void f0(id<P0> x) {
-  x.intProp = 1;
-}
-
-void f1(int cond, id<P0> x, id<P0> y) {
-  (cond ? x : y).intProp = 1;
-}
-
-void f2(int cond, id<P0> x, A *y) {
-  (cond ? x : y).intProp = 1;
-}
-
-void f3(int cond, id<P0> x, B *y) {
-  (cond ? x : y).intProp = 1;
-}
-
-void f4(int cond, id x, B *y) {
-  (cond ? x : y).intProp = 1; // expected-error {{property 'intProp' not found on object of type 'id'}}
-}
-
-void f5(int cond, id<P0> x, C *y) {
-  (cond ? x : y).intProp = 1; // expected-warning {{incompatible operand types ('id<P0>' and 'C *')}} expected-error {{property 'intProp' not found on object of type 'id'}}
-}
-
-void f6(int cond, C *x, D *y) {
-  (cond ? x : y).intProp = 1; // expected-warning {{incompatible operand types}}, expected-error {{property 'intProp' not found on object of type 'id'}}
-}
-
-id f7(int a, id<P0> x, A* p) {
-  return a ? x : p;
-}
-
-void f8(int a, A<P0> *x, A *y) {
-  [ (a ? x : y ) intProp ];
-}
-
-void f9(int a, A<P0> *x, A<P1> *y) {
-  id l0 = (a ? x : y ); // expected-warning {{incompatible operand types ('A<P0> *' and 'A<P1> *')}}
-  A<P0> *l1 = (a ? x : y ); // expected-warning {{incompatible operand types ('A<P0> *' and 'A<P1> *')}}
-  A<P1> *l2 = (a ? x : y ); // expected-warning {{incompatible operand types ('A<P0> *' and 'A<P1> *')}}
-  [ (a ? x : y ) intProp ]; // expected-warning {{incompatible operand types ('A<P0> *' and 'A<P1> *')}}
-}
-
-void f10(int a, id<P0> x, id y) {
-  [ (a ? x : y ) intProp ];
-}
-
-void f11(int a, id<P0> x, id<P1> y) {
-  [ (a ? x : y ) intProp ]; // expected-warning {{incompatible operand types ('id<P0>' and 'id<P1>')}}
-}
-
-void f12(int a, A<P0> *x, A<P1> *y) {
-  A<P1>* l0 = (a ? x : y ); // expected-warning {{incompatible operand types ('A<P0> *' and 'A<P1> *')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conflict-atomic-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conflict-atomic-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conflict-atomic-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://10260017
-
- at interface Foo 
- at property (nonatomic, assign, atomic) float dummy; // expected-error {{property attributes 'atomic' and 'nonatomic' are mutually exclusive}}
- at property (nonatomic, assign) float d1;
- at property (atomic, assign) float d2;
- at property (assign) float d3;
- at property (atomic, nonatomic, assign) float d4; // expected-error {{property attributes 'atomic' and 'nonatomic' are mutually exclusive}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conflict-nonfragile-abi2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conflict-nonfragile-abi2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conflict-nonfragile-abi2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://8225011
-
-int glob;
-
- at interface I
- at property int glob;
- at property int p;
- at property int le;
- at property int l;
- at property int ls;
- at property int r;
- at end
-
-// rdar://9027673
-// Warning on future name lookup rule is removed.
- at implementation I
-- (int) Meth { return glob; } // no warning
- at synthesize glob;
-// rdar://8248681
-- (int) Meth1: (int) p {
-  extern int le;
-  int l = 1;
-  static int ls;
-  register int r;
-  p = le + ls + r;
-  return l;
-}
- at dynamic p;
- at dynamic le;
- at dynamic l;
- at dynamic ls;
- at dynamic r;
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/conflicting-ivar-test-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/conflicting-ivar-test-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/conflicting-ivar-test-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface INTF 
-{
- at public
-	int IVAR; // expected-note {{previous definition is here}}
-}
- at end
-
- at implementation INTF
-{
- at private
-
-        int XIVAR; // expected-error {{conflicting instance variable names: 'XIVAR' vs 'IVAR'}}
-}
- at end
-
-
-
- at interface INTF1 
-{
- at public
-	int IVAR;
-	int IVAR1; // expected-error {{inconsistent number of instance variables specified}}
-}
- at end
-
- at implementation INTF1
-{
- at private
-
-        int IVAR;
-}
- at end
-
-
- at interface INTF2 
-{
- at public
-	int IVAR;
-}
- at end
-
- at implementation INTF2
-{
- at private
-
-        int IVAR;
-	int IVAR1; // expected-error {{inconsistent number of instance variables specified}}
-}
- at end
-
-
- at interface INTF3
-{
- at public
-	int IVAR; // expected-note {{previous definition is here}}
-}
- at end
-
- at implementation INTF3
-{
- at private
-
-        short IVAR; // expected-error {{instance variable 'IVAR' has conflicting type: 'short' vs 'int'}}
-}
- at end
-
- at implementation  INTF4 // expected-warning {{cannot find interface declaration for 'INTF4'}}
-{
- at private
-
-        short IVAR;
-}
- at end
-
- at interface INTF5
-{
-  char * ch;
-}
- at end
-
- at implementation  INTF5
-{
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/continuation-class-err.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/continuation-class-err.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/continuation-class-err.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface ReadOnly 
-{
-  id _object;
-  id _object1;
-}
- at property(readonly) id object;
- at property(readwrite, assign) id object1; // expected-note {{property declared here}}
- at property (readonly) int indentLevel;
- at end
-
- at interface ReadOnly ()
- at property(readwrite, copy) id object; // Ok. declaring memory model in class extension - primary has none.
- at property(readonly) id object1; // expected-error {{illegal redeclaration of property in class extension 'ReadOnly' (attribute must be 'readwrite', while its primary must be 'readonly')}}
- at property (readwrite, assign) int indentLevel; // OK. assign the default in any case.
- at end
-
- at protocol Proto
-  @property (copy) id fee; // expected-note {{property declared here}}
- at end
-
- at protocol Foo<Proto>
-  @property (copy) id foo; // expected-note {{property declared here}}
- at end
-
- at interface Bar  <Foo> {
-        id _foo;
-        id _fee;
-}
- at end
-
- at interface Bar ()
- at property (copy) id foo; // expected-error {{illegal redeclaration of property in class extension 'Bar' (attribute must be 'readwrite', while its primary must be 'readonly')}}
- at property (copy) id fee; // expected-error {{illegal redeclaration of property in class extension 'Bar' (attribute must be 'readwrite', while its primary must be 'readonly')}}
- at end
-
- at implementation Bar
- at synthesize foo = _foo;
- at synthesize fee = _fee;
- at end
-
-// rdar://10752081
- at interface MyOtherClass() // expected-error {{cannot find interface declaration for 'MyOtherClass'}}
-{
- id array;
-}
- at end
-
- at implementation MyOtherClass // expected-warning {{cannot find interface declaration for 'MyOtherClass'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/continuation-class-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/continuation-class-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/continuation-class-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// radar 7509234
-
- at protocol Foo
- at property (readonly, copy) id foos;
- at end
-
- at interface Bar <Foo> {
-}
-
- at end
-
- at interface Baz  <Foo> {
-}
- at end
-
- at interface Bar ()
- at property (readwrite, copy) id foos;
- at end
-
- at interface Baz ()
- at property (readwrite, copy) id foos;
- at end
-
-
-// rdar://10142679
- at class NSString;
-
-typedef struct {
-  float width;
-  float length;
-} NSRect;
-
- at interface MyClass  {
-}
- at property (readonly) NSRect foo; // expected-note {{property declared here}}
- at property (readonly, strong) NSString *bar; // expected-note {{property declared here}}
- at end
-
- at interface MyClass ()
- at property (readwrite) NSString *foo; // expected-error {{type of property 'NSString *' in class extension does not match property type in primary class}}
- at property (readwrite, strong) NSRect bar; // expected-error {{type of property 'NSRect' in class extension does not match property type in primary class}}
- at end
-
-// rdar://10655530
-struct S;
-struct S1;
- at interface STAdKitContext
- at property (nonatomic, readonly, assign) struct evhttp_request *httpRequest;
- at property (nonatomic, readonly, assign) struct S *httpRequest2;
- at property (nonatomic, readonly, assign) struct S1 *httpRequest3;
- at property (nonatomic, readonly, assign) struct S2 *httpRequest4;
- at end
-
-struct evhttp_request;
-struct S1;
-
- at interface STAdKitContext()
- at property (nonatomic, readwrite, assign) struct evhttp_request *httpRequest;
- at property (nonatomic, readwrite, assign) struct S *httpRequest2;
- at property (nonatomic, readwrite, assign) struct S1 *httpRequest3;
- at property (nonatomic, readwrite, assign) struct S2 *httpRequest4;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/crash-label.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/crash-label.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/crash-label.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
-  - (NSDictionary*) _executeScript:(NSString *)source {  // expected-error 2 {{expected a type}} \
-                                                         // expected-error {{missing context for method declaration}}
-Exit:  [nilArgs release];
-}
-- (NSDictionary *) _setupKernelStandardMode:(NSString *)source { // expected-error 2 {{expected a type}} \
-                                                                 // expected-error {{missing context for method declaration}}
-  Exit:   if(_ciKernel && !success ) {

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/crash-on-objc-bool-literal.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/crash-on-objc-bool-literal.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/crash-on-objc-bool-literal.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify %s
-// rdar://12456743
-
-typedef signed char BOOL;
-
-EXPORT BOOL FUNC(BOOL enabled); // expected-error {{unknown type name 'EXPORT'}} // expected-error {{expected ';' after top level declarator}}
-
-static inline BOOL MFIsPrivateVersion(void) {
- return __objc_yes;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/custom-atomic-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/custom-atomic-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/custom-atomic-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wcustom-atomic-properties -verify -Wno-objc-root-class %s
-
- at interface Foo
- at property (assign) Foo *myProp; // expected-note {{property declared here}} expected-note {{property declared here}}
- at end
-
- at implementation Foo
- -(Foo*)myProp {return 0;} // expected-warning {{atomic by default property 'myProp' has a user defined getter (property should be marked 'atomic' if this is intended)}}
- -(void)setMyProp:(Foo*)e {} // expected-warning {{atomic by default property 'myProp' has a user defined setter (property should be marked 'atomic' if this is intended)}}
- at end
-
- at interface Foo2 {
-  Foo *myProp;
-}
- at property (assign) Foo *myProp;
- at end
-
- at implementation Foo2
- at synthesize myProp; // no warnings.
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/dealloc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/dealloc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/dealloc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -verify %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
-// rdar://11987838
-
- at protocol NSObject
-- dealloc; // expected-error {{return type must be correctly specified as 'void' under ARC, instead of 'id'}}
-// CHECK: fix-it:"{{.*}}":{6:3-6:3}:"(void)"
- at end
-
- at protocol Foo <NSObject> @end
-
- at interface Root <Foo>
- at end
-
- at interface Baz : Root {
-}
- at end
-
- at implementation Baz
--  (id) dealloc { // expected-error {{return type must be correctly specified as 'void' under ARC, instead of 'id'}}
-// CHECK: fix-it:"{{.*}}":{20:5-20:7}:"void"
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/debugger-cast-result-to-id.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/debugger-cast-result-to-id.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/debugger-cast-result-to-id.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -funknown-anytype -fsyntax-only -fdebugger-support -fdebugger-cast-result-to-id -verify %s
-
-extern __unknown_anytype test0;
-extern __unknown_anytype test1();
-
-void test_unknown_anytype_receiver() {
-  (void)(int)[[test0 unknownMethod] otherUnknownMethod];;
-  (void)(id)[[test1() unknownMethod] otherUnknownMethod];
-  id x = test0;
-  id y = test1();
-}
-
-// rdar://10988847
- at class NSString; // expected-note {{forward declaration of class here}}
-
-void rdar10988847() {
-  id s = [NSString stringWithUTF8String:"foo"]; // expected-warning {{receiver 'NSString' is a forward class and corresponding @interface may not exist}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/debugger-support.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/debugger-support.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/debugger-support.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fdebugger-support %s -emit-llvm -o - | FileCheck %s
-
-// rdar://problem/9416370
-void test0(id x) {
-  struct A { int w, x, y, z; };
-  struct A result = (struct A) [x makeStruct];
-  // CHECK:     define void @test0(
-  // CHECK:      [[X:%.*]] = alloca i8*, align 8
-  // CHECK-NEXT: [[RESULT:%.*]] = alloca [[A:%.*]], align 4
-  // CHECK-NEXT: store i8* {{%.*}}, i8** [[X]],
-  // CHECK-NEXT: [[T0:%.*]] = load i8** [[X]],
-  // CHECK-NEXT: [[T1:%.*]] = load i8** @"\01L_OBJC_SELECTOR_REFERENCES_"
-  // CHECK-NEXT: [[T2:%.*]] = call { i64, i64 } bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to { i64, i64 } (i8*, i8*)*)(i8* [[T0]], i8* [[T1]])
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,126 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -Wobjc-missing-property-synthesis -verify -Wno-objc-root-class %s
-// rdar://11295716
-
- at interface NSObject 
-- (void) release;
-- (id) retain;
- at end
- at class NSString;
-
- at interface SynthItAll : NSObject
- at property int howMany; // expected-warning {{auto property synthesis is synthesizing property not explicitly synthesized}}
- at property (retain) NSString* what; // expected-warning {{auto property synthesis is synthesizing property not explicitly synthesized}}
- at end
-
- at implementation SynthItAll // expected-note 2 {{detected while default synthesizing properties in class implementation}}
-//@synthesize howMany, what;
- at end
-
-
- at interface SynthSetter : NSObject
- at property (nonatomic) int howMany;   // expected-warning {{auto property synthesis is synthesizing property not explicitly synthesized}}
- at property (nonatomic, retain) NSString* what;  // expected-warning {{auto property synthesis is synthesizing property not explicitly synthesized}}
- at end
-
- at implementation SynthSetter // expected-note 2 {{detected while default synthesizing properties in class implementation}}
-//@synthesize howMany, what;
-
-- (int) howMany {
-    return _howMany;
-}
-// - (void) setHowMany: (int) value
-
-- (NSString*) what {
-    return _what;
-}
-// - (void) setWhat: (NSString*) value    
- at end
-
-
- at interface SynthGetter : NSObject
- at property (nonatomic) int howMany; // expected-warning {{auto property synthesis is synthesizing property not explicitly synthesized}} 
- at property (nonatomic, retain) NSString* what; // expected-warning {{auto property synthesis is synthesizing property not explicitly synthesized}}
- at end
-
- at implementation SynthGetter // expected-note 2 {{detected while default synthesizing properties in class implementation}}
-//@synthesize howMany, what;
-
-// - (int) howMany
-- (void) setHowMany: (int) value {
-    _howMany = value;
-}
-
-// - (NSString*) what
-- (void) setWhat: (NSString*) value {
-    if (_what != value) {
-        [_what release];
-        _what = [value retain];
-    }
-}
- at end
-
-
- at interface SynthNone : NSObject
- at property int howMany;
- at property (retain) NSString* what;
- at end
-
- at implementation SynthNone
-//@synthesize howMany, what;  // REM: Redundant anyway
-
-- (int) howMany {
-    return howMany; // expected-error {{use of undeclared identifier 'howMany'}}
-}
-- (void) setHowMany: (int) value {
-    howMany = value; // expected-error {{use of undeclared identifier 'howMany'}}
-}
-
-- (NSString*) what {
-    return what; // expected-error {{use of undeclared identifier 'what'}}
-}
-- (void) setWhat: (NSString*) value {
-    if (what != value) { // expected-error {{use of undeclared identifier 'what'}}
-        [what release]; // expected-error {{use of undeclared identifier 'what'}}
-        what = [value retain]; // expected-error {{use of undeclared identifier 'what'}}
-    }
-}
- at end
-
-// rdar://8349319
-// No default synthesis if implementation has getter (readonly) and setter(readwrite) methods.
- at interface DSATextSearchResult 
- at property(assign,readonly) float relevance;
- at property(assign,readonly) char isTitleMatch;
- at end
-
- at interface DSANodeSearchResult : DSATextSearchResult {}
- at end
-
-
- at implementation DSATextSearchResult 
--(char)isTitleMatch {
-    return (char)0;
-}
-
--(float)relevance {
-    return 0.0;
-}
- at end
-
- at implementation DSANodeSearchResult
--(id)initWithNode:(id )node relevance:(float)relevance isTitleMatch:(char)isTitleMatch {
-        relevance = 0.0;        
-        isTitleMatch = 'a';
-	return self;
-}
- at end
-
- at interface rdar11333367
- at property enum A x; // expected-note {{forward declaration of 'enum A'}} expected-note {{property declared here}}
- at property struct B y; // expected-note {{forward declaration of 'struct B'}} expected-note {{property declared here}} \
-                      // expected-warning {{auto property synthesis is synthesizing property not explicitly synthesized}}
- at end
- at implementation rdar11333367 // expected-error {{cannot synthesize property 'y' with incomplete type 'struct B'}} \
-                             // expected-note {{detected while default synthesizing properties in class implementation}}
- at synthesize x; // expected-error {{cannot synthesize property 'x' with incomplete type 'enum A'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-// rdar://8843851
-
- at interface StopAccessingIvarsDirectlyExample
- at property(strong) id name, rank, serialNumber;
- at end
-
- at implementation StopAccessingIvarsDirectlyExample
-
-- (void)identifyYourSelf {
-    if (self.name && self.rank && self.serialNumber)
-      self.name = 0;
-}
-
-// @synthesize name, rank, serialNumber;
-// default synthesis allows direct access to property ivars.
-- (id)init {
-        _name = _rank = _serialNumber = 0;
-	return self;
-}
-
-- (void)dealloc {	
-}
- at end
-
-
-// Test2
- at interface Test2 
- at property(strong, nonatomic) id object;
- at end
-
-// object has user declared setter/getter so it won't be
-// default synthesized; thus causing user error.
- at implementation Test2
-- (id) bar { return object; } // expected-error {{use of undeclared identifier 'object'}}
-- (void)setObject:(id)newObject {}
-- (id)object { return 0; }
- at end
-
-// Test3
- at interface Test3 
-{ 
-  id uid;  // expected-note {{instance variable is declared here}}
-} 
- at property (readwrite, assign) id uid;  // expected-note {{property declared here}}
- at end
-
-// rdar://11671080
- at implementation Test3 // expected-warning {{autosynthesized property 'uid' will use synthesized instance variable '_uid', not existing instance variable 'uid'}}
-// Oops, forgot to write @synthesize! will be default synthesized
-- (void) myMethod { 
-   self.uid = 0; // Use of the “setter” 
-   uid = 0; // Use of the wrong instance variable
-   _uid = 0; // Use of the property instance variable
-} 
- at end
-
- at interface Test4 { 
-  id _var;
-} 
- at property (readwrite, assign) id var; 
- at end
-
-
-// default synthesize property named 'var'
- at implementation Test4 
-- (id) myMethod {
-  return self->_var;  //  compiles because 'var' is synthesized by default
-}
- at end
-
- at interface Test5 
-{ 
-  id _var;
-} 
- at property (readwrite, assign) id var; 
- at end
-
-// default synthesis of property 'var'
- at implementation Test5 
-- (id) myMethod {
-  Test5 *foo = 0; 
-  return foo->_var; // OK
-} 
- at end
-
- at interface Test6 
-{ 
-  id _var; // expected-note {{'_var' declared here}}
-} 
- at property (readwrite, assign) id var; 
- at end
-
-// no default synthesis. So error is expected.
- at implementation Test6 
-- (id) myMethod 
-{
-  return var; // expected-error {{use of undeclared identifier 'var'}}
-} 
- at synthesize var = _var; 
- at end
-
-int* _object;
-
- at interface Test7
- at property (readwrite, assign) id object; 
- at end
-
-// With default synthesis, '_object' is be the synthesized ivar not the global
-// 'int*' object. So no error.
- at implementation Test7 
-- (id) myMethod {
-  return _object;
-} 
- at end
-
-// rdar://11671080
- at interface Test8
-{
-  id _y;
-  id y; // expected-note {{instance variable is declared here}}
-}
- at property(copy) id y; // expected-note {{property declared here}}
- at end
-
-
- at implementation Test8 @end // expected-warning {{autosynthesized property 'y' will use  instance variable '_y', not existing instance variable 'y'}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,113 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-
-#if __has_attribute(objc_requires_property_definitions)
-__attribute ((objc_requires_property_definitions)) 
-#endif
- at interface NoAuto // expected-note 2 {{class with specified objc_requires_property_definitions attribute is declared here}}
- at property int NoAutoProp; // expected-note 2 {{property declared here}}
- at end
-
- at implementation NoAuto  // expected-warning {{property 'NoAutoProp' requires method 'NoAutoProp' to be defined}} \
-                        // expected-warning {{property 'NoAutoProp' requires method 'setNoAutoProp:'}}
- at end
-
-__attribute ((objc_requires_property_definitions))  // redundant, just for testing
- at interface Sub : NoAuto  // expected-note 3 {{class with specified objc_requires_property_definitions attribute is declared here}}
- at property (copy) id SubProperty; // expected-note 2 {{property declared here}}
- at end
-
- at implementation Sub // expected-warning {{property 'SubProperty' requires method 'SubProperty' to be defined}} \
-                    // expected-warning {{property 'SubProperty' requires method 'setSubProperty:' to be defined}}
- at end
-
- at interface Deep : Sub
- at property (copy) id DeepProperty;
- at property (copy) id DeepSynthProperty;
- at property (copy) id DeepMustSynthProperty; // expected-note {{property declared here}}
- at end
-
- at implementation Deep // expected-warning {{property 'DeepMustSynthProperty' requires method 'setDeepMustSynthProperty:' to be defined}}
- at dynamic DeepProperty;
- at synthesize DeepSynthProperty;
-- (id) DeepMustSynthProperty { return 0; }
- at end
-
-__attribute ((objc_requires_property_definitions)) 
- at interface Deep(CAT)  // expected-error {{attributes may not be specified on a category}}
- at end
-
-__attribute ((objc_requires_property_definitions)) // expected-error {{objc_requires_property_definitions attribute may only be specified on a class}} 
- at protocol P @end
-
-// rdar://13388503
- at interface NSObject @end
- at protocol Foo
- at property (readonly) char isFoo; // expected-note {{property declared here}}
- at property (readonly) char isNotFree;
- at end
-
- at interface Bar : NSObject <Foo>
- at end
-
- at implementation Bar
-- (char)isFoo {
-    return 0;
-}
-- (char)isNotFree {
-    return 0;
-}
- at end
-
- at interface Baz : Bar
- at end
-
- at interface Baz ()
- at property (readwrite) char isFoo; // expected-warning {{auto property synthesis will not synthesize property 'isFoo' because it is 'readwrite' but it will be synthesized 'readonly' via another property}}
- at property char Property1; // expected-warning {{auto property synthesis will not synthesize property 'Property1' because it cannot share an ivar with another synthesized property}}
- at property char Property2;
- at property (readwrite) char isNotFree;
- at end
-
- at implementation Baz {
-    char _isFoo;
-    char _isNotFree;
-}
- at synthesize Property2 = Property1; // expected-note {{property synthesized here}}
-
-- (void) setIsNotFree : (char)Arg {
-  _isNotFree = Arg;
-}
-
- at end
-
-// More test where such warnings should not be issued.
- at protocol MyProtocol
--(void)setProp1:(id)x;
- at end
-
- at protocol P1 <MyProtocol>
- at end
-
- at interface B
- at property (readonly) id prop;
- at property (readonly) id prop1;
- at property (readonly) id prop2;
- at end
-
- at interface B()
--(void)setProp:(id)x;
- at end
-
- at interface B(cat)
- at property (readwrite) id prop2;
- at end
-
- at interface S : B<P1>
- at property (assign,readwrite) id prop;
- at property (assign,readwrite) id prop1;
- at property (assign,readwrite) id prop2;
- at end
-
- at implementation S
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/default-synthesize.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,140 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-
- at interface NSString @end
-
- at interface NSObject @end
-
- at interface SynthItAll
- at property int howMany;
- at property (retain) NSString* what;
- at end
-
- at implementation SynthItAll
-#if !__has_feature(objc_default_synthesize_properties)
- at synthesize howMany, what;
-#endif
- at end
-
-
- at interface SynthSetter : NSObject
- at property (nonatomic) int howMany;  // REM: nonatomic to avoid warnings about only implementing one of the pair
- at property (nonatomic, retain) NSString* what;
- at end
-
- at implementation SynthSetter
-#if !__has_feature(objc_default_synthesize_properties)
- at synthesize howMany, what;
-#endif
-
-- (int) howMany {
-    return self.howMany;
-}
-// - (void) setHowMany: (int) value
-
-- (NSString*) what {
-    return self.what;
-}
-// - (void) setWhat: (NSString*) value    
- at end
-
-
- at interface SynthGetter : NSObject
- at property (nonatomic) int howMany;  // REM: nonatomic to avoid warnings about only implementing one of the pair
- at property (nonatomic, retain) NSString* what;
- at end
-
- at implementation SynthGetter
-#if !__has_feature(objc_default_synthesize_properties)
- at synthesize howMany, what;
-#endif
-
-// - (int) howMany
-- (void) setHowMany: (int) value {
-    self.howMany = value;
-}
-
-// - (NSString*) what
-- (void) setWhat: (NSString*) value {
-    if (self.what != value) {
-    }
-}
- at end
-
-
- at interface SynthNone : NSObject
- at property int howMany;
- at property (retain) NSString* what;
- at end
-
- at implementation SynthNone
-#if !__has_feature(objc_default_synthesize_properties)
- at synthesize howMany, what;  // REM: Redundant anyway
-#endif
-
-- (int) howMany {
-    return self.howMany;
-}
-- (void) setHowMany: (int) value {
-    self.howMany = value;
-}
-
-- (NSString*) what {
-    return self.what;
-}
-- (void) setWhat: (NSString*) value {
-    if (self.what != value) {
-    }
-}
- at end
-
- at protocol TopProtocol
-  @property (readonly) id myString;
- at end
-
- at interface TopClass <TopProtocol> 
-{
-  id myString; 
-}
- at end
-
- at interface SubClass : TopClass <TopProtocol> 
- at end
-
- at implementation SubClass @end 
-
-// rdar://7920807
- at interface C @end
- at interface C (Category)
- at property int p; // expected-note 2 {{property declared here}}
- at end
- at implementation C (Category) // expected-warning {{property 'p' requires method 'p' to be defined}} \
-                             // expected-warning {{property 'p' requires method 'setP:' to be defined}}
- at end
-
-// Don't complain if a property is already @synthesized by usr.
- at interface D
-{
-}
- at property int PROP;
- at end
-
- at implementation D
-- (int) Meth { return self.PROP; }
-#if __has_feature(objc_default_synthesize_properties)
- at synthesize PROP=IVAR;
-#endif
- at end
-
-// rdar://10567333
- at protocol MyProtocol 
- at property (nonatomic, strong) NSString *requiredString; // expected-note {{property declared here}}
-
- at optional
- at property (nonatomic, strong) NSString *optionalString;
- at end
- 
- at interface MyClass <MyProtocol> 
- at end
- 
- at implementation MyClass // expected-warning {{auto property synthesis will not synthesize property declared in a protocol}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/delay-parsing-cfunctions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/delay-parsing-cfunctions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/delay-parsing-cfunctions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Werror -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://10387088
-
- at interface MyClass
-- (void)someMethod;
- at end
-
- at implementation MyClass
-- (void)someMethod {
-    [self privateMethod];  // clang already does not warn here
-}
-
-int bar(MyClass * myObject) {
-    [myObject privateMethod]; 
-    return gorfbar(myObject);
-}
-- (void)privateMethod { }
-
-int gorfbar(MyClass * myObject) {
-    [myObject privateMethod]; 
-    [myObject privateMethod1]; 
-    return getMe + bar(myObject);
-}
-
-int KR(myObject)
-MyClass * myObject;
-{
-    [myObject privateMethod];
-    [myObject privateMethod1];
-    return getMe + bar(myObject);
-}
-
-- (void)privateMethod1 {
-  getMe = getMe+1;
-}
-
-static int getMe;
-
-static int test() {
-  return 0;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/deprecated-objc-introspection.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/deprecated-objc-introspection.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/deprecated-objc-introspection.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -triple=x86_64-apple-darwin -fsyntax-only -verify %s
-
-//====------------------------------------------------------------====//
-// Test deprecated direct usage of the 'isa' pointer.
-//====------------------------------------------------------------====//
-
-typedef unsigned long NSUInteger;
-
-typedef struct objc_object {
-  struct objc_class *isa;
-} *id;
-
- at interface NSObject {
-  id firstobj;
-  struct objc_class *isa;
-}
- at end
- at interface Whatever : NSObject
-+self;
- at end
-
-static void func() {
- 
-  id x;
-
-  // rdar://8290002
-  [(*x).isa self]; // expected-warning {{direct access to Objective-C's isa is deprecated in favor of object_getClass()}}
-  [x->isa self]; // expected-warning {{direct access to Objective-C's isa is deprecated in favor of object_getClass()}}
-  
-  Whatever *y;
-
-  // GCC allows this, with the following warning: 
-  //   instance variable 'isa' is @protected; this will be a hard error in the future
-  //
-  // FIXME: see if we can avoid the warning that follows the error.
-  [(*y).isa self]; // expected-error {{instance variable 'isa' is protected}} \
-                      expected-warning{{receiver type 'struct objc_class *' is not 'id' or interface pointer, consider casting it to 'id'}}
-  [y->isa self]; // expected-error {{instance variable 'isa' is protected}} \
-                    expected-warning{{receiver type 'struct objc_class *' is not 'id' or interface pointer, consider casting it to 'id'}}
-}
-
-// rdar://11702488
-// If an ivar is (1) the first ivar in a root class and (2) named `isa`,
-// then it should get the same warnings that id->isa gets.
-
- at interface BaseClass {
- at public
-    Class isa; // expected-note 4 {{instance variable is declared here}}
-}
- at end
-
- at interface OtherClass {
- at public
-    id    firstIvar;
-    Class isa; // note, not first ivar;
-}
- at end
-
- at interface Subclass : BaseClass @end
-
- at interface SiblingClass : BaseClass @end
-
- at interface Root @end
-
- at interface hasIsa : Root {
- at public
-  Class isa; // note, isa is not in root class
-}
- at end
-
- at implementation Subclass
--(void)method {
-    hasIsa *u;
-    id v;
-    BaseClass *w;
-    Subclass *x;
-    SiblingClass *y;
-    OtherClass *z;
-    (void)v->isa; // expected-warning {{direct access to Objective-C's isa is deprecated in favor of object_getClass()}}
-    (void)w->isa; // expected-warning {{direct access to Objective-C's isa is deprecated in favor of object_getClass()}}
-    (void)x->isa; // expected-warning {{direct access to Objective-C's isa is deprecated in favor of object_getClass()}}
-    (void)y->isa; // expected-warning {{direct access to Objective-C's isa is deprecated in favor of object_getClass()}}
-    (void)z->isa;
-    (void)u->isa;
-
-    w->isa = 0; // expected-warning {{assignment to Objective-C's isa is deprecated in favor of object_setClass()}}
-}
- at end
-
-// Test for introspection of Objective-C pointers via bitmasking.
-
-void testBitmasking(NSObject *p) {
-  (void) (((NSUInteger) p) & 0x1); // expected-warning {{bitmasking for introspection of Objective-C object pointers is strongly discouraged}}
-  (void) (0x1 & ((NSUInteger) p)); // expected-warning {{bitmasking for introspection of Objective-C object pointers is strongly discouraged}}
-  (void) (((NSUInteger) p) ^ 0x1); // no-warning
-  (void) (0x1 ^ ((NSUInteger) p)); // no-warning
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/deref-interface.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/deref-interface.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/deref-interface.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s
-
- at interface NSView 
-  - (id)initWithView:(id)realView;
- at end
-
- at implementation NSView
- - (id)initWithView:(id)realView {
-     *(NSView *)self = *(NSView *)realView;	// expected-error {{cannot assign to class object}}
- }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/direct-synthesized-ivar-access.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/direct-synthesized-ivar-access.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/direct-synthesized-ivar-access.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://8673791
-// rdar://9943851
-
- at interface I {
-}
-
- at property int IVAR; 
-- (int) OK;
- at end
-
- at implementation I
-- (int) Meth { return _IVAR; }
-- (int) OK { return self.IVAR; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/dist-object-modifiers.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/dist-object-modifiers.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/dist-object-modifiers.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://7076235
-
- at protocol P
-- (bycopy id)serverPID; // expected-note {{previous declaration is here}}
-- (void)doStuff:(bycopy id)clientId; // expected-note {{previous declaration is here}}
-- (bycopy id)Ok;
-+ (oneway id) stillMore : (byref id)Arg : (bycopy oneway id)Arg1;  // expected-note 3 {{previous declaration is here}}
- at end
-
- at interface I <P>
-- (id)Ok;
- at end
-
- at implementation I
-- (id)serverPID { return 0; } // expected-warning {{conflicting distributed object modifiers on return type in implementation of 'serverPID'}}
-- (void)doStuff:(id)clientId { } // expected-warning {{conflicting distributed object modifiers on parameter type in implementation of 'doStuff:'}}
-- (bycopy id)Ok { return 0; }
-+ (id) stillMore : (id)Arg  : (bycopy id)Arg1 { return Arg; } // expected-warning {{conflicting distributed object modifiers on return type in implementation of 'stillMore::'}} \
-                                                              // expected-warning 2{{conflicting distributed object modifiers on parameter type in implementation of 'stillMore::'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-ivar-check.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-ivar-check.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-ivar-check.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface B1 {
- at public
-  double fill_B;	// expected-note {{previous declaration is here}}
-  unsigned : 0;
-}
- at end
-
- at interface B : B1 {
- at public
-  int one;	// expected-note {{previous declaration is here}}
-  int one;	// expected-error {{duplicate member 'one'}}
-  unsigned : 0;
-}
- at end
-
- at interface A : B {
- at public
-  int fill_B;	// expected-error {{duplicate member 'fill_B'}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-ivar-in-class-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-ivar-in-class-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-ivar-in-class-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface Root @end
-
- at interface SuperClass  : Root 
-{
-  int iSuper;	// expected-note {{previous declaration is here}}
-}
- at end
-
- at interface SubClass : SuperClass {
-    int ivar;	// expected-error {{duplicate member 'ivar'}}
-    int another_ivar;	// expected-error {{duplicate member 'another_ivar'}}
-    int iSuper;	// expected-error {{duplicate member 'iSuper'}}
-}
- at end
-
- at interface SuperClass () {
-   int ivar;	// expected-note {{previous declaration is here}}
-}
- at end
-
- at interface Root () {
-  int another_ivar;	// expected-note {{previous declaration is here}}
-}
- at end
-
- at implementation SubClass
--(int) method {
-        return self->ivar;  // would be ambiguous if the duplicate ivar were allowed
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-property-class-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-property-class-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-property-class-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://7629420
-
- at interface Foo 
- at property (readonly) char foo; 
- at property (readwrite) char bar; // expected-note {{property declared here}}
- at end
-
- at interface Foo ()
- at property (readwrite) char foo; // expected-note 2 {{property declared here}} 
- at property (readwrite) char NewProperty; // expected-note 2 {{property declared here}} 
- at property (readwrite) char bar; // expected-error{{illegal redeclaration of 'readwrite' property in class extension 'Foo' (perhaps you intended this to be a 'readwrite' redeclaration of a 'readonly' public property?)}}
- at end
-
- at interface Foo ()
- at property (readwrite) char foo;	 // expected-error {{property has a previous declaration}}
- at property (readwrite) char NewProperty; // expected-error {{property has a previous declaration}}
- at end
-
- at interface Foo ()
- at property (readonly) char foo; // expected-error {{property has a previous declaration}}
- at property (readwrite) char NewProperty; // expected-error {{property has a previous declaration}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/duplicate-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface Foo {
-  id x;
-}
- at property (nonatomic, retain) id x; // expected-note{{property declared here}}
- at property (nonatomic, retain) id x; // expected-error{{property has a previous declaration}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/enhanced-proto-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/enhanced-proto-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/enhanced-proto-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at protocol MyProto1 
- at optional
-- (void) FOO;
- at optional
-- (void) FOO1;
- at optional 
-- (void) REQ;
- at optional
- at end
-
- at interface  MyProto2 <MyProto1>
-- (void) FOO2;
-- (void) FOO3;
- at end
-
- at implementation MyProto2
-- (void) FOO2{}
-- (void) FOO3{}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/enum-fixed-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/enum-fixed-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/enum-fixed-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-#if !__has_feature(objc_fixed_enum)
-#  error Enumerations with a fixed underlying type are not supported
-#endif
-
-typedef long Integer;
-
-typedef enum : Integer { Enumerator1, Enumerator2 } Enumeration;
-
-int array[sizeof(Enumeration) == sizeof(long)? 1 : -1];
-
-
-enum Color { Red, Green, Blue };
-
-struct X { 
-  enum Color : 4;
-  enum Color field1: 4;
-  enum Other : Integer field2;
-  enum Other : Integer field3 : 4;
-  enum  : Integer { Blah, Blarg } field4 : 4;
-};
-
-void test() {
-  long value = 2;
-  Enumeration e = value;
-}
-
-// <rdar://10381507>
-typedef enum : long { Foo } IntegerEnum;
-int arr[(sizeof(__typeof__(Foo)) == sizeof(__typeof__(IntegerEnum)))? 1 : -1];
-int arr1[(sizeof(__typeof__(Foo)) == sizeof(__typeof__(long)))? 1 : -1];
-int arr2[(sizeof(__typeof__(IntegerEnum)) == sizeof(__typeof__(long)))? 1 : -1];
-
-// <rdar://problem/10760113>
-typedef enum : long long { Bar = -1 } LongLongEnum;
-int arr3[(long long)Bar == (long long)-1 ? 1 : -1];
-
-typedef enum : Integer { BaseElem } BaseEnum;
-typedef enum : BaseEnum { DerivedElem } DerivedEnum; // expected-error {{non-integral type 'BaseEnum' is an invalid underlying type}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/err-ivar-access-in-class-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/err-ivar-access-in-class-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/err-ivar-access-in-class-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://10593227
-
- at class UIWindow;
-
- at interface CNAppDelegate
-
- at property (strong, nonatomic) UIWindow *window;
-
- at end
-
-
- at interface CNAppDelegate ()
- at property (nonatomic,retain) id foo;
- at end
-
- at implementation CNAppDelegate
- at synthesize foo;
- at synthesize window = _window;
-
-+(void)myClassMethod;
-{
-        foo = 0; // expected-error {{instance variable 'foo' accessed in class method}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/error-implicit-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/error-implicit-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/error-implicit-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -Wno-objc-root-class -verify %s
-// rdar://11273060
-
- at interface I
-- (void) setP : (int)arg;
- at end
-
- at interface J
-  - (int) P;
- at end
-
- at interface K @end
-
- at interface II @end
-
- at implementation II
-- (void) Meth : (I*) arg {
-  arg.P++; // expected-error {{no getter method 'P' for increment of property}}
-  --arg.P; // expected-error {{no getter method 'P' for decrement of property}}
-}
-- (void) Meth1 : (J*) arg {
-  arg.P++; // expected-error {{no setter method 'setP:' for increment of property}}
-  arg.P--; // expected-error {{no setter method 'setP:' for decrement of property}}
-}
-
-- (void) Meth2 : (K*) arg {
-  arg.P++; // expected-error {{property 'P' not found on object of type 'K *'}}
-  arg.P--; // expected-error {{property 'P' not found on object of type 'K *'}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/error-missing-getter.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/error-missing-getter.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/error-missing-getter.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://8155806
-
- at interface Subclass 
-{
-    int setterOnly;
-}
-- (void) setSetterOnly : (int) arg;
- at end
-
-int func (int arg, Subclass *x) {
-    if (x.setterOnly) { // expected-error {{no getter method for read from property}}
-      x.setterOnly = 1;
-    }
-    func(x.setterOnly + 1, x); // expected-error {{no getter method for read from property}}
-    int i = x.setterOnly + 1;  // expected-error {{no getter method for read from property}}
-    return x.setterOnly + 1;   // expected-error {{no getter method for read from property}}
-}
-
-// <rdar://problem/12765391>
-
- at interface TestClass 
-+ (void) setSetterOnly : (int) arg;
- at end
-
-int func2 (int arg) {
-    if (TestClass.setterOnly) { // expected-error {{no getter method for read from property}}
-      TestClass.setterOnly = 1;
-    }
-    func(TestClass.setterOnly + 1, x); // expected-error {{no getter method for read from property}}
-    int i = TestClass.setterOnly + 1;  // expected-error {{no getter method for read from property}}
-    return TestClass.setterOnly + 1;   // expected-error {{no getter method for read from property}}
-}
-
- at interface Sub : Subclass
-- (int) func3;
- at end
- at implementation Sub
-- (int) func3 {
-	return super.setterOnly; // expected-error {{no getter method for read from property}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/error-outof-scope-property-use.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/error-outof-scope-property-use.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/error-outof-scope-property-use.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-// rdar://13178483
-
- at class NSMutableDictionary;
-
- at interface LaunchdJobs 
-
- at property (nonatomic,retain) NSMutableDictionary *uuids_jobs; // expected-note 2 {{'_uuids_jobs' declared here}}
-
- at end
-
- at implementation LaunchdJobs
-
--(void)job
-{
-
- [uuids_jobs objectForKey]; // expected-error {{use of undeclared identifier 'uuids_jobs'}} \
-                            // expected-warning {{instance method '-objectForKey' not found}}
-}
-
-
- at end
-
-void
-doLaunchdJobCPU()
-{
- [uuids_jobs enumerateKeysAndObjectsUsingBlock]; // expected-error {{use of undeclared identifier 'uuids_jobs'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/error-property-gc-attr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/error-property-gc-attr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/error-property-gc-attr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-gc -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -triple i386-apple-darwin9 -fobjc-gc -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface INTF
-{
-  id IVAR; // expected-note {{instance variable is declared here}}
-  __weak id II;
-  __weak id WID;
-  id ID;
-  __weak INTF* AWEAK;
-  __weak INTF* WI;
-}
- at property (assign) __weak id pweak;
- at property (assign) __weak id WID;
- at property (assign) __strong id NOT;
- at property (assign)  id ID;
- at property (assign) INTF* AWEAK;
- at property (assign) __weak INTF* WI;
- at end	
-
- at implementation INTF
- at synthesize pweak=IVAR;  // expected-error {{existing instance variable 'IVAR' for __weak property 'pweak' must be __weak}}
- at synthesize NOT=II; // expected-error {{existing instance variable 'II' for strong property 'NOT' may not be __weak}}
- at synthesize WID;
- at synthesize ID;
- at synthesize AWEAK; // expected-error {{existing instance variable 'AWEAK' for strong property 'AWEAK' may not be __weak}}
- at synthesize WI;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/exprs.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/exprs.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/exprs.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -fblocks -verify -Wno-unreachable-code
-
-// rdar://6597252
-Class test1(Class X) {
-  return 1 ? X : X;
-}
-
-
-// rdar://6079877
-void test2() {
-  id str = @"foo" 
-          "bar\0"    // no-warning
-          @"baz"  " blarg";
-  id str2 = @"foo" 
-            "bar"
-           @"baz"
-           " b\0larg";  // no-warning
-
-  
-  if (@encode(int) == "foo") { }  // expected-warning {{result of comparison against @encode is unspecified}}
-}
-
-#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
-void (^foo)(int, int) = ^(int x, int y) { int z = MAX(x, y); };
-
-
-
-// rdar://8445858
- at class Object;
-static Object *g;
-void test3(Object *o) {
-  // this is ok.
-  __sync_bool_compare_and_swap(&g, 0, o);
-}
-
- at class Incomplete_ObjC_class; // expected-note{{forward declaration of class here}}
-struct Incomplete_struct; // expected-note {{forward declaration}}
-
-void test_encode() {
-  (void)@encode(Incomplete_ObjC_class); // expected-error {{incomplete type}}
-  (void)@encode(struct Incomplete_struct); // expected-error {{incomplete type}}
-  (void)@encode(Incomplete_ObjC_class*);
-  (void)@encode(id);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/foreach.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/foreach.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/foreach.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-/* RUN: %clang_cc1 -Wall -fsyntax-only -verify -std=c89 -pedantic %s
- */
-
- at class NSArray;
-
-void f(NSArray *a) {
-    id keys;
-    for (int i in a); /* expected-error{{selector element type 'int' is not a valid object}} */
-    for ((id)2 in a); /* expected-error{{selector element is not a valid lvalue}} */
-    for (2 in a); /* expected-error{{selector element is not a valid lvalue}} */
-  
-  /* This should be ok, 'thisKey' should be scoped to the loop in question,
-   * and no diagnostics even in pedantic mode should happen.
-   * rdar://6814674
-   */
-  for (id thisKey in keys);
-  for (id thisKey in keys);
-}
-
-/* // rdar://9072298 */
- at protocol NSObject @end
-
- at interface NSObject <NSObject> {
-    Class isa;
-}
- at end
-
-typedef struct {
-    unsigned long state;
-    id *itemsPtr;
-    unsigned long *mutationsPtr;
-    unsigned long extra[5];
-} NSFastEnumerationState;
-
- at protocol NSFastEnumeration
-
-- (unsigned long)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(unsigned long)len;
-
- at end
-
-int main ()
-{
- NSObject<NSFastEnumeration>* collection = ((void*)0);
- for (id thing in collection) { }
-
- return 0;
-}
-
-/* rdar://problem/11068137 */
- at interface Test2
- at property (assign) id prop;
- at end
-void test2(NSObject<NSFastEnumeration> *collection) {
-  Test2 *obj;
-  for (obj.prop in collection) { /* expected-error {{selector element is not a valid lvalue}} */
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/format-arg-attribute.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/format-arg-attribute.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/format-arg-attribute.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only %s
-
- at class NSString;
-
-extern NSString *fa2 (const NSString *) __attribute__((format_arg(1)));
-extern NSString *fa3 (NSString *) __attribute__((format_arg(1)));
-
-extern void fc1 (const NSString *) __attribute__((format_arg));  // expected-error {{attribute takes one argument}}
-extern void fc2 (const NSString *) __attribute__((format_arg())); // expected-error {{attribute takes one argument}}
-extern void fc3 (const NSString *) __attribute__((format_arg(1, 2))); // expected-error {{attribute takes one argument}}
-
-struct s1 { int i; } __attribute__((format_arg(1)));  // expected-warning {{'format_arg' attribute only applies to functions}}
-union u1 { int i; } __attribute__((format_arg(1)));  // expected-warning {{'format_arg' attribute only applies to functions}}
-enum e1 { E1V0 } __attribute__((format_arg(1))); // expected-warning {{'format_arg' attribute only applies to functions}}
-
-extern NSString *ff3 (const NSString *) __attribute__((format_arg(3-2)));
-extern NSString *ff4 (const NSString *) __attribute__((format_arg(foo))); // expected-error {{use of undeclared identifier 'foo'}}
-
-/* format_arg formats must take and return a string.  */
-extern NSString *fi0 (int) __attribute__((format_arg(1)));  // expected-error {{format argument not a string type}}
-extern NSString *fi1 (NSString *) __attribute__((format_arg(1))); 
-
-extern NSString *fi2 (NSString *) __attribute__((format_arg(1))); 
-
-extern int fi3 (const NSString *) __attribute__((format_arg(1)));  // expected-error {{function does not return NSString}}
-extern NSString *fi4 (const NSString *) __attribute__((format_arg(1))); 
-extern NSString *fi5 (const NSString *) __attribute__((format_arg(1))); 

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/format-strings-objc.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/format-strings-objc.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/format-strings-objc.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,243 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -Wformat-nonliteral -fsyntax-only -fblocks -verify -Wno-objc-root-class %s
-
-//===----------------------------------------------------------------------===//
-// The following code is reduced using delta-debugging from
-// Foundation.h (Mac OS X).
-//
-// It includes the basic definitions for the test cases below.
-// Not including Foundation.h directly makes this test case both svelt and
-// portable to non-Mac platforms.
-//===----------------------------------------------------------------------===//
-
-#include <stdarg.h>
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef long NSInteger;
- at class NSString, Protocol;
-extern void NSLog(NSString *format, ...);
-extern void NSLogv(NSString *format, va_list args);
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} @end
-typedef float CGFloat;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>    - (NSUInteger)length; @end
- at interface NSSimpleCString : NSString {} @end
- at interface NSConstantString : NSSimpleCString @end
-extern void *_NSConstantStringClassReference;
-
-typedef const struct __CFString * CFStringRef;
-extern void CFStringCreateWithFormat(CFStringRef format, ...) __attribute__((format(CFString, 1, 2)));
-#define CFSTR(cStr)  ((CFStringRef) __builtin___CFStringMakeConstantString ("" cStr ""))
-
-// This function is used instead of the builtin if -fno-constant-cfstrings.
-// The definition on Mac OS X is NOT annotated with format_arg as of 10.8,
-// but clang will implicitly add the attribute if it's not written.
-extern CFStringRef __CFStringMakeConstantString(const char *);
-
-int printf(const char * restrict, ...) ;
-
-//===----------------------------------------------------------------------===//
-// Test cases.
-//===----------------------------------------------------------------------===//
-
-void check_nslog(unsigned k) {
-  NSLog(@"%d%%", k); // no-warning
-  NSLog(@"%s%lb%d", "unix", 10,20); // expected-warning {{invalid conversion specifier 'b'}}
-}
-
-// Check type validation
-extern void NSLog2(int format, ...) __attribute__((format(__NSString__, 1, 2))); // expected-error {{format argument not an NSString}}
-extern void CFStringCreateWithFormat2(int *format, ...) __attribute__((format(CFString, 1, 2))); // expected-error {{format argument not a CFString}}
-
-// <rdar://problem/7068334> - Catch use of long long with int arguments.
-void rdar_7068334() {
-  long long test = 500;  
-  printf("%i ",test); // expected-warning{{format specifies type 'int' but the argument has type 'long long'}}
-  NSLog(@"%i ",test); // expected-warning{{format specifies type 'int' but the argument has type 'long long'}}
-  CFStringCreateWithFormat(CFSTR("%i"),test); // expected-warning{{format specifies type 'int' but the argument has type 'long long'}}
-}
-
-// <rdar://problem/7697748>
-void rdar_7697748() {
-  NSLog(@"%@!"); // expected-warning{{more '%' conversions than data arguments}}
-}
-
- at protocol Foo;
-
-void test_p_conversion_with_objc_pointer(id x, id<Foo> y) {
-  printf("%p", x); // no-warning
-  printf("%p", y); // no-warning
-}
-
-// <rdar://problem/10696348>, PR 10274 - CFString and NSString formats are ignored
-extern void MyNSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-extern void MyCFStringCreateWithFormat(CFStringRef format, ...) __attribute__((format(__CFString__, 1, 2)));
-
-void check_mylog() {
-  MyNSLog(@"%@"); // expected-warning {{more '%' conversions than data arguments}}
-  MyCFStringCreateWithFormat(CFSTR("%@")); // expected-warning {{more '%' conversions than data arguments}}
-}
-
-// PR 10275 - format function attribute isn't checked in Objective-C methods
- at interface Foo
-+ (id)fooWithFormat:(NSString *)fmt, ... __attribute__((format(__NSString__, 1, 2)));
-+ (id)fooWithCStringFormat:(const char *)format, ... __attribute__((format(__printf__, 1, 2)));
- at end
-
-void check_method() {
-  [Foo fooWithFormat:@"%@"]; // expected-warning {{more '%' conversions than data arguments}}
-  [Foo fooWithCStringFormat:"%@"]; // expected-warning {{invalid conversion specifier '@'}}
-}
-
-// Warn about using BOOL with %@
-void rdar10743758(id x) {
-  NSLog(@"%@ %@", x, (BOOL) 1); // expected-warning {{format specifies type 'id' but the argument has type 'BOOL' (aka 'signed char')}}
-}
-
-NSString *test_literal_propagation(void) {
-  const char * const s1 = "constant string %s"; // expected-note {{format string is defined here}}
-  printf(s1); // expected-warning {{more '%' conversions than data arguments}}
-  const char * const s5 = "constant string %s"; // expected-note {{format string is defined here}}
-  const char * const s2 = s5;
-  printf(s2); // expected-warning {{more '%' conversions than data arguments}}
-
-  const char * const s3 = (const char *)0;
-  printf(s3); // no-warning (NULL is a valid format string)
-
-  NSString * const ns1 = @"constant string %s"; // expected-note {{format string is defined here}}
-  NSLog(ns1); // expected-warning {{more '%' conversions than data arguments}}
-  NSString * const ns5 = @"constant string %s"; // expected-note {{format string is defined here}}
-  NSString * const ns2 = ns5;
-  NSLog(ns2); // expected-warning {{more '%' conversions than data arguments}}
-  NSString * ns3 = ns1;
-  NSLog(ns3); // expected-warning {{format string is not a string literal}}}
-}
-
-// Do not emit warnings when using NSLocalizedString
-#include "format-strings-system.h"
-
-// Test it inhibits diag only for macros in system headers
-#define MyNSLocalizedString(key) GetLocalizedString(key)
-#define MyNSAssert(fmt, arg) NSLog(fmt, arg, 0, 0)
-
-void check_NSLocalizedString() {
-  [Foo fooWithFormat:NSLocalizedString(@"format"), @"arg"]; // no-warning
-  [Foo fooWithFormat:MyNSLocalizedString(@"format"), @"arg"]; // expected-warning {{format string is not a string literal}}}
-}
-
-void check_NSAssert() {
-  NSAssert(@"Hello %@", @"World"); // no-warning
-  MyNSAssert(@"Hello %@", @"World"); // expected-warning  {{data argument not used by format string}}
-}
-
-typedef __WCHAR_TYPE__ wchar_t;
-
-// Test that %S, %C, %ls check for 16 bit types in ObjC strings, as described at
-// http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265
-
-void test_percent_S() {
-  const unsigned short data[] = { 'a', 'b', 0 };
-  const unsigned short* ptr = data;
-  NSLog(@"%S", ptr);  // no-warning
-
-  const wchar_t* wchar_ptr = L"ab";
-  NSLog(@"%S", wchar_ptr);  // expected-warning{{format specifies type 'const unichar *' (aka 'const unsigned short *') but the argument has type 'const wchar_t *'}}
-}
-
-void test_percent_ls() {
-  const unsigned short data[] = { 'a', 'b', 0 };
-  const unsigned short* ptr = data;
-  NSLog(@"%ls", ptr);  // no-warning
-
-  const wchar_t* wchar_ptr = L"ab";
-  NSLog(@"%ls", wchar_ptr);  // expected-warning{{format specifies type 'const unichar *' (aka 'const unsigned short *') but the argument has type 'const wchar_t *'}}
-}
-
-void test_percent_C() {
-  const unsigned short data = 'a';
-  NSLog(@"%C", data);  // no-warning
-
-  const wchar_t wchar_data = L'a';
-  NSLog(@"%C", wchar_data);  // expected-warning{{format specifies type 'unichar' (aka 'unsigned short') but the argument has type 'wchar_t'}}
-}
-
-// Test that %@ works with toll-free bridging (<rdar://problem/10814120>).
-void test_toll_free_bridging(CFStringRef x, id y) {
-  NSLog(@"%@", x); // no-warning
-  CFStringCreateWithFormat(CFSTR("%@"), x); // no-warning
-
-  NSLog(@"%@", y); // no-warning
-  CFStringCreateWithFormat(CFSTR("%@"), y); // no-warning
-}
-
- at interface Bar
-+ (void)log:(NSString *)fmt, ...;
-+ (void)log2:(NSString *)fmt, ... __attribute__((format(NSString, 1, 2)));
- at end
-
- at implementation Bar
-
-+ (void)log:(NSString *)fmt, ... {
-  va_list ap;
-  va_start(ap,fmt);
-  NSLogv(fmt, ap); // expected-warning{{format string is not a string literal}}
-  va_end(ap);
-}
-
-+ (void)log2:(NSString *)fmt, ... {
-  va_list ap;
-  va_start(ap,fmt);
-  NSLogv(fmt, ap); // no-warning
-  va_end(ap);
-}
-
- at end
-
-
-// Test that it is okay to use %p with the address of a block.
-void rdar11049844_aux();
-int rdar11049844() {
-  typedef void (^MyBlock)(void);
-  MyBlock x = ^void() { rdar11049844_aux(); };
-  printf("%p", x);  // no-warning
-}
-
-void test_nonBuiltinCFStrings() {
-  CFStringCreateWithFormat(__CFStringMakeConstantString("%@"), 1); // expected-warning{{format specifies type 'id' but the argument has type 'int'}}
-}
-
-
-// Don't crash on an invalid argument expression.
-// <rdar://problem/11890818>
- at interface NSDictionary : NSObject
-- (id)objectForKeyedSubscript:(id)key;
- at end
-
-void testInvalidFormatArgument(NSDictionary *dict) {
-  NSLog(@"no specifiers", dict[CFSTR("abc")]); // expected-error{{indexing expression is invalid because subscript type 'CFStringRef' (aka 'const struct __CFString *') is not an integral or Objective-C pointer type}}
-  NSLog(@"%@", dict[CFSTR("abc")]); // expected-error{{indexing expression is invalid because subscript type 'CFStringRef' (aka 'const struct __CFString *') is not an integral or Objective-C pointer type}}
-  NSLog(@"%@ %@", dict[CFSTR("abc")]); // expected-error{{indexing expression is invalid because subscript type 'CFStringRef' (aka 'const struct __CFString *') is not an integral or Objective-C pointer type}}
-
-  [Foo fooWithFormat:@"no specifiers", dict[CFSTR("abc")]]; // expected-error{{indexing expression is invalid because subscript type 'CFStringRef' (aka 'const struct __CFString *') is not an integral or Objective-C pointer type}}
-  [Foo fooWithFormat:@"%@", dict[CFSTR("abc")]]; // expected-error{{indexing expression is invalid because subscript type 'CFStringRef' (aka 'const struct __CFString *') is not an integral or Objective-C pointer type}}
-  [Foo fooWithFormat:@"%@ %@", dict[CFSTR("abc")]]; // expected-error{{indexing expression is invalid because subscript type 'CFStringRef' (aka 'const struct __CFString *') is not an integral or Objective-C pointer type}} expected-warning{{more '%' conversions than data arguments}}
-}
-
-
-// <rdar://problem/11825593>
-void testByValueObjectInFormat(Foo *obj) {
-  printf("%d %d %d", 1L, *obj, 1L); // expected-error {{cannot pass object with interface type 'Foo' by value to variadic function; expected type from format string was 'int'}} expected-warning 2 {{format specifies type 'int' but the argument has type 'long'}}
-
-  [Bar log2:@"%d", *obj]; // expected-error {{cannot pass object with interface type 'Foo' by value to variadic method; expected type from format string was 'int'}}
-}
-
-// <rdar://problem/13557053>
-void testTypeOf(NSInteger dW, NSInteger dH) {
-  NSLog(@"dW %d  dH %d",({ __typeof__(dW) __a = (dW); __a < 0 ? -__a : __a; }),({ __typeof__(dH) __a = (dH); __a < 0 ? -__a : __a; })); // expected-warning 2 {{values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/format-strings-system.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/format-strings-system.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/format-strings-system.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-
-#pragma clang system_header
-
- at class NSString;
-
-// Do not emit warnings when using NSLocalizedString
-extern NSString *GetLocalizedString(NSString *str);
-#define NSLocalizedString(key) GetLocalizedString(key)
-
-#define NSAssert(fmt, arg) NSLog(fmt, arg, 0, 0)

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at class FOO, BAR; // expected-note {{forward declaration of class here}}
- at class FOO, BAR; 
-
- at interface INTF : FOO	// expected-error {{attempting to use the forward class 'FOO' as superclass of 'INTF'}}
- at end
-
- at interface FOO 
-- (BAR*) Meth1;
-- (FOO*) Meth2;
- at end
-
- at interface INTF1 : FOO	
- at end
-
- at interface INTF2 : INTF1 // expected-note {{previous definition is here}}
- at end
-
-
- at class INTF1, INTF2;
-
- at interface INTF2 : INTF1 // expected-error {{duplicate interface definition for class 'INTF2'}}
- at end
-
-// 2nd test of a forward class declaration matching a typedef name
-// referring to class object.
-// FIXME. This may become a negative test should we decide to make this an error.
-//
- at interface NSObject @end
-
- at protocol XCElementP @end
-
-typedef NSObject <XCElementP> XCElement; // expected-note {{previous definition is here}}
-
- at interface XCElementMainImp  {
-  XCElement * _editingElement;
-}
- at end
-
- at class XCElement; // expected-warning {{redefinition of forward class 'XCElement' of a typedef name of an object type is ignored}}
-
- at implementation XCElementMainImp
-- (XCElement *)editingElement  { return _editingElement;  }
- at end
-
-
-// rdar://9653341
- at class B; // expected-note {{forward declaration of class here}}
- at interface A : B {} // expected-error {{attempting to use the forward class 'B' as superclass of 'A'}}
- at end
-
- at interface B : A {}
- at end
-
- at implementation A @end
- at implementation B @end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-receiver.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-receiver.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-receiver.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
- at interface I
-+ new; // expected-note {{method 'new' is used for the forward class}}
- at end
-Class isa;
-
- at class NotKnown; // expected-note{{forward declaration of class here}}
-
-void foo(NotKnown *n) {
-  [isa new];
-  [NotKnown new];	   /* expected-warning {{receiver 'NotKnown' is a forward class and corresponding}} */
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-redeclare.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-redeclare.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-class-redeclare.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar://10733000
-
- at interface NSObject @end
-
- at protocol PLAssetContainer
- at property (readonly, nonatomic, retain) id assets;
- at end
-
-
-typedef NSObject <PLAssetContainer> PLAlbum; // expected-note {{previous definition is here}}
-
- at class PLAlbum; // expected-warning {{redefinition of forward class 'PLAlbum' of a typedef name of an object type is ignore}}
-
- at interface PLPhotoBrowserController
-{
-    PLAlbum *_album;
-}
- at end
-
- at interface WPhotoViewController:PLPhotoBrowserController
- at end
-
- at implementation WPhotoViewController
-- (void)_prepareForContracting
-{
-  (void)_album.assets;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-protocol-incomplete-impl-warn.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-protocol-incomplete-impl-warn.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/forward-protocol-incomplete-impl-warn.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-default-synthesize-properties %s
-// rdar://12958878
-
- at interface NSObject @end
-
- at protocol DVTInvalidation
-- (void)invalidate;  // expected-note {{method 'invalidate' declared here}}
- at property int Prop; // expected-note {{property declared here}}
- at end
-
-
-
- at protocol DVTInvalidation;
-
- at interface IBImageCatalogDocument : NSObject <DVTInvalidation> // expected-note {{required for direct or indirect protocol 'DVTInvalidation'}}
- at end
-
- at implementation IBImageCatalogDocument // expected-warning {{auto property synthesis will not synthesize property declared in a protocol}} \ 
-				       // expected-warning {{method 'invalidate' in protocol not implemented}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/gc-attributes.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/gc-attributes.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/gc-attributes.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -fsyntax-only -verify %s
-
- at interface A
- at end
-
-void f0(__strong A**); // expected-note{{passing argument to parameter here}}
-
-void test_f0() {
-  A *a;
-  static __weak A *a2;
-  f0(&a);
-  f0(&a2); // expected-warning{{passing 'A *__weak *' to parameter of type 'A *__strong *' discards qualifiers}} 
-}
-
-void f1(__weak A**); // expected-note{{passing argument to parameter here}}
-
-void test_f1() {
-  A *a;
-  __strong A *a2;
-  f1(&a);
-  f1(&a2); // expected-warning{{passing 'A *__strong *' to parameter of type 'A *__weak *' discards qualifiers}} 
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/gcc-cast-ext.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/gcc-cast-ext.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/gcc-cast-ext.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -verify -fms-extensions -Wno-objc-root-class %s
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-typedef struct _NSRange { } NSRange;
-
- at class PBXFileReference;
-
- at interface PBXDocBookmark
-+ alloc;	// expected-note {{method 'alloc' declared here}}
-- autorelease;	// expected-note {{method 'autorelease' declared here}}
- at end
-
-// GCC allows pointer expressions in integer constant expressions.
-struct {
-  char control[((int)(char *)2)];
-} xx;
-
- at implementation PBXDocBookmark // expected-warning {{method definition for 'autorelease' not found}}\
-                               // expected-warning {{method definition for 'alloc' not found}}
-
-+ (id)bookmarkWithFileReference:(PBXFileReference *)fileRef gylphRange:(NSRange)range anchor:(NSString *)htmlAnchor
-{
-    NSRange r = (NSRange)range;
-    return [[[self alloc] initWithFileReference:fileRef gylphRange:(NSRange)range anchor:(NSString *)htmlAnchor] autorelease];  // expected-warning {{method '-initWithFileReference:gylphRange:anchor:' not found (return type defaults to 'id')}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/generic-selection.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/generic-selection.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/generic-selection.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-__attribute__((objc_root_class))
- at interface Root {
-  Class isa;
-}
- at end
-
- at interface A
- at property (strong) id x;
- at end
-
-// rdar://13193560
-void test0(A *a) {
-  int kind = _Generic(a.x, id : 0, int : 1, float : 2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/getter-setter-defined-in-category-of-parent.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/getter-setter-defined-in-category-of-parent.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/getter-setter-defined-in-category-of-parent.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface MyParent {
-  int X;
-}
- at end
- at implementation MyParent
- at end
-
- at interface MyParent(AA) {
-}
- at end
- at implementation MyParent (AA)
-- (void) setX: (int)in {X = in - 2;}
-- (int) X {return X;}
- at end
-
- at interface MyClass : MyParent
- at end
- at implementation MyClass
- at end
-
-int foo(MyClass *o) {
-  o.X = 2;
-  return o.X;
-}
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ibaction.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ibaction.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ibaction.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-objc-root-class %s
-
- at interface Foo 
-{
-  __attribute__((iboutlet)) id myoutlet;
-}
-+ (void) __attribute__((ibaction)) myClassMethod:(id)msg; // expected-warning{{ibaction attribute can only be applied to Objective-C instance methods}}
-- (void) __attribute__((ibaction)) myMessage:(id)msg;
- at end
-
- at implementation Foo
-+ (void) __attribute__((ibaction)) myClassMethod:(id)msg {} // expected-warning{{ibaction attribute can only be applied to Objective-C instance methods}}
-// Normally attributes should not be attached to method definitions, but
-// we allow 'ibaction' to be attached because it can be expanded from
-// the IBAction macro.
-- (void) __attribute__((ibaction)) myMessage:(id)msg {} // no-warning
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/iboutlet.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/iboutlet.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/iboutlet.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -Wno-objc-root-class -verify %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -fobjc-default-synthesize-properties -Wno-objc-root-class -verify %s
-// rdar://11448209
-
-#define READONLY readonly
-
- at class NSView;
-
-#define IBOutlet __attribute__((iboutlet))
-
- at interface I
- at property (getter = MyGetter, readonly, assign) IBOutlet NSView *myView; // expected-warning {{readonly IBOutlet property 'myView' when auto-synthesized may not work correctly with 'nib' loader}} expected-note {{property should be changed to be readwrite}}
-
- at property (readonly) IBOutlet NSView *myView1; // expected-warning {{readonly IBOutlet property 'myView1' when auto-synthesized may not work correctly with 'nib' loader}} expected-note {{property should be changed to be readwrite}}
-
- at property (getter = MyGetter, READONLY) IBOutlet NSView *myView2; // expected-warning {{readonly IBOutlet property 'myView2' when auto-synthesized may not work correctly with 'nib' loader}}
-
- at end
-
- at implementation I
- at end
-
-
-// rdar://13123861
- at class UILabel;
-
- at interface NSObject @end
-
- at interface RKTFHView : NSObject
- at property( readonly ) __attribute__((iboutlet)) UILabel *autoReadOnlyReadOnly; // expected-warning {{readonly IBOutlet property 'autoReadOnlyReadOnly' when auto-synthesized may not work correctly with 'nib' loader}} expected-note {{property should be changed to be readwrite}}
- at property( readonly ) __attribute__((iboutlet)) UILabel *autoReadOnlyReadWrite;
- at property( readonly ) __attribute__((iboutlet)) UILabel *synthReadOnlyReadWrite;
- at end
-
- at interface RKTFHView()
- at property( readwrite ) __attribute__((iboutlet)) UILabel *autoReadOnlyReadWrite;
- at property( readwrite ) __attribute__((iboutlet)) UILabel *synthReadOnlyReadWrite;
- at end
-
- at implementation RKTFHView
- at synthesize synthReadOnlyReadWrite=_synthReadOnlyReadWrite;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/iboutletcollection-attr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/iboutletcollection-attr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/iboutletcollection-attr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify %s
-// rdar://8308053
-
- at class NSObject;
-
- at interface I {
-    __attribute__((iboutletcollection(I))) id ivar1;
-    __attribute__((iboutletcollection(id))) id ivar2;
-    __attribute__((iboutletcollection())) id ivar3;
-    __attribute__((iboutletcollection)) id ivar4;
-}
- at property (nonatomic, retain) __attribute__((iboutletcollection(I))) id prop1;
- at property (nonatomic, retain) __attribute__((iboutletcollection(id))) id prop2;
- at property (nonatomic, retain) __attribute__((iboutletcollection())) id prop3;
- at property (nonatomic, retain) __attribute__((iboutletcollection)) id prop4;
- at end
-
-typedef void *PV;
- at interface BAD {
-    __attribute__((iboutletcollection(I, 1))) id ivar1; // expected-error {{attribute takes one argument}}
-    __attribute__((iboutletcollection(B))) id ivar2; // expected-error {{invalid type 'B' as argument of iboutletcollection attribute}}
-    __attribute__((iboutletcollection(PV))) id ivar3; // expected-error {{invalid type 'PV' as argument of iboutletcollection attribute}}
-    __attribute__((iboutletcollection(PV))) void *ivar4; // expected-warning {{instance variable with 'iboutletcollection' attribute must be an object type (invalid 'void *')}}
-    __attribute__((iboutletcollection(int))) id ivar5; // expected-error {{type argument of iboutletcollection attribute cannot be a builtin type}}
-    __attribute__((iboutlet)) int ivar6;  // expected-warning {{instance variable with 'iboutlet' attribute must be an object type}}
-}
- at property (nonatomic, retain) __attribute__((iboutletcollection(I,2,3))) id prop1; // expected-error {{attribute takes one argument}}
- at property (nonatomic, retain) __attribute__((iboutletcollection(B))) id prop2; // expected-error {{invalid type 'B' as argument of iboutletcollection attribute}}
-
- at property __attribute__((iboutletcollection(BAD))) int prop3; // expected-warning {{property with 'iboutletcollection' attribute must be an object type (invalid 'int')}}
- at end
-
-// rdar://10296078
- at interface ParentRDar10296078 @end
- at class NSArray;
- at protocol RDar10296078_Protocol;
- at class RDar10296078_OtherClass;
-
- at interface RDar10296078  : ParentRDar10296078
- at property (nonatomic, strong) 
-  __attribute__((iboutletcollection(RDar10296078_OtherClass<RDar10296078_Protocol>))) NSArray *stuff; 
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/id.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/id.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/id.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol Foo;
-
-Class T;
-id<Foo> S;
-id R;
-void foo() {
-  // Test assignment compatibility of Class and id.  No warning should be
-  // produced.
-  // rdar://6770142 - Class and id<foo> are compatible.
-  S = T; // expected-warning {{incompatible pointer types assigning to 'id<Foo>' from 'Class'}}
-  T = S; // expected-warning {{incompatible pointer types assigning to 'Class' from 'id<Foo>'}}
-  R = T; T = R;
-  R = S; S = R;
-}
-
-// Test attempt to redefine 'id' in an incompatible fashion.
-// rdar://11356439
-typedef int id;  // expected-error {{typedef redefinition with different types ('int' vs 'id')}}
-id b;
-
-typedef double id;  // expected-error {{typedef redefinition with different types ('double' vs 'id')}}
-
-typedef char *id; // expected-error {{typedef redefinition with different types ('char *' vs 'id')}}
-
-typedef union U{ int iu; } *id; // expected-error {{typedef redefinition with different types ('union U *' vs 'id')}}
-
-void test11356439(id o) {
-  o->x; // expected-error {{member reference base type 'id' is not a structure or union}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/id_builtin.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/id_builtin.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/id_builtin.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-// id is now builtin. There should be no errors. 
-id obj; 
-
- at interface Foo
-
-- defaultToId; 
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/idiomatic-parentheses.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/idiomatic-parentheses.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/idiomatic-parentheses.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wparentheses -Wno-objc-root-class %s
-
-// Don't warn about some common ObjC idioms unless we have -Widiomatic-parentheses on.
-// <rdar://problem/7382435>
-
- at interface Object 
-{
-  unsigned uid;
-}
-- (id) init;
-- (id) initWithInt: (int) i;
-- (void) iterate: (id) coll;
-- (id) nextObject;
- at property unsigned uid;
- at end
-
- at implementation Object
- at synthesize uid;
-- (id) init {
-  if (self = [self init]) {
-  }
-  return self;
-}
-
-- (id) initWithInt: (int) i {
-  if (self = [self initWithInt: i]) {
-  }
-  // rdar://11066598
-  if (self.uid = 100) { // expected-warning {{using the result of an assignment as a condition without parentheses}} \
-                        // expected-note {{place parentheses around the assignment to silence this warning}} \
-                        // expected-note {{use '==' to turn this assignment into an equality comparison}}
-        // ...
-  }
-  return self;
-}
-
-- (void) iterate: (id) coll {
-  id cur;
-  while (cur = [coll nextObject]) {
-  }
-}
-
-- (id) nextObject {
-  return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ignore-qualifier-on-qualified-id.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ignore-qualifier-on-qualified-id.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ignore-qualifier-on-qualified-id.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify %s
-// expected-no-diagnostics
-// rdar://10667659
-
- at protocol NSCopying @end
-
- at interface NSString <NSCopying>
- at end
-
-void takeId(id test) {}
-
-void takeCopyableId(id<NSCopying> test) {}
-
-id<NSCopying> Test () {
-  NSString const *constantString = @"Test";
-  takeId(constantString);
-  takeCopyableId(constantString);
-  id ID = constantString;
-  id<NSCopying> IDQNSCopying = constantString;
-  return constantString;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ignore-weakimport-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ignore-weakimport-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ignore-weakimport-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// expected-no-diagnostics
- at interface foo 
-+ (void) cx __attribute__((weak_import));
-- (void) x __attribute__((weak_import));
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/illegal-nonarc-bridged-cast.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/illegal-nonarc-bridged-cast.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/illegal-nonarc-bridged-cast.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fblocks -verify %s
-// rdar://10597832
-
-typedef const void *CFTypeRef;
-typedef const struct __CFString *CFStringRef;
-
- at interface NSString
- at end
-
-CFTypeRef CFCreateSomething();
-CFStringRef CFCreateString();
-CFTypeRef CFGetSomething();
-CFStringRef CFGetString();
-
-id CreateSomething();
-NSString *CreateNSString();
-
-void from_cf() {
-  id obj1 = (__bridge_transfer id)CFCreateSomething(); // expected-warning {{'__bridge_transfer' casts have no effect when not using ARC}}
-  id obj2 = (__bridge_transfer NSString*)CFCreateString(); // expected-warning {{'__bridge_transfer' casts have no effect when not using ARC}}
-  (__bridge int*)CFCreateSomething(); // expected-warning {{expression result unused}}
-  id obj3 = (__bridge id)CFGetSomething();
-  id obj4 = (__bridge NSString*)CFGetString();
-}
-
-void to_cf(id obj) {
-  CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething(); // expected-warning {{'__bridge_retained' casts have no effect when not using ARC}}
-  CFStringRef cf2 = (__bridge_retained CFStringRef)CreateNSString(); // expected-warning {{'__bridge_retained' casts have no effect when not using ARC}}
-  CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething();
-  CFStringRef cf4 = (__bridge CFStringRef)CreateNSString();
-}
-
-void fixits() {
-  id obj1 = (id)CFCreateSomething();
-  CFTypeRef cf1 = (CFTypeRef)CreateSomething();
-}
-
-#pragma clang diagnostic ignored "-Warc-bridge-casts-disallowed-in-nonarc"
-
-void to_cf_ignored(id obj) {
-  CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething(); // no-warning
-  CFTypeRef cf3 = (__bridge CFTypeRef)CreateSomething(); // no-warning
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/incompatible-protocol-qualified-types.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/incompatible-protocol-qualified-types.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/incompatible-protocol-qualified-types.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -pedantic -fsyntax-only -verify %s
-
- at protocol MyProto1 
- at end
-
- at protocol MyProto2 
- at end
-
- at interface INTF @end
-
-INTF <MyProto1> * Func(INTF <MyProto1, MyProto2> *p2) // expected-note{{passing argument to parameter 'p2' here}}
-{
-	return p2;
-}
-
-
-INTF <MyProto1> * Func1(INTF <MyProto1, MyProto2> *p2)
-{
-	return p2;
-}
-
-INTF <MyProto1, MyProto2> * Func2(INTF <MyProto1> *p2)
-{
-	Func(p2);	// expected-warning {{incompatible pointer types passing 'INTF<MyProto1> *' to parameter of type 'INTF<MyProto1,MyProto2> *'}}
-	return p2;	// expected-warning {{incompatible pointer types returning 'INTF<MyProto1> *' from a function with result type 'INTF<MyProto1,MyProto2> *'}}
-}
-
-
-
-INTF <MyProto1> * Func3(INTF <MyProto2> *p2)
-{
-	return p2;	// expected-warning {{incompatible pointer types returning 'INTF<MyProto2> *' from a function with result type 'INTF<MyProto1> *'}}
-}
-
-
-INTF <MyProto1, MyProto2> * Func4(INTF <MyProto2, MyProto1> *p2)
-{
-	return p2;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/incomplete-implementation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/incomplete-implementation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/incomplete-implementation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface I
-- Meth; // expected-note 2 {{method 'Meth' declared here}}
-- unavailableMeth __attribute__((availability(macosx,unavailable)));
-- unavailableMeth2 __attribute__((unavailable));
- at end
-
- at implementation  I  // expected-warning {{method definition for 'Meth' not found}}
- at end
-
- at implementation I(CAT)
-- Meth {return 0;} // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
- at end
-
-#pragma GCC diagnostic ignored "-Wincomplete-implementation"
- at interface I2
-- Meth; // expected-note{{method 'Meth' declared here}}
- at end
-
- at implementation  I2
- at end
-
- at implementation I2(CAT)
-- Meth {return 0;} // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
- at end
-
- at interface Q
- at end
-
-// rdar://10336158
- at implementation Q
-
-__attribute__((visibility("default")))
- at interface QN // expected-error {{Objective-C declarations may only appear in global scope}}
-{
-}
- at end
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/inst-method-lookup-in-root.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/inst-method-lookup-in-root.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/inst-method-lookup-in-root.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
- at protocol P
-- (id) inst_in_proto;
- at end
-
- at interface Object <P>
-- (id) inst_in_root;
- at end
-
- at interface Base
- at end
-
- at interface Derived: Base
-- (id)starboard;
- at end
-
-void foo(void) {
-  Class receiver;
-
-  [Derived starboard]; // expected-warning {{method '+starboard' not found}}
-
-  [receiver starboard]; // expected-warning {{instance method 'starboard' is being used on 'Class'}}
-  [receiver inst_in_root]; // Ok!
-  [receiver inst_in_proto]; // Ok!
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/instancetype.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/instancetype.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/instancetype.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,216 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#if !__has_feature(objc_instancetype)
-# error Missing 'instancetype' feature macro.
-#endif
-
- at interface Root
-+ (instancetype)alloc; // expected-note {{explicitly declared 'instancetype'}}
-- (instancetype)init; // expected-note{{overridden method is part of the 'init' method family}}
-- (instancetype)self; // expected-note {{explicitly declared 'instancetype'}}
-- (Class)class;
-
- at property (assign) Root *selfProp;
-- (instancetype)selfProp;
- at end
-
- at protocol Proto1
- at optional
-- (instancetype)methodInProto1;
- at end
-
- at protocol Proto2
- at optional
-- (instancetype)methodInProto2; // expected-note{{overridden method returns an instance of its class type}}
-- (instancetype)otherMethodInProto2; // expected-note{{overridden method returns an instance of its class type}}
- at end
-
- at interface Subclass1 : Root
-- (instancetype)initSubclass1;
-- (void)methodOnSubclass1;
-+ (instancetype)allocSubclass1;
- at end
-
- at interface Subclass2 : Root
-- (instancetype)initSubclass2;
-- (void)methodOnSubclass2;
- at end
-
-// Sanity check: the basic initialization pattern.
-void test_instancetype_alloc_init_simple() {
-  Root *r1 = [[Root alloc] init];
-  Subclass1 *sc1 = [[Subclass1 alloc] init];
-}
-
-// Test that message sends to instancetype methods have the right type.
-void test_instancetype_narrow_method_search() {
-  // instancetype on class methods
-  Subclass1 *sc1 = [[Subclass1 alloc] initSubclass2]; // expected-warning{{'Subclass1' may not respond to 'initSubclass2'}}
-  Subclass2 *sc2 = [[Subclass2 alloc] initSubclass2]; // okay
-
-  // instancetype on instance methods
-  [[[Subclass1 alloc] init] methodOnSubclass2]; // expected-warning{{'Subclass1' may not respond to 'methodOnSubclass2'}}
-  [[[Subclass2 alloc] init] methodOnSubclass2];
-  
-  // instancetype on class methods using protocols
-  typedef Subclass1<Proto1> SC1Proto1;
-  typedef Subclass1<Proto2> SC1Proto2;
-  [[SC1Proto1 alloc] methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [[SC1Proto2 alloc] methodInProto2];
-
-  // instancetype on instance methods
-  Subclass1<Proto1> *sc1proto1 = 0;
-  [[sc1proto1 self] methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  Subclass1<Proto2> *sc1proto2 = 0;
-  [[sc1proto2 self] methodInProto2];
-
-  // Exact type checks
-  typeof([[Subclass1 alloc] init]) *ptr1 = (Subclass1 **)0;
-  typeof([[Subclass2 alloc] init]) *ptr2 = (Subclass2 **)0;
-
-  // Message sends to Class.
-  Subclass1<Proto1> *sc1proto1_2 = [[[sc1proto1 class] alloc] init];
-
-  // Property access
-  [sc1proto1.self methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [sc1proto2.self methodInProto2];
-  [Subclass1.alloc initSubclass2]; // expected-warning{{'Subclass1' may not respond to 'initSubclass2'}}
-  [Subclass2.alloc initSubclass2];
-
-  [sc1proto1.selfProp methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [sc1proto2.selfProp methodInProto2];
-}
-
-// Test that message sends to super methods have the right type.
- at interface Subsubclass1 : Subclass1
-- (instancetype)initSubclass1;
-+ (instancetype)allocSubclass1;
-
-- (void)onlyInSubsubclass1;
- at end
-
- at implementation Subsubclass1
-- (instancetype)initSubclass1 {
-  // Check based on method search.
-  [[super initSubclass1] methodOnSubclass2]; // expected-warning{{'Subsubclass1' may not respond to 'methodOnSubclass2'}}
-  [super.initSubclass1 methodOnSubclass2]; // expected-warning{{'Subsubclass1' may not respond to 'methodOnSubclass2'}}
-
-  self = [super init]; // common pattern
-
-  // Exact type check.
-  typeof([super initSubclass1]) *ptr1 = (Subsubclass1**)0;
-
-  return self;
-}
-
-+ (instancetype)allocSubclass1 {
-  // Check based on method search.
-  [[super allocSubclass1] methodOnSubclass2]; // expected-warning{{'Subsubclass1' may not respond to 'methodOnSubclass2'}}
-
-  // The ASTs don't model super property accesses well enough to get this right
-  [super.allocSubclass1 methodOnSubclass2]; // expected-warning{{'Subsubclass1' may not respond to 'methodOnSubclass2'}}
-
-  // Exact type check.
-  typeof([super allocSubclass1]) *ptr1 = (Subsubclass1**)0;
-  
-  return [super allocSubclass1];
-}
-
-- (void)onlyInSubsubclass1 {}
- at end
-
-// Check compatibility rules for inheritance of related return types.
- at class Subclass4;
-
- at interface Subclass3 <Proto1, Proto2>
-- (Subclass3 *)methodInProto1;
-- (Subclass4 *)methodInProto2; // expected-warning{{method is expected to return an instance of its class type 'Subclass3', but is declared to return 'Subclass4 *'}}
- at end
-
- at interface Subclass4 : Root
-+ (Subclass4 *)alloc; // okay
-- (Subclass3 *)init; // expected-warning{{method is expected to return an instance of its class type 'Subclass4', but is declared to return 'Subclass3 *'}}
-- (id)self; // expected-note{{overridden method is part of the 'self' method family}}
-- (instancetype)initOther;
- at end
-
- at protocol Proto3 <Proto1, Proto2>
- at optional
-- (id)methodInProto1;
-- (Subclass1 *)methodInProto2;
-- (int)otherMethodInProto2; // expected-warning{{protocol method is expected to return an instance of the implementing class, but is declared to return 'int'}}
- at end
-
- at implementation Subclass4
-+ (id)alloc {
-  return self; // expected-warning{{incompatible pointer types returning 'Class' from a function with result type 'Subclass4 *'}}
-}
-
-- (Subclass3 *)init { return 0; } // don't complain: we lost the related return type
-
-- (Subclass3 *)self { return 0; } // expected-warning{{method is expected to return an instance of its class type 'Subclass4', but is declared to return 'Subclass3 *'}}
-
-- (Subclass4 *)initOther { return 0; }
-
- at end
-
-// Check that inherited related return types influence the types of
-// message sends.
-void test_instancetype_inherited() {
-  [[Subclass4 alloc] initSubclass1]; // expected-warning{{'Subclass4' may not respond to 'initSubclass1'}}
-  [[Subclass4 alloc] initOther];
-}
-
-// Check that related return types tighten up the semantics of
-// Objective-C method implementations.
- at implementation Subclass2
-- (instancetype)initSubclass2 { // expected-note {{explicitly declared 'instancetype'}}
-  Subclass1 *sc1 = [[Subclass1 alloc] init];
-  return sc1; // expected-warning{{incompatible pointer types returning 'Subclass1 *' from a function with result type 'Subclass2 *'}}
-}
-- (void)methodOnSubclass2 {}
-- (id)self {
-  Subclass1 *sc1 = [[Subclass1 alloc] init];
-  return sc1; // expected-warning{{incompatible pointer types returning 'Subclass1 *' from a function with result type 'Subclass2 *'}}
-}
- at end
-
- at interface MyClass : Root
-+ (int)myClassMethod;
- at end
-
- at implementation MyClass
-+ (int)myClassMethod { return 0; }
-
-- (void)blah {
-  int i = [[MyClass self] myClassMethod];
-}
-
- at end
-
-// rdar://12493140
- at protocol P4
-- (instancetype) foo; // expected-note {{current method is explicitly declared 'instancetype' and is expected to return an instance of its class type}}
- at end
- at interface A4 : Root <P4>
-- (instancetype) bar; // expected-note {{current method is explicitly declared 'instancetype' and is expected to return an instance of its class type}}
-- (instancetype) baz; // expected-note {{overridden method returns an instance of its class type}} expected-note {{previous definition is here}}
- at end
- at interface B4 : Root @end
-
- at implementation A4 {
-  B4 *_b;
-}
-- (id) foo {
-  return _b; // expected-warning {{incompatible pointer types returning 'B4 *' from a function with result type 'A4 *'}}
-}
-- (id) bar {
-  return _b; // expected-warning {{incompatible pointer types returning 'B4 *' from a function with result type 'A4 *'}}
-}
-
-// This is really just to ensure that we don't crash.
-// FIXME: only one diagnostic, please
-- (float) baz { // expected-warning {{method is expected to return an instance of its class type 'A4', but is declared to return 'float'}} expected-warning {{conflicting return type in implementation}}
-  return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 %s -fsyntax-only -verify
-// rdar://5957506
-
- at interface NSWhatever :
-NSObject     // expected-error {{cannot find interface declaration for 'NSObject'}}
-<NSCopying>  // expected-error {{cannot find protocol declaration for 'NSCopying'}}
- at end
-
-
-// rdar://6095245
- at interface A
-{
-  int x
-}  // expected-error {{expected ';' at end of declaration list}}
- at end
-
-
-// rdar://4304469
- at interface INT1
- at end
-
-void test2() {
-    // rdar://6827200
-    INT1 b[3];          // expected-error {{array of interface 'INT1' is invalid (probably should be an array of pointers)}}
-    INT1 *c = &b[0];
-    ++c;
-}
-
-
-// rdar://6611778
- at interface FOO  // expected-note {{previous definition is here}}
-- (void)method;
- at end
-
- at interface FOO  // expected-error {{duplicate interface definition for class 'FOO'}}
-- (void)method2;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-layout-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-layout-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-layout-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
- at interface A
-{
-  int ivar;
-}
- at end
-
- at interface B : A
-- (int)ivar;
- at end
-
- at implementation B
-- (int)ivar {
-  return ivar;
-} 
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-layout.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-layout.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-layout.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify  -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5
-// expected-no-diagnostics
-typedef struct objc_object {} *id;
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-
- at protocol NSObject
-- (BOOL) isEqual:(id) object;
- at end
-
- at protocol NSCopying
-- (id) copyWithZone:(NSZone *) zone;
- at end
-
- at interface NSObject < NSObject > {}
- at end
-
-extern id NSAllocateObject (Class aClass, NSUInteger extraBytes, NSZone * zone);
-
- at interface MyClassBase : NSObject < NSCopying > {}
- at end
-
- at interface MyClassDirectNode : MyClassBase < NSCopying >
-{
-  @public NSUInteger attributeRuns[((1024 - 16 - sizeof (MyClassBase)) / (sizeof (NSUInteger) + sizeof (void *)))];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-scope-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-scope-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-scope-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-apple-darwin9 -Wno-objc-root-class %s
-// expected-no-diagnostics
-// FIXME: must also compile as Objective-C++ 
-
-// <rdar://problem/6487662>
-typedef struct objc_selector *SEL;
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (BOOL)respondsToSelector:(SEL)aSelector;
- at end
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
- at end
- at class NSString, NSData;
-typedef struct _NSPoint {}
-NSRange;
- at interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding>
-- (NSUInteger)length;
- at end
- at interface NSMutableString : NSString
-- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;
- at end
- at class NSArray, NSDictionary, NSMapTable;
- at interface NSResponder : NSObject <NSCoding> {}
- at end
- at protocol NSAnimatablePropertyContainer
-- (id)animator;
- at end
-extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {
-  struct __VFlags2 {} _vFlags2;
-}
- at end
- at class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView;
- at interface FooiagramView : NSView {
-id _delegate;
-}
- at end
- at class FooiagramView;
- at interface _FooiagramViewReserved : NSObject {
- at public
-  NSMutableString *_typeToSelectString;
-  struct _FooiagramViewFlags {
-      unsigned int delegateRespondsToPrintInfoForBarView : 1;
-  } _dvFlags;
-}
- at end
-extern _FooiagramViewReserved *_FooiagramViewBarViewReserved(FooiagramView *BarView);
- at interface FooiagramView (FooiagramViewPrivate)
-+ (Class)_defaultBarToolManagerClass;
- at end
- at implementation FooiagramView
-static NSMapTable *_defaultMenuForClass = 0;
-- (void)setDelegate:(id)delegate {
-  if (_delegate != delegate) {
-    struct _FooiagramViewFlags *dvFlags =
-      &_FooiagramViewBarViewReserved(self)->_dvFlags;
-    if (_delegate != ((void *)0)) {
-      dvFlags->delegateRespondsToPrintInfoForBarView = [_delegate respondsToSelector:@selector(printInfoForBarView:)];
-    }
-  }
-}
- at end
-
-// <rdar://problem/6487684>
- at interface WizKing_MIKeep {
-struct __LoreStuffNode *_historyStuff;
-}
- at end
-typedef struct __LoreStuffNode {} LoreStuffNode;
- at implementation WizKing_MIKeep
-- init {
-  LoreStuffNode *node;
-  node = &(_historyStuff[1]);
-  return 0;
-}
- at end
-
-// <rdar://problem/6487702>
-typedef long unsigned int __darwin_size_t;
-typedef __darwin_size_t size_t;
-void *memset(void *, int, size_t);
- at class NSString, NSURL, NSError;
- at interface OingoWerdnaPeon : NSObject {}
- at end        typedef enum {
-OingoPT_SmashOK,     OingoPT_NoSuchFile, }
-OingoWerdnaPeonIOMethod;
- at interface OingoWerdnaPeonSmashDrivel : NSObject <NSCopying> {}
- at end
- at interface OingoBoingoContraptionPeon : OingoWerdnaPeon {
-struct _OingoBoingoContraptionPeonFlags {}
-_nfttFlags;
-}
- at end
- at implementation OingoBoingoContraptionPeon
-+ (void)initialize {}
-- (id)initWithSmashDrivel:(OingoWerdnaPeonSmashDrivel *)info {
-  if (self != ((void *)0)) {
-    (void)memset(&_nfttFlags, 0, sizeof(struct _OingoBoingoContraptionPeonFlags));
-  }
-  return 0;
-}
- at end
-
- at interface Blah {
-  struct X {
-    int x;
-  } value;
-}
- at end
-
- at implementation Blah
-- (int)getValue {
-  struct X *xp = &value;
-  return xp->x;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-scope.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-scope.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-scope.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface I1 {
- at private
-  int x;
-  struct {
-    unsigned int x : 3;
-    unsigned int y : 3;
-  } flags;
-  int y;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-tu-variable.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-tu-variable.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/interface-tu-variable.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface XX
-int x;  // expected-error {{cannot declare variable inside @interface or @protocol}}
-int one=1;  // expected-error {{cannot declare variable inside @interface or @protocol}}
- at end
-
- at protocol PPP
-int ddd; // expected-error {{cannot declare variable inside @interface or @protocol}}
- at end
-
- at interface XX(CAT)
-  char * III; // expected-error {{cannot declare variable inside @interface or @protocol}}
-  extern int OK;
- at end
-
- at interface XX()
-  char * III2; // expected-error {{cannot declare variable inside @interface or @protocol}}
-  extern int OK2;
- at end
-
-
-int main( int argc, const char *argv[] ) {
-    return x+one;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-code.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-code.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-code.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions -Wno-objc-root-class %s
-
-// rdar://6124613
-void test1() {
-  void *xyzzy = 0;
-  void *p = @xyzzy; // expected-error {{unexpected '@' in program}}
-}
-
-// <rdar://problem/7495713>
-// This previously triggered a crash because the class has not been defined.
- at implementation RDar7495713 (rdar_7495713_cat)  // expected-error{{cannot find interface declaration for 'RDar7495713'}}
-- (id) rdar_7495713 {
-  __PRETTY_FUNCTION__; // expected-warning{{expression result unused}}
-}
- at end
-
-// <rdar://problem/7881045>
-// This previously triggered a crash because a ';' was expected after the @throw statement.
-void foo() {
-  @throw (id)0 // expected-error{{expected ';' after @throw}}
-}
-
-// <rdar://problem/10415026>
- at class NSView;
- at implementation IBFillView(IBFillViewIntegration) // expected-error {{cannot find interface declaration for 'IBFillView'}}
-- (NSView *)ibDesignableContentView {
-    [Cake lie]; // expected-error {{undeclared}}
-    return self;
-}
- at end
-
- at interface I
- at end
- at interface I2
- at end
-
- at implementation I // expected-note {{started here}}
--(void) foo {}
-
- at implementation I2 // expected-error {{missing '@end'}}
--(void) foo2 {}
- at end
-
- at end // expected-error {{'@end' must appear in an Objective-C context}}
-
- at class ForwardBase;
- at implementation SomeI : ForwardBase // expected-error {{cannot find interface declaration for 'ForwardBase', superclass of 'SomeI'}} \
-                                    // expected-warning {{cannot find interface declaration for 'SomeI'}}
--(void)meth {}
- at end
-
- at interface I3
-__attribute__((unavailable)) @interface I4 @end // expected-error {{Objective-C declarations may only appear in global scope}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-objc-decls-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-objc-decls-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-objc-decls-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface Super @end
-Super s1; // expected-error{{interface type cannot be statically allocated}}
-
-extern Super e1; // expected-error{{interface type cannot be statically allocated}}
-
-struct S {
-  Super s1; // expected-error{{interface type cannot be statically allocated}}
-};
-
- at protocol P1 @end
-
- at interface INTF
-{
-  Super ivar1; // expected-error{{interface type cannot be statically allocated}}
-}
- at end
-
-struct whatever {
-  Super objField; // expected-error{{interface type cannot be statically allocated}}
-};
-
- at interface MyIntf
-{
-  Super<P1> ivar1; // expected-error{{interface type cannot be statically allocated}}
-}
- at end
-
-Super foo( // expected-error{{interface type 'Super' cannot be returned by value; did you forget * in 'Super'}}
-          Super parm1) { // expected-error{{interface type 'Super' cannot be passed by value; did you forget * in 'Super'}}
-	Super p1; // expected-error{{interface type cannot be statically allocated}}
-	return p1;
-}
-
- at interface NSMutableSet @end
-
- at interface DVTDummyAnnotationProvider  
-  @property(readonly) NSMutableSet annotations;	// expected-error{{interface type cannot be statically allocated}}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-receiver.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-receiver.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-receiver.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef struct NotAClass {
-  int a, b;
-} NotAClass;
-
-void foo() {
-  [NotAClass nonexistent_method]; // expected-error {{receiver type 'NotAClass' (aka 'struct NotAClass') is not an Objective-C class}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-typename.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-typename.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/invalid-typename.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at class NSString, NSArray;
-
- at protocol ISyncSessionCallback 
-- (oneway void)clientWithId:(bycopy NSString *)clientId
-                   canBeginSyncingPlanWithId:(bycopy NSString *)planId
-                   syncModes:(bycopy NSArray /* ISDSyncState */ *)syncModes
-                   entities:(bycopy NSArray /* ISDEntity */ *)entities
-                   truthPullers:(bycopy NSDictionary /* NSString -> [NSString] */ *)truthPullers; // expected-error{{expected ')'}} expected-note {{to match this '('}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-access-package.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-access-package.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-access-package.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-typedef unsigned char BOOL;
-
- at interface NSObject {
-  id isa;
-}
-+new;
-+alloc;
--init;
--autorelease;
- at end
-
- at interface NSAutoreleasePool : NSObject
-- drain;
- at end
- 
- at interface A : NSObject {
- at package
-    id object;
-}
- at end
-
- at interface B : NSObject
-- (BOOL)containsSelf:(A*)a;
- at end
-
- at implementation A
- at end
-
- at implementation B
-- (BOOL)containsSelf:(A*)a {
-    return a->object == self;
-}
- at end
-
-void NSLog(id, ...);
-
-int main (int argc, const char * argv[]) {
-    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-    A *a = [[A new] autorelease];
-    B *b = [[B new] autorelease];
-    NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO");
-    [pool drain];
-    return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-access-tests.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-access-tests.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-access-tests.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface MySuperClass
-{
- at private
-  int private;
-
- at protected
-  int protected;
-
- at public
-  int public;
-}
- at end
-
- at implementation MySuperClass
-- (void) test {
-    int access;
-    MySuperClass *s = 0;
-    access = s->private;   
-    access = s->protected;
-}
- at end
-
-
- at interface MyClass : MySuperClass 
- at end
-
- at implementation MyClass
-- (void) test {
-    int access;
-    MySuperClass *s = 0;
-    access = s->private; // expected-error {{instance variable 'private' is private}}
-    access = s->protected;
-    MyClass *m=0;
-    access = m->private; // expected-error {{instance variable 'private' is private}}
-    access = m->protected;
-}
- at end
-
-
- at interface Deeper : MyClass
- at end
-
- at implementation Deeper 
-- (void) test {
-    int access;
-    MySuperClass *s = 0;
-    access = s->private; // expected-error {{instance variable 'private' is private}}
-    access = s->protected;
-    MyClass *m=0;
-    access = m->private; // expected-error {{instance variable 'private' is private}}
-    access = m->protected;
-}
- at end
-
- at interface Unrelated
- at end
-
- at implementation Unrelated 
-- (void) test {
-    int access;
-    MySuperClass *s = 0;
-    access = s->private; // expected-error {{instance variable 'private' is private}}
-    access = s->protected; // expected-error {{instance variable 'protected' is protected}}
-    MyClass *m=0;
-    access = m->private; // expected-error {{instance variable 'private' is private}}
-    access = m->protected; // expected-error {{instance variable 'protected' is protected}}
-}
- at end
-
-int main (void)
-{
-  MySuperClass *s = 0;
-  int access;
-  access = s->private;   // expected-error {{instance variable 'private' is private}}
-  access = s->protected; // expected-error {{instance variable 'protected' is protected}}
-  return 0;
-}
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
- at end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end 
- at interface NSObject <NSObject> {}
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSResponder : NSObject <NSCoding> {}
- at end 
- at protocol NSAnimatablePropertyContainer
-- (id)animator;
- at end
-extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {
-  struct __VFlags2 {
-  }
-  _vFlags2;
-}
- at end
- at class NSFontDescriptor, NSAffineTransform, NSGraphicsContext;
- at interface NSScrollView : NSView {}
- at end
-
- at class CasperMixerView;
- at interface CasperDiffScrollView : NSScrollView {
- at private
-  CasperMixerView *_comparatorView;
-  NSView *someField;
-}
- at end
-
- at implementation CasperDiffScrollView
-+ (void)initialize {}
-static void _CasperDiffScrollViewInstallMixerView(CasperDiffScrollView *scrollView) {
-  if (scrollView->someField != ((void *)0)) {
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-class-extension-error.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-class-extension-error.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-class-extension-error.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -fsyntax-only -verify %s
-// rdar://6812436
-
- at interface A @end
-
- at interface A () { 
-  int _p0; // expected-error {{instance variables may not be placed in class extension}}
-}
- at property int p0;
- at end
-
- at interface A(CAT) { 
-  int _p1; // expected-error {{instance variables may not be placed in categories}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-class-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-class-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-class-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface SomeClass  @end
-
-int fn1(SomeClass *obj) {
-        obj->privateIvar = 1; // expected-error {{'SomeClass' does not have a member named 'privateIvar}}
-        return obj->publicIvar;     // expected-error {{'SomeClass' does not have a member named 'publicIvar'}}
-}
-
- at interface SomeClass () {
-// @private by default
-        int privateIvar;
- at public
-        int publicIvar;
-}
- at end
-
-int fn2(SomeClass *obj) {
-	obj->publicIvar = 1;
-        return obj->publicIvar    // ok
-             + obj->privateIvar;  // expected-error {{instance variable 'privateIvar' is private}}
-}
-
- at implementation SomeClass
-
-int fn3(SomeClass *obj) {
-	obj->privateIvar = 2;
-        return obj->publicIvar    // ok
-             + obj->privateIvar;  // ok
-    }
- at end
-
- at interface SomeClass (Category)
-    {	
-        int categoryIvar; // expected-error {{instance variables may not be placed in categories}}
-    }
- at end
-
- at interface SomeClass (Category1)
-    {	
-    }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-implementations.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-implementations.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-in-implementations.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface Super @end
-
- at interface INTFSTANDALONE : Super
-{
-  id IVAR;	// expected-note {{previous definition is here}}
-}
-
- at end
-
- at implementation INTFSTANDALONE : Super // expected-warning {{class implementation may not have super class}}
-{
-  id PRIV_IVAR;
- at protected
-  id PRTCTD;	
- at private
-  id IVAR3;
-  int IVAR;	// expected-error {{instance variable is already declared}}
- at public
-  id IVAR4;
-}
- at end
-
- at interface Base @end
-
- at implementation Base { 
-    int ivar1; 
- at public
-    int ivar2; 
-} 
- at end
-
-id fn1(INTFSTANDALONE *b) { return b->PRIV_IVAR; } // expected-error {{instance variable 'PRIV_IVAR' is private}}
-
-id fn2(INTFSTANDALONE *b) { return b->PRTCTD; }  // expected-error {{instance variable 'PRTCTD' is protected}}
-
-id fn4(INTFSTANDALONE *b) { return b->IVAR4; }
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-lookup-resolution-builtin.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-lookup-resolution-builtin.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-lookup-resolution-builtin.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// pr5986
-
- at interface Test {
-  int index;
-}
-- (int) index;
-+ (int) ClassMethod;
- at end
-
- at implementation Test
-- (int) index
-{
-  return index;
-}
-+ (int) ClassMethod
-{
-  return index;	// expected-error {{instance variable 'index' accessed in class method}}
-}
- at end
-
- at interface Test1 {
-}
-- (int) InstMethod;
-+ (int) ClassMethod;
- at end
-
- at implementation Test1
-- (int) InstMethod
-{
-  return index;	// expected-warning {{implicitly declaring library function 'index'}}	\
-                // expected-note {{please include the header <strings.h> or explicitly provide a declaration for 'index'}} \
-                // expected-warning {{incompatible pointer to integer conversion returning}}
-}
-+ (int) ClassMethod
-{
-  return index; // expected-warning {{incompatible pointer to integer conversion returning}}
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface Test {
-   int x;
-}
-
--(void) setX: (int) d;
- at end
-
-extern struct foo x;
-
- at implementation Test
-
--(void) setX: (int) n {
-   x = n;
-}
-
- at end
-
- at interface Ivar
-- (float*)method;
- at end
-
- at interface A {
-  A *Ivar;
-}
-- (int*)method;
- at end
-
- at implementation A
-- (int*)method {
-  int *ip = [Ivar method]; // expected-warning{{incompatible pointer types initializing 'int *' with an expression of type 'float *'}}
-                           // Note that there is no warning in Objective-C++
-  return 0;
-}
- at end
-
- at interface TwoIvars {
-  int a;
-  int b;
-}
- at end
-
- at implementation TwoIvars
-+ (int)classMethod {
-  return a + b; // expected-error{{instance variable 'a' accessed in class method}} \
-  // expected-error{{instance variable 'b' accessed in class method}}
-}
- at end
-
-// rdar://10309454
- at interface Radar10309454
-{
-  int IVAR; // expected-note 4 {{previous definition is here}}
-}
- at end
-
- at interface Radar10309454()
-{
-  int IVAR; // expected-error {{instance variable is already declared}}
-  int PIVAR; // expected-note {{previous definition is here}}
-}
- at end
-
- at interface Radar10309454()
-{
-  int IVAR; // expected-error {{instance variable is already declared}}
-}
- at end
-
- at interface Radar10309454()
-{
-  int IVAR; // expected-error {{instance variable is already declared}}
-  int PIVAR; // expected-error {{instance variable is already declared}}
-}
- at end
-
- at implementation Radar10309454
-{
-  int IVAR; // expected-error {{instance variable is already declared}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-ref-misuse.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-ref-misuse.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-ref-misuse.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface Sprite { // expected-note{{'Sprite' declared here}}
-  int sprite, spree;
-  int UseGlobalBar;
-}
-+ (void)setFoo:(int)foo;
-+ (void)setSprite:(int)sprite;
-- (void)setFoo:(int)foo;
-- (void)setSprite:(int)sprite;
- at end
-
-int spree = 23;
-int UseGlobalBar;
-
- at implementation Sprite
-+ (void)setFoo:(int)foo {
-  sprite = foo;   // expected-error {{instance variable 'sprite' accessed in class method}}
-  spree = foo;
-  Xsprite = foo; // expected-error {{unknown type name 'Xsprite'; did you mean 'Sprite'?}}  \
-  // expected-error{{expected identifier or '('}}
-  UseGlobalBar = 10;
-}
-+ (void)setSprite:(int)sprite {
-  int spree;
-  sprite = 15;
-  spree = 17;
-  ((Sprite *)self)->sprite = 16;   /* NB: This is how one _should_ access */
-  ((Sprite *)self)->spree = 18;    /* ivars from within class methods!    */
-}
-- (void)setFoo:(int)foo {
-  sprite = foo;
-  spree = foo;
-}
-- (void)setSprite:(int)sprite {
-  int spree;
-  sprite = 15;  // expected-warning {{local declaration of 'sprite' hides instance variable}}
-  self->sprite = 16;
-  spree = 17;  // expected-warning {{local declaration of 'spree' hides instance variable}}
-  self->spree = 18;
-}   
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-sem-check-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-sem-check-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-sem-check-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct S; // expected-note{{forward declaration of 'struct S'}}
-typedef int FOO();
-
- at interface INTF
-{
-	struct F {} JJ;
-	int arr[];  // expected-error {{field has incomplete type}}
-	struct S IC;  // expected-error {{field has incomplete type}}
-	struct T { // expected-note {{previous definition is here}}
-	  struct T {} X;  // expected-error {{nested redefinition of 'T'}}
-	}YYY; 
-	FOO    BADFUNC;  // expected-error {{field 'BADFUNC' declared as a function}}
-	int kaka;	// expected-note {{previous declaration is here}}
-	int kaka;	// expected-error {{duplicate member 'kaka'}}
-	char ch[];	// expected-error {{field has incomplete type}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-sem-check-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-sem-check-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ivar-sem-check-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
- at interface Super  {
-  id value2; // expected-note {{previously declared 'value2' here}}
-} 
- at property(retain) id value;
- at property(retain) id value1;
- at property(retain) id prop;
- at end
-
- at interface Sub : Super 
-{
-  id value; 
-}
- at end
-
- at implementation Sub
- at synthesize value; // expected-note {{previous use is here}}
- at synthesize value1=value; // expected-error {{synthesized properties 'value1' and 'value' both claim instance variable 'value'}} 
- at synthesize prop=value2;  // expected-error {{property 'prop' attempting to use instance variable 'value2' declared in super class 'Super'}}
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/legacy-implementation-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/legacy-implementation-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/legacy-implementation-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at implementation INTF // expected-warning {{cannot find interface declaration for 'INTF'}}
- at end
-
-INTF* pi;
-
-INTF* FUNC()
-{
-	return pi;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/message.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/message.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/message.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-typedef struct objc_object {
-  Class isa;
-} *id;
-
-
- at interface foo
-- (void)meth;
- at end
-
- at implementation foo
-- (void) contents {}			// No declaration in @interface!
-- (void) meth { [self contents]; } 
- at end
-
-typedef struct _NSPoint {
-    float x;
-    float y;
-} NSPoint;
-
-typedef struct _NSSize {
-    float width; 
-    float height;
-} NSSize;
-
-typedef struct _NSRect {
-    NSPoint origin;
-    NSSize size;
-} NSRect;
-
- at interface AnyClass
-- (NSRect)rect;
- at end
-
- at class Helicopter;
-
-static void func(Helicopter *obj) {
-  // Note that the proto for "rect" is found in the global pool even when
-  // a statically typed object's class interface isn't in scope! This 
-  // behavior isn't very desirable, however wee need it for GCC compatibility.
-  NSRect r = [obj rect];
-}
-
- at interface NSObject @end
-
-extern Class NSClassFromObject(id object);
-
- at interface XX : NSObject 
- at end
-
- at implementation XX
-
-+ _privateMethod {
-  return self;
-}
-
-- (void) xx {
-  [NSClassFromObject(self) _privateMethod];
-}
- at end
-
- at implementation XX (Private)
-- (void) yy {
-  [NSClassFromObject(self) _privateMethod];
-}
- at end
-
- at interface I0
--(void) nonVararg: (int) x;
- at end
-
-int f0(I0 *ob) {
-  [ ob nonVararg: 0, 1, 2]; // expected-error {{too many arguments to method call}}
-}
-
-int f2() {
-    const id foo;
-    [foo bar];  // expected-warning {{method '-bar' not found (return type defaults to 'id')}}
-    return 0;
-}
-
-
-// PR3766
-struct S { int X; } S;
-
-int test5(int X) {
-  int a = [X somemsg];  // expected-warning {{receiver type 'int' is not 'id'}} \
-                           expected-warning {{method '-somemsg' not found}} \
-                           expected-warning {{incompatible pointer to integer conversion initializing 'int' with an expression of type 'id'}}
-  int b = [S somemsg];  // expected-error {{bad receiver type 'struct S'}}
-}
-
-// PR4021
-void foo4() {
-  struct objc_object X[10];
-  
-  [X rect]; // expected-warning {{receiver type 'struct objc_object *' is not 'id' or interface pointer, consider casting it to 'id'}}
-}
-
-// rdar://13207886
-void foo5(id p) {
-  p
-  [(id)(p) bar]; // expected-error {{missing '['}} \
-                 // expected-error {{expected ']'}} \
-                 // expected-note {{to match this '['}} \
-                 // expected-warning {{instance method '-bar' not found}}
-}
-
- at interface I1
--(void)unavail_meth  __attribute__((unavailable)); // expected-note {{marked unavailable here}}
- at end
-
-// rdar://13620447
-void foo6(I1 *p) {
-  [p
-    bar]; // expected-warning {{instance method '-bar' not found}}
-  [p
-    unavail_meth]; // expected-error {{unavailable}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-arg-qualifier-warning.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-arg-qualifier-warning.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-arg-qualifier-warning.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
-typedef signed char BOOL;
-
- at interface NSString
-- (BOOL)isEqualToString:(NSString *)aString; // expected-note 2{{passing argument to parameter 'aString' here}}
- at end
-
-static const NSString * Identifier1 =   @"Identifier1";
-static NSString const * Identifier2 =   @"Identifier2";
-static NSString * const Identifier3 =   @"Identifier3";
-
-int main () {
-        
-    [@"Identifier1" isEqualToString:Identifier1]; // expected-warning {{sending 'const NSString *' to parameter of type 'NSString *' discards qualifiers}}
-    [@"Identifier2" isEqualToString:Identifier2]; // expected-warning {{sending 'const NSString *' to parameter of type 'NSString *' discards qualifiers}}
-    [@"Identifier3" isEqualToString:Identifier3];
-    return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-attributes.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-attributes.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-attributes.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s
-
- at class NSString;
-
- at interface A
--t1 __attribute__((noreturn));
-- (NSString *)stringByAppendingFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2)));
--(void) m0 __attribute__((noreturn));
--(void) m1 __attribute__((unused));
- at end
-
-
- at interface INTF
-- (int) foo1: (int)arg1 __attribute__((deprecated));
-
-- (int) foo: (int)arg1;  // expected-note {{method 'foo:' declared here}}
-
-- (int) foo2: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{method 'foo2:' declared here}}
-- (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self));
- at end
-
- at implementation INTF
-- (int) foo: (int)arg1  __attribute__((deprecated)){ // expected-warning {{attributes on method implementation and its declaration must match}}
-        return 10;
-}
-- (int) foo1: (int)arg1 {
-        return 10;
-}
-- (int) foo2: (int)arg1 __attribute__((deprecated)) {  // expected-warning {{attributes on method implementation and its declaration must match}}
-        return 10;
-}
-- (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self)) {return 0; }
-- (void) dep __attribute__((deprecated)) { } // OK private methodn
- at end
-
-
-// rdar://10529259
-#define IBAction void)__attribute__((ibaction)
-
- at interface Foo 
-- (void)doSomething1:(id)sender;
-- (void)doSomething2:(id)sender; // expected-note {{method 'doSomething2:' declared here}}
- at end
-
- at implementation Foo
-- (void)doSomething1:(id)sender{}
-- (void)doSomething2:(id)sender{}
- at end
-
- at interface Bar : Foo
-- (IBAction)doSomething1:(id)sender;
- at end
- at implementation Bar
-- (IBAction)doSomething1:(id)sender {}
-- (IBAction)doSomething2:(id)sender {} // expected-warning {{attributes on method implementation and its declaration must match}}
-- (IBAction)doSomething3:(id)sender {}
- at end
-
-// rdar://11593375
- at interface NSObject @end
-
- at interface Test : NSObject
--(id)method __attribute__((deprecated));
--(id)method1;
--(id)method2 __attribute__((aligned(16)));
-- (id) method3: (int)arg1 __attribute__((aligned(16)))  __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{method 'method3:' declared here}}
-- (id) method4: (int)arg1 __attribute__((aligned(16)))  __attribute__((deprecated)) __attribute__((unavailable)); 
- at end
-
- at implementation Test
--(id)method __attribute__((aligned(16))) __attribute__((aligned(16))) __attribute__((deprecated)) {
-    return self;
-}
--(id)method1 __attribute__((aligned(16))) {
-    return self;
-}
--(id)method2 {
-    return self;
-}
-- (id) method3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) {  // expected-warning {{attributes on method implementation and its declaration must match}}
-        return self;
-}
-- (id) method4: (int)arg1 __attribute__((aligned(16))) __attribute__((deprecated)) __attribute__((unavailable)) {
-  return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-bad-param.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-bad-param.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-bad-param.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface foo
- at end
-
- at implementation foo
- at end
-
- at interface bar
--(void) my_method:(foo) my_param; // expected-error {{interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
-- (foo)cccccc:(long)ddddd;  // expected-error {{interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
- at end
-
- at implementation bar
--(void) my_method:(foo) my_param  // expected-error {{interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
-{
-}
-- (foo)cccccc:(long)ddddd // expected-error {{interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
-{
-}
- at end
-
-void somefunc(foo x) {} // expected-error {{interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
-foo somefunc2() {} // expected-error {{interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
-
-// rdar://6780761
-void f0(foo *a0) {
-  extern void g0(int x, ...);
-  g0(1, *(foo*)a0);  // expected-error {{cannot pass object with interface type 'foo' by value through variadic function}}
-}
-
-// rdar://8421082
-enum bogus; // expected-note {{forward declaration of 'enum bogus'}}
-
- at interface fee  {
-}
-- (void)crashMe:(enum bogus)p;
- at end
-
- at implementation fee
-- (void)crashMe:(enum bogus)p { // expected-error {{variable has incomplete type 'enum bogus'}}
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-// This test case tests the default behavior.
-
-// rdar://7933061
-
- at interface NSObject @end
-
- at interface NSArray : NSObject @end
-
- at interface MyClass : NSObject {
-}
-- (void)myMethod:(NSArray *)object;
-- (void)myMethod1:(NSObject *)object; // broken-note {{previous definition is here}}
- at end
-
- at implementation MyClass
-- (void)myMethod:(NSObject *)object {
-}
-- (void)myMethod1:(NSArray *)object { // broken-warning {{conflicting parameter types in implementation of 'myMethod1:': 'NSObject *' vs 'NSArray *'}}
-}
- at end
-
-
- at protocol MyProtocol @end
-
- at interface MyOtherClass : NSObject <MyProtocol> {
-}
-- (void)myMethod:(id <MyProtocol>)object; // broken-note {{previous definition is here}}
-- (void)myMethod1:(id <MyProtocol>)object; // broken-note {{previous definition is here}}
- at end
-
- at implementation MyOtherClass
-- (void)myMethod:(MyClass *)object { // broken-warning {{conflicting parameter types in implementation of 'myMethod:': 'id<MyProtocol>' vs 'MyClass *'}}
-}
-- (void)myMethod1:(MyClass<MyProtocol> *)object { // broken-warning {{conflicting parameter types in implementation of 'myMethod1:': 'id<MyProtocol>' vs 'MyClass<MyProtocol> *'}}
-}
- at end
-
-
-
- at interface A @end
- at interface B : A @end
-
- at interface Test1 {}
-- (void) test1:(A*) object; // broken-note {{previous definition is here}} 
-- (void) test2:(B*) object;
- at end
-
- at implementation Test1
-- (void) test1:(B*) object {} // broken-warning {{conflicting parameter types in implementation of 'test1:': 'A *' vs 'B *'}}
-- (void) test2:(A*) object {}
- at end
-
-// rdar://problem/8597621 wants id -> A* to be an exception
- at interface Test2 {}
-- (void) test1:(id) object; // broken-note {{previous definition is here}} 
-- (void) test2:(A*) object;
- at end
- at implementation Test2
-- (void) test1:(A*) object {} // broken-warning {{conflicting parameter types in implementation of 'test1:': 'id' vs 'A *'}}
-- (void) test2:(id) object {}
- at end
-
- at interface Test3 {}
-- (A*) test1;
-- (B*) test2; // broken-note {{previous definition is here}} 
- at end
-
- at implementation Test3
-- (B*) test1 { return 0; }
-- (A*) test2 { return 0; } // broken-warning {{conflicting return type in implementation of 'test2': 'B *' vs 'A *'}}
- at end
-
-// The particular case of overriding with an id return is white-listed.
- at interface Test4 {}
-- (id) test1;
-- (A*) test2;
- at end
- at implementation Test4
-- (A*) test1 { return 0; } // id -> A* is rdar://problem/8596987
-- (id) test2 { return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -Wmethod-signatures -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface A @end
- at interface B : A @end
-
- at interface Test1 {}
-- (void) test1:(A*) object; // expected-note {{previous definition is here}} 
-- (void) test2:(B*) object;
- at end
-
- at implementation Test1
-- (void) test1:(B*) object {} // expected-warning {{conflicting parameter types in implementation of 'test1:': 'A *' vs 'B *'}}
-- (void) test2:(A*) object {}
- at end
-
- at interface Test2 {}
-- (void) test1:(id) object; // expected-note {{previous definition is here}} 
-- (void) test2:(A*) object;
- at end
-
- at implementation Test2
-- (void) test1:(A*) object {} // expected-warning {{conflicting parameter types in implementation of 'test1:': 'id' vs 'A *'}}
-- (void) test2:(id) object {}
- at end
-
- at interface Test3 {}
-- (A*) test1;
-- (B*) test2; // expected-note {{previous definition is here}} 
- at end
-
- at implementation Test3
-- (B*) test1 { return 0; }
-- (A*) test2 { return 0; } // expected-warning {{conflicting return type in implementation of 'test2': 'B *' vs 'A *'}}
- at end
-
-// The particular case of overriding with an id return is white-listed.
- at interface Test4 {}
-- (id) test1;
-- (A*) test2;
- at end
- at implementation Test4
-- (A*) test1 { return 0; } // id -> A* is rdar://problem/8596987
-- (id) test2 { return 0; }
- at end
-
-// rdar://12522752
-typedef int int32_t;
-typedef long long int64_t;
-
- at interface NSObject @end
-
- at protocol CKMessage
- at property (nonatomic,readonly,assign) int64_t sequenceNumber; // expected-note {{previous definition is here}}
- at end
-
- at protocol CKMessage;
-
- at interface CKIMMessage : NSObject<CKMessage>
- at end
-
- at implementation CKIMMessage
-- (int32_t)sequenceNumber { // expected-warning {{conflicting return type in implementation of 'sequenceNumber': 'int64_t' (aka 'long long') vs 'int32_t' (aka 'int')}}
-  return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-conflict.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify -Wno-objc-root-class %s
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object;
- at end  @protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end  @protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end  @protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end    @interface NSObject <NSObject> {
-}
- at end    extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
- at interface NSValue : NSObject <NSCopying, NSCoding>  - (void)getValue:(void *)value;
- at end        @class NSString;
-typedef struct _NSRange {
-}
-  NSRange;
- at interface NSValue (NSValueRangeExtensions)  + (NSValue *)valueWithRange:(NSRange)range;
- at end  @interface NSAttributedString : NSObject <NSCopying, NSMutableCopying, NSCoding>  - (NSString *)string;
- at end  @interface NSMutableAttributedString : NSAttributedString  - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)str;
- at end       @class NSArray, NSDictionary, NSString, NSError;
- at interface NSScanner : NSObject <NSCopying>  - (NSString *)string;
- at end        typedef struct {
-}
-  CSSM_FIELDGROUP, *CSSM_FIELDGROUP_PTR;
- at protocol XDUMLClassifier;
- at protocol XDUMLClassInterfaceCommons <XDUMLClassifier> 
- at end  @protocol XDUMLImplementation;
- at protocol XDUMLElement <NSObject> - (NSArray *) ownedElements;
- at end @protocol XDUMLDataType;
- at protocol XDUMLNamedElement <XDUMLElement>     - (NSString *) name;
- at end enum _XDSourceLanguage {
-XDSourceUnknown=0,     XDSourceJava,     XDSourceC,     XDSourceCPP,     XDSourceObjectiveC };
-typedef NSUInteger XDSourceLanguage;
- at protocol XDSCClassifier <XDUMLClassInterfaceCommons> - (XDSourceLanguage)language;
- at end  @class XDSCDocController;
- at interface XDSCDisplaySpecification : NSObject <NSCoding>{
-}
- at end  @class XDSCOperation;
- at interface XDSCClassFormatter : NSObject {
-}
-+ (NSUInteger) compartmentsForClassifier: (id <XDUMLClassifier>) classifier withSpecification: (XDSCDisplaySpecification *) displaySpec;  // expected-note {{previous definition is here}}
- at end  
- at class NSString;
- at implementation XDSCClassFormatter       
-
-+ appendVisibility: (id <XDUMLNamedElement>) element withSpecification: (XDSCDisplaySpecification *) displaySpec to: (NSMutableAttributedString *) attributedString
-{
-  return 0;
-}
-+ (NSUInteger) compartmentsForClassifier: (id <XDSCClassifier>) classifier withSpecification: (XDSCDisplaySpecification *) displaySpec { // expected-warning {{conflicting parameter types in implementation of 'compartmentsForClassifier:withSpecification:'}}
-  return 0;
-}
- at end 
-
-// rdar: // 8006060
- at interface Bar
-- (void)foo:(id)format, ...;  // expected-note {{previous declaration is here}}
-- (void)foo1:(id)format;      // expected-note {{previous declaration is here}}
- at end
- at implementation Bar
-- (void)foo:(id)format {}; // expected-warning {{conflicting variadic declaration of method and its implementation}}
-- (void)foo1:(id)format, ... {}; // expected-warning {{conflicting variadic declaration of method and its implementation}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-def-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-def-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-def-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface foo
-- (int)meth;
- at end
-
- at implementation foo
-- (int) meth { return [self meth]; }
- at end
-
-// PR2708
- at interface MyClass
-+- (void)myMethod;   // expected-error {{expected selector for Objective-C method}}
-- (vid)myMethod2;    // expected-error {{expected a type}}
- at end
-
- at implementation MyClass
-- (void)myMethod { }
-- (vid)myMethod2 { }	// expected-error {{expected a type}}
-
- at end
-
-
- at protocol proto;
- at protocol NSObject;
-
-//@protocol GrowlPluginHandler <NSObject> @end
-
-
- at interface SomeClass2
-- (int)myMethod1: (id<proto>)
-arg; // expected-note {{previous definition is here}}
- at end
-
- at implementation SomeClass2
-- (int)myMethod1: (id<NSObject>)
-  arg { // expected-warning {{conflicting parameter types in implementation of 'myMethod1:': 'id<proto>' vs 'id<NSObject>'}}
-  
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-def-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-def-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-def-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -ast-print %s
-extern void abort(void);
-#define CHECK_IF(expr) if(!(expr)) abort()
-
-static double d = 4.5920234e2;
-
- at interface Foo 
--(void) brokenType: (int)x floatingPoint: (double)y;
- at end
-
-
- at implementation Foo
--(void) brokenType: (int)x floatingPoint: (double)y
-{
-        CHECK_IF(x == 459);
-        CHECK_IF(y == d);
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-encoding-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-encoding-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-encoding-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s
-// TODO: We don't support rewrite of method definitions
-
- at interface Intf 
-- (in out bycopy id) address:(byref inout void *)location with:(out oneway unsigned **)arg2;
-- (id) another:(void *)location with:(unsigned **)arg2;
- at end
-
- at implementation Intf
-- (in out bycopy id) address:(byref inout void *)location with:(out oneway unsigned **)arg2{ return 0; }
-- (id) another:(void *)location with:(unsigned **)arg2 { return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-in-class-extension-impl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-in-class-extension-impl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-in-class-extension-impl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// expected-no-diagnostics
-// rdar://8530080
-
- at protocol ViewDelegate @end
-
- at interface NSTextView
-- (id <ViewDelegate>)delegate;
- at end
-
- at interface FooTextView : NSTextView
- at end
-
- at interface FooTextView() 
-- (id)delegate;
- at end
-
- at implementation FooTextView
-- (id)delegate {return 0; }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-typedef signed char BOOL;
-
- at protocol NSObject
-+ alloc;
-- init;
-- (BOOL) isEqual:(id) object;
-- (Class)class;
- at end
-
- at interface NSObject < NSObject > {} @end
-
- at class NSString, NSPort;
-
- at interface NSPortNameServer:NSObject
-+ (NSPortNameServer *) systemDefaultPortNameServer;
- at end
-
- at interface NSMachBootstrapServer:NSPortNameServer + (id) sharedInstance; @end
-
-enum {
-  NSWindowsNTOperatingSystem = 1, NSWindows95OperatingSystem, NSSolarisOperatingSystem, NSHPUXOperatingSystem, NSMACHOperatingSystem, NSSunOSOperatingSystem, NSOSF1OperatingSystem
-};
-
- at interface NSRunLoop:NSObject {} @end
-
- at interface NSRunLoop(NSRunLoopConveniences)
-- (void) run;
- at end
-
-extern NSString *const NSWillBecomeMultiThreadedNotification;
-
- at interface SenTestTool:NSObject {}
- at end
-
- at implementation SenTestTool
-+ (void) initialize {}
-+(SenTestTool *) sharedInstance { return 0; }
--(int) run { return 0; }
-+(int) run {
-  return[[self sharedInstance] run];
-}
- at end
-
- at interface XX : NSObject
-
-+ classMethod;
-
- at end
-
- at interface YY : NSObject
-- whatever;
- at end
-
- at implementation YY 
-
-- whatever {
-  id obj = [[XX alloc] init];
-  [[obj class] classMethod];
-  return 0;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef struct { int y; } Abstract;
-
-typedef struct { int x; } Alternate;
-
-#define INTERFERE_TYPE Alternate*
-
- at protocol A
- at property Abstract *x; // expected-note {{using}}
- at end
-
- at interface B
- at property Abstract *y; // expected-note {{using}}
- at end
-
- at interface B (Category)
- at property Abstract *z; // expected-note {{using}}
- at end
-
- at interface InterferencePre
--(void) x; // expected-note {{also found}}
--(void) y; // expected-note {{also found}}
--(void) z; // expected-note {{also found}}
--(void) setX: (INTERFERE_TYPE) arg; 
--(void) setY: (INTERFERE_TYPE) arg;
--(void) setZ: (INTERFERE_TYPE) arg;
- at end
-
-void f0(id a0) {
-  Abstract *l = [a0 x]; // expected-warning {{multiple methods named 'x' found}} 
-}
-
-void f1(id a0) {
-  Abstract *l = [a0 y]; // expected-warning {{multiple methods named 'y' found}}
-}
-
-void f2(id a0) {
-  Abstract *l = [a0 z]; // expected-warning {{multiple methods named 'z' found}}
-}
-
-void f3(id a0, Abstract *a1) { 
-  [ a0 setX: a1];
-}
-
-void f4(id a0, Abstract *a1) { 
-  [ a0 setY: a1];
-}
-
-void f5(id a0, Abstract *a1) { 
-  [ a0 setZ: a1];
-}
-
-// pr7861
-void f6(id<A> a0) {
-  Abstract *l = [a0 x];
-}
-
-struct test3a { int x, y; };
-struct test3b { unsigned x, y; };
- at interface Test3A - (struct test3a) test3; @end
- at interface Test3B - (struct test3b) test3; @end
-void test3(id x) {
-  (void) [x test3];
-}
-
-struct test4a { int x, y; };
-struct test4b { float x, y; };
- at interface Test4A - (struct test4a) test4; @end //expected-note{{using}}
- at interface Test4B - (struct test4b) test4; @end //expected-note{{also found}}
-void test4(id x) {
-  (void) [x test4]; //expected-warning {{multiple methods named 'test4' found}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface NSObject {}
-
- at end
-
- at interface MyClass : NSObject {}
-
- at end
-
- at interface MyClass (MyCategorie)
-
- at end
-
- at interface MySubClass : MyClass {}
-
- at end
-
- at interface MySubSubClass : MySubClass {}
-
- at end
-
- at implementation NSObject (NSObjectCategory)
-- (void)rootMethod {}
- at end
-
- at implementation MyClass
-
-+ (void)myClassMethod { }
-- (void)myMethod { }
-
- at end
-
- at implementation MyClass (MyCategorie)
-+ (void)myClassCategoryMethod { }
-- (void)categoryMethod {}
- at end
-
- at implementation MySubClass
-
-- (void)mySubMethod {}
-
-- (void)myTest {
-  [self mySubMethod];
-  // should lookup method in superclass implementation if available
-  [self myMethod];
-  [super myMethod];
-  
-  [self categoryMethod];
-  [super categoryMethod];
-  
-  // instance method of root class
-  [MyClass rootMethod];
-  
-  [MyClass myClassMethod];
-  [MySubClass myClassMethod];
-  
-  [MyClass myClassCategoryMethod];
-  [MySubClass myClassCategoryMethod];
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup-5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar://8592156
-
-typedef struct objc_class *Class;
- at interface A
--(Class) foo;
- at end
-
-void f0(A *a) { int x = [[a foo] baz]; } // expected-warning {{method '+baz' not found (return type defaults to 'id')}} \
-					 // expected-warning {{ncompatible pointer to integer conversion initializing 'int' with an expression of type 'id'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-typedef signed char BOOL;
-typedef int NSInteger;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (BOOL)respondsToSelector:(SEL)s;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray;
-
- at protocol PBXCompletionItem
-- (NSString *) name;
-- (NSInteger)priority;
-- setPriority:(NSInteger)p;
- at end
-
- at implementation PBXCodeAssistant // expected-warning{{cannot find interface declaration for 'PBXCodeAssistant'}}
-static NSMutableArray * recentCompletions = ((void *)0);
-+ (float) factorForRecentCompletion:(NSString *) completion
-{
-    for (NSObject<PBXCompletionItem> * item in [self completionItems]) // expected-warning{{method '+completionItems' not found (return type defaults to 'id')}}
-    {
-        if ([item respondsToSelector:@selector(setPriority:)])
-        {
-            [(id)item setPriority:[item priority] / [PBXCodeAssistant factorForRecentCompletion:[item name]]];
-        }
-    }
-    return 0;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-no-context.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-no-context.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-no-context.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-- im0 { // expected-error{{missing context for method declaration}}
-  int a; return 0;

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-not-defined.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-not-defined.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-not-defined.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface Foo
- at end
-
-void test() {
-  Foo *fooObj;
-  id obj;
-
-  [[Foo alloc] init]; // expected-warning {{class method '+alloc' not found (return type defaults to 'id')}} expected-warning {{instance method '-init' not found (return type defaults to 'id')}}
-  [fooObj notdefined]; // expected-warning {{instance method '-notdefined' not found (return type defaults to 'id')}}
-  [obj whatever:1 :2 :3]; // expected-warning {{instance method '-whatever:::' not found (return type defaults to 'id')}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-prototype-scope.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-prototype-scope.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-prototype-scope.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wduplicate-method-arg -verify -Wno-objc-root-class %s
-
-// rdar://8877730
-
-int object;
-
- at class NSString, NSArray;
-
- at interface Test 
-- Func:(int)XXXX, id object; // expected-warning {{use of C-style parameters in Objective-C method declarations is deprecated}}
-
-- doSomethingElseWith:(id)object;
-
-- (NSString *)doSomethingWith:(NSString *)object and:(NSArray *)object; // expected-warning {{redeclaration of method parameter 'object'}} \
-					  // expected-note {{previous declaration is here}}
- at end
-
- at implementation Test
-
-- (NSString *)doSomethingWith:(NSString *)object and:(NSArray *)object // expected-warning {{redefinition of method parameter 'object'}} \
-					  // expected-note {{previous declaration is here}}
-{
-    return object; // expected-warning {{incompatible pointer types returning 'NSArray *' from a function with result type 'NSString *'}}
-}
-
-- Func:(int)XXXX, id object { return object; } // expected-warning {{use of C-style parameters in Objective-C method declarations is deprecated}}
-
-- doSomethingElseWith:(id)object { return object; }
-
- at end
-
-struct P;
-
- at interface Test1
-- doSomethingWith:(struct S *)object and:(struct P *)obj; // expected-warning {{declaration of 'struct S' will not be visible outside of this function}}
- at end
-
-int obj;

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-sentinel-attr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-sentinel-attr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-sentinel-attr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
-#define NULL (void*)0
-
-#define ATTR __attribute__ ((__sentinel__)) 
-
- at interface INTF
-- (void) foo1 : (int)x, ... ATTR; // expected-note {{method has been explicitly marked sentinel here}}
-- (void) foo3 : (int)x __attribute__ ((__sentinel__)) ; // expected-warning {{'sentinel' attribute only supported for variadic functions}}
-- (void) foo5 : (int)x, ... __attribute__ ((__sentinel__(1))); // expected-note {{method has been explicitly marked sentinel here}}
-- (void) foo6 : (int)x, ... __attribute__ ((__sentinel__(5))); // expected-note {{method has been explicitly marked sentinel here}}
-- (void) foo7 : (int)x, ... __attribute__ ((__sentinel__(0))); // expected-note {{method has been explicitly marked sentinel here}}
-- (void) foo8 : (int)x, ... __attribute__ ((__sentinel__("a")));  // expected-error {{'sentinel' attribute requires parameter 1 to be an integer constant}}
-- (void) foo9 : (int)x, ... __attribute__ ((__sentinel__(-1)));  // expected-error {{'sentinel' parameter 1 less than zero}}
-- (void) foo10 : (int)x, ... __attribute__ ((__sentinel__(1,1)));
-- (void) foo11 : (int)x, ... __attribute__ ((__sentinel__(1,1,3)));  // expected-error {{attribute takes no more than 2 arguments}}
-- (void) foo12 : (int)x, ... ATTR; // expected-note {{method has been explicitly marked sentinel here}}
-
-// rdar://7975788
-- (id) foo13 : (id)firstObj, ... __attribute__((sentinel(0,1)));
-- (id) foo14 : (id)firstObj :  (Class)secondObj, ... __attribute__((sentinel(0,1)));
-- (id) foo15 : (id*)firstObj, ... __attribute__((sentinel(0,1)));
-- (id) foo16 : (id**)firstObj, ... __attribute__((sentinel(0,1)));
- at end
-
-int main ()
-{
-  INTF *p;
-
-  [p foo1:1, NULL]; // OK
-  [p foo1:1, 0];  // expected-warning {{missing sentinel in method dispatch}}
-  [p foo5:1, NULL, 2]; // OK
-  [p foo5:1, 2, NULL, 1]; // OK
-  [p foo5:1, NULL, 2, 1];  // expected-warning {{missing sentinel in method dispatch}}
-
-  [p foo6:1,2,3,4,5,6,7];  // expected-warning {{missing sentinel in method dispatch}}
-  [p foo6:1,NULL,3,4,5,6,7]; // OK
-  [p foo7:1];	 // expected-warning {{not enough variable arguments in 'foo7:' declaration to fit a sentinel}}
-  [p foo7:1, NULL]; // ok
-
-  [p foo12:1]; // expected-warning {{not enough variable arguments in 'foo12:' declaration to fit a sentinel}}
-
-  // rdar://7975788
-  [ p foo13 : NULL]; 
-  [ p foo14 : 0 : NULL]; 
-  [ p foo16 : NULL]; 
-  [ p foo15 : NULL];
-}
- 

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface A
-- (void) setMoo: (int) x;	//  expected-note {{previous definition is here}}
-- (int) setMoo1: (int) x;	//  expected-note {{previous definition is here}}
-- (int) setOk : (int) x : (double) d;
- at end
-
- at implementation A 
--(void) setMoo: (float) x {}	//  expected-warning {{conflicting parameter types in implementation of 'setMoo:': 'int' vs 'float'}}
-- (char) setMoo1: (int) x { return 0; }	//  expected-warning {{conflicting return type in implementation of 'setMoo1:': 'int' vs 'char'}}
-- (int) setOk : (int) x : (double) d { return 0; }
- at end
-
-
-
- at interface C
-+ (void) cMoo: (int) x;	//  expected-note 2 {{previous definition is here}}
- at end
-
- at implementation C 
-+(float) cMoo:   // expected-warning {{conflicting return type in implementation of 'cMoo:': 'void' vs 'float'}}
-   (float) x { return 0; }	//  expected-warning {{conflicting parameter types in implementation of 'cMoo:': 'int' vs 'float'}}
- at end
-
-
- at interface A(CAT)
-- (void) setCat: (int) x;	// expected-note 2 {{previous definition is here}}
-+ (void) cCat: (int) x;	//  expected-note {{previous definition is here}}
- at end
-
- at implementation A(CAT) 
--(float) setCat:  // expected-warning {{conflicting return type in implementation of 'setCat:': 'void' vs 'float'}}
-(float) x { return 0; }	//  expected-warning {{conflicting parameter types in implementation of 'setCat:': 'int' vs 'float'}}
-+ (int) cCat: (int) x { return 0; }	//  expected-warning {{conflicting return type in implementation of 'cCat:': 'void' vs 'int'}}
- at end
-
-// rdar://12519216
-// test that when implementation implements method in a category, types match.
- at interface testObject {}
- at end
-
- at interface testObject(Category)
-- (float)returnCGFloat; // expected-note {{previous definition is here}}
- at end
-
- at implementation testObject
-- (double)returnCGFloat { // expected-warning {{conflicting return type in implementation of 'returnCGFloat': 'float' vs 'double'}}
-  return 0.0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol P
-- (void) doSomethingInProtocol: (float) x; // expected-note {{previous definition is here}}
-+ (void) doSomethingClassyInProtocol: (float) x; // expected-note {{previous definition is here}}
-- (void) doNothingInProtocol : (float) x;
-+ (void) doNothingClassyInProtocol : (float) x;
- at end
-
- at interface I <P>
-- (void) doSomething: (float) x; // expected-note {{previous definition is here}}
-+ (void) doSomethingClassy: (int) x; // expected-note {{previous definition is here}}
- at end
-
- at interface Bar : I
- at end
-
- at implementation Bar
-- (void) doSomething: (int) x {} // expected-warning {{conflicting parameter types}}
-+ (void) doSomethingClassy: (float) x{}  // expected-warning {{conflicting parameter types}}
-- (void) doSomethingInProtocol: (id) x {}  // expected-warning {{conflicting parameter types}}
-+ (void) doSomethingClassyInProtocol: (id) x {}  // expected-warning {{conflicting parameter types}}
- at end
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-typecheck-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify %s
-
- at class B;
- at interface A
-- (B*)obj;
-- (B*)a; // expected-note {{previous definition is here}}
-- (void)takesA: (A*)a; // expected-note {{previous definition is here}}
-- (void)takesId: (id)a; // expected-note {{previous definition is here}}
- at end
-
-
- at interface B : A
- at end
-
- at implementation B
-- (id)obj {return self;} // 'id' overrides are white-listed?
-- (A*)a { return self;}  // expected-warning {{conflicting return type in implementation of 'a'}}
-- (void)takesA: (B*)a  // expected-warning {{conflicting parameter types in implementation of 'takesA:'}}
-{}
-- (void)takesId: (B*)a // expected-warning {{conflicting parameter types in implementation of 'takesId:'}}
-{}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undef-category-warn-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undef-category-warn-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undef-category-warn-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface MyClass1
- at end
-
- at protocol P
-- (void) Pmeth;  // expected-note {{method 'Pmeth' declared here}}
-- (void) Pmeth1;  // expected-note {{method 'Pmeth1' declared here}}
- at end
-
- at interface MyClass1(CAT) <P> // expected-note {{required for direct or indirect protocol 'P'}}
-- (void) meth2;              // expected-note {{method 'meth2' declared here}}
- at end
-
- at implementation MyClass1(CAT) // expected-warning {{method 'Pmeth' in protocol not implemented}} \
-                              // expected-warning {{method definition for 'meth2' not found}}
-- (void) Pmeth1{}
- at end
-
- at interface MyClass1(DOG) <P> // expected-note {{required for direct or indirect protocol 'P'}}
-- (void)ppp;                 // expected-note {{method 'ppp' declared here}}
- at end
-
- at implementation MyClass1(DOG) // expected-warning {{method 'Pmeth1' in protocol not implemented}} \
-                              // expected-warning {{method definition for 'ppp' not found}}
-- (void) Pmeth {}
- at end
-
- at implementation MyClass1(CAT1)
- at end
-
-// rdar://10823023
- at class NSString;
-
- at protocol NSObject
-- (NSString *)meth_inprotocol;
- at end
-
- at interface NSObject <NSObject>
-- (NSString *)description;
-+ (NSString *) cls_description;
- at end
-
- at protocol Foo 
-- (NSString *)description;
-+ (NSString *) cls_description;
- at end
-
- at interface NSObject (FooConformance) <Foo>
- at end
-
- at implementation NSObject (FooConformance)
- at end
-
-// rdar://11186449
-// Don't warn when a category does not implemented a method imported
-// by its protocol because another category has its declaration and
-// that category will implement it.
- at interface NSOrderedSet @end
-
- at interface NSOrderedSet(CoolectionImplements)
-- (unsigned char)containsObject:(id)object;
- at end
-
- at protocol Collection
-- (unsigned char)containsObject:(id)object;
- at end
-
- at interface NSOrderedSet (CollectionConformance) <Collection>
- at end
-
- at implementation NSOrderedSet (CollectionConformance)
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undef-extension-warn-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undef-extension-warn-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undef-extension-warn-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface MyClass // expected-note {{required for direct or indirect protocol 'P'}}
- at end
-
- at protocol P
-- (void)Pmeth;
-- (void)Pmeth1; // expected-note {{method 'Pmeth1' declared here}}
- at end
-
-// Class extension
- at interface MyClass () <P>
-- (void)meth2; // expected-note {{method 'meth2' declared here}}
- at end
-
-// Add a category to test that clang does not emit warning for this method.
- at interface MyClass (Category) 
-- (void)categoryMethod;
- at end
-
- at implementation MyClass // expected-warning {{method 'Pmeth1' in protocol not implemented}} \
-                        // expected-warning {{method definition for 'meth2' not found}}
-- (void)Pmeth {}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undefined-warn-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undefined-warn-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-undefined-warn-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface INTF
-- (void) meth;
-- (void) meth : (int) arg1;
-- (int) int_meth;  // expected-note {{method 'int_meth' declared here}}
-+ (int) cls_meth;  // expected-note {{method 'cls_meth' declared here}}
-+ (void) cls_meth1 : (int) arg1;  // expected-note {{method 'cls_meth1:' declared here}}
- at end
-
- at implementation INTF // expected-warning {{method definition for 'int_meth' not found}} \
-                     // expected-warning {{method definition for 'cls_meth' not found}} \
-                     // expected-warning {{method definition for 'cls_meth1:' not found}}
-- (void) meth {}
-- (void) meth : (int) arg2{}
-- (void) cls_meth1 : (int) arg2{}
- at end
-
- at interface INTF1
-- (void) meth;
-- (void) meth : (int) arg1;
-- (int)  int_meth; // expected-note {{method 'int_meth' declared here}}
-+ (int) cls_meth;  // expected-note {{method 'cls_meth' declared here}}
-+ (void) cls_meth1 : (int) arg1;  // expected-note {{method 'cls_meth1:' declared here}}
- at end
-
- at implementation INTF1 // expected-warning {{method definition for 'int_meth' not found}} \
-                      // expected-warning {{method definition for 'cls_meth' not found}} \
-                      // expected-warning {{method definition for 'cls_meth1:' not found}}
-- (void) meth {}
-- (void) meth : (int) arg2{}
-- (void) cls_meth1 : (int) arg2{}
- at end
-
- at interface INTF2
-- (void) meth;
-- (void) meth : (int) arg1;
-- (void) cls_meth1 : (int) arg1; 
- at end
-
- at implementation INTF2
-- (void) meth {}
-- (void) meth : (int) arg2{}
-- (void) cls_meth1 : (int) arg2{}
- at end
-
-
-// rdar://8850818
- at interface Root @end
-
- at interface Foo : Root @end
-
- at implementation Foo
-
-- (void)someFunction { return; }
-
-+ (void)anotherFunction {
-    [self someFunction]; // expected-warning {{method '+someFunction' not found (return type defaults to 'id')}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-unused-attribute.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-unused-attribute.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-unused-attribute.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wunused-parameter -verify -Wno-objc-root-class %s
-
- at interface INTF
-- (void) correct_use_of_unused: (void *) notice : (id)another_arg;
-- (void) will_warn_unused_arg: (void *) notice : (id)warn_unused;
-- (void) unused_attr_on_decl_ignored: (void *)  __attribute__((unused)) will_warn;
- at end
-
- at implementation INTF
-- (void) correct_use_of_unused: (void *)  __attribute__((unused)) notice : (id) __attribute__((unused)) newarg{
-}
-- (void) will_warn_unused_arg: (void *) __attribute__((unused))  notice : (id)warn_unused {}  // expected-warning {{unused parameter 'warn_unused'}}
-- (void) unused_attr_on_decl_ignored: (void *)  will_warn{}  // expected-warning {{unused parameter 'will_warn'}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/method-warn-unused-attribute.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/method-warn-unused-attribute.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/method-warn-unused-attribute.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wunused-value -verify %s
-
- at interface INTF
-- (id) foo __attribute__((warn_unused_result)); 
-- (void) garf __attribute__((warn_unused_result)); // expected-warning {{attribute 'warn_unused_result' cannot be applied to Objective-C method without return value}}
-- (int) fee __attribute__((warn_unused_result));
-+ (int) c __attribute__((warn_unused_result));
- at end
-
-void foo(INTF *a) {
-  [a garf];
-  [a fee]; // expected-warning {{ignoring return value of function declared with warn_unused_result attribute}}
-  [INTF c]; // expected-warning {{ignoring return value of function declared with warn_unused_result attribute}}
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/mismatched-undefined-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/mismatched-undefined-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/mismatched-undefined-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wno-deprecated-declarations -verify %s
-// rdar://11460990
-
-typedef unsigned int CGDirectDisplayID;
-
- at interface NSObject @end
-
- at interface BrightnessAssistant : NSObject {}
-- (void)BrightnessAssistantUnregisterForNotifications:(void*) observer; // expected-note {{previous definition is here}}
- at end
- at implementation BrightnessAssistant // expected-note {{implementation started here}}
-- (void)BrightnessAssistantUnregisterForNotifications:(CGDirectDisplayID) displayID, void* observer // expected-warning {{conflicting parameter types in implementation of 'BrightnessAssistantUnregisterForNotifications:': 'void *' vs 'CGDirectDisplayID'}}
- at end // expected-error {{expected method body}} // expected-error {{missing '@end'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-atend-metadata.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-atend-metadata.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-atend-metadata.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify -Wno-objc-root-class %s 
-
- at interface I0 
- at end
-
- at implementation I0 // expected-note {{implementation started here}}
-- meth { return 0; }
-
- at interface I1 : I0 // expected-error {{missing '@end'}}
- at end
-
- at implementation I1 // expected-note {{implementation started here}}
--(void) im0 { self = [super init]; } // expected-warning {{not found}}
-
- at interface I2 : I0 // expected-error {{missing '@end'}}
-- I2meth;
- at end
-
- at implementation I2 // expected-note {{implementation started here}}
-- I2meth { return 0; }
-
- at implementation  I2(CAT) // expected-error 2 {{missing '@end'}} expected-note {{implementation started here}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-method-context.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-method-context.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-method-context.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-- (void)compilerTestAgainst;  // expected-error {{missing context for method declaration}}
-
-void xx();  // expected-error {{expected method body}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-method-return-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-method-return-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/missing-method-return-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -Wmissing-method-return-type -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://9615045
-
- at interface I
--  initWithFoo:(id)foo; // expected-warning {{method has no return type specified; defaults to 'id'}}
- at end
-
- at implementation I
-- initWithFoo:(id)foo { return 0; } // expected-warning {{method has no return type specified; defaults to 'id'}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/narrow-property-type-in-cont-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/narrow-property-type-in-cont-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/narrow-property-type-in-cont-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -fsyntax-only -verify %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify %s
-// rdar://10790488
-
- at interface NSArray @end
-
- at interface NSMutableArray : NSArray
- at end
-
- at interface GKTurnBasedMatchMakerKVO
- at property(nonatomic,readonly,retain) NSArray* outline;
- at property(nonatomic,readonly,retain) NSMutableArray* err_outline; // expected-note {{property declared here}}
- at end
-
- at interface GKTurnBasedMatchMakerKVO ()
- at property(nonatomic,readwrite,retain) NSMutableArray* outline;
- at property(nonatomic,readwrite,retain) NSArray* err_outline; // expected-error {{type of property 'NSArray *' in class extension does not match property type in primary class}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/nested-typedef-decl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/nested-typedef-decl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/nested-typedef-decl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://10041908
-
- at interface Bar {
-  struct _A *_hardlinkList;
-}
- at end
- at implementation Bar
-typedef struct _A {
-  int dev;
-  int inode;
-} A;
-
-- (void) idx:(int)idx ino:(int)ino dev:(int)dev
-{
-  _hardlinkList[idx].inode = ino;
-  _hardlinkList[idx].dev = dev;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/newproperty-class-method-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/newproperty-class-method-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/newproperty-class-method-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s
-
-void abort(void);
-
- at interface Subclass
-+ (int)magicNumber;
-+ (void)setMagicNumber:(int)value;
-+ (void)setFakeSetterNumber:(int)value;
- at end
-
- at implementation Subclass
-int _magicNumber = 0;
-+ (int)magicNumber {
-  return _magicNumber;
-}
-
-+ (void)setMagicNumber:(int)value {
-  _magicNumber = value;
-}
-
-+ (void)setFakeSetterNumber:(int)value {
-  _magicNumber = value;
-}
-
-+ (void) classMeth
-{
-	self.magicNumber = 10;
-	if (self.magicNumber != 10)
-	  abort ();
-}
- at end
-
-int main (void) {
-  
-  int a;
-  Subclass.magicNumber = 2 /*[Subclass setMagicNumber:2]*/;
-  if (Subclass.magicNumber != 0)
-    abort ();
-  if (Subclass.magicNumber != 2)
-    abort ();
-  Subclass.magicNumber += 3;
-  if (Subclass.magicNumber != 5)
-    abort ();
-  Subclass.magicNumber -= 5;
-  if (Subclass.magicNumber != 0)
-    abort ();
-  /* We only have a setter in the following case. */
-  Subclass.fakeSetterNumber = 123;
-
-  /* We read it using the other getter. */
-  if (Subclass.magicNumber != 123)
-   abort ();
-  Subclass.fakeSetterNumber = Subclass.magicNumber;
-  if (Subclass.magicNumber != 123)
-   abort ();
-
-  Subclass.fakeSetterNumberX = 123; // expected-error{{property 'fakeSetterNumberX' not found on object of type 'Subclass'}}
-
-  /* Test class methods using the new syntax. */
-  [Subclass classMeth];
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-gc-weak-test.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-gc-weak-test.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-gc-weak-test.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface Subtask
-{
-  id _delegate;
-}
- at property(nonatomic,readwrite,assign)   id __weak       delegate;
- at end
-
- at implementation Subtask
- at synthesize delegate = _delegate;
- at end
-
- 
- at interface PVSelectionOverlayView2 
-{
- id __weak _selectionRect;
-}
-
- at property(assign) id selectionRect;
-
- at end
-
- at implementation PVSelectionOverlayView2
-
- at synthesize selectionRect = _selectionRect;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-ivar-access-control.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-ivar-access-control.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-ivar-access-control.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fdebugger-support -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fdebugger-support -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://10997647
-
- at interface I
-{
- at private
-int ivar;
-}
- at end
-
- at implementation I
-- (int) meth {
-  return self->ivar;
-}
-int foo1(I* p) {
-  return p->ivar;
-}
- at end
-
-int foo(I* p) {
-  return p->ivar;
-}
-
- at interface B 
- at end
-
- at implementation B 
-- (int) meth : (I*) arg {
-  return arg->ivar;
-}
- at end
-
-
- at interface I1 {
- int protected_ivar;
-}
- at property int PROP_INMAIN;
- at end
-
- at interface I1() {
- int private_ivar;
-}
- at property int PROP_INCLASSEXT;
- at end
-
- at implementation I1
- at synthesize PROP_INMAIN, PROP_INCLASSEXT;
-
-- (int) Meth {
-   PROP_INMAIN = 1;
-   PROP_INCLASSEXT = 2;
-   protected_ivar = 1;  // OK
-   return private_ivar; // OK
-}
- at end
-
-
- at interface DER : I1
- at end
-
- at implementation DER
-- (int) Meth {
-   protected_ivar = 1;  // OK
-   PROP_INMAIN = 1;
-   PROP_INCLASSEXT = 2; 
-   return private_ivar;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-ivar-in-interface-block.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-ivar-in-interface-block.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-ivar-in-interface-block.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class -Wobjc-interface-ivars %s
-// rdar://10763173
-
- at interface I
-{
-  @protected  int P_IVAR; // expected-warning {{declaration of instance variables in the interface is deprecated}}
-
-  @public     int PU_IVAR; // expected-warning {{declaration of instance variables in the interface is deprecated}}
-
-  @private    int PRV_IVAR; // expected-warning {{declaration of instance variables in the interface is deprecated}}
-}
- at end
-
- at interface I()
-{
-  int I1;
-  int I2;
-}
- at end
-
- at interface I()
-{
-  int I3, I4;
-}
- at end
-
- at implementation I
-{
-  int I5;
-  int I6;
-}
- at end 

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-objc-exceptions.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-objc-exceptions.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-objc-exceptions.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f() {
-  @throw @"Hello"; // expected-error {{cannot use '@throw' with Objective-C exceptions disabled}}
-}
-
-void g() {
-  @try { // expected-error {{cannot use '@try' with Objective-C exceptions disabled}}
-    f();
-  } @finally {
-    
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-protocol-option-tests.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-protocol-option-tests.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-protocol-option-tests.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-protocol -verify -Wno-objc-root-class %s
-// rdar: // 7056600
-
- at protocol P
-- PMeth;
- at end
-
-// Test1
- at interface I  <P> @end
- at implementation I @end //  no warning with -Wno-protocol
-
-// Test2
- at interface C -PMeth; @end
- at interface C (Category) <P> @end
- at implementation C (Category) @end //  no warning with -Wno-protocol
-
-// Test2
- at interface super - PMeth; @end
- at interface J : super <P>
-- PMeth;	// expected-note {{method 'PMeth' declared here}}
- at end
- at implementation J @end // expected-warning {{method definition for 'PMeth' not found}}
-
-// Test3
- at interface K : super <P>
- at end
- at implementation K @end // no warning with -Wno-protocol
-
-// Test4
- at interface Root @end
- at interface L : Root<P> @end
- at implementation L @end // no warning with -Wno-protocol

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-qual-mismatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-qual-mismatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-qual-mismatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// radar 7211563
-
- at interface X
-
-+ (void)prototypeWithScalar:(int)aParameter;
-+ (void)prototypeWithPointer:(void *)aParameter;
-
- at end
-
- at implementation X
-
-+ (void)prototypeWithScalar:(const int)aParameter {}
-+ (void)prototypeWithPointer:(void * const)aParameter {}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-synth-protocol-meth.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-synth-protocol-meth.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-synth-protocol-meth.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at protocol CYCdef
-- (int)name;
- at end
-
- at interface JSCdef <CYCdef> {
-    int name;
-}
-
- at property (assign) int name;
- at end
-
- at implementation JSCdef
- at synthesize name;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-unimpl-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-unimpl-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warn-unimpl-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// This program tests that if class implements the forwardInvocation method, then
-// every method possible is implemented in the class and should not issue
-// warning of the "Method definition not found" kind. */
-
- at interface NSObject
- at end
-
- at interface NSInvocation
- at end
-
- at interface NSProxy
- at end
-
- at protocol MyProtocol
-        -(void) doSomething;
- at end
-
- at interface DestinationClass : NSObject<MyProtocol>
-        -(void) doSomething;
- at end
-
- at implementation DestinationClass
-        -(void) doSomething
-        {
-        }
- at end
-
- at interface MyProxy : NSProxy<MyProtocol>
-{
-        DestinationClass        *mTarget;
-}
-        - (id) init;
-        - (void)forwardInvocation:(NSInvocation *)anInvocation;
- at end
-
- at implementation MyProxy
-        - (void)forwardInvocation:(NSInvocation *)anInvocation
-        {
-        }
-	- (id) init { return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warning-unavail-unimp.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warning-unavail-unimp.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/no-warning-unavail-unimp.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://9651605
-// rdar://12958191
-
- at interface Foo
- at property (getter=getVal) int val __attribute__((unavailable));
- at property (getter=getVal) int val2 __attribute__((availability(macosx,unavailable)));
-- Method __attribute__((unavailable));
-+ CMethod __attribute__((unavailable));
- at end
-
- at implementation Foo
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/nonarc-weak.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/nonarc-weak.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/nonarc-weak.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.8.0 -fobjc-runtime=macosx-10.8.0 -fsyntax-only -Wunused-function %s > %t.nonarc 2>&1
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.8.0 -fobjc-runtime=macosx-10.8.0 -fsyntax-only -Wunused-function -fobjc-arc %s > %t.arc 2>&1
-// RUN: FileCheck -input-file=%t.nonarc %s
-// RUN: FileCheck -input-file=%t.arc -check-prefix=ARC %s
-
-static void bar() {} // Intentionally unused.
-
-void foo(id self) {
-  __weak id weakSelf = self;
-}
-
-// CHECK: 9:13: warning: __weak attribute cannot be specified on an automatic variable when ARC is not enabled
-// CHECK: 6:13: warning: unused function 'bar'
-// CHECK: 2 warnings generated
-// ARC: 6:13: warning: unused function 'bar'
-// ARC: 1 warning generated

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/nonnull.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/nonnull.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/nonnull.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-// rdar: //6857843
-#define NONNULL_ATTR __attribute__((nonnull))

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/nonnull.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/nonnull.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/nonnull.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-#include "nonnull.h"
-
-// RUN: %clang_cc1 -fblocks -fsyntax-only -verify -Wno-objc-root-class %s
-// REQUIRES: LP64
-
- at class NSObject;
-
-NONNULL_ATTR
-int f1(int x); //  no warning
-int f2(int *x) __attribute__ ((nonnull (1)));
-int f3(int *x) __attribute__ ((nonnull (0))); // expected-error {{'nonnull' attribute parameter 1 is out of bounds}}
-int f4(int *x, int *y) __attribute__ ((nonnull (1,2)));
-int f5(int *x, int *y) __attribute__ ((nonnull (2,1)));
-int f6(NSObject *x) __attribute__ ((nonnull (1))); // no-warning
-int f7(NSObject *x) __attribute__ ((nonnull)); // no-warning
-
-
-extern void func1 (void (^block1)(), void (^block2)(), int) __attribute__((nonnull));
-
-extern void func3 (void (^block1)(), int, void (^block2)(), int)
-__attribute__((nonnull(1,3)));
-
-extern void func4 (void (^block1)(), void (^block2)()) __attribute__((nonnull(1)))
-__attribute__((nonnull(2)));
-
-void func6();
-void func7();
-
-void
-foo (int i1, int i2, int i3, void (^cp1)(), void (^cp2)(), void (^cp3)())
-{
-  func1(cp1, cp2, i1);
-  
-  func1(0, cp2, i1);  // expected-warning {{null passed to a callee which requires a non-null argument}}
-  func1(cp1, 0, i1);  // expected-warning {{null passed to a callee which requires a non-null argument}}
-  func1(cp1, cp2, 0);
-  
-  
-  func3(0, i2, cp3, i3); // expected-warning {{null passed to a callee which requires a non-null argument}}
-  func3(cp3, i2, 0, i3);  // expected-warning {{null passed to a callee which requires a non-null argument}}
-  
-  func4(0, cp1); // expected-warning {{null passed to a callee which requires a non-null argument}}
-  func4(cp1, 0); // expected-warning {{null passed to a callee which requires a non-null argument}}
-  
-  // Shouldn't these emit warnings?  Clang doesn't, and neither does GCC.  It
-  // seems that the checking should handle Objective-C pointers.
-  func6((NSObject*) 0); // no-warning
-  func7((NSObject*) 0); // no-warning
-}
-
-void func5(int) NONNULL_ATTR; //  no warning
-
-// rdar://6857843
-struct dispatch_object_s {
-    int x;
-};
-
-typedef union {
-    long first;
-    struct dispatch_object_s *_do;
-} dispatch_object_t __attribute__((transparent_union));
-
-__attribute__((nonnull))
-void _dispatch_queue_push_list(dispatch_object_t _head); // no warning
-
-void func6(dispatch_object_t _head) {
-  _dispatch_queue_push_list(0); // expected-warning {{null passed to a callee which requires a non-null argument}}
-  _dispatch_queue_push_list(_head._do);  // no warning
-}
-
-// rdar://9287695
-#define NULL (void*)0
-
- at interface NSObject 
-- (void)doSomethingWithNonNullPointer:(void *)ptr :(int)iarg : (void*)ptr1 __attribute__((nonnull(1, 3)));
-+ (void)doSomethingClassyWithNonNullPointer:(void *)ptr __attribute__((nonnull(1)));
- at end
-
-extern void DoSomethingNotNull(void *db) __attribute__((nonnull(1)));
-
- at interface IMP 
-{
-  void * vp;
-}
- at end
-
- at implementation IMP
-- (void) Meth {
-  NSObject *object;
-  [object doSomethingWithNonNullPointer:NULL:1:NULL]; // expected-warning 2 {{null passed to a callee which requires a non-null argument}}
-  [object doSomethingWithNonNullPointer:vp:1:NULL]; // expected-warning {{null passed to a callee which requires a non-null argument}}
-  [NSObject doSomethingClassyWithNonNullPointer:NULL]; // expected-warning {{null passed to a callee which requires a non-null argument}}
-  DoSomethingNotNull(NULL); // expected-warning {{null passed to a callee which requires a non-null argument}}
-  [object doSomethingWithNonNullPointer:vp:1:vp];
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/nowarn-superclass-method-mismatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/nowarn-superclass-method-mismatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/nowarn-superclass-method-mismatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -Wsuper-class-method-mismatch -verify %s
-// expected-no-diagnostics
-// rdar://11793793
-
- at class NSString;
-
- at interface Super
- at property (nonatomic) NSString *thingy;
- at property () __weak id PROP;
- at end
-
- at interface Sub : Super
- at end
-
- at implementation Sub
-- (void)setThingy:(NSString *)val
-{
-  [super setThingy:val];
-}
- at synthesize PROP;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/nsobject-attribute-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/nsobject-attribute-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/nsobject-attribute-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fblocks -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface NSObject
-- (id)self;
-- (id)copy;
- at end
-
-typedef struct _foo  *__attribute__((NSObject)) Foo_ref;
-
- at interface TestObject {
-    Foo_ref dict;
-}
- at property(retain) Foo_ref dict;
- at end
-
- at implementation TestObject
- at synthesize dict;
- at end
-
- at interface NSDictionary
-- (int)retainCount;
- at end
-
-int main(int argc, char *argv[]) {
-    NSDictionary *dictRef;
-    Foo_ref foo = (Foo_ref)dictRef;
-
-    // do Properties retain?
-    int before = [dictRef retainCount];
-    int after = [dictRef retainCount];
-
-    if ([foo retainCount] != [dictRef retainCount]) {
-    }
-
-    // do Blocks retain?
-    {
-        void (^block)(void) = ^{
-            [foo self];
-        };
-        before = [foo retainCount];
-        id save = [block copy];
-        after = [foo retainCount];
-        if (after <= before) {
-            ;
-        }
-    }
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/nsobject-attribute.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/nsobject-attribute.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/nsobject-attribute.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-typedef struct CGColor * __attribute__ ((NSObject)) CGColorRef;
-static int count;
-static CGColorRef tmp = 0;
-
-typedef struct S1  __attribute__ ((NSObject)) CGColorRef1; // expected-error {{__attribute ((NSObject)) is for pointer types only}}
-typedef void *  __attribute__ ((NSObject)) CGColorRef2; // no-warning
-typedef void * CFTypeRef;
-
- at interface HandTested {
- at public
-    CGColorRef x;
-}
-
- at property(copy) CGColorRef x;
-// rdar://problem/7809460
-typedef struct CGColor * __attribute__((NSObject)) CGColorRefNoNSObject; // no-warning
- at property (nonatomic, retain) CGColorRefNoNSObject color;
-// rdar://problem/12197822
- at property (strong) __attribute__((NSObject)) CFTypeRef myObj; // no-warning
- at end
-
-void setProperty(id self, id value)  {
-  ((HandTested *)self)->x = value;
-}
-
-id getProperty(id self) {
-     return (id)((HandTested *)self)->x;
-}
-
- at implementation HandTested
- at synthesize x=x;
- at synthesize myObj;
- at dynamic color;
- at end
-
-int main(int argc, char *argv[]) {
-    HandTested *to;
-    to.x = tmp;  // setter
-    if (tmp != to.x)
-      to.x = tmp;
-    return 0;
-}
-
-// rdar://10453342
- at interface I
-{
-   __attribute__((NSObject)) void * color; // expected-warning {{__attribute ((NSObject)) may be put on a typedef only, attribute is ignored}}
-}
-  // <rdar://problem/10930507>
- at property (nonatomic, retain) __attribute__((NSObject)) CGColorRefNoNSObject color; // // no-warning
- at end
-void test_10453342() {
-    char* __attribute__((NSObject)) string2 = 0; // expected-warning {{__attribute ((NSObject)) may be put on a typedef only, attribute is ignored}}
-}
-
-// rdar://11569860
- at interface A { int i; }
- at property(retain) __attribute__((NSObject)) int i; // expected-error {{__attribute ((NSObject)) is for pointer types only}} \
-  						   // expected-error {{property with 'retain (or strong)' attribute must be of object type}}
- at end
-
- at implementation A
- at synthesize i;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-array-literal.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-array-literal.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-array-literal.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://10111397
-
-#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
-typedef unsigned long NSUInteger;
-#else
-typedef unsigned int NSUInteger;
-#endif
-
- at class NSString;
-
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-
- at class NSFastEnumerationState;
-
- at protocol NSFastEnumeration
-
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id [])buffer count:(NSUInteger)len;
-
- at end
-
- at interface NSNumber 
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
- at interface NSArray <NSFastEnumeration>
-+ (id)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt;
- at end
-
-
-int main() {
- NSArray *array = @[@"Hello", @"There", @"How Are You", [NSNumber numberWithInt:42]];
-
-  for (id string in array)
-    NSLog(@"%@\n", string);
-
-  NSArray *array1 = @["Forgot"]; // expected-error {{string literal must be prefixed by '@' in a collection}}
-
-  const char *blah;
-  NSArray *array2 = @[blah]; // expected-error{{collection element of type 'const char *' is not an Objective-C object}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-buffered-methods.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-buffered-methods.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-buffered-methods.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://8843851
-
-int* global;
-
- at interface I
-- (void) Meth;
- at property int prop;
- at property int prop1;
- at end
-
- at implementation I
-+ (void) _defaultMinSize { };
-static void _initCommon() {
-  Class graphicClass;
-  [graphicClass _defaultMinSize];
-}
-
-- (void) Meth { [self Forw]; } // No warning now
-- (void) Forw {}
-- (int) func { return prop; }  // compiles - synthesized ivar will be accessible here.
-- (int)get_g { return global; } // No warning here - synthesized ivar will be accessible here.
- at synthesize prop;
- at synthesize prop1=global;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
-typedef unsigned int size_t;
- at protocol P @end
-
- at interface NSMutableArray
- at end
-
- at interface XNSMutableArray
- at end
-
-int main() {
-id array;
-id oldObject = array[10]; // expected-warning {{instance method '-objectAtIndexedSubscript:' not found (return type defaults to 'id')}}
-
-array[10] = 0; // expected-warning {{instance method '-setObject:atIndexedSubscript:' not found (return type defaults to 'id')}}
-
-id<P> p_array;
-oldObject = p_array[10]; // expected-warning {{instance method '-objectAtIndexedSubscript:' not found (return type defaults to 'id')}}
-
-p_array[10] = 0; // expected-warning {{instance method '-setObject:atIndexedSubscript:' not found (return type defaults to 'id')}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
-typedef unsigned int size_t;
- at protocol P @end
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(size_t)index;
-- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
- at end
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id)key;
-- (void)setObject:(id)object forKeyedSubscript:(size_t)key;
- at end
-
-id func() {
-  NSMutableArray *array;
-  float f; 
-  array[f] = array; // expected-error {{indexing expression is invalid because subscript type 'float' is not an integral or Objective-C pointer type}}
-  return array[3.14]; // expected-error {{indexing expression is invalid because subscript type 'double' is not an integral or Objective-C pointer type}}
-}
-
-void test_unused() {
-  NSMutableArray *array;
-  array[10]; // expected-warning {{container access result unused - container access should not be used for side effects}} 
-
-  NSMutableDictionary *dict;
-  dict[array]; // expected-warning {{container access result unused - container access should not be used for side effects}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://10904488
-
- at interface Test
-- (int)objectAtIndexedSubscript:(int)index; // expected-note {{method 'objectAtIndexedSubscript:' declared here}}
-- (void)setObject:(int)object atIndexedSubscript:(int)index; // expected-note {{parameter of type 'int' is declared here}}
- at end
-
- at interface NSMutableDictionary
-- (int)objectForKeyedSubscript:(id)key; // expected-note {{method 'objectForKeyedSubscript:' declared here}}
-- (void)setObject:(int)object forKeyedSubscript:(id)key; // expected-note {{parameter of type 'int' is declared here}}
- at end
-
-int main() {
-   Test *array;
-   int i = array[10]; // expected-error {{method for accessing array element must have Objective-C object return type instead of 'int'}}
-   array[2] = i;     // expected-error {{cannot assign to this array because assigning method's 2nd parameter of type 'int' is not an Objective-C pointer type}}
-
-   NSMutableDictionary *dict;
-   id key, val;
-   val = dict[key]; // expected-error {{method for accessing dictionary element must have Objective-C object return type instead of 'int'}} \
-                    // expected-warning {{incompatible integer to pointer conversion assigning to 'id' from 'int'}}
-   dict[key] = val; // expected-error {{method object parameter type 'int' is not object type}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-container-subscripting.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-
-typedef unsigned int size_t;
- at protocol P @end
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(double)index; // expected-note {{parameter of type 'double' is declared here}}
-- (void)setObject:(id *)object atIndexedSubscript:(void *)index; // expected-note {{parameter of type 'void *' is declared here}} \
-								 // expected-note {{parameter of type 'id *' is declared here}}
- at end
- at interface I @end
-
-int main() {
-  NSMutableArray<P> * array;
-  id  oldObject = array[10]; // expected-error {{method index parameter type 'double' is not integral type}}
-  array[3] = 0; // expected-error {{method index parameter type 'void *' is not integral type}} \
-                // expected-error {{cannot assign to this array because assigning method's 2nd parameter of type 'id *' is not an Objective-C pointer type}}
-
-  I* iarray;
-  iarray[3] = 0; // expected-error {{expected method to write array element not found on object of type 'I *'}}
-  I* p = iarray[4]; // expected-error {{expected method to read array element not found on object of type 'I *'}}
-
-  oldObject = array[10]++; // expected-error {{illegal operation on Objective-C container subscripting}}
-  oldObject = array[10]--; // expected-error {{illegal operation on Objective-C container subscripting}}
-  oldObject = --array[10]; // expected-error {{illegal operation on Objective-C container subscripting}}
-}
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id*)key; // expected-note {{parameter of type 'id *' is declared here}}
-- (void)setObject:(void*)object forKeyedSubscript:(id*)key; // expected-note {{parameter of type 'void *' is declared here}} \
-                                                            // expected-note {{parameter of type 'id *' is declared here}}
- at end
- at class NSString;
-
-void testDict() {
-  NSMutableDictionary *dictionary;
-  NSString *key;
-  id newObject, oldObject;
-  oldObject = dictionary[key];  // expected-error {{method key parameter type 'id *' is not object type}}
-  dictionary[key] = newObject;  // expected-error {{method object parameter type 'void *' is not object type}} \
-                                // expected-error {{method key parameter type 'id *' is not object type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-cstyle-args-in-methods.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-cstyle-args-in-methods.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-cstyle-args-in-methods.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wno-deprecated-declarations -verify -Wno-objc-root-class %s
-
- at interface Foo 
-- (id)test:(id)one, id two;
-- (id)bad:(id)one, id two, double three;
- at end
-
- at implementation Foo
-- (id)test:(id )one, id two {return two; } 
-- (id)bad:(id)one, id two, double three { return two; }
- at end
-
-
-int main() {
-	Foo *foo;
-	[foo test:@"One", @"Two"];
-	[foo bad:@"One", @"Two"]; // expected-error {{too few arguments to method call}}
-	[foo bad:@"One", @"Two", 3.14];
-	[foo bad:@"One", @"Two", 3.14, @"Two"]; // expected-error {{too many arguments to method call}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-dictionary-literal.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-dictionary-literal.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-dictionary-literal.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://11062080
-
- at interface NSNumber
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
- at protocol NSCopying @end
-typedef unsigned long NSUInteger;
-typedef long NSInteger;
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id <NSCopying> [])keys count:(NSUInteger)cnt;
-- (void)setObject:(id)object forKeyedSubscript:(id)key;
- at end
-
- at interface NSString<NSCopying>
- at end
-
- at interface NSArray
-- (id)objectAtIndexedSubscript:(NSInteger)index;
-- (void)setObject:(id)object atIndexedSubscript:(NSInteger)index;
- at end
-
-int main() {
-	NSDictionary *dict = @{ @"name":@666 };
-        dict[@"name"] = @666;
-
-        dict["name"] = @666; // expected-error {{indexing expression is invalid because subscript type 'char *' is not an Objective-C pointer}}
-
-	return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-comparison.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-comparison.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-comparison.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-everything -Wobjc-literal-compare "-Dnil=((id)0)" -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-everything -Wobjc-literal-compare "-Dnil=(id)0" -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-everything -Wobjc-literal-compare "-Dnil=0" -verify %s
-
-// RUN: %clang_cc1 -fsyntax-only -Wno-everything -Wobjc-literal-compare -fobjc-arc "-Dnil=((id)0)" -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-everything -Wobjc-literal-compare -fobjc-arc "-Dnil=(id)0" -verify %s
-// RUN: %clang_cc1 -fsyntax-only -Wno-everything -Wobjc-literal-compare -fobjc-arc "-Dnil=0" -verify %s
-
-// (test the warning flag as well)
-
-typedef signed char BOOL;
-
- at interface BaseObject
-+ (instancetype)new;
- at end
-
- at interface NSObject : BaseObject
-- (BOOL)isEqual:(id)other;
- at end
-
- at interface NSNumber : NSObject
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
- at end
-
- at interface NSArray : NSObject
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary : NSObject
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
- at end
-
- at interface NSString : NSObject
- at end
-
-void testComparisonsWithFixits(id obj) {
-  if (obj == @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (obj != @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (@"" == obj) return; // expected-warning{{direct comparison of a string literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (@"" == @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-
-  if (@[] == obj) return; // expected-warning{{direct comparison of an array literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (@{} == obj) return; // expected-warning{{direct comparison of a dictionary literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (@12 == obj) return; // expected-warning{{direct comparison of a numeric literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (@1.0 == obj) return; // expected-warning{{direct comparison of a numeric literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (@__objc_yes == obj) return; // expected-warning{{direct comparison of a numeric literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (@(1+1) == obj) return; // expected-warning{{direct comparison of a boxed expression has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-}
-
-
- at interface BadEqualReturnString : NSString
-- (void)isEqual:(id)other;
- at end
-
- at interface BadEqualArgString : NSString
-- (BOOL)isEqual:(int)other;
- at end
-
-
-void testComparisonsWithoutFixits() {
-  if ([BaseObject new] == @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}}
-
-  if ([BadEqualReturnString new] == @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}}
-  if ([BadEqualArgString new] == @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}}
-
-  if (@"" < @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}}
-  if (@"" > @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}}
-  if (@"" <= @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}}
-  if (@"" >= @"") return; // expected-warning{{direct comparison of a string literal has undefined behavior}}
-}
-
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wobjc-string-compare"
-
-void testWarningFlags(id obj) {
-  if (obj == @"") return; // no-warning
-  if (@"" == obj) return; // no-warning
-
-  if (obj == @1) return; // expected-warning{{direct comparison of a numeric literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-  if (@1 == obj) return; // expected-warning{{direct comparison of a numeric literal has undefined behavior}} expected-note{{use 'isEqual:' instead}}
-}
-
-#pragma clang diagnostic pop
-
-
-void testNilComparison() {
-  // Don't warn when comparing to nil in a macro.
-#define RETURN_IF_NIL(x) if (x == nil || nil == x) return
-  RETURN_IF_NIL(@"");
-  RETURN_IF_NIL(@1);
-  RETURN_IF_NIL(@1.0);
-  RETURN_IF_NIL(@[]);
-  RETURN_IF_NIL(@{});
-  RETURN_IF_NIL(@__objc_yes);
-  RETURN_IF_NIL(@(1+1));
-}
-
-void PR15257(Class c) {
-  return c == @""; // expected-warning{{direct comparison of a string literal has undefined behavior}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-nsnumber.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-nsnumber.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-nsnumber.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -fblocks -verify %s
-// rdar://10111397
-
-#if __LP64__
-typedef unsigned long NSUInteger;
-#else
-typedef unsigned int NSUInteger;
-#endif
-
- at interface NSObject
-+ (NSObject*)nsobject;
- at end
-
- at interface NSNumber : NSObject
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithFloat:(float)value;
- at end
-
-int main() {
-  NSNumber * N = @3.1415926535;  // expected-error {{declaration of 'numberWithDouble:' is missing in NSNumber class}}
-  NSNumber *noNumber = @__objc_yes; // expected-error {{declaration of 'numberWithBool:' is missing in NSNumber class}}
-  NSNumber * NInt = @1000;
-  NSNumber * NLongDouble = @1000.0l; // expected-error{{'long double' is not a valid literal type for NSNumber}}
-  id character = @ 'a';
-
-  NSNumber *NNegativeInt = @-1000;
-  NSNumber *NPositiveInt = @+1000;
-  NSNumber *NNegativeFloat = @-1000.1f;
-  NSNumber *NPositiveFloat = @+1000.1f;
-
-  int five = 5;
-  @-five; // expected-error{{@- must be followed by a number to form an NSNumber object}}
-  @+five; // expected-error{{@+ must be followed by a number to form an NSNumber object}}
-}
-
-// Dictionary test
- at class NSDictionary;
-
-NSDictionary *err() {
-  return @{@"name" : @"value"}; // expected-error {{declaration of 'dictionaryWithObjects:forKeys:count:' is missing in NSDictionary class}}
-}
-
- at interface NSDate : NSObject
-+ (NSDate *) date;
- at end
-
- at protocol NSCopying
-- copy;
- at end
-
- at interface NSDictionary : NSObject
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id<NSCopying> [])keys count:(NSUInteger)cnt;
- at end
-
- at interface NSString<NSCopying>
- at end
-
-id NSUserName();
-
-int Int();
-
-NSDictionary * blocks() {
-  return @{ @"task" : ^ { return 17; } };
-}
-
-NSDictionary * warn() {
-  NSDictionary *dictionary = @{@"name" : NSUserName(),
-                               @"date" : [NSDate date],
-                               @"name2" : @"other",
-                               NSObject.nsobject : @"nsobject" }; // expected-warning{{passing 'NSObject *' to parameter of incompatible type 'const id<NSCopying>'}}
-  NSDictionary *dictionary2 = @{@"name" : Int()}; // expected-error {{collection element of type 'int' is not an Objective-C object}}
-
-  NSObject *o;
-  NSDictionary *dictionary3 = @{o : o, // expected-warning{{passing 'NSObject *' to parameter of incompatible type 'const id<NSCopying>'}}
-                               @"date" : [NSDate date] };
-  return dictionary3;
-}
-
-// rdar:// 11231426
-typedef float BOOL;
-
-BOOL radar11231426() {
-        return __objc_yes;
-}
-
-id stringBoxingNoSuchMethod(const char *str) {
-  return @(str); // expected-error {{declaration of 'stringWithUTF8String:' is missing in NSString class}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-sig.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-sig.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-literal-sig.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-typedef _Bool BOOL;
-
- at interface NSNumber @end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (int)numberWithBool:(BOOL)value; // expected-note 2 {{method returns unexpected type 'int' (should be an object type)}}
- at end
-
- at interface NSString
-+ (char)stringWithUTF8String:(const char *)value; // expected-note 2 {{method returns unexpected type 'char' (should be an object type)}}
- at end
-
- at interface NSArray
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(const int [])objects // expected-note 2 {{first parameter has unexpected type 'const int *' (should be 'const id *')}}
-                 count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects
-                    forKeys:(const int [])keys // expected-note 2 {{second parameter has unexpected type 'const int *' (should be 'const id *')}}
-                      count:(unsigned long)cnt;
- at end
-
-// All tests are doubled to make sure that a bad method is not saved
-// and then used un-checked.
-void test_sig() {
-  (void)@__objc_yes; // expected-error{{literal construction method 'numberWithBool:' has incompatible signature}}
-  (void)@__objc_yes; // expected-error{{literal construction method 'numberWithBool:' has incompatible signature}}
-  id array = @[ @17 ]; // expected-error{{literal construction method 'arrayWithObjects:count:' has incompatible signature}}
-  id array2 = @[ @17 ]; // expected-error{{literal construction method 'arrayWithObjects:count:' has incompatible signature}}
-  id dict = @{ @"hello" : @17 }; // expected-error{{literal construction method 'dictionaryWithObjects:forKeys:count:' has incompatible signature}}
-  id dict2 = @{ @"hello" : @17 }; // expected-error{{literal construction method 'dictionaryWithObjects:forKeys:count:' has incompatible signature}}
-  id str = @("hello"); // expected-error{{literal construction method 'stringWithUTF8String:' has incompatible signature}}
-  id str2 = @("hello"); // expected-error{{literal construction method 'stringWithUTF8String:' has incompatible signature}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-qualified-property-lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-qualified-property-lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-qualified-property-lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://9078584
-
- at interface NSObject @end
-
- at protocol TextInput
--editRange;
- at end
-
- at interface I {
-  NSObject<TextInput>* editor;
-}
-- (id) Meth;
- at end
-
- at implementation I
-- (id) Meth {
-   return editor.editRange;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-string-constant.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-string-constant.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc-string-constant.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -Wsemicolon-before-method-body %s -verify -fsyntax-only
-
-#define nil 0       /* id of Nil instance */
-
- at interface NSObject 
- at end
-
- at interface NSString : NSObject
-
- at end
-
- at interface NSMutableString : NSString
-
- at end
-
- at interface NSSimpleCString : NSString {
- at protected
-    char *bytes;
-    int numBytes;
-}
- at end
-
- at interface NSConstantString : NSSimpleCString
- at end
-
-
- at interface Subclass : NSObject 
-- (NSString *)token;
- at end
-
- at implementation Subclass
-- (NSString *)token;	// expected-warning {{semicolon before method body is ignored}}
-{
-  NSMutableString *result = nil;
-
-  return (result != nil) ? result : @"";
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc2-merge-gc-attribue-decl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc2-merge-gc-attribue-decl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc2-merge-gc-attribue-decl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-gc -fsyntax-only -verify %s
- at interface INTF @end
-
-extern INTF* p2;
-extern __strong INTF* p2;
-
-extern __strong id p1;
-extern id p1;
-
-extern id CFRunLoopGetMain();
-extern __strong id CFRunLoopGetMain();
-
-extern __weak id WLoopGetMain(); // expected-note {{previous declaration is here}}
-extern id WLoopGetMain();	// expected-error {{conflicting types for 'WLoopGetMain'}}
-
-extern id p3;	// expected-note {{previous definition is here}}
-extern __weak id p3;	// expected-error {{redefinition of 'p3' with a different type}}
-
-extern void *p4; // expected-note {{previous definition is here}}
-extern void * __strong p4; // expected-error {{redefinition of 'p4' with a different type}}
-
-extern id p5;
-extern __strong id p5;
-
-extern char* __strong p6; // expected-note {{previous definition is here}}
-extern char* p6; // expected-error {{redefinition of 'p6' with a different type}}
-
-extern __strong char* p7; // expected-note {{previous definition is here}}
-extern char* p7; // expected-error {{redefinition of 'p7' with a different type}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/objc2-warn-weak-decl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/objc2-warn-weak-decl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/objc2-warn-weak-decl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -fobjc-gc -verify %s
-// RUN: %clang_cc1 -x objective-c++ -triple i386-apple-darwin9 -fsyntax-only -fobjc-gc -verify %s
-struct S {
-	__weak id  p;  // expected-warning {{__weak attribute cannot be specified on a field declaration}}
-};
-
-int main ()
-{
-  __weak id  local;  // expected-warning {{Objective-C GC does not allow weak variables on the stack}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/overriding-property-in-class-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/overriding-property-in-class-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/overriding-property-in-class-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Weverything %s
-// expected-no-diagnostics
-// rdar://12103434
-
- at class NSString;
-
- at interface NSObject @end
-
- at interface MyClass  : NSObject
-
- at property (nonatomic, copy, readonly) NSString* name;
-
- at end
-
- at interface MyClass () {
-    NSString* _name;
-}
-
- at property (nonatomic, copy) NSString* name;
-
- at end
-
- at implementation MyClass
-
- at synthesize name = _name;
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/pedantic-dynamic-test.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/pedantic-dynamic-test.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/pedantic-dynamic-test.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar: // 7860960
-
- at interface I
-{
-  int window;
-}
- at property int window, noWarningNeeded;
- at end
-
- at implementation I
-
- at synthesize window;
-
- at dynamic noWarningNeeded;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/pragma-pack.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/pragma-pack.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/pragma-pack.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -triple i686-apple-darwin9 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-// Make sure pragma pack works inside ObjC methods.  <rdar://problem/10893316>
- at interface X
- at end
- at implementation X
-- (void)Y {
-#pragma pack(push, 1)
-  struct x {
-    char a;
-    int b;
-  };
-#pragma pack(pop)
-  typedef char check_[sizeof (struct x) == 5 ? 1 : -1];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-10.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-10.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-10.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wreadonly-setter-attrs -verify %s  -fblocks
-
-// Check property attribute consistency.
-
- at interface I0
- at property(readonly, readwrite) int p0; // expected-error {{property attributes 'readonly' and 'readwrite' are mutually exclusive}}
-
- at property(retain) int p1; // expected-error {{property with 'retain (or strong)' attribute must be of object type}}
- at property(strong) int s1; // expected-error {{property with 'retain (or strong)' attribute must be of object type}}
-
- at property(copy) int p2; // expected-error {{property with 'copy' attribute must be of object type}}
-
- at property(assign, copy) id p3_0; // expected-error {{property attributes 'assign' and 'copy' are mutually exclusive}} 
- at property(assign, retain) id p3_1; // expected-error {{property attributes 'assign' and 'retain' are mutually exclusive}} 
- at property(assign, strong) id s3_1; // expected-error {{property attributes 'assign' and 'strong' are mutually exclusive}} 
- at property(copy, retain) id p3_2; // expected-error {{property attributes 'copy' and 'retain' are mutually exclusive}} 
- at property(copy, strong) id s3_2; // expected-error {{property attributes 'copy' and 'strong' are mutually exclusive}} 
- at property(assign, copy, retain) id p3_3; // expected-error {{property attributes 'assign' and 'copy' are mutually exclusive}}, expected-error {{property attributes 'assign' and 'retain' are mutually exclusive}} 
- at property(assign, copy, strong) id s3_3; // expected-error {{property attributes 'assign' and 'copy' are mutually exclusive}}, expected-error {{property attributes 'assign' and 'strong' are mutually exclusive}} 
-
- at property(unsafe_unretained, copy) id p4_0; // expected-error {{property attributes 'unsafe_unretained' and 'copy' are mutually exclusive}} 
- at property(unsafe_unretained, retain) id p4_1; // expected-error {{property attributes 'unsafe_unretained' and 'retain' are mutually exclusive}} 
- at property(unsafe_unretained, strong) id s4_1; // expected-error {{property attributes 'unsafe_unretained' and 'strong' are mutually exclusive}} 
- at property(unsafe_unretained, copy, retain) id p4_3; // expected-error {{property attributes 'unsafe_unretained' and 'copy' are mutually exclusive}}, expected-error {{property attributes 'unsafe_unretained' and 'retain' are mutually exclusive}} 
- at property(unsafe_unretained, copy, strong) id s4_3; // expected-error {{property attributes 'unsafe_unretained' and 'copy' are mutually exclusive}}, expected-error {{property attributes 'unsafe_unretained' and 'strong' are mutually exclusive}} 
-
- at property id p4; // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}}, expected-warning {{default property attribute 'assign' not appropriate for non-GC object}}
-
- at property(nonatomic,copy) int (^includeMailboxCondition)(); 
- at property(nonatomic,copy) int (*includeMailboxCondition2)(); // expected-error {{property with 'copy' attribute must be of object type}}
-
- at end
-
- at interface I0()
- at property (retain) int PROP;	// expected-error {{property with 'retain (or strong)' attribute must be of object type}}
- at property (strong) int SPROP;	// expected-error {{property with 'retain (or strong)' attribute must be of object type}}
- at property(nonatomic,copy) int (*PROP1)(); // expected-error {{property with 'copy' attribute must be of object type}}
- at property(nonatomic,weak) int (*PROP2)(); // expected-error {{property with 'weak' attribute must be of object type}}
- at end
-
-// rdar://10357768
- at interface rdar10357768
-{
-    int n1;
-}
- at property (readonly, setter=crushN1:) int n1; // expected-warning {{setter cannot be specified for a readonly property}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-11.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-11.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-11.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface NSSound
- at end
- at interface NSFont
- at end
-
- at interface NSSound (Adds)
- at end
-
- at implementation NSSound (Adds)
-- foo {
-  return self;
-}
-- (void)setFoo:obj {
-}
- at end
-
- at implementation NSFont (Adds)
-
-- xx {
-  NSSound *x;
-  id o;
-
-  // GCC does *not* warn about the following. Since foo/setFoo: are not in the
-  // class or category interface for NSSound, the compiler shouldn't find them.
-  // For now, we will support GCC's behavior (sigh).
-  o = [x foo];
-  o = x.foo;
-  [x setFoo:o];
-  x.foo = o;
-  return 0;
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-12.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-12.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-12.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-objc-root-class -Wreadonly-setter-attrs -verify %s
-
- at protocol P0
- at property(readonly,assign) id X; // expected-warning {{property attributes 'readonly' and 'assign' are mutually exclusive}}
- at end
-
- at protocol P1
- at property(readonly,retain) id X; // expected-warning {{property attributes 'readonly' and 'retain' are mutually exclusive}}
- at end
-
- at protocol P2
- at property(readonly,copy) id X; // expected-warning {{property attributes 'readonly' and 'copy' are mutually exclusive}}
- at end
-
- at protocol P3
- at property(readonly,readwrite) id X; // expected-error {{property attributes 'readonly' and 'readwrite' are mutually exclusive}}
- at end
-
- at protocol P4
- at property(assign,copy) id X; // expected-error {{property attributes 'assign' and 'copy' are mutually exclusive}}
- at end
-
- at protocol P5
- at property(assign,retain) id X; // expected-error {{property attributes 'assign' and 'retain' are mutually exclusive}}
- at end
-
- at protocol P6
- at property(copy,retain) id X; // expected-error {{property attributes 'copy' and 'retain' are mutually exclusive}}
- at end
-
-
-// rdar://11656982
- at interface I0 <P0> @end
- at implementation I0 
- at synthesize X;
- at end
-
- at interface I1 <P1> @end
- at implementation I1 
- at synthesize X;
- at end
-
- at interface I2 <P2> @end
- at implementation I2 
- at synthesize X;
- at end
-
- at interface I3 <P3> @end
- at implementation I3 
- at synthesize X;
- at end
-
- at interface I4 <P4> @end
- at implementation I4 
- at synthesize X;
- at end
-
- at interface I5 <P5> @end
- at implementation I5 
- at synthesize X;
- at end
-
- at interface I6 <P6> @end
- at implementation I6 
- at synthesize X;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-13.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-13.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-13.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,79 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-unreachable-code
-// expected-no-diagnostics
-
- at interface NSObject 
-+ alloc;
-- init;
- at end
-
- at protocol Test
-  @property int required;
-
- at optional
-  @property int optional;
-  @property int optional1;
-  @property int optional_preexisting_setter_getter;
-  @property (setter = setOptional_preexisting_setter_getter: ,
-	     getter = optional_preexisting_setter_getter) int optional_with_setter_getter_attr;
- at required
-  @property int required1;
- at optional
-  @property int optional_to_be_defined;
-  @property (readonly, getter = optional_preexisting_setter_getter) int optional_getter_attr;
- at end
-
- at interface Test : NSObject <Test> {
-  int ivar;
-  int ivar1;
-  int ivar2;
-}
- at property int required;
- at property int optional_to_be_defined;
-- (int) optional_preexisting_setter_getter;
-- (void) setOptional_preexisting_setter_getter:(int)value;
- at end
-
- at implementation Test
- at synthesize required = ivar;
- at synthesize required1 = ivar1;
- at synthesize optional_to_be_defined = ivar2;
-- (int) optional_preexisting_setter_getter { return ivar; }
-- (void) setOptional_preexisting_setter_getter:(int)value
-	   {
-		ivar = value;
-	   }
-- (void) setOptional_getter_attr:(int)value { ivar = value; }
- at end
-
-void abort(void);
-int main ()
-{
-	Test *x = [[Test alloc] init];
-	/* 1. Test of a required property */
-	x.required1 = 100;
-  	if (x.required1 != 100)
-	  abort ();
-
-	/* 2. Test of a synthesize optional property */
-  	x.optional_to_be_defined = 123;
-	if (x.optional_to_be_defined != 123)
-	  abort ();
-
-	/* 3. Test of optional property with pre-sxisting defined setter/getter */
-	x.optional_preexisting_setter_getter = 200;
-	if (x.optional_preexisting_setter_getter != 200)
-	  abort ();
-
-	/* 4. Test of optional property with setter/getter attribute */
-	if (x.optional_with_setter_getter_attr != 200)
-	  abort ();
-	return 0;
-
-	/* 5. Test of optional property with getter attribute and default setter method. */
-	x.optional_getter_attr = 1000;
-        if (x.optional_getter_attr != 1000)
-	  abort ();
-
-	return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface Tester 
- at property char PropertyAtomic_char;
- at property short PropertyAtomic_short;
- at property int PropertyAtomic_int;
- at property long PropertyAtomic_long;
- at property long long PropertyAtomic_longlong;
- at property float PropertyAtomic_float;
- at property double PropertyAtomic_double;
- at property(assign) id PropertyAtomic_id;
- at property(retain) id PropertyAtomicRetained_id;
- at property(copy) id PropertyAtomicRetainedCopied_id;
- at property(retain) id PropertyAtomicRetainedGCOnly_id;
- at property(copy) id PropertyAtomicRetainedCopiedGCOnly_id;
- at end
-
- at implementation Tester
- at dynamic PropertyAtomic_char;
- at dynamic PropertyAtomic_short;
- at dynamic PropertyAtomic_int;
- at dynamic PropertyAtomic_long;
- at dynamic PropertyAtomic_longlong;
- at dynamic PropertyAtomic_float;
- at dynamic PropertyAtomic_double;
- at dynamic PropertyAtomic_id;
- at dynamic PropertyAtomicRetained_id;
- at dynamic PropertyAtomicRetainedCopied_id;
- at dynamic PropertyAtomicRetainedGCOnly_id;
- at dynamic PropertyAtomicRetainedCopiedGCOnly_id;
- at end
-
- at interface SubClass : Tester
-{
-    char PropertyAtomic_char;
-    short PropertyAtomic_short;
-    int PropertyAtomic_int;
-    long PropertyAtomic_long;
-    long long PropertyAtomic_longlong;
-    float PropertyAtomic_float;
-    double PropertyAtomic_double;
-    id PropertyAtomic_id;
-    id PropertyAtomicRetained_id;
-    id PropertyAtomicRetainedCopied_id;
-    id PropertyAtomicRetainedGCOnly_id;
-    id PropertyAtomicRetainedCopiedGCOnly_id;
-}
- at end
-
- at implementation SubClass
- at synthesize PropertyAtomic_char;
- at synthesize PropertyAtomic_short;
- at synthesize PropertyAtomic_int;
- at synthesize PropertyAtomic_long;
- at synthesize PropertyAtomic_longlong;
- at synthesize PropertyAtomic_float;
- at synthesize PropertyAtomic_double;
- at synthesize PropertyAtomic_id;
- at synthesize PropertyAtomicRetained_id;
- at synthesize PropertyAtomicRetainedCopied_id;
- at synthesize PropertyAtomicRetainedGCOnly_id;
- at synthesize PropertyAtomicRetainedCopiedGCOnly_id;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
- at interface I 
-{
-	id d1;
-}
- at property (readwrite, copy) id d1;
- at property (readwrite, copy) id d2;
- at end
-
- at interface NOW : I
- at property (readonly) id d1; // expected-warning {{attribute 'readonly' of property 'd1' restricts attribute 'readwrite' of property inherited from 'I'}} expected-warning {{'copy' attribute on property 'd1' does not match the property inherited from 'I'}}
- at property (readwrite, copy) I* d2;
- at end
-
-// rdar://13156292
-typedef signed char BOOL;
-
- at protocol EKProtocolCalendar
- at property (nonatomic, readonly) BOOL allowReminders;
- at property (atomic, readonly) BOOL allowNonatomicProperty; // expected-note {{property declared here}}
- at end
-
- at protocol EKProtocolMutableCalendar <EKProtocolCalendar>
- at end
-
- at interface EKCalendar
- at end
-
- at interface EKCalendar ()  <EKProtocolMutableCalendar>
- at property (nonatomic, assign) BOOL allowReminders;
- at property (nonatomic, assign) BOOL allowNonatomicProperty; // expected-warning {{'atomic' attribute on property 'allowNonatomicProperty' does not match the property inherited from 'EKProtocolCalendar'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
- at interface Object 
- at end
-
- at protocol ProtocolObject
- at property int class;
- at property (copy) id MayCauseError;
- at end
-
- at protocol ProtocolDerivedGCObject <ProtocolObject>
- at property int Dclass;
- at end
-
- at interface GCObject  : Object <ProtocolDerivedGCObject> {
-    int ifield;
-    int iOwnClass;
-    int iDclass;
-}
- at property int OwnClass;
- at end
-
- at interface ReleaseObject : GCObject <ProtocolObject> {
-   int newO;
-   int oldO;
-}
- at property (retain) id MayCauseError;  // expected-warning {{'copy' attribute on property 'MayCauseError' does not match the property inherited from 'ProtocolObject'}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-5.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-5.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-5.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
- at protocol P1 @end
- at protocol P2 @end
- at protocol P3 @end
-
- at interface NSData @end
-
- at interface MutableNSData : NSData @end
-
- at interface Base : NSData <P1>
- at property(readonly) id ref;
- at property(readonly) Base *p_base;
- at property(readonly) NSData *nsdata;
- at property(readonly) NSData * m_nsdata;
- at end
-
- at interface Data : Base <P1, P2>
- at property(readonly) NSData *ref;	
- at property(readonly) Data *p_base;	
- at property(readonly) MutableNSData * m_nsdata;  
- at end
-
- at interface  MutedData: Data
- at property(readonly) id p_base; 
- at end
-
- at interface ConstData : Data <P1, P2, P3>
- at property(readonly) ConstData *p_base;
- at end
-
-void foo(Base *b, id x) {
-  [ b setRef: x ]; // expected-warning {{method '-setRef:' not found}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-6.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-6.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-6.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,70 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions %s
-// expected-no-diagnostics
-# 1 "<command line>"
-# 1 "/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h" 1 3
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
-+ class;
- at end
-
- at protocol NSCopying 
-- (id)copyWithZone:(NSZone *)zone;
- at end
-
- at protocol NSMutableCopying
-- (id)mutableCopyWithZone:(NSZone *)zone;
- at end
-
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
-typedef struct {} NSFastEnumerationState;
-
- at protocol NSFastEnumeration 
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
-
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
- at end
-
- at interface NSMutableArray : NSArray
-- (void)addObject:(id)anObject;
-+ (id)arrayWithCapacity:(int)numItems;
- at end
-
- at interface NSBundle : NSObject {}
-+ (NSBundle *)bundleForClass:(Class)aClass;
-- (NSString *)bundlePath;
-- (void)setBundlePath:(NSString *)x;
- at end
-
- at interface NSException : NSObject <NSCopying, NSCoding> {}
- at end
-
- at class NSArray, NSDictionary, NSError, NSString, NSURL;
-
- at interface DTPlugInManager : NSObject
- at end
-
- at implementation DTPlugInManager
-+ (DTPlugInManager *)defaultPlugInManager {
-  @try {
-    NSMutableArray *plugInPaths = [NSMutableArray arrayWithCapacity:100];
-    NSBundle *frameworkBundle = [NSBundle bundleForClass:[DTPlugInManager class]];
-    frameworkBundle.bundlePath = 0;
-    [plugInPaths addObject:frameworkBundle.bundlePath];
-  }
-  @catch (NSException *exception) {}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-7.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-7.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-7.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
- at end
-
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray;
-
- at interface SCMObject : NSObject <NSCopying> {}
-  @property(assign) SCMObject *__attribute__((objc_gc(weak))) parent;
- at end
-
- at interface SCMNode : SCMObject
-{
-  NSString *_name;
-}
- at property(copy) NSString *name;
- at end
-
- at implementation SCMNode
-  @synthesize name = _name;
-  - (void) setParent:(SCMObject *__attribute__((objc_gc(weak)))) inParent {
-    super.parent = inParent;
-  }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-8.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-8.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-8.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone; @end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
-
- at interface NSObject <NSObject> {} @end
-
-typedef float CGFloat;
-
-typedef enum { NSMinXEdge = 0, NSMinYEdge = 1, NSMaxXEdge = 2, NSMaxYEdge = 3 } NSFastEnumerationState;
-
- at protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
-
- at class NSString;
-
- at interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
-- (NSUInteger)count;
- at end
-
-extern NSString * const NSBundleDidLoadNotification;
-
- at interface NSObject(NSKeyValueObserving)
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context;
-- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
- at end
-
-enum { NSCaseInsensitivePredicateOption = 0x01,     NSDiacriticInsensitivePredicateOption = 0x02 };
-
- at interface NSResponder : NSObject <NSCoding> {}
- at end
-
-extern NSString * const NSFullScreenModeAllScreens;
- at interface NSWindowController : NSResponder <NSCoding> {}
- at end
-
-extern NSString *NSAlignmentBinding ;
-
- at interface _XCOQQuery : NSObject {}
- at end
-
-extern NSString *PBXWindowDidChangeFirstResponderNotification;
-
- at interface PBXModule : NSWindowController {}
- at end
-
- at class _XCOQHelpTextBackgroundView;
- at interface PBXOpenQuicklyModule : PBXModule
-{
- at private
-  _XCOQQuery *_query;
-}
- at end
-
- at interface PBXOpenQuicklyModule ()
- at property(readwrite, retain) _XCOQQuery *query;
- at end
-
- at implementation PBXOpenQuicklyModule  
- at synthesize query = _query;
-- (void) _clearQuery
-{
-  [self.query removeObserver: self forKeyPath: @"matches"];
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-9-impl-method.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-9-impl-method.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-9-impl-method.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,96 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-// rdar://5967199
-
-typedef signed char BOOL;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject
-- (BOOL) isEqual:(id) object;
- at end
-
- at protocol NSCoding
-- (void) encodeWithCoder:(NSCoder *) aCoder;
- at end
-
- at interface NSObject < NSObject > {}
- at end
-
-typedef float CGFloat;
-typedef struct _NSPoint {} NSSize;
-typedef struct _NSRect {} NSRect;
-typedef enum { NSMinXEdge = 0, NSMinYEdge = 1, NSMaxXEdge = 2, NSMaxYEdge = 3} NSRectEdge;
-extern void NSDivideRect(NSRect inRect, NSRect * slice, NSRect * rem, CGFloat amount, NSRectEdge edge);
-
- at interface NSResponder:NSObject < NSCoding > {}
- at end
-
- at protocol NSAnimatablePropertyContainer
-- (id) animator;
- at end
-
-extern NSString *NSAnimationTriggerOrderIn;
-
- at interface NSView:NSResponder < NSAnimatablePropertyContainer > {}
--(NSRect) bounds;
- at end
-
-enum {
-  NSBackgroundStyleLight = 0, NSBackgroundStyleDark, NSBackgroundStyleRaised, NSBackgroundStyleLowered
-};
-
- at interface NSTabView:NSView {}
- at end
-
-@ class OrganizerTabHeader;
-
- at interface OrganizerTabView:NSTabView {}
- at property(assign)
-NSSize minimumSize;
- at end
-
- at interface OrganizerTabView()
- at property(readonly) OrganizerTabHeader *tabHeaderView;
- at property(readonly) NSRect headerRect;
- at end
-
- at implementation OrganizerTabView
- at dynamic tabHeaderView, headerRect, minimumSize;
--(CGFloat) tabAreaThickness { return 0; }
--(NSRectEdge) rectEdgeForTabs { 
-  NSRect dummy, result = {};
-  NSDivideRect(self.bounds, &result, &dummy, self.tabAreaThickness, self.rectEdgeForTabs);
-  return 0;
-}
- at end
-
- at class NSImage;
-
- at interface XCImageArchiveEntry : NSObject
-{
-  NSImage *_cachedImage;
-}
-
- at end
-
- at implementation XCImageArchiveEntry
-
-- (NSImage *)image
-{
-  return _cachedImage;
-}
-
- at end
-
- at interface XCImageArchive : NSObject
- at end
-
- at implementation XCImageArchive
-
-- (NSImage *)imageNamed:(NSString *)name
-{
-    XCImageArchiveEntry * entry;
-    return entry ? entry.image : ((void *)0);
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-9.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-9.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-9.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-typedef signed char BOOL;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
-
- at interface NSObject <NSObject> {} @end
-
- at interface _NSServicesInContextMenu : NSObject {
-    id _requestor;
-    NSObject *_appleEventDescriptor;
-}
-
- at property (retain, nonatomic) id requestor;
- at property (retain, nonatomic) id appleEventDescriptor;
-
- at end
-
- at implementation _NSServicesInContextMenu
-
- at synthesize requestor = _requestor, appleEventDescriptor = _appleEventDescriptor;
-
- at end
-
- at class NSString;
-
- at protocol MyProtocol
-- (NSString *)stringValue;
- at end
-
- at interface MyClass : NSObject {
-  id  _myIvar;
-}
- at property (readwrite, retain) id<MyProtocol> myIvar;
- at end
-
- at implementation MyClass
- at synthesize myIvar = _myIvar;
- at end
-
-
- at interface BadPropClass
-{
- int _awesome;
-}
-
- at property (readonly) int; // expected-warning {{declaration does not declare anything}}
- at property (readonly) ; // expected-error {{type name requires a specifier or qualifier}}
- at property (readonly) int : 4; // expected-error {{property requires fields to be named}}
-
-
-// test parser recovery: rdar://6254579
- at property (                           // expected-note {{to match this '('}}
-           readonly getter=isAwesome) // expected-error {{expected ')'}}
-           
-  int _awesome;
- at property (readonlyx) // expected-error {{unknown property attribute 'readonlyx'}}
-  int _awesome2;
-
- at property (    // expected-note {{to match this '('}}
-           +)  // expected-error {{expected ')'}}
-           
-  int _awesome3;
-
- at end
-
- at protocol PVImageViewProtocol
- at property int inEyeDropperMode;
- at end
-
- at interface Cls
- at property int inEyeDropperMode;
- at end
-
- at interface PVAdjustColor @end
-
- at implementation PVAdjustColor
-
-- xx {
-  id <PVImageViewProtocol> view;
-  Cls *c;
-
-  c.inEyeDropperMode = 1;
-  view.inEyeDropperMode = 1;
-}
- at end
-
-// radar 7427072
- at interface MyStyleIntf 
-{
-    int _myStyle;
-}
-
- at property(readonly) int myStyle;
-
-- (float)setMyStyle:(int)style;
- at end
-
-// rdar://8774513
- at class MDAInstance; // expected-note {{forward declaration of class here}}
-
- at interface MDATestDocument
- at property(retain) MDAInstance *instance;
- at end
-
-id f0(MDATestDocument *d) {
-  return d.instance.path; // expected-error {{property 'path' cannot be found in forward class object 'MDAInstance'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-and-class-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-and-class-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-and-class-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-/**
-When processing @synthesize, treat ivars in a class extension the same as ivars in the class @interface, 
-and treat ivars in a superclass extension the same as ivars in the superclass @interface.
-In particular, when searching for an ivar to back an @synthesize, do look at ivars in the class's own class 
-extension but ignore any ivars in superclass class extensions.
-*/
-
- at interface Super {
-  	int ISA;
-}
- at end
-
- at interface Super() {
-  int Property;		// expected-note {{previously declared 'Property' here}}
-}
- at end
-
- at interface SomeClass : Super {
-        int interfaceIvar1;
-        int interfaceIvar2;
-}
- at property int Property;
- at property int Property1;
- at end
-
- at interface SomeClass () {
-  int Property1;
-}
- at end
-
- at implementation SomeClass 
- at synthesize Property;	// expected-error {{property 'Property' attempting to use instance variable 'Property' declared in super class 'Super'}}
- at synthesize Property1;	// OK
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-and-ivar-use.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-and-ivar-use.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-and-ivar-use.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// Do not issue error if 'ivar' used previously belongs to the inherited class
-// and has same name as @dynalic property in current class.
-
-typedef signed char BOOL;
-
- at protocol IDEBuildable
- at property (readonly) BOOL hasRecursiveDependencyCycle;
- at end
-
- at protocol IDEBuildableProduct <IDEBuildable>
- at end
-
- at interface IDEBuildableSupportMixIn 
- at property (readonly) BOOL hasRecursiveDependencyCycle;
- at end
-
- at interface Xcode3TargetBuildable <IDEBuildable>
-{
-  IDEBuildableSupportMixIn *_buildableMixIn;
-}
- at end
-
- at interface Xcode3TargetProduct : Xcode3TargetBuildable <IDEBuildableProduct>
- at end
-
- at implementation Xcode3TargetBuildable
-- (BOOL)hasRecursiveDependencyCycle
-{
-    return [_buildableMixIn hasRecursiveDependencyCycle];
-}
- at end
-
- at implementation Xcode3TargetProduct
- at dynamic hasRecursiveDependencyCycle;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface Object
-+ (id)new;
- at end
-
- at interface ReadOnly : Object
-{
-  int _object;
-  int _Anotherobject;
-}
- at property(readonly) int object;
- at property(readonly) int Anotherobject;
- at end
-
- at interface ReadOnly ()
- at property(readwrite) int object;
- at property(readwrite, setter = myAnotherobjectSetter:) int Anotherobject;
- at end
-
- at implementation ReadOnly
- at synthesize object = _object;
- at synthesize  Anotherobject = _Anotherobject;
-- (void) myAnotherobjectSetter : (int)val {
-    _Anotherobject = val;
-}
-- (int) Anotherobject { return _Anotherobject; }
- at end
-
-int main(int argc, char **argv) {
-    ReadOnly *test = [ReadOnly new];
-    test.object = 12345;
-    test.Anotherobject = 200;
-    return test.object - 12345 + test.Anotherobject - 200;
-}
-
-///
-
- at interface I0
- at property(readonly) int p0;	// expected-note {{property declared here}}
- at end 
-
- at interface I0 (Cat0)
- at end 
-
- at interface I0 (Cat1)
- at end 
-  
- at implementation I0	// expected-warning {{property 'p0' requires method 'p0' to be define}}
-- (void) foo {
-  self.p0 = 0; // expected-error {{assignment to readonly property}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// Test that a property can be synthesize in a category
-// implementation with no error.
-
- at protocol MyProtocol
- at property float  myFloat;
- at property float  anotherFloat; // expected-note 2 {{property declared}}
- at end
-
- at interface MyObject { float anotherFloat; }
- at end
-
- at interface MyObject (CAT) <MyProtocol>
- at end
-
- at implementation MyObject (CAT)	// expected-warning  {{property 'anotherFloat' requires method}} \
-                                // expected-warning {{property 'anotherFloat' requires method 'setAnotherFloat:'}}
- at dynamic myFloat;	// OK
- at synthesize anotherFloat; // expected-error {{@synthesize not allowed in a category's implementation}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at protocol P
-  @property(readonly) int X; // expected-note {{property declared here}}
- at end
-
- at protocol P1<P>
-  @property (copy) id ID;
- at end
-
- at interface I
- at end
-
- at interface I (Cat) <P>
- at property float X; // expected-warning {{property type 'float' is incompatible with type 'int' inherited from 'P'}}
- at end
-
- at interface I (Cat2) <P1>
- at property (retain) id ID; // expected-warning {{'copy' attribute on property 'ID' does not match the property inherited from 'P1'}}
- at end
-
-
- at interface A 
- at property(assign) int categoryProperty;
- at end
-
-// Don't issue warning on unimplemented setter/getter
-// because property is @dynamic.
- at implementation A 
- at dynamic categoryProperty;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-4.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-4.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-4.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,123 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface IDELogNavigator
-{
-  id selectedObjects;
-}
- at end
-
- at interface IDELogNavigator (CAT)
-  @property (readwrite, retain) id selectedObjects; // expected-note {{property declared here}}
-  @property (readwrite, retain) id d_selectedObjects; // expected-note {{property declared here}}
- at end
-
- at implementation IDELogNavigator 
- at synthesize selectedObjects = _selectedObjects; // expected-error {{property declared in category 'CAT' cannot be implemented in class implementation}}
- at dynamic d_selectedObjects; // expected-error {{property declared in category 'CAT' cannot be implemented in class implementation}}
- at end
-
-
-// rdar://13713098
-// Test1
- at interface NSArray 
-- (int)count;
- at end
-
- at protocol MyCountable
- at property  (readonly) int count;
- at end
-
-
- at interface NSArray(Additions) <MyCountable>
- at end
-
- at implementation NSArray(Additions)
- at end
-
-// Test2
- at protocol NSProtocol
-- (int)count;
- at end
-
- at interface NSArray1 <NSProtocol>
- at end
-
- at interface NSArray1(Additions) <MyCountable>
- at end
-
- at implementation NSArray1(Additions)
- at end
-
-// Test3
- at interface Super <NSProtocol>
- at end
-
- at interface NSArray2 : Super @end
-
- at interface NSArray2(Additions) <MyCountable>
- at end
-
- at implementation NSArray2(Additions)
- at end
-
-// Test3
- at interface Super1 <NSProtocol>
- at property  (readonly) int count;
- at end
-
- at protocol MyCountable1
- at end
-
- at interface NSArray3 : Super1 <MyCountable1>
- at end
-
- at implementation NSArray3
- at end
-
-// Test4
- at interface I
- at property int d1;
- at end
-
- at interface I(CAT)
- at property int d1;
- at end
-
- at implementation I(CAT)
- at end
-
-// Test5 
- at interface C @end
-
- at interface C (CAT)
-- (int) p;
- at end
-
-
- at interface C (Category)
- at property (readonly) int p;  // no warning for this property - a getter is declared in another category
- at property (readonly) int p1; // expected-note {{property declared here}}
- at property (readonly) int p2;  // no warning for this property - a getter is declared in this category
-- (int) p2;
- at end
-
- at implementation C (Category)  // expected-warning {{property 'p1' requires method 'p1' to be defined - use @dynamic or provide a method implementation in this category}}
- at end
-
-// Test6
- at protocol MyProtocol
- at property (readonly) float  anotherFloat; // expected-note {{property declared here}}
- at property (readonly) float  Float; // no warning for this property - a getter is declared in this protocol
-- (float) Float;
- at end
-
- at interface MyObject 
-{ float anotherFloat; }
- at end
-
- at interface MyObject (CAT) <MyProtocol>
- at end
-
- at implementation MyObject (CAT) // expected-warning {{property 'anotherFloat' requires method 'anotherFloat' to be defined - use @dynamic or provide a method implementation in this category}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-impl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-impl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-category-impl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-/* This test is for categories which don't implement the accessors but some accessors are
-   implemented in their base class implementation. In this case,no warning must be issued.
-*/
-
- at interface MyClass 
-{
-    int        _foo;
-}
- at property(readonly)    int        foo;
- at end
-
- at implementation MyClass
-- (int) foo        { return _foo; }
- at end
-
- at interface MyClass (private)
- at property(readwrite)    int        foo;
- at end
-
- at implementation MyClass (private)
-- (void) setFoo:(int)foo    { _foo = foo; }
- at end
-
- at interface MyClass (public)
- at property(readwrite)    int        foo;	
- at end
-
- at implementation MyClass (public)
- at end 
-
-// rdar://12568064
-// No warn of unimplemented property of protocols in category,
-// when those properties will be implemented in category's primary
-// class or one of its super classes.
- at interface HBSuperclass
- at property (nonatomic) char myProperty;
- at property (nonatomic) char myProperty2;
- at end
-
- at interface HBClass : HBSuperclass
- at end
-
- at protocol HBProtocol
- at property (nonatomic) char myProperty;
- at property (nonatomic) char myProperty2;
- at end
-
- at interface HBSuperclass (HBSCategory)<HBProtocol>
- at end
-
- at implementation HBSuperclass (HBSCategory)
- at end
-
- at interface HBClass (HBCategory)<HBProtocol>
- at end
-
- at implementation HBClass (HBCategory)
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-deprecated-warning.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-deprecated-warning.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-deprecated-warning.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,80 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -triple thumbv6-apple-ios3.0 -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -triple thumbv6-apple-ios3.0 -verify -Wno-objc-root-class %s
-// rdar://12324295
-
-typedef signed char BOOL;
-
- at protocol P
- at property(nonatomic,assign) id ptarget __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{property 'ptarget' is declared deprecated here}} expected-note {{method 'ptarget' declared here}}
- at end
-
- at protocol P1<P>
-- (void)setPtarget:(id)arg;
- at end
-
-
- at interface UITableViewCell<P1>
- at property(nonatomic,assign) id target __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{property 'target' is declared deprecated here}} expected-note {{method 'setTarget:' declared here}}
- at end
-
- at interface PSTableCell : UITableViewCell
- - (void)setTarget:(id)target;
- at end
-
- at interface UITableViewCell(UIDeprecated)
- at property(nonatomic,assign) id dep_target  __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note 2 {{method 'dep_target' declared here}} \
-                                                                                    // expected-note 4 {{property 'dep_target' is declared deprecated here}} \
-                                                                                    // expected-note 2 {{method 'setDep_target:' declared here}}
- at end
-
- at implementation PSTableCell
-- (void)setTarget:(id)target {};
-- (void)setPtarget:(id)val {};
-- (void) Meth {
-  [self setTarget: (id)0]; // no-warning
-  [self setDep_target: [self dep_target]]; // expected-warning {{'dep_target' is deprecated: first deprecated in iOS 3.0}} \
-                                           // expected-warning {{'setDep_target:' is deprecated: first deprecated in iOS 3.0}}
-					   
-  [self setPtarget: (id)0]; // no-warning
-}
- at end
-
- at implementation UITableViewCell
- at synthesize target;
- at synthesize ptarget;
-- (void)setPtarget:(id)val {};
-- (void)setTarget:(id)target {};
-- (void) Meth {
-  [self setTarget: (id)0]; // expected-warning {{'setTarget:' is deprecated: first deprecated in iOS 3.0}}
-  [self setDep_target: [self dep_target]]; // expected-warning {{'dep_target' is deprecated: first deprecated in iOS 3.0}} \
-                                           // expected-warning {{'setDep_target:' is deprecated: first deprecated in iOS 3.0}}
-					   
-  [self setPtarget: (id)0]; // no-warning
-}
- at end
-
-
- at interface CustomAccessorNames
- at property(getter=isEnabled,assign) BOOL enabled __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{method 'isEnabled' declared here}} expected-note {{property 'enabled' is declared deprecated here}}
-
- at property(setter=setNewDelegate:,assign) id delegate __attribute__((availability(ios,introduced=2.0,deprecated=3.0))); // expected-note {{method 'setNewDelegate:' declared here}} expected-note {{property 'delegate' is declared deprecated here}}
- at end
-
-void testCustomAccessorNames(CustomAccessorNames *obj) {
-  if ([obj isEnabled]) // expected-warning {{'isEnabled' is deprecated: first deprecated in iOS 3.0}}
-    [obj setNewDelegate:0]; // expected-warning {{'setNewDelegate:' is deprecated: first deprecated in iOS 3.0}}
-}
-
-
- at interface ProtocolInCategory
- at end
-
- at interface ProtocolInCategory (TheCategory) <P1>
-- (id)ptarget;
- at end
-
-id useDeprecatedProperty(ProtocolInCategory *obj, id<P> obj2, int flag) {
-  if (flag)
-    return [obj ptarget];  // no-warning
-  return [obj2 ptarget];   // expected-warning {{'ptarget' is deprecated: first deprecated in iOS 3.0}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-dot-receiver.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-dot-receiver.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-dot-receiver.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s 
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class %s 
-// expected-no-diagnostics
-// rdar://8962253
-
- at interface Singleton {
-}
-+ (Singleton*) instance;
- at end
-
- at implementation Singleton
-
-- (void) someSelector { }
-
-+ (Singleton*) instance { return 0; }
-
-+ (void) compileError
-{
-     [Singleton.instance  someSelector]; // clang issues error here
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-error-readonly-assign.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-error-readonly-assign.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-error-readonly-assign.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface A
- -(int) x;
- at property (readonly) int x;
- at property int ok;
- at end
-
- at interface B
- -(void) setOk:(int)arg;
- -(int) x;
- -(int) ok;
- at end
-
-void f0(A *a, B* b) {
-  a.x = 10;  // expected-error {{assignment to readonly property}}
-  a.ok = 20;
-  b.x = 10;  // expected-error {{no setter method 'setX:' for assignment to property}}
-  b.ok = 20;
-}
-
-typedef struct {
-  int i1, i2;
-} NSRect;
-
-NSRect NSMakeRect();
-
- at interface NSWindow 
-{
-    NSRect _frame;
-}
-- (NSRect)frame;
- at end
-
- at interface NSWindow (Category)
--(void)methodToMakeClangCrash;
- at end
-
- at implementation NSWindow (Category)
--(void)methodToMakeClangCrash
-{
- self.frame =  NSMakeRect(); // expected-error {{no setter method 'setFrame:' for assignment to property}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-expression-error.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-expression-error.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-expression-error.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface AddressMyProperties 
-{
-  unsigned index;
-}
- at property unsigned index;
- at end
-
- at implementation AddressMyProperties
- at synthesize index;
- at end
-
-int main() {
-	AddressMyProperties *object;
-	&object.index; // expected-error {{address of property expression requested}}
-	return 0;
-}
-
-typedef int Foo;
-void test() {
-  Foo.x;	// expected-error {{expected identifier or '('}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-impl-misuse.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-impl-misuse.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-impl-misuse.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface I {
-  int Y;
-}
- at property int X;
- at property int Y;
- at property int Z;
- at end
-
- at implementation I
- at dynamic X; // expected-note {{previous declaration is here}}
- at dynamic X; // expected-error {{property 'X' is already implemented}}
- at synthesize Y; // expected-note {{previous use is here}}
- at synthesize Z=Y; // expected-error {{synthesized properties 'Z' and 'Y' both claim instance variable 'Y'}}
- at end
-
-// rdar://8703553
- at interface IDEPathCell 
-{
- at private
-    id _gradientStyle;
-}
-
- at property (readwrite, assign, nonatomic) id gradientStyle;
- at end
-
- at implementation IDEPathCell
-
- at synthesize gradientStyle = _gradientStyle;
-- (void)setGradientStyle:(id)value { }
-
-+ (id)_componentCellWithRepresentedObject {
-    return self.gradientStyle;
-}
- at end
-
-// rdar://11054153
- at interface rdar11054153
- at property int P; // expected-error {{type of property 'P' ('int') does not match type of accessor 'P' ('void')}}
-- (void)P; // expected-note {{declared here}}
-
- at property int P1; // expected-warning {{type of property 'P1' does not match type of accessor 'P1'}} 
-- (double) P1; // expected-note {{declared here}}
-
- at property int P2; // expected-error {{type of property 'P2' ('int') does not match type of accessor 'P2' ('double *')}}
-- (double*)P2; // expected-note {{declared here}}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-in-class-extension-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-in-class-extension-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-in-class-extension-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -verify -Weverything %s
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fsyntax-only -verify -Weverything %s
-// rdar://12103400
-
- at class NSString;
-
- at interface MyClass
-
- at property (nonatomic, readonly) NSString* addingMemoryModel;
-
- at property (nonatomic, copy, readonly) NSString* matchingMemoryModel;
-
- at property (nonatomic, retain, readonly) NSString* addingNoNewMemoryModel;
-
- at property (readonly) NSString* none;
- at property (readonly) NSString* none1;
-
- at property (assign, readonly) NSString* changeMemoryModel; // expected-note {{property declared here}}
-
- at property (readonly) __weak id weak_prop;
- at property (readonly) __weak id weak_prop1;
-
- at property (assign, readonly) NSString* assignProperty;
-
- at property (readonly) NSString* readonlyProp;
-
-
-
- at end
-
- at interface MyClass ()
-{
-  NSString* _name;
-}
-
- at property (nonatomic, copy) NSString* addingMemoryModel;
- at property (nonatomic, copy) NSString* matchingMemoryModel;
- at property () NSString* addingNoNewMemoryModel;
- at property () NSString* none;
- at property (readwrite, retain) NSString* none1;
-
- at property (retain) NSString* changeMemoryModel; // expected-warning {{property attribute in class extension does not match the primary class}}
- at property () __weak id weak_prop;
- at property (readwrite) __weak id weak_prop1;
-
- at property (assign, readwrite) NSString* assignProperty;
- at property (assign) NSString* readonlyProp;
- at end
-
-// rdar://12214070
- at interface radar12214070
- at property (nonatomic, atomic, readonly) float propertyName; // expected-error {{property attributes 'atomic' and 'nonatomic' are mutually exclusive}}
- at end
-
- at interface radar12214070 ()
- at property (atomic, nonatomic, readonly, readwrite) float propertyName; // expected-error {{property attributes 'readonly' and 'readwrite' are mutually exclusive}} \
-		// expected-error {{property attributes 'atomic' and 'nonatomic' are mutually exclusive}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-in-class-extension.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-in-class-extension.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-in-class-extension.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://7766184
-
- at interface Foo @end
-
- at interface Foo ()
-  @property (readonly) int bar;
- at end
-
-void FUNC () {
-    Foo *foo;
-    foo.bar = 0; // expected-error {{assignment to readonly property}}
-}
-
-// rdar://8747333
- at class NSObject;
-
- at interface rdar8747333  {
- at private
-    NSObject *_bar;
-    NSObject *_baz;
-    NSObject *_bam;
-}
-- (NSObject *)baz;
- at end
-
- at interface rdar8747333 ()
-- (NSObject *)bar;
- at end
-
- at interface rdar8747333 ()
- at property (readwrite, assign) NSObject *bar;
- at property (readwrite, assign) NSObject *baz;
- at property (readwrite, assign) NSObject *bam;
- at property (readwrite, assign) NSObject *warn;
- at end
-
- at interface rdar8747333 ()
-- (NSObject *)bam;
-- (NSObject *)warn;	// expected-note {{method 'warn' declared here}}
-- (void)setWarn : (NSObject *)val; // expected-note {{method 'setWarn:' declared here}}
- at end
-
- at implementation rdar8747333 // expected-warning {{method definition for 'warn' not found}} \
-                            // expected-warning {{method definition for 'setWarn:' not found}}
- at synthesize bar = _bar;
- at synthesize baz = _baz;
- at synthesize bam = _bam;
- at dynamic warn;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-inherited.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-inherited.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-inherited.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify 
-// RUN: %clang_cc1 -x objective-c++ %s -fsyntax-only -verify 
-
-// rdar://6497242 Inherited overridden protocol declared objects don't work
-// rdar://9740328 Case for c++
-
- at protocol NSObject @end
- at interface NSObject @end
-
- at protocol FooDelegate<NSObject>
- at optional
-- (void)fooTask;
- at end
-
- at protocol BarDelegate<NSObject, FooDelegate>
- at optional
-- (void)barTask;
- at end
-
- at interface Foo : NSObject {
-  id _delegate;
-}
- at property(nonatomic, assign) id<FooDelegate> delegate;
- at property(nonatomic, assign) id<BarDelegate> delegate2; // expected-note {{property declared here}}
- at end
- at interface Bar : Foo {
-}
- at property(nonatomic, assign) id<BarDelegate> delegate;
- at property(nonatomic, assign) id<FooDelegate> delegate2; // expected-warning{{property type 'id<FooDelegate>' is incompatible with type 'id<BarDelegate>' inherited from 'Foo'}}
- at end
-
- at interface NSData @end
-
- at interface NSMutableData : NSData @end
-
- at interface Base : NSData 
- at property(assign) id ref;
- at property(assign) Base *p_base;
- at property(assign) NSMutableData *p_data;	 // expected-note {{property declared here}}
- at end
-
- at interface Data : Base 
- at property(assign) NSData *ref;	
- at property(assign) Data *p_base;	
- at property(assign) NSData *p_data;	// expected-warning{{property type 'NSData *' is incompatible with type 'NSMutableData *' inherited from 'Base'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-ivar-mismatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-ivar-mismatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-ivar-mismatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// Test that arithmatic types on property and its ivar have exact match.
-
- at interface Test4 
-{
-   char ivar; // expected-note{{instance variable is declared here}}
-}
- at property int prop;
- at end
-
- at implementation Test4
- at synthesize prop = ivar;  // expected-error {{type of property 'prop' ('int') does not match type of instance variable 'ivar' ('char')}}
- at end
-
-
- at interface Test5
-{
-  void * _P; // expected-note {{instance variable is declared here}}
-}
- at property int P;
- at end
-
- at implementation Test5
- at synthesize P=_P; // expected-error {{ype of property 'P' ('int') does not match type of instance variable '_P' ('void *')}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-lookup-in-id.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-lookup-in-id.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-lookup-in-id.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://9106929
-
-typedef struct objc_class *Class;
-
-typedef struct objc_object {
-    Class isa;
-} *id;
-
-
-typedef struct __FSEventStream* FSEventStreamRef;
-
-extern id NSApp;
-
- at interface FileSystemMonitor { 
-
- FSEventStreamRef fsEventStream;
-}
- at property(assign) FSEventStreamRef fsEventStream;
-
- at end
-
- at implementation FileSystemMonitor
- at synthesize fsEventStream;
-
-- (void)startFSEventGathering:(id)sender
-{
-  fsEventStream = [NSApp delegate].fsEventStream; // expected-warning {{instance method '-delegate' not found (return type defaults to 'id')}} \
-                                                  // expected-error {{property 'fsEventStream' not found on object of type 'id'}}
-
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-method-lookup-impl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-method-lookup-impl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-method-lookup-impl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface SSyncCEList
-{
-	id _list;
-}
- at end
-
- at implementation SSyncCEList
-
-- (id) list { return 0; }
- at end
-
- at interface SSyncConflictList : SSyncCEList
- at end
-
- at implementation SSyncConflictList
-
-- (id)Meth : (SSyncConflictList*)other
-  {
-    return other.list;
-  }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-missing.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-missing.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-missing.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR3234
-
- at protocol NSCopying @end
- at interface NSObject @end
-
-void f1(NSObject *o)
-{
-  o.foo; // expected-error{{property 'foo' not found on object of type 'NSObject *'}}
-}
-
-void f2(id<NSCopying> o)
-{
-  o.foo; // expected-error{{property 'foo' not found on object of type 'id<NSCopying>'}}
-}
-
-void f3(id o)
-{
-  o.foo; // expected-error{{property 'foo' not found on object of type 'id'}}
-}
-
-// rdar://8851803
- at class SomeOtherClass; // expected-note {{forward declaration of class here}}
-
- at interface MyClass {
-    SomeOtherClass *someOtherObject;
-}
- at end
-
-void foo(MyClass *myObject) {
-	myObject.someOtherObject.someProperty = 0; // expected-error {{property 'someOtherObject' refers to an incomplete Objective-C class 'SomeOtherClass' (with no @interface available)}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-nonfragile-abi.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-nonfragile-abi.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-nonfragile-abi.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-typedef signed char BOOL;
-
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at interface XCDeviceWillExecuteInfoBaton : NSObject {}
-  @property (retain) __attribute__((objc_gc(strong))) NSString *sdkPath;
- at end
-
- at implementation XCDeviceWillExecuteInfoBaton
-  @synthesize sdkPath; 
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-noninherited-availability-attr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-noninherited-availability-attr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-noninherited-availability-attr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx10.8.0 -fsyntax-only -verify %s
-
-// This test case shows that 'availablity' and 'deprecated' does not inherit
-// when a property is redeclared in a subclass.  This is intentional.
-
- at interface NSObject @end
- at protocol myProtocol
- at property int myProtocolProperty __attribute__((availability(macosx,introduced=10.7,deprecated=10.8))); // expected-note {{method 'myProtocolProperty' declared here}} \
-                                                                                                        // expected-note {{property 'myProtocolProperty' is declared deprecated here}}
- at end
-
- at interface Foo : NSObject
- at property int myProperty __attribute__((availability(macosx,introduced=10.7,deprecated=10.8)));  // expected-note {{'myProperty' declared here}} \
-								// expected-note {{method 'myProperty' declared here}} \
-								// expected-note {{property 'myProperty' is declared deprecated here}}
- at end
-
- at interface Bar : Foo <myProtocol>
- at property int myProperty;
- at property int myProtocolProperty;
- at end
-
-void test(Foo *y, Bar *x, id<myProtocol> z) {
-  y.myProperty = 0; // expected-warning {{'myProperty' is deprecated: first deprecated in OS X 10.8}}
-  [y myProperty];   // expected-warning {{'myProperty' is deprecated: first deprecated in OS X 10.8}} 
-
-  x.myProperty = 1; // no-warning
-  [x myProperty]; // no-warning
-
-  x.myProtocolProperty = 0; // no-warning
-
-  [x myProtocolProperty]; // no-warning
-  [z myProtocolProperty]; // expected-warning {{'myProtocolProperty' is deprecated: first deprecated in OS X 10.8}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-noprotocol-warning.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-noprotocol-warning.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-noprotocol-warning.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-
- at interface Object
-+ (id) new;
- at end
-
- at protocol GCObject
- at property int class;
- at end
-
- at protocol DerivedGCObject <GCObject>
- at property int Dclass;
- at end
-
- at interface GCObject  : Object <DerivedGCObject> {
-    int ifield;
-    int iOwnClass;
-    int iDclass;
-}
- at property int OwnClass;
- at end
-
- at implementation GCObject : Object
- at synthesize class=ifield;
- at synthesize Dclass=iDclass;
- at synthesize OwnClass=iOwnClass;
- at end
-
-int main(int argc, char **argv) {
-    GCObject *f = [GCObject new];
-    f.class = 5;
-    f.Dclass = 1;
-    f.OwnClass = 3;
-    return f.class + f.Dclass  + f.OwnClass - 9;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-not-lvalue.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-not-lvalue.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-not-lvalue.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-typedef struct NSSize {
-     		int width;
-		struct {
-		  int dim;
-		} inner;
-} NSSize;
-
- at interface Foo  {
-        NSSize _size;
-}
- at property NSSize size;
- at end
-
-void foo() { 
-        Foo *f;
-        f.size.width = 2.2; // expected-error {{expression is not assignable}}
-	f.size.inner.dim = 200; // expected-error {{expression is not assignable}}
-}
-
-// radar 7628953
-
- at interface Gorf  {
-}
-- (NSSize)size;
- at end
-
- at implementation Gorf
-- (void)MyView_sharedInit {
-    self.size.width = 2.2; // expected-error {{expression is not assignable}}
-}
-- (NSSize)size {}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-ns-returns-not-retained-attr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-ns-returns-not-retained-attr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-ns-returns-not-retained-attr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://9636091
-
- at interface I
- at property (nonatomic, retain) id newName __attribute__((ns_returns_not_retained)) ;
-
- at property (nonatomic, retain) id newName1 __attribute__((ns_returns_not_retained)) ;
-- (id) newName1 __attribute__((ns_returns_not_retained));
-
- at property (nonatomic, retain) id newName2 __attribute__((ns_returns_not_retained)); // expected-note {{roperty declared here}}
-- (id) newName2;   // expected-warning {{property declared as returning non-retained objects; getter returning retained objects}}
- at end
-
- at implementation I
- at synthesize newName;
-
- at synthesize newName1;
-- (id) newName1 { return 0; }
-
- at synthesize newName2;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-redundant-decl-accessor.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-redundant-decl-accessor.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-redundant-decl-accessor.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Werror -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface MyClass {
-    const char	*_myName;
-}
-
- at property const char *myName;
-
-- (const char *)myName;
-- (void)setMyName:(const char *)name;
-
- at end
-
- at implementation MyClass
-
- at synthesize myName = _myName;
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-typecheck-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-typecheck-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-typecheck-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface A
--(float) x;	// expected-note {{declared here}}
- at property int x; // expected-warning {{type of property 'x' does not match type of accessor 'x'}}
- at end
-
- at interface A (Cat)
- at property int moo;	// expected-note {{previous definition is here}}
- at end
-
- at implementation A (Cat)
--(int) moo {
-  return 0;
-}
--(void) setMoo: (float) x { // expected-warning {{conflicting parameter types in implementation of 'setMoo:': 'int' vs 'float'}}
-}
- at end
-
-
-typedef int T[2];
-typedef void (F)(void);
-
- at interface C
- at property(assign) T p2;  // expected-error {{property cannot have array or function type 'T'}}
-
- at property(assign) F f2; // expected-error {{property cannot have array or function type 'F'}}
-
- at end
-
-
- at class SSyncSet;
-
- at interface SPeer
-  @property(nonatomic,readonly,retain) SSyncSet* syncSet;
- at end
-
- at class SSyncSet_iDisk;
-
- at interface SPeer_iDisk_remote1 : SPeer
-- (SSyncSet_iDisk*) syncSet; // expected-note {{declared here}}
- at end
-
- at interface SPeer_iDisk_local
-- (SSyncSet_iDisk*) syncSet;
- at end
-
- at interface SSyncSet
- at end
-
- at interface SSyncSet_iDisk
- at property(nonatomic,readonly,retain) SPeer_iDisk_local* localPeer;
- at end
-
- at interface SPeer_iDisk_remote1 (protected)
- at end
-
- at implementation SPeer_iDisk_remote1 (protected)
-- (id) preferredSource1
-{
-  return self.syncSet.localPeer; // expected-warning {{type of property 'syncSet' does not match type of accessor 'syncSet'}}
-}
- at end
-
- at interface NSArray @end
-
- at interface NSMutableArray : NSArray
- at end
-
- at interface Class1 
-{
- NSMutableArray* pieces;
- NSArray* first;
-}
-
- at property (readonly) NSArray* pieces; // expected-warning {{type of property 'pieces' does not match type of accessor 'pieces'}}
- at property (readonly) NSMutableArray* first;
-
-- (NSMutableArray*) pieces; // expected-note 2 {{declared here}}
-- (NSArray*) first;
- at end
-
- at interface Class2  {
- Class1* container;
-}
-
- at end
-
- at implementation Class2
-
-- (id) lastPiece
-{
- return container.pieces; // expected-warning {{type of property 'pieces' does not match type of accessor 'pieces'}}
-}
-
-- (id)firstPeice
-{
-  return container.first;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-user-setter.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-user-setter.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-user-setter.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,156 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface I0 
- at property(readonly) int x;
- at property(readonly) int y;
- at property(readonly) int z;
--(void) setY: (int) y0;
- at end
-
- at interface I0 (Cat0)
--(void) setX: (int) a0;
- at end
-
- at implementation I0
- at dynamic x;
- at dynamic y;
- at dynamic z;
--(void) setY: (int) y0{}
-
--(void) im0 {
-  self.x = 0;
-  self.y = 2;
-  self.z = 2; // expected-error {{assignment to readonly property}}
-}
- at end
-
-// Test when property is 'readonly' but it has a setter in
-// its implementation only.
- at interface I1  {
-}
- at property(readonly) int identifier;
- at end
-
-
- at implementation I1
- at dynamic identifier;
-- (void)setIdentifier:(int)ident {}
-
-- (id)initWithIdentifier:(int)Arg {
-    self.identifier = 0;
-}
-
- at end
-
-
-// Also in a category implementation
- at interface I1(CAT)  
- at property(readonly) int rprop;
- at end
-
-
- at implementation I1(CAT)
- at dynamic rprop;
-- (void)setRprop:(int)ident {}
-
-- (id)initWithIdentifier:(int)Arg {
-    self.rprop = 0;
-}
-
- at end
-
-static int g_val;
-
- at interface Root 
-+ alloc;
-- init;
- at end
-
- at interface Subclass : Root
-{
-    int setterOnly;
-}
-- (void) setSetterOnly:(int)value;
- at end
-
- at implementation Subclass
-- (void) setSetterOnly:(int)value {
-    setterOnly = value;
-    g_val = setterOnly;
-}
- at end
-
- at interface C {}
-// - (int)Foo;
-- (void)setFoo:(int)value;
- at end
-
-void g(int);
-
-void f(C *c) {
-    c.Foo = 17; // OK 
-    g(c.Foo); // expected-error {{no getter method for read from property}}
-}
-
-
-void abort(void);
-int main (void) {
-    Subclass *x = [[Subclass alloc] init];
-
-    x.setterOnly = 4;   // OK
-    if (g_val != 4)
-      abort ();
-    return 0;
-}
-
-// rdar://11363363
- at interface rdar11363363
-{
-  id R;
-}
- at property (copy) id p;
- at property (copy) id r;
- at property (copy) id Q;
- at property (copy) id t; // expected-note 2 {{property declared here}}
- at property (copy) id T; // expected-note 2 {{property declared here}}
- at property (copy) id Pxyz; // expected-note 2 {{property declared here}}
- at property (copy) id pxyz; // expected-note 2 {{property declared here}}
- at end
-
- at implementation rdar11363363
- at synthesize p;
- at synthesize r;
- at synthesize Q;
- at synthesize t, T;
- at synthesize Pxyz, pxyz;
-- (id) Meth {
-  self.P = 0;
-  self.q = 0;
-// rdar://11528439
-  self.t = 0; // expected-error {{synthesized properties 't' and 'T' both claim setter 'setT:'}}
-  self.T = 0; // expected-error {{synthesized properties 'T' and 't' both claim setter 'setT:'}}
-  self.Pxyz = 0; // expected-error {{synthesized properties 'Pxyz' and 'pxyz' both claim setter 'setPxyz:'}}
-  self.pxyz = 0; // expected-error {{synthesized properties 'pxyz' and 'Pxyz' both claim setter 'setPxyz:'}}
-  self.R = 0;
-  return self.R; // expected-error {{no getter method for read from property}}
-}
- at end
-
-// rdar://11499742
- at class BridgeFormatter;
-
- at interface FMXBridgeFormatter 
-
- at property(assign, readwrite, getter=formatter, setter=setFormatter:) BridgeFormatter* cppFormatter;
-
- at end
-
- at implementation FMXBridgeFormatter
- at synthesize cppFormatter;
-
-- (void) dealloc
-{
- self.formatter = 0;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property-weak.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property-weak.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property-weak.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface foo
- at property(nonatomic) int foo __attribute__((weak_import));
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface I 
-{
-	int IVAR; // expected-note{{instance variable is declared here}}
-	int name;
-}
- at property int d1;
- at property id  prop_id; // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}}, expected-warning {{default property attribute 'assign' not appropriate for non-GC object}}
- at property int name;
- at end
-
- at interface I(CAT)
- at property int d1;
- at end
-
- at implementation I
- at synthesize d1;		// expected-error {{synthesized property 'd1' must either be named the same as}}
- at dynamic    bad;	// expected-error {{property implementation must have its declaration in interface 'I'}}
- at synthesize prop_id;	// expected-error {{synthesized property 'prop_id' must either be named the same}}  // expected-note {{previous declaration is here}}
- at synthesize prop_id = IVAR;	// expected-error {{type of property 'prop_id' ('id') does not match type of instance variable 'IVAR' ('int')}} // expected-error {{property 'prop_id' is already implemented}}
- at synthesize name;	// OK! property with same name as an accessible ivar of same name
- at end
-
- at implementation I(CAT) 
- at synthesize d1;		// expected-error {{@synthesize not allowed in a category's implementation}}
- at dynamic bad;		// expected-error {{property implementation must have its declaration in the category 'CAT'}}
- at end
-
- at implementation E	// expected-warning {{cannot find interface declaration for 'E'}}
- at dynamic d;		// expected-error {{property implementation must have its declaration in interface 'E'}}
- at end
-
- at implementation Q(MYCAT)  // expected-error {{cannot find interface declaration for 'Q'}}
- at dynamic d;		// expected-error {{property implementation in a category with no category declaration}}
- at end
-
- at interface Foo
- at property double bar;
- at end
-
-int func1() {
-   id foo;
-   double bar = [foo bar];
-   return 0;
-}
-
-// PR3932
-typedef id BYObjectIdentifier;
- at interface Foo1  {
-  void *isa;
-}
- at property(copy) BYObjectIdentifier identifier;
- at end
-
- at interface Foo2 
-{
-  int ivar;
-}
- at property int treeController;  // expected-note {{property declared here}}
- at property int ivar;	// OK
- at property int treeController;  // expected-error {{property has a previous declaration}}
- at end
-
-// rdar://10127639
- at synthesize window; // expected-error {{missing context for property implementation declaration}}
-
-// rdar://10408414
-Class test6_getClass();
- at interface Test6
- at end
- at implementation Test6
-+ (float) globalValue { return 5.0f; }
-+ (float) gv { return test6_getClass().globalValue; }
- at end
-
- at interface Test7
- at property unsigned length;
- at end
-void test7(Test7 *t) {
-  char data[t.length] = {}; // expected-error {{variable-sized object may not be initialized}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/props-on-prots.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/props-on-prots.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/props-on-prots.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-typedef signed char BOOL;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject
-- (BOOL) isEqual:(id) object;
- at end
-
- at protocol NSCoding
-- (void) encodeWithCoder:(NSCoder *) aCoder;
- at end
-
- at interface NSObject < NSObject > {} @end
-
-typedef float CGFloat;
-
- at interface NSResponder:NSObject < NSCoding > {} @end
-
- at class XCElementView;
-
-typedef struct _XCElementInset {} XCElementInset;
-
- at protocol XCElementP < NSObject >
--(id) vertical;
- at end
-
- at protocol XCElementDisplayDelegateP;
- at protocol XCElementTabMarkerP;
-
-typedef NSObject < XCElementTabMarkerP > XCElementTabMarker;
-
- at protocol XCElementTabberP < XCElementP >
--(void) setMarker:(XCElementTabMarker *) marker;
- at end
-
-typedef NSObject < XCElementTabberP > XCElementTabber;
-
- at protocol XCElementTabMarkerP < NSObject >
- at property(nonatomic)
-BOOL variableSized;
- at end
-
- at protocol XCElementJustifierP < XCElementP >
--(void) setHJustification:(CGFloat) hJust;
- at end
-
-typedef NSObject < XCElementJustifierP > XCElementJustifier;
- at interface XCElementImp:NSObject < XCElementP > {}
- at end
-
- at class XCElementImp;
-
- at interface XCElementTabberImp:XCElementImp < XCElementTabberP > {
-	XCElementTabMarker *_marker;
-}
- at end
-
- at implementation XCElementTabberImp 
-- (void) setMarker:(XCElementTabMarker *) marker {
-  if (_marker && _marker.variableSized) {
-  }
-}
-- (id)vertical { return self; }
-- (BOOL)isEqual:x { return 1; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-archane.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-archane.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-archane.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://5986251
-
- at protocol SomeProtocol
-- (void) bar;
- at end
-
-void bar();
-void foo(id x) {
-  bar((short<SomeProtocol>)x); // expected-error {{expected ')'}} expected-note {{to match this '('}}
-  bar((<SomeProtocol>)x);      // expected-warning {{protocol has no object type specified; defaults to qualified 'id'}}
-
-  [(<SomeProtocol>)x bar];      // expected-warning {{protocol has no object type specified; defaults to qualified 'id'}}
-}
-
- at protocol MyProtocol
-- (void)doSomething;
- at end
-
- at interface MyClass
-- (void)m1:(id <MyProtocol> const)arg1;
-
-// FIXME: provide a better diagnostic (no typedef).
-- (void)m2:(id <MyProtocol> short)arg1; // expected-error {{'short type-name' is invalid}}
- at end
-
-typedef int NotAnObjCObjectType;
-
-// GCC doesn't diagnose this.
-NotAnObjCObjectType <SomeProtocol> *obj; // expected-error {{invalid protocol qualifiers on non-ObjC type}}
-
-typedef struct objc_class *Class;
-
-Class <SomeProtocol> UnfortunateGCCExtension;
-
-// rdar://10238337
- at protocol Broken @end
- at interface Crash @end
- at implementation Crash
-- (void)crashWith:(<Broken>)a { // expected-warning {{protocol has no object type specified; defaults to qualified 'id'}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-attribute.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-attribute.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-attribute.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-__attribute ((unavailable))
- at protocol FwProto; // expected-note{{marked unavailable}}
-
-Class <FwProto> cFw = 0;  // expected-error {{'FwProto' is unavailable}}
-
-
-__attribute ((deprecated)) @protocol MyProto1 // expected-note 7 {{declared here}}
- at end
-
- at protocol Proto2  <MyProto1>  // expected-warning {{'MyProto1' is deprecated}}
-+method2;
- at end
-
-
- at interface MyClass1 <MyProto1>  // expected-warning {{'MyProto1' is deprecated}}
-{
-  Class isa;
-}
- at end
-
- at interface Derived : MyClass1 <MyProto1>  // expected-warning {{'MyProto1' is deprecated}}
-{
-	id <MyProto1> ivar;  // expected-warning {{'MyProto1' is deprecated}}
-}
- at end
-
- at interface MyClass1 (Category) <MyProto1, Proto2>  // expected-warning {{'MyProto1' is deprecated}}
- at end
-
-
-
-Class <MyProto1> clsP1 = 0;  // expected-warning {{'MyProto1' is deprecated}}
-
- at protocol FwProto @end // expected-note{{marked unavailable}}
-
- at interface MyClass2 <FwProto> // expected-error {{'FwProto' is unavailable}}
- at end
-
-__attribute ((unavailable)) __attribute ((deprecated)) @protocol XProto; // expected-note{{marked unavailable}}
-
-id <XProto> idX = 0; // expected-error {{'XProto' is unavailable}}
-
-int main ()
-{
-	MyClass1 <MyProto1> *p1;  // expected-warning {{'MyProto1' is deprecated}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-expr-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-expr-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-expr-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at protocol fproto;
-
- at protocol p1 
- at end
-
- at class cl;
-
-int main()
-{
-	Protocol *proto = @protocol(p1);
-        Protocol *fproto = @protocol(fproto);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-expr-neg-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-expr-neg-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-expr-neg-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at class Protocol;
-
- at protocol fproto;
-
- at protocol p1 
- at end
-
- at class cl;
-
-int main()
-{
-	Protocol *proto = @protocol(p1);
-        Protocol *fproto = @protocol(fproto);
-	Protocol *pp = @protocol(i); // expected-error {{cannot find protocol declaration for 'i'}}
-	Protocol *p1p = @protocol(cl); // expected-error {{cannot find protocol declaration for 'cl'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-objc-root-class %s
-
- at interface FF
-- (void) Meth;
- at end
-
- at protocol P
- at end
-
- at interface INTF<P>
-- (void)IMeth;
- at end
-
- at implementation INTF
-- (void)IMeth {INTF<P> *pi;  [pi Meth]; } // expected-warning {{method '-Meth' not found (return type defaults to 'id')}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-objc-root-class %s
-
- at protocol P
- at end
-
- at interface INTF<P>
-- (void)IMeth;
- at end
-
- at implementation INTF
-- (void)IMeth { [(id<P>)self Meth]; }  // expected-warning {{method '-Meth' not found (return type defaults to 'id')}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-id-test-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -pedantic -fsyntax-only -verify %s
-
- at protocol MyProto1 
- at end
-
- at protocol MyProto2 
- at end
-
- at interface INTF @end
-
-id<MyProto1> Func(INTF <MyProto1, MyProto2> *p2) // expected-note 2{{passing argument to parameter 'p2' here}}
-{
-	return p2;
-}
-
-
-
-
- id<MyProto1> Gunc(id <MyProto1, MyProto2>p2)
-{
-	return p2;
-}
-
-
- id<MyProto1> Gunc1(id <MyProto1, MyProto2>p2)
-{
-	return p2;
-}
-
-id<MyProto1, MyProto2> Gunc2(id <MyProto1>p2)
-{
-	Func(p2);	// expected-warning {{passing 'id<MyProto1>' to parameter of incompatible type 'INTF<MyProto1,MyProto2> *'}}
-	return p2;	// expected-warning {{returning 'id<MyProto1>' from a function with incompatible result type 'id<MyProto1,MyProto2>'}}
-}
-
-
-
-id<MyProto1> Gunc3(id <MyProto2>p2)
-{
-	return p2;	 // expected-warning {{returning 'id<MyProto2>' from a function with incompatible result type 'id<MyProto1>'}}
-}
-
-
-id<MyProto1, MyProto2> Gunc4(id <MyProto2, MyProto1>p2)
-{
-	return p2;
-}
-
-
-
-INTF<MyProto1> * Hunc(id <MyProto1, MyProto2>p2)
-{
-	return p2;
-}
-
-
-INTF<MyProto1> * Hunc1(id <MyProto1, MyProto2>p2)
-{
-	return p2;
-}
-
-INTF<MyProto1, MyProto2> * Hunc2(id <MyProto1>p2)
-{
-	Func(p2);	// expected-warning {{passing 'id<MyProto1>' to parameter of incompatible type 'INTF<MyProto1,MyProto2> *'}}
-	return p2;	// expected-warning {{returning 'id<MyProto1>' from a function with incompatible result type 'INTF<MyProto1,MyProto2> *'}}
-}
-
-INTF<MyProto1> * Hunc3(id <MyProto2>p2)
-{
-	return p2;	 // expected-warning {{returning 'id<MyProto2>' from a function with incompatible result type 'INTF<MyProto1> *'}}
-}
-
-
-INTF<MyProto1, MyProto2> * Hunc4(id <MyProto2, MyProto1>p2)
-{
-	return p2;
-}
-
-id Iunc(id <MyProto1, MyProto2>p2)
-{
-	return p2;
-}
-
-
-id<MyProto1> Iunc1(id p2)
-{
-	return p2;
-}
-
-id<MyProto1, MyProto2> Iunc2(id p2)
-{
-	Iunc(p2);	
-	return p2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-implementation-inherited.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-implementation-inherited.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-implementation-inherited.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at protocol P0
--bar;
- at end
-
- at interface A <P0>
- at end
-
-// Interface conforms to inherited protocol
-
- at interface B0 : A <P0>
- at end
-
- at implementation B0
- at end
-
-// Interface conforms to a protocol which extends another. The other
-// protocol is inherited, and extended methods are implemented.
-
- at protocol P1 <P0>
--foo;
- at end
-
- at interface B1 : A <P1>
- at end
-
- at implementation B1
--foo { return 0; };
- at end
-
-// Interface conforms to a protocol whose methods are provided by an
-// alternate inherited protocol.
-
- at protocol P2
--bar;
- at end
-
- at interface B2 : A <P2>
- at end
-
- at implementation B2
- at end
-
-// Interface conforms to a protocol whose methods are provided by a base class.
-
- at interface A1 
--bar;
- at end
-
- at interface B3 : A1 <P2>
- at end
-
- at implementation B3
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-implementing-class-methods.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-implementing-class-methods.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-implementing-class-methods.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://7020493
-
- at protocol P1
- at optional
-- (int) PMeth;
- at required
-- (void) : (double) arg; // expected-note {{method ':' declared here}}
- at end
-
- at interface NSImage <P1>
-- (void) initialize; // expected-note {{method 'initialize' declared here}}
- at end
-
- at interface NSImage (AirPortUI)
-- (void) initialize;
- at end
-
- at interface NSImage()
-- (void) CEMeth; // expected-note {{method 'CEMeth' declared here}}
- at end
-
- at implementation NSImage (AirPortUI)
-- (void) initialize {NSImage *p=0; [p initialize]; } // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
-- (int) PMeth{ return 0; }
-- (void) : (double) arg{}; // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
-- (void) CEMeth {}; // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
- at end
-
-// rdar://10014946
-typedef char BOOL;
- at interface I
-{
-  BOOL allowsDeleting;
-}
- at property (nonatomic, assign, readwrite) BOOL allowsDeleting;
- at end
-
- at implementation I(CAT)
-- (BOOL) allowsDeleting { return 1; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-lookup-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-lookup-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-lookup-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
- at interface NSObject @end
-
- at protocol ProtocolA
-
-+ (id)classMethod;
-- (id)instanceMethod;
-
- at end
-
- at protocol ProtocolB <ProtocolA>
-
- at end
-
- at interface Foo : NSObject <ProtocolB>
-
- at end
-
- at interface SubFoo : Foo
-
- at end
-
- at implementation SubFoo
-
-+ (id)method {
-  return [super classMethod];
-}
-
-- (id)method {
-  return [super instanceMethod];
-}
-
- at end
-
-
- at protocol ProtC
--document;
- at end
-
- at interface I1 : NSObject
- at end
-
- at interface I1(cat)
--document;
- at end
-
- at interface I2 : NSObject
--document;
- at end
-
- at interface I2() <ProtC>
- at end
-
- at implementation I2
-- document { return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
- at protocol NSObject
-- retain;
-- release;
- at end
-
- at interface NSObject
-- init;
-- dealloc;
- at end
-
- at protocol Foo <NSObject>
- at end
-
- at protocol Bar <Foo>
- at end
-
- at interface Baz : NSObject {
-	id <Foo> _foo;
-	id <Bar> _bar;
-}
-- (id)initWithFoo:(id <Foo>)foo bar:(id <Bar>)bar;
- at end
-
- at implementation Baz
-
-- (id)init
-{
-	return [self initWithFoo:0 bar:0];
-}
-
-- (id)initWithFoo:(id <Foo>)foo bar:(id <Bar>)bar
-{
-	self = [super init];
-	if (self != 0) {
-		_foo = [foo retain];
-		_bar = [bar retain];
-	}
-	return self;
-}
-
-- dealloc
-{
-	[_foo release];
-	[_bar release];
-	[super dealloc];
-	return 0;
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-qualified-class-unsupported.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-qualified-class-unsupported.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-qualified-class-unsupported.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-#include <stddef.h>
-
-typedef struct objc_class *Class;
-typedef struct objc_object {
-    Class isa;
-} *id;
-id objc_getClass(const char *s);
-
- at interface Object
-+ self;
- at end
-
- at protocol Func
-+ (void) class_func0;
-- (void) instance_func0;
- at end
-
- at interface Derived: Object <Func>
- at end
-
- at interface Derived2: Object <Func>
- at end
-
-static void doSomething(Class <Func> unsupportedObjectType) {
-  [unsupportedObjectType class_func0];
-}
-
-static void doSomethingElse(id <Func> pleaseConvertToThisType) {
-  [pleaseConvertToThisType class_func0];
-}
-
-int main(int argv, char *argc[]) {
-  doSomething([Derived self]);
-  doSomething([Derived2 self]);
-  doSomethingElse([Derived self]);
-  doSomethingElse([Derived2 self]);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-typecheck.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-typecheck.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-typecheck.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface NSObject @end
- at protocol XCElementP @end
- at protocol XCElementSpacerP <XCElementP>  @end
-
- at protocol PWhatever @end
-
- at interface XX
-
-- (void)setFlexElement:(NSObject <PWhatever, XCElementP> *)flexer;
-- (void)setFlexElement2:(NSObject <PWhatever, XCElementSpacerP> *)flexer; // expected-note{{passing argument to parameter 'flexer' here}}
-
- at end
-
-void func() {
-  NSObject <PWhatever, XCElementSpacerP> * flexer;
-  NSObject <PWhatever, XCElementP> * flexer2;
-  XX *obj;
-  [obj setFlexElement:flexer];
-  // FIXME: GCC provides the following diagnostic (which is much better):
-  // protocol-typecheck.m:21: warning: class 'NSObject <PWhatever, XCElementP>' does not implement the 'XCElementSpacerP' protocol
-  [obj setFlexElement2:flexer2]; // expected-warning{{incompatible pointer types sending 'NSObject<PWhatever,XCElementP> *' to parameter of type 'NSObject<PWhatever,XCElementSpacerP> *'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-warn.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-warn.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocol-warn.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// radar 7638810
-
- at protocol NSObject @end
-
- at interface NSObject <NSObject> @end
-
- at interface UIResponder : NSObject
- at end
-
- at implementation UIResponder
- at end
-
- at interface UIView : UIResponder
- at end
-
- at implementation UIView
- at end
-
- at interface UIWebTiledView : UIView
- at end
-
- at implementation UIWebTiledView
- at end
-
- at interface UIWebDocumentView : UIWebTiledView
- at end
-
- at implementation UIWebDocumentView
- at end
-
- at interface UIWebBrowserView : UIWebDocumentView
- at end
-
- at implementation UIWebBrowserView
- at end
-
- at interface UIPDFView : UIView
- at end
-
- at implementation UIPDFView
- at end
-
- at interface UIWebPDFView : UIPDFView
- at end
-
- at implementation UIWebPDFView
- at end
-
-UIWebPDFView *getView()
-{
-    UIWebBrowserView *browserView;
-    UIWebPDFView *pdfView;
-    return pdfView ? pdfView : browserView; // expected-warning {{incompatible pointer types returning 'UIView<NSObject> *' from a function with result type 'UIWebPDFView *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/protocols.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/protocols.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/protocols.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-deprecated-declarations -verify %s
-
- at interface INTF1
- at required  // expected-error {{directive may only be specified in protocols only}}
-- (int) FooBar;
-- (int) FooBar1;
-- (int) FooBar2;
- at optional  // expected-error {{directive may only be specified in protocols only}}
-+ (int) C;
-
-- (int)I;
- at end
-
- at protocol p1,p2,p3;
-
- at protocol p1;
-
- at protocol PROTO1
- at required 
-- (int) FooBar;
- at optional
-- (void) MyMethod1;
-+ (int) S;
- at end
-
-
- at protocol PROTO2<p1>
- at end
-
- at protocol p1 @end
-
- at protocol PROTO<p1>     // expected-note {{previous definition is here}}
- at end
-
- at protocol PROTO<p1>	// expected-warning {{duplicate protocol definition of 'PROTO'}}
- at end
-
- at protocol PROTO3<p1, p1>
- at end
-
- at protocol p2 <p1>
- at end
-
- at protocol PROTO4 <p1, p2, PROTO, PROTO3, p3> 
- at end
-
-
-// rdar://6771034
- at protocol XX;
- at protocol YY <XX>  // Use of declaration of XX here should not cause a warning.
-- zz;
- at end
-
-
-// Detect circular dependencies.
- at protocol B;
- at protocol C < B > // expected-note{{previous definition is here}}
- at end
- at protocol A < C > 
- at end
- at protocol B < A > // expected-error{{protocol has circular dependency}}
- at end
-
- at protocol P
-- (int)test:(int)param, ..; // expected-warning{{type specifier missing}} \
-                      // expected-error{{expected ';' after method prototype}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/provisional-ivar-lookup.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/provisional-ivar-lookup.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/provisional-ivar-lookup.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-
-// rdar:// 8565343
- at interface Foo  {
- at private
-    int _foo;
-    int _foo2;
-}
- at property (readwrite, nonatomic) int foo, foo1, foo2, foo3;
- at property (readwrite, nonatomic) int PROP;
- at end
-
- at implementation Foo
-
- at synthesize foo = _foo;
- at synthesize foo1;
-
-- (void)setFoo:(int)value {
-    _foo = foo; // expected-error {{use of undeclared identifier 'foo'}}
-}
-
-- (void)setFoo1:(int)value {
-    _foo = foo1; // OK
-}
-
-- (void)setFoo2:(int)value {
-    _foo = foo2; // expected-error {{use of undeclared identifier 'foo2'}}
-}
-
-- (void)setFoo3:(int)value {
-    _foo = foo3;	// OK
-}
-
- at synthesize foo2 = _foo2;
- at synthesize foo3;
-
- at synthesize PROP=PROP;
-- (void)setPROP:(int)value {
-    PROP = value;        // OK
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/qualified-protocol-method-conflicts.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/qualified-protocol-method-conflicts.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/qualified-protocol-method-conflicts.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1  -Woverriding-method-mismatch -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://6191214
-
- at protocol Xint
--(void) setX: (int) arg0; // expected-note {{previous declaration is here}}
-+(int) C; // expected-note {{previous declaration is here}}
- at end
-
- at protocol Xfloat
--(void) setX: (float) arg0; // expected-note 2 {{previous declaration is here}}
-+(float) C;		    // expected-note 2 {{previous declaration is here}}
- at end
-
- at interface A <Xint, Xfloat>
- at end
-
- at implementation A
--(void) setX: (int) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'float' vs 'int'}}
-+(int) C {return 0; } // expected-warning {{conflicting return type in declaration of 'C': 'float' vs 'int'}}
- at end
-
- at interface B <Xfloat, Xint>
- at end
-
- at implementation B 
--(void) setX: (float) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'int' vs 'float'}}
-+ (float) C {return 0.0; } // expected-warning {{conflicting return type in declaration of 'C': 'int' vs 'float'}}
- at end
-
- at protocol Xint_float<Xint, Xfloat>
- at end
-
- at interface C<Xint_float>
- at end
-
- at implementation C
--(void) setX: (int) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'float' vs 'int'}}
-+ (int) C {return 0;} // expected-warning {{conflicting return type in declaration of 'C': 'float' vs 'int'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/rdar6248119.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/rdar6248119.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/rdar6248119.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify -fobjc-exceptions
-// expected-no-diagnostics
-// Test case for: 
-//   <rdar://problem/6248119> @finally doesn't introduce a new scope
-
-void f0() {
-  int i;
-  @try { 
-  } @finally {
-    int i = 0;
-  }
-}
-
-void f1() {
-  int i;
-  @try { 
-    int i =0;
-  } @finally {
-  }
-}
-
-void f2() {
-  int i;
-  @try { 
-  } @catch(id e) {
-    int i = 0;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/rdr-6211479-array-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/rdr-6211479-array-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/rdr-6211479-array-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// <rdar://problem/6211479>
-
-typedef int T[2];
-
- at interface A
- at property(assign) T p2; // expected-error {{property cannot have array or function type 'T' (aka 'int [2]')}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/receiver-forward-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/receiver-forward-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/receiver-forward-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wreceiver-forward-class -verify %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only  -Wreceiver-forward-class -verify %s
-// rdar://10686120
-
- at class A; // expected-note {{forward declaration of class here}}
-
- at interface B
--(int) width; // expected-note {{using}}
- at end
- at interface C
--(float) width; // expected-note {{also found}}
- at end
-
-int f0(A *x) {
-  return [x width]; // expected-warning {{receiver type 'A' for instance message is a forward declaration}} \
-                    // expected-warning {{multiple methods named 'width' found}} \
-                    // expected-note {{receiver is treated with 'id' type for purpose of method lookup}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/related-result-type-inference.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/related-result-type-inference.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/related-result-type-inference.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,186 +0,0 @@
-// RUN: %clang_cc1 -verify -Wno-deprecated-declarations -Wno-objc-root-class %s
-
- at interface Unrelated
- at end
-
- at interface NSObject
-+ (id)new;
-+ (id)alloc;
-- (NSObject *)init;
-
-- (id)retain;  // expected-note{{instance method 'retain' is assumed to return an instance of its receiver type ('NSArray *')}}
-- autorelease;
-
-- (id)self;
-
-- (id)copy;
-- (id)mutableCopy;
-
-// Do not infer when instance/class mismatches
-- (id)newNotInferred;
-- (id)alloc;
-+ (id)initWithBlarg;
-+ (id)self;
-
-// Do not infer when the return types mismatch.
-- (Unrelated *)initAsUnrelated;
- at end
-
- at interface NSString : NSObject
-- (id)init;
-- (id)initWithCString:(const char*)string;
- at end
-
- at interface NSArray : NSObject
-- (unsigned)count;
- at end
-
- at interface NSBlah 
- at end
-
- at interface NSMutableArray : NSArray
- at end
-
- at interface NSBlah ()
-+ (Unrelated *)newUnrelated;
- at end
-
-void test_inference() {
-  // Inference based on method family
-  __typeof__(([[NSString alloc] init])) *str = (NSString**)0;
-  __typeof__(([[[[NSString new] self] retain] autorelease])) *str2 = (NSString **)0;
-  __typeof__(([[NSString alloc] initWithCString:"blah"])) *str3 = (NSString**)0;
-
-  // Not inferred
-  __typeof__(([[NSString new] copy])) *id1 = (id*)0;
-
-  // Not inferred due to instance/class mismatches
-  __typeof__(([[NSString new] newNotInferred])) *id2 = (id*)0;
-  __typeof__(([[NSString new] alloc])) *id3 = (id*)0;
-  __typeof__(([NSString self])) *id4 = (id*)0;
-  __typeof__(([NSString initWithBlarg])) *id5 = (id*)0;
-
-  // Not inferred due to return type mismatch
-  __typeof__(([[NSString alloc] initAsUnrelated])) *unrelated = (Unrelated**)0;
-  __typeof__(([NSBlah newUnrelated])) *unrelated2 = (Unrelated**)0;
-
-  
-  NSArray *arr = [[NSMutableArray alloc] init];
-  NSMutableArray *marr = [arr retain]; // expected-warning{{incompatible pointer types initializing 'NSMutableArray *' with an expression of type 'NSArray *'}}
-}
-
- at implementation NSBlah
-+ (Unrelated *)newUnrelated {
-  return (Unrelated *)0;
-}
- at end
-
- at implementation NSBlah (Cat)
-+ (Unrelated *)newUnrelated2 {
-  return (Unrelated *)0;
-}
- at end
-
- at interface A
-- (id)initBlah; // expected-note 2{{overridden method is part of the 'init' method family}}
- at end
-
- at interface B : A
-- (Unrelated *)initBlah; // expected-warning{{method is expected to return an instance of its class type 'B', but is declared to return 'Unrelated *'}}
- at end
-
- at interface C : A
- at end
-
- at implementation C
-- (Unrelated *)initBlah {  // expected-warning{{method is expected to return an instance of its class type 'C', but is declared to return 'Unrelated *'}}
-  return (Unrelated *)0;
-}
- at end
-
- at interface D
-+ (id)newBlarg; // expected-note{{overridden method is part of the 'new' method family}}
- at end
-
- at interface D ()
-+ alloc; // expected-note{{overridden method is part of the 'alloc' method family}}
- at end
-
- at implementation D
-+ (Unrelated *)newBlarg { // expected-warning{{method is expected to return an instance of its class type 'D', but is declared to return 'Unrelated *'}}
-  return (Unrelated *)0;
-}
-
-+ (Unrelated *)alloc { // expected-warning{{method is expected to return an instance of its class type 'D', but is declared to return 'Unrelated *'}}
-  return (Unrelated *)0;
-}
- at end
-
- at protocol P1
-- (id)initBlah; // expected-note{{overridden method is part of the 'init' method family}}
-- (int)initBlarg;
- at end
-
- at protocol P2 <P1>
-- (int)initBlah; // expected-warning{{protocol method is expected to return an instance of the implementing class, but is declared to return 'int'}}
-- (int)initBlarg;
-- (int)initBlech;
- at end
-
- at interface E
-- init;
- at end
-
- at implementation E
-- init {
-  return self;
-}
- at end
-
- at protocol P3
-+ (NSString *)newString;
- at end
-
- at interface F<P3>
- at end
-
- at implementation F
-+ (NSString *)newString { return @"blah"; }
- at end
-
-// <rdar://problem/9340699>
- at interface G 
-- (id)_ABC_init __attribute__((objc_method_family(init))); // expected-note {{method '_ABC_init' declared here}}
- at end
-
- at interface G (Additions)
-- (id)_ABC_init2 __attribute__((objc_method_family(init)));
- at end
-
- at implementation G (Additions)
-- (id)_ABC_init { // expected-warning {{category is implementing a method which will also be implemented by its primary class}}
-  return 0;
-}
-- (id)_ABC_init2 {
-  return 0;
-}
-- (id)_ABC_init3 {
-  return 0;
-}
- at end
-
-// PR12384
- at interface Fail @end
- at protocol X @end
- at implementation Fail
-- (id<X>) initWithX
-{
-  return (id)self; // expected-warning {{casting 'Fail *' to incompatible type 'id<X>'}}
-}
- at end
-
-// <rdar://problem/11460990>
-
- at interface WeirdNSString : NSString
-- (id)initWithCString:(const char*)string, void *blah;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/restrict-id-type.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/restrict-id-type.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/restrict-id-type.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1  -std=gnu99 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-void f0(restrict id a0) {}
-
-void f1(restrict id *a0) {}
-
-void f2(restrict Class a0) {}
-
-void f3(restrict Class *a0) {}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/return.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/return.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/return.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wmissing-noreturn -fobjc-exceptions -Wno-objc-root-class %s
-
-int test1() {
-  id a;
-  @throw a;
-}
-
-// PR5286
-void test2(int a) {
-  while (1) {
-    if (a)
-      return;
-  }
-}
-
-// PR5286
-void test3(int a) {  // expected-warning {{function 'test3' could be declared with attribute 'noreturn'}}
-  while (1) {
-    if (a)
-      @throw (id)0;
-  }
-}
-
-// <rdar://problem/4289832> - This code always returns, we should not
-//  issue a noreturn warning.
- at class NSException;
- at class NSString;
-NSString *rdar_4289832() {  // no-warning
-    @try
-    {
-        return @"a";
-    }
-    @catch(NSException *exception)
-    {
-        return @"b";
-    }
-    @finally
-    {
-    }
-}
-
-void exit(int) __attribute__((noreturn));
- at interface rdar10098695
- at end
-
- at implementation rdar10098695
-- (void)method { // expected-warning{{method 'method' could be declared with attribute 'noreturn'}}
-  exit(1);
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/scope-check.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/scope-check.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/scope-check.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions -Wno-objc-root-class %s
-
- at class A, B, C;
-
-void test1() {
-  goto L; // expected-error{{goto into protected scope}}
-  goto L2; // expected-error{{goto into protected scope}}
-  goto L3; // expected-error{{goto into protected scope}}
-  @try {   // expected-note {{jump bypasses initialization of @try block}}
-L: ;
-  } @catch (A *x) { // expected-note {{jump bypasses initialization of @catch block}}
-L2: ;
-  } @catch (B *x) {
-  } @catch (C *c) {
-  } @finally {// expected-note {{jump bypasses initialization of @finally block}}
-L3: ;
-  }
-  
-  @try {
-    goto L4; // expected-error{{goto into protected scope}}
-    goto L5; // expected-error{{goto into protected scope}}
-  } @catch (C *c) { // expected-note {{jump bypasses initialization of @catch block}}
-  L5: ;
-    goto L6; // expected-error{{goto into protected scope}}
-  } @catch (B *c) { // expected-note {{jump bypasses initialization of @catch block}}
-  L6: ;
-  } @finally { // expected-note {{jump bypasses initialization of @finally block}}
-  L4: ;
-  }
- 
-  
-  @try { // expected-note 2 {{jump bypasses initialization of @try block}}
-  L7: ;
-  } @catch (C *c) {
-    goto L7; // expected-error{{goto into protected scope}}
-  } @finally {
-    goto L7; // expected-error{{goto into protected scope}}
-  }
-  
-  goto L8;  // expected-error{{goto into protected scope}}
-  @try { 
-  } @catch (A *c) {
-  } @catch (B *c) {
-  } @catch (C *c) { // expected-note {{jump bypasses initialization of @catch block}}
-  L8: ;
-  }
-  
-  // rdar://6810106
-  id X;
-  goto L9;    // expected-error{{goto into protected scope}}
-  goto L10;   // ok
-  @synchronized    // expected-note {{jump bypasses initialization of @synchronized block}}
-  ( ({ L10: ; X; })) {
-  L9:
-    ;
-  }
-}
-
-void test2(int a) {
-  if (a) goto L0;
-  @try {} @finally {}
- L0:
-  return;
-}
-
-// rdar://6803963
-void test3() {
-  @try {
-    goto blargh;
-  blargh: ;
-  } @catch (...) {}
-}
-
- at interface Greeter
-+ (void) hello;
- at end
-
- at implementation Greeter
-+ (void) hello {
-
-  @try {
-    goto blargh;     // expected-error {{goto into protected scope}}
-  } @catch (...) {   // expected-note {{jump bypasses initialization of @catch block}}
-  blargh: ;
-  }
-}
-
-+ (void)meth2 {
-    int n; void *P;
-    goto L0;     // expected-error {{goto into protected scope}}
-    typedef int A[n];  // expected-note {{jump bypasses initialization of VLA typedef}}
-  L0:
-    
-    goto L1;      // expected-error {{goto into protected scope}}
-    A b, c[10];        // expected-note 2 {{jump bypasses initialization of variable length array}}
-  L1:
-    goto L2;     // expected-error {{goto into protected scope}}
-    A d[n];      // expected-note {{jump bypasses initialization of variable length array}}
-  L2:
-    return;
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -verify %s 
-// expected-no-diagnostics
-
- at interface I
-- (id) compare: (char) arg1;
-- length;
- at end
-
- at interface J
-- (id) compare: (id) arg1;
- at end
-
-SEL func()
-{
-	return @selector(compare:);	// Non warning on multiple selector found.
-}
-
-int main() {
- SEL s = @selector(retain);
- SEL s1 = @selector(meth1:);
- SEL s2 = @selector(retainArgument::);
- SEL s3 = @selector(retainArgument:::::);
- SEL s4 = @selector(retainArgument:with:);
- SEL s5 = @selector(meth1:with:with:);
- SEL s6 = @selector(getEnum:enum:bool:);
- SEL s7 = @selector(char:float:double:unsigned:short:long:);
-
- SEL s9 = @selector(:enum:bool:);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-2.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-2.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-2.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wselector -verify %s
-// expected-no-diagnostics
-// rdar://8851684
- at interface  I
-- length;
- at end
-
-static inline SEL IsEmpty() {
-    return @selector(length);
-}
-
-int main (int argc, const char * argv[]) {
-    return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-3.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-3.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-3.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,83 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wselector -verify -Wno-objc-root-class %s
-// rdar://8851684
-
- at interface Foo
-- (void) foo;
-- (void) bar;
- at end
-
- at implementation Foo
-- (void) bar
-{
-}
-
-- (void) foo
-{
-  SEL a,b,c;
-  a = @selector(b1ar);  // expected-warning {{unimplemented selector 'b1ar'}}
-  b = @selector(bar);
-}
- at end
-
- at interface I
-- length;
- at end
-
-SEL func()
-{
-    return  @selector(length);  // expected-warning {{unimplemented selector 'length'}}
-}
-
-// rdar://9545564
- at class MSPauseManager;
-
- at protocol MSPauseManagerDelegate 
- at optional
-- (void)pauseManagerDidPause:(MSPauseManager *)manager;
-- (int)respondsToSelector:(SEL)aSelector;
- at end
-
- at interface MSPauseManager
-{
-  id<MSPauseManagerDelegate> _delegate;
-}
- at end
-
-
- at implementation MSPauseManager
-- (id) Meth {
-  if ([_delegate respondsToSelector:@selector(pauseManagerDidPause:)])
-    return 0;
-  return 0;
-}
- at end
-
-// rdar://12938616
- at class NSXPCConnection;
-
- at interface NSObject
- at end
-
- at interface INTF : NSObject
-{
-  NSXPCConnection *cnx; // Comes in as a parameter.
-}
-- (void) Meth;
- at end
-
-extern SEL MySelector(SEL s);
-
- at implementation INTF
-- (void) Meth {
-  if( [cnx respondsToSelector:MySelector(@selector( _setQueue: ))] ) // expected-warning {{unimplemented selector '_setQueue:'}} 
-  {
-  }
-
-  if( [cnx respondsToSelector:@selector( _setQueueXX: )] ) // No warning here.
-  {
-  }
-  if( [cnx respondsToSelector:(@selector( _setQueueXX: ))] ) // No warning here.
-  {
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-error.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-error.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-error.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface Foo
-- (char*) foo;
-- (void) bar;
- at end
-
- at implementation Foo
-- (void) bar
-{
-}
-
-- (char*) foo
-{
-  char* a,b,c;
-  a = (char*)@selector(bar);  // expected-error {{cannot type cast @selector expression}}
-  return (char*)@selector(bar);  // expected-error {{cannot type cast @selector expression}}
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-overload.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-overload.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/selector-overload.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only
-
- at interface NSObject
-+ alloc;
-- init;
- at end
-
-struct D {
-  double d;
-};
-
- at interface Foo : NSObject 
-
-- method:(int)a;
-- method:(int)a;
-
- at end
-
- at interface Bar : NSObject 
-
-- method:(void *)a;
-
- at end
-
- at interface Car : NSObject 
-
-- method:(struct D)a;
-
- at end
-
- at interface Zar : NSObject 
-
-- method:(float)a;
-
- at end
-
- at interface Rar : NSObject 
-
-- method:(float)a;
-
- at end
-
-int main() {
-  id xx = [[Car alloc] init]; // expected-warning {{incompatible types assigning 'int' to 'id'}}
-
-  [xx method:4];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/self-assign.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/self-assign.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/self-assign.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
- at interface A
- at end
-
- at implementation A
-- (id):(int)x :(int)y {
-    int z;
-    // <rdar://problem/8939352>
-    if (self = [self :x :y]) {} // expected-warning{{using the result of an assignment as a condition without parentheses}} \
-    // expected-note{{use '==' to turn this assignment into an equality comparison}} \
-    // expected-note{{place parentheses around the assignment to silence this warning}}
-    return self;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/self-declared-in-block.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/self-declared-in-block.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/self-declared-in-block.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin10  -fblocks -verify -Wno-objc-root-class %s 
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -triple x86_64-apple-darwin10  -fblocks -verify -Wno-objc-root-class %s 
-// expected-no-diagnostics
-// rdar://9154582
-
- at interface Blocky @end
-
- at implementation Blocky {
-    int _a;
-}
-- (int)doAThing {
-    ^{
-        char self;
-        return _a;
-    }();
-    return _a;
-}
-
- at end
-
-
-// rdar://9284603
- at interface ShadowSelf
-{
-    int _anIvar;
-}
- at end
-
- at interface C {
-  int _cIvar;
-}
- at end
-
- at implementation ShadowSelf 
-- (void)doSomething {
-    __typeof(self) newSelf = self;
-    {
-        __typeof(self) self = newSelf;
-        (void)_anIvar;
-    }
-    {
-      C* self;	
-      (void) _anIvar;
-    }
-}
-- (void)doAThing {
-    ^{
-        id self;
-	(void)_anIvar;
-    }();
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/self-in-function.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/self-in-function.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/self-in-function.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -fblocks -verify %s
-// expected-no-diagnostics
-// rdar://9181463
-
-typedef struct objc_class *Class;
-
-typedef struct objc_object {
-    Class isa;
-} *id;
-
- at interface NSObject
-+ (id) alloc;
- at end
-
-
-void foo(Class self) {
-  [self alloc];
-  (^() {
-    [self alloc];
-   })();
-}
-
-void bar(Class self) {
-  Class y = self;
-  [y alloc];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/setter-dotsyntax.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/setter-dotsyntax.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/setter-dotsyntax.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// rdar://8528170
-
- at interface NSObject @end
-
- at protocol MyProtocol
-- (int) level;
-- (void) setLevel:(int)inLevel;
- at end
-
- at interface MyClass : NSObject <MyProtocol>
- at end
-
-int main ()
-{
-    id<MyProtocol> c;
-    c.level = 10;
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/severe-syntax-error.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/severe-syntax-error.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/severe-syntax-error.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://10633434
-
- at interface testClass
- at end
-
- at class NSArray;
-
- at implementation testClass
-
-static NSArray* prefixArray[] = @"BEGIN:", @"END:", @"VERSION:", @"N:", @"FN:", @"TEL;", @"TEL:", nil; // expected-error {{array initializer must be an initializer list}} \
-												       // expected-error {{expected identifier or '('}} \
-												       // expected-error {{expected ';' after top level declarator}}
-
-static NSString* prefixArray1[] = @"BEGIN:", @"END:", @"VERSION:", @"N:", @"FN:", @"TEL;", @"TEL:", nil; // expected-error {{unknown type name 'NSString'}} \
-													 // expected-error {{expected identifier or '('}} \
-													 // expected-error {{expected ';' after top level declarator}}
-
-static char* cArray[] = "BEGIN:", "END";	// expected-error {{array initializer must be an initializer list}} \
-						// expected-error {{expected identifier or '('}} \
-						// expected-error {{expected ';' after top level declarator}}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/sizeof-interface.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/sizeof-interface.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/sizeof-interface.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s
-
- at class I0; // expected-note 2{{forward declaration of class here}}
-
-// rdar://6811884
-int g0 = sizeof(I0); // expected-error{{invalid application of 'sizeof' to an incomplete type 'I0'}}
-
-// rdar://6821047
-void *g3(I0 *P) {
-  P = P+5;        // expected-error {{arithmetic on a pointer to an incomplete type 'I0'}}
-
-  return &P[4];   // expected-error{{expected method to read array element not found on object of type 'I0 *'}}
-}
-
-
-
- at interface I0 {
- at public
-  char x[4];
-}
-
- at property int p0;
- at end
-
-// size == 4
-int g1[ sizeof(I0)     // expected-error {{application of 'sizeof' to interface 'I0' is not supported on this architecture and platform}}
-       == 4 ? 1 : -1];
-
- at implementation I0
- at synthesize p0 = _p0;
- at end
-
-// size == 4 (we do not include extended properties in the
-// sizeof).
-int g2[ sizeof(I0)   // expected-error {{application of 'sizeof' to interface 'I0' is not supported on this architecture and platform}}
-       == 4 ? 1 : -1];
-
- at interface I1
- at property int p0;
- at end
-
- at implementation I1
- at synthesize p0 = _p0;
- at end
-
-typedef struct { @defs(I1); } I1_defs; // expected-error {{use of @defs is not supported on this architecture and platform}}
-
-// FIXME: This is currently broken due to the way the record layout we
-// create is tied to whether we have seen synthesized properties. Ugh.
-// int g3[ sizeof(I1) == 0 ? 1 : -1];
-
-// rdar://6821047
-int bar(I0 *P) {
-  P = P+5;  // expected-error {{arithmetic on pointer to interface 'I0', which is not a constant size for this architecture and platform}}
-  P = 5+P;  // expected-error {{arithmetic on pointer to interface 'I0', which is not a constant size for this architecture and platform}}
-  P = P-5;  // expected-error {{arithmetic on pointer to interface 'I0', which is not a constant size for this architecture and platform}}
-  
-  return P[4].x[2];  // expected-error {{expected method to read array element not found on object of type 'I0 *'}}
-}
-
-
- at interface I @end
-
- at interface XCAttributeRunDirectNode
-{
-    @public
-    unsigned long attributeRuns[1024 + sizeof(I)]; // expected-error {{application of 'sizeof' to interface 'I' is not supported on this architecture and platform}}
-    int i;
-}
- at end
-
- at implementation XCAttributeRunDirectNode
-
-- (unsigned long)gatherStats:(id )stats
-{
-        return attributeRuns[i];
-}
- at end
-
-
- at interface Foo @end
-
-int foo()
-{
-  Foo *f;
-  
-  // Both of these crash clang nicely
-  ++f; 	// expected-error {{arithmetic on pointer to interface 'Foo', which is not a constant size for this architecture and platform}}
-  --f; 	// expected-error {{arithmetic on pointer to interface 'Foo', which is not a constant size for this architecture and platform}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/special-dep-unavail-warning.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/special-dep-unavail-warning.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/special-dep-unavail-warning.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://8769853
-
- at interface B
-- (void) depInA;
-- (void) unavailMeth __attribute__((unavailable)); // expected-note {{has been explicitly marked unavailable here}}
-- (void) depInA1 __attribute__((deprecated));
-- (void) unavailMeth1;
-- (void) depInA2 __attribute__((deprecated));
-- (void) unavailMeth2 __attribute__((unavailable)); // expected-note {{has been explicitly marked unavailable here}}
-- (void) depunavailInA;
-- (void) depunavailInA1 __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{has been explicitly marked unavailable here}}
-- (void)FuzzyMeth __attribute__((deprecated));
-- (void)FuzzyMeth1 __attribute__((unavailable));
- at end
-
- at interface A
-- (void) unavailMeth1 __attribute__((unavailable)); // expected-note {{has been explicitly marked unavailable here}}
-- (void) depInA __attribute__((deprecated));
-- (void) depInA2 __attribute__((deprecated));
-- (void) depInA1;
-- (void) unavailMeth2 __attribute__((unavailable)); 
-- (void) depunavailInA __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{has been explicitly marked unavailable here}}
-- (void) depunavailInA1;
-- (void)FuzzyMeth __attribute__((unavailable));
-- (void)FuzzyMeth1 __attribute__((deprecated));
- at end
-
-
- at class C;	// expected-note 5 {{forward declaration of class here}}
-
-void test(C *c) {
-  [c depInA]; // expected-warning {{'depInA' maybe deprecated because receiver type is unknown}}
-  [c unavailMeth]; // expected-warning {{'unavailMeth' maybe unavailable because receiver type is unknown}}
-  [c depInA1]; // expected-warning {{'depInA1' maybe deprecated because receiver type is unknown}}
-  [c unavailMeth1]; // expected-warning {{'unavailMeth1' maybe unavailable because receiver type is unknown}}
-  [c depInA2]; // expected-warning {{'depInA2' maybe deprecated because receiver type is unknown}}
-  [c unavailMeth2]; // expected-warning {{'unavailMeth2' maybe unavailable because receiver type is unknown}}
-  [c depunavailInA]; // expected-warning {{'depunavailInA' maybe unavailable because receiver type is unknown}} 
-  [c depunavailInA1];// expected-warning {{'depunavailInA1' maybe unavailable because receiver type is unknown}}
-  [c FuzzyMeth];      // expected-warning {{'FuzzyMeth' maybe deprecated because receiver type is unknown}}
-  [c FuzzyMeth1]; // expected-warning {{'FuzzyMeth1' maybe deprecated because receiver type is unknown}}
-
-}
-
-// rdar://10268422
-__attribute ((deprecated))
- at interface DEPRECATED // expected-note {{declared here}}
-+(id)new;
- at end
-
-void foo() {
-  [DEPRECATED new]; // expected-warning {{'DEPRECATED' is deprecated}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/stand-alone-implementation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/stand-alone-implementation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/stand-alone-implementation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// radar 7547942
-// Allow injection of ivars into implementation's implicit class.
-
- at implementation INTFSTANDALONE // expected-warning {{cannot find interface declaration for 'INTFSTANDALONE'}}
-{
-  id IVAR1;
-  id IVAR2;
-}
-- (id) Meth { return IVAR1; }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/static-ivar-ref-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/static-ivar-ref-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/static-ivar-ref-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -triple i386-unknown-unknown -ast-print %s 2>&1 | FileCheck  %s
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10  -ast-print %s  2>&1  | FileCheck %s
-
- at interface current 
-{
- at public
-  int ivar;
-  int ivar1;
-  int ivar2;
-}
- at end
-
-current *pc;
-
-int foo()
-{
-  return pc->ivar2 + (*pc).ivar + pc->ivar1;
-}
-
-// CHECK: @interface current{
-// CHECK:     int ivar;
-// CHECK:     int ivar1;
-// CHECK:     int ivar2;
-// CHECK: }
-// CHECK: @end
-// CHECK: current *pc;
-// CHECK: int foo() {
-// CHECK:     return pc->ivar2 + (*pc).ivar + pc->ivar1;
-// CHECK: }
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/stmts.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/stmts.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/stmts.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only -fobjc-exceptions
-
-struct some_struct;
-
- at interface NSObject
- at end
-
-// Note: NSException is not declared.
-void f0(id x) {
-  @try {
-  } @catch (NSException *x) { // expected-error {{unknown type name 'NSException'}}
-  } @catch (struct some_struct x) { // expected-error {{@catch parameter is not a pointer to an interface type}}
-  } @catch (int x) { // expected-error {{@catch parameter is not a pointer to an interface type}}
-  } @catch (static NSObject *y) { // expected-error {{@catch parameter cannot have storage specifier 'static'}}
-  } @catch (...) {
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/string.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/string.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/string.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// RUN: %clang_cc1 %s -verify -fsyntax-only -DDECLAREIT
-
-// a declaration of NSConstantString is not required.
-#ifdef DECLAREIT
- at interface NSConstantString;
- at end
-#endif
-
-
-
-id s = @"123"; // simple
-id t = @"123" @"456"; // concat
-id u = @"123" @ blah; // expected-error {{unexpected token}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/super-cat-prot.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/super-cat-prot.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/super-cat-prot.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject  - (BOOL)isEqual:(id)object; @end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder; @end
- at interface NSObject <NSObject> {} @end
-typedef float CGFloat;
-typedef struct _NSSize {} NSSize;
-typedef struct _NSRect {} NSRect;
- at interface NSResponder : NSObject <NSCoding> {} @end
- at protocol NSAnimatablePropertyContainer - (id)animator; @end
-extern NSString *NSAnimationTriggerOrderIn ;
- at interface NSView : NSResponder  <NSAnimatablePropertyContainer>  {} @end
- at class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView;
-enum { NSBoxPrimary = 0, NSBoxSecondary = 1, NSBoxSeparator = 2, NSBoxOldStyle = 3, NSBoxCustom = 4};
-typedef NSUInteger NSBoxType;
- at interface NSBox : NSView {} - (NSBoxType)boxType; @end
- at class NSArray, NSError, NSImage, NSView, NSNotificationCenter, NSURL;
- at interface NSProBox:NSBox {} @end
-enum IBKnobPosition { IBNoKnobPosition = -1, IBBottomLeftKnobPosition = 0, 
-                      IBMiddleLeftKnobPosition, IBTopLeftKnobPosition,
-                      IBTopMiddleKnobPosition, IBTopRightKnobPosition,
-                      IBMiddleRightKnobPosition, IBBottomRightKnobPosition, 
-                      IBBottomMiddleKnobPosition };
-typedef enum IBKnobPosition IBKnobPosition;
-typedef struct _IBInset {} IBInset;
- at protocol IBObjectProtocol -(NSString *)inspectorClassName; @end
- at protocol IBViewProtocol
-  -(NSSize)minimumFrameSizeFromKnobPosition:(IBKnobPosition)position;
-  -(IBInset)ibShadowInset;
- at end
- at class NSPasteboard;
- at interface NSObject (NSObject_IBObjectProtocol) <IBObjectProtocol> @end
- at interface NSView (NSView_IBViewProtocol) <IBViewProtocol>  - (NSRect)layoutRect; @end
-typedef enum { NSProTextFieldSquareBezel = 0, NSProTextFieldRoundedBezel = 1, NSProTextFieldDisplayBezel = 2 } MKModuleReusePolicy;
- at implementation NSProBox(IBAdditions)
--(NSString *)inspectorClassName { return 0; }
--(IBInset)ibShadowInset {
-  if ([self boxType] == NSBoxSeparator) {
-    return [super ibShadowInset];
-  }
-  while (1) {}
-}
--(NSSize)minimumFrameSizeFromKnobPosition:(IBKnobPosition)knobPosition {
-  if ([self boxType] != NSBoxSeparator)
-    return [super minimumFrameSizeFromKnobPosition:knobPosition];
-  while (1) {}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/super-class-protocol-conformance.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/super-class-protocol-conformance.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/super-class-protocol-conformance.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar://7884086
-
- at interface NSObject @end
-
- at protocol TopProtocol
-  @property (readonly) id myString; // expected-note {{property}}
- at end
-
- at protocol SubProtocol <TopProtocol>
- at end
-
- at interface TopClass : NSObject <TopProtocol> {}
- at end
-
- at interface SubClass : TopClass <SubProtocol> {}
- at end
-
- at interface SubClass1 : TopClass {}	
- at end
-
- at implementation SubClass1 @end // Test1 - No Warning
-
- at implementation TopClass  // expected-warning {{property 'myString' requires method 'myString' to be defined}}
- at end
-
- at implementation SubClass // Test3 - No Warning 
- at end
-
- at interface SubClass2  : TopClass<TopProtocol> 
- at end
-
- at implementation SubClass2 @end // Test 4 - No Warning
-
- at interface SubClass3 : TopClass<SubProtocol> @end
- at implementation SubClass3 @end	// Test 5 - No Warning 
-
- at interface SubClass4 : SubClass3 @end
- at implementation SubClass4 @end	// Test 5 - No Warning
-
- at protocol NewProtocol
-  @property (readonly) id myNewString;  // expected-note {{property}}
- at end
-
- at interface SubClass5 : SubClass4 <NewProtocol> @end
- at implementation SubClass5 @end   // expected-warning {{property 'myNewString' requires method 'myNewString' to be defined}}
-
-
-// Radar 8035776
- at protocol SuperProtocol
- at end
-
- at interface Super <SuperProtocol> 
- at end
-
- at protocol ProtocolWithProperty <SuperProtocol>
- at property (readonly, assign) id invalidationBacktrace; // expected-note {{property}}
- at end
-
- at interface INTF : Super <ProtocolWithProperty> 
- at end
-
- at implementation INTF @end // expected-warning{{property 'invalidationBacktrace' requires method 'invalidationBacktrace' to be defined}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/super-dealloc-attribute.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/super-dealloc-attribute.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/super-dealloc-attribute.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1  -fsyntax-only -fobjc-arc -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fobjc-arc -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://6386358
-
-#if __has_attribute(objc_requires_super)
-#define  NS_REQUIRES_SUPER __attribute((objc_requires_super))
-#endif
-
- at protocol NSObject // expected-note {{protocol is declared here}}
-- MyDealloc NS_REQUIRES_SUPER; // expected-warning {{'objc_requires_super' attribute cannot be applied to methods in protocols}}
- at end
-
- at interface Root
-- MyDealloc __attribute((objc_requires_super));
-- (void)XXX __attribute((objc_requires_super));
-- (void) dealloc __attribute((objc_requires_super)); // expected-warning {{'objc_requires_super' attribute cannot be applied to dealloc}}
-- (void) MyDeallocMeth; // Method in root is not annotated.
-- (void) AnnotMyDeallocMeth __attribute((objc_requires_super));
-- (void) AnnotMyDeallocMethCAT NS_REQUIRES_SUPER; 
-
-+ (void)registerClass:(id)name __attribute((objc_requires_super));
- at end
-
- at interface Baz : Root<NSObject>
-- MyDealloc;
-- (void) MyDeallocMeth __attribute((objc_requires_super)); // 'Baz' author has annotated method
-- (void) AnnotMyDeallocMeth; // Annotated in root but not here. Annotation is inherited though
-- (void) AnnotMeth __attribute((objc_requires_super)); // 'Baz' author has annotated method
- at end
-
- at implementation Baz
--  MyDealloc {
-   [super MyDealloc];
-        return 0;
-}
-
-- (void)XXX {
-  [super MyDealloc];
-} // expected-warning {{method possibly missing a [super XXX] call}}
-
-- (void) MyDeallocMeth {} // No warning here.
-- (void) AnnotMyDeallocMeth{} // expected-warning {{method possibly missing a [super AnnotMyDeallocMeth] call}}
-- (void) AnnotMeth{}; // No warning here. Annotation is in its class.
-
-+ (void)registerClass:(id)name {} // expected-warning {{method possibly missing a [super registerClass:] call}}
- at end
-
- at interface Bar : Baz
- at end
-
- at implementation Bar
-- (void) MyDeallocMeth {} // expected-warning {{method possibly missing a [super MyDeallocMeth] call}}
-- (void) AnnotMyDeallocMeth{} // expected-warning {{method possibly missing a [super AnnotMyDeallocMeth] call}}
-- (void) AnnotMeth{};  // expected-warning {{method possibly missing a [super AnnotMeth] call}}
- at end
-
- at interface Bar(CAT) 
-- (void) AnnotMyDeallocMethCAT; // Annotated in root but not here. Annotation is inherited though
-- (void) AnnotMethCAT __attribute((objc_requires_super));
- at end
-
- at implementation Bar(CAT)
-- (void) MyDeallocMeth {} // expected-warning {{method possibly missing a [super MyDeallocMeth] call}}
-- (void) AnnotMyDeallocMeth{} // expected-warning {{method possibly missing a [super AnnotMyDeallocMeth] call}}
-- (void) AnnotMeth{};  // expected-warning {{method possibly missing a [super AnnotMeth] call}}
-- (void) AnnotMyDeallocMethCAT{}; // expected-warning {{method possibly missing a [super AnnotMyDeallocMethCAT] call}}
-- (void) AnnotMethCAT {};
- at end
-
-
- at interface Valid : Baz
- at end
-
- at implementation Valid
-
-- (void)MyDeallocMeth {
-  [super MyDeallocMeth]; // no-warning
-}
-
-
-+ (void)registerClass:(id)name {
-  [super registerClass:name]; // no-warning
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/super-property-message-expr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/super-property-message-expr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/super-property-message-expr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface SStoreNodeInfo 
-
- at property(nonatomic,readonly,retain) id descriptionShort;
-
-- (id)stringByAppendingFormat:(int)format, ... ;
-
- at end
-
- at interface SStoreNodeInfo_iDisk : SStoreNodeInfo
-{
- at private
- id _etag;
-}
- at end
-
- at implementation SStoreNodeInfo_iDisk
-- (id) X { return [super.descriptionShort stringByAppendingFormat:1, _etag]; }
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/super-property-notation.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/super-property-notation.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/super-property-notation.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -verify %s
-
- at interface B
-+(int) classGetter;
--(int) getter;
- at end
-
- at interface A : B
- at end
-
- at implementation A
-+(int) classGetter {
-  return 0;
-}
-
-+(int) classGetter2 {
-  return super.classGetter;
-}
-
--(void) method {
-  int x = super.getter;
-}
- at end
-
-void f0() {
-  // FIXME: not implemented yet.
-  //int l1 = A.classGetter;
-  int l2 = [A classGetter2];
-}
-
-// rdar://13349296
-__attribute__((objc_root_class)) @interface ClassBase 
- at property (nonatomic, retain) ClassBase * foo;
- at end
-
- at implementation ClassBase 
-- (void) Meth:(ClassBase*)foo {
-  super.foo = foo; // expected-error {{'ClassBase' cannot use 'super' because it is a root class}}
-  [super setFoo:foo]; // expected-error {{'ClassBase' cannot use 'super' because it is a root class}}
-}
- at end
-
- at interface ClassDerived : ClassBase 
- at property (nonatomic, retain) ClassDerived * foo;
- at end
-
- at implementation ClassDerived
-- (void) Meth:(ClassBase*)foo {
-  super.foo = foo; // must work with no warning
-  [super setFoo:foo]; // works with no warning
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/super.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/super.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/super.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s
-
-void takevoidptr(void*);
-
-
- at interface Foo
-- iMethod;
-+ cMethod;
- at end
-
- at interface A
-+ superClassMethod;
-- (void)instanceMethod;
- at end
-
- at interface B : A
-- (void)instanceMethod;
-+ classMethod;
- at end
-
- at implementation B
-
-- (void)instanceMethod {
-  [super iMethod]; // expected-warning{{'A' may not respond to 'iMethod'}}
-  
-  // Use of super in a block is ok and does codegen to the right thing.
-  // rdar://7852959
-  takevoidptr(^{
-    [super instanceMethod];
-  });
-}
-
-+ classMethod {
-  [super cMethod]; // expected-warning{{method '+cMethod' not found (return type defaults to 'id')}}
-  
-  id X[] = { [ super superClassMethod] };
-  id Y[] = {
-    [ super.superClassMethod iMethod],
-    super.superClassMethod,
-    (id)super.superClassMethod  // not a cast of super: rdar://7853261
-  };
-  return 0;
-}
- at end
-
- at interface XX
-- m;
- at end
-
-void f(id super) {
-  [super m];
-}
-void f0(int super) {
-  [super m]; // expected-warning{{receiver type 'int' is not 'id'}}
-}
-void f1(id puper) {  // expected-note {{'puper' declared here}}
-  [super m]; // expected-error{{use of undeclared identifier 'super'}}
-}
-
-// radar 7400691
-typedef Foo super;
-
-typedef Foo FooTD;
-
-void test() {
-  [FooTD cMethod];
-  [super cMethod];
-}
-
-struct SomeStruct {
-  int X;
-};
-
-int test2() {
-  struct SomeStruct super = { 0 };
-  return super.X;
-}
-
-int test3() {
-  id super = 0;
-  [(B*)super instanceMethod];
-  int *s1 = (int*)super;
-  
-  id X[] = { [ super superClassMethod] };
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/synchronized.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/synchronized.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/synchronized.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at interface PBXTrackableTaskManager @end
-
- at implementation PBXTrackableTaskManager
-- (id) init { return 0; }
-- (void) unregisterTask:(id) task {
-  @synchronized (self) {
-  id taskID = [task taskIdentifier];  // expected-warning {{method '-taskIdentifier' not found (return type defaults to 'id')}}
-  }
-}
- at end
-
-
-struct x { int a; } b;
-
-void test1() {
-  @synchronized (b) {  // expected-error {{@synchronized requires an Objective-C object type ('struct x' invalid)}}
-  }
-
-  @synchronized (42) {  // expected-error {{@synchronized requires an Objective-C object type ('int' invalid)}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/synth-provisional-ivars-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/synth-provisional-ivars-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/synth-provisional-ivars-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://8913053
-
-typedef unsigned char BOOL;
-
- at interface MailApp
-{
-  BOOL _isAppleInternal;
-}
- at property(assign) BOOL isAppleInternal;
- at end
-
-static BOOL isAppleInternal() {return 0; }
-
- at implementation MailApp
-
-- (BOOL)isAppleInternal {
-    return _isAppleInternal;
-}
-
-- (void)setIsAppleInternal:(BOOL)flag {
-    _isAppleInternal= !!flag;
-}
-
-- (void) Meth {
-    self.isAppleInternal = isAppleInternal();
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/synth-provisional-ivars.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/synth-provisional-ivars.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/synth-provisional-ivars.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-
-int bar;
-
- at interface I
-{
-    int _bar;
-}
- at property int PROP;
- at property int PROP1;
- at property int PROP2;
- at property int PROP3;
- at property int PROP4;
-
- at property int bar;
- at property int bar1;
-
- at end
-
- at implementation I
-- (int) Meth { return _PROP; }
-
- at dynamic PROP1;
-- (int) Meth1 { return PROP1; }  // expected-error {{use of undeclared identifier 'PROP1'}}
-
-- (int) Meth2 { return PROP2; }  // expected-error {{use of undeclared identifier 'PROP2'}}
- at dynamic PROP2;
-
-- (int) Meth3 { return PROP3; }  // expected-error {{use of undeclared identifier 'PROP3'}}
- at synthesize PROP3=IVAR;
-
-- (int) Meth4 { return PROP4; }
- at synthesize PROP4=PROP4; // expected-note 4 {{'PROP4' declared here}}
-
-- (int) Meth5 { return bar; }
- at synthesize bar = _bar;
-
-- (int) Meth6 { return _bar1; }
-
- at end
-
- at implementation I(CAT)
-- (int) Meth { return PROP1; }  // expected-error {{use of undeclared identifier 'PROP1'}}
- at end
-
- at implementation I(r8251648)
-- (int) Meth1: (int) bar {
-  return bar;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/synthesize-setter-contclass.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/synthesize-setter-contclass.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/synthesize-setter-contclass.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface TestClass 
-{
- int _isItIsOrIsItAint;
-}
- at property (readonly) int itIsOrItAint;
--(void) doSomething;
- at end
-
- at interface TestClass()
- at property (readwrite) int itIsOrItAint;
- at end
-
- at implementation TestClass
- at synthesize itIsOrItAint = _isItIsOrIsItAint;
-
--(void) doSomething
-{
-  int i = [self itIsOrItAint];
-
- [self setItIsOrItAint:(int)1];
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/synthesized-ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/synthesized-ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/synthesized-ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
- at interface I
-{
-}
- at property int IP;
- at end
-
- at implementation I
- at synthesize IP;
-- (int) Meth {
-   return IP;
-}
- at end
-
-// rdar://7823675
-int f0(I *a) { return a->IP; } // expected-error {{instance variable 'IP' is private}}
-
-// rdar://8769582
-
- at interface I1 {
- int protected_ivar;
-}
- at property int PROP_INMAIN;
- at end
-
- at interface I1() {
- int private_ivar;
-}
- at property int PROP_INCLASSEXT;
- at end
-
- at implementation I1
-- (int) Meth {
-   _PROP_INMAIN = 1;
-   _PROP_INCLASSEXT = 2;
-   protected_ivar = 1;	// OK
-   return private_ivar; // OK
-}
- at end
-
-
- at interface DER : I1
- at end
-
- at implementation DER
-- (int) Meth {
-   protected_ivar = 1;	// OK
-   _PROP_INMAIN = 1; // expected-error {{instance variable '_PROP_INMAIN' is private}}
-   _PROP_INCLASSEXT = 2; // expected-error {{instance variable '_PROP_INCLASSEXT' is private}}
-   return private_ivar; // expected-error {{instance variable 'private_ivar' is private}}
-}
- at end
-
- at interface A
- at property (weak) id testObjectWeakProperty; // expected-note {{declared here}}
- at end
-
- at implementation A
-// rdar://9605088
- at synthesize testObjectWeakProperty; // expected-error {{@synthesize of 'weak' property is only allowed in ARC or GC mode}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/tentative-property-decl.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/tentative-property-decl.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/tentative-property-decl.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Weverything -verify %s
-// rdar://11656982
-/** Normally, a property cannot be both 'readonly' and having a "write" attribute
-    (copy/retain/etc.). But, property declaration in primary class and protcols
-    are tentative as they may be overridden into a 'readwrite' property in class 
-    extensions. Postpone diagnosing such warnings until the class implementation 
-    is seen.
-*/
-
- at interface Super {
-}
- at end
-
- at class NSString;
-
- at interface MyClass : Super
- at property(nonatomic, copy, readonly) NSString *prop;
- at property(nonatomic, copy, readonly) id warnProp; // expected-warning {{property attributes 'readonly' and 'copy' are mutually exclusive}}
- at end
-
- at interface MyClass ()
- at property(nonatomic, copy, readwrite) NSString *prop;
- at end
-
- at implementation MyClass
- at synthesize prop;
- at synthesize warnProp;
- at end
-
-
- at protocol P
- at property(nonatomic, copy, readonly) NSString *prop;
- at property(nonatomic, copy, readonly) id warnProp; // expected-warning {{property attributes 'readonly' and 'copy' are mutually exclusive}}
- at end
-
- at interface YourClass : Super <P>
- at end
-
- at interface YourClass ()
- at property(nonatomic, copy, readwrite) NSString *prop;
- at end
-
- at implementation YourClass 
- at synthesize prop;
- at synthesize warnProp;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/transparent-union.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/transparent-union.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/transparent-union.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
-typedef union {
- struct xx_object_s *_do;
- struct xx_continuation_s *_dc;
- struct xx_queue_s *_dq;
- struct xx_queue_attr_s *_dqa;
- struct xx_group_s *_dg;
- struct xx_source_s *_ds;
- struct xx_source_attr_s *_dsa;
- struct xx_semaphore_s *_dsema;
-} xx_object_t __attribute__((transparent_union));
-
- at interface INTF
-- (void) doSomething : (xx_object_t) xxObject;
-- (void)testMeth;
- at end
-
- at implementation INTF
-- (void) doSomething : (xx_object_t) xxObject {}
-- (void)testMeth { struct xx_queue_s *sq; [self doSomething:sq ]; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/try-catch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/try-catch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/try-catch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions %s
-typedef signed char BOOL;
-typedef struct _NSZone NSZone;
-
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
- at end
-
- at protocol NSCopying
-- (id)copyWithZone:(NSZone *)zone;
- at end
-
- at protocol NSCoding
-- (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
-
- at interface NSObject <NSObject> {}
- at end
-
- at class NSData, NSArray, NSDictionary, NSCharacterSet, NSData, NSURL, NSError, NSLocale;
-
- at interface NSException : NSObject <NSCopying, NSCoding> {}
- at end
-
- at class ASTNode, XCRefactoringParser, Transform, TransformInstance, XCRefactoringSelectionInfo;
-
- at interface XCRefactoringTransformation : NSObject {}
- at end
-
- at implementation XCRefactoringTransformation
-- (NSDictionary *)setUpInfoForTransformKey:(NSString *)transformKey outError:(NSError **)outError {
-    @try {}
-    // the exception name is optional (weird)
-    @catch (NSException *) {}
-}
- at end
-
-int foo() {
-  struct s { int a, b; } agg, *pagg;
-
-  @throw 42; // expected-error {{@throw requires an Objective-C object type ('int' invalid)}}
-  @throw agg; // expected-error {{@throw requires an Objective-C object type ('struct s' invalid)}}
-  @throw pagg; // expected-error {{@throw requires an Objective-C object type ('struct s *' invalid)}}
-  @throw; // expected-error {{@throw (rethrow) used outside of a @catch block}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/typedef-class.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/typedef-class.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/typedef-class.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
-
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
-
- at protocol NSObject - (BOOL) isEqual:(id) object; - (id)init; @end
- at protocol NSCopying - (id) copyWithZone:(NSZone *) zone; @end
- at protocol NSCoding - (void) encodeWithCoder:(NSCoder *) aCoder; @end
-
- at interface NSObject < NSObject > {}
-+(id) alloc;
- at end
-
-typedef float CGFloat;
-
- at interface NSTask:NSObject
-- (id) init;
- at end
-
-typedef NSUInteger NSControlSize;
-typedef struct __CFlags {} _CFlags;
-
- at interface NSCell:NSObject < NSCopying, NSCoding > {}
- at end
-
- at interface NSActionCell:NSCell {} @end
-
- at class NSAttributedString, NSFont, NSImage, NSSound;
-
-typedef struct _XCElementInset {} XCElementInset;
-
- at protocol XCElementP < NSObject >
--(BOOL) vertical;
- at end
-
- at protocol XCElementDisplayDelegateP;
- at protocol XCElementDisplayDelegateP < NSObject >
--(void) configureForControlSize:(NSControlSize)size font:(NSFont *)font addDefaultSpace:(XCElementInset) additionalSpace;
- at end
-
- at protocol XCElementSpacerP < XCElementP >
- at end
-
-typedef NSObject < XCElementSpacerP > XCElementSpacer;
-
- at protocol XCElementTogglerP < XCElementP > -(void) setDisplayed:(BOOL) displayed;
- at end
-
-typedef NSObject < XCElementTogglerP > XCElementToggler; // expected-note {{previous definition is here}}
-
- at interface XCElementRootFace:NSObject {} @end
-
- at interface XCElementFace:XCElementRootFace {} @end
-
- at class XCElementToggler;  // expected-warning {{redefinition of forward class 'XCElementToggler' of a typedef name of an object type is ignored}}
-
- at interface XCRASlice:XCElementFace {} @end
-
- at class XCElementSpacings;
-
- at interface XCElementDisplay:NSObject < XCElementDisplayDelegateP > {} @end
- at interface XCElementDisplayRect:XCElementDisplay {} @end
-
-typedef XCElementDisplayRect XCElementGraphicsRect;
-
- at interface XCElementDisplayFillerImage:XCElementDisplay {} @end
-
- at implementation XCRASlice
-- (void) addSliceWithLabel:(NSString *)label statusKey:(NSString *)statusKey disclosed:(BOOL)disclosed
-{
-  static XCElementGraphicsRect *_sGraphicsDelegate = ((void *) 0);
-  if (!_sGraphicsDelegate) {
-    _sGraphicsDelegate =[[XCElementGraphicsRect alloc] init]; 
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/typo-correction.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/typo-correction.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/typo-correction.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-
- at interface B
- at property int x;
- at end
-
- at interface S : B
- at end
-
-// Spell-checking 'undefined' is ok.
-undefined var; // expected-error {{unknown type name}}
-
-typedef int super1;
- at implementation S
--(void)foo {
-  // Spell-checking 'super' is not ok.
-  super.x = 0;
-  self.x = 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/ucn-objc-string.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/ucn-objc-string.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/ucn-objc-string.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -verify -fsyntax-only
-// expected-no-diagnostics
- at class NSString;
-extern void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
-
-int main() {
-  NSLog(@"Hi…");
-  NSLog(@"Exposé");
-  NSLog(@"\U00010400\U0001D12B");
-  NSLog(@"hello \u2192 \u2603 \u2190 world");
-  NSLog(@"hello → ☃ ← world");
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/undeclared-selector.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/undeclared-selector.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/undeclared-selector.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wundeclared-selector -verify -Wno-objc-root-class %s
-
-typedef struct objc_selector *SEL;
-
- at interface MyClass
-
-+ (void) methodA;
-- (void) methodB;
-+ (void) methodD;
-- (void) methodF;
-
- at end
-
- at implementation MyClass
-
-+ (void) methodA {}
-- (void) methodB {}
-+ (void) methodD
-{
-  SEL d = @selector(methodD); /* Ok */
-  SEL e = @selector(methodE);
-}
-
-- (void) methodE
-{
-  SEL e = @selector(methodE); /* Ok */
-}
-
-- (void) methodF
-{
-  SEL e = @selector(methodE); /* Ok */
-}
-
- at end
-
-int main (void)
-{
-  SEL a = @selector(methodA); /* Ok */
-  SEL b = @selector(methodB); /* Ok */
-  SEL c = @selector(methodC);  // expected-warning {{undeclared selector 'methodC'}}
-  SEL d = @selector(methodD); /* Ok */
-  SEL e = @selector(methodE); /* Ok */
-  return 0;
-  
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-class-messagin-error.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-class-messagin-error.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-class-messagin-error.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface _Child // expected-note{{'_Child' declared here}}
-+ (int) flashCache;
- at end
-
- at interface Child (Categ) // expected-error {{cannot find interface declaration for 'Child'; did you mean '_Child'?}}
-+ (int) flushCache2;
- at end
-
- at implementation OtherChild (Categ) // expected-error {{cannot find interface declaration for 'OtherChild'}}
-+ (int) flushCache2 { [super flashCache]; } // expected-error {{no @interface declaration found in class messaging of 'flushCache2'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-protocol-methods-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-protocol-methods-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-protocol-methods-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at protocol P1
-- (void) P1proto;  // expected-note {{method 'P1proto' declared here}}
-+ (void) ClsP1Proto;    // expected-note {{method 'ClsP1Proto' declared here}}
-- (void) DefP1proto;
- at end
- at protocol P2
-- (void) P2proto;   // expected-note {{method 'P2proto' declared here}}
-+ (void) ClsP2Proto;  // expected-note {{method 'ClsP2Proto' declared here}}
- at end
-
- at protocol P3<P2>
-- (void) P3proto;   // expected-note {{method 'P3proto' declared here}}
-+ (void) ClsP3Proto;   // expected-note {{method 'ClsP3Proto' declared here}}
-+ (void) DefClsP3Proto;
- at end
-
- at protocol PROTO<P1, P3>
-- (void) meth;		  // expected-note {{method 'meth' declared here}}
-- (void) meth : (int) arg1;   // expected-note {{method 'meth:' declared here}}
-+ (void) cls_meth : (int) arg1;   // expected-note {{method 'cls_meth:' declared here}}
- at end
-
- at interface INTF <PROTO> // expected-note 3 {{required for direct or indirect protocol 'PROTO'}} \
-			// expected-note 2 {{required for direct or indirect protocol 'P1'}} \
-			// expected-note 2 {{required for direct or indirect protocol 'P3'}} \
-			// expected-note 2 {{required for direct or indirect protocol 'P2'}}
- at end
-
- at implementation INTF // expected-warning 9 {{in protocol not implemented}}
-- (void) DefP1proto{}
-+ (void) DefClsP3Proto{}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-superclass-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-superclass-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/undef-superclass-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
- at class SUPER, Y; // expected-note 2 {{forward declaration of class here}}
-
- at interface INTF :SUPER  // expected-error {{attempting to use the forward class 'SUPER' as superclass of 'INTF'}}
- at end
-
- at interface SUPER @end
-
- at interface INTF1 : SUPER  // expected-note {{previous definition is here}}
- at end
-
- at interface INTF2 : INTF1
- at end
-
- at interface INTF3 : Y // expected-error {{attempting to use the forward class 'Y' as superclass of 'INTF3'}} \
-                     // expected-note{{'INTF3' declared here}}
- at end
-
- at interface INTF1  // expected-error {{duplicate interface definition for class 'INTF1'}}
- at end
-
- at implementation SUPER
-- (void)dealloc {
-    [super dealloc]; // expected-error {{'SUPER' cannot use 'super' because it is a root class}}
-}
- at end
-
- at interface RecursiveClass : RecursiveClass // expected-error {{trying to recursively use 'RecursiveClass' as superclass of 'RecursiveClass'}}
- at end
-
- at implementation RecursiveClass
- at end
-
- at implementation iNTF3 // expected-warning{{cannot find interface declaration for 'iNTF3'; did you mean 'INTF3'?}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/undefined-protocol-type-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/undefined-protocol-type-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/undefined-protocol-type-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol p1, p4;
- at protocol p2 @end
-
- at interface T
-- (T<p2, p3, p1, p4>*) meth;  // expected-error {{cannot find protocol declaration for 'p3'}}
-- (T<p2, p3, p1, p4>*) meth1;  // expected-error {{cannot find protocol declaration for 'p3'}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/unimplemented-protocol-prop.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/unimplemented-protocol-prop.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/unimplemented-protocol-prop.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-
- at protocol PROTOCOL0
- at required
- at property float MyProperty0; // expected-note 2 {{property declared}}
- at end
-
- at protocol PROTOCOL<PROTOCOL0>
- at required
- at property float MyProperty; // expected-note 2 {{property declared}}
- at optional
- at property float OptMyProperty;
- at end
-
- at interface I <PROTOCOL>
- at end
-
- at implementation I @end // expected-warning {{property 'MyProperty0' requires method 'MyProperty0' to be defined}} \
-                       // expected-warning {{property 'MyProperty0' requires method 'setMyProperty0:' to be defined}}\
-                       // expected-warning {{property 'MyProperty' requires method 'MyProperty' to be defined}} \
-                       // expected-warning {{property 'MyProperty' requires method 'setMyProperty:' to be defined}}
-
-// rdar://10120691
-// property is implemented in super class. No warning
-
- at protocol PROTOCOL1
- at property int MyProp;
- at end
-
- at interface superclass
- at property int MyProp;
- at end
-
- at interface childclass : superclass <PROTOCOL1>
- at end
-
- at implementation childclass
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/uninit-variables.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/uninit-variables.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/uninit-variables.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -fsyntax-only -fblocks %s -verify
-
-#include <stdarg.h>
-
- at interface NSObject {} @end
- at class NSString;
-
- at interface NSException
-+ (void)raise:(NSString *)name format:(NSString *)format, ...;
-+ (void)raise:(NSString *)name format:(NSString *)format arguments:(va_list)argList;
-- (void)raise;
- at end
-
-// Duplicated from uninit-variables.c.
-// Test just to ensure the analysis is working.
-int test1() {
-  int x; // expected-note{{initialize the variable 'x' to silence this warning}}
-  return x; // expected-warning{{variable 'x' is uninitialized when used here}}
-}
-
-// Test ObjC fast enumeration.
-void test2() {
-  id collection = 0;
-  for (id obj in collection) {
-    if (0 == obj) // no-warning
-      break;
-  }
-}
-
-void test3() {
-  id collection = 0;
-  id obj;
-  for (obj in collection) { // no-warning
-    if (0 == obj) // no-warning
-      break;
-  }
-}
-
-int test_abort_on_exceptions(int y, NSException *e, NSString *s, int *z, ...) {
-  int x; // expected-note {{initialize the variable 'x' to silence this warning}}
-  if (y == 1) {
-    va_list alist;
-    va_start(alist, z);
-    [NSException raise:@"Blah" format:@"Blah %@" arguments:alist];
-    return x;
-  }
-  else if (y == 2) {
-	[NSException raise:@"Blah" format:s];
-	return x;  
-  }
-  else if (y == 3) {
-	[e raise];
-	return x;
-  }
-  return x; // expected-warning {{variable 'x' is uninitialized when used here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/unknown-anytype.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/unknown-anytype.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/unknown-anytype.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -funknown-anytype -fsyntax-only -fdebugger-support -verify %s
-
-extern __unknown_anytype test0;
-extern __unknown_anytype test1();
-
- at interface A
-- (int*)getIntPtr;
-- (double*)getSomePtr;
- at end
-
- at interface B
-- (float*)getFloatPtr;
-- (short*)getSomePtr;
- at end
-
-void test_unknown_anytype_receiver() {
-  int *ip = [test0 getIntPtr];
-  float *fp = [test1() getFloatPtr];
-  double *dp = [test1() getSomePtr]; // okay: picks first method found
-  [[test0 unknownMethod] otherUnknownMethod]; // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}}
-  (void)(int)[[test0 unknownMethod] otherUnknownMethod];;
-  [[test1() unknownMethod] otherUnknownMethod]; // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}}
-  (void)(id)[[test1() unknownMethod] otherUnknownMethod];
-
-  if ([[test0 unknownMethod] otherUnknownMethod]) { // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}}
-  }
-  if ([[test1() unknownMethod] otherUnknownMethod]) { // expected-error{{no known method '-otherUnknownMethod'; cast the message send to the method's return type}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/unqualified-to-qualified-class-warn.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/unqualified-to-qualified-class-warn.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/unqualified-to-qualified-class-warn.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// rdar://9091389
-
- at protocol Fooable
-- (void)foo;
- at end
-
- at protocol SubFooable <Fooable>
- at end
-
- at interface AClass
- at end
-
- at interface BClass : AClass <SubFooable>
- at end
-
- at implementation BClass
-- (void)foo {
-}
- at end
-
-void functionTakingAClassConformingToAProtocol(AClass <Fooable> *instance) { // expected-note {{passing argument to parameter 'instance' here}}
-}
-
-int main () {
-    AClass *aobject = 0;
-    BClass *bobject = 0;
-    functionTakingAClassConformingToAProtocol(aobject);  // expected-warning {{incompatible pointer types passing 'AClass *' to parameter of type 'AClass<Fooable> *'}}
-    functionTakingAClassConformingToAProtocol(bobject); // Shouldn't warn -  does implement Fooable
-    return 0;
-}
-
-// rdar://9267196
- at interface NSObject @end
-
- at protocol MyProtocol
- at end
-
- at interface MyClass : NSObject 
-{
-}
- at end
-
- at implementation MyClass
- at end
-
- at interface MySubclass : MyClass <MyProtocol> 
-{
-}
- at end
-
- at interface MyTestClass : NSObject
-{
- at private
-	NSObject <MyProtocol> *someObj;
-}
-
- at property (nonatomic, assign) NSObject <MyProtocol> *someObj;
-
- at end
-
- at implementation MyTestClass
-
- at synthesize someObj;
-
-- (void)someMethod
-{
-	MySubclass *foo;
-	[self setSomeObj:foo]; // no warning here!
-}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/unused.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/unused.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/unused.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -verify -Wused-but-marked-unused -Wno-objc-protocol-method-implementation -Wunused -Wunused-parameter -fsyntax-only -Wno-objc-root-class %s
-
-int printf(const char *, ...);
-
- at interface Greeter
-+ (void) hello;
- at end
-
- at implementation Greeter
-+ (void) hello { printf("Hello, World!\n"); }
- at end
-
-int test1(void) {
-  [Greeter hello];
-  return 0;
-}
-
- at interface NSObject @end
- at interface NSString : NSObject 
-- (int)length;
- at end
-
-void test2() {
-  @"pointless example call for test purposes".length; // expected-warning {{property access result unused - getters should not be used for side effects}}
-}
-
- at interface foo
-- (int)meth: (int)x : (int)y : (int)z ;
- at end
-
- at implementation foo
-- (int) meth: (int)x: // expected-warning {{'x' used as the name of the previous parameter rather than as part of the selector}} \
-                      // expected-note {{introduce a parameter name to make 'x' part of the selector}} \
-                      // expected-note {{or insert whitespace before ':' to use 'x' as parameter name and have an empty entry in the selector}}
-
-(int)y:  // expected-warning {{unused}}  expected-warning {{'y' used as the name of the previous parameter rather than as part of the selector}} \
-         // expected-note {{introduce a parameter name to make 'y' part of the selector}} \
-         // expected-note {{or insert whitespace before ':' to use 'y' as parameter name and have an empty entry in the selector}}
-(int) __attribute__((unused))z { return x; }
- at end
-
-//===------------------------------------------------------------------------===
-// The next test shows how clang accepted attribute((unused)) on ObjC
-// instance variables, which GCC does not.
-//===------------------------------------------------------------------------===
-
-#if __has_feature(attribute_objc_ivar_unused)
-#define UNUSED_IVAR __attribute__((unused))
-#else
-#error __attribute__((unused)) not supported on ivars
-#endif
-
- at interface TestUnusedIvar {
-  id y __attribute__((unused)); // no-warning
-  id x UNUSED_IVAR; // no-warning
-}
- at end
-
-// rdar://10777111
-static NSString *x = @"hi"; // expected-warning {{unused variable 'x'}}
-
-// rdar://12233989
- at interface TestTransitiveUnused
-- (void) a __attribute__((unused));
-- (void) b __attribute__((unused));
- at end
-
- at interface TestTransitiveUnused(CAT)
- at end
-
- at implementation TestTransitiveUnused(CAT)
-- (void) b {}
-- (void) a { [self b]; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/va-method-1.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/va-method-1.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/va-method-1.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-#include <stdarg.h>
-
- at interface NSObject @end
- at interface XX : NSObject @end
-
- at implementation XX
-- (void)encodeValuesOfObjCTypes:(const char *)types, ... {
-   va_list ap;
-   va_start(ap, types); 
-   while (*types) ;
-   va_end(ap);
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-assign-property-nscopying.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-assign-property-nscopying.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-assign-property-nscopying.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1  -fobjc-gc -fsyntax-only -verify %s
-// RUN: %clang_cc1  -x objective-c++ -fobjc-gc -fsyntax-only -verify %s
-
- at protocol NSCopying @end
-
- at interface NSObject <NSCopying>
- at end
-
- at interface NSDictionary : NSObject
- at end
-
- at interface INTF
-  @property NSDictionary* undoAction;  // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}} // expected-warning {{default assign attribute on property 'undoAction' which implements NSCopying protocol is not appropriate with}}
-  @property id okAction;  // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-cast-of-sel-expr.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-cast-of-sel-expr.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-cast-of-sel-expr.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-unused-value %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wcast-of-sel-type -Wno-unused-value %s
-// rdar://12107381
-
-SEL s;
-
-SEL sel_registerName(const char *);
-
-int main() {
-(char *)s;  // expected-warning {{cast of type 'SEL' to 'char *' is deprecated; use sel_getName instead}}
-(void *)s;  // ok
-(const char *)sel_registerName("foo");  // expected-warning {{cast of type 'SEL' to 'const char *' is deprecated; use sel_getName instead}}
-
-(const void *)sel_registerName("foo");  // ok
-
-(void) s;   // ok
-
-(void *const)s; // ok
-
-(const void *const)s; // ok
-
-// rdar://12859590
-(SEL)sel_registerName("foo");  // ok
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-deprecated-implementations.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-deprecated-implementations.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-deprecated-implementations.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wdeprecated-implementations -verify -Wno-objc-root-class %s
-// rdar://8973810
-// rdar://12717705
-
- at protocol P
-- (void) D __attribute__((deprecated)); // expected-note {{method 'D' declared here}}
- at end
-
- at interface A <P>
-+ (void)F __attribute__((deprecated));
- at end
-
- at interface A()
-- (void) E __attribute__((deprecated)); // expected-note {{method 'E' declared here}}
- at end
-
- at implementation A
-+ (void)F { }	// No warning, implementing its own deprecated method
-- (void) D {} //  expected-warning {{Implementing deprecated method}}
-- (void) E {} //  expected-warning {{Implementing deprecated method}}
- at end
-
- at interface A(CAT)
-- (void) G __attribute__((deprecated)); 
- at end
-
- at implementation A(CAT)
-- (void) G {} 	// No warning, implementing its own deprecated method
- at end
-
-__attribute__((deprecated))
- at interface CL // expected-note 2 {{class declared here}} // expected-note 2 {{declared here}}
- at end
-
- at implementation CL // expected-warning {{Implementing deprecated class}}
- at end
-
- at implementation CL ( SomeCategory ) // expected-warning {{'CL' is deprecated}} \
-                                    // expected-warning {{Implementing deprecated category}}
- at end
-
- at interface CL_SUB : CL // expected-warning {{'CL' is deprecated}}
- at end
-
- at interface BASE
-- (void) B __attribute__((deprecated)); // expected-note {{method 'B' declared here}}
- at end
-
- at interface SUB : BASE
- at end
-
- at implementation SUB
-- (void) B {} // expected-warning {{Implementing deprecated method}}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-direct-ivar-access.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-direct-ivar-access.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-direct-ivar-access.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak  -fobjc-default-synthesize-properties -Wdirect-ivar-access -verify -Wno-objc-root-class %s
-// rdar://6505197
-
-__attribute__((objc_root_class)) @interface MyObject {
- at public
-    id _myMaster;
-    id _isTickledPink; // expected-error {{existing instance variable '_isTickledPink' for property 'isTickledPink'}}
-    int _myIntProp;
-}
- at property(retain) id myMaster;
- at property(assign) id isTickledPink; // expected-note {{property declared here}}
- at property int myIntProp;
- at end
-
- at implementation MyObject
-
- at synthesize myMaster = _myMaster;
- at synthesize isTickledPink = _isTickledPink; // expected-note {{property synthesized here}}
- at synthesize myIntProp = _myIntProp;
-
-- (void) doSomething {
-    _myMaster = _isTickledPink; // expected-warning {{instance variable '_myMaster' is being directly accessed}} \
-    // expected-warning {{instance variable '_isTickledPink' is being directly accessed}}
-}
-
-- (id) init {
-    _myMaster=0;
-    return _myMaster;
-}
-- (void) dealloc { _myMaster = 0; }
- at end
-
-MyObject * foo ()
-{
-	MyObject* p=0;
-        p.isTickledPink = p.myMaster;	// ok
-	p->_isTickledPink = (*p)._myMaster; // expected-warning {{instance variable '_isTickledPink' is being directly accessed}} \
-        // expected-warning {{instance variable '_myMaster' is being directly accessed}}
-        if (p->_myIntProp) // expected-warning {{instance variable '_myIntProp' is being directly accessed}}
-          p->_myIntProp = 0; // expected-warning {{instance variable '_myIntProp' is being directly accessed}}
-	return p->_isTickledPink; // expected-warning {{instance variable '_isTickledPink' is being directly accessed}}
-}
-
- at interface ITest32 {
- at public
- id ivar;
-}
- at end
-
-id Test32(__weak ITest32 *x) {
-  __weak ITest32 *y;
-  x->ivar = 0; // expected-error {{dereferencing a __weak pointer is not allowed}}
-  return y ? y->ivar     // expected-error {{dereferencing a __weak pointer is not allowed}}
-           : (*x).ivar;  // expected-error {{dereferencing a __weak pointer is not allowed}}
-}
-
-// rdar://13142820
- at protocol PROTOCOL
- at property (copy, nonatomic) id property_in_protocol;
- at end
-
-__attribute__((objc_root_class)) @interface INTF <PROTOCOL>
- at property (copy, nonatomic) id foo;
-- (id) foo;
- at end
-
- at interface INTF()
- at property (copy, nonatomic) id foo1;
-- (id) foo1;
- at end
-
- at implementation INTF
-- (id) foo { return _foo; }
-- (id) property_in_protocol { return _property_in_protocol; } // expected-warning {{instance variable '_property_in_protocol' is being directly accessed}}
-- (id) foo1 { return _foo1; }
- at synthesize property_in_protocol = _property_in_protocol;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-forward-class-attr-deprecated.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-forward-class-attr-deprecated.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-forward-class-attr-deprecated.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://10290322
-
- at class ABGroupImportFilesScope; // expected-note {{forward declaration of class here}}
-
- at interface I1
-- (id) filenames __attribute__((deprecated));
- at end
-
- at interface I2
-- (id) Meth : (ABGroupImportFilesScope*) scope;
-- (id) filenames __attribute__((deprecated));
-- (id)initWithAccount: (id)account filenames:(id)filenames;
- at end
-
- at implementation I2
-- (id) Meth : (ABGroupImportFilesScope*) scope
-{
-  id p =  [self initWithAccount : 0 filenames :[scope filenames]]; // expected-warning {{'filenames' maybe deprecated because receiver type is unknown}}
-  return 0;
-}
-- (id) filenames { return 0; }
-- (id)initWithAccount: (id)account filenames:(id)filenames { return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-implicit-atomic-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-implicit-atomic-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-implicit-atomic-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wimplicit-atomic-properties -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s
-// rdar://8774580
-
- at interface Super
- at property (nonatomic, readwrite) int P; // OK
- at property (atomic, readwrite) int P1; // OK
- at property (readwrite) int P2; // expected-note {{property declared here}}
- at property int P3; // expected-note {{property declared here}}
- at end
-
- at implementation Super // expected-warning {{property is assumed atomic when auto-synthesizing the property}}
- at synthesize P,P1,P2; // expected-warning {{property is assumed atomic by default}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-implicit-self-in-block.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-implicit-self-in-block.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-implicit-self-in-block.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -x objective-c -fobjc-arc -fblocks -Wimplicit-retain-self -verify %s
-// rdar://11194874
-
- at interface Root @end
-
- at interface I : Root
-{
-  int _bar;
-}
- at end
-
- at implementation I
-  - (void)foo{
-      ^{
-           _bar = 3; // expected-warning {{block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior}}
-       }();
-  }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-incompatible-builtin-types.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-incompatible-builtin-types.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-incompatible-builtin-types.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar://7634850
-
- at interface Foo
-- (void)foo:(Class)class; // expected-note{{passing argument to parameter 'class' here}}
- at end
-
-void FUNC() {
-    Class c, c1;
-    SEL s1, s2;
-    id i, i1;
-    Foo *f;
-    [f foo:f];	// expected-warning {{incompatible pointer types sending 'Foo *' to parameter of type 'Class'}}
-    c = f;	// expected-warning {{incompatible pointer types assigning to 'Class' from 'Foo *'}}
-
-    c = i;
-
-    i = c;
-
-    c = c1;
-
-    i = i1;
-
-    s1 = i;	// expected-warning {{incompatible pointer types assigning to 'SEL' from 'id'}}
-    i = s1;	// expected-warning {{incompatible pointer types assigning to 'id' from 'SEL'}}
-
-    s1 = s2;
-
-    s1 = c;	// expected-warning {{incompatible pointer types assigning to 'SEL' from 'Class'}}
-
-    c = s1;	// expected-warning {{incompatible pointer types assigning to 'Class' from 'SEL'}}
-
-    f = i;
-
-    f = c;	// expected-warning {{incompatible pointer types assigning to 'Foo *' from 'Class'}}
-
-    f = s1;	// expected-warning {{incompatible pointer types assigning to 'Foo *' from 'SEL'}}
-
-    i = f;
-
-    s1 = f; 	// expected-warning {{incompatible pointer types assigning to 'SEL' from 'Foo *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-missing-super.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-missing-super.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-missing-super.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
- at protocol NSCopying @end
-
-__attribute__((objc_root_class))
- at interface NSObject <NSCopying>
-- (void)dealloc;
- at end
-
- at implementation NSObject
-- (void)dealloc {
-  // Root class, shouldn't warn
-}
-- (void)finalize {
-  // Root class, shouldn't warn
-}
- at end
-
- at interface Subclass1 : NSObject
-- (void)dealloc;
-- (void)finalize;
- at end
-
- at implementation Subclass1
-- (void)dealloc {
-}
-- (void)finalize {
-}
- at end
-
- at interface Subclass2 : NSObject
-- (void)dealloc;
-- (void)finalize;
- at end
-
- at implementation Subclass2
-- (void)dealloc {
-  [super dealloc];  // Shouldn't warn
-}
-- (void)finalize {
-  [super finalize];  // Shouldn't warn
-}
- at end
-
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck %s
-// CHECK: warn-missing-super.m:24:1: warning: method possibly missing a [super dealloc] call
-// CHECK: 1 warning generated.
-
-// RUN: %clang_cc1 -fsyntax-only -fobjc-gc %s 2>&1 | FileCheck --check-prefix=CHECK-GC %s
-// CHECK-GC: warn-missing-super.m:24:1: warning: method possibly missing a [super dealloc] call
-// CHECK-GC: warn-missing-super.m:26:1: warning: method possibly missing a [super finalize] call
-// CHECK-GC: 2 warnings generated.
-
-// RUN: %clang_cc1 -fsyntax-only -fobjc-gc-only %s 2>&1 | FileCheck --check-prefix=CHECK-GC-ONLY %s
-// CHECK-GC-ONLY: warn-missing-super.m:26:1: warning: method possibly missing a [super finalize] call
-// CHECK-GC-ONLY: 1 warning generated.
-
-// RUN: %clang_cc1 -fsyntax-only -triple x86_64-apple-darwin10 -fobjc-arc %s 2>&1 | FileCheck --check-prefix=CHECK-ARC %s
-// CHECK-ARC: warn-missing-super.m:36:10: error: ARC forbids explicit message send of 'dealloc'
-// CHECK-ARC: 1 error generated.

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-protocol-method-deprecated.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-protocol-method-deprecated.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-protocol-method-deprecated.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-objc-root-class -verify %s
-// rdar://11618852
-
- at protocol TestProtocol 
-- (void)newProtocolMethod;
-- (void)deprecatedProtocolMethod __attribute__((deprecated)); // expected-note 2 {{method 'deprecatedProtocolMethod' declared here}}
- at end
-
- at interface NSObject @end
-
- at interface TestClass : NSObject <TestProtocol>
-
-- (void)newInstanceMethod;
-- (void)deprecatedInstanceMethod __attribute__((deprecated)); // expected-note {{method 'deprecatedInstanceMethod' declared here}}
-
- at end
-
-int main(int argc, const char * argv[])
-{
-
-    TestClass *testObj = (TestClass*)0;
-    [testObj newInstanceMethod];
-    [testObj deprecatedInstanceMethod]; // expected-warning {{'deprecatedInstanceMethod' is deprecated}}
-
-    [testObj newProtocolMethod];
-    [testObj deprecatedProtocolMethod]; // expected-warning {{'deprecatedProtocolMethod' is deprecated}}
-
-    id <TestProtocol> testProto = testObj;
-    [testProto newProtocolMethod];
-    [testProto deprecatedProtocolMethod]; // expected-warning {{'deprecatedProtocolMethod' is deprecated}}
-    return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-retain-block-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-retain-block-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-retain-block-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -fobjc-arc -Wno-objc-root-class %s 2>&1 | FileCheck --check-prefix=CHECK-ARC %s
-// rdar://9829425
-
-// RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-objc-root-class %s 2>&1 | FileCheck %s
-// rdar://11761511
-
-extern void doSomething();
-
- at interface Test
-{
- at public
-  void (^aBlock)(void);
-}
- at property (retain) void (^aBlock)(void);
- at property (weak, retain) void (^aBlockW)(void);
- at property (strong, retain) void (^aBlockS)(void); // OK
- at property (readonly, retain) void (^aBlockR)(void); // OK
- at property (copy, retain) void (^aBlockC)(void);
- at property (assign, retain) void (^aBlockA)(void);
- at end
-
- at implementation Test
- at synthesize aBlock;
- at dynamic aBlockW, aBlockS, aBlockR, aBlockC, aBlockA;
- at end
-
-int main() {
-  Test *t;
-  t.aBlock = ^{ doSomething(); };
-  t.aBlockW = ^{ doSomething(); };
-  t.aBlockS = ^{ doSomething(); };
-}
-
-// CHECK-ARC: 14:1: warning: retain'ed block property does not copy the block - use copy attribute instead
-// CHECK-ARC: @property (retain) void (^aBlock)(void);
-// CHECK-ARC: ^
-// CHECK-ARC: 15:1: error: property attributes 'retain' and 'weak' are mutually exclusive
-// CHECK-ARC: @property (weak, retain) void (^aBlockW)(void);
-// CHECK-ARC: ^
-// CHECK-ARC: 18:1: error: property attributes 'copy' and 'retain' are mutually exclusive
-// CHECK-ARC: @property (copy, retain) void (^aBlockC)(void);
-// CHECK-ARC: ^
-// CHECK-ARC: 19:1: error: property attributes 'assign' and 'retain' are mutually exclusive
-// CHECK-ARC: @property (assign, retain) void (^aBlockA)(void);
-// CHECK-ARC: ^
-// CHECK-ARC: 30:13: warning: assigning block literal to a weak property; object will be released after assignment
-// CHECK-ARC:   t.aBlockW = ^{ doSomething(); };
-// CHECK-ARC:             ^ ~~~~~~~~~~~~~~~~~~~
-// CHECK-ARC: 2 warnings and 3 errors generated.
-
-// CHECK: 14:1: warning: retain'ed block property does not copy the block - use copy attribute instead
-// CHECK: @property (retain) void (^aBlock)(void);
-// CHECK: ^
-// CHECK: 15:1: error: property attributes 'retain' and 'weak' are mutually exclusive
-// CHECK: @property (weak, retain) void (^aBlockW)(void);
-// CHECK: ^
-// CHECK: 18:1: error: property attributes 'copy' and 'retain' are mutually exclusive
-// CHECK: @property (copy, retain) void (^aBlockC)(void);
-// CHECK: ^
-// CHECK: 19:1: error: property attributes 'assign' and 'retain' are mutually exclusive
-// CHECK: @property (assign, retain) void (^aBlockA)(void);
-// CHECK: ^
-// CHECK: 1 warning and 3 errors generated.

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-retain-cycle.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-retain-cycle.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-retain-cycle.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,186 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -fblocks -verify -Wno-objc-root-class -Wno-implicit-retain-self %s
-
-void *_Block_copy(const void *block);
-
- at interface Test0
-- (void) setBlock: (void(^)(void)) block;
-- (void) addBlock: (void(^)(void)) block;
-- (void) actNow;
- at end
-void test0(Test0 *x) {
-  [x setBlock: // expected-note {{block will be retained by the captured object}}
-       ^{ [x actNow]; }]; // expected-warning {{capturing 'x' strongly in this block is likely to lead to a retain cycle}}
-  x.block = // expected-note {{block will be retained by the captured object}}
-       ^{ [x actNow]; }; // expected-warning {{capturing 'x' strongly in this block is likely to lead to a retain cycle}}
-
-  [x addBlock: // expected-note {{block will be retained by the captured object}}
-       ^{ [x actNow]; }]; // expected-warning {{capturing 'x' strongly in this block is likely to lead to a retain cycle}}
-
-  // These actually don't cause retain cycles.
-  __weak Test0 *weakx = x;
-  [x addBlock: ^{ [weakx actNow]; }];
-  [x setBlock: ^{ [weakx actNow]; }];
-  x.block = ^{ [weakx actNow]; };
-
-  // These do cause retain cycles, but we're not clever enough to figure that out.
-  [weakx addBlock: ^{ [x actNow]; }];
-  [weakx setBlock: ^{ [x actNow]; }];
-  weakx.block = ^{ [x actNow]; };
-
-  // rdar://11702054
-  x.block = ^{ (void)x.actNow; };  // expected-warning {{capturing 'x' strongly in this block is likely to lead to a retain cycle}} \
-                                   // expected-note {{block will be retained by the captured object}}
-}
-
- at interface BlockOwner
- at property (retain) void (^strong)(void); // expected-warning {{retain'ed block property does not copy the block - use copy attribute instead}}
- at end
-
- at interface Test1 {
- at public
-  BlockOwner *owner;
-};
- at property (retain) BlockOwner *owner;
- at property (assign) __strong BlockOwner *owner2; // expected-error {{unsafe_unretained property 'owner2' may not also be declared __strong}}
- at property (assign) BlockOwner *owner3;
- at end
-void test1(Test1 *x) {
-  x->owner.strong = ^{ (void) x; }; // expected-warning {{retain cycle}} expected-note {{block will be retained by an object strongly retained by the captured object}}
-  x.owner.strong = ^{ (void) x; }; // expected-warning {{retain cycle}} expected-note {{block will be retained by an object strongly retained by the captured object}}
-  x.owner2.strong = ^{ (void) x; };
-  x.owner3.strong = ^{ (void) x; };
-}
-
- at implementation Test1 {
-  BlockOwner * __unsafe_unretained owner3ivar;
-  __weak BlockOwner *weakowner;
-}
- at dynamic owner;
- at dynamic owner2;
- at synthesize owner3 = owner3ivar;
-
-- (id) init {
-  self.owner.strong = ^{ (void) owner; }; // expected-warning {{retain cycle}} expected-note {{block will be retained by an object strongly retained by the captured object}}
-  self.owner2.strong = ^{ (void) owner; };
-
-  // TODO: should we warn here?  What's the story with this kind of mismatch?
-  self.owner3.strong = ^{ (void) owner; };
-
-  owner.strong = ^{ (void) owner; }; // expected-warning {{retain cycle}} expected-note {{block will be retained by an object strongly retained by the captured object}}
-
-  owner.strong = ^{ ^{ (void) owner; }(); }; // expected-warning {{retain cycle}} expected-note {{block will be retained by an object strongly retained by the captured object}}
-
-  owner.strong = ^{ (void) sizeof(self); // expected-note {{block will be retained by an object strongly retained by the captured object}}
-                    (void) owner; }; // expected-warning {{capturing 'self' strongly in this block is likely to lead to a retain cycle}}
-
-  weakowner.strong = ^{ (void) owner; };
-
-  return self;
-}
-- (void) foo {
-  owner.strong = ^{ (void) owner; }; // expected-warning {{retain cycle}} expected-note {{block will be retained by an object strongly retained by the captured object}}
-}
- at end
-
-void test2_helper(id);
- at interface Test2 {
-  void (^block)(void);
-  id x;
-}
- at end
- at implementation Test2
-- (void) test {
-  block = ^{ // expected-note {{block will be retained by an object strongly retained by the captured object}}
-    test2_helper(x); // expected-warning {{capturing 'self' strongly in this block is likely to lead to a retain cycle}}
-  };
-}
- at end
-
-
- at interface NSOperationQueue {}
-- (void)addOperationWithBlock:(void (^)(void))block;
-- (void)addSomethingElse:(void (^)(void))block;
-
- at end
-
- at interface Test3 {
-  NSOperationQueue *myOperationQueue;
-  unsigned count;
-}
- at end
-void doSomething(unsigned v);
- at implementation Test3
-- (void) test {
-  // 'addOperationWithBlock:' is specifically whitelisted.
-  [myOperationQueue addOperationWithBlock:^() { // no-warning
-    if (count > 20) {
-      doSomething(count);
-    }
-  }];
-}
-- (void) test_positive {
-  // Sanity check that we are really whitelisting 'addOperationWithBlock:' and not doing
-  // something funny.
-  [myOperationQueue addSomethingElse:^() { // expected-note {{block will be retained by an object strongly retained by the captured object}}
-    if (count > 20) { // expected-warning {{capturing 'self' strongly in this block is likely to lead to a retain cycle}}
-      doSomething(count);
-    }
-  }];
-}
- at end
-
-
-void testBlockVariable() {
-  typedef void (^block_t)(void);
-  
-  // This case will be caught by -Wuninitialized, and does not create a
-  // retain cycle.
-  block_t a1 = ^{
-    a1(); // no-warning
-  };
-
-  // This case will also be caught by -Wuninitialized.
-  block_t a2;
-  a2 = ^{
-    a2(); // no-warning
-  };
-  
-  __block block_t b1 = ^{ // expected-note{{block will be retained by the captured object}}
-    b1(); // expected-warning{{capturing 'b1' strongly in this block is likely to lead to a retain cycle}}
-  };
-
-  __block block_t b2;
-  b2 = ^{ // expected-note{{block will be retained by the captured object}}
-    b2(); // expected-warning{{capturing 'b2' strongly in this block is likely to lead to a retain cycle}}
-  };
-}
-
-
- at interface NSObject
-- (id)copy;
-
-- (void (^)(void))someRandomMethodReturningABlock;
- at end
-
-
-void testCopying(Test0 *obj) {
-  typedef void (^block_t)(void);
-
-  [obj setBlock:[^{ // expected-note{{block will be retained by the captured object}}
-    [obj actNow]; // expected-warning{{capturing 'obj' strongly in this block is likely to lead to a retain cycle}}
-  } copy]];
-
-  [obj addBlock:(__bridge_transfer block_t)_Block_copy((__bridge void *)^{ // expected-note{{block will be retained by the captured object}}
-    [obj actNow]; // expected-warning{{capturing 'obj' strongly in this block is likely to lead to a retain cycle}}
-  })];
-  
-  [obj addBlock:[^{
-    [obj actNow]; // no-warning
-  } someRandomMethodReturningABlock]];
-  
-  extern block_t someRandomFunctionReturningABlock(block_t);
-  [obj setBlock:someRandomFunctionReturningABlock(^{
-    [obj actNow]; // no-warning
-  })];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-selector-selection.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-selector-selection.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-selector-selection.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface Object 
-- (void)foo;
- at end
-
- at interface Class1
-- (void)setWindow:(Object *)wdw;
- at end
-
-void foo(void) {
-  Object *obj;
-  [obj setWindow:0]; // expected-warning{{'Object' may not respond to 'setWindow:'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-strict-selector-match.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-strict-selector-match.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-strict-selector-match.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1  -Wstrict-selector-match -fsyntax-only -verify %s
-
- at interface Foo
--(int) method; // expected-note {{using}}
- at end
-
- at interface Bar
--(float) method;	// expected-note {{also found}}
- at end
-
-int main() { [(id)0 method]; } // expected-warning {{multiple methods named 'method' found}}
-
- at interface Object @end
-
- at interface Class1
-- (void)setWindow:(Object *)wdw;	// expected-note {{using}}
- at end
-
- at interface Class2
-- (void)setWindow:(Class1 *)window;	// expected-note {{also found}}
- at end
-
-id foo(void) {
-  Object *obj = 0;
-  id obj2 = obj;
-  [obj setWindow:0]; 	// expected-warning {{Object' may not respond to 'setWindow:'}}
-  [obj2 setWindow:0]; // expected-warning {{multiple methods named 'setWindow:' found}}
-  return obj;
-}
-
- at protocol MyObject
-- (id)initWithData:(Object *)data;	// expected-note {{using}} \
-					// expected-note {{passing argument to parameter 'data' here}}
- at end
-
- at protocol SomeOther
-- (id)initWithData:(int)data;	// expected-note {{also found}}
- at end
-
- at protocol MyCoding
-- (id)initWithData:(id<MyObject, MyCoding>)data;	// expected-note {{also found}}
- at end
-
- at interface NTGridDataObject: Object <MyCoding>
-{
-    Object<MyCoding> *_data;
-}
-+ (NTGridDataObject*)dataObject:(id<MyObject, MyCoding>)data;
- at end
-
- at implementation NTGridDataObject
-- (id)initWithData:(id<MyObject, MyCoding>)data {
-  return data;
-}
-+ (NTGridDataObject*)dataObject:(id<MyObject, MyCoding>)data
-{
-    NTGridDataObject *result = [(id)0 initWithData:data]; // expected-warning {{multiple methods named 'initWithData:' found}} \
-    expected-warning {{sending 'id<MyObject,MyCoding>' to parameter of incompatible type 'Object *'}}
-    return result;
-}
- at end
-
- at interface Base
-- (unsigned)port;
- at end
-
- at interface Derived: Base
-- (Object *)port;
-+ (Protocol *)port;
- at end
-
-void foo1(void) {
-  [(Class)0 port]; // OK - gcc issues warning but there is only one Class method so no ambiguity to warn
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-superclass-method-mismatch.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-superclass-method-mismatch.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-superclass-method-mismatch.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -Wsuper-class-method-mismatch -verify %s
-
- at interface Root
--(void) method_r: (char)ch : (float*)f1 : (int*) x; // expected-note {{previous declaration is here}}
- at end
-
- at class Sub;
-
- at interface Base : Root
--(void) method: (int*) x; // expected-note {{previous declaration is here}}
--(void) method1: (Base*) x; // expected-note {{previous declaration is here}}
--(void) method2: (Sub*) x; // expected-note{{passing argument to parameter 'x' here}}
-+ method3: (int)x1 : (Base *)x2 : (float)x3; // expected-note {{previous declaration is here}}
-+ mathod4: (id)x1;
-- method5: (int) x : (double) d; // expected-note {{previous declaration is here}}
-- method6: (int) x : (float) d; // expected-note {{previous declaration is here}}
- at end
-
-struct A {
-  int x,y,z;
-};
-
- at interface Sub : Base
--(void) method: (struct A*) a;	// expected-warning {{method parameter type 'struct A *' does not match super class method parameter type 'int *'}}
--(void) method1: (Sub*) x;	// expected-warning {{method parameter type 'Sub *' does not match super class method parameter type 'Base *'}}
--(void) method2: (Base*) x;	// no need to warn. At call point we warn if need be.
-+ method3: (int)x1 : (Sub *)x2 : (float)x3;	// expected-warning {{method parameter type 'Sub *' does not match super class method parameter type 'Base *'}}
-+ mathod4: (Base*)x1;
--(void) method_r: (char)ch : (float*)f1 : (Sub*) x; // expected-warning {{method parameter type 'Sub *' does not match super class method parameter type 'int *'}}
-- method5: (int) x : (float) d; // expected-warning {{method parameter type 'float' does not match super class method parameter type 'double'}}
-- method6: (int) x : (double) d; // expected-warning {{method parameter type 'double' does not match super class method parameter type 'float'}}
- at end
-
-void f(Base *base, Sub *sub) {
-  int x;
-  [base method:&x];  // warn. if base is actually 'Sub' it will use -[Sub method] with wrong arguments
-  
-  Base *b;
-  [base method1:b]; // if base is actuall 'Sub'  it will use [Sub method1] with wrong argument.
-
-  [base method2:b];  // expected-warning {{}}
-
-  Sub *s;
-  [base method2:s]; // if base is actually 'Sub' OK. Either way OK.
-  
-}
-
-
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-unreachable.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-unreachable.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-unreachable.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang %s -fsyntax-only -Xclang -verify -fblocks -Wunreachable-code -Wno-unused-value -Wno-covered-switch-default
-
-// This previously triggered a warning from -Wunreachable-code because of
-// a busted CFG.
-typedef signed char BOOL;
-BOOL radar10989084() {
-  @autoreleasepool {  // no-warning
-    return __objc_yes;
-  }
-}
-
-// Test the warning works.
-void test_unreachable() {
-  return;
-  return; // expected-warning {{will never be executed}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-unused-exception-param.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-unused-exception-param.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-unused-exception-param.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions -Wunused-exception-parameter %s
-void  f0() {
-  @try {} @catch(id a) {} // expected-warning{{unused exception parameter 'a'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-weak-field.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-weak-field.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-weak-field.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fsyntax-only -fobjc-gc -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -triple i386-apple-darwin9 -fsyntax-only -fobjc-gc -verify -Wno-objc-root-class %s
-
-struct S {
-	__weak id w; // expected-warning {{__weak attribute cannot be specified on a field declaration}}
-	__strong id p1;
-};
-
- at interface I
-{
-   __weak id w;	// OK
-   __strong id LHS;
-}
-- (void) foo;
- at end
- at implementation I
-- (void) foo { w = 0; LHS = w; }
- at end
-
-int main ()
-{
-	struct I {
-        __weak id w1;  // expected-warning {{__weak attribute cannot be specified on a field declaration}}
-	};
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-write-strings.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-write-strings.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warn-write-strings.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -verify -fsyntax-only -fconst-strings %s
-
-// PR4804
-char* x = "foo"; // expected-warning {{initializing 'char *' with an expression of type 'const char [4]' discards qualifiers}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/warning-missing-selector-name.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/warning-missing-selector-name.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/warning-missing-selector-name.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class %s
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify -Wno-objc-root-class -Wmissing-selector-name %s
-// rdar://12263549
-
- at interface Super @end
- at interface INTF : Super
--(void) Name1:(id)Arg1 Name2:(id)Arg2; // Name1:Name2:
--(void) Name1:(id) Name2:(id)Arg2; // expected-warning {{'Name2' used as the name of the previous parameter rather than as part of the selector}} \
-				   // expected-note {{introduce a parameter name to make 'Name2' part of the selector}} \
-				   // expected-note {{or insert whitespace before ':' to use 'Name2' as parameter name and have an empty entry in the selector}}
--(void) Name1:(id)Arg1 Name2:(id)Arg2 Name3:(id)Arg3; // Name1:Name2:Name3:
--(void) Name1:(id)Arg1 Name2:(id) Name3:(id)Arg3; // expected-warning {{'Name3' used as the name of the previous parameter rather than as part of the selector}} \
-				   // expected-note {{introduce a parameter name to make 'Name3' part of the selector}} \
-				   // expected-note {{or insert whitespace before ':' to use 'Name3' as parameter name and have an empty entry in the selector}}
-- method:(id) second:(id)second; // expected-warning {{'second' used as the name of the previous parameter rather than as part of the selector}} \
-				   // expected-note {{introduce a parameter name to make 'second' part of the selector}} \
-				   // expected-note {{or insert whitespace before ':' to use 'second' as parameter name and have an empty entry in the selector}} \
-				   // expected-note {{method 'method::' declared here}}
-                                 
- at end
-
- at implementation INTF // expected-warning {{method definition for 'method::' not found}}
--(void) Name1:(id)Arg1 Name2:(id)Arg2{}
--(void) Name1:(id) Name2:(id)Arg2 {} // expected-warning {{'Name2' used as the name of the previous parameter rather than as part of the selector}} \
-					// expected-note {{introduce a parameter name to make 'Name2' part of the selector}} \
- 					// expected-note {{or insert whitespace before ':' to use 'Name2' as parameter name and have an empty entry in the selector}}
--(void) Name1:(id)Arg1 Name2:(id)Arg2 Name3:(id)Arg3 {}
--(void) Name1:(id)Arg1 Name2:(id) Name3:(id)Arg3 {} // expected-warning {{'Name3' used as the name of the previous parameter rather than as part of the selector}} \
-					// expected-note {{introduce a parameter name to make 'Name3' part of the selector}} \
- 					// expected-note {{or insert whitespace before ':' to use 'Name3' as parameter name and have an empty entry in the selector}}
-- method:(id)first second:(id)second {return 0; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-attr-ivar.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-attr-ivar.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-attr-ivar.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-typedef signed char BOOL;
-typedef unsigned int NSUInteger;
-typedef struct _NSZone NSZone;
- at class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
- at protocol NSObject
-- (BOOL)isEqual:(id)object;
- at end
- at protocol NSCopying  - (id)copyWithZone:(NSZone *)zone;
- at end
- at protocol NSMutableCopying  - (id)mutableCopyWithZone:(NSZone *)zone;
- at end
- at protocol NSCoding  - (void)encodeWithCoder:(NSCoder *)aCoder;
- at end
- at interface NSObject <NSObject> {}
- at end
-extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
-typedef struct {
-  id *itemsPtr;
-  unsigned long *mutationsPtr;
-} NSFastEnumerationState;
- at protocol NSFastEnumeration
-- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
- at end
- at class NSString;
- at interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>  - (NSUInteger)count;
- at end
- at interface NSMutableArray : NSArray  - (void)addObject:(id)anObject;
- at end
-extern NSString * const NSUndoManagerCheckpointNotification;
- at interface NSValueTransformer : NSObject {} @end
- at class FooModel;
- at interface FooObject : NSObject <NSCopying> {}
- at end
- at interface FooNode : FooObject {}
-- (NSArray *) children;
- at end
-typedef enum { Foo_HUH_NONE } FooHUHCode;
- at interface FooPlaypenEntry : FooNode {
-  NSMutableArray *_interestingChildren;
-  FooHUHCode _HUH;
-  __attribute__((objc_gc(weak))) FooPlaypenEntry *_mostInterestingChild;
-  id _author;
-}
- at property(copy) NSString *author;
-- (BOOL) isInteresting;
- at end  NSString *FooHUHCodeToString(FooHUHCode HUH) { return 0; }
- at interface FooHUHCodeToStringTransformer: NSValueTransformer {
-}
- at end  @implementation FooPlaypenEntry  @synthesize author = _author;
-- (BOOL) isInteresting { return 1; }
-- (NSArray *) interestingChildren {
-  if (!_interestingChildren) {
-    for (FooPlaypenEntry *child in [self children]) {
-      if ([child isInteresting]) {
-        if (!_mostInterestingChild)
-          _mostInterestingChild = child;
-        else if (child->_HUH > _mostInterestingChild->_HUH) 
-          _mostInterestingChild = child;
-      }
-    }
-  }
-  return 0;
-}
-- (FooHUHCode) HUH {
-  if (_HUH == Foo_HUH_NONE) {
-    if (_mostInterestingChild)
-      return [_mostInterestingChild HUH];
-  }
-  return 0;
-}
- at end
-
-// rdar://problem/9123040
- at interface Test1 {
- at public
-  id ivar __attribute__((objc_gc(weak)));
-}
- at property (assign) id prop __attribute((objc_gc(weak)));
- at end
-void test1(Test1 *t) {
-  id *(__attribute__((objc_gc(strong))) x) = &t->ivar; // expected-warning {{initializing '__strong id *' with an expression of type '__weak id *' discards qualifiers}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-property.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-property.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-property.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -verify -Wno-objc-root-class %s
-// rdar://8899430
-
- at interface WeakPropertyTest {
-    Class isa;
-    __weak id value;
-    id x; // expected-error {{existing instance variable 'x' for __weak property 'x' must be __weak}}
-}
- at property (weak) id value1;
- at property __weak id value;
- at property () __weak id value2;
-
- at property (weak, assign) id v1;  // expected-error {{property attributes 'assign' and 'weak' are mutually exclusive}}
- at property (weak, copy) id v2; // expected-error {{property attributes 'copy' and 'weak' are mutually exclusive}}
- at property (weak, retain) id v3; // expected-error {{property attributes 'retain' and 'weak' are mutually exclusive}}
- at property (weak, assign) id v4;  // expected-error {{property attributes 'assign' and 'weak' are mutually exclusive}}
-
- at property () __weak id x; // expected-note {{property declared here}}
- at end
-
- at implementation WeakPropertyTest
- at synthesize x; // expected-note {{property synthesized here}}
- at dynamic value1, value, value2, v1,v2,v3,v4;
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-receiver-warn.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-receiver-warn.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/weak-receiver-warn.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime-has-weak -fobjc-arc -fblocks -Wno-objc-root-class -Wreceiver-is-weak -verify %s
-// rdar://10225276
-
- at interface Test0
-- (void) setBlock: (void(^)(void)) block;
-- (void) addBlock: (void(^)(void)) block;
-- (void) actNow;
- at end
-
-void test0(Test0 *x) {
-  __weak Test0 *weakx = x;
-  [x addBlock: ^{ [weakx actNow]; }]; // expected-warning {{weak receiver may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-  [x setBlock: ^{ [weakx actNow]; }]; // expected-warning {{weak receiver may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-  x.block = ^{ [weakx actNow]; }; // expected-warning {{weak receiver may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-
-  [weakx addBlock: ^{ [x actNow]; }]; // expected-warning {{weak receiver may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-  [weakx setBlock: ^{ [x actNow]; }]; // expected-warning {{weak receiver may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-  weakx.block = ^{ [x actNow]; };     // expected-warning {{weak receiver may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-}
-
- at interface Test
-{
-  __weak Test* weak_prop;
-}
-- (void) Meth;
- at property  __weak Test* weak_prop; // expected-note {{property declared here}}
- at property (weak, atomic) id weak_atomic_prop; // expected-note {{property declared here}}
-- (__weak id) P; // expected-note {{method 'P' declared here}}
- at end
-
- at implementation Test
-- (void) Meth {
-    if (self.weak_prop) {
-      self.weak_prop = 0;
-    }
-    if (self.weak_atomic_prop) {
-      self.weak_atomic_prop = 0;
-    }
-    [self.weak_prop Meth]; // expected-warning {{weak property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-    id pi = self.P;
-
-    [self.weak_atomic_prop Meth];  // expected-warning {{weak property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-
-    [self.P Meth];		   // expected-warning {{weak implicit property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-}
-
-- (__weak id) P { return 0; }
- at dynamic weak_prop, weak_atomic_prop;
- at end
-
-
- at interface MyClass {
-    __weak MyClass *_parent;
-}
- at property (weak) MyClass *parent; // expected-note 4 {{property declared here}}
- at end
-
- at implementation MyClass
- at synthesize parent = _parent;
-
-- (void)doSomething
-{
-    [[self parent] doSomething]; // expected-warning {{weak property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-
-    (void)self.parent.doSomething; // expected-warning {{weak property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-}
-
- at end
-
-
-// Weak properties on protocols can be synthesized by an adopting class.
- at protocol MyProtocol
- at property (weak) id object; // expected-note 2 {{property declared here}}
- at end
-
-void testProtocol(id <MyProtocol> input) {
-  [[input object] Meth]; // expected-warning {{weak property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-  [input.object Meth]; // expected-warning {{weak property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-}
-
-
- at interface Subclass : MyClass
-// Unnecessarily redeclare -parent.
-- (id)parent;
- at end
-
- at implementation Subclass
-
-- (id)parent {
-  return [super parent];
-}
-
-- (void)doSomethingElse {
-  [[self parent] doSomething]; // expected-warning {{weak property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-
-  (void)self.parent.doSomething; // expected-warning {{weak property may be unpredictably set to nil}} expected-note {{assign the value to a strong variable to keep the object alive during use}}
-}
-
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjC/writable-property-in-superclass.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjC/writable-property-in-superclass.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjC/writable-property-in-superclass.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1  -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface MessageStore
- at property (assign, readonly) int P;
- at end
-
- at interface MessageStore (CAT)
- at property (assign) int P;
- at end
-
- at interface  NeXTMbox : MessageStore
- at end
-
- at implementation NeXTMbox
-- (void) Meth { self.P = 1; }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/Inputs/arc-system-header.h
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/Inputs/arc-system-header.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/Inputs/arc-system-header.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
- at interface B
- at end
-
-
- at interface A {
- at public
-  union {
-    struct {
-      B *b;
-    } a_b;
-    void *void_ptr;
-  } data;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/NSString-type.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/NSString-type.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/NSString-type.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fblocks -fsyntax-only -verify %s
-// rdar://10907410
-
-void test(id pid, Class pclass) {
-  void (^block)(void) = @"help"; // expected-error {{cannot initialize a variable of type 'void (^)()' with an rvalue of type 'NSString *'}}
-  void (^block1)(void) = pid;
-  void (^block2)(void) = @"help"; // expected-error {{cannot initialize a variable of type 'void (^)()' with an rvalue of type 'NSString *'}}
-  void (^block3)(void) = @"help"; // expected-error {{cannot initialize a variable of type 'void (^)()' with an rvalue of type 'NSString *'}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/abstract-class-type-ivar.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/abstract-class-type-ivar.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/abstract-class-type-ivar.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://12095239
-
-class CppAbstractBase {
-public:
-    virtual void testA() = 0;
-    virtual void testB() = 0; // expected-note {{unimplemented pure virtual method 'testB' in 'CppConcreteSub}}
-    int a;
-};
-
-class CppConcreteSub : public CppAbstractBase {
-    virtual void testA() { }
-};
-
- at interface Objc  {
-    CppConcreteSub _concrete; // expected-error{{instance variable type 'CppConcreteSub' is an abstract class}}
-}
-- (CppAbstractBase*)abstract;
- at end
- at implementation Objc
-- (CppAbstractBase*)abstract {
-    return &_concrete;
-}
- at end
-
-class Cpp {
-public:
-    CppConcreteSub sub; // expected-error {{field type 'CppConcreteSub' is an abstract class}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-0x.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-0x.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-0x.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fobjc-arc -verify -fblocks -fobjc-exceptions %s
-
-// "Move" semantics, trivial version.
-void move_it(__strong id &&from) {
-  id to = static_cast<__strong id&&>(from);
-}
-
-// Deduction with 'auto'.
- at interface A
-+ alloc;
-- init;
- at end
-
-// <rdar://problem/12031870>: don't warn about this
-extern "C" A* MakeA();
-
-// Ensure that deduction works with lifetime qualifiers.
-void deduction(id obj) {
-  auto a = [[A alloc] init];
-  __strong A** aPtr = &a;
-
-  auto a2([[A alloc] init]);
-  __strong A** aPtr2 = &a2;
-
-  __strong id *idp = new auto(obj);
-
-  __strong id array[17];
-  for (auto x : array) { // expected-warning{{'auto' deduced as 'id' in declaration of 'x'}}
-    __strong id *xPtr = &x;
-  }
-
-  @try {
-  } @catch (auto e) { // expected-error {{'auto' not allowed in exception declaration}}
-  }
-}
-
-// rdar://problem/11068137
-void test1a() {
-  __autoreleasing id p; // expected-note 2 {{'p' declared here}}
-  (void) [&p] {};
-  (void) [p] {}; // expected-error {{cannot capture __autoreleasing variable in a lambda by copy}}
-  (void) [=] { (void) p; }; // expected-error {{cannot capture __autoreleasing variable in a lambda by copy}}
-}
-void test1b() {
-  __autoreleasing id v;
-  __autoreleasing id &p = v; // expected-note 2 {{'p' declared here}}
-  (void) [&p] {};
-  (void) [p] {}; // expected-error {{cannot capture __autoreleasing variable in a lambda by copy}}
-  (void) [=] { (void) p; }; // expected-error {{cannot capture __autoreleasing variable in a lambda by copy}}
-}
-void test1c() {
-  __autoreleasing id v; // expected-note {{'v' declared here}}
-  __autoreleasing id &p = v;
-  (void) ^{ (void) p; };
-  (void) ^{ (void) v; }; // expected-error {{cannot capture __autoreleasing variable in a block}}
-}
-
-
-// <rdar://problem/11319689>
-// warn when initializing an 'auto' variable with an 'id' initializer expression
-
-void testAutoId(id obj) {
-  auto x = obj; // expected-warning{{'auto' deduced as 'id' in declaration of 'x'}}
-}
-
- at interface Array
-+ (instancetype)new;
-- (id)objectAtIndex:(int)index;
- at end
-
-// ...but don't warn if it's coming from a template parameter.
-template<typename T, int N>
-void autoTemplateFunction(T param, id obj, Array *arr) {
-  auto x = param; // no-warning
-  auto y = obj; // expected-warning{{'auto' deduced as 'id' in declaration of 'y'}}
-  auto z = [arr objectAtIndex:N]; // expected-warning{{'auto' deduced as 'id' in declaration of 'z'}}
-}
-
-void testAutoIdTemplate(id obj) {
-  autoTemplateFunction<id, 2>(obj, obj, [Array new]); // no-warning
-}
-
-// rdar://12229679
- at interface NSObject @end
-typedef __builtin_va_list va_list;
- at interface MyClass : NSObject
- at end
-
- at implementation MyClass
-+ (void)fooMethod:(id)firstArg, ... {
-    va_list args;
-
-    __builtin_va_arg(args, id);
-}
- at end
-
-namespace rdar12078752 {
-  void f() {
-    NSObject* o =0;
-    __autoreleasing decltype(o) o2 = o;
-    __autoreleasing auto o3 = o;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-bool-conversion.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-bool-conversion.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-bool-conversion.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify -fblocks -triple x86_64-apple-darwin10.0.0 %s
-// expected-no-diagnostics
-// rdar://9310049
-
-bool fn(id obj) {
-    return (bool)obj;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-bridged-cast.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-bridged-cast.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-bridged-cast.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -verify %s
-
-typedef const void *CFTypeRef;
-typedef const struct __CFString *CFStringRef;
-
- at interface NSString
- at end
-
-CFTypeRef CFCreateSomething();
-CFStringRef CFCreateString();
-CFTypeRef CFGetSomething();
-CFStringRef CFGetString();
-
-id CreateSomething();
-NSString *CreateNSString();
-
-template<typename IdType, typename StringType, typename IntPtrType>
-void from_cf() {
-  id obj1 = (__bridge_transfer IdType)CFCreateSomething();
-  id obj2 = (__bridge_transfer StringType)CFCreateString();
-  (__bridge IntPtrType)CFCreateSomething(); // expected-error{{incompatible types casting 'CFTypeRef' (aka 'const void *') to 'int *' with a __bridge cast}}
-  id obj3 = (__bridge IdType)CFGetSomething();
-  id obj4 = (__bridge StringType)CFGetString();
-}
-
-template void from_cf<id, NSString*, int*>(); // expected-note{{in instantiation of function template specialization}}
-
-template<typename IdType, typename StringType>
-void to_cf(id obj) {
-  CFTypeRef cf1 = (__bridge_retained IdType)CreateSomething();
-  CFStringRef cf2 = (__bridge_retained StringType)CreateNSString();
-  CFTypeRef cf3 = (__bridge IdType)CreateSomething();
-  CFStringRef cf4 = (__bridge StringType)CreateNSString(); 
-}
-
-template void to_cf<CFTypeRef, CFStringRef>(id);

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-libstdcxx.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-libstdcxx.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-libstdcxx.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fobjc-arc-cxxlib=libstdc++ -fobjc-runtime-has-weak -verify %s
-// expected-no-diagnostics
-
- at interface A @end
-
-int check0[std::__is_scalar<__strong id>::__value? -1 : 1];
-int check1[std::__is_scalar<__weak id>::__value? -1 : 1];
-int check2[std::__is_scalar<__autoreleasing id>::__value? -1 : 1];
-int check3[std::__is_scalar<__strong A*>::__value? -1 : 1];
-int check4[std::__is_scalar<__weak A*>::__value? -1 : 1];
-int check5[std::__is_scalar<__autoreleasing A*>::__value? -1 : 1];

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-memfunc.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-memfunc.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-memfunc.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify -fblocks %s
-// expected-no-diagnostics
-
-struct X0 {
-  static id makeObject1() __attribute__((ns_returns_retained));
-  id makeObject2() __attribute__((ns_returns_retained));
-};
-
-void test_X0(X0 x0, X0 *x0p) {
-  X0::makeObject1();
-  x0.makeObject2();
-  x0p->makeObject2();
-  id (X0::*pmf)() __attribute__((ns_returns_retained)) = &X0::makeObject2;
-  (x0.*pmf)();
-  (x0p->*pmf)();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-nsconsumed-errors.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-nsconsumed-errors.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-nsconsumed-errors.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify -fblocks -triple x86_64-apple-darwin10.0.0 %s
-// rdar://10187884
-
-typedef void (^blk)(id, __attribute((ns_consumed)) id);
-typedef void (^blk1)(__attribute((ns_consumed))id, __attribute((ns_consumed)) id);
-blk a = ^void (__attribute((ns_consumed)) id, __attribute((ns_consumed)) id){}; // expected-error {{cannot initialize a variable of type '__strong blk'}}
-
-blk b = ^void (id, __attribute((ns_consumed)) id){};
-
-blk c = ^void (__attribute((ns_consumed)) id, __attribute((ns_consumed)) id){}; // expected-error {{cannot initialize a variable of type '__strong blk'}}
-
-blk d = ^void (id, id) {}; // expected-error {{cannot initialize a variable of type '__strong blk'}}
-
-blk1 a1 = ^void (__attribute((ns_consumed)) id, id){}; // expected-error {{cannot initialize a variable of type '__strong blk1'}}
-
-blk1 b2 = ^void (id, __attribute((ns_consumed)) id){}; // expected-error {{cannot initialize a variable of type '__strong blk1'}}
-
-blk1 c3 = ^void (__attribute((ns_consumed)) id, __attribute((ns_consumed)) id){};
-
-blk1 d4 = ^void (id, id) {}; // expected-error {{cannot initialize a variable of type '__strong blk1'}}
-
-
-typedef void (*releaser_t)(__attribute__((ns_consumed)) id);
-
-void normalFunction(id);
-releaser_t r1 = normalFunction; // expected-error {{cannot initialize a variable of type 'releaser_t'}}
-
-void releaser(__attribute__((ns_consumed)) id);
-releaser_t r2 = releaser; // no-warning
-
-template <typename T>
-void templateFunction(T) {} // expected-note {{candidate function}}
-releaser_t r3 = templateFunction<id>; // expected-error {{address of overloaded function 'templateFunction' does not match required type 'void (id)'}}
-
-template <typename T>
-void templateReleaser(__attribute__((ns_consumed)) T) {}
-releaser_t r4 = templateReleaser<id>; // no-warning
-
-
- at class AntiRelease, ExplicitAntiRelease, ProRelease;
-
-template<>
-void templateFunction(__attribute__((ns_consumed)) AntiRelease *); // expected-error {{no function template matches function template specialization 'templateFunction'}}
-
-template<>
-void templateReleaser(AntiRelease *); // expected-error {{no function template matches function template specialization 'templateReleaser'}}
-
-template<>
-void templateReleaser(ExplicitAntiRelease *) {} // expected-error {{no function template matches function template specialization 'templateReleaser'}}
-
-template<>
-void templateReleaser(__attribute__((ns_consumed)) ProRelease *); // no-warning

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-objc-lifetime.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-objc-lifetime.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-objc-lifetime.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -fblocks -Wexplicit-ownership-type -verify -Wno-objc-root-class %s
-// rdar://10244607
-
-typedef const struct __CFString * CFStringRef;
- at class NSString;
-
-NSString *CFBridgingRelease();
-
-typedef NSString * PNSString;
-
-typedef __autoreleasing NSString * AUTORELEASEPNSString;
-
- at interface I @end
-
- at implementation I
-- (CFStringRef)myString
-{
-    CFStringRef myString =
-      (__bridge CFStringRef) (__strong NSString *)CFBridgingRelease(); // expected-error {{explicit ownership qualifier on cast result has no effect}}
-
-    myString =
-      (__bridge CFStringRef) (__autoreleasing PNSString) CFBridgingRelease(); // expected-error {{explicit ownership qualifier on cast result has no effect}}
-    myString =
-      (__bridge CFStringRef) (AUTORELEASEPNSString) CFBridgingRelease(); // OK
-    myString =
-      (__bridge CFStringRef) (typeof(__strong NSString *)) CFBridgingRelease(); // expected-error {{explicit ownership qualifier on cast result has no effect}}
-    return myString;
-}
-
-- (void)decodeValueOfObjCType:(const char *)type at:(void *)addr {
-        __autoreleasing id *stuff = (__autoreleasing id *)addr;
-}
- at end
-
-// rdar://problem/10711456
-__strong I *__strong test1; // expected-error {{the type 'I *__strong' is already explicitly ownership-qualified}}
-__strong I *(__strong test2); // expected-error {{the type 'I *__strong' is already explicitly ownership-qualified}}
-__strong I *(__strong (test3)); // expected-error {{the type 'I *__strong' is already explicitly ownership-qualified}}
-__unsafe_unretained __typeof__(test3) test4;
-typedef __strong I *strong_I;
-__unsafe_unretained strong_I test5;
-
-// rdar://10907090
-typedef void (^T) ();
- at interface NSObject @end
- at protocol P;
- at interface Radar10907090 @end
-
- at implementation Radar10907090
-- (void) MMM : (NSObject*) arg0 : (NSObject<P>*&)arg : (id) arg1 : (id<P>&) arg2 {} // expected-warning {{method parameter of type 'NSObject<P> *__autoreleasing &' with no explicit ownership}} \
-					// expected-warning {{method parameter of type '__autoreleasing id<P> &' with no explicit ownership}}
-- (void) MM : (NSObject*) arg0 : (__strong NSObject**)arg : (id) arg1 : (__strong id*) arg2 {}
-- (void) M : (NSObject**)arg0 : (id*)arg {} // expected-warning {{method parameter of type 'NSObject *__autoreleasing *' with no explicit ownership}} \
-                                            // expected-warning {{method parameter of type '__autoreleasing id *' with no explicit ownership}}
-- (void) N : (__strong NSObject***) arg0 : (__strong NSObject<P>***)arg : (float**) arg1 : (double) arg2 {} 
-- (void) BLOCK : (T&) arg0 : (T)arg  : (__strong T*) arg1 {} // expected-warning {{method parameter of type '__autoreleasing T &' (aka 'void (^__autoreleasing &)()') with no explicit ownership}}
- at end
-
-// rdar://12280826
- at class NSMutableDictionary, NSError;
- at interface Radar12280826
-- (void)createInferiorTransportAndSetEnvironment:(NSMutableDictionary*)environment error:(__autoreleasing NSError*&)error;
- at end
-
- at implementation Radar12280826
-- (void)createInferiorTransportAndSetEnvironment:(NSMutableDictionary*)environment error:(__autoreleasing NSError*&)error {}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-overloading.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-overloading.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-overloading.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,202 +0,0 @@
-// RUN: %clang_cc1 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -verify -fblocks -Wno-objc-root-class %s
-
-// Simple ownership conversions + diagnostics.
-int &f0(id __strong const *); // expected-note{{candidate function not viable: 1st argument ('__weak id *') has __weak ownership, but parameter has __strong ownership}}
-
-void test_f0() {
-  id __strong *sip;
-  id __strong const *csip;
-  id __weak *wip;
-  id __autoreleasing *aip;
-  id __unsafe_unretained *uip;
-
-  int &ir1 = f0(sip);
-  int &ir2 = f0(csip);
-  int &ir3 = f0(aip);
-  int &ir4 = f0(uip);
-  f0(wip); // expected-error{{no matching function for call to 'f0'}}
-}
-
-// Simple overloading
-int &f1(id __strong const *);
-float &f1(id __weak const *);
-
-void test_f1() {
-  id __strong *sip;
-  id __strong const *csip;
-  id __weak *wip;
-  id __autoreleasing *aip;
-  id __unsafe_unretained *uip;
-
-  int &ir1 = f1(sip);
-  int &ir2 = f1(csip);
-  float &fr1 = f1(wip);
-  int &ir3 = f1(aip);
-  int &ir4 = f1(uip);
-}
-
-// Simple overloading
-int &f2(id __strong const *); // expected-note{{candidate function}}
-float &f2(id __autoreleasing const *); // expected-note{{candidate function}}
-
-void test_f2() {
-  id __strong *sip;
-  id __strong const *csip;
-  id __weak *wip;
-  id __autoreleasing *aip;
-  id __unsafe_unretained *uip;
-
-  // Prefer non-ownership conversions to ownership conversions.
-  int &ir1 = f2(sip);
-  int &ir2 = f2(csip);
-  float &fr1 = f2(aip);
-
-  f2(uip); // expected-error{{call to 'f2' is ambiguous}}
-}
-
-// Writeback conversion
-int &f3(id __autoreleasing *); // expected-note{{candidate function not viable: 1st argument ('__unsafe_unretained id *') has __unsafe_unretained ownership, but parameter has __autoreleasing ownership}}
-
-void test_f3() {
-  id __strong sip;
-  id __weak wip;
-  id __autoreleasing aip;
-  id __unsafe_unretained uip;
-
-  int &ir1 = f3(&sip);
-  int &ir2 = f3(&wip);
-  int &ir3 = f3(&aip);
-  f3(&uip); // expected-error{{no matching function for call to 'f3'}}
-}
-
-// Writeback conversion vs. no conversion
-int &f4(id __autoreleasing *);
-float &f4(id __strong *);
-
-void test_f4() {
-  id __strong sip;
-  id __weak wip;
-  id __autoreleasing aip;
-  extern __weak id weak_global_ptr;
-
-  float &fr1 = f4(&sip);
-  int &ir1 = f4(&wip);
-  int &ir2 = f4(&aip);
-  int &ir3 = f4(&weak_global_ptr); // expected-error{{passing address of non-local object to __autoreleasing parameter for write-back}}
-}
-
-// Writeback conversion vs. other conversion.
-int &f5(id __autoreleasing *);
-float &f5(id const __unsafe_unretained *);
-
-void test_f5() {
-  id __strong sip;
-  id __weak wip;
-  id __autoreleasing aip;
-
-  int &ir1 = f5(&wip);
-  float &fr1 = f5(&sip);
-  int &ir2 = f5(&aip);
-}
-
- at interface A
- at end
-
-int &f6(id __autoreleasing *);
-float &f6(id const __unsafe_unretained *);
-
-void test_f6() {
-  A* __strong sip;
-  A* __weak wip;
-  A* __autoreleasing aip;
-
-  int &ir1 = f6(&wip);
-  float &fr1 = f6(&sip);
-  int &ir2 = f6(&aip);
-}
-
-// Reference binding
-void f7(__strong id&); // expected-note{{candidate function not viable: 1st argument ('__weak id') has __weak ownership, but parameter has __strong ownership}} \
- // expected-note{{candidate function not viable: 1st argument ('__autoreleasing id') has __autoreleasing ownership, but parameter has __strong ownership}} \
- // expected-note{{candidate function not viable: 1st argument ('__unsafe_unretained id') has __unsafe_unretained ownership, but parameter has __strong ownership}}
-
-void test_f7() {
-  __strong id strong_id;
-  __weak id weak_id;
-  __autoreleasing id autoreleasing_id;
-  __unsafe_unretained id unsafe_id;
-  f7(strong_id);
-  f7(weak_id); // expected-error{{no matching function for call to 'f7'}}
-  f7(autoreleasing_id); // expected-error{{no matching function for call to 'f7'}}
-  f7(unsafe_id); // expected-error{{no matching function for call to 'f7'}}
-}
-
-void f8(const __strong id&);
-
-void test_f8() {
-  __strong id strong_id;
-  __weak id weak_id;
-  __autoreleasing id autoreleasing_id;
-  __unsafe_unretained id unsafe_id;
-
-  f8(strong_id);
-  f8(weak_id);
-  f8(autoreleasing_id);
-  f8(unsafe_id);
-}
-
-int &f9(__strong id&);
-float &f9(const __autoreleasing id&);
-
-void test_f9() {
-  __strong id strong_id;
-  __weak id weak_id;
-  __autoreleasing id autoreleasing_id;
-  __unsafe_unretained id unsafe_id;
-
-  int &ir1 = f9(strong_id);
-  float &fr1 = f9(autoreleasing_id);
-  float &fr2 = f9(unsafe_id);
-  float &fr2a = f9(weak_id);
-
-  __strong A *strong_a;
-  __weak A *weak_a;
-  __autoreleasing A *autoreleasing_a;
-  __unsafe_unretained A *unsafe_unretained_a;
-  float &fr3 = f9(strong_a);
-  float &fr4 = f9(autoreleasing_a);
-  float &fr5 = f9(unsafe_unretained_a);
-  float &fr6 = f9(weak_a);
-
-  const __autoreleasing id& ar1 = strong_a;
-  const __autoreleasing id& ar2 = autoreleasing_a;
-  const __autoreleasing id& ar3 = unsafe_unretained_a;
-  const __autoreleasing id& ar4 = weak_a;
-}
-
-// rdar://9790531
-void f9790531(void *inClientData); // expected-note {{candidate function not viable: cannot implicitly convert argument of type 'MixerEQGraphTestDelegate *const __strong' to 'void *' for 1st argument under ARC}}
-void f9790531_1(struct S*inClientData); // expected-note {{candidate function not viable}}
-void f9790531_2(char * inClientData); // expected-note {{candidate function not viable}}
-
- at class UIApplication;
-
- at interface MixerEQGraphTestDelegate
-- (void)applicationDidFinishLaunching;
- at end
-
- at implementation MixerEQGraphTestDelegate
-- (void)applicationDidFinishLaunching {
-    f9790531(self); // expected-error {{no matching function for call to 'f9790531'}}
-    f9790531_1(self); // expected-error {{no matching function for call to 'f9790531_1'}}
-    f9790531_2(self); // expected-error {{no matching function for call to 'f9790531_2'}}
-}
- at end
-
-class rdar10142572 {
-  id f() __attribute__((ns_returns_retained));
-  id g(); // expected-note{{previous declaration}}
-};
-
-id rdar10142572::f() { return 0; } // okay: merged down
-id __attribute__((ns_returns_retained)) rdar10142572::g() { return 0; } // expected-error{{function declared with the ns_returns_retained attribute was previously declared without the ns_returns_retained attribute}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-ppe.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-ppe.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-ppe.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-arc %s
-
-// Make sure the ARC auto-deduction of id* in unevaluated contexts
-// works correctly in cases where we can't immediately tell whether the
-// context is unevaluated.
-
-namespace std {
-  class type_info;
-}
-
-int& NP(void*);
-void test1() { (void)typeid(NP((void*)(id*)0)); }
-
-class Poly { virtual ~Poly(); };
-Poly& P(void*);
-void test2() { (void)typeid(P((void*)(id*)0)); } // expected-error {{pointer to non-const type 'id'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-system-header.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-system-header.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-system-header.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fobjc-arc -isystem %S/Inputs %s -verify
-
-#include <arc-system-header.h>
-
-void f(A* a) {
-  a->data.void_ptr = 0;
-  a->data.a_b.b = 0; // expected-error{{'a_b' is unavailable: this system field has retaining ownership}}
-}
-// expected-note at arc-system-header.h:10{{declaration has been explicitly marked unavailable here}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-templates.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-templates.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-templates.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,294 +0,0 @@
-// RUN: %clang_cc1 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -verify -fblocks %s
-
- at interface A
- at end
-
- at class NSString;
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-// Instantiation for reference/pointer types that will get lifetime
-// adjustments.
-template<typename T>
-struct X0 {
-  typedef T* pointer; // okay: ends up being strong.
-  typedef T& reference; // okay: ends up being strong
-};
-
-void test_X0() {
-  X0<id> x0id;
-  X0<A*> x0a;
-  X0<__strong A*> x0sa;
-
-  id __strong *ptr;
-  id __strong val;
-  X0<__strong id>::pointer &ptr_ref = ptr;
-  X0<__strong id>::reference ref = val;
-}
-
-int check_infer_strong[is_same<id, __strong id>::value? 1 : -1];
-
-// Check template argument deduction (e.g., for specialization) using
-// lifetime qualifiers.
-template<typename T>
-struct is_pointer_strong {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_pointer_strong<__strong T*> {
-  static const bool value = true;
-};
-
-int check_ptr_strong1[is_pointer_strong<__strong id*>::value? 1 : -1];
-int check_ptr_strong2[is_pointer_strong<__weak id*>::value? -1 : 1];
-int check_ptr_strong3[is_pointer_strong<__autoreleasing id*>::value? -1 : 1];
-int check_ptr_strong4[is_pointer_strong<__unsafe_unretained id*>::value? -1 : 1];
-int check_ptr_strong5[is_pointer_strong<id>::value? -1 : 1];
-
-// Check substitution into lifetime-qualified dependent types.
-template<typename T>
-struct make_strong_pointer {
-  typedef __strong T *type;
-};
-
-template<typename T>
-struct make_strong_pointer<__weak T> {
-  typedef __strong T *type;
-};
-
-template<typename T>
-struct make_strong_pointer<__autoreleasing T> {
-  typedef __strong T *type;
-};
-
-template<typename T>
-struct make_strong_pointer<__unsafe_unretained T> {
-  typedef __strong T *type;
-};
-
-// Adding qualifiers
-int check_make_strong1[is_same<make_strong_pointer<id>::type, __strong id *>::value ? 1 : -1];
-int check_make_strong2[is_same<make_strong_pointer<A*>::type, A* __strong *>::value ? 1 : -1];
-
-// Adding redundant qualifiers
-int check_make_strong3[is_same<make_strong_pointer<__strong id>::type, __strong id *>::value ? 1 : -1];
-int check_make_strong4[is_same<make_strong_pointer<__strong A*>::type, A* __strong *>::value ? 1 : -1];
-
-// Adding nonsensical qualifiers.
-int check_make_strong5[is_same<make_strong_pointer<int>::type, int *>::value ? 1 : -1];
-int check_make_strong6[is_same<make_strong_pointer<__weak id>::type, __strong id *>::value ? 1 : -1];
-
-template<typename T>
-struct make_weak {
-  typedef __weak T type;
-};
-
-int check_make_weak0[is_same<make_weak<id>::type, __weak id>::value? 1 : -1];
-int check_make_weak1[is_same<make_weak<__strong id>::type, __weak id>::value? 1 : -1];
-int check_make_weak2[is_same<make_weak<__autoreleasing id>::type, __weak id>::value? 1 : -1];
-
-template<typename T>
-struct make_weak_fail {
-  typedef T T_type;
-  typedef __weak T_type type; // expected-error{{the type 'T_type' (aka '__weak id') is already explicitly ownership-qualified}} \
-  // expected-error{{the type 'T_type' (aka '__strong id') is already explicitly ownership-qualified}}
-};
-
-int check_make_weak_fail0[is_same<make_weak_fail<__weak id>::type, __weak id>::value? 1 : -1]; // expected-note{{in instantiation of template class 'make_weak_fail<__weak id>' requested here}}
-
-int check_make_weak_fail1[is_same<make_weak_fail<id>::type, __weak id>::value? -1 : 1]; // expected-note{{in instantiation of template class 'make_weak_fail<id>' requested here}}
-
-// Check template argument deduction from function templates.
-template<typename T> struct identity { };
-
-template<typename T> identity<T> accept_strong_ptr(__strong T*);
-template<typename T> identity<T> accept_strong_ref(__strong T&);
-
-template<typename T> identity<T> accept_any_ptr(T*);
-template<typename T> identity<T> accept_any_ref(T&);
-
-void test_func_deduction_id() {
-  __strong id *sip;
-  __weak id *wip;
-  __autoreleasing id *aip;
-  __unsafe_unretained id *uip;
-
-  identity<id> res1 = accept_strong_ptr(sip);
-  identity<__strong id> res2 = accept_any_ptr(sip);
-
-  __strong id si;
-  __weak id wi;
-  __autoreleasing id ai;
-  __unsafe_unretained id ui;
-  identity<id> res3 = accept_strong_ref(si);
-  identity<__strong id> res4 = accept_any_ref(si);
-  identity<__weak id> res5 = accept_any_ref(wi);
-  identity<__autoreleasing id> res6 = accept_any_ref(ai);
-  identity<__unsafe_unretained id> res7 = accept_any_ref(ui);
-}
-
-void test_func_deduction_A() {
-  __strong A * *sip;
-  __weak A * *wip;
-  __autoreleasing A * *aip;
-  __unsafe_unretained A * *uip;
-
-  identity<A *> res1 = accept_strong_ptr(sip);
-  identity<__strong A *> res2 = accept_any_ptr(sip);
-
-  __strong A * si;
-  __weak A * wi;
-  __autoreleasing A * ai;
-  __unsafe_unretained A * ui;
-  identity<A *> res3 = accept_strong_ref(si);
-  identity<__strong A *> res4 = accept_any_ref(si);
-  identity<__weak A *> res5 = accept_any_ref(wi);
-  identity<__autoreleasing A *> res6 = accept_any_ref(ai);
-  identity<__unsafe_unretained A *> res7 = accept_any_ref(ui);
-}
-
-// Test partial ordering (qualified vs. non-qualified).
-template<typename T>
-struct classify_pointer_pointer {
-  static const unsigned value = 0;
-};
-
-template<typename T>
-struct classify_pointer_pointer<T*> {
-  static const unsigned value = 1;
-};
-
-template<typename T>
-struct classify_pointer_pointer<__strong T*> {
-  static const unsigned value = 2;
-};
-
-template<typename T>
-struct classify_pointer_pointer<__weak T*> {
-  static const unsigned value = 3;
-};
-
-template<typename T>
-struct classify_pointer_pointer<T&> {
-  static const unsigned value = 4;
-};
-
-template<typename T>
-struct classify_pointer_pointer<__strong T&> {
-  static const unsigned value = 5;
-};
-
-template<typename T>
-struct classify_pointer_pointer<__weak T&> {
-  static const unsigned value = 6;
-};
-
-int classify_ptr1[classify_pointer_pointer<int>::value == 0? 1 : -1];
-int classify_ptr2[classify_pointer_pointer<int *>::value == 1? 1 : -1];
-int classify_ptr3[classify_pointer_pointer<id __strong *>::value == 2? 1 : -1];
-int classify_ptr4[classify_pointer_pointer<id __weak *>::value == 3? 1 : -1];
-int classify_ptr5[classify_pointer_pointer<int&>::value == 4? 1 : -1];
-int classify_ptr6[classify_pointer_pointer<id __strong&>::value == 5? 1 : -1];
-int classify_ptr7[classify_pointer_pointer<id __weak&>::value == 6? 1 : -1];
-int classify_ptr8[classify_pointer_pointer<id __autoreleasing&>::value == 4? 1 : -1];
-int classify_ptr9[classify_pointer_pointer<id __unsafe_unretained&>::value == 4? 1 : -1];
-int classify_ptr10[classify_pointer_pointer<id __autoreleasing *>::value == 1? 1 : -1];
-int classify_ptr11[classify_pointer_pointer<id __unsafe_unretained *>::value == 1? 1 : -1];
-int classify_ptr12[classify_pointer_pointer<int *>::value == 1? 1 : -1];
-int classify_ptr13[classify_pointer_pointer<A * __strong *>::value == 2? 1 : -1];
-int classify_ptr14[classify_pointer_pointer<A * __weak *>::value == 3? 1 : -1];
-int classify_ptr15[classify_pointer_pointer<int&>::value == 4? 1 : -1];
-int classify_ptr16[classify_pointer_pointer<A * __strong&>::value == 5? 1 : -1];
-int classify_ptr17[classify_pointer_pointer<A * __weak&>::value == 6? 1 : -1];
-int classify_ptr18[classify_pointer_pointer<A * __autoreleasing&>::value == 4? 1 : -1];
-int classify_ptr19[classify_pointer_pointer<A * __unsafe_unretained&>::value == 4? 1 : -1];
-int classify_ptr20[classify_pointer_pointer<A * __autoreleasing *>::value == 1? 1 : -1];
-int classify_ptr21[classify_pointer_pointer<A * __unsafe_unretained *>::value == 1? 1 : -1];
-
-template<typename T> int& qual_vs_unqual_ptr(__strong T*);
-template<typename T> double& qual_vs_unqual_ptr(__weak T*);
-template<typename T> float& qual_vs_unqual_ptr(T*);
-template<typename T> int& qual_vs_unqual_ref(__strong T&);
-template<typename T> double& qual_vs_unqual_ref(__weak T&);
-template<typename T> float& qual_vs_unqual_ref(T&);
-
-void test_qual_vs_unqual_id() {
-  __strong id *sip;
-  __weak id *wip;
-  __autoreleasing id *aip;
-  __unsafe_unretained id *uip;
-
-  int &ir1 = qual_vs_unqual_ptr(sip);
-  double &dr1 = qual_vs_unqual_ptr(wip);
-  float &fr1 = qual_vs_unqual_ptr(aip);
-  float &fr2 = qual_vs_unqual_ptr(uip);
-
-  int &ir2 = qual_vs_unqual_ref(*sip);
-  double &dr2 = qual_vs_unqual_ref(*wip);
-  float &fr3 = qual_vs_unqual_ref(*aip);
-  float &fr4 = qual_vs_unqual_ref(*uip);
-}
-
-void test_qual_vs_unqual_a() {
-  __strong A * *sap;
-  __weak A * *wap;
-  __autoreleasing A * *aap;
-  __unsafe_unretained A * *uap;
-
-  int &ir1 = qual_vs_unqual_ptr(sap);
-  double &dr1 = qual_vs_unqual_ptr(wap);
-  float &fr1 = qual_vs_unqual_ptr(aap);
-  float &fr2 = qual_vs_unqual_ptr(uap);
-
-  int &ir2 = qual_vs_unqual_ref(*sap);
-  double &dr2 = qual_vs_unqual_ref(*wap);
-  float &fr3 = qual_vs_unqual_ref(*aap);
-  float &fr4 = qual_vs_unqual_ref(*uap);
-}
-
-namespace rdar9828157 {
-  // Template argument deduction involving lifetime qualifiers and
-  // non-lifetime types.
-  class A { };
-
-  template<typename T> float& f(T&);
-  template<typename T> int& f(__strong T&);
-  template<typename T> double& f(__weak T&);
-
-  void test_f(A* ap) {
-    float &fr = (f)(ap);  
-  }
-}
-
-namespace rdar10862386 {
-  // More deduction with lifetime qualifiers.
-  template <typename T>
-  int testing(const T &) {
-      return 1;
-  }
-
-  void test() {
-     testing(1);
-      testing("hi");
-      testing<NSString *>(@"hi");
-      testing(@"hi");
- }
-}
-
-namespace rdar12367446 {
-  template <class T> class A;
-  template <class R> class A<R()> {};
-
-  void test() {
-    A<id()> value;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-type-conversion.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-type-conversion.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-type-conversion.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,218 +0,0 @@
-// RUN: %clang_cc1 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -verify -fblocks %s
-// rdar://8843600
-
-void * cvt(id arg) // expected-note{{candidate function not viable: cannot convert argument of incomplete type 'void *' to '__strong id'}}
-{
-  void* voidp_val;
-  (void)(int*)arg; // expected-error {{cast of an Objective-C pointer to 'int *' is disallowed with ARC}}
-  (void)(id)arg;
-  (void)(__autoreleasing id*)arg; // expected-error{{C-style cast from 'id' to '__autoreleasing id *' casts away qualifiers}}
-  (void)(id*)arg; // expected-error{{C-style cast from 'id' to '__strong id *' casts away qualifiers}}
-
-  (void)(__autoreleasing id**)voidp_val;
-  (void)(void*)voidp_val;
-  (void)(void**)arg; // expected-error {{cast of an Objective-C pointer to 'void **' is disallowed}}
-  cvt((void*)arg); // expected-error {{no matching function for call to 'cvt'}}
-  cvt(0);
-  (void)(__strong id**)(0);
-
-  // FIXME: Diagnostic could be better here.
-  return arg; // expected-error{{cannot initialize return object of type 'void *' with an lvalue of type '__strong id'}}
-}
-
-// rdar://8898937
-namespace rdar8898937 {
-
-typedef void (^dispatch_block_t)(void);
-
-void dispatch_once(dispatch_block_t block);
-static void _dispatch_once(dispatch_block_t block)
-{
-  dispatch_once(block);
-}
-
-}
-
-void static_casts(id arg) {
-  void* voidp_val;
-  (void)static_cast<int*>(arg); // expected-error {{cannot cast from type 'id' to pointer type 'int *'}}
-  (void)static_cast<id>(arg);
-  (void)static_cast<__autoreleasing id*>(arg); // expected-error{{cannot cast from type 'id' to pointer type '__autoreleasing id *'}}
-  (void)static_cast<id*>(arg); // expected-error {{cannot cast from type 'id' to pointer type '__strong id *'}}
-
-  (void)static_cast<__autoreleasing id**>(voidp_val);
-  (void)static_cast<void*>(voidp_val);
-  (void)static_cast<void**>(arg); // expected-error {{cannot cast from type 'id' to pointer type 'void **'}}
-  (void)static_cast<__strong id**>(0);  
-
-  __strong id *idp;
-  (void)static_cast<__autoreleasing id*>(idp); // expected-error{{static_cast from '__strong id *' to '__autoreleasing id *' is not allowed}}
-  (void)static_cast<__weak id*>(idp); // expected-error{{static_cast from '__strong id *' to '__weak id *' is not allowed}}
-}
-
-void test_const_cast(__strong id *sip, __weak id *wip, 
-                     const __strong id *csip, __weak const id *cwip) {
-  // Cannot use const_cast to cast between ownership qualifications or
-  // add/remove ownership qualifications.
-  (void)const_cast<__strong id *>(wip); // expected-error{{is not allowed}}
-  (void)const_cast<__weak id *>(sip); // expected-error{{is not allowed}}
-
-  // It's acceptable to cast away constness.
-  (void)const_cast<__strong id *>(csip);
-  (void)const_cast<__weak id *>(cwip);
-}
-
-void test_reinterpret_cast(__strong id *sip, __weak id *wip, 
-                           const __strong id *csip, __weak const id *cwip) {
-  // Okay to reinterpret_cast to add/remove/change ownership
-  // qualifications.
-  (void)reinterpret_cast<__strong id *>(wip);
-  (void)reinterpret_cast<__weak id *>(sip);
-
-  // Not allowed to cast away constness
-  (void)reinterpret_cast<__strong id *>(csip); // expected-error{{reinterpret_cast from '__strong id const *' to '__strong id *' casts away qualifiers}}
-  (void)reinterpret_cast<__weak id *>(cwip); // expected-error{{reinterpret_cast from '__weak id const *' to '__weak id *' casts away qualifiers}}
-  (void)reinterpret_cast<__weak id *>(csip); // expected-error{{reinterpret_cast from '__strong id const *' to '__weak id *' casts away qualifiers}}
-  (void)reinterpret_cast<__strong id *>(cwip); // expected-error{{reinterpret_cast from '__weak id const *' to '__strong id *' casts away qualifiers}}
-}
-
-void test_cstyle_cast(__strong id *sip, __weak id *wip, 
-                      const __strong id *csip, __weak const id *cwip) {
-  // C-style casts aren't allowed to change Objective-C ownership
-  // qualifiers (beyond what the normal implicit conversion allows).
-
-  (void)(__strong id *)wip; // expected-error{{C-style cast from '__weak id *' to '__strong id *' casts away qualifiers}}
-  (void)(__strong id *)cwip; // expected-error{{C-style cast from '__weak id const *' to '__strong id *' casts away qualifiers}}
-  (void)(__weak id *)sip; // expected-error{{C-style cast from '__strong id *' to '__weak id *' casts away qualifiers}}
-  (void)(__weak id *)csip; // expected-error{{C-style cast from '__strong id const *' to '__weak id *' casts away qualifiers}}
-
-  (void)(__strong const id *)wip; // expected-error{{C-style cast from '__weak id *' to '__strong id const *' casts away qualifiers}}
-  (void)(__strong const id *)cwip; // expected-error{{C-style cast from '__weak id const *' to '__strong id const *' casts away qualifiers}}
-  (void)(__weak const id *)sip; // expected-error{{C-style cast from '__strong id *' to '__weak id const *' casts away qualifiers}}
-  (void)(__weak const id *)csip; // expected-error{{C-style cast from '__strong id const *' to '__weak id const *' casts away qualifiers}}
-  (void)(__autoreleasing const id *)wip; // expected-error{{C-style cast from '__weak id *' to '__autoreleasing id const *' casts away qualifiers}}
-  (void)(__autoreleasing const id *)cwip; // expected-error{{C-style cast from '__weak id const *' to '__autoreleasing id const *' casts away qualifiers}}
-  (void)(__autoreleasing const id *)sip;
-  (void)(__autoreleasing const id *)csip;
-}
-
-void test_functional_cast(__strong id *sip, __weak id *wip,
-                          __autoreleasing id *aip) {
-  // Functional casts aren't allowed to change Objective-C ownership
-  // qualifiers (beyond what the normal implicit conversion allows).
-
-  typedef __strong id *strong_id_pointer;
-  typedef __weak id *weak_id_pointer;
-  typedef __autoreleasing id *autoreleasing_id_pointer;
-
-  typedef const __strong id *const_strong_id_pointer;
-  typedef const __weak id *const_weak_id_pointer;
-  typedef const __autoreleasing id *const_autoreleasing_id_pointer;
-
-  (void)strong_id_pointer(wip); // expected-error{{functional-style cast from '__weak id *' to 'strong_id_pointer' (aka '__strong id *') casts away qualifiers}}
-  (void)weak_id_pointer(sip); // expected-error{{functional-style cast from '__strong id *' to 'weak_id_pointer' (aka '__weak id *') casts away qualifiers}}
-  (void)autoreleasing_id_pointer(sip); // expected-error{{functional-style cast from '__strong id *' to 'autoreleasing_id_pointer' (aka '__autoreleasing id *') casts away qualifiers}}
-  (void)autoreleasing_id_pointer(wip); // expected-error{{functional-style cast from '__weak id *' to 'autoreleasing_id_pointer' (aka '__autoreleasing id *') casts away qualifiers}}
-  (void)const_strong_id_pointer(wip); // expected-error{{functional-style cast from '__weak id *' to 'const_strong_id_pointer' (aka 'const __strong id *') casts away qualifiers}}
-  (void)const_weak_id_pointer(sip); // expected-error{{functional-style cast from '__strong id *' to 'const_weak_id_pointer' (aka 'const __weak id *') casts away qualifiers}}
-  (void)const_autoreleasing_id_pointer(sip);
-  (void)const_autoreleasing_id_pointer(aip);
-  (void)const_autoreleasing_id_pointer(wip); // expected-error{{functional-style cast from '__weak id *' to 'const_autoreleasing_id_pointer' (aka 'const __autoreleasing id *') casts away qualifiers}}
-}
-
-void test_unsafe_unretained(__strong id *sip, __weak id *wip,
-                            __autoreleasing id *aip,
-                            __unsafe_unretained id *uip,
-                            const __unsafe_unretained id *cuip) {
-  uip = sip; // expected-error{{assigning to '__unsafe_unretained id *' from incompatible type '__strong id *'}}
-  uip = wip; // expected-error{{assigning to '__unsafe_unretained id *' from incompatible type '__weak id *'}}
-  uip = aip; // expected-error{{assigning to '__unsafe_unretained id *' from incompatible type '__autoreleasing id *'}}
-
-  cuip = sip;
-  cuip = wip; // expected-error{{assigning to '__unsafe_unretained id const *' from incompatible type '__weak id *'}}
-  cuip = aip;
-}
-
-void to_void(__strong id *sip, __weak id *wip,
-             __autoreleasing id *aip,
-             __unsafe_unretained id *uip) {
-  void *vp1 = sip;
-  void *vp2 = wip;
-  void *vp3 = aip;
-  void *vp4 = uip;
-  (void)(void*)sip;
-  (void)(void*)wip;
-  (void)(void*)aip;
-  (void)(void*)uip;
-  (void)static_cast<void*>(sip);
-  (void)static_cast<void*>(wip);
-  (void)static_cast<void*>(aip);
-  (void)static_cast<void*>(uip);
-  (void)reinterpret_cast<void*>(sip);
-  (void)reinterpret_cast<void*>(wip);
-  (void)reinterpret_cast<void*>(aip);
-  (void)reinterpret_cast<void*>(uip);
-
-  (void)(void*)&sip;
-  (void)(void*)&wip;
-  (void)(void*)&aip;
-  (void)(void*)&uip;
-  (void)static_cast<void*>(&sip);
-  (void)static_cast<void*>(&wip);
-  (void)static_cast<void*>(&aip);
-  (void)static_cast<void*>(&uip);
-  (void)reinterpret_cast<void*>(&sip);
-  (void)reinterpret_cast<void*>(&wip);
-  (void)reinterpret_cast<void*>(&aip);
-  (void)reinterpret_cast<void*>(&uip);
-}
-
-void from_void(void *vp) {
-  __strong id *sip = (__strong id *)vp;
-  __weak id *wip = (__weak id *)vp;
-  __autoreleasing id *aip = (__autoreleasing id *)vp;
-  __unsafe_unretained id *uip = (__unsafe_unretained id *)vp;
-  __strong id *sip2 = static_cast<__strong id *>(vp);
-  __weak id *wip2 = static_cast<__weak id *>(vp);
-  __autoreleasing id *aip2 = static_cast<__autoreleasing id *>(vp);
-  __unsafe_unretained id *uip2 = static_cast<__unsafe_unretained id *>(vp);
-  __strong id *sip3 = reinterpret_cast<__strong id *>(vp);
-  __weak id *wip3 = reinterpret_cast<__weak id *>(vp);
-  __autoreleasing id *aip3 = reinterpret_cast<__autoreleasing id *>(vp);
-  __unsafe_unretained id *uip3 = reinterpret_cast<__unsafe_unretained id *>(vp);
-
-  __strong id **sipp = (__strong id **)vp;
-  __weak id **wipp = (__weak id **)vp;
-  __autoreleasing id **aipp = (__autoreleasing id **)vp;
-  __unsafe_unretained id **uipp = (__unsafe_unretained id **)vp;
-
-  sip = vp; // expected-error{{assigning to '__strong id *' from incompatible type 'void *'}}
-  wip = vp; // expected-error{{assigning to '__weak id *' from incompatible type 'void *'}}
-  aip = vp; // expected-error{{assigning to '__autoreleasing id *' from incompatible type 'void *'}}
-  uip = vp; // expected-error{{assigning to '__unsafe_unretained id *' from incompatible type 'void *'}}
-}
-
-typedef void (^Block)();
-typedef void (^Block_strong)() __strong;
-typedef void (^Block_autoreleasing)() __autoreleasing;
-
- at class NSString;
-
-void ownership_transfer_in_cast(void *vp, Block *pblk) {
-  __strong NSString **sip2 = static_cast<NSString **>(static_cast<__strong id *>(vp));
-  __strong NSString **&si2pref = static_cast<NSString **&>(sip2);
-  __weak NSString **wip2 = static_cast<NSString **>(static_cast<__weak id *>(vp));
-  __autoreleasing id *aip2 = static_cast<id *>(static_cast<__autoreleasing id *>(vp));
-  __unsafe_unretained id *uip2 = static_cast<id *>(static_cast<__unsafe_unretained id *>(vp));
-  __strong id *sip3 = reinterpret_cast<id *>(reinterpret_cast<__strong id *>(vp));
-  __weak id *wip3 = reinterpret_cast<id *>(reinterpret_cast<__weak id *>(vp));
-  __autoreleasing id *aip3 = reinterpret_cast<id *>(reinterpret_cast<__autoreleasing id *>(vp));
-  __unsafe_unretained id *uip3 = reinterpret_cast<id *>(reinterpret_cast<__unsafe_unretained id *>(vp));
-
-  Block_strong blk_strong1;
-  Block_strong blk_strong2 = static_cast<Block>(blk_strong1);
-  Block_autoreleasing *blk_auto = static_cast<Block*>(pblk);
-}
-
-// Make sure we don't crash.
-void writeback_test(NSString & &) {} // expected-error {{type name declared as a reference to a reference}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-type-traits.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-type-traits.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-type-traits.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,215 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -verify -std=c++11 %s
-// expected-no-diagnostics
-
-// Check the results of the various type-trait query functions on
-// lifetime-qualified types in ARC.
-
-#define JOIN3(X,Y) X ## Y
-#define JOIN2(X,Y) JOIN3(X,Y)
-#define JOIN(X,Y) JOIN2(X,Y)
-
-#define TRAIT_IS_TRUE(Trait, Type) char JOIN2(Trait,__LINE__)[Trait(Type)? 1 : -1]
-#define TRAIT_IS_FALSE(Trait, Type) char JOIN2(Trait,__LINE__)[Trait(Type)? -1 : 1]
-#define TRAIT_IS_TRUE_2(Trait, Type1, Type2) char JOIN2(Trait,__LINE__)[Trait(Type1, Type2)? 1 : -1]
-#define TRAIT_IS_FALSE_2(Trait, Type1, Type2) char JOIN2(Trait,__LINE__)[Trait(Type1, Type2)? -1 : 1]
-  
-struct HasStrong { id obj; };
-struct HasWeak { __weak id obj; };
-struct HasUnsafeUnretained { __unsafe_unretained id obj; };
-
-// __has_nothrow_assign
-TRAIT_IS_TRUE(__has_nothrow_assign, __strong id);
-TRAIT_IS_TRUE(__has_nothrow_assign, __weak id);
-TRAIT_IS_TRUE(__has_nothrow_assign, __autoreleasing id);
-TRAIT_IS_TRUE(__has_nothrow_assign, __unsafe_unretained id);
-TRAIT_IS_TRUE(__has_nothrow_assign, HasStrong);
-TRAIT_IS_TRUE(__has_nothrow_assign, HasWeak);
-TRAIT_IS_TRUE(__has_nothrow_assign, HasUnsafeUnretained);
-
-// __has_nothrow_copy
-TRAIT_IS_TRUE(__has_nothrow_copy, __strong id);
-TRAIT_IS_TRUE(__has_nothrow_copy, __weak id);
-TRAIT_IS_TRUE(__has_nothrow_copy, __autoreleasing id);
-TRAIT_IS_TRUE(__has_nothrow_copy, __unsafe_unretained id);
-TRAIT_IS_TRUE(__has_nothrow_copy, HasStrong);
-TRAIT_IS_TRUE(__has_nothrow_copy, HasWeak);
-TRAIT_IS_TRUE(__has_nothrow_copy, HasUnsafeUnretained);
-
-// __has_nothrow_constructor
-TRAIT_IS_TRUE(__has_nothrow_constructor, __strong id);
-TRAIT_IS_TRUE(__has_nothrow_constructor, __weak id);
-TRAIT_IS_TRUE(__has_nothrow_constructor, __autoreleasing id);
-TRAIT_IS_TRUE(__has_nothrow_constructor, __unsafe_unretained id);
-TRAIT_IS_TRUE(__has_nothrow_constructor, HasStrong);
-TRAIT_IS_TRUE(__has_nothrow_constructor, HasWeak);
-TRAIT_IS_TRUE(__has_nothrow_constructor, HasUnsafeUnretained);
-
-// __has_trivial_assign
-TRAIT_IS_FALSE(__has_trivial_assign, __strong id);
-TRAIT_IS_FALSE(__has_trivial_assign, __weak id);
-TRAIT_IS_FALSE(__has_trivial_assign, __autoreleasing id);
-TRAIT_IS_TRUE(__has_trivial_assign, __unsafe_unretained id);
-TRAIT_IS_FALSE(__has_trivial_assign, HasStrong);
-TRAIT_IS_FALSE(__has_trivial_assign, HasWeak);
-TRAIT_IS_TRUE(__has_trivial_assign, HasUnsafeUnretained);
-
-// __has_trivial_copy
-TRAIT_IS_FALSE(__has_trivial_copy, __strong id);
-TRAIT_IS_FALSE(__has_trivial_copy, __weak id);
-TRAIT_IS_FALSE(__has_trivial_copy, __autoreleasing id);
-TRAIT_IS_TRUE(__has_trivial_copy, __unsafe_unretained id);
-TRAIT_IS_FALSE(__has_trivial_copy, HasStrong);
-TRAIT_IS_FALSE(__has_trivial_copy, HasWeak);
-TRAIT_IS_TRUE(__has_trivial_copy, HasUnsafeUnretained);
-
-// __has_trivial_constructor
-TRAIT_IS_FALSE(__has_trivial_constructor, __strong id);
-TRAIT_IS_FALSE(__has_trivial_constructor, __weak id);
-TRAIT_IS_FALSE(__has_trivial_constructor, __autoreleasing id);
-TRAIT_IS_TRUE(__has_trivial_constructor, __unsafe_unretained id);
-TRAIT_IS_FALSE(__has_trivial_constructor, HasStrong);
-TRAIT_IS_FALSE(__has_trivial_constructor, HasWeak);
-TRAIT_IS_TRUE(__has_trivial_constructor, HasUnsafeUnretained);
-
-// __has_trivial_destructor
-TRAIT_IS_FALSE(__has_trivial_destructor, __strong id);
-TRAIT_IS_FALSE(__has_trivial_destructor, __weak id);
-TRAIT_IS_TRUE(__has_trivial_destructor, __autoreleasing id);
-TRAIT_IS_TRUE(__has_trivial_destructor, __unsafe_unretained id);
-TRAIT_IS_FALSE(__has_trivial_destructor, HasStrong);
-TRAIT_IS_FALSE(__has_trivial_destructor, HasWeak);
-TRAIT_IS_TRUE(__has_trivial_destructor, HasUnsafeUnretained);
-
-// __is_literal
-TRAIT_IS_TRUE(__is_literal, __strong id);
-TRAIT_IS_TRUE(__is_literal, __weak id);
-TRAIT_IS_TRUE(__is_literal, __autoreleasing id);
-TRAIT_IS_TRUE(__is_literal, __unsafe_unretained id);
-
-// __is_literal_type
-TRAIT_IS_TRUE(__is_literal_type, __strong id);
-TRAIT_IS_TRUE(__is_literal_type, __weak id);
-TRAIT_IS_TRUE(__is_literal_type, __autoreleasing id);
-TRAIT_IS_TRUE(__is_literal_type, __unsafe_unretained id);
-
-// __is_pod
-TRAIT_IS_FALSE(__is_pod, __strong id);
-TRAIT_IS_FALSE(__is_pod, __weak id);
-TRAIT_IS_FALSE(__is_pod, __autoreleasing id);
-TRAIT_IS_TRUE(__is_pod, __unsafe_unretained id);
-TRAIT_IS_FALSE(__is_pod, HasStrong);
-TRAIT_IS_FALSE(__is_pod, HasWeak);
-TRAIT_IS_TRUE(__is_pod, HasUnsafeUnretained);
-
-// __is_trivial
-TRAIT_IS_FALSE(__is_trivial, __strong id);
-TRAIT_IS_FALSE(__is_trivial, __weak id);
-TRAIT_IS_FALSE(__is_trivial, __autoreleasing id);
-TRAIT_IS_TRUE(__is_trivial, __unsafe_unretained id);
-TRAIT_IS_FALSE(__is_trivial, HasStrong);
-TRAIT_IS_FALSE(__is_trivial, HasWeak);
-TRAIT_IS_TRUE(__is_trivial, HasUnsafeUnretained);
-
-// __is_scalar
-TRAIT_IS_FALSE(__is_scalar, __strong id);
-TRAIT_IS_FALSE(__is_scalar, __weak id);
-TRAIT_IS_FALSE(__is_scalar, __autoreleasing id);
-TRAIT_IS_TRUE(__is_scalar, __unsafe_unretained id);
-
-// __is_standard_layout
-TRAIT_IS_TRUE(__is_standard_layout, __strong id);
-TRAIT_IS_TRUE(__is_standard_layout, __weak id);
-TRAIT_IS_TRUE(__is_standard_layout, __autoreleasing id);
-TRAIT_IS_TRUE(__is_standard_layout, __unsafe_unretained id);
-
-// __is_trivally_assignable
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __strong id&, __strong id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __strong id&, __weak id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __strong id&, __autoreleasing id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __strong id&, __unsafe_unretained id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __strong id&, __strong id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __strong id&, __weak id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __strong id&, __autoreleasing id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __strong id&, __unsafe_unretained id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __weak id&, __strong id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __weak id&, __weak id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __weak id&, __autoreleasing id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __weak id&, __unsafe_unretained id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __weak id&, __strong id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __weak id&, __weak id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __weak id&, __autoreleasing id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __weak id&, __unsafe_unretained id&&);
-
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __autoreleasing id&, __strong id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __autoreleasing id&, __weak id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __autoreleasing id&, __autoreleasing id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __autoreleasing id&, __unsafe_unretained id);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __autoreleasing id&, __strong id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __autoreleasing id&, __weak id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __autoreleasing id&, __autoreleasing id&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, __autoreleasing id&, __unsafe_unretained id&&);
-
-TRAIT_IS_TRUE_2(__is_trivially_assignable, __unsafe_unretained id&, __strong id);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, __unsafe_unretained id&, __weak id);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, __unsafe_unretained id&, __autoreleasing id);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, __unsafe_unretained id&, __unsafe_unretained id);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, __unsafe_unretained id&, __strong id&&);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, __unsafe_unretained id&, __weak id&&);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, __unsafe_unretained id&, __autoreleasing id&&);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, __unsafe_unretained id&, __unsafe_unretained id&&);
-
-TRAIT_IS_FALSE_2(__is_trivially_assignable, HasStrong&, HasStrong);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, HasStrong&, HasStrong&&);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, HasWeak&, HasWeak);
-TRAIT_IS_FALSE_2(__is_trivially_assignable, HasWeak&, HasWeak&&);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, HasUnsafeUnretained&, HasUnsafeUnretained);
-TRAIT_IS_TRUE_2(__is_trivially_assignable, HasUnsafeUnretained&, HasUnsafeUnretained&&);
-
-// __is_trivally_constructible
-TRAIT_IS_FALSE(__is_trivially_constructible, __strong id);
-TRAIT_IS_FALSE(__is_trivially_constructible, __weak id);
-TRAIT_IS_FALSE(__is_trivially_constructible, __autoreleasing id);
-TRAIT_IS_TRUE(__is_trivially_constructible, __unsafe_unretained id);
-
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __strong id, __strong id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __strong id, __weak id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __strong id, __autoreleasing id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __strong id, __unsafe_unretained id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __strong id, __strong id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __strong id, __weak id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __strong id, __autoreleasing id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __strong id, __unsafe_unretained id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __weak id, __strong id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __weak id, __weak id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __weak id, __autoreleasing id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __weak id, __unsafe_unretained id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __weak id, __strong id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __weak id, __weak id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __weak id, __autoreleasing id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __weak id, __unsafe_unretained id&&);
-
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __autoreleasing id, __strong id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __autoreleasing id, __weak id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __autoreleasing id, __autoreleasing id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __autoreleasing id, __unsafe_unretained id);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __autoreleasing id, __strong id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __autoreleasing id, __weak id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __autoreleasing id, __autoreleasing id&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, __autoreleasing id, __unsafe_unretained id&&);
-
-TRAIT_IS_TRUE_2(__is_trivially_constructible, __unsafe_unretained id, __strong id);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, __unsafe_unretained id, __weak id);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, __unsafe_unretained id, __autoreleasing id);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, __unsafe_unretained id, __unsafe_unretained id);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, __unsafe_unretained id, __strong id&&);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, __unsafe_unretained id, __weak id&&);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, __unsafe_unretained id, __autoreleasing id&&);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, __unsafe_unretained id, __unsafe_unretained id&&);
-
-TRAIT_IS_FALSE_2(__is_trivially_constructible, HasStrong, HasStrong);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, HasStrong, HasStrong&&);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, HasWeak, HasWeak);
-TRAIT_IS_FALSE_2(__is_trivially_constructible, HasWeak, HasWeak&&);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, HasUnsafeUnretained, HasUnsafeUnretained);
-TRAIT_IS_TRUE_2(__is_trivially_constructible, HasUnsafeUnretained, HasUnsafeUnretained&&);
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-unavailable-for-weakref.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-unavailable-for-weakref.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-unavailable-for-weakref.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fobjc-runtime-has-weak -fsyntax-only -fobjc-arc -verify %s
-// rdar://9693477
-
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface NSOptOut1072  // expected-note {{class is declared here}}
- at end
-
- at interface sub : NSOptOut1072 @end // expected-note 2 {{class is declared here}}
-
-int main() {
-  __weak sub *w2; // expected-error {{class is incompatible with __weak references}}
-
-  __weak NSOptOut1072 *ns1; // expected-error {{class is incompatible with __weak references}}
-
-  id obj;
-
-  ns1 = (__weak sub *)obj; // expected-error {{assignment of a weak-unavailable object to a __weak object}} \
-                           // expected-error {{class is incompatible with __weak references}} \
-                           // expected-error {{explicit ownership qualifier on cast result has no effect}}
-}
-
-// rdar://9732636
-__attribute__((objc_arc_weak_reference_unavailable))
- at interface NOWEAK
-+ (id) new;
- at end
-
-NOWEAK * Test1() {
-  NOWEAK * strong1 = [NOWEAK new];
-  __weak id weak1;
-  weak1 = strong1; // expected-error {{assignment of a weak-unavailable object to a __weak object}}
-
-  __weak id weak2 = strong1; // expected-error {{assignment of a weak-unavailable object to a __weak object}}
-  return (__weak id)strong1; // expected-error {{cast of weak-unavailable object of type 'NOWEAK *' to a __weak object of type '__weak id'}} \
-                             // expected-error {{explicit ownership qualifier on cast result has no effect}}
-}
-
- at protocol P @end
- at protocol P1 @end
-
-NOWEAK<P, P1> * Test2() {
-  NOWEAK<P, P1> * strong1 = 0;
-  __weak id<P> weak1;
-  weak1 = strong1; // expected-error {{assignment of a weak-unavailable object to a __weak object}}
-
-  __weak id<P> weak2 = strong1; // expected-error {{assignment of a weak-unavailable object to a __weak object}}
-  return (__weak id<P, P1>)strong1; // expected-error {{cast of weak-unavailable object of type 'NOWEAK<P,P1> *' to a __weak object of type '__weak id<P,P1>'}} \
-                                    // expected-error {{explicit ownership qualifier on cast result has no effect}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-unbridged-cast.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-unbridged-cast.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/arc-unbridged-cast.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,119 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-arc -verify %s
-
-typedef const struct __CFString * CFStringRef;
-typedef const void * CFTypeRef;
-extern "C" CFTypeRef CFBridgingRetain(id X);
-extern "C" id CFBridgingRelease(CFTypeRef);
-
-
- at interface Object
- at property CFStringRef property;
-- (CFStringRef) implicitProperty;
-- (CFStringRef) newString;
-- (CFStringRef) makeString;
- at end
-
-extern Object *object;
-
-// rdar://9744349
-id test0(void) {
-  id p1 = (id)[object property];
-  id p2 = (__bridge_transfer id)[object property];
-  id p3 = (__bridge id)[object property];
-  return (id) object.property;
-}
-
-// rdar://10140692
-CFStringRef unauditedString(void);
-CFStringRef plusOneString(void) __attribute__((cf_returns_retained));
-
-#pragma clang arc_cf_code_audited begin
-CFStringRef auditedString(void);
-CFStringRef auditedCreateString(void);
-#pragma clang arc_cf_code_audited end
-
-void test1(int cond) {
-  id x;
-  x = (id) auditedString();
-  x = (id) (cond ? auditedString() : (void*) 0);
-  x = (id) (cond ? (void*) 0 : auditedString());
-  x = (id) (cond ? (CFStringRef) @"help" : auditedString());
-
-  x = (id) unauditedString(); // expected-error {{requires a bridged cast}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? unauditedString() : (void*) 0); // expected-error {{requires a bridged cast}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? (void*) 0 : unauditedString()); // expected-error {{requires a bridged cast}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? (CFStringRef) @"help" : unauditedString()); // expected-error {{requires a bridged cast}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRelease call to}}
-
-  x = (id) auditedCreateString(); // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? auditedCreateString() : (void*) 0); // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? (void*) 0 : auditedCreateString()); // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRelease call to}}
-  x = (id) (cond ? (CFStringRef) @"help" : auditedCreateString()); // expected-error {{requires a bridged cast}} expected-note {{use CFBridgingRelease call to}}
-
-  x = (id) [object property];
-  x = (id) (cond ? [object property] : (void*) 0);
-  x = (id) (cond ? (void*) 0 : [object property]);
-  x = (id) (cond ? (CFStringRef) @"help" : [object property]);  
-
-  x = (id) object.property;
-  x = (id) (cond ? object.property : (void*) 0);
-  x = (id) (cond ? (void*) 0 : object.property);
-  x = (id) (cond ? (CFStringRef) @"help" : object.property);  
-
-  x = (id) object.implicitProperty;
-  x = (id) (cond ? object.implicitProperty : (void*) 0);
-  x = (id) (cond ? (void*) 0 : object.implicitProperty);
-  x = (id) (cond ? (CFStringRef) @"help" : object.implicitProperty);  
-
-  x = (id) [object makeString];
-  x = (id) (cond ? [object makeString] : (void*) 0);
-  x = (id) (cond ? (void*) 0 : [object makeString]);
-  x = (id) (cond ? (CFStringRef) @"help" : [object makeString]);  
-
-  x = (id) [object newString];
-  x = (id) (cond ? [object newString] : (void*) 0);
-  x = (id) (cond ? (void*) 0 : [object newString]);
-  x = (id) (cond ? (CFStringRef) @"help" : [object newString]); // a bit questionable
-}
-
-// rdar://problem/10246264
- at interface CFTaker
-- (void) takeOrdinary: (CFStringRef) arg;
-- (void) takeVariadic: (int) n, ...;
-- (void) takeConsumed: (CFStringRef __attribute__((cf_consumed))) arg;
- at end
-void testCFTaker(CFTaker *taker, id string) {
-  [taker takeOrdinary: (CFStringRef) string];
-  [taker takeVariadic: 1, (CFStringRef) string];
-  [taker takeConsumed: (CFStringRef) string]; // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-}
-
-void takeCFOrdinaryUnaudited(CFStringRef arg);
-void takeCFVariadicUnaudited(int n, ...);
-void takeCFConsumedUnaudited(CFStringRef __attribute__((cf_consumed)) arg);
-#pragma clang arc_cf_code_audited begin
-void takeCFOrdinaryAudited(CFStringRef arg);
-void takeCFVariadicAudited(int n, ...);
-void takeCFConsumedAudited(CFStringRef __attribute__((cf_consumed)) arg);
-#pragma clang arc_cf_code_audited end
-
-void testTakerFunctions(id string) {
-  takeCFOrdinaryUnaudited((CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-  takeCFVariadicUnaudited(1, (CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-  takeCFConsumedUnaudited((CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-
-  void (*taker)(CFStringRef) = 0;
-  taker((CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-
-  takeCFOrdinaryAudited((CFStringRef) string);
-  takeCFVariadicAudited(1, (CFStringRef) string);
-  takeCFConsumedAudited((CFStringRef) string); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'CFStringRef'}} expected-note {{use __bridge to}} expected-note {{use CFBridgingRetain call to}}
-}
-
-// rdar://12788838
-id obj;
-
-void rdar12788838() {
-  void *foo = reinterpret_cast<void *>(obj); // expected-error {{cast of Objective-C pointer type 'id' to C pointer type 'void *' requires a bridged cast}} \
-		// expected-note {{use __bridge with C-style cast to convert directly}} \
-		// expected-note {{use CFBridgingRetain call to make an ARC object available as a +1 'void *'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/argument-dependent-lookup.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/argument-dependent-lookup.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/argument-dependent-lookup.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// <rdar://problem/9142559>: For the purposes of Argument-Dependent
-// Lookup, Objective-C classes are considered to be in the global
-// namespace.
-
- at interface NSFoo
- at end
-
-template<typename T>
-void f(T t) {
-  g(t);
-}
-
-void g(NSFoo*);
-
-void test(NSFoo *foo) {
-  f(foo);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/blocks.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/blocks.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/blocks.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,146 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
- at protocol NSObject;
-
-void bar(id(^)(void));
-void foo(id <NSObject>(^objectCreationBlock)(void)) {
-    return bar(objectCreationBlock); // OK
-}
-
-void bar2(id(*)(void));
-void foo2(id <NSObject>(*objectCreationBlock)(void)) {
-    return bar2(objectCreationBlock); // expected-warning{{incompatible pointer types passing 'id<NSObject> (*)()' to parameter of type 'id (*)()'}}
-}
-
-void bar3(id(*)()); // expected-note{{candidate function}}
-void foo3(id (*objectCreationBlock)(int)) {
-    return bar3(objectCreationBlock); // expected-error{{no matching}}
-}
-
-void bar4(id(^)()); // expected-note{{candidate function}}
-void foo4(id (^objectCreationBlock)(int)) {
-    return bar4(objectCreationBlock); // expected-error{{no matching}}
-}
-
-void foo5(id (^x)(int)) {
-  if (x) { }
-}
-
-// <rdar://problem/6590445>
- at interface Foo {
-    @private
-    void (^_block)(void);
-}
-- (void)bar;
- at end
-
-namespace N {
-  class X { };      
-  void foo(X);
-}
-
- at implementation Foo
-- (void)bar {
-    _block();
-    foo(N::X()); // okay
-}
- at end
-
-typedef signed char BOOL;
-void foo6(void *block) {  
-	void (^vb)(id obj, int idx, BOOL *stop) = (void (^)(id, int, BOOL *))block;
-    BOOL (^bb)(id obj, int idx, BOOL *stop) = (BOOL (^)(id, int, BOOL *))block;
-}
-
-// <rdar://problem/8600419>: Require that the types of block
-// parameters are complete.
-namespace N1 {
-  template<class _T> class ptr; // expected-note{{template is declared here}}
-
-  template<class _T>
-    class foo {
-  public:
-    void bar(void (^)(ptr<_T>));
-  };
-
-  class X;
-
-  void test2();
-
-  void test()
-  {
-    foo<X> f;
-    f.bar(^(ptr<X> _f) { // expected-error{{implicit instantiation of undefined template 'N1::ptr<N1::X>'}}
-        test2();
-      });
-  }
-}
-
-// Make sure we successfully instantiate the copy constructor of a
-// __block variable's type.
-namespace N2 {
-  template <int n> struct A {
-    A() {}
-    A(const A &other) {
-      int invalid[-n]; // expected-error 2 {{array with a negative size}}
-    }
-  };
-
-  void test1() {
-    __block A<1> x; // expected-note {{requested here}}
-  }
-
-  template <int n> void test2() {
-    __block A<n> x; // expected-note {{requested here}}
-  }
-  template void test2<2>();
-}
-
-// Handle value-dependent block declaration references.
-namespace N3 {
-  template<int N> struct X { };
-
-  template<int N>
-  void f() {
-    X<N> xN = ^() { return X<N>(); }();
-  }
-}
-
-// rdar://8979379
-
- at interface A
- at end
-
- at interface B : A
- at end
-
-void f(int (^bl)(A* a)); // expected-note {{candidate function not viable: no known conversion from 'int (^)(B *)' to 'int (^)(A *)' for 1st argument}}
-
-void g() {
-  f(^(B* b) { return 0; }); // expected-error {{no matching function for call to 'f'}}
-}
-
-namespace DependentReturn {
-  template<typename T>
-  void f(T t) {
-    (void)^(T u) {
-      if (t != u)
-        return t + u;
-      else
-        return;
-    };
-
-    (void)^(T u) {
-      if (t == u)
-        return;
-      else
-        return t + u;
-    };
-  }
-
-  struct X { };
-  void operator+(X, X);
-  bool operator==(X, X);
-  bool operator!=(X, X);
-
-  template void f<X>(X);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/boxing-illegal-types.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/boxing-illegal-types.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/boxing-illegal-types.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,58 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wattributes %s
-
-typedef long NSInteger;
-typedef unsigned long NSUInteger;
-typedef signed char BOOL;
-
- at interface NSNumber
- at end
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
-+ (NSNumber *)numberWithInteger:(NSInteger)value;
-+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
- at end
-
-typedef struct {
-    int x, y, z;
-} point;
-
-void testStruct() {
-    point p = { 0, 0, 0 };
-    id boxed = @(p);    // expected-error {{illegal type 'point' used in a boxed expression}}
-}
-
-void testPointers() {
-    void *null = 0;
-    id boxed_null = @(null);        // expected-error {{illegal type 'void *' used in a boxed expression}}
-    int numbers[] = { 0, 1, 2 };
-    id boxed_numbers = @(numbers);  // expected-error {{illegal type 'int *' used in a boxed expression}}
-}
-
-void testInvalid() {
-  @(not_defined); // expected-error {{use of undeclared identifier 'not_defined'}}
-}
-
-enum MyEnum {
-  ME_foo
-};
-
-enum ForwE; // expected-error {{ISO C++ forbids forward references to 'enum' types}}
-
-void testEnum(void *p) {
-  enum MyEnum myen;
-  id box = @(myen);
-  box = @(ME_foo);
-  box = @(*(enum ForwE*)p); // expected-error {{incomplete type 'enum ForwE' used in a boxed expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/capturing-flexible-array-in-block.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/capturing-flexible-array-in-block.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/capturing-flexible-array-in-block.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -verify -std=c++11 %s
-// rdar://12655829
-
-void f() {
-  struct { int x; int y[]; } a; // expected-note 2 {{'a' declared here}}
-  ^{return a.x;}(); // expected-error {{cannot refer to declaration of structure variable with flexible array member inside block}}
-  [] {return a.x;}(); // expected-error {{variable 'a' with flexible array member cannot be captured in a lambda expression}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/category-lookup.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/category-lookup.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/category-lookup.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface NSObject @end
-
- at interface NSObject (NSScriptClassDescription)
- at end
-
-void f() {
-  NSScriptClassDescription *f; // expected-error {{unknown type name 'NSScriptClassDescription'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/composite-objc-pointertype.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/composite-objc-pointertype.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/composite-objc-pointertype.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-
- at interface Foo
- at end
-
- at implementation Foo
-- (id)test {
-        id bar;
-    Class cl;
-    Foo *f;
-
-    (void)((bar!= 0) ? bar : 0);
-    (void)((cl != 0) ? cl : 0);
-    (void)((f != 0) ? 0 : f);
-    return (0 == 1) ? 0 : bar;
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conditional-expr.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conditional-expr.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conditional-expr.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol P0
- at end
- at protocol P1
- at end
- at protocol P2
- at end
-
- at interface A <P0>
- at end
-
- at interface B : A
- at end
-
-void bar(id x);
-void barP0(id<P0> x);
-void barP1(id<P1> x);
-void barP2(id<P2> x);
-
-void f0(A *a) {
-  id l = a;
-}
-
-void f1(id x, A *a) {
-  id<P0> l = a;
-}
-
-void f2(id<P1> x) {
-  id<P0> l = x; // expected-error {{cannot initialize a variable of type 'id<P0>' with an lvalue of type 'id<P1>'}}
-}
-
-void f3(A *a) {
-  id<P1> l = a; // expected-error {{cannot initialize a variable of type 'id<P1>' with an lvalue of type 'A *'}}
-}
-
-void f4(int cond, id x, A *a) {
-  bar(cond ? x : a);
-}
-
-void f5(int cond, A *a, B *b) {
-  bar(cond ? a : b);
-}
-
-void f6(int cond, id x, A *a) {
-  bar(cond ? (id<P0, P1>) x : a);
-}
-
-void f7(int cond, id x, A *a) {
-  bar(cond ? a : (id<P0, P1>) x);
-}
-
-void f8(int cond, id<P0,P1> x0, id<P0,P2> x1) {
-  barP0(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
-}
-
-void f9(int cond, id<P0,P1> x0, id<P0,P2> x1) {
-  barP1(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
-}
-
-void f10(int cond, id<P0,P1> x0, id<P0,P2> x1) {
-  barP2(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
-}
-
-int f11(int cond, A* a, B* b) {
-  return (cond? b : a)->x; // expected-error{{'A' does not have a member named 'x'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/const-cast.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/const-cast.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/const-cast.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at class Foo;
-
-void test() {
-    const Foo *foo1 = 0;
-    Foo *foo2 = foo1; // expected-error {{cannot initialize}}
-}
-
-void test1() {
-    const Foo *foo1 = 0;
-    Foo *foo2 = const_cast<Foo*>(foo1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-ranking.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-ranking.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-ranking.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
- at protocol P1
- at end
-
- at interface A <P1>
- at end
-
- at interface B : A
- at end
-
- at interface C : B
- at end
-
-template<typename T>
-struct ConvertsTo {
-  operator T() const;
-};
-
-
-// conversion of C* to B* is better than conversion of C* to A*.
-int &f0(A*);
-float &f0(B*);
-
-void test_f0(C *c) {
-  float &fr1 = f0(c);
-}
-
-// conversion of B* to A* is better than conversion of C* to A*
-void f1(A*);
-
-struct ConvertsToBoth {
-private:
-  operator C*() const;
-
-public:
-  operator B*() const;
-};
-
-void test_f1(ConvertsTo<B*> toB, ConvertsTo<C*> toC, ConvertsToBoth toBoth) {
-  f1(toB);
-  f1(toC);
-  f1(toBoth);
-};
-
-// A conversion to an a non-id object pointer type is better than a 
-// conversion to 'id'.
-int &f2(A*);
-float &f2(id);
-
-void test_f2(B *b) {
-  int &ir = f2(b);
-}
-
-// A conversion to an a non-Class object pointer type is better than a 
-// conversion to 'Class'.
-int &f3(A*);
-float &f3(Class);
-
-void test_f3(B *b) {
-  int &ir = f3(b);
-}
-
-// When both conversions convert to 'id' or 'Class', pick the most
-// specific type to convert from.
-void f4(id);
-
-void test_f4(ConvertsTo<B*> toB, ConvertsTo<C*> toC, ConvertsToBoth toBoth) {
-  f4(toB);
-  f4(toC);
-  f4(toBoth);
-}
-
-void f5(id<P1>);
-
-void test_f5(ConvertsTo<B*> toB, ConvertsTo<C*> toC, ConvertsToBoth toBoth) {
-  f5(toB);
-  f5(toC);
-  f5(toBoth);
-}
-
-
-// A conversion to an a non-id object pointer type is better than a 
-// conversion to qualified 'id'.
-int &f6(A*);
-float &f6(id<P1>);
-
-void test_f6(B *b) {
-  int &ir = f6(b);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-to-objc-pointer-2.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-to-objc-pointer-2.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-to-objc-pointer-2.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// rdar: // 7963410
-
- at protocol NSObject @end
- at interface NSObject
-- (id)init;
-- (id) alloc;
-- (id) autorelease;
- at end
-
-template<class T>
-class TNSAutoRef
-{
-public:
-	TNSAutoRef(T t)
-		:	fRef(t)
-		{ }
-
-	~TNSAutoRef()
-		{ }
-
-	operator T() const
-		{ return fRef; }
-
-private:
-	T fRef;
-};
-
-
-#pragma mark -
-
-
- at protocol TFooProtocol <NSObject>
-
-- (void) foo;
- at end
-
-
-#pragma mark -
-
-
- at interface TFoo : NSObject
-
-- (void) setBlah: (id<TFooProtocol>)blah;
- at end
-
-
-#pragma mark -
-
-
- at implementation TFoo
-
-- (void) setBlah: (id<TFooProtocol>)blah
-	{ }
- at end
-
-
-#pragma mark -
-
-
- at interface TBar : NSObject
-
-- (void) setBlah: (id)blah;
- at end
-
-#pragma mark -
-
-
- at implementation TBar
-
-- (void) setBlah: (id)blah
-	{ }
- at end
-
-
-#pragma mark -
-
-
-int main (int argc, const char * argv[]) {
-
-	NSObject* object1 = [[[NSObject alloc] init] autorelease];
-	TNSAutoRef<NSObject*> object2([[NSObject alloc] init]);
-	TNSAutoRef<TBar*> bar([[TBar alloc] init]);
-	[bar setBlah: object1];				// <== Does not compile.  It should.
-        if (object1 == object2)
-	  [bar setBlah: object2];				// <== Does not compile.  It should.
-	return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-to-objc-pointer.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-to-objc-pointer.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/conversion-to-objc-pointer.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// rdar: // 7963410
-
-template<class T>
-class TNSAutoRef
-{
-public:
-	TNSAutoRef(T t)
-		:	fRef(t)
-		{ }
-
-	~TNSAutoRef()
-		{  }
-
-	operator T() const
-		{ return fRef; }
-	
-	T Get() const
-		{ return fRef; }
-
-private:
-	T fRef;
-};
-
- at interface NSObject
-- (id) alloc;
-- (id)init;
- at end
-
- at interface TFoo : NSObject
-- (void) foo;
- at end
-
- at implementation TFoo
-- (void) foo {}
- at end
-
- at interface TBar : NSObject
-- (void) foo;
- at end
-
- at implementation TBar 
-- (void) foo {}
- at end
-
-int main () {
-	TNSAutoRef<TBar*> bar([[TBar alloc] init]);
-	[bar foo];
-	return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/crash.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/crash.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/crash.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -verify 
-
-// <rdar://problem/11286701>
-namespace std {
-  template<typename T, typename U> class pair;
-}
-
- at interface NSObject
- at end
-
- at interface Test : NSObject
- at end
-
- at implementation Test
-
-struct EvilStruct {
-} // note the missing semicolon
-
-  typedef std::pair<int, int> IntegerPair; // expected-error{{typedef declarator cannot be qualified}} \
-// expected-error{{typedef name must be an identifier}} \
-// expected-error{{expected ';' after top level declarator}}
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cstyle-block-pointer-cast.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
-// radar 7562285
-
-typedef int (^blocktype)(int a, int b);
-
- at interface A {
-    A* a;
-    id b;
-    Class c;
-}
-- (blocktype)Meth;
- at end
-
- at implementation A
-- (blocktype)Meth {
-        if (b)
-	  return (blocktype)b;
-        else if (a)
-          return (blocktype)a; // expected-error {{C-style cast from 'A *' to 'blocktype' (aka 'int (^)(int, int)') is not allowed}}
-        else
-          return (blocktype)c;
-}
- at end
-
- at interface B {
-    blocktype a;
-    blocktype b;
-    blocktype c;
-}
-- (id)Meth;
- at end
-
- at implementation B
-- (id)Meth {
-        if (a)
-          return (A*)a; // expected-error {{C-style cast from 'blocktype' (aka 'int (^)(int, int)') to 'A *' is not allowed}}
-        if (b)
-	  return (id)b;
-        if (c)
-	  return (Class)b;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cstyle-cast.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cstyle-cast.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cstyle-cast.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol P @end
- at interface I @end
-
-struct X { X(); };
-
-void test1(X x) {
-  void *cft;
-  id oct = (id)cft;
-
-  Class ccct;
-  ccct = (Class)cft;
-
-  I* iict = (I*)cft;
-
-  id<P> qid = (id<P>)cft;
-
-  I<P> *ip = (I<P>*)cft;
-
-  (id)x; // expected-error {{cannot convert 'X' to 'id' without a conversion operator}}
-
-  id *pid = (id*)ccct;
-
-  id<P> *qpid = (id<P>*)ccct;
-
-  int **pii;
-
-  ccct = (Class)pii;
-
-  qpid = (id<P>*)pii;
-
-  iict = (I*)pii;
-
-  pii = (int **)ccct;
-
-  pii = (int **)qpid;
-  
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cxxoperator-selector.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cxxoperator-selector.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/cxxoperator-selector.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar:// 8328250
-
- at class NSDate;
-
- at interface XSGraphDataSet 
-- and;
-- xor;
-- or;
-
-- ||; // expected-error {{expected selector for Objective-C method}}
-
-- &&; // expected-error {{expected selector for Objective-C method}}
-
-- (void)dataSetForValuesBetween:(NSDate *)startDate and:(NSDate *)endDate;
- at end
-
- at implementation XSGraphDataSet
-- (id) and{return 0; };
-- (id) xor{return 0; };
-- (id) or{return 0; };
-
-- (void)dataSetForValuesBetween:(NSDate *)startDate and:(NSDate *)endDate { return; }
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/debugger-cast-result-to-id.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/debugger-cast-result-to-id.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/debugger-cast-result-to-id.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fdebugger-support -fdebugger-cast-result-to-id -funknown-anytype -fsyntax-only -verify %s
-
-extern __unknown_anytype test0a;
-extern __unknown_anytype test1a();
-extern __unknown_anytype test0b;
-extern __unknown_anytype test1b();
-extern __unknown_anytype test0c;
-extern __unknown_anytype test1c();
-extern __unknown_anytype test0d;
-extern __unknown_anytype test1d();
-extern __unknown_anytype test0d;
-extern __unknown_anytype test1d();
-
- at interface A
- at end
-
-// rdar://problem/9416370
-namespace rdar9416370 {
-  void test(id x) {
-    if ([x foo]) {} // expected-error {{no known method '-foo'; cast the message send to the method's return type}}
-    [x foo];
-  }
-}
-
-// rdar://10988847
- at class NSString; // expected-note {{forward declaration of class here}}
-namespace rdar10988847 {
-  void test() {
-    id s = [NSString stringWithUTF8String:"foo"]; // expected-warning {{receiver 'NSString' is a forward class and corresponding @interface may not exist}}
-  }
-}
-
-// rdar://13338107
-namespace rdar13338107 {
-  void test() {
-    id x1 = test0a;
-    id x2 = test1a();
-    A *x3 = test0b;
-    A *x4 = test1b();
-    auto x5 = test0c;
-    auto x6 = test1c();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/debugger-support.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/debugger-support.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/debugger-support.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fdebugger-support -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at class NSString;
-void testCompareAgainstPtr(int *ptr, NSString *ns) {
-  if (ptr == 17) {}
-  if (ns != 42) {}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/decltype.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/decltype.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/decltype.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-struct HasValueType {
-  typedef int value_type;
-};
-
-__attribute__((objc_root_class))
- at interface Foo
-{
- at protected
-    HasValueType foo;
-}
-
- at property (nonatomic) HasValueType bar;
- at end
-
- at implementation Foo
- at synthesize bar;
-
-- (void)test {
-  decltype(foo)::value_type vt1;
-  decltype(self->foo)::value_type vt2;
-  decltype(self.bar)::value_type vt3;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/deduction.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/deduction.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/deduction.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at class NSString;
-
-// Reduced from WebKit.
-namespace test0 {
-  template <typename T> struct RemovePointer {
-    typedef T Type;
-  };
-
-  template <typename T> struct RemovePointer<T*> {
-    typedef T Type;
-  };
-
-  template <typename T> struct RetainPtr {
-    typedef typename RemovePointer<T>::Type ValueType;
-    typedef ValueType* PtrType;
-    RetainPtr(PtrType ptr);
-  };
- 
-  void test(NSString *S) {
-    RetainPtr<NSString*> ptr(S);
-  }
-
-  void test(id S) {
-    RetainPtr<id> ptr(S);
-  }
-}
-
- at class Test1Class;
- at protocol Test1Protocol;
-namespace test1 {
-  template <typename T> struct RemovePointer {
-    typedef T type;
-  };
-  template <typename T> struct RemovePointer<T*> {
-    typedef T type;
-  };
-  template <typename A, typename B> struct is_same {};
-  template <typename A> struct is_same<A,A> {
-    static void foo();
-  };
-  template <typename T> struct tester {
-    void test() {
-      is_same<T, typename RemovePointer<T>::type*>::foo(); // expected-error 2 {{no member named 'foo'}}
-    }
-  };
-
-  template struct tester<id>;
-  template struct tester<id<Test1Protocol> >;
-  template struct tester<Class>;
-  template struct tester<Class<Test1Protocol> >;
-  template struct tester<Test1Class*>;
-  template struct tester<Test1Class<Test1Protocol>*>;
-
-  template struct tester<Test1Class>; // expected-note {{in instantiation}}
-  template struct tester<Test1Class<Test1Protocol> >; // expected-note {{in instantiation}}
-}
-
-namespace test2 {
-  template <typename T> void foo(const T* t) {}
-  void test(id x) {
-    foo(x);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-cfunctions.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-cfunctions.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-cfunctions.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -std=c++11 -fsyntax-only -Werror -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://10387088
-
-struct X {
-X();
-void SortWithCollator();
-};
-
- at interface MyClass
-- (void)someMethod;
- at end
-
- at implementation MyClass
-- (void)someMethod {
-    [self privateMethod];  // clang already does not warn here
-}
-
-int bar(MyClass * myObject) {
-    [myObject privateMethod]; 
-    return gorfbar(myObject);
-}
-- (void)privateMethod { }
-
-int gorfbar(MyClass * myObject) {
-    [myObject privateMethod]; 
-    [myObject privateMethod1]; 
-    return getMe + bar(myObject);
-}
-
-- (void)privateMethod1 {
-  getMe = getMe+1;
-}
-
-static int getMe;
-
-static int test() {
-  return 0;
-}
-
-int x{17};
-
-X::X() = default;
-void X::SortWithCollator() {}
-// pr13418
-namespace {
-     int CurrentTabId() {return 0;}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-cplusfuncs.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-cplusfuncs.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-cplusfuncs.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fsyntax-only -Werror -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://10387088
-
- at interface MyClass
-- (void)someMethod;
- at end
-
-struct S {
-  int bar(MyClass * myObject);
-
-  int gorfbar(MyClass * myObject);
-
-  S();
-  S(MyClass *O1, MyClass *O2);
-  S(MyClass *O1);
-
-  MyClass * Obj1, *Obj2;
-
-};
-
- at implementation MyClass
-- (void)someMethod {
-    [self privateMethod];  // clang already does not warn here
-}
-
-int S::bar(MyClass * myObject) {
-    [myObject privateMethod]; 
-    return gorfbar(myObject);
-}
-- (void)privateMethod { }
-
-int S::gorfbar(MyClass * myObject) {
-    [myObject privateMethod]; 
-    [myObject privateMethod1]; 
-    return getMe + bar(myObject);
-}
-
-S::S(MyClass *O1, MyClass *O2) : Obj1(O1), Obj2(O2) {
-    [O1 privateMethod]; 
-    [O2 privateMethod1]; 
-}
-S::S(MyClass *O1) : Obj1(O1){ Obj2 = 0; }
-
-S::S() {}
-
-- (void)privateMethod1 {
-  getMe = getMe+1;
-}
-
-static int getMe;
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-func-tryblock.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-func-tryblock.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/delay-parsing-func-tryblock.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -fcxx-exceptions -fsyntax-only -Werror -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// rdar://10387088
-
- at interface MyClass
-- (void)someMethod;
- at end
-
-struct BadReturn {
-  BadReturn(MyClass * myObject);
-  int bar(MyClass * myObject);
-  void MemFunc(MyClass * myObject);
-  int i;
-  MyClass *CObj;
-};
-
- at implementation MyClass
-- (void)someMethod {
-    [self privateMethod];  // clang already does not warn here
-}
-
-int BadReturn::bar(MyClass * myObject) {
-    [myObject privateMethod];
-    return 0;
-}
-
-BadReturn::BadReturn(MyClass * myObject) try : CObj(myObject) {
-} catch(...) {
-  try {
-    [myObject privateMethod];
-    [myObject privateMethod1];
-    getMe = bar(myObject);
-    [CObj privateMethod1];
-  } catch(int ei) {
-    i = ei;
-  } catch(...) {
-    {
-      i = 0;
-    }
-  }
-}
-
-void BadReturn::MemFunc(MyClass * myObject) try {
-} catch(...) {
-  try {
-    [myObject privateMethod];
-    [myObject privateMethod1];
-    getMe = bar(myObject);
-    [CObj privateMethod1];
-  } catch(int ei) {
-    i = ei;
-  } catch(...) {
-    {
-      i = 0;
-    }
-  }
-}
-
-- (void)privateMethod { }
-
-- (void)privateMethod1 {
-  getMe = getMe+1;
-}
-
-static int getMe;
-
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/exceptions-fragile.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/exceptions-fragile.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/exceptions-fragile.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fobjc-runtime=macosx-fragile-10.5 -fsyntax-only -verify %s 
-
- at interface NSException @end
-void opaque();
-
-namespace test0 {
-  void test() {
-    try {
-    } catch (NSException *e) { // expected-warning {{can not catch an exception thrown with @throw in C++ in the non-unified exception model}}
-    }
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/expr-objcxx.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/expr-objcxx.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/expr-objcxx.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-// expected-no-diagnostics
-
-// rdar://8366474
-void *P =  @selector(foo::bar::);

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/foreach-block.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/foreach-block.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/foreach-block.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s
-// rdar://8295106
-
-int main() {
-id array;
-
-    for (int (^b)(void) in array) {
-        if (b() == 10000) {
-            return 1;
-        }
-    }
-
-    int (^b)(void) in array; // expected-error {{expected ';' at end of declaration}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/foreach.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/foreach.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/foreach.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -verify -std=c++11 %s
-// rdar://9293227
-
- at class NSArray;
-
-void f(NSArray *a) {
-    id keys;
-    for (int i : a); // expected-error{{selector element type 'int' is not a valid object}} 
-    for ((id)2 : a);  // expected-error {{for range declaration must declare a variable}} \
-                      // expected-warning {{expression result unused}}
-    for (2 : a); // expected-error {{for range declaration must declare a variable}} \
-                 // expected-warning {{expression result unused}}
-  
-  for (id thisKey : keys);
-
-  for (auto thisKey : keys) { } // expected-warning{{'auto' deduced as 'id' in declaration of 'thisKey'}}
-}
-
-template<typename Collection>
-void ft(Collection col) {
-  for (id x : col) { }
-  for (auto x : col) { }
-}
-
-template void ft(NSArray *);
-
-/* // rdar://9072298 */
- at protocol NSObject @end
-
- at interface NSObject <NSObject> {
-    Class isa;
-}
- at end
-
-typedef struct {
-    unsigned long state;
-    id *itemsPtr;
-    unsigned long *mutationsPtr;
-    unsigned long extra[5];
-} NSFastEnumerationState;
-
- at protocol NSFastEnumeration
-
-- (unsigned long)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(unsigned long)len;
-
- at end
-
-int main ()
-{
- NSObject<NSFastEnumeration>* collection = 0;
- for (id thing : collection) { }
-
- id array;
- for (int (^b)(void) : array) {
-    if (b() == 10000) {
-        return 1;
-    }
- }
- return 0;
-}
-
-/* rdar://problem/11068137 */
- at interface Test2
- at property (assign) id prop;
- at end
-void test2(NSObject<NSFastEnumeration> *collection) {
-  Test2 *obj;
-  for (obj.prop : collection) { // expected-error {{for range declaration must declare a variable}} \
-                                // expected-warning {{property access result unused - getters should not be used for side effects}}
-  }
-}
-
-void testErrors(NSArray *array) {
-  typedef int fn(int);
-
-  for (fn x in array) { } // expected-error{{non-variable declaration in 'for' loop}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/format-strings.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/format-strings.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/format-strings.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wformat-nonliteral -pedantic %s
-
-#include <stdarg.h>
-
-extern "C" {
-extern int scanf(const char *restrict, ...);
-extern int printf(const char *restrict, ...);
-extern int vprintf(const char *restrict, va_list);
-}
-
- at class NSString;
-
- at interface Format
-+ (void)print:(NSString *)format, ... __attribute__((format(NSString, 1, 2)));
- at end
-
-
-namespace Templates {
-  template<typename T>
-  void my_uninstantiated_print(const T &arg) {
-    [Format print:@"%d", arg];
-  }
-
-  template<typename T>
-  void my_print(const T &arg) {
-    [Format print:@"%d", arg]; // expected-warning {{format specifies type 'int' but the argument has type 'const char *'}}
-  }
-
-  void use_my_print() {
-    my_print("abc"); // expected-note {{requested here}}
-  }
-
-
-  template<typename T>
-  class UninstantiatedPrinter {
-  public:
-    static void print(const T &arg) {
-      [Format print:@"%d", arg]; // no-warning
-    }
-  };
-
-  template<typename T>
-  class Printer {
-  public:
-    void print(const T &arg) {
-      [Format print:@"%d", arg]; // expected-warning {{format specifies type 'int' but the argument has type 'const char *'}}
-    }
-  };
-
-  void use_class(Printer<const char *> &p) {
-    p.print("abc"); // expected-note {{requested here}}
-  }
-
-
-  template<typename T>
-  class UninstantiatedWrapper {
-  public:
-    class Printer {
-    public:
-      void print(const T &arg) {
-        [Format print:@"%d", arg]; // no-warning
-      }
-    };
-  };
-
-  template<typename T>
-  class Wrapper {
-  public:
-    class Printer {
-    public:
-      void print(const T &arg) {
-        [Format print:@"%d", arg]; // expected-warning {{format specifies type 'int' but the argument has type 'const char *'}}
-      }
-    };
-  };
-
-  void use_class(Wrapper<const char *>::Printer &p) {
-    p.print("abc"); // expected-note {{requested here}}
-  }
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/fragile-abi-object-assign.m
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/fragile-abi-object-assign.m	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/fragile-abi-object-assign.m	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin11 -fsyntax-only -fobjc-runtime=macosx-fragile-10.5 -verify -Wno-objc-root-class %s
-// rdar://10731065
-
- at interface MyView {}
- at end
-
- at implementation MyViewTemplate // expected-warning {{cannot find interface declaration for 'MyViewTemplate'}}
-- (id) createRealObject {
-  id realObj;
-  *(MyView *) realObj = *(MyView *) self; // expected-error {{cannot assign to class object}}
-}
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/function-pointer-void-star.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/function-pointer-void-star.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/function-pointer-void-star.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-extern "C" id (*_dealloc)(id) ;
-
-void foo() {
-        extern void *_original_dealloc;
-        if (_dealloc == _original_dealloc) { }
-        if (_dealloc != _original_dealloc) { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/gc-attributes.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/gc-attributes.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/gc-attributes.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -fsyntax-only -verify %s
-
- at interface A
- at end
-
-void f0(__strong A**); // expected-note{{candidate function not viable: 1st argument ('A *__weak *') has __weak ownership, but parameter has __strong ownership}}
-
-void test_f0() {
-  A *a;
-  static __weak A *a2;
-  f0(&a);
-  f0(&a2); // expected-error{{no matching function}}
-}
-
-void f1(__weak A**); // expected-note{{candidate function not viable: 1st argument ('A *__strong *') has __strong ownership, but parameter has __weak ownership}}
-
-void test_f1() {
-  A *a;
-  __strong A *a2;
-  f1(&a);
-  f1(&a2); // expected-error{{no matching function}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/goto.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/goto.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/goto.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-// PR9495
-struct NonPOD { NonPOD(); ~NonPOD(); };
-
- at interface A
- at end
-
- at implementation A
-- (void)method:(bool)b {
-  NonPOD np;
-  if (b) {
-    goto undeclared; // expected-error{{use of undeclared label 'undeclared'}}
-  }
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instancetype.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instancetype.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instancetype.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,216 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-#if !__has_feature(objc_instancetype)
-# error Missing 'instancetype' feature macro.
-#endif
-
- at interface Root
-+ (instancetype)alloc;
-- (instancetype)init; // expected-note{{overridden method is part of the 'init' method family}}
-- (instancetype)self; // expected-note {{explicitly declared 'instancetype'}}
-- (Class)class;
-
- at property (assign) Root *selfProp;
-- (instancetype)selfProp;
- at end
-
- at protocol Proto1
- at optional
-- (instancetype)methodInProto1;
- at end
-
- at protocol Proto2
- at optional
-- (instancetype)methodInProto2; // expected-note{{overridden method returns an instance of its class type}}
-- (instancetype)otherMethodInProto2; // expected-note{{overridden method returns an instance of its class type}}
- at end
-
- at interface Subclass1 : Root
-- (instancetype)initSubclass1;
-- (void)methodOnSubclass1;
-+ (instancetype)allocSubclass1;
- at end
-
- at interface Subclass2 : Root
-- (instancetype)initSubclass2;
-- (void)methodOnSubclass2;
- at end
-
-// Sanity check: the basic initialization pattern.
-void test_instancetype_alloc_init_simple() {
-  Root *r1 = [[Root alloc] init];
-  Subclass1 *sc1 = [[Subclass1 alloc] init];
-}
-
-// Test that message sends to instancetype methods have the right type.
-void test_instancetype_narrow_method_search() {
-  // instancetype on class methods
-  Subclass1 *sc1 = [[Subclass1 alloc] initSubclass2]; // expected-warning{{'Subclass1' may not respond to 'initSubclass2'}}
-  Subclass2 *sc2 = [[Subclass2 alloc] initSubclass2]; // okay
-
-  // instancetype on instance methods
-  [[[Subclass1 alloc] init] methodOnSubclass2]; // expected-warning{{'Subclass1' may not respond to 'methodOnSubclass2'}}
-  [[[Subclass2 alloc] init] methodOnSubclass2];
-  
-  // instancetype on class methods using protocols
-  typedef Subclass1<Proto1> SC1Proto1;
-  typedef Subclass1<Proto2> SC1Proto2;
-  [[SC1Proto1 alloc] methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [[SC1Proto2 alloc] methodInProto2];
-
-  // instancetype on instance methods
-  Subclass1<Proto1> *sc1proto1 = 0;
-  [[sc1proto1 self] methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  Subclass1<Proto2> *sc1proto2 = 0;
-  [[sc1proto2 self] methodInProto2];
-
-  // Exact type checks
-  typeof([[Subclass1 alloc] init]) *ptr1 = (Subclass1 **)0;
-  typeof([[Subclass2 alloc] init]) *ptr2 = (Subclass2 **)0;
-
-  // Message sends to Class.
-  Subclass1<Proto1> *sc1proto1_2 = [[[sc1proto1 class] alloc] init];
-
-  // Property access
-  [sc1proto1.self methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [sc1proto2.self methodInProto2];
-  [Subclass1.alloc initSubclass2]; // expected-warning{{'Subclass1' may not respond to 'initSubclass2'}}
-  [Subclass2.alloc initSubclass2];
-
-  [sc1proto1.selfProp methodInProto2]; // expected-warning{{method '-methodInProto2' not found (return type defaults to 'id')}}
-  [sc1proto2.selfProp methodInProto2];
-}
-
-// Test that message sends to super methods have the right type.
- at interface Subsubclass1 : Subclass1
-- (instancetype)initSubclass1;
-+ (instancetype)allocSubclass1;
-
-- (void)onlyInSubsubclass1;
- at end
-
- at implementation Subsubclass1
-- (instancetype)initSubclass1 {
-  // Check based on method search.
-  [[super initSubclass1] methodOnSubclass2]; // expected-warning{{'Subsubclass1' may not respond to 'methodOnSubclass2'}}
-  [super.initSubclass1 methodOnSubclass2]; // expected-warning{{'Subsubclass1' may not respond to 'methodOnSubclass2'}}
-
-  self = [super init]; // common pattern
-
-  // Exact type check.
-  typeof([super initSubclass1]) *ptr1 = (Subsubclass1**)0;
-
-  return self;
-}
-
-+ (instancetype)allocSubclass1 {
-  // Check based on method search.
-  [[super allocSubclass1] methodOnSubclass2]; // expected-warning{{'Subsubclass1' may not respond to 'methodOnSubclass2'}}
-
-  // The ASTs don't model super property accesses well enough to get this right
-  [super.allocSubclass1 methodOnSubclass2]; // expected-warning{{'Subsubclass1' may not respond to 'methodOnSubclass2'}}
-
-  // Exact type check.
-  typeof([super allocSubclass1]) *ptr1 = (Subsubclass1**)0;
-  
-  return [super allocSubclass1];
-}
-
-- (void)onlyInSubsubclass1 {}
- at end
-
-// Check compatibility rules for inheritance of related return types.
- at class Subclass4;
-
- at interface Subclass3 <Proto1, Proto2>
-- (Subclass3 *)methodInProto1;
-- (Subclass4 *)methodInProto2; // expected-warning{{method is expected to return an instance of its class type 'Subclass3', but is declared to return 'Subclass4 *'}}
- at end
-
- at interface Subclass4 : Root
-+ (Subclass4 *)alloc; // okay
-- (Subclass3 *)init; // expected-warning{{method is expected to return an instance of its class type 'Subclass4', but is declared to return 'Subclass3 *'}}
-- (id)self; // expected-note{{overridden method is part of the 'self' method family}}
-- (instancetype)initOther;
- at end
-
- at protocol Proto3 <Proto1, Proto2>
- at optional
-- (id)methodInProto1;
-- (Subclass1 *)methodInProto2;
-- (int)otherMethodInProto2; // expected-warning{{protocol method is expected to return an instance of the implementing class, but is declared to return 'int'}}
- at end
-
- at implementation Subclass4
-+ (id)alloc {
-  return self; // FIXME: we accept this in ObjC++ but not ObjC?
-}
-
-- (Subclass3 *)init { return 0; } // don't complain: we lost the related return type
-
-- (Subclass3 *)self { return 0; } // expected-warning{{method is expected to return an instance of its class type 'Subclass4', but is declared to return 'Subclass3 *'}}
-
-- (Subclass4 *)initOther { return 0; }
-
- at end
-
-// Check that inherited related return types influence the types of
-// message sends.
-void test_instancetype_inherited() {
-  [[Subclass4 alloc] initSubclass1]; // expected-warning{{'Subclass4' may not respond to 'initSubclass1'}}
-  [[Subclass4 alloc] initOther];
-}
-
-// Check that related return types tighten up the semantics of
-// Objective-C method implementations.
- at implementation Subclass2
-- (instancetype)initSubclass2 { // expected-note {{explicitly declared 'instancetype'}}
-  Subclass1 *sc1 = [[Subclass1 alloc] init];
-  return sc1; // expected-error{{cannot initialize return object of type 'Subclass2 *' with an lvalue of type 'Subclass1 *'}}
-}
-- (void)methodOnSubclass2 {}
-- (id)self {
-  Subclass1 *sc1 = [[Subclass1 alloc] init];
-  return sc1; // expected-error{{cannot initialize return object of type 'Subclass2 *' with an lvalue of type 'Subclass1 *'}}
-}
- at end
-
- at interface MyClass : Root
-+ (int)myClassMethod;
- at end
-
- at implementation MyClass
-+ (int)myClassMethod { return 0; }
-
-- (void)blah {
-  int i = [[MyClass self] myClassMethod];
-}
-
- at end
-
-// rdar://12493140
- at protocol P4
-- (instancetype) foo; // expected-note {{current method is explicitly declared 'instancetype' and is expected to return an instance of its class type}}
- at end
- at interface A4 : Root <P4>
-- (instancetype) bar; // expected-note {{current method is explicitly declared 'instancetype' and is expected to return an instance of its class type}}
-- (instancetype) baz; // expected-note {{overridden method returns an instance of its class type}} expected-note {{previous definition is here}}
- at end
- at interface B4 : Root @end
-
- at implementation A4 {
-  B4 *_b;
-}
-- (id) foo {
-  return _b; // expected-error {{cannot initialize return object of type 'A4 *' with an lvalue of type 'B4 *'}}
-}
-- (id) bar {
-  return _b; // expected-error {{cannot initialize return object of type 'A4 *' with an lvalue of type 'B4 *'}}
-}
-
-// This is really just to ensure that we don't crash.
-// FIXME: only one diagnostic, please
-- (float) baz { // expected-warning {{method is expected to return an instance of its class type 'A4', but is declared to return 'float'}} expected-warning {{conflicting return type in implementation}}
-  return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-expr.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-expr.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-expr.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at interface A {
- at public
-  int ivar;
-}
- at property int prop;
- at end
-
-typedef struct objc_object {
-    Class isa;
-} *id;
-
-// Test instantiation of value-dependent ObjCIvarRefExpr,
-// ObjCIsaRefExpr, and ObjCPropertyRefExpr nodes.
-A *get_an_A(unsigned);
-id get_an_id(unsigned);
-
-template<unsigned N, typename T, typename U, typename V>
-void f(U value, V value2) {
-  get_an_A(N)->ivar = value; // expected-error{{assigning to 'int' from incompatible type 'int *'}}
-  get_an_A(N).prop = value2; // expected-error{{assigning to 'int' from incompatible type 'double *'}}
-  T c = get_an_id(N)->isa; // expected-error{{cannot initialize a variable of type 'int' with an lvalue of type 'Class'}} \
-                           // expected-warning 3 {{direct access to Objective-C's isa is deprecated in favor of object_getClass()}}
-}
-
-template void f<6, Class>(int, int); // expected-note{{in instantiation of}}
-template void f<7, Class>(int*, int); // expected-note{{in instantiation of}}
-template void f<8, Class>(int, double*); // expected-note{{in instantiation of}}
-template void f<9, int>(int, int); // expected-note{{in instantiation of}}
-
-// Test instantiation of unresolved member reference expressions to an
-// ivar reference.
-template<typename T, typename U, typename V>
-void f2(T ptr, U value, V value2) {
-  ptr->ivar = value; // expected-error{{assigning to 'int' from incompatible type 'int *'}}
-  ptr.prop = value2; // expected-error{{assigning to 'int' from incompatible type 'double *'}}
-}
-
-template void f2(A*, int, int);
-template void f2(A*, int*, int); // expected-note{{instantiation of}}
-template void f2(A*, int, double*); // expected-note{{instantiation of}}
-
-// Test instantiation of unresolved member referfence expressions to
-// an isa.
-template<typename T, typename U>
-void f3(U ptr) {
-  T c = ptr->isa; // expected-error{{cannot initialize a variable of type 'int' with an lvalue of type 'Class'}} \
-                  // expected-warning 1 {{direct access to Objective-C's isa is deprecated in favor of object_getClass()}}
-}
-
-template void f3<Class>(id); // expected-note{{in instantiation of}}
-template void f3<int>(id); // expected-note{{instantiation of}}
-
-// Implicit setter/getter
- at interface B
-- (int)foo;
-- (void)setFoo:(int)value;
- at end
-
-template<typename T>
-void f4(B *b, T value) {
-  b.foo = value; // expected-error{{assigning to 'int' from incompatible type 'int *'}}
-}
-
-template void f4(B*, int);
-template void f4(B*, int*); // expected-note{{in instantiation of function template specialization 'f4<int *>' requested here}}
-
-template<typename T, typename U>
-void f5(T ptr, U value) {
-  ptr.foo = value; // expected-error{{assigning to 'int' from incompatible type 'int *'}}
-}
-
-template void f5(B*, int);
-template void f5(B*, int*); // expected-note{{in instantiation of function template specialization 'f5<B *, int *>' requested here}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-message.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-message.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-message.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Test template instantiation of Objective-C message sends.
-
- at interface ClassMethods
-+ (ClassMethods *)method1:(void*)ptr;
- at end
-
-template<typename T>
-struct identity {
-  typedef T type;
-};
-
-template<typename R, typename T, typename Arg1>
-void test_class_method(Arg1 arg1) {
-  R *result1 = [T method1:arg1];
-  R *result2 = [typename identity<T>::type method1:arg1];
-  R *result3 = [ClassMethods method1:arg1]; // expected-error{{cannot initialize a variable of type 'ClassMethods2 *' with an rvalue of type 'ClassMethods *'}}
-}
-
-template void test_class_method<ClassMethods, ClassMethods>(void*);
-template void test_class_method<ClassMethods, ClassMethods>(int*);
-
- at interface ClassMethods2
-+ (ClassMethods2 *)method1:(int*)ptr;
- at end
-
-template void test_class_method<ClassMethods2, ClassMethods2>(int*); // expected-note{{in instantiation of}}
-
-
- at interface InstanceMethods
-- (InstanceMethods *)method1:(void*)ptr;
- at end
-
-template<typename R, typename T, typename Arg1>
-void test_instance_method(Arg1 arg1) {
-  T *receiver = 0;
-  InstanceMethods *im = 0;
-  R *result1 = [receiver method1:arg1];
-  R *result2 = [im method1:arg1]; // expected-error{{cannot initialize a variable of type 'InstanceMethods2 *' with an rvalue of type 'InstanceMethods *'}}
-}
-
-template void test_instance_method<InstanceMethods, InstanceMethods>(void*);
-template void test_instance_method<InstanceMethods, InstanceMethods>(int*);
-
- at interface InstanceMethods2
-- (InstanceMethods2 *)method1:(void*)ptr;
- at end
-
-template void test_instance_method<InstanceMethods2, InstanceMethods2>(int*); // expected-note{{in instantiation of}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-method-return.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-method-return.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-method-return.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
-// PR7386
-
- at class NSObject;
-
-class A;
-template<class T> class V {};
-
- at protocol Protocol
-- (V<A*>)protocolMethod;
- at end
-
-
- at interface I<Protocol>
- at end
-
-
- at implementation I
-- (void)randomMethod:(id)info {
-  V<A*> vec([self protocolMethod]);
-}
-
-- (V<A*>)protocolMethod {
-  V<A*> va; return va;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-stmt.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-stmt.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/instantiate-stmt.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fobjc-exceptions %s
-
- at interface NSException
- at end
-
-// @throw
-template<typename T>
-void throw_test(T value) {
-  @throw value; // expected-error{{@throw requires an Objective-C object type ('int' invalid)}}
-}
-
-template void throw_test(NSException *);
-template void throw_test(int); // expected-note{{in instantiation of}}
-
-// @synchronized
-template<typename T>
-void synchronized_test(T value) {
-  @synchronized (value) { // expected-error{{@synchronized requires an Objective-C object type ('int' invalid)}}
-    value = 0;
-  }
-}
-
-template void synchronized_test(NSException *);
-template void synchronized_test(int); // expected-note{{in instantiation of}}
-
-// fast enumeration
- at interface NSArray
-- (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount;
- at end
-
- at interface NSString
- at end
-
-struct vector {};
-
-template<typename T> void eat(T);
-
-template<typename E, typename T>
-void fast_enumeration_test(T collection) {
-  for (E element in collection) { // expected-error{{selector element type 'int' is not a valid object}} \
-    // expected-error{{the type 'vector' is not a pointer to a fast-enumerable object}}
-    eat(element);
-  }
-
-  E element;
-  for (element in collection) // expected-error{{selector element type 'int' is not a valid object}} \
-    // expected-error{{the type 'vector' is not a pointer to a fast-enumerable object}}
-    eat(element);
-
-  for (NSString *str in collection) // expected-error{{the type 'vector' is not a pointer to a fast-enumerable object}}
-    eat(str);
-
-  NSString *str;
-  for (str in collection) // expected-error{{the type 'vector' is not a pointer to a fast-enumerable object}}
-    eat(str);
-}
-
-template void fast_enumeration_test<NSString *>(NSArray*);
-template void fast_enumeration_test<int>(NSArray*); // expected-note{{in instantiation of}}
-template void fast_enumeration_test<NSString *>(vector); // expected-note{{in instantiation of}}
-
-// @try/@catch/@finally
-
-template<typename T, typename U>
-void try_catch_finally_test(U value) {
-  @try {
-    value = 1; // expected-error{{assigning to 'int *' from incompatible type 'int'}}
-  }
-  @catch (T obj) { // expected-error{{@catch parameter is not a pointer to an interface type}}
-    id x = obj;
-  } @finally {
-    value = 0;
-  }
-}
-
-template void try_catch_finally_test<NSString *>(int);
-template void try_catch_finally_test<NSString *>(int*); // expected-note{{in instantiation of}}
-template void try_catch_finally_test<NSString>(int); // expected-note{{in instantiation of function template specialization 'try_catch_finally_test<NSString, int>' requested here}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-construct.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-construct.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-construct.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-struct Y { 
-  Y(); 
-
-private:
-  ~Y(); // expected-note 3{{declared private here}}
-};
-
-template<typename T>
-struct X : T { }; // expected-error 2{{private destructor}}
-
-struct Z; // expected-note{{forward declaration}}
-
- at interface A {
-  X<Y> x; // expected-note{{implicit default destructor}}
-  Y y; // expected-error{{private destructor}}
-}
- at end
-
- at implementation A // expected-note{{implicit default constructor}}
- at end
-
- at interface B {
-  Z z; // expected-error{{incomplete type}}
-}
- at end
-
- at implementation B
- at end
-
-// <rdar://problem/11284902>
-template<typename T> struct Incomplete; // expected-note{{declared here}}
-
- at interface C {
-  Incomplete<int> a[4][4][4]; // expected-error{{implicit instantiation of undefined template 'Incomplete<int>'}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-lookup.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-lookup.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-lookup.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// expected-no-diagnostics
- at interface Ivar
-- (float*)method;
- at end
-
- at interface A {
-  A *Ivar;
-}
-- (int*)method;
- at end
-
- at implementation A
-- (int*)method {
-  int *ip = [Ivar method]; // Okay; calls A's method on the instance variable Ivar.
-                           // Note that Objective-C calls Ivar's method.
-  return 0;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-reference-type.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-reference-type.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-reference-type.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,5 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
- at interface A {
-  int &r; // expected-error {{instance variables cannot be of reference type}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-struct.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-struct.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/ivar-struct.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
- at interface A {
-  struct X {
-    int x, y;
-  } X;
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/linkage-spec.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/linkage-spec.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/linkage-spec.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-extern "C" {
- at class Protocol;
-}
-
-// <rdar://problem/7827709>
-extern "C" {
- at class I;
-}
-
- at interface I
- at end
-
-// rdar://10015110
- at protocol VKAnnotation;
-extern "C" {
-
- at protocol VKAnnotation
-  @property (nonatomic, assign) id coordinate;
- at end
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/literals.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/literals.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/literals.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,187 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++0x -fblocks %s
-
-// rdar://11231426
-typedef signed char BOOL;
-
-void y(BOOL (^foo)());
-
-void x() {
-    y(^{
-        return __objc_yes;
-    });
-}
-
- at protocol NSCopying
-- copy;
- at end
-
- at interface NSObject
- at end
-
- at interface NSNumber : NSObject <NSCopying>
--copy;
- at end
-
- at interface NSNumber (NSNumberCreation)
-+ (NSNumber *)numberWithChar:(char)value;
-+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
-+ (NSNumber *)numberWithShort:(short)value;
-+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
-+ (NSNumber *)numberWithInt:(int)value;
-+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
-+ (NSNumber *)numberWithLong:(long)value;
-+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
-+ (NSNumber *)numberWithLongLong:(long long)value;
-+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
-+ (NSNumber *)numberWithFloat:(float)value;
-+ (NSNumber *)numberWithDouble:(double)value;
-+ (NSNumber *)numberWithBool:(BOOL)value;
- at end
-
- at interface NSArray : NSObject <NSCopying>
--copy;
- at end
-
- at interface NSArray (NSArrayCreation)
-+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
- at end
-
- at interface NSDictionary
-+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id<NSCopying> [])keys count:(unsigned long)cnt;
- at end
-
-template<typename T>
-struct ConvertibleTo {
-  operator T();
-};
-
-template<typename T>
-struct ExplicitlyConvertibleTo {
-  explicit operator T();
-};
-
-template<typename T>
-class PrivateConvertibleTo {
-private:
-  operator T(); // expected-note{{declared private here}}
-};
-
-template<typename T> ConvertibleTo<T> makeConvertible();
-
-struct X {
-  ConvertibleTo<id> x;
-  ConvertibleTo<id> get();
-};
-
-template<typename T> T test_numeric_instantiation() {
-  return @-17.42;
-}
-
-template id test_numeric_instantiation();
-
-void test_convertibility(ConvertibleTo<NSArray*> toArray,
-                         ConvertibleTo<id> toId,
-                         ConvertibleTo<int (^)(int)> toBlock,
-                         ConvertibleTo<int> toInt,
-                         ExplicitlyConvertibleTo<NSArray *> toArrayExplicit) {
-  id array = @[ 
-               toArray,
-               toId,
-               toBlock,
-               toInt // expected-error{{collection element of type 'ConvertibleTo<int>' is not an Objective-C object}}
-              ];
-  id array2 = @[ toArrayExplicit ]; // expected-error{{collection element of type 'ExplicitlyConvertibleTo<NSArray *>' is not an Objective-C object}}
-
-  id array3 = @[ 
-                makeConvertible<id>(),
-                               makeConvertible<id>, // expected-error{{collection element of type 'ConvertibleTo<id> ()' is not an Objective-C object}}
-               ];
-
-  X x;
-  id array4 = @[ x.x ];
-  id array5 = @[ x.get ]; // expected-error{{reference to non-static member function must be called}}
-  id array6 = @[ PrivateConvertibleTo<NSArray*>() ]; // expected-error{{operator NSArray *' is a private member of 'PrivateConvertibleTo<NSArray *>'}}
-}
-
-template<typename T>
-void test_array_literals(T t) {
-  id arr = @[ @17, t ]; // expected-error{{collection element of type 'int' is not an Objective-C object}}
-}
-
-template void test_array_literals(id);
-template void test_array_literals(NSArray*);
-template void test_array_literals(int); // expected-note{{in instantiation of function template specialization 'test_array_literals<int>' requested here}}
-
-template<typename T, typename U>
-void test_dictionary_literals(T t, U u) {
-  NSObject *object;
-  id dict = @{ 
-    @17 : t, // expected-error{{collection element of type 'int' is not an Objective-C object}}
-    u : @42 // expected-error{{collection element of type 'int' is not an Objective-C object}}
-  };
-
-  id dict2 = @{ 
-    object : @"object" // expected-error{{cannot initialize a parameter of type 'const id<NSCopying>' with an rvalue of type 'NSObject *'}}
-  }; 
-}
-
-template void test_dictionary_literals(id, NSArray*);
-template void test_dictionary_literals(NSArray*, id);
-template void test_dictionary_literals(int, id); // expected-note{{in instantiation of function template specialization 'test_dictionary_literals<int, id>' requested here}}
-template void test_dictionary_literals(id, int); // expected-note{{in instantiation of function template specialization 'test_dictionary_literals<id, int>' requested here}}
-
-template<typename ...Args>
-void test_bad_variadic_array_literal(Args ...args) {
-  id arr1 = @[ args ]; // expected-error{{initializer contains unexpanded parameter pack 'args'}}
-}
-
-template<typename ...Args>
-void test_variadic_array_literal(Args ...args) {
-  id arr1 = @[ args... ]; // expected-error{{collection element of type 'int' is not an Objective-C object}}
-}
-template void test_variadic_array_literal(id);
-template void test_variadic_array_literal(id, NSArray*);
-template void test_variadic_array_literal(id, int, NSArray*); // expected-note{{in instantiation of function template specialization 'test_variadic_array_literal<id, int, NSArray *>' requested here}}
-
-template<typename ...Args>
-void test_bad_variadic_dictionary_literal(Args ...args) {
-  id dict = @{ args : @17 }; // expected-error{{initializer contains unexpanded parameter pack 'args'}}
-}
-
-// Test array literal pack expansions. 
-template<typename T, typename U>
-struct pair {
-  T first;
-  U second;
-};
-
-template<typename T, typename ...Ts, typename ... Us>
-void test_variadic_dictionary_expansion(T t, pair<Ts, Us>... key_values) {
-  id dict = @{ 
-    t : key_values.second ..., // expected-error{{collection element of type 'int' is not an Objective-C object}}
-    key_values.first : key_values.second ..., // expected-error{{collection element of type 'float' is not an Objective-C object}}
-    key_values.second : t ...
-  };
-}
-
-template void test_variadic_dictionary_expansion(id, 
-                                                 pair<NSNumber*, id>,
-                                                 pair<id, ConvertibleTo<id>>);
-template void test_variadic_dictionary_expansion(NSNumber *, // expected-note{{in instantiation of function template specialization}}
-                                                 pair<NSNumber*, int>,
-                                                 pair<id, ConvertibleTo<id>>);
-template void test_variadic_dictionary_expansion(NSNumber *, // expected-note{{in instantiation of function template specialization}}
-                                                 pair<NSNumber*, id>,
-                                                 pair<float, ConvertibleTo<id>>);
-
-// Test parsing 
-struct key {
-  static id value;
-};
-
-id key;
-id value;
-
-void test_dictionary_colon() {
-  id dict = @{ key : value };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/message.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/message.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/message.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,127 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile-10.5 -verify -Wno-objc-root-class %s
- at interface I1
-- (int*)method;
- at end
-
- at implementation I1
-- (int*)method {
-  struct x { };
-  [x method]; // expected-error{{receiver type 'x' is not an Objective-C class}}
-  return 0;
-}
- at end
-
-typedef struct { int x; } ivar;
-
- at interface I2 {
-  id ivar;
-}
-- (int*)method;
-+ (void)method;
- at end
-
-struct I2_holder {
-  I2_holder();
-
-  I2 *get();
-};
-
-I2 *operator+(I2_holder, int);
-
- at implementation I2
-- (int*)method {
-  [ivar method];
-
-  // Test instance messages that start with a simple-type-specifier.
-  [I2_holder().get() method];
-  [I2_holder().get() + 17 method];
-  return 0;
-}
-+ (void)method {
-  [ivar method]; // expected-error{{receiver type 'ivar' is not an Objective-C class}}
-}
- at end
-
-// Class message sends
- at interface I3
-+ (int*)method;
- at end
-
- at interface I4 : I3
-+ (int*)otherMethod;
- at end
-
-template<typename T>
-struct identity {
-  typedef T type;
-};
-
- at implementation I4
-+ (int *)otherMethod {
-  // Test class messages that use non-trivial simple-type-specifiers
-  // or typename-specifiers.
-  if (false) {
-    if (true)
-      return [typename identity<I3>::type method]; // expected-warning{{occurs outside of a template}}
-
-    return [::I3 method];
-  }
-
-  int* ip1 = {[super method]};
-  int* ip2 = {[::I3 method]};
-  int* ip3 = {[typename identity<I3>::type method]}; // expected-warning{{occurs outside of a template}}
-  int* ip4 = {[typename identity<I2_holder>::type().get() method]}; // expected-warning{{occurs outside of a template}}
-  int array[5] = {[3] = 2};
-  return [super method];
-}
- at end
-
-struct String {
-  String(const char *);
-};
-
-struct MutableString : public String { };
-
-// C++-specific parameter types
- at interface I5
-- method:(const String&)str1 
-   other:(String&)str2; // expected-note{{passing argument to parameter 'str2' here}}
- at end
-
-void test_I5(I5 *i5, String s) {
-  [i5 method:"hello" other:s];
-  [i5 method:s other:"world"]; // expected-error{{non-const lvalue reference to type 'String' cannot bind to a value of unrelated type 'const char [6]'}}
-}
-
-// <rdar://problem/8483253>
- at interface A
-
-struct X { };
-
-+ (A *)create:(void (*)(void *x, X r, void *data))callback
-	      callbackData:(void *)callback_data;
-
- at end
-
-
-void foo(void)
-{
-  void *fun;
-  void *ptr;
-  X r;
-  A *im = [A create:(void (*)(void *cgl_ctx, X r, void *data)) fun
-             callbackData:ptr];
-}
-
-// <rdar://problem/8807070>
-template<typename T> struct X1; // expected-note{{template is declared here}}
-
- at interface B
-+ (X1<int>)blah;
-+ (X1<float>&)blarg;
- at end
-
-void f() {
-  [B blah]; // expected-error{{implicit instantiation of undefined template 'X1<int>'}}
-  [B blarg];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/namespace-lookup.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/namespace-lookup.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/namespace-lookup.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// <rdar://problem/9388207>
- at interface A
- at end
-
- at interface A(N)
- at end
-
- at protocol M
- at end
-
-namespace N { }
-namespace M { }

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/null_objc_pointer.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/null_objc_pointer.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/null_objc_pointer.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wnull-arithmetic %s
-// expected-no-diagnostics
-#define NULL __null
-
- at interface X
- at end
-
-void f() {
-  bool b;
-  X *d;
-  b = d < NULL || NULL < d || d > NULL || NULL > d;
-  b = d <= NULL || NULL <= d || d >= NULL || NULL >= d;
-  b = d == NULL || NULL == d || d != NULL || NULL != d;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/nullptr.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/nullptr.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/nullptr.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fblocks -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface A
- at end
-
-void comparisons(A *a) {
-  (void)(a == nullptr);
-  (void)(nullptr == a);
-}
-
-void assignment(A *a) {
-  a = nullptr;
-}
-
-int PR10145a = (void(^)())0 == nullptr;
-int PR10145b = nullptr == (void(^)())0;

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-container-subscripting.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-container-subscripting.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-container-subscripting.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,138 +0,0 @@
-// RUN: %clang_cc1 -fblocks -triple x86_64-apple-darwin11 -fsyntax-only -std=c++11 -verify %s
-
- at class NSArray;
-
- at interface NSMutableDictionary
-- (id)objectForKeyedSubscript:(id)key;
-- (void)setObject:(id)object forKeyedSubscript:(id)key; // expected-note {{passing argument to parameter 'object' here}}
- at end
-
-template<typename T, typename U, typename O>
-void test_dictionary_subscripts(T base, U key, O obj) {
-  base[key] = obj; // expected-error {{expected method to write array element not found on object of type 'NSMutableDictionary *'}} \
-                   // expected-error {{cannot initialize a parameter of type 'id' with an lvalue of type 'int'}}
-  obj = base[key];  // expected-error {{expected method to read array element not found on object of type 'NSMutableDictionary *'}} \
-                    // expected-error {{assigning to 'int' from incompatible type 'id'}}
-     
-}
-
-template void test_dictionary_subscripts(NSMutableDictionary*, id, NSArray *ns);
-
-template void test_dictionary_subscripts(NSMutableDictionary*, NSArray *ns, id);
-
-template void test_dictionary_subscripts(NSMutableDictionary*, int, id); // expected-note {{in instantiation of function template specialization 'test_dictionary_subscripts<NSMutableDictionary *, int, id>' requested here}}
-
-template void test_dictionary_subscripts(NSMutableDictionary*, id, int); // expected-note {{in instantiation of function template specialization 'test_dictionary_subscripts<NSMutableDictionary *, id, int>' requested here}}
-
-
- at interface NSMutableArray
-- (id)objectAtIndexedSubscript:(int)index;
-- (void)setObject:(id)object atIndexedSubscript:(int)index;
- at end
-
-template<typename T, typename U, typename O>
-void test_array_subscripts(T base, U index, O obj) {
-  base[index] = obj; // expected-error {{indexing expression is invalid because subscript type 'double' is not an integral or Objective-C pointer type}}
-  obj = base[index]; // expected-error {{indexing expression is invalid because subscript type 'double' is not an integral or Objective-C pointer type}}
-}
-
-template void  test_array_subscripts(NSMutableArray *, int, id);
-template void  test_array_subscripts(NSMutableArray *, short, id);
-enum E { e };
-
-template void  test_array_subscripts(NSMutableArray *, E, id);
-
-template void  test_array_subscripts(NSMutableArray *, double, id); // expected-note {{in instantiation of function template specialization 'test_array_subscripts<NSMutableArray *, double, id>' requested here}}
-
-template<typename T>
-struct ConvertibleTo {
-  operator T();
-};
-
-template<typename T>
-struct ExplicitlyConvertibleTo {
-  explicit operator T();
-};
-
-template<typename T> ConvertibleTo<T> makeConvertible();
-
-struct X {
-  ConvertibleTo<id> x;
-  ConvertibleTo<id> get();
-};
-
-NSMutableArray *test_array_convertibility(ConvertibleTo<NSMutableArray*> toArray,
-                         ConvertibleTo<id> toId,
-                         ConvertibleTo<int (^)(int)> toBlock,
-                         ConvertibleTo<int> toInt,
-                         ExplicitlyConvertibleTo<NSMutableArray *> toArrayExplicit) {
-  id array;
-
-  array[1] = toArray;
-
-  array[4] = array[1];
- 
-  toArrayExplicit[2] = toId; // expected-error {{type 'ExplicitlyConvertibleTo<NSMutableArray *>' does not provide a subscript operator}}
-
-  return array[toInt];
-  
-}
-
-id test_dict_convertibility(ConvertibleTo<NSMutableDictionary*> toDict,
-                         ConvertibleTo<id> toId,
-                         ConvertibleTo<int (^)(int)> toBlock,
-                         ConvertibleTo<int> toInt,
-                         ExplicitlyConvertibleTo<NSMutableDictionary *> toDictExplicit) {
-
-
-  NSMutableDictionary *Dict;
-  id Id;
-  Dict[toId] = toBlock;
-
-  Dict[toBlock] = toBlock;
-
-  Dict[toBlock] = Dict[toId] = Dict[toBlock];
-
-  Id = toDictExplicit[toId] = Id; // expected-error {{no viable overloaded operator[] for type 'ExplicitlyConvertibleTo<NSMutableDictionary *>'}}
-
-  return Dict[toBlock];
-}
-
-
-template<typename ...Args>
-void test_bad_variadic_array_subscripting(Args ...args) {
-  id arr1;
-  arr1[3] = args; // expected-error {{expression contains unexpanded parameter pack 'args'}}
-}
-
-template<typename ...Args>
-void test_variadic_array_subscripting(Args ...args) {
-  id arr[] = {args[3]...}; // which means: {a[3], b[3], c[3]};
-}
-
-template void test_variadic_array_subscripting(id arg1, NSMutableArray* arg2, id arg3);
-
- at class Key;
-
-template<typename Index, typename ...Args>
-void test_variadic_dictionary_subscripting(Index I, Args ...args) {
-  id arr[] = {args[I]...}; // which means: {a[3], b[3], c[3]};
-}
-
-template void test_variadic_dictionary_subscripting(Key *key, id arg1, NSMutableDictionary* arg2, id arg3);
-
-template<int N>
-id get(NSMutableArray *array) {
- return array[N]; // array[N] should be a value- and instantiation-dependent ObjCSubscriptRefExpr
-}
-
-struct WeirdIndex {
-   operator int(); // expected-note {{type conversion function declared here}}
-   operator id(); // expected-note {{type conversion function declared here}}
-};
-
-id FUNC(WeirdIndex w) {
-  NSMutableArray *array;
-  return array[w]; // expected-error {{indexing expression is invalid because subscript type 'WeirdIndex' has multiple type conversion functions}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-decls-inside-namespace.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-decls-inside-namespace.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-decls-inside-namespace.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-namespace C {
-
- at protocol P; //expected-error{{Objective-C declarations may only appear in global scope}}
-
- at class Bar; //expected-error{{Objective-C declarations may only appear in global scope}}
-
- at compatibility_alias Foo Bar; //expected-error{{Objective-C declarations may only appear in global scope}}
-
- at interface A //expected-error{{Objective-C declarations may only appear in global scope}}
- at end
-
- at implementation A //expected-error{{Objective-C declarations may only appear in global scope}}
- at end
-
- at protocol P //expected-error{{Objective-C declarations may only appear in global scope}}
- at end
-
- at interface A(C) //expected-error{{Objective-C declarations may only appear in global scope}}
- at end
-
- at implementation A(C) //expected-error{{Objective-C declarations may only appear in global scope}}
- at end
-
- at interface B @end //expected-error{{Objective-C declarations may only appear in global scope}}
- at implementation B //expected-error{{Objective-C declarations may only appear in global scope}}
-+ (void) foo {}
- at end
-
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-extern-c.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-extern-c.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-extern-c.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol P // expected-note {{previous}}
--(void)meth1;
- at end
-
- at interface I // expected-note {{previous}}
- at end
-
- at interface I2
- at end
- at interface I2(C) // expected-note {{previous}}
- at end
-
-extern "C" {
- at protocol P // expected-warning {{duplicate protocol definition of 'P' is ignored}}
--(void)meth2;
- at end
-
- at interface I // expected-error {{duplicate}}
- at end
-
- at interface I2(C) // expected-warning {{duplicate}}
- at end
-}
-
-void test(id<P> p) {
-  [p meth1];
-  [p meth2]; // expected-warning {{not found}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-pointer-conv.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-pointer-conv.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc-pointer-conv.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-typedef const void * VoidStar;
-
-typedef struct __CFDictionary * CFMDRef;
-
-void RandomFunc(CFMDRef theDict, const void *key, const void *value);
-
- at interface Foo
-- (void)_apply:(void (*)(const void *, const void *, void *))func context:(void *)context;
-- (void)a:(id *)objects b:(id *)keys;
- at end
-
- at implementation Foo
-- (void)_apply:(void (*)(const void *, const void *, void *))func context:(void *)context {
-	id item;
-	id obj;
-    func(item, obj, context);
-}
-
-- (void)a:(id *)objects b:(id *)keys {
-    VoidStar dict;
-	id key;
-    RandomFunc((CFMDRef)dict, key, objects[3]);
-}
- at end
-
- at interface I
-- (void) Meth : (I*) Arg; // expected-note{{passing argument to parameter 'Arg' here}}
- at end
-
-void Func (I* arg);  // expected-note {{candidate function not viable: no known conversion from 'const I *' to 'I *' for 1st argument}}
-
-void foo(const I *p, I* sel) {
-  [sel Meth : p];	// expected-error {{cannot initialize a parameter of type 'I *' with an lvalue of type 'const I *'}}
-  Func(p);		// expected-error {{no matching function for call to 'Func'}}
-}
-
- at interface DerivedFromI : I
- at end
-
-void accept_derived(DerivedFromI*);
-
-void test_base_to_derived(I* i) {
-  accept_derived(i); // expected-warning{{incompatible pointer types passing 'I *' to parameter of type 'DerivedFromI *'}}
-  DerivedFromI *di = i; // expected-warning{{incompatible pointer types initializing 'DerivedFromI *' with an expression of type 'I *'}}
-  DerivedFromI *di2 = (DerivedFromI *)i;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc2-merge-gc-attribue-decl.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc2-merge-gc-attribue-decl.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/objc2-merge-gc-attribue-decl.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-gc -fsyntax-only -verify %s
- at interface INTF @end
-
-extern INTF* p2;
-extern __strong INTF* p2;
-
-extern __strong id p1;
-extern id p1;
-
-extern id CFRunLoopGetMain();
-extern __strong id CFRunLoopGetMain();
-
-extern __strong id CFRunLoopGetMain2();
-extern id CFRunLoopGetMain2();
-
-extern INTF* CFRunLoopGetMain3();
-extern __strong INTF* CFRunLoopGetMain3();
-
-extern __strong INTF* CFRunLoopGetMain4();
-extern INTF* CFRunLoopGetMain4();
-
-typedef id ID;
-extern ID CFRunLoopGetMain5();
-extern __strong id CFRunLoopGetMain5();
-
-extern __strong id CFRunLoopGetMain6();
-extern ID CFRunLoopGetMain6();
-
-extern ID CFRunLoopGetMain7();
-extern __strong ID CFRunLoopGetMain7();
-
-extern __strong ID CFRunLoopGetMain8();
-extern ID CFRunLoopGetMain8();
-
-extern __weak id WLoopGetMain(); // expected-note {{previous declaration is here}}
-extern id WLoopGetMain();	// expected-error {{functions that differ only in their return type cannot be overloaded}}
-
-extern id p3;	// expected-note {{previous definition is here}}
-extern __weak id p3;	// expected-error {{redefinition of 'p3' with a different type}}
-
-extern void *p4; // expected-note {{previous definition is here}}
-extern void * __strong p4; // expected-error {{redefinition of 'p4' with a different type}}
-
-extern id p5;
-extern __strong id p5;
-
-extern char* __strong p6; // expected-note {{previous definition is here}}
-extern char* p6; // expected-error {{redefinition of 'p6' with a different type}}
-
-extern __strong char* p7; // expected-note {{previous definition is here}}
-extern char* p7; // expected-error {{redefinition of 'p7' with a different type}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
- at protocol Proto1 @end
-
- at protocol Proto2 @end
-
-void f(id<Proto1> *) { }		// expected-note {{previous definition is here}}
-
-void f(id<Proto1, Proto2> *) { }	// expected-error {{conflicting types for 'f'}}
-
-void f(Class<Proto1> *) { }		// expected-note {{previous definition is here}}
-
-void f(Class<Proto1, Proto2> *) { }	// expected-error {{conflicting types for 'f'}}
-
- at interface I @end
-
-void f(I<Proto1> *) { }		// expected-note {{previous definition is here}}
-
-void f(I<Proto1, Proto2> *) { }		// expected-error {{conflicting types for 'f'}}
-
- at interface I1 @end
-
-void f1(I<Proto1> *) { }
-
-void f1(I1<Proto1, Proto2> *) { }

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload-gc.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload-gc.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload-gc.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -triple i386-apple-darwin9 -fobjc-gc -verify %s
-// expected-no-diagnostics
-
-void f0(__weak id *);
-
-void test_f0(id *x) {
-  f0(x);
-}
-
- at interface A
- at end
-
-void f1(__weak id*);
-void test_f1(__weak A** a) {
-  f1(a);
-}
-
- at interface B : A
- at end
-
-void f2(__weak A**);
-void test_f2(__weak B** b) {
-  f2(b);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/overload.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,179 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
- at interface Foo
- at end
-
- at implementation Foo
-
-void func(id);
-
-+ zone {
- func(self);
- return self;
-}
- at end
-
- at protocol P0
- at end
-
- at protocol P1
- at end
-
- at interface A <P0>
- at end
-
- at interface B : A
- at end
-
- at interface C <P1>
- at end
-
-int& f(A*); // expected-note {{candidate}}
-float& f(B*); // expected-note {{candidate}}
-void g(A*);
-
-int& h(A*);
-float& h(id);
-
-void test0(A* a, B* b, id val) {
-  int& i1 = f(a);
-  float& f1 = f(b);
-
-  // GCC succeeds here, which is clearly ridiculous.
-  float& f2 = f(val); // expected-error {{ambiguous}}
-
-  g(a);
-  g(b);
-  g(val);
-  int& i2 = h(a);
-  float& f3 = h(val);
-
-  int& i3 = h(b);
-}
-
-void test1(A* a) {
-  B* b = a; // expected-warning{{incompatible pointer types initializing 'B *' with an expression of type 'A *'}}
-  B *c; c = a; // expected-warning{{incompatible pointer types assigning to 'B *' from 'A *'}}
-}
-
-void test2(A** ap) {
-  B** bp = ap; // expected-warning{{incompatible pointer types initializing 'B **' with an expression of type 'A **'}}
-  bp = ap; // expected-warning{{incompatible pointer types assigning to 'B **' from 'A **'}}
-}
-
-// FIXME: we should either allow overloading here or give a better diagnostic
-int& cv(A*); // expected-note {{previous declaration}} expected-note 2 {{not viable}}
-float& cv(const A*); // expected-error {{cannot be overloaded}}
-
-int& cv2(void*);
-float& cv2(const void*);
-
-void cv_test(A* a, B* b, const A* ac, const B* bc) {
-  int &i1 = cv(a);
-  int &i2 = cv(b);
-  float &f1 = cv(ac); // expected-error {{no matching function}}
-  float &f2 = cv(bc); // expected-error {{no matching function}}
-  int& i3 = cv2(a);
-  float& f3 = cv2(ac);
-}
-
-// We agree with GCC that these can't be overloaded.
-int& qualid(id<P0>); // expected-note {{previous declaration}} expected-note {{not viable}}
-float& qualid(id<P1>); // expected-error {{cannot be overloaded}}
-
-void qualid_test(A *a, B *b, C *c) {
-  int& i1 = qualid(a);
-  int& i2 = qualid(b);
-
-  // This doesn't work only because the overload was rejected above.
-  float& f1 = qualid(c); // expected-error {{no matching function}}
-
-  id<P0> p1 = 0;
-  p1 = 0;
-}
-
-
- at class NSException;
-typedef struct {
-    void (*throw_exc)(id);
-}
-objc_exception_functions_t;
-
-void (*_NSExceptionRaiser(void))(NSException *) {
-    objc_exception_functions_t exc_funcs;
-    return exc_funcs.throw_exc; // expected-warning{{incompatible pointer types returning 'void (*)(id)' from a function with result type 'void (*)(NSException *)'}}
-}
-
-namespace test5 {
-  void foo(bool);
-  void foo(void *);
-
-  void test(id p) {
-    foo(p);
-  }
-}
-
-// rdar://problem/8592139
-namespace test6 {
-  void foo(id); // expected-note{{candidate function}}
-  void foo(A*) __attribute__((unavailable)); // expected-note {{explicitly made unavailable}}
-
-  void test(B *b) {
-    foo(b); // expected-error {{call to unavailable function 'foo'}}
-  }
-}
-
-namespace rdar8714395 {
-  int &f(const void*);
-  float &f(const Foo*);
-
-  int &f2(const void*);
-  float &f2(Foo const* const *);
-
-  int &f3(const void*);
-  float &f3(Foo const**);
-
-  void g(Foo *p) {
-    float &fr = f(p);
-    float &fr2 = f2(&p);
-    int &ir = f3(&p);
-  }
-
-  
-}
-
-namespace rdar8734046 {
-  void f1(id);
-  void f2(id<P0>);
-  void g(const A *a) {
-    f1(a);
-    f2(a);
-  }
-}
-
-namespace PR9735 {
-  int &f3(const A*);
-  float &f3(const void*);
-
-  void test_f(B* b, const B* bc) {
-    int &ir1 = f3(b);
-    int &ir2 = f3(bc);
-  }
-}
-
- at interface D : B
- at end
-
-namespace rdar9327203 {
-  int &f(void* const&, int);
-  float &f(void* const&, long);
-  
-  void g(id x) { 
-    int &fr = (f)(x, 0); 
-  }
-}
-
-namespace class_id {
-  // it's okay to overload Class with id.
-  void f(Class) { }
-  void f(id) { }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/parameters.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/parameters.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/parameters.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
- at interface A
- at end
-
-template<typename T>
-struct X0 {
-  void f(T); // expected-error{{interface type 'A' cannot be passed by value}}
-};
-
-X0<A> x0a; // expected-note{{instantiation}}
-
-
-struct test2 { virtual void foo() = 0; }; // expected-note {{unimplemented}}
- at interface Test2
-- (void) foo: (test2) foo; // expected-error {{parameter type 'test2' is an abstract class}}
- at end
-
-template<typename T> void r1(__restrict T);
-void r2(__restrict id x) { r1(x); }

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/pointer-to-objc-pointer-conv.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// REQUIRES: LP64
-
- at interface G
- at end
-
- at interface F
-- (void)bar:(id *)objects;
-- (void)foo:(G**)objects;
- at end
-
-
-void a() {
-	F *b;
-	G **keys;
-	[b bar:keys];
-
-	id *PID;
-	[b foo:PID];
-
-}
-
-
-// pr7936
- at interface I1 @end
-
-class Wrapper {
-public:
-  operator id() const { return (id)_value; }
-  operator Class() const { return (Class)_value; }
-  operator I1*() const { return (I1*)_value; }
-
-  bool Compare(id obj) { return *this == obj; }
-  bool CompareClass(Class obj) { return *this == obj; }
-  bool CompareI1(I1* obj) { return *this == obj; }
-
-  Wrapper &operator*();
-  Wrapper &operator[](int);
-  Wrapper& operator->*(int);
-
-private:
-  long _value;
-};
-
-void f() {
-  Wrapper w;
-  w[0];
-  *w;
-  w->*(0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/propert-dot-error.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/propert-dot-error.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/propert-dot-error.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar: // 8379892
-
-struct X {
-  X();
-  X(const X&);
-  ~X();
-
-  static int staticData;
-  int data;
-  void method();
-};
-
- at interface A {
-  X xval;
-}
-
-- (X)x;
-- (void)setx:(X)x;
- at end
-
-void f(A* a) {
-  a.x = X(); // expected-error {{no setter method 'setX:' for assignment to property}}
-}
-
-struct Y : X { };
-
- at interface B {
- at private
-  Y *y;
-}
-- (Y)value;
-- (void)setValue : (Y) arg;
- at property Y value;
- at end
-
-void g(B *b) {
-  b.value.data = 17; // expected-error {{not assignable}}
-  b.value.staticData = 17;
-  b.value.method();
-}
-
- at interface C
- at end
-
- at implementation C
-- (void)method:(B *)b {
-  // <rdar://problem/8985943>
-  b.operator+ = 17; // expected-error{{'operator+' is not a valid property name (accessing an object of type 'B *')}}
-  b->operator+ = 17; // expected-error{{'B' does not have a member named 'operator+'}}
-}
- at end
-
-// PR9759
-class Forward;
- at interface D {
- at public
-  int ivar;
-}
-
- at property int property;
- at end
-
-void testD(D *d) {
-  d.Forward::property = 17; // expected-error{{property access cannot be qualified with 'Forward::'}}
-  d->Forward::ivar = 12; // expected-error{{instance variable access cannot be qualified with 'Forward::'}}
-  d.D::property = 17; // expected-error{{expected a class or namespace}}
-  d->D::ivar = 12; // expected-error{{expected a class or namespace}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/properties.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/properties.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/properties.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,166 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -Wno-objc-root-class %s
-
-struct X { 
-  void f() const;
-  ~X();
-};
-
- at interface A {
-  X x_;
-}
-
-- (const X&)x;
-- (void)setx:(const X&)other;
- at end
-
- at implementation A
-
-- (const X&)x { return x_; }
-- (void)setx:(const X&)other { x_ = other; }
-- (void)method {
-  self.x.f();
-}
- at end
-
-// rdar://problem/10444030
- at interface Test2
-- (void) setY: (int) y;
-- (int) z;
- at end
-void test2(Test2 *a) {
-  auto y = a.y; // expected-error {{no getter method for read from property}}
-  auto z = a.z;
-}
-
-// rdar://problem/10672108
- at interface Test3
-- (int) length;
- at end
-void test3(Test3 *t) {
-  char vla[t.length] = {}; // expected-error {{variable-sized object may not be initialized}}
-  char *heaparray = new char[t.length];
-}
-
-// <rdar://problem/10672501>
-namespace std {
-  template<typename T> void count();
-}
-
- at interface Test4
-- (X&) prop;
- at end
-
-void test4(Test4 *t) {
-  (void)const_cast<const X&>(t.prop);
-  (void)dynamic_cast<X&>(t.prop);
-  (void)reinterpret_cast<int&>(t.prop);
-}
-
- at interface Test5 {
- at public
-  int count;
-}
- at property int count;
- at end
-
-void test5(Test5* t5) {
-  if (t5.count < 2) { }
-  if (t5->count < 2) { }
-}
-
-
- at interface Test6
-+ (Class)class;
-- (Class)class;
- at end
-
-void test6(Test6 *t6) {
-  Class x = t6.class;
-  Class x2 = Test6.class;
-}
-
-template<typename T>
-void test6_template(T *t6) {
-  Class x = t6.class;
-}
-
-template void test6_template(Test6*);
-
-// rdar://problem/10965735
-struct Test7PointerMaker {
-  operator char *() const;
-};
- at interface Test7
-- (char*) implicit_property;
-- (char) bad_implicit_property;
-- (Test7PointerMaker) implicit_struct_property;
- at property int *explicit_property;
- at property int bad_explicit_property;
- at property Test7PointerMaker explicit_struct_property;
- at end
-void test7(Test7 *ptr) {
-  delete ptr.implicit_property;
-  delete ptr.bad_implicit_property; // expected-error {{cannot delete expression of type 'char'}}
-  delete ptr.explicit_property;
-  delete ptr.bad_explicit_property; // expected-error {{cannot delete expression of type 'int'}}
-  delete ptr.implicit_struct_property;
-  delete ptr.explicit_struct_property;
-}
-
-// Make sure the returned value from property assignment is void,
-// because there isn't any other viable way to handle it for
-// non-trivial classes.
-class NonTrivial1 {
-public:
-	~NonTrivial1();
-};
-class NonTrivial2 {
-public:
-	NonTrivial2();
-	NonTrivial2(const NonTrivial2&);
-};
- at interface TestNonTrivial
- at property(assign, nonatomic) NonTrivial1 p1;
- at property(assign, nonatomic) NonTrivial2 p2;
- at end
-TestNonTrivial *TestNonTrivialObj;
-
-extern void* VoidType;
-extern decltype(TestNonTrivialObj.p1 = NonTrivial1())* VoidType;
-extern decltype(TestNonTrivialObj.p2 = NonTrivial2())* VoidType;
-
-// rdar://13332183
-namespace test9 {
-  struct CString {
-    const char *_data;
-    char operator[](int i) const { return _data[i]; }
-  };
-}
- at interface Test9
- at property test9::CString name;
- at end
-namespace test9 {
-  char test(Test9 *t) {
-    return t.name[0];
-  }
-}
-
-namespace test10 {
-  struct A { operator const char*(); };
-  struct B { operator const char*(); };
-}
- at interface Test10
- at property test10::A a;
- at property test10::B b;
- at property int index;
- at end
-namespace test10 {
-  void test(Test10 *t) {
-    (void) t.a[6];
-    (void) 6[t.b];
-    (void) "help"[t.index];
-    (void) t.index["help"];
-    (void) t.a[t.index];
-    (void) t.index[t.b];
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-reference.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-reference.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-reference.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,77 +0,0 @@
-// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fsyntax-only -verify -Wno-objc-root-class %s
-// rdar://9070460
-
-class TCPPObject
-{
-public:
-	TCPPObject(const TCPPObject& inObj);
-	TCPPObject();
-	~TCPPObject();
-	
-	TCPPObject& operator=(const TCPPObject& inObj)const ; // expected-note {{'operator=' declared here}}
-
-	void* Data();
-	
-private:
-	void* fData;
-};
-
-
-typedef const TCPPObject& CREF_TCPPObject;
-
- at interface TNSObject
- at property (assign, readwrite, nonatomic) CREF_TCPPObject cppObjectNonAtomic;
- at property (assign, readwrite) CREF_TCPPObject cppObjectAtomic;
- at property (assign, readwrite, nonatomic) const TCPPObject& cppObjectDynamic;
- at end
-
-
- at implementation TNSObject
-
- at synthesize cppObjectNonAtomic;
- at synthesize cppObjectAtomic; // expected-error{{atomic property of reference type 'CREF_TCPPObject' (aka 'const TCPPObject &') cannot have non-trivial assignment operator}}
- at dynamic cppObjectDynamic;
-
-- (const TCPPObject&) cppObjectNonAtomic
-{
-	return cppObjectNonAtomic;
-}
-
-- (void) setCppObjectNonAtomic: (const TCPPObject&)cppObject
-{
-	cppObjectNonAtomic = cppObject;
-}
- at end
-
-
-// <rdar://problem/11052352>
- at interface NSObject
-+ alloc;
-- init;
-- class;
- at end
-
-template<typename T> void f() {
-  NSObject *o = [NSObject.alloc init];
-  [o class];
-}
-
-template void f<int>();
-
-// rdar://13602832
-//
-// Make sure that the default-argument checker looks through
-// pseudo-object expressions correctly.  The default argument
-// needs to force l2r to test this effectively because the checker
-// is syntactic and runs before placeholders are handled.
- at interface Test13602832
-- (int) x;
- at end
-namespace test13602832 {
-  template <int N> void foo(Test13602832 *a, int limit = a.x + N) {} // expected-error {{default argument references parameter 'a'}}
-
-  void test(Test13602832 *a) {
-    // FIXME: this is a useless cascade error.
-    foo<1024>(a); // expected-error {{no matching function}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-synthesis-error.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-synthesis-error.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-synthesis-error.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,106 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class -fobjc-default-synthesize-properties %s
-// rdar: //8550657
-
- at interface NSArray @end
-
- at interface NSMutableArray : NSArray @end
-
- at interface MyClass
-{
-  NSMutableArray * _array;
-}
-
- at property (readonly) NSMutableArray * array;
-
- at end
-
- at interface MyClass ()
-
- at property (readwrite, retain) NSMutableArray * array;
-
- at end
-
- at implementation MyClass
-
- at synthesize array=_array;
-
- at end
-
-int main(void)
-{
-  return 0;
-}
-
-// rdar://6137845
-class TCPPObject
-{
-public:
- TCPPObject(const TCPPObject& inObj);
- TCPPObject();
- ~TCPPObject();
- TCPPObject& operator=(const TCPPObject& inObj); // expected-note {{'operator=' declared here}}
-private:
- void* fData;
-};
-
-class Trivial
-{
-public:
- Trivial(const Trivial& inObj);
- Trivial();
- ~Trivial();
-private:
- void* fData;
-};
-
- at interface MyDocument
-{
- at private
- TCPPObject _cppObject;
- TCPPObject _ncppObject;
- Trivial _tcppObject;
-}
- at property (assign, readwrite) const TCPPObject& cppObject;
- at property (assign, readwrite, nonatomic) const TCPPObject& ncppObject;
- at property (assign, readwrite) const Trivial& tcppObject;
- at end
-
- at implementation MyDocument
-
- at synthesize cppObject = _cppObject; // expected-error {{atomic property of reference type 'const TCPPObject &' cannot have non-trivial assignment operator}}
- at synthesize ncppObject = _ncppObject;
-
- at synthesize tcppObject = _tcppObject;
- at end
-
-struct IncompleteStruct; // expected-note 2 {{forward declaration of 'IncompleteStruct'}}
-struct ConvertToIncomplete { operator IncompleteStruct&(); };
- at interface SynthIncompleteRef
- at property (readonly, nonatomic) IncompleteStruct& x; // expected-note {{property declared here}}
- at property (readonly, nonatomic) IncompleteStruct& y; // expected-note {{property declared here}}
- at end
-
- at implementation SynthIncompleteRef // expected-error {{cannot synthesize property 'x' with incomplete type 'IncompleteStruct'}}
- at synthesize y; // expected-error {{cannot synthesize property 'y' with incomplete type 'IncompleteStruct'}}
- at end 
-
-
-// Check error handling for instantiation during property synthesis.
-template<typename T> class TemplateClass1 {
-  T *x; // expected-error {{'x' declared as a pointer to a reference of type 'int &'}}
-};
-template<typename T> class TemplateClass2 {
-  TemplateClass2& operator=(TemplateClass1<T>);
-  TemplateClass2& operator=(TemplateClass2) { T(); } // expected-error {{reference to type 'int' requires an initializer}} \
-                                                     // expected-note 2 {{implicitly declared private here}} \
-                                                     // expected-note {{'operator=' declared here}}
-};
-__attribute__((objc_root_class)) @interface InterfaceWithTemplateProperties 
- at property TemplateClass2<int&> intprop;
- at property TemplateClass2<int&> &floatprop;
- at end
- at implementation InterfaceWithTemplateProperties // expected-error 2 {{'operator=' is a private member of 'TemplateClass2<int &>'}} \
-																								// expected-error {{atomic property of reference type 'TemplateClass2<int &> &' cannot have non-trivial assignment operator}} \
-																								// expected-note {{in instantiation of template class}} \
-																								// expected-note {{in instantiation of member function}}
- at end  

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-type-mismatch.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-type-mismatch.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/property-type-mismatch.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// rdar://9740328
-
- at protocol P1;
-
- at interface NSObject
- at end
-
- at interface A : NSObject
- at property (assign) NSObject<P1> *prop;
- at end
-
- at protocol P2 <P1>
- at end
-
- at interface B : A
- at property (assign) NSObject<P2> *prop;
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/protocol-lookup.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/protocol-lookup.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/protocol-lookup.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
- at protocol NSObject
-- retain;
-- release;
- at end
-
- at interface NSObject
-- init;
-- dealloc;
- at end
-
- at protocol Foo <NSObject>
- at end
-
- at protocol Bar <Foo>
- at end
-
- at interface Baz : NSObject {
-	id <Foo> _foo;
-	id <Bar> _bar;
-}
-- (id)initWithFoo:(id <Foo>)foo bar:(id <Bar>)bar;
- at end
-
- at implementation Baz
-
-- (id)init
-{
-	return [self initWithFoo:0 bar:0];
-}
-
-- (id)initWithFoo:(id <Foo>)foo bar:(id <Bar>)bar
-{
-	self = [super init];
-	if (self != 0) {
-		_foo = [foo retain];
-		_bar = [bar retain];
-	}
-	return self;
-}
-
-- dealloc
-{
-	[_foo release];
-	[_bar release];
-	[super dealloc];
-	return 0;
-}
-
- at end
-
-void rdar8575095(id a) {
-  [id<NSObject>(a) retain];
-  id<NSObject> x(id<NSObject>(0));
-  id<NSObject> x2(id<NSObject>(y)); // expected-warning{{disambiguated as a function declaration}} expected-note{{add a pair of parentheses}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/references.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/references.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/references.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -verify -o - %s
-
-__attribute__((objc_root_class))
- at interface Root @end
-
-// Test reference binding.
-
-typedef struct {
-  int f0;
-  int f1;
-} T;
-
- at interface A : Root
- at property (assign) T p0;
- at property (assign) T& p1; 
- at end
-
-int f0(const T& t) {
-  return t.f0;
-}
-
-int f1(A *a) {
-  return f0(a.p0);
-}
-
-int f2(A *a) {
-  return f0(a.p1);	
-}
-
-// PR7740
- at class NSString;
-
-void f3(id);
-void f4(NSString &tmpstr) {
-  f3(&tmpstr);
-}
-
-// PR7741
- at protocol P1 @end
- at protocol P2 @end
- at protocol P3 @end
- at interface foo<P1> {} @end
- at interface bar : foo <P1, P2, P3> {} @end
-typedef bar baz;
-
-struct ToBar {
-  operator bar&() const;
-};
-
-void f5(foo&);
-void f5b(foo<P1>&);
-void f5c(foo<P2>&);
-void f5d(foo<P3>&);
-void f6(baz* x) { 
-  f5(*x); 
-  f5b(*x); 
-  f5c(*x); 
-  f5d(*x);
-  (void)((foo&)*x);
-  f5(ToBar());
-  f5b(ToBar());
-  f5c(ToBar());
-  f5d(ToBar());
-  (void)((foo&)ToBar());
-}
-
-// rdar://13794269
- at interface B : Root @end
- at implementation B {
-  unsigned bf : 4; // expected-note {{declared here}}
-}
-
-- (void) foo {
-  unsigned &i = bf; // expected-error {{non-const reference cannot bind to bit-field 'bf'}}
-}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/reinterpret-cast-objc-pointertype.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/reinterpret-cast-objc-pointertype.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/reinterpret-cast-objc-pointertype.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface NSString @end
-
-typedef const struct __CFString * CFStringRef;
-const NSString* fRef;
-
-CFStringRef func() {
-  return reinterpret_cast<CFStringRef>(fRef);
-}
-
-CFStringRef fRef1;
-
-const NSString* func1() {
-  return reinterpret_cast<const NSString*>(fRef1);
-}
-
- at interface I @end
-const I *fRef2;
-
-const NSString* func2() {
-  return reinterpret_cast<const NSString*>(fRef2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/related-result-type-inference.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/related-result-type-inference.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/related-result-type-inference.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
- at interface Unrelated
- at end
-
- at interface NSObject
-+ (id)new;
-+ (id)alloc;
-- (NSObject *)init;
-
-- (id)retain;  // expected-note 2{{instance method 'retain' is assumed to return an instance of its receiver type ('NSArray *')}}
-- autorelease;
-
-- (id)self;
-
-- (id)copy;
-- (id)mutableCopy;
-
-// Do not infer when instance/class mismatches
-- (id)newNotInferred;
-- (id)alloc;
-+ (id)initWithBlarg;
-+ (id)self;
-
-// Do not infer when the return types mismatch.
-- (Unrelated *)initAsUnrelated;
- at end
-
- at interface NSString : NSObject
-- (id)init;
-- (id)initWithCString:(const char*)string;
- at end
-
- at interface NSArray : NSObject
-- (unsigned)count;
- at end
-
- at interface NSBlah 
- at end
-
- at interface NSMutableArray : NSArray
- at end
-
- at interface NSBlah ()
-+ (Unrelated *)newUnrelated;
- at end
-
-void test_inference() {
-  // Inference based on method family
-  __typeof__(([[NSString alloc] init])) *str = (NSString**)0;
-  __typeof__(([[[[NSString new] self] retain] autorelease])) *str2 = (NSString **)0;
-  __typeof__(([[NSString alloc] initWithCString:"blah"])) *str3 = (NSString**)0;
-
-  // Not inferred
-  __typeof__(([[NSString new] copy])) *id1 = (id*)0;
-
-  // Not inferred due to instance/class mismatches
-  __typeof__(([[NSString new] newNotInferred])) *id2 = (id*)0;
-  __typeof__(([[NSString new] alloc])) *id3 = (id*)0;
-  __typeof__(([NSString self])) *id4 = (id*)0;
-  __typeof__(([NSString initWithBlarg])) *id5 = (id*)0;
-
-  // Not inferred due to return type mismatch
-  __typeof__(([[NSString alloc] initAsUnrelated])) *unrelated = (Unrelated**)0;
-  __typeof__(([NSBlah newUnrelated])) *unrelated2 = (Unrelated**)0;  
-
-  NSArray *arr = [[NSMutableArray alloc] init];
-  NSMutableArray *marr = [arr retain]; // expected-warning{{incompatible pointer types initializing 'NSMutableArray *' with an expression of type 'NSArray *'}}
-  marr = [arr retain]; // expected-warning{{incompatible pointer types assigning to 'NSMutableArray *' from 'NSArray *'}}
-  arr = [marr retain];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/reserved-keyword-methods.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/reserved-keyword-methods.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/reserved-keyword-methods.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-#define FOR_EACH_KEYWORD(macro) \
-macro(asm) \
-macro(bool) \
-macro(catch) \
-macro(class) \
-macro(const_cast) \
-macro(delete) \
-macro(dynamic_cast) \
-macro(explicit) \
-macro(export) \
-macro(false) \
-macro(friend) \
-macro(mutable) \
-macro(namespace) \
-macro(new) \
-macro(operator) \
-macro(private) \
-macro(protected) \
-macro(public) \
-macro(reinterpret_cast) \
-macro(static_cast) \
-macro(template) \
-macro(this) \
-macro(throw) \
-macro(true) \
-macro(try) \
-macro(typename) \
-macro(typeid) \
-macro(using) \
-macro(virtual) \
-macro(wchar_t)
-
-
-#define DECLARE_METHOD(name) - (void)name;
-#define DECLARE_PROPERTY_WITH_GETTER(name) @property (getter=name) int prop_##name;
- at interface A 
-//FOR_EACH_KEYWORD(DECLARE_METHOD)
-FOR_EACH_KEYWORD(DECLARE_PROPERTY_WITH_GETTER)
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/standard-conversion-to-bool.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/standard-conversion-to-bool.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/standard-conversion-to-bool.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at class NSString;
-id a;
-NSString *b;
-
-void f() {
-  bool b1 = a;
-  bool b2 = b;
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/static-cast.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/static-cast.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/static-cast.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at protocol NSTextViewDelegate;
-
- at interface NSResponder @end
-
-class AutoreleaseObject
-{
-public:
- AutoreleaseObject();
- ~AutoreleaseObject();
-
-
- AutoreleaseObject& operator=(NSResponder* inValue);
- AutoreleaseObject& operator=(const AutoreleaseObject& inValue);
-
- AutoreleaseObject(const AutoreleaseObject& inValue);
-
- operator NSResponder*() const;
-};
-
-
-void InvokeSaveFocus()
-{
- AutoreleaseObject mResolvedFirstResponder;
- id<NSTextViewDelegate> Mydelegate;
- mResolvedFirstResponder = static_cast<NSResponder*>(Mydelegate);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/unknown-anytype.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/unknown-anytype.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/unknown-anytype.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -fdebugger-support -funknown-anytype -fsyntax-only -verify %s
-
-// rdar://problem/9416370
-namespace test0 {
-  void test(id x) {
-    if ([x foo]) {} // expected-error {{no known method '-foo'; cast the message send to the method's return type}}
-    [x foo]; // expected-error {{no known method '-foo'; cast the message send to the method's return type}}
-  }
-}
-
-// rdar://problem/12565338
- at interface Test1
-- (void) test_a: (__unknown_anytype)foo;
-- (void) test_b: (__unknown_anytype)foo;
-- (void) test_c: (__unknown_anytype)foo;
- at end
-namespace test1 {
-  struct POD {
-    int x;
-  };
-
-  void a(Test1 *obj) {
-    POD v;
-    [obj test_a: v];
-  }
-
-  struct Uncopyable {
-    Uncopyable();
-  private:
-    Uncopyable(const Uncopyable &); // expected-note {{declared private here}}
-  };
-
-  void b(Test1 *obj) {
-    Uncopyable v;
-    [obj test_b: v]; // expected-error {{calling a private constructor}}
-  }
-
-  void c(Test1 *obj) {
-    Uncopyable v;
-    [obj test_c: (const Uncopyable&) v];
-  }
-}
-
-// Just test that we can declare a function taking __unknown_anytype.
-// For now, we don't actually need to make calling something like this
-// work; if that changes, here's what's required:
-//   - get this call through overload resolution somehow,
-//   - update the function-call argument-passing code like the
-//     message-send code, and
-//   - rewrite the function expression to have a type that doesn't
-//     involving __unknown_anytype.
-namespace test2 {
-  void foo(__unknown_anytype x);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/vararg-non-pod.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/vararg-non-pod.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/vararg-non-pod.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -Wno-error=non-pod-varargs
-
-extern char version[];
-
- at protocol P;
-
-class C {
-public:
-  C(int);
-};
-
- at interface D 
-- (void)g:(int)a, ...;
- at end
-
-void t1(D *d)
-{
-  C c(10);
-
-  [d g:10, c]; // expected-warning{{cannot pass object of non-POD type 'C' through variadic method; call will abort at runtime}}
-  [d g:10, version];
-}
-
-void t2(D *d, id p)
-{
-  [d g:10, p];
-}
-
-void t3(D *d, id<P> p)
-{
-  [d g:10, p];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/vla.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/vla.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/vla.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
- at interface Data
-- (unsigned)length;
-- (void)getData:(void*)buffer;
- at end
-
-void test(Data *d) {
-  char buffer[[d length]];
-  [d getData:buffer];
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/void_to_obj.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/void_to_obj.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/void_to_obj.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
-
-// <rdar://problem/6463729>
- at class XX;
-
-void func() {
-  XX *obj;
-  void *vv;
-
-  obj = vv; // expected-error{{assigning to 'XX *' from incompatible type 'void *'}}
-}
-
-// <rdar://problem/7952457>
- at interface I
-{
-  void* delegate;
-}
-- (I*) Meth;
-- (I*) Meth1;
- at end
-
- at implementation I 
-- (I*) Meth { return static_cast<I*>(delegate); }
-- (I*) Meth1 { return reinterpret_cast<I*>(delegate); }
- at end
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/warn-missing-super.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/warn-missing-super.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/warn-missing-super.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// PR13401
-
-__attribute((objc_root_class)) @interface NSObject
- at end
-
- at interface Dummy : NSObject
- at end
-
-template<typename T> struct shared_ptr {
-  constexpr shared_ptr() {}
-};
-
- at implementation Dummy
-- (void)dealloc
-{
-	constexpr shared_ptr<int> dummy;
-} // expected-warning {{method possibly missing a [super dealloc] call}}
- at end

Modified: trunk/contrib/llvm/tools/clang/test/SemaObjCXX/warn-strict-selector-match.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaObjCXX/warn-strict-selector-match.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaObjCXX/warn-strict-selector-match.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1  -Wstrict-selector-match -fsyntax-only -verify %s
-
- at interface Base
-- (id) meth1: (Base *)arg1; 	// expected-note {{using}}
-- (id) window;	// expected-note {{using}}
- at end
-
- at interface Derived: Base
-- (id) meth1: (Derived *)arg1;	// expected-note {{also found}}
-- (Base *) window;	// expected-note {{also found}}
- at end
-
-void foo(void) {
-  id r;
-
-  [r meth1:r];	// expected-warning {{multiple methods named 'meth1:' found}}
-  [r window]; 	// expected-warning {{multiple methods named 'window' found}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/address-spaces.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/address-spaces.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/address-spaces.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-
-__constant int ci = 1;
-
-__kernel void foo(__global int *gip) {
-  __local int li;
-  __local int lj = 2; // expected-error {{'__local' variable cannot have an initializer}}
-
-  int *ip;
-  ip = gip; // expected-error {{assigning '__global int *' to 'int *' changes address space of pointer}}
-  ip = &li; // expected-error {{assigning '__local int *' to 'int *' changes address space of pointer}}
-  ip = &ci; // expected-error {{assigning '__constant int *' to 'int *' changes address space of pointer}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/cond.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/cond.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/cond.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-// expected-no-diagnostics
-
-typedef __attribute__((ext_vector_type(4))) float float4;
-
-float4 foo(float4 a, float4 b, float4 c, float4 d) { return a < b ? c : d; }

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/endian-attr.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/endian-attr.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/endian-attr.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-constant long a __attribute__((endian(host))) = 100;
-
-constant long b __attribute__((endian(device))) = 100;
-
-constant long c __attribute__((endian(none))) = 100; // expected-warning {{unknown endian 'none'}}
-
-void func() __attribute__((endian(host))); // expected-warning {{endian attribute only applies to variables}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/event_t.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/event_t.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/event_t.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-
-event_t glb_evt; // expected-error {{the event_t type cannot be used to declare a program scope variable}}
-
-constant struct evt_s {
-  event_t evt;  // expected-error {{the event_t type cannot be used to declare a structure or union field}}
-} evt_str;
-
-void foo(event_t evt); // expected-note {{passing argument to parameter 'evt' here}}
-
-void kernel ker(event_t argevt) { // expected-error {{the event_t type cannot be used to declare a kernel function argument}}
-  event_t e;
-  constant event_t const_evt; // expected-error {{the event_t type can only be used with __private address space qualifier}}
-  foo(e);
-  foo(0);
-  foo(5); // expected-error {{passing 'int' to parameter of incompatible type 'event_t'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/event_t_overload.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/event_t_overload.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/event_t_overload.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-
-void __attribute__((overloadable)) foo(event_t, __local char *); // expected-note {{candidate function not viable: no known conversion from '__global int *' to '__local char *' for 2nd argument}}
-void __attribute__((overloadable)) foo(event_t, __local float *); // expected-note {{candidate function not viable: no known conversion from '__global int *' to '__local float *' for 2nd argument}}
-
-void kernel ker(__local char *src1, __local float *src2, __global int *src3) {
-  event_t evt;
-  foo(evt, src1);
-  foo(0, src2);
-  foo(evt, src3); // expected-error {{no matching function for call to 'foo'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/extension-fp64.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/extension-fp64.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/extension-fp64.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-
-void f1(double da) { // expected-error {{type 'double' requires cl_khr_fp64 extension}}
-  double d; // expected-error {{type 'double' requires cl_khr_fp64 extension}}
-  (void) 1.0; // expected-warning {{double precision constant requires cl_khr_fp64}}
-}
-
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-
-void f2(void) {
-  double d;
-  (void) 1.0;
-}
-
-#pragma OPENCL EXTENSION cl_khr_fp64 : disable
-
-void f3(void) {
-  double d; // expected-error {{type 'double' requires cl_khr_fp64 extension}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/half.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/half.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/half.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -Wno-unused-value
-
-#pragma OPENCL EXTENSION cl_khr_fp16 : disable
-
-half half_disabled(half *p, // expected-error{{declaring function return value of type 'half' is not allowed}}
-                   half h)  // expected-error{{declaring function argument of type 'half' is not allowed}} 
-{
-  half a[2]; // expected-error{{declaring variable of type 'half [2]' is not allowed}}
-  half b;    // expected-error{{declaring variable of type 'half' is not allowed}}
-  *p; // expected-error{{loading directly from pointer to type 'half' is not allowed}}
-  p[1]; // expected-error{{loading directly from pointer to type 'half' is not allowed}}
-
-  float c = 1.0f;
-  b = (half) c;  // expected-error{{casting to type 'half' is not allowed}}
-
-  half *allowed = &p[1];
-  half *allowed2 = &*p;
-  half *allowed3 = p + 1;
-
-  return h;
-}
-
-// Exactly the same as above but with the cl_khr_fp16 extension enabled.
-#pragma OPENCL EXTENSION cl_khr_fp16 : enable
-half half_enabled(half *p, half h)
-{
-  half a[2];
-  half b;
-  *p;
-  p[1];
-
-  float c = 1.0f;
-  b = (half) c;
-
-  half *allowed = &p[1];
-  half *allowed2 = &*p;
-  half *allowed3 = p + 1;
-
-  return h;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/init.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/init.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/init.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-// expected-no-diagnostics
-
-typedef float float8 __attribute((ext_vector_type(8)));
-
-typedef float float32_t;
-typedef __attribute__(( __vector_size__(16) )) float32_t __neon_float32x4_t;
-typedef struct __simd128_float32_t {
-  __neon_float32x4_t val;
-} float32x4_t;
-
-float8 foo(float8 x) { 
-  float32x4_t lo;
-  float32x4_t hi;
-  return (float8) (lo.val, hi.val);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-kernel-attrs.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-kernel-attrs.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-kernel-attrs.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -verify %s 
-
-kernel __attribute__((vec_type_hint)) void kernel1() {} //expected-error{{attribute takes one argument}}
-
-kernel __attribute__((vec_type_hint(not_type))) void kernel2() {} //expected-error{{unknown type name 'not_type'}}
-
-kernel __attribute__((vec_type_hint(void))) void kernel3() {} //expected-error{{invalid attribute argument 'void' - expecting a vector or vectorizable scalar type}}
-
-kernel __attribute__((vec_type_hint(bool))) void kernel4() {} //expected-error{{invalid attribute argument 'bool' - expecting a vector or vectorizable scalar type}}
-
-kernel __attribute__((vec_type_hint(int))) __attribute__((vec_type_hint(float))) void kernel5() {} //expected-warning{{attribute 'vec_type_hint' is already applied with different parameters}}
-
-kernel __attribute__((work_group_size_hint(8,16,32,4))) void kernel6() {} //expected-error{{attribute requires exactly 3 arguments}}
-
-kernel __attribute__((work_group_size_hint(1,2,3))) __attribute__((work_group_size_hint(3,2,1))) void kernel7() {}  //expected-warning{{attribute 'work_group_size_hint' is already applied with different parameters}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-kernel.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-kernel.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-kernel.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-kernel void no_ptrptr(global int **i) { } // expected-error{{kernel argument cannot be declared as a pointer to a pointer}}
-
-kernel int bar()  { // expected-error {{kernel must have void return type}}
-  return 6;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-logical-ops-1.1.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-logical-ops-1.1.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-logical-ops-1.1.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 %s -verify -cl-std=CL1.1 -triple x86_64-unknown-linux-gnu
-
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-typedef __attribute__((ext_vector_type(4))) float float4;
-typedef __attribute__((ext_vector_type(4))) double double4;
-typedef __attribute__((ext_vector_type(4))) int int4;
-typedef __attribute__((ext_vector_type(4))) long long4;
-
-kernel void float_ops() {
-  int flaf = 0.0f && 0.0f; // expected-error {{invalid operands}}
-  int flof = 0.0f || 0.0f; // expected-error {{invalid operands}}
-  float fbaf = 0.0f & 0.0f; // expected-error {{invalid operands}}
-  float fbof = 0.0f | 0.0f; // expected-error {{invalid operands}}
-  float fbxf = 0.0f ^ 0.0f; // expected-error {{invalid operands}}
-  int flai = 0.0f && 0; // expected-error {{invalid operands}}
-  int floi = 0.0f || 0; // expected-error {{invalid operands}}
-  float ibaf = 0 & 0.0f; // expected-error {{invalid operands}}
-  float ibof = 0 | 0.0f; // expected-error {{invalid operands}}
-  float bnf = ~0.0f; // expected-error {{invalid argument type}}
-  float lnf = !0.0f; // expected-error {{invalid argument type}}
-}
-
-kernel void vec_float_ops() {
-  float4 f4 = (float4)(0, 0, 0, 0);
-  int4 f4laf = f4 && 0.0f; // expected-error {{invalid operands}}
-  int4 f4lof = f4 || 0.0f; // expected-error {{invalid operands}}
-  float4 f4baf = f4 & 0.0f; // expected-error {{invalid operands}}
-  float4 f4bof = f4 | 0.0f; // expected-error {{invalid operands}}
-  float4 f4bxf = f4 ^ 0.0f; // expected-error {{invalid operands}}
-  float bnf4 = ~f4; // expected-error {{invalid argument type}}
-  int4 lnf4 = !f4; // expected-error {{invalid argument type}}
-}
-
-kernel void double_ops() {
-  int flaf = 0.0 && 0.0; // expected-error {{invalid operands}}
-  int flof = 0.0 || 0.0; // expected-error {{invalid operands}}
-  double fbaf = 0.0 & 0.0; // expected-error {{invalid operands}}
-  double fbof = 0.0 | 0.0; // expected-error {{invalid operands}}
-  double fbxf = 0.0 ^ 0.0; // expected-error {{invalid operands}}
-  int flai = 0.0 && 0; // expected-error {{invalid operands}}
-  int floi = 0.0 || 0; // expected-error {{invalid operands}}
-  double ibaf = 0 & 0.0; // expected-error {{invalid operands}}
-  double ibof = 0 | 0.0; // expected-error {{invalid operands}}
-  double bnf = ~0.0; // expected-error {{invalid argument type}}
-  double lnf = !0.0; // expected-error {{invalid argument type}}
-}
-
-kernel void vec_double_ops() {
-  double4 f4 = (double4)(0, 0, 0, 0);
-  long4 f4laf = f4 && 0.0; // expected-error {{invalid operands}}
-  long4 f4lof = f4 || 0.0; // expected-error {{invalid operands}}
-  double4 f4baf = f4 & 0.0; // expected-error {{invalid operands}}
-  double4 f4bof = f4 | 0.0; // expected-error {{invalid operands}}
-  double4 f4bxf = f4 ^ 0.0; // expected-error {{invalid operands}}
-  double bnf4 = ~f4; // expected-error {{invalid argument type}}
-  long4 lnf4 = !f4; // expected-error {{invalid argument type}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-logical-ops-1.2.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-logical-ops-1.2.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/invalid-logical-ops-1.2.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,57 +0,0 @@
-// RUN: %clang_cc1 %s -verify -cl-std=CL1.2 -triple x86_64-unknown-linux-gnu
-
-#pragma OPENCL EXTENSION cl_khr_fp64 : enable
-typedef __attribute__((ext_vector_type(4))) float float4;
-typedef __attribute__((ext_vector_type(4))) double double4;
-typedef __attribute__((ext_vector_type(4))) int int4;
-typedef __attribute__((ext_vector_type(4))) long long4;
-
-kernel void float_ops() {
-  int flaf = 0.0f && 0.0f;
-  int flof = 0.0f || 0.0f;
-  float fbaf = 0.0f & 0.0f; // expected-error {{invalid operands}}
-  float fbof = 0.0f | 0.0f; // expected-error {{invalid operands}}
-  float fbxf = 0.0f ^ 0.0f; // expected-error {{invalid operands}}
-  int flai = 0.0f && 0;
-  int floi = 0.0f || 0;
-  float ibaf = 0 & 0.0f; // expected-error {{invalid operands}}
-  float ibof = 0 | 0.0f; // expected-error {{invalid operands}}
-  float bnf = ~0.0f;// expected-error {{invalid argument type}}
-  float lnf = !0.0f;
-}
-
-kernel void vec_float_ops() {
-  float4 f4 = (float4)(0, 0, 0, 0);
-  int4 f4laf = f4 && 0.0f;
-  int4 f4lof = f4 || 0.0f;
-  float4 f4baf = f4 & 0.0f; // expected-error {{invalid operands}}
-  float4 f4bof = f4 | 0.0f; // expected-error {{invalid operands}}
-  float4 f4bxf = f4 ^ 0.0f; // expected-error {{invalid operands}}
-  float bnf4 = ~f4; // expected-error {{invalid argument type}}
-  int4 lnf4 = !f4;
-}
-
-kernel void double_ops() {
-  int flaf = 0.0 && 0.0;
-  int flof = 0.0 || 0.0;
-  double fbaf = 0.0 & 0.0; // expected-error {{invalid operands}}
-  double fbof = 0.0 | 0.0; // expected-error {{invalid operands}}
-  double fbxf = 0.0 ^ 0.0; // expected-error {{invalid operands}}
-  int flai = 0.0 && 0;
-  int floi = 0.0 || 0;
-  double ibaf = 0 & 0.0; // expected-error {{invalid operands}}
-  double ibof = 0 | 0.0; // expected-error {{invalid operands}}
-  double bnf = ~0.0; // expected-error {{invalid argument type}}
-  double lnf = !0.0;
-}
-
-kernel void vec_double_ops() {
-  double4 f4 = (double4)(0, 0, 0, 0);
-  long4 f4laf = f4 && 0.0;
-  long4 f4lof = f4 || 0.0;
-  double4 f4baf = f4 & 0.0; // expected-error {{invalid operands}}
-  double4 f4bof = f4 | 0.0; // expected-error {{invalid operands}}
-  double4 f4bxf = f4 ^ 0.0; // expected-error {{invalid operands}}
-  double bnf4 = ~f4; // expected-error {{invalid argument type}}
-  long4 lnf4 = !f4;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/sampler_t.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/sampler_t.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/sampler_t.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-
-constant sampler_t glb_smp = 5;
-
-void foo(sampler_t); 
-
-void kernel ker(sampler_t argsmp) {
-  local sampler_t smp; // expected-error {{sampler type cannot be used with the __local and __global address space qualifiers}}
-  const sampler_t const_smp = 7;
-  foo(glb_smp);
-  foo(const_smp);
-  foo(5); // expected-error {{sampler_t variable required - got 'int'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/sampler_t_overload.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/sampler_t_overload.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/sampler_t_overload.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s
-
-void __attribute__((overloadable)) foo(sampler_t, read_only image1d_t);
-void __attribute__((overloadable)) foo(sampler_t, read_only image2d_t);
-
-constant sampler_t glb_smp = 5;
-
-void kernel ker(read_only image1d_t src1, read_only image2d_t src2) {
-  const sampler_t smp = 10;
-  foo(glb_smp, src1);
-  foo(smp, src2);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/shifts.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/shifts.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/shifts.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -x cl -O0 -emit-llvm  %s -o - -triple x86_64-linux-gnu | FileCheck %s
-// OpenCL essentially reduces all shift amounts to the last word-size bits before evaluating.
-// Test this both for variables and constants evaluated in the front-end.
-
-// CHECK: @gtest1 = constant i64 2147483648
-__constant const unsigned long gtest1 = 1UL << 31;
-
-// CHECK: @negativeShift32
-int negativeShift32(int a,int b) {
-  // CHECK: %array0 = alloca [256 x i8]
-  char array0[((int)1)<<40];
-  // CHECK: %array1 = alloca [256 x i8]
-  char array1[((int)1)<<(-24)];
-
-  // CHECK: ret i32 65536
-  return ((int)1)<<(-16);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/storageclass.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/storageclass.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/storageclass.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL1.2
-
-static constant int A = 0;
-
-int X = 0; // expected-error{{global variables must have a constant address space qualifier}}
-
-// static is not allowed at local scope.
-void kernel foo() {
-  static int X = 5; // expected-error{{variables in function scope cannot be declared static}} 
-  auto int Y = 7; // expected-error{{OpenCL does not support the 'auto' storage class specifier}}
-}
-
-static void kernel bar() { // expected-error{{kernel functions cannot be declared static}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/unsupported.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/unsupported.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/unsupported.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-struct {
-  int a : 1; // expected-error {{bitfields are not supported in OpenCL}}
-};
-
-void no_vla(int n) {
-  int a[n]; // expected-error {{variable length arrays are not supported in OpenCL}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vec_compare.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vec_compare.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vec_compare.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-// expected-no-diagnostics
-
-typedef __attribute__((ext_vector_type(2)))  unsigned int uint2;
-typedef __attribute__((ext_vector_type(2)))  int int2;
-
-void unsignedCompareOps()
-{
-  uint2 A, B;
-  int2 result = A != B;
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vec_step.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vec_step.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vec_step.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,32 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-typedef int int2 __attribute__((ext_vector_type(2)));
-typedef int int3 __attribute__((ext_vector_type(3)));
-typedef int int4 __attribute__((ext_vector_type(4)));
-typedef int int8 __attribute__((ext_vector_type(8)));
-typedef int int16 __attribute__((ext_vector_type(16)));
-
-void foo(int3 arg1, int8 arg2) {
-  int4 auto1;
-  int16 *auto2;
-  int auto3;
-  int2 auto4;
-  struct S *incomplete1;
-
-  int res1[vec_step(arg1) == 4 ? 1 : -1];
-  int res2[vec_step(arg2) == 8 ? 1 : -1];
-  int res3[vec_step(auto1) == 4 ? 1 : -1];
-  int res4[vec_step(*auto2) == 16 ? 1 : -1];
-  int res5[vec_step(auto3) == 1 ? 1 : -1];
-  int res6[vec_step(auto4) == 2 ? 1 : -1];
-  int res7[vec_step(int2) == 2 ? 1 : -1];
-  int res8[vec_step(int3) == 4 ? 1 : -1];
-  int res9[vec_step(int4) == 4 ? 1 : -1];
-  int res10[vec_step(int8) == 8 ? 1 : -1];
-  int res11[vec_step(int16) == 16 ? 1 : -1];
-  int res12[vec_step(void) == 1 ? 1 : -1];
-
-  int res13 = vec_step(*incomplete1); // expected-error {{'vec_step' requires built-in scalar or vector type, 'struct S' invalid}}
-  int res14 = vec_step(int16*); // expected-error {{'vec_step' requires built-in scalar or vector type, 'int16 *' invalid}}
-  int res15 = vec_step(void(void)); // expected-error {{'vec_step' requires built-in scalar or vector type, 'void (void)' invalid}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_conv_invalid.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_conv_invalid.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_conv_invalid.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-
-typedef unsigned int uint4 __attribute((ext_vector_type(4)));
-typedef int int4 __attribute((ext_vector_type(4)));
-typedef int int3 __attribute((ext_vector_type(3)));
-typedef unsigned uint3 __attribute((ext_vector_type(3)));
-
-void vector_conv_invalid() {
-  uint4 u = (uint4)(1);
-  int4 i = u; // expected-error{{initializing 'int4' with an expression of incompatible type 'uint4'}}
-  int4 e = (int4)u; // expected-error{{invalid conversion between ext-vector type 'int4' and 'uint4'}}
-
-  uint3 u4 = (uint3)u; // expected-error{{invalid conversion between ext-vector type 'uint3' and 'uint4'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_literals_const.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_literals_const.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_literals_const.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
-// expected-no-diagnostics
-
-typedef int int2 __attribute((ext_vector_type(2)));
-typedef int int3 __attribute((ext_vector_type(3)));
-typedef int int4 __attribute((ext_vector_type(4)));
-
-__constant int4 i_1_1_1_1 = (int4)(1,2,3,4);
-__constant int4 i_2_1_1 = (int4)((int2)(1,2),3,4);
-__constant int4 i_1_2_1 = (int4)(1,(int2)(2,3),4);
-__constant int4 i_1_1_2 = (int4)(1,2,(int2)(3,4));
-__constant int4 i_2_2 = (int4)((int2)(1,2),(int2)(3,4));
-__constant int4 i_3_1 = (int4)((int3)(1,2,3),4);
-__constant int4 i_1_3 = (int4)(1,(int3)(2,3,4));
-
-typedef float float2 __attribute((ext_vector_type(2)));
-typedef float float3 __attribute((ext_vector_type(3)));
-typedef float float4 __attribute((ext_vector_type(4)));
-
-__constant float4 f_1_1_1_1 = (float4)(1,2,3,4);
-__constant float4 f_2_1_1 = (float4)((float2)(1,2),3,4);
-__constant float4 f_1_2_1 = (float4)(1,(float2)(2,3),4);
-__constant float4 f_1_1_2 = (float4)(1,2,(float2)(3,4));
-__constant float4 f_2_2 = (float4)((float2)(1,2),(float2)(3,4));
-__constant float4 f_3_1 = (float4)((float3)(1,2,3),4);
-__constant float4 f_1_3 = (float4)(1,(float3)(2,3,4));
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_literals_invalid.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_literals_invalid.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/vector_literals_invalid.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: %clang_cc1 -verify %s 
-
-typedef __attribute__(( ext_vector_type(4) ))  float float4;
-typedef __attribute__(( ext_vector_type(4) ))  int int4;
-typedef __attribute__(( ext_vector_type(8) ))  int int8;
-
-void vector_literals_invalid()
-{
-  int4 a = (int4)(1,2,3); // expected-error{{too few elements}}
-  int4 b = (int4)(1,2,3,4,5); // expected-error{{excess elements in vector}}
-  ((float4)(1.0f))++; // expected-error{{cannot increment value of type 'float4'}}
-  int8 d = (int8)(a,(float4)(1)); // expected-error{{initializing 'int' with an expression of incompatible type 'float4'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaOpenCL/warn-missing-prototypes.cl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaOpenCL/warn-missing-prototypes.cl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaOpenCL/warn-missing-prototypes.cl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wmissing-prototypes %s
-
-void f() { } // expected-warning {{no previous prototype for function 'f'}}
-
-// Don't warn about kernel functions.
-kernel void g() { }

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/ackermann.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/ackermann.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/ackermann.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// template<unsigned M, unsigned N>
-// struct Ackermann {
-//   enum {
-//     value = M ? (N ? Ackermann<M-1, Ackermann<M, N-1> >::value
-//                    : Ackermann<M-1, 1>::value)
-//               : N + 1
-//   };
-// };
-
-template<unsigned M, unsigned N>
-struct Ackermann {
- enum {
-   value = Ackermann<M-1, Ackermann<M, N-1>::value >::value
- };
-};
-
-template<unsigned M> struct Ackermann<M, 0> {
- enum {
-   value = Ackermann<M-1, 1>::value
- };
-};
-
-template<unsigned N> struct Ackermann<0, N> {
- enum {
-   value = N + 1
- };
-};
-
-template<> struct Ackermann<0, 0> {
- enum {
-   value = 1
- };
-};
-
-int g0[Ackermann<3, 4>::value == 125 ? 1 : -1];
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/address-spaces.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/address-spaces.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/address-spaces.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-typedef int __attribute__((address_space(1))) int_1;;
-typedef int __attribute__((address_space(2))) int_2;;
-typedef int __attribute__((address_space(1))) *int_1_ptr;
-typedef int_2 *int_2_ptr;
-
-// Check that we maintain address spaces through template argument
-// deduction from a type.
-template<typename T>
-struct remove_pointer {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_pointer<T *> {
-  typedef T type;
-};
-
-int check_remove0[is_same<remove_pointer<int_1_ptr>::type, int_1>::value? 1 : -1];
-int check_remove1[is_same<remove_pointer<int_2_ptr>::type, int_2>::value? 1 : -1];
-int check_remove2[is_same<remove_pointer<int_2_ptr>::type, int>::value? -1 : 1];
-int check_remove3[is_same<remove_pointer<int_2_ptr>::type, int_1>::value? -1 : 1];
-
-template<typename T>
-struct is_pointer_in_address_space_1 {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_pointer_in_address_space_1<T __attribute__((address_space(1))) *> {
-  static const bool value = true;
-};
-                
-int check_ptr_in_as1[is_pointer_in_address_space_1<int_1_ptr>::value? 1 : -1];
-int check_ptr_in_as2[is_pointer_in_address_space_1<int_2_ptr>::value? -1 : 1];
-int check_ptr_in_as3[is_pointer_in_address_space_1<int*>::value? -1 : 1];
-
-// Check that we maintain address spaces through template argument
-// deduction for a call.
-template<typename T>
-void accept_any_pointer(T*) {
-  T *x = 1; // expected-error{{cannot initialize a variable of type '__attribute__((address_space(1))) int *' with an rvalue of type 'int'}} \
-  // expected-error{{cannot initialize a variable of type '__attribute__((address_space(3))) int *' with an rvalue of type 'int'}}
-}
-
-void test_accept_any_pointer(int_1_ptr ip1, int_2_ptr ip2) {
-  static __attribute__((address_space(3))) int array[17];
-  accept_any_pointer(ip1); // expected-note{{in instantiation of}}
-  accept_any_pointer(array); // expected-note{{in instantiation of}}
-}
-
-template<typename T> struct identity {};
-
-template<typename T>
-identity<T> accept_arg_in_address_space_1(__attribute__((address_space(1))) T &ir1);
-
-template<typename T>
-identity<T> accept_any_arg(T &ir1);
-
-void test_arg_in_address_space_1() {
-  static int __attribute__((address_space(1))) int_1;
-  identity<int> ii = accept_arg_in_address_space_1(int_1);
-  identity<int __attribute__((address_space(1)))> ii2 = accept_any_arg(int_1);
-}
-
-// Partial ordering
-template<typename T> int &order1(__attribute__((address_space(1))) T&);
-template<typename T> float &order1(T&);
-
-void test_order1() {
-  static __attribute__((address_space(1))) int i1;
-  int i;
-  int &ir = order1(i1);
-  float &fr = order1(i);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-church-numerals.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-church-numerals.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-church-numerals.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<template<template<typename> class, typename> class T, template<typename> class V> struct PartialApply {
-  template<typename W> using R = T<V, W>;
-};
-
-template<typename T> using Id = T;
-template<template<typename> class, typename X> using Zero = X;
-template<template<template<typename> class, typename> class N, template<typename> class F, typename X> using Succ = F<N<F,X>>;
-
-template<template<typename> class F, typename X> using One = Succ<Zero, F, X>;
-template<template<typename> class F, typename X> using Two = Succ<One, F, X>;
-
-template<template<template<typename> class, typename> class A,
-         template<template<typename> class, typename> class B,
-         template<typename> class F,
-         typename X> using Add = A<F, B<F, X>>;
-
-template<template<template<typename> class, typename> class A,
-         template<template<typename> class, typename> class B,
-         template<typename> class F,
-         typename X> using Mul = A<PartialApply<B,F>::template R, X>;
-
-template<template<typename> class F, typename X> using Four = Add<Two, Two, F, X>;
-template<template<typename> class F, typename X> using Sixteen = Mul<Four, Four, F, X>;
-template<template<typename> class F, typename X> using TwoHundredAndFiftySix = Mul<Sixteen, Sixteen, F, X>;
-
-template<typename T, T N> struct Const { static const T value = N; };
-template<typename A> struct IncrementHelper;
-template<typename T, T N> struct IncrementHelper<Const<T, N>> { using Result = Const<T, N+1>; };
-template<typename A> using Increment = typename IncrementHelper<A>::Result;
-
-using Arr = int[TwoHundredAndFiftySix<Increment, Const<int, 0>>::value];
-using Arr = int[256];

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-nested-nontag.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-nested-nontag.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-nested-nontag.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-template<typename T> using Id = T; // expected-note {{type alias template 'Id' declared here}}
-struct U { static Id<int> V; };
-Id<int> ::U::V; // expected-error {{type 'Id<int>' (aka 'int') cannot be used prior to '::' because it has no members}} \
-                   expected-error {{C++ requires a type specifier}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-template-template-param.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-template-template-param.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-template-template-param.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-template<template<typename> class D> using C = D<int>;
-
-// Substitution of the alias template transforms the TemplateSpecializationType
-// 'D<int>' into the DependentTemplateSpecializationType 'T::template U<int>'.
-template<typename T> void f(C<T::template U>);

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/alias-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,168 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-
-template<typename S>
-struct A {
-  typedef S B;
-  template<typename T> using C = typename T::B;
-  template<typename T> struct D {
-    template<typename U> using E = typename A<U>::template C<A<T>>;
-    template<typename U> using F = A<E<U>>;
-    template<typename U> using G = C<F<U>>;
-    G<T> g;
-  };
-  typedef decltype(D<B>().g) H;
-  D<H> h;
-  template<typename T> using I = A<decltype(h.g)>;
-  template<typename T> using J = typename A<decltype(h.g)>::template C<I<T>>;
-};
-
-A<int> a;
-A<char>::D<double> b;
-
-template<typename T> T make();
-
-namespace X {
-  template<typename T> struct traits {
-    typedef T thing;
-    typedef decltype(val(make<thing>())) inner_ptr;
-
-    template<typename U> using rebind_thing = typename thing::template rebind<U>;
-    template<typename U> using rebind = traits<rebind_thing<U>>;
-
-    inner_ptr &&alloc();
-    void free(inner_ptr&&);
-  };
-
-  template<typename T> struct ptr_traits {
-    typedef T *type;
-  };
-  template<typename T> using ptr = typename ptr_traits<T>::type;
-
-  template<typename T> struct thing {
-    typedef T inner;
-    typedef ptr<inner> inner_ptr;
-    typedef traits<thing<inner>> traits_type;
-
-    template<typename U> using rebind = thing<U>;
-
-    thing(traits_type &traits) : traits(traits), val(traits.alloc()) {}
-    ~thing() { traits.free(static_cast<inner_ptr&&>(val)); }
-
-    traits_type &traits;
-    inner_ptr val;
-
-    friend inner_ptr val(const thing &t) { return t.val; }
-  };
-
-  template<> struct ptr_traits<bool> {
-    typedef bool &type;
-  };
-  template<> bool &traits<thing<bool>>::alloc() { static bool b; return b; }
-  template<> void traits<thing<bool>>::free(bool&) {}
-}
-
-typedef X::traits<X::thing<int>> itt;
-
-itt::thing::traits_type itr;
-itt::thing ith(itr);
-
-itt::rebind<bool> btr;
-itt::rebind_thing<bool> btt(btr);
-
-namespace PR11848 {
-  template<typename T> using U = int;
-
-  template<typename T, typename ...Ts>
-  void f1(U<T> i, U<Ts> ...is) { // expected-note 2{{couldn't infer template argument 'T'}}
-    return i + f1<Ts...>(is...);
-  }
-
-  // FIXME: This note is technically correct, but could be better. We
-  // should really say that we couldn't infer template argument 'Ts'.
-  template<typename ...Ts>
-  void f2(U<Ts> ...is) { } // expected-note {{requires 0 arguments, but 1 was provided}}
-
-  template<typename...> struct type_tuple {};
-  template<typename ...Ts>
-  void f3(type_tuple<Ts...>, U<Ts> ...is) {} // expected-note {{requires 4 arguments, but 3 were provided}}
-
-  void g() {
-    f1(U<void>()); // expected-error {{no match}}
-    f1(1, 2, 3, 4, 5); // expected-error {{no match}}
-    f2(); // ok
-    f2(1); // expected-error {{no match}}
-    f3(type_tuple<>());
-    f3(type_tuple<void, void, void>(), 1, 2); // expected-error {{no match}}
-    f3(type_tuple<void, void, void>(), 1, 2, 3);
-  }
-
-  template<typename ...Ts>
-  struct S {
-    S(U<Ts>...ts);
-  };
-
-  template<typename T>
-  struct Hidden1 {
-    template<typename ...Ts>
-    Hidden1(typename T::template U<Ts> ...ts);
-  };
-
-  template<typename T, typename ...Ts>
-  struct Hidden2 {
-    Hidden2(typename T::template U<Ts> ...ts);
-  };
-
-  struct Hide {
-    template<typename T> using U = int;
-  };
-
-  Hidden1<Hide> h1;
-  Hidden2<Hide, double, char> h2(1, 2);
-}
-
-namespace Core22036 {
-  struct X {};
-  void h(...);
-  template<typename T> using Y = X;
-  template<typename T, typename ...Ts> struct S {
-    // An expression can contain an unexpanded pack without being type or
-    // value dependent. This is true even if the expression's type is a pack
-    // expansion type.
-    void f1(Y<T> a) { h(g(a)); } // expected-error {{undeclared identifier 'g'}}
-    void f2(Y<Ts>...as) { h(g(as)...); } // expected-error {{undeclared identifier 'g'}}
-    void f3(Y<Ts>...as) { g(as...); } // ok
-    void f4(Ts ...ts) { h(g(sizeof(ts))...); } // expected-error {{undeclared identifier 'g'}}
-    // FIXME: We can reject this, since it has no valid instantiations because
-    // 'g' never has any associated namespaces.
-    void f5(Ts ...ts) { g(sizeof(ts)...); } // ok
-  };
-}
-
-namespace PR13243 {
-  template<typename A> struct X {};
-  template<int I> struct C {};
-  template<int I> using Ci = C<I>;
-
-  template<typename A, int I> void f(X<A>, Ci<I>) {}
-  template void f(X<int>, C<0>);
-}
-
-namespace PR13136 {
-  template <typename T, T... Numbers>
-  struct NumberTuple { };
-
-  template <unsigned int... Numbers>
-  using MyNumberTuple = NumberTuple<unsigned int, Numbers...>;
-
-  template <typename U, unsigned int... Numbers>
-  void foo(U&&, MyNumberTuple<Numbers...>);
-
-  template <typename U, unsigned int... Numbers>
-  void bar(U&&, NumberTuple<unsigned int, Numbers...>);
-
-  int main() {
-    foo(1, NumberTuple<unsigned int, 0, 1>());
-    bar(1, NumberTuple<unsigned int, 0, 1>());
-    return 0;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/alignas.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/alignas.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/alignas.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,23 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// expected-no-diagnostics
-using size_t = decltype(sizeof(0));
-
-template<typename T, typename U>
-constexpr T max(T t, U u) { return t > u ? t : u; }
-
-template<typename T, typename ...Ts>
-constexpr auto max(T t, Ts ...ts) -> decltype(max(t, max(ts...))) {
-  return max(t, max(ts...));
-}
-
-template<typename...T> struct my_union {
-  alignas(T...) char buffer[max(sizeof(T)...)];
-};
-
-struct alignas(8) A { char c; };
-struct alignas(4) B { short s; };
-struct C { char a[16]; };
-
-static_assert(sizeof(my_union<A, B, C>) == 16, "");
-static_assert(alignof(my_union<A, B, C>) == 8, "");

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/ambiguous-ovl-print.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/ambiguous-ovl-print.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/ambiguous-ovl-print.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f(void*, int); // expected-note{{candidate function}}
-template<typename T>
-  void f(T*, long); // expected-note{{candidate function}}
-
-void test_f(int *ip, int i) {
-  f(ip, i); // expected-error{{ambiguous}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/anonymous-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/anonymous-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/anonymous-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR5868
-struct T0 {
-  int x;
-  union {
-    void *m0;
-  };
-};
-template <typename T>
-struct T1 : public T0, public T { 
-  void f0() { 
-    m0 = 0; // expected-error{{ambiguous conversion}}
-  } 
-};
-
-struct A : public T0 { };
-
-void f1(T1<A> *S) { S->f0(); } // expected-note{{instantiation of member function}}
-
-namespace rdar8635664 {
-  template<typename T>
-  struct X {
-    struct inner;
-  
-    struct inner {
-      union {
-        int x;
-        float y;
-      };
-
-      typedef T type;
-    };
-  };
-
-  void test() {
-    X<int>::inner i;
-    i.x = 0;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/array-to-pointer-decay.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/array-to-pointer-decay.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/array-to-pointer-decay.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-struct mystruct {
-  int  member;
-};
-
-template <int i>
-int foo() {
-  mystruct s[1];
-  return s->member;
-}
-
-int main() {
-  foo<1>();
-}
-
-// PR7405
-struct hb_sanitize_context_t {
-  int start;
-};
-template <typename Type> static bool sanitize() {
-  hb_sanitize_context_t c[1];
-  return !c->start;
-}
-bool closure = sanitize<int>();

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/atomics.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/atomics.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/atomics.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR8345
-template<typename T> T f(T* value) {
-  return __sync_add_and_fetch(value, 1);
-}
-int g(long long* x) { return f(x); }
-int g(int* x) { return f(x); }
-
-namespace PR11320 {
-  template<typename T> 
-  void g(unsigned *x) { 
-    __sync_bool_compare_and_swap(x, 1, 4); 
-  }
-  void h() { g<int>(0); }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/attributes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/attributes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/attributes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,54 +0,0 @@
-// RUN: %clang_cc1 -std=gnu++11 -fsyntax-only -verify %s
-
-namespace attribute_aligned {
-  template<int N>
-  struct X {
-    char c[1] __attribute__((__aligned__((N)))); // expected-error {{alignment is not a power of 2}}
-  };
-
-  template <bool X> struct check {
-    int check_failed[X ? 1 : -1]; // expected-error {{array with a negative size}}
-  };
-
-  template <int N> struct check_alignment {
-    typedef check<N == sizeof(X<N>)> t; // expected-note {{in instantiation}}
-  };
-
-  check_alignment<1>::t c1;
-  check_alignment<2>::t c2;
-  check_alignment<3>::t c3; // expected-note 2 {{in instantiation}}
-  check_alignment<4>::t c4;
-
-  template<unsigned Size, unsigned Align>
-  class my_aligned_storage
-  {
-    __attribute__((align(Align))) char storage[Size];
-  };
-  
-  template<typename T>
-  class C {
-  public:
-    C() {
-      static_assert(sizeof(t) == sizeof(T), "my_aligned_storage size wrong");
-      static_assert(alignof(t) == alignof(T), "my_aligned_storage align wrong"); // expected-warning{{'alignof' applied to an expression is a GNU extension}}
-    }
-    
-  private:
-    my_aligned_storage<sizeof(T), alignof(T)> t;
-  };
-  
-  C<double> cd;
-}
-
-namespace PR9049 {
-  extern const void *CFRetain(const void *ref);
-
-  template<typename T> __attribute__((cf_returns_retained))
-  inline T WBCFRetain(T aValue) { return aValue ? (T)CFRetain(aValue) : (T)0; }
-
-
-  extern void CFRelease(const void *ref);
-
-  template<typename T>
-  inline void WBCFRelease(__attribute__((cf_consumed)) T aValue) { if(aValue) CFRelease(aValue); }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/canonical-expr-type-0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/canonical-expr-type-0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/canonical-expr-type-0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-void f();
-
-// Test typeof(expr) canonicalization
-template<typename T, T N>
-void f0(T x, decltype(f(N, x)) y) { } // expected-note{{previous}}
-
-template<typename T, T N>
-void f0(T x, decltype((f)(N, x)) y) { }
-
-template<typename U, U M>
-void f0(U u, decltype(f(M, u))) { } // expected-error{{redefinition}}
-
-// PR12438: Test sizeof...() canonicalization
-template<int> struct N {};
-
-template<typename...T>
-N<sizeof...(T)> f1() {} // expected-note{{previous}}
-
-template<typename, typename...T>
-N<sizeof...(T)> f1() {}
-
-template<class...U>
-N<sizeof...(U)> f1() {} // expected-error{{redefinition}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/canonical-expr-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/canonical-expr-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/canonical-expr-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-void f();
-
-// Test typeof(expr) canonicalization
-template<typename T>
-void f0(T x, __typeof__(f(x)) y) { } // expected-note{{previous}}
-
-template<typename T>
-void f0(T x, __typeof__((f)(x)) y) { }
-
-template<typename U>
-void f0(U u, __typeof__(f(u))) { } // expected-error{{redefinition}}
-
-// Test insane typeof(expr) overload set canonicalization
-void f(int);
-void f(double);
-
-template<typename T, T N>
-void f0a(T x, __typeof__(f(N)) y) { } // expected-note{{previous}}
-
-void f(int);
-
-template<typename T, T N>
-void f0a(T x, __typeof__(f(N)) y) { } // expected-error{{redefinition}} \
-                                      // expected-note{{previous}}
-
-void f(float);
-
-template<typename T, T N>
-void f0a(T x, __typeof__(f(N)) y) { } // expected-error{{redefinition}}
-
-// Test dependently-sized array canonicalization
-template<typename T, int N, int M>
-void f1(T (&array)[N + M]) { } // expected-note{{previous}}
-
-template<typename T, int N, int M>
-void f1(T (&array)[M + N]) { }
-
-template<typename T, int M, int N>
-void f1(T (&array)[M + N]) { } // expected-error{{redefinition}}
-
-// Test dependently-sized extended vector type canonicalization
-template<typename T, int N, int M>
-struct X2 {
-  typedef T __attribute__((ext_vector_type(N))) type1;
-  typedef T __attribute__((ext_vector_type(M))) type2;
-  typedef T __attribute__((ext_vector_type(N))) type3;
-  
-  void f0(type1); // expected-note{{previous}}
-  void f0(type2);
-  void f0(type3); // expected-error{{redeclared}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-ctor-initializer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-ctor-initializer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-ctor-initializer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<class X> struct A {};
-
-template<class X> struct B : A<X> { 
-  B() : A<X>() {} 
-};
-B<int> x;
-
-template<class X> struct B1 : A<X> {
-  typedef A<X> Base;
-  B1() : Base() {}
-};
-B1<int> x1;
-
-
-template<typename T> struct Tmpl { };
-
-template<typename T> struct TmplB { };
-
-struct TmplC : Tmpl<int> {
-   TmplC() :
-             Tmpl<int>(),
-             TmplB<int>() { } // expected-error {{type 'TmplB<int>' is not a direct or virtual base of 'TmplC'}}
-};
-
-
-struct TmplD : Tmpl<char>, TmplB<char> {
-    TmplD():
-            Tmpl<int>(), // expected-error {{type 'Tmpl<int>' is not a direct or virtual base of 'TmplD'}}
-            TmplB<char>() {}
-};
-
-namespace PR7259 {
-  class Base {
-  public:
-    Base() {}
-  };
-
-  template <class ParentClass>
-  class Derived : public ParentClass {
-  public:
-    Derived() : Base() {}
-  };
-
-  class Final : public Derived<Base> {
-  };
-
-  int
-  main (void)
-  {
-    Final final;
-    return 0;
-  }
-}
-
-namespace NonDependentError {
-  struct Base { Base(int); }; // expected-note 2{{candidate}}
-
-  template<typename T>
-  struct Derived1 : Base {
-    Derived1() : Base(1, 2) {} // expected-error {{no matching constructor}}
-  };
-
-  template<typename T>
-  struct Derived2 : Base {
-    Derived2() : BaseClass(1) {} // expected-error {{does not name a non-static data member or base}}
-  };
-
-  Derived1<void> d1;
-  Derived2<void> d2;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,139 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> class A;
-
-extern "C++" {
-  template<typename T> class B;
-}
-
-namespace N {
-  template<typename T> class C;
-}
-
-extern "C" {
-  template<typename T> class D; // expected-error{{templates must have C++ linkage}}
-}
-
-template<class U> class A; // expected-note{{previous template declaration is here}}
-
-template<int N> class A; // expected-error{{template parameter has a different kind in template redeclaration}}
-
-template<int N> class NonTypeTemplateParm;
-
-typedef int INT;
-
-template<INT M> class NonTypeTemplateParm; // expected-note{{previous non-type template parameter with type 'INT' (aka 'int') is here}}
-
-template<long> class NonTypeTemplateParm; // expected-error{{template non-type parameter has a different type 'long' in template redeclaration}}
-
-template<template<typename T> class X> class TemplateTemplateParm;
-
-template<template<class> class Y> class TemplateTemplateParm; // expected-note{{previous template declaration is here}} \
-      // expected-note{{previous template template parameter is here}}
-
-template<typename> class TemplateTemplateParm; // expected-error{{template parameter has a different kind in template redeclaration}}
-
-template<template<typename T, int> class X> class TemplateTemplateParm; // expected-error{{too many template parameters in template template parameter redeclaration}}
-
-template<typename T>
-struct test {}; // expected-note{{previous definition}}
-
-template<typename T>
-struct test : T {}; // expected-error{{redefinition}}
-
-class X {
-public:
-  template<typename T> class C;
-};
-
-void f() {
-  template<typename T> class X; // expected-error{{expression}}
-}
-
-template<typename T> class X1 var; // expected-error{{declared as a template}}
-
-namespace M {
-}
-
-template<typename T> class M::C3 { }; // expected-error{{out-of-line definition of 'C3' does not match any declaration in namespace 'M'}}
-
-namespace PR8001 {
-  template<typename T1>
-  struct Foo {
-    template<typename T2> class Bar;
-    typedef Bar<T1> Baz;
-
-   template<typename T2>
-   struct Bar {
-     Bar() {}
-   };
-  };
-
-  void pr8001() {
-    Foo<int>::Baz x;
-    Foo<int>::Bar<int> y(x);
-  }
-}
-
-namespace rdar9676205 {
-  template <unsigned, class _Tp> class tuple_element;
-
-  template <class _T1, class _T2> class pair;
-
-  template <class _T1, class _T2>
-  class tuple_element<0, pair<_T1, _T2> >
-  {
-    template <class _Tp>
-    struct X
-    {
-      template <class _Up, bool = X<_Up>::value>
-      struct Y
-        : public X<_Up>,
-          public Y<_Up>
-      { };
-    };
-  };
-}
-
-namespace redecl {
-  int A; // expected-note {{here}}
-  template<typename T> struct A; // expected-error {{different kind of symbol}}
-
-  int B; // expected-note {{here}}
-  template<typename T> struct B { // expected-error {{different kind of symbol}}
-  };
-
-  template<typename T> struct F;
-  template<typename T> struct K;
-
-  int G, H; // expected-note {{here}}
-
-  struct S {
-    int C; // expected-note {{here}}
-    template<typename T> struct C; // expected-error {{different kind of symbol}}
-
-    int D; // expected-note {{here}}
-    template<typename T> struct D { // expected-error {{different kind of symbol}}
-    };
-
-    int E;
-    template<typename T> friend struct E { // expected-error {{cannot define a type in a friend}}
-    };
-
-    int F;
-    template<typename T> friend struct F; // ok, redecl::F
-
-    template<typename T> struct G; // ok
-
-    template<typename T> friend struct H; // expected-error {{different kind of symbol}}
-
-    int I, J, K;
-
-    struct U {
-      template<typename T> struct I; // ok
-      template<typename T> struct J { // ok
-      };
-      template<typename T> friend struct K; // ok, redecl::K
-    };
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-id-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-id-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-id-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-namespace N {
-  template<typename T> class A { };
-
-  template<> class A<int> { };
-
-  template<> class A<float>; // expected-note{{forward declaration of 'N::A<float>'}}
-
-  class B : public A<int> { };
-}
-
-class C1 : public N::A<int> { };
-
-class C2 : public N::A<float> { }; // expected-error{{base class has incomplete type}}
-
-struct D1 {
-  operator N::A<int>();
-};
-
-namespace N {
-  struct D2 {
-    operator A<int>();
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-id.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-id.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-id.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, typename U = float> struct A { };
-
-typedef A<int> A_int;
-
-typedef float FLOAT;
-
-A<int, FLOAT> *foo(A<int> *ptr, A<int> const *ptr2, A<int, double> *ptr3) {
-  if (ptr)
-    return ptr; // okay
-  else if (ptr2)
-    return ptr2; // expected-error{{cannot initialize return object of type 'A<int, FLOAT> *' with an lvalue of type 'const A<int> *'}}
-  else {
-    return ptr3; // expected-error{{cannot initialize return object of type 'A<int, FLOAT> *' with an lvalue of type 'A<int, double> *'}}
-  }
-}
-
-template<int I> struct B;
-
-const int value = 12;
-B<17 + 2> *bar(B<(19)> *ptr1, B< (::value + 7) > *ptr2, B<19 - 3> *ptr3) {
-  if (ptr1)
-    return ptr1;
-  else if (ptr2)
-    return ptr2;
-  else
-    return ptr3; // expected-error{{cannot initialize return object of type 'B<17 + 2> *' with an lvalue of type 'B<19 - 3>}}
-}
-
-typedef B<5> B5;
-
-
-namespace N {
-  template<typename T> struct C {};
-}
-
-N::C<int> c1;
-typedef N::C<float> c2;
-
-// PR5655
-template<typename T> struct Foo { }; // expected-note{{template is declared here}}
-
-void f(void) { Foo bar; } // expected-error{{use of class template 'Foo' requires template arguments}}
-
-// rdar://problem/8254267
-template <typename T> class Party;
-template <> class Party<T> { friend struct Party<>; }; // expected-error {{use of undeclared identifier 'T'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/class-template-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,121 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, typename U = int> struct A; // expected-note {{template is declared here}} \
-                                                 // expected-note{{explicitly specialized}}
-
-template<> struct A<double, double>; // expected-note{{forward declaration}}
-
-template<> struct A<float, float> {  // expected-note{{previous definition}}
-  int x;
-};
-
-template<> struct A<float> { // expected-note{{previous definition}}
-  int y;
-};
-
-int test_specs(A<float, float> *a1, A<float, int> *a2) {
-  return a1->x + a2->y;
-}
-
-int test_incomplete_specs(A<double, double> *a1, 
-                          A<double> *a2)
-{
-  (void)a1->x; // expected-error{{member access into incomplete type}}
-  (void)a2->x; // expected-error{{implicit instantiation of undefined template 'A<double, int>'}}
-}
-
-typedef float FLOAT;
-
-template<> struct A<float, FLOAT>;
-
-template<> struct A<FLOAT, float> { }; // expected-error{{redefinition}}
-
-template<> struct A<float, int> { }; // expected-error{{redefinition}}
-
-template<typename T, typename U = int> struct X;
-
-template <> struct X<int, int> { int foo(); }; // #1
-template <> struct X<float> { int bar(); };  // #2
-
-typedef int int_type;
-void testme(X<int_type> *x1, X<float, int> *x2) { 
-  (void)x1->foo(); // okay: refers to #1
-  (void)x2->bar(); // okay: refers to #2
-}
-
-// Make sure specializations are proper classes.
-template<>
-struct A<char> {
-  A();
-};
-
-A<char>::A() { }
-
-// Make sure we can see specializations defined before the primary template.
-namespace N{ 
-  template<typename T> struct A0;
-}
-
-namespace N {
-  template<>
-  struct A0<void> {
-    typedef void* pointer;
-  };
-}
-
-namespace N {
-  template<typename T>
-  struct A0 {
-    void foo(A0<void>::pointer p = 0);
-  };
-}
-
-// Diagnose specialization errors
-struct A<double> { }; // expected-error{{template specialization requires 'template<>'}}
-
-template<> struct ::A<double>;
-
-namespace N {
-  template<typename T> struct B; // expected-note 2{{explicitly specialized}}
-
-  template<> struct ::N::B<char>; // okay
-  template<> struct ::N::B<short>; // okay
-  template<> struct ::N::B<int>; // okay
-
-  int f(int);
-}
-
-template<> struct N::B<int> { }; // okay
-
-template<> struct N::B<float> { }; // expected-warning{{C++11 extension}}
-
-namespace M {
-  template<> struct ::N::B<short> { }; // expected-error{{class template specialization of 'B' not in a namespace enclosing 'N'}}
-
-  template<> struct ::A<long double>; // expected-error{{originally}}
-}
-
-template<> struct N::B<char> { 
-  int testf(int x) { return f(x); }
-};
-
-// PR5264
-template <typename T> class Foo;
-Foo<int>* v;
-Foo<int>& F() { return *v; }
-template <typename T> class Foo {};
-Foo<int> x;
-
-
-// Template template parameters
-template<template<class T> class Wibble>
-class Wibble<int> { }; // expected-error{{cannot specialize a template template parameter}}
-
-namespace rdar9676205 {
-  template<typename T>
-  struct X {
-    template<typename U>
-    struct X<U*> { // expected-error{{explicit specialization of 'X' in class scope}}
-    };
-  };
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/constexpr-instantiate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/constexpr-instantiate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/constexpr-instantiate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,210 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-namespace UseBeforeDefinition {
-  struct A {
-    template<typename T> static constexpr T get() { return T(); }
-    // ok, not a constant expression.
-    int n = get<int>();
-  };
-
-  // ok, constant expression.
-  constexpr int j = A::get<int>();
-
-  template<typename T> constexpr int consume(T);
-  // ok, not a constant expression.
-  const int k = consume(0); // expected-note {{here}}
-
-  template<typename T> constexpr int consume(T) { return 0; }
-  // ok, constant expression.
-  constexpr int l = consume(0);
-
-  constexpr int m = k; // expected-error {{constant expression}} expected-note {{initializer of 'k'}}
-}
-
-namespace IntegralConst {
-  template<typename T> constexpr T f(T n) { return n; }
-  enum E {
-    v = f(0), w = f(1) // ok
-  };
-  static_assert(w == 1, "");
-
-  char arr[f('x')]; // ok
-  static_assert(sizeof(arr) == 'x', "");
-}
-
-namespace ConvertedConst {
-  template<typename T> constexpr T f(T n) { return n; }
-  int f() {
-    switch (f()) {
-      case f(4): return 0;
-    }
-    return 1;
-  }
-}
-
-namespace OverloadResolution {
-  template<typename T> constexpr T f(T t) { return t; }
-
-  template<int n> struct S { };
-
-  template<typename T> auto g(T t) -> S<f(sizeof(T))> &;
-  char &f(...);
-
-  template<typename T> auto h(T t[f(sizeof(T))]) -> decltype(&*t) {
-    return t;
-  }
-
-  S<4> &k = g(0);
-  int *p, *q = h(p);
-}
-
-namespace DataMember {
-  template<typename T> struct S { static const int k; };
-  const int n = S<int>::k; // expected-note {{here}}
-  template<typename T> const int S<T>::k = 0;
-  constexpr int m = S<int>::k; // ok
-  constexpr int o = n; // expected-error {{constant expression}} expected-note {{initializer of 'n'}}
-}
-
-namespace Reference {
-  const int k = 5;
-  template<typename T> struct S {
-    static volatile int &r;
-  };
-  template<typename T> volatile int &S<T>::r = const_cast<volatile int&>(k);
-  constexpr int n = const_cast<int&>(S<int>::r);
-  static_assert(n == 5, "");
-}
-
-namespace Unevaluated {
-  // We follow g++ in treating any reference to a constexpr function template
-  // specialization as requiring an instantiation, even if it occurs in an
-  // unevaluated context.
-  //
-  // We go slightly further than g++, and also trigger the implicit definition
-  // of a defaulted special member in the same circumstances. This seems scary,
-  // since a lot of classes have constexpr special members in C++11, but the
-  // only observable impact should be the implicit instantiation of constexpr
-  // special member templates (defaulted special members should only be
-  // generated if they are well-formed, and non-constexpr special members in a
-  // base or member cause the class's special member to not be constexpr).
-  //
-  // FIXME: None of this is required by the C++ standard. The rules in this
-  //        area are poorly specified, so this is subject to change.
-  namespace NotConstexpr {
-    template<typename T> struct S {
-      S() : n(0) {}
-      S(const S&) : n(T::error) {}
-      int n;
-    };
-    struct U : S<int> {};
-    decltype(U(U())) u; // ok, don't instantiate S<int>::S() because it wasn't declared constexpr
-  }
-  namespace Constexpr {
-    template<typename T> struct S {
-      constexpr S() : n(0) {}
-      constexpr S(const S&) : n(T::error) {} // expected-error {{has no members}}
-      int n;
-    };
-    struct U : S<int> {}; // expected-note {{instantiation}}
-    decltype(U(U())) u; // expected-note {{here}}
-  }
-
-  namespace PR11851_Comment0 {
-    template<int x> constexpr int f() { return x; }
-    template<int i> void ovf(int (&x)[f<i>()]);
-    void f() { int x[10]; ovf<10>(x); }
-  }
-
-  namespace PR11851_Comment1 {
-    template<typename T>
-    constexpr bool Integral() {
-      return true;
-    }
-    template<typename T, bool Int = Integral<T>()>
-    struct safe_make_unsigned {
-      typedef T type;
-    };
-    template<typename T>
-    using Make_unsigned = typename safe_make_unsigned<T>::type;
-    template <typename T>
-    struct get_distance_type {
-      using type = int;
-    };
-    template<typename R>
-    auto size(R) -> Make_unsigned<typename get_distance_type<R>::type>;
-    auto check() -> decltype(size(0));
-  }
-
-  namespace PR11851_Comment6 {
-    template<int> struct foo {};
-    template<class> constexpr int bar() { return 0; }
-    template<class T> foo<bar<T>()> foobar();
-    auto foobar_ = foobar<int>();
-  }
-
-  namespace PR11851_Comment9 {
-    struct S1 {
-      constexpr S1() {}
-      constexpr operator int() const { return 0; }
-    };
-    int k1 = sizeof(short{S1(S1())});
-
-    struct S2 {
-      constexpr S2() {}
-      constexpr operator int() const { return 123456; }
-    };
-    int k2 = sizeof(short{S2(S2())}); // expected-error {{cannot be narrowed}} expected-note {{override}}
-  }
-
-  namespace PR12288 {
-    template <typename> constexpr bool foo() { return true; }
-    template <bool> struct bar {};
-    template <typename T> bar<foo<T>()> baz() { return bar<foo<T>()>(); }
-    int main() { baz<int>(); }
-  }
-
-  namespace PR13423 {
-    template<bool, typename> struct enable_if {};
-    template<typename T> struct enable_if<true, T> { using type = T; };
-
-    template<typename T> struct F {
-      template<typename U>
-      static constexpr bool f() { return sizeof(T) < U::size; }
-
-      template<typename U>
-      static typename enable_if<f<U>(), void>::type g() {} // expected-note {{disabled by 'enable_if'}}
-    };
-
-    struct U { static constexpr int size = 2; };
-
-    void h() { F<char>::g<U>(); }
-    void i() { F<int>::g<U>(); } // expected-error {{no matching function}}
-  }
-
-  namespace PR14203 {
-    struct duration { constexpr duration() {} };
-
-    template <typename>
-    void sleep_for() {
-      constexpr duration max = duration();
-    }
-  }
-}
-
-namespace NoInstantiationWhenSelectingOverload {
-  // Check that we don't instantiate conversion functions when we're checking
-  // for the existence of an implicit conversion sequence, only when a function
-  // is actually chosen by overload resolution.
-  struct S {
-    template<typename T> constexpr S(T) : n(T::error) {} // expected-error {{no members}}
-    int n;
-  };
-
-  void f(S);
-  void f(int);
-
-  void g() { f(0); }
-  void h() { (void)sizeof(f(0)); }
-  void i() { (void)sizeof(f("oops")); } // expected-note {{instantiation of}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/constructor-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/constructor-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/constructor-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,128 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct X0 { // expected-note{{candidate}}
-  X0(int); // expected-note{{candidate}}
-  template<typename T> X0(T); // expected-note {{candidate}}
-  template<typename T, typename U> X0(T*, U*); // expected-note {{candidate}}
-  
-  // PR4761
-  template<typename T> X0() : f0(T::foo) {} // expected-note {{candidate}}
-  int f0;
-};
-
-void accept_X0(X0);
-
-void test_X0(int i, float f) {
-  X0 x0a(i);
-  X0 x0b(f);
-  X0 x0c = i;
-  X0 x0d = f;
-  accept_X0(i);
-  accept_X0(&i);
-  accept_X0(f);
-  accept_X0(&f);
-  X0 x0e(&i, &f);
-  X0 x0f(&f, &i);
-  
-  X0 x0g(f, &i); // expected-error{{no matching constructor}}
-}
-
-template<typename T>
-struct X1 {
-  X1(const X1&);
-  template<typename U> X1(const X1<U>&);
-};
-
-template<typename T>
-struct Outer {
-  typedef X1<T> A;
-  
-  A alloc;
-  
-  explicit Outer(const A& a) : alloc(a) { }
-};
-
-void test_X1(X1<int> xi) {
-  Outer<int> oi(xi);
-  Outer<float> of(xi);
-}
-
-// PR4655
-template<class C> struct A {};
-template <> struct A<int>{A(const A<int>&);};
-struct B { A<int> x; B(B& a) : x(a.x) {} };
-
-struct X2 {
-  X2(); // expected-note{{candidate constructor}}
-  X2(X2&);	// expected-note {{candidate constructor}}
-  template<typename T> X2(T);
-};
-
-X2 test(bool Cond, X2 x2) {
-  if (Cond)
-    return x2; // okay, uses copy constructor
-  
-  return X2(); // expected-error{{no matching constructor}}
-}
-
-struct X3 {
-  template<typename T> X3(T);
-};
-
-template<> X3::X3(X3); // expected-error{{must pass its first argument by reference}}
-
-struct X4 {
-  X4();
-  ~X4();
-  X4(X4&);
-  template<typename T> X4(const T&, int = 17);
-};
-
-X4 test_X4(bool Cond, X4 x4) {
-  X4 a(x4, 17); // okay, constructor template
-  X4 b(x4); // okay, copy constructor
-  return X4();
-}
-
-// Instantiation of a non-dependent use of a constructor
-struct DefaultCtorHasDefaultArg {
-  explicit DefaultCtorHasDefaultArg(int i = 17);
-};
-
-template<typename T>
-void default_ctor_inst() {
-  DefaultCtorHasDefaultArg def;
-}
-
-template void default_ctor_inst<int>();
-
-template<typename T>
-struct X5 {
-  X5();
-  X5(const T &);
-};
-
-struct X6 {
-  template<typename T> X6(T);
-};
-
-void test_X5_X6() {
-  X5<X6> tf;
-  X5<X6> tf2(tf);
-}
-
-namespace PR8182 {
-  struct foo {
-    foo();
-    template<class T> foo(T&);
-
-  private:
-    foo(const foo&);
-  };
-
-  void test_foo() {
-    foo f1;
-    foo f2(f1);
-    foo f3 = f1;
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/copy-ctor-assign.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/copy-ctor-assign.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/copy-ctor-assign.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Make sure that copy constructors and assignment operators are properly 
-// generated when there is a matching 
-
-// PR5072
-template<typename T>
-struct X {
-  template<typename U> 
-  X(const X<U>& other) 
-    : value(other.value + 1) { } // expected-error{{binary expression}}
-
-  template<typename U> 
-  X& operator=(const X<U>& other)  {
-    value = other.value + 1; // expected-error{{binary expression}}
-    return *this;
-  }
-  
-  T value;
-};
-
-struct Y {};
-
-X<int Y::*> test0(X<int Y::*> x) { return x; }
-X<int> test1(X<long> x) { return x; }
-
-
-X<int> test2(X<int Y::*> x) { 
-  return x; // expected-note{{instantiation}}
-}
-
-void test3(X<int> &x, X<int> xi, X<long> xl, X<int Y::*> xmptr) {
-  x = xi;
-  x = xl;
-  x = xmptr; // expected-note{{instantiation}}
-}
-
-struct X1 {
-  X1 &operator=(const X1&);
-};
-
-template<typename T>
-struct X2 : X1 {
-  template<typename U> X2 &operator=(const U&);
-};
-
-struct X3 : X2<int> {
-};
-
-void test_X2(X3 &to, X3 from) {
-  to = from;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/crash-10438657.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/crash-10438657.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/crash-10438657.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: not %clang_cc1 -fsyntax-only %s 2> %t
-// RUN: FileCheck %s < %t
-// CHECK: 10 errors
-template<typename _CharT>
-class collate : public locale::facet {
-
-protected:
-virtual ~collate() {}
-  class wxObject;
-  class __attribute__ ((visibility("default"))) wxGDIRefData 
-    : public wxObjectRefData {};
-  class __attribute__ ((visibility("default"))) wxGDIObject : public wxObject { \
-      public:
-      virtual bool IsOk() const {
-        return m_refData && static_cast<wxGDIRefData *>(m_refData)->IsOk(); 

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/crash-8204126.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/crash-8204126.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/crash-8204126.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct A
-{
-  template<int> template<typename T> friend void foo(T) {} // expected-error{{extraneous template parameter list}}
-  void bar() { foo(0); } // expected-error{{use of undeclared identifier 'foo'}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/current-instantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/current-instantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/current-instantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,249 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// This test concerns the identity of dependent types within the
-// canonical type system, specifically focusing on the difference
-// between members of the current instantiation and members of an
-// unknown specialization. This considers C++ [temp.type], which
-// specifies type equivalence within a template, and C++0x
-// [temp.dep.type], which defines what it means to be a member of the
-// current instantiation.
-
-template<typename T, typename U>
-struct X0 {
-  typedef T T_type;
-  typedef U U_type;
-
-  void f0(T&); // expected-note{{previous}}
-  void f0(typename X0::U_type&);
-  void f0(typename X0::T_type&); // expected-error{{redecl}}
-
-  void f1(T&); // expected-note{{previous}}
-  void f1(typename X0::U_type&);
-  void f1(typename X0<T, U>::T_type&); // expected-error{{redecl}}
-
-  void f2(T&); // expected-note{{previous}}
-  void f2(typename X0::U_type&);
-  void f2(typename X0<T_type, U_type>::T_type&); // expected-error{{redecl}}
-
-  void f3(T&); // expected-note{{previous}}
-  void f3(typename X0::U_type&);
-  void f3(typename ::X0<T_type, U_type>::T_type&); // expected-error{{redecl}}
-
-  struct X1 {
-    typedef T my_T_type;
-
-    void g0(T&); // expected-note{{previous}}
-    void g0(typename X0::U_type&);
-    void g0(typename X0::T_type&); // expected-error{{redecl}}
-
-    void g1(T&); // expected-note{{previous}}
-    void g1(typename X0::U_type&);
-    void g1(typename X0<T, U>::T_type&); // expected-error{{redecl}}
-    
-    void g2(T&); // expected-note{{previous}}
-    void g2(typename X0::U_type&);
-    void g2(typename X0<T_type, U_type>::T_type&); // expected-error{{redecl}}
-    
-    void g3(T&); // expected-note{{previous}}
-    void g3(typename X0::U_type&);
-    void g3(typename ::X0<T_type, U_type>::T_type&); // expected-error{{redecl}}
-
-    void g4(T&); // expected-note{{previous}}
-    void g4(typename X0::U_type&);
-    void g4(typename X1::my_T_type&); // expected-error{{redecl}}
-
-    void g5(T&); // expected-note{{previous}}
-    void g5(typename X0::U_type&);
-    void g5(typename X0::X1::my_T_type&); // expected-error{{redecl}}
-
-    void g6(T&); // expected-note{{previous}}
-    void g6(typename X0::U_type&);
-    void g6(typename X0<T, U>::X1::my_T_type&); // expected-error{{redecl}}
-
-    void g7(T&); // expected-note{{previous}}
-    void g7(typename X0::U_type&);
-    void g7(typename ::X0<typename X1::my_T_type, U_type>::X1::my_T_type&); // expected-error{{redecl}}
-
-    void g8(T&); // expected-note{{previous}}
-    void g8(typename X0<U, T_type>::T_type&);
-    void g8(typename ::X0<typename X0<T_type, U>::X1::my_T_type, U_type>::X1::my_T_type&); // expected-error{{redecl}}
-  };
-};
-
-
-template<typename T, typename U>
-struct X0<T*, U*> {
-  typedef T T_type;
-  typedef U U_type;
-  typedef T* Tptr;
-  typedef U* Uptr;
-  
-  void f0(T&); // expected-note{{previous}}
-  void f0(typename X0::U_type&);
-  void f0(typename X0::T_type&); // expected-error{{redecl}}
-  
-  void f1(T&); // expected-note{{previous}}
-  void f1(typename X0::U_type&);
-  void f1(typename X0<T*, U*>::T_type&); // expected-error{{redecl}}
-  
-  void f2(T&); // expected-note{{previous}}
-  void f2(typename X0::U_type&);
-  void f2(typename X0<T_type*, U_type*>::T_type&); // expected-error{{redecl}}
-  
-  void f3(T&); // expected-note{{previous}}
-  void f3(typename X0::U_type&);
-  void f3(typename ::X0<T_type*, U_type*>::T_type&); // expected-error{{redecl}}
-
-  void f4(T&); // expected-note{{previous}}
-  void f4(typename X0::U_type&);
-  void f4(typename ::X0<Tptr, Uptr>::T_type&); // expected-error{{redecl}}
-  
-  void f5(X0*); // expected-note{{previous}}
-  void f5(::X0<T, U>*);
-  void f5(::X0<T*, U*>*); // expected-error{{redecl}}
-  
-  struct X2 {
-    typedef T my_T_type;
-    
-    void g0(T&); // expected-note{{previous}}
-    void g0(typename X0::U_type&);
-    void g0(typename X0::T_type&); // expected-error{{redecl}}
-    
-    void g1(T&); // expected-note{{previous}}
-    void g1(typename X0::U_type&);
-    void g1(typename X0<T*, U*>::T_type&); // expected-error{{redecl}}
-    
-    void g2(T&); // expected-note{{previous}}
-    void g2(typename X0::U_type&);
-    void g2(typename X0<T_type*, U_type*>::T_type&); // expected-error{{redecl}}
-    
-    void g3(T&); // expected-note{{previous}}
-    void g3(typename X0::U_type&);
-    void g3(typename ::X0<T_type*, U_type*>::T_type&); // expected-error{{redecl}}
-    
-    void g4(T&); // expected-note{{previous}}
-    void g4(typename X0::U_type&);
-    void g4(typename X2::my_T_type&); // expected-error{{redecl}}
-    
-    void g5(T&); // expected-note{{previous}}
-    void g5(typename X0::U_type&);
-    void g5(typename X0::X2::my_T_type&); // expected-error{{redecl}}
-    
-    void g6(T&); // expected-note{{previous}}
-    void g6(typename X0::U_type&);
-    void g6(typename X0<T*, U*>::X2::my_T_type&); // expected-error{{redecl}}
-    
-    void g7(T&); // expected-note{{previous}}
-    void g7(typename X0::U_type&);
-    void g7(typename ::X0<typename X2::my_T_type*, U_type*>::X2::my_T_type&); // expected-error{{redecl}}
-    
-    void g8(T&); // expected-note{{previous}}
-    void g8(typename X0<U, T_type>::T_type&);
-    void g8(typename ::X0<typename X0<T_type*, U*>::X2::my_T_type*, U_type*>::X2::my_T_type&); // expected-error{{redecl}}
-  };
-};
-
-template<typename T>
-struct X1 {
-  static int *a;
-  void f(float *b) {
-    X1<T>::a = b; // expected-error{{incompatible}}
-    X1<T*>::a = b;
-  }
-};
-
-namespace ConstantInCurrentInstantiation {
-  template<typename T>
-  struct X {
-    static const int value = 2;
-    static int array[value];
-  };
-
-  template<typename T> const int X<T>::value;
-
-  template<typename T>
-  int X<T>::array[X<T>::value] = { 1, 2 };
-}
-
-namespace Expressions {
-  template <bool b>
-  struct Bool {
-    enum anonymous_enum { value = b };
-  };
-  struct True : public Bool<true> {};
-  struct False : public Bool<false> {};
-
-  template <typename T1, typename T2>
-  struct Is_Same : public False {};
-  template <typename T>
-  struct Is_Same<T, T> : public True {};
-
-  template <bool b, typename T = void>
-  struct Enable_If {};
-  template <typename T>
-  struct Enable_If<true, T>  {
-    typedef T type;
-  };
-
-  template <typename T>
-  class Class {
-  public:
-    template <typename U>
-    typename Enable_If<Is_Same<U, Class>::value, void>::type
-    foo();
-  };
-
-
-  template <typename T>
-  template <typename U>
-  typename Enable_If<Is_Same<U, Class<T> >::value, void>::type
-  Class<T>::foo() {}
-}
-
-namespace PR9255 {
-  template<typename T>
-  class X0  {
-  public:
-    class Inner1;
-
-    class Inner2  {
-    public:
-      void f()
-      {
-        Inner1::f.g();
-      }
-    };
-  };
-}
-
-namespace rdar10194295 {
-  template<typename XT>
-  class X {
-  public:
-    enum Enum { Yes, No };
-    template<Enum> void foo();
-    template<Enum> class Inner;
-  };
-
-  template<typename XT>
-  template<typename X<XT>::Enum>
-  void X<XT>::foo()
-  {
-  }
-
-  template<typename XT>
-  template<typename X<XT>::Enum>
-  class X<XT>::Inner { };
-}
-
-namespace RebuildDependentScopeDeclRefExpr {
-  template<int> struct N {};
-  template<typename T> struct X {
-    static const int thing = 0;
-    N<thing> data();
-    N<thing> foo();
-  };
-  template<typename T> N<X<T>::thing> X<T>::data() {}
-  // FIXME: We should issue a typo-correction here.
-  template<typename T> N<X<T>::think> X<T>::foo() {} // expected-error {{no member named 'think' in 'X<T>'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/deduction-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/deduction-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/deduction-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,112 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s 2>&1| FileCheck %s
-
-// Note that the error count below doesn't matter. We just want to
-// make sure that the parser doesn't crash.
-// CHECK: 15 errors
-
-// PR7511
-template<a>
-struct int_;
-
-template<a>
-template<int,typename T1,typename>
-struct ac
-{
-  typedef T1 ae
-};
-
-template<class>struct aaa
-{
-  typedef ac<1,int,int>::ae ae
-};
-
-template<class>
-struct state_machine
-{
-  typedef aaa<int>::ae aaa;
-  int start()
-  {
-    ant(0);
-  }
-  
-  template<class>
-  struct region_processing_helper
-  {
-    template<class,int=0>
-    struct In;
-    
-    template<int my>
-    struct In<a::int_<aaa::a>,my>;
-        
-    template<class Event>
-    int process(Event)
-    {
-      In<a::int_<0> > a;
-    }
-  }
-  template<class Event>
-  int ant(Event)
-  {
-    region_processing_helper<int>* helper;
-    helper->process(0)
-  }
-};
-
-int a()
-{
-  state_machine<int> p;
-  p.ant(0);
-}
-
-// PR9974
-template <int> struct enable_if;
-template <class > struct remove_reference ;
-template <class _Tp> struct remove_reference<_Tp&> ;
-
-template <class > struct __tuple_like;
-
-template <class _Tp, class _Up, int = __tuple_like<typename remove_reference<_Tp>::type>::value> 
-struct __tuple_convertible;
-
-struct pair
-{
-template<class _Tuple, int = enable_if<__tuple_convertible<_Tuple, pair>::value>::type> 
-pair(_Tuple&& );
-};
-
-template <class> struct basic_ostream;
-
-template <int> 
-void endl( ) ;
-
-extern basic_ostream<char> cout;
-
-int operator<<( basic_ostream<char> , pair ) ;
-
-void register_object_imp ( )
-{
-cout << endl<1>;
-}
-
-// PR12933
-namespacae PR12933 {
-  template<typename S>
-    template<typename T>
-    void function(S a, T b) {}
-
-  int main() {
-    function(0, 1);
-    return 0;
-  }
-}
-
-// A buildbot failure from libcxx
-namespace libcxx_test {
-  template <class _Ptr, bool> struct __pointer_traits_element_type;
-  template <class _Ptr> struct __pointer_traits_element_type<_Ptr, true>;
-  template <template <class, class...> class _Sp, class _Tp, class ..._Args> struct __pointer_traits_element_type<_Sp<_Tp, _Args...>, true> {
-    typedef char type;
-  };
-  template <class T> struct B {};
-  __pointer_traits_element_type<B<int>, true>::type x;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/deduction.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/deduction.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/deduction.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Template argument deduction with template template parameters.
-template<typename T, template<T> class A> 
-struct X0 {
-  static const unsigned value = 0;
-};
-
-template<template<int> class A>
-struct X0<int, A> {
-  static const unsigned value = 1;
-};
-
-template<int> struct X0i;
-template<long> struct X0l;
-int array_x0a[X0<long, X0l>::value == 0? 1 : -1];
-int array_x0b[X0<int, X0i>::value == 1? 1 : -1];
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-template<typename T> struct allocator { };
-template<typename T, typename Alloc = allocator<T> > struct vector {};
-
-// Fun with meta-lambdas!
-struct _1 {};
-struct _2 {};
-
-// Replaces all occurrences of _1 with Arg1 and _2 with Arg2 in T.
-template<typename T, typename Arg1, typename Arg2>
-struct Replace {
-  typedef T type;
-};
-
-// Replacement of the whole type.
-template<typename Arg1, typename Arg2>
-struct Replace<_1, Arg1, Arg2> {
-  typedef Arg1 type;
-};
-
-template<typename Arg1, typename Arg2>
-struct Replace<_2, Arg1, Arg2> {
-  typedef Arg2 type;
-};
-
-// Replacement through cv-qualifiers
-template<typename T, typename Arg1, typename Arg2>
-struct Replace<const T, Arg1, Arg2> {
-  typedef typename Replace<T, Arg1, Arg2>::type const type;
-};
-
-// Replacement of templates
-template<template<typename> class TT, typename T1, typename Arg1, typename Arg2>
-struct Replace<TT<T1>, Arg1, Arg2> {
-  typedef TT<typename Replace<T1, Arg1, Arg2>::type> type;
-};
-
-template<template<typename, typename> class TT, typename T1, typename T2,
-         typename Arg1, typename Arg2>
-struct Replace<TT<T1, T2>, Arg1, Arg2> {
-  typedef TT<typename Replace<T1, Arg1, Arg2>::type,
-             typename Replace<T2, Arg1, Arg2>::type> type;
-};
-
-// Just for kicks...
-template<template<typename, typename> class TT, typename T1,
-         typename Arg1, typename Arg2>
-struct Replace<TT<T1, _2>, Arg1, Arg2> {
-  typedef TT<typename Replace<T1, Arg1, Arg2>::type, Arg2> type;
-};
-
-int array0[is_same<Replace<_1, int, float>::type, int>::value? 1 : -1];
-int array1[is_same<Replace<const _1, int, float>::type, const int>::value? 1 : -1];
-int array2[is_same<Replace<vector<_1>, int, float>::type, vector<int> >::value? 1 : -1];
-int array3[is_same<Replace<vector<const _1>, int, float>::type, vector<const int> >::value? 1 : -1];
-int array4[is_same<Replace<vector<int, _2>, double, float>::type, vector<int, float> >::value? 1 : -1];
-
-// PR5911
-template <typename T, int N> void f(const T (&a)[N]);
-int iarr[] = { 1 };
-void test_PR5911() { f(iarr); }
-
-// Must not examine base classes of incomplete type during template argument
-// deduction.
-namespace PR6257 {
-  template <typename T> struct X {
-    template <typename U> X(const X<U>& u);
-  };
-  struct A;
-  void f(A& a);
-  void f(const X<A>& a);
-  void test(A& a) { (void)f(a); }
-}
-
-// PR7463
-namespace PR7463 {
-  const int f ();
-  template <typename T_> void g (T_&); // expected-note{{T_ = int}}
-  void h (void) { g(f()); } // expected-error{{no matching function for call}}
-}
-
-namespace test0 {
-  template <class T> void make(const T *(*fn)()); // expected-note {{candidate template ignored: can't deduce a type for 'T' which would make 'const T' equal 'char'}}
-  char *char_maker();
-  void test() {
-    make(char_maker); // expected-error {{no matching function for call to 'make'}}
-  }
-}
-
-namespace test1 {
-  template<typename T> void foo(const T a[3][3]);
-  void test() {
-    int a[3][3];
-    foo(a);
-  }
-}
-
-// PR7708
-namespace test2 {
-  template<typename T> struct Const { typedef void const type; };
-
-  template<typename T> void f(T, typename Const<T>::type*);
-  template<typename T> void f(T, void const *);
-
-  void test() {
-    void *p = 0;
-    f(0, p);
-  }
-}
-
-// rdar://problem/8537391
-namespace test3 {
-  struct Foo {
-    template <void F(char)> static inline void foo();
-  };
-
-  class Bar {
-    template<typename T> static inline void wobble(T ch);
-
-  public:
-    static void madness() {
-      Foo::foo<wobble<char> >();
-    }
-  };
-}
-
-// Verify that we can deduce enum-typed arguments correctly.
-namespace test14 {
-  enum E { E0, E1 };
-  template <E> struct A {};
-  template <E e> void foo(const A<e> &a) {}
-
-  void test() {
-    A<E0> a;
-    foo(a);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-arguments-cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-arguments-cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-arguments-cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-// expected-no-diagnostics
-
-// Test default template arguments for function templates.
-template<typename T = int>
-void f0();
-
-template<typename T>
-void f0();
-
-void g0() {
-  f0(); // okay!
-} 
-
-template<typename T, int N = T::value>
-int &f1(T);
-
-float &f1(...);
-
-struct HasValue {
-  static const int value = 17;
-};
-
-void g1() {
-  float &fr = f1(15);
-  int &ir = f1(HasValue());
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-arguments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-arguments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-arguments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,138 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, int N = 2> struct X; // expected-note{{template is declared here}}
-
-X<int, 1> *x1;
-X<int> *x2;
-
-X<> *x3; // expected-error{{too few template arguments for class template 'X'}}
-
-template<typename U = float, int M> struct X;
-
-X<> *x4;
-
-template<typename T = int> struct Z { };
-template struct Z<>;
-
-// PR4362
-template<class T> struct a { };
-template<> struct a<int> { static const bool v = true; };
-
-template<class T, bool = a<T>::v> struct p { }; // expected-error {{no member named 'v'}}
-
-template struct p<bool>; // expected-note {{in instantiation of default argument for 'p<bool>' required here}}
-template struct p<int>;
-
-// PR5187
-template<typename T, typename U>
-struct A;
-
-template<typename T, typename U = T>
-struct A;
-
-template<typename T, typename U>
-struct A {
-  void f(A<T>);
-};
-
-template<typename T>
-struct B { };
-
-template<>
-struct B<void> {
-  typedef B<void*> type;
-};
-
-// Nested default arguments for template parameters.
-template<typename T> struct X1 { };
-
-template<typename T>
-struct X2 {
-  template<typename U = typename X1<T>::type> // expected-error{{no type named}}
-  struct Inner1 { };
-  
-  template<T Value = X1<T>::value> // expected-error{{no member named 'value'}}
-  struct NonType1 { };
-  
-  template<T Value>
-  struct Inner2 { };
-  
-  template<typename U>
-  struct Inner3 {
-    template<typename X = T, typename V = U>
-    struct VeryInner { };
-    
-    template<T Value1 = sizeof(T), T Value2 = sizeof(U), 
-             T Value3 = Value1 + Value2>
-    struct NonType2 { };
-  };
-};
-
-X2<int> x2i;
-X2<int>::Inner1<float> x2iif;
-
-X2<int>::Inner1<> x2bad; // expected-note{{instantiation of default argument}}
-
-X2<int>::NonType1<'a'> x2_nontype1;
-X2<int>::NonType1<> x2_nontype1_bad; // expected-note{{instantiation of default argument}}
-
-// Check multi-level substitution into template type arguments
-X2<int>::Inner3<float>::VeryInner<> vi;
-X2<char>::Inner3<int>::NonType2<> x2_deep_nontype;
-
-template<typename T, typename U>
-struct is_same { static const bool value = false; };
-
-template<typename T>
-struct is_same<T, T> { static const bool value = true; };
-
-int array1[is_same<__typeof__(vi), 
-               X2<int>::Inner3<float>::VeryInner<int, float> >::value? 1 : -1];
-
-int array2[is_same<__typeof(x2_deep_nontype),
-                   X2<char>::Inner3<int>::NonType2<sizeof(char), sizeof(int), 
-                                    sizeof(char)+sizeof(int)> >::value? 1 : -1];
-
-// Template template parameter defaults
-template<template<typename T> class X = X2> struct X3 { };
-int array3[is_same<X3<>, X3<X2> >::value? 1 : -1];
-
-struct add_pointer {
-  template<typename T>
-  struct apply {
-    typedef T* type;
-  };
-};
-
-template<typename T, template<typename> class X = T::template apply>
-  struct X4;
-int array4[is_same<X4<add_pointer>, 
-                   X4<add_pointer, add_pointer::apply> >::value? 1 : -1];
-
-template<int> struct X5 {}; // expected-note{{has a different type 'int'}}
-template<long> struct X5b {};
-template<typename T, 
-         template<T> class B = X5> // expected-error{{template template argument has different}} \
-                                   // expected-note{{previous non-type template parameter}}
-  struct X6 {};
-
-X6<int> x6a;
-X6<long> x6b; // expected-note{{while checking a default template argument}}
-X6<long, X5b> x6c;
-
-
-template<template<class> class X = B<int> > struct X7; // expected-error{{must be a class template}}
-
-namespace PR9643 {
-  template<typename T> class allocator {};
-  template<typename T, typename U = allocator<T> > class vector {};
-
-  template<template<typename U, typename = allocator<U> > class container,
-           typename DT>
-  container<DT> initializer(const DT& d) {
-    return container<DT>();
-  }
-
-  void f() {
-    vector<int, allocator<int> > v = initializer<vector>(5);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-expr-arguments-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-expr-arguments-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-expr-arguments-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -ast-dump %s 2>&1 | FileCheck %s
-
-// This is a wacky test to ensure that we're actually instantiating
-// the default arguments of the constructor when the function type is
-// otherwise non-dependent.
-namespace PR6733 {
-  template <class T>
-  class bar {
-  public: enum { kSomeConst = 128 };
-    bar(int x = kSomeConst) {}
-  };
-  
-  // CHECK: FunctionDecl{{.*}}f 'void (void)'
-  void f() {
-    // CHECK: VarDecl{{.*}}tmp 'bar<int>'
-    // CHECK: CXXDefaultArgExpr{{.*}}'int'
-    bar<int> tmp;
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-expr-arguments.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-expr-arguments.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/default-expr-arguments.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,324 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-class C { C(int a0 = 0); };
-
-template<>
-C<char>::C(int a0);
-
-struct S { }; // expected-note 3 {{candidate constructor (the implicit copy constructor)}}
-
-template<typename T> void f1(T a, T b = 10) { } // expected-error{{no viable conversion}} \
-// expected-note{{passing argument to parameter 'b' here}}
-
-template<typename T> void f2(T a, T b = T()) { }
-
-template<typename T> void f3(T a, T b = T() + T()); // expected-error{{invalid operands to binary expression ('S' and 'S')}}
-
-void g() {
-  f1(10);
-  f1(S()); // expected-note{{in instantiation of default function argument expression for 'f1<S>' required here}}
-  
-  f2(10);
-  f2(S());
-  
-  f3(10);
-  f3(S()); // expected-note{{in instantiation of default function argument expression for 'f3<S>' required here}}
-}
-
-template<typename T> struct F {
-  F(T t = 10); // expected-error{{no viable conversion}} \
-  // expected-note{{passing argument to parameter 't' here}}
-  void f(T t = 10); // expected-error{{no viable conversion}} \
-  // expected-note{{passing argument to parameter 't' here}}
-};
-
-struct FD : F<int> { };
-
-void g2() {
-  F<int> f;
-  FD fd;
-}
-
-void g3(F<int> f, F<struct S> s) {
-  f.f();
-  s.f(); // expected-note{{in instantiation of default function argument expression for 'f<S>' required here}}
-  
-  F<int> f2;
-  F<S> s2; // expected-note{{in instantiation of default function argument expression for 'F<S>' required here}}
-}
-
-template<typename T> struct G {
-  G(T) {}
-};
-
-void s(G<int> flags = 10) { }
-
-// Test default arguments
-template<typename T>
-struct X0 {
-  void f(T = T()); // expected-error{{no matching}}
-};
-
-template<typename U>
-void X0<U>::f(U) { }
-
-void test_x0(X0<int> xi) {
-  xi.f();
-  xi.f(17);
-}
-
-struct NotDefaultConstructible { // expected-note 2{{candidate}}
-  NotDefaultConstructible(int); // expected-note 2{{candidate}}
-};
-
-void test_x0_not_default_constructible(X0<NotDefaultConstructible> xn) {
-  xn.f(NotDefaultConstructible(17));
-  xn.f(42);
-  xn.f(); // expected-note{{in instantiation of default function argument}}
-}
-
-template<typename T>
-struct X1 {
-  typedef T value_type;
-  X1(const value_type& value = value_type());
-};
-
-void test_X1() {
-  X1<int> x1;
-}
-
-template<typename T>
-struct X2 {
-  void operator()(T = T()); // expected-error{{no matching}}
-};
-
-void test_x2(X2<int> x2i, X2<NotDefaultConstructible> x2n) {
-  x2i();
-  x2i(17);
-  x2n(NotDefaultConstructible(17));
-  x2n(); // expected-note{{in instantiation of default function argument}}
-}
-
-// PR5283
-namespace PR5283 {
-template<typename T> struct A {
-  A(T = 1); // expected-error 3 {{cannot initialize a parameter of type 'int *' with an rvalue of type 'int'}} \
-  // expected-note 3{{passing argument to parameter here}}
-};
-
-struct B : A<int*> { 
-  B();
-};
-B::B() { } // expected-note {{in instantiation of default function argument expression for 'A<int *>' required he}}
-
-struct C : virtual A<int*> {
-  C();
-};
-C::C() { } // expected-note {{in instantiation of default function argument expression for 'A<int *>' required he}}
-
-struct D {
-  D();
-  
-  A<int*> a;
-};
-D::D() { } // expected-note {{in instantiation of default function argument expression for 'A<int *>' required he}}
-}
-
-// PR5301
-namespace pr5301 {
-  void f(int, int = 0);
-
-  template <typename T>
-  void g(T, T = 0);
-
-  template <int I>
-  void i(int a = I);
-
-  template <typename T>
-  void h(T t) {
-    f(0);
-    g(1);
-    g(t);
-    i<2>();
-  }
-
-  void test() {
-    h(0);
-  }
-}
-
-// PR5810
-namespace PR5810 {
-  template<typename T>
-  struct allocator {
-    allocator() { int a[sizeof(T) ? -1 : -1]; } // expected-error2 {{array with a negative size}}
-  };
-  
-  template<typename T>
-  struct vector {
-    vector(const allocator<T>& = allocator<T>()) {} // expected-note2 {{instantiation of}}
-  };
-  
-  struct A { };
-  struct B { };
-
-  template<typename>
-  void FilterVTs() {
-    vector<A> Result;
-  }
-  
-  void f() {
-    vector<A> Result;
-  }
-
-  template<typename T>
-  struct X {
-    vector<B> bs;
-    X() { }
-  };
-
-  void f2() {
-    X<float> x; // expected-note{{member function}}
-  }
-}
-
-template<typename T> void f4(T, int = 17);
-template<> void f4<int>(int, int);
-
-void f4_test(int i) {
-  f4(i);
-}
-
-// Instantiate for initialization
-namespace InstForInit {
-  template<typename T>
-  struct Ptr {
-    typedef T* type;
-    Ptr(type);
-  };
-
-  template<typename T>
-  struct Holder {
-    Holder(int i, Ptr<T> ptr = 0);
-  };
-
-  void test_holder(int i) {
-    Holder<int> h(i);
-  }
-};
-
-namespace PR5810b {
-  template<typename T>
-  T broken() {
-    T t;
-    double**** not_it = t;
-  }
-
-  void f(int = broken<int>());
-  void g() { f(17); }
-}
-
-namespace PR5810c {
-  template<typename T>
-  struct X { 
-    X() { 
-      T t;
-      double *****p = t; // expected-error{{cannot initialize a variable of type 'double *****' with an lvalue of type 'int'}}
-    }
-    X(const X&) { }
-  };
-
-  struct Y : X<int> { // expected-note{{instantiation of}}
-  };
-
-  void f(Y y = Y());
-
-  void g() { f(); }
-}
-
-namespace PR8127 {
-  template< typename T > class PointerClass {
-  public:
-    PointerClass( T * object_p ) : p_( object_p ) {
-      p_->acquire();
-    }
-  private:    
-    T * p_;
-  };
-
-  class ExternallyImplementedClass;
-
-  class MyClass {
-    void foo( PointerClass<ExternallyImplementedClass> = 0 );
-  };
-}
-
-namespace rdar8427926 {
-  template<typename T>
-  struct Boom {
-    ~Boom() {
-      T t;
-      double *******ptr = t; // expected-error 2{{cannot initialize}}
-    }
-  };
-
-  Boom<float> *bfp;
-
-  struct X {
-    void f(Boom<int> = Boom<int>()) { } // expected-note{{requested here}}
-    void g(int x = (delete bfp, 0)); // expected-note{{requested here}}
-  };
-
-  void test(X *x) {
-    x->f();
-    x->g();
-  }
-}
-
-namespace PR8401 {
-  template<typename T> 
-  struct A { 
-    A() { T* x = 1; } // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}}
-  };
-
-  template<typename T>
-  struct B {
-    B(const A<T>& a = A<T>()); // expected-note{{in instantiation of}}
-  };
-
-  void f(B<int> b = B<int>());
-
-  void g() {
-    f();
-  }
-}
-
-namespace PR12581 {
-  const int a = 0;
-  template < typename > struct A;
-  template < typename MatrixType, int =
-  A < MatrixType >::Flags ? : A < MatrixType >::Flags & a > class B;
-  void
-  fn1 ()
-  {
-  }
-}
-
-namespace PR13758 {
-  template <typename T> struct move_from {
-    T invalid;
-  };
-  template <class K>
-  struct unordered_map {
-    explicit unordered_map(int n = 42);
-    unordered_map(move_from<K> other);
-  };
-  template<typename T>
-  void StripedHashTable() {
-    new unordered_map<void>();
-    new unordered_map<void>;
-  }
-  void tt() {
-    StripedHashTable<int>();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/delegating-constructors.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/delegating-constructors.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/delegating-constructors.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,49 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify 
-
-namespace PR10457 {
-
-  class string
-  {
-    string(const char* str, unsigned);
-
-  public:
-    template <unsigned N>
-    string(const char (&str)[N])
-      : string(str) {} // expected-error{{constructor for 'string<6>' creates a delegation cycle}}
-  };
-
-  void f() {
-    string s("hello");
-  }
-
-  struct Foo {
-   Foo(int) { }
-
-
-   template <typename T>
-   Foo(T, int i) : Foo(i) { }
-};
-
-  void test_Foo()
-  {
-    Foo f(1, 1);
-  }
-}
-
-namespace PR12890 {
-  class Document
-  {
-  public:
-      Document() = default;
-
-      template <class T>
-      explicit
-      Document(T&& t) : Document()
-      {
-      }
-  };
-  void f()
-  {
-      Document d(1);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-base-classes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-base-classes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-base-classes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,136 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T, typename U>
-struct X0 : T::template apply<U> { 
-  X0(U u) : T::template apply<U>(u) { }
-};
-
-template<typename T, typename U>
-struct X1 : T::apply<U> { }; // expected-error{{use 'template' keyword to treat 'apply' as a dependent template name}}
-
-template<typename T>
-struct X2 : vector<T> { }; // expected-error{{unknown template name 'vector'}}
-
-namespace PR6031 {
-  template<typename T>
-  struct A;
-
-  template <class X>
-  struct C { };
-
-  template <class TT>
-  struct II {
-    typedef typename A<TT>::type type;
-  };
-
-  template <class TT>
-  struct FI : II<TT>
-  {
-    C<typename FI::type> a;
-  };
-
-  template <class TT>
-  struct FI2
-  {
-    C<typename FI2::type> a; // expected-error{{no type named 'type' in 'FI2<TT>'}}
-  };
-
-  template<typename T>
-  struct Base {
-    class Nested { };
-    template<typename U> struct MemberTemplate { };
-    int a;
-  };
-
-  template<typename T>
-  struct HasDepBase : Base<T> {
-    int foo() {
-      class HasDepBase::Nested nested;
-      typedef typename HasDepBase::template MemberTemplate<T>::type type;
-      return HasDepBase::a;
-    }
-  };
-
-  template<typename T>
-  struct NoDepBase {
-    int foo() {
-      class NoDepBase::Nested nested; // expected-error{{no class named 'Nested' in 'NoDepBase<T>'}}
-      typedef typename NoDepBase::template MemberTemplate<T>::type type; // expected-error{{'MemberTemplate' following the 'template' keyword does not refer to a template}} \
-      // FIXME: expected-error{{unqualified-id}}
-      return NoDepBase::a; // expected-error{{no member named 'a' in 'NoDepBase<T>'}}
-    }
-  };
-}
-
-namespace Ambig {
-  template<typename T>
-  struct Base1 {
-    typedef int type; // expected-note{{member found by ambiguous name lookup}}
-  };
-
-  struct Base2 {
-    typedef float type; // expected-note{{member found by ambiguous name lookup}}
-  };
-
-  template<typename T>
-  struct Derived : Base1<T>, Base2 {
-    typedef typename Derived::type type; // expected-error{{member 'type' found in multiple base classes of different types}}
-    type *foo(float *fp) { return fp; }
-  };
-
-  Derived<int> di; // expected-note{{instantiation of}}
-}
-
-namespace PR6081 {
-  template<typename T>
-  struct A { };
-
-  template<typename T>
-  class B : public A<T> 
-  {
-  public:
-    template< class X >
-    void f0(const X & k)
-    {
-      this->template f1<int>()(k);
-    }
-  };
-
-  template<typename T>
-  class C
-  {
-  public:
-    template< class X >
-    void f0(const X & k)
-    {
-      this->template f1<int>()(k); // expected-error{{'f1' following the 'template' keyword does not refer to a template}} \
-      // FIXME: expected-error{{unqualified-id}} \
-      // expected-error{{function-style cast or type construction}} \
-      // expected-error{{expected expression}}
-    }
-  };
-}
-
-namespace PR6413 {
-  template <typename T> class Base_A { };
-  
-  class Base_B { };
-  
-  template <typename T>
-  class Derived
-    : public virtual Base_A<T>
-    , public virtual Base_B
-  { };
-}
-
-namespace PR5812 {
-  template <class T> struct Base { 
-    Base* p; 
-  }; 
-
-  template <class T> struct Derived: public Base<T> { 
-    typename Derived::Base* p; // meaning Derived::Base<T> 
-  };
-
-  Derived<int> di;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-base-member-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-base-member-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-base-member-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR4381
-template<class T> struct X {};
-template<typename T> struct Y : public X<T>::X { };
-
-// PR4621
-class A1 {
-  A1(int x) {}
-};
-template<class C> class B1 : public A1 {
-  B1(C x) : A1(x.x) {}
-};
-class A2 { A2(int x, int y); };
-template <class C> class B2 {
-  A2 x;
-  B2(C x) : x(x.x, x.y) {}
-};
-template <class C> class B3 {
-  C x;
-  B3() : x(1,2) {}
-};
-
-// PR4627
-template<typename _Container> class insert_iterator {
-    _Container* container;
-    insert_iterator(_Container& __x) : container(&__x) {}
-};
-
-// PR4763
-template<typename T> struct s0 {};
-template<typename T> struct s0_traits {};
-template<typename T> struct s1 : s0<typename s0_traits<T>::t0> {
-  s1() {}
-};
-
-// PR6062
-namespace PR6062 {
-  template <typename T>
-  class A : public T::type
-  {
-    A() : T::type()
-    {  
-    }
-    
-    template <typename U>
-    A(U const& init)
-      : T::type(init)
-    { }
-
-    template<typename U>
-    A(U& init) : U::other_type(init) { }
-  };
-}
-
-template<typename T, typename U>
-struct X0 : T::template apply<U> {
-  X0(int i) : T::template apply<U>(i) { }
-};
-
-// PR7698
-namespace PR7698 {
-  template<typename Type>
-  class A {
-    char mA[sizeof(Type *)];
-    A(): mA() {}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-class-member-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-class-member-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-class-member-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR7837
-
-template<class T> struct C1 { void operator()(T); };
-template<class T> struct C2; // expected-note {{template is declared here}}
-template<class T> void foo(T);
-void wrap() {
-  foo(&C1<int>::operator());
-  foo(&C1<int>::operator+); // expected-error {{no member named 'operator+' in 'C1<int>'}}
-  foo(&C2<int>::operator+); // expected-error {{implicit instantiation of undefined template 'C2<int>'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR5908
-template <typename Iterator>
-void Test(Iterator it) {
-  *(it += 1);
-}
-
-namespace PR6045 {
-  template<unsigned int r>
-  class A
-  {
-    static const unsigned int member = r;
-    void f();
-  };
-  
-  template<unsigned int r>
-  const unsigned int A<r>::member;
-  
-  template<unsigned int r>
-  void A<r>::f() 
-  {
-    unsigned k;
-    (void)(k % member);
-  }
-}
-
-namespace PR7198 {
-  struct A
-  {
-    ~A() { }
-  };
-
-  template<typename T>
-  struct B {
-    struct C : A {};
-    void f()
-    {
-      C c = C();
-    }
-  };
-}
-
-namespace PR7724 {
-  template<typename OT> int myMethod()
-  { return 2 && sizeof(OT); }
-}
-
-namespace test4 {
-  template <typename T> T *addressof(T &v) {
-    return reinterpret_cast<T*>(
-             &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
-  }
-}
-
-namespace test5 {
-  template <typename T> class chained_map {
-    int k;
-    void lookup() const {
-      int &v = (int &)k;
-    }
-  };
-}
-
-namespace PR8795 {
-  template <class _CharT> int test(_CharT t)
-  {
-    int data [] = {
-      sizeof(_CharT) > sizeof(char)
-    };
-    return data[0];
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-names-no-std.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-names-no-std.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-names-no-std.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-//
-// The whole point of this test is to verify certain diagnostics work in the
-// absence of namespace 'std'.
-
-namespace PR10053 {
-  namespace ns {
-    struct Data {};
-  }
-
-  template<typename T> struct A {
-    T t;
-    A() {
-      f(t); // expected-error {{call to function 'f' that is neither visible in the template definition nor found by argument-dependent lookup}}
-    }
-  };
-
-  void f(ns::Data); // expected-note {{in namespace 'PR10053::ns'}}
-
-  A<ns::Data> a; // expected-note {{in instantiation of member function}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-names.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-names.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-names.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,390 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 
-
-typedef double A;
-template<typename T> class B {
-  typedef int A;
-};
-
-template<typename T> struct X : B<T> {
-  static A a;
-};
-
-int a0[sizeof(X<int>::a) == sizeof(double) ? 1 : -1];
-
-// PR4365.
-template<class T> class Q;
-template<class T> class R : Q<T> {T current;};
-
-
-namespace test0 {
-  template <class T> class Base {
-  public:
-    void instance_foo();
-    static void static_foo();
-    class Inner {
-    public:
-      void instance_foo();
-      static void static_foo();
-    };
-  };
-
-  template <class T> class Derived1 : Base<T> {
-  public:
-    void test0() {
-      Base<T>::static_foo();
-      Base<T>::instance_foo();
-    }
-
-    void test1() {
-      Base<T>::Inner::static_foo();
-      Base<T>::Inner::instance_foo(); // expected-error {{call to non-static member function without an object argument}}
-    }
-
-    static void test2() {
-      Base<T>::static_foo();
-      Base<T>::instance_foo(); // expected-error {{call to non-static member function without an object argument}}
-    }
-
-    static void test3() {
-      Base<T>::Inner::static_foo();
-      Base<T>::Inner::instance_foo(); // expected-error {{call to non-static member function without an object argument}}
-    }
-  };
-
-  template <class T> class Derived2 : Base<T>::Inner {
-  public:
-    void test0() {
-      Base<T>::static_foo();
-      Base<T>::instance_foo(); // expected-error {{call to non-static member function without an object argument}}
-    }
-
-    void test1() {
-      Base<T>::Inner::static_foo();
-      Base<T>::Inner::instance_foo();
-    }
-
-    static void test2() {
-      Base<T>::static_foo();
-      Base<T>::instance_foo(); // expected-error {{call to non-static member function without an object argument}}
-    }
-
-    static void test3() {
-      Base<T>::Inner::static_foo();
-      Base<T>::Inner::instance_foo(); // expected-error {{call to non-static member function without an object argument}}
-    }
-  };
-
-  void test0() {
-    Derived1<int> d1;
-    d1.test0();
-    d1.test1(); // expected-note {{in instantiation of member function}}
-    d1.test2(); // expected-note {{in instantiation of member function}}
-    d1.test3(); // expected-note {{in instantiation of member function}}
-
-    Derived2<int> d2;
-    d2.test0(); // expected-note {{in instantiation of member function}}
-    d2.test1();
-    d2.test2(); // expected-note {{in instantiation of member function}}
-    d2.test3(); // expected-note {{in instantiation of member function}}
-  }
-}
-
-namespace test1 {
-  template <class T> struct Base {
-    void foo(T); // expected-note {{must qualify identifier to find this declaration in dependent base class}}
-  };
-
-  template <class T> struct Derived : Base<T> {
-    void doFoo(T v) {
-      foo(v); // expected-error {{use of undeclared identifier}}
-    }
-  };
-
-  template struct Derived<int>; // expected-note {{requested here}}
-}
-
-namespace PR8966 {
-  template <class T>
-  class MyClassCore
-  {
-  };
-
-  template <class T>
-  class MyClass : public MyClassCore<T>
-  {
-  public:
-    enum  {
-      N
-    };
-
-    // static member declaration
-    static const char* array [N];
-
-    void f() {
-      MyClass<T>::InBase = 17;
-    }
-  };
-
-  // static member definition
-  template <class T>
-  const char* MyClass<T>::array [MyClass<T>::N] = { "A", "B", "C" };
-}
-
-namespace std {
-  inline namespace v1 {
-    template<typename T> struct basic_ostream;
-  }
-  namespace inner {
-    template<typename T> struct vector {};
-  }
-  using inner::vector;
-  template<typename T, typename U> struct pair {};
-  typedef basic_ostream<char> ostream;
-  extern ostream cout;
-  std::ostream &operator<<(std::ostream &out, const char *);
-}
-
-namespace PR10053 {
-  template<typename T> struct A {
-    T t;
-    A() {
-      f(t); // expected-error {{call to function 'f' that is neither visible in the template definition nor found by argument-dependent lookup}}
-    }
-  };
-
-  void f(int&); // expected-note {{'f' should be declared prior to the call site}}
-
-  A<int> a; // expected-note {{in instantiation of member function}}
-
-
-  namespace N {
-    namespace M {
-      template<typename T> int g(T t) {
-        f(t); // expected-error {{call to function 'f' that is neither visible in the template definition nor found by argument-dependent lookup}}
-      };
-    }
-
-    void f(char&); // expected-note {{'f' should be declared prior to the call site}}
-  }
-
-  void f(char&);
-
-  int k = N::M::g<char>(0);; // expected-note {{in instantiation of function}}
-
-
-  namespace O {
-    void f(char&); // expected-note {{candidate function not viable}}
-
-    template<typename T> struct C {
-      static const int n = f(T()); // expected-error {{no matching function}}
-    };
-  }
-
-  int f(double); // no note, shadowed by O::f
-  O::C<double> c; // expected-note {{requested here}}
-
-
-  // Example from www/compatibility.html
-  namespace my_file {
-    template <typename T> T Squared(T x) {
-      return Multiply(x, x); // expected-error {{neither visible in the template definition nor found by argument-dependent lookup}}
-    }
-
-    int Multiply(int x, int y) { // expected-note {{should be declared prior to the call site}}
-      return x * y;
-    }
-
-    int main() {
-      Squared(5); // expected-note {{here}}
-    }
-  }
-
-  // Example from www/compatibility.html
-  namespace my_file2 {
-    template<typename T>
-    void Dump(const T& value) {
-      std::cout << value << "\n"; // expected-error {{neither visible in the template definition nor found by argument-dependent lookup}}
-    }
-
-    namespace ns {
-      struct Data {};
-    }
-
-    std::ostream& operator<<(std::ostream& out, ns::Data data) { // expected-note {{should be declared prior to the call site or in namespace 'PR10053::my_file2::ns'}}
-      return out << "Some data";
-    }
-
-    void Use() {
-      Dump(ns::Data()); // expected-note {{here}}
-    }
-  }
-
-  namespace my_file2_a {
-    template<typename T>
-    void Dump(const T &value) {
-      print(std::cout, value); // expected-error 4{{neither visible in the template definition nor found by argument-dependent lookup}}
-    }
-
-    namespace ns {
-      struct Data {};
-    }
-    namespace ns2 {
-      struct Data {};
-    }
-
-    std::ostream &print(std::ostream &out, int); // expected-note-re {{should be declared prior to the call site$}}
-    std::ostream &print(std::ostream &out, ns::Data); // expected-note {{should be declared prior to the call site or in namespace 'PR10053::my_file2_a::ns'}}
-    std::ostream &print(std::ostream &out, std::vector<ns2::Data>); // expected-note {{should be declared prior to the call site or in namespace 'PR10053::my_file2_a::ns2'}}
-    std::ostream &print(std::ostream &out, std::pair<ns::Data, ns2::Data>); // expected-note {{should be declared prior to the call site or in an associated namespace of one of its arguments}}
-
-    void Use() {
-      Dump(0); // expected-note {{requested here}}
-      Dump(ns::Data()); // expected-note {{requested here}}
-      Dump(std::vector<ns2::Data>()); // expected-note {{requested here}}
-      Dump(std::pair<ns::Data, ns2::Data>()); // expected-note {{requested here}}
-    }
-  }
-
-  namespace unary {
-    template<typename T>
-    T Negate(const T& value) {
-      return !value; // expected-error {{call to function 'operator!' that is neither visible in the template definition nor found by argument-dependent lookup}}
-    }
-
-    namespace ns {
-      struct Data {};
-    }
-
-    ns::Data operator!(ns::Data); // expected-note {{should be declared prior to the call site or in namespace 'PR10053::unary::ns'}}
-
-    void Use() {
-      Negate(ns::Data()); // expected-note {{requested here}}
-    }
-  }
-}
-
-namespace PR10187 {
-  namespace A1 {
-    template<typename T>
-    struct S {
-      void f() {
-        for (auto &a : e)
-          __range(a); // expected-error {{undeclared identifier '__range'}}
-      }
-      int e[10];
-    };
-    void g() {
-      S<int>().f(); // expected-note {{here}}
-    }
-  }
-
-  namespace A2 {
-    template<typename T>
-    struct S {
-      void f() {
-        for (auto &a : e)
-          __range(a); // expected-error {{undeclared identifier '__range'}}
-      }
-      T e[10];
-    };
-    void g() {
-      S<int>().f(); // expected-note {{here}}
-    }
-    struct X {};
-    void __range(X);
-    void h() {
-      S<X>().f();
-    }
-  }
-
-  namespace B {
-    template<typename T> void g(); // expected-note {{not viable}}
-    template<typename T> void f() {
-      g<int>(T()); // expected-error {{no matching function}}
-    }
-
-    namespace {
-      struct S {};
-    }
-    void g(S);
-
-    template void f<S>(); // expected-note {{here}}
-  }
-}
-
-namespace rdar11242625 {
-
-template <typename T>
-struct Main {
-  struct default_names {
-    typedef int id;
-  };
-
-  template <typename T2 = typename default_names::id>
-  struct TS {
-    T2 q;
-  };
-};
-
-struct Sub : public Main<int> {
-  TS<> ff;
-};
-
-int arr[sizeof(Sub)];
-
-}
-
-namespace PR11421 {
-template < unsigned > struct X {
-  static const unsigned dimension = 3;
-  template<unsigned dim=dimension> 
-  struct Y: Y<dim> { }; // expected-error{{circular inheritance between 'Y<dim>' and 'Y<dim>'}}
-};
-typedef X<3> X3;
-X3::Y<>::iterator it; // expected-error {{no type named 'iterator' in 'PR11421::X<3>::Y<3>'}}
-}
-
-namespace rdar12629723 {
-  template<class T>
-  struct X {
-    struct C : public C { }; // expected-error{{circular inheritance between 'rdar12629723::X::C' and 'rdar12629723::X::C'}}
-
-    struct B;
-
-    struct A : public B {  // expected-note{{'rdar12629723::X::A' declared here}}
-      virtual void foo() { }
-    };
-    struct B;
-
-    struct D : T::foo { };
-    struct E : D { };
-  };
-
-  template<class T>
-  struct X<T>::B : public A {  // expected-error{{circular inheritance between 'rdar12629723::X::A' and 'rdar12629723::X::B'}}
-    virtual void foo() { }
-  };
-}
-
-namespace test_reserved_identifiers {
-  template<typename A, typename B> void tempf(A a, B b) {
-    a + b;  // expected-error{{call to function 'operator+' that is neither visible in the template definition nor found by argument-dependent lookup}}
-  }
-  namespace __gnu_cxx { struct X {}; }
-  namespace ns { struct Y {}; }
-  void operator+(__gnu_cxx::X, ns::Y);  // expected-note{{or in namespace 'test_reserved_identifiers::ns'}}
-  void test() {
-    __gnu_cxx::X x;
-    ns::Y y;
-    tempf(x, y);  // expected-note{{in instantiation of}}
-  }
-}
-
-// This test must live in the global namespace.
-struct PR14695_X {};
-// FIXME: This note is bogus; it is the using directive which would need to move
-// to prior to the call site to fix the problem.
-namespace PR14695_A { void PR14695_f(PR14695_X); } // expected-note {{'PR14695_f' should be declared prior to the call site or in the global namespace}}
-template<typename T> void PR14695_g(T t) { PR14695_f(t); } // expected-error {{call to function 'PR14695_f' that is neither visible in the template definition nor found by argument-dependent lookup}}
-using namespace PR14695_A;
-template void PR14695_g(PR14695_X); // expected-note{{requested here}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-sized_array.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-sized_array.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-sized_array.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
-
-template<int N>
-void f() {
-  int a[] = { 1, 2, 3, N };
-  unsigned numAs = sizeof(a) / sizeof(int);
-}
-
-template void f<17>();
-
-
-template<int N>
-void f1() {
-  int a0[] = {}; // expected-warning{{zero}}
-  int a1[] = { 1, 2, 3, N };
-  int a3[sizeof(a1)/sizeof(int) != 4? 1 : -1]; // expected-error{{negative}}
-}
-
-namespace PR13788 {
-  template <unsigned __N>
-  struct S {
-    int V;
-  };
-  template <int N>
-  void foo() {
-    S<0> arr[N] = {{ 4 }};
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-template-recover.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-template-recover.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-template-recover.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,60 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, typename U, int N>
-struct X {
-  void f(T* t) {
-    t->f0<U>(); // expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}}
-    t->f0<int>(); // expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}}
-
-    t->operator+<U const, 1>(); // expected-error{{use 'template' keyword to treat 'operator +' as a dependent template name}}
-    t->f1<int const, 2>(); // expected-error{{use 'template' keyword to treat 'f1' as a dependent template name}}
-
-    T::getAs<U>(); // expected-error{{use 'template' keyword to treat 'getAs' as a dependent template name}}
-    t->T::getAs<U>(); // expected-error{{use 'template' keyword to treat 'getAs' as a dependent template name}}
-
-    // FIXME: We can't recover from these yet
-    (*t).f2<N>(); // expected-error{{expected expression}}
-    (*t).f2<0>(); // expected-error{{expected expression}}
-  }
-};
-
-namespace PR9401 {
-  // From GCC PR c++/45558
-  template <typename S, typename T>
-  struct C
-  {
-    template <typename U>
-    struct B
-    {
-      template <typename W>
-      struct E
-      {
-        explicit E(const W &x) : w(x) {}
-        const W &w;
-      };
-    };
-  };
-
-  struct F;
-  template <typename X>
-  struct D
-  {
-    D() {}
-  };
-
-  const D<F> g;
-  template <typename S, typename T>
-  struct A
-  {
-    template <typename U>
-    struct B : C<S, T>::template B<U>
-    {
-      typedef typename C<S, T>::template B<U> V;
-      static const D<typename V::template E<D<F> > > a;
-    };
-  };
-
-  template <typename S, typename T>
-  template <typename U>
-  const D<typename C<S, T>::template B<U>::template E<D<F> > >
-  A<S, T>::B<U>::a = typename C<S, T>::template B<U>::template E<D<F> >(g);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-type-identity.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-type-identity.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/dependent-type-identity.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// This test concerns the identity of dependent types within the
-// canonical type system. This corresponds to C++ [temp.type], which
-// specifies type equivalence within a template.
-//
-// FIXME: template template parameters
-
-namespace N {
-  template<typename T>
-  struct X2 {
-    template<typename U>
-    struct apply {
-      typedef U* type;
-    };
-  };
-}
-
-namespace Nalias = N;
-
-template<typename T>
-struct X0 { };
-
-using namespace N;
-
-template<typename T, typename U>
-struct X1 {
-  typedef T type;
-  typedef U U_type;
-
-  void f0(T); // expected-note{{previous}}
-  void f0(U);
-  void f0(type); // expected-error{{redeclar}}
-
-  void f1(T*); // expected-note{{previous}}
-  void f1(U*);
-  void f1(type*); // expected-error{{redeclar}}
-
-  void f2(X0<T>*); // expected-note{{previous}}
-  void f2(X0<U>*);
-  void f2(X0<type>*); // expected-error{{redeclar}}
-
-  void f3(X0<T>*); // expected-note{{previous}}
-  void f3(X0<U>*);
-  void f3(::X0<type>*); // expected-error{{redeclar}}  
-
-  void f4(typename T::template apply<U>*); // expected-note{{previous}}
-  void f4(typename U::template apply<U>*);
-  void f4(typename type::template apply<T>*);
-  void f4(typename type::template apply<U_type>*); // expected-error{{redeclar}}
-
-  void f5(typename T::template apply<U>::type*); // expected-note{{previous}}
-  void f5(typename U::template apply<U>::type*);
-  void f5(typename U::template apply<T>::type*);
-  void f5(typename type::template apply<T>::type*);
-  void f5(typename type::template apply<U_type>::type*); // expected-error{{redeclar}}
-
-  void f6(typename N::X2<T>::template apply<U> *); // expected-note{{previous}}
-  void f6(typename N::X2<U>::template apply<U> *);
-  void f6(typename N::X2<U>::template apply<T> *);
-  void f6(typename ::N::X2<type>::template apply<U_type> *); // expected-error{{redeclar}}
-  
-  void f7(typename N::X2<T>::template apply<U> *); // expected-note{{previous}}
-  void f7(typename N::X2<U>::template apply<U> *);
-  void f7(typename N::X2<U>::template apply<T> *);
-  void f7(typename X2<type>::template apply<U_type> *); // expected-error{{redeclar}}
-
-  void f8(typename N::X2<T>::template apply<U> *); // expected-note{{previous}}
-  void f8(typename N::X2<U>::template apply<U> *);
-  void f8(typename N::X2<U>::template apply<T> *);
-  void f8(typename ::Nalias::X2<type>::template apply<U_type> *); // expected-error{{redeclar}}
-};
-
-namespace PR6851 {
-  template <bool v>
-  struct S;
-
-  struct N {
-    template <bool w>
-    S< S<w>::cond && 1 > foo();
-  };
-
-  struct Alien;
-  bool operator&&(const Alien&, const Alien&);
-
-  template <bool w>
-  S< S<w>::cond && 1 > N::foo() { }
-}
-
-namespace PR7460 {
-  template <typename T>
-  struct TemplateClass2
-  {
-    enum { SIZE = 100 };
-    static T member[SIZE];
-  };
-
-  template <typename T>
-  T TemplateClass2<T>::member[TemplateClass2<T>::SIZE];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/derived.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/derived.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/derived.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> class vector2 {};
-template<typename T> class vector : vector2<T> {};
-
-template<typename T> void Foo2(vector2<const T*> V) {}  // expected-note{{candidate template ignored: can't deduce a type for 'T' which would make 'const T' equal 'int'}}
-template<typename T> void Foo(vector<const T*> V) {} // expected-note {{candidate template ignored: can't deduce a type for 'T' which would make 'const T' equal 'int'}}
-
-void test() {
-  Foo2(vector2<int*>());  // expected-error{{no matching function for call to 'Foo2'}}
-  Foo(vector<int*>());  // expected-error{{no matching function for call to 'Foo'}}
-}
-
-namespace rdar13267210 {
-  template < typename T > class A {
-    BaseTy; // expected-error{{C++ requires a type specifier for all declarations}}
-  };
-
-  template < typename T, int N > class C: A < T > {};
-
-  class B {
-    C<long, 16> ExternalDefinitions;
-    C<long, 64> &Record;
-
-    void AddSourceLocation(A<long> &R); // expected-note{{passing argument to parameter 'R' here}}
-    void AddTemplateKWAndArgsInfo() {
-      AddSourceLocation(Record); // expected-error{{non-const lvalue reference to type}}
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/destructor-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/destructor-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/destructor-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename A> class s0 {
-
-  template<typename B> class s1 : public s0<A> {
-    ~s1() {}
-    s0<A> ms0;
-  };
-
-};
-
-struct Incomplete;
-
-template<typename T>
-void destroy_me(T me) {
-  me.~T();
-}
-
-template void destroy_me(Incomplete*);
-
-namespace PR6152 {
-  template<typename T> struct X { void f(); };
-  template<typename T> struct Y { };
-  template<typename T>
-  void X<T>::f() {
-    Y<T> *y;
-    y->template Y<T>::~Y();
-    y->template Y<T>::~Y<T>();
-    y->~Y();
-  }
-  
-  template struct X<int>;
-}
-
-namespace cvquals {
-  template<typename T>
-  void f(int *ptr) {
-    ptr->~T();
-  }
-
-  template void f<const volatile int>(int *);
-}
-
-namespace PR7239 {
-  template<class E> class A { };
-  class B {
-    void f() {
-      A<int>* x;
-      x->A<int>::~A<int>();
-    }
-  };
-}
-
-namespace PR7904 {
-  struct Foo {
-    template <int i> ~Foo() {} // expected-error{{destructor cannot be declared as a template}}
-  };
-  Foo f;
-}
-
-namespace rdar13140795 {
-  template <class T> class shared_ptr {};
-
-  template <typename T> struct Marshal {
-    static int gc();
-  };
-
-
-  template <typename T> int Marshal<T>::gc() {
-    shared_ptr<T> *x;
-    x->template shared_ptr<T>::~shared_ptr();
-    return 0;
-  }
-
-  void test() {
-    Marshal<int>::gc();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/elaborated-type-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/elaborated-type-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/elaborated-type-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace PR6915 {
-  template <typename T>
-  class D {
-    enum T::X v; // expected-error{{use of 'X' with tag type that does not match previous declaration}} \
-    // expected-error{{no enum named 'X' in 'PR6915::D3'}}
-  };
-
-  struct D1 {
-    enum X { value };
-  };
-  struct D2 { 
-    class X { }; // expected-note{{previous use is here}}
-  };
-  struct D3 { };
-
-  template class D<D1>;
-  template class D<D2>; // expected-note{{in instantiation of}}
-  template class D<D3>; // expected-note{{in instantiation of}}
-}
-
-template<typename T>
-struct DeclOrDef {
-  enum T::foo; // expected-error{{nested name specifier for a declaration cannot depend on a template parameter}}
-  enum T::bar { // expected-error{{nested name specifier for a declaration cannot depend on a template parameter}}
-    value 
-  };
-};
-
-namespace PR6649 {
-  template <typename T> struct foo { 
-    class T::bar;  // expected-error{{nested name specifier for a declaration cannot depend on a template parameter}}
-    class T::bar { int x; }; // expected-error{{nested name specifier for a declaration cannot depend on a template parameter}}
-  };
-}
-
-namespace rdar8568507 {
-  template <class T> struct A *makeA(T t);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/enum-argument.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/enum-argument.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/enum-argument.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-enum Enum { val = 1 };
-template <Enum v> struct C {
-  typedef C<v> Self;
-};
-template struct C<val>;
-
-template<typename T>
-struct get_size {
-  static const unsigned value = sizeof(T);
-};
-
-template<typename T>
-struct X0 {
-  enum {
-    Val1 = get_size<T>::value,
-    Val2,
-    SumOfValues = Val1 + Val2
-  };
-};
-
-X0<int> x0i;
-
-namespace rdar8020920 {
-  template<typename T>
-  struct X {
-    enum { e0 = 32 };
-
-    unsigned long long bitfield : e0;
-
-    void f(int j) {
-      bitfield + j;
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/enum-forward.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/enum-forward.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/enum-forward.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fms-compatibility %s
-
-template<typename T>
-struct X {
-  enum E *e;
-};
-
-X<int> xi;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/example-typelist.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/example-typelist.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/example-typelist.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,99 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// A simple cons-style typelist
-struct nil { };
-
-template<typename Head, typename Tail = nil>
-struct cons { 
-  typedef Head head;
-  typedef Tail tail;
-};
-
-// is_same trait, for testing
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-// metaprogram that computes the length of a list
-template<typename T> struct length;
-
-template<typename Head, typename Tail>
-struct length<cons<Head, Tail> > {
-  static const unsigned value = length<Tail>::value + 1;
-};
-
-template<>
-struct length<nil> {
-  static const unsigned value = 0;
-};
-
-typedef cons<unsigned char, 
-             cons<unsigned short, 
-                  cons<unsigned int,
-                       cons<unsigned long> > > > unsigned_inttypes;
-int length0[length<unsigned_inttypes>::value == 4? 1 : -1];
-
-// metaprogram that reverses a list
-
-// FIXME: I would prefer that this be a partial specialization, but
-// that requires partial ordering of class template partial
-// specializations.
-template<typename T> 
-class reverse {
-  typedef typename reverse<typename T::tail>::type reversed_tail;
-
-  typedef typename reverse<typename reversed_tail::tail>::type most_of_tail;
-
-public:
-  typedef cons<typename reversed_tail::head,
-               typename reverse<cons<typename T::head, most_of_tail> >::type> type;
-};
-
-template<typename Head>
-class reverse<cons<Head> > {
-public:
-  typedef cons<Head> type;
-};
-
-template<>
-class reverse<nil> {
-public:
-  typedef nil type;
-};
-
-int reverse0[is_same<reverse<unsigned_inttypes>::type,
-                     cons<unsigned long, 
-                          cons<unsigned int, 
-                               cons<unsigned short,
-                                    cons<unsigned char> > > > >::value? 1 : -1];
-
-// metaprogram that finds a type within a list
-
-// FIXME: I would prefer that this be a partial specialization, but
-// that requires partial ordering of class template partial
-// specializations.
-template<typename List, typename T>
-struct find : find<typename List::tail, T> { };
-
-template<typename Tail, typename T>
-struct find<cons<T, Tail>, T> {
-  typedef cons<T, Tail> type;
-};
-
-template<typename T>
-struct find<nil, T> {
-  typedef nil type;
-};
-
-int find0[is_same<find<unsigned_inttypes, unsigned int>::type,
-                       cons<unsigned int, cons<unsigned long> > >::value?
-             1 : -1];
-int find1[is_same<find<unsigned_inttypes, int>::type, nil>::value? 1 : -1];
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/explicit-instantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/explicit-instantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/explicit-instantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,107 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template void *; // expected-error{{expected unqualified-id}}
-
-template typedef void f0; // expected-error{{explicit instantiation of typedef}}
-
-int v0; // expected-note{{refers here}}
-template int v0; // expected-error{{does not refer}}
-
-template<typename T>
-struct X0 {
-  static T value;
-  
-  T f0(T x) {
-    return x + 1;  // expected-error{{invalid operands}}
-  } 
-  T* f0(T*, T*) { return T(); } // expected-warning{{expression which evaluates to zero treated as a null pointer constant of type 'int *'}}
-  
-  template<typename U>
-  T f0(T, U) { return T(); }
-};
-
-template<typename T>
-T X0<T>::value; // expected-error{{no matching constructor}}
-
-template int X0<int>::value;
-
-struct NotDefaultConstructible { // expected-note{{candidate constructor (the implicit copy constructor)}}
-  NotDefaultConstructible(int); // expected-note{{candidate constructor}}
-};
-
-template NotDefaultConstructible X0<NotDefaultConstructible>::value; // expected-note{{instantiation}}
-
-template int X0<int>::f0(int);
-template int* X0<int>::f0(int*, int*); // expected-note{{in instantiation of member function 'X0<int>::f0' requested here}}
-template int X0<int>::f0(int, float);
-
-template int X0<int>::f0(int) const; // expected-error{{does not refer}}
-template int* X0<int>::f0(int*, float*); // expected-error{{does not refer}}
-
-struct X1 { };
-typedef int X1::*MemPtr;
-
-template MemPtr X0<MemPtr>::f0(MemPtr); // expected-note{{requested here}}
-
-struct X2 {
-  int f0(int); // expected-note{{refers here}}
-  
-  template<typename T> T f1(T) { return T(); }
-  template<typename T> T* f1(T*) { return 0; }
-
-  template<typename T, typename U> void f2(T, U*) { } // expected-note{{candidate}}
-  template<typename T, typename U> void f2(T*, U) { } // expected-note{{candidate}}
-};
-
-template int X2::f0(int); // expected-error{{not an instantiation}}
-
-template int *X2::f1(int *); // okay
-
-template void X2::f2(int *, int *); // expected-error{{ambiguous}}
-
-
-template<typename T> void print_type() { }
-
-template void print_type<int>();
-template void print_type<float>();
-
-template<typename T> void print_type(T*) { }
-
-template void print_type(int*);
-template void print_type<int>(float*); // expected-error{{does not refer}}
-
-void print_type(double*);
-template void print_type<double>(double*);
-
-// PR5069
-template<int I> void foo0 (int (&)[I + 1]) { }
-template void foo0<2> (int (&)[3]);
-
-namespace explicit_instantiation_after_implicit_instantiation {
-  template <int I> struct X0 { static int x; };
-  template <int I> int X0<I>::x;
-  void test1() { (void)&X0<1>::x; }
-  template struct X0<1>;
-}
-
-template<typename> struct X3 { };
-inline template struct X3<int>; // expected-warning{{ignoring 'inline' keyword on explicit template instantiation}}
-static template struct X3<float>; // expected-warning{{ignoring 'static' keyword on explicit template instantiation}}
-
-namespace PR7622 {
-  template<typename,typename=int>
-  struct basic_streambuf;
-
-  template<typename,typename>
-  struct basic_streambuf{friend bob<>()}; // expected-error{{unknown type name 'bob'}} \
-  // expected-error{{expected member name or ';' after declaration specifiers}}
-  template struct basic_streambuf<int>;
-}
-
-// Test that we do not crash.
-class TC1 {
-  class TC2 {
-    template // FIXME: error here.
-    void foo() { }
-   };
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/explicit-specialization-member.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/explicit-specialization-member.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/explicit-specialization-member.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-struct X0 {
-  typedef T* type;
-  
-  void f0(T);
-  void f1(type);
-};
-
-template<> void X0<char>::f0(char);
-template<> void X0<char>::f1(type);
-
-namespace PR6161 {
-  template<typename _CharT>
-  class numpunct : public locale::facet // expected-error{{use of undeclared identifier 'locale'}} \
-              // expected-error{{expected class name}}
-  {
-    static locale::id id; // expected-error{{use of undeclared identifier}}
-  };
-  numpunct<char>::~numpunct(); // expected-error{{expected the class name after '~' to name a destructor}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/ext-vector-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/ext-vector-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/ext-vector-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, unsigned Length> 
-struct make1 { 
-  typedef T __attribute__((ext_vector_type(Length))) type; 
-};
-
-void test_make1() {
-  make1<int, 5>::type x;
-  x.x = 4;
-}
-
-template<typename T, unsigned Length> 
-struct make2 { 
-  typedef T __attribute__((ext_vector_type(Length))) type; // expected-error{{zero vector size}}
-};
-
-int test_make2() {
-  make2<int, 0> x; // expected-note{{in instantiation of}} 
-}
-
-template<typename T, unsigned Length> 
-struct make3 { 
-  typedef T __attribute__((ext_vector_type(Length))) type; // expected-error{{invalid vector element type 's'}}
-};
-
-struct s {};
-
-int test_make3() {
-  make3<s, 3>x; // expected-note{{in instantiation of}} 
-}
-
-template<typename T, T Length> 
-struct make4 { 
-  typedef T __attribute__((ext_vector_type(Length))) type; 
-};
-
-int test_make4() {
-  make4<int, 4>::type x;
-  x.w = 7;
-}
-
-typedef int* int_ptr;
-template<unsigned Length>
-struct make5 {
-  typedef int_ptr __attribute__((ext_vector_type(Length))) type; // expected-error{{invalid vector element type}}
-};
-
-template<int Length>
-struct make6 {
-  typedef int __attribute__((ext_vector_type(Length))) type;
-};
-
-int test_make6() {
-  make6<4>::type x;
-  x.w = 7;
-
-  make6<2>::type y;
-  y.x = -1;
-  y.w = -1; // expected-error{{vector component access exceeds type}}
-}
-
-namespace Deduction {
-  template<typename T> struct X0;
-
-  template<typename T, unsigned N>
-  struct X0<T __attribute__((ext_vector_type(N)))> {
-    static const unsigned value = 0;
-  };
-
-  template<typename T>
-  struct X0<T __attribute__((ext_vector_type(4)))> {
-    static const unsigned value = 1;
-  };
-
-  template<unsigned N>
-  struct X0<float __attribute__((ext_vector_type(N)))> {
-    static const unsigned value = 2;
-  };
-
-  template<>
-  struct X0<float __attribute__((ext_vector_type(4)))> {
-    static const unsigned value = 3;
-  };
-
-  typedef int __attribute__((ext_vector_type(2))) int2;
-  typedef int __attribute__((ext_vector_type(4))) int4;
-  typedef float __attribute__((ext_vector_type(2))) float2;
-  typedef float __attribute__((ext_vector_type(4))) float4;
-
-  int array0[X0<int2>::value == 0? 1 : -1];
-  int array1[X0<int4>::value == 1? 1 : -1];
-  int array2[X0<float2>::value == 2? 1 : -1];
-  int array3[X0<float4>::value == 3? 1 : -1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/extern-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/extern-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/extern-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-class X0 {
-public:
-  void f(T t);
-  
-  struct Inner {
-    void g(T t);
-  };
-};
-
-template<typename T>
-void X0<T>::f(T t) {
-  t = 17; // expected-error{{incompatible}}
-}
-
-extern template class X0<int>;
-
-extern template class X0<int*>;
-
-template<typename T>
-void X0<T>::Inner::g(T t) {
-  t = 17; // expected-error{{incompatible}}
-}
-
-void test_intptr(X0<int*> xi, X0<int*>::Inner xii) {
-  xi.f(0);
-  xii.g(0);
-}
-
-extern template class X0<long*>; 
-
-void test_longptr(X0<long*> xl, X0<long*>::Inner xli) {
-  xl.f(0);
-  xli.g(0);
-}
-
-template class X0<long*>; // expected-note 2{{instantiation}}
-
-template<typename T>
-class X1 {
-public:
-  void f(T t) { t += 2; }
-  
-  void g(T t);
-};
-
-template<typename T>
-void X1<T>::g(T t) { 
-  t += 2; 
-}
-
-extern template class X1<void*>;
-
-void g_X1(X1<void*> x1, void *ptr) {
-  x1.g(ptr);
-}
-
-extern template void X1<const void*>::g(const void*);
-
-void g_X1_2(X1<const void *> x1, const void *ptr) {
-  x1.g(ptr);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/fibonacci.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/fibonacci.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/fibonacci.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-template<unsigned I>
-struct FibonacciEval;
-
-template<unsigned I>
-struct Fibonacci {
-  enum { value = FibonacciEval<I-1>::value + FibonacciEval<I-2>::value };
-};
-
-template<unsigned I>
-struct FibonacciEval {
-  enum { value = Fibonacci<I>::value };
-};
-
-template<> struct Fibonacci<0> {
-  enum { value = 0 };
-};
-
-template<> struct Fibonacci<1> {
-  enum { value = 1 };
-};
-
-int array5[Fibonacci<5>::value == 5? 1 : -1];
-int array10[Fibonacci<10>::value == 55? 1 : -1];
-
-template<unsigned I>
-struct FibonacciEval2;
-
-template<unsigned I>
-struct Fibonacci2 {
-  static const unsigned value 
-    = FibonacciEval2<I-1>::value + FibonacciEval2<I-2>::value;
-};
-
-template<unsigned I>
-struct FibonacciEval2 {
-  static const unsigned value = Fibonacci2<I>::value;
-};
-
-template<> struct Fibonacci2<0> {
-  static const unsigned value = 0;
-};
-
-template<> struct Fibonacci2<1> {
-  static const unsigned value = 1;
-};
-
-int array5_2[Fibonacci2<5>::value == 5? 1 : -1];
-int array10_2[Fibonacci2<10>::value == 55? 1 : -1];
-
-template<unsigned I>
-struct Fibonacci3 {
-  static const unsigned value = Fibonacci3<I-1>::value + Fibonacci3<I-2>::value;
-};
-
-template<> struct Fibonacci3<0> {
-  static const unsigned value = 0;
-};
-
-template<> struct Fibonacci3<1> {
-  static const unsigned value = 1;
-};
-
-int array5_3[Fibonacci3<5>::value == 5? 1 : -1];
-int array10_3[Fibonacci3<10>::value == 55? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/friend-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/friend-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/friend-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,324 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR5057
-namespace test0 {
-  namespace std {
-    class X {
-    public:
-      template<typename T> friend struct Y;
-    };
-  }
-
-  namespace std {
-    template<typename T> struct Y {};
-  }
-}
-
-namespace test1 {
-  template<typename T> void f1(T) { } // expected-note{{here}}
-
-  class X {
-    template<typename T> friend void f0(T);
-    template<typename T> friend void f1(T);
-  };
-
-  template<typename T> void f0(T) { }
-  template<typename T> void f1(T) { } // expected-error{{redefinition}}
-}
-
-// PR4768
-namespace test2 {
-  template<typename T> struct X0 {
-    template<typename U> friend struct X0;
-  };
-  
-  template<typename T> struct X0<T*> {
-    template<typename U> friend struct X0;
-  };
-
-  template<> struct X0<int> {
-    template<typename U> friend struct X0;
-  };
-
-  template<typename T> struct X1 {
-    template<typename U> friend void f2(U);
-    template<typename U> friend void f3(U);
-  };
-
-  template<typename U> void f2(U);
-
-  X1<int> x1i;
-  X0<int*> x0ip;
-
-  template<> void f2(int);
-
-  // FIXME: Should this declaration of f3 be required for the specialization of
-  // f3<int> (further below) to work? GCC and EDG don't require it, we do...
-  template<typename U> void f3(U);
-
-  template<> void f3(int);
-}
-
-// PR5332
-namespace test3 {
-  template <typename T> class Foo {
-    template <typename U>
-    friend class Foo;
-  };
-
-  Foo<int> foo;
-
-  template<typename T, T Value> struct X2a;
-
-  template<typename T, int Size> struct X2b;
-
-  template<typename T>
-  class X3 {
-    template<typename U, U Value> friend struct X2a;
-
-    // FIXME: the redeclaration note ends up here because redeclaration
-    // lookup ends up finding the friend target from X3<int>.
-    template<typename U, T Value> friend struct X2b; // expected-error {{template non-type parameter has a different type 'long' in template redeclaration}} \
-      // expected-note {{previous non-type template parameter with type 'int' is here}}
-  };
-
-  X3<int> x3i; // okay
-
-  X3<long> x3l; // expected-note {{in instantiation}}
-}
-
-// PR5716
-namespace test4 {
-  template<typename> struct A {
-    template<typename T> friend void f(const A<T>&);
-  };
-
-  template<typename T> void f(const A<T>&) {
-    int a[sizeof(T) ? -1 : -1]; // expected-error {{array with a negative size}}
-  }
-
-  void f() {
-    f(A<int>()); // expected-note {{in instantiation of function template specialization}}
-  }
-}
-
-namespace test5 {
-  class outer {
-    class foo;
-    template <typename T> friend struct cache;
-  };
-  class outer::foo {
-    template <typename T> friend struct cache;
-  };
-}
-
-// PR6022
-namespace PR6022 {
-  template <class T1, class T2 , class T3  > class A;
-
-  namespace inner {
-    template<class T1, class T2, class T3, class T> 
-    A<T1, T2, T3>& f0(A<T1, T2, T3>&, T);
-  } 
-
-  template<class T1, class T2, class T3>
-  class A {
-    template<class U1, class U2, class U3, class T>  
-    friend A<U1, U2, U3>& inner::f0(A<U1, U2, U3>&, T);
-  };
-}
-
-namespace FriendTemplateDefinition {
-  template<unsigned > struct int_c { };
-
-  template<typename T>
-  struct X {
-    template<unsigned N>
-    friend void f(X, int_c<N>) {
-      int value = N;
-    };
-  };
-
-  void test_X(X<int> x, int_c<5> i5) {
-    f(x, i5);
-  }
-}
-
-namespace PR7013a {
-  template<class > struct X0
-  {
-    typedef int type;
-  };
-  template<typename > struct X1
-  {
-  };
-  template<typename , typename T> struct X2
-  {
-    typename T::type e;
-  };
-  namespace N
-  {
-    template <typename = int, typename = X1<int> > struct X3
-    {
-      template <typename T1, typename T2, typename B> friend void op(X2<T1, T2>& , B);
-    };
-    template <typename Ch, typename Tr, typename B> void op(X2<Ch, Tr>& , B)
-    {
-      X2<int, Tr> s;
-    }
-  }
-  int n()
-  {
-    X2<int, X0<int> > ngs;
-    N::X3<> b;
-    op(ngs, b);
-    return 0;
-  }
-}
-
-namespace PR7013b {
-  template<class > struct X0
-  {
-    typedef int type;
-  };
-  template<typename > struct X1
-  {
-  };
-  template<typename , typename T> struct X2
-  {
-    typename T::type e;
-  };
-  namespace N
-  {
-    template <typename = X1<int> > struct X3
-    {
-      template <typename T1, typename T2, typename B> friend void op(X2<T1, T2>& , B);
-    };
-    template <typename Ch, typename Tr, typename B> void op(X2<Ch, Tr>& , B)
-    {
-      X2<int, Tr> s;
-    }
-  }
-  int n()
-  {
-    X2<int, X0<int> > ngs;
-    N::X3<> b;
-    op(ngs, b);
-    return 0;
-  }
-
-}
-
-namespace PR8649 {
-  template<typename T, typename U, unsigned N>
-  struct X {
-    template<unsigned M> friend class X<T, U, M>; // expected-error{{partial specialization cannot be declared as a friend}}
-  };
-
-  X<int, float, 7> x;
-}
-
-// Don't crash, and error on invalid friend type template.
-namespace friend_type_template_no_tag {
-  template <typename T> struct S {
-    template <typename U> friend S<U>; // expected-error{{friend type templates must use an elaborated type}}
-  };
-  template struct S<int>;
-}
-
-namespace PR10660 {
-  struct A {
-    template <> friend class B; // expected-error{{extraneous 'template<>' in declaration of class 'B'}}
-  };
-}
-
-namespace rdar11147355 {
-  template <class T> 
-  struct A {
-    template <class U> class B;
-    template <class S> template <class U> friend class A<S>::B; 
-  };
-  
-  template <class S> template <class U> class A<S>::B {
-  }; 
-  
-  A<double>::B<double>  ab;
-}
-
-namespace RedeclUnrelated {
-  struct S {
-    int packaged_task;
-    template<typename> class future {
-      template<typename> friend class packaged_task;
-    };
-    future<void> share;
-  };
-}
-
-namespace PR12557 {
-  template <typename>
-  struct Foo;
-
-  template <typename Foo_>
-  struct Bar {
-    typedef Foo_  Foo; // expected-note {{previous}}
-
-    template <typename> friend struct Foo; // expected-error {{redefinition of 'Foo' as different kind of symbol}}
-  };
-
-  Bar<int> b;
-}
-
-namespace PR12585 {
-  struct A { };
-  template<typename> struct B {
-    template<typename> friend class A::does_not_exist; // \
-     // expected-error {{friend declaration of 'does_not_exist' does not match any declaration in 'PR12585::A'}}
-  };
-
-  struct C {
-    template<typename> struct D;
-  };
-  template<typename> class E {
-    int n;
-    template<typename> friend struct C::D;
-  };
-  template<typename T> struct C::D {
-    int f() {
-      return E<int>().n;
-    }
-  };
-  int n = C::D<void*>().f();
-
-  struct F {
-    template<int> struct G;
-  };
-  template<typename T> struct H {
-    // FIXME: As with cases above, the note here is on an unhelpful declaration,
-    // and should point to the declaration of G within F.
-    template<T> friend struct F::G; // \
-      // expected-error {{different type 'char' in template redeclaration}} \
-      // expected-note {{previous}}
-  };
-  H<int> h1; // ok
-  H<char> h2; // expected-note {{instantiation}}
-}
-
-// Ensure that we can still instantiate a friend function template
-// after the friend declaration is instantiated during the delayed
-// parsing of a member function, but before the friend function has
-// been parsed.
-namespace rdar12350696 {
-  template <class T> struct A {
-    void foo() {
-      A<int> a;
-    }
-    template <class U> friend void foo(const A<U> & a) {
-      int array[sizeof(T) == sizeof(U) ? -1 : 1]; // expected-error {{negative size}}
-    }
-  };
-
-  void test() {
-    A<int> b;
-    foo(b); // expected-note {{in instantiation}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/friend.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/friend.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/friend.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T> struct A {
-  struct B { };
-  
-  friend struct B;
-};
-
-void f() {
-  A<int>::B b;
-}
-
-struct C0 {
-  friend struct A<int>;
-};
-
-namespace PR6770 {
-  namespace N {
-    int f1(int);
-  }
-  using namespace N;
-
-  namespace M { 
-    float f1(float);
-  }
-  using M::f1;
-
-  template<typename T> void f1(T, T);
-  template <class T>
-  void f() {
-    friend class f; // expected-error{{'friend' used outside of class}}
-    friend class f1; // expected-error{{'friend' used outside of class}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/fun-template-def.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/fun-template-def.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/fun-template-def.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Tests that dependent expressions are always allowed, whereas non-dependent
-// are checked as usual.
-
-#include <stddef.h>
-
-// Fake typeid, lacking a typeinfo header.
-namespace std { class type_info {}; }
-
-struct dummy {}; // expected-note 3 {{candidate constructor (the implicit copy constructor)}}
-
-template<typename T>
-int f0(T x) {
-  return (sizeof(x) == sizeof(int))? 0 : (sizeof(x) == sizeof(double))? 1 : 2;
-}
-
-template <typename T, typename U>
-T f1(T t1, U u1, int i1)
-{
-  T t2 = i1;
-  t2 = i1 + u1;
-  ++u1;
-  u1++;
-  int i2 = u1;
-
-  i1 = t1[u1];
-  i1 *= t1;
-
-  i1(u1, t1); // error
-  u1(i1, t1);
-
-  U u2 = (T)i1;
-  static_cast<void>(static_cast<U>(reinterpret_cast<T>(
-    dynamic_cast<U>(const_cast<T>(i1)))));
-
-  new U(i1, t1);
-  new int(t1, u1);
-  new (t1, u1) int;
-  delete t1;
-
-  dummy d1 = sizeof(t1); // expected-error {{no viable conversion}}
-  dummy d2 = offsetof(T, foo); // expected-error {{no viable conversion}}
-  dummy d3 = __alignof(u1); // expected-error {{no viable conversion}}
-  i1 = typeid(t1); // expected-error {{assigning to 'int' from incompatible type 'const std::type_info'}}
-
-  return u1;
-}
-
-template<typename T>
-void f2(__restrict T x) {} // expected-note {{substitution failure [with T = int]: restrict requires a pointer or reference ('int' is invalid}}
-
-void f3() {
-  f2<int*>(0);
-  f2<int>(0); // expected-error {{no matching function for call to 'f2'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/function-template-specialization.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/function-template-specialization.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/function-template-specialization.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<int N> void f0(int (&array)[N]);
-
-// Simple function template specialization (using overloading)
-template<> void f0(int (&array)[1]);
-
-void test_f0() {
-  int iarr1[1];
-  f0(iarr1);
-}
-
-// Function template specialization where there are no matches
-template<> void f0(char (&array)[1]); // expected-error{{no function template matches}}
-template<> void f0<2>(int (&array)[2]) { }
-
-// Function template specialization that requires partial ordering
-template<typename T, int N> void f1(T (&array)[N]); // expected-note{{matches}}
-template<int N> void f1(int (&array)[N]); // expected-note{{matches}}
-
-template<> void f1(float (&array)[1]);
-template<> void f1(int (&array)[1]);
-
-// Function template specialization that results in an ambiguity
-template<typename T> void f1(T (&array)[17]); // expected-note{{matches}}
-template<> void f1(int (&array)[17]); // expected-error{{ambiguous}}
-
-// Resolving that ambiguity with explicitly-specified template arguments.
-template<int N> void f2(double (&array)[N]);
-template<typename T> void f2(T (&array)[42]);
-
-template<> void f2<double>(double (&array)[42]);
-template<> void f2<42>(double (&array)[42]);
-
-void f2<25>(double (&array)[25]); // expected-error{{specialization}} 
-
-// PR5833
-namespace PR5833 {
-  template <typename T> bool f0(T &t1);
-  template <> bool f0<float>(float &t1);
-}
-template <> bool PR5833::f0<float>(float &t1) {}
-
-// PR8295
-namespace PR8295 {
-  template <typename T> void f(T t) {}
-  template <typename T> void f<T*>(T* t) {} // expected-error{{function template partial specialization is not allowed}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/implicit-instantiation-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/implicit-instantiation-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/implicit-instantiation-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, typename U>
-struct X {
-  T f(T x, U y) { return x + y; }
-
-  unsigned g(T x, U y) { return sizeof(f(x, y)); }
-};
-
-void test(X<int, int> *xii, X<int*, int> *xpi, X<int, int*> *xip) {
-  (void)xii->f(1, 2);
-  (void)xpi->f(0, 2);
-  (void)sizeof(xip->f(2, 0)); // okay: does not instantiate
-  (void)xip->g(2, 0); // okay: does not instantiate
-}
-
-template<typename T, typename U>
-T add(T t, U u) {
-  return t + u; // expected-error{{invalid operands}}
-}
-
-void test_add(char *cp, int i, int *ip) {
-  char* cp2 = add(cp, i);
-  add(cp, cp); // expected-note{{instantiation of}}
-  (void)sizeof(add(ip, ip));
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/inject-templated-friend-post.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/inject-templated-friend-post.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/inject-templated-friend-post.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-// RUN: %clang %s -std=c++98 -S -emit-llvm -o - | grep -e "define linkonce_odr.*_ZlsR11std_ostreamRK8StreamerI3FooE"
-// RUN: %clang %s -std=c++98 -S -emit-llvm -o - -DPROTOTYPE | grep -e "define linkonce_odr.*_ZlsR11std_ostreamRK8StreamerI3FooE"
-// RUN: %clang %s -std=c++98 -S -emit-llvm -o - -DINSTANTIATE | grep -e "define linkonce_odr.*_ZlsR11std_ostreamRK8StreamerI3FooE"
-// RUN: %clang %s -std=c++98 -S -emit-llvm -o - -DPROTOTYPE -DINSTANTIATE | grep -e "define linkonce_odr.*_ZlsR11std_ostreamRK8StreamerI3FooE"
-// RUN: %clang_cc1 %s -DREDEFINE -verify
-// RUN: %clang_cc1 %s -DPROTOTYPE -DREDEFINE -verify
-// PR8007: friend function not instantiated, reordered version.
-// Corresponds to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38392
-
-struct std_ostream
-{
-  int dummy;
-};
-
-std_ostream cout;
-
-template <typename STRUCT_TYPE>
-struct Streamer;
-
-typedef struct Foo {} Foo;
-
-std_ostream& operator << (std_ostream&, const Streamer<Foo>&);
-
-void test(const Streamer<Foo>& foo)
-{
-    cout << foo;
-}
-
-template <typename STRUCT_TYPE>
-struct Streamer
-{
-    friend std_ostream& operator << (std_ostream& o, const Streamer& f) // expected-error{{redefinition of 'operator<<'}}
-        {
-            Streamer s(f);
-            s(o);
-            return o;
-        }
-
-    Streamer(const STRUCT_TYPE& s) : s(s) {}
-
-    const STRUCT_TYPE& s;
-    void operator () (std_ostream&) const;
-};
-
-#ifdef PROTOTYPE
-std_ostream& operator << (std_ostream&, const Streamer<Foo>&);
-#endif
-
-#ifdef INSTANTIATE
-template struct Streamer<Foo>;
-#endif
-
-#ifdef REDEFINE
-std_ostream& operator << (std_ostream& o, const Streamer<Foo>&) // expected-note{{is here}}
-{
-  return o;
-}
-#endif
-
-#ifndef INSTANTIATE
-template <>
-void Streamer<Foo>::operator () (std_ostream& o) const // expected-note{{requested here}}
-{
-}
-#endif
-
-int main(void)
-{
-    Foo foo;
-    test(foo);
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/inject-templated-friend.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/inject-templated-friend.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/inject-templated-friend.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang %s -S -emit-llvm -o - | grep -e "define linkonce_odr.*_ZlsR11std_ostreamRK8StreamerI3FooE"
-// RUN: %clang_cc1 %s -DREDEFINE -verify
-// PR8007: friend function not instantiated.
-
-struct std_ostream
-{
-  int dummy;
-};
-
-std_ostream cout;
-
-template <typename STRUCT_TYPE>
-struct Streamer
-{
-    friend std_ostream& operator << (std_ostream& o, const Streamer& f) // expected-error{{redefinition of 'operator<<'}}
-        {
-            Streamer s(f);
-            s(o);
-            return o;
-        }
-
-    Streamer(const STRUCT_TYPE& s) : s(s) {}
-
-    const STRUCT_TYPE& s;
-    void operator () (std_ostream&) const;
-};
-
-typedef struct Foo {} Foo;
-
-std_ostream& operator << (std_ostream&, const Streamer<Foo>&);
-#ifdef REDEFINE
-std_ostream& operator << (std_ostream& o, const Streamer<Foo>&) // expected-note{{is here}}
-{
-  // Sema should flag this as a redefinition
-  return o;
-}
-#endif
-
-template <>
-void Streamer<Foo>::operator () (std_ostream& o) const // expected-note{{requested here}}
-{
-}
-
-int main(void)
-{
-    Foo foo;
-    cout << foo;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/injected-class-name.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/injected-class-name.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/injected-class-name.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-struct X {
-  X<T*> *ptr;
-};
-
-X<int> x;
-
-template<>
-struct X<int***> {
-  typedef X<int***> *ptr;
-};
-
-X<float>::X<int> xi = x; // expected-error{{qualified reference to 'X' is a constructor name rather than a template name wherever a constructor can be declared}}
-
-// [temp.local]p1:
-
-// FIXME: test template template parameters
-template<typename T, typename U>
-struct X0 {
-  typedef T type;
-  typedef U U_type;
-  typedef U_type U_type2;
-
-  void f0(const X0&); // expected-note{{here}}
-  void f0(X0&);
-  void f0(const X0<T, U>&); // expected-error{{redecl}}
-
-  void f1(const X0&); // expected-note{{here}}
-  void f1(X0&);
-  void f1(const X0<type, U_type2>&); // expected-error{{redecl}}
-
-  void f2(const X0&); // expected-note{{here}}
-  void f2(X0&);
-  void f2(const ::X0<type, U_type2>&); // expected-error{{redecl}}
-};
-
-template<typename T, T N>
-struct X1 {
-  void f0(const X1&); // expected-note{{here}}
-  void f0(X1&);
-  void f0(const X1<T, N>&); // expected-error{{redecl}}
-};
-
-namespace pr6326 {
-  template <class T> class A {
-    friend class A;
-  };
-  template class A<int>;
-}
-
-namespace ForwardDecls {
-  template<typename T>
-  struct X;
-
-  template<typename T>
-  struct X {
-    typedef T foo;
-    typedef X<T> xt;
-    typename xt::foo *t;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-anonymous-union.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-anonymous-union.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-anonymous-union.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s -Wall
-
-template <typename T> class A { struct { }; };
-
-A<int> a0;
-
-template <typename T> struct B {
-  union {
-    int a;
-    void* b;
-  };
-    
-  void f() {
-    a = 10;
-    b = 0;
-  }
-};
-
-B<int> b0;
-
-template <typename T> struct C {
-  union {
-    int a;
-    void* b;
-  };
-
-  C(int a) : a(a) { }
-  C(void* b) : b(b) { }
-};
-
-C<int> c0(0);
-
-namespace PR7088 {
-  template<typename T>
-  void f() { 
-    union { 
-      int a; 
-      union {
-        float real;
-        T d;
-      };
-    }; 
-
-    a = 17;
-    d = 3.14;
-  }
-
-  template void f<double>();
-}
-
-// Check for problems related to PR7402 that occur when template instantiation
-// instantiates implicit initializers.
-namespace PR7402 {
-  struct X {
-    union {
-      struct {
-        int x;
-        int y;
-      };
-      int v[2];
-    };
-
-    // Check that this requirement survives instantiation.
-    template <typename T> X(const T& t) : x(t), y(t) {}
-  };
-
-  X x(42.0);
-}
-
-namespace PR9188 {
-  struct X0 {
-    union {
-      int member;
-    };
-  };
-
-  static union {
-    int global;
-  };
-
-  struct X1 : X0 {
-    template<typename T>
-    int f() {
-      return this->X0::member + PR9188::global;
-    }
-  };
-
-  template int X1::f<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-array.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-array.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-array.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
-// expected-no-diagnostics
-
-#ifndef __GXX_EXPERIMENTAL_CXX0X__
-#define __CONCAT(__X, __Y) __CONCAT1(__X, __Y)
-#define __CONCAT1(__X, __Y) __X ## __Y
-
-#define static_assert(__b, __m) \
-  typedef int __CONCAT(__sa, __LINE__)[__b ? 1 : -1]
-#endif
-
-template <int N> class IntArray {
-  int elems[N];
-};
-
-static_assert(sizeof(IntArray<10>) == sizeof(int) * 10, "Array size mismatch");
-static_assert(sizeof(IntArray<1>) == sizeof(int) * 1, "Array size mismatch");
-
-template <typename T> class TenElementArray {
-  int elems[10];
-};
-
-static_assert(sizeof(TenElementArray<int>) == sizeof(int) * 10, "Array size mismatch");
-
-template<typename T, int N> class Array {
-  T elems[N];
-};
-
-static_assert(sizeof(Array<int, 10>) == sizeof(int) * 10, "Array size mismatch");

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-attr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-attr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-attr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-template <typename T>
-struct A {
-  char a __attribute__((aligned(16)));
-
-  struct B {
-    typedef T __attribute__((aligned(16))) i16;
-    i16 x;
-  };
-};
-int a[sizeof(A<int>) == 16 ? 1 : -1];
-int a2[sizeof(A<int>::B) == 16 ? 1 : -1];
-
-// rdar://problem/8243419
-namespace test1 {
-  template <typename T> struct A {
-    int a;
-    T b[0];
-  } __attribute__((packed));
-
-  typedef A<unsigned long> type;
-
-  int test0[sizeof(type) == 4 ? 1 : -1];
-  int test1[__builtin_offsetof(type, a) == 0 ? 1 : -1];
-  int test2[__builtin_offsetof(type, b) == 4 ? 1 : -1];
-}
-
-namespace test2 {
-  template <class type>
-  struct fastscriptmember {
-      type Member __attribute__ ((packed));
-      char x;
-  };
-  int test0[sizeof(fastscriptmember<int>) == 5 ? 1 : -1];
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-c99.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-c99.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-c99.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Test template instantiation for C99-specific features.
-
-// ---------------------------------------------------------------------
-// Designated initializers
-// ---------------------------------------------------------------------
-template<typename T, typename XType, typename YType>
-struct DesigInit0 {
-  void f(XType x, YType y) {
-    T agg = { 
-      .y = y, // expected-error{{does not refer}}
-      .x = x  // expected-error{{does not refer}}
-    };
-  }
-};
-
-struct Point2D {
-  float x, y;
-};
-
-template struct DesigInit0<Point2D, int, double>;
-
-struct Point3D {
-  float x, y, z;
-};
-
-template struct DesigInit0<Point3D, int, double>;
-
-struct Color { 
-  unsigned char red, green, blue;
-};
-
-struct ColorPoint3D {
-  Color color;
-  float x, y, z;
-};
-
-template struct DesigInit0<ColorPoint3D, int, double>;
-template struct DesigInit0<Color, int, double>; // expected-note{{instantiation}}
-
-template<typename T, int Subscript1, int Subscript2,
-         typename Val1, typename Val2>
-struct DesigArrayInit0 {
-  void f(Val1 val1, Val2 val2) {
-    T array = {
-      [Subscript1] = val1,
-      [Subscript2] = val2 // expected-error{{exceeds array bounds}}
-    };
-
-    int array2[10] = { [5] = 3 };
-  }
-};
-
-template struct DesigArrayInit0<int[8], 5, 3, float, int>;
-template struct DesigArrayInit0<int[8], 5, 13, float, int>; // expected-note{{instantiation}}
-
-template<typename T, int Subscript1, int Subscript2,
-         typename Val1>
-struct DesigArrayRangeInit0 {
-  void f(Val1 val1) {
-    T array = {
-      [Subscript1...Subscript2] = val1 // expected-error{{exceeds}}
-    };
-  }
-};
-
-template struct DesigArrayRangeInit0<int[8], 3, 5, float>;
-template struct DesigArrayRangeInit0<int[8], 5, 13, float>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// Compound literals
-// ---------------------------------------------------------------------
-template<typename T, typename Arg1, typename Arg2>
-struct CompoundLiteral0 {
-  T f(Arg1 a1, Arg2 a2) {
-    return (T){a1, a2};
-  }
-};
-
-template struct CompoundLiteral0<Point2D, int, float>;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-call.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-call.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-call.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace N1 {
-  struct X0 { };
-
-  int& f0(X0);
-}
-
-namespace N2 {
-  char& f0(char);
-
-  template<typename T, typename Result>
-  struct call_f0 {
-    void test_f0(T t) {
-      Result result = f0(t);
-    }
-  };
-}
-
-template struct N2::call_f0<int, char&>;
-template struct N2::call_f0<N1::X0, int&>;
-
-namespace N3 {
-  template<typename T, typename Result>
-  struct call_f0 {
-    void test_f0(T t) {
-      Result &result = f0(t); // expected-error {{undeclared identifier}} \
-                                 expected-error {{neither visible in the template definition nor found by argument-dependent lookup}}
-    }
-  };
-}
-
-template struct N3::call_f0<int, char&>; // expected-note{{instantiation}}
-template struct N3::call_f0<N1::X0, int&>;
-
-short& f0(char); // expected-note {{should be declared prior to the call site}}
-namespace N4 {
-  template<typename T, typename Result>
-  struct call_f0 {
-    void test_f0(T t) {
-      Result &result = f0(t);
-    }
-  };
-}
-
-template struct N4::call_f0<int, short&>;
-template struct N4::call_f0<N1::X0, int&>;
-template struct N3::call_f0<int, short&>; // expected-note{{instantiation}}
-
-// FIXME: test overloaded function call operators, calls to member
-// functions, etc.

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-case.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-case.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-case.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<class T>
-static int alpha(T c)
-{
-    return *c; // expected-error{{indirection requires pointer operand}}
-}
-
-template<class T>
-static void
-_shexp_match()
-{
-  switch(1) {
-  case 1:
-    alpha(1); // expected-note{{instantiation of function template}}
-  }
-}
-int main() {
-  _shexp_match<char>(); // expected-note{{instantiation of function template}}
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-cast.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-cast.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-cast.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,117 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct A { int x; }; // expected-note 2 {{candidate constructor}}
-
-class Base { 
-public:
-  virtual void f();
-};
-
-class Derived : public Base { };
-
-struct ConvertibleToInt {
-  operator int() const;
-};
-
-struct Constructible {
-  Constructible(int, float);
-};
-
-// ---------------------------------------------------------------------
-// C-style casts
-// ---------------------------------------------------------------------
-template<typename T, typename U>
-struct CStyleCast0 {
-  void f(T t) {
-    (void)((U)t); // expected-error{{cannot convert 'A' to 'int' without a conversion operator}}
-  }
-};
-
-template struct CStyleCast0<int, float>;
-template struct CStyleCast0<A, int>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// static_cast
-// ---------------------------------------------------------------------
-template<typename T, typename U>
-struct StaticCast0 {
-  void f(T t) {
-    (void)static_cast<U>(t); // expected-error{{no matching conversion for static_cast from 'int' to 'A'}}
-  }
-};
-
-template struct StaticCast0<ConvertibleToInt, bool>;
-template struct StaticCast0<int, float>;
-template struct StaticCast0<int, A>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// dynamic_cast
-// ---------------------------------------------------------------------
-template<typename T, typename U>
-struct DynamicCast0 {
-  void f(T t) {
-    (void)dynamic_cast<U>(t); // expected-error{{not a reference or pointer}}
-  }
-};
-
-template struct DynamicCast0<Base*, Derived*>;
-template struct DynamicCast0<Base*, A>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// reinterpret_cast
-// ---------------------------------------------------------------------
-template<typename T, typename U>
-struct ReinterpretCast0 {
-  void f(T t) {
-    (void)reinterpret_cast<U>(t); // expected-error{{qualifiers}}
-  }
-};
-
-template struct ReinterpretCast0<void (*)(int), void (*)(float)>;
-template struct ReinterpretCast0<int const *, float *>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// const_cast
-// ---------------------------------------------------------------------
-template<typename T, typename U>
-struct ConstCast0 {
-  void f(T t) {
-    (void)const_cast<U>(t); // expected-error{{not allowed}}
-  }
-};
-
-template struct ConstCast0<int const * *, int * *>;
-template struct ConstCast0<int const *, float *>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// C++ functional cast
-// ---------------------------------------------------------------------
-template<typename T, typename U>
-struct FunctionalCast1 {
-  void f(T t) {
-    (void)U(t); // expected-error{{cannot convert 'A' to 'int' without a conversion operator}}
-  }
-};
-
-template struct FunctionalCast1<int, float>;
-template struct FunctionalCast1<A, int>; // expected-note{{instantiation}}
-
-// Generates temporaries, which we cannot handle yet.
-template<int N, long M>
-struct FunctionalCast2 {
-  void f() {
-    (void)Constructible(N, M);
-  }
-};
-
-template struct FunctionalCast2<1, 3>;
-
-// ---------------------------------------------------------------------
-// implicit casting
-// ---------------------------------------------------------------------
-template<typename T>
-struct Derived2 : public Base { };
-
-void test_derived_to_base(Base *&bp, Derived2<int> *dp) {
-  bp = dp;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-clang.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-clang.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-clang.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Test template instantiation for Clang-specific features.
-
-// ---------------------------------------------------------------------
-// Vector types
-// ---------------------------------------------------------------------
-typedef __attribute__(( ext_vector_type(2) )) double double2;
-typedef __attribute__(( ext_vector_type(4) )) double double4;
-
-template<typename T>
-struct ExtVectorAccess0 {
-  void f(T v1, double4 v2) {
-    v1.xy = v2.yx;
-  }
-};
-
-template struct ExtVectorAccess0<double2>;
-template struct ExtVectorAccess0<double4>;
-
-typedef __attribute__(( ext_vector_type(2) )) double double2;
-
-template<typename T, typename U, int N, int M>
-struct ShuffleVector0 {
-  void f(T t, U u, double2 a, double2 b) {
-    (void)__builtin_shufflevector(t, u, N, M); // expected-error{{index}}
-    (void)__builtin_shufflevector(a, b, N, M); // expected-error{{index}}
-    (void)__builtin_shufflevector(a, b, 2, 1);
-  }
-};
-
-template struct ShuffleVector0<double2, double2, 2, 1>;
-template struct ShuffleVector0<double2, double2, 4, 3>; // expected-note{{instantiation}}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-complete.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-complete.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-complete.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,146 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Tests various places where requiring a complete type involves
-// instantiation of that type.
-
-template<typename T>
-struct X {
-  X(T);
-
-  T f; // expected-error{{data member instantiated with function type 'float (int)'}} \
-       // expected-error{{data member instantiated with function type 'int (int)'}} \
-       // expected-error{{data member instantiated with function type 'char (char)'}} \
-       // expected-error{{data member instantiated with function type 'short (short)'}} \
-       // expected-error{{data member instantiated with function type 'float (float)'}}
-};
-
-X<int> f() { return 0; }
-
-struct XField {
-  X<float(int)> xf; // expected-note{{in instantiation of template class 'X<float (int)>' requested here}}
-};
-
-void test_subscript(X<double> *ptr1, X<int(int)> *ptr2, int i) {
-  (void)ptr1[i];
-  (void)ptr2[i]; // expected-note{{in instantiation of template class 'X<int (int)>' requested here}}
-}
-
-void test_arith(X<signed char> *ptr1, X<unsigned char> *ptr2,
-                X<char(char)> *ptr3, X<short(short)> *ptr4) {
-  (void)(ptr1 + 5);
-  (void)(5 + ptr2);
-  (void)(ptr3 + 5); // expected-note{{in instantiation of template class 'X<char (char)>' requested here}}
-  (void)(5 + ptr4); // expected-note{{in instantiation of template class 'X<short (short)>' requested here}}
-}
-
-void test_new() {
-  (void)new X<float>(0);
-  (void)new X<float(float)>; // expected-note{{in instantiation of template class 'X<float (float)>' requested here}}
-}
-
-void test_memptr(X<long> *p1, long X<long>::*pm1,
-                 X<long(long)> *p2, 
-                 long (X<long(long)>::*pm2)(long)) {
-  (void)(p1->*pm1);
-}
-
-// Reference binding to a base
-template<typename T>
-struct X1 { };
-
-template<typename T>
-struct X2 : public T { };
-
-void refbind_base(X2<X1<int> > &x2) {
-  X1<int> &x1 = x2;
-}
-
-// Enumerate constructors for user-defined conversion.
-template<typename T>
-struct X3 {
-  X3(T);
-};
-
-void enum_constructors(X1<float> &x1) {
-  X3<X1<float> > x3 = x1;
-}
-
-namespace PR6376 {
-  template<typename T, typename U> struct W { };
-
-  template<typename T>
-  struct X {
-    template<typename U>
-    struct apply {
-      typedef W<T, U> type;
-    };
-  };
-  
-  template<typename T, typename U>
-  struct Y : public X<T>::template apply<U>::type { };
-
-  template struct Y<int, float>;
-}
-
-namespace TemporaryObjectCopy {
-  // Make sure we instantiate classes when we create a temporary copy.
-  template<typename T>
-  struct X {
-    X(T); 
-  };
-
-  template<typename T>
-  void f(T t) {
-    const X<int> &x = X<int>(t);
-  }
-
-  template void f(int);
-}
-
-namespace PR7080 {
-  template <class T, class U>
-  class X
-  {
-    typedef char true_t;
-    class false_t { char dummy[2]; };
-    static true_t dispatch(U);
-    static false_t dispatch(...);
-    static T trigger();
-  public:
-    enum { value = sizeof(dispatch(trigger())) == sizeof(true_t) };
-  };
-
-  template <class T>
-  class rv : public T
-  { };
-
-  bool x = X<int, rv<int>&>::value;
-}
-
-namespace pr7199 {
-  template <class T> class A; // expected-note {{template is declared here}}
-  template <class T> class B {
-    class A<T>::C field; // expected-error {{implicit instantiation of undefined template 'pr7199::A<int>'}}
-  };
-
-  template class B<int>; // expected-note {{in instantiation}}
-}
-
-namespace PR8425 {
-  template <typename T>
-  class BaseT {};
-
-  template <typename T>
-  class DerivedT : public BaseT<T> {};
-
-  template <typename T>
-  class FromT {
-  public:
-    operator DerivedT<T>() const { return DerivedT<T>(); }
-  };
-
-  void test() {
-    FromT<int> ft;
-    BaseT<int> bt(ft);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-decl-dtor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-decl-dtor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-decl-dtor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-
-template <typename T> struct A {
-  T x;
-  A(int y) { x = y; }
-  ~A() { *x = 10; } // expected-error {{indirection requires pointer operand}}
-};
-
-void a() {
-  A<int> b = 10; // expected-note {{requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-decl-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-decl-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-decl-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR5426 - the non-dependent obj would be fully processed and wrapped in a
-// CXXConstructExpr at definition time, which would lead to a failure at
-// instantiation time.
-struct arg {
-  arg();
-};
-
-struct oldstylemove {
-  oldstylemove(oldstylemove&);
-  oldstylemove(const arg&);
-};
-
-template <typename T>
-void fn(T t, const arg& arg) {
-  oldstylemove obj(arg);
-}
-
-void test() {
-  fn(1, arg());
-}
-
-struct X0 { };
-
-struct X1 {
-  explicit X1(const X0 &x0 = X0());
-};
-
-template<typename T>
-void f0() {
-  X1 x1;
-}
-
-template void f0<int>();
-template void f0<float>();
-
-struct NonTrivial {
-  NonTrivial();
-  ~NonTrivial();
-};
-
-template<int N> void f1() {
-  NonTrivial array[N];
-}
-template<> void f1<2>();

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-declref-ice.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-declref-ice.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-declref-ice.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-template<int i> struct x {
-  static const int j = i;
-  x<j>* y;
-};
-
-template<int i>
-const int x<i>::j;
-
-int array0[x<2>::j];
-
-template<typename T>
-struct X0 {
-  static const unsigned value = sizeof(T);
-};
-
-template<typename T>
-const unsigned X0<T>::value;
-
-int array1[X0<int>::value == sizeof(int)? 1 : -1];
-
-const unsigned& testX0() { return X0<int>::value; }
-
-int array2[X0<int>::value == sizeof(int)? 1 : -1];
-
-template<typename T>
-struct X1 {
-  static const unsigned value;
-};
-
-template<typename T>
-const unsigned X1<T>::value = sizeof(T);
-
-int array3[X1<int>::value == sizeof(int)? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-declref.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-declref.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-declref.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,117 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-namespace N {
-  struct Outer {
-    struct Inner {
-      template<typename T>
-      struct InnerTemplate {
-        struct VeryInner {
-          typedef T type;
-
-          static enum K1 { K1Val = sizeof(T) } Kind1;
-          static enum { K2Val = sizeof(T)*2 } Kind2;
-          enum { K3Val = sizeof(T)*2 } Kind3;
-
-          void foo() {
-            K1 k1 = K1Val;
-            Kind1 = K1Val;
-            Outer::Inner::InnerTemplate<type>::VeryInner::Kind2 = K2Val;
-            Kind3 = K3Val;
-          }
-
-          struct UeberInner {
-            void bar() {
-              K1 k1 = K1Val;
-              Kind1 = K1Val;
-              Outer::Inner::InnerTemplate<type>::VeryInner::Kind2 = K2Val;
-
-              InnerTemplate t;
-              InnerTemplate<type> t2;
-            }
-          };
-        };
-      };
-    };
-  };
-}
-
-typedef int INT;
-template struct N::Outer::Inner::InnerTemplate<INT>::VeryInner;
-template struct N::Outer::Inner::InnerTemplate<INT>::UeberInner; // expected-error{{no struct named 'UeberInner' in 'N::Outer::Inner::InnerTemplate<int>'}}
-
-namespace N2 {
-  struct Outer2 {
-    template<typename T, typename U = T>
-    struct Inner {
-      void foo() {
-        enum { K1Val = sizeof(T) } k1;
-        enum K2 { K2Val = sizeof(T)*2 } k2a;
-
-        K2 k2b = K2Val;
-
-        struct S { T x, y; } s1;
-        struct { U x, y; } s2;
-        s1.x = s2.x; // expected-error{{incompatible}}
-
-        typedef T type;
-        type t2 = s1.x;
-
-        typedef struct { T z; } type2;
-        type2 t3 = { s1.x };
-
-        Inner i1;
-        i1.foo();
-        Inner<T> i2;
-        i2.foo();
-      }
-    };
-  };
-}
-
-template struct N2::Outer2::Inner<float>;
-template struct N2::Outer2::Inner<int*, float*>; // expected-note{{instantiation}}
-
-// Test dependent pointer-to-member expressions.
-template<typename T>
-struct smart_ptr {
-  struct safe_bool {
-    int member;
-  };
-  
-  operator int safe_bool::*() const { 
-    return ptr? &safe_bool::member : 0;
-  }
-  
-  T* ptr;
-};
-
-void test_smart_ptr(smart_ptr<int> p) {
-  if (p) { }
-}
-
-// PR5517
-namespace test0 {
-  template <int K> struct X {
-    X() { extern void x(); }
-  };
-  void g() { X<2>(); }
-}
-
-// <rdar://problem/8302161>
-namespace test1 {
-  template <typename T> void f(T const &t) {
-    union { char c; T t_; };
-    c = 'a'; // <- this shouldn't silently fail to instantiate
-    T::foo(); // expected-error {{has no members}}
-  }
-  template void f(int const &); // expected-note {{requested here}}
-}
-
-namespace test2 {
-  template<typename T> void f() {
-    T::error; // expected-error {{no member}}
-  }
-  void g() {
-    // This counts as an odr-use, so should trigger the instantiation of f<int>.
-    (void)&f<int>; // expected-note {{here}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-deeply.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-deeply.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-deeply.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wall -verify %s
-// expected-no-diagnostics
-template<typename a> struct A {
-  template <typename b> struct B {
-    template <typename c> struct C {
-      template <typename d> struct D {
-        template <typename e> struct E {
-          e field;
-          E() : field(0) {
-            d v1 = 4;
-            c v2 = v1 * v1;
-            b v3 = 8;
-            a v4 = v3 * v3;
-            field += v2 + v4;
-          }
-        };
-      };
-    };
-  };
-};
-
-A<int>::B<int>::C<int>::D<int>::E<int> global;
-
-// PR5352
-template <typename T>
-class Foo {
-public:
-  Foo() {}
-  
-  struct Bar {
-    T value;
-  };
-  
-  Bar u;
-};
-
-template class Foo<int>;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename> struct PassRefPtr { };
-template<typename T> struct RefPtr {
-  RefPtr& operator=(const RefPtr&) { int a[sizeof(T) ? -1 : -1];} // expected-error 2 {{array with a negative size}}
-  RefPtr& operator=(const PassRefPtr<T>&);
-};
-
-struct A { RefPtr<int> a; };  // expected-note {{instantiation of member function 'RefPtr<int>::operator=' requested here}}
-struct B : RefPtr<float> { }; // expected-note {{in instantiation of member function 'RefPtr<float>::operator=' requested here}}
-
-void f() {
-  A a1, a2;
-  a1 = a2;
-
-  B b1, b2;
-  b1 = b2; 
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-dependent-nested-name.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-dependent-nested-name.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-dependent-nested-name.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// PR4382
-template<typename T> struct X { static const T A = 1; };
-template<typename T, bool = X<T>::A> struct Y { typedef T A; };
-template<typename T> struct Z { typedef typename Y<T>::A A; };
-extern int x;
-extern Z<int>::A x;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-elab-type-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-elab-type-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-elab-type-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR5681
-template <class T> struct Base {
-  struct foo {};
-  int foo;
-};
-
-template <class T> struct Derived : Base<T> {
-  typedef struct Base<T>::foo type;
-};
-
-template struct Derived<int>;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-enum-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-enum-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-enum-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 %s -fsyntax-only -verify
-// expected-no-diagnostics
-
-template<int IntBits> struct X {
-  enum {
-    IntShift = (unsigned long long)IntBits,
-    ShiftedIntMask = (1 << IntShift)
-  };
-};
-X<1> x;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-enum.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-enum.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-enum.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-template<typename T, T I, int J>
-struct adder {
-  enum {
-    value = I + J,
-    value2
-  };
-};
-
-int array1[adder<long, 3, 4>::value == 7? 1 : -1];
-
-namespace PR6375 {
-  template<typename T> 
-  void f() {
-    enum Enum
-    {
-      enumerator1 = 0xFFFFFFF,
-      enumerator2 = enumerator1 - 1
-    };
-  
-    int xb1 = enumerator1;
-    int xe1 = enumerator2;
-  }
-
-  template void f<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-exception-spec-cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,135 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -ftemplate-depth 16 -fcxx-exceptions -fexceptions %s
-
-// DR1330: an exception specification for a function template is only
-// instantiated when it is needed.
-
-template<typename T> void f1(T*) throw(T); // expected-error{{incomplete type 'Incomplete' is not allowed in exception specification}}
-struct Incomplete; // expected-note{{forward}}
-
-void test_f1(Incomplete *incomplete_p, int *int_p) {
-  f1(int_p);
-  f1(incomplete_p); // expected-note{{instantiation of exception spec}}
-}
-
-template<typename T> struct A {
-  template<typename U> struct B {
-    static void f() noexcept(A<U>().n);
-  };
-
-  constexpr A() : n(true) {}
-  bool n;
-};
-
-static_assert(noexcept(A<int>::B<char>::f()), "");
-
-template<unsigned N> struct S {
-  static void recurse() noexcept(noexcept(S<N+1>::recurse())); // \
-  // expected-error {{no member named 'recurse'}} \
-  // expected-note 9{{instantiation of exception spec}}
-};
-decltype(S<0>::recurse()) *pVoid1 = 0; // ok, exception spec not needed
-decltype(&S<0>::recurse) pFn = 0; // ok, exception spec not needed
-
-template<> struct S<10> {};
-void (*pFn2)() noexcept = &S<0>::recurse; // expected-note {{instantiation of exception spec}} expected-error {{not superset}}
-
-
-namespace dr1330_example {
-  template <class T> struct A {
-    void f(...) throw (typename T::X); // expected-error {{'int'}}
-    void f(int);
-  };
-
-  int main() {
-    A<int>().f(42);
-  }
-
-  int test2() {
-    struct S {
-      template<typename T>
-      static int f() noexcept(noexcept(A<T>().f("boo!"))) { return 0; } // \
-      // expected-note {{instantiation of exception spec}}
-      typedef decltype(f<S>()) X;
-    };
-    S().f<S>(); // ok
-    S().f<int>(); // expected-note {{instantiation of exception spec}}
-  }
-}
-
-namespace core_19754_example {
-  template<typename T> T declval() noexcept;
-
-  template<typename T, typename = decltype(T(declval<T&&>()))>
-  struct is_movable { static const bool value = true; };
-
-  template<typename T>
-  struct wrap {
-    T val;
-    void irrelevant(wrap &p) noexcept(is_movable<T>::value);
-  };
-
-  template<typename T>
-  struct base {
-     base() {}
-     base(const typename T::type1 &);
-     base(const typename T::type2 &);
-  };
-
-  template<typename T>
-  struct type1 {
-     wrap<typename T::base> base;
-  };
-
-  template<typename T>
-  struct type2 {
-     wrap<typename T::base> base;
-  };
-
-  struct types {
-     typedef base<types> base;
-     typedef type1<types> type1;
-     typedef type2<types> type2;
-  };
-
-  base<types> val = base<types>();
-}
-
-namespace pr9485 {
-  template <typename T> void f1(T) throw(typename T::exception); // expected-note {{candidate}}
-  template <typename T> void f1(T, int = 0) throw(typename T::noitpecxe); // expected-note {{candidate}}
-
-  template <typename T> void f2(T) noexcept(T::throws); // expected-note {{candidate}}
-  template <typename T> void f2(T, int = 0) noexcept(T::sworht); // expected-note {{candidate}}
-
-  void test() {
-    f1(0); // expected-error {{ambiguous}}
-    f2(0); // expected-error {{ambiguous}}
-  }
-}
-
-struct Exc1 { char c[4]; };
-struct Exc2 { double x, y, z; };
-struct Base {
-  virtual void f() noexcept; // expected-note {{overridden}}
-};
-template<typename T> struct Derived : Base {
-  void f() noexcept (sizeof(T) == 4); // expected-error {{is more lax}}
-  void g() noexcept (T::error);
-};
-
-Derived<Exc1> d1; // ok
-Derived<Exc2> d2; // expected-note {{in instantiation of}}
-
-// If the vtable for a derived class is used, the exception specification of
-// any member function which ends up in that vtable is needed, even if it was
-// declared in a base class.
-namespace PR12763 {
-  template<bool *B> struct T {
-    virtual void f() noexcept (*B); // expected-error {{constant expression}} expected-note {{read of non-const}}
-  };
-  bool b; // expected-note {{here}}
-  struct X : public T<&b> {
-    virtual void g();
-  };
-  void X::g() {} // expected-note {{in instantiation of}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-exception-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-exception-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-exception-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// FIXME: the "note" should be down at the call site!
-template<typename T> void f1(T*) throw(T); // expected-error{{incomplete type 'Incomplete' is not allowed in exception specification}} \
-                         // expected-note{{instantiation of}}
-struct Incomplete; // expected-note{{forward}}
-
-void test_f1(Incomplete *incomplete_p, int *int_p) {
-  f1(int_p);
-  f1(incomplete_p); 
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,192 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<int I, int J>
-struct Bitfields {
-  int simple : I; // expected-error{{bit-field 'simple' has zero width}}
-  int parens : (J);
-};
-
-void test_Bitfields(Bitfields<0, 5> *b) {
-  (void)sizeof(Bitfields<10, 5>);
-  (void)sizeof(Bitfields<0, 1>); // expected-note{{in instantiation of template class 'Bitfields<0, 1>' requested here}}
-}
-
-template<int I, int J>
-struct BitfieldPlus {
-  int bitfield : I + J; // expected-error{{bit-field 'bitfield' has zero width}}
-};
-
-void test_BitfieldPlus() {
-  (void)sizeof(BitfieldPlus<0, 1>);
-  (void)sizeof(BitfieldPlus<-5, 5>); // expected-note{{in instantiation of template class 'BitfieldPlus<-5, 5>' requested here}}
-}
-
-template<int I, int J>
-struct BitfieldMinus {
-  int bitfield : I - J; // expected-error{{bit-field 'bitfield' has negative width (-1)}} \
-  // expected-error{{bit-field 'bitfield' has zero width}}
-};
-
-void test_BitfieldMinus() {
-  (void)sizeof(BitfieldMinus<5, 1>);
-  (void)sizeof(BitfieldMinus<0, 1>); // expected-note{{in instantiation of template class 'BitfieldMinus<0, 1>' requested here}}
-  (void)sizeof(BitfieldMinus<5, 5>); // expected-note{{in instantiation of template class 'BitfieldMinus<5, 5>' requested here}}
-}
-
-template<int I, int J>
-struct BitfieldDivide {
-  int bitfield : I / J; // expected-error{{expression is not an integral constant expression}} \
-                        // expected-note{{division by zero}}
-};
-
-void test_BitfieldDivide() {
-  (void)sizeof(BitfieldDivide<5, 1>);
-  (void)sizeof(BitfieldDivide<5, 0>); // expected-note{{in instantiation of template class 'BitfieldDivide<5, 0>' requested here}}
-}
-
-template<typename T, T I, int J>
-struct BitfieldDep {
-  int bitfield : I + J;
-};
-
-void test_BitfieldDep() {
-  (void)sizeof(BitfieldDep<int, 1, 5>);
-}
-
-template<int I>
-struct BitfieldNeg {
-  int bitfield : (-I); // expected-error{{bit-field 'bitfield' has negative width (-5)}}
-};
-
-template<typename T, T I>
-struct BitfieldNeg2 {
-  int bitfield : (-I); // expected-error{{bit-field 'bitfield' has negative width (-5)}}
-};
-
-void test_BitfieldNeg() {
-  (void)sizeof(BitfieldNeg<-5>); // okay
-  (void)sizeof(BitfieldNeg<5>); // expected-note{{in instantiation of template class 'BitfieldNeg<5>' requested here}}
-  (void)sizeof(BitfieldNeg2<int, -5>); // okay
-  (void)sizeof(BitfieldNeg2<int, 5>); // expected-note{{in instantiation of template class 'BitfieldNeg2<int, 5>' requested here}}
-}
-
-template<typename T>
-void increment(T &x) {
-  (void)++x;
-}
-
-struct Incrementable {
-  Incrementable &operator++();
-};
-
-void test_increment(Incrementable inc) {
-  increment(inc);
-}
-
-template<typename T>
-void add(const T &x) {
-  (void)(x + x);
-}
-
-namespace PR6237 {
-  template <typename T>
-  void f(T t) {
-    t++;
-  }
-
-  struct B { };
-  B operator++(B &, int);
-
-  template void f(B);
-}
-
-struct Addable {
-  Addable operator+(const Addable&) const;
-};
-
-void test_add(Addable &a) {
-  add(a);
-}
-
-struct CallOperator {
-  int &operator()(int);
-  double &operator()(double);
-};
-
-template<typename Result, typename F, typename Arg1>
-Result test_call_operator(F f, Arg1 arg1) {
-  // PR5266: non-dependent invocations of a function call operator.
-  CallOperator call_op;
-  int &ir = call_op(17);
-  return f(arg1);
-}
-
-void test_call_operator(CallOperator call_op, int i, double d) {
-  int &ir = test_call_operator<int&>(call_op, i);
-  double &dr = test_call_operator<double&>(call_op, d);
-}
-
-template<typename T>
-void test_asm(T t) {
-  asm ("nop" : "=r"(*t) : "r"(*t)); // expected-error {{indirection requires pointer operand ('int' invalid)}}
-}
-
-void test_asm() {
-  int* a;
-  test_asm(a);
-  
-  int b;
-  test_asm(b); // expected-note {{in instantiation of function template specialization 'test_asm<int>' requested here}}
-}
-
-namespace PR6424 {
-  template<int I> struct X { 
-    X() { 
-      int *ip = I; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}}
-    }
-  };
-  
-  template<int> struct Y {
-    typedef X<7> X7;
-    
-    void f() { X7(); } // expected-note{{instantiation}}
-  };
-  
-  template void Y<3>::f(); 
-
-  template<int I> 
-  struct X2 {
-    void *operator new(__SIZE_TYPE__) { 
-      int *ip = I; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}}
-      return ip;
-    }
-  };
-
-  template<int> struct Y2 {
-    typedef X2<7> X;
-    void f() { 
-      new X(); // expected-note{{instantiation of}}
-    }
-  };
-  
-  template void Y2<3>::f();
-
-  template<typename T>
-  void rdar10283928(int count) {
-    (void)new char[count]();
-  }
-
-  template void rdar10283928<int>(int);
-}
-
-namespace PR10864 {
-  template<typename T> class Vals {};
-  template<> class Vals<int> { public: static const int i = 1; };
-  template<> class Vals<float> { public: static const double i; };
-  template<typename T> void test_asm_tied(T o) {
-    __asm("addl $1, %0" : "=r" (o) : "0"(Vals<T>::i)); // expected-error {{input with type 'double' matching output with type 'float'}}
-  }
-  void test_asm_tied() {
-    test_asm_tied(1);
-    test_asm_tied(1.f); // expected-note {{instantiation of}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,245 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-typedef char one_byte;
-typedef char (&two_bytes)[2];
-typedef char (&four_bytes)[4];
-typedef char (&eight_bytes)[8];
-
-template<int N> struct A { };
-
-namespace N1 {
-  struct X { };
-}
-
-namespace N2 {
-  struct Y { };
-
-  two_bytes operator+(Y, Y);
-}
-
-namespace N3 {
-  struct Z { };
-
-  eight_bytes operator+(Z, Z);
-}
-
-namespace N4 {
-  one_byte operator+(N1::X, N2::Y);
-
-  template<typename T, typename U>
-  struct BinOpOverload {
-    typedef A<sizeof(T() + U())> type;
-  };
-}
-
-namespace N1 {
-  four_bytes operator+(X, X);
-}
-
-namespace N3 {
-  eight_bytes operator+(Z, Z); // redeclaration
-}
-
-void test_bin_op_overload(A<1> *a1, A<2> *a2, A<4> *a4, A<8> *a8) {
-  typedef N4::BinOpOverload<N1::X, N2::Y>::type XY;
-  XY *xy = a1;
-  typedef N4::BinOpOverload<N1::X, N1::X>::type XX;
-  XX *xx = a4;
-  typedef N4::BinOpOverload<N2::Y, N2::Y>::type YY;
-  YY *yy = a2;
-  typedef N4::BinOpOverload<N3::Z, N3::Z>::type ZZ;
-  ZZ *zz = a8;
-}
-
-namespace N3 {
-  eight_bytes operator-(::N3::Z);
-}
-
-namespace N4 {
-  template<typename T>
-  struct UnaryOpOverload {
-    typedef A<sizeof(-T())> type;
-  };
-}
-
-void test_unary_op_overload(A<8> *a8) {
-  typedef N4::UnaryOpOverload<N3::Z>::type UZ;
-  UZ *uz = a8;
-}
-
-/*
-namespace N5 {
-  template<int I>
-  struct Lookup {
-    enum { val = I, more = val + 1 };
-  };
-
-  template<bool B>
-  struct Cond {
-    enum Junk { is = B ? Lookup<B>::more : Lookup<Lookup<B+1>::more>::val };
-  };
-
-  enum { resultT = Cond<true>::is,
-         resultF = Cond<false>::is };
-}
-*/
-
-namespace N6 {
-  // non-typedependent
-  template<int I>
-  struct Lookup {};
-
-  template<bool B, typename T, typename E>
-  struct Cond {
-    typedef Lookup<B ? sizeof(T) : sizeof(E)> True;
-    typedef Lookup<!B ? sizeof(T) : sizeof(E)> False;
-  };
-
-  typedef Cond<true, int, char>::True True;
-  typedef Cond<true, int, char>::False False;
-
-  // check that we have the right types
-  Lookup<1> const &L1(False());
-  Lookup<sizeof(int)> const &L2(True());
-}
-
-
-namespace N7 {
-  // type dependent
-  template<int I>
-  struct Lookup {};
-
-  template<bool B, typename T, typename E>
-  struct Cond {
-    T foo() { return B ? T() : E(); }
-    typedef Lookup<sizeof(B ? T() : E())> Type;
-  };
-
-  //Cond<true, int*, double> C; // Errors
-  //int V(C.foo()); // Errors
-  //typedef Cond<true, int*, double>::Type Type; // Errors
-  typedef Cond<true, int, double>::Type Type;
-}
-
-template<typename T, unsigned long N> struct IntegralConstant { };
-
-template<typename T>
-struct X0 {
-  void f(T x, IntegralConstant<T, sizeof(x)>);
-};
-
-void test_X0(X0<int> x, IntegralConstant<int, sizeof(int)> ic) {
-  x.f(5,ic);
-}
-
-namespace N8 {
-  struct X {
-    X operator+(const X&) const;
-  };
-  
-  template<typename T>
-  T test_plus(const T* xp, const T& x, const T& y) {
-    x.operator+(y);
-    return xp->operator+(y);
-  }
-  
-  void test_test_plus(X x) {
-    test_plus(&x, x, x);
-  }
-}
-
-namespace N9 {
-  struct A {
-    bool operator==(int value);
-  };
-  
-  template<typename T> struct B {
-    bool f(A a) {
-      return a == 1;
-    }
-  };
-  
-  template struct B<int>;  
-}
-
-namespace N10 {
-  template <typename T>
-  class A {
-    struct X { };
-    
-  public:
-    ~A() {
-      f(reinterpret_cast<X *>(0), reinterpret_cast<X *>(0));
-    }
-    
-  private:
-    void f(X *);
-    void f(X *, X *);
-  };
-  
-  template class A<int>;
-}
-
-namespace N12 {
-  // PR5224
-  template<typename T>
-  struct A { typedef int t0; };
-  
-  struct C  {
-    C(int);
-    
-    template<typename T>
-    static C *f0(T a0) {return new C((typename A<T>::t0) 1);   }
-  };
-
-  void f0(int **a) { C::f0(a); }
-}
-
-namespace PR7202 {
-  template<typename U, typename T>
-  struct meta {
-    typedef T type;
-  };
-
-  struct X {
-    struct dummy;
-
-    template<typename T>
-    X(T, typename meta<T, dummy*>::type = 0);
-
-    template<typename T, typename A>
-    X(T, A);
-  };
-
-  template<typename T>
-  struct Z { };
-
-  template<typename T> Z<T> g(T);
-
-  struct Y {
-    template<typename T>
-    void f(T t) {
-      new X(g(*this));
-    }
-  };
-
-  template void Y::f(int);
-}
-
-namespace N13 {
-  class A{
-    A(const A&);
-
-  public:
-    ~A();
-    A(int);
-    template<typename T> A &operator<<(const T&);
-  };
-
-  template<typename T>
-  void f(T t) {
-    A(17) << t;
-  }
-
-  template void f(int);
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,119 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// ---------------------------------------------------------------------
-// Imaginary literals
-// ---------------------------------------------------------------------
-template<typename T>
-struct ImaginaryLiteral0 {
-  void f(T &x) {
-    x = 3.0I; // expected-error{{incompatible type}}
-  }
-};
-
-template struct ImaginaryLiteral0<_Complex float>;
-template struct ImaginaryLiteral0<int*>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// Compound assignment operator
-// ---------------------------------------------------------------------
-namespace N1 {
-  struct X { };
-
-  int& operator+=(X&, int); // expected-note{{candidate}}
-}
-
-namespace N2 {
-  long& operator+=(N1::X&, long); // expected-note{{candidate}}
-
-  template<typename T, typename U, typename Result>
-  struct PlusEquals0 {
-    void f(T t, U u) {
-      Result r = t += u; // expected-error{{ambiguous}}
-    }
-  };
-}
-
-namespace N3 {
-  struct Y : public N1::X {
-    short& operator+=(long); // expected-note{{candidate}}
-  };
-}
-
-template struct N2::PlusEquals0<N1::X, int, int&>;
-template struct N2::PlusEquals0<N1::X, long, long&>;
-template struct N2::PlusEquals0<N3::Y, long, short&>;
-template struct N2::PlusEquals0<int, int, int&>;
-template struct N2::PlusEquals0<N3::Y, int, short&>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// Conditional operator
-// ---------------------------------------------------------------------
-template<typename T, typename U, typename Result>
-struct Conditional0 {
-  void f(T t, U u) {
-    Result result = t? : u;
-  }
-};
-
-template struct Conditional0<int, int, int>;
-
-// ---------------------------------------------------------------------
-// Statement expressions
-// ---------------------------------------------------------------------
-template<typename T>
-struct StatementExpr0 {
-  void f(T t) {
-    (void)({
-        if (t) // expected-error{{contextually convertible}}
-          t = t + 17;
-        t + 12; // expected-error{{invalid operands}}
-      });
-  }
-};
-
-template struct StatementExpr0<int>;
-template struct StatementExpr0<N1::X>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// __builtin_choose_expr
-// ---------------------------------------------------------------------
-template<bool Cond, typename T, typename U, typename Result>
-struct Choose0 {
-  void f(T t, U u) {
-    Result r = __builtin_choose_expr(Cond, t, u); // expected-error{{lvalue}}
-  }
-};
-
-template struct Choose0<true, int, float, int&>;
-template struct Choose0<false, int, float, float&>;
-template struct Choose0<true, int, float, float&>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// __builtin_va_arg
-// ---------------------------------------------------------------------
-template<typename ArgType>
-struct VaArg0 {
-  void f(int n, ...) {
-    __builtin_va_list va;
-    __builtin_va_start(va, n);
-    for (int i = 0; i != n; ++i)
-      (void)__builtin_va_arg(va, ArgType);
-    __builtin_va_end(va);
-  }
-};
-
-template struct VaArg0<int>;
-
-template<typename VaList, typename ArgType>
-struct VaArg1 {
-  void f(int n, ...) {
-    VaList va;
-    __builtin_va_start(va, n); // expected-error{{int}}
-    for (int i = 0; i != n; ++i)
-      (void)__builtin_va_arg(va, ArgType); // expected-error{{int}}
-    __builtin_va_end(va); // expected-error{{int}}
-  }
-};
-
-template struct VaArg1<__builtin_va_list, int>;
-template struct VaArg1<int, int>; // expected-note{{instantiation}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,354 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
-
-// ---------------------------------------------------------------------
-// C++ Functional Casts
-// ---------------------------------------------------------------------
-template<int N>
-struct ValueInit0 {
-  int f() {
-    return int();
-  }
-};
-
-template struct ValueInit0<5>;
-
-template<int N>
-struct FunctionalCast0 {
-  int f() {
-    return int(N);
-  }
-};
-
-template struct FunctionalCast0<5>;
-
-struct X { // expected-note 3 {{candidate constructor (the implicit copy constructor)}}
-  X(int, int); // expected-note 3 {{candidate constructor}}
-};
-
-template<int N, int M>
-struct BuildTemporary0 {
-  X f() {
-    return X(N, M);
-  }
-};
-
-template struct BuildTemporary0<5, 7>;
-
-template<int N, int M>
-struct Temporaries0 {
-  void f() {
-    (void)X(N, M);
-  }
-};
-
-template struct Temporaries0<5, 7>;
-
-// Ensure that both the constructor and the destructor are instantiated by
-// checking for parse errors from each.
-template<int N> struct BadX {
-  BadX() { int a[-N]; } // expected-error {{array with a negative size}}
-  ~BadX() { int a[-N]; } // expected-error {{array with a negative size}}
-};
-
-template<int N>
-struct PR6671 {
-  void f() { (void)BadX<1>(); } // expected-note 2 {{instantiation}}
-};
-template struct PR6671<1>;
-
-// ---------------------------------------------------------------------
-// new/delete expressions
-// ---------------------------------------------------------------------
-struct Y { };
-
-template<typename T>
-struct New0 {
-  T* f(bool x) {
-    if (x)
-      return new T; // expected-error{{no matching}}
-    else
-      return new T();
-  }
-};
-
-template struct New0<int>;
-template struct New0<Y>;
-template struct New0<X>; // expected-note{{instantiation}}
-
-template<typename T, typename Arg1>
-struct New1 {
-  T* f(bool x, Arg1 a1) {
-    return new T(a1); // expected-error{{no matching}}
-  }
-};
-
-template struct New1<int, float>;
-template struct New1<Y, Y>;
-template struct New1<X, Y>; // expected-note{{instantiation}}
-
-template<typename T, typename Arg1, typename Arg2>
-struct New2 {
-  T* f(bool x, Arg1 a1, Arg2 a2) {
-    return new T(a1, a2); // expected-error{{no matching}}
-  }
-};
-
-template struct New2<X, int, float>;
-template struct New2<X, int, int*>; // expected-note{{instantiation}}
-// FIXME: template struct New2<int, int, float>;
-
-// PR5833
-struct New3 {
-  New3();
-
-  void *operator new[](__SIZE_TYPE__) __attribute__((unavailable)); // expected-note{{explicitly made unavailable}}
-};
-
-template<class C>
-void* object_creator() {
-  return new C(); // expected-error{{call to unavailable function 'operator new[]'}}
-}
-
-template void *object_creator<New3[4]>(); // expected-note{{instantiation}}
-
-template<typename T>
-struct Delete0 {
-  void f(T t) {
-    delete t; // expected-error{{cannot delete}}
-    ::delete [] t; // expected-error{{cannot delete}}
-  }
-};
-
-template struct Delete0<int*>;
-template struct Delete0<X*>;
-template struct Delete0<int>; // expected-note{{instantiation}}
-
-namespace PR5755 {
-  template <class T>
-  void Foo() {
-    char* p = 0;
-    delete[] p;
-  }
-  
-  void Test() {
-    Foo<int>();
-  }
-}
-
-namespace PR10480 {
-  template<typename T>
-  struct X {
-    X();
-    ~X() {
-      T *ptr = 1; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}}
-    }
-  };
-
-  template<typename T>
-  void f() {
-    new X<int>[1]; // expected-note{{in instantiation of member function 'PR10480::X<int>::~X' requested here}}
-  }
-
-  template void f<int>();
-}
-
-// ---------------------------------------------------------------------
-// throw expressions
-// ---------------------------------------------------------------------
-template<typename T>
-struct Throw1 {
-  void f(T t) {
-    throw;
-    throw t; // expected-error{{incomplete type}}
-  }
-};
-
-struct Incomplete; // expected-note 2{{forward}}
-
-template struct Throw1<int>;
-template struct Throw1<int*>;
-template struct Throw1<Incomplete*>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// typeid expressions
-// ---------------------------------------------------------------------
-
-namespace std {
-  class type_info;
-}
-
-template<typename T>
-struct TypeId0 {
-  const std::type_info &f(T* ptr) {
-    if (ptr)
-      return typeid(ptr);
-    else
-      return typeid(T); // expected-error{{'typeid' of incomplete type 'Incomplete'}}
-  }
-};
-
-struct Abstract {
-  virtual void f() = 0;
-};
-
-template struct TypeId0<int>;
-template struct TypeId0<Incomplete>; // expected-note{{instantiation of member function}}
-template struct TypeId0<Abstract>;
-
-// ---------------------------------------------------------------------
-// type traits
-// ---------------------------------------------------------------------
-template<typename T>
-struct is_pod {
-  static const bool value = __is_pod(T);
-};
-
-static int is_pod0[is_pod<X>::value? -1 : 1];
-static int is_pod1[is_pod<Y>::value? 1 : -1];
-
-// ---------------------------------------------------------------------
-// initializer lists
-// ---------------------------------------------------------------------
-template<typename T, typename Val1>
-struct InitList1 {
-  void f(Val1 val1) { 
-    T x = { val1 };
-  }
-};
-
-struct APair {
-  int *x;
-  const float *y;
-};
-
-template struct InitList1<int[1], float>;
-template struct InitList1<APair, int*>;
-
-template<typename T, typename Val1, typename Val2>
-struct InitList2 {
-  void f(Val1 val1, Val2 val2) { 
-    T x = { val1, val2 }; // expected-error{{cannot initialize}}
-  }
-};
-
-template struct InitList2<APair, int*, float*>;
-template struct InitList2<APair, int*, double*>; // expected-note{{instantiation}}
-
-// ---------------------------------------------------------------------
-// member references
-// ---------------------------------------------------------------------
-template<typename T, typename Result>
-struct DotMemRef0 {
-  void f(T t) {
-    Result result = t.m; // expected-error{{non-const lvalue reference to type}}
-  }
-};
-
-struct MemInt {
-  int m;
-};
-
-struct InheritsMemInt : MemInt { };
-
-struct MemIntFunc {
-  static int m(int);
-};
-
-template struct DotMemRef0<MemInt, int&>;
-template struct DotMemRef0<InheritsMemInt, int&>;
-template struct DotMemRef0<MemIntFunc, int (*)(int)>;
-template struct DotMemRef0<MemInt, float&>; // expected-note{{instantiation}}
-
-template<typename T, typename Result>
-struct ArrowMemRef0 {
-  void f(T t) {
-    Result result = t->m; // expected-error 2{{non-const lvalue reference}}
-  }
-};
-
-template<typename T>
-struct ArrowWrapper {
-  T operator->();
-};
-
-template struct ArrowMemRef0<MemInt*, int&>;
-template struct ArrowMemRef0<InheritsMemInt*, int&>;
-template struct ArrowMemRef0<MemIntFunc*, int (*)(int)>;
-template struct ArrowMemRef0<MemInt*, float&>; // expected-note{{instantiation}}
-
-template struct ArrowMemRef0<ArrowWrapper<MemInt*>, int&>;
-template struct ArrowMemRef0<ArrowWrapper<InheritsMemInt*>, int&>;
-template struct ArrowMemRef0<ArrowWrapper<MemIntFunc*>, int (*)(int)>;
-template struct ArrowMemRef0<ArrowWrapper<MemInt*>, float&>; // expected-note{{instantiation}}
-template struct ArrowMemRef0<ArrowWrapper<ArrowWrapper<MemInt*> >, int&>;
-
-struct UnresolvedMemRefArray {
-  int f(int);
-  int f(char);
-};
-UnresolvedMemRefArray Arr[10];
-template<typename U> int UnresolvedMemRefArrayT(U u) {
-  return Arr->f(u);
-}
-template int UnresolvedMemRefArrayT<int>(int);
-
-// FIXME: we should be able to return a MemInt without the reference!
-MemInt &createMemInt(int);
-
-template<int N>
-struct NonDepMemberExpr0 {
-  void f() {
-    createMemInt(N).m = N;
-  }
-};
-
-template struct NonDepMemberExpr0<0>; 
-
-template<typename T, typename Result>
-struct MemberFuncCall0 {
-  void f(T t) {
-    Result result = t.f();
-  }
-};
-
-template<typename T>
-struct HasMemFunc0 {
-  T f();
-};
-
-
-template struct MemberFuncCall0<HasMemFunc0<int&>, const int&>;
-
-template<typename Result>
-struct ThisMemberFuncCall0 {
-  Result g();
-
-  void f() {
-    Result r1 = g();
-    Result r2 = this->g();
-  }
-};
-
-template struct ThisMemberFuncCall0<int&>;
-
-template<typename T>
-struct NonDepMemberCall0 {
-  void foo(HasMemFunc0<int&> x) {
-    T result = x.f(); // expected-error{{non-const lvalue reference}}
-  }
-};
-
-template struct NonDepMemberCall0<int&>;
-template struct NonDepMemberCall0<const int&>;
-template struct NonDepMemberCall0<float&>; // expected-note{{instantiation}}
-
-
-template<typename T>
-struct QualifiedDeclRef0 {
-  T f() {
-    return is_pod<X>::value; // expected-error{{non-const lvalue reference to type 'int' cannot bind to a value of unrelated type 'const bool'}}
-  }
-};
-
-template struct QualifiedDeclRef0<bool>;
-template struct QualifiedDeclRef0<int&>; // expected-note{{instantiation}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-5.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-5.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-5.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,38 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <class A> int x(A x) { return x++; }
-int y() { return x<int>(1); }
-
-namespace PR5880 {
-  template<typename T>
-  struct A { 
-    static const int a  = __builtin_offsetof(T, a.array[5].m); // expected-error{{no member named 'a' in 'HasM'}}
-  };
-  struct HasM {
-    float m;
-  };
-
-  struct ArrayOfHasM {
-    HasM array[10];
-  };
-
-  struct B { ArrayOfHasM a; };
-  A<B> x;
-  A<HasM> x2; // expected-note{{in instantiation of}}
-
-  template<typename T>
-  struct AnonymousUnion {
-    union {
-      int i;
-      float f;
-    };
-  };
-
-  template<typename T>
-  void test_anon_union() {
-    int array1[__builtin_offsetof(AnonymousUnion<T>, f) == 0? 1 : -1];
-    int array2[__builtin_offsetof(AnonymousUnion<int>, f) == 0? 1 : -1];
-  }
-
-  template void test_anon_union<int>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-basic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-basic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-expr-basic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wno-unused-value -std=c++11 %s
-
-template <typename T>
-struct S {
-  void f() {
-    __func__; // PredefinedExpr
-    10;       // IntegerLiteral
-    10.5;     // FloatingLiteral
-    'c';      // CharacterLiteral
-    "hello";  // StringLiteral
-    true;     // CXXBooleanLiteralExpr
-    nullptr;  // CXXNullPtrLiteralExpr
-    __null;   // GNUNullExpr
-  }
-};
-
-template struct S<int>;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-field.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-field.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-field.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,104 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X {
-  int x;
-  T y; // expected-error{{data member instantiated with function type}}
-  T* z;
-  T bitfield : 12; // expected-error{{bit-field 'bitfield' has non-integral type 'float'}} \
-                  // expected-error{{data member instantiated with function type}}
-
-  mutable T x2; // expected-error{{data member instantiated with function type}}
-};
-
-void test1(const X<int> *xi) {
-  int i1 = xi->x;
-  const int &i2 = xi->y;
-  int* ip1 = xi->z;
-  int i3 = xi->bitfield;
-  xi->x2 = 17;
-}
-
-void test2(const X<float> *xf) {
-  (void)xf->x; // expected-note{{in instantiation of template class 'X<float>' requested here}}
-}
-
-void test3(const X<int(int)> *xf) {
-  (void)xf->x; // expected-note{{in instantiation of template class 'X<int (int)>' requested here}}
-}
-
-namespace PR7123 {
-  template <class > struct requirement_;
-
-  template <void(*)()> struct instantiate
-  { };
-
-  template <class > struct requirement ;
-  struct failed ;
-
-  template <class Model> struct requirement<failed *Model::*>
-  {
-    static void failed()
-    {
-      ((Model*)0)->~Model(); // expected-note{{in instantiation of}}
-    }
-  };
-
-  template <class Model> struct requirement_<void(*)(Model)> : requirement<failed *Model::*>
-  { };
-
-  template <int> struct Requires_
-  { typedef void type; };
-
-  template <class Model> struct usage_requirements
-  {
-    ~usage_requirements()
-    {((Model*)0)->~Model(); } // expected-note{{in instantiation of}}
-  };
-
-  template < typename TT > struct BidirectionalIterator
-  {
-    enum
-      { value = 0 };
-  
-    instantiate< requirement_<void(*)(usage_requirements<BidirectionalIterator>)>::failed> int534; // expected-note{{in instantiation of}}
-  
-    ~BidirectionalIterator()
-    { i--; } // expected-error{{cannot decrement value of type 'PR7123::X'}}
-  
-    TT i;
-  };
-
-  struct X
-  { };
-
-  template<typename RanIter> 
-  typename Requires_< BidirectionalIterator<RanIter>::value >::type sort(RanIter,RanIter){}
-
-  void f()
-  {
-    X x;
-    sort(x,x);
-  }
-}
-
-namespace PR7355 {
-  template<typename T1> class A {
-    class D; // expected-note{{declared here}}
-    D d; //expected-error{{implicit instantiation of undefined member 'PR7355::A<int>::D'}}
-  };
-
-  A<int> ai; // expected-note{{in instantiation of}}
-}
-
-namespace PR8712 {
-  template <int dim>
-  class B {
-  public:
-    B(const unsigned char i);
-    unsigned char value : (dim > 0 ? dim : 1);
-  };
-
-  template <int dim>
-  inline B<dim>::B(const unsigned char i) : value(i) {}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-friend-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-friend-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-friend-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// PR4794
-
-template <class T> class X
-{
-  friend class Y;
-};
-X<int> y;
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,249 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
-template<typename T, typename U>
-struct X0 {
-  void f(T x, U y) { 
-    (void)(x + y); // expected-error{{invalid operands}}
-  }
-};
-
-struct X1 { };
-
-template struct X0<int, float>;
-template struct X0<int*, int>;
-template struct X0<int X1::*, int>; // expected-note{{instantiation of}}
-
-template<typename T>
-struct X2 {
-  void f(T);
-
-  T g(T x, T y) {
-    /* DeclStmt */;
-    T *xp = &x, &yr = y; // expected-error{{pointer to a reference}}
-    /* NullStmt */;
-  }
-};
-
-template struct X2<int>;
-template struct X2<int&>; // expected-note{{instantiation of}}
-
-template<typename T>
-struct X3 {
-  void f(T) {
-    Label:
-    T x;
-    goto Label;
-  }
-};
-
-template struct X3<int>;
-
-template <typename T> struct X4 {
-  T f() const {
-    return; // expected-error{{non-void function 'f' should return a value}}
-  }
-  
-  T g() const {
-    return 1; // expected-error{{void function 'g' should not return a value}}
-  }
-};
-
-template struct X4<void>; // expected-note{{in instantiation of}}
-template struct X4<int>; // expected-note{{in instantiation of}}
-
-struct Incomplete; // expected-note 2{{forward declaration}}
-
-template<typename T> struct X5 {
-  T f() { } // expected-error{{incomplete result type}}
-};
-void test_X5(X5<Incomplete> x5); // okay!
-
-template struct X5<Incomplete>; // expected-note{{instantiation}}
-
-template<typename T, typename U, typename V> struct X6 {
-  U f(T t, U u, V v) {
-    // IfStmt
-    if (t > 0)
-      return u;
-    else { 
-      if (t < 0)
-        return v; // expected-error{{cannot initialize return object of type}}
-    }
-
-    if (T x = t) {
-      t = x;
-    }
-    return v; // expected-error{{cannot initialize return object of type}}
-  }
-};
-
-struct ConvertibleToInt {
-  operator int() const;
-};
-
-template struct X6<ConvertibleToInt, float, char>;
-template struct X6<bool, int, int*>; // expected-note{{instantiation}}
-
-template <typename T> struct X7 {
-  void f() {
-    void *v = this;
-  }
-};
-
-template struct X7<int>;
-
-template<typename T> struct While0 {
-  void f(T t) {
-    while (t) {
-    }
-
-    while (T t2 = T()) ;
-  }
-};
-
-template struct While0<float>;
-
-template<typename T> struct Do0 {
-  void f(T t) {
-    do {
-    } while (t); // expected-error{{not contextually}}
-  }
-};
-
-struct NotConvertibleToBool { };
-template struct Do0<ConvertibleToInt>;
-template struct Do0<NotConvertibleToBool>; // expected-note{{instantiation}}
-
-template<typename T> struct For0 {
-  void f(T f, T l) {
-    for (; f != l; ++f) {
-      if (*f)
-        continue;
-      else if (*f == 17)
-        break;
-    }
-  }
-};
-
-template struct For0<int*>;
-
-template<typename T> struct Member0 {
-  void f(T t) {
-    t;
-    t.f;
-    t->f;
-    
-    T* tp;
-    tp.f; // expected-error{{member reference base type 'T *' is not a structure or union}}
-    tp->f;
-
-    this->f;
-    this.f; // expected-error{{member reference base type 'Member0<T> *' is not a structure or union}}
-  }
-};
-
-template<typename T, typename U> struct Switch0 {
-  U f(T value, U v0, U v1, U v2) {
-    switch (value) {
-    case 0: return v0;
-
-    case 1: return v1;
-
-    case 2: // fall through
-
-    default:
-      return  v2;
-    }
-  }
-};
-
-template struct Switch0<int, float>;
-
-template<typename T, int I1, int I2> struct Switch1 {
-  T f(T x, T y, T z) {
-    switch (x) {
-    case I1: return y; // expected-note{{previous}}
-    case I2: return z; // expected-error{{duplicate}}
-    default: return x;
-    }
-  }
-};
-
-template struct Switch1<int, 1, 2>;
-template struct Switch1<int, 2, 2>; // expected-note{{instantiation}}
-
-template<typename T> struct IndirectGoto0 {
-  void f(T x) {
-    // FIXME: crummy error message below
-    goto *x; // expected-error{{incompatible}}
-
-  prior:
-    T prior_label;
-    prior_label = &&prior; // expected-error{{assigning to 'int'}}
-
-    T later_label;
-    later_label = &&later; // expected-error{{assigning to 'int'}}
-
-  later:
-    (void)(1+1);
-  }
-};
-
-template struct IndirectGoto0<void*>;
-template struct IndirectGoto0<int>; // expected-note{{instantiation}}
-
-template<typename T> struct TryCatch0 {
-  void f() {
-    try {
-    } catch (T t) { // expected-error{{incomplete type}} \
-                    // expected-error{{abstract class}}
-    } catch (...) {
-    }
-  }
-};
-
-struct Abstract {
-  virtual void foo() = 0; // expected-note{{pure virtual}}
-};
-
-template struct TryCatch0<int>; // okay
-template struct TryCatch0<Incomplete*>; // expected-note{{instantiation}}
-template struct TryCatch0<Abstract>; // expected-note{{instantiation}}
-
-// PR4383
-template<typename T> struct X;
-template<typename T> struct Y : public X<T> {
-  Y& x() { return *this; }
-};
-
-// Make sure our assertions don't get too uppity.
-namespace test0 {
-  template <class T> class A { void foo(T array[10]); };
-  template class A<int>;
-}
-
-namespace PR7016 {
-  template<typename T> void f() { T x = x; }
-  template void f<int>();
-}
-
-namespace PR9880 {
-  struct lua_State;
-  struct no_tag { char a; };			// (A)
-  struct yes_tag { long a; long b; };	// (A)
-
-  template <typename T>
-  struct HasIndexMetamethod {
-    template <typename U>
-    static no_tag check(...);
-    template <typename U>
-    static yes_tag check(char[sizeof(&U::luaIndex)]);
-    enum { value = sizeof(check<T>(0)) == sizeof(yes_tag) };
-  };
-  
-  class SomeClass {
-  public:
-    int luaIndex(lua_State* L);
-  };
-  
-  int i = HasIndexMetamethod<SomeClass>::value;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// XFAIL: *
-
-template<typename T> struct Member0 {
-  void f(T t) {
-    t;
-    t.f;
-    t->f;
-    
-    T* tp;
-    tp.f;
-    tp->f;
-
-    this->f;
-    this.f; // expected-error{{member reference base type 'struct Member0 *const' is not a structure or union}}
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template <typename T> struct S {
-  S() { }
-  S(T t);
-};
-
-template struct S<int>;
-
-void f() {
-  S<int> s1;
-  S<int> s2(10);
-}
-
-namespace PR7184 {
-  template<typename T>
-  void f() {
-    typedef T type;
-    void g(int array[sizeof(type)]);
-  }
-
-  template void f<int>();
-}
-
-namespace UsedAttr {
-  template<typename T>
-  void __attribute__((used)) foo() {
-    T *x = 1; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}}
-  }
-
-  void bar() {
-    foo<int>(); // expected-note{{instantiation of}}
-  }
-}
-
-namespace PR9654 {
-  typedef void ftype(int);
-
-  template<typename T>
-  ftype f;
-
-  void g() {
-    f<int>(0);
-  }
-}
-
-namespace AliasTagDef {
-  template<typename T>
-  T f() {
-    using S = struct { // expected-warning {{C++11}}
-      T g() {
-        return T();
-      }
-    };
-    return S().g();
-  }
-
-  int n = f<int>();
-}
-
-namespace PR10273 {
-  template<typename T> void (f)(T t) {}
-
-  void g() {
-    (f)(17);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-params.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-params.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-function-params.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR6619
-template<bool C> struct if_c { };
-template<typename T1> struct if_ {
-  typedef if_c< static_cast<bool>(T1::value)> almost_type_; // expected-note 5{{in instantiation}}
-};
-template <class Model, void (Model::*)()> struct wrap_constraints { };
-template <class Model> 
-inline char has_constraints_(Model* ,  // expected-note 2{{while substituting deduced template arguments into function template 'has_constraints_' [with }} \
-                             // expected-note 3{{candidate template ignored}}
-                               wrap_constraints<Model,&Model::constraints>* = 0); // expected-note 2{{in instantiation}}
-
-template <class Model> struct not_satisfied {
-  static const bool value = sizeof( has_constraints_((Model*)0)  == 1); // expected-error 3{{no matching function}}
-};
-template <class ModelFn> struct requirement_;
-template <void(*)()> struct instantiate {
-};
-template <class Model> struct requirement_<void(*)(Model)>                           : if_<       not_satisfied<Model>         >::type { // expected-note 5{{in instantiation}}
-};
-template <class Model> struct usage_requirements {
-};
-template < typename TT > struct InputIterator                            {
-    typedef  instantiate< & requirement_<void(*)(usage_requirements<InputIterator> x)>::failed> boost_concept_check1; // expected-note {{in instantiation}}
-};
-template < typename TT > struct ForwardIterator                              : InputIterator<TT>                              { // expected-note {{in instantiation}}
-  typedef instantiate< & requirement_<void(*)(usage_requirements<ForwardIterator> x)>::failed> boost_concept_check2; // expected-note {{in instantiation}}
-
-};
-typedef instantiate< &requirement_<void(*)(ForwardIterator<char*> x)>::failed> boost_concept_checkX;// expected-note 3{{in instantiation}}
-
-template<typename T> struct X0 { };
-template<typename R, typename A1> struct X0<R(A1 param)> { };
-
-template<typename T, typename A1, typename A2>
-void instF0(X0<T(A1)> x0a, X0<T(A2)> x0b) {
-  X0<T(A1)> x0c;
-  X0<T(A2)> x0d;
-}
-
-template void instF0<int, int, float>(X0<int(int)>, X0<int(float)>);
-
-template<typename R, typename A1, R (*ptr)(A1)> struct FuncPtr { };
-template<typename A1, int (*ptr)(A1)> struct FuncPtr<int, A1, ptr> { };
-
-template<typename R, typename A1> R unary_func(A1);
-
-template<typename R, typename A1, typename A2>
-void use_func_ptr() {
-  FuncPtr<R, A1, &unary_func<R, A1> > fp1;
-  FuncPtr<R, A2, &unary_func<R, A2> > fp2;
-};
-
-template void use_func_ptr<int, float, double>();
-
-namespace PR6990 {
-  template < typename , typename = int, typename = int > struct X1;
-  template <typename >
-  struct X2;
-
-  template <typename = int *, typename TokenT = int,
-            typename = int( X2<TokenT> &)> 
-  struct X3
-  {
-  };
-
-  template <typename , typename P> 
-  struct X3_base : X3< X1<int, P> >
-  {
-  protected: typedef X1< P> type;
-    X3<type> e;
-  };
-
-  struct r : X3_base<int, int>
-  {
-  };
-}
-
-namespace InstantiateFunctionTypedef {
-  template<typename T>
-  struct X {
-    typedef int functype(int, int);
-    functype func;
-  };
-
-  void f(X<int> x) {
-    (void)x.func(1, 2);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-init.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-init.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-init.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,120 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-struct X0 { // expected-note 8{{candidate}}
-  X0(int*, float*); // expected-note 4{{candidate}}
-};
-
-template<typename T, typename U>
-X0 f0(T t, U u) {
-  X0 x0(t, u); // expected-error{{no matching}}
-  return X0(t, u); // expected-error{{no matching}}
-}
-
-void test_f0(int *ip, float *fp, double *dp) {
-  f0(ip, fp);
-  f0(ip, dp); // expected-note{{instantiation}}
-}
-
-template<typename Ret, typename T, typename U>
-Ret f1(Ret *retty, T t, U u) {
-  Ret r0(t, u); // expected-error{{no matching}}
-  return Ret(t, u); // expected-error{{no matching}}
-}
-
-void test_f1(X0 *x0, int *ip, float *fp, double *dp) {
-  f1(x0, ip, fp);
-  f1(x0, ip, dp); // expected-note{{instantiation}}
-}
-
-namespace PR6457 {
-  template <typename T> struct X { explicit X(T* p = 0) { }; };
-  template <typename T> struct Y { Y(int, const T& x); };
-  struct A { };
-  template <typename T>
-  struct B {
-    B() : y(0, X<A>()) { }
-    Y<X<A> > y;
-  };
-  B<int> b;
-}
-
-namespace PR6657 {
-  struct X
-  {
-    X (int, int) { }
-  };
-
-  template <typename>
-  void f0()
-  {
-    X x = X(0, 0);
-  }
-
-  void f1()
-  {
-    f0<int>();
-  }
-}
-
-// Instantiate out-of-line definitions of static data members which complete
-// types through an initializer even when the only use of the member that would
-// cause instantiation is in an unevaluated context, but one requiring its
-// complete type.
-namespace PR10001 {
-  template <typename T> struct S {
-    static const int arr[];
-    static const int x;
-    static int f();
-  };
-
-  template <typename T> const int S<T>::arr[] = { 1, 2, 3 };
-  template <typename T> const int S<T>::x = sizeof(arr) / sizeof(arr[0]);
-  template <typename T> int S<T>::f() { return x; }
-
-  int x = S<int>::f();
-}
-
-namespace PR7985 {
-  template<int N> struct integral_c { };
-
-  template <typename T, int N>
-  integral_c<N> array_lengthof(T (&x)[N]) { return integral_c<N>(); } // expected-note 2{{candidate template ignored: could not match 'T [N]' against 'const Data<}}
-
-  template<typename T>
-  struct Data {
-    T x;
-  };
-
-  template<typename T>
-  struct Description {
-    static const Data<T> data[];
-  };
-
-  template<typename T>
-  const Data<T> Description<T>::data[] = {{ 1 }}; // expected-error{{cannot initialize a member subobject of type 'int *' with an rvalue of type 'int'}}
-
-  template<>
-  const Data<float*> Description<float*>::data[];
-
-  void test() {
-    integral_c<1> ic1 = array_lengthof(Description<int>::data);
-    (void)sizeof(array_lengthof(Description<float>::data));
-
-    sizeof(array_lengthof( // expected-error{{no matching function for call to 'array_lengthof'}}
-                          Description<int*>::data // expected-note{{in instantiation of static data member 'PR7985::Description<int *>::data' requested here}}
-                          ));
-
-    array_lengthof(Description<float*>::data); // expected-error{{no matching function for call to 'array_lengthof'}}
-  }
-}
-
-namespace PR13064 {
-  // Ensure that in-class direct-initialization is instantiated as
-  // direct-initialization and likewise copy-initialization is instantiated as
-  // copy-initialization.
-  struct A { explicit A(int); }; // expected-note{{here}}
-  template<typename T> struct B { T a { 0 }; };
-  B<A> b;
-  template<typename T> struct C { T a = { 0 }; }; // expected-error{{explicit}}
-  C<A> c; // expected-note{{here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-invalid.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-invalid.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-invalid.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-// RUN: not %clang_cc1 -fsyntax-only %s
-namespace PR6375 {
-  template<class Conv> class rasterizer_sl_clip Conv::xi(x2), Conv::yi(y2));
-namespace agg
-{
-	template<class Clip=rasterizer_sl_clip_int> class rasterizer_scanline_aa
-	{
-		template<class Scanline> bool sweep_scanline(Scanline& sl)
-		{
-			unsigned num_cells = m_outline.scanline_num_cells(m_scan_y);
-			while(num_cells) { }
-		}
-	}
-    class scanline_u8 {}
-    template<class PixelFormat> class renderer_base { }
-}
-    template<class Rasterizer, class Scanline, class BaseRenderer, class ColorT>
-    void render_scanlines_aa_solid(Rasterizer& ras, Scanline& sl, BaseRenderer& ren, const ColorT& color)
-    {
-            while(ras.sweep_scanline(sl))
-            {
-        }
-    };
-namespace agg
-{
-    struct rgba8
-    {
-    };
-    template<class Rasterizer, class Scanline, class Renderer, class Ctrl>
-    void render_ctrl(Rasterizer& ras, Scanline& sl, Renderer& r, Ctrl& c)
-    {
-        unsigned i;
-            render_scanlines_aa_solid(ras, sl, r, c.color(i));
-        }
-    template<class ColorT> class rbox_ctrl : public rbox_ctrl_impl
-    {
-        const ColorT& color(unsigned i) const { return *m_colors[i]; }
-    }
-class the_application : public agg::platform_support
-{
-    agg::rbox_ctrl<agg::rgba8> m_polygons;
-    virtual void on_init()
-    {
-        typedef agg::renderer_base<pixfmt_type> base_ren_type;
-        base_ren_type ren_base(pf);
-        agg::scanline_u8 sl;
-        agg::rasterizer_scanline_aa<> ras;
-        agg::render_ctrl(ras, sl, ren_base, m_polygons);
-    }
-};
-}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-local-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-local-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-local-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -verify %s
-// expected-no-diagnostics
-template<typename T>
-void f0() {
-  struct X;
-  typedef struct Y {
-    T (X::* f1())(int) { return 0; }
-  } Y2;
-
-  Y2 y = Y();
-}
-
-template void f0<int>();
-
-// PR5764
-namespace PR5764 {
-  struct X {
-    template <typename T>
-    void Bar() {
-      typedef T ValueType;
-      struct Y {
-        Y() { V = ValueType(); }
-
-        ValueType V;
-      };
-
-      Y y;
-    }
-  };
-
-  void test(X x) {
-    x.Bar<int>();
-  }
-}
-
-// Instantiation of local classes with virtual functions.
-namespace local_class_with_virtual_functions {
-  template <typename T> struct X { };
-  template <typename T> struct Y { };
-
-  template <typename T>
-  void f() {
-    struct Z : public X<Y<T>*> {
-      virtual void g(Y<T>* y) { }
-      void g2(int x) {(void)x;}
-    };
-    Z z;
-    (void)z;
-  }
-
-  struct S { };
-  void test() { f<S>(); }
-}
-
-namespace PR8801 {
-  template<typename T>
-  void foo() {
-    class X;
-    typedef int (X::*pmf_type)();
-    class X : public T { };
-    
-    pmf_type pmf = &T::foo;
-  }
-
-  struct Y { int foo(); };
-
-  template void foo<Y>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,143 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace PR8965 {
-  template<typename T>
-  struct X {
-    typedef int type;
-
-    T field; // expected-note{{in instantiation of member class}}
-  };
-
-  template<typename T>
-  struct Y {
-    struct Inner;
-
-    typedef typename X<Inner>::type // expected-note{{in instantiation of template class}}
-      type; // expected-note{{not-yet-instantiated member is declared here}}
-
-    struct Inner {
-      typedef type field; // expected-error{{no member 'type' in 'PR8965::Y<int>'; it has not yet been instantiated}}
-    };
-  };
-
-  Y<int> y; // expected-note{{in instantiation of template class}}
-}
-
-template<typename T>
-class X {
-public:
-  struct C { T &foo(); };
-
-  struct D {
-    struct E { T &bar(); }; // expected-error{{cannot form a reference to 'void'}}
-    struct F; // expected-note{{member is declared here}}
-  };
-};
-
-X<int>::C *c1;
-X<float>::C *c2;
-
-X<int>::X *xi; // expected-error{{qualified reference to 'X' is a constructor name rather than a type wherever a constructor can be declared}}
-X<float>::X *xf; // expected-error{{qualified reference to 'X' is a constructor name rather than a type wherever a constructor can be declared}}
-
-void test_naming() {
-  c1 = c2; // expected-error{{assigning to 'X<int>::C *' from incompatible type 'X<float>::C *'}}
-  xi = xf;  // expected-error{{assigning to 'X<int>::X<int> *' from incompatible type 'X<float>::X<float> *'}}
-    // FIXME: error above doesn't print the type X<int>::X cleanly!
-}
-
-void test_instantiation(X<double>::C *x,
-                        X<float>::D::E *e,
-                        X<float>::D::F *f) {
-  double &dr = x->foo();
-  float &fr = e->bar();
-  f->foo(); // expected-error{{implicit instantiation of undefined member 'X<float>::D::F'}}
-  
-}
-
-
-X<void>::C *c3; // okay
-X<void>::D::E *e1; // okay
-X<void>::D::E e2; // expected-note{{in instantiation of member class 'X<void>::D::E' requested here}}
-
-// Redeclarations.
-namespace test1 {
-  template <typename T> struct Registry {
-    struct node;
-    static node *Head;
-    struct node {
-      node(int v) { Head = this; }
-    };
-  };
-  void test() {
-    Registry<int>::node node(0);
-  }
-}
-
-// Redeclarations during explicit instantiations.
-namespace test2 {
-  template <typename T> class A {
-    class Foo;
-    class Foo {
-      int foo();
-    };
-  };
-  template class A<int>;
-
-  template <typename T> class B {
-    class Foo;
-    class Foo {
-    public:
-      typedef int X;
-    };
-    typename Foo::X x;
-    class Foo;
-  };
-  template class B<int>;
-
-  template <typename T> class C {
-    class Foo;
-    class Foo;
-  };
-  template <typename T> class C<T>::Foo {
-    int x;
-  };
-  template class C<int>;
-}
-
-namespace AliasTagDef {
-  template<typename T>
-  struct F {
-    using S = struct U { // expected-warning {{C++11}}
-      T g() {
-        return T();
-      }
-    };
-  };
-
-  int m = F<int>::S().g();
-  int n = F<int>::U().g();
-}
-
-namespace rdar10397846 {
-  template<int I> struct A
-  {
-    struct B
-    {
-      struct C { C() { int *ptr = I; } }; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}} \
-                                             expected-warning{{expression which evaluates to zero treated as a null pointer constant of type 'int *'}}
-    };
-  };
-
-  template<int N> void foo()
-  {
-    class A<N>::B::C X; // expected-note 2 {{in instantiation of member function}}
-    int A<N+1>::B::C::*member = 0;
-  }
-
-  void bar()
-  {
-    foo<0>(); // expected-note{{in instantiation of function template}}
-    foo<1>(); // expected-note{{in instantiation of function template}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,83 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -pedantic
-template<typename T>
-struct S {
- S() { }
-};
-
-template<typename T>
-struct vector {
-  void push_back(const T&) { int a[sizeof(T) ? -1: -1]; } // expected-error {{array with a negative size}}
-};
-
-class ExprEngine {
-public:
- typedef vector<S<void *> >CheckersOrdered;
- CheckersOrdered Checkers;
-
- template <typename CHECKER>
- void registerCheck(CHECKER *check) {
-   Checkers.push_back(S<void *>()); // expected-note {{in instantiation of member function 'vector<S<void *> >::push_back' requested here}}
- }
-};
-
-class RetainReleaseChecker { };
-
-void f(ExprEngine& Eng) {
-   Eng.registerCheck(new RetainReleaseChecker); // expected-note {{in instantiation of function template specialization 'ExprEngine::registerCheck<RetainReleaseChecker>' requested here}}
-}
-
-// PR 5838
-namespace test1 {
-  template<typename T> struct A {
-    int a;
-  };
-
-  template<typename T> struct B : A<float>, A<T> {
-    void f() {
-      a = 0; // should not be ambiguous
-    }
-  };
-  template struct B<int>;
-
-  struct O {
-    int a;
-    template<typename T> struct B : A<T> {
-      void f() {
-        a = 0; // expected-error {{'test1::O::a' is not a member of class 'test1::O::B<int>'}}
-      }
-    };
-  };
-  template struct O::B<int>; // expected-note {{in instantiation}}
-}
-
-// PR7248
-namespace test2 {
-  template <class T> struct A {
-    void foo() {
-      T::bar(); // expected-error {{type 'int' cannot}}
-    }
-  };
-
-  template <class T> class B {
-    void foo(A<T> a) {
-      a.test2::template A<T>::foo(); // expected-note {{in instantiation}}
-    }
-  };
-
-  template class B<int>;
-}
-
-namespace PR14124 {
-  template<typename T> struct S {
-    int value;
-  };
-  template<typename T> void f() { S<T>::value; } // expected-error {{invalid use of non-static data member 'value'}}
-  template void f<int>(); // expected-note {{in instantiation of}}
-
-  struct List { List *next; };
-  template<typename T, T *(T::*p) = &T::next> struct A {};
-  A<List> a; // ok
-  void operator&(struct Whatever);
-  template<typename T, T *(T::*p) = &T::next> struct B {};
-  B<List> b; // still ok
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wall -verify %s
-
-template<typename T> struct A {
-  A() : a(1) { } // expected-error{{cannot initialize a member subobject of type 'void *' with an rvalue of type 'int'}}
-
-  T a;
-};
-
-A<int> a0;
-A<void*> a1; // expected-note{{in instantiation of member function 'A<void *>::A' requested here}}
-
-template<typename T> struct B {
-  B() : b(1), // expected-warning {{field 'b' will be initialized after field 'a'}}
-    a(2) { }
-  
-  int a;
-  int b;
-};
-
-B<int> b0; // expected-note {{in instantiation of member function 'B<int>::B' requested here}}
-
-template <class T> struct AA { AA(int); };
-template <class T> class BB : public AA<T> {
-public:
-  BB() : AA<T>(1) {}
-};
-BB<int> x;
-
-struct X {
-  X();
-};
-template<typename T>
-struct Y {
-  Y() : x() {}
-  X x;
-};
-Y<int> y;
-
-template<typename T> struct Array {
-  int a[3];
-  Array() : a() {}
-};
-Array<int> s;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-pointers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-pointers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-pointers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,67 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-struct Y {
-  int x;
-};
-
-template<typename T>
-struct X1 {
-  int f(T* ptr, int T::*pm) { // expected-error{{member pointer}}
-    return ptr->*pm;
-  }
-};
-
-template struct X1<Y>;
-template struct X1<int>; // expected-note{{instantiation}}
-
-template<typename T, typename Class>
-struct X2 {
-  T f(Class &obj, T Class::*pm) { // expected-error{{to a reference}} \
-                      // expected-error{{member pointer to void}}
-    return obj.*pm; 
-  }
-};
-
-template struct X2<int, Y>;
-template struct X2<int&, Y>; // expected-note{{instantiation}}
-template struct X2<const void, Y>; // expected-note{{instantiation}}
-
-template<typename T, typename Class, T Class::*Ptr>
-struct X3 {
-  X3<T, Class, Ptr> &operator=(const T& value) {
-    return *this;
-  }
-};
-
-X3<int, Y, &Y::x> x3;
-
-typedef int Y::*IntMember;
-
-template<IntMember Member>
-struct X4 {
-  X3<int, Y, Member> member;
-  
-  int &getMember(Y& y) { return y.*Member; }
-};
-
-int &get_X4(X4<&Y::x> x4, Y& y) { 
-  return x4.getMember(y); 
-}
-
-template<IntMember Member>
-void accept_X4(X4<Member>);
-
-void test_accept_X4(X4<&Y::x> x4) {
-  accept_X4(x4);
-}
-
-namespace ValueDepMemberPointer {
-  template <void (*)()> struct instantiate_function {};
-  template <typename T> struct S {
-    static void instantiate();
-    typedef instantiate_function<&S::instantiate> x; // expected-note{{instantiation}}
-  };
-  template <typename T> void S<T>::instantiate() {
-    int a[(int)sizeof(T)-42]; // expected-error{{array with a negative size}}
-  }
-  S<int> s; 
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-member-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,261 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct X0 {
-  template<typename U> T f0(U);
-  template<typename U> U& f1(T*, U); // expected-error{{pointer to a reference}} \
-                                     // expected-note{{candidate}}
-};
-
-X0<int> x0i;
-X0<void> x0v;
-X0<int&> x0ir; // expected-note{{instantiation}}
-
-void test_X0(int *ip, double *dp) {
-  X0<int> xi;
-  int i1 = xi.f0(ip);
-  double *&dpr = xi.f1(ip, dp);
-  xi.f1(dp, dp); // expected-error{{no matching}}
-
-  X0<void> xv;
-  double *&dpr2 = xv.f1(ip, dp);
-}
-
-template<typename T>
-struct X1 {
-  template<typename U>
-  struct Inner0 {
-    U x; 
-    T y; // expected-error{{void}}
-  };
-
-  template<typename U>
-  struct Inner1 {
-    U x; // expected-error{{void}}
-    T y;
-  };
-  
-  template<typename U>
-  struct Inner2 {
-    struct SuperInner {
-      U z; // expected-error{{void}}
-    };
-  };
-  
-  template<typename U>
-  struct Inner3 {
-    void f0(T t, U u) { // expected-note{{passing argument to parameter 't' here}}
-      (void)(t + u); // expected-error{{invalid operands}}
-    }
-    
-    template<typename V>
-    V f1(T t, U u, V) {
-      return t + u; // expected-error{{cannot initialize return object}}
-    }
-  };
-  
-  template<typename U>
-  struct Inner4;
-};
-
-template<typename T>
-template<typename U>
-struct X1<T>::Inner4 {
-  template<typename V>
-  V f2(T t, U u, V);
-  
-  static U value;
-};
-
-template<typename T>
-template<typename U>
-U X1<T>::Inner4<U>::value; // expected-error{{reference variable}}
-
-template<typename T>
-template<typename U>
-template<typename V>
-V X1<T>::Inner4<U>::f2(T t, U u, V) {
-  return t + u; // expected-error{{cannot initialize return object}}
-}
-
-void test_X1(int *ip, int i, double *dp) {
-  X1<void>::Inner0<int> *xvip; // okay
-  X1<void>::Inner0<int> xvi; // expected-note{{instantiation}}
-  
-  X1<int>::Inner1<void> *xivp; // okay
-  X1<int>::Inner1<void> xiv; // expected-note{{instantiation}}
-  
-  X1<int>::Inner2<void>::SuperInner *xisivp; // okay
-  X1<int>::Inner2<void>::SuperInner xisiv; // expected-note{{instantiation}}
-  
-  X1<int*>::Inner3<int> id3;
-  id3.f0(ip, i);
-  id3.f0(dp, i); // expected-error{{cannot initialize a parameter of type 'int *' with an lvalue of type 'double *'}}
-  id3.f1(ip, i, ip);
-  id3.f1(ip, i, dp); // expected-note{{instantiation}}
-  
-  X1<int*>::Inner3<double*> id3b;
-  id3b.f0(ip, dp); // expected-note{{instantiation}}
-  
-  X1<int*>::Inner4<int> id4;
-  id4.f2(ip, i, dp); // expected-note{{instantiation}}
-  
-  X1<int*>::Inner4<int>::value = 17;
-  i = X1<int*>::Inner4<int&>::value; // expected-note{{instantiation}}
-}
-
-
-template<typename T>
-struct X2 {
-  template<T *Ptr> // expected-error{{pointer to a reference}}
-  struct Inner;
-  
-  template<T Value> // expected-error{{cannot have type 'float'}}
-  struct Inner2;
-};
-
-X2<int&> x2a; // expected-note{{instantiation}}
-X2<float> x2b; // expected-note{{instantiation}}
-
-namespace N0 {
-  template<typename T>
-  struct X0 { };
-  
-  struct X1 {
-    template<typename T> void f(X0<T>& vals) { g(vals); }
-    template<typename T> void g(X0<T>& vals) { }
-  };
-  
-  void test(X1 x1, X0<int> x0i, X0<long> x0l) {
-    x1.f(x0i);
-    x1.f(x0l);
-  }  
-}
-
-namespace PR6239 {
-  template <typename T>  
-  struct X0 {  
-    class type {
-      typedef T E;    
-      template <E e>  // subsitute T for E and bug goes away
-      struct sfinae {  };  
-      
-      template <class U>  
-      typename sfinae<&U::operator=>::type test(int);  
-    };
-  };
-
-  template <typename T>  
-  struct X1 {  
-    typedef T E;    
-    template <E e>  // subsitute T for E and bug goes away
-    struct sfinae {  };  
-    
-    template <class U>  
-    typename sfinae<&U::operator=>::type test(int);  
-  };
-
-}
-
-namespace PR7587 {
-  template<typename> class X0;
-  template<typename> struct X1;
-  template<typename> class X2;
-
-  template<typename T> class X3
-  {
-    template<
-      template<typename> class TT,
-      typename U = typename X1<T>::type
-    > 
-    struct Inner {
-      typedef X2<TT<typename X1<T>::type> > Type;
-    };
-
-    const typename Inner<X0>::Type minCoeff() const;
-  };
-
-  template<typename T> class X3<T*>
-  {
-    template<
-      template<typename> class TT,
-      typename U = typename X1<T>::type
-    > 
-    struct Inner {
-      typedef X2<TT<typename X1<T>::type> > Type;
-    };
-
-    const typename Inner<X0>::Type minCoeff() const;
-  };
-
-}
-
-namespace PR7669 {
-  template<class> struct X {
-    template<class> struct Y {
-      template<int,class> struct Z;
-      template<int Dummy> struct Z<Dummy,int> {};
-    };
-  };
-
-  void a()
-  {
-    X<int>::Y<int>::Z<0,int>();
-  }
-}
-
-namespace PR8489 {
-  template <typename CT>
-  class C {
-    template<typename FT>
-    void F() {} // expected-note{{FT}}
-  };
-  void f() {
-    C<int> c;
-    c.F(); // expected-error{{no matching member function}}
-  }
-}
-
-namespace rdar8986308 {
-  template <bool> struct __static_assert_test;
-  template <> struct __static_assert_test<true> {};
-  template <unsigned> struct __static_assert_check {};
-
-  namespace std {
-
-    template <class _Tp, class _Up>
-    struct __has_rebind
-    {
-    private:
-      struct __two {char _; char __;};
-      template <class _Xp> static __two __test(...);
-      template <class _Xp> static char __test(typename _Xp::template rebind<_Up>* = 0);
-    public:
-      static const bool value = sizeof(__test<_Tp>(0)) == 1;
-    };
-
-  }
-
-  template <class T> struct B1 {};
-
-  template <class T>
-  struct B
-  {
-    template <class U> struct rebind {typedef B1<U> other;};
-  };
-
-  template <class T, class U> struct D1 {};
-
-  template <class T, class U>
-  struct D
-  {
-    template <class V> struct rebind {typedef D1<V, U> other;};
-  };
-
-  int main()
-  {
-    typedef __static_assert_check<sizeof(__static_assert_test<((std::__has_rebind<B<int>, double>::value))>)> __t64;
-    typedef __static_assert_check<sizeof(__static_assert_test<((std::__has_rebind<D<char, int>, double>::value))>)> __t64;
-  }
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-method.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-method.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-method.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,184 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-class X {
-public:
-  void f(T x); // expected-error{{argument may not have 'void' type}}
-  void g(T*);
-
-  static int h(T, T); // expected-error {{argument may not have 'void' type}}
-};
-
-int identity(int x) { return x; }
-
-void test(X<int> *xi, int *ip, X<int(int)> *xf) {
-  xi->f(17);
-  xi->g(ip);
-  xf->f(&identity);
-  xf->g(identity);
-  X<int>::h(17, 25);
-  X<int(int)>::h(identity, &identity);
-}
-
-void test_bad() {
-  X<void> xv; // expected-note{{in instantiation of template class 'X<void>' requested here}}
-}
-
-template<typename T, typename U>
-class Overloading {
-public:
-  int& f(T, T); // expected-note{{previous declaration is here}}
-  float& f(T, U); // expected-error{{functions that differ only in their return type cannot be overloaded}}
-};
-
-void test_ovl(Overloading<int, long> *oil, int i, long l) {
-  int &ir = oil->f(i, i);
-  float &fr = oil->f(i, l);
-}
-
-void test_ovl_bad() {
-  Overloading<float, float> off; // expected-note{{in instantiation of template class 'Overloading<float, float>' requested here}}
-}
-
-template<typename T>
-class HasDestructor {
-public:
-  virtual ~HasDestructor() = 0;
-};
-
-int i = sizeof(HasDestructor<int>); // FIXME: forces instantiation, but 
-                // the code below should probably instantiate by itself.
-int abstract_destructor[__is_abstract(HasDestructor<int>)? 1 : -1];
-
-
-template<typename T>
-class Constructors {
-public:
-  Constructors(const T&);
-  Constructors(const Constructors &other);
-};
-
-void test_constructors() {
-  Constructors<int> ci1(17);
-  Constructors<int> ci2 = ci1;
-}
-
-
-template<typename T>
-struct ConvertsTo {
-  operator T();
-};
-
-void test_converts_to(ConvertsTo<int> ci, ConvertsTo<int *> cip) {
-  int i = ci;
-  int *ip = cip;
-}
-
-// PR4660
-template<class T> struct A0 { operator T*(); };
-template<class T> struct A1;
-
-int *a(A0<int> &x0, A1<int> &x1) {
-  int *y0 = x0;
-  int *y1 = x1; // expected-error{{no viable conversion}}
-}
-
-struct X0Base {
-  int &f();
-  int& g(int);
-  static double &g(double);
-};
-
-template<typename T>
-struct X0 : X0Base {
-};
-
-template<typename U>
-struct X1 : X0<U> {
-  int &f2() { 
-    return X0Base::f();
-  }
-};
-
-void test_X1(X1<int> x1i) {
-  int &ir = x1i.f2();
-}
-
-template<typename U>
-struct X2 : X0Base, U {
-  int &f2() { return X0Base::f(); }
-};
-
-template<typename T>
-struct X3 {
-  void test(T x) {
-    double& d1 = X0Base::g(x);
-  }
-};
-
-
-template struct X3<double>;
-
-// Don't try to instantiate this, it's invalid.
-namespace test1 {
-  template <class T> class A {};
-  template <class T> class B {
-    void foo(A<test1::Undeclared> &a) // expected-error {{no member named 'Undeclared' in namespace 'test1'}}
-    {}
-  };
-  template class B<int>;
-}
-
-namespace PR6947 {
-  template< class T > 
-  struct X {
-    int f0( )      
-    {
-      typedef void ( X::*impl_fun_ptr )( );
-      impl_fun_ptr pImpl = &X::template
-        f0_impl1<int>;
-    }
-  private:                  
-    int f1() {
-    }
-    template< class Processor>                  
-    void f0_impl1( )                 
-    {
-    }
-  };
-
-  char g0() {
-    X<int> pc;
-    pc.f0();
-  }
-
-}
-
-namespace PR7022 {
-  template <typename > 
-  struct X1
-  {
-    typedef int state_t( );
-    state_t g ;
-  };
-
-  template <  typename U = X1<int> > struct X2
-  {
-    X2( U = U())
-    {
-    }
-  };
-
-  void m(void)
-  {
-    typedef X2<> X2_type;
-    X2_type c;
-  }
-}
-
-namespace SameSignatureAfterInstantiation {
-  template<typename T> struct S {
-    void f(T *); // expected-note {{previous}}
-    void f(const T*); // expected-error {{multiple overloads of 'f' instantiate to the same signature 'void (const int *)'}}
-  };
-  S<const int> s; // expected-note {{instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-non-dependent-types.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-non-dependent-types.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-non-dependent-types.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-struct X1 {
-  static void member() { T* x = 1; } // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}}
-};
-
-template<void(*)()> struct instantiate { };
-
-template<typename T>
-struct X2 {
-  typedef instantiate<&X1<int>::member> i; // expected-note{{in instantiation of}}
-};
-
-X2<int> x; 

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-non-type-template-parameter.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-non-type-template-parameter.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-non-type-template-parameter.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// PR5311
-template<typename T>
-class StringSwitch {
-public:
-  template<unsigned N>
-  void Case(const char (&S)[N], const int & Value) {
-  }
-};
-
-void test_stringswitch(int argc, char *argv[]) {
-  (void)StringSwitch<int>();
-}
-
-namespace PR6986 {
-  template<class Class,typename Type,Type Class::*> 
-  struct non_const_member_base
-  {
-  };
-
-  template<class Class,typename Type,Type Class::*PtrToMember> 
-  struct member: non_const_member_base<Class,Type,PtrToMember>
-  {
-  };
-
-  struct test_class
-  {
-    int int_member;
-  };
-  typedef member< test_class,const int,&test_class::int_member > ckey_m;
-  void test()
-  {
-    ckey_m m;
-  }
-}
-
-namespace rdar8980215 {
-  enum E { E1, E2, E3 };
-
-  template<typename T, E e = E2>
-  struct X0 { 
-    X0() {}
-    template<typename U> X0(const X0<U, e> &);
-  };
-
-  template<typename T>
-  struct X1 : X0<T> { 
-    X1() {}
-    template<typename U> X1(const X1<U> &x) : X0<T>(x) { }
-  };
-
-  X1<int> x1i;
-  X1<float> x1f(x1i);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-objc-1.mm
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-objc-1.mm	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-objc-1.mm	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,69 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Obj-C string literal expressions
-template <typename T> struct StringTest {
-  void f() {
-    (void)@"Hello";
-  }
-};
-
-template struct StringTest<int>;
-template struct StringTest<double>;
-
-// @selector expressions
-template <typename T> struct SelectorTest {
-  SEL f() {
-    return @selector(multiple:arguments:);
-  }
-  SEL f2() {
-    return @selector(multiple:arguments:);
-  }
-};
-
-template struct SelectorTest<int>;
-template struct SelectorTest<double>;
-
-// @protocol expressions
- at protocol P
- at end
-
-template <typename T> struct ProtocolTest {
-  void f() {
-    (void)@protocol(P);
-  }
-};
-
-template struct ProtocolTest<int>;
-template struct ProtocolTest<double>;
-
-// @encode expressions
-template <typename T> struct EncodeTest {
-  static const char *encode(T t) { 
-    return @encode(T);
-  }
-};
-
-template struct EncodeTest<int>;
-template struct EncodeTest<double>;
-template struct EncodeTest<wchar_t>;
-
-// @() boxing expressions.
-template <typename T> struct BoxingTest {
-  static id box(T value) {
-    return @(value);                     // expected-error {{illegal type 'int *' used in a boxed expression}} \
-                                         // expected-error {{illegal type 'long double' used in a boxed expression}}
-  }
-};
-
- at interface NSNumber
-+ (NSNumber *)numberWithInt:(int)value;
- at end
-
- at interface NSString
-+ (id)stringWithUTF8String:(const char *)str;
- at end
-
-template struct BoxingTest<int>;
-template struct BoxingTest<const char *>;
-template struct BoxingTest<int *>;        // expected-note {{in instantiation of member function 'BoxingTest<int *>::box' requested here}}
-template struct BoxingTest<long double>;  // expected-note {{in instantiation of member function 'BoxingTest<long double>::box' requested here}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-overload-candidates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-overload-candidates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-overload-candidates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// This is the function actually selected during overload resolution, and the
-// only one defined.
-template <typename T> void f(T*, int) {}
-
-template <typename T> struct S;
-template <typename T> struct S_ : S<T> { typedef int type; }; // expected-note{{in instantiation}}
-template <typename T> struct S {
-  // Force T to have a complete type here so we can observe instantiations with
-  // incomplete types.
-  T t; // expected-error{{field has incomplete type}}
-};
-
-// Provide a bad class and an overload that instantiates templates with it.
-class NoDefinition; // expected-note{{forward declaration}}
-template <typename T> S_<NoDefinition>::type f(T*, NoDefinition*); // expected-note{{in instantiation}}
-
-void test(int x) {
-  f(&x, 0);
-}
-
-// Ensure that we instantiate an overloaded function if it's selected by
-// overload resolution when initializing a function pointer.
-template<typename T> struct X {
-  static T f() { T::error; } // expected-error {{has no members}}
-  static T f(bool);
-};
-void (*p)() = &X<void>().f; // expected-note {{instantiation of}}
-
-namespace PR13098 {
-  struct A {
-    A(int);
-    void operator++() {}
-    void operator+(int) {}
-    void operator+(A) {}
-    void operator[](int) {}
-    void operator[](A) {}
-  };
-  struct B : A {
-    using A::operator++;
-    using A::operator+;
-    using A::operator[];
-  };
-  template<typename T> void f(B b) {
-    ++b;
-    b + 0;
-    b[0];
-  }
-  template void f<void>(B);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-overloaded-arrow.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-overloaded-arrow.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-overloaded-arrow.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-// PR5488
-
-struct X {
-  int x;
-};
-
-struct Iter {
-  X* operator->();
-};
-
-template <typename T>
-void Foo() {
-  (void)Iter()->x;
-}
-
-void Func() {
-  Foo<int>();
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-self.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-self.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-self.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,89 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// Check that we deal with cases where the instantiation of a class template
-// recursively requires the instantiation of the same template.
-namespace test1 {
-  template<typename T> struct A {
-    struct B { // expected-note {{not complete until the closing '}'}}
-      B b; // expected-error {{has incomplete type 'test1::A<int>::B'}}
-    };
-    B b; // expected-note {{in instantiation of}}
-  };
-  A<int> a; // expected-note {{in instantiation of}}
-}
-
-namespace test2 {
-  template<typename T> struct A {
-    struct B {
-      struct C {};
-      char c[1 + C()]; // expected-error {{invalid operands to binary expression}}
-      friend constexpr int operator+(int, C) { return 4; }
-    };
-    B b; // expected-note {{in instantiation of}}
-  };
-  A<int> a; // expected-note {{in instantiation of}}
-}
-
-namespace test3 {
-  // PR12317
-  template<typename T> struct A {
-    struct B {
-      enum { Val = 1 };
-      char c[1 + Val]; // ok
-    };
-    B b;
-  };
-  A<int> a;
-}
-
-namespace test4 {
-  template<typename T> struct M { typedef int type; };
-  template<typename T> struct A {
-    struct B { // expected-note {{not complete until the closing '}'}}
-      int k[typename A<typename M<T>::type>::B().k[0] + 1]; // expected-error {{incomplete type}}
-    };
-    B b; // expected-note {{in instantiation of}}
-  };
-  A<int> a; // expected-note {{in instantiation of}}
-}
-
-// FIXME: PR12298: Recursive constexpr function template instantiation leads to
-// stack overflow.
-#if 0
-namespace test5 {
-  template<typename T> struct A {
-    constexpr T f(T k) { return g(k); }
-    constexpr T g(T k) {
-      return k ? f(k-1)+1 : 0;
-    }
-  };
-  // This should be accepted.
-  constexpr int x = A<int>().f(5);
-}
-
-namespace test6 {
-  template<typename T> constexpr T f(T);
-  template<typename T> constexpr T g(T t) {
-    typedef int arr[f(T())];
-    return t;
-  }
-  template<typename T> constexpr T f(T t) {
-    typedef int arr[g(T())];
-    return t;
-  }
-  // This should be ill-formed.
-  int n = f(0);
-}
-
-namespace test7 {
-  template<typename T> constexpr T g(T t) {
-    return t;
-  }
-  template<typename T> constexpr T f(T t) {
-    typedef int arr[g(T())];
-    return t;
-  }
-  // This should be accepted.
-  int n = f(0);
-}
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-sizeof.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-sizeof.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-sizeof.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-// expected-no-diagnostics
-
-// Make sure we handle contexts correctly with sizeof
-template<typename T> void f(T n) {
-  int buffer[n];
-  [] { int x = sizeof(sizeof(buffer)); }();
-}
-int main() {
-  f<int>(1);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-static-var.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-static-var.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-static-var.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, T Divisor>
-class X {
-public:
-  static const T value = 10 / Divisor; // expected-error{{in-class initializer for static data member is not a constant expression}}
-};
-
-int array1[X<int, 2>::value == 5? 1 : -1];
-X<int, 0> xi0; // expected-note{{in instantiation of template class 'X<int, 0>' requested here}}
-
-
-template<typename T>
-class Y {
-  static const T value = 0; // expected-warning{{in-class initializer for static data member of type 'const float' is a GNU extension}}
-};
-
-Y<float> fy; // expected-note{{in instantiation of template class 'Y<float>' requested here}}
-
-
-// out-of-line static member variables
-
-template<typename T>
-struct Z {
-  static T value;
-};
-
-template<typename T>
-T Z<T>::value; // expected-error{{no matching constructor}}
-
-struct DefCon {};
-
-struct NoDefCon { 
-  NoDefCon(const NoDefCon&); // expected-note{{candidate constructor}}
-};
-
-void test() {
-  DefCon &DC = Z<DefCon>::value;
-  NoDefCon &NDC = Z<NoDefCon>::value; // expected-note{{instantiation}}
-}
-
-// PR5609
-struct X1 {
-  ~X1();  // The errors won't be triggered without this dtor.
-};
-
-template <typename T>
-struct Y1 {
-  static char Helper(T);
-  static const int value = sizeof(Helper(T()));
-};
-
-struct X2 {
-  virtual ~X2();
-};
-
-namespace std {
-  class type_info { };
-}
-
-template <typename T>
-struct Y2 {
-  static T &Helper();
-  static const int value = sizeof(typeid(Helper()));
-};
-
-template <int>
-struct Z1 {};
-
-void Test() {
-  Z1<Y1<X1>::value> x;
-  int y[Y1<X1>::value];
-  Z1<Y2<X2>::value> x2;
-  int y2[Y2<X2>::value];
-}
-
-// PR5672
-template <int n>
-struct X3 {};
-
-class Y3 {
- public:
-  ~Y3();  // The error isn't triggered without this dtor.
-
-  void Foo(X3<1>);
-};
-
-template <typename T>
-struct SizeOf {
-  static const int value = sizeof(T);
-};
-
-void MyTest3() {
-   Y3().Foo(X3<SizeOf<char>::value>());
-}
-
-namespace PR6449 {
-  template<typename T>    
-  struct X0  {
-    static const bool var = false;
-  };
-
-  template<typename T>
-  const bool X0<T>::var;
-
-  template<typename T>
-  struct X1 : public X0<T> {
-    static const bool var = false;
-  };
-
-  template<typename T>      
-  const bool X1<T>::var;
-
-  template class X0<char>;
-  template class X1<char>;
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-subscript.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-subscript.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-subscript.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-
-struct Sub0 {
-  int &operator[](int);
-};
-
-struct Sub1 {
-  long &operator[](long); // expected-note{{candidate function}}
-};
-
-struct ConvertibleToInt {
-  operator int();
-};
-
-template<typename T, typename U, typename Result>
-struct Subscript0 {
-  void test(T t, U u) {
-    Result &result = t[u]; // expected-error{{no viable overloaded operator[] for type}}
-  }
-};
-
-template struct Subscript0<int*, int, int&>;
-template struct Subscript0<Sub0, int, int&>;
-template struct Subscript0<Sub1, ConvertibleToInt, long&>;
-template struct Subscript0<Sub1, Sub0, long&>; // expected-note{{instantiation}}
-
-// PR5345
-template <typename T>
-struct S {
-  bool operator[](int n) const { return true; }
-};
-
-template <typename T>
-void Foo(const S<int>& s, T x) {
-  if (s[0]) {}
-}
-
-void Bar() {
-  Foo(S<int>(), 0);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-template-template-parm.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-template-template-parm.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-template-template-parm.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,97 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<template<typename T> class MetaFun, typename Value>
-struct apply {
-  typedef typename MetaFun<Value>::type type;
-};
-
-template<class T>
-struct add_pointer {
-  typedef T* type;
-};
-
-template<class T>
-struct add_reference {
-  typedef T& type;
-};
-
-int i;
-apply<add_pointer, int>::type ip = &i;
-apply<add_reference, int>::type ir = i;
-apply<add_reference, float>::type fr = i; // expected-error{{non-const lvalue reference to type 'float' cannot bind to a value of unrelated type 'int'}}
-
-// Template template parameters
-template<int> struct B; // expected-note{{has a different type 'int'}}
-
-template<typename T, 
-         template<T Value> class X> // expected-error{{cannot have type 'float'}} \
-                                    // expected-note{{with type 'long'}}
-struct X0 { };
-
-X0<int, B> x0b1;
-X0<float, B> x0b2; // expected-note{{while substituting}}
-X0<long, B> x0b3; // expected-error{{template template argument has different template parameters}}
-
-template<template<int V> class TT> // expected-note{{parameter with type 'int'}}
-struct X1 { };
-
-template<typename T, template<T V> class TT>
-struct X2 {
-  X1<TT> x1; // expected-error{{has different template parameters}}
-};
-
-template<int V> struct X3i { };
-template<long V> struct X3l { }; // expected-note{{different type 'long'}}
-
-X2<int, X3i> x2okay;
-X2<long, X3l> x2bad; // expected-note{{instantiation}}
-
-template <typename T, template <T, T> class TT, class R = TT<1, 2> >
-struct Comp {
-  typedef R r1;
-  template <T x, T y> struct gt {
-    static const bool result = x > y;
-  };
-  typedef gt<2, 1> r2;
-};
-
-template <int x, int y> struct lt {
-  static const bool result = x < y;
-};
-
-Comp<int, lt> c0;
-
-namespace PR8629 {
-  template<template<int> class TT> struct X0
-  {
-    static void apply();
-  };
-  template<int> struct Type { };
-
-  template<class T> struct X1
-  {
-    template<class U> struct Inner;
-
-    template<class U> void g()
-    {
-      typedef Inner<U> Init;
-      X0<Init::template VeryInner>::apply();
-    }
-    template<int N> void f ()
-    {
-      g<Type<N> >();
-    }
-  };
-  template<class T> template<class U> struct X1<T>::Inner
-  {
-    template<int> struct VeryInner {
-    };
-  };
-  struct X1Container
-  {
-    X1Container()
-    {
-      simplex_.f<0>();
-    }
-    X1<double> simplex_;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-try-catch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-try-catch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-try-catch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -std=c++11 -verify %s
-
-template<typename T> struct TryCatch0 {
-  void f() {
-    try {
-    } catch (T&&) { // expected-error 2{{cannot catch exceptions by rvalue reference}}
-    }
-  }
-};
-
-template struct TryCatch0<int&>; // okay
-template struct TryCatch0<int&&>; // expected-note{{instantiation}}
-template struct TryCatch0<int>; // expected-note{{instantiation}}
-
-
-namespace PR10232 {
-  template <typename T>
-  class Templated {
-    struct Exception {
-    private:
-      Exception(const Exception&); // expected-note{{declared private here}}
-    };
-    void exception() {
-      try {
-      } catch(Exception e) {  // expected-error{{calling a private constructor of class 'PR10232::Templated<int>::Exception'}}
-      }
-    }
-  };
-
-  template class Templated<int>; // expected-note{{in instantiation of member function 'PR10232::Templated<int>::exception' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,28 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-int* f(int);
-float *f(...);
-
-template<typename T>
-struct X {
-  typedef typeof(T*) typeof_type;
-  typedef typeof(f(T())) typeof_expr;
-};
-
-int *iptr0;
-float *fptr0;
-X<int>::typeof_type &iptr1 = iptr0;
-
-X<int>::typeof_expr &iptr2 = iptr0;
-X<float*>::typeof_expr &fptr1 = fptr0;
-
-namespace rdar13094134 {
-  template <class>
-  class X {
-    typedef struct {
-      Y *y; // expected-error{{unknown type name 'Y'}}
-    } Y; 
-  };
-
-  X<int> xi;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-typedef.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-typedef.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-typedef.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-struct add_pointer {
-  typedef T* type; // expected-error{{'type' declared as a pointer to a reference}}
-};
-
-add_pointer<int>::type test1(int * ptr) { return ptr; }
-
-add_pointer<float>::type test2(int * ptr) { 
-  return ptr; // expected-error{{cannot initialize return object of type 'add_pointer<float>::type' (aka 'float *') with an lvalue of type 'int *'}}
-}
-
-add_pointer<int&>::type // expected-note{{in instantiation of template class 'add_pointer<int &>' requested here}}
-test3(); 

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-typeof.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-typeof.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-typeof.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-// Make sure we correctly treat __typeof as potentially-evaluated when appropriate
-template<typename T> void f(T n) {
-  int buffer[n]; // expected-note {{declared here}}
-  [] { __typeof(buffer) x; }(); // expected-error {{variable 'buffer' with variably modified type cannot be captured in a lambda expression}}
-}
-int main() {
-  f<int>(1); // expected-note {{in instantiation}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-using-decl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-using-decl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiate-using-decl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace test0 {
-  namespace N { }
-
-  template<typename T>
-  struct A {
-    void f();
-  };
-
-  template<typename T>
-  struct B : A<T> {
-    using A<T>::f;
-
-    void g() {
-      using namespace N;
-      f();
-    }
-  };
-
-  template struct B<int>;
-}
-
-namespace test1 {
-  template <class Derived> struct Visitor1 {
-    void Visit(struct Object1*);
-  };
-  template <class Derived> struct Visitor2 {
-    void Visit(struct Object2*); // expected-note {{candidate function}}
-  };
-
-  template <class Derived> struct JoinVisitor
-      : Visitor1<Derived>, Visitor2<Derived> {
-    typedef Visitor1<Derived> Base1;
-    typedef Visitor2<Derived> Base2;
-
-    void Visit(struct Object1*);  // expected-note {{candidate function}}
-    using Base2::Visit;
-  };
-
-  class Knot : public JoinVisitor<Knot> {
-  };
-
-  void test() {
-    Knot().Visit((struct Object1*) 0);
-    Knot().Visit((struct Object2*) 0);
-    Knot().Visit((struct Object3*) 0); // expected-error {{no matching member function for call}}
-  }
-}
-
-// PR5847
-namespace test2 {
-  namespace ns {
-    void foo();
-  }
-
-  template <class T> void bar(T* ptr) {
-    using ns::foo;
-    foo();
-  }
-
-  template void bar(char *);
-}
-
-namespace test3 {
-  template <typename T> struct t {
-    struct s1 {
-      T f1() const;
-    };
-    struct s2 : s1 {
-      using s1::f1;
-      T f1() const;
-    };
-  };
-
-  void f2()
-  {
-    t<int>::s2 a;
-    t<int>::s2 const & b = a;
-    b.f1();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-backtrace.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-backtrace.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-backtrace.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T> struct A; // expected-note 4{{template is declared here}}
-
-template<typename T> struct B : A<T*> { }; // expected-error{{implicit instantiation of undefined template}} \
-// expected-error{{implicit instantiation of undefined template 'A<X *>'}}
-
-template<typename T> struct C : B<T> { } ; // expected-note{{instantiation of template class}}
-
-template<typename T> struct D : C<T> { }; // expected-note{{instantiation of template class}}
-
-template<typename T> struct E : D<T> { }; // expected-note{{instantiation of template class}}
-
-template<typename T> struct F : E<T(T)> { }; // expected-note{{instantiation of template class}}
-
-void f() {
- (void)sizeof(F<int>); // expected-note{{instantiation of template class}}
-}
-
-typedef struct { } X;
-
-void g() {
-  (void)sizeof(B<X>); // expected-note{{in instantiation of template class 'B<X>' requested here}}
-}
-
-template<typename T> 
-struct G : A<T>, // expected-error{{implicit instantiation of undefined template 'A<int>'}}
-  A<T*> // expected-error{{implicit instantiation of undefined template 'A<int *>'}}
-  { };
-
-void h() {
-  (void)sizeof(G<int>); // expected-note{{in instantiation of template class 'G<int>' requested here}}
-}
-
-namespace PR13365 {
-  template <class T> class ResultTy { // expected-warning {{does not declare any constructor}}
-    T t; // expected-note {{reference member 't' will never be initialized}}
-  };
-
-  template <class T1, class T2>
-    typename ResultTy<T2>::error Deduce( void (T1::*member)(T2) ) {} // \
-    // expected-note {{instantiation of template class 'PR13365::ResultTy<int &>'}} \
-    // expected-note {{substituting deduced template arguments into function template 'Deduce' [with T1 = PR13365::Cls, T2 = int &]}} \
-    // expected-note {{substitution failure [with T1 = PR13365::Cls, T2 = int &]}}
-
-  struct Cls {
-    void method(int&);
-  };
-  void test() {
-    Deduce(&Cls::method); // expected-error {{no matching function}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-1.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-1.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-1.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,102 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, typename U = const T> struct Def1;
-
-template<> struct Def1<int> { 
-  void foo();
-};
-
-template<> struct Def1<const int> { // expected-note{{previous definition is here}}
-  void bar();
-};
-
-template<> struct Def1<int&> {
-  void wibble();
-};
-
-void test_Def1(Def1<int, const int> *d1, Def1<const int, const int> *d2,
-               Def1<int&, int&> *d3) {
-  d1->foo();
-  d2->bar();
-  d3->wibble();
-}
-
-template<typename T,  // FIXME: bad error message below, needs better location info
-         typename T2 = const T*>  // expected-error{{'T2' declared as a pointer to a reference}}
-  struct Def2;
-
-template<> struct Def2<int> { 
-  void foo();
-};
-
-void test_Def2(Def2<int, int const*> *d2) {
-  d2->foo();
-}
-
-typedef int& int_ref_t;
-Def2<int_ref_t> *d2; // expected-note{{in instantiation of default argument for 'Def2<int &>' required here}}
-
-
-template<> struct Def1<const int, const int> { }; // expected-error{{redefinition of 'Def1<const int>'}}
-
-template<typename T, typename T2 = T&> struct Def3;
-
-template<> struct Def3<int> { 
-  void foo();
-};
-
-template<> struct Def3<int&> { 
-  void bar();
-};
-
-void test_Def3(Def3<int, int&> *d3a, Def3<int&, int&> *d3b) {
-  d3a->foo();
-  d3b->bar();
-}
-
-
-template<typename T, typename T2 = T[]> struct Def4;
-
-template<> struct Def4<int> {
-  void foo();
-};
-
-void test_Def4(Def4<int, int[]> *d4a) {
-  d4a->foo();
-}
-
-template<typename T, typename T2 = T const[12]> struct Def5;
-
-template<> struct Def5<int> {
-  void foo();
-};
-
-template<> struct Def5<int, int const[13]> {
-  void bar();
-};
-
-void test_Def5(Def5<int, const int[12]> *d5a, Def5<int, const int[13]> *d5b) {
-  d5a->foo();
-  d5b->bar();
-}
-
-template<typename R, typename Arg1, typename Arg2 = Arg1,
-         typename FuncType = R (*)(Arg1, Arg2)>
-  struct Def6;
-
-template<> struct Def6<int, float> { 
-  void foo();
-};
-
-template<> struct Def6<bool, int[5], float(double, double)> {
-  void bar();
-};
-
-bool test_Def6(Def6<int, float, float> *d6a, 
-               Def6<int, float, float, int (*)(float, float)> *d6b,
-               Def6<bool, int[5], float(double, double),
-                    bool(*)(int*, float(*)(double, double))> *d6c) {
-  d6a->foo();
-  d6b->foo();
-  d6c->bar();
-  return d6a == d6b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T, T Value> struct Constant; // expected-note{{template parameter is declared here}} \
-// FIXME: bad location expected-error{{a non-type template parameter cannot have type 'float'}}
-
-Constant<int, 5> *c1;
-
-int x;
-float f(int, double);
-
-Constant<int&, x> *c2;
-Constant<int*, &x> *c3;
-Constant<float (*)(int, double), f> *c4;
-Constant<float (*)(int, double), &f> *c5;
-
-Constant<float (*)(int, int), f> *c6; // expected-error{{non-type template argument of type 'float (int, double)' cannot be converted to a value of type 'float (*)(int, int)'}}
-
-Constant<float, 0> *c7; // expected-note{{while substituting}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-default-3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T> struct A { };
-
-template<typename T, typename U = A<T*> >
-  struct B : U { };
-
-template<>
-struct A<int*> { 
-  void foo();
-};
-
-template<>
-struct A<float*> { 
-  void bar();
-};
-
-void test(B<int> *b1, B<float> *b2) {
-  b1->foo();
-  b2->bar();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-defarg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-defarg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-defarg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,36 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -ftemplate-depth 128 -ftemplate-backtrace-limit 4 %s
-
-template<int N> struct S {
-  typedef typename S<N-1>::type type;
-  static int f(int n = S<N-1>::f()); // \
-// expected-error{{recursive template instantiation exceeded maximum depth of 128}} \
-// expected-note 3 {{instantiation of default function argument}} \
-// expected-note {{skipping 125 contexts in backtrace}} \
-// expected-note {{use -ftemplate-depth=N to increase recursive template instantiation depth}}
-
-};
-template<> struct S<0> {
-  typedef int type;
-};
-
-// Incrementally instantiate up to S<2048>.
-template struct S<128>;
-template struct S<256>;
-template struct S<384>;
-template struct S<512>;
-template struct S<640>;
-template struct S<768>;
-template struct S<896>;
-template struct S<1024>;
-template struct S<1152>;
-template struct S<1280>;
-template struct S<1408>;
-template struct S<1536>;
-template struct S<1664>;
-template struct S<1792>;
-template struct S<1920>;
-template struct S<2048>;
-
-// Check that we actually bail out when we hit the instantiation depth limit for
-// the default arguments.
-void g() { S<2048>::f(); } // expected-note {{required here}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-exception-spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-exception-spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-exception-spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -ftemplate-depth 16 -fcxx-exceptions -fexceptions %s
-
-template<typename T> T go(T a) noexcept(noexcept(go(a))); // \
-// expected-error 16{{call to function 'go' that is neither visible}} \
-// expected-note 16{{'go' should be declared prior to the call site}} \
-// expected-error {{recursive template instantiation exceeded maximum depth of 16}}
-
-void f() {
-  int k = go(0); // \
-  // expected-note {{in instantiation of exception specification for 'go<int>' requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-subst-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-subst-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-subst-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -verify %s -ftemplate-depth 2
-
-template<int N> struct S { };
-template<typename T> S<T() + T()> operator+(T, T); // expected-error {{instantiation exceeded maximum depth}} expected-note 3{{while substituting}}
-S<0> s;
-int k = s + s;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-subst.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-subst.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth-subst.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s -ftemplate-depth 2
-
-// PR9793
-template<typename T> auto f(T t) -> decltype(f(t)); // \
-// expected-error {{recursive template instantiation exceeded maximum depth of 2}} \
-// expected-note 3 {{while substituting}}
-
-struct S {};
-int k = f(S{});

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-depth.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -ftemplate-depth 5 -ftemplate-backtrace-limit 4 %s
-// RUN: %clang -fsyntax-only -Xclang -verify -ftemplate-depth-5 -ftemplate-backtrace-limit=4 %s
-// RUN: %clang -fsyntax-only -Xclang -verify -ftemplate-depth=5 -ftemplate-backtrace-limit=4 %s
-
-#ifndef NOEXCEPT
-
-template<typename T> struct X : X<T*> { }; \
-// expected-error{{recursive template instantiation exceeded maximum depth of 5}} \
-// expected-note 3 {{instantiation of template class}} \
-// expected-note {{skipping 2 contexts in backtrace}} \
-// expected-note {{use -ftemplate-depth=N to increase recursive template instantiation depth}}
-
-void test() {
-  (void)sizeof(X<int>); // expected-note {{instantiation of template class}}
-}
-
-#else
-
-// RUN: %clang_cc1 -fsyntax-only -verify -ftemplate-depth 5 -ftemplate-backtrace-limit 4 -std=c++11 -DNOEXCEPT %s
-
-template<typename T> struct S {
-  S() noexcept(noexcept(T()));
-};
-struct T : S<T> {}; \
-// expected-error{{recursive template instantiation exceeded maximum depth of 5}} \
-// expected-note 4 {{in instantiation of exception spec}} \
-// expected-note {{skipping 2 contexts in backtrace}} \
-// expected-note {{use -ftemplate-depth=N to increase recursive template instantiation depth}}
-T t; // expected-note {{implicit default constructor for 'T' first required here}}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-order.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-order.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/instantiation-order.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -verify %s
-
-// From core issue 1227.
-
-template <class T> struct A { using X = typename T::X; }; // expected-error {{no members}}
-template <class T> typename T::X f(typename A<T>::X);
-template <class T> void f(...) {}
-template <class T> auto g(typename A<T>::X) -> typename T::X; // expected-note {{here}} expected-note {{substituting}}
-template <class T> void g(...) {}
-
-void h()
-{
-  f<int>(0); // ok, SFINAE in return type
-  g<int>(0); // not ok, substitution inside A<int> is a hard error
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/issue150.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/issue150.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/issue150.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,108 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-// Core issue 150: Template template parameters and default arguments
-
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-namespace PR9353 {
-  template<class _T, class Traits> class IM;
-
-  template <class T, class Trt, 
-            template<class _T, class Traits = int> class IntervalMap>
-  void foo(IntervalMap<T,Trt>* m) { typedef IntervalMap<int> type; }
-
-  void f(IM<int, int>* m) { foo(m); }
-}
-
-namespace PR9400 {
-  template<template <typename T, typename = T > class U> struct A
-  {
-    template<int> U<int> foo();
-  };
-
-  template <typename T, typename = T>
-  struct s {
-  };
-
-  void f() {
-    A<s> x;
-    x.foo<2>();
-  }
-}
-
-namespace MultiReplace {
-  template<typename Z, 
-           template<typename T, typename U = T *, typename V = U const> class TT>
-  struct X {
-    typedef TT<Z> type;
-  };
-
-  template<typename T, typename = int, typename = float> 
-  struct Y { };
-
-  int check0[is_same<X<int, Y>::type, Y<int, int*, int* const> >::value? 1 : -1];
-}
-
-namespace MultiReplacePartial {
-  template<typename First, typename Z, 
-           template<typename T, typename U = T *, typename V = U const> class TT>
-  struct X {
-    typedef TT<Z> type;
-  };
-
-  template<typename Z, 
-           template<typename T, typename U = T *, typename V = U const> class TT>
-  struct X<int, Z, TT> {
-    typedef TT<Z> type;
-  };
-
-  template<typename T, typename = int, typename = float> 
-  struct Y { };
-
-  int check0[is_same<X<int, int, Y>::type, Y<int, int*, int* const> >::value? 1 : -1];
-}
-
-namespace PR9016 {
-  template<typename > struct allocator ;
-  template<typename > struct less ;
-
-  template<class T, template<class> class Compare, class Default,
-           template<class> class Alloc>
-  struct interval_set { };
-
-  template <class X, template<class> class = less> struct interval_type_default {
-    typedef X type;
-  };
-
-  template <class T,
-            template<class _T, template<class> class Compare = PR9016::less,
-                     class = typename interval_type_default<_T,Compare>::type,
-                     template<class> class = allocator> class IntervalSet>
-  struct ZZZ
-  {
-    IntervalSet<T> IntervalSetT;
-  };
-  
-  template <class T, 
-            template<class _T, template<class> class Compare = PR9016::less,
-                     class = typename interval_type_default<_T,Compare>::type,
-                     template<class> class = allocator> class IntervalSet>
-  void int40()
-  {
-    IntervalSet<T> IntervalSetT;
-  }
-
-  void test() {
-    ZZZ<int, interval_set> zzz;
-    int40<int, interval_set>();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/local-member-templates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/local-member-templates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/local-member-templates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,76 +0,0 @@
-// RUN: %clang_cc1 -std=c++1y -verify %s
-// RUN: %clang_cc1 -std=c++1y -verify %s -fdelayed-template-parsing
-
-namespace nested_local_templates_1 {
-
-template <class T> struct Outer {
-  template <class U> int outer_mem(T t, U u) {
-    struct Inner {
-      template <class V> int inner_mem(T t, U u, V v) {
-        struct InnerInner {
-          template <class W> int inner_inner_mem(W w, T t, U u, V v) {
-            return 0;
-          }
-        };
-        InnerInner().inner_inner_mem("abc", t, u, v);
-        return 0;
-      }
-    };
-    Inner i;
-    i.inner_mem(t, u, 3.14);
-    return 0;
-  }
-
-  template <class U> int outer_mem(T t, U *u);
-};
-
-template int Outer<int>::outer_mem(int, char);
-
-template <class T> template <class U> int Outer<T>::outer_mem(T t, U *u) {
-  struct Inner {
-    template <class V>
-    int inner_mem(T t, U u, V v) { //expected-note{{candidate function}}
-      struct InnerInner {
-        template <class W> int inner_inner_mem(W w, T t, U u, V v) { return 0; }
-      };
-      InnerInner().inner_inner_mem("abc", t, u, v);
-      return 0;
-    }
-  };
-  Inner i;
-  i.inner_mem(t, U{}, i);
-  i.inner_mem(t, u, 3.14); //expected-error{{no matching member function for call to 'inner}}
-  return 0;
-}
-
-template int Outer<int>::outer_mem(int, char *); //expected-note{{in instantiation of function}}
-
-} // end ns
-
-namespace nested_local_templates_2 {
-
-template <class T> struct Outer {
-  template <class U> void outer_mem(T t, U u) {
-    struct Inner {
-      template <class V> struct InnerTemplateClass {
-        template <class W>
-        void itc_mem(T t, U u, V v, W w) { //expected-note{{candidate function}}
-          struct InnerInnerInner {
-            template <class X> void iii_mem(X x) {}
-          };
-          InnerInnerInner i;
-          i.iii_mem("abc");
-        }
-      };
-    };
-    Inner i;
-    typename Inner::template InnerTemplateClass<Inner> ii;
-    ii.itc_mem(t, u, i, "jim");
-    ii.itc_mem(t, u, 0, "abd"); //expected-error{{no matching member function}}
-  }
-};
-
-template void
-Outer<int>::outer_mem(int, char); //expected-note{{in instantiation of}}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/lookup-dependent-bases.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/lookup-dependent-bases.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/lookup-dependent-bases.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-class C {
-public:
-   static void foo2() {  }
-};
-template <class T>
-class A {
-public:
-   typedef C D;
-};
-
-template <class T>
-class B : public A<T> {
-public:
-   void foo() {
-    D::foo2();
-   }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-access-ambig.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-access-ambig.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-access-ambig.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-unused-comparison %s
-
-// PR8439
-class A
-{
-};
-
-class B
-{
-public:
-  A & m;
-};
-
-class Base
-{
-public:
-  B &f();
-};
-
-class Derived1 : public Base { };
-
-class Derived2 : public Base { };
-
-class X : public B, public Derived2, public Derived1
-{
-public:
-  virtual void g();
-};
-
-void X::g()
-{
-  m.f<int>(); // expected-error{{no member named 'f' in 'A'}} \
-  // expected-error{{expected '(' for function-style cast}} \
-  // expected-error{{expected expression}}
-}
-
-namespace PR11134 {
-  template<typename Derived> class A;
-  template<typename Derived> class B : A<Derived> {
-    typedef A<Derived> Base;
-    using Base::member;
-    int member;
-  };
-}
-
-namespace AddrOfMember {
-  struct A { int X; };
-  typedef int (A::*P);
-  template<typename T> struct S : T {
-    void f() {
-      P(&T::X) // expected-error {{cannot cast from type 'int *' to member pointer type 'P'}}
-          == &A::X;
-    }
-  };
-
-  void g() {
-    S<A>().f(); // ok, &T::X is 'int (A::*)', not 'int *', even though T is a base class
-  }
-
-  struct B : A { static int X; };
-  void h() {
-    S<B>().f(); // expected-note {{here}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-access-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-access-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-access-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,149 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-void call_f0(T x) {
-  x.Base::f0();
-}
-
-struct Base {
-  void f0();
-};
-
-struct X0 : Base { 
-  typedef Base CrazyBase;
-};
-
-void test_f0(X0 x0) {
-  call_f0(x0);
-}
-
-template<typename TheBase, typename T>
-void call_f0_through_typedef(T x) {
-  typedef TheBase Base2;
-  x.Base2::f0();
-}
-
-void test_f0_through_typedef(X0 x0) {
-  call_f0_through_typedef<Base>(x0);
-}
-
-template<typename TheBase, typename T>
-void call_f0_through_typedef2(T x) {
-  typedef TheBase CrazyBase; // expected-note{{current scope}}
-  x.CrazyBase::f0(); // expected-error{{ambiguous}} \
-                     // expected-error 2{{no member named}}
-}
-
-struct OtherBase { };
-
-struct X1 : Base, OtherBase { 
-  typedef OtherBase CrazyBase; // expected-note{{object type}}
-};
-
-void test_f0_through_typedef2(X0 x0, X1 x1) {
-  call_f0_through_typedef2<Base>(x0);
-  call_f0_through_typedef2<OtherBase>(x1); // expected-note{{instantiation}}
-  call_f0_through_typedef2<Base>(x1); // expected-note{{instantiation}}
-}
-
-
-struct X2 {
-  operator int() const;
-};
-
-template<typename T, typename U>
-T convert(const U& value) {
-  return value.operator T(); // expected-error{{operator long}}
-}
-
-void test_convert(X2 x2) {
-  convert<int>(x2);
-  convert<long>(x2); // expected-note{{instantiation}}
-}
-
-template<typename T>
-void destruct(T* ptr) {
-  ptr->~T();
-  ptr->T::~T();
-}
-
-template<typename T>
-void destruct_intptr(int *ip) {
-  ip->~T();
-  ip->T::~T();
-}
-
-void test_destruct(X2 *x2p, int *ip) {
-  destruct(x2p);
-  destruct(ip);
-  destruct_intptr<int>(ip);
-}
-
-// PR5220
-class X3 {
-protected:
-  template <int> float* &f0();
-  template <int> const float* &f0() const;
-  void f1() {
-    (void)static_cast<float*>(f0<0>());
-  }
-  void f1() const{
-    (void)f0<0>();
-  }
-};
-
-// Fun with template instantiation and conversions
-struct X4 {
-  int& member();
-  float& member() const;
-};
-
-template<typename T>
-struct X5 {
-  void f(T* ptr) { int& ir = ptr->member(); }
-  void g(T* ptr) { float& fr = ptr->member(); }
-};
-
-void test_X5(X5<X4> x5, X5<const X4> x5c, X4 *xp, const X4 *cxp) {
-  x5.f(xp);
-  x5c.g(cxp);
-}
-
-// In theory we can do overload resolution at template-definition time on this.
-// We should at least not assert.
-namespace test4 {
-  struct Base {
-    template <class T> void foo() {}
-  };
-
-  template <class T> struct Foo : Base {
-    void test() {
-      foo<int>();
-    }
-  };
-}
-
-namespace test5 {
-  template<typename T>
-  struct X {
-    using T::value;
-
-    T &getValue() {
-      return &value;
-    }
-  };
-}
-
-// PR8739
-namespace test6 {
-  struct A {};
-  struct B {};
-  template <class T> class Base;
-  template <class T> class Derived : public Base<T> {
-    A *field;
-    void get(B **ptr) {
-      // It's okay if at some point we figure out how to diagnose this
-      // at instantiation time.
-      *ptr = field;
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-function-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-function-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-function-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct X {
-  template<typename T> T& f0(T);
-  
-  void g0(int i, double d) {
-    int &ir = f0(i);
-    double &dr = f0(d);
-  }
-  
-  template<typename T> T& f1(T);
-  template<typename T, typename U> U& f1(T, U);
-  
-  void g1(int i, double d) {
-    int &ir1 = f1(i);
-    int &ir2 = f1(d, i);
-    int &ir3 = f1(i, i);
-  }
-};
-
-void test_X_f0(X x, int i, float f) {
-  int &ir = x.f0(i);
-  float &fr = x.f0(f);
-}
-
-void test_X_f1(X x, int i, float f) {
-  int &ir1 = x.f1(i);
-  int &ir2 = x.f1(f, i);
-  int &ir3 = x.f1(i, i);
-}
-
-void test_X_f0_address() {
-  int& (X::*pm1)(int) = &X::f0;
-  float& (X::*pm2)(float) = &X::f0;
-}
-
-void test_X_f1_address() {
-  int& (X::*pm1)(int) = &X::f1;
-  float& (X::*pm2)(float) = &X::f1;
-  int& (X::*pm3)(float, int) = &X::f1;
-}
-
-void test_X_f0_explicit(X x, int i, long l) {
-  int &ir1 = x.f0<int>(i);
-  int &ir2 = x.f0<>(i);
-  long &il1 = x.f0<long>(i);
-}
-
-// PR4608
-class A { template <class x> x a(x z) { return z+y; } int y; };
-
-// PR5419
-struct Functor {
-  template <typename T>
-  bool operator()(const T& v) const {
-    return true;
-  }
-};
-
-void test_Functor(Functor f) {
-  f(1);
-}
-
-// Instantiation on ->
-template<typename T>
-struct X1 {
-  template<typename U> U& get();
-};
-
-template<typename T> struct X2; // expected-note{{here}}
-
-void test_incomplete_access(X1<int> *x1, X2<int> *x2) {
-  float &fr = x1->get<float>();
-  (void)x2->get<float>(); // expected-error{{implicit instantiation of undefined template}}
-}
-
-// Instantiation of template template parameters in a member function
-// template.
-namespace TTP {
-  template<int Dim> struct X {
-    template<template<class> class M, class T> void f(const M<T>&);
-  };
-
-  template<typename T> struct Y { };
-
-  void test_f(X<3> x, Y<int> y) { x.f(y); }
-}
-
-namespace PR7387 {
-  template <typename T> struct X {};
-
-  template <typename T1> struct S {
-    template <template <typename> class TC> void foo(const TC<T1>& arg);
-  };
-
-  template <typename T1> template <template <typename> class TC>
-  void S<T1>::foo(const TC<T1>& arg) {}
-
-  void test(const X<int>& x) {
-    S<int> s;
-    s.foo(x);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-inclass-init-value-dependent.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-inclass-init-value-dependent.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-inclass-init-value-dependent.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm-only %s
-// PR10290
-
-template<int Flags> struct foo {
-  int value = Flags && 0;
-};
-
-void test() {
-  foo<4> bar;
-}
-
-struct S {
-  S(int n);
-};
-template<typename> struct T {
-  S s = 0;
-};
-T<int> t;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-initializers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-initializers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-initializers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T> struct A {
-  A() : j(10), i(10) { }
-  
-  int i;
-  int j;
-};
-
-template<typename T> struct B : A<T> {
-  B() : A<T>() { }
-};
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-template-access-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-template-access-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/member-template-access-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,144 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename U, typename T>
-U f0(T t) {
-  return t.template get<U>();
-}
-
-template<typename U, typename T>
-int &f1(T t) {
-  // FIXME: When we pretty-print this, we lose the "template" keyword.
-  return t.U::template get<int&>();
-}
-
-struct X {
-  template<typename T> T get();
-};
-
-void test_f0(X x) {
-  int i = f0<int>(x);
-  int &ir = f0<int&>(x);
-}
-
-struct XDerived : public X {
-};
-
-void test_f1(XDerived xd) {
-  int &ir = f1<X>(xd);
-}
-
-// PR5213
-template <class T>
-struct A {};
-
-template<class T>
-class B
-{
-  A<T> a_;
-  
-public:
-  void destroy();
-};
-
-template<class T>
-void
-B<T>::destroy()
-{
-  a_.~A<T>();
-}
-
-void do_destroy_B(B<int> b) {
-  b.destroy();
-}
-
-struct X1 {
-  int* f1(int);
-  template<typename T> float* f1(T);
-  
-  static int* f2(int);
-  template<typename T> static float* f2(T);
-};
-
-void test_X1(X1 x1) {
-  float *fp1 = x1.f1<>(17);
-  float *fp2 = x1.f1<int>(3.14); // expected-warning {{implicit conversion from 'double' to 'int' changes value from 3.14 to 3}}
-  int *ip1 = x1.f1(17);
-  float *ip2 = x1.f1(3.14);
-  
-  float* (X1::*mf1)(int) = &X1::f1;
-  float* (X1::*mf2)(int) = &X1::f1<>;
-  float* (X1::*mf3)(float) = &X1::f1<float>;
-  
-  float* (*fp3)(int) = &X1::f2;
-  float* (*fp4)(int) = &X1::f2<>;
-  float* (*fp5)(float) = &X1::f2<float>;  
-  float* (*fp6)(int) = X1::f2;
-  float* (*fp7)(int) = X1::f2<>;
-  float* (*fp8)(float) = X1::f2<float>;  
-}
-
-template<int A> struct X2 { 
-  int m;
-};
-
-template<typename T>
-struct X3 : T { };
-
-template<typename T>
-struct X4 {
-  template<typename U>
-  void f(X2<sizeof(X3<U>().U::m)>);
-};
-
-void f(X4<X3<int> > x4i) {
-  X2<sizeof(int)> x2;
-  x4i.f<X2<sizeof(int)> >(x2);
-}
-
-template<typename T>
-struct X5 {
-  template<typename U>
-  void f();
-  
-  void g() {
-    this->f<T*>();
-  }
-};
-
-namespace PR6021 {
-  template< class T1, class T2 >
-  class Outer
-  {
-  public: // Range operations
-    template< class X > X tmpl( const X* = 0 ) const;
-
-    struct Inner
-    {
-      const Outer& o;
-
-      template< class X >
-      operator X() const
-      {
-        return o.tmpl<X>();
-      }
-    };
-  };
-}
-
-namespace rdar8198511 {
-  template<int, typename U>
-  struct Base { 
-    void f();
-  };
-
-  template<typename T>
-  struct X0 : Base<1, T> { };
-
-  template<typename T>
-  struct X1 {
-    X0<int> x0;
-
-    void f() {
-      this->x0.Base<1, int>::f();
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/metafun-apply.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/metafun-apply.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/metafun-apply.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-struct add_pointer {
-  template<typename T>
-  struct apply {
-    typedef T* type;
-  };
-};
-
-struct add_reference {
-  template<typename T>
-  struct apply {
-    typedef T& type; // expected-error{{cannot form a reference to 'void'}}
-  };
-};
-
-struct bogus {
-  struct apply {
-    typedef int type;
-  };
-};
-
-template<typename MetaFun, typename T>
-struct apply1 {
-  typedef typename MetaFun::template apply<T>::type type; // expected-note{{in instantiation of template class 'add_reference::apply<void>' requested here}} \
-  // expected-error{{'apply' following the 'template' keyword does not refer to a template}}
-};
-
-int i;
-apply1<add_pointer, int>::type ip = &i;
-apply1<add_reference, int>::type ir = i;
-apply1<add_reference, float>::type fr = i; // expected-error{{non-const lvalue reference to type 'float' cannot bind to a value of unrelated type 'int'}}
-
-void test() {
-  apply1<add_reference, void>::type t; // expected-note{{in instantiation of template class 'apply1<add_reference, void>' requested here}}
-
-  apply1<bogus, int>::type t2; // expected-note{{in instantiation of template class 'apply1<bogus, int>' requested here}}
-}
-
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/missing-class-keyword-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/missing-class-keyword-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/missing-class-keyword-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,7 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class G {};
-template <Foo> // expected-error{{unknown type name 'Foo'}} \
-               // expected-note{{template parameter is declared here}}
-class Bar {};
-
-class Bar<G> blah_test; // expected-error{{template argument for non-type template parameter must be an expression}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,93 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify %s
-// RUN: %clang_cc1 -fms-extensions -fdelayed-template-parsing -fsyntax-only -verify %s
-
-
-class A {
-public:
-	template <class U>
-    A(U p) {
-	}
-	template <>
-    A(int p) { // expected-warning{{explicit specialization of 'A' within class scope is a Microsoft extension}}
-	}
-	
-	template <class U>
-    void f(U p) { 
-	}
-
-	template <>
-    void f(int p) { // expected-warning{{explicit specialization of 'f' within class scope is a Microsoft extension}}
-	}
-
-	void f(int p) { 
-    }
-};
-
-void test1()
-{
-   A a(3);
-   char* b ;
-   a.f(b);
-   a.f<int>(99);
-   a.f(100);
-}
-
-
-
-
-template <class T>
-class B {
-public:
-	template <class U>
-    B(U p) { 
-	}
-	template <>
-    B(int p) { // expected-warning{{explicit specialization of 'B<T>' within class scope is a Microsoft extension}}
-	}
-	
-	template <class U>
-    void f(U p) {
-	  T y = 9;
-	}
-
-
-    template <>
-    void f(int p) { // expected-warning{{explicit specialization of 'f' within class scope is a Microsoft extension}}
-	  T a = 3;
-	}
-
-	void f(int p) { 
- 	  T a = 3;
-    }
-};
-
-void test2()
-{
-   B<char> b(3);
-   char* ptr;
-   b.f(ptr);
-   b.f<int>(99);
-   b.f(100);
-}
-
-
-namespace PR12709 {
-
-template<class T>
-class TemplateClass {
-  void member_function() {
-    specialized_member_template<false>();
-  }
-
-  template<bool b>
-  void specialized_member_template() {}
-
-  template<>
-  void specialized_member_template<false>() {}  // expected-warning{{explicit specialization of 'specialized_member_template' within class scope is a Microsoft extension}}
-};
-
-void f() {
-  TemplateClass<int> t;
-}
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-if-exists.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-if-exists.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-if-exists.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-// RUN: %clang_cc1 -fms-extensions -std=c++11 %s -verify
-
-struct Nontemplate {
-  typedef int type;
-};
-
-template<typename T>
-struct X {
-  __if_exists(Nontemplate::type) {
-    typedef Nontemplate::type type;
-  }
-
-  __if_exists(Nontemplate::value) {
-    typedef Nontemplate::value type2;
-  }
-
-  __if_not_exists(Nontemplate::value) {
-    typedef int type3;
-  }
-
-  __if_exists(T::X) { // expected-warning{{dependent __if_exists declarations are ignored}}
-    typedef T::X type4;
-  }
-};
-
-X<int>::type i1;
-X<int>::type2 i2; // expected-error{{no type named 'type2' in 'X<int>'}}
-X<int>::type3 i3;
-X<int>::type4 i4; // expected-error{{no type named 'type4' in 'X<int>'}}
-
-struct HasFoo { 
-  void foo();
-};
-struct HasBar { 
-  void bar(int);
-  void bar(float);
-};
-
-template<typename T>
-void f(T t) {
-  __if_exists(T::foo) {
-    { }
-    t.foo();
-  }
-
-  __if_not_exists(T::bar) {
-    int *i = t; // expected-error{{no viable conversion from 'HasFoo' to 'int *'}}
-    { }
-  }
-
-  int array2[] = {
-    0, 
-    __if_exists(T::bar) {2, }// expected-warning{{dependent __if_exists declarations are ignored}}
-    3
-  };
-}
-
-template void f(HasFoo); // expected-note{{in instantiation of function template specialization 'f<HasFoo>' requested here}}
-template void f(HasBar);
-
-template<typename T, typename ...Ts>
-void g(T, Ts...) {
-  __if_exists(T::operator Ts) { // expected-error{{__if_exists name contains unexpanded parameter pack 'Ts'}}
-  }
-
-  __if_not_exists(Ts::operator T) { // expected-error{{__if_not_exists name contains unexpanded parameter pack 'Ts'}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-lookup-template-base-classes.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-lookup-template-base-classes.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/ms-lookup-template-base-classes.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,198 +0,0 @@
-// RUN: %clang_cc1 -fms-compatibility -fsyntax-only -verify %s
-
-
-template <class T>
-class A {
-public:
-   void f(T a) { }// expected-note {{must qualify identifier to find this declaration in dependent base class}}
-   void g();// expected-note {{must qualify identifier to find this declaration in dependent base class}}
-};
-
-template <class T>
-class B : public A<T> {
-public:
-	void z(T a)
-    {
-       f(a); // expected-warning {{use of identifier 'f' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
-       g(); // expected-warning {{use of identifier 'g' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
-    }
-};
-
-template class B<int>; // expected-note {{requested here}}
-template class B<char>;
-
-void test()
-{
-    B<int> b;
-    b.z(3);
-}
-
-struct A2 {
-  template<class T> void f(T) {
-    XX; //expected-error {{use of undeclared identifier 'XX'}}
-    A2::XX; //expected-error {{no member named 'XX' in 'A2'}}
-  }
-};
-template void A2::f(int);
-
-template<class T0>
-struct A3 {
-  template<class T1> void f(T1) {
-    XX; //expected-error {{use of undeclared identifier 'XX'}}
-  }
-};
-template void A3<int>::f(int);
-
-template<class T0>
-struct A4 {
-  void f(char) {
-    XX; //expected-error {{use of undeclared identifier 'XX'}}
-  }
-};
-template class A4<int>;
-
-
-namespace lookup_dependent_bases_id_expr {
-
-template<class T> class A {
-public:
-  int var;
-};
-
-
-template<class T>
-class B : public A<T> {
-public:
-  void f() {
-    var = 3;
-  }
-};
-
-template class B<int>;
-
-}
-
-
-
-namespace lookup_dependent_base_class_static_function {
-
-template <class T>
-class A {
-public:
-   static void static_func();// expected-note {{must qualify identifier to find this declaration in dependent base class}}
-   void func();// expected-note {{must qualify identifier to find this declaration in dependent base class}}
-};
-
-
-template <class T>
-class B : public A<T> {
-public:
-  static void z2(){
-    static_func();  // expected-warning {{use of identifier 'static_func' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
-    func(); // expected-warning {{use of identifier 'func' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}} expected-error {{call to non-static member function without an object argument}}
-  }
-};
-template class B<int>; // expected-note {{requested here}}
-
-} 
-
-
-
-namespace lookup_dependent_base_class_default_argument {
-
-template<class T>
-class A {
-public:
-  static int f1(); // expected-note {{must qualify identifier to find this declaration in dependent base class}} 
-  int f2(); // expected-note {{must qualify identifier to find this declaration in dependent base class}} 
-};
-
-template<class T>
-class B : public A<T> {
-public:
-  void g1(int p = f1());// expected-warning {{use of identifier 'f1' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
-  void g2(int p = f2());// expected-warning {{use of identifier 'f2' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}} expected-error {{call to non-static member function without an object argument}}
-};
-
-void foo()
-{
-	B<int> b;
-	b.g1(); // expected-note {{required here}}
-	b.g2(); // expected-note {{required here}}
-}
-
-}
-
-
-namespace lookup_dependent_base_class_friend {
-
-template <class T>
-class B {
-public:
-  static void g();  // expected-note {{must qualify identifier to find this declaration in dependent base class}} 
-};
-
-template <class T>
-class A : public B<T> {
-public:
-  friend void foo(A<T> p){
-    g(); // expected-warning {{use of identifier 'g' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
-  }
-};
-
-int main2()
-{
-  A<int> a;
-  foo(a); // expected-note {{requested here}}
-}
-
-}
-
-
-namespace lookup_dependent_base_no_typo_correction {
-
-class C {
-public:
-  int m_hWnd;
-};
-
-template <class T>
-class A : public T {
-public:
-  void f(int hWnd) {
-    m_hWnd = 1;
-  }
-};
-
-template class A<C>;
-
-}
-
-namespace PR12701 {
-
-class A {};
-class B {};
-
-template <class T>
-class Base {
- public:
-  bool base_fun(void* p) { return false; }  // expected-note {{must qualify identifier to find this declaration in dependent base clas}}
-  operator T*() const { return 0; }
-};
-
-template <class T>
-class Container : public Base<T> {
- public:
-  template <typename S>
-  bool operator=(const Container<S>& rhs) {
-    return base_fun(rhs);  // expected-warning {{use of identifier 'base_fun' found via unqualified lookup into dependent bases of class templates is a Microsoft extension}}
-  }
-};
-
-void f() {
-  Container<A> text_provider;
-  Container<B> text_provider2;
-  text_provider2 = text_provider;  // expected-note {{in instantiation of function template specialization}}
-}
-
-}  // namespace PR12701

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-incomplete-class.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-incomplete-class.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-incomplete-class.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-template <typename T>
-struct foo {
-  struct bar;
-
-  bar fn() {
-    // Should not get errors about bar being incomplete here.
-    bar b = bar(1, 2);
-    return b;
-  }
-};
-
-template <typename T>
-struct foo<T>::bar {
-  bar(int, int);
-};
-
-void fn() {
-  foo<int>().fn();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-linkage.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-linkage.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-linkage.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-extern "C" { extern "C++" { template<class C> C x(); } }

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-name-spec-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-name-spec-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-name-spec-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,142 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace N { 
-  namespace M {
-    template<typename T> struct Promote;
-    
-    template<> struct Promote<short> {
-      typedef int type;
-    };
-    
-    template<> struct Promote<int> {
-      typedef int type;
-    };
-    
-    template<> struct Promote<float> {
-      typedef double type;
-    };
-    
-    Promote<short>::type *ret_intptr(int* ip) { return ip; }
-    Promote<int>::type *ret_intptr2(int* ip) { return ip; }
-  }
-
-  M::Promote<int>::type *ret_intptr3(int* ip) { return ip; }
-  M::template Promote<int>::type *ret_intptr4(int* ip) { return ip; } // expected-warning{{'template' keyword outside of a template}}
-  M::template Promote<int> pi; // expected-warning{{'template' keyword outside of a template}}
-}
-
-N::M::Promote<int>::type *ret_intptr5(int* ip) { return ip; }
-::N::M::Promote<int>::type *ret_intptr6(int* ip) { return ip; }
-
-
-N::M::template; // expected-error{{expected unqualified-id}}
-N::M::template Promote; // expected-error{{expected unqualified-id}}
-
-namespace N {
-  template<typename T> struct A;
-
-  template<>
-  struct A<int> {
-    struct X;
-  };
-
-  struct B;
-}
-
-struct ::N::A<int>::X {
-  int foo;
-};
-
-template<typename T>
-struct TestA {
-  typedef typename N::template B<T>::type type; // expected-error{{'B' following the 'template' keyword does not refer to a template}} \
-                                                // expected-error{{expected member name}}
-};
-
-// Reduced from a Boost failure.
-namespace test1 {
-  template <class T> struct pair {
-    T x;
-    T y;
-
-    static T pair<T>::* const mem_array[2];
-  };
-
-  template <class T>
-  T pair<T>::* const pair<T>::mem_array[2] = { &pair<T>::x, &pair<T>::y };
-}
-
-typedef int T;
-namespace N1 {
-  template<typename T> T f0();
-}
-
-template<typename T> T N1::f0() { }
-
-namespace PR7385 {
-  template< typename > struct has_xxx0
-  {
-    template< typename > struct has_xxx0_introspect
-    {
-      template< typename > struct has_xxx0_substitute ;
-      template< typename V > 
-      int int00( has_xxx0_substitute < typename V::template xxx< > > = 0 );
-    };
-    static const int value = has_xxx0_introspect<int>::value; // expected-error{{no member named 'value'}}
-    typedef int type;
-  };
-
-  has_xxx0<int>::type t; // expected-note{{instantiation of}}
-}
-
-namespace PR7725 {
-  template<class ignored> struct TypedefProvider;
-  template<typename T>
-  struct TemplateClass : public TypedefProvider<T>
-  {
-    void PrintSelf() {
-      TemplateClass::Test::PrintSelf();
-    }
-  };
-}
-
-namespace PR9226 {
-  template<typename a>
-  void nt() // expected-note{{function template 'nt' declared here}}
-  { nt<>:: } // expected-error{{qualified name refers into a specialization of function template 'nt'}} \
-  // expected-error{{expected unqualified-id}}
-
-  template<typename T>
-  void f(T*); // expected-note{{function template 'f' declared here}}
-
-  template<typename T>
-  void f(T*, T*); // expected-note{{function template 'f' declared here}}
-
-  void g() {
-    f<int>:: // expected-error{{qualified name refers into a specialization of function template 'f'}}
-  } // expected-error{{expected unqualified-id}}
-
-  struct X {
-    template<typename T> void f(); // expected-note{{function template 'f' declared here}}
-  };
-
-  template<typename T, typename U>
-  struct Y {
-    typedef typename T::template f<U> type; // expected-error{{template name refers to non-type template 'X::f'}}
-  };
-
-  Y<X, int> yxi; // expected-note{{in instantiation of template class 'PR9226::Y<PR9226::X, int>' requested here}}
-}
-
-namespace PR9449 {
-  template <typename T>
-  struct s; // expected-note{{template is declared here}}
-
-  template <typename T>
-  void f() {
-    int s<T>::template n<T>::* f; // expected-error{{implicit instantiation of undefined template 'PR9449::s<int>'}} \
-    // expected-error{{following the 'template' keyword}}
-  }
-
-  template void f<int>(); // expected-note{{in instantiation of}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/nested-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,162 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-class A;
-
-class S {
-public:
-   template<typename T> struct A { 
-     struct Nested {
-       typedef T type;
-     };
-   };
-};
-
-int i;
-S::A<int>::Nested::type *ip = &i;
-
-template<typename T>
-struct Outer {
-  template<typename U>
-  class Inner0;
-  
-  template<typename U>
-  class Inner1 {
-    struct ReallyInner;
-    
-    T foo(U);
-    template<typename V> T bar(V);
-    template<typename V> T* bar(V);
-    
-    static T value1;
-    static U value2;
-  };
-};
-
-template<typename X>
-template<typename Y>
-class Outer<X>::Inner0 {
-public:
-  void f(X, Y);
-};
-
-template<typename X>
-template<typename Y>
-void Outer<X>::Inner0<Y>::f(X, Y) {
-}
-
-template<typename X>
-template<typename Y>
-struct Outer<X>::Inner1<Y>::ReallyInner {
-  static Y value3;
-  
-  void g(X, Y);
-};
-
-template<typename X>
-template<typename Y>
-void Outer<X>::Inner1<Y>::ReallyInner::g(X, Y) {
-}
-
-template<typename X>
-template<typename Y>
-X Outer<X>::Inner1<Y>::foo(Y) {
-  return X();
-}
-
-template<typename X>
-template<typename Y>
-template<typename Z>
-X Outer<X>::Inner1<Y>::bar(Z) {
-  return X();
-}
-
-template<typename X>
-template<typename Y>
-template<typename Z>
-X* Outer<X>::Inner1<Y>::bar(Z) {
-  return 0;
-}
-
-template<typename X>
-template<typename Y>
-X Outer<X>::Inner1<Y>::value1 = 0;
-
-template<typename X>
-template<typename Y>
-Y Outer<X>::Inner1<Y>::value2 = Y();
-
-template<typename X>
-template<typename Y>
-Y Outer<X>::Inner1<Y>::ReallyInner::value3 = Y();
-
-template<typename X>
-template<typename Y>
-Y Outer<X>::Inner1<Y*>::ReallyInner::value4; // expected-error{{Outer<X>::Inner1<Y *>::ReallyInner::}}
-
-
-template<typename T>
-struct X0 { };
-
-template<typename T>
-struct X0<T*> {
-  template<typename U>
-  void f(U u = T()) { }
-};
-
-// PR5103
-template<typename>
-struct X1 {
-  template<typename, bool = false> struct B { };
-};
-template struct X1<int>::B<bool>;
-
-// Template template parameters
-template<typename T>
-struct X2 {
-  template<template<class U, T Value> class>  // expected-error{{cannot have type 'float'}} \
-                                              // expected-note{{previous non-type template}}
-    struct Inner { };
-};
-
-template<typename T, 
-         int Value> // expected-note{{template non-type parameter}}
-  struct X2_arg;
-
-X2<int>::Inner<X2_arg> x2i1;
-X2<float> x2a; // expected-note{{instantiation}}
-X2<long>::Inner<X2_arg> x2i3; // expected-error{{template template argument has different}}
-
-namespace PR10896 {
-  template<typename TN>
-  class Foo {
-
-  public:
-    void foo() {}
-  private:
-	
-    template<typename T>
-    T SomeField; // expected-error {{member 'SomeField' declared as a template}}
-  };
-
-  void g() {
-    Foo<int> f;
-    f.foo();
-  }
-}
-
-namespace PR10924 {
-  template< class Topology, class ctype >
-  struct ReferenceElement
-  {
-  };
-
-  template< class Topology, class ctype >
-  template< int codim >
-  class ReferenceElement< Topology, ctype > :: BaryCenterArray // expected-error{{out-of-line definition of 'BaryCenterArray' does not match any declaration in 'ReferenceElement<Topology, ctype>'}}
-  {
-  };
-}
-
-class Outer1 {
-    template <typename T> struct X;
-    template <typename T> int X<T>::func() {} //  expected-error{{out-of-line definition of 'func' from class 'X<T>' without definition}}
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/operator-function-id-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/operator-function-id-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/operator-function-id-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T>
-struct A { 
-  template<typename U> A<T> operator+(U);
-};
-
-template<int Value, typename T> bool operator==(A<T>, A<T>);
-
-template<> bool operator==<0>(A<int>, A<int>);
-
-bool test_qualified_id(A<int> ai) {
-  return ::operator==<0, int>(ai, ai);
-}
-
-void test_op(A<int> a, int i) {
-  const A<int> &air = a.operator+<int>(i);
-}
-
-template<typename T>
-void test_op_template(A<T> at, T x) {
-  const A<T> &atr = at.template operator+<T>(x);
-  const A<T> &atr2 = at.A::template operator+<T>(x);
-  // FIXME: unrelated template-name instantiation issue
-  //  const A<T> &atr3 = at.template A<T>::template operator+<T>(x);
-}
-
-template void test_op_template<float>(A<float>, float);

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/operator-template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/operator-template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/operator-template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Make sure we accept this
-template<class X>struct A{typedef X Y;};
-template<class X>bool operator==(A<X>,typename A<X>::Y); // expected-note{{candidate template ignored: could not match 'A<type-parameter-0-0>' against 'B<int> *'}}
-
-int a(A<int> x) { return operator==(x,1); }
-
-int a0(A<int> x) { return x == 1; }
-
-// FIXME: the location information for the note isn't very good
-template<class X>struct B{typedef X Y;};
-template<class X>bool operator==(B<X>*,typename B<X>::Y); // \
-// expected-error{{overloaded 'operator==' must have at least one parameter of class or enumeration type}} \
-// expected-note{{in instantiation of function template specialization}} \
-// expected-note{{candidate template ignored: substitution failure [with X = int]}}
-int a(B<int> x) { return operator==(&x,1); } // expected-error{{no matching function for call to 'operator=='}}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/overload-candidates.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/overload-candidates.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/overload-candidates.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,81 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T>
-const T& min(const T&, const T&); // expected-note{{candidate template ignored: deduced conflicting types for parameter 'T' ('int' vs. 'long')}}
-
-void test_min() {
-  (void)min(1, 2l); // expected-error{{no matching function for call to 'min'}}
-}
-
-template<typename R, typename T>
-R *dyn_cast(const T&); // expected-note{{candidate template ignored: couldn't infer template argument 'R'}}
-
-void test_dyn_cast(int* ptr) {
-  (void)dyn_cast(ptr); // expected-error{{no matching function for call to 'dyn_cast'}}
-}
-
-template<int I, typename T> 
-  void get(const T&); // expected-note{{candidate template ignored: invalid explicitly-specified argument for template parameter 'I'}}
-template<template<class T> class, typename T> 
-  void get(const T&); // expected-note{{candidate template ignored: invalid explicitly-specified argument for 1st template parameter}}
-
-void test_get(void *ptr) {
-  get<int>(ptr); // expected-error{{no matching function for call to 'get'}}
-}
-
-template<typename T>
-  typename T::type get_type(const T&); // expected-note{{candidate template ignored: substitution failure [with T = int *]: type 'int *' cannot be used prior to '::'}}
-template<typename T>
-  void get_type(T *, int[(int)sizeof(T) - 9] = 0); // expected-note{{candidate template ignored: substitution failure [with T = int]: array size is negative}}
-
-void test_get_type(int *ptr) {
-  (void)get_type(ptr); // expected-error{{no matching function for call to 'get_type'}}
-}
-
-struct X {
-  template<typename T>
-  const T& min(const T&, const T&); // expected-note{{candidate template ignored: deduced conflicting types for parameter 'T' ('int' vs. 'long')}}
-};
-
-void test_X_min(X x) {
-  (void)x.min(1, 2l); // expected-error{{no matching member function for call to 'min'}}
-}
-
-namespace boost {
-  template<bool, typename = void> struct enable_if {};
-  template<typename T> struct enable_if<true, T> { typedef T type; };
-}
-template<typename T> typename boost::enable_if<sizeof(T) == 4, int>::type if_size_4(); // expected-note{{candidate template ignored: disabled by 'enable_if' [with T = char]}}
-int k = if_size_4<char>(); // expected-error{{no matching function}}
-
-namespace llvm {
-  template<typename Cond, typename T = void> struct enable_if : boost::enable_if<Cond::value, T> {};
-}
-template<typename T> struct is_int { enum { value = false }; };
-template<> struct is_int<int> { enum { value = true }; };
-template<typename T> typename llvm::enable_if<is_int<T> >::type if_int(); // expected-note{{candidate template ignored: disabled by 'enable_if' [with T = char]}}
-void test_if_int() {
-  if_int<char>(); // expected-error{{no matching function}}
-}
-
-template<typename T> struct NonTemplateFunction {
-  typename boost::enable_if<sizeof(T) == 4, int>::type f(); // expected-error{{no type named 'type' in 'boost::enable_if<false, int>'; 'enable_if' cannot be used to disable this declaration}}
-};
-NonTemplateFunction<char> NTFC; // expected-note{{here}}
-
-namespace NS1 {
-  template <class A>
-  class array {};
-}
-
-namespace NS2 {
-  template <class A>
-  class array {};
-}
-
-template <class A>
-void foo(NS2::array<A>); // expected-note{{candidate template ignored: could not match 'NS2::array' against 'NS1::array'}}
-
-void test() {
-  foo(NS1::array<int>()); // expected-error{{no matching function for call to 'foo'}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/overload-uneval.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/overload-uneval.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/overload-uneval.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -Wno-unused %s
-// expected-no-diagnostics
-
-// Tests that overload resolution is treated as an unevaluated context.
-// PR5541
-struct Foo
-{
-    Foo *next;
-};
-
-template <typename>
-struct Bar
-{
-};
-
-
-template <typename T>
-class Wibble
-{
-    typedef Bar<T> B;
-
-    static inline B *concrete(Foo *node) {
-        int a[sizeof(T) ? -1 : -1];
-        return reinterpret_cast<B *>(node);
-    }
-
-public:
-    class It
-    {
-        Foo *i;
-
-    public:
-        inline operator B *() const { return concrete(i); }
-        inline bool operator!=(const It &o) const { return i !=
-o.i; }
-    };
-};
-
-void f() {
-  Wibble<void*>::It a, b;
-
-  a != b;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/partial-spec-instantiate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/partial-spec-instantiate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/partial-spec-instantiate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-// PR4607
-template <class T> struct X {};
-
-template <> struct X<char>
-{
-  static char* g();
-};
-
-template <class T> struct X2 {};
-
-template <class U>
-struct X2<U*> {
-  static void f() {
-    X<U>::g();
-  }
-};
-
-void a(char *a, char *b) {X2<char*>::f();}
-
-namespace WonkyAccess {
-  template<typename T>
-  struct X {
-    int m;
-  };
-
-  template<typename U>
-  class Y;
-
-  template<typename U>
-  struct Y<U*> : X<U> { };
-
-  template<>
-  struct Y<float*> : X<float> { };
-
-  int f(Y<int*> y, Y<float*> y2) {
-    return y.m + y2.m;
-  }
-}
-
-// <rdar://problem/9169404>
-namespace rdar9169404 {
-  template<typename T, T N> struct X { };
-  template<bool C> struct X<bool, C> {
-    typedef int type;
-  };
-
-  X<bool, -1>::type value;
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/pragma-ms_struct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/pragma-ms_struct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/pragma-ms_struct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-apple-osx10.7.0 %s
-// expected-no-diagnostics
-
-#pragma ms_struct on
-
-// <rdar://problem/10791194>
-template<int x> struct foo {
-  long long a;
-  int b;
-};
-extern int arr[sizeof(foo<0>) == 16 ? 1 : -1];

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/qualified-id.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/qualified-id.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/qualified-id.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR5061
-namespace a {
-  template <typename T> class C {};
-}
-namespace b {
-  template<typename T> void f0(a::C<T> &a0) { }
-}
-
-
-namespace test1 {
-  int a = 0;
-  template <class T> class Base { };
-  template <class T> class Derived : public Base<T> {
-    int foo() {
-      return test1::a;
-    }
-  };
-}
-
-namespace test2 {
-  class Impl {
-  public:
-    int foo();
-  };
-  template <class T> class Magic : public Impl {
-    int foo() {
-      return Impl::foo();
-    }
-  };
-}
-
-namespace PR6063 {
-  template <typename T> void f(T, T);
-  
-  namespace detail 
-  {
-    using PR6063::f;
-  }
-  
-  template <typename T>
-  void g(T a, T b)
-  {
-    detail::f(a, b);
-  }
-}
-
-namespace PR12291 {
-  template <typename T>
-  class Outer2 {
-    template <typename V>
-    template <typename W>
-    class Outer2<V>::Inner; // expected-error{{nested name specifier 'Outer2<V>::' for declaration does not refer into a class, class template or class template partial specialization}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/qualified-names-diag.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/qualified-names-diag.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/qualified-names-diag.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,16 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace std {
-  template<typename T> class vector { }; // expected-note{{candidate}}
-}
-
-typedef int INT;
-typedef float Real;
-
-void test() {
-  using namespace std;
-
-  std::vector<INT> v1;
-  vector<Real> v2;
-  v1 = v2; // expected-error{{no viable overloaded '='}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/rdar9173693.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/rdar9173693.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/rdar9173693.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// <rdar://problem/9173693>
-template< bool C > struct assert { };
-template< bool > struct assert_arg_pred_impl { }; // expected-note 3 {{declared here}}
-template< typename Pred > assert<false> assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type ); // expected-error 5 {{}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/recovery-crash.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/recovery-crash.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/recovery-crash.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// Clang used to crash trying to recover while adding 'this->' before Work(x);
-
-template <typename> struct A {
-  static void Work(int);  // expected-note{{must qualify identifier}}
-};
-
-template <typename T> struct B : public A<T> {
-  template <typename T2> B(T2 x) {
-    Work(x);  // expected-error{{use of undeclared identifier}}
-  }
-};
-
-void Test() {
-  B<int> b(0);  // expected-note{{in instantiation of function template}}
-}
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/recursive-template-instantiation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/recursive-template-instantiation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/recursive-template-instantiation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> void f(T* t) { // expected-note{{could not match 'T *' against 'int'}}
-  f(*t); // expected-error{{no matching function}}\
-         // expected-note 3{{requested here}}
-}
-
-void test_f(int ****p) {
-  f(p); // expected-note{{requested here}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/resolve-single-template-id.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/resolve-single-template-id.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/resolve-single-template-id.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-namespace std {
-  class type_info {};
-}
-
-void one() { }
-void two() { } // expected-note 4{{possible target for call}}
-void two(int) { } // expected-note 4{{possible target for call}}
-
-template<class T> void twoT() { } // expected-note 5{{possible target for call}}
-template<class T> void twoT(int) { } // expected-note 5{{possible target for call}}
-
-template<class T> void oneT() { }
-template<class T, class U> void oneT(U) { }
-/*
-The target can be
- an object or reference being initialized (8.5, 8.5.3),
- the left side of an assignment (5.17),
- a parameter of a function (5.2.2),
- a parameter of a user-defined operator (13.5),
- the return value of a function, operator function, or conversion (6.6.3),
- an explicit type conversion (5.2.3, 5.2.9, 5.4), or
- a non-type template-parameter (14.3.2)
-*/
-//#include <typeinfo>
-template<void (*p)(int)> struct test { };
-
-int main()
-{
-   one;         // expected-warning {{expression result unused}}
-   two;         // expected-error {{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}}
-   oneT<int>;  // expected-warning {{expression result unused}}
-   twoT<int>;  // expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}}
-   typeid(oneT<int>); // expected-warning{{expression result unused}}
-  sizeof(oneT<int>); // expected-warning {{expression result unused}}
-  sizeof(twoT<int>); //expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}}
-  decltype(oneT<int>)* fun = 0;
-  
-  *one;    // expected-warning {{expression result unused}}
-  *oneT<int>;   // expected-warning {{expression result unused}}
-  *two;  //expected-error {{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}} expected-error {{indirection requires pointer operand}}
-  *twoT<int>; //expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}}
-  !oneT<int>;  // expected-warning {{expression result unused}} expected-warning {{address of function 'oneT<int>' will always evaluate to 'true'}} expected-note {{prefix with the address-of operator to silence this warning}}
-  +oneT<int>;  // expected-warning {{expression result unused}}
-  -oneT<int>;  //expected-error {{invalid argument type}}
-  oneT<int> == 0;   // expected-warning {{equality comparison result unused}} \
-                    // expected-note {{use '=' to turn this equality comparison into an assignment}}
-  0 == oneT<int>;   // expected-warning {{equality comparison result unused}}
-  0 != oneT<int>;    // expected-warning {{inequality comparison result unused}}
-  (false ? one : oneT<int>);   // expected-warning {{expression result unused}}
-  void (*p1)(int); p1 = oneT<int>;
-  
-  int i = (int) (false ? (void (*)(int))twoT<int> : oneT<int>); //expected-error {{incompatible operand}}
-  (twoT<int>) == oneT<int>; //expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}} {{cannot resolve overloaded function 'twoT' from context}}
-  bool b = oneT<int>; // expected-warning {{address of function 'oneT<int>' will always evaluate to 'true'}} expected-note {{prefix with the address-of operator to silence this warning}}
-  void (*p)() = oneT<int>;
-  test<oneT<int> > ti;
-  void (*u)(int) = oneT<int>;
-
-  b = (void (*)()) twoT<int>;
-  
-  one < one; //expected-warning {{self-comparison always evaluates to false}} \
-             //expected-warning {{expression result unused}}         
-
-  oneT<int> < oneT<int>;  //expected-warning {{self-comparison always evaluates to false}} \
-                          //expected-warning {{expression result unused}}
-
-  two < two; //expected-error 2 {{reference to overloaded function could not be resolved; did you mean to call it with no arguments?}} expected-error {{invalid operands to binary expression ('void' and 'void')}}
-  twoT<int> < twoT<int>; //expected-error {{reference to overloaded function could not be resolved; did you mean to call it?}} {{cannot resolve overloaded function 'twoT' from context}}
-  oneT<int> == 0;   // expected-warning {{equality comparison result unused}} \
-                    // expected-note {{use '=' to turn this equality comparison into an assignment}}
-
-}
-
-struct rdar9108698 {
-  template<typename> void f();
-};
-
-void test_rdar9108698(rdar9108698 x) {
-  x.f<int>; // expected-error{{reference to non-static member function must be called}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/self-comparison.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/self-comparison.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/self-comparison.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,48 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template <int A, int B> void foo() {
-  (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
-  (void)(A == B);
-}
-template <int A, int B> struct S1 {
-  void foo() {
-    (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
-    (void)(A == B);
-  }
-};
-
-template <int A, int B> struct S2 {
-  template <typename T> T foo() {
-    (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
-    (void)(A == B);
-  }
-};
-
-struct S3 {
-  template <int A, int B> void foo() {
-    (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
-    (void)(A == B);
-  }
-};
-
-template <int A> struct S4 {
-  template <int B> void foo() {
-    (void)(A == A); // expected-warning {{self-comparison always evaluates to true}}
-    (void)(A == B);
-  }
-};
-
-const int N = 42;
-template <int X> void foo2() {
-  (void)(X == N);
-  (void)(N == X);
-}
-
-void test() {
-  foo<1, 1>();
-  S1<1, 1> s1; s1.foo();
-  S2<1, 1> s2; s2.foo<void>();
-  S3 s3; s3.foo<1, 1>();
-  S4<1> s4; s4.foo<1>();
-  foo2<N>();
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-
-namespace test0 {
-  // p3
-  template<typename T> int foo(T), bar(T, T); // expected-error{{single entity}}
-}
-
-// PR7252
-namespace test1 {
-  namespace A { template<typename T> struct Base { typedef T t; }; } // expected-note {{member found}}
-  namespace B { template<typename T> struct Base { typedef T t; }; } // expected-note {{member found}}
-
-  template<typename T> struct Derived : A::Base<char>, B::Base<int> {
-    // FIXME: the syntax error here is unfortunate
-    typename Derived::Base<float>::t x; // expected-error {{found in multiple base classes of different types}} \
-                                        // expected-error {{expected member name or ';'}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, 
-         int I, 
-         template<typename> class TT>
-  class A; // expected-note 3 {{template is declared here}}
-
-template<typename> class X;
-
-A<int, 0, X> * a1;
-
-A<float, 1, X, double> *a2; // expected-error{{too many template arguments for class template 'A'}}
-A<float, 1> *a3; // expected-error{{too few template arguments for class template 'A'}}
-A a3; // expected-error{{use of class template 'A' requires template arguments}}
-
-namespace test0 {
-  template <class t> class foo {};
-  template <class t> class bar {
-    bar(::test0::foo<tee> *ptr) {} // FIXME(redundant): expected-error 2 {{use of undeclared identifier 'tee'}}
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_nontype.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_nontype.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_nontype.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,348 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++98 -Wconversion -verify %s
-template<int N> struct A; // expected-note 5{{template parameter is declared here}}
-
-A<0> *a0;
-
-A<int()> *a1; // expected-error{{template argument for non-type template parameter is treated as function type 'int ()'}}
-
-A<int> *a2; // expected-error{{template argument for non-type template parameter must be an expression}}
-
-A<1 >> 2> *a3; // expected-warning{{use of right-shift operator ('>>') in template argument will require parentheses in C++11}}
-
-// C++ [temp.arg.nontype]p5:
-A<A> *a4; // expected-error{{must be an expression}}
-
-enum E { Enumerator = 17 };
-A<E> *a5; // expected-error{{template argument for non-type template parameter must be an expression}}
-template<E Value> struct A1; // expected-note{{template parameter is declared here}}
-A1<Enumerator> *a6; // okay
-A1<17> *a7; // expected-error{{non-type template argument of type 'int' cannot be converted to a value of type 'E'}}
-
-const long LongValue = 12345678;
-A<LongValue> *a8;
-const short ShortValue = 17;
-A<ShortValue> *a9;
-
-int f(int);
-A<f(17)> *a10; // expected-error{{non-type template argument of type 'int' is not an integral constant expression}}
-
-class X {
-public:
-  X();
-  X(int, int);
-  operator int() const;
-};
-A<X(17, 42)> *a11; // expected-error{{non-type template argument of type 'X' must have an integral or enumeration type}}
-
-float f(float);
-
-float g(float); // expected-note 2{{candidate function}}
-double g(double); // expected-note 2{{candidate function}}
-
-int h(int);
-float h2(float);
-
-template<int fp(int)> struct A3; // expected-note 1{{template parameter is declared here}}
-A3<h> *a14_1;
-A3<&h> *a14_2;
-A3<f> *a14_3;
-A3<&f> *a14_4;
-A3<h2> *a14_6;  // expected-error{{non-type template argument of type 'float (float)' cannot be converted to a value of type 'int (*)(int)'}}
-A3<g> *a14_7; // expected-error{{address of overloaded function 'g' does not match required type 'int (int)'}}
-
-
-struct Y { } y;
-
-volatile X * X_volatile_ptr;
-template<X const &AnX> struct A4; // expected-note 2{{template parameter is declared here}}
-X an_X;
-A4<an_X> *a15_1; // okay
-A4<*X_volatile_ptr> *a15_2; // expected-error{{non-type template argument does not refer to any declaration}}
-A4<y> *15_3; //  expected-error{{non-type template parameter of reference type 'const X &' cannot bind to template argument of type 'struct Y'}} \
-            // FIXME: expected-error{{expected unqualified-id}}
-
-template<int (&fr)(int)> struct A5; // expected-note{{template parameter is declared here}}
-A5<h> *a16_1;
-A5<f> *a16_3;
-A5<h2> *a16_6;  // expected-error{{non-type template parameter of reference type 'int (&)(int)' cannot bind to template argument of type 'float (float)'}}
-A5<g> *a14_7; // expected-error{{address of overloaded function 'g' does not match required type 'int (int)'}}
-
-struct Z {
-  int foo(int);
-  float bar(float);
-  int bar(int);
-  double baz(double);
-
-  int int_member;
-  float float_member;
-};
-template<int (Z::*pmf)(int)> struct A6; // expected-note{{template parameter is declared here}}
-A6<&Z::foo> *a17_1;
-A6<&Z::bar> *a17_2;
-A6<&Z::baz> *a17_3; // expected-error{{non-type template argument of type 'double (Z::*)(double)' cannot be converted to a value of type 'int (Z::*)(int)'}}
-
-
-template<int Z::*pm> struct A7;  // expected-note{{template parameter is declared here}}
-template<int Z::*pm> struct A7c;
-A7<&Z::int_member> *a18_1;
-A7c<&Z::int_member> *a18_2;
-A7<&Z::float_member> *a18_3; // expected-error{{non-type template argument of type 'float Z::*' cannot be converted to a value of type 'int Z::*'}}
-A7c<(&Z::int_member)> *a18_4; // expected-warning{{address non-type template argument cannot be surrounded by parentheses}}
-
-template<unsigned char C> struct Overflow; // expected-note{{template parameter is declared here}}
-
-Overflow<5> *overflow1; // okay
-Overflow<255> *overflow2; // okay
-Overflow<256> *overflow3; // expected-warning{{non-type template argument value '256' truncated to '0' for template parameter of type 'unsigned char'}}
-
-
-template<unsigned> struct Signedness; // expected-note{{template parameter is declared here}}
-Signedness<10> *signedness1; // okay
-Signedness<-10> *signedness2; // expected-warning{{non-type template argument with value '-10' converted to '4294967286' for unsigned template parameter of type 'unsigned int'}}
-
-template<signed char C> struct SignedOverflow; // expected-note 3 {{template parameter is declared here}}
-SignedOverflow<1> *signedoverflow1;
-SignedOverflow<-1> *signedoverflow2;
-SignedOverflow<-128> *signedoverflow3;
-SignedOverflow<-129> *signedoverflow4; // expected-warning{{non-type template argument value '-129' truncated to '127' for template parameter of type 'signed char'}}
-SignedOverflow<127> *signedoverflow5;
-SignedOverflow<128> *signedoverflow6; // expected-warning{{non-type template argument value '128' truncated to '-128' for template parameter of type 'signed char'}}
-SignedOverflow<(unsigned char)128> *signedoverflow7; // expected-warning{{non-type template argument value '128' truncated to '-128' for template parameter of type 'signed char'}}
-
-// Check canonicalization of template arguments.
-template<int (*)(int, int)> struct FuncPtr0;
-int func0(int, int);
-extern FuncPtr0<&func0> *fp0;
-template<int (*)(int, int)> struct FuncPtr0;
-extern FuncPtr0<&func0> *fp0;
-int func0(int, int);
-extern FuncPtr0<&func0> *fp0;
-
-// PR5350
-namespace ns {
-  template <typename T>
-  struct Foo {
-    static const bool value = true;
-  };
-  
-  template <bool b>
-  struct Bar {};
-  
-  const bool value = false;
-  
-  Bar<bool(ns::Foo<int>::value)> x;
-}
-
-// PR5349
-namespace ns {
-  enum E { k };
-  
-  template <E e>
-  struct Baz  {};
-  
-  Baz<k> f1;  // This works.
-  Baz<E(0)> f2;  // This too.
-  Baz<static_cast<E>(0)> f3;  // And this.
-  
-  Baz<ns::E(0)> b1;  // This doesn't work.
-  Baz<static_cast<ns::E>(0)> b2;  // This neither.  
-}
-
-// PR5597
-template<int (*)(float)> struct X0 { };
-
-struct X1 {
-    static int pfunc(float);
-};
-void test_X0_X1() {
-  X0<X1::pfunc> x01;
-}
-
-// PR6249
-namespace pr6249 {
-  template<typename T, T (*func)()> T f() {
-    return func();
-  }
-
-  int h();
-  template int f<int, h>();
-}
-
-namespace PR6723 {
-  template<unsigned char C> void f(int (&a)[C]); // expected-note {{candidate template ignored}} \
-  // expected-note{{substitution failure [with C = '\x00']}}
-  void g() {
-    int arr512[512];
-    f(arr512); // expected-error{{no matching function for call}}
-    f<512>(arr512); // expected-error{{no matching function for call}}
-  }
-}
-
-// Check that we instantiate declarations whose addresses are taken
-// for non-type template arguments.
-namespace EntityReferenced {
-  template<typename T, void (*)(T)> struct X { };
-
-  template<typename T>
-  struct Y {
-    static void f(T x) { 
-      x = 1; // expected-error{{assigning to 'int *' from incompatible type 'int'}}
-    }
-  };
-
-  void g() {
-    typedef X<int*, Y<int*>::f> x; // expected-note{{in instantiation of}}
-  }
-}
-
-namespace PR6964 {
-  template <typename ,int, int = 9223372036854775807L > // expected-warning 2{{non-type template argument value '9223372036854775807' truncated to '-1' for template parameter of type 'int'}} \
-  // expected-note 2{{template parameter is declared here}}
-  struct as_nview { };
-
-  template <typename Sequence, int I0> 
-  struct as_nview<Sequence, I0>  // expected-note{{while checking a default template argument used here}}
-  { };
-}
-
-// rdar://problem/8302138
-namespace test8 {
-  template <int* ip> struct A {
-    int* p;
-    A() : p(ip) {}
-  };
-
-  void test0() {
-    extern int i00;
-    A<&i00> a00;
-  }
-
-  extern int i01;
-  void test1() {
-    A<&i01> a01;
-  }
-
-
-  struct C {
-    int x;
-    char y;
-    double z;
-  };
-  
-  template <C* cp> struct B {
-    C* p;
-    B() : p(cp) {}
-  };
-
-  void test2() {
-    extern C c02;
-    B<&c02> b02;
-  }
-
-  extern C c03;
-  void test3() {
-    B<&c03> b03;
-  }
-}
-
-namespace PR8372 {
-  template <int I> void foo() { } // expected-note{{template parameter is declared here}}
-  void bar() { foo <0x80000000> (); } // expected-warning{{non-type template argument value '2147483648' truncated to '-2147483648' for template parameter of type 'int'}}
-}
-
-namespace PR9227 {
-  template <bool B> struct enable_if_bool { };
-  template <> struct enable_if_bool<true> { typedef int type; };
-  void test_bool() { enable_if_bool<false>::type i; } // expected-error{{enable_if_bool<false>}}
-
-  template <char C> struct enable_if_char { };
-  template <> struct enable_if_char<'a'> { typedef int type; };
-  void test_char_0() { enable_if_char<0>::type i; } // expected-error{{enable_if_char<'\x00'>}}
-  void test_char_b() { enable_if_char<'b'>::type i; } // expected-error{{enable_if_char<'b'>}}
-  void test_char_possibly_negative() { enable_if_char<'\x02'>::type i; } // expected-error{{enable_if_char<'\x02'>}}
-  void test_char_single_quote() { enable_if_char<'\''>::type i; } // expected-error{{enable_if_char<'\''>}}
-  void test_char_backslash() { enable_if_char<'\\'>::type i; } // expected-error{{enable_if_char<'\\'>}}
-}
-
-namespace PR10579 {
-  namespace fcppt
-  {
-    namespace container
-    {
-      namespace bitfield
-      {
-
-        template<
-          typename Enum,
-          Enum Size
-          >
-        class basic;
-
-        template<
-          typename Enum,
-          Enum Size
-          >
-        class basic
-        {
-        public:
-          basic()
-          {
-          }
-        };
-
-      }
-    }
-  }
-
-  namespace
-  {
-
-    namespace testenum
-    {
-      enum type
-        {
-          foo,
-          bar,
-          size
-        };
-    }
-
-  }
-
-  int main()
-  {
-    typedef fcppt::container::bitfield::basic<
-    testenum::type,
-      testenum::size
-      > bitfield_foo;
-
-    bitfield_foo obj;
-  }
-
-}
-
-template <int& I> struct PR10766 { static int *ip; };
-template <int& I> int* PR10766<I>::ip = &I;
-
-namespace rdar13000548 {
-  template<typename R, typename U, R F>
-  U f() { return &F; } // expected-error{{cannot take the address of an rvalue of type 'int (*)(int)'}} expected-error{{cannot take the address of an rvalue of type 'int *'}}
-
-  int g(int);
-  int y[3];
-  void test()
-  {
-    f<int(int), int (*)(int), g>(); // expected-note{{in instantiation of}}
-    f<int[3], int*, y>(); // expected-note{{in instantiation of}}
-  }
-
-}
-
-namespace rdar13806270 {
-  template <unsigned N> class X { };
-  const unsigned value = 32;
-  struct Y {
-    X<value + 1> x;
-  };
-  void foo() {}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_nontype_cxx11.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_nontype_cxx11.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_nontype_cxx11.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
-
-namespace PR15360 {
-  template<typename R, typename U, R F>
-  U f() { return &F; } // expected-error{{cannot take the address of an rvalue of type 'int (*)(int)'}} expected-error{{cannot take the address of an rvalue of type 'int *'}}
-  void test() {
-    f<int(int), int(*)(int), nullptr>(); // expected-note{{in instantiation of}}
-    f<int[3], int*, nullptr>(); // expected-note{{in instantiation of}}
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_template.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_template.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_template.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<template<typename T> class X> struct A; // expected-note 2{{previous template template parameter is here}}
-
-template<template<typename T, int I> class X> struct B; // expected-note{{previous template template parameter is here}}
-
-template<template<int I> class X> struct C;  // expected-note{{previous non-type template parameter with type 'int' is here}}
-
-template<class> struct X; // expected-note{{too few template parameters in template template argument}}
-template<int N> struct Y; // expected-note{{template parameter has a different kind in template argument}}
-template<long N> struct Ylong; // expected-note{{template non-type parameter has a different type 'long' in template argument}}
-
-namespace N {
-  template<class> struct Z;
-}
-template<class, class> struct TooMany; // expected-note{{too many template parameters in template template argument}}
-
-
-A<X> *a1; 
-A<N::Z> *a2;
-A< ::N::Z> *a3;
-
-A<Y> *a4; // expected-error{{template template argument has different template parameters than its corresponding template template parameter}}
-A<TooMany> *a5; // expected-error{{template template argument has different template parameters than its corresponding template template parameter}}
-B<X> *a6; // expected-error{{template template argument has different template parameters than its corresponding template template parameter}}
-C<Y> *a7;
-C<Ylong> *a8; // expected-error{{template template argument has different template parameters than its corresponding template template parameter}}
-
-template<typename T> void f(int);
-
-A<f> *a9; // expected-error{{must be a class template}}
-
-// Evil digraph '<:' is parsed as '[', expect error.
-A<::N::Z> *a10; // expected-error{{found '<::' after a template name which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?}}
-
-// Do not do a digraph correction here.
-A<: :N::Z> *a11;  // expected-error{{expected expression}} \
-          expected-error{{C++ requires a type specifier for all declarations}}
-
-// PR7807
-namespace N {
-  template <typename, typename = int> 
-  struct X
-  { };
-
-  template <typename ,int> 
-  struct Y
-  { X<int> const_ref(); };
-
-  template <template<typename,int> class TT, typename T, int N> 
-  int operator<<(int, TT<T, N> a) { // expected-note{{candidate template ignored}}
-    0 << a.const_ref(); // expected-error{{invalid operands to binary expression ('int' and 'X<int>')}}
-  }
-
-  void f0( Y<int,1> y){ 1 << y; } // expected-note{{in instantiation of function template specialization 'N::operator<<<Y, int, 1>' requested here}}
-}
-
-// PR12179
-template <typename Primitive, template <Primitive...> class F> // expected-warning {{variadic templates are a C++11 extension}}
-struct unbox_args {
-  typedef typename Primitive::template call<F> x;
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_type.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_type.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_arg_type.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T> class A; // expected-note 2 {{template parameter is declared here}} expected-note{{template is declared here}}
-
-// [temp.arg.type]p1
-A<0> *a1; // expected-error{{template argument for template type parameter must be a type}}
-
-A<A> *a2; // expected-error{{use of class template 'A' requires template arguments}}
-
-A<int> *a3;
-A<int()> *a4; 
-A<int(float)> *a5;
-A<A<int> > *a6;
-
-// Pass an overloaded function template:
-template<typename T> void function_tpl(T);
-A<function_tpl> a7;  // expected-error{{template argument for template type parameter must be a type}}
-
-// Pass a qualified name:
-namespace ns {
-template<typename T> class B {};  // expected-note{{template is declared here}}
-}
-A<ns::B> a8; // expected-error{{use of class template 'ns::B' requires template arguments}}
-
-// [temp.arg.type]p2
-void f() {
-  class X { };
-  A<X> * a = 0; // expected-warning{{template argument uses local type 'X'}}
-}
-
-struct { int x; } Unnamed; // expected-note{{unnamed type used in template argument was declared here}}
-A<__typeof__(Unnamed)> *a9; // expected-warning{{template argument uses unnamed type}}
-
-template<typename T, unsigned N>
-struct Array {
-  typedef struct { T x[N]; } type;
-};
-
-template<typename T> struct A1 { };
-A1<Array<int, 17>::type> ax;
-
-// FIXME: [temp.arg.type]p3. The check doesn't really belong here (it
-// belongs somewhere in the template instantiation section).

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_order.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_order.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_order.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T, typename U>
-struct X1 {
-  static const int value = 0;
-};
-
-template<typename T, typename U>
-struct X1<T*, U*> {
-  static const int value = 1;
-};
-
-template<typename T>
-struct X1<T*, T*> {
-  static const int value = 2;
-};
-
-template<typename T>
-struct X1<const T*, const T*> {
-  static const int value = 3;
-};
-
-int array0[X1<int, int>::value == 0? 1 : -1];
-int array1[X1<int*, float*>::value == 1? 1 : -1];
-int array2[X1<int*, int*>::value == 2? 1 : -1];
-typedef const int* CIP;
-int array3[X1<const int*, CIP>::value == 3? 1 : -1];
-
-template<typename T, typename U>
-struct X2 { };
-
-template<typename T, typename U>
-struct X2<T*, U> { }; // expected-note{{matches}}
-
-template<typename T, typename U>
-struct X2<T, U*> { }; // expected-note{{matches}}
-
-template<typename T, typename U>
-struct X2<const T*, const U*> { };
-
-X2<int*, int*> x2a; // expected-error{{ambiguous}}
-X2<const int*, const int*> x2b;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,363 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-struct is_pointer {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_pointer<T*> {
-  static const bool value = true;
-};
-
-template<typename T>
-struct is_pointer<const T*> {
-  static const bool value = true;
-};
-
-int array0[is_pointer<int>::value? -1 : 1];
-int array1[is_pointer<int*>::value? 1 : -1];
-int array2[is_pointer<const int*>::value? 1 : -1];
-
-template<typename T>
-struct is_lvalue_reference {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_lvalue_reference<T&> {
-  static const bool value = true;
-};
-
-int lvalue_ref0[is_lvalue_reference<int>::value? -1 : 1];
-int lvalue_ref1[is_lvalue_reference<const int&>::value? 1 : -1];
-
-template<typename T>
-struct is_const {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_const<const T> {
-  static const bool value = true;
-};
-
-int is_const0[is_const<int>::value? -1 : 1];
-int is_const1[is_const<const int>::value? 1 : -1];
-int is_const2[is_const<const volatile int>::value? 1 : -1];
-int is_const3[is_const<const int [3]>::value? 1 : -1];
-int is_const4[is_const<const volatile int[3]>::value? 1 : -1];
-int is_const5[is_const<volatile int[3]>::value? -1 : 1];
-
-template<typename T>
-struct is_volatile {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_volatile<volatile T> {
-  static const bool value = true;
-};
-
-int is_volatile0[is_volatile<int>::value? -1 : 1];
-int is_volatile1[is_volatile<volatile int>::value? 1 : -1];
-int is_volatile2[is_volatile<const volatile int>::value? 1 : -1];
-int is_volatile3[is_volatile<volatile char[3]>::value? 1 : -1];
-                 
-template<typename T, typename U>
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-typedef int INT;
-typedef INT* int_ptr;
-
-int is_same0[is_same<int, int>::value? 1 : -1];
-int is_same1[is_same<int, INT>::value? 1 : -1];
-int is_same2[is_same<const int, int>::value? -1 : 1];
-int is_same3[is_same<int_ptr, int>::value? -1 : 1];
-
-template<typename T>
-struct remove_reference {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_reference<T&> {
-  typedef T type;
-};
-
-int remove_ref0[is_same<remove_reference<int>::type, int>::value? 1 : -1];
-int remove_ref1[is_same<remove_reference<int&>::type, int>::value? 1 : -1];
-
-template<typename T>
-struct remove_const {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_const<const T> {
-  typedef T type;
-};
-
-int remove_const0[is_same<remove_const<const int>::type, int>::value? 1 : -1];
-int remove_const1[is_same<remove_const<const int[3]>::type, int[3]>::value? 1 : -1];
-
-template<typename T>
-struct is_incomplete_array {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_incomplete_array<T[]> {
-  static const bool value = true;
-};
-
-int incomplete_array0[is_incomplete_array<int>::value ? -1 : 1];
-int incomplete_array1[is_incomplete_array<int[1]>::value ? -1 : 1];
-int incomplete_array2[is_incomplete_array<bool[]>::value ? 1 : -1];
-int incomplete_array3[is_incomplete_array<int[]>::value ? 1 : -1];
-
-template<typename T>
-struct is_array_with_4_elements {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_array_with_4_elements<T[4]> {
-  static const bool value = true;
-};
-
-int array_with_4_elements0[is_array_with_4_elements<int[]>::value ? -1 : 1];
-int array_with_4_elements1[is_array_with_4_elements<int[1]>::value ? -1 : 1];
-int array_with_4_elements2[is_array_with_4_elements<int[4]>::value ? 1 : -1];
-int array_with_4_elements3[is_array_with_4_elements<int[4][2]>::value ? 1 : -1];
-
-template<typename T>
-struct get_array_size;
-
-template<typename T, unsigned N>
-struct get_array_size<T[N]> {
-  static const unsigned value = N;
-};
-
-int array_size0[get_array_size<int[12]>::value == 12? 1 : -1];
-
-template<typename T>
-struct remove_extent {
-  typedef T type;
-};
-
-template<typename T>
-struct remove_extent<T[]> { 
-  typedef T type;
-};
-
-template<typename T, unsigned N>
-struct remove_extent<T[N]> { 
-  typedef T type;
-};
-
-int remove_extent0[is_same<remove_extent<int[][5]>::type, int[5]>::value? 1 : -1];
-int remove_extent1[is_same<remove_extent<const int[][5]>::type, const int[5]>::value? 1 : -1];
-
-template<typename T>
-struct is_unary_function {
-  static const bool value = false;
-};
-
-template<typename T, typename U>
-struct is_unary_function<T (*)(U)> {
-  static const bool value = true;
-};
-
-int is_unary_function0[is_unary_function<int>::value ? -1 : 1];
-int is_unary_function1[is_unary_function<int (*)()>::value ? -1 : 1];
-int is_unary_function2[is_unary_function<int (*)(int, bool)>::value ? -1 : 1];
-int is_unary_function3[is_unary_function<int (*)(bool)>::value ? 1 : -1];
-int is_unary_function4[is_unary_function<int (*)(int)>::value ? 1 : -1];
-
-template<typename T>
-struct is_unary_function_with_same_return_type_as_argument_type {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_unary_function_with_same_return_type_as_argument_type<T (*)(T)> {
-  static const bool value = true;
-};
-
-int is_unary_function5[is_unary_function_with_same_return_type_as_argument_type<int>::value ? -1 : 1];
-int is_unary_function6[is_unary_function_with_same_return_type_as_argument_type<int (*)()>::value ? -1 : 1];
-int is_unary_function7[is_unary_function_with_same_return_type_as_argument_type<int (*)(int, bool)>::value ? -1 : 1];
-int is_unary_function8[is_unary_function_with_same_return_type_as_argument_type<int (*)(bool)>::value ? -1 : 1];
-int is_unary_function9[is_unary_function_with_same_return_type_as_argument_type<int (*)(int)>::value ? 1 : -1];
-int is_unary_function10[is_unary_function_with_same_return_type_as_argument_type<int (*)(int, ...)>::value ? -1 : 1];
-int is_unary_function11[is_unary_function_with_same_return_type_as_argument_type<int (* const)(int)>::value ? -1 : 1];
-
-template<typename T>
-struct is_binary_function {
-  static const bool value = false;
-};
-
-template<typename R, typename T1, typename T2>
-struct is_binary_function<R(T1, T2)> {
-  static const bool value = true;
-};
-
-int is_binary_function0[is_binary_function<int(float, double)>::value? 1 : -1];
-
-template<typename T>
-struct is_member_pointer {
-  static const bool value = false;
-};
-
-template<typename T, typename Class>
-struct is_member_pointer<T Class::*> {
-  static const bool value = true;
-};
-
-struct X { };
-
-int is_member_pointer0[is_member_pointer<int X::*>::value? 1 : -1];
-int is_member_pointer1[is_member_pointer<const int X::*>::value? 1 : -1];
-int is_member_pointer2[is_member_pointer<int (X::*)()>::value? 1 : -1];
-int is_member_pointer3[is_member_pointer<int (X::*)(int) const>::value? 1 : -1];
-int is_member_pointer4[is_member_pointer<int (X::**)(int) const>::value? -1 : 1];
-int is_member_pointer5[is_member_pointer<int>::value? -1 : 1];
-
-template<typename T>
-struct is_member_function_pointer {
-  static const bool value = false;
-};
-
-template<typename T, typename Class>
-struct is_member_function_pointer<T (Class::*)()> {
-  static const bool value = true;
-};
-
-template<typename T, typename Class>
-struct is_member_function_pointer<T (Class::*)() const> {
-  static const bool value = true;
-};
-
-template<typename T, typename Class>
-struct is_member_function_pointer<T (Class::*)() volatile> {
-  static const bool value = true;
-};
-
-template<typename T, typename Class>
-struct is_member_function_pointer<T (Class::*)() const volatile> {
-  static const bool value = true;
-};
-
-template<typename T, typename Class, typename A1>
-struct is_member_function_pointer<T (Class::*)(A1)> {
-  static const bool value = true;
-};
-
-template<typename T, typename Class, typename A1>
-struct is_member_function_pointer<T (Class::*)(A1) const> {
-  static const bool value = true;
-};
-
-template<typename T, typename Class, typename A1>
-struct is_member_function_pointer<T (Class::*)(A1) volatile> {
-  static const bool value = true;
-};
-
-template<typename T, typename Class, typename A1>
-struct is_member_function_pointer<T (Class::*)(A1) const volatile> {
-  static const bool value = true;
-};
-
-int is_member_function_pointer0[
-                          is_member_function_pointer<int X::*>::value? -1 : 1];
-int is_member_function_pointer1[
-                      is_member_function_pointer<int (X::*)()>::value? 1 : -1];
-int is_member_function_pointer2[
-                      is_member_function_pointer<X (X::*)(X&)>::value? 1 : -1];
-int is_member_function_pointer3[
-           is_member_function_pointer<int (X::*)() const>::value? 1 : -1];
-int is_member_function_pointer4[
-           is_member_function_pointer<int (X::*)(float) const>::value? 1 : -1];
-
-// Test substitution of non-dependent arguments back into the template
-// argument list of the class template partial specialization.
-template<typename T, typename ValueType = T>
-struct is_nested_value_type_identity {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_nested_value_type_identity<T, typename T::value_type> {
-  static const bool value = true;
-};
-
-template<typename T>
-struct HasValueType {
-  typedef T value_type;
-};
-
-struct HasIdentityValueType {
-  typedef HasIdentityValueType value_type;
-};
-
-struct NoValueType { };
-
-int is_nested_value_type_identity0[
-            is_nested_value_type_identity<HasValueType<int> >::value? -1 : 1];
-int is_nested_value_type_identity1[
-          is_nested_value_type_identity<HasIdentityValueType>::value? 1 : -1];
-int is_nested_value_type_identity2[
-                   is_nested_value_type_identity<NoValueType>::value? -1 : 1];
-
-
-// C++ [temp.class.spec]p4:
-template<class T1, class T2, int I> class A { }; //#1 
-template<class T, int I> class A<T, T*, I> { }; //#2 
-template<class T1, class T2, int I> class A<T1*, T2, I> { }; //#3 
-template<class T> class A<int, T*, 5> { }; //#4 
-template<class T1, class T2, int I> class A<T1, T2*, I> { }; //#5 
-
-// Redefinition of class template partial specializations
-template<typename T, T N, typename U> class A0;
-
-template<typename T, T N> class A0<T, N, int> { }; // expected-note{{here}}
-template<typename T, T N> class A0<T, N, int>;
-template<typename T, T N> class A0<T, N, int> { }; // expected-error{{redef}}
-
-namespace PR6025 {
-  template< int N > struct A;
-
-  namespace N 
-  {
-    template< typename F > 
-    struct B;
-  }
-
-  template< typename Protect, typename Second > 
-  struct C;
-
-  template <class T>
-  struct C< T, A< N::B<T>::value > >
-  {
-  };
-}
-
-namespace PR6181 {
-  template <class T>
-  class a;
-  
-  class s;
-  
-  template <class U>
-  class a<s> // expected-error{{partial specialization of 'a' does not use any of its template parameters}}
-  {
-  };
-  
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec_blocks.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec_blocks.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec_blocks.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s -fblocks
-// expected-no-diagnostics
-template<typename T>
-struct is_unary_block {
-  static const bool value = false;
-};
-
-template<typename T, typename U>
-struct is_unary_block<T (^)(U)> {
-  static const bool value = true;
-};
-
-int is_unary_block0[is_unary_block<int>::value ? -1 : 1];
-int is_unary_block1[is_unary_block<int (^)()>::value ? -1 : 1];
-int is_unary_block2[is_unary_block<int (^)(int, bool)>::value ? -1 : 1];
-int is_unary_block3[is_unary_block<int (^)(bool)>::value ? 1 : -1];
-int is_unary_block4[is_unary_block<int (^)(int)>::value ? 1 : -1];
-
-template<typename T>
-struct is_unary_block_with_same_return_type_as_argument_type {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_unary_block_with_same_return_type_as_argument_type<T (^)(T)> {
-  static const bool value = true;
-};
-
-int is_unary_block5[is_unary_block_with_same_return_type_as_argument_type<int>::value ? -1 : 1];
-int is_unary_block6[is_unary_block_with_same_return_type_as_argument_type<int (^)()>::value ? -1 : 1];
-int is_unary_block7[is_unary_block_with_same_return_type_as_argument_type<int (^)(int, bool)>::value ? -1 : 1];
-int is_unary_block8[is_unary_block_with_same_return_type_as_argument_type<int (^)(bool)>::value ? -1 : 1];
-int is_unary_block9[is_unary_block_with_same_return_type_as_argument_type<int (^)(int)>::value ? 1 : -1];
-int is_unary_block10[is_unary_block_with_same_return_type_as_argument_type<int (^)(int, ...)>::value ? -1 : 1];
-int is_unary_block11[is_unary_block_with_same_return_type_as_argument_type<int (^ const)(int)>::value ? -1 : 1];

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec_neg.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec_neg.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_class_spec_neg.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,45 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T> struct vector;
-
-// C++ [temp.class.spec]p6:
-namespace N {
-  namespace M {
-    template<typename T> struct A; // expected-note{{here}}
-  }
-}
-
-template<typename T>
-struct N::M::A<T*> { }; // expected-warning{{C++11 extension}}
-
-// C++ [temp.class.spec]p9
-//   bullet 1
-template <int I, int J> struct A {}; 
-template <int I> struct A<I+5, I*2> {}; // expected-error{{depends on}} 
-template <int I, int J> struct B {}; 
-template <int I> struct B<I, I> {}; //OK 
-
-//   bullet 2
-template <class T, T t> struct C {};  // expected-note{{declared here}}
-template <class T> struct C<T, 1>; // expected-error{{specializes}}
-template <class T, T* t> struct C<T*, t>; // okay
-
-template< int X, int (*array_ptr)[X] > class A2 {}; // expected-note{{here}}
-int array[5]; 
-template< int X > class A2<X, &array> { }; // expected-error{{specializes}}
-
-template<typename T, int N, template<typename X> class TT>
-struct Test0;
-
-//   bullet 3
-template<typename T, int N, template<typename X> class TT>
-struct Test0<T, N, TT>; // expected-error{{does not specialize}}
-
-// C++ [temp.class.spec]p10
-template<typename T = int, // expected-error{{default template argument}}
-         int N = 17, // expected-error{{default template argument}}
-         template<typename X> class TT = ::vector> // expected-error{{default template argument}}
-  struct Test0<T*, N, TT> { };
-
-template<typename T> struct Test1;
-template<typename T, typename U>  // expected-note{{non-deducible}}
-  struct Test1<T*> { }; // expected-warning{{never be used}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_explicit.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_explicit.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_explicit.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,151 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -Wc++11-compat %s
-//
-// Tests explicit instantiation of templates.
-template<typename T, typename U = T> class X0 { };
-
-namespace N {
-  template<typename T, typename U = T> class X1 { };
-}
-
-// Check the syntax of explicit instantiations.
-template class X0<int, float>;
-template class X0<int>; // expected-note{{previous}}
-
-template class N::X1<int>;
-template class ::N::X1<int, float>;
-
-using namespace N;
-
-// Check for some bogus syntax that probably means that the user
-// wanted to write an explicit specialization, but forgot the '<>'
-// after 'template'.
-template class X0<double> { }; // expected-error{{explicit specialization}}
-
-// Check for explicit instantiations that come after other kinds of
-// instantiations or declarations.
-template class X0<int, int>; // expected-error{{duplicate}}
-
-template<> class X0<char> { }; // expected-note{{previous}}
-template class X0<char>; // expected-warning{{ignored}}
-
-void foo(X0<short>) { }
-template class X0<short>;
-
-// Check that explicit instantiations actually produce definitions. We
-// determine whether this happens by placing semantic errors in the
-// definition of the template we're instantiating.
-template<typename T> struct X2; // expected-note{{declared here}}
-
-template struct X2<float>; // expected-error{{undefined template}}
-
-template<typename T>
-struct X2 {
-  void f0(T*); // expected-error{{pointer to a reference}}
-};
-
-template struct X2<int>; // okay
-template struct X2<int&>; // expected-note{{in instantiation of}}
-
-// Check that explicit instantiations instantiate member classes.
-template<typename T> struct X3 {
-  struct Inner {
-    void f(T*); // expected-error{{pointer to a reference}}
-  };
-};
-
-void f1(X3<int&>); // okay, Inner, not instantiated
-
-template struct X3<int&>; // expected-note{{instantiation}}
-
-template<typename T> struct X4 {
-  struct Inner {
-    struct VeryInner {
-      void f(T*); // expected-error 2{{pointer to a reference}}
-    };
-  };
-};
-
-void f2(X4<int&>); // okay, Inner, not instantiated
-void f3(X4<int&>::Inner); // okay, Inner::VeryInner, not instantiated
-
-template struct X4<int&>; // expected-note{{instantiation}}
-template struct X4<float&>; // expected-note{{instantiation}}
-
-// Check explicit instantiation of member classes
-namespace N2 {
-
-template<typename T>
-struct X5 {
-  struct Inner1 {
-    void f(T&);
-  };
-
-  struct Inner2 { // expected-note {{here}}
-    struct VeryInner {
-      void g(T*); // expected-error 2{{pointer to a reference}}
-    };
-  };
-};
-
-}
-
-template struct N2::X5<void>::Inner2;
-
-using namespace N2;
-template struct X5<int&>::Inner2; // expected-note{{instantiation}}
-
-void f4(X5<float&>::Inner2);
-template struct X5<float&>::Inner2; // expected-note{{instantiation}}
-
-namespace N3 {
-  template struct N2::X5<int>::Inner2; // expected-warning {{explicit instantiation of 'Inner2' not in a namespace enclosing 'N2'}}
-}
-
-struct X6 {
-  struct Inner { // expected-note{{here}}
-    void f();
-  };
-};
-
-template struct X6::Inner; // expected-error{{non-templated}}
-
-// PR5559
-template <typename T>
-struct Foo;
-
-template <>
-struct Foo<int> // expected-note{{header not required for explicitly-specialized}}
-{
-    template <typename U>
-    struct Bar
-    {};
-};
-
-template <> // expected-warning{{extraneous template parameter list}}
-template <>
-struct Foo<int>::Bar<void>
-{};
-
-namespace N1 {
-
-  template<typename T> struct X7 { }; // expected-note{{here}}
-
-  namespace Inner {
-    template<typename T> struct X8 { };
-  }
-
-  template struct X7<int>;
-  template struct Inner::X8<int>;
-}
-
-template<typename T> struct X9 { }; // expected-note{{here}}
-
-template struct ::N1::Inner::X8<float>;
-
-namespace N2 {
-  using namespace N1;
-
-  template struct X7<double>; // expected-warning{{must occur in namespace}}
-
-  template struct X9<float>; // expected-warning{{must occur at global scope}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_explicit_cxx0x.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_explicit_cxx0x.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_explicit_cxx0x.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s
-namespace N1 {
-
-  template<typename T> struct X0 { }; // expected-note{{here}}
-
-  namespace Inner {
-    template<typename T> struct X1 { };
-  }
-
-  template struct X0<int>;
-  template struct Inner::X1<int>;
-}
-
-template<typename T> struct X2 { }; // expected-note{{here}}
-
-template struct ::N1::Inner::X1<float>;
-
-namespace N2 {
-  using namespace N1;
-
-  template struct X0<double>; // expected-error{{must occur in namespace 'N1'}}
-
-  template struct X2<float>; // expected-error{{at global scope}}
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_func_order.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_func_order.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/temp_func_order.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,95 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T>
-int &f0(T);
-
-template<typename T>
-float &f0(T*);
-
-void test_f0(int i, int *ip) {
-  int &ir = f0(i);
-  float &fr = f0(ip);
-}
-
-template<typename T, typename U>
-int &f1(T, U);
-
-template<typename T>
-float &f1(T, T);
-
-void test_f1(int i, float f) {
-  int &ir = f1(i, f);
-  float &fr1 = f1(i, i);
-  float &fr2 = f1(f, f);
-}
-
-template<typename T, typename U>
-struct A { };
-
-template<typename T>
-int &f2(T);
-
-template<typename T, typename U>
-float &f2(A<T, U>);
-
-template<typename T>
-double &f2(A<T, T>);
-
-void test_f2(int i, A<int, float> aif, A<int, int> aii) {
-  int &ir = f2(i);
-  float &fr = f2(aif);
-  double &dr = f2(aii);
-}
-
-template<typename T, typename U>
-int &f3(T*, U); // expected-note{{candidate}}
-
-template<typename T, typename U>
-float &f3(T, U*); // expected-note{{candidate}}
-
-void test_f3(int i, int *ip, float *fp) {
-  int &ir = f3(ip, i);
-  float &fr = f3(i, fp);
-  f3(ip, ip); // expected-error{{ambiguous}}
-}
-
-template<typename T>
-int &f4(T&);
-
-template<typename T>
-float &f4(const T&);
-
-void test_f4(int i, const int ic) {
-  int &ir1 = f4(i);
-  float &fr1 = f4(ic);
-}
-
-template<typename T, typename U>
-int &f5(T&, const U&); // expected-note{{candidate}}
-
-template<typename T, typename U>
-float &f5(const T&, U&); // expected-note{{candidate}}
-
-void test_f5(int i, const int ic) {
-  f5(i, i); // expected-error{{ambiguous}}
-}
-
-template<typename T, typename U>
-int &f6(T&, U&);
-
-template<typename T, typename U>
-float &f6(const T&, U&);
-
-void test_f6(int i, const int ic) {
-  int &ir = f6(i, i);
-  float &fr = f6(ic, ic);
-}
-
-struct CrazyFun {
-  template<typename T, typename U> operator A<T, U>();
-  template<typename T> operator A<T, T>();
-};
-
-void fun(CrazyFun cf) {
-  A<int, float> aif = cf;
-  A<int, int> aii = cf;  
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-class-traits.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-class-traits.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-class-traits.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s 
-// expected-no-diagnostics
-#define T(b) (b) ? 1 : -1
-#define F(b) (b) ? -1 : 1
-
-struct HasVirt { virtual void a(); };
-template<class T> struct InheritPolymorph : HasVirt {};
-int t01[T(__is_polymorphic(InheritPolymorph<int>))];
-

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-decl-fail.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-decl-fail.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-decl-fail.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,10 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename T> typedef T X; // expected-error{{typedef cannot be a template}}
-
-template<typename T>
-enum t0 { A = T::x }; // expected-error{{enumeration cannot be a template}} \
-                      // expected-warning{{declaration does not declare anything}}
-
-enum e0 {};
-template<int x> enum e0 f0(int a=x) {}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-id-expr.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-id-expr.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-id-expr.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,98 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// PR5336
-template<typename FromCl>
-struct isa_impl_cl {
- template<class ToCl>
- static void isa(const FromCl &Val) { }
-};
-
-template<class X, class Y>
-void isa(const Y &Val) {   return isa_impl_cl<Y>::template isa<X>(Val); }
-
-class Value;
-void f0(const Value &Val) { isa<Value>(Val); }
-
-// Implicit template-ids.
-template<typename T>
-struct X0 {
-  template<typename U>
-  void f1();
-  
-  template<typename U>
-  void f2(U) {
-    f1<U>();
-  }
-};
-
-void test_X0_int(X0<int> xi, float f) {
-  xi.f2(f);
-}
-
-// Not template-id expressions, but they almost look like it.
-template<typename F>
-struct Y {
-  Y(const F&);
-};
-
-template<int I>
-struct X {
-  X(int, int);
-  void f() { 
-    Y<X<I> >(X<I>(0, 0)); 
-    Y<X<I> >(::X<I>(0, 0)); 
-  }
-};
-
-template struct X<3>;
-
-// 'template' as a disambiguator.
-// PR7030
-struct Y0 {
-  template<typename U>
-  void f1(U);
-
-  template<typename U>
-  static void f2(U);
-
-  void f3(int);
-
-  static int f4(int);
-  template<typename U>
-  static void f4(U);
-
-  template<typename U>
-  void f() {
-    Y0::template f1<U>(0);
-    Y0::template f1(0);
-    this->template f1(0);
-
-    Y0::template f2<U>(0);
-    Y0::template f2(0);
-
-    Y0::template f3(0); // expected-error {{'f3' following the 'template' keyword does not refer to a template}}
-    Y0::template f3(); // expected-error {{'f3' following the 'template' keyword does not refer to a template}}
-
-    int x;
-    x = Y0::f4(0);
-    x = Y0::f4<int>(0); // expected-error {{assigning to 'int' from incompatible type 'void'}}
-    x = Y0::template f4(0); // expected-error {{assigning to 'int' from incompatible type 'void'}}
-
-    x = this->f4(0);
-    x = this->f4<int>(0); // expected-error {{assigning to 'int' from incompatible type 'void'}}
-    x = this->template f4(0); // expected-error {{assigning to 'int' from incompatible type 'void'}}
-  }
-};
-
-struct A {
-  template<int I>
-  struct B {
-    static void b1();
-  };
-};
-
-template<int I>
-void f5() {
-  A::template B<I>::template b1(); // expected-error {{'b1' following the 'template' keyword does not refer to a template}}
-}
-
-template void f5<0>(); // expected-note {{in instantiation of function template specialization 'f5<0>' requested here}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-id-printing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-id-printing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/template-id-printing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,141 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -ast-print %s | FileCheck %s
-namespace N {
-  template<typename T, typename U> void f(U);
-  template<int> void f();
-}
-
-void g() {
-  // CHECK: N::f<int>(3.14
-  N::f<int>(3.14);
-  
-  // CHECK: N::f<double>
-  void (*fp)(int) = N::f<double>;
-}
-
-
-// (NNS qualified) DeclRefExpr.
-namespace DRE {
-
-template <typename T>
-void foo();
-
-void test() {
-  // CHECK: DRE::foo<int>;
-  DRE::foo<int>;
-  // CHECK: DRE::template foo<int>;
-  DRE::template foo<int>;
-  // CHECK: DRE::foo<int>();
-  DRE::foo<int>();
-  // CHECK: DRE::template foo<int>();
-  DRE::template foo<int>();
-}
-
-} // namespace DRE
-
-
-// MemberExpr.
-namespace ME {
-
-struct S {
-  template <typename T>
-  void mem();
-};
-
-void test() {
-  S s;
-  // CHECK: s.mem<int>();
-  s.mem<int>();
-  // CHECK: s.template mem<int>();
-  s.template mem<int>();
-}
-
-} // namespace ME
-
-
-// UnresolvedLookupExpr.
-namespace ULE {
-
-template <typename T>
-int foo();
-
-template <typename T>
-void test() {
-  // CHECK: ULE::foo<T>;
-  ULE::foo<T>;
-  // CHECK: ULE::template foo<T>;
-  ULE::template foo<T>;
-}
-
-} // namespace ULE
-
-
-// UnresolvedMemberExpr.
-namespace UME {
-
-struct S {
-  template <typename T>
-  void mem();
-};
-
-template <typename U>
-void test() {
-  S s;
-  // CHECK: s.mem<U>();
-  s.mem<U>();
-  // CHECK: s.template mem<U>();
-  s.template mem<U>();
-}
-
-} // namespace UME
-
-
-// DependentScopeDeclRefExpr.
-namespace DSDRE {
-
-template <typename T>
-struct S;
-
-template <typename T>
-void test() {
-  // CHECK: S<T>::foo;
-  S<T>::foo;
-  // CHECK: S<T>::template foo;
-  S<T>::template foo;
-  // CHECK: S<T>::template foo<>;
-  S<T>::template foo<>;
-  // CHECK: S<T>::template foo<T>;
-  S<T>::template foo<T>;
-}
-
-} // namespace DSDRE
-
-
-// DependentScopeMemberExpr.
-namespace DSME {
-
-template <typename T>
-struct S;
-
-template <typename T>
-void test() {
-  S<T> s;
-  // CHECK: s.foo;
-  s.foo;
-  // CHECK: s.template foo;
-  s.template foo;
-  // CHECK: s.template foo<>;
-  s.template foo<>;
-  // CHECK: s.template foo<T>;
-  s.template foo<T>;
-}
-
-} // namespace DSME
-
-namespace DSDRE_withImplicitTemplateArgs {
-
-template <typename T> void foo() {
-  // CHECK: T::template bar();
-  T::template bar();
-}
-
-} // namespace DSDRE_withImplicitTemplateArgs

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-2.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-2.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-2.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-template<typename MetaFun, typename T>
-struct bind_metafun {
-  typedef typename MetaFun::template apply<T> type;
-};
-
-struct add_pointer {
-  template<typename T>
-  struct apply {
-    typedef T* type;
-  };
-};
-
-int i;
-// FIXME: if we make the declarator below a pointer (e.g., with *ip),
-// the error message isn't so good because we don't get the handy
-// 'aka' telling us that we're dealing with an int**. Should we fix
-// getDesugaredType to dig through pointers and such?
-bind_metafun<add_pointer, int>::type::type ip = &i;
-bind_metafun<add_pointer, float>::type::type fp = &i; // expected-error{{cannot initialize a variable of type 'bind_metafun<add_pointer, float>::type::type' (aka 'float *') with an rvalue of type 'int *'}}
-
-
-template<typename T>
-struct extract_type_type {
-  typedef typename T::type::type t;
-};
-
-double d;
-extract_type_type<bind_metafun<add_pointer, double> >::t dp = &d;

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-3.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-3.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-3.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,19 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-// PR4364
-template<class T> struct a {
-  T b() {
-    return typename T::x();
-  }
-};
-struct B {
-  typedef B x;
-};
-B c() {
-  a<B> x;
-  return x.b();
-}
-
-// Some extra tests for invalid cases
-template<class T> struct test2 { T b() { return typename T::a; } }; // expected-error{{expected '(' for function-style cast or type construction}}
-template<class T> struct test3 { T b() { return typename a; } }; // expected-error{{expected a qualified name after 'typename'}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-4.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-4.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier-4.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,164 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-template<typename T, typename U> 
-struct is_same {
-  static const bool value = false;
-};
-
-template<typename T>
-struct is_same<T, T> {
-  static const bool value = true;
-};
-
-template<typename MetaFun, typename T1, typename T2>
-struct metafun_apply2 {
-  typedef typename MetaFun::template apply<T1, T2> inner;
-  typedef typename inner::type type;
-};
-
-template<typename T, typename U> struct pair;
-
-struct make_pair {
-  template<typename T1, typename T2>
-  struct apply {
-    typedef pair<T1, T2> type;
-  };
-};
-
-int a0[is_same<metafun_apply2<make_pair, int, float>::type, 
-               pair<int, float> >::value? 1 : -1];
-int a1[is_same<
-         typename make_pair::template apply<int, float>, // expected-warning{{'template' keyword outside of a template}} \
-       // expected-warning{{'typename' occurs outside of a template}}
-         make_pair::apply<int, float>
-       >::value? 1 : -1];
-
-template<typename MetaFun>
-struct swap_and_apply2 {
-  template<typename T1, typename T2>
-  struct apply {
-    typedef typename MetaFun::template apply<T2, T1> new_metafun;
-    typedef typename new_metafun::type type;
-  };
-};
-
-int a2[is_same<swap_and_apply2<make_pair>::apply<int, float>::type, 
-               pair<float, int> >::value? 1 : -1];
-
-template<typename MetaFun>
-struct swap_and_apply2b {
-  template<typename T1, typename T2>
-  struct apply {
-    typedef typename MetaFun::template apply<T2, T1>::type type;
-  };
-};
-
-int a3[is_same<swap_and_apply2b<make_pair>::apply<int, float>::type, 
-               pair<float, int> >::value? 1 : -1];
-
-template<typename T>
-struct X0 {
-  template<typename U, typename V>
-  struct Inner;
-  
-  void f0(X0<T>::Inner<T*, T&>); // expected-note{{here}}
-  void f0(typename X0<T>::Inner<T*, T&>); // expected-error{{redecl}}
-
-  void f1(X0<T>::Inner<T*, T&>); // expected-note{{here}}
-  void f1(typename X0<T>::template Inner<T*, T&>); // expected-error{{redecl}}
-
-  void f2(typename X0<T>::Inner<T*, T&>::type); // expected-note{{here}}
-  void f2(typename X0<T>::template Inner<T*, T&>::type); // expected-error{{redecl}}
-};
-
-namespace PR6236 {
-  template<typename T, typename U> struct S { };
-  
-  template<typename T> struct S<T, T> {
-    template<typename U> struct K { };
-    
-    void f() {
-      typedef typename S<T, T>::template K<T> Foo;
-    }
-  };
-}
-
-namespace PR6268 {
-  template <typename T>
-  struct Outer {
-    template <typename U>
-    struct Inner {};
-
-    template <typename U>
-    typename Outer<T>::template Inner<U>
-    foo(typename Outer<T>::template Inner<U>);
-  };
-
-  template <typename T>
-  template <typename U>
-  typename Outer<T>::template Inner<U>
-  Outer<T>::foo(typename Outer<T>::template Inner<U>) {
-    return Inner<U>();
-  }
-}
-
-namespace PR6463 {
-  struct B { typedef int type; }; // expected-note 2{{member found by ambiguous name lookup}}
-  struct C { typedef int type; }; // expected-note 2{{member found by ambiguous name lookup}}
-
-  template<typename T>
-  struct A : B, C { 
-    type& a(); // expected-error{{found in multiple base classes}}
-    int x; 
-  };
-
-  // FIXME: Improve source location info here.
-  template<typename T>
-  typename A<T>::type& A<T>::a() { // expected-error{{found in multiple base classes}}
-    return x;
-  }
-}
-
-namespace PR7419 {
-  template <typename T> struct S {
-    typedef typename T::Y T2;
-    typedef typename T2::Z T3;
-    typedef typename T3::W T4;
-    T4 *f();
-
-    typedef typename T::template Y<int> TT2;
-    typedef typename TT2::template Z<float> TT3;
-    typedef typename TT3::template W<double> TT4;
-    TT4 g();
-  };
-
-  template <typename T> typename T::Y::Z::W *S<T>::f() { }
-  template <typename T> typename T::template Y<int>::template Z<float>::template W<double> S<T>::g() { }
-}
-
-namespace rdar8740998 {
-  template<typename T>
-  struct X : public T {
-    using T::iterator; // expected-note{{add 'typename' to treat this using declaration as a type}} \
-    // expected-error{{dependent using declaration resolved to type without 'typename'}}
-
-    void f() {
-      typename X<T>::iterator i; // expected-error{{typename specifier refers to a dependent using declaration for a value 'iterator' in 'X<T>'}}
-    }
-  };
-
-  struct HasIterator {
-    typedef int *iterator; // expected-note{{target of using declaration}}
-  };
-
-  void test_X(X<HasIterator> xi) { // expected-note{{in instantiation of template class}}
-    xi.f();
-  }
-}
-
-namespace rdar9068589 {
-  // From GCC PR c++/13950
-  template <class T> struct Base {};
-  template <class T> struct Derived: public Base<T> {
-    typename Derived::template Base<double>* p1;
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/typename-specifier.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,154 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-namespace N {
-  struct A {
-    typedef int type;
-  };
-
-  struct B {
-  };
-
-  struct C {
-    struct type { };
-    int type; // expected-note 2{{referenced member 'type' is declared here}}
-  };
-}
-
-int i;
-
-typename N::A::type *ip1 = &i; // expected-warning{{'typename' occurs outside of a template}}
-typename N::B::type *ip2 = &i; // expected-error{{no type named 'type' in 'N::B'}} \
-// expected-warning{{'typename' occurs outside of a template}}
-typename N::C::type *ip3 = &i; // expected-error{{typename specifier refers to non-type member 'type'}} \
-// expected-warning{{'typename' occurs outside of a template}}
-
-void test(double d) {
-  typename N::A::type f(typename N::A::type(a)); // expected-warning{{disambiguated as a function declaration}} \
-  // expected-note{{add a pair of parentheses}} expected-warning 2{{'typename' occurs outside of a template}}
-  int five = f(5);
-  
-  using namespace N;
-  for (typename A::type i = 0; i < 10; ++i) // expected-warning{{'typename' occurs outside of a template}}
-    five += 1;
-
-  const typename N::A::type f2(d); // expected-warning{{'typename' occurs outside of a template}}
-}
-
-namespace N {
-  template<typename T>
-  struct X {
-    typedef typename T::type type; // expected-error {{no type named 'type' in 'N::B'}} \
-    // expected-error {{no type named 'type' in 'B'}} \
-    // FIXME: location info for error above isn't very good \
-    // expected-error 2{{typename specifier refers to non-type member 'type'}} \
-    // expected-error{{type 'int' cannot be used prior to '::' because it has no members}}
-  };
-}
-
-N::X<N::A>::type *ip4 = &i;
-N::X<N::B>::type *ip5 = &i; // expected-note{{in instantiation of template class 'N::X<N::B>' requested here}}
-N::X<N::C>::type *ip6 = &i; // expected-note{{in instantiation of template class 'N::X<N::C>' requested here}}
-
-N::X<int>::type fail1; // expected-note{{in instantiation of template class 'N::X<int>' requested here}}
-
-template<typename T>
-struct Y {
-  typedef typename N::X<T>::type *type; // expected-note{{in instantiation of template class 'N::X<B>' requested here}} \
-  // expected-note{{in instantiation of template class 'N::X<C>' requested here}}
-};
-
-struct A {
-  typedef int type;
-};
-
-struct B {
-};
-
-struct C {
-  struct type { };
-  int type; // expected-note{{referenced member 'type' is declared here}}
-};
-
-::Y<A>::type ip7 = &i;
-::Y<B>::type ip8 = &i; // expected-note{{in instantiation of template class 'Y<B>' requested here}}
-::Y<C>::type ip9 = &i; // expected-note{{in instantiation of template class 'Y<C>' requested here}}
-
-template<typename T> struct D {
-  typedef typename T::foo foo;  // expected-error {{type 'long' cannot be used prior to '::' because it has no members}}
-  typedef typename foo::bar bar;
-};
-
-D<long> struct_D;  // expected-note {{in instantiation of template class 'D<long>' requested here}}
-
-template<typename T> struct E {
-  typedef typename T::foo foo;
-  typedef typename foo::bar bar;  // expected-error {{type 'foo' (aka 'double') cannot be used prior to '::' because it has no members}}
-};
-
-struct F {
-  typedef double foo;
-};
-
-E<F> struct_E; // expected-note {{in instantiation of template class 'E<F>' requested here}}
-
-template<typename T> struct G {
-  typedef typename T::foo foo;
-  typedef typename foo::bar bar;
-};
-
-struct H {
-  struct foo {
-    typedef double bar;
-  };
-};
-
-G<H> struct_G;
-
-namespace PR10925 {
-  template< int mydim, typename Traits >
-  class BasicGeometry
-  {
-    typedef int some_type_t;
-  };
-
-  template<class ctype, int mydim, int coorddim>
-  class MockGeometry : BasicGeometry<mydim, int>{
-    using typename BasicGeometry<mydim, int>::operator[]; // expected-error {{typename is allowed for identifiers only}}
-  };
-}
-
-
-namespace missing_typename {
-template <class T1, class T2> struct pair {}; // expected-note 7 {{template parameter is declared here}}
-
-template <class T1, class T2>
-struct map {
-  typedef T1* iterator;
-};
-
-template <class T>
-class ExampleClass1 {
-  struct ExampleItem;
-
-
-  struct ExampleItemSet {
-    typedef ExampleItem* iterator;
-    ExampleItem* operator[](unsigned);
-  };
-
-  void foo() {
-    pair<ExampleItemSet::iterator, int> i; // expected-error {{template argument for template type parameter must be a type; did you forget 'typename'?}}
-    pair<this->ExampleItemSet::iterator, int> i; // expected-error-re {{template argument for template type parameter must be a type$}}
-    pair<ExampleItemSet::operator[], int> i; // expected-error-re {{template argument for template type parameter must be a type$}}
-  }
-  pair<ExampleItemSet::iterator, int> elt; // expected-error {{template argument for template type parameter must be a type; did you forget 'typename'?}}
-
-
-  typedef map<int, ExampleItem*> ExampleItemMap;
-
-  static void bar() {
-    pair<ExampleItemMap::iterator, int> i; // expected-error {{template argument for template type parameter must be a type; did you forget 'typename'?}}
-  }
-  pair<ExampleItemMap::iterator, int> entry; // expected-error {{template argument for template type parameter must be a type; did you forget 'typename'?}}
-  pair<bar, int> foobar; // expected-error {{template argument for template type parameter must be a type}}
-};
-} // namespace missing_typename

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/typo-dependent-name.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/typo-dependent-name.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/typo-dependent-name.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// expected-no-diagnostics
-
-template<typename T>
-struct Base {
-  T inner;
-};
-
-template<typename T>
-struct X {
-  template<typename U>
-  struct Inner {
-  };
-
-  bool f(T other) {
-    return this->inner < other;
-  }
-};

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/unresolved-construct.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/unresolved-construct.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/unresolved-construct.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
-// expected-no-diagnostics
-class A
-{
-public:
-    A() {}
-
-    template <class _F>
-        explicit A(_F&& __f);
-
-    A(A&&) {}
-    A& operator=(A&&) {return *this;}
-};
-
-template <class T>
-void f(T t)
-{
-  A a;
-  a = f(t);
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/unused-variables.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/unused-variables.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/unused-variables.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -Wunused -verify %s
-
-struct X0 {
-  ~X0();
-};
-
-struct X1 { };
-
-template<typename T>
-void f() {
-  X0 x0;
-  X1 x1; // expected-warning{{unused variable 'x1'}}
-}
-
-template<typename T, typename U>
-void g() {
-  T t;
-  U u; // expected-warning{{unused variable 'u'}}
-}
-
-template void g<X0, X1>(); // expected-note{{in instantiation of}}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/value-dependent-null-pointer-constant.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/value-dependent-null-pointer-constant.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/value-dependent-null-pointer-constant.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only %s
-
-template<typename T, int N>
-struct X0 {
-  const char *f0(bool Cond) {
-    return Cond? "honk" : N;
-  }
-
-  const char *f1(bool Cond) {
-    return Cond? N : "honk";
-  }
-  
-  bool f2(const char *str) {
-    return str == N;
-  }
-};
-
-// PR4996
-template<unsigned I> int f0() { 
-  return __builtin_choose_expr(I, 0, 1); 
-}
-
-// PR5041
-struct A { };
-
-template <typename T> void f(T *t)
-{
-  (void)static_cast<void*>(static_cast<A*>(t));
-}

Modified: trunk/contrib/llvm/tools/clang/test/SemaTemplate/virtual-member-functions.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/SemaTemplate/virtual-member-functions.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/SemaTemplate/virtual-member-functions.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-
-namespace PR5557 {
-template <class T> struct A {
-  A();
-  virtual void anchor();
-  virtual int a(T x);
-};
-template<class T> A<T>::A() {}
-template<class T> void A<T>::anchor() { }
-
-template<class T> int A<T>::a(T x) { 
-  return *x; // expected-error{{requires pointer operand}}
-}
-
-void f(A<int> x) {
-  x.anchor(); // expected-note{{instantiation}}
-}
-
-template<typename T>
-struct X {
-  virtual void f();
-};
-
-template<>
-void X<int>::f() { }
-}
-
-template<typename T>
-struct Base {
-  virtual ~Base() { 
-    int *ptr = 0;
-    T t = ptr; // expected-error{{cannot initialize}}
-  }
-};
-
-template<typename T>
-struct Derived : Base<T> {
-  virtual void foo() { }
-};
-
-template struct Derived<int>; // expected-note {{in instantiation of member function 'Base<int>::~Base' requested here}}
-
-template<typename T>
-struct HasOutOfLineKey {
-  HasOutOfLineKey() { } 
-  virtual T *f(float *fp);
-};
-
-template<typename T>
-T *HasOutOfLineKey<T>::f(float *fp) {
-  return fp; // expected-error{{cannot initialize return object of type 'int *' with an lvalue of type 'float *'}}
-}
-
-HasOutOfLineKey<int> out_of_line; // expected-note{{in instantiation of member function 'HasOutOfLineKey<int>::f' requested here}}
-
-namespace std {
-  class type_info;
-}
-
-namespace PR7114 {
-  class A { virtual ~A(); }; // expected-note{{declared private here}}
-
-  template<typename T>
-  class B {
-  public:
-    class Inner : public A { }; // expected-error{{base class 'PR7114::A' has private destructor}}
-    static Inner i;
-    static const unsigned value = sizeof(i) == 4;
-  };
-
-  int f() { return B<int>::value; }
-
-  void test_typeid(B<float>::Inner bfi) {
-    (void)typeid(bfi); // expected-note{{implicit default destructor}}
-  }
-
-  template<typename T>
-  struct X : A {
-    void f() { }
-  };
-
-  void test_X(X<int> xi, X<float> xf) {
-    xi.f();
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/test/TableGen/DiagnosticBase.inc
===================================================================
--- trunk/contrib/llvm/tools/clang/test/TableGen/DiagnosticBase.inc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/TableGen/DiagnosticBase.inc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-// Define the diagnostic mappings.
-class DiagMapping;
-def MAP_IGNORE  : DiagMapping;
-def MAP_WARNING : DiagMapping;
-def MAP_ERROR   : DiagMapping;
-def MAP_FATAL   : DiagMapping;
-
-// Define the diagnostic classes.
-class DiagClass;
-def CLASS_NOTE      : DiagClass;
-def CLASS_WARNING   : DiagClass;
-def CLASS_EXTENSION : DiagClass;
-def CLASS_ERROR     : DiagClass;
-
-class DiagGroup<string Name, list<DiagGroup> subgroups = []> {
-  string GroupName = Name;
-  list<DiagGroup> SubGroups = subgroups;
-  string CategoryName = "";
-}
-class InGroup<DiagGroup G> { DiagGroup Group = G; }
-
-// All diagnostics emitted by the compiler are an indirect subclass of this.
-class Diagnostic<string text, DiagClass DC, DiagMapping defaultmapping> {
-  string      Text = text;
-  DiagClass   Class = DC;
-  DiagMapping DefaultMapping = defaultmapping;
-  DiagGroup   Group;
-  string      CategoryName = "";
-}
-
-class Error<string str>     : Diagnostic<str, CLASS_ERROR, MAP_ERROR>;
-class Warning<string str>   : Diagnostic<str, CLASS_WARNING, MAP_WARNING>;
-class Extension<string str> : Diagnostic<str, CLASS_EXTENSION, MAP_IGNORE>;
-class ExtWarn<string str>   : Diagnostic<str, CLASS_EXTENSION, MAP_WARNING>;
-class Note<string str>      : Diagnostic<str, CLASS_NOTE, MAP_FATAL/*ignored*/>;

Modified: trunk/contrib/llvm/tools/clang/test/TableGen/anonymous-groups.td
===================================================================
--- trunk/contrib/llvm/tools/clang/test/TableGen/anonymous-groups.td	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/TableGen/anonymous-groups.td	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,42 +0,0 @@
-// RUN: clang-tblgen -gen-clang-diag-groups -I%S %s -o /dev/null 2>&1 | FileCheck --strict-whitespace %s
-include "DiagnosticBase.inc"
-
-// Do not move this line; it is referred to by absolute line number in the
-// FileCheck lines below.
-def NamedGroup : DiagGroup<"name">;
-
-
-def InNamedGroup : Warning<"">, InGroup<DiagGroup<"name">>;
-//      CHECK: anonymous-groups.td:[[@LINE-1]]:41: error: group 'name' is referred to anonymously
-// CHECK-NEXT: {{^def InNamedGroup : Warning<"">, InGroup<DiagGroup<"name">>;}}
-// CHECK-NEXT: {{^                                ~~~~~~~~\^~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT: {{^                                InGroup<NamedGroup>}}
-// CHECK-NEXT: anonymous-groups.td:6:1: note: group defined here
-// CHECK-NEXT: def NamedGroup : DiagGroup<"name">;
-// CHECK-NEXT: ^
-
-
-def AlsoInNamedGroup : Warning<"">, InGroup  < DiagGroup<"name"> >;
-//      CHECK: anonymous-groups.td:[[@LINE-1]]:48: error: group 'name' is referred to anonymously
-// CHECK-NEXT: {{^def AlsoInNamedGroup : Warning<"">, InGroup  < DiagGroup<"name"> >;}}
-// CHECK-NEXT: {{^                                    ~~~~~~~~~~~\^~~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT: {{^                                    InGroup<NamedGroup>}}
-// CHECK-NEXT: anonymous-groups.td:6:1: note: group defined here
-// CHECK-NEXT: def NamedGroup : DiagGroup<"name">;
-// CHECK-NEXT: ^
-
-
-def AnonymousGroup : Warning<"">, InGroup<DiagGroup<"anonymous">>;
-def AlsoAnonymousGroup : Warning<"">, InGroup<DiagGroup<"anonymous">>;
-def AnonymousGroupAgain : Warning<"">,
-  InGroup<DiagGroup<"anonymous">>;
-
-//      CHECK: anonymous-groups.td:[[@LINE-5]]:43: error: group 'anonymous' is referred to anonymously
-// CHECK-NEXT: {{^def AnonymousGroup : Warning<"">, InGroup<DiagGroup<"anonymous">>;}}
-// CHECK-NEXT: {{^                                  ~~~~~~~~\^~~~~~~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT: anonymous-groups.td:[[@LINE-7]]:47: note: also referenced here
-// CHECK-NEXT: {{^def AlsoAnonymousGroup : Warning<"">, InGroup<DiagGroup<"anonymous">>;}}
-// CHECK-NEXT: {{^                                      ~~~~~~~~\^~~~~~~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT: anonymous-groups.td:[[@LINE-8]]:11: note: also referenced here
-// CHECK-NEXT: {{^  InGroup<DiagGroup<"anonymous">>;}}
-// CHECK-NEXT: {{^  ~~~~~~~~\^~~~~~~~~~~~~~~~~~~~~~~}}

Modified: trunk/contrib/llvm/tools/clang/test/TableGen/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/TableGen/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/TableGen/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = ['.td']

Modified: trunk/contrib/llvm/tools/clang/test/TableGen/tg-fixits.td
===================================================================
--- trunk/contrib/llvm/tools/clang/test/TableGen/tg-fixits.td	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/TableGen/tg-fixits.td	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,41 +0,0 @@
-// RUN: clang-tblgen -gen-clang-diag-groups -I%S %s -o /dev/null 2>&1 | FileCheck --strict-whitespace %s
-include "DiagnosticBase.inc"
-
-def NamedGroup : DiagGroup<"name">;
-
-def InNamedGroup : Warning<"">, InGroup<DiagGroup<"name">>;
-//      CHECK: tg-fixits.td:[[@LINE-1]]:41: error: group 'name' is referred to anonymously
-// CHECK-NEXT: {{^def InNamedGroup : Warning<"">, InGroup<DiagGroup<"name">>;}}
-// CHECK-NEXT: {{^                                ~~~~~~~~\^~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT: {{^                                InGroup<NamedGroup>}}
-
-def Wrapped : Warning<"">, InGroup<DiagGroup<
-  "name">>;
-//      CHECK: tg-fixits.td:[[@LINE-2]]:36: error: group 'name' is referred to anonymously
-// CHECK-NEXT: {{^def Wrapped : Warning<"">, InGroup<DiagGroup<}}
-// CHECK-NEXT: {{^                           ~~~~~~~~\^~~~~~~~~~}}
-// CHECK-NEXT: {{^                           InGroup<NamedGroup>}}
-
-def AlsoWrapped : Warning<"">, InGroup<
-  DiagGroup<"name">>;
-//      CHECK: tg-fixits.td:[[@LINE-1]]:3: error: group 'name' is referred to anonymously
-// CHECK-NEXT: {{^  DiagGroup<"name">>;}}
-// CHECK-NEXT: {{^~~\^~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT: {{^InGroup<NamedGroup>}}
-
-// The following lines contain hard tabs (\t); do not change this!
-def HardTabs : Warning<"">,
-	InGroup<	DiagGroup<"name">	>;
-//      CHECK: tg-fixits.td:[[@LINE-1]]:11: error: group 'name' is referred to anonymously
-// CHECK-NEXT: {{^        InGroup<        DiagGroup<"name">       >;}}
-// CHECK-NEXT: {{^        ~~~~~~~~~~~~~~~~\^~~~~~~~~~~~~~~~~~~~~~~~~}}
-// CHECK-NEXT: {{^        InGroup<NamedGrop>}}
-
-// The following line has Unicode characters in it; do not change them!
-// FIXME: For now, we just give up on printing carets/ranges/fixits for
-// lines with Unicode in them, because SMDiagnostic don't keep a byte<->column
-// map around to line things up like Clang does.
-def Unicode : Warning<"ユニコード">, InGroup<DiagGroup<"name">>;
-//      CHECK: tg-fixits.td:[[@LINE-1]]:51: error: group 'name' is referred to anonymously
-// CHECK-NEXT: def Unicode : Warning<"{{[^"]+}}">, InGroup<DiagGroup<"name">>;
-// CHECK-NEXT: note:

Modified: trunk/contrib/llvm/tools/clang/test/TestRunner.sh
===================================================================
--- trunk/contrib/llvm/tools/clang/test/TestRunner.sh	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/TestRunner.sh	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-#!/bin/sh
-#
-# TestRunner.sh - Backward compatible utility for testing an individual file.
-
-# Find where this script is.
-Dir=$(dirname $(which $0))
-AbsDir=$(cd $Dir; pwd)
-
-# Find 'lit', assuming standard layout.
-lit=$AbsDir/../../../utils/lit/lit.py
-
-# Dispatch to lit.
-$lit "$@"

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/Inputs/lit.local.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/Inputs/lit.local.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/Inputs/lit.local.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-config.suffixes = []

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source-parent-of-cwd.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source-parent-of-cwd.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source-parent-of-cwd.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/abc/def/ijk/qwe
-// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/abc/def/ijk/qwe/test.cpp\",\"file\":\"%t/abc/def/ijk/qwe/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/abc/def/ijk/qwe/test.cpp"
-// RUN: PWD="%t/abc/def" clang-check "ijk/qwe/test.cpp" 2>&1 | FileCheck %s
-
-// CHECK: C++ requires
-invalid;
-
-// REQUIRES: shell
-// PR15590
-// XFAIL: win64

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source-parent.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source-parent.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source-parent.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/abc/def/ijk/qwe
-// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/abc/def/ijk/qwe/test.cpp\",\"file\":\"%t/abc/def/ijk/qwe/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/abc/def/ijk/qwe/test.cpp"
-// RUN: clang-check "%t/abc/def/ijk/qwe/test.cpp" 2>&1 | FileCheck %s
-
-// CHECK: C++ requires
-invalid;
-
-// REQUIRES: shell
-// PR15590
-// XFAIL: win64

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/auto-detect-from-source.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/test.cpp\",\"file\":\"%t/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// RUN: clang-check "%t/test.cpp" 2>&1 | FileCheck %s
-
-// CHECK: C++ requires
-invalid;
-
-// REQUIRES: shell
-// PR15590
-// XFAIL: win64

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-args.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-args.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-args.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: clang-check "%s" -- -c 2>&1 | FileCheck %s
-
-// CHECK: C++ requires
-invalid;

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-ast-dump.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-ast-dump.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-ast-dump.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,56 +0,0 @@
-// RUN: clang-check -ast-dump "%s" -- 2>&1 | FileCheck %s
-// CHECK: NamespaceDecl{{.*}}test_namespace
-// CHECK-NEXT: CXXRecordDecl{{.*}}TheClass
-// CHECK: CXXMethodDecl{{.*}}theMethod
-// CHECK-NEXT: ParmVarDecl{{.*}}x
-// CHECK-NEXT: CompoundStmt
-// CHECK-NEXT:   ReturnStmt
-// CHECK-NEXT:     BinaryOperator
-//
-// RUN: clang-check -ast-dump -ast-dump-filter test_namespace::TheClass::theMethod "%s" -- 2>&1 | FileCheck -check-prefix CHECK-FILTER %s
-// CHECK-FILTER-NOT: NamespaceDecl
-// CHECK-FILTER-NOT: CXXRecordDecl
-// CHECK-FILTER: {{^}}Dumping test_namespace::TheClass::theMethod
-// CHECK-FILTER-NEXT: {{^}}CXXMethodDecl{{.*}}theMethod
-// CHECK-FILTER-NEXT: ParmVarDecl{{.*}}x
-// CHECK-FILTER-NEXT: CompoundStmt
-// CHECK-FILTER-NEXT:   ReturnStmt
-// CHECK-FILTER-NEXT:     BinaryOperator
-//
-// RUN: clang-check -ast-print "%s" -- 2>&1 | FileCheck -check-prefix CHECK-PRINT %s
-// CHECK-PRINT: namespace test_namespace
-// CHECK-PRINT: class TheClass
-// CHECK-PRINT: int theMethod(int x)
-//
-// RUN: clang-check -ast-list "%s" -- 2>&1 | FileCheck -check-prefix CHECK-LIST %s
-// CHECK-LIST: test_namespace
-// CHECK-LIST-NEXT: test_namespace::TheClass
-// CHECK-LIST-NEXT: test_namespace::TheClass::theMethod
-// CHECK-LIST-NEXT: x
-//
-// RUN: clang-check -ast-dump -ast-dump-filter test_namespace::TheClass::n "%s" -- 2>&1 | FileCheck -check-prefix CHECK-ATTR %s
-// CHECK-ATTR: test_namespace
-// CHECK-ATTR-NEXT: FieldDecl{{.*}}n
-// CHECK-ATTR-NEXT:   AlignedAttr
-// CHECK-ATTR-NEXT:     BinaryOperator
-//
-// RUN: clang-check -ast-dump -ast-dump-filter test_namespace::AfterNullNode "%s" -- 2>&1 | FileCheck -check-prefix CHECK-AFTER-NULL %s
-// CHECK-AFTER-NULL: class AfterNullNode
-
-namespace test_namespace {
-
-class TheClass {
-public:
-  int theMethod(int x) {
-    return x + x;
-  }
-  int n __attribute__((aligned(1+1)));
-};
-
-// Used to fail with -ast-dump-filter X
-template<template<typename T> class C> class Z {};
-
-// Check that traversal continues after the previous construct.
-class AfterNullNode {};
-
-}

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-autodetect-dir.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-autodetect-dir.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-autodetect-dir.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/abc/def
-// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/test.cpp\",\"file\":\"%t/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// RUN: clang-check -p "%t/abc/def" "%t/test.cpp" 2>&1|FileCheck %s
-// FIXME: Make the above easier.
-
-// CHECK: C++ requires
-invalid;
-
-// REQUIRES: shell
-// PR15590
-// XFAIL: win64

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-builtin-headers.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-builtin-headers.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-builtin-headers.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// Add a path that doesn't exist as argv[0] for the compile command line:
-// RUN: echo '[{"directory":".","command":"/random/tool -c %t/test.cpp","file":"%t/test.cpp"}]' | sed -e 's/\\/\//g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// RUN: clang-check -p "%t" "%t/test.cpp" 2>&1|FileCheck %s
-// FIXME: Make the above easier.
-
-#include <stddef.h>
-
-// CHECK: C++ requires
-invalid;

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-chdir.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-chdir.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-chdir.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-// Verifies that paths are resolved relatively to the directory specified in the
-// compilation database.
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: echo "[{\"directory\":\"%t\",\"command\":\"clang -c test.cpp -I.\",\"file\":\"%t/test.cpp\"}]" | sed -e 's/\\/\//g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// RUN: touch "%t/clang-check-test.h"
-// RUN: clang-check -p "%t" "%t/test.cpp" 2>&1|FileCheck %s
-// FIXME: Make the above easier.
-
-#include "clang-check-test.h"
-
-// CHECK: C++ requires
-invalid;

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-pwd.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-pwd.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/clang-check-pwd.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c %t/test.cpp\",\"file\":\"%t/test.cpp\"}]" | sed -e 's/\\/\\\\/g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// RUN: PWD="%t" clang-check -p "%t" "test.cpp" 2>&1|FileCheck %s
-// FIXME: Make the above easier.
-
-// CHECK: C++ requires
-invalid;
-
-// REQUIRES: shell
-// PR15590
-// XFAIL: win64

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/clang-check.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/clang-check.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/clang-check.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,9 +0,0 @@
-// RUN: rm -rf %t
-// RUN: mkdir %t
-// RUN: echo '[{"directory":".","command":"clang++ -c %t/test.cpp","file":"%t/test.cpp"}]' | sed -e 's/\\/\//g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// RUN: clang-check -p "%t" "%t/test.cpp" 2>&1|FileCheck %s
-// FIXME: Make the above easier.
-
-// CHECK: C++ requires
-invalid;

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/multi-jobs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/multi-jobs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/multi-jobs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-// RUN: clang-check "%s" -- -no-integrated-as -c 2>&1 | FileCheck %s
-
-// CHECK: C++ requires
-invalid;

Modified: trunk/contrib/llvm/tools/clang/test/Tooling/pch.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Tooling/pch.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Tooling/pch.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-// This is a regression test for handling of stat caches within the tooling
-// infrastructure. This test reproduces the problem under valgrind:
-
-// First, create a pch that we can later load. Loading the pch will insert
-// a stat cache into the FileManager:
-// RUN: %clang -x c++-header %S/Inputs/pch.h -o %t1
-
-// Use the generated pch and enforce a subsequent stat miss by using
-// the test file with an unrelated include as second translation unit.
-// Test for an non-empty file after clang-check is executed.
-// RUN: clang-check -ast-dump "%S/Inputs/pch.cpp" "%s" -- -include-pch %t1 -I "%S" -c >%t2 2>&1
-// REQUIRES: shell
-// RUN: test -s %t2
-
-#include "Inputs/pch-fail.h"

Modified: trunk/contrib/llvm/tools/clang/test/Unit/lit.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Unit/lit.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Unit/lit.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,91 +0,0 @@
-# -*- Python -*-
-
-# Configuration file for the 'lit' test runner.
-
-import os
-
-# name: The name of this test suite.
-config.name = 'Clang-Unit'
-
-# suffixes: A list of file extensions to treat as test files.
-config.suffixes = []
-
-# test_source_root: The root path where tests are located.
-# test_exec_root: The root path where tests should be run.
-clang_obj_root = getattr(config, 'clang_obj_root', None)
-if clang_obj_root is not None:
-    config.test_exec_root = os.path.join(clang_obj_root, 'unittests')
-    config.test_source_root = config.test_exec_root
-
-# testFormat: The test format to use to interpret tests.
-llvm_build_mode = getattr(config, 'llvm_build_mode', "Debug")
-config.test_format = lit.formats.GoogleTest(llvm_build_mode, 'Tests')
-
-# Propagate the temp directory. Windows requires this because it uses \Windows\
-# if none of these are present.
-if 'TMP' in os.environ:
-    config.environment['TMP'] = os.environ['TMP']
-if 'TEMP' in os.environ:
-    config.environment['TEMP'] = os.environ['TEMP']
-
-# Propagate path to symbolizer for ASan/MSan.
-for symbolizer in ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']:
-    if symbolizer in os.environ:
-        config.environment[symbolizer] = os.environ[symbolizer]
-
-###
-
-# Check that the object root is known.
-if config.test_exec_root is None:
-    # Otherwise, we haven't loaded the site specific configuration (the user is
-    # probably trying to run on a test file directly, and either the site
-    # configuration hasn't been created by the build system, or we are in an
-    # out-of-tree build situation).
-
-    # Check for 'clang_unit_site_config' user parameter, and use that if available.
-    site_cfg = lit.params.get('clang_unit_site_config', None)
-    if site_cfg and os.path.exists(site_cfg):
-        lit.load_config(config, site_cfg)
-        raise SystemExit
-
-    # Try to detect the situation where we are using an out-of-tree build by
-    # looking for 'llvm-config'.
-    #
-    # FIXME: I debated (i.e., wrote and threw away) adding logic to
-    # automagically generate the lit.site.cfg if we are in some kind of fresh
-    # build situation. This means knowing how to invoke the build system
-    # though, and I decided it was too much magic.
-
-    llvm_config = lit.util.which('llvm-config', config.environment['PATH'])
-    if not llvm_config:
-        lit.fatal('No site specific configuration available!')
-
-    # Get the source and object roots.
-    llvm_src_root = lit.util.capture(['llvm-config', '--src-root']).strip()
-    llvm_obj_root = lit.util.capture(['llvm-config', '--obj-root']).strip()
-    clang_src_root = os.path.join(llvm_src_root, "tools", "clang")
-    clang_obj_root = os.path.join(llvm_obj_root, "tools", "clang")
-
-    # Validate that we got a tree which points to here, using the standard
-    # tools/clang layout.
-    this_src_root = os.path.join(os.path.dirname(__file__),'..','..')
-    if os.path.realpath(clang_src_root) != os.path.realpath(this_src_root):
-        lit.fatal('No site specific configuration available!')
-
-    # Check that the site specific configuration exists.
-    site_cfg = os.path.join(clang_obj_root, 'test', 'Unit', 'lit.site.cfg')
-    if not os.path.exists(site_cfg):
-        lit.fatal('No site specific configuration available!')
-
-    # Okay, that worked. Notify the user of the automagic, and reconfigure.
-    lit.note('using out-of-tree build at %r' % clang_obj_root)
-    lit.load_config(config, site_cfg)
-    raise SystemExit
-
-# If necessary, point the dynamic loader at libLLVM.so.
-if config.enable_shared:
-    shlibpath = config.environment.get(config.shlibpath_var,'')
-    if shlibpath:
-        shlibpath = os.pathsep + shlibpath
-    shlibpath = config.shlibdir + shlibpath
-    config.environment[config.shlibpath_var] = shlibpath

Modified: trunk/contrib/llvm/tools/clang/test/Unit/lit.site.cfg.in
===================================================================
--- trunk/contrib/llvm/tools/clang/test/Unit/lit.site.cfg.in	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/Unit/lit.site.cfg.in	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-## Autogenerated by LLVM/Clang configuration.
-# Do not edit!
-config.llvm_src_root = "@LLVM_SOURCE_DIR@"
-config.llvm_obj_root = "@LLVM_BINARY_DIR@"
-config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
-config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
-config.llvm_build_mode = "@LLVM_BUILD_MODE@"
-config.clang_obj_root = "@CLANG_BINARY_DIR@"
-config.enable_shared = @ENABLE_SHARED@
-config.shlibdir = "@SHLIBDIR@"
-config.shlibpath_var = "@SHLIBPATH_VAR@"
-config.target_triple = "@TARGET_TRIPLE@"
-
-# Support substitution of the tools_dir, libs_dirs, and build_mode with user
-# parameters. This is used when we can't determine the tool dir at
-# configuration time.
-try:
-    config.llvm_tools_dir = config.llvm_tools_dir % lit.params
-    config.llvm_libs_dir = config.llvm_libs_dir % lit.params
-    config.llvm_build_mode = config.llvm_build_mode % lit.params
-except KeyError,e:
-    key, = e.args
-    lit.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
-
-# Let the main config do the real work.
-lit.load_config(config, "@CLANG_SOURCE_DIR@/test/Unit/lit.cfg")

Modified: trunk/contrib/llvm/tools/clang/test/cxx-sections.data
===================================================================
--- trunk/contrib/llvm/tools/clang/test/cxx-sections.data	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/cxx-sections.data	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1943 +0,0 @@
-1 [intro]
-    1.1 [intro.scope]
-    1.2 [intro.refs]
-    1.3 [intro.defs]
-        1.3.1 [defns.argument]
-        1.3.2 [defns.cond.supp]
-        1.3.3 [defns.diagnostic]
-        1.3.4 [defns.dynamic.type]
-        1.3.5 [defns.ill.formed]
-        1.3.6 [defns.impl.defined]
-        1.3.7 [defns.impl.limits]
-        1.3.8 [defns.locale.specific]
-        1.3.9 [defns.multibyte]
-        1.3.10 [defns.parameter]
-        1.3.11 [defns.signature]
-        1.3.12 [defns.static.type]
-        1.3.13 [defns.undefined]
-        1.3.14 [defns.unspecified]
-        1.3.15 [defns.well.formed]
-    1.4 [intro.compliance]
-    1.5 [intro.structure]
-    1.6 [syntax]
-    1.7 [intro.memory]
-    1.8 [intro.object]
-    1.9 [intro.execution]
-    1.10 [intro.multithread]
-    1.11 [intro.ack]
-2 [lex]
-    2.1 [lex.separate]
-    2.2 [lex.phases]
-    2.3 [lex.charset]
-    2.4 [lex.trigraph]
-    2.5 [lex.pptoken]
-    2.6 [lex.digraph]
-    2.7 [lex.token]
-    2.8 [lex.comment]
-    2.9 [lex.header]
-    2.10 [lex.ppnumber]
-    2.11 [lex.name]
-    2.12 [lex.key]
-    2.13 [lex.operators]
-    2.14 [lex.literal]
-        2.14.1 [lex.literal.kinds]
-        2.14.2 [lex.icon]
-        2.14.3 [lex.ccon]
-        2.14.4 [lex.fcon]
-        2.14.5 [lex.string]
-        2.14.6 [lex.bool]
-        2.14.7 [lex.nullptr]
-        2.14.8 [lex.ext]
-3 [basic]
-    3.1 [basic.def]
-    3.2 [basic.def.odr]
-    3.3 [basic.scope]
-        3.3.1 [basic.scope.declarative]
-        3.3.2 [basic.scope.pdecl]
-        3.3.3 [basic.scope.local]
-        3.3.4 [basic.scope.proto]
-        3.3.5 [basic.funscope]
-        3.3.6 [basic.scope.namespace]
-        3.3.7 [basic.scope.class]
-        3.3.8 [basic.scope.concept]
-        3.3.9 [basic.scope.req]
-        3.3.10 [basic.scope.enum]
-        3.3.11 [basic.scope.hiding]
-    3.4 [basic.lookup]
-        3.4.1 [basic.lookup.unqual]
-        3.4.2 [basic.lookup.argdep]
-        3.4.3 [basic.lookup.qual]
-            3.4.3.1 [class.qual]
-            3.4.3.2 [namespace.qual]
-            3.4.3.3 [concept.qual]
-        3.4.4 [basic.lookup.elab]
-        3.4.5 [basic.lookup.classref]
-        3.4.6 [basic.lookup.udir]
-    3.5 [basic.link]
-    3.6 [basic.start]
-        3.6.1 [basic.start.main]
-        3.6.2 [basic.start.init]
-        3.6.3 [basic.start.term]
-    3.7 [basic.stc]
-        3.7.1 [basic.stc.static]
-        3.7.2 [basic.stc.thread]
-        3.7.3 [basic.stc.auto]
-        3.7.4 [basic.stc.dynamic]
-            3.7.4.1 [basic.stc.dynamic.allocation]
-            3.7.4.2 [basic.stc.dynamic.deallocation]
-            3.7.4.3 [basic.stc.dynamic.safety]
-        3.7.5 [basic.stc.inherit]
-    3.8 [basic.life]
-    3.9 [basic.types]
-        3.9.1 [basic.fundamental]
-        3.9.2 [basic.compound]
-        3.9.3 [basic.type.qualifier]
-    3.10 [basic.lval]
-    3.11 [basic.align]
-4 [conv]
-    4.1 [conv.lval]
-    4.2 [conv.array]
-    4.3 [conv.func]
-    4.4 [conv.qual]
-    4.5 [conv.prom]
-    4.6 [conv.fpprom]
-    4.7 [conv.integral]
-    4.8 [conv.double]
-    4.9 [conv.fpint]
-    4.10 [conv.ptr]
-    4.11 [conv.mem]
-    4.12 [conv.bool]
-    4.13 [conv.rank]
-5 [expr]
-    5.1 [expr.prim]
-        5.1.1 [expr.prim.general]
-        5.1.2 [expr.prim.lambda]
-    5.2 [expr.post]
-        5.2.1 [expr.sub]
-        5.2.2 [expr.call]
-        5.2.3 [expr.type.conv]
-        5.2.4 [expr.pseudo]
-        5.2.5 [expr.ref]
-        5.2.6 [expr.post.incr]
-        5.2.7 [expr.dynamic.cast]
-        5.2.8 [expr.typeid]
-        5.2.9 [expr.static.cast]
-        5.2.10 [expr.reinterpret.cast]
-        5.2.11 [expr.const.cast]
-    5.3 [expr.unary]
-        5.3.1 [expr.unary.op]
-        5.3.2 [expr.pre.incr]
-        5.3.3 [expr.sizeof]
-        5.3.4 [expr.new]
-        5.3.5 [expr.delete]
-        5.3.6 [expr.alignof]
-    5.4 [expr.cast]
-    5.5 [expr.mptr.oper]
-    5.6 [expr.mul]
-    5.7 [expr.add]
-    5.8 [expr.shift]
-    5.9 [expr.rel]
-    5.10 [expr.eq]
-    5.11 [expr.bit.and]
-    5.12 [expr.xor]
-    5.13 [expr.or]
-    5.14 [expr.log.and]
-    5.15 [expr.log.or]
-    5.16 [expr.cond]
-    5.17 [expr.ass]
-    5.18 [expr.comma]
-    5.19 [expr.const]
-6 [stmt.stmt]
-    6.1 [stmt.label]
-    6.2 [stmt.expr]
-    6.3 [stmt.block]
-    6.4 [stmt.select]
-        6.4.1 [stmt.if]
-        6.4.2 [stmt.switch]
-    6.5 [stmt.iter]
-        6.5.1 [stmt.while]
-        6.5.2 [stmt.do]
-        6.5.3 [stmt.for]
-        6.5.4 [stmt.ranged]
-    6.6 [stmt.jump]
-        6.6.1 [stmt.break]
-        6.6.2 [stmt.cont]
-        6.6.3 [stmt.return]
-        6.6.4 [stmt.goto]
-    6.7 [stmt.dcl]
-    6.8 [stmt.ambig]
-    6.9 [stmt.late]
-7 [dcl.dcl]
-    7.1 [dcl.spec]
-        7.1.1 [dcl.stc]
-        7.1.2 [dcl.fct.spec]
-        7.1.3 [dcl.typedef]
-        7.1.4 [dcl.friend]
-        7.1.5 [dcl.constexpr]
-        7.1.6 [dcl.type]
-            7.1.6.1 [dcl.type.cv]
-            7.1.6.2 [dcl.type.simple]
-            7.1.6.3 [dcl.type.elab]
-            7.1.6.4 [dcl.spec.auto]
-    7.2 [dcl.enum]
-    7.3 [basic.namespace]
-        7.3.1 [namespace.def]
-            7.3.1.1 [namespace.unnamed]
-            7.3.1.2 [namespace.memdef]
-        7.3.2 [namespace.alias]
-        7.3.3 [namespace.udecl]
-        7.3.4 [namespace.udir]
-    7.4 [dcl.asm]
-    7.5 [dcl.link]
-    7.6 [dcl.attr]
-        7.6.1 [dcl.attr.grammar]
-        7.6.2 [dcl.align]
-        7.6.3 [dcl.attr.noreturn]
-        7.6.4 [dcl.attr.final]
-        7.6.5 [dcl.attr.depend]
-8 [dcl.decl]
-    8.1 [dcl.name]
-    8.2 [dcl.ambig.res]
-    8.3 [dcl.meaning]
-        8.3.1 [dcl.ptr]
-        8.3.2 [dcl.ref]
-        8.3.3 [dcl.mptr]
-        8.3.4 [dcl.array]
-        8.3.5 [dcl.fct]
-        8.3.6 [dcl.fct.default]
-    8.4 [dcl.fct.def]
-    8.5 [dcl.init]
-        8.5.1 [dcl.init.aggr]
-        8.5.2 [dcl.init.string]
-        8.5.3 [dcl.init.ref]
-        8.5.4 [dcl.init.list]
-9 [class]
-    9.1 [class.name]
-    9.2 [class.mem]
-    9.3 [class.mfct]
-        9.3.1 [class.mfct.non-static]
-        9.3.2 [class.this]
-    9.4 [class.static]
-        9.4.1 [class.static.mfct]
-        9.4.2 [class.static.data]
-    9.5 [class.union]
-    9.6 [class.bit]
-    9.7 [class.nest]
-    9.8 [class.local]
-    9.9 [class.nested.type]
-10 [class.derived]
-    10.1 [class.mi]
-    10.2 [class.member.lookup]
-    10.3 [class.virtual]
-    10.4 [class.abstract]
-11 [class.access]
-    11.1 [class.access.spec]
-    11.2 [class.access.base]
-    11.3 [class.access.dcl]
-    11.4 [class.friend]
-    11.5 [class.protected]
-    11.6 [class.access.virt]
-    11.7 [class.paths]
-    11.8 [class.access.nest]
-12 [special]
-    12.1 [class.ctor]
-    12.2 [class.temporary]
-    12.3 [class.conv]
-        12.3.1 [class.conv.ctor]
-        12.3.2 [class.conv.fct]
-    12.4 [class.dtor]
-    12.5 [class.free]
-    12.6 [class.init]
-        12.6.1 [class.expl.init]
-        12.6.2 [class.base.init]
-    12.7 [class.cdtor]
-    12.8 [class.copy]
-    12.9 [class.inhctor]
-13 [over]
-    13.1 [over.load]
-    13.2 [over.dcl]
-    13.3 [over.match]
-        13.3.1 [over.match.funcs]
-            13.3.1.1 [over.match.call]
-                13.3.1.1.1 [over.call.func]
-                13.3.1.1.2 [over.call.object]
-            13.3.1.2 [over.match.oper]
-            13.3.1.3 [over.match.ctor]
-            13.3.1.4 [over.match.copy]
-            13.3.1.5 [over.match.conv]
-            13.3.1.6 [over.match.ref]
-            13.3.1.7 [over.match.list]
-        13.3.2 [over.match.viable]
-        13.3.3 [over.match.best]
-            13.3.3.1 [over.best.ics]
-                13.3.3.1.1 [over.ics.scs]
-                13.3.3.1.2 [over.ics.user]
-                13.3.3.1.3 [over.ics.ellipsis]
-                13.3.3.1.4 [over.ics.ref]
-                13.3.3.1.5 [over.ics.list]
-            13.3.3.2 [over.ics.rank]
-    13.4 [over.over]
-    13.5 [over.oper]
-        13.5.1 [over.unary]
-        13.5.2 [over.binary]
-        13.5.3 [over.ass]
-        13.5.4 [over.call]
-        13.5.5 [over.sub]
-        13.5.6 [over.ref]
-        13.5.7 [over.inc]
-        13.5.8 [over.literal]
-    13.6 [over.built]
-14 [temp]
-    14.1 [temp.export]
-    14.2 [temp.param]
-    14.3 [temp.names]
-    14.4 [temp.arg]
-        14.4.1 [temp.arg.type]
-        14.4.2 [temp.arg.nontype]
-        14.4.3 [temp.arg.template]
-    14.5 [temp.type]
-    14.6 [temp.decls]
-        14.6.1 [temp.class]
-            14.6.1.1 [temp.mem.func]
-            14.6.1.2 [temp.mem.class]
-            14.6.1.3 [temp.static]
-        14.6.2 [temp.mem]
-        14.6.3 [temp.variadic]
-        14.6.4 [temp.friend]
-        14.6.5 [temp.class.spec]
-            14.6.5.1 [temp.class.spec.match]
-            14.6.5.2 [temp.class.order]
-            14.6.5.3 [temp.class.spec.mfunc]
-        14.6.6 [temp.fct]
-            14.6.6.1 [temp.over.link]
-            14.6.6.2 [temp.func.order]
-        14.6.7 [temp.alias]
-        14.6.8 [temp.concept.map]
-    14.7 [temp.res]
-        14.7.1 [temp.local]
-        14.7.2 [temp.dep]
-            14.7.2.1 [temp.dep.type]
-            14.7.2.2 [temp.dep.expr]
-            14.7.2.3 [temp.dep.constexpr]
-            14.7.2.4 [temp.dep.temp]
-        14.7.3 [temp.nondep]
-        14.7.4 [temp.dep.res]
-            14.7.4.1 [temp.point]
-            14.7.4.2 [temp.dep.candidate]
-        14.7.5 [temp.inject]
-    14.8 [temp.spec]
-        14.8.1 [temp.inst]
-        14.8.2 [temp.explicit]
-        14.8.3 [temp.expl.spec]
-    14.9 [temp.fct.spec]
-        14.9.1 [temp.arg.explicit]
-        14.9.2 [temp.deduct]
-            14.9.2.1 [temp.deduct.call]
-            14.9.2.2 [temp.deduct.funcaddr]
-            14.9.2.3 [temp.deduct.conv]
-            14.9.2.4 [temp.deduct.partial]
-            14.9.2.5 [temp.deduct.type]
-        14.9.3 [temp.over]
-    14.10 [concept]
-        14.10.1 [concept.def]
-            14.10.1.1 [concept.fct]
-            14.10.1.2 [concept.assoc]
-            14.10.1.3 [concept.req]
-            14.10.1.4 [concept.axiom]
-        14.10.2 [concept.map]
-            14.10.2.1 [concept.map.fct]
-            14.10.2.2 [concept.map.assoc]
-        14.10.3 [concept.refine]
-            14.10.3.1 [concept.member.lookup]
-            14.10.3.2 [concept.refine.maps]
-        14.10.4 [concept.support]
-    14.11 [temp.constrained]
-        14.11.1 [temp.req]
-            14.11.1.1 [temp.req.sat]
-            14.11.1.2 [temp.req.impl]
-        14.11.2 [temp.archetype]
-            14.11.2.1 [temp.archetype.assemble]
-        14.11.3 [temp.constrained.set]
-        14.11.4 [temp.constrained.inst]
-15 [except]
-    15.1 [except.throw]
-    15.2 [except.ctor]
-    15.3 [except.handle]
-    15.4 [except.spec]
-    15.5 [except.special]
-        15.5.1 [except.terminate]
-        15.5.2 [except.unexpected]
-        15.5.3 [except.uncaught]
-16 [cpp]
-    16.1 [cpp.cond]
-    16.2 [cpp.include]
-    16.3 [cpp.replace]
-        16.3.1 [cpp.subst]
-        16.3.2 [cpp.stringize]
-        16.3.3 [cpp.concat]
-        16.3.4 [cpp.rescan]
-        16.3.5 [cpp.scope]
-    16.4 [cpp.line]
-    16.5 [cpp.error]
-    16.6 [cpp.pragma]
-    16.7 [cpp.null]
-    16.8 [cpp.predefined]
-    16.9 [cpp.pragma.op]
-17 [library]
-    17.1 [library.general]
-    17.2 [library.c]
-    17.3 [definitions]
-        17.3.1 [defns.arbitrary.stream]
-        17.3.2 [defns.blocked]
-        17.3.3 [defns.character]
-        17.3.4 [defns.character.container]
-        17.3.5 [defns.comparison]
-        17.3.6 [defns.component]
-        17.3.7 [defns.deadlock]
-        17.3.8 [defns.default.behavior]
-        17.3.9 [defns.handler]
-        17.3.10 [defns.iostream.templates]
-        17.3.11 [defns.modifier]
-        17.3.12 [defns.move.assign]
-        17.3.13 [defns.move.assign.op]
-        17.3.14 [defns.move.ctor]
-        17.3.15 [defns.obj.state]
-        17.3.16 [defns.ntcts]
-        17.3.17 [defns.observer]
-        17.3.18 [defns.replacement]
-        17.3.19 [defns.repositional.stream]
-        17.3.20 [defns.required.behavior]
-        17.3.21 [defns.reserved.function]
-        17.3.22 [defns.stable]
-        17.3.23 [defns.traits]
-    17.4 [defns.additional]
-    17.5 [description]
-        17.5.1 [structure]
-            17.5.1.1 [structure.elements]
-            17.5.1.2 [structure.summary]
-            17.5.1.3 [structure.requirements]
-            17.5.1.4 [structure.specifications]
-            17.5.1.5 [structure.see.also]
-        17.5.2 [conventions]
-            17.5.2.1 [type.descriptions]
-                17.5.2.1.1 [type.descriptions.general]
-                17.5.2.1.2 [enumerated.types]
-                17.5.2.1.3 [bitmask.types]
-                17.5.2.1.4 [character.seq]
-                    17.5.2.1.4.1 [byte.strings]
-                    17.5.2.1.4.2 [multibyte.strings]
-                    17.5.2.1.4.3 [char16_t.seq]
-                    17.5.2.1.4.4 [char32_t.seq]
-                    17.5.2.1.4.5 [wide.characters]
-            17.5.2.2 [functions.within.classes]
-            17.5.2.3 [objects.within.classes]
-    17.6 [requirements]
-        17.6.1 [organization]
-            17.6.1.1 [contents]
-            17.6.1.2 [headers]
-            17.6.1.3 [compliance]
-        17.6.2 [using]
-            17.6.2.1 [using.overview]
-            17.6.2.2 [using.headers]
-            17.6.2.3 [using.linkage]
-        17.6.3 [constraints]
-            17.6.3.1 [constraints.overview]
-            17.6.3.2 [namespace.constraints]
-                17.6.3.2.1 [namespace.std]
-                17.6.3.2.2 [namespace.posix]
-            17.6.3.3 [reserved.names]
-                17.6.3.3.1 [macro.names]
-                17.6.3.3.2 [global.names]
-                17.6.3.3.3 [extern.names]
-                17.6.3.3.4 [extern.types]
-                17.6.3.3.5 [usrlit.suffix]
-            17.6.3.4 [alt.headers]
-            17.6.3.5 [derived.classes]
-            17.6.3.6 [replacement.functions]
-            17.6.3.7 [handler.functions]
-            17.6.3.8 [res.on.functions]
-            17.6.3.9 [res.on.arguments]
-            17.6.3.10 [res.on.objects]
-            17.6.3.11 [res.on.required]
-        17.6.4 [conforming]
-            17.6.4.1 [conforming.overview]
-            17.6.4.2 [res.on.headers]
-            17.6.4.3 [res.on.macro.definitions]
-            17.6.4.4 [global.functions]
-            17.6.4.5 [member.functions]
-            17.6.4.6 [reentrancy]
-            17.6.4.7 [res.on.data.races]
-            17.6.4.8 [protection.within.classes]
-            17.6.4.9 [derivation]
-            17.6.4.10 [res.on.exception.handling]
-            17.6.4.11 [res.on.pointer.storage]
-            17.6.4.12 [value.error.codes]
-18 [language.support]
-    18.1 [support.general]
-    18.2 [support.types]
-    18.3 [support.limits]
-        18.3.1 [limits]
-            18.3.1.1 [numeric.limits]
-            18.3.1.2 [numeric.limits.members]
-            18.3.1.3 [round.style]
-            18.3.1.4 [denorm.style]
-            18.3.1.5 [numeric.special]
-        18.3.2 [c.limits]
-    18.4 [cstdint]
-        18.4.1 [cstdint.syn]
-        18.4.2 [stdinth]
-    18.5 [support.start.term]
-    18.6 [support.dynamic]
-        18.6.1 [new.delete]
-            18.6.1.1 [new.delete.single]
-            18.6.1.2 [new.delete.array]
-            18.6.1.3 [new.delete.placement]
-            18.6.1.4 [new.delete.dataraces]
-        18.6.2 [alloc.errors]
-            18.6.2.1 [bad.alloc]
-            18.6.2.2 [new.handler]
-            18.6.2.3 [set.new.handler]
-    18.7 [support.rtti]
-        18.7.1 [type.info]
-        18.7.2 [type.index]
-            18.7.2.1 [type.index.overview]
-            18.7.2.2 [type.index.members]
-            18.7.2.3 [type.index.templ]
-        18.7.3 [bad.cast]
-        18.7.4 [bad.typeid]
-    18.8 [support.exception]
-        18.8.1 [exception]
-        18.8.2 [exception.unexpected]
-            18.8.2.1 [bad.exception]
-            18.8.2.2 [unexpected.handler]
-            18.8.2.3 [set.unexpected]
-            18.8.2.4 [unexpected]
-        18.8.3 [exception.terminate]
-            18.8.3.1 [terminate.handler]
-            18.8.3.2 [set.terminate]
-            18.8.3.3 [terminate]
-        18.8.4 [uncaught]
-        18.8.5 [propagation]
-        18.8.6 [except.nested]
-    18.9 [support.initlist]
-        18.9.1 [support.initlist.cons]
-        18.9.2 [support.initlist.access]
-        18.9.3 [support.initlist.concept]
-    18.10 [support.runtime]
-19 [diagnostics]
-    19.1 [diagnostics.general]
-    19.2 [std.exceptions]
-        19.2.1 [logic.error]
-        19.2.2 [domain.error]
-        19.2.3 [invalid.argument]
-        19.2.4 [length.error]
-        19.2.5 [out.of.range]
-        19.2.6 [runtime.error]
-        19.2.7 [range.error]
-        19.2.8 [overflow.error]
-        19.2.9 [underflow.error]
-    19.3 [assertions]
-    19.4 [errno]
-    19.5 [syserr]
-        19.5.1 [syserr.errcat]
-            19.5.1.1 [syserr.errcat.overview]
-            19.5.1.2 [syserr.errcat.virtuals]
-            19.5.1.3 [syserr.errcat.nonvirtuals]
-            19.5.1.4 [syserr.errcat.derived]
-            19.5.1.5 [syserr.errcat.objects]
-        19.5.2 [syserr.errcode]
-            19.5.2.1 [syserr.errcodeenum]
-            19.5.2.2 [syserr.errcode.overview]
-            19.5.2.3 [syserr.errcode.constructors]
-            19.5.2.4 [syserr.errcode.modifiers]
-            19.5.2.5 [syserr.errcode.observers]
-            19.5.2.6 [syserr.errcode.nonmembers]
-        19.5.3 [syserr.errcondition]
-            19.5.3.1 [syserr.errcondenum]
-            19.5.3.2 [syserr.errcondition.overview]
-            19.5.3.3 [syserr.errcondition.constructors]
-            19.5.3.4 [syserr.errcondition.modifiers]
-            19.5.3.5 [syserr.errcondition.observers]
-            19.5.3.6 [syserr.errcondition.nonmembers]
-        19.5.4 [syserr.compare]
-        19.5.5 [syserr.syserr]
-            19.5.5.1 [syserr.syserr.overview]
-            19.5.5.2 [syserr.syserr.members]
-20 [utilities]
-    20.1 [utilities.general]
-    20.2 [utility.concepts]
-        20.2.1 [concept.transform]
-        20.2.2 [concept.true]
-        20.2.3 [concept.classify]
-        20.2.4 [concept.operator]
-        20.2.5 [concept.predicate]
-        20.2.6 [concept.comparison]
-        20.2.7 [concept.construct]
-        20.2.8 [concept.destruct]
-        20.2.9 [concept.copymove]
-        20.2.10 [concept.memory]
-        20.2.11 [concept.regular]
-        20.2.12 [concept.convertible]
-        20.2.13 [concept.arithmetic]
-    20.3 [utility]
-        20.3.1 [operators]
-        20.3.2 [forward]
-        20.3.3 [pairs]
-        20.3.4 [pair.astuple]
-        20.3.5 [pair.concepts]
-        20.3.6 [template.bitset]
-            20.3.6.1 [bitset.cons]
-            20.3.6.2 [bitset.members]
-            20.3.6.3 [bitset.operators]
-    20.4 [ratio]
-        20.4.1 [ratio.ratio]
-        20.4.2 [ratio.arithmetic]
-        20.4.3 [ratio.comparison]
-        20.4.4 [ratio.si]
-    20.5 [tuple]
-        20.5.1 [tuple.general]
-        20.5.2 [tuple.tuple]
-            20.5.2.1 [tuple.cnstr]
-            20.5.2.2 [tuple.creation]
-            20.5.2.3 [tuple.helper]
-            20.5.2.4 [tuple.elem]
-            20.5.2.5 [tuple.rel]
-            20.5.2.6 [tuple.swap]
-            20.5.2.7 [tuple.special]
-            20.5.2.8 [tuple.concepts]
-    20.6 [meta]
-        20.6.1 [meta.rqmts]
-        20.6.2 [meta.type.synop]
-        20.6.3 [meta.help]
-        20.6.4 [meta.unary]
-            20.6.4.1 [meta.unary.cat]
-            20.6.4.2 [meta.unary.comp]
-            20.6.4.3 [meta.unary.prop]
-        20.6.5 [meta.rel]
-        20.6.6 [meta.trans]
-            20.6.6.1 [meta.trans.cv]
-            20.6.6.2 [meta.trans.ref]
-            20.6.6.3 [meta.trans.sign]
-            20.6.6.4 [meta.trans.arr]
-            20.6.6.5 [meta.trans.ptr]
-        20.6.7 [meta.trans.other]
-    20.7 [function.objects]
-        20.7.1 [func.def]
-        20.7.2 [func.require]
-        20.7.3 [base]
-        20.7.4 [func.ret]
-        20.7.5 [refwrap]
-            20.7.5.1 [refwrap.const]
-            20.7.5.2 [refwrap.assign]
-            20.7.5.3 [refwrap.access]
-            20.7.5.4 [refwrap.invoke]
-            20.7.5.5 [refwrap.helpers]
-        20.7.6 [identity.operation]
-        20.7.7 [arithmetic.operations]
-        20.7.8 [comparisons]
-        20.7.9 [logical.operations]
-        20.7.10 [bitwise.operations]
-        20.7.11 [negators]
-        20.7.12 [bind]
-            20.7.12.1 [func.bind]
-                20.7.12.1.1 [func.bind.isbind]
-                20.7.12.1.2 [func.bind.isplace]
-                20.7.12.1.3 [func.bind.bind]
-                20.7.12.1.4 [func.bind.place]
-        20.7.13 [function.pointer.adaptors]
-        20.7.14 [member.pointer.adaptors]
-        20.7.15 [func.memfn]
-        20.7.16 [func.wrap]
-            20.7.16.1 [func.wrap.badcall]
-                20.7.16.1.1 [func.wrap.badcall.const]
-            20.7.16.2 [func.wrap.func]
-                20.7.16.2.1 [func.wrap.func.con]
-                20.7.16.2.2 [func.wrap.func.mod]
-                20.7.16.2.3 [func.wrap.func.cap]
-                20.7.16.2.4 [func.wrap.func.inv]
-                20.7.16.2.5 [func.wrap.func.targ]
-                20.7.16.2.6 [func.wrap.func.nullptr]
-                20.7.16.2.7 [func.wrap.func.alg]
-        20.7.17 [unord.hash]
-    20.8 [memory]
-        20.8.1 [allocator.tag]
-        20.8.2 [allocator]
-            20.8.2.1 [allocator.general]
-            20.8.2.2 [allocator.concepts]
-            20.8.2.3 [allocator.concepts.legacy]
-            20.8.2.4 [allocator.concepts.members]
-        20.8.3 [allocator.element.concepts]
-        20.8.4 [default.allocator]
-            20.8.4.1 [allocator.members]
-            20.8.4.2 [allocator.globals]
-        20.8.5 [allocator.adaptor]
-            20.8.5.1 [allocator.adaptor.base]
-            20.8.5.2 [allocator.adaptor.cntr]
-            20.8.5.3 [allocator.adaptor2.cntr]
-            20.8.5.4 [allocator.adaptor.members]
-            20.8.5.5 [allocator.adaptor.globals]
-        20.8.6 [storage.iterator]
-        20.8.7 [temporary.buffer]
-        20.8.8 [specialized.algorithms]
-            20.8.8.1 [object.addressof]
-            20.8.8.2 [uninitialized.copy]
-            20.8.8.3 [uninitialized.fill]
-            20.8.8.4 [uninitialized.fill.n]
-        20.8.9 [unique.ptr]
-            20.8.9.1 [unique.ptr.dltr]
-                20.8.9.1.1 [unique.ptr.dltr.dflt]
-                20.8.9.1.2 [unique.ptr.dltr.dflt1]
-            20.8.9.2 [unique.ptr.single]
-                20.8.9.2.1 [unique.ptr.single.ctor]
-                20.8.9.2.2 [unique.ptr.single.dtor]
-                20.8.9.2.3 [unique.ptr.single.asgn]
-                20.8.9.2.4 [unique.ptr.single.observers]
-                20.8.9.2.5 [unique.ptr.single.modifiers]
-            20.8.9.3 [unique.ptr.runtime]
-                20.8.9.3.1 [unique.ptr.runtime.ctor]
-                20.8.9.3.2 [unique.ptr.runtime.observers]
-                20.8.9.3.3 [unique.ptr.runtime.modifiers]
-            20.8.9.4 [unique.ptr.special]
-        20.8.10 [util.smartptr]
-            20.8.10.1 [util.smartptr.weakptr]
-            20.8.10.2 [util.smartptr.shared]
-                20.8.10.2.1 [util.smartptr.shared.const]
-                20.8.10.2.2 [util.smartptr.shared.dest]
-                20.8.10.2.3 [util.smartptr.shared.assign]
-                20.8.10.2.4 [util.smartptr.shared.mod]
-                20.8.10.2.5 [util.smartptr.shared.obs]
-                20.8.10.2.6 [util.smartptr.shared.create]
-                20.8.10.2.7 [util.smartptr.shared.cmp]
-                20.8.10.2.8 [util.smartptr.shared.io]
-                20.8.10.2.9 [util.smartptr.shared.spec]
-                20.8.10.2.10 [util.smartptr.shared.cast]
-                20.8.10.2.11 [util.smartptr.getdeleter]
-            20.8.10.3 [util.smartptr.weak]
-                20.8.10.3.1 [util.smartptr.weak.const]
-                20.8.10.3.2 [util.smartptr.weak.dest]
-                20.8.10.3.3 [util.smartptr.weak.assign]
-                20.8.10.3.4 [util.smartptr.weak.mod]
-                20.8.10.3.5 [util.smartptr.weak.obs]
-                20.8.10.3.6 [util.smartptr.weak.spec]
-            20.8.10.4 [util.smartptr.ownerless]
-            20.8.10.5 [util.smartptr.enab]
-            20.8.10.6 [util.smartptr.shared.atomic]
-            20.8.10.7 [util.dynamic.safety]
-        20.8.11 [ptr.align]
-        20.8.12 [c.malloc]
-    20.9 [time]
-        20.9.1 [time.clock.req]
-        20.9.2 [time.traits]
-            20.9.2.1 [time.traits.is_fp]
-            20.9.2.2 [time.traits.duration_values]
-            20.9.2.3 [time.traits.specializations]
-        20.9.3 [time.duration]
-            20.9.3.1 [time.duration.cons]
-            20.9.3.2 [time.duration.observer]
-            20.9.3.3 [time.duration.arithmetic]
-            20.9.3.4 [time.duration.special]
-            20.9.3.5 [time.duration.nonmember]
-            20.9.3.6 [time.duration.comparisons]
-            20.9.3.7 [time.duration.cast]
-        20.9.4 [time.point]
-            20.9.4.1 [time.point.cons]
-            20.9.4.2 [time.point.observer]
-            20.9.4.3 [time.point.arithmetic]
-            20.9.4.4 [time.point.special]
-            20.9.4.5 [time.point.nonmember]
-            20.9.4.6 [time.point.comparisons]
-            20.9.4.7 [time.point.cast]
-        20.9.5 [time.clock]
-            20.9.5.1 [time.clock.system]
-            20.9.5.2 [time.clock.monotonic]
-            20.9.5.3 [time.clock.hires]
-    20.10 [date.time]
-21 [strings]
-    21.1 [strings.general]
-    21.2 [char.traits]
-        21.2.1 [char.traits.require]
-        21.2.2 [char.traits.typedefs]
-        21.2.3 [char.traits.specializations]
-            21.2.3.1 [char.traits.specializations.char]
-            21.2.3.2 [char.traits.specializations.char16_t]
-            21.2.3.3 [char.traits.specializations.char32_t]
-            21.2.3.4 [char.traits.specializations.wchar.t]
-    21.3 [string.classes]
-    21.4 [basic.string]
-        21.4.1 [string.require]
-        21.4.2 [string.cons]
-        21.4.3 [string.iterators]
-        21.4.4 [string.capacity]
-        21.4.5 [string.access]
-        21.4.6 [string.modifiers]
-            21.4.6.1 [string::op+=]
-            21.4.6.2 [string::append]
-            21.4.6.3 [string::assign]
-            21.4.6.4 [string::insert]
-            21.4.6.5 [string::erase]
-            21.4.6.6 [string::replace]
-            21.4.6.7 [string::copy]
-            21.4.6.8 [string::swap]
-        21.4.7 [string.ops]
-            21.4.7.1 [string.accessors]
-            21.4.7.2 [string::find]
-            21.4.7.3 [string::rfind]
-            21.4.7.4 [string::find.first.of]
-            21.4.7.5 [string::find.last.of]
-            21.4.7.6 [string::find.first.not.of]
-            21.4.7.7 [string::find.last.not.of]
-            21.4.7.8 [string::substr]
-            21.4.7.9 [string::compare]
-        21.4.8 [string.nonmembers]
-            21.4.8.1 [string::op+]
-            21.4.8.2 [string::operator==]
-            21.4.8.3 [string::op!=]
-            21.4.8.4 [string::op<]
-            21.4.8.5 [string::op>]
-            21.4.8.6 [string::op<=]
-            21.4.8.7 [string::op>=]
-            21.4.8.8 [string.special]
-            21.4.8.9 [string.io]
-    21.5 [string.conversions]
-    21.6 [c.strings]
-22 [localization]
-    22.1 [localization.general]
-    22.2 [locale.syn]
-    22.3 [locales]
-        22.3.1 [locale]
-            22.3.1.1 [locale.types]
-                22.3.1.1.1 [locale.category]
-                22.3.1.1.2 [locale.facet]
-                22.3.1.1.3 [locale.id]
-            22.3.1.2 [locale.cons]
-            22.3.1.3 [locale.members]
-            22.3.1.4 [locale.operators]
-            22.3.1.5 [locale.statics]
-        22.3.2 [locale.global.templates]
-        22.3.3 [locale.convenience]
-            22.3.3.1 [classification]
-            22.3.3.2 [conversions]
-                22.3.3.2.1 [conversions.character]
-                22.3.3.2.2 [conversions.string]
-                22.3.3.2.3 [conversions.buffer]
-    22.4 [locale.categories]
-        22.4.1 [category.ctype]
-            22.4.1.1 [locale.ctype]
-                22.4.1.1.1 [locale.ctype.members]
-                22.4.1.1.2 [locale.ctype.virtuals]
-            22.4.1.2 [locale.ctype.byname]
-            22.4.1.3 [facet.ctype.special]
-                22.4.1.3.1 [facet.ctype.char.dtor]
-                22.4.1.3.2 [facet.ctype.char.members]
-                22.4.1.3.3 [facet.ctype.char.statics]
-                22.4.1.3.4 [facet.ctype.char.virtuals]
-            22.4.1.4 [locale.codecvt]
-                22.4.1.4.1 [locale.codecvt.members]
-                22.4.1.4.2 [locale.codecvt.virtuals]
-            22.4.1.5 [locale.codecvt.byname]
-        22.4.2 [category.numeric]
-            22.4.2.1 [locale.num.get]
-                22.4.2.1.1 [facet.num.get.members]
-                22.4.2.1.2 [facet.num.get.virtuals]
-            22.4.2.2 [locale.nm.put]
-                22.4.2.2.1 [facet.num.put.members]
-                22.4.2.2.2 [facet.num.put.virtuals]
-        22.4.3 [facet.numpunct]
-            22.4.3.1 [locale.numpunct]
-                22.4.3.1.1 [facet.numpunct.members]
-                22.4.3.1.2 [facet.numpunct.virtuals]
-            22.4.3.2 [locale.numpunct.byname]
-        22.4.4 [category.collate]
-            22.4.4.1 [locale.collate]
-                22.4.4.1.1 [locale.collate.members]
-                22.4.4.1.2 [locale.collate.virtuals]
-            22.4.4.2 [locale.collate.byname]
-        22.4.5 [category.time]
-            22.4.5.1 [locale.time.get]
-                22.4.5.1.1 [locale.time.get.members]
-                22.4.5.1.2 [locale.time.get.virtuals]
-            22.4.5.2 [locale.time.get.byname]
-            22.4.5.3 [locale.time.put]
-                22.4.5.3.1 [locale.time.put.members]
-                22.4.5.3.2 [locale.time.put.virtuals]
-            22.4.5.4 [locale.time.put.byname]
-        22.4.6 [category.monetary]
-            22.4.6.1 [locale.money.get]
-                22.4.6.1.1 [locale.money.get.members]
-                22.4.6.1.2 [locale.money.get.virtuals]
-            22.4.6.2 [locale.money.put]
-                22.4.6.2.1 [locale.money.put.members]
-                22.4.6.2.2 [locale.money.put.virtuals]
-            22.4.6.3 [locale.moneypunct]
-                22.4.6.3.1 [locale.moneypunct.members]
-                22.4.6.3.2 [locale.moneypunct.virtuals]
-            22.4.6.4 [locale.moneypunct.byname]
-        22.4.7 [category.messages]
-            22.4.7.1 [locale.messages]
-                22.4.7.1.1 [locale.messages.members]
-                22.4.7.1.2 [locale.messages.virtuals]
-            22.4.7.2 [locale.messages.byname]
-        22.4.8 [facets.examples]
-    22.5 [locale.stdcvt]
-    22.6 [c.locales]
-23 [containers]
-    23.1 [containers.general]
-    23.2 [container.requirements]
-        23.2.1 [container.requirements.general]
-        23.2.2 [container.requirements.dataraces]
-        23.2.3 [sequence.reqmts]
-        23.2.4 [associative.reqmts]
-            23.2.4.1 [associative.reqmts.except]
-        23.2.5 [unord.req]
-            23.2.5.1 [unord.req.except]
-        23.2.6 [container.concepts]
-            23.2.6.1 [container.concepts.free]
-            23.2.6.2 [container.concepts.member]
-            23.2.6.3 [container.concepts.maps]
-    23.3 [sequences]
-        23.3.1 [array]
-            23.3.1.1 [array.cons]
-            23.3.1.2 [array.special]
-            23.3.1.3 [array.size]
-            23.3.1.4 [array.data]
-            23.3.1.5 [array.fill]
-            23.3.1.6 [array.zero]
-            23.3.1.7 [array.tuple]
-        23.3.2 [deque]
-            23.3.2.1 [deque.cons]
-            23.3.2.2 [deque.capacity]
-            23.3.2.3 [deque.modifiers]
-            23.3.2.4 [deque.special]
-        23.3.3 [forwardlist]
-            23.3.3.1 [forwardlist.cons]
-            23.3.3.2 [forwardlist.iter]
-            23.3.3.3 [forwardlist.access]
-            23.3.3.4 [forwardlist.modifiers]
-            23.3.3.5 [forwardlist.ops]
-            23.3.3.6 [forwardlist.spec]
-        23.3.4 [list]
-            23.3.4.1 [list.cons]
-            23.3.4.2 [list.capacity]
-            23.3.4.3 [list.modifiers]
-            23.3.4.4 [list.ops]
-            23.3.4.5 [list.special]
-        23.3.5 [container.adaptors]
-            23.3.5.1 [queue]
-                23.3.5.1.1 [queue.defn]
-                23.3.5.1.2 [queue.ops]
-                23.3.5.1.3 [queue.special]
-            23.3.5.2 [priority.queue]
-                23.3.5.2.1 [priqueue.cons]
-                23.3.5.2.2 [priqueue.members]
-                23.3.5.2.3 [priqueue.special]
-            23.3.5.3 [stack]
-                23.3.5.3.1 [stack.defn]
-                23.3.5.3.2 [stack.ops]
-                23.3.5.3.3 [stack.special]
-        23.3.6 [vector]
-            23.3.6.1 [vector.cons]
-            23.3.6.2 [vector.capacity]
-            23.3.6.3 [vector.data]
-            23.3.6.4 [vector.modifiers]
-            23.3.6.5 [vector.special]
-        23.3.7 [vector.bool]
-    23.4 [associative]
-        23.4.1 [map]
-            23.4.1.1 [map.cons]
-            23.4.1.2 [map.access]
-            23.4.1.3 [map.modifiers]
-            23.4.1.4 [map.ops]
-            23.4.1.5 [map.special]
-        23.4.2 [multimap]
-            23.4.2.1 [multimap.cons]
-            23.4.2.2 [multimap.modifiers]
-            23.4.2.3 [multimap.ops]
-            23.4.2.4 [multimap.special]
-        23.4.3 [set]
-            23.4.3.1 [set.cons]
-            23.4.3.2 [set.special]
-        23.4.4 [multiset]
-            23.4.4.1 [multiset.cons]
-            23.4.4.2 [multiset.special]
-    23.5 [unord]
-        23.5.1 [unord.map]
-            23.5.1.1 [unord.map.cnstr]
-            23.5.1.2 [unord.map.elem]
-            23.5.1.3 [unord.map.swap]
-        23.5.2 [unord.multimap]
-            23.5.2.1 [unord.multimap.cnstr]
-            23.5.2.2 [unord.multimap.swap]
-        23.5.3 [unord.set]
-            23.5.3.1 [unord.set.cnstr]
-            23.5.3.2 [unord.set.swap]
-        23.5.4 [unord.multiset]
-            23.5.4.1 [unord.multiset.cnstr]
-            23.5.4.2 [unord.multiset.swap]
-24 [iterators]
-    24.1 [iterators.general]
-    24.2 [iterator.concepts]
-        24.2.1 [iterator.iterators]
-        24.2.2 [input.iterators]
-        24.2.3 [output.iterators]
-        24.2.4 [forward.iterators]
-        24.2.5 [bidirectional.iterators]
-        24.2.6 [random.access.iterators]
-        24.2.7 [shuffle.iterators]
-        24.2.8 [iterator.concepts.range]
-    24.3 [iterator.syn]
-    24.4 [iterator.operations]
-    24.5 [predef.iterators]
-        24.5.1 [reverse.iterators]
-            24.5.1.1 [reverse.iterator]
-            24.5.1.2 [reverse.iter.ops]
-                24.5.1.2.1 [reverse.iter.cons]
-                24.5.1.2.2 [reverse.iter.op=]
-                24.5.1.2.3 [reverse.iter.conv]
-                24.5.1.2.4 [reverse.iter.op.star]
-                24.5.1.2.5 [reverse.iter.opref]
-                24.5.1.2.6 [reverse.iter.op++]
-                24.5.1.2.7 [reverse.iter.op--]
-                24.5.1.2.8 [reverse.iter.op+]
-                24.5.1.2.9 [reverse.iter.op+=]
-                24.5.1.2.10 [reverse.iter.op-]
-                24.5.1.2.11 [reverse.iter.op-=]
-                24.5.1.2.12 [reverse.iter.opindex]
-                24.5.1.2.13 [reverse.iter.op==]
-                24.5.1.2.14 [reverse.iter.op<]
-                24.5.1.2.15 [reverse.iter.op!=]
-                24.5.1.2.16 [reverse.iter.op>]
-                24.5.1.2.17 [reverse.iter.op>=]
-                24.5.1.2.18 [reverse.iter.op<=]
-                24.5.1.2.19 [reverse.iter.opdiff]
-                24.5.1.2.20 [reverse.iter.opsum]
-            24.5.1.3 [reverse.iter.maps]
-        24.5.2 [move.iterators]
-            24.5.2.1 [move.iterator]
-            24.5.2.2 [move.iter.ops]
-                24.5.2.2.1 [move.iter.op.const]
-                24.5.2.2.2 [move.iter.op=]
-                24.5.2.2.3 [move.iter.op.conv]
-                24.5.2.2.4 [move.iter.op.star]
-                24.5.2.2.5 [move.iter.op.ref]
-                24.5.2.2.6 [move.iter.op.incr]
-                24.5.2.2.7 [move.iter.op.decr]
-                24.5.2.2.8 [move.iter.op.+]
-                24.5.2.2.9 [move.iter.op.+=]
-                24.5.2.2.10 [move.iter.op.-]
-                24.5.2.2.11 [move.iter.op.-=]
-                24.5.2.2.12 [move.iter.op.index]
-                24.5.2.2.13 [move.iter.op.comp]
-                24.5.2.2.14 [move.iter.nonmember]
-                24.5.2.2.15 [move.iter.maps]
-    24.6 [stream.iterators]
-        24.6.1 [istream.iterator]
-            24.6.1.1 [istream.iterator.cons]
-            24.6.1.2 [istream.iterator.ops]
-        24.6.2 [ostream.iterator]
-            24.6.2.1 [ostream.iterator.cons.des]
-            24.6.2.2 [ostream.iterator.ops]
-        24.6.3 [istreambuf.iterator]
-            24.6.3.1 [istreambuf.iterator::proxy]
-            24.6.3.2 [istreambuf.iterator.cons]
-            24.6.3.3 [istreambuf.iterator::op*]
-            24.6.3.4 [istreambuf.iterator::op++]
-            24.6.3.5 [istreambuf.iterator::equal]
-            24.6.3.6 [istreambuf.iterator::op==]
-            24.6.3.7 [istreambuf.iterator::op!=]
-        24.6.4 [ostreambuf.iterator]
-            24.6.4.1 [ostreambuf.iter.cons]
-            24.6.4.2 [ostreambuf.iter.ops]
-    24.7 [insert.iterators]
-        24.7.1 [back.insert.iterator]
-        24.7.2 [back.insert.iter.ops]
-            24.7.2.1 [back.insert.iter.cons]
-            24.7.2.2 [back.insert.iter.op=]
-            24.7.2.3 [back.insert.iter.op*]
-            24.7.2.4 [back.insert.iter.op++]
-            24.7.2.5 [back.inserter]
-            24.7.2.6 [back.insert.iter.maps]
-        24.7.3 [front.insert.iterator]
-        24.7.4 [front.insert.iter.ops]
-            24.7.4.1 [front.insert.iter.cons]
-            24.7.4.2 [front.insert.iter.op=]
-            24.7.4.3 [front.insert.iter.op*]
-            24.7.4.4 [front.insert.iter.op++]
-            24.7.4.5 [front.inserter]
-            24.7.4.6 [front.insert.iter.maps]
-        24.7.5 [insert.iterator]
-        24.7.6 [insert.iter.ops]
-            24.7.6.1 [insert.iter.cons]
-            24.7.6.2 [insert.iter.op=]
-            24.7.6.3 [insert.iter.op*]
-            24.7.6.4 [insert.iter.op++]
-            24.7.6.5 [inserter]
-            24.7.6.6 [insert.iter.maps]
-25 [algorithms]
-    25.1 [algorithms.general]
-    25.2 [algorithms.syn]
-    25.3 [alg.nonmodifying]
-        25.3.1 [alg.all_of]
-        25.3.2 [alg.any_of]
-        25.3.3 [alg.none_of]
-        25.3.4 [alg.foreach]
-        25.3.5 [alg.find]
-        25.3.6 [alg.find.end]
-        25.3.7 [alg.find.first.of]
-        25.3.8 [alg.adjacent.find]
-        25.3.9 [alg.count]
-        25.3.10 [mismatch]
-        25.3.11 [alg.equal]
-        25.3.12 [alg.search]
-    25.4 [alg.modifying.operations]
-        25.4.1 [alg.copy]
-        25.4.2 [alg.move]
-        25.4.3 [alg.swap]
-        25.4.4 [alg.transform]
-        25.4.5 [alg.replace]
-        25.4.6 [alg.fill]
-        25.4.7 [alg.generate]
-        25.4.8 [alg.remove]
-        25.4.9 [alg.unique]
-        25.4.10 [alg.reverse]
-        25.4.11 [alg.rotate]
-        25.4.12 [alg.random.shuffle]
-        25.4.13 [alg.partitions]
-    25.5 [alg.sorting]
-        25.5.1 [alg.sort]
-            25.5.1.1 [sort]
-            25.5.1.2 [stable.sort]
-            25.5.1.3 [partial.sort]
-            25.5.1.4 [partial.sort.copy]
-            25.5.1.5 [is.sorted]
-        25.5.2 [alg.nth.element]
-        25.5.3 [alg.binary.search]
-            25.5.3.1 [lower.bound]
-            25.5.3.2 [upper.bound]
-            25.5.3.3 [equal.range]
-            25.5.3.4 [binary.search]
-        25.5.4 [alg.merge]
-        25.5.5 [alg.set.operations]
-            25.5.5.1 [includes]
-            25.5.5.2 [set.union]
-            25.5.5.3 [set.intersection]
-            25.5.5.4 [set.difference]
-            25.5.5.5 [set.symmetric.difference]
-        25.5.6 [alg.heap.operations]
-            25.5.6.1 [push.heap]
-            25.5.6.2 [pop.heap]
-            25.5.6.3 [make.heap]
-            25.5.6.4 [sort.heap]
-            25.5.6.5 [is.heap]
-        25.5.7 [alg.min.max]
-        25.5.8 [alg.lex.comparison]
-        25.5.9 [alg.permutation.generators]
-    25.6 [alg.c.library]
-26 [numerics]
-    26.1 [numerics.general]
-    26.2 [numeric.requirements]
-    26.3 [cfenv]
-        26.3.1 [cfenv.syn]
-        26.3.2 [fenv]
-    26.4 [complex.numbers]
-        26.4.1 [complex.syn]
-        26.4.2 [complex]
-        26.4.3 [complex.special]
-        26.4.4 [complex.members]
-        26.4.5 [complex.member.ops]
-        26.4.6 [complex.ops]
-        26.4.7 [complex.value.ops]
-        26.4.8 [complex.transcendentals]
-        26.4.9 [cmplx.over]
-        26.4.10 [ccmplx]
-        26.4.11 [cmplxh]
-    26.5 [rand]
-        26.5.1 [rand.synopsis]
-        26.5.2 [rand.concept]
-            26.5.2.1 [rand.concept.seedseq]
-            26.5.2.2 [rand.concept.urng]
-            26.5.2.3 [rand.concept.eng]
-            26.5.2.4 [rand.concept.adapt]
-            26.5.2.5 [rand.concept.dist]
-        26.5.3 [rand.eng]
-            26.5.3.1 [rand.eng.lcong]
-            26.5.3.2 [rand.eng.mers]
-            26.5.3.3 [rand.eng.sub]
-        26.5.4 [rand.adapt]
-            26.5.4.1 [rand.adapt.disc]
-            26.5.4.2 [rand.adapt.ibits]
-            26.5.4.3 [rand.adapt.shuf]
-        26.5.5 [rand.predef]
-        26.5.6 [rand.device]
-        26.5.7 [rand.util]
-            26.5.7.1 [rand.util.seedseq]
-            26.5.7.2 [rand.util.canonical]
-        26.5.8 [rand.dist]
-            26.5.8.1 [rand.dist.uni]
-                26.5.8.1.1 [rand.dist.uni.int]
-                26.5.8.1.2 [rand.dist.uni.real]
-            26.5.8.2 [rand.dist.bern]
-                26.5.8.2.1 [rand.dist.bern.bernoulli]
-                26.5.8.2.2 [rand.dist.bern.bin]
-                26.5.8.2.3 [rand.dist.bern.geo]
-                26.5.8.2.4 [rand.dist.bern.negbin]
-            26.5.8.3 [rand.dist.pois]
-                26.5.8.3.1 [rand.dist.pois.poisson]
-                26.5.8.3.2 [rand.dist.pois.exp]
-                26.5.8.3.3 [rand.dist.pois.gamma]
-                26.5.8.3.4 [rand.dist.pois.weibull]
-                26.5.8.3.5 [rand.dist.pois.extreme]
-            26.5.8.4 [rand.dist.norm]
-                26.5.8.4.1 [rand.dist.norm.normal]
-                26.5.8.4.2 [rand.dist.norm.lognormal]
-                26.5.8.4.3 [rand.dist.norm.chisq]
-                26.5.8.4.4 [rand.dist.norm.cauchy]
-                26.5.8.4.5 [rand.dist.norm.f]
-                26.5.8.4.6 [rand.dist.norm.t]
-            26.5.8.5 [rand.dist.samp]
-                26.5.8.5.1 [rand.dist.samp.discrete]
-                26.5.8.5.2 [rand.dist.samp.pconst]
-                26.5.8.5.3 [rand.dist.samp.plinear]
-    26.6 [numarray]
-        26.6.1 [valarray.syn]
-        26.6.2 [template.valarray]
-            26.6.2.1 [valarray.cons]
-            26.6.2.2 [valarray.assign]
-            26.6.2.3 [valarray.access]
-            26.6.2.4 [valarray.sub]
-            26.6.2.5 [valarray.unary]
-            26.6.2.6 [valarray.cassign]
-            26.6.2.7 [valarray.members]
-        26.6.3 [valarray.nonmembers]
-            26.6.3.1 [valarray.binary]
-            26.6.3.2 [valarray.comparison]
-            26.6.3.3 [valarray.transcend]
-            26.6.3.4 [valarray.special]
-        26.6.4 [class.slice]
-            26.6.4.1 [cons.slice]
-            26.6.4.2 [slice.access]
-        26.6.5 [template.slice.array]
-            26.6.5.1 [slice.arr.assign]
-            26.6.5.2 [slice.arr.comp.assign]
-            26.6.5.3 [slice.arr.fill]
-        26.6.6 [class.gslice]
-            26.6.6.1 [gslice.cons]
-            26.6.6.2 [gslice.access]
-        26.6.7 [template.gslice.array]
-            26.6.7.1 [gslice.array.assign]
-            26.6.7.2 [gslice.array.comp.assign]
-            26.6.7.3 [gslice.array.fill]
-        26.6.8 [template.mask.array]
-            26.6.8.1 [mask.array.assign]
-            26.6.8.2 [mask.array.comp.assign]
-            26.6.8.3 [mask.array.fill]
-        26.6.9 [template.indirect.array]
-            26.6.9.1 [indirect.array.assign]
-            26.6.9.2 [indirect.array.comp.assign]
-            26.6.9.3 [indirect.array.fill]
-            26.6.9.4 [valarray.concepts]
-    26.7 [numeric.ops]
-        26.7.1 [accumulate]
-        26.7.2 [inner.product]
-        26.7.3 [partial.sum]
-        26.7.4 [adjacent.difference]
-        26.7.5 [numeric.iota]
-    26.8 [c.math]
-27 [input.output]
-    27.1 [input.output.general]
-    27.2 [iostreams.requirements]
-        27.2.1 [iostream.limits.imbue]
-        27.2.2 [iostreams.limits.pos]
-        27.2.3 [iostreams.threadsafety]
-    27.3 [iostream.forward]
-    27.4 [iostream.objects]
-        27.4.1 [narrow.stream.objects]
-        27.4.2 [wide.stream.objects]
-    27.5 [iostreams.base]
-        27.5.1 [stream.types]
-        27.5.2 [ios.base]
-            27.5.2.1 [ios.types]
-                27.5.2.1.1 [ios::failure]
-                27.5.2.1.2 [ios::fmtflags]
-                27.5.2.1.3 [ios::iostate]
-                27.5.2.1.4 [ios::openmode]
-                27.5.2.1.5 [ios::seekdir]
-                27.5.2.1.6 [ios::Init]
-            27.5.2.2 [fmtflags.state]
-            27.5.2.3 [ios.base.locales]
-            27.5.2.4 [ios.members.static]
-            27.5.2.5 [ios.base.storage]
-            27.5.2.6 [ios.base.callback]
-            27.5.2.7 [ios.base.cons]
-        27.5.3 [fpos]
-            27.5.3.1 [fpos.members]
-            27.5.3.2 [fpos.operations]
-        27.5.4 [ios]
-            27.5.4.1 [basic.ios.cons]
-            27.5.4.2 [basic.ios.members]
-            27.5.4.3 [iostate.flags]
-        27.5.5 [std.ios.manip]
-            27.5.5.1 [fmtflags.manip]
-            27.5.5.2 [adjustfield.manip]
-            27.5.5.3 [basefield.manip]
-            27.5.5.4 [floatfield.manip]
-            27.5.5.5 [error.reporting]
-    27.6 [stream.buffers]
-        27.6.1 [streambuf.reqts]
-        27.6.2 [streambuf]
-            27.6.2.1 [streambuf.cons]
-            27.6.2.2 [streambuf.members]
-                27.6.2.2.1 [streambuf.locales]
-                27.6.2.2.2 [streambuf.buffer]
-                27.6.2.2.3 [streambuf.pub.get]
-                27.6.2.2.4 [streambuf.pub.pback]
-                27.6.2.2.5 [streambuf.pub.put]
-            27.6.2.3 [streambuf.protected]
-                27.6.2.3.1 [streambuf.assign]
-                27.6.2.3.2 [streambuf.get.area]
-                27.6.2.3.3 [streambuf.put.area]
-            27.6.2.4 [streambuf.virtuals]
-                27.6.2.4.1 [streambuf.virt.locales]
-                27.6.2.4.2 [streambuf.virt.buffer]
-                27.6.2.4.3 [streambuf.virt.get]
-                27.6.2.4.4 [streambuf.virt.pback]
-                27.6.2.4.5 [streambuf.virt.put]
-    27.7 [iostream.format]
-        27.7.1 [input.streams]
-            27.7.1.1 [istream]
-                27.7.1.1.1 [istream.cons]
-                27.7.1.1.2 [istream.assign]
-                27.7.1.1.3 [istream::sentry]
-            27.7.1.2 [istream.formatted]
-                27.7.1.2.1 [istream.formatted.reqmts]
-                27.7.1.2.2 [istream.formatted.arithmetic]
-                27.7.1.2.3 [istream::extractors]
-            27.7.1.3 [istream.unformatted]
-            27.7.1.4 [istream.manip]
-            27.7.1.5 [iostreamclass]
-                27.7.1.5.1 [iostream.cons]
-                27.7.1.5.2 [iostream.dest]
-                27.7.1.5.3 [iostream.assign]
-            27.7.1.6 [istream.rvalue]
-        27.7.2 [output.streams]
-            27.7.2.1 [ostream]
-            27.7.2.2 [ostream.cons]
-            27.7.2.3 [ostream.assign]
-            27.7.2.4 [ostream::sentry]
-            27.7.2.5 [ostream.seeks]
-            27.7.2.6 [ostream.formatted]
-                27.7.2.6.1 [ostream.formatted.reqmts]
-                27.7.2.6.2 [ostream.inserters.arithmetic]
-                27.7.2.6.3 [ostream.inserters]
-                27.7.2.6.4 [ostream.inserters.character]
-            27.7.2.7 [ostream.unformatted]
-            27.7.2.8 [ostream.manip]
-            27.7.2.9 [ostream.rvalue]
-        27.7.3 [std.manip]
-        27.7.4 [ext.manip]
-    27.8 [string.streams]
-        27.8.1 [stringbuf]
-            27.8.1.1 [stringbuf.cons]
-            27.8.1.2 [stringbuf.assign]
-            27.8.1.3 [stringbuf.members]
-            27.8.1.4 [stringbuf.virtuals]
-        27.8.2 [istringstream]
-            27.8.2.1 [istringstream.cons]
-            27.8.2.2 [istringstream.assign]
-            27.8.2.3 [istringstream.members]
-        27.8.3 [ostringstream]
-            27.8.3.1 [ostringstream.cons]
-            27.8.3.2 [ostringstream.assign]
-            27.8.3.3 [ostringstream.members]
-        27.8.4 [stringstream]
-        27.8.5 [stringstream.cons]
-            27.8.5.1 [stringstream.assign]
-        27.8.6 [stringstream.members]
-    27.9 [file.streams]
-        27.9.1 [fstreams]
-            27.9.1.1 [filebuf]
-            27.9.1.2 [filebuf.cons]
-            27.9.1.3 [filebuf.assign]
-            27.9.1.4 [filebuf.members]
-            27.9.1.5 [filebuf.virtuals]
-            27.9.1.6 [ifstream]
-            27.9.1.7 [ifstream.cons]
-            27.9.1.8 [ifstream.assign]
-            27.9.1.9 [ifstream.members]
-            27.9.1.10 [ofstream]
-            27.9.1.11 [ofstream.cons]
-            27.9.1.12 [ofstream.assign]
-            27.9.1.13 [ofstream.members]
-            27.9.1.14 [fstream]
-            27.9.1.15 [fstream.cons]
-            27.9.1.16 [fstream.assign]
-            27.9.1.17 [fstream.members]
-        27.9.2 [c.files]
-28 [re]
-    28.1 [re.general]
-    28.2 [re.def]
-        28.2.1 [defns.regex.collating.element]
-        28.2.2 [defns.regex.finite.state.machine]
-        28.2.3 [defns.regex.format.specifier]
-        28.2.4 [defns.regex.matched]
-        28.2.5 [defns.regex.primary.equivalence.class]
-        28.2.6 [defns.regex.regular.expression]
-        28.2.7 [defns.regex.subexpression]
-    28.3 [re.req]
-    28.4 [re.syn]
-    28.5 [re.const]
-        28.5.1 [re.synopt]
-        28.5.2 [re.matchflag]
-        28.5.3 [re.err]
-    28.6 [re.badexp]
-    28.7 [re.traits]
-    28.8 [re.regex]
-        28.8.1 [re.regex.const]
-        28.8.2 [re.regex.construct]
-        28.8.3 [re.regex.assign]
-        28.8.4 [re.regex.operations]
-        28.8.5 [re.regex.locale]
-        28.8.6 [re.regex.swap]
-        28.8.7 [re.regex.nonmemb]
-            28.8.7.1 [re.regex.nmswap]
-    28.9 [re.submatch]
-        28.9.1 [re.submatch.members]
-        28.9.2 [re.submatch.op]
-        28.9.3 [re.submatch.concepts]
-    28.10 [re.results]
-        28.10.1 [re.results.const]
-        28.10.2 [re.results.size]
-        28.10.3 [re.results.acc]
-        28.10.4 [re.results.form]
-        28.10.5 [re.results.all]
-        28.10.6 [re.results.swap]
-        28.10.7 [re.results.nonmember]
-    28.11 [re.alg]
-        28.11.1 [re.except]
-        28.11.2 [re.alg.match]
-        28.11.3 [re.alg.search]
-        28.11.4 [re.alg.replace]
-    28.12 [re.iter]
-        28.12.1 [re.regiter]
-            28.12.1.1 [re.regiter.cnstr]
-            28.12.1.2 [re.regiter.comp]
-            28.12.1.3 [re.regiter.deref]
-            28.12.1.4 [re.regiter.incr]
-        28.12.2 [re.tokiter]
-            28.12.2.1 [re.tokiter.cnstr]
-            28.12.2.2 [re.tokiter.comp]
-            28.12.2.3 [re.tokiter.deref]
-            28.12.2.4 [re.tokiter.incr]
-    28.13 [re.grammar]
-29 [atomics]
-    29.1 [atomics.general]
-    29.2 [atomics.syn]
-    29.3 [atomics.order]
-    29.4 [atomics.lockfree]
-    29.5 [atomics.types]
-        29.5.1 [atomics.types.integral]
-        29.5.2 [atomics.types.address]
-        29.5.3 [atomics.types.generic]
-    29.6 [atomics.types.operations]
-    29.7 [atomics.flag]
-    29.8 [atomics.fences]
-30 [thread]
-    30.1 [thread.general]
-    30.2 [thread.req]
-        30.2.1 [thread.req.paramname]
-        30.2.2 [thread.req.exception]
-        30.2.3 [thread.req.native]
-        30.2.4 [thread.req.timing]
-    30.3 [thread.threads]
-        30.3.1 [thread.thread.class]
-            30.3.1.1 [thread.thread.id]
-            30.3.1.2 [thread.thread.constr]
-            30.3.1.3 [thread.thread.destr]
-            30.3.1.4 [thread.thread.assign]
-            30.3.1.5 [thread.thread.member]
-            30.3.1.6 [thread.thread.static]
-            30.3.1.7 [thread.thread.algorithm]
-        30.3.2 [thread.thread.this]
-    30.4 [thread.mutex]
-        30.4.1 [thread.mutex.requirements]
-            30.4.1.1 [thread.mutex.class]
-            30.4.1.2 [thread.mutex.recursive]
-        30.4.2 [thread.timedmutex.requirements]
-            30.4.2.1 [thread.timedmutex.class]
-            30.4.2.2 [thread.timedmutex.recursive]
-        30.4.3 [thread.lock]
-            30.4.3.1 [thread.lock.guard]
-            30.4.3.2 [thread.lock.unique]
-                30.4.3.2.1 [thread.lock.unique.cons]
-                30.4.3.2.2 [thread.lock.unique.locking]
-                30.4.3.2.3 [thread.lock.unique.mod]
-                30.4.3.2.4 [thread.lock.unique.obs]
-        30.4.4 [thread.lock.algorithm]
-        30.4.5 [thread.once]
-            30.4.5.1 [thread.once.onceflag]
-            30.4.5.2 [thread.once.callonce]
-    30.5 [thread.condition]
-        30.5.1 [thread.condition.condvar]
-        30.5.2 [thread.condition.condvarany]
-    30.6 [futures]
-        30.6.1 [futures.overview]
-        30.6.2 [futures.errors]
-        30.6.3 [futures.future_error]
-        30.6.4 [futures.promise]
-        30.6.5 [futures.unique_future]
-        30.6.6 [future.shared_future]
-        30.6.7 [futures.task]
-A [gram]
-    A.1 [gram.key]
-    A.2 [gram.lex]
-    A.3 [gram.basic]
-    A.4 [gram.expr]
-    A.5 [gram.stmt]
-    A.6 [gram.dcl]
-    A.7 [gram.decl]
-    A.8 [gram.class]
-    A.9 [gram.derived]
-    A.10 [gram.special]
-    A.11 [gram.over]
-    A.12 [gram.temp]
-    A.13 [gram.except]
-    A.14 [gram.cpp]
-B [implimits]
-C [diff]
-    C.1 [diff.iso]
-        C.1.1 [diff.lex]
-        C.1.2 [diff.basic]
-        C.1.3 [diff.expr]
-        C.1.4 [diff.stat]
-        C.1.5 [diff.dcl]
-        C.1.6 [diff.decl]
-        C.1.7 [diff.class]
-        C.1.8 [diff.special]
-        C.1.9 [diff.cpp]
-    C.2 [diff.library]
-        C.2.1 [diff.mods.to.headers]
-        C.2.2 [diff.mods.to.definitions]
-            C.2.2.1 [diff.char16]
-            C.2.2.2 [diff.wchar.t]
-            C.2.2.3 [diff.header.iso646.h]
-            C.2.2.4 [diff.null]
-        C.2.3 [diff.mods.to.declarations]
-        C.2.4 [diff.mods.to.behavior]
-            C.2.4.1 [diff.offsetof]
-            C.2.4.2 [diff.malloc]
-D [depr]
-    D.1 [depr.incr.bool]
-    D.2 [depr.static]
-    D.3 [depr.access.dcl]
-    D.4 [depr.string]
-    D.5 [depr.c.headers]
-    D.6 [depr.ios.members]
-    D.7 [depr.str.strstreams]
-        D.7.1 [depr.strstreambuf]
-            D.7.1.1 [depr.strstreambuf.cons]
-            D.7.1.2 [depr.strstreambuf.members]
-            D.7.1.3 [depr.strstreambuf.virtuals]
-        D.7.2 [depr.istrstream]
-            D.7.2.1 [depr.istrstream.cons]
-            D.7.2.2 [depr.istrstream.members]
-        D.7.3 [depr.ostrstream]
-            D.7.3.1 [depr.ostrstream.cons]
-            D.7.3.2 [depr.ostrstream.members]
-        D.7.4 [depr.strstream]
-            D.7.4.1 [depr.strstream.cons]
-            D.7.4.2 [depr.strstream.dest]
-            D.7.4.3 [depr.strstream.oper]
-    D.8 [depr.lib.binders]
-        D.8.1 [depr.lib.binder.1st]
-        D.8.2 [depr.lib.bind.1st]
-        D.8.3 [depr.lib.binder.2nd]
-        D.8.4 [depr.lib.bind.2nd]
-    D.9 [depr.auto.ptr]
-        D.9.1 [auto.ptr]
-            D.9.1.1 [auto.ptr.cons]
-            D.9.1.2 [auto.ptr.members]
-            D.9.1.3 [auto.ptr.conv]
-    D.10 [depr.lib.iterator.primitives]
-        D.10.1 [iterator.traits]
-        D.10.2 [iterator.basic]
-        D.10.3 [std.iterator.tags]
-        D.10.4 [iterator.backward]
-E [xref]
-
-TR1 1 [tr.intro]
-    TR1 1.1 [tr.description]
-    TR1 1.2 [tr.intro.ext]
-    TR1 1.3 [tr.intro.namespaces]
-TR1 2 [tr.util]
-    TR1 2.1 [tr.util.refwrap]
-        TR1 2.1.1 [tr.util.refwrp.synopsis]
-        TR1 2.1.2 [tr.util.refwrp.refwrp]
-            TR1 2.1.2.1 [tr.util.refwrp.const]
-            TR1 2.1.2.2 [tr.util.refwrp.assign]
-            TR1 2.1.2.3 [tr.util.refwrp.access]
-            TR1 2.1.2.4 [tr.util.refwrp.invoke]
-            TR1 2.1.2.5 [tr.util.refwrp.helpers]
-    TR1 2.2 [tr.util.smartptr]
-        TR1 2.2.1 [tr.util.smartptr.synopsis]
-        TR1 2.2.2 [tr.util.smartptr.weakptr]
-        TR1 2.2.3 [tr.util.smartptr.shared]
-            TR1 2.2.3.1 [tr.util.smartptr.shared.const]
-            TR1 2.2.3.2 [tr.util.smartptr.shared.dest]
-            TR1 2.2.3.3 [tr.util.smartptr.shared.assign]
-            TR1 2.2.3.4 [tr.util.smartptr.shared.mod]
-            TR1 2.2.3.5 [tr.util.smartptr.shared.obs]
-            TR1 2.2.3.6 [tr.util.smartptr.shared.cmp]
-            TR1 2.2.3.7 [tr.util.smartptr.shared.io]
-            TR1 2.2.3.8 [tr.util.smartptr.shared.spec]
-            TR1 2.2.3.9 [tr.util.smartptr.shared.cast]
-            TR1 2.2.3.10 [tr.util.smartptr.getdeleter]
-        TR1 2.2.4 [tr.util.smartptr.weak]
-            TR1 2.2.4.1 [tr.util.smartptr.weak.const]
-            TR1 2.2.4.2 [tr.util.smartptr.weak.dest]
-            TR1 2.2.4.3 [tr.util.smartptr.weak.assign]
-            TR1 2.2.4.4 [tr.util.smartptr.weak.mod]
-            TR1 2.2.4.5 [tr.util.smartptr.weak.obs]
-            TR1 2.2.4.6 [tr.util.smartptr.weak.cmp]
-            TR1 2.2.4.7 [tr.util.smartptr.weak.spec]
-        TR1 2.2.5 [tr.util.smartptr.enab]
-TR1 3 [tr.func]
-    TR1 3.1 [tr.func.def]
-    TR1 3.2 [tr.func.syn]
-    TR1 3.3 [tr.func.require]
-    TR1 3.4 [tr.func.ret]
-    TR1 3.5 [tr.func.memfn]
-    TR1 3.6 [tr.func.bind]
-        TR1 3.6.1 [tr.func.bind.isbind]
-        TR1 3.6.2 [tr.func.bind.isplace]
-        TR1 3.6.3 [tr.func.bind.bind]
-        TR1 3.6.4 [tr.func.bind.place]
-    TR1 3.7 [tr.func.wrap]
-        TR1 3.7.1 [tr.func.wrap.badcall]
-            TR1 3.7.1.1 [tr.func.wrap.badcall.const]
-        TR1 3.7.2 [tr.func.wrap.func]
-            TR1 3.7.2.1 [tr.func.wrap.func.con]
-            TR1 3.7.2.2 [tr.func.wrap.func.mod]
-            TR1 3.7.2.3 [tr.func.wrap.func.cap]
-            TR1 3.7.2.4 [tr.func.wrap.func.inv]
-            TR1 3.7.2.5 [tr.func.wrap.func.targ]
-            TR1 3.7.2.6 [tr.func.wrap.func.undef]
-            TR1 3.7.2.7 [tr.func.wrap.func.nullptr]
-            TR1 3.7.2.8 [tr.func.wrap.func.alg]
-TR1 4 [tr.meta]
-    TR1 4.1 [tr.meta.rqmts]
-    TR1 4.2 [tr.meta.type.synop]
-    TR1 4.3 [tr.meta.help]
-    TR1 4.4 [tr.meta.requirements]
-    TR1 4.5 [tr.meta.unary]
-        TR1 4.5.1 [tr.meta.unary.cat]
-        TR1 4.5.2 [tr.meta.unary.comp]
-        TR1 4.5.3 [tr.meta.unary.prop]
-    TR1 4.6 [tr.meta.rel]
-    TR1 4.7 [tr.meta.trans]
-        TR1 4.7.1 [tr.meta.trans.cv]
-        TR1 4.7.2 [tr.meta.trans.ref]
-        TR1 4.7.3 [tr.meta.trans.arr]
-        TR1 4.7.4 [tr.meta.trans.ptr]
-    TR1 4.8 [tr.meta.trans.other]
-    TR1 4.9 [tr.meta.req]
-TR1 5 [tr.num]
-    TR1 5.1 [tr.rand]
-        TR1 5.1.1 [tr.rand.req]
-        TR1 5.1.2 [tr.rand.synopsis]
-        TR1 5.1.3 [tr.rand.var]
-        TR1 5.1.4 [tr.rand.eng]
-            TR1 5.1.4.1 [tr.rand.eng.lcong]
-            TR1 5.1.4.2 [tr.rand.eng.mers]
-            TR1 5.1.4.3 [tr.rand.eng.sub]
-            TR1 5.1.4.4 [tr.rand.eng.sub1]
-            TR1 5.1.4.5 [tr.rand.eng.disc]
-            TR1 5.1.4.6 [tr.rand.eng.xor]
-        TR1 5.1.5 [tr.rand.predef]
-        TR1 5.1.6 [tr.rand.device]
-        TR1 5.1.7 [tr.rand.dist]
-            TR1 5.1.7.1 [tr.rand.dist.iunif]
-            TR1 5.1.7.2 [tr.rand.dist.bern]
-            TR1 5.1.7.3 [tr.rand.dist.geom]
-            TR1 5.1.7.4 [tr.rand.dist.pois]
-            TR1 5.1.7.5 [tr.rand.dist.bin]
-            TR1 5.1.7.6 [tr.rand.dist.runif]
-            TR1 5.1.7.7 [tr.rand.dist.exp]
-            TR1 5.1.7.8 [tr.rand.dist.norm]
-            TR1 5.1.7.9 [tr.rand.dist.gamma]
-    TR1 5.2 [tr.num.sf]
-        TR1 5.2.1 [tr.num.sf.cmath]
-            TR1 5.2.1.1 [tr.num.sf.Lnm]
-            TR1 5.2.1.2 [tr.num.sf.Plm]
-            TR1 5.2.1.3 [tr.num.sf.beta]
-            TR1 5.2.1.4 [tr.num.sf.ellK]
-            TR1 5.2.1.5 [tr.num.sf.ellEx]
-            TR1 5.2.1.6 [tr.num.sf.ellPx]
-            TR1 5.2.1.7 [tr.num.sf.conhyp]
-            TR1 5.2.1.8 [tr.num.sf.I]
-            TR1 5.2.1.9 [tr.num.sf.J]
-            TR1 5.2.1.10 [tr.num.sf.K]
-            TR1 5.2.1.11 [tr.num.sf.N]
-            TR1 5.2.1.12 [tr.num.sf.ellF]
-            TR1 5.2.1.13 [tr.num.sf.ellE]
-            TR1 5.2.1.14 [tr.num.sf.ellP]
-            TR1 5.2.1.15 [tr.num.sf.ei]
-            TR1 5.2.1.16 [tr.num.sf.Hn]
-            TR1 5.2.1.17 [tr.num.sf.hyper]
-            TR1 5.2.1.18 [tr.num.sf.Ln]
-            TR1 5.2.1.19 [tr.num.sf.Pl]
-            TR1 5.2.1.20 [tr.num.sf.riemannzeta]
-            TR1 5.2.1.21 [tr.num.sf.j]
-            TR1 5.2.1.22 [tr.num.sf.Ylm]
-            TR1 5.2.1.23 [tr.num.sf.n]
-        TR1 5.2.2 [tr.num.sf.mathh]
-TR1 6 [tr.cont]
-    TR1 6.1 [tr.tuple]
-        TR1 6.1.1 [tr.tuple.synopsis]
-        TR1 6.1.2 [tr.tuple.synopsis.pair]
-        TR1 6.1.3 [tr.tuple.tuple]
-            TR1 6.1.3.1 [tr.tuple.cnstr]
-            TR1 6.1.3.2 [tr.tuple.creation]
-            TR1 6.1.3.3 [tr.tuple.helper]
-            TR1 6.1.3.4 [tr.tuple.elem]
-            TR1 6.1.3.5 [tr.tuple.rel]
-        TR1 6.1.4 [tr.tuple.pairs]
-    TR1 6.2 [tr.array]
-        TR1 6.2.1 [tr.array.syn]
-        TR1 6.2.2 [tr.array.array]
-            TR1 6.2.2.1 [tr.array.cons]
-            TR1 6.2.2.2 [tr.array.special]
-            TR1 6.2.2.3 [tr.array.size]
-            TR1 6.2.2.4 [tr.array.zero]
-            TR1 6.2.2.5 [tr.array.tuple]
-    TR1 6.3 [tr.hash]
-        TR1 6.3.1 [tr.unord.req]
-            TR1 6.3.1.1 [tr.unord.req.except]
-        TR1 6.3.2 [tr.unord.fun.syn]
-        TR1 6.3.3 [tr.unord.hash]
-        TR1 6.3.4 [tr.unord.unord]
-            TR1 6.3.4.1 [tr.unord.syn.set]
-            TR1 6.3.4.2 [tr.unord.syn.map]
-            TR1 6.3.4.3 [tr.unord.set]
-                TR1 6.3.4.3.1 [tr.unord.set.cnstr]
-                TR1 6.3.4.3.2 [tr.unord.set.swap]
-            TR1 6.3.4.4 [tr.unord.map]
-                TR1 6.3.4.4.1 [tr.unord.map.cnstr]
-                TR1 6.3.4.4.2 [tr.unord.map.elem]
-                TR1 6.3.4.4.3 [tr.unord.map.swap]
-            TR1 6.3.4.5 [tr.unord.multiset]
-                TR1 6.3.4.5.1 [tr.unord.multiset.cnstr]
-                TR1 6.3.4.5.2 [tr.unord.multiset.swap]
-            TR1 6.3.4.6 [tr.unord.multimap]
-                TR1 6.3.4.6.1 [tr.unord.multimap.cnstr]
-                TR1 6.3.4.6.2 [tr.unord.multimap.swap]
-TR1 7 [tr.re]
-    TR1 7.1 [tr.re.def]
-    TR1 7.2 [tr.re.req]
-    TR1 7.3 [tr.re.sum]
-    TR1 7.4 [tr.re.syn]
-    TR1 7.5 [tr.re.const]
-        TR1 7.5.1 [tr.re.synopt]
-        TR1 7.5.2 [tr.re.matchflag]
-        TR1 7.5.3 [tr.re.err]
-    TR1 7.6 [tr.re.badexp]
-    TR1 7.7 [tr.re.traits]
-    TR1 7.8 [tr.re.regex]
-        TR1 7.8.1 [tr.re.regex.const]
-        TR1 7.8.2 [tr.re.regex.construct]
-        TR1 7.8.3 [tr.re.regex.assign]
-        TR1 7.8.4 [tr.re.regex.operations]
-        TR1 7.8.5 [tr.re.regex.locale]
-        TR1 7.8.6 [tr.re.regex.swap]
-        TR1 7.8.7 [tr.re.regex.nonmemb]
-            TR1 7.8.7.1 [tr.re.regex.nmswap.]
-    TR1 7.9 [tr.re.submatch]
-        TR1 7.9.1 [tr.re.submatch.members]
-        TR1 7.9.2 [tr.re.submatch.op]
-    TR1 7.10 [tr.re.results]
-        TR1 7.10.1 [tr.re.results.const]
-        TR1 7.10.2 [tr.re.results.size]
-        TR1 7.10.3 [tr.re.results.acc]
-        TR1 7.10.4 [tr.re.results.form]
-        TR1 7.10.5 [tr.re.results.all]
-        TR1 7.10.1 [tr.re.results.swap]
-    TR1 7.11 [tr.re.alg]
-        TR1 7.11.1 [tr.re.except]
-        TR1 7.11.2 [tr.re.alg.match]
-        TR1 7.11.3 [tr.re.alg.search]
-        TR1 7.11.4 [tr.re.alg.replace]
-    TR1 7.12 [tr.re.iter]
-        TR1 7.12.1 [tr.re.regiter]
-            TR1 7.12.1.1 [tr.re.regiter.cnstr]
-            TR1 7.12.1.2 [tr.re.regiter.comp]
-            TR1 7.12.1.3 [tr.re.regiter.deref]
-            TR1 7.12.1.4 [tr.re.regiter.incr]
-        TR1 7.12.2 [tr.re.tokiter]
-            TR1 7.12.2.1 [tr.re.tokiter.cnstr]
-            TR1 7.12.2.2 [tr.re.tokiter.comp]
-            TR1 7.12.2.3 [tr.re.tokiter.deref]
-            TR1 7.12.2.4 [tr.re.tokiter.incr]
-    TR1 7.13 [tr.re.grammar]
-TR1 8 [tr.c99]
-    TR1 8.1 [tr.c99.cmplx]
-        TR1 8.1.1 [tr.c99.cmplx.syn]
-        TR1 8.1.2 [tr.c99.cmplx.acos]
-        TR1 8.1.3 [tr.c99.cmplx.asin]
-        TR1 8.1.4 [tr.c99.cmplx.atan]
-        TR1 8.1.5 [tr.c99.cmplx.acosh]
-        TR1 8.1.6 [tr.c99.cmplx.asinh]
-        TR1 8.1.7 [tr.c99.cmplx.atanh]
-        TR1 8.1.8 [tr.c99.cmplx.fabs]
-        TR1 8.1.9 [tr.c99.cmplx.over]
-    TR1 8.2 [tr.c99.ccmplx]
-    TR1 8.3 [tr.c99.cmplxh]
-    TR1 8.4 [tr.c99.cctype]
-        TR1 8.4.1 [tr.c99.cctype.syn]
-        TR1 8.4.2 [tr.c99.cctype.blank]
-    TR1 8.5 [tr.c99.ctypeh]
-    TR1 8.6 [tr.c99.cfenv]
-        TR1 8.6.1 [tr.c99.cfenv.syn]
-        TR1 8.6.2 [tr.c99.cfenv.def]
-    TR1 8.7 [tr.c99.fenv]
-    TR1 8.8 [tr.c99.cfloat]
-    TR1 8.9 [tr.c99.floath]
-    TR1 8.10 [tr.c99.ios]
-        TR1 8.10.1 [tr.c99.ios.syn]
-        TR1 8.10.2 [tr.c99.ios.hex]
-    TR1 8.11 [tr.c99.cinttypes]
-        TR1 8.11.1 [tr.c99.cinttypes.syn]
-        TR1 8.11.2 [tr.c99.cinttypes.def]
-    TR1 8.12 [tr.c99.inttypesh]
-    TR1 8.13 [tr.c99.climits]
-    TR1 8.14 [tr.c99.limitsh]
-    TR1 8.15 [tr.c99.locale]
-    TR1 8.16 [tr.c99.cmath]
-        TR1 8.16.1 [tr.c99.cmath.syn]
-        TR1 8.16.2 [tr.c99.cmath.def]
-        TR1 8.16.3 [tr.c99.cmath.tmpl]
-        TR1 8.16.4 [tr.c99.cmath.over]
-    TR1 8.17 [tr.c99.mathh]
-    TR1 8.18 [tr.c99.cstdarg]
-    TR1 8.19 [tr.c99.stdargh]
-    TR1 8.20 [tr.c99.cbool]
-    TR1 8.21 [tr.c99.boolh]
-    TR1 8.22 [tr.c99.cstdint]
-        TR1 8.22.1 [tr.c99.cstdint.syn]
-        TR1 8.22.2 [tr.c99.cstdint.def]
-    TR1 8.23 [tr.c99.stdinth]
-    TR1 8.24 [tr.c99.cstdio]
-        TR1 8.24.1 [tr.c99.cstdio.syn]
-        TR1 8.24.2 [tr.c99.cstdio.def]
-        TR1 8.24.3 [tr.c99.cstdio.spec]
-        TR1 8.24.4 [tr.c99.stdioh]
-    TR1 8.25 [tr.c99.cstdlib]
-        TR1 8.25.1 [tr.c99.cstdlib.syn]
-        TR1 8.25.2 [tr.c99.cstdlib.def]
-        TR1 8.25.3 [tr.c99.cstdlib.abs]
-        TR1 8.25.4 [tr.c99.cstdlib.div]
-    TR1 8.26 [tr.c99.stdlibh]
-    TR1 8.27 [tr.c99.ctgmath]
-    TR1 8.28 [tr.c99.tgmathh]
-    TR1 8.29 [tr.c99.ctime]
-    TR1 8.30 [tr.c99.cwchar]
-        TR1 8.30.1 [tr.c99.cwchar.syn]
-        TR1 8.30.2 [tr.c99.cwchar.def]
-        TR1 8.30.3 [tr.c99.cwchar.spec]
-    TR1 8.31 [tr.c99.wcharh]
-    TR1 8.32 [tr.c99.cwctype]
-        TR1 8.32.1 [tr.c99.cwctype.syn]
-        TR1 8.32.2 [tr.c99.cwctype.iswblank]
-    TR1 8.33 [tr.c99.wctypeh]
-TR1 A [tr.limits]
-
-TRDecimal 1 [trdec.intro]
-    TRDecimal 1.1 [trdec.model]
-    TRDecimal 1.2 [trdec.encodings]
-    TRDecimal 1.3 [trdec.refs]
-TRDecimal 2 [trdec.conventions]
-    TRDecimal 2.1 [trdec.relation.intro]
-    TRDecimal 2.2 [trdec.relation.tr1]
-    TRDecimal 2.3 [trdec.categories]
-    TRDecimal 2.4 [trdec.namespace]
-TRDecimal 3 [trdec.types]
-    TRDecimal 3.1 [trdec.types.encodings]
-    TRDecimal 3.2 [trdec.types.types]
-        TRDecimal 3.2.1 [trdec.types.types.synopsis]
-        TRDecimal 3.2.2 [trdec.types.types.decimal32]
-            TRDecimal 3.2.2.1 [trdec.types.types.decimal32.cons]
-            TRDecimal 3.2.2.2 [trdec.types.types.decimal32.conv.float]
-            TRDecimal 3.2.2.3 [trdec.types.types.decimal32.conv.from.int]
-            TRDecimal 3.2.2.4 [trdec.types.types.decimal32.conv.to.int]
-            TRDecimal 3.2.2.5 [trdec.types.types.decimal32.incr]
-            TRDecimal 3.2.2.6 [trdec.types.types.decimal32.comp.ass]
-        TRDecimal 3.2.3 [trdec.types.types.decimal64]
-            TRDecimal 3.2.3.1 [trdec.types.types.decimal64.cons]
-            TRDecimal 3.2.3.2 [trdec.types.types.decimal64.float]
-            TRDecimal 3.2.3.3 [trdec.types.types.decimal64.from.int]
-            TRDecimal 3.2.3.4 [trdec.types.types.decimal64.to.int]
-            TRDecimal 3.2.3.5 [trdec.types.types.decimal64.incr]
-            TRDecimal 3.2.3.6 [trdec.types.types.decimal64.comp.ass]
-        TRDecimal 3.2.4 [trdec.types.types.decimal128]
-            TRDecimal 3.2.4.1 [trdec.types.types.decimal128.cons]
-            TRDecimal 3.2.4.2 [trdec.types.types.decimal128.float]
-            TRDecimal 3.2.4.3 [trdec.types.types.decimal128.from.int]
-            TRDecimal 3.2.4.4 [trdec.types.types.decimal128.to.int]
-            TRDecimal 3.2.4.5 [trdec.types.types.decimal128.incr]
-            TRDecimal 3.2.4.6 [trdec.types.types.decimal128.comp.ass]
-        TRDecimal 3.2.5 [trdec.types.types.init]
-        TRDecimal 3.2.6 [trdec.types.types.conv.float]
-        TRDecimal 3.2.7 [trdec.types.types.unary]
-        TRDecimal 3.2.8 [trdec.types.types.binary]
-        TRDecimal 3.2.9 [trdec.types.types.comp]
-        TRDecimal 3.2.10 [trdec.types.types.input]
-        TRDecimal 3.2.11 [trdec.types.types.output]
-    TRDecimal 3.3 [trdec.types.limits]
-    TRDecimal 3.4 [trdec.types.cdecfloat]
-        TRDecimal 3.4.1 [trdec.types.cdecfloat.synopsis]
-        TRDecimal 3.4.2 [trdec.types.decfloat.h.synopsis]
-        TRDecimal 3.4.3 [trdec.types.cdecfloat.max.value]
-        TRDecimal 3.4.4 [trdec.types.cdecfloat.epsilon]
-        TRDecimal 3.4.5 [trdec.types.cdecfloat.min.normal.value]
-        TRDecimal 3.4.6 [trdec.types.cdecfloat.min.subnormal.value]
-        TRDecimal 3.4.7 [trdec.types.cdecfloat.eval.format]
-    TRDecimal 3.5 [trdec.types.cfenv]
-        TRDecimal 3.5.1 [trdec.types.cfenv.synopsis]
-        TRDecimal 3.5.2 [trdec.types.cfenv.round]
-        TRDecimal 3.5.3 [trdec.types.cfenv.fe_dec_getround]
-        TRDecimal 3.5.4 [trdec.types.cfenv.fe_dec_setround]
-        TRDecimal 3.5.5 [trdec.types.cfenv.fenv.h]
-    TRDecimal 3.6 [trdec.types.cmath]
-        TRDecimal 3.6.1 [trdec.types.cmath.synopsis]
-        TRDecimal 3.6.2 [trdec.types.cmath.macros]
-        TRDecimal 3.6.3 [trdec.types.cmath.eval.format]
-        TRDecimal 3.6.4 [trdec.types.cmath.samequantum]
-        TRDecimal 3.6.5 [trdec.types.cmath.quantize]
-        TRDecimal 3.6.6 [trdec.types.cmath.elementary]
-            TRDecimal 3.6.6.1 [trdec.types.cmath.elementary.abs]
-        TRDecimal 3.6.7 [trdec.types.cmath.math.h]
-            TRDecimal 3.6.7.1 [trdec.types.cmath.math.h.synopsis]
-    TRDecimal 3.7 [trdec.types.cstdio]
-    TRDecimal 3.8 [trdec.types.cstdlib]
-        TRDecimal 3.8.1 [trdec.types.cstdlib.synopsis]
-        TRDecimal 3.8.2 [trdec.types.cstdlib.strtod]
-        TRDecimal 3.8.3 [trdec.types.cstdlib.stdlib.h]
-    TRDecimal 3.9 [trdec.types.cwchar]
-        TRDecimal 3.9.1 [trdec.types.cwchar.synopsis]
-        TRDecimal 3.9.2 [trdec.types.cwchar.wcstod]
-        TRDecimal 3.9.3 [trdec.types.cwchar.wchar.h]
-    TRDecimal 3.10 [trdec.types.facets]
-        TRDecimal 3.10.1 [trdec.types.facets.locale]
-        TRDecimal 3.10.2 [trdec.types.facets.extended_num_get]
-            TRDecimal 3.10.2.1 [trdec.types.facets.extended_num_get.mem]
-            TRDecimal 3.10.2.2 [trdec.types.facets.extended_num_get.virt]
-        TRDecimal 3.10.3 [trdec.types.facets.extended_num_put]
-            TRDecimal 3.10.3.1 [trdec.types.facets.extended_num_put.mem]
-            TRDecimal 3.10.3.2 [trdec.types.facets.extended_num_put.virt]
-    TRDecimal 3.11 [trdec.types.traits]
-        TRDecimal 3.11.1 [trdec.types.traits.synopsis]
-        TRDecimal 3.11.2 [trdec.types.traits.is_decimal_floating_point]
-    TRDecimal 3.12 [trdec.types.hash]
-        TRDecimal 3.12.1 [trdec.types.hash.synopsis]
-        TRDecimal 3.12.2 [trdec.types.hash.spec]
-TRDecimal 4 [trdec.compat]
-    TRDecimal 4.1 [trdec.compat.decfloat.h]
-    TRDecimal 4.2 [trdec.compat.literals]
-    TRDecimal 4.3 [trdec.compat.conv]

Modified: trunk/contrib/llvm/tools/clang/test/lit.cfg
===================================================================
--- trunk/contrib/llvm/tools/clang/test/lit.cfg	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/lit.cfg	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,307 +0,0 @@
-# -*- Python -*-
-
-import os
-import platform
-import re
-import subprocess
-import tempfile
-
-
-# Configuration file for the 'lit' test runner.
-
-# name: The name of this test suite.
-config.name = 'Clang'
-
-# Tweak PATH for Win32
-if platform.system() == 'Windows':
-    # Seek sane tools in directories and set to $PATH.
-    path = getattr(config, 'lit_tools_dir', None)
-    path = lit.getToolsPath(path,
-                            config.environment['PATH'],
-                            ['cmp.exe', 'grep.exe', 'sed.exe'])
-    if path is not None:
-        path = os.path.pathsep.join((path,
-                                     config.environment['PATH']))
-        config.environment['PATH'] = path
-
-# Choose between lit's internal shell pipeline runner and a real shell.  If
-# LIT_USE_INTERNAL_SHELL is in the environment, we use that as an override.
-use_lit_shell = os.environ.get("LIT_USE_INTERNAL_SHELL")
-if use_lit_shell:
-    # 0 is external, "" is default, and everything else is internal.
-    execute_external = (use_lit_shell == "0")
-else:
-    # Otherwise we default to internal on Windows and external elsewhere, as
-    # bash on Windows is usually very slow.
-    execute_external = (not sys.platform in ['win32'])
-
-# testFormat: The test format to use to interpret tests.
-#
-# For now we require '&&' between commands, until they get globally killed and
-# the test runner updated.
-config.test_format = lit.formats.ShTest(execute_external)
-
-# suffixes: A list of file extensions to treat as test files.
-config.suffixes = ['.c', '.cpp', '.m', '.mm', '.cu', '.ll', '.cl', '.s']
-
-# test_source_root: The root path where tests are located.
-config.test_source_root = os.path.dirname(__file__)
-
-# test_exec_root: The root path where tests should be run.
-clang_obj_root = getattr(config, 'clang_obj_root', None)
-if clang_obj_root is not None:
-    config.test_exec_root = os.path.join(clang_obj_root, 'test')
-
-# Set llvm_{src,obj}_root for use by others.
-config.llvm_src_root = getattr(config, 'llvm_src_root', None)
-config.llvm_obj_root = getattr(config, 'llvm_obj_root', None)
-
-# Clear some environment variables that might affect Clang.
-#
-# This first set of vars are read by Clang, but shouldn't affect tests
-# that aren't specifically looking for these features, or are required
-# simply to run the tests at all.
-#
-# FIXME: Should we have a tool that enforces this?
-
-# safe_env_vars = ('TMPDIR', 'TEMP', 'TMP', 'USERPROFILE', 'PWD',
-#                  'MACOSX_DEPLOYMENT_TARGET', 'IPHONEOS_DEPLOYMENT_TARGET',
-#                  'IOS_SIMULATOR_DEPLOYMENT_TARGET',
-#                  'VCINSTALLDIR', 'VC100COMNTOOLS', 'VC90COMNTOOLS',
-#                  'VC80COMNTOOLS')
-possibly_dangerous_env_vars = ['COMPILER_PATH', 'RC_DEBUG_OPTIONS',
-                               'CINDEXTEST_PREAMBLE_FILE', 'LIBRARY_PATH',
-                               'CPATH', 'C_INCLUDE_PATH', 'CPLUS_INCLUDE_PATH',
-                               'OBJC_INCLUDE_PATH', 'OBJCPLUS_INCLUDE_PATH',
-                               'LIBCLANG_TIMING', 'LIBCLANG_OBJTRACKING',
-                               'LIBCLANG_LOGGING', 'LIBCLANG_BGPRIO_INDEX',
-                               'LIBCLANG_BGPRIO_EDIT', 'LIBCLANG_NOTHREADS',
-                               'LIBCLANG_RESOURCE_USAGE',
-                               'LIBCLANG_CODE_COMPLETION_LOGGING']
-# Clang/Win32 may refer to %INCLUDE%. vsvarsall.bat sets it.
-if platform.system() != 'Windows':
-    possibly_dangerous_env_vars.append('INCLUDE')
-for name in possibly_dangerous_env_vars:
-  if name in config.environment:
-    del config.environment[name]
-
-# Tweak the PATH to include the tools dir and the scripts dir.
-if clang_obj_root is not None:
-    llvm_tools_dir = getattr(config, 'llvm_tools_dir', None)
-    if not llvm_tools_dir:
-        lit.fatal('No LLVM tools dir set!')
-    path = os.path.pathsep.join((llvm_tools_dir, config.environment['PATH']))
-    config.environment['PATH'] = path
-    llvm_libs_dir = getattr(config, 'llvm_libs_dir', None)
-    if not llvm_libs_dir:
-        lit.fatal('No LLVM libs dir set!')
-    path = os.path.pathsep.join((llvm_libs_dir,
-                                 config.environment.get('LD_LIBRARY_PATH','')))
-    config.environment['LD_LIBRARY_PATH'] = path
-
-# Propagate path to symbolizer for ASan/MSan.
-for symbolizer in ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']:
-    if symbolizer in os.environ:
-        config.environment[symbolizer] = os.environ[symbolizer]
-
-###
-
-# Check that the object root is known.
-if config.test_exec_root is None:
-    # Otherwise, we haven't loaded the site specific configuration (the user is
-    # probably trying to run on a test file directly, and either the site
-    # configuration hasn't been created by the build system, or we are in an
-    # out-of-tree build situation).
-
-    # Check for 'clang_site_config' user parameter, and use that if available.
-    site_cfg = lit.params.get('clang_site_config', None)
-    if site_cfg and os.path.exists(site_cfg):
-        lit.load_config(config, site_cfg)
-        raise SystemExit
-
-    # Try to detect the situation where we are using an out-of-tree build by
-    # looking for 'llvm-config'.
-    #
-    # FIXME: I debated (i.e., wrote and threw away) adding logic to
-    # automagically generate the lit.site.cfg if we are in some kind of fresh
-    # build situation. This means knowing how to invoke the build system though,
-    # and I decided it was too much magic. We should solve this by just having
-    # the .cfg files generated during the configuration step.
-
-    llvm_config = lit.util.which('llvm-config', config.environment['PATH'])
-    if not llvm_config:
-        lit.fatal('No site specific configuration available!')
-
-    # Get the source and object roots.
-    llvm_src_root = lit.util.capture(['llvm-config', '--src-root']).strip()
-    llvm_obj_root = lit.util.capture(['llvm-config', '--obj-root']).strip()
-    clang_src_root = os.path.join(llvm_src_root, "tools", "clang")
-    clang_obj_root = os.path.join(llvm_obj_root, "tools", "clang")
-
-    # Validate that we got a tree which points to here, using the standard
-    # tools/clang layout.
-    this_src_root = os.path.dirname(config.test_source_root)
-    if os.path.realpath(clang_src_root) != os.path.realpath(this_src_root):
-        lit.fatal('No site specific configuration available!')
-
-    # Check that the site specific configuration exists.
-    site_cfg = os.path.join(clang_obj_root, 'test', 'lit.site.cfg')
-    if not os.path.exists(site_cfg):
-        lit.fatal('No site specific configuration available! You may need to '
-                  'run "make test" in your Clang build directory.')
-
-    # Okay, that worked. Notify the user of the automagic, and reconfigure.
-    lit.note('using out-of-tree build at %r' % clang_obj_root)
-    lit.load_config(config, site_cfg)
-    raise SystemExit
-
-###
-
-# Discover the 'clang' and 'clangcc' to use.
-
-import os
-
-def inferClang(PATH):
-    # Determine which clang to use.
-    clang = os.getenv('CLANG')
-
-    # If the user set clang in the environment, definitely use that and don't
-    # try to validate.
-    if clang:
-        return clang
-
-    # Otherwise look in the path.
-    clang = lit.util.which('clang', PATH)
-
-    if not clang:
-        lit.fatal("couldn't find 'clang' program, try setting "
-                  "CLANG in your environment")
-
-    return clang
-
-config.clang = inferClang(config.environment['PATH']).replace('\\', '/')
-if not lit.quiet:
-    lit.note('using clang: %r' % config.clang)
-
-# Note that when substituting %clang_cc1 also fill in the include directory of
-# the builtin headers. Those are part of even a freestanding environment, but
-# Clang relies on the driver to locate them.
-def getClangBuiltinIncludeDir(clang):
-    # FIXME: Rather than just getting the version, we should have clang print
-    # out its resource dir here in an easy to scrape form.
-    cmd = subprocess.Popen([clang, '-print-file-name=include'],
-                           stdout=subprocess.PIPE)
-    if not cmd.stdout:
-      lit.fatal("Couldn't find the include dir for Clang ('%s')" % clang)
-    return cmd.stdout.read().strip()
-
-config.substitutions.append( ('%clang_cc1', '%s -cc1 -internal-isystem %s'
-                              % (config.clang,
-                                 getClangBuiltinIncludeDir(config.clang))) )
-
-config.substitutions.append( ('%clangxx', ' ' + config.clang +
-                              ' -ccc-cxx '))
-config.substitutions.append( ('%clang', ' ' + config.clang + ' ') )
-config.substitutions.append( ('%test_debuginfo', ' ' + config.llvm_src_root + '/utils/test_debuginfo.pl ') )
-
-# FIXME: Find nicer way to prohibit this.
-config.substitutions.append(
-    (' clang ', """*** Do not use 'clang' in tests, use '%clang'. ***""") )
-config.substitutions.append(
-    (' clang\+\+ ', """*** Do not use 'clang++' in tests, use '%clangxx'. ***"""))
-config.substitutions.append(
-    (' clang-cc ',
-     """*** Do not use 'clang-cc' in tests, use '%clang_cc1'. ***""") )
-config.substitutions.append(
-    (' clang -cc1 ',
-     """*** Do not use 'clang -cc1' in tests, use '%clang_cc1'. ***""") )
-config.substitutions.append(
-    (' %clang-cc1 ',
-     """*** invalid substitution, use '%clang_cc1'. ***""") )
-
-###
-
-# Set available features we allow tests to conditionalize on.
-#
-# As of 2011.08, crash-recovery tests still do not pass on FreeBSD.
-if platform.system() not in ['FreeBSD']:
-    config.available_features.add('crash-recovery')
-
-# Shell execution
-if execute_external:
-    config.available_features.add('shell')
-
-# Exclude MSYS due to transforming '/' to 'X:/mingwroot/'.
-if not platform.system() in ['Windows'] or lit.getBashPath() == '':
-    config.available_features.add('shell-preserves-root')
-
-# ANSI escape sequences in non-dumb terminal
-if platform.system() not in ['Windows']:
-    config.available_features.add('ansi-escape-sequences')
-
-# Case-insensitive file system
-def is_filesystem_case_insensitive():
-    handle, path = tempfile.mkstemp(prefix='case-test', dir=config.test_exec_root)
-    isInsensitive = os.path.exists(path.upper())
-    os.close(handle)
-    os.remove(path)
-    return isInsensitive
-
-if is_filesystem_case_insensitive():
-    config.available_features.add('case-insensitive-filesystem')
-
-# Tests that require the /dev/fd filesystem.
-if os.path.exists("/dev/fd/0") and sys.platform not in ['cygwin']:
-    config.available_features.add('dev-fd-fs')
-
-# [PR8833] LLP64-incompatible tests
-if not re.match(r'^x86_64.*-(win32|mingw32)$', config.target_triple):
-    config.available_features.add('LP64')
-
-# [PR12920] "clang-driver" -- set if gcc driver is not used.
-if not re.match(r'.*-(cygwin|mingw32)$', config.target_triple):
-    config.available_features.add('clang-driver')
-
-# Registered Targets
-def get_llc_props(tool):
-    set_of_targets = set()
-    enable_assertions = False
-
-    cmd = subprocess.Popen([tool, '-version'], stdout=subprocess.PIPE)
-
-    # Parse the stdout to get the list of registered targets.
-    parse_targets = False
-    for line in cmd.stdout:
-        if parse_targets:
-            m = re.match( r'(.*) - ', line)
-            if m is not None:
-                set_of_targets.add(m.group(1).strip() + '-registered-target')
-            else:
-                break
-        elif "Registered Targets:" in line:
-            parse_targets = True
-
-        if re.search(r'with assertions', line):
-            enable_assertions = True
-
-    return {"set_of_targets":    set_of_targets,
-            "enable_assertions": enable_assertions}
-
-llc_props = get_llc_props(os.path.join(llvm_tools_dir, 'llc'))
-if len(llc_props['set_of_targets']) > 0:
-    config.available_features.update(llc_props['set_of_targets'])
-else:
-    lit.fatal('No Targets Registered with the LLVM Tools!')
-
-if llc_props['enable_assertions']:
-    config.available_features.add('asserts')
-
-if lit.util.which('xmllint'):
-    config.available_features.add('xmllint')
-
-# Sanitizers.
-if config.llvm_use_sanitizer == "Address":
-    config.available_features.add("asan")
-if (config.llvm_use_sanitizer == "Memory" or
-        config.llvm_use_sanitizer == "MemoryWithOrigins"):
-    config.available_features.add("msan")

Modified: trunk/contrib/llvm/tools/clang/test/lit.site.cfg.in
===================================================================
--- trunk/contrib/llvm/tools/clang/test/lit.site.cfg.in	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/lit.site.cfg.in	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,22 +0,0 @@
-## Autogenerated by LLVM/Clang configuration.
-# Do not edit!
-config.llvm_src_root = "@LLVM_SOURCE_DIR@"
-config.llvm_obj_root = "@LLVM_BINARY_DIR@"
-config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
-config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
-config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
-config.clang_obj_root = "@CLANG_BINARY_DIR@"
-config.target_triple = "@TARGET_TRIPLE@"
-config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
-
-# Support substitution of the tools and libs dirs with user parameters. This is
-# used when we can't determine the tool dir at configuration time.
-try:
-    config.llvm_tools_dir = config.llvm_tools_dir % lit.params
-    config.llvm_libs_dir = config.llvm_libs_dir % lit.params
-except KeyError,e:
-    key, = e.args
-    lit.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
-
-# Let the main config do the real work.
-lit.load_config(config, "@CLANG_SOURCE_DIR@/test/lit.cfg")

Modified: trunk/contrib/llvm/tools/clang/test/make_test_dirs.pl
===================================================================
--- trunk/contrib/llvm/tools/clang/test/make_test_dirs.pl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/test/make_test_dirs.pl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Simple little Perl script that takes the cxx-sections.data file as
-# input and generates a directory structure that mimics the standard's
-# structure.
-use English;
-
-$current_indent_level = -4;
-while ($line = <STDIN>) {
-  $line =~ /^\s*/;
-  $next_indent_level = length($MATCH);
-  if ($line =~ /\[([^\]]*)\]/) {
-    my $section = $1;
-    while ($next_indent_level < $current_indent_level) {
-      chdir("..");
-      $current_indent_level -= 4;
-    }
-
-    if ($next_indent_level == $current_indent_level) {
-      chdir("..");
-    } else {
-      $current_indent_level = $next_indent_level;
-    }
-    mkdir($section);
-    chdir($section);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/tools/arcmt-test/arcmt-test.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/arcmt-test/arcmt-test.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/arcmt-test/arcmt-test.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,378 +0,0 @@
-//===-- arcmt-test.cpp - ARC Migration Tool testbed -----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/ARCMigrate/ARCMT.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "clang/Frontend/TextDiagnosticPrinter.h"
-#include "clang/Frontend/Utils.h"
-#include "clang/Frontend/VerifyDiagnosticConsumer.h"
-#include "clang/Lex/Preprocessor.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/Signals.h"
-#include "llvm/Support/system_error.h"
-
-using namespace clang;
-using namespace arcmt;
-
-static llvm::cl::opt<bool>
-CheckOnly("check-only",
-      llvm::cl::desc("Just check for issues that need to be handled manually"));
-
-//static llvm::cl::opt<bool>
-//TestResultForARC("test-result",
-//llvm::cl::desc("Test the result of transformations by parsing it in ARC mode"));
-
-static llvm::cl::opt<bool>
-OutputTransformations("output-transformations",
-                      llvm::cl::desc("Print the source transformations"));
-
-static llvm::cl::opt<bool>
-VerifyDiags("verify",llvm::cl::desc("Verify emitted diagnostics and warnings"));
-
-static llvm::cl::opt<bool>
-VerboseOpt("v", llvm::cl::desc("Enable verbose output"));
-
-static llvm::cl::opt<bool>
-VerifyTransformedFiles("verify-transformed-files",
-llvm::cl::desc("Read pairs of file mappings (typically the output of "
-               "c-arcmt-test) and compare their contents with the filenames "
-               "provided in command-line"));
-
-static llvm::cl::opt<std::string>
-RemappingsFile("remappings-file",
-               llvm::cl::desc("Pairs of file mappings (typically the output of "
-               "c-arcmt-test)"));
-
-static llvm::cl::list<std::string>
-ResultFiles(llvm::cl::Positional, llvm::cl::desc("<filename>..."));
-
-static llvm::cl::extrahelp extraHelp(
-  "\nusage with compiler args: arcmt-test [options] --args [compiler flags]\n");
-
-// This function isn't referenced outside its translation unit, but it
-// can't use the "static" keyword because its address is used for
-// GetMainExecutable (since some platforms don't support taking the
-// address of main, and some platforms can't implement GetMainExecutable
-// without being given the address of a function in the main executable).
-llvm::sys::Path GetExecutablePath(const char *Argv0) {
-  // This just needs to be some symbol in the binary; C++ doesn't
-  // allow taking the address of ::main however.
-  void *MainAddr = (void*) (intptr_t) GetExecutablePath;
-  return llvm::sys::Path::GetMainExecutable(Argv0, MainAddr);
-}
-
-static void printSourceLocation(SourceLocation loc, ASTContext &Ctx,
-                                raw_ostream &OS);
-static void printSourceRange(CharSourceRange range, ASTContext &Ctx,
-                             raw_ostream &OS);
-
-namespace {
-
-class PrintTransforms : public MigrationProcess::RewriteListener {
-  ASTContext *Ctx;
-  raw_ostream &OS;
-
-public:
-  PrintTransforms(raw_ostream &OS)
-    : Ctx(0), OS(OS) { }
-
-  virtual void start(ASTContext &ctx) { Ctx = &ctx; }
-  virtual void finish() { Ctx = 0; }
-
-  virtual void insert(SourceLocation loc, StringRef text) {
-    assert(Ctx);
-    OS << "Insert: ";
-    printSourceLocation(loc, *Ctx, OS);
-    OS << " \"" << text << "\"\n";
-  }
-
-  virtual void remove(CharSourceRange range) {
-    assert(Ctx);
-    OS << "Remove: ";
-    printSourceRange(range, *Ctx, OS);
-    OS << '\n';
-  }
-};
-
-} // anonymous namespace
-
-static bool checkForMigration(StringRef resourcesPath,
-                              ArrayRef<const char *> Args) {
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
-  DiagnosticConsumer *DiagClient =
-    new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
-  IntrusiveRefCntPtr<DiagnosticsEngine> Diags(
-      new DiagnosticsEngine(DiagID, &*DiagOpts, DiagClient));
-  // Chain in -verify checker, if requested.
-  VerifyDiagnosticConsumer *verifyDiag = 0;
-  if (VerifyDiags) {
-    verifyDiag = new VerifyDiagnosticConsumer(*Diags);
-    Diags->setClient(verifyDiag);
-  }
-
-  CompilerInvocation CI;
-  if (!CompilerInvocation::CreateFromArgs(CI, Args.begin(), Args.end(), *Diags))
-    return true;
-
-  if (CI.getFrontendOpts().Inputs.empty()) {
-    llvm::errs() << "error: no input files\n";
-    return true;
-  }
-
-  if (!CI.getLangOpts()->ObjC1)
-    return false;
-
-  arcmt::checkForManualIssues(CI, CI.getFrontendOpts().Inputs[0], 
-                              Diags->getClient());
-  return Diags->getClient()->getNumErrors() > 0;
-}
-
-static void printResult(FileRemapper &remapper, raw_ostream &OS) {
-  PreprocessorOptions PPOpts;
-  remapper.applyMappings(PPOpts);
-  // The changed files will be in memory buffers, print them.
-  for (unsigned i = 0, e = PPOpts.RemappedFileBuffers.size(); i != e; ++i) {
-    const llvm::MemoryBuffer *mem = PPOpts.RemappedFileBuffers[i].second;
-    OS << mem->getBuffer();
-  }
-}
-
-static bool performTransformations(StringRef resourcesPath,
-                                   ArrayRef<const char *> Args) {
-  // Check first.
-  if (checkForMigration(resourcesPath, Args))
-    return true;
-
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions();
-  DiagnosticConsumer *DiagClient =
-    new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts);
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
-  IntrusiveRefCntPtr<DiagnosticsEngine> TopDiags(
-      new DiagnosticsEngine(DiagID, &*DiagOpts, &*DiagClient));
-
-  CompilerInvocation origCI;
-  if (!CompilerInvocation::CreateFromArgs(origCI, Args.begin(), Args.end(),
-                                     *TopDiags))
-    return true;
-
-  if (origCI.getFrontendOpts().Inputs.empty()) {
-    llvm::errs() << "error: no input files\n";
-    return true;
-  }
-
-  if (!origCI.getLangOpts()->ObjC1)
-    return false;
-
-  MigrationProcess migration(origCI, DiagClient);
-
-  std::vector<TransformFn>
-    transforms = arcmt::getAllTransformations(origCI.getLangOpts()->getGC(),
-                                 origCI.getMigratorOpts().NoFinalizeRemoval);
-  assert(!transforms.empty());
-
-  OwningPtr<PrintTransforms> transformPrinter;
-  if (OutputTransformations)
-    transformPrinter.reset(new PrintTransforms(llvm::outs()));
-
-  for (unsigned i=0, e = transforms.size(); i != e; ++i) {
-    bool err = migration.applyTransform(transforms[i], transformPrinter.get());
-    if (err) return true;
-
-    if (VerboseOpt) {
-      if (i == e-1)
-        llvm::errs() << "\n##### FINAL RESULT #####\n";
-      else
-        llvm::errs() << "\n##### OUTPUT AFTER "<< i+1 <<". TRANSFORMATION #####\n";
-      printResult(migration.getRemapper(), llvm::errs());
-      llvm::errs() << "\n##########################\n\n";
-    }
-  }
-
-  if (!OutputTransformations)
-    printResult(migration.getRemapper(), llvm::outs());
-
-  // FIXME: TestResultForARC
-
-  return false;
-}
-
-static bool filesCompareEqual(StringRef fname1, StringRef fname2) {
-  using namespace llvm;
-
-  OwningPtr<MemoryBuffer> file1;
-  MemoryBuffer::getFile(fname1, file1);
-  if (!file1)
-    return false;
-  
-  OwningPtr<MemoryBuffer> file2;
-  MemoryBuffer::getFile(fname2, file2);
-  if (!file2)
-    return false;
-
-  return file1->getBuffer() == file2->getBuffer();
-}
-
-static bool verifyTransformedFiles(ArrayRef<std::string> resultFiles) {
-  using namespace llvm;
-
-  assert(!resultFiles.empty());
-
-  std::map<StringRef, StringRef> resultMap;
-
-  for (ArrayRef<std::string>::iterator
-         I = resultFiles.begin(), E = resultFiles.end(); I != E; ++I) {
-    StringRef fname(*I);
-    if (!fname.endswith(".result")) {
-      errs() << "error: filename '" << fname
-                   << "' does not have '.result' extension\n";
-      return true;
-    }
-    resultMap[sys::path::stem(fname)] = fname;
-  }
-
-  OwningPtr<MemoryBuffer> inputBuf;
-  if (RemappingsFile.empty())
-    MemoryBuffer::getSTDIN(inputBuf);
-  else
-    MemoryBuffer::getFile(RemappingsFile, inputBuf);
-  if (!inputBuf) {
-    errs() << "error: could not read remappings input\n";
-    return true;
-  }
-
-  SmallVector<StringRef, 8> strs;
-  inputBuf->getBuffer().split(strs, "\n", /*MaxSplit=*/-1, /*KeepEmpty=*/false);
-
-  if (strs.empty()) {
-    errs() << "error: no files to verify from stdin\n";
-    return true;
-  }
-  if (strs.size() % 2 != 0) {
-    errs() << "error: files to verify are not original/result pairs\n";
-    return true;
-  }
-
-  for (unsigned i = 0, e = strs.size(); i != e; i += 2) {
-    StringRef inputOrigFname = strs[i];
-    StringRef inputResultFname = strs[i+1];
-
-    std::map<StringRef, StringRef>::iterator It;
-    It = resultMap.find(sys::path::filename(inputOrigFname));
-    if (It == resultMap.end()) {
-      errs() << "error: '" << inputOrigFname << "' is not in the list of "
-             << "transformed files to verify\n";
-      return true;
-    }
-
-    bool exists = false;
-    sys::fs::exists(It->second, exists);
-    if (!exists) {
-      errs() << "error: '" << It->second << "' does not exist\n";
-      return true;
-    }
-    sys::fs::exists(inputResultFname, exists);
-    if (!exists) {
-      errs() << "error: '" << inputResultFname << "' does not exist\n";
-      return true;
-    }
-
-    if (!filesCompareEqual(It->second, inputResultFname)) {
-      errs() << "error: '" << It->second << "' is different than "
-             << "'" << inputResultFname << "'\n";
-      return true;
-    }
-
-    resultMap.erase(It);
-  }
-
-  if (!resultMap.empty()) {
-    for (std::map<StringRef, StringRef>::iterator
-           I = resultMap.begin(), E = resultMap.end(); I != E; ++I)
-      errs() << "error: '" << I->second << "' was not verified!\n";
-    return true;
-  }
-
-  return false; 
-}
-
-//===----------------------------------------------------------------------===//
-// Misc. functions.
-//===----------------------------------------------------------------------===//
-
-static void printSourceLocation(SourceLocation loc, ASTContext &Ctx,
-                                raw_ostream &OS) {
-  SourceManager &SM = Ctx.getSourceManager();
-  PresumedLoc PL = SM.getPresumedLoc(loc);
-
-  OS << llvm::sys::path::filename(PL.getFilename());
-  OS << ":" << PL.getLine() << ":"
-            << PL.getColumn();
-}
-
-static void printSourceRange(CharSourceRange range, ASTContext &Ctx,
-                             raw_ostream &OS) {
-  SourceManager &SM = Ctx.getSourceManager();
-  const LangOptions &langOpts = Ctx.getLangOpts();
-
-  PresumedLoc PL = SM.getPresumedLoc(range.getBegin());
-
-  OS << llvm::sys::path::filename(PL.getFilename());
-  OS << " [" << PL.getLine() << ":"
-             << PL.getColumn();
-  OS << " - ";
-
-  SourceLocation end = range.getEnd();
-  PL = SM.getPresumedLoc(end);
-
-  unsigned endCol = PL.getColumn() - 1;
-  if (!range.isTokenRange())
-    endCol += Lexer::MeasureTokenLength(end, SM, langOpts);
-  OS << PL.getLine() << ":" << endCol << "]";
-}
-
-//===----------------------------------------------------------------------===//
-// Command line processing.
-//===----------------------------------------------------------------------===//
-
-int main(int argc, const char **argv) {
-  void *MainAddr = (void*) (intptr_t) GetExecutablePath;
-  llvm::sys::PrintStackTraceOnErrorSignal();
-
-  std::string
-    resourcesPath = CompilerInvocation::GetResourcesPath(argv[0], MainAddr);
-
-  int optargc = 0;
-  for (; optargc != argc; ++optargc) {
-    if (StringRef(argv[optargc]) == "--args")
-      break;
-  }
-  llvm::cl::ParseCommandLineOptions(optargc, argv, "arcmt-test");
-
-  if (VerifyTransformedFiles) {
-    if (ResultFiles.empty()) {
-      llvm::cl::PrintHelpMessage();
-      return 1;
-    }
-    return verifyTransformedFiles(ResultFiles);
-  }
-
-  if (optargc == argc) {
-    llvm::cl::PrintHelpMessage();
-    return 1;
-  }
-
-  ArrayRef<const char*> Args(argv+optargc+1, argc-optargc-1);
-
-  if (CheckOnly)
-    return checkForMigration(resourcesPath, Args);
-
-  return performTransformations(resourcesPath, Args);
-}

Modified: trunk/contrib/llvm/tools/clang/tools/c-arcmt-test/c-arcmt-test.c
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/c-arcmt-test/c-arcmt-test.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/c-arcmt-test/c-arcmt-test.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,123 +0,0 @@
-/* c-arcmt-test.c */
-
-#include "clang-c/Index.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#if defined(_WIN32)
-#include <io.h>
-#include <fcntl.h>
-#endif
-
-static int print_remappings(const char *path) {
-  CXRemapping remap;
-  unsigned i, N;
-  CXString origFname;
-  CXString transFname;
-
-  remap = clang_getRemappings(path);
-  if (!remap)
-    return 1;
-
-  N = clang_remap_getNumFiles(remap);
-  for (i = 0; i != N; ++i) {
-    clang_remap_getFilenames(remap, i, &origFname, &transFname);
-
-    fprintf(stdout, "%s\n", clang_getCString(origFname));
-    fprintf(stdout, "%s\n", clang_getCString(transFname));
-
-    clang_disposeString(origFname);
-    clang_disposeString(transFname);
-  }
-
-  clang_remap_dispose(remap);
-  return 0;
-}
-
-static int print_remappings_filelist(const char **files, unsigned numFiles) {
-  CXRemapping remap;
-  unsigned i, N;
-  CXString origFname;
-  CXString transFname;
-
-  remap = clang_getRemappingsFromFileList(files, numFiles);
-  if (!remap)
-    return 1;
-
-  N = clang_remap_getNumFiles(remap);
-  for (i = 0; i != N; ++i) {
-    clang_remap_getFilenames(remap, i, &origFname, &transFname);
-
-    fprintf(stdout, "%s\n", clang_getCString(origFname));
-    fprintf(stdout, "%s\n", clang_getCString(transFname));
-
-    clang_disposeString(origFname);
-    clang_disposeString(transFname);
-  }
-
-  clang_remap_dispose(remap);
-  return 0;
-}
-
-/******************************************************************************/
-/* Command line processing.                                                   */
-/******************************************************************************/
-
-static void print_usage(void) {
-  fprintf(stderr,
-    "usage: c-arcmt-test -mt-migrate-directory <path>\n"
-    "       c-arcmt-test <remap-file-path1> <remap-file-path2> ...\n\n\n");
-}
-
-/***/
-
-int carcmttest_main(int argc, const char **argv) {
-  clang_enableStackTraces();
-  if (argc == 3 && strncmp(argv[1], "-mt-migrate-directory", 21) == 0)
-    return print_remappings(argv[2]);
-
-  if (argc > 1)
-    return print_remappings_filelist(argv+1, argc-1);
-  
-  print_usage();
-  return 1;
-}
-
-/***/
-
-/* We intentionally run in a separate thread to ensure we at least minimal
- * testing of a multithreaded environment (for example, having a reduced stack
- * size). */
-
-typedef struct thread_info {
-  int argc;
-  const char **argv;
-  int result;
-} thread_info;
-void thread_runner(void *client_data_v) {
-  thread_info *client_data = client_data_v;
-  client_data->result = carcmttest_main(client_data->argc, client_data->argv);
-#ifdef __CYGWIN__
-  fflush(stdout);  /* stdout is not flushed on Cygwin. */
-#endif
-}
-
-int main(int argc, const char **argv) {
-  thread_info client_data;
-
-#if defined(_WIN32)
-  if (getenv("LIBCLANG_LOGGING") == NULL)
-    putenv("LIBCLANG_LOGGING=1");
-  _setmode( _fileno(stdout), _O_BINARY );
-#else
-  setenv("LIBCLANG_LOGGING", "1", /*overwrite=*/0);
-#endif
-
-  if (getenv("CINDEXTEST_NOTHREADS"))
-    return carcmttest_main(argc, argv);
-
-  client_data.argc = argc;
-  client_data.argv = argv;
-  clang_executeOnThread(thread_runner, &client_data, 0);
-  return client_data.result;
-}

Modified: trunk/contrib/llvm/tools/clang/tools/c-index-test/c-index-test.c
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/c-index-test/c-index-test.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/c-index-test/c-index-test.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3909 +0,0 @@
-/* c-index-test.c */
-
-#include "clang-c/Index.h"
-#include "clang-c/CXCompilationDatabase.h"
-#include "llvm/Config/config.h"
-#include <ctype.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-#ifdef CLANG_HAVE_LIBXML
-#include <libxml/parser.h>
-#include <libxml/relaxng.h>
-#include <libxml/xmlerror.h>
-#endif
-
-#ifdef _WIN32
-#  include <direct.h>
-#else
-#  include <unistd.h>
-#endif
-
-/******************************************************************************/
-/* Utility functions.                                                         */
-/******************************************************************************/
-
-#ifdef _MSC_VER
-char *basename(const char* path)
-{
-    char* base1 = (char*)strrchr(path, '/');
-    char* base2 = (char*)strrchr(path, '\\');
-    if (base1 && base2)
-        return((base1 > base2) ? base1 + 1 : base2 + 1);
-    else if (base1)
-        return(base1 + 1);
-    else if (base2)
-        return(base2 + 1);
-
-    return((char*)path);
-}
-char *dirname(char* path)
-{
-    char* base1 = (char*)strrchr(path, '/');
-    char* base2 = (char*)strrchr(path, '\\');
-    if (base1 && base2)
-        if (base1 > base2)
-          *base1 = 0;
-        else
-          *base2 = 0;
-    else if (base1)
-        *base1 = 0;
-    else if (base2)
-        *base2 = 0;
-
-    return path;
-}
-#else
-extern char *basename(const char *);
-extern char *dirname(char *);
-#endif
-
-/** \brief Return the default parsing options. */
-static unsigned getDefaultParsingOptions() {
-  unsigned options = CXTranslationUnit_DetailedPreprocessingRecord;
-
-  if (getenv("CINDEXTEST_EDITING"))
-    options |= clang_defaultEditingTranslationUnitOptions();
-  if (getenv("CINDEXTEST_COMPLETION_CACHING"))
-    options |= CXTranslationUnit_CacheCompletionResults;
-  if (getenv("CINDEXTEST_COMPLETION_NO_CACHING"))
-    options &= ~CXTranslationUnit_CacheCompletionResults;
-  if (getenv("CINDEXTEST_SKIP_FUNCTION_BODIES"))
-    options |= CXTranslationUnit_SkipFunctionBodies;
-  if (getenv("CINDEXTEST_COMPLETION_BRIEF_COMMENTS"))
-    options |= CXTranslationUnit_IncludeBriefCommentsInCodeCompletion;
-  
-  return options;
-}
-
-static int checkForErrors(CXTranslationUnit TU);
-
-static void PrintExtent(FILE *out, unsigned begin_line, unsigned begin_column,
-                        unsigned end_line, unsigned end_column) {
-  fprintf(out, "[%d:%d - %d:%d]", begin_line, begin_column,
-          end_line, end_column);
-}
-
-static unsigned CreateTranslationUnit(CXIndex Idx, const char *file,
-                                      CXTranslationUnit *TU) {
-
-  *TU = clang_createTranslationUnit(Idx, file);
-  if (!*TU) {
-    fprintf(stderr, "Unable to load translation unit from '%s'!\n", file);
-    return 0;
-  }
-  return 1;
-}
-
-void free_remapped_files(struct CXUnsavedFile *unsaved_files,
-                         int num_unsaved_files) {
-  int i;
-  for (i = 0; i != num_unsaved_files; ++i) {
-    free((char *)unsaved_files[i].Filename);
-    free((char *)unsaved_files[i].Contents);
-  }
-  free(unsaved_files);
-}
-
-int parse_remapped_files(int argc, const char **argv, int start_arg,
-                         struct CXUnsavedFile **unsaved_files,
-                         int *num_unsaved_files) {
-  int i;
-  int arg;
-  int prefix_len = strlen("-remap-file=");
-  *unsaved_files = 0;
-  *num_unsaved_files = 0;
-
-  /* Count the number of remapped files. */
-  for (arg = start_arg; arg < argc; ++arg) {
-    if (strncmp(argv[arg], "-remap-file=", prefix_len))
-      break;
-
-    ++*num_unsaved_files;
-  }
-
-  if (*num_unsaved_files == 0)
-    return 0;
-
-  *unsaved_files
-    = (struct CXUnsavedFile *)malloc(sizeof(struct CXUnsavedFile) *
-                                     *num_unsaved_files);
-  for (arg = start_arg, i = 0; i != *num_unsaved_files; ++i, ++arg) {
-    struct CXUnsavedFile *unsaved = *unsaved_files + i;
-    const char *arg_string = argv[arg] + prefix_len;
-    int filename_len;
-    char *filename;
-    char *contents;
-    FILE *to_file;
-    const char *semi = strchr(arg_string, ';');
-    if (!semi) {
-      fprintf(stderr,
-              "error: -remap-file=from;to argument is missing semicolon\n");
-      free_remapped_files(*unsaved_files, i);
-      *unsaved_files = 0;
-      *num_unsaved_files = 0;
-      return -1;
-    }
-
-    /* Open the file that we're remapping to. */
-    to_file = fopen(semi + 1, "rb");
-    if (!to_file) {
-      fprintf(stderr, "error: cannot open file %s that we are remapping to\n",
-              semi + 1);
-      free_remapped_files(*unsaved_files, i);
-      *unsaved_files = 0;
-      *num_unsaved_files = 0;
-      return -1;
-    }
-
-    /* Determine the length of the file we're remapping to. */
-    fseek(to_file, 0, SEEK_END);
-    unsaved->Length = ftell(to_file);
-    fseek(to_file, 0, SEEK_SET);
-
-    /* Read the contents of the file we're remapping to. */
-    contents = (char *)malloc(unsaved->Length + 1);
-    if (fread(contents, 1, unsaved->Length, to_file) != unsaved->Length) {
-      fprintf(stderr, "error: unexpected %s reading 'to' file %s\n",
-              (feof(to_file) ? "EOF" : "error"), semi + 1);
-      fclose(to_file);
-      free_remapped_files(*unsaved_files, i);
-      free(contents);
-      *unsaved_files = 0;
-      *num_unsaved_files = 0;
-      return -1;
-    }
-    contents[unsaved->Length] = 0;
-    unsaved->Contents = contents;
-
-    /* Close the file. */
-    fclose(to_file);
-
-    /* Copy the file name that we're remapping from. */
-    filename_len = semi - arg_string;
-    filename = (char *)malloc(filename_len + 1);
-    memcpy(filename, arg_string, filename_len);
-    filename[filename_len] = 0;
-    unsaved->Filename = filename;
-  }
-
-  return 0;
-}
-
-static const char *parse_comments_schema(int argc, const char **argv) {
-  const char *CommentsSchemaArg = "-comments-xml-schema=";
-  const char *CommentSchemaFile = NULL;
-
-  if (argc == 0)
-    return CommentSchemaFile;
-
-  if (!strncmp(argv[0], CommentsSchemaArg, strlen(CommentsSchemaArg)))
-    CommentSchemaFile = argv[0] + strlen(CommentsSchemaArg);
-
-  return CommentSchemaFile;
-}
-
-/******************************************************************************/
-/* Pretty-printing.                                                           */
-/******************************************************************************/
-
-static const char *FileCheckPrefix = "CHECK";
-
-static void PrintCString(const char *CStr) {
-  if (CStr != NULL && CStr[0] != '\0') {
-    for ( ; *CStr; ++CStr) {
-      const char C = *CStr;
-      switch (C) {
-        case '\n': printf("\\n"); break;
-        case '\r': printf("\\r"); break;
-        case '\t': printf("\\t"); break;
-        case '\v': printf("\\v"); break;
-        case '\f': printf("\\f"); break;
-        default:   putchar(C);    break;
-      }
-    }
-  }
-}
-
-static void PrintCStringWithPrefix(const char *Prefix, const char *CStr) {
-  printf(" %s=[", Prefix);
-  PrintCString(CStr);
-  printf("]");
-}
-
-static void PrintCXStringAndDispose(CXString Str) {
-  PrintCString(clang_getCString(Str));
-  clang_disposeString(Str);
-}
-
-static void PrintCXStringWithPrefix(const char *Prefix, CXString Str) {
-  PrintCStringWithPrefix(Prefix, clang_getCString(Str));
-}
-
-static void PrintCXStringWithPrefixAndDispose(const char *Prefix,
-                                              CXString Str) {
-  PrintCStringWithPrefix(Prefix, clang_getCString(Str));
-  clang_disposeString(Str);
-}
-
-static void PrintRange(CXSourceRange R, const char *str) {
-  CXFile begin_file, end_file;
-  unsigned begin_line, begin_column, end_line, end_column;
-
-  clang_getSpellingLocation(clang_getRangeStart(R),
-                            &begin_file, &begin_line, &begin_column, 0);
-  clang_getSpellingLocation(clang_getRangeEnd(R),
-                            &end_file, &end_line, &end_column, 0);
-  if (!begin_file || !end_file)
-    return;
-
-  if (str)
-    printf(" %s=", str);
-  PrintExtent(stdout, begin_line, begin_column, end_line, end_column);
-}
-
-int want_display_name = 0;
-
-static void printVersion(const char *Prefix, CXVersion Version) {
-  if (Version.Major < 0)
-    return;
-  printf("%s%d", Prefix, Version.Major);
-  
-  if (Version.Minor < 0)
-    return;
-  printf(".%d", Version.Minor);
-
-  if (Version.Subminor < 0)
-    return;
-  printf(".%d", Version.Subminor);
-}
-
-struct CommentASTDumpingContext {
-  int IndentLevel;
-};
-
-static void DumpCXCommentInternal(struct CommentASTDumpingContext *Ctx,
-                                  CXComment Comment) {
-  unsigned i;
-  unsigned e;
-  enum CXCommentKind Kind = clang_Comment_getKind(Comment);
-
-  Ctx->IndentLevel++;
-  for (i = 0, e = Ctx->IndentLevel; i != e; ++i)
-    printf("  ");
-
-  printf("(");
-  switch (Kind) {
-  case CXComment_Null:
-    printf("CXComment_Null");
-    break;
-  case CXComment_Text:
-    printf("CXComment_Text");
-    PrintCXStringWithPrefixAndDispose("Text",
-                                      clang_TextComment_getText(Comment));
-    if (clang_Comment_isWhitespace(Comment))
-      printf(" IsWhitespace");
-    if (clang_InlineContentComment_hasTrailingNewline(Comment))
-      printf(" HasTrailingNewline");
-    break;
-  case CXComment_InlineCommand:
-    printf("CXComment_InlineCommand");
-    PrintCXStringWithPrefixAndDispose(
-        "CommandName",
-        clang_InlineCommandComment_getCommandName(Comment));
-    switch (clang_InlineCommandComment_getRenderKind(Comment)) {
-    case CXCommentInlineCommandRenderKind_Normal:
-      printf(" RenderNormal");
-      break;
-    case CXCommentInlineCommandRenderKind_Bold:
-      printf(" RenderBold");
-      break;
-    case CXCommentInlineCommandRenderKind_Monospaced:
-      printf(" RenderMonospaced");
-      break;
-    case CXCommentInlineCommandRenderKind_Emphasized:
-      printf(" RenderEmphasized");
-      break;
-    }
-    for (i = 0, e = clang_InlineCommandComment_getNumArgs(Comment);
-         i != e; ++i) {
-      printf(" Arg[%u]=", i);
-      PrintCXStringAndDispose(
-          clang_InlineCommandComment_getArgText(Comment, i));
-    }
-    if (clang_InlineContentComment_hasTrailingNewline(Comment))
-      printf(" HasTrailingNewline");
-    break;
-  case CXComment_HTMLStartTag: {
-    unsigned NumAttrs;
-    printf("CXComment_HTMLStartTag");
-    PrintCXStringWithPrefixAndDispose(
-        "Name",
-        clang_HTMLTagComment_getTagName(Comment));
-    NumAttrs = clang_HTMLStartTag_getNumAttrs(Comment);
-    if (NumAttrs != 0) {
-      printf(" Attrs:");
-      for (i = 0; i != NumAttrs; ++i) {
-        printf(" ");
-        PrintCXStringAndDispose(clang_HTMLStartTag_getAttrName(Comment, i));
-        printf("=");
-        PrintCXStringAndDispose(clang_HTMLStartTag_getAttrValue(Comment, i));
-      }
-    }
-    if (clang_HTMLStartTagComment_isSelfClosing(Comment))
-      printf(" SelfClosing");
-    if (clang_InlineContentComment_hasTrailingNewline(Comment))
-      printf(" HasTrailingNewline");
-    break;
-  }
-  case CXComment_HTMLEndTag:
-    printf("CXComment_HTMLEndTag");
-    PrintCXStringWithPrefixAndDispose(
-        "Name",
-        clang_HTMLTagComment_getTagName(Comment));
-    if (clang_InlineContentComment_hasTrailingNewline(Comment))
-      printf(" HasTrailingNewline");
-    break;
-  case CXComment_Paragraph:
-    printf("CXComment_Paragraph");
-    if (clang_Comment_isWhitespace(Comment))
-      printf(" IsWhitespace");
-    break;
-  case CXComment_BlockCommand:
-    printf("CXComment_BlockCommand");
-    PrintCXStringWithPrefixAndDispose(
-        "CommandName",
-        clang_BlockCommandComment_getCommandName(Comment));
-    for (i = 0, e = clang_BlockCommandComment_getNumArgs(Comment);
-         i != e; ++i) {
-      printf(" Arg[%u]=", i);
-      PrintCXStringAndDispose(
-          clang_BlockCommandComment_getArgText(Comment, i));
-    }
-    break;
-  case CXComment_ParamCommand:
-    printf("CXComment_ParamCommand");
-    switch (clang_ParamCommandComment_getDirection(Comment)) {
-    case CXCommentParamPassDirection_In:
-      printf(" in");
-      break;
-    case CXCommentParamPassDirection_Out:
-      printf(" out");
-      break;
-    case CXCommentParamPassDirection_InOut:
-      printf(" in,out");
-      break;
-    }
-    if (clang_ParamCommandComment_isDirectionExplicit(Comment))
-      printf(" explicitly");
-    else
-      printf(" implicitly");
-    PrintCXStringWithPrefixAndDispose(
-        "ParamName",
-        clang_ParamCommandComment_getParamName(Comment));
-    if (clang_ParamCommandComment_isParamIndexValid(Comment))
-      printf(" ParamIndex=%u", clang_ParamCommandComment_getParamIndex(Comment));
-    else
-      printf(" ParamIndex=Invalid");
-    break;
-  case CXComment_TParamCommand:
-    printf("CXComment_TParamCommand");
-    PrintCXStringWithPrefixAndDispose(
-        "ParamName",
-        clang_TParamCommandComment_getParamName(Comment));
-    if (clang_TParamCommandComment_isParamPositionValid(Comment)) {
-      printf(" ParamPosition={");
-      for (i = 0, e = clang_TParamCommandComment_getDepth(Comment);
-           i != e; ++i) {
-        printf("%u", clang_TParamCommandComment_getIndex(Comment, i));
-        if (i != e - 1)
-          printf(", ");
-      }
-      printf("}");
-    } else
-      printf(" ParamPosition=Invalid");
-    break;
-  case CXComment_VerbatimBlockCommand:
-    printf("CXComment_VerbatimBlockCommand");
-    PrintCXStringWithPrefixAndDispose(
-        "CommandName",
-        clang_BlockCommandComment_getCommandName(Comment));
-    break;
-  case CXComment_VerbatimBlockLine:
-    printf("CXComment_VerbatimBlockLine");
-    PrintCXStringWithPrefixAndDispose(
-        "Text",
-        clang_VerbatimBlockLineComment_getText(Comment));
-    break;
-  case CXComment_VerbatimLine:
-    printf("CXComment_VerbatimLine");
-    PrintCXStringWithPrefixAndDispose(
-        "Text",
-        clang_VerbatimLineComment_getText(Comment));
-    break;
-  case CXComment_FullComment:
-    printf("CXComment_FullComment");
-    break;
-  }
-  if (Kind != CXComment_Null) {
-    const unsigned NumChildren = clang_Comment_getNumChildren(Comment);
-    unsigned i;
-    for (i = 0; i != NumChildren; ++i) {
-      printf("\n// %s: ", FileCheckPrefix);
-      DumpCXCommentInternal(Ctx, clang_Comment_getChild(Comment, i));
-    }
-  }
-  printf(")");
-  Ctx->IndentLevel--;
-}
-
-static void DumpCXComment(CXComment Comment) {
-  struct CommentASTDumpingContext Ctx;
-  Ctx.IndentLevel = 1;
-  printf("\n// %s:  CommentAST=[\n// %s:", FileCheckPrefix, FileCheckPrefix);
-  DumpCXCommentInternal(&Ctx, Comment);
-  printf("]");
-}
-
-typedef struct {
-  const char *CommentSchemaFile;
-#ifdef CLANG_HAVE_LIBXML
-  xmlRelaxNGParserCtxtPtr RNGParser;
-  xmlRelaxNGPtr Schema;
-#endif
-} CommentXMLValidationData;
-
-static void ValidateCommentXML(const char *Str,
-                               CommentXMLValidationData *ValidationData) {
-#ifdef CLANG_HAVE_LIBXML
-  xmlDocPtr Doc;
-  xmlRelaxNGValidCtxtPtr ValidationCtxt;
-  int status;
-
-  if (!ValidationData || !ValidationData->CommentSchemaFile)
-    return;
-
-  if (!ValidationData->RNGParser) {
-    ValidationData->RNGParser =
-        xmlRelaxNGNewParserCtxt(ValidationData->CommentSchemaFile);
-    ValidationData->Schema = xmlRelaxNGParse(ValidationData->RNGParser);
-  }
-  if (!ValidationData->RNGParser) {
-    printf(" libXMLError");
-    return;
-  }
-
-  Doc = xmlParseDoc((const xmlChar *) Str);
-
-  if (!Doc) {
-    xmlErrorPtr Error = xmlGetLastError();
-    printf(" CommentXMLInvalid [not well-formed XML: %s]", Error->message);
-    return;
-  }
-
-  ValidationCtxt = xmlRelaxNGNewValidCtxt(ValidationData->Schema);
-  status = xmlRelaxNGValidateDoc(ValidationCtxt, Doc);
-  if (!status)
-    printf(" CommentXMLValid");
-  else if (status > 0) {
-    xmlErrorPtr Error = xmlGetLastError();
-    printf(" CommentXMLInvalid [not vaild XML: %s]", Error->message);
-  } else
-    printf(" libXMLError");
-
-  xmlRelaxNGFreeValidCtxt(ValidationCtxt);
-  xmlFreeDoc(Doc);
-#endif
-}
-
-static void PrintCursorComments(CXCursor Cursor,
-                                CommentXMLValidationData *ValidationData) {
-  {
-    CXString RawComment;
-    const char *RawCommentCString;
-    CXString BriefComment;
-    const char *BriefCommentCString;
-
-    RawComment = clang_Cursor_getRawCommentText(Cursor);
-    RawCommentCString = clang_getCString(RawComment);
-    if (RawCommentCString != NULL && RawCommentCString[0] != '\0') {
-      PrintCStringWithPrefix("RawComment", RawCommentCString);
-      PrintRange(clang_Cursor_getCommentRange(Cursor), "RawCommentRange");
-
-      BriefComment = clang_Cursor_getBriefCommentText(Cursor);
-      BriefCommentCString = clang_getCString(BriefComment);
-      if (BriefCommentCString != NULL && BriefCommentCString[0] != '\0')
-        PrintCStringWithPrefix("BriefComment", BriefCommentCString);
-      clang_disposeString(BriefComment);
-    }
-    clang_disposeString(RawComment);
-  }
-
-  {
-    CXComment Comment = clang_Cursor_getParsedComment(Cursor);
-    if (clang_Comment_getKind(Comment) != CXComment_Null) {
-      PrintCXStringWithPrefixAndDispose("FullCommentAsHTML",
-                                        clang_FullComment_getAsHTML(Comment));
-      {
-        CXString XML;
-        XML = clang_FullComment_getAsXML(Comment);
-        PrintCXStringWithPrefix("FullCommentAsXML", XML);
-        ValidateCommentXML(clang_getCString(XML), ValidationData);
-        clang_disposeString(XML);
-      }
-
-      DumpCXComment(Comment);
-    }
-  }
-}
-
-typedef struct {
-  unsigned line;
-  unsigned col;
-} LineCol;
-
-static int lineCol_cmp(const void *p1, const void *p2) {
-  const LineCol *lhs = p1;
-  const LineCol *rhs = p2;
-  if (lhs->line != rhs->line)
-    return (int)lhs->line - (int)rhs->line;
-  return (int)lhs->col - (int)rhs->col;
-}
-
-static void PrintCursor(CXCursor Cursor,
-                        CommentXMLValidationData *ValidationData) {
-  CXTranslationUnit TU = clang_Cursor_getTranslationUnit(Cursor);
-  if (clang_isInvalid(Cursor.kind)) {
-    CXString ks = clang_getCursorKindSpelling(Cursor.kind);
-    printf("Invalid Cursor => %s", clang_getCString(ks));
-    clang_disposeString(ks);
-  }
-  else {
-    CXString string, ks;
-    CXCursor Referenced;
-    unsigned line, column;
-    CXCursor SpecializationOf;
-    CXCursor *overridden;
-    unsigned num_overridden;
-    unsigned RefNameRangeNr;
-    CXSourceRange CursorExtent;
-    CXSourceRange RefNameRange;
-    int AlwaysUnavailable;
-    int AlwaysDeprecated;
-    CXString UnavailableMessage;
-    CXString DeprecatedMessage;
-    CXPlatformAvailability PlatformAvailability[2];
-    int NumPlatformAvailability;
-    int I;
-
-    ks = clang_getCursorKindSpelling(Cursor.kind);
-    string = want_display_name? clang_getCursorDisplayName(Cursor) 
-                              : clang_getCursorSpelling(Cursor);
-    printf("%s=%s", clang_getCString(ks),
-                    clang_getCString(string));
-    clang_disposeString(ks);
-    clang_disposeString(string);
-
-    Referenced = clang_getCursorReferenced(Cursor);
-    if (!clang_equalCursors(Referenced, clang_getNullCursor())) {
-      if (clang_getCursorKind(Referenced) == CXCursor_OverloadedDeclRef) {
-        unsigned I, N = clang_getNumOverloadedDecls(Referenced);
-        printf("[");
-        for (I = 0; I != N; ++I) {
-          CXCursor Ovl = clang_getOverloadedDecl(Referenced, I);
-          CXSourceLocation Loc;
-          if (I)
-            printf(", ");
-          
-          Loc = clang_getCursorLocation(Ovl);
-          clang_getSpellingLocation(Loc, 0, &line, &column, 0);
-          printf("%d:%d", line, column);          
-        }
-        printf("]");
-      } else {
-        CXSourceLocation Loc = clang_getCursorLocation(Referenced);
-        clang_getSpellingLocation(Loc, 0, &line, &column, 0);
-        printf(":%d:%d", line, column);
-      }
-    }
-
-    if (clang_isCursorDefinition(Cursor))
-      printf(" (Definition)");
-    
-    switch (clang_getCursorAvailability(Cursor)) {
-      case CXAvailability_Available:
-        break;
-        
-      case CXAvailability_Deprecated:
-        printf(" (deprecated)");
-        break;
-        
-      case CXAvailability_NotAvailable:
-        printf(" (unavailable)");
-        break;
-
-      case CXAvailability_NotAccessible:
-        printf(" (inaccessible)");
-        break;
-    }
-    
-    NumPlatformAvailability
-      = clang_getCursorPlatformAvailability(Cursor,
-                                            &AlwaysDeprecated,
-                                            &DeprecatedMessage,
-                                            &AlwaysUnavailable,
-                                            &UnavailableMessage,
-                                            PlatformAvailability, 2);
-    if (AlwaysUnavailable) {
-      printf("  (always unavailable: \"%s\")",
-             clang_getCString(UnavailableMessage));
-    } else if (AlwaysDeprecated) {
-      printf("  (always deprecated: \"%s\")",
-             clang_getCString(DeprecatedMessage));
-    } else {
-      for (I = 0; I != NumPlatformAvailability; ++I) {
-        if (I >= 2)
-          break;
-        
-        printf("  (%s", clang_getCString(PlatformAvailability[I].Platform));
-        if (PlatformAvailability[I].Unavailable)
-          printf(", unavailable");
-        else {
-          printVersion(", introduced=", PlatformAvailability[I].Introduced);
-          printVersion(", deprecated=", PlatformAvailability[I].Deprecated);
-          printVersion(", obsoleted=", PlatformAvailability[I].Obsoleted);
-        }
-        if (clang_getCString(PlatformAvailability[I].Message)[0])
-          printf(", message=\"%s\"",
-                 clang_getCString(PlatformAvailability[I].Message));
-        printf(")");
-      }
-    }
-    for (I = 0; I != NumPlatformAvailability; ++I) {
-      if (I >= 2)
-        break;
-      clang_disposeCXPlatformAvailability(PlatformAvailability + I);
-    }
-    
-    clang_disposeString(DeprecatedMessage);
-    clang_disposeString(UnavailableMessage);
-    
-    if (clang_CXXMethod_isStatic(Cursor))
-      printf(" (static)");
-    if (clang_CXXMethod_isVirtual(Cursor))
-      printf(" (virtual)");
-
-    if (clang_Cursor_isVariadic(Cursor))
-      printf(" (variadic)");
-    
-    if (Cursor.kind == CXCursor_IBOutletCollectionAttr) {
-      CXType T =
-        clang_getCanonicalType(clang_getIBOutletCollectionType(Cursor));
-      CXString S = clang_getTypeKindSpelling(T.kind);
-      printf(" [IBOutletCollection=%s]", clang_getCString(S));
-      clang_disposeString(S);
-    }
-    
-    if (Cursor.kind == CXCursor_CXXBaseSpecifier) {
-      enum CX_CXXAccessSpecifier access = clang_getCXXAccessSpecifier(Cursor);
-      unsigned isVirtual = clang_isVirtualBase(Cursor);
-      const char *accessStr = 0;
-
-      switch (access) {
-        case CX_CXXInvalidAccessSpecifier:
-          accessStr = "invalid"; break;
-        case CX_CXXPublic:
-          accessStr = "public"; break;
-        case CX_CXXProtected:
-          accessStr = "protected"; break;
-        case CX_CXXPrivate:
-          accessStr = "private"; break;
-      }      
-      
-      printf(" [access=%s isVirtual=%s]", accessStr,
-             isVirtual ? "true" : "false");
-    }
-    
-    SpecializationOf = clang_getSpecializedCursorTemplate(Cursor);
-    if (!clang_equalCursors(SpecializationOf, clang_getNullCursor())) {
-      CXSourceLocation Loc = clang_getCursorLocation(SpecializationOf);
-      CXString Name = clang_getCursorSpelling(SpecializationOf);
-      clang_getSpellingLocation(Loc, 0, &line, &column, 0);
-      printf(" [Specialization of %s:%d:%d]", 
-             clang_getCString(Name), line, column);
-      clang_disposeString(Name);
-    }
-
-    clang_getOverriddenCursors(Cursor, &overridden, &num_overridden);
-    if (num_overridden) {      
-      unsigned I;
-      LineCol lineCols[50];
-      assert(num_overridden <= 50);
-      printf(" [Overrides ");
-      for (I = 0; I != num_overridden; ++I) {
-        CXSourceLocation Loc = clang_getCursorLocation(overridden[I]);
-        clang_getSpellingLocation(Loc, 0, &line, &column, 0);
-        lineCols[I].line = line;
-        lineCols[I].col = column;
-      }
-      /* Make the order of the override list deterministic. */
-      qsort(lineCols, num_overridden, sizeof(LineCol), lineCol_cmp);
-      for (I = 0; I != num_overridden; ++I) {
-        if (I)
-          printf(", ");
-        printf("@%d:%d", lineCols[I].line, lineCols[I].col);
-      }
-      printf("]");
-      clang_disposeOverriddenCursors(overridden);
-    }
-    
-    if (Cursor.kind == CXCursor_InclusionDirective) {
-      CXFile File = clang_getIncludedFile(Cursor);
-      CXString Included = clang_getFileName(File);
-      printf(" (%s)", clang_getCString(Included));
-      clang_disposeString(Included);
-      
-      if (clang_isFileMultipleIncludeGuarded(TU, File))
-        printf("  [multi-include guarded]");
-    }
-    
-    CursorExtent = clang_getCursorExtent(Cursor);
-    RefNameRange = clang_getCursorReferenceNameRange(Cursor, 
-                                                   CXNameRange_WantQualifier
-                                                 | CXNameRange_WantSinglePiece
-                                                 | CXNameRange_WantTemplateArgs,
-                                                     0);
-    if (!clang_equalRanges(CursorExtent, RefNameRange))
-      PrintRange(RefNameRange, "SingleRefName");
-    
-    for (RefNameRangeNr = 0; 1; RefNameRangeNr++) {
-      RefNameRange = clang_getCursorReferenceNameRange(Cursor, 
-                                                   CXNameRange_WantQualifier
-                                                 | CXNameRange_WantTemplateArgs,
-                                                       RefNameRangeNr);
-      if (clang_equalRanges(clang_getNullRange(), RefNameRange))
-        break;
-      if (!clang_equalRanges(CursorExtent, RefNameRange))
-        PrintRange(RefNameRange, "RefName");
-    }
-
-    PrintCursorComments(Cursor, ValidationData);
-
-    {
-      unsigned PropAttrs = clang_Cursor_getObjCPropertyAttributes(Cursor, 0);
-      if (PropAttrs != CXObjCPropertyAttr_noattr) {
-        printf(" [");
-        #define PRINT_PROP_ATTR(A) \
-          if (PropAttrs & CXObjCPropertyAttr_##A) printf(#A ",")
-        PRINT_PROP_ATTR(readonly);
-        PRINT_PROP_ATTR(getter);
-        PRINT_PROP_ATTR(assign);
-        PRINT_PROP_ATTR(readwrite);
-        PRINT_PROP_ATTR(retain);
-        PRINT_PROP_ATTR(copy);
-        PRINT_PROP_ATTR(nonatomic);
-        PRINT_PROP_ATTR(setter);
-        PRINT_PROP_ATTR(atomic);
-        PRINT_PROP_ATTR(weak);
-        PRINT_PROP_ATTR(strong);
-        PRINT_PROP_ATTR(unsafe_unretained);
-        printf("]");
-      }
-    }
-
-    {
-      unsigned QT = clang_Cursor_getObjCDeclQualifiers(Cursor);
-      if (QT != CXObjCDeclQualifier_None) {
-        printf(" [");
-        #define PRINT_OBJC_QUAL(A) \
-          if (QT & CXObjCDeclQualifier_##A) printf(#A ",")
-        PRINT_OBJC_QUAL(In);
-        PRINT_OBJC_QUAL(Inout);
-        PRINT_OBJC_QUAL(Out);
-        PRINT_OBJC_QUAL(Bycopy);
-        PRINT_OBJC_QUAL(Byref);
-        PRINT_OBJC_QUAL(Oneway);
-        printf("]");
-      }
-    }
-  }
-}
-
-static const char* GetCursorSource(CXCursor Cursor) {
-  CXSourceLocation Loc = clang_getCursorLocation(Cursor);
-  CXString source;
-  CXFile file;
-  clang_getExpansionLocation(Loc, &file, 0, 0, 0);
-  source = clang_getFileName(file);
-  if (!clang_getCString(source)) {
-    clang_disposeString(source);
-    return "<invalid loc>";
-  }
-  else {
-    const char *b = basename(clang_getCString(source));
-    clang_disposeString(source);
-    return b;
-  }
-}
-
-/******************************************************************************/
-/* Callbacks.                                                                 */
-/******************************************************************************/
-
-typedef void (*PostVisitTU)(CXTranslationUnit);
-
-void PrintDiagnostic(CXDiagnostic Diagnostic) {
-  FILE *out = stderr;
-  CXFile file;
-  CXString Msg;
-  unsigned display_opts = CXDiagnostic_DisplaySourceLocation
-    | CXDiagnostic_DisplayColumn | CXDiagnostic_DisplaySourceRanges
-    | CXDiagnostic_DisplayOption;
-  unsigned i, num_fixits;
-
-  if (clang_getDiagnosticSeverity(Diagnostic) == CXDiagnostic_Ignored)
-    return;
-
-  Msg = clang_formatDiagnostic(Diagnostic, display_opts);
-  fprintf(stderr, "%s\n", clang_getCString(Msg));
-  clang_disposeString(Msg);
-
-  clang_getSpellingLocation(clang_getDiagnosticLocation(Diagnostic),
-                            &file, 0, 0, 0);
-  if (!file)
-    return;
-
-  num_fixits = clang_getDiagnosticNumFixIts(Diagnostic);
-  fprintf(stderr, "Number FIX-ITs = %d\n", num_fixits);
-  for (i = 0; i != num_fixits; ++i) {
-    CXSourceRange range;
-    CXString insertion_text = clang_getDiagnosticFixIt(Diagnostic, i, &range);
-    CXSourceLocation start = clang_getRangeStart(range);
-    CXSourceLocation end = clang_getRangeEnd(range);
-    unsigned start_line, start_column, end_line, end_column;
-    CXFile start_file, end_file;
-    clang_getSpellingLocation(start, &start_file, &start_line,
-                              &start_column, 0);
-    clang_getSpellingLocation(end, &end_file, &end_line, &end_column, 0);
-    if (clang_equalLocations(start, end)) {
-      /* Insertion. */
-      if (start_file == file)
-        fprintf(out, "FIX-IT: Insert \"%s\" at %d:%d\n",
-                clang_getCString(insertion_text), start_line, start_column);
-    } else if (strcmp(clang_getCString(insertion_text), "") == 0) {
-      /* Removal. */
-      if (start_file == file && end_file == file) {
-        fprintf(out, "FIX-IT: Remove ");
-        PrintExtent(out, start_line, start_column, end_line, end_column);
-        fprintf(out, "\n");
-      }
-    } else {
-      /* Replacement. */
-      if (start_file == end_file) {
-        fprintf(out, "FIX-IT: Replace ");
-        PrintExtent(out, start_line, start_column, end_line, end_column);
-        fprintf(out, " with \"%s\"\n", clang_getCString(insertion_text));
-      }
-      break;
-    }
-    clang_disposeString(insertion_text);
-  }
-}
-
-void PrintDiagnosticSet(CXDiagnosticSet Set) {
-  int i = 0, n = clang_getNumDiagnosticsInSet(Set);
-  for ( ; i != n ; ++i) {
-    CXDiagnostic Diag = clang_getDiagnosticInSet(Set, i);
-    CXDiagnosticSet ChildDiags = clang_getChildDiagnostics(Diag);
-    PrintDiagnostic(Diag);
-    if (ChildDiags)
-      PrintDiagnosticSet(ChildDiags);
-  }  
-}
-
-void PrintDiagnostics(CXTranslationUnit TU) {
-  CXDiagnosticSet TUSet = clang_getDiagnosticSetFromTU(TU);
-  PrintDiagnosticSet(TUSet);
-  clang_disposeDiagnosticSet(TUSet);
-}
-
-void PrintMemoryUsage(CXTranslationUnit TU) {
-  unsigned long total = 0;
-  unsigned i = 0;
-  CXTUResourceUsage usage = clang_getCXTUResourceUsage(TU);
-  fprintf(stderr, "Memory usage:\n");
-  for (i = 0 ; i != usage.numEntries; ++i) {
-    const char *name = clang_getTUResourceUsageName(usage.entries[i].kind);
-    unsigned long amount = usage.entries[i].amount;
-    total += amount;
-    fprintf(stderr, "  %s : %ld bytes (%f MBytes)\n", name, amount,
-            ((double) amount)/(1024*1024));
-  }
-  fprintf(stderr, "  TOTAL = %ld bytes (%f MBytes)\n", total,
-          ((double) total)/(1024*1024));
-  clang_disposeCXTUResourceUsage(usage);  
-}
-
-/******************************************************************************/
-/* Logic for testing traversal.                                               */
-/******************************************************************************/
-
-static void PrintCursorExtent(CXCursor C) {
-  CXSourceRange extent = clang_getCursorExtent(C);
-  PrintRange(extent, "Extent");
-}
-
-/* Data used by the visitors. */
-typedef struct {
-  CXTranslationUnit TU;
-  enum CXCursorKind *Filter;
-  CommentXMLValidationData ValidationData;
-} VisitorData;
-
-
-enum CXChildVisitResult FilteredPrintingVisitor(CXCursor Cursor,
-                                                CXCursor Parent,
-                                                CXClientData ClientData) {
-  VisitorData *Data = (VisitorData *)ClientData;
-  if (!Data->Filter || (Cursor.kind == *(enum CXCursorKind *)Data->Filter)) {
-    CXSourceLocation Loc = clang_getCursorLocation(Cursor);
-    unsigned line, column;
-    clang_getSpellingLocation(Loc, 0, &line, &column, 0);
-    printf("// %s: %s:%d:%d: ", FileCheckPrefix,
-           GetCursorSource(Cursor), line, column);
-    PrintCursor(Cursor, &Data->ValidationData);
-    PrintCursorExtent(Cursor);
-    if (clang_isDeclaration(Cursor.kind)) {
-      enum CX_CXXAccessSpecifier access = clang_getCXXAccessSpecifier(Cursor);
-      const char *accessStr = 0;
-
-      switch (access) {
-        case CX_CXXInvalidAccessSpecifier: break;
-        case CX_CXXPublic:
-          accessStr = "public"; break;
-        case CX_CXXProtected:
-          accessStr = "protected"; break;
-        case CX_CXXPrivate:
-          accessStr = "private"; break;
-      }
-
-      if (accessStr)
-        printf(" [access=%s]", accessStr);
-    }
-    printf("\n");
-    return CXChildVisit_Recurse;
-  }
-
-  return CXChildVisit_Continue;
-}
-
-static enum CXChildVisitResult FunctionScanVisitor(CXCursor Cursor,
-                                                   CXCursor Parent,
-                                                   CXClientData ClientData) {
-  const char *startBuf, *endBuf;
-  unsigned startLine, startColumn, endLine, endColumn, curLine, curColumn;
-  CXCursor Ref;
-  VisitorData *Data = (VisitorData *)ClientData;
-
-  if (Cursor.kind != CXCursor_FunctionDecl ||
-      !clang_isCursorDefinition(Cursor))
-    return CXChildVisit_Continue;
-
-  clang_getDefinitionSpellingAndExtent(Cursor, &startBuf, &endBuf,
-                                       &startLine, &startColumn,
-                                       &endLine, &endColumn);
-  /* Probe the entire body, looking for both decls and refs. */
-  curLine = startLine;
-  curColumn = startColumn;
-
-  while (startBuf < endBuf) {
-    CXSourceLocation Loc;
-    CXFile file;
-    CXString source;
-
-    if (*startBuf == '\n') {
-      startBuf++;
-      curLine++;
-      curColumn = 1;
-    } else if (*startBuf != '\t')
-      curColumn++;
-
-    Loc = clang_getCursorLocation(Cursor);
-    clang_getSpellingLocation(Loc, &file, 0, 0, 0);
-
-    source = clang_getFileName(file);
-    if (clang_getCString(source)) {
-      CXSourceLocation RefLoc
-        = clang_getLocation(Data->TU, file, curLine, curColumn);
-      Ref = clang_getCursor(Data->TU, RefLoc);
-      if (Ref.kind == CXCursor_NoDeclFound) {
-        /* Nothing found here; that's fine. */
-      } else if (Ref.kind != CXCursor_FunctionDecl) {
-        printf("// %s: %s:%d:%d: ", FileCheckPrefix, GetCursorSource(Ref),
-               curLine, curColumn);
-        PrintCursor(Ref, &Data->ValidationData);
-        printf("\n");
-      }
-    }
-    clang_disposeString(source);
-    startBuf++;
-  }
-
-  return CXChildVisit_Continue;
-}
-
-/******************************************************************************/
-/* USR testing.                                                               */
-/******************************************************************************/
-
-enum CXChildVisitResult USRVisitor(CXCursor C, CXCursor parent,
-                                   CXClientData ClientData) {
-  VisitorData *Data = (VisitorData *)ClientData;
-  if (!Data->Filter || (C.kind == *(enum CXCursorKind *)Data->Filter)) {
-    CXString USR = clang_getCursorUSR(C);
-    const char *cstr = clang_getCString(USR);
-    if (!cstr || cstr[0] == '\0') {
-      clang_disposeString(USR);
-      return CXChildVisit_Recurse;
-    }
-    printf("// %s: %s %s", FileCheckPrefix, GetCursorSource(C), cstr);
-
-    PrintCursorExtent(C);
-    printf("\n");
-    clang_disposeString(USR);
-
-    return CXChildVisit_Recurse;
-  }
-
-  return CXChildVisit_Continue;
-}
-
-/******************************************************************************/
-/* Inclusion stack testing.                                                   */
-/******************************************************************************/
-
-void InclusionVisitor(CXFile includedFile, CXSourceLocation *includeStack,
-                      unsigned includeStackLen, CXClientData data) {
-
-  unsigned i;
-  CXString fname;
-
-  fname = clang_getFileName(includedFile);
-  printf("file: %s\nincluded by:\n", clang_getCString(fname));
-  clang_disposeString(fname);
-
-  for (i = 0; i < includeStackLen; ++i) {
-    CXFile includingFile;
-    unsigned line, column;
-    clang_getSpellingLocation(includeStack[i], &includingFile, &line,
-                              &column, 0);
-    fname = clang_getFileName(includingFile);
-    printf("  %s:%d:%d\n", clang_getCString(fname), line, column);
-    clang_disposeString(fname);
-  }
-  printf("\n");
-}
-
-void PrintInclusionStack(CXTranslationUnit TU) {
-  clang_getInclusions(TU, InclusionVisitor, NULL);
-}
-
-/******************************************************************************/
-/* Linkage testing.                                                           */
-/******************************************************************************/
-
-static enum CXChildVisitResult PrintLinkage(CXCursor cursor, CXCursor p,
-                                            CXClientData d) {
-  const char *linkage = 0;
-
-  if (clang_isInvalid(clang_getCursorKind(cursor)))
-    return CXChildVisit_Recurse;
-
-  switch (clang_getCursorLinkage(cursor)) {
-    case CXLinkage_Invalid: break;
-    case CXLinkage_NoLinkage: linkage = "NoLinkage"; break;
-    case CXLinkage_Internal: linkage = "Internal"; break;
-    case CXLinkage_UniqueExternal: linkage = "UniqueExternal"; break;
-    case CXLinkage_External: linkage = "External"; break;
-  }
-
-  if (linkage) {
-    PrintCursor(cursor, NULL);
-    printf("linkage=%s\n", linkage);
-  }
-
-  return CXChildVisit_Recurse;
-}
-
-/******************************************************************************/
-/* Typekind testing.                                                          */
-/******************************************************************************/
-
-static void PrintTypeAndTypeKind(CXType T, const char *Format) {
-  CXString TypeSpelling, TypeKindSpelling;
-
-  TypeSpelling = clang_getTypeSpelling(T);
-  TypeKindSpelling = clang_getTypeKindSpelling(T.kind);
-  printf(Format,
-         clang_getCString(TypeSpelling),
-         clang_getCString(TypeKindSpelling));
-  clang_disposeString(TypeSpelling);
-  clang_disposeString(TypeKindSpelling);
-}
-
-static enum CXChildVisitResult PrintType(CXCursor cursor, CXCursor p,
-                                         CXClientData d) {
-  if (!clang_isInvalid(clang_getCursorKind(cursor))) {
-    CXType T = clang_getCursorType(cursor);
-    PrintCursor(cursor, NULL);
-    PrintTypeAndTypeKind(T, " [type=%s] [typekind=%s]");
-    if (clang_isConstQualifiedType(T))
-      printf(" const");
-    if (clang_isVolatileQualifiedType(T))
-      printf(" volatile");
-    if (clang_isRestrictQualifiedType(T))
-      printf(" restrict");
-    /* Print the canonical type if it is different. */
-    {
-      CXType CT = clang_getCanonicalType(T);
-      if (!clang_equalTypes(T, CT)) {
-        PrintTypeAndTypeKind(CT, " [canonicaltype=%s] [canonicaltypekind=%s]");
-      }
-    }
-    /* Print the return type if it exists. */
-    {
-      CXType RT = clang_getCursorResultType(cursor);
-      if (RT.kind != CXType_Invalid) {
-        PrintTypeAndTypeKind(RT, " [resulttype=%s] [resulttypekind=%s]");
-      }
-    }
-    /* Print the argument types if they exist. */
-    {
-      int numArgs = clang_Cursor_getNumArguments(cursor);
-      if (numArgs != -1 && numArgs != 0) {
-        int i;
-        printf(" [args=");
-        for (i = 0; i < numArgs; ++i) {
-          CXType T = clang_getCursorType(clang_Cursor_getArgument(cursor, i));
-          if (T.kind != CXType_Invalid) {
-            PrintTypeAndTypeKind(T, " [%s] [%s]");
-          }
-        }
-        printf("]");
-      }
-    }
-    /* Print if this is a non-POD type. */
-    printf(" [isPOD=%d]", clang_isPODType(T));
-
-    printf("\n");
-  }
-  return CXChildVisit_Recurse;
-}
-
-static enum CXChildVisitResult PrintTypeSize(CXCursor cursor, CXCursor p,
-                                             CXClientData d) {
-  CXType T;
-  enum CXCursorKind K = clang_getCursorKind(cursor);
-  if (clang_isInvalid(K))
-    return CXChildVisit_Recurse;
-  T = clang_getCursorType(cursor);
-  PrintCursor(cursor, NULL);
-  PrintTypeAndTypeKind(T, " [type=%s] [typekind=%s]");
-  /* Print the type sizeof if applicable. */
-  {
-    long long Size = clang_Type_getSizeOf(T);
-    if (Size >= 0 || Size < -1 ) {
-      printf(" [sizeof=%lld]", Size);
-    }
-  }
-  /* Print the type alignof if applicable. */
-  {
-    long long Align = clang_Type_getAlignOf(T);
-    if (Align >= 0 || Align < -1) {
-      printf(" [alignof=%lld]", Align);
-    }
-  }
-  /* Print the record field offset if applicable. */
-  {
-    const char *FieldName = clang_getCString(clang_getCursorSpelling(cursor));
-    /* recurse to get the root anonymous record parent */
-    CXCursor Parent, Root;
-    if (clang_getCursorKind(cursor) == CXCursor_FieldDecl ) {
-      const char *RootParentName;
-      Root = Parent = p;
-      do {
-        Root = Parent;
-        RootParentName = clang_getCString(clang_getCursorSpelling(Root));
-        Parent = clang_getCursorSemanticParent(Root);
-      } while ( clang_getCursorType(Parent).kind == CXType_Record &&
-                !strcmp(RootParentName, "") );
-      /* if RootParentName is "", record is anonymous. */
-      {
-        long long Offset = clang_Type_getOffsetOf(clang_getCursorType(Root),
-                                                  FieldName);
-        printf(" [offsetof=%lld]", Offset);
-      }
-    }
-  }
-  /* Print if its a bitfield */
-  {
-    int IsBitfield = clang_Cursor_isBitField(cursor);
-    if (IsBitfield)
-      printf(" [BitFieldSize=%d]", clang_getFieldDeclBitWidth(cursor));
-  }
-  printf("\n");
-  return CXChildVisit_Recurse;
-}
-
-/******************************************************************************/
-/* Bitwidth testing.                                                          */
-/******************************************************************************/
-
-static enum CXChildVisitResult PrintBitWidth(CXCursor cursor, CXCursor p,
-                                             CXClientData d) {
-  int Bitwidth;
-  if (clang_getCursorKind(cursor) != CXCursor_FieldDecl)
-    return CXChildVisit_Recurse;
-
-  Bitwidth = clang_getFieldDeclBitWidth(cursor);
-  if (Bitwidth >= 0) {
-    PrintCursor(cursor, NULL);
-    printf(" bitwidth=%d\n", Bitwidth);
-  }
-
-  return CXChildVisit_Recurse;
-}
-
-/******************************************************************************/
-/* Loading ASTs/source.                                                       */
-/******************************************************************************/
-
-static int perform_test_load(CXIndex Idx, CXTranslationUnit TU,
-                             const char *filter, const char *prefix,
-                             CXCursorVisitor Visitor,
-                             PostVisitTU PV,
-                             const char *CommentSchemaFile) {
-
-  if (prefix)
-    FileCheckPrefix = prefix;
-
-  if (Visitor) {
-    enum CXCursorKind K = CXCursor_NotImplemented;
-    enum CXCursorKind *ck = &K;
-    VisitorData Data;
-
-    /* Perform some simple filtering. */
-    if (!strcmp(filter, "all") || !strcmp(filter, "local")) ck = NULL;
-    else if (!strcmp(filter, "all-display") || 
-             !strcmp(filter, "local-display")) {
-      ck = NULL;
-      want_display_name = 1;
-    }
-    else if (!strcmp(filter, "none")) K = (enum CXCursorKind) ~0;
-    else if (!strcmp(filter, "category")) K = CXCursor_ObjCCategoryDecl;
-    else if (!strcmp(filter, "interface")) K = CXCursor_ObjCInterfaceDecl;
-    else if (!strcmp(filter, "protocol")) K = CXCursor_ObjCProtocolDecl;
-    else if (!strcmp(filter, "function")) K = CXCursor_FunctionDecl;
-    else if (!strcmp(filter, "typedef")) K = CXCursor_TypedefDecl;
-    else if (!strcmp(filter, "scan-function")) Visitor = FunctionScanVisitor;
-    else {
-      fprintf(stderr, "Unknown filter for -test-load-tu: %s\n", filter);
-      return 1;
-    }
-
-    Data.TU = TU;
-    Data.Filter = ck;
-    Data.ValidationData.CommentSchemaFile = CommentSchemaFile;
-#ifdef CLANG_HAVE_LIBXML
-    Data.ValidationData.RNGParser = NULL;
-    Data.ValidationData.Schema = NULL;
-#endif
-    clang_visitChildren(clang_getTranslationUnitCursor(TU), Visitor, &Data);
-  }
-
-  if (PV)
-    PV(TU);
-
-  PrintDiagnostics(TU);
-  if (checkForErrors(TU) != 0) {
-    clang_disposeTranslationUnit(TU);
-    return -1;
-  }
-
-  clang_disposeTranslationUnit(TU);
-  return 0;
-}
-
-int perform_test_load_tu(const char *file, const char *filter,
-                         const char *prefix, CXCursorVisitor Visitor,
-                         PostVisitTU PV) {
-  CXIndex Idx;
-  CXTranslationUnit TU;
-  int result;
-  Idx = clang_createIndex(/* excludeDeclsFromPCH */
-                          !strcmp(filter, "local") ? 1 : 0,
-                          /* displayDiagnostics=*/1);
-
-  if (!CreateTranslationUnit(Idx, file, &TU)) {
-    clang_disposeIndex(Idx);
-    return 1;
-  }
-
-  result = perform_test_load(Idx, TU, filter, prefix, Visitor, PV, NULL);
-  clang_disposeIndex(Idx);
-  return result;
-}
-
-int perform_test_load_source(int argc, const char **argv,
-                             const char *filter, CXCursorVisitor Visitor,
-                             PostVisitTU PV) {
-  CXIndex Idx;
-  CXTranslationUnit TU;
-  const char *CommentSchemaFile;
-  struct CXUnsavedFile *unsaved_files = 0;
-  int num_unsaved_files = 0;
-  int result;
-  
-  Idx = clang_createIndex(/* excludeDeclsFromPCH */
-                          (!strcmp(filter, "local") || 
-                           !strcmp(filter, "local-display"))? 1 : 0,
-                          /* displayDiagnostics=*/1);
-
-  if ((CommentSchemaFile = parse_comments_schema(argc, argv))) {
-    argc--;
-    argv++;
-  }
-
-  if (parse_remapped_files(argc, argv, 0, &unsaved_files, &num_unsaved_files)) {
-    clang_disposeIndex(Idx);
-    return -1;
-  }
-
-  TU = clang_parseTranslationUnit(Idx, 0,
-                                  argv + num_unsaved_files,
-                                  argc - num_unsaved_files,
-                                  unsaved_files, num_unsaved_files, 
-                                  getDefaultParsingOptions());
-  if (!TU) {
-    fprintf(stderr, "Unable to load translation unit!\n");
-    free_remapped_files(unsaved_files, num_unsaved_files);
-    clang_disposeIndex(Idx);
-    return 1;
-  }
-
-  result = perform_test_load(Idx, TU, filter, NULL, Visitor, PV,
-                             CommentSchemaFile);
-  free_remapped_files(unsaved_files, num_unsaved_files);
-  clang_disposeIndex(Idx);
-  return result;
-}
-
-int perform_test_reparse_source(int argc, const char **argv, int trials,
-                                const char *filter, CXCursorVisitor Visitor,
-                                PostVisitTU PV) {
-  CXIndex Idx;
-  CXTranslationUnit TU;
-  struct CXUnsavedFile *unsaved_files = 0;
-  int num_unsaved_files = 0;
-  int result;
-  int trial;
-  int remap_after_trial = 0;
-  char *endptr = 0;
-  
-  Idx = clang_createIndex(/* excludeDeclsFromPCH */
-                          !strcmp(filter, "local") ? 1 : 0,
-                          /* displayDiagnostics=*/1);
-  
-  if (parse_remapped_files(argc, argv, 0, &unsaved_files, &num_unsaved_files)) {
-    clang_disposeIndex(Idx);
-    return -1;
-  }
-  
-  /* Load the initial translation unit -- we do this without honoring remapped
-   * files, so that we have a way to test results after changing the source. */
-  TU = clang_parseTranslationUnit(Idx, 0,
-                                  argv + num_unsaved_files,
-                                  argc - num_unsaved_files,
-                                  0, 0, getDefaultParsingOptions());
-  if (!TU) {
-    fprintf(stderr, "Unable to load translation unit!\n");
-    free_remapped_files(unsaved_files, num_unsaved_files);
-    clang_disposeIndex(Idx);
-    return 1;
-  }
-  
-  if (checkForErrors(TU) != 0)
-    return -1;
-
-  if (getenv("CINDEXTEST_REMAP_AFTER_TRIAL")) {
-    remap_after_trial =
-        strtol(getenv("CINDEXTEST_REMAP_AFTER_TRIAL"), &endptr, 10);
-  }
-
-  for (trial = 0; trial < trials; ++trial) {
-    if (clang_reparseTranslationUnit(TU,
-                             trial >= remap_after_trial ? num_unsaved_files : 0,
-                             trial >= remap_after_trial ? unsaved_files : 0,
-                                     clang_defaultReparseOptions(TU))) {
-      fprintf(stderr, "Unable to reparse translation unit!\n");
-      clang_disposeTranslationUnit(TU);
-      free_remapped_files(unsaved_files, num_unsaved_files);
-      clang_disposeIndex(Idx);
-      return -1;      
-    }
-
-    if (checkForErrors(TU) != 0)
-      return -1;
-  }
-  
-  result = perform_test_load(Idx, TU, filter, NULL, Visitor, PV, NULL);
-
-  free_remapped_files(unsaved_files, num_unsaved_files);
-  clang_disposeIndex(Idx);
-  return result;
-}
-
-/******************************************************************************/
-/* Logic for testing clang_getCursor().                                       */
-/******************************************************************************/
-
-static void print_cursor_file_scan(CXTranslationUnit TU, CXCursor cursor,
-                                   unsigned start_line, unsigned start_col,
-                                   unsigned end_line, unsigned end_col,
-                                   const char *prefix) {
-  printf("// %s: ", FileCheckPrefix);
-  if (prefix)
-    printf("-%s", prefix);
-  PrintExtent(stdout, start_line, start_col, end_line, end_col);
-  printf(" ");
-  PrintCursor(cursor, NULL);
-  printf("\n");
-}
-
-static int perform_file_scan(const char *ast_file, const char *source_file,
-                             const char *prefix) {
-  CXIndex Idx;
-  CXTranslationUnit TU;
-  FILE *fp;
-  CXCursor prevCursor = clang_getNullCursor();
-  CXFile file;
-  unsigned line = 1, col = 1;
-  unsigned start_line = 1, start_col = 1;
-
-  if (!(Idx = clang_createIndex(/* excludeDeclsFromPCH */ 1,
-                                /* displayDiagnostics=*/1))) {
-    fprintf(stderr, "Could not create Index\n");
-    return 1;
-  }
-
-  if (!CreateTranslationUnit(Idx, ast_file, &TU))
-    return 1;
-
-  if ((fp = fopen(source_file, "r")) == NULL) {
-    fprintf(stderr, "Could not open '%s'\n", source_file);
-    return 1;
-  }
-
-  file = clang_getFile(TU, source_file);
-  for (;;) {
-    CXCursor cursor;
-    int c = fgetc(fp);
-
-    if (c == '\n') {
-      ++line;
-      col = 1;
-    } else
-      ++col;
-
-    /* Check the cursor at this position, and dump the previous one if we have
-     * found something new.
-     */
-    cursor = clang_getCursor(TU, clang_getLocation(TU, file, line, col));
-    if ((c == EOF || !clang_equalCursors(cursor, prevCursor)) &&
-        prevCursor.kind != CXCursor_InvalidFile) {
-      print_cursor_file_scan(TU, prevCursor, start_line, start_col,
-                             line, col, prefix);
-      start_line = line;
-      start_col = col;
-    }
-    if (c == EOF)
-      break;
-
-    prevCursor = cursor;
-  }
-
-  fclose(fp);
-  clang_disposeTranslationUnit(TU);
-  clang_disposeIndex(Idx);
-  return 0;
-}
-
-/******************************************************************************/
-/* Logic for testing clang code completion.                                   */
-/******************************************************************************/
-
-/* Parse file:line:column from the input string. Returns 0 on success, non-zero
-   on failure. If successful, the pointer *filename will contain newly-allocated
-   memory (that will be owned by the caller) to store the file name. */
-int parse_file_line_column(const char *input, char **filename, unsigned *line,
-                           unsigned *column, unsigned *second_line,
-                           unsigned *second_column) {
-  /* Find the second colon. */
-  const char *last_colon = strrchr(input, ':');
-  unsigned values[4], i;
-  unsigned num_values = (second_line && second_column)? 4 : 2;
-
-  char *endptr = 0;
-  if (!last_colon || last_colon == input) {
-    if (num_values == 4)
-      fprintf(stderr, "could not parse filename:line:column:line:column in "
-              "'%s'\n", input);
-    else
-      fprintf(stderr, "could not parse filename:line:column in '%s'\n", input);
-    return 1;
-  }
-
-  for (i = 0; i != num_values; ++i) {
-    const char *prev_colon;
-
-    /* Parse the next line or column. */
-    values[num_values - i - 1] = strtol(last_colon + 1, &endptr, 10);
-    if (*endptr != 0 && *endptr != ':') {
-      fprintf(stderr, "could not parse %s in '%s'\n",
-              (i % 2 ? "column" : "line"), input);
-      return 1;
-    }
-
-    if (i + 1 == num_values)
-      break;
-
-    /* Find the previous colon. */
-    prev_colon = last_colon - 1;
-    while (prev_colon != input && *prev_colon != ':')
-      --prev_colon;
-    if (prev_colon == input) {
-      fprintf(stderr, "could not parse %s in '%s'\n",
-              (i % 2 == 0? "column" : "line"), input);
-      return 1;
-    }
-
-    last_colon = prev_colon;
-  }
-
-  *line = values[0];
-  *column = values[1];
-
-  if (second_line && second_column) {
-    *second_line = values[2];
-    *second_column = values[3];
-  }
-
-  /* Copy the file name. */
-  *filename = (char*)malloc(last_colon - input + 1);
-  memcpy(*filename, input, last_colon - input);
-  (*filename)[last_colon - input] = 0;
-  return 0;
-}
-
-const char *
-clang_getCompletionChunkKindSpelling(enum CXCompletionChunkKind Kind) {
-  switch (Kind) {
-  case CXCompletionChunk_Optional: return "Optional";
-  case CXCompletionChunk_TypedText: return "TypedText";
-  case CXCompletionChunk_Text: return "Text";
-  case CXCompletionChunk_Placeholder: return "Placeholder";
-  case CXCompletionChunk_Informative: return "Informative";
-  case CXCompletionChunk_CurrentParameter: return "CurrentParameter";
-  case CXCompletionChunk_LeftParen: return "LeftParen";
-  case CXCompletionChunk_RightParen: return "RightParen";
-  case CXCompletionChunk_LeftBracket: return "LeftBracket";
-  case CXCompletionChunk_RightBracket: return "RightBracket";
-  case CXCompletionChunk_LeftBrace: return "LeftBrace";
-  case CXCompletionChunk_RightBrace: return "RightBrace";
-  case CXCompletionChunk_LeftAngle: return "LeftAngle";
-  case CXCompletionChunk_RightAngle: return "RightAngle";
-  case CXCompletionChunk_Comma: return "Comma";
-  case CXCompletionChunk_ResultType: return "ResultType";
-  case CXCompletionChunk_Colon: return "Colon";
-  case CXCompletionChunk_SemiColon: return "SemiColon";
-  case CXCompletionChunk_Equal: return "Equal";
-  case CXCompletionChunk_HorizontalSpace: return "HorizontalSpace";
-  case CXCompletionChunk_VerticalSpace: return "VerticalSpace";
-  }
-
-  return "Unknown";
-}
-
-static int checkForErrors(CXTranslationUnit TU) {
-  unsigned Num, i;
-  CXDiagnostic Diag;
-  CXString DiagStr;
-
-  if (!getenv("CINDEXTEST_FAILONERROR"))
-    return 0;
-
-  Num = clang_getNumDiagnostics(TU);
-  for (i = 0; i != Num; ++i) {
-    Diag = clang_getDiagnostic(TU, i);
-    if (clang_getDiagnosticSeverity(Diag) >= CXDiagnostic_Error) {
-      DiagStr = clang_formatDiagnostic(Diag,
-                                       clang_defaultDiagnosticDisplayOptions());
-      fprintf(stderr, "%s\n", clang_getCString(DiagStr));
-      clang_disposeString(DiagStr);
-      clang_disposeDiagnostic(Diag);
-      return -1;
-    }
-    clang_disposeDiagnostic(Diag);
-  }
-
-  return 0;
-}
-
-void print_completion_string(CXCompletionString completion_string, FILE *file) {
-  int I, N;
-
-  N = clang_getNumCompletionChunks(completion_string);
-  for (I = 0; I != N; ++I) {
-    CXString text;
-    const char *cstr;
-    enum CXCompletionChunkKind Kind
-      = clang_getCompletionChunkKind(completion_string, I);
-
-    if (Kind == CXCompletionChunk_Optional) {
-      fprintf(file, "{Optional ");
-      print_completion_string(
-                clang_getCompletionChunkCompletionString(completion_string, I),
-                              file);
-      fprintf(file, "}");
-      continue;
-    } 
-
-    if (Kind == CXCompletionChunk_VerticalSpace) {
-      fprintf(file, "{VerticalSpace  }");
-      continue;
-    }
-
-    text = clang_getCompletionChunkText(completion_string, I);
-    cstr = clang_getCString(text);
-    fprintf(file, "{%s %s}",
-            clang_getCompletionChunkKindSpelling(Kind),
-            cstr ? cstr : "");
-    clang_disposeString(text);
-  }
-
-}
-
-void print_completion_result(CXCompletionResult *completion_result,
-                             CXClientData client_data) {
-  FILE *file = (FILE *)client_data;
-  CXString ks = clang_getCursorKindSpelling(completion_result->CursorKind);
-  unsigned annotationCount;
-  enum CXCursorKind ParentKind;
-  CXString ParentName;
-  CXString BriefComment;
-  const char *BriefCommentCString;
-  
-  fprintf(file, "%s:", clang_getCString(ks));
-  clang_disposeString(ks);
-
-  print_completion_string(completion_result->CompletionString, file);
-  fprintf(file, " (%u)", 
-          clang_getCompletionPriority(completion_result->CompletionString));
-  switch (clang_getCompletionAvailability(completion_result->CompletionString)){
-  case CXAvailability_Available:
-    break;
-    
-  case CXAvailability_Deprecated:
-    fprintf(file, " (deprecated)");
-    break;
-    
-  case CXAvailability_NotAvailable:
-    fprintf(file, " (unavailable)");
-    break;
-
-  case CXAvailability_NotAccessible:
-    fprintf(file, " (inaccessible)");
-    break;
-  }
-
-  annotationCount = clang_getCompletionNumAnnotations(
-        completion_result->CompletionString);
-  if (annotationCount) {
-    unsigned i;
-    fprintf(file, " (");
-    for (i = 0; i < annotationCount; ++i) {
-      if (i != 0)
-        fprintf(file, ", ");
-      fprintf(file, "\"%s\"",
-              clang_getCString(clang_getCompletionAnnotation(
-                                 completion_result->CompletionString, i)));
-    }
-    fprintf(file, ")");
-  }
-
-  if (!getenv("CINDEXTEST_NO_COMPLETION_PARENTS")) {
-    ParentName = clang_getCompletionParent(completion_result->CompletionString,
-                                           &ParentKind);
-    if (ParentKind != CXCursor_NotImplemented) {
-      CXString KindSpelling = clang_getCursorKindSpelling(ParentKind);
-      fprintf(file, " (parent: %s '%s')",
-              clang_getCString(KindSpelling),
-              clang_getCString(ParentName));
-      clang_disposeString(KindSpelling);
-    }
-    clang_disposeString(ParentName);
-  }
-
-  BriefComment = clang_getCompletionBriefComment(
-                                        completion_result->CompletionString);
-  BriefCommentCString = clang_getCString(BriefComment);
-  if (BriefCommentCString && *BriefCommentCString != '\0') {
-    fprintf(file, "(brief comment: %s)", BriefCommentCString);
-  }
-  clang_disposeString(BriefComment);
-  
-  fprintf(file, "\n");
-}
-
-void print_completion_contexts(unsigned long long contexts, FILE *file) {
-  fprintf(file, "Completion contexts:\n");
-  if (contexts == CXCompletionContext_Unknown) {
-    fprintf(file, "Unknown\n");
-  }
-  if (contexts & CXCompletionContext_AnyType) {
-    fprintf(file, "Any type\n");
-  }
-  if (contexts & CXCompletionContext_AnyValue) {
-    fprintf(file, "Any value\n");
-  }
-  if (contexts & CXCompletionContext_ObjCObjectValue) {
-    fprintf(file, "Objective-C object value\n");
-  }
-  if (contexts & CXCompletionContext_ObjCSelectorValue) {
-    fprintf(file, "Objective-C selector value\n");
-  }
-  if (contexts & CXCompletionContext_CXXClassTypeValue) {
-    fprintf(file, "C++ class type value\n");
-  }
-  if (contexts & CXCompletionContext_DotMemberAccess) {
-    fprintf(file, "Dot member access\n");
-  }
-  if (contexts & CXCompletionContext_ArrowMemberAccess) {
-    fprintf(file, "Arrow member access\n");
-  }
-  if (contexts & CXCompletionContext_ObjCPropertyAccess) {
-    fprintf(file, "Objective-C property access\n");
-  }
-  if (contexts & CXCompletionContext_EnumTag) {
-    fprintf(file, "Enum tag\n");
-  }
-  if (contexts & CXCompletionContext_UnionTag) {
-    fprintf(file, "Union tag\n");
-  }
-  if (contexts & CXCompletionContext_StructTag) {
-    fprintf(file, "Struct tag\n");
-  }
-  if (contexts & CXCompletionContext_ClassTag) {
-    fprintf(file, "Class name\n");
-  }
-  if (contexts & CXCompletionContext_Namespace) {
-    fprintf(file, "Namespace or namespace alias\n");
-  }
-  if (contexts & CXCompletionContext_NestedNameSpecifier) {
-    fprintf(file, "Nested name specifier\n");
-  }
-  if (contexts & CXCompletionContext_ObjCInterface) {
-    fprintf(file, "Objective-C interface\n");
-  }
-  if (contexts & CXCompletionContext_ObjCProtocol) {
-    fprintf(file, "Objective-C protocol\n");
-  }
-  if (contexts & CXCompletionContext_ObjCCategory) {
-    fprintf(file, "Objective-C category\n");
-  }
-  if (contexts & CXCompletionContext_ObjCInstanceMessage) {
-    fprintf(file, "Objective-C instance method\n");
-  }
-  if (contexts & CXCompletionContext_ObjCClassMessage) {
-    fprintf(file, "Objective-C class method\n");
-  }
-  if (contexts & CXCompletionContext_ObjCSelectorName) {
-    fprintf(file, "Objective-C selector name\n");
-  }
-  if (contexts & CXCompletionContext_MacroName) {
-    fprintf(file, "Macro name\n");
-  }
-  if (contexts & CXCompletionContext_NaturalLanguage) {
-    fprintf(file, "Natural language\n");
-  }
-}
-
-int my_stricmp(const char *s1, const char *s2) {
-  while (*s1 && *s2) {
-    int c1 = tolower((unsigned char)*s1), c2 = tolower((unsigned char)*s2);
-    if (c1 < c2)
-      return -1;
-    else if (c1 > c2)
-      return 1;
-    
-    ++s1;
-    ++s2;
-  }
-  
-  if (*s1)
-    return 1;
-  else if (*s2)
-    return -1;
-  return 0;
-}
-
-int perform_code_completion(int argc, const char **argv, int timing_only) {
-  const char *input = argv[1];
-  char *filename = 0;
-  unsigned line;
-  unsigned column;
-  CXIndex CIdx;
-  int errorCode;
-  struct CXUnsavedFile *unsaved_files = 0;
-  int num_unsaved_files = 0;
-  CXCodeCompleteResults *results = 0;
-  CXTranslationUnit TU = 0;
-  unsigned I, Repeats = 1;
-  unsigned completionOptions = clang_defaultCodeCompleteOptions();
-  
-  if (getenv("CINDEXTEST_CODE_COMPLETE_PATTERNS"))
-    completionOptions |= CXCodeComplete_IncludeCodePatterns;
-  if (getenv("CINDEXTEST_COMPLETION_BRIEF_COMMENTS"))
-    completionOptions |= CXCodeComplete_IncludeBriefComments;
-  
-  if (timing_only)
-    input += strlen("-code-completion-timing=");
-  else
-    input += strlen("-code-completion-at=");
-
-  if ((errorCode = parse_file_line_column(input, &filename, &line, &column,
-                                          0, 0)))
-    return errorCode;
-
-  if (parse_remapped_files(argc, argv, 2, &unsaved_files, &num_unsaved_files))
-    return -1;
-
-  CIdx = clang_createIndex(0, 0);
-  
-  if (getenv("CINDEXTEST_EDITING"))
-    Repeats = 5;
-  
-  TU = clang_parseTranslationUnit(CIdx, 0,
-                                  argv + num_unsaved_files + 2,
-                                  argc - num_unsaved_files - 2,
-                                  0, 0, getDefaultParsingOptions());
-  if (!TU) {
-    fprintf(stderr, "Unable to load translation unit!\n");
-    return 1;
-  }
-
-  if (clang_reparseTranslationUnit(TU, 0, 0, clang_defaultReparseOptions(TU))) {
-    fprintf(stderr, "Unable to reparse translation init!\n");
-    return 1;
-  }
-  
-  for (I = 0; I != Repeats; ++I) {
-    results = clang_codeCompleteAt(TU, filename, line, column,
-                                   unsaved_files, num_unsaved_files,
-                                   completionOptions);
-    if (!results) {
-      fprintf(stderr, "Unable to perform code completion!\n");
-      return 1;
-    }
-    if (I != Repeats-1)
-      clang_disposeCodeCompleteResults(results);
-  }
-
-  if (results) {
-    unsigned i, n = results->NumResults, containerIsIncomplete = 0;
-    unsigned long long contexts;
-    enum CXCursorKind containerKind;
-    CXString objCSelector;
-    const char *selectorString;
-    if (!timing_only) {      
-      /* Sort the code-completion results based on the typed text. */
-      clang_sortCodeCompletionResults(results->Results, results->NumResults);
-
-      for (i = 0; i != n; ++i)
-        print_completion_result(results->Results + i, stdout);
-    }
-    n = clang_codeCompleteGetNumDiagnostics(results);
-    for (i = 0; i != n; ++i) {
-      CXDiagnostic diag = clang_codeCompleteGetDiagnostic(results, i);
-      PrintDiagnostic(diag);
-      clang_disposeDiagnostic(diag);
-    }
-    
-    contexts = clang_codeCompleteGetContexts(results);
-    print_completion_contexts(contexts, stdout);
-    
-    containerKind = clang_codeCompleteGetContainerKind(results,
-                                                       &containerIsIncomplete);
-    
-    if (containerKind != CXCursor_InvalidCode) {
-      /* We have found a container */
-      CXString containerUSR, containerKindSpelling;
-      containerKindSpelling = clang_getCursorKindSpelling(containerKind);
-      printf("Container Kind: %s\n", clang_getCString(containerKindSpelling));
-      clang_disposeString(containerKindSpelling);
-      
-      if (containerIsIncomplete) {
-        printf("Container is incomplete\n");
-      }
-      else {
-        printf("Container is complete\n");
-      }
-      
-      containerUSR = clang_codeCompleteGetContainerUSR(results);
-      printf("Container USR: %s\n", clang_getCString(containerUSR));
-      clang_disposeString(containerUSR);
-    }
-    
-    objCSelector = clang_codeCompleteGetObjCSelector(results);
-    selectorString = clang_getCString(objCSelector);
-    if (selectorString && strlen(selectorString) > 0) {
-      printf("Objective-C selector: %s\n", selectorString);
-    }
-    clang_disposeString(objCSelector);
-    
-    clang_disposeCodeCompleteResults(results);
-  }
-  clang_disposeTranslationUnit(TU);
-  clang_disposeIndex(CIdx);
-  free(filename);
-
-  free_remapped_files(unsaved_files, num_unsaved_files);
-
-  return 0;
-}
-
-typedef struct {
-  char *filename;
-  unsigned line;
-  unsigned column;
-} CursorSourceLocation;
-
-static int inspect_cursor_at(int argc, const char **argv) {
-  CXIndex CIdx;
-  int errorCode;
-  struct CXUnsavedFile *unsaved_files = 0;
-  int num_unsaved_files = 0;
-  CXTranslationUnit TU;
-  CXCursor Cursor;
-  CursorSourceLocation *Locations = 0;
-  unsigned NumLocations = 0, Loc;
-  unsigned Repeats = 1;
-  unsigned I;
-  
-  /* Count the number of locations. */
-  while (strstr(argv[NumLocations+1], "-cursor-at=") == argv[NumLocations+1])
-    ++NumLocations;
-
-  /* Parse the locations. */
-  assert(NumLocations > 0 && "Unable to count locations?");
-  Locations = (CursorSourceLocation *)malloc(
-                                  NumLocations * sizeof(CursorSourceLocation));
-  for (Loc = 0; Loc < NumLocations; ++Loc) {
-    const char *input = argv[Loc + 1] + strlen("-cursor-at=");
-    if ((errorCode = parse_file_line_column(input, &Locations[Loc].filename,
-                                            &Locations[Loc].line,
-                                            &Locations[Loc].column, 0, 0)))
-      return errorCode;
-  }
-
-  if (parse_remapped_files(argc, argv, NumLocations + 1, &unsaved_files,
-                           &num_unsaved_files))
-    return -1;
-
-  if (getenv("CINDEXTEST_EDITING"))
-    Repeats = 5;
-
-  /* Parse the translation unit. When we're testing clang_getCursor() after
-     reparsing, don't remap unsaved files until the second parse. */
-  CIdx = clang_createIndex(1, 1);
-  TU = clang_parseTranslationUnit(CIdx, argv[argc - 1],
-                                  argv + num_unsaved_files + 1 + NumLocations,
-                                  argc - num_unsaved_files - 2 - NumLocations,
-                                  unsaved_files,
-                                  Repeats > 1? 0 : num_unsaved_files,
-                                  getDefaultParsingOptions());
-                                                 
-  if (!TU) {
-    fprintf(stderr, "unable to parse input\n");
-    return -1;
-  }
-
-  if (checkForErrors(TU) != 0)
-    return -1;
-
-  for (I = 0; I != Repeats; ++I) {
-    if (Repeats > 1 &&
-        clang_reparseTranslationUnit(TU, num_unsaved_files, unsaved_files, 
-                                     clang_defaultReparseOptions(TU))) {
-      clang_disposeTranslationUnit(TU);
-      return 1;
-    }
-
-    if (checkForErrors(TU) != 0)
-      return -1;
-    
-    for (Loc = 0; Loc < NumLocations; ++Loc) {
-      CXFile file = clang_getFile(TU, Locations[Loc].filename);
-      if (!file)
-        continue;
-
-      Cursor = clang_getCursor(TU,
-                               clang_getLocation(TU, file, Locations[Loc].line,
-                                                 Locations[Loc].column));
-
-      if (checkForErrors(TU) != 0)
-        return -1;
-
-      if (I + 1 == Repeats) {
-        CXCompletionString completionString = clang_getCursorCompletionString(
-                                                                        Cursor);
-        CXSourceLocation CursorLoc = clang_getCursorLocation(Cursor);
-        CXString Spelling;
-        const char *cspell;
-        unsigned line, column;
-        clang_getSpellingLocation(CursorLoc, 0, &line, &column, 0);
-        printf("%d:%d ", line, column);
-        PrintCursor(Cursor, NULL);
-        PrintCursorExtent(Cursor);
-        Spelling = clang_getCursorSpelling(Cursor);
-        cspell = clang_getCString(Spelling);
-        if (cspell && strlen(cspell) != 0) {
-          unsigned pieceIndex;
-          printf(" Spelling=%s (", cspell);
-          for (pieceIndex = 0; ; ++pieceIndex) {
-            CXSourceRange range =
-              clang_Cursor_getSpellingNameRange(Cursor, pieceIndex, 0);
-            if (clang_Range_isNull(range))
-              break;
-            PrintRange(range, 0);
-          }
-          printf(")");
-        }
-        clang_disposeString(Spelling);
-        if (clang_Cursor_getObjCSelectorIndex(Cursor) != -1)
-          printf(" Selector index=%d",clang_Cursor_getObjCSelectorIndex(Cursor));
-        if (clang_Cursor_isDynamicCall(Cursor))
-          printf(" Dynamic-call");
-        if (Cursor.kind == CXCursor_ObjCMessageExpr) {
-          CXType T = clang_Cursor_getReceiverType(Cursor);
-          CXString S = clang_getTypeKindSpelling(T.kind);
-          printf(" Receiver-type=%s", clang_getCString(S));
-          clang_disposeString(S);
-        }
-
-        {
-          CXModule mod = clang_Cursor_getModule(Cursor);
-          CXFile astFile;
-          CXString name, astFilename;
-          unsigned i, numHeaders;
-          if (mod) {
-            astFile = clang_Module_getASTFile(mod);
-            astFilename = clang_getFileName(astFile);
-            name = clang_Module_getFullName(mod);
-            numHeaders = clang_Module_getNumTopLevelHeaders(TU, mod);
-            printf(" ModuleName=%s (%s) Headers(%d):",
-                   clang_getCString(name), clang_getCString(astFilename),
-                   numHeaders);
-            clang_disposeString(name);
-            clang_disposeString(astFilename);
-            for (i = 0; i < numHeaders; ++i) {
-              CXFile file = clang_Module_getTopLevelHeader(TU, mod, i);
-              CXString filename = clang_getFileName(file);
-              printf("\n%s", clang_getCString(filename));
-              clang_disposeString(filename);
-            }
-          }
-        }
-
-        if (completionString != NULL) {
-          printf("\nCompletion string: ");
-          print_completion_string(completionString, stdout);
-        }
-        printf("\n");
-        free(Locations[Loc].filename);
-      }
-    }
-  }
-  
-  PrintDiagnostics(TU);
-  clang_disposeTranslationUnit(TU);
-  clang_disposeIndex(CIdx);
-  free(Locations);
-  free_remapped_files(unsaved_files, num_unsaved_files);
-  return 0;
-}
-
-static enum CXVisitorResult findFileRefsVisit(void *context,
-                                         CXCursor cursor, CXSourceRange range) {
-  if (clang_Range_isNull(range))
-    return CXVisit_Continue;
-
-  PrintCursor(cursor, NULL);
-  PrintRange(range, "");
-  printf("\n");
-  return CXVisit_Continue;
-}
-
-static int find_file_refs_at(int argc, const char **argv) {
-  CXIndex CIdx;
-  int errorCode;
-  struct CXUnsavedFile *unsaved_files = 0;
-  int num_unsaved_files = 0;
-  CXTranslationUnit TU;
-  CXCursor Cursor;
-  CursorSourceLocation *Locations = 0;
-  unsigned NumLocations = 0, Loc;
-  unsigned Repeats = 1;
-  unsigned I;
-  
-  /* Count the number of locations. */
-  while (strstr(argv[NumLocations+1], "-file-refs-at=") == argv[NumLocations+1])
-    ++NumLocations;
-
-  /* Parse the locations. */
-  assert(NumLocations > 0 && "Unable to count locations?");
-  Locations = (CursorSourceLocation *)malloc(
-                                  NumLocations * sizeof(CursorSourceLocation));
-  for (Loc = 0; Loc < NumLocations; ++Loc) {
-    const char *input = argv[Loc + 1] + strlen("-file-refs-at=");
-    if ((errorCode = parse_file_line_column(input, &Locations[Loc].filename,
-                                            &Locations[Loc].line,
-                                            &Locations[Loc].column, 0, 0)))
-      return errorCode;
-  }
-
-  if (parse_remapped_files(argc, argv, NumLocations + 1, &unsaved_files,
-                           &num_unsaved_files))
-    return -1;
-
-  if (getenv("CINDEXTEST_EDITING"))
-    Repeats = 5;
-
-  /* Parse the translation unit. When we're testing clang_getCursor() after
-     reparsing, don't remap unsaved files until the second parse. */
-  CIdx = clang_createIndex(1, 1);
-  TU = clang_parseTranslationUnit(CIdx, argv[argc - 1],
-                                  argv + num_unsaved_files + 1 + NumLocations,
-                                  argc - num_unsaved_files - 2 - NumLocations,
-                                  unsaved_files,
-                                  Repeats > 1? 0 : num_unsaved_files,
-                                  getDefaultParsingOptions());
-                                                 
-  if (!TU) {
-    fprintf(stderr, "unable to parse input\n");
-    return -1;
-  }
-
-  if (checkForErrors(TU) != 0)
-    return -1;
-
-  for (I = 0; I != Repeats; ++I) {
-    if (Repeats > 1 &&
-        clang_reparseTranslationUnit(TU, num_unsaved_files, unsaved_files, 
-                                     clang_defaultReparseOptions(TU))) {
-      clang_disposeTranslationUnit(TU);
-      return 1;
-    }
-
-    if (checkForErrors(TU) != 0)
-      return -1;
-    
-    for (Loc = 0; Loc < NumLocations; ++Loc) {
-      CXFile file = clang_getFile(TU, Locations[Loc].filename);
-      if (!file)
-        continue;
-
-      Cursor = clang_getCursor(TU,
-                               clang_getLocation(TU, file, Locations[Loc].line,
-                                                 Locations[Loc].column));
-
-      if (checkForErrors(TU) != 0)
-        return -1;
-
-      if (I + 1 == Repeats) {
-        CXCursorAndRangeVisitor visitor = { 0, findFileRefsVisit };
-        PrintCursor(Cursor, NULL);
-        printf("\n");
-        clang_findReferencesInFile(Cursor, file, visitor);
-        free(Locations[Loc].filename);
-
-        if (checkForErrors(TU) != 0)
-          return -1;
-      }
-    }
-  }
-  
-  PrintDiagnostics(TU);
-  clang_disposeTranslationUnit(TU);
-  clang_disposeIndex(CIdx);
-  free(Locations);
-  free_remapped_files(unsaved_files, num_unsaved_files);
-  return 0;
-}
-
-static enum CXVisitorResult findFileIncludesVisit(void *context,
-                                         CXCursor cursor, CXSourceRange range) {
-  PrintCursor(cursor, NULL);
-  PrintRange(range, "");
-  printf("\n");
-  return CXVisit_Continue;
-}
-
-static int find_file_includes_in(int argc, const char **argv) {
-  CXIndex CIdx;
-  struct CXUnsavedFile *unsaved_files = 0;
-  int num_unsaved_files = 0;
-  CXTranslationUnit TU;
-  const char **Filenames = 0;
-  unsigned NumFilenames = 0;
-  unsigned Repeats = 1;
-  unsigned I, FI;
-
-  /* Count the number of locations. */
-  while (strstr(argv[NumFilenames+1], "-file-includes-in=") == argv[NumFilenames+1])
-    ++NumFilenames;
-
-  /* Parse the locations. */
-  assert(NumFilenames > 0 && "Unable to count filenames?");
-  Filenames = (const char **)malloc(NumFilenames * sizeof(const char *));
-  for (I = 0; I < NumFilenames; ++I) {
-    const char *input = argv[I + 1] + strlen("-file-includes-in=");
-    /* Copy the file name. */
-    Filenames[I] = input;
-  }
-
-  if (parse_remapped_files(argc, argv, NumFilenames + 1, &unsaved_files,
-                           &num_unsaved_files))
-    return -1;
-
-  if (getenv("CINDEXTEST_EDITING"))
-    Repeats = 2;
-
-  /* Parse the translation unit. When we're testing clang_getCursor() after
-     reparsing, don't remap unsaved files until the second parse. */
-  CIdx = clang_createIndex(1, 1);
-  TU = clang_parseTranslationUnit(CIdx, argv[argc - 1],
-                                  argv + num_unsaved_files + 1 + NumFilenames,
-                                  argc - num_unsaved_files - 2 - NumFilenames,
-                                  unsaved_files,
-                                  Repeats > 1? 0 : num_unsaved_files,
-                                  getDefaultParsingOptions());
-
-  if (!TU) {
-    fprintf(stderr, "unable to parse input\n");
-    return -1;
-  }
-
-  if (checkForErrors(TU) != 0)
-    return -1;
-
-  for (I = 0; I != Repeats; ++I) {
-    if (Repeats > 1 &&
-        clang_reparseTranslationUnit(TU, num_unsaved_files, unsaved_files,
-                                     clang_defaultReparseOptions(TU))) {
-      clang_disposeTranslationUnit(TU);
-      return 1;
-    }
-
-    if (checkForErrors(TU) != 0)
-      return -1;
-
-    for (FI = 0; FI < NumFilenames; ++FI) {
-      CXFile file = clang_getFile(TU, Filenames[FI]);
-      if (!file)
-        continue;
-
-      if (checkForErrors(TU) != 0)
-        return -1;
-
-      if (I + 1 == Repeats) {
-        CXCursorAndRangeVisitor visitor = { 0, findFileIncludesVisit };
-        clang_findIncludesInFile(TU, file, visitor);
-
-        if (checkForErrors(TU) != 0)
-          return -1;
-      }
-    }
-  }
-
-  PrintDiagnostics(TU);
-  clang_disposeTranslationUnit(TU);
-  clang_disposeIndex(CIdx);
-  free((void *)Filenames);
-  free_remapped_files(unsaved_files, num_unsaved_files);
-  return 0;
-}
-
-#define MAX_IMPORTED_ASTFILES 200
-
-typedef struct {
-  char **filenames;
-  unsigned num_files;
-} ImportedASTFilesData;
-
-static ImportedASTFilesData *importedASTs_create() {
-  ImportedASTFilesData *p;
-  p = malloc(sizeof(ImportedASTFilesData));
-  p->filenames = malloc(MAX_IMPORTED_ASTFILES * sizeof(const char *));
-  p->num_files = 0;
-  return p;
-}
-
-static void importedASTs_dispose(ImportedASTFilesData *p) {
-  unsigned i;
-  if (!p)
-    return;
-
-  for (i = 0; i < p->num_files; ++i)
-    free(p->filenames[i]);
-  free(p->filenames);
-  free(p);
-}
-
-static void importedASTS_insert(ImportedASTFilesData *p, const char *file) {
-  unsigned i;
-  assert(p && file);
-  for (i = 0; i < p->num_files; ++i)
-    if (strcmp(file, p->filenames[i]) == 0)
-      return;
-  assert(p->num_files + 1 < MAX_IMPORTED_ASTFILES);
-  p->filenames[p->num_files++] = strdup(file);
-}
-
-typedef struct {
-  const char *check_prefix;
-  int first_check_printed;
-  int fail_for_error;
-  int abort;
-  const char *main_filename;
-  ImportedASTFilesData *importedASTs;
-} IndexData;
-
-static void printCheck(IndexData *data) {
-  if (data->check_prefix) {
-    if (data->first_check_printed) {
-      printf("// %s-NEXT: ", data->check_prefix);
-    } else {
-      printf("// %s     : ", data->check_prefix);
-      data->first_check_printed = 1;
-    }
-  }
-}
-
-static void printCXIndexFile(CXIdxClientFile file) {
-  CXString filename = clang_getFileName((CXFile)file);
-  printf("%s", clang_getCString(filename));
-  clang_disposeString(filename);
-}
-
-static void printCXIndexLoc(CXIdxLoc loc, CXClientData client_data) {
-  IndexData *index_data;
-  CXString filename;
-  const char *cname;
-  CXIdxClientFile file;
-  unsigned line, column;
-  int isMainFile;
-  
-  index_data = (IndexData *)client_data;
-  clang_indexLoc_getFileLocation(loc, &file, 0, &line, &column, 0);
-  if (line == 0) {
-    printf("<invalid>");
-    return;
-  }
-  if (!file) {
-    printf("<no idxfile>");
-    return;
-  }
-  filename = clang_getFileName((CXFile)file);
-  cname = clang_getCString(filename);
-  if (strcmp(cname, index_data->main_filename) == 0)
-    isMainFile = 1;
-  else
-    isMainFile = 0;
-  clang_disposeString(filename);
-
-  if (!isMainFile) {
-    printCXIndexFile(file);
-    printf(":");
-  }
-  printf("%d:%d", line, column);
-}
-
-static unsigned digitCount(unsigned val) {
-  unsigned c = 1;
-  while (1) {
-    if (val < 10)
-      return c;
-    ++c;
-    val /= 10;
-  }
-}
-
-static CXIdxClientContainer makeClientContainer(const CXIdxEntityInfo *info,
-                                                CXIdxLoc loc) {
-  const char *name;
-  char *newStr;
-  CXIdxClientFile file;
-  unsigned line, column;
-  
-  name = info->name;
-  if (!name)
-    name = "<anon-tag>";
-
-  clang_indexLoc_getFileLocation(loc, &file, 0, &line, &column, 0);
-  /* FIXME: free these.*/
-  newStr = (char *)malloc(strlen(name) +
-                          digitCount(line) + digitCount(column) + 3);
-  sprintf(newStr, "%s:%d:%d", name, line, column);
-  return (CXIdxClientContainer)newStr;
-}
-
-static void printCXIndexContainer(const CXIdxContainerInfo *info) {
-  CXIdxClientContainer container;
-  container = clang_index_getClientContainer(info);
-  if (!container)
-    printf("[<<NULL>>]");
-  else
-    printf("[%s]", (const char *)container);
-}
-
-static const char *getEntityKindString(CXIdxEntityKind kind) {
-  switch (kind) {
-  case CXIdxEntity_Unexposed: return "<<UNEXPOSED>>";
-  case CXIdxEntity_Typedef: return "typedef";
-  case CXIdxEntity_Function: return "function";
-  case CXIdxEntity_Variable: return "variable";
-  case CXIdxEntity_Field: return "field";
-  case CXIdxEntity_EnumConstant: return "enumerator";
-  case CXIdxEntity_ObjCClass: return "objc-class";
-  case CXIdxEntity_ObjCProtocol: return "objc-protocol";
-  case CXIdxEntity_ObjCCategory: return "objc-category";
-  case CXIdxEntity_ObjCInstanceMethod: return "objc-instance-method";
-  case CXIdxEntity_ObjCClassMethod: return "objc-class-method";
-  case CXIdxEntity_ObjCProperty: return "objc-property";
-  case CXIdxEntity_ObjCIvar: return "objc-ivar";
-  case CXIdxEntity_Enum: return "enum";
-  case CXIdxEntity_Struct: return "struct";
-  case CXIdxEntity_Union: return "union";
-  case CXIdxEntity_CXXClass: return "c++-class";
-  case CXIdxEntity_CXXNamespace: return "namespace";
-  case CXIdxEntity_CXXNamespaceAlias: return "namespace-alias";
-  case CXIdxEntity_CXXStaticVariable: return "c++-static-var";
-  case CXIdxEntity_CXXStaticMethod: return "c++-static-method";
-  case CXIdxEntity_CXXInstanceMethod: return "c++-instance-method";
-  case CXIdxEntity_CXXConstructor: return "constructor";
-  case CXIdxEntity_CXXDestructor: return "destructor";
-  case CXIdxEntity_CXXConversionFunction: return "conversion-func";
-  case CXIdxEntity_CXXTypeAlias: return "type-alias";
-  case CXIdxEntity_CXXInterface: return "c++-__interface";
-  }
-  assert(0 && "Garbage entity kind");
-  return 0;
-}
-
-static const char *getEntityTemplateKindString(CXIdxEntityCXXTemplateKind kind) {
-  switch (kind) {
-  case CXIdxEntity_NonTemplate: return "";
-  case CXIdxEntity_Template: return "-template";
-  case CXIdxEntity_TemplatePartialSpecialization:
-    return "-template-partial-spec";
-  case CXIdxEntity_TemplateSpecialization: return "-template-spec";
-  }
-  assert(0 && "Garbage entity kind");
-  return 0;
-}
-
-static const char *getEntityLanguageString(CXIdxEntityLanguage kind) {
-  switch (kind) {
-  case CXIdxEntityLang_None: return "<none>";
-  case CXIdxEntityLang_C: return "C";
-  case CXIdxEntityLang_ObjC: return "ObjC";
-  case CXIdxEntityLang_CXX: return "C++";
-  }
-  assert(0 && "Garbage language kind");
-  return 0;
-}
-
-static void printEntityInfo(const char *cb,
-                            CXClientData client_data,
-                            const CXIdxEntityInfo *info) {
-  const char *name;
-  IndexData *index_data;
-  unsigned i;
-  index_data = (IndexData *)client_data;
-  printCheck(index_data);
-
-  if (!info) {
-    printf("%s: <<NULL>>", cb);
-    return;
-  }
-
-  name = info->name;
-  if (!name)
-    name = "<anon-tag>";
-
-  printf("%s: kind: %s%s", cb, getEntityKindString(info->kind),
-         getEntityTemplateKindString(info->templateKind));
-  printf(" | name: %s", name);
-  printf(" | USR: %s", info->USR);
-  printf(" | lang: %s", getEntityLanguageString(info->lang));
-
-  for (i = 0; i != info->numAttributes; ++i) {
-    const CXIdxAttrInfo *Attr = info->attributes[i];
-    printf("     <attribute>: ");
-    PrintCursor(Attr->cursor, NULL);
-  }
-}
-
-static void printBaseClassInfo(CXClientData client_data,
-                               const CXIdxBaseClassInfo *info) {
-  printEntityInfo("     <base>", client_data, info->base);
-  printf(" | cursor: ");
-  PrintCursor(info->cursor, NULL);
-  printf(" | loc: ");
-  printCXIndexLoc(info->loc, client_data);
-}
-
-static void printProtocolList(const CXIdxObjCProtocolRefListInfo *ProtoInfo,
-                              CXClientData client_data) {
-  unsigned i;
-  for (i = 0; i < ProtoInfo->numProtocols; ++i) {
-    printEntityInfo("     <protocol>", client_data,
-                    ProtoInfo->protocols[i]->protocol);
-    printf(" | cursor: ");
-    PrintCursor(ProtoInfo->protocols[i]->cursor, NULL);
-    printf(" | loc: ");
-    printCXIndexLoc(ProtoInfo->protocols[i]->loc, client_data);
-    printf("\n");
-  }
-}
-
-static void index_diagnostic(CXClientData client_data,
-                             CXDiagnosticSet diagSet, void *reserved) {
-  CXString str;
-  const char *cstr;
-  unsigned numDiags, i;
-  CXDiagnostic diag;
-  IndexData *index_data;
-  index_data = (IndexData *)client_data;
-  printCheck(index_data);
-
-  numDiags = clang_getNumDiagnosticsInSet(diagSet);
-  for (i = 0; i != numDiags; ++i) {
-    diag = clang_getDiagnosticInSet(diagSet, i);
-    str = clang_formatDiagnostic(diag, clang_defaultDiagnosticDisplayOptions());
-    cstr = clang_getCString(str);
-    printf("[diagnostic]: %s\n", cstr);
-    clang_disposeString(str);  
-  
-    if (getenv("CINDEXTEST_FAILONERROR") &&
-        clang_getDiagnosticSeverity(diag) >= CXDiagnostic_Error) {
-      index_data->fail_for_error = 1;
-    }
-  }
-}
-
-static CXIdxClientFile index_enteredMainFile(CXClientData client_data,
-                                       CXFile file, void *reserved) {
-  IndexData *index_data;
-  CXString filename;
-
-  index_data = (IndexData *)client_data;
-  printCheck(index_data);
-
-  filename = clang_getFileName(file);
-  index_data->main_filename = clang_getCString(filename);
-  clang_disposeString(filename);
-
-  printf("[enteredMainFile]: ");
-  printCXIndexFile((CXIdxClientFile)file);
-  printf("\n");
-
-  return (CXIdxClientFile)file;
-}
-
-static CXIdxClientFile index_ppIncludedFile(CXClientData client_data,
-                                            const CXIdxIncludedFileInfo *info) {
-  IndexData *index_data;
-  index_data = (IndexData *)client_data;
-  printCheck(index_data);
-
-  printf("[ppIncludedFile]: ");
-  printCXIndexFile((CXIdxClientFile)info->file);
-  printf(" | name: \"%s\"", info->filename);
-  printf(" | hash loc: ");
-  printCXIndexLoc(info->hashLoc, client_data);
-  printf(" | isImport: %d | isAngled: %d | isModule: %d\n",
-         info->isImport, info->isAngled, info->isModuleImport);
-
-  return (CXIdxClientFile)info->file;
-}
-
-static CXIdxClientFile index_importedASTFile(CXClientData client_data,
-                                         const CXIdxImportedASTFileInfo *info) {
-  IndexData *index_data;
-  index_data = (IndexData *)client_data;
-  printCheck(index_data);
-
-  if (index_data->importedASTs) {
-    CXString filename = clang_getFileName(info->file);
-    importedASTS_insert(index_data->importedASTs, clang_getCString(filename));
-    clang_disposeString(filename);
-  }
-  
-  printf("[importedASTFile]: ");
-  printCXIndexFile((CXIdxClientFile)info->file);
-  if (info->module) {
-    CXString name = clang_Module_getFullName(info->module);
-    printf(" | loc: ");
-    printCXIndexLoc(info->loc, client_data);
-    printf(" | name: \"%s\"", clang_getCString(name));
-    printf(" | isImplicit: %d\n", info->isImplicit);
-    clang_disposeString(name);
-  } else {
-    /* PCH file, the rest are not relevant. */
-    printf("\n");
-  }
-
-  return (CXIdxClientFile)info->file;
-}
-
-static CXIdxClientContainer index_startedTranslationUnit(CXClientData client_data,
-                                                   void *reserved) {
-  IndexData *index_data;
-  index_data = (IndexData *)client_data;
-  printCheck(index_data);
-
-  printf("[startedTranslationUnit]\n");
-  return (CXIdxClientContainer)"TU";
-}
-
-static void index_indexDeclaration(CXClientData client_data,
-                                   const CXIdxDeclInfo *info) {
-  IndexData *index_data;
-  const CXIdxObjCCategoryDeclInfo *CatInfo;
-  const CXIdxObjCInterfaceDeclInfo *InterInfo;
-  const CXIdxObjCProtocolRefListInfo *ProtoInfo;
-  const CXIdxObjCPropertyDeclInfo *PropInfo;
-  const CXIdxCXXClassDeclInfo *CXXClassInfo;
-  unsigned i;
-  index_data = (IndexData *)client_data;
-
-  printEntityInfo("[indexDeclaration]", client_data, info->entityInfo);
-  printf(" | cursor: ");
-  PrintCursor(info->cursor, NULL);
-  printf(" | loc: ");
-  printCXIndexLoc(info->loc, client_data);
-  printf(" | semantic-container: ");
-  printCXIndexContainer(info->semanticContainer);
-  printf(" | lexical-container: ");
-  printCXIndexContainer(info->lexicalContainer);
-  printf(" | isRedecl: %d", info->isRedeclaration);
-  printf(" | isDef: %d", info->isDefinition);
-  if (info->flags & CXIdxDeclFlag_Skipped) {
-    assert(!info->isContainer);
-    printf(" | isContainer: skipped");
-  } else {
-    printf(" | isContainer: %d", info->isContainer);
-  }
-  printf(" | isImplicit: %d\n", info->isImplicit);
-
-  for (i = 0; i != info->numAttributes; ++i) {
-    const CXIdxAttrInfo *Attr = info->attributes[i];
-    printf("     <attribute>: ");
-    PrintCursor(Attr->cursor, NULL);
-    printf("\n");
-  }
-
-  if (clang_index_isEntityObjCContainerKind(info->entityInfo->kind)) {
-    const char *kindName = 0;
-    CXIdxObjCContainerKind K = clang_index_getObjCContainerDeclInfo(info)->kind;
-    switch (K) {
-    case CXIdxObjCContainer_ForwardRef:
-      kindName = "forward-ref"; break;
-    case CXIdxObjCContainer_Interface:
-      kindName = "interface"; break;
-    case CXIdxObjCContainer_Implementation:
-      kindName = "implementation"; break;
-    }
-    printCheck(index_data);
-    printf("     <ObjCContainerInfo>: kind: %s\n", kindName);
-  }
-
-  if ((CatInfo = clang_index_getObjCCategoryDeclInfo(info))) {
-    printEntityInfo("     <ObjCCategoryInfo>: class", client_data,
-                    CatInfo->objcClass);
-    printf(" | cursor: ");
-    PrintCursor(CatInfo->classCursor, NULL);
-    printf(" | loc: ");
-    printCXIndexLoc(CatInfo->classLoc, client_data);
-    printf("\n");
-  }
-
-  if ((InterInfo = clang_index_getObjCInterfaceDeclInfo(info))) {
-    if (InterInfo->superInfo) {
-      printBaseClassInfo(client_data, InterInfo->superInfo);
-      printf("\n");
-    }
-  }
-
-  if ((ProtoInfo = clang_index_getObjCProtocolRefListInfo(info))) {
-    printProtocolList(ProtoInfo, client_data);
-  }
-
-  if ((PropInfo = clang_index_getObjCPropertyDeclInfo(info))) {
-    if (PropInfo->getter) {
-      printEntityInfo("     <getter>", client_data, PropInfo->getter);
-      printf("\n");
-    }
-    if (PropInfo->setter) {
-      printEntityInfo("     <setter>", client_data, PropInfo->setter);
-      printf("\n");
-    }
-  }
-
-  if ((CXXClassInfo = clang_index_getCXXClassDeclInfo(info))) {
-    for (i = 0; i != CXXClassInfo->numBases; ++i) {
-      printBaseClassInfo(client_data, CXXClassInfo->bases[i]);
-      printf("\n");
-    }
-  }
-
-  if (info->declAsContainer)
-    clang_index_setClientContainer(info->declAsContainer,
-                              makeClientContainer(info->entityInfo, info->loc));
-}
-
-static void index_indexEntityReference(CXClientData client_data,
-                                       const CXIdxEntityRefInfo *info) {
-  printEntityInfo("[indexEntityReference]", client_data, info->referencedEntity);
-  printf(" | cursor: ");
-  PrintCursor(info->cursor, NULL);
-  printf(" | loc: ");
-  printCXIndexLoc(info->loc, client_data);
-  printEntityInfo(" | <parent>:", client_data, info->parentEntity);
-  printf(" | container: ");
-  printCXIndexContainer(info->container);
-  printf(" | refkind: ");
-  switch (info->kind) {
-  case CXIdxEntityRef_Direct: printf("direct"); break;
-  case CXIdxEntityRef_Implicit: printf("implicit"); break;
-  }
-  printf("\n");
-}
-
-static int index_abortQuery(CXClientData client_data, void *reserved) {
-  IndexData *index_data;
-  index_data = (IndexData *)client_data;
-  return index_data->abort;
-}
-
-static IndexerCallbacks IndexCB = {
-  index_abortQuery,
-  index_diagnostic,
-  index_enteredMainFile,
-  index_ppIncludedFile,
-  index_importedASTFile,
-  index_startedTranslationUnit,
-  index_indexDeclaration,
-  index_indexEntityReference
-};
-
-static unsigned getIndexOptions(void) {
-  unsigned index_opts;
-  index_opts = 0;
-  if (getenv("CINDEXTEST_SUPPRESSREFS"))
-    index_opts |= CXIndexOpt_SuppressRedundantRefs;
-  if (getenv("CINDEXTEST_INDEXLOCALSYMBOLS"))
-    index_opts |= CXIndexOpt_IndexFunctionLocalSymbols;
-  if (!getenv("CINDEXTEST_DISABLE_SKIPPARSEDBODIES"))
-    index_opts |= CXIndexOpt_SkipParsedBodiesInSession;
-
-  return index_opts;
-}
-
-static int index_compile_args(int num_args, const char **args,
-                              CXIndexAction idxAction,
-                              ImportedASTFilesData *importedASTs,
-                              const char *check_prefix) {
-  IndexData index_data;
-  unsigned index_opts;
-  int result;
-
-  if (num_args == 0) {
-    fprintf(stderr, "no compiler arguments\n");
-    return -1;
-  }
-
-  index_data.check_prefix = check_prefix;
-  index_data.first_check_printed = 0;
-  index_data.fail_for_error = 0;
-  index_data.abort = 0;
-  index_data.main_filename = "";
-  index_data.importedASTs = importedASTs;
-
-  index_opts = getIndexOptions();
-  result = clang_indexSourceFile(idxAction, &index_data,
-                                 &IndexCB,sizeof(IndexCB), index_opts,
-                                 0, args, num_args, 0, 0, 0,
-                                 getDefaultParsingOptions());
-  if (index_data.fail_for_error)
-    result = -1;
-
-  return result;
-}
-
-static int index_ast_file(const char *ast_file,
-                          CXIndex Idx,
-                          CXIndexAction idxAction,
-                          ImportedASTFilesData *importedASTs,
-                          const char *check_prefix) {
-  CXTranslationUnit TU;
-  IndexData index_data;
-  unsigned index_opts;
-  int result;
-
-  if (!CreateTranslationUnit(Idx, ast_file, &TU))
-    return -1;
-
-  index_data.check_prefix = check_prefix;
-  index_data.first_check_printed = 0;
-  index_data.fail_for_error = 0;
-  index_data.abort = 0;
-  index_data.main_filename = "";
-  index_data.importedASTs = importedASTs;
-
-  index_opts = getIndexOptions();
-  result = clang_indexTranslationUnit(idxAction, &index_data,
-                                      &IndexCB,sizeof(IndexCB),
-                                      index_opts, TU);
-  if (index_data.fail_for_error)
-    result = -1;
-
-  clang_disposeTranslationUnit(TU);
-  return result;
-}
-
-static int index_file(int argc, const char **argv, int full) {
-  const char *check_prefix;
-  CXIndex Idx;
-  CXIndexAction idxAction;
-  ImportedASTFilesData *importedASTs;
-  int result;
-
-  check_prefix = 0;
-  if (argc > 0) {
-    if (strstr(argv[0], "-check-prefix=") == argv[0]) {
-      check_prefix = argv[0] + strlen("-check-prefix=");
-      ++argv;
-      --argc;
-    }
-  }
-
-  if (!(Idx = clang_createIndex(/* excludeDeclsFromPCH */ 1,
-                                /* displayDiagnostics=*/1))) {
-    fprintf(stderr, "Could not create Index\n");
-    return 1;
-  }
-  idxAction = clang_IndexAction_create(Idx);
-  importedASTs = 0;
-  if (full)
-    importedASTs = importedASTs_create();
-
-  result = index_compile_args(argc, argv, idxAction, importedASTs, check_prefix);
-  if (result != 0)
-    goto finished;
-
-  if (full) {
-    unsigned i;
-    for (i = 0; i < importedASTs->num_files && result == 0; ++i) {
-      result = index_ast_file(importedASTs->filenames[i], Idx, idxAction,
-                              importedASTs, check_prefix);
-    }
-  }
-
-finished:
-  importedASTs_dispose(importedASTs);
-  clang_IndexAction_dispose(idxAction);
-  clang_disposeIndex(Idx);
-  return result;
-}
-
-static int index_tu(int argc, const char **argv) {
-  const char *check_prefix;
-  CXIndex Idx;
-  CXIndexAction idxAction;
-  int result;
-
-  check_prefix = 0;
-  if (argc > 0) {
-    if (strstr(argv[0], "-check-prefix=") == argv[0]) {
-      check_prefix = argv[0] + strlen("-check-prefix=");
-      ++argv;
-      --argc;
-    }
-  }
-
-  if (!(Idx = clang_createIndex(/* excludeDeclsFromPCH */ 1,
-                                /* displayDiagnostics=*/1))) {
-    fprintf(stderr, "Could not create Index\n");
-    return 1;
-  }
-  idxAction = clang_IndexAction_create(Idx);
-
-  result = index_ast_file(argv[0], Idx, idxAction,
-                          /*importedASTs=*/0, check_prefix);
-
-  clang_IndexAction_dispose(idxAction);
-  clang_disposeIndex(Idx);
-  return result;
-}
-
-static int index_compile_db(int argc, const char **argv) {
-  const char *check_prefix;
-  CXIndex Idx;
-  CXIndexAction idxAction;
-  int errorCode = 0;
-
-  check_prefix = 0;
-  if (argc > 0) {
-    if (strstr(argv[0], "-check-prefix=") == argv[0]) {
-      check_prefix = argv[0] + strlen("-check-prefix=");
-      ++argv;
-      --argc;
-    }
-  }
-
-  if (argc == 0) {
-    fprintf(stderr, "no compilation database\n");
-    return -1;
-  }
-
-  if (!(Idx = clang_createIndex(/* excludeDeclsFromPCH */ 1,
-                                /* displayDiagnostics=*/1))) {
-    fprintf(stderr, "Could not create Index\n");
-    return 1;
-  }
-  idxAction = clang_IndexAction_create(Idx);
-
-  {
-    const char *database = argv[0];
-    CXCompilationDatabase db = 0;
-    CXCompileCommands CCmds = 0;
-    CXCompileCommand CCmd;
-    CXCompilationDatabase_Error ec;
-    CXString wd;
-#define MAX_COMPILE_ARGS 512
-    CXString cxargs[MAX_COMPILE_ARGS];
-    const char *args[MAX_COMPILE_ARGS];
-    char *tmp;
-    unsigned len;
-    char *buildDir;
-    int i, a, numCmds, numArgs;
-
-    len = strlen(database);
-    tmp = (char *) malloc(len+1);
-    memcpy(tmp, database, len+1);
-    buildDir = dirname(tmp);
-
-    db = clang_CompilationDatabase_fromDirectory(buildDir, &ec);
-
-    if (db) {
-
-      if (ec!=CXCompilationDatabase_NoError) {
-        printf("unexpected error %d code while loading compilation database\n", ec);
-        errorCode = -1;
-        goto cdb_end;
-      }
-
-      if (chdir(buildDir) != 0) {
-        printf("Could not chdir to %s\n", buildDir);
-        errorCode = -1;
-        goto cdb_end;
-      }
-
-      CCmds = clang_CompilationDatabase_getAllCompileCommands(db);
-      if (!CCmds) {
-        printf("compilation db is empty\n");
-        errorCode = -1;
-        goto cdb_end;
-      }
-
-      numCmds = clang_CompileCommands_getSize(CCmds);
-
-      if (numCmds==0) {
-        fprintf(stderr, "should not get an empty compileCommand set\n");
-        errorCode = -1;
-        goto cdb_end;
-      }
-
-      for (i=0; i<numCmds && errorCode == 0; ++i) {
-        CCmd = clang_CompileCommands_getCommand(CCmds, i);
-
-        wd = clang_CompileCommand_getDirectory(CCmd);
-        if (chdir(clang_getCString(wd)) != 0) {
-          printf("Could not chdir to %s\n", clang_getCString(wd));
-          errorCode = -1;
-          goto cdb_end;
-        }
-        clang_disposeString(wd);
-
-        numArgs = clang_CompileCommand_getNumArgs(CCmd);
-        if (numArgs > MAX_COMPILE_ARGS){
-          fprintf(stderr, "got more compile arguments than maximum\n");
-          errorCode = -1;
-          goto cdb_end;
-        }
-        for (a=0; a<numArgs; ++a) {
-          cxargs[a] = clang_CompileCommand_getArg(CCmd, a);
-          args[a] = clang_getCString(cxargs[a]);
-        }
-
-        errorCode = index_compile_args(numArgs, args, idxAction,
-                                       /*importedASTs=*/0, check_prefix);
-
-        for (a=0; a<numArgs; ++a)
-          clang_disposeString(cxargs[a]);
-      }
-    } else {
-      printf("database loading failed with error code %d.\n", ec);
-      errorCode = -1;
-    }
-
-  cdb_end:
-    clang_CompileCommands_dispose(CCmds);
-    clang_CompilationDatabase_dispose(db);
-    free(tmp);
-
-  }
-
-  clang_IndexAction_dispose(idxAction);
-  clang_disposeIndex(Idx);
-  return errorCode;
-}
-
-int perform_token_annotation(int argc, const char **argv) {
-  const char *input = argv[1];
-  char *filename = 0;
-  unsigned line, second_line;
-  unsigned column, second_column;
-  CXIndex CIdx;
-  CXTranslationUnit TU = 0;
-  int errorCode;
-  struct CXUnsavedFile *unsaved_files = 0;
-  int num_unsaved_files = 0;
-  CXToken *tokens;
-  unsigned num_tokens;
-  CXSourceRange range;
-  CXSourceLocation startLoc, endLoc;
-  CXFile file = 0;
-  CXCursor *cursors = 0;
-  unsigned i;
-
-  input += strlen("-test-annotate-tokens=");
-  if ((errorCode = parse_file_line_column(input, &filename, &line, &column,
-                                          &second_line, &second_column)))
-    return errorCode;
-
-  if (parse_remapped_files(argc, argv, 2, &unsaved_files, &num_unsaved_files)) {
-    free(filename);
-    return -1;
-  }
-
-  CIdx = clang_createIndex(0, 1);
-  TU = clang_parseTranslationUnit(CIdx, argv[argc - 1],
-                                  argv + num_unsaved_files + 2,
-                                  argc - num_unsaved_files - 3,
-                                  unsaved_files,
-                                  num_unsaved_files,
-                                  getDefaultParsingOptions());
-  if (!TU) {
-    fprintf(stderr, "unable to parse input\n");
-    clang_disposeIndex(CIdx);
-    free(filename);
-    free_remapped_files(unsaved_files, num_unsaved_files);
-    return -1;
-  }
-  errorCode = 0;
-
-  if (checkForErrors(TU) != 0) {
-    errorCode = -1;
-    goto teardown;
-  }
-
-  if (getenv("CINDEXTEST_EDITING")) {
-    for (i = 0; i < 5; ++i) {
-      if (clang_reparseTranslationUnit(TU, num_unsaved_files, unsaved_files,
-                                       clang_defaultReparseOptions(TU))) {
-        fprintf(stderr, "Unable to reparse translation unit!\n");
-        errorCode = -1;
-        goto teardown;
-      }
-    }
-  }
-
-  if (checkForErrors(TU) != 0) {
-    errorCode = -1;
-    goto teardown;
-  }
-
-  file = clang_getFile(TU, filename);
-  if (!file) {
-    fprintf(stderr, "file %s is not in this translation unit\n", filename);
-    errorCode = -1;
-    goto teardown;
-  }
-
-  startLoc = clang_getLocation(TU, file, line, column);
-  if (clang_equalLocations(clang_getNullLocation(), startLoc)) {
-    fprintf(stderr, "invalid source location %s:%d:%d\n", filename, line,
-            column);
-    errorCode = -1;
-    goto teardown;
-  }
-
-  endLoc = clang_getLocation(TU, file, second_line, second_column);
-  if (clang_equalLocations(clang_getNullLocation(), endLoc)) {
-    fprintf(stderr, "invalid source location %s:%d:%d\n", filename,
-            second_line, second_column);
-    errorCode = -1;
-    goto teardown;
-  }
-
-  range = clang_getRange(startLoc, endLoc);
-  clang_tokenize(TU, range, &tokens, &num_tokens);
-
-  if (checkForErrors(TU) != 0) {
-    errorCode = -1;
-    goto teardown;
-  }
-
-  cursors = (CXCursor *)malloc(num_tokens * sizeof(CXCursor));
-  clang_annotateTokens(TU, tokens, num_tokens, cursors);
-
-  if (checkForErrors(TU) != 0) {
-    errorCode = -1;
-    goto teardown;
-  }
-
-  for (i = 0; i != num_tokens; ++i) {
-    const char *kind = "<unknown>";
-    CXString spelling = clang_getTokenSpelling(TU, tokens[i]);
-    CXSourceRange extent = clang_getTokenExtent(TU, tokens[i]);
-    unsigned start_line, start_column, end_line, end_column;
-
-    switch (clang_getTokenKind(tokens[i])) {
-    case CXToken_Punctuation: kind = "Punctuation"; break;
-    case CXToken_Keyword: kind = "Keyword"; break;
-    case CXToken_Identifier: kind = "Identifier"; break;
-    case CXToken_Literal: kind = "Literal"; break;
-    case CXToken_Comment: kind = "Comment"; break;
-    }
-    clang_getSpellingLocation(clang_getRangeStart(extent),
-                              0, &start_line, &start_column, 0);
-    clang_getSpellingLocation(clang_getRangeEnd(extent),
-                              0, &end_line, &end_column, 0);
-    printf("%s: \"%s\" ", kind, clang_getCString(spelling));
-    clang_disposeString(spelling);
-    PrintExtent(stdout, start_line, start_column, end_line, end_column);
-    if (!clang_isInvalid(cursors[i].kind)) {
-      printf(" ");
-      PrintCursor(cursors[i], NULL);
-    }
-    printf("\n");
-  }
-  free(cursors);
-  clang_disposeTokens(TU, tokens, num_tokens);
-
- teardown:
-  PrintDiagnostics(TU);
-  clang_disposeTranslationUnit(TU);
-  clang_disposeIndex(CIdx);
-  free(filename);
-  free_remapped_files(unsaved_files, num_unsaved_files);
-  return errorCode;
-}
-
-static int
-perform_test_compilation_db(const char *database, int argc, const char **argv) {
-  CXCompilationDatabase db;
-  CXCompileCommands CCmds;
-  CXCompileCommand CCmd;
-  CXCompilationDatabase_Error ec;
-  CXString wd;
-  CXString arg;
-  int errorCode = 0;
-  char *tmp;
-  unsigned len;
-  char *buildDir;
-  int i, j, a, numCmds, numArgs;
-
-  len = strlen(database);
-  tmp = (char *) malloc(len+1);
-  memcpy(tmp, database, len+1);
-  buildDir = dirname(tmp);
-
-  db = clang_CompilationDatabase_fromDirectory(buildDir, &ec);
-
-  if (db) {
-
-    if (ec!=CXCompilationDatabase_NoError) {
-      printf("unexpected error %d code while loading compilation database\n", ec);
-      errorCode = -1;
-      goto cdb_end;
-    }
-
-    for (i=0; i<argc && errorCode==0; ) {
-      if (strcmp(argv[i],"lookup")==0){
-        CCmds = clang_CompilationDatabase_getCompileCommands(db, argv[i+1]);
-
-        if (!CCmds) {
-          printf("file %s not found in compilation db\n", argv[i+1]);
-          errorCode = -1;
-          break;
-        }
-
-        numCmds = clang_CompileCommands_getSize(CCmds);
-
-        if (numCmds==0) {
-          fprintf(stderr, "should not get an empty compileCommand set for file"
-                          " '%s'\n", argv[i+1]);
-          errorCode = -1;
-          break;
-        }
-
-        for (j=0; j<numCmds; ++j) {
-          CCmd = clang_CompileCommands_getCommand(CCmds, j);
-
-          wd = clang_CompileCommand_getDirectory(CCmd);
-          printf("workdir:'%s'", clang_getCString(wd));
-          clang_disposeString(wd);
-
-          printf(" cmdline:'");
-          numArgs = clang_CompileCommand_getNumArgs(CCmd);
-          for (a=0; a<numArgs; ++a) {
-            if (a) printf(" ");
-            arg = clang_CompileCommand_getArg(CCmd, a);
-            printf("%s", clang_getCString(arg));
-            clang_disposeString(arg);
-          }
-          printf("'\n");
-        }
-
-        clang_CompileCommands_dispose(CCmds);
-
-        i += 2;
-      }
-    }
-    clang_CompilationDatabase_dispose(db);
-  } else {
-    printf("database loading failed with error code %d.\n", ec);
-    errorCode = -1;
-  }
-
-cdb_end:
-  free(tmp);
-
-  return errorCode;
-}
-
-/******************************************************************************/
-/* USR printing.                                                              */
-/******************************************************************************/
-
-static int insufficient_usr(const char *kind, const char *usage) {
-  fprintf(stderr, "USR for '%s' requires: %s\n", kind, usage);
-  return 1;
-}
-
-static unsigned isUSR(const char *s) {
-  return s[0] == 'c' && s[1] == ':';
-}
-
-static int not_usr(const char *s, const char *arg) {
-  fprintf(stderr, "'%s' argument ('%s') is not a USR\n", s, arg);
-  return 1;
-}
-
-static void print_usr(CXString usr) {
-  const char *s = clang_getCString(usr);
-  printf("%s\n", s);
-  clang_disposeString(usr);
-}
-
-static void display_usrs() {
-  fprintf(stderr, "-print-usrs options:\n"
-        " ObjCCategory <class name> <category name>\n"
-        " ObjCClass <class name>\n"
-        " ObjCIvar <ivar name> <class USR>\n"
-        " ObjCMethod <selector> [0=class method|1=instance method] "
-            "<class USR>\n"
-          " ObjCProperty <property name> <class USR>\n"
-          " ObjCProtocol <protocol name>\n");
-}
-
-int print_usrs(const char **I, const char **E) {
-  while (I != E) {
-    const char *kind = *I;
-    unsigned len = strlen(kind);
-    switch (len) {
-      case 8:
-        if (memcmp(kind, "ObjCIvar", 8) == 0) {
-          if (I + 2 >= E)
-            return insufficient_usr(kind, "<ivar name> <class USR>");
-          if (!isUSR(I[2]))
-            return not_usr("<class USR>", I[2]);
-          else {
-            CXString x;
-            x.data = (void*) I[2];
-            x.private_flags = 0;
-            print_usr(clang_constructUSR_ObjCIvar(I[1], x));
-          }
-
-          I += 3;
-          continue;
-        }
-        break;
-      case 9:
-        if (memcmp(kind, "ObjCClass", 9) == 0) {
-          if (I + 1 >= E)
-            return insufficient_usr(kind, "<class name>");
-          print_usr(clang_constructUSR_ObjCClass(I[1]));
-          I += 2;
-          continue;
-        }
-        break;
-      case 10:
-        if (memcmp(kind, "ObjCMethod", 10) == 0) {
-          if (I + 3 >= E)
-            return insufficient_usr(kind, "<method selector> "
-                "[0=class method|1=instance method] <class USR>");
-          if (!isUSR(I[3]))
-            return not_usr("<class USR>", I[3]);
-          else {
-            CXString x;
-            x.data = (void*) I[3];
-            x.private_flags = 0;
-            print_usr(clang_constructUSR_ObjCMethod(I[1], atoi(I[2]), x));
-          }
-          I += 4;
-          continue;
-        }
-        break;
-      case 12:
-        if (memcmp(kind, "ObjCCategory", 12) == 0) {
-          if (I + 2 >= E)
-            return insufficient_usr(kind, "<class name> <category name>");
-          print_usr(clang_constructUSR_ObjCCategory(I[1], I[2]));
-          I += 3;
-          continue;
-        }
-        if (memcmp(kind, "ObjCProtocol", 12) == 0) {
-          if (I + 1 >= E)
-            return insufficient_usr(kind, "<protocol name>");
-          print_usr(clang_constructUSR_ObjCProtocol(I[1]));
-          I += 2;
-          continue;
-        }
-        if (memcmp(kind, "ObjCProperty", 12) == 0) {
-          if (I + 2 >= E)
-            return insufficient_usr(kind, "<property name> <class USR>");
-          if (!isUSR(I[2]))
-            return not_usr("<class USR>", I[2]);
-          else {
-            CXString x;
-            x.data = (void*) I[2];
-            x.private_flags = 0;
-            print_usr(clang_constructUSR_ObjCProperty(I[1], x));
-          }
-          I += 3;
-          continue;
-        }
-        break;
-      default:
-        break;
-    }
-    break;
-  }
-
-  if (I != E) {
-    fprintf(stderr, "Invalid USR kind: %s\n", *I);
-    display_usrs();
-    return 1;
-  }
-  return 0;
-}
-
-int print_usrs_file(const char *file_name) {
-  char line[2048];
-  const char *args[128];
-  unsigned numChars = 0;
-
-  FILE *fp = fopen(file_name, "r");
-  if (!fp) {
-    fprintf(stderr, "error: cannot open '%s'\n", file_name);
-    return 1;
-  }
-
-  /* This code is not really all that safe, but it works fine for testing. */
-  while (!feof(fp)) {
-    char c = fgetc(fp);
-    if (c == '\n') {
-      unsigned i = 0;
-      const char *s = 0;
-
-      if (numChars == 0)
-        continue;
-
-      line[numChars] = '\0';
-      numChars = 0;
-
-      if (line[0] == '/' && line[1] == '/')
-        continue;
-
-      s = strtok(line, " ");
-      while (s) {
-        args[i] = s;
-        ++i;
-        s = strtok(0, " ");
-      }
-      if (print_usrs(&args[0], &args[i]))
-        return 1;
-    }
-    else
-      line[numChars++] = c;
-  }
-
-  fclose(fp);
-  return 0;
-}
-
-/******************************************************************************/
-/* Command line processing.                                                   */
-/******************************************************************************/
-int write_pch_file(const char *filename, int argc, const char *argv[]) {
-  CXIndex Idx;
-  CXTranslationUnit TU;
-  struct CXUnsavedFile *unsaved_files = 0;
-  int num_unsaved_files = 0;
-  int result = 0;
-  
-  Idx = clang_createIndex(/* excludeDeclsFromPCH */1, /* displayDiagnostics=*/1);
-  
-  if (parse_remapped_files(argc, argv, 0, &unsaved_files, &num_unsaved_files)) {
-    clang_disposeIndex(Idx);
-    return -1;
-  }
-  
-  TU = clang_parseTranslationUnit(Idx, 0,
-                                  argv + num_unsaved_files,
-                                  argc - num_unsaved_files,
-                                  unsaved_files,
-                                  num_unsaved_files,
-                                  CXTranslationUnit_Incomplete |
-                                  CXTranslationUnit_DetailedPreprocessingRecord|
-                                    CXTranslationUnit_ForSerialization);
-  if (!TU) {
-    fprintf(stderr, "Unable to load translation unit!\n");
-    free_remapped_files(unsaved_files, num_unsaved_files);
-    clang_disposeIndex(Idx);
-    return 1;
-  }
-
-  switch (clang_saveTranslationUnit(TU, filename, 
-                                    clang_defaultSaveOptions(TU))) {
-  case CXSaveError_None:
-    break;
-
-  case CXSaveError_TranslationErrors:
-    fprintf(stderr, "Unable to write PCH file %s: translation errors\n", 
-            filename);
-    result = 2;    
-    break;
-
-  case CXSaveError_InvalidTU:
-    fprintf(stderr, "Unable to write PCH file %s: invalid translation unit\n", 
-            filename);
-    result = 3;    
-    break;
-
-  case CXSaveError_Unknown:
-  default:
-    fprintf(stderr, "Unable to write PCH file %s: unknown error \n", filename);
-    result = 1;
-    break;
-  }
-  
-  clang_disposeTranslationUnit(TU);
-  free_remapped_files(unsaved_files, num_unsaved_files);
-  clang_disposeIndex(Idx);
-  return result;
-}
-
-/******************************************************************************/
-/* Serialized diagnostics.                                                    */
-/******************************************************************************/
-
-static const char *getDiagnosticCodeStr(enum CXLoadDiag_Error error) {
-  switch (error) {
-    case CXLoadDiag_CannotLoad: return "Cannot Load File";
-    case CXLoadDiag_None: break;
-    case CXLoadDiag_Unknown: return "Unknown";
-    case CXLoadDiag_InvalidFile: return "Invalid File";
-  }
-  return "None";
-}
-
-static const char *getSeverityString(enum CXDiagnosticSeverity severity) {
-  switch (severity) {
-    case CXDiagnostic_Note: return "note";
-    case CXDiagnostic_Error: return "error";
-    case CXDiagnostic_Fatal: return "fatal";
-    case CXDiagnostic_Ignored: return "ignored";
-    case CXDiagnostic_Warning: return "warning";
-  }
-  return "unknown";
-}
-
-static void printIndent(unsigned indent) {
-  if (indent == 0)
-    return;
-  fprintf(stderr, "+");
-  --indent;
-  while (indent > 0) {
-    fprintf(stderr, "-");
-    --indent;
-  }
-}
-
-static void printLocation(CXSourceLocation L) {
-  CXFile File;
-  CXString FileName;
-  unsigned line, column, offset;
-  
-  clang_getExpansionLocation(L, &File, &line, &column, &offset);
-  FileName = clang_getFileName(File);
-  
-  fprintf(stderr, "%s:%d:%d", clang_getCString(FileName), line, column);
-  clang_disposeString(FileName);
-}
-
-static void printRanges(CXDiagnostic D, unsigned indent) {
-  unsigned i, n = clang_getDiagnosticNumRanges(D);
-  
-  for (i = 0; i < n; ++i) {
-    CXSourceLocation Start, End;
-    CXSourceRange SR = clang_getDiagnosticRange(D, i);
-    Start = clang_getRangeStart(SR);
-    End = clang_getRangeEnd(SR);
-    
-    printIndent(indent);
-    fprintf(stderr, "Range: ");
-    printLocation(Start);
-    fprintf(stderr, " ");
-    printLocation(End);
-    fprintf(stderr, "\n");
-  }
-}
-
-static void printFixIts(CXDiagnostic D, unsigned indent) {
-  unsigned i, n = clang_getDiagnosticNumFixIts(D);
-  fprintf(stderr, "Number FIXITs = %d\n", n);
-  for (i = 0 ; i < n; ++i) {
-    CXSourceRange ReplacementRange;
-    CXString text;
-    text = clang_getDiagnosticFixIt(D, i, &ReplacementRange);
-    
-    printIndent(indent);
-    fprintf(stderr, "FIXIT: (");
-    printLocation(clang_getRangeStart(ReplacementRange));
-    fprintf(stderr, " - ");
-    printLocation(clang_getRangeEnd(ReplacementRange));
-    fprintf(stderr, "): \"%s\"\n", clang_getCString(text));
-    clang_disposeString(text);
-  }  
-}
-
-static void printDiagnosticSet(CXDiagnosticSet Diags, unsigned indent) {
-  unsigned i, n;
-
-  if (!Diags)
-    return;
-  
-  n = clang_getNumDiagnosticsInSet(Diags);
-  for (i = 0; i < n; ++i) {
-    CXSourceLocation DiagLoc;
-    CXDiagnostic D;
-    CXFile File;
-    CXString FileName, DiagSpelling, DiagOption, DiagCat;
-    unsigned line, column, offset;
-    const char *DiagOptionStr = 0, *DiagCatStr = 0;
-    
-    D = clang_getDiagnosticInSet(Diags, i);
-    DiagLoc = clang_getDiagnosticLocation(D);
-    clang_getExpansionLocation(DiagLoc, &File, &line, &column, &offset);
-    FileName = clang_getFileName(File);
-    DiagSpelling = clang_getDiagnosticSpelling(D);
-    
-    printIndent(indent);
-    
-    fprintf(stderr, "%s:%d:%d: %s: %s",
-            clang_getCString(FileName),
-            line,
-            column,
-            getSeverityString(clang_getDiagnosticSeverity(D)),
-            clang_getCString(DiagSpelling));
-
-    DiagOption = clang_getDiagnosticOption(D, 0);
-    DiagOptionStr = clang_getCString(DiagOption);
-    if (DiagOptionStr) {
-      fprintf(stderr, " [%s]", DiagOptionStr);
-    }
-    
-    DiagCat = clang_getDiagnosticCategoryText(D);
-    DiagCatStr = clang_getCString(DiagCat);
-    if (DiagCatStr) {
-      fprintf(stderr, " [%s]", DiagCatStr);
-    }
-    
-    fprintf(stderr, "\n");
-    
-    printRanges(D, indent);
-    printFixIts(D, indent);
-    
-    /* Print subdiagnostics. */
-    printDiagnosticSet(clang_getChildDiagnostics(D), indent+2);
-
-    clang_disposeString(FileName);
-    clang_disposeString(DiagSpelling);
-    clang_disposeString(DiagOption);
-  }  
-}
-
-static int read_diagnostics(const char *filename) {
-  enum CXLoadDiag_Error error;
-  CXString errorString;
-  CXDiagnosticSet Diags = 0;
-  
-  Diags = clang_loadDiagnostics(filename, &error, &errorString);
-  if (!Diags) {
-    fprintf(stderr, "Trouble deserializing file (%s): %s\n",
-            getDiagnosticCodeStr(error),
-            clang_getCString(errorString));
-    clang_disposeString(errorString);
-    return 1;
-  }
-  
-  printDiagnosticSet(Diags, 0);
-  fprintf(stderr, "Number of diagnostics: %d\n",
-          clang_getNumDiagnosticsInSet(Diags));
-  clang_disposeDiagnosticSet(Diags);
-  return 0;
-}
-
-/******************************************************************************/
-/* Command line processing.                                                   */
-/******************************************************************************/
-
-static CXCursorVisitor GetVisitor(const char *s) {
-  if (s[0] == '\0')
-    return FilteredPrintingVisitor;
-  if (strcmp(s, "-usrs") == 0)
-    return USRVisitor;
-  if (strncmp(s, "-memory-usage", 13) == 0)
-    return GetVisitor(s + 13);
-  return NULL;
-}
-
-static void print_usage(void) {
-  fprintf(stderr,
-    "usage: c-index-test -code-completion-at=<site> <compiler arguments>\n"
-    "       c-index-test -code-completion-timing=<site> <compiler arguments>\n"
-    "       c-index-test -cursor-at=<site> <compiler arguments>\n"
-    "       c-index-test -file-refs-at=<site> <compiler arguments>\n"
-    "       c-index-test -file-includes-in=<filename> <compiler arguments>\n");
-  fprintf(stderr,
-    "       c-index-test -index-file [-check-prefix=<FileCheck prefix>] <compiler arguments>\n"
-    "       c-index-test -index-file-full [-check-prefix=<FileCheck prefix>] <compiler arguments>\n"
-    "       c-index-test -index-tu [-check-prefix=<FileCheck prefix>] <AST file>\n"
-    "       c-index-test -index-compile-db [-check-prefix=<FileCheck prefix>] <compilation database>\n"
-    "       c-index-test -test-file-scan <AST file> <source file> "
-          "[FileCheck prefix]\n");
-  fprintf(stderr,
-    "       c-index-test -test-load-tu <AST file> <symbol filter> "
-          "[FileCheck prefix]\n"
-    "       c-index-test -test-load-tu-usrs <AST file> <symbol filter> "
-           "[FileCheck prefix]\n"
-    "       c-index-test -test-load-source <symbol filter> {<args>}*\n");
-  fprintf(stderr,
-    "       c-index-test -test-load-source-memory-usage "
-    "<symbol filter> {<args>}*\n"
-    "       c-index-test -test-load-source-reparse <trials> <symbol filter> "
-    "          {<args>}*\n"
-    "       c-index-test -test-load-source-usrs <symbol filter> {<args>}*\n"
-    "       c-index-test -test-load-source-usrs-memory-usage "
-          "<symbol filter> {<args>}*\n"
-    "       c-index-test -test-annotate-tokens=<range> {<args>}*\n"
-    "       c-index-test -test-inclusion-stack-source {<args>}*\n"
-    "       c-index-test -test-inclusion-stack-tu <AST file>\n");
-  fprintf(stderr,
-    "       c-index-test -test-print-linkage-source {<args>}*\n"
-    "       c-index-test -test-print-type {<args>}*\n"
-    "       c-index-test -test-print-type-size {<args>}*\n"
-    "       c-index-test -test-print-bitwidth {<args>}*\n"
-    "       c-index-test -print-usr [<CursorKind> {<args>}]*\n"
-    "       c-index-test -print-usr-file <file>\n"
-    "       c-index-test -write-pch <file> <compiler arguments>\n");
-  fprintf(stderr,
-    "       c-index-test -compilation-db [lookup <filename>] database\n");
-  fprintf(stderr,
-    "       c-index-test -read-diagnostics <file>\n\n");
-  fprintf(stderr,
-    " <symbol filter> values:\n%s",
-    "   all - load all symbols, including those from PCH\n"
-    "   local - load all symbols except those in PCH\n"
-    "   category - only load ObjC categories (non-PCH)\n"
-    "   interface - only load ObjC interfaces (non-PCH)\n"
-    "   protocol - only load ObjC protocols (non-PCH)\n"
-    "   function - only load functions (non-PCH)\n"
-    "   typedef - only load typdefs (non-PCH)\n"
-    "   scan-function - scan function bodies (non-PCH)\n\n");
-}
-
-/***/
-
-int cindextest_main(int argc, const char **argv) {
-  clang_enableStackTraces();
-  if (argc > 2 && strcmp(argv[1], "-read-diagnostics") == 0)
-      return read_diagnostics(argv[2]);
-  if (argc > 2 && strstr(argv[1], "-code-completion-at=") == argv[1])
-    return perform_code_completion(argc, argv, 0);
-  if (argc > 2 && strstr(argv[1], "-code-completion-timing=") == argv[1])
-    return perform_code_completion(argc, argv, 1);
-  if (argc > 2 && strstr(argv[1], "-cursor-at=") == argv[1])
-    return inspect_cursor_at(argc, argv);
-  if (argc > 2 && strstr(argv[1], "-file-refs-at=") == argv[1])
-    return find_file_refs_at(argc, argv);
-  if (argc > 2 && strstr(argv[1], "-file-includes-in=") == argv[1])
-    return find_file_includes_in(argc, argv);
-  if (argc > 2 && strcmp(argv[1], "-index-file") == 0)
-    return index_file(argc - 2, argv + 2, /*full=*/0);
-  if (argc > 2 && strcmp(argv[1], "-index-file-full") == 0)
-    return index_file(argc - 2, argv + 2, /*full=*/1);
-  if (argc > 2 && strcmp(argv[1], "-index-tu") == 0)
-    return index_tu(argc - 2, argv + 2);
-  if (argc > 2 && strcmp(argv[1], "-index-compile-db") == 0)
-    return index_compile_db(argc - 2, argv + 2);
-  else if (argc >= 4 && strncmp(argv[1], "-test-load-tu", 13) == 0) {
-    CXCursorVisitor I = GetVisitor(argv[1] + 13);
-    if (I)
-      return perform_test_load_tu(argv[2], argv[3], argc >= 5 ? argv[4] : 0, I,
-                                  NULL);
-  }
-  else if (argc >= 5 && strncmp(argv[1], "-test-load-source-reparse", 25) == 0){
-    CXCursorVisitor I = GetVisitor(argv[1] + 25);
-    if (I) {
-      int trials = atoi(argv[2]);
-      return perform_test_reparse_source(argc - 4, argv + 4, trials, argv[3], I, 
-                                         NULL);
-    }
-  }
-  else if (argc >= 4 && strncmp(argv[1], "-test-load-source", 17) == 0) {
-    CXCursorVisitor I = GetVisitor(argv[1] + 17);
-    
-    PostVisitTU postVisit = 0;
-    if (strstr(argv[1], "-memory-usage"))
-      postVisit = PrintMemoryUsage;
-    
-    if (I)
-      return perform_test_load_source(argc - 3, argv + 3, argv[2], I,
-                                      postVisit);
-  }
-  else if (argc >= 4 && strcmp(argv[1], "-test-file-scan") == 0)
-    return perform_file_scan(argv[2], argv[3],
-                             argc >= 5 ? argv[4] : 0);
-  else if (argc > 2 && strstr(argv[1], "-test-annotate-tokens=") == argv[1])
-    return perform_token_annotation(argc, argv);
-  else if (argc > 2 && strcmp(argv[1], "-test-inclusion-stack-source") == 0)
-    return perform_test_load_source(argc - 2, argv + 2, "all", NULL,
-                                    PrintInclusionStack);
-  else if (argc > 2 && strcmp(argv[1], "-test-inclusion-stack-tu") == 0)
-    return perform_test_load_tu(argv[2], "all", NULL, NULL,
-                                PrintInclusionStack);
-  else if (argc > 2 && strcmp(argv[1], "-test-print-linkage-source") == 0)
-    return perform_test_load_source(argc - 2, argv + 2, "all", PrintLinkage,
-                                    NULL);
-  else if (argc > 2 && strcmp(argv[1], "-test-print-type") == 0)
-    return perform_test_load_source(argc - 2, argv + 2, "all",
-                                    PrintType, 0);
-  else if (argc > 2 && strcmp(argv[1], "-test-print-type-size") == 0)
-    return perform_test_load_source(argc - 2, argv + 2, "all",
-                                    PrintTypeSize, 0);
-  else if (argc > 2 && strcmp(argv[1], "-test-print-bitwidth") == 0)
-    return perform_test_load_source(argc - 2, argv + 2, "all",
-                                    PrintBitWidth, 0);
-  else if (argc > 1 && strcmp(argv[1], "-print-usr") == 0) {
-    if (argc > 2)
-      return print_usrs(argv + 2, argv + argc);
-    else {
-      display_usrs();
-      return 1;
-    }
-  }
-  else if (argc > 2 && strcmp(argv[1], "-print-usr-file") == 0)
-    return print_usrs_file(argv[2]);
-  else if (argc > 2 && strcmp(argv[1], "-write-pch") == 0)
-    return write_pch_file(argv[2], argc - 3, argv + 3);
-  else if (argc > 2 && strcmp(argv[1], "-compilation-db") == 0)
-    return perform_test_compilation_db(argv[argc-1], argc - 3, argv + 2);
-
-  print_usage();
-  return 1;
-}
-
-/***/
-
-/* We intentionally run in a separate thread to ensure we at least minimal
- * testing of a multithreaded environment (for example, having a reduced stack
- * size). */
-
-typedef struct thread_info {
-  int argc;
-  const char **argv;
-  int result;
-} thread_info;
-void thread_runner(void *client_data_v) {
-  thread_info *client_data = client_data_v;
-  client_data->result = cindextest_main(client_data->argc, client_data->argv);
-#ifdef __CYGWIN__
-  fflush(stdout);  /* stdout is not flushed on Cygwin. */
-#endif
-}
-
-int main(int argc, const char **argv) {
-  thread_info client_data;
-
-#ifdef CLANG_HAVE_LIBXML
-  LIBXML_TEST_VERSION
-#endif
-
-  if (getenv("CINDEXTEST_NOTHREADS"))
-    return cindextest_main(argc, argv);
-
-  client_data.argc = argc;
-  client_data.argv = argv;
-  clang_executeOnThread(thread_runner, &client_data, 0);
-  return client_data.result;
-}

Modified: trunk/contrib/llvm/tools/clang/tools/clang-check/ClangCheck.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/clang-check/ClangCheck.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/clang-check/ClangCheck.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,154 +0,0 @@
-//===--- tools/clang-check/ClangCheck.cpp - Clang check tool --------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file implements a clang-check tool that runs clang based on the info
-//  stored in a compilation database.
-//
-//  This tool uses the Clang Tooling infrastructure, see
-//    http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
-//  for details on setting it up with LLVM source tree.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/ASTConsumer.h"
-#include "clang/Driver/OptTable.h"
-#include "clang/Driver/Options.h"
-#include "clang/Frontend/ASTConsumers.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Rewrite/Frontend/FixItRewriter.h"
-#include "clang/Rewrite/Frontend/FrontendActions.h"
-#include "clang/Tooling/CommonOptionsParser.h"
-#include "clang/Tooling/Tooling.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/Signals.h"
-
-using namespace clang::driver;
-using namespace clang::tooling;
-using namespace llvm;
-
-static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage);
-static cl::extrahelp MoreHelp(
-    "\tFor example, to run clang-check on all files in a subtree of the\n"
-    "\tsource tree, use:\n"
-    "\n"
-    "\t  find path/in/subtree -name '*.cpp'|xargs clang-check\n"
-    "\n"
-    "\tor using a specific build path:\n"
-    "\n"
-    "\t  find path/in/subtree -name '*.cpp'|xargs clang-check -p build/path\n"
-    "\n"
-    "\tNote, that path/in/subtree and current directory should follow the\n"
-    "\trules described above.\n"
-    "\n"
-);
-
-static OwningPtr<OptTable> Options(createDriverOptTable());
-static cl::opt<bool> ASTDump(
-    "ast-dump",
-    cl::desc(Options->getOptionHelpText(options::OPT_ast_dump)));
-static cl::opt<bool> ASTList(
-    "ast-list",
-    cl::desc(Options->getOptionHelpText(options::OPT_ast_list)));
-static cl::opt<bool> ASTPrint(
-    "ast-print",
-    cl::desc(Options->getOptionHelpText(options::OPT_ast_print)));
-static cl::opt<std::string> ASTDumpFilter(
-    "ast-dump-filter",
-    cl::desc(Options->getOptionHelpText(options::OPT_ast_dump_filter)));
-
-static cl::opt<bool> Fixit(
-    "fixit",
-    cl::desc(Options->getOptionHelpText(options::OPT_fixit)));
-static cl::opt<bool> FixWhatYouCan(
-    "fix-what-you-can",
-    cl::desc(Options->getOptionHelpText(options::OPT_fix_what_you_can)));
-
-namespace {
-
-// FIXME: Move FixItRewriteInPlace from lib/Rewrite/Frontend/FrontendActions.cpp
-// into a header file and reuse that.
-class FixItOptions : public clang::FixItOptions {
-public:
-  FixItOptions() {
-    FixWhatYouCan = ::FixWhatYouCan;
-  }
-
-  std::string RewriteFilename(const std::string& filename, int &fd) {
-    assert(llvm::sys::path::is_absolute(filename) &&
-           "clang-fixit expects absolute paths only.");
-
-    // We don't need to do permission checking here since clang will diagnose
-    // any I/O errors itself.
-
-    fd = -1;  // No file descriptor for file.
-
-    return filename;
-  }
-};
-
-/// \brief Subclasses \c clang::FixItRewriter to not count fixed errors/warnings
-/// in the final error counts.
-///
-/// This has the side-effect that clang-check -fixit exits with code 0 on
-/// successfully fixing all errors.
-class FixItRewriter : public clang::FixItRewriter {
-public:
-  FixItRewriter(clang::DiagnosticsEngine& Diags,
-                clang::SourceManager& SourceMgr,
-                const clang::LangOptions& LangOpts,
-                clang::FixItOptions* FixItOpts)
-      : clang::FixItRewriter(Diags, SourceMgr, LangOpts, FixItOpts) {
-  }
-
-  virtual bool IncludeInDiagnosticCounts() const { return false; }
-};
-
-/// \brief Subclasses \c clang::FixItAction so that we can install the custom
-/// \c FixItRewriter.
-class FixItAction : public clang::FixItAction {
-public:
-  virtual bool BeginSourceFileAction(clang::CompilerInstance& CI,
-                                     StringRef Filename) {
-    FixItOpts.reset(new FixItOptions);
-    Rewriter.reset(new FixItRewriter(CI.getDiagnostics(), CI.getSourceManager(),
-                                     CI.getLangOpts(), FixItOpts.get()));
-    return true;
-  }
-};
-
-} // namespace
-
-// Anonymous namespace here causes problems with gcc <= 4.4 on MacOS 10.6.
-// "Non-global symbol: ... can't be a weak_definition"
-namespace clang_check {
-class ClangCheckActionFactory {
-public:
-  clang::ASTConsumer *newASTConsumer() {
-    if (ASTList)
-      return clang::CreateASTDeclNodeLister();
-    if (ASTDump)
-      return clang::CreateASTDumper(ASTDumpFilter);
-    if (ASTPrint)
-      return clang::CreateASTPrinter(&llvm::outs(), ASTDumpFilter);
-    return new clang::ASTConsumer();
-  }
-};
-}
-
-int main(int argc, const char **argv) {
-  llvm::sys::PrintStackTraceOnErrorSignal();
-  CommonOptionsParser OptionsParser(argc, argv);
-  ClangTool Tool(OptionsParser.getCompilations(),
-                 OptionsParser.getSourcePathList());
-  if (Fixit)
-    return Tool.run(newFrontendActionFactory<FixItAction>());
-  clang_check::ClangCheckActionFactory Factory;
-  return Tool.run(newFrontendActionFactory(&Factory));
-}

Modified: trunk/contrib/llvm/tools/clang/tools/clang-format/ClangFormat.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/clang-format/ClangFormat.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/clang-format/ClangFormat.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,193 +0,0 @@
-//===-- clang-format/ClangFormat.cpp - Clang format tool ------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-///
-/// \file
-/// \brief This file implements a clang-format tool that automatically formats
-/// (fragments of) C++ code.
-///
-//===----------------------------------------------------------------------===//
-
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Format/Format.h"
-#include "clang/Lex/Lexer.h"
-#include "clang/Rewrite/Core/Rewriter.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Signals.h"
-
-using namespace llvm;
-
-static cl::opt<bool> Help("h", cl::desc("Alias for -help"), cl::Hidden);
-
-static cl::list<unsigned>
-Offsets("offset", cl::desc("Format a range starting at this file offset. Can "
-                           "only be used with one input file."));
-static cl::list<unsigned>
-Lengths("length", cl::desc("Format a range of this length. "
-                           "When it's not specified, end of file is used. "
-                           "Can only be used with one input file."));
-static cl::opt<std::string> Style(
-    "style",
-    cl::desc("Coding style, currently supports: LLVM, Google, Chromium, Mozilla."),
-    cl::init("LLVM"));
-static cl::opt<bool> Inplace("i",
-                             cl::desc("Inplace edit <file>s, if specified."));
-
-static cl::opt<bool> OutputXML(
-    "output-replacements-xml", cl::desc("Output replacements as XML."));
-
-static cl::list<std::string> FileNames(cl::Positional,
-                                       cl::desc("[<file> ...]"));
-
-namespace clang {
-namespace format {
-
-static FileID createInMemoryFile(StringRef FileName, const MemoryBuffer *Source,
-                                 SourceManager &Sources, FileManager &Files) {
-  const FileEntry *Entry = Files.getVirtualFile(FileName == "-" ? "<stdin>" :
-                                                    FileName,
-                                                Source->getBufferSize(), 0);
-  Sources.overrideFileContents(Entry, Source, true);
-  return Sources.createFileID(Entry, SourceLocation(), SrcMgr::C_User);
-}
-
-static FormatStyle getStyle() {
-  FormatStyle TheStyle = getGoogleStyle();
-  if (Style == "LLVM")
-    TheStyle = getLLVMStyle();
-  else if (Style == "Chromium")
-    TheStyle = getChromiumStyle();
-  else if (Style == "Mozilla")
-    TheStyle = getMozillaStyle();
-  else if (Style != "Google")
-    llvm::errs() << "Unknown style " << Style << ", using Google style.\n";
-
-  return TheStyle;
-}
-
-// Returns true on error.
-static bool format(std::string FileName) {
-  FileManager Files((FileSystemOptions()));
-  DiagnosticsEngine Diagnostics(
-      IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs),
-      new DiagnosticOptions);
-  SourceManager Sources(Diagnostics, Files);
-  OwningPtr<MemoryBuffer> Code;
-  if (error_code ec = MemoryBuffer::getFileOrSTDIN(FileName, Code)) {
-    llvm::errs() << ec.message() << "\n";
-    return true;
-  }
-  FileID ID = createInMemoryFile(FileName, Code.get(), Sources, Files);
-  Lexer Lex(ID, Sources.getBuffer(ID), Sources, getFormattingLangOpts());
-  if (Offsets.empty())
-    Offsets.push_back(0);
-  if (Offsets.size() != Lengths.size() &&
-      !(Offsets.size() == 1 && Lengths.empty())) {
-    llvm::errs()
-        << "error: number of -offset and -length arguments must match.\n";
-    return true;
-  }
-  std::vector<CharSourceRange> Ranges;
-  for (unsigned i = 0, e = Offsets.size(); i != e; ++i) {
-    if (Offsets[i] >= Code->getBufferSize()) {
-      llvm::errs() << "error: offset " << Offsets[i]
-                   << " is outside the file\n";
-      return true;
-    }
-    SourceLocation Start =
-        Sources.getLocForStartOfFile(ID).getLocWithOffset(Offsets[i]);
-    SourceLocation End;
-    if (i < Lengths.size()) {
-      if (Offsets[i] + Lengths[i] > Code->getBufferSize()) {
-        llvm::errs() << "error: invalid length " << Lengths[i]
-                     << ", offset + length (" << Offsets[i] + Lengths[i]
-                     << ") is outside the file.\n";
-        return true;
-      }
-      End = Start.getLocWithOffset(Lengths[i]);
-    } else {
-      End = Sources.getLocForEndOfFile(ID);
-    }
-    Ranges.push_back(CharSourceRange::getCharRange(Start, End));
-  }
-  tooling::Replacements Replaces = reformat(getStyle(), Lex, Sources, Ranges);
-  if (OutputXML) {
-    llvm::outs()
-        << "<?xml version='1.0'?>\n<replacements xml:space='preserve'>\n";
-    for (tooling::Replacements::const_iterator I = Replaces.begin(),
-                                               E = Replaces.end();
-         I != E; ++I) {
-      llvm::outs() << "<replacement "
-                   << "offset='" << I->getOffset() << "' "
-                   << "length='" << I->getLength() << "'>"
-                   << I->getReplacementText() << "</replacement>\n";
-    }
-    llvm::outs() << "</replacements>\n";
-  } else {
-    Rewriter Rewrite(Sources, LangOptions());
-    tooling::applyAllReplacements(Replaces, Rewrite);
-    if (Inplace) {
-      if (Replaces.size() == 0)
-        return false; // Nothing changed, don't touch the file.
-
-      std::string ErrorInfo;
-      llvm::raw_fd_ostream FileStream(FileName.c_str(), ErrorInfo,
-                                      llvm::raw_fd_ostream::F_Binary);
-      if (!ErrorInfo.empty()) {
-        llvm::errs() << "Error while writing file: " << ErrorInfo << "\n";
-        return true;
-      }
-      Rewrite.getEditBuffer(ID).write(FileStream);
-      FileStream.flush();
-    } else {
-      Rewrite.getEditBuffer(ID).write(outs());
-    }
-  }
-  return false;
-}
-
-}  // namespace format
-}  // namespace clang
-
-int main(int argc, const char **argv) {
-  llvm::sys::PrintStackTraceOnErrorSignal();
-  cl::ParseCommandLineOptions(
-      argc, argv,
-      "A tool to format C/C++/Obj-C code.\n\n"
-      "If no arguments are specified, it formats the code from standard input\n"
-      "and writes the result to the standard output.\n"
-      "If <file>s are given, it reformats the files. If -i is specified \n"
-      "together with <file>s, the files are edited in-place. Otherwise, the \n"
-      "result is written to the standard output.\n");
-
-  if (Help)
-    cl::PrintHelpMessage();
-
-  bool Error = false;
-  switch (FileNames.size()) {
-  case 0:
-    Error = clang::format::format("-");
-    break;
-  case 1:
-    Error = clang::format::format(FileNames[0]);
-    break;
-  default:
-    if (!Offsets.empty() || !Lengths.empty()) {
-      llvm::errs() << "error: \"-offset\" and \"-length\" can only be used for "
-                      "single file.\n";
-      return 1;
-    }
-    for (unsigned i = 0; i < FileNames.size(); ++i)
-      Error |= clang::format::format(FileNames[i]);
-    break;
-  }
-  return Error ? 1 : 0;
-}

Modified: trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format-bbedit.applescript
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format-bbedit.applescript	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format-bbedit.applescript	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
--- In this file, change "/path/to/" to the path where you installed clang-format
--- and save it to ~/Library/Application Support/BBEdit/Scripts. You can then
--- select the script from the Script menu and clang-format will format the
--- selection. Note that you can rename the menu item by renaming the script, and
--- can assign the menu item a keyboard shortcut in the BBEdit preferences, under
--- Menus & Shortcuts.
-on urlToPOSIXPath(theURL)
-	return do shell script "python -c \"import urllib, urlparse, sys; print urllib.unquote(urlparse.urlparse(sys.argv[1])[2])\" " & quoted form of theURL
-end urlToPOSIXPath
-
-tell application "BBEdit"
-	set selectionOffset to characterOffset of selection
-	set selectionLength to length of selection
-	set fileURL to URL of text document 1
-end tell
-
-set filePath to urlToPOSIXPath(fileURL)
-set newContents to do shell script "/path/to/clang-format -offset=" & selectionOffset & " -length=" & selectionLength & " " & quoted form of filePath
-
-tell application "BBEdit"
-	-- "set contents of text document 1 to newContents" scrolls to the bottom while
-	-- replacing a selection flashes a bit but doesn't affect the scroll position.
-	set currentLength to length of contents of text document 1
-	select characters 1 thru currentLength of text document 1
-	set text of selection to newContents
-	select characters selectionOffset thru (selectionOffset + selectionLength - 1) of text document 1
-end tell

Modified: trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format-diff.py
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format-diff.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format-diff.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,116 +0,0 @@
-#!/usr/bin/python
-#
-#===- clang-format-diff.py - ClangFormat Diff Reformatter ----*- python -*--===#
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-#===------------------------------------------------------------------------===#
-
-r"""
-ClangFormat Diff Reformatter
-============================
-
-This script reads input from a unified diff and reformats all the changed
-lines. This is useful to reformat all the lines touched by a specific patch.
-Example usage for git users:
-
-  git diff -U0 HEAD^ | clang-format-diff.py -p1
-
-"""
-
-import argparse
-import re
-import subprocess
-import sys
-
-
-# Change this to the full path if clang-format is not on the path.
-binary = 'clang-format'
-
-
-def getOffsetLength(filename, line_number, line_count):
-  """
-  Calculates the field offset and length based on line number and count.
-  """
-  offset = 0
-  length = 0
-  with open(filename, 'r') as f:
-    for line in f:
-      if line_number > 1:
-        offset += len(line)
-        line_number -= 1
-      elif line_count > 0:
-        length += len(line)
-        line_count -= 1
-      else:
-        break
-  return offset, length
-
-
-def formatRange(r, style):
-  """
-  Formats range 'r' according to style 'style'.
-  """
-  filename, line_number, line_count = r
-  # FIXME: Add other types containing C++/ObjC code.
-  if not (filename.endswith(".cpp") or filename.endswith(".cc") or
-          filename.endswith(".h")):
-    return
-
-  offset, length = getOffsetLength(filename, line_number, line_count)
-  with open(filename, 'r') as f:
-    text = f.read()
-  command = [binary, '-offset', str(offset), '-length', str(length)]
-  if style:
-    command.extend(['-style', style])
-  p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-                       stdin=subprocess.PIPE)
-  stdout, stderr = p.communicate(input=text)
-  if stderr:
-    print stderr
-    return
-  if not stdout:
-    print 'Segfault occurred while formatting', filename
-    print 'Please report a bug on llvm.org/bugs.'
-    return
-  with open(filename, 'w') as f:
-    f.write(stdout)
-
-
-def main():
-  parser = argparse.ArgumentParser(description=
-                                   'Reformat changed lines in diff')
-  parser.add_argument('-p', default=1,
-                      help='strip the smallest prefix containing P slashes')
-  parser.add_argument('-style',
-                      help='formatting style to apply (LLVM, Google, Chromium)')
-  args = parser.parse_args()
-
-  filename = None
-  ranges = []
-
-  for line in sys.stdin:
-    match = re.search('^\+\+\+\ (.*?/){%s}(\S*)' % args.p, line)
-    if match:
-      filename = match.group(2)
-    if filename == None:
-      continue
-
-    match = re.search('^@@.*\+(\d+)(,(\d+))?', line)
-    if match:
-      line_count = 1
-      if match.group(3):
-        line_count = int(match.group(3))
-      ranges.append((filename, int(match.group(1)), line_count))
-
-  # Reverse the ranges so that the reformatting does not influence file offsets.
-  for r in reversed(ranges):
-    # Do the actual formatting.
-    formatRange(r, args.style)
-
-
-if __name__ == '__main__':
-  main()

Modified: trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format.el
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format.el	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format.el	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,31 +0,0 @@
-;;; Clang-format emacs integration for use with C/Objective-C/C++.
-
-;; This defines a function clang-format-region that you can bind to a key.
-;; A minimal .emacs would contain:
-;;
-;;   (load "<path-to-clang>/tools/clang-format/clang-format.el")
-;;   (global-set-key [C-M-tab] 'clang-format-region)
-;;
-;; Depending on your configuration and coding style, you might need to modify
-;; 'style' and 'binary' below.
-(defun clang-format-region ()
-  (interactive)
-
-  (let* ((orig-windows (get-buffer-window-list (current-buffer)))
-         (orig-window-starts (mapcar #'window-start orig-windows))
-         (orig-point (point))
-         (binary "clang-format")
-         (style "LLVM"))
-    (if mark-active
-        (setq beg (region-beginning)
-              end (region-end))
-      (setq beg (min (line-beginning-position) (1- (point-max)))
-            end (min (line-end-position) (1- (point-max)))))
-    (call-process-region (point-min) (point-max) binary t t nil
-                         "-offset" (number-to-string (1- beg))
-                         "-length" (number-to-string (- end beg))
-                         "-style" style)
-    (goto-char orig-point)
-    (dotimes (index (length orig-windows))
-      (set-window-start (nth index orig-windows)
-                        (nth index orig-window-starts)))))

Modified: trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format.py
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/clang-format/clang-format.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-# This file is a minimal clang-format vim-integration. To install:
-# - Change 'binary' if clang-format is not on the path (see below).
-# - Add to your .vimrc:
-#
-#   map <C-I> :pyf <path-to-this-file>/clang-format.py<CR>
-#   imap <C-I> <ESC>:pyf <path-to-this-file>/clang-format.py<CR>i
-#
-# The first line enables clang-format for NORMAL and VISUAL mode, the second
-# line adds support for INSERT mode. Change "C-I" to another binding if you
-# need clang-format on a different key (C-I stands for Ctrl+i).
-#
-# With this integration you can press the bound key and clang-format will
-# format the current line in NORMAL and INSERT mode or the selected region in
-# VISUAL mode. The line or region is extended to the next bigger syntactic
-# entity.
-#
-# It operates on the current, potentially unsaved buffer and does not create
-# or save any files. To revert a formatting, just undo.
-
-import vim
-import subprocess
-
-# Change this to the full path if clang-format is not on the path.
-binary = 'clang-format'
-
-# Change this to format according to other formatting styles (see 
-# clang-format -help)
-style = 'LLVM'
-
-# Get the current text.
-buf = vim.current.buffer
-text = "\n".join(buf)
-
-# Determine range to format.
-offset = int(vim.eval('line2byte(' +
-                      str(vim.current.range.start + 1) + ')')) - 1
-length = int(vim.eval('line2byte(' +
-                      str(vim.current.range.end + 2) + ')')) - offset - 2
-
-# Call formatter.
-p = subprocess.Popen([binary, '-offset', str(offset), '-length', str(length),
-                      '-style', style],
-                     stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-                     stdin=subprocess.PIPE)
-stdout, stderr = p.communicate(input=text)
-
-# If successful, replace buffer contents.
-if stderr:
-  message = stderr.splitlines()[0]
-  parts = message.split(' ', 2)
-  if len(parts) > 2:
-    message = parts[2]
-  print 'Formatting failed: %s (total %d warnings, %d errors)' % (
-      message, stderr.count('warning:'), stderr.count('error:'))
-
-if not stdout:
-  print ('No output from clang-format (crashed?).\n' +
-      'Please report to bugs.llvm.org.')
-elif stdout != text:
-  lines = stdout.split('\n')
-  for i in range(min(len(buf), len(lines))):
-    buf[i] = lines[i]
-  for line in lines[len(buf):]:
-    buf.append(line)
-  del buf[len(lines):]

Modified: trunk/contrib/llvm/tools/clang/tools/diag-build/diag-build.sh
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diag-build/diag-build.sh	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diag-build/diag-build.sh	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,115 +0,0 @@
-#!/bin/bash
-
-print_usage () {
-    echo 'Usage: diag-build.sh [-v] xcodebuild [flags]'
-    echo '       diag-build.sh [-v] make [flags]'
-    echo '       diag-build.sh [-v] <other build command>'
-    echo
-    echo 'diagtool must be in your PATH'
-    echo 'If using an alternate build command, you must ensure that'
-    echo 'the compiler used matches the CC environment variable.'
-}
-
-# Mac OS X's BSD sed uses -E for extended regular expressions,
-# but GNU sed uses -r. Find out which one this system accepts.
-EXTENDED_SED_FLAG='-E'
-echo -n | sed $EXTENDED_SED_FLAG 's/a/b/' 2>/dev/null || EXTENDED_SED_FLAG='-r'
-
-if [[ "$1" == "-v" ]]; then
-    verbose=$1
-    shift
-fi
-
-guessing_cc=0
-
-if [[ -z "$CC" ]]; then
-    guessing_cc=1
-    if [[ -x $(dirname $0)/clang ]]; then
-	CC=$(dirname $0)/clang
-    elif [[ ! -z $(which clang) ]]; then
-	CC=$(which clang)
-    else
-	echo -n 'Error: could not find an appropriate compiler'
-	echo ' to generate build commands.' 1>&2
-	echo 'Use the CC environment variable to set one explicitly.' 1>&2
-	exit 1
-    fi
-fi
-
-if [[ -z "$CXX" ]]; then
-    if [[ -x $(dirname $0)/clang++ ]]; then
-	CXX=$(dirname $0)/clang++
-    elif [[ ! -z $(which clang++) ]]; then
-	CXX=$(which clang++)
-    else
-	CXX=$CC
-    fi
-fi
-
-diagtool=$(which diagtool)
-if [[ -z "$diagtool" ]]; then
-    if [[ -x $(dirname $0)/diagtool ]]; then
-	diagtool=$(dirname $0)/diagtool
-    else
-	echo 'Error: could not find diagtool.' 1>&2
-	exit 1
-    fi
-fi
-
-
-tool=$1
-shift
-
-if [[ -z "$tool" ]]; then
-    print_usage
-    exit 1
-elif [[ "$tool" == "xcodebuild" ]]; then
-    dry_run='-dry-run'
-    set_compiler="CC='$CC' CXX='$CXX'"
-elif [[ "$tool" == "make" ]]; then
-    dry_run='-n'
-    set_compiler="CC='$CC' CXX='$CXX'"
-else
-    echo "Warning: unknown build system '$tool'" 1>&2
-    if [[ $guessing_cc -eq 1 ]]; then
-	# FIXME: We really only need $CC /or/ $CXX
-	echo 'Error: $CC must be set for other build systems' 1>&2
-	exit 1
-    fi
-fi
-
-escape () {
-    echo $@ | sed 's:[]:\\|/.+*?^$(){}[]:\\&:g'
-}
-
-escCC=$(escape $CC)
-escCXX=$(escape $CXX)
-command=$(
-    eval $tool $dry_run $set_compiler $@ 2>/dev/null |
-    # Remove "if" early on so we can find the right command line.
-    sed $EXTENDED_SED_FLAG "s:^[[:blank:]]*if[[:blank:]]{1,}::g" |
-    # Combine lines with trailing backslashes
-    sed -e :a -e '/\\$/N; s/\\\n//; ta' |
-    grep -E "^[[:blank:]]*($escCC|$escCXX)" |
-    head -n1 |
-    sed $EXTENDED_SED_FLAG "s:($escCC|$escCXX):${diagtool//:/\\:} show-enabled:g"
-)
-
-if [[ -z "$command" ]]; then
-    echo 'Error: could not find any build commands.' 1>&2
-    if [[ "$tool" != "xcodebuild" ]]; then
-	# xcodebuild always echoes the compile commands on their own line,
-	# but other tools give no such guarantees.
-	echo -n 'This may occur if your build system embeds the call to ' 2>&1
-	echo -n 'the compiler in a larger expression. ' 2>&1
-    fi
-    exit 2
-fi
-
-# Chop off trailing '&&', '||', and ';'
-command=${command%%&&*}
-command=${command%%||*}
-command=${command%%;*}
-
-[[ -n "$verbose" ]] && echo $command
-eval $command

Modified: trunk/contrib/llvm/tools/clang/tools/diagtool/DiagTool.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diagtool/DiagTool.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diagtool/DiagTool.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,68 +0,0 @@
-//===- DiagTool.cpp - Classes for defining diagtool tools -------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the boilerplate for defining diagtool tools.
-//
-//===----------------------------------------------------------------------===//
-
-#include "DiagTool.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/StringMap.h"
-#include <vector>
-
-using namespace diagtool;
-
-DiagTool::DiagTool(llvm::StringRef toolCmd,
-                   llvm::StringRef toolDesc)
-  : cmd(toolCmd), description(toolDesc) {}
-
-DiagTool::~DiagTool() {}
-
-typedef llvm::StringMap<DiagTool *> ToolMap;
-static inline ToolMap *getTools(void *v) { return static_cast<ToolMap*>(v); }
-
-DiagTools::DiagTools() : tools(new ToolMap()) {}
-DiagTools::~DiagTools() { delete getTools(tools); }
-
-DiagTool *DiagTools::getTool(llvm::StringRef toolCmd) {
-  ToolMap::iterator it = getTools(tools)->find(toolCmd);
-  return (it == getTools(tools)->end()) ? 0 : it->getValue();
-}
-
-void DiagTools::registerTool(DiagTool *tool) {
-  getTools(tools)->GetOrCreateValue(tool->getName(), tool);  
-}
-
-void DiagTools::printCommands(llvm::raw_ostream &out) {
-  std::vector<llvm::StringRef> toolNames;
-  unsigned maxName = 0;
-  for (ToolMap::iterator it = getTools(tools)->begin(),
-       ei = getTools(tools)->end(); it != ei; ++it) {
-    toolNames.push_back(it->getKey());
-    unsigned len = it->getKey().size();
-    if (len > maxName)
-      maxName = len;    
-  }
-  std::sort(toolNames.begin(), toolNames.end());
-
-  for (std::vector<llvm::StringRef>::iterator it = toolNames.begin(),
-       ei = toolNames.end(); it != ei; ++it) {
-
-    out << "  " << (*it);
-    unsigned spaces = (maxName + 3) - (it->size());
-    for (unsigned i = 0; i < spaces; ++i)
-      out << ' ';
-    
-    out << getTool(*it)->getDescription() << '\n';    
-  }
-}
-
-namespace diagtool {
-  llvm::ManagedStatic<DiagTools> diagTools;
-}

Modified: trunk/contrib/llvm/tools/clang/tools/diagtool/DiagTool.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diagtool/DiagTool.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diagtool/DiagTool.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,70 +0,0 @@
-//===- DiagTool.h - Classes for defining diagtool tools -------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the boilerplate for defining diagtool tools.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef DIAGTOOL_DIAGTOOL_H
-#define DIAGTOOL_DIAGTOOL_H
-
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/raw_ostream.h"
-#include <string>
-
-
-namespace diagtool {
-
-class DiagTool {
-  const std::string cmd;
-  const std::string description;
-public:
-  DiagTool(llvm::StringRef toolCmd, llvm::StringRef toolDesc);
-  virtual ~DiagTool();
-  
-  llvm::StringRef getName() const { return cmd; }  
-  llvm::StringRef getDescription() const { return description; }  
-
-  virtual int run(unsigned argc, char *argv[], llvm::raw_ostream &out) = 0;
-};
-  
-class DiagTools {
-  void *tools;
-public:
-  DiagTools();
-  ~DiagTools();
-  
-  DiagTool *getTool(llvm::StringRef toolCmd);
-  void registerTool(DiagTool *tool);  
-  void printCommands(llvm::raw_ostream &out);  
-};
-
-extern llvm::ManagedStatic<DiagTools> diagTools;
-
-template <typename DIAGTOOL>
-class RegisterDiagTool {
-public:
-  RegisterDiagTool() { diagTools->registerTool(new DIAGTOOL()); }
-};
-
-} // end diagtool namespace
-
-#define DEF_DIAGTOOL(NAME, DESC, CLSNAME)\
-namespace {\
-class CLSNAME : public diagtool::DiagTool {\
-public:\
-  CLSNAME() : DiagTool(NAME, DESC) {}\
-  virtual ~CLSNAME() {}\
-  virtual int run(unsigned argc, char *argv[], llvm::raw_ostream &out);\
-};\
-diagtool::RegisterDiagTool<CLSNAME> Register##CLSNAME;\
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/diagtool/DiagnosticNames.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diagtool/DiagnosticNames.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diagtool/DiagnosticNames.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-//===- DiagnosticNames.cpp - Defines a table of all builtin diagnostics ----==//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "DiagnosticNames.h"
-#include "clang/Basic/AllDiagnostics.h"
-#include "llvm/ADT/STLExtras.h"
-
-using namespace clang;
-using namespace diagtool;
-
-static const DiagnosticRecord BuiltinDiagnosticsByName[] = {
-#define DIAG_NAME_INDEX(ENUM) { #ENUM, diag::ENUM, STR_SIZE(#ENUM, uint8_t) },
-#include "clang/Basic/DiagnosticIndexName.inc"
-#undef DIAG_NAME_INDEX
-};
-
-llvm::ArrayRef<DiagnosticRecord> diagtool::getBuiltinDiagnosticsByName() {
-  return llvm::makeArrayRef(BuiltinDiagnosticsByName);
-}
-
-
-// FIXME: Is it worth having two tables, especially when this one can get
-// out of sync easily?
-static const DiagnosticRecord BuiltinDiagnosticsByID[] = {
-#define DIAG(ENUM,CLASS,DEFAULT_MAPPING,DESC,GROUP,               \
-             SFINAE,ACCESS,NOWERROR,SHOWINSYSHEADER,              \
-             CATEGORY)                                            \
-  { #ENUM, diag::ENUM, STR_SIZE(#ENUM, uint8_t) },
-#include "clang/Basic/DiagnosticCommonKinds.inc"
-#include "clang/Basic/DiagnosticDriverKinds.inc"
-#include "clang/Basic/DiagnosticFrontendKinds.inc"
-#include "clang/Basic/DiagnosticSerializationKinds.inc"
-#include "clang/Basic/DiagnosticLexKinds.inc"
-#include "clang/Basic/DiagnosticParseKinds.inc"
-#include "clang/Basic/DiagnosticASTKinds.inc"
-#include "clang/Basic/DiagnosticCommentKinds.inc"
-#include "clang/Basic/DiagnosticSemaKinds.inc"
-#include "clang/Basic/DiagnosticAnalysisKinds.inc"
-#undef DIAG
-};
-
-static bool orderByID(const DiagnosticRecord &Left,
-                      const DiagnosticRecord &Right) {
-  return Left.DiagID < Right.DiagID;
-}
-
-const DiagnosticRecord &diagtool::getDiagnosticForID(short DiagID) {
-  DiagnosticRecord Key = {0, DiagID, 0};
-
-  const DiagnosticRecord *Result =
-    std::lower_bound(BuiltinDiagnosticsByID,
-                     llvm::array_endof(BuiltinDiagnosticsByID),
-                     Key, orderByID);
-  assert(Result && "diagnostic not found; table may be out of date");
-  return *Result;
-}
-
-
-#define GET_DIAG_ARRAYS
-#include "clang/Basic/DiagnosticGroups.inc"
-#undef GET_DIAG_ARRAYS
-
-// Second the table of options, sorted by name for fast binary lookup.
-static const GroupRecord OptionTable[] = {
-#define GET_DIAG_TABLE
-#include "clang/Basic/DiagnosticGroups.inc"
-#undef GET_DIAG_TABLE
-};
-
-llvm::ArrayRef<GroupRecord> diagtool::getDiagnosticGroups() {
-  return llvm::makeArrayRef(OptionTable);
-}

Modified: trunk/contrib/llvm/tools/clang/tools/diagtool/DiagnosticNames.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diagtool/DiagnosticNames.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diagtool/DiagnosticNames.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,128 +0,0 @@
-//===- DiagnosticNames.h - Defines a table of all builtin diagnostics ------==//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/ArrayRef.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/DataTypes.h"
-
-namespace diagtool {
-
-  struct DiagnosticRecord {
-    const char *NameStr;
-    short DiagID;
-    uint8_t NameLen;
-    
-    llvm::StringRef getName() const {
-      return llvm::StringRef(NameStr, NameLen);
-    }
-
-    bool operator<(const DiagnosticRecord &Other) const {
-      return getName() < Other.getName();
-    }
-  };
-
-  /// \brief Get every diagnostic in the system, sorted by name.
-  llvm::ArrayRef<DiagnosticRecord> getBuiltinDiagnosticsByName();
-
-  /// \brief Get a diagnostic by its ID.
-  const DiagnosticRecord &getDiagnosticForID(short DiagID);
-
-
-  struct GroupRecord {
-    // Be safe with the size of 'NameLen' because we don't statically check if
-    // the size will fit in the field; the struct size won't decrease with a
-    // shorter type anyway.
-    size_t NameLen;
-    const char *NameStr;
-    const short *Members;
-    const short *SubGroups;
-    
-    llvm::StringRef getName() const {
-      return llvm::StringRef(NameStr, NameLen);
-    }
-
-    template<typename RecordType>
-    class group_iterator {
-      const short *CurrentID;
-
-      friend struct GroupRecord;
-      group_iterator(const short *Start) : CurrentID(Start) {
-        if (CurrentID && *CurrentID == -1)
-          CurrentID = 0;
-      }
-
-    public:
-      typedef RecordType                 value_type;
-      typedef const value_type &         reference;
-      typedef const value_type *         pointer;
-      typedef std::forward_iterator_tag  iterator_category;
-      typedef std::ptrdiff_t             difference_type;
-
-      inline reference operator*() const;
-      inline pointer operator->() const {
-        return &operator*();
-      }
-
-      inline short getID() const {
-        return *CurrentID;
-      }
-
-      group_iterator &operator++() {
-        ++CurrentID;
-        if (*CurrentID == -1)
-          CurrentID = 0;
-        return *this;
-      }
-
-      bool operator==(group_iterator &Other) const {
-        return CurrentID == Other.CurrentID;
-      }
-      
-      bool operator!=(group_iterator &Other) const {
-        return CurrentID != Other.CurrentID;
-      }
-    };
-
-    typedef group_iterator<GroupRecord> subgroup_iterator;
-    subgroup_iterator subgroup_begin() const {
-      return SubGroups;
-    }
-    subgroup_iterator subgroup_end() const {
-      return 0;
-    }
-
-    typedef group_iterator<DiagnosticRecord> diagnostics_iterator;
-    diagnostics_iterator diagnostics_begin() const {
-      return Members;
-    }
-    diagnostics_iterator diagnostics_end() const {
-      return 0;
-    }
-
-    bool operator<(const GroupRecord &Other) const {
-      return getName() < Other.getName();
-    }
-  };
-
-  /// \brief Get every diagnostic group in the system, sorted by name.
-  llvm::ArrayRef<GroupRecord> getDiagnosticGroups();
-
-  template<>
-  inline GroupRecord::subgroup_iterator::reference
-  GroupRecord::subgroup_iterator::operator*() const {
-    return getDiagnosticGroups()[*CurrentID];
-  }
-
-  template<>
-  inline GroupRecord::diagnostics_iterator::reference
-  GroupRecord::diagnostics_iterator::operator*() const {
-    return getDiagnosticForID(*CurrentID);
-  }
-} // end namespace diagtool
-

Modified: trunk/contrib/llvm/tools/clang/tools/diagtool/ListWarnings.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diagtool/ListWarnings.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diagtool/ListWarnings.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,109 +0,0 @@
-//===- ListWarnings.h - diagtool tool for printing warning flags ----------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file provides a diagtool tool that displays warning flags for
-// diagnostics.
-//
-//===----------------------------------------------------------------------===//
-
-#include "DiagTool.h"
-#include "DiagnosticNames.h"
-#include "clang/AST/ASTDiagnostic.h"
-#include "clang/Basic/AllDiagnostics.h"
-#include "clang/Basic/Diagnostic.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/Support/Format.h"
-
-DEF_DIAGTOOL("list-warnings",
-             "List warnings and their corresponding flags",
-             ListWarnings)
-  
-using namespace clang;
-using namespace diagtool;
-
-namespace {
-struct Entry {
-  llvm::StringRef DiagName;
-  llvm::StringRef Flag;
-  
-  Entry(llvm::StringRef diagN, llvm::StringRef flag)
-    : DiagName(diagN), Flag(flag) {}
-  
-  bool operator<(const Entry &x) const { return DiagName < x.DiagName; }
-};
-}
-
-static void printEntries(std::vector<Entry> &entries, llvm::raw_ostream &out) {
-  for (std::vector<Entry>::iterator it = entries.begin(), ei = entries.end();
-       it != ei; ++it) {
-    out << "  " << it->DiagName;
-    if (!it->Flag.empty())
-      out << " [-W" << it->Flag << "]";
-    out << '\n';
-  }
-}
-
-int ListWarnings::run(unsigned int argc, char **argv, llvm::raw_ostream &out) {
-  std::vector<Entry> Flagged, Unflagged;
-  llvm::StringMap<std::vector<unsigned> > flagHistogram;
-  
-  ArrayRef<DiagnosticRecord> AllDiagnostics = getBuiltinDiagnosticsByName();
-
-  for (ArrayRef<DiagnosticRecord>::iterator di = AllDiagnostics.begin(),
-                                            de = AllDiagnostics.end();
-       di != de; ++di) {
-    unsigned diagID = di->DiagID;
-    
-    if (DiagnosticIDs::isBuiltinNote(diagID))
-      continue;
-        
-    if (!DiagnosticIDs::isBuiltinWarningOrExtension(diagID))
-      continue;
-  
-    Entry entry(di->getName(),
-                DiagnosticIDs::getWarningOptionForDiag(diagID));
-    
-    if (entry.Flag.empty())
-      Unflagged.push_back(entry);
-    else {
-      Flagged.push_back(entry);
-      flagHistogram.GetOrCreateValue(entry.Flag).getValue().push_back(diagID);
-    }
-  }
-  
-  out << "Warnings with flags (" << Flagged.size() << "):\n";
-  printEntries(Flagged, out);
-  
-  out << "Warnings without flags (" << Unflagged.size() << "):\n";
-  printEntries(Unflagged, out);
-
-  out << "\nSTATISTICS:\n\n";
-
-  double percentFlagged = ((double) Flagged.size()) 
-    / (Flagged.size() + Unflagged.size()) * 100.0;
-  
-  out << "  Percentage of warnings with flags: " 
-      << llvm::format("%.4g",percentFlagged) << "%\n";
-  
-  out << "  Number of unique flags: "
-      << flagHistogram.size() << '\n';
-  
-  double avgDiagsPerFlag = (double) Flagged.size() / flagHistogram.size();
-  out << "  Average number of diagnostics per flag: "
-      << llvm::format("%.4g", avgDiagsPerFlag) << '\n';
-    
-  out << "  Number in -Wpedantic (not covered by other -W flags): "
-      << flagHistogram.GetOrCreateValue("pedantic").getValue().size()
-      << '\n';
-  
-  out << '\n';
-  
-  return 0;
-}
-

Modified: trunk/contrib/llvm/tools/clang/tools/diagtool/ShowEnabledWarnings.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diagtool/ShowEnabledWarnings.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diagtool/ShowEnabledWarnings.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,147 +0,0 @@
-//===- ShowEnabledWarnings - diagtool tool for printing enabled flags -----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "DiagTool.h"
-#include "DiagnosticNames.h"
-#include "clang/Basic/LLVM.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/TextDiagnosticBuffer.h"
-#include "clang/Frontend/TextDiagnosticPrinter.h"
-#include "clang/Frontend/Utils.h"
-#include "llvm/Support/TargetSelect.h"
-
-DEF_DIAGTOOL("show-enabled",
-             "Show which warnings are enabled for a given command line",
-             ShowEnabledWarnings)
-
-using namespace clang;
-using namespace diagtool;
-
-namespace {
-  struct PrettyDiag {
-    StringRef Name;
-    StringRef Flag;
-    DiagnosticsEngine::Level Level;
-
-    PrettyDiag(StringRef name, StringRef flag, DiagnosticsEngine::Level level)
-    : Name(name), Flag(flag), Level(level) {}
-
-    bool operator<(const PrettyDiag &x) const { return Name < x.Name; }
-  };
-}
-
-static void printUsage() {
-  llvm::errs() << "Usage: diagtool show-enabled [<flags>] <single-input.c>\n";
-}
-
-static char getCharForLevel(DiagnosticsEngine::Level Level) {
-  switch (Level) {
-  case DiagnosticsEngine::Ignored: return ' ';
-  case DiagnosticsEngine::Note:    return '-';
-  case DiagnosticsEngine::Warning: return 'W';
-  case DiagnosticsEngine::Error:   return 'E';
-  case DiagnosticsEngine::Fatal:   return 'F';
-  }
-
-  llvm_unreachable("Unknown diagnostic level");
-}
-
-static IntrusiveRefCntPtr<DiagnosticsEngine>
-createDiagnostics(unsigned int argc, char **argv) {
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagIDs(new DiagnosticIDs());
-
-  // Buffer diagnostics from argument parsing so that we can output them using a
-  // well formed diagnostic object.
-  TextDiagnosticBuffer *DiagsBuffer = new TextDiagnosticBuffer;
-  IntrusiveRefCntPtr<DiagnosticsEngine> InterimDiags(
-    new DiagnosticsEngine(DiagIDs, new DiagnosticOptions(), DiagsBuffer));
-
-  // Try to build a CompilerInvocation.
-  OwningPtr<CompilerInvocation> Invocation(
-    createInvocationFromCommandLine(ArrayRef<const char *>(argv, argc),
-                                    InterimDiags));
-  if (!Invocation)
-    return NULL;
-
-  // Build the diagnostics parser
-  IntrusiveRefCntPtr<DiagnosticsEngine> FinalDiags =
-    CompilerInstance::createDiagnostics(&Invocation->getDiagnosticOpts());
-  if (!FinalDiags)
-    return NULL;
-  
-  // Flush any errors created when initializing everything. This could happen
-  // for invalid command lines, which will probably give non-sensical results.
-  DiagsBuffer->FlushDiagnostics(*FinalDiags);
-
-  return FinalDiags;
-}
-
-int ShowEnabledWarnings::run(unsigned int argc, char **argv, raw_ostream &Out) {
-  // First check our one flag (--levels).
-  bool ShouldShowLevels = true;
-  if (argc > 0) {
-    StringRef FirstArg(*argv);
-    if (FirstArg.equals("--no-levels")) {
-      ShouldShowLevels = false;
-      --argc;
-      ++argv;
-    } else if (FirstArg.equals("--levels")) {
-      ShouldShowLevels = true;
-      --argc;
-      ++argv;
-    }
-  }
-
-  // Create the diagnostic engine.
-  IntrusiveRefCntPtr<DiagnosticsEngine> Diags = createDiagnostics(argc, argv);
-  if (!Diags) {
-    printUsage();
-    return EXIT_FAILURE;
-  }
-
-  // Now we have our diagnostics. Iterate through EVERY diagnostic and see
-  // which ones are turned on.
-  // FIXME: It would be very nice to print which flags are turning on which
-  // diagnostics, but this can be done with a diff.
-  ArrayRef<DiagnosticRecord> AllDiagnostics = getBuiltinDiagnosticsByName();
-  std::vector<PrettyDiag> Active;
-
-  for (ArrayRef<DiagnosticRecord>::iterator I = AllDiagnostics.begin(),
-                                            E = AllDiagnostics.end();
-       I != E; ++I) {
-    unsigned DiagID = I->DiagID;
-    
-    if (DiagnosticIDs::isBuiltinNote(DiagID))
-      continue;
-    
-    if (!DiagnosticIDs::isBuiltinWarningOrExtension(DiagID))
-      continue;
-
-    DiagnosticsEngine::Level DiagLevel =
-      Diags->getDiagnosticLevel(DiagID, SourceLocation());
-    if (DiagLevel == DiagnosticsEngine::Ignored)
-      continue;
-
-    StringRef WarningOpt = DiagnosticIDs::getWarningOptionForDiag(DiagID);
-    Active.push_back(PrettyDiag(I->getName(), WarningOpt, DiagLevel));
-  }
-
-  // Print them all out.
-  for (std::vector<PrettyDiag>::const_iterator I = Active.begin(),
-       E = Active.end(); I != E; ++I) {
-    if (ShouldShowLevels)
-      Out << getCharForLevel(I->Level) << "  ";
-    Out << I->Name;
-    if (!I->Flag.empty())
-      Out << " [-W" << I->Flag << "]";
-    Out << '\n';
-  }
-
-  return EXIT_SUCCESS;
-}

Modified: trunk/contrib/llvm/tools/clang/tools/diagtool/TreeView.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diagtool/TreeView.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diagtool/TreeView.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,180 +0,0 @@
-//===- TreeView.cpp - diagtool tool for printing warning flags ------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This diagnostic tool 
-//
-//===----------------------------------------------------------------------===//
-
-#include "DiagTool.h"
-#include "DiagnosticNames.h"
-#include "clang/AST/ASTDiagnostic.h"
-#include "clang/Basic/AllDiagnostics.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "llvm/ADT/DenseSet.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/Support/Format.h"
-#include "llvm/Support/Process.h"
-
-DEF_DIAGTOOL("tree",
-             "Show warning flags in a tree view",
-             TreeView)
-  
-using namespace clang;
-using namespace diagtool;
-
-static void printUsage() {
-  llvm::errs() << "Usage: diagtool tree [--flags-only] [<diagnostic-group>]\n";
-}
-
-static bool showColors(llvm::raw_ostream &out) {
-  if (&out != &llvm::errs() && &out != &llvm::outs())
-    return false;
-  return llvm::errs().is_displayed() && llvm::outs().is_displayed();
-}
-
-static void setColor(bool ShowColors, llvm::raw_ostream &out,
-                     llvm::raw_ostream::Colors Color) {
-  if (ShowColors)
-    out << llvm::sys::Process::OutputColor(Color, false, false);
-}
-
-static void resetColor(bool ShowColors, llvm::raw_ostream &out) {
-  if (ShowColors)
-    out << llvm::sys::Process::ResetColor();
-}
-
-static clang::DiagnosticsEngine::Level getLevel(unsigned DiagID) {
-  // FIXME: This feels like a hack.
-  static clang::DiagnosticsEngine Diags(new DiagnosticIDs,
-                                        new DiagnosticOptions);
-  return Diags.getDiagnosticLevel(DiagID, SourceLocation());
-}
-
-static void printGroup(llvm::raw_ostream &out, const GroupRecord &Group,
-                       bool FlagsOnly, unsigned Indent = 0) {
-  out.indent(Indent * 2);
-  
-  bool ShowColors = showColors(out);
-  setColor(ShowColors, out, llvm::raw_ostream::YELLOW);
-  out << "-W" << Group.getName() << "\n";
-  resetColor(ShowColors, out);
-  
-  ++Indent;
-  for (GroupRecord::subgroup_iterator I = Group.subgroup_begin(),
-                                      E = Group.subgroup_end();
-       I != E; ++I) {
-    printGroup(out, *I, FlagsOnly, Indent);
-  }
-
-  if (!FlagsOnly) {
-    for (GroupRecord::diagnostics_iterator I = Group.diagnostics_begin(),
-                                           E = Group.diagnostics_end();
-         I != E; ++I) {
-      if (ShowColors) {
-        if (getLevel(I->DiagID) != DiagnosticsEngine::Ignored) {
-          setColor(ShowColors, out, llvm::raw_ostream::GREEN);
-        }
-      }
-      out.indent(Indent * 2);
-      out << I->getName();
-      resetColor(ShowColors, out);
-      out << "\n";
-    }
-  }
-}
-
-static int showGroup(llvm::raw_ostream &out, StringRef RootGroup,
-                     bool FlagsOnly) {
-  ArrayRef<GroupRecord> AllGroups = getDiagnosticGroups();
-
-  GroupRecord Key = { RootGroup.size(), RootGroup.data(), 0, 0 };
-  const GroupRecord *Found =
-    std::lower_bound(AllGroups.begin(), AllGroups.end(), Key);
-  
-  if (Found == AllGroups.end() || Found->getName() != RootGroup) {
-    llvm::errs() << "No such diagnostic group exists\n";
-    return 1;
-  }
-  
-  printGroup(out, *Found, FlagsOnly);
-  
-  return 0;
-}
-
-static int showAll(llvm::raw_ostream &out, bool FlagsOnly) {
-  ArrayRef<GroupRecord> AllGroups = getDiagnosticGroups();
-  llvm::DenseSet<unsigned> NonRootGroupIDs;
-
-  for (ArrayRef<GroupRecord>::iterator I = AllGroups.begin(),
-                                       E = AllGroups.end();
-       I != E; ++I) {
-    for (GroupRecord::subgroup_iterator SI = I->subgroup_begin(),
-                                        SE = I->subgroup_end();
-         SI != SE; ++SI) {
-      NonRootGroupIDs.insert((unsigned)SI.getID());
-    }
-  }
-
-  assert(NonRootGroupIDs.size() < AllGroups.size());
-
-  for (unsigned i = 0, e = AllGroups.size(); i != e; ++i) {
-    if (!NonRootGroupIDs.count(i))
-      printGroup(out, AllGroups[i], FlagsOnly);
-  }
-
-  return 0;
-}
-
-int TreeView::run(unsigned int argc, char **argv, llvm::raw_ostream &out) {
-  // First check our one flag (--flags-only).
-  bool FlagsOnly = false;
-  if (argc > 0) {
-    StringRef FirstArg(*argv);
-    if (FirstArg.equals("--flags-only")) {
-      FlagsOnly = true;
-      --argc;
-      ++argv;
-    }
-  }
-  
-  bool ShowAll = false;
-  StringRef RootGroup;
-
-  switch (argc) {
-  case 0:
-    ShowAll = true;
-    break;
-  case 1:
-    RootGroup = argv[0];
-    if (RootGroup.startswith("-W"))
-      RootGroup = RootGroup.substr(2);
-    if (RootGroup == "everything")
-      ShowAll = true;
-    // FIXME: Handle other special warning flags, like -pedantic.
-    break;
-  default:
-    printUsage();
-    return -1;
-  }
-
-  if (showColors(out)) {
-    out << '\n';
-    setColor(true, out, llvm::raw_ostream::GREEN);
-    out << "GREEN";
-    resetColor(true, out);
-    out << " = enabled by default\n\n";
-  }
-  
-  if (ShowAll)
-    return showAll(out, FlagsOnly);
-
-  return showGroup(out, RootGroup, FlagsOnly);
-}
-

Modified: trunk/contrib/llvm/tools/clang/tools/diagtool/diagtool_main.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/diagtool/diagtool_main.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/diagtool/diagtool_main.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-//===- diagtool_main.h - Entry point for invoking all diagnostic tools ----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the main function for diagtool.
-//
-//===----------------------------------------------------------------------===//
-
-#include "DiagTool.h"
-
-using namespace diagtool;
-
-int main(int argc, char *argv[]) {
-  if (argc > 1)
-    if (DiagTool *tool = diagTools->getTool(argv[1]))
-      return tool->run(argc - 2, &argv[2], llvm::outs());
-
-  llvm::errs() << "usage: diagtool <command> [<args>]\n\n";
-  diagTools->printCommands(llvm::errs());
-  return 1;    
-}

Modified: trunk/contrib/llvm/tools/clang/tools/driver/Info.plist.in
===================================================================
(Binary files differ)

Modified: trunk/contrib/llvm/tools/clang/tools/driver/clang_symlink.cmake
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/driver/clang_symlink.cmake	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/driver/clang_symlink.cmake	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-# We need to execute this script at installation time because the
-# DESTDIR environment variable may be unset at configuration time.
-# See PR8397.
-
-if(UNIX)
-  set(CLANGXX_LINK_OR_COPY create_symlink)
-  set(CLANGXX_DESTDIR $ENV{DESTDIR})
-else()
-  set(CLANGXX_LINK_OR_COPY copy)
-endif()
-
-# CMAKE_EXECUTABLE_SUFFIX is undefined on cmake scripts. See PR9286.
-if( WIN32 )
-  set(EXECUTABLE_SUFFIX ".exe")
-else()
-  set(EXECUTABLE_SUFFIX "")
-endif()
-
-set(bindir "${CLANGXX_DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/")
-set(clang "clang${EXECUTABLE_SUFFIX}")
-set(clangxx "clang++${EXECUTABLE_SUFFIX}")
-
-message("Creating clang++ executable based on ${clang}")
-
-execute_process(
-  COMMAND "${CMAKE_COMMAND}" -E ${CLANGXX_LINK_OR_COPY} "${clang}" "${clangxx}"
-  WORKING_DIRECTORY "${bindir}")

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/ARCMigrate.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/ARCMigrate.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/ARCMigrate.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,136 +0,0 @@
-//===- ARCMigrate.cpp - Clang-C ARC Migration Library ---------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the main API hooks in the Clang-C ARC Migration library.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang-c/Index.h"
-#include "CXString.h"
-#include "clang/ARCMigrate/ARCMT.h"
-#include "clang/Frontend/TextDiagnosticBuffer.h"
-#include "llvm/Support/FileSystem.h"
-
-using namespace clang;
-using namespace arcmt;
-
-namespace {
-
-struct Remap {
-  std::vector<std::pair<std::string, std::string> > Vec;
-};
-
-} // anonymous namespace.
-
-//===----------------------------------------------------------------------===//
-// libClang public APIs.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-
-CXRemapping clang_getRemappings(const char *migrate_dir_path) {
-  bool Logging = ::getenv("LIBCLANG_LOGGING");
-
-  if (!migrate_dir_path) {
-    if (Logging)
-      llvm::errs() << "clang_getRemappings was called with NULL parameter\n";
-    return 0;
-  }
-
-  bool exists = false;
-  llvm::sys::fs::exists(migrate_dir_path, exists);
-  if (!exists) {
-    if (Logging) {
-      llvm::errs() << "Error by clang_getRemappings(\"" << migrate_dir_path
-                   << "\")\n";
-      llvm::errs() << "\"" << migrate_dir_path << "\" does not exist\n";
-    }
-    return 0;
-  }
-
-  TextDiagnosticBuffer diagBuffer;
-  OwningPtr<Remap> remap(new Remap());
-
-  bool err = arcmt::getFileRemappings(remap->Vec, migrate_dir_path,&diagBuffer);
-
-  if (err) {
-    if (Logging) {
-      llvm::errs() << "Error by clang_getRemappings(\"" << migrate_dir_path
-                   << "\")\n";
-      for (TextDiagnosticBuffer::const_iterator
-             I = diagBuffer.err_begin(), E = diagBuffer.err_end(); I != E; ++I)
-        llvm::errs() << I->second << '\n';
-    }
-    return 0;
-  }
-
-  return remap.take();
-}
-
-CXRemapping clang_getRemappingsFromFileList(const char **filePaths,
-                                            unsigned numFiles) {
-  bool Logging = ::getenv("LIBCLANG_LOGGING");
-
-  OwningPtr<Remap> remap(new Remap());
-
-  if (numFiles == 0) {
-    if (Logging)
-      llvm::errs() << "clang_getRemappingsFromFileList was called with "
-                      "numFiles=0\n";
-    return remap.take();
-  }
-
-  if (!filePaths) {
-    if (Logging)
-      llvm::errs() << "clang_getRemappingsFromFileList was called with "
-                      "NULL filePaths\n";
-    return 0;
-  }
-
-  TextDiagnosticBuffer diagBuffer;
-  SmallVector<StringRef, 32> Files;
-  for (unsigned i = 0; i != numFiles; ++i)
-    Files.push_back(filePaths[i]);
-
-  bool err = arcmt::getFileRemappingsFromFileList(remap->Vec, Files,
-                                                  &diagBuffer);
-
-  if (err) {
-    if (Logging) {
-      llvm::errs() << "Error by clang_getRemappingsFromFileList\n";
-      for (TextDiagnosticBuffer::const_iterator
-             I = diagBuffer.err_begin(), E = diagBuffer.err_end(); I != E; ++I)
-        llvm::errs() << I->second << '\n';
-    }
-    return remap.take();
-  }
-
-  return remap.take();
-}
-
-unsigned clang_remap_getNumFiles(CXRemapping map) {
-  return static_cast<Remap *>(map)->Vec.size();
-  
-}
-
-void clang_remap_getFilenames(CXRemapping map, unsigned index,
-                              CXString *original, CXString *transformed) {
-  if (original)
-    *original = cxstring::createDup(
-                    static_cast<Remap *>(map)->Vec[index].first);
-  if (transformed)
-    *transformed = cxstring::createDup(
-                    static_cast<Remap *>(map)->Vec[index].second);
-}
-
-void clang_remap_dispose(CXRemapping map) {
-  delete static_cast<Remap *>(map);
-}
-
-} // end: extern "C"

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndex.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndex.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndex.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,6596 +0,0 @@
-//===- CIndex.cpp - Clang-C Source Indexing Library -----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the main API hooks in the Clang-C Source Indexing
-// library.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CIndexer.h"
-#include "CIndexDiagnostic.h"
-#include "CLog.h"
-#include "CXComment.h"
-#include "CXCursor.h"
-#include "CXSourceLocation.h"
-#include "CXString.h"
-#include "CXTranslationUnit.h"
-#include "CXType.h"
-#include "CursorVisitor.h"
-#include "SimpleFormatContext.h"
-#include "clang/AST/StmtVisitor.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/Version.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendDiagnostic.h"
-#include "clang/Lex/HeaderSearch.h"
-#include "clang/Lex/Lexer.h"
-#include "clang/Lex/PreprocessingRecord.h"
-#include "clang/Lex/Preprocessor.h"
-#include "llvm/ADT/Optional.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/StringSwitch.h"
-#include "llvm/Config/config.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/CrashRecoveryContext.h"
-#include "llvm/Support/Format.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/Mutex.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Program.h"
-#include "llvm/Support/SaveAndRestore.h"
-#include "llvm/Support/Signals.h"
-#include "llvm/Support/Threading.h"
-#include "llvm/Support/Timer.h"
-#include "llvm/Support/raw_ostream.h"
-
-#if HAVE_PTHREAD_H
-#include <pthread.h>
-#endif
-
-using namespace clang;
-using namespace clang::cxcursor;
-using namespace clang::cxtu;
-using namespace clang::cxindex;
-
-CXTranslationUnit cxtu::MakeCXTranslationUnit(CIndexer *CIdx, ASTUnit *AU) {
-  if (!AU)
-    return 0;
-  CXTranslationUnit D = new CXTranslationUnitImpl();
-  D->CIdx = CIdx;
-  D->TheASTUnit = AU;
-  D->StringPool = new cxstring::CXStringPool();
-  D->Diagnostics = 0;
-  D->OverridenCursorsPool = createOverridenCXCursorsPool();
-  D->FormatContext = 0;
-  D->FormatInMemoryUniqueId = 0;
-  return D;
-}
-
-cxtu::CXTUOwner::~CXTUOwner() {
-  if (TU)
-    clang_disposeTranslationUnit(TU);
-}
-
-/// \brief Compare two source ranges to determine their relative position in
-/// the translation unit.
-static RangeComparisonResult RangeCompare(SourceManager &SM,
-                                          SourceRange R1,
-                                          SourceRange R2) {
-  assert(R1.isValid() && "First range is invalid?");
-  assert(R2.isValid() && "Second range is invalid?");
-  if (R1.getEnd() != R2.getBegin() &&
-      SM.isBeforeInTranslationUnit(R1.getEnd(), R2.getBegin()))
-    return RangeBefore;
-  if (R2.getEnd() != R1.getBegin() &&
-      SM.isBeforeInTranslationUnit(R2.getEnd(), R1.getBegin()))
-    return RangeAfter;
-  return RangeOverlap;
-}
-
-/// \brief Determine if a source location falls within, before, or after a
-///   a given source range.
-static RangeComparisonResult LocationCompare(SourceManager &SM,
-                                             SourceLocation L, SourceRange R) {
-  assert(R.isValid() && "First range is invalid?");
-  assert(L.isValid() && "Second range is invalid?");
-  if (L == R.getBegin() || L == R.getEnd())
-    return RangeOverlap;
-  if (SM.isBeforeInTranslationUnit(L, R.getBegin()))
-    return RangeBefore;
-  if (SM.isBeforeInTranslationUnit(R.getEnd(), L))
-    return RangeAfter;
-  return RangeOverlap;
-}
-
-/// \brief Translate a Clang source range into a CIndex source range.
-///
-/// Clang internally represents ranges where the end location points to the
-/// start of the token at the end. However, for external clients it is more
-/// useful to have a CXSourceRange be a proper half-open interval. This routine
-/// does the appropriate translation.
-CXSourceRange cxloc::translateSourceRange(const SourceManager &SM,
-                                          const LangOptions &LangOpts,
-                                          const CharSourceRange &R) {
-  // We want the last character in this location, so we will adjust the
-  // location accordingly.
-  SourceLocation EndLoc = R.getEnd();
-  if (EndLoc.isValid() && EndLoc.isMacroID() && !SM.isMacroArgExpansion(EndLoc))
-    EndLoc = SM.getExpansionRange(EndLoc).second;
-  if (R.isTokenRange() && !EndLoc.isInvalid()) {
-    unsigned Length = Lexer::MeasureTokenLength(SM.getSpellingLoc(EndLoc),
-                                                SM, LangOpts);
-    EndLoc = EndLoc.getLocWithOffset(Length);
-  }
-
-  CXSourceRange Result = {
-    { &SM, &LangOpts },
-    R.getBegin().getRawEncoding(),
-    EndLoc.getRawEncoding()
-  };
-  return Result;
-}
-
-//===----------------------------------------------------------------------===//
-// Cursor visitor.
-//===----------------------------------------------------------------------===//
-
-static SourceRange getRawCursorExtent(CXCursor C);
-static SourceRange getFullCursorExtent(CXCursor C, SourceManager &SrcMgr);
-
-
-RangeComparisonResult CursorVisitor::CompareRegionOfInterest(SourceRange R) {
-  return RangeCompare(AU->getSourceManager(), R, RegionOfInterest);
-}
-
-/// \brief Visit the given cursor and, if requested by the visitor,
-/// its children.
-///
-/// \param Cursor the cursor to visit.
-///
-/// \param CheckedRegionOfInterest if true, then the caller already checked
-/// that this cursor is within the region of interest.
-///
-/// \returns true if the visitation should be aborted, false if it
-/// should continue.
-bool CursorVisitor::Visit(CXCursor Cursor, bool CheckedRegionOfInterest) {
-  if (clang_isInvalid(Cursor.kind))
-    return false;
-
-  if (clang_isDeclaration(Cursor.kind)) {
-    const Decl *D = getCursorDecl(Cursor);
-    if (!D) {
-      assert(0 && "Invalid declaration cursor");
-      return true; // abort.
-    }
-    
-    // Ignore implicit declarations, unless it's an objc method because
-    // currently we should report implicit methods for properties when indexing.
-    if (D->isImplicit() && !isa<ObjCMethodDecl>(D))
-      return false;
-  }
-
-  // If we have a range of interest, and this cursor doesn't intersect with it,
-  // we're done.
-  if (RegionOfInterest.isValid() && !CheckedRegionOfInterest) {
-    SourceRange Range = getRawCursorExtent(Cursor);
-    if (Range.isInvalid() || CompareRegionOfInterest(Range))
-      return false;
-  }
-
-  switch (Visitor(Cursor, Parent, ClientData)) {
-  case CXChildVisit_Break:
-    return true;
-
-  case CXChildVisit_Continue:
-    return false;
-
-  case CXChildVisit_Recurse: {
-    bool ret = VisitChildren(Cursor);
-    if (PostChildrenVisitor)
-      if (PostChildrenVisitor(Cursor, ClientData))
-        return true;
-    return ret;
-  }
-  }
-
-  llvm_unreachable("Invalid CXChildVisitResult!");
-}
-
-static bool visitPreprocessedEntitiesInRange(SourceRange R,
-                                             PreprocessingRecord &PPRec,
-                                             CursorVisitor &Visitor) {
-  SourceManager &SM = Visitor.getASTUnit()->getSourceManager();
-  FileID FID;
-  
-  if (!Visitor.shouldVisitIncludedEntities()) {
-    // If the begin/end of the range lie in the same FileID, do the optimization
-    // where we skip preprocessed entities that do not come from the same FileID.
-    FID = SM.getFileID(SM.getFileLoc(R.getBegin()));
-    if (FID != SM.getFileID(SM.getFileLoc(R.getEnd())))
-      FID = FileID();
-  }
-
-  std::pair<PreprocessingRecord::iterator, PreprocessingRecord::iterator>
-    Entities = PPRec.getPreprocessedEntitiesInRange(R);
-  return Visitor.visitPreprocessedEntities(Entities.first, Entities.second,
-                                           PPRec, FID);
-}
-
-bool CursorVisitor::visitFileRegion() {
-  if (RegionOfInterest.isInvalid())
-    return false;
-
-  ASTUnit *Unit = cxtu::getASTUnit(TU);
-  SourceManager &SM = Unit->getSourceManager();
-  
-  std::pair<FileID, unsigned>
-    Begin = SM.getDecomposedLoc(SM.getFileLoc(RegionOfInterest.getBegin())), 
-    End = SM.getDecomposedLoc(SM.getFileLoc(RegionOfInterest.getEnd())); 
-
-  if (End.first != Begin.first) {
-    // If the end does not reside in the same file, try to recover by
-    // picking the end of the file of begin location.
-    End.first = Begin.first;
-    End.second = SM.getFileIDSize(Begin.first);
-  }
-
-  assert(Begin.first == End.first);
-  if (Begin.second > End.second)
-    return false;
-  
-  FileID File = Begin.first;
-  unsigned Offset = Begin.second;
-  unsigned Length = End.second - Begin.second;
-
-  if (!VisitDeclsOnly && !VisitPreprocessorLast)
-    if (visitPreprocessedEntitiesInRegion())
-      return true; // visitation break.
-
-  if (visitDeclsFromFileRegion(File, Offset, Length))
-    return true; // visitation break.
-
-  if (!VisitDeclsOnly && VisitPreprocessorLast)
-    return visitPreprocessedEntitiesInRegion();
-
-  return false;
-}
-
-static bool isInLexicalContext(Decl *D, DeclContext *DC) {
-  if (!DC)
-    return false;
-
-  for (DeclContext *DeclDC = D->getLexicalDeclContext();
-         DeclDC; DeclDC = DeclDC->getLexicalParent()) {
-    if (DeclDC == DC)
-      return true;
-  }
-  return false;
-}
-
-bool CursorVisitor::visitDeclsFromFileRegion(FileID File,
-                                             unsigned Offset, unsigned Length) {
-  ASTUnit *Unit = cxtu::getASTUnit(TU);
-  SourceManager &SM = Unit->getSourceManager();
-  SourceRange Range = RegionOfInterest;
-
-  SmallVector<Decl *, 16> Decls;
-  Unit->findFileRegionDecls(File, Offset, Length, Decls);
-
-  // If we didn't find any file level decls for the file, try looking at the
-  // file that it was included from.
-  while (Decls.empty() || Decls.front()->isTopLevelDeclInObjCContainer()) {
-    bool Invalid = false;
-    const SrcMgr::SLocEntry &SLEntry = SM.getSLocEntry(File, &Invalid);
-    if (Invalid)
-      return false;
-
-    SourceLocation Outer;
-    if (SLEntry.isFile())
-      Outer = SLEntry.getFile().getIncludeLoc();
-    else
-      Outer = SLEntry.getExpansion().getExpansionLocStart();
-    if (Outer.isInvalid())
-      return false;
-
-    llvm::tie(File, Offset) = SM.getDecomposedExpansionLoc(Outer);
-    Length = 0;
-    Unit->findFileRegionDecls(File, Offset, Length, Decls);
-  }
-
-  assert(!Decls.empty());
-
-  bool VisitedAtLeastOnce = false;
-  DeclContext *CurDC = 0;
-  SmallVector<Decl *, 16>::iterator DIt = Decls.begin();
-  for (SmallVector<Decl *, 16>::iterator DE = Decls.end(); DIt != DE; ++DIt) {
-    Decl *D = *DIt;
-    if (D->getSourceRange().isInvalid())
-      continue;
-
-    if (isInLexicalContext(D, CurDC))
-      continue;
-
-    CurDC = dyn_cast<DeclContext>(D);
-
-    if (TagDecl *TD = dyn_cast<TagDecl>(D))
-      if (!TD->isFreeStanding())
-        continue;
-
-    RangeComparisonResult CompRes = RangeCompare(SM, D->getSourceRange(),Range);
-    if (CompRes == RangeBefore)
-      continue;
-    if (CompRes == RangeAfter)
-      break;
-
-    assert(CompRes == RangeOverlap);
-    VisitedAtLeastOnce = true;
-
-    if (isa<ObjCContainerDecl>(D)) {
-      FileDI_current = &DIt;
-      FileDE_current = DE;
-    } else {
-      FileDI_current = 0;
-    }
-
-    if (Visit(MakeCXCursor(D, TU, Range), /*CheckedRegionOfInterest=*/true))
-      return true; // visitation break.
-  }
-
-  if (VisitedAtLeastOnce)
-    return false;
-
-  // No Decls overlapped with the range. Move up the lexical context until there
-  // is a context that contains the range or we reach the translation unit
-  // level.
-  DeclContext *DC = DIt == Decls.begin() ? (*DIt)->getLexicalDeclContext()
-                                         : (*(DIt-1))->getLexicalDeclContext();
-
-  while (DC && !DC->isTranslationUnit()) {
-    Decl *D = cast<Decl>(DC);
-    SourceRange CurDeclRange = D->getSourceRange();
-    if (CurDeclRange.isInvalid())
-      break;
-
-    if (RangeCompare(SM, CurDeclRange, Range) == RangeOverlap) {
-      if (Visit(MakeCXCursor(D, TU, Range), /*CheckedRegionOfInterest=*/true))
-        return true; // visitation break.
-    }
-
-    DC = D->getLexicalDeclContext();
-  }
-
-  return false;
-}
-
-bool CursorVisitor::visitPreprocessedEntitiesInRegion() {
-  if (!AU->getPreprocessor().getPreprocessingRecord())
-    return false;
-
-  PreprocessingRecord &PPRec
-    = *AU->getPreprocessor().getPreprocessingRecord();
-  SourceManager &SM = AU->getSourceManager();
-  
-  if (RegionOfInterest.isValid()) {
-    SourceRange MappedRange = AU->mapRangeToPreamble(RegionOfInterest);
-    SourceLocation B = MappedRange.getBegin();
-    SourceLocation E = MappedRange.getEnd();
-
-    if (AU->isInPreambleFileID(B)) {
-      if (SM.isLoadedSourceLocation(E))
-        return visitPreprocessedEntitiesInRange(SourceRange(B, E),
-                                                 PPRec, *this);
-
-      // Beginning of range lies in the preamble but it also extends beyond
-      // it into the main file. Split the range into 2 parts, one covering
-      // the preamble and another covering the main file. This allows subsequent
-      // calls to visitPreprocessedEntitiesInRange to accept a source range that
-      // lies in the same FileID, allowing it to skip preprocessed entities that
-      // do not come from the same FileID.
-      bool breaked =
-        visitPreprocessedEntitiesInRange(
-                                   SourceRange(B, AU->getEndOfPreambleFileID()),
-                                          PPRec, *this);
-      if (breaked) return true;
-      return visitPreprocessedEntitiesInRange(
-                                    SourceRange(AU->getStartOfMainFileID(), E),
-                                        PPRec, *this);
-    }
-
-    return visitPreprocessedEntitiesInRange(SourceRange(B, E), PPRec, *this);
-  }
-
-  bool OnlyLocalDecls
-    = !AU->isMainFileAST() && AU->getOnlyLocalDecls(); 
-  
-  if (OnlyLocalDecls)
-    return visitPreprocessedEntities(PPRec.local_begin(), PPRec.local_end(),
-                                     PPRec);
-
-  return visitPreprocessedEntities(PPRec.begin(), PPRec.end(), PPRec);
-}
-
-template<typename InputIterator>
-bool CursorVisitor::visitPreprocessedEntities(InputIterator First,
-                                              InputIterator Last,
-                                              PreprocessingRecord &PPRec,
-                                              FileID FID) {
-  for (; First != Last; ++First) {
-    if (!FID.isInvalid() && !PPRec.isEntityInFileID(First, FID))
-      continue;
-
-    PreprocessedEntity *PPE = *First;
-    if (MacroExpansion *ME = dyn_cast<MacroExpansion>(PPE)) {
-      if (Visit(MakeMacroExpansionCursor(ME, TU)))
-        return true;
-      
-      continue;
-    }
-    
-    if (MacroDefinition *MD = dyn_cast<MacroDefinition>(PPE)) {
-      if (Visit(MakeMacroDefinitionCursor(MD, TU)))
-        return true;
-      
-      continue;
-    }
-    
-    if (InclusionDirective *ID = dyn_cast<InclusionDirective>(PPE)) {
-      if (Visit(MakeInclusionDirectiveCursor(ID, TU)))
-        return true;
-      
-      continue;
-    }
-  }
-
-  return false;
-}
-
-/// \brief Visit the children of the given cursor.
-/// 
-/// \returns true if the visitation should be aborted, false if it
-/// should continue.
-bool CursorVisitor::VisitChildren(CXCursor Cursor) {
-  if (clang_isReference(Cursor.kind) && 
-      Cursor.kind != CXCursor_CXXBaseSpecifier) {
-    // By definition, references have no children.
-    return false;
-  }
-
-  // Set the Parent field to Cursor, then back to its old value once we're
-  // done.
-  SetParentRAII SetParent(Parent, StmtParent, Cursor);
-
-  if (clang_isDeclaration(Cursor.kind)) {
-    Decl *D = const_cast<Decl *>(getCursorDecl(Cursor));
-    if (!D)
-      return false;
-
-    return VisitAttributes(D) || Visit(D);
-  }
-
-  if (clang_isStatement(Cursor.kind)) {
-    if (const Stmt *S = getCursorStmt(Cursor))
-      return Visit(S);
-
-    return false;
-  }
-
-  if (clang_isExpression(Cursor.kind)) {
-    if (const Expr *E = getCursorExpr(Cursor))
-      return Visit(E);
-
-    return false;
-  }
-
-  if (clang_isTranslationUnit(Cursor.kind)) {
-    CXTranslationUnit TU = getCursorTU(Cursor);
-    ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-    
-    int VisitOrder[2] = { VisitPreprocessorLast, !VisitPreprocessorLast };
-    for (unsigned I = 0; I != 2; ++I) {
-      if (VisitOrder[I]) {
-        if (!CXXUnit->isMainFileAST() && CXXUnit->getOnlyLocalDecls() &&
-            RegionOfInterest.isInvalid()) {
-          for (ASTUnit::top_level_iterator TL = CXXUnit->top_level_begin(),
-                                        TLEnd = CXXUnit->top_level_end();
-               TL != TLEnd; ++TL) {
-            if (Visit(MakeCXCursor(*TL, TU, RegionOfInterest), true))
-              return true;
-          }
-        } else if (VisitDeclContext(
-                                CXXUnit->getASTContext().getTranslationUnitDecl()))
-          return true;
-        continue;
-      }
-
-      // Walk the preprocessing record.
-      if (CXXUnit->getPreprocessor().getPreprocessingRecord())
-        visitPreprocessedEntitiesInRegion();
-    }
-    
-    return false;
-  }
-
-  if (Cursor.kind == CXCursor_CXXBaseSpecifier) {
-    if (const CXXBaseSpecifier *Base = getCursorCXXBaseSpecifier(Cursor)) {
-      if (TypeSourceInfo *BaseTSInfo = Base->getTypeSourceInfo()) {
-        return Visit(BaseTSInfo->getTypeLoc());
-      }
-    }
-  }
-
-  if (Cursor.kind == CXCursor_IBOutletCollectionAttr) {
-    const IBOutletCollectionAttr *A =
-      cast<IBOutletCollectionAttr>(cxcursor::getCursorAttr(Cursor));
-    if (const ObjCInterfaceType *InterT = A->getInterface()->getAs<ObjCInterfaceType>())
-      return Visit(cxcursor::MakeCursorObjCClassRef(InterT->getInterface(),
-                                                    A->getInterfaceLoc(), TU));
-  }
-
-  // If pointing inside a macro definition, check if the token is an identifier
-  // that was ever defined as a macro. In such a case, create a "pseudo" macro
-  // expansion cursor for that token.
-  SourceLocation BeginLoc = RegionOfInterest.getBegin();
-  if (Cursor.kind == CXCursor_MacroDefinition &&
-      BeginLoc == RegionOfInterest.getEnd()) {
-    SourceLocation Loc = AU->mapLocationToPreamble(BeginLoc);
-    const MacroInfo *MI =
-        getMacroInfo(cxcursor::getCursorMacroDefinition(Cursor), TU);
-    if (MacroDefinition *MacroDef =
-          checkForMacroInMacroDefinition(MI, Loc, TU))
-      return Visit(cxcursor::MakeMacroExpansionCursor(MacroDef, BeginLoc, TU));
-  }
-
-  // Nothing to visit at the moment.
-  return false;
-}
-
-bool CursorVisitor::VisitBlockDecl(BlockDecl *B) {
-  if (TypeSourceInfo *TSInfo = B->getSignatureAsWritten())
-    if (Visit(TSInfo->getTypeLoc()))
-        return true;
-
-  if (Stmt *Body = B->getBody())
-    return Visit(MakeCXCursor(Body, StmtParent, TU, RegionOfInterest));
-
-  return false;
-}
-
-Optional<bool> CursorVisitor::shouldVisitCursor(CXCursor Cursor) {
-  if (RegionOfInterest.isValid()) {
-    SourceRange Range = getFullCursorExtent(Cursor, AU->getSourceManager());
-    if (Range.isInvalid())
-      return None;
-    
-    switch (CompareRegionOfInterest(Range)) {
-    case RangeBefore:
-      // This declaration comes before the region of interest; skip it.
-      return None;
-
-    case RangeAfter:
-      // This declaration comes after the region of interest; we're done.
-      return false;
-
-    case RangeOverlap:
-      // This declaration overlaps the region of interest; visit it.
-      break;
-    }
-  }
-  return true;
-}
-
-bool CursorVisitor::VisitDeclContext(DeclContext *DC) {
-  DeclContext::decl_iterator I = DC->decls_begin(), E = DC->decls_end();
-
-  // FIXME: Eventually remove.  This part of a hack to support proper
-  // iteration over all Decls contained lexically within an ObjC container.
-  SaveAndRestore<DeclContext::decl_iterator*> DI_saved(DI_current, &I);
-  SaveAndRestore<DeclContext::decl_iterator> DE_saved(DE_current, E);
-
-  for ( ; I != E; ++I) {
-    Decl *D = *I;
-    if (D->getLexicalDeclContext() != DC)
-      continue;
-    CXCursor Cursor = MakeCXCursor(D, TU, RegionOfInterest);
-
-    // Ignore synthesized ivars here, otherwise if we have something like:
-    //   @synthesize prop = _prop;
-    // and '_prop' is not declared, we will encounter a '_prop' ivar before
-    // encountering the 'prop' synthesize declaration and we will think that
-    // we passed the region-of-interest.
-    if (ObjCIvarDecl *ivarD = dyn_cast<ObjCIvarDecl>(D)) {
-      if (ivarD->getSynthesize())
-        continue;
-    }
-
-    // FIXME: ObjCClassRef/ObjCProtocolRef for forward class/protocol
-    // declarations is a mismatch with the compiler semantics.
-    if (Cursor.kind == CXCursor_ObjCInterfaceDecl) {
-      ObjCInterfaceDecl *ID = cast<ObjCInterfaceDecl>(D);
-      if (!ID->isThisDeclarationADefinition())
-        Cursor = MakeCursorObjCClassRef(ID, ID->getLocation(), TU);
-
-    } else if (Cursor.kind == CXCursor_ObjCProtocolDecl) {
-      ObjCProtocolDecl *PD = cast<ObjCProtocolDecl>(D);
-      if (!PD->isThisDeclarationADefinition())
-        Cursor = MakeCursorObjCProtocolRef(PD, PD->getLocation(), TU);
-    }
-
-    const Optional<bool> &V = shouldVisitCursor(Cursor);
-    if (!V.hasValue())
-      continue;
-    if (!V.getValue())
-      return false;
-    if (Visit(Cursor, true))
-      return true;
-  }
-  return false;
-}
-
-bool CursorVisitor::VisitTranslationUnitDecl(TranslationUnitDecl *D) {
-  llvm_unreachable("Translation units are visited directly by Visit()");
-}
-
-bool CursorVisitor::VisitTypeAliasDecl(TypeAliasDecl *D) {
-  if (TypeSourceInfo *TSInfo = D->getTypeSourceInfo())
-    return Visit(TSInfo->getTypeLoc());
-
-  return false;
-}
-
-bool CursorVisitor::VisitTypedefDecl(TypedefDecl *D) {
-  if (TypeSourceInfo *TSInfo = D->getTypeSourceInfo())
-    return Visit(TSInfo->getTypeLoc());
-
-  return false;
-}
-
-bool CursorVisitor::VisitTagDecl(TagDecl *D) {
-  return VisitDeclContext(D);
-}
-
-bool CursorVisitor::VisitClassTemplateSpecializationDecl(
-                                          ClassTemplateSpecializationDecl *D) {
-  bool ShouldVisitBody = false;
-  switch (D->getSpecializationKind()) {
-  case TSK_Undeclared:
-  case TSK_ImplicitInstantiation:
-    // Nothing to visit
-    return false;
-      
-  case TSK_ExplicitInstantiationDeclaration:
-  case TSK_ExplicitInstantiationDefinition:
-    break;
-      
-  case TSK_ExplicitSpecialization:
-    ShouldVisitBody = true;
-    break;
-  }
-  
-  // Visit the template arguments used in the specialization.
-  if (TypeSourceInfo *SpecType = D->getTypeAsWritten()) {
-    TypeLoc TL = SpecType->getTypeLoc();
-    if (TemplateSpecializationTypeLoc TSTLoc =
-            TL.getAs<TemplateSpecializationTypeLoc>()) {
-      for (unsigned I = 0, N = TSTLoc.getNumArgs(); I != N; ++I)
-        if (VisitTemplateArgumentLoc(TSTLoc.getArgLoc(I)))
-          return true;
-    }
-  }
-  
-  if (ShouldVisitBody && VisitCXXRecordDecl(D))
-    return true;
-  
-  return false;
-}
-
-bool CursorVisitor::VisitClassTemplatePartialSpecializationDecl(
-                                   ClassTemplatePartialSpecializationDecl *D) {
-  // FIXME: Visit the "outer" template parameter lists on the TagDecl
-  // before visiting these template parameters.
-  if (VisitTemplateParameters(D->getTemplateParameters()))
-    return true;
-
-  // Visit the partial specialization arguments.
-  const TemplateArgumentLoc *TemplateArgs = D->getTemplateArgsAsWritten();
-  for (unsigned I = 0, N = D->getNumTemplateArgsAsWritten(); I != N; ++I)
-    if (VisitTemplateArgumentLoc(TemplateArgs[I]))
-      return true;
-  
-  return VisitCXXRecordDecl(D);
-}
-
-bool CursorVisitor::VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D) {
-  // Visit the default argument.
-  if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited())
-    if (TypeSourceInfo *DefArg = D->getDefaultArgumentInfo())
-      if (Visit(DefArg->getTypeLoc()))
-        return true;
-  
-  return false;
-}
-
-bool CursorVisitor::VisitEnumConstantDecl(EnumConstantDecl *D) {
-  if (Expr *Init = D->getInitExpr())
-    return Visit(MakeCXCursor(Init, StmtParent, TU, RegionOfInterest));
-  return false;
-}
-
-bool CursorVisitor::VisitDeclaratorDecl(DeclaratorDecl *DD) {
-  unsigned NumParamList = DD->getNumTemplateParameterLists();
-  for (unsigned i = 0; i < NumParamList; i++) {
-    TemplateParameterList* Params = DD->getTemplateParameterList(i);
-    if (VisitTemplateParameters(Params))
-      return true;
-  }
-
-  if (TypeSourceInfo *TSInfo = DD->getTypeSourceInfo())
-    if (Visit(TSInfo->getTypeLoc()))
-      return true;
-
-  // Visit the nested-name-specifier, if present.
-  if (NestedNameSpecifierLoc QualifierLoc = DD->getQualifierLoc())
-    if (VisitNestedNameSpecifierLoc(QualifierLoc))
-      return true;
-
-  return false;
-}
-
-/// \brief Compare two base or member initializers based on their source order.
-static int CompareCXXCtorInitializers(const void* Xp, const void *Yp) {
-  CXXCtorInitializer const * const *X
-    = static_cast<CXXCtorInitializer const * const *>(Xp);
-  CXXCtorInitializer const * const *Y
-    = static_cast<CXXCtorInitializer const * const *>(Yp);
-  
-  if ((*X)->getSourceOrder() < (*Y)->getSourceOrder())
-    return -1;
-  else if ((*X)->getSourceOrder() > (*Y)->getSourceOrder())
-    return 1;
-  else
-    return 0;
-}
-
-bool CursorVisitor::VisitFunctionDecl(FunctionDecl *ND) {
-  unsigned NumParamList = ND->getNumTemplateParameterLists();
-  for (unsigned i = 0; i < NumParamList; i++) {
-    TemplateParameterList* Params = ND->getTemplateParameterList(i);
-    if (VisitTemplateParameters(Params))
-      return true;
-  }
-
-  if (TypeSourceInfo *TSInfo = ND->getTypeSourceInfo()) {
-    // Visit the function declaration's syntactic components in the order
-    // written. This requires a bit of work.
-    TypeLoc TL = TSInfo->getTypeLoc().IgnoreParens();
-    FunctionTypeLoc FTL = TL.getAs<FunctionTypeLoc>();
-    
-    // If we have a function declared directly (without the use of a typedef),
-    // visit just the return type. Otherwise, just visit the function's type
-    // now.
-    if ((FTL && !isa<CXXConversionDecl>(ND) && Visit(FTL.getResultLoc())) ||
-        (!FTL && Visit(TL)))
-      return true;
-    
-    // Visit the nested-name-specifier, if present.
-    if (NestedNameSpecifierLoc QualifierLoc = ND->getQualifierLoc())
-      if (VisitNestedNameSpecifierLoc(QualifierLoc))
-        return true;
-    
-    // Visit the declaration name.
-    if (VisitDeclarationNameInfo(ND->getNameInfo()))
-      return true;
-    
-    // FIXME: Visit explicitly-specified template arguments!
-    
-    // Visit the function parameters, if we have a function type.
-    if (FTL && VisitFunctionTypeLoc(FTL, true))
-      return true;
-    
-    // FIXME: Attributes?
-  }
-  
-  if (ND->doesThisDeclarationHaveABody() && !ND->isLateTemplateParsed()) {
-    if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(ND)) {
-      // Find the initializers that were written in the source.
-      SmallVector<CXXCtorInitializer *, 4> WrittenInits;
-      for (CXXConstructorDecl::init_iterator I = Constructor->init_begin(),
-                                          IEnd = Constructor->init_end();
-           I != IEnd; ++I) {
-        if (!(*I)->isWritten())
-          continue;
-      
-        WrittenInits.push_back(*I);
-      }
-      
-      // Sort the initializers in source order
-      llvm::array_pod_sort(WrittenInits.begin(), WrittenInits.end(),
-                           &CompareCXXCtorInitializers);
-      
-      // Visit the initializers in source order
-      for (unsigned I = 0, N = WrittenInits.size(); I != N; ++I) {
-        CXXCtorInitializer *Init = WrittenInits[I];
-        if (Init->isAnyMemberInitializer()) {
-          if (Visit(MakeCursorMemberRef(Init->getAnyMember(),
-                                        Init->getMemberLocation(), TU)))
-            return true;
-        } else if (TypeSourceInfo *TInfo = Init->getTypeSourceInfo()) {
-          if (Visit(TInfo->getTypeLoc()))
-            return true;
-        }
-        
-        // Visit the initializer value.
-        if (Expr *Initializer = Init->getInit())
-          if (Visit(MakeCXCursor(Initializer, ND, TU, RegionOfInterest)))
-            return true;
-      } 
-    }
-    
-    if (Visit(MakeCXCursor(ND->getBody(), StmtParent, TU, RegionOfInterest)))
-      return true;
-  }
-
-  return false;
-}
-
-bool CursorVisitor::VisitFieldDecl(FieldDecl *D) {
-  if (VisitDeclaratorDecl(D))
-    return true;
-
-  if (Expr *BitWidth = D->getBitWidth())
-    return Visit(MakeCXCursor(BitWidth, StmtParent, TU, RegionOfInterest));
-
-  return false;
-}
-
-bool CursorVisitor::VisitVarDecl(VarDecl *D) {
-  if (VisitDeclaratorDecl(D))
-    return true;
-
-  if (Expr *Init = D->getInit())
-    return Visit(MakeCXCursor(Init, StmtParent, TU, RegionOfInterest));
-
-  return false;
-}
-
-bool CursorVisitor::VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D) {
-  if (VisitDeclaratorDecl(D))
-    return true;
-  
-  if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited())
-    if (Expr *DefArg = D->getDefaultArgument())
-      return Visit(MakeCXCursor(DefArg, StmtParent, TU, RegionOfInterest));
-  
-  return false;  
-}
-
-bool CursorVisitor::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) {
-  // FIXME: Visit the "outer" template parameter lists on the FunctionDecl
-  // before visiting these template parameters.
-  if (VisitTemplateParameters(D->getTemplateParameters()))
-    return true;
-  
-  return VisitFunctionDecl(D->getTemplatedDecl());
-}
-
-bool CursorVisitor::VisitClassTemplateDecl(ClassTemplateDecl *D) {
-  // FIXME: Visit the "outer" template parameter lists on the TagDecl
-  // before visiting these template parameters.
-  if (VisitTemplateParameters(D->getTemplateParameters()))
-    return true;
-  
-  return VisitCXXRecordDecl(D->getTemplatedDecl());
-}
-
-bool CursorVisitor::VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D) {
-  if (VisitTemplateParameters(D->getTemplateParameters()))
-    return true;
-  
-  if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited() &&
-      VisitTemplateArgumentLoc(D->getDefaultArgument()))
-    return true;
-  
-  return false;
-}
-
-bool CursorVisitor::VisitObjCMethodDecl(ObjCMethodDecl *ND) {
-  if (TypeSourceInfo *TSInfo = ND->getResultTypeSourceInfo())
-    if (Visit(TSInfo->getTypeLoc()))
-      return true;
-
-  for (ObjCMethodDecl::param_iterator P = ND->param_begin(),
-       PEnd = ND->param_end();
-       P != PEnd; ++P) {
-    if (Visit(MakeCXCursor(*P, TU, RegionOfInterest)))
-      return true;
-  }
-
-  if (ND->isThisDeclarationADefinition() &&
-      Visit(MakeCXCursor(ND->getBody(), StmtParent, TU, RegionOfInterest)))
-    return true;
-
-  return false;
-}
-
-template <typename DeclIt>
-static void addRangedDeclsInContainer(DeclIt *DI_current, DeclIt DE_current,
-                                      SourceManager &SM, SourceLocation EndLoc,
-                                      SmallVectorImpl<Decl *> &Decls) {
-  DeclIt next = *DI_current;
-  while (++next != DE_current) {
-    Decl *D_next = *next;
-    if (!D_next)
-      break;
-    SourceLocation L = D_next->getLocStart();
-    if (!L.isValid())
-      break;
-    if (SM.isBeforeInTranslationUnit(L, EndLoc)) {
-      *DI_current = next;
-      Decls.push_back(D_next);
-      continue;
-    }
-    break;
-  }
-}
-
-namespace {
-  struct ContainerDeclsSort {
-    SourceManager &SM;
-    ContainerDeclsSort(SourceManager &sm) : SM(sm) {}
-    bool operator()(Decl *A, Decl *B) {
-      SourceLocation L_A = A->getLocStart();
-      SourceLocation L_B = B->getLocStart();
-      assert(L_A.isValid() && L_B.isValid());
-      return SM.isBeforeInTranslationUnit(L_A, L_B);
-    }
-  };
-}
-
-bool CursorVisitor::VisitObjCContainerDecl(ObjCContainerDecl *D) {
-  // FIXME: Eventually convert back to just 'VisitDeclContext()'.  Essentially
-  // an @implementation can lexically contain Decls that are not properly
-  // nested in the AST.  When we identify such cases, we need to retrofit
-  // this nesting here.
-  if (!DI_current && !FileDI_current)
-    return VisitDeclContext(D);
-
-  // Scan the Decls that immediately come after the container
-  // in the current DeclContext.  If any fall within the
-  // container's lexical region, stash them into a vector
-  // for later processing.
-  SmallVector<Decl *, 24> DeclsInContainer;
-  SourceLocation EndLoc = D->getSourceRange().getEnd();
-  SourceManager &SM = AU->getSourceManager();
-  if (EndLoc.isValid()) {
-    if (DI_current) {
-      addRangedDeclsInContainer(DI_current, DE_current, SM, EndLoc,
-                                DeclsInContainer);
-    } else {
-      addRangedDeclsInContainer(FileDI_current, FileDE_current, SM, EndLoc,
-                                DeclsInContainer);
-    }
-  }
-
-  // The common case.
-  if (DeclsInContainer.empty())
-    return VisitDeclContext(D);
-
-  // Get all the Decls in the DeclContext, and sort them with the
-  // additional ones we've collected.  Then visit them.
-  for (DeclContext::decl_iterator I = D->decls_begin(), E = D->decls_end();
-       I!=E; ++I) {
-    Decl *subDecl = *I;
-    if (!subDecl || subDecl->getLexicalDeclContext() != D ||
-        subDecl->getLocStart().isInvalid())
-      continue;
-    DeclsInContainer.push_back(subDecl);
-  }
-
-  // Now sort the Decls so that they appear in lexical order.
-  std::sort(DeclsInContainer.begin(), DeclsInContainer.end(),
-            ContainerDeclsSort(SM));
-
-  // Now visit the decls.
-  for (SmallVectorImpl<Decl*>::iterator I = DeclsInContainer.begin(),
-         E = DeclsInContainer.end(); I != E; ++I) {
-    CXCursor Cursor = MakeCXCursor(*I, TU, RegionOfInterest);
-    const Optional<bool> &V = shouldVisitCursor(Cursor);
-    if (!V.hasValue())
-      continue;
-    if (!V.getValue())
-      return false;
-    if (Visit(Cursor, true))
-      return true;
-  }
-  return false;
-}
-
-bool CursorVisitor::VisitObjCCategoryDecl(ObjCCategoryDecl *ND) {
-  if (Visit(MakeCursorObjCClassRef(ND->getClassInterface(), ND->getLocation(),
-                                   TU)))
-    return true;
-
-  ObjCCategoryDecl::protocol_loc_iterator PL = ND->protocol_loc_begin();
-  for (ObjCCategoryDecl::protocol_iterator I = ND->protocol_begin(),
-         E = ND->protocol_end(); I != E; ++I, ++PL)
-    if (Visit(MakeCursorObjCProtocolRef(*I, *PL, TU)))
-      return true;
-
-  return VisitObjCContainerDecl(ND);
-}
-
-bool CursorVisitor::VisitObjCProtocolDecl(ObjCProtocolDecl *PID) {
-  if (!PID->isThisDeclarationADefinition())
-    return Visit(MakeCursorObjCProtocolRef(PID, PID->getLocation(), TU));
-  
-  ObjCProtocolDecl::protocol_loc_iterator PL = PID->protocol_loc_begin();
-  for (ObjCProtocolDecl::protocol_iterator I = PID->protocol_begin(),
-       E = PID->protocol_end(); I != E; ++I, ++PL)
-    if (Visit(MakeCursorObjCProtocolRef(*I, *PL, TU)))
-      return true;
-
-  return VisitObjCContainerDecl(PID);
-}
-
-bool CursorVisitor::VisitObjCPropertyDecl(ObjCPropertyDecl *PD) {
-  if (PD->getTypeSourceInfo() && Visit(PD->getTypeSourceInfo()->getTypeLoc()))
-    return true;
-
-  // FIXME: This implements a workaround with @property declarations also being
-  // installed in the DeclContext for the @interface.  Eventually this code
-  // should be removed.
-  ObjCCategoryDecl *CDecl = dyn_cast<ObjCCategoryDecl>(PD->getDeclContext());
-  if (!CDecl || !CDecl->IsClassExtension())
-    return false;
-
-  ObjCInterfaceDecl *ID = CDecl->getClassInterface();
-  if (!ID)
-    return false;
-
-  IdentifierInfo *PropertyId = PD->getIdentifier();
-  ObjCPropertyDecl *prevDecl =
-    ObjCPropertyDecl::findPropertyDecl(cast<DeclContext>(ID), PropertyId);
-
-  if (!prevDecl)
-    return false;
-
-  // Visit synthesized methods since they will be skipped when visiting
-  // the @interface.
-  if (ObjCMethodDecl *MD = prevDecl->getGetterMethodDecl())
-    if (MD->isPropertyAccessor() && MD->getLexicalDeclContext() == CDecl)
-      if (Visit(MakeCXCursor(MD, TU, RegionOfInterest)))
-        return true;
-
-  if (ObjCMethodDecl *MD = prevDecl->getSetterMethodDecl())
-    if (MD->isPropertyAccessor() && MD->getLexicalDeclContext() == CDecl)
-      if (Visit(MakeCXCursor(MD, TU, RegionOfInterest)))
-        return true;
-
-  return false;
-}
-
-bool CursorVisitor::VisitObjCInterfaceDecl(ObjCInterfaceDecl *D) {
-  if (!D->isThisDeclarationADefinition()) {
-    // Forward declaration is treated like a reference.
-    return Visit(MakeCursorObjCClassRef(D, D->getLocation(), TU));
-  }
-
-  // Issue callbacks for super class.
-  if (D->getSuperClass() &&
-      Visit(MakeCursorObjCSuperClassRef(D->getSuperClass(),
-                                        D->getSuperClassLoc(),
-                                        TU)))
-    return true;
-
-  ObjCInterfaceDecl::protocol_loc_iterator PL = D->protocol_loc_begin();
-  for (ObjCInterfaceDecl::protocol_iterator I = D->protocol_begin(),
-         E = D->protocol_end(); I != E; ++I, ++PL)
-    if (Visit(MakeCursorObjCProtocolRef(*I, *PL, TU)))
-      return true;
-
-  return VisitObjCContainerDecl(D);
-}
-
-bool CursorVisitor::VisitObjCImplDecl(ObjCImplDecl *D) {
-  return VisitObjCContainerDecl(D);
-}
-
-bool CursorVisitor::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D) {
-  // 'ID' could be null when dealing with invalid code.
-  if (ObjCInterfaceDecl *ID = D->getClassInterface())
-    if (Visit(MakeCursorObjCClassRef(ID, D->getLocation(), TU)))
-      return true;
-
-  return VisitObjCImplDecl(D);
-}
-
-bool CursorVisitor::VisitObjCImplementationDecl(ObjCImplementationDecl *D) {
-#if 0
-  // Issue callbacks for super class.
-  // FIXME: No source location information!
-  if (D->getSuperClass() &&
-      Visit(MakeCursorObjCSuperClassRef(D->getSuperClass(),
-                                        D->getSuperClassLoc(),
-                                        TU)))
-    return true;
-#endif
-
-  return VisitObjCImplDecl(D);
-}
-
-bool CursorVisitor::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *PD) {
-  if (ObjCIvarDecl *Ivar = PD->getPropertyIvarDecl())
-    if (PD->isIvarNameSpecified())
-      return Visit(MakeCursorMemberRef(Ivar, PD->getPropertyIvarDeclLoc(), TU));
-  
-  return false;
-}
-
-bool CursorVisitor::VisitNamespaceDecl(NamespaceDecl *D) {
-  return VisitDeclContext(D);
-}
-
-bool CursorVisitor::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) {
-  // Visit nested-name-specifier.
-  if (NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc())
-    if (VisitNestedNameSpecifierLoc(QualifierLoc))
-      return true;
-  
-  return Visit(MakeCursorNamespaceRef(D->getAliasedNamespace(), 
-                                      D->getTargetNameLoc(), TU));
-}
-
-bool CursorVisitor::VisitUsingDecl(UsingDecl *D) {
-  // Visit nested-name-specifier.
-  if (NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc()) {
-    if (VisitNestedNameSpecifierLoc(QualifierLoc))
-      return true;
-  }
-  
-  if (Visit(MakeCursorOverloadedDeclRef(D, D->getLocation(), TU)))
-    return true;
-    
-  return VisitDeclarationNameInfo(D->getNameInfo());
-}
-
-bool CursorVisitor::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) {
-  // Visit nested-name-specifier.
-  if (NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc())
-    if (VisitNestedNameSpecifierLoc(QualifierLoc))
-      return true;
-
-  return Visit(MakeCursorNamespaceRef(D->getNominatedNamespaceAsWritten(),
-                                      D->getIdentLocation(), TU));
-}
-
-bool CursorVisitor::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) {
-  // Visit nested-name-specifier.
-  if (NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc()) {
-    if (VisitNestedNameSpecifierLoc(QualifierLoc))
-      return true;
-  }
-
-  return VisitDeclarationNameInfo(D->getNameInfo());
-}
-
-bool CursorVisitor::VisitUnresolvedUsingTypenameDecl(
-                                               UnresolvedUsingTypenameDecl *D) {
-  // Visit nested-name-specifier.
-  if (NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc())
-    if (VisitNestedNameSpecifierLoc(QualifierLoc))
-      return true;
-  
-  return false;
-}
-
-bool CursorVisitor::VisitDeclarationNameInfo(DeclarationNameInfo Name) {
-  switch (Name.getName().getNameKind()) {
-  case clang::DeclarationName::Identifier:
-  case clang::DeclarationName::CXXLiteralOperatorName:
-  case clang::DeclarationName::CXXOperatorName:
-  case clang::DeclarationName::CXXUsingDirective:
-    return false;
-      
-  case clang::DeclarationName::CXXConstructorName:
-  case clang::DeclarationName::CXXDestructorName:
-  case clang::DeclarationName::CXXConversionFunctionName:
-    if (TypeSourceInfo *TSInfo = Name.getNamedTypeInfo())
-      return Visit(TSInfo->getTypeLoc());
-    return false;
-
-  case clang::DeclarationName::ObjCZeroArgSelector:
-  case clang::DeclarationName::ObjCOneArgSelector:
-  case clang::DeclarationName::ObjCMultiArgSelector:
-    // FIXME: Per-identifier location info?
-    return false;
-  }
-
-  llvm_unreachable("Invalid DeclarationName::Kind!");
-}
-
-bool CursorVisitor::VisitNestedNameSpecifier(NestedNameSpecifier *NNS, 
-                                             SourceRange Range) {
-  // FIXME: This whole routine is a hack to work around the lack of proper
-  // source information in nested-name-specifiers (PR5791). Since we do have
-  // a beginning source location, we can visit the first component of the
-  // nested-name-specifier, if it's a single-token component.
-  if (!NNS)
-    return false;
-  
-  // Get the first component in the nested-name-specifier.
-  while (NestedNameSpecifier *Prefix = NNS->getPrefix())
-    NNS = Prefix;
-  
-  switch (NNS->getKind()) {
-  case NestedNameSpecifier::Namespace:
-    return Visit(MakeCursorNamespaceRef(NNS->getAsNamespace(), Range.getBegin(),
-                                        TU));
-
-  case NestedNameSpecifier::NamespaceAlias:
-    return Visit(MakeCursorNamespaceRef(NNS->getAsNamespaceAlias(), 
-                                        Range.getBegin(), TU));
-
-  case NestedNameSpecifier::TypeSpec: {
-    // If the type has a form where we know that the beginning of the source
-    // range matches up with a reference cursor. Visit the appropriate reference
-    // cursor.
-    const Type *T = NNS->getAsType();
-    if (const TypedefType *Typedef = dyn_cast<TypedefType>(T))
-      return Visit(MakeCursorTypeRef(Typedef->getDecl(), Range.getBegin(), TU));
-    if (const TagType *Tag = dyn_cast<TagType>(T))
-      return Visit(MakeCursorTypeRef(Tag->getDecl(), Range.getBegin(), TU));
-    if (const TemplateSpecializationType *TST
-                                      = dyn_cast<TemplateSpecializationType>(T))
-      return VisitTemplateName(TST->getTemplateName(), Range.getBegin());
-    break;
-  }
-      
-  case NestedNameSpecifier::TypeSpecWithTemplate:
-  case NestedNameSpecifier::Global:
-  case NestedNameSpecifier::Identifier:
-    break;      
-  }
-  
-  return false;
-}
-
-bool 
-CursorVisitor::VisitNestedNameSpecifierLoc(NestedNameSpecifierLoc Qualifier) {
-  SmallVector<NestedNameSpecifierLoc, 4> Qualifiers;
-  for (; Qualifier; Qualifier = Qualifier.getPrefix())
-    Qualifiers.push_back(Qualifier);
-  
-  while (!Qualifiers.empty()) {
-    NestedNameSpecifierLoc Q = Qualifiers.pop_back_val();
-    NestedNameSpecifier *NNS = Q.getNestedNameSpecifier();
-    switch (NNS->getKind()) {
-    case NestedNameSpecifier::Namespace:
-      if (Visit(MakeCursorNamespaceRef(NNS->getAsNamespace(), 
-                                       Q.getLocalBeginLoc(),
-                                       TU)))
-        return true;
-        
-      break;
-      
-    case NestedNameSpecifier::NamespaceAlias:
-      if (Visit(MakeCursorNamespaceRef(NNS->getAsNamespaceAlias(), 
-                                       Q.getLocalBeginLoc(),
-                                       TU)))
-        return true;
-        
-      break;
-        
-    case NestedNameSpecifier::TypeSpec:
-    case NestedNameSpecifier::TypeSpecWithTemplate:
-      if (Visit(Q.getTypeLoc()))
-        return true;
-        
-      break;
-        
-    case NestedNameSpecifier::Global:
-    case NestedNameSpecifier::Identifier:
-      break;              
-    }
-  }
-  
-  return false;
-}
-
-bool CursorVisitor::VisitTemplateParameters(
-                                          const TemplateParameterList *Params) {
-  if (!Params)
-    return false;
-  
-  for (TemplateParameterList::const_iterator P = Params->begin(),
-                                          PEnd = Params->end();
-       P != PEnd; ++P) {
-    if (Visit(MakeCXCursor(*P, TU, RegionOfInterest)))
-      return true;
-  }
-  
-  return false;
-}
-
-bool CursorVisitor::VisitTemplateName(TemplateName Name, SourceLocation Loc) {
-  switch (Name.getKind()) {
-  case TemplateName::Template:
-    return Visit(MakeCursorTemplateRef(Name.getAsTemplateDecl(), Loc, TU));
-
-  case TemplateName::OverloadedTemplate:
-    // Visit the overloaded template set.
-    if (Visit(MakeCursorOverloadedDeclRef(Name, Loc, TU)))
-      return true;
-
-    return false;
-
-  case TemplateName::DependentTemplate:
-    // FIXME: Visit nested-name-specifier.
-    return false;
-      
-  case TemplateName::QualifiedTemplate:
-    // FIXME: Visit nested-name-specifier.
-    return Visit(MakeCursorTemplateRef(
-                                  Name.getAsQualifiedTemplateName()->getDecl(), 
-                                       Loc, TU));
-
-  case TemplateName::SubstTemplateTemplateParm:
-    return Visit(MakeCursorTemplateRef(
-                         Name.getAsSubstTemplateTemplateParm()->getParameter(),
-                                       Loc, TU));
-      
-  case TemplateName::SubstTemplateTemplateParmPack:
-    return Visit(MakeCursorTemplateRef(
-                  Name.getAsSubstTemplateTemplateParmPack()->getParameterPack(),
-                                       Loc, TU));
-  }
-
-  llvm_unreachable("Invalid TemplateName::Kind!");
-}
-
-bool CursorVisitor::VisitTemplateArgumentLoc(const TemplateArgumentLoc &TAL) {
-  switch (TAL.getArgument().getKind()) {
-  case TemplateArgument::Null:
-  case TemplateArgument::Integral:
-  case TemplateArgument::Pack:
-    return false;
-      
-  case TemplateArgument::Type:
-    if (TypeSourceInfo *TSInfo = TAL.getTypeSourceInfo())
-      return Visit(TSInfo->getTypeLoc());
-    return false;
-      
-  case TemplateArgument::Declaration:
-    if (Expr *E = TAL.getSourceDeclExpression())
-      return Visit(MakeCXCursor(E, StmtParent, TU, RegionOfInterest));
-    return false;
-
-  case TemplateArgument::NullPtr:
-    if (Expr *E = TAL.getSourceNullPtrExpression())
-      return Visit(MakeCXCursor(E, StmtParent, TU, RegionOfInterest));
-    return false;
-
-  case TemplateArgument::Expression:
-    if (Expr *E = TAL.getSourceExpression())
-      return Visit(MakeCXCursor(E, StmtParent, TU, RegionOfInterest));
-    return false;
-  
-  case TemplateArgument::Template:
-  case TemplateArgument::TemplateExpansion:
-    if (VisitNestedNameSpecifierLoc(TAL.getTemplateQualifierLoc()))
-      return true;
-      
-    return VisitTemplateName(TAL.getArgument().getAsTemplateOrTemplatePattern(), 
-                             TAL.getTemplateNameLoc());
-  }
-
-  llvm_unreachable("Invalid TemplateArgument::Kind!");
-}
-
-bool CursorVisitor::VisitLinkageSpecDecl(LinkageSpecDecl *D) {
-  return VisitDeclContext(D);
-}
-
-bool CursorVisitor::VisitQualifiedTypeLoc(QualifiedTypeLoc TL) {
-  return Visit(TL.getUnqualifiedLoc());
-}
-
-bool CursorVisitor::VisitBuiltinTypeLoc(BuiltinTypeLoc TL) {
-  ASTContext &Context = AU->getASTContext();
-
-  // Some builtin types (such as Objective-C's "id", "sel", and
-  // "Class") have associated declarations. Create cursors for those.
-  QualType VisitType;
-  switch (TL.getTypePtr()->getKind()) {
-
-  case BuiltinType::Void:
-  case BuiltinType::NullPtr:
-  case BuiltinType::Dependent:
-  case BuiltinType::OCLImage1d:
-  case BuiltinType::OCLImage1dArray:
-  case BuiltinType::OCLImage1dBuffer:
-  case BuiltinType::OCLImage2d:
-  case BuiltinType::OCLImage2dArray:
-  case BuiltinType::OCLImage3d:
-  case BuiltinType::OCLSampler:
-  case BuiltinType::OCLEvent:
-#define BUILTIN_TYPE(Id, SingletonId)
-#define SIGNED_TYPE(Id, SingletonId) case BuiltinType::Id:
-#define UNSIGNED_TYPE(Id, SingletonId) case BuiltinType::Id:
-#define FLOATING_TYPE(Id, SingletonId) case BuiltinType::Id:
-#define PLACEHOLDER_TYPE(Id, SingletonId) case BuiltinType::Id:
-#include "clang/AST/BuiltinTypes.def"
-    break;
-
-  case BuiltinType::ObjCId:
-    VisitType = Context.getObjCIdType();
-    break;
-
-  case BuiltinType::ObjCClass:
-    VisitType = Context.getObjCClassType();
-    break;
-
-  case BuiltinType::ObjCSel:
-    VisitType = Context.getObjCSelType();
-    break;
-  }
-
-  if (!VisitType.isNull()) {
-    if (const TypedefType *Typedef = VisitType->getAs<TypedefType>())
-      return Visit(MakeCursorTypeRef(Typedef->getDecl(), TL.getBuiltinLoc(),
-                                     TU));
-  }
-
-  return false;
-}
-
-bool CursorVisitor::VisitTypedefTypeLoc(TypedefTypeLoc TL) {
-  return Visit(MakeCursorTypeRef(TL.getTypedefNameDecl(), TL.getNameLoc(), TU));
-}
-
-bool CursorVisitor::VisitUnresolvedUsingTypeLoc(UnresolvedUsingTypeLoc TL) {
-  return Visit(MakeCursorTypeRef(TL.getDecl(), TL.getNameLoc(), TU));
-}
-
-bool CursorVisitor::VisitTagTypeLoc(TagTypeLoc TL) {
-  if (TL.isDefinition())
-    return Visit(MakeCXCursor(TL.getDecl(), TU, RegionOfInterest));
-
-  return Visit(MakeCursorTypeRef(TL.getDecl(), TL.getNameLoc(), TU));
-}
-
-bool CursorVisitor::VisitTemplateTypeParmTypeLoc(TemplateTypeParmTypeLoc TL) {
-  return Visit(MakeCursorTypeRef(TL.getDecl(), TL.getNameLoc(), TU));
-}
-
-bool CursorVisitor::VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL) {
-  if (Visit(MakeCursorObjCClassRef(TL.getIFaceDecl(), TL.getNameLoc(), TU)))
-    return true;
-
-  return false;
-}
-
-bool CursorVisitor::VisitObjCObjectTypeLoc(ObjCObjectTypeLoc TL) {
-  if (TL.hasBaseTypeAsWritten() && Visit(TL.getBaseLoc()))
-    return true;
-
-  for (unsigned I = 0, N = TL.getNumProtocols(); I != N; ++I) {
-    if (Visit(MakeCursorObjCProtocolRef(TL.getProtocol(I), TL.getProtocolLoc(I),
-                                        TU)))
-      return true;
-  }
-
-  return false;
-}
-
-bool CursorVisitor::VisitObjCObjectPointerTypeLoc(ObjCObjectPointerTypeLoc TL) {
-  return Visit(TL.getPointeeLoc());
-}
-
-bool CursorVisitor::VisitParenTypeLoc(ParenTypeLoc TL) {
-  return Visit(TL.getInnerLoc());
-}
-
-bool CursorVisitor::VisitPointerTypeLoc(PointerTypeLoc TL) {
-  return Visit(TL.getPointeeLoc());
-}
-
-bool CursorVisitor::VisitBlockPointerTypeLoc(BlockPointerTypeLoc TL) {
-  return Visit(TL.getPointeeLoc());
-}
-
-bool CursorVisitor::VisitMemberPointerTypeLoc(MemberPointerTypeLoc TL) {
-  return Visit(TL.getPointeeLoc());
-}
-
-bool CursorVisitor::VisitLValueReferenceTypeLoc(LValueReferenceTypeLoc TL) {
-  return Visit(TL.getPointeeLoc());
-}
-
-bool CursorVisitor::VisitRValueReferenceTypeLoc(RValueReferenceTypeLoc TL) {
-  return Visit(TL.getPointeeLoc());
-}
-
-bool CursorVisitor::VisitAttributedTypeLoc(AttributedTypeLoc TL) {
-  return Visit(TL.getModifiedLoc());
-}
-
-bool CursorVisitor::VisitFunctionTypeLoc(FunctionTypeLoc TL, 
-                                         bool SkipResultType) {
-  if (!SkipResultType && Visit(TL.getResultLoc()))
-    return true;
-
-  for (unsigned I = 0, N = TL.getNumArgs(); I != N; ++I)
-    if (Decl *D = TL.getArg(I))
-      if (Visit(MakeCXCursor(D, TU, RegionOfInterest)))
-        return true;
-
-  return false;
-}
-
-bool CursorVisitor::VisitArrayTypeLoc(ArrayTypeLoc TL) {
-  if (Visit(TL.getElementLoc()))
-    return true;
-
-  if (Expr *Size = TL.getSizeExpr())
-    return Visit(MakeCXCursor(Size, StmtParent, TU, RegionOfInterest));
-
-  return false;
-}
-
-bool CursorVisitor::VisitTemplateSpecializationTypeLoc(
-                                             TemplateSpecializationTypeLoc TL) {
-  // Visit the template name.
-  if (VisitTemplateName(TL.getTypePtr()->getTemplateName(), 
-                        TL.getTemplateNameLoc()))
-    return true;
-  
-  // Visit the template arguments.
-  for (unsigned I = 0, N = TL.getNumArgs(); I != N; ++I)
-    if (VisitTemplateArgumentLoc(TL.getArgLoc(I)))
-      return true;
-  
-  return false;
-}
-
-bool CursorVisitor::VisitTypeOfExprTypeLoc(TypeOfExprTypeLoc TL) {
-  return Visit(MakeCXCursor(TL.getUnderlyingExpr(), StmtParent, TU));
-}
-
-bool CursorVisitor::VisitTypeOfTypeLoc(TypeOfTypeLoc TL) {
-  if (TypeSourceInfo *TSInfo = TL.getUnderlyingTInfo())
-    return Visit(TSInfo->getTypeLoc());
-
-  return false;
-}
-
-bool CursorVisitor::VisitUnaryTransformTypeLoc(UnaryTransformTypeLoc TL) {
-  if (TypeSourceInfo *TSInfo = TL.getUnderlyingTInfo())
-    return Visit(TSInfo->getTypeLoc());
-
-  return false;
-}
-
-bool CursorVisitor::VisitDependentNameTypeLoc(DependentNameTypeLoc TL) {
-  if (VisitNestedNameSpecifierLoc(TL.getQualifierLoc()))
-    return true;
-  
-  return false;
-}
-
-bool CursorVisitor::VisitDependentTemplateSpecializationTypeLoc(
-                                    DependentTemplateSpecializationTypeLoc TL) {
-  // Visit the nested-name-specifier, if there is one.
-  if (TL.getQualifierLoc() &&
-      VisitNestedNameSpecifierLoc(TL.getQualifierLoc()))
-    return true;
-  
-  // Visit the template arguments.
-  for (unsigned I = 0, N = TL.getNumArgs(); I != N; ++I)
-    if (VisitTemplateArgumentLoc(TL.getArgLoc(I)))
-      return true;
-
-  return false;
-}
-
-bool CursorVisitor::VisitElaboratedTypeLoc(ElaboratedTypeLoc TL) {
-  if (VisitNestedNameSpecifierLoc(TL.getQualifierLoc()))
-    return true;
-  
-  return Visit(TL.getNamedTypeLoc());
-}
-
-bool CursorVisitor::VisitPackExpansionTypeLoc(PackExpansionTypeLoc TL) {
-  return Visit(TL.getPatternLoc());
-}
-
-bool CursorVisitor::VisitDecltypeTypeLoc(DecltypeTypeLoc TL) {
-  if (Expr *E = TL.getUnderlyingExpr())
-    return Visit(MakeCXCursor(E, StmtParent, TU));
-
-  return false;
-}
-
-bool CursorVisitor::VisitInjectedClassNameTypeLoc(InjectedClassNameTypeLoc TL) {
-  return Visit(MakeCursorTypeRef(TL.getDecl(), TL.getNameLoc(), TU));
-}
-
-bool CursorVisitor::VisitAtomicTypeLoc(AtomicTypeLoc TL) {
-  return Visit(TL.getValueLoc());
-}
-
-#define DEFAULT_TYPELOC_IMPL(CLASS, PARENT) \
-bool CursorVisitor::Visit##CLASS##TypeLoc(CLASS##TypeLoc TL) { \
-  return Visit##PARENT##Loc(TL); \
-}
-
-DEFAULT_TYPELOC_IMPL(Complex, Type)
-DEFAULT_TYPELOC_IMPL(ConstantArray, ArrayType)
-DEFAULT_TYPELOC_IMPL(IncompleteArray, ArrayType)
-DEFAULT_TYPELOC_IMPL(VariableArray, ArrayType)
-DEFAULT_TYPELOC_IMPL(DependentSizedArray, ArrayType)
-DEFAULT_TYPELOC_IMPL(DependentSizedExtVector, Type)
-DEFAULT_TYPELOC_IMPL(Vector, Type)
-DEFAULT_TYPELOC_IMPL(ExtVector, VectorType)
-DEFAULT_TYPELOC_IMPL(FunctionProto, FunctionType)
-DEFAULT_TYPELOC_IMPL(FunctionNoProto, FunctionType)
-DEFAULT_TYPELOC_IMPL(Record, TagType)
-DEFAULT_TYPELOC_IMPL(Enum, TagType)
-DEFAULT_TYPELOC_IMPL(SubstTemplateTypeParm, Type)
-DEFAULT_TYPELOC_IMPL(SubstTemplateTypeParmPack, Type)
-DEFAULT_TYPELOC_IMPL(Auto, Type)
-
-bool CursorVisitor::VisitCXXRecordDecl(CXXRecordDecl *D) {
-  // Visit the nested-name-specifier, if present.
-  if (NestedNameSpecifierLoc QualifierLoc = D->getQualifierLoc())
-    if (VisitNestedNameSpecifierLoc(QualifierLoc))
-      return true;
-
-  if (D->isCompleteDefinition()) {
-    for (CXXRecordDecl::base_class_iterator I = D->bases_begin(),
-         E = D->bases_end(); I != E; ++I) {
-      if (Visit(cxcursor::MakeCursorCXXBaseSpecifier(I, TU)))
-        return true;
-    }
-  }
-
-  return VisitTagDecl(D);
-}
-
-bool CursorVisitor::VisitAttributes(Decl *D) {
-  for (AttrVec::const_iterator i = D->attr_begin(), e = D->attr_end();
-       i != e; ++i)
-    if (Visit(MakeCXCursor(*i, D, TU)))
-        return true;
-
-  return false;
-}
-
-//===----------------------------------------------------------------------===//
-// Data-recursive visitor methods.
-//===----------------------------------------------------------------------===//
-
-namespace {
-#define DEF_JOB(NAME, DATA, KIND)\
-class NAME : public VisitorJob {\
-public:\
-  NAME(const DATA *d, CXCursor parent) : \
-      VisitorJob(parent, VisitorJob::KIND, d) {} \
-  static bool classof(const VisitorJob *VJ) { return VJ->getKind() == KIND; }\
-  const DATA *get() const { return static_cast<const DATA*>(data[0]); }\
-};
-
-DEF_JOB(StmtVisit, Stmt, StmtVisitKind)
-DEF_JOB(MemberExprParts, MemberExpr, MemberExprPartsKind)
-DEF_JOB(DeclRefExprParts, DeclRefExpr, DeclRefExprPartsKind)
-DEF_JOB(OverloadExprParts, OverloadExpr, OverloadExprPartsKind)
-DEF_JOB(ExplicitTemplateArgsVisit, ASTTemplateArgumentListInfo, 
-        ExplicitTemplateArgsVisitKind)
-DEF_JOB(SizeOfPackExprParts, SizeOfPackExpr, SizeOfPackExprPartsKind)
-DEF_JOB(LambdaExprParts, LambdaExpr, LambdaExprPartsKind)
-DEF_JOB(PostChildrenVisit, void, PostChildrenVisitKind)
-#undef DEF_JOB
-
-class DeclVisit : public VisitorJob {
-public:
-  DeclVisit(const Decl *D, CXCursor parent, bool isFirst) :
-    VisitorJob(parent, VisitorJob::DeclVisitKind,
-               D, isFirst ? (void*) 1 : (void*) 0) {}
-  static bool classof(const VisitorJob *VJ) {
-    return VJ->getKind() == DeclVisitKind;
-  }
-  const Decl *get() const { return static_cast<const Decl *>(data[0]); }
-  bool isFirst() const { return data[1] ? true : false; }
-};
-class TypeLocVisit : public VisitorJob {
-public:
-  TypeLocVisit(TypeLoc tl, CXCursor parent) :
-    VisitorJob(parent, VisitorJob::TypeLocVisitKind,
-               tl.getType().getAsOpaquePtr(), tl.getOpaqueData()) {}
-
-  static bool classof(const VisitorJob *VJ) {
-    return VJ->getKind() == TypeLocVisitKind;
-  }
-
-  TypeLoc get() const { 
-    QualType T = QualType::getFromOpaquePtr(data[0]);
-    return TypeLoc(T, const_cast<void *>(data[1]));
-  }
-};
-
-class LabelRefVisit : public VisitorJob {
-public:
-  LabelRefVisit(LabelDecl *LD, SourceLocation labelLoc, CXCursor parent)
-    : VisitorJob(parent, VisitorJob::LabelRefVisitKind, LD,
-                 labelLoc.getPtrEncoding()) {}
-  
-  static bool classof(const VisitorJob *VJ) {
-    return VJ->getKind() == VisitorJob::LabelRefVisitKind;
-  }
-  const LabelDecl *get() const {
-    return static_cast<const LabelDecl *>(data[0]);
-  }
-  SourceLocation getLoc() const { 
-    return SourceLocation::getFromPtrEncoding(data[1]); }
-};
-  
-class NestedNameSpecifierLocVisit : public VisitorJob {
-public:
-  NestedNameSpecifierLocVisit(NestedNameSpecifierLoc Qualifier, CXCursor parent)
-    : VisitorJob(parent, VisitorJob::NestedNameSpecifierLocVisitKind,
-                 Qualifier.getNestedNameSpecifier(),
-                 Qualifier.getOpaqueData()) { }
-  
-  static bool classof(const VisitorJob *VJ) {
-    return VJ->getKind() == VisitorJob::NestedNameSpecifierLocVisitKind;
-  }
-  
-  NestedNameSpecifierLoc get() const {
-    return NestedNameSpecifierLoc(
-            const_cast<NestedNameSpecifier *>(
-              static_cast<const NestedNameSpecifier *>(data[0])),
-            const_cast<void *>(data[1]));
-  }
-};
-  
-class DeclarationNameInfoVisit : public VisitorJob {
-public:
-  DeclarationNameInfoVisit(const Stmt *S, CXCursor parent)
-    : VisitorJob(parent, VisitorJob::DeclarationNameInfoVisitKind, S) {}
-  static bool classof(const VisitorJob *VJ) {
-    return VJ->getKind() == VisitorJob::DeclarationNameInfoVisitKind;
-  }
-  DeclarationNameInfo get() const {
-    const Stmt *S = static_cast<const Stmt *>(data[0]);
-    switch (S->getStmtClass()) {
-    default:
-      llvm_unreachable("Unhandled Stmt");
-    case clang::Stmt::MSDependentExistsStmtClass:
-      return cast<MSDependentExistsStmt>(S)->getNameInfo();
-    case Stmt::CXXDependentScopeMemberExprClass:
-      return cast<CXXDependentScopeMemberExpr>(S)->getMemberNameInfo();
-    case Stmt::DependentScopeDeclRefExprClass:
-      return cast<DependentScopeDeclRefExpr>(S)->getNameInfo();
-    }
-  }
-};
-class MemberRefVisit : public VisitorJob {
-public:
-  MemberRefVisit(const FieldDecl *D, SourceLocation L, CXCursor parent)
-    : VisitorJob(parent, VisitorJob::MemberRefVisitKind, D,
-                 L.getPtrEncoding()) {}
-  static bool classof(const VisitorJob *VJ) {
-    return VJ->getKind() == VisitorJob::MemberRefVisitKind;
-  }
-  const FieldDecl *get() const {
-    return static_cast<const FieldDecl *>(data[0]);
-  }
-  SourceLocation getLoc() const {
-    return SourceLocation::getFromRawEncoding((unsigned)(uintptr_t) data[1]);
-  }
-};
-class EnqueueVisitor : public ConstStmtVisitor<EnqueueVisitor, void> {
-  VisitorWorkList &WL;
-  CXCursor Parent;
-public:
-  EnqueueVisitor(VisitorWorkList &wl, CXCursor parent)
-    : WL(wl), Parent(parent) {}
-
-  void VisitAddrLabelExpr(const AddrLabelExpr *E);
-  void VisitBlockExpr(const BlockExpr *B);
-  void VisitCompoundLiteralExpr(const CompoundLiteralExpr *E);
-  void VisitCompoundStmt(const CompoundStmt *S);
-  void VisitCXXDefaultArgExpr(const CXXDefaultArgExpr *E) { /* Do nothing. */ }
-  void VisitMSDependentExistsStmt(const MSDependentExistsStmt *S);
-  void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *E);
-  void VisitCXXNewExpr(const CXXNewExpr *E);
-  void VisitCXXScalarValueInitExpr(const CXXScalarValueInitExpr *E);
-  void VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *E);
-  void VisitCXXPseudoDestructorExpr(const CXXPseudoDestructorExpr *E);
-  void VisitCXXTemporaryObjectExpr(const CXXTemporaryObjectExpr *E);
-  void VisitCXXTypeidExpr(const CXXTypeidExpr *E);
-  void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *E);
-  void VisitCXXUuidofExpr(const CXXUuidofExpr *E);
-  void VisitCXXCatchStmt(const CXXCatchStmt *S);
-  void VisitDeclRefExpr(const DeclRefExpr *D);
-  void VisitDeclStmt(const DeclStmt *S);
-  void VisitDependentScopeDeclRefExpr(const DependentScopeDeclRefExpr *E);
-  void VisitDesignatedInitExpr(const DesignatedInitExpr *E);
-  void VisitExplicitCastExpr(const ExplicitCastExpr *E);
-  void VisitForStmt(const ForStmt *FS);
-  void VisitGotoStmt(const GotoStmt *GS);
-  void VisitIfStmt(const IfStmt *If);
-  void VisitInitListExpr(const InitListExpr *IE);
-  void VisitMemberExpr(const MemberExpr *M);
-  void VisitOffsetOfExpr(const OffsetOfExpr *E);
-  void VisitObjCEncodeExpr(const ObjCEncodeExpr *E);
-  void VisitObjCMessageExpr(const ObjCMessageExpr *M);
-  void VisitOverloadExpr(const OverloadExpr *E);
-  void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *E);
-  void VisitStmt(const Stmt *S);
-  void VisitSwitchStmt(const SwitchStmt *S);
-  void VisitWhileStmt(const WhileStmt *W);
-  void VisitUnaryTypeTraitExpr(const UnaryTypeTraitExpr *E);
-  void VisitBinaryTypeTraitExpr(const BinaryTypeTraitExpr *E);
-  void VisitTypeTraitExpr(const TypeTraitExpr *E);
-  void VisitArrayTypeTraitExpr(const ArrayTypeTraitExpr *E);
-  void VisitExpressionTraitExpr(const ExpressionTraitExpr *E);
-  void VisitUnresolvedMemberExpr(const UnresolvedMemberExpr *U);
-  void VisitVAArgExpr(const VAArgExpr *E);
-  void VisitSizeOfPackExpr(const SizeOfPackExpr *E);
-  void VisitPseudoObjectExpr(const PseudoObjectExpr *E);
-  void VisitOpaqueValueExpr(const OpaqueValueExpr *E);
-  void VisitLambdaExpr(const LambdaExpr *E);
-
-private:
-  void AddDeclarationNameInfo(const Stmt *S);
-  void AddNestedNameSpecifierLoc(NestedNameSpecifierLoc Qualifier);
-  void AddExplicitTemplateArgs(const ASTTemplateArgumentListInfo *A);
-  void AddMemberRef(const FieldDecl *D, SourceLocation L);
-  void AddStmt(const Stmt *S);
-  void AddDecl(const Decl *D, bool isFirst = true);
-  void AddTypeLoc(TypeSourceInfo *TI);
-  void EnqueueChildren(const Stmt *S);
-};
-} // end anonyous namespace
-
-void EnqueueVisitor::AddDeclarationNameInfo(const Stmt *S) {
-  // 'S' should always be non-null, since it comes from the
-  // statement we are visiting.
-  WL.push_back(DeclarationNameInfoVisit(S, Parent));
-}
-
-void 
-EnqueueVisitor::AddNestedNameSpecifierLoc(NestedNameSpecifierLoc Qualifier) {
-  if (Qualifier)
-    WL.push_back(NestedNameSpecifierLocVisit(Qualifier, Parent));
-}
-
-void EnqueueVisitor::AddStmt(const Stmt *S) {
-  if (S)
-    WL.push_back(StmtVisit(S, Parent));
-}
-void EnqueueVisitor::AddDecl(const Decl *D, bool isFirst) {
-  if (D)
-    WL.push_back(DeclVisit(D, Parent, isFirst));
-}
-void EnqueueVisitor::
-  AddExplicitTemplateArgs(const ASTTemplateArgumentListInfo *A) {
-  if (A)
-    WL.push_back(ExplicitTemplateArgsVisit(A, Parent));
-}
-void EnqueueVisitor::AddMemberRef(const FieldDecl *D, SourceLocation L) {
-  if (D)
-    WL.push_back(MemberRefVisit(D, L, Parent));
-}
-void EnqueueVisitor::AddTypeLoc(TypeSourceInfo *TI) {
-  if (TI)
-    WL.push_back(TypeLocVisit(TI->getTypeLoc(), Parent));
- }
-void EnqueueVisitor::EnqueueChildren(const Stmt *S) {
-  unsigned size = WL.size();
-  for (Stmt::const_child_range Child = S->children(); Child; ++Child) {
-    AddStmt(*Child);
-  }
-  if (size == WL.size())
-    return;
-  // Now reverse the entries we just added.  This will match the DFS
-  // ordering performed by the worklist.
-  VisitorWorkList::iterator I = WL.begin() + size, E = WL.end();
-  std::reverse(I, E);
-}
-void EnqueueVisitor::VisitAddrLabelExpr(const AddrLabelExpr *E) {
-  WL.push_back(LabelRefVisit(E->getLabel(), E->getLabelLoc(), Parent));
-}
-void EnqueueVisitor::VisitBlockExpr(const BlockExpr *B) {
-  AddDecl(B->getBlockDecl());
-}
-void EnqueueVisitor::VisitCompoundLiteralExpr(const CompoundLiteralExpr *E) {
-  EnqueueChildren(E);
-  AddTypeLoc(E->getTypeSourceInfo());
-}
-void EnqueueVisitor::VisitCompoundStmt(const CompoundStmt *S) {
-  for (CompoundStmt::const_reverse_body_iterator I = S->body_rbegin(),
-        E = S->body_rend(); I != E; ++I) {
-    AddStmt(*I);
-  }
-}
-void EnqueueVisitor::
-VisitMSDependentExistsStmt(const MSDependentExistsStmt *S) {
-  AddStmt(S->getSubStmt());
-  AddDeclarationNameInfo(S);
-  if (NestedNameSpecifierLoc QualifierLoc = S->getQualifierLoc())
-    AddNestedNameSpecifierLoc(QualifierLoc);
-}
-
-void EnqueueVisitor::
-VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *E) {
-  AddExplicitTemplateArgs(E->getOptionalExplicitTemplateArgs());
-  AddDeclarationNameInfo(E);
-  if (NestedNameSpecifierLoc QualifierLoc = E->getQualifierLoc())
-    AddNestedNameSpecifierLoc(QualifierLoc);
-  if (!E->isImplicitAccess())
-    AddStmt(E->getBase());
-}
-void EnqueueVisitor::VisitCXXNewExpr(const CXXNewExpr *E) {
-  // Enqueue the initializer , if any.
-  AddStmt(E->getInitializer());
-  // Enqueue the array size, if any.
-  AddStmt(E->getArraySize());
-  // Enqueue the allocated type.
-  AddTypeLoc(E->getAllocatedTypeSourceInfo());
-  // Enqueue the placement arguments.
-  for (unsigned I = E->getNumPlacementArgs(); I > 0; --I)
-    AddStmt(E->getPlacementArg(I-1));
-}
-void EnqueueVisitor::VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *CE) {
-  for (unsigned I = CE->getNumArgs(); I > 1 /* Yes, this is 1 */; --I)
-    AddStmt(CE->getArg(I-1));
-  AddStmt(CE->getCallee());
-  AddStmt(CE->getArg(0));
-}
-void EnqueueVisitor::VisitCXXPseudoDestructorExpr(
-                                        const CXXPseudoDestructorExpr *E) {
-  // Visit the name of the type being destroyed.
-  AddTypeLoc(E->getDestroyedTypeInfo());
-  // Visit the scope type that looks disturbingly like the nested-name-specifier
-  // but isn't.
-  AddTypeLoc(E->getScopeTypeInfo());
-  // Visit the nested-name-specifier.
-  if (NestedNameSpecifierLoc QualifierLoc = E->getQualifierLoc())
-    AddNestedNameSpecifierLoc(QualifierLoc);
-  // Visit base expression.
-  AddStmt(E->getBase());
-}
-void EnqueueVisitor::VisitCXXScalarValueInitExpr(
-                                        const CXXScalarValueInitExpr *E) {
-  AddTypeLoc(E->getTypeSourceInfo());
-}
-void EnqueueVisitor::VisitCXXTemporaryObjectExpr(
-                                        const CXXTemporaryObjectExpr *E) {
-  EnqueueChildren(E);
-  AddTypeLoc(E->getTypeSourceInfo());
-}
-void EnqueueVisitor::VisitCXXTypeidExpr(const CXXTypeidExpr *E) {
-  EnqueueChildren(E);
-  if (E->isTypeOperand())
-    AddTypeLoc(E->getTypeOperandSourceInfo());
-}
-
-void EnqueueVisitor::VisitCXXUnresolvedConstructExpr(
-                                        const CXXUnresolvedConstructExpr *E) {
-  EnqueueChildren(E);
-  AddTypeLoc(E->getTypeSourceInfo());
-}
-void EnqueueVisitor::VisitCXXUuidofExpr(const CXXUuidofExpr *E) {
-  EnqueueChildren(E);
-  if (E->isTypeOperand())
-    AddTypeLoc(E->getTypeOperandSourceInfo());
-}
-
-void EnqueueVisitor::VisitCXXCatchStmt(const CXXCatchStmt *S) {
-  EnqueueChildren(S);
-  AddDecl(S->getExceptionDecl());
-}
-
-void EnqueueVisitor::VisitDeclRefExpr(const DeclRefExpr *DR) {
-  if (DR->hasExplicitTemplateArgs()) {
-    AddExplicitTemplateArgs(&DR->getExplicitTemplateArgs());
-  }
-  WL.push_back(DeclRefExprParts(DR, Parent));
-}
-void EnqueueVisitor::VisitDependentScopeDeclRefExpr(
-                                        const DependentScopeDeclRefExpr *E) {
-  AddExplicitTemplateArgs(E->getOptionalExplicitTemplateArgs());
-  AddDeclarationNameInfo(E);
-  AddNestedNameSpecifierLoc(E->getQualifierLoc());
-}
-void EnqueueVisitor::VisitDeclStmt(const DeclStmt *S) {
-  unsigned size = WL.size();
-  bool isFirst = true;
-  for (DeclStmt::const_decl_iterator D = S->decl_begin(), DEnd = S->decl_end();
-       D != DEnd; ++D) {
-    AddDecl(*D, isFirst);
-    isFirst = false;
-  }
-  if (size == WL.size())
-    return;
-  // Now reverse the entries we just added.  This will match the DFS
-  // ordering performed by the worklist.
-  VisitorWorkList::iterator I = WL.begin() + size, E = WL.end();
-  std::reverse(I, E);
-}
-void EnqueueVisitor::VisitDesignatedInitExpr(const DesignatedInitExpr *E) {
-  AddStmt(E->getInit());
-  typedef DesignatedInitExpr::Designator Designator;
-  for (DesignatedInitExpr::const_reverse_designators_iterator
-         D = E->designators_rbegin(), DEnd = E->designators_rend();
-         D != DEnd; ++D) {
-    if (D->isFieldDesignator()) {
-      if (FieldDecl *Field = D->getField())
-        AddMemberRef(Field, D->getFieldLoc());
-      continue;
-    }
-    if (D->isArrayDesignator()) {
-      AddStmt(E->getArrayIndex(*D));
-      continue;
-    }
-    assert(D->isArrayRangeDesignator() && "Unknown designator kind");
-    AddStmt(E->getArrayRangeEnd(*D));
-    AddStmt(E->getArrayRangeStart(*D));
-  }
-}
-void EnqueueVisitor::VisitExplicitCastExpr(const ExplicitCastExpr *E) {
-  EnqueueChildren(E);
-  AddTypeLoc(E->getTypeInfoAsWritten());
-}
-void EnqueueVisitor::VisitForStmt(const ForStmt *FS) {
-  AddStmt(FS->getBody());
-  AddStmt(FS->getInc());
-  AddStmt(FS->getCond());
-  AddDecl(FS->getConditionVariable());
-  AddStmt(FS->getInit());
-}
-void EnqueueVisitor::VisitGotoStmt(const GotoStmt *GS) {
-  WL.push_back(LabelRefVisit(GS->getLabel(), GS->getLabelLoc(), Parent));
-}
-void EnqueueVisitor::VisitIfStmt(const IfStmt *If) {
-  AddStmt(If->getElse());
-  AddStmt(If->getThen());
-  AddStmt(If->getCond());
-  AddDecl(If->getConditionVariable());
-}
-void EnqueueVisitor::VisitInitListExpr(const InitListExpr *IE) {
-  // We care about the syntactic form of the initializer list, only.
-  if (InitListExpr *Syntactic = IE->getSyntacticForm())
-    IE = Syntactic;
-  EnqueueChildren(IE);
-}
-void EnqueueVisitor::VisitMemberExpr(const MemberExpr *M) {
-  WL.push_back(MemberExprParts(M, Parent));
-  
-  // If the base of the member access expression is an implicit 'this', don't
-  // visit it.
-  // FIXME: If we ever want to show these implicit accesses, this will be
-  // unfortunate. However, clang_getCursor() relies on this behavior.
-  if (!M->isImplicitAccess())
-    AddStmt(M->getBase());
-}
-void EnqueueVisitor::VisitObjCEncodeExpr(const ObjCEncodeExpr *E) {
-  AddTypeLoc(E->getEncodedTypeSourceInfo());
-}
-void EnqueueVisitor::VisitObjCMessageExpr(const ObjCMessageExpr *M) {
-  EnqueueChildren(M);
-  AddTypeLoc(M->getClassReceiverTypeInfo());
-}
-void EnqueueVisitor::VisitOffsetOfExpr(const OffsetOfExpr *E) {
-  // Visit the components of the offsetof expression.
-  for (unsigned N = E->getNumComponents(), I = N; I > 0; --I) {
-    typedef OffsetOfExpr::OffsetOfNode OffsetOfNode;
-    const OffsetOfNode &Node = E->getComponent(I-1);
-    switch (Node.getKind()) {
-    case OffsetOfNode::Array:
-      AddStmt(E->getIndexExpr(Node.getArrayExprIndex()));
-      break;
-    case OffsetOfNode::Field:
-      AddMemberRef(Node.getField(), Node.getSourceRange().getEnd());
-      break;
-    case OffsetOfNode::Identifier:
-    case OffsetOfNode::Base:
-      continue;
-    }
-  }
-  // Visit the type into which we're computing the offset.
-  AddTypeLoc(E->getTypeSourceInfo());
-}
-void EnqueueVisitor::VisitOverloadExpr(const OverloadExpr *E) {
-  AddExplicitTemplateArgs(E->getOptionalExplicitTemplateArgs());
-  WL.push_back(OverloadExprParts(E, Parent));
-}
-void EnqueueVisitor::VisitUnaryExprOrTypeTraitExpr(
-                                        const UnaryExprOrTypeTraitExpr *E) {
-  EnqueueChildren(E);
-  if (E->isArgumentType())
-    AddTypeLoc(E->getArgumentTypeInfo());
-}
-void EnqueueVisitor::VisitStmt(const Stmt *S) {
-  EnqueueChildren(S);
-}
-void EnqueueVisitor::VisitSwitchStmt(const SwitchStmt *S) {
-  AddStmt(S->getBody());
-  AddStmt(S->getCond());
-  AddDecl(S->getConditionVariable());
-}
-
-void EnqueueVisitor::VisitWhileStmt(const WhileStmt *W) {
-  AddStmt(W->getBody());
-  AddStmt(W->getCond());
-  AddDecl(W->getConditionVariable());
-}
-
-void EnqueueVisitor::VisitUnaryTypeTraitExpr(const UnaryTypeTraitExpr *E) {
-  AddTypeLoc(E->getQueriedTypeSourceInfo());
-}
-
-void EnqueueVisitor::VisitBinaryTypeTraitExpr(const BinaryTypeTraitExpr *E) {
-  AddTypeLoc(E->getRhsTypeSourceInfo());
-  AddTypeLoc(E->getLhsTypeSourceInfo());
-}
-
-void EnqueueVisitor::VisitTypeTraitExpr(const TypeTraitExpr *E) {
-  for (unsigned I = E->getNumArgs(); I > 0; --I)
-    AddTypeLoc(E->getArg(I-1));
-}
-
-void EnqueueVisitor::VisitArrayTypeTraitExpr(const ArrayTypeTraitExpr *E) {
-  AddTypeLoc(E->getQueriedTypeSourceInfo());
-}
-
-void EnqueueVisitor::VisitExpressionTraitExpr(const ExpressionTraitExpr *E) {
-  EnqueueChildren(E);
-}
-
-void EnqueueVisitor::VisitUnresolvedMemberExpr(const UnresolvedMemberExpr *U) {
-  VisitOverloadExpr(U);
-  if (!U->isImplicitAccess())
-    AddStmt(U->getBase());
-}
-void EnqueueVisitor::VisitVAArgExpr(const VAArgExpr *E) {
-  AddStmt(E->getSubExpr());
-  AddTypeLoc(E->getWrittenTypeInfo());
-}
-void EnqueueVisitor::VisitSizeOfPackExpr(const SizeOfPackExpr *E) {
-  WL.push_back(SizeOfPackExprParts(E, Parent));
-}
-void EnqueueVisitor::VisitOpaqueValueExpr(const OpaqueValueExpr *E) {
-  // If the opaque value has a source expression, just transparently
-  // visit that.  This is useful for (e.g.) pseudo-object expressions.
-  if (Expr *SourceExpr = E->getSourceExpr())
-    return Visit(SourceExpr);
-}
-void EnqueueVisitor::VisitLambdaExpr(const LambdaExpr *E) {
-  AddStmt(E->getBody());
-  WL.push_back(LambdaExprParts(E, Parent));
-}
-void EnqueueVisitor::VisitPseudoObjectExpr(const PseudoObjectExpr *E) {
-  // Treat the expression like its syntactic form.
-  Visit(E->getSyntacticForm());
-}
-
-void CursorVisitor::EnqueueWorkList(VisitorWorkList &WL, const Stmt *S) {
-  EnqueueVisitor(WL, MakeCXCursor(S, StmtParent, TU,RegionOfInterest)).Visit(S);
-}
-
-bool CursorVisitor::IsInRegionOfInterest(CXCursor C) {
-  if (RegionOfInterest.isValid()) {
-    SourceRange Range = getRawCursorExtent(C);
-    if (Range.isInvalid() || CompareRegionOfInterest(Range))
-      return false;
-  }
-  return true;
-}
-
-bool CursorVisitor::RunVisitorWorkList(VisitorWorkList &WL) {
-  while (!WL.empty()) {
-    // Dequeue the worklist item.
-    VisitorJob LI = WL.back();
-    WL.pop_back();
-
-    // Set the Parent field, then back to its old value once we're done.
-    SetParentRAII SetParent(Parent, StmtParent, LI.getParent());
-  
-    switch (LI.getKind()) {
-      case VisitorJob::DeclVisitKind: {
-        const Decl *D = cast<DeclVisit>(&LI)->get();
-        if (!D)
-          continue;
-
-        // For now, perform default visitation for Decls.
-        if (Visit(MakeCXCursor(D, TU, RegionOfInterest,
-                               cast<DeclVisit>(&LI)->isFirst())))
-            return true;
-
-        continue;
-      }
-      case VisitorJob::ExplicitTemplateArgsVisitKind: {
-        const ASTTemplateArgumentListInfo *ArgList =
-          cast<ExplicitTemplateArgsVisit>(&LI)->get();
-        for (const TemplateArgumentLoc *Arg = ArgList->getTemplateArgs(),
-               *ArgEnd = Arg + ArgList->NumTemplateArgs;
-               Arg != ArgEnd; ++Arg) {
-          if (VisitTemplateArgumentLoc(*Arg))
-            return true;
-        }
-        continue;
-      }
-      case VisitorJob::TypeLocVisitKind: {
-        // Perform default visitation for TypeLocs.
-        if (Visit(cast<TypeLocVisit>(&LI)->get()))
-          return true;
-        continue;
-      }
-      case VisitorJob::LabelRefVisitKind: {
-        const LabelDecl *LS = cast<LabelRefVisit>(&LI)->get();
-        if (LabelStmt *stmt = LS->getStmt()) {
-          if (Visit(MakeCursorLabelRef(stmt, cast<LabelRefVisit>(&LI)->getLoc(),
-                                       TU))) {
-            return true;
-          }
-        }
-        continue;
-      }
-
-      case VisitorJob::NestedNameSpecifierLocVisitKind: {
-        NestedNameSpecifierLocVisit *V = cast<NestedNameSpecifierLocVisit>(&LI);
-        if (VisitNestedNameSpecifierLoc(V->get()))
-          return true;
-        continue;
-      }
-        
-      case VisitorJob::DeclarationNameInfoVisitKind: {
-        if (VisitDeclarationNameInfo(cast<DeclarationNameInfoVisit>(&LI)
-                                     ->get()))
-          return true;
-        continue;
-      }
-      case VisitorJob::MemberRefVisitKind: {
-        MemberRefVisit *V = cast<MemberRefVisit>(&LI);
-        if (Visit(MakeCursorMemberRef(V->get(), V->getLoc(), TU)))
-          return true;
-        continue;
-      }
-      case VisitorJob::StmtVisitKind: {
-        const Stmt *S = cast<StmtVisit>(&LI)->get();
-        if (!S)
-          continue;
-
-        // Update the current cursor.
-        CXCursor Cursor = MakeCXCursor(S, StmtParent, TU, RegionOfInterest);
-        if (!IsInRegionOfInterest(Cursor))
-          continue;
-        switch (Visitor(Cursor, Parent, ClientData)) {
-          case CXChildVisit_Break: return true;
-          case CXChildVisit_Continue: break;
-          case CXChildVisit_Recurse:
-            if (PostChildrenVisitor)
-              WL.push_back(PostChildrenVisit(0, Cursor));
-            EnqueueWorkList(WL, S);
-            break;
-        }
-        continue;
-      }
-      case VisitorJob::MemberExprPartsKind: {
-        // Handle the other pieces in the MemberExpr besides the base.
-        const MemberExpr *M = cast<MemberExprParts>(&LI)->get();
-        
-        // Visit the nested-name-specifier
-        if (NestedNameSpecifierLoc QualifierLoc = M->getQualifierLoc())
-          if (VisitNestedNameSpecifierLoc(QualifierLoc))
-            return true;
-        
-        // Visit the declaration name.
-        if (VisitDeclarationNameInfo(M->getMemberNameInfo()))
-          return true;
-        
-        // Visit the explicitly-specified template arguments, if any.
-        if (M->hasExplicitTemplateArgs()) {
-          for (const TemplateArgumentLoc *Arg = M->getTemplateArgs(),
-               *ArgEnd = Arg + M->getNumTemplateArgs();
-               Arg != ArgEnd; ++Arg) {
-            if (VisitTemplateArgumentLoc(*Arg))
-              return true;
-          }
-        }
-        continue;
-      }
-      case VisitorJob::DeclRefExprPartsKind: {
-        const DeclRefExpr *DR = cast<DeclRefExprParts>(&LI)->get();
-        // Visit nested-name-specifier, if present.
-        if (NestedNameSpecifierLoc QualifierLoc = DR->getQualifierLoc())
-          if (VisitNestedNameSpecifierLoc(QualifierLoc))
-            return true;
-        // Visit declaration name.
-        if (VisitDeclarationNameInfo(DR->getNameInfo()))
-          return true;
-        continue;
-      }
-      case VisitorJob::OverloadExprPartsKind: {
-        const OverloadExpr *O = cast<OverloadExprParts>(&LI)->get();
-        // Visit the nested-name-specifier.
-        if (NestedNameSpecifierLoc QualifierLoc = O->getQualifierLoc())
-          if (VisitNestedNameSpecifierLoc(QualifierLoc))
-            return true;
-        // Visit the declaration name.
-        if (VisitDeclarationNameInfo(O->getNameInfo()))
-          return true;
-        // Visit the overloaded declaration reference.
-        if (Visit(MakeCursorOverloadedDeclRef(O, TU)))
-          return true;
-        continue;
-      }
-      case VisitorJob::SizeOfPackExprPartsKind: {
-        const SizeOfPackExpr *E = cast<SizeOfPackExprParts>(&LI)->get();
-        NamedDecl *Pack = E->getPack();
-        if (isa<TemplateTypeParmDecl>(Pack)) {
-          if (Visit(MakeCursorTypeRef(cast<TemplateTypeParmDecl>(Pack),
-                                      E->getPackLoc(), TU)))
-            return true;
-          
-          continue;
-        }
-          
-        if (isa<TemplateTemplateParmDecl>(Pack)) {
-          if (Visit(MakeCursorTemplateRef(cast<TemplateTemplateParmDecl>(Pack),
-                                          E->getPackLoc(), TU)))
-            return true;
-          
-          continue;
-        }
-        
-        // Non-type template parameter packs and function parameter packs are
-        // treated like DeclRefExpr cursors.
-        continue;
-      }
-        
-      case VisitorJob::LambdaExprPartsKind: {
-        // Visit captures.
-        const LambdaExpr *E = cast<LambdaExprParts>(&LI)->get();
-        for (LambdaExpr::capture_iterator C = E->explicit_capture_begin(),
-                                       CEnd = E->explicit_capture_end();
-             C != CEnd; ++C) {
-          if (C->capturesThis())
-            continue;
-          
-          if (Visit(MakeCursorVariableRef(C->getCapturedVar(),
-                                          C->getLocation(),
-                                          TU)))
-            return true;
-        }
-        
-        // Visit parameters and return type, if present.
-        if (E->hasExplicitParameters() || E->hasExplicitResultType()) {
-          TypeLoc TL = E->getCallOperator()->getTypeSourceInfo()->getTypeLoc();
-          if (E->hasExplicitParameters() && E->hasExplicitResultType()) {
-            // Visit the whole type.
-            if (Visit(TL))
-              return true;
-          } else if (FunctionProtoTypeLoc Proto =
-                         TL.getAs<FunctionProtoTypeLoc>()) {
-            if (E->hasExplicitParameters()) {
-              // Visit parameters.
-              for (unsigned I = 0, N = Proto.getNumArgs(); I != N; ++I)
-                if (Visit(MakeCXCursor(Proto.getArg(I), TU)))
-                  return true;
-            } else {
-              // Visit result type.
-              if (Visit(Proto.getResultLoc()))
-                return true;
-            }
-          }
-        }
-        break;
-      }
-
-      case VisitorJob::PostChildrenVisitKind:
-        if (PostChildrenVisitor(Parent, ClientData))
-          return true;
-        break;
-    }
-  }
-  return false;
-}
-
-bool CursorVisitor::Visit(const Stmt *S) {
-  VisitorWorkList *WL = 0;
-  if (!WorkListFreeList.empty()) {
-    WL = WorkListFreeList.back();
-    WL->clear();
-    WorkListFreeList.pop_back();
-  }
-  else {
-    WL = new VisitorWorkList();
-    WorkListCache.push_back(WL);
-  }
-  EnqueueWorkList(*WL, S);
-  bool result = RunVisitorWorkList(*WL);
-  WorkListFreeList.push_back(WL);
-  return result;
-}
-
-namespace {
-typedef SmallVector<SourceRange, 4> RefNamePieces;
-RefNamePieces buildPieces(unsigned NameFlags, bool IsMemberRefExpr, 
-                          const DeclarationNameInfo &NI, 
-                          const SourceRange &QLoc, 
-                          const ASTTemplateArgumentListInfo *TemplateArgs = 0){
-  const bool WantQualifier = NameFlags & CXNameRange_WantQualifier;
-  const bool WantTemplateArgs = NameFlags & CXNameRange_WantTemplateArgs;
-  const bool WantSinglePiece = NameFlags & CXNameRange_WantSinglePiece;
-  
-  const DeclarationName::NameKind Kind = NI.getName().getNameKind();
-  
-  RefNamePieces Pieces;
-
-  if (WantQualifier && QLoc.isValid())
-    Pieces.push_back(QLoc);
-  
-  if (Kind != DeclarationName::CXXOperatorName || IsMemberRefExpr)
-    Pieces.push_back(NI.getLoc());
-  
-  if (WantTemplateArgs && TemplateArgs)
-    Pieces.push_back(SourceRange(TemplateArgs->LAngleLoc,
-                                 TemplateArgs->RAngleLoc));
-  
-  if (Kind == DeclarationName::CXXOperatorName) {
-    Pieces.push_back(SourceLocation::getFromRawEncoding(
-                       NI.getInfo().CXXOperatorName.BeginOpNameLoc));
-    Pieces.push_back(SourceLocation::getFromRawEncoding(
-                       NI.getInfo().CXXOperatorName.EndOpNameLoc));
-  }
-  
-  if (WantSinglePiece) {
-    SourceRange R(Pieces.front().getBegin(), Pieces.back().getEnd());
-    Pieces.clear();
-    Pieces.push_back(R);
-  }  
-
-  return Pieces;  
-}
-}
-
-//===----------------------------------------------------------------------===//
-// Misc. API hooks.
-//===----------------------------------------------------------------------===//               
-
-static llvm::sys::Mutex EnableMultithreadingMutex;
-static bool EnabledMultithreading;
-
-static void fatal_error_handler(void *user_data, const std::string& reason,
-                                bool gen_crash_diag) {
-  // Write the result out to stderr avoiding errs() because raw_ostreams can
-  // call report_fatal_error.
-  fprintf(stderr, "LIBCLANG FATAL ERROR: %s\n", reason.c_str());
-  ::abort();
-}
-
-extern "C" {
-CXIndex clang_createIndex(int excludeDeclarationsFromPCH,
-                          int displayDiagnostics) {
-  // Disable pretty stack trace functionality, which will otherwise be a very
-  // poor citizen of the world and set up all sorts of signal handlers.
-  llvm::DisablePrettyStackTrace = true;
-
-  // We use crash recovery to make some of our APIs more reliable, implicitly
-  // enable it.
-  llvm::CrashRecoveryContext::Enable();
-
-  // Enable support for multithreading in LLVM.
-  {
-    llvm::sys::ScopedLock L(EnableMultithreadingMutex);
-    if (!EnabledMultithreading) {
-      llvm::install_fatal_error_handler(fatal_error_handler, 0);
-      llvm::llvm_start_multithreaded();
-      EnabledMultithreading = true;
-    }
-  }
-
-  CIndexer *CIdxr = new CIndexer();
-  if (excludeDeclarationsFromPCH)
-    CIdxr->setOnlyLocalDecls();
-  if (displayDiagnostics)
-    CIdxr->setDisplayDiagnostics();
-
-  if (getenv("LIBCLANG_BGPRIO_INDEX"))
-    CIdxr->setCXGlobalOptFlags(CIdxr->getCXGlobalOptFlags() |
-                               CXGlobalOpt_ThreadBackgroundPriorityForIndexing);
-  if (getenv("LIBCLANG_BGPRIO_EDIT"))
-    CIdxr->setCXGlobalOptFlags(CIdxr->getCXGlobalOptFlags() |
-                               CXGlobalOpt_ThreadBackgroundPriorityForEditing);
-
-  return CIdxr;
-}
-
-void clang_disposeIndex(CXIndex CIdx) {
-  if (CIdx)
-    delete static_cast<CIndexer *>(CIdx);
-}
-
-void clang_CXIndex_setGlobalOptions(CXIndex CIdx, unsigned options) {
-  if (CIdx)
-    static_cast<CIndexer *>(CIdx)->setCXGlobalOptFlags(options);
-}
-
-unsigned clang_CXIndex_getGlobalOptions(CXIndex CIdx) {
-  if (CIdx)
-    return static_cast<CIndexer *>(CIdx)->getCXGlobalOptFlags();
-  return 0;
-}
-
-void clang_toggleCrashRecovery(unsigned isEnabled) {
-  if (isEnabled)
-    llvm::CrashRecoveryContext::Enable();
-  else
-    llvm::CrashRecoveryContext::Disable();
-}
-  
-CXTranslationUnit clang_createTranslationUnit(CXIndex CIdx,
-                                              const char *ast_filename) {
-  if (!CIdx)
-    return 0;
-
-  CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx);
-  FileSystemOptions FileSystemOpts;
-
-  IntrusiveRefCntPtr<DiagnosticsEngine> Diags;
-  ASTUnit *TU = ASTUnit::LoadFromASTFile(ast_filename, Diags, FileSystemOpts,
-                                  CXXIdx->getOnlyLocalDecls(),
-                                  0, 0,
-                                  /*CaptureDiagnostics=*/true,
-                                  /*AllowPCHWithCompilerErrors=*/true,
-                                  /*UserFilesAreVolatile=*/true);
-  return MakeCXTranslationUnit(CXXIdx, TU);
-}
-
-unsigned clang_defaultEditingTranslationUnitOptions() {
-  return CXTranslationUnit_PrecompiledPreamble | 
-         CXTranslationUnit_CacheCompletionResults;
-}
-  
-CXTranslationUnit
-clang_createTranslationUnitFromSourceFile(CXIndex CIdx,
-                                          const char *source_filename,
-                                          int num_command_line_args,
-                                          const char * const *command_line_args,
-                                          unsigned num_unsaved_files,
-                                          struct CXUnsavedFile *unsaved_files) {
-  unsigned Options = CXTranslationUnit_DetailedPreprocessingRecord;
-  return clang_parseTranslationUnit(CIdx, source_filename,
-                                    command_line_args, num_command_line_args,
-                                    unsaved_files, num_unsaved_files,
-                                    Options);
-}
-
-struct ParseTranslationUnitInfo {
-  CXIndex CIdx;
-  const char *source_filename;
-  const char *const *command_line_args;
-  int num_command_line_args;
-  struct CXUnsavedFile *unsaved_files;
-  unsigned num_unsaved_files;
-  unsigned options;
-  CXTranslationUnit result;
-};
-static void clang_parseTranslationUnit_Impl(void *UserData) {
-  ParseTranslationUnitInfo *PTUI =
-    static_cast<ParseTranslationUnitInfo*>(UserData);
-  CXIndex CIdx = PTUI->CIdx;
-  const char *source_filename = PTUI->source_filename;
-  const char * const *command_line_args = PTUI->command_line_args;
-  int num_command_line_args = PTUI->num_command_line_args;
-  struct CXUnsavedFile *unsaved_files = PTUI->unsaved_files;
-  unsigned num_unsaved_files = PTUI->num_unsaved_files;
-  unsigned options = PTUI->options;
-  PTUI->result = 0;
-
-  if (!CIdx)
-    return;
-
-  CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx);
-
-  if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForIndexing))
-    setThreadBackgroundPriority();
-
-  bool PrecompilePreamble = options & CXTranslationUnit_PrecompiledPreamble;
-  // FIXME: Add a flag for modules.
-  TranslationUnitKind TUKind
-    = (options & CXTranslationUnit_Incomplete)? TU_Prefix : TU_Complete;
-  bool CacheCodeCompetionResults
-    = options & CXTranslationUnit_CacheCompletionResults;
-  bool IncludeBriefCommentsInCodeCompletion
-    = options & CXTranslationUnit_IncludeBriefCommentsInCodeCompletion;
-  bool SkipFunctionBodies = options & CXTranslationUnit_SkipFunctionBodies;
-  bool ForSerialization = options & CXTranslationUnit_ForSerialization;
-
-  // Configure the diagnostics.
-  IntrusiveRefCntPtr<DiagnosticsEngine>
-    Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions));
-
-  // Recover resources if we crash before exiting this function.
-  llvm::CrashRecoveryContextCleanupRegistrar<DiagnosticsEngine,
-    llvm::CrashRecoveryContextReleaseRefCleanup<DiagnosticsEngine> >
-    DiagCleanup(Diags.getPtr());
-
-  OwningPtr<std::vector<ASTUnit::RemappedFile> >
-    RemappedFiles(new std::vector<ASTUnit::RemappedFile>());
-
-  // Recover resources if we crash before exiting this function.
-  llvm::CrashRecoveryContextCleanupRegistrar<
-    std::vector<ASTUnit::RemappedFile> > RemappedCleanup(RemappedFiles.get());
-
-  for (unsigned I = 0; I != num_unsaved_files; ++I) {
-    StringRef Data(unsaved_files[I].Contents, unsaved_files[I].Length);
-    const llvm::MemoryBuffer *Buffer
-      = llvm::MemoryBuffer::getMemBufferCopy(Data, unsaved_files[I].Filename);
-    RemappedFiles->push_back(std::make_pair(unsaved_files[I].Filename,
-                                            Buffer));
-  }
-
-  OwningPtr<std::vector<const char *> >
-    Args(new std::vector<const char*>());
-
-  // Recover resources if we crash before exiting this method.
-  llvm::CrashRecoveryContextCleanupRegistrar<std::vector<const char*> >
-    ArgsCleanup(Args.get());
-
-  // Since the Clang C library is primarily used by batch tools dealing with
-  // (often very broken) source code, where spell-checking can have a
-  // significant negative impact on performance (particularly when 
-  // precompiled headers are involved), we disable it by default.
-  // Only do this if we haven't found a spell-checking-related argument.
-  bool FoundSpellCheckingArgument = false;
-  for (int I = 0; I != num_command_line_args; ++I) {
-    if (strcmp(command_line_args[I], "-fno-spell-checking") == 0 ||
-        strcmp(command_line_args[I], "-fspell-checking") == 0) {
-      FoundSpellCheckingArgument = true;
-      break;
-    }
-  }
-  if (!FoundSpellCheckingArgument)
-    Args->push_back("-fno-spell-checking");
-  
-  Args->insert(Args->end(), command_line_args,
-               command_line_args + num_command_line_args);
-
-  // The 'source_filename' argument is optional.  If the caller does not
-  // specify it then it is assumed that the source file is specified
-  // in the actual argument list.
-  // Put the source file after command_line_args otherwise if '-x' flag is
-  // present it will be unused.
-  if (source_filename)
-    Args->push_back(source_filename);
-
-  // Do we need the detailed preprocessing record?
-  if (options & CXTranslationUnit_DetailedPreprocessingRecord) {
-    Args->push_back("-Xclang");
-    Args->push_back("-detailed-preprocessing-record");
-  }
-  
-  unsigned NumErrors = Diags->getClient()->getNumErrors();
-  OwningPtr<ASTUnit> ErrUnit;
-  OwningPtr<ASTUnit> Unit(
-    ASTUnit::LoadFromCommandLine(Args->size() ? &(*Args)[0] : 0 
-                                 /* vector::data() not portable */,
-                                 Args->size() ? (&(*Args)[0] + Args->size()) :0,
-                                 Diags,
-                                 CXXIdx->getClangResourcesPath(),
-                                 CXXIdx->getOnlyLocalDecls(),
-                                 /*CaptureDiagnostics=*/true,
-                                 RemappedFiles->size() ? &(*RemappedFiles)[0]:0,
-                                 RemappedFiles->size(),
-                                 /*RemappedFilesKeepOriginalName=*/true,
-                                 PrecompilePreamble,
-                                 TUKind,
-                                 CacheCodeCompetionResults,
-                                 IncludeBriefCommentsInCodeCompletion,
-                                 /*AllowPCHWithCompilerErrors=*/true,
-                                 SkipFunctionBodies,
-                                 /*UserFilesAreVolatile=*/true,
-                                 ForSerialization,
-                                 &ErrUnit));
-
-  if (NumErrors != Diags->getClient()->getNumErrors()) {
-    // Make sure to check that 'Unit' is non-NULL.
-    if (CXXIdx->getDisplayDiagnostics())
-      printDiagsToStderr(Unit ? Unit.get() : ErrUnit.get());
-  }
-
-  PTUI->result = MakeCXTranslationUnit(CXXIdx, Unit.take());
-}
-CXTranslationUnit clang_parseTranslationUnit(CXIndex CIdx,
-                                             const char *source_filename,
-                                         const char * const *command_line_args,
-                                             int num_command_line_args,
-                                            struct CXUnsavedFile *unsaved_files,
-                                             unsigned num_unsaved_files,
-                                             unsigned options) {
-  LOG_FUNC_SECTION {
-    *Log << source_filename << ": ";
-    for (int i = 0; i != num_command_line_args; ++i)
-      *Log << command_line_args[i] << " ";
-  }
-
-  ParseTranslationUnitInfo PTUI = { CIdx, source_filename, command_line_args,
-                                    num_command_line_args, unsaved_files,
-                                    num_unsaved_files, options, 0 };
-  llvm::CrashRecoveryContext CRC;
-
-  if (!RunSafely(CRC, clang_parseTranslationUnit_Impl, &PTUI)) {
-    fprintf(stderr, "libclang: crash detected during parsing: {\n");
-    fprintf(stderr, "  'source_filename' : '%s'\n", source_filename);
-    fprintf(stderr, "  'command_line_args' : [");
-    for (int i = 0; i != num_command_line_args; ++i) {
-      if (i)
-        fprintf(stderr, ", ");
-      fprintf(stderr, "'%s'", command_line_args[i]);
-    }
-    fprintf(stderr, "],\n");
-    fprintf(stderr, "  'unsaved_files' : [");
-    for (unsigned i = 0; i != num_unsaved_files; ++i) {
-      if (i)
-        fprintf(stderr, ", ");
-      fprintf(stderr, "('%s', '...', %ld)", unsaved_files[i].Filename,
-              unsaved_files[i].Length);
-    }
-    fprintf(stderr, "],\n");
-    fprintf(stderr, "  'options' : %d,\n", options);
-    fprintf(stderr, "}\n");
-    
-    return 0;
-  } else if (getenv("LIBCLANG_RESOURCE_USAGE")) {
-    PrintLibclangResourceUsage(PTUI.result);
-  }
-  
-  return PTUI.result;
-}
-
-unsigned clang_defaultSaveOptions(CXTranslationUnit TU) {
-  return CXSaveTranslationUnit_None;
-}  
-
-namespace {
-
-struct SaveTranslationUnitInfo {
-  CXTranslationUnit TU;
-  const char *FileName;
-  unsigned options;
-  CXSaveError result;
-};
-
-}
-
-static void clang_saveTranslationUnit_Impl(void *UserData) {
-  SaveTranslationUnitInfo *STUI =
-    static_cast<SaveTranslationUnitInfo*>(UserData);
-
-  CIndexer *CXXIdx = STUI->TU->CIdx;
-  if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForIndexing))
-    setThreadBackgroundPriority();
-
-  bool hadError = cxtu::getASTUnit(STUI->TU)->Save(STUI->FileName);
-  STUI->result = hadError ? CXSaveError_Unknown : CXSaveError_None;
-}
-
-int clang_saveTranslationUnit(CXTranslationUnit TU, const char *FileName,
-                              unsigned options) {
-  LOG_FUNC_SECTION {
-    *Log << TU << ' ' << FileName;
-  }
-
-  if (!TU)
-    return CXSaveError_InvalidTU;
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
-  if (!CXXUnit->hasSema())
-    return CXSaveError_InvalidTU;
-
-  SaveTranslationUnitInfo STUI = { TU, FileName, options, CXSaveError_None };
-
-  if (!CXXUnit->getDiagnostics().hasUnrecoverableErrorOccurred() ||
-      getenv("LIBCLANG_NOTHREADS")) {
-    clang_saveTranslationUnit_Impl(&STUI);
-
-    if (getenv("LIBCLANG_RESOURCE_USAGE"))
-      PrintLibclangResourceUsage(TU);
-
-    return STUI.result;
-  }
-
-  // We have an AST that has invalid nodes due to compiler errors.
-  // Use a crash recovery thread for protection.
-
-  llvm::CrashRecoveryContext CRC;
-
-  if (!RunSafely(CRC, clang_saveTranslationUnit_Impl, &STUI)) {
-    fprintf(stderr, "libclang: crash detected during AST saving: {\n");
-    fprintf(stderr, "  'filename' : '%s'\n", FileName);
-    fprintf(stderr, "  'options' : %d,\n", options);
-    fprintf(stderr, "}\n");
-
-    return CXSaveError_Unknown;
-
-  } else if (getenv("LIBCLANG_RESOURCE_USAGE")) {
-    PrintLibclangResourceUsage(TU);
-  }
-
-  return STUI.result;
-}
-
-void clang_disposeTranslationUnit(CXTranslationUnit CTUnit) {
-  if (CTUnit) {
-    // If the translation unit has been marked as unsafe to free, just discard
-    // it.
-    if (cxtu::getASTUnit(CTUnit)->isUnsafeToFree())
-      return;
-
-    delete cxtu::getASTUnit(CTUnit);
-    delete CTUnit->StringPool;
-    delete static_cast<CXDiagnosticSetImpl *>(CTUnit->Diagnostics);
-    disposeOverridenCXCursorsPool(CTUnit->OverridenCursorsPool);
-    delete CTUnit->FormatContext;
-    delete CTUnit;
-  }
-}
-
-unsigned clang_defaultReparseOptions(CXTranslationUnit TU) {
-  return CXReparse_None;
-}
-
-struct ReparseTranslationUnitInfo {
-  CXTranslationUnit TU;
-  unsigned num_unsaved_files;
-  struct CXUnsavedFile *unsaved_files;
-  unsigned options;
-  int result;
-};
-
-static void clang_reparseTranslationUnit_Impl(void *UserData) {
-  ReparseTranslationUnitInfo *RTUI =
-    static_cast<ReparseTranslationUnitInfo*>(UserData);
-  CXTranslationUnit TU = RTUI->TU;
-  if (!TU)
-    return;
-
-  // Reset the associated diagnostics.
-  delete static_cast<CXDiagnosticSetImpl*>(TU->Diagnostics);
-  TU->Diagnostics = 0;
-
-  unsigned num_unsaved_files = RTUI->num_unsaved_files;
-  struct CXUnsavedFile *unsaved_files = RTUI->unsaved_files;
-  unsigned options = RTUI->options;
-  (void) options;
-  RTUI->result = 1;
-
-  CIndexer *CXXIdx = TU->CIdx;
-  if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForEditing))
-    setThreadBackgroundPriority();
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
-  
-  OwningPtr<std::vector<ASTUnit::RemappedFile> >
-    RemappedFiles(new std::vector<ASTUnit::RemappedFile>());
-  
-  // Recover resources if we crash before exiting this function.
-  llvm::CrashRecoveryContextCleanupRegistrar<
-    std::vector<ASTUnit::RemappedFile> > RemappedCleanup(RemappedFiles.get());
-  
-  for (unsigned I = 0; I != num_unsaved_files; ++I) {
-    StringRef Data(unsaved_files[I].Contents, unsaved_files[I].Length);
-    const llvm::MemoryBuffer *Buffer
-      = llvm::MemoryBuffer::getMemBufferCopy(Data, unsaved_files[I].Filename);
-    RemappedFiles->push_back(std::make_pair(unsaved_files[I].Filename,
-                                            Buffer));
-  }
-  
-  if (!CXXUnit->Reparse(RemappedFiles->size() ? &(*RemappedFiles)[0] : 0,
-                        RemappedFiles->size()))
-    RTUI->result = 0;
-}
-
-int clang_reparseTranslationUnit(CXTranslationUnit TU,
-                                 unsigned num_unsaved_files,
-                                 struct CXUnsavedFile *unsaved_files,
-                                 unsigned options) {
-  LOG_FUNC_SECTION {
-    *Log << TU;
-  }
-
-  ReparseTranslationUnitInfo RTUI = { TU, num_unsaved_files, unsaved_files,
-                                      options, 0 };
-
-  if (getenv("LIBCLANG_NOTHREADS")) {
-    clang_reparseTranslationUnit_Impl(&RTUI);
-    return RTUI.result;
-  }
-
-  llvm::CrashRecoveryContext CRC;
-
-  if (!RunSafely(CRC, clang_reparseTranslationUnit_Impl, &RTUI)) {
-    fprintf(stderr, "libclang: crash detected during reparsing\n");
-    cxtu::getASTUnit(TU)->setUnsafeToFree(true);
-    return 1;
-  } else if (getenv("LIBCLANG_RESOURCE_USAGE"))
-    PrintLibclangResourceUsage(TU);
-
-  return RTUI.result;
-}
-
-
-CXString clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit) {
-  if (!CTUnit)
-    return cxstring::createEmpty();
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(CTUnit);
-  return cxstring::createDup(CXXUnit->getOriginalSourceFileName());
-}
-
-CXCursor clang_getTranslationUnitCursor(CXTranslationUnit TU) {
-  if (!TU)
-    return clang_getNullCursor();
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  return MakeCXCursor(CXXUnit->getASTContext().getTranslationUnitDecl(), TU);
-}
-
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// CXFile Operations.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-CXString clang_getFileName(CXFile SFile) {
-  if (!SFile)
-    return cxstring::createNull();
-
-  FileEntry *FEnt = static_cast<FileEntry *>(SFile);
-  return cxstring::createRef(FEnt->getName());
-}
-
-time_t clang_getFileTime(CXFile SFile) {
-  if (!SFile)
-    return 0;
-
-  FileEntry *FEnt = static_cast<FileEntry *>(SFile);
-  return FEnt->getModificationTime();
-}
-
-CXFile clang_getFile(CXTranslationUnit TU, const char *file_name) {
-  if (!TU)
-    return 0;
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-
-  FileManager &FMgr = CXXUnit->getFileManager();
-  return const_cast<FileEntry *>(FMgr.getFile(file_name));
-}
-
-unsigned clang_isFileMultipleIncludeGuarded(CXTranslationUnit TU, CXFile file) {
-  if (!TU || !file)
-    return 0;
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  FileEntry *FEnt = static_cast<FileEntry *>(file);
-  return CXXUnit->getPreprocessor().getHeaderSearchInfo()
-                                          .isFileMultipleIncludeGuarded(FEnt);
-}
-
-int clang_getFileUniqueID(CXFile file, CXFileUniqueID *outID) {
-  if (!file || !outID)
-    return 1;
-
-#ifdef LLVM_ON_WIN32
-  return 1; // inodes not supported on windows.
-#else
-  FileEntry *FEnt = static_cast<FileEntry *>(file);
-  outID->data[0] = FEnt->getDevice();
-  outID->data[1] = FEnt->getInode();
-  outID->data[2] = FEnt->getModificationTime();
-  return 0;
-#endif
-}
-
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// CXCursor Operations.
-//===----------------------------------------------------------------------===//
-
-static const Decl *getDeclFromExpr(const Stmt *E) {
-  if (const ImplicitCastExpr *CE = dyn_cast<ImplicitCastExpr>(E))
-    return getDeclFromExpr(CE->getSubExpr());
-
-  if (const DeclRefExpr *RefExpr = dyn_cast<DeclRefExpr>(E))
-    return RefExpr->getDecl();
-  if (const MemberExpr *ME = dyn_cast<MemberExpr>(E))
-    return ME->getMemberDecl();
-  if (const ObjCIvarRefExpr *RE = dyn_cast<ObjCIvarRefExpr>(E))
-    return RE->getDecl();
-  if (const ObjCPropertyRefExpr *PRE = dyn_cast<ObjCPropertyRefExpr>(E)) {
-    if (PRE->isExplicitProperty())
-      return PRE->getExplicitProperty();
-    // It could be messaging both getter and setter as in:
-    // ++myobj.myprop;
-    // in which case prefer to associate the setter since it is less obvious
-    // from inspecting the source that the setter is going to get called.
-    if (PRE->isMessagingSetter())
-      return PRE->getImplicitPropertySetter();
-    return PRE->getImplicitPropertyGetter();
-  }
-  if (const PseudoObjectExpr *POE = dyn_cast<PseudoObjectExpr>(E))
-    return getDeclFromExpr(POE->getSyntacticForm());
-  if (const OpaqueValueExpr *OVE = dyn_cast<OpaqueValueExpr>(E))
-    if (Expr *Src = OVE->getSourceExpr())
-      return getDeclFromExpr(Src);
-      
-  if (const CallExpr *CE = dyn_cast<CallExpr>(E))
-    return getDeclFromExpr(CE->getCallee());
-  if (const CXXConstructExpr *CE = dyn_cast<CXXConstructExpr>(E))
-    if (!CE->isElidable())
-    return CE->getConstructor();
-  if (const ObjCMessageExpr *OME = dyn_cast<ObjCMessageExpr>(E))
-    return OME->getMethodDecl();
-
-  if (const ObjCProtocolExpr *PE = dyn_cast<ObjCProtocolExpr>(E))
-    return PE->getProtocol();
-  if (const SubstNonTypeTemplateParmPackExpr *NTTP
-                              = dyn_cast<SubstNonTypeTemplateParmPackExpr>(E))
-    return NTTP->getParameterPack();
-  if (const SizeOfPackExpr *SizeOfPack = dyn_cast<SizeOfPackExpr>(E))
-    if (isa<NonTypeTemplateParmDecl>(SizeOfPack->getPack()) || 
-        isa<ParmVarDecl>(SizeOfPack->getPack()))
-      return SizeOfPack->getPack();
-  
-  return 0;
-}
-
-static SourceLocation getLocationFromExpr(const Expr *E) {
-  if (const ImplicitCastExpr *CE = dyn_cast<ImplicitCastExpr>(E))
-    return getLocationFromExpr(CE->getSubExpr());
-
-  if (const ObjCMessageExpr *Msg = dyn_cast<ObjCMessageExpr>(E))
-    return /*FIXME:*/Msg->getLeftLoc();
-  if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E))
-    return DRE->getLocation();
-  if (const MemberExpr *Member = dyn_cast<MemberExpr>(E))
-    return Member->getMemberLoc();
-  if (const ObjCIvarRefExpr *Ivar = dyn_cast<ObjCIvarRefExpr>(E))
-    return Ivar->getLocation();
-  if (const SizeOfPackExpr *SizeOfPack = dyn_cast<SizeOfPackExpr>(E))
-    return SizeOfPack->getPackLoc();
-  if (const ObjCPropertyRefExpr *PropRef = dyn_cast<ObjCPropertyRefExpr>(E))
-    return PropRef->getLocation();
-  
-  return E->getLocStart();
-}
-
-extern "C" {
-
-unsigned clang_visitChildren(CXCursor parent,
-                             CXCursorVisitor visitor,
-                             CXClientData client_data) {
-  CursorVisitor CursorVis(getCursorTU(parent), visitor, client_data,
-                          /*VisitPreprocessorLast=*/false);
-  return CursorVis.VisitChildren(parent);
-}
-
-#ifndef __has_feature
-#define __has_feature(x) 0
-#endif
-#if __has_feature(blocks)
-typedef enum CXChildVisitResult 
-     (^CXCursorVisitorBlock)(CXCursor cursor, CXCursor parent);
-
-static enum CXChildVisitResult visitWithBlock(CXCursor cursor, CXCursor parent,
-    CXClientData client_data) {
-  CXCursorVisitorBlock block = (CXCursorVisitorBlock)client_data;
-  return block(cursor, parent);
-}
-#else
-// If we are compiled with a compiler that doesn't have native blocks support,
-// define and call the block manually, so the 
-typedef struct _CXChildVisitResult
-{
-	void *isa;
-	int flags;
-	int reserved;
-	enum CXChildVisitResult(*invoke)(struct _CXChildVisitResult*, CXCursor,
-                                         CXCursor);
-} *CXCursorVisitorBlock;
-
-static enum CXChildVisitResult visitWithBlock(CXCursor cursor, CXCursor parent,
-    CXClientData client_data) {
-  CXCursorVisitorBlock block = (CXCursorVisitorBlock)client_data;
-  return block->invoke(block, cursor, parent);
-}
-#endif
-
-
-unsigned clang_visitChildrenWithBlock(CXCursor parent,
-                                      CXCursorVisitorBlock block) {
-  return clang_visitChildren(parent, visitWithBlock, block);
-}
-
-static CXString getDeclSpelling(const Decl *D) {
-  if (!D)
-    return cxstring::createEmpty();
-
-  const NamedDecl *ND = dyn_cast<NamedDecl>(D);
-  if (!ND) {
-    if (const ObjCPropertyImplDecl *PropImpl =
-            dyn_cast<ObjCPropertyImplDecl>(D))
-      if (ObjCPropertyDecl *Property = PropImpl->getPropertyDecl())
-        return cxstring::createDup(Property->getIdentifier()->getName());
-    
-    if (const ImportDecl *ImportD = dyn_cast<ImportDecl>(D))
-      if (Module *Mod = ImportD->getImportedModule())
-        return cxstring::createDup(Mod->getFullModuleName());
-
-    return cxstring::createEmpty();
-  }
-  
-  if (const ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(ND))
-    return cxstring::createDup(OMD->getSelector().getAsString());
-
-  if (const ObjCCategoryImplDecl *CIMP = dyn_cast<ObjCCategoryImplDecl>(ND))
-    // No, this isn't the same as the code below. getIdentifier() is non-virtual
-    // and returns different names. NamedDecl returns the class name and
-    // ObjCCategoryImplDecl returns the category name.
-    return cxstring::createRef(CIMP->getIdentifier()->getNameStart());
-
-  if (isa<UsingDirectiveDecl>(D))
-    return cxstring::createEmpty();
-  
-  SmallString<1024> S;
-  llvm::raw_svector_ostream os(S);
-  ND->printName(os);
-  
-  return cxstring::createDup(os.str());
-}
-
-CXString clang_getCursorSpelling(CXCursor C) {
-  if (clang_isTranslationUnit(C.kind))
-    return clang_getTranslationUnitSpelling(getCursorTU(C));
-
-  if (clang_isReference(C.kind)) {
-    switch (C.kind) {
-    case CXCursor_ObjCSuperClassRef: {
-      const ObjCInterfaceDecl *Super = getCursorObjCSuperClassRef(C).first;
-      return cxstring::createRef(Super->getIdentifier()->getNameStart());
-    }
-    case CXCursor_ObjCClassRef: {
-      const ObjCInterfaceDecl *Class = getCursorObjCClassRef(C).first;
-      return cxstring::createRef(Class->getIdentifier()->getNameStart());
-    }
-    case CXCursor_ObjCProtocolRef: {
-      const ObjCProtocolDecl *OID = getCursorObjCProtocolRef(C).first;
-      assert(OID && "getCursorSpelling(): Missing protocol decl");
-      return cxstring::createRef(OID->getIdentifier()->getNameStart());
-    }
-    case CXCursor_CXXBaseSpecifier: {
-      const CXXBaseSpecifier *B = getCursorCXXBaseSpecifier(C);
-      return cxstring::createDup(B->getType().getAsString());
-    }
-    case CXCursor_TypeRef: {
-      const TypeDecl *Type = getCursorTypeRef(C).first;
-      assert(Type && "Missing type decl");
-
-      return cxstring::createDup(getCursorContext(C).getTypeDeclType(Type).
-                              getAsString());
-    }
-    case CXCursor_TemplateRef: {
-      const TemplateDecl *Template = getCursorTemplateRef(C).first;
-      assert(Template && "Missing template decl");
-      
-      return cxstring::createDup(Template->getNameAsString());
-    }
-        
-    case CXCursor_NamespaceRef: {
-      const NamedDecl *NS = getCursorNamespaceRef(C).first;
-      assert(NS && "Missing namespace decl");
-      
-      return cxstring::createDup(NS->getNameAsString());
-    }
-
-    case CXCursor_MemberRef: {
-      const FieldDecl *Field = getCursorMemberRef(C).first;
-      assert(Field && "Missing member decl");
-      
-      return cxstring::createDup(Field->getNameAsString());
-    }
-
-    case CXCursor_LabelRef: {
-      const LabelStmt *Label = getCursorLabelRef(C).first;
-      assert(Label && "Missing label");
-      
-      return cxstring::createRef(Label->getName());
-    }
-
-    case CXCursor_OverloadedDeclRef: {
-      OverloadedDeclRefStorage Storage = getCursorOverloadedDeclRef(C).first;
-      if (const Decl *D = Storage.dyn_cast<const Decl *>()) {
-        if (const NamedDecl *ND = dyn_cast<NamedDecl>(D))
-          return cxstring::createDup(ND->getNameAsString());
-        return cxstring::createEmpty();
-      }
-      if (const OverloadExpr *E = Storage.dyn_cast<const OverloadExpr *>())
-        return cxstring::createDup(E->getName().getAsString());
-      OverloadedTemplateStorage *Ovl
-        = Storage.get<OverloadedTemplateStorage*>();
-      if (Ovl->size() == 0)
-        return cxstring::createEmpty();
-      return cxstring::createDup((*Ovl->begin())->getNameAsString());
-    }
-        
-    case CXCursor_VariableRef: {
-      const VarDecl *Var = getCursorVariableRef(C).first;
-      assert(Var && "Missing variable decl");
-      
-      return cxstring::createDup(Var->getNameAsString());
-    }
-        
-    default:
-      return cxstring::createRef("<not implemented>");
-    }
-  }
-
-  if (clang_isExpression(C.kind)) {
-    const Decl *D = getDeclFromExpr(getCursorExpr(C));
-    if (D)
-      return getDeclSpelling(D);
-    return cxstring::createEmpty();
-  }
-
-  if (clang_isStatement(C.kind)) {
-    const Stmt *S = getCursorStmt(C);
-    if (const LabelStmt *Label = dyn_cast_or_null<LabelStmt>(S))
-      return cxstring::createRef(Label->getName());
-
-    return cxstring::createEmpty();
-  }
-  
-  if (C.kind == CXCursor_MacroExpansion)
-    return cxstring::createRef(getCursorMacroExpansion(C).getName()
-                                                           ->getNameStart());
-
-  if (C.kind == CXCursor_MacroDefinition)
-    return cxstring::createRef(getCursorMacroDefinition(C)->getName()
-                                                           ->getNameStart());
-
-  if (C.kind == CXCursor_InclusionDirective)
-    return cxstring::createDup(getCursorInclusionDirective(C)->getFileName());
-      
-  if (clang_isDeclaration(C.kind))
-    return getDeclSpelling(getCursorDecl(C));
-
-  if (C.kind == CXCursor_AnnotateAttr) {
-    const AnnotateAttr *AA = cast<AnnotateAttr>(cxcursor::getCursorAttr(C));
-    return cxstring::createDup(AA->getAnnotation());
-  }
-
-  if (C.kind == CXCursor_AsmLabelAttr) {
-    const AsmLabelAttr *AA = cast<AsmLabelAttr>(cxcursor::getCursorAttr(C));
-    return cxstring::createDup(AA->getLabel());
-  }
-
-  return cxstring::createEmpty();
-}
-
-CXSourceRange clang_Cursor_getSpellingNameRange(CXCursor C,
-                                                unsigned pieceIndex,
-                                                unsigned options) {
-  if (clang_Cursor_isNull(C))
-    return clang_getNullRange();
-
-  ASTContext &Ctx = getCursorContext(C);
-
-  if (clang_isStatement(C.kind)) {
-    const Stmt *S = getCursorStmt(C);
-    if (const LabelStmt *Label = dyn_cast_or_null<LabelStmt>(S)) {
-      if (pieceIndex > 0)
-        return clang_getNullRange();
-      return cxloc::translateSourceRange(Ctx, Label->getIdentLoc());
-    }
-
-    return clang_getNullRange();
-  }
-
-  if (C.kind == CXCursor_ObjCMessageExpr) {
-    if (const ObjCMessageExpr *
-          ME = dyn_cast_or_null<ObjCMessageExpr>(getCursorExpr(C))) {
-      if (pieceIndex >= ME->getNumSelectorLocs())
-        return clang_getNullRange();
-      return cxloc::translateSourceRange(Ctx, ME->getSelectorLoc(pieceIndex));
-    }
-  }
-
-  if (C.kind == CXCursor_ObjCInstanceMethodDecl ||
-      C.kind == CXCursor_ObjCClassMethodDecl) {
-    if (const ObjCMethodDecl *
-          MD = dyn_cast_or_null<ObjCMethodDecl>(getCursorDecl(C))) {
-      if (pieceIndex >= MD->getNumSelectorLocs())
-        return clang_getNullRange();
-      return cxloc::translateSourceRange(Ctx, MD->getSelectorLoc(pieceIndex));
-    }
-  }
-
-  if (C.kind == CXCursor_ObjCCategoryDecl ||
-      C.kind == CXCursor_ObjCCategoryImplDecl) {
-    if (pieceIndex > 0)
-      return clang_getNullRange();
-    if (const ObjCCategoryDecl *
-          CD = dyn_cast_or_null<ObjCCategoryDecl>(getCursorDecl(C)))
-      return cxloc::translateSourceRange(Ctx, CD->getCategoryNameLoc());
-    if (const ObjCCategoryImplDecl *
-          CID = dyn_cast_or_null<ObjCCategoryImplDecl>(getCursorDecl(C)))
-      return cxloc::translateSourceRange(Ctx, CID->getCategoryNameLoc());
-  }
-
-  if (C.kind == CXCursor_ModuleImportDecl) {
-    if (pieceIndex > 0)
-      return clang_getNullRange();
-    if (const ImportDecl *ImportD =
-            dyn_cast_or_null<ImportDecl>(getCursorDecl(C))) {
-      ArrayRef<SourceLocation> Locs = ImportD->getIdentifierLocs();
-      if (!Locs.empty())
-        return cxloc::translateSourceRange(Ctx,
-                                         SourceRange(Locs.front(), Locs.back()));
-    }
-    return clang_getNullRange();
-  }
-
-  // FIXME: A CXCursor_InclusionDirective should give the location of the
-  // filename, but we don't keep track of this.
-
-  // FIXME: A CXCursor_AnnotateAttr should give the location of the annotation
-  // but we don't keep track of this.
-
-  // FIXME: A CXCursor_AsmLabelAttr should give the location of the label
-  // but we don't keep track of this.
-
-  // Default handling, give the location of the cursor.
-
-  if (pieceIndex > 0)
-    return clang_getNullRange();
-
-  CXSourceLocation CXLoc = clang_getCursorLocation(C);
-  SourceLocation Loc = cxloc::translateSourceLocation(CXLoc);
-  return cxloc::translateSourceRange(Ctx, Loc);
-}
-
-CXString clang_getCursorDisplayName(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return clang_getCursorSpelling(C);
-  
-  const Decl *D = getCursorDecl(C);
-  if (!D)
-    return cxstring::createEmpty();
-
-  PrintingPolicy Policy = getCursorContext(C).getPrintingPolicy();
-  if (const FunctionTemplateDecl *FunTmpl = dyn_cast<FunctionTemplateDecl>(D))
-    D = FunTmpl->getTemplatedDecl();
-  
-  if (const FunctionDecl *Function = dyn_cast<FunctionDecl>(D)) {
-    SmallString<64> Str;
-    llvm::raw_svector_ostream OS(Str);
-    OS << *Function;
-    if (Function->getPrimaryTemplate())
-      OS << "<>";
-    OS << "(";
-    for (unsigned I = 0, N = Function->getNumParams(); I != N; ++I) {
-      if (I)
-        OS << ", ";
-      OS << Function->getParamDecl(I)->getType().getAsString(Policy);
-    }
-    
-    if (Function->isVariadic()) {
-      if (Function->getNumParams())
-        OS << ", ";
-      OS << "...";
-    }
-    OS << ")";
-    return cxstring::createDup(OS.str());
-  }
-  
-  if (const ClassTemplateDecl *ClassTemplate = dyn_cast<ClassTemplateDecl>(D)) {
-    SmallString<64> Str;
-    llvm::raw_svector_ostream OS(Str);
-    OS << *ClassTemplate;
-    OS << "<";
-    TemplateParameterList *Params = ClassTemplate->getTemplateParameters();
-    for (unsigned I = 0, N = Params->size(); I != N; ++I) {
-      if (I)
-        OS << ", ";
-      
-      NamedDecl *Param = Params->getParam(I);
-      if (Param->getIdentifier()) {
-        OS << Param->getIdentifier()->getName();
-        continue;
-      }
-      
-      // There is no parameter name, which makes this tricky. Try to come up
-      // with something useful that isn't too long.
-      if (TemplateTypeParmDecl *TTP = dyn_cast<TemplateTypeParmDecl>(Param))
-        OS << (TTP->wasDeclaredWithTypename()? "typename" : "class");
-      else if (NonTypeTemplateParmDecl *NTTP
-                                    = dyn_cast<NonTypeTemplateParmDecl>(Param))
-        OS << NTTP->getType().getAsString(Policy);
-      else
-        OS << "template<...> class";
-    }
-    
-    OS << ">";
-    return cxstring::createDup(OS.str());
-  }
-  
-  if (const ClassTemplateSpecializationDecl *ClassSpec
-                              = dyn_cast<ClassTemplateSpecializationDecl>(D)) {
-    // If the type was explicitly written, use that.
-    if (TypeSourceInfo *TSInfo = ClassSpec->getTypeAsWritten())
-      return cxstring::createDup(TSInfo->getType().getAsString(Policy));
-    
-    SmallString<128> Str;
-    llvm::raw_svector_ostream OS(Str);
-    OS << *ClassSpec;
-    TemplateSpecializationType::PrintTemplateArgumentList(OS,
-                                      ClassSpec->getTemplateArgs().data(),
-                                      ClassSpec->getTemplateArgs().size(),
-                                                                Policy);
-    return cxstring::createDup(OS.str());
-  }
-  
-  return clang_getCursorSpelling(C);
-}
-  
-CXString clang_getCursorKindSpelling(enum CXCursorKind Kind) {
-  switch (Kind) {
-  case CXCursor_FunctionDecl:
-      return cxstring::createRef("FunctionDecl");
-  case CXCursor_TypedefDecl:
-      return cxstring::createRef("TypedefDecl");
-  case CXCursor_EnumDecl:
-      return cxstring::createRef("EnumDecl");
-  case CXCursor_EnumConstantDecl:
-      return cxstring::createRef("EnumConstantDecl");
-  case CXCursor_StructDecl:
-      return cxstring::createRef("StructDecl");
-  case CXCursor_UnionDecl:
-      return cxstring::createRef("UnionDecl");
-  case CXCursor_ClassDecl:
-      return cxstring::createRef("ClassDecl");
-  case CXCursor_FieldDecl:
-      return cxstring::createRef("FieldDecl");
-  case CXCursor_VarDecl:
-      return cxstring::createRef("VarDecl");
-  case CXCursor_ParmDecl:
-      return cxstring::createRef("ParmDecl");
-  case CXCursor_ObjCInterfaceDecl:
-      return cxstring::createRef("ObjCInterfaceDecl");
-  case CXCursor_ObjCCategoryDecl:
-      return cxstring::createRef("ObjCCategoryDecl");
-  case CXCursor_ObjCProtocolDecl:
-      return cxstring::createRef("ObjCProtocolDecl");
-  case CXCursor_ObjCPropertyDecl:
-      return cxstring::createRef("ObjCPropertyDecl");
-  case CXCursor_ObjCIvarDecl:
-      return cxstring::createRef("ObjCIvarDecl");
-  case CXCursor_ObjCInstanceMethodDecl:
-      return cxstring::createRef("ObjCInstanceMethodDecl");
-  case CXCursor_ObjCClassMethodDecl:
-      return cxstring::createRef("ObjCClassMethodDecl");
-  case CXCursor_ObjCImplementationDecl:
-      return cxstring::createRef("ObjCImplementationDecl");
-  case CXCursor_ObjCCategoryImplDecl:
-      return cxstring::createRef("ObjCCategoryImplDecl");
-  case CXCursor_CXXMethod:
-      return cxstring::createRef("CXXMethod");
-  case CXCursor_UnexposedDecl:
-      return cxstring::createRef("UnexposedDecl");
-  case CXCursor_ObjCSuperClassRef:
-      return cxstring::createRef("ObjCSuperClassRef");
-  case CXCursor_ObjCProtocolRef:
-      return cxstring::createRef("ObjCProtocolRef");
-  case CXCursor_ObjCClassRef:
-      return cxstring::createRef("ObjCClassRef");
-  case CXCursor_TypeRef:
-      return cxstring::createRef("TypeRef");
-  case CXCursor_TemplateRef:
-      return cxstring::createRef("TemplateRef");
-  case CXCursor_NamespaceRef:
-    return cxstring::createRef("NamespaceRef");
-  case CXCursor_MemberRef:
-    return cxstring::createRef("MemberRef");
-  case CXCursor_LabelRef:
-    return cxstring::createRef("LabelRef");
-  case CXCursor_OverloadedDeclRef:
-    return cxstring::createRef("OverloadedDeclRef");
-  case CXCursor_VariableRef:
-    return cxstring::createRef("VariableRef");
-  case CXCursor_IntegerLiteral:
-      return cxstring::createRef("IntegerLiteral");
-  case CXCursor_FloatingLiteral:
-      return cxstring::createRef("FloatingLiteral");
-  case CXCursor_ImaginaryLiteral:
-      return cxstring::createRef("ImaginaryLiteral");
-  case CXCursor_StringLiteral:
-      return cxstring::createRef("StringLiteral");
-  case CXCursor_CharacterLiteral:
-      return cxstring::createRef("CharacterLiteral");
-  case CXCursor_ParenExpr:
-      return cxstring::createRef("ParenExpr");
-  case CXCursor_UnaryOperator:
-      return cxstring::createRef("UnaryOperator");
-  case CXCursor_ArraySubscriptExpr:
-      return cxstring::createRef("ArraySubscriptExpr");
-  case CXCursor_BinaryOperator:
-      return cxstring::createRef("BinaryOperator");
-  case CXCursor_CompoundAssignOperator:
-      return cxstring::createRef("CompoundAssignOperator");
-  case CXCursor_ConditionalOperator:
-      return cxstring::createRef("ConditionalOperator");
-  case CXCursor_CStyleCastExpr:
-      return cxstring::createRef("CStyleCastExpr");
-  case CXCursor_CompoundLiteralExpr:
-      return cxstring::createRef("CompoundLiteralExpr");
-  case CXCursor_InitListExpr:
-      return cxstring::createRef("InitListExpr");
-  case CXCursor_AddrLabelExpr:
-      return cxstring::createRef("AddrLabelExpr");
-  case CXCursor_StmtExpr:
-      return cxstring::createRef("StmtExpr");
-  case CXCursor_GenericSelectionExpr:
-      return cxstring::createRef("GenericSelectionExpr");
-  case CXCursor_GNUNullExpr:
-      return cxstring::createRef("GNUNullExpr");
-  case CXCursor_CXXStaticCastExpr:
-      return cxstring::createRef("CXXStaticCastExpr");
-  case CXCursor_CXXDynamicCastExpr:
-      return cxstring::createRef("CXXDynamicCastExpr");
-  case CXCursor_CXXReinterpretCastExpr:
-      return cxstring::createRef("CXXReinterpretCastExpr");
-  case CXCursor_CXXConstCastExpr:
-      return cxstring::createRef("CXXConstCastExpr");
-  case CXCursor_CXXFunctionalCastExpr:
-      return cxstring::createRef("CXXFunctionalCastExpr");
-  case CXCursor_CXXTypeidExpr:
-      return cxstring::createRef("CXXTypeidExpr");
-  case CXCursor_CXXBoolLiteralExpr:
-      return cxstring::createRef("CXXBoolLiteralExpr");
-  case CXCursor_CXXNullPtrLiteralExpr:
-      return cxstring::createRef("CXXNullPtrLiteralExpr");
-  case CXCursor_CXXThisExpr:
-      return cxstring::createRef("CXXThisExpr");
-  case CXCursor_CXXThrowExpr:
-      return cxstring::createRef("CXXThrowExpr");
-  case CXCursor_CXXNewExpr:
-      return cxstring::createRef("CXXNewExpr");
-  case CXCursor_CXXDeleteExpr:
-      return cxstring::createRef("CXXDeleteExpr");
-  case CXCursor_UnaryExpr:
-      return cxstring::createRef("UnaryExpr");
-  case CXCursor_ObjCStringLiteral:
-      return cxstring::createRef("ObjCStringLiteral");
-  case CXCursor_ObjCBoolLiteralExpr:
-      return cxstring::createRef("ObjCBoolLiteralExpr");
-  case CXCursor_ObjCSelfExpr:
-      return cxstring::createRef("ObjCSelfExpr");
-  case CXCursor_ObjCEncodeExpr:
-      return cxstring::createRef("ObjCEncodeExpr");
-  case CXCursor_ObjCSelectorExpr:
-      return cxstring::createRef("ObjCSelectorExpr");
-  case CXCursor_ObjCProtocolExpr:
-      return cxstring::createRef("ObjCProtocolExpr");
-  case CXCursor_ObjCBridgedCastExpr:
-      return cxstring::createRef("ObjCBridgedCastExpr");
-  case CXCursor_BlockExpr:
-      return cxstring::createRef("BlockExpr");
-  case CXCursor_PackExpansionExpr:
-      return cxstring::createRef("PackExpansionExpr");
-  case CXCursor_SizeOfPackExpr:
-      return cxstring::createRef("SizeOfPackExpr");
-  case CXCursor_LambdaExpr:
-    return cxstring::createRef("LambdaExpr");
-  case CXCursor_UnexposedExpr:
-      return cxstring::createRef("UnexposedExpr");
-  case CXCursor_DeclRefExpr:
-      return cxstring::createRef("DeclRefExpr");
-  case CXCursor_MemberRefExpr:
-      return cxstring::createRef("MemberRefExpr");
-  case CXCursor_CallExpr:
-      return cxstring::createRef("CallExpr");
-  case CXCursor_ObjCMessageExpr:
-      return cxstring::createRef("ObjCMessageExpr");
-  case CXCursor_UnexposedStmt:
-      return cxstring::createRef("UnexposedStmt");
-  case CXCursor_DeclStmt:
-      return cxstring::createRef("DeclStmt");
-  case CXCursor_LabelStmt:
-      return cxstring::createRef("LabelStmt");
-  case CXCursor_CompoundStmt:
-      return cxstring::createRef("CompoundStmt");
-  case CXCursor_CaseStmt:
-      return cxstring::createRef("CaseStmt");
-  case CXCursor_DefaultStmt:
-      return cxstring::createRef("DefaultStmt");
-  case CXCursor_IfStmt:
-      return cxstring::createRef("IfStmt");
-  case CXCursor_SwitchStmt:
-      return cxstring::createRef("SwitchStmt");
-  case CXCursor_WhileStmt:
-      return cxstring::createRef("WhileStmt");
-  case CXCursor_DoStmt:
-      return cxstring::createRef("DoStmt");
-  case CXCursor_ForStmt:
-      return cxstring::createRef("ForStmt");
-  case CXCursor_GotoStmt:
-      return cxstring::createRef("GotoStmt");
-  case CXCursor_IndirectGotoStmt:
-      return cxstring::createRef("IndirectGotoStmt");
-  case CXCursor_ContinueStmt:
-      return cxstring::createRef("ContinueStmt");
-  case CXCursor_BreakStmt:
-      return cxstring::createRef("BreakStmt");
-  case CXCursor_ReturnStmt:
-      return cxstring::createRef("ReturnStmt");
-  case CXCursor_GCCAsmStmt:
-      return cxstring::createRef("GCCAsmStmt");
-  case CXCursor_MSAsmStmt:
-      return cxstring::createRef("MSAsmStmt");
-  case CXCursor_ObjCAtTryStmt:
-      return cxstring::createRef("ObjCAtTryStmt");
-  case CXCursor_ObjCAtCatchStmt:
-      return cxstring::createRef("ObjCAtCatchStmt");
-  case CXCursor_ObjCAtFinallyStmt:
-      return cxstring::createRef("ObjCAtFinallyStmt");
-  case CXCursor_ObjCAtThrowStmt:
-      return cxstring::createRef("ObjCAtThrowStmt");
-  case CXCursor_ObjCAtSynchronizedStmt:
-      return cxstring::createRef("ObjCAtSynchronizedStmt");
-  case CXCursor_ObjCAutoreleasePoolStmt:
-      return cxstring::createRef("ObjCAutoreleasePoolStmt");
-  case CXCursor_ObjCForCollectionStmt:
-      return cxstring::createRef("ObjCForCollectionStmt");
-  case CXCursor_CXXCatchStmt:
-      return cxstring::createRef("CXXCatchStmt");
-  case CXCursor_CXXTryStmt:
-      return cxstring::createRef("CXXTryStmt");
-  case CXCursor_CXXForRangeStmt:
-      return cxstring::createRef("CXXForRangeStmt");
-  case CXCursor_SEHTryStmt:
-      return cxstring::createRef("SEHTryStmt");
-  case CXCursor_SEHExceptStmt:
-      return cxstring::createRef("SEHExceptStmt");
-  case CXCursor_SEHFinallyStmt:
-      return cxstring::createRef("SEHFinallyStmt");
-  case CXCursor_NullStmt:
-      return cxstring::createRef("NullStmt");
-  case CXCursor_InvalidFile:
-      return cxstring::createRef("InvalidFile");
-  case CXCursor_InvalidCode:
-    return cxstring::createRef("InvalidCode");
-  case CXCursor_NoDeclFound:
-      return cxstring::createRef("NoDeclFound");
-  case CXCursor_NotImplemented:
-      return cxstring::createRef("NotImplemented");
-  case CXCursor_TranslationUnit:
-      return cxstring::createRef("TranslationUnit");
-  case CXCursor_UnexposedAttr:
-      return cxstring::createRef("UnexposedAttr");
-  case CXCursor_IBActionAttr:
-      return cxstring::createRef("attribute(ibaction)");
-  case CXCursor_IBOutletAttr:
-     return cxstring::createRef("attribute(iboutlet)");
-  case CXCursor_IBOutletCollectionAttr:
-      return cxstring::createRef("attribute(iboutletcollection)");
-  case CXCursor_CXXFinalAttr:
-      return cxstring::createRef("attribute(final)");
-  case CXCursor_CXXOverrideAttr:
-      return cxstring::createRef("attribute(override)");
-  case CXCursor_AnnotateAttr:
-    return cxstring::createRef("attribute(annotate)");
-  case CXCursor_AsmLabelAttr:
-    return cxstring::createRef("asm label");
-  case CXCursor_PreprocessingDirective:
-    return cxstring::createRef("preprocessing directive");
-  case CXCursor_MacroDefinition:
-    return cxstring::createRef("macro definition");
-  case CXCursor_MacroExpansion:
-    return cxstring::createRef("macro expansion");
-  case CXCursor_InclusionDirective:
-    return cxstring::createRef("inclusion directive");
-  case CXCursor_Namespace:
-    return cxstring::createRef("Namespace");
-  case CXCursor_LinkageSpec:
-    return cxstring::createRef("LinkageSpec");
-  case CXCursor_CXXBaseSpecifier:
-    return cxstring::createRef("C++ base class specifier");
-  case CXCursor_Constructor:
-    return cxstring::createRef("CXXConstructor");
-  case CXCursor_Destructor:
-    return cxstring::createRef("CXXDestructor");
-  case CXCursor_ConversionFunction:
-    return cxstring::createRef("CXXConversion");
-  case CXCursor_TemplateTypeParameter:
-    return cxstring::createRef("TemplateTypeParameter");
-  case CXCursor_NonTypeTemplateParameter:
-    return cxstring::createRef("NonTypeTemplateParameter");
-  case CXCursor_TemplateTemplateParameter:
-    return cxstring::createRef("TemplateTemplateParameter");
-  case CXCursor_FunctionTemplate:
-    return cxstring::createRef("FunctionTemplate");
-  case CXCursor_ClassTemplate:
-    return cxstring::createRef("ClassTemplate");
-  case CXCursor_ClassTemplatePartialSpecialization:
-    return cxstring::createRef("ClassTemplatePartialSpecialization");
-  case CXCursor_NamespaceAlias:
-    return cxstring::createRef("NamespaceAlias");
-  case CXCursor_UsingDirective:
-    return cxstring::createRef("UsingDirective");
-  case CXCursor_UsingDeclaration:
-    return cxstring::createRef("UsingDeclaration");
-  case CXCursor_TypeAliasDecl:
-    return cxstring::createRef("TypeAliasDecl");
-  case CXCursor_ObjCSynthesizeDecl:
-    return cxstring::createRef("ObjCSynthesizeDecl");
-  case CXCursor_ObjCDynamicDecl:
-    return cxstring::createRef("ObjCDynamicDecl");
-  case CXCursor_CXXAccessSpecifier:
-    return cxstring::createRef("CXXAccessSpecifier");
-  case CXCursor_ModuleImportDecl:
-    return cxstring::createRef("ModuleImport");
-  }
-
-  llvm_unreachable("Unhandled CXCursorKind");
-}
-
-struct GetCursorData {
-  SourceLocation TokenBeginLoc;
-  bool PointsAtMacroArgExpansion;
-  bool VisitedObjCPropertyImplDecl;
-  SourceLocation VisitedDeclaratorDeclStartLoc;
-  CXCursor &BestCursor;
-
-  GetCursorData(SourceManager &SM,
-                SourceLocation tokenBegin, CXCursor &outputCursor)
-    : TokenBeginLoc(tokenBegin), BestCursor(outputCursor) {
-    PointsAtMacroArgExpansion = SM.isMacroArgExpansion(tokenBegin);
-    VisitedObjCPropertyImplDecl = false;
-  }
-};
-
-static enum CXChildVisitResult GetCursorVisitor(CXCursor cursor,
-                                                CXCursor parent,
-                                                CXClientData client_data) {
-  GetCursorData *Data = static_cast<GetCursorData *>(client_data);
-  CXCursor *BestCursor = &Data->BestCursor;
-
-  // If we point inside a macro argument we should provide info of what the
-  // token is so use the actual cursor, don't replace it with a macro expansion
-  // cursor.
-  if (cursor.kind == CXCursor_MacroExpansion && Data->PointsAtMacroArgExpansion)
-    return CXChildVisit_Recurse;
-  
-  if (clang_isDeclaration(cursor.kind)) {
-    // Avoid having the implicit methods override the property decls.
-    if (const ObjCMethodDecl *MD
-          = dyn_cast_or_null<ObjCMethodDecl>(getCursorDecl(cursor))) {
-      if (MD->isImplicit())
-        return CXChildVisit_Break;
-
-    } else if (const ObjCInterfaceDecl *ID
-                 = dyn_cast_or_null<ObjCInterfaceDecl>(getCursorDecl(cursor))) {
-      // Check that when we have multiple @class references in the same line,
-      // that later ones do not override the previous ones.
-      // If we have:
-      // @class Foo, Bar;
-      // source ranges for both start at '@', so 'Bar' will end up overriding
-      // 'Foo' even though the cursor location was at 'Foo'.
-      if (BestCursor->kind == CXCursor_ObjCInterfaceDecl ||
-          BestCursor->kind == CXCursor_ObjCClassRef)
-        if (const ObjCInterfaceDecl *PrevID
-             = dyn_cast_or_null<ObjCInterfaceDecl>(getCursorDecl(*BestCursor))){
-         if (PrevID != ID &&
-             !PrevID->isThisDeclarationADefinition() &&
-             !ID->isThisDeclarationADefinition())
-           return CXChildVisit_Break;
-        }
-
-    } else if (const DeclaratorDecl *DD
-                    = dyn_cast_or_null<DeclaratorDecl>(getCursorDecl(cursor))) {
-      SourceLocation StartLoc = DD->getSourceRange().getBegin();
-      // Check that when we have multiple declarators in the same line,
-      // that later ones do not override the previous ones.
-      // If we have:
-      // int Foo, Bar;
-      // source ranges for both start at 'int', so 'Bar' will end up overriding
-      // 'Foo' even though the cursor location was at 'Foo'.
-      if (Data->VisitedDeclaratorDeclStartLoc == StartLoc)
-        return CXChildVisit_Break;
-      Data->VisitedDeclaratorDeclStartLoc = StartLoc;
-
-    } else if (const ObjCPropertyImplDecl *PropImp
-              = dyn_cast_or_null<ObjCPropertyImplDecl>(getCursorDecl(cursor))) {
-      (void)PropImp;
-      // Check that when we have multiple @synthesize in the same line,
-      // that later ones do not override the previous ones.
-      // If we have:
-      // @synthesize Foo, Bar;
-      // source ranges for both start at '@', so 'Bar' will end up overriding
-      // 'Foo' even though the cursor location was at 'Foo'.
-      if (Data->VisitedObjCPropertyImplDecl)
-        return CXChildVisit_Break;
-      Data->VisitedObjCPropertyImplDecl = true;
-    }
-  }
-
-  if (clang_isExpression(cursor.kind) &&
-      clang_isDeclaration(BestCursor->kind)) {
-    if (const Decl *D = getCursorDecl(*BestCursor)) {
-      // Avoid having the cursor of an expression replace the declaration cursor
-      // when the expression source range overlaps the declaration range.
-      // This can happen for C++ constructor expressions whose range generally
-      // include the variable declaration, e.g.:
-      //  MyCXXClass foo; // Make sure pointing at 'foo' returns a VarDecl cursor.
-      if (D->getLocation().isValid() && Data->TokenBeginLoc.isValid() &&
-          D->getLocation() == Data->TokenBeginLoc)
-        return CXChildVisit_Break;
-    }
-  }
-
-  // If our current best cursor is the construction of a temporary object, 
-  // don't replace that cursor with a type reference, because we want 
-  // clang_getCursor() to point at the constructor.
-  if (clang_isExpression(BestCursor->kind) &&
-      isa<CXXTemporaryObjectExpr>(getCursorExpr(*BestCursor)) &&
-      cursor.kind == CXCursor_TypeRef) {
-    // Keep the cursor pointing at CXXTemporaryObjectExpr but also mark it
-    // as having the actual point on the type reference.
-    *BestCursor = getTypeRefedCallExprCursor(*BestCursor);
-    return CXChildVisit_Recurse;
-  }
-  
-  *BestCursor = cursor;
-  return CXChildVisit_Recurse;
-}
-
-CXCursor clang_getCursor(CXTranslationUnit TU, CXSourceLocation Loc) {
-  if (!TU)
-    return clang_getNullCursor();
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
-
-  SourceLocation SLoc = cxloc::translateSourceLocation(Loc);
-  CXCursor Result = cxcursor::getCursor(TU, SLoc);
-
-  LOG_FUNC_SECTION {
-    CXFile SearchFile;
-    unsigned SearchLine, SearchColumn;
-    CXFile ResultFile;
-    unsigned ResultLine, ResultColumn;
-    CXString SearchFileName, ResultFileName, KindSpelling, USR;
-    const char *IsDef = clang_isCursorDefinition(Result)? " (Definition)" : "";
-    CXSourceLocation ResultLoc = clang_getCursorLocation(Result);
-    
-    clang_getFileLocation(Loc, &SearchFile, &SearchLine, &SearchColumn, 0);
-    clang_getFileLocation(ResultLoc, &ResultFile, &ResultLine,
-                               &ResultColumn, 0);
-    SearchFileName = clang_getFileName(SearchFile);
-    ResultFileName = clang_getFileName(ResultFile);
-    KindSpelling = clang_getCursorKindSpelling(Result.kind);
-    USR = clang_getCursorUSR(Result);
-    *Log << llvm::format("(%s:%d:%d) = %s",
-                   clang_getCString(SearchFileName), SearchLine, SearchColumn,
-                   clang_getCString(KindSpelling))
-        << llvm::format("(%s:%d:%d):%s%s",
-                     clang_getCString(ResultFileName), ResultLine, ResultColumn,
-                     clang_getCString(USR), IsDef);
-    clang_disposeString(SearchFileName);
-    clang_disposeString(ResultFileName);
-    clang_disposeString(KindSpelling);
-    clang_disposeString(USR);
-    
-    CXCursor Definition = clang_getCursorDefinition(Result);
-    if (!clang_equalCursors(Definition, clang_getNullCursor())) {
-      CXSourceLocation DefinitionLoc = clang_getCursorLocation(Definition);
-      CXString DefinitionKindSpelling
-                                = clang_getCursorKindSpelling(Definition.kind);
-      CXFile DefinitionFile;
-      unsigned DefinitionLine, DefinitionColumn;
-      clang_getFileLocation(DefinitionLoc, &DefinitionFile,
-                                 &DefinitionLine, &DefinitionColumn, 0);
-      CXString DefinitionFileName = clang_getFileName(DefinitionFile);
-      *Log << llvm::format("  -> %s(%s:%d:%d)",
-                     clang_getCString(DefinitionKindSpelling),
-                     clang_getCString(DefinitionFileName),
-                     DefinitionLine, DefinitionColumn);
-      clang_disposeString(DefinitionFileName);
-      clang_disposeString(DefinitionKindSpelling);
-    }
-  }
-
-  return Result;
-}
-
-CXCursor clang_getNullCursor(void) {
-  return MakeCXCursorInvalid(CXCursor_InvalidFile);
-}
-
-unsigned clang_equalCursors(CXCursor X, CXCursor Y) {
-  // Clear out the "FirstInDeclGroup" part in a declaration cursor, since we
-  // can't set consistently. For example, when visiting a DeclStmt we will set
-  // it but we don't set it on the result of clang_getCursorDefinition for
-  // a reference of the same declaration.
-  // FIXME: Setting "FirstInDeclGroup" in CXCursors is a hack that only works
-  // when visiting a DeclStmt currently, the AST should be enhanced to be able
-  // to provide that kind of info.
-  if (clang_isDeclaration(X.kind))
-    X.data[1] = 0;
-  if (clang_isDeclaration(Y.kind))
-    Y.data[1] = 0;
-
-  return X == Y;
-}
-
-unsigned clang_hashCursor(CXCursor C) {
-  unsigned Index = 0;
-  if (clang_isExpression(C.kind) || clang_isStatement(C.kind))
-    Index = 1;
-  
-  return llvm::DenseMapInfo<std::pair<unsigned, const void*> >::getHashValue(
-                                        std::make_pair(C.kind, C.data[Index]));
-}
-
-unsigned clang_isInvalid(enum CXCursorKind K) {
-  return K >= CXCursor_FirstInvalid && K <= CXCursor_LastInvalid;
-}
-
-unsigned clang_isDeclaration(enum CXCursorKind K) {
-  return (K >= CXCursor_FirstDecl && K <= CXCursor_LastDecl) ||
-         (K >= CXCursor_FirstExtraDecl && K <= CXCursor_LastExtraDecl);
-}
-
-unsigned clang_isReference(enum CXCursorKind K) {
-  return K >= CXCursor_FirstRef && K <= CXCursor_LastRef;
-}
-
-unsigned clang_isExpression(enum CXCursorKind K) {
-  return K >= CXCursor_FirstExpr && K <= CXCursor_LastExpr;
-}
-
-unsigned clang_isStatement(enum CXCursorKind K) {
-  return K >= CXCursor_FirstStmt && K <= CXCursor_LastStmt;
-}
-
-unsigned clang_isAttribute(enum CXCursorKind K) {
-    return K >= CXCursor_FirstAttr && K <= CXCursor_LastAttr;
-}
-
-unsigned clang_isTranslationUnit(enum CXCursorKind K) {
-  return K == CXCursor_TranslationUnit;
-}
-
-unsigned clang_isPreprocessing(enum CXCursorKind K) {
-  return K >= CXCursor_FirstPreprocessing && K <= CXCursor_LastPreprocessing;
-}
-  
-unsigned clang_isUnexposed(enum CXCursorKind K) {
-  switch (K) {
-    case CXCursor_UnexposedDecl:
-    case CXCursor_UnexposedExpr:
-    case CXCursor_UnexposedStmt:
-    case CXCursor_UnexposedAttr:
-      return true;
-    default:
-      return false;
-  }
-}
-
-CXCursorKind clang_getCursorKind(CXCursor C) {
-  return C.kind;
-}
-
-CXSourceLocation clang_getCursorLocation(CXCursor C) {
-  if (clang_isReference(C.kind)) {
-    switch (C.kind) {
-    case CXCursor_ObjCSuperClassRef: {
-      std::pair<const ObjCInterfaceDecl *, SourceLocation> P
-        = getCursorObjCSuperClassRef(C);
-      return cxloc::translateSourceLocation(P.first->getASTContext(), P.second);
-    }
-
-    case CXCursor_ObjCProtocolRef: {
-      std::pair<const ObjCProtocolDecl *, SourceLocation> P
-        = getCursorObjCProtocolRef(C);
-      return cxloc::translateSourceLocation(P.first->getASTContext(), P.second);
-    }
-
-    case CXCursor_ObjCClassRef: {
-      std::pair<const ObjCInterfaceDecl *, SourceLocation> P
-        = getCursorObjCClassRef(C);
-      return cxloc::translateSourceLocation(P.first->getASTContext(), P.second);
-    }
-
-    case CXCursor_TypeRef: {
-      std::pair<const TypeDecl *, SourceLocation> P = getCursorTypeRef(C);
-      return cxloc::translateSourceLocation(P.first->getASTContext(), P.second);
-    }
-
-    case CXCursor_TemplateRef: {
-      std::pair<const TemplateDecl *, SourceLocation> P =
-          getCursorTemplateRef(C);
-      return cxloc::translateSourceLocation(P.first->getASTContext(), P.second);
-    }
-
-    case CXCursor_NamespaceRef: {
-      std::pair<const NamedDecl *, SourceLocation> P = getCursorNamespaceRef(C);
-      return cxloc::translateSourceLocation(P.first->getASTContext(), P.second);
-    }
-
-    case CXCursor_MemberRef: {
-      std::pair<const FieldDecl *, SourceLocation> P = getCursorMemberRef(C);
-      return cxloc::translateSourceLocation(P.first->getASTContext(), P.second);
-    }
-
-    case CXCursor_VariableRef: {
-      std::pair<const VarDecl *, SourceLocation> P = getCursorVariableRef(C);
-      return cxloc::translateSourceLocation(P.first->getASTContext(), P.second);
-    }
-
-    case CXCursor_CXXBaseSpecifier: {
-      const CXXBaseSpecifier *BaseSpec = getCursorCXXBaseSpecifier(C);
-      if (!BaseSpec)
-        return clang_getNullLocation();
-      
-      if (TypeSourceInfo *TSInfo = BaseSpec->getTypeSourceInfo())
-        return cxloc::translateSourceLocation(getCursorContext(C),
-                                            TSInfo->getTypeLoc().getBeginLoc());
-      
-      return cxloc::translateSourceLocation(getCursorContext(C),
-                                        BaseSpec->getLocStart());
-    }
-
-    case CXCursor_LabelRef: {
-      std::pair<const LabelStmt *, SourceLocation> P = getCursorLabelRef(C);
-      return cxloc::translateSourceLocation(getCursorContext(C), P.second);
-    }
-
-    case CXCursor_OverloadedDeclRef:
-      return cxloc::translateSourceLocation(getCursorContext(C),
-                                          getCursorOverloadedDeclRef(C).second);
-
-    default:
-      // FIXME: Need a way to enumerate all non-reference cases.
-      llvm_unreachable("Missed a reference kind");
-    }
-  }
-
-  if (clang_isExpression(C.kind))
-    return cxloc::translateSourceLocation(getCursorContext(C),
-                                   getLocationFromExpr(getCursorExpr(C)));
-
-  if (clang_isStatement(C.kind))
-    return cxloc::translateSourceLocation(getCursorContext(C),
-                                          getCursorStmt(C)->getLocStart());
-
-  if (C.kind == CXCursor_PreprocessingDirective) {
-    SourceLocation L = cxcursor::getCursorPreprocessingDirective(C).getBegin();
-    return cxloc::translateSourceLocation(getCursorContext(C), L);
-  }
-
-  if (C.kind == CXCursor_MacroExpansion) {
-    SourceLocation L
-      = cxcursor::getCursorMacroExpansion(C).getSourceRange().getBegin();
-    return cxloc::translateSourceLocation(getCursorContext(C), L);
-  }
-
-  if (C.kind == CXCursor_MacroDefinition) {
-    SourceLocation L = cxcursor::getCursorMacroDefinition(C)->getLocation();
-    return cxloc::translateSourceLocation(getCursorContext(C), L);
-  }
-
-  if (C.kind == CXCursor_InclusionDirective) {
-    SourceLocation L
-      = cxcursor::getCursorInclusionDirective(C)->getSourceRange().getBegin();
-    return cxloc::translateSourceLocation(getCursorContext(C), L);
-  }
-
-  if (!clang_isDeclaration(C.kind))
-    return clang_getNullLocation();
-
-  const Decl *D = getCursorDecl(C);
-  if (!D)
-    return clang_getNullLocation();
-
-  SourceLocation Loc = D->getLocation();
-  // FIXME: Multiple variables declared in a single declaration
-  // currently lack the information needed to correctly determine their
-  // ranges when accounting for the type-specifier.  We use context
-  // stored in the CXCursor to determine if the VarDecl is in a DeclGroup,
-  // and if so, whether it is the first decl.
-  if (const VarDecl *VD = dyn_cast<VarDecl>(D)) {
-    if (!cxcursor::isFirstInDeclGroup(C))
-      Loc = VD->getLocation();
-  }
-
-  // For ObjC methods, give the start location of the method name.
-  if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D))
-    Loc = MD->getSelectorStartLoc();
-
-  return cxloc::translateSourceLocation(getCursorContext(C), Loc);
-}
-
-} // end extern "C"
-
-CXCursor cxcursor::getCursor(CXTranslationUnit TU, SourceLocation SLoc) {
-  assert(TU);
-
-  // Guard against an invalid SourceLocation, or we may assert in one
-  // of the following calls.
-  if (SLoc.isInvalid())
-    return clang_getNullCursor();
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-
-  // Translate the given source location to make it point at the beginning of
-  // the token under the cursor.
-  SLoc = Lexer::GetBeginningOfToken(SLoc, CXXUnit->getSourceManager(),
-                                    CXXUnit->getASTContext().getLangOpts());
-  
-  CXCursor Result = MakeCXCursorInvalid(CXCursor_NoDeclFound);
-  if (SLoc.isValid()) {
-    GetCursorData ResultData(CXXUnit->getSourceManager(), SLoc, Result);
-    CursorVisitor CursorVis(TU, GetCursorVisitor, &ResultData,
-                            /*VisitPreprocessorLast=*/true, 
-                            /*VisitIncludedEntities=*/false,
-                            SourceLocation(SLoc));
-    CursorVis.visitFileRegion();
-  }
-
-  return Result;
-}
-
-static SourceRange getRawCursorExtent(CXCursor C) {
-  if (clang_isReference(C.kind)) {
-    switch (C.kind) {
-    case CXCursor_ObjCSuperClassRef:
-      return  getCursorObjCSuperClassRef(C).second;
-
-    case CXCursor_ObjCProtocolRef:
-      return getCursorObjCProtocolRef(C).second;
-
-    case CXCursor_ObjCClassRef:
-      return getCursorObjCClassRef(C).second;
-
-    case CXCursor_TypeRef:
-      return getCursorTypeRef(C).second;
-
-    case CXCursor_TemplateRef:
-      return getCursorTemplateRef(C).second;
-
-    case CXCursor_NamespaceRef:
-      return getCursorNamespaceRef(C).second;
-
-    case CXCursor_MemberRef:
-      return getCursorMemberRef(C).second;
-
-    case CXCursor_CXXBaseSpecifier:
-      return getCursorCXXBaseSpecifier(C)->getSourceRange();
-
-    case CXCursor_LabelRef:
-      return getCursorLabelRef(C).second;
-
-    case CXCursor_OverloadedDeclRef:
-      return getCursorOverloadedDeclRef(C).second;
-
-    case CXCursor_VariableRef:
-      return getCursorVariableRef(C).second;
-        
-    default:
-      // FIXME: Need a way to enumerate all non-reference cases.
-      llvm_unreachable("Missed a reference kind");
-    }
-  }
-
-  if (clang_isExpression(C.kind))
-    return getCursorExpr(C)->getSourceRange();
-
-  if (clang_isStatement(C.kind))
-    return getCursorStmt(C)->getSourceRange();
-
-  if (clang_isAttribute(C.kind))
-    return getCursorAttr(C)->getRange();
-
-  if (C.kind == CXCursor_PreprocessingDirective)
-    return cxcursor::getCursorPreprocessingDirective(C);
-
-  if (C.kind == CXCursor_MacroExpansion) {
-    ASTUnit *TU = getCursorASTUnit(C);
-    SourceRange Range = cxcursor::getCursorMacroExpansion(C).getSourceRange();
-    return TU->mapRangeFromPreamble(Range);
-  }
-
-  if (C.kind == CXCursor_MacroDefinition) {
-    ASTUnit *TU = getCursorASTUnit(C);
-    SourceRange Range = cxcursor::getCursorMacroDefinition(C)->getSourceRange();
-    return TU->mapRangeFromPreamble(Range);
-  }
-
-  if (C.kind == CXCursor_InclusionDirective) {
-    ASTUnit *TU = getCursorASTUnit(C);
-    SourceRange Range = cxcursor::getCursorInclusionDirective(C)->getSourceRange();
-    return TU->mapRangeFromPreamble(Range);
-  }
-
-  if (C.kind == CXCursor_TranslationUnit) {
-    ASTUnit *TU = getCursorASTUnit(C);
-    FileID MainID = TU->getSourceManager().getMainFileID();
-    SourceLocation Start = TU->getSourceManager().getLocForStartOfFile(MainID);
-    SourceLocation End = TU->getSourceManager().getLocForEndOfFile(MainID);
-    return SourceRange(Start, End);
-  }
-
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-    if (!D)
-      return SourceRange();
-
-    SourceRange R = D->getSourceRange();
-    // FIXME: Multiple variables declared in a single declaration
-    // currently lack the information needed to correctly determine their
-    // ranges when accounting for the type-specifier.  We use context
-    // stored in the CXCursor to determine if the VarDecl is in a DeclGroup,
-    // and if so, whether it is the first decl.
-    if (const VarDecl *VD = dyn_cast<VarDecl>(D)) {
-      if (!cxcursor::isFirstInDeclGroup(C))
-        R.setBegin(VD->getLocation());
-    }
-    return R;
-  }
-  return SourceRange();
-}
-
-/// \brief Retrieves the "raw" cursor extent, which is then extended to include
-/// the decl-specifier-seq for declarations.
-static SourceRange getFullCursorExtent(CXCursor C, SourceManager &SrcMgr) {
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-    if (!D)
-      return SourceRange();
-
-    SourceRange R = D->getSourceRange();
-
-    // Adjust the start of the location for declarations preceded by
-    // declaration specifiers.
-    SourceLocation StartLoc;
-    if (const DeclaratorDecl *DD = dyn_cast<DeclaratorDecl>(D)) {
-      if (TypeSourceInfo *TI = DD->getTypeSourceInfo())
-        StartLoc = TI->getTypeLoc().getLocStart();
-    } else if (const TypedefDecl *Typedef = dyn_cast<TypedefDecl>(D)) {
-      if (TypeSourceInfo *TI = Typedef->getTypeSourceInfo())
-        StartLoc = TI->getTypeLoc().getLocStart();
-    }
-
-    if (StartLoc.isValid() && R.getBegin().isValid() &&
-        SrcMgr.isBeforeInTranslationUnit(StartLoc, R.getBegin()))
-      R.setBegin(StartLoc);
-
-    // FIXME: Multiple variables declared in a single declaration
-    // currently lack the information needed to correctly determine their
-    // ranges when accounting for the type-specifier.  We use context
-    // stored in the CXCursor to determine if the VarDecl is in a DeclGroup,
-    // and if so, whether it is the first decl.
-    if (const VarDecl *VD = dyn_cast<VarDecl>(D)) {
-      if (!cxcursor::isFirstInDeclGroup(C))
-        R.setBegin(VD->getLocation());
-    }
-
-    return R;    
-  }
-  
-  return getRawCursorExtent(C);
-}
-
-extern "C" {
-
-CXSourceRange clang_getCursorExtent(CXCursor C) {
-  SourceRange R = getRawCursorExtent(C);
-  if (R.isInvalid())
-    return clang_getNullRange();
-
-  return cxloc::translateSourceRange(getCursorContext(C), R);
-}
-
-CXCursor clang_getCursorReferenced(CXCursor C) {
-  if (clang_isInvalid(C.kind))
-    return clang_getNullCursor();
-
-  CXTranslationUnit tu = getCursorTU(C);
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = getCursorDecl(C);
-    if (!D)
-      return clang_getNullCursor();
-    if (const UsingDecl *Using = dyn_cast<UsingDecl>(D))
-      return MakeCursorOverloadedDeclRef(Using, D->getLocation(), tu);
-    if (const ObjCPropertyImplDecl *PropImpl =
-            dyn_cast<ObjCPropertyImplDecl>(D))
-      if (ObjCPropertyDecl *Property = PropImpl->getPropertyDecl())
-        return MakeCXCursor(Property, tu);
-    
-    return C;
-  }
-  
-  if (clang_isExpression(C.kind)) {
-    const Expr *E = getCursorExpr(C);
-    const Decl *D = getDeclFromExpr(E);
-    if (D) {
-      CXCursor declCursor = MakeCXCursor(D, tu);
-      declCursor = getSelectorIdentifierCursor(getSelectorIdentifierIndex(C),
-                                               declCursor);
-      return declCursor;
-    }
-    
-    if (const OverloadExpr *Ovl = dyn_cast_or_null<OverloadExpr>(E))
-      return MakeCursorOverloadedDeclRef(Ovl, tu);
-        
-    return clang_getNullCursor();
-  }
-
-  if (clang_isStatement(C.kind)) {
-    const Stmt *S = getCursorStmt(C);
-    if (const GotoStmt *Goto = dyn_cast_or_null<GotoStmt>(S))
-      if (LabelDecl *label = Goto->getLabel())
-        if (LabelStmt *labelS = label->getStmt())
-        return MakeCXCursor(labelS, getCursorDecl(C), tu);
-
-    return clang_getNullCursor();
-  }
-  
-  if (C.kind == CXCursor_MacroExpansion) {
-    if (const MacroDefinition *Def = getCursorMacroExpansion(C).getDefinition())
-      return MakeMacroDefinitionCursor(Def, tu);
-  }
-
-  if (!clang_isReference(C.kind))
-    return clang_getNullCursor();
-
-  switch (C.kind) {
-    case CXCursor_ObjCSuperClassRef:
-      return MakeCXCursor(getCursorObjCSuperClassRef(C).first, tu);
-
-    case CXCursor_ObjCProtocolRef: {
-      const ObjCProtocolDecl *Prot = getCursorObjCProtocolRef(C).first;
-      if (const ObjCProtocolDecl *Def = Prot->getDefinition())
-        return MakeCXCursor(Def, tu);
-
-      return MakeCXCursor(Prot, tu);
-    }
-
-    case CXCursor_ObjCClassRef: {
-      const ObjCInterfaceDecl *Class = getCursorObjCClassRef(C).first;
-      if (const ObjCInterfaceDecl *Def = Class->getDefinition())
-        return MakeCXCursor(Def, tu);
-
-      return MakeCXCursor(Class, tu);
-    }
-
-    case CXCursor_TypeRef:
-      return MakeCXCursor(getCursorTypeRef(C).first, tu );
-
-    case CXCursor_TemplateRef:
-      return MakeCXCursor(getCursorTemplateRef(C).first, tu );
-
-    case CXCursor_NamespaceRef:
-      return MakeCXCursor(getCursorNamespaceRef(C).first, tu );
-
-    case CXCursor_MemberRef:
-      return MakeCXCursor(getCursorMemberRef(C).first, tu );
-
-    case CXCursor_CXXBaseSpecifier: {
-      const CXXBaseSpecifier *B = cxcursor::getCursorCXXBaseSpecifier(C);
-      return clang_getTypeDeclaration(cxtype::MakeCXType(B->getType(),
-                                                         tu ));
-    }
-
-    case CXCursor_LabelRef:
-      // FIXME: We end up faking the "parent" declaration here because we
-      // don't want to make CXCursor larger.
-      return MakeCXCursor(getCursorLabelRef(C).first,
-                          cxtu::getASTUnit(tu)->getASTContext()
-                              .getTranslationUnitDecl(),
-                          tu);
-
-    case CXCursor_OverloadedDeclRef:
-      return C;
-      
-    case CXCursor_VariableRef:
-      return MakeCXCursor(getCursorVariableRef(C).first, tu);
-
-    default:
-      // We would prefer to enumerate all non-reference cursor kinds here.
-      llvm_unreachable("Unhandled reference cursor kind");
-  }
-}
-
-CXCursor clang_getCursorDefinition(CXCursor C) {
-  if (clang_isInvalid(C.kind))
-    return clang_getNullCursor();
-
-  CXTranslationUnit TU = getCursorTU(C);
-
-  bool WasReference = false;
-  if (clang_isReference(C.kind) || clang_isExpression(C.kind)) {
-    C = clang_getCursorReferenced(C);
-    WasReference = true;
-  }
-
-  if (C.kind == CXCursor_MacroExpansion)
-    return clang_getCursorReferenced(C);
-
-  if (!clang_isDeclaration(C.kind))
-    return clang_getNullCursor();
-
-  const Decl *D = getCursorDecl(C);
-  if (!D)
-    return clang_getNullCursor();
-
-  switch (D->getKind()) {
-  // Declaration kinds that don't really separate the notions of
-  // declaration and definition.
-  case Decl::Namespace:
-  case Decl::Typedef:
-  case Decl::TypeAlias:
-  case Decl::TypeAliasTemplate:
-  case Decl::TemplateTypeParm:
-  case Decl::EnumConstant:
-  case Decl::Field:
-  case Decl::MSProperty:
-  case Decl::IndirectField:
-  case Decl::ObjCIvar:
-  case Decl::ObjCAtDefsField:
-  case Decl::ImplicitParam:
-  case Decl::ParmVar:
-  case Decl::NonTypeTemplateParm:
-  case Decl::TemplateTemplateParm:
-  case Decl::ObjCCategoryImpl:
-  case Decl::ObjCImplementation:
-  case Decl::AccessSpec:
-  case Decl::LinkageSpec:
-  case Decl::ObjCPropertyImpl:
-  case Decl::FileScopeAsm:
-  case Decl::StaticAssert:
-  case Decl::Block:
-  case Decl::Captured:
-  case Decl::Label:  // FIXME: Is this right??
-  case Decl::ClassScopeFunctionSpecialization:
-  case Decl::Import:
-  case Decl::OMPThreadPrivate:
-    return C;
-
-  // Declaration kinds that don't make any sense here, but are
-  // nonetheless harmless.
-  case Decl::Empty:
-  case Decl::TranslationUnit:
-    break;
-
-  // Declaration kinds for which the definition is not resolvable.
-  case Decl::UnresolvedUsingTypename:
-  case Decl::UnresolvedUsingValue:
-    break;
-
-  case Decl::UsingDirective:
-    return MakeCXCursor(cast<UsingDirectiveDecl>(D)->getNominatedNamespace(),
-                        TU);
-
-  case Decl::NamespaceAlias:
-    return MakeCXCursor(cast<NamespaceAliasDecl>(D)->getNamespace(), TU);
-
-  case Decl::Enum:
-  case Decl::Record:
-  case Decl::CXXRecord:
-  case Decl::ClassTemplateSpecialization:
-  case Decl::ClassTemplatePartialSpecialization:
-    if (TagDecl *Def = cast<TagDecl>(D)->getDefinition())
-      return MakeCXCursor(Def, TU);
-    return clang_getNullCursor();
-
-  case Decl::Function:
-  case Decl::CXXMethod:
-  case Decl::CXXConstructor:
-  case Decl::CXXDestructor:
-  case Decl::CXXConversion: {
-    const FunctionDecl *Def = 0;
-    if (cast<FunctionDecl>(D)->getBody(Def))
-      return MakeCXCursor(Def, TU);
-    return clang_getNullCursor();
-  }
-
-  case Decl::Var: {
-    // Ask the variable if it has a definition.
-    if (const VarDecl *Def = cast<VarDecl>(D)->getDefinition())
-      return MakeCXCursor(Def, TU);
-    return clang_getNullCursor();
-  }
-
-  case Decl::FunctionTemplate: {
-    const FunctionDecl *Def = 0;
-    if (cast<FunctionTemplateDecl>(D)->getTemplatedDecl()->getBody(Def))
-      return MakeCXCursor(Def->getDescribedFunctionTemplate(), TU);
-    return clang_getNullCursor();
-  }
-
-  case Decl::ClassTemplate: {
-    if (RecordDecl *Def = cast<ClassTemplateDecl>(D)->getTemplatedDecl()
-                                                            ->getDefinition())
-      return MakeCXCursor(cast<CXXRecordDecl>(Def)->getDescribedClassTemplate(),
-                          TU);
-    return clang_getNullCursor();
-  }
-
-  case Decl::Using:
-    return MakeCursorOverloadedDeclRef(cast<UsingDecl>(D), 
-                                       D->getLocation(), TU);
-
-  case Decl::UsingShadow:
-    return clang_getCursorDefinition(
-                       MakeCXCursor(cast<UsingShadowDecl>(D)->getTargetDecl(),
-                                    TU));
-
-  case Decl::ObjCMethod: {
-    const ObjCMethodDecl *Method = cast<ObjCMethodDecl>(D);
-    if (Method->isThisDeclarationADefinition())
-      return C;
-
-    // Dig out the method definition in the associated
-    // @implementation, if we have it.
-    // FIXME: The ASTs should make finding the definition easier.
-    if (const ObjCInterfaceDecl *Class
-                       = dyn_cast<ObjCInterfaceDecl>(Method->getDeclContext()))
-      if (ObjCImplementationDecl *ClassImpl = Class->getImplementation())
-        if (ObjCMethodDecl *Def = ClassImpl->getMethod(Method->getSelector(),
-                                                  Method->isInstanceMethod()))
-          if (Def->isThisDeclarationADefinition())
-            return MakeCXCursor(Def, TU);
-
-    return clang_getNullCursor();
-  }
-
-  case Decl::ObjCCategory:
-    if (ObjCCategoryImplDecl *Impl
-                               = cast<ObjCCategoryDecl>(D)->getImplementation())
-      return MakeCXCursor(Impl, TU);
-    return clang_getNullCursor();
-
-  case Decl::ObjCProtocol:
-    if (const ObjCProtocolDecl *Def = cast<ObjCProtocolDecl>(D)->getDefinition())
-      return MakeCXCursor(Def, TU);
-    return clang_getNullCursor();
-
-  case Decl::ObjCInterface: {
-    // There are two notions of a "definition" for an Objective-C
-    // class: the interface and its implementation. When we resolved a
-    // reference to an Objective-C class, produce the @interface as
-    // the definition; when we were provided with the interface,
-    // produce the @implementation as the definition.
-    const ObjCInterfaceDecl *IFace = cast<ObjCInterfaceDecl>(D);
-    if (WasReference) {
-      if (const ObjCInterfaceDecl *Def = IFace->getDefinition())
-        return MakeCXCursor(Def, TU);
-    } else if (ObjCImplementationDecl *Impl = IFace->getImplementation())
-      return MakeCXCursor(Impl, TU);
-    return clang_getNullCursor();
-  }
-
-  case Decl::ObjCProperty:
-    // FIXME: We don't really know where to find the
-    // ObjCPropertyImplDecls that implement this property.
-    return clang_getNullCursor();
-
-  case Decl::ObjCCompatibleAlias:
-    if (const ObjCInterfaceDecl *Class
-          = cast<ObjCCompatibleAliasDecl>(D)->getClassInterface())
-      if (const ObjCInterfaceDecl *Def = Class->getDefinition())
-        return MakeCXCursor(Def, TU);
-
-    return clang_getNullCursor();
-
-  case Decl::Friend:
-    if (NamedDecl *Friend = cast<FriendDecl>(D)->getFriendDecl())
-      return clang_getCursorDefinition(MakeCXCursor(Friend, TU));
-    return clang_getNullCursor();
-
-  case Decl::FriendTemplate:
-    if (NamedDecl *Friend = cast<FriendTemplateDecl>(D)->getFriendDecl())
-      return clang_getCursorDefinition(MakeCXCursor(Friend, TU));
-    return clang_getNullCursor();
-  }
-
-  return clang_getNullCursor();
-}
-
-unsigned clang_isCursorDefinition(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return 0;
-
-  return clang_getCursorDefinition(C) == C;
-}
-
-CXCursor clang_getCanonicalCursor(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return C;
-  
-  if (const Decl *D = getCursorDecl(C)) {
-    if (const ObjCCategoryImplDecl *CatImplD = dyn_cast<ObjCCategoryImplDecl>(D))
-      if (ObjCCategoryDecl *CatD = CatImplD->getCategoryDecl())
-        return MakeCXCursor(CatD, getCursorTU(C));
-
-    if (const ObjCImplDecl *ImplD = dyn_cast<ObjCImplDecl>(D))
-      if (const ObjCInterfaceDecl *IFD = ImplD->getClassInterface())
-        return MakeCXCursor(IFD, getCursorTU(C));
-
-    return MakeCXCursor(D->getCanonicalDecl(), getCursorTU(C));
-  }
-  
-  return C;
-}
-
-int clang_Cursor_getObjCSelectorIndex(CXCursor cursor) {
-  return cxcursor::getSelectorIdentifierIndexAndLoc(cursor).first;
-}
-  
-unsigned clang_getNumOverloadedDecls(CXCursor C) {
-  if (C.kind != CXCursor_OverloadedDeclRef)
-    return 0;
-  
-  OverloadedDeclRefStorage Storage = getCursorOverloadedDeclRef(C).first;
-  if (const OverloadExpr *E = Storage.dyn_cast<const OverloadExpr *>())
-    return E->getNumDecls();
-  
-  if (OverloadedTemplateStorage *S
-                              = Storage.dyn_cast<OverloadedTemplateStorage*>())
-    return S->size();
-  
-  const Decl *D = Storage.get<const Decl *>();
-  if (const UsingDecl *Using = dyn_cast<UsingDecl>(D))
-    return Using->shadow_size();
-  
-  return 0;
-}
-
-CXCursor clang_getOverloadedDecl(CXCursor cursor, unsigned index) {
-  if (cursor.kind != CXCursor_OverloadedDeclRef)
-    return clang_getNullCursor();
-
-  if (index >= clang_getNumOverloadedDecls(cursor))
-    return clang_getNullCursor();
-  
-  CXTranslationUnit TU = getCursorTU(cursor);
-  OverloadedDeclRefStorage Storage = getCursorOverloadedDeclRef(cursor).first;
-  if (const OverloadExpr *E = Storage.dyn_cast<const OverloadExpr *>())
-    return MakeCXCursor(E->decls_begin()[index], TU);
-  
-  if (OverloadedTemplateStorage *S
-                              = Storage.dyn_cast<OverloadedTemplateStorage*>())
-    return MakeCXCursor(S->begin()[index], TU);
-  
-  const Decl *D = Storage.get<const Decl *>();
-  if (const UsingDecl *Using = dyn_cast<UsingDecl>(D)) {
-    // FIXME: This is, unfortunately, linear time.
-    UsingDecl::shadow_iterator Pos = Using->shadow_begin();
-    std::advance(Pos, index);
-    return MakeCXCursor(cast<UsingShadowDecl>(*Pos)->getTargetDecl(), TU);
-  }
-  
-  return clang_getNullCursor();
-}
-  
-void clang_getDefinitionSpellingAndExtent(CXCursor C,
-                                          const char **startBuf,
-                                          const char **endBuf,
-                                          unsigned *startLine,
-                                          unsigned *startColumn,
-                                          unsigned *endLine,
-                                          unsigned *endColumn) {
-  assert(getCursorDecl(C) && "CXCursor has null decl");
-  const FunctionDecl *FD = dyn_cast<FunctionDecl>(getCursorDecl(C));
-  CompoundStmt *Body = dyn_cast<CompoundStmt>(FD->getBody());
-
-  SourceManager &SM = FD->getASTContext().getSourceManager();
-  *startBuf = SM.getCharacterData(Body->getLBracLoc());
-  *endBuf = SM.getCharacterData(Body->getRBracLoc());
-  *startLine = SM.getSpellingLineNumber(Body->getLBracLoc());
-  *startColumn = SM.getSpellingColumnNumber(Body->getLBracLoc());
-  *endLine = SM.getSpellingLineNumber(Body->getRBracLoc());
-  *endColumn = SM.getSpellingColumnNumber(Body->getRBracLoc());
-}
-
-
-CXSourceRange clang_getCursorReferenceNameRange(CXCursor C, unsigned NameFlags,
-                                                unsigned PieceIndex) {
-  RefNamePieces Pieces;
-  
-  switch (C.kind) {
-  case CXCursor_MemberRefExpr:
-    if (const MemberExpr *E = dyn_cast<MemberExpr>(getCursorExpr(C)))
-      Pieces = buildPieces(NameFlags, true, E->getMemberNameInfo(),
-                           E->getQualifierLoc().getSourceRange());
-    break;
-  
-  case CXCursor_DeclRefExpr:
-    if (const DeclRefExpr *E = dyn_cast<DeclRefExpr>(getCursorExpr(C)))
-      Pieces = buildPieces(NameFlags, false, E->getNameInfo(), 
-                           E->getQualifierLoc().getSourceRange(),
-                           E->getOptionalExplicitTemplateArgs());
-    break;
-    
-  case CXCursor_CallExpr:
-    if (const CXXOperatorCallExpr *OCE = 
-        dyn_cast<CXXOperatorCallExpr>(getCursorExpr(C))) {
-      const Expr *Callee = OCE->getCallee();
-      if (const ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(Callee))
-        Callee = ICE->getSubExpr();
-
-      if (const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(Callee))
-        Pieces = buildPieces(NameFlags, false, DRE->getNameInfo(),
-                             DRE->getQualifierLoc().getSourceRange());
-    }
-    break;
-    
-  default:
-    break;
-  }
-
-  if (Pieces.empty()) {
-    if (PieceIndex == 0)
-      return clang_getCursorExtent(C);
-  } else if (PieceIndex < Pieces.size()) {
-      SourceRange R = Pieces[PieceIndex];
-      if (R.isValid())
-        return cxloc::translateSourceRange(getCursorContext(C), R);
-  }
-  
-  return clang_getNullRange();
-}
-
-void clang_enableStackTraces(void) {
-  llvm::sys::PrintStackTraceOnErrorSignal();
-}
-
-void clang_executeOnThread(void (*fn)(void*), void *user_data,
-                           unsigned stack_size) {
-  llvm::llvm_execute_on_thread(fn, user_data, stack_size);
-}
-
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// Token-based Operations.
-//===----------------------------------------------------------------------===//
-
-/* CXToken layout:
- *   int_data[0]: a CXTokenKind
- *   int_data[1]: starting token location
- *   int_data[2]: token length
- *   int_data[3]: reserved
- *   ptr_data: for identifiers and keywords, an IdentifierInfo*.
- *   otherwise unused.
- */
-extern "C" {
-
-CXTokenKind clang_getTokenKind(CXToken CXTok) {
-  return static_cast<CXTokenKind>(CXTok.int_data[0]);
-}
-
-CXString clang_getTokenSpelling(CXTranslationUnit TU, CXToken CXTok) {
-  switch (clang_getTokenKind(CXTok)) {
-  case CXToken_Identifier:
-  case CXToken_Keyword:
-    // We know we have an IdentifierInfo*, so use that.
-    return cxstring::createRef(static_cast<IdentifierInfo *>(CXTok.ptr_data)
-                            ->getNameStart());
-
-  case CXToken_Literal: {
-    // We have stashed the starting pointer in the ptr_data field. Use it.
-    const char *Text = static_cast<const char *>(CXTok.ptr_data);
-    return cxstring::createDup(StringRef(Text, CXTok.int_data[2]));
-  }
-
-  case CXToken_Punctuation:
-  case CXToken_Comment:
-    break;
-  }
-
-  // We have to find the starting buffer pointer the hard way, by
-  // deconstructing the source location.
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  if (!CXXUnit)
-    return cxstring::createEmpty();
-
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(CXTok.int_data[1]);
-  std::pair<FileID, unsigned> LocInfo
-    = CXXUnit->getSourceManager().getDecomposedSpellingLoc(Loc);
-  bool Invalid = false;
-  StringRef Buffer
-    = CXXUnit->getSourceManager().getBufferData(LocInfo.first, &Invalid);
-  if (Invalid)
-    return cxstring::createEmpty();
-
-  return cxstring::createDup(Buffer.substr(LocInfo.second, CXTok.int_data[2]));
-}
-
-CXSourceLocation clang_getTokenLocation(CXTranslationUnit TU, CXToken CXTok) {
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  if (!CXXUnit)
-    return clang_getNullLocation();
-
-  return cxloc::translateSourceLocation(CXXUnit->getASTContext(),
-                        SourceLocation::getFromRawEncoding(CXTok.int_data[1]));
-}
-
-CXSourceRange clang_getTokenExtent(CXTranslationUnit TU, CXToken CXTok) {
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  if (!CXXUnit)
-    return clang_getNullRange();
-
-  return cxloc::translateSourceRange(CXXUnit->getASTContext(),
-                        SourceLocation::getFromRawEncoding(CXTok.int_data[1]));
-}
-
-static void getTokens(ASTUnit *CXXUnit, SourceRange Range,
-                      SmallVectorImpl<CXToken> &CXTokens) {
-  SourceManager &SourceMgr = CXXUnit->getSourceManager();
-  std::pair<FileID, unsigned> BeginLocInfo
-    = SourceMgr.getDecomposedSpellingLoc(Range.getBegin());
-  std::pair<FileID, unsigned> EndLocInfo
-    = SourceMgr.getDecomposedSpellingLoc(Range.getEnd());
-
-  // Cannot tokenize across files.
-  if (BeginLocInfo.first != EndLocInfo.first)
-    return;
-
-  // Create a lexer
-  bool Invalid = false;
-  StringRef Buffer
-    = SourceMgr.getBufferData(BeginLocInfo.first, &Invalid);
-  if (Invalid)
-    return;
-  
-  Lexer Lex(SourceMgr.getLocForStartOfFile(BeginLocInfo.first),
-            CXXUnit->getASTContext().getLangOpts(),
-            Buffer.begin(), Buffer.data() + BeginLocInfo.second, Buffer.end());
-  Lex.SetCommentRetentionState(true);
-
-  // Lex tokens until we hit the end of the range.
-  const char *EffectiveBufferEnd = Buffer.data() + EndLocInfo.second;
-  Token Tok;
-  bool previousWasAt = false;
-  do {
-    // Lex the next token
-    Lex.LexFromRawLexer(Tok);
-    if (Tok.is(tok::eof))
-      break;
-
-    // Initialize the CXToken.
-    CXToken CXTok;
-
-    //   - Common fields
-    CXTok.int_data[1] = Tok.getLocation().getRawEncoding();
-    CXTok.int_data[2] = Tok.getLength();
-    CXTok.int_data[3] = 0;
-
-    //   - Kind-specific fields
-    if (Tok.isLiteral()) {
-      CXTok.int_data[0] = CXToken_Literal;
-      CXTok.ptr_data = const_cast<char *>(Tok.getLiteralData());
-    } else if (Tok.is(tok::raw_identifier)) {
-      // Lookup the identifier to determine whether we have a keyword.
-      IdentifierInfo *II
-        = CXXUnit->getPreprocessor().LookUpIdentifierInfo(Tok);
-
-      if ((II->getObjCKeywordID() != tok::objc_not_keyword) && previousWasAt) {
-        CXTok.int_data[0] = CXToken_Keyword;
-      }
-      else {
-        CXTok.int_data[0] = Tok.is(tok::identifier)
-          ? CXToken_Identifier
-          : CXToken_Keyword;
-      }
-      CXTok.ptr_data = II;
-    } else if (Tok.is(tok::comment)) {
-      CXTok.int_data[0] = CXToken_Comment;
-      CXTok.ptr_data = 0;
-    } else {
-      CXTok.int_data[0] = CXToken_Punctuation;
-      CXTok.ptr_data = 0;
-    }
-    CXTokens.push_back(CXTok);
-    previousWasAt = Tok.is(tok::at);
-  } while (Lex.getBufferLocation() <= EffectiveBufferEnd);
-}
-
-void clang_tokenize(CXTranslationUnit TU, CXSourceRange Range,
-                    CXToken **Tokens, unsigned *NumTokens) {
-  LOG_FUNC_SECTION {
-    *Log << TU << ' ' << Range;
-  }
-
-  if (Tokens)
-    *Tokens = 0;
-  if (NumTokens)
-    *NumTokens = 0;
-
-  if (!TU)
-    return;
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  if (!CXXUnit || !Tokens || !NumTokens)
-    return;
-
-  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
-  
-  SourceRange R = cxloc::translateCXSourceRange(Range);
-  if (R.isInvalid())
-    return;
-
-  SmallVector<CXToken, 32> CXTokens;
-  getTokens(CXXUnit, R, CXTokens);
-
-  if (CXTokens.empty())
-    return;
-
-  *Tokens = (CXToken *)malloc(sizeof(CXToken) * CXTokens.size());
-  memmove(*Tokens, CXTokens.data(), sizeof(CXToken) * CXTokens.size());
-  *NumTokens = CXTokens.size();
-}
-
-void clang_disposeTokens(CXTranslationUnit TU,
-                         CXToken *Tokens, unsigned NumTokens) {
-  free(Tokens);
-}
-
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// Token annotation APIs.
-//===----------------------------------------------------------------------===//
-
-static enum CXChildVisitResult AnnotateTokensVisitor(CXCursor cursor,
-                                                     CXCursor parent,
-                                                     CXClientData client_data);
-static bool AnnotateTokensPostChildrenVisitor(CXCursor cursor,
-                                              CXClientData client_data);
-
-namespace {
-class AnnotateTokensWorker {
-  CXToken *Tokens;
-  CXCursor *Cursors;
-  unsigned NumTokens;
-  unsigned TokIdx;
-  unsigned PreprocessingTokIdx;
-  CursorVisitor AnnotateVis;
-  SourceManager &SrcMgr;
-  bool HasContextSensitiveKeywords;
-
-  struct PostChildrenInfo {
-    CXCursor Cursor;
-    SourceRange CursorRange;
-    unsigned BeforeReachingCursorIdx;
-    unsigned BeforeChildrenTokenIdx;
-  };
-  SmallVector<PostChildrenInfo, 8> PostChildrenInfos;
-  
-  bool MoreTokens() const { return TokIdx < NumTokens; }
-  unsigned NextToken() const { return TokIdx; }
-  void AdvanceToken() { ++TokIdx; }
-  SourceLocation GetTokenLoc(unsigned tokI) {
-    return SourceLocation::getFromRawEncoding(Tokens[tokI].int_data[1]);
-  }
-  bool isFunctionMacroToken(unsigned tokI) const {
-    return Tokens[tokI].int_data[3] != 0;
-  }
-  SourceLocation getFunctionMacroTokenLoc(unsigned tokI) const {
-    return SourceLocation::getFromRawEncoding(Tokens[tokI].int_data[3]);
-  }
-
-  void annotateAndAdvanceTokens(CXCursor, RangeComparisonResult, SourceRange);
-  bool annotateAndAdvanceFunctionMacroTokens(CXCursor, RangeComparisonResult,
-                                             SourceRange);
-
-public:
-  AnnotateTokensWorker(CXToken *tokens, CXCursor *cursors, unsigned numTokens,
-                       CXTranslationUnit TU, SourceRange RegionOfInterest)
-    : Tokens(tokens), Cursors(cursors),
-      NumTokens(numTokens), TokIdx(0), PreprocessingTokIdx(0),
-      AnnotateVis(TU,
-                  AnnotateTokensVisitor, this,
-                  /*VisitPreprocessorLast=*/true,
-                  /*VisitIncludedEntities=*/false,
-                  RegionOfInterest,
-                  /*VisitDeclsOnly=*/false,
-                  AnnotateTokensPostChildrenVisitor),
-      SrcMgr(cxtu::getASTUnit(TU)->getSourceManager()),
-      HasContextSensitiveKeywords(false) { }
-
-  void VisitChildren(CXCursor C) { AnnotateVis.VisitChildren(C); }
-  enum CXChildVisitResult Visit(CXCursor cursor, CXCursor parent);
-  bool postVisitChildren(CXCursor cursor);
-  void AnnotateTokens();
-  
-  /// \brief Determine whether the annotator saw any cursors that have 
-  /// context-sensitive keywords.
-  bool hasContextSensitiveKeywords() const {
-    return HasContextSensitiveKeywords;
-  }
-
-  ~AnnotateTokensWorker() {
-    assert(PostChildrenInfos.empty());
-  }
-};
-}
-
-void AnnotateTokensWorker::AnnotateTokens() {
-  // Walk the AST within the region of interest, annotating tokens
-  // along the way.
-  AnnotateVis.visitFileRegion();
-}
-
-static inline void updateCursorAnnotation(CXCursor &Cursor,
-                                          const CXCursor &updateC) {
-  if (clang_isInvalid(updateC.kind) || !clang_isInvalid(Cursor.kind))
-    return;
-  Cursor = updateC;
-}
-
-/// \brief It annotates and advances tokens with a cursor until the comparison
-//// between the cursor location and the source range is the same as
-/// \arg compResult.
-///
-/// Pass RangeBefore to annotate tokens with a cursor until a range is reached.
-/// Pass RangeOverlap to annotate tokens inside a range.
-void AnnotateTokensWorker::annotateAndAdvanceTokens(CXCursor updateC,
-                                               RangeComparisonResult compResult,
-                                               SourceRange range) {
-  while (MoreTokens()) {
-    const unsigned I = NextToken();
-    if (isFunctionMacroToken(I))
-      if (!annotateAndAdvanceFunctionMacroTokens(updateC, compResult, range))
-        return;
-
-    SourceLocation TokLoc = GetTokenLoc(I);
-    if (LocationCompare(SrcMgr, TokLoc, range) == compResult) {
-      updateCursorAnnotation(Cursors[I], updateC);
-      AdvanceToken();
-      continue;
-    }
-    break;
-  }
-}
-
-/// \brief Special annotation handling for macro argument tokens.
-/// \returns true if it advanced beyond all macro tokens, false otherwise.
-bool AnnotateTokensWorker::annotateAndAdvanceFunctionMacroTokens(
-                                               CXCursor updateC,
-                                               RangeComparisonResult compResult,
-                                               SourceRange range) {
-  assert(MoreTokens());
-  assert(isFunctionMacroToken(NextToken()) &&
-         "Should be called only for macro arg tokens");
-
-  // This works differently than annotateAndAdvanceTokens; because expanded
-  // macro arguments can have arbitrary translation-unit source order, we do not
-  // advance the token index one by one until a token fails the range test.
-  // We only advance once past all of the macro arg tokens if all of them
-  // pass the range test. If one of them fails we keep the token index pointing
-  // at the start of the macro arg tokens so that the failing token will be
-  // annotated by a subsequent annotation try.
-
-  bool atLeastOneCompFail = false;
-  
-  unsigned I = NextToken();
-  for (; I < NumTokens && isFunctionMacroToken(I); ++I) {
-    SourceLocation TokLoc = getFunctionMacroTokenLoc(I);
-    if (TokLoc.isFileID())
-      continue; // not macro arg token, it's parens or comma.
-    if (LocationCompare(SrcMgr, TokLoc, range) == compResult) {
-      if (clang_isInvalid(clang_getCursorKind(Cursors[I])))
-        Cursors[I] = updateC;
-    } else
-      atLeastOneCompFail = true;
-  }
-
-  if (atLeastOneCompFail)
-    return false;
-
-  TokIdx = I; // All of the tokens were handled, advance beyond all of them.
-  return true;
-}
-
-enum CXChildVisitResult
-AnnotateTokensWorker::Visit(CXCursor cursor, CXCursor parent) {  
-  SourceRange cursorRange = getRawCursorExtent(cursor);
-  if (cursorRange.isInvalid())
-    return CXChildVisit_Recurse;
-      
-  if (!HasContextSensitiveKeywords) {
-    // Objective-C properties can have context-sensitive keywords.
-    if (cursor.kind == CXCursor_ObjCPropertyDecl) {
-      if (const ObjCPropertyDecl *Property
-                  = dyn_cast_or_null<ObjCPropertyDecl>(getCursorDecl(cursor)))
-        HasContextSensitiveKeywords = Property->getPropertyAttributesAsWritten() != 0;
-    }
-    // Objective-C methods can have context-sensitive keywords.
-    else if (cursor.kind == CXCursor_ObjCInstanceMethodDecl ||
-             cursor.kind == CXCursor_ObjCClassMethodDecl) {
-      if (const ObjCMethodDecl *Method
-            = dyn_cast_or_null<ObjCMethodDecl>(getCursorDecl(cursor))) {
-        if (Method->getObjCDeclQualifier())
-          HasContextSensitiveKeywords = true;
-        else {
-          for (ObjCMethodDecl::param_const_iterator P = Method->param_begin(),
-                                                 PEnd = Method->param_end();
-               P != PEnd; ++P) {
-            if ((*P)->getObjCDeclQualifier()) {
-              HasContextSensitiveKeywords = true;
-              break;
-            }
-          }
-        }
-      }
-    }    
-    // C++ methods can have context-sensitive keywords.
-    else if (cursor.kind == CXCursor_CXXMethod) {
-      if (const CXXMethodDecl *Method
-                  = dyn_cast_or_null<CXXMethodDecl>(getCursorDecl(cursor))) {
-        if (Method->hasAttr<FinalAttr>() || Method->hasAttr<OverrideAttr>())
-          HasContextSensitiveKeywords = true;
-      }
-    }
-    // C++ classes can have context-sensitive keywords.
-    else if (cursor.kind == CXCursor_StructDecl ||
-             cursor.kind == CXCursor_ClassDecl ||
-             cursor.kind == CXCursor_ClassTemplate ||
-             cursor.kind == CXCursor_ClassTemplatePartialSpecialization) {
-      if (const Decl *D = getCursorDecl(cursor))
-        if (D->hasAttr<FinalAttr>())
-          HasContextSensitiveKeywords = true;
-    }
-  }
-  
-  if (clang_isPreprocessing(cursor.kind)) {    
-    // Items in the preprocessing record are kept separate from items in
-    // declarations, so we keep a separate token index.
-    unsigned SavedTokIdx = TokIdx;
-    TokIdx = PreprocessingTokIdx;
-
-    // Skip tokens up until we catch up to the beginning of the preprocessing
-    // entry.
-    while (MoreTokens()) {
-      const unsigned I = NextToken();
-      SourceLocation TokLoc = GetTokenLoc(I);
-      switch (LocationCompare(SrcMgr, TokLoc, cursorRange)) {
-      case RangeBefore:
-        AdvanceToken();
-        continue;
-      case RangeAfter:
-      case RangeOverlap:
-        break;
-      }
-      break;
-    }
-    
-    // Look at all of the tokens within this range.
-    while (MoreTokens()) {
-      const unsigned I = NextToken();
-      SourceLocation TokLoc = GetTokenLoc(I);
-      switch (LocationCompare(SrcMgr, TokLoc, cursorRange)) {
-      case RangeBefore:
-        llvm_unreachable("Infeasible");
-      case RangeAfter:
-        break;
-      case RangeOverlap:
-        // For macro expansions, just note where the beginning of the macro
-        // expansion occurs.
-        if (cursor.kind == CXCursor_MacroExpansion) {
-          if (TokLoc == cursorRange.getBegin())
-            Cursors[I] = cursor;
-          AdvanceToken();
-          break;
-        }
-        // We may have already annotated macro names inside macro definitions.
-        if (Cursors[I].kind != CXCursor_MacroExpansion)
-          Cursors[I] = cursor;
-        AdvanceToken();
-        continue;
-      }
-      break;
-    }
-
-    // Save the preprocessing token index; restore the non-preprocessing
-    // token index.
-    PreprocessingTokIdx = TokIdx;
-    TokIdx = SavedTokIdx;
-    return CXChildVisit_Recurse;
-  }
-
-  if (cursorRange.isInvalid())
-    return CXChildVisit_Continue;
-
-  unsigned BeforeReachingCursorIdx = NextToken();
-  const enum CXCursorKind cursorK = clang_getCursorKind(cursor);
-  const enum CXCursorKind K = clang_getCursorKind(parent);
-  const CXCursor updateC =
-    (clang_isInvalid(K) || K == CXCursor_TranslationUnit ||
-     // Attributes are annotated out-of-order, skip tokens until we reach it.
-     clang_isAttribute(cursor.kind))
-     ? clang_getNullCursor() : parent;
-
-  annotateAndAdvanceTokens(updateC, RangeBefore, cursorRange);
-
-  // Avoid having the cursor of an expression "overwrite" the annotation of the
-  // variable declaration that it belongs to.
-  // This can happen for C++ constructor expressions whose range generally
-  // include the variable declaration, e.g.:
-  //  MyCXXClass foo; // Make sure we don't annotate 'foo' as a CallExpr cursor.
-  if (clang_isExpression(cursorK)) {
-    const Expr *E = getCursorExpr(cursor);
-    if (const Decl *D = getCursorParentDecl(cursor)) {
-      const unsigned I = NextToken();
-      if (E->getLocStart().isValid() && D->getLocation().isValid() &&
-          E->getLocStart() == D->getLocation() &&
-          E->getLocStart() == GetTokenLoc(I)) {
-        updateCursorAnnotation(Cursors[I], updateC);
-        AdvanceToken();
-      }
-    }
-  }
-
-  // Before recursing into the children keep some state that we are going
-  // to use in the AnnotateTokensWorker::postVisitChildren callback to do some
-  // extra work after the child nodes are visited.
-  // Note that we don't call VisitChildren here to avoid traversing statements
-  // code-recursively which can blow the stack.
-
-  PostChildrenInfo Info;
-  Info.Cursor = cursor;
-  Info.CursorRange = cursorRange;
-  Info.BeforeReachingCursorIdx = BeforeReachingCursorIdx;
-  Info.BeforeChildrenTokenIdx = NextToken();
-  PostChildrenInfos.push_back(Info);
-
-  return CXChildVisit_Recurse;
-}
-
-bool AnnotateTokensWorker::postVisitChildren(CXCursor cursor) {
-  if (PostChildrenInfos.empty())
-    return false;
-  const PostChildrenInfo &Info = PostChildrenInfos.back();
-  if (!clang_equalCursors(Info.Cursor, cursor))
-    return false;
-
-  const unsigned BeforeChildren = Info.BeforeChildrenTokenIdx;
-  const unsigned AfterChildren = NextToken();
-  SourceRange cursorRange = Info.CursorRange;
-
-  // Scan the tokens that are at the end of the cursor, but are not captured
-  // but the child cursors.
-  annotateAndAdvanceTokens(cursor, RangeOverlap, cursorRange);
-
-  // Scan the tokens that are at the beginning of the cursor, but are not
-  // capture by the child cursors.
-  for (unsigned I = BeforeChildren; I != AfterChildren; ++I) {
-    if (!clang_isInvalid(clang_getCursorKind(Cursors[I])))
-      break;
-
-    Cursors[I] = cursor;
-  }
-
-  // Attributes are annotated out-of-order, rewind TokIdx to when we first
-  // encountered the attribute cursor.
-  if (clang_isAttribute(cursor.kind))
-    TokIdx = Info.BeforeReachingCursorIdx;
-
-  PostChildrenInfos.pop_back();
-  return false;
-}
-
-static enum CXChildVisitResult AnnotateTokensVisitor(CXCursor cursor,
-                                                     CXCursor parent,
-                                                     CXClientData client_data) {
-  return static_cast<AnnotateTokensWorker*>(client_data)->Visit(cursor, parent);
-}
-
-static bool AnnotateTokensPostChildrenVisitor(CXCursor cursor,
-                                              CXClientData client_data) {
-  return static_cast<AnnotateTokensWorker*>(client_data)->
-                                                      postVisitChildren(cursor);
-}
-
-namespace {
-
-/// \brief Uses the macro expansions in the preprocessing record to find
-/// and mark tokens that are macro arguments. This info is used by the
-/// AnnotateTokensWorker.
-class MarkMacroArgTokensVisitor {
-  SourceManager &SM;
-  CXToken *Tokens;
-  unsigned NumTokens;
-  unsigned CurIdx;
-  
-public:
-  MarkMacroArgTokensVisitor(SourceManager &SM,
-                            CXToken *tokens, unsigned numTokens)
-    : SM(SM), Tokens(tokens), NumTokens(numTokens), CurIdx(0) { }
-
-  CXChildVisitResult visit(CXCursor cursor, CXCursor parent) {
-    if (cursor.kind != CXCursor_MacroExpansion)
-      return CXChildVisit_Continue;
-
-    SourceRange macroRange = getCursorMacroExpansion(cursor).getSourceRange();
-    if (macroRange.getBegin() == macroRange.getEnd())
-      return CXChildVisit_Continue; // it's not a function macro.
-
-    for (; CurIdx < NumTokens; ++CurIdx) {
-      if (!SM.isBeforeInTranslationUnit(getTokenLoc(CurIdx),
-                                        macroRange.getBegin()))
-        break;
-    }
-    
-    if (CurIdx == NumTokens)
-      return CXChildVisit_Break;
-
-    for (; CurIdx < NumTokens; ++CurIdx) {
-      SourceLocation tokLoc = getTokenLoc(CurIdx);
-      if (!SM.isBeforeInTranslationUnit(tokLoc, macroRange.getEnd()))
-        break;
-
-      setFunctionMacroTokenLoc(CurIdx, SM.getMacroArgExpandedLocation(tokLoc));
-    }
-
-    if (CurIdx == NumTokens)
-      return CXChildVisit_Break;
-
-    return CXChildVisit_Continue;
-  }
-
-private:
-  SourceLocation getTokenLoc(unsigned tokI) {
-    return SourceLocation::getFromRawEncoding(Tokens[tokI].int_data[1]);
-  }
-
-  void setFunctionMacroTokenLoc(unsigned tokI, SourceLocation loc) {
-    // The third field is reserved and currently not used. Use it here
-    // to mark macro arg expanded tokens with their expanded locations.
-    Tokens[tokI].int_data[3] = loc.getRawEncoding();
-  }
-};
-
-} // end anonymous namespace
-
-static CXChildVisitResult
-MarkMacroArgTokensVisitorDelegate(CXCursor cursor, CXCursor parent,
-                                  CXClientData client_data) {
-  return static_cast<MarkMacroArgTokensVisitor*>(client_data)->visit(cursor,
-                                                                     parent);
-}
-
-namespace {
-  struct clang_annotateTokens_Data {
-    CXTranslationUnit TU;
-    ASTUnit *CXXUnit;
-    CXToken *Tokens;
-    unsigned NumTokens;
-    CXCursor *Cursors;
-  };
-}
-
-/// \brief Used by \c annotatePreprocessorTokens.
-/// \returns true if lexing was finished, false otherwise.
-static bool lexNext(Lexer &Lex, Token &Tok,
-                   unsigned &NextIdx, unsigned NumTokens) {
-  if (NextIdx >= NumTokens)
-    return true;
-
-  ++NextIdx;
-  Lex.LexFromRawLexer(Tok);
-  if (Tok.is(tok::eof))
-    return true;
-
-  return false;
-}
-
-static void annotatePreprocessorTokens(CXTranslationUnit TU,
-                                       SourceRange RegionOfInterest,
-                                       CXCursor *Cursors,
-                                       CXToken *Tokens,
-                                       unsigned NumTokens) {
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-
-  Preprocessor &PP = CXXUnit->getPreprocessor();
-  SourceManager &SourceMgr = CXXUnit->getSourceManager();
-  std::pair<FileID, unsigned> BeginLocInfo
-    = SourceMgr.getDecomposedSpellingLoc(RegionOfInterest.getBegin());
-  std::pair<FileID, unsigned> EndLocInfo
-    = SourceMgr.getDecomposedSpellingLoc(RegionOfInterest.getEnd());
-
-  if (BeginLocInfo.first != EndLocInfo.first)
-    return;
-
-  StringRef Buffer;
-  bool Invalid = false;
-  Buffer = SourceMgr.getBufferData(BeginLocInfo.first, &Invalid);
-  if (Buffer.empty() || Invalid)
-    return;
-
-  Lexer Lex(SourceMgr.getLocForStartOfFile(BeginLocInfo.first),
-            CXXUnit->getASTContext().getLangOpts(),
-            Buffer.begin(), Buffer.data() + BeginLocInfo.second,
-            Buffer.end());
-  Lex.SetCommentRetentionState(true);
-  
-  unsigned NextIdx = 0;
-  // Lex tokens in raw mode until we hit the end of the range, to avoid
-  // entering #includes or expanding macros.
-  while (true) {
-    Token Tok;
-    if (lexNext(Lex, Tok, NextIdx, NumTokens))
-      break;
-    unsigned TokIdx = NextIdx-1;
-    assert(Tok.getLocation() ==
-             SourceLocation::getFromRawEncoding(Tokens[TokIdx].int_data[1]));
-    
-  reprocess:
-    if (Tok.is(tok::hash) && Tok.isAtStartOfLine()) {
-      // We have found a preprocessing directive. Annotate the tokens
-      // appropriately.
-      //
-      // FIXME: Some simple tests here could identify macro definitions and
-      // #undefs, to provide specific cursor kinds for those.
-
-      SourceLocation BeginLoc = Tok.getLocation();
-      if (lexNext(Lex, Tok, NextIdx, NumTokens))
-        break;
-
-      MacroInfo *MI = 0;
-      if (Tok.is(tok::raw_identifier) &&
-          StringRef(Tok.getRawIdentifierData(), Tok.getLength()) == "define") {
-        if (lexNext(Lex, Tok, NextIdx, NumTokens))
-          break;
-
-        if (Tok.is(tok::raw_identifier)) {
-          StringRef Name(Tok.getRawIdentifierData(), Tok.getLength());
-          IdentifierInfo &II = PP.getIdentifierTable().get(Name);
-          SourceLocation MappedTokLoc =
-              CXXUnit->mapLocationToPreamble(Tok.getLocation());
-          MI = getMacroInfo(II, MappedTokLoc, TU);
-        }
-      }
-
-      bool finished = false;
-      do {
-        if (lexNext(Lex, Tok, NextIdx, NumTokens)) {
-          finished = true;
-          break;
-        }
-        // If we are in a macro definition, check if the token was ever a
-        // macro name and annotate it if that's the case.
-        if (MI) {
-          SourceLocation SaveLoc = Tok.getLocation();
-          Tok.setLocation(CXXUnit->mapLocationToPreamble(SaveLoc));
-          MacroDefinition *MacroDef = checkForMacroInMacroDefinition(MI,Tok,TU);
-          Tok.setLocation(SaveLoc);
-          if (MacroDef)
-            Cursors[NextIdx-1] = MakeMacroExpansionCursor(MacroDef,
-                                                         Tok.getLocation(), TU);
-        }
-      } while (!Tok.isAtStartOfLine());
-
-      unsigned LastIdx = finished ? NextIdx-1 : NextIdx-2;
-      assert(TokIdx <= LastIdx);
-      SourceLocation EndLoc =
-          SourceLocation::getFromRawEncoding(Tokens[LastIdx].int_data[1]);
-      CXCursor Cursor =
-          MakePreprocessingDirectiveCursor(SourceRange(BeginLoc, EndLoc), TU);
-
-      for (; TokIdx <= LastIdx; ++TokIdx)
-        updateCursorAnnotation(Cursors[TokIdx], Cursor);
-      
-      if (finished)
-        break;
-      goto reprocess;
-    }
-  }
-}
-
-// This gets run a separate thread to avoid stack blowout.
-static void clang_annotateTokensImpl(void *UserData) {
-  CXTranslationUnit TU = ((clang_annotateTokens_Data*)UserData)->TU;
-  ASTUnit *CXXUnit = ((clang_annotateTokens_Data*)UserData)->CXXUnit;
-  CXToken *Tokens = ((clang_annotateTokens_Data*)UserData)->Tokens;
-  const unsigned NumTokens = ((clang_annotateTokens_Data*)UserData)->NumTokens;
-  CXCursor *Cursors = ((clang_annotateTokens_Data*)UserData)->Cursors;
-
-  CIndexer *CXXIdx = TU->CIdx;
-  if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForEditing))
-    setThreadBackgroundPriority();
-
-  // Determine the region of interest, which contains all of the tokens.
-  SourceRange RegionOfInterest;
-  RegionOfInterest.setBegin(
-    cxloc::translateSourceLocation(clang_getTokenLocation(TU, Tokens[0])));
-  RegionOfInterest.setEnd(
-    cxloc::translateSourceLocation(clang_getTokenLocation(TU,
-                                                         Tokens[NumTokens-1])));
-
-  // Relex the tokens within the source range to look for preprocessing
-  // directives.
-  annotatePreprocessorTokens(TU, RegionOfInterest, Cursors, Tokens, NumTokens);
-
-  // If begin location points inside a macro argument, set it to the expansion
-  // location so we can have the full context when annotating semantically.
-  {
-    SourceManager &SM = CXXUnit->getSourceManager();
-    SourceLocation Loc =
-        SM.getMacroArgExpandedLocation(RegionOfInterest.getBegin());
-    if (Loc.isMacroID())
-      RegionOfInterest.setBegin(SM.getExpansionLoc(Loc));
-  }
-
-  if (CXXUnit->getPreprocessor().getPreprocessingRecord()) {
-    // Search and mark tokens that are macro argument expansions.
-    MarkMacroArgTokensVisitor Visitor(CXXUnit->getSourceManager(),
-                                      Tokens, NumTokens);
-    CursorVisitor MacroArgMarker(TU,
-                                 MarkMacroArgTokensVisitorDelegate, &Visitor,
-                                 /*VisitPreprocessorLast=*/true,
-                                 /*VisitIncludedEntities=*/false,
-                                 RegionOfInterest);
-    MacroArgMarker.visitPreprocessedEntitiesInRegion();
-  }
-  
-  // Annotate all of the source locations in the region of interest that map to
-  // a specific cursor.
-  AnnotateTokensWorker W(Tokens, Cursors, NumTokens, TU, RegionOfInterest);
-  
-  // FIXME: We use a ridiculous stack size here because the data-recursion
-  // algorithm uses a large stack frame than the non-data recursive version,
-  // and AnnotationTokensWorker currently transforms the data-recursion
-  // algorithm back into a traditional recursion by explicitly calling
-  // VisitChildren().  We will need to remove this explicit recursive call.
-  W.AnnotateTokens();
-
-  // If we ran into any entities that involve context-sensitive keywords,
-  // take another pass through the tokens to mark them as such.
-  if (W.hasContextSensitiveKeywords()) {
-    for (unsigned I = 0; I != NumTokens; ++I) {
-      if (clang_getTokenKind(Tokens[I]) != CXToken_Identifier)
-        continue;
-      
-      if (Cursors[I].kind == CXCursor_ObjCPropertyDecl) {
-        IdentifierInfo *II = static_cast<IdentifierInfo *>(Tokens[I].ptr_data);
-        if (const ObjCPropertyDecl *Property
-            = dyn_cast_or_null<ObjCPropertyDecl>(getCursorDecl(Cursors[I]))) {
-          if (Property->getPropertyAttributesAsWritten() != 0 &&
-              llvm::StringSwitch<bool>(II->getName())
-              .Case("readonly", true)
-              .Case("assign", true)
-              .Case("unsafe_unretained", true)
-              .Case("readwrite", true)
-              .Case("retain", true)
-              .Case("copy", true)
-              .Case("nonatomic", true)
-              .Case("atomic", true)
-              .Case("getter", true)
-              .Case("setter", true)
-              .Case("strong", true)
-              .Case("weak", true)
-              .Default(false))
-            Tokens[I].int_data[0] = CXToken_Keyword;
-        }
-        continue;
-      }
-      
-      if (Cursors[I].kind == CXCursor_ObjCInstanceMethodDecl ||
-          Cursors[I].kind == CXCursor_ObjCClassMethodDecl) {
-        IdentifierInfo *II = static_cast<IdentifierInfo *>(Tokens[I].ptr_data);
-        if (llvm::StringSwitch<bool>(II->getName())
-            .Case("in", true)
-            .Case("out", true)
-            .Case("inout", true)
-            .Case("oneway", true)
-            .Case("bycopy", true)
-            .Case("byref", true)
-            .Default(false))
-          Tokens[I].int_data[0] = CXToken_Keyword;
-        continue;
-      }
-
-      if (Cursors[I].kind == CXCursor_CXXFinalAttr ||
-          Cursors[I].kind == CXCursor_CXXOverrideAttr) {
-        Tokens[I].int_data[0] = CXToken_Keyword;
-        continue;
-      }
-    }
-  }
-}
-
-extern "C" {
-
-void clang_annotateTokens(CXTranslationUnit TU,
-                          CXToken *Tokens, unsigned NumTokens,
-                          CXCursor *Cursors) {
-  if (!TU || NumTokens == 0 || !Tokens || !Cursors) {
-    LOG_FUNC_SECTION { *Log << "<null input>"; }
-    return;
-  }
-
-  LOG_FUNC_SECTION {
-    *Log << TU << ' ';
-    CXSourceLocation bloc = clang_getTokenLocation(TU, Tokens[0]);
-    CXSourceLocation eloc = clang_getTokenLocation(TU, Tokens[NumTokens-1]);
-    *Log << clang_getRange(bloc, eloc);
-  }
-
-  // Any token we don't specifically annotate will have a NULL cursor.
-  CXCursor C = clang_getNullCursor();
-  for (unsigned I = 0; I != NumTokens; ++I)
-    Cursors[I] = C;
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  if (!CXXUnit)
-    return;
-
-  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
-  
-  clang_annotateTokens_Data data = { TU, CXXUnit, Tokens, NumTokens, Cursors };
-  llvm::CrashRecoveryContext CRC;
-  if (!RunSafely(CRC, clang_annotateTokensImpl, &data,
-                 GetSafetyThreadStackSize() * 2)) {
-    fprintf(stderr, "libclang: crash detected while annotating tokens\n");
-  }
-}
-
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// Operations for querying linkage of a cursor.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-CXLinkageKind clang_getCursorLinkage(CXCursor cursor) {
-  if (!clang_isDeclaration(cursor.kind))
-    return CXLinkage_Invalid;
-
-  const Decl *D = cxcursor::getCursorDecl(cursor);
-  if (const NamedDecl *ND = dyn_cast_or_null<NamedDecl>(D))
-    switch (ND->getLinkage()) {
-      case NoLinkage: return CXLinkage_NoLinkage;
-      case InternalLinkage: return CXLinkage_Internal;
-      case UniqueExternalLinkage: return CXLinkage_UniqueExternal;
-      case ExternalLinkage: return CXLinkage_External;
-    };
-
-  return CXLinkage_Invalid;
-}
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// Operations for querying language of a cursor.
-//===----------------------------------------------------------------------===//
-
-static CXLanguageKind getDeclLanguage(const Decl *D) {
-  if (!D)
-    return CXLanguage_C;
-
-  switch (D->getKind()) {
-    default:
-      break;
-    case Decl::ImplicitParam:
-    case Decl::ObjCAtDefsField:
-    case Decl::ObjCCategory:
-    case Decl::ObjCCategoryImpl:
-    case Decl::ObjCCompatibleAlias:
-    case Decl::ObjCImplementation:
-    case Decl::ObjCInterface:
-    case Decl::ObjCIvar:
-    case Decl::ObjCMethod:
-    case Decl::ObjCProperty:
-    case Decl::ObjCPropertyImpl:
-    case Decl::ObjCProtocol:
-      return CXLanguage_ObjC;
-    case Decl::CXXConstructor:
-    case Decl::CXXConversion:
-    case Decl::CXXDestructor:
-    case Decl::CXXMethod:
-    case Decl::CXXRecord:
-    case Decl::ClassTemplate:
-    case Decl::ClassTemplatePartialSpecialization:
-    case Decl::ClassTemplateSpecialization:
-    case Decl::Friend:
-    case Decl::FriendTemplate:
-    case Decl::FunctionTemplate:
-    case Decl::LinkageSpec:
-    case Decl::Namespace:
-    case Decl::NamespaceAlias:
-    case Decl::NonTypeTemplateParm:
-    case Decl::StaticAssert:
-    case Decl::TemplateTemplateParm:
-    case Decl::TemplateTypeParm:
-    case Decl::UnresolvedUsingTypename:
-    case Decl::UnresolvedUsingValue:
-    case Decl::Using:
-    case Decl::UsingDirective:
-    case Decl::UsingShadow:
-      return CXLanguage_CPlusPlus;
-  }
-
-  return CXLanguage_C;
-}
-
-extern "C" {
-  
-enum CXAvailabilityKind clang_getCursorAvailability(CXCursor cursor) {
-  if (clang_isDeclaration(cursor.kind))
-    if (const Decl *D = cxcursor::getCursorDecl(cursor)) {
-      if (isa<FunctionDecl>(D) && cast<FunctionDecl>(D)->isDeleted())
-        return CXAvailability_Available;
-      
-      switch (D->getAvailability()) {
-      case AR_Available:
-      case AR_NotYetIntroduced:
-        return CXAvailability_Available;
-
-      case AR_Deprecated:
-        return CXAvailability_Deprecated;
-
-      case AR_Unavailable:
-        return CXAvailability_NotAvailable;
-      }
-    }
-
-  return CXAvailability_Available;
-}
-
-static CXVersion convertVersion(VersionTuple In) {
-  CXVersion Out = { -1, -1, -1 };
-  if (In.empty())
-    return Out;
-
-  Out.Major = In.getMajor();
-  
-  Optional<unsigned> Minor = In.getMinor();
-  if (Minor.hasValue())
-    Out.Minor = *Minor;
-  else
-    return Out;
-
-  Optional<unsigned> Subminor = In.getSubminor();
-  if (Subminor.hasValue())
-    Out.Subminor = *Subminor;
-  
-  return Out;
-}
-  
-int clang_getCursorPlatformAvailability(CXCursor cursor,
-                                        int *always_deprecated,
-                                        CXString *deprecated_message,
-                                        int *always_unavailable,
-                                        CXString *unavailable_message,
-                                        CXPlatformAvailability *availability,
-                                        int availability_size) {
-  if (always_deprecated)
-    *always_deprecated = 0;
-  if (deprecated_message)
-    *deprecated_message = cxstring::createEmpty();
-  if (always_unavailable)
-    *always_unavailable = 0;
-  if (unavailable_message)
-    *unavailable_message = cxstring::createEmpty();
-  
-  if (!clang_isDeclaration(cursor.kind))
-    return 0;
-  
-  const Decl *D = cxcursor::getCursorDecl(cursor);
-  if (!D)
-    return 0;
-  
-  int N = 0;
-  for (Decl::attr_iterator A = D->attr_begin(), AEnd = D->attr_end(); A != AEnd;
-       ++A) {
-    if (DeprecatedAttr *Deprecated = dyn_cast<DeprecatedAttr>(*A)) {
-      if (always_deprecated)
-        *always_deprecated = 1;
-      if (deprecated_message)
-        *deprecated_message = cxstring::createDup(Deprecated->getMessage());
-      continue;
-    }
-    
-    if (UnavailableAttr *Unavailable = dyn_cast<UnavailableAttr>(*A)) {
-      if (always_unavailable)
-        *always_unavailable = 1;
-      if (unavailable_message) {
-        *unavailable_message = cxstring::createDup(Unavailable->getMessage());
-      }
-      continue;
-    }
-    
-    if (AvailabilityAttr *Avail = dyn_cast<AvailabilityAttr>(*A)) {
-      if (N < availability_size) {
-        availability[N].Platform
-          = cxstring::createDup(Avail->getPlatform()->getName());
-        availability[N].Introduced = convertVersion(Avail->getIntroduced());
-        availability[N].Deprecated = convertVersion(Avail->getDeprecated());
-        availability[N].Obsoleted = convertVersion(Avail->getObsoleted());
-        availability[N].Unavailable = Avail->getUnavailable();
-        availability[N].Message = cxstring::createDup(Avail->getMessage());
-      }
-      ++N;
-    }
-  }
-  
-  return N;
-}
-  
-void clang_disposeCXPlatformAvailability(CXPlatformAvailability *availability) {
-  clang_disposeString(availability->Platform);
-  clang_disposeString(availability->Message);
-}
-
-CXLanguageKind clang_getCursorLanguage(CXCursor cursor) {
-  if (clang_isDeclaration(cursor.kind))
-    return getDeclLanguage(cxcursor::getCursorDecl(cursor));
-
-  return CXLanguage_Invalid;
-}
-
- /// \brief If the given cursor is the "templated" declaration
- /// descibing a class or function template, return the class or
- /// function template.
-static const Decl *maybeGetTemplateCursor(const Decl *D) {
-  if (!D)
-    return 0;
-
-  if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
-    if (FunctionTemplateDecl *FunTmpl = FD->getDescribedFunctionTemplate())
-      return FunTmpl;
-
-  if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D))
-    if (ClassTemplateDecl *ClassTmpl = RD->getDescribedClassTemplate())
-      return ClassTmpl;
-
-  return D;
-}
-
-CXCursor clang_getCursorSemanticParent(CXCursor cursor) {
-  if (clang_isDeclaration(cursor.kind)) {
-    if (const Decl *D = getCursorDecl(cursor)) {
-      const DeclContext *DC = D->getDeclContext();
-      if (!DC)
-        return clang_getNullCursor();
-
-      return MakeCXCursor(maybeGetTemplateCursor(cast<Decl>(DC)), 
-                          getCursorTU(cursor));
-    }
-  }
-  
-  if (clang_isStatement(cursor.kind) || clang_isExpression(cursor.kind)) {
-    if (const Decl *D = getCursorDecl(cursor))
-      return MakeCXCursor(D, getCursorTU(cursor));
-  }
-  
-  return clang_getNullCursor();
-}
-
-CXCursor clang_getCursorLexicalParent(CXCursor cursor) {
-  if (clang_isDeclaration(cursor.kind)) {
-    if (const Decl *D = getCursorDecl(cursor)) {
-      const DeclContext *DC = D->getLexicalDeclContext();
-      if (!DC)
-        return clang_getNullCursor();
-
-      return MakeCXCursor(maybeGetTemplateCursor(cast<Decl>(DC)), 
-                          getCursorTU(cursor));
-    }
-  }
-
-  // FIXME: Note that we can't easily compute the lexical context of a 
-  // statement or expression, so we return nothing.
-  return clang_getNullCursor();
-}
-
-CXFile clang_getIncludedFile(CXCursor cursor) {
-  if (cursor.kind != CXCursor_InclusionDirective)
-    return 0;
-  
-  const InclusionDirective *ID = getCursorInclusionDirective(cursor);
-  return const_cast<FileEntry *>(ID->getFile());
-}
-
-unsigned clang_Cursor_getObjCPropertyAttributes(CXCursor C, unsigned reserved) {
-  if (C.kind != CXCursor_ObjCPropertyDecl)
-    return CXObjCPropertyAttr_noattr;
-
-  unsigned Result = CXObjCPropertyAttr_noattr;
-  const ObjCPropertyDecl *PD = dyn_cast<ObjCPropertyDecl>(getCursorDecl(C));
-  ObjCPropertyDecl::PropertyAttributeKind Attr =
-      PD->getPropertyAttributesAsWritten();
-
-#define SET_CXOBJCPROP_ATTR(A) \
-  if (Attr & ObjCPropertyDecl::OBJC_PR_##A) \
-    Result |= CXObjCPropertyAttr_##A
-  SET_CXOBJCPROP_ATTR(readonly);
-  SET_CXOBJCPROP_ATTR(getter);
-  SET_CXOBJCPROP_ATTR(assign);
-  SET_CXOBJCPROP_ATTR(readwrite);
-  SET_CXOBJCPROP_ATTR(retain);
-  SET_CXOBJCPROP_ATTR(copy);
-  SET_CXOBJCPROP_ATTR(nonatomic);
-  SET_CXOBJCPROP_ATTR(setter);
-  SET_CXOBJCPROP_ATTR(atomic);
-  SET_CXOBJCPROP_ATTR(weak);
-  SET_CXOBJCPROP_ATTR(strong);
-  SET_CXOBJCPROP_ATTR(unsafe_unretained);
-#undef SET_CXOBJCPROP_ATTR
-
-  return Result;
-}
-
-unsigned clang_Cursor_getObjCDeclQualifiers(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return CXObjCDeclQualifier_None;
-
-  Decl::ObjCDeclQualifier QT = Decl::OBJC_TQ_None;
-  const Decl *D = getCursorDecl(C);
-  if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D))
-    QT = MD->getObjCDeclQualifier();
-  else if (const ParmVarDecl *PD = dyn_cast<ParmVarDecl>(D))
-    QT = PD->getObjCDeclQualifier();
-  if (QT == Decl::OBJC_TQ_None)
-    return CXObjCDeclQualifier_None;
-
-  unsigned Result = CXObjCDeclQualifier_None;
-  if (QT & Decl::OBJC_TQ_In) Result |= CXObjCDeclQualifier_In;
-  if (QT & Decl::OBJC_TQ_Inout) Result |= CXObjCDeclQualifier_Inout;
-  if (QT & Decl::OBJC_TQ_Out) Result |= CXObjCDeclQualifier_Out;
-  if (QT & Decl::OBJC_TQ_Bycopy) Result |= CXObjCDeclQualifier_Bycopy;
-  if (QT & Decl::OBJC_TQ_Byref) Result |= CXObjCDeclQualifier_Byref;
-  if (QT & Decl::OBJC_TQ_Oneway) Result |= CXObjCDeclQualifier_Oneway;
-
-  return Result;
-}
-
-unsigned clang_Cursor_isVariadic(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return 0;
-
-  const Decl *D = getCursorDecl(C);
-  if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
-    return FD->isVariadic();
-  if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D))
-    return MD->isVariadic();
-
-  return 0;
-}
-
-CXSourceRange clang_Cursor_getCommentRange(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return clang_getNullRange();
-
-  const Decl *D = getCursorDecl(C);
-  ASTContext &Context = getCursorContext(C);
-  const RawComment *RC = Context.getRawCommentForAnyRedecl(D);
-  if (!RC)
-    return clang_getNullRange();
-
-  return cxloc::translateSourceRange(Context, RC->getSourceRange());
-}
-
-CXString clang_Cursor_getRawCommentText(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return cxstring::createNull();
-
-  const Decl *D = getCursorDecl(C);
-  ASTContext &Context = getCursorContext(C);
-  const RawComment *RC = Context.getRawCommentForAnyRedecl(D);
-  StringRef RawText = RC ? RC->getRawText(Context.getSourceManager()) :
-                           StringRef();
-
-  // Don't duplicate the string because RawText points directly into source
-  // code.
-  return cxstring::createRef(RawText);
-}
-
-CXString clang_Cursor_getBriefCommentText(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return cxstring::createNull();
-
-  const Decl *D = getCursorDecl(C);
-  const ASTContext &Context = getCursorContext(C);
-  const RawComment *RC = Context.getRawCommentForAnyRedecl(D);
-
-  if (RC) {
-    StringRef BriefText = RC->getBriefText(Context);
-
-    // Don't duplicate the string because RawComment ensures that this memory
-    // will not go away.
-    return cxstring::createRef(BriefText);
-  }
-
-  return cxstring::createNull();
-}
-
-CXComment clang_Cursor_getParsedComment(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return cxcomment::createCXComment(NULL, NULL);
-
-  const Decl *D = getCursorDecl(C);
-  const ASTContext &Context = getCursorContext(C);
-  const comments::FullComment *FC = Context.getCommentForDecl(D, /*PP=*/ NULL);
-
-  return cxcomment::createCXComment(FC, getCursorTU(C));
-}
-
-CXModule clang_Cursor_getModule(CXCursor C) {
-  if (C.kind == CXCursor_ModuleImportDecl) {
-    if (const ImportDecl *ImportD =
-            dyn_cast_or_null<ImportDecl>(getCursorDecl(C)))
-      return ImportD->getImportedModule();
-  }
-
-  return 0;
-}
-
-CXFile clang_Module_getASTFile(CXModule CXMod) {
-  if (!CXMod)
-    return 0;
-  Module *Mod = static_cast<Module*>(CXMod);
-  return const_cast<FileEntry *>(Mod->getASTFile());
-}
-
-CXModule clang_Module_getParent(CXModule CXMod) {
-  if (!CXMod)
-    return 0;
-  Module *Mod = static_cast<Module*>(CXMod);
-  return Mod->Parent;
-}
-
-CXString clang_Module_getName(CXModule CXMod) {
-  if (!CXMod)
-    return cxstring::createEmpty();
-  Module *Mod = static_cast<Module*>(CXMod);
-  return cxstring::createDup(Mod->Name);
-}
-
-CXString clang_Module_getFullName(CXModule CXMod) {
-  if (!CXMod)
-    return cxstring::createEmpty();
-  Module *Mod = static_cast<Module*>(CXMod);
-  return cxstring::createDup(Mod->getFullModuleName());
-}
-
-unsigned clang_Module_getNumTopLevelHeaders(CXTranslationUnit TU,
-                                            CXModule CXMod) {
-  if (!TU || !CXMod)
-    return 0;
-  Module *Mod = static_cast<Module*>(CXMod);
-  FileManager &FileMgr = cxtu::getASTUnit(TU)->getFileManager();
-  ArrayRef<const FileEntry *> TopHeaders = Mod->getTopHeaders(FileMgr);
-  return TopHeaders.size();
-}
-
-CXFile clang_Module_getTopLevelHeader(CXTranslationUnit TU,
-                                      CXModule CXMod, unsigned Index) {
-  if (!TU || !CXMod)
-    return 0;
-  Module *Mod = static_cast<Module*>(CXMod);
-  FileManager &FileMgr = cxtu::getASTUnit(TU)->getFileManager();
-
-  ArrayRef<const FileEntry *> TopHeaders = Mod->getTopHeaders(FileMgr);
-  if (Index < TopHeaders.size())
-    return const_cast<FileEntry *>(TopHeaders[Index]);
-
-  return 0;
-}
-
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// C++ AST instrospection.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-unsigned clang_CXXMethod_isStatic(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return 0;
-  
-  const CXXMethodDecl *Method = 0;
-  const Decl *D = cxcursor::getCursorDecl(C);
-  if (const FunctionTemplateDecl *FunTmpl =
-          dyn_cast_or_null<FunctionTemplateDecl>(D))
-    Method = dyn_cast<CXXMethodDecl>(FunTmpl->getTemplatedDecl());
-  else
-    Method = dyn_cast_or_null<CXXMethodDecl>(D);
-  return (Method && Method->isStatic()) ? 1 : 0;
-}
-
-unsigned clang_CXXMethod_isVirtual(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return 0;
-  
-  const CXXMethodDecl *Method = 0;
-  const Decl *D = cxcursor::getCursorDecl(C);
-  if (const FunctionTemplateDecl *FunTmpl =
-          dyn_cast_or_null<FunctionTemplateDecl>(D))
-    Method = dyn_cast<CXXMethodDecl>(FunTmpl->getTemplatedDecl());
-  else
-    Method = dyn_cast_or_null<CXXMethodDecl>(D);
-  return (Method && Method->isVirtual()) ? 1 : 0;
-}
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// Attribute introspection.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-CXType clang_getIBOutletCollectionType(CXCursor C) {
-  if (C.kind != CXCursor_IBOutletCollectionAttr)
-    return cxtype::MakeCXType(QualType(), cxcursor::getCursorTU(C));
-  
-  const IBOutletCollectionAttr *A =
-    cast<IBOutletCollectionAttr>(cxcursor::getCursorAttr(C));
-  
-  return cxtype::MakeCXType(A->getInterface(), cxcursor::getCursorTU(C));  
-}
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// Inspecting memory usage.
-//===----------------------------------------------------------------------===//
-
-typedef std::vector<CXTUResourceUsageEntry> MemUsageEntries;
-
-static inline void createCXTUResourceUsageEntry(MemUsageEntries &entries,
-                                              enum CXTUResourceUsageKind k,
-                                              unsigned long amount) {
-  CXTUResourceUsageEntry entry = { k, amount };
-  entries.push_back(entry);
-}
-
-extern "C" {
-
-const char *clang_getTUResourceUsageName(CXTUResourceUsageKind kind) {
-  const char *str = "";
-  switch (kind) {
-    case CXTUResourceUsage_AST:
-      str = "ASTContext: expressions, declarations, and types"; 
-      break;
-    case CXTUResourceUsage_Identifiers:
-      str = "ASTContext: identifiers";
-      break;
-    case CXTUResourceUsage_Selectors:
-      str = "ASTContext: selectors";
-      break;
-    case CXTUResourceUsage_GlobalCompletionResults:
-      str = "Code completion: cached global results";
-      break;
-    case CXTUResourceUsage_SourceManagerContentCache:
-      str = "SourceManager: content cache allocator";
-      break;
-    case CXTUResourceUsage_AST_SideTables:
-      str = "ASTContext: side tables";
-      break;
-    case CXTUResourceUsage_SourceManager_Membuffer_Malloc:
-      str = "SourceManager: malloc'ed memory buffers";
-      break;
-    case CXTUResourceUsage_SourceManager_Membuffer_MMap:
-      str = "SourceManager: mmap'ed memory buffers";
-      break;
-    case CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc:
-      str = "ExternalASTSource: malloc'ed memory buffers";
-      break;
-    case CXTUResourceUsage_ExternalASTSource_Membuffer_MMap:
-      str = "ExternalASTSource: mmap'ed memory buffers";
-      break;
-    case CXTUResourceUsage_Preprocessor:
-      str = "Preprocessor: malloc'ed memory";
-      break;
-    case CXTUResourceUsage_PreprocessingRecord:
-      str = "Preprocessor: PreprocessingRecord";
-      break;
-    case CXTUResourceUsage_SourceManager_DataStructures:
-      str = "SourceManager: data structures and tables";
-      break;
-    case CXTUResourceUsage_Preprocessor_HeaderSearch:
-      str = "Preprocessor: header search tables";
-      break;
-  }
-  return str;
-}
-
-CXTUResourceUsage clang_getCXTUResourceUsage(CXTranslationUnit TU) {
-  if (!TU) {
-    CXTUResourceUsage usage = { (void*) 0, 0, 0 };
-    return usage;
-  }
-  
-  ASTUnit *astUnit = cxtu::getASTUnit(TU);
-  OwningPtr<MemUsageEntries> entries(new MemUsageEntries());
-  ASTContext &astContext = astUnit->getASTContext();
-  
-  // How much memory is used by AST nodes and types?
-  createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_AST,
-    (unsigned long) astContext.getASTAllocatedMemory());
-
-  // How much memory is used by identifiers?
-  createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_Identifiers,
-    (unsigned long) astContext.Idents.getAllocator().getTotalMemory());
-
-  // How much memory is used for selectors?
-  createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_Selectors,
-    (unsigned long) astContext.Selectors.getTotalMemory());
-  
-  // How much memory is used by ASTContext's side tables?
-  createCXTUResourceUsageEntry(*entries, CXTUResourceUsage_AST_SideTables,
-    (unsigned long) astContext.getSideTableAllocatedMemory());
-  
-  // How much memory is used for caching global code completion results?
-  unsigned long completionBytes = 0;
-  if (GlobalCodeCompletionAllocator *completionAllocator =
-      astUnit->getCachedCompletionAllocator().getPtr()) {
-    completionBytes = completionAllocator->getTotalMemory();
-  }
-  createCXTUResourceUsageEntry(*entries,
-                               CXTUResourceUsage_GlobalCompletionResults,
-                               completionBytes);
-  
-  // How much memory is being used by SourceManager's content cache?
-  createCXTUResourceUsageEntry(*entries,
-          CXTUResourceUsage_SourceManagerContentCache,
-          (unsigned long) astContext.getSourceManager().getContentCacheSize());
-  
-  // How much memory is being used by the MemoryBuffer's in SourceManager?
-  const SourceManager::MemoryBufferSizes &srcBufs =
-    astUnit->getSourceManager().getMemoryBufferSizes();
-  
-  createCXTUResourceUsageEntry(*entries,
-                               CXTUResourceUsage_SourceManager_Membuffer_Malloc,
-                               (unsigned long) srcBufs.malloc_bytes);
-  createCXTUResourceUsageEntry(*entries,
-                               CXTUResourceUsage_SourceManager_Membuffer_MMap,
-                               (unsigned long) srcBufs.mmap_bytes);
-  createCXTUResourceUsageEntry(*entries,
-                               CXTUResourceUsage_SourceManager_DataStructures,
-                               (unsigned long) astContext.getSourceManager()
-                                .getDataStructureSizes());
-  
-  // How much memory is being used by the ExternalASTSource?
-  if (ExternalASTSource *esrc = astContext.getExternalSource()) {
-    const ExternalASTSource::MemoryBufferSizes &sizes =
-      esrc->getMemoryBufferSizes();
-    
-    createCXTUResourceUsageEntry(*entries,
-      CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc,
-                                 (unsigned long) sizes.malloc_bytes);
-    createCXTUResourceUsageEntry(*entries,
-      CXTUResourceUsage_ExternalASTSource_Membuffer_MMap,
-                                 (unsigned long) sizes.mmap_bytes);
-  }
-  
-  // How much memory is being used by the Preprocessor?
-  Preprocessor &pp = astUnit->getPreprocessor();
-  createCXTUResourceUsageEntry(*entries,
-                               CXTUResourceUsage_Preprocessor,
-                               pp.getTotalMemory());
-  
-  if (PreprocessingRecord *pRec = pp.getPreprocessingRecord()) {
-    createCXTUResourceUsageEntry(*entries,
-                                 CXTUResourceUsage_PreprocessingRecord,
-                                 pRec->getTotalMemory());    
-  }
-  
-  createCXTUResourceUsageEntry(*entries,
-                               CXTUResourceUsage_Preprocessor_HeaderSearch,
-                               pp.getHeaderSearchInfo().getTotalMemory());
-  
-  CXTUResourceUsage usage = { (void*) entries.get(),
-                            (unsigned) entries->size(),
-                            entries->size() ? &(*entries)[0] : 0 };
-  entries.take();
-  return usage;
-}
-
-void clang_disposeCXTUResourceUsage(CXTUResourceUsage usage) {
-  if (usage.data)
-    delete (MemUsageEntries*) usage.data;
-}
-
-} // end extern "C"
-
-void clang::PrintLibclangResourceUsage(CXTranslationUnit TU) {
-  CXTUResourceUsage Usage = clang_getCXTUResourceUsage(TU);
-  for (unsigned I = 0; I != Usage.numEntries; ++I)
-    fprintf(stderr, "  %s: %lu\n", 
-            clang_getTUResourceUsageName(Usage.entries[I].kind),
-            Usage.entries[I].amount);
-  
-  clang_disposeCXTUResourceUsage(Usage);
-}
-
-//===----------------------------------------------------------------------===//
-// Misc. utility functions.
-//===----------------------------------------------------------------------===//
-
-/// Default to using an 8 MB stack size on "safety" threads.
-static unsigned SafetyStackThreadSize = 8 << 20;
-
-namespace clang {
-
-bool RunSafely(llvm::CrashRecoveryContext &CRC,
-               void (*Fn)(void*), void *UserData,
-               unsigned Size) {
-  if (!Size)
-    Size = GetSafetyThreadStackSize();
-  if (Size)
-    return CRC.RunSafelyOnThread(Fn, UserData, Size);
-  return CRC.RunSafely(Fn, UserData);
-}
-
-unsigned GetSafetyThreadStackSize() {
-  return SafetyStackThreadSize;
-}
-
-void SetSafetyThreadStackSize(unsigned Value) {
-  SafetyStackThreadSize = Value;
-}
-
-}
-
-void clang::setThreadBackgroundPriority() {
-  if (getenv("LIBCLANG_BGPRIO_DISABLE"))
-    return;
-
-  // FIXME: Move to llvm/Support and make it cross-platform.
-#ifdef __APPLE__
-  setpriority(PRIO_DARWIN_THREAD, 0, PRIO_DARWIN_BG);
-#endif
-}
-
-void cxindex::printDiagsToStderr(ASTUnit *Unit) {
-  if (!Unit)
-    return;
-
-  for (ASTUnit::stored_diag_iterator D = Unit->stored_diag_begin(), 
-                                  DEnd = Unit->stored_diag_end();
-       D != DEnd; ++D) {
-    CXStoredDiagnostic Diag(*D, Unit->getASTContext().getLangOpts());
-    CXString Msg = clang_formatDiagnostic(&Diag,
-                                clang_defaultDiagnosticDisplayOptions());
-    fprintf(stderr, "%s\n", clang_getCString(Msg));
-    clang_disposeString(Msg);
-  }
-#ifdef LLVM_ON_WIN32
-  // On Windows, force a flush, since there may be multiple copies of
-  // stderr and stdout in the file system, all with different buffers
-  // but writing to the same device.
-  fflush(stderr);
-#endif
-}
-
-MacroInfo *cxindex::getMacroInfo(const IdentifierInfo &II,
-                                 SourceLocation MacroDefLoc,
-                                 CXTranslationUnit TU){
-  if (MacroDefLoc.isInvalid() || !TU)
-    return 0;
-  if (!II.hadMacroDefinition())
-    return 0;
-
-  ASTUnit *Unit = cxtu::getASTUnit(TU);
-  Preprocessor &PP = Unit->getPreprocessor();
-  MacroDirective *MD = PP.getMacroDirectiveHistory(&II);
-  if (MD) {
-    for (MacroDirective::DefInfo
-           Def = MD->getDefinition(); Def; Def = Def.getPreviousDefinition()) {
-      if (MacroDefLoc == Def.getMacroInfo()->getDefinitionLoc())
-        return Def.getMacroInfo();
-    }
-  }
-
-  return 0;
-}
-
-const MacroInfo *cxindex::getMacroInfo(const MacroDefinition *MacroDef,
-                                       CXTranslationUnit TU) {
-  if (!MacroDef || !TU)
-    return 0;
-  const IdentifierInfo *II = MacroDef->getName();
-  if (!II)
-    return 0;
-
-  return getMacroInfo(*II, MacroDef->getLocation(), TU);
-}
-
-MacroDefinition *cxindex::checkForMacroInMacroDefinition(const MacroInfo *MI,
-                                                         const Token &Tok,
-                                                         CXTranslationUnit TU) {
-  if (!MI || !TU)
-    return 0;
-  if (Tok.isNot(tok::raw_identifier))
-    return 0;
-
-  if (MI->getNumTokens() == 0)
-    return 0;
-  SourceRange DefRange(MI->getReplacementToken(0).getLocation(),
-                       MI->getDefinitionEndLoc());
-  ASTUnit *Unit = cxtu::getASTUnit(TU);
-
-  // Check that the token is inside the definition and not its argument list.
-  SourceManager &SM = Unit->getSourceManager();
-  if (SM.isBeforeInTranslationUnit(Tok.getLocation(), DefRange.getBegin()))
-    return 0;
-  if (SM.isBeforeInTranslationUnit(DefRange.getEnd(), Tok.getLocation()))
-    return 0;
-
-  Preprocessor &PP = Unit->getPreprocessor();
-  PreprocessingRecord *PPRec = PP.getPreprocessingRecord();
-  if (!PPRec)
-    return 0;
-
-  StringRef Name(Tok.getRawIdentifierData(), Tok.getLength());
-  IdentifierInfo &II = PP.getIdentifierTable().get(Name);
-  if (!II.hadMacroDefinition())
-    return 0;
-
-  // Check that the identifier is not one of the macro arguments.
-  if (std::find(MI->arg_begin(), MI->arg_end(), &II) != MI->arg_end())
-    return 0;
-
-  MacroDirective *InnerMD = PP.getMacroDirectiveHistory(&II);
-  if (!InnerMD)
-    return 0;
-
-  return PPRec->findMacroDefinition(InnerMD->getMacroInfo());
-}
-
-MacroDefinition *cxindex::checkForMacroInMacroDefinition(const MacroInfo *MI,
-                                                         SourceLocation Loc,
-                                                         CXTranslationUnit TU) {
-  if (Loc.isInvalid() || !MI || !TU)
-    return 0;
-
-  if (MI->getNumTokens() == 0)
-    return 0;
-  ASTUnit *Unit = cxtu::getASTUnit(TU);
-  Preprocessor &PP = Unit->getPreprocessor();
-  if (!PP.getPreprocessingRecord())
-    return 0;
-  Loc = Unit->getSourceManager().getSpellingLoc(Loc);
-  Token Tok;
-  if (PP.getRawToken(Loc, Tok))
-    return 0;
-
-  return checkForMacroInMacroDefinition(MI, Tok, TU);
-}
-
-extern "C" {
-
-CXString clang_getClangVersion() {
-  return cxstring::createDup(getClangFullVersion());
-}
-
-} // end: extern "C"
-
-Logger &cxindex::Logger::operator<<(CXTranslationUnit TU) {
-  if (TU) {
-    if (ASTUnit *Unit = cxtu::getASTUnit(TU)) {
-      LogOS << '<' << Unit->getMainFileName() << '>';
-      if (Unit->isMainFileAST())
-        LogOS << " (" << Unit->getASTFileName() << ')';
-      return *this;
-    }
-  }
-
-  LogOS << "<NULL TU>";
-  return *this;
-}
-
-Logger &cxindex::Logger::operator<<(const FileEntry *FE) {
-  *this << FE->getName();
-  return *this;
-}
-
-Logger &cxindex::Logger::operator<<(CXCursor cursor) {
-  CXString cursorName = clang_getCursorDisplayName(cursor);
-  *this << cursorName << "@" << clang_getCursorLocation(cursor);
-  clang_disposeString(cursorName);
-  return *this;
-}
-
-Logger &cxindex::Logger::operator<<(CXSourceLocation Loc) {
-  CXFile File;
-  unsigned Line, Column;
-  clang_getFileLocation(Loc, &File, &Line, &Column, 0);
-  CXString FileName = clang_getFileName(File);
-  *this << llvm::format("(%s:%d:%d)", clang_getCString(FileName), Line, Column);
-  clang_disposeString(FileName);
-  return *this;
-}
-
-Logger &cxindex::Logger::operator<<(CXSourceRange range) {
-  CXSourceLocation BLoc = clang_getRangeStart(range);
-  CXSourceLocation ELoc = clang_getRangeEnd(range);
-
-  CXFile BFile;
-  unsigned BLine, BColumn;
-  clang_getFileLocation(BLoc, &BFile, &BLine, &BColumn, 0);
-
-  CXFile EFile;
-  unsigned ELine, EColumn;
-  clang_getFileLocation(ELoc, &EFile, &ELine, &EColumn, 0);
-
-  CXString BFileName = clang_getFileName(BFile);
-  if (BFile == EFile) {
-    *this << llvm::format("[%s %d:%d-%d:%d]", clang_getCString(BFileName),
-                         BLine, BColumn, ELine, EColumn);
-  } else {
-    CXString EFileName = clang_getFileName(EFile);
-    *this << llvm::format("[%s:%d:%d - ", clang_getCString(BFileName),
-                          BLine, BColumn)
-          << llvm::format("%s:%d:%d]", clang_getCString(EFileName),
-                          ELine, EColumn);
-    clang_disposeString(EFileName);
-  }
-  clang_disposeString(BFileName);
-  return *this;
-}
-
-Logger &cxindex::Logger::operator<<(CXString Str) {
-  *this << clang_getCString(Str);
-  return *this;
-}
-
-Logger &cxindex::Logger::operator<<(const llvm::format_object_base &Fmt) {
-  LogOS << Fmt;
-  return *this;
-}
-
-cxindex::Logger::~Logger() {
-  LogOS.flush();
-
-  llvm::sys::ScopedLock L(EnableMultithreadingMutex);
-
-  static llvm::TimeRecord sBeginTR = llvm::TimeRecord::getCurrentTime();
-
-  raw_ostream &OS = llvm::errs();
-  OS << "[libclang:" << Name << ':';
-
-  // FIXME: Portability.
-#if HAVE_PTHREAD_H && __APPLE__
-  mach_port_t tid = pthread_mach_thread_np(pthread_self());
-  OS << tid << ':';
-#endif
-
-  llvm::TimeRecord TR = llvm::TimeRecord::getCurrentTime();
-  OS << llvm::format("%7.4f] ", TR.getWallTime() - sBeginTR.getWallTime());
-  OS << Msg.str() << '\n';
-
-  if (Trace) {
-    llvm::sys::PrintStackTrace(stderr);
-    OS << "--------------------------------------------------\n";
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexCXX.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexCXX.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexCXX.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,127 +0,0 @@
-//===- CIndexCXX.cpp - Clang-C Source Indexing Library --------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the libclang support for C++ cursors.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CIndexer.h"
-#include "CXCursor.h"
-#include "CXType.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclTemplate.h"
-
-using namespace clang;
-using namespace clang::cxcursor;
-
-extern "C" {
-
-unsigned clang_isVirtualBase(CXCursor C) {
-  if (C.kind != CXCursor_CXXBaseSpecifier)
-    return 0;
-  
-  const CXXBaseSpecifier *B = getCursorCXXBaseSpecifier(C);
-  return B->isVirtual();
-}
-
-enum CX_CXXAccessSpecifier clang_getCXXAccessSpecifier(CXCursor C) {
-  AccessSpecifier spec = AS_none;
-
-  if (C.kind == CXCursor_CXXAccessSpecifier || clang_isDeclaration(C.kind))
-    spec = getCursorDecl(C)->getAccess();
-  else if (C.kind == CXCursor_CXXBaseSpecifier)
-    spec = getCursorCXXBaseSpecifier(C)->getAccessSpecifier();
-  else
-    return CX_CXXInvalidAccessSpecifier;
-  
-  switch (spec) {
-    case AS_public: return CX_CXXPublic;
-    case AS_protected: return CX_CXXProtected;
-    case AS_private: return CX_CXXPrivate;
-    case AS_none: return CX_CXXInvalidAccessSpecifier;
-  }
-
-  llvm_unreachable("Invalid AccessSpecifier!");
-}
-
-enum CXCursorKind clang_getTemplateCursorKind(CXCursor C) {
-  using namespace clang::cxcursor;
-  
-  switch (C.kind) {
-  case CXCursor_ClassTemplate: 
-  case CXCursor_FunctionTemplate:
-    if (const TemplateDecl *Template
-                           = dyn_cast_or_null<TemplateDecl>(getCursorDecl(C)))
-      return MakeCXCursor(Template->getTemplatedDecl(), getCursorTU(C)).kind;
-    break;
-      
-  case CXCursor_ClassTemplatePartialSpecialization:
-    if (const ClassTemplateSpecializationDecl *PartialSpec
-          = dyn_cast_or_null<ClassTemplatePartialSpecializationDecl>(
-                                                            getCursorDecl(C))) {
-      switch (PartialSpec->getTagKind()) {
-      case TTK_Interface:
-      case TTK_Struct: return CXCursor_StructDecl;
-      case TTK_Class: return CXCursor_ClassDecl;
-      case TTK_Union: return CXCursor_UnionDecl;
-      case TTK_Enum: return CXCursor_NoDeclFound;
-      }
-    }
-    break;
-      
-  default:
-    break;
-  }
-  
-  return CXCursor_NoDeclFound;
-}
-
-CXCursor clang_getSpecializedCursorTemplate(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return clang_getNullCursor();
-    
-  const Decl *D = getCursorDecl(C);
-  if (!D)
-    return clang_getNullCursor();
-  
-  Decl *Template = 0;
-  if (const CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(D)) {
-    if (const ClassTemplatePartialSpecializationDecl *PartialSpec
-          = dyn_cast<ClassTemplatePartialSpecializationDecl>(CXXRecord))
-      Template = PartialSpec->getSpecializedTemplate();
-    else if (const ClassTemplateSpecializationDecl *ClassSpec 
-               = dyn_cast<ClassTemplateSpecializationDecl>(CXXRecord)) {
-      llvm::PointerUnion<ClassTemplateDecl *,
-                         ClassTemplatePartialSpecializationDecl *> Result
-        = ClassSpec->getSpecializedTemplateOrPartial();
-      if (Result.is<ClassTemplateDecl *>())
-        Template = Result.get<ClassTemplateDecl *>();
-      else
-        Template = Result.get<ClassTemplatePartialSpecializationDecl *>();
-      
-    } else 
-      Template = CXXRecord->getInstantiatedFromMemberClass();
-  } else if (const FunctionDecl *Function = dyn_cast<FunctionDecl>(D)) {
-    Template = Function->getPrimaryTemplate();
-    if (!Template)
-      Template = Function->getInstantiatedFromMemberFunction();
-  } else if (const VarDecl *Var = dyn_cast<VarDecl>(D)) {
-    if (Var->isStaticDataMember())
-      Template = Var->getInstantiatedFromStaticDataMember();
-  } else if (const RedeclarableTemplateDecl *Tmpl
-                                        = dyn_cast<RedeclarableTemplateDecl>(D))
-    Template = Tmpl->getInstantiatedFromMemberTemplate();
-  
-  if (!Template)
-    return clang_getNullCursor();
-  
-  return MakeCXCursor(Template, getCursorTU(C));
-}
-  
-} // end extern "C"

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexCodeCompletion.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexCodeCompletion.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexCodeCompletion.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1002 +0,0 @@
-//===- CIndexCodeCompletion.cpp - Code Completion API hooks ---------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the Clang-C Source Indexing library hooks for
-// code completion.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CIndexer.h"
-#include "CIndexDiagnostic.h"
-#include "CLog.h"
-#include "CXCursor.h"
-#include "CXString.h"
-#include "CXTranslationUnit.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclObjC.h"
-#include "clang/AST/Type.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendDiagnostic.h"
-#include "clang/Sema/CodeCompleteConsumer.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/Support/Atomic.h"
-#include "llvm/Support/CrashRecoveryContext.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/Program.h"
-#include "llvm/Support/Timer.h"
-#include "llvm/Support/raw_ostream.h"
-#include <cstdio>
-#include <cstdlib>
-#include <string>
-
-
-#ifdef UDP_CODE_COMPLETION_LOGGER
-#include "clang/Basic/Version.h"
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-
-using namespace clang;
-using namespace clang::cxindex;
-
-extern "C" {
-
-enum CXCompletionChunkKind
-clang_getCompletionChunkKind(CXCompletionString completion_string,
-                             unsigned chunk_number) {
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  if (!CCStr || chunk_number >= CCStr->size())
-    return CXCompletionChunk_Text;
-
-  switch ((*CCStr)[chunk_number].Kind) {
-  case CodeCompletionString::CK_TypedText:
-    return CXCompletionChunk_TypedText;
-  case CodeCompletionString::CK_Text:
-    return CXCompletionChunk_Text;
-  case CodeCompletionString::CK_Optional:
-    return CXCompletionChunk_Optional;
-  case CodeCompletionString::CK_Placeholder:
-    return CXCompletionChunk_Placeholder;
-  case CodeCompletionString::CK_Informative:
-    return CXCompletionChunk_Informative;
-  case CodeCompletionString::CK_ResultType:
-    return CXCompletionChunk_ResultType;
-  case CodeCompletionString::CK_CurrentParameter:
-    return CXCompletionChunk_CurrentParameter;
-  case CodeCompletionString::CK_LeftParen:
-    return CXCompletionChunk_LeftParen;
-  case CodeCompletionString::CK_RightParen:
-    return CXCompletionChunk_RightParen;
-  case CodeCompletionString::CK_LeftBracket:
-    return CXCompletionChunk_LeftBracket;
-  case CodeCompletionString::CK_RightBracket:
-    return CXCompletionChunk_RightBracket;
-  case CodeCompletionString::CK_LeftBrace:
-    return CXCompletionChunk_LeftBrace;
-  case CodeCompletionString::CK_RightBrace:
-    return CXCompletionChunk_RightBrace;
-  case CodeCompletionString::CK_LeftAngle:
-    return CXCompletionChunk_LeftAngle;
-  case CodeCompletionString::CK_RightAngle:
-    return CXCompletionChunk_RightAngle;
-  case CodeCompletionString::CK_Comma:
-    return CXCompletionChunk_Comma;
-  case CodeCompletionString::CK_Colon:
-    return CXCompletionChunk_Colon;
-  case CodeCompletionString::CK_SemiColon:
-    return CXCompletionChunk_SemiColon;
-  case CodeCompletionString::CK_Equal:
-    return CXCompletionChunk_Equal;
-  case CodeCompletionString::CK_HorizontalSpace:
-    return CXCompletionChunk_HorizontalSpace;
-  case CodeCompletionString::CK_VerticalSpace:
-    return CXCompletionChunk_VerticalSpace;
-  }
-
-  llvm_unreachable("Invalid CompletionKind!");
-}
-
-CXString clang_getCompletionChunkText(CXCompletionString completion_string,
-                                      unsigned chunk_number) {
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  if (!CCStr || chunk_number >= CCStr->size())
-    return cxstring::createNull();
-
-  switch ((*CCStr)[chunk_number].Kind) {
-  case CodeCompletionString::CK_TypedText:
-  case CodeCompletionString::CK_Text:
-  case CodeCompletionString::CK_Placeholder:
-  case CodeCompletionString::CK_CurrentParameter:
-  case CodeCompletionString::CK_Informative:
-  case CodeCompletionString::CK_LeftParen:
-  case CodeCompletionString::CK_RightParen:
-  case CodeCompletionString::CK_LeftBracket:
-  case CodeCompletionString::CK_RightBracket:
-  case CodeCompletionString::CK_LeftBrace:
-  case CodeCompletionString::CK_RightBrace:
-  case CodeCompletionString::CK_LeftAngle:
-  case CodeCompletionString::CK_RightAngle:
-  case CodeCompletionString::CK_Comma:
-  case CodeCompletionString::CK_ResultType:
-  case CodeCompletionString::CK_Colon:
-  case CodeCompletionString::CK_SemiColon:
-  case CodeCompletionString::CK_Equal:
-  case CodeCompletionString::CK_HorizontalSpace:
-  case CodeCompletionString::CK_VerticalSpace:
-    return cxstring::createRef((*CCStr)[chunk_number].Text);
-      
-  case CodeCompletionString::CK_Optional:
-    // Note: treated as an empty text block.
-    return cxstring::createEmpty();
-  }
-
-  llvm_unreachable("Invalid CodeCompletionString Kind!");
-}
-
-
-CXCompletionString
-clang_getCompletionChunkCompletionString(CXCompletionString completion_string,
-                                         unsigned chunk_number) {
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  if (!CCStr || chunk_number >= CCStr->size())
-    return 0;
-
-  switch ((*CCStr)[chunk_number].Kind) {
-  case CodeCompletionString::CK_TypedText:
-  case CodeCompletionString::CK_Text:
-  case CodeCompletionString::CK_Placeholder:
-  case CodeCompletionString::CK_CurrentParameter:
-  case CodeCompletionString::CK_Informative:
-  case CodeCompletionString::CK_LeftParen:
-  case CodeCompletionString::CK_RightParen:
-  case CodeCompletionString::CK_LeftBracket:
-  case CodeCompletionString::CK_RightBracket:
-  case CodeCompletionString::CK_LeftBrace:
-  case CodeCompletionString::CK_RightBrace:
-  case CodeCompletionString::CK_LeftAngle:
-  case CodeCompletionString::CK_RightAngle:
-  case CodeCompletionString::CK_Comma:
-  case CodeCompletionString::CK_ResultType:
-  case CodeCompletionString::CK_Colon:
-  case CodeCompletionString::CK_SemiColon:
-  case CodeCompletionString::CK_Equal:
-  case CodeCompletionString::CK_HorizontalSpace:
-  case CodeCompletionString::CK_VerticalSpace:
-    return 0;
-
-  case CodeCompletionString::CK_Optional:
-    // Note: treated as an empty text block.
-    return (*CCStr)[chunk_number].Optional;
-  }
-
-  llvm_unreachable("Invalid CompletionKind!");
-}
-
-unsigned clang_getNumCompletionChunks(CXCompletionString completion_string) {
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  return CCStr? CCStr->size() : 0;
-}
-
-unsigned clang_getCompletionPriority(CXCompletionString completion_string) {
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  return CCStr? CCStr->getPriority() : unsigned(CCP_Unlikely);
-}
-  
-enum CXAvailabilityKind 
-clang_getCompletionAvailability(CXCompletionString completion_string) {
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  return CCStr? static_cast<CXAvailabilityKind>(CCStr->getAvailability())
-              : CXAvailability_Available;
-}
-
-unsigned clang_getCompletionNumAnnotations(CXCompletionString completion_string)
-{
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  return CCStr ? CCStr->getAnnotationCount() : 0;
-}
-
-CXString clang_getCompletionAnnotation(CXCompletionString completion_string,
-                                       unsigned annotation_number) {
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  return CCStr ? cxstring::createRef(CCStr->getAnnotation(annotation_number))
-               : cxstring::createNull();
-}
-
-CXString
-clang_getCompletionParent(CXCompletionString completion_string,
-                          CXCursorKind *kind) {
-  if (kind)
-    *kind = CXCursor_NotImplemented;
-  
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-  if (!CCStr)
-    return cxstring::createNull();
-  
-  return cxstring::createRef(CCStr->getParentContextName());
-}
-
-CXString
-clang_getCompletionBriefComment(CXCompletionString completion_string) {
-  CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
-
-  if (!CCStr)
-    return cxstring::createNull();
-
-  return cxstring::createRef(CCStr->getBriefComment());
-}
-
-namespace {
-
-/// \brief The CXCodeCompleteResults structure we allocate internally;
-/// the client only sees the initial CXCodeCompleteResults structure.
-///
-/// Normally, clients of CXString shouldn't care whether or not a CXString is
-/// managed by a pool or by explicitly malloc'ed memory.  But
-/// AllocatedCXCodeCompleteResults outlives the CXTranslationUnit, so we can
-/// not rely on the StringPool in the TU.
-struct AllocatedCXCodeCompleteResults : public CXCodeCompleteResults {
-  AllocatedCXCodeCompleteResults(const FileSystemOptions& FileSystemOpts);
-  ~AllocatedCXCodeCompleteResults();
-  
-  /// \brief Diagnostics produced while performing code completion.
-  SmallVector<StoredDiagnostic, 8> Diagnostics;
-
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
-  
-  /// \brief Diag object
-  IntrusiveRefCntPtr<DiagnosticsEngine> Diag;
-  
-  /// \brief Language options used to adjust source locations.
-  LangOptions LangOpts;
-
-  FileSystemOptions FileSystemOpts;
-
-  /// \brief File manager, used for diagnostics.
-  IntrusiveRefCntPtr<FileManager> FileMgr;
-
-  /// \brief Source manager, used for diagnostics.
-  IntrusiveRefCntPtr<SourceManager> SourceMgr;
-  
-  /// \brief Temporary files that should be removed once we have finished
-  /// with the code-completion results.
-  std::vector<llvm::sys::Path> TemporaryFiles;
-
-  /// \brief Temporary buffers that will be deleted once we have finished with
-  /// the code-completion results.
-  SmallVector<const llvm::MemoryBuffer *, 1> TemporaryBuffers;
-  
-  /// \brief Allocator used to store globally cached code-completion results.
-  IntrusiveRefCntPtr<clang::GlobalCodeCompletionAllocator>
-    CachedCompletionAllocator;
-  
-  /// \brief Allocator used to store code completion results.
-  IntrusiveRefCntPtr<clang::GlobalCodeCompletionAllocator>
-    CodeCompletionAllocator;
-  
-  /// \brief Context under which completion occurred.
-  enum clang::CodeCompletionContext::Kind ContextKind;
-  
-  /// \brief A bitfield representing the acceptable completions for the
-  /// current context.
-  unsigned long long Contexts;
-  
-  /// \brief The kind of the container for the current context for completions.
-  enum CXCursorKind ContainerKind;
-
-  /// \brief The USR of the container for the current context for completions.
-  std::string ContainerUSR;
-
-  /// \brief a boolean value indicating whether there is complete information
-  /// about the container
-  unsigned ContainerIsIncomplete;
-  
-  /// \brief A string containing the Objective-C selector entered thus far for a
-  /// message send.
-  std::string Selector;
-};
-
-} // end anonymous namespace
-
-/// \brief Tracks the number of code-completion result objects that are 
-/// currently active.
-///
-/// Used for debugging purposes only.
-static llvm::sys::cas_flag CodeCompletionResultObjects;
-  
-AllocatedCXCodeCompleteResults::AllocatedCXCodeCompleteResults(
-                                      const FileSystemOptions& FileSystemOpts)
-  : CXCodeCompleteResults(),
-    DiagOpts(new DiagnosticOptions),
-    Diag(new DiagnosticsEngine(
-                   IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs),
-                   &*DiagOpts)),
-    FileSystemOpts(FileSystemOpts),
-    FileMgr(new FileManager(FileSystemOpts)),
-    SourceMgr(new SourceManager(*Diag, *FileMgr)),
-    CodeCompletionAllocator(new clang::GlobalCodeCompletionAllocator),
-    Contexts(CXCompletionContext_Unknown),
-    ContainerKind(CXCursor_InvalidCode),
-    ContainerIsIncomplete(1)
-{ 
-  if (getenv("LIBCLANG_OBJTRACKING")) {
-    llvm::sys::AtomicIncrement(&CodeCompletionResultObjects);
-    fprintf(stderr, "+++ %d completion results\n", CodeCompletionResultObjects);
-  }    
-}
-  
-AllocatedCXCodeCompleteResults::~AllocatedCXCodeCompleteResults() {
-  delete [] Results;
-
-  for (unsigned I = 0, N = TemporaryFiles.size(); I != N; ++I)
-    TemporaryFiles[I].eraseFromDisk();
-  for (unsigned I = 0, N = TemporaryBuffers.size(); I != N; ++I)
-    delete TemporaryBuffers[I];
-
-  if (getenv("LIBCLANG_OBJTRACKING")) {
-    llvm::sys::AtomicDecrement(&CodeCompletionResultObjects);
-    fprintf(stderr, "--- %d completion results\n", CodeCompletionResultObjects);
-  }    
-}
-  
-} // end extern "C"
-
-static unsigned long long getContextsForContextKind(
-                                          enum CodeCompletionContext::Kind kind, 
-                                                    Sema &S) {
-  unsigned long long contexts = 0;
-  switch (kind) {
-    case CodeCompletionContext::CCC_OtherWithMacros: {
-      //We can allow macros here, but we don't know what else is permissible
-      //So we'll say the only thing permissible are macros
-      contexts = CXCompletionContext_MacroName;
-      break;
-    }
-    case CodeCompletionContext::CCC_TopLevel:
-    case CodeCompletionContext::CCC_ObjCIvarList:
-    case CodeCompletionContext::CCC_ClassStructUnion:
-    case CodeCompletionContext::CCC_Type: {
-      contexts = CXCompletionContext_AnyType | 
-                 CXCompletionContext_ObjCInterface;
-      if (S.getLangOpts().CPlusPlus) {
-        contexts |= CXCompletionContext_EnumTag |
-                    CXCompletionContext_UnionTag |
-                    CXCompletionContext_StructTag |
-                    CXCompletionContext_ClassTag |
-                    CXCompletionContext_NestedNameSpecifier;
-      }
-      break;
-    }
-    case CodeCompletionContext::CCC_Statement: {
-      contexts = CXCompletionContext_AnyType |
-                 CXCompletionContext_ObjCInterface |
-                 CXCompletionContext_AnyValue;
-      if (S.getLangOpts().CPlusPlus) {
-        contexts |= CXCompletionContext_EnumTag |
-                    CXCompletionContext_UnionTag |
-                    CXCompletionContext_StructTag |
-                    CXCompletionContext_ClassTag |
-                    CXCompletionContext_NestedNameSpecifier;
-      }
-      break;
-    }
-    case CodeCompletionContext::CCC_Expression: {
-      contexts = CXCompletionContext_AnyValue;
-      if (S.getLangOpts().CPlusPlus) {
-        contexts |= CXCompletionContext_AnyType |
-                    CXCompletionContext_ObjCInterface |
-                    CXCompletionContext_EnumTag |
-                    CXCompletionContext_UnionTag |
-                    CXCompletionContext_StructTag |
-                    CXCompletionContext_ClassTag |
-                    CXCompletionContext_NestedNameSpecifier;
-      }
-      break;
-    }
-    case CodeCompletionContext::CCC_ObjCMessageReceiver: {
-      contexts = CXCompletionContext_ObjCObjectValue |
-                 CXCompletionContext_ObjCSelectorValue |
-                 CXCompletionContext_ObjCInterface;
-      if (S.getLangOpts().CPlusPlus) {
-        contexts |= CXCompletionContext_CXXClassTypeValue |
-                    CXCompletionContext_AnyType |
-                    CXCompletionContext_EnumTag |
-                    CXCompletionContext_UnionTag |
-                    CXCompletionContext_StructTag |
-                    CXCompletionContext_ClassTag |
-                    CXCompletionContext_NestedNameSpecifier;
-      }
-      break;
-    }
-    case CodeCompletionContext::CCC_DotMemberAccess: {
-      contexts = CXCompletionContext_DotMemberAccess;
-      break;
-    }
-    case CodeCompletionContext::CCC_ArrowMemberAccess: {
-      contexts = CXCompletionContext_ArrowMemberAccess;
-      break;
-    }
-    case CodeCompletionContext::CCC_ObjCPropertyAccess: {
-      contexts = CXCompletionContext_ObjCPropertyAccess;
-      break;
-    }
-    case CodeCompletionContext::CCC_EnumTag: {
-      contexts = CXCompletionContext_EnumTag |
-                 CXCompletionContext_NestedNameSpecifier;
-      break;
-    }
-    case CodeCompletionContext::CCC_UnionTag: {
-      contexts = CXCompletionContext_UnionTag |
-                 CXCompletionContext_NestedNameSpecifier;
-      break;
-    }
-    case CodeCompletionContext::CCC_ClassOrStructTag: {
-      contexts = CXCompletionContext_StructTag |
-                 CXCompletionContext_ClassTag |
-                 CXCompletionContext_NestedNameSpecifier;
-      break;
-    }
-    case CodeCompletionContext::CCC_ObjCProtocolName: {
-      contexts = CXCompletionContext_ObjCProtocol;
-      break;
-    }
-    case CodeCompletionContext::CCC_Namespace: {
-      contexts = CXCompletionContext_Namespace;
-      break;
-    }
-    case CodeCompletionContext::CCC_PotentiallyQualifiedName: {
-      contexts = CXCompletionContext_NestedNameSpecifier;
-      break;
-    }
-    case CodeCompletionContext::CCC_MacroNameUse: {
-      contexts = CXCompletionContext_MacroName;
-      break;
-    }
-    case CodeCompletionContext::CCC_NaturalLanguage: {
-      contexts = CXCompletionContext_NaturalLanguage;
-      break;
-    }
-    case CodeCompletionContext::CCC_SelectorName: {
-      contexts = CXCompletionContext_ObjCSelectorName;
-      break;
-    }
-    case CodeCompletionContext::CCC_ParenthesizedExpression: {
-      contexts = CXCompletionContext_AnyType |
-                 CXCompletionContext_ObjCInterface |
-                 CXCompletionContext_AnyValue;
-      if (S.getLangOpts().CPlusPlus) {
-        contexts |= CXCompletionContext_EnumTag |
-                    CXCompletionContext_UnionTag |
-                    CXCompletionContext_StructTag |
-                    CXCompletionContext_ClassTag |
-                    CXCompletionContext_NestedNameSpecifier;
-      }
-      break;
-    }
-    case CodeCompletionContext::CCC_ObjCInstanceMessage: {
-      contexts = CXCompletionContext_ObjCInstanceMessage;
-      break;
-    }
-    case CodeCompletionContext::CCC_ObjCClassMessage: {
-      contexts = CXCompletionContext_ObjCClassMessage;
-      break;
-    }
-    case CodeCompletionContext::CCC_ObjCInterfaceName: {
-      contexts = CXCompletionContext_ObjCInterface;
-      break;
-    }
-    case CodeCompletionContext::CCC_ObjCCategoryName: {
-      contexts = CXCompletionContext_ObjCCategory;
-      break;
-    }
-    case CodeCompletionContext::CCC_Other:
-    case CodeCompletionContext::CCC_ObjCInterface:
-    case CodeCompletionContext::CCC_ObjCImplementation:
-    case CodeCompletionContext::CCC_Name:
-    case CodeCompletionContext::CCC_MacroName:
-    case CodeCompletionContext::CCC_PreprocessorExpression:
-    case CodeCompletionContext::CCC_PreprocessorDirective:
-    case CodeCompletionContext::CCC_TypeQualifiers: {
-      //Only Clang results should be accepted, so we'll set all of the other
-      //context bits to 0 (i.e. the empty set)
-      contexts = CXCompletionContext_Unexposed;
-      break;
-    }
-    case CodeCompletionContext::CCC_Recovery: {
-      //We don't know what the current context is, so we'll return unknown
-      //This is the equivalent of setting all of the other context bits
-      contexts = CXCompletionContext_Unknown;
-      break;
-    }
-  }
-  return contexts;
-}
-
-namespace {
-  class CaptureCompletionResults : public CodeCompleteConsumer {
-    AllocatedCXCodeCompleteResults &AllocatedResults;
-    CodeCompletionTUInfo CCTUInfo;
-    SmallVector<CXCompletionResult, 16> StoredResults;
-    CXTranslationUnit *TU;
-  public:
-    CaptureCompletionResults(const CodeCompleteOptions &Opts,
-                             AllocatedCXCodeCompleteResults &Results,
-                             CXTranslationUnit *TranslationUnit)
-      : CodeCompleteConsumer(Opts, false), 
-        AllocatedResults(Results), CCTUInfo(Results.CodeCompletionAllocator),
-        TU(TranslationUnit) { }
-    ~CaptureCompletionResults() { Finish(); }
-    
-    virtual void ProcessCodeCompleteResults(Sema &S, 
-                                            CodeCompletionContext Context,
-                                            CodeCompletionResult *Results,
-                                            unsigned NumResults) {
-      StoredResults.reserve(StoredResults.size() + NumResults);
-      for (unsigned I = 0; I != NumResults; ++I) {
-        CodeCompletionString *StoredCompletion        
-          = Results[I].CreateCodeCompletionString(S, getAllocator(),
-                                                  getCodeCompletionTUInfo(),
-                                                  includeBriefComments());
-        
-        CXCompletionResult R;
-        R.CursorKind = Results[I].CursorKind;
-        R.CompletionString = StoredCompletion;
-        StoredResults.push_back(R);
-      }
-      
-      enum CodeCompletionContext::Kind contextKind = Context.getKind();
-      
-      AllocatedResults.ContextKind = contextKind;
-      AllocatedResults.Contexts = getContextsForContextKind(contextKind, S);
-      
-      AllocatedResults.Selector = "";
-      if (Context.getNumSelIdents() > 0) {
-        for (unsigned i = 0; i < Context.getNumSelIdents(); i++) {
-          IdentifierInfo *selIdent = Context.getSelIdents()[i];
-          if (selIdent != NULL) {
-            StringRef selectorString = Context.getSelIdents()[i]->getName();
-            AllocatedResults.Selector += selectorString;
-          }
-          AllocatedResults.Selector += ":";
-        }
-      }
-      
-      QualType baseType = Context.getBaseType();
-      NamedDecl *D = NULL;
-      
-      if (!baseType.isNull()) {
-        // Get the declaration for a class/struct/union/enum type
-        if (const TagType *Tag = baseType->getAs<TagType>())
-          D = Tag->getDecl();
-        // Get the @interface declaration for a (possibly-qualified) Objective-C
-        // object pointer type, e.g., NSString*
-        else if (const ObjCObjectPointerType *ObjPtr = 
-                 baseType->getAs<ObjCObjectPointerType>())
-          D = ObjPtr->getInterfaceDecl();
-        // Get the @interface declaration for an Objective-C object type
-        else if (const ObjCObjectType *Obj = baseType->getAs<ObjCObjectType>())
-          D = Obj->getInterface();
-        // Get the class for a C++ injected-class-name
-        else if (const InjectedClassNameType *Injected =
-                 baseType->getAs<InjectedClassNameType>())
-          D = Injected->getDecl();
-      }
-      
-      if (D != NULL) {
-        CXCursor cursor = cxcursor::MakeCXCursor(D, *TU);
-
-        AllocatedResults.ContainerKind = clang_getCursorKind(cursor);
-
-        CXString CursorUSR = clang_getCursorUSR(cursor);
-        AllocatedResults.ContainerUSR = clang_getCString(CursorUSR);
-        clang_disposeString(CursorUSR);
-
-        const Type *type = baseType.getTypePtrOrNull();
-        if (type != NULL) {
-          AllocatedResults.ContainerIsIncomplete = type->isIncompleteType();
-        }
-        else {
-          AllocatedResults.ContainerIsIncomplete = 1;
-        }
-      }
-      else {
-        AllocatedResults.ContainerKind = CXCursor_InvalidCode;
-        AllocatedResults.ContainerUSR.clear();
-        AllocatedResults.ContainerIsIncomplete = 1;
-      }
-    }
-    
-    virtual void ProcessOverloadCandidates(Sema &S, unsigned CurrentArg,
-                                           OverloadCandidate *Candidates,
-                                           unsigned NumCandidates) {
-      StoredResults.reserve(StoredResults.size() + NumCandidates);
-      for (unsigned I = 0; I != NumCandidates; ++I) {
-        CodeCompletionString *StoredCompletion
-          = Candidates[I].CreateSignatureString(CurrentArg, S, getAllocator(),
-                                                getCodeCompletionTUInfo());
-        
-        CXCompletionResult R;
-        R.CursorKind = CXCursor_NotImplemented;
-        R.CompletionString = StoredCompletion;
-        StoredResults.push_back(R);
-      }
-    }
-    
-    virtual CodeCompletionAllocator &getAllocator() { 
-      return *AllocatedResults.CodeCompletionAllocator;
-    }
-
-    virtual CodeCompletionTUInfo &getCodeCompletionTUInfo() { return CCTUInfo; }
-    
-  private:
-    void Finish() {
-      AllocatedResults.Results = new CXCompletionResult [StoredResults.size()];
-      AllocatedResults.NumResults = StoredResults.size();
-      std::memcpy(AllocatedResults.Results, StoredResults.data(), 
-                  StoredResults.size() * sizeof(CXCompletionResult));
-      StoredResults.clear();
-    }
-  };
-}
-
-extern "C" {
-struct CodeCompleteAtInfo {
-  CXTranslationUnit TU;
-  const char *complete_filename;
-  unsigned complete_line;
-  unsigned complete_column;
-  struct CXUnsavedFile *unsaved_files;
-  unsigned num_unsaved_files;
-  unsigned options;
-  CXCodeCompleteResults *result;
-};
-void clang_codeCompleteAt_Impl(void *UserData) {
-  CodeCompleteAtInfo *CCAI = static_cast<CodeCompleteAtInfo*>(UserData);
-  CXTranslationUnit TU = CCAI->TU;
-  const char *complete_filename = CCAI->complete_filename;
-  unsigned complete_line = CCAI->complete_line;
-  unsigned complete_column = CCAI->complete_column;
-  struct CXUnsavedFile *unsaved_files = CCAI->unsaved_files;
-  unsigned num_unsaved_files = CCAI->num_unsaved_files;
-  unsigned options = CCAI->options;
-  bool IncludeBriefComments = options & CXCodeComplete_IncludeBriefComments;
-  CCAI->result = 0;
-
-#ifdef UDP_CODE_COMPLETION_LOGGER
-#ifdef UDP_CODE_COMPLETION_LOGGER_PORT
-  const llvm::TimeRecord &StartTime =  llvm::TimeRecord::getCurrentTime();
-#endif
-#endif
-
-  bool EnableLogging = getenv("LIBCLANG_CODE_COMPLETION_LOGGING") != 0;
-  
-  ASTUnit *AST = cxtu::getASTUnit(TU);
-  if (!AST)
-    return;
-
-  CIndexer *CXXIdx = TU->CIdx;
-  if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForEditing))
-    setThreadBackgroundPriority();
-
-  ASTUnit::ConcurrencyCheck Check(*AST);
-
-  // Perform the remapping of source files.
-  SmallVector<ASTUnit::RemappedFile, 4> RemappedFiles;
-  for (unsigned I = 0; I != num_unsaved_files; ++I) {
-    StringRef Data(unsaved_files[I].Contents, unsaved_files[I].Length);
-    const llvm::MemoryBuffer *Buffer
-      = llvm::MemoryBuffer::getMemBufferCopy(Data, unsaved_files[I].Filename);
-    RemappedFiles.push_back(std::make_pair(unsaved_files[I].Filename,
-                                           Buffer));
-  }
-  
-  if (EnableLogging) {
-    // FIXME: Add logging.
-  }
-
-  // Parse the resulting source file to find code-completion results.
-  AllocatedCXCodeCompleteResults *Results = 
-        new AllocatedCXCodeCompleteResults(AST->getFileSystemOpts());
-  Results->Results = 0;
-  Results->NumResults = 0;
-  
-  // Create a code-completion consumer to capture the results.
-  CodeCompleteOptions Opts;
-  Opts.IncludeBriefComments = IncludeBriefComments;
-  CaptureCompletionResults Capture(Opts, *Results, &TU);
-
-  // Perform completion.
-  AST->CodeComplete(complete_filename, complete_line, complete_column,
-                    RemappedFiles.data(), RemappedFiles.size(), 
-                    (options & CXCodeComplete_IncludeMacros),
-                    (options & CXCodeComplete_IncludeCodePatterns),
-                    IncludeBriefComments,
-                    Capture,
-                    *Results->Diag, Results->LangOpts, *Results->SourceMgr,
-                    *Results->FileMgr, Results->Diagnostics,
-                    Results->TemporaryBuffers);
-  
-  // Keep a reference to the allocator used for cached global completions, so
-  // that we can be sure that the memory used by our code completion strings
-  // doesn't get freed due to subsequent reparses (while the code completion
-  // results are still active).
-  Results->CachedCompletionAllocator = AST->getCachedCompletionAllocator();
-
-  
-
-#ifdef UDP_CODE_COMPLETION_LOGGER
-#ifdef UDP_CODE_COMPLETION_LOGGER_PORT
-  const llvm::TimeRecord &EndTime =  llvm::TimeRecord::getCurrentTime();
-  SmallString<256> LogResult;
-  llvm::raw_svector_ostream os(LogResult);
-
-  // Figure out the language and whether or not it uses PCH.
-  const char *lang = 0;
-  bool usesPCH = false;
-
-  for (std::vector<const char*>::iterator I = argv.begin(), E = argv.end();
-       I != E; ++I) {
-    if (*I == 0)
-      continue;
-    if (strcmp(*I, "-x") == 0) {
-      if (I + 1 != E) {
-        lang = *(++I);
-        continue;
-      }
-    }
-    else if (strcmp(*I, "-include") == 0) {
-      if (I+1 != E) {
-        const char *arg = *(++I);
-        SmallString<512> pchName;
-        {
-          llvm::raw_svector_ostream os(pchName);
-          os << arg << ".pth";
-        }
-        pchName.push_back('\0');
-        struct stat stat_results;
-        if (stat(pchName.str().c_str(), &stat_results) == 0)
-          usesPCH = true;
-        continue;
-      }
-    }
-  }
-
-  os << "{ ";
-  os << "\"wall\": " << (EndTime.getWallTime() - StartTime.getWallTime());
-  os << ", \"numRes\": " << Results->NumResults;
-  os << ", \"diags\": " << Results->Diagnostics.size();
-  os << ", \"pch\": " << (usesPCH ? "true" : "false");
-  os << ", \"lang\": \"" << (lang ? lang : "<unknown>") << '"';
-  const char *name = getlogin();
-  os << ", \"user\": \"" << (name ? name : "unknown") << '"';
-  os << ", \"clangVer\": \"" << getClangFullVersion() << '"';
-  os << " }";
-
-  StringRef res = os.str();
-  if (res.size() > 0) {
-    do {
-      // Setup the UDP socket.
-      struct sockaddr_in servaddr;
-      bzero(&servaddr, sizeof(servaddr));
-      servaddr.sin_family = AF_INET;
-      servaddr.sin_port = htons(UDP_CODE_COMPLETION_LOGGER_PORT);
-      if (inet_pton(AF_INET, UDP_CODE_COMPLETION_LOGGER,
-                    &servaddr.sin_addr) <= 0)
-        break;
-
-      int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
-      if (sockfd < 0)
-        break;
-
-      sendto(sockfd, res.data(), res.size(), 0,
-             (struct sockaddr *)&servaddr, sizeof(servaddr));
-      close(sockfd);
-    }
-    while (false);
-  }
-#endif
-#endif
-  CCAI->result = Results;
-}
-CXCodeCompleteResults *clang_codeCompleteAt(CXTranslationUnit TU,
-                                            const char *complete_filename,
-                                            unsigned complete_line,
-                                            unsigned complete_column,
-                                            struct CXUnsavedFile *unsaved_files,
-                                            unsigned num_unsaved_files,
-                                            unsigned options) {
-  LOG_FUNC_SECTION {
-    *Log << TU << ' '
-         << complete_filename << ':' << complete_line << ':' << complete_column;
-  }
-
-  CodeCompleteAtInfo CCAI = { TU, complete_filename, complete_line,
-                              complete_column, unsaved_files, num_unsaved_files,
-                              options, 0 };
-
-  if (getenv("LIBCLANG_NOTHREADS")) {
-    clang_codeCompleteAt_Impl(&CCAI);
-    return CCAI.result;
-  }
-
-  llvm::CrashRecoveryContext CRC;
-
-  if (!RunSafely(CRC, clang_codeCompleteAt_Impl, &CCAI)) {
-    fprintf(stderr, "libclang: crash detected in code completion\n");
-    cxtu::getASTUnit(TU)->setUnsafeToFree(true);
-    return 0;
-  } else if (getenv("LIBCLANG_RESOURCE_USAGE"))
-    PrintLibclangResourceUsage(TU);
-
-  return CCAI.result;
-}
-
-unsigned clang_defaultCodeCompleteOptions(void) {
-  return CXCodeComplete_IncludeMacros;
-}
-
-void clang_disposeCodeCompleteResults(CXCodeCompleteResults *ResultsIn) {
-  if (!ResultsIn)
-    return;
-
-  AllocatedCXCodeCompleteResults *Results
-    = static_cast<AllocatedCXCodeCompleteResults*>(ResultsIn);
-  delete Results;
-}
-  
-unsigned 
-clang_codeCompleteGetNumDiagnostics(CXCodeCompleteResults *ResultsIn) {
-  AllocatedCXCodeCompleteResults *Results
-    = static_cast<AllocatedCXCodeCompleteResults*>(ResultsIn);
-  if (!Results)
-    return 0;
-
-  return Results->Diagnostics.size();
-}
-
-CXDiagnostic 
-clang_codeCompleteGetDiagnostic(CXCodeCompleteResults *ResultsIn,
-                                unsigned Index) {
-  AllocatedCXCodeCompleteResults *Results
-    = static_cast<AllocatedCXCodeCompleteResults*>(ResultsIn);
-  if (!Results || Index >= Results->Diagnostics.size())
-    return 0;
-
-  return new CXStoredDiagnostic(Results->Diagnostics[Index], Results->LangOpts);
-}
-
-unsigned long long
-clang_codeCompleteGetContexts(CXCodeCompleteResults *ResultsIn) {
-  AllocatedCXCodeCompleteResults *Results
-    = static_cast<AllocatedCXCodeCompleteResults*>(ResultsIn);
-  if (!Results)
-    return 0;
-  
-  return Results->Contexts;
-}
-
-enum CXCursorKind clang_codeCompleteGetContainerKind(
-                                               CXCodeCompleteResults *ResultsIn,
-                                                     unsigned *IsIncomplete) {
-  AllocatedCXCodeCompleteResults *Results =
-    static_cast<AllocatedCXCodeCompleteResults *>(ResultsIn);
-  if (!Results)
-    return CXCursor_InvalidCode;
-  
-  if (IsIncomplete != NULL) {
-    *IsIncomplete = Results->ContainerIsIncomplete;
-  }
-  
-  return Results->ContainerKind;
-}
-  
-CXString clang_codeCompleteGetContainerUSR(CXCodeCompleteResults *ResultsIn) {
-  AllocatedCXCodeCompleteResults *Results =
-    static_cast<AllocatedCXCodeCompleteResults *>(ResultsIn);
-  if (!Results)
-    return cxstring::createEmpty();
-
-  return cxstring::createRef(Results->ContainerUSR.c_str());
-}
-
-  
-CXString clang_codeCompleteGetObjCSelector(CXCodeCompleteResults *ResultsIn) {
-  AllocatedCXCodeCompleteResults *Results =
-    static_cast<AllocatedCXCodeCompleteResults *>(ResultsIn);
-  if (!Results)
-    return cxstring::createEmpty();
-  
-  return cxstring::createDup(Results->Selector);
-}
-  
-} // end extern "C"
-
-/// \brief Simple utility function that appends a \p New string to the given
-/// \p Old string, using the \p Buffer for storage.
-///
-/// \param Old The string to which we are appending. This parameter will be
-/// updated to reflect the complete string.
-///
-///
-/// \param New The string to append to \p Old.
-///
-/// \param Buffer A buffer that stores the actual, concatenated string. It will
-/// be used if the old string is already-non-empty.
-static void AppendToString(StringRef &Old, StringRef New,
-                           SmallString<256> &Buffer) {
-  if (Old.empty()) {
-    Old = New;
-    return;
-  }
-  
-  if (Buffer.empty())
-    Buffer.append(Old.begin(), Old.end());
-  Buffer.append(New.begin(), New.end());
-  Old = Buffer.str();
-}
-
-/// \brief Get the typed-text blocks from the given code-completion string
-/// and return them as a single string.
-///
-/// \param String The code-completion string whose typed-text blocks will be
-/// concatenated.
-///
-/// \param Buffer A buffer used for storage of the completed name.
-static StringRef GetTypedName(CodeCompletionString *String,
-                                    SmallString<256> &Buffer) {
-  StringRef Result;
-  for (CodeCompletionString::iterator C = String->begin(), CEnd = String->end();
-       C != CEnd; ++C) {
-    if (C->Kind == CodeCompletionString::CK_TypedText)
-      AppendToString(Result, C->Text, Buffer);
-  }
-  
-  return Result;
-}
-
-namespace {
-  struct OrderCompletionResults {
-    bool operator()(const CXCompletionResult &XR, 
-                    const CXCompletionResult &YR) const {
-      CodeCompletionString *X
-        = (CodeCompletionString *)XR.CompletionString;
-      CodeCompletionString *Y
-        = (CodeCompletionString *)YR.CompletionString;
-      
-      SmallString<256> XBuffer;
-      StringRef XText = GetTypedName(X, XBuffer);
-      SmallString<256> YBuffer;
-      StringRef YText = GetTypedName(Y, YBuffer);
-      
-      if (XText.empty() || YText.empty())
-        return !XText.empty();
-            
-      int result = XText.compare_lower(YText);
-      if (result < 0)
-        return true;
-      if (result > 0)
-        return false;
-      
-      result = XText.compare(YText);
-      return result < 0;
-    }
-  };
-}
-
-extern "C" {
-  void clang_sortCodeCompletionResults(CXCompletionResult *Results,
-                                       unsigned NumResults) {
-    std::stable_sort(Results, Results + NumResults, OrderCompletionResults());
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexDiagnostic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexDiagnostic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexDiagnostic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,467 +0,0 @@
-/*===-- CIndexDiagnostics.cpp - Diagnostics C Interface ---------*- C++ -*-===*\
-|*                                                                            *|
-|*                     The LLVM Compiler Infrastructure                       *|
-|*                                                                            *|
-|* This file is distributed under the University of Illinois Open Source      *|
-|* License. See LICENSE.TXT for details.                                      *|
-|*                                                                            *|
-|*===----------------------------------------------------------------------===*|
-|*                                                                            *|
-|* Implements the diagnostic functions of the Clang C interface.              *|
-|*                                                                            *|
-\*===----------------------------------------------------------------------===*/
-#include "CIndexDiagnostic.h"
-#include "CIndexer.h"
-#include "CXTranslationUnit.h"
-#include "CXSourceLocation.h"
-#include "CXString.h"
-
-#include "clang/Frontend/ASTUnit.h"
-#include "clang/Frontend/FrontendDiagnostic.h"
-#include "clang/Frontend/DiagnosticRenderer.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/Twine.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/raw_ostream.h"
-
-using namespace clang;
-using namespace clang::cxloc;
-using namespace clang::cxdiag;
-using namespace llvm;
-
-
-CXDiagnosticSetImpl::~CXDiagnosticSetImpl() {
-  for (std::vector<CXDiagnosticImpl *>::iterator it = Diagnostics.begin(),
-       et = Diagnostics.end();
-       it != et; ++it) {
-    delete *it;
-  }
-}
-
-CXDiagnosticImpl::~CXDiagnosticImpl() {}
-
-namespace {
-class CXDiagnosticCustomNoteImpl : public CXDiagnosticImpl {
-  std::string Message;
-  CXSourceLocation Loc;
-public:
-  CXDiagnosticCustomNoteImpl(StringRef Msg, CXSourceLocation L)
-    : CXDiagnosticImpl(CustomNoteDiagnosticKind),
-      Message(Msg), Loc(L) {}
-
-  virtual ~CXDiagnosticCustomNoteImpl() {}
-  
-  CXDiagnosticSeverity getSeverity() const {
-    return CXDiagnostic_Note;
-  }
-  
-  CXSourceLocation getLocation() const {
-    return Loc;
-  }
-  
-  CXString getSpelling() const {
-    return cxstring::createRef(Message.c_str());
-  }
-  
-  CXString getDiagnosticOption(CXString *Disable) const {
-    if (Disable)
-      *Disable = cxstring::createEmpty();
-    return cxstring::createEmpty();
-  }
-  
-  unsigned getCategory() const { return 0; }
-  CXString getCategoryText() const { return cxstring::createEmpty(); }
-
-  unsigned getNumRanges() const { return 0; }
-  CXSourceRange getRange(unsigned Range) const { return clang_getNullRange(); }
-  unsigned getNumFixIts() const { return 0; }
-  CXString getFixIt(unsigned FixIt, CXSourceRange *ReplacementRange) const {
-    if (ReplacementRange)
-      *ReplacementRange = clang_getNullRange();
-    return cxstring::createEmpty();
-  }
-};    
-    
-class CXDiagnosticRenderer : public DiagnosticNoteRenderer {
-public:  
-  CXDiagnosticRenderer(const LangOptions &LangOpts,
-                       DiagnosticOptions *DiagOpts,
-                       CXDiagnosticSetImpl *mainSet)
-  : DiagnosticNoteRenderer(LangOpts, DiagOpts),
-    CurrentSet(mainSet), MainSet(mainSet) {}
-  
-  virtual ~CXDiagnosticRenderer() {}
-
-  virtual void beginDiagnostic(DiagOrStoredDiag D,
-                               DiagnosticsEngine::Level Level) {    
-    
-    const StoredDiagnostic *SD = D.dyn_cast<const StoredDiagnostic*>();
-    if (!SD)
-      return;
-    
-    if (Level != DiagnosticsEngine::Note)
-      CurrentSet = MainSet;
-    
-    CXStoredDiagnostic *CD = new CXStoredDiagnostic(*SD, LangOpts);
-    CurrentSet->appendDiagnostic(CD);
-    
-    if (Level != DiagnosticsEngine::Note)
-      CurrentSet = &CD->getChildDiagnostics();
-  }
-  
-  virtual void emitDiagnosticMessage(SourceLocation Loc, PresumedLoc PLoc,
-                                     DiagnosticsEngine::Level Level,
-                                     StringRef Message,
-                                     ArrayRef<CharSourceRange> Ranges,
-                                     const SourceManager *SM,
-                                     DiagOrStoredDiag D) {
-    if (!D.isNull())
-      return;
-    
-    CXSourceLocation L;
-    if (SM)
-      L = translateSourceLocation(*SM, LangOpts, Loc);
-    else
-      L = clang_getNullLocation();
-    CXDiagnosticImpl *CD = new CXDiagnosticCustomNoteImpl(Message, L);
-    CurrentSet->appendDiagnostic(CD);
-  }
-  
-  virtual void emitDiagnosticLoc(SourceLocation Loc, PresumedLoc PLoc,
-                                 DiagnosticsEngine::Level Level,
-                                 ArrayRef<CharSourceRange> Ranges,
-                                 const SourceManager &SM) {}
-
-  virtual void emitCodeContext(SourceLocation Loc,
-                               DiagnosticsEngine::Level Level,
-                               SmallVectorImpl<CharSourceRange>& Ranges,
-                               ArrayRef<FixItHint> Hints,
-                               const SourceManager &SM) {}
-  
-  virtual void emitNote(SourceLocation Loc, StringRef Message,
-                        const SourceManager *SM) {
-    CXSourceLocation L;
-    if (SM)
-      L = translateSourceLocation(*SM, LangOpts, Loc);
-    else
-      L = clang_getNullLocation();
-    CurrentSet->appendDiagnostic(new CXDiagnosticCustomNoteImpl(Message,
-                                                                L));
-  }
-
-  CXDiagnosticSetImpl *CurrentSet;
-  CXDiagnosticSetImpl *MainSet;
-};  
-}
-
-CXDiagnosticSetImpl *cxdiag::lazyCreateDiags(CXTranslationUnit TU,
-                                             bool checkIfChanged) {
-  ASTUnit *AU = cxtu::getASTUnit(TU);
-
-  if (TU->Diagnostics && checkIfChanged) {
-    // In normal use, ASTUnit's diagnostics should not change unless we reparse.
-    // Currently they can only change by using the internal testing flag
-    // '-error-on-deserialized-decl' which will error during deserialization of
-    // a declaration. What will happen is:
-    //
-    //  -c-index-test gets a CXTranslationUnit
-    //  -checks the diagnostics, the diagnostics set is lazily created,
-    //     no errors are reported
-    //  -later does an operation, like annotation of tokens, that triggers
-    //     -error-on-deserialized-decl, that will emit a diagnostic error,
-    //     that ASTUnit will catch and add to its stored diagnostics vector.
-    //  -c-index-test wants to check whether an error occurred after performing
-    //     the operation but can only query the lazily created set.
-    //
-    // We check here if a new diagnostic was appended since the last time the
-    // diagnostic set was created, in which case we reset it.
-
-    CXDiagnosticSetImpl *
-      Set = static_cast<CXDiagnosticSetImpl*>(TU->Diagnostics);
-    if (AU->stored_diag_size() != Set->getNumDiagnostics()) {
-      // Diagnostics in the ASTUnit were updated, reset the associated
-      // diagnostics.
-      delete Set;
-      TU->Diagnostics = 0;
-    }
-  }
-
-  if (!TU->Diagnostics) {
-    CXDiagnosticSetImpl *Set = new CXDiagnosticSetImpl();
-    TU->Diagnostics = Set;
-    IntrusiveRefCntPtr<DiagnosticOptions> DOpts = new DiagnosticOptions;
-    CXDiagnosticRenderer Renderer(AU->getASTContext().getLangOpts(),
-                                  &*DOpts, Set);
-    
-    for (ASTUnit::stored_diag_iterator it = AU->stored_diag_begin(),
-         ei = AU->stored_diag_end(); it != ei; ++it) {
-      Renderer.emitStoredDiagnostic(*it);
-    }
-  }
-  return static_cast<CXDiagnosticSetImpl*>(TU->Diagnostics);
-}
-
-//-----------------------------------------------------------------------------
-// C Interface Routines
-//-----------------------------------------------------------------------------
-extern "C" {
-
-unsigned clang_getNumDiagnostics(CXTranslationUnit Unit) {
-  if (!cxtu::getASTUnit(Unit))
-    return 0;
-  return lazyCreateDiags(Unit, /*checkIfChanged=*/true)->getNumDiagnostics();
-}
-
-CXDiagnostic clang_getDiagnostic(CXTranslationUnit Unit, unsigned Index) {
-  CXDiagnosticSet D = clang_getDiagnosticSetFromTU(Unit);
-  if (!D)
-    return 0;
-
-  CXDiagnosticSetImpl *Diags = static_cast<CXDiagnosticSetImpl*>(D);
-  if (Index >= Diags->getNumDiagnostics())
-    return 0;
-
-  return Diags->getDiagnostic(Index);
-}
-  
-CXDiagnosticSet clang_getDiagnosticSetFromTU(CXTranslationUnit Unit) {
-  if (!cxtu::getASTUnit(Unit))
-    return 0;
-  return static_cast<CXDiagnostic>(lazyCreateDiags(Unit));
-}
-
-void clang_disposeDiagnostic(CXDiagnostic Diagnostic) {
-  // No-op.  Kept as a legacy API.  CXDiagnostics are now managed
-  // by the enclosing CXDiagnosticSet.
-}
-
-CXString clang_formatDiagnostic(CXDiagnostic Diagnostic, unsigned Options) {
-  if (!Diagnostic)
-    return cxstring::createEmpty();
-
-  CXDiagnosticSeverity Severity = clang_getDiagnosticSeverity(Diagnostic);
-
-  SmallString<256> Str;
-  llvm::raw_svector_ostream Out(Str);
-  
-  if (Options & CXDiagnostic_DisplaySourceLocation) {
-    // Print source location (file:line), along with optional column
-    // and source ranges.
-    CXFile File;
-    unsigned Line, Column;
-    clang_getSpellingLocation(clang_getDiagnosticLocation(Diagnostic),
-                              &File, &Line, &Column, 0);
-    if (File) {
-      CXString FName = clang_getFileName(File);
-      Out << clang_getCString(FName) << ":" << Line << ":";
-      clang_disposeString(FName);
-      if (Options & CXDiagnostic_DisplayColumn)
-        Out << Column << ":";
-
-      if (Options & CXDiagnostic_DisplaySourceRanges) {
-        unsigned N = clang_getDiagnosticNumRanges(Diagnostic);
-        bool PrintedRange = false;
-        for (unsigned I = 0; I != N; ++I) {
-          CXFile StartFile, EndFile;
-          CXSourceRange Range = clang_getDiagnosticRange(Diagnostic, I);
-          
-          unsigned StartLine, StartColumn, EndLine, EndColumn;
-          clang_getSpellingLocation(clang_getRangeStart(Range),
-                                    &StartFile, &StartLine, &StartColumn,
-                                    0);
-          clang_getSpellingLocation(clang_getRangeEnd(Range),
-                                    &EndFile, &EndLine, &EndColumn, 0);
-          
-          if (StartFile != EndFile || StartFile != File)
-            continue;
-          
-          Out << "{" << StartLine << ":" << StartColumn << "-"
-              << EndLine << ":" << EndColumn << "}";
-          PrintedRange = true;
-        }
-        if (PrintedRange)
-          Out << ":";
-      }
-      
-      Out << " ";
-    }
-  }
-
-  /* Print warning/error/etc. */
-  switch (Severity) {
-  case CXDiagnostic_Ignored: llvm_unreachable("impossible");
-  case CXDiagnostic_Note: Out << "note: "; break;
-  case CXDiagnostic_Warning: Out << "warning: "; break;
-  case CXDiagnostic_Error: Out << "error: "; break;
-  case CXDiagnostic_Fatal: Out << "fatal error: "; break;
-  }
-
-  CXString Text = clang_getDiagnosticSpelling(Diagnostic);
-  if (clang_getCString(Text))
-    Out << clang_getCString(Text);
-  else
-    Out << "<no diagnostic text>";
-  clang_disposeString(Text);
-  
-  if (Options & (CXDiagnostic_DisplayOption | CXDiagnostic_DisplayCategoryId |
-                 CXDiagnostic_DisplayCategoryName)) {
-    bool NeedBracket = true;
-    bool NeedComma = false;
-
-    if (Options & CXDiagnostic_DisplayOption) {
-      CXString OptionName = clang_getDiagnosticOption(Diagnostic, 0);
-      if (const char *OptionText = clang_getCString(OptionName)) {
-        if (OptionText[0]) {
-          Out << " [" << OptionText;
-          NeedBracket = false;
-          NeedComma = true;
-        }
-      }
-      clang_disposeString(OptionName);
-    }
-    
-    if (Options & (CXDiagnostic_DisplayCategoryId | 
-                   CXDiagnostic_DisplayCategoryName)) {
-      if (unsigned CategoryID = clang_getDiagnosticCategory(Diagnostic)) {
-        if (Options & CXDiagnostic_DisplayCategoryId) {
-          if (NeedBracket)
-            Out << " [";
-          if (NeedComma)
-            Out << ", ";
-          Out << CategoryID;
-          NeedBracket = false;
-          NeedComma = true;
-        }
-        
-        if (Options & CXDiagnostic_DisplayCategoryName) {
-          CXString CategoryName = clang_getDiagnosticCategoryText(Diagnostic);
-          if (NeedBracket)
-            Out << " [";
-          if (NeedComma)
-            Out << ", ";
-          Out << clang_getCString(CategoryName);
-          NeedBracket = false;
-          NeedComma = true;
-          clang_disposeString(CategoryName);
-        }
-      }
-    }
-
-    (void) NeedComma; // Silence dead store warning.
-    if (!NeedBracket)
-      Out << "]";
-  }
-  
-  return cxstring::createDup(Out.str());
-}
-
-unsigned clang_defaultDiagnosticDisplayOptions() {
-  return CXDiagnostic_DisplaySourceLocation | CXDiagnostic_DisplayColumn |
-         CXDiagnostic_DisplayOption;
-}
-
-enum CXDiagnosticSeverity clang_getDiagnosticSeverity(CXDiagnostic Diag) {
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl*>(Diag))
-    return D->getSeverity();
-  return CXDiagnostic_Ignored;
-}
-
-CXSourceLocation clang_getDiagnosticLocation(CXDiagnostic Diag) {
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl*>(Diag))
-    return D->getLocation();
-  return clang_getNullLocation();
-}
-
-CXString clang_getDiagnosticSpelling(CXDiagnostic Diag) {
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag))
-    return D->getSpelling();
-  return cxstring::createEmpty();
-}
-
-CXString clang_getDiagnosticOption(CXDiagnostic Diag, CXString *Disable) {
-  if (Disable)
-    *Disable = cxstring::createEmpty();
-
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag))
-    return D->getDiagnosticOption(Disable);
-
-  return cxstring::createEmpty();
-}
-
-unsigned clang_getDiagnosticCategory(CXDiagnostic Diag) {
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag))
-    return D->getCategory();
-  return 0;
-}
-  
-CXString clang_getDiagnosticCategoryName(unsigned Category) {
-  // Kept for backwards compatibility.
-  return cxstring::createRef(DiagnosticIDs::getCategoryNameFromID(Category));
-}
-  
-CXString clang_getDiagnosticCategoryText(CXDiagnostic Diag) {
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag))
-    return D->getCategoryText();
-  return cxstring::createEmpty();
-}
-  
-unsigned clang_getDiagnosticNumRanges(CXDiagnostic Diag) {
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag))
-    return D->getNumRanges();
-  return 0;
-}
-
-CXSourceRange clang_getDiagnosticRange(CXDiagnostic Diag, unsigned Range) {
-  CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag);  
-  if (!D || Range >= D->getNumRanges())
-    return clang_getNullRange();
-  return D->getRange(Range);
-}
-
-unsigned clang_getDiagnosticNumFixIts(CXDiagnostic Diag) {
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag))
-    return D->getNumFixIts();
-  return 0;
-}
-
-CXString clang_getDiagnosticFixIt(CXDiagnostic Diag, unsigned FixIt,
-                                  CXSourceRange *ReplacementRange) {
-  CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag);
-  if (!D || FixIt >= D->getNumFixIts()) {
-    if (ReplacementRange)
-      *ReplacementRange = clang_getNullRange();
-    return cxstring::createEmpty();
-  }
-  return D->getFixIt(FixIt, ReplacementRange);
-}
-
-void clang_disposeDiagnosticSet(CXDiagnosticSet Diags) {
-  CXDiagnosticSetImpl *D = static_cast<CXDiagnosticSetImpl*>(Diags);
-  if (D->isExternallyManaged())
-    delete D;
-}
-  
-CXDiagnostic clang_getDiagnosticInSet(CXDiagnosticSet Diags,
-                                      unsigned Index) {
-  if (CXDiagnosticSetImpl *D = static_cast<CXDiagnosticSetImpl*>(Diags))
-    if (Index < D->getNumDiagnostics())
-      return D->getDiagnostic(Index);
-  return 0;  
-}
-  
-CXDiagnosticSet clang_getChildDiagnostics(CXDiagnostic Diag) {
-  if (CXDiagnosticImpl *D = static_cast<CXDiagnosticImpl *>(Diag)) {
-    CXDiagnosticSetImpl &ChildDiags = D->getChildDiagnostics();
-    return ChildDiags.empty() ? 0 : (CXDiagnosticSet) &ChildDiags;
-  }
-  return 0;
-}
-
-unsigned clang_getNumDiagnosticsInSet(CXDiagnosticSet Diags) {
-  if (CXDiagnosticSetImpl *D = static_cast<CXDiagnosticSetImpl*>(Diags))
-    return D->getNumDiagnostics();
-  return 0;
-}
-
-} // end extern "C"

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexDiagnostic.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexDiagnostic.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexDiagnostic.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,166 +0,0 @@
-/*===-- CIndexDiagnostic.h - Diagnostics C Interface ------------*- C++ -*-===*\
-|*                                                                            *|
-|*                     The LLVM Compiler Infrastructure                       *|
-|*                                                                            *|
-|* This file is distributed under the University of Illinois Open Source      *|
-|* License. See LICENSE.TXT for details.                                      *|
-|*                                                                            *|
-|*===----------------------------------------------------------------------===*|
-|*                                                                            *|
-|* Implements the diagnostic functions of the Clang C interface.              *|
-|*                                                                            *|
-\*===----------------------------------------------------------------------===*/
-#ifndef LLVM_CLANG_CINDEX_DIAGNOSTIC_H
-#define LLVM_CLANG_CINDEX_DIAGNOSTIC_H
-
-#include "clang-c/Index.h"
-#include <vector>
-#include <assert.h>
-
-namespace clang {
-
-class LangOptions;
-class StoredDiagnostic;
-class CXDiagnosticImpl;
-  
-class CXDiagnosticSetImpl {
-  std::vector<CXDiagnosticImpl *> Diagnostics;
-  const bool IsExternallyManaged;
-public:
-  CXDiagnosticSetImpl(bool isManaged = false)
-    : IsExternallyManaged(isManaged) {}
-
-  virtual ~CXDiagnosticSetImpl();
-  
-  size_t getNumDiagnostics() const {
-    return Diagnostics.size();
-  }
-  
-  CXDiagnosticImpl *getDiagnostic(unsigned i) const {
-    assert(i < getNumDiagnostics());
-    return Diagnostics[i];
-  }
-  
-  void appendDiagnostic(CXDiagnosticImpl *D) {
-    Diagnostics.push_back(D);
-  }
-  
-  bool empty() const {
-    return Diagnostics.empty();
-  }
-  
-  bool isExternallyManaged() const { return IsExternallyManaged; }
-};
-
-class CXDiagnosticImpl {
-public:
-  enum Kind { StoredDiagnosticKind, LoadedDiagnosticKind,
-              CustomNoteDiagnosticKind };
-  
-  virtual ~CXDiagnosticImpl();
-  
-  /// \brief Return the severity of the diagnostic.
-  virtual CXDiagnosticSeverity getSeverity() const = 0;
-  
-  /// \brief Return the location of the diagnostic.
-  virtual CXSourceLocation getLocation() const = 0;
-
-  /// \brief Return the spelling of the diagnostic.
-  virtual CXString getSpelling() const = 0;
-
-  /// \brief Return the text for the diagnostic option.
-  virtual CXString getDiagnosticOption(CXString *Disable) const = 0;
-  
-  /// \brief Return the category of the diagnostic.
-  virtual unsigned getCategory() const = 0;
-
-  /// \brief Return the category string of the diagnostic.
-  virtual CXString getCategoryText() const = 0;
-
-  /// \brief Return the number of source ranges for the diagnostic.
-  virtual unsigned getNumRanges() const = 0;
-  
-  /// \brief Return the source ranges for the diagnostic.
-  virtual CXSourceRange getRange(unsigned Range) const = 0;
-
-  /// \brief Return the number of FixIts.
-  virtual unsigned getNumFixIts() const = 0;
-
-  /// \brief Return the FixIt information (source range and inserted text).
-  virtual CXString getFixIt(unsigned FixIt,
-                            CXSourceRange *ReplacementRange) const = 0;
-
-  Kind getKind() const { return K; }
-  
-  CXDiagnosticSetImpl &getChildDiagnostics() {
-    return ChildDiags;
-  }
-  
-protected:
-  CXDiagnosticImpl(Kind k) : K(k) {}
-  CXDiagnosticSetImpl ChildDiags;
-  
-  void append(CXDiagnosticImpl *D) {
-    ChildDiags.appendDiagnostic(D);
-  }
-  
-private:
-  Kind K;
-};
-  
-/// \brief The storage behind a CXDiagnostic
-struct CXStoredDiagnostic : public CXDiagnosticImpl {
-  const StoredDiagnostic &Diag;
-  const LangOptions &LangOpts;
-  
-  CXStoredDiagnostic(const StoredDiagnostic &Diag,
-                     const LangOptions &LangOpts)
-    : CXDiagnosticImpl(StoredDiagnosticKind),
-      Diag(Diag), LangOpts(LangOpts) { }
-  
-  virtual ~CXStoredDiagnostic() {}
-  
-  /// \brief Return the severity of the diagnostic.
-  virtual CXDiagnosticSeverity getSeverity() const;
-  
-  /// \brief Return the location of the diagnostic.
-  virtual CXSourceLocation getLocation() const;
-
-  /// \brief Return the spelling of the diagnostic.
-  virtual CXString getSpelling() const;
-
-  /// \brief Return the text for the diagnostic option.
-  virtual CXString getDiagnosticOption(CXString *Disable) const;
-  
-  /// \brief Return the category of the diagnostic.
-  virtual unsigned getCategory() const;
-  
-  /// \brief Return the category string of the diagnostic.
-  virtual CXString getCategoryText() const;
-
-  /// \brief Return the number of source ranges for the diagnostic.
-  virtual unsigned getNumRanges() const;
-  
-  /// \brief Return the source ranges for the diagnostic.
-  virtual CXSourceRange getRange(unsigned Range) const;
-
-  /// \brief Return the number of FixIts.
-  virtual unsigned getNumFixIts() const;
-
-  /// \brief Return the FixIt information (source range and inserted text).
-  virtual CXString getFixIt(unsigned FixIt,
-                            CXSourceRange *ReplacementRange) const;
-
-  static bool classof(const CXDiagnosticImpl *D) {
-    return D->getKind() == StoredDiagnosticKind;
-  }
-};
-
-namespace cxdiag {
-CXDiagnosticSetImpl *lazyCreateDiags(CXTranslationUnit TU,
-                                     bool checkIfChanged = false);
-} // end namespace cxdiag
-
-} // end namespace clang
-
-#endif // LLVM_CLANG_CINDEX_DIAGNOSTIC_H

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexHigh.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexHigh.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexHigh.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,539 +0,0 @@
-//===- CIndexHigh.cpp - Higher level API functions ------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CursorVisitor.h"
-#include "CLog.h"
-#include "CXCursor.h"
-#include "CXSourceLocation.h"
-#include "CXTranslationUnit.h"
-#include "clang/AST/DeclObjC.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "llvm/Support/Compiler.h"
-
-using namespace clang;
-using namespace cxcursor;
-using namespace cxindex;
-
-static void getTopOverriddenMethods(CXTranslationUnit TU,
-                                    const Decl *D,
-                                    SmallVectorImpl<const Decl *> &Methods) {
-  if (!D)
-    return;
-  if (!isa<ObjCMethodDecl>(D) && !isa<CXXMethodDecl>(D))
-    return;
-
-  SmallVector<CXCursor, 8> Overridden;
-  cxcursor::getOverriddenCursors(cxcursor::MakeCXCursor(D, TU), Overridden);
-  
-  if (Overridden.empty()) {
-    Methods.push_back(D->getCanonicalDecl());
-    return;
-  }
-
-  for (SmallVector<CXCursor, 8>::iterator
-         I = Overridden.begin(), E = Overridden.end(); I != E; ++I)
-    getTopOverriddenMethods(TU, cxcursor::getCursorDecl(*I), Methods);
-}
-
-namespace {
-
-struct FindFileIdRefVisitData {
-  CXTranslationUnit TU;
-  FileID FID;
-  const Decl *Dcl;
-  int SelectorIdIdx;
-  CXCursorAndRangeVisitor visitor;
-
-  typedef SmallVector<const Decl *, 8> TopMethodsTy;
-  TopMethodsTy TopMethods;
-
-  FindFileIdRefVisitData(CXTranslationUnit TU, FileID FID,
-                         const Decl *D, int selectorIdIdx,
-                         CXCursorAndRangeVisitor visitor)
-    : TU(TU), FID(FID), SelectorIdIdx(selectorIdIdx), visitor(visitor) {
-    Dcl = getCanonical(D);
-    getTopOverriddenMethods(TU, Dcl, TopMethods);
-  }
-
-  ASTContext &getASTContext() const {
-    return cxtu::getASTUnit(TU)->getASTContext();
-  }
-
-  /// \brief We are looking to find all semantically relevant identifiers,
-  /// so the definition of "canonical" here is different than in the AST, e.g.
-  ///
-  /// \code
-  ///   class C {
-  ///     C() {}
-  ///   };
-  /// \endcode
-  ///
-  /// we consider the canonical decl of the constructor decl to be the class
-  /// itself, so both 'C' can be highlighted.
-  const Decl *getCanonical(const Decl *D) const {
-    if (!D)
-      return 0;
-
-    D = D->getCanonicalDecl();
-
-    if (const ObjCImplDecl *ImplD = dyn_cast<ObjCImplDecl>(D)) {
-      if (ImplD->getClassInterface())
-        return getCanonical(ImplD->getClassInterface());
-
-    } else if (const CXXConstructorDecl *CXXCtorD =
-                   dyn_cast<CXXConstructorDecl>(D)) {
-      return getCanonical(CXXCtorD->getParent());
-    }
-    
-    return D;
-  }
-
-  bool isHit(const Decl *D) const {
-    if (!D)
-      return false;
-
-    D = getCanonical(D);
-    if (D == Dcl)
-      return true;
-
-    if (isa<ObjCMethodDecl>(D) || isa<CXXMethodDecl>(D))
-      return isOverriddingMethod(D);
-
-    return false;
-  }
-
-private:
-  bool isOverriddingMethod(const Decl *D) const {
-    if (std::find(TopMethods.begin(), TopMethods.end(), D) !=
-          TopMethods.end())
-      return true;
-
-    TopMethodsTy methods;
-    getTopOverriddenMethods(TU, D, methods);
-    for (TopMethodsTy::iterator
-           I = methods.begin(), E = methods.end(); I != E; ++I) {
-      if (std::find(TopMethods.begin(), TopMethods.end(), *I) !=
-            TopMethods.end())
-        return true;
-    }
-
-    return false;
-  }
-};
-
-} // end anonymous namespace.
-
-/// \brief For a macro \arg Loc, returns the file spelling location and sets
-/// to \arg isMacroArg whether the spelling resides inside a macro definition or
-/// a macro argument.
-static SourceLocation getFileSpellingLoc(SourceManager &SM,
-                                         SourceLocation Loc,
-                                         bool &isMacroArg) {
-  assert(Loc.isMacroID());
-  SourceLocation SpellLoc = SM.getImmediateSpellingLoc(Loc);
-  if (SpellLoc.isMacroID())
-    return getFileSpellingLoc(SM, SpellLoc, isMacroArg);
-  
-  isMacroArg = SM.isMacroArgExpansion(Loc);
-  return SpellLoc;
-}
-
-static enum CXChildVisitResult findFileIdRefVisit(CXCursor cursor,
-                                                  CXCursor parent,
-                                                  CXClientData client_data) {
-  CXCursor declCursor = clang_getCursorReferenced(cursor);
-  if (!clang_isDeclaration(declCursor.kind))
-    return CXChildVisit_Recurse;
-
-  const Decl *D = cxcursor::getCursorDecl(declCursor);
-  if (!D)
-    return CXChildVisit_Continue;
-
-  FindFileIdRefVisitData *data = (FindFileIdRefVisitData *)client_data;
-  if (data->isHit(D)) {
-    cursor = cxcursor::getSelectorIdentifierCursor(data->SelectorIdIdx, cursor);
-
-    // We are looking for identifiers to highlight so for objc methods (and
-    // not a parameter) we can only highlight the selector identifiers.
-    if ((cursor.kind == CXCursor_ObjCClassMethodDecl ||
-         cursor.kind == CXCursor_ObjCInstanceMethodDecl) &&
-         cxcursor::getSelectorIdentifierIndex(cursor) == -1)
-      return CXChildVisit_Recurse;
-
-    if (clang_isExpression(cursor.kind)) {
-      if (cursor.kind == CXCursor_DeclRefExpr ||
-          cursor.kind == CXCursor_MemberRefExpr) {
-        // continue..
-
-      } else if (cursor.kind == CXCursor_ObjCMessageExpr &&
-                 cxcursor::getSelectorIdentifierIndex(cursor) != -1) {
-        // continue..
-                
-      } else
-        return CXChildVisit_Recurse;
-    }
-
-    SourceLocation
-      Loc = cxloc::translateSourceLocation(clang_getCursorLocation(cursor));
-    SourceLocation SelIdLoc = cxcursor::getSelectorIdentifierLoc(cursor);
-    if (SelIdLoc.isValid())
-      Loc = SelIdLoc;
-
-    ASTContext &Ctx = data->getASTContext();
-    SourceManager &SM = Ctx.getSourceManager();
-    bool isInMacroDef = false;
-    if (Loc.isMacroID()) {
-      bool isMacroArg;
-      Loc = getFileSpellingLoc(SM, Loc, isMacroArg);
-      isInMacroDef = !isMacroArg;
-    }
-
-    // We are looking for identifiers in a specific file.
-    std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
-    if (LocInfo.first != data->FID)
-      return CXChildVisit_Recurse;
-
-    if (isInMacroDef) {
-      // FIXME: For a macro definition make sure that all expansions
-      // of it expand to the same reference before allowing to point to it.
-      return CXChildVisit_Recurse;
-    }
-
-    if (data->visitor.visit(data->visitor.context, cursor,
-                        cxloc::translateSourceRange(Ctx, Loc)) == CXVisit_Break)
-      return CXChildVisit_Break;
-  }
-  return CXChildVisit_Recurse;
-}
-
-static bool findIdRefsInFile(CXTranslationUnit TU, CXCursor declCursor,
-                             const FileEntry *File,
-                             CXCursorAndRangeVisitor Visitor) {
-  assert(clang_isDeclaration(declCursor.kind));
-  SourceManager &SM = cxtu::getASTUnit(TU)->getSourceManager();
-
-  FileID FID = SM.translateFile(File);
-  const Decl *Dcl = cxcursor::getCursorDecl(declCursor);
-  if (!Dcl)
-    return false;
-
-  FindFileIdRefVisitData data(TU, FID, Dcl,
-                              cxcursor::getSelectorIdentifierIndex(declCursor),
-                              Visitor);
-
-  if (const DeclContext *DC = Dcl->getParentFunctionOrMethod()) {
-    return clang_visitChildren(cxcursor::MakeCXCursor(cast<Decl>(DC), TU),
-                               findFileIdRefVisit, &data);
-  }
-
-  SourceRange Range(SM.getLocForStartOfFile(FID), SM.getLocForEndOfFile(FID));
-  CursorVisitor FindIdRefsVisitor(TU,
-                                  findFileIdRefVisit, &data,
-                                  /*VisitPreprocessorLast=*/true,
-                                  /*VisitIncludedEntities=*/false,
-                                  Range,
-                                  /*VisitDeclsOnly=*/true);
-  return FindIdRefsVisitor.visitFileRegion();
-}
-
-namespace {
-
-struct FindFileMacroRefVisitData {
-  ASTUnit &Unit;
-  const FileEntry *File;
-  const IdentifierInfo *Macro;
-  CXCursorAndRangeVisitor visitor;
-
-  FindFileMacroRefVisitData(ASTUnit &Unit, const FileEntry *File,
-                            const IdentifierInfo *Macro,
-                            CXCursorAndRangeVisitor visitor)
-    : Unit(Unit), File(File), Macro(Macro), visitor(visitor) { }
-
-  ASTContext &getASTContext() const {
-    return Unit.getASTContext();
-  }
-};
-
-} // anonymous namespace
-
-static enum CXChildVisitResult findFileMacroRefVisit(CXCursor cursor,
-                                                     CXCursor parent,
-                                                     CXClientData client_data) {
-  const IdentifierInfo *Macro = 0;
-  if (cursor.kind == CXCursor_MacroDefinition)
-    Macro = getCursorMacroDefinition(cursor)->getName();
-  else if (cursor.kind == CXCursor_MacroExpansion)
-    Macro = getCursorMacroExpansion(cursor).getName();
-  if (!Macro)
-    return CXChildVisit_Continue;
-
-  FindFileMacroRefVisitData *data = (FindFileMacroRefVisitData *)client_data;
-  if (data->Macro != Macro)
-    return CXChildVisit_Continue;
-
-  SourceLocation
-    Loc = cxloc::translateSourceLocation(clang_getCursorLocation(cursor));
-
-  ASTContext &Ctx = data->getASTContext();
-  SourceManager &SM = Ctx.getSourceManager();
-  bool isInMacroDef = false;
-  if (Loc.isMacroID()) {
-    bool isMacroArg;
-    Loc = getFileSpellingLoc(SM, Loc, isMacroArg);
-    isInMacroDef = !isMacroArg;
-  }
-
-  // We are looking for identifiers in a specific file.
-  std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
-  if (SM.getFileEntryForID(LocInfo.first) != data->File)
-    return CXChildVisit_Continue;
-
-  if (isInMacroDef) {
-    // FIXME: For a macro definition make sure that all expansions
-    // of it expand to the same reference before allowing to point to it.
-    return CXChildVisit_Continue;
-  }
-
-  if (data->visitor.visit(data->visitor.context, cursor,
-                        cxloc::translateSourceRange(Ctx, Loc)) == CXVisit_Break)
-    return CXChildVisit_Break;
-  return CXChildVisit_Continue;
-}
-
-static bool findMacroRefsInFile(CXTranslationUnit TU, CXCursor Cursor,
-                                const FileEntry *File,
-                                CXCursorAndRangeVisitor Visitor) {
-  if (Cursor.kind != CXCursor_MacroDefinition &&
-      Cursor.kind != CXCursor_MacroExpansion)
-    return false;
-
-  ASTUnit *Unit = cxtu::getASTUnit(TU);
-  SourceManager &SM = Unit->getSourceManager();
-
-  FileID FID = SM.translateFile(File);
-  const IdentifierInfo *Macro = 0;
-  if (Cursor.kind == CXCursor_MacroDefinition)
-    Macro = getCursorMacroDefinition(Cursor)->getName();
-  else
-    Macro = getCursorMacroExpansion(Cursor).getName();
-  if (!Macro)
-    return false;
-
-  FindFileMacroRefVisitData data(*Unit, File, Macro, Visitor);
-
-  SourceRange Range(SM.getLocForStartOfFile(FID), SM.getLocForEndOfFile(FID));
-  CursorVisitor FindMacroRefsVisitor(TU,
-                                  findFileMacroRefVisit, &data,
-                                  /*VisitPreprocessorLast=*/false,
-                                  /*VisitIncludedEntities=*/false,
-                                  Range);
-  return FindMacroRefsVisitor.visitPreprocessedEntitiesInRegion();
-}
-
-namespace {
-
-struct FindFileIncludesVisitor {
-  ASTUnit &Unit;
-  const FileEntry *File;
-  CXCursorAndRangeVisitor visitor;
-
-  FindFileIncludesVisitor(ASTUnit &Unit, const FileEntry *File,
-                          CXCursorAndRangeVisitor visitor)
-    : Unit(Unit), File(File), visitor(visitor) { }
-
-  ASTContext &getASTContext() const {
-    return Unit.getASTContext();
-  }
-
-  enum CXChildVisitResult visit(CXCursor cursor, CXCursor parent) {
-    if (cursor.kind != CXCursor_InclusionDirective)
-      return CXChildVisit_Continue;
-
-    SourceLocation
-      Loc = cxloc::translateSourceLocation(clang_getCursorLocation(cursor));
-
-    ASTContext &Ctx = getASTContext();
-    SourceManager &SM = Ctx.getSourceManager();
-
-    // We are looking for includes in a specific file.
-    std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
-    if (SM.getFileEntryForID(LocInfo.first) != File)
-      return CXChildVisit_Continue;
-
-    if (visitor.visit(visitor.context, cursor,
-                      cxloc::translateSourceRange(Ctx, Loc)) == CXVisit_Break)
-      return CXChildVisit_Break;
-    return CXChildVisit_Continue;
-  }
-
-  static enum CXChildVisitResult visit(CXCursor cursor, CXCursor parent,
-                                       CXClientData client_data) {
-    return static_cast<FindFileIncludesVisitor*>(client_data)->
-                                                          visit(cursor, parent);
-  }
-};
-
-} // anonymous namespace
-
-static bool findIncludesInFile(CXTranslationUnit TU, const FileEntry *File,
-                               CXCursorAndRangeVisitor Visitor) {
-  assert(TU && File && Visitor.visit);
-
-  ASTUnit *Unit = cxtu::getASTUnit(TU);
-  SourceManager &SM = Unit->getSourceManager();
-
-  FileID FID = SM.translateFile(File);
-
-  FindFileIncludesVisitor IncludesVisitor(*Unit, File, Visitor);
-
-  SourceRange Range(SM.getLocForStartOfFile(FID), SM.getLocForEndOfFile(FID));
-  CursorVisitor InclusionCursorsVisitor(TU,
-                                        FindFileIncludesVisitor::visit,
-                                        &IncludesVisitor,
-                                        /*VisitPreprocessorLast=*/false,
-                                        /*VisitIncludedEntities=*/false,
-                                        Range);
-  return InclusionCursorsVisitor.visitPreprocessedEntitiesInRegion();
-}
-
-
-//===----------------------------------------------------------------------===//
-// libclang public APIs.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-
-CXResult clang_findReferencesInFile(CXCursor cursor, CXFile file,
-                                    CXCursorAndRangeVisitor visitor) {
-  LogRef Log = Logger::make(LLVM_FUNCTION_NAME);
-
-  if (clang_Cursor_isNull(cursor)) {
-    if (Log)
-      *Log << "Null cursor";
-    return CXResult_Invalid;
-  }
-  if (cursor.kind == CXCursor_NoDeclFound) {
-    if (Log)
-      *Log << "Got CXCursor_NoDeclFound";
-    return CXResult_Invalid;
-  }
-  if (!file) {
-    if (Log)
-      *Log << "Null file";
-    return CXResult_Invalid;
-  }
-  if (!visitor.visit) {
-    if (Log)
-      *Log << "Null visitor";
-    return CXResult_Invalid;
-  }
-
-  if (Log)
-    *Log << cursor << " @" << static_cast<const FileEntry *>(file);
-
-  ASTUnit *CXXUnit = cxcursor::getCursorASTUnit(cursor);
-  if (!CXXUnit)
-    return CXResult_Invalid;
-
-  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
-
-  if (cursor.kind == CXCursor_MacroDefinition ||
-      cursor.kind == CXCursor_MacroExpansion) {
-    if (findMacroRefsInFile(cxcursor::getCursorTU(cursor),
-                            cursor,
-                            static_cast<const FileEntry *>(file),
-                            visitor))
-      return CXResult_VisitBreak;
-    return CXResult_Success;
-  }
-
-  // We are interested in semantics of identifiers so for C++ constructor exprs
-  // prefer type references, e.g.:
-  //
-  //  return MyStruct();
-  //
-  // for 'MyStruct' we'll have a cursor pointing at the constructor decl but
-  // we are actually interested in the type declaration.
-  cursor = cxcursor::getTypeRefCursor(cursor);
-
-  CXCursor refCursor = clang_getCursorReferenced(cursor);
-
-  if (!clang_isDeclaration(refCursor.kind)) {
-    if (Log)
-      *Log << "cursor is not referencing a declaration";
-    return CXResult_Invalid;
-  }
-
-  if (findIdRefsInFile(cxcursor::getCursorTU(cursor),
-                       refCursor,
-                       static_cast<const FileEntry *>(file),
-                       visitor))
-    return CXResult_VisitBreak;
-  return CXResult_Success;
-}
-
-CXResult clang_findIncludesInFile(CXTranslationUnit TU, CXFile file,
-                             CXCursorAndRangeVisitor visitor) {
-  LogRef Log = Logger::make(LLVM_FUNCTION_NAME);
-
-  if (!TU) {
-    if (Log)
-      *Log << "Null CXTranslationUnit";
-    return CXResult_Invalid;
-  }
-  if (!file) {
-    if (Log)
-      *Log << "Null file";
-    return CXResult_Invalid;
-  }
-  if (!visitor.visit) {
-    if (Log)
-      *Log << "Null visitor";
-    return CXResult_Invalid;
-  }
-
-  if (Log)
-    *Log << TU << " @" << static_cast<const FileEntry *>(file);
-
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  if (!CXXUnit)
-    return CXResult_Invalid;
-
-  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
-
-  if (findIncludesInFile(TU, static_cast<const FileEntry *>(file), visitor))
-    return CXResult_VisitBreak;
-  return CXResult_Success;
-}
-
-static enum CXVisitorResult _visitCursorAndRange(void *context,
-                                                 CXCursor cursor,
-                                                 CXSourceRange range) {
-  CXCursorAndRangeVisitorBlock block = (CXCursorAndRangeVisitorBlock)context;
-  return INVOKE_BLOCK2(block, cursor, range);
-}
-
-CXResult clang_findReferencesInFileWithBlock(CXCursor cursor,
-                                             CXFile file,
-                                           CXCursorAndRangeVisitorBlock block) {
-  CXCursorAndRangeVisitor visitor = { block,
-                                      block ? _visitCursorAndRange : 0 };
-  return clang_findReferencesInFile(cursor, file, visitor);
-}
-
-CXResult clang_findIncludesInFileWithBlock(CXTranslationUnit TU,
-                                           CXFile file,
-                                           CXCursorAndRangeVisitorBlock block) {
-  CXCursorAndRangeVisitor visitor = { block,
-                                      block ? _visitCursorAndRange : 0 };
-  return clang_findIncludesInFile(TU, file, visitor);
-}
-
-} // end: extern "C"
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexInclusionStack.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexInclusionStack.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexInclusionStack.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,72 +0,0 @@
-//===- CIndexInclusionStack.cpp - Clang-C Source Indexing Library ---------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines a callback mechanism for clients to get the inclusion
-// stack from a translation unit.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CIndexer.h"
-#include "CXSourceLocation.h"
-#include "CXTranslationUnit.h"
-#include "clang/AST/DeclVisitor.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/Support/raw_ostream.h"
-using namespace clang;
-
-extern "C" {
-void clang_getInclusions(CXTranslationUnit TU, CXInclusionVisitor CB,
-                         CXClientData clientData) {
-  
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  SourceManager &SM = CXXUnit->getSourceManager();
-  ASTContext &Ctx = CXXUnit->getASTContext();
-
-  SmallVector<CXSourceLocation, 10> InclusionStack;
-  unsigned n =  SM.local_sloc_entry_size();
-
-  // In the case where all the SLocEntries are in an external source, traverse
-  // those SLocEntries as well.  This is the case where we are looking
-  // at the inclusion stack of an AST/PCH file.
-  const SrcMgr::SLocEntry &(SourceManager::*Getter)(unsigned, bool*) const;
-  if (n == 1) {
-    Getter = &SourceManager::getLoadedSLocEntry;
-    n = SM.loaded_sloc_entry_size();
-  } else
-    Getter = &SourceManager::getLocalSLocEntry;
-
-  for (unsigned i = 0 ; i < n ; ++i) {
-    bool Invalid = false;
-    const SrcMgr::SLocEntry &SL = (SM.*Getter)(i, &Invalid);
-    
-    if (!SL.isFile() || Invalid)
-      continue;
-
-    const SrcMgr::FileInfo &FI = SL.getFile();
-    if (!FI.getContentCache()->OrigEntry)
-      continue;
-    
-    // Build the inclusion stack.
-    SourceLocation L = FI.getIncludeLoc();
-    InclusionStack.clear();
-    while (L.isValid()) {
-      PresumedLoc PLoc = SM.getPresumedLoc(L);
-      InclusionStack.push_back(cxloc::translateSourceLocation(Ctx, L));
-      L = PLoc.isValid()? PLoc.getIncludeLoc() : SourceLocation();
-    }
-            
-    // Callback to the client.
-    // FIXME: We should have a function to construct CXFiles.
-    CB(static_cast<CXFile>(
-         const_cast<FileEntry *>(FI.getContentCache()->OrigEntry)), 
-       InclusionStack.data(), InclusionStack.size(), clientData);
-  }    
-}
-} // end extern C

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexUSRs.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexUSRs.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexUSRs.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,916 +0,0 @@
-//===- CIndexUSR.cpp - Clang-C Source Indexing Library --------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the generation and use of USRs from CXEntities.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CIndexer.h"
-#include "CXCursor.h"
-#include "CXString.h"
-#include "clang/AST/DeclTemplate.h"
-#include "clang/AST/DeclVisitor.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "clang/Lex/PreprocessingRecord.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/Support/raw_ostream.h"
-
-using namespace clang;
-
-//===----------------------------------------------------------------------===//
-// USR generation.
-//===----------------------------------------------------------------------===//
-
-namespace {
-class USRGenerator : public ConstDeclVisitor<USRGenerator> {
-  OwningPtr<SmallString<128> > OwnedBuf;
-  SmallVectorImpl<char> &Buf;
-  llvm::raw_svector_ostream Out;
-  bool IgnoreResults;
-  ASTContext *Context;
-  bool generatedLoc;
-  
-  llvm::DenseMap<const Type *, unsigned> TypeSubstitutions;
-  
-public:
-  explicit USRGenerator(ASTContext *Ctx = 0, SmallVectorImpl<char> *extBuf = 0)
-  : OwnedBuf(extBuf ? 0 : new SmallString<128>()),
-    Buf(extBuf ? *extBuf : *OwnedBuf.get()),
-    Out(Buf),
-    IgnoreResults(false),
-    Context(Ctx),
-    generatedLoc(false)
-  {
-    // Add the USR space prefix.
-    Out << "c:";
-  }
-
-  StringRef str() {
-    return Out.str();
-  }
-
-  USRGenerator* operator->() { return this; }
-
-  template <typename T>
-  llvm::raw_svector_ostream &operator<<(const T &x) {
-    Out << x;
-    return Out;
-  }
-
-  bool ignoreResults() const { return IgnoreResults; }
-
-  // Visitation methods from generating USRs from AST elements.
-  void VisitDeclContext(const DeclContext *D);
-  void VisitFieldDecl(const FieldDecl *D);
-  void VisitFunctionDecl(const FunctionDecl *D);
-  void VisitNamedDecl(const NamedDecl *D);
-  void VisitNamespaceDecl(const NamespaceDecl *D);
-  void VisitNamespaceAliasDecl(const NamespaceAliasDecl *D);
-  void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D);
-  void VisitClassTemplateDecl(const ClassTemplateDecl *D);
-  void VisitObjCContainerDecl(const ObjCContainerDecl *CD);
-  void VisitObjCMethodDecl(const ObjCMethodDecl *MD);
-  void VisitObjCPropertyDecl(const ObjCPropertyDecl *D);
-  void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D);
-  void VisitTagDecl(const TagDecl *D);
-  void VisitTypedefDecl(const TypedefDecl *D);
-  void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D);
-  void VisitVarDecl(const VarDecl *D);
-  void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D);
-  void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D);
-  void VisitLinkageSpecDecl(const LinkageSpecDecl *D) {
-    IgnoreResults = true;
-  }
-  void VisitUsingDirectiveDecl(const UsingDirectiveDecl *D) {
-    IgnoreResults = true;
-  }
-  void VisitUsingDecl(const UsingDecl *D) {
-    IgnoreResults = true;
-  }
-  void VisitUnresolvedUsingValueDecl(const UnresolvedUsingValueDecl *D) {
-    IgnoreResults = true;
-  }
-  void VisitUnresolvedUsingTypenameDecl(const UnresolvedUsingTypenameDecl *D) {
-    IgnoreResults = true;
-  }
-  
-  /// Generate the string component containing the location of the
-  ///  declaration.
-  bool GenLoc(const Decl *D);
-
-  /// String generation methods used both by the visitation methods
-  /// and from other clients that want to directly generate USRs.  These
-  /// methods do not construct complete USRs (which incorporate the parents
-  /// of an AST element), but only the fragments concerning the AST element
-  /// itself.
-
-  /// Generate a USR for an Objective-C class.
-  void GenObjCClass(StringRef cls);
-  /// Generate a USR for an Objective-C class category.
-  void GenObjCCategory(StringRef cls, StringRef cat);
-  /// Generate a USR fragment for an Objective-C instance variable.  The
-  /// complete USR can be created by concatenating the USR for the
-  /// encompassing class with this USR fragment.
-  void GenObjCIvar(StringRef ivar);
-  /// Generate a USR fragment for an Objective-C method.
-  void GenObjCMethod(StringRef sel, bool isInstanceMethod);
-  /// Generate a USR fragment for an Objective-C property.
-  void GenObjCProperty(StringRef prop);
-  /// Generate a USR for an Objective-C protocol.
-  void GenObjCProtocol(StringRef prot);
-
-  void VisitType(QualType T);
-  void VisitTemplateParameterList(const TemplateParameterList *Params);
-  void VisitTemplateName(TemplateName Name);
-  void VisitTemplateArgument(const TemplateArgument &Arg);
-  
-  /// Emit a Decl's name using NamedDecl::printName() and return true if
-  ///  the decl had no name.
-  bool EmitDeclName(const NamedDecl *D);
-};
-
-} // end anonymous namespace
-
-//===----------------------------------------------------------------------===//
-// Generating USRs from ASTS.
-//===----------------------------------------------------------------------===//
-
-bool USRGenerator::EmitDeclName(const NamedDecl *D) {
-  Out.flush();
-  const unsigned startSize = Buf.size();
-  D->printName(Out);
-  Out.flush();
-  const unsigned endSize = Buf.size();
-  return startSize == endSize;
-}
-
-static inline bool ShouldGenerateLocation(const NamedDecl *D) {
-  return D->getLinkage() != ExternalLinkage;
-}
-
-void USRGenerator::VisitDeclContext(const DeclContext *DC) {
-  if (const NamedDecl *D = dyn_cast<NamedDecl>(DC))
-    Visit(D);
-}
-
-void USRGenerator::VisitFieldDecl(const FieldDecl *D) {
-  // The USR for an ivar declared in a class extension is based on the
-  // ObjCInterfaceDecl, not the ObjCCategoryDecl.
-  if (const ObjCInterfaceDecl *ID = Context->getObjContainingInterface(D))
-    Visit(ID);
-  else
-    VisitDeclContext(D->getDeclContext());
-  Out << (isa<ObjCIvarDecl>(D) ? "@" : "@FI@");
-  if (EmitDeclName(D)) {
-    // Bit fields can be anonymous.
-    IgnoreResults = true;
-    return;
-  }
-}
-
-void USRGenerator::VisitFunctionDecl(const FunctionDecl *D) {
-  if (ShouldGenerateLocation(D) && GenLoc(D))
-    return;
-
-  VisitDeclContext(D->getDeclContext());
-  if (FunctionTemplateDecl *FunTmpl = D->getDescribedFunctionTemplate()) {
-    Out << "@FT@";
-    VisitTemplateParameterList(FunTmpl->getTemplateParameters());
-  } else
-    Out << "@F@";
-  D->printName(Out);
-
-  ASTContext &Ctx = *Context;
-  if (!Ctx.getLangOpts().CPlusPlus || D->isExternC())
-    return;
-
-  if (const TemplateArgumentList *
-        SpecArgs = D->getTemplateSpecializationArgs()) {
-    Out << '<';
-    for (unsigned I = 0, N = SpecArgs->size(); I != N; ++I) {
-      Out << '#';
-      VisitTemplateArgument(SpecArgs->get(I));
-    }
-    Out << '>';
-  }
-
-  // Mangle in type information for the arguments.
-  for (FunctionDecl::param_const_iterator I = D->param_begin(),
-                                          E = D->param_end();
-       I != E; ++I) {
-    Out << '#';
-    if (ParmVarDecl *PD = *I)
-      VisitType(PD->getType());
-  }
-  if (D->isVariadic())
-    Out << '.';
-  Out << '#';
-  if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(D)) {
-    if (MD->isStatic())
-      Out << 'S';
-    if (unsigned quals = MD->getTypeQualifiers())
-      Out << (char)('0' + quals);
-  }
-}
-
-void USRGenerator::VisitNamedDecl(const NamedDecl *D) {
-  VisitDeclContext(D->getDeclContext());
-  Out << "@";
-
-  if (EmitDeclName(D)) {
-    // The string can be empty if the declaration has no name; e.g., it is
-    // the ParmDecl with no name for declaration of a function pointer type,
-    // e.g.: void  (*f)(void *);
-    // In this case, don't generate a USR.
-    IgnoreResults = true;
-  }
-}
-
-void USRGenerator::VisitVarDecl(const VarDecl *D) {
-  // VarDecls can be declared 'extern' within a function or method body,
-  // but their enclosing DeclContext is the function, not the TU.  We need
-  // to check the storage class to correctly generate the USR.
-  if (ShouldGenerateLocation(D) && GenLoc(D))
-    return;
-
-  VisitDeclContext(D->getDeclContext());
-
-  // Variables always have simple names.
-  StringRef s = D->getName();
-
-  // The string can be empty if the declaration has no name; e.g., it is
-  // the ParmDecl with no name for declaration of a function pointer type, e.g.:
-  //    void  (*f)(void *);
-  // In this case, don't generate a USR.
-  if (s.empty())
-    IgnoreResults = true;
-  else
-    Out << '@' << s;
-}
-
-void USRGenerator::VisitNonTypeTemplateParmDecl(
-                                        const NonTypeTemplateParmDecl *D) {
-  GenLoc(D);
-  return;
-}
-
-void USRGenerator::VisitTemplateTemplateParmDecl(
-                                        const TemplateTemplateParmDecl *D) {
-  GenLoc(D);
-  return;
-}
-
-void USRGenerator::VisitNamespaceDecl(const NamespaceDecl *D) {
-  if (D->isAnonymousNamespace()) {
-    Out << "@aN";
-    return;
-  }
-
-  VisitDeclContext(D->getDeclContext());
-  if (!IgnoreResults)
-    Out << "@N@" << D->getName();
-}
-
-void USRGenerator::VisitFunctionTemplateDecl(const FunctionTemplateDecl *D) {
-  VisitFunctionDecl(D->getTemplatedDecl());
-}
-
-void USRGenerator::VisitClassTemplateDecl(const ClassTemplateDecl *D) {
-  VisitTagDecl(D->getTemplatedDecl());
-}
-
-void USRGenerator::VisitNamespaceAliasDecl(const NamespaceAliasDecl *D) {
-  VisitDeclContext(D->getDeclContext());
-  if (!IgnoreResults)
-    Out << "@NA@" << D->getName();  
-}
-
-void USRGenerator::VisitObjCMethodDecl(const ObjCMethodDecl *D) {
-  const DeclContext *container = D->getDeclContext();
-  if (const ObjCProtocolDecl *pd = dyn_cast<ObjCProtocolDecl>(container)) {
-    Visit(pd);
-  }
-  else {
-    // The USR for a method declared in a class extension or category is based on
-    // the ObjCInterfaceDecl, not the ObjCCategoryDecl.
-    const ObjCInterfaceDecl *ID = D->getClassInterface();
-    if (!ID) {
-      IgnoreResults = true;
-      return;
-    }
-    Visit(ID);
-  }
-  // Ideally we would use 'GenObjCMethod', but this is such a hot path
-  // for Objective-C code that we don't want to use
-  // DeclarationName::getAsString().
-  Out << (D->isInstanceMethod() ? "(im)" : "(cm)");
-  DeclarationName N(D->getSelector());
-  N.printName(Out);
-}
-
-void USRGenerator::VisitObjCContainerDecl(const ObjCContainerDecl *D) {
-  switch (D->getKind()) {
-    default:
-      llvm_unreachable("Invalid ObjC container.");
-    case Decl::ObjCInterface:
-    case Decl::ObjCImplementation:
-      GenObjCClass(D->getName());
-      break;
-    case Decl::ObjCCategory: {
-      const ObjCCategoryDecl *CD = cast<ObjCCategoryDecl>(D);
-      const ObjCInterfaceDecl *ID = CD->getClassInterface();
-      if (!ID) {
-        // Handle invalid code where the @interface might not
-        // have been specified.
-        // FIXME: We should be able to generate this USR even if the
-        // @interface isn't available.
-        IgnoreResults = true;
-        return;
-      }
-      // Specially handle class extensions, which are anonymous categories.
-      // We want to mangle in the location to uniquely distinguish them.
-      if (CD->IsClassExtension()) {
-        Out << "objc(ext)" << ID->getName() << '@';
-        GenLoc(CD);
-      }
-      else
-        GenObjCCategory(ID->getName(), CD->getName());
-
-      break;
-    }
-    case Decl::ObjCCategoryImpl: {
-      const ObjCCategoryImplDecl *CD = cast<ObjCCategoryImplDecl>(D);
-      const ObjCInterfaceDecl *ID = CD->getClassInterface();
-      if (!ID) {
-        // Handle invalid code where the @interface might not
-        // have been specified.
-        // FIXME: We should be able to generate this USR even if the
-        // @interface isn't available.
-        IgnoreResults = true;
-        return;
-      }
-      GenObjCCategory(ID->getName(), CD->getName());
-      break;
-    }
-    case Decl::ObjCProtocol:
-      GenObjCProtocol(cast<ObjCProtocolDecl>(D)->getName());
-      break;
-  }
-}
-
-void USRGenerator::VisitObjCPropertyDecl(const ObjCPropertyDecl *D) {
-  // The USR for a property declared in a class extension or category is based
-  // on the ObjCInterfaceDecl, not the ObjCCategoryDecl.
-  if (const ObjCInterfaceDecl *ID = Context->getObjContainingInterface(D))
-    Visit(ID);
-  else
-    Visit(cast<Decl>(D->getDeclContext()));
-  GenObjCProperty(D->getName());
-}
-
-void USRGenerator::VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D) {
-  if (ObjCPropertyDecl *PD = D->getPropertyDecl()) {
-    VisitObjCPropertyDecl(PD);
-    return;
-  }
-
-  IgnoreResults = true;
-}
-
-void USRGenerator::VisitTagDecl(const TagDecl *D) {
-  // Add the location of the tag decl to handle resolution across
-  // translation units.
-  if (ShouldGenerateLocation(D) && GenLoc(D))
-    return;
-
-  D = D->getCanonicalDecl();
-  VisitDeclContext(D->getDeclContext());
-
-  bool AlreadyStarted = false;
-  if (const CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(D)) {
-    if (ClassTemplateDecl *ClassTmpl = CXXRecord->getDescribedClassTemplate()) {
-      AlreadyStarted = true;
-      
-      switch (D->getTagKind()) {
-      case TTK_Interface:
-      case TTK_Struct: Out << "@ST"; break;
-      case TTK_Class:  Out << "@CT"; break;
-      case TTK_Union:  Out << "@UT"; break;
-      case TTK_Enum: llvm_unreachable("enum template");
-      }
-      VisitTemplateParameterList(ClassTmpl->getTemplateParameters());
-    } else if (const ClassTemplatePartialSpecializationDecl *PartialSpec
-                = dyn_cast<ClassTemplatePartialSpecializationDecl>(CXXRecord)) {
-      AlreadyStarted = true;
-      
-      switch (D->getTagKind()) {
-      case TTK_Interface:
-      case TTK_Struct: Out << "@SP"; break;
-      case TTK_Class:  Out << "@CP"; break;
-      case TTK_Union:  Out << "@UP"; break;
-      case TTK_Enum: llvm_unreachable("enum partial specialization");
-      }      
-      VisitTemplateParameterList(PartialSpec->getTemplateParameters());
-    }
-  }
-  
-  if (!AlreadyStarted) {
-    switch (D->getTagKind()) {
-      case TTK_Interface:
-      case TTK_Struct: Out << "@S"; break;
-      case TTK_Class:  Out << "@C"; break;
-      case TTK_Union:  Out << "@U"; break;
-      case TTK_Enum:   Out << "@E"; break;
-    }
-  }
-  
-  Out << '@';
-  Out.flush();
-  assert(Buf.size() > 0);
-  const unsigned off = Buf.size() - 1;
-
-  if (EmitDeclName(D)) {
-    if (const TypedefNameDecl *TD = D->getTypedefNameForAnonDecl()) {
-      Buf[off] = 'A';
-      Out << '@' << *TD;
-    }
-    else
-      Buf[off] = 'a';
-  }
-  
-  // For a class template specialization, mangle the template arguments.
-  if (const ClassTemplateSpecializationDecl *Spec
-                              = dyn_cast<ClassTemplateSpecializationDecl>(D)) {
-    const TemplateArgumentList &Args = Spec->getTemplateInstantiationArgs();
-    Out << '>';
-    for (unsigned I = 0, N = Args.size(); I != N; ++I) {
-      Out << '#';
-      VisitTemplateArgument(Args.get(I));
-    }
-  }
-}
-
-void USRGenerator::VisitTypedefDecl(const TypedefDecl *D) {
-  if (ShouldGenerateLocation(D) && GenLoc(D))
-    return;
-  const DeclContext *DC = D->getDeclContext();
-  if (const NamedDecl *DCN = dyn_cast<NamedDecl>(DC))
-    Visit(DCN);
-  Out << "@T@";
-  Out << D->getName();
-}
-
-void USRGenerator::VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D) {
-  GenLoc(D);
-  return;
-}
-
-bool USRGenerator::GenLoc(const Decl *D) {
-  if (generatedLoc)
-    return IgnoreResults;
-  generatedLoc = true;
-  
-  // Guard against null declarations in invalid code.
-  if (!D) {
-    IgnoreResults = true;
-    return true;
-  }
-
-  // Use the location of canonical decl.
-  D = D->getCanonicalDecl();
-
-  const SourceManager &SM = Context->getSourceManager();
-  SourceLocation L = D->getLocStart();
-  if (L.isInvalid()) {
-    IgnoreResults = true;
-    return true;
-  }
-  L = SM.getExpansionLoc(L);
-  const std::pair<FileID, unsigned> &Decomposed = SM.getDecomposedLoc(L);
-  const FileEntry *FE = SM.getFileEntryForID(Decomposed.first);
-  if (FE) {
-    Out << llvm::sys::path::filename(FE->getName());
-  }
-  else {
-    // This case really isn't interesting.
-    IgnoreResults = true;
-    return true;
-  }
-  // Use the offest into the FileID to represent the location.  Using
-  // a line/column can cause us to look back at the original source file,
-  // which is expensive.
-  Out << '@' << Decomposed.second;
-  return IgnoreResults;
-}
-
-void USRGenerator::VisitType(QualType T) {
-  // This method mangles in USR information for types.  It can possibly
-  // just reuse the naming-mangling logic used by codegen, although the
-  // requirements for USRs might not be the same.
-  ASTContext &Ctx = *Context;
-
-  do {
-    T = Ctx.getCanonicalType(T);
-    Qualifiers Q = T.getQualifiers();
-    unsigned qVal = 0;
-    if (Q.hasConst())
-      qVal |= 0x1;
-    if (Q.hasVolatile())
-      qVal |= 0x2;
-    if (Q.hasRestrict())
-      qVal |= 0x4;
-    if(qVal)
-      Out << ((char) ('0' + qVal));
-
-    // Mangle in ObjC GC qualifiers?
-
-    if (const PackExpansionType *Expansion = T->getAs<PackExpansionType>()) {
-      Out << 'P';
-      T = Expansion->getPattern();
-    }
-    
-    if (const BuiltinType *BT = T->getAs<BuiltinType>()) {
-      unsigned char c = '\0';
-      switch (BT->getKind()) {
-        case BuiltinType::Void:
-          c = 'v'; break;
-        case BuiltinType::Bool:
-          c = 'b'; break;
-        case BuiltinType::Char_U:
-        case BuiltinType::UChar:
-          c = 'c'; break;
-        case BuiltinType::Char16:
-          c = 'q'; break;
-        case BuiltinType::Char32:
-          c = 'w'; break;
-        case BuiltinType::UShort:
-          c = 's'; break;
-        case BuiltinType::UInt:
-          c = 'i'; break;
-        case BuiltinType::ULong:
-          c = 'l'; break;
-        case BuiltinType::ULongLong:
-          c = 'k'; break;
-        case BuiltinType::UInt128:
-          c = 'j'; break;
-        case BuiltinType::Char_S:
-        case BuiltinType::SChar:
-          c = 'C'; break;
-        case BuiltinType::WChar_S:
-        case BuiltinType::WChar_U:
-          c = 'W'; break;
-        case BuiltinType::Short:
-          c = 'S'; break;
-        case BuiltinType::Int:
-          c = 'I'; break;
-        case BuiltinType::Long:
-          c = 'L'; break;
-        case BuiltinType::LongLong:
-          c = 'K'; break;
-        case BuiltinType::Int128:
-          c = 'J'; break;
-        case BuiltinType::Half:
-          c = 'h'; break;
-        case BuiltinType::Float:
-          c = 'f'; break;
-        case BuiltinType::Double:
-          c = 'd'; break;
-        case BuiltinType::LongDouble:
-          c = 'D'; break;
-        case BuiltinType::NullPtr:
-          c = 'n'; break;
-#define BUILTIN_TYPE(Id, SingletonId)
-#define PLACEHOLDER_TYPE(Id, SingletonId) case BuiltinType::Id:
-#include "clang/AST/BuiltinTypes.def"
-        case BuiltinType::Dependent:
-        case BuiltinType::OCLImage1d:
-        case BuiltinType::OCLImage1dArray:
-        case BuiltinType::OCLImage1dBuffer:
-        case BuiltinType::OCLImage2d:
-        case BuiltinType::OCLImage2dArray:
-        case BuiltinType::OCLImage3d:
-        case BuiltinType::OCLEvent:
-        case BuiltinType::OCLSampler:
-          IgnoreResults = true;
-          return;
-        case BuiltinType::ObjCId:
-          c = 'o'; break;
-        case BuiltinType::ObjCClass:
-          c = 'O'; break;
-        case BuiltinType::ObjCSel:
-          c = 'e'; break;
-      }
-      Out << c;
-      return;
-    }
-
-    // If we have already seen this (non-built-in) type, use a substitution
-    // encoding.
-    llvm::DenseMap<const Type *, unsigned>::iterator Substitution
-      = TypeSubstitutions.find(T.getTypePtr());
-    if (Substitution != TypeSubstitutions.end()) {
-      Out << 'S' << Substitution->second << '_';
-      return;
-    } else {
-      // Record this as a substitution.
-      unsigned Number = TypeSubstitutions.size();
-      TypeSubstitutions[T.getTypePtr()] = Number;
-    }
-    
-    if (const PointerType *PT = T->getAs<PointerType>()) {
-      Out << '*';
-      T = PT->getPointeeType();
-      continue;
-    }
-    if (const ReferenceType *RT = T->getAs<ReferenceType>()) {
-      Out << '&';
-      T = RT->getPointeeType();
-      continue;
-    }
-    if (const FunctionProtoType *FT = T->getAs<FunctionProtoType>()) {
-      Out << 'F';
-      VisitType(FT->getResultType());
-      for (FunctionProtoType::arg_type_iterator
-            I = FT->arg_type_begin(), E = FT->arg_type_end(); I!=E; ++I) {
-        VisitType(*I);
-      }
-      if (FT->isVariadic())
-        Out << '.';
-      return;
-    }
-    if (const BlockPointerType *BT = T->getAs<BlockPointerType>()) {
-      Out << 'B';
-      T = BT->getPointeeType();
-      continue;
-    }
-    if (const ComplexType *CT = T->getAs<ComplexType>()) {
-      Out << '<';
-      T = CT->getElementType();
-      continue;
-    }
-    if (const TagType *TT = T->getAs<TagType>()) {
-      Out << '$';
-      VisitTagDecl(TT->getDecl());
-      return;
-    }
-    if (const TemplateTypeParmType *TTP = T->getAs<TemplateTypeParmType>()) {
-      Out << 't' << TTP->getDepth() << '.' << TTP->getIndex();
-      return;
-    }
-    if (const TemplateSpecializationType *Spec
-                                    = T->getAs<TemplateSpecializationType>()) {
-      Out << '>';
-      VisitTemplateName(Spec->getTemplateName());
-      Out << Spec->getNumArgs();
-      for (unsigned I = 0, N = Spec->getNumArgs(); I != N; ++I)
-        VisitTemplateArgument(Spec->getArg(I));
-      return;
-    }
-    
-    // Unhandled type.
-    Out << ' ';
-    break;
-  } while (true);
-}
-
-void USRGenerator::VisitTemplateParameterList(
-                                         const TemplateParameterList *Params) {
-  if (!Params)
-    return;
-  Out << '>' << Params->size();
-  for (TemplateParameterList::const_iterator P = Params->begin(),
-                                          PEnd = Params->end();
-       P != PEnd; ++P) {
-    Out << '#';
-    if (isa<TemplateTypeParmDecl>(*P)) {
-      if (cast<TemplateTypeParmDecl>(*P)->isParameterPack())
-        Out<< 'p';
-      Out << 'T';
-      continue;
-    }
-    
-    if (NonTypeTemplateParmDecl *NTTP = dyn_cast<NonTypeTemplateParmDecl>(*P)) {
-      if (NTTP->isParameterPack())
-        Out << 'p';
-      Out << 'N';
-      VisitType(NTTP->getType());
-      continue;
-    }
-    
-    TemplateTemplateParmDecl *TTP = cast<TemplateTemplateParmDecl>(*P);
-    if (TTP->isParameterPack())
-      Out << 'p';
-    Out << 't';
-    VisitTemplateParameterList(TTP->getTemplateParameters());
-  }
-}
-
-void USRGenerator::VisitTemplateName(TemplateName Name) {
-  if (TemplateDecl *Template = Name.getAsTemplateDecl()) {
-    if (TemplateTemplateParmDecl *TTP
-                              = dyn_cast<TemplateTemplateParmDecl>(Template)) {
-      Out << 't' << TTP->getDepth() << '.' << TTP->getIndex();
-      return;
-    }
-    
-    Visit(Template);
-    return;
-  }
-  
-  // FIXME: Visit dependent template names.
-}
-
-void USRGenerator::VisitTemplateArgument(const TemplateArgument &Arg) {
-  switch (Arg.getKind()) {
-  case TemplateArgument::Null:
-    break;
-
-  case TemplateArgument::Declaration:
-    Visit(Arg.getAsDecl());
-    break;
-
-  case TemplateArgument::NullPtr:
-    break;
-
-  case TemplateArgument::TemplateExpansion:
-    Out << 'P'; // pack expansion of...
-    // Fall through
-  case TemplateArgument::Template:
-    VisitTemplateName(Arg.getAsTemplateOrTemplatePattern());
-    break;
-      
-  case TemplateArgument::Expression:
-    // FIXME: Visit expressions.
-    break;
-      
-  case TemplateArgument::Pack:
-    Out << 'p' << Arg.pack_size();
-    for (TemplateArgument::pack_iterator P = Arg.pack_begin(), PEnd = Arg.pack_end();
-         P != PEnd; ++P)
-      VisitTemplateArgument(*P);
-    break;
-      
-  case TemplateArgument::Type:
-    VisitType(Arg.getAsType());
-    break;
-      
-  case TemplateArgument::Integral:
-    Out << 'V';
-    VisitType(Arg.getIntegralType());
-    Out << Arg.getAsIntegral();
-    break;
-  }
-}
-
-//===----------------------------------------------------------------------===//
-// General purpose USR generation methods.
-//===----------------------------------------------------------------------===//
-
-void USRGenerator::GenObjCClass(StringRef cls) {
-  Out << "objc(cs)" << cls;
-}
-
-void USRGenerator::GenObjCCategory(StringRef cls, StringRef cat) {
-  Out << "objc(cy)" << cls << '@' << cat;
-}
-
-void USRGenerator::GenObjCIvar(StringRef ivar) {
-  Out << '@' << ivar;
-}
-
-void USRGenerator::GenObjCMethod(StringRef meth, bool isInstanceMethod) {
-  Out << (isInstanceMethod ? "(im)" : "(cm)") << meth;
-}
-
-void USRGenerator::GenObjCProperty(StringRef prop) {
-  Out << "(py)" << prop;
-}
-
-void USRGenerator::GenObjCProtocol(StringRef prot) {
-  Out << "objc(pl)" << prot;
-}
-
-//===----------------------------------------------------------------------===//
-// API hooks.
-//===----------------------------------------------------------------------===//
-
-static inline StringRef extractUSRSuffix(StringRef s) {
-  return s.startswith("c:") ? s.substr(2) : "";
-}
-
-bool cxcursor::getDeclCursorUSR(const Decl *D, SmallVectorImpl<char> &Buf) {
-  // Don't generate USRs for things with invalid locations.
-  if (!D || D->getLocStart().isInvalid())
-    return true;
-
-  USRGenerator UG(&D->getASTContext(), &Buf);
-  UG->Visit(D);
-
-  if (UG->ignoreResults())
-    return true;
-
-  return false;
-}
-
-extern "C" {
-
-CXString clang_getCursorUSR(CXCursor C) {
-  const CXCursorKind &K = clang_getCursorKind(C);
-
-  if (clang_isDeclaration(K)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-    if (!D)
-      return cxstring::createEmpty();
-
-    CXTranslationUnit TU = cxcursor::getCursorTU(C);
-    if (!TU)
-      return cxstring::createEmpty();
-
-    cxstring::CXStringBuf *buf = cxstring::getCXStringBuf(TU);
-    if (!buf)
-      return cxstring::createEmpty();
-
-    bool Ignore = cxcursor::getDeclCursorUSR(D, buf->Data);
-    if (Ignore) {
-      buf->dispose();
-      return cxstring::createEmpty();
-    }
-
-    // Return the C-string, but don't make a copy since it is already in
-    // the string buffer.
-    buf->Data.push_back('\0');
-    return createCXString(buf);
-  }
-
-  if (K == CXCursor_MacroDefinition) {
-    CXTranslationUnit TU = cxcursor::getCursorTU(C);
-    if (!TU)
-      return cxstring::createEmpty();
-
-    cxstring::CXStringBuf *buf = cxstring::getCXStringBuf(TU);
-    if (!buf)
-      return cxstring::createEmpty();
-
-    {
-      USRGenerator UG(&cxcursor::getCursorASTUnit(C)->getASTContext(),
-                      &buf->Data);
-      UG << "macro@"
-        << cxcursor::getCursorMacroDefinition(C)->getName()->getNameStart();
-    }
-    buf->Data.push_back('\0');
-    return createCXString(buf);
-  }
-
-  return cxstring::createEmpty();
-}
-
-CXString clang_constructUSR_ObjCIvar(const char *name, CXString classUSR) {
-  USRGenerator UG;
-  UG << extractUSRSuffix(clang_getCString(classUSR));
-  UG->GenObjCIvar(name);
-  return cxstring::createDup(UG.str());
-}
-
-CXString clang_constructUSR_ObjCMethod(const char *name,
-                                       unsigned isInstanceMethod,
-                                       CXString classUSR) {
-  USRGenerator UG;
-  UG << extractUSRSuffix(clang_getCString(classUSR));
-  UG->GenObjCMethod(name, isInstanceMethod);
-  return cxstring::createDup(UG.str());
-}
-
-CXString clang_constructUSR_ObjCClass(const char *name) {
-  USRGenerator UG;
-  UG->GenObjCClass(name);
-  return cxstring::createDup(UG.str());
-}
-
-CXString clang_constructUSR_ObjCProtocol(const char *name) {
-  USRGenerator UG;
-  UG->GenObjCProtocol(name);
-  return cxstring::createDup(UG.str());
-}
-
-CXString clang_constructUSR_ObjCCategory(const char *class_name,
-                                         const char *category_name) {
-  USRGenerator UG;
-  UG->GenObjCCategory(class_name, category_name);
-  return cxstring::createDup(UG.str());
-}
-
-CXString clang_constructUSR_ObjCProperty(const char *property,
-                                         CXString classUSR) {
-  USRGenerator UG;
-  UG << extractUSRSuffix(clang_getCString(classUSR));
-  UG->GenObjCProperty(property);
-  return cxstring::createDup(UG.str());
-}
-
-} // end extern "C"

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,150 +0,0 @@
-//===- CIndex.cpp - Clang-C Source Indexing Library -----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the Clang-C Source Indexing library.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CIndexer.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclVisitor.h"
-#include "clang/AST/StmtVisitor.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Basic/Version.h"
-#include "clang/Sema/CodeCompleteConsumer.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/Config/llvm-config.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/Program.h"
-#include "llvm/Support/raw_ostream.h"
-#include <cstdio>
-#include <sstream>
-#include <vector>
-
-#ifdef __CYGWIN__
-#include <cygwin/version.h>
-#include <sys/cygwin.h>
-#define LLVM_ON_WIN32 1
-#endif
-
-#ifdef LLVM_ON_WIN32
-#include <windows.h>
-#else
-#include <dlfcn.h>
-#endif
-
-using namespace clang;
-
-std::string CIndexer::getClangResourcesPath() {
-  // Did we already compute the path?
-  if (!ResourcesPath.empty())
-    return ResourcesPath.str();
-  
-  // Find the location where this library lives (libclang.dylib).
-#ifdef LLVM_ON_WIN32
-  MEMORY_BASIC_INFORMATION mbi;
-  char path[MAX_PATH];
-  VirtualQuery((void *)(uintptr_t)clang_createTranslationUnit, &mbi,
-               sizeof(mbi));
-  GetModuleFileNameA((HINSTANCE)mbi.AllocationBase, path, MAX_PATH);
-
-#ifdef __CYGWIN__
-  char w32path[MAX_PATH];
-  strcpy(w32path, path);
-#if CYGWIN_VERSION_API_MAJOR > 0 || CYGWIN_VERSION_API_MINOR >= 181
-  cygwin_conv_path(CCP_WIN_A_TO_POSIX, w32path, path, MAX_PATH);
-#else
-  cygwin_conv_to_full_posix_path(w32path, path);
-#endif
-#endif
-
-  llvm::sys::Path LibClangPath(path);
-  LibClangPath.eraseComponent();
-#else
-  // This silly cast below avoids a C++ warning.
-  Dl_info info;
-  if (dladdr((void *)(uintptr_t)clang_createTranslationUnit, &info) == 0)
-    llvm_unreachable("Call to dladdr() failed");
-  
-  llvm::sys::Path LibClangPath(info.dli_fname);
-  
-  // We now have the CIndex directory, locate clang relative to it.
-  LibClangPath.eraseComponent();
-#endif
-  
-  LibClangPath.appendComponent("clang");
-  LibClangPath.appendComponent(CLANG_VERSION_STRING);
-
-  // Cache our result.
-  ResourcesPath = LibClangPath;
-  return LibClangPath.str();
-}
-
-static llvm::sys::Path GetTemporaryPath() {
-  // FIXME: This is lame; sys::Path should provide this function (in particular,
-  // it should know how to find the temporary files dir).
-  std::string Error;
-  const char *TmpDir = ::getenv("TMPDIR");
-  if (!TmpDir)
-    TmpDir = ::getenv("TEMP");
-  if (!TmpDir)
-    TmpDir = ::getenv("TMP");
-  if (!TmpDir)
-    TmpDir = "/tmp";
-  llvm::sys::Path P(TmpDir);
-  P.appendComponent("remap");
-  if (P.makeUnique(false, &Error))
-    return llvm::sys::Path("");
-
-  // FIXME: Grumble, makeUnique sometimes leaves the file around!?  PR3837.
-  P.eraseFromDisk(false, 0);
-
-  return P;
-}
-
-bool clang::RemapFiles(unsigned num_unsaved_files,
-                       struct CXUnsavedFile *unsaved_files,
-                       std::vector<std::string> &RemapArgs,
-                       std::vector<llvm::sys::Path> &TemporaryFiles) {
-  for (unsigned i = 0; i != num_unsaved_files; ++i) {
-    // Write the contents of this unsaved file into the temporary file.
-    llvm::sys::Path SavedFile(GetTemporaryPath());
-    if (SavedFile.empty())
-      return true;
-
-    std::string ErrorInfo;
-    llvm::raw_fd_ostream OS(SavedFile.c_str(), ErrorInfo,
-                            llvm::raw_fd_ostream::F_Binary);
-    if (!ErrorInfo.empty())
-      return true;
-    
-    OS.write(unsaved_files[i].Contents, unsaved_files[i].Length);
-    OS.close();
-    if (OS.has_error()) {
-      SavedFile.eraseFromDisk();
-      OS.clear_error();
-      return true;
-    }
-    
-    // Remap the file.
-    std::string RemapArg = unsaved_files[i].Filename;
-    RemapArg += ';';
-    RemapArg += SavedFile.str();
-    RemapArgs.push_back("-Xclang");
-    RemapArgs.push_back("-remap-file");
-    RemapArgs.push_back("-Xclang");
-    RemapArgs.push_back(RemapArg);
-    TemporaryFiles.push_back(SavedFile);
-  }
-  
-  return false;
-}
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CIndexer.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CIndexer.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CIndexer.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,129 +0,0 @@
-//===- CIndexer.h - Clang-C Source Indexing Library -------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines CIndexer, a subclass of Indexer that provides extra
-// functionality needed by the CIndex library.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_CINDEXER_H
-#define LLVM_CLANG_CINDEXER_H
-
-#include "clang-c/Index.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/Path.h"
-#include <vector>
-
-namespace llvm {
-  class CrashRecoveryContext;
-}
-
-namespace clang {
-  class ASTUnit;
-  class MacroInfo;
-  class MacroDefinition;
-  class SourceLocation;
-  class Token;
-  class IdentifierInfo;
-
-class CIndexer {
-  bool OnlyLocalDecls;
-  bool DisplayDiagnostics;
-  unsigned Options; // CXGlobalOptFlags.
-
-  llvm::sys::Path ResourcesPath;
-
-public:
- CIndexer() : OnlyLocalDecls(false), DisplayDiagnostics(false),
-              Options(CXGlobalOpt_None) { }
-  
-  /// \brief Whether we only want to see "local" declarations (that did not
-  /// come from a previous precompiled header). If false, we want to see all
-  /// declarations.
-  bool getOnlyLocalDecls() const { return OnlyLocalDecls; }
-  void setOnlyLocalDecls(bool Local = true) { OnlyLocalDecls = Local; }
-  
-  bool getDisplayDiagnostics() const { return DisplayDiagnostics; }
-  void setDisplayDiagnostics(bool Display = true) {
-    DisplayDiagnostics = Display;
-  }
-
-  unsigned getCXGlobalOptFlags() const { return Options; }
-  void setCXGlobalOptFlags(unsigned options) { Options = options; }
-
-  bool isOptEnabled(CXGlobalOptFlags opt) const {
-    return Options & opt;
-  }
-
-  /// \brief Get the path of the clang resource files.
-  std::string getClangResourcesPath();
-};
-
-  /**
-   * \brief Given a set of "unsaved" files, create temporary files and 
-   * construct the clang -cc1 argument list needed to perform the remapping.
-   *
-   * \returns true if an error occurred.
-   */
-  bool RemapFiles(unsigned num_unsaved_files,
-                  struct CXUnsavedFile *unsaved_files,
-                  std::vector<std::string> &RemapArgs,
-                  std::vector<llvm::sys::Path> &TemporaryFiles);
-
-  /// \brief Return the current size to request for "safety".
-  unsigned GetSafetyThreadStackSize();
-
-  /// \brief Set the current size to request for "safety" (or 0, if safety
-  /// threads should not be used).
-  void SetSafetyThreadStackSize(unsigned Value);
-
-  /// \brief Execution the given code "safely", using crash recovery or safety
-  /// threads when possible.
-  ///
-  /// \return False if a crash was detected.
-  bool RunSafely(llvm::CrashRecoveryContext &CRC,
-                 void (*Fn)(void*), void *UserData, unsigned Size = 0);
-
-  /// \brief Set the thread priority to background.
-  /// FIXME: Move to llvm/Support.
-  void setThreadBackgroundPriority();
-
-  /// \brief Print libclang's resource usage to standard error.
-  void PrintLibclangResourceUsage(CXTranslationUnit TU);
-
-  namespace cxindex {
-    void printDiagsToStderr(ASTUnit *Unit);
-
-    /// \brief If \c MacroDefLoc points at a macro definition with \c II as
-    /// its name, this retrieves its MacroInfo.
-    MacroInfo *getMacroInfo(const IdentifierInfo &II,
-                            SourceLocation MacroDefLoc,
-                            CXTranslationUnit TU);
-
-    /// \brief Retrieves the corresponding MacroInfo of a MacroDefinition.
-    const MacroInfo *getMacroInfo(const MacroDefinition *MacroDef,
-                                  CXTranslationUnit TU);
-
-    /// \brief If \c Loc resides inside the definition of \c MI and it points at
-    /// an identifier that has ever been a macro name, this returns the latest
-    /// MacroDefinition for that name, otherwise it returns NULL.
-    MacroDefinition *checkForMacroInMacroDefinition(const MacroInfo *MI,
-                                                    SourceLocation Loc,
-                                                    CXTranslationUnit TU);
-
-    /// \brief If \c Tok resides inside the definition of \c MI and it points at
-    /// an identifier that has ever been a macro name, this returns the latest
-    /// MacroDefinition for that name, otherwise it returns NULL.
-    MacroDefinition *checkForMacroInMacroDefinition(const MacroInfo *MI,
-                                                    const Token &Tok,
-                                                    CXTranslationUnit TU);
-  }
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CLog.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CLog.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CLog.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,101 +0,0 @@
-//===- CLog.h - Logging Interface -------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIBCLANG_CLOG_H
-#define LLVM_LIBCLANG_CLOG_H
-
-#include "clang/Basic/LLVM.h"
-#include "llvm/ADT/IntrusiveRefCntPtr.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/raw_ostream.h"
-#include <string>
-
-namespace llvm {
-class format_object_base;
-}
-
-namespace clang {
-  class FileEntry;
-
-namespace cxindex {
-
-class Logger;
-typedef IntrusiveRefCntPtr<Logger> LogRef;
-
-/// \brief Collects logging output and writes it to stderr when it's destructed.
-/// Common use case:
-/// \code
-///   if (LogRef Log = Logger::make(__func__)) {
-///     *Log << "stuff";
-///   }
-/// \endcode
-class Logger : public RefCountedBase<Logger> {
-  std::string Name;
-  bool Trace;
-  SmallString<64> Msg;
-  llvm::raw_svector_ostream LogOS;
-public:
-  static const char *getEnvVar() {
-    static const char *sCachedVar = ::getenv("LIBCLANG_LOGGING");
-    return sCachedVar;
-  }
-  static bool isLoggingEnabled() { return getEnvVar() != 0; }
-  static bool isStackTracingEnabled() {
-    if (const char *EnvOpt = Logger::getEnvVar())
-      return llvm::StringRef(EnvOpt) == "2";
-    return false;
-  }
-  static LogRef make(llvm::StringRef name,
-                     bool trace = isStackTracingEnabled()) {
-    if (isLoggingEnabled())
-      return new Logger(name, trace);
-    return 0;
-  }
-
-  explicit Logger(llvm::StringRef name, bool trace)
-    : Name(name), Trace(trace), LogOS(Msg) { }
-  ~Logger();
-
-  Logger &operator<<(CXTranslationUnit);
-  Logger &operator<<(const FileEntry *FE);
-  Logger &operator<<(CXCursor cursor);
-  Logger &operator<<(CXSourceLocation);
-  Logger &operator<<(CXSourceRange);
-  Logger &operator<<(CXString);
-  Logger &operator<<(llvm::StringRef Str) { LogOS << Str; return *this; }
-  Logger &operator<<(const char *Str) {
-    if (Str)
-      LogOS << Str;
-    return *this;
-  }
-  Logger &operator<<(unsigned long N) { LogOS << N; return *this; }
-  Logger &operator<<(long N) { LogOS << N ; return *this; }
-  Logger &operator<<(unsigned int N) { LogOS << N; return *this; }
-  Logger &operator<<(int N) { LogOS << N; return *this; }
-  Logger &operator<<(char C) { LogOS << C; return *this; }
-  Logger &operator<<(unsigned char C) { LogOS << C; return *this; }
-  Logger &operator<<(signed char C) { LogOS << C; return *this; }
-  Logger &operator<<(const llvm::format_object_base &Fmt);
-};
-
-}
-}
-
-/// \brief Macros to automate common uses of Logger. Like this:
-/// \code
-///   LOG_FUNC_SECTION {
-///     *Log << "blah";
-///   }
-/// \endcode
-#define LOG_SECTION(NAME) if (LogRef Log = clang::cxindex::Logger::make(NAME))
-#define LOG_FUNC_SECTION LOG_SECTION(LLVM_FUNCTION_NAME)
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXComment.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXComment.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXComment.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1447 +0,0 @@
-//===- CXComment.cpp - libclang APIs for manipulating CXComments ----------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines all libclang APIs related to walking comment AST.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang-c/Index.h"
-#include "CXComment.h"
-#include "CXCursor.h"
-#include "CXString.h"
-#include "SimpleFormatContext.h"
-#include "clang/AST/CommentCommandTraits.h"
-#include "clang/AST/CommentVisitor.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/PrettyPrinter.h"
-#include "clang/Format/Format.h"
-#include "clang/Lex/Lexer.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/ADT/StringSwitch.h"
-#include "llvm/Support/ErrorHandling.h"
-#include "llvm/Support/raw_ostream.h"
-#include <climits>
-
-using namespace clang;
-using namespace clang::comments;
-using namespace clang::cxcomment;
-
-extern "C" {
-
-enum CXCommentKind clang_Comment_getKind(CXComment CXC) {
-  const Comment *C = getASTNode(CXC);
-  if (!C)
-    return CXComment_Null;
-
-  switch (C->getCommentKind()) {
-  case Comment::NoCommentKind:
-    return CXComment_Null;
-
-  case Comment::TextCommentKind:
-    return CXComment_Text;
-
-  case Comment::InlineCommandCommentKind:
-    return CXComment_InlineCommand;
-
-  case Comment::HTMLStartTagCommentKind:
-    return CXComment_HTMLStartTag;
-
-  case Comment::HTMLEndTagCommentKind:
-    return CXComment_HTMLEndTag;
-
-  case Comment::ParagraphCommentKind:
-    return CXComment_Paragraph;
-
-  case Comment::BlockCommandCommentKind:
-    return CXComment_BlockCommand;
-
-  case Comment::ParamCommandCommentKind:
-    return CXComment_ParamCommand;
-
-  case Comment::TParamCommandCommentKind:
-    return CXComment_TParamCommand;
-
-  case Comment::VerbatimBlockCommentKind:
-    return CXComment_VerbatimBlockCommand;
-
-  case Comment::VerbatimBlockLineCommentKind:
-    return CXComment_VerbatimBlockLine;
-
-  case Comment::VerbatimLineCommentKind:
-    return CXComment_VerbatimLine;
-
-  case Comment::FullCommentKind:
-    return CXComment_FullComment;
-  }
-  llvm_unreachable("unknown CommentKind");
-}
-
-unsigned clang_Comment_getNumChildren(CXComment CXC) {
-  const Comment *C = getASTNode(CXC);
-  if (!C)
-    return 0;
-
-  return C->child_count();
-}
-
-CXComment clang_Comment_getChild(CXComment CXC, unsigned ChildIdx) {
-  const Comment *C = getASTNode(CXC);
-  if (!C || ChildIdx >= C->child_count())
-    return createCXComment(NULL, NULL);
-
-  return createCXComment(*(C->child_begin() + ChildIdx), CXC.TranslationUnit);
-}
-
-unsigned clang_Comment_isWhitespace(CXComment CXC) {
-  const Comment *C = getASTNode(CXC);
-  if (!C)
-    return false;
-
-  if (const TextComment *TC = dyn_cast<TextComment>(C))
-    return TC->isWhitespace();
-
-  if (const ParagraphComment *PC = dyn_cast<ParagraphComment>(C))
-    return PC->isWhitespace();
-
-  return false;
-}
-
-unsigned clang_InlineContentComment_hasTrailingNewline(CXComment CXC) {
-  const InlineContentComment *ICC = getASTNodeAs<InlineContentComment>(CXC);
-  if (!ICC)
-    return false;
-
-  return ICC->hasTrailingNewline();
-}
-
-CXString clang_TextComment_getText(CXComment CXC) {
-  const TextComment *TC = getASTNodeAs<TextComment>(CXC);
-  if (!TC)
-    return cxstring::createNull();
-
-  return cxstring::createRef(TC->getText());
-}
-
-CXString clang_InlineCommandComment_getCommandName(CXComment CXC) {
-  const InlineCommandComment *ICC = getASTNodeAs<InlineCommandComment>(CXC);
-  if (!ICC)
-    return cxstring::createNull();
-
-  const CommandTraits &Traits = getCommandTraits(CXC);
-  return cxstring::createRef(ICC->getCommandName(Traits));
-}
-
-enum CXCommentInlineCommandRenderKind
-clang_InlineCommandComment_getRenderKind(CXComment CXC) {
-  const InlineCommandComment *ICC = getASTNodeAs<InlineCommandComment>(CXC);
-  if (!ICC)
-    return CXCommentInlineCommandRenderKind_Normal;
-
-  switch (ICC->getRenderKind()) {
-  case InlineCommandComment::RenderNormal:
-    return CXCommentInlineCommandRenderKind_Normal;
-
-  case InlineCommandComment::RenderBold:
-    return CXCommentInlineCommandRenderKind_Bold;
-
-  case InlineCommandComment::RenderMonospaced:
-    return CXCommentInlineCommandRenderKind_Monospaced;
-
-  case InlineCommandComment::RenderEmphasized:
-    return CXCommentInlineCommandRenderKind_Emphasized;
-  }
-  llvm_unreachable("unknown InlineCommandComment::RenderKind");
-}
-
-unsigned clang_InlineCommandComment_getNumArgs(CXComment CXC) {
-  const InlineCommandComment *ICC = getASTNodeAs<InlineCommandComment>(CXC);
-  if (!ICC)
-    return 0;
-
-  return ICC->getNumArgs();
-}
-
-CXString clang_InlineCommandComment_getArgText(CXComment CXC,
-                                               unsigned ArgIdx) {
-  const InlineCommandComment *ICC = getASTNodeAs<InlineCommandComment>(CXC);
-  if (!ICC || ArgIdx >= ICC->getNumArgs())
-    return cxstring::createNull();
-
-  return cxstring::createRef(ICC->getArgText(ArgIdx));
-}
-
-CXString clang_HTMLTagComment_getTagName(CXComment CXC) {
-  const HTMLTagComment *HTC = getASTNodeAs<HTMLTagComment>(CXC);
-  if (!HTC)
-    return cxstring::createNull();
-
-  return cxstring::createRef(HTC->getTagName());
-}
-
-unsigned clang_HTMLStartTagComment_isSelfClosing(CXComment CXC) {
-  const HTMLStartTagComment *HST = getASTNodeAs<HTMLStartTagComment>(CXC);
-  if (!HST)
-    return false;
-
-  return HST->isSelfClosing();
-}
-
-unsigned clang_HTMLStartTag_getNumAttrs(CXComment CXC) {
-  const HTMLStartTagComment *HST = getASTNodeAs<HTMLStartTagComment>(CXC);
-  if (!HST)
-    return 0;
-
-  return HST->getNumAttrs();
-}
-
-CXString clang_HTMLStartTag_getAttrName(CXComment CXC, unsigned AttrIdx) {
-  const HTMLStartTagComment *HST = getASTNodeAs<HTMLStartTagComment>(CXC);
-  if (!HST || AttrIdx >= HST->getNumAttrs())
-    return cxstring::createNull();
-
-  return cxstring::createRef(HST->getAttr(AttrIdx).Name);
-}
-
-CXString clang_HTMLStartTag_getAttrValue(CXComment CXC, unsigned AttrIdx) {
-  const HTMLStartTagComment *HST = getASTNodeAs<HTMLStartTagComment>(CXC);
-  if (!HST || AttrIdx >= HST->getNumAttrs())
-    return cxstring::createNull();
-
-  return cxstring::createRef(HST->getAttr(AttrIdx).Value);
-}
-
-CXString clang_BlockCommandComment_getCommandName(CXComment CXC) {
-  const BlockCommandComment *BCC = getASTNodeAs<BlockCommandComment>(CXC);
-  if (!BCC)
-    return cxstring::createNull();
-
-  const CommandTraits &Traits = getCommandTraits(CXC);
-  return cxstring::createRef(BCC->getCommandName(Traits));
-}
-
-unsigned clang_BlockCommandComment_getNumArgs(CXComment CXC) {
-  const BlockCommandComment *BCC = getASTNodeAs<BlockCommandComment>(CXC);
-  if (!BCC)
-    return 0;
-
-  return BCC->getNumArgs();
-}
-
-CXString clang_BlockCommandComment_getArgText(CXComment CXC,
-                                              unsigned ArgIdx) {
-  const BlockCommandComment *BCC = getASTNodeAs<BlockCommandComment>(CXC);
-  if (!BCC || ArgIdx >= BCC->getNumArgs())
-    return cxstring::createNull();
-
-  return cxstring::createRef(BCC->getArgText(ArgIdx));
-}
-
-CXComment clang_BlockCommandComment_getParagraph(CXComment CXC) {
-  const BlockCommandComment *BCC = getASTNodeAs<BlockCommandComment>(CXC);
-  if (!BCC)
-    return createCXComment(NULL, NULL);
-
-  return createCXComment(BCC->getParagraph(), CXC.TranslationUnit);
-}
-
-CXString clang_ParamCommandComment_getParamName(CXComment CXC) {
-  const ParamCommandComment *PCC = getASTNodeAs<ParamCommandComment>(CXC);
-  if (!PCC || !PCC->hasParamName())
-    return cxstring::createNull();
-
-  return cxstring::createRef(PCC->getParamNameAsWritten());
-}
-
-unsigned clang_ParamCommandComment_isParamIndexValid(CXComment CXC) {
-  const ParamCommandComment *PCC = getASTNodeAs<ParamCommandComment>(CXC);
-  if (!PCC)
-    return false;
-
-  return PCC->isParamIndexValid();
-}
-
-unsigned clang_ParamCommandComment_getParamIndex(CXComment CXC) {
-  const ParamCommandComment *PCC = getASTNodeAs<ParamCommandComment>(CXC);
-  if (!PCC || !PCC->isParamIndexValid())
-    return ParamCommandComment::InvalidParamIndex;
-
-  return PCC->getParamIndex();
-}
-
-unsigned clang_ParamCommandComment_isDirectionExplicit(CXComment CXC) {
-  const ParamCommandComment *PCC = getASTNodeAs<ParamCommandComment>(CXC);
-  if (!PCC)
-    return false;
-
-  return PCC->isDirectionExplicit();
-}
-
-enum CXCommentParamPassDirection clang_ParamCommandComment_getDirection(
-                                                            CXComment CXC) {
-  const ParamCommandComment *PCC = getASTNodeAs<ParamCommandComment>(CXC);
-  if (!PCC)
-    return CXCommentParamPassDirection_In;
-
-  switch (PCC->getDirection()) {
-  case ParamCommandComment::In:
-    return CXCommentParamPassDirection_In;
-
-  case ParamCommandComment::Out:
-    return CXCommentParamPassDirection_Out;
-
-  case ParamCommandComment::InOut:
-    return CXCommentParamPassDirection_InOut;
-  }
-  llvm_unreachable("unknown ParamCommandComment::PassDirection");
-}
-
-CXString clang_TParamCommandComment_getParamName(CXComment CXC) {
-  const TParamCommandComment *TPCC = getASTNodeAs<TParamCommandComment>(CXC);
-  if (!TPCC || !TPCC->hasParamName())
-    return cxstring::createNull();
-
-  return cxstring::createRef(TPCC->getParamNameAsWritten());
-}
-
-unsigned clang_TParamCommandComment_isParamPositionValid(CXComment CXC) {
-  const TParamCommandComment *TPCC = getASTNodeAs<TParamCommandComment>(CXC);
-  if (!TPCC)
-    return false;
-
-  return TPCC->isPositionValid();
-}
-
-unsigned clang_TParamCommandComment_getDepth(CXComment CXC) {
-  const TParamCommandComment *TPCC = getASTNodeAs<TParamCommandComment>(CXC);
-  if (!TPCC || !TPCC->isPositionValid())
-    return 0;
-
-  return TPCC->getDepth();
-}
-
-unsigned clang_TParamCommandComment_getIndex(CXComment CXC, unsigned Depth) {
-  const TParamCommandComment *TPCC = getASTNodeAs<TParamCommandComment>(CXC);
-  if (!TPCC || !TPCC->isPositionValid() || Depth >= TPCC->getDepth())
-    return 0;
-
-  return TPCC->getIndex(Depth);
-}
-
-CXString clang_VerbatimBlockLineComment_getText(CXComment CXC) {
-  const VerbatimBlockLineComment *VBL =
-      getASTNodeAs<VerbatimBlockLineComment>(CXC);
-  if (!VBL)
-    return cxstring::createNull();
-
-  return cxstring::createRef(VBL->getText());
-}
-
-CXString clang_VerbatimLineComment_getText(CXComment CXC) {
-  const VerbatimLineComment *VLC = getASTNodeAs<VerbatimLineComment>(CXC);
-  if (!VLC)
-    return cxstring::createNull();
-
-  return cxstring::createRef(VLC->getText());
-}
-
-} // end extern "C"
-
-//===----------------------------------------------------------------------===//
-// Helpers for converting comment AST to HTML.
-//===----------------------------------------------------------------------===//
-
-namespace {
-
-/// This comparison will sort parameters with valid index by index and
-/// invalid (unresolved) parameters last.
-class ParamCommandCommentCompareIndex {
-public:
-  bool operator()(const ParamCommandComment *LHS,
-                  const ParamCommandComment *RHS) const {
-    unsigned LHSIndex = UINT_MAX;
-    unsigned RHSIndex = UINT_MAX;
-    if (LHS->isParamIndexValid())
-      LHSIndex = LHS->getParamIndex();
-    if (RHS->isParamIndexValid())
-      RHSIndex = RHS->getParamIndex();
-
-    return LHSIndex < RHSIndex;
-  }
-};
-
-/// This comparison will sort template parameters in the following order:
-/// \li real template parameters (depth = 1) in index order;
-/// \li all other names (depth > 1);
-/// \li unresolved names.
-class TParamCommandCommentComparePosition {
-public:
-  bool operator()(const TParamCommandComment *LHS,
-                  const TParamCommandComment *RHS) const {
-    // Sort unresolved names last.
-    if (!LHS->isPositionValid())
-      return false;
-    if (!RHS->isPositionValid())
-      return true;
-
-    if (LHS->getDepth() > 1)
-      return false;
-    if (RHS->getDepth() > 1)
-      return true;
-
-    // Sort template parameters in index order.
-    if (LHS->getDepth() == 1 && RHS->getDepth() == 1)
-      return LHS->getIndex(0) < RHS->getIndex(0);
-
-    // Leave all other names in source order.
-    return true;
-  }
-};
-
-/// Separate parts of a FullComment.
-struct FullCommentParts {
-  /// Take a full comment apart and initialize members accordingly.
-  FullCommentParts(const FullComment *C,
-                   const CommandTraits &Traits);
-
-  const BlockContentComment *Brief;
-  const BlockContentComment *Headerfile;
-  const ParagraphComment *FirstParagraph;
-  const BlockCommandComment *Returns;
-  SmallVector<const ParamCommandComment *, 8> Params;
-  SmallVector<const TParamCommandComment *, 4> TParams;
-  SmallVector<const BlockContentComment *, 8> MiscBlocks;
-};
-
-FullCommentParts::FullCommentParts(const FullComment *C,
-                                   const CommandTraits &Traits) :
-    Brief(NULL), Headerfile(NULL), FirstParagraph(NULL), Returns(NULL) {
-  for (Comment::child_iterator I = C->child_begin(), E = C->child_end();
-       I != E; ++I) {
-    const Comment *Child = *I;
-    if (!Child)
-      continue;
-    switch (Child->getCommentKind()) {
-    case Comment::NoCommentKind:
-      continue;
-
-    case Comment::ParagraphCommentKind: {
-      const ParagraphComment *PC = cast<ParagraphComment>(Child);
-      if (PC->isWhitespace())
-        break;
-      if (!FirstParagraph)
-        FirstParagraph = PC;
-
-      MiscBlocks.push_back(PC);
-      break;
-    }
-
-    case Comment::BlockCommandCommentKind: {
-      const BlockCommandComment *BCC = cast<BlockCommandComment>(Child);
-      const CommandInfo *Info = Traits.getCommandInfo(BCC->getCommandID());
-      if (!Brief && Info->IsBriefCommand) {
-        Brief = BCC;
-        break;
-      }
-      if (!Headerfile && Info->IsHeaderfileCommand) {
-        Headerfile = BCC;
-        break;
-      }
-      if (!Returns && Info->IsReturnsCommand) {
-        Returns = BCC;
-        break;
-      }
-      MiscBlocks.push_back(BCC);
-      break;
-    }
-
-    case Comment::ParamCommandCommentKind: {
-      const ParamCommandComment *PCC = cast<ParamCommandComment>(Child);
-      if (!PCC->hasParamName())
-        break;
-
-      if (!PCC->isDirectionExplicit() && !PCC->hasNonWhitespaceParagraph())
-        break;
-
-      Params.push_back(PCC);
-      break;
-    }
-
-    case Comment::TParamCommandCommentKind: {
-      const TParamCommandComment *TPCC = cast<TParamCommandComment>(Child);
-      if (!TPCC->hasParamName())
-        break;
-
-      if (!TPCC->hasNonWhitespaceParagraph())
-        break;
-
-      TParams.push_back(TPCC);
-      break;
-    }
-
-    case Comment::VerbatimBlockCommentKind:
-      MiscBlocks.push_back(cast<BlockCommandComment>(Child));
-      break;
-
-    case Comment::VerbatimLineCommentKind: {
-      const VerbatimLineComment *VLC = cast<VerbatimLineComment>(Child);
-      const CommandInfo *Info = Traits.getCommandInfo(VLC->getCommandID());
-      if (!Info->IsDeclarationCommand)
-        MiscBlocks.push_back(VLC);
-      break;
-    }
-
-    case Comment::TextCommentKind:
-    case Comment::InlineCommandCommentKind:
-    case Comment::HTMLStartTagCommentKind:
-    case Comment::HTMLEndTagCommentKind:
-    case Comment::VerbatimBlockLineCommentKind:
-    case Comment::FullCommentKind:
-      llvm_unreachable("AST node of this kind can't be a child of "
-                       "a FullComment");
-    }
-  }
-
-  // Sort params in order they are declared in the function prototype.
-  // Unresolved parameters are put at the end of the list in the same order
-  // they were seen in the comment.
-  std::stable_sort(Params.begin(), Params.end(),
-                   ParamCommandCommentCompareIndex());
-
-  std::stable_sort(TParams.begin(), TParams.end(),
-                   TParamCommandCommentComparePosition());
-}
-
-void PrintHTMLStartTagComment(const HTMLStartTagComment *C,
-                              llvm::raw_svector_ostream &Result) {
-  Result << "<" << C->getTagName();
-
-  if (C->getNumAttrs() != 0) {
-    for (unsigned i = 0, e = C->getNumAttrs(); i != e; i++) {
-      Result << " ";
-      const HTMLStartTagComment::Attribute &Attr = C->getAttr(i);
-      Result << Attr.Name;
-      if (!Attr.Value.empty())
-        Result << "=\"" << Attr.Value << "\"";
-    }
-  }
-
-  if (!C->isSelfClosing())
-    Result << ">";
-  else
-    Result << "/>";
-}
-
-class CommentASTToHTMLConverter :
-    public ConstCommentVisitor<CommentASTToHTMLConverter> {
-public:
-  /// \param Str accumulator for HTML.
-  CommentASTToHTMLConverter(const FullComment *FC,
-                            SmallVectorImpl<char> &Str,
-                            const CommandTraits &Traits) :
-      FC(FC), Result(Str), Traits(Traits)
-  { }
-
-  // Inline content.
-  void visitTextComment(const TextComment *C);
-  void visitInlineCommandComment(const InlineCommandComment *C);
-  void visitHTMLStartTagComment(const HTMLStartTagComment *C);
-  void visitHTMLEndTagComment(const HTMLEndTagComment *C);
-
-  // Block content.
-  void visitParagraphComment(const ParagraphComment *C);
-  void visitBlockCommandComment(const BlockCommandComment *C);
-  void visitParamCommandComment(const ParamCommandComment *C);
-  void visitTParamCommandComment(const TParamCommandComment *C);
-  void visitVerbatimBlockComment(const VerbatimBlockComment *C);
-  void visitVerbatimBlockLineComment(const VerbatimBlockLineComment *C);
-  void visitVerbatimLineComment(const VerbatimLineComment *C);
-
-  void visitFullComment(const FullComment *C);
-
-  // Helpers.
-
-  /// Convert a paragraph that is not a block by itself (an argument to some
-  /// command).
-  void visitNonStandaloneParagraphComment(const ParagraphComment *C);
-
-  void appendToResultWithHTMLEscaping(StringRef S);
-
-private:
-  const FullComment *FC;
-  /// Output stream for HTML.
-  llvm::raw_svector_ostream Result;
-
-  const CommandTraits &Traits;
-};
-} // end unnamed namespace
-
-void CommentASTToHTMLConverter::visitTextComment(const TextComment *C) {
-  appendToResultWithHTMLEscaping(C->getText());
-}
-
-void CommentASTToHTMLConverter::visitInlineCommandComment(
-                                  const InlineCommandComment *C) {
-  // Nothing to render if no arguments supplied.
-  if (C->getNumArgs() == 0)
-    return;
-
-  // Nothing to render if argument is empty.
-  StringRef Arg0 = C->getArgText(0);
-  if (Arg0.empty())
-    return;
-
-  switch (C->getRenderKind()) {
-  case InlineCommandComment::RenderNormal:
-    for (unsigned i = 0, e = C->getNumArgs(); i != e; ++i) {
-      appendToResultWithHTMLEscaping(C->getArgText(i));
-      Result << " ";
-    }
-    return;
-
-  case InlineCommandComment::RenderBold:
-    assert(C->getNumArgs() == 1);
-    Result << "<b>";
-    appendToResultWithHTMLEscaping(Arg0);
-    Result << "</b>";
-    return;
-  case InlineCommandComment::RenderMonospaced:
-    assert(C->getNumArgs() == 1);
-    Result << "<tt>";
-    appendToResultWithHTMLEscaping(Arg0);
-    Result<< "</tt>";
-    return;
-  case InlineCommandComment::RenderEmphasized:
-    assert(C->getNumArgs() == 1);
-    Result << "<em>";
-    appendToResultWithHTMLEscaping(Arg0);
-    Result << "</em>";
-    return;
-  }
-}
-
-void CommentASTToHTMLConverter::visitHTMLStartTagComment(
-                                  const HTMLStartTagComment *C) {
-  PrintHTMLStartTagComment(C, Result);
-}
-
-void CommentASTToHTMLConverter::visitHTMLEndTagComment(
-                                  const HTMLEndTagComment *C) {
-  Result << "</" << C->getTagName() << ">";
-}
-
-void CommentASTToHTMLConverter::visitParagraphComment(
-                                  const ParagraphComment *C) {
-  if (C->isWhitespace())
-    return;
-
-  Result << "<p>";
-  for (Comment::child_iterator I = C->child_begin(), E = C->child_end();
-       I != E; ++I) {
-    visit(*I);
-  }
-  Result << "</p>";
-}
-
-void CommentASTToHTMLConverter::visitBlockCommandComment(
-                                  const BlockCommandComment *C) {
-  const CommandInfo *Info = Traits.getCommandInfo(C->getCommandID());
-  if (Info->IsBriefCommand) {
-    Result << "<p class=\"para-brief\">";
-    visitNonStandaloneParagraphComment(C->getParagraph());
-    Result << "</p>";
-    return;
-  }
-  if (Info->IsReturnsCommand) {
-    Result << "<p class=\"para-returns\">"
-              "<span class=\"word-returns\">Returns</span> ";
-    visitNonStandaloneParagraphComment(C->getParagraph());
-    Result << "</p>";
-    return;
-  }
-  // We don't know anything about this command.  Just render the paragraph.
-  visit(C->getParagraph());
-}
-
-void CommentASTToHTMLConverter::visitParamCommandComment(
-                                  const ParamCommandComment *C) {
-  if (C->isParamIndexValid()) {
-    Result << "<dt class=\"param-name-index-"
-           << C->getParamIndex()
-           << "\">";
-    appendToResultWithHTMLEscaping(C->getParamName(FC));
-  } else {
-    Result << "<dt class=\"param-name-index-invalid\">";
-    appendToResultWithHTMLEscaping(C->getParamNameAsWritten());
-  }
-  Result << "</dt>";
-
-  if (C->isParamIndexValid()) {
-    Result << "<dd class=\"param-descr-index-"
-           << C->getParamIndex()
-           << "\">";
-  } else
-    Result << "<dd class=\"param-descr-index-invalid\">";
-
-  visitNonStandaloneParagraphComment(C->getParagraph());
-  Result << "</dd>";
-}
-
-void CommentASTToHTMLConverter::visitTParamCommandComment(
-                                  const TParamCommandComment *C) {
-  if (C->isPositionValid()) {
-    if (C->getDepth() == 1)
-      Result << "<dt class=\"tparam-name-index-"
-             << C->getIndex(0)
-             << "\">";
-    else
-      Result << "<dt class=\"tparam-name-index-other\">";
-    appendToResultWithHTMLEscaping(C->getParamName(FC));
-  } else {
-    Result << "<dt class=\"tparam-name-index-invalid\">";
-    appendToResultWithHTMLEscaping(C->getParamNameAsWritten());
-  }
-  
-  Result << "</dt>";
-
-  if (C->isPositionValid()) {
-    if (C->getDepth() == 1)
-      Result << "<dd class=\"tparam-descr-index-"
-             << C->getIndex(0)
-             << "\">";
-    else
-      Result << "<dd class=\"tparam-descr-index-other\">";
-  } else
-    Result << "<dd class=\"tparam-descr-index-invalid\">";
-
-  visitNonStandaloneParagraphComment(C->getParagraph());
-  Result << "</dd>";
-}
-
-void CommentASTToHTMLConverter::visitVerbatimBlockComment(
-                                  const VerbatimBlockComment *C) {
-  unsigned NumLines = C->getNumLines();
-  if (NumLines == 0)
-    return;
-
-  Result << "<pre>";
-  for (unsigned i = 0; i != NumLines; ++i) {
-    appendToResultWithHTMLEscaping(C->getText(i));
-    if (i + 1 != NumLines)
-      Result << '\n';
-  }
-  Result << "</pre>";
-}
-
-void CommentASTToHTMLConverter::visitVerbatimBlockLineComment(
-                                  const VerbatimBlockLineComment *C) {
-  llvm_unreachable("should not see this AST node");
-}
-
-void CommentASTToHTMLConverter::visitVerbatimLineComment(
-                                  const VerbatimLineComment *C) {
-  Result << "<pre>";
-  appendToResultWithHTMLEscaping(C->getText());
-  Result << "</pre>";
-}
-
-void CommentASTToHTMLConverter::visitFullComment(const FullComment *C) {
-  FullCommentParts Parts(C, Traits);
-
-  bool FirstParagraphIsBrief = false;
-  if (Parts.Headerfile)
-    visit(Parts.Headerfile);
-  if (Parts.Brief)
-    visit(Parts.Brief);
-  else if (Parts.FirstParagraph) {
-    Result << "<p class=\"para-brief\">";
-    visitNonStandaloneParagraphComment(Parts.FirstParagraph);
-    Result << "</p>";
-    FirstParagraphIsBrief = true;
-  }
-
-  for (unsigned i = 0, e = Parts.MiscBlocks.size(); i != e; ++i) {
-    const Comment *C = Parts.MiscBlocks[i];
-    if (FirstParagraphIsBrief && C == Parts.FirstParagraph)
-      continue;
-    visit(C);
-  }
-
-  if (Parts.TParams.size() != 0) {
-    Result << "<dl>";
-    for (unsigned i = 0, e = Parts.TParams.size(); i != e; ++i)
-      visit(Parts.TParams[i]);
-    Result << "</dl>";
-  }
-
-  if (Parts.Params.size() != 0) {
-    Result << "<dl>";
-    for (unsigned i = 0, e = Parts.Params.size(); i != e; ++i)
-      visit(Parts.Params[i]);
-    Result << "</dl>";
-  }
-
-  if (Parts.Returns)
-    visit(Parts.Returns);
-
-  Result.flush();
-}
-
-void CommentASTToHTMLConverter::visitNonStandaloneParagraphComment(
-                                  const ParagraphComment *C) {
-  if (!C)
-    return;
-
-  for (Comment::child_iterator I = C->child_begin(), E = C->child_end();
-       I != E; ++I) {
-    visit(*I);
-  }
-}
-
-void CommentASTToHTMLConverter::appendToResultWithHTMLEscaping(StringRef S) {
-  for (StringRef::iterator I = S.begin(), E = S.end(); I != E; ++I) {
-    const char C = *I;
-    switch (C) {
-      case '&':
-        Result << "&";
-        break;
-      case '<':
-        Result << "<";
-        break;
-      case '>':
-        Result << ">";
-        break;
-      case '"':
-        Result << """;
-        break;
-      case '\'':
-        Result << "'";
-        break;
-      case '/':
-        Result << "/";
-        break;
-      default:
-        Result << C;
-        break;
-    }
-  }
-}
-
-extern "C" {
-
-CXString clang_HTMLTagComment_getAsString(CXComment CXC) {
-  const HTMLTagComment *HTC = getASTNodeAs<HTMLTagComment>(CXC);
-  if (!HTC)
-    return cxstring::createNull();
-
-  SmallString<128> HTML;
-  CommentASTToHTMLConverter Converter(0, HTML, getCommandTraits(CXC));
-  Converter.visit(HTC);
-  return cxstring::createDup(HTML.str());
-}
-
-CXString clang_FullComment_getAsHTML(CXComment CXC) {
-  const FullComment *FC = getASTNodeAs<FullComment>(CXC);
-  if (!FC)
-    return cxstring::createNull();
-
-  SmallString<1024> HTML;
-  CommentASTToHTMLConverter Converter(FC, HTML, getCommandTraits(CXC));
-  Converter.visit(FC);
-  return cxstring::createDup(HTML.str());
-}
-
-} // end extern "C"
-
-namespace {
-class CommentASTToXMLConverter :
-    public ConstCommentVisitor<CommentASTToXMLConverter> {
-public:
-  /// \param Str accumulator for XML.
-  CommentASTToXMLConverter(const FullComment *FC,
-                           SmallVectorImpl<char> &Str,
-                           const CommandTraits &Traits,
-                           const SourceManager &SM,
-                           SimpleFormatContext &SFC,
-                           unsigned FUID) :
-      FC(FC), Result(Str), Traits(Traits), SM(SM),
-      FormatRewriterContext(SFC),
-      FormatInMemoryUniqueId(FUID) { }
-
-  // Inline content.
-  void visitTextComment(const TextComment *C);
-  void visitInlineCommandComment(const InlineCommandComment *C);
-  void visitHTMLStartTagComment(const HTMLStartTagComment *C);
-  void visitHTMLEndTagComment(const HTMLEndTagComment *C);
-
-  // Block content.
-  void visitParagraphComment(const ParagraphComment *C);
-
-  void appendParagraphCommentWithKind(const ParagraphComment *C,
-                                      StringRef Kind);
-
-  void visitBlockCommandComment(const BlockCommandComment *C);
-  void visitParamCommandComment(const ParamCommandComment *C);
-  void visitTParamCommandComment(const TParamCommandComment *C);
-  void visitVerbatimBlockComment(const VerbatimBlockComment *C);
-  void visitVerbatimBlockLineComment(const VerbatimBlockLineComment *C);
-  void visitVerbatimLineComment(const VerbatimLineComment *C);
-
-  void visitFullComment(const FullComment *C);
-
-  // Helpers.
-  void appendToResultWithXMLEscaping(StringRef S);
-
-  void formatTextOfDeclaration(const DeclInfo *DI,
-                               SmallString<128> &Declaration);
-
-private:
-  const FullComment *FC;
-
-  /// Output stream for XML.
-  llvm::raw_svector_ostream Result;
-
-  const CommandTraits &Traits;
-  const SourceManager &SM;
-  SimpleFormatContext &FormatRewriterContext;
-  unsigned FormatInMemoryUniqueId;
-};
-
-void getSourceTextOfDeclaration(const DeclInfo *ThisDecl,
-                                SmallVectorImpl<char> &Str) {
-  ASTContext &Context = ThisDecl->CurrentDecl->getASTContext();
-  const LangOptions &LangOpts = Context.getLangOpts();
-  llvm::raw_svector_ostream OS(Str);
-  PrintingPolicy PPolicy(LangOpts);
-  PPolicy.PolishForDeclaration = true;
-  PPolicy.TerseOutput = true;
-  ThisDecl->CurrentDecl->print(OS, PPolicy,
-                               /*Indentation*/0, /*PrintInstantiation*/false);
-}
-  
-void CommentASTToXMLConverter::formatTextOfDeclaration(
-                                              const DeclInfo *DI,
-                                              SmallString<128> &Declaration) {
-  // FIXME. formatting API expects null terminated input string.
-  // There might be more efficient way of doing this.
-  std::string StringDecl = Declaration.str();
-    
-  // Formatter specific code.
-  // Form a unique in memory buffer name.
-  SmallString<128> filename;
-  filename += "xmldecl";
-  filename += llvm::utostr(FormatInMemoryUniqueId);
-  filename += ".xd";
-  FileID ID = FormatRewriterContext.createInMemoryFile(filename, StringDecl);
-  SourceLocation Start =
-    FormatRewriterContext.Sources.getLocForStartOfFile(ID).getLocWithOffset(0);
-  unsigned Length = Declaration.size();
-    
-  std::vector<CharSourceRange>
-    Ranges(1, CharSourceRange::getCharRange(Start, Start.getLocWithOffset(Length)));
-  ASTContext &Context = DI->CurrentDecl->getASTContext();
-  const LangOptions &LangOpts = Context.getLangOpts();
-  Lexer Lex(ID, FormatRewriterContext.Sources.getBuffer(ID),
-            FormatRewriterContext.Sources, LangOpts);
-  tooling::Replacements Replace =
-    reformat(format::getLLVMStyle(), Lex, FormatRewriterContext.Sources, Ranges);
-  applyAllReplacements(Replace, FormatRewriterContext.Rewrite);
-  Declaration = FormatRewriterContext.getRewrittenText(ID);
-}
-
-} // end unnamed namespace
-
-void CommentASTToXMLConverter::visitTextComment(const TextComment *C) {
-  appendToResultWithXMLEscaping(C->getText());
-}
-
-void CommentASTToXMLConverter::visitInlineCommandComment(const InlineCommandComment *C) {
-  // Nothing to render if no arguments supplied.
-  if (C->getNumArgs() == 0)
-    return;
-
-  // Nothing to render if argument is empty.
-  StringRef Arg0 = C->getArgText(0);
-  if (Arg0.empty())
-    return;
-
-  switch (C->getRenderKind()) {
-  case InlineCommandComment::RenderNormal:
-    for (unsigned i = 0, e = C->getNumArgs(); i != e; ++i) {
-      appendToResultWithXMLEscaping(C->getArgText(i));
-      Result << " ";
-    }
-    return;
-  case InlineCommandComment::RenderBold:
-    assert(C->getNumArgs() == 1);
-    Result << "<bold>";
-    appendToResultWithXMLEscaping(Arg0);
-    Result << "</bold>";
-    return;
-  case InlineCommandComment::RenderMonospaced:
-    assert(C->getNumArgs() == 1);
-    Result << "<monospaced>";
-    appendToResultWithXMLEscaping(Arg0);
-    Result << "</monospaced>";
-    return;
-  case InlineCommandComment::RenderEmphasized:
-    assert(C->getNumArgs() == 1);
-    Result << "<emphasized>";
-    appendToResultWithXMLEscaping(Arg0);
-    Result << "</emphasized>";
-    return;
-  }
-}
-
-void CommentASTToXMLConverter::visitHTMLStartTagComment(const HTMLStartTagComment *C) {
-  Result << "<rawHTML><![CDATA[";
-  PrintHTMLStartTagComment(C, Result);
-  Result << "]]></rawHTML>";
-}
-
-void CommentASTToXMLConverter::visitHTMLEndTagComment(const HTMLEndTagComment *C) {
-  Result << "<rawHTML></" << C->getTagName() << "></rawHTML>";
-}
-
-void CommentASTToXMLConverter::visitParagraphComment(const ParagraphComment *C) {
-  appendParagraphCommentWithKind(C, StringRef());
-}
-
-void CommentASTToXMLConverter::appendParagraphCommentWithKind(
-                                  const ParagraphComment *C,
-                                  StringRef ParagraphKind) {
-  if (C->isWhitespace())
-    return;
-
-  if (ParagraphKind.empty())
-    Result << "<Para>";
-  else
-    Result << "<Para kind=\"" << ParagraphKind << "\">";
-
-  for (Comment::child_iterator I = C->child_begin(), E = C->child_end();
-       I != E; ++I) {
-    visit(*I);
-  }
-  Result << "</Para>";
-}
-
-void CommentASTToXMLConverter::visitBlockCommandComment(const BlockCommandComment *C) {
-  StringRef ParagraphKind;
-
-  switch (C->getCommandID()) {
-  case CommandTraits::KCI_attention:
-  case CommandTraits::KCI_author:
-  case CommandTraits::KCI_authors:
-  case CommandTraits::KCI_bug:
-  case CommandTraits::KCI_copyright:
-  case CommandTraits::KCI_date:
-  case CommandTraits::KCI_invariant:
-  case CommandTraits::KCI_note:
-  case CommandTraits::KCI_post:
-  case CommandTraits::KCI_pre:
-  case CommandTraits::KCI_remark:
-  case CommandTraits::KCI_remarks:
-  case CommandTraits::KCI_sa:
-  case CommandTraits::KCI_see:
-  case CommandTraits::KCI_since:
-  case CommandTraits::KCI_todo:
-  case CommandTraits::KCI_version:
-  case CommandTraits::KCI_warning:
-    ParagraphKind = C->getCommandName(Traits);
-  default:
-    break;
-  }
-
-  appendParagraphCommentWithKind(C->getParagraph(), ParagraphKind);
-}
-
-void CommentASTToXMLConverter::visitParamCommandComment(const ParamCommandComment *C) {
-  Result << "<Parameter><Name>";
-  appendToResultWithXMLEscaping(C->isParamIndexValid() ? C->getParamName(FC)
-                                                       : C->getParamNameAsWritten());
-  Result << "</Name>";
-
-  if (C->isParamIndexValid())
-    Result << "<Index>" << C->getParamIndex() << "</Index>";
-
-  Result << "<Direction isExplicit=\"" << C->isDirectionExplicit() << "\">";
-  switch (C->getDirection()) {
-  case ParamCommandComment::In:
-    Result << "in";
-    break;
-  case ParamCommandComment::Out:
-    Result << "out";
-    break;
-  case ParamCommandComment::InOut:
-    Result << "in,out";
-    break;
-  }
-  Result << "</Direction><Discussion>";
-  visit(C->getParagraph());
-  Result << "</Discussion></Parameter>";
-}
-
-void CommentASTToXMLConverter::visitTParamCommandComment(
-                                  const TParamCommandComment *C) {
-  Result << "<Parameter><Name>";
-  appendToResultWithXMLEscaping(C->isPositionValid() ? C->getParamName(FC)
-                                : C->getParamNameAsWritten());
-  Result << "</Name>";
-
-  if (C->isPositionValid() && C->getDepth() == 1) {
-    Result << "<Index>" << C->getIndex(0) << "</Index>";
-  }
-
-  Result << "<Discussion>";
-  visit(C->getParagraph());
-  Result << "</Discussion></Parameter>";
-}
-
-void CommentASTToXMLConverter::visitVerbatimBlockComment(
-                                  const VerbatimBlockComment *C) {
-  unsigned NumLines = C->getNumLines();
-  if (NumLines == 0)
-    return;
-
-  switch (C->getCommandID()) {
-  case CommandTraits::KCI_code:
-    Result << "<Verbatim xml:space=\"preserve\" kind=\"code\">";
-    break;
-  default:
-    Result << "<Verbatim xml:space=\"preserve\" kind=\"verbatim\">";
-    break;
-  }
-  for (unsigned i = 0; i != NumLines; ++i) {
-    appendToResultWithXMLEscaping(C->getText(i));
-    if (i + 1 != NumLines)
-      Result << '\n';
-  }
-  Result << "</Verbatim>";
-}
-
-void CommentASTToXMLConverter::visitVerbatimBlockLineComment(
-                                  const VerbatimBlockLineComment *C) {
-  llvm_unreachable("should not see this AST node");
-}
-
-void CommentASTToXMLConverter::visitVerbatimLineComment(
-                                  const VerbatimLineComment *C) {
-  Result << "<Verbatim xml:space=\"preserve\" kind=\"verbatim\">";
-  appendToResultWithXMLEscaping(C->getText());
-  Result << "</Verbatim>";
-}
-
-void CommentASTToXMLConverter::visitFullComment(const FullComment *C) {
-  FullCommentParts Parts(C, Traits);
-
-  const DeclInfo *DI = C->getDeclInfo();
-  StringRef RootEndTag;
-  if (DI) {
-    switch (DI->getKind()) {
-    case DeclInfo::OtherKind:
-      RootEndTag = "</Other>";
-      Result << "<Other";
-      break;
-    case DeclInfo::FunctionKind:
-      RootEndTag = "</Function>";
-      Result << "<Function";
-      switch (DI->TemplateKind) {
-      case DeclInfo::NotTemplate:
-        break;
-      case DeclInfo::Template:
-        Result << " templateKind=\"template\"";
-        break;
-      case DeclInfo::TemplateSpecialization:
-        Result << " templateKind=\"specialization\"";
-        break;
-      case DeclInfo::TemplatePartialSpecialization:
-        llvm_unreachable("partial specializations of functions "
-                         "are not allowed in C++");
-      }
-      if (DI->IsInstanceMethod)
-        Result << " isInstanceMethod=\"1\"";
-      if (DI->IsClassMethod)
-        Result << " isClassMethod=\"1\"";
-      break;
-    case DeclInfo::ClassKind:
-      RootEndTag = "</Class>";
-      Result << "<Class";
-      switch (DI->TemplateKind) {
-      case DeclInfo::NotTemplate:
-        break;
-      case DeclInfo::Template:
-        Result << " templateKind=\"template\"";
-        break;
-      case DeclInfo::TemplateSpecialization:
-        Result << " templateKind=\"specialization\"";
-        break;
-      case DeclInfo::TemplatePartialSpecialization:
-        Result << " templateKind=\"partialSpecialization\"";
-        break;
-      }
-      break;
-    case DeclInfo::VariableKind:
-      RootEndTag = "</Variable>";
-      Result << "<Variable";
-      break;
-    case DeclInfo::NamespaceKind:
-      RootEndTag = "</Namespace>";
-      Result << "<Namespace";
-      break;
-    case DeclInfo::TypedefKind:
-      RootEndTag = "</Typedef>";
-      Result << "<Typedef";
-      break;
-    case DeclInfo::EnumKind:
-      RootEndTag = "</Enum>";
-      Result << "<Enum";
-      break;
-    }
-
-    {
-      // Print line and column number.
-      SourceLocation Loc = DI->CurrentDecl->getLocation();
-      std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
-      FileID FID = LocInfo.first;
-      unsigned FileOffset = LocInfo.second;
-
-      if (!FID.isInvalid()) {
-        if (const FileEntry *FE = SM.getFileEntryForID(FID)) {
-          Result << " file=\"";
-          appendToResultWithXMLEscaping(FE->getName());
-          Result << "\"";
-        }
-        Result << " line=\"" << SM.getLineNumber(FID, FileOffset)
-               << "\" column=\"" << SM.getColumnNumber(FID, FileOffset)
-               << "\"";
-      }
-    }
-
-    // Finish the root tag.
-    Result << ">";
-
-    bool FoundName = false;
-    if (const NamedDecl *ND = dyn_cast<NamedDecl>(DI->CommentDecl)) {
-      if (DeclarationName DeclName = ND->getDeclName()) {
-        Result << "<Name>";
-        std::string Name = DeclName.getAsString();
-        appendToResultWithXMLEscaping(Name);
-        FoundName = true;
-        Result << "</Name>";
-      }
-    }
-    if (!FoundName)
-      Result << "<Name><anonymous></Name>";
-
-    {
-      // Print USR.
-      SmallString<128> USR;
-      cxcursor::getDeclCursorUSR(DI->CommentDecl, USR);
-      if (!USR.empty()) {
-        Result << "<USR>";
-        appendToResultWithXMLEscaping(USR);
-        Result << "</USR>";
-      }
-    }
-  } else {
-    // No DeclInfo -- just emit some root tag and name tag.
-    RootEndTag = "</Other>";
-    Result << "<Other><Name>unknown</Name>";
-  }
-  
-  if (Parts.Headerfile) {
-    Result << "<Headerfile>";
-    visit(Parts.Headerfile);
-    Result << "</Headerfile>";
-  }
-
-  {
-    // Pretty-print the declaration.
-    Result << "<Declaration>";
-    SmallString<128> Declaration;
-    getSourceTextOfDeclaration(DI, Declaration);
-    formatTextOfDeclaration(DI, Declaration);
-    appendToResultWithXMLEscaping(Declaration);
-    
-    Result << "</Declaration>";
-  }
-
-  bool FirstParagraphIsBrief = false;
-  if (Parts.Brief) {
-    Result << "<Abstract>";
-    visit(Parts.Brief);
-    Result << "</Abstract>";
-  } else if (Parts.FirstParagraph) {
-    Result << "<Abstract>";
-    visit(Parts.FirstParagraph);
-    Result << "</Abstract>";
-    FirstParagraphIsBrief = true;
-  }
-  
-  if (Parts.TParams.size() != 0) {
-    Result << "<TemplateParameters>";
-    for (unsigned i = 0, e = Parts.TParams.size(); i != e; ++i)
-      visit(Parts.TParams[i]);
-    Result << "</TemplateParameters>";
-  }
-
-  if (Parts.Params.size() != 0) {
-    Result << "<Parameters>";
-    for (unsigned i = 0, e = Parts.Params.size(); i != e; ++i)
-      visit(Parts.Params[i]);
-    Result << "</Parameters>";
-  }
-
-  if (Parts.Returns) {
-    Result << "<ResultDiscussion>";
-    visit(Parts.Returns);
-    Result << "</ResultDiscussion>";
-  }
-  
-  if (DI->CommentDecl->hasAttrs()) {
-    const AttrVec &Attrs = DI->CommentDecl->getAttrs();
-    for (unsigned i = 0, e = Attrs.size(); i != e; i++) {
-      const AvailabilityAttr *AA = dyn_cast<AvailabilityAttr>(Attrs[i]);
-      if (!AA) {
-        if (const DeprecatedAttr *DA = dyn_cast<DeprecatedAttr>(Attrs[i])) {
-          if (DA->getMessage().empty())
-            Result << "<Deprecated/>";
-          else {
-            Result << "<Deprecated>";
-            appendToResultWithXMLEscaping(DA->getMessage());
-            Result << "</Deprecated>";
-          }
-        }
-        else if (const UnavailableAttr *UA = dyn_cast<UnavailableAttr>(Attrs[i])) {
-          if (UA->getMessage().empty())
-            Result << "<Unavailable/>";
-          else {
-            Result << "<Unavailable>";
-            appendToResultWithXMLEscaping(UA->getMessage());
-            Result << "</Unavailable>";
-          }
-        }
-        continue;
-      }
-
-      // 'availability' attribute.
-      Result << "<Availability";
-      StringRef Distribution;
-      if (AA->getPlatform()) {
-        Distribution = AvailabilityAttr::getPrettyPlatformName(
-                                        AA->getPlatform()->getName());
-        if (Distribution.empty())
-          Distribution = AA->getPlatform()->getName();
-      }
-      Result << " distribution=\"" << Distribution << "\">";
-      VersionTuple IntroducedInVersion = AA->getIntroduced();
-      if (!IntroducedInVersion.empty()) {
-        Result << "<IntroducedInVersion>"
-               << IntroducedInVersion.getAsString()
-               << "</IntroducedInVersion>";
-      }
-      VersionTuple DeprecatedInVersion = AA->getDeprecated();
-      if (!DeprecatedInVersion.empty()) {
-        Result << "<DeprecatedInVersion>"
-               << DeprecatedInVersion.getAsString()
-               << "</DeprecatedInVersion>";
-      }
-      VersionTuple RemovedAfterVersion = AA->getObsoleted();
-      if (!RemovedAfterVersion.empty()) {
-        Result << "<RemovedAfterVersion>"
-               << RemovedAfterVersion.getAsString()
-               << "</RemovedAfterVersion>";
-      }
-      StringRef DeprecationSummary = AA->getMessage();
-      if (!DeprecationSummary.empty()) {
-        Result << "<DeprecationSummary>";
-        appendToResultWithXMLEscaping(DeprecationSummary);
-        Result << "</DeprecationSummary>";
-      }
-      if (AA->getUnavailable())
-        Result << "<Unavailable/>";
-      Result << "</Availability>";
-    }
-  }
-
-  {
-    bool StartTagEmitted = false;
-    for (unsigned i = 0, e = Parts.MiscBlocks.size(); i != e; ++i) {
-      const Comment *C = Parts.MiscBlocks[i];
-      if (FirstParagraphIsBrief && C == Parts.FirstParagraph)
-        continue;
-      if (!StartTagEmitted) {
-        Result << "<Discussion>";
-        StartTagEmitted = true;
-      }
-      visit(C);
-    }
-    if (StartTagEmitted)
-      Result << "</Discussion>";
-  }
-
-  Result << RootEndTag;
-
-  Result.flush();
-}
-
-void CommentASTToXMLConverter::appendToResultWithXMLEscaping(StringRef S) {
-  for (StringRef::iterator I = S.begin(), E = S.end(); I != E; ++I) {
-    const char C = *I;
-    switch (C) {
-      case '&':
-        Result << "&";
-        break;
-      case '<':
-        Result << "<";
-        break;
-      case '>':
-        Result << ">";
-        break;
-      case '"':
-        Result << """;
-        break;
-      case '\'':
-        Result << "'";
-        break;
-      default:
-        Result << C;
-        break;
-    }
-  }
-}
-
-extern "C" {
-
-CXString clang_FullComment_getAsXML(CXComment CXC) {
-  const FullComment *FC = getASTNodeAs<FullComment>(CXC);
-  if (!FC)
-    return cxstring::createNull();
-  ASTContext &Context = FC->getDeclInfo()->CurrentDecl->getASTContext();
-  CXTranslationUnit TU = CXC.TranslationUnit;
-  SourceManager &SM = cxtu::getASTUnit(TU)->getSourceManager();
-
-  if (!TU->FormatContext) {
-    TU->FormatContext = new SimpleFormatContext(Context.getLangOpts());
-  } else if ((TU->FormatInMemoryUniqueId % 1000) == 0) {
-    // Delete after some number of iterators, so the buffers don't grow
-    // too large.
-    delete TU->FormatContext;
-    TU->FormatContext = new SimpleFormatContext(Context.getLangOpts());
-  }
-
-  SmallString<1024> XML;
-  CommentASTToXMLConverter Converter(FC, XML, getCommandTraits(CXC), SM,
-                                     *TU->FormatContext,
-                                     TU->FormatInMemoryUniqueId++);
-  Converter.visit(FC);
-  return cxstring::createDup(XML.str());
-}
-
-} // end extern "C"
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXComment.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXComment.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXComment.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,63 +0,0 @@
-//===- CXComment.h - Routines for manipulating CXComments -----------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXComments.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_CXCOMMENT_H
-#define LLVM_CLANG_CXCOMMENT_H
-
-#include "CXTranslationUnit.h"
-#include "clang-c/Index.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/Comment.h"
-#include "clang/Frontend/ASTUnit.h"
-
-namespace clang {
-namespace comments {
-  class CommandTraits;
-}
-
-namespace cxcomment {
-
-inline CXComment createCXComment(const comments::Comment *C,
-                                 CXTranslationUnit TU) {
-  CXComment Result;
-  Result.ASTNode = C;
-  Result.TranslationUnit = TU;
-  return Result;
-}
-
-inline const comments::Comment *getASTNode(CXComment CXC) {
-  return static_cast<const comments::Comment *>(CXC.ASTNode);
-}
-
-template<typename T>
-inline const T *getASTNodeAs(CXComment CXC) {
-  const comments::Comment *C = getASTNode(CXC);
-  if (!C)
-    return NULL;
-
-  return dyn_cast<T>(C);
-}
-
-inline ASTContext &getASTContext(CXComment CXC) {
-  return cxtu::getASTUnit(CXC.TranslationUnit)->getASTContext();
-}
-
-inline comments::CommandTraits &getCommandTraits(CXComment CXC) {
-  return getASTContext(CXC).getCommentCommandTraits();
-}
-
-} // end namespace cxcomment
-} // end namespace clang
-
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXCompilationDatabase.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXCompilationDatabase.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXCompilationDatabase.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,139 +0,0 @@
-#include "clang-c/CXCompilationDatabase.h"
-#include "CXString.h"
-#include "clang/Tooling/CompilationDatabase.h"
-
-using namespace clang;
-using namespace clang::tooling;
-
-extern "C" {
-
-// FIXME: do something more usefull with the error message
-CXCompilationDatabase
-clang_CompilationDatabase_fromDirectory(const char *BuildDir,
-                                        CXCompilationDatabase_Error *ErrorCode)
-{
-  std::string ErrorMsg;
-  CXCompilationDatabase_Error Err = CXCompilationDatabase_NoError;
-
-  CompilationDatabase *db = CompilationDatabase::loadFromDirectory(BuildDir,
-                                                                   ErrorMsg);
-
-  if (!db) {
-    fprintf(stderr, "LIBCLANG TOOLING ERROR: %s\n", ErrorMsg.c_str());
-    Err = CXCompilationDatabase_CanNotLoadDatabase;
-  }
-
-  if (ErrorCode)
-    *ErrorCode = Err;
-
-  return db;
-}
-
-void
-clang_CompilationDatabase_dispose(CXCompilationDatabase CDb)
-{
-  delete static_cast<CompilationDatabase *>(CDb);
-}
-
-struct AllocatedCXCompileCommands
-{
-  std::vector<CompileCommand> CCmd;
-
-  AllocatedCXCompileCommands(const std::vector<CompileCommand>& Cmd)
-    : CCmd(Cmd)
-  { }
-};
-
-CXCompileCommands
-clang_CompilationDatabase_getCompileCommands(CXCompilationDatabase CDb,
-                                             const char *CompleteFileName)
-{
-  if (CompilationDatabase *db = static_cast<CompilationDatabase *>(CDb)) {
-    const std::vector<CompileCommand>
-      CCmd(db->getCompileCommands(CompleteFileName));
-    if (!CCmd.empty())
-      return new AllocatedCXCompileCommands( CCmd );
-  }
-
-  return 0;
-}
-
-CXCompileCommands
-clang_CompilationDatabase_getAllCompileCommands(CXCompilationDatabase CDb) {
-  if (CompilationDatabase *db = static_cast<CompilationDatabase *>(CDb)) {
-    const std::vector<CompileCommand> CCmd(db->getAllCompileCommands());
-    if (!CCmd.empty())
-      return new AllocatedCXCompileCommands( CCmd );
-  }
-
-  return 0;
-}
-
-void
-clang_CompileCommands_dispose(CXCompileCommands Cmds)
-{
-  delete static_cast<AllocatedCXCompileCommands *>(Cmds);
-}
-
-unsigned
-clang_CompileCommands_getSize(CXCompileCommands Cmds)
-{
-  if (!Cmds)
-    return 0;
-
-  AllocatedCXCompileCommands *ACC =
-    static_cast<AllocatedCXCompileCommands *>(Cmds);
-
-  return ACC->CCmd.size();
-}
-
-CXCompileCommand
-clang_CompileCommands_getCommand(CXCompileCommands Cmds, unsigned I)
-{
-  if (!Cmds)
-    return 0;
-
-  AllocatedCXCompileCommands *ACC =
-    static_cast<AllocatedCXCompileCommands *>(Cmds);
-
-  if (I >= ACC->CCmd.size())
-    return 0;
-
-  return &ACC->CCmd[I];
-}
-
-CXString
-clang_CompileCommand_getDirectory(CXCompileCommand CCmd)
-{
-  if (!CCmd)
-    return cxstring::createNull();
-
-  CompileCommand *cmd = static_cast<CompileCommand *>(CCmd);
-  return cxstring::createRef(cmd->Directory.c_str());
-}
-
-unsigned
-clang_CompileCommand_getNumArgs(CXCompileCommand CCmd)
-{
-  if (!CCmd)
-    return 0;
-
-  return static_cast<CompileCommand *>(CCmd)->CommandLine.size();
-}
-
-CXString
-clang_CompileCommand_getArg(CXCompileCommand CCmd, unsigned Arg)
-{
-  if (!CCmd)
-    return cxstring::createNull();
-
-  CompileCommand *Cmd = static_cast<CompileCommand *>(CCmd);
-
-  if (Arg >= Cmd->CommandLine.size())
-    return cxstring::createNull();
-
-  return cxstring::createRef(Cmd->CommandLine[Arg].c_str());
-}
-
-
-} // end: extern "C"

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXCursor.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXCursor.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXCursor.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1237 +0,0 @@
-//===- CXCursor.cpp - Routines for manipulating CXCursors -----------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXCursors. It should be the
-// only file that has internal knowledge of the encoding of the data in
-// CXCursor.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CXTranslationUnit.h"
-#include "CXCursor.h"
-#include "CXString.h"
-#include "CXType.h"
-#include "clang-c/Index.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclObjC.h"
-#include "clang/AST/DeclTemplate.h"
-#include "clang/AST/Expr.h"
-#include "clang/AST/ExprCXX.h"
-#include "clang/AST/ExprObjC.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "llvm/Support/ErrorHandling.h"
-
-using namespace clang;
-using namespace cxcursor;
-
-CXCursor cxcursor::MakeCXCursorInvalid(CXCursorKind K, CXTranslationUnit TU) {
-  assert(K >= CXCursor_FirstInvalid && K <= CXCursor_LastInvalid);
-  CXCursor C = { K, 0, { 0, 0, TU } };
-  return C;
-}
-
-static CXCursorKind GetCursorKind(const Attr *A) {
-  assert(A && "Invalid arguments!");
-  switch (A->getKind()) {
-    default: break;
-    case attr::IBAction: return CXCursor_IBActionAttr;
-    case attr::IBOutlet: return CXCursor_IBOutletAttr;
-    case attr::IBOutletCollection: return CXCursor_IBOutletCollectionAttr;
-    case attr::Final: return CXCursor_CXXFinalAttr;
-    case attr::Override: return CXCursor_CXXOverrideAttr;
-    case attr::Annotate: return CXCursor_AnnotateAttr;
-    case attr::AsmLabel: return CXCursor_AsmLabelAttr;
-  }
-
-  return CXCursor_UnexposedAttr;
-}
-
-CXCursor cxcursor::MakeCXCursor(const Attr *A, const Decl *Parent,
-                                CXTranslationUnit TU) {
-  assert(A && Parent && TU && "Invalid arguments!");
-  CXCursor C = { GetCursorKind(A), 0, { Parent, A, TU } };
-  return C;
-}
-
-CXCursor cxcursor::MakeCXCursor(const Decl *D, CXTranslationUnit TU,
-                                SourceRange RegionOfInterest,
-                                bool FirstInDeclGroup) {
-  assert(D && TU && "Invalid arguments!");
-
-  CXCursorKind K = getCursorKindForDecl(D);
-
-  if (K == CXCursor_ObjCClassMethodDecl ||
-      K == CXCursor_ObjCInstanceMethodDecl) {
-    int SelectorIdIndex = -1;
-    // Check if cursor points to a selector id.
-    if (RegionOfInterest.isValid() &&
-        RegionOfInterest.getBegin() == RegionOfInterest.getEnd()) {
-      SmallVector<SourceLocation, 16> SelLocs;
-      cast<ObjCMethodDecl>(D)->getSelectorLocs(SelLocs);
-      SmallVector<SourceLocation, 16>::iterator
-        I=std::find(SelLocs.begin(), SelLocs.end(),RegionOfInterest.getBegin());
-      if (I != SelLocs.end())
-        SelectorIdIndex = I - SelLocs.begin();
-    }
-    CXCursor C = { K, SelectorIdIndex,
-                   { D, (void*)(intptr_t) (FirstInDeclGroup ? 1 : 0), TU }};
-    return C;
-  }
-  
-  CXCursor C = { K, 0, { D, (void*)(intptr_t) (FirstInDeclGroup ? 1 : 0), TU }};
-  return C;
-}
-
-CXCursor cxcursor::MakeCXCursor(const Stmt *S, const Decl *Parent,
-                                CXTranslationUnit TU,
-                                SourceRange RegionOfInterest) {
-  assert(S && TU && "Invalid arguments!");
-  CXCursorKind K = CXCursor_NotImplemented;
-  
-  switch (S->getStmtClass()) {
-  case Stmt::NoStmtClass:
-    break;
-  
-  case Stmt::CaseStmtClass:
-    K = CXCursor_CaseStmt;
-    break;
-  
-  case Stmt::DefaultStmtClass:
-    K = CXCursor_DefaultStmt;
-    break;
-  
-  case Stmt::IfStmtClass:
-    K = CXCursor_IfStmt;
-    break;
-  
-  case Stmt::SwitchStmtClass:
-    K = CXCursor_SwitchStmt;
-    break;
-  
-  case Stmt::WhileStmtClass:
-    K = CXCursor_WhileStmt;
-    break;
-  
-  case Stmt::DoStmtClass:
-    K = CXCursor_DoStmt;
-    break;
-  
-  case Stmt::ForStmtClass:
-    K = CXCursor_ForStmt;
-    break;
-  
-  case Stmt::GotoStmtClass:
-    K = CXCursor_GotoStmt;
-    break;
-  
-  case Stmt::IndirectGotoStmtClass:
-    K = CXCursor_IndirectGotoStmt;
-    break;
-  
-  case Stmt::ContinueStmtClass:
-    K = CXCursor_ContinueStmt;
-    break;
-  
-  case Stmt::BreakStmtClass:
-    K = CXCursor_BreakStmt;
-    break;
-  
-  case Stmt::ReturnStmtClass:
-    K = CXCursor_ReturnStmt;
-    break;
-  
-  case Stmt::GCCAsmStmtClass:
-    K = CXCursor_GCCAsmStmt;
-    break;
-
-  case Stmt::MSAsmStmtClass:
-    K = CXCursor_MSAsmStmt;
-    break;
-  
-  case Stmt::ObjCAtTryStmtClass:
-    K = CXCursor_ObjCAtTryStmt;
-    break;
-  
-  case Stmt::ObjCAtCatchStmtClass:
-    K = CXCursor_ObjCAtCatchStmt;
-    break;
-  
-  case Stmt::ObjCAtFinallyStmtClass:
-    K = CXCursor_ObjCAtFinallyStmt;
-    break;
-  
-  case Stmt::ObjCAtThrowStmtClass:
-    K = CXCursor_ObjCAtThrowStmt;
-    break;
-  
-  case Stmt::ObjCAtSynchronizedStmtClass:
-    K = CXCursor_ObjCAtSynchronizedStmt;
-    break;
-  
-  case Stmt::ObjCAutoreleasePoolStmtClass:
-    K = CXCursor_ObjCAutoreleasePoolStmt;
-    break;
-  
-  case Stmt::ObjCForCollectionStmtClass:
-    K = CXCursor_ObjCForCollectionStmt;
-    break;
-  
-  case Stmt::CXXCatchStmtClass:
-    K = CXCursor_CXXCatchStmt;
-    break;
-  
-  case Stmt::CXXTryStmtClass:
-    K = CXCursor_CXXTryStmt;
-    break;
-  
-  case Stmt::CXXForRangeStmtClass:
-    K = CXCursor_CXXForRangeStmt;
-    break;
-  
-  case Stmt::SEHTryStmtClass:
-    K = CXCursor_SEHTryStmt;
-    break;
-  
-  case Stmt::SEHExceptStmtClass:
-    K = CXCursor_SEHExceptStmt;
-    break;
-  
-  case Stmt::SEHFinallyStmtClass:
-    K = CXCursor_SEHFinallyStmt;
-    break;
-  
-  case Stmt::ArrayTypeTraitExprClass:
-  case Stmt::AsTypeExprClass:
-  case Stmt::AtomicExprClass:
-  case Stmt::BinaryConditionalOperatorClass:
-  case Stmt::BinaryTypeTraitExprClass:
-  case Stmt::TypeTraitExprClass:
-  case Stmt::CXXBindTemporaryExprClass:
-  case Stmt::CXXDefaultArgExprClass:
-  case Stmt::CXXDefaultInitExprClass:
-  case Stmt::CXXScalarValueInitExprClass:
-  case Stmt::CXXUuidofExprClass:
-  case Stmt::ChooseExprClass:
-  case Stmt::DesignatedInitExprClass:
-  case Stmt::ExprWithCleanupsClass:
-  case Stmt::ExpressionTraitExprClass:
-  case Stmt::ExtVectorElementExprClass:
-  case Stmt::ImplicitCastExprClass:
-  case Stmt::ImplicitValueInitExprClass:
-  case Stmt::MaterializeTemporaryExprClass:
-  case Stmt::ObjCIndirectCopyRestoreExprClass:
-  case Stmt::OffsetOfExprClass:
-  case Stmt::ParenListExprClass:
-  case Stmt::PredefinedExprClass:
-  case Stmt::ShuffleVectorExprClass:
-  case Stmt::UnaryExprOrTypeTraitExprClass:
-  case Stmt::UnaryTypeTraitExprClass:
-  case Stmt::VAArgExprClass:
-  case Stmt::ObjCArrayLiteralClass:
-  case Stmt::ObjCDictionaryLiteralClass:
-  case Stmt::ObjCBoxedExprClass:
-  case Stmt::ObjCSubscriptRefExprClass:
-    K = CXCursor_UnexposedExpr;
-    break;
-
-  case Stmt::OpaqueValueExprClass:
-    if (Expr *Src = cast<OpaqueValueExpr>(S)->getSourceExpr())
-      return MakeCXCursor(Src, Parent, TU, RegionOfInterest);
-    K = CXCursor_UnexposedExpr;
-    break;
-
-  case Stmt::PseudoObjectExprClass:
-    return MakeCXCursor(cast<PseudoObjectExpr>(S)->getSyntacticForm(),
-                        Parent, TU, RegionOfInterest);
-
-  case Stmt::CompoundStmtClass:
-    K = CXCursor_CompoundStmt;
-    break;
-
-  case Stmt::NullStmtClass:
-    K = CXCursor_NullStmt;
-    break;
-
-  case Stmt::LabelStmtClass:
-    K = CXCursor_LabelStmt;
-    break;
-
-  case Stmt::AttributedStmtClass:
-    K = CXCursor_UnexposedStmt;
-    break;
-
-  case Stmt::DeclStmtClass:
-    K = CXCursor_DeclStmt;
-    break;
-
-  case Stmt::CapturedStmtClass:
-    K = CXCursor_UnexposedStmt;
-    break;
-
-  case Stmt::IntegerLiteralClass:
-    K = CXCursor_IntegerLiteral;
-    break;
-
-  case Stmt::FloatingLiteralClass:
-    K = CXCursor_FloatingLiteral;
-    break;
-
-  case Stmt::ImaginaryLiteralClass:
-    K = CXCursor_ImaginaryLiteral;
-    break;
-
-  case Stmt::StringLiteralClass:
-    K = CXCursor_StringLiteral;
-    break;
-
-  case Stmt::CharacterLiteralClass:
-    K = CXCursor_CharacterLiteral;
-    break;
-
-  case Stmt::ParenExprClass:
-    K = CXCursor_ParenExpr;
-    break;
-
-  case Stmt::UnaryOperatorClass:
-    K = CXCursor_UnaryOperator;
-    break;
-
-  case Stmt::CXXNoexceptExprClass:
-    K = CXCursor_UnaryExpr;
-    break;
-
-  case Stmt::ArraySubscriptExprClass:
-    K = CXCursor_ArraySubscriptExpr;
-    break;
-
-  case Stmt::BinaryOperatorClass:
-    K = CXCursor_BinaryOperator;
-    break;
-
-  case Stmt::CompoundAssignOperatorClass:
-    K = CXCursor_CompoundAssignOperator;
-    break;
-
-  case Stmt::ConditionalOperatorClass:
-    K = CXCursor_ConditionalOperator;
-    break;
-
-  case Stmt::CStyleCastExprClass:
-    K = CXCursor_CStyleCastExpr;
-    break;
-
-  case Stmt::CompoundLiteralExprClass:
-    K = CXCursor_CompoundLiteralExpr;
-    break;
-
-  case Stmt::InitListExprClass:
-    K = CXCursor_InitListExpr;
-    break;
-
-  case Stmt::AddrLabelExprClass:
-    K = CXCursor_AddrLabelExpr;
-    break;
-
-  case Stmt::StmtExprClass:
-    K = CXCursor_StmtExpr;
-    break;
-
-  case Stmt::GenericSelectionExprClass:
-    K = CXCursor_GenericSelectionExpr;
-    break;
-
-  case Stmt::GNUNullExprClass:
-    K = CXCursor_GNUNullExpr;
-    break;
-
-  case Stmt::CXXStaticCastExprClass:
-    K = CXCursor_CXXStaticCastExpr;
-    break;
-
-  case Stmt::CXXDynamicCastExprClass:
-    K = CXCursor_CXXDynamicCastExpr;
-    break;
-
-  case Stmt::CXXReinterpretCastExprClass:
-    K = CXCursor_CXXReinterpretCastExpr;
-    break;
-
-  case Stmt::CXXConstCastExprClass:
-    K = CXCursor_CXXConstCastExpr;
-    break;
-
-  case Stmt::CXXFunctionalCastExprClass:
-    K = CXCursor_CXXFunctionalCastExpr;
-    break;
-
-  case Stmt::CXXTypeidExprClass:
-    K = CXCursor_CXXTypeidExpr;
-    break;
-
-  case Stmt::CXXBoolLiteralExprClass:
-    K = CXCursor_CXXBoolLiteralExpr;
-    break;
-
-  case Stmt::CXXNullPtrLiteralExprClass:
-    K = CXCursor_CXXNullPtrLiteralExpr;
-    break;
-
-  case Stmt::CXXThisExprClass:
-    K = CXCursor_CXXThisExpr;
-    break;
-
-  case Stmt::CXXThrowExprClass:
-    K = CXCursor_CXXThrowExpr;
-    break;
-
-  case Stmt::CXXNewExprClass:
-    K = CXCursor_CXXNewExpr;
-    break;
-
-  case Stmt::CXXDeleteExprClass:
-    K = CXCursor_CXXDeleteExpr;
-    break;
-
-  case Stmt::ObjCStringLiteralClass:
-    K = CXCursor_ObjCStringLiteral;
-    break;
-
-  case Stmt::ObjCEncodeExprClass:
-    K = CXCursor_ObjCEncodeExpr;
-    break;
-
-  case Stmt::ObjCSelectorExprClass:
-    K = CXCursor_ObjCSelectorExpr;
-    break;
-
-  case Stmt::ObjCProtocolExprClass:
-    K = CXCursor_ObjCProtocolExpr;
-    break;
-      
-  case Stmt::ObjCBoolLiteralExprClass:
-    K = CXCursor_ObjCBoolLiteralExpr;
-    break;
-      
-  case Stmt::ObjCBridgedCastExprClass:
-    K = CXCursor_ObjCBridgedCastExpr;
-    break;
-
-  case Stmt::BlockExprClass:
-    K = CXCursor_BlockExpr;
-    break;
-
-  case Stmt::PackExpansionExprClass:
-    K = CXCursor_PackExpansionExpr;
-    break;
-
-  case Stmt::SizeOfPackExprClass:
-    K = CXCursor_SizeOfPackExpr;
-    break;
-
-  case Stmt::DeclRefExprClass:
-    if (const ImplicitParamDecl *IPD =
-         dyn_cast_or_null<ImplicitParamDecl>(cast<DeclRefExpr>(S)->getDecl())) {
-      if (const ObjCMethodDecl *MD =
-            dyn_cast<ObjCMethodDecl>(IPD->getDeclContext())) {
-        if (MD->getSelfDecl() == IPD) {
-          K = CXCursor_ObjCSelfExpr;
-          break;
-        }
-      }
-    }
-
-    K = CXCursor_DeclRefExpr;
-    break;
-
-  case Stmt::DependentScopeDeclRefExprClass:
-  case Stmt::SubstNonTypeTemplateParmExprClass:
-  case Stmt::SubstNonTypeTemplateParmPackExprClass:
-  case Stmt::FunctionParmPackExprClass:
-  case Stmt::UnresolvedLookupExprClass:
-    K = CXCursor_DeclRefExpr;
-    break;
-      
-  case Stmt::CXXDependentScopeMemberExprClass:
-  case Stmt::CXXPseudoDestructorExprClass:
-  case Stmt::MemberExprClass:            
-  case Stmt::MSPropertyRefExprClass:
-  case Stmt::ObjCIsaExprClass:
-  case Stmt::ObjCIvarRefExprClass:    
-  case Stmt::ObjCPropertyRefExprClass: 
-  case Stmt::UnresolvedMemberExprClass:
-    K = CXCursor_MemberRefExpr;
-    break;
-      
-  case Stmt::CallExprClass:              
-  case Stmt::CXXOperatorCallExprClass:
-  case Stmt::CXXMemberCallExprClass:
-  case Stmt::CUDAKernelCallExprClass:
-  case Stmt::CXXConstructExprClass:  
-  case Stmt::CXXTemporaryObjectExprClass:
-  case Stmt::CXXUnresolvedConstructExprClass:
-  case Stmt::UserDefinedLiteralClass:
-    K = CXCursor_CallExpr;
-    break;
-      
-  case Stmt::LambdaExprClass:
-    K = CXCursor_LambdaExpr;
-    break;
-      
-  case Stmt::ObjCMessageExprClass: {
-    K = CXCursor_ObjCMessageExpr;
-    int SelectorIdIndex = -1;
-    // Check if cursor points to a selector id.
-    if (RegionOfInterest.isValid() &&
-        RegionOfInterest.getBegin() == RegionOfInterest.getEnd()) {
-      SmallVector<SourceLocation, 16> SelLocs;
-      cast<ObjCMessageExpr>(S)->getSelectorLocs(SelLocs);
-      SmallVector<SourceLocation, 16>::iterator
-        I=std::find(SelLocs.begin(), SelLocs.end(),RegionOfInterest.getBegin());
-      if (I != SelLocs.end())
-        SelectorIdIndex = I - SelLocs.begin();
-    }
-    CXCursor C = { K, 0, { Parent, S, TU } };
-    return getSelectorIdentifierCursor(SelectorIdIndex, C);
-  }
-      
-  case Stmt::MSDependentExistsStmtClass:
-    K = CXCursor_UnexposedStmt;
-    break;
-  }
-  
-  CXCursor C = { K, 0, { Parent, S, TU } };
-  return C;
-}
-
-CXCursor cxcursor::MakeCursorObjCSuperClassRef(ObjCInterfaceDecl *Super, 
-                                               SourceLocation Loc, 
-                                               CXTranslationUnit TU) {
-  assert(Super && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_ObjCSuperClassRef, 0, { Super, RawLoc, TU } };
-  return C;    
-}
-
-std::pair<const ObjCInterfaceDecl *, SourceLocation>
-cxcursor::getCursorObjCSuperClassRef(CXCursor C) {
-  assert(C.kind == CXCursor_ObjCSuperClassRef);
-  return std::make_pair(static_cast<const ObjCInterfaceDecl *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorObjCProtocolRef(const ObjCProtocolDecl *Proto, 
-                                             SourceLocation Loc, 
-                                             CXTranslationUnit TU) {
-  assert(Proto && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_ObjCProtocolRef, 0, { Proto, RawLoc, TU } };
-  return C;    
-}
-
-std::pair<const ObjCProtocolDecl *, SourceLocation>
-cxcursor::getCursorObjCProtocolRef(CXCursor C) {
-  assert(C.kind == CXCursor_ObjCProtocolRef);
-  return std::make_pair(static_cast<const ObjCProtocolDecl *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorObjCClassRef(const ObjCInterfaceDecl *Class, 
-                                          SourceLocation Loc, 
-                                          CXTranslationUnit TU) {
-  // 'Class' can be null for invalid code.
-  if (!Class)
-    return MakeCXCursorInvalid(CXCursor_InvalidCode);
-  assert(TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_ObjCClassRef, 0, { Class, RawLoc, TU } };
-  return C;    
-}
-
-std::pair<const ObjCInterfaceDecl *, SourceLocation>
-cxcursor::getCursorObjCClassRef(CXCursor C) {
-  assert(C.kind == CXCursor_ObjCClassRef);
-  return std::make_pair(static_cast<const ObjCInterfaceDecl *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorTypeRef(const TypeDecl *Type, SourceLocation Loc, 
-                                     CXTranslationUnit TU) {
-  assert(Type && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_TypeRef, 0, { Type, RawLoc, TU } };
-  return C;    
-}
-
-std::pair<const TypeDecl *, SourceLocation>
-cxcursor::getCursorTypeRef(CXCursor C) {
-  assert(C.kind == CXCursor_TypeRef);
-  return std::make_pair(static_cast<const TypeDecl *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorTemplateRef(const TemplateDecl *Template, 
-                                         SourceLocation Loc,
-                                         CXTranslationUnit TU) {
-  assert(Template && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_TemplateRef, 0, { Template, RawLoc, TU } };
-  return C;    
-}
-
-std::pair<const TemplateDecl *, SourceLocation>
-cxcursor::getCursorTemplateRef(CXCursor C) {
-  assert(C.kind == CXCursor_TemplateRef);
-  return std::make_pair(static_cast<const TemplateDecl *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorNamespaceRef(const NamedDecl *NS,
-                                          SourceLocation Loc, 
-                                          CXTranslationUnit TU) {
-  
-  assert(NS && (isa<NamespaceDecl>(NS) || isa<NamespaceAliasDecl>(NS)) && TU &&
-         "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_NamespaceRef, 0, { NS, RawLoc, TU } };
-  return C;    
-}
-
-std::pair<const NamedDecl *, SourceLocation>
-cxcursor::getCursorNamespaceRef(CXCursor C) {
-  assert(C.kind == CXCursor_NamespaceRef);
-  return std::make_pair(static_cast<const NamedDecl *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorVariableRef(const VarDecl *Var, SourceLocation Loc, 
-                                         CXTranslationUnit TU) {
-  
-  assert(Var && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_VariableRef, 0, { Var, RawLoc, TU } };
-  return C;
-}
-
-std::pair<const VarDecl *, SourceLocation>
-cxcursor::getCursorVariableRef(CXCursor C) {
-  assert(C.kind == CXCursor_VariableRef);
-  return std::make_pair(static_cast<const VarDecl *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorMemberRef(const FieldDecl *Field, SourceLocation Loc, 
-                                       CXTranslationUnit TU) {
-  
-  assert(Field && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_MemberRef, 0, { Field, RawLoc, TU } };
-  return C;    
-}
-
-std::pair<const FieldDecl *, SourceLocation>
-cxcursor::getCursorMemberRef(CXCursor C) {
-  assert(C.kind == CXCursor_MemberRef);
-  return std::make_pair(static_cast<const FieldDecl *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorCXXBaseSpecifier(const CXXBaseSpecifier *B,
-                                              CXTranslationUnit TU){
-  CXCursor C = { CXCursor_CXXBaseSpecifier, 0, { B, 0, TU } };
-  return C;  
-}
-
-const CXXBaseSpecifier *cxcursor::getCursorCXXBaseSpecifier(CXCursor C) {
-  assert(C.kind == CXCursor_CXXBaseSpecifier);
-  return static_cast<const CXXBaseSpecifier*>(C.data[0]);
-}
-
-CXCursor cxcursor::MakePreprocessingDirectiveCursor(SourceRange Range, 
-                                                    CXTranslationUnit TU) {
-  CXCursor C = { CXCursor_PreprocessingDirective, 0,
-                 { Range.getBegin().getPtrEncoding(),
-                   Range.getEnd().getPtrEncoding(),
-                   TU }
-               };
-  return C;
-}
-
-SourceRange cxcursor::getCursorPreprocessingDirective(CXCursor C) {
-  assert(C.kind == CXCursor_PreprocessingDirective);
-  SourceRange Range(SourceLocation::getFromPtrEncoding(C.data[0]),
-                    SourceLocation::getFromPtrEncoding(C.data[1]));
-  ASTUnit *TU = getCursorASTUnit(C);
-  return TU->mapRangeFromPreamble(Range);
-}
-
-CXCursor cxcursor::MakeMacroDefinitionCursor(const MacroDefinition *MI,
-                                             CXTranslationUnit TU) {
-  CXCursor C = { CXCursor_MacroDefinition, 0, { MI, 0, TU } };
-  return C;
-}
-
-const MacroDefinition *cxcursor::getCursorMacroDefinition(CXCursor C) {
-  assert(C.kind == CXCursor_MacroDefinition);
-  return static_cast<const MacroDefinition *>(C.data[0]);
-}
-
-CXCursor cxcursor::MakeMacroExpansionCursor(MacroExpansion *MI, 
-                                            CXTranslationUnit TU) {
-  CXCursor C = { CXCursor_MacroExpansion, 0, { MI, 0, TU } };
-  return C;
-}
-
-CXCursor cxcursor::MakeMacroExpansionCursor(MacroDefinition *MI,
-                                            SourceLocation Loc,
-                                            CXTranslationUnit TU) {
-  assert(Loc.isValid());
-  CXCursor C = { CXCursor_MacroExpansion, 0, { MI, Loc.getPtrEncoding(), TU } };
-  return C;
-}
-
-const IdentifierInfo *cxcursor::MacroExpansionCursor::getName() const {
-  if (isPseudo())
-    return getAsMacroDefinition()->getName();
-  return getAsMacroExpansion()->getName();
-}
-const MacroDefinition *cxcursor::MacroExpansionCursor::getDefinition() const {
-  if (isPseudo())
-    return getAsMacroDefinition();
-  return getAsMacroExpansion()->getDefinition();
-}
-SourceRange cxcursor::MacroExpansionCursor::getSourceRange() const {
-  if (isPseudo())
-    return getPseudoLoc();
-  return getAsMacroExpansion()->getSourceRange();
-}
-
-CXCursor cxcursor::MakeInclusionDirectiveCursor(InclusionDirective *ID, 
-                                                CXTranslationUnit TU) {
-  CXCursor C = { CXCursor_InclusionDirective, 0, { ID, 0, TU } };
-  return C;
-}
-
-const InclusionDirective *cxcursor::getCursorInclusionDirective(CXCursor C) {
-  assert(C.kind == CXCursor_InclusionDirective);
-  return static_cast<const InclusionDirective *>(C.data[0]);
-}
-
-CXCursor cxcursor::MakeCursorLabelRef(LabelStmt *Label, SourceLocation Loc, 
-                                      CXTranslationUnit TU) {
-  
-  assert(Label && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  CXCursor C = { CXCursor_LabelRef, 0, { Label, RawLoc, TU } };
-  return C;    
-}
-
-std::pair<const LabelStmt *, SourceLocation>
-cxcursor::getCursorLabelRef(CXCursor C) {
-  assert(C.kind == CXCursor_LabelRef);
-  return std::make_pair(static_cast<const LabelStmt *>(C.data[0]),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-CXCursor cxcursor::MakeCursorOverloadedDeclRef(const OverloadExpr *E,
-                                               CXTranslationUnit TU) {
-  assert(E && TU && "Invalid arguments!");
-  OverloadedDeclRefStorage Storage(E);
-  void *RawLoc = E->getNameLoc().getPtrEncoding();
-  CXCursor C = { 
-                 CXCursor_OverloadedDeclRef, 0,
-                 { Storage.getOpaqueValue(), RawLoc, TU } 
-               };
-  return C;    
-}
-
-CXCursor cxcursor::MakeCursorOverloadedDeclRef(const Decl *D,
-                                               SourceLocation Loc,
-                                               CXTranslationUnit TU) {
-  assert(D && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  OverloadedDeclRefStorage Storage(D);
-  CXCursor C = { 
-    CXCursor_OverloadedDeclRef, 0,
-    { Storage.getOpaqueValue(), RawLoc, TU }
-  };
-  return C;    
-}
-
-CXCursor cxcursor::MakeCursorOverloadedDeclRef(TemplateName Name, 
-                                               SourceLocation Loc,
-                                               CXTranslationUnit TU) {
-  assert(Name.getAsOverloadedTemplate() && TU && "Invalid arguments!");
-  void *RawLoc = Loc.getPtrEncoding();
-  OverloadedDeclRefStorage Storage(Name.getAsOverloadedTemplate());
-  CXCursor C = { 
-    CXCursor_OverloadedDeclRef, 0,
-    { Storage.getOpaqueValue(), RawLoc, TU } 
-  };
-  return C;    
-}
-
-std::pair<cxcursor::OverloadedDeclRefStorage, SourceLocation>
-cxcursor::getCursorOverloadedDeclRef(CXCursor C) {
-  assert(C.kind == CXCursor_OverloadedDeclRef);
-  return std::make_pair(OverloadedDeclRefStorage::getFromOpaqueValue(
-                                       const_cast<void *>(C.data[0])),
-                        SourceLocation::getFromPtrEncoding(C.data[1]));
-}
-
-const Decl *cxcursor::getCursorDecl(CXCursor Cursor) {
-  return static_cast<const Decl *>(Cursor.data[0]);
-}
-
-const Expr *cxcursor::getCursorExpr(CXCursor Cursor) {
-  return dyn_cast_or_null<Expr>(getCursorStmt(Cursor));
-}
-
-const Stmt *cxcursor::getCursorStmt(CXCursor Cursor) {
-  if (Cursor.kind == CXCursor_ObjCSuperClassRef ||
-      Cursor.kind == CXCursor_ObjCProtocolRef ||
-      Cursor.kind == CXCursor_ObjCClassRef)
-    return 0;
-
-  return static_cast<const Stmt *>(Cursor.data[1]);
-}
-
-const Attr *cxcursor::getCursorAttr(CXCursor Cursor) {
-  return static_cast<const Attr *>(Cursor.data[1]);
-}
-
-const Decl *cxcursor::getCursorParentDecl(CXCursor Cursor) {
-  return static_cast<const Decl *>(Cursor.data[0]);
-}
-
-ASTContext &cxcursor::getCursorContext(CXCursor Cursor) {
-  return getCursorASTUnit(Cursor)->getASTContext();
-}
-
-ASTUnit *cxcursor::getCursorASTUnit(CXCursor Cursor) {
-  CXTranslationUnit TU = getCursorTU(Cursor);
-  if (!TU)
-    return 0;
-  return cxtu::getASTUnit(TU);
-}
-
-CXTranslationUnit cxcursor::getCursorTU(CXCursor Cursor) {
-  return static_cast<CXTranslationUnit>(const_cast<void*>(Cursor.data[2]));
-}
-
-void cxcursor::getOverriddenCursors(CXCursor cursor,
-                                    SmallVectorImpl<CXCursor> &overridden) { 
-  assert(clang_isDeclaration(cursor.kind));
-  const NamedDecl *D = dyn_cast_or_null<NamedDecl>(getCursorDecl(cursor));
-  if (!D)
-    return;
-
-  CXTranslationUnit TU = getCursorTU(cursor);
-  SmallVector<const NamedDecl *, 8> OverDecls;
-  D->getASTContext().getOverriddenMethods(D, OverDecls);
-
-  for (SmallVector<const NamedDecl *, 8>::iterator
-         I = OverDecls.begin(), E = OverDecls.end(); I != E; ++I) {
-    overridden.push_back(MakeCXCursor(*I, TU));
-  }
-}
-
-std::pair<int, SourceLocation>
-cxcursor::getSelectorIdentifierIndexAndLoc(CXCursor cursor) {
-  if (cursor.kind == CXCursor_ObjCMessageExpr) {
-    if (cursor.xdata != -1)
-      return std::make_pair(cursor.xdata,
-                            cast<ObjCMessageExpr>(getCursorExpr(cursor))
-                                                ->getSelectorLoc(cursor.xdata));
-  } else if (cursor.kind == CXCursor_ObjCClassMethodDecl ||
-             cursor.kind == CXCursor_ObjCInstanceMethodDecl) {
-    if (cursor.xdata != -1)
-      return std::make_pair(cursor.xdata,
-                            cast<ObjCMethodDecl>(getCursorDecl(cursor))
-                                                ->getSelectorLoc(cursor.xdata));
-  }
-
-  return std::make_pair(-1, SourceLocation());
-}
-
-CXCursor cxcursor::getSelectorIdentifierCursor(int SelIdx, CXCursor cursor) {
-  CXCursor newCursor = cursor;
-
-  if (cursor.kind == CXCursor_ObjCMessageExpr) {
-    if (SelIdx == -1 ||
-        unsigned(SelIdx) >= cast<ObjCMessageExpr>(getCursorExpr(cursor))
-                                                         ->getNumSelectorLocs())
-      newCursor.xdata = -1;
-    else
-      newCursor.xdata = SelIdx;
-  } else if (cursor.kind == CXCursor_ObjCClassMethodDecl ||
-             cursor.kind == CXCursor_ObjCInstanceMethodDecl) {
-    if (SelIdx == -1 ||
-        unsigned(SelIdx) >= cast<ObjCMethodDecl>(getCursorDecl(cursor))
-                                                         ->getNumSelectorLocs())
-      newCursor.xdata = -1;
-    else
-      newCursor.xdata = SelIdx;
-  }
-
-  return newCursor;
-}
-
-CXCursor cxcursor::getTypeRefCursor(CXCursor cursor) {
-  if (cursor.kind != CXCursor_CallExpr)
-    return cursor;
-
-  if (cursor.xdata == 0)
-    return cursor;
-
-  const Expr *E = getCursorExpr(cursor);
-  TypeSourceInfo *Type = 0;
-  if (const CXXUnresolvedConstructExpr *
-        UnCtor = dyn_cast<CXXUnresolvedConstructExpr>(E)) {
-    Type = UnCtor->getTypeSourceInfo();
-  } else if (const CXXTemporaryObjectExpr *Tmp =
-                 dyn_cast<CXXTemporaryObjectExpr>(E)){
-    Type = Tmp->getTypeSourceInfo();
-  }
-
-  if (!Type)
-    return cursor;
-
-  CXTranslationUnit TU = getCursorTU(cursor);
-  QualType Ty = Type->getType();
-  TypeLoc TL = Type->getTypeLoc();
-  SourceLocation Loc = TL.getBeginLoc();
-
-  if (const ElaboratedType *ElabT = Ty->getAs<ElaboratedType>()) {
-    Ty = ElabT->getNamedType();
-    ElaboratedTypeLoc ElabTL = TL.castAs<ElaboratedTypeLoc>();
-    Loc = ElabTL.getNamedTypeLoc().getBeginLoc();
-  }
-
-  if (const TypedefType *Typedef = Ty->getAs<TypedefType>())
-    return MakeCursorTypeRef(Typedef->getDecl(), Loc, TU);
-  if (const TagType *Tag = Ty->getAs<TagType>())
-    return MakeCursorTypeRef(Tag->getDecl(), Loc, TU);
-  if (const TemplateTypeParmType *TemplP = Ty->getAs<TemplateTypeParmType>())
-    return MakeCursorTypeRef(TemplP->getDecl(), Loc, TU);
-
-  return cursor;
-}
-
-bool cxcursor::operator==(CXCursor X, CXCursor Y) {
-  return X.kind == Y.kind && X.data[0] == Y.data[0] && X.data[1] == Y.data[1] &&
-         X.data[2] == Y.data[2];
-}
-
-// FIXME: Remove once we can model DeclGroups and their appropriate ranges
-// properly in the ASTs.
-bool cxcursor::isFirstInDeclGroup(CXCursor C) {
-  assert(clang_isDeclaration(C.kind));
-  return ((uintptr_t) (C.data[1])) != 0;
-}
-
-//===----------------------------------------------------------------------===//
-// libclang CXCursor APIs
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-
-int clang_Cursor_isNull(CXCursor cursor) {
-  return clang_equalCursors(cursor, clang_getNullCursor());
-}
-
-CXTranslationUnit clang_Cursor_getTranslationUnit(CXCursor cursor) {
-  return getCursorTU(cursor);
-}
-
-int clang_Cursor_getNumArguments(CXCursor C) {
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-    if (const ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(D))
-      return MD->param_size();
-    if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D))
-      return FD->param_size();
-  }
-
-  if (clang_isExpression(C.kind)) {
-    const Expr *E = cxcursor::getCursorExpr(C);
-    if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {
-      return CE->getNumArgs();
-    }
-  }
-
-  return -1;
-}
-
-CXCursor clang_Cursor_getArgument(CXCursor C, unsigned i) {
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-    if (const ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(D)) {
-      if (i < MD->param_size())
-        return cxcursor::MakeCXCursor(MD->param_begin()[i],
-                                      cxcursor::getCursorTU(C));
-    } else if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D)) {
-      if (i < FD->param_size())
-        return cxcursor::MakeCXCursor(FD->param_begin()[i],
-                                      cxcursor::getCursorTU(C));
-    }
-  }
-
-  if (clang_isExpression(C.kind)) {
-    const Expr *E = cxcursor::getCursorExpr(C);
-    if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {
-      if (i < CE->getNumArgs()) {
-        return cxcursor::MakeCXCursor(CE->getArg(i),
-                                      getCursorDecl(C),
-                                      cxcursor::getCursorTU(C));
-      }
-    }
-  }
-
-  return clang_getNullCursor();
-}
-
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
-// CXCursorSet.
-//===----------------------------------------------------------------------===//
-
-typedef llvm::DenseMap<CXCursor, unsigned> CXCursorSet_Impl;
-
-static inline CXCursorSet packCXCursorSet(CXCursorSet_Impl *setImpl) {
-  return (CXCursorSet) setImpl;
-}
-static inline CXCursorSet_Impl *unpackCXCursorSet(CXCursorSet set) {
-  return (CXCursorSet_Impl*) set;
-}
-namespace llvm {
-template<> struct DenseMapInfo<CXCursor> {
-public:
-  static inline CXCursor getEmptyKey() {
-    return MakeCXCursorInvalid(CXCursor_InvalidFile);
-  }
-  static inline CXCursor getTombstoneKey() {
-    return MakeCXCursorInvalid(CXCursor_NoDeclFound);
-  }
-  static inline unsigned getHashValue(const CXCursor &cursor) {
-    return llvm::DenseMapInfo<std::pair<const void *, const void *> >
-      ::getHashValue(std::make_pair(cursor.data[0], cursor.data[1]));
-  }
-  static inline bool isEqual(const CXCursor &x, const CXCursor &y) {
-    return x.kind == y.kind &&
-           x.data[0] == y.data[0] &&
-           x.data[1] == y.data[1];
-  }
-};
-}
-
-extern "C" {
-CXCursorSet clang_createCXCursorSet() {
-  return packCXCursorSet(new CXCursorSet_Impl());
-}
-
-void clang_disposeCXCursorSet(CXCursorSet set) {
-  delete unpackCXCursorSet(set);
-}
-
-unsigned clang_CXCursorSet_contains(CXCursorSet set, CXCursor cursor) {
-  CXCursorSet_Impl *setImpl = unpackCXCursorSet(set);
-  if (!setImpl)
-    return 0;
-  return setImpl->find(cursor) != setImpl->end();
-}
-
-unsigned clang_CXCursorSet_insert(CXCursorSet set, CXCursor cursor) {
-  // Do not insert invalid cursors into the set.
-  if (cursor.kind >= CXCursor_FirstInvalid &&
-      cursor.kind <= CXCursor_LastInvalid)
-    return 1;
-
-  CXCursorSet_Impl *setImpl = unpackCXCursorSet(set);
-  if (!setImpl)
-    return 1;
-  unsigned &entry = (*setImpl)[cursor];
-  unsigned flag = entry == 0 ? 1 : 0;
-  entry = 1;
-  return flag;
-}
-  
-CXCompletionString clang_getCursorCompletionString(CXCursor cursor) {
-  enum CXCursorKind kind = clang_getCursorKind(cursor);
-  if (clang_isDeclaration(kind)) {
-    const Decl *decl = getCursorDecl(cursor);
-    if (const NamedDecl *namedDecl = dyn_cast_or_null<NamedDecl>(decl)) {
-      ASTUnit *unit = getCursorASTUnit(cursor);
-      CodeCompletionResult Result(namedDecl, CCP_Declaration);
-      CodeCompletionString *String
-        = Result.CreateCodeCompletionString(unit->getASTContext(),
-                                            unit->getPreprocessor(),
-                                 unit->getCodeCompletionTUInfo().getAllocator(),
-                                 unit->getCodeCompletionTUInfo(),
-                                 true);
-      return String;
-    }
-  }
-  else if (kind == CXCursor_MacroDefinition) {
-    const MacroDefinition *definition = getCursorMacroDefinition(cursor);
-    const IdentifierInfo *MacroInfo = definition->getName();
-    ASTUnit *unit = getCursorASTUnit(cursor);
-    CodeCompletionResult Result(MacroInfo);
-    CodeCompletionString *String
-      = Result.CreateCodeCompletionString(unit->getASTContext(),
-                                          unit->getPreprocessor(),
-                                 unit->getCodeCompletionTUInfo().getAllocator(),
-                                 unit->getCodeCompletionTUInfo(),
-                                 false);
-    return String;
-  }
-  return NULL;
-}
-} // end: extern C.
-
-namespace {
-  struct OverridenCursorsPool {
-    typedef SmallVector<CXCursor, 2> CursorVec;
-    std::vector<CursorVec*> AllCursors;
-    std::vector<CursorVec*> AvailableCursors;
-    
-    ~OverridenCursorsPool() {
-      for (std::vector<CursorVec*>::iterator I = AllCursors.begin(),
-           E = AllCursors.end(); I != E; ++I) {
-        delete *I;
-      }
-    }
-  };
-}
-
-void *cxcursor::createOverridenCXCursorsPool() {
-  return new OverridenCursorsPool();
-}
-  
-void cxcursor::disposeOverridenCXCursorsPool(void *pool) {
-  delete static_cast<OverridenCursorsPool*>(pool);
-}
- 
-extern "C" {
-void clang_getOverriddenCursors(CXCursor cursor,
-                                CXCursor **overridden,
-                                unsigned *num_overridden) {
-  if (overridden)
-    *overridden = 0;
-  if (num_overridden)
-    *num_overridden = 0;
-  
-  CXTranslationUnit TU = cxcursor::getCursorTU(cursor);
-  
-  if (!overridden || !num_overridden || !TU)
-    return;
-
-  if (!clang_isDeclaration(cursor.kind))
-    return;
-    
-  OverridenCursorsPool &pool =
-    *static_cast<OverridenCursorsPool*>(TU->OverridenCursorsPool);
-  
-  OverridenCursorsPool::CursorVec *Vec = 0;
-  
-  if (!pool.AvailableCursors.empty()) {
-    Vec = pool.AvailableCursors.back();
-    pool.AvailableCursors.pop_back();
-  }
-  else {
-    Vec = new OverridenCursorsPool::CursorVec();
-    pool.AllCursors.push_back(Vec);
-  }
-  
-  // Clear out the vector, but don't free the memory contents.  This
-  // reduces malloc() traffic.
-  Vec->clear();
-
-  // Use the first entry to contain a back reference to the vector.
-  // This is a complete hack.
-  CXCursor backRefCursor = MakeCXCursorInvalid(CXCursor_InvalidFile, TU);
-  backRefCursor.data[0] = Vec;
-  assert(cxcursor::getCursorTU(backRefCursor) == TU);
-  Vec->push_back(backRefCursor);
-
-  // Get the overriden cursors.
-  cxcursor::getOverriddenCursors(cursor, *Vec);
-  
-  // Did we get any overriden cursors?  If not, return Vec to the pool
-  // of available cursor vectors.
-  if (Vec->size() == 1) {
-    pool.AvailableCursors.push_back(Vec);
-    return;
-  }
-
-  // Now tell the caller about the overriden cursors.
-  assert(Vec->size() > 1);
-  *overridden = &((*Vec)[1]);
-  *num_overridden = Vec->size() - 1;
-}
-
-void clang_disposeOverriddenCursors(CXCursor *overridden) {
-  if (!overridden)
-    return;
-  
-  // Use pointer arithmetic to get back the first faux entry
-  // which has a back-reference to the TU and the vector.
-  --overridden;
-  OverridenCursorsPool::CursorVec *Vec =
-      static_cast<OverridenCursorsPool::CursorVec *>(
-          const_cast<void *>(overridden->data[0]));
-  CXTranslationUnit TU = getCursorTU(*overridden);
-  
-  assert(Vec && TU);
-
-  OverridenCursorsPool &pool =
-    *static_cast<OverridenCursorsPool*>(TU->OverridenCursorsPool);
-  
-  pool.AvailableCursors.push_back(Vec);
-}
-
-int clang_Cursor_isDynamicCall(CXCursor C) {
-  const Expr *E = 0;
-  if (clang_isExpression(C.kind))
-    E = getCursorExpr(C);
-  if (!E)
-    return 0;
-
-  if (const ObjCMessageExpr *MsgE = dyn_cast<ObjCMessageExpr>(E))
-    return MsgE->getReceiverKind() == ObjCMessageExpr::Instance;
-
-  const MemberExpr *ME = 0;
-  if (isa<MemberExpr>(E))
-    ME = cast<MemberExpr>(E);
-  else if (const CallExpr *CE = dyn_cast<CallExpr>(E))
-    ME = dyn_cast_or_null<MemberExpr>(CE->getCallee());
-
-  if (ME) {
-    if (const CXXMethodDecl *
-          MD = dyn_cast_or_null<CXXMethodDecl>(ME->getMemberDecl()))
-      return MD->isVirtual() && !ME->hasQualifier();
-  }
-
-  return 0;
-}
-
-CXType clang_Cursor_getReceiverType(CXCursor C) {
-  CXTranslationUnit TU = cxcursor::getCursorTU(C);
-  const Expr *E = 0;
-  if (clang_isExpression(C.kind))
-    E = getCursorExpr(C);
-
-  if (const ObjCMessageExpr *MsgE = dyn_cast_or_null<ObjCMessageExpr>(E))
-    return cxtype::MakeCXType(MsgE->getReceiverType(), TU);
-
-  return cxtype::MakeCXType(QualType(), TU);
-}
-
-} // end: extern "C"

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXCursor.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXCursor.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXCursor.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,302 +0,0 @@
-//===- CXCursor.h - Routines for manipulating CXCursors -------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXCursors.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_CXCURSOR_H
-#define LLVM_CLANG_CXCURSOR_H
-
-#include "clang-c/Index.h"
-#include "clang/Basic/SourceLocation.h"
-#include "llvm/ADT/PointerUnion.h"
-#include <utility>
-
-namespace clang {
-
-class ASTContext;
-class ASTUnit;
-class Attr;
-class CXXBaseSpecifier;
-class Decl;
-class Expr;
-class FieldDecl;
-class InclusionDirective;
-class LabelStmt;
-class MacroDefinition;
-class MacroExpansion;
-class NamedDecl;
-class ObjCInterfaceDecl;
-class ObjCProtocolDecl;
-class OverloadedTemplateStorage;
-class OverloadExpr;
-class Stmt;
-class TemplateDecl;
-class TemplateName;
-class TypeDecl;
-class VarDecl;
-class IdentifierInfo;
-  
-namespace cxcursor {
-
-CXCursor getCursor(CXTranslationUnit, SourceLocation);
-  
-CXCursor MakeCXCursor(const clang::Attr *A, const clang::Decl *Parent,
-                      CXTranslationUnit TU);
-CXCursor MakeCXCursor(const clang::Decl *D, CXTranslationUnit TU,
-                      SourceRange RegionOfInterest = SourceRange(),
-                      bool FirstInDeclGroup = true);
-CXCursor MakeCXCursor(const clang::Stmt *S, const clang::Decl *Parent,
-                      CXTranslationUnit TU,
-                      SourceRange RegionOfInterest = SourceRange());
-CXCursor MakeCXCursorInvalid(CXCursorKind K, CXTranslationUnit TU = 0);
-
-/// \brief Create an Objective-C superclass reference at the given location.
-CXCursor MakeCursorObjCSuperClassRef(ObjCInterfaceDecl *Super, 
-                                     SourceLocation Loc, 
-                                     CXTranslationUnit TU);
-
-/// \brief Unpack an ObjCSuperClassRef cursor into the interface it references
-/// and optionally the location where the reference occurred.
-std::pair<const ObjCInterfaceDecl *, SourceLocation>
-  getCursorObjCSuperClassRef(CXCursor C);
-
-/// \brief Create an Objective-C protocol reference at the given location.
-CXCursor MakeCursorObjCProtocolRef(const ObjCProtocolDecl *Proto,
-                                   SourceLocation Loc, 
-                                   CXTranslationUnit TU);
-
-/// \brief Unpack an ObjCProtocolRef cursor into the protocol it references
-/// and optionally the location where the reference occurred.
-std::pair<const ObjCProtocolDecl *, SourceLocation>
-  getCursorObjCProtocolRef(CXCursor C);
-
-/// \brief Create an Objective-C class reference at the given location.
-CXCursor MakeCursorObjCClassRef(const ObjCInterfaceDecl *Class,
-                                SourceLocation Loc, 
-                                CXTranslationUnit TU);
-
-/// \brief Unpack an ObjCClassRef cursor into the class it references
-/// and optionally the location where the reference occurred.
-std::pair<const ObjCInterfaceDecl *, SourceLocation>
-  getCursorObjCClassRef(CXCursor C);
-
-/// \brief Create a type reference at the given location.
-CXCursor MakeCursorTypeRef(const TypeDecl *Type, SourceLocation Loc,
-                           CXTranslationUnit TU);
-                               
-/// \brief Unpack a TypeRef cursor into the class it references
-/// and optionally the location where the reference occurred.
-std::pair<const TypeDecl *, SourceLocation> getCursorTypeRef(CXCursor C);
-
-/// \brief Create a reference to a template at the given location.
-CXCursor MakeCursorTemplateRef(const TemplateDecl *Template, SourceLocation Loc,
-                               CXTranslationUnit TU);
-
-/// \brief Unpack a TemplateRef cursor into the template it references and
-/// the location where the reference occurred.
-std::pair<const TemplateDecl *, SourceLocation>
-  getCursorTemplateRef(CXCursor C);
-
-/// \brief Create a reference to a namespace or namespace alias at the given 
-/// location.
-CXCursor MakeCursorNamespaceRef(const NamedDecl *NS, SourceLocation Loc,
-                                CXTranslationUnit TU);
-
-/// \brief Unpack a NamespaceRef cursor into the namespace or namespace alias
-/// it references and the location where the reference occurred.
-std::pair<const NamedDecl *, SourceLocation> getCursorNamespaceRef(CXCursor C);
-
-/// \brief Create a reference to a variable at the given location.
-CXCursor MakeCursorVariableRef(const VarDecl *Var, SourceLocation Loc, 
-                               CXTranslationUnit TU);
-
-/// \brief Unpack a VariableRef cursor into the variable it references and the
-/// location where the where the reference occurred.
-std::pair<const VarDecl *, SourceLocation> getCursorVariableRef(CXCursor C);
-
-/// \brief Create a reference to a field at the given location.
-CXCursor MakeCursorMemberRef(const FieldDecl *Field, SourceLocation Loc, 
-                             CXTranslationUnit TU);
-  
-/// \brief Unpack a MemberRef cursor into the field it references and the 
-/// location where the reference occurred.
-std::pair<const FieldDecl *, SourceLocation> getCursorMemberRef(CXCursor C);
-
-/// \brief Create a CXX base specifier cursor.
-CXCursor MakeCursorCXXBaseSpecifier(const CXXBaseSpecifier *B,
-                                    CXTranslationUnit TU);
-
-/// \brief Unpack a CXXBaseSpecifier cursor into a CXXBaseSpecifier.
-const CXXBaseSpecifier *getCursorCXXBaseSpecifier(CXCursor C);
-
-/// \brief Create a preprocessing directive cursor.
-CXCursor MakePreprocessingDirectiveCursor(SourceRange Range,
-                                          CXTranslationUnit TU);
-
-/// \brief Unpack a given preprocessing directive to retrieve its source range.
-SourceRange getCursorPreprocessingDirective(CXCursor C);
-
-/// \brief Create a macro definition cursor.
-CXCursor MakeMacroDefinitionCursor(const MacroDefinition *,
-                                   CXTranslationUnit TU);
-
-/// \brief Unpack a given macro definition cursor to retrieve its
-/// source range.
-const MacroDefinition *getCursorMacroDefinition(CXCursor C);
-
-/// \brief Create a macro expansion cursor.
-CXCursor MakeMacroExpansionCursor(MacroExpansion *,
-                                  CXTranslationUnit TU);
-
-/// \brief Create a "pseudo" macro expansion cursor, using a macro definition
-/// and a source location.
-CXCursor MakeMacroExpansionCursor(MacroDefinition *, SourceLocation Loc,
-                                  CXTranslationUnit TU);
-
-/// \brief Wraps a macro expansion cursor and provides a common interface
-/// for a normal macro expansion cursor or a "pseudo" one.
-///
-/// "Pseudo" macro expansion cursors (essentially a macro definition along with
-/// a source location) are created in special cases, for example they can be
-/// created for identifiers inside macro definitions, if these identifiers are
-/// macro names.
-class MacroExpansionCursor {
-  CXCursor C;
-
-  bool isPseudo() const {
-    return C.data[1] != 0;
-  }
-  const MacroDefinition *getAsMacroDefinition() const {
-    assert(isPseudo());
-    return static_cast<const MacroDefinition *>(C.data[0]);
-  }
-  const MacroExpansion *getAsMacroExpansion() const {
-    assert(!isPseudo());
-    return static_cast<const MacroExpansion *>(C.data[0]);
-  }
-  SourceLocation getPseudoLoc() const {
-    assert(isPseudo());
-    return SourceLocation::getFromPtrEncoding(C.data[1]);
-  }
-
-public:
-  MacroExpansionCursor(CXCursor C) : C(C) {
-    assert(C.kind == CXCursor_MacroExpansion);
-  }
-
-  const IdentifierInfo *getName() const;
-  const MacroDefinition *getDefinition() const;
-  SourceRange getSourceRange() const;
-};
-
-/// \brief Unpack a given macro expansion cursor to retrieve its info.
-static inline MacroExpansionCursor getCursorMacroExpansion(CXCursor C) {
-  return C;
-}
-
-/// \brief Create an inclusion directive cursor.
-CXCursor MakeInclusionDirectiveCursor(InclusionDirective *,
-                                      CXTranslationUnit TU);
-
-/// \brief Unpack a given inclusion directive cursor to retrieve its
-/// source range.
-const InclusionDirective *getCursorInclusionDirective(CXCursor C);
-
-/// \brief Create a label reference at the given location.
-CXCursor MakeCursorLabelRef(LabelStmt *Label, SourceLocation Loc,
-                            CXTranslationUnit TU);
-
-/// \brief Unpack a label reference into the label statement it refers to and
-/// the location of the reference.
-std::pair<const LabelStmt *, SourceLocation> getCursorLabelRef(CXCursor C);
-
-/// \brief Create a overloaded declaration reference cursor for an expression.
-CXCursor MakeCursorOverloadedDeclRef(const OverloadExpr *E,
-                                     CXTranslationUnit TU);
-
-/// \brief Create a overloaded declaration reference cursor for a declaration.
-CXCursor MakeCursorOverloadedDeclRef(const Decl *D, SourceLocation Location,
-                                     CXTranslationUnit TU);
-
-/// \brief Create a overloaded declaration reference cursor for a template name.
-CXCursor MakeCursorOverloadedDeclRef(TemplateName Template, 
-                                     SourceLocation Location,
-                                     CXTranslationUnit TU);
-
-/// \brief Internal storage for an overloaded declaration reference cursor;
-typedef llvm::PointerUnion3<const OverloadExpr *, const Decl *,
-                            OverloadedTemplateStorage *>
-  OverloadedDeclRefStorage;
-  
-/// \brief Unpack an overloaded declaration reference into an expression,
-/// declaration, or template name along with the source location.
-std::pair<OverloadedDeclRefStorage, SourceLocation>
-  getCursorOverloadedDeclRef(CXCursor C);
-  
-const Decl *getCursorDecl(CXCursor Cursor);
-const Expr *getCursorExpr(CXCursor Cursor);
-const Stmt *getCursorStmt(CXCursor Cursor);
-const Attr *getCursorAttr(CXCursor Cursor);
-const Decl *getCursorParentDecl(CXCursor Cursor);
-
-ASTContext &getCursorContext(CXCursor Cursor);
-ASTUnit *getCursorASTUnit(CXCursor Cursor);
-CXTranslationUnit getCursorTU(CXCursor Cursor);
-
-void getOverriddenCursors(CXCursor cursor,
-                          SmallVectorImpl<CXCursor> &overridden);
-  
-/// \brief Create an opaque  pool used for fast generation of overriden
-/// CXCursor arrays.
-void *createOverridenCXCursorsPool();
-
-/// \brief Dispose of the overriden CXCursors pool.
-void disposeOverridenCXCursorsPool(void *pool);
-  
-/// \brief Returns a index/location pair for a selector identifier if the cursor
-/// points to one.
-std::pair<int, SourceLocation> getSelectorIdentifierIndexAndLoc(CXCursor);
-static inline int getSelectorIdentifierIndex(CXCursor cursor) {
-  return getSelectorIdentifierIndexAndLoc(cursor).first;
-}
-static inline SourceLocation getSelectorIdentifierLoc(CXCursor cursor) {
-  return getSelectorIdentifierIndexAndLoc(cursor).second;
-}
-
-CXCursor getSelectorIdentifierCursor(int SelIdx, CXCursor cursor);
-
-static inline CXCursor getTypeRefedCallExprCursor(CXCursor cursor) {
-  CXCursor newCursor = cursor;
-  if (cursor.kind == CXCursor_CallExpr)
-    newCursor.xdata = 1;
-  return newCursor;
-}
-
-CXCursor getTypeRefCursor(CXCursor cursor);
-
-/// \brief Generate a USR for \arg D and put it in \arg Buf.
-/// \returns true if no USR was computed or the result should be ignored,
-/// false otherwise.
-bool getDeclCursorUSR(const Decl *D, SmallVectorImpl<char> &Buf);
-
-bool operator==(CXCursor X, CXCursor Y);
-  
-inline bool operator!=(CXCursor X, CXCursor Y) {
-  return !(X == Y);
-}
-
-/// \brief Return true if the cursor represents a declaration that is the
-/// first in a declaration group.
-bool isFirstInDeclGroup(CXCursor C);
-
-}} // end namespace: clang::cxcursor
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXLoadedDiagnostic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXLoadedDiagnostic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXLoadedDiagnostic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,655 +0,0 @@
-//===-- CXLoadedDiagnostic.cpp - Handling of persisent diags ----*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Implements handling of persisent diagnostics.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CXLoadedDiagnostic.h"
-#include "CXString.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Frontend/SerializedDiagnosticPrinter.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/Twine.h"
-#include "llvm/ADT/Optional.h"
-#include "clang/Basic/LLVM.h"
-#include "llvm/Support/ErrorHandling.h"
-#include "llvm/Bitcode/BitstreamReader.h"
-#include "llvm/Support/MemoryBuffer.h"
-using namespace clang;
-
-//===----------------------------------------------------------------------===//
-// Extend CXDiagnosticSetImpl which contains strings for diagnostics.
-//===----------------------------------------------------------------------===//
-
-typedef llvm::DenseMap<unsigned, const char *> Strings;
-
-namespace {
-class CXLoadedDiagnosticSetImpl : public CXDiagnosticSetImpl {
-public:
-  CXLoadedDiagnosticSetImpl() : CXDiagnosticSetImpl(true), FakeFiles(FO) {}
-  virtual ~CXLoadedDiagnosticSetImpl() {}  
-
-  llvm::BumpPtrAllocator Alloc;
-  Strings Categories;
-  Strings WarningFlags;
-  Strings FileNames;
-  
-  FileSystemOptions FO;
-  FileManager FakeFiles;
-  llvm::DenseMap<unsigned, const FileEntry *> Files;
-
-  /// \brief Copy the string into our own allocator.
-  const char *copyString(StringRef Blob) {
-    char *mem = Alloc.Allocate<char>(Blob.size() + 1);
-    memcpy(mem, Blob.data(), Blob.size());
-    mem[Blob.size()] = '\0';
-    return mem;
-  }
-};
-}
-
-//===----------------------------------------------------------------------===//
-// Cleanup.
-//===----------------------------------------------------------------------===//
-
-CXLoadedDiagnostic::~CXLoadedDiagnostic() {}
-
-//===----------------------------------------------------------------------===//
-// Public CXLoadedDiagnostic methods.
-//===----------------------------------------------------------------------===//
-
-CXDiagnosticSeverity CXLoadedDiagnostic::getSeverity() const {
-  // FIXME: possibly refactor with logic in CXStoredDiagnostic.
-  switch (severity) {
-    case DiagnosticsEngine::Ignored: return CXDiagnostic_Ignored;
-    case DiagnosticsEngine::Note:    return CXDiagnostic_Note;
-    case DiagnosticsEngine::Warning: return CXDiagnostic_Warning;
-    case DiagnosticsEngine::Error:   return CXDiagnostic_Error;
-    case DiagnosticsEngine::Fatal:   return CXDiagnostic_Fatal;
-  }
-  
-  llvm_unreachable("Invalid diagnostic level");
-}
-
-static CXSourceLocation makeLocation(const CXLoadedDiagnostic::Location *DLoc) {
-  // The lowest bit of ptr_data[0] is always set to 1 to indicate this
-  // is a persistent diagnostic.
-  uintptr_t V = (uintptr_t) DLoc;
-  V |= 0x1;
-  CXSourceLocation Loc = { {  (void*) V, 0 }, 0 };
-  return Loc;
-}  
-
-CXSourceLocation CXLoadedDiagnostic::getLocation() const {
-  // The lowest bit of ptr_data[0] is always set to 1 to indicate this
-  // is a persistent diagnostic.
-  return makeLocation(&DiagLoc);
-}
-
-CXString CXLoadedDiagnostic::getSpelling() const {
-  return cxstring::createRef(Spelling);
-}
-
-CXString CXLoadedDiagnostic::getDiagnosticOption(CXString *Disable) const {
-  if (DiagOption.empty())
-    return cxstring::createEmpty();
-
-  // FIXME: possibly refactor with logic in CXStoredDiagnostic.
-  if (Disable)
-    *Disable = cxstring::createDup((Twine("-Wno-") + DiagOption).str());
-  return cxstring::createDup((Twine("-W") + DiagOption).str());
-}
-
-unsigned CXLoadedDiagnostic::getCategory() const {
-  return category;
-}
-
-CXString CXLoadedDiagnostic::getCategoryText() const {
-  return cxstring::createDup(CategoryText);
-}
-
-unsigned CXLoadedDiagnostic::getNumRanges() const {
-  return Ranges.size();
-}
-
-CXSourceRange CXLoadedDiagnostic::getRange(unsigned Range) const {
-  assert(Range < Ranges.size());
-  return Ranges[Range];
-}
-
-unsigned CXLoadedDiagnostic::getNumFixIts() const {
-  return FixIts.size();
-}
-
-CXString CXLoadedDiagnostic::getFixIt(unsigned FixIt,
-                                      CXSourceRange *ReplacementRange) const {
-  assert(FixIt < FixIts.size());
-  if (ReplacementRange)
-    *ReplacementRange = FixIts[FixIt].first;
-  return cxstring::createRef(FixIts[FixIt].second);
-}
-
-void CXLoadedDiagnostic::decodeLocation(CXSourceLocation location,
-                                        CXFile *file,
-                                        unsigned int *line,
-                                        unsigned int *column,
-                                        unsigned int *offset) {
-  
-  
-  // CXSourceLocation consists of the following fields:
-  //
-  //   void *ptr_data[2];
-  //   unsigned int_data;
-  //
-  // The lowest bit of ptr_data[0] is always set to 1 to indicate this
-  // is a persistent diagnostic.
-  //
-  // For now, do the unoptimized approach and store the data in a side
-  // data structure.  We can optimize this case later.
-  
-  uintptr_t V = (uintptr_t) location.ptr_data[0];
-  assert((V & 0x1) == 1);
-  V &= ~(uintptr_t)1;
-  
-  const Location &Loc = *((Location*)V);
-  
-  if (file)
-    *file = Loc.file;  
-  if (line)
-    *line = Loc.line;
-  if (column)
-    *column = Loc.column;
-  if (offset)
-    *offset = Loc.offset;
-}
-
-//===----------------------------------------------------------------------===//
-// Deserialize diagnostics.
-//===----------------------------------------------------------------------===//
-
-enum { MaxSupportedVersion = 1 };
-typedef SmallVector<uint64_t, 64> RecordData;
-enum LoadResult { Failure = 1, Success = 0 };
-enum StreamResult { Read_EndOfStream,
-                    Read_BlockBegin,
-                    Read_Failure,
-                    Read_Record,
-                    Read_BlockEnd };
-
-namespace {
-class DiagLoader {
-  enum CXLoadDiag_Error *error;
-  CXString *errorString;
-  
-  void reportBad(enum CXLoadDiag_Error code, llvm::StringRef err) {
-    if (error)
-      *error = code;
-    if (errorString)
-      *errorString = cxstring::createDup(err);
-  }
-  
-  void reportInvalidFile(llvm::StringRef err) {
-    return reportBad(CXLoadDiag_InvalidFile, err);
-  }
-
-  LoadResult readMetaBlock(llvm::BitstreamCursor &Stream);
-  
-  LoadResult readDiagnosticBlock(llvm::BitstreamCursor &Stream,
-                                 CXDiagnosticSetImpl &Diags,
-                                 CXLoadedDiagnosticSetImpl &TopDiags);
-
-  StreamResult readToNextRecordOrBlock(llvm::BitstreamCursor &Stream,
-                                       llvm::StringRef errorContext,
-                                       unsigned &BlockOrRecordID,
-                                       bool atTopLevel = false);
-  
-  
-  LoadResult readString(CXLoadedDiagnosticSetImpl &TopDiags,
-                        Strings &strings, llvm::StringRef errorContext,
-                        RecordData &Record,
-                        StringRef Blob,
-                        bool allowEmptyString = false);
-
-  LoadResult readString(CXLoadedDiagnosticSetImpl &TopDiags,
-                        const char *&RetStr,
-                        llvm::StringRef errorContext,
-                        RecordData &Record,
-                        StringRef Blob,
-                        bool allowEmptyString = false);
-
-  LoadResult readRange(CXLoadedDiagnosticSetImpl &TopDiags,
-                       RecordData &Record, unsigned RecStartIdx,
-                       CXSourceRange &SR);
-  
-  LoadResult readLocation(CXLoadedDiagnosticSetImpl &TopDiags,
-                          RecordData &Record, unsigned &offset,
-                          CXLoadedDiagnostic::Location &Loc);
-                       
-public:
-  DiagLoader(enum CXLoadDiag_Error *e, CXString *es)
-    : error(e), errorString(es) {
-      if (error)
-        *error = CXLoadDiag_None;
-      if (errorString)
-        *errorString = cxstring::createEmpty();
-    }
-
-  CXDiagnosticSet load(const char *file);
-};
-}
-
-CXDiagnosticSet DiagLoader::load(const char *file) {
-  // Open the diagnostics file.
-  std::string ErrStr;
-  FileSystemOptions FO;
-  FileManager FileMgr(FO);
-
-  OwningPtr<llvm::MemoryBuffer> Buffer;
-  Buffer.reset(FileMgr.getBufferForFile(file));
-
-  if (!Buffer) {
-    reportBad(CXLoadDiag_CannotLoad, ErrStr);
-    return 0;
-  }
-
-  llvm::BitstreamReader StreamFile;
-  StreamFile.init((const unsigned char *)Buffer->getBufferStart(),
-                  (const unsigned char *)Buffer->getBufferEnd());
-
-  llvm::BitstreamCursor Stream;
-  Stream.init(StreamFile);
-
-  // Sniff for the signature.
-  if (Stream.Read(8) != 'D' ||
-      Stream.Read(8) != 'I' ||
-      Stream.Read(8) != 'A' ||
-      Stream.Read(8) != 'G') {
-    reportBad(CXLoadDiag_InvalidFile,
-              "Bad header in diagnostics file");
-    return 0;
-  }
-
-  OwningPtr<CXLoadedDiagnosticSetImpl> Diags(new CXLoadedDiagnosticSetImpl());
-
-  while (true) {
-    unsigned BlockID = 0;
-    StreamResult Res = readToNextRecordOrBlock(Stream, "Top-level", 
-                                               BlockID, true);
-    switch (Res) {
-      case Read_EndOfStream:
-        return (CXDiagnosticSet) Diags.take();
-      case Read_Failure:
-        return 0;
-      case Read_Record:
-        llvm_unreachable("Top-level does not have records");
-      case Read_BlockEnd:
-        continue;
-      case Read_BlockBegin:
-        break;
-    }
-    
-    switch (BlockID) {
-      case serialized_diags::BLOCK_META:
-        if (readMetaBlock(Stream))
-          return 0;
-        break;
-      case serialized_diags::BLOCK_DIAG:
-        if (readDiagnosticBlock(Stream, *Diags.get(), *Diags.get()))
-          return 0;
-        break;
-      default:
-        if (!Stream.SkipBlock()) {
-          reportInvalidFile("Malformed block at top-level of diagnostics file");
-          return 0;
-        }
-        break;
-    }
-  }
-}
-
-StreamResult DiagLoader::readToNextRecordOrBlock(llvm::BitstreamCursor &Stream,
-                                                 llvm::StringRef errorContext,
-                                                 unsigned &blockOrRecordID,
-                                                 bool atTopLevel) {
-  
-  blockOrRecordID = 0;
-
-  while (!Stream.AtEndOfStream()) {
-    unsigned Code = Stream.ReadCode();
-
-    // Handle the top-level specially.
-    if (atTopLevel) {
-      if (Code == llvm::bitc::ENTER_SUBBLOCK) {
-        unsigned BlockID = Stream.ReadSubBlockID();
-        if (BlockID == llvm::bitc::BLOCKINFO_BLOCK_ID) {
-          if (Stream.ReadBlockInfoBlock()) {
-            reportInvalidFile("Malformed BlockInfoBlock in diagnostics file");
-            return Read_Failure;
-          }
-          continue;
-        }
-        blockOrRecordID = BlockID;
-        return Read_BlockBegin;
-      }
-      reportInvalidFile("Only blocks can appear at the top of a "
-                        "diagnostic file");
-      return Read_Failure;
-    }
-    
-    switch ((llvm::bitc::FixedAbbrevIDs)Code) {
-      case llvm::bitc::ENTER_SUBBLOCK:
-        blockOrRecordID = Stream.ReadSubBlockID();
-        return Read_BlockBegin;
-      
-      case llvm::bitc::END_BLOCK:
-        if (Stream.ReadBlockEnd()) {
-          reportInvalidFile("Cannot read end of block");
-          return Read_Failure;
-        }
-        return Read_BlockEnd;
-        
-      case llvm::bitc::DEFINE_ABBREV:
-        Stream.ReadAbbrevRecord();
-        continue;
-        
-      case llvm::bitc::UNABBREV_RECORD:
-        reportInvalidFile("Diagnostics file should have no unabbreviated "
-                          "records");
-        return Read_Failure;
-      
-      default:
-        // We found a record.
-        blockOrRecordID = Code;
-        return Read_Record;
-    }
-  }
-  
-  if (atTopLevel)
-    return Read_EndOfStream;
-  
-  reportInvalidFile(Twine("Premature end of diagnostics file within ").str() + 
-                    errorContext.str());
-  return Read_Failure;
-}
-
-LoadResult DiagLoader::readMetaBlock(llvm::BitstreamCursor &Stream) {
-  if (Stream.EnterSubBlock(clang::serialized_diags::BLOCK_META)) {
-    reportInvalidFile("Malformed metadata block");
-    return Failure;
-  }
-
-  bool versionChecked = false;
-  
-  while (true) {
-    unsigned blockOrCode = 0;
-    StreamResult Res = readToNextRecordOrBlock(Stream, "Metadata Block",
-                                               blockOrCode);
-    
-    switch(Res) {
-      case Read_EndOfStream:
-        llvm_unreachable("EndOfStream handled by readToNextRecordOrBlock");
-      case Read_Failure:
-        return Failure;
-      case Read_Record:
-        break;
-      case Read_BlockBegin:
-        if (Stream.SkipBlock()) {
-          reportInvalidFile("Malformed metadata block");
-          return Failure;
-        }
-      case Read_BlockEnd:
-        if (!versionChecked) {
-          reportInvalidFile("Diagnostics file does not contain version"
-                            " information");
-          return Failure;
-        }
-        return Success;
-    }
-    
-    RecordData Record;
-    unsigned recordID = Stream.readRecord(blockOrCode, Record);
-    
-    if (recordID == serialized_diags::RECORD_VERSION) {
-      if (Record.size() < 1) {
-        reportInvalidFile("malformed VERSION identifier in diagnostics file");
-        return Failure;
-      }
-      if (Record[0] > MaxSupportedVersion) {
-        reportInvalidFile("diagnostics file is a newer version than the one "
-                          "supported");
-        return Failure;
-      }
-      versionChecked = true;
-    }
-  }
-}
-
-LoadResult DiagLoader::readString(CXLoadedDiagnosticSetImpl &TopDiags,
-                                  const char *&RetStr,
-                                  llvm::StringRef errorContext,
-                                  RecordData &Record,
-                                  StringRef Blob,
-                                  bool allowEmptyString) {
-  
-  // Basic buffer overflow check.
-  if (Blob.size() > 65536) {
-    reportInvalidFile(std::string("Out-of-bounds string in ") +
-                      std::string(errorContext));
-    return Failure;
-  }
-
-  if (allowEmptyString && Record.size() >= 1 && Blob.size() == 0) {
-    RetStr = "";
-    return Success;
-  }
-  
-  if (Record.size() < 1 || Blob.size() == 0) {
-    reportInvalidFile(std::string("Corrupted ") + std::string(errorContext)
-                      + std::string(" entry"));
-    return Failure;
-  }
-  
-  RetStr = TopDiags.copyString(Blob);
-  return Success;
-}
-
-LoadResult DiagLoader::readString(CXLoadedDiagnosticSetImpl &TopDiags,
-                                  Strings &strings,
-                                  llvm::StringRef errorContext,
-                                  RecordData &Record,
-                                  StringRef Blob,
-                                  bool allowEmptyString) {
-  const char *RetStr;
-  if (readString(TopDiags, RetStr, errorContext, Record, Blob,
-                 allowEmptyString))
-    return Failure;
-  strings[Record[0]] = RetStr;
-  return Success;
-}
-
-LoadResult DiagLoader::readLocation(CXLoadedDiagnosticSetImpl &TopDiags,
-                                    RecordData &Record, unsigned &offset,
-                                    CXLoadedDiagnostic::Location &Loc) {
-  if (Record.size() < offset + 3) {
-    reportInvalidFile("Corrupted source location");
-    return Failure;
-  }
-  
-  unsigned fileID = Record[offset++];
-  if (fileID == 0) {
-    // Sentinel value.
-    Loc.file = 0;
-    Loc.line = 0;
-    Loc.column = 0;
-    Loc.offset = 0;
-    return Success;
-  }
-
-  const FileEntry *FE = TopDiags.Files[fileID];
-  if (!FE) {
-    reportInvalidFile("Corrupted file entry in source location");
-    return Failure;
-  }
-  Loc.file = const_cast<FileEntry *>(FE);
-  Loc.line = Record[offset++];
-  Loc.column = Record[offset++];
-  Loc.offset = Record[offset++];
-  return Success;
-}
-
-LoadResult DiagLoader::readRange(CXLoadedDiagnosticSetImpl &TopDiags,
-                                 RecordData &Record,
-                                 unsigned int RecStartIdx,
-                                 CXSourceRange &SR) {
-  CXLoadedDiagnostic::Location *Start, *End;
-  Start = TopDiags.Alloc.Allocate<CXLoadedDiagnostic::Location>();
-  End = TopDiags.Alloc.Allocate<CXLoadedDiagnostic::Location>();
-  
-  if (readLocation(TopDiags, Record, RecStartIdx, *Start))
-    return Failure;
-  if (readLocation(TopDiags, Record, RecStartIdx, *End))
-    return Failure;
-  
-  CXSourceLocation startLoc = makeLocation(Start);
-  CXSourceLocation endLoc = makeLocation(End);
-  SR = clang_getRange(startLoc, endLoc);
-  return Success;  
-}
-
-LoadResult DiagLoader::readDiagnosticBlock(llvm::BitstreamCursor &Stream,
-                                           CXDiagnosticSetImpl &Diags,
-                                           CXLoadedDiagnosticSetImpl &TopDiags){
-
-  if (Stream.EnterSubBlock(clang::serialized_diags::BLOCK_DIAG)) {
-    reportInvalidFile("malformed diagnostic block");
-    return Failure;
-  }
-  
-  OwningPtr<CXLoadedDiagnostic> D(new CXLoadedDiagnostic());
-  RecordData Record;
-  
-  while (true) {
-    unsigned blockOrCode = 0;
-    StreamResult Res = readToNextRecordOrBlock(Stream, "Diagnostic Block",
-                                               blockOrCode);
-    switch (Res) {
-      case Read_EndOfStream:
-        llvm_unreachable("EndOfStream handled in readToNextRecordOrBlock");
-      case Read_Failure:
-        return Failure;
-      case Read_BlockBegin: {
-        // The only blocks we care about are subdiagnostics.
-        if (blockOrCode != serialized_diags::BLOCK_DIAG) {
-          if (!Stream.SkipBlock()) {
-            reportInvalidFile("Invalid subblock in Diagnostics block");
-            return Failure;
-          }
-        } else if (readDiagnosticBlock(Stream, D->getChildDiagnostics(),
-                                       TopDiags)) {
-          return Failure;
-        }
-
-        continue;
-      }
-      case Read_BlockEnd:
-        Diags.appendDiagnostic(D.take());        
-        return Success;
-      case Read_Record:
-        break;
-    }
-    
-    // Read the record.
-    Record.clear();
-    StringRef Blob;
-    unsigned recID = Stream.readRecord(blockOrCode, Record, &Blob);
-    
-    if (recID < serialized_diags::RECORD_FIRST ||
-        recID > serialized_diags::RECORD_LAST)
-      continue;
-    
-    switch ((serialized_diags::RecordIDs)recID) {  
-      case serialized_diags::RECORD_VERSION:
-        continue;
-      case serialized_diags::RECORD_CATEGORY:
-        if (readString(TopDiags, TopDiags.Categories, "category", Record,
-                       Blob, /* allowEmptyString */ true))
-          return Failure;
-        continue;
-      
-      case serialized_diags::RECORD_DIAG_FLAG:
-        if (readString(TopDiags, TopDiags.WarningFlags, "warning flag", Record,
-                       Blob))
-          return Failure;
-        continue;
-        
-      case serialized_diags::RECORD_FILENAME: {
-        if (readString(TopDiags, TopDiags.FileNames, "filename", Record,
-                       Blob))
-          return Failure;
-
-        if (Record.size() < 3) {
-          reportInvalidFile("Invalid file entry");
-          return Failure;
-        }
-        
-        const FileEntry *FE =
-          TopDiags.FakeFiles.getVirtualFile(TopDiags.FileNames[Record[0]],
-                                            /* size */ Record[1],
-                                            /* time */ Record[2]);
-        
-        TopDiags.Files[Record[0]] = FE;
-        continue;
-      }
-
-      case serialized_diags::RECORD_SOURCE_RANGE: {
-        CXSourceRange SR;
-        if (readRange(TopDiags, Record, 0, SR))
-          return Failure;
-        D->Ranges.push_back(SR);
-        continue;
-      }
-      
-      case serialized_diags::RECORD_FIXIT: {
-        CXSourceRange SR;
-        if (readRange(TopDiags, Record, 0, SR))
-          return Failure;
-        const char *RetStr;
-        if (readString(TopDiags, RetStr, "FIXIT", Record, Blob,
-                       /* allowEmptyString */ true))
-          return Failure;
-        D->FixIts.push_back(std::make_pair(SR, RetStr));
-        continue;
-      }
-        
-      case serialized_diags::RECORD_DIAG: {
-        D->severity = Record[0];
-        unsigned offset = 1;
-        if (readLocation(TopDiags, Record, offset, D->DiagLoc))
-          return Failure;
-        D->category = Record[offset++];
-        unsigned diagFlag = Record[offset++];
-        D->DiagOption = diagFlag ? TopDiags.WarningFlags[diagFlag] : "";
-        D->CategoryText = D->category ? TopDiags.Categories[D->category] : "";
-        D->Spelling = TopDiags.copyString(Blob);
-        continue;
-      }
-    }
-  }
-}
-
-extern "C" {
-CXDiagnosticSet clang_loadDiagnostics(const char *file,
-                                      enum CXLoadDiag_Error *error,
-                                      CXString *errorString) {
-  DiagLoader L(error, errorString);
-  return L.load(file);
-}
-} // end extern 'C'.

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXLoadedDiagnostic.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXLoadedDiagnostic.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXLoadedDiagnostic.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,94 +0,0 @@
-/*===-- CXLoadedDiagnostic.h - Handling of persisent diags ------*- C++ -*-===*\
-|*                                                                            *|
-|*                     The LLVM Compiler Infrastructure                       *|
-|*                                                                            *|
-|* This file is distributed under the University of Illinois Open Source      *|
-|* License. See LICENSE.TXT for details.                                      *|
-|*                                                                            *|
-|*===----------------------------------------------------------------------===*|
-|*                                                                            *|
-|* Implements handling of persisent diagnostics.                              *|
-|*                                                                            *|
-\*===----------------------------------------------------------------------===*/
-
-#ifndef LLVM_CLANG_CINDEX_LOADED_DIAGNOSTIC_H
-#define LLVM_CLANG_CINDEX_LOADED_DIAGNOSTIC_H
-
-#include "CIndexDiagnostic.h"
-#include "llvm/ADT/StringRef.h"
-#include "clang/Basic/LLVM.h"
-#include <string>
-#include <vector>
-
-namespace clang {
-class CXLoadedDiagnostic : public CXDiagnosticImpl {
-public:
-  CXLoadedDiagnostic() : CXDiagnosticImpl(LoadedDiagnosticKind),
-    severity(0), category(0) {}
-
-  virtual ~CXLoadedDiagnostic();
-  
-  /// \brief Return the severity of the diagnostic.
-  virtual CXDiagnosticSeverity getSeverity() const;
-  
-  /// \brief Return the location of the diagnostic.
-  virtual CXSourceLocation getLocation() const;
-  
-  /// \brief Return the spelling of the diagnostic.
-  virtual CXString getSpelling() const;
-  
-  /// \brief Return the text for the diagnostic option.
-  virtual CXString getDiagnosticOption(CXString *Disable) const;
-  
-  /// \brief Return the category of the diagnostic.
-  virtual unsigned getCategory() const;
-  
-  /// \brief Return the category string of the diagnostic.
-  virtual CXString getCategoryText() const;
-  
-  /// \brief Return the number of source ranges for the diagnostic.
-  virtual unsigned getNumRanges() const;
-  
-  /// \brief Return the source ranges for the diagnostic.
-  virtual CXSourceRange getRange(unsigned Range) const;
-  
-  /// \brief Return the number of FixIts.
-  virtual unsigned getNumFixIts() const;
-  
-  /// \brief Return the FixIt information (source range and inserted text).
-  virtual CXString getFixIt(unsigned FixIt,
-                            CXSourceRange *ReplacementRange) const;
-  
-  static bool classof(const CXDiagnosticImpl *D) {
-    return D->getKind() == LoadedDiagnosticKind;
-  }
-  
-  /// \brief Decode the CXSourceLocation into file, line, column, and offset.
-  static void decodeLocation(CXSourceLocation location,
-                             CXFile *file,
-                             unsigned *line,
-                             unsigned *column,
-                             unsigned *offset);
-
-  struct Location {
-    CXFile file;
-    unsigned line;
-    unsigned column;
-    unsigned offset;
-    
-    Location() : line(0), column(0), offset(0) {}    
-  };
-  
-  Location DiagLoc;
-
-  std::vector<CXSourceRange> Ranges;
-  std::vector<std::pair<CXSourceRange, const char *> > FixIts;
-  const char *Spelling;
-  llvm::StringRef DiagOption;
-  llvm::StringRef CategoryText;
-  unsigned severity;
-  unsigned category;
-};
-}
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXSourceLocation.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXSourceLocation.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXSourceLocation.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,368 +0,0 @@
-//===- CXSourceLocation.cpp - CXSourceLocations APIs ------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXSourceLocations.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Frontend/ASTUnit.h"
-#include "CIndexer.h"
-#include "CLog.h"
-#include "CXLoadedDiagnostic.h"
-#include "CXSourceLocation.h"
-#include "CXString.h"
-#include "CXTranslationUnit.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/Format.h"
-
-using namespace clang;
-using namespace clang::cxindex;
-
-//===----------------------------------------------------------------------===//
-// Internal predicates on CXSourceLocations.
-//===----------------------------------------------------------------------===//
-
-static bool isASTUnitSourceLocation(const CXSourceLocation &L) {
-  // If the lowest bit is clear then the first ptr_data entry is a SourceManager
-  // pointer, or the CXSourceLocation is a null location.
-  return ((uintptr_t)L.ptr_data[0] & 0x1) == 0;
-}
-
-//===----------------------------------------------------------------------===//
-// Basic construction and comparison of CXSourceLocations and CXSourceRanges.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-  
-CXSourceLocation clang_getNullLocation() {
-  CXSourceLocation Result = { { 0, 0 }, 0 };
-  return Result;
-}
-
-unsigned clang_equalLocations(CXSourceLocation loc1, CXSourceLocation loc2) {
-  return (loc1.ptr_data[0] == loc2.ptr_data[0] &&
-          loc1.ptr_data[1] == loc2.ptr_data[1] &&
-          loc1.int_data == loc2.int_data);
-}
-
-CXSourceRange clang_getNullRange() {
-  CXSourceRange Result = { { 0, 0 }, 0, 0 };
-  return Result;
-}
-
-CXSourceRange clang_getRange(CXSourceLocation begin, CXSourceLocation end) {
-  if (!isASTUnitSourceLocation(begin)) {
-    if (isASTUnitSourceLocation(end))
-      return clang_getNullRange();
-    CXSourceRange Result = { { begin.ptr_data[0], end.ptr_data[0] }, 0, 0 };
-    return Result;
-  }
-  
-  if (begin.ptr_data[0] != end.ptr_data[0] ||
-      begin.ptr_data[1] != end.ptr_data[1])
-    return clang_getNullRange();
-  
-  CXSourceRange Result = { { begin.ptr_data[0], begin.ptr_data[1] },
-                           begin.int_data, end.int_data };
-
-  return Result;
-}
-
-unsigned clang_equalRanges(CXSourceRange range1, CXSourceRange range2) {
-  return range1.ptr_data[0] == range2.ptr_data[0]
-    && range1.ptr_data[1] == range2.ptr_data[1]
-    && range1.begin_int_data == range2.begin_int_data
-    && range1.end_int_data == range2.end_int_data;
-}
-
-int clang_Range_isNull(CXSourceRange range) {
-  return clang_equalRanges(range, clang_getNullRange());
-}
-  
-  
-CXSourceLocation clang_getRangeStart(CXSourceRange range) {
-  // Special decoding for CXSourceLocations for CXLoadedDiagnostics.
-  if ((uintptr_t)range.ptr_data[0] & 0x1) {
-    CXSourceLocation Result = { { range.ptr_data[0], 0 }, 0 };
-    return Result;    
-  }
-  
-  CXSourceLocation Result = { { range.ptr_data[0], range.ptr_data[1] },
-    range.begin_int_data };
-  return Result;
-}
-
-CXSourceLocation clang_getRangeEnd(CXSourceRange range) {
-  // Special decoding for CXSourceLocations for CXLoadedDiagnostics.
-  if ((uintptr_t)range.ptr_data[0] & 0x1) {
-    CXSourceLocation Result = { { range.ptr_data[1], 0 }, 0 };
-    return Result;    
-  }
-
-  CXSourceLocation Result = { { range.ptr_data[0], range.ptr_data[1] },
-    range.end_int_data };
-  return Result;
-}
-
-} // end extern "C"
-
-//===----------------------------------------------------------------------===//
-//  Getting CXSourceLocations and CXSourceRanges from a translation unit.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-  
-CXSourceLocation clang_getLocation(CXTranslationUnit TU,
-                                   CXFile file,
-                                   unsigned line,
-                                   unsigned column) {
-  if (!TU || !file)
-    return clang_getNullLocation();
-  
-  LogRef Log = Logger::make(LLVM_FUNCTION_NAME);
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-  ASTUnit::ConcurrencyCheck Check(*CXXUnit);
-  const FileEntry *File = static_cast<const FileEntry *>(file);
-  SourceLocation SLoc = CXXUnit->getLocation(File, line, column);
-  if (SLoc.isInvalid()) {
-    if (Log)
-      *Log << llvm::format("(\"%s\", %d, %d) = invalid",
-                           File->getName(), line, column);
-    return clang_getNullLocation();
-  }
-  
-  CXSourceLocation CXLoc =
-      cxloc::translateSourceLocation(CXXUnit->getASTContext(), SLoc);
-  if (Log)
-    *Log << llvm::format("(\"%s\", %d, %d) = ", File->getName(), line, column)
-         << CXLoc;
-  
-  return CXLoc;
-}
-  
-CXSourceLocation clang_getLocationForOffset(CXTranslationUnit TU,
-                                            CXFile file,
-                                            unsigned offset) {
-  if (!TU || !file)
-    return clang_getNullLocation();
-  
-  ASTUnit *CXXUnit = cxtu::getASTUnit(TU);
-
-  SourceLocation SLoc 
-    = CXXUnit->getLocation(static_cast<const FileEntry *>(file), offset);
-
-  if (SLoc.isInvalid())
-    return clang_getNullLocation();
-  
-  return cxloc::translateSourceLocation(CXXUnit->getASTContext(), SLoc);
-}
-
-} // end extern "C"
-
-//===----------------------------------------------------------------------===//
-// Routines for expanding and manipulating CXSourceLocations, regardless
-// of their origin.
-//===----------------------------------------------------------------------===//
-
-static void createNullLocation(CXFile *file, unsigned *line,
-                               unsigned *column, unsigned *offset) {
-  if (file)
-    *file = 0;
-  if (line)
-    *line = 0;
-  if (column)
-    *column = 0;
-  if (offset)
-    *offset = 0;
-  return;
-}
-
-static void createNullLocation(CXString *filename, unsigned *line,
-                               unsigned *column, unsigned *offset = 0) {
-  if (filename)
-    *filename = cxstring::createEmpty();
-  if (line)
-    *line = 0;
-  if (column)
-    *column = 0;
-  if (offset)
-    *offset = 0;
-  return;
-}
-
-extern "C" {
-
-int clang_Location_isInSystemHeader(CXSourceLocation location) {
-  const SourceLocation Loc =
-    SourceLocation::getFromRawEncoding(location.int_data);
-  if (Loc.isInvalid())
-    return 0;
-
-  const SourceManager &SM =
-    *static_cast<const SourceManager*>(location.ptr_data[0]);
-  return SM.isInSystemHeader(Loc);
-}
-
-void clang_getExpansionLocation(CXSourceLocation location,
-                                CXFile *file,
-                                unsigned *line,
-                                unsigned *column,
-                                unsigned *offset) {
-  
-  if (!isASTUnitSourceLocation(location)) {
-    CXLoadedDiagnostic::decodeLocation(location, file, line, column, offset);
-    return;
-  }
-
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
-
-  if (!location.ptr_data[0] || Loc.isInvalid()) {
-    createNullLocation(file, line, column, offset);
-    return;
-  }
-
-  const SourceManager &SM =
-  *static_cast<const SourceManager*>(location.ptr_data[0]);
-  SourceLocation ExpansionLoc = SM.getExpansionLoc(Loc);
-  
-  // Check that the FileID is invalid on the expansion location.
-  // This can manifest in invalid code.
-  FileID fileID = SM.getFileID(ExpansionLoc);
-  bool Invalid = false;
-  const SrcMgr::SLocEntry &sloc = SM.getSLocEntry(fileID, &Invalid);
-  if (Invalid || !sloc.isFile()) {
-    createNullLocation(file, line, column, offset);
-    return;
-  }
-  
-  if (file)
-    *file = const_cast<FileEntry *>(SM.getFileEntryForSLocEntry(sloc));
-  if (line)
-    *line = SM.getExpansionLineNumber(ExpansionLoc);
-  if (column)
-    *column = SM.getExpansionColumnNumber(ExpansionLoc);
-  if (offset)
-    *offset = SM.getDecomposedLoc(ExpansionLoc).second;
-}
-
-void clang_getPresumedLocation(CXSourceLocation location,
-                               CXString *filename,
-                               unsigned *line,
-                               unsigned *column) {
-  
-  if (!isASTUnitSourceLocation(location)) {
-    // Other SourceLocation implementations do not support presumed locations
-    // at this time.
-    createNullLocation(filename, line, column);
-    return;
-  }
-
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
-
-  if (!location.ptr_data[0] || Loc.isInvalid())
-    createNullLocation(filename, line, column);
-  else {
-    const SourceManager &SM =
-    *static_cast<const SourceManager*>(location.ptr_data[0]);
-    PresumedLoc PreLoc = SM.getPresumedLoc(Loc);
-    
-    if (filename)
-      *filename = cxstring::createRef(PreLoc.getFilename());
-    if (line)
-      *line = PreLoc.getLine();
-    if (column)
-      *column = PreLoc.getColumn();
-  }
-}
-
-void clang_getInstantiationLocation(CXSourceLocation location,
-                                    CXFile *file,
-                                    unsigned *line,
-                                    unsigned *column,
-                                    unsigned *offset) {
-  // Redirect to new API.
-  clang_getExpansionLocation(location, file, line, column, offset);
-}
-
-void clang_getSpellingLocation(CXSourceLocation location,
-                               CXFile *file,
-                               unsigned *line,
-                               unsigned *column,
-                               unsigned *offset) {
-  
-  if (!isASTUnitSourceLocation(location)) {
-    CXLoadedDiagnostic::decodeLocation(location, file, line,
-                                           column, offset);
-    return;
-  }
-  
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
-  
-  if (!location.ptr_data[0] || Loc.isInvalid())
-    return createNullLocation(file, line, column, offset);
-  
-  const SourceManager &SM =
-  *static_cast<const SourceManager*>(location.ptr_data[0]);
-  // FIXME: This should call SourceManager::getSpellingLoc().
-  SourceLocation SpellLoc = SM.getFileLoc(Loc);
-  std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SpellLoc);
-  FileID FID = LocInfo.first;
-  unsigned FileOffset = LocInfo.second;
-  
-  if (FID.isInvalid())
-    return createNullLocation(file, line, column, offset);
-  
-  if (file)
-    *file = const_cast<FileEntry *>(SM.getFileEntryForID(FID));
-  if (line)
-    *line = SM.getLineNumber(FID, FileOffset);
-  if (column)
-    *column = SM.getColumnNumber(FID, FileOffset);
-  if (offset)
-    *offset = FileOffset;
-}
-
-void clang_getFileLocation(CXSourceLocation location,
-                           CXFile *file,
-                           unsigned *line,
-                           unsigned *column,
-                           unsigned *offset) {
-
-  if (!isASTUnitSourceLocation(location)) {
-    CXLoadedDiagnostic::decodeLocation(location, file, line,
-                                           column, offset);
-    return;
-  }
-
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
-
-  if (!location.ptr_data[0] || Loc.isInvalid())
-    return createNullLocation(file, line, column, offset);
-
-  const SourceManager &SM =
-  *static_cast<const SourceManager*>(location.ptr_data[0]);
-  SourceLocation FileLoc = SM.getFileLoc(Loc);
-  std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(FileLoc);
-  FileID FID = LocInfo.first;
-  unsigned FileOffset = LocInfo.second;
-
-  if (FID.isInvalid())
-    return createNullLocation(file, line, column, offset);
-
-  if (file)
-    *file = const_cast<FileEntry *>(SM.getFileEntryForID(FID));
-  if (line)
-    *line = SM.getLineNumber(FID, FileOffset);
-  if (column)
-    *column = SM.getColumnNumber(FID, FileOffset);
-  if (offset)
-    *offset = FileOffset;
-}
-
-} // end extern "C"

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXSourceLocation.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXSourceLocation.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXSourceLocation.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-//===- CXSourceLocation.h - CXSourceLocations Utilities ---------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXSourceLocations.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_CXSOURCELOCATION_H
-#define LLVM_CLANG_CXSOURCELOCATION_H
-
-#include "clang-c/Index.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceLocation.h"
-
-namespace clang {
-
-class SourceManager;
-
-namespace cxloc {
-
-/// \brief Translate a Clang source location into a CIndex source location.
-static inline CXSourceLocation 
-translateSourceLocation(const SourceManager &SM, const LangOptions &LangOpts,
-                        SourceLocation Loc) {
-  if (Loc.isInvalid())
-    clang_getNullLocation();
-
-  CXSourceLocation Result = { { &SM, &LangOpts, },
-                              Loc.getRawEncoding() };
-  return Result;
-}
-  
-/// \brief Translate a Clang source location into a CIndex source location.
-static inline CXSourceLocation translateSourceLocation(ASTContext &Context,
-                                                       SourceLocation Loc) {
-  return translateSourceLocation(Context.getSourceManager(),
-                                 Context.getLangOpts(),
-                                 Loc);
-}
-
-/// \brief Translate a Clang source range into a CIndex source range.
-///
-/// Clang internally represents ranges where the end location points to the
-/// start of the token at the end. However, for external clients it is more
-/// useful to have a CXSourceRange be a proper half-open interval. This routine
-/// does the appropriate translation.
-CXSourceRange translateSourceRange(const SourceManager &SM, 
-                                   const LangOptions &LangOpts,
-                                   const CharSourceRange &R);
-  
-/// \brief Translate a Clang source range into a CIndex source range.
-static inline CXSourceRange translateSourceRange(ASTContext &Context,
-                                                 SourceRange R) {
-  return translateSourceRange(Context.getSourceManager(),
-                              Context.getLangOpts(),
-                              CharSourceRange::getTokenRange(R));
-}
-
-static inline SourceLocation translateSourceLocation(CXSourceLocation L) {
-  return SourceLocation::getFromRawEncoding(L.int_data);
-}
-
-static inline SourceRange translateCXSourceRange(CXSourceRange R) {
-  return SourceRange(SourceLocation::getFromRawEncoding(R.begin_int_data),
-                     SourceLocation::getFromRawEncoding(R.end_int_data));
-}
-
-
-}} // end namespace: clang::cxloc
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXStoredDiagnostic.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXStoredDiagnostic.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXStoredDiagnostic.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,113 +0,0 @@
-/*===-- CXStoreDiagnostic.cpp - Diagnostics C Interface ----------*- C++ -*-===*\
-|*                                                                            *|
-|*                     The LLVM Compiler Infrastructure                       *|
-|*                                                                            *|
-|* This file is distributed under the University of Illinois Open Source      *|
-|* License. See LICENSE.TXT for details.                                      *|
-|*                                                                            *|
-|*===----------------------------------------------------------------------===*|
-|*                                                                            *|
-|* Implements part of the diagnostic functions of the Clang C interface.      *|
-|*                                                                            *|
-\*===----------------------------------------------------------------------===*/
-
-#include "CIndexDiagnostic.h"
-#include "CIndexer.h"
-#include "CXTranslationUnit.h"
-#include "CXSourceLocation.h"
-#include "CXString.h"
-
-#include "clang/Frontend/ASTUnit.h"
-#include "clang/Frontend/FrontendDiagnostic.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/Twine.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/raw_ostream.h"
-
-using namespace clang;
-using namespace clang::cxloc;
-
-CXDiagnosticSeverity CXStoredDiagnostic::getSeverity() const {
-  switch (Diag.getLevel()) {
-    case DiagnosticsEngine::Ignored: return CXDiagnostic_Ignored;
-    case DiagnosticsEngine::Note:    return CXDiagnostic_Note;
-    case DiagnosticsEngine::Warning: return CXDiagnostic_Warning;
-    case DiagnosticsEngine::Error:   return CXDiagnostic_Error;
-    case DiagnosticsEngine::Fatal:   return CXDiagnostic_Fatal;
-  }
-  
-  llvm_unreachable("Invalid diagnostic level");
-}
-
-CXSourceLocation CXStoredDiagnostic::getLocation() const {
-  if (Diag.getLocation().isInvalid())
-    return clang_getNullLocation();
-  
-  return translateSourceLocation(Diag.getLocation().getManager(),
-                                 LangOpts, Diag.getLocation());
-}
-
-CXString CXStoredDiagnostic::getSpelling() const {
-  return cxstring::createRef(Diag.getMessage());
-}
-
-CXString CXStoredDiagnostic::getDiagnosticOption(CXString *Disable) const {
-  unsigned ID = Diag.getID();
-  StringRef Option = DiagnosticIDs::getWarningOptionForDiag(ID);
-  if (!Option.empty()) {
-    if (Disable)
-      *Disable = cxstring::createDup((Twine("-Wno-") + Option).str());
-    return cxstring::createDup((Twine("-W") + Option).str());
-  }
-  
-  if (ID == diag::fatal_too_many_errors) {
-    if (Disable)
-      *Disable = cxstring::createRef("-ferror-limit=0");
-    return cxstring::createRef("-ferror-limit=");
-  }
-
-  return cxstring::createEmpty();
-}
-
-unsigned CXStoredDiagnostic::getCategory() const {
-  return DiagnosticIDs::getCategoryNumberForDiag(Diag.getID());
-}
-
-CXString CXStoredDiagnostic::getCategoryText() const {
-  unsigned catID = DiagnosticIDs::getCategoryNumberForDiag(Diag.getID());
-  return cxstring::createRef(DiagnosticIDs::getCategoryNameFromID(catID));
-}
-
-unsigned CXStoredDiagnostic::getNumRanges() const {
-  if (Diag.getLocation().isInvalid())
-    return 0;
-  
-  return Diag.range_size();
-}
-
-CXSourceRange CXStoredDiagnostic::getRange(unsigned int Range) const {
-  assert(Diag.getLocation().isValid());
-  return translateSourceRange(Diag.getLocation().getManager(),
-                              LangOpts,
-                              Diag.range_begin()[Range]);
-}
-
-unsigned CXStoredDiagnostic::getNumFixIts() const {
-  if (Diag.getLocation().isInvalid())
-    return 0;    
-  return Diag.fixit_size();
-}
-
-CXString CXStoredDiagnostic::getFixIt(unsigned FixIt,
-                                      CXSourceRange *ReplacementRange) const {  
-  const FixItHint &Hint = Diag.fixit_begin()[FixIt];
-  if (ReplacementRange) {
-    // Create a range that covers the entire replacement (or
-    // removal) range, adjusting the end of the range to point to
-    // the end of the token.
-    *ReplacementRange = translateSourceRange(Diag.getLocation().getManager(),
-                                             LangOpts, Hint.RemoveRange);
-  }
-  return cxstring::createDup(Hint.CodeToInsert);
-}
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXString.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXString.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXString.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,175 +0,0 @@
-//===- CXString.cpp - Routines for manipulating CXStrings -----------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXStrings. It should be the
-// only file that has internal knowledge of the encoding of the data in
-// CXStrings.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CXString.h"
-#include "CXTranslationUnit.h"
-#include "clang-c/Index.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/Support/ErrorHandling.h"
-
-using namespace clang;
-
-/// Describes the kind of underlying data in CXString.
-enum CXStringFlag {
-  /// CXString contains a 'const char *' that it doesn't own.
-  CXS_Unmanaged,
-
-  /// CXString contains a 'const char *' that it allocated with malloc().
-  CXS_Malloc,
-
-  /// CXString contains a CXStringBuf that needs to be returned to the
-  /// CXStringPool.
-  CXS_StringBuf
-};
-
-namespace clang {
-namespace cxstring {
-
-//===----------------------------------------------------------------------===//
-// Basic generation of CXStrings.
-//===----------------------------------------------------------------------===//
-
-CXString createEmpty() {
-  CXString Str;
-  Str.data = "";
-  Str.private_flags = CXS_Unmanaged;
-  return Str;
-}
-
-CXString createNull() {
-  CXString Str;
-  Str.data = 0;
-  Str.private_flags = CXS_Unmanaged;
-  return Str;
-}
-
-CXString createRef(const char *String) {
-  if (String && String[0] == '\0')
-    return createEmpty();
-
-  CXString Str;
-  Str.data = String;
-  Str.private_flags = CXS_Unmanaged;
-  return Str;
-}
-
-CXString createDup(const char *String) {
-  if (!String)
-    return createNull();
-
-  if (String[0] == '\0')
-    return createEmpty();
-
-  CXString Str;
-  Str.data = strdup(String);
-  Str.private_flags = CXS_Malloc;
-  return Str;
-}
-
-CXString createRef(StringRef String) {
-  // If the string is not nul-terminated, we have to make a copy.
-  // This is doing a one past end read, and should be removed!
-  if (!String.empty() && String.data()[String.size()] != 0)
-    return createDup(String);
-
-  CXString Result;
-  Result.data = String.data();
-  Result.private_flags = (unsigned) CXS_Unmanaged;
-  return Result;
-}
-
-CXString createDup(StringRef String) {
-  CXString Result;
-  char *Spelling = static_cast<char *>(malloc(String.size() + 1));
-  memmove(Spelling, String.data(), String.size());
-  Spelling[String.size()] = 0;
-  Result.data = Spelling;
-  Result.private_flags = (unsigned) CXS_Malloc;
-  return Result;
-}
-
-CXString createCXString(CXStringBuf *buf) {
-  CXString Str;
-  Str.data = buf;
-  Str.private_flags = (unsigned) CXS_StringBuf;
-  return Str;
-}
-
-
-//===----------------------------------------------------------------------===//
-// String pools.
-//===----------------------------------------------------------------------===//
-
-CXStringPool::~CXStringPool() {
-  for (std::vector<CXStringBuf *>::iterator I = Pool.begin(), E = Pool.end();
-       I != E; ++I) {
-    delete *I;
-  }
-}
-
-CXStringBuf *CXStringPool::getCXStringBuf(CXTranslationUnit TU) {
-  if (Pool.empty())
-    return new CXStringBuf(TU);
-
-  CXStringBuf *Buf = Pool.back();
-  Buf->Data.clear();
-  Pool.pop_back();
-  return Buf;
-}
-
-CXStringBuf *getCXStringBuf(CXTranslationUnit TU) {
-  return TU->StringPool->getCXStringBuf(TU);
-}
-
-void CXStringBuf::dispose() {
-  TU->StringPool->Pool.push_back(this);
-}
-
-bool isManagedByPool(CXString str) {
-  return ((CXStringFlag) str.private_flags) == CXS_StringBuf;
-}
-
-} // end namespace cxstring
-} // end namespace clang
-
-//===----------------------------------------------------------------------===//
-// libClang public APIs.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-const char *clang_getCString(CXString string) {
-  if (string.private_flags == (unsigned) CXS_StringBuf) {
-    return static_cast<const cxstring::CXStringBuf *>(string.data)->Data.data();
-  }
-  return static_cast<const char *>(string.data);
-}
-
-void clang_disposeString(CXString string) {
-  switch ((CXStringFlag) string.private_flags) {
-    case CXS_Unmanaged:
-      break;
-    case CXS_Malloc:
-      if (string.data)
-        free(const_cast<void *>(string.data));
-      break;
-    case CXS_StringBuf:
-      static_cast<cxstring::CXStringBuf *>(
-          const_cast<void *>(string.data))->dispose();
-      break;
-  }
-}
-} // end: extern "C"
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXString.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXString.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXString.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,103 +0,0 @@
-//===- CXString.h - Routines for manipulating CXStrings -------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXStrings.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_CXSTRING_H
-#define LLVM_CLANG_CXSTRING_H
-
-#include "clang-c/Index.h"
-#include "clang/Basic/LLVM.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/Compiler.h"
-#include <vector>
-#include <string>
-
-namespace clang {
-namespace cxstring {
-
-struct CXStringBuf;
-
-/// \brief Create a CXString object for an empty "" string.
-CXString createEmpty();
-
-/// \brief Create a CXString object for an NULL string.
-///
-/// A NULL string should be used as an "invalid" value in case of errors.
-CXString createNull();
-
-/// \brief Create a CXString object from a nul-terminated C string.  New
-/// CXString may contain a pointer to \p String.
-///
-/// \p String should not be changed by the caller afterwards.
-CXString createRef(const char *String);
-
-/// \brief Create a CXString object from a nul-terminated C string.  New
-/// CXString will contain a copy of \p String.
-///
-/// \p String can be changed or freed by the caller.
-CXString createDup(const char *String);
-
-/// \brief Create a CXString object from a StringRef.  New CXString may
-/// contain a pointer to the undrelying data of \p String.
-///
-/// \p String should not be changed by the caller afterwards.
-CXString createRef(StringRef String);
-
-/// \brief Create a CXString object from a StringRef.  New CXString will
-/// contain a copy of \p String.
-///
-/// \p String can be changed or freed by the caller.
-CXString createDup(StringRef String);
-
-// Usually std::string is intended to be used as backing storage for CXString.
-// In this case, call \c createRef(String.c_str()).
-//
-// If you need to make a copy, call \c createDup(StringRef(String)).
-CXString createRef(std::string String) LLVM_DELETED_FUNCTION;
-
-/// \brief Create a CXString object that is backed by a string buffer.
-CXString createCXString(CXStringBuf *buf);
-
-/// \brief A string pool used for fast allocation/deallocation of strings.
-class CXStringPool {
-public:
-  ~CXStringPool();
-
-  CXStringBuf *getCXStringBuf(CXTranslationUnit TU);
-
-private:
-  std::vector<CXStringBuf *> Pool;
-
-  friend struct CXStringBuf;
-};
-
-struct CXStringBuf {
-  SmallString<128> Data;
-  CXTranslationUnit TU;
-
-  CXStringBuf(CXTranslationUnit TU) : TU(TU) {}
-
-  /// \brief Return this buffer to the pool.
-  void dispose();
-};
-
-CXStringBuf *getCXStringBuf(CXTranslationUnit TU);
-
-/// \brief Returns true if the CXString data is managed by a pool.
-bool isManagedByPool(CXString str);
-
-}
-}
-
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXTranslationUnit.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXTranslationUnit.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXTranslationUnit.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,66 +0,0 @@
-//===- CXTranslationUnit.h - Routines for manipulating CXTranslationUnits -===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXTranslationUnits.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_CXTRANSLATIONUNIT_H
-#define LLVM_CLANG_CXTRANSLATIONUNIT_H
-
-#include "clang-c/Index.h"
-#include "CXString.h"
-
-namespace clang {
-  class ASTUnit;
-  class CIndexer;
-  class SimpleFormatContext;
-} // namespace clang
-
-struct CXTranslationUnitImpl {
-  clang::CIndexer *CIdx;
-  clang::ASTUnit *TheASTUnit;
-  clang::cxstring::CXStringPool *StringPool;
-  void *Diagnostics;
-  void *OverridenCursorsPool;
-  clang::SimpleFormatContext *FormatContext;
-  unsigned FormatInMemoryUniqueId;
-};
-
-namespace clang {
-namespace cxtu {
-
-CXTranslationUnitImpl *MakeCXTranslationUnit(CIndexer *CIdx, ASTUnit *AU);
-
-static inline ASTUnit *getASTUnit(CXTranslationUnit TU) {
-  if (!TU)
-    return 0;
-  return TU->TheASTUnit;
-}
-
-class CXTUOwner {
-  CXTranslationUnitImpl *TU;
-  
-public:
-  CXTUOwner(CXTranslationUnitImpl *tu) : TU(tu) { }
-  ~CXTUOwner();
-
-  CXTranslationUnitImpl *getTU() const { return TU; }
-
-  CXTranslationUnitImpl *takeTU() {
-    CXTranslationUnitImpl *retTU = TU;
-    TU = 0;
-    return retTU;
-  }
-};
-
-
-}} // end namespace clang::cxtu
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXType.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXType.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXType.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,808 +0,0 @@
-//===- CXTypes.cpp - Implements 'CXTypes' aspect of libclang ------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===--------------------------------------------------------------------===//
-//
-// This file implements the 'CXTypes' API hooks in the Clang-C library.
-//
-//===--------------------------------------------------------------------===//
-
-#include "CIndexer.h"
-#include "CXCursor.h"
-#include "CXString.h"
-#include "CXTranslationUnit.h"
-#include "CXType.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclObjC.h"
-#include "clang/AST/DeclTemplate.h"
-#include "clang/AST/Expr.h"
-#include "clang/AST/Type.h"
-#include "clang/Frontend/ASTUnit.h"
-
-using namespace clang;
-
-static CXTypeKind GetBuiltinTypeKind(const BuiltinType *BT) {
-#define BTCASE(K) case BuiltinType::K: return CXType_##K
-  switch (BT->getKind()) {
-    BTCASE(Void);
-    BTCASE(Bool);
-    BTCASE(Char_U);
-    BTCASE(UChar);
-    BTCASE(Char16);
-    BTCASE(Char32);
-    BTCASE(UShort);
-    BTCASE(UInt);
-    BTCASE(ULong);
-    BTCASE(ULongLong);
-    BTCASE(UInt128);
-    BTCASE(Char_S);
-    BTCASE(SChar);
-    case BuiltinType::WChar_S: return CXType_WChar;
-    case BuiltinType::WChar_U: return CXType_WChar;
-    BTCASE(Short);
-    BTCASE(Int);
-    BTCASE(Long);
-    BTCASE(LongLong);
-    BTCASE(Int128);
-    BTCASE(Float);
-    BTCASE(Double);
-    BTCASE(LongDouble);
-    BTCASE(NullPtr);
-    BTCASE(Overload);
-    BTCASE(Dependent);
-    BTCASE(ObjCId);
-    BTCASE(ObjCClass);
-    BTCASE(ObjCSel);
-  default:
-    return CXType_Unexposed;
-  }
-#undef BTCASE
-}
-
-static CXTypeKind GetTypeKind(QualType T) {
-  const Type *TP = T.getTypePtrOrNull();
-  if (!TP)
-    return CXType_Invalid;
-
-#define TKCASE(K) case Type::K: return CXType_##K
-  switch (TP->getTypeClass()) {
-    case Type::Builtin:
-      return GetBuiltinTypeKind(cast<BuiltinType>(TP));
-    TKCASE(Complex);
-    TKCASE(Pointer);
-    TKCASE(BlockPointer);
-    TKCASE(LValueReference);
-    TKCASE(RValueReference);
-    TKCASE(Record);
-    TKCASE(Enum);
-    TKCASE(Typedef);
-    TKCASE(ObjCInterface);
-    TKCASE(ObjCObjectPointer);
-    TKCASE(FunctionNoProto);
-    TKCASE(FunctionProto);
-    TKCASE(ConstantArray);
-    TKCASE(Vector);
-    default:
-      return CXType_Unexposed;
-  }
-#undef TKCASE
-}
-
-
-CXType cxtype::MakeCXType(QualType T, CXTranslationUnit TU) {
-  CXTypeKind TK = CXType_Invalid;
-
-  if (TU && !T.isNull()) {
-    ASTContext &Ctx = cxtu::getASTUnit(TU)->getASTContext();
-    if (Ctx.getLangOpts().ObjC1) {
-      QualType UnqualT = T.getUnqualifiedType();
-      if (Ctx.isObjCIdType(UnqualT))
-        TK = CXType_ObjCId;
-      else if (Ctx.isObjCClassType(UnqualT))
-        TK = CXType_ObjCClass;
-      else if (Ctx.isObjCSelType(UnqualT))
-        TK = CXType_ObjCSel;
-    }
-  }
-  if (TK == CXType_Invalid)
-    TK = GetTypeKind(T);
-
-  CXType CT = { TK, { TK == CXType_Invalid ? 0 : T.getAsOpaquePtr(), TU }};
-  return CT;
-}
-
-using cxtype::MakeCXType;
-
-static inline QualType GetQualType(CXType CT) {
-  return QualType::getFromOpaquePtr(CT.data[0]);
-}
-
-static inline CXTranslationUnit GetTU(CXType CT) {
-  return static_cast<CXTranslationUnit>(CT.data[1]);
-}
-
-extern "C" {
-
-CXType clang_getCursorType(CXCursor C) {
-  using namespace cxcursor;
-  
-  CXTranslationUnit TU = cxcursor::getCursorTU(C);
-  if (!TU)
-    return MakeCXType(QualType(), TU);
-
-  ASTContext &Context = cxtu::getASTUnit(TU)->getASTContext();
-  if (clang_isExpression(C.kind)) {
-    QualType T = cxcursor::getCursorExpr(C)->getType();
-    return MakeCXType(T, TU);
-  }
-
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-    if (!D)
-      return MakeCXType(QualType(), TU);
-
-    if (const TypeDecl *TD = dyn_cast<TypeDecl>(D))
-      return MakeCXType(Context.getTypeDeclType(TD), TU);
-    if (const ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(D))
-      return MakeCXType(Context.getObjCInterfaceType(ID), TU);
-    if (const DeclaratorDecl *DD = dyn_cast<DeclaratorDecl>(D)) {
-      if (TypeSourceInfo *TSInfo = DD->getTypeSourceInfo())
-        return MakeCXType(TSInfo->getType(), TU);
-      return MakeCXType(DD->getType(), TU);      
-    }
-    if (const ValueDecl *VD = dyn_cast<ValueDecl>(D))
-      return MakeCXType(VD->getType(), TU);
-    if (const ObjCPropertyDecl *PD = dyn_cast<ObjCPropertyDecl>(D))
-      return MakeCXType(PD->getType(), TU);
-    if (const FunctionTemplateDecl *FTD = dyn_cast<FunctionTemplateDecl>(D)) {
-      if (TypeSourceInfo *TSInfo = FTD->getTemplatedDecl()->getTypeSourceInfo())
-        return MakeCXType(TSInfo->getType(), TU);
-      return MakeCXType(FTD->getTemplatedDecl()->getType(), TU);
-    }
-    return MakeCXType(QualType(), TU);
-  }
-  
-  if (clang_isReference(C.kind)) {
-    switch (C.kind) {
-    case CXCursor_ObjCSuperClassRef: {
-      QualType T
-        = Context.getObjCInterfaceType(getCursorObjCSuperClassRef(C).first);
-      return MakeCXType(T, TU);
-    }
-        
-    case CXCursor_ObjCClassRef: {
-      QualType T = Context.getObjCInterfaceType(getCursorObjCClassRef(C).first);
-      return MakeCXType(T, TU);
-    }
-        
-    case CXCursor_TypeRef: {
-      QualType T = Context.getTypeDeclType(getCursorTypeRef(C).first);
-      return MakeCXType(T, TU);
-
-    }
-      
-    case CXCursor_CXXBaseSpecifier:
-      return cxtype::MakeCXType(getCursorCXXBaseSpecifier(C)->getType(), TU);
-
-    case CXCursor_MemberRef:
-      return cxtype::MakeCXType(getCursorMemberRef(C).first->getType(), TU);
-
-    case CXCursor_VariableRef:
-      return cxtype::MakeCXType(getCursorVariableRef(C).first->getType(), TU);
-
-    case CXCursor_ObjCProtocolRef:
-    case CXCursor_TemplateRef:
-    case CXCursor_NamespaceRef:
-    case CXCursor_OverloadedDeclRef:
-    default:
-      break;
-    }
-    
-    return MakeCXType(QualType(), TU);
-  }
-
-  return MakeCXType(QualType(), TU);
-}
-
-CXString clang_getTypeSpelling(CXType CT) {
-  QualType T = GetQualType(CT);
-  if (T.isNull())
-    return cxstring::createEmpty();
-
-  CXTranslationUnit TU = GetTU(CT);
-  SmallString<64> Str;
-  llvm::raw_svector_ostream OS(Str);
-  PrintingPolicy PP(cxtu::getASTUnit(TU)->getASTContext().getLangOpts());
-
-  T.print(OS, PP);
-
-  return cxstring::createDup(OS.str());
-}
-
-CXType clang_getTypedefDeclUnderlyingType(CXCursor C) {
-  using namespace cxcursor;
-  CXTranslationUnit TU = cxcursor::getCursorTU(C);
-
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-
-    if (const TypedefNameDecl *TD = dyn_cast_or_null<TypedefNameDecl>(D)) {
-      QualType T = TD->getUnderlyingType();
-      return MakeCXType(T, TU);
-    }
-
-    return MakeCXType(QualType(), TU);
-  }
-
-  return MakeCXType(QualType(), TU);
-}
-
-CXType clang_getEnumDeclIntegerType(CXCursor C) {
-  using namespace cxcursor;
-  CXTranslationUnit TU = cxcursor::getCursorTU(C);
-
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-
-    if (const EnumDecl *TD = dyn_cast_or_null<EnumDecl>(D)) {
-      QualType T = TD->getIntegerType();
-      return MakeCXType(T, TU);
-    }
-
-    return MakeCXType(QualType(), TU);
-  }
-
-  return MakeCXType(QualType(), TU);
-}
-
-long long clang_getEnumConstantDeclValue(CXCursor C) {
-  using namespace cxcursor;
-
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-
-    if (const EnumConstantDecl *TD = dyn_cast_or_null<EnumConstantDecl>(D)) {
-      return TD->getInitVal().getSExtValue();
-    }
-
-    return LLONG_MIN;
-  }
-
-  return LLONG_MIN;
-}
-
-unsigned long long clang_getEnumConstantDeclUnsignedValue(CXCursor C) {
-  using namespace cxcursor;
-
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-
-    if (const EnumConstantDecl *TD = dyn_cast_or_null<EnumConstantDecl>(D)) {
-      return TD->getInitVal().getZExtValue();
-    }
-
-    return ULLONG_MAX;
-  }
-
-  return ULLONG_MAX;
-}
-
-int clang_getFieldDeclBitWidth(CXCursor C) {
-  using namespace cxcursor;
-
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = getCursorDecl(C);
-
-    if (const FieldDecl *FD = dyn_cast_or_null<FieldDecl>(D)) {
-      if (FD->isBitField())
-        return FD->getBitWidthValue(getCursorContext(C));
-    }
-  }
-
-  return -1;
-}
-
-CXType clang_getCanonicalType(CXType CT) {
-  if (CT.kind == CXType_Invalid)
-    return CT;
-
-  QualType T = GetQualType(CT);
-  CXTranslationUnit TU = GetTU(CT);
-
-  if (T.isNull())
-    return MakeCXType(QualType(), GetTU(CT));
-
-  return MakeCXType(cxtu::getASTUnit(TU)->getASTContext()
-                        .getCanonicalType(T),
-                    TU);
-}
-
-unsigned clang_isConstQualifiedType(CXType CT) {
-  QualType T = GetQualType(CT);
-  return T.isLocalConstQualified();
-}
-
-unsigned clang_isVolatileQualifiedType(CXType CT) {
-  QualType T = GetQualType(CT);
-  return T.isLocalVolatileQualified();
-}
-
-unsigned clang_isRestrictQualifiedType(CXType CT) {
-  QualType T = GetQualType(CT);
-  return T.isLocalRestrictQualified();
-}
-
-CXType clang_getPointeeType(CXType CT) {
-  QualType T = GetQualType(CT);
-  const Type *TP = T.getTypePtrOrNull();
-  
-  if (!TP)
-    return MakeCXType(QualType(), GetTU(CT));
-  
-  switch (TP->getTypeClass()) {
-    case Type::Pointer:
-      T = cast<PointerType>(TP)->getPointeeType();
-      break;
-    case Type::BlockPointer:
-      T = cast<BlockPointerType>(TP)->getPointeeType();
-      break;
-    case Type::LValueReference:
-    case Type::RValueReference:
-      T = cast<ReferenceType>(TP)->getPointeeType();
-      break;
-    case Type::ObjCObjectPointer:
-      T = cast<ObjCObjectPointerType>(TP)->getPointeeType();
-      break;
-    default:
-      T = QualType();
-      break;
-  }
-  return MakeCXType(T, GetTU(CT));
-}
-
-CXCursor clang_getTypeDeclaration(CXType CT) {
-  if (CT.kind == CXType_Invalid)
-    return cxcursor::MakeCXCursorInvalid(CXCursor_NoDeclFound);
-
-  QualType T = GetQualType(CT);
-  const Type *TP = T.getTypePtrOrNull();
-
-  if (!TP)
-    return cxcursor::MakeCXCursorInvalid(CXCursor_NoDeclFound);
-
-  Decl *D = 0;
-
-try_again:
-  switch (TP->getTypeClass()) {
-  case Type::Typedef:
-    D = cast<TypedefType>(TP)->getDecl();
-    break;
-  case Type::ObjCObject:
-    D = cast<ObjCObjectType>(TP)->getInterface();
-    break;
-  case Type::ObjCInterface:
-    D = cast<ObjCInterfaceType>(TP)->getDecl();
-    break;
-  case Type::Record:
-  case Type::Enum:
-    D = cast<TagType>(TP)->getDecl();
-    break;
-  case Type::TemplateSpecialization:
-    if (const RecordType *Record = TP->getAs<RecordType>())
-      D = Record->getDecl();
-    else
-      D = cast<TemplateSpecializationType>(TP)->getTemplateName()
-                                                         .getAsTemplateDecl();
-    break;
-      
-  case Type::InjectedClassName:
-    D = cast<InjectedClassNameType>(TP)->getDecl();
-    break;
-
-  // FIXME: Template type parameters!      
-
-  case Type::Elaborated:
-    TP = cast<ElaboratedType>(TP)->getNamedType().getTypePtrOrNull();
-    goto try_again;
-    
-  default:
-    break;
-  }
-
-  if (!D)
-    return cxcursor::MakeCXCursorInvalid(CXCursor_NoDeclFound);
-
-  return cxcursor::MakeCXCursor(D, GetTU(CT));
-}
-
-CXString clang_getTypeKindSpelling(enum CXTypeKind K) {
-  const char *s = 0;
-#define TKIND(X) case CXType_##X: s = ""  #X  ""; break
-  switch (K) {
-    TKIND(Invalid);
-    TKIND(Unexposed);
-    TKIND(Void);
-    TKIND(Bool);
-    TKIND(Char_U);
-    TKIND(UChar);
-    TKIND(Char16);
-    TKIND(Char32);  
-    TKIND(UShort);
-    TKIND(UInt);
-    TKIND(ULong);
-    TKIND(ULongLong);
-    TKIND(UInt128);
-    TKIND(Char_S);
-    TKIND(SChar);
-    case CXType_WChar: s = "WChar"; break;
-    TKIND(Short);
-    TKIND(Int);
-    TKIND(Long);
-    TKIND(LongLong);
-    TKIND(Int128);
-    TKIND(Float);
-    TKIND(Double);
-    TKIND(LongDouble);
-    TKIND(NullPtr);
-    TKIND(Overload);
-    TKIND(Dependent);
-    TKIND(ObjCId);
-    TKIND(ObjCClass);
-    TKIND(ObjCSel);
-    TKIND(Complex);
-    TKIND(Pointer);
-    TKIND(BlockPointer);
-    TKIND(LValueReference);
-    TKIND(RValueReference);
-    TKIND(Record);
-    TKIND(Enum);
-    TKIND(Typedef);
-    TKIND(ObjCInterface);
-    TKIND(ObjCObjectPointer);
-    TKIND(FunctionNoProto);
-    TKIND(FunctionProto);
-    TKIND(ConstantArray);
-    TKIND(Vector);
-  }
-#undef TKIND
-  return cxstring::createRef(s);
-}
-
-unsigned clang_equalTypes(CXType A, CXType B) {
-  return A.data[0] == B.data[0] && A.data[1] == B.data[1];;
-}
-
-unsigned clang_isFunctionTypeVariadic(CXType X) {
-  QualType T = GetQualType(X);
-  if (T.isNull())
-    return 0;
-
-  if (const FunctionProtoType *FD = T->getAs<FunctionProtoType>())
-    return (unsigned)FD->isVariadic();
-
-  if (T->getAs<FunctionNoProtoType>())
-    return 1;
-  
-  return 0;
-}
-
-CXCallingConv clang_getFunctionTypeCallingConv(CXType X) {
-  QualType T = GetQualType(X);
-  if (T.isNull())
-    return CXCallingConv_Invalid;
-  
-  if (const FunctionType *FD = T->getAs<FunctionType>()) {
-#define TCALLINGCONV(X) case CC_##X: return CXCallingConv_##X
-    switch (FD->getCallConv()) {
-      TCALLINGCONV(Default);
-      TCALLINGCONV(C);
-      TCALLINGCONV(X86StdCall);
-      TCALLINGCONV(X86FastCall);
-      TCALLINGCONV(X86ThisCall);
-      TCALLINGCONV(X86Pascal);
-      TCALLINGCONV(AAPCS);
-      TCALLINGCONV(AAPCS_VFP);
-      TCALLINGCONV(PnaclCall);
-      TCALLINGCONV(IntelOclBicc);
-    }
-#undef TCALLINGCONV
-  }
-  
-  return CXCallingConv_Invalid;
-}
-
-int clang_getNumArgTypes(CXType X) {
-  QualType T = GetQualType(X);
-  if (T.isNull())
-    return -1;
-  
-  if (const FunctionProtoType *FD = T->getAs<FunctionProtoType>()) {
-    return FD->getNumArgs();
-  }
-  
-  if (T->getAs<FunctionNoProtoType>()) {
-    return 0;
-  }
-  
-  return -1;
-}
-
-CXType clang_getArgType(CXType X, unsigned i) {
-  QualType T = GetQualType(X);
-  if (T.isNull())
-    return MakeCXType(QualType(), GetTU(X));
-
-  if (const FunctionProtoType *FD = T->getAs<FunctionProtoType>()) {
-    unsigned numArgs = FD->getNumArgs();
-    if (i >= numArgs)
-      return MakeCXType(QualType(), GetTU(X));
-    
-    return MakeCXType(FD->getArgType(i), GetTU(X));
-  }
-  
-  return MakeCXType(QualType(), GetTU(X));
-}
-
-CXType clang_getResultType(CXType X) {
-  QualType T = GetQualType(X);
-  if (T.isNull())
-    return MakeCXType(QualType(), GetTU(X));
-  
-  if (const FunctionType *FD = T->getAs<FunctionType>())
-    return MakeCXType(FD->getResultType(), GetTU(X));
-  
-  return MakeCXType(QualType(), GetTU(X));
-}
-
-CXType clang_getCursorResultType(CXCursor C) {
-  if (clang_isDeclaration(C.kind)) {
-    const Decl *D = cxcursor::getCursorDecl(C);
-    if (const ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(D))
-      return MakeCXType(MD->getResultType(), cxcursor::getCursorTU(C));
-
-    return clang_getResultType(clang_getCursorType(C));
-  }
-
-  return MakeCXType(QualType(), cxcursor::getCursorTU(C));
-}
-
-unsigned clang_isPODType(CXType X) {
-  QualType T = GetQualType(X);
-  if (T.isNull())
-    return 0;
-  
-  CXTranslationUnit TU = GetTU(X);
-
-  return T.isPODType(cxtu::getASTUnit(TU)->getASTContext()) ? 1 : 0;
-}
-
-CXType clang_getElementType(CXType CT) {
-  QualType ET = QualType();
-  QualType T = GetQualType(CT);
-  const Type *TP = T.getTypePtrOrNull();
-
-  if (TP) {
-    switch (TP->getTypeClass()) {
-    case Type::ConstantArray:
-      ET = cast<ConstantArrayType> (TP)->getElementType();
-      break;
-    case Type::Vector:
-      ET = cast<VectorType> (TP)->getElementType();
-      break;
-    case Type::Complex:
-      ET = cast<ComplexType> (TP)->getElementType();
-      break;
-    default:
-      break;
-    }
-  }
-  return MakeCXType(ET, GetTU(CT));
-}
-
-long long clang_getNumElements(CXType CT) {
-  long long result = -1;
-  QualType T = GetQualType(CT);
-  const Type *TP = T.getTypePtrOrNull();
-
-  if (TP) {
-    switch (TP->getTypeClass()) {
-    case Type::ConstantArray:
-      result = cast<ConstantArrayType> (TP)->getSize().getSExtValue();
-      break;
-    case Type::Vector:
-      result = cast<VectorType> (TP)->getNumElements();
-      break;
-    default:
-      break;
-    }
-  }
-  return result;
-}
-
-CXType clang_getArrayElementType(CXType CT) {
-  QualType ET = QualType();
-  QualType T = GetQualType(CT);
-  const Type *TP = T.getTypePtrOrNull();
-
-  if (TP) {
-    switch (TP->getTypeClass()) {
-    case Type::ConstantArray:
-      ET = cast<ConstantArrayType> (TP)->getElementType();
-      break;
-    default:
-      break;
-    }
-  }
-  return MakeCXType(ET, GetTU(CT));
-}
-
-long long clang_getArraySize(CXType CT) {
-  long long result = -1;
-  QualType T = GetQualType(CT);
-  const Type *TP = T.getTypePtrOrNull();
-
-  if (TP) {
-    switch (TP->getTypeClass()) {
-    case Type::ConstantArray:
-      result = cast<ConstantArrayType> (TP)->getSize().getSExtValue();
-      break;
-    default:
-      break;
-    }
-  }
-  return result;
-}
-
-long long clang_Type_getAlignOf(CXType T) {
-  if (T.kind == CXType_Invalid)
-    return CXTypeLayoutError_Invalid;
-  ASTContext &Ctx = cxtu::getASTUnit(GetTU(T))->getASTContext();
-  QualType QT = GetQualType(T);
-  // [expr.alignof] p1: return size_t value for complete object type, reference
-  //                    or array.
-  // [expr.alignof] p3: if reference type, return size of referenced type
-  if (QT->isReferenceType())
-    QT = QT.getNonReferenceType();
-  if (QT->isIncompleteType())
-    return CXTypeLayoutError_Incomplete;
-  if (QT->isDependentType())
-    return CXTypeLayoutError_Dependent;
-  // Exceptions by GCC extension - see ASTContext.cpp:1313 getTypeInfoImpl
-  // if (QT->isFunctionType()) return 4; // Bug #15511 - should be 1
-  // if (QT->isVoidType()) return 1;
-  return Ctx.getTypeAlignInChars(QT).getQuantity();
-}
-
-long long clang_Type_getSizeOf(CXType T) {
-  if (T.kind == CXType_Invalid)
-    return CXTypeLayoutError_Invalid;
-  ASTContext &Ctx = cxtu::getASTUnit(GetTU(T))->getASTContext();
-  QualType QT = GetQualType(T);
-  // [expr.sizeof] p2: if reference type, return size of referenced type
-  if (QT->isReferenceType())
-    QT = QT.getNonReferenceType();
-  // [expr.sizeof] p1: return -1 on: func, incomplete, bitfield, incomplete
-  //                   enumeration
-  // Note: We get the cxtype, not the cxcursor, so we can't call
-  //       FieldDecl->isBitField()
-  // [expr.sizeof] p3: pointer ok, function not ok.
-  // [gcc extension] lib/AST/ExprConstant.cpp:1372 HandleSizeof : vla == error
-  if (QT->isIncompleteType())
-    return CXTypeLayoutError_Incomplete;
-  if (QT->isDependentType())
-    return CXTypeLayoutError_Dependent;
-  if (!QT->isConstantSizeType())
-    return CXTypeLayoutError_NotConstantSize;
-  // [gcc extension] lib/AST/ExprConstant.cpp:1372
-  //                 HandleSizeof : {voidtype,functype} == 1
-  // not handled by ASTContext.cpp:1313 getTypeInfoImpl
-  if (QT->isVoidType() || QT->isFunctionType())
-    return 1;
-  return Ctx.getTypeSizeInChars(QT).getQuantity();
-}
-
-static long long visitRecordForValidation(const RecordDecl *RD) {
-  for (RecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end();
-       I != E; ++I){
-    QualType FQT = (*I)->getType();
-    if (FQT->isIncompleteType())
-      return CXTypeLayoutError_Incomplete;
-    if (FQT->isDependentType())
-      return CXTypeLayoutError_Dependent;
-    // recurse
-    if (const RecordType *ChildType = (*I)->getType()->getAs<RecordType>()) {
-      if (const RecordDecl *Child = ChildType->getDecl()) {
-        long long ret = visitRecordForValidation(Child);
-        if (ret < 0)
-          return ret;
-      }
-    }
-    // else try next field
-  }
-  return 0;
-}
-
-long long clang_Type_getOffsetOf(CXType PT, const char *S) {
-  // check that PT is not incomplete/dependent
-  CXCursor PC = clang_getTypeDeclaration(PT);
-  if (clang_isInvalid(PC.kind))
-    return CXTypeLayoutError_Invalid;
-  const RecordDecl *RD =
-        dyn_cast_or_null<RecordDecl>(cxcursor::getCursorDecl(PC));
-  if (!RD)
-    return CXTypeLayoutError_Invalid;
-  RD = RD->getDefinition();
-  if (!RD)
-    return CXTypeLayoutError_Incomplete;
-  QualType RT = GetQualType(PT);
-  if (RT->isIncompleteType())
-    return CXTypeLayoutError_Incomplete;
-  if (RT->isDependentType())
-    return CXTypeLayoutError_Dependent;
-  // We recurse into all record fields to detect incomplete and dependent types.
-  long long Error = visitRecordForValidation(RD);
-  if (Error < 0)
-    return Error;
-  if (!S)
-    return CXTypeLayoutError_InvalidFieldName;
-  // lookup field
-  ASTContext &Ctx = cxtu::getASTUnit(GetTU(PT))->getASTContext();
-  IdentifierInfo *II = &Ctx.Idents.get(S);
-  DeclarationName FieldName(II);
-  RecordDecl::lookup_const_result Res = RD->lookup(FieldName);
-  // If a field of the parent record is incomplete, lookup will fail.
-  // and we would return InvalidFieldName instead of Incomplete.
-  // But this erroneous results does protects again a hidden assertion failure
-  // in the RecordLayoutBuilder
-  if (Res.size() != 1)
-    return CXTypeLayoutError_InvalidFieldName;
-  if (const FieldDecl *FD = dyn_cast<FieldDecl>(Res.front()))
-    return Ctx.getFieldOffset(FD);
-  if (const IndirectFieldDecl *IFD = dyn_cast<IndirectFieldDecl>(Res.front()))
-    return Ctx.getFieldOffset(IFD);
-  // we don't want any other Decl Type.
-  return CXTypeLayoutError_InvalidFieldName;
-}
-
-unsigned clang_Cursor_isBitField(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return 0;
-  const FieldDecl *FD = dyn_cast_or_null<FieldDecl>(cxcursor::getCursorDecl(C));
-  if (!FD)
-    return 0;
-  return FD->isBitField();
-}
-
-CXString clang_getDeclObjCTypeEncoding(CXCursor C) {
-  if (!clang_isDeclaration(C.kind))
-    return cxstring::createEmpty();
-
-  const Decl *D = cxcursor::getCursorDecl(C);
-  ASTContext &Ctx = cxcursor::getCursorContext(C);
-  std::string encoding;
-
-  if (const ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(D))  {
-    if (Ctx.getObjCEncodingForMethodDecl(OMD, encoding))
-      return cxstring::createRef("?");
-  } else if (const ObjCPropertyDecl *OPD = dyn_cast<ObjCPropertyDecl>(D))
-    Ctx.getObjCEncodingForPropertyDecl(OPD, NULL, encoding);
-  else if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
-    Ctx.getObjCEncodingForFunctionDecl(FD, encoding);
-  else {
-    QualType Ty;
-    if (const TypeDecl *TD = dyn_cast<TypeDecl>(D))
-      Ty = Ctx.getTypeDeclType(TD);
-    if (const ValueDecl *VD = dyn_cast<ValueDecl>(D))
-      Ty = VD->getType();
-    else return cxstring::createRef("?");
-    Ctx.getObjCEncodingForType(Ty, encoding);
-  }
-
-  return cxstring::createDup(encoding);
-}
-
-} // end: extern "C"

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CXType.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CXType.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CXType.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,29 +0,0 @@
-//===- CXTypes.h - Routines for manipulating CXTypes ----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXCursors.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_CXTYPES_H
-#define LLVM_CLANG_CXTYPES_H
-
-#include "clang-c/Index.h"
-#include "clang/AST/Type.h"
-
-namespace clang {
-  
-class ASTUnit;
-  
-namespace cxtype {
-  
-CXType MakeCXType(QualType T, CXTranslationUnit TU);
-  
-}} // end namespace clang::cxtype
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/CursorVisitor.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/CursorVisitor.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/CursorVisitor.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,270 +0,0 @@
-//===- CursorVisitor.h - CursorVisitor interface ----------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_LIBCLANG_CURSORVISITOR_H
-#define LLVM_CLANG_LIBCLANG_CURSORVISITOR_H
-
-#include "CXCursor.h"
-#include "CXTranslationUnit.h"
-#include "Index_Internal.h"
-#include "clang/AST/DeclVisitor.h"
-#include "clang/AST/TypeLocVisitor.h"
-
-namespace clang {
-  class PreprocessingRecord;
-  class ASTUnit;
-
-namespace cxcursor {
-
-class VisitorJob {
-public:
-  enum Kind { DeclVisitKind, StmtVisitKind, MemberExprPartsKind,
-              TypeLocVisitKind, OverloadExprPartsKind,
-              DeclRefExprPartsKind, LabelRefVisitKind,
-              ExplicitTemplateArgsVisitKind,
-              NestedNameSpecifierLocVisitKind,
-              DeclarationNameInfoVisitKind,
-              MemberRefVisitKind, SizeOfPackExprPartsKind,
-              LambdaExprPartsKind, PostChildrenVisitKind };
-protected:
-  const void *data[3];
-  CXCursor parent;
-  Kind K;
-  VisitorJob(CXCursor C, Kind k, const void *d1, const void *d2 = 0,
-             const void *d3 = 0)
-    : parent(C), K(k) {
-    data[0] = d1;
-    data[1] = d2;
-    data[2] = d3;
-  }
-public:
-  Kind getKind() const { return K; }
-  const CXCursor &getParent() const { return parent; }
-};
-  
-typedef SmallVector<VisitorJob, 10> VisitorWorkList;
-
-// Cursor visitor.
-class CursorVisitor : public DeclVisitor<CursorVisitor, bool>,
-                      public TypeLocVisitor<CursorVisitor, bool>
-{
-public:
-  /// \brief Callback called after child nodes of a cursor have been visited.
-  /// Return true to break visitation or false to continue.
-  typedef bool (*PostChildrenVisitorTy)(CXCursor cursor,
-                                        CXClientData client_data);
-
-private:
-  /// \brief The translation unit we are traversing.
-  CXTranslationUnit TU;
-  ASTUnit *AU;
-
-  /// \brief The parent cursor whose children we are traversing.
-  CXCursor Parent;
-
-  /// \brief The declaration that serves at the parent of any statement or
-  /// expression nodes.
-  const Decl *StmtParent;
-
-  /// \brief The visitor function.
-  CXCursorVisitor Visitor;
-
-  PostChildrenVisitorTy PostChildrenVisitor;
-
-  /// \brief The opaque client data, to be passed along to the visitor.
-  CXClientData ClientData;
-
-  /// \brief Whether we should visit the preprocessing record entries last, 
-  /// after visiting other declarations.
-  bool VisitPreprocessorLast;
-
-  /// \brief Whether we should visit declarations or preprocessing record
-  /// entries that are #included inside the \arg RegionOfInterest.
-  bool VisitIncludedEntities;
-  
-  /// \brief When valid, a source range to which the cursor should restrict
-  /// its search.
-  SourceRange RegionOfInterest;
-
-  /// \brief Whether we should only visit declarations and not preprocessing
-  /// record entries.
-  bool VisitDeclsOnly;
-
-  // FIXME: Eventually remove.  This part of a hack to support proper
-  // iteration over all Decls contained lexically within an ObjC container.
-  DeclContext::decl_iterator *DI_current;
-  DeclContext::decl_iterator DE_current;
-  SmallVectorImpl<Decl *>::iterator *FileDI_current;
-  SmallVectorImpl<Decl *>::iterator FileDE_current;
-
-  // Cache of pre-allocated worklists for data-recursion walk of Stmts.
-  SmallVector<VisitorWorkList*, 5> WorkListFreeList;
-  SmallVector<VisitorWorkList*, 5> WorkListCache;
-
-  using DeclVisitor<CursorVisitor, bool>::Visit;
-  using TypeLocVisitor<CursorVisitor, bool>::Visit;
-
-  /// \brief Determine whether this particular source range comes before, comes
-  /// after, or overlaps the region of interest.
-  ///
-  /// \param R a half-open source range retrieved from the abstract syntax tree.
-  RangeComparisonResult CompareRegionOfInterest(SourceRange R);
-
-  bool visitDeclsFromFileRegion(FileID File, unsigned Offset, unsigned Length);
-
-  class SetParentRAII {
-    CXCursor &Parent;
-    const Decl *&StmtParent;
-    CXCursor OldParent;
-
-  public:
-    SetParentRAII(CXCursor &Parent, const Decl *&StmtParent,
-                  CXCursor NewParent)
-      : Parent(Parent), StmtParent(StmtParent), OldParent(Parent)
-    {
-      Parent = NewParent;
-      if (clang_isDeclaration(Parent.kind))
-        StmtParent = getCursorDecl(Parent);
-    }
-
-    ~SetParentRAII() {
-      Parent = OldParent;
-      if (clang_isDeclaration(Parent.kind))
-        StmtParent = getCursorDecl(Parent);
-    }
-  };
-
-public:
-  CursorVisitor(CXTranslationUnit TU, CXCursorVisitor Visitor,
-                CXClientData ClientData,
-                bool VisitPreprocessorLast,
-                bool VisitIncludedPreprocessingEntries = false,
-                SourceRange RegionOfInterest = SourceRange(),
-                bool VisitDeclsOnly = false,
-                PostChildrenVisitorTy PostChildrenVisitor = 0)
-    : TU(TU), AU(cxtu::getASTUnit(TU)),
-      Visitor(Visitor), PostChildrenVisitor(PostChildrenVisitor),
-      ClientData(ClientData),
-      VisitPreprocessorLast(VisitPreprocessorLast),
-      VisitIncludedEntities(VisitIncludedPreprocessingEntries),
-      RegionOfInterest(RegionOfInterest),
-      VisitDeclsOnly(VisitDeclsOnly),
-      DI_current(0), FileDI_current(0)
-  {
-    Parent.kind = CXCursor_NoDeclFound;
-    Parent.data[0] = 0;
-    Parent.data[1] = 0;
-    Parent.data[2] = 0;
-    StmtParent = 0;
-  }
-
-  ~CursorVisitor() {
-    // Free the pre-allocated worklists for data-recursion.
-    for (SmallVectorImpl<VisitorWorkList*>::iterator
-          I = WorkListCache.begin(), E = WorkListCache.end(); I != E; ++I) {
-      delete *I;
-    }
-  }
-
-  ASTUnit *getASTUnit() const { return AU; }
-  CXTranslationUnit getTU() const { return TU; }
-
-  bool Visit(CXCursor Cursor, bool CheckedRegionOfInterest = false);
-
-  /// \brief Visit declarations and preprocessed entities for the file region
-  /// designated by \see RegionOfInterest.
-  bool visitFileRegion();
-  
-  bool visitPreprocessedEntitiesInRegion();
-
-  bool shouldVisitIncludedEntities() const {
-    return VisitIncludedEntities;
-  }
-
-  template<typename InputIterator>
-  bool visitPreprocessedEntities(InputIterator First, InputIterator Last,
-                                 PreprocessingRecord &PPRec,
-                                 FileID FID = FileID());
-
-  bool VisitChildren(CXCursor Parent);
-
-  // Declaration visitors
-  bool VisitTypeAliasDecl(TypeAliasDecl *D);
-  bool VisitAttributes(Decl *D);
-  bool VisitBlockDecl(BlockDecl *B);
-  bool VisitCXXRecordDecl(CXXRecordDecl *D);
-  Optional<bool> shouldVisitCursor(CXCursor C);
-  bool VisitDeclContext(DeclContext *DC);
-  bool VisitTranslationUnitDecl(TranslationUnitDecl *D);
-  bool VisitTypedefDecl(TypedefDecl *D);
-  bool VisitTagDecl(TagDecl *D);
-  bool VisitClassTemplateSpecializationDecl(ClassTemplateSpecializationDecl *D);
-  bool VisitClassTemplatePartialSpecializationDecl(
-                                     ClassTemplatePartialSpecializationDecl *D);
-  bool VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D);
-  bool VisitEnumConstantDecl(EnumConstantDecl *D);
-  bool VisitDeclaratorDecl(DeclaratorDecl *DD);
-  bool VisitFunctionDecl(FunctionDecl *ND);
-  bool VisitFieldDecl(FieldDecl *D);
-  bool VisitVarDecl(VarDecl *);
-  bool VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D);
-  bool VisitFunctionTemplateDecl(FunctionTemplateDecl *D);
-  bool VisitClassTemplateDecl(ClassTemplateDecl *D);
-  bool VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D);
-  bool VisitObjCMethodDecl(ObjCMethodDecl *ND);
-  bool VisitObjCContainerDecl(ObjCContainerDecl *D);
-  bool VisitObjCCategoryDecl(ObjCCategoryDecl *ND);
-  bool VisitObjCProtocolDecl(ObjCProtocolDecl *PID);
-  bool VisitObjCPropertyDecl(ObjCPropertyDecl *PD);
-  bool VisitObjCInterfaceDecl(ObjCInterfaceDecl *D);
-  bool VisitObjCImplDecl(ObjCImplDecl *D);
-  bool VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D);
-  bool VisitObjCImplementationDecl(ObjCImplementationDecl *D);
-  // FIXME: ObjCCompatibleAliasDecl requires aliased-class locations.
-  bool VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *PD);
-  bool VisitLinkageSpecDecl(LinkageSpecDecl *D);
-  bool VisitNamespaceDecl(NamespaceDecl *D);
-  bool VisitNamespaceAliasDecl(NamespaceAliasDecl *D);
-  bool VisitUsingDirectiveDecl(UsingDirectiveDecl *D);
-  bool VisitUsingDecl(UsingDecl *D);
-  bool VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D);
-  bool VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D);
-  
-  // Name visitor
-  bool VisitDeclarationNameInfo(DeclarationNameInfo Name);
-  bool VisitNestedNameSpecifier(NestedNameSpecifier *NNS, SourceRange Range);
-  bool VisitNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS);
-  
-  // Template visitors
-  bool VisitTemplateParameters(const TemplateParameterList *Params);
-  bool VisitTemplateName(TemplateName Name, SourceLocation Loc);
-  bool VisitTemplateArgumentLoc(const TemplateArgumentLoc &TAL);
-  
-  // Type visitors
-#define ABSTRACT_TYPELOC(CLASS, PARENT)
-#define TYPELOC(CLASS, PARENT) \
-  bool Visit##CLASS##TypeLoc(CLASS##TypeLoc TyLoc);
-#include "clang/AST/TypeLocNodes.def"
-
-  bool VisitTagTypeLoc(TagTypeLoc TL);
-  bool VisitArrayTypeLoc(ArrayTypeLoc TL);
-  bool VisitFunctionTypeLoc(FunctionTypeLoc TL, bool SkipResultType = false);
-
-  // Data-recursive visitor functions.
-  bool IsInRegionOfInterest(CXCursor C);
-  bool RunVisitorWorkList(VisitorWorkList &WL);
-  void EnqueueWorkList(VisitorWorkList &WL, const Stmt *S);
-  LLVM_ATTRIBUTE_NOINLINE bool Visit(const Stmt *S);
-};
-
-}
-}
-
-#endif
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/IndexBody.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/IndexBody.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/IndexBody.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,174 +0,0 @@
-//===- CIndexHigh.cpp - Higher level API functions ------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "IndexingContext.h"
-#include "RecursiveASTVisitor.h"
-
-using namespace clang;
-using namespace cxindex;
-
-namespace {
-
-class BodyIndexer : public cxindex::RecursiveASTVisitor<BodyIndexer> {
-  IndexingContext &IndexCtx;
-  const NamedDecl *Parent;
-  const DeclContext *ParentDC;
-
-  typedef RecursiveASTVisitor<BodyIndexer> base;
-public:
-  BodyIndexer(IndexingContext &indexCtx,
-              const NamedDecl *Parent, const DeclContext *DC)
-    : IndexCtx(indexCtx), Parent(Parent), ParentDC(DC) { }
-  
-  bool shouldWalkTypesOfTypeLocs() const { return false; }
-
-  bool TraverseTypeLoc(TypeLoc TL) {
-    IndexCtx.indexTypeLoc(TL, Parent, ParentDC);
-    return true;
-  }
-
-  bool TraverseNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS) {
-    IndexCtx.indexNestedNameSpecifierLoc(NNS, Parent, ParentDC);
-    return true;
-  }
-
-  bool VisitDeclRefExpr(DeclRefExpr *E) {
-    IndexCtx.handleReference(E->getDecl(), E->getLocation(),
-                             Parent, ParentDC, E);
-    return true;
-  }
-
-  bool VisitMemberExpr(MemberExpr *E) {
-    IndexCtx.handleReference(E->getMemberDecl(), E->getMemberLoc(),
-                             Parent, ParentDC, E);
-    return true;
-  }
-
-  bool VisitDesignatedInitExpr(DesignatedInitExpr *E) {
-    for (DesignatedInitExpr::reverse_designators_iterator
-           D = E->designators_rbegin(), DEnd = E->designators_rend();
-           D != DEnd; ++D) {
-      if (D->isFieldDesignator())
-        IndexCtx.handleReference(D->getField(), D->getFieldLoc(),
-                                 Parent, ParentDC, E);
-    }
-    return true;
-  }
-
-  bool VisitObjCIvarRefExpr(ObjCIvarRefExpr *E) {
-    IndexCtx.handleReference(E->getDecl(), E->getLocation(),
-                             Parent, ParentDC, E);
-    return true;
-  }
-
-  bool VisitObjCMessageExpr(ObjCMessageExpr *E) {
-    if (ObjCMethodDecl *MD = E->getMethodDecl())
-      IndexCtx.handleReference(MD, E->getSelectorStartLoc(),
-                               Parent, ParentDC, E,
-                               E->isImplicit() ? CXIdxEntityRef_Implicit
-                                               : CXIdxEntityRef_Direct);
-    return true;
-  }
-
-  bool VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) {
-    if (E->isExplicitProperty())
-      IndexCtx.handleReference(E->getExplicitProperty(), E->getLocation(),
-                               Parent, ParentDC, E);
-
-    // No need to do a handleReference for the objc method, because there will
-    // be a message expr as part of PseudoObjectExpr.
-    return true;
-  }
-
-  bool VisitMSPropertyRefExpr(MSPropertyRefExpr *E) {
-    IndexCtx.handleReference(E->getPropertyDecl(), E->getMemberLoc(), Parent,
-                             ParentDC, E, CXIdxEntityRef_Direct);
-    return true;
-  }
-
-  bool VisitObjCProtocolExpr(ObjCProtocolExpr *E) {
-    IndexCtx.handleReference(E->getProtocol(), E->getProtocolIdLoc(),
-                             Parent, ParentDC, E, CXIdxEntityRef_Direct);
-    return true;
-  }
-
-  bool VisitObjCBoxedExpr(ObjCBoxedExpr *E) {
-    if (ObjCMethodDecl *MD = E->getBoxingMethod())
-      IndexCtx.handleReference(MD, E->getLocStart(),
-                               Parent, ParentDC, E, CXIdxEntityRef_Implicit);
-    return true;
-  }
-  
-  bool VisitObjCDictionaryLiteral(ObjCDictionaryLiteral *E) {
-    if (ObjCMethodDecl *MD = E->getDictWithObjectsMethod())
-      IndexCtx.handleReference(MD, E->getLocStart(),
-                               Parent, ParentDC, E, CXIdxEntityRef_Implicit);
-    return true;
-  }
-
-  bool VisitObjCArrayLiteral(ObjCArrayLiteral *E) {
-    if (ObjCMethodDecl *MD = E->getArrayWithObjectsMethod())
-      IndexCtx.handleReference(MD, E->getLocStart(),
-                               Parent, ParentDC, E, CXIdxEntityRef_Implicit);
-    return true;
-  }
-
-  bool VisitCXXConstructExpr(CXXConstructExpr *E) {
-    IndexCtx.handleReference(E->getConstructor(), E->getLocation(),
-                             Parent, ParentDC, E);
-    return true;
-  }
-
-  bool TraverseCXXOperatorCallExpr(CXXOperatorCallExpr *E) {
-    if (E->getOperatorLoc().isInvalid())
-      return true; // implicit.
-    return base::TraverseCXXOperatorCallExpr(E);
-  }
-
-  bool VisitDeclStmt(DeclStmt *S) {
-    if (IndexCtx.shouldIndexFunctionLocalSymbols()) {
-      IndexCtx.indexDeclGroupRef(S->getDeclGroup());
-      return true;
-    }
-
-    DeclGroupRef DG = S->getDeclGroup();
-    for (DeclGroupRef::iterator I = DG.begin(), E = DG.end(); I != E; ++I) {
-      const Decl *D = *I;
-      if (!D)
-        continue;
-      if (!IndexCtx.isFunctionLocalDecl(D))
-        IndexCtx.indexTopLevelDecl(D);
-    }
-
-    return true;
-  }
-
-  bool TraverseLambdaCapture(LambdaExpr::Capture C) {
-    if (C.capturesThis())
-      return true;
-
-    if (IndexCtx.shouldIndexFunctionLocalSymbols())
-      IndexCtx.handleReference(C.getCapturedVar(), C.getLocation(),
-                               Parent, ParentDC);
-    return true;
-  }
-
-};
-
-} // anonymous namespace
-
-void IndexingContext::indexBody(const Stmt *S, const NamedDecl *Parent,
-                                const DeclContext *DC) {
-  if (!S)
-    return;
-
-  if (DC == 0)
-    DC = Parent->getLexicalDeclContext();
-  BodyIndexer(*this, Parent, DC).TraverseStmt(const_cast<Stmt*>(S));
-}

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/IndexDecl.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/IndexDecl.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/IndexDecl.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,360 +0,0 @@
-//===- CIndexHigh.cpp - Higher level API functions ------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "IndexingContext.h"
-#include "clang/AST/DeclVisitor.h"
-
-using namespace clang;
-using namespace cxindex;
-
-namespace {
-
-class IndexingDeclVisitor : public ConstDeclVisitor<IndexingDeclVisitor, bool> {
-  IndexingContext &IndexCtx;
-
-public:
-  explicit IndexingDeclVisitor(IndexingContext &indexCtx)
-    : IndexCtx(indexCtx) { }
-
-  void handleDeclarator(const DeclaratorDecl *D, const NamedDecl *Parent = 0) {
-    if (!Parent) Parent = D;
-
-    if (!IndexCtx.shouldIndexFunctionLocalSymbols()) {
-      IndexCtx.indexTypeSourceInfo(D->getTypeSourceInfo(), Parent);
-      IndexCtx.indexNestedNameSpecifierLoc(D->getQualifierLoc(), Parent);
-    } else {
-      if (const ParmVarDecl *Parm = dyn_cast<ParmVarDecl>(D)) {
-        IndexCtx.handleVar(Parm);
-      } else if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
-        for (FunctionDecl::param_const_iterator PI = FD->param_begin(),
-                                                PE = FD->param_end();
-             PI != PE; ++PI) {
-          IndexCtx.handleVar(*PI);
-        }
-      }
-    }
-  }
-
-  void handleObjCMethod(const ObjCMethodDecl *D) {
-    IndexCtx.handleObjCMethod(D);
-    if (D->isImplicit())
-      return;
-
-    IndexCtx.indexTypeSourceInfo(D->getResultTypeSourceInfo(), D);
-    for (ObjCMethodDecl::param_const_iterator I = D->param_begin(),
-                                              E = D->param_end();
-         I != E; ++I)
-      handleDeclarator(*I, D);
-
-    if (D->isThisDeclarationADefinition()) {
-      const Stmt *Body = D->getBody();
-      if (Body) {
-        IndexCtx.indexBody(Body, D, D);
-      }
-    }
-  }
-
-  bool VisitFunctionDecl(const FunctionDecl *D) {
-    IndexCtx.handleFunction(D);
-    handleDeclarator(D);
-
-    if (const CXXConstructorDecl *Ctor = dyn_cast<CXXConstructorDecl>(D)) {
-      // Constructor initializers.
-      for (CXXConstructorDecl::init_const_iterator I = Ctor->init_begin(),
-                                                   E = Ctor->init_end();
-           I != E; ++I) {
-        CXXCtorInitializer *Init = *I;
-        if (Init->isWritten()) {
-          IndexCtx.indexTypeSourceInfo(Init->getTypeSourceInfo(), D);
-          if (const FieldDecl *Member = Init->getAnyMember())
-            IndexCtx.handleReference(Member, Init->getMemberLocation(), D, D);
-          IndexCtx.indexBody(Init->getInit(), D, D);
-        }
-      }
-    }
-
-    if (D->isThisDeclarationADefinition()) {
-      const Stmt *Body = D->getBody();
-      if (Body) {
-        IndexCtx.indexBody(Body, D, D);
-      }
-    }
-    return true;
-  }
-
-  bool VisitVarDecl(const VarDecl *D) {
-    IndexCtx.handleVar(D);
-    handleDeclarator(D);
-    IndexCtx.indexBody(D->getInit(), D);
-    return true;
-  }
-
-  bool VisitFieldDecl(const FieldDecl *D) {
-    IndexCtx.handleField(D);
-    handleDeclarator(D);
-    if (D->isBitField())
-      IndexCtx.indexBody(D->getBitWidth(), D);
-    else if (D->hasInClassInitializer())
-      IndexCtx.indexBody(D->getInClassInitializer(), D);
-    return true;
-  }
-
-  bool VisitMSPropertyDecl(const MSPropertyDecl *D) {
-    handleDeclarator(D);
-    return true;
-  }
-
-  bool VisitEnumConstantDecl(const EnumConstantDecl *D) {
-    IndexCtx.handleEnumerator(D);
-    IndexCtx.indexBody(D->getInitExpr(), D);
-    return true;
-  }
-
-  bool VisitTypedefNameDecl(const TypedefNameDecl *D) {
-    IndexCtx.handleTypedefName(D);
-    IndexCtx.indexTypeSourceInfo(D->getTypeSourceInfo(), D);
-    return true;
-  }
-
-  bool VisitTagDecl(const TagDecl *D) {
-    // Non-free standing tags are handled in indexTypeSourceInfo.
-    if (D->isFreeStanding())
-      IndexCtx.indexTagDecl(D);
-    return true;
-  }
-
-  bool VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D) {
-    IndexCtx.handleObjCInterface(D);
-
-    if (D->isThisDeclarationADefinition()) {
-      IndexCtx.indexTUDeclsInObjCContainer();
-      IndexCtx.indexDeclContext(D);
-    }
-    return true;
-  }
-
-  bool VisitObjCProtocolDecl(const ObjCProtocolDecl *D) {
-    IndexCtx.handleObjCProtocol(D);
-
-    if (D->isThisDeclarationADefinition()) {
-      IndexCtx.indexTUDeclsInObjCContainer();
-      IndexCtx.indexDeclContext(D);
-    }
-    return true;
-  }
-
-  bool VisitObjCImplementationDecl(const ObjCImplementationDecl *D) {
-    const ObjCInterfaceDecl *Class = D->getClassInterface();
-    if (!Class)
-      return true;
-
-    if (Class->isImplicitInterfaceDecl())
-      IndexCtx.handleObjCInterface(Class);
-
-    IndexCtx.handleObjCImplementation(D);
-
-    IndexCtx.indexTUDeclsInObjCContainer();
-
-    // Index the ivars first to make sure the synthesized ivars are indexed
-    // before indexing the methods that can reference them.
-    for (ObjCImplementationDecl::ivar_iterator
-           IvarI = D->ivar_begin(),
-           IvarE = D->ivar_end(); IvarI != IvarE; ++IvarI) {
-      IndexCtx.indexDecl(*IvarI);
-    }
-    for (DeclContext::decl_iterator
-           I = D->decls_begin(), E = D->decls_end(); I != E; ++I) {
-      if (!isa<ObjCIvarDecl>(*I))
-        IndexCtx.indexDecl(*I);
-    }
-
-    return true;
-  }
-
-  bool VisitObjCCategoryDecl(const ObjCCategoryDecl *D) {
-    IndexCtx.handleObjCCategory(D);
-
-    IndexCtx.indexTUDeclsInObjCContainer();
-    IndexCtx.indexDeclContext(D);
-    return true;
-  }
-
-  bool VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D) {
-    const ObjCCategoryDecl *Cat = D->getCategoryDecl();
-    if (!Cat)
-      return true;
-
-    IndexCtx.handleObjCCategoryImpl(D);
-
-    IndexCtx.indexTUDeclsInObjCContainer();
-    IndexCtx.indexDeclContext(D);
-    return true;
-  }
-
-  bool VisitObjCMethodDecl(const ObjCMethodDecl *D) {
-    // Methods associated with a property, even user-declared ones, are
-    // handled when we handle the property.
-    if (D->isPropertyAccessor())
-      return true;
-
-    handleObjCMethod(D);
-    return true;
-  }
-
-  bool VisitObjCPropertyDecl(const ObjCPropertyDecl *D) {
-    if (ObjCMethodDecl *MD = D->getGetterMethodDecl())
-      if (MD->getLexicalDeclContext() == D->getLexicalDeclContext())
-        handleObjCMethod(MD);
-    if (ObjCMethodDecl *MD = D->getSetterMethodDecl())
-      if (MD->getLexicalDeclContext() == D->getLexicalDeclContext())
-        handleObjCMethod(MD);
-    IndexCtx.handleObjCProperty(D);
-    IndexCtx.indexTypeSourceInfo(D->getTypeSourceInfo(), D);
-    return true;
-  }
-
-  bool VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D) {
-    ObjCPropertyDecl *PD = D->getPropertyDecl();
-    IndexCtx.handleSynthesizedObjCProperty(D);
-
-    if (D->getPropertyImplementation() == ObjCPropertyImplDecl::Dynamic)
-      return true;
-    assert(D->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize);
-    
-    if (ObjCIvarDecl *IvarD = D->getPropertyIvarDecl()) {
-      if (!IvarD->getSynthesize())
-        IndexCtx.handleReference(IvarD, D->getPropertyIvarDeclLoc(), 0,
-                                 D->getDeclContext());
-    }
-
-    if (ObjCMethodDecl *MD = PD->getGetterMethodDecl()) {
-      if (MD->isPropertyAccessor())
-        IndexCtx.handleSynthesizedObjCMethod(MD, D->getLocation(),
-                                             D->getLexicalDeclContext());
-    }
-    if (ObjCMethodDecl *MD = PD->getSetterMethodDecl()) {
-      if (MD->isPropertyAccessor())
-        IndexCtx.handleSynthesizedObjCMethod(MD, D->getLocation(),
-                                             D->getLexicalDeclContext());
-    }
-    return true;
-  }
-
-  bool VisitNamespaceDecl(const NamespaceDecl *D) {
-    IndexCtx.handleNamespace(D);
-    IndexCtx.indexDeclContext(D);
-    return true;
-  }
-
-  bool VisitUsingDecl(const UsingDecl *D) {
-    // FIXME: Parent for the following is CXIdxEntity_Unexposed with no USR,
-    // we should do better.
-
-    IndexCtx.indexNestedNameSpecifierLoc(D->getQualifierLoc(), D);
-    for (UsingDecl::shadow_iterator
-           I = D->shadow_begin(), E = D->shadow_end(); I != E; ++I) {
-      IndexCtx.handleReference((*I)->getUnderlyingDecl(), D->getLocation(),
-                               D, D->getLexicalDeclContext());
-    }
-    return true;
-  }
-
-  bool VisitUsingDirectiveDecl(const UsingDirectiveDecl *D) {
-    // FIXME: Parent for the following is CXIdxEntity_Unexposed with no USR,
-    // we should do better.
-
-    IndexCtx.indexNestedNameSpecifierLoc(D->getQualifierLoc(), D);
-    IndexCtx.handleReference(D->getNominatedNamespaceAsWritten(),
-                             D->getLocation(), D, D->getLexicalDeclContext());
-    return true;
-  }
-
-  bool VisitClassTemplateDecl(const ClassTemplateDecl *D) {
-    IndexCtx.handleClassTemplate(D);
-    if (D->isThisDeclarationADefinition())
-      IndexCtx.indexDeclContext(D->getTemplatedDecl());
-    return true;
-  }
-
-  bool VisitClassTemplateSpecializationDecl(const
-                                           ClassTemplateSpecializationDecl *D) {
-    // FIXME: Notify subsequent callbacks if info comes from implicit
-    // instantiation.
-    if (D->isThisDeclarationADefinition() &&
-        (IndexCtx.shouldIndexImplicitTemplateInsts() ||
-         !IndexCtx.isTemplateImplicitInstantiation(D)))
-      IndexCtx.indexTagDecl(D);
-    return true;
-  }
-
-  bool VisitFunctionTemplateDecl(const FunctionTemplateDecl *D) {
-    IndexCtx.handleFunctionTemplate(D);
-    FunctionDecl *FD = D->getTemplatedDecl();
-    handleDeclarator(FD, D);
-    if (FD->isThisDeclarationADefinition()) {
-      const Stmt *Body = FD->getBody();
-      if (Body) {
-        IndexCtx.indexBody(Body, D, FD);
-      }
-    }
-    return true;
-  }
-
-  bool VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D) {
-    IndexCtx.handleTypeAliasTemplate(D);
-    IndexCtx.indexTypeSourceInfo(D->getTemplatedDecl()->getTypeSourceInfo(), D);
-    return true;
-  }
-
-  bool VisitImportDecl(const ImportDecl *D) {
-    IndexCtx.importedModule(D);
-    return true;
-  }
-};
-
-} // anonymous namespace
-
-void IndexingContext::indexDecl(const Decl *D) {
-  if (D->isImplicit() && shouldIgnoreIfImplicit(D))
-    return;
-
-  bool Handled = IndexingDeclVisitor(*this).Visit(D);
-  if (!Handled && isa<DeclContext>(D))
-    indexDeclContext(cast<DeclContext>(D));
-}
-
-void IndexingContext::indexDeclContext(const DeclContext *DC) {
-  for (DeclContext::decl_iterator
-         I = DC->decls_begin(), E = DC->decls_end(); I != E; ++I) {
-    indexDecl(*I);
-  }
-}
-
-void IndexingContext::indexTopLevelDecl(const Decl *D) {
-  if (isNotFromSourceFile(D->getLocation()))
-    return;
-
-  if (isa<ObjCMethodDecl>(D))
-    return; // Wait for the objc container.
-
-  indexDecl(D);
-}
-
-void IndexingContext::indexDeclGroupRef(DeclGroupRef DG) {
-  for (DeclGroupRef::iterator I = DG.begin(), E = DG.end(); I != E; ++I)
-    indexTopLevelDecl(*I);
-}
-
-void IndexingContext::indexTUDeclsInObjCContainer() {
-  while (!TUDeclsInObjCContainer.empty()) {
-    DeclGroupRef DG = TUDeclsInObjCContainer.front();
-    TUDeclsInObjCContainer.pop_front();
-    indexDeclGroupRef(DG);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/IndexTypeSourceInfo.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/IndexTypeSourceInfo.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/IndexTypeSourceInfo.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,155 +0,0 @@
-//===- CIndexHigh.cpp - Higher level API functions ------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "IndexingContext.h"
-#include "RecursiveASTVisitor.h"
-
-using namespace clang;
-using namespace cxindex;
-
-namespace {
-
-class TypeIndexer : public cxindex::RecursiveASTVisitor<TypeIndexer> {
-  IndexingContext &IndexCtx;
-  const NamedDecl *Parent;
-  const DeclContext *ParentDC;
-
-public:
-  TypeIndexer(IndexingContext &indexCtx, const NamedDecl *parent,
-              const DeclContext *DC)
-    : IndexCtx(indexCtx), Parent(parent), ParentDC(DC) { }
-  
-  bool shouldWalkTypesOfTypeLocs() const { return false; }
-
-  bool VisitTypedefTypeLoc(TypedefTypeLoc TL) {
-    IndexCtx.handleReference(TL.getTypedefNameDecl(), TL.getNameLoc(),
-                             Parent, ParentDC);
-    return true;
-  }
-
-  bool TraverseNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS) {
-    IndexCtx.indexNestedNameSpecifierLoc(NNS, Parent, ParentDC);
-    return true;
-  }
-
-  bool VisitTagTypeLoc(TagTypeLoc TL) {
-    TagDecl *D = TL.getDecl();
-    if (D->getParentFunctionOrMethod())
-      return true;
-
-    if (TL.isDefinition()) {
-      IndexCtx.indexTagDecl(D);
-      return true;
-    }
-
-    if (D->getLocation() == TL.getNameLoc())
-      IndexCtx.handleTagDecl(D);
-    else
-      IndexCtx.handleReference(D, TL.getNameLoc(),
-                               Parent, ParentDC);
-    return true;
-  }
-
-  bool VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL) {
-    IndexCtx.handleReference(TL.getIFaceDecl(), TL.getNameLoc(),
-                             Parent, ParentDC);
-    return true;
-  }
-
-  bool VisitObjCObjectTypeLoc(ObjCObjectTypeLoc TL) {
-    for (unsigned i = 0, e = TL.getNumProtocols(); i != e; ++i) {
-      IndexCtx.handleReference(TL.getProtocol(i), TL.getProtocolLoc(i),
-                               Parent, ParentDC);
-    }
-    return true;
-  }
-
-  bool VisitTemplateSpecializationTypeLoc(TemplateSpecializationTypeLoc TL) {
-    if (const TemplateSpecializationType *T = TL.getTypePtr()) {
-      if (IndexCtx.shouldIndexImplicitTemplateInsts()) {
-        if (CXXRecordDecl *RD = T->getAsCXXRecordDecl())
-          IndexCtx.handleReference(RD, TL.getTemplateNameLoc(),
-                                   Parent, ParentDC);
-      } else {
-        if (const TemplateDecl *D = T->getTemplateName().getAsTemplateDecl())
-          IndexCtx.handleReference(D, TL.getTemplateNameLoc(),
-                                   Parent, ParentDC);
-      }
-    }
-    return true;
-  }
-
-  bool TraverseStmt(Stmt *S) {
-    IndexCtx.indexBody(S, Parent, ParentDC);
-    return true;
-  }
-};
-
-} // anonymous namespace
-
-void IndexingContext::indexTypeSourceInfo(TypeSourceInfo *TInfo,
-                                          const NamedDecl *Parent,
-                                          const DeclContext *DC) {
-  if (!TInfo || TInfo->getTypeLoc().isNull())
-    return;
-  
-  indexTypeLoc(TInfo->getTypeLoc(), Parent, DC);
-}
-
-void IndexingContext::indexTypeLoc(TypeLoc TL,
-                                   const NamedDecl *Parent,
-                                   const DeclContext *DC) {
-  if (TL.isNull())
-    return;
-
-  if (DC == 0)
-    DC = Parent->getLexicalDeclContext();
-  TypeIndexer(*this, Parent, DC).TraverseTypeLoc(TL);
-}
-
-void IndexingContext::indexNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS,
-                                                  const NamedDecl *Parent,
-                                                  const DeclContext *DC) {
-  if (!NNS)
-    return;
-
-  if (NestedNameSpecifierLoc Prefix = NNS.getPrefix())
-    indexNestedNameSpecifierLoc(Prefix, Parent, DC);
-
-  if (DC == 0)
-    DC = Parent->getLexicalDeclContext();
-  SourceLocation Loc = NNS.getSourceRange().getBegin();
-
-  switch (NNS.getNestedNameSpecifier()->getKind()) {
-  case NestedNameSpecifier::Identifier:
-  case NestedNameSpecifier::Global:
-    break;
-
-  case NestedNameSpecifier::Namespace:
-    handleReference(NNS.getNestedNameSpecifier()->getAsNamespace(),
-                    Loc, Parent, DC);
-    break;
-  case NestedNameSpecifier::NamespaceAlias:
-    handleReference(NNS.getNestedNameSpecifier()->getAsNamespaceAlias(),
-                    Loc, Parent, DC);
-    break;
-
-  case NestedNameSpecifier::TypeSpec:
-  case NestedNameSpecifier::TypeSpecWithTemplate:
-    indexTypeLoc(NNS.getTypeLoc(), Parent, DC);
-    break;
-  }
-}
-
-void IndexingContext::indexTagDecl(const TagDecl *D) {
-  if (handleTagDecl(D)) {
-    if (D->isThisDeclarationADefinition())
-      indexDeclContext(D);
-  }
-}

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/Index_Internal.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/Index_Internal.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/Index_Internal.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-//===- CXString.h - Routines for manipulating CXStrings -------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines routines for manipulating CXStrings.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIBCLANG_INDEX_INTERNAL_H
-#define LLVM_LIBCLANG_INDEX_INTERNAL_H
-
-#include "clang-c/Index.h"
-
-#ifndef __has_feature
-#define __has_feature(x) 0
-#endif
-
-#if __has_feature(blocks)
-
-#define INVOKE_BLOCK2(block, arg1, arg2) block(arg1, arg2)
-
-#else
-// If we are compiled with a compiler that doesn't have native blocks support,
-// define and call the block manually. 
-
-#define INVOKE_BLOCK2(block, arg1, arg2) block->invoke(block, arg1, arg2)
-
-typedef struct _CXCursorAndRangeVisitorBlock {
-  void *isa;
-  int flags;
-  int reserved;
-  enum CXVisitorResult (*invoke)(_CXCursorAndRangeVisitorBlock *,
-                                 CXCursor, CXSourceRange);
-} *CXCursorAndRangeVisitorBlock;
-
-#endif // !__has_feature(blocks)
-
-/// \brief The result of comparing two source ranges.
-enum RangeComparisonResult {
-  /// \brief Either the ranges overlap or one of the ranges is invalid.
-  RangeOverlap,
-
-  /// \brief The first range ends before the second range starts.
-  RangeBefore,
-
-  /// \brief The first range starts after the second range ends.
-  RangeAfter
-};
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/Indexing.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/Indexing.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/Indexing.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1081 +0,0 @@
-//===- CIndexHigh.cpp - Higher level API functions ------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "IndexingContext.h"
-#include "CIndexDiagnostic.h"
-#include "CIndexer.h"
-#include "CLog.h"
-#include "CXCursor.h"
-#include "CXSourceLocation.h"
-#include "CXString.h"
-#include "CXTranslationUnit.h"
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/DeclVisitor.h"
-#include "clang/Frontend/ASTUnit.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/CompilerInvocation.h"
-#include "clang/Frontend/FrontendAction.h"
-#include "clang/Frontend/Utils.h"
-#include "clang/Lex/HeaderSearch.h"
-#include "clang/Lex/PPCallbacks.h"
-#include "clang/Lex/PPConditionalDirectiveRecord.h"
-#include "clang/Lex/Preprocessor.h"
-#include "clang/Sema/SemaConsumer.h"
-#include "llvm/Support/CrashRecoveryContext.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/Mutex.h"
-#include "llvm/Support/MutexGuard.h"
-
-using namespace clang;
-using namespace cxtu;
-using namespace cxindex;
-
-static void indexDiagnostics(CXTranslationUnit TU, IndexingContext &IdxCtx);
-
-namespace {
-
-//===----------------------------------------------------------------------===//
-// Skip Parsed Bodies
-//===----------------------------------------------------------------------===//
-
-#ifdef LLVM_ON_WIN32
-
-// FIXME: On windows it is disabled since current implementation depends on
-// file inodes.
-
-class SessionSkipBodyData { };
-
-class TUSkipBodyControl {
-public:
-  TUSkipBodyControl(SessionSkipBodyData &sessionData,
-                    PPConditionalDirectiveRecord &ppRec,
-                    Preprocessor &pp) { }
-  bool isParsed(SourceLocation Loc, FileID FID, const FileEntry *FE) {
-    return false;
-  }
-  void finished() { }
-};
-
-#else
-
-/// \brief A "region" in source code identified by the file/offset of the
-/// preprocessor conditional directive that it belongs to.
-/// Multiple, non-consecutive ranges can be parts of the same region.
-///
-/// As an example of different regions separated by preprocessor directives:
-///
-/// \code
-///   #1
-/// #ifdef BLAH
-///   #2
-/// #ifdef CAKE
-///   #3
-/// #endif
-///   #2
-/// #endif
-///   #1
-/// \endcode
-///
-/// There are 3 regions, with non-consecutive parts:
-///   #1 is identified as the beginning of the file
-///   #2 is identified as the location of "#ifdef BLAH"
-///   #3 is identified as the location of "#ifdef CAKE"
-///
-class PPRegion {
-  ino_t ino;
-  time_t ModTime;
-  dev_t dev;
-  unsigned Offset;
-public:
-  PPRegion() : ino(), ModTime(), dev(), Offset() {}
-  PPRegion(dev_t dev, ino_t ino, unsigned offset, time_t modTime)
-    : ino(ino), ModTime(modTime), dev(dev), Offset(offset) {}
-
-  ino_t getIno() const { return ino; }
-  dev_t getDev() const { return dev; }
-  unsigned getOffset() const { return Offset; }
-  time_t getModTime() const { return ModTime; }
-
-  bool isInvalid() const { return *this == PPRegion(); }
-
-  friend bool operator==(const PPRegion &lhs, const PPRegion &rhs) {
-    return lhs.dev == rhs.dev && lhs.ino == rhs.ino &&
-        lhs.Offset == rhs.Offset && lhs.ModTime == rhs.ModTime;
-  }
-};
-
-typedef llvm::DenseSet<PPRegion> PPRegionSetTy;
-
-} // end anonymous namespace
-
-namespace llvm {
-  template <> struct isPodLike<PPRegion> {
-    static const bool value = true;
-  };
-
-  template <>
-  struct DenseMapInfo<PPRegion> {
-    static inline PPRegion getEmptyKey() {
-      return PPRegion(0, 0, unsigned(-1), 0);
-    }
-    static inline PPRegion getTombstoneKey() {
-      return PPRegion(0, 0, unsigned(-2), 0);
-    }
-
-    static unsigned getHashValue(const PPRegion &S) {
-      llvm::FoldingSetNodeID ID;
-      ID.AddInteger(S.getIno());
-      ID.AddInteger(S.getDev());
-      ID.AddInteger(S.getOffset());
-      ID.AddInteger(S.getModTime());
-      return ID.ComputeHash();
-    }
-
-    static bool isEqual(const PPRegion &LHS, const PPRegion &RHS) {
-      return LHS == RHS;
-    }
-  };
-}
-
-namespace {
-
-class SessionSkipBodyData {
-  llvm::sys::Mutex Mux;
-  PPRegionSetTy ParsedRegions;
-
-public:
-  SessionSkipBodyData() : Mux(/*recursive=*/false) {}
-  ~SessionSkipBodyData() {
-    //llvm::errs() << "RegionData: " << Skipped.size() << " - " << Skipped.getMemorySize() << "\n";
-  }
-
-  void copyTo(PPRegionSetTy &Set) {
-    llvm::MutexGuard MG(Mux);
-    Set = ParsedRegions;
-  }
-
-  void update(ArrayRef<PPRegion> Regions) {
-    llvm::MutexGuard MG(Mux);
-    ParsedRegions.insert(Regions.begin(), Regions.end());
-  }
-};
-
-class TUSkipBodyControl {
-  SessionSkipBodyData &SessionData;
-  PPConditionalDirectiveRecord &PPRec;
-  Preprocessor &PP;
-
-  PPRegionSetTy ParsedRegions;
-  SmallVector<PPRegion, 32> NewParsedRegions;
-  PPRegion LastRegion;
-  bool LastIsParsed;
-
-public:
-  TUSkipBodyControl(SessionSkipBodyData &sessionData,
-                    PPConditionalDirectiveRecord &ppRec,
-                    Preprocessor &pp)
-    : SessionData(sessionData), PPRec(ppRec), PP(pp) {
-    SessionData.copyTo(ParsedRegions);
-  }
-
-  bool isParsed(SourceLocation Loc, FileID FID, const FileEntry *FE) {
-    PPRegion region = getRegion(Loc, FID, FE);
-    if (region.isInvalid())
-      return false;
-
-    // Check common case, consecutive functions in the same region.
-    if (LastRegion == region)
-      return LastIsParsed;
-
-    LastRegion = region;
-    LastIsParsed = ParsedRegions.count(region);
-    if (!LastIsParsed)
-      NewParsedRegions.push_back(region);
-    return LastIsParsed;
-  }
-
-  void finished() {
-    SessionData.update(NewParsedRegions);
-  }
-
-private:
-  PPRegion getRegion(SourceLocation Loc, FileID FID, const FileEntry *FE) {
-    SourceLocation RegionLoc = PPRec.findConditionalDirectiveRegionLoc(Loc);
-    if (RegionLoc.isInvalid()) {
-      if (isParsedOnceInclude(FE))
-        return PPRegion(FE->getDevice(), FE->getInode(), 0,
-                        FE->getModificationTime());
-      return PPRegion();
-    }
-
-    const SourceManager &SM = PPRec.getSourceManager();
-    assert(RegionLoc.isFileID());
-    FileID RegionFID;
-    unsigned RegionOffset;
-    llvm::tie(RegionFID, RegionOffset) = SM.getDecomposedLoc(RegionLoc);
-
-    if (RegionFID != FID) {
-      if (isParsedOnceInclude(FE))
-        return PPRegion(FE->getDevice(), FE->getInode(), 0,
-                        FE->getModificationTime());
-      return PPRegion();
-    }
-
-    return PPRegion(FE->getDevice(), FE->getInode(), RegionOffset,
-                    FE->getModificationTime());
-  }
-
-  bool isParsedOnceInclude(const FileEntry *FE) {
-    return PP.getHeaderSearchInfo().isFileMultipleIncludeGuarded(FE);
-  }
-};
-
-#endif
-
-//===----------------------------------------------------------------------===//
-// IndexPPCallbacks
-//===----------------------------------------------------------------------===//
-
-class IndexPPCallbacks : public PPCallbacks {
-  Preprocessor &PP;
-  IndexingContext &IndexCtx;
-  bool IsMainFileEntered;
-
-public:
-  IndexPPCallbacks(Preprocessor &PP, IndexingContext &indexCtx)
-    : PP(PP), IndexCtx(indexCtx), IsMainFileEntered(false) { }
-
-  virtual void FileChanged(SourceLocation Loc, FileChangeReason Reason,
-                          SrcMgr::CharacteristicKind FileType, FileID PrevFID) {
-    if (IsMainFileEntered)
-      return;
-
-    SourceManager &SM = PP.getSourceManager();
-    SourceLocation MainFileLoc = SM.getLocForStartOfFile(SM.getMainFileID());
-
-    if (Loc == MainFileLoc && Reason == PPCallbacks::EnterFile) {
-      IsMainFileEntered = true;
-      IndexCtx.enteredMainFile(SM.getFileEntryForID(SM.getMainFileID()));
-    }
-  }
-
-  virtual void InclusionDirective(SourceLocation HashLoc,
-                                  const Token &IncludeTok,
-                                  StringRef FileName,
-                                  bool IsAngled,
-                                  CharSourceRange FilenameRange,
-                                  const FileEntry *File,
-                                  StringRef SearchPath,
-                                  StringRef RelativePath,
-                                  const Module *Imported) {
-    bool isImport = (IncludeTok.is(tok::identifier) &&
-            IncludeTok.getIdentifierInfo()->getPPKeywordID() == tok::pp_import);
-    IndexCtx.ppIncludedFile(HashLoc, FileName, File, isImport, IsAngled,
-                            Imported);
-  }
-
-  /// MacroDefined - This hook is called whenever a macro definition is seen.
-  virtual void MacroDefined(const Token &Id, const MacroDirective *MD) {
-  }
-
-  /// MacroUndefined - This hook is called whenever a macro #undef is seen.
-  /// MI is released immediately following this callback.
-  virtual void MacroUndefined(const Token &MacroNameTok,
-                              const MacroDirective *MD) {
-  }
-
-  /// MacroExpands - This is called by when a macro invocation is found.
-  virtual void MacroExpands(const Token &MacroNameTok, const MacroDirective *MD,
-                            SourceRange Range, const MacroArgs *Args) {
-  }
-
-  /// SourceRangeSkipped - This hook is called when a source range is skipped.
-  /// \param Range The SourceRange that was skipped. The range begins at the
-  /// #if/#else directive and ends after the #endif/#else directive.
-  virtual void SourceRangeSkipped(SourceRange Range) {
-  }
-};
-
-//===----------------------------------------------------------------------===//
-// IndexingConsumer
-//===----------------------------------------------------------------------===//
-
-class IndexingConsumer : public ASTConsumer {
-  IndexingContext &IndexCtx;
-  TUSkipBodyControl *SKCtrl;
-
-public:
-  IndexingConsumer(IndexingContext &indexCtx, TUSkipBodyControl *skCtrl)
-    : IndexCtx(indexCtx), SKCtrl(skCtrl) { }
-
-  // ASTConsumer Implementation
-
-  virtual void Initialize(ASTContext &Context) {
-    IndexCtx.setASTContext(Context);
-    IndexCtx.startedTranslationUnit();
-  }
-
-  virtual void HandleTranslationUnit(ASTContext &Ctx) {
-    if (SKCtrl)
-      SKCtrl->finished();
-  }
-
-  virtual bool HandleTopLevelDecl(DeclGroupRef DG) {
-    IndexCtx.indexDeclGroupRef(DG);
-    return !IndexCtx.shouldAbort();
-  }
-
-  /// \brief Handle the specified top-level declaration that occurred inside
-  /// and ObjC container.
-  virtual void HandleTopLevelDeclInObjCContainer(DeclGroupRef D) {
-    // They will be handled after the interface is seen first.
-    IndexCtx.addTUDeclInObjCContainer(D);
-  }
-
-  /// \brief This is called by the AST reader when deserializing things.
-  /// The default implementation forwards to HandleTopLevelDecl but we don't
-  /// care about them when indexing, so have an empty definition.
-  virtual void HandleInterestingDecl(DeclGroupRef D) {}
-
-  virtual void HandleTagDeclDefinition(TagDecl *D) {
-    if (!IndexCtx.shouldIndexImplicitTemplateInsts())
-      return;
-
-    if (IndexCtx.isTemplateImplicitInstantiation(D))
-      IndexCtx.indexDecl(D);
-  }
-
-  virtual void HandleCXXImplicitFunctionInstantiation(FunctionDecl *D) {
-    if (!IndexCtx.shouldIndexImplicitTemplateInsts())
-      return;
-
-    IndexCtx.indexDecl(D);
-  }
-
-  virtual bool shouldSkipFunctionBody(Decl *D) {
-    if (!SKCtrl) {
-      // Always skip bodies.
-      return true;
-    }
-
-    const SourceManager &SM = IndexCtx.getASTContext().getSourceManager();
-    SourceLocation Loc = D->getLocation();
-    if (Loc.isMacroID())
-      return false;
-    if (SM.isInSystemHeader(Loc))
-      return true; // always skip bodies from system headers.
-
-    FileID FID;
-    unsigned Offset;
-    llvm::tie(FID, Offset) = SM.getDecomposedLoc(Loc);
-    // Don't skip bodies from main files; this may be revisited.
-    if (SM.getMainFileID() == FID)
-      return false;
-    const FileEntry *FE = SM.getFileEntryForID(FID);
-    if (!FE)
-      return false;
-
-    return SKCtrl->isParsed(Loc, FID, FE);
-  }
-};
-
-//===----------------------------------------------------------------------===//
-// CaptureDiagnosticConsumer
-//===----------------------------------------------------------------------===//
-
-class CaptureDiagnosticConsumer : public DiagnosticConsumer {
-  SmallVector<StoredDiagnostic, 4> Errors;
-public:
-
-  virtual void HandleDiagnostic(DiagnosticsEngine::Level level,
-                                const Diagnostic &Info) {
-    if (level >= DiagnosticsEngine::Error)
-      Errors.push_back(StoredDiagnostic(level, Info));
-  }
-};
-
-//===----------------------------------------------------------------------===//
-// IndexingFrontendAction
-//===----------------------------------------------------------------------===//
-
-class IndexingFrontendAction : public ASTFrontendAction {
-  IndexingContext IndexCtx;
-  CXTranslationUnit CXTU;
-
-  SessionSkipBodyData *SKData;
-  OwningPtr<TUSkipBodyControl> SKCtrl;
-
-public:
-  IndexingFrontendAction(CXClientData clientData,
-                         IndexerCallbacks &indexCallbacks,
-                         unsigned indexOptions,
-                         CXTranslationUnit cxTU,
-                         SessionSkipBodyData *skData)
-    : IndexCtx(clientData, indexCallbacks, indexOptions, cxTU),
-      CXTU(cxTU), SKData(skData) { }
-
-  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
-                                         StringRef InFile) {
-    PreprocessorOptions &PPOpts = CI.getPreprocessorOpts();
-
-    if (!PPOpts.ImplicitPCHInclude.empty()) {
-      IndexCtx.importedPCH(
-                        CI.getFileManager().getFile(PPOpts.ImplicitPCHInclude));
-    }
-
-    IndexCtx.setASTContext(CI.getASTContext());
-    Preprocessor &PP = CI.getPreprocessor();
-    PP.addPPCallbacks(new IndexPPCallbacks(PP, IndexCtx));
-    IndexCtx.setPreprocessor(PP);
-
-    if (SKData) {
-      PPConditionalDirectiveRecord *
-        PPRec = new PPConditionalDirectiveRecord(PP.getSourceManager());
-      PP.addPPCallbacks(PPRec);
-      SKCtrl.reset(new TUSkipBodyControl(*SKData, *PPRec, PP));
-    }
-
-    return new IndexingConsumer(IndexCtx, SKCtrl.get());
-  }
-
-  virtual void EndSourceFileAction() {
-    indexDiagnostics(CXTU, IndexCtx);
-  }
-
-  virtual TranslationUnitKind getTranslationUnitKind() {
-    if (IndexCtx.shouldIndexImplicitTemplateInsts())
-      return TU_Complete;
-    else
-      return TU_Prefix;
-  }
-  virtual bool hasCodeCompletionSupport() const { return false; }
-};
-
-//===----------------------------------------------------------------------===//
-// clang_indexSourceFileUnit Implementation
-//===----------------------------------------------------------------------===//
-
-struct IndexSessionData {
-  CXIndex CIdx;
-  OwningPtr<SessionSkipBodyData> SkipBodyData;
-
-  explicit IndexSessionData(CXIndex cIdx)
-    : CIdx(cIdx), SkipBodyData(new SessionSkipBodyData) {}
-};
-
-struct IndexSourceFileInfo {
-  CXIndexAction idxAction;
-  CXClientData client_data;
-  IndexerCallbacks *index_callbacks;
-  unsigned index_callbacks_size;
-  unsigned index_options;
-  const char *source_filename;
-  const char *const *command_line_args;
-  int num_command_line_args;
-  struct CXUnsavedFile *unsaved_files;
-  unsigned num_unsaved_files;
-  CXTranslationUnit *out_TU;
-  unsigned TU_options;
-  int result;
-};
-
-struct MemBufferOwner {
-  SmallVector<const llvm::MemoryBuffer *, 8> Buffers;
-  
-  ~MemBufferOwner() {
-    for (SmallVectorImpl<const llvm::MemoryBuffer *>::iterator
-           I = Buffers.begin(), E = Buffers.end(); I != E; ++I)
-      delete *I;
-  }
-};
-
-} // anonymous namespace
-
-static void clang_indexSourceFile_Impl(void *UserData) {
-  IndexSourceFileInfo *ITUI =
-    static_cast<IndexSourceFileInfo*>(UserData);
-  CXIndexAction cxIdxAction = ITUI->idxAction;
-  CXClientData client_data = ITUI->client_data;
-  IndexerCallbacks *client_index_callbacks = ITUI->index_callbacks;
-  unsigned index_callbacks_size = ITUI->index_callbacks_size;
-  unsigned index_options = ITUI->index_options;
-  const char *source_filename = ITUI->source_filename;
-  const char * const *command_line_args = ITUI->command_line_args;
-  int num_command_line_args = ITUI->num_command_line_args;
-  struct CXUnsavedFile *unsaved_files = ITUI->unsaved_files;
-  unsigned num_unsaved_files = ITUI->num_unsaved_files;
-  CXTranslationUnit *out_TU  = ITUI->out_TU;
-  unsigned TU_options = ITUI->TU_options;
-  ITUI->result = 1; // init as error.
-  
-  if (out_TU)
-    *out_TU = 0;
-  bool requestedToGetTU = (out_TU != 0); 
-
-  if (!cxIdxAction)
-    return;
-  if (!client_index_callbacks || index_callbacks_size == 0)
-    return;
-
-  IndexerCallbacks CB;
-  memset(&CB, 0, sizeof(CB));
-  unsigned ClientCBSize = index_callbacks_size < sizeof(CB)
-                                  ? index_callbacks_size : sizeof(CB);
-  memcpy(&CB, client_index_callbacks, ClientCBSize);
-
-  IndexSessionData *IdxSession = static_cast<IndexSessionData *>(cxIdxAction);
-  CIndexer *CXXIdx = static_cast<CIndexer *>(IdxSession->CIdx);
-
-  if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForIndexing))
-    setThreadBackgroundPriority();
-
-  bool CaptureDiagnostics = !Logger::isLoggingEnabled();
-
-  CaptureDiagnosticConsumer *CaptureDiag = 0;
-  if (CaptureDiagnostics)
-    CaptureDiag = new CaptureDiagnosticConsumer();
-
-  // Configure the diagnostics.
-  IntrusiveRefCntPtr<DiagnosticsEngine>
-    Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions,
-                                              CaptureDiag,
-                                              /*ShouldOwnClient=*/true));
-
-  // Recover resources if we crash before exiting this function.
-  llvm::CrashRecoveryContextCleanupRegistrar<DiagnosticsEngine,
-    llvm::CrashRecoveryContextReleaseRefCleanup<DiagnosticsEngine> >
-    DiagCleanup(Diags.getPtr());
-  
-  OwningPtr<std::vector<const char *> >
-    Args(new std::vector<const char*>());
-
-  // Recover resources if we crash before exiting this method.
-  llvm::CrashRecoveryContextCleanupRegistrar<std::vector<const char*> >
-    ArgsCleanup(Args.get());
-  
-  Args->insert(Args->end(), command_line_args,
-               command_line_args + num_command_line_args);
-
-  // The 'source_filename' argument is optional.  If the caller does not
-  // specify it then it is assumed that the source file is specified
-  // in the actual argument list.
-  // Put the source file after command_line_args otherwise if '-x' flag is
-  // present it will be unused.
-  if (source_filename)
-    Args->push_back(source_filename);
-  
-  IntrusiveRefCntPtr<CompilerInvocation>
-    CInvok(createInvocationFromCommandLine(*Args, Diags));
-
-  if (!CInvok)
-    return;
-
-  // Recover resources if we crash before exiting this function.
-  llvm::CrashRecoveryContextCleanupRegistrar<CompilerInvocation,
-    llvm::CrashRecoveryContextReleaseRefCleanup<CompilerInvocation> >
-    CInvokCleanup(CInvok.getPtr());
-
-  if (CInvok->getFrontendOpts().Inputs.empty())
-    return;
-
-  OwningPtr<MemBufferOwner> BufOwner(new MemBufferOwner());
-
-  // Recover resources if we crash before exiting this method.
-  llvm::CrashRecoveryContextCleanupRegistrar<MemBufferOwner>
-    BufOwnerCleanup(BufOwner.get());
-
-  for (unsigned I = 0; I != num_unsaved_files; ++I) {
-    StringRef Data(unsaved_files[I].Contents, unsaved_files[I].Length);
-    const llvm::MemoryBuffer *Buffer
-      = llvm::MemoryBuffer::getMemBufferCopy(Data, unsaved_files[I].Filename);
-    CInvok->getPreprocessorOpts().addRemappedFile(unsaved_files[I].Filename, Buffer);
-    BufOwner->Buffers.push_back(Buffer);
-  }
-
-  // Since libclang is primarily used by batch tools dealing with
-  // (often very broken) source code, where spell-checking can have a
-  // significant negative impact on performance (particularly when 
-  // precompiled headers are involved), we disable it.
-  CInvok->getLangOpts()->SpellChecking = false;
-
-  if (index_options & CXIndexOpt_SuppressWarnings)
-    CInvok->getDiagnosticOpts().IgnoreWarnings = true;
-
-  ASTUnit *Unit = ASTUnit::create(CInvok.getPtr(), Diags,
-                                  CaptureDiagnostics,
-                                  /*UserFilesAreVolatile=*/true);
-  OwningPtr<CXTUOwner> CXTU(new CXTUOwner(MakeCXTranslationUnit(CXXIdx, Unit)));
-
-  // Recover resources if we crash before exiting this method.
-  llvm::CrashRecoveryContextCleanupRegistrar<CXTUOwner>
-    CXTUCleanup(CXTU.get());
-
-  // Enable the skip-parsed-bodies optimization only for C++; this may be
-  // revisited.
-  bool SkipBodies = (index_options & CXIndexOpt_SkipParsedBodiesInSession) &&
-      CInvok->getLangOpts()->CPlusPlus;
-  if (SkipBodies)
-    CInvok->getFrontendOpts().SkipFunctionBodies = true;
-
-  OwningPtr<IndexingFrontendAction> IndexAction;
-  IndexAction.reset(new IndexingFrontendAction(client_data, CB,
-                                               index_options, CXTU->getTU(),
-                              SkipBodies ? IdxSession->SkipBodyData.get() : 0));
-
-  // Recover resources if we crash before exiting this method.
-  llvm::CrashRecoveryContextCleanupRegistrar<IndexingFrontendAction>
-    IndexActionCleanup(IndexAction.get());
-
-  bool Persistent = requestedToGetTU;
-  bool OnlyLocalDecls = false;
-  bool PrecompilePreamble = false;
-  bool CacheCodeCompletionResults = false;
-  PreprocessorOptions &PPOpts = CInvok->getPreprocessorOpts(); 
-  PPOpts.AllowPCHWithCompilerErrors = true;
-
-  if (requestedToGetTU) {
-    OnlyLocalDecls = CXXIdx->getOnlyLocalDecls();
-    PrecompilePreamble = TU_options & CXTranslationUnit_PrecompiledPreamble;
-    // FIXME: Add a flag for modules.
-    CacheCodeCompletionResults
-      = TU_options & CXTranslationUnit_CacheCompletionResults;
-  }
-
-  if (TU_options & CXTranslationUnit_DetailedPreprocessingRecord) {
-    PPOpts.DetailedRecord = true;
-  }
-
-  if (!requestedToGetTU && !CInvok->getLangOpts()->Modules)
-    PPOpts.DetailedRecord = false;
-
-  DiagnosticErrorTrap DiagTrap(*Diags);
-  bool Success = ASTUnit::LoadFromCompilerInvocationAction(CInvok.getPtr(), Diags,
-                                                       IndexAction.get(),
-                                                       Unit,
-                                                       Persistent,
-                                                CXXIdx->getClangResourcesPath(),
-                                                       OnlyLocalDecls,
-                                                       CaptureDiagnostics,
-                                                       PrecompilePreamble,
-                                                    CacheCodeCompletionResults,
-                                 /*IncludeBriefCommentsInCodeCompletion=*/false,
-                                                 /*UserFilesAreVolatile=*/true);
-  if (DiagTrap.hasErrorOccurred() && CXXIdx->getDisplayDiagnostics())
-    printDiagsToStderr(Unit);
-
-  if (!Success)
-    return;
-
-  if (out_TU)
-    *out_TU = CXTU->takeTU();
-
-  ITUI->result = 0; // success.
-}
-
-//===----------------------------------------------------------------------===//
-// clang_indexTranslationUnit Implementation
-//===----------------------------------------------------------------------===//
-
-namespace {
-
-struct IndexTranslationUnitInfo {
-  CXIndexAction idxAction;
-  CXClientData client_data;
-  IndexerCallbacks *index_callbacks;
-  unsigned index_callbacks_size;
-  unsigned index_options;
-  CXTranslationUnit TU;
-  int result;
-};
-
-} // anonymous namespace
-
-static void indexPreprocessingRecord(ASTUnit &Unit, IndexingContext &IdxCtx) {
-  Preprocessor &PP = Unit.getPreprocessor();
-  if (!PP.getPreprocessingRecord())
-    return;
-
-  // FIXME: Only deserialize inclusion directives.
-
-  PreprocessingRecord::iterator I, E;
-  llvm::tie(I, E) = Unit.getLocalPreprocessingEntities();
-
-  bool isModuleFile = Unit.isModuleFile();
-  for (; I != E; ++I) {
-    PreprocessedEntity *PPE = *I;
-
-    if (InclusionDirective *ID = dyn_cast<InclusionDirective>(PPE)) {
-      SourceLocation Loc = ID->getSourceRange().getBegin();
-      // Modules have synthetic main files as input, give an invalid location
-      // if the location points to such a file.
-      if (isModuleFile && Unit.isInMainFileID(Loc))
-        Loc = SourceLocation();
-      IdxCtx.ppIncludedFile(Loc, ID->getFileName(),
-                            ID->getFile(),
-                            ID->getKind() == InclusionDirective::Import,
-                            !ID->wasInQuotes(), ID->importedModule());
-    }
-  }
-}
-
-static bool topLevelDeclVisitor(void *context, const Decl *D) {
-  IndexingContext &IdxCtx = *static_cast<IndexingContext*>(context);
-  IdxCtx.indexTopLevelDecl(D);
-  if (IdxCtx.shouldAbort())
-    return false;
-  return true;
-}
-
-static void indexTranslationUnit(ASTUnit &Unit, IndexingContext &IdxCtx) {
-  Unit.visitLocalTopLevelDecls(&IdxCtx, topLevelDeclVisitor);
-}
-
-static void indexDiagnostics(CXTranslationUnit TU, IndexingContext &IdxCtx) {
-  if (!IdxCtx.hasDiagnosticCallback())
-    return;
-
-  CXDiagnosticSetImpl *DiagSet = cxdiag::lazyCreateDiags(TU);
-  IdxCtx.handleDiagnosticSet(DiagSet);
-}
-
-static void clang_indexTranslationUnit_Impl(void *UserData) {
-  IndexTranslationUnitInfo *ITUI =
-    static_cast<IndexTranslationUnitInfo*>(UserData);
-  CXTranslationUnit TU = ITUI->TU;
-  CXClientData client_data = ITUI->client_data;
-  IndexerCallbacks *client_index_callbacks = ITUI->index_callbacks;
-  unsigned index_callbacks_size = ITUI->index_callbacks_size;
-  unsigned index_options = ITUI->index_options;
-  ITUI->result = 1; // init as error.
-
-  if (!TU)
-    return;
-  if (!client_index_callbacks || index_callbacks_size == 0)
-    return;
-
-  CIndexer *CXXIdx = TU->CIdx;
-  if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForIndexing))
-    setThreadBackgroundPriority();
-
-  IndexerCallbacks CB;
-  memset(&CB, 0, sizeof(CB));
-  unsigned ClientCBSize = index_callbacks_size < sizeof(CB)
-                                  ? index_callbacks_size : sizeof(CB);
-  memcpy(&CB, client_index_callbacks, ClientCBSize);
-
-  OwningPtr<IndexingContext> IndexCtx;
-  IndexCtx.reset(new IndexingContext(client_data, CB, index_options, TU));
-
-  // Recover resources if we crash before exiting this method.
-  llvm::CrashRecoveryContextCleanupRegistrar<IndexingContext>
-    IndexCtxCleanup(IndexCtx.get());
-
-  OwningPtr<IndexingConsumer> IndexConsumer;
-  IndexConsumer.reset(new IndexingConsumer(*IndexCtx, 0));
-
-  // Recover resources if we crash before exiting this method.
-  llvm::CrashRecoveryContextCleanupRegistrar<IndexingConsumer>
-    IndexConsumerCleanup(IndexConsumer.get());
-
-  ASTUnit *Unit = cxtu::getASTUnit(TU);
-  if (!Unit)
-    return;
-
-  ASTUnit::ConcurrencyCheck Check(*Unit);
-
-  if (const FileEntry *PCHFile = Unit->getPCHFile())
-    IndexCtx->importedPCH(PCHFile);
-
-  FileManager &FileMgr = Unit->getFileManager();
-
-  if (Unit->getOriginalSourceFileName().empty())
-    IndexCtx->enteredMainFile(0);
-  else
-    IndexCtx->enteredMainFile(FileMgr.getFile(Unit->getOriginalSourceFileName()));
-
-  IndexConsumer->Initialize(Unit->getASTContext());
-
-  indexPreprocessingRecord(*Unit, *IndexCtx);
-  indexTranslationUnit(*Unit, *IndexCtx);
-  indexDiagnostics(TU, *IndexCtx);
-
-  ITUI->result = 0;
-}
-
-//===----------------------------------------------------------------------===//
-// libclang public APIs.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-
-int clang_index_isEntityObjCContainerKind(CXIdxEntityKind K) {
-  return CXIdxEntity_ObjCClass <= K && K <= CXIdxEntity_ObjCCategory;
-}
-
-const CXIdxObjCContainerDeclInfo *
-clang_index_getObjCContainerDeclInfo(const CXIdxDeclInfo *DInfo) {
-  if (!DInfo)
-    return 0;
-
-  const DeclInfo *DI = static_cast<const DeclInfo *>(DInfo);
-  if (const ObjCContainerDeclInfo *
-        ContInfo = dyn_cast<ObjCContainerDeclInfo>(DI))
-    return &ContInfo->ObjCContDeclInfo;
-
-  return 0;
-}
-
-const CXIdxObjCInterfaceDeclInfo *
-clang_index_getObjCInterfaceDeclInfo(const CXIdxDeclInfo *DInfo) {
-  if (!DInfo)
-    return 0;
-
-  const DeclInfo *DI = static_cast<const DeclInfo *>(DInfo);
-  if (const ObjCInterfaceDeclInfo *
-        InterInfo = dyn_cast<ObjCInterfaceDeclInfo>(DI))
-    return &InterInfo->ObjCInterDeclInfo;
-
-  return 0;
-}
-
-const CXIdxObjCCategoryDeclInfo *
-clang_index_getObjCCategoryDeclInfo(const CXIdxDeclInfo *DInfo){
-  if (!DInfo)
-    return 0;
-
-  const DeclInfo *DI = static_cast<const DeclInfo *>(DInfo);
-  if (const ObjCCategoryDeclInfo *
-        CatInfo = dyn_cast<ObjCCategoryDeclInfo>(DI))
-    return &CatInfo->ObjCCatDeclInfo;
-
-  return 0;
-}
-
-const CXIdxObjCProtocolRefListInfo *
-clang_index_getObjCProtocolRefListInfo(const CXIdxDeclInfo *DInfo) {
-  if (!DInfo)
-    return 0;
-
-  const DeclInfo *DI = static_cast<const DeclInfo *>(DInfo);
-  
-  if (const ObjCInterfaceDeclInfo *
-        InterInfo = dyn_cast<ObjCInterfaceDeclInfo>(DI))
-    return InterInfo->ObjCInterDeclInfo.protocols;
-  
-  if (const ObjCProtocolDeclInfo *
-        ProtInfo = dyn_cast<ObjCProtocolDeclInfo>(DI))
-    return &ProtInfo->ObjCProtoRefListInfo;
-
-  if (const ObjCCategoryDeclInfo *CatInfo = dyn_cast<ObjCCategoryDeclInfo>(DI))
-    return CatInfo->ObjCCatDeclInfo.protocols;
-
-  return 0;
-}
-
-const CXIdxObjCPropertyDeclInfo *
-clang_index_getObjCPropertyDeclInfo(const CXIdxDeclInfo *DInfo) {
-  if (!DInfo)
-    return 0;
-
-  const DeclInfo *DI = static_cast<const DeclInfo *>(DInfo);
-  if (const ObjCPropertyDeclInfo *PropInfo = dyn_cast<ObjCPropertyDeclInfo>(DI))
-    return &PropInfo->ObjCPropDeclInfo;
-
-  return 0;
-}
-
-const CXIdxIBOutletCollectionAttrInfo *
-clang_index_getIBOutletCollectionAttrInfo(const CXIdxAttrInfo *AInfo) {
-  if (!AInfo)
-    return 0;
-
-  const AttrInfo *DI = static_cast<const AttrInfo *>(AInfo);
-  if (const IBOutletCollectionInfo *
-        IBInfo = dyn_cast<IBOutletCollectionInfo>(DI))
-    return &IBInfo->IBCollInfo;
-
-  return 0;
-}
-
-const CXIdxCXXClassDeclInfo *
-clang_index_getCXXClassDeclInfo(const CXIdxDeclInfo *DInfo) {
-  if (!DInfo)
-    return 0;
-
-  const DeclInfo *DI = static_cast<const DeclInfo *>(DInfo);
-  if (const CXXClassDeclInfo *ClassInfo = dyn_cast<CXXClassDeclInfo>(DI))
-    return &ClassInfo->CXXClassInfo;
-
-  return 0;
-}
-
-CXIdxClientContainer
-clang_index_getClientContainer(const CXIdxContainerInfo *info) {
-  if (!info)
-    return 0;
-  const ContainerInfo *Container = static_cast<const ContainerInfo *>(info);
-  return Container->IndexCtx->getClientContainerForDC(Container->DC);
-}
-
-void clang_index_setClientContainer(const CXIdxContainerInfo *info,
-                                    CXIdxClientContainer client) {
-  if (!info)
-    return;
-  const ContainerInfo *Container = static_cast<const ContainerInfo *>(info);
-  Container->IndexCtx->addContainerInMap(Container->DC, client);
-}
-
-CXIdxClientEntity clang_index_getClientEntity(const CXIdxEntityInfo *info) {
-  if (!info)
-    return 0;
-  const EntityInfo *Entity = static_cast<const EntityInfo *>(info);
-  return Entity->IndexCtx->getClientEntity(Entity->Dcl);
-}
-
-void clang_index_setClientEntity(const CXIdxEntityInfo *info,
-                                 CXIdxClientEntity client) {
-  if (!info)
-    return;
-  const EntityInfo *Entity = static_cast<const EntityInfo *>(info);
-  Entity->IndexCtx->setClientEntity(Entity->Dcl, client);
-}
-
-CXIndexAction clang_IndexAction_create(CXIndex CIdx) {
-  return new IndexSessionData(CIdx);
-}
-
-void clang_IndexAction_dispose(CXIndexAction idxAction) {
-  if (idxAction)
-    delete static_cast<IndexSessionData *>(idxAction);
-}
-
-int clang_indexSourceFile(CXIndexAction idxAction,
-                          CXClientData client_data,
-                          IndexerCallbacks *index_callbacks,
-                          unsigned index_callbacks_size,
-                          unsigned index_options,
-                          const char *source_filename,
-                          const char * const *command_line_args,
-                          int num_command_line_args,
-                          struct CXUnsavedFile *unsaved_files,
-                          unsigned num_unsaved_files,
-                          CXTranslationUnit *out_TU,
-                          unsigned TU_options) {
-  LOG_FUNC_SECTION {
-    *Log << source_filename << ": ";
-    for (int i = 0; i != num_command_line_args; ++i)
-      *Log << command_line_args[i] << " ";
-  }
-
-  IndexSourceFileInfo ITUI = { idxAction, client_data, index_callbacks,
-                               index_callbacks_size, index_options,
-                               source_filename, command_line_args,
-                               num_command_line_args, unsaved_files,
-                               num_unsaved_files, out_TU, TU_options, 0 };
-
-  if (getenv("LIBCLANG_NOTHREADS")) {
-    clang_indexSourceFile_Impl(&ITUI);
-    return ITUI.result;
-  }
-
-  llvm::CrashRecoveryContext CRC;
-
-  if (!RunSafely(CRC, clang_indexSourceFile_Impl, &ITUI)) {
-    fprintf(stderr, "libclang: crash detected during indexing source file: {\n");
-    fprintf(stderr, "  'source_filename' : '%s'\n", source_filename);
-    fprintf(stderr, "  'command_line_args' : [");
-    for (int i = 0; i != num_command_line_args; ++i) {
-      if (i)
-        fprintf(stderr, ", ");
-      fprintf(stderr, "'%s'", command_line_args[i]);
-    }
-    fprintf(stderr, "],\n");
-    fprintf(stderr, "  'unsaved_files' : [");
-    for (unsigned i = 0; i != num_unsaved_files; ++i) {
-      if (i)
-        fprintf(stderr, ", ");
-      fprintf(stderr, "('%s', '...', %ld)", unsaved_files[i].Filename,
-              unsaved_files[i].Length);
-    }
-    fprintf(stderr, "],\n");
-    fprintf(stderr, "  'options' : %d,\n", TU_options);
-    fprintf(stderr, "}\n");
-    
-    return 1;
-  } else if (getenv("LIBCLANG_RESOURCE_USAGE")) {
-    if (out_TU)
-      PrintLibclangResourceUsage(*out_TU);
-  }
-  
-  return ITUI.result;
-}
-
-int clang_indexTranslationUnit(CXIndexAction idxAction,
-                               CXClientData client_data,
-                               IndexerCallbacks *index_callbacks,
-                               unsigned index_callbacks_size,
-                               unsigned index_options,
-                               CXTranslationUnit TU) {
-  LOG_FUNC_SECTION {
-    *Log << TU;
-  }
-
-  IndexTranslationUnitInfo ITUI = { idxAction, client_data, index_callbacks,
-                                    index_callbacks_size, index_options, TU,
-                                    0 };
-
-  if (getenv("LIBCLANG_NOTHREADS")) {
-    clang_indexTranslationUnit_Impl(&ITUI);
-    return ITUI.result;
-  }
-
-  llvm::CrashRecoveryContext CRC;
-
-  if (!RunSafely(CRC, clang_indexTranslationUnit_Impl, &ITUI)) {
-    fprintf(stderr, "libclang: crash detected during indexing TU\n");
-    
-    return 1;
-  }
-
-  return ITUI.result;
-}
-
-void clang_indexLoc_getFileLocation(CXIdxLoc location,
-                                    CXIdxClientFile *indexFile,
-                                    CXFile *file,
-                                    unsigned *line,
-                                    unsigned *column,
-                                    unsigned *offset) {
-  if (indexFile) *indexFile = 0;
-  if (file)   *file = 0;
-  if (line)   *line = 0;
-  if (column) *column = 0;
-  if (offset) *offset = 0;
-
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
-  if (!location.ptr_data[0] || Loc.isInvalid())
-    return;
-
-  IndexingContext &IndexCtx =
-      *static_cast<IndexingContext*>(location.ptr_data[0]);
-  IndexCtx.translateLoc(Loc, indexFile, file, line, column, offset);
-}
-
-CXSourceLocation clang_indexLoc_getCXSourceLocation(CXIdxLoc location) {
-  SourceLocation Loc = SourceLocation::getFromRawEncoding(location.int_data);
-  if (!location.ptr_data[0] || Loc.isInvalid())
-    return clang_getNullLocation();
-
-  IndexingContext &IndexCtx =
-      *static_cast<IndexingContext*>(location.ptr_data[0]);
-  return cxloc::translateSourceLocation(IndexCtx.getASTContext(), Loc);
-}
-
-} // end: extern "C"
-

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/IndexingContext.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/IndexingContext.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/IndexingContext.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1169 +0,0 @@
-//===- IndexingContext.cpp - Higher level API functions -------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "IndexingContext.h"
-#include "CIndexDiagnostic.h"
-#include "CXTranslationUnit.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclTemplate.h"
-#include "clang/Frontend/ASTUnit.h"
-
-using namespace clang;
-using namespace cxindex;
-using namespace cxcursor;
-
-IndexingContext::ObjCProtocolListInfo::ObjCProtocolListInfo(
-                                    const ObjCProtocolList &ProtList,
-                                    IndexingContext &IdxCtx,
-                                    ScratchAlloc &SA) {
-  ObjCInterfaceDecl::protocol_loc_iterator LI = ProtList.loc_begin();
-  for (ObjCInterfaceDecl::protocol_iterator
-         I = ProtList.begin(), E = ProtList.end(); I != E; ++I, ++LI) {
-    SourceLocation Loc = *LI;
-    ObjCProtocolDecl *PD = *I;
-    ProtEntities.push_back(EntityInfo());
-    IdxCtx.getEntityInfo(PD, ProtEntities.back(), SA);
-    CXIdxObjCProtocolRefInfo ProtInfo = { 0,
-                                MakeCursorObjCProtocolRef(PD, Loc, IdxCtx.CXTU),
-                                IdxCtx.getIndexLoc(Loc) };
-    ProtInfos.push_back(ProtInfo);
-
-    if (IdxCtx.shouldSuppressRefs())
-      IdxCtx.markEntityOccurrenceInFile(PD, Loc);
-  }
-
-  for (unsigned i = 0, e = ProtInfos.size(); i != e; ++i)
-    ProtInfos[i].protocol = &ProtEntities[i];
-
-  for (unsigned i = 0, e = ProtInfos.size(); i != e; ++i)
-    Prots.push_back(&ProtInfos[i]);
-}
-
-
-IBOutletCollectionInfo::IBOutletCollectionInfo(
-                                          const IBOutletCollectionInfo &other)
-  : AttrInfo(CXIdxAttr_IBOutletCollection, other.cursor, other.loc, other.A) {
-
-  IBCollInfo.attrInfo = this;
-  IBCollInfo.classCursor = other.IBCollInfo.classCursor;
-  IBCollInfo.classLoc = other.IBCollInfo.classLoc;
-  if (other.IBCollInfo.objcClass) {
-    ClassInfo = other.ClassInfo;
-    IBCollInfo.objcClass = &ClassInfo;
-  } else
-    IBCollInfo.objcClass = 0;
-}
-
-AttrListInfo::AttrListInfo(const Decl *D, IndexingContext &IdxCtx)
-  : SA(IdxCtx), ref_cnt(0) {
-
-  if (!D->hasAttrs())
-    return;
-
-  for (AttrVec::const_iterator AttrI = D->attr_begin(), AttrE = D->attr_end();
-         AttrI != AttrE; ++AttrI) {
-    const Attr *A = *AttrI;
-    CXCursor C = MakeCXCursor(A, D, IdxCtx.CXTU);
-    CXIdxLoc Loc =  IdxCtx.getIndexLoc(A->getLocation());
-    switch (C.kind) {
-    default:
-      Attrs.push_back(AttrInfo(CXIdxAttr_Unexposed, C, Loc, A));
-      break;
-    case CXCursor_IBActionAttr:
-      Attrs.push_back(AttrInfo(CXIdxAttr_IBAction, C, Loc, A));
-      break;
-    case CXCursor_IBOutletAttr:
-      Attrs.push_back(AttrInfo(CXIdxAttr_IBOutlet, C, Loc, A));
-      break;
-    case CXCursor_IBOutletCollectionAttr:
-      IBCollAttrs.push_back(IBOutletCollectionInfo(C, Loc, A));
-      break;
-    }
-  }
-
-  for (unsigned i = 0, e = IBCollAttrs.size(); i != e; ++i) {
-    IBOutletCollectionInfo &IBInfo = IBCollAttrs[i];
-    CXAttrs.push_back(&IBInfo);
-
-    const IBOutletCollectionAttr *
-      IBAttr = cast<IBOutletCollectionAttr>(IBInfo.A);
-    IBInfo.IBCollInfo.attrInfo = &IBInfo;
-    IBInfo.IBCollInfo.classLoc = IdxCtx.getIndexLoc(IBAttr->getInterfaceLoc());
-    IBInfo.IBCollInfo.objcClass = 0;
-    IBInfo.IBCollInfo.classCursor = clang_getNullCursor();
-    QualType Ty = IBAttr->getInterface();
-    if (const ObjCInterfaceType *InterTy = Ty->getAs<ObjCInterfaceType>()) {
-      if (const ObjCInterfaceDecl *InterD = InterTy->getInterface()) {
-        IdxCtx.getEntityInfo(InterD, IBInfo.ClassInfo, SA);
-        IBInfo.IBCollInfo.objcClass = &IBInfo.ClassInfo;
-        IBInfo.IBCollInfo.classCursor = MakeCursorObjCClassRef(InterD,
-                                        IBAttr->getInterfaceLoc(), IdxCtx.CXTU);
-      }
-    }
-  }
-
-  for (unsigned i = 0, e = Attrs.size(); i != e; ++i)
-    CXAttrs.push_back(&Attrs[i]);
-}
-
-IntrusiveRefCntPtr<AttrListInfo>
-AttrListInfo::create(const Decl *D, IndexingContext &IdxCtx) {
-  ScratchAlloc SA(IdxCtx);
-  AttrListInfo *attrs = SA.allocate<AttrListInfo>();
-  return new (attrs) AttrListInfo(D, IdxCtx);
-}
-
-IndexingContext::CXXBasesListInfo::CXXBasesListInfo(const CXXRecordDecl *D,
-                                   IndexingContext &IdxCtx,
-                                   ScratchAlloc &SA) {
-  for (CXXRecordDecl::base_class_const_iterator
-         I = D->bases_begin(), E = D->bases_end(); I != E; ++I) {
-    const CXXBaseSpecifier &Base = *I;
-    BaseEntities.push_back(EntityInfo());
-    const NamedDecl *BaseD = 0;
-    QualType T = Base.getType();
-    SourceLocation Loc = getBaseLoc(Base);
-
-    if (const TypedefType *TDT = T->getAs<TypedefType>()) {
-      BaseD = TDT->getDecl();
-    } else if (const TemplateSpecializationType *
-          TST = T->getAs<TemplateSpecializationType>()) {
-      BaseD = TST->getTemplateName().getAsTemplateDecl();
-    } else if (const RecordType *RT = T->getAs<RecordType>()) {
-      BaseD = RT->getDecl();
-    }
-
-    if (BaseD)
-      IdxCtx.getEntityInfo(BaseD, BaseEntities.back(), SA);
-    CXIdxBaseClassInfo BaseInfo = { 0,
-                         MakeCursorCXXBaseSpecifier(&Base, IdxCtx.CXTU),
-                         IdxCtx.getIndexLoc(Loc) };
-    BaseInfos.push_back(BaseInfo);
-  }
-
-  for (unsigned i = 0, e = BaseInfos.size(); i != e; ++i) {
-    if (BaseEntities[i].name && BaseEntities[i].USR)
-      BaseInfos[i].base = &BaseEntities[i];
-  }
-
-  for (unsigned i = 0, e = BaseInfos.size(); i != e; ++i)
-    CXBases.push_back(&BaseInfos[i]);
-}
-
-SourceLocation IndexingContext::CXXBasesListInfo::getBaseLoc(
-                                           const CXXBaseSpecifier &Base) const {
-  SourceLocation Loc = Base.getSourceRange().getBegin();
-  TypeLoc TL;
-  if (Base.getTypeSourceInfo())
-    TL = Base.getTypeSourceInfo()->getTypeLoc();
-  if (TL.isNull())
-    return Loc;
-
-  if (QualifiedTypeLoc QL = TL.getAs<QualifiedTypeLoc>())
-    TL = QL.getUnqualifiedLoc();
-
-  if (ElaboratedTypeLoc EL = TL.getAs<ElaboratedTypeLoc>())
-    return EL.getNamedTypeLoc().getBeginLoc();
-  if (DependentNameTypeLoc DL = TL.getAs<DependentNameTypeLoc>())
-    return DL.getNameLoc();
-  if (DependentTemplateSpecializationTypeLoc DTL =
-          TL.getAs<DependentTemplateSpecializationTypeLoc>())
-    return DTL.getTemplateNameLoc();
-
-  return Loc;
-}
-
-const char *ScratchAlloc::toCStr(StringRef Str) {
-  if (Str.empty())
-    return "";
-  if (Str.data()[Str.size()] == '\0')
-    return Str.data();
-  return copyCStr(Str);
-}
-
-const char *ScratchAlloc::copyCStr(StringRef Str) {
-  char *buf = IdxCtx.StrScratch.Allocate<char>(Str.size() + 1);
-  std::uninitialized_copy(Str.begin(), Str.end(), buf);
-  buf[Str.size()] = '\0';
-  return buf;
-}
-
-void IndexingContext::setASTContext(ASTContext &ctx) {
-  Ctx = &ctx;
-  cxtu::getASTUnit(CXTU)->setASTContext(&ctx);
-}
-
-void IndexingContext::setPreprocessor(Preprocessor &PP) {
-  cxtu::getASTUnit(CXTU)->setPreprocessor(&PP);
-}
-
-bool IndexingContext::isFunctionLocalDecl(const Decl *D) {
-  assert(D);
-
-  if (!D->getParentFunctionOrMethod())
-    return false;
-
-  if (const NamedDecl *ND = dyn_cast<NamedDecl>(D)) {
-    switch (ND->getLinkage()) {
-    case NoLinkage:
-    case InternalLinkage:
-      return true;
-    case UniqueExternalLinkage:
-    case ExternalLinkage:
-      return false;
-    }
-  }
-
-  return true;
-}
-
-bool IndexingContext::shouldAbort() {
-  if (!CB.abortQuery)
-    return false;
-  return CB.abortQuery(ClientData, 0);
-}
-
-void IndexingContext::enteredMainFile(const FileEntry *File) {
-  if (File && CB.enteredMainFile) {
-    CXIdxClientFile idxFile =
-      CB.enteredMainFile(ClientData,
-                         static_cast<CXFile>(const_cast<FileEntry *>(File)), 0);
-    FileMap[File] = idxFile;
-  }
-}
-
-void IndexingContext::ppIncludedFile(SourceLocation hashLoc,
-                                     StringRef filename,
-                                     const FileEntry *File,
-                                     bool isImport, bool isAngled,
-                                     bool isModuleImport) {
-  if (!CB.ppIncludedFile)
-    return;
-
-  ScratchAlloc SA(*this);
-  CXIdxIncludedFileInfo Info = { getIndexLoc(hashLoc),
-                                 SA.toCStr(filename),
-                                 static_cast<CXFile>(
-                                   const_cast<FileEntry *>(File)),
-                                 isImport, isAngled, isModuleImport };
-  CXIdxClientFile idxFile = CB.ppIncludedFile(ClientData, &Info);
-  FileMap[File] = idxFile;
-}
-
-void IndexingContext::importedModule(const ImportDecl *ImportD) {
-  if (!CB.importedASTFile)
-    return;
-
-  Module *Mod = ImportD->getImportedModule();
-  if (!Mod)
-    return;
-  std::string ModuleName = Mod->getFullModuleName();
-
-  CXIdxImportedASTFileInfo Info = {
-                                    static_cast<CXFile>(
-                                    const_cast<FileEntry *>(Mod->getASTFile())),
-                                    Mod,
-                                    getIndexLoc(ImportD->getLocation()),
-                                    ImportD->isImplicit()
-                                  };
-  CXIdxClientASTFile astFile = CB.importedASTFile(ClientData, &Info);
-  (void)astFile;
-}
-
-void IndexingContext::importedPCH(const FileEntry *File) {
-  if (!CB.importedASTFile)
-    return;
-
-  CXIdxImportedASTFileInfo Info = {
-                                    static_cast<CXFile>(
-                                      const_cast<FileEntry *>(File)),
-                                    /*module=*/NULL,
-                                    getIndexLoc(SourceLocation()),
-                                    /*isImplicit=*/false
-                                  };
-  CXIdxClientASTFile astFile = CB.importedASTFile(ClientData, &Info);
-  (void)astFile;
-}
-
-void IndexingContext::startedTranslationUnit() {
-  CXIdxClientContainer idxCont = 0;
-  if (CB.startedTranslationUnit)
-    idxCont = CB.startedTranslationUnit(ClientData, 0);
-  addContainerInMap(Ctx->getTranslationUnitDecl(), idxCont);
-}
-
-void IndexingContext::handleDiagnosticSet(CXDiagnostic CXDiagSet) {
-  if (!CB.diagnostic)
-    return;
-
-  CB.diagnostic(ClientData, CXDiagSet, 0);
-}
-
-bool IndexingContext::handleDecl(const NamedDecl *D,
-                                 SourceLocation Loc, CXCursor Cursor,
-                                 DeclInfo &DInfo,
-                                 const DeclContext *LexicalDC) {
-  if (!CB.indexDeclaration || !D)
-    return false;
-  if (D->isImplicit() && shouldIgnoreIfImplicit(D))
-    return false;
-
-  ScratchAlloc SA(*this);
-  getEntityInfo(D, DInfo.EntInfo, SA);
-  if ((!shouldIndexFunctionLocalSymbols() && !DInfo.EntInfo.USR)
-      || Loc.isInvalid())
-    return false;
-
-  if (!LexicalDC)
-    LexicalDC = D->getLexicalDeclContext();
-
-  if (shouldSuppressRefs())
-    markEntityOccurrenceInFile(D, Loc);
-  
-  DInfo.entityInfo = &DInfo.EntInfo;
-  DInfo.cursor = Cursor;
-  DInfo.loc = getIndexLoc(Loc);
-  DInfo.isImplicit = D->isImplicit();
-
-  DInfo.attributes = DInfo.EntInfo.attributes;
-  DInfo.numAttributes = DInfo.EntInfo.numAttributes;
-
-  getContainerInfo(D->getDeclContext(), DInfo.SemanticContainer);
-  DInfo.semanticContainer = &DInfo.SemanticContainer;
-
-  if (LexicalDC == D->getDeclContext()) {
-    DInfo.lexicalContainer = &DInfo.SemanticContainer;
-  } else if (isTemplateImplicitInstantiation(D)) {
-    // Implicit instantiations have the lexical context of where they were
-    // instantiated first. We choose instead the semantic context because:
-    // 1) at the time that we see the instantiation we have not seen the
-    //   function where it occurred yet.
-    // 2) the lexical context of the first instantiation is not useful
-    //   information anyway.
-    DInfo.lexicalContainer = &DInfo.SemanticContainer;
-  } else {
-    getContainerInfo(LexicalDC, DInfo.LexicalContainer);
-    DInfo.lexicalContainer = &DInfo.LexicalContainer;
-  }
-
-  if (DInfo.isContainer) {
-    getContainerInfo(getEntityContainer(D), DInfo.DeclAsContainer);
-    DInfo.declAsContainer = &DInfo.DeclAsContainer;
-  }
-
-  CB.indexDeclaration(ClientData, &DInfo);
-  return true;
-}
-
-bool IndexingContext::handleObjCContainer(const ObjCContainerDecl *D,
-                                          SourceLocation Loc, CXCursor Cursor,
-                                          ObjCContainerDeclInfo &ContDInfo) {
-  ContDInfo.ObjCContDeclInfo.declInfo = &ContDInfo;
-  return handleDecl(D, Loc, Cursor, ContDInfo);
-}
-
-bool IndexingContext::handleFunction(const FunctionDecl *D) {
-  bool isDef = D->isThisDeclarationADefinition();
-  bool isContainer = isDef;
-  bool isSkipped = false;
-  if (D->hasSkippedBody()) {
-    isSkipped = true;
-    isDef = true;
-    isContainer = false;
-  }
-
-  DeclInfo DInfo(!D->isFirstDeclaration(), isDef, isContainer);
-  if (isSkipped)
-    DInfo.flags |= CXIdxDeclFlag_Skipped;
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleVar(const VarDecl *D) {
-  DeclInfo DInfo(!D->isFirstDeclaration(), D->isThisDeclarationADefinition(),
-                 /*isContainer=*/false);
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleField(const FieldDecl *D) {
-  DeclInfo DInfo(/*isRedeclaration=*/false, /*isDefinition=*/true,
-                 /*isContainer=*/false);
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleMSProperty(const MSPropertyDecl *D) {
-  DeclInfo DInfo(/*isRedeclaration=*/false, /*isDefinition=*/true,
-                 /*isContainer=*/false);
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleEnumerator(const EnumConstantDecl *D) {
-  DeclInfo DInfo(/*isRedeclaration=*/false, /*isDefinition=*/true,
-                 /*isContainer=*/false);
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleTagDecl(const TagDecl *D) {
-  if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(D))
-    return handleCXXRecordDecl(CXXRD, D);
-
-  DeclInfo DInfo(!D->isFirstDeclaration(), D->isThisDeclarationADefinition(),
-                 D->isThisDeclarationADefinition());
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleTypedefName(const TypedefNameDecl *D) {
-  DeclInfo DInfo(!D->isFirstDeclaration(), /*isDefinition=*/true,
-                 /*isContainer=*/false);
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleObjCInterface(const ObjCInterfaceDecl *D) {
-  // For @class forward declarations, suppress them the same way as references.
-  if (!D->isThisDeclarationADefinition()) {
-    if (shouldSuppressRefs() && markEntityOccurrenceInFile(D, D->getLocation()))
-      return false; // already occurred.
-
-    // FIXME: This seems like the wrong definition for redeclaration.
-    bool isRedeclaration = D->hasDefinition() || D->getPreviousDecl();
-    ObjCContainerDeclInfo ContDInfo(/*isForwardRef=*/true, isRedeclaration,
-                                    /*isImplementation=*/false);
-    return handleObjCContainer(D, D->getLocation(),
-                               MakeCursorObjCClassRef(D, D->getLocation(),
-                                                      CXTU), 
-                               ContDInfo);
-  }
-
-  ScratchAlloc SA(*this);
-
-  CXIdxBaseClassInfo BaseClass;
-  EntityInfo BaseEntity;
-  BaseClass.cursor = clang_getNullCursor();
-  if (ObjCInterfaceDecl *SuperD = D->getSuperClass()) {
-    getEntityInfo(SuperD, BaseEntity, SA);
-    SourceLocation SuperLoc = D->getSuperClassLoc();
-    BaseClass.base = &BaseEntity;
-    BaseClass.cursor = MakeCursorObjCSuperClassRef(SuperD, SuperLoc, CXTU);
-    BaseClass.loc = getIndexLoc(SuperLoc);
-
-    if (shouldSuppressRefs())
-      markEntityOccurrenceInFile(SuperD, SuperLoc);
-  }
-  
-  ObjCProtocolList EmptyProtoList;
-  ObjCProtocolListInfo ProtInfo(D->isThisDeclarationADefinition() 
-                                  ? D->getReferencedProtocols()
-                                  : EmptyProtoList, 
-                                *this, SA);
-  
-  ObjCInterfaceDeclInfo InterInfo(D);
-  InterInfo.ObjCProtoListInfo = ProtInfo.getListInfo();
-  InterInfo.ObjCInterDeclInfo.containerInfo = &InterInfo.ObjCContDeclInfo;
-  InterInfo.ObjCInterDeclInfo.superInfo = D->getSuperClass() ? &BaseClass : 0;
-  InterInfo.ObjCInterDeclInfo.protocols = &InterInfo.ObjCProtoListInfo;
-
-  return handleObjCContainer(D, D->getLocation(), getCursor(D), InterInfo);
-}
-
-bool IndexingContext::handleObjCImplementation(
-                                              const ObjCImplementationDecl *D) {
-  ObjCContainerDeclInfo ContDInfo(/*isForwardRef=*/false,
-                      /*isRedeclaration=*/true,
-                      /*isImplementation=*/true);
-  return handleObjCContainer(D, D->getLocation(), getCursor(D), ContDInfo);
-}
-
-bool IndexingContext::handleObjCProtocol(const ObjCProtocolDecl *D) {
-  if (!D->isThisDeclarationADefinition()) {
-    if (shouldSuppressRefs() && markEntityOccurrenceInFile(D, D->getLocation()))
-      return false; // already occurred.
-    
-    // FIXME: This seems like the wrong definition for redeclaration.
-    bool isRedeclaration = D->hasDefinition() || D->getPreviousDecl();
-    ObjCContainerDeclInfo ContDInfo(/*isForwardRef=*/true,
-                                    isRedeclaration,
-                                    /*isImplementation=*/false);
-    return handleObjCContainer(D, D->getLocation(), 
-                               MakeCursorObjCProtocolRef(D, D->getLocation(),
-                                                         CXTU),
-                               ContDInfo);    
-  }
-  
-  ScratchAlloc SA(*this);
-  ObjCProtocolList EmptyProtoList;
-  ObjCProtocolListInfo ProtListInfo(D->isThisDeclarationADefinition()
-                                      ? D->getReferencedProtocols()
-                                      : EmptyProtoList,
-                                    *this, SA);
-  
-  ObjCProtocolDeclInfo ProtInfo(D);
-  ProtInfo.ObjCProtoRefListInfo = ProtListInfo.getListInfo();
-
-  return handleObjCContainer(D, D->getLocation(), getCursor(D), ProtInfo);
-}
-
-bool IndexingContext::handleObjCCategory(const ObjCCategoryDecl *D) {
-  ScratchAlloc SA(*this);
-
-  ObjCCategoryDeclInfo CatDInfo(/*isImplementation=*/false);
-  EntityInfo ClassEntity;
-  const ObjCInterfaceDecl *IFaceD = D->getClassInterface();
-  SourceLocation ClassLoc = D->getLocation();
-  SourceLocation CategoryLoc = D->IsClassExtension() ? ClassLoc
-                                                     : D->getCategoryNameLoc();
-  getEntityInfo(IFaceD, ClassEntity, SA);
-
-  if (shouldSuppressRefs())
-    markEntityOccurrenceInFile(IFaceD, ClassLoc);
-
-  ObjCProtocolListInfo ProtInfo(D->getReferencedProtocols(), *this, SA);
-  
-  CatDInfo.ObjCCatDeclInfo.containerInfo = &CatDInfo.ObjCContDeclInfo;
-  if (IFaceD) {
-    CatDInfo.ObjCCatDeclInfo.objcClass = &ClassEntity;
-    CatDInfo.ObjCCatDeclInfo.classCursor =
-        MakeCursorObjCClassRef(IFaceD, ClassLoc, CXTU);
-  } else {
-    CatDInfo.ObjCCatDeclInfo.objcClass = 0;
-    CatDInfo.ObjCCatDeclInfo.classCursor = clang_getNullCursor();
-  }
-  CatDInfo.ObjCCatDeclInfo.classLoc = getIndexLoc(ClassLoc);
-  CatDInfo.ObjCProtoListInfo = ProtInfo.getListInfo();
-  CatDInfo.ObjCCatDeclInfo.protocols = &CatDInfo.ObjCProtoListInfo;
-
-  return handleObjCContainer(D, CategoryLoc, getCursor(D), CatDInfo);
-}
-
-bool IndexingContext::handleObjCCategoryImpl(const ObjCCategoryImplDecl *D) {
-  ScratchAlloc SA(*this);
-
-  const ObjCCategoryDecl *CatD = D->getCategoryDecl();
-  ObjCCategoryDeclInfo CatDInfo(/*isImplementation=*/true);
-  EntityInfo ClassEntity;
-  const ObjCInterfaceDecl *IFaceD = CatD->getClassInterface();
-  SourceLocation ClassLoc = D->getLocation();
-  SourceLocation CategoryLoc = D->getCategoryNameLoc();
-  getEntityInfo(IFaceD, ClassEntity, SA);
-
-  if (shouldSuppressRefs())
-    markEntityOccurrenceInFile(IFaceD, ClassLoc);
-
-  CatDInfo.ObjCCatDeclInfo.containerInfo = &CatDInfo.ObjCContDeclInfo;
-  if (IFaceD) {
-    CatDInfo.ObjCCatDeclInfo.objcClass = &ClassEntity;
-    CatDInfo.ObjCCatDeclInfo.classCursor =
-        MakeCursorObjCClassRef(IFaceD, ClassLoc, CXTU);
-  } else {
-    CatDInfo.ObjCCatDeclInfo.objcClass = 0;
-    CatDInfo.ObjCCatDeclInfo.classCursor = clang_getNullCursor();
-  }
-  CatDInfo.ObjCCatDeclInfo.classLoc = getIndexLoc(ClassLoc);
-  CatDInfo.ObjCCatDeclInfo.protocols = 0;
-
-  return handleObjCContainer(D, CategoryLoc, getCursor(D), CatDInfo);
-}
-
-bool IndexingContext::handleObjCMethod(const ObjCMethodDecl *D) {
-  bool isDef = D->isThisDeclarationADefinition();
-  bool isContainer = isDef;
-  bool isSkipped = false;
-  if (D->hasSkippedBody()) {
-    isSkipped = true;
-    isDef = true;
-    isContainer = false;
-  }
-
-  DeclInfo DInfo(!D->isCanonicalDecl(), isDef, isContainer);
-  if (isSkipped)
-    DInfo.flags |= CXIdxDeclFlag_Skipped;
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleSynthesizedObjCProperty(
-                                                const ObjCPropertyImplDecl *D) {
-  ObjCPropertyDecl *PD = D->getPropertyDecl();
-  return handleReference(PD, D->getLocation(), getCursor(D), 0, D->getDeclContext());
-}
-
-bool IndexingContext::handleSynthesizedObjCMethod(const ObjCMethodDecl *D,
-                                                  SourceLocation Loc,
-                                                 const DeclContext *LexicalDC) {
-  DeclInfo DInfo(/*isRedeclaration=*/true, /*isDefinition=*/true,
-                 /*isContainer=*/false);
-  return handleDecl(D, Loc, getCursor(D), DInfo, LexicalDC);
-}
-
-bool IndexingContext::handleObjCProperty(const ObjCPropertyDecl *D) {
-  ScratchAlloc SA(*this);
-
-  ObjCPropertyDeclInfo DInfo;
-  EntityInfo GetterEntity;
-  EntityInfo SetterEntity;
-
-  DInfo.ObjCPropDeclInfo.declInfo = &DInfo;
-
-  if (ObjCMethodDecl *Getter = D->getGetterMethodDecl()) {
-    getEntityInfo(Getter, GetterEntity, SA);
-    DInfo.ObjCPropDeclInfo.getter = &GetterEntity;
-  } else {
-    DInfo.ObjCPropDeclInfo.getter = 0;
-  }
-  if (ObjCMethodDecl *Setter = D->getSetterMethodDecl()) {
-    getEntityInfo(Setter, SetterEntity, SA);
-    DInfo.ObjCPropDeclInfo.setter = &SetterEntity;
-  } else {
-    DInfo.ObjCPropDeclInfo.setter = 0;
-  }
-
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleNamespace(const NamespaceDecl *D) {
-  DeclInfo DInfo(/*isRedeclaration=*/!D->isOriginalNamespace(),
-                 /*isDefinition=*/true,
-                 /*isContainer=*/true);
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleClassTemplate(const ClassTemplateDecl *D) {
-  return handleCXXRecordDecl(D->getTemplatedDecl(), D);
-}
-
-bool IndexingContext::handleFunctionTemplate(const FunctionTemplateDecl *D) {
-  DeclInfo DInfo(/*isRedeclaration=*/!D->isCanonicalDecl(),
-                 /*isDefinition=*/D->isThisDeclarationADefinition(),
-                 /*isContainer=*/D->isThisDeclarationADefinition());
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleTypeAliasTemplate(const TypeAliasTemplateDecl *D) {
-  DeclInfo DInfo(/*isRedeclaration=*/!D->isCanonicalDecl(),
-                 /*isDefinition=*/true, /*isContainer=*/false);
-  return handleDecl(D, D->getLocation(), getCursor(D), DInfo);
-}
-
-bool IndexingContext::handleReference(const NamedDecl *D, SourceLocation Loc,
-                                      const NamedDecl *Parent,
-                                      const DeclContext *DC,
-                                      const Expr *E,
-                                      CXIdxEntityRefKind Kind) {
-  if (!D)
-    return false;
-
-  CXCursor Cursor = E ? MakeCXCursor(E, cast<Decl>(DC), CXTU)
-                      : getRefCursor(D, Loc);
-  return handleReference(D, Loc, Cursor, Parent, DC, E, Kind);
-}
-
-bool IndexingContext::handleReference(const NamedDecl *D, SourceLocation Loc,
-                                      CXCursor Cursor,
-                                      const NamedDecl *Parent,
-                                      const DeclContext *DC,
-                                      const Expr *E,
-                                      CXIdxEntityRefKind Kind) {
-  if (!CB.indexEntityReference)
-    return false;
-
-  if (!D)
-    return false;
-  if (Loc.isInvalid())
-    return false;
-  if (!shouldIndexFunctionLocalSymbols() && isFunctionLocalDecl(D))
-    return false;
-  if (isNotFromSourceFile(D->getLocation()))
-    return false;
-  if (D->isImplicit() && shouldIgnoreIfImplicit(D))
-    return false;
-
-  if (shouldSuppressRefs()) {
-    if (markEntityOccurrenceInFile(D, Loc))
-      return false; // already occurred.
-  }
-
-  ScratchAlloc SA(*this);
-  EntityInfo RefEntity, ParentEntity;
-  getEntityInfo(D, RefEntity, SA);
-  if (!RefEntity.USR)
-    return false;
-
-  getEntityInfo(Parent, ParentEntity, SA);
-
-  ContainerInfo Container;
-  getContainerInfo(DC, Container);
-
-  CXIdxEntityRefInfo Info = { Kind,
-                              Cursor,
-                              getIndexLoc(Loc),
-                              &RefEntity,
-                              Parent ? &ParentEntity : 0,
-                              &Container };
-  CB.indexEntityReference(ClientData, &Info);
-  return true;
-}
-
-bool IndexingContext::isNotFromSourceFile(SourceLocation Loc) const {
-  if (Loc.isInvalid())
-    return true;
-  SourceManager &SM = Ctx->getSourceManager();
-  SourceLocation FileLoc = SM.getFileLoc(Loc);
-  FileID FID = SM.getFileID(FileLoc);
-  return SM.getFileEntryForID(FID) == 0;
-}
-
-void IndexingContext::addContainerInMap(const DeclContext *DC,
-                                        CXIdxClientContainer container) {
-  if (!DC)
-    return;
-
-  ContainerMapTy::iterator I = ContainerMap.find(DC);
-  if (I == ContainerMap.end()) {
-    if (container)
-      ContainerMap[DC] = container;
-    return;
-  }
-  // Allow changing the container of a previously seen DeclContext so we
-  // can handle invalid user code, like a function re-definition.
-  if (container)
-    I->second = container;
-  else
-    ContainerMap.erase(I);
-}
-
-CXIdxClientEntity IndexingContext::getClientEntity(const Decl *D) const {
-  if (!D)
-    return 0;
-  EntityMapTy::const_iterator I = EntityMap.find(D);
-  if (I == EntityMap.end())
-    return 0;
-  return I->second;
-}
-
-void IndexingContext::setClientEntity(const Decl *D, CXIdxClientEntity client) {
-  if (!D)
-    return;
-  EntityMap[D] = client;
-}
-
-bool IndexingContext::handleCXXRecordDecl(const CXXRecordDecl *RD,
-                                          const NamedDecl *OrigD) {
-  if (RD->isThisDeclarationADefinition()) {
-    ScratchAlloc SA(*this);
-    CXXClassDeclInfo CXXDInfo(/*isRedeclaration=*/!OrigD->isCanonicalDecl(),
-                           /*isDefinition=*/RD->isThisDeclarationADefinition());
-    CXXBasesListInfo BaseList(RD, *this, SA);
-    CXXDInfo.CXXClassInfo.declInfo = &CXXDInfo;
-    CXXDInfo.CXXClassInfo.bases = BaseList.getBases();
-    CXXDInfo.CXXClassInfo.numBases = BaseList.getNumBases();
-
-    if (shouldSuppressRefs()) {
-      // Go through bases and mark them as referenced.
-      for (unsigned i = 0, e = BaseList.getNumBases(); i != e; ++i) {
-        const CXIdxBaseClassInfo *baseInfo = BaseList.getBases()[i];
-        if (baseInfo->base) {
-          const NamedDecl *BaseD = BaseList.BaseEntities[i].Dcl;
-          SourceLocation
-            Loc = SourceLocation::getFromRawEncoding(baseInfo->loc.int_data);
-          markEntityOccurrenceInFile(BaseD, Loc);
-        }
-      }
-    }
-
-    return handleDecl(OrigD, OrigD->getLocation(), getCursor(OrigD), CXXDInfo);
-  }
-
-  DeclInfo DInfo(/*isRedeclaration=*/!OrigD->isCanonicalDecl(),
-                 /*isDefinition=*/RD->isThisDeclarationADefinition(),
-                 /*isContainer=*/RD->isThisDeclarationADefinition());
-  return handleDecl(OrigD, OrigD->getLocation(), getCursor(OrigD), DInfo);
-}
-
-bool IndexingContext::markEntityOccurrenceInFile(const NamedDecl *D,
-                                                 SourceLocation Loc) {
-  if (!D || Loc.isInvalid())
-    return true;
-
-  SourceManager &SM = Ctx->getSourceManager();
-  D = getEntityDecl(D);
-  
-  std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(SM.getFileLoc(Loc));
-  FileID FID = LocInfo.first;
-  if (FID.isInvalid())
-    return true;
-  
-  const FileEntry *FE = SM.getFileEntryForID(FID);
-  if (!FE)
-    return true;
-  RefFileOccurence RefOccur(FE, D);
-  std::pair<llvm::DenseSet<RefFileOccurence>::iterator, bool>
-  res = RefFileOccurences.insert(RefOccur);
-  if (!res.second)
-    return true; // already in map.
-
-  return false;
-}
-
-const NamedDecl *IndexingContext::getEntityDecl(const NamedDecl *D) const {
-  assert(D);
-  D = cast<NamedDecl>(D->getCanonicalDecl());
-
-  if (const ObjCImplementationDecl *
-               ImplD = dyn_cast<ObjCImplementationDecl>(D)) {
-    return getEntityDecl(ImplD->getClassInterface());
-
-  } else if (const ObjCCategoryImplDecl *
-               CatImplD = dyn_cast<ObjCCategoryImplDecl>(D)) {
-    return getEntityDecl(CatImplD->getCategoryDecl());
-  } else if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
-    if (FunctionTemplateDecl *TemplD = FD->getDescribedFunctionTemplate())
-      return getEntityDecl(TemplD);
-  } else if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D)) {
-    if (ClassTemplateDecl *TemplD = RD->getDescribedClassTemplate())
-      return getEntityDecl(TemplD);
-  }
-
-  return D;
-}
-
-const DeclContext *
-IndexingContext::getEntityContainer(const Decl *D) const {
-  const DeclContext *DC = dyn_cast<DeclContext>(D);
-  if (DC)
-    return DC;
-
-  if (const ClassTemplateDecl *ClassTempl = dyn_cast<ClassTemplateDecl>(D)) {
-    DC = ClassTempl->getTemplatedDecl();
-  } else if (const FunctionTemplateDecl *
-          FuncTempl = dyn_cast<FunctionTemplateDecl>(D)) {
-    DC = FuncTempl->getTemplatedDecl();
-  }
-
-  return DC;
-}
-
-CXIdxClientContainer
-IndexingContext::getClientContainerForDC(const DeclContext *DC) const {
-  if (!DC)
-    return 0;
-
-  ContainerMapTy::const_iterator I = ContainerMap.find(DC);
-  if (I == ContainerMap.end())
-    return 0;
-
-  return I->second;
-}
-
-CXIdxClientFile IndexingContext::getIndexFile(const FileEntry *File) {
-  if (!File)
-    return 0;
-
-  FileMapTy::iterator FI = FileMap.find(File);
-  if (FI != FileMap.end())
-    return FI->second;
-
-  return 0;
-}
-
-CXIdxLoc IndexingContext::getIndexLoc(SourceLocation Loc) const {
-  CXIdxLoc idxLoc =  { {0, 0}, 0 };
-  if (Loc.isInvalid())
-    return idxLoc;
-
-  idxLoc.ptr_data[0] = const_cast<IndexingContext *>(this);
-  idxLoc.int_data = Loc.getRawEncoding();
-  return idxLoc;
-}
-
-void IndexingContext::translateLoc(SourceLocation Loc,
-                                   CXIdxClientFile *indexFile, CXFile *file,
-                                   unsigned *line, unsigned *column,
-                                   unsigned *offset) {
-  if (Loc.isInvalid())
-    return;
-
-  SourceManager &SM = Ctx->getSourceManager();
-  Loc = SM.getFileLoc(Loc);
-
-  std::pair<FileID, unsigned> LocInfo = SM.getDecomposedLoc(Loc);
-  FileID FID = LocInfo.first;
-  unsigned FileOffset = LocInfo.second;
-
-  if (FID.isInvalid())
-    return;
-  
-  const FileEntry *FE = SM.getFileEntryForID(FID);
-  if (indexFile)
-    *indexFile = getIndexFile(FE);
-  if (file)
-    *file = const_cast<FileEntry *>(FE);
-  if (line)
-    *line = SM.getLineNumber(FID, FileOffset);
-  if (column)
-    *column = SM.getColumnNumber(FID, FileOffset);
-  if (offset)
-    *offset = FileOffset;
-}
-
-void IndexingContext::getEntityInfo(const NamedDecl *D,
-                                    EntityInfo &EntityInfo,
-                                    ScratchAlloc &SA) {
-  if (!D)
-    return;
-
-  D = getEntityDecl(D);
-  EntityInfo.cursor = getCursor(D);
-  EntityInfo.Dcl = D;
-  EntityInfo.IndexCtx = this;
-  EntityInfo.kind = CXIdxEntity_Unexposed;
-  EntityInfo.templateKind = CXIdxEntity_NonTemplate;
-  EntityInfo.lang = CXIdxEntityLang_C;
-
-  if (D->hasAttrs()) {
-    EntityInfo.AttrList = AttrListInfo::create(D, *this);
-    EntityInfo.attributes = EntityInfo.AttrList->getAttrs();
-    EntityInfo.numAttributes = EntityInfo.AttrList->getNumAttrs();
-  }
-
-  if (const TagDecl *TD = dyn_cast<TagDecl>(D)) {
-    switch (TD->getTagKind()) {
-    case TTK_Struct:
-      EntityInfo.kind = CXIdxEntity_Struct; break;
-    case TTK_Union:
-      EntityInfo.kind = CXIdxEntity_Union; break;
-    case TTK_Class:
-      EntityInfo.kind = CXIdxEntity_CXXClass;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    case TTK_Interface:
-      EntityInfo.kind = CXIdxEntity_CXXInterface;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    case TTK_Enum:
-      EntityInfo.kind = CXIdxEntity_Enum; break;
-    }
-
-    if (const CXXRecordDecl *CXXRec = dyn_cast<CXXRecordDecl>(D))
-      if (!CXXRec->isCLike())
-        EntityInfo.lang = CXIdxEntityLang_CXX;
-
-    if (isa<ClassTemplatePartialSpecializationDecl>(D)) {
-      EntityInfo.templateKind = CXIdxEntity_TemplatePartialSpecialization;
-    } else if (isa<ClassTemplateSpecializationDecl>(D)) {
-      EntityInfo.templateKind = CXIdxEntity_TemplateSpecialization;
-    }
-
-  } else {
-    switch (D->getKind()) {
-    case Decl::Typedef:
-      EntityInfo.kind = CXIdxEntity_Typedef; break;
-    case Decl::Function:
-      EntityInfo.kind = CXIdxEntity_Function;
-      break;
-    case Decl::ParmVar:
-      EntityInfo.kind = CXIdxEntity_Variable;
-      break;
-    case Decl::Var:
-      EntityInfo.kind = CXIdxEntity_Variable;
-      if (isa<CXXRecordDecl>(D->getDeclContext())) {
-        EntityInfo.kind = CXIdxEntity_CXXStaticVariable;
-        EntityInfo.lang = CXIdxEntityLang_CXX;
-      }
-      break;
-    case Decl::Field:
-      EntityInfo.kind = CXIdxEntity_Field;
-      if (const CXXRecordDecl *
-            CXXRec = dyn_cast<CXXRecordDecl>(D->getDeclContext())) {
-        // FIXME: isPOD check is not sufficient, a POD can contain methods,
-        // we want a isCStructLike check.
-        if (!CXXRec->isPOD())
-          EntityInfo.lang = CXIdxEntityLang_CXX;
-      }
-      break;
-    case Decl::EnumConstant:
-      EntityInfo.kind = CXIdxEntity_EnumConstant; break;
-    case Decl::ObjCInterface:
-      EntityInfo.kind = CXIdxEntity_ObjCClass;
-      EntityInfo.lang = CXIdxEntityLang_ObjC;
-      break;
-    case Decl::ObjCProtocol:
-      EntityInfo.kind = CXIdxEntity_ObjCProtocol;
-      EntityInfo.lang = CXIdxEntityLang_ObjC;
-      break;
-    case Decl::ObjCCategory:
-      EntityInfo.kind = CXIdxEntity_ObjCCategory;
-      EntityInfo.lang = CXIdxEntityLang_ObjC;
-      break;
-    case Decl::ObjCMethod:
-      if (cast<ObjCMethodDecl>(D)->isInstanceMethod())
-        EntityInfo.kind = CXIdxEntity_ObjCInstanceMethod;
-      else
-        EntityInfo.kind = CXIdxEntity_ObjCClassMethod;
-      EntityInfo.lang = CXIdxEntityLang_ObjC;
-      break;
-    case Decl::ObjCProperty:
-      EntityInfo.kind = CXIdxEntity_ObjCProperty;
-      EntityInfo.lang = CXIdxEntityLang_ObjC;
-      break;
-    case Decl::ObjCIvar:
-      EntityInfo.kind = CXIdxEntity_ObjCIvar;
-      EntityInfo.lang = CXIdxEntityLang_ObjC;
-      break;
-    case Decl::Namespace:
-      EntityInfo.kind = CXIdxEntity_CXXNamespace;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    case Decl::NamespaceAlias:
-      EntityInfo.kind = CXIdxEntity_CXXNamespaceAlias;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    case Decl::CXXConstructor:
-      EntityInfo.kind = CXIdxEntity_CXXConstructor;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    case Decl::CXXDestructor:
-      EntityInfo.kind = CXIdxEntity_CXXDestructor;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    case Decl::CXXConversion:
-      EntityInfo.kind = CXIdxEntity_CXXConversionFunction;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    case Decl::CXXMethod: {
-      const CXXMethodDecl *MD = cast<CXXMethodDecl>(D);
-      if (MD->isStatic())
-        EntityInfo.kind = CXIdxEntity_CXXStaticMethod;
-      else
-        EntityInfo.kind = CXIdxEntity_CXXInstanceMethod;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    }
-    case Decl::ClassTemplate:
-      EntityInfo.kind = CXIdxEntity_CXXClass;
-      EntityInfo.templateKind = CXIdxEntity_Template;
-      break;
-    case Decl::FunctionTemplate:
-      EntityInfo.kind = CXIdxEntity_Function;
-      EntityInfo.templateKind = CXIdxEntity_Template;
-      if (const CXXMethodDecl *MD = dyn_cast_or_null<CXXMethodDecl>(
-                           cast<FunctionTemplateDecl>(D)->getTemplatedDecl())) {
-        if (isa<CXXConstructorDecl>(MD))
-          EntityInfo.kind = CXIdxEntity_CXXConstructor;
-        else if (isa<CXXDestructorDecl>(MD))
-          EntityInfo.kind = CXIdxEntity_CXXDestructor;
-        else if (isa<CXXConversionDecl>(MD))
-          EntityInfo.kind = CXIdxEntity_CXXConversionFunction;
-        else {
-          if (MD->isStatic())
-            EntityInfo.kind = CXIdxEntity_CXXStaticMethod;
-          else
-            EntityInfo.kind = CXIdxEntity_CXXInstanceMethod;
-        }
-      }
-      break;
-    case Decl::TypeAliasTemplate:
-      EntityInfo.kind = CXIdxEntity_CXXTypeAlias;
-      EntityInfo.templateKind = CXIdxEntity_Template;
-      break;
-    case Decl::TypeAlias:
-      EntityInfo.kind = CXIdxEntity_CXXTypeAlias;
-      EntityInfo.lang = CXIdxEntityLang_CXX;
-      break;
-    default:
-      break;
-    }
-  }
-
-  if (EntityInfo.kind == CXIdxEntity_Unexposed)
-    return;
-
-  if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
-    if (FD->getTemplatedKind() ==
-          FunctionDecl::TK_FunctionTemplateSpecialization)
-      EntityInfo.templateKind = CXIdxEntity_TemplateSpecialization;
-  }
-
-  if (EntityInfo.templateKind != CXIdxEntity_NonTemplate)
-    EntityInfo.lang = CXIdxEntityLang_CXX;
-
-  if (IdentifierInfo *II = D->getIdentifier()) {
-    EntityInfo.name = SA.toCStr(II->getName());
-
-  } else if (isa<TagDecl>(D) || isa<FieldDecl>(D) || isa<NamespaceDecl>(D)) {
-    EntityInfo.name = 0; // anonymous tag/field/namespace.
-
-  } else {
-    SmallString<256> StrBuf;
-    {
-      llvm::raw_svector_ostream OS(StrBuf);
-      D->printName(OS);
-    }
-    EntityInfo.name = SA.copyCStr(StrBuf.str());
-  }
-
-  {
-    SmallString<512> StrBuf;
-    bool Ignore = getDeclCursorUSR(D, StrBuf);
-    if (Ignore) {
-      EntityInfo.USR = 0;
-    } else {
-      EntityInfo.USR = SA.copyCStr(StrBuf.str());
-    }
-  }
-}
-
-void IndexingContext::getContainerInfo(const DeclContext *DC,
-                                       ContainerInfo &ContInfo) {
-  ContInfo.cursor = getCursor(cast<Decl>(DC));
-  ContInfo.DC = DC;
-  ContInfo.IndexCtx = this;
-}
-
-CXCursor IndexingContext::getRefCursor(const NamedDecl *D, SourceLocation Loc) {
-  if (const TypeDecl *TD = dyn_cast<TypeDecl>(D))
-    return MakeCursorTypeRef(TD, Loc, CXTU);
-  if (const ObjCInterfaceDecl *ID = dyn_cast<ObjCInterfaceDecl>(D))
-    return MakeCursorObjCClassRef(ID, Loc, CXTU);
-  if (const ObjCProtocolDecl *PD = dyn_cast<ObjCProtocolDecl>(D))
-    return MakeCursorObjCProtocolRef(PD, Loc, CXTU);
-  if (const TemplateDecl *Template = dyn_cast<TemplateDecl>(D))
-    return MakeCursorTemplateRef(Template, Loc, CXTU);
-  if (const NamespaceDecl *Namespace = dyn_cast<NamespaceDecl>(D))
-    return MakeCursorNamespaceRef(Namespace, Loc, CXTU);
-  if (const NamespaceAliasDecl *Namespace = dyn_cast<NamespaceAliasDecl>(D))
-    return MakeCursorNamespaceRef(Namespace, Loc, CXTU);
-  if (const FieldDecl *Field = dyn_cast<FieldDecl>(D))
-    return MakeCursorMemberRef(Field, Loc, CXTU);
-  if (const VarDecl *Var = dyn_cast<VarDecl>(D))
-    return MakeCursorVariableRef(Var, Loc, CXTU);
-  
-  return clang_getNullCursor();
-}
-
-bool IndexingContext::shouldIgnoreIfImplicit(const Decl *D) {
-  if (isa<ObjCInterfaceDecl>(D))
-    return false;
-  if (isa<ObjCCategoryDecl>(D))
-    return false;
-  if (isa<ObjCIvarDecl>(D))
-    return false;
-  if (isa<ObjCMethodDecl>(D))
-    return false;
-  if (isa<ImportDecl>(D))
-    return false;
-  return true;
-}
-
-bool IndexingContext::isTemplateImplicitInstantiation(const Decl *D) {
-  if (const ClassTemplateSpecializationDecl *
-        SD = dyn_cast<ClassTemplateSpecializationDecl>(D)) {
-    return SD->getSpecializationKind() == TSK_ImplicitInstantiation;
-  }
-  if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
-    return FD->getTemplateSpecializationKind() == TSK_ImplicitInstantiation;
-  }
-  return false;
-}

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/IndexingContext.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/IndexingContext.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/IndexingContext.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,552 +0,0 @@
-//===- IndexingContext.h - Higher level API functions -----------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "CXCursor.h"
-#include "Index_Internal.h"
-#include "clang/AST/DeclGroup.h"
-#include "clang/AST/DeclObjC.h"
-#include "llvm/ADT/DenseSet.h"
-#include <deque>
-
-namespace clang {
-  class FileEntry;
-  class MSPropertyDecl;
-  class ObjCPropertyDecl;
-  class ClassTemplateDecl;
-  class FunctionTemplateDecl;
-  class TypeAliasTemplateDecl;
-  class ClassTemplateSpecializationDecl;
-
-namespace cxindex {
-  class IndexingContext;
-  class AttrListInfo;
-
-class ScratchAlloc {
-  IndexingContext &IdxCtx;
-
-public:
-  explicit ScratchAlloc(IndexingContext &indexCtx);
-  ScratchAlloc(const ScratchAlloc &SA);
-
-  ~ScratchAlloc();
-
-  const char *toCStr(StringRef Str);
-  const char *copyCStr(StringRef Str);
-
-  template <typename T>
-  T *allocate();
-};
-
-struct EntityInfo : public CXIdxEntityInfo {
-  const NamedDecl *Dcl;
-  IndexingContext *IndexCtx;
-  IntrusiveRefCntPtr<AttrListInfo> AttrList;
-
-  EntityInfo() {
-    name = USR = 0;
-    attributes = 0;
-    numAttributes = 0;
-  }
-};
-
-struct ContainerInfo : public CXIdxContainerInfo {
-  const DeclContext *DC;
-  IndexingContext *IndexCtx;
-};
-  
-struct DeclInfo : public CXIdxDeclInfo {
-  enum DInfoKind {
-    Info_Decl,
-
-    Info_ObjCContainer,
-      Info_ObjCInterface,
-      Info_ObjCProtocol,
-      Info_ObjCCategory,
-
-    Info_ObjCProperty,
-
-    Info_CXXClass
-  };
-  
-  DInfoKind Kind;
-
-  EntityInfo EntInfo;
-  ContainerInfo SemanticContainer;
-  ContainerInfo LexicalContainer;
-  ContainerInfo DeclAsContainer;
-
-  DeclInfo(bool isRedeclaration, bool isDefinition, bool isContainer)
-    : Kind(Info_Decl) {
-    this->isRedeclaration = isRedeclaration;
-    this->isDefinition = isDefinition;
-    this->isContainer = isContainer;
-    attributes = 0;
-    numAttributes = 0;
-    declAsContainer = semanticContainer = lexicalContainer = 0;
-    flags = 0;
-  }
-  DeclInfo(DInfoKind K,
-           bool isRedeclaration, bool isDefinition, bool isContainer)
-    : Kind(K) {
-    this->isRedeclaration = isRedeclaration;
-    this->isDefinition = isDefinition;
-    this->isContainer = isContainer;
-    attributes = 0;
-    numAttributes = 0;
-    declAsContainer = semanticContainer = lexicalContainer = 0;
-    flags = 0;
-  }
-};
-
-struct ObjCContainerDeclInfo : public DeclInfo {
-  CXIdxObjCContainerDeclInfo ObjCContDeclInfo;
-
-  ObjCContainerDeclInfo(bool isForwardRef,
-                        bool isRedeclaration,
-                        bool isImplementation)
-    : DeclInfo(Info_ObjCContainer, isRedeclaration,
-               /*isDefinition=*/!isForwardRef, /*isContainer=*/!isForwardRef) {
-    init(isForwardRef, isImplementation);
-  }
-  ObjCContainerDeclInfo(DInfoKind K,
-                        bool isForwardRef,
-                        bool isRedeclaration,
-                        bool isImplementation)
-    : DeclInfo(K, isRedeclaration, /*isDefinition=*/!isForwardRef,
-               /*isContainer=*/!isForwardRef) {
-    init(isForwardRef, isImplementation);
-  }
-
-  static bool classof(const DeclInfo *D) {
-    return Info_ObjCContainer <= D->Kind && D->Kind <= Info_ObjCCategory;
-  }
-
-private:
-  void init(bool isForwardRef, bool isImplementation) {
-    if (isForwardRef)
-      ObjCContDeclInfo.kind = CXIdxObjCContainer_ForwardRef;
-    else if (isImplementation)
-      ObjCContDeclInfo.kind = CXIdxObjCContainer_Implementation;
-    else
-      ObjCContDeclInfo.kind = CXIdxObjCContainer_Interface;
-  }
-};
-
-struct ObjCInterfaceDeclInfo : public ObjCContainerDeclInfo {
-  CXIdxObjCInterfaceDeclInfo ObjCInterDeclInfo;
-  CXIdxObjCProtocolRefListInfo ObjCProtoListInfo;
-
-  ObjCInterfaceDeclInfo(const ObjCInterfaceDecl *D)
-    : ObjCContainerDeclInfo(Info_ObjCInterface,
-                            /*isForwardRef=*/false,
-                          /*isRedeclaration=*/D->getPreviousDecl() != 0,
-                            /*isImplementation=*/false) { }
-
-  static bool classof(const DeclInfo *D) {
-    return D->Kind == Info_ObjCInterface;
-  }
-};
-
-struct ObjCProtocolDeclInfo : public ObjCContainerDeclInfo {
-  CXIdxObjCProtocolRefListInfo ObjCProtoRefListInfo;
-
-  ObjCProtocolDeclInfo(const ObjCProtocolDecl *D)
-    : ObjCContainerDeclInfo(Info_ObjCProtocol,
-                            /*isForwardRef=*/false,
-                            /*isRedeclaration=*/D->getPreviousDecl(),
-                            /*isImplementation=*/false) { }
-
-  static bool classof(const DeclInfo *D) {
-    return D->Kind == Info_ObjCProtocol;
-  }
-};
-
-struct ObjCCategoryDeclInfo : public ObjCContainerDeclInfo {
-  CXIdxObjCCategoryDeclInfo ObjCCatDeclInfo;
-  CXIdxObjCProtocolRefListInfo ObjCProtoListInfo;
-
-  explicit ObjCCategoryDeclInfo(bool isImplementation)
-    : ObjCContainerDeclInfo(Info_ObjCCategory,
-                            /*isForwardRef=*/false,
-                            /*isRedeclaration=*/isImplementation,
-                            /*isImplementation=*/isImplementation) { }
-
-  static bool classof(const DeclInfo *D) {
-    return D->Kind == Info_ObjCCategory;
-  }
-};
-
-struct ObjCPropertyDeclInfo : public DeclInfo {
-  CXIdxObjCPropertyDeclInfo ObjCPropDeclInfo;
-
-  ObjCPropertyDeclInfo()
-    : DeclInfo(Info_ObjCProperty,
-               /*isRedeclaration=*/false, /*isDefinition=*/false,
-               /*isContainer=*/false) { }
-
-  static bool classof(const DeclInfo *D) {
-    return D->Kind == Info_ObjCProperty;
-  }
-};
-
-struct CXXClassDeclInfo : public DeclInfo {
-  CXIdxCXXClassDeclInfo CXXClassInfo;
-
-  CXXClassDeclInfo(bool isRedeclaration, bool isDefinition)
-    : DeclInfo(Info_CXXClass, isRedeclaration, isDefinition, isDefinition) { }
-
-  static bool classof(const DeclInfo *D) {
-    return D->Kind == Info_CXXClass;
-  }
-};
-
-struct AttrInfo : public CXIdxAttrInfo {
-  const Attr *A;
-
-  AttrInfo(CXIdxAttrKind Kind, CXCursor C, CXIdxLoc Loc, const Attr *A) {
-    kind = Kind;
-    cursor = C;
-    loc = Loc;
-    this->A = A;
-  }
-};
-
-struct IBOutletCollectionInfo : public AttrInfo {
-  EntityInfo ClassInfo;
-  CXIdxIBOutletCollectionAttrInfo IBCollInfo;
-
-  IBOutletCollectionInfo(CXCursor C, CXIdxLoc Loc, const Attr *A) :
-    AttrInfo(CXIdxAttr_IBOutletCollection, C, Loc, A) {
-    assert(C.kind == CXCursor_IBOutletCollectionAttr);
-    IBCollInfo.objcClass = 0;
-  }
-
-  IBOutletCollectionInfo(const IBOutletCollectionInfo &other);
-
-  static bool classof(const AttrInfo *A) {
-    return A->kind == CXIdxAttr_IBOutletCollection;
-  }
-};
-
-class AttrListInfo {
-  ScratchAlloc SA;
-
-  SmallVector<AttrInfo, 2> Attrs;
-  SmallVector<IBOutletCollectionInfo, 2> IBCollAttrs;
-  SmallVector<CXIdxAttrInfo *, 2> CXAttrs;
-  unsigned ref_cnt;
-
-  AttrListInfo(const AttrListInfo &) LLVM_DELETED_FUNCTION;
-  void operator=(const AttrListInfo &) LLVM_DELETED_FUNCTION;
-public:
-  AttrListInfo(const Decl *D, IndexingContext &IdxCtx);
-
-  static IntrusiveRefCntPtr<AttrListInfo> create(const Decl *D,
-                                                 IndexingContext &IdxCtx);
-
-  const CXIdxAttrInfo *const *getAttrs() const {
-    if (CXAttrs.empty())
-      return 0;
-    return CXAttrs.data();
-  }
-  unsigned getNumAttrs() const { return (unsigned)CXAttrs.size(); }
-
-  /// \brief Retain/Release only useful when we allocate a AttrListInfo from the
-  /// BumpPtrAllocator, and not from the stack; so that we keep a pointer
-  // in the EntityInfo
-  void Retain() { ++ref_cnt; }
-  void Release() {
-    assert (ref_cnt > 0 && "Reference count is already zero.");
-    if (--ref_cnt == 0) {
-      // Memory is allocated from a BumpPtrAllocator, no need to delete it.
-      this->~AttrListInfo();
-    }
-  }
-};
-
-struct RefFileOccurence {
-  const FileEntry *File;
-  const Decl *Dcl;
-
-  RefFileOccurence(const FileEntry *File, const Decl *Dcl)
-    : File(File), Dcl(Dcl) { }
-};
-
-class IndexingContext {
-  ASTContext *Ctx;
-  CXClientData ClientData;
-  IndexerCallbacks &CB;
-  unsigned IndexOptions;
-  CXTranslationUnit CXTU;
-  
-  typedef llvm::DenseMap<const FileEntry *, CXIdxClientFile> FileMapTy;
-  typedef llvm::DenseMap<const DeclContext *, CXIdxClientContainer>
-    ContainerMapTy;
-  typedef llvm::DenseMap<const Decl *, CXIdxClientEntity> EntityMapTy;
-
-  FileMapTy FileMap;
-  ContainerMapTy ContainerMap;
-  EntityMapTy EntityMap;
-
-  llvm::DenseSet<RefFileOccurence> RefFileOccurences;
-
-  std::deque<DeclGroupRef> TUDeclsInObjCContainer;
-  
-  llvm::BumpPtrAllocator StrScratch;
-  unsigned StrAdapterCount;
-  friend class ScratchAlloc;
-
-  struct ObjCProtocolListInfo {
-    SmallVector<CXIdxObjCProtocolRefInfo, 4> ProtInfos;
-    SmallVector<EntityInfo, 4> ProtEntities;
-    SmallVector<CXIdxObjCProtocolRefInfo *, 4> Prots;
-
-    CXIdxObjCProtocolRefListInfo getListInfo() const {
-      CXIdxObjCProtocolRefListInfo Info = { Prots.data(),
-                                            (unsigned)Prots.size() };
-      return Info;
-    }
-
-    ObjCProtocolListInfo(const ObjCProtocolList &ProtList,
-                         IndexingContext &IdxCtx,
-                         ScratchAlloc &SA);
-  };
-
-  struct CXXBasesListInfo {
-    SmallVector<CXIdxBaseClassInfo, 4> BaseInfos;
-    SmallVector<EntityInfo, 4> BaseEntities;
-    SmallVector<CXIdxBaseClassInfo *, 4> CXBases;
-
-    const CXIdxBaseClassInfo *const *getBases() const {
-      return CXBases.data();
-    }
-    unsigned getNumBases() const { return (unsigned)CXBases.size(); }
-
-    CXXBasesListInfo(const CXXRecordDecl *D,
-                     IndexingContext &IdxCtx, ScratchAlloc &SA);
-
-  private:
-    SourceLocation getBaseLoc(const CXXBaseSpecifier &Base) const;
-  };
-
-  friend class AttrListInfo;
-
-public:
-  IndexingContext(CXClientData clientData, IndexerCallbacks &indexCallbacks,
-                  unsigned indexOptions, CXTranslationUnit cxTU)
-    : Ctx(0), ClientData(clientData), CB(indexCallbacks),
-      IndexOptions(indexOptions), CXTU(cxTU),
-      StrScratch(/*size=*/1024), StrAdapterCount(0) { }
-
-  ASTContext &getASTContext() const { return *Ctx; }
-
-  void setASTContext(ASTContext &ctx);
-  void setPreprocessor(Preprocessor &PP);
-
-  bool shouldSuppressRefs() const {
-    return IndexOptions & CXIndexOpt_SuppressRedundantRefs;
-  }
-
-  bool shouldIndexFunctionLocalSymbols() const {
-    return IndexOptions & CXIndexOpt_IndexFunctionLocalSymbols;
-  }
-
-  bool shouldIndexImplicitTemplateInsts() const {
-    return IndexOptions & CXIndexOpt_IndexImplicitTemplateInstantiations;
-  }
-
-  static bool isFunctionLocalDecl(const Decl *D);
-
-  bool shouldAbort();
-
-  bool hasDiagnosticCallback() const { return CB.diagnostic; }
-
-  void enteredMainFile(const FileEntry *File);
-
-  void ppIncludedFile(SourceLocation hashLoc,
-                      StringRef filename, const FileEntry *File,
-                      bool isImport, bool isAngled, bool isModuleImport);
-
-  void importedModule(const ImportDecl *ImportD);
-  void importedPCH(const FileEntry *File);
-
-  void startedTranslationUnit();
-
-  void indexDecl(const Decl *D);
-
-  void indexTagDecl(const TagDecl *D);
-
-  void indexTypeSourceInfo(TypeSourceInfo *TInfo, const NamedDecl *Parent,
-                           const DeclContext *DC = 0);
-
-  void indexTypeLoc(TypeLoc TL, const NamedDecl *Parent,
-                    const DeclContext *DC = 0);
-
-  void indexNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS,
-                                   const NamedDecl *Parent,
-                                   const DeclContext *DC = 0);
-
-  void indexDeclContext(const DeclContext *DC);
-  
-  void indexBody(const Stmt *S, const NamedDecl *Parent,
-                 const DeclContext *DC = 0);
-
-  void handleDiagnosticSet(CXDiagnosticSet CXDiagSet);
-
-  bool handleFunction(const FunctionDecl *FD);
-
-  bool handleVar(const VarDecl *D);
-
-  bool handleField(const FieldDecl *D);
-
-  bool handleMSProperty(const MSPropertyDecl *D);
-
-  bool handleEnumerator(const EnumConstantDecl *D);
-
-  bool handleTagDecl(const TagDecl *D);
-  
-  bool handleTypedefName(const TypedefNameDecl *D);
-
-  bool handleObjCInterface(const ObjCInterfaceDecl *D);
-  bool handleObjCImplementation(const ObjCImplementationDecl *D);
-
-  bool handleObjCProtocol(const ObjCProtocolDecl *D);
-
-  bool handleObjCCategory(const ObjCCategoryDecl *D);
-  bool handleObjCCategoryImpl(const ObjCCategoryImplDecl *D);
-
-  bool handleObjCMethod(const ObjCMethodDecl *D);
-
-  bool handleSynthesizedObjCProperty(const ObjCPropertyImplDecl *D);
-  bool handleSynthesizedObjCMethod(const ObjCMethodDecl *D, SourceLocation Loc,
-                                   const DeclContext *LexicalDC);
-
-  bool handleObjCProperty(const ObjCPropertyDecl *D);
-
-  bool handleNamespace(const NamespaceDecl *D);
-
-  bool handleClassTemplate(const ClassTemplateDecl *D);
-  bool handleFunctionTemplate(const FunctionTemplateDecl *D);
-  bool handleTypeAliasTemplate(const TypeAliasTemplateDecl *D);
-
-  bool handleReference(const NamedDecl *D, SourceLocation Loc, CXCursor Cursor,
-                       const NamedDecl *Parent,
-                       const DeclContext *DC,
-                       const Expr *E = 0,
-                       CXIdxEntityRefKind Kind = CXIdxEntityRef_Direct);
-
-  bool handleReference(const NamedDecl *D, SourceLocation Loc,
-                       const NamedDecl *Parent,
-                       const DeclContext *DC,
-                       const Expr *E = 0,
-                       CXIdxEntityRefKind Kind = CXIdxEntityRef_Direct);
-
-  bool isNotFromSourceFile(SourceLocation Loc) const;
-
-  void indexTopLevelDecl(const Decl *D);
-  void indexTUDeclsInObjCContainer();
-  void indexDeclGroupRef(DeclGroupRef DG);
-
-  void addTUDeclInObjCContainer(DeclGroupRef DG) {
-    TUDeclsInObjCContainer.push_back(DG);
-  }
-
-  void translateLoc(SourceLocation Loc, CXIdxClientFile *indexFile, CXFile *file,
-                    unsigned *line, unsigned *column, unsigned *offset);
-
-  CXIdxClientContainer getClientContainerForDC(const DeclContext *DC) const;
-  void addContainerInMap(const DeclContext *DC, CXIdxClientContainer container);
-
-  CXIdxClientEntity getClientEntity(const Decl *D) const;
-  void setClientEntity(const Decl *D, CXIdxClientEntity client);
-
-  static bool isTemplateImplicitInstantiation(const Decl *D);
-
-private:
-  bool handleDecl(const NamedDecl *D,
-                  SourceLocation Loc, CXCursor Cursor,
-                  DeclInfo &DInfo,
-                  const DeclContext *LexicalDC = 0);
-
-  bool handleObjCContainer(const ObjCContainerDecl *D,
-                           SourceLocation Loc, CXCursor Cursor,
-                           ObjCContainerDeclInfo &ContDInfo);
-
-  bool handleCXXRecordDecl(const CXXRecordDecl *RD, const NamedDecl *OrigD);
-
-  bool markEntityOccurrenceInFile(const NamedDecl *D, SourceLocation Loc);
-
-  const NamedDecl *getEntityDecl(const NamedDecl *D) const;
-
-  const DeclContext *getEntityContainer(const Decl *D) const;
-
-  CXIdxClientFile getIndexFile(const FileEntry *File);
-  
-  CXIdxLoc getIndexLoc(SourceLocation Loc) const;
-
-  void getEntityInfo(const NamedDecl *D,
-                     EntityInfo &EntityInfo,
-                     ScratchAlloc &SA);
-
-  void getContainerInfo(const DeclContext *DC, ContainerInfo &ContInfo);
-
-  CXCursor getCursor(const Decl *D) {
-    return cxcursor::MakeCXCursor(D, CXTU);
-  }
-
-  CXCursor getRefCursor(const NamedDecl *D, SourceLocation Loc);
-
-  static bool shouldIgnoreIfImplicit(const Decl *D);
-};
-
-inline ScratchAlloc::ScratchAlloc(IndexingContext &idxCtx) : IdxCtx(idxCtx) {
-  ++IdxCtx.StrAdapterCount;
-}
-inline ScratchAlloc::ScratchAlloc(const ScratchAlloc &SA) : IdxCtx(SA.IdxCtx) {
-  ++IdxCtx.StrAdapterCount;
-}
-
-inline ScratchAlloc::~ScratchAlloc() {
-  --IdxCtx.StrAdapterCount;
-  if (IdxCtx.StrAdapterCount == 0)
-    IdxCtx.StrScratch.Reset();
-}
-
-template <typename T>
-inline T *ScratchAlloc::allocate() {
-  return IdxCtx.StrScratch.Allocate<T>();
-}
-
-}} // end clang::cxindex
-
-namespace llvm {
-  /// Define DenseMapInfo so that FileID's can be used as keys in DenseMap and
-  /// DenseSets.
-  template <>
-  struct DenseMapInfo<clang::cxindex::RefFileOccurence> {
-    static inline clang::cxindex::RefFileOccurence getEmptyKey() {
-      return clang::cxindex::RefFileOccurence(0, 0);
-    }
-
-    static inline clang::cxindex::RefFileOccurence getTombstoneKey() {
-      return clang::cxindex::RefFileOccurence((const clang::FileEntry *)~0,
-                                              (const clang::Decl *)~0);
-    }
-
-    static unsigned getHashValue(clang::cxindex::RefFileOccurence S) {
-      typedef std::pair<const clang::FileEntry *, const clang::Decl *> PairTy;
-      return DenseMapInfo<PairTy>::getHashValue(PairTy(S.File, S.Dcl));
-    }
-
-    static bool isEqual(clang::cxindex::RefFileOccurence LHS,
-                        clang::cxindex::RefFileOccurence RHS) {
-      return LHS.File == RHS.File && LHS.Dcl == RHS.Dcl;
-    }
-  };
-}

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/RecursiveASTVisitor.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/RecursiveASTVisitor.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/RecursiveASTVisitor.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2218 +0,0 @@
-//===--- RecursiveASTVisitor.h - Recursive AST Visitor ----------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines the RecursiveASTVisitor interface, which recursively
-//  traverses the entire AST.
-//
-//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_LIBCLANG_RECURSIVEASTVISITOR_H
-#define LLVM_CLANG_LIBCLANG_RECURSIVEASTVISITOR_H
-
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclFriend.h"
-#include "clang/AST/DeclObjC.h"
-#include "clang/AST/DeclOpenMP.h"
-#include "clang/AST/DeclTemplate.h"
-#include "clang/AST/Expr.h"
-#include "clang/AST/ExprCXX.h"
-#include "clang/AST/ExprObjC.h"
-#include "clang/AST/NestedNameSpecifier.h"
-#include "clang/AST/Stmt.h"
-#include "clang/AST/StmtCXX.h"
-#include "clang/AST/StmtObjC.h"
-#include "clang/AST/TemplateBase.h"
-#include "clang/AST/TemplateName.h"
-#include "clang/AST/Type.h"
-#include "clang/AST/TypeLoc.h"
-
-// The following three macros are used for meta programming.  The code
-// using them is responsible for defining macro OPERATOR().
-
-// All unary operators.
-#define UNARYOP_LIST()                          \
-  OPERATOR(PostInc)   OPERATOR(PostDec)         \
-  OPERATOR(PreInc)    OPERATOR(PreDec)          \
-  OPERATOR(AddrOf)    OPERATOR(Deref)           \
-  OPERATOR(Plus)      OPERATOR(Minus)           \
-  OPERATOR(Not)       OPERATOR(LNot)            \
-  OPERATOR(Real)      OPERATOR(Imag)            \
-  OPERATOR(Extension)
-
-// All binary operators (excluding compound assign operators).
-#define BINOP_LIST() \
-  OPERATOR(PtrMemD)              OPERATOR(PtrMemI)    \
-  OPERATOR(Mul)   OPERATOR(Div)  OPERATOR(Rem)        \
-  OPERATOR(Add)   OPERATOR(Sub)  OPERATOR(Shl)        \
-  OPERATOR(Shr)                                       \
-                                                      \
-  OPERATOR(LT)    OPERATOR(GT)   OPERATOR(LE)         \
-  OPERATOR(GE)    OPERATOR(EQ)   OPERATOR(NE)         \
-  OPERATOR(And)   OPERATOR(Xor)  OPERATOR(Or)         \
-  OPERATOR(LAnd)  OPERATOR(LOr)                       \
-                                                      \
-  OPERATOR(Assign)                                    \
-  OPERATOR(Comma)
-
-// All compound assign operators.
-#define CAO_LIST()                                                      \
-  OPERATOR(Mul) OPERATOR(Div) OPERATOR(Rem) OPERATOR(Add) OPERATOR(Sub) \
-  OPERATOR(Shl) OPERATOR(Shr) OPERATOR(And) OPERATOR(Or)  OPERATOR(Xor)
-
-namespace clang {
-namespace cxindex {
-
-// A helper macro to implement short-circuiting when recursing.  It
-// invokes CALL_EXPR, which must be a method call, on the derived
-// object (s.t. a user of RecursiveASTVisitor can override the method
-// in CALL_EXPR).
-#define TRY_TO(CALL_EXPR) \
-  do { if (!getDerived().CALL_EXPR) return false; } while (0)
-
-/// \brief A class that does preorder depth-first traversal on the
-/// entire Clang AST and visits each node.
-///
-/// This class performs three distinct tasks:
-///   1. traverse the AST (i.e. go to each node);
-///   2. at a given node, walk up the class hierarchy, starting from
-///      the node's dynamic type, until the top-most class (e.g. Stmt,
-///      Decl, or Type) is reached.
-///   3. given a (node, class) combination, where 'class' is some base
-///      class of the dynamic type of 'node', call a user-overridable
-///      function to actually visit the node.
-///
-/// These tasks are done by three groups of methods, respectively:
-///   1. TraverseDecl(Decl *x) does task #1.  It is the entry point
-///      for traversing an AST rooted at x.  This method simply
-///      dispatches (i.e. forwards) to TraverseFoo(Foo *x) where Foo
-///      is the dynamic type of *x, which calls WalkUpFromFoo(x) and
-///      then recursively visits the child nodes of x.
-///      TraverseStmt(Stmt *x) and TraverseType(QualType x) work
-///      similarly.
-///   2. WalkUpFromFoo(Foo *x) does task #2.  It does not try to visit
-///      any child node of x.  Instead, it first calls WalkUpFromBar(x)
-///      where Bar is the direct parent class of Foo (unless Foo has
-///      no parent), and then calls VisitFoo(x) (see the next list item).
-///   3. VisitFoo(Foo *x) does task #3.
-///
-/// These three method groups are tiered (Traverse* > WalkUpFrom* >
-/// Visit*).  A method (e.g. Traverse*) may call methods from the same
-/// tier (e.g. other Traverse*) or one tier lower (e.g. WalkUpFrom*).
-/// It may not call methods from a higher tier.
-///
-/// Note that since WalkUpFromFoo() calls WalkUpFromBar() (where Bar
-/// is Foo's super class) before calling VisitFoo(), the result is
-/// that the Visit*() methods for a given node are called in the
-/// top-down order (e.g. for a node of type NamedDecl, the order will
-/// be VisitDecl(), VisitNamedDecl(), and then VisitNamespaceDecl()).
-///
-/// This scheme guarantees that all Visit*() calls for the same AST
-/// node are grouped together.  In other words, Visit*() methods for
-/// different nodes are never interleaved.
-///
-/// Stmts are traversed internally using a data queue to avoid a stack overflow
-/// with hugely nested ASTs.
-///
-/// Clients of this visitor should subclass the visitor (providing
-/// themselves as the template argument, using the curiously recurring
-/// template pattern) and override any of the Traverse*, WalkUpFrom*,
-/// and Visit* methods for declarations, types, statements,
-/// expressions, or other AST nodes where the visitor should customize
-/// behavior.  Most users only need to override Visit*.  Advanced
-/// users may override Traverse* and WalkUpFrom* to implement custom
-/// traversal strategies.  Returning false from one of these overridden
-/// functions will abort the entire traversal.
-///
-/// By default, this visitor tries to visit every part of the explicit
-/// source code exactly once.  The default policy towards templates
-/// is to descend into the 'pattern' class or function body, not any
-/// explicit or implicit instantiations.  Explicit specializations
-/// are still visited, and the patterns of partial specializations
-/// are visited separately.  This behavior can be changed by
-/// overriding shouldVisitTemplateInstantiations() in the derived class
-/// to return true, in which case all known implicit and explicit
-/// instantiations will be visited at the same time as the pattern
-/// from which they were produced.
-template<typename Derived>
-class RecursiveASTVisitor {
-public:
-  /// \brief Return a reference to the derived class.
-  Derived &getDerived() { return *static_cast<Derived*>(this); }
-
-  /// \brief Return whether this visitor should recurse into
-  /// template instantiations.
-  bool shouldVisitTemplateInstantiations() const { return false; }
-
-  /// \brief Return whether this visitor should recurse into the types of
-  /// TypeLocs.
-  bool shouldWalkTypesOfTypeLocs() const { return true; }
-
-  /// \brief Recursively visit a statement or expression, by
-  /// dispatching to Traverse*() based on the argument's dynamic type.
-  ///
-  /// \returns false if the visitation was terminated early, true
-  /// otherwise (including when the argument is NULL).
-  bool TraverseStmt(Stmt *S);
-
-  /// \brief Recursively visit a type, by dispatching to
-  /// Traverse*Type() based on the argument's getTypeClass() property.
-  ///
-  /// \returns false if the visitation was terminated early, true
-  /// otherwise (including when the argument is a Null type).
-  bool TraverseType(QualType T);
-
-  /// \brief Recursively visit a type with location, by dispatching to
-  /// Traverse*TypeLoc() based on the argument type's getTypeClass() property.
-  ///
-  /// \returns false if the visitation was terminated early, true
-  /// otherwise (including when the argument is a Null type location).
-  bool TraverseTypeLoc(TypeLoc TL);
-
-  /// \brief Recursively visit a declaration, by dispatching to
-  /// Traverse*Decl() based on the argument's dynamic type.
-  ///
-  /// \returns false if the visitation was terminated early, true
-  /// otherwise (including when the argument is NULL).
-  bool TraverseDecl(Decl *D);
-
-  /// \brief Recursively visit a C++ nested-name-specifier.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  bool TraverseNestedNameSpecifier(NestedNameSpecifier *NNS);
-
-  /// \brief Recursively visit a C++ nested-name-specifier with location
-  /// information.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  bool TraverseNestedNameSpecifierLoc(NestedNameSpecifierLoc NNS);
-
-  /// \brief Recursively visit a name with its location information.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  bool TraverseDeclarationNameInfo(DeclarationNameInfo NameInfo);
-
-  /// \brief Recursively visit a template name and dispatch to the
-  /// appropriate method.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  bool TraverseTemplateName(TemplateName Template);
-
-  /// \brief Recursively visit a template argument and dispatch to the
-  /// appropriate method for the argument type.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  // FIXME: migrate callers to TemplateArgumentLoc instead.
-  bool TraverseTemplateArgument(const TemplateArgument &Arg);
-
-  /// \brief Recursively visit a template argument location and dispatch to the
-  /// appropriate method for the argument type.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  bool TraverseTemplateArgumentLoc(const TemplateArgumentLoc &ArgLoc);
-
-  /// \brief Recursively visit a set of template arguments.
-  /// This can be overridden by a subclass, but it's not expected that
-  /// will be needed -- this visitor always dispatches to another.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  // FIXME: take a TemplateArgumentLoc* (or TemplateArgumentListInfo) instead.
-  bool TraverseTemplateArguments(const TemplateArgument *Args,
-                                 unsigned NumArgs);
-
-  /// \brief Recursively visit a constructor initializer.  This
-  /// automatically dispatches to another visitor for the initializer
-  /// expression, but not for the name of the initializer, so may
-  /// be overridden for clients that need access to the name.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  bool TraverseConstructorInitializer(CXXCtorInitializer *Init);
-
-  /// \brief Recursively visit a lambda capture.
-  ///
-  /// \returns false if the visitation was terminated early, true otherwise.
-  bool TraverseLambdaCapture(LambdaExpr::Capture C);
-  
-  // ---- Methods on Stmts ----
-
-  // Declare Traverse*() for all concrete Stmt classes.
-#define ABSTRACT_STMT(STMT)
-#define STMT(CLASS, PARENT)                                     \
-  bool Traverse##CLASS(CLASS *S);
-#include "clang/AST/StmtNodes.inc"
-  // The above header #undefs ABSTRACT_STMT and STMT upon exit.
-
-  // Define WalkUpFrom*() and empty Visit*() for all Stmt classes.
-  bool WalkUpFromStmt(Stmt *S) { return getDerived().VisitStmt(S); }
-  bool VisitStmt(Stmt *S) { return true; }
-#define STMT(CLASS, PARENT)                                     \
-  bool WalkUpFrom##CLASS(CLASS *S) {                            \
-    TRY_TO(WalkUpFrom##PARENT(S));                              \
-    TRY_TO(Visit##CLASS(S));                                    \
-    return true;                                                \
-  }                                                             \
-  bool Visit##CLASS(CLASS *S) { return true; }
-#include "clang/AST/StmtNodes.inc"
-
-  // Define Traverse*(), WalkUpFrom*(), and Visit*() for unary
-  // operator methods.  Unary operators are not classes in themselves
-  // (they're all opcodes in UnaryOperator) but do have visitors.
-#define OPERATOR(NAME)                                           \
-  bool TraverseUnary##NAME(UnaryOperator *S) {                  \
-    TRY_TO(WalkUpFromUnary##NAME(S));                           \
-    StmtQueueAction StmtQueue(*this);                           \
-    StmtQueue.queue(S->getSubExpr());                           \
-    return true;                                                \
-  }                                                             \
-  bool WalkUpFromUnary##NAME(UnaryOperator *S) {                \
-    TRY_TO(WalkUpFromUnaryOperator(S));                         \
-    TRY_TO(VisitUnary##NAME(S));                                \
-    return true;                                                \
-  }                                                             \
-  bool VisitUnary##NAME(UnaryOperator *S) { return true; }
-
-  UNARYOP_LIST()
-#undef OPERATOR
-
-  // Define Traverse*(), WalkUpFrom*(), and Visit*() for binary
-  // operator methods.  Binary operators are not classes in themselves
-  // (they're all opcodes in BinaryOperator) but do have visitors.
-#define GENERAL_BINOP_FALLBACK(NAME, BINOP_TYPE)                \
-  bool TraverseBin##NAME(BINOP_TYPE *S) {                       \
-    TRY_TO(WalkUpFromBin##NAME(S));                             \
-    StmtQueueAction StmtQueue(*this);                           \
-    StmtQueue.queue(S->getLHS());                               \
-    StmtQueue.queue(S->getRHS());                               \
-    return true;                                                \
-  }                                                             \
-  bool WalkUpFromBin##NAME(BINOP_TYPE *S) {                     \
-    TRY_TO(WalkUpFrom##BINOP_TYPE(S));                          \
-    TRY_TO(VisitBin##NAME(S));                                  \
-    return true;                                                \
-  }                                                             \
-  bool VisitBin##NAME(BINOP_TYPE *S) { return true; }
-
-#define OPERATOR(NAME) GENERAL_BINOP_FALLBACK(NAME, BinaryOperator)
-  BINOP_LIST()
-#undef OPERATOR
-
-  // Define Traverse*(), WalkUpFrom*(), and Visit*() for compound
-  // assignment methods.  Compound assignment operators are not
-  // classes in themselves (they're all opcodes in
-  // CompoundAssignOperator) but do have visitors.
-#define OPERATOR(NAME) \
-  GENERAL_BINOP_FALLBACK(NAME##Assign, CompoundAssignOperator)
-
-  CAO_LIST()
-#undef OPERATOR
-#undef GENERAL_BINOP_FALLBACK
-
-  // ---- Methods on Types ----
-  // FIXME: revamp to take TypeLoc's rather than Types.
-
-  // Declare Traverse*() for all concrete Type classes.
-#define ABSTRACT_TYPE(CLASS, BASE)
-#define TYPE(CLASS, BASE) \
-  bool Traverse##CLASS##Type(CLASS##Type *T);
-#include "clang/AST/TypeNodes.def"
-  // The above header #undefs ABSTRACT_TYPE and TYPE upon exit.
-
-  // Define WalkUpFrom*() and empty Visit*() for all Type classes.
-  bool WalkUpFromType(Type *T) { return getDerived().VisitType(T); }
-  bool VisitType(Type *T) { return true; }
-#define TYPE(CLASS, BASE)                                       \
-  bool WalkUpFrom##CLASS##Type(CLASS##Type *T) {                \
-    TRY_TO(WalkUpFrom##BASE(T));                                \
-    TRY_TO(Visit##CLASS##Type(T));                              \
-    return true;                                                \
-  }                                                             \
-  bool Visit##CLASS##Type(CLASS##Type *T) { return true; }
-#include "clang/AST/TypeNodes.def"
-
-  // ---- Methods on TypeLocs ----
-  // FIXME: this currently just calls the matching Type methods
-
-  // Declare Traverse*() for all concrete Type classes.
-#define ABSTRACT_TYPELOC(CLASS, BASE)
-#define TYPELOC(CLASS, BASE) \
-  bool Traverse##CLASS##TypeLoc(CLASS##TypeLoc TL);
-#include "clang/AST/TypeLocNodes.def"
-  // The above header #undefs ABSTRACT_TYPELOC and TYPELOC upon exit.
-
-  // Define WalkUpFrom*() and empty Visit*() for all TypeLoc classes.
-  bool WalkUpFromTypeLoc(TypeLoc TL) { return getDerived().VisitTypeLoc(TL); }
-  bool VisitTypeLoc(TypeLoc TL) { return true; }
-
-  // QualifiedTypeLoc and UnqualTypeLoc are not declared in
-  // TypeNodes.def and thus need to be handled specially.
-  bool WalkUpFromQualifiedTypeLoc(QualifiedTypeLoc TL) {
-    return getDerived().VisitUnqualTypeLoc(TL.getUnqualifiedLoc());
-  }
-  bool VisitQualifiedTypeLoc(QualifiedTypeLoc TL) { return true; }
-  bool WalkUpFromUnqualTypeLoc(UnqualTypeLoc TL) {
-    return getDerived().VisitUnqualTypeLoc(TL.getUnqualifiedLoc());
-  }
-  bool VisitUnqualTypeLoc(UnqualTypeLoc TL) { return true; }
-
-  // Note that BASE includes trailing 'Type' which CLASS doesn't.
-#define TYPE(CLASS, BASE)                                       \
-  bool WalkUpFrom##CLASS##TypeLoc(CLASS##TypeLoc TL) {          \
-    TRY_TO(WalkUpFrom##BASE##Loc(TL));                          \
-    TRY_TO(Visit##CLASS##TypeLoc(TL));                          \
-    return true;                                                \
-  }                                                             \
-  bool Visit##CLASS##TypeLoc(CLASS##TypeLoc TL) { return true; }
-#include "clang/AST/TypeNodes.def"
-
-  // ---- Methods on Decls ----
-
-  // Declare Traverse*() for all concrete Decl classes.
-#define ABSTRACT_DECL(DECL)
-#define DECL(CLASS, BASE) \
-  bool Traverse##CLASS##Decl(CLASS##Decl *D);
-#include "clang/AST/DeclNodes.inc"
-  // The above header #undefs ABSTRACT_DECL and DECL upon exit.
-
-  // Define WalkUpFrom*() and empty Visit*() for all Decl classes.
-  bool WalkUpFromDecl(Decl *D) { return getDerived().VisitDecl(D); }
-  bool VisitDecl(Decl *D) { return true; }
-#define DECL(CLASS, BASE)                                       \
-  bool WalkUpFrom##CLASS##Decl(CLASS##Decl *D) {                \
-    TRY_TO(WalkUpFrom##BASE(D));                                \
-    TRY_TO(Visit##CLASS##Decl(D));                              \
-    return true;                                                \
-  }                                                             \
-  bool Visit##CLASS##Decl(CLASS##Decl *D) { return true; }
-#include "clang/AST/DeclNodes.inc"
-
-private:
-  // These are helper methods used by more than one Traverse* method.
-  bool TraverseTemplateParameterListHelper(TemplateParameterList *TPL);
-  bool TraverseClassInstantiations(ClassTemplateDecl *D);
-  bool TraverseFunctionInstantiations(FunctionTemplateDecl *D) ;
-  bool TraverseTemplateArgumentLocsHelper(const TemplateArgumentLoc *TAL,
-                                          unsigned Count);
-  bool TraverseArrayTypeLocHelper(ArrayTypeLoc TL);
-  bool TraverseRecordHelper(RecordDecl *D);
-  bool TraverseCXXRecordHelper(CXXRecordDecl *D);
-  bool TraverseDeclaratorHelper(DeclaratorDecl *D);
-  bool TraverseDeclContextHelper(DeclContext *DC);
-  bool TraverseFunctionHelper(FunctionDecl *D);
-  bool TraverseVarHelper(VarDecl *D);
-
-  typedef SmallVector<Stmt *, 16> StmtsTy;
-  typedef SmallVector<StmtsTy *, 4> QueuesTy;
-  
-  QueuesTy Queues;
-
-  class NewQueueRAII {
-    RecursiveASTVisitor &RAV;
-  public:
-    NewQueueRAII(StmtsTy &queue, RecursiveASTVisitor &RAV) : RAV(RAV) {
-      RAV.Queues.push_back(&queue);
-    }
-    ~NewQueueRAII() {
-      RAV.Queues.pop_back();
-    }
-  };
-
-  StmtsTy &getCurrentQueue() {
-    assert(!Queues.empty() && "base TraverseStmt was never called?");
-    return *Queues.back();
-  }
-
-public:
-  class StmtQueueAction {
-    StmtsTy &CurrQueue;
-  public:
-    explicit StmtQueueAction(RecursiveASTVisitor &RAV)
-      : CurrQueue(RAV.getCurrentQueue()) { }
-
-    void queue(Stmt *S) {
-      CurrQueue.push_back(S);
-    }
-  };
-};
-
-#define DISPATCH(NAME, CLASS, VAR) \
-  return getDerived().Traverse##NAME(static_cast<CLASS*>(VAR))
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseStmt(Stmt *S) {
-  if (!S)
-    return true;
-
-  StmtsTy Queue, StmtsToEnqueu;
-  Queue.push_back(S);
-  NewQueueRAII NQ(StmtsToEnqueu, *this);
-
-  while (!Queue.empty()) {
-    S = Queue.pop_back_val();
-    if (!S)
-      continue;
-
-    StmtsToEnqueu.clear();
-
-#define DISPATCH_STMT(NAME, CLASS, VAR) \
-    TRY_TO(Traverse##NAME(static_cast<CLASS*>(VAR))); break
-
-    // If we have a binary expr, dispatch to the subcode of the binop.  A smart
-    // optimizer (e.g. LLVM) will fold this comparison into the switch stmt
-    // below.
-    if (BinaryOperator *BinOp = dyn_cast<BinaryOperator>(S)) {
-      switch (BinOp->getOpcode()) {
-#define OPERATOR(NAME) \
-      case BO_##NAME: DISPATCH_STMT(Bin##NAME, BinaryOperator, S);
-  
-      BINOP_LIST()
-#undef OPERATOR
-#undef BINOP_LIST
-  
-#define OPERATOR(NAME)                                          \
-      case BO_##NAME##Assign:                          \
-        DISPATCH_STMT(Bin##NAME##Assign, CompoundAssignOperator, S);
-  
-      CAO_LIST()
-#undef OPERATOR
-#undef CAO_LIST
-      }
-    } else if (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(S)) {
-      switch (UnOp->getOpcode()) {
-#define OPERATOR(NAME)                                                  \
-      case UO_##NAME: DISPATCH_STMT(Unary##NAME, UnaryOperator, S);
-  
-      UNARYOP_LIST()
-#undef OPERATOR
-#undef UNARYOP_LIST
-      }
-    } else {
-  
-      // Top switch stmt: dispatch to TraverseFooStmt for each concrete FooStmt.
-      switch (S->getStmtClass()) {
-      case Stmt::NoStmtClass: break;
-#define ABSTRACT_STMT(STMT)
-#define STMT(CLASS, PARENT) \
-      case Stmt::CLASS##Class: DISPATCH_STMT(CLASS, CLASS, S);
-#include "clang/AST/StmtNodes.inc"
-      }
-    }
-
-    for (SmallVector<Stmt *, 8>::reverse_iterator
-           RI = StmtsToEnqueu.rbegin(),
-           RE = StmtsToEnqueu.rend(); RI != RE; ++RI)
-      Queue.push_back(*RI);
-  }
-
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseType(QualType T) {
-  if (T.isNull())
-    return true;
-
-  switch (T->getTypeClass()) {
-#define ABSTRACT_TYPE(CLASS, BASE)
-#define TYPE(CLASS, BASE) \
-  case Type::CLASS: DISPATCH(CLASS##Type, CLASS##Type, \
-                             const_cast<Type*>(T.getTypePtr()));
-#include "clang/AST/TypeNodes.def"
-  }
-
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseTypeLoc(TypeLoc TL) {
-  if (TL.isNull())
-    return true;
-
-  switch (TL.getTypeLocClass()) {
-#define ABSTRACT_TYPELOC(CLASS, BASE)
-#define TYPELOC(CLASS, BASE) \
-  case TypeLoc::CLASS: \
-    return getDerived().Traverse##CLASS##TypeLoc(TL.castAs<CLASS##TypeLoc>());
-#include "clang/AST/TypeLocNodes.def"
-  }
-
-  return true;
-}
-
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseDecl(Decl *D) {
-  if (!D)
-    return true;
-
-  // As a syntax visitor, we want to ignore declarations for
-  // implicitly-defined declarations (ones not typed explicitly by the
-  // user).
-  if (D->isImplicit())
-    return true;
-
-  switch (D->getKind()) {
-#define ABSTRACT_DECL(DECL)
-#define DECL(CLASS, BASE) \
-  case Decl::CLASS: DISPATCH(CLASS##Decl, CLASS##Decl, D);
-#include "clang/AST/DeclNodes.inc"
- }
-
-  return true;
-}
-
-#undef DISPATCH
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseNestedNameSpecifier(
-                                                    NestedNameSpecifier *NNS) {
-  if (!NNS)
-    return true;
-
-  if (NNS->getPrefix())
-    TRY_TO(TraverseNestedNameSpecifier(NNS->getPrefix()));
-
-  switch (NNS->getKind()) {
-  case NestedNameSpecifier::Identifier:
-  case NestedNameSpecifier::Namespace:
-  case NestedNameSpecifier::NamespaceAlias:
-  case NestedNameSpecifier::Global:
-    return true;
-
-  case NestedNameSpecifier::TypeSpec:
-  case NestedNameSpecifier::TypeSpecWithTemplate:
-    TRY_TO(TraverseType(QualType(NNS->getAsType(), 0)));
-  }
-
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseNestedNameSpecifierLoc(
-                                                  NestedNameSpecifierLoc NNS) {
-  if (!NNS)
-    return true;
-
-   if (NestedNameSpecifierLoc Prefix = NNS.getPrefix())
-     TRY_TO(TraverseNestedNameSpecifierLoc(Prefix));
-
-  switch (NNS.getNestedNameSpecifier()->getKind()) {
-  case NestedNameSpecifier::Identifier:
-  case NestedNameSpecifier::Namespace:
-  case NestedNameSpecifier::NamespaceAlias:
-  case NestedNameSpecifier::Global:
-    return true;
-
-  case NestedNameSpecifier::TypeSpec:
-  case NestedNameSpecifier::TypeSpecWithTemplate:
-    TRY_TO(TraverseTypeLoc(NNS.getTypeLoc()));
-    break;
-  }
-
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseDeclarationNameInfo(
-                                                 DeclarationNameInfo NameInfo) {
-  switch (NameInfo.getName().getNameKind()) {
-  case DeclarationName::CXXConstructorName:
-  case DeclarationName::CXXDestructorName:
-  case DeclarationName::CXXConversionFunctionName:
-    if (TypeSourceInfo *TSInfo = NameInfo.getNamedTypeInfo())
-      TRY_TO(TraverseTypeLoc(TSInfo->getTypeLoc()));
-
-    break;
-
-  case DeclarationName::Identifier:
-  case DeclarationName::ObjCZeroArgSelector:
-  case DeclarationName::ObjCOneArgSelector:
-  case DeclarationName::ObjCMultiArgSelector:
-  case DeclarationName::CXXOperatorName:
-  case DeclarationName::CXXLiteralOperatorName:
-  case DeclarationName::CXXUsingDirective:
-    break;
-  }
-
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseTemplateName(TemplateName Template) {
-  if (DependentTemplateName *DTN = Template.getAsDependentTemplateName())
-    TRY_TO(TraverseNestedNameSpecifier(DTN->getQualifier()));
-  else if (QualifiedTemplateName *QTN = Template.getAsQualifiedTemplateName())
-    TRY_TO(TraverseNestedNameSpecifier(QTN->getQualifier()));
-
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseTemplateArgument(
-                                                const TemplateArgument &Arg) {
-  switch (Arg.getKind()) {
-  case TemplateArgument::Null:
-  case TemplateArgument::Declaration:
-  case TemplateArgument::Integral:
-  case TemplateArgument::NullPtr:
-    return true;
-
-  case TemplateArgument::Type:
-    return getDerived().TraverseType(Arg.getAsType());
-
-  case TemplateArgument::Template:
-  case TemplateArgument::TemplateExpansion:
-    return getDerived().TraverseTemplateName(
-                                          Arg.getAsTemplateOrTemplatePattern());
-
-  case TemplateArgument::Expression:
-    return getDerived().TraverseStmt(Arg.getAsExpr());
-
-  case TemplateArgument::Pack:
-    return getDerived().TraverseTemplateArguments(Arg.pack_begin(),
-                                                  Arg.pack_size());
-  }
-
-  return true;
-}
-
-// FIXME: no template name location?
-// FIXME: no source locations for a template argument pack?
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseTemplateArgumentLoc(
-                                           const TemplateArgumentLoc &ArgLoc) {
-  const TemplateArgument &Arg = ArgLoc.getArgument();
-
-  switch (Arg.getKind()) {
-  case TemplateArgument::Null:
-  case TemplateArgument::Declaration:
-  case TemplateArgument::Integral:
-  case TemplateArgument::NullPtr:
-    return true;
-
-  case TemplateArgument::Type: {
-    // FIXME: how can TSI ever be NULL?
-    if (TypeSourceInfo *TSI = ArgLoc.getTypeSourceInfo())
-      return getDerived().TraverseTypeLoc(TSI->getTypeLoc());
-    else
-      return getDerived().TraverseType(Arg.getAsType());
-  }
-
-  case TemplateArgument::Template:
-  case TemplateArgument::TemplateExpansion:
-    if (ArgLoc.getTemplateQualifierLoc())
-      TRY_TO(getDerived().TraverseNestedNameSpecifierLoc(
-                                            ArgLoc.getTemplateQualifierLoc()));
-    return getDerived().TraverseTemplateName(
-                                         Arg.getAsTemplateOrTemplatePattern());
-
-  case TemplateArgument::Expression:
-    return getDerived().TraverseStmt(ArgLoc.getSourceExpression());
-
-  case TemplateArgument::Pack:
-    return getDerived().TraverseTemplateArguments(Arg.pack_begin(),
-                                                  Arg.pack_size());
-  }
-
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseTemplateArguments(
-                                                  const TemplateArgument *Args,
-                                                            unsigned NumArgs) {
-  for (unsigned I = 0; I != NumArgs; ++I) {
-    TRY_TO(TraverseTemplateArgument(Args[I]));
-  }
-
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseConstructorInitializer(
-                                                     CXXCtorInitializer *Init) {
-  if (TypeSourceInfo *TInfo = Init->getTypeSourceInfo())
-    TRY_TO(TraverseTypeLoc(TInfo->getTypeLoc()));
-
-  if (Init->isWritten())
-    TRY_TO(TraverseStmt(Init->getInit()));
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseLambdaCapture(LambdaExpr::Capture C){
-  return true;
-}
-
-// ----------------- Type traversal -----------------
-
-// This macro makes available a variable T, the passed-in type.
-#define DEF_TRAVERSE_TYPE(TYPE, CODE)                     \
-  template<typename Derived>                                           \
-  bool RecursiveASTVisitor<Derived>::Traverse##TYPE (TYPE *T) {        \
-    TRY_TO(WalkUpFrom##TYPE (T));                                      \
-    { CODE; }                                                          \
-    return true;                                                       \
-  }
-
-DEF_TRAVERSE_TYPE(BuiltinType, { })
-
-DEF_TRAVERSE_TYPE(ComplexType, {
-    TRY_TO(TraverseType(T->getElementType()));
-  })
-
-DEF_TRAVERSE_TYPE(PointerType, {
-    TRY_TO(TraverseType(T->getPointeeType()));
-  })
-
-DEF_TRAVERSE_TYPE(BlockPointerType, {
-    TRY_TO(TraverseType(T->getPointeeType()));
-  })
-
-DEF_TRAVERSE_TYPE(LValueReferenceType, {
-    TRY_TO(TraverseType(T->getPointeeType()));
-  })
-
-DEF_TRAVERSE_TYPE(RValueReferenceType, {
-    TRY_TO(TraverseType(T->getPointeeType()));
-  })
-
-DEF_TRAVERSE_TYPE(MemberPointerType, {
-    TRY_TO(TraverseType(QualType(T->getClass(), 0)));
-    TRY_TO(TraverseType(T->getPointeeType()));
-  })
-
-DEF_TRAVERSE_TYPE(ConstantArrayType, {
-    TRY_TO(TraverseType(T->getElementType()));
-  })
-
-DEF_TRAVERSE_TYPE(IncompleteArrayType, {
-    TRY_TO(TraverseType(T->getElementType()));
-  })
-
-DEF_TRAVERSE_TYPE(VariableArrayType, {
-    TRY_TO(TraverseType(T->getElementType()));
-    TRY_TO(TraverseStmt(T->getSizeExpr()));
-  })
-
-DEF_TRAVERSE_TYPE(DependentSizedArrayType, {
-    TRY_TO(TraverseType(T->getElementType()));
-    if (T->getSizeExpr())
-      TRY_TO(TraverseStmt(T->getSizeExpr()));
-  })
-
-DEF_TRAVERSE_TYPE(DependentSizedExtVectorType, {
-    if (T->getSizeExpr())
-      TRY_TO(TraverseStmt(T->getSizeExpr()));
-    TRY_TO(TraverseType(T->getElementType()));
-  })
-
-DEF_TRAVERSE_TYPE(VectorType, {
-    TRY_TO(TraverseType(T->getElementType()));
-  })
-
-DEF_TRAVERSE_TYPE(ExtVectorType, {
-    TRY_TO(TraverseType(T->getElementType()));
-  })
-
-DEF_TRAVERSE_TYPE(FunctionNoProtoType, {
-    TRY_TO(TraverseType(T->getResultType()));
-  })
-
-DEF_TRAVERSE_TYPE(FunctionProtoType, {
-    TRY_TO(TraverseType(T->getResultType()));
-
-    for (FunctionProtoType::arg_type_iterator A = T->arg_type_begin(),
-                                           AEnd = T->arg_type_end();
-         A != AEnd; ++A) {
-      TRY_TO(TraverseType(*A));
-    }
-
-    for (FunctionProtoType::exception_iterator E = T->exception_begin(),
-                                            EEnd = T->exception_end();
-         E != EEnd; ++E) {
-      TRY_TO(TraverseType(*E));
-    }
-  })
-
-DEF_TRAVERSE_TYPE(UnresolvedUsingType, { })
-DEF_TRAVERSE_TYPE(TypedefType, { })
-
-DEF_TRAVERSE_TYPE(TypeOfExprType, {
-    TRY_TO(TraverseStmt(T->getUnderlyingExpr()));
-  })
-
-DEF_TRAVERSE_TYPE(TypeOfType, {
-    TRY_TO(TraverseType(T->getUnderlyingType()));
-  })
-
-DEF_TRAVERSE_TYPE(DecltypeType, {
-    TRY_TO(TraverseStmt(T->getUnderlyingExpr()));
-  })
-
-DEF_TRAVERSE_TYPE(UnaryTransformType, {
-    TRY_TO(TraverseType(T->getBaseType()));
-    TRY_TO(TraverseType(T->getUnderlyingType()));
-    })
-
-DEF_TRAVERSE_TYPE(AutoType, {
-    TRY_TO(TraverseType(T->getDeducedType()));
-  })
-
-DEF_TRAVERSE_TYPE(RecordType, { })
-DEF_TRAVERSE_TYPE(EnumType, { })
-DEF_TRAVERSE_TYPE(TemplateTypeParmType, { })
-DEF_TRAVERSE_TYPE(SubstTemplateTypeParmType, { })
-DEF_TRAVERSE_TYPE(SubstTemplateTypeParmPackType, { })
-
-DEF_TRAVERSE_TYPE(TemplateSpecializationType, {
-    TRY_TO(TraverseTemplateName(T->getTemplateName()));
-    TRY_TO(TraverseTemplateArguments(T->getArgs(), T->getNumArgs()));
-  })
-
-DEF_TRAVERSE_TYPE(InjectedClassNameType, { })
-
-DEF_TRAVERSE_TYPE(AttributedType, {
-    TRY_TO(TraverseType(T->getModifiedType()));
-  })
-
-DEF_TRAVERSE_TYPE(ParenType, {
-    TRY_TO(TraverseType(T->getInnerType()));
-  })
-
-DEF_TRAVERSE_TYPE(ElaboratedType, {
-    if (T->getQualifier()) {
-      TRY_TO(TraverseNestedNameSpecifier(T->getQualifier()));
-    }
-    TRY_TO(TraverseType(T->getNamedType()));
-  })
-
-DEF_TRAVERSE_TYPE(DependentNameType, {
-    TRY_TO(TraverseNestedNameSpecifier(T->getQualifier()));
-  })
-
-DEF_TRAVERSE_TYPE(DependentTemplateSpecializationType, {
-    TRY_TO(TraverseNestedNameSpecifier(T->getQualifier()));
-    TRY_TO(TraverseTemplateArguments(T->getArgs(), T->getNumArgs()));
-  })
-
-DEF_TRAVERSE_TYPE(PackExpansionType, {
-    TRY_TO(TraverseType(T->getPattern()));
-  })
-
-DEF_TRAVERSE_TYPE(ObjCInterfaceType, { })
-
-DEF_TRAVERSE_TYPE(ObjCObjectType, {
-    // We have to watch out here because an ObjCInterfaceType's base
-    // type is itself.
-    if (T->getBaseType().getTypePtr() != T)
-      TRY_TO(TraverseType(T->getBaseType()));
-  })
-
-DEF_TRAVERSE_TYPE(ObjCObjectPointerType, {
-    TRY_TO(TraverseType(T->getPointeeType()));
-  })
-
-DEF_TRAVERSE_TYPE(AtomicType, {
-    TRY_TO(TraverseType(T->getValueType()));
-  })
-
-#undef DEF_TRAVERSE_TYPE
-
-// ----------------- TypeLoc traversal -----------------
-
-// This macro makes available a variable TL, the passed-in TypeLoc.
-// If requested, it calls WalkUpFrom* for the Type in the given TypeLoc,
-// in addition to WalkUpFrom* for the TypeLoc itself, such that existing
-// clients that override the WalkUpFrom*Type() and/or Visit*Type() methods
-// continue to work.
-#define DEF_TRAVERSE_TYPELOC(TYPE, CODE)                                \
-  template<typename Derived>                                            \
-  bool RecursiveASTVisitor<Derived>::Traverse##TYPE##Loc(TYPE##Loc TL) { \
-    if (getDerived().shouldWalkTypesOfTypeLocs())                       \
-      TRY_TO(WalkUpFrom##TYPE(const_cast<TYPE*>(TL.getTypePtr())));     \
-    TRY_TO(WalkUpFrom##TYPE##Loc(TL));                                  \
-    { CODE; }                                                           \
-    return true;                                                        \
-  }
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseQualifiedTypeLoc(
-    QualifiedTypeLoc TL) {
-  // Move this over to the 'main' typeloc tree.  Note that this is a
-  // move -- we pretend that we were really looking at the unqualified
-  // typeloc all along -- rather than a recursion, so we don't follow
-  // the normal CRTP plan of going through
-  // getDerived().TraverseTypeLoc.  If we did, we'd be traversing
-  // twice for the same type (once as a QualifiedTypeLoc version of
-  // the type, once as an UnqualifiedTypeLoc version of the type),
-  // which in effect means we'd call VisitTypeLoc twice with the
-  // 'same' type.  This solves that problem, at the cost of never
-  // seeing the qualified version of the type (unless the client
-  // subclasses TraverseQualifiedTypeLoc themselves).  It's not a
-  // perfect solution.  A perfect solution probably requires making
-  // QualifiedTypeLoc a wrapper around TypeLoc -- like QualType is a
-  // wrapper around Type* -- rather than being its own class in the
-  // type hierarchy.
-  return TraverseTypeLoc(TL.getUnqualifiedLoc());
-}
-
-DEF_TRAVERSE_TYPELOC(BuiltinType, { })
-
-// FIXME: ComplexTypeLoc is unfinished
-DEF_TRAVERSE_TYPELOC(ComplexType, {
-    TRY_TO(TraverseType(TL.getTypePtr()->getElementType()));
-  })
-
-DEF_TRAVERSE_TYPELOC(PointerType, {
-    TRY_TO(TraverseTypeLoc(TL.getPointeeLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(BlockPointerType, {
-    TRY_TO(TraverseTypeLoc(TL.getPointeeLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(LValueReferenceType, {
-    TRY_TO(TraverseTypeLoc(TL.getPointeeLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(RValueReferenceType, {
-    TRY_TO(TraverseTypeLoc(TL.getPointeeLoc()));
-  })
-
-// FIXME: location of base class?
-// We traverse this in the type case as well, but how is it not reached through
-// the pointee type?
-DEF_TRAVERSE_TYPELOC(MemberPointerType, {
-    TRY_TO(TraverseType(QualType(TL.getTypePtr()->getClass(), 0)));
-    TRY_TO(TraverseTypeLoc(TL.getPointeeLoc()));
-  })
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseArrayTypeLocHelper(ArrayTypeLoc TL) {
-  // This isn't available for ArrayType, but is for the ArrayTypeLoc.
-  TRY_TO(TraverseStmt(TL.getSizeExpr()));
-  return true;
-}
-
-DEF_TRAVERSE_TYPELOC(ConstantArrayType, {
-    TRY_TO(TraverseTypeLoc(TL.getElementLoc()));
-    return TraverseArrayTypeLocHelper(TL);
-  })
-
-DEF_TRAVERSE_TYPELOC(IncompleteArrayType, {
-    TRY_TO(TraverseTypeLoc(TL.getElementLoc()));
-    return TraverseArrayTypeLocHelper(TL);
-  })
-
-DEF_TRAVERSE_TYPELOC(VariableArrayType, {
-    TRY_TO(TraverseTypeLoc(TL.getElementLoc()));
-    return TraverseArrayTypeLocHelper(TL);
-  })
-
-DEF_TRAVERSE_TYPELOC(DependentSizedArrayType, {
-    TRY_TO(TraverseTypeLoc(TL.getElementLoc()));
-    return TraverseArrayTypeLocHelper(TL);
-  })
-
-// FIXME: order? why not size expr first?
-// FIXME: base VectorTypeLoc is unfinished
-DEF_TRAVERSE_TYPELOC(DependentSizedExtVectorType, {
-    if (TL.getTypePtr()->getSizeExpr())
-      TRY_TO(TraverseStmt(TL.getTypePtr()->getSizeExpr()));
-    TRY_TO(TraverseType(TL.getTypePtr()->getElementType()));
-  })
-
-// FIXME: VectorTypeLoc is unfinished
-DEF_TRAVERSE_TYPELOC(VectorType, {
-    TRY_TO(TraverseType(TL.getTypePtr()->getElementType()));
-  })
-
-// FIXME: size and attributes
-// FIXME: base VectorTypeLoc is unfinished
-DEF_TRAVERSE_TYPELOC(ExtVectorType, {
-    TRY_TO(TraverseType(TL.getTypePtr()->getElementType()));
-  })
-
-DEF_TRAVERSE_TYPELOC(FunctionNoProtoType, {
-    TRY_TO(TraverseTypeLoc(TL.getResultLoc()));
-  })
-
-// FIXME: location of exception specifications (attributes?)
-DEF_TRAVERSE_TYPELOC(FunctionProtoType, {
-    TRY_TO(TraverseTypeLoc(TL.getResultLoc()));
-
-    const FunctionProtoType *T = TL.getTypePtr();
-
-    for (unsigned I = 0, E = TL.getNumArgs(); I != E; ++I) {
-      if (TL.getArg(I)) {
-        TRY_TO(TraverseDecl(TL.getArg(I)));
-      } else if (I < T->getNumArgs()) {
-        TRY_TO(TraverseType(T->getArgType(I)));
-      }
-    }
-
-    for (FunctionProtoType::exception_iterator E = T->exception_begin(),
-                                            EEnd = T->exception_end();
-         E != EEnd; ++E) {
-      TRY_TO(TraverseType(*E));
-    }
-  })
-
-DEF_TRAVERSE_TYPELOC(UnresolvedUsingType, { })
-DEF_TRAVERSE_TYPELOC(TypedefType, { })
-
-DEF_TRAVERSE_TYPELOC(TypeOfExprType, {
-    TRY_TO(TraverseStmt(TL.getUnderlyingExpr()));
-  })
-
-DEF_TRAVERSE_TYPELOC(TypeOfType, {
-    TRY_TO(TraverseTypeLoc(TL.getUnderlyingTInfo()->getTypeLoc()));
-  })
-
-// FIXME: location of underlying expr
-DEF_TRAVERSE_TYPELOC(DecltypeType, {
-    TRY_TO(TraverseStmt(TL.getTypePtr()->getUnderlyingExpr()));
-  })
-
-DEF_TRAVERSE_TYPELOC(UnaryTransformType, {
-    TRY_TO(TraverseTypeLoc(TL.getUnderlyingTInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(AutoType, {
-    TRY_TO(TraverseType(TL.getTypePtr()->getDeducedType()));
-  })
-
-DEF_TRAVERSE_TYPELOC(RecordType, { })
-DEF_TRAVERSE_TYPELOC(EnumType, { })
-DEF_TRAVERSE_TYPELOC(TemplateTypeParmType, { })
-DEF_TRAVERSE_TYPELOC(SubstTemplateTypeParmType, { })
-DEF_TRAVERSE_TYPELOC(SubstTemplateTypeParmPackType, { })
-
-// FIXME: use the loc for the template name?
-DEF_TRAVERSE_TYPELOC(TemplateSpecializationType, {
-    TRY_TO(TraverseTemplateName(TL.getTypePtr()->getTemplateName()));
-    for (unsigned I = 0, E = TL.getNumArgs(); I != E; ++I) {
-      TRY_TO(TraverseTemplateArgumentLoc(TL.getArgLoc(I)));
-    }
-  })
-
-DEF_TRAVERSE_TYPELOC(InjectedClassNameType, { })
-
-DEF_TRAVERSE_TYPELOC(ParenType, {
-    TRY_TO(TraverseTypeLoc(TL.getInnerLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(AttributedType, {
-    TRY_TO(TraverseTypeLoc(TL.getModifiedLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(ElaboratedType, {
-    if (TL.getQualifierLoc()) {
-      TRY_TO(TraverseNestedNameSpecifierLoc(TL.getQualifierLoc()));
-    }
-    TRY_TO(TraverseTypeLoc(TL.getNamedTypeLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(DependentNameType, {
-    TRY_TO(TraverseNestedNameSpecifierLoc(TL.getQualifierLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(DependentTemplateSpecializationType, {
-    if (TL.getQualifierLoc()) {
-      TRY_TO(TraverseNestedNameSpecifierLoc(TL.getQualifierLoc()));
-    }
-
-    for (unsigned I = 0, E = TL.getNumArgs(); I != E; ++I) {
-      TRY_TO(TraverseTemplateArgumentLoc(TL.getArgLoc(I)));
-    }
-  })
-
-DEF_TRAVERSE_TYPELOC(PackExpansionType, {
-    TRY_TO(TraverseTypeLoc(TL.getPatternLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(ObjCInterfaceType, { })
-
-DEF_TRAVERSE_TYPELOC(ObjCObjectType, {
-    // We have to watch out here because an ObjCInterfaceType's base
-    // type is itself.
-    if (TL.getTypePtr()->getBaseType().getTypePtr() != TL.getTypePtr())
-      TRY_TO(TraverseTypeLoc(TL.getBaseLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(ObjCObjectPointerType, {
-    TRY_TO(TraverseTypeLoc(TL.getPointeeLoc()));
-  })
-
-DEF_TRAVERSE_TYPELOC(AtomicType, {
-    TRY_TO(TraverseTypeLoc(TL.getValueLoc()));
-  })
-
-#undef DEF_TRAVERSE_TYPELOC
-
-// ----------------- Decl traversal -----------------
-//
-// For a Decl, we automate (in the DEF_TRAVERSE_DECL macro) traversing
-// the children that come from the DeclContext associated with it.
-// Therefore each Traverse* only needs to worry about children other
-// than those.
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseDeclContextHelper(DeclContext *DC) {
-  if (!DC)
-    return true;
-
-  for (DeclContext::decl_iterator Child = DC->decls_begin(),
-           ChildEnd = DC->decls_end();
-       Child != ChildEnd; ++Child) {
-    // BlockDecls and CapturedDecls are traversed through BlockExprs and
-    // CapturedStmts respectively.
-    if (!isa<BlockDecl>(*Child) && !isa<CapturedDecl>(*Child))
-      TRY_TO(TraverseDecl(*Child));
-  }
-
-  return true;
-}
-
-// This macro makes available a variable D, the passed-in decl.
-#define DEF_TRAVERSE_DECL(DECL, CODE)                           \
-template<typename Derived>                                      \
-bool RecursiveASTVisitor<Derived>::Traverse##DECL (DECL *D) {   \
-  TRY_TO(WalkUpFrom##DECL (D));                                 \
-  { CODE; }                                                     \
-  TRY_TO(TraverseDeclContextHelper(dyn_cast<DeclContext>(D)));  \
-  return true;                                                  \
-}
-
-DEF_TRAVERSE_DECL(AccessSpecDecl, { })
-
-DEF_TRAVERSE_DECL(BlockDecl, {
-    if (TypeSourceInfo *TInfo = D->getSignatureAsWritten())
-      TRY_TO(TraverseTypeLoc(TInfo->getTypeLoc()));
-    TRY_TO(TraverseStmt(D->getBody()));
-    // This return statement makes sure the traversal of nodes in
-    // decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL macro)
-    // is skipped - don't remove it.
-    return true;
-  })
-
-DEF_TRAVERSE_DECL(CapturedDecl, {
-    TRY_TO(TraverseStmt(D->getBody()));
-    // This return statement makes sure the traversal of nodes in
-    // decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL macro)
-    // is skipped - don't remove it.
-    return true;
-  })
-
-DEF_TRAVERSE_DECL(EmptyDecl, { })
-
-DEF_TRAVERSE_DECL(FileScopeAsmDecl, {
-    TRY_TO(TraverseStmt(D->getAsmString()));
-  })
-
-DEF_TRAVERSE_DECL(ImportDecl, { })
-
-DEF_TRAVERSE_DECL(FriendDecl, {
-    // Friend is either decl or a type.
-    if (D->getFriendType())
-      TRY_TO(TraverseTypeLoc(D->getFriendType()->getTypeLoc()));
-    else
-      TRY_TO(TraverseDecl(D->getFriendDecl()));
-  })
-
-DEF_TRAVERSE_DECL(FriendTemplateDecl, {
-    if (D->getFriendType())
-      TRY_TO(TraverseTypeLoc(D->getFriendType()->getTypeLoc()));
-    else
-      TRY_TO(TraverseDecl(D->getFriendDecl()));
-    for (unsigned I = 0, E = D->getNumTemplateParameters(); I < E; ++I) {
-      TemplateParameterList *TPL = D->getTemplateParameterList(I);
-      for (TemplateParameterList::iterator ITPL = TPL->begin(),
-                                           ETPL = TPL->end();
-           ITPL != ETPL; ++ITPL) {
-        TRY_TO(TraverseDecl(*ITPL));
-      }
-    }
-  })
-
-DEF_TRAVERSE_DECL(ClassScopeFunctionSpecializationDecl, {
-  TRY_TO(TraverseDecl(D->getSpecialization()));
- })
-
-DEF_TRAVERSE_DECL(LinkageSpecDecl, { })
-
-DEF_TRAVERSE_DECL(ObjCPropertyImplDecl, {
-    // FIXME: implement this
-  })
-
-DEF_TRAVERSE_DECL(StaticAssertDecl, {
-    TRY_TO(TraverseStmt(D->getAssertExpr()));
-    TRY_TO(TraverseStmt(D->getMessage()));
-  })
-
-DEF_TRAVERSE_DECL(TranslationUnitDecl, {
-    // Code in an unnamed namespace shows up automatically in
-    // decls_begin()/decls_end().  Thus we don't need to recurse on
-    // D->getAnonymousNamespace().
-  })
-
-DEF_TRAVERSE_DECL(NamespaceAliasDecl, {
-    // We shouldn't traverse an aliased namespace, since it will be
-    // defined (and, therefore, traversed) somewhere else.
-    //
-    // This return statement makes sure the traversal of nodes in
-    // decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL macro)
-    // is skipped - don't remove it.
-    return true;
-  })
-
-DEF_TRAVERSE_DECL(LabelDecl, {
-  // There is no code in a LabelDecl.
-})
-
-
-DEF_TRAVERSE_DECL(NamespaceDecl, {
-    // Code in an unnamed namespace shows up automatically in
-    // decls_begin()/decls_end().  Thus we don't need to recurse on
-    // D->getAnonymousNamespace().
-  })
-
-DEF_TRAVERSE_DECL(ObjCCompatibleAliasDecl, {
-    // FIXME: implement
-  })
-
-DEF_TRAVERSE_DECL(ObjCCategoryDecl, {
-    // FIXME: implement
-  })
-
-DEF_TRAVERSE_DECL(ObjCCategoryImplDecl, {
-    // FIXME: implement
-  })
-
-DEF_TRAVERSE_DECL(ObjCImplementationDecl, {
-    // FIXME: implement
-  })
-
-DEF_TRAVERSE_DECL(ObjCInterfaceDecl, {
-    // FIXME: implement
-  })
-
-DEF_TRAVERSE_DECL(ObjCProtocolDecl, {
-    // FIXME: implement
-  })
-
-DEF_TRAVERSE_DECL(ObjCMethodDecl, {
-    if (D->getResultTypeSourceInfo()) {
-      TRY_TO(TraverseTypeLoc(D->getResultTypeSourceInfo()->getTypeLoc()));
-    }
-    for (ObjCMethodDecl::param_iterator
-           I = D->param_begin(), E = D->param_end(); I != E; ++I) {
-      TRY_TO(TraverseDecl(*I));
-    }
-    if (D->isThisDeclarationADefinition()) {
-      TRY_TO(TraverseStmt(D->getBody()));
-    }
-    return true;
-  })
-
-DEF_TRAVERSE_DECL(ObjCPropertyDecl, {
-    // FIXME: implement
-  })
-
-DEF_TRAVERSE_DECL(UsingDecl, {
-    TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
-    TRY_TO(TraverseDeclarationNameInfo(D->getNameInfo()));
-  })
-
-DEF_TRAVERSE_DECL(UsingDirectiveDecl, {
-    TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
-  })
-
-DEF_TRAVERSE_DECL(UsingShadowDecl, { })
-
-DEF_TRAVERSE_DECL(OMPThreadPrivateDecl, {
-    for (OMPThreadPrivateDecl::varlist_iterator I = D->varlist_begin(),
-                                                E = D->varlist_end();
-         I != E; ++I) {
-      TRY_TO(TraverseStmt(*I));
-    }
-  })
-
-// A helper method for TemplateDecl's children.
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseTemplateParameterListHelper(
-    TemplateParameterList *TPL) {
-  if (TPL) {
-    for (TemplateParameterList::iterator I = TPL->begin(), E = TPL->end();
-         I != E; ++I) {
-      TRY_TO(TraverseDecl(*I));
-    }
-  }
-  return true;
-}
-
-// A helper method for traversing the implicit instantiations of a
-// class template.
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseClassInstantiations(
-    ClassTemplateDecl *D) {
-  ClassTemplateDecl::spec_iterator end = D->spec_end();
-  for (ClassTemplateDecl::spec_iterator it = D->spec_begin(); it != end; ++it) {
-    ClassTemplateSpecializationDecl* SD = *it;
-
-    switch (SD->getSpecializationKind()) {
-    // Visit the implicit instantiations with the requested pattern.
-    case TSK_Undeclared:
-    case TSK_ImplicitInstantiation:
-      TRY_TO(TraverseDecl(SD));
-      break;
-
-    // We don't need to do anything on an explicit instantiation
-    // or explicit specialization because there will be an explicit
-    // node for it elsewhere.
-    case TSK_ExplicitInstantiationDeclaration:
-    case TSK_ExplicitInstantiationDefinition:
-    case TSK_ExplicitSpecialization:
-      break;
-    }
-  }
-
-  return true;
-}
-
-DEF_TRAVERSE_DECL(ClassTemplateDecl, {
-    CXXRecordDecl* TempDecl = D->getTemplatedDecl();
-    TRY_TO(TraverseDecl(TempDecl));
-    TRY_TO(TraverseTemplateParameterListHelper(D->getTemplateParameters()));
-
-    // By default, we do not traverse the instantiations of
-    // class templates since they do not appear in the user code. The
-    // following code optionally traverses them.
-    //
-    // We only traverse the class instantiations when we see the canonical
-    // declaration of the template, to ensure we only visit them once.
-    if (getDerived().shouldVisitTemplateInstantiations() &&
-        D == D->getCanonicalDecl())
-      TRY_TO(TraverseClassInstantiations(D));
-
-    // Note that getInstantiatedFromMemberTemplate() is just a link
-    // from a template instantiation back to the template from which
-    // it was instantiated, and thus should not be traversed.
-  })
-
-// A helper method for traversing the instantiations of a
-// function while skipping its specializations.
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseFunctionInstantiations(
-    FunctionTemplateDecl *D) {
-  FunctionTemplateDecl::spec_iterator end = D->spec_end();
-  for (FunctionTemplateDecl::spec_iterator it = D->spec_begin(); it != end;
-       ++it) {
-    FunctionDecl* FD = *it;
-    switch (FD->getTemplateSpecializationKind()) {
-    case TSK_Undeclared:
-    case TSK_ImplicitInstantiation:
-      // We don't know what kind of FunctionDecl this is.
-      TRY_TO(TraverseDecl(FD));
-      break;
-
-    // No need to visit explicit instantiations, we'll find the node
-    // eventually.
-    case TSK_ExplicitInstantiationDeclaration:
-    case TSK_ExplicitInstantiationDefinition:
-      break;
-
-    case TSK_ExplicitSpecialization:
-      break;
-    }
-  }
-
-  return true;
-}
-
-DEF_TRAVERSE_DECL(FunctionTemplateDecl, {
-    TRY_TO(TraverseDecl(D->getTemplatedDecl()));
-    TRY_TO(TraverseTemplateParameterListHelper(D->getTemplateParameters()));
-
-    // By default, we do not traverse the instantiations of
-    // function templates since they do not appear in the user code. The
-    // following code optionally traverses them.
-    //
-    // We only traverse the function instantiations when we see the canonical
-    // declaration of the template, to ensure we only visit them once.
-    if (getDerived().shouldVisitTemplateInstantiations() &&
-        D == D->getCanonicalDecl())
-      TRY_TO(TraverseFunctionInstantiations(D));
-  })
-
-DEF_TRAVERSE_DECL(TemplateTemplateParmDecl, {
-    // D is the "T" in something like
-    //   template <template <typename> class T> class container { };
-    TRY_TO(TraverseDecl(D->getTemplatedDecl()));
-    if (D->hasDefaultArgument()) {
-      TRY_TO(TraverseTemplateArgumentLoc(D->getDefaultArgument()));
-    }
-    TRY_TO(TraverseTemplateParameterListHelper(D->getTemplateParameters()));
-  })
-
-DEF_TRAVERSE_DECL(TemplateTypeParmDecl, {
-    // D is the "T" in something like "template<typename T> class vector;"
-    if (D->getTypeForDecl())
-      TRY_TO(TraverseType(QualType(D->getTypeForDecl(), 0)));
-    if (D->hasDefaultArgument())
-      TRY_TO(TraverseTypeLoc(D->getDefaultArgumentInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_DECL(TypedefDecl, {
-    TRY_TO(TraverseTypeLoc(D->getTypeSourceInfo()->getTypeLoc()));
-    // We shouldn't traverse D->getTypeForDecl(); it's a result of
-    // declaring the typedef, not something that was written in the
-    // source.
-  })
-
-DEF_TRAVERSE_DECL(TypeAliasDecl, {
-    TRY_TO(TraverseTypeLoc(D->getTypeSourceInfo()->getTypeLoc()));
-    // We shouldn't traverse D->getTypeForDecl(); it's a result of
-    // declaring the type alias, not something that was written in the
-    // source.
-  })
-
-DEF_TRAVERSE_DECL(TypeAliasTemplateDecl, {
-    TRY_TO(TraverseDecl(D->getTemplatedDecl()));
-    TRY_TO(TraverseTemplateParameterListHelper(D->getTemplateParameters()));
-  })
-
-DEF_TRAVERSE_DECL(UnresolvedUsingTypenameDecl, {
-    // A dependent using declaration which was marked with 'typename'.
-    //   template<class T> class A : public B<T> { using typename B<T>::foo; };
-    TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
-    // We shouldn't traverse D->getTypeForDecl(); it's a result of
-    // declaring the type, not something that was written in the
-    // source.
-  })
-
-DEF_TRAVERSE_DECL(EnumDecl, {
-    if (D->getTypeForDecl())
-      TRY_TO(TraverseType(QualType(D->getTypeForDecl(), 0)));
-
-    TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
-    // The enumerators are already traversed by
-    // decls_begin()/decls_end().
-  })
-
-
-// Helper methods for RecordDecl and its children.
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseRecordHelper(
-    RecordDecl *D) {
-  // We shouldn't traverse D->getTypeForDecl(); it's a result of
-  // declaring the type, not something that was written in the source.
-
-  TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
-  return true;
-}
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseCXXRecordHelper(
-    CXXRecordDecl *D) {
-  if (!TraverseRecordHelper(D))
-    return false;
-  if (D->isCompleteDefinition()) {
-    for (CXXRecordDecl::base_class_iterator I = D->bases_begin(),
-                                            E = D->bases_end();
-         I != E; ++I) {
-      TRY_TO(TraverseTypeLoc(I->getTypeSourceInfo()->getTypeLoc()));
-    }
-    // We don't traverse the friends or the conversions, as they are
-    // already in decls_begin()/decls_end().
-  }
-  return true;
-}
-
-DEF_TRAVERSE_DECL(RecordDecl, {
-    TRY_TO(TraverseRecordHelper(D));
-  })
-
-DEF_TRAVERSE_DECL(CXXRecordDecl, {
-    TRY_TO(TraverseCXXRecordHelper(D));
-  })
-
-DEF_TRAVERSE_DECL(ClassTemplateSpecializationDecl, {
-    // For implicit instantiations ("set<int> x;"), we don't want to
-    // recurse at all, since the instatiated class isn't written in
-    // the source code anywhere.  (Note the instatiated *type* --
-    // set<int> -- is written, and will still get a callback of
-    // TemplateSpecializationType).  For explicit instantiations
-    // ("template set<int>;"), we do need a callback, since this
-    // is the only callback that's made for this instantiation.
-    // We use getTypeAsWritten() to distinguish.
-    if (TypeSourceInfo *TSI = D->getTypeAsWritten())
-      TRY_TO(TraverseTypeLoc(TSI->getTypeLoc()));
-
-    if (!getDerived().shouldVisitTemplateInstantiations() &&
-        D->getTemplateSpecializationKind() != TSK_ExplicitSpecialization)
-      // Returning from here skips traversing the
-      // declaration context of the ClassTemplateSpecializationDecl
-      // (embedded in the DEF_TRAVERSE_DECL() macro)
-      // which contains the instantiated members of the class.
-      return true;
-  })
-
-template <typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseTemplateArgumentLocsHelper(
-    const TemplateArgumentLoc *TAL, unsigned Count) {
-  for (unsigned I = 0; I < Count; ++I) {
-    TRY_TO(TraverseTemplateArgumentLoc(TAL[I]));
-  }
-  return true;
-}
-
-DEF_TRAVERSE_DECL(ClassTemplatePartialSpecializationDecl, {
-    // The partial specialization.
-    if (TemplateParameterList *TPL = D->getTemplateParameters()) {
-      for (TemplateParameterList::iterator I = TPL->begin(), E = TPL->end();
-           I != E; ++I) {
-        TRY_TO(TraverseDecl(*I));
-      }
-    }
-    // The args that remains unspecialized.
-    TRY_TO(TraverseTemplateArgumentLocsHelper(
-        D->getTemplateArgsAsWritten(), D->getNumTemplateArgsAsWritten()));
-
-    // Don't need the ClassTemplatePartialSpecializationHelper, even
-    // though that's our parent class -- we already visit all the
-    // template args here.
-    TRY_TO(TraverseCXXRecordHelper(D));
-
-    // Instantiations will have been visited with the primary template.
-  })
-
-DEF_TRAVERSE_DECL(EnumConstantDecl, {
-    TRY_TO(TraverseStmt(D->getInitExpr()));
-  })
-
-DEF_TRAVERSE_DECL(UnresolvedUsingValueDecl, {
-    // Like UnresolvedUsingTypenameDecl, but without the 'typename':
-    //    template <class T> Class A : public Base<T> { using Base<T>::foo; };
-    TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
-    TRY_TO(TraverseDeclarationNameInfo(D->getNameInfo()));
-  })
-
-DEF_TRAVERSE_DECL(IndirectFieldDecl, {})
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseDeclaratorHelper(DeclaratorDecl *D) {
-  TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
-  if (D->getTypeSourceInfo())
-    TRY_TO(TraverseTypeLoc(D->getTypeSourceInfo()->getTypeLoc()));
-  else
-    TRY_TO(TraverseType(D->getType()));
-  return true;
-}
-
-DEF_TRAVERSE_DECL(FieldDecl, {
-    TRY_TO(TraverseDeclaratorHelper(D));
-    if (D->isBitField())
-      TRY_TO(TraverseStmt(D->getBitWidth()));
-    else if (D->hasInClassInitializer())
-      TRY_TO(TraverseStmt(D->getInClassInitializer()));
-  })
-
-DEF_TRAVERSE_DECL(MSPropertyDecl, {
-    TRY_TO(TraverseDeclaratorHelper(D));
-  })
-
-DEF_TRAVERSE_DECL(ObjCAtDefsFieldDecl, {
-    TRY_TO(TraverseDeclaratorHelper(D));
-    if (D->isBitField())
-      TRY_TO(TraverseStmt(D->getBitWidth()));
-    // FIXME: implement the rest.
-  })
-
-DEF_TRAVERSE_DECL(ObjCIvarDecl, {
-    TRY_TO(TraverseDeclaratorHelper(D));
-    if (D->isBitField())
-      TRY_TO(TraverseStmt(D->getBitWidth()));
-    // FIXME: implement the rest.
-  })
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseFunctionHelper(FunctionDecl *D) {
-  TRY_TO(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));
-  TRY_TO(TraverseDeclarationNameInfo(D->getNameInfo()));
-
-  // If we're an explicit template specialization, iterate over the
-  // template args that were explicitly specified.  If we were doing
-  // this in typing order, we'd do it between the return type and
-  // the function args, but both are handled by the FunctionTypeLoc
-  // above, so we have to choose one side.  I've decided to do before.
-  if (const FunctionTemplateSpecializationInfo *FTSI =
-      D->getTemplateSpecializationInfo()) {
-    if (FTSI->getTemplateSpecializationKind() != TSK_Undeclared &&
-        FTSI->getTemplateSpecializationKind() != TSK_ImplicitInstantiation) {
-      // A specialization might not have explicit template arguments if it has
-      // a templated return type and concrete arguments.
-      if (const ASTTemplateArgumentListInfo *TALI =
-          FTSI->TemplateArgumentsAsWritten) {
-        TRY_TO(TraverseTemplateArgumentLocsHelper(TALI->getTemplateArgs(),
-                                                  TALI->NumTemplateArgs));
-      }
-    }
-  }
-
-  // Visit the function type itself, which can be either
-  // FunctionNoProtoType or FunctionProtoType, or a typedef.  This
-  // also covers the return type and the function parameters,
-  // including exception specifications.
-  TRY_TO(TraverseTypeLoc(D->getTypeSourceInfo()->getTypeLoc()));
-
-  if (CXXConstructorDecl *Ctor = dyn_cast<CXXConstructorDecl>(D)) {
-    // Constructor initializers.
-    for (CXXConstructorDecl::init_iterator I = Ctor->init_begin(),
-                                           E = Ctor->init_end();
-         I != E; ++I) {
-      TRY_TO(TraverseConstructorInitializer(*I));
-    }
-  }
-
-  if (D->isThisDeclarationADefinition()) {
-    TRY_TO(TraverseStmt(D->getBody()));  // Function body.
-  }
-  return true;
-}
-
-DEF_TRAVERSE_DECL(FunctionDecl, {
-    // We skip decls_begin/decls_end, which are already covered by
-    // TraverseFunctionHelper().
-    return TraverseFunctionHelper(D);
-  })
-
-DEF_TRAVERSE_DECL(CXXMethodDecl, {
-    // We skip decls_begin/decls_end, which are already covered by
-    // TraverseFunctionHelper().
-    return TraverseFunctionHelper(D);
-  })
-
-DEF_TRAVERSE_DECL(CXXConstructorDecl, {
-    // We skip decls_begin/decls_end, which are already covered by
-    // TraverseFunctionHelper().
-    return TraverseFunctionHelper(D);
-  })
-
-// CXXConversionDecl is the declaration of a type conversion operator.
-// It's not a cast expression.
-DEF_TRAVERSE_DECL(CXXConversionDecl, {
-    // We skip decls_begin/decls_end, which are already covered by
-    // TraverseFunctionHelper().
-    return TraverseFunctionHelper(D);
-  })
-
-DEF_TRAVERSE_DECL(CXXDestructorDecl, {
-    // We skip decls_begin/decls_end, which are already covered by
-    // TraverseFunctionHelper().
-    return TraverseFunctionHelper(D);
-  })
-
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseVarHelper(VarDecl *D) {
-  TRY_TO(TraverseDeclaratorHelper(D));
-  // Default params are taken care of when we traverse the ParmVarDecl.
-  if (!isa<ParmVarDecl>(D))
-    TRY_TO(TraverseStmt(D->getInit()));
-  return true;
-}
-
-DEF_TRAVERSE_DECL(VarDecl, {
-    TRY_TO(TraverseVarHelper(D));
-  })
-
-DEF_TRAVERSE_DECL(ImplicitParamDecl, {
-    TRY_TO(TraverseVarHelper(D));
-  })
-
-DEF_TRAVERSE_DECL(NonTypeTemplateParmDecl, {
-    // A non-type template parameter, e.g. "S" in template<int S> class Foo ...
-    TRY_TO(TraverseDeclaratorHelper(D));
-    TRY_TO(TraverseStmt(D->getDefaultArgument()));
-  })
-
-DEF_TRAVERSE_DECL(ParmVarDecl, {
-    TRY_TO(TraverseVarHelper(D));
-
-    if (D->hasDefaultArg() &&
-        D->hasUninstantiatedDefaultArg() &&
-        !D->hasUnparsedDefaultArg())
-      TRY_TO(TraverseStmt(D->getUninstantiatedDefaultArg()));
-
-    if (D->hasDefaultArg() &&
-        !D->hasUninstantiatedDefaultArg() &&
-        !D->hasUnparsedDefaultArg())
-      TRY_TO(TraverseStmt(D->getDefaultArg()));
-  })
-
-#undef DEF_TRAVERSE_DECL
-
-// ----------------- Stmt traversal -----------------
-//
-// For stmts, we automate (in the DEF_TRAVERSE_STMT macro) iterating
-// over the children defined in children() (every stmt defines these,
-// though sometimes the range is empty).  Each individual Traverse*
-// method only needs to worry about children other than those.  To see
-// what children() does for a given class, see, e.g.,
-//   http://clang.llvm.org/doxygen/Stmt_8cpp_source.html
-
-// This macro makes available a variable S, the passed-in stmt.
-#define DEF_TRAVERSE_STMT(STMT, CODE)                                   \
-template<typename Derived>                                              \
-bool RecursiveASTVisitor<Derived>::Traverse##STMT (STMT *S) {           \
-  TRY_TO(WalkUpFrom##STMT(S));                                          \
-  StmtQueueAction StmtQueue(*this);                                     \
-  { CODE; }                                                             \
-  for (Stmt::child_range range = S->children(); range; ++range) {       \
-    StmtQueue.queue(*range);                                            \
-  }                                                                     \
-  return true;                                                          \
-}
-
-DEF_TRAVERSE_STMT(GCCAsmStmt, {
-    StmtQueue.queue(S->getAsmString());
-    for (unsigned I = 0, E = S->getNumInputs(); I < E; ++I) {
-      StmtQueue.queue(S->getInputConstraintLiteral(I));
-    }
-    for (unsigned I = 0, E = S->getNumOutputs(); I < E; ++I) {
-      StmtQueue.queue(S->getOutputConstraintLiteral(I));
-    }
-    for (unsigned I = 0, E = S->getNumClobbers(); I < E; ++I) {
-      StmtQueue.queue(S->getClobberStringLiteral(I));
-    }
-    // children() iterates over inputExpr and outputExpr.
-  })
-
-DEF_TRAVERSE_STMT(MSAsmStmt, {
-    // FIXME: MS Asm doesn't currently parse Constraints, Clobbers, etc.  Once
-    // added this needs to be implemented.
-  })
-
-DEF_TRAVERSE_STMT(CXXCatchStmt, {
-    TRY_TO(TraverseDecl(S->getExceptionDecl()));
-    // children() iterates over the handler block.
-  })
-
-DEF_TRAVERSE_STMT(DeclStmt, {
-    for (DeclStmt::decl_iterator I = S->decl_begin(), E = S->decl_end();
-         I != E; ++I) {
-      TRY_TO(TraverseDecl(*I));
-    }
-    // Suppress the default iteration over children() by
-    // returning.  Here's why: A DeclStmt looks like 'type var [=
-    // initializer]'.  The decls above already traverse over the
-    // initializers, so we don't have to do it again (which
-    // children() would do).
-    return true;
-  })
-
-
-// These non-expr stmts (most of them), do not need any action except
-// iterating over the children.
-DEF_TRAVERSE_STMT(BreakStmt, { })
-DEF_TRAVERSE_STMT(CXXTryStmt, { })
-DEF_TRAVERSE_STMT(CaseStmt, { })
-DEF_TRAVERSE_STMT(CompoundStmt, { })
-DEF_TRAVERSE_STMT(ContinueStmt, { })
-DEF_TRAVERSE_STMT(DefaultStmt, { })
-DEF_TRAVERSE_STMT(DoStmt, { })
-DEF_TRAVERSE_STMT(ForStmt, { })
-DEF_TRAVERSE_STMT(GotoStmt, { })
-DEF_TRAVERSE_STMT(IfStmt, { })
-DEF_TRAVERSE_STMT(IndirectGotoStmt, { })
-DEF_TRAVERSE_STMT(LabelStmt, { })
-DEF_TRAVERSE_STMT(AttributedStmt, { })
-DEF_TRAVERSE_STMT(NullStmt, { })
-DEF_TRAVERSE_STMT(ObjCAtCatchStmt, { })
-DEF_TRAVERSE_STMT(ObjCAtFinallyStmt, { })
-DEF_TRAVERSE_STMT(ObjCAtSynchronizedStmt, { })
-DEF_TRAVERSE_STMT(ObjCAtThrowStmt, { })
-DEF_TRAVERSE_STMT(ObjCAtTryStmt, { })
-DEF_TRAVERSE_STMT(ObjCForCollectionStmt, { })
-DEF_TRAVERSE_STMT(ObjCAutoreleasePoolStmt, { })
-DEF_TRAVERSE_STMT(CXXForRangeStmt, { })
-DEF_TRAVERSE_STMT(MSDependentExistsStmt, {
-    TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
-    TRY_TO(TraverseDeclarationNameInfo(S->getNameInfo()));
-})
-DEF_TRAVERSE_STMT(ReturnStmt, { })
-DEF_TRAVERSE_STMT(SwitchStmt, { })
-DEF_TRAVERSE_STMT(WhileStmt, { })
-
-DEF_TRAVERSE_STMT(CXXDependentScopeMemberExpr, {
-    TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
-    TRY_TO(TraverseDeclarationNameInfo(S->getMemberNameInfo()));
-    if (S->hasExplicitTemplateArgs()) {
-      TRY_TO(TraverseTemplateArgumentLocsHelper(
-          S->getTemplateArgs(), S->getNumTemplateArgs()));
-    }
-  })
-
-DEF_TRAVERSE_STMT(DeclRefExpr, {
-    TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
-    TRY_TO(TraverseDeclarationNameInfo(S->getNameInfo()));
-    TRY_TO(TraverseTemplateArgumentLocsHelper(
-        S->getTemplateArgs(), S->getNumTemplateArgs()));
-  })
-
-DEF_TRAVERSE_STMT(DependentScopeDeclRefExpr, {
-    TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
-    TRY_TO(TraverseDeclarationNameInfo(S->getNameInfo()));
-    if (S->hasExplicitTemplateArgs()) {
-      TRY_TO(TraverseTemplateArgumentLocsHelper(
-          S->getExplicitTemplateArgs().getTemplateArgs(),
-          S->getNumTemplateArgs()));
-    }
-  })
-
-DEF_TRAVERSE_STMT(MemberExpr, {
-    TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
-    TRY_TO(TraverseDeclarationNameInfo(S->getMemberNameInfo()));
-    TRY_TO(TraverseTemplateArgumentLocsHelper(
-        S->getTemplateArgs(), S->getNumTemplateArgs()));
-  })
-
-DEF_TRAVERSE_STMT(ImplicitCastExpr, {
-    // We don't traverse the cast type, as it's not written in the
-    // source code.
-  })
-
-DEF_TRAVERSE_STMT(CStyleCastExpr, {
-    TRY_TO(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXFunctionalCastExpr, {
-    TRY_TO(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXConstCastExpr, {
-    TRY_TO(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXDynamicCastExpr, {
-    TRY_TO(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXReinterpretCastExpr, {
-    TRY_TO(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXStaticCastExpr, {
-    TRY_TO(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));
-  })
-
-// InitListExpr is a tricky one, because we want to do all our work on
-// the syntactic form of the listexpr, but this method takes the
-// semantic form by default.  We can't use the macro helper because it
-// calls WalkUp*() on the semantic form, before our code can convert
-// to the syntactic form.
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseInitListExpr(InitListExpr *S) {
-  if (InitListExpr *Syn = S->getSyntacticForm())
-    S = Syn;
-  TRY_TO(WalkUpFromInitListExpr(S));
-  StmtQueueAction StmtQueue(*this);
-  // All we need are the default actions.  FIXME: use a helper function.
-  for (Stmt::child_range range = S->children(); range; ++range) {
-    StmtQueue.queue(*range);
-  }
-  return true;
-}
-
-// GenericSelectionExpr is a special case because the types and expressions
-// are interleaved.  We also need to watch out for null types (default
-// generic associations).
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::
-TraverseGenericSelectionExpr(GenericSelectionExpr *S) {
-  TRY_TO(WalkUpFromGenericSelectionExpr(S));
-  StmtQueueAction StmtQueue(*this);
-  StmtQueue.queue(S->getControllingExpr());
-  for (unsigned i = 0; i != S->getNumAssocs(); ++i) {
-    if (TypeSourceInfo *TS = S->getAssocTypeSourceInfo(i))
-      TRY_TO(TraverseTypeLoc(TS->getTypeLoc()));
-    StmtQueue.queue(S->getAssocExpr(i));
-  }
-  return true;
-}
-
-// PseudoObjectExpr is a special case because of the wierdness with
-// syntactic expressions and opaque values.
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::
-TraversePseudoObjectExpr(PseudoObjectExpr *S) {
-  TRY_TO(WalkUpFromPseudoObjectExpr(S));
-  StmtQueueAction StmtQueue(*this);
-  StmtQueue.queue(S->getSyntacticForm());
-  for (PseudoObjectExpr::semantics_iterator
-         i = S->semantics_begin(), e = S->semantics_end(); i != e; ++i) {
-    Expr *sub = *i;
-    if (OpaqueValueExpr *OVE = dyn_cast<OpaqueValueExpr>(sub))
-      sub = OVE->getSourceExpr();
-    StmtQueue.queue(sub);
-  }
-  return true;
-}
-
-DEF_TRAVERSE_STMT(CXXScalarValueInitExpr, {
-    // This is called for code like 'return T()' where T is a built-in
-    // (i.e. non-class) type.
-    TRY_TO(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXNewExpr, {
-  // The child-iterator will pick up the other arguments.
-  TRY_TO(TraverseTypeLoc(S->getAllocatedTypeSourceInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(OffsetOfExpr, {
-    // The child-iterator will pick up the expression representing
-    // the field.
-    // FIMXE: for code like offsetof(Foo, a.b.c), should we get
-    // making a MemberExpr callbacks for Foo.a, Foo.a.b, and Foo.a.b.c?
-    TRY_TO(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(UnaryExprOrTypeTraitExpr, {
-    // The child-iterator will pick up the arg if it's an expression,
-    // but not if it's a type.
-    if (S->isArgumentType())
-      TRY_TO(TraverseTypeLoc(S->getArgumentTypeInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXTypeidExpr, {
-    // The child-iterator will pick up the arg if it's an expression,
-    // but not if it's a type.
-    if (S->isTypeOperand())
-      TRY_TO(TraverseTypeLoc(S->getTypeOperandSourceInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXUuidofExpr, {
-    // The child-iterator will pick up the arg if it's an expression,
-    // but not if it's a type.
-    if (S->isTypeOperand())
-      TRY_TO(TraverseTypeLoc(S->getTypeOperandSourceInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(UnaryTypeTraitExpr, {
-    TRY_TO(TraverseTypeLoc(S->getQueriedTypeSourceInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(BinaryTypeTraitExpr, {
-    TRY_TO(TraverseTypeLoc(S->getLhsTypeSourceInfo()->getTypeLoc()));
-    TRY_TO(TraverseTypeLoc(S->getRhsTypeSourceInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(TypeTraitExpr, {
-  for (unsigned I = 0, N = S->getNumArgs(); I != N; ++I)
-    TRY_TO(TraverseTypeLoc(S->getArg(I)->getTypeLoc()));
-})
-
-DEF_TRAVERSE_STMT(ArrayTypeTraitExpr, {
-    TRY_TO(TraverseTypeLoc(S->getQueriedTypeSourceInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(ExpressionTraitExpr, {
-    StmtQueue.queue(S->getQueriedExpression());
-  })
-
-DEF_TRAVERSE_STMT(VAArgExpr, {
-    // The child-iterator will pick up the expression argument.
-    TRY_TO(TraverseTypeLoc(S->getWrittenTypeInfo()->getTypeLoc()));
-  })
-
-DEF_TRAVERSE_STMT(CXXTemporaryObjectExpr, {
-    // This is called for code like 'return T()' where T is a class type.
-    TRY_TO(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));
-  })
-
-// Walk only the visible parts of lambda expressions.  
-template<typename Derived>
-bool RecursiveASTVisitor<Derived>::TraverseLambdaExpr(LambdaExpr *S) {
-  for (LambdaExpr::capture_iterator C = S->explicit_capture_begin(),
-                                 CEnd = S->explicit_capture_end();
-       C != CEnd; ++C) {
-    TRY_TO(TraverseLambdaCapture(*C));
-  }
-
-  if (S->hasExplicitParameters() || S->hasExplicitResultType()) {
-    TypeLoc TL = S->getCallOperator()->getTypeSourceInfo()->getTypeLoc();
-    if (S->hasExplicitParameters() && S->hasExplicitResultType()) {
-      // Visit the whole type.
-      TRY_TO(TraverseTypeLoc(TL));
-    } else if (FunctionProtoTypeLoc Proto = TL.getAs<FunctionProtoTypeLoc>()) {
-      if (S->hasExplicitParameters()) {
-        // Visit parameters.
-        for (unsigned I = 0, N = Proto.getNumArgs(); I != N; ++I) {
-          TRY_TO(TraverseDecl(Proto.getArg(I)));
-        }
-      } else {
-        TRY_TO(TraverseTypeLoc(Proto.getResultLoc()));
-      }        
-    }
-  }
-
-  StmtQueueAction StmtQueue(*this);
-  StmtQueue.queue(S->getBody());
-  return true;
-}
-
-DEF_TRAVERSE_STMT(CXXUnresolvedConstructExpr, {
-    // This is called for code like 'T()', where T is a template argument.
-    TRY_TO(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));
-  })
-
-// These expressions all might take explicit template arguments.
-// We traverse those if so.  FIXME: implement these.
-DEF_TRAVERSE_STMT(CXXConstructExpr, { })
-DEF_TRAVERSE_STMT(CallExpr, { })
-DEF_TRAVERSE_STMT(CXXMemberCallExpr, { })
-
-// These exprs (most of them), do not need any action except iterating
-// over the children.
-DEF_TRAVERSE_STMT(AddrLabelExpr, { })
-DEF_TRAVERSE_STMT(ArraySubscriptExpr, { })
-DEF_TRAVERSE_STMT(BlockExpr, {
-  TRY_TO(TraverseDecl(S->getBlockDecl()));
-  return true; // no child statements to loop through.
-})
-DEF_TRAVERSE_STMT(ChooseExpr, { })
-DEF_TRAVERSE_STMT(CompoundLiteralExpr, { })
-DEF_TRAVERSE_STMT(CXXBindTemporaryExpr, { })
-DEF_TRAVERSE_STMT(CXXBoolLiteralExpr, { })
-DEF_TRAVERSE_STMT(CXXDefaultArgExpr, { })
-DEF_TRAVERSE_STMT(CXXDefaultInitExpr, { })
-DEF_TRAVERSE_STMT(CXXDeleteExpr, { })
-DEF_TRAVERSE_STMT(ExprWithCleanups, { })
-DEF_TRAVERSE_STMT(CXXNullPtrLiteralExpr, { })
-DEF_TRAVERSE_STMT(CXXPseudoDestructorExpr, {
-  TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
-  if (TypeSourceInfo *ScopeInfo = S->getScopeTypeInfo())
-    TRY_TO(TraverseTypeLoc(ScopeInfo->getTypeLoc()));
-  if (TypeSourceInfo *DestroyedTypeInfo = S->getDestroyedTypeInfo())
-    TRY_TO(TraverseTypeLoc(DestroyedTypeInfo->getTypeLoc()));
-})
-DEF_TRAVERSE_STMT(CXXThisExpr, { })
-DEF_TRAVERSE_STMT(CXXThrowExpr, { })
-DEF_TRAVERSE_STMT(UserDefinedLiteral, { })
-DEF_TRAVERSE_STMT(DesignatedInitExpr, { })
-DEF_TRAVERSE_STMT(ExtVectorElementExpr, { })
-DEF_TRAVERSE_STMT(GNUNullExpr, { })
-DEF_TRAVERSE_STMT(ImplicitValueInitExpr, { })
-DEF_TRAVERSE_STMT(ObjCBoolLiteralExpr, { })
-DEF_TRAVERSE_STMT(ObjCEncodeExpr, {
-  if (TypeSourceInfo *TInfo = S->getEncodedTypeSourceInfo())
-    TRY_TO(TraverseTypeLoc(TInfo->getTypeLoc()));
-})
-DEF_TRAVERSE_STMT(ObjCIsaExpr, { })
-DEF_TRAVERSE_STMT(ObjCIvarRefExpr, { })
-DEF_TRAVERSE_STMT(ObjCMessageExpr, {
-  if (TypeSourceInfo *TInfo = S->getClassReceiverTypeInfo())
-    TRY_TO(TraverseTypeLoc(TInfo->getTypeLoc()));
-})
-DEF_TRAVERSE_STMT(ObjCPropertyRefExpr, { })
-DEF_TRAVERSE_STMT(ObjCSubscriptRefExpr, { })
-DEF_TRAVERSE_STMT(ObjCProtocolExpr, { })
-DEF_TRAVERSE_STMT(ObjCSelectorExpr, { })
-DEF_TRAVERSE_STMT(ObjCIndirectCopyRestoreExpr, { })
-DEF_TRAVERSE_STMT(ObjCBridgedCastExpr, {
-  TRY_TO(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));
-})
-DEF_TRAVERSE_STMT(ParenExpr, { })
-DEF_TRAVERSE_STMT(ParenListExpr, { })
-DEF_TRAVERSE_STMT(PredefinedExpr, { })
-DEF_TRAVERSE_STMT(ShuffleVectorExpr, { })
-DEF_TRAVERSE_STMT(StmtExpr, { })
-DEF_TRAVERSE_STMT(UnresolvedLookupExpr, {
-  TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
-  if (S->hasExplicitTemplateArgs()) {
-    TRY_TO(TraverseTemplateArgumentLocsHelper(S->getTemplateArgs(),
-                                              S->getNumTemplateArgs()));
-  }
-})
-
-DEF_TRAVERSE_STMT(UnresolvedMemberExpr, {
-  TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
-  if (S->hasExplicitTemplateArgs()) {
-    TRY_TO(TraverseTemplateArgumentLocsHelper(S->getTemplateArgs(),
-                                              S->getNumTemplateArgs()));
-  }
-})
-
-DEF_TRAVERSE_STMT(MSPropertyRefExpr, {})
-DEF_TRAVERSE_STMT(SEHTryStmt, {})
-DEF_TRAVERSE_STMT(SEHExceptStmt, {})
-DEF_TRAVERSE_STMT(SEHFinallyStmt,{})
-DEF_TRAVERSE_STMT(CapturedStmt, {
-  TRY_TO(TraverseDecl(S->getCapturedDecl()));
-})
-
-DEF_TRAVERSE_STMT(CXXOperatorCallExpr, { })
-DEF_TRAVERSE_STMT(OpaqueValueExpr, { })
-DEF_TRAVERSE_STMT(CUDAKernelCallExpr, { })
-
-// These operators (all of them) do not need any action except
-// iterating over the children.
-DEF_TRAVERSE_STMT(BinaryConditionalOperator, { })
-DEF_TRAVERSE_STMT(ConditionalOperator, { })
-DEF_TRAVERSE_STMT(UnaryOperator, { })
-DEF_TRAVERSE_STMT(BinaryOperator, { })
-DEF_TRAVERSE_STMT(CompoundAssignOperator, { })
-DEF_TRAVERSE_STMT(CXXNoexceptExpr, { })
-DEF_TRAVERSE_STMT(PackExpansionExpr, { })
-DEF_TRAVERSE_STMT(SizeOfPackExpr, { })
-DEF_TRAVERSE_STMT(SubstNonTypeTemplateParmPackExpr, { })
-DEF_TRAVERSE_STMT(SubstNonTypeTemplateParmExpr, { })
-DEF_TRAVERSE_STMT(FunctionParmPackExpr, { })
-DEF_TRAVERSE_STMT(MaterializeTemporaryExpr, { })
-DEF_TRAVERSE_STMT(AtomicExpr, { })
-
-// These literals (all of them) do not need any action.
-DEF_TRAVERSE_STMT(IntegerLiteral, { })
-DEF_TRAVERSE_STMT(CharacterLiteral, { })
-DEF_TRAVERSE_STMT(FloatingLiteral, { })
-DEF_TRAVERSE_STMT(ImaginaryLiteral, { })
-DEF_TRAVERSE_STMT(StringLiteral, { })
-DEF_TRAVERSE_STMT(ObjCStringLiteral, { })
-DEF_TRAVERSE_STMT(ObjCBoxedExpr, { })
-DEF_TRAVERSE_STMT(ObjCArrayLiteral, { })
-DEF_TRAVERSE_STMT(ObjCDictionaryLiteral, { })
-  
-// Traverse OpenCL: AsType, Convert.
-DEF_TRAVERSE_STMT(AsTypeExpr, { })
-
-// FIXME: look at the following tricky-seeming exprs to see if we
-// need to recurse on anything.  These are ones that have methods
-// returning decls or qualtypes or nestednamespecifier -- though I'm
-// not sure if they own them -- or just seemed very complicated, or
-// had lots of sub-types to explore.
-//
-// VisitOverloadExpr and its children: recurse on template args? etc?
-
-// FIXME: go through all the stmts and exprs again, and see which of them
-// create new types, and recurse on the types (TypeLocs?) of those.
-// Candidates:
-//
-//    http://clang.llvm.org/doxygen/classclang_1_1CXXTypeidExpr.html
-//    http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html
-//    http://clang.llvm.org/doxygen/classclang_1_1TypesCompatibleExpr.html
-//    Every class that has getQualifier.
-
-#undef DEF_TRAVERSE_STMT
-
-#undef TRY_TO
-
-} // end namespace cxindex
-} // end namespace clang
-
-#endif // LLVM_CLANG_LIBCLANG_RECURSIVEASTVISITOR_H

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/SimpleFormatContext.h
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/SimpleFormatContext.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/SimpleFormatContext.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,75 +0,0 @@
-//===--- SimpleFormatContext.h ----------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-/// \file
-///
-/// \brief Defines a utility class for use of clang-format in libclang
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_SIMPLE_FORM_CONTEXT_H
-#define LLVM_CLANG_SIMPLE_FORM_CONTEXT_H
-
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Rewrite/Core/Rewriter.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/raw_ostream.h"
-
-namespace clang {
-
-/// \brief A small class to be used by libclang clients to format
-/// a declaration string in memory. This object is instantiated once
-/// and used each time a formatting is needed.
-class SimpleFormatContext {
-public:
-  SimpleFormatContext(LangOptions Options)
-      : DiagOpts(new DiagnosticOptions()),
-        Diagnostics(new DiagnosticsEngine(new DiagnosticIDs, 
-                                          DiagOpts.getPtr())),
-        Files((FileSystemOptions())),
-        Sources(*Diagnostics, Files),
-        Rewrite(Sources, Options) {
-    Diagnostics->setClient(new IgnoringDiagConsumer, true);
-  }
-
-  ~SimpleFormatContext() { }
-
-  FileID createInMemoryFile(StringRef Name, StringRef Content) {
-    const llvm::MemoryBuffer *Source =
-      llvm::MemoryBuffer::getMemBuffer(Content);
-    const FileEntry *Entry =
-      Files.getVirtualFile(Name, Source->getBufferSize(), 0);
-    Sources.overrideFileContents(Entry, Source, true);
-    assert(Entry != NULL);
-    return Sources.createFileID(Entry, SourceLocation(), SrcMgr::C_User);
-  }
-
-  std::string getRewrittenText(FileID ID) {
-    std::string Result;
-    llvm::raw_string_ostream OS(Result);
-    Rewrite.getEditBuffer(ID).write(OS);
-    OS.flush();
-    return Result;
-  }
-
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
-  IntrusiveRefCntPtr<DiagnosticsEngine> Diagnostics;
-  FileManager Files;
-  SourceManager Sources;
-  Rewriter Rewrite;
-};
-
-} // end namespace clang
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/tools/libclang/libclang.exports
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/libclang/libclang.exports	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/libclang/libclang.exports	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,276 +0,0 @@
-clang_CXCursorSet_contains
-clang_CXCursorSet_insert
-clang_CXIndex_getGlobalOptions
-clang_CXIndex_setGlobalOptions
-clang_CXXMethod_isStatic
-clang_CXXMethod_isVirtual
-clang_Cursor_getArgument
-clang_Cursor_getBriefCommentText
-clang_Cursor_getCommentRange
-clang_Cursor_getParsedComment
-clang_Cursor_getRawCommentText
-clang_Cursor_getNumArguments
-clang_Cursor_getObjCDeclQualifiers
-clang_Cursor_getObjCPropertyAttributes
-clang_Cursor_getObjCSelectorIndex
-clang_Cursor_getSpellingNameRange
-clang_Cursor_getTranslationUnit
-clang_Cursor_getReceiverType
-clang_Cursor_isBitField
-clang_Cursor_isDynamicCall
-clang_Cursor_isNull
-clang_Cursor_isVariadic
-clang_Cursor_getModule
-clang_Module_getASTFile
-clang_Module_getParent
-clang_Module_getName
-clang_Module_getFullName
-clang_Module_getNumTopLevelHeaders
-clang_Module_getTopLevelHeader
-clang_IndexAction_create
-clang_IndexAction_dispose
-clang_Range_isNull
-clang_Comment_getKind
-clang_Comment_getNumChildren
-clang_Comment_getChild
-clang_Comment_isWhitespace
-clang_InlineContentComment_hasTrailingNewline
-clang_TextComment_getText
-clang_InlineCommandComment_getCommandName
-clang_InlineCommandComment_getRenderKind
-clang_InlineCommandComment_getNumArgs
-clang_InlineCommandComment_getArgText
-clang_HTMLTagComment_getTagName
-clang_HTMLStartTagComment_isSelfClosing
-clang_HTMLStartTag_getNumAttrs
-clang_HTMLStartTag_getAttrName
-clang_HTMLStartTag_getAttrValue
-clang_BlockCommandComment_getCommandName
-clang_BlockCommandComment_getNumArgs
-clang_BlockCommandComment_getArgText
-clang_BlockCommandComment_getParagraph
-clang_ParamCommandComment_getParamName
-clang_ParamCommandComment_isParamIndexValid
-clang_ParamCommandComment_getParamIndex
-clang_ParamCommandComment_isDirectionExplicit
-clang_ParamCommandComment_getDirection
-clang_TParamCommandComment_getParamName
-clang_TParamCommandComment_isParamPositionValid
-clang_TParamCommandComment_getDepth
-clang_TParamCommandComment_getIndex
-clang_Type_getAlignOf
-clang_Type_getSizeOf
-clang_Type_getOffsetOf
-clang_VerbatimBlockLineComment_getText
-clang_VerbatimLineComment_getText
-clang_HTMLTagComment_getAsString
-clang_FullComment_getAsHTML
-clang_FullComment_getAsXML
-clang_annotateTokens
-clang_codeCompleteAt
-clang_codeCompleteGetContainerKind
-clang_codeCompleteGetContainerUSR
-clang_codeCompleteGetContexts
-clang_codeCompleteGetDiagnostic
-clang_codeCompleteGetNumDiagnostics
-clang_codeCompleteGetObjCSelector
-clang_constructUSR_ObjCCategory
-clang_constructUSR_ObjCClass
-clang_constructUSR_ObjCIvar
-clang_constructUSR_ObjCMethod
-clang_constructUSR_ObjCProperty
-clang_constructUSR_ObjCProtocol
-clang_createCXCursorSet
-clang_createIndex
-clang_createTranslationUnit
-clang_createTranslationUnitFromSourceFile
-clang_defaultCodeCompleteOptions
-clang_defaultDiagnosticDisplayOptions
-clang_defaultEditingTranslationUnitOptions
-clang_defaultReparseOptions
-clang_defaultSaveOptions
-clang_disposeCXCursorSet
-clang_disposeCXTUResourceUsage
-clang_disposeCodeCompleteResults
-clang_disposeDiagnostic
-clang_disposeDiagnosticSet
-clang_disposeIndex
-clang_disposeOverriddenCursors
-clang_disposeCXPlatformAvailability
-clang_disposeString
-clang_disposeTokens
-clang_disposeTranslationUnit
-clang_enableStackTraces
-clang_equalCursors
-clang_equalLocations
-clang_equalRanges
-clang_equalTypes
-clang_executeOnThread
-clang_findIncludesInFile
-clang_findIncludesInFileWithBlock
-clang_findReferencesInFile
-clang_findReferencesInFileWithBlock
-clang_formatDiagnostic
-clang_getArgType
-clang_getArrayElementType
-clang_getArraySize
-clang_getCString
-clang_getCXTUResourceUsage
-clang_getCXXAccessSpecifier
-clang_getCanonicalCursor
-clang_getCanonicalType
-clang_getChildDiagnostics
-clang_getClangVersion
-clang_getCompletionAnnotation
-clang_getCompletionAvailability
-clang_getCompletionBriefComment
-clang_getCompletionChunkCompletionString
-clang_getCompletionChunkKind
-clang_getCompletionChunkText
-clang_getCompletionNumAnnotations
-clang_getCompletionParent
-clang_getCompletionPriority
-clang_getCursor
-clang_getCursorAvailability
-clang_getCursorCompletionString
-clang_getCursorDefinition
-clang_getCursorDisplayName
-clang_getCursorExtent
-clang_getCursorKind
-clang_getCursorKindSpelling
-clang_getCursorLanguage
-clang_getCursorLexicalParent
-clang_getCursorLinkage
-clang_getCursorLocation
-clang_getCursorPlatformAvailability
-clang_getCursorReferenceNameRange
-clang_getCursorReferenced
-clang_getCursorResultType
-clang_getCursorSemanticParent
-clang_getCursorSpelling
-clang_getCursorType
-clang_getCursorUSR
-clang_getDeclObjCTypeEncoding
-clang_getDefinitionSpellingAndExtent
-clang_getDiagnostic
-clang_getDiagnosticCategory
-clang_getDiagnosticCategoryName
-clang_getDiagnosticCategoryText
-clang_getDiagnosticFixIt
-clang_getDiagnosticInSet
-clang_getDiagnosticLocation
-clang_getDiagnosticNumFixIts
-clang_getDiagnosticNumRanges
-clang_getDiagnosticOption
-clang_getDiagnosticRange
-clang_getDiagnosticSetFromTU
-clang_getDiagnosticSeverity
-clang_getDiagnosticSpelling
-clang_getElementType
-clang_getEnumConstantDeclUnsignedValue
-clang_getEnumConstantDeclValue
-clang_getEnumDeclIntegerType
-clang_getFieldDeclBitWidth
-clang_getExpansionLocation
-clang_getFile
-clang_getFileLocation
-clang_getFileName
-clang_getFileTime
-clang_getFileUniqueID
-clang_getFunctionTypeCallingConv
-clang_getIBOutletCollectionType
-clang_getIncludedFile
-clang_getInclusions
-clang_getInstantiationLocation
-clang_getLocation
-clang_getLocationForOffset
-clang_getNullCursor
-clang_getNullLocation
-clang_getNullRange
-clang_getNumArgTypes
-clang_getNumCompletionChunks
-clang_getNumDiagnostics
-clang_getNumDiagnosticsInSet
-clang_getNumElements
-clang_getNumOverloadedDecls
-clang_getOverloadedDecl
-clang_getOverriddenCursors
-clang_getPointeeType
-clang_getPresumedLocation
-clang_getRange
-clang_getRangeEnd
-clang_getRangeStart
-clang_getRemappings
-clang_getRemappingsFromFileList
-clang_getResultType
-clang_getSpecializedCursorTemplate
-clang_getSpellingLocation
-clang_getTUResourceUsageName
-clang_getTemplateCursorKind
-clang_getTokenExtent
-clang_getTokenKind
-clang_getTokenLocation
-clang_getTokenSpelling
-clang_getTranslationUnitCursor
-clang_getTranslationUnitSpelling
-clang_getTypeDeclaration
-clang_getTypeKindSpelling
-clang_getTypeSpelling
-clang_getTypedefDeclUnderlyingType
-clang_hashCursor
-clang_indexLoc_getCXSourceLocation
-clang_indexLoc_getFileLocation
-clang_indexSourceFile
-clang_indexTranslationUnit
-clang_index_getCXXClassDeclInfo
-clang_index_getClientContainer
-clang_index_getClientEntity
-clang_index_getIBOutletCollectionAttrInfo
-clang_index_getObjCCategoryDeclInfo
-clang_index_getObjCContainerDeclInfo
-clang_index_getObjCInterfaceDeclInfo
-clang_index_getObjCPropertyDeclInfo
-clang_index_getObjCProtocolRefListInfo
-clang_index_isEntityObjCContainerKind
-clang_index_setClientContainer
-clang_index_setClientEntity
-clang_isAttribute
-clang_isConstQualifiedType
-clang_isCursorDefinition
-clang_isDeclaration
-clang_isExpression
-clang_isFileMultipleIncludeGuarded
-clang_isFunctionTypeVariadic
-clang_isInvalid
-clang_isPODType
-clang_isPreprocessing
-clang_isReference
-clang_isRestrictQualifiedType
-clang_isStatement
-clang_isTranslationUnit
-clang_isUnexposed
-clang_isVirtualBase
-clang_isVolatileQualifiedType
-clang_loadDiagnostics
-clang_Location_isInSystemHeader
-clang_parseTranslationUnit
-clang_remap_dispose
-clang_remap_getFilenames
-clang_remap_getNumFiles
-clang_reparseTranslationUnit
-clang_saveTranslationUnit
-clang_sortCodeCompletionResults
-clang_toggleCrashRecovery
-clang_tokenize
-clang_CompilationDatabase_fromDirectory
-clang_CompilationDatabase_dispose
-clang_CompilationDatabase_getCompileCommands
-clang_CompilationDatabase_getAllCompileCommands
-clang_CompileCommands_dispose
-clang_CompileCommands_getSize
-clang_CompileCommands_getCommand
-clang_CompileCommand_getDirectory
-clang_CompileCommand_getNumArgs
-clang_CompileCommand_getArg
-clang_visitChildren
-clang_visitChildrenWithBlock

Modified: trunk/contrib/llvm/tools/clang/tools/scan-build/c++-analyzer
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-build/c++-analyzer	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-build/c++-analyzer	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,8 +0,0 @@
-#!/usr/bin/env perl
-
-use Cwd qw/ abs_path /;
-use File::Basename qw/ dirname /;
-# Add scan-build dir to the list of places where perl looks for modules.
-use lib dirname(abs_path($0));
-
-do 'ccc-analyzer';

Modified: trunk/contrib/llvm/tools/clang/tools/scan-build/ccc-analyzer
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-build/ccc-analyzer	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-build/ccc-analyzer	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,710 +0,0 @@
-#!/usr/bin/env perl
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-##===----------------------------------------------------------------------===##
-#
-#  A script designed to interpose between the build system and gcc.  It invokes
-#  both gcc and the static analyzer.
-#
-##===----------------------------------------------------------------------===##
-
-use strict;
-use warnings;
-use FindBin;
-use Cwd qw/ getcwd abs_path /;
-use File::Temp qw/ tempfile /;
-use File::Path qw / mkpath /;
-use File::Basename;
-use Text::ParseWords;
-
-##===----------------------------------------------------------------------===##
-# Compiler command setup.
-##===----------------------------------------------------------------------===##
-
-my $Compiler;
-my $Clang;
-my $DefaultCCompiler;
-my $DefaultCXXCompiler;
-
-if (`uname -a` =~ m/Darwin/) { 
-  $DefaultCCompiler = 'clang';
-  $DefaultCXXCompiler = 'clang++';
-} else {
-  $DefaultCCompiler = 'gcc';
-  $DefaultCXXCompiler = 'g++';
-}
-
-if ($FindBin::Script =~ /c\+\+-analyzer/) {
-  $Compiler = $ENV{'CCC_CXX'};
-  if (!defined $Compiler) { $Compiler = $DefaultCXXCompiler; }
-  
-  $Clang = $ENV{'CLANG_CXX'};
-  if (!defined $Clang) { $Clang = 'clang++'; }
-}
-else {
-  $Compiler = $ENV{'CCC_CC'};
-  if (!defined $Compiler) { $Compiler = $DefaultCCompiler; }
-
-  $Clang = $ENV{'CLANG'};
-  if (!defined $Clang) { $Clang = 'clang'; }
-}
-
-##===----------------------------------------------------------------------===##
-# Cleanup.
-##===----------------------------------------------------------------------===##
-
-my $ReportFailures = $ENV{'CCC_REPORT_FAILURES'};
-if (!defined $ReportFailures) { $ReportFailures = 1; }
-
-my $CleanupFile;
-my $ResultFile;
-
-# Remove any stale files at exit.
-END { 
-  if (defined $ResultFile && -z $ResultFile) {
-    `rm -f $ResultFile`;
-  }
-  if (defined $CleanupFile) {
-    `rm -f $CleanupFile`;
-  }
-}
-
-##----------------------------------------------------------------------------##
-#  Process Clang Crashes.
-##----------------------------------------------------------------------------##
-
-sub GetPPExt {
-  my $Lang = shift;
-  if ($Lang =~ /objective-c\+\+/) { return ".mii" };
-  if ($Lang =~ /objective-c/) { return ".mi"; }
-  if ($Lang =~ /c\+\+/) { return ".ii"; }
-  return ".i";
-}
-
-# Set this to 1 if we want to include 'parser rejects' files.
-my $IncludeParserRejects = 0;
-my $ParserRejects = "Parser Rejects";
-my $AttributeIgnored = "Attribute Ignored";
-my $OtherError = "Other Error";
-
-sub ProcessClangFailure {
-  my ($Clang, $Lang, $file, $Args, $HtmlDir, $ErrorType, $ofile) = @_;
-  my $Dir = "$HtmlDir/failures";
-  mkpath $Dir;
-  
-  my $prefix = "clang_crash";
-  if ($ErrorType eq $ParserRejects) {
-    $prefix = "clang_parser_rejects";
-  }
-  elsif ($ErrorType eq $AttributeIgnored) {
-    $prefix = "clang_attribute_ignored";
-  }
-  elsif ($ErrorType eq $OtherError) {
-    $prefix = "clang_other_error";
-  }
-
-  # Generate the preprocessed file with Clang.
-  my ($PPH, $PPFile) = tempfile( $prefix . "_XXXXXX",
-                                 SUFFIX => GetPPExt($Lang),
-                                 DIR => $Dir);
-  system $Clang, @$Args, "-E", "-o", $PPFile;
-  close ($PPH);
-  
-  # Create the info file.
-  open (OUT, ">", "$PPFile.info.txt") or die "Cannot open $PPFile.info.txt\n";
-  print OUT abs_path($file), "\n";
-  print OUT "$ErrorType\n";
-  print OUT "@$Args\n";
-  close OUT;
-  `uname -a >> $PPFile.info.txt 2>&1`;
-  `$Compiler -v >> $PPFile.info.txt 2>&1`;
-  system 'mv',$ofile,"$PPFile.stderr.txt";
-  return (basename $PPFile);
-}
-
-##----------------------------------------------------------------------------##
-#  Running the analyzer.
-##----------------------------------------------------------------------------##
-
-sub GetCCArgs {
-  my $mode = shift;
-  my $Args = shift;
-  
-  pipe (FROM_CHILD, TO_PARENT);
-  my $pid = fork();
-  if ($pid == 0) {
-    close FROM_CHILD;
-    open(STDOUT,">&", \*TO_PARENT);
-    open(STDERR,">&", \*TO_PARENT);
-    exec $Clang, "-###", $mode, @$Args;
-  }  
-  close(TO_PARENT);
-  my $line;
-  while (<FROM_CHILD>) {
-    next if (!/-cc1/);
-    $line = $_;
-  }
-
-  waitpid($pid,0);
-  close(FROM_CHILD);
-  
-  die "could not find clang line\n" if (!defined $line);
-  # Strip the newline and initial whitspace
-  chomp $line;
-  $line =~ s/^\s+//;
-  my @items = quotewords('\s+', 0, $line);
-  my $cmd = shift @items;
-  die "cannot find 'clang' in 'clang' command\n" if (!($cmd =~ /clang/));
-  return \@items;
-}
-
-sub Analyze {
-  my ($Clang, $OriginalArgs, $AnalyzeArgs, $Lang, $Output, $Verbose, $HtmlDir,
-      $file) = @_;
-
-  my @Args = @$OriginalArgs;
-  my $Cmd;
-  my @CmdArgs;
-  my @CmdArgsSansAnalyses;
-
-  if ($Lang =~ /header/) {
-    exit 0 if (!defined ($Output));
-    $Cmd = 'cp';
-    push @CmdArgs, $file;
-    # Remove the PCH extension.
-    $Output =~ s/[.]gch$//;
-    push @CmdArgs, $Output;
-    @CmdArgsSansAnalyses = @CmdArgs;
-  }
-  else {
-    $Cmd = $Clang;
-
-    # Create arguments for doing regular parsing.
-    my $SyntaxArgs = GetCCArgs("-fsyntax-only", \@Args);
-    @CmdArgsSansAnalyses = @$SyntaxArgs;
-
-    # Create arguments for doing static analysis.
-    if (defined $ResultFile) {
-      push @Args, '-o', $ResultFile;
-    }
-    elsif (defined $HtmlDir) {
-      push @Args, '-o', $HtmlDir;
-    }
-    if ($Verbose) {
-      push @Args, "-Xclang", "-analyzer-display-progress";
-    }
-
-    foreach my $arg (@$AnalyzeArgs) {
-      push @Args, "-Xclang", $arg;
-    }
-
-    # Display Ubiviz graph?
-    if (defined $ENV{'CCC_UBI'}) {   
-      push @Args, "-Xclang", "-analyzer-viz-egraph-ubigraph";
-    }
-
-    my $AnalysisArgs = GetCCArgs("--analyze", \@Args);
-    @CmdArgs = @$AnalysisArgs;
-  }
-
-  my @PrintArgs;
-  my $dir;
-
-  if ($Verbose) {
-    $dir = getcwd();
-    print STDERR "\n[LOCATION]: $dir\n";
-    push @PrintArgs,"'$Cmd'";
-    foreach my $arg (@CmdArgs) {
-        push @PrintArgs,"\'$arg\'";
-    }
-  }
-  if ($Verbose == 1) {
-    # We MUST print to stderr.  Some clients use the stdout output of
-    # gcc for various purposes. 
-    print STDERR join(' ', @PrintArgs);
-    print STDERR "\n";
-  }
-  elsif ($Verbose == 2) {
-    print STDERR "#SHELL (cd '$dir' && @PrintArgs)\n";
-  }
-
-  # Capture the STDERR of clang and send it to a temporary file.
-  # Capture the STDOUT of clang and reroute it to ccc-analyzer's STDERR.
-  # We save the output file in the 'crashes' directory if clang encounters
-  # any problems with the file.  
-  pipe (FROM_CHILD, TO_PARENT);
-  my $pid = fork();
-  if ($pid == 0) {
-    close FROM_CHILD;
-    open(STDOUT,">&", \*TO_PARENT);
-    open(STDERR,">&", \*TO_PARENT);
-    exec $Cmd, @CmdArgs;
-  }
-
-  close TO_PARENT;
-  my ($ofh, $ofile) = tempfile("clang_output_XXXXXX", DIR => $HtmlDir);
-  
-  while (<FROM_CHILD>) {
-    print $ofh $_;
-    print STDERR $_;
-  }
-  close $ofh;
-
-  waitpid($pid,0);
-  close(FROM_CHILD);
-  my $Result = $?;
-
-  # Did the command die because of a signal?
-  if ($ReportFailures) {
-    if ($Result & 127 and $Cmd eq $Clang and defined $HtmlDir) {
-      ProcessClangFailure($Clang, $Lang, $file, \@CmdArgsSansAnalyses,
-                          $HtmlDir, "Crash", $ofile);
-    }
-    elsif ($Result) {
-      if ($IncludeParserRejects && !($file =~/conftest/)) {
-        ProcessClangFailure($Clang, $Lang, $file, \@CmdArgsSansAnalyses,
-                            $HtmlDir, $ParserRejects, $ofile);
-      } else {
-        ProcessClangFailure($Clang, $Lang, $file, \@CmdArgsSansAnalyses,
-                            $HtmlDir, $OtherError, $ofile);
-      }
-    }
-    else {
-      # Check if there were any unhandled attributes.
-      if (open(CHILD, $ofile)) {
-        my %attributes_not_handled;
-
-        # Don't flag warnings about the following attributes that we
-        # know are currently not supported by Clang.
-        $attributes_not_handled{"cdecl"} = 1;
-
-        my $ppfile;
-        while (<CHILD>) {
-          next if (! /warning: '([^\']+)' attribute ignored/);
-
-          # Have we already spotted this unhandled attribute?
-          next if (defined $attributes_not_handled{$1});
-          $attributes_not_handled{$1} = 1;
-        
-          # Get the name of the attribute file.
-          my $dir = "$HtmlDir/failures";
-          my $afile = "$dir/attribute_ignored_$1.txt";
-        
-          # Only create another preprocessed file if the attribute file
-          # doesn't exist yet.
-          next if (-e $afile);
-        
-          # Add this file to the list of files that contained this attribute.
-          # Generate a preprocessed file if we haven't already.
-          if (!(defined $ppfile)) {
-            $ppfile = ProcessClangFailure($Clang, $Lang, $file,
-                                          \@CmdArgsSansAnalyses,
-                                          $HtmlDir, $AttributeIgnored, $ofile);
-          }
-
-          mkpath $dir;
-          open(AFILE, ">$afile");
-          print AFILE "$ppfile\n";
-          close(AFILE);
-        }
-        close CHILD;
-      }
-    }
-  }
-  
-  unlink($ofile);
-}
-
-##----------------------------------------------------------------------------##
-#  Lookup tables.
-##----------------------------------------------------------------------------##
-
-my %CompileOptionMap = (
-  '-nostdinc' => 0,
-  '-fblocks' => 0,
-  '-fno-builtin' => 0,
-  '-fobjc-gc-only' => 0,
-  '-fobjc-gc' => 0,
-  '-ffreestanding' => 0,
-  '-include' => 1,
-  '-idirafter' => 1,
-  '-imacros' => 1,
-  '-iprefix' => 1,
-  '-iquote' => 1,
-  '-isystem' => 1,
-  '-iwithprefix' => 1,
-  '-iwithprefixbefore' => 1
-);
-
-my %LinkerOptionMap = (
-  '-framework' => 1,
-  '-fobjc-link-runtime' => 0
-);
-
-my %CompilerLinkerOptionMap = (
-  '-fobjc-arc' => 0,
-  '-fno-objc-arc' => 0,
-  '-fobjc-abi-version' => 0, # This is really a 1 argument, but always has '='
-  '-fobjc-legacy-dispatch' => 0,
-  '-mios-simulator-version-min' => 0, # This really has 1 argument, but always has '='
-  '-isysroot' => 1,
-  '-arch' => 1,
-  '-m32' => 0,
-  '-m64' => 0,
-  '-stdlib' => 0, # This is really a 1 argument, but always has '='
-  '-v' => 0,
-  '-fpascal-strings' => 0,
-  '-mmacosx-version-min' => 0, # This is really a 1 argument, but always has '='
-  '-miphoneos-version-min' => 0 # This is really a 1 argument, but always has '='
-);
-
-my %IgnoredOptionMap = (
-  '-MT' => 1,  # Ignore these preprocessor options.
-  '-MF' => 1,
-
-  '-fsyntax-only' => 0,
-  '-save-temps' => 0,
-  '-install_name' => 1,
-  '-exported_symbols_list' => 1,
-  '-current_version' => 1,
-  '-compatibility_version' => 1,
-  '-init' => 1,
-  '-e' => 1,
-  '-seg1addr' => 1,
-  '-bundle_loader' => 1,
-  '-multiply_defined' => 1,
-  '-sectorder' => 3,
-  '--param' => 1,
-  '-u' => 1,
-  '--serialize-diagnostics' => 1
-);
-
-my %LangMap = (
-  'c'   => 'c',
-  'cp'  => 'c++',
-  'cpp' => 'c++',
-  'cxx' => 'c++',
-  'txx' => 'c++',
-  'cc'  => 'c++',
-  'C'   => 'c++',
-  'ii'  => 'c++',
-  'i'   => 'c-cpp-output',
-  'm'   => 'objective-c',
-  'mi'  => 'objective-c-cpp-output',
-  'mm'  => 'objective-c++'
-);
-
-my %UniqueOptions = (
-  '-isysroot' => 0  
-);
-
-##----------------------------------------------------------------------------##
-# Languages accepted.
-##----------------------------------------------------------------------------##
-
-my %LangsAccepted = (
-  "objective-c" => 1,
-  "c" => 1,
-  "c++" => 1,
-  "objective-c++" => 1
-);
-
-##----------------------------------------------------------------------------##
-#  Main Logic.
-##----------------------------------------------------------------------------##
-
-my $Action = 'link';
-my @CompileOpts;
-my @LinkOpts;
-my @Files;
-my $Lang;
-my $Output;
-my %Uniqued;
-
-# Forward arguments to gcc.
-my $Status = system($Compiler, at ARGV);
-if  (defined $ENV{'CCC_ANALYZER_LOG'}) {
-  print "$Compiler @ARGV\n";
-}
-if ($Status) { exit($Status >> 8); }
-
-# Get the analysis options.
-my $Analyses = $ENV{'CCC_ANALYZER_ANALYSIS'};
-
-# Get the plugins to load.
-my $Plugins = $ENV{'CCC_ANALYZER_PLUGINS'};
-
-# Get the store model.
-my $StoreModel = $ENV{'CCC_ANALYZER_STORE_MODEL'};
-
-# Get the constraints engine.
-my $ConstraintsModel = $ENV{'CCC_ANALYZER_CONSTRAINTS_MODEL'};
-
-#Get the internal stats setting.
-my $InternalStats = $ENV{'CCC_ANALYZER_INTERNAL_STATS'};
-
-# Get the output format.
-my $OutputFormat = $ENV{'CCC_ANALYZER_OUTPUT_FORMAT'};
-if (!defined $OutputFormat) { $OutputFormat = "html"; }
-
-# Determine the level of verbosity.
-my $Verbose = 0;
-if (defined $ENV{CCC_ANALYZER_VERBOSE}) { $Verbose = 1; }
-if (defined $ENV{CCC_ANALYZER_LOG}) { $Verbose = 2; }
-
-# Get the HTML output directory.
-my $HtmlDir = $ENV{'CCC_ANALYZER_HTML'};
-
-my %DisabledArchs = ('ppc' => 1, 'ppc64' => 1);
-my %ArchsSeen;
-my $HadArch = 0;
-
-# Process the arguments.
-foreach (my $i = 0; $i < scalar(@ARGV); ++$i) {
-  my $Arg = $ARGV[$i];  
-  my ($ArgKey) = split /=/,$Arg,2;
-
-  # Modes ccc-analyzer supports
-  if ($Arg =~ /^-(E|MM?)$/) { $Action = 'preprocess'; }
-  elsif ($Arg eq '-c') { $Action = 'compile'; }
-  elsif ($Arg =~ /^-print-prog-name/) { exit 0; }
-
-  # Specially handle duplicate cases of -arch
-  if ($Arg eq "-arch") {
-    my $arch = $ARGV[$i+1];
-    # We don't want to process 'ppc' because of Clang's lack of support
-    # for Altivec (also some #defines won't likely be defined correctly, etc.)
-    if (!(defined $DisabledArchs{$arch})) { $ArchsSeen{$arch} = 1; }
-    $HadArch = 1;
-    ++$i;
-    next;
-  }
-
-  # Options with possible arguments that should pass through to compiler.
-  if (defined $CompileOptionMap{$ArgKey}) {
-    my $Cnt = $CompileOptionMap{$ArgKey};
-    push @CompileOpts,$Arg;
-    while ($Cnt > 0) { ++$i; --$Cnt; push @CompileOpts, $ARGV[$i]; }
-    next;
-  }
-  if ($Arg =~ /-m.*/) {
-    push @CompileOpts,$Arg;
-    next;
-  }
-  # Handle the case where there isn't a space after -iquote
-  if ($Arg =~ /-iquote.*/) {
-    push @CompileOpts,$Arg;
-    next;
-  }
-
-  # Options with possible arguments that should pass through to linker.
-  if (defined $LinkerOptionMap{$ArgKey}) {
-    my $Cnt = $LinkerOptionMap{$ArgKey};
-    push @LinkOpts,$Arg;
-    while ($Cnt > 0) { ++$i; --$Cnt; push @LinkOpts, $ARGV[$i]; }
-    next;
-  }
-
-  # Options with possible arguments that should pass through to both compiler
-  # and the linker.
-  if (defined $CompilerLinkerOptionMap{$ArgKey}) {
-    my $Cnt = $CompilerLinkerOptionMap{$ArgKey};
-    
-    # Check if this is an option that should have a unique value, and if so
-    # determine if the value was checked before.
-    if ($UniqueOptions{$Arg}) {
-      if (defined $Uniqued{$Arg}) {
-        $i += $Cnt;
-        next;
-      }
-      $Uniqued{$Arg} = 1;
-    }
-    
-    push @CompileOpts,$Arg;    
-    push @LinkOpts,$Arg;
-
-    while ($Cnt > 0) {
-      ++$i; --$Cnt;
-      push @CompileOpts, $ARGV[$i];
-      push @LinkOpts, $ARGV[$i];
-    }
-    next;
-  }
-  
-  # Ignored options.
-  if (defined $IgnoredOptionMap{$ArgKey}) {
-    my $Cnt = $IgnoredOptionMap{$ArgKey};
-    while ($Cnt > 0) {
-      ++$i; --$Cnt;
-    }
-    next;
-  }
-  
-  # Compile mode flags.
-  if ($Arg =~ /^-[D,I,U](.*)$/) {
-    my $Tmp = $Arg;    
-    if ($1 eq '') {
-      # FIXME: Check if we are going off the end.
-      ++$i;
-      $Tmp = $Arg . $ARGV[$i];
-    }
-    push @CompileOpts,$Tmp;
-    next;
-  }
-  
-  # Language.
-  if ($Arg eq '-x') {
-    $Lang = $ARGV[$i+1];
-    ++$i; next;
-  }
-
-  # Output file.
-  if ($Arg eq '-o') {
-    ++$i;
-    $Output = $ARGV[$i];
-    next;
-  }
-  
-  # Get the link mode.
-  if ($Arg =~ /^-[l,L,O]/) {
-    if ($Arg eq '-O') { push @LinkOpts,'-O1'; }
-    elsif ($Arg eq '-Os') { push @LinkOpts,'-O2'; }
-    else { push @LinkOpts,$Arg; }
-    next;
-  }
-  
-  if ($Arg =~ /^-std=/) {
-    push @CompileOpts,$Arg;
-    next;
-  }
-  
-#  if ($Arg =~ /^-f/) {
-#    # FIXME: Not sure if the remaining -fxxxx options have no arguments.
-#    push @CompileOpts,$Arg;
-#    push @LinkOpts,$Arg;  # FIXME: Not sure if these are link opts.
-#  }
-  
-  # Get the compiler/link mode.
-  if ($Arg =~ /^-F(.+)$/) {
-    my $Tmp = $Arg;
-    if ($1 eq '') {
-      # FIXME: Check if we are going off the end.
-      ++$i;
-      $Tmp = $Arg . $ARGV[$i];
-    }
-    push @CompileOpts,$Tmp;
-    push @LinkOpts,$Tmp;
-    next;
-  }
-
-  # Input files.
-  if ($Arg eq '-filelist') {
-    # FIXME: Make sure we aren't walking off the end.
-    open(IN, $ARGV[$i+1]);
-    while (<IN>) { s/\015?\012//; push @Files,$_; }
-    close(IN);
-    ++$i;
-    next;
-  }
-  
-  # Handle -Wno-.  We don't care about extra warnings, but
-  # we should suppress ones that we don't want to see.
-  if ($Arg =~ /^-Wno-/) {
-    push @CompileOpts, $Arg;
-    next;
-  }
-
-  if (!($Arg =~ /^-/)) {
-    push @Files, $Arg;
-    next;
-  }
-}
-
-if ($Action eq 'compile' or $Action eq 'link') {
-  my @Archs = keys %ArchsSeen;
-  # Skip the file if we don't support the architectures specified.
-  exit 0 if ($HadArch && scalar(@Archs) == 0);
-
-  foreach my $file (@Files) {
-    # Determine the language for the file.
-    my $FileLang = $Lang;
-
-    if (!defined($FileLang)) {
-      # Infer the language from the extension.
-      if ($file =~ /[.]([^.]+)$/) {
-        $FileLang = $LangMap{$1};
-      }
-    }
-    
-    # FileLang still not defined?  Skip the file.
-    next if (!defined $FileLang);
-
-    # Language not accepted?
-    next if (!defined $LangsAccepted{$FileLang});
-
-    my @CmdArgs;
-    my @AnalyzeArgs;    
-    
-    if ($FileLang ne 'unknown') {
-      push @CmdArgs, '-x', $FileLang;
-    }
-
-    if (defined $StoreModel) {
-      push @AnalyzeArgs, "-analyzer-store=$StoreModel";
-    }
-
-    if (defined $ConstraintsModel) {
-      push @AnalyzeArgs, "-analyzer-constraints=$ConstraintsModel";
-    }
-
-    if (defined $InternalStats) {
-      push @AnalyzeArgs, "-analyzer-stats";
-    }
-    
-    if (defined $Analyses) {
-      push @AnalyzeArgs, split '\s+', $Analyses;
-    }
-
-    if (defined $Plugins) {
-      push @AnalyzeArgs, split '\s+', $Plugins;
-    }
-
-    if (defined $OutputFormat) {
-      push @AnalyzeArgs, "-analyzer-output=" . $OutputFormat;
-      if ($OutputFormat =~ /plist/) {
-        # Change "Output" to be a file.
-        my ($h, $f) = tempfile("report-XXXXXX", SUFFIX => ".plist",
-                               DIR => $HtmlDir);
-        $ResultFile = $f;
-        # If the HtmlDir is not set, we sould clean up the plist files.
-        if (!defined $HtmlDir || -z $HtmlDir) {
-          $CleanupFile = $f;
-        }
-      }
-    }
-
-    push @CmdArgs, @CompileOpts;
-    push @CmdArgs, $file;
-
-    if (scalar @Archs) {
-      foreach my $arch (@Archs) {
-        my @NewArgs;
-        push @NewArgs, '-arch', $arch;
-        push @NewArgs, @CmdArgs;
-        Analyze($Clang, \@NewArgs, \@AnalyzeArgs, $FileLang, $Output,
-                $Verbose, $HtmlDir, $file);
-      }
-    }
-    else {
-      Analyze($Clang, \@CmdArgs, \@AnalyzeArgs, $FileLang, $Output,
-              $Verbose, $HtmlDir, $file);
-    }
-  }
-}
-
-exit($Status >> 8);
-

Modified: trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1665 +0,0 @@
-#!/usr/bin/env perl
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-##===----------------------------------------------------------------------===##
-#
-# A script designed to wrap a build so that all calls to gcc are intercepted
-# and piped to the static analyzer.
-#
-##===----------------------------------------------------------------------===##
-
-use strict;
-use warnings;
-use FindBin qw($RealBin);
-use Digest::MD5;
-use File::Basename;
-use File::Find;
-use Term::ANSIColor;
-use Term::ANSIColor qw(:constants);
-use Cwd qw/ getcwd abs_path /;
-use Sys::Hostname;
-
-my $Verbose = 0;       # Verbose output from this script.
-my $Prog = "scan-build";
-my $BuildName;
-my $BuildDate;
-
-my $TERM = $ENV{'TERM'};
-my $UseColor = (defined $TERM and $TERM =~ 'xterm-.*color' and -t STDOUT
-                and defined $ENV{'SCAN_BUILD_COLOR'});
-
-my $UserName = HtmlEscape(getpwuid($<) || 'unknown');
-my $HostName = HtmlEscape(hostname() || 'unknown');
-my $CurrentDir = HtmlEscape(getcwd());
-my $CurrentDirSuffix = basename($CurrentDir);
-
-my @PluginsToLoad;
-my $CmdArgs;
-
-my $HtmlTitle;
-
-my $Date = localtime();
-
-##----------------------------------------------------------------------------##
-# Diagnostics
-##----------------------------------------------------------------------------##
-
-sub Diag {
-  if ($UseColor) {
-    print BOLD, MAGENTA "$Prog: @_";
-    print RESET;
-  }
-  else {
-    print "$Prog: @_";
-  }  
-}
-
-sub ErrorDiag {
-  if ($UseColor) {
-    print STDERR BOLD, RED "$Prog: ";
-    print STDERR RESET, RED @_;
-    print STDERR RESET;
-  } else {
-    print STDERR "$Prog: @_";
-  }  
-}
-
-sub DiagCrashes {
-  my $Dir = shift;
-  Diag ("The analyzer encountered problems on some source files.\n");
-  Diag ("Preprocessed versions of these sources were deposited in '$Dir/failures'.\n");
-  Diag ("Please consider submitting a bug report using these files:\n");
-  Diag ("  http://clang-analyzer.llvm.org/filing_bugs.html\n")
-}
-
-sub DieDiag {
-  if ($UseColor) {
-    print STDERR BOLD, RED "$Prog: ";
-    print STDERR RESET, RED @_;
-    print STDERR RESET;
-  }
-  else {
-    print STDERR "$Prog: ", @_;
-  }
-  exit 1;
-}
-
-##----------------------------------------------------------------------------##
-# Print default checker names
-##----------------------------------------------------------------------------##
-
-if (grep /^--help-checkers$/, @ARGV) {
-    my @options = qx($0 -h);
-    foreach (@options) {
-	next unless /^ \+/;
-	s/^\s*//;
-	my ($sign, $name, @text) = split ' ', $_;
-	print $name, $/ if $sign eq '+';
-    }
-    exit 0;
-}
-
-##----------------------------------------------------------------------------##
-# Declaration of Clang options.  Populated later.
-##----------------------------------------------------------------------------##
-
-my $Clang;
-my $ClangSB;
-my $ClangCXX;
-my $ClangVersion;
-
-##----------------------------------------------------------------------------##
-# GetHTMLRunDir - Construct an HTML directory name for the current sub-run.
-##----------------------------------------------------------------------------##
-
-sub GetHTMLRunDir {  
-  die "Not enough arguments." if (@_ == 0);  
-  my $Dir = shift @_;    
-  my $TmpMode = 0;
-  if (!defined $Dir) {
-    $Dir = $ENV{'TMPDIR'};
-    if (!defined $Dir) { $Dir = "/tmp"; }
-    $TmpMode = 1;
-  }
-  
-  # Chop off any trailing '/' characters.
-  while ($Dir =~ /\/$/) { chop $Dir; }
-
-  # Get current date and time.
-  my @CurrentTime = localtime();  
-  my $year  = $CurrentTime[5] + 1900;
-  my $day   = $CurrentTime[3];
-  my $month = $CurrentTime[4] + 1;
-  my $DateString = sprintf("%d-%02d-%02d", $year, $month, $day);
-  
-  # Determine the run number.  
-  my $RunNumber;
-  
-  if (-d $Dir) {    
-    if (! -r $Dir) {
-      DieDiag("directory '$Dir' exists but is not readable.\n");
-    }    
-    # Iterate over all files in the specified directory.    
-    my $max = 0;    
-    opendir(DIR, $Dir);
-    my @FILES = grep { -d "$Dir/$_" } readdir(DIR);
-    closedir(DIR);
-
-    foreach my $f (@FILES) {
-      # Strip the prefix '$Prog-' if we are dumping files to /tmp.
-      if ($TmpMode) {
-        next if (!($f =~ /^$Prog-(.+)/));
-        $f = $1;
-      }
-
-      my @x = split/-/, $f;
-      next if (scalar(@x) != 4);
-      next if ($x[0] != $year);
-      next if ($x[1] != $month);
-      next if ($x[2] != $day);
-      
-      if ($x[3] > $max) {
-        $max = $x[3];
-      }      
-    }
-    
-    $RunNumber = $max + 1;
-  }
-  else {
-    
-    if (-x $Dir) {
-      DieDiag("'$Dir' exists but is not a directory.\n");
-    }
-
-    if ($TmpMode) {
-      DieDiag("The directory '/tmp' does not exist or cannot be accessed.\n");
-    }
-
-    # $Dir does not exist.  It will be automatically created by the 
-    # clang driver.  Set the run number to 1.  
-
-    $RunNumber = 1;
-  }
-  
-  die "RunNumber must be defined!" if (!defined $RunNumber);
-  
-  # Append the run number.
-  my $NewDir;
-  if ($TmpMode) {
-    $NewDir = "$Dir/$Prog-$DateString-$RunNumber";
-  }
-  else {
-    $NewDir = "$Dir/$DateString-$RunNumber";
-  }
-  system 'mkdir','-p',$NewDir;
-  return $NewDir;
-}
-
-sub SetHtmlEnv {
-  
-  die "Wrong number of arguments." if (scalar(@_) != 2);
-  
-  my $Args = shift;
-  my $Dir = shift;
-  
-  die "No build command." if (scalar(@$Args) == 0);
-  
-  my $Cmd = $$Args[0];
-
-  if ($Cmd =~ /configure/ || $Cmd =~ /autogen/) {
-    return;
-  }
-  
-  if ($Verbose) {
-    Diag("Emitting reports for this run to '$Dir'.\n");
-  }
-  
-  $ENV{'CCC_ANALYZER_HTML'} = $Dir;
-}
-
-##----------------------------------------------------------------------------##
-# ComputeDigest - Compute a digest of the specified file.
-##----------------------------------------------------------------------------##
-
-sub ComputeDigest {
-  my $FName = shift;
-  DieDiag("Cannot read $FName to compute Digest.\n") if (! -r $FName);  
-  
-  # Use Digest::MD5.  We don't have to be cryptographically secure.  We're
-  # just looking for duplicate files that come from a non-malicious source.
-  # We use Digest::MD5 because it is a standard Perl module that should
-  # come bundled on most systems.  
-  open(FILE, $FName) or DieDiag("Cannot open $FName when computing Digest.\n");
-  binmode FILE;
-  my $Result = Digest::MD5->new->addfile(*FILE)->hexdigest;
-  close(FILE);
-  
-  # Return the digest.  
-  return $Result;
-}
-
-##----------------------------------------------------------------------------##
-#  UpdatePrefix - Compute the common prefix of files.
-##----------------------------------------------------------------------------##
-
-my $Prefix;
-
-sub UpdatePrefix {
-  my $x = shift;
-  my $y = basename($x);
-  $x =~ s/\Q$y\E$//;
-
-  if (!defined $Prefix) {
-    $Prefix = $x;
-    return;
-  }
-  
-  chop $Prefix while (!($x =~ /^\Q$Prefix/));
-}
-
-sub GetPrefix {
-  return $Prefix;
-}
-
-##----------------------------------------------------------------------------##
-#  UpdateInFilePath - Update the path in the report file.
-##----------------------------------------------------------------------------##
-
-sub UpdateInFilePath {
-  my $fname = shift;
-  my $regex = shift;
-  my $newtext = shift;
-
-  open (RIN, $fname) or die "cannot open $fname";
-  open (ROUT, ">", "$fname.tmp") or die "cannot open $fname.tmp";
-
-  while (<RIN>) {
-    s/$regex/$newtext/;
-    print ROUT $_;
-  }
-
-  close (ROUT);
-  close (RIN);
-  system("mv", "$fname.tmp", $fname);
-}
-
-##----------------------------------------------------------------------------##
-# AddStatLine - Decode and insert a statistics line into the database.
-##----------------------------------------------------------------------------##
-
-sub AddStatLine {
-  my $Line  = shift;
-  my $Stats = shift;
-  my $File  = shift;
-
-  print $Line . "\n";
-
-  my $Regex = qr/(.*?)\ ->\ Total\ CFGBlocks:\ (\d+)\ \|\ Unreachable
-      \ CFGBlocks:\ (\d+)\ \|\ Exhausted\ Block:\ (yes|no)\ \|\ Empty\ WorkList:
-      \ (yes|no)/x;
-
-  if ($Line !~ $Regex) {
-    return;
-  }
-
-  # Create a hash of the interesting fields
-  my $Row = {
-    Filename    => $File,
-    Function    => $1,
-    Total       => $2,
-    Unreachable => $3,
-    Aborted     => $4,
-    Empty       => $5
-  };
-
-  # Add them to the stats array
-  push @$Stats, $Row;
-}
-
-##----------------------------------------------------------------------------##
-# ScanFile - Scan a report file for various identifying attributes.
-##----------------------------------------------------------------------------##
-
-# Sometimes a source file is scanned more than once, and thus produces
-# multiple error reports.  We use a cache to solve this problem.
-
-my %AlreadyScanned;
-
-sub ScanFile {
-  
-  my $Index = shift;
-  my $Dir = shift;
-  my $FName = shift;
-  my $Stats = shift;
-  
-  # Compute a digest for the report file.  Determine if we have already
-  # scanned a file that looks just like it.
-  
-  my $digest = ComputeDigest("$Dir/$FName");
-
-  if (defined $AlreadyScanned{$digest}) {
-    # Redundant file.  Remove it.
-    system ("rm", "-f", "$Dir/$FName");
-    return;
-  }
-  
-  $AlreadyScanned{$digest} = 1;
-  
-  # At this point the report file is not world readable.  Make it happen.
-  system ("chmod", "644", "$Dir/$FName");
-  
-  # Scan the report file for tags.
-  open(IN, "$Dir/$FName") or DieDiag("Cannot open '$Dir/$FName'\n");
-
-  my $BugType        = "";
-  my $BugFile        = "";
-  my $BugCategory    = "";
-  my $BugDescription = "";
-  my $BugPathLength  = 1;
-  my $BugLine        = 0;
-
-  while (<IN>) {
-    last if (/<!-- BUGMETAEND -->/);
-
-    if (/<!-- BUGTYPE (.*) -->$/) {
-      $BugType = $1;
-    }
-    elsif (/<!-- BUGFILE (.*) -->$/) {
-      $BugFile = abs_path($1);
-      UpdatePrefix($BugFile);
-    }
-    elsif (/<!-- BUGPATHLENGTH (.*) -->$/) {
-      $BugPathLength = $1;
-    }
-    elsif (/<!-- BUGLINE (.*) -->$/) {
-      $BugLine = $1;    
-    }
-    elsif (/<!-- BUGCATEGORY (.*) -->$/) {
-      $BugCategory = $1;
-    }
-    elsif (/<!-- BUGDESC (.*) -->$/) {
-      $BugDescription = $1;
-    }
-  }
-
-  close(IN);
-  
-  if (!defined $BugCategory) {
-    $BugCategory = "Other";
-  }
-
-  # Don't add internal statistics to the bug reports
-  if ($BugCategory =~ /statistics/i) {
-    AddStatLine($BugDescription, $Stats, $BugFile);
-    return;
-  }
-  
-  push @$Index,[ $FName, $BugCategory, $BugType, $BugFile, $BugLine,
-                 $BugPathLength ];
-}
-
-##----------------------------------------------------------------------------##
-# CopyFiles - Copy resource files to target directory.
-##----------------------------------------------------------------------------##
-
-sub CopyFiles {
-
-  my $Dir = shift;
-
-  my $JS = Cwd::realpath("$RealBin/sorttable.js");
-  
-  DieDiag("Cannot find 'sorttable.js'.\n")
-    if (! -r $JS);  
-
-  system ("cp", $JS, "$Dir");
-
-  DieDiag("Could not copy 'sorttable.js' to '$Dir'.\n")
-    if (! -r "$Dir/sorttable.js");
-    
-  my $CSS = Cwd::realpath("$RealBin/scanview.css");
-  
-  DieDiag("Cannot find 'scanview.css'.\n")
-    if (! -r $CSS);
-
-  system ("cp", $CSS, "$Dir");
-
-  DieDiag("Could not copy 'scanview.css' to '$Dir'.\n")
-    if (! -r $CSS);
-}
-
-##----------------------------------------------------------------------------##
-# CalcStats - Calculates visitation statistics and returns the string.
-##----------------------------------------------------------------------------##
-
-sub CalcStats {
-  my $Stats = shift;
-
-  my $TotalBlocks = 0;
-  my $UnreachedBlocks = 0;
-  my $TotalFunctions = scalar(@$Stats);
-  my $BlockAborted = 0;
-  my $WorkListAborted = 0;
-  my $Aborted = 0;
-
-  # Calculate the unique files
-  my $FilesHash = {};
-
-  foreach my $Row (@$Stats) {
-    $FilesHash->{$Row->{Filename}} = 1;
-    $TotalBlocks += $Row->{Total};
-    $UnreachedBlocks += $Row->{Unreachable};
-    $BlockAborted++ if $Row->{Aborted} eq 'yes';
-    $WorkListAborted++ if $Row->{Empty} eq 'no';
-    $Aborted++ if $Row->{Aborted} eq 'yes' || $Row->{Empty} eq 'no';
-  }
-
-  my $TotalFiles = scalar(keys(%$FilesHash));
-
-  # Calculations
-  my $PercentAborted = sprintf("%.2f", $Aborted / $TotalFunctions * 100);
-  my $PercentBlockAborted = sprintf("%.2f", $BlockAborted / $TotalFunctions
-      * 100);
-  my $PercentWorkListAborted = sprintf("%.2f", $WorkListAborted /
-      $TotalFunctions * 100);
-  my $PercentBlocksUnreached = sprintf("%.2f", $UnreachedBlocks / $TotalBlocks
-      * 100);
-
-  my $StatsString = "Analyzed $TotalBlocks blocks in $TotalFunctions functions"
-    . " in $TotalFiles files\n"
-    . "$Aborted functions aborted early ($PercentAborted%)\n"
-    . "$BlockAborted had aborted blocks ($PercentBlockAborted%)\n"
-    . "$WorkListAborted had unfinished worklists ($PercentWorkListAborted%)\n"
-    . "$UnreachedBlocks blocks were never reached ($PercentBlocksUnreached%)\n";
-
-  return $StatsString;
-}
-
-##----------------------------------------------------------------------------##
-# Postprocess - Postprocess the results of an analysis scan.
-##----------------------------------------------------------------------------##
-
-my @filesFound;
-my $baseDir;
-sub FileWanted { 
-    my $baseDirRegEx = quotemeta $baseDir;
-    my $file = $File::Find::name;
-    if ($file =~ /report-.*\.html$/) {
-       my $relative_file = $file;
-       $relative_file =~ s/$baseDirRegEx//g;
-       push @filesFound, $relative_file;
-    }
-}
-
-sub Postprocess {
-  
-  my $Dir           = shift;
-  my $BaseDir       = shift;
-  my $AnalyzerStats = shift;
-  my $KeepEmpty     = shift;
-  
-  die "No directory specified." if (!defined $Dir);
-  
-  if (! -d $Dir) {
-    Diag("No bugs found.\n");
-    return 0;
-  }
-
-  $baseDir = $Dir . "/";
-  find({ wanted => \&FileWanted, follow => 0}, $Dir);
-
-  if (scalar(@filesFound) == 0 and ! -e "$Dir/failures") {
-    if (! $KeepEmpty) {
-      Diag("Removing directory '$Dir' because it contains no reports.\n");
-      system ("rm", "-fR", $Dir);
-    }
-    Diag("No bugs found.\n");
-    return 0;
-  }
-  
-  # Scan each report file and build an index.  
-  my @Index;
-  my @Stats;
-  foreach my $file (@filesFound) { ScanFile(\@Index, $Dir, $file, \@Stats); }
-  
-  # Scan the failures directory and use the information in the .info files
-  # to update the common prefix directory.
-  my @failures;
-  my @attributes_ignored;
-  if (-d "$Dir/failures") {
-    opendir(DIR, "$Dir/failures");
-    @failures = grep { /[.]info.txt$/ && !/attribute_ignored/; } readdir(DIR);
-    closedir(DIR);
-    opendir(DIR, "$Dir/failures");        
-    @attributes_ignored = grep { /^attribute_ignored/; } readdir(DIR);
-    closedir(DIR);
-    foreach my $file (@failures) {
-      open IN, "$Dir/failures/$file" or DieDiag("cannot open $file\n");
-      my $Path = <IN>;
-      if (defined $Path) { UpdatePrefix($Path); }
-      close IN;
-    }    
-  }
-  
-  # Generate an index.html file.  
-  my $FName = "$Dir/index.html";  
-  open(OUT, ">", $FName) or DieDiag("Cannot create file '$FName'\n");
-  
-  # Print out the header.
-  
-print OUT <<ENDTEXT;
-<html>
-<head>
-<title>${HtmlTitle}</title>
-<link type="text/css" rel="stylesheet" href="scanview.css"/>
-<script src="sorttable.js"></script>
-<script language='javascript' type="text/javascript">
-function SetDisplay(RowClass, DisplayVal)
-{
-  var Rows = document.getElementsByTagName("tr");
-  for ( var i = 0 ; i < Rows.length; ++i ) {
-    if (Rows[i].className == RowClass) {
-      Rows[i].style.display = DisplayVal;
-    }
-  }
-}
-
-function CopyCheckedStateToCheckButtons(SummaryCheckButton) {
-  var Inputs = document.getElementsByTagName("input");
-  for ( var i = 0 ; i < Inputs.length; ++i ) {
-    if (Inputs[i].type == "checkbox") {
-      if(Inputs[i] != SummaryCheckButton) {
-        Inputs[i].checked = SummaryCheckButton.checked;
-        Inputs[i].onclick();
-	  }
-    }
-  }
-}
-
-function returnObjById( id ) {
-    if (document.getElementById) 
-        var returnVar = document.getElementById(id);
-    else if (document.all)
-        var returnVar = document.all[id];
-    else if (document.layers) 
-        var returnVar = document.layers[id];
-    return returnVar; 
-}
-
-var NumUnchecked = 0;
-
-function ToggleDisplay(CheckButton, ClassName) {
-  if (CheckButton.checked) {
-    SetDisplay(ClassName, "");
-    if (--NumUnchecked == 0) {
-      returnObjById("AllBugsCheck").checked = true;
-    }
-  }
-  else {
-    SetDisplay(ClassName, "none");
-    NumUnchecked++;
-    returnObjById("AllBugsCheck").checked = false;
-  }
-}
-</script>
-<!-- SUMMARYENDHEAD -->
-</head>
-<body>
-<h1>${HtmlTitle}</h1>
-
-<table>
-<tr><th>User:</th><td>${UserName}\@${HostName}</td></tr>
-<tr><th>Working Directory:</th><td>${CurrentDir}</td></tr>
-<tr><th>Command Line:</th><td>${CmdArgs}</td></tr>
-<tr><th>Clang Version:</th><td>${ClangVersion}</td></tr>
-<tr><th>Date:</th><td>${Date}</td></tr>
-ENDTEXT
-
-print OUT "<tr><th>Version:</th><td>${BuildName} (${BuildDate})</td></tr>\n"
-  if (defined($BuildName) && defined($BuildDate));
-
-print OUT <<ENDTEXT;
-</table>
-ENDTEXT
-
-  if (scalar(@filesFound)) {
-    # Print out the summary table.
-    my %Totals;
-
-    for my $row ( @Index ) {
-      my $bug_type = ($row->[2]);
-      my $bug_category = ($row->[1]);
-      my $key = "$bug_category:$bug_type";
-
-      if (!defined $Totals{$key}) { $Totals{$key} = [1,$bug_category,$bug_type]; }
-      else { $Totals{$key}->[0]++; }
-    }
-
-    print OUT "<h2>Bug Summary</h2>";
-
-    if (defined $BuildName) {
-      print OUT "\n<p>Results in this analysis run are based on analyzer build <b>$BuildName</b>.</p>\n"
-    }
-  
-  my $TotalBugs = scalar(@Index);
-print OUT <<ENDTEXT;
-<table>
-<thead><tr><td>Bug Type</td><td>Quantity</td><td class="sorttable_nosort">Display?</td></tr></thead>
-<tr style="font-weight:bold"><td class="SUMM_DESC">All Bugs</td><td class="Q">$TotalBugs</td><td><center><input type="checkbox" id="AllBugsCheck" onClick="CopyCheckedStateToCheckButtons(this);" checked/></center></td></tr>
-ENDTEXT
-  
-    my $last_category;
-
-    for my $key (
-      sort {
-        my $x = $Totals{$a};
-        my $y = $Totals{$b};
-        my $res = $x->[1] cmp $y->[1];
-        $res = $x->[2] cmp $y->[2] if ($res == 0);
-        $res
-      } keys %Totals ) 
-    {
-      my $val = $Totals{$key};
-      my $category = $val->[1];
-      if (!defined $last_category or $last_category ne $category) {
-        $last_category = $category;
-        print OUT "<tr><th>$category</th><th colspan=2></th></tr>\n";
-      }      
-      my $x = lc $key;
-      $x =~ s/[ ,'":\/()]+/_/g;
-      print OUT "<tr><td class=\"SUMM_DESC\">";
-      print OUT $val->[2];
-      print OUT "</td><td class=\"Q\">";
-      print OUT $val->[0];
-      print OUT "</td><td><center><input type=\"checkbox\" onClick=\"ToggleDisplay(this,'bt_$x');\" checked/></center></td></tr>\n";
-    }
-
-  # Print out the table of errors.
-
-print OUT <<ENDTEXT;
-</table>
-<h2>Reports</h2>
-
-<table class="sortable" style="table-layout:automatic">
-<thead><tr>
-  <td>Bug Group</td>
-  <td class="sorttable_sorted">Bug Type<span id="sorttable_sortfwdind"> &#x25BE;</span></td>
-  <td>File</td>
-  <td class="Q">Line</td>
-  <td class="Q">Path Length</td>
-  <td class="sorttable_nosort"></td>
-  <!-- REPORTBUGCOL -->
-</tr></thead>
-<tbody>
-ENDTEXT
-
-    my $prefix = GetPrefix();
-    my $regex;
-    my $InFileRegex;
-    my $InFilePrefix = "File:</td><td>";
-  
-    if (defined $prefix) { 
-      $regex = qr/^\Q$prefix\E/is;    
-      $InFileRegex = qr/\Q$InFilePrefix$prefix\E/is;
-    }    
-
-    for my $row ( sort { $a->[2] cmp $b->[2] } @Index ) {
-      my $x = "$row->[1]:$row->[2]";
-      $x = lc $x;
-      $x =~ s/[ ,'":\/()]+/_/g;
-    
-      my $ReportFile = $row->[0];
-          
-      print OUT "<tr class=\"bt_$x\">";
-      print OUT "<td class=\"DESC\">";
-      print OUT $row->[1];
-      print OUT "</td>";
-      print OUT "<td class=\"DESC\">";
-      print OUT $row->[2];
-      print OUT "</td>";
-      
-      # Update the file prefix.      
-      my $fname = $row->[3];
-
-      if (defined $regex) {
-        $fname =~ s/$regex//;
-        UpdateInFilePath("$Dir/$ReportFile", $InFileRegex, $InFilePrefix)
-      }
-      
-      print OUT "<td>";      
-      my @fname = split /\//,$fname;
-      if ($#fname > 0) {
-        while ($#fname >= 0) {
-          my $x = shift @fname;
-          print OUT $x;
-          if ($#fname >= 0) {
-            print OUT "<span class=\"W\"> </span>/";
-          }
-        }
-      }
-      else {
-        print OUT $fname;
-      }      
-      print OUT "</td>";
-      
-      # Print out the quantities.
-      for my $j ( 4 .. 5 ) {
-        print OUT "<td class=\"Q\">$row->[$j]</td>";        
-      }
-      
-      # Print the rest of the columns.
-      for (my $j = 6; $j <= $#{$row}; ++$j) {
-        print OUT "<td>$row->[$j]</td>"
-      }
-
-      # Emit the "View" link.
-      print OUT "<td><a href=\"$ReportFile#EndPath\">View Report</a></td>";
-        
-      # Emit REPORTBUG markers.
-      print OUT "\n<!-- REPORTBUG id=\"$ReportFile\" -->\n";
-        
-      # End the row.
-      print OUT "</tr>\n";
-    }
-  
-    print OUT "</tbody>\n</table>\n\n";
-  }
-
-  if (scalar (@failures) || scalar(@attributes_ignored)) {
-    print OUT "<h2>Analyzer Failures</h2>\n";
-    
-    if (scalar @attributes_ignored) {
-      print OUT "The analyzer's parser ignored the following attributes:<p>\n";
-      print OUT "<table>\n";
-      print OUT "<thead><tr><td>Attribute</td><td>Source File</td><td>Preprocessed File</td><td>STDERR Output</td></tr></thead>\n";
-      foreach my $file (sort @attributes_ignored) {
-        die "cannot demangle attribute name\n" if (! ($file =~ /^attribute_ignored_(.+).txt/));
-        my $attribute = $1;
-        # Open the attribute file to get the first file that failed.
-        next if (!open (ATTR, "$Dir/failures/$file"));
-        my $ppfile = <ATTR>;
-        chomp $ppfile;
-        close ATTR;
-        next if (! -e "$Dir/failures/$ppfile");
-        # Open the info file and get the name of the source file.
-        open (INFO, "$Dir/failures/$ppfile.info.txt") or
-          die "Cannot open $Dir/failures/$ppfile.info.txt\n";
-        my $srcfile = <INFO>;
-        chomp $srcfile;
-        close (INFO);
-        # Print the information in the table.
-        my $prefix = GetPrefix();
-        if (defined $prefix) { $srcfile =~ s/^\Q$prefix//; }
-        print OUT "<tr><td>$attribute</td><td>$srcfile</td><td><a href=\"failures/$ppfile\">$ppfile</a></td><td><a href=\"failures/$ppfile.stderr.txt\">$ppfile.stderr.txt</a></td></tr>\n";
-        my $ppfile_clang = $ppfile;
-        $ppfile_clang =~ s/[.](.+)$/.clang.$1/;
-        print OUT "  <!-- REPORTPROBLEM src=\"$srcfile\" file=\"failures/$ppfile\" clangfile=\"failures/$ppfile_clang\" stderr=\"failures/$ppfile.stderr.txt\" info=\"failures/$ppfile.info.txt\" -->\n";
-      }
-      print OUT "</table>\n";
-    }
-    
-    if (scalar @failures) {
-      print OUT "<p>The analyzer had problems processing the following files:</p>\n";
-      print OUT "<table>\n";
-      print OUT "<thead><tr><td>Problem</td><td>Source File</td><td>Preprocessed File</td><td>STDERR Output</td></tr></thead>\n";
-      foreach my $file (sort @failures) {
-        $file =~ /(.+).info.txt$/;
-        # Get the preprocessed file.
-        my $ppfile = $1;
-        # Open the info file and get the name of the source file.
-        open (INFO, "$Dir/failures/$file") or
-          die "Cannot open $Dir/failures/$file\n";
-        my $srcfile = <INFO>;
-        chomp $srcfile;
-        my $problem = <INFO>;
-        chomp $problem;
-        close (INFO);
-        # Print the information in the table.
-        my $prefix = GetPrefix();
-        if (defined $prefix) { $srcfile =~ s/^\Q$prefix//; }
-        print OUT "<tr><td>$problem</td><td>$srcfile</td><td><a href=\"failures/$ppfile\">$ppfile</a></td><td><a href=\"failures/$ppfile.stderr.txt\">$ppfile.stderr.txt</a></td></tr>\n";
-        my $ppfile_clang = $ppfile;
-        $ppfile_clang =~ s/[.](.+)$/.clang.$1/;
-        print OUT "  <!-- REPORTPROBLEM src=\"$srcfile\" file=\"failures/$ppfile\" clangfile=\"failures/$ppfile_clang\" stderr=\"failures/$ppfile.stderr.txt\" info=\"failures/$ppfile.info.txt\" -->\n";
-      }
-      print OUT "</table>\n";
-    }    
-    print OUT "<p>Please consider submitting preprocessed files as <a href=\"http://clang-analyzer.llvm.org/filing_bugs.html\">bug reports</a>. <!-- REPORTCRASHES --> </p>\n";
-  }
-  
-  print OUT "</body></html>\n";  
-  close(OUT);
-  CopyFiles($Dir);
-
-  # Make sure $Dir and $BaseDir are world readable/executable.
-  system("chmod", "755", $Dir);
-  if (defined $BaseDir) { system("chmod", "755", $BaseDir); }
-
-  # Print statistics
-  print CalcStats(\@Stats) if $AnalyzerStats;
-
-  my $Num = scalar(@Index);
-  Diag("$Num bugs found.\n");
-  if ($Num > 0 && -r "$Dir/index.html") {
-    Diag("Run 'scan-view $Dir' to examine bug reports.\n");
-  }
-  
-  DiagCrashes($Dir) if (scalar @failures || scalar @attributes_ignored);
-  
-  return $Num;
-}
-
-##----------------------------------------------------------------------------##
-# RunBuildCommand - Run the build command.
-##----------------------------------------------------------------------------##
-
-sub AddIfNotPresent {
-  my $Args = shift;
-  my $Arg = shift;  
-  my $found = 0;
-  
-  foreach my $k (@$Args) {
-    if ($k eq $Arg) {
-      $found = 1;
-      last;
-    }
-  }
-  
-  if ($found == 0) {
-    push @$Args, $Arg;
-  }
-}
-
-sub SetEnv {
-  my $Options = shift @_;
-  foreach my $opt ('CC', 'CXX', 'CLANG', 'CLANG_CXX',
-                    'CCC_ANALYZER_ANALYSIS', 'CCC_ANALYZER_PLUGINS') {
-    die "$opt is undefined\n" if (!defined $opt);
-    $ENV{$opt} = $Options->{$opt};
-  }
-  foreach my $opt ('CCC_ANALYZER_STORE_MODEL',
-                    'CCC_ANALYZER_PLUGINS',
-                    'CCC_ANALYZER_INTERNAL_STATS',
-                    'CCC_ANALYZER_OUTPUT_FORMAT') {
-    my $x = $Options->{$opt};
-    if (defined $x) { $ENV{$opt} = $x }
-  }
-  my $Verbose = $Options->{'VERBOSE'};
-  if ($Verbose >= 2) {
-    $ENV{'CCC_ANALYZER_VERBOSE'} = 1;
-  }
-  if ($Verbose >= 3) {
-    $ENV{'CCC_ANALYZER_LOG'} = 1;
-  }
-}
-
-sub RunXcodebuild {
-  my $Args = shift;
-  my $IgnoreErrors = shift;
-  my $CCAnalyzer = shift;
-  my $CXXAnalyzer = shift;
-  my $Options = shift;
-
-  if ($IgnoreErrors) {
-    AddIfNotPresent($Args,"-PBXBuildsContinueAfterErrors=YES");
-  }
-
-  # Detect the version of Xcode.  If Xcode 4.6 or higher, use new
-  # in situ support for analyzer interposition without needed to override
-  # the compiler.
-  open(DETECT_XCODE, "xcodebuild -version |") or
-    die "error: cannot detect version of xcodebuild\n";
-
-  my $oldBehavior = 1;
-
-  while(<DETECT_XCODE>) {
-    if (/^Xcode (.+)$/) {
-      my $ver = $1;
-      if ($ver =~ /^([0-9]+[.][0-9]+)[^0-9]?/) {
-        if ($1 >= 4.6) {
-          $oldBehavior = 0;
-          last;
-        }
-      }
-    }
-  }
-  close(DETECT_XCODE);
-  
-  if ($oldBehavior == 0) {
-    my $OutputDir = $Options->{"OUTPUT_DIR"};
-    my $CLANG = $Options->{"CLANG"};
-    my $OtherFlags = $Options->{"CCC_ANALYZER_ANALYSIS"};
-    push @$Args,
-        "RUN_CLANG_STATIC_ANALYZER=YES",
-        "CLANG_ANALYZER_OUTPUT=plist-html",
-        "CLANG_ANALYZER_EXEC=$CLANG",
-        "CLANG_ANALYZER_OUTPUT_DIR=$OutputDir",
-        "CLANG_ANALYZER_OTHER_FLAGS=$OtherFlags";
-
-    return (system(@$Args) >> 8);
-  }
-  
-  # Default to old behavior where we insert a bogus compiler.
-  SetEnv($Options);
-  
-  # Check if using iPhone SDK 3.0 (simulator).  If so the compiler being
-  # used should be gcc-4.2.
-  if (!defined $ENV{"CCC_CC"}) {
-    for (my $i = 0 ; $i < scalar(@$Args); ++$i) {
-      if ($Args->[$i] eq "-sdk" && $i + 1 < scalar(@$Args)) {
-        if (@$Args[$i+1] =~ /^iphonesimulator3/) {
-          $ENV{"CCC_CC"} = "gcc-4.2";
-          $ENV{"CCC_CXX"} = "g++-4.2";
-        }
-      }
-    }
-  }
-
-  # Disable PCH files until clang supports them.
-  AddIfNotPresent($Args,"GCC_PRECOMPILE_PREFIX_HEADER=NO");
-  
-  # When 'CC' is set, xcodebuild uses it to do all linking, even if we are
-  # linking C++ object files.  Set 'LDPLUSPLUS' so that xcodebuild uses 'g++'
-  # (via c++-analyzer) when linking such files.
-  $ENV{"LDPLUSPLUS"} = $CXXAnalyzer;
- 
-  return (system(@$Args) >> 8); 
-}
-
-sub RunBuildCommand {  
-  my $Args = shift;
-  my $IgnoreErrors = shift;
-  my $Cmd = $Args->[0];
-  my $CCAnalyzer = shift;
-  my $CXXAnalyzer = shift;
-  my $Options = shift;
-  
-  # Get only the part of the command after the last '/'.
-  if ($Cmd =~ /\/([^\/]+)$/) {
-    $Cmd = $1;
-  }
-  
-  if ($Cmd eq "xcodebuild") {
-    return RunXcodebuild($Args, $IgnoreErrors, $CCAnalyzer, $CXXAnalyzer, $Options);
-  }
-  
-  # Setup the environment.
-  SetEnv($Options);
-  
-  if ($Cmd =~ /(.*\/?gcc[^\/]*$)/ or 
-      $Cmd =~ /(.*\/?cc[^\/]*$)/ or
-      $Cmd =~ /(.*\/?llvm-gcc[^\/]*$)/ or
-      $Cmd =~ /(.*\/?clang$)/ or 
-      $Cmd =~ /(.*\/?ccc-analyzer[^\/]*$)/) {
-
-    if (!($Cmd =~ /ccc-analyzer/) and !defined $ENV{"CCC_CC"}) {
-      $ENV{"CCC_CC"} = $1;      
-    }
-        
-    shift @$Args;
-    unshift @$Args, $CCAnalyzer;
-  }
-  elsif ($Cmd =~ /(.*\/?g\+\+[^\/]*$)/ or 
-        $Cmd =~ /(.*\/?c\+\+[^\/]*$)/ or
-        $Cmd =~ /(.*\/?llvm-g\+\+[^\/]*$)/ or
-        $Cmd =~ /(.*\/?clang\+\+$)/ or
-        $Cmd =~ /(.*\/?c\+\+-analyzer[^\/]*$)/) {
-    if (!($Cmd =~ /c\+\+-analyzer/) and !defined $ENV{"CCC_CXX"}) {
-      $ENV{"CCC_CXX"} = $1;      
-    }        
-    shift @$Args;
-    unshift @$Args, $CXXAnalyzer;
-  }
-  elsif ($IgnoreErrors) {
-    if ($Cmd eq "make" or $Cmd eq "gmake") {
-      AddIfNotPresent($Args, "CC=$CCAnalyzer");
-      AddIfNotPresent($Args, "CXX=$CXXAnalyzer");
-      AddIfNotPresent($Args,"-k");
-      AddIfNotPresent($Args,"-i");
-    }
-  } 
-
-  return (system(@$Args) >> 8);
-}
-
-##----------------------------------------------------------------------------##
-# DisplayHelp - Utility function to display all help options.
-##----------------------------------------------------------------------------##
-
-sub DisplayHelp {
-  
-print <<ENDTEXT;
-USAGE: $Prog [options] <build command> [build options]
-
-ENDTEXT
-
-  if (defined $BuildName) {
-    print "ANALYZER BUILD: $BuildName ($BuildDate)\n\n";
-  }
-
-print <<ENDTEXT;
-OPTIONS:
-
- -analyze-headers
- 
-   Also analyze functions in #included files.  By default, such functions
-   are skipped unless they are called by functions within the main source file.
- 
- -o <output location>
-  
-   Specifies the output directory for analyzer reports. Subdirectories will be
-   created as needed to represent separate "runs" of the analyzer. If this
-   option is not specified, a directory is created in /tmp (TMPDIR on Mac OS X)
-   to store the reports.
-
- -h             
- --help
-
-   Display this message.
-
- -k
- --keep-going
-				  
-   Add a "keep on going" option to the specified build command. This option
-   currently supports make and xcodebuild. This is a convenience option; one
-   can specify this behavior directly using build options.
-
- --html-title [title]
- --html-title=[title]
-
-   Specify the title used on generated HTML pages. If not specified, a default
-   title will be used.
-
- -plist
- 
-   By default the output of scan-build is a set of HTML files. This option
-   outputs the results as a set of .plist files.
- 
- -plist-html
- 
-   By default the output of scan-build is a set of HTML files. This option
-   outputs the results as a set of HTML and .plist files.
- 
- --status-bugs
- 
-   By default, the exit status of scan-build is the same as the executed build
-   command. Specifying this option causes the exit status of scan-build to be 1
-   if it found potential bugs and 0 otherwise.
-
- --use-cc [compiler path]   
- --use-cc=[compiler path]
-  
-   scan-build analyzes a project by interposing a "fake compiler", which
-   executes a real compiler for compilation and the static analyzer for analysis.
-   Because of the current implementation of interposition, scan-build does not
-   know what compiler your project normally uses.  Instead, it simply overrides
-   the CC environment variable, and guesses your default compiler.
-   
-   In the future, this interposition mechanism to be improved, but if you need
-   scan-build to use a specific compiler for *compilation* then you can use
-   this option to specify a path to that compiler.
-
- --use-c++ [compiler path]
- --use-c++=[compiler path]
- 
-   This is the same as "-use-cc" but for C++ code.
- 
- -v
- 
-   Enable verbose output from scan-build. A second and third '-v' increases
-   verbosity.
-
- -V
- --view
-
-   View analysis results in a web browser when the build completes.
-
-ADVANCED OPTIONS:
-
- -no-failure-reports
- 
-   Do not create a 'failures' subdirectory that includes analyzer crash reports
-   and preprocessed source files.
-
- -stats
- 
-   Generates visitation statistics for the project being analyzed.
-
- -maxloop <loop count>
- 
-   Specifiy the number of times a block can be visited before giving up.
-   Default is 4. Increase for more comprehensive coverage at a cost of speed.
-  
- -internal-stats
- 
-   Generate internal analyzer statistics.
- 
- --use-analyzer [Xcode|path to clang] 
- --use-analyzer=[Xcode|path to clang]
- 
-   scan-build uses the 'clang' executable relative to itself for static
-   analysis. One can override this behavior with this option by using the
-   'clang' packaged with Xcode (on OS X) or from the PATH.
-
- --keep-empty
-
-   Don't remove the build results directory even if no issues were reported.
-
-CONTROLLING CHECKERS:
-
- A default group of checkers are always run unless explicitly disabled.
- Checkers may be enabled/disabled using the following options:
-
- -enable-checker [checker name]
- -disable-checker [checker name]
- 
-LOADING CHECKERS:
-
- Loading external checkers using the clang plugin interface:
-
- -load-plugin [plugin library]
-ENDTEXT
-
-# Query clang for list of checkers that are enabled.
-
-# create a list to load the plugins via the 'Xclang' command line
-# argument
-my @PluginLoadCommandline_xclang;
-foreach my $param ( @PluginsToLoad ) {
-  push ( @PluginLoadCommandline_xclang, "-Xclang" );
-  push ( @PluginLoadCommandline_xclang, $param );
-}
-my %EnabledCheckers;
-foreach my $lang ("c", "objective-c", "objective-c++", "c++") {
-  pipe(FROM_CHILD, TO_PARENT);
-  my $pid = fork();
-  if ($pid == 0) {
-    close FROM_CHILD;
-    open(STDOUT,">&", \*TO_PARENT);
-    open(STDERR,">&", \*TO_PARENT);
-    exec $Clang, ( @PluginLoadCommandline_xclang, '--analyze', '-x', $lang, '-', '-###'); 
-  }
-  close(TO_PARENT);
-  while(<FROM_CHILD>) {
-    foreach my $val (split /\s+/) {
-      $val =~ s/\"//g;
-      if ($val =~ /-analyzer-checker\=([^\s]+)/) {
-        $EnabledCheckers{$1} = 1;
-      }
-    }
-  }
-  waitpid($pid,0);
-  close(FROM_CHILD);
-}
-
-# Query clang for complete list of checkers.
-if (defined $Clang && -x $Clang) {
-  pipe(FROM_CHILD, TO_PARENT);
-  my $pid = fork();
-  if ($pid == 0) {
-    close FROM_CHILD;
-    open(STDOUT,">&", \*TO_PARENT);
-    open(STDERR,">&", \*TO_PARENT);
-    exec $Clang, ('-cc1', @PluginsToLoad , '-analyzer-checker-help');
-  }
-  close(TO_PARENT);
-  my $foundCheckers = 0;
-  while(<FROM_CHILD>) {
-    if (/CHECKERS:/) {
-      $foundCheckers = 1;
-      last;
-    }
-  }
-  if (!$foundCheckers) {
-    print "  *** Could not query Clang for the list of available checkers.";
-  }
-  else {
-    print("\nAVAILABLE CHECKERS:\n\n");
-    my $skip = 0;
-    while(<FROM_CHILD>) {
-      if (/experimental/) {
-        $skip = 1;
-        next;
-      }
-      if ($skip) {
-        next if (!/^\s\s[^\s]/);
-        $skip = 0;
-      }
-      s/^\s\s//;
-      if (/^([^\s]+)/) {
-        # Is the checker enabled?
-        my $checker = $1;
-        my $enabled = 0;
-        my $aggregate = "";
-        foreach my $domain (split /\./, $checker) {
-          $aggregate .= $domain;
-          if ($EnabledCheckers{$aggregate}) {
-            $enabled =1;
-            last;
-          }
-          # append a dot, if an additional domain is added in the next iteration
-          $aggregate .= ".";
-        }
-      
-        if ($enabled) {
-          print " + ";
-        }
-        else {
-          print "   ";
-        }
-      }
-      else {
-        print "   ";
-      }
-      print $_;
-    }
-    print "\nNOTE: \"+\" indicates that an analysis is enabled by default.\n"
-  }
-  waitpid($pid,0);
-  close(FROM_CHILD);
-}
-
-print <<ENDTEXT
-
-BUILD OPTIONS
-
- You can specify any build option acceptable to the build command.
-
-EXAMPLE
-
- scan-build -o /tmp/myhtmldir make -j4
-     
-The above example causes analysis reports to be deposited into a subdirectory
-of "/tmp/myhtmldir" and to run "make" with the "-j4" option. A different
-subdirectory is created each time scan-build analyzes a project. The analyzer
-should support most parallel builds, but not distributed builds.
-
-ENDTEXT
-}
-
-##----------------------------------------------------------------------------##
-# HtmlEscape - HTML entity encode characters that are special in HTML
-##----------------------------------------------------------------------------##
-
-sub HtmlEscape {
-  # copy argument to new variable so we don't clobber the original
-  my $arg = shift || '';
-  my $tmp = $arg;
-  $tmp =~ s/&/&/g;
-  $tmp =~ s/</</g;
-  $tmp =~ s/>/>/g;
-  return $tmp;
-}
-
-##----------------------------------------------------------------------------##
-# ShellEscape - backslash escape characters that are special to the shell
-##----------------------------------------------------------------------------##
-
-sub ShellEscape {
-  # copy argument to new variable so we don't clobber the original
-  my $arg = shift || '';
-  if ($arg =~ /["\s]/) { return "'" . $arg . "'"; }
-  return $arg;
-}
-
-##----------------------------------------------------------------------------##
-# Process command-line arguments.
-##----------------------------------------------------------------------------##
-
-my $AnalyzeHeaders = 0;
-my $HtmlDir;           # Parent directory to store HTML files.
-my $IgnoreErrors = 0;  # Ignore build errors.
-my $ViewResults  = 0;  # View results when the build terminates.
-my $ExitStatusFoundBugs = 0; # Exit status reflects whether bugs were found
-my $KeepEmpty    = 0;  # Don't remove output directory even with 0 results.
-my @AnalysesToRun;
-my $StoreModel;
-my $ConstraintsModel;
-my $InternalStats;
-my $OutputFormat = "html";
-my $AnalyzerStats = 0;
-my $MaxLoop = 0;
-my $RequestDisplayHelp = 0;
-my $ForceDisplayHelp = 0;
-my $AnalyzerDiscoveryMethod;
-
-if (!@ARGV) {
-  $ForceDisplayHelp = 1
-}
-
-while (@ARGV) {
-  
-  # Scan for options we recognize.
-  
-  my $arg = $ARGV[0];
-
-  if ($arg eq "-h" or $arg eq "--help") {
-    $RequestDisplayHelp = 1;
-    shift @ARGV;
-    next;
-  }
-  
-  if ($arg eq '-analyze-headers') {
-    shift @ARGV;    
-    $AnalyzeHeaders = 1;
-    next;
-  }
-  
-  if ($arg eq "-o") {
-    shift @ARGV;
-        
-    if (!@ARGV) {
-      DieDiag("'-o' option requires a target directory name.\n");
-    }
-    
-    # Construct an absolute path.  Uses the current working directory
-    # as a base if the original path was not absolute.
-    $HtmlDir = abs_path(shift @ARGV);
-    
-    next;
-  }
-
-  if ($arg =~ /^--html-title(=(.+))?$/) {
-    shift @ARGV;
-
-    if (!defined $2 || $2 eq '') {
-      if (!@ARGV) {
-        DieDiag("'--html-title' option requires a string.\n");
-      }
-
-      $HtmlTitle = shift @ARGV;
-    } else {
-      $HtmlTitle = $2;
-    }
-
-    next;
-  }
-  
-  if ($arg eq "-k" or $arg eq "--keep-going") {
-    shift @ARGV;
-    $IgnoreErrors = 1;
-    next;
-  }
-
-  if ($arg =~ /^--use-cc(=(.+))?$/) {
-    shift @ARGV;
-    my $cc;
-    
-    if (!defined $2 || $2 eq "") {
-      if (!@ARGV) {
-        DieDiag("'--use-cc' option requires a compiler executable name.\n");
-      }
-      $cc = shift @ARGV;
-    }
-    else {
-      $cc = $2;
-    }
-    
-    $ENV{"CCC_CC"} = $cc;
-    next;
-  }
-  
-  if ($arg =~ /^--use-c\+\+(=(.+))?$/) {
-    shift @ARGV;
-    my $cxx;    
-    
-    if (!defined $2 || $2 eq "") {
-      if (!@ARGV) {
-        DieDiag("'--use-c++' option requires a compiler executable name.\n");
-      }
-      $cxx = shift @ARGV;
-    }
-    else {
-      $cxx = $2;
-    }
-    
-    $ENV{"CCC_CXX"} = $cxx;
-    next;
-  }
-  
-  if ($arg eq "-v") {
-    shift @ARGV;
-    $Verbose++;
-    next;
-  }
-  
-  if ($arg eq "-V" or $arg eq "--view") {
-    shift @ARGV;
-    $ViewResults = 1;    
-    next;
-  }
-  
-  if ($arg eq "--status-bugs") {
-    shift @ARGV;
-    $ExitStatusFoundBugs = 1;
-    next;
-  }
-
-  if ($arg eq "-store") {
-    shift @ARGV;
-    $StoreModel = shift @ARGV;
-    next;
-  }
-  
-  if ($arg eq "-constraints") {
-    shift @ARGV;
-    $ConstraintsModel = shift @ARGV;
-    next;
-  }
-
-  if ($arg eq "-internal-stats") {
-    shift @ARGV;
-    $InternalStats = 1;
-    next;
-  }
-  
-  if ($arg eq "-plist") {
-    shift @ARGV;
-    $OutputFormat = "plist";
-    next;
-  }
-  if ($arg eq "-plist-html") {
-    shift @ARGV;
-    $OutputFormat = "plist-html";
-    next;
-  }
-  
-  if ($arg eq "-no-failure-reports") {
-    $ENV{"CCC_REPORT_FAILURES"} = 0;
-    next;
-  }
-  if ($arg eq "-stats") {
-    shift @ARGV;
-    $AnalyzerStats = 1;
-    next;
-  }
-  if ($arg eq "-maxloop") {
-    shift @ARGV;
-    $MaxLoop = shift @ARGV;
-    next;
-  }
-  if ($arg eq "-enable-checker") {
-    shift @ARGV;
-    push @AnalysesToRun, "-analyzer-checker", shift @ARGV;
-    next;
-  }
-  if ($arg eq "-disable-checker") {
-    shift @ARGV;
-    push @AnalysesToRun, "-analyzer-disable-checker", shift @ARGV;
-    next;
-  }
-  if ($arg eq "-load-plugin") {
-    shift @ARGV;
-    push @PluginsToLoad, "-load", shift @ARGV;
-    next;
-  }
-  if ($arg eq "--use-analyzer") {
- 	shift @ARGV;
-  	$AnalyzerDiscoveryMethod = shift @ARGV;
-	next;
-  }
-  if ($arg =~ /^--use-analyzer=(.+)$/) {
-    shift @ARGV;
-	$AnalyzerDiscoveryMethod = $1;
-	next;
-  }
-  if ($arg eq "--keep-empty") {
-    shift @ARGV;
-    $KeepEmpty = 1;
-    next;
-  }
-  
-  DieDiag("unrecognized option '$arg'\n") if ($arg =~ /^-/);
-  
-  last;
-}
-
-if (!@ARGV and !$RequestDisplayHelp) {
-  ErrorDiag("No build command specified.\n\n");
-  $ForceDisplayHelp = 1;
-}
-
-# Find 'clang'
-if (!defined $AnalyzerDiscoveryMethod) {
-  $Clang = Cwd::realpath("$RealBin/bin/clang");
-  if (!defined $Clang || ! -x $Clang) {
-    $Clang = Cwd::realpath("$RealBin/clang");
-  }
-  if (!defined $Clang || ! -x $Clang) {
-    if (!$RequestDisplayHelp && !$ForceDisplayHelp) {
-      DieDiag("error: Cannot find an executable 'clang' relative to scan-build." .
-   	          "  Consider using --use-analyzer to pick a version of 'clang' to use for static analysis.\n");
-    }
-  }
-} 
-else {  
-  if ($AnalyzerDiscoveryMethod =~ /^[Xx]code$/) {
-	my $xcrun = `which xcrun`;
-    chomp $xcrun;
-	if ($xcrun eq "") {
-  	  DieDiag("Cannot find 'xcrun' to find 'clang' for analysis.\n");
-	}
-    $Clang = `$xcrun -toolchain XcodeDefault -find clang`;
-    chomp $Clang;  
-    if ($Clang eq "") {
-      DieDiag("No 'clang' executable found by 'xcrun'\n"); 
-    }
-  }
-  else {
-    $Clang = Cwd::realpath($AnalyzerDiscoveryMethod);
-	if (!defined $Clang or not -x $Clang) {
-   	  DieDiag("Cannot find an executable clang at '$AnalyzerDiscoveryMethod'\n");
-	}
-  }
-}
-
-if ($ForceDisplayHelp || $RequestDisplayHelp) {
-  DisplayHelp();
-  exit $ForceDisplayHelp;
-}
-
-$ClangCXX = $Clang;
-# Determine operating system under which this copy of Perl was built.
-my $IsWinBuild = ($^O =~/msys|cygwin|MSWin32/);
-if($IsWinBuild) {
-  $ClangCXX =~ s/.exe$/++.exe/;
-}
-else {
-  $ClangCXX =~ s/\-\d+\.\d+$//;
-  $ClangCXX .= "++";
-}
-
-# Make sure to use "" to handle paths with spaces.
-$ClangVersion = HtmlEscape(`"$Clang" --version`);
-
-# Determine where results go.
-$CmdArgs = HtmlEscape(join(' ', map(ShellEscape($_), @ARGV)));
-$HtmlTitle = "${CurrentDirSuffix} - scan-build results"
-  unless (defined($HtmlTitle));
-
-# Determine the output directory for the HTML reports.
-my $BaseDir = $HtmlDir;
-$HtmlDir = GetHTMLRunDir($HtmlDir);
-
-# Determine the location of ccc-analyzer.
-my $AbsRealBin = Cwd::realpath($RealBin);
-my $Cmd = "$AbsRealBin/libexec/ccc-analyzer";
-my $CmdCXX = "$AbsRealBin/libexec/c++-analyzer";
-
-if (!defined $Cmd || ! -x $Cmd) {
-  $Cmd = "$AbsRealBin/ccc-analyzer";
-  DieDiag("Executable 'ccc-analyzer' does not exist at '$Cmd'\n") if(! -x $Cmd);
-}
-if (!defined $CmdCXX || ! -x $CmdCXX) {
-  $CmdCXX = "$AbsRealBin/c++-analyzer";
-  DieDiag("Executable 'c++-analyzer' does not exist at '$CmdCXX'\n") if(! -x $CmdCXX);
-}
-
-Diag("Using '$Clang' for static analysis\n");
-
-SetHtmlEnv(\@ARGV, $HtmlDir);
-if ($AnalyzeHeaders) { push @AnalysesToRun,"-analyzer-opt-analyze-headers"; }
-if ($AnalyzerStats) { push @AnalysesToRun, '-analyzer-checker=debug.Stats'; }
-if ($MaxLoop > 0) { push @AnalysesToRun, "-analyzer-max-loop $MaxLoop"; }
-
-# Delay setting up other environment variables in case we can do true
-# interposition.
-my $CCC_ANALYZER_ANALYSIS = join ' ', at AnalysesToRun;
-my $CCC_ANALYZER_PLUGINS = join ' ', at PluginsToLoad;
-my %Options = (
-  'CC' => $Cmd,
-  'CXX' => $CmdCXX,
-  'CLANG' => $Clang,
-  'CLANG_CXX' => $ClangCXX,
-  'VERBOSE' => $Verbose,
-  'CCC_ANALYZER_ANALYSIS' => $CCC_ANALYZER_ANALYSIS,
-  'CCC_ANALYZER_PLUGINS' => $CCC_ANALYZER_PLUGINS,
-  'OUTPUT_DIR' => $HtmlDir
-);
-
-if (defined $StoreModel) {
-  $Options{'CCC_ANALYZER_STORE_MODEL'} = $StoreModel;
-}
-if (defined $ConstraintsModel) {
-  $Options{'CCC_ANALYZER_CONSTRAINTS_MODEL'} = $ConstraintsModel;
-}
-if (defined $InternalStats) {
-  $Options{'CCC_ANALYZER_INTERNAL_STATS'} = 1;
-}
-if (defined $OutputFormat) {
-  $Options{'CCC_ANALYZER_OUTPUT_FORMAT'} = $OutputFormat;
-}
-
-# Run the build.
-my $ExitStatus = RunBuildCommand(\@ARGV, $IgnoreErrors, $Cmd, $CmdCXX,
-                                \%Options);
-
-if (defined $OutputFormat) {
-  if ($OutputFormat =~ /plist/) {
-    Diag "Analysis run complete.\n";
-    Diag "Analysis results (plist files) deposited in '$HtmlDir'\n";
-  }
-  if ($OutputFormat =~ /html/) {
-    # Postprocess the HTML directory.
-    my $NumBugs = Postprocess($HtmlDir, $BaseDir, $AnalyzerStats, $KeepEmpty);
-
-    if ($ViewResults and -r "$HtmlDir/index.html") {
-      Diag "Analysis run complete.\n";
-      Diag "Viewing analysis results in '$HtmlDir' using scan-view.\n";
-      my $ScanView = Cwd::realpath("$RealBin/scan-view");
-      if (! -x $ScanView) { $ScanView = "scan-view"; }
-      exec $ScanView, "$HtmlDir";
-    }
-
-    if ($ExitStatusFoundBugs) {
-      exit 1 if ($NumBugs > 0);
-      exit 0;
-    }
-  }
-}
-
-exit $ExitStatus;
-

Modified: trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build.1
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build.1	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build.1	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,349 +0,0 @@
-.\" This file is distributed under the University of Illinois Open Source
-.\" License. See LICENSE.TXT for details.
-.\" $Id: scan-build.1 167537 2012-11-07 17:12:37Z jrose $
-.Dd May 25, 2012
-.Dt SCAN-BUILD 1
-.Os "clang" "3.1"
-.Sh NAME
-.Nm scan-build
-.Nd Clang static analyzer
-.Sh SYNOPSIS
-.Nm
-.Op Fl ohkvV
-.Op Fl analyze-headers
-.Op Fl enable-checker Op Ar checker_name
-.Op Fl disable-checker Op Ar checker_name
-.Op Fl Fl help
-.Op Fl Fl help-checkers
-.Op Fl Fl html-title Op Ar =title
-.Op Fl Fl keep-going
-.Op Fl plist
-.Op Fl plist-html
-.Op Fl Fl status-bugs
-.Op Fl Fl use-c++ Op Ar =compiler_path
-.Op Fl Fl use-cc Op Ar =compiler_path
-.Op Fl Fl view
-.Op Fl constraints Op Ar model
-.Op Fl maxloop Ar N
-.Op Fl no-failure-reports
-.Op Fl stats
-.Op Fl store Op Ar model
-.Ar build_command
-.Op build_options
-.\"
-.\" Sh DESCRIPTION
-.Sh DESCRIPTION
-.Nm
-is a Perl script that invokes the Clang static analyzer.  Options used by
-.Nm
-or by the analyzer appear first, followed by the
-.Ar build_command
-and any
-.Ar build_options
-normally used to build the target system.
-.Pp
-The static analyzer employs a long list of checking algorithms, see
-.Sx CHECKERS .
-Output can be written in standard
-.Li .plist
-and/or HTML format.
-.Pp
-The following options are supported:
-.Bl -tag -width indent
-.It Fl analyze-headers
-Also analyze functions in #included files.
-.It Fl enable-checker Ar checker_name , Fl disable-checker Ar checker_name
-Enable/disable
-.Ar checker_name .
-See
-.Sx CHECKERS .
-.It Fl h , Fl Fl help
-Display this message.
-.It Fl Fl help-checkers
-List default checkers, see
-.Sx CHECKERS .
-.It Fl Fl html-title Ns Op = Ns Ar title
-Specify the title used on generated HTML pages.
-A default title is generated if
-.Ar title
-is not specified.
-.It Fl k , Fl Fl keep-going
-Add a
-.Dq keep on going
-option to
-.Ar build_command .
-Currently supports make and xcodebuild. This is a convenience option;
-one can specify this behavior directly using build options.
-.It Fl o
-Target directory for HTML report files.  Subdirectories will be
-created as needed to represent separate invocations
-of the analyzer.  If this option is not specified, a directory is
-created in /tmp (TMPDIR on Mac OS X) to store the reports.
-.It Fl plist
-Output the results as a set of
-.Li .plist
-files. (By default the output of
-.Nm
-is a set of HTML files.)
-.It Fl plist-html
-Output the results as a set of HTML and .plist files
-.It Fl Fl status-bugs
-Set exit status to 1 if it found potential bugs and 0 otherwise. By
-default the exit status of
-.Nm
-is that returned by
-.Ar build_command .
-.It Fl Fl use-c++ Ns Op = Ns Ar compiler_path
-Guess the default compiler for your C++ and Objective-C++ code. Use this
-option to specify an alternate compiler.
-.It Fl Fl use-cc Ns Op = Ns Ar compiler_path
-Guess the default compiler for your C and Objective-C code. Use this
-option to specify an alternate compiler.
-.It Fl v
-Verbose output from
-.Nm
-and the analyzer. A second and
-third
-.Ar v
-increases verbosity.
-.It Fl V , Fl Fl view
-View analysis results in a web browser when the build completes.
-.It Fl constraints Op Ar model
-Specify the contraint engine used by the analyzer.  By default the
-.Ql range
-model is used.  Specifying
-.Ql basic
-uses a simpler, less powerful constraint model used by checker-0.160
-and earlier.
-.It Fl maxloop Ar N
-Specifiy the number of times a block can be visited before giving
-up. Default is 4. Increase for more comprehensive coverage at a
-cost of speed.
-.It Fl no-failure-reports
-Do not create a
-.Ql failures
-subdirectory that includes analyzer crash reports and preprocessed
-source files.
-.It Fl stats
-Generates visitation statistics for the project being analyzed.
-.It Fl store Op Ar model
-Specify the store model used by the analyzer. By default, the
-.Ql region
-store model is used.
-.Ql region
-specifies a field-
-sensitive store model. Users can also specify
-.Ql basic
-which is far less precise but can more quickly analyze code.
-.Ql basic
-was the default store model for checker-0.221 and earlier.
-.\"
-.El
-.Sh EXIT STATUS
-.Nm
-returns the value returned by
-.Ar build_command
-unless
-.Fl Fl status-bugs
-or
-.Fl Fl keep-going
-is used.
-.\"
-.\" Other sections not yet used ...
-.\" .Sh ENVIRONMENT
-.\" .Sh FILES
-.\" .Sh DIAGNOSTICS
-.\" .Sh COMPATIBILITY
-.\" .Sh HISTORY
-.\" .Sh BUGS
-.\"
-.Sh CHECKERS
-The checkers listed below may be enabled/disabled using the
-.Fl enable-checker
-and
-.Fl disable-checker
-options.
-A default group of checkers is run unless explicitly disabled.
-Exactly which checkers constitute the default group is a function
-of the operating system in use; they are listed with
-.Fl Fl help-checkers .
-.Bl -tag -width indent.
-.It core.AdjustedReturnValue
-Check to see if the return value of a function call is different than
-the caller expects (e.g., from calls through function pointers).
-.It core.AttributeNonNull
-Check for null pointers passed as arguments to a function whose arguments are marked with the
-.Ql nonnull
-attribute.
-.It core.CallAndMessage
-Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers).
-.It core.DivideZero
-Check for division by zero.
-.It core.NullDereference
-Check for dereferences of null pointers.
-.It core.StackAddressEscape
-Check that addresses to stack memory do not escape the function.
-.It core.UndefinedBinaryOperatorResult
-Check for undefined results of binary operators.
-.It core.VLASize
-Check for declarations of VLA of undefined or zero size.
-.It core.builtin.BuiltinFunctions
-Evaluate compiler builtin functions, e.g.
-.Fn alloca .
-.It core.builtin.NoReturnFunctions
-Evaluate
-.Ql panic
-functions that are known to not return to the caller.
-.It core.uninitialized.ArraySubscript
-Check for uninitialized values used as array subscripts.
-.It core.uninitialized.Assign
-Check for assigning uninitialized values.
-.It core.uninitialized.Branch
-Check for uninitialized values used as branch conditions.
-.It core.uninitialized.CapturedBlockVariable
-Check for blocks that capture uninitialized values.
-.It core.uninitialized.UndefReturn
-Check for uninitialized values being returned to the caller.
-.It deadcode.DeadStores
-Check for values stored to variables that are never read afterwards.
-.It debug.DumpCFG
-Display Control-Flow Graphs.
-.It debug.DumpCallGraph
-Display Call Graph.
-.It debug.DumpDominators
-Print the dominance tree for a given Control-Flow Graph.
-.It debug.DumpLiveVars
-Print results of live variable analysis.
-.It debug.Stats
-Emit warnings with analyzer statistics.
-.It debug.TaintTest
-Mark tainted symbols as such.
-.It debug.ViewCFG
-View Control-Flow Graphs using
-.Ic GraphViz .
-.It debug.ViewCallGraph
-View Call Graph using
-.Ic GraphViz .
-.It llvm.Conventions
-Check code for LLVM codebase conventions.
-.It osx.API
-Check for proper uses of various Mac OS X APIs.
-.It osx.AtomicCAS
-Evaluate calls to
-.Vt OSAtomic
-functions.
-.It osx.SecKeychainAPI
-Check for proper uses of Secure Keychain APIs.
-.It osx.cocoa.AtSync
-Check for null pointers used as mutexes for @synchronized.
-.It osx.cocoa.ClassRelease
-Check for sending
-.Ql retain ,
-.Ql release,
-or
-.Ql autorelease
-directly to a Class.
-.It osx.cocoa.IncompatibleMethodTypes
-Warn about Objective-C method signatures with type incompatibilities.
-.It osx.cocoa.NSAutoreleasePool
-Warn for suboptimal uses of
-.Vt NSAutoreleasePool
-in Objective-C GC mode.
-.It osx.cocoa.NSError
-Check usage of NSError** parameters.
-.It osx.cocoa.NilArg
-Check for prohibited nil arguments to Objective-C method calls.
-.It osx.cocoa.RetainCount
-Check for leaks and improper reference count management.
-.It osx.cocoa.SelfInit
-Check that
-.Ql self
-is properly initialized inside an initializer method.
-.It osx.cocoa.UnusedIvars
-Warn about private ivars that are never used.
-.It osx.cocoa.VariadicMethodTypes
-Check for passing non-Objective-C types to variadic methods that expect only Objective-C types.
-.It osx.coreFoundation.CFError
-Check usage of CFErrorRef* parameters.
-.It osx.coreFoundation.CFNumber
-Check for proper uses of
-.Fn CFNumberCreate .
-.It osx.coreFoundation.CFRetainRelease
-Check for null arguments to
-.Fn CFRetain ,
-.Fn CFRelease ,
-and
-.Fn CFMakeCollectable .
-.It osx.coreFoundation.containers.OutOfBounds
-Checks for index out-of-bounds when using the
-.Vt CFArray
-API.
-.It osx.coreFoundation.containers.PointerSizedValues
-Warns if
-.Vt CFArray ,
-.Vt CFDictionary ,
-or
-.Vt CFSet
-are created with non-pointer-size values.
-.It security.FloatLoopCounter
-Warn on using a floating point value as a loop counter (CERT: FLP30-C, FLP30-CPP).
-.It security.insecureAPI.UncheckedReturn
-Warn on uses of functions whose return values must be always checked.
-.It security.insecureAPI.getpw
-Warn on uses of
-.Fn getpw .
-.It security.insecureAPI.gets
-Warn on uses of
-.Fn gets .
-.It security.insecureAPI.mkstemp
-Warn when
-.Fn mkstemp
-is passed fewer than 6 X's in the format string.
-.It security.insecureAPI.mktemp
-Warn on uses of
-.Fn mktemp .
-.It security.insecureAPI.rand
-Warn on uses of
-.Fn rand ,
-.Fn random ,
-and related functions.
-.It security.insecureAPI.strcpy
-Warn on uses of
-.Fn strcpy
-and
-.Fn strcat .
-.It security.insecureAPI.vfork
-Warn on uses of
-.Fn vfork .
-.It unix.API
-Check calls to various UNIX/Posix functions.
-.It unix.Malloc
-Check for memory leaks, double free, and use-after-free.
-.It unix.cstring.BadSizeArg
-Check the size argument passed into C string functions for common
-erroneous patterns.
-.It unix.cstring.NullArg
-Check for null pointers being passed as arguments to C string functions.
-.El
-.\"
-.Sh EXAMPLE
-.Ic scan-build -o /tmp/myhtmldir make -j4
-.Pp
-The above example causes analysis reports to be deposited into
-a subdirectory of
-.Pa /tmp/myhtmldir
-and to run
-.Ic make
-with the
-.Fl j4
-option.
-A different subdirectory is created each time
-.Nm
-analyzes a project.
-The analyzer should support most parallel builds, but not distributed builds.
-.Sh AUTHORS
-.Nm
-was written by
-.An "Ted Kremenek" .
-Documentation contributed by
-.An "James K. Lowden" Aq jklowden at schemamania.org .

Modified: trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build.bat
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build.bat	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-build/scan-build.bat	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-perl -S scan-build %*

Modified: trunk/contrib/llvm/tools/clang/tools/scan-build/scanview.css
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-build/scanview.css	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-build/scanview.css	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-body { color:#000000; background-color:#ffffff }
-body { font-family: Helvetica, sans-serif; font-size:9pt }
-h1 { font-size: 14pt; }
-h2 { font-size: 12pt; }
-table { font-size:9pt }
-table { border-spacing: 0px; border: 1px solid black }
-th, table thead {
-  background-color:#eee; color:#666666;
-  font-weight: bold; cursor: default;
-  text-align:center;
-  font-weight: bold; font-family: Verdana;
-  white-space:nowrap;
-} 
-.W { font-size:0px }
-th, td { padding:5px; padding-left:8px; text-align:left }
-td.SUMM_DESC { padding-left:12px }
-td.DESC { white-space:pre }
-td.Q { text-align:right }
-td { text-align:left }
-tbody.scrollContent { overflow:auto }
-
-table.form_group {
-    background-color: #ccc;
-    border: 1px solid #333; 
-    padding: 2px;
-}
-
-table.form_inner_group {
-    background-color: #ccc;
-    border: 1px solid #333;
-    padding: 0px;
-}
-
-table.form {
-    background-color: #999;
-    border: 1px solid #333; 
-    padding: 2px;
-}
-
-td.form_label {
-    text-align: right;
-    vertical-align: top;
-}
-/* For one line entires */
-td.form_clabel {
-    text-align: right;
-    vertical-align: center;
-}
-td.form_value {
-    text-align: left;
-    vertical-align: top;
-}
-td.form_submit {
-    text-align: right;
-    vertical-align: top;
-}
-
-h1.SubmitFail {
-    color: #f00;
-}
-h1.SubmitOk {
-}

Modified: trunk/contrib/llvm/tools/clang/tools/scan-build/set-xcode-analyzer
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-build/set-xcode-analyzer	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-build/set-xcode-analyzer	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,115 +0,0 @@
-#!/usr/bin/python
-
-# [PR 11661] Note that we hardwire to /usr/bin/python because we
-# want to the use the system version of Python on Mac OS X.
-# This one has the scripting bridge enabled.
-
-import sys
-if sys.version_info < (2, 7):
-    print "set-xcode-analyzer requires Python 2.7 or later"
-    sys.exit(1)
-    
-import os
-import subprocess
-import re
-import tempfile
-import shutil
-import stat
-from AppKit import *
-
-def FindClangSpecs(path):
-  print "(+) Searching for xcspec file in: ", path
-  for root, dirs, files in os.walk(path):
-    for f in files:
-      if f.endswith(".xcspec") and f.startswith("Clang LLVM"):
-        yield os.path.join(root, f)
-
-def ModifySpec(path, isBuiltinAnalyzer, pathToChecker):
-  t = tempfile.NamedTemporaryFile(delete=False)
-  foundAnalyzer = False
-  with open(path) as f:
-    if isBuiltinAnalyzer:
-      # First search for CLANG_ANALYZER_EXEC.  Newer
-      # versions of Xcode set EXEC_PATH to be CLANG_ANALYZER_EXEC.
-      with open(path) as f2:
-        for line in f2:
-          if line.find("CLANG_ANALYZER_EXEC") >= 0:
-            pathToChecker = "$(CLANG_ANALYZER_EXEC)"
-            break
-    # Now create a new file.
-    for line in f:
-      if not foundAnalyzer:
-        if line.find("Static Analyzer") >= 0:
-          foundAnalyzer = True
-      else:
-        m = re.search('^(\s*ExecPath\s*=\s*")', line)
-        if m:
-          line = "".join([m.group(0), pathToChecker, '";\n'])
-          # Do not modify further ExecPath's later in the xcspec.
-          foundAnalyzer = False
-      t.write(line)
-  t.close()
-  print "(+) processing:", path
-  try:
-    shutil.copy(t.name, path)
-    os.chmod(path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH)
-  except IOError, why:
-    print "    (-) Cannot update file:", why, "\n"
-  except OSError, why:
-    print "    (-) Cannot update file:", why, "\n"
-  os.unlink(t.name)
-
-def main():
-  from optparse import OptionParser
-  parser = OptionParser('usage: %prog [options]')
-  parser.set_description(__doc__)
-  parser.add_option("--use-checker-build", dest="path",
-                    help="Use the Clang located at the provided absolute path, e.g. /Users/foo/checker-1")
-  parser.add_option("--use-xcode-clang", action="store_const", 
-                    const="$(CLANG)", dest="default",
-                    help="Use the Clang bundled with Xcode")
-  (options, args) = parser.parse_args()
-  if options.path is None and options.default is None:
-    parser.error("You must specify a version of Clang to use for static analysis.  Specify '-h' for details")
-
-  # determine if Xcode is running
-  for x in NSWorkspace.sharedWorkspace().runningApplications():
-    if x.localizedName().find("Xcode") >= 0:
-      print "(-) You must quit Xcode first before modifying its configuration files."
-      sys.exit(1)
-
-  isBuiltinAnalyzer = False
-  if options.path:
-    # Expand tildes.
-    path = os.path.expanduser(options.path)
-    if not path.endswith("clang"):
-      print "(+) Using Clang bundled with checker build:", path
-      path = os.path.join(path, "bin", "clang");
-    else:
-      print "(+) Using Clang located at:", path
-  else:
-    print "(+) Using the Clang bundled with Xcode"
-    path = options.default
-    isBuiltinAnalyzer = True
-  
-  try:
-    xcode_path = subprocess.check_output(["xcode-select", "-print-path"])
-  except AttributeError:
-    # Fall back to the default install location when using Python < 2.7.0
-    xcode_path = "/Developer"
-  if (xcode_path.find(".app/") != -1):
-    # Cut off the 'Developer' dir, as the xcspec lies in another part
-    # of the Xcode.app subtree.
-    xcode_path = os.path.dirname(xcode_path)
-  
-  foundSpec = False
-  for x in FindClangSpecs(xcode_path):
-    foundSpec = True
-    ModifySpec(x, isBuiltinAnalyzer, path)
-    
-  if foundSpec == False:
-      print "(-) No compiler configuration file was found.  Xcode's analyzer has not been updated."
-
-if __name__ == '__main__':
-  main()
-

Modified: trunk/contrib/llvm/tools/clang/tools/scan-build/sorttable.js
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-build/sorttable.js	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-build/sorttable.js	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,493 +0,0 @@
-/*
-  SortTable
-  version 2
-  7th April 2007
-  Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/
-  
-  Instructions:
-  Download this file
-  Add <script src="sorttable.js"></script> to your HTML
-  Add class="sortable" to any table you'd like to make sortable
-  Click on the headers to sort
-  
-  Thanks to many, many people for contributions and suggestions.
-  Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
-  This basically means: do what you want with it.
-*/
-
- 
-var stIsIE = /*@cc_on!@*/false;
-
-sorttable = {
-  init: function() {
-    // quit if this function has already been called
-    if (arguments.callee.done) return;
-    // flag this function so we don't do the same thing twice
-    arguments.callee.done = true;
-    // kill the timer
-    if (_timer) clearInterval(_timer);
-    
-    if (!document.createElement || !document.getElementsByTagName) return;
-    
-    sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
-    
-    forEach(document.getElementsByTagName('table'), function(table) {
-      if (table.className.search(/\bsortable\b/) != -1) {
-        sorttable.makeSortable(table);
-      }
-    });
-    
-  },
-  
-  makeSortable: function(table) {
-    if (table.getElementsByTagName('thead').length == 0) {
-      // table doesn't have a tHead. Since it should have, create one and
-      // put the first table row in it.
-      the = document.createElement('thead');
-      the.appendChild(table.rows[0]);
-      table.insertBefore(the,table.firstChild);
-    }
-    // Safari doesn't support table.tHead, sigh
-    if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
-    
-    if (table.tHead.rows.length != 1) return; // can't cope with two header rows
-    
-    // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
-    // "total" rows, for example). This is B&R, since what you're supposed
-    // to do is put them in a tfoot. So, if there are sortbottom rows,
-    // for backwards compatibility, move them to tfoot (creating it if needed).
-    sortbottomrows = [];
-    for (var i=0; i<table.rows.length; i++) {
-      if (table.rows[i].className.search(/\bsortbottom\b/) != -1) {
-        sortbottomrows[sortbottomrows.length] = table.rows[i];
-      }
-    }
-    if (sortbottomrows) {
-      if (table.tFoot == null) {
-        // table doesn't have a tfoot. Create one.
-        tfo = document.createElement('tfoot');
-        table.appendChild(tfo);
-      }
-      for (var i=0; i<sortbottomrows.length; i++) {
-        tfo.appendChild(sortbottomrows[i]);
-      }
-      delete sortbottomrows;
-    }
-    
-    // work through each column and calculate its type
-    headrow = table.tHead.rows[0].cells;
-    for (var i=0; i<headrow.length; i++) {
-      // manually override the type with a sorttable_type attribute
-      if (!headrow[i].className.match(/\bsorttable_nosort\b/)) { // skip this col
-        mtch = headrow[i].className.match(/\bsorttable_([a-z0-9]+)\b/);
-        if (mtch) { override = mtch[1]; }
-	      if (mtch && typeof sorttable["sort_"+override] == 'function') {
-	        headrow[i].sorttable_sortfunction = sorttable["sort_"+override];
-	      } else {
-	        headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);
-	      }
-	      // make it clickable to sort
-	      headrow[i].sorttable_columnindex = i;
-	      headrow[i].sorttable_tbody = table.tBodies[0];
-	      dean_addEvent(headrow[i],"click", function(e) {
-
-          if (this.className.search(/\bsorttable_sorted\b/) != -1) {
-            // if we're already sorted by this column, just 
-            // reverse the table, which is quicker
-            sorttable.reverse(this.sorttable_tbody);
-            this.className = this.className.replace('sorttable_sorted',
-                                                    'sorttable_sorted_reverse');
-            this.removeChild(document.getElementById('sorttable_sortfwdind'));
-            sortrevind = document.createElement('span');
-            sortrevind.id = "sorttable_sortrevind";
-            sortrevind.innerHTML = stIsIE ? '&nbsp<font face="webdings">5</font>' : ' &#x25B4;';
-            this.appendChild(sortrevind);
-            return;
-          }
-          if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) {
-            // if we're already sorted by this column in reverse, just 
-            // re-reverse the table, which is quicker
-            sorttable.reverse(this.sorttable_tbody);
-            this.className = this.className.replace('sorttable_sorted_reverse',
-                                                    'sorttable_sorted');
-            this.removeChild(document.getElementById('sorttable_sortrevind'));
-            sortfwdind = document.createElement('span');
-            sortfwdind.id = "sorttable_sortfwdind";
-            sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : ' &#x25BE;';
-            this.appendChild(sortfwdind);
-            return;
-          }
-          
-          // remove sorttable_sorted classes
-          theadrow = this.parentNode;
-          forEach(theadrow.childNodes, function(cell) {
-            if (cell.nodeType == 1) { // an element
-              cell.className = cell.className.replace('sorttable_sorted_reverse','');
-              cell.className = cell.className.replace('sorttable_sorted','');
-            }
-          });
-          sortfwdind = document.getElementById('sorttable_sortfwdind');
-          if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
-          sortrevind = document.getElementById('sorttable_sortrevind');
-          if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
-          
-          this.className += ' sorttable_sorted';
-          sortfwdind = document.createElement('span');
-          sortfwdind.id = "sorttable_sortfwdind";
-          sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : ' &#x25BE;';
-          this.appendChild(sortfwdind);
-
-	        // build an array to sort. This is a Schwartzian transform thing,
-	        // i.e., we "decorate" each row with the actual sort key,
-	        // sort based on the sort keys, and then put the rows back in order
-	        // which is a lot faster because you only do getInnerText once per row
-	        row_array = [];
-	        col = this.sorttable_columnindex;
-	        rows = this.sorttable_tbody.rows;
-	        for (var j=0; j<rows.length; j++) {
-	          row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];
-	        }
-	        /* If you want a stable sort, uncomment the following line */
-	        sorttable.shaker_sort(row_array, this.sorttable_sortfunction);
-	        /* and comment out this one */
-	        //row_array.sort(this.sorttable_sortfunction);
-	        
-	        tb = this.sorttable_tbody;
-	        for (var j=0; j<row_array.length; j++) {
-	          tb.appendChild(row_array[j][1]);
-	        }
-	        
-	        delete row_array;
-	      });
-	    }
-    }
-  },
-  
-  guessType: function(table, column) {
-    // guess the type of a column based on its first non-blank row
-    sortfn = sorttable.sort_alpha;
-    for (var i=0; i<table.tBodies[0].rows.length; i++) {
-      text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);
-      if (text != '') {
-        if (text.match(/^-?[\xA3$\xA4]?[\d,.]+%?$/)) {
-          return sorttable.sort_numeric;
-        }
-        // check for a date: dd/mm/yyyy or dd/mm/yy 
-        // can have / or . or - as separator
-        // can be mm/dd as well
-        possdate = text.match(sorttable.DATE_RE)
-        if (possdate) {
-          // looks like a date
-          first = parseInt(possdate[1]);
-          second = parseInt(possdate[2]);
-          if (first > 12) {
-            // definitely dd/mm
-            return sorttable.sort_ddmm;
-          } else if (second > 12) {
-            return sorttable.sort_mmdd;
-          } else {
-            // looks like a date, but we can't tell which, so assume
-            // that it's dd/mm (English imperialism!) and keep looking
-            sortfn = sorttable.sort_ddmm;
-          }
-        }
-      }
-    }
-    return sortfn;
-  },
-  
-  getInnerText: function(node) {
-    // gets the text we want to use for sorting for a cell.
-    // strips leading and trailing whitespace.
-    // this is *not* a generic getInnerText function; it's special to sorttable.
-    // for example, you can override the cell text with a customkey attribute.
-    // it also gets .value for <input> fields.
-    
-    hasInputs = (typeof node.getElementsByTagName == 'function') &&
-                 node.getElementsByTagName('input').length;
-    
-    if (node.getAttribute("sorttable_customkey") != null) {
-      return node.getAttribute("sorttable_customkey");
-    }
-    else if (typeof node.textContent != 'undefined' && !hasInputs) {
-      return node.textContent.replace(/^\s+|\s+$/g, '');
-    }
-    else if (typeof node.innerText != 'undefined' && !hasInputs) {
-      return node.innerText.replace(/^\s+|\s+$/g, '');
-    }
-    else if (typeof node.text != 'undefined' && !hasInputs) {
-      return node.text.replace(/^\s+|\s+$/g, '');
-    }
-    else {
-      switch (node.nodeType) {
-        case 3:
-          if (node.nodeName.toLowerCase() == 'input') {
-            return node.value.replace(/^\s+|\s+$/g, '');
-          }
-        case 4:
-          return node.nodeValue.replace(/^\s+|\s+$/g, '');
-          break;
-        case 1:
-        case 11:
-          var innerText = '';
-          for (var i = 0; i < node.childNodes.length; i++) {
-            innerText += sorttable.getInnerText(node.childNodes[i]);
-          }
-          return innerText.replace(/^\s+|\s+$/g, '');
-          break;
-        default:
-          return '';
-      }
-    }
-  },
-  
-  reverse: function(tbody) {
-    // reverse the rows in a tbody
-    newrows = [];
-    for (var i=0; i<tbody.rows.length; i++) {
-      newrows[newrows.length] = tbody.rows[i];
-    }
-    for (var i=newrows.length-1; i>=0; i--) {
-       tbody.appendChild(newrows[i]);
-    }
-    delete newrows;
-  },
-  
-  /* sort functions
-     each sort function takes two parameters, a and b
-     you are comparing a[0] and b[0] */
-  sort_numeric: function(a,b) {
-    aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
-    if (isNaN(aa)) aa = 0;
-    bb = parseFloat(b[0].replace(/[^0-9.-]/g,'')); 
-    if (isNaN(bb)) bb = 0;
-    return aa-bb;
-  },
-  sort_alpha: function(a,b) {
-    if (a[0]==b[0]) return 0;
-    if (a[0]<b[0]) return -1;
-    return 1;
-  },
-  sort_ddmm: function(a,b) {
-    mtch = a[0].match(sorttable.DATE_RE);
-    y = mtch[3]; m = mtch[2]; d = mtch[1];
-    if (m.length == 1) m = '0'+m;
-    if (d.length == 1) d = '0'+d;
-    dt1 = y+m+d;
-    mtch = b[0].match(sorttable.DATE_RE);
-    y = mtch[3]; m = mtch[2]; d = mtch[1];
-    if (m.length == 1) m = '0'+m;
-    if (d.length == 1) d = '0'+d;
-    dt2 = y+m+d;
-    if (dt1==dt2) return 0;
-    if (dt1<dt2) return -1;
-    return 1;
-  },
-  sort_mmdd: function(a,b) {
-    mtch = a[0].match(sorttable.DATE_RE);
-    y = mtch[3]; d = mtch[2]; m = mtch[1];
-    if (m.length == 1) m = '0'+m;
-    if (d.length == 1) d = '0'+d;
-    dt1 = y+m+d;
-    mtch = b[0].match(sorttable.DATE_RE);
-    y = mtch[3]; d = mtch[2]; m = mtch[1];
-    if (m.length == 1) m = '0'+m;
-    if (d.length == 1) d = '0'+d;
-    dt2 = y+m+d;
-    if (dt1==dt2) return 0;
-    if (dt1<dt2) return -1;
-    return 1;
-  },
-  
-  shaker_sort: function(list, comp_func) {
-    // A stable sort function to allow multi-level sorting of data
-    // see: http://en.wikipedia.org/wiki/Cocktail_sort
-    // thanks to Joseph Nahmias
-    var b = 0;
-    var t = list.length - 1;
-    var swap = true;
-
-    while(swap) {
-        swap = false;
-        for(var i = b; i < t; ++i) {
-            if ( comp_func(list[i], list[i+1]) > 0 ) {
-                var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
-                swap = true;
-            }
-        } // for
-        t--;
-
-        if (!swap) break;
-
-        for(var i = t; i > b; --i) {
-            if ( comp_func(list[i], list[i-1]) < 0 ) {
-                var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
-                swap = true;
-            }
-        } // for
-        b++;
-
-    } // while(swap)
-  }  
-}
-
-/* ******************************************************************
-   Supporting functions: bundled here to avoid depending on a library
-   ****************************************************************** */
-
-// Dean Edwards/Matthias Miller/John Resig
-
-/* for Mozilla/Opera9 */
-if (document.addEventListener) {
-    document.addEventListener("DOMContentLoaded", sorttable.init, false);
-}
-
-/* for Internet Explorer */
-/*@cc_on @*/
-/*@if (@_win32)
-    document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
-    var script = document.getElementById("__ie_onload");
-    script.onreadystatechange = function() {
-        if (this.readyState == "complete") {
-            sorttable.init(); // call the onload handler
-        }
-    };
-/*@end @*/
-
-/* for Safari */
-if (/WebKit/i.test(navigator.userAgent)) { // sniff
-    var _timer = setInterval(function() {
-        if (/loaded|complete/.test(document.readyState)) {
-            sorttable.init(); // call the onload handler
-        }
-    }, 10);
-}
-
-/* for other browsers */
-window.onload = sorttable.init;
-
-// written by Dean Edwards, 2005
-// with input from Tino Zijdel, Matthias Miller, Diego Perini
-
-// http://dean.edwards.name/weblog/2005/10/add-event/
-
-function dean_addEvent(element, type, handler) {
-	if (element.addEventListener) {
-		element.addEventListener(type, handler, false);
-	} else {
-		// assign each event handler a unique ID
-		if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;
-		// create a hash table of event types for the element
-		if (!element.events) element.events = {};
-		// create a hash table of event handlers for each element/event pair
-		var handlers = element.events[type];
-		if (!handlers) {
-			handlers = element.events[type] = {};
-			// store the existing event handler (if there is one)
-			if (element["on" + type]) {
-				handlers[0] = element["on" + type];
-			}
-		}
-		// store the event handler in the hash table
-		handlers[handler.$$guid] = handler;
-		// assign a global event handler to do all the work
-		element["on" + type] = handleEvent;
-	}
-};
-// a counter used to create unique IDs
-dean_addEvent.guid = 1;
-
-function removeEvent(element, type, handler) {
-	if (element.removeEventListener) {
-		element.removeEventListener(type, handler, false);
-	} else {
-		// delete the event handler from the hash table
-		if (element.events && element.events[type]) {
-			delete element.events[type][handler.$$guid];
-		}
-	}
-};
-
-function handleEvent(event) {
-	var returnValue = true;
-	// grab the event object (IE uses a global event object)
-	event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
-	// get a reference to the hash table of event handlers
-	var handlers = this.events[event.type];
-	// execute each event handler
-	for (var i in handlers) {
-		this.$$handleEvent = handlers[i];
-		if (this.$$handleEvent(event) === false) {
-			returnValue = false;
-		}
-	}
-	return returnValue;
-};
-
-function fixEvent(event) {
-	// add W3C standard event methods
-	event.preventDefault = fixEvent.preventDefault;
-	event.stopPropagation = fixEvent.stopPropagation;
-	return event;
-};
-fixEvent.preventDefault = function() {
-	this.returnValue = false;
-};
-fixEvent.stopPropagation = function() {
-  this.cancelBubble = true;
-}
-
-// Dean's forEach: http://dean.edwards.name/base/forEach.js
-/*
-	forEach, version 1.0
-	Copyright 2006, Dean Edwards
-	License: http://www.opensource.org/licenses/mit-license.php
-*/
-
-// array-like enumeration
-if (!Array.forEach) { // mozilla already supports this
-	Array.forEach = function(array, block, context) {
-		for (var i = 0; i < array.length; i++) {
-			block.call(context, array[i], i, array);
-		}
-	};
-}
-
-// generic enumeration
-Function.prototype.forEach = function(object, block, context) {
-	for (var key in object) {
-		if (typeof this.prototype[key] == "undefined") {
-			block.call(context, object[key], key, object);
-		}
-	}
-};
-
-// character enumeration
-String.forEach = function(string, block, context) {
-	Array.forEach(string.split(""), function(chr, index) {
-		block.call(context, chr, index, string);
-	});
-};
-
-// globally resolve forEach enumeration
-var forEach = function(object, block, context) {
-	if (object) {
-		var resolve = Object; // default
-		if (object instanceof Function) {
-			// functions have a "length" property
-			resolve = Function;
-		} else if (object.forEach instanceof Function) {
-			// the object implements a custom forEach method so use that
-			object.forEach(block, context);
-			return;
-		} else if (typeof object == "string") {
-			// the object is a string
-			resolve = String;
-		} else if (typeof object.length == "number") {
-			// the object is array-like
-			resolve = Array;
-		}
-		resolve.forEach(object, block, context);
-	}
-};
-

Modified: trunk/contrib/llvm/tools/clang/tools/scan-view/Reporter.py
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-view/Reporter.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-view/Reporter.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,248 +0,0 @@
-"""Methods for reporting bugs."""
-
-import subprocess, sys, os
-
-__all__ = ['ReportFailure', 'BugReport', 'getReporters']
-
-#
-
-class ReportFailure(Exception):
-    """Generic exception for failures in bug reporting."""
-    def __init__(self, value):        
-        self.value = value
-
-# Collect information about a bug.
-
-class BugReport:
-    def __init__(self, title, description, files):
-        self.title = title
-        self.description = description
-        self.files = files
-
-# Reporter interfaces.
-
-import os
-
-import email, mimetypes, smtplib
-from email import encoders
-from email.message import Message
-from email.mime.base import MIMEBase
-from email.mime.multipart import MIMEMultipart
-from email.mime.text import MIMEText
-
-#===------------------------------------------------------------------------===#
-# ReporterParameter
-#===------------------------------------------------------------------------===#
-
-class ReporterParameter:
-  def __init__(self, n):
-    self.name = n
-  def getName(self):
-    return self.name
-  def getValue(self,r,bugtype,getConfigOption):
-     return getConfigOption(r.getName(),self.getName())
-  def saveConfigValue(self):
-    return True
-
-class TextParameter (ReporterParameter):
-  def getHTML(self,r,bugtype,getConfigOption):
-    return """\
-<tr>
-<td class="form_clabel">%s:</td>
-<td class="form_value"><input type="text" name="%s_%s" value="%s"></td>
-</tr>"""%(self.getName(),r.getName(),self.getName(),self.getValue(r,bugtype,getConfigOption))
-
-class SelectionParameter (ReporterParameter):
-  def __init__(self, n, values):
-    ReporterParameter.__init__(self,n)
-    self.values = values
-    
-  def getHTML(self,r,bugtype,getConfigOption):
-    default = self.getValue(r,bugtype,getConfigOption)
-    return """\
-<tr>
-<td class="form_clabel">%s:</td><td class="form_value"><select name="%s_%s">
-%s
-</select></td>"""%(self.getName(),r.getName(),self.getName(),'\n'.join(["""\
-<option value="%s"%s>%s</option>"""%(o[0],
-                                     o[0] == default and ' selected="selected"' or '',
-                                     o[1]) for o in self.values]))
-
-#===------------------------------------------------------------------------===#
-# Reporters
-#===------------------------------------------------------------------------===#
-
-class EmailReporter:
-    def getName(self):
-        return 'Email'
-
-    def getParameters(self):
-        return map(lambda x:TextParameter(x),['To', 'From', 'SMTP Server', 'SMTP Port'])
-
-    # Lifted from python email module examples.
-    def attachFile(self, outer, path):
-        # Guess the content type based on the file's extension.  Encoding
-        # will be ignored, although we should check for simple things like
-        # gzip'd or compressed files.
-        ctype, encoding = mimetypes.guess_type(path)
-        if ctype is None or encoding is not None:
-            # No guess could be made, or the file is encoded (compressed), so
-            # use a generic bag-of-bits type.
-            ctype = 'application/octet-stream'
-        maintype, subtype = ctype.split('/', 1)
-        if maintype == 'text':
-            fp = open(path)
-            # Note: we should handle calculating the charset
-            msg = MIMEText(fp.read(), _subtype=subtype)
-            fp.close()
-        else:
-            fp = open(path, 'rb')
-            msg = MIMEBase(maintype, subtype)
-            msg.set_payload(fp.read())
-            fp.close()
-            # Encode the payload using Base64
-            encoders.encode_base64(msg)
-        # Set the filename parameter
-        msg.add_header('Content-Disposition', 'attachment', filename=os.path.basename(path))
-        outer.attach(msg)
-
-    def fileReport(self, report, parameters):
-        mainMsg = """\
-BUG REPORT
----
-Title: %s
-Description: %s
-"""%(report.title, report.description)
-
-        if not parameters.get('To'):
-            raise ReportFailure('No "To" address specified.')
-        if not parameters.get('From'):
-            raise ReportFailure('No "From" address specified.')
-
-        msg = MIMEMultipart()
-        msg['Subject'] = 'BUG REPORT: %s'%(report.title)
-        # FIXME: Get config parameters
-        msg['To'] = parameters.get('To')
-        msg['From'] = parameters.get('From')
-        msg.preamble = mainMsg
-
-        msg.attach(MIMEText(mainMsg, _subtype='text/plain'))
-        for file in report.files:
-            self.attachFile(msg, file)
-
-        try:
-            s = smtplib.SMTP(host=parameters.get('SMTP Server'),
-                             port=parameters.get('SMTP Port'))
-            s.sendmail(msg['From'], msg['To'], msg.as_string())
-            s.close()
-        except:
-            raise ReportFailure('Unable to send message via SMTP.')
-
-        return "Message sent!"
-
-class BugzillaReporter:
-    def getName(self):
-        return 'Bugzilla'
-    
-    def getParameters(self):
-        return map(lambda x:TextParameter(x),['URL','Product'])
-
-    def fileReport(self, report, parameters):
-        raise NotImplementedError
- 
-
-class RadarClassificationParameter(SelectionParameter):
-  def __init__(self):
-    SelectionParameter.__init__(self,"Classification",
-            [['1', 'Security'], ['2', 'Crash/Hang/Data Loss'],
-             ['3', 'Performance'], ['4', 'UI/Usability'], 
-             ['6', 'Serious Bug'], ['7', 'Other']])
-
-  def saveConfigValue(self):
-    return False
-    
-  def getValue(self,r,bugtype,getConfigOption):
-    if bugtype.find("leak") != -1:
-      return '3'
-    elif bugtype.find("dereference") != -1:
-      return '2'
-    elif bugtype.find("missing ivar release") != -1:
-      return '3'
-    else:
-      return '7'
-
-class RadarReporter:
-    @staticmethod
-    def isAvailable():
-        # FIXME: Find this .scpt better
-        path = os.path.join(os.path.dirname(__file__),'Resources/GetRadarVersion.scpt')
-        try:
-          p = subprocess.Popen(['osascript',path], 
-          stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        except:
-            return False
-        data,err = p.communicate()
-        res = p.wait()
-        # FIXME: Check version? Check for no errors?
-        return res == 0
-
-    def getName(self):
-        return 'Radar'
-
-    def getParameters(self):
-        return [ TextParameter('Component'), TextParameter('Component Version'),
-                 RadarClassificationParameter() ]
-
-    def fileReport(self, report, parameters):
-        component = parameters.get('Component', '')
-        componentVersion = parameters.get('Component Version', '')
-        classification = parameters.get('Classification', '')
-        personID = ""
-        diagnosis = ""
-        config = ""
-
-        if not component.strip():
-            component = 'Bugs found by clang Analyzer'
-        if not componentVersion.strip():
-            componentVersion = 'X'
-
-        script = os.path.join(os.path.dirname(__file__),'Resources/FileRadar.scpt')
-        args = ['osascript', script, component, componentVersion, classification, personID, report.title,
-                report.description, diagnosis, config] + map(os.path.abspath, report.files)
-#        print >>sys.stderr, args
-        try:
-          p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        except:
-            raise ReportFailure("Unable to file radar (AppleScript failure).")
-        data, err = p.communicate()
-        res = p.wait()
-
-        if res:
-            raise ReportFailure("Unable to file radar (AppleScript failure).")
-
-        try:
-            values = eval(data)
-        except:
-            raise ReportFailure("Unable to process radar results.")
-
-        # We expect (int: bugID, str: message)
-        if len(values) != 2 or not isinstance(values[0], int):
-            raise ReportFailure("Unable to process radar results.")
-
-        bugID,message = values
-        bugID = int(bugID)
-        
-        if not bugID:
-            raise ReportFailure(message)
-        
-        return "Filed: <a href=\"rdar://%d/\">%d</a>"%(bugID,bugID)
-
-###
-
-def getReporters():
-    reporters = []
-    if RadarReporter.isAvailable():
-        reporters.append(RadarReporter())
-    reporters.append(EmailReporter())
-    return reporters
-

Modified: trunk/contrib/llvm/tools/clang/tools/scan-view/ScanView.py
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-view/ScanView.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-view/ScanView.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,767 +0,0 @@
-import BaseHTTPServer
-import SimpleHTTPServer
-import os
-import sys
-import urllib, urlparse
-import posixpath
-import StringIO
-import re
-import shutil
-import threading
-import time
-import socket
-import itertools
-
-import Reporter
-import ConfigParser
-
-###
-# Various patterns matched or replaced by server.
-
-kReportFileRE = re.compile('(.*/)?report-(.*)\\.html')
-
-kBugKeyValueRE = re.compile('<!-- BUG([^ ]*) (.*) -->')
-
-#  <!-- REPORTPROBLEM file="crashes/clang_crash_ndSGF9.mi" stderr="crashes/clang_crash_ndSGF9.mi.stderr.txt" info="crashes/clang_crash_ndSGF9.mi.info" -->
-
-kReportCrashEntryRE = re.compile('<!-- REPORTPROBLEM (.*?)-->')
-kReportCrashEntryKeyValueRE = re.compile(' ?([^=]+)="(.*?)"')
-
-kReportReplacements = []
-
-# Add custom javascript.
-kReportReplacements.append((re.compile('<!-- SUMMARYENDHEAD -->'), """\
-<script language="javascript" type="text/javascript">
-function load(url) {
-  if (window.XMLHttpRequest) {
-    req = new XMLHttpRequest();
-  } else if (window.ActiveXObject) {
-    req = new ActiveXObject("Microsoft.XMLHTTP");
-  }
-  if (req != undefined) {
-    req.open("GET", url, true);
-    req.send("");
-  }
-}
-</script>"""))
-
-# Insert additional columns.
-kReportReplacements.append((re.compile('<!-- REPORTBUGCOL -->'), 
-                            '<td></td><td></td>'))
-
-# Insert report bug and open file links.
-kReportReplacements.append((re.compile('<!-- REPORTBUG id="report-(.*)\\.html" -->'),
-                            ('<td class="Button"><a href="report/\\1">Report Bug</a></td>' + 
-                             '<td class="Button"><a href="javascript:load(\'open/\\1\')">Open File</a></td>')))
-
-kReportReplacements.append((re.compile('<!-- REPORTHEADER -->'),
-                                       '<h3><a href="/">Summary</a> > Report %(report)s</h3>'))
-
-kReportReplacements.append((re.compile('<!-- REPORTSUMMARYEXTRA -->'),
-                            '<td class="Button"><a href="report/%(report)s">Report Bug</a></td>'))
-
-# Insert report crashes link.
-
-# Disabled for the time being until we decide exactly when this should
-# be enabled. Also the radar reporter needs to be fixed to report
-# multiple files.
-
-#kReportReplacements.append((re.compile('<!-- REPORTCRASHES -->'),
-#                            '<br>These files will automatically be attached to ' +
-#                            'reports filed here: <a href="report_crashes">Report Crashes</a>.'))
-
-###
-# Other simple parameters
-
-kResources = posixpath.join(posixpath.dirname(__file__), 'Resources')
-kConfigPath = os.path.expanduser('~/.scanview.cfg')
-
-###
-
-__version__ = "0.1"
-
-__all__ = ["create_server"]
-
-class ReporterThread(threading.Thread):
-    def __init__(self, report, reporter, parameters, server):
-        threading.Thread.__init__(self)
-        self.report = report
-        self.server = server
-        self.reporter = reporter
-        self.parameters = parameters
-        self.success = False
-        self.status = None
-
-    def run(self):
-        result = None
-        try:
-            if self.server.options.debug:
-                print >>sys.stderr, "%s: SERVER: submitting bug."%(sys.argv[0],)
-            self.status = self.reporter.fileReport(self.report, self.parameters)
-            self.success = True
-            time.sleep(3)
-            if self.server.options.debug:
-                print >>sys.stderr, "%s: SERVER: submission complete."%(sys.argv[0],)
-        except Reporter.ReportFailure,e:
-            self.status = e.value
-        except Exception,e:
-            s = StringIO.StringIO()
-            import traceback
-            print >>s,'<b>Unhandled Exception</b><br><pre>'
-            traceback.print_exc(e,file=s)
-            print >>s,'</pre>'
-            self.status = s.getvalue()
-
-class ScanViewServer(BaseHTTPServer.HTTPServer):
-    def __init__(self, address, handler, root, reporters, options):
-        BaseHTTPServer.HTTPServer.__init__(self, address, handler)
-        self.root = root
-        self.reporters = reporters
-        self.options = options        
-        self.halted = False
-        self.config = None
-        self.load_config()
-
-    def load_config(self):
-        self.config = ConfigParser.RawConfigParser()
-
-        # Add defaults
-        self.config.add_section('ScanView')
-        for r in self.reporters:
-            self.config.add_section(r.getName())
-            for p in r.getParameters():
-              if p.saveConfigValue():
-                self.config.set(r.getName(), p.getName(), '')
-
-        # Ignore parse errors
-        try:
-            self.config.read([kConfigPath])
-        except:
-            pass
-
-        # Save on exit
-        import atexit
-        atexit.register(lambda: self.save_config())
-        
-    def save_config(self):
-        # Ignore errors (only called on exit).
-        try:
-            f = open(kConfigPath,'w')
-            self.config.write(f)
-            f.close()
-        except:
-            pass
-        
-    def halt(self):
-        self.halted = True
-        if self.options.debug:
-            print >>sys.stderr, "%s: SERVER: halting." % (sys.argv[0],)
-
-    def serve_forever(self):
-        while not self.halted:
-            if self.options.debug > 1:
-                print >>sys.stderr, "%s: SERVER: waiting..." % (sys.argv[0],)
-            try:
-                self.handle_request()
-            except OSError,e:
-                print 'OSError',e.errno
-
-    def finish_request(self, request, client_address):
-        if self.options.autoReload:
-            import ScanView
-            self.RequestHandlerClass = reload(ScanView).ScanViewRequestHandler
-        BaseHTTPServer.HTTPServer.finish_request(self, request, client_address)
-
-    def handle_error(self, request, client_address):
-        # Ignore socket errors
-        info = sys.exc_info()
-        if info and isinstance(info[1], socket.error):
-            if self.options.debug > 1:
-                print >>sys.stderr, "%s: SERVER: ignored socket error." % (sys.argv[0],)
-            return
-        BaseHTTPServer.HTTPServer.handle_error(self, request, client_address)
-
-# Borrowed from Quixote, with simplifications.
-def parse_query(qs, fields=None):
-    if fields is None:
-        fields = {}
-    for chunk in filter(None, qs.split('&')):
-        if '=' not in chunk:
-            name = chunk
-            value = ''
-        else:
-            name, value = chunk.split('=', 1)
-        name = urllib.unquote(name.replace('+', ' '))
-        value = urllib.unquote(value.replace('+', ' '))
-        item = fields.get(name)
-        if item is None:
-            fields[name] = [value]
-        else:
-            item.append(value)
-    return fields
-
-class ScanViewRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
-    server_version = "ScanViewServer/" + __version__
-    dynamic_mtime = time.time()
-
-    def do_HEAD(self):
-        try:
-            SimpleHTTPServer.SimpleHTTPRequestHandler.do_HEAD(self)
-        except Exception,e:
-            self.handle_exception(e)
-            
-    def do_GET(self):
-        try:
-            SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
-        except Exception,e:
-            self.handle_exception(e)
-            
-    def do_POST(self):
-        """Serve a POST request."""
-        try:
-            length = self.headers.getheader('content-length') or "0"
-            try:
-                length = int(length)
-            except:
-                length = 0
-            content = self.rfile.read(length)
-            fields = parse_query(content)
-            f = self.send_head(fields)
-            if f:
-                self.copyfile(f, self.wfile)
-                f.close()
-        except Exception,e:
-            self.handle_exception(e)            
-
-    def log_message(self, format, *args):
-        if self.server.options.debug:
-            sys.stderr.write("%s: SERVER: %s - - [%s] %s\n" %
-                             (sys.argv[0],
-                              self.address_string(),
-                              self.log_date_time_string(),
-                              format%args))
-
-    def load_report(self, report):
-        path = os.path.join(self.server.root, 'report-%s.html'%report)
-        data = open(path).read()
-        keys = {}
-        for item in kBugKeyValueRE.finditer(data):
-            k,v = item.groups()
-            keys[k] = v
-        return keys
-
-    def load_crashes(self):
-        path = posixpath.join(self.server.root, 'index.html')
-        data = open(path).read()
-        problems = []
-        for item in kReportCrashEntryRE.finditer(data):
-            fieldData = item.group(1)
-            fields = dict([i.groups() for i in 
-                           kReportCrashEntryKeyValueRE.finditer(fieldData)])
-            problems.append(fields)
-        return problems
-
-    def handle_exception(self, exc):
-        import traceback
-        s = StringIO.StringIO()
-        print >>s, "INTERNAL ERROR\n"
-        traceback.print_exc(exc, s)
-        f = self.send_string(s.getvalue(), 'text/plain')
-        if f:
-            self.copyfile(f, self.wfile)
-            f.close()        
-            
-    def get_scalar_field(self, name):
-        if name in self.fields:
-            return self.fields[name][0]
-        else:
-            return None
-
-    def submit_bug(self, c):
-        title = self.get_scalar_field('title')
-        description = self.get_scalar_field('description')
-        report = self.get_scalar_field('report')
-        reporterIndex = self.get_scalar_field('reporter')
-        files = []
-        for fileID in self.fields.get('files',[]):
-            try:
-                i = int(fileID)
-            except:
-                i = None
-            if i is None or i<0 or i>=len(c.files):
-                return (False, 'Invalid file ID')
-            files.append(c.files[i])
-        
-        if not title:
-            return (False, "Missing title.")
-        if not description:
-            return (False, "Missing description.")
-        try:
-            reporterIndex = int(reporterIndex)
-        except:
-            return (False, "Invalid report method.")
-        
-        # Get the reporter and parameters.
-        reporter = self.server.reporters[reporterIndex]
-        parameters = {}
-        for o in reporter.getParameters():
-            name = '%s_%s'%(reporter.getName(),o.getName())
-            if name not in self.fields:
-                return (False, 
-                        'Missing field "%s" for %s report method.'%(name,
-                                                                    reporter.getName()))
-            parameters[o.getName()] = self.get_scalar_field(name)
-
-        # Update config defaults.
-        if report != 'None':
-            self.server.config.set('ScanView', 'reporter', reporterIndex)
-            for o in reporter.getParameters():
-              if o.saveConfigValue():
-                name = o.getName()
-                self.server.config.set(reporter.getName(), name, parameters[name])
-
-        # Create the report.
-        bug = Reporter.BugReport(title, description, files)
-
-        # Kick off a reporting thread.
-        t = ReporterThread(bug, reporter, parameters, self.server)
-        t.start()
-
-        # Wait for thread to die...
-        while t.isAlive():
-            time.sleep(.25)
-        submitStatus = t.status
-
-        return (t.success, t.status)
-
-    def send_report_submit(self):
-        report = self.get_scalar_field('report')
-        c = self.get_report_context(report)
-        if c.reportSource is None:
-            reportingFor = "Report Crashes > "
-            fileBug = """\
-<a href="/report_crashes">File Bug</a> > """%locals()
-        else:
-            reportingFor = '<a href="/%s">Report %s</a> > ' % (c.reportSource, 
-                                                                   report)
-            fileBug = '<a href="/report/%s">File Bug</a> > ' % report
-        title = self.get_scalar_field('title')
-        description = self.get_scalar_field('description')
-
-        res,message = self.submit_bug(c)
-
-        if res:
-            statusClass = 'SubmitOk'
-            statusName = 'Succeeded'
-        else:
-            statusClass = 'SubmitFail'
-            statusName = 'Failed'
-
-        result = """
-<head>
-  <title>Bug Submission</title>
-  <link rel="stylesheet" type="text/css" href="/scanview.css" />
-</head>
-<body>
-<h3>
-<a href="/">Summary</a> > 
-%(reportingFor)s
-%(fileBug)s
-Submit</h3>
-<form name="form" action="">
-<table class="form">
-<tr><td>
-<table class="form_group">
-<tr>
-  <td class="form_clabel">Title:</td>
-  <td class="form_value">
-    <input type="text" name="title" size="50" value="%(title)s" disabled>
-  </td>
-</tr>
-<tr>
-  <td class="form_label">Description:</td>
-  <td class="form_value">
-<textarea rows="10" cols="80" name="description" disabled>
-%(description)s
-</textarea>
-  </td>
-</table>
-</td></tr>
-</table>
-</form>
-<h1 class="%(statusClass)s">Submission %(statusName)s</h1>
-%(message)s
-<p>
-<hr>
-<a href="/">Return to Summary</a>
-</body>
-</html>"""%locals()
-        return self.send_string(result)
-
-    def send_open_report(self, report):
-        try:
-            keys = self.load_report(report)
-        except IOError:
-            return self.send_error(400, 'Invalid report.')
-
-        file = keys.get('FILE')
-        if not file or not posixpath.exists(file):
-            return self.send_error(400, 'File does not exist: "%s"' % file)
-
-        import startfile
-        if self.server.options.debug:
-            print >>sys.stderr, '%s: SERVER: opening "%s"'%(sys.argv[0],
-                                                            file)
-
-        status = startfile.open(file)
-        if status:
-            res = 'Opened: "%s"' % file
-        else:
-            res = 'Open failed: "%s"' % file
-
-        return self.send_string(res, 'text/plain')
-
-    def get_report_context(self, report):
-        class Context:
-            pass
-        if report is None or report == 'None':
-            data = self.load_crashes()
-            # Don't allow empty reports.
-            if not data:
-                raise ValueError, 'No crashes detected!'
-            c = Context()
-            c.title = 'clang static analyzer failures'
-
-            stderrSummary = ""
-            for item in data:
-                if 'stderr' in item:
-                    path = posixpath.join(self.server.root, item['stderr'])
-                    if os.path.exists(path):
-                        lns = itertools.islice(open(path), 0, 10)
-                        stderrSummary += '%s\n--\n%s' % (item.get('src', 
-                                                                  '<unknown>'),
-                                                         ''.join(lns))
-
-            c.description = """\
-The clang static analyzer failed on these inputs:
-%s
-
-STDERR Summary
---------------
-%s
-""" % ('\n'.join([item.get('src','<unknown>') for item in data]),
-       stderrSummary)
-            c.reportSource = None
-            c.navMarkup = "Report Crashes > "
-            c.files = []
-            for item in data:                
-                c.files.append(item.get('src',''))
-                c.files.append(posixpath.join(self.server.root,
-                                              item.get('file','')))
-                c.files.append(posixpath.join(self.server.root,
-                                              item.get('clangfile','')))
-                c.files.append(posixpath.join(self.server.root,
-                                              item.get('stderr','')))
-                c.files.append(posixpath.join(self.server.root,
-                                              item.get('info','')))
-            # Just in case something failed, ignore files which don't
-            # exist.
-            c.files = [f for f in c.files
-                       if os.path.exists(f) and os.path.isfile(f)]
-        else:
-            # Check that this is a valid report.            
-            path = posixpath.join(self.server.root, 'report-%s.html' % report)
-            if not posixpath.exists(path):
-                raise ValueError, 'Invalid report ID'
-            keys = self.load_report(report)
-            c = Context()
-            c.title = keys.get('DESC','clang error (unrecognized')
-            c.description = """\
-Bug reported by the clang static analyzer.
-
-Description: %s
-File: %s
-Line: %s
-"""%(c.title, keys.get('FILE','<unknown>'), keys.get('LINE', '<unknown>'))
-            c.reportSource = 'report-%s.html' % report
-            c.navMarkup = """<a href="/%s">Report %s</a> > """ % (c.reportSource,
-                                                                  report)
-
-            c.files = [path]
-        return c
-
-    def send_report(self, report, configOverrides=None):
-        def getConfigOption(section, field):            
-            if (configOverrides is not None and
-                section in configOverrides and
-                field in configOverrides[section]):
-                return configOverrides[section][field]
-            return self.server.config.get(section, field)
-
-        # report is None is used for crashes
-        try:
-            c = self.get_report_context(report)
-        except ValueError, e:
-            return self.send_error(400, e.message)
-
-        title = c.title
-        description= c.description
-        reportingFor = c.navMarkup
-        if c.reportSource is None:
-            extraIFrame = ""
-        else:
-            extraIFrame = """\
-<iframe src="/%s" width="100%%" height="40%%"
-        scrolling="auto" frameborder="1">
-  <a href="/%s">View Bug Report</a>
-</iframe>""" % (c.reportSource, c.reportSource)
-
-        reporterSelections = []
-        reporterOptions = []
-
-        try:
-            active = int(getConfigOption('ScanView','reporter'))
-        except:
-            active = 0
-        for i,r in enumerate(self.server.reporters):
-            selected = (i == active)
-            if selected:
-                selectedStr = ' selected'
-            else:
-                selectedStr = ''
-            reporterSelections.append('<option value="%d"%s>%s</option>'%(i,selectedStr,r.getName()))
-            options = '\n'.join([ o.getHTML(r,title,getConfigOption) for o in r.getParameters()])
-            display = ('none','')[selected]
-            reporterOptions.append("""\
-<tr id="%sReporterOptions" style="display:%s">
-  <td class="form_label">%s Options</td>
-  <td class="form_value">
-    <table class="form_inner_group">
-%s
-    </table>
-  </td>
-</tr>
-"""%(r.getName(),display,r.getName(),options))
-        reporterSelections = '\n'.join(reporterSelections)
-        reporterOptionsDivs = '\n'.join(reporterOptions)
-        reportersArray = '[%s]'%(','.join([`r.getName()` for r in self.server.reporters]))
-
-        if c.files:
-            fieldSize = min(5, len(c.files))
-            attachFileOptions = '\n'.join(["""\
-<option value="%d" selected>%s</option>""" % (i,v) for i,v in enumerate(c.files)])
-            attachFileRow = """\
-<tr>
-  <td class="form_label">Attach:</td>
-  <td class="form_value">
-<select style="width:100%%" name="files" multiple size=%d>
-%s
-</select>
-  </td>
-</tr>
-""" % (min(5, len(c.files)), attachFileOptions)
-        else:
-            attachFileRow = ""
-
-        result = """<html>
-<head>
-  <title>File Bug</title>
-  <link rel="stylesheet" type="text/css" href="/scanview.css" />
-</head>
-<script language="javascript" type="text/javascript">
-var reporters = %(reportersArray)s;
-function updateReporterOptions() {
-  index = document.getElementById('reporter').selectedIndex;
-  for (var i=0; i < reporters.length; ++i) {
-    o = document.getElementById(reporters[i] + "ReporterOptions");
-    if (i == index) {
-      o.style.display = "";
-    } else {
-      o.style.display = "none";
-    }
-  }
-}
-</script>
-<body onLoad="updateReporterOptions()">
-<h3>
-<a href="/">Summary</a> > 
-%(reportingFor)s
-File Bug</h3>
-<form name="form" action="/report_submit" method="post">
-<input type="hidden" name="report" value="%(report)s">
-
-<table class="form">
-<tr><td>
-<table class="form_group">
-<tr>
-  <td class="form_clabel">Title:</td>
-  <td class="form_value">
-    <input type="text" name="title" size="50" value="%(title)s">
-  </td>
-</tr>
-<tr>
-  <td class="form_label">Description:</td>
-  <td class="form_value">
-<textarea rows="10" cols="80" name="description">
-%(description)s
-</textarea>
-  </td>
-</tr>
-
-%(attachFileRow)s
-
-</table>
-<br>
-<table class="form_group">
-<tr>
-  <td class="form_clabel">Method:</td>
-  <td class="form_value">
-    <select id="reporter" name="reporter" onChange="updateReporterOptions()">
-    %(reporterSelections)s
-    </select>
-  </td>
-</tr>
-%(reporterOptionsDivs)s
-</table>
-<br>
-</td></tr>
-<tr><td class="form_submit">
-  <input align="right" type="submit" name="Submit" value="Submit">
-</td></tr>
-</table>
-</form>
-
-%(extraIFrame)s
-
-</body>
-</html>"""%locals()
-
-        return self.send_string(result)
-
-    def send_head(self, fields=None):
-        if (self.server.options.onlyServeLocal and
-            self.client_address[0] != '127.0.0.1'):
-            return self.send_error(401, 'Unauthorized host.')
-
-        if fields is None:
-            fields = {}
-        self.fields = fields
-
-        o = urlparse.urlparse(self.path)
-        self.fields = parse_query(o.query, fields)
-        path = posixpath.normpath(urllib.unquote(o.path))
-
-        # Split the components and strip the root prefix.
-        components = path.split('/')[1:]
-        
-        # Special case some top-level entries.
-        if components:
-            name = components[0]
-            if len(components)==2:
-                if name=='report':
-                    return self.send_report(components[1])
-                elif name=='open':
-                    return self.send_open_report(components[1])
-            elif len(components)==1:
-                if name=='quit':
-                    self.server.halt()
-                    return self.send_string('Goodbye.', 'text/plain')
-                elif name=='report_submit':
-                    return self.send_report_submit()
-                elif name=='report_crashes':
-                    overrides = { 'ScanView' : {},
-                                  'Radar' : {},
-                                  'Email' : {} }
-                    for i,r in enumerate(self.server.reporters):
-                        if r.getName() == 'Radar':
-                            overrides['ScanView']['reporter'] = i
-                            break
-                    overrides['Radar']['Component'] = 'llvm - checker'
-                    overrides['Radar']['Component Version'] = 'X'
-                    return self.send_report(None, overrides)
-                elif name=='favicon.ico':
-                    return self.send_path(posixpath.join(kResources,'bugcatcher.ico'))
-        
-        # Match directory entries.
-        if components[-1] == '':
-            components[-1] = 'index.html'
-
-        relpath = '/'.join(components)
-        path = posixpath.join(self.server.root, relpath)
-
-        if self.server.options.debug > 1:
-            print >>sys.stderr, '%s: SERVER: sending path "%s"'%(sys.argv[0],
-                                                                 path)
-        return self.send_path(path)
-
-    def send_404(self):
-        self.send_error(404, "File not found")
-        return None
-
-    def send_path(self, path):
-        # If the requested path is outside the root directory, do not open it
-        rel = os.path.abspath(path)
-        if not rel.startswith(os.path.abspath(self.server.root)):
-          return self.send_404()
-        
-        ctype = self.guess_type(path)
-        if ctype.startswith('text/'):
-            # Patch file instead
-            return self.send_patched_file(path, ctype)
-        else:
-            mode = 'rb'
-        try:
-            f = open(path, mode)
-        except IOError:
-            return self.send_404()
-        return self.send_file(f, ctype)
-
-    def send_file(self, f, ctype):
-        # Patch files to add links, but skip binary files.
-        self.send_response(200)
-        self.send_header("Content-type", ctype)
-        fs = os.fstat(f.fileno())
-        self.send_header("Content-Length", str(fs[6]))
-        self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
-        self.end_headers()
-        return f
-
-    def send_string(self, s, ctype='text/html', headers=True, mtime=None):
-        if headers:
-            self.send_response(200)
-            self.send_header("Content-type", ctype)
-            self.send_header("Content-Length", str(len(s)))
-            if mtime is None:
-                mtime = self.dynamic_mtime
-            self.send_header("Last-Modified", self.date_time_string(mtime))
-            self.end_headers()
-        return StringIO.StringIO(s)
-
-    def send_patched_file(self, path, ctype):
-        # Allow a very limited set of variables. This is pretty gross.
-        variables = {}
-        variables['report'] = ''
-        m = kReportFileRE.match(path)
-        if m:
-            variables['report'] = m.group(2)
-
-        try:
-            f = open(path,'r')
-        except IOError:
-            return self.send_404()
-        fs = os.fstat(f.fileno())
-        data = f.read()
-        for a,b in kReportReplacements:
-            data = a.sub(b % variables, data)
-        return self.send_string(data, ctype, mtime=fs.st_mtime)
-
-
-def create_server(address, options, root):
-    import Reporter
-
-    reporters = Reporter.getReporters()
-
-    return ScanViewServer(address, ScanViewRequestHandler,
-                          root,
-                          reporters,
-                          options)

Modified: trunk/contrib/llvm/tools/clang/tools/scan-view/scan-view
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-view/scan-view	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-view/scan-view	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,131 +0,0 @@
-#!/usr/bin/env python
-
-"""The clang static analyzer results viewer.
-"""
-
-import sys
-import posixpath
-import thread
-import time
-import urllib
-import webbrowser
-
-# How long to wait for server to start.
-kSleepTimeout = .05
-kMaxSleeps = int(60 / kSleepTimeout)
-
-# Default server parameters
-
-kDefaultHost = '127.0.0.1'
-kDefaultPort = 8181
-kMaxPortsToTry = 100
-
-###
-
-def url_is_up(url):
-    try:
-        o = urllib.urlopen(url)
-    except IOError:
-        return False
-    o.close()
-    return True
-
-def start_browser(port, options):
-    import urllib, webbrowser
-
-    url = 'http://%s:%d'%(options.host, port)
-    
-    # Wait for server to start...
-    if options.debug:
-        sys.stderr.write('%s: Waiting for server.' % sys.argv[0])
-        sys.stderr.flush()
-    for i in range(kMaxSleeps):
-        if url_is_up(url):
-            break
-        if options.debug:
-            sys.stderr.write('.')
-            sys.stderr.flush()
-        time.sleep(kSleepTimeout)
-    else:
-        print >>sys.stderr,'WARNING: Unable to detect that server started.'
-
-    if options.debug:
-        print >>sys.stderr,'%s: Starting webbrowser...' % sys.argv[0]
-    webbrowser.open(url)
-
-def run(port, options, root):
-    import ScanView
-    try:
-        print 'Starting scan-view at: http://%s:%d'%(options.host,
-                                                     port)
-        print '  Use Ctrl-C to exit.'
-        httpd = ScanView.create_server((options.host, port),
-                                       options, root)
-        httpd.serve_forever()
-    except KeyboardInterrupt:
-        pass
-
-def port_is_open(port):
-    import SocketServer
-    try:
-        t = SocketServer.TCPServer((kDefaultHost,port),None)
-    except:
-        return False
-    t.server_close()
-    return True
-
-def main():    
-    from optparse import OptionParser
-    parser = OptionParser('usage: %prog [options] <results directory>')
-    parser.set_description(__doc__)
-    parser.add_option(
-        '--host', dest="host", default=kDefaultHost, type="string",
-        help="Host interface to listen on. (default=%s)" % kDefaultHost)
-    parser.add_option(
-        '--port', dest="port", default=None, type="int",
-        help="Port to listen on. (default=%s)" % kDefaultPort)
-    parser.add_option("--debug", dest="debug", default=0, 
-                      action="count",
-                      help="Print additional debugging information.")
-    parser.add_option("--auto-reload", dest="autoReload", default=False, 
-                      action="store_true",
-                      help="Automatically update module for each request.")
-    parser.add_option("--no-browser", dest="startBrowser", default=True, 
-                      action="store_false",
-                      help="Don't open a webbrowser on startup.")
-    parser.add_option("--allow-all-hosts", dest="onlyServeLocal", default=True, 
-                      action="store_false",
-                      help='Allow connections from any host (access restricted to "127.0.0.1" by default)')
-    (options, args) = parser.parse_args()
-
-    if len(args) != 1:
-        parser.error('No results directory specified.')
-    root, = args
-
-    # Make sure this directory is in a reasonable state to view.
-    if not posixpath.exists(posixpath.join(root,'index.html')):
-        parser.error('Invalid directory, analysis results not found!')
-
-    # Find an open port. We aren't particularly worried about race
-    # conditions here. Note that if the user specified a port we only
-    # use that one.
-    if options.port is not None:
-        port = options.port
-    else:    
-        for i in range(kMaxPortsToTry):
-            if port_is_open(kDefaultPort + i):
-                port = kDefaultPort + i
-                break
-        else:
-            parser.error('Unable to find usable port in [%d,%d)'%(kDefaultPort,
-                                                                  kDefaultPort+kMaxPortsToTry))
-
-    # Kick off thread to wait for server and start web browser, if
-    # requested.
-    if options.startBrowser:
-        t = thread.start_new_thread(start_browser, (port,options))
-
-    run(port, options, root)
-
-if __name__ == '__main__':
-    main()

Modified: trunk/contrib/llvm/tools/clang/tools/scan-view/startfile.py
===================================================================
--- trunk/contrib/llvm/tools/clang/tools/scan-view/startfile.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/tools/scan-view/startfile.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,203 +0,0 @@
-"""Utility for opening a file using the default application in a cross-platform
-manner. Modified from http://code.activestate.com/recipes/511443/.
-"""
-
-__version__ = '1.1x'
-__all__ = ['open']
-
-import os
-import sys
-import webbrowser
-import subprocess
-
-_controllers = {}
-_open = None
-
-
-class BaseController(object):
-    '''Base class for open program controllers.'''
-
-    def __init__(self, name):
-        self.name = name
-
-    def open(self, filename):
-        raise NotImplementedError
-
-
-class Controller(BaseController):
-    '''Controller for a generic open program.'''
-
-    def __init__(self, *args):
-        super(Controller, self).__init__(os.path.basename(args[0]))
-        self.args = list(args)
-
-    def _invoke(self, cmdline):
-        if sys.platform[:3] == 'win':
-            closefds = False
-            startupinfo = subprocess.STARTUPINFO()
-            startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
-        else:
-            closefds = True
-            startupinfo = None
-
-        if (os.environ.get('DISPLAY') or sys.platform[:3] == 'win' or
-                                                    sys.platform == 'darwin'):
-            inout = file(os.devnull, 'r+')
-        else:
-            # for TTY programs, we need stdin/out
-            inout = None
-
-        # if possible, put the child precess in separate process group,
-        # so keyboard interrupts don't affect child precess as well as
-        # Python
-        setsid = getattr(os, 'setsid', None)
-        if not setsid:
-            setsid = getattr(os, 'setpgrp', None)
-
-        pipe = subprocess.Popen(cmdline, stdin=inout, stdout=inout,
-                                stderr=inout, close_fds=closefds,
-                                preexec_fn=setsid, startupinfo=startupinfo)
-
-        # It is assumed that this kind of tools (gnome-open, kfmclient,
-        # exo-open, xdg-open and open for OSX) immediately exit after lauching
-        # the specific application
-        returncode = pipe.wait()
-        if hasattr(self, 'fixreturncode'):
-            returncode = self.fixreturncode(returncode)
-        return not returncode
-
-    def open(self, filename):
-        if isinstance(filename, basestring):
-            cmdline = self.args + [filename]
-        else:
-            # assume it is a sequence
-            cmdline = self.args + filename
-        try:
-            return self._invoke(cmdline)
-        except OSError:
-            return False
-
-
-# Platform support for Windows
-if sys.platform[:3] == 'win':
-
-    class Start(BaseController):
-        '''Controller for the win32 start progam through os.startfile.'''
-
-        def open(self, filename):
-            try:
-                os.startfile(filename)
-            except WindowsError:
-                # [Error 22] No application is associated with the specified
-                # file for this operation: '<URL>'
-                return False
-            else:
-                return True
-
-    _controllers['windows-default'] = Start('start')
-    _open = _controllers['windows-default'].open
-
-
-# Platform support for MacOS
-elif sys.platform == 'darwin':
-    _controllers['open']= Controller('open')
-    _open = _controllers['open'].open
-
-
-# Platform support for Unix
-else:
-
-    import commands
-
-    # @WARNING: use the private API of the webbrowser module
-    from webbrowser import _iscommand
-
-    class KfmClient(Controller):
-        '''Controller for the KDE kfmclient program.'''
-
-        def __init__(self, kfmclient='kfmclient'):
-            super(KfmClient, self).__init__(kfmclient, 'exec')
-            self.kde_version = self.detect_kde_version()
-
-        def detect_kde_version(self):
-            kde_version = None
-            try:
-                info = commands.getoutput('kde-config --version')
-
-                for line in info.splitlines():
-                    if line.startswith('KDE'):
-                        kde_version = line.split(':')[-1].strip()
-                        break
-            except (OSError, RuntimeError):
-                pass
-
-            return kde_version
-
-        def fixreturncode(self, returncode):
-            if returncode is not None and self.kde_version > '3.5.4':
-                return returncode
-            else:
-                return os.EX_OK
-
-    def detect_desktop_environment():
-        '''Checks for known desktop environments
-
-        Return the desktop environments name, lowercase (kde, gnome, xfce)
-        or "generic"
-
-        '''
-
-        desktop_environment = 'generic'
-
-        if os.environ.get('KDE_FULL_SESSION') == 'true':
-            desktop_environment = 'kde'
-        elif os.environ.get('GNOME_DESKTOP_SESSION_ID'):
-            desktop_environment = 'gnome'
-        else:
-            try:
-                info = commands.getoutput('xprop -root _DT_SAVE_MODE')
-                if ' = "xfce4"' in info:
-                    desktop_environment = 'xfce'
-            except (OSError, RuntimeError):
-                pass
-
-        return desktop_environment
-
-
-    def register_X_controllers():
-        if _iscommand('kfmclient'):
-            _controllers['kde-open'] = KfmClient()
-
-        for command in ('gnome-open', 'exo-open', 'xdg-open'):
-            if _iscommand(command):
-                _controllers[command] = Controller(command)
-
-    def get():
-        controllers_map = {
-            'gnome': 'gnome-open',
-            'kde': 'kde-open',
-            'xfce': 'exo-open',
-        }
-
-        desktop_environment = detect_desktop_environment()
-
-        try:
-            controller_name = controllers_map[desktop_environment]
-            return _controllers[controller_name].open
-
-        except KeyError:
-            if _controllers.has_key('xdg-open'):
-                return _controllers['xdg-open'].open
-            else:
-                return webbrowser.open
-
-
-    if os.environ.get("DISPLAY"):
-        register_X_controllers()
-    _open = get()
-
-
-def open(filename):
-    '''Open a file or an URL in the registered default application.'''
-
-    return _open(filename)

Modified: trunk/contrib/llvm/tools/clang/unittests/AST/ASTContextParentMapTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/AST/ASTContextParentMapTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/AST/ASTContextParentMapTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,71 +0,0 @@
-//===- unittest/AST/ASTContextParentMapTest.cpp - AST parent map test -----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Tests for the getParents(...) methods of ASTContext.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/ASTMatchers/ASTMatchers.h"
-#include "clang/Tooling/Tooling.h"
-#include "gtest/gtest.h"
-#include "MatchVerifier.h"
-
-namespace clang {
-namespace ast_matchers {
-
-using clang::tooling::newFrontendActionFactory;
-using clang::tooling::runToolOnCodeWithArgs;
-using clang::tooling::FrontendActionFactory;
-
-TEST(GetParents, ReturnsParentForDecl) {
-  MatchVerifier<Decl> Verifier;
-  EXPECT_TRUE(Verifier.match("class C { void f(); };",
-                             methodDecl(hasParent(recordDecl(hasName("C"))))));
-}
-
-TEST(GetParents, ReturnsParentForStmt) {
-  MatchVerifier<Stmt> Verifier;
-  EXPECT_TRUE(Verifier.match("class C { void f() { if (true) {} } };",
-                             ifStmt(hasParent(compoundStmt()))));
-}
-
-TEST(GetParents, ReturnsParentInsideTemplateInstantiations) {
-  MatchVerifier<Decl> DeclVerifier;
-  EXPECT_TRUE(DeclVerifier.match(
-      "template<typename T> struct C { void f() {} };"
-      "void g() { C<int> c; c.f(); }",
-      methodDecl(hasName("f"),
-                 hasParent(recordDecl(isTemplateInstantiation())))));
-  EXPECT_TRUE(DeclVerifier.match(
-      "template<typename T> struct C { void f() {} };"
-      "void g() { C<int> c; c.f(); }",
-      methodDecl(hasName("f"),
-                 hasParent(recordDecl(unless(isTemplateInstantiation()))))));
-  EXPECT_FALSE(DeclVerifier.match(
-      "template<typename T> struct C { void f() {} };"
-      "void g() { C<int> c; c.f(); }",
-      methodDecl(hasName("f"),
-                 allOf(hasParent(recordDecl(unless(isTemplateInstantiation()))),
-                       hasParent(recordDecl(isTemplateInstantiation()))))));
-}
-
-TEST(GetParents, ReturnsMultipleParentsInTemplateInstantiations) {
-  MatchVerifier<Stmt> TemplateVerifier;
-  EXPECT_TRUE(TemplateVerifier.match(
-      "template<typename T> struct C { void f() {} };"
-      "void g() { C<int> c; c.f(); }",
-      compoundStmt(
-          allOf(hasAncestor(recordDecl(isTemplateInstantiation())),
-                hasAncestor(recordDecl(unless(isTemplateInstantiation())))))));
-}
-
-} // end namespace ast_matchers
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/AST/CommentLexer.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/AST/CommentLexer.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/AST/CommentLexer.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1845 +0,0 @@
-//===- unittests/AST/CommentLexer.cpp ------ Comment lexer tests ----------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/CommentLexer.h"
-#include "clang/AST/CommentCommandTraits.h"
-#include "clang/Basic/CommentOptions.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/SourceManager.h"
-#include "llvm/ADT/STLExtras.h"
-#include "gtest/gtest.h"
-#include <vector>
-
-using namespace llvm;
-using namespace clang;
-
-namespace clang {
-namespace comments {
-
-namespace {
-class CommentLexerTest : public ::testing::Test {
-protected:
-  CommentLexerTest()
-    : FileMgr(FileMgrOpts),
-      DiagID(new DiagnosticIDs()),
-      Diags(DiagID, new DiagnosticOptions, new IgnoringDiagConsumer()),
-      SourceMgr(Diags, FileMgr),
-      Traits(Allocator, CommentOptions()) {
-  }
-
-  FileSystemOptions FileMgrOpts;
-  FileManager FileMgr;
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID;
-  DiagnosticsEngine Diags;
-  SourceManager SourceMgr;
-  llvm::BumpPtrAllocator Allocator;
-  CommandTraits Traits;
-
-  void lexString(const char *Source, std::vector<Token> &Toks);
-
-  StringRef getCommandName(const Token &Tok) {
-    return Traits.getCommandInfo(Tok.getCommandID())->Name;
-  }
-
-  StringRef getVerbatimBlockName(const Token &Tok) {
-    return Traits.getCommandInfo(Tok.getVerbatimBlockID())->Name;
-  }
-
-  StringRef getVerbatimLineName(const Token &Tok) {
-    return Traits.getCommandInfo(Tok.getVerbatimLineID())->Name;
-  }
-};
-
-void CommentLexerTest::lexString(const char *Source,
-                                 std::vector<Token> &Toks) {
-  MemoryBuffer *Buf = MemoryBuffer::getMemBuffer(Source);
-  FileID File = SourceMgr.createFileIDForMemBuffer(Buf);
-  SourceLocation Begin = SourceMgr.getLocForStartOfFile(File);
-
-  Lexer L(Allocator, Diags, Traits, Begin, Source, Source + strlen(Source));
-
-  while (1) {
-    Token Tok;
-    L.lex(Tok);
-    if (Tok.is(tok::eof))
-      break;
-    Toks.push_back(Tok);
-  }
-}
-
-} // unnamed namespace
-
-// Empty source range should be handled.
-TEST_F(CommentLexerTest, Basic1) {
-  const char *Source = "";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(0U, Toks.size());
-}
-
-// Empty comments should be handled.
-TEST_F(CommentLexerTest, Basic2) {
-  const char *Sources[] = {
-    "//", "///", "//!", "///<", "//!<"
-  };
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(1U, Toks.size());
-
-    ASSERT_EQ(tok::newline, Toks[0].getKind());
-  }
-}
-
-// Empty comments should be handled.
-TEST_F(CommentLexerTest, Basic3) {
-  const char *Sources[] = {
-    "/**/", "/***/", "/*!*/", "/**<*/", "/*!<*/"
-  };
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(2U, Toks.size());
-
-    ASSERT_EQ(tok::newline, Toks[0].getKind());
-    ASSERT_EQ(tok::newline, Toks[1].getKind());
-  }
-}
-
-// Single comment with plain text.
-TEST_F(CommentLexerTest, Basic4) {
-  const char *Sources[] = {
-    "// Meow",   "/// Meow",    "//! Meow",
-    "// Meow\n", "// Meow\r\n", "//! Meow\r",
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(2U, Toks.size());
-
-    ASSERT_EQ(tok::text,          Toks[0].getKind());
-    ASSERT_EQ(StringRef(" Meow"), Toks[0].getText());
-
-    ASSERT_EQ(tok::newline,       Toks[1].getKind());
-  }
-}
-
-// Single comment with plain text.
-TEST_F(CommentLexerTest, Basic5) {
-  const char *Sources[] = {
-    "/* Meow*/", "/** Meow*/",  "/*! Meow*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(3U, Toks.size());
-
-    ASSERT_EQ(tok::text,          Toks[0].getKind());
-    ASSERT_EQ(StringRef(" Meow"), Toks[0].getText());
-
-    ASSERT_EQ(tok::newline,       Toks[1].getKind());
-    ASSERT_EQ(tok::newline,       Toks[2].getKind());
-  }
-}
-
-// Test newline escaping.
-TEST_F(CommentLexerTest, Basic6) {
-  const char *Sources[] = {
-    "// Aaa\\\n"   " Bbb\\ \n"   " Ccc?" "?/\n",
-    "// Aaa\\\r\n" " Bbb\\ \r\n" " Ccc?" "?/\r\n",
-    "// Aaa\\\r"   " Bbb\\ \r"   " Ccc?" "?/\r"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(10U, Toks.size());
-
-    ASSERT_EQ(tok::text,         Toks[0].getKind());
-    ASSERT_EQ(StringRef(" Aaa"), Toks[0].getText());
-    ASSERT_EQ(tok::text,         Toks[1].getKind());
-    ASSERT_EQ(StringRef("\\"),   Toks[1].getText());
-    ASSERT_EQ(tok::newline,      Toks[2].getKind());
-
-    ASSERT_EQ(tok::text,         Toks[3].getKind());
-    ASSERT_EQ(StringRef(" Bbb"), Toks[3].getText());
-    ASSERT_EQ(tok::text,         Toks[4].getKind());
-    ASSERT_EQ(StringRef("\\"),   Toks[4].getText());
-    ASSERT_EQ(tok::text,         Toks[5].getKind());
-    ASSERT_EQ(StringRef(" "),    Toks[5].getText());
-    ASSERT_EQ(tok::newline,      Toks[6].getKind());
-
-    ASSERT_EQ(tok::text,         Toks[7].getKind());
-    ASSERT_EQ(StringRef(" Ccc?" "?/"), Toks[7].getText());
-    ASSERT_EQ(tok::newline,      Toks[8].getKind());
-
-    ASSERT_EQ(tok::newline,      Toks[9].getKind());
-  }
-}
-
-// Check that we skip C-style aligned stars correctly.
-TEST_F(CommentLexerTest, Basic7) {
-  const char *Source =
-    "/* Aaa\n"
-    " * Bbb\r\n"
-    "\t* Ccc\n"
-    "  ! Ddd\n"
-    "  * Eee\n"
-    "  ** Fff\n"
-    " */";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(15U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" Aaa"), Toks[0].getText());
-  ASSERT_EQ(tok::newline,      Toks[1].getKind());
-
-  ASSERT_EQ(tok::text,         Toks[2].getKind());
-  ASSERT_EQ(StringRef(" Bbb"), Toks[2].getText());
-  ASSERT_EQ(tok::newline,      Toks[3].getKind());
-
-  ASSERT_EQ(tok::text,         Toks[4].getKind());
-  ASSERT_EQ(StringRef(" Ccc"), Toks[4].getText());
-  ASSERT_EQ(tok::newline,      Toks[5].getKind());
-
-  ASSERT_EQ(tok::text,            Toks[6].getKind());
-  ASSERT_EQ(StringRef("  ! Ddd"), Toks[6].getText());
-  ASSERT_EQ(tok::newline,         Toks[7].getKind());
-
-  ASSERT_EQ(tok::text,         Toks[8].getKind());
-  ASSERT_EQ(StringRef(" Eee"), Toks[8].getText());
-  ASSERT_EQ(tok::newline,      Toks[9].getKind());
-
-  ASSERT_EQ(tok::text,          Toks[10].getKind());
-  ASSERT_EQ(StringRef("* Fff"), Toks[10].getText());
-  ASSERT_EQ(tok::newline,       Toks[11].getKind());
-
-  ASSERT_EQ(tok::text,         Toks[12].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[12].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[13].getKind());
-  ASSERT_EQ(tok::newline,      Toks[14].getKind());
-}
-
-// A command marker followed by comment end.
-TEST_F(CommentLexerTest, DoxygenCommand1) {
-  const char *Sources[] = { "//@", "///@", "//!@" };
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(2U, Toks.size());
-
-    ASSERT_EQ(tok::text,          Toks[0].getKind());
-    ASSERT_EQ(StringRef("@"),     Toks[0].getText());
-
-    ASSERT_EQ(tok::newline,       Toks[1].getKind());
-  }
-}
-
-// A command marker followed by comment end.
-TEST_F(CommentLexerTest, DoxygenCommand2) {
-  const char *Sources[] = { "/*@*/", "/**@*/", "/*!@*/"};
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(3U, Toks.size());
-
-    ASSERT_EQ(tok::text,          Toks[0].getKind());
-    ASSERT_EQ(StringRef("@"),     Toks[0].getText());
-
-    ASSERT_EQ(tok::newline,       Toks[1].getKind());
-    ASSERT_EQ(tok::newline,       Toks[2].getKind());
-  }
-}
-
-// A command marker followed by comment end.
-TEST_F(CommentLexerTest, DoxygenCommand3) {
-  const char *Sources[] = { "/*\\*/", "/**\\*/" };
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(3U, Toks.size());
-
-    ASSERT_EQ(tok::text,           Toks[0].getKind());
-    ASSERT_EQ(StringRef("\\"),     Toks[0].getText());
-
-    ASSERT_EQ(tok::newline,        Toks[1].getKind());
-    ASSERT_EQ(tok::newline,        Toks[2].getKind());
-  }
-}
-
-// Doxygen escape sequences.
-TEST_F(CommentLexerTest, DoxygenCommand4) {
-  const char *Sources[] = {
-    "/// \\\\ \\@ \\& \\$ \\# \\< \\> \\% \\\" \\. \\::",
-    "/// @\\ @@ @& @$ @# @< @> @% @\" @. @::"
-  };
-  const char *Text[] = {
-    " ",
-    "\\", " ", "@", " ", "&", " ", "$",  " ", "#", " ",
-    "<",  " ", ">", " ", "%", " ", "\"", " ", ".", " ",
-    "::", ""
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(array_lengthof(Text), Toks.size());
-
-    for (size_t j = 0, e = Toks.size(); j != e; j++) {
-      if(Toks[j].is(tok::text))
-        ASSERT_EQ(StringRef(Text[j]), Toks[j].getText())
-          << "index " << i;
-    }
-  }
-}
-
-// A command marker followed by a non-letter that is not a part of an escape
-// sequence.
-TEST_F(CommentLexerTest, DoxygenCommand5) {
-  const char *Source = "/// \\^ \\0";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(6U, Toks.size());
-
-  ASSERT_EQ(tok::text,       Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),  Toks[0].getText());
-
-  ASSERT_EQ(tok::text,       Toks[1].getKind());
-  ASSERT_EQ(StringRef("\\"), Toks[1].getText());
-
-  ASSERT_EQ(tok::text,       Toks[2].getKind());
-  ASSERT_EQ(StringRef("^ "), Toks[2].getText());
-
-  ASSERT_EQ(tok::text,       Toks[3].getKind());
-  ASSERT_EQ(StringRef("\\"), Toks[3].getText());
-
-  ASSERT_EQ(tok::text,       Toks[4].getKind());
-  ASSERT_EQ(StringRef("0"),  Toks[4].getText());
-
-  ASSERT_EQ(tok::newline,    Toks[5].getKind());
-}
-
-TEST_F(CommentLexerTest, DoxygenCommand6) {
-  const char *Source = "/// \\brief Aaa.";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,          Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[1].getKind());
-  ASSERT_EQ(StringRef("brief"), getCommandName(Toks[1]));
-
-  ASSERT_EQ(tok::text,          Toks[2].getKind());
-  ASSERT_EQ(StringRef(" Aaa."), Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, DoxygenCommand7) {
-  const char *Source = "/// \\em\\em \\em\t\\em\n";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(8U, Toks.size());
-
-  ASSERT_EQ(tok::text,       Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),  Toks[0].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[1].getKind());
-  ASSERT_EQ(StringRef("em"), getCommandName(Toks[1]));
-
-  ASSERT_EQ(tok::backslash_command, Toks[2].getKind());
-  ASSERT_EQ(StringRef("em"), getCommandName(Toks[2]));
-
-  ASSERT_EQ(tok::text,       Toks[3].getKind());
-  ASSERT_EQ(StringRef(" "),  Toks[3].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[4].getKind());
-  ASSERT_EQ(StringRef("em"), getCommandName(Toks[4]));
-
-  ASSERT_EQ(tok::text,       Toks[5].getKind());
-  ASSERT_EQ(StringRef("\t"), Toks[5].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[6].getKind());
-  ASSERT_EQ(StringRef("em"), getCommandName(Toks[6]));
-
-  ASSERT_EQ(tok::newline,    Toks[7].getKind());
-}
-
-TEST_F(CommentLexerTest, DoxygenCommand8) {
-  const char *Source = "/// @em at em @em\t at em\n";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(8U, Toks.size());
-
-  ASSERT_EQ(tok::text,       Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),  Toks[0].getText());
-
-  ASSERT_EQ(tok::at_command, Toks[1].getKind());
-  ASSERT_EQ(StringRef("em"), getCommandName(Toks[1]));
-
-  ASSERT_EQ(tok::at_command, Toks[2].getKind());
-  ASSERT_EQ(StringRef("em"), getCommandName(Toks[2]));
-
-  ASSERT_EQ(tok::text,       Toks[3].getKind());
-  ASSERT_EQ(StringRef(" "),  Toks[3].getText());
-
-  ASSERT_EQ(tok::at_command, Toks[4].getKind());
-  ASSERT_EQ(StringRef("em"), getCommandName(Toks[4]));
-
-  ASSERT_EQ(tok::text,       Toks[5].getKind());
-  ASSERT_EQ(StringRef("\t"), Toks[5].getText());
-
-  ASSERT_EQ(tok::at_command, Toks[6].getKind());
-  ASSERT_EQ(StringRef("em"), getCommandName(Toks[6]));
-
-  ASSERT_EQ(tok::newline,    Toks[7].getKind());
-}
-
-TEST_F(CommentLexerTest, DoxygenCommand9) {
-  const char *Source = "/// \\aaa\\bbb \\ccc\t\\ddd\n";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(8U, Toks.size());
-
-  ASSERT_EQ(tok::text,        Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),   Toks[0].getText());
-
-  ASSERT_EQ(tok::unknown_command, Toks[1].getKind());
-  ASSERT_EQ(StringRef("aaa"), Toks[1].getUnknownCommandName());
-
-  ASSERT_EQ(tok::unknown_command, Toks[2].getKind());
-  ASSERT_EQ(StringRef("bbb"), Toks[2].getUnknownCommandName());
-
-  ASSERT_EQ(tok::text,        Toks[3].getKind());
-  ASSERT_EQ(StringRef(" "),   Toks[3].getText());
-
-  ASSERT_EQ(tok::unknown_command, Toks[4].getKind());
-  ASSERT_EQ(StringRef("ccc"), Toks[4].getUnknownCommandName());
-
-  ASSERT_EQ(tok::text,        Toks[5].getKind());
-  ASSERT_EQ(StringRef("\t"),  Toks[5].getText());
-
-  ASSERT_EQ(tok::unknown_command, Toks[6].getKind());
-  ASSERT_EQ(StringRef("ddd"), Toks[6].getUnknownCommandName());
-
-  ASSERT_EQ(tok::newline,     Toks[7].getKind());
-}
-
-TEST_F(CommentLexerTest, DoxygenCommand10) {
-  const char *Source = "// \\c\n";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,      Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "), Toks[0].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[1].getKind());
-  ASSERT_EQ(StringRef("c"), getCommandName(Toks[1]));
-
-  ASSERT_EQ(tok::newline,   Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, RegisterCustomBlockCommand) {
-  const char *Source =
-    "/// \\NewBlockCommand Aaa.\n"
-    "/// @NewBlockCommand Aaa.\n";
-
-  Traits.registerBlockCommand(StringRef("NewBlockCommand"));
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(8U, Toks.size());
-
-  ASSERT_EQ(tok::text,          Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[1].getKind());
-  ASSERT_EQ(StringRef("NewBlockCommand"), getCommandName(Toks[1]));
-
-  ASSERT_EQ(tok::text,          Toks[2].getKind());
-  ASSERT_EQ(StringRef(" Aaa."), Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[3].getKind());
-
-  ASSERT_EQ(tok::text,          Toks[4].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[4].getText());
-
-  ASSERT_EQ(tok::at_command,    Toks[5].getKind());
-  ASSERT_EQ(StringRef("NewBlockCommand"), getCommandName(Toks[5]));
-
-  ASSERT_EQ(tok::text,          Toks[6].getKind());
-  ASSERT_EQ(StringRef(" Aaa."), Toks[6].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[7].getKind());
-}
-
-TEST_F(CommentLexerTest, RegisterMultipleBlockCommands) {
-  const char *Source =
-    "/// \\Foo\n"
-    "/// \\Bar Baz\n"
-    "/// \\Blech quux=corge\n";
-
-  Traits.registerBlockCommand(StringRef("Foo"));
-  Traits.registerBlockCommand(StringRef("Bar"));
-  Traits.registerBlockCommand(StringRef("Blech"));
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(11U, Toks.size());
-
-  ASSERT_EQ(tok::text,      Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "), Toks[0].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[1].getKind());
-  ASSERT_EQ(StringRef("Foo"), getCommandName(Toks[1]));
-
-  ASSERT_EQ(tok::newline,     Toks[2].getKind());
-
-  ASSERT_EQ(tok::text,      Toks[3].getKind());
-  ASSERT_EQ(StringRef(" "), Toks[3].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[4].getKind());
-  ASSERT_EQ(StringRef("Bar"), getCommandName(Toks[4]));
-
-  ASSERT_EQ(tok::text,         Toks[5].getKind());
-  ASSERT_EQ(StringRef(" Baz"), Toks[5].getText());
-
-  ASSERT_EQ(tok::newline,     Toks[6].getKind());
-
-  ASSERT_EQ(tok::text,      Toks[7].getKind());
-  ASSERT_EQ(StringRef(" "), Toks[7].getText());
-
-  ASSERT_EQ(tok::backslash_command, Toks[8].getKind());
-  ASSERT_EQ(StringRef("Blech"), getCommandName(Toks[8]));
-
-  ASSERT_EQ(tok::text,                Toks[9].getKind());
-  ASSERT_EQ(StringRef(" quux=corge"), Toks[9].getText());
-
-  ASSERT_EQ(tok::newline,     Toks[10].getKind());
-}
-
-// Empty verbatim block.
-TEST_F(CommentLexerTest, VerbatimBlock1) {
-  const char *Sources[] = {
-    "/// \\verbatim\\endverbatim\n//",
-    "/** \\verbatim\\endverbatim*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(5U, Toks.size());
-
-    ASSERT_EQ(tok::text,                 Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),            Toks[0].getText());
-
-    ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-    ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[1]));
-
-    ASSERT_EQ(tok::verbatim_block_end,   Toks[2].getKind());
-    ASSERT_EQ(StringRef("endverbatim"),  getVerbatimBlockName(Toks[2]));
-
-    ASSERT_EQ(tok::newline,              Toks[3].getKind());
-    ASSERT_EQ(tok::newline,              Toks[4].getKind());
-  }
-}
-
-// Empty verbatim block without an end command.
-TEST_F(CommentLexerTest, VerbatimBlock2) {
-  const char *Source = "/// \\verbatim";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,                 Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),            Toks[0].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-  ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[1]));
-
-  ASSERT_EQ(tok::newline,              Toks[2].getKind());
-}
-
-// Empty verbatim block without an end command.
-TEST_F(CommentLexerTest, VerbatimBlock3) {
-  const char *Source = "/** \\verbatim*/";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,                 Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),            Toks[0].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-  ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[1]));
-
-  ASSERT_EQ(tok::newline,              Toks[2].getKind());
-  ASSERT_EQ(tok::newline,              Toks[3].getKind());
-}
-
-// Single-line verbatim block.
-TEST_F(CommentLexerTest, VerbatimBlock4) {
-  const char *Sources[] = {
-    "/// Meow \\verbatim aaa \\endverbatim\n//",
-    "/** Meow \\verbatim aaa \\endverbatim*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(6U, Toks.size());
-
-    ASSERT_EQ(tok::text,                 Toks[0].getKind());
-    ASSERT_EQ(StringRef(" Meow "),       Toks[0].getText());
-
-    ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-    ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[1]));
-
-    ASSERT_EQ(tok::verbatim_block_line,  Toks[2].getKind());
-    ASSERT_EQ(StringRef(" aaa "),        Toks[2].getVerbatimBlockText());
-
-    ASSERT_EQ(tok::verbatim_block_end,   Toks[3].getKind());
-    ASSERT_EQ(StringRef("endverbatim"),  getVerbatimBlockName(Toks[3]));
-
-    ASSERT_EQ(tok::newline,              Toks[4].getKind());
-    ASSERT_EQ(tok::newline,              Toks[5].getKind());
-  }
-}
-
-// Single-line verbatim block without an end command.
-TEST_F(CommentLexerTest, VerbatimBlock5) {
-  const char *Sources[] = {
-    "/// Meow \\verbatim aaa \n//",
-    "/** Meow \\verbatim aaa */"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(5U, Toks.size());
-
-    ASSERT_EQ(tok::text,                 Toks[0].getKind());
-    ASSERT_EQ(StringRef(" Meow "),       Toks[0].getText());
-
-    ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-    ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[1]));
-
-    ASSERT_EQ(tok::verbatim_block_line,  Toks[2].getKind());
-    ASSERT_EQ(StringRef(" aaa "),        Toks[2].getVerbatimBlockText());
-
-    ASSERT_EQ(tok::newline,              Toks[3].getKind());
-    ASSERT_EQ(tok::newline,              Toks[4].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, VerbatimBlock6) {
-  const char *Source =
-    "// \\verbatim\n"
-    "// Aaa\n"
-    "//\n"
-    "// Bbb\n"
-    "// \\endverbatim\n";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(10U, Toks.size());
-
-  ASSERT_EQ(tok::text,                 Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),            Toks[0].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-  ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[1]));
-
-  ASSERT_EQ(tok::newline,              Toks[2].getKind());
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[3].getKind());
-  ASSERT_EQ(StringRef(" Aaa"),         Toks[3].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::newline,              Toks[4].getKind());
-
-  ASSERT_EQ(tok::newline,              Toks[5].getKind());
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[6].getKind());
-  ASSERT_EQ(StringRef(" Bbb"),         Toks[6].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::newline,              Toks[7].getKind());
-
-  ASSERT_EQ(tok::verbatim_block_end,   Toks[8].getKind());
-  ASSERT_EQ(StringRef("endverbatim"),  getVerbatimBlockName(Toks[8]));
-
-  ASSERT_EQ(tok::newline,              Toks[9].getKind());
-}
-
-TEST_F(CommentLexerTest, VerbatimBlock7) {
-  const char *Source =
-    "/* \\verbatim\n"
-    " * Aaa\n"
-    " *\n"
-    " * Bbb\n"
-    " * \\endverbatim\n"
-    " */";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(10U, Toks.size());
-
-  ASSERT_EQ(tok::text,                 Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),            Toks[0].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-  ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[1]));
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[2].getKind());
-  ASSERT_EQ(StringRef(" Aaa"),         Toks[2].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[3].getKind());
-  ASSERT_EQ(StringRef(""),             Toks[3].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[4].getKind());
-  ASSERT_EQ(StringRef(" Bbb"),         Toks[4].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_end,   Toks[5].getKind());
-  ASSERT_EQ(StringRef("endverbatim"),  getVerbatimBlockName(Toks[5]));
-
-  ASSERT_EQ(tok::newline,              Toks[6].getKind());
-
-  ASSERT_EQ(tok::text,                 Toks[7].getKind());
-  ASSERT_EQ(StringRef(" "),            Toks[7].getText());
-
-  ASSERT_EQ(tok::newline,              Toks[8].getKind());
-  ASSERT_EQ(tok::newline,              Toks[9].getKind());
-}
-
-// Complex test for verbatim blocks.
-TEST_F(CommentLexerTest, VerbatimBlock8) {
-  const char *Source =
-    "/* Meow \\verbatim aaa\\$\\@\n"
-    "bbb \\endverbati\r"
-    "ccc\r\n"
-    "ddd \\endverbatim Blah \\verbatim eee\n"
-    "\\endverbatim BlahBlah*/";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(14U, Toks.size());
-
-  ASSERT_EQ(tok::text,                 Toks[0].getKind());
-  ASSERT_EQ(StringRef(" Meow "),       Toks[0].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-  ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[1]));
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[2].getKind());
-  ASSERT_EQ(StringRef(" aaa\\$\\@"),   Toks[2].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[3].getKind());
-  ASSERT_EQ(StringRef("bbb \\endverbati"), Toks[3].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[4].getKind());
-  ASSERT_EQ(StringRef("ccc"),          Toks[4].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[5].getKind());
-  ASSERT_EQ(StringRef("ddd "),         Toks[5].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_end,   Toks[6].getKind());
-  ASSERT_EQ(StringRef("endverbatim"),  getVerbatimBlockName(Toks[6]));
-
-  ASSERT_EQ(tok::text,                 Toks[7].getKind());
-  ASSERT_EQ(StringRef(" Blah "),       Toks[7].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[8].getKind());
-  ASSERT_EQ(StringRef("verbatim"),     getVerbatimBlockName(Toks[8]));
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[9].getKind());
-  ASSERT_EQ(StringRef(" eee"),         Toks[9].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_end,   Toks[10].getKind());
-  ASSERT_EQ(StringRef("endverbatim"),  getVerbatimBlockName(Toks[10]));
-
-  ASSERT_EQ(tok::text,                 Toks[11].getKind());
-  ASSERT_EQ(StringRef(" BlahBlah"),    Toks[11].getText());
-
-  ASSERT_EQ(tok::newline,              Toks[12].getKind());
-  ASSERT_EQ(tok::newline,              Toks[13].getKind());
-}
-
-// LaTeX verbatim blocks.
-TEST_F(CommentLexerTest, VerbatimBlock9) {
-  const char *Source =
-    "/// \\f$ Aaa \\f$ \\f[ Bbb \\f] \\f{ Ccc \\f}";
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(13U, Toks.size());
-
-  ASSERT_EQ(tok::text,                 Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),            Toks[0].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[1].getKind());
-  ASSERT_EQ(StringRef("f$"),           getVerbatimBlockName(Toks[1]));
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[2].getKind());
-  ASSERT_EQ(StringRef(" Aaa "),        Toks[2].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_end,   Toks[3].getKind());
-  ASSERT_EQ(StringRef("f$"),           getVerbatimBlockName(Toks[3]));
-
-  ASSERT_EQ(tok::text,                 Toks[4].getKind());
-  ASSERT_EQ(StringRef(" "),            Toks[4].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[5].getKind());
-  ASSERT_EQ(StringRef("f["),           getVerbatimBlockName(Toks[5]));
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[6].getKind());
-  ASSERT_EQ(StringRef(" Bbb "),        Toks[6].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_end,   Toks[7].getKind());
-  ASSERT_EQ(StringRef("f]"),           getVerbatimBlockName(Toks[7]));
-
-  ASSERT_EQ(tok::text,                 Toks[8].getKind());
-  ASSERT_EQ(StringRef(" "),            Toks[8].getText());
-
-  ASSERT_EQ(tok::verbatim_block_begin, Toks[9].getKind());
-  ASSERT_EQ(StringRef("f{"),           getVerbatimBlockName(Toks[9]));
-
-  ASSERT_EQ(tok::verbatim_block_line,  Toks[10].getKind());
-  ASSERT_EQ(StringRef(" Ccc "),        Toks[10].getVerbatimBlockText());
-
-  ASSERT_EQ(tok::verbatim_block_end,   Toks[11].getKind());
-  ASSERT_EQ(StringRef("f}"),           getVerbatimBlockName(Toks[11]));
-
-  ASSERT_EQ(tok::newline,              Toks[12].getKind());
-}
-
-// Empty verbatim line.
-TEST_F(CommentLexerTest, VerbatimLine1) {
-  const char *Sources[] = {
-    "/// \\fn\n//",
-    "/** \\fn*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(4U, Toks.size());
-
-    ASSERT_EQ(tok::text,               Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),          Toks[0].getText());
-
-    ASSERT_EQ(tok::verbatim_line_name, Toks[1].getKind());
-    ASSERT_EQ(StringRef("fn"),         getVerbatimLineName(Toks[1]));
-
-    ASSERT_EQ(tok::newline,            Toks[2].getKind());
-    ASSERT_EQ(tok::newline,            Toks[3].getKind());
-  }
-}
-
-// Verbatim line with Doxygen escape sequences, which should not be expanded.
-TEST_F(CommentLexerTest, VerbatimLine2) {
-  const char *Sources[] = {
-    "/// \\fn void *foo(const char *zzz = \"\\$\");\n//",
-    "/** \\fn void *foo(const char *zzz = \"\\$\");*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(5U, Toks.size());
-
-    ASSERT_EQ(tok::text,               Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),          Toks[0].getText());
-
-    ASSERT_EQ(tok::verbatim_line_name, Toks[1].getKind());
-    ASSERT_EQ(StringRef("fn"),         getVerbatimLineName(Toks[1]));
-
-    ASSERT_EQ(tok::verbatim_line_text, Toks[2].getKind());
-    ASSERT_EQ(StringRef(" void *foo(const char *zzz = \"\\$\");"),
-                                       Toks[2].getVerbatimLineText());
-
-    ASSERT_EQ(tok::newline,            Toks[3].getKind());
-    ASSERT_EQ(tok::newline,            Toks[4].getKind());
-  }
-}
-
-// Verbatim line should not eat anything from next source line.
-TEST_F(CommentLexerTest, VerbatimLine3) {
-  const char *Source =
-    "/** \\fn void *foo(const char *zzz = \"\\$\");\n"
-    " * Meow\n"
-    " */";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(9U, Toks.size());
-
-  ASSERT_EQ(tok::text,               Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),          Toks[0].getText());
-
-  ASSERT_EQ(tok::verbatim_line_name, Toks[1].getKind());
-  ASSERT_EQ(StringRef("fn"),         getVerbatimLineName(Toks[1]));
-
-  ASSERT_EQ(tok::verbatim_line_text, Toks[2].getKind());
-  ASSERT_EQ(StringRef(" void *foo(const char *zzz = \"\\$\");"),
-                                     Toks[2].getVerbatimLineText());
-  ASSERT_EQ(tok::newline,            Toks[3].getKind());
-
-  ASSERT_EQ(tok::text,               Toks[4].getKind());
-  ASSERT_EQ(StringRef(" Meow"),      Toks[4].getText());
-  ASSERT_EQ(tok::newline,            Toks[5].getKind());
-
-  ASSERT_EQ(tok::text,               Toks[6].getKind());
-  ASSERT_EQ(StringRef(" "),          Toks[6].getText());
-
-  ASSERT_EQ(tok::newline,            Toks[7].getKind());
-  ASSERT_EQ(tok::newline,            Toks[8].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML1) {
-  const char *Source =
-    "// <";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,      Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "), Toks[0].getText());
-
-  ASSERT_EQ(tok::text,      Toks[1].getKind());
-  ASSERT_EQ(StringRef("<"), Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,   Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML2) {
-  const char *Source =
-    "// a<2";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,       Toks[0].getKind());
-  ASSERT_EQ(StringRef(" a"), Toks[0].getText());
-
-  ASSERT_EQ(tok::text,       Toks[1].getKind());
-  ASSERT_EQ(StringRef("<"),  Toks[1].getText());
-
-  ASSERT_EQ(tok::text,       Toks[2].getKind());
-  ASSERT_EQ(StringRef("2"),  Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,    Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML3) {
-  const char *Source =
-    "// < img";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("<"),    Toks[1].getText());
-
-  ASSERT_EQ(tok::text,         Toks[2].getKind());
-  ASSERT_EQ(StringRef(" img"), Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML4) {
-  const char *Sources[] = {
-    "// <img",
-    "// <img "
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(3U, Toks.size());
-
-    ASSERT_EQ(tok::text,           Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),      Toks[0].getText());
-
-    ASSERT_EQ(tok::html_start_tag, Toks[1].getKind());
-    ASSERT_EQ(StringRef("img"),    Toks[1].getHTMLTagStartName());
-
-    ASSERT_EQ(tok::newline,        Toks[2].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, HTML5) {
-  const char *Source =
-    "// <img 42";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,           Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),      Toks[0].getText());
-
-  ASSERT_EQ(tok::html_start_tag, Toks[1].getKind());
-  ASSERT_EQ(StringRef("img"),    Toks[1].getHTMLTagStartName());
-
-  ASSERT_EQ(tok::text,           Toks[2].getKind());
-  ASSERT_EQ(StringRef("42"),     Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,        Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML6) {
-  const char *Source = "// <img> Meow";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(5U, Toks.size());
-
-  ASSERT_EQ(tok::text,           Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),      Toks[0].getText());
-
-  ASSERT_EQ(tok::html_start_tag, Toks[1].getKind());
-  ASSERT_EQ(StringRef("img"),    Toks[1].getHTMLTagStartName());
-
-  ASSERT_EQ(tok::html_greater,   Toks[2].getKind());
-
-  ASSERT_EQ(tok::text,           Toks[3].getKind());
-  ASSERT_EQ(StringRef(" Meow"),  Toks[3].getText());
-
-  ASSERT_EQ(tok::newline,        Toks[4].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML7) {
-  const char *Source = "// <img=";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,           Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),      Toks[0].getText());
-
-  ASSERT_EQ(tok::html_start_tag, Toks[1].getKind());
-  ASSERT_EQ(StringRef("img"),    Toks[1].getHTMLTagStartName());
-
-  ASSERT_EQ(tok::text,           Toks[2].getKind());
-  ASSERT_EQ(StringRef("="),      Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,        Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML8) {
-  const char *Source = "// <img src=> Meow";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(7U, Toks.size());
-
-  ASSERT_EQ(tok::text,           Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),      Toks[0].getText());
-
-  ASSERT_EQ(tok::html_start_tag, Toks[1].getKind());
-  ASSERT_EQ(StringRef("img"),    Toks[1].getHTMLTagStartName());
-
-  ASSERT_EQ(tok::html_ident,     Toks[2].getKind());
-  ASSERT_EQ(StringRef("src"),   Toks[2].getHTMLIdent());
-
-  ASSERT_EQ(tok::html_equals,    Toks[3].getKind());
-
-  ASSERT_EQ(tok::html_greater,   Toks[4].getKind());
-
-  ASSERT_EQ(tok::text,           Toks[5].getKind());
-  ASSERT_EQ(StringRef(" Meow"),  Toks[5].getText());
-
-  ASSERT_EQ(tok::newline,        Toks[6].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML9) {
-  const char *Sources[] = {
-    "// <img src",
-    "// <img src "
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(4U, Toks.size());
-
-    ASSERT_EQ(tok::text,           Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),      Toks[0].getText());
-
-    ASSERT_EQ(tok::html_start_tag, Toks[1].getKind());
-    ASSERT_EQ(StringRef("img"),    Toks[1].getHTMLTagStartName());
-
-    ASSERT_EQ(tok::html_ident,     Toks[2].getKind());
-    ASSERT_EQ(StringRef("src"),    Toks[2].getHTMLIdent());
-
-    ASSERT_EQ(tok::newline,        Toks[3].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, HTML10) {
-  const char *Sources[] = {
-    "// <img src=",
-    "// <img src ="
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(5U, Toks.size());
-
-    ASSERT_EQ(tok::text,           Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),      Toks[0].getText());
-
-    ASSERT_EQ(tok::html_start_tag, Toks[1].getKind());
-    ASSERT_EQ(StringRef("img"),    Toks[1].getHTMLTagStartName());
-
-    ASSERT_EQ(tok::html_ident,     Toks[2].getKind());
-    ASSERT_EQ(StringRef("src"),    Toks[2].getHTMLIdent());
-
-    ASSERT_EQ(tok::html_equals,    Toks[3].getKind());
-
-    ASSERT_EQ(tok::newline,        Toks[4].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, HTML11) {
-  const char *Sources[] = {
-    "// <img src=\"",
-    "// <img src = \"",
-    "// <img src=\'",
-    "// <img src = \'"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(6U, Toks.size());
-
-    ASSERT_EQ(tok::text,               Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),          Toks[0].getText());
-
-    ASSERT_EQ(tok::html_start_tag,     Toks[1].getKind());
-    ASSERT_EQ(StringRef("img"),        Toks[1].getHTMLTagStartName());
-
-    ASSERT_EQ(tok::html_ident,         Toks[2].getKind());
-    ASSERT_EQ(StringRef("src"),        Toks[2].getHTMLIdent());
-
-    ASSERT_EQ(tok::html_equals,        Toks[3].getKind());
-
-    ASSERT_EQ(tok::html_quoted_string, Toks[4].getKind());
-    ASSERT_EQ(StringRef(""),           Toks[4].getHTMLQuotedString());
-
-    ASSERT_EQ(tok::newline,            Toks[5].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, HTML12) {
-  const char *Source = "// <img src=@";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(6U, Toks.size());
-
-  ASSERT_EQ(tok::text,           Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),      Toks[0].getText());
-
-  ASSERT_EQ(tok::html_start_tag, Toks[1].getKind());
-  ASSERT_EQ(StringRef("img"),    Toks[1].getHTMLTagStartName());
-
-  ASSERT_EQ(tok::html_ident,     Toks[2].getKind());
-  ASSERT_EQ(StringRef("src"),    Toks[2].getHTMLIdent());
-
-  ASSERT_EQ(tok::html_equals,    Toks[3].getKind());
-
-  ASSERT_EQ(tok::text,           Toks[4].getKind());
-  ASSERT_EQ(StringRef("@"),      Toks[4].getText());
-
-  ASSERT_EQ(tok::newline,        Toks[5].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML13) {
-  const char *Sources[] = {
-    "// <img src=\"val\\\"\\'val",
-    "// <img src=\"val\\\"\\'val\"",
-    "// <img src=\'val\\\"\\'val",
-    "// <img src=\'val\\\"\\'val\'"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(6U, Toks.size());
-
-    ASSERT_EQ(tok::text,                  Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),             Toks[0].getText());
-
-    ASSERT_EQ(tok::html_start_tag,        Toks[1].getKind());
-    ASSERT_EQ(StringRef("img"),           Toks[1].getHTMLTagStartName());
-
-    ASSERT_EQ(tok::html_ident,            Toks[2].getKind());
-    ASSERT_EQ(StringRef("src"),           Toks[2].getHTMLIdent());
-
-    ASSERT_EQ(tok::html_equals,           Toks[3].getKind());
-
-    ASSERT_EQ(tok::html_quoted_string,    Toks[4].getKind());
-    ASSERT_EQ(StringRef("val\\\"\\'val"), Toks[4].getHTMLQuotedString());
-
-    ASSERT_EQ(tok::newline,               Toks[5].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, HTML14) {
-  const char *Sources[] = {
-    "// <img src=\"val\\\"\\'val\">",
-    "// <img src=\'val\\\"\\'val\'>"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(7U, Toks.size());
-
-    ASSERT_EQ(tok::text,                  Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),             Toks[0].getText());
-
-    ASSERT_EQ(tok::html_start_tag,        Toks[1].getKind());
-    ASSERT_EQ(StringRef("img"),           Toks[1].getHTMLTagStartName());
-
-    ASSERT_EQ(tok::html_ident,            Toks[2].getKind());
-    ASSERT_EQ(StringRef("src"),           Toks[2].getHTMLIdent());
-
-    ASSERT_EQ(tok::html_equals,           Toks[3].getKind());
-
-    ASSERT_EQ(tok::html_quoted_string,    Toks[4].getKind());
-    ASSERT_EQ(StringRef("val\\\"\\'val"), Toks[4].getHTMLQuotedString());
-
-    ASSERT_EQ(tok::html_greater,          Toks[5].getKind());
-
-    ASSERT_EQ(tok::newline,               Toks[6].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, HTML15) {
-  const char *Sources[] = {
-    "// <img/>",
-    "// <img />"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(4U, Toks.size());
-
-    ASSERT_EQ(tok::text,               Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),          Toks[0].getText());
-
-    ASSERT_EQ(tok::html_start_tag,     Toks[1].getKind());
-    ASSERT_EQ(StringRef("img"),        Toks[1].getHTMLTagStartName());
-
-    ASSERT_EQ(tok::html_slash_greater, Toks[2].getKind());
-
-    ASSERT_EQ(tok::newline,            Toks[3].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, HTML16) {
-  const char *Sources[] = {
-    "// <img/ Aaa",
-    "// <img / Aaa"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(5U, Toks.size());
-
-    ASSERT_EQ(tok::text,               Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),          Toks[0].getText());
-
-    ASSERT_EQ(tok::html_start_tag,     Toks[1].getKind());
-    ASSERT_EQ(StringRef("img"),        Toks[1].getHTMLTagStartName());
-
-    ASSERT_EQ(tok::text,               Toks[2].getKind());
-    ASSERT_EQ(StringRef("/"),          Toks[2].getText());
-
-    ASSERT_EQ(tok::text,               Toks[3].getKind());
-    ASSERT_EQ(StringRef(" Aaa"),       Toks[3].getText());
-
-    ASSERT_EQ(tok::newline,            Toks[4].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, HTML17) {
-  const char *Source = "// </";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,       Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),  Toks[0].getText());
-
-  ASSERT_EQ(tok::text,       Toks[1].getKind());
-  ASSERT_EQ(StringRef("</"), Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,    Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML18) {
-  const char *Source = "// </@";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,       Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),  Toks[0].getText());
-
-  ASSERT_EQ(tok::text,       Toks[1].getKind());
-  ASSERT_EQ(StringRef("</"), Toks[1].getText());
-
-  ASSERT_EQ(tok::text,       Toks[2].getKind());
-  ASSERT_EQ(StringRef("@"),  Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,    Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTML19) {
-  const char *Source = "// </img";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::html_end_tag, Toks[1].getKind());
-  ASSERT_EQ(StringRef("img"),  Toks[1].getHTMLTagEndName());
-
-  ASSERT_EQ(tok::newline,      Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, NotAKnownHTMLTag1) {
-  const char *Source = "// <tag>";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("<tag"), Toks[1].getText());
-
-  ASSERT_EQ(tok::text,         Toks[2].getKind());
-  ASSERT_EQ(StringRef(">"),    Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, NotAKnownHTMLTag2) {
-  const char *Source = "// </tag>";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,          Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-  ASSERT_EQ(tok::text,          Toks[1].getKind());
-  ASSERT_EQ(StringRef("</tag"), Toks[1].getText());
-
-  ASSERT_EQ(tok::text,          Toks[2].getKind());
-  ASSERT_EQ(StringRef(">"),     Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences1) {
-  const char *Source = "// &";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&"),    Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences2) {
-  const char *Source = "// &!";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&"),    Toks[1].getText());
-
-  ASSERT_EQ(tok::text,         Toks[2].getKind());
-  ASSERT_EQ(StringRef("!"),    Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences3) {
-  const char *Source = "// &amp";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&amp"), Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences4) {
-  const char *Source = "// &amp!";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&amp"), Toks[1].getText());
-
-  ASSERT_EQ(tok::text,         Toks[2].getKind());
-  ASSERT_EQ(StringRef("!"),    Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences5) {
-  const char *Source = "// &#";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&#"),   Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences6) {
-  const char *Source = "// &#a";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&#"),   Toks[1].getText());
-
-  ASSERT_EQ(tok::text,         Toks[2].getKind());
-  ASSERT_EQ(StringRef("a"),    Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences7) {
-  const char *Source = "// &#42";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&#42"), Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences8) {
-  const char *Source = "// &#42a";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&#42"), Toks[1].getText());
-
-  ASSERT_EQ(tok::text,         Toks[2].getKind());
-  ASSERT_EQ(StringRef("a"),    Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences9) {
-  const char *Source = "// &#x";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&#x"),  Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences10) {
-  const char *Source = "// &#xz";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,         Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),    Toks[0].getText());
-
-  ASSERT_EQ(tok::text,         Toks[1].getKind());
-  ASSERT_EQ(StringRef("&#x"),  Toks[1].getText());
-
-  ASSERT_EQ(tok::text,         Toks[2].getKind());
-  ASSERT_EQ(StringRef("z"),    Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,      Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences11) {
-  const char *Source = "// &#xab";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,          Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-  ASSERT_EQ(tok::text,          Toks[1].getKind());
-  ASSERT_EQ(StringRef("&#xab"), Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences12) {
-  const char *Source = "// &#xaBz";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,          Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-  ASSERT_EQ(tok::text,          Toks[1].getKind());
-  ASSERT_EQ(StringRef("&#xaB"), Toks[1].getText());
-
-  ASSERT_EQ(tok::text,          Toks[2].getKind());
-  ASSERT_EQ(StringRef("z"),     Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences13) {
-  const char *Source = "// &";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(3U, Toks.size());
-
-  ASSERT_EQ(tok::text,          Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-  ASSERT_EQ(tok::text,          Toks[1].getKind());
-  ASSERT_EQ(StringRef("&"),     Toks[1].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[2].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences14) {
-  const char *Source = "// &<";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,          Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-  ASSERT_EQ(tok::text,          Toks[1].getKind());
-  ASSERT_EQ(StringRef("&"),     Toks[1].getText());
-
-  ASSERT_EQ(tok::text,          Toks[2].getKind());
-  ASSERT_EQ(StringRef("<"),     Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences15) {
-  const char *Source = "// & meow";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(4U, Toks.size());
-
-  ASSERT_EQ(tok::text,          Toks[0].getKind());
-  ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-  ASSERT_EQ(tok::text,          Toks[1].getKind());
-  ASSERT_EQ(StringRef("&"),     Toks[1].getText());
-
-  ASSERT_EQ(tok::text,          Toks[2].getKind());
-  ASSERT_EQ(StringRef(" meow"), Toks[2].getText());
-
-  ASSERT_EQ(tok::newline,       Toks[3].getKind());
-}
-
-TEST_F(CommentLexerTest, HTMLCharacterReferences16) {
-  const char *Sources[] = {
-    "// =",
-    "// &#x3d;",
-    "// &#X3d;",
-    "// &#X3D;"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    std::vector<Token> Toks;
-
-    lexString(Sources[i], Toks);
-
-    ASSERT_EQ(3U, Toks.size());
-
-    ASSERT_EQ(tok::text,          Toks[0].getKind());
-    ASSERT_EQ(StringRef(" "),     Toks[0].getText());
-
-    ASSERT_EQ(tok::text,          Toks[1].getKind());
-    ASSERT_EQ(StringRef("="),     Toks[1].getText());
-
-    ASSERT_EQ(tok::newline,       Toks[2].getKind());
-  }
-}
-
-TEST_F(CommentLexerTest, MultipleComments) {
-  const char *Source =
-    "// Aaa\n"
-    "/// Bbb\n"
-    "/* Ccc\n"
-    " * Ddd*/\n"
-    "/** Eee*/";
-
-  std::vector<Token> Toks;
-
-  lexString(Source, Toks);
-
-  ASSERT_EQ(12U, Toks.size());
-
-  ASSERT_EQ(tok::text,           Toks[0].getKind());
-  ASSERT_EQ(StringRef(" Aaa"),   Toks[0].getText());
-  ASSERT_EQ(tok::newline,        Toks[1].getKind());
-
-  ASSERT_EQ(tok::text,           Toks[2].getKind());
-  ASSERT_EQ(StringRef(" Bbb"),   Toks[2].getText());
-  ASSERT_EQ(tok::newline,        Toks[3].getKind());
-
-  ASSERT_EQ(tok::text,           Toks[4].getKind());
-  ASSERT_EQ(StringRef(" Ccc"),   Toks[4].getText());
-  ASSERT_EQ(tok::newline,        Toks[5].getKind());
-
-  ASSERT_EQ(tok::text,           Toks[6].getKind());
-  ASSERT_EQ(StringRef(" Ddd"),   Toks[6].getText());
-  ASSERT_EQ(tok::newline,        Toks[7].getKind());
-  ASSERT_EQ(tok::newline,        Toks[8].getKind());
-
-  ASSERT_EQ(tok::text,           Toks[9].getKind());
-  ASSERT_EQ(StringRef(" Eee"),   Toks[9].getText());
-
-  ASSERT_EQ(tok::newline,        Toks[10].getKind());
-  ASSERT_EQ(tok::newline,        Toks[11].getKind());
-}
-
-} // end namespace comments
-} // end namespace clang
-

Modified: trunk/contrib/llvm/tools/clang/unittests/AST/CommentParser.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/AST/CommentParser.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/AST/CommentParser.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1402 +0,0 @@
-//===- unittests/AST/CommentParser.cpp ------ Comment parser tests --------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/CommentParser.h"
-#include "clang/AST/Comment.h"
-#include "clang/AST/CommentCommandTraits.h"
-#include "clang/AST/CommentLexer.h"
-#include "clang/AST/CommentSema.h"
-#include "clang/Basic/CommentOptions.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/SourceManager.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/Support/Allocator.h"
-#include "gtest/gtest.h"
-#include <vector>
-
-using namespace llvm;
-using namespace clang;
-
-namespace clang {
-namespace comments {
-
-namespace {
-
-const bool DEBUG = true;
-
-class CommentParserTest : public ::testing::Test {
-protected:
-  CommentParserTest()
-    : FileMgr(FileMgrOpts),
-      DiagID(new DiagnosticIDs()),
-      Diags(DiagID, new DiagnosticOptions, new IgnoringDiagConsumer()),
-      SourceMgr(Diags, FileMgr),
-      Traits(Allocator, CommentOptions()) {
-  }
-
-  FileSystemOptions FileMgrOpts;
-  FileManager FileMgr;
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID;
-  DiagnosticsEngine Diags;
-  SourceManager SourceMgr;
-  llvm::BumpPtrAllocator Allocator;
-  CommandTraits Traits;
-
-  FullComment *parseString(const char *Source);
-};
-
-FullComment *CommentParserTest::parseString(const char *Source) {
-  MemoryBuffer *Buf = MemoryBuffer::getMemBuffer(Source);
-  FileID File = SourceMgr.createFileIDForMemBuffer(Buf);
-  SourceLocation Begin = SourceMgr.getLocForStartOfFile(File);
-
-  Lexer L(Allocator, Diags, Traits, Begin, Source, Source + strlen(Source));
-
-  Sema S(Allocator, SourceMgr, Diags, Traits, /*PP=*/ NULL);
-  Parser P(L, S, Allocator, SourceMgr, Diags, Traits);
-  FullComment *FC = P.parseFullComment();
-
-  if (DEBUG) {
-    llvm::errs() << "=== Source:\n" << Source << "\n=== AST:\n";
-    FC->dump(llvm::errs(), &Traits, &SourceMgr);
-  }
-
-  Token Tok;
-  L.lex(Tok);
-  if (Tok.is(tok::eof))
-    return FC;
-  else
-    return NULL;
-}
-
-::testing::AssertionResult HasChildCount(const Comment *C, size_t Count) {
-  if (!C)
-    return ::testing::AssertionFailure() << "Comment is NULL";
-
-  if (Count != C->child_count())
-    return ::testing::AssertionFailure()
-        << "Count = " << Count
-        << ", child_count = " << C->child_count();
-
-  return ::testing::AssertionSuccess();
-}
-
-template <typename T>
-::testing::AssertionResult GetChildAt(const Comment *C,
-                                      size_t Idx,
-                                      T *&Child) {
-  if (!C)
-    return ::testing::AssertionFailure() << "Comment is NULL";
-
-  if (Idx >= C->child_count())
-    return ::testing::AssertionFailure()
-        << "Idx out of range.  Idx = " << Idx
-        << ", child_count = " << C->child_count();
-
-  Comment::child_iterator I = C->child_begin() + Idx;
-  Comment *CommentChild = *I;
-  if (!CommentChild)
-    return ::testing::AssertionFailure() << "Child is NULL";
-
-  Child = dyn_cast<T>(CommentChild);
-  if (!Child)
-    return ::testing::AssertionFailure()
-        << "Child is not of requested type, but a "
-        << CommentChild->getCommentKindName();
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasTextAt(const Comment *C,
-                                     size_t Idx,
-                                     StringRef Text) {
-  TextComment *TC;
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, TC);
-  if (!AR)
-    return AR;
-
-  StringRef ActualText = TC->getText();
-  if (ActualText != Text)
-    return ::testing::AssertionFailure()
-        << "TextComment has text \"" << ActualText.str() << "\", "
-           "expected \"" << Text.str() << "\"";
-
-  if (TC->hasTrailingNewline())
-    return ::testing::AssertionFailure()
-        << "TextComment has a trailing newline";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasTextWithNewlineAt(const Comment *C,
-                                                size_t Idx,
-                                                StringRef Text) {
-  TextComment *TC;
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, TC);
-  if (!AR)
-    return AR;
-
-  StringRef ActualText = TC->getText();
-  if (ActualText != Text)
-    return ::testing::AssertionFailure()
-        << "TextComment has text \"" << ActualText.str() << "\", "
-           "expected \"" << Text.str() << "\"";
-
-  if (!TC->hasTrailingNewline())
-    return ::testing::AssertionFailure()
-        << "TextComment has no trailing newline";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasBlockCommandAt(const Comment *C,
-                                             const CommandTraits &Traits,
-                                             size_t Idx,
-                                             BlockCommandComment *&BCC,
-                                             StringRef Name,
-                                             ParagraphComment *&Paragraph) {
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, BCC);
-  if (!AR)
-    return AR;
-
-  StringRef ActualName = BCC->getCommandName(Traits);
-  if (ActualName != Name)
-    return ::testing::AssertionFailure()
-        << "BlockCommandComment has name \"" << ActualName.str() << "\", "
-           "expected \"" << Name.str() << "\"";
-
-  Paragraph = BCC->getParagraph();
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasParamCommandAt(
-                              const Comment *C,
-                              const CommandTraits &Traits,
-                              size_t Idx,
-                              ParamCommandComment *&PCC,
-                              StringRef CommandName,
-                              ParamCommandComment::PassDirection Direction,
-                              bool IsDirectionExplicit,
-                              StringRef ParamName,
-                              ParagraphComment *&Paragraph) {
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, PCC);
-  if (!AR)
-    return AR;
-
-  StringRef ActualCommandName = PCC->getCommandName(Traits);
-  if (ActualCommandName != CommandName)
-    return ::testing::AssertionFailure()
-        << "ParamCommandComment has name \"" << ActualCommandName.str() << "\", "
-           "expected \"" << CommandName.str() << "\"";
-
-  if (PCC->getDirection() != Direction)
-    return ::testing::AssertionFailure()
-        << "ParamCommandComment has direction " << PCC->getDirection() << ", "
-           "expected " << Direction;
-
-  if (PCC->isDirectionExplicit() != IsDirectionExplicit)
-    return ::testing::AssertionFailure()
-        << "ParamCommandComment has "
-        << (PCC->isDirectionExplicit() ? "explicit" : "implicit")
-        << " direction, "
-           "expected " << (IsDirectionExplicit ? "explicit" : "implicit");
-
-  if (!ParamName.empty() && !PCC->hasParamName())
-    return ::testing::AssertionFailure()
-        << "ParamCommandComment has no parameter name";
-
-  StringRef ActualParamName = PCC->hasParamName() ? PCC->getParamNameAsWritten() : "";
-  if (ActualParamName != ParamName)
-    return ::testing::AssertionFailure()
-        << "ParamCommandComment has parameter name \"" << ActualParamName.str()
-        << "\", "
-           "expected \"" << ParamName.str() << "\"";
-
-  Paragraph = PCC->getParagraph();
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasTParamCommandAt(
-                              const Comment *C,
-                              const CommandTraits &Traits,
-                              size_t Idx,
-                              TParamCommandComment *&TPCC,
-                              StringRef CommandName,
-                              StringRef ParamName,
-                              ParagraphComment *&Paragraph) {
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, TPCC);
-  if (!AR)
-    return AR;
-
-  StringRef ActualCommandName = TPCC->getCommandName(Traits);
-  if (ActualCommandName != CommandName)
-    return ::testing::AssertionFailure()
-        << "TParamCommandComment has name \"" << ActualCommandName.str() << "\", "
-           "expected \"" << CommandName.str() << "\"";
-
-  if (!ParamName.empty() && !TPCC->hasParamName())
-    return ::testing::AssertionFailure()
-        << "TParamCommandComment has no parameter name";
-
-  StringRef ActualParamName = TPCC->hasParamName() ? TPCC->getParamNameAsWritten() : "";
-  if (ActualParamName != ParamName)
-    return ::testing::AssertionFailure()
-        << "TParamCommandComment has parameter name \"" << ActualParamName.str()
-        << "\", "
-           "expected \"" << ParamName.str() << "\"";
-
-  Paragraph = TPCC->getParagraph();
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasInlineCommandAt(const Comment *C,
-                                              const CommandTraits &Traits,
-                                              size_t Idx,
-                                              InlineCommandComment *&ICC,
-                                              StringRef Name) {
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, ICC);
-  if (!AR)
-    return AR;
-
-  StringRef ActualName = ICC->getCommandName(Traits);
-  if (ActualName != Name)
-    return ::testing::AssertionFailure()
-        << "InlineCommandComment has name \"" << ActualName.str() << "\", "
-           "expected \"" << Name.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-struct NoArgs {};
-
-::testing::AssertionResult HasInlineCommandAt(const Comment *C,
-                                              const CommandTraits &Traits,
-                                              size_t Idx,
-                                              InlineCommandComment *&ICC,
-                                              StringRef Name,
-                                              NoArgs) {
-  ::testing::AssertionResult AR = HasInlineCommandAt(C, Traits, Idx, ICC, Name);
-  if (!AR)
-    return AR;
-
-  if (ICC->getNumArgs() != 0)
-    return ::testing::AssertionFailure()
-        << "InlineCommandComment has " << ICC->getNumArgs() << " arg(s), "
-           "expected 0";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasInlineCommandAt(const Comment *C,
-                                              const CommandTraits &Traits,
-                                              size_t Idx,
-                                              InlineCommandComment *&ICC,
-                                              StringRef Name,
-                                              StringRef Arg) {
-  ::testing::AssertionResult AR = HasInlineCommandAt(C, Traits, Idx, ICC, Name);
-  if (!AR)
-    return AR;
-
-  if (ICC->getNumArgs() != 1)
-    return ::testing::AssertionFailure()
-        << "InlineCommandComment has " << ICC->getNumArgs() << " arg(s), "
-           "expected 1";
-
-  StringRef ActualArg = ICC->getArgText(0);
-  if (ActualArg != Arg)
-    return ::testing::AssertionFailure()
-        << "InlineCommandComment has argument \"" << ActualArg.str() << "\", "
-           "expected \"" << Arg.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasHTMLStartTagAt(const Comment *C,
-                                             size_t Idx,
-                                             HTMLStartTagComment *&HST,
-                                             StringRef TagName) {
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, HST);
-  if (!AR)
-    return AR;
-
-  StringRef ActualTagName = HST->getTagName();
-  if (ActualTagName != TagName)
-    return ::testing::AssertionFailure()
-        << "HTMLStartTagComment has name \"" << ActualTagName.str() << "\", "
-           "expected \"" << TagName.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-struct SelfClosing {};
-
-::testing::AssertionResult HasHTMLStartTagAt(const Comment *C,
-                                             size_t Idx,
-                                             HTMLStartTagComment *&HST,
-                                             StringRef TagName,
-                                             SelfClosing) {
-  ::testing::AssertionResult AR = HasHTMLStartTagAt(C, Idx, HST, TagName);
-  if (!AR)
-    return AR;
-
-  if (!HST->isSelfClosing())
-    return ::testing::AssertionFailure()
-        << "HTMLStartTagComment is not self-closing";
-
-  return ::testing::AssertionSuccess();
-}
-
-
-struct NoAttrs {};
-
-::testing::AssertionResult HasHTMLStartTagAt(const Comment *C,
-                                             size_t Idx,
-                                             HTMLStartTagComment *&HST,
-                                             StringRef TagName,
-                                             NoAttrs) {
-  ::testing::AssertionResult AR = HasHTMLStartTagAt(C, Idx, HST, TagName);
-  if (!AR)
-    return AR;
-
-  if (HST->isSelfClosing())
-    return ::testing::AssertionFailure()
-        << "HTMLStartTagComment is self-closing";
-
-  if (HST->getNumAttrs() != 0)
-    return ::testing::AssertionFailure()
-        << "HTMLStartTagComment has " << HST->getNumAttrs() << " attr(s), "
-           "expected 0";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasHTMLStartTagAt(const Comment *C,
-                                             size_t Idx,
-                                             HTMLStartTagComment *&HST,
-                                             StringRef TagName,
-                                             StringRef AttrName,
-                                             StringRef AttrValue) {
-  ::testing::AssertionResult AR = HasHTMLStartTagAt(C, Idx, HST, TagName);
-  if (!AR)
-    return AR;
-
-  if (HST->isSelfClosing())
-    return ::testing::AssertionFailure()
-        << "HTMLStartTagComment is self-closing";
-
-  if (HST->getNumAttrs() != 1)
-    return ::testing::AssertionFailure()
-        << "HTMLStartTagComment has " << HST->getNumAttrs() << " attr(s), "
-           "expected 1";
-
-  StringRef ActualName = HST->getAttr(0).Name;
-  if (ActualName != AttrName)
-    return ::testing::AssertionFailure()
-        << "HTMLStartTagComment has attr \"" << ActualName.str() << "\", "
-           "expected \"" << AttrName.str() << "\"";
-
-  StringRef ActualValue = HST->getAttr(0).Value;
-  if (ActualValue != AttrValue)
-    return ::testing::AssertionFailure()
-        << "HTMLStartTagComment has attr value \"" << ActualValue.str() << "\", "
-           "expected \"" << AttrValue.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasHTMLEndTagAt(const Comment *C,
-                                           size_t Idx,
-                                           HTMLEndTagComment *&HET,
-                                           StringRef TagName) {
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, HET);
-  if (!AR)
-    return AR;
-
-  StringRef ActualTagName = HET->getTagName();
-  if (ActualTagName != TagName)
-    return ::testing::AssertionFailure()
-        << "HTMLEndTagComment has name \"" << ActualTagName.str() << "\", "
-           "expected \"" << TagName.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasParagraphCommentAt(const Comment *C,
-                                                 size_t Idx,
-                                                 StringRef Text) {
-  ParagraphComment *PC;
-
-  {
-    ::testing::AssertionResult AR = GetChildAt(C, Idx, PC);
-    if (!AR)
-      return AR;
-  }
-
-  {
-    ::testing::AssertionResult AR = HasChildCount(PC, 1);
-    if (!AR)
-      return AR;
-  }
-
-  {
-    ::testing::AssertionResult AR = HasTextAt(PC, 0, Text);
-    if (!AR)
-      return AR;
-  }
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasVerbatimBlockAt(const Comment *C,
-                                              const CommandTraits &Traits,
-                                              size_t Idx,
-                                              VerbatimBlockComment *&VBC,
-                                              StringRef Name,
-                                              StringRef CloseName) {
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, VBC);
-  if (!AR)
-    return AR;
-
-  StringRef ActualName = VBC->getCommandName(Traits);
-  if (ActualName != Name)
-    return ::testing::AssertionFailure()
-        << "VerbatimBlockComment has name \"" << ActualName.str() << "\", "
-           "expected \"" << Name.str() << "\"";
-
-  StringRef ActualCloseName = VBC->getCloseName();
-  if (ActualCloseName != CloseName)
-    return ::testing::AssertionFailure()
-        << "VerbatimBlockComment has closing command name \""
-        << ActualCloseName.str() << "\", "
-           "expected \"" << CloseName.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-struct NoLines {};
-struct Lines {};
-
-::testing::AssertionResult HasVerbatimBlockAt(const Comment *C,
-                                              const CommandTraits &Traits,
-                                              size_t Idx,
-                                              VerbatimBlockComment *&VBC,
-                                              StringRef Name,
-                                              StringRef CloseName,
-                                              NoLines) {
-  ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Traits, Idx, VBC, Name,
-                                                     CloseName);
-  if (!AR)
-    return AR;
-
-  if (VBC->getNumLines() != 0)
-    return ::testing::AssertionFailure()
-        << "VerbatimBlockComment has " << VBC->getNumLines() << " lines(s), "
-           "expected 0";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasVerbatimBlockAt(const Comment *C,
-                                              const CommandTraits &Traits,
-                                              size_t Idx,
-                                              VerbatimBlockComment *&VBC,
-                                              StringRef Name,
-                                              StringRef CloseName,
-                                              Lines,
-                                              StringRef Line0) {
-  ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Traits, Idx, VBC, Name,
-                                                     CloseName);
-  if (!AR)
-    return AR;
-
-  if (VBC->getNumLines() != 1)
-    return ::testing::AssertionFailure()
-        << "VerbatimBlockComment has " << VBC->getNumLines() << " lines(s), "
-           "expected 1";
-
-  StringRef ActualLine0 = VBC->getText(0);
-  if (ActualLine0 != Line0)
-    return ::testing::AssertionFailure()
-        << "VerbatimBlockComment has lines[0] \"" << ActualLine0.str() << "\", "
-           "expected \"" << Line0.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasVerbatimBlockAt(const Comment *C,
-                                              const CommandTraits &Traits,
-                                              size_t Idx,
-                                              VerbatimBlockComment *&VBC,
-                                              StringRef Name,
-                                              StringRef CloseName,
-                                              Lines,
-                                              StringRef Line0,
-                                              StringRef Line1) {
-  ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Traits, Idx, VBC, Name,
-                                                     CloseName);
-  if (!AR)
-    return AR;
-
-  if (VBC->getNumLines() != 2)
-    return ::testing::AssertionFailure()
-        << "VerbatimBlockComment has " << VBC->getNumLines() << " lines(s), "
-           "expected 2";
-
-  StringRef ActualLine0 = VBC->getText(0);
-  if (ActualLine0 != Line0)
-    return ::testing::AssertionFailure()
-        << "VerbatimBlockComment has lines[0] \"" << ActualLine0.str() << "\", "
-           "expected \"" << Line0.str() << "\"";
-
-  StringRef ActualLine1 = VBC->getText(1);
-  if (ActualLine1 != Line1)
-    return ::testing::AssertionFailure()
-        << "VerbatimBlockComment has lines[1] \"" << ActualLine1.str() << "\", "
-           "expected \"" << Line1.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult HasVerbatimLineAt(const Comment *C,
-                                             const CommandTraits &Traits,
-                                             size_t Idx,
-                                             VerbatimLineComment *&VLC,
-                                             StringRef Name,
-                                             StringRef Text) {
-  ::testing::AssertionResult AR = GetChildAt(C, Idx, VLC);
-  if (!AR)
-    return AR;
-
-  StringRef ActualName = VLC->getCommandName(Traits);
-  if (ActualName != Name)
-    return ::testing::AssertionFailure()
-        << "VerbatimLineComment has name \"" << ActualName.str() << "\", "
-           "expected \"" << Name.str() << "\"";
-
-  StringRef ActualText = VLC->getText();
-  if (ActualText != Text)
-    return ::testing::AssertionFailure()
-        << "VerbatimLineComment has text \"" << ActualText.str() << "\", "
-           "expected \"" << Text.str() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-
-TEST_F(CommentParserTest, Basic1) {
-  const char *Source = "//";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 0));
-}
-
-TEST_F(CommentParserTest, Basic2) {
-  const char *Source = "// Meow";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " Meow"));
-}
-
-TEST_F(CommentParserTest, Basic3) {
-  const char *Source =
-    "// Aaa\n"
-    "// Bbb";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  {
-    ParagraphComment *PC;
-    ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-    ASSERT_TRUE(HasChildCount(PC, 2));
-      ASSERT_TRUE(HasTextWithNewlineAt(PC, 0, " Aaa"));
-      ASSERT_TRUE(HasTextAt(PC, 1, " Bbb"));
-  }
-}
-
-TEST_F(CommentParserTest, Paragraph1) {
-  const char *Sources[] = {
-    "// Aaa\n"
-    "//\n"
-    "// Bbb",
-
-    "// Aaa\n"
-    "//\n"
-    "//\n"
-    "// Bbb",
-  };
-
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " Aaa"));
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 1, " Bbb"));
-  }
-}
-
-TEST_F(CommentParserTest, Paragraph2) {
-  const char *Source =
-    "// \\brief Aaa\n"
-    "//\n"
-    "// Bbb";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 3));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    BlockCommandComment *BCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 1, BCC, "brief", PC));
-
-    ASSERT_TRUE(HasParagraphCommentAt(BCC, 0, " Aaa"));
-  }
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 2, " Bbb"));
-}
-
-TEST_F(CommentParserTest, Paragraph3) {
-  const char *Source = "// \\brief \\author";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 3));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    BlockCommandComment *BCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 1, BCC, "brief", PC));
-
-    ASSERT_TRUE(HasParagraphCommentAt(BCC, 0, " "));
-  }
-  {
-    BlockCommandComment *BCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 2, BCC, "author", PC));
-
-    ASSERT_TRUE(GetChildAt(BCC, 0, PC));
-      ASSERT_TRUE(HasChildCount(PC, 0));
-  }
-}
-
-TEST_F(CommentParserTest, Paragraph4) {
-  const char *Source =
-    "// \\brief Aaa\n"
-    "// Bbb \\author\n"
-    "// Ccc";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 3));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    BlockCommandComment *BCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 1, BCC, "brief", PC));
-
-    ASSERT_TRUE(GetChildAt(BCC, 0, PC));
-      ASSERT_TRUE(HasChildCount(PC, 2));
-      ASSERT_TRUE(HasTextWithNewlineAt(PC, 0, " Aaa"));
-      ASSERT_TRUE(HasTextAt(PC, 1, " Bbb "));
-  }
-  {
-    BlockCommandComment *BCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 2, BCC, "author", PC));
-
-    ASSERT_TRUE(HasParagraphCommentAt(BCC, 0, " Ccc"));
-  }
-}
-
-TEST_F(CommentParserTest, ParamCommand1) {
-  const char *Source = "// \\param aaa";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 2));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    ParamCommandComment *PCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param",
-                                  ParamCommandComment::In,
-                                  /* IsDirectionExplicit = */ false,
-                                  "aaa", PC));
-    ASSERT_TRUE(HasChildCount(PCC, 1));
-    ASSERT_TRUE(HasChildCount(PC, 0));
-  }
-}
-
-TEST_F(CommentParserTest, ParamCommand2) {
-  const char *Source = "// \\param\\brief";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 3));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    ParamCommandComment *PCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param",
-                                  ParamCommandComment::In,
-                                  /* IsDirectionExplicit = */ false,
-                                  "", PC));
-    ASSERT_TRUE(HasChildCount(PCC, 1));
-    ASSERT_TRUE(HasChildCount(PC, 0));
-  }
-  {
-    BlockCommandComment *BCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 2, BCC, "brief", PC));
-    ASSERT_TRUE(HasChildCount(PC, 0));
-  }
-}
-
-TEST_F(CommentParserTest, ParamCommand3) {
-  const char *Sources[] = {
-    "// \\param aaa Bbb\n",
-    "// \\param\n"
-    "//     aaa Bbb\n",
-    "// \\param \n"
-    "//     aaa Bbb\n",
-    "// \\param aaa\n"
-    "// Bbb\n"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      ParamCommandComment *PCC;
-      ParagraphComment *PC;
-      ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param",
-                                    ParamCommandComment::In,
-                                    /* IsDirectionExplicit = */ false,
-                                    "aaa", PC));
-      ASSERT_TRUE(HasChildCount(PCC, 1));
-      ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, ParamCommand4) {
-  const char *Sources[] = {
-    "// \\param [in] aaa Bbb\n",
-    "// \\param[in] aaa Bbb\n",
-    "// \\param\n"
-    "//     [in] aaa Bbb\n",
-    "// \\param [in]\n"
-    "//     aaa Bbb\n",
-    "// \\param [in] aaa\n"
-    "// Bbb\n",
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      ParamCommandComment *PCC;
-      ParagraphComment *PC;
-      ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param",
-                                    ParamCommandComment::In,
-                                    /* IsDirectionExplicit = */ true,
-                                    "aaa", PC));
-      ASSERT_TRUE(HasChildCount(PCC, 1));
-      ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, ParamCommand5) {
-  const char *Sources[] = {
-    "// \\param [out] aaa Bbb\n",
-    "// \\param[out] aaa Bbb\n",
-    "// \\param\n"
-    "//     [out] aaa Bbb\n",
-    "// \\param [out]\n"
-    "//     aaa Bbb\n",
-    "// \\param [out] aaa\n"
-    "// Bbb\n",
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      ParamCommandComment *PCC;
-      ParagraphComment *PC;
-      ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param",
-                                    ParamCommandComment::Out,
-                                    /* IsDirectionExplicit = */ true,
-                                    "aaa", PC));
-      ASSERT_TRUE(HasChildCount(PCC, 1));
-      ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, ParamCommand6) {
-  const char *Sources[] = {
-    "// \\param [in,out] aaa Bbb\n",
-    "// \\param[in,out] aaa Bbb\n",
-    "// \\param [in, out] aaa Bbb\n",
-    "// \\param [in,\n"
-    "//     out] aaa Bbb\n",
-    "// \\param [in,out]\n"
-    "//     aaa Bbb\n",
-    "// \\param [in,out] aaa\n"
-    "// Bbb\n"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      ParamCommandComment *PCC;
-      ParagraphComment *PC;
-      ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param",
-                                    ParamCommandComment::InOut,
-                                    /* IsDirectionExplicit = */ true,
-                                    "aaa", PC));
-      ASSERT_TRUE(HasChildCount(PCC, 1));
-      ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, ParamCommand7) {
-  const char *Source =
-    "// \\param aaa \\% Bbb \\$ ccc\n";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 2));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    ParamCommandComment *PCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param",
-                                  ParamCommandComment::In,
-                                  /* IsDirectionExplicit = */ false,
-                                  "aaa", PC));
-    ASSERT_TRUE(HasChildCount(PCC, 1));
-
-    ASSERT_TRUE(HasChildCount(PC, 5));
-      ASSERT_TRUE(HasTextAt(PC, 0, " "));
-      ASSERT_TRUE(HasTextAt(PC, 1, "%"));
-      ASSERT_TRUE(HasTextAt(PC, 2, " Bbb "));
-      ASSERT_TRUE(HasTextAt(PC, 3, "$"));
-      ASSERT_TRUE(HasTextAt(PC, 4, " ccc"));
-  }
-}
-
-TEST_F(CommentParserTest, TParamCommand1) {
-  const char *Sources[] = {
-    "// \\tparam aaa Bbb\n",
-    "// \\tparam\n"
-    "//     aaa Bbb\n",
-    "// \\tparam \n"
-    "//     aaa Bbb\n",
-    "// \\tparam aaa\n"
-    "// Bbb\n"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      TParamCommandComment *TPCC;
-      ParagraphComment *PC;
-      ASSERT_TRUE(HasTParamCommandAt(FC, Traits, 1, TPCC, "tparam",
-                                     "aaa", PC));
-      ASSERT_TRUE(HasChildCount(TPCC, 1));
-      ASSERT_TRUE(HasParagraphCommentAt(TPCC, 0, " Bbb"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, TParamCommand2) {
-  const char *Source = "// \\tparam\\brief";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 3));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    TParamCommandComment *TPCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasTParamCommandAt(FC, Traits, 1, TPCC, "tparam", "", PC));
-    ASSERT_TRUE(HasChildCount(TPCC, 1));
-    ASSERT_TRUE(HasChildCount(PC, 0));
-  }
-  {
-    BlockCommandComment *BCC;
-    ParagraphComment *PC;
-    ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 2, BCC, "brief", PC));
-    ASSERT_TRUE(HasChildCount(PC, 0));
-  }
-}
-
-
-TEST_F(CommentParserTest, InlineCommand1) {
-  const char *Source = "// \\c";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  {
-    ParagraphComment *PC;
-    InlineCommandComment *ICC;
-    ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-    ASSERT_TRUE(HasChildCount(PC, 2));
-      ASSERT_TRUE(HasTextAt(PC, 0, " "));
-      ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "c", NoArgs()));
-  }
-}
-
-TEST_F(CommentParserTest, InlineCommand2) {
-  const char *Source = "// \\c ";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  {
-    ParagraphComment *PC;
-    InlineCommandComment *ICC;
-    ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-    ASSERT_TRUE(HasChildCount(PC, 3));
-      ASSERT_TRUE(HasTextAt(PC, 0, " "));
-      ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "c", NoArgs()));
-      ASSERT_TRUE(HasTextAt(PC, 2, " "));
-  }
-}
-
-TEST_F(CommentParserTest, InlineCommand3) {
-  const char *Source = "// \\c aaa\n";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  {
-    ParagraphComment *PC;
-    InlineCommandComment *ICC;
-    ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-    ASSERT_TRUE(HasChildCount(PC, 2));
-      ASSERT_TRUE(HasTextAt(PC, 0, " "));
-      ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "c", "aaa"));
-  }
-}
-
-TEST_F(CommentParserTest, InlineCommand4) {
-  const char *Source = "// \\c aaa bbb";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  {
-    ParagraphComment *PC;
-    InlineCommandComment *ICC;
-    ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-    ASSERT_TRUE(HasChildCount(PC, 3));
-      ASSERT_TRUE(HasTextAt(PC, 0, " "));
-      ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "c", "aaa"));
-      ASSERT_TRUE(HasTextAt(PC, 2, " bbb"));
-  }
-}
-
-TEST_F(CommentParserTest, InlineCommand5) {
-  const char *Source = "// \\unknown aaa\n";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  {
-    ParagraphComment *PC;
-    InlineCommandComment *ICC;
-    ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-    ASSERT_TRUE(HasChildCount(PC, 3));
-      ASSERT_TRUE(HasTextAt(PC, 0, " "));
-      ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "unknown", NoArgs()));
-      ASSERT_TRUE(HasTextAt(PC, 2, " aaa"));
-  }
-}
-
-TEST_F(CommentParserTest, HTML1) {
-  const char *Sources[] = {
-    "// <a",
-    "// <a>",
-    "// <a >"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 1));
-
-    {
-      ParagraphComment *PC;
-      HTMLStartTagComment *HST;
-      ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-      ASSERT_TRUE(HasChildCount(PC, 2));
-        ASSERT_TRUE(HasTextAt(PC, 0, " "));
-        ASSERT_TRUE(HasHTMLStartTagAt(PC, 1, HST, "a", NoAttrs()));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, HTML2) {
-  const char *Sources[] = {
-    "// <br/>",
-    "// <br />"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 1));
-
-    {
-      ParagraphComment *PC;
-      HTMLStartTagComment *HST;
-      ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-      ASSERT_TRUE(HasChildCount(PC, 2));
-        ASSERT_TRUE(HasTextAt(PC, 0, " "));
-        ASSERT_TRUE(HasHTMLStartTagAt(PC, 1, HST, "br", SelfClosing()));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, HTML3) {
-  const char *Sources[] = {
-    "// <a href",
-    "// <a href ",
-    "// <a href>",
-    "// <a href >",
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 1));
-
-    {
-      ParagraphComment *PC;
-      HTMLStartTagComment *HST;
-      ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-      ASSERT_TRUE(HasChildCount(PC, 2));
-        ASSERT_TRUE(HasTextAt(PC, 0, " "));
-        ASSERT_TRUE(HasHTMLStartTagAt(PC, 1, HST, "a", "href", ""));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, HTML4) {
-  const char *Sources[] = {
-    "// <a href=\"bbb\"",
-    "// <a href=\"bbb\">",
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 1));
-
-    {
-      ParagraphComment *PC;
-      HTMLStartTagComment *HST;
-      ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-      ASSERT_TRUE(HasChildCount(PC, 2));
-        ASSERT_TRUE(HasTextAt(PC, 0, " "));
-        ASSERT_TRUE(HasHTMLStartTagAt(PC, 1, HST, "a", "href", "bbb"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, HTML5) {
-  const char *Sources[] = {
-    "// </a",
-    "// </a>",
-    "// </a >"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 1));
-
-    {
-      ParagraphComment *PC;
-      HTMLEndTagComment *HET;
-      ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-      ASSERT_TRUE(HasChildCount(PC, 2));
-        ASSERT_TRUE(HasTextAt(PC, 0, " "));
-        ASSERT_TRUE(HasHTMLEndTagAt(PC, 1, HET, "a"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, HTML6) {
-  const char *Source =
-    "// <pre>\n"
-    "// Aaa\n"
-    "// Bbb\n"
-    "// </pre>\n";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  {
-    ParagraphComment *PC;
-    HTMLStartTagComment *HST;
-    HTMLEndTagComment *HET;
-    ASSERT_TRUE(GetChildAt(FC, 0, PC));
-
-    ASSERT_TRUE(HasChildCount(PC, 6));
-      ASSERT_TRUE(HasTextAt(PC, 0, " "));
-      ASSERT_TRUE(HasHTMLStartTagAt(PC, 1, HST, "pre", NoAttrs()));
-      ASSERT_TRUE(HasTextWithNewlineAt(PC, 2, " Aaa"));
-      ASSERT_TRUE(HasTextWithNewlineAt(PC, 3, " Bbb"));
-      ASSERT_TRUE(HasTextAt(PC, 4, " "));
-      ASSERT_TRUE(HasHTMLEndTagAt(PC, 5, HET, "pre"));
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimBlock1) {
-  const char *Source = "// \\verbatim\\endverbatim\n";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 2));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    VerbatimBlockComment *VCC;
-    ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VCC,
-                                   "verbatim", "endverbatim",
-                                   NoLines()));
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimBlock2) {
-  const char *Source = "// \\verbatim Aaa \\endverbatim\n";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 2));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    VerbatimBlockComment *VBC;
-    ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC,
-                                   "verbatim", "endverbatim",
-                                   Lines(), " Aaa "));
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimBlock3) {
-  const char *Source = "// \\verbatim Aaa\n";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 2));
-
-  ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-  {
-    VerbatimBlockComment *VBC;
-    ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC, "verbatim", "",
-                                   Lines(), " Aaa"));
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimBlock4) {
-  const char *Source =
-    "//\\verbatim\n"
-    "//\\endverbatim\n";
-
-  FullComment *FC = parseString(Source);
-  ASSERT_TRUE(HasChildCount(FC, 1));
-
-  {
-    VerbatimBlockComment *VBC;
-    ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 0, VBC,
-                                   "verbatim", "endverbatim",
-                                   NoLines()));
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimBlock5) {
-  const char *Sources[] = {
-    "//\\verbatim\n"
-    "// Aaa\n"
-    "//\\endverbatim\n",
-
-    "/*\\verbatim\n"
-    " * Aaa\n"
-    " *\\endverbatim*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 1));
-
-    {
-      VerbatimBlockComment *VBC;
-      ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 0, VBC,
-                                     "verbatim", "endverbatim",
-                                     Lines(), " Aaa"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimBlock6) {
-  const char *Sources[] = {
-    "// \\verbatim\n"
-    "// Aaa\n"
-    "// \\endverbatim\n",
-
-    "/* \\verbatim\n"
-    " * Aaa\n"
-    " * \\endverbatim*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      VerbatimBlockComment *VBC;
-      ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC,
-                                     "verbatim", "endverbatim",
-                                     Lines(), " Aaa"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimBlock7) {
-  const char *Sources[] = {
-    "// \\verbatim\n"
-    "// Aaa\n"
-    "// Bbb\n"
-    "// \\endverbatim\n",
-
-    "/* \\verbatim\n"
-    " * Aaa\n"
-    " * Bbb\n"
-    " * \\endverbatim*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      VerbatimBlockComment *VBC;
-      ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC,
-                                     "verbatim", "endverbatim",
-                                     Lines(), " Aaa", " Bbb"));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimBlock8) {
-  const char *Sources[] = {
-    "// \\verbatim\n"
-    "// Aaa\n"
-    "//\n"
-    "// Bbb\n"
-    "// \\endverbatim\n",
-
-    "/* \\verbatim\n"
-    " * Aaa\n"
-    " *\n"
-    " * Bbb\n"
-    " * \\endverbatim*/"
-  };
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      VerbatimBlockComment *VBC;
-      ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC,
-                                     "verbatim", "endverbatim"));
-      ASSERT_EQ(3U, VBC->getNumLines());
-      ASSERT_EQ(" Aaa", VBC->getText(0));
-      ASSERT_EQ("",     VBC->getText(1));
-      ASSERT_EQ(" Bbb", VBC->getText(2));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimLine1) {
-  const char *Sources[] = {
-    "// \\fn",
-    "// \\fn\n"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      VerbatimLineComment *VLC;
-      ASSERT_TRUE(HasVerbatimLineAt(FC, Traits, 1, VLC, "fn", ""));
-    }
-  }
-}
-
-TEST_F(CommentParserTest, VerbatimLine2) {
-  const char *Sources[] = {
-    "/// \\fn void *foo(const char *zzz = \"\\$\");\n//",
-    "/** \\fn void *foo(const char *zzz = \"\\$\");*/"
-  };
-
-  for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
-    FullComment *FC = parseString(Sources[i]);
-    ASSERT_TRUE(HasChildCount(FC, 2));
-
-    ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
-    {
-      VerbatimLineComment *VLC;
-      ASSERT_TRUE(HasVerbatimLineAt(FC, Traits, 1, VLC, "fn",
-                  " void *foo(const char *zzz = \"\\$\");"));
-    }
-  }
-}
-
-} // unnamed namespace
-
-} // end namespace comments
-} // end namespace clang
-

Modified: trunk/contrib/llvm/tools/clang/unittests/AST/DeclPrinterTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/AST/DeclPrinterTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/AST/DeclPrinterTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1257 +0,0 @@
-//===- unittests/AST/DeclPrinterTest.cpp --- Declaration printer tests ----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains tests for Decl::print() and related methods.
-//
-// Search this file for WRONG to see test cases that are producing something
-// completely wrong, invalid C++ or just misleading.
-//
-// These tests have a coding convention:
-// * declaration to be printed is named 'A' unless it should have some special
-// name (e.g., 'operator+');
-// * additional helper declarations are 'Z', 'Y', 'X' and so on.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/Tooling/Tooling.h"
-#include "llvm/ADT/SmallString.h"
-#include "gtest/gtest.h"
-
-using namespace clang;
-using namespace ast_matchers;
-using namespace tooling;
-
-namespace {
-
-void PrintDecl(raw_ostream &Out, const ASTContext *Context, const Decl *D) {
-  PrintingPolicy Policy = Context->getPrintingPolicy();
-  Policy.TerseOutput = true;
-  D->print(Out, Policy, /*Indentation*/ 0, /*PrintInstantiation*/ false);
-}
-
-class PrintMatch : public MatchFinder::MatchCallback {
-  SmallString<1024> Printed;
-  unsigned NumFoundDecls;
-
-public:
-  PrintMatch() : NumFoundDecls(0) {}
-
-  virtual void run(const MatchFinder::MatchResult &Result) {
-    const Decl *D = Result.Nodes.getDeclAs<Decl>("id");
-    if (!D || D->isImplicit())
-      return;
-    NumFoundDecls++;
-    if (NumFoundDecls > 1)
-      return;
-
-    llvm::raw_svector_ostream Out(Printed);
-    PrintDecl(Out, Result.Context, D);
-  }
-
-  StringRef getPrinted() const {
-    return Printed;
-  }
-
-  unsigned getNumFoundDecls() const {
-    return NumFoundDecls;
-  }
-};
-
-::testing::AssertionResult PrintedDeclMatches(
-                                  StringRef Code,
-                                  const std::vector<std::string> &Args,
-                                  const DeclarationMatcher &NodeMatch,
-                                  StringRef ExpectedPrinted,
-                                  StringRef FileName) {
-  PrintMatch Printer;
-  MatchFinder Finder;
-  Finder.addMatcher(NodeMatch, &Printer);
-  OwningPtr<FrontendActionFactory> Factory(newFrontendActionFactory(&Finder));
-
-  if (!runToolOnCodeWithArgs(Factory->create(), Code, Args, FileName))
-    return testing::AssertionFailure() << "Parsing error in \"" << Code << "\"";
-
-  if (Printer.getNumFoundDecls() == 0)
-    return testing::AssertionFailure()
-        << "Matcher didn't find any declarations";
-
-  if (Printer.getNumFoundDecls() > 1)
-    return testing::AssertionFailure()
-        << "Matcher should match only one declaration "
-           "(found " << Printer.getNumFoundDecls() << ")";
-
-  if (Printer.getPrinted() != ExpectedPrinted)
-    return ::testing::AssertionFailure()
-      << "Expected \"" << ExpectedPrinted << "\", "
-         "got \"" << Printer.getPrinted() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult PrintedDeclCXX98Matches(StringRef Code,
-                                                   StringRef DeclName,
-                                                   StringRef ExpectedPrinted) {
-  std::vector<std::string> Args(1, "-std=c++98");
-  return PrintedDeclMatches(Code,
-                            Args,
-                            namedDecl(hasName(DeclName)).bind("id"),
-                            ExpectedPrinted,
-                            "input.cc");
-}
-
-::testing::AssertionResult PrintedDeclCXX98Matches(
-                                  StringRef Code,
-                                  const DeclarationMatcher &NodeMatch,
-                                  StringRef ExpectedPrinted) {
-  std::vector<std::string> Args(1, "-std=c++98");
-  return PrintedDeclMatches(Code,
-                            Args,
-                            NodeMatch,
-                            ExpectedPrinted,
-                            "input.cc");
-}
-
-::testing::AssertionResult PrintedDeclCXX11Matches(StringRef Code,
-                                                   StringRef DeclName,
-                                                   StringRef ExpectedPrinted) {
-  std::vector<std::string> Args(1, "-std=c++11");
-  return PrintedDeclMatches(Code,
-                            Args,
-                            namedDecl(hasName(DeclName)).bind("id"),
-                            ExpectedPrinted,
-                            "input.cc");
-}
-
-::testing::AssertionResult PrintedDeclCXX11Matches(
-                                  StringRef Code,
-                                  const DeclarationMatcher &NodeMatch,
-                                  StringRef ExpectedPrinted) {
-  std::vector<std::string> Args(1, "-std=c++11");
-  return PrintedDeclMatches(Code,
-                            Args,
-                            NodeMatch,
-                            ExpectedPrinted,
-                            "input.cc");
-}
-
-::testing::AssertionResult PrintedDeclObjCMatches(
-                                  StringRef Code,
-                                  const DeclarationMatcher &NodeMatch,
-                                  StringRef ExpectedPrinted) {
-  std::vector<std::string> Args(1, "");
-  return PrintedDeclMatches(Code,
-                            Args,
-                            NodeMatch,
-                            ExpectedPrinted,
-                            "input.m");
-}
-
-} // unnamed namespace
-
-TEST(DeclPrinter, TestNamespace1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "namespace A { int B; }",
-    "A",
-    "namespace A {\n}"));
-    // Should be: with { ... }
-}
-
-TEST(DeclPrinter, TestNamespace2) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "inline namespace A { int B; }",
-    "A",
-    "inline namespace A {\n}"));
-    // Should be: with { ... }
-}
-
-TEST(DeclPrinter, TestNamespaceAlias1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "namespace Z { }"
-    "namespace A = Z;",
-    "A",
-    "namespace A = Z"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestNamespaceAlias2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "namespace X { namespace Y {} }"
-    "namespace A = X::Y;",
-    "A",
-    "namespace A = X::Y"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class A { int a; };",
-    "A",
-    "class A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A { int a; };",
-    "A",
-    "struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "union A { int a; };",
-    "A",
-    "union A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl4) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class Z { int a; };"
-    "class A : Z { int b; };",
-    "A",
-    "class A :  Z {\n}"));
-    // Should be: with semicolon, with { ... }, without two spaces
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl5) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z { int a; };"
-    "struct A : Z { int b; };",
-    "A",
-    "struct A :  Z {\n}"));
-    // Should be: with semicolon, with { ... }, without two spaces
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl6) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class Z { int a; };"
-    "class A : public Z { int b; };",
-    "A",
-    "class A : public Z {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl7) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class Z { int a; };"
-    "class A : protected Z { int b; };",
-    "A",
-    "class A : protected Z {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl8) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class Z { int a; };"
-    "class A : private Z { int b; };",
-    "A",
-    "class A : private Z {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl9) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class Z { int a; };"
-    "class A : virtual Z { int b; };",
-    "A",
-    "class A : virtual  Z {\n}"));
-    // Should be: with semicolon, with { ... }, without two spaces
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl10) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class Z { int a; };"
-    "class A : virtual public Z { int b; };",
-    "A",
-    "class A : virtual public Z {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestCXXRecordDecl11) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class Z { int a; };"
-    "class Y : virtual public Z { int b; };"
-    "class A : virtual public Z, private Y { int c; };",
-    "A",
-    "class A : virtual public Z, private Y {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestFunctionDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void A();",
-    "A",
-    "void A()"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void A() {}",
-    "A",
-    "void A()"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void Z();"
-    "void A() { Z(); }",
-    "A",
-    "void A()"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl4) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "extern void A();",
-    "A",
-    "extern void A()"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl5) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "static void A();",
-    "A",
-    "static void A()"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl6) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "inline void A();",
-    "A",
-    "inline void A()"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl7) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "constexpr int A(int a);",
-    "A",
-    "int A(int a)"));
-    // WRONG; Should be: "constexpr int A(int a);"
-}
-
-TEST(DeclPrinter, TestFunctionDecl8) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void A(int a);",
-    "A",
-    "void A(int a)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl9) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void A(...);",
-    "A",
-    "void A(...)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl10) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void A(int a, ...);",
-    "A",
-    "void A(int a, ...)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl11) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "typedef long size_t;"
-    "typedef int *pInt;"
-    "void A(int a, pInt b, size_t c);",
-    "A",
-    "void A(int a, pInt b, size_t c)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl12) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void A(int a, int b = 0);",
-    "A",
-    "void A(int a, int b = 0)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl13) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void (*A(int a))(int b);",
-    "A",
-    "void (*A(int a))(int)"));
-    // Should be: with semicolon, with parameter name (?)
-}
-
-TEST(DeclPrinter, TestFunctionDecl14) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T>"
-    "void A(T t) { }"
-    "template<>"
-    "void A(int N) { }",
-    functionDecl(hasName("A"), isExplicitTemplateSpecialization()).bind("id"),
-    "void A(int N)"));
-    // WRONG; Should be: "template <> void A(int N);"));
-}
-
-
-TEST(DeclPrinter, TestCXXConstructorDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  A();"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A()"));
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  A(int a);"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A(int a)"));
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  A(const A &a);"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A(const A &a)"));
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl4) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  A(const A &a, int = 0);"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A(const A &a, int = 0)"));
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl5) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct A {"
-    "  A(const A &&a);"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A(const A &&a)"));
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl6) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  explicit A(int a);"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "explicit A(int a)"));
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl7) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct A {"
-    "  constexpr A();"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A()"));
-    // WRONG; Should be: "constexpr A();"
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl8) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct A {"
-    "  A() = default;"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A() = default"));
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl9) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct A {"
-    "  A() = delete;"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A() = delete"));
-}
-
-TEST(DeclPrinter, TestCXXConstructorDecl10) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<typename... T>"
-    "struct A {"
-    "  A(const A &a);"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A<T...>(const A<T...> &a)"));
-}
-
-#if !defined(_MSC_VER)
-TEST(DeclPrinter, TestCXXConstructorDecl11) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<typename... T>"
-    "struct A : public T... {"
-    "  A(T&&... ts) : T(ts)... {}"
-    "};",
-    constructorDecl(ofClass(hasName("A"))).bind("id"),
-    "A<T...>(T &&ts...) : T(ts)"));
-    // WRONG; Should be: "A(T&&... ts) : T(ts)..."
-}
-#endif
-
-TEST(DeclPrinter, TestCXXDestructorDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  ~A();"
-    "};",
-    destructorDecl(ofClass(hasName("A"))).bind("id"),
-    "void ~A()"));
-    // WRONG; Should be: "~A();"
-}
-
-TEST(DeclPrinter, TestCXXDestructorDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  virtual ~A();"
-    "};",
-    destructorDecl(ofClass(hasName("A"))).bind("id"),
-    "virtual void ~A()"));
-    // WRONG; Should be: "virtual ~A();"
-}
-
-TEST(DeclPrinter, TestCXXConversionDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  operator int();"
-    "};",
-    methodDecl(ofClass(hasName("A"))).bind("id"),
-    "int operator int()"));
-    // WRONG; Should be: "operator int();"
-}
-
-TEST(DeclPrinter, TestCXXConversionDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct A {"
-    "  operator bool();"
-    "};",
-    methodDecl(ofClass(hasName("A"))).bind("id"),
-    "bool operator _Bool()"));
-    // WRONG; Should be: "operator bool();"
-}
-
-TEST(DeclPrinter, TestCXXConversionDecl3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {};"
-    "struct A {"
-    "  operator Z();"
-    "};",
-    methodDecl(ofClass(hasName("A"))).bind("id"),
-    "Z operator struct Z()"));
-    // WRONG; Should be: "operator Z();"
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_AllocationFunction1) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "namespace std { typedef decltype(sizeof(int)) size_t; }"
-    "struct Z {"
-    "  void *operator new(std::size_t);"
-    "};",
-    methodDecl(ofClass(hasName("Z"))).bind("id"),
-    "void *operator new(std::size_t)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_AllocationFunction2) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "namespace std { typedef decltype(sizeof(int)) size_t; }"
-    "struct Z {"
-    "  void *operator new[](std::size_t);"
-    "};",
-    methodDecl(ofClass(hasName("Z"))).bind("id"),
-    "void *operator new[](std::size_t)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_AllocationFunction3) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct Z {"
-    "  void operator delete(void *);"
-    "};",
-    methodDecl(ofClass(hasName("Z"))).bind("id"),
-    "void operator delete(void *) noexcept"));
-    // Should be: with semicolon, without noexcept?
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_AllocationFunction4) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  void operator delete(void *);"
-    "};",
-    methodDecl(ofClass(hasName("Z"))).bind("id"),
-    "void operator delete(void *)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_AllocationFunction5) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct Z {"
-    "  void operator delete[](void *);"
-    "};",
-    methodDecl(ofClass(hasName("Z"))).bind("id"),
-    "void operator delete[](void *) noexcept"));
-    // Should be: with semicolon, without noexcept?
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_Operator1) {
-  const char *OperatorNames[] = {
-    "+",  "-",  "*",  "/",  "%",  "^",   "&",   "|",
-    "=",  "<",  ">",  "+=", "-=", "*=",  "/=",  "%=",
-    "^=", "&=", "|=", "<<", ">>", ">>=", "<<=", "==",  "!=",
-    "<=", ">=", "&&", "||",  ",", "->*",
-    "()", "[]"
-  };
-
-  for (unsigned i = 0, e = llvm::array_lengthof(OperatorNames); i != e; ++i) {
-    SmallString<128> Code;
-    Code.append("struct Z { void operator");
-    Code.append(OperatorNames[i]);
-    Code.append("(Z z); };");
-
-    SmallString<128> Expected;
-    Expected.append("void operator");
-    Expected.append(OperatorNames[i]);
-    Expected.append("(Z z)");
-    // Should be: with semicolon
-
-    ASSERT_TRUE(PrintedDeclCXX98Matches(
-      Code,
-      methodDecl(ofClass(hasName("Z"))).bind("id"),
-      Expected));
-  }
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_Operator2) {
-  const char *OperatorNames[] = {
-    "~", "!", "++", "--", "->"
-  };
-
-  for (unsigned i = 0, e = llvm::array_lengthof(OperatorNames); i != e; ++i) {
-    SmallString<128> Code;
-    Code.append("struct Z { void operator");
-    Code.append(OperatorNames[i]);
-    Code.append("(); };");
-
-    SmallString<128> Expected;
-    Expected.append("void operator");
-    Expected.append(OperatorNames[i]);
-    Expected.append("()");
-    // Should be: with semicolon
-
-    ASSERT_TRUE(PrintedDeclCXX98Matches(
-      Code,
-      methodDecl(ofClass(hasName("Z"))).bind("id"),
-      Expected));
-  }
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  void A(int a);"
-    "};",
-    "A",
-    "void A(int a)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  virtual void A(int a);"
-    "};",
-    "A",
-    "virtual void A(int a)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  virtual void A(int a);"
-    "};"
-    "struct ZZ : Z {"
-    "  void A(int a);"
-    "};",
-    "ZZ::A",
-    "void A(int a)"));
-    // Should be: with semicolon
-    // TODO: should we print "virtual"?
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl4) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  inline void A(int a);"
-    "};",
-    "A",
-    "inline void A(int a)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl5) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  virtual void A(int a) = 0;"
-    "};",
-    "A",
-    "virtual void A(int a) = 0"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_CVQualifier1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  void A(int a) const;"
-    "};",
-    "A",
-    "void A(int a) const"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_CVQualifier2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  void A(int a) volatile;"
-    "};",
-    "A",
-    "void A(int a) volatile"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_CVQualifier3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  void A(int a) const volatile;"
-    "};",
-    "A",
-    "void A(int a) const volatile"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_RefQualifier1) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct Z {"
-    "  void A(int a) &;"
-    "};",
-    "A",
-    "void A(int a)"));
-    // WRONG; Should be: "void A(int a) &;"
-}
-
-TEST(DeclPrinter, TestCXXMethodDecl_RefQualifier2) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct Z {"
-    "  void A(int a) &&;"
-    "};",
-    "A",
-    "void A(int a)"));
-    // WRONG; Should be: "void A(int a) &&;"
-}
-
-TEST(DeclPrinter, TestFunctionDecl_ExceptionSpecification1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  void A(int a) throw();"
-    "};",
-    "A",
-    "void A(int a) throw()"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl_ExceptionSpecification2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z {"
-    "  void A(int a) throw(int);"
-    "};",
-    "A",
-    "void A(int a) throw(int)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl_ExceptionSpecification3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "class ZZ {};"
-    "struct Z {"
-    "  void A(int a) throw(ZZ, int);"
-    "};",
-    "A",
-    "void A(int a) throw(ZZ, int)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl_ExceptionSpecification4) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct Z {"
-    "  void A(int a) noexcept;"
-    "};",
-    "A",
-    "void A(int a) noexcept"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionDecl_ExceptionSpecification5) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct Z {"
-    "  void A(int a) noexcept(true);"
-    "};",
-    "A",
-    "void A(int a) noexcept(trueA(int a) noexcept(true)"));
-    // WRONG; Should be: "void A(int a) noexcept(true);"
-}
-
-TEST(DeclPrinter, TestFunctionDecl_ExceptionSpecification6) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "struct Z {"
-    "  void A(int a) noexcept(1 < 2);"
-    "};",
-    "A",
-    "void A(int a) noexcept(1 < 2A(int a) noexcept(1 < 2)"));
-    // WRONG; Should be: "void A(int a) noexcept(1 < 2);"
-}
-
-TEST(DeclPrinter, TestFunctionDecl_ExceptionSpecification7) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<int N>"
-    "struct Z {"
-    "  void A(int a) noexcept(N < 2);"
-    "};",
-    "A",
-    "void A(int a) noexcept(N < 2A(int a) noexcept(N < 2)"));
-    // WRONG; Should be: "void A(int a) noexcept(N < 2);"
-}
-
-TEST(DeclPrinter, TestVarDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "char *const (*(*A)[5])(int);",
-    "A",
-    "char *const (*(*A)[5])(int)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestVarDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "void (*A)() throw(int);",
-    "A",
-    "void (*A)() throw(int)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestVarDecl3) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "void (*A)() noexcept;",
-    "A",
-    "void (*A)() noexcept"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFieldDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T>"
-    "struct Z { T A; };",
-    "A",
-    "T A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFieldDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<int N>"
-    "struct Z { int A[N]; };",
-    "A",
-    "int A[N]"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T>"
-    "struct A { T a; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <typename T> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T = int>"
-    "struct A { T a; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <typename T = int> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<class T>"
-    "struct A { T a; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <class T> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl4) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T, typename U>"
-    "struct A { T a; U b; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <typename T, typename U> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl5) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<int N>"
-    "struct A { int a[N]; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <int N> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl6) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<int N = 42>"
-    "struct A { int a[N]; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <int N = 42> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl7) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "typedef int MyInt;"
-    "template<MyInt N>"
-    "struct A { int a[N]; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <MyInt N> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl8) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<template<typename U> class T> struct A { };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <template <typename U> class T> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl9) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T> struct Z { };"
-    "template<template<typename U> class T = Z> struct A { };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <template <typename U> class T> struct A {\n}"));
-    // Should be: with semicolon, with { ... }
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl10) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<typename... T>"
-    "struct A { int a; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <typename ... T> struct A {\n}"));
-    // Should be: with semicolon, with { ... }, without spaces before '...'
-}
-
-TEST(DeclPrinter, TestClassTemplateDecl11) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<typename... T>"
-    "struct A : public T... { int a; };",
-    classTemplateDecl(hasName("A")).bind("id"),
-    "template <typename ... T> struct A : public T... {\n}"));
-    // Should be: with semicolon, with { ... }, without spaces before '...'
-}
-
-TEST(DeclPrinter, TestClassTemplatePartialSpecializationDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T, typename U>"
-    "struct A { T a; U b; };"
-    "template<typename T>"
-    "struct A<T, int> { T a; };",
-    classTemplateSpecializationDecl().bind("id"),
-    "struct A {\n}"));
-    // WRONG; Should be: "template<typename T> struct A<T, int> { ... }"
-}
-
-TEST(DeclPrinter, TestClassTemplatePartialSpecializationDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T>"
-    "struct A { T a; };"
-    "template<typename T>"
-    "struct A<T *> { T a; };",
-    classTemplateSpecializationDecl().bind("id"),
-    "struct A {\n}"));
-    // WRONG; Should be: "template<typename T> struct A<T *> { ... }"
-}
-
-TEST(DeclPrinter, TestClassTemplateSpecializationDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T>"
-    "struct A { T a; };"
-    "template<>"
-    "struct A<int> { int a; };",
-    classTemplateSpecializationDecl().bind("id"),
-    "struct A {\n}"));
-    // WRONG; Should be: "template<> struct A<int> { ... }"
-}
-
-TEST(DeclPrinter, TestFunctionTemplateDecl1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T>"
-    "void A(T &t);",
-    functionTemplateDecl(hasName("A")).bind("id"),
-    "template <typename T> void A(T &t)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionTemplateDecl2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T>"
-    "void A(T &t) { }",
-    functionTemplateDecl(hasName("A")).bind("id"),
-    "template <typename T> void A(T &t)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionTemplateDecl3) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<typename... T>"
-    "void A(T... a);",
-    functionTemplateDecl(hasName("A")).bind("id"),
-    "template <typename ... T> void A(T a...)"));
-    // WRONG; Should be: "template <typename ... T> void A(T... a)"
-    //        (not "T a...")
-    // Should be: with semicolon.
-}
-
-TEST(DeclPrinter, TestFunctionTemplateDecl4) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z { template<typename T> void A(T t); };",
-    functionTemplateDecl(hasName("A")).bind("id"),
-    "template <typename T> void A(T t)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionTemplateDecl5) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "struct Z { template<typename T> void A(T t) {} };",
-    functionTemplateDecl(hasName("A")).bind("id"),
-    "template <typename T> void A(T t)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestFunctionTemplateDecl6) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T >struct Z {"
-    "  template<typename U> void A(U t) {}"
-    "};",
-    functionTemplateDecl(hasName("A")).bind("id"),
-    "template <typename U> void A(U t)"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList1) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T> struct Z {};"
-    "struct X {};"
-    "Z<X> A;",
-    "A",
-    "Z<X> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList2) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T, typename U> struct Z {};"
-    "struct X {};"
-    "typedef int Y;"
-    "Z<X, Y> A;",
-    "A",
-    "Z<X, Y> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList3) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T> struct Z {};"
-    "template<typename T> struct X {};"
-    "Z<X<int> > A;",
-    "A",
-    "Z<X<int> > A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList4) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<typename T> struct Z {};"
-    "template<typename T> struct X {};"
-    "Z<X<int>> A;",
-    "A",
-    "Z<X<int> > A"));
-    // Should be: with semicolon, without extra space in "> >"
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList5) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T> struct Z {};"
-    "template<typename T> struct X { Z<T> A; };",
-    "A",
-    "Z<T> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList6) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<template<typename T> class U> struct Z {};"
-    "template<typename T> struct X {};"
-    "Z<X> A;",
-    "A",
-    "Z<X> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList7) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<template<typename T> class U> struct Z {};"
-    "template<template<typename T> class U> struct Y {"
-    "  Z<U> A;"
-    "};",
-    "A",
-    "Z<U> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList8) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<typename T> struct Z {};"
-    "template<template<typename T> class U> struct Y {"
-    "  Z<U<int> > A;"
-    "};",
-    "A",
-    "Z<U<int> > A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList9) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<unsigned I> struct Z {};"
-    "Z<0> A;",
-    "A",
-    "Z<0> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList10) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<unsigned I> struct Z {};"
-    "template<unsigned I> struct X { Z<I> A; };",
-    "A",
-    "Z<I> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList11) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<int I> struct Z {};"
-    "Z<42 * 10 - 420 / 1> A;",
-    "A",
-    "Z<42 * 10 - 420 / 1> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList12) {
-  ASSERT_TRUE(PrintedDeclCXX98Matches(
-    "template<const char *p> struct Z {};"
-    "extern const char X[] = \"aaa\";"
-    "Z<X> A;",
-    "A",
-    "Z<X> A"));
-    // Should be: with semicolon
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList13) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<typename... T> struct Z {};"
-    "template<typename... T> struct X {"
-    "  Z<T...> A;"
-    "};",
-    "A",
-    "Z<T...> A"));
-    // Should be: with semicolon, without extra space in "> >"
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList14) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<typename... T> struct Z {};"
-    "template<typename T> struct Y {};"
-    "template<typename... T> struct X {"
-    "  Z<Y<T>...> A;"
-    "};",
-    "A",
-    "Z<Y<T>...> A"));
-    // Should be: with semicolon, without extra space in "> >"
-}
-
-TEST(DeclPrinter, TestTemplateArgumentList15) {
-  ASSERT_TRUE(PrintedDeclCXX11Matches(
-    "template<unsigned I> struct Z {};"
-    "template<typename... T> struct X {"
-    "  Z<sizeof...(T)> A;"
-    "};",
-    "A",
-    "Z<sizeof...(T)> A"));
-    // Should be: with semicolon, without extra space in "> >"
-}
-
-TEST(DeclPrinter, TestObjCMethod1) {
-  ASSERT_TRUE(PrintedDeclObjCMatches(
-    "__attribute__((objc_root_class)) @interface X\n"
-    "- (int)A:(id)anObject inRange:(long)range;\n"
-    "@end\n"
-    "@implementation X\n"
-    "- (int)A:(id)anObject inRange:(long)range { int printThis; return 0; }\n"
-    "@end\n",
-    namedDecl(hasName("A:inRange:"),
-              hasDescendant(namedDecl(hasName("printThis")))).bind("id"),
-    "- (int) A:(id)anObject inRange:(long)range"));
-}
-
-TEST(DeclPrinter, TestObjCProtocol1) {
-  ASSERT_TRUE(PrintedDeclObjCMatches(
-    "@protocol P1, P2;",
-    namedDecl(hasName("P1")).bind("id"),
-    "@protocol P1;\n"));
-  ASSERT_TRUE(PrintedDeclObjCMatches(
-    "@protocol P1, P2;",
-    namedDecl(hasName("P2")).bind("id"),
-    "@protocol P2;\n"));
-}
-
-TEST(DeclPrinter, TestObjCProtocol2) {
-  ASSERT_TRUE(PrintedDeclObjCMatches(
-    "@protocol P2 @end"
-    "@protocol P1<P2> @end",
-    namedDecl(hasName("P1")).bind("id"),
-    "@protocol P1<P2>\n at end"));
-}

Modified: trunk/contrib/llvm/tools/clang/unittests/AST/MatchVerifier.h
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/AST/MatchVerifier.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/AST/MatchVerifier.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,196 +0,0 @@
-//===- unittest/AST/MatchVerifier.h - AST unit test support ---------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  Provides MatchVerifier, a base class to implement gtest matchers that
-//  verify things that can be matched on the AST.
-//
-//  Also implements matchers based on MatchVerifier:
-//  LocationVerifier and RangeVerifier to verify whether a matched node has
-//  the expected source location or source range.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/ASTMatchers/ASTMatchers.h"
-#include "clang/Tooling/Tooling.h"
-#include "gtest/gtest.h"
-
-namespace clang {
-namespace ast_matchers {
-
-enum Language { Lang_C, Lang_C89, Lang_CXX, Lang_OpenCL };
-
-/// \brief Base class for verifying some property of nodes found by a matcher.
-template <typename NodeType>
-class MatchVerifier : public MatchFinder::MatchCallback {
-public:
-  template <typename MatcherType>
-  testing::AssertionResult match(const std::string &Code,
-                                 const MatcherType &AMatcher) {
-    return match(Code, AMatcher, Lang_CXX);
-  }
-
-  template <typename MatcherType>
-  testing::AssertionResult match(const std::string &Code,
-                                 const MatcherType &AMatcher, Language L);
-
-protected:
-  virtual void run(const MatchFinder::MatchResult &Result);
-  virtual void verify(const MatchFinder::MatchResult &Result,
-                      const NodeType &Node) {}
-
-  void setFailure(const Twine &Result) {
-    Verified = false;
-    VerifyResult = Result.str();
-  }
-
-  void setSuccess() {
-    Verified = true;
-  }
-
-private:
-  bool Verified;
-  std::string VerifyResult;
-};
-
-/// \brief Runs a matcher over some code, and returns the result of the
-/// verifier for the matched node.
-template <typename NodeType> template <typename MatcherType>
-testing::AssertionResult MatchVerifier<NodeType>::match(
-    const std::string &Code, const MatcherType &AMatcher, Language L) {
-  MatchFinder Finder;
-  Finder.addMatcher(AMatcher.bind(""), this);
-  OwningPtr<tooling::FrontendActionFactory> Factory(
-      tooling::newFrontendActionFactory(&Finder));
-
-  std::vector<std::string> Args;
-  StringRef FileName;
-  switch (L) {
-  case Lang_C:
-    Args.push_back("-std=c99");
-    FileName = "input.c";
-    break;
-  case Lang_C89:
-    Args.push_back("-std=c89");
-    FileName = "input.c";
-    break;
-  case Lang_CXX:
-    Args.push_back("-std=c++98");
-    FileName = "input.cc";
-    break;
-  case Lang_OpenCL:
-    FileName = "input.cl";
-  }
-
-  // Default to failure in case callback is never called
-  setFailure("Could not find match");
-  if (!tooling::runToolOnCodeWithArgs(Factory->create(), Code, Args, FileName))
-    return testing::AssertionFailure() << "Parsing error";
-  if (!Verified)
-    return testing::AssertionFailure() << VerifyResult;
-  return testing::AssertionSuccess();
-}
-
-template <typename NodeType>
-void MatchVerifier<NodeType>::run(const MatchFinder::MatchResult &Result) {
-  const NodeType *Node = Result.Nodes.getNodeAs<NodeType>("");
-  if (!Node) {
-    setFailure("Matched node has wrong type");
-  } else {
-    // Callback has been called, default to success.
-    setSuccess();
-    verify(Result, *Node);
-  }
-}
-
-/// \brief Verify whether a node has the correct source location.
-///
-/// By default, Node.getSourceLocation() is checked. This can be changed
-/// by overriding getLocation().
-template <typename NodeType>
-class LocationVerifier : public MatchVerifier<NodeType> {
-public:
-  void expectLocation(unsigned Line, unsigned Column) {
-    ExpectLine = Line;
-    ExpectColumn = Column;
-  }
-
-protected:
-  void verify(const MatchFinder::MatchResult &Result, const NodeType &Node) {
-    SourceLocation Loc = getLocation(Node);
-    unsigned Line = Result.SourceManager->getSpellingLineNumber(Loc);
-    unsigned Column = Result.SourceManager->getSpellingColumnNumber(Loc);
-    if (Line != ExpectLine || Column != ExpectColumn) {
-      std::string MsgStr;
-      llvm::raw_string_ostream Msg(MsgStr);
-      Msg << "Expected location <" << ExpectLine << ":" << ExpectColumn
-          << ">, found <";
-      Loc.print(Msg, *Result.SourceManager);
-      Msg << '>';
-      this->setFailure(Msg.str());
-    }
-  }
-
-  virtual SourceLocation getLocation(const NodeType &Node) {
-    return Node.getLocation();
-  }
-
-private:
-  unsigned ExpectLine, ExpectColumn;
-};
-
-/// \brief Verify whether a node has the correct source range.
-///
-/// By default, Node.getSourceRange() is checked. This can be changed
-/// by overriding getRange().
-template <typename NodeType>
-class RangeVerifier : public MatchVerifier<NodeType> {
-public:
-  void expectRange(unsigned BeginLine, unsigned BeginColumn,
-                   unsigned EndLine, unsigned EndColumn) {
-    ExpectBeginLine = BeginLine;
-    ExpectBeginColumn = BeginColumn;
-    ExpectEndLine = EndLine;
-    ExpectEndColumn = EndColumn;
-  }
-
-protected:
-  void verify(const MatchFinder::MatchResult &Result, const NodeType &Node) {
-    SourceRange R = getRange(Node);
-    SourceLocation Begin = R.getBegin();
-    SourceLocation End = R.getEnd();
-    unsigned BeginLine = Result.SourceManager->getSpellingLineNumber(Begin);
-    unsigned BeginColumn = Result.SourceManager->getSpellingColumnNumber(Begin);
-    unsigned EndLine = Result.SourceManager->getSpellingLineNumber(End);
-    unsigned EndColumn = Result.SourceManager->getSpellingColumnNumber(End);
-    if (BeginLine != ExpectBeginLine || BeginColumn != ExpectBeginColumn ||
-        EndLine != ExpectEndLine || EndColumn != ExpectEndColumn) {
-      std::string MsgStr;
-      llvm::raw_string_ostream Msg(MsgStr);
-      Msg << "Expected range <" << ExpectBeginLine << ":" << ExpectBeginColumn
-          << '-' << ExpectEndLine << ":" << ExpectEndColumn << ">, found <";
-      Begin.print(Msg, *Result.SourceManager);
-      Msg << '-';
-      End.print(Msg, *Result.SourceManager);
-      Msg << '>';
-      this->setFailure(Msg.str());
-    }
-  }
-
-  virtual SourceRange getRange(const NodeType &Node) {
-    return Node.getSourceRange();
-  }
-
-private:
-  unsigned ExpectBeginLine, ExpectBeginColumn, ExpectEndLine, ExpectEndColumn;
-};
-
-} // end namespace ast_matchers
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/AST/SourceLocationTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/AST/SourceLocationTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/AST/SourceLocationTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,159 +0,0 @@
-//===- unittest/AST/SourceLocationTest.cpp - AST source loc unit tests ----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains tests for SourceLocation and SourceRange fields
-// in AST nodes.
-//
-// FIXME: In the long-term, when we test more than source locations, we may
-// want to have a unit test file for an AST node (or group of related nodes),
-// rather than a unit test file for source locations for all AST nodes.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/ASTMatchers/ASTMatchers.h"
-#include "clang/Tooling/Tooling.h"
-#include "gtest/gtest.h"
-#include "MatchVerifier.h"
-
-namespace clang {
-namespace ast_matchers {
-
-// FIXME: Pull the *Verifier tests into their own test file.
-
-TEST(MatchVerifier, ParseError) {
-  LocationVerifier<VarDecl> Verifier;
-  Verifier.expectLocation(1, 1);
-  EXPECT_FALSE(Verifier.match("int i", varDecl()));
-}
-
-TEST(MatchVerifier, NoMatch) {
-  LocationVerifier<VarDecl> Verifier;
-  Verifier.expectLocation(1, 1);
-  EXPECT_FALSE(Verifier.match("int i;", recordDecl()));
-}
-
-TEST(MatchVerifier, WrongType) {
-  LocationVerifier<RecordDecl> Verifier;
-  Verifier.expectLocation(1, 1);
-  EXPECT_FALSE(Verifier.match("int i;", varDecl()));
-}
-
-TEST(LocationVerifier, WrongLocation) {
-  LocationVerifier<VarDecl> Verifier;
-  Verifier.expectLocation(1, 1);
-  EXPECT_FALSE(Verifier.match("int i;", varDecl()));
-}
-
-TEST(RangeVerifier, WrongRange) {
-  RangeVerifier<VarDecl> Verifier;
-  Verifier.expectRange(1, 1, 1, 1);
-  EXPECT_FALSE(Verifier.match("int i;", varDecl()));
-}
-
-class LabelDeclRangeVerifier : public RangeVerifier<LabelStmt> {
-protected:
-  virtual SourceRange getRange(const LabelStmt &Node) {
-    return Node.getDecl()->getSourceRange();
-  }
-};
-
-TEST(LabelDecl, Range) {
-  LabelDeclRangeVerifier Verifier;
-  Verifier.expectRange(1, 12, 1, 12);
-  EXPECT_TRUE(Verifier.match("void f() { l: return; }", labelStmt()));
-}
-
-TEST(LabelStmt, Range) {
-  RangeVerifier<LabelStmt> Verifier;
-  Verifier.expectRange(1, 12, 1, 15);
-  EXPECT_TRUE(Verifier.match("void f() { l: return; }", labelStmt()));
-}
-
-TEST(ParmVarDecl, KNRLocation) {
-  LocationVerifier<ParmVarDecl> Verifier;
-  Verifier.expectLocation(1, 8);
-  EXPECT_TRUE(Verifier.match("void f(i) {}", varDecl(), Lang_C));
-}
-
-TEST(ParmVarDecl, KNRRange) {
-  RangeVerifier<ParmVarDecl> Verifier;
-  Verifier.expectRange(1, 8, 1, 8);
-  EXPECT_TRUE(Verifier.match("void f(i) {}", varDecl(), Lang_C));
-}
-
-TEST(CXXNewExpr, ArrayRange) {
-  RangeVerifier<CXXNewExpr> Verifier;
-  Verifier.expectRange(1, 12, 1, 22);
-  EXPECT_TRUE(Verifier.match("void f() { new int[10]; }", newExpr()));
-}
-
-TEST(CXXNewExpr, ParenRange) {
-  RangeVerifier<CXXNewExpr> Verifier;
-  Verifier.expectRange(1, 12, 1, 20);
-  EXPECT_TRUE(Verifier.match("void f() { new int(); }", newExpr()));
-}
-
-TEST(MemberExpr, ImplicitMemberRange) {
-  RangeVerifier<MemberExpr> Verifier;
-  Verifier.expectRange(2, 30, 2, 30);
-  EXPECT_TRUE(Verifier.match("struct S { operator int() const; };\n"
-                             "int foo(const S& s) { return s; }",
-                             memberExpr()));
-}
-
-TEST(VarDecl, VMTypeFixedVarDeclRange) {
-  RangeVerifier<VarDecl> Verifier;
-  Verifier.expectRange(1, 1, 1, 23);
-  EXPECT_TRUE(Verifier.match("int a[(int)(void*)1234];",
-                             varDecl(), Lang_C89));
-}
-
-TEST(CXXConstructorDecl, NoRetFunTypeLocRange) {
-  RangeVerifier<CXXConstructorDecl> Verifier;
-  Verifier.expectRange(1, 11, 1, 13);
-  EXPECT_TRUE(Verifier.match("class C { C(); };", functionDecl()));
-}
-
-TEST(CompoundLiteralExpr, CompoundVectorLiteralRange) {
-  RangeVerifier<CompoundLiteralExpr> Verifier;
-  Verifier.expectRange(2, 11, 2, 22);
-  EXPECT_TRUE(Verifier.match(
-                  "typedef int int2 __attribute__((ext_vector_type(2)));\n"
-                  "int2 i2 = (int2){1, 2};", compoundLiteralExpr()));
-}
-
-TEST(CompoundLiteralExpr, ParensCompoundVectorLiteralRange) {
-  RangeVerifier<CompoundLiteralExpr> Verifier;
-  Verifier.expectRange(2, 20, 2, 31);
-  EXPECT_TRUE(Verifier.match(
-                  "typedef int int2 __attribute__((ext_vector_type(2)));\n"
-                  "constant int2 i2 = (int2)(1, 2);", 
-                  compoundLiteralExpr(), Lang_OpenCL));
-}
-
-TEST(InitListExpr, VectorLiteralListBraceRange) {
-  RangeVerifier<InitListExpr> Verifier;
-  Verifier.expectRange(2, 17, 2, 22);
-  EXPECT_TRUE(Verifier.match(
-                  "typedef int int2 __attribute__((ext_vector_type(2)));\n"
-                  "int2 i2 = (int2){1, 2};", initListExpr()));
-}
-
-TEST(InitListExpr, VectorLiteralInitListParens) {
-  RangeVerifier<InitListExpr> Verifier;
-  Verifier.expectRange(2, 26, 2, 31);
-  EXPECT_TRUE(Verifier.match(
-                  "typedef int int2 __attribute__((ext_vector_type(2)));\n"
-                  "constant int2 i2 = (int2)(1, 2);", initListExpr(), Lang_OpenCL));
-}
-
-} // end namespace ast_matchers
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/AST/StmtPrinterTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/AST/StmtPrinterTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/AST/StmtPrinterTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,165 +0,0 @@
-//===- unittests/AST/StmtPrinterTest.cpp --- Statement printer tests ------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains tests for Stmt::printPretty() and related methods.
-//
-// Search this file for WRONG to see test cases that are producing something
-// completely wrong, invalid C++ or just misleading.
-//
-// These tests have a coding convention:
-// * statements to be printed should be contained within a function named 'A'
-//   unless it should have some special name (e.g., 'operator+');
-// * additional helper declarations are 'Z', 'Y', 'X' and so on.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/Tooling/Tooling.h"
-#include "llvm/ADT/SmallString.h"
-#include "gtest/gtest.h"
-
-using namespace clang;
-using namespace ast_matchers;
-using namespace tooling;
-
-namespace {
-
-void PrintStmt(raw_ostream &Out, const ASTContext *Context, const Stmt *S) {
-  PrintingPolicy Policy = Context->getPrintingPolicy();
-  S->printPretty(Out, /*Helper*/ 0, Policy);
-}
-
-class PrintMatch : public MatchFinder::MatchCallback {
-  SmallString<1024> Printed;
-  unsigned NumFoundStmts;
-
-public:
-  PrintMatch() : NumFoundStmts(0) {}
-
-  virtual void run(const MatchFinder::MatchResult &Result) {
-    const Stmt *S = Result.Nodes.getStmtAs<Stmt>("id");
-    if (!S)
-      return;
-    NumFoundStmts++;
-    if (NumFoundStmts > 1)
-      return;
-
-    llvm::raw_svector_ostream Out(Printed);
-    PrintStmt(Out, Result.Context, S);
-  }
-
-  StringRef getPrinted() const {
-    return Printed;
-  }
-
-  unsigned getNumFoundStmts() const {
-    return NumFoundStmts;
-  }
-};
-
-::testing::AssertionResult PrintedStmtMatches(
-                                        StringRef Code,
-                                        const std::vector<std::string> &Args,
-                                        const DeclarationMatcher &NodeMatch,
-                                        StringRef ExpectedPrinted) {
-
-  PrintMatch Printer;
-  MatchFinder Finder;
-  Finder.addMatcher(NodeMatch, &Printer);
-  OwningPtr<FrontendActionFactory> Factory(newFrontendActionFactory(&Finder));
-
-  if (!runToolOnCodeWithArgs(Factory->create(), Code, Args))
-    return testing::AssertionFailure() << "Parsing error in \"" << Code << "\"";
-
-  if (Printer.getNumFoundStmts() == 0)
-    return testing::AssertionFailure()
-        << "Matcher didn't find any statements";
-
-  if (Printer.getNumFoundStmts() > 1)
-    return testing::AssertionFailure()
-        << "Matcher should match only one statement "
-           "(found " << Printer.getNumFoundStmts() << ")";
-
-  if (Printer.getPrinted() != ExpectedPrinted)
-    return ::testing::AssertionFailure()
-      << "Expected \"" << ExpectedPrinted << "\", "
-         "got \"" << Printer.getPrinted() << "\"";
-
-  return ::testing::AssertionSuccess();
-}
-
-::testing::AssertionResult PrintedStmtCXX98Matches(
-                                              StringRef Code,
-                                              StringRef ContainingFunction,
-                                              StringRef ExpectedPrinted) {
-  std::vector<std::string> Args;
-  Args.push_back("-std=c++98");
-  Args.push_back("-Wno-unused-value");
-  return PrintedStmtMatches(Code,
-                            Args,
-                            functionDecl(hasName(ContainingFunction),
-                                         has(compoundStmt(has(stmt().bind("id"))))),
-                            ExpectedPrinted);
-}
-
-::testing::AssertionResult PrintedStmtMSMatches(
-                                              StringRef Code,
-                                              StringRef ContainingFunction,
-                                              StringRef ExpectedPrinted) {
-  std::vector<std::string> Args;
-  Args.push_back("-std=c++98");
-  Args.push_back("-fms-extensions");
-  Args.push_back("-Wno-unused-value");
-  return PrintedStmtMatches(Code,
-                            Args,
-                            functionDecl(hasName(ContainingFunction),
-                                         has(compoundStmt(has(stmt().bind("id"))))),
-                            ExpectedPrinted);
-}
-
-} // unnamed namespace
-
-TEST(StmtPrinter, TestIntegerLiteral) {
-  ASSERT_TRUE(PrintedStmtCXX98Matches(
-    "void A() {"
-    "  1, -1, 1U, 1u,"
-    "  1L, 1l, -1L, 1UL, 1ul,"
-    "  1LL, -1LL, 1ULL;"
-    "}",
-    "A",
-    "1 , -1 , 1U , 1U , "
-    "1L , 1L , -1L , 1UL , 1UL , "
-    "1LL , -1LL , 1ULL"));
-    // Should be: with semicolon
-}
-
-TEST(StmtPrinter, TestMSIntegerLiteral) {
-  ASSERT_TRUE(PrintedStmtMSMatches(
-    "void A() {"
-    "  1i8, -1i8, 1ui8, "
-    "  1i16, -1i16, 1ui16, "
-    "  1i32, -1i32, 1ui32, "
-    "  1i64, -1i64, 1ui64;"
-    "}",
-    "A",
-    "1 , -1 , 1U , "
-    "1 , -1 , 1U , "
-    "1L , -1L , 1UL , "
-    "1LL , -1LL , 1ULL"));
-    // Should be: with semicolon
-}
-
-TEST(StmtPrinter, TestFloatingPointLiteral) {
-  ASSERT_TRUE(PrintedStmtCXX98Matches(
-    "void A() { 1.0f, -1.0f, 1.0, -1.0, 1.0l, -1.0l; }",
-    "A",
-    "1.F , -1.F , 1. , -1. , 1.L , -1.L"));
-    // Should be: with semicolon
-}

Modified: trunk/contrib/llvm/tools/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/ASTMatchers/ASTMatchersTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/ASTMatchers/ASTMatchersTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3906 +0,0 @@
-//===- unittest/Tooling/ASTMatchersTest.cpp - AST matcher unit tests ------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "ASTMatchersTest.h"
-#include "clang/AST/PrettyPrinter.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/ASTMatchers/ASTMatchers.h"
-#include "clang/Tooling/Tooling.h"
-#include "gtest/gtest.h"
-
-namespace clang {
-namespace ast_matchers {
-
-#if GTEST_HAS_DEATH_TEST
-TEST(HasNameDeathTest, DiesOnEmptyName) {
-  ASSERT_DEBUG_DEATH({
-    DeclarationMatcher HasEmptyName = recordDecl(hasName(""));
-    EXPECT_TRUE(notMatches("class X {};", HasEmptyName));
-  }, "");
-}
-
-TEST(HasNameDeathTest, DiesOnEmptyPattern) {
-  ASSERT_DEBUG_DEATH({
-      DeclarationMatcher HasEmptyName = recordDecl(matchesName(""));
-      EXPECT_TRUE(notMatches("class X {};", HasEmptyName));
-    }, "");
-}
-
-TEST(IsDerivedFromDeathTest, DiesOnEmptyBaseName) {
-  ASSERT_DEBUG_DEATH({
-    DeclarationMatcher IsDerivedFromEmpty = recordDecl(isDerivedFrom(""));
-    EXPECT_TRUE(notMatches("class X {};", IsDerivedFromEmpty));
-  }, "");
-}
-#endif
-
-TEST(Decl, MatchesDeclarations) {
-  EXPECT_TRUE(notMatches("", decl(usingDecl())));
-  EXPECT_TRUE(matches("namespace x { class X {}; } using x::X;",
-                      decl(usingDecl())));
-}
-
-TEST(NameableDeclaration, MatchesVariousDecls) {
-  DeclarationMatcher NamedX = namedDecl(hasName("X"));
-  EXPECT_TRUE(matches("typedef int X;", NamedX));
-  EXPECT_TRUE(matches("int X;", NamedX));
-  EXPECT_TRUE(matches("class foo { virtual void X(); };", NamedX));
-  EXPECT_TRUE(matches("void foo() try { } catch(int X) { }", NamedX));
-  EXPECT_TRUE(matches("void foo() { int X; }", NamedX));
-  EXPECT_TRUE(matches("namespace X { }", NamedX));
-  EXPECT_TRUE(matches("enum X { A, B, C };", NamedX));
-
-  EXPECT_TRUE(notMatches("#define X 1", NamedX));
-}
-
-TEST(NameableDeclaration, REMatchesVariousDecls) {
-  DeclarationMatcher NamedX = namedDecl(matchesName("::X"));
-  EXPECT_TRUE(matches("typedef int Xa;", NamedX));
-  EXPECT_TRUE(matches("int Xb;", NamedX));
-  EXPECT_TRUE(matches("class foo { virtual void Xc(); };", NamedX));
-  EXPECT_TRUE(matches("void foo() try { } catch(int Xdef) { }", NamedX));
-  EXPECT_TRUE(matches("void foo() { int Xgh; }", NamedX));
-  EXPECT_TRUE(matches("namespace Xij { }", NamedX));
-  EXPECT_TRUE(matches("enum X { A, B, C };", NamedX));
-
-  EXPECT_TRUE(notMatches("#define Xkl 1", NamedX));
-
-  DeclarationMatcher StartsWithNo = namedDecl(matchesName("::no"));
-  EXPECT_TRUE(matches("int no_foo;", StartsWithNo));
-  EXPECT_TRUE(matches("class foo { virtual void nobody(); };", StartsWithNo));
-
-  DeclarationMatcher Abc = namedDecl(matchesName("a.*b.*c"));
-  EXPECT_TRUE(matches("int abc;", Abc));
-  EXPECT_TRUE(matches("int aFOObBARc;", Abc));
-  EXPECT_TRUE(notMatches("int cab;", Abc));
-  EXPECT_TRUE(matches("int cabc;", Abc));
-
-  DeclarationMatcher StartsWithK = namedDecl(matchesName(":k[^:]*$"));
-  EXPECT_TRUE(matches("int k;", StartsWithK));
-  EXPECT_TRUE(matches("int kAbc;", StartsWithK));
-  EXPECT_TRUE(matches("namespace x { int kTest; }", StartsWithK));
-  EXPECT_TRUE(matches("class C { int k; };", StartsWithK));
-  EXPECT_TRUE(notMatches("class C { int ckc; };", StartsWithK));
-}
-
-TEST(DeclarationMatcher, MatchClass) {
-  DeclarationMatcher ClassMatcher(recordDecl());
-#if !defined(_MSC_VER)
-  EXPECT_FALSE(matches("", ClassMatcher));
-#else
-  // Matches class type_info.
-  EXPECT_TRUE(matches("", ClassMatcher));
-#endif
-
-  DeclarationMatcher ClassX = recordDecl(recordDecl(hasName("X")));
-  EXPECT_TRUE(matches("class X;", ClassX));
-  EXPECT_TRUE(matches("class X {};", ClassX));
-  EXPECT_TRUE(matches("template<class T> class X {};", ClassX));
-  EXPECT_TRUE(notMatches("", ClassX));
-}
-
-TEST(DeclarationMatcher, ClassIsDerived) {
-  DeclarationMatcher IsDerivedFromX = recordDecl(isDerivedFrom("X"));
-
-  EXPECT_TRUE(matches("class X {}; class Y : public X {};", IsDerivedFromX));
-  EXPECT_TRUE(notMatches("class X {};", IsDerivedFromX));
-  EXPECT_TRUE(notMatches("class X;", IsDerivedFromX));
-  EXPECT_TRUE(notMatches("class Y;", IsDerivedFromX));
-  EXPECT_TRUE(notMatches("", IsDerivedFromX));
-
-  DeclarationMatcher IsAX = recordDecl(isSameOrDerivedFrom("X"));
-
-  EXPECT_TRUE(matches("class X {}; class Y : public X {};", IsAX));
-  EXPECT_TRUE(matches("class X {};", IsAX));
-  EXPECT_TRUE(matches("class X;", IsAX));
-  EXPECT_TRUE(notMatches("class Y;", IsAX));
-  EXPECT_TRUE(notMatches("", IsAX));
-
-  DeclarationMatcher ZIsDerivedFromX =
-      recordDecl(hasName("Z"), isDerivedFrom("X"));
-  EXPECT_TRUE(
-      matches("class X {}; class Y : public X {}; class Z : public Y {};",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class X {};"
-              "template<class T> class Y : public X {};"
-              "class Z : public Y<int> {};", ZIsDerivedFromX));
-  EXPECT_TRUE(matches("class X {}; template<class T> class Z : public X {};",
-                      ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template<class T> class X {}; "
-              "template<class T> class Z : public X<T> {};",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template<class T, class U=T> class X {}; "
-              "template<class T> class Z : public X<T> {};",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("template<class X> class A { class Z : public X {}; };",
-                 ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template<class X> class A { public: class Z : public X {}; }; "
-              "class X{}; void y() { A<X>::Z z; }", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template <class T> class X {}; "
-              "template<class Y> class A { class Z : public X<Y> {}; };",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("template<template<class T> class X> class A { "
-                 "  class Z : public X<int> {}; };", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template<template<class T> class X> class A { "
-              "  public: class Z : public X<int> {}; }; "
-              "template<class T> class X {}; void y() { A<X>::Z z; }",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("template<class X> class A { class Z : public X::D {}; };",
-                 ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template<class X> class A { public: "
-              "  class Z : public X::D {}; }; "
-              "class Y { public: class X {}; typedef X D; }; "
-              "void y() { A<Y>::Z z; }", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class X {}; typedef X Y; class Z : public Y {};",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template<class T> class Y { typedef typename T::U X; "
-              "  class Z : public X {}; };", ZIsDerivedFromX));
-  EXPECT_TRUE(matches("class X {}; class Z : public ::X {};",
-                      ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("template<class T> class X {}; "
-                "template<class T> class A { class Z : public X<T>::D {}; };",
-                ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template<class T> class X { public: typedef X<T> D; }; "
-              "template<class T> class A { public: "
-              "  class Z : public X<T>::D {}; }; void y() { A<int>::Z z; }",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("template<class X> class A { class Z : public X::D::E {}; };",
-                 ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class X {}; typedef X V; typedef V W; class Z : public W {};",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class X {}; class Y : public X {}; "
-              "typedef Y V; typedef V W; class Z : public W {};",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template<class T, class U> class X {}; "
-              "template<class T> class A { class Z : public X<T, int> {}; };",
-              ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("template<class X> class D { typedef X A; typedef A B; "
-                 "  typedef B C; class Z : public C {}; };",
-                 ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class X {}; typedef X A; typedef A B; "
-              "class Z : public B {};", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class X {}; typedef X A; typedef A B; typedef B C; "
-              "class Z : public C {};", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class U {}; typedef U X; typedef X V; "
-              "class Z : public V {};", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class Base {}; typedef Base X; "
-              "class Z : public Base {};", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class Base {}; typedef Base Base2; typedef Base2 X; "
-              "class Z : public Base {};", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("class Base {}; class Base2 {}; typedef Base2 X; "
-                 "class Z : public Base {};", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      matches("class A {}; typedef A X; typedef A Y; "
-              "class Z : public Y {};", ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("template <typename T> class Z;"
-                 "template <> class Z<void> {};"
-                 "template <typename T> class Z : public Z<void> {};",
-                 IsDerivedFromX));
-  EXPECT_TRUE(
-      matches("template <typename T> class X;"
-              "template <> class X<void> {};"
-              "template <typename T> class X : public X<void> {};",
-              IsDerivedFromX));
-  EXPECT_TRUE(matches(
-      "class X {};"
-      "template <typename T> class Z;"
-      "template <> class Z<void> {};"
-      "template <typename T> class Z : public Z<void>, public X {};",
-      ZIsDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("template<int> struct X;"
-                 "template<int i> struct X : public X<i-1> {};",
-                 recordDecl(isDerivedFrom(recordDecl(hasName("Some"))))));
-  EXPECT_TRUE(matches(
-      "struct A {};"
-      "template<int> struct X;"
-      "template<int i> struct X : public X<i-1> {};"
-      "template<> struct X<0> : public A {};"
-      "struct B : public X<42> {};",
-      recordDecl(hasName("B"), isDerivedFrom(recordDecl(hasName("A"))))));
-
-  // FIXME: Once we have better matchers for template type matching,
-  // get rid of the Variable(...) matching and match the right template
-  // declarations directly.
-  const char *RecursiveTemplateOneParameter =
-      "class Base1 {}; class Base2 {};"
-      "template <typename T> class Z;"
-      "template <> class Z<void> : public Base1 {};"
-      "template <> class Z<int> : public Base2 {};"
-      "template <> class Z<float> : public Z<void> {};"
-      "template <> class Z<double> : public Z<int> {};"
-      "template <typename T> class Z : public Z<float>, public Z<double> {};"
-      "void f() { Z<float> z_float; Z<double> z_double; Z<char> z_char; }";
-  EXPECT_TRUE(matches(
-      RecursiveTemplateOneParameter,
-      varDecl(hasName("z_float"),
-              hasInitializer(hasType(recordDecl(isDerivedFrom("Base1")))))));
-  EXPECT_TRUE(notMatches(
-      RecursiveTemplateOneParameter,
-      varDecl(hasName("z_float"),
-              hasInitializer(hasType(recordDecl(isDerivedFrom("Base2")))))));
-  EXPECT_TRUE(matches(
-      RecursiveTemplateOneParameter,
-      varDecl(hasName("z_char"),
-              hasInitializer(hasType(recordDecl(isDerivedFrom("Base1"),
-                                                isDerivedFrom("Base2")))))));
-
-  const char *RecursiveTemplateTwoParameters =
-      "class Base1 {}; class Base2 {};"
-      "template <typename T1, typename T2> class Z;"
-      "template <typename T> class Z<void, T> : public Base1 {};"
-      "template <typename T> class Z<int, T> : public Base2 {};"
-      "template <typename T> class Z<float, T> : public Z<void, T> {};"
-      "template <typename T> class Z<double, T> : public Z<int, T> {};"
-      "template <typename T1, typename T2> class Z : "
-      "    public Z<float, T2>, public Z<double, T2> {};"
-      "void f() { Z<float, void> z_float; Z<double, void> z_double; "
-      "           Z<char, void> z_char; }";
-  EXPECT_TRUE(matches(
-      RecursiveTemplateTwoParameters,
-      varDecl(hasName("z_float"),
-              hasInitializer(hasType(recordDecl(isDerivedFrom("Base1")))))));
-  EXPECT_TRUE(notMatches(
-      RecursiveTemplateTwoParameters,
-      varDecl(hasName("z_float"),
-              hasInitializer(hasType(recordDecl(isDerivedFrom("Base2")))))));
-  EXPECT_TRUE(matches(
-      RecursiveTemplateTwoParameters,
-      varDecl(hasName("z_char"),
-              hasInitializer(hasType(recordDecl(isDerivedFrom("Base1"),
-                                                isDerivedFrom("Base2")))))));
-  EXPECT_TRUE(matches(
-      "namespace ns { class X {}; class Y : public X {}; }",
-      recordDecl(isDerivedFrom("::ns::X"))));
-  EXPECT_TRUE(notMatches(
-      "class X {}; class Y : public X {};",
-      recordDecl(isDerivedFrom("::ns::X"))));
-
-  EXPECT_TRUE(matches(
-      "class X {}; class Y : public X {};",
-      recordDecl(isDerivedFrom(recordDecl(hasName("X")).bind("test")))));
-}
-
-TEST(DeclarationMatcher, hasMethod) {
-  EXPECT_TRUE(matches("class A { void func(); };",
-                      recordDecl(hasMethod(hasName("func")))));
-  EXPECT_TRUE(notMatches("class A { void func(); };",
-                         recordDecl(hasMethod(isPublic()))));
-}
-
-TEST(DeclarationMatcher, ClassDerivedFromDependentTemplateSpecialization) {
-  EXPECT_TRUE(matches(
-     "template <typename T> struct A {"
-     "  template <typename T2> struct F {};"
-     "};"
-     "template <typename T> struct B : A<T>::template F<T> {};"
-     "B<int> b;",
-     recordDecl(hasName("B"), isDerivedFrom(recordDecl()))));
-}
-
-TEST(DeclarationMatcher, hasDeclContext) {
-  EXPECT_TRUE(matches(
-      "namespace N {"
-      "  namespace M {"
-      "    class D {};"
-      "  }"
-      "}",
-      recordDecl(hasDeclContext(namespaceDecl(hasName("M"))))));
-  EXPECT_TRUE(notMatches(
-      "namespace N {"
-      "  namespace M {"
-      "    class D {};"
-      "  }"
-      "}",
-      recordDecl(hasDeclContext(namespaceDecl(hasName("N"))))));
-
-  EXPECT_TRUE(matches("namespace {"
-                      "  namespace M {"
-                      "    class D {};"
-                      "  }"
-                      "}",
-                      recordDecl(hasDeclContext(namespaceDecl(
-                          hasName("M"), hasDeclContext(namespaceDecl()))))));
-}
-
-TEST(ClassTemplate, DoesNotMatchClass) {
-  DeclarationMatcher ClassX = classTemplateDecl(hasName("X"));
-  EXPECT_TRUE(notMatches("class X;", ClassX));
-  EXPECT_TRUE(notMatches("class X {};", ClassX));
-}
-
-TEST(ClassTemplate, MatchesClassTemplate) {
-  DeclarationMatcher ClassX = classTemplateDecl(hasName("X"));
-  EXPECT_TRUE(matches("template<typename T> class X {};", ClassX));
-  EXPECT_TRUE(matches("class Z { template<class T> class X {}; };", ClassX));
-}
-
-TEST(ClassTemplate, DoesNotMatchClassTemplateExplicitSpecialization) {
-  EXPECT_TRUE(notMatches("template<typename T> class X { };"
-                         "template<> class X<int> { int a; };",
-              classTemplateDecl(hasName("X"),
-                                hasDescendant(fieldDecl(hasName("a"))))));
-}
-
-TEST(ClassTemplate, DoesNotMatchClassTemplatePartialSpecialization) {
-  EXPECT_TRUE(notMatches("template<typename T, typename U> class X { };"
-                         "template<typename T> class X<T, int> { int a; };",
-              classTemplateDecl(hasName("X"),
-                                hasDescendant(fieldDecl(hasName("a"))))));
-}
-
-TEST(AllOf, AllOverloadsWork) {
-  const char Program[] =
-      "struct T { };"
-      "int f(int, T*, int, int);"
-      "void g(int x) { T t; f(x, &t, 3, 4); }";
-  EXPECT_TRUE(matches(Program,
-      callExpr(allOf(callee(functionDecl(hasName("f"))),
-                     hasArgument(0, declRefExpr(to(varDecl())))))));
-  EXPECT_TRUE(matches(Program,
-      callExpr(allOf(callee(functionDecl(hasName("f"))),
-                     hasArgument(0, declRefExpr(to(varDecl()))),
-                     hasArgument(1, hasType(pointsTo(
-                                        recordDecl(hasName("T")))))))));
-  EXPECT_TRUE(matches(Program,
-      callExpr(allOf(callee(functionDecl(hasName("f"))),
-                     hasArgument(0, declRefExpr(to(varDecl()))),
-                     hasArgument(1, hasType(pointsTo(
-                                        recordDecl(hasName("T"))))),
-                     hasArgument(2, integerLiteral(equals(3)))))));
-  EXPECT_TRUE(matches(Program,
-      callExpr(allOf(callee(functionDecl(hasName("f"))),
-                     hasArgument(0, declRefExpr(to(varDecl()))),
-                     hasArgument(1, hasType(pointsTo(
-                                        recordDecl(hasName("T"))))),
-                     hasArgument(2, integerLiteral(equals(3))),
-                     hasArgument(3, integerLiteral(equals(4)))))));
-}
-
-TEST(DeclarationMatcher, MatchAnyOf) {
-  DeclarationMatcher YOrZDerivedFromX =
-      recordDecl(anyOf(hasName("Y"), allOf(isDerivedFrom("X"), hasName("Z"))));
-  EXPECT_TRUE(
-      matches("class X {}; class Z : public X {};", YOrZDerivedFromX));
-  EXPECT_TRUE(matches("class Y {};", YOrZDerivedFromX));
-  EXPECT_TRUE(
-      notMatches("class X {}; class W : public X {};", YOrZDerivedFromX));
-  EXPECT_TRUE(notMatches("class Z {};", YOrZDerivedFromX));
-
-  DeclarationMatcher XOrYOrZOrU =
-      recordDecl(anyOf(hasName("X"), hasName("Y"), hasName("Z"), hasName("U")));
-  EXPECT_TRUE(matches("class X {};", XOrYOrZOrU));
-  EXPECT_TRUE(notMatches("class V {};", XOrYOrZOrU));
-
-  DeclarationMatcher XOrYOrZOrUOrV =
-      recordDecl(anyOf(hasName("X"), hasName("Y"), hasName("Z"), hasName("U"),
-                       hasName("V")));
-  EXPECT_TRUE(matches("class X {};", XOrYOrZOrUOrV));
-  EXPECT_TRUE(matches("class Y {};", XOrYOrZOrUOrV));
-  EXPECT_TRUE(matches("class Z {};", XOrYOrZOrUOrV));
-  EXPECT_TRUE(matches("class U {};", XOrYOrZOrUOrV));
-  EXPECT_TRUE(matches("class V {};", XOrYOrZOrUOrV));
-  EXPECT_TRUE(notMatches("class A {};", XOrYOrZOrUOrV));
-}
-
-TEST(DeclarationMatcher, MatchHas) {
-  DeclarationMatcher HasClassX = recordDecl(has(recordDecl(hasName("X"))));
-  EXPECT_TRUE(matches("class Y { class X {}; };", HasClassX));
-  EXPECT_TRUE(matches("class X {};", HasClassX));
-
-  DeclarationMatcher YHasClassX =
-      recordDecl(hasName("Y"), has(recordDecl(hasName("X"))));
-  EXPECT_TRUE(matches("class Y { class X {}; };", YHasClassX));
-  EXPECT_TRUE(notMatches("class X {};", YHasClassX));
-  EXPECT_TRUE(
-      notMatches("class Y { class Z { class X {}; }; };", YHasClassX));
-}
-
-TEST(DeclarationMatcher, MatchHasRecursiveAllOf) {
-  DeclarationMatcher Recursive =
-    recordDecl(
-      has(recordDecl(
-        has(recordDecl(hasName("X"))),
-        has(recordDecl(hasName("Y"))),
-        hasName("Z"))),
-      has(recordDecl(
-        has(recordDecl(hasName("A"))),
-        has(recordDecl(hasName("B"))),
-        hasName("C"))),
-      hasName("F"));
-
-  EXPECT_TRUE(matches(
-      "class F {"
-      "  class Z {"
-      "    class X {};"
-      "    class Y {};"
-      "  };"
-      "  class C {"
-      "    class A {};"
-      "    class B {};"
-      "  };"
-      "};", Recursive));
-
-  EXPECT_TRUE(matches(
-      "class F {"
-      "  class Z {"
-      "    class A {};"
-      "    class X {};"
-      "    class Y {};"
-      "  };"
-      "  class C {"
-      "    class X {};"
-      "    class A {};"
-      "    class B {};"
-      "  };"
-      "};", Recursive));
-
-  EXPECT_TRUE(matches(
-      "class O1 {"
-      "  class O2 {"
-      "    class F {"
-      "      class Z {"
-      "        class A {};"
-      "        class X {};"
-      "        class Y {};"
-      "      };"
-      "      class C {"
-      "        class X {};"
-      "        class A {};"
-      "        class B {};"
-      "      };"
-      "    };"
-      "  };"
-      "};", Recursive));
-}
-
-TEST(DeclarationMatcher, MatchHasRecursiveAnyOf) {
-  DeclarationMatcher Recursive =
-      recordDecl(
-          anyOf(
-              has(recordDecl(
-                  anyOf(
-                      has(recordDecl(
-                          hasName("X"))),
-                      has(recordDecl(
-                          hasName("Y"))),
-                      hasName("Z")))),
-              has(recordDecl(
-                  anyOf(
-                      hasName("C"),
-                      has(recordDecl(
-                          hasName("A"))),
-                      has(recordDecl(
-                          hasName("B")))))),
-              hasName("F")));
-
-  EXPECT_TRUE(matches("class F {};", Recursive));
-  EXPECT_TRUE(matches("class Z {};", Recursive));
-  EXPECT_TRUE(matches("class C {};", Recursive));
-  EXPECT_TRUE(matches("class M { class N { class X {}; }; };", Recursive));
-  EXPECT_TRUE(matches("class M { class N { class B {}; }; };", Recursive));
-  EXPECT_TRUE(
-      matches("class O1 { class O2 {"
-              "  class M { class N { class B {}; }; }; "
-              "}; };", Recursive));
-}
-
-TEST(DeclarationMatcher, MatchNot) {
-  DeclarationMatcher NotClassX =
-      recordDecl(
-          isDerivedFrom("Y"),
-          unless(hasName("X")));
-  EXPECT_TRUE(notMatches("", NotClassX));
-  EXPECT_TRUE(notMatches("class Y {};", NotClassX));
-  EXPECT_TRUE(matches("class Y {}; class Z : public Y {};", NotClassX));
-  EXPECT_TRUE(notMatches("class Y {}; class X : public Y {};", NotClassX));
-  EXPECT_TRUE(
-      notMatches("class Y {}; class Z {}; class X : public Y {};",
-                 NotClassX));
-
-  DeclarationMatcher ClassXHasNotClassY =
-      recordDecl(
-          hasName("X"),
-          has(recordDecl(hasName("Z"))),
-          unless(
-              has(recordDecl(hasName("Y")))));
-  EXPECT_TRUE(matches("class X { class Z {}; };", ClassXHasNotClassY));
-  EXPECT_TRUE(notMatches("class X { class Y {}; class Z {}; };",
-                         ClassXHasNotClassY));
-}
-
-TEST(DeclarationMatcher, HasDescendant) {
-  DeclarationMatcher ZDescendantClassX =
-      recordDecl(
-          hasDescendant(recordDecl(hasName("X"))),
-          hasName("Z"));
-  EXPECT_TRUE(matches("class Z { class X {}; };", ZDescendantClassX));
-  EXPECT_TRUE(
-      matches("class Z { class Y { class X {}; }; };", ZDescendantClassX));
-  EXPECT_TRUE(
-      matches("class Z { class A { class Y { class X {}; }; }; };",
-              ZDescendantClassX));
-  EXPECT_TRUE(
-      matches("class Z { class A { class B { class Y { class X {}; }; }; }; };",
-              ZDescendantClassX));
-  EXPECT_TRUE(notMatches("class Z {};", ZDescendantClassX));
-
-  DeclarationMatcher ZDescendantClassXHasClassY =
-      recordDecl(
-          hasDescendant(recordDecl(has(recordDecl(hasName("Y"))),
-                              hasName("X"))),
-          hasName("Z"));
-  EXPECT_TRUE(matches("class Z { class X { class Y {}; }; };",
-              ZDescendantClassXHasClassY));
-  EXPECT_TRUE(
-      matches("class Z { class A { class B { class X { class Y {}; }; }; }; };",
-              ZDescendantClassXHasClassY));
-  EXPECT_TRUE(notMatches(
-      "class Z {"
-      "  class A {"
-      "    class B {"
-      "      class X {"
-      "        class C {"
-      "          class Y {};"
-      "        };"
-      "      };"
-      "    }; "
-      "  };"
-      "};", ZDescendantClassXHasClassY));
-
-  DeclarationMatcher ZDescendantClassXDescendantClassY =
-      recordDecl(
-          hasDescendant(recordDecl(hasDescendant(recordDecl(hasName("Y"))),
-                                   hasName("X"))),
-          hasName("Z"));
-  EXPECT_TRUE(
-      matches("class Z { class A { class X { class B { class Y {}; }; }; }; };",
-              ZDescendantClassXDescendantClassY));
-  EXPECT_TRUE(matches(
-      "class Z {"
-      "  class A {"
-      "    class X {"
-      "      class B {"
-      "        class Y {};"
-      "      };"
-      "      class Y {};"
-      "    };"
-      "  };"
-      "};", ZDescendantClassXDescendantClassY));
-}
-
-// Implements a run method that returns whether BoundNodes contains a
-// Decl bound to Id that can be dynamically cast to T.
-// Optionally checks that the check succeeded a specific number of times.
-template <typename T>
-class VerifyIdIsBoundTo : public BoundNodesCallback {
-public:
-  // Create an object that checks that a node of type \c T was bound to \c Id.
-  // Does not check for a certain number of matches.
-  explicit VerifyIdIsBoundTo(llvm::StringRef Id)
-    : Id(Id), ExpectedCount(-1), Count(0) {}
-
-  // Create an object that checks that a node of type \c T was bound to \c Id.
-  // Checks that there were exactly \c ExpectedCount matches.
-  VerifyIdIsBoundTo(llvm::StringRef Id, int ExpectedCount)
-    : Id(Id), ExpectedCount(ExpectedCount), Count(0) {}
-
-  // Create an object that checks that a node of type \c T was bound to \c Id.
-  // Checks that there was exactly one match with the name \c ExpectedName.
-  // Note that \c T must be a NamedDecl for this to work.
-  VerifyIdIsBoundTo(llvm::StringRef Id, llvm::StringRef ExpectedName,
-                    int ExpectedCount = 1)
-      : Id(Id), ExpectedCount(ExpectedCount), Count(0),
-        ExpectedName(ExpectedName) {}
-
-  ~VerifyIdIsBoundTo() {
-    if (ExpectedCount != -1)
-      EXPECT_EQ(ExpectedCount, Count);
-    if (!ExpectedName.empty())
-      EXPECT_EQ(ExpectedName, Name);
-  }
-
-  virtual bool run(const BoundNodes *Nodes) {
-    if (Nodes->getNodeAs<T>(Id)) {
-      ++Count;
-      if (const NamedDecl *Named = Nodes->getNodeAs<NamedDecl>(Id)) {
-        Name = Named->getNameAsString();
-      } else if (const NestedNameSpecifier *NNS =
-                 Nodes->getNodeAs<NestedNameSpecifier>(Id)) {
-        llvm::raw_string_ostream OS(Name);
-        NNS->print(OS, PrintingPolicy(LangOptions()));
-      }
-      return true;
-    }
-    return false;
-  }
-
-  virtual bool run(const BoundNodes *Nodes, ASTContext *Context) {
-    return run(Nodes);
-  }
-
-private:
-  const std::string Id;
-  const int ExpectedCount;
-  int Count;
-  const std::string ExpectedName;
-  std::string Name;
-};
-
-TEST(HasDescendant, MatchesDescendantTypes) {
-  EXPECT_TRUE(matches("void f() { int i = 3; }",
-                      decl(hasDescendant(loc(builtinType())))));
-  EXPECT_TRUE(matches("void f() { int i = 3; }",
-                      stmt(hasDescendant(builtinType()))));
-
-  EXPECT_TRUE(matches("void f() { int i = 3; }",
-                      stmt(hasDescendant(loc(builtinType())))));
-  EXPECT_TRUE(matches("void f() { int i = 3; }",
-                      stmt(hasDescendant(qualType(builtinType())))));
-
-  EXPECT_TRUE(notMatches("void f() { float f = 2.0f; }",
-                         stmt(hasDescendant(isInteger()))));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "void f() { int a; float c; int d; int e; }",
-      functionDecl(forEachDescendant(
-          varDecl(hasDescendant(isInteger())).bind("x"))),
-      new VerifyIdIsBoundTo<Decl>("x", 3)));
-}
-
-TEST(HasDescendant, MatchesDescendantsOfTypes) {
-  EXPECT_TRUE(matches("void f() { int*** i; }",
-                      qualType(hasDescendant(builtinType()))));
-  EXPECT_TRUE(matches("void f() { int*** i; }",
-                      qualType(hasDescendant(
-                          pointerType(pointee(builtinType()))))));
-  EXPECT_TRUE(matches("void f() { int*** i; }",
-                      typeLoc(hasDescendant(loc(builtinType())))));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "void f() { int*** i; }",
-      qualType(asString("int ***"), forEachDescendant(pointerType().bind("x"))),
-      new VerifyIdIsBoundTo<Type>("x", 2)));
-}
-
-TEST(Has, MatchesChildrenOfTypes) {
-  EXPECT_TRUE(matches("int i;",
-                      varDecl(hasName("i"), has(isInteger()))));
-  EXPECT_TRUE(notMatches("int** i;",
-                         varDecl(hasName("i"), has(isInteger()))));
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "int (*f)(float, int);",
-      qualType(functionType(), forEach(qualType(isInteger()).bind("x"))),
-      new VerifyIdIsBoundTo<QualType>("x", 2)));
-}
-
-TEST(Has, MatchesChildTypes) {
-  EXPECT_TRUE(matches(
-      "int* i;",
-      varDecl(hasName("i"), hasType(qualType(has(builtinType()))))));
-  EXPECT_TRUE(notMatches(
-      "int* i;",
-      varDecl(hasName("i"), hasType(qualType(has(pointerType()))))));
-}
-
-TEST(Enum, DoesNotMatchClasses) {
-  EXPECT_TRUE(notMatches("class X {};", enumDecl(hasName("X"))));
-}
-
-TEST(Enum, MatchesEnums) {
-  EXPECT_TRUE(matches("enum X {};", enumDecl(hasName("X"))));
-}
-
-TEST(EnumConstant, Matches) {
-  DeclarationMatcher Matcher = enumConstantDecl(hasName("A"));
-  EXPECT_TRUE(matches("enum X{ A };", Matcher));
-  EXPECT_TRUE(notMatches("enum X{ B };", Matcher));
-  EXPECT_TRUE(notMatches("enum X {};", Matcher));
-}
-
-TEST(StatementMatcher, Has) {
-  StatementMatcher HasVariableI =
-      expr(hasType(pointsTo(recordDecl(hasName("X")))),
-           has(declRefExpr(to(varDecl(hasName("i"))))));
-
-  EXPECT_TRUE(matches(
-      "class X; X *x(int); void c() { int i; x(i); }", HasVariableI));
-  EXPECT_TRUE(notMatches(
-      "class X; X *x(int); void c() { int i; x(42); }", HasVariableI));
-}
-
-TEST(StatementMatcher, HasDescendant) {
-  StatementMatcher HasDescendantVariableI =
-      expr(hasType(pointsTo(recordDecl(hasName("X")))),
-           hasDescendant(declRefExpr(to(varDecl(hasName("i"))))));
-
-  EXPECT_TRUE(matches(
-      "class X; X *x(bool); bool b(int); void c() { int i; x(b(i)); }",
-      HasDescendantVariableI));
-  EXPECT_TRUE(notMatches(
-      "class X; X *x(bool); bool b(int); void c() { int i; x(b(42)); }",
-      HasDescendantVariableI));
-}
-
-TEST(TypeMatcher, MatchesClassType) {
-  TypeMatcher TypeA = hasDeclaration(recordDecl(hasName("A")));
-
-  EXPECT_TRUE(matches("class A { public: A *a; };", TypeA));
-  EXPECT_TRUE(notMatches("class A {};", TypeA));
-
-  TypeMatcher TypeDerivedFromA = hasDeclaration(recordDecl(isDerivedFrom("A")));
-
-  EXPECT_TRUE(matches("class A {}; class B : public A { public: B *b; };",
-              TypeDerivedFromA));
-  EXPECT_TRUE(notMatches("class A {};", TypeA));
-
-  TypeMatcher TypeAHasClassB = hasDeclaration(
-      recordDecl(hasName("A"), has(recordDecl(hasName("B")))));
-
-  EXPECT_TRUE(
-      matches("class A { public: A *a; class B {}; };", TypeAHasClassB));
-}
-
-TEST(Matcher, BindMatchedNodes) {
-  DeclarationMatcher ClassX = has(recordDecl(hasName("::X")).bind("x"));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue("class X {};",
-      ClassX, new VerifyIdIsBoundTo<CXXRecordDecl>("x")));
-
-  EXPECT_TRUE(matchAndVerifyResultFalse("class X {};",
-      ClassX, new VerifyIdIsBoundTo<CXXRecordDecl>("other-id")));
-
-  TypeMatcher TypeAHasClassB = hasDeclaration(
-      recordDecl(hasName("A"), has(recordDecl(hasName("B")).bind("b"))));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue("class A { public: A *a; class B {}; };",
-      TypeAHasClassB,
-      new VerifyIdIsBoundTo<Decl>("b")));
-
-  StatementMatcher MethodX =
-      callExpr(callee(methodDecl(hasName("x")))).bind("x");
-
-  EXPECT_TRUE(matchAndVerifyResultTrue("class A { void x() { x(); } };",
-      MethodX,
-      new VerifyIdIsBoundTo<CXXMemberCallExpr>("x")));
-}
-
-TEST(Matcher, BindTheSameNameInAlternatives) {
-  StatementMatcher matcher = anyOf(
-      binaryOperator(hasOperatorName("+"),
-                     hasLHS(expr().bind("x")),
-                     hasRHS(integerLiteral(equals(0)))),
-      binaryOperator(hasOperatorName("+"),
-                     hasLHS(integerLiteral(equals(0))),
-                     hasRHS(expr().bind("x"))));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      // The first branch of the matcher binds x to 0 but then fails.
-      // The second branch binds x to f() and succeeds.
-      "int f() { return 0 + f(); }",
-      matcher,
-      new VerifyIdIsBoundTo<CallExpr>("x")));
-}
-
-TEST(Matcher, BindsIDForMemoizedResults) {
-  // Using the same matcher in two match expressions will make memoization
-  // kick in.
-  DeclarationMatcher ClassX = recordDecl(hasName("X")).bind("x");
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class A { class B { class X {}; }; };",
-      DeclarationMatcher(anyOf(
-          recordDecl(hasName("A"), hasDescendant(ClassX)),
-          recordDecl(hasName("B"), hasDescendant(ClassX)))),
-      new VerifyIdIsBoundTo<Decl>("x", 2)));
-}
-
-TEST(HasDeclaration, HasDeclarationOfEnumType) {
-  EXPECT_TRUE(matches("enum X {}; void y(X *x) { x; }",
-                      expr(hasType(pointsTo(
-                          qualType(hasDeclaration(enumDecl(hasName("X")))))))));
-}
-
-TEST(HasDeclaration, HasGetDeclTraitTest) {
-  EXPECT_TRUE(internal::has_getDecl<TypedefType>::value);
-  EXPECT_TRUE(internal::has_getDecl<RecordType>::value);
-  EXPECT_FALSE(internal::has_getDecl<TemplateSpecializationType>::value);
-}
-
-TEST(HasDeclaration, HasDeclarationOfTypeWithDecl) {
-  EXPECT_TRUE(matches("typedef int X; X a;",
-                      varDecl(hasName("a"),
-                              hasType(typedefType(hasDeclaration(decl()))))));
-
-  // FIXME: Add tests for other types with getDecl() (e.g. RecordType)
-}
-
-TEST(HasDeclaration, HasDeclarationOfTemplateSpecializationType) {
-  EXPECT_TRUE(matches("template <typename T> class A {}; A<int> a;",
-                      varDecl(hasType(templateSpecializationType(
-                          hasDeclaration(namedDecl(hasName("A"))))))));
-}
-
-TEST(HasType, TakesQualTypeMatcherAndMatchesExpr) {
-  TypeMatcher ClassX = hasDeclaration(recordDecl(hasName("X")));
-  EXPECT_TRUE(
-      matches("class X {}; void y(X &x) { x; }", expr(hasType(ClassX))));
-  EXPECT_TRUE(
-      notMatches("class X {}; void y(X *x) { x; }",
-                 expr(hasType(ClassX))));
-  EXPECT_TRUE(
-      matches("class X {}; void y(X *x) { x; }",
-              expr(hasType(pointsTo(ClassX)))));
-}
-
-TEST(HasType, TakesQualTypeMatcherAndMatchesValueDecl) {
-  TypeMatcher ClassX = hasDeclaration(recordDecl(hasName("X")));
-  EXPECT_TRUE(
-      matches("class X {}; void y() { X x; }", varDecl(hasType(ClassX))));
-  EXPECT_TRUE(
-      notMatches("class X {}; void y() { X *x; }", varDecl(hasType(ClassX))));
-  EXPECT_TRUE(
-      matches("class X {}; void y() { X *x; }",
-              varDecl(hasType(pointsTo(ClassX)))));
-}
-
-TEST(HasType, TakesDeclMatcherAndMatchesExpr) {
-  DeclarationMatcher ClassX = recordDecl(hasName("X"));
-  EXPECT_TRUE(
-      matches("class X {}; void y(X &x) { x; }", expr(hasType(ClassX))));
-  EXPECT_TRUE(
-      notMatches("class X {}; void y(X *x) { x; }",
-                 expr(hasType(ClassX))));
-}
-
-TEST(HasType, TakesDeclMatcherAndMatchesValueDecl) {
-  DeclarationMatcher ClassX = recordDecl(hasName("X"));
-  EXPECT_TRUE(
-      matches("class X {}; void y() { X x; }", varDecl(hasType(ClassX))));
-  EXPECT_TRUE(
-      notMatches("class X {}; void y() { X *x; }", varDecl(hasType(ClassX))));
-}
-
-TEST(Matcher, Call) {
-  // FIXME: Do we want to overload Call() to directly take
-  // Matcher<Decl>, too?
-  StatementMatcher MethodX = callExpr(hasDeclaration(methodDecl(hasName("x"))));
-
-  EXPECT_TRUE(matches("class Y { void x() { x(); } };", MethodX));
-  EXPECT_TRUE(notMatches("class Y { void x() {} };", MethodX));
-
-  StatementMatcher MethodOnY =
-      memberCallExpr(on(hasType(recordDecl(hasName("Y")))));
-
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z() { Y y; y.x(); }",
-              MethodOnY));
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z(Y &y) { y.x(); }",
-              MethodOnY));
-  EXPECT_TRUE(
-      notMatches("class Y { public: void x(); }; void z(Y *&y) { y->x(); }",
-                 MethodOnY));
-  EXPECT_TRUE(
-      notMatches("class Y { public: void x(); }; void z(Y y[]) { y->x(); }",
-                 MethodOnY));
-  EXPECT_TRUE(
-      notMatches("class Y { public: void x(); }; void z() { Y *y; y->x(); }",
-                 MethodOnY));
-
-  StatementMatcher MethodOnYPointer =
-      memberCallExpr(on(hasType(pointsTo(recordDecl(hasName("Y"))))));
-
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z() { Y *y; y->x(); }",
-              MethodOnYPointer));
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z(Y *&y) { y->x(); }",
-              MethodOnYPointer));
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z(Y y[]) { y->x(); }",
-              MethodOnYPointer));
-  EXPECT_TRUE(
-      notMatches("class Y { public: void x(); }; void z() { Y y; y.x(); }",
-                 MethodOnYPointer));
-  EXPECT_TRUE(
-      notMatches("class Y { public: void x(); }; void z(Y &y) { y.x(); }",
-                 MethodOnYPointer));
-}
-
-TEST(Matcher, Lambda) {
-  EXPECT_TRUE(matches("auto f = [&] (int i) { return i; };",
-                      lambdaExpr()));
-}
-
-TEST(Matcher, ForRange) {
-  EXPECT_TRUE(matches("int as[] = { 1, 2, 3 };"
-                      "void f() { for (auto &a : as); }",
-                      forRangeStmt()));
-  EXPECT_TRUE(notMatches("void f() { for (int i; i<5; ++i); }",
-                         forRangeStmt()));
-}
-
-TEST(Matcher, UserDefinedLiteral) {
-  EXPECT_TRUE(matches("constexpr char operator \"\" _inc (const char i) {"
-                      "  return i + 1;"
-                      "}"
-                      "char c = 'a'_inc;",
-                      userDefinedLiteral()));
-}
-
-TEST(Matcher, FlowControl) {
-  EXPECT_TRUE(matches("void f() { while(true) { break; } }", breakStmt()));
-  EXPECT_TRUE(matches("void f() { while(true) { continue; } }",
-                      continueStmt()));
-  EXPECT_TRUE(matches("void f() { goto FOO; FOO: ;}", gotoStmt()));
-  EXPECT_TRUE(matches("void f() { goto FOO; FOO: ;}", labelStmt()));
-  EXPECT_TRUE(matches("void f() { return; }", returnStmt()));
-}
-
-TEST(HasType, MatchesAsString) {
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z() {Y* y; y->x(); }",
-              memberCallExpr(on(hasType(asString("class Y *"))))));
-  EXPECT_TRUE(matches("class X { void x(int x) {} };",
-      methodDecl(hasParameter(0, hasType(asString("int"))))));
-  EXPECT_TRUE(matches("namespace ns { struct A {}; }  struct B { ns::A a; };",
-      fieldDecl(hasType(asString("ns::A")))));
-  EXPECT_TRUE(matches("namespace { struct A {}; }  struct B { A a; };",
-      fieldDecl(hasType(asString("struct <anonymous>::A")))));
-}
-
-TEST(Matcher, OverloadedOperatorCall) {
-  StatementMatcher OpCall = operatorCallExpr();
-  // Unary operator
-  EXPECT_TRUE(matches("class Y { }; "
-              "bool operator!(Y x) { return false; }; "
-              "Y y; bool c = !y;", OpCall));
-  // No match -- special operators like "new", "delete"
-  // FIXME: operator new takes size_t, for which we need stddef.h, for which
-  // we need to figure out include paths in the test.
-  // EXPECT_TRUE(NotMatches("#include <stddef.h>\n"
-  //             "class Y { }; "
-  //             "void *operator new(size_t size) { return 0; } "
-  //             "Y *y = new Y;", OpCall));
-  EXPECT_TRUE(notMatches("class Y { }; "
-              "void operator delete(void *p) { } "
-              "void a() {Y *y = new Y; delete y;}", OpCall));
-  // Binary operator
-  EXPECT_TRUE(matches("class Y { }; "
-              "bool operator&&(Y x, Y y) { return true; }; "
-              "Y a; Y b; bool c = a && b;",
-              OpCall));
-  // No match -- normal operator, not an overloaded one.
-  EXPECT_TRUE(notMatches("bool x = true, y = true; bool t = x && y;", OpCall));
-  EXPECT_TRUE(notMatches("int t = 5 << 2;", OpCall));
-}
-
-TEST(Matcher, HasOperatorNameForOverloadedOperatorCall) {
-  StatementMatcher OpCallAndAnd =
-      operatorCallExpr(hasOverloadedOperatorName("&&"));
-  EXPECT_TRUE(matches("class Y { }; "
-              "bool operator&&(Y x, Y y) { return true; }; "
-              "Y a; Y b; bool c = a && b;", OpCallAndAnd));
-  StatementMatcher OpCallLessLess =
-      operatorCallExpr(hasOverloadedOperatorName("<<"));
-  EXPECT_TRUE(notMatches("class Y { }; "
-              "bool operator&&(Y x, Y y) { return true; }; "
-              "Y a; Y b; bool c = a && b;",
-              OpCallLessLess));
-  DeclarationMatcher ClassWithOpStar =
-    recordDecl(hasMethod(hasOverloadedOperatorName("*")));
-  EXPECT_TRUE(matches("class Y { int operator*(); };",
-                      ClassWithOpStar));
-  EXPECT_TRUE(notMatches("class Y { void myOperator(); };",
-              ClassWithOpStar)) ;
-}
-
-TEST(Matcher, NestedOverloadedOperatorCalls) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-        "class Y { }; "
-        "Y& operator&&(Y& x, Y& y) { return x; }; "
-        "Y a; Y b; Y c; Y d = a && b && c;",
-        operatorCallExpr(hasOverloadedOperatorName("&&")).bind("x"),
-        new VerifyIdIsBoundTo<CXXOperatorCallExpr>("x", 2)));
-  EXPECT_TRUE(matches(
-        "class Y { }; "
-        "Y& operator&&(Y& x, Y& y) { return x; }; "
-        "Y a; Y b; Y c; Y d = a && b && c;",
-        operatorCallExpr(hasParent(operatorCallExpr()))));
-  EXPECT_TRUE(matches(
-        "class Y { }; "
-        "Y& operator&&(Y& x, Y& y) { return x; }; "
-        "Y a; Y b; Y c; Y d = a && b && c;",
-        operatorCallExpr(hasDescendant(operatorCallExpr()))));
-}
-
-TEST(Matcher, ThisPointerType) {
-  StatementMatcher MethodOnY =
-    memberCallExpr(thisPointerType(recordDecl(hasName("Y"))));
-
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z() { Y y; y.x(); }",
-              MethodOnY));
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z(Y &y) { y.x(); }",
-              MethodOnY));
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z(Y *&y) { y->x(); }",
-              MethodOnY));
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z(Y y[]) { y->x(); }",
-              MethodOnY));
-  EXPECT_TRUE(
-      matches("class Y { public: void x(); }; void z() { Y *y; y->x(); }",
-              MethodOnY));
-
-  EXPECT_TRUE(matches(
-      "class Y {"
-      "  public: virtual void x();"
-      "};"
-      "class X : public Y {"
-      "  public: virtual void x();"
-      "};"
-      "void z() { X *x; x->Y::x(); }", MethodOnY));
-}
-
-TEST(Matcher, VariableUsage) {
-  StatementMatcher Reference =
-      declRefExpr(to(
-          varDecl(hasInitializer(
-              memberCallExpr(thisPointerType(recordDecl(hasName("Y"))))))));
-
-  EXPECT_TRUE(matches(
-      "class Y {"
-      " public:"
-      "  bool x() const;"
-      "};"
-      "void z(const Y &y) {"
-      "  bool b = y.x();"
-      "  if (b) {}"
-      "}", Reference));
-
-  EXPECT_TRUE(notMatches(
-      "class Y {"
-      " public:"
-      "  bool x() const;"
-      "};"
-      "void z(const Y &y) {"
-      "  bool b = y.x();"
-      "}", Reference));
-}
-
-TEST(Matcher, FindsVarDeclInFunctionParameter) {
-  EXPECT_TRUE(matches(
-      "void f(int i) {}",
-      varDecl(hasName("i"))));
-}
-
-TEST(Matcher, CalledVariable) {
-  StatementMatcher CallOnVariableY =
-      memberCallExpr(on(declRefExpr(to(varDecl(hasName("y"))))));
-
-  EXPECT_TRUE(matches(
-      "class Y { public: void x() { Y y; y.x(); } };", CallOnVariableY));
-  EXPECT_TRUE(matches(
-      "class Y { public: void x() const { Y y; y.x(); } };", CallOnVariableY));
-  EXPECT_TRUE(matches(
-      "class Y { public: void x(); };"
-      "class X : public Y { void z() { X y; y.x(); } };", CallOnVariableY));
-  EXPECT_TRUE(matches(
-      "class Y { public: void x(); };"
-      "class X : public Y { void z() { X *y; y->x(); } };", CallOnVariableY));
-  EXPECT_TRUE(notMatches(
-      "class Y { public: void x(); };"
-      "class X : public Y { void z() { unsigned long y; ((X*)y)->x(); } };",
-      CallOnVariableY));
-}
-
-TEST(UnaryExprOrTypeTraitExpr, MatchesSizeOfAndAlignOf) {
-  EXPECT_TRUE(matches("void x() { int a = sizeof(a); }",
-                      unaryExprOrTypeTraitExpr()));
-  EXPECT_TRUE(notMatches("void x() { int a = sizeof(a); }",
-                         alignOfExpr(anything())));
-  // FIXME: Uncomment once alignof is enabled.
-  // EXPECT_TRUE(matches("void x() { int a = alignof(a); }",
-  //                     unaryExprOrTypeTraitExpr()));
-  // EXPECT_TRUE(notMatches("void x() { int a = alignof(a); }",
-  //                        sizeOfExpr()));
-}
-
-TEST(UnaryExpressionOrTypeTraitExpression, MatchesCorrectType) {
-  EXPECT_TRUE(matches("void x() { int a = sizeof(a); }", sizeOfExpr(
-      hasArgumentOfType(asString("int")))));
-  EXPECT_TRUE(notMatches("void x() { int a = sizeof(a); }", sizeOfExpr(
-      hasArgumentOfType(asString("float")))));
-  EXPECT_TRUE(matches(
-      "struct A {}; void x() { A a; int b = sizeof(a); }",
-      sizeOfExpr(hasArgumentOfType(hasDeclaration(recordDecl(hasName("A")))))));
-  EXPECT_TRUE(notMatches("void x() { int a = sizeof(a); }", sizeOfExpr(
-      hasArgumentOfType(hasDeclaration(recordDecl(hasName("string")))))));
-}
-
-TEST(MemberExpression, DoesNotMatchClasses) {
-  EXPECT_TRUE(notMatches("class Y { void x() {} };", memberExpr()));
-}
-
-TEST(MemberExpression, MatchesMemberFunctionCall) {
-  EXPECT_TRUE(matches("class Y { void x() { x(); } };", memberExpr()));
-}
-
-TEST(MemberExpression, MatchesVariable) {
-  EXPECT_TRUE(
-      matches("class Y { void x() { this->y; } int y; };", memberExpr()));
-  EXPECT_TRUE(
-      matches("class Y { void x() { y; } int y; };", memberExpr()));
-  EXPECT_TRUE(
-      matches("class Y { void x() { Y y; y.y; } int y; };", memberExpr()));
-}
-
-TEST(MemberExpression, MatchesStaticVariable) {
-  EXPECT_TRUE(matches("class Y { void x() { this->y; } static int y; };",
-              memberExpr()));
-  EXPECT_TRUE(notMatches("class Y { void x() { y; } static int y; };",
-              memberExpr()));
-  EXPECT_TRUE(notMatches("class Y { void x() { Y::y; } static int y; };",
-              memberExpr()));
-}
-
-TEST(IsInteger, MatchesIntegers) {
-  EXPECT_TRUE(matches("int i = 0;", varDecl(hasType(isInteger()))));
-  EXPECT_TRUE(matches(
-      "long long i = 0; void f(long long) { }; void g() {f(i);}",
-      callExpr(hasArgument(0, declRefExpr(
-                                  to(varDecl(hasType(isInteger()))))))));
-}
-
-TEST(IsInteger, ReportsNoFalsePositives) {
-  EXPECT_TRUE(notMatches("int *i;", varDecl(hasType(isInteger()))));
-  EXPECT_TRUE(notMatches("struct T {}; T t; void f(T *) { }; void g() {f(&t);}",
-                      callExpr(hasArgument(0, declRefExpr(
-                          to(varDecl(hasType(isInteger()))))))));
-}
-
-TEST(IsArrow, MatchesMemberVariablesViaArrow) {
-  EXPECT_TRUE(matches("class Y { void x() { this->y; } int y; };",
-              memberExpr(isArrow())));
-  EXPECT_TRUE(matches("class Y { void x() { y; } int y; };",
-              memberExpr(isArrow())));
-  EXPECT_TRUE(notMatches("class Y { void x() { (*this).y; } int y; };",
-              memberExpr(isArrow())));
-}
-
-TEST(IsArrow, MatchesStaticMemberVariablesViaArrow) {
-  EXPECT_TRUE(matches("class Y { void x() { this->y; } static int y; };",
-              memberExpr(isArrow())));
-  EXPECT_TRUE(notMatches("class Y { void x() { y; } static int y; };",
-              memberExpr(isArrow())));
-  EXPECT_TRUE(notMatches("class Y { void x() { (*this).y; } static int y; };",
-              memberExpr(isArrow())));
-}
-
-TEST(IsArrow, MatchesMemberCallsViaArrow) {
-  EXPECT_TRUE(matches("class Y { void x() { this->x(); } };",
-              memberExpr(isArrow())));
-  EXPECT_TRUE(matches("class Y { void x() { x(); } };",
-              memberExpr(isArrow())));
-  EXPECT_TRUE(notMatches("class Y { void x() { Y y; y.x(); } };",
-              memberExpr(isArrow())));
-}
-
-TEST(Callee, MatchesDeclarations) {
-  StatementMatcher CallMethodX = callExpr(callee(methodDecl(hasName("x"))));
-
-  EXPECT_TRUE(matches("class Y { void x() { x(); } };", CallMethodX));
-  EXPECT_TRUE(notMatches("class Y { void x() {} };", CallMethodX));
-}
-
-TEST(Callee, MatchesMemberExpressions) {
-  EXPECT_TRUE(matches("class Y { void x() { this->x(); } };",
-              callExpr(callee(memberExpr()))));
-  EXPECT_TRUE(
-      notMatches("class Y { void x() { this->x(); } };", callExpr(callee(callExpr()))));
-}
-
-TEST(Function, MatchesFunctionDeclarations) {
-  StatementMatcher CallFunctionF = callExpr(callee(functionDecl(hasName("f"))));
-
-  EXPECT_TRUE(matches("void f() { f(); }", CallFunctionF));
-  EXPECT_TRUE(notMatches("void f() { }", CallFunctionF));
-
-#if !defined(_MSC_VER)
-  // FIXME: Make this work for MSVC.
-  // Dependent contexts, but a non-dependent call.
-  EXPECT_TRUE(matches("void f(); template <int N> void g() { f(); }",
-                      CallFunctionF));
-  EXPECT_TRUE(
-      matches("void f(); template <int N> struct S { void g() { f(); } };",
-              CallFunctionF));
-#endif
-
-  // Depedent calls don't match.
-  EXPECT_TRUE(
-      notMatches("void f(int); template <typename T> void g(T t) { f(t); }",
-                 CallFunctionF));
-  EXPECT_TRUE(
-      notMatches("void f(int);"
-                 "template <typename T> struct S { void g(T t) { f(t); } };",
-                 CallFunctionF));
-}
-
-TEST(FunctionTemplate, MatchesFunctionTemplateDeclarations) {
-  EXPECT_TRUE(
-      matches("template <typename T> void f(T t) {}",
-      functionTemplateDecl(hasName("f"))));
-}
-
-TEST(FunctionTemplate, DoesNotMatchFunctionDeclarations) {
-  EXPECT_TRUE(
-      notMatches("void f(double d); void f(int t) {}",
-      functionTemplateDecl(hasName("f"))));
-}
-
-TEST(FunctionTemplate, DoesNotMatchFunctionTemplateSpecializations) {
-  EXPECT_TRUE(
-      notMatches("void g(); template <typename T> void f(T t) {}"
-                 "template <> void f(int t) { g(); }",
-      functionTemplateDecl(hasName("f"),
-                           hasDescendant(declRefExpr(to(
-                               functionDecl(hasName("g"))))))));
-}
-
-TEST(Matcher, Argument) {
-  StatementMatcher CallArgumentY = callExpr(
-      hasArgument(0, declRefExpr(to(varDecl(hasName("y"))))));
-
-  EXPECT_TRUE(matches("void x(int) { int y; x(y); }", CallArgumentY));
-  EXPECT_TRUE(
-      matches("class X { void x(int) { int y; x(y); } };", CallArgumentY));
-  EXPECT_TRUE(notMatches("void x(int) { int z; x(z); }", CallArgumentY));
-
-  StatementMatcher WrongIndex = callExpr(
-      hasArgument(42, declRefExpr(to(varDecl(hasName("y"))))));
-  EXPECT_TRUE(notMatches("void x(int) { int y; x(y); }", WrongIndex));
-}
-
-TEST(Matcher, AnyArgument) {
-  StatementMatcher CallArgumentY = callExpr(
-      hasAnyArgument(declRefExpr(to(varDecl(hasName("y"))))));
-  EXPECT_TRUE(matches("void x(int, int) { int y; x(1, y); }", CallArgumentY));
-  EXPECT_TRUE(matches("void x(int, int) { int y; x(y, 42); }", CallArgumentY));
-  EXPECT_TRUE(notMatches("void x(int, int) { x(1, 2); }", CallArgumentY));
-}
-
-TEST(Matcher, ArgumentCount) {
-  StatementMatcher Call1Arg = callExpr(argumentCountIs(1));
-
-  EXPECT_TRUE(matches("void x(int) { x(0); }", Call1Arg));
-  EXPECT_TRUE(matches("class X { void x(int) { x(0); } };", Call1Arg));
-  EXPECT_TRUE(notMatches("void x(int, int) { x(0, 0); }", Call1Arg));
-}
-
-TEST(Matcher, ParameterCount) {
-  DeclarationMatcher Function1Arg = functionDecl(parameterCountIs(1));
-  EXPECT_TRUE(matches("void f(int i) {}", Function1Arg));
-  EXPECT_TRUE(matches("class X { void f(int i) {} };", Function1Arg));
-  EXPECT_TRUE(notMatches("void f() {}", Function1Arg));
-  EXPECT_TRUE(notMatches("void f(int i, int j, int k) {}", Function1Arg));
-}
-
-TEST(Matcher, References) {
-  DeclarationMatcher ReferenceClassX = varDecl(
-      hasType(references(recordDecl(hasName("X")))));
-  EXPECT_TRUE(matches("class X {}; void y(X y) { X &x = y; }",
-                      ReferenceClassX));
-  EXPECT_TRUE(
-      matches("class X {}; void y(X y) { const X &x = y; }", ReferenceClassX));
-  EXPECT_TRUE(
-      notMatches("class X {}; void y(X y) { X x = y; }", ReferenceClassX));
-  EXPECT_TRUE(
-      notMatches("class X {}; void y(X *y) { X *&x = y; }", ReferenceClassX));
-}
-
-TEST(QualType, hasCanonicalType) {
-  EXPECT_TRUE(notMatches("typedef int &int_ref;"
-                         "int a;"
-                         "int_ref b = a;",
-                         varDecl(hasType(qualType(referenceType())))));
-  EXPECT_TRUE(
-      matches("typedef int &int_ref;"
-              "int a;"
-              "int_ref b = a;",
-              varDecl(hasType(qualType(hasCanonicalType(referenceType()))))));
-}
-
-TEST(QualType, hasLocalQualifiers) {
-  EXPECT_TRUE(notMatches("typedef const int const_int; const_int i = 1;",
-                         varDecl(hasType(hasLocalQualifiers()))));
-  EXPECT_TRUE(matches("int *const j = nullptr;",
-                      varDecl(hasType(hasLocalQualifiers()))));
-  EXPECT_TRUE(matches("int *volatile k;",
-                      varDecl(hasType(hasLocalQualifiers()))));
-  EXPECT_TRUE(notMatches("int m;",
-                         varDecl(hasType(hasLocalQualifiers()))));
-}
-
-TEST(HasParameter, CallsInnerMatcher) {
-  EXPECT_TRUE(matches("class X { void x(int) {} };",
-      methodDecl(hasParameter(0, varDecl()))));
-  EXPECT_TRUE(notMatches("class X { void x(int) {} };",
-      methodDecl(hasParameter(0, hasName("x")))));
-}
-
-TEST(HasParameter, DoesNotMatchIfIndexOutOfBounds) {
-  EXPECT_TRUE(notMatches("class X { void x(int) {} };",
-      methodDecl(hasParameter(42, varDecl()))));
-}
-
-TEST(HasType, MatchesParameterVariableTypesStrictly) {
-  EXPECT_TRUE(matches("class X { void x(X x) {} };",
-      methodDecl(hasParameter(0, hasType(recordDecl(hasName("X")))))));
-  EXPECT_TRUE(notMatches("class X { void x(const X &x) {} };",
-      methodDecl(hasParameter(0, hasType(recordDecl(hasName("X")))))));
-  EXPECT_TRUE(matches("class X { void x(const X *x) {} };",
-      methodDecl(hasParameter(0, 
-                              hasType(pointsTo(recordDecl(hasName("X"))))))));
-  EXPECT_TRUE(matches("class X { void x(const X &x) {} };",
-      methodDecl(hasParameter(0,
-                              hasType(references(recordDecl(hasName("X"))))))));
-}
-
-TEST(HasAnyParameter, MatchesIndependentlyOfPosition) {
-  EXPECT_TRUE(matches("class Y {}; class X { void x(X x, Y y) {} };",
-      methodDecl(hasAnyParameter(hasType(recordDecl(hasName("X")))))));
-  EXPECT_TRUE(matches("class Y {}; class X { void x(Y y, X x) {} };",
-      methodDecl(hasAnyParameter(hasType(recordDecl(hasName("X")))))));
-}
-
-TEST(Returns, MatchesReturnTypes) {
-  EXPECT_TRUE(matches("class Y { int f() { return 1; } };",
-                      functionDecl(returns(asString("int")))));
-  EXPECT_TRUE(notMatches("class Y { int f() { return 1; } };",
-                         functionDecl(returns(asString("float")))));
-  EXPECT_TRUE(matches("class Y { Y getMe() { return *this; } };",
-                      functionDecl(returns(hasDeclaration(
-                          recordDecl(hasName("Y")))))));
-}
-
-TEST(IsExternC, MatchesExternCFunctionDeclarations) {
-  EXPECT_TRUE(matches("extern \"C\" void f() {}", functionDecl(isExternC())));
-  EXPECT_TRUE(matches("extern \"C\" { void f() {} }",
-              functionDecl(isExternC())));
-  EXPECT_TRUE(notMatches("void f() {}", functionDecl(isExternC())));
-}
-
-TEST(HasAnyParameter, DoesntMatchIfInnerMatcherDoesntMatch) {
-  EXPECT_TRUE(notMatches("class Y {}; class X { void x(int) {} };",
-      methodDecl(hasAnyParameter(hasType(recordDecl(hasName("X")))))));
-}
-
-TEST(HasAnyParameter, DoesNotMatchThisPointer) {
-  EXPECT_TRUE(notMatches("class Y {}; class X { void x() {} };",
-      methodDecl(hasAnyParameter(hasType(pointsTo(
-          recordDecl(hasName("X"))))))));
-}
-
-TEST(HasName, MatchesParameterVariableDeclartions) {
-  EXPECT_TRUE(matches("class Y {}; class X { void x(int x) {} };",
-      methodDecl(hasAnyParameter(hasName("x")))));
-  EXPECT_TRUE(notMatches("class Y {}; class X { void x(int) {} };",
-      methodDecl(hasAnyParameter(hasName("x")))));
-}
-
-TEST(Matcher, MatchesClassTemplateSpecialization) {
-  EXPECT_TRUE(matches("template<typename T> struct A {};"
-                      "template<> struct A<int> {};",
-                      classTemplateSpecializationDecl()));
-  EXPECT_TRUE(matches("template<typename T> struct A {}; A<int> a;",
-                      classTemplateSpecializationDecl()));
-  EXPECT_TRUE(notMatches("template<typename T> struct A {};",
-                         classTemplateSpecializationDecl()));
-}
-
-TEST(Matcher, MatchesTypeTemplateArgument) {
-  EXPECT_TRUE(matches(
-      "template<typename T> struct B {};"
-      "B<int> b;",
-      classTemplateSpecializationDecl(hasAnyTemplateArgument(refersToType(
-          asString("int"))))));
-}
-
-TEST(Matcher, MatchesDeclarationReferenceTemplateArgument) {
-  EXPECT_TRUE(matches(
-      "struct B { int next; };"
-      "template<int(B::*next_ptr)> struct A {};"
-      "A<&B::next> a;",
-      classTemplateSpecializationDecl(hasAnyTemplateArgument(
-          refersToDeclaration(fieldDecl(hasName("next")))))));
-
-  EXPECT_TRUE(notMatches(
-      "template <typename T> struct A {};"
-      "A<int> a;",
-      classTemplateSpecializationDecl(hasAnyTemplateArgument(
-          refersToDeclaration(decl())))));
-}
-
-TEST(Matcher, MatchesSpecificArgument) {
-  EXPECT_TRUE(matches(
-      "template<typename T, typename U> class A {};"
-      "A<bool, int> a;",
-      classTemplateSpecializationDecl(hasTemplateArgument(
-          1, refersToType(asString("int"))))));
-  EXPECT_TRUE(notMatches(
-      "template<typename T, typename U> class A {};"
-      "A<int, bool> a;",
-      classTemplateSpecializationDecl(hasTemplateArgument(
-          1, refersToType(asString("int"))))));
-}
-
-TEST(Matcher, MatchesAccessSpecDecls) {
-  EXPECT_TRUE(matches("class C { public: int i; };", accessSpecDecl()));
-  EXPECT_TRUE(
-      matches("class C { public: int i; };", accessSpecDecl(isPublic())));
-  EXPECT_TRUE(
-      notMatches("class C { public: int i; };", accessSpecDecl(isProtected())));
-  EXPECT_TRUE(
-      notMatches("class C { public: int i; };", accessSpecDecl(isPrivate())));
-
-  EXPECT_TRUE(notMatches("class C { int i; };", accessSpecDecl()));
-}
-
-TEST(Matcher, MatchesVirtualMethod) {
-  EXPECT_TRUE(matches("class X { virtual int f(); };",
-      methodDecl(isVirtual(), hasName("::X::f"))));
-  EXPECT_TRUE(notMatches("class X { int f(); };",
-      methodDecl(isVirtual())));
-}
-
-TEST(Matcher, MatchesOverridingMethod) {
-  EXPECT_TRUE(matches("class X { virtual int f(); }; "
-                      "class Y : public X { int f(); };",
-       methodDecl(isOverride(), hasName("::Y::f"))));
-  EXPECT_TRUE(notMatches("class X { virtual int f(); }; "
-                        "class Y : public X { int f(); };",
-       methodDecl(isOverride(), hasName("::X::f"))));
-  EXPECT_TRUE(notMatches("class X { int f(); }; "
-                         "class Y : public X { int f(); };",
-       methodDecl(isOverride())));
-  EXPECT_TRUE(notMatches("class X { int f(); int f(int); }; ",
-       methodDecl(isOverride())));
-}
-
-TEST(Matcher, ConstructorCall) {
-  StatementMatcher Constructor = constructExpr();
-
-  EXPECT_TRUE(
-      matches("class X { public: X(); }; void x() { X x; }", Constructor));
-  EXPECT_TRUE(
-      matches("class X { public: X(); }; void x() { X x = X(); }",
-              Constructor));
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { X x = 0; }",
-              Constructor));
-  EXPECT_TRUE(matches("class X {}; void x(int) { X x; }", Constructor));
-}
-
-TEST(Matcher, ConstructorArgument) {
-  StatementMatcher Constructor = constructExpr(
-      hasArgument(0, declRefExpr(to(varDecl(hasName("y"))))));
-
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { int y; X x(y); }",
-              Constructor));
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { int y; X x = X(y); }",
-              Constructor));
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { int y; X x = y; }",
-              Constructor));
-  EXPECT_TRUE(
-      notMatches("class X { public: X(int); }; void x() { int z; X x(z); }",
-                 Constructor));
-
-  StatementMatcher WrongIndex = constructExpr(
-      hasArgument(42, declRefExpr(to(varDecl(hasName("y"))))));
-  EXPECT_TRUE(
-      notMatches("class X { public: X(int); }; void x() { int y; X x(y); }",
-                 WrongIndex));
-}
-
-TEST(Matcher, ConstructorArgumentCount) {
-  StatementMatcher Constructor1Arg = constructExpr(argumentCountIs(1));
-
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { X x(0); }",
-              Constructor1Arg));
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { X x = X(0); }",
-              Constructor1Arg));
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { X x = 0; }",
-              Constructor1Arg));
-  EXPECT_TRUE(
-      notMatches("class X { public: X(int, int); }; void x() { X x(0, 0); }",
-                 Constructor1Arg));
-}
-
-TEST(Matcher,ThisExpr) {
-  EXPECT_TRUE(
-      matches("struct X { int a; int f () { return a; } };", thisExpr()));
-  EXPECT_TRUE(
-      notMatches("struct X { int f () { int a; return a; } };", thisExpr()));
-}
-
-TEST(Matcher, BindTemporaryExpression) {
-  StatementMatcher TempExpression = bindTemporaryExpr();
-
-  std::string ClassString = "class string { public: string(); ~string(); }; ";
-
-  EXPECT_TRUE(
-      matches(ClassString +
-              "string GetStringByValue();"
-              "void FunctionTakesString(string s);"
-              "void run() { FunctionTakesString(GetStringByValue()); }",
-              TempExpression));
-
-  EXPECT_TRUE(
-      notMatches(ClassString +
-                 "string* GetStringPointer(); "
-                 "void FunctionTakesStringPtr(string* s);"
-                 "void run() {"
-                 "  string* s = GetStringPointer();"
-                 "  FunctionTakesStringPtr(GetStringPointer());"
-                 "  FunctionTakesStringPtr(s);"
-                 "}",
-                 TempExpression));
-
-  EXPECT_TRUE(
-      notMatches("class no_dtor {};"
-                 "no_dtor GetObjByValue();"
-                 "void ConsumeObj(no_dtor param);"
-                 "void run() { ConsumeObj(GetObjByValue()); }",
-                 TempExpression));
-}
-
-TEST(MaterializeTemporaryExpr, MatchesTemporary) {
-  std::string ClassString =
-      "class string { public: string(); int length(); }; ";
-
-  EXPECT_TRUE(
-      matches(ClassString +
-              "string GetStringByValue();"
-              "void FunctionTakesString(string s);"
-              "void run() { FunctionTakesString(GetStringByValue()); }",
-              materializeTemporaryExpr()));
-
-  EXPECT_TRUE(
-      notMatches(ClassString +
-                 "string* GetStringPointer(); "
-                 "void FunctionTakesStringPtr(string* s);"
-                 "void run() {"
-                 "  string* s = GetStringPointer();"
-                 "  FunctionTakesStringPtr(GetStringPointer());"
-                 "  FunctionTakesStringPtr(s);"
-                 "}",
-                 materializeTemporaryExpr()));
-
-  EXPECT_TRUE(
-      notMatches(ClassString +
-                 "string GetStringByValue();"
-                 "void run() { int k = GetStringByValue().length(); }",
-                 materializeTemporaryExpr()));
-
-  EXPECT_TRUE(
-      notMatches(ClassString +
-                 "string GetStringByValue();"
-                 "void run() { GetStringByValue(); }",
-                 materializeTemporaryExpr()));
-}
-
-TEST(ConstructorDeclaration, SimpleCase) {
-  EXPECT_TRUE(matches("class Foo { Foo(int i); };",
-                      constructorDecl(ofClass(hasName("Foo")))));
-  EXPECT_TRUE(notMatches("class Foo { Foo(int i); };",
-                         constructorDecl(ofClass(hasName("Bar")))));
-}
-
-TEST(ConstructorDeclaration, IsImplicit) {
-  // This one doesn't match because the constructor is not added by the
-  // compiler (it is not needed).
-  EXPECT_TRUE(notMatches("class Foo { };",
-                         constructorDecl(isImplicit())));
-  // The compiler added the implicit default constructor.
-  EXPECT_TRUE(matches("class Foo { }; Foo* f = new Foo();",
-                      constructorDecl(isImplicit())));
-  EXPECT_TRUE(matches("class Foo { Foo(){} };",
-                      constructorDecl(unless(isImplicit()))));
-}
-
-TEST(DestructorDeclaration, MatchesVirtualDestructor) {
-  EXPECT_TRUE(matches("class Foo { virtual ~Foo(); };",
-                      destructorDecl(ofClass(hasName("Foo")))));
-}
-
-TEST(DestructorDeclaration, DoesNotMatchImplicitDestructor) {
-  EXPECT_TRUE(notMatches("class Foo {};",
-                         destructorDecl(ofClass(hasName("Foo")))));
-}
-
-TEST(HasAnyConstructorInitializer, SimpleCase) {
-  EXPECT_TRUE(notMatches(
-      "class Foo { Foo() { } };",
-      constructorDecl(hasAnyConstructorInitializer(anything()))));
-  EXPECT_TRUE(matches(
-      "class Foo {"
-      "  Foo() : foo_() { }"
-      "  int foo_;"
-      "};",
-      constructorDecl(hasAnyConstructorInitializer(anything()))));
-}
-
-TEST(HasAnyConstructorInitializer, ForField) {
-  static const char Code[] =
-      "class Baz { };"
-      "class Foo {"
-      "  Foo() : foo_() { }"
-      "  Baz foo_;"
-      "  Baz bar_;"
-      "};";
-  EXPECT_TRUE(matches(Code, constructorDecl(hasAnyConstructorInitializer(
-      forField(hasType(recordDecl(hasName("Baz"))))))));
-  EXPECT_TRUE(matches(Code, constructorDecl(hasAnyConstructorInitializer(
-      forField(hasName("foo_"))))));
-  EXPECT_TRUE(notMatches(Code, constructorDecl(hasAnyConstructorInitializer(
-      forField(hasType(recordDecl(hasName("Bar"))))))));
-}
-
-TEST(HasAnyConstructorInitializer, WithInitializer) {
-  static const char Code[] =
-      "class Foo {"
-      "  Foo() : foo_(0) { }"
-      "  int foo_;"
-      "};";
-  EXPECT_TRUE(matches(Code, constructorDecl(hasAnyConstructorInitializer(
-      withInitializer(integerLiteral(equals(0)))))));
-  EXPECT_TRUE(notMatches(Code, constructorDecl(hasAnyConstructorInitializer(
-      withInitializer(integerLiteral(equals(1)))))));
-}
-
-TEST(HasAnyConstructorInitializer, IsWritten) {
-  static const char Code[] =
-      "struct Bar { Bar(){} };"
-      "class Foo {"
-      "  Foo() : foo_() { }"
-      "  Bar foo_;"
-      "  Bar bar_;"
-      "};";
-  EXPECT_TRUE(matches(Code, constructorDecl(hasAnyConstructorInitializer(
-      allOf(forField(hasName("foo_")), isWritten())))));
-  EXPECT_TRUE(notMatches(Code, constructorDecl(hasAnyConstructorInitializer(
-      allOf(forField(hasName("bar_")), isWritten())))));
-  EXPECT_TRUE(matches(Code, constructorDecl(hasAnyConstructorInitializer(
-      allOf(forField(hasName("bar_")), unless(isWritten()))))));
-}
-
-TEST(Matcher, NewExpression) {
-  StatementMatcher New = newExpr();
-
-  EXPECT_TRUE(matches("class X { public: X(); }; void x() { new X; }", New));
-  EXPECT_TRUE(
-      matches("class X { public: X(); }; void x() { new X(); }", New));
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { new X(0); }", New));
-  EXPECT_TRUE(matches("class X {}; void x(int) { new X; }", New));
-}
-
-TEST(Matcher, NewExpressionArgument) {
-  StatementMatcher New = constructExpr(
-      hasArgument(0, declRefExpr(to(varDecl(hasName("y"))))));
-
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { int y; new X(y); }",
-              New));
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { int y; new X(y); }",
-              New));
-  EXPECT_TRUE(
-      notMatches("class X { public: X(int); }; void x() { int z; new X(z); }",
-                 New));
-
-  StatementMatcher WrongIndex = constructExpr(
-      hasArgument(42, declRefExpr(to(varDecl(hasName("y"))))));
-  EXPECT_TRUE(
-      notMatches("class X { public: X(int); }; void x() { int y; new X(y); }",
-                 WrongIndex));
-}
-
-TEST(Matcher, NewExpressionArgumentCount) {
-  StatementMatcher New = constructExpr(argumentCountIs(1));
-
-  EXPECT_TRUE(
-      matches("class X { public: X(int); }; void x() { new X(0); }", New));
-  EXPECT_TRUE(
-      notMatches("class X { public: X(int, int); }; void x() { new X(0, 0); }",
-                 New));
-}
-
-TEST(Matcher, DeleteExpression) {
-  EXPECT_TRUE(matches("struct A {}; void f(A* a) { delete a; }",
-                      deleteExpr()));
-}
-
-TEST(Matcher, DefaultArgument) {
-  StatementMatcher Arg = defaultArgExpr();
-
-  EXPECT_TRUE(matches("void x(int, int = 0) { int y; x(y); }", Arg));
-  EXPECT_TRUE(
-      matches("class X { void x(int, int = 0) { int y; x(y); } };", Arg));
-  EXPECT_TRUE(notMatches("void x(int, int = 0) { int y; x(y, 0); }", Arg));
-}
-
-TEST(Matcher, StringLiterals) {
-  StatementMatcher Literal = stringLiteral();
-  EXPECT_TRUE(matches("const char *s = \"string\";", Literal));
-  // wide string
-  EXPECT_TRUE(matches("const wchar_t *s = L\"string\";", Literal));
-  // with escaped characters
-  EXPECT_TRUE(matches("const char *s = \"\x05five\";", Literal));
-  // no matching -- though the data type is the same, there is no string literal
-  EXPECT_TRUE(notMatches("const char s[1] = {'a'};", Literal));
-}
-
-TEST(Matcher, CharacterLiterals) {
-  StatementMatcher CharLiteral = characterLiteral();
-  EXPECT_TRUE(matches("const char c = 'c';", CharLiteral));
-  // wide character
-  EXPECT_TRUE(matches("const char c = L'c';", CharLiteral));
-  // wide character, Hex encoded, NOT MATCHED!
-  EXPECT_TRUE(notMatches("const wchar_t c = 0x2126;", CharLiteral));
-  EXPECT_TRUE(notMatches("const char c = 0x1;", CharLiteral));
-}
-
-TEST(Matcher, IntegerLiterals) {
-  StatementMatcher HasIntLiteral = integerLiteral();
-  EXPECT_TRUE(matches("int i = 10;", HasIntLiteral));
-  EXPECT_TRUE(matches("int i = 0x1AB;", HasIntLiteral));
-  EXPECT_TRUE(matches("int i = 10L;", HasIntLiteral));
-  EXPECT_TRUE(matches("int i = 10U;", HasIntLiteral));
-
-  // Non-matching cases (character literals, float and double)
-  EXPECT_TRUE(notMatches("int i = L'a';",
-                HasIntLiteral));  // this is actually a character
-                                  // literal cast to int
-  EXPECT_TRUE(notMatches("int i = 'a';", HasIntLiteral));
-  EXPECT_TRUE(notMatches("int i = 1e10;", HasIntLiteral));
-  EXPECT_TRUE(notMatches("int i = 10.0;", HasIntLiteral));
-}
-
-TEST(Matcher, NullPtrLiteral) {
-  EXPECT_TRUE(matches("int* i = nullptr;", nullPtrLiteralExpr()));
-}
-
-TEST(Matcher, AsmStatement) {
-  EXPECT_TRUE(matches("void foo() { __asm(\"mov al, 2\"); }", asmStmt()));
-}
-
-TEST(Matcher, Conditions) {
-  StatementMatcher Condition = ifStmt(hasCondition(boolLiteral(equals(true))));
-
-  EXPECT_TRUE(matches("void x() { if (true) {} }", Condition));
-  EXPECT_TRUE(notMatches("void x() { if (false) {} }", Condition));
-  EXPECT_TRUE(notMatches("void x() { bool a = true; if (a) {} }", Condition));
-  EXPECT_TRUE(notMatches("void x() { if (true || false) {} }", Condition));
-  EXPECT_TRUE(notMatches("void x() { if (1) {} }", Condition));
-}
-
-TEST(MatchBinaryOperator, HasOperatorName) {
-  StatementMatcher OperatorOr = binaryOperator(hasOperatorName("||"));
-
-  EXPECT_TRUE(matches("void x() { true || false; }", OperatorOr));
-  EXPECT_TRUE(notMatches("void x() { true && false; }", OperatorOr));
-}
-
-TEST(MatchBinaryOperator, HasLHSAndHasRHS) {
-  StatementMatcher OperatorTrueFalse =
-      binaryOperator(hasLHS(boolLiteral(equals(true))),
-                     hasRHS(boolLiteral(equals(false))));
-
-  EXPECT_TRUE(matches("void x() { true || false; }", OperatorTrueFalse));
-  EXPECT_TRUE(matches("void x() { true && false; }", OperatorTrueFalse));
-  EXPECT_TRUE(notMatches("void x() { false || true; }", OperatorTrueFalse));
-}
-
-TEST(MatchBinaryOperator, HasEitherOperand) {
-  StatementMatcher HasOperand =
-      binaryOperator(hasEitherOperand(boolLiteral(equals(false))));
-
-  EXPECT_TRUE(matches("void x() { true || false; }", HasOperand));
-  EXPECT_TRUE(matches("void x() { false && true; }", HasOperand));
-  EXPECT_TRUE(notMatches("void x() { true || true; }", HasOperand));
-}
-
-TEST(Matcher, BinaryOperatorTypes) {
-  // Integration test that verifies the AST provides all binary operators in
-  // a way we expect.
-  // FIXME: Operator ','
-  EXPECT_TRUE(
-      matches("void x() { 3, 4; }", binaryOperator(hasOperatorName(","))));
-  EXPECT_TRUE(
-      matches("bool b; bool c = (b = true);",
-              binaryOperator(hasOperatorName("="))));
-  EXPECT_TRUE(
-      matches("bool b = 1 != 2;", binaryOperator(hasOperatorName("!="))));
-  EXPECT_TRUE(
-      matches("bool b = 1 == 2;", binaryOperator(hasOperatorName("=="))));
-  EXPECT_TRUE(matches("bool b = 1 < 2;", binaryOperator(hasOperatorName("<"))));
-  EXPECT_TRUE(
-      matches("bool b = 1 <= 2;", binaryOperator(hasOperatorName("<="))));
-  EXPECT_TRUE(
-      matches("int i = 1 << 2;", binaryOperator(hasOperatorName("<<"))));
-  EXPECT_TRUE(
-      matches("int i = 1; int j = (i <<= 2);",
-              binaryOperator(hasOperatorName("<<="))));
-  EXPECT_TRUE(matches("bool b = 1 > 2;", binaryOperator(hasOperatorName(">"))));
-  EXPECT_TRUE(
-      matches("bool b = 1 >= 2;", binaryOperator(hasOperatorName(">="))));
-  EXPECT_TRUE(
-      matches("int i = 1 >> 2;", binaryOperator(hasOperatorName(">>"))));
-  EXPECT_TRUE(
-      matches("int i = 1; int j = (i >>= 2);",
-              binaryOperator(hasOperatorName(">>="))));
-  EXPECT_TRUE(
-      matches("int i = 42 ^ 23;", binaryOperator(hasOperatorName("^"))));
-  EXPECT_TRUE(
-      matches("int i = 42; int j = (i ^= 42);",
-              binaryOperator(hasOperatorName("^="))));
-  EXPECT_TRUE(
-      matches("int i = 42 % 23;", binaryOperator(hasOperatorName("%"))));
-  EXPECT_TRUE(
-      matches("int i = 42; int j = (i %= 42);",
-              binaryOperator(hasOperatorName("%="))));
-  EXPECT_TRUE(
-      matches("bool b = 42  &23;", binaryOperator(hasOperatorName("&"))));
-  EXPECT_TRUE(
-      matches("bool b = true && false;",
-              binaryOperator(hasOperatorName("&&"))));
-  EXPECT_TRUE(
-      matches("bool b = true; bool c = (b &= false);",
-              binaryOperator(hasOperatorName("&="))));
-  EXPECT_TRUE(
-      matches("bool b = 42 | 23;", binaryOperator(hasOperatorName("|"))));
-  EXPECT_TRUE(
-      matches("bool b = true || false;",
-              binaryOperator(hasOperatorName("||"))));
-  EXPECT_TRUE(
-      matches("bool b = true; bool c = (b |= false);",
-              binaryOperator(hasOperatorName("|="))));
-  EXPECT_TRUE(
-      matches("int i = 42  *23;", binaryOperator(hasOperatorName("*"))));
-  EXPECT_TRUE(
-      matches("int i = 42; int j = (i *= 23);",
-              binaryOperator(hasOperatorName("*="))));
-  EXPECT_TRUE(
-      matches("int i = 42 / 23;", binaryOperator(hasOperatorName("/"))));
-  EXPECT_TRUE(
-      matches("int i = 42; int j = (i /= 23);",
-              binaryOperator(hasOperatorName("/="))));
-  EXPECT_TRUE(
-      matches("int i = 42 + 23;", binaryOperator(hasOperatorName("+"))));
-  EXPECT_TRUE(
-      matches("int i = 42; int j = (i += 23);",
-              binaryOperator(hasOperatorName("+="))));
-  EXPECT_TRUE(
-      matches("int i = 42 - 23;", binaryOperator(hasOperatorName("-"))));
-  EXPECT_TRUE(
-      matches("int i = 42; int j = (i -= 23);",
-              binaryOperator(hasOperatorName("-="))));
-  EXPECT_TRUE(
-      matches("struct A { void x() { void (A::*a)(); (this->*a)(); } };",
-              binaryOperator(hasOperatorName("->*"))));
-  EXPECT_TRUE(
-      matches("struct A { void x() { void (A::*a)(); ((*this).*a)(); } };",
-              binaryOperator(hasOperatorName(".*"))));
-
-  // Member expressions as operators are not supported in matches.
-  EXPECT_TRUE(
-      notMatches("struct A { void x(A *a) { a->x(this); } };",
-                 binaryOperator(hasOperatorName("->"))));
-
-  // Initializer assignments are not represented as operator equals.
-  EXPECT_TRUE(
-      notMatches("bool b = true;", binaryOperator(hasOperatorName("="))));
-
-  // Array indexing is not represented as operator.
-  EXPECT_TRUE(notMatches("int a[42]; void x() { a[23]; }", unaryOperator()));
-
-  // Overloaded operators do not match at all.
-  EXPECT_TRUE(notMatches(
-      "struct A { bool operator&&(const A &a) const { return false; } };"
-      "void x() { A a, b; a && b; }",
-      binaryOperator()));
-}
-
-TEST(MatchUnaryOperator, HasOperatorName) {
-  StatementMatcher OperatorNot = unaryOperator(hasOperatorName("!"));
-
-  EXPECT_TRUE(matches("void x() { !true; } ", OperatorNot));
-  EXPECT_TRUE(notMatches("void x() { true; } ", OperatorNot));
-}
-
-TEST(MatchUnaryOperator, HasUnaryOperand) {
-  StatementMatcher OperatorOnFalse =
-      unaryOperator(hasUnaryOperand(boolLiteral(equals(false))));
-
-  EXPECT_TRUE(matches("void x() { !false; }", OperatorOnFalse));
-  EXPECT_TRUE(notMatches("void x() { !true; }", OperatorOnFalse));
-}
-
-TEST(Matcher, UnaryOperatorTypes) {
-  // Integration test that verifies the AST provides all unary operators in
-  // a way we expect.
-  EXPECT_TRUE(matches("bool b = !true;", unaryOperator(hasOperatorName("!"))));
-  EXPECT_TRUE(
-      matches("bool b; bool *p = &b;", unaryOperator(hasOperatorName("&"))));
-  EXPECT_TRUE(matches("int i = ~ 1;", unaryOperator(hasOperatorName("~"))));
-  EXPECT_TRUE(
-      matches("bool *p; bool b = *p;", unaryOperator(hasOperatorName("*"))));
-  EXPECT_TRUE(
-      matches("int i; int j = +i;", unaryOperator(hasOperatorName("+"))));
-  EXPECT_TRUE(
-      matches("int i; int j = -i;", unaryOperator(hasOperatorName("-"))));
-  EXPECT_TRUE(
-      matches("int i; int j = ++i;", unaryOperator(hasOperatorName("++"))));
-  EXPECT_TRUE(
-      matches("int i; int j = i++;", unaryOperator(hasOperatorName("++"))));
-  EXPECT_TRUE(
-      matches("int i; int j = --i;", unaryOperator(hasOperatorName("--"))));
-  EXPECT_TRUE(
-      matches("int i; int j = i--;", unaryOperator(hasOperatorName("--"))));
-
-  // We don't match conversion operators.
-  EXPECT_TRUE(notMatches("int i; double d = (double)i;", unaryOperator()));
-
-  // Function calls are not represented as operator.
-  EXPECT_TRUE(notMatches("void f(); void x() { f(); }", unaryOperator()));
-
-  // Overloaded operators do not match at all.
-  // FIXME: We probably want to add that.
-  EXPECT_TRUE(notMatches(
-      "struct A { bool operator!() const { return false; } };"
-      "void x() { A a; !a; }", unaryOperator(hasOperatorName("!"))));
-}
-
-TEST(Matcher, ConditionalOperator) {
-  StatementMatcher Conditional = conditionalOperator(
-      hasCondition(boolLiteral(equals(true))),
-      hasTrueExpression(boolLiteral(equals(false))));
-
-  EXPECT_TRUE(matches("void x() { true ? false : true; }", Conditional));
-  EXPECT_TRUE(notMatches("void x() { false ? false : true; }", Conditional));
-  EXPECT_TRUE(notMatches("void x() { true ? true : false; }", Conditional));
-
-  StatementMatcher ConditionalFalse = conditionalOperator(
-      hasFalseExpression(boolLiteral(equals(false))));
-
-  EXPECT_TRUE(matches("void x() { true ? true : false; }", ConditionalFalse));
-  EXPECT_TRUE(
-      notMatches("void x() { true ? false : true; }", ConditionalFalse));
-}
-
-TEST(ArraySubscriptMatchers, ArraySubscripts) {
-  EXPECT_TRUE(matches("int i[2]; void f() { i[1] = 1; }",
-                      arraySubscriptExpr()));
-  EXPECT_TRUE(notMatches("int i; void f() { i = 1; }",
-                         arraySubscriptExpr()));
-}
-
-TEST(ArraySubscriptMatchers, ArrayIndex) {
-  EXPECT_TRUE(matches(
-      "int i[2]; void f() { i[1] = 1; }",
-      arraySubscriptExpr(hasIndex(integerLiteral(equals(1))))));
-  EXPECT_TRUE(matches(
-      "int i[2]; void f() { 1[i] = 1; }",
-      arraySubscriptExpr(hasIndex(integerLiteral(equals(1))))));
-  EXPECT_TRUE(notMatches(
-      "int i[2]; void f() { i[1] = 1; }",
-      arraySubscriptExpr(hasIndex(integerLiteral(equals(0))))));
-}
-
-TEST(ArraySubscriptMatchers, MatchesArrayBase) {
-  EXPECT_TRUE(matches(
-      "int i[2]; void f() { i[1] = 2; }",
-      arraySubscriptExpr(hasBase(implicitCastExpr(
-          hasSourceExpression(declRefExpr()))))));
-}
-
-TEST(Matcher, HasNameSupportsNamespaces) {
-  EXPECT_TRUE(matches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("a::b::C"))));
-  EXPECT_TRUE(matches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("::a::b::C"))));
-  EXPECT_TRUE(matches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("b::C"))));
-  EXPECT_TRUE(matches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("C"))));
-  EXPECT_TRUE(notMatches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("c::b::C"))));
-  EXPECT_TRUE(notMatches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("a::c::C"))));
-  EXPECT_TRUE(notMatches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("a::b::A"))));
-  EXPECT_TRUE(notMatches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("::C"))));
-  EXPECT_TRUE(notMatches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("::b::C"))));
-  EXPECT_TRUE(notMatches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("z::a::b::C"))));
-  EXPECT_TRUE(notMatches("namespace a { namespace b { class C; } }",
-              recordDecl(hasName("a+b::C"))));
-  EXPECT_TRUE(notMatches("namespace a { namespace b { class AC; } }",
-              recordDecl(hasName("C"))));
-}
-
-TEST(Matcher, HasNameSupportsOuterClasses) {
-  EXPECT_TRUE(
-      matches("class A { class B { class C; }; };",
-              recordDecl(hasName("A::B::C"))));
-  EXPECT_TRUE(
-      matches("class A { class B { class C; }; };",
-              recordDecl(hasName("::A::B::C"))));
-  EXPECT_TRUE(
-      matches("class A { class B { class C; }; };",
-              recordDecl(hasName("B::C"))));
-  EXPECT_TRUE(
-      matches("class A { class B { class C; }; };",
-              recordDecl(hasName("C"))));
-  EXPECT_TRUE(
-      notMatches("class A { class B { class C; }; };",
-                 recordDecl(hasName("c::B::C"))));
-  EXPECT_TRUE(
-      notMatches("class A { class B { class C; }; };",
-                 recordDecl(hasName("A::c::C"))));
-  EXPECT_TRUE(
-      notMatches("class A { class B { class C; }; };",
-                 recordDecl(hasName("A::B::A"))));
-  EXPECT_TRUE(
-      notMatches("class A { class B { class C; }; };",
-                 recordDecl(hasName("::C"))));
-  EXPECT_TRUE(
-      notMatches("class A { class B { class C; }; };",
-                 recordDecl(hasName("::B::C"))));
-  EXPECT_TRUE(notMatches("class A { class B { class C; }; };",
-              recordDecl(hasName("z::A::B::C"))));
-  EXPECT_TRUE(
-      notMatches("class A { class B { class C; }; };",
-                 recordDecl(hasName("A+B::C"))));
-}
-
-TEST(Matcher, IsDefinition) {
-  DeclarationMatcher DefinitionOfClassA =
-      recordDecl(hasName("A"), isDefinition());
-  EXPECT_TRUE(matches("class A {};", DefinitionOfClassA));
-  EXPECT_TRUE(notMatches("class A;", DefinitionOfClassA));
-
-  DeclarationMatcher DefinitionOfVariableA =
-      varDecl(hasName("a"), isDefinition());
-  EXPECT_TRUE(matches("int a;", DefinitionOfVariableA));
-  EXPECT_TRUE(notMatches("extern int a;", DefinitionOfVariableA));
-
-  DeclarationMatcher DefinitionOfMethodA =
-      methodDecl(hasName("a"), isDefinition());
-  EXPECT_TRUE(matches("class A { void a() {} };", DefinitionOfMethodA));
-  EXPECT_TRUE(notMatches("class A { void a(); };", DefinitionOfMethodA));
-}
-
-TEST(Matcher, OfClass) {
-  StatementMatcher Constructor = constructExpr(hasDeclaration(methodDecl(
-      ofClass(hasName("X")))));
-
-  EXPECT_TRUE(
-      matches("class X { public: X(); }; void x(int) { X x; }", Constructor));
-  EXPECT_TRUE(
-      matches("class X { public: X(); }; void x(int) { X x = X(); }",
-              Constructor));
-  EXPECT_TRUE(
-      notMatches("class Y { public: Y(); }; void x(int) { Y y; }",
-                 Constructor));
-}
-
-TEST(Matcher, VisitsTemplateInstantiations) {
-  EXPECT_TRUE(matches(
-      "class A { public: void x(); };"
-      "template <typename T> class B { public: void y() { T t; t.x(); } };"
-      "void f() { B<A> b; b.y(); }",
-      callExpr(callee(methodDecl(hasName("x"))))));
-
-  EXPECT_TRUE(matches(
-      "class A { public: void x(); };"
-      "class C {"
-      " public:"
-      "  template <typename T> class B { public: void y() { T t; t.x(); } };"
-      "};"
-      "void f() {"
-      "  C::B<A> b; b.y();"
-      "}",
-      recordDecl(hasName("C"),
-                 hasDescendant(callExpr(callee(methodDecl(hasName("x"))))))));
-}
-
-TEST(Matcher, HandlesNullQualTypes) {
-  // FIXME: Add a Type matcher so we can replace uses of this
-  // variable with Type(True())
-  const TypeMatcher AnyType = anything();
-
-  // We don't really care whether this matcher succeeds; we're testing that
-  // it completes without crashing.
-  EXPECT_TRUE(matches(
-      "struct A { };"
-      "template <typename T>"
-      "void f(T t) {"
-      "  T local_t(t /* this becomes a null QualType in the AST */);"
-      "}"
-      "void g() {"
-      "  f(0);"
-      "}",
-      expr(hasType(TypeMatcher(
-          anyOf(
-              TypeMatcher(hasDeclaration(anything())),
-              pointsTo(AnyType),
-              references(AnyType)
-              // Other QualType matchers should go here.
-                ))))));
-}
-
-// For testing AST_MATCHER_P().
-AST_MATCHER_P(Decl, just, internal::Matcher<Decl>, AMatcher) {
-  // Make sure all special variables are used: node, match_finder,
-  // bound_nodes_builder, and the parameter named 'AMatcher'.
-  return AMatcher.matches(Node, Finder, Builder);
-}
-
-TEST(AstMatcherPMacro, Works) {
-  DeclarationMatcher HasClassB = just(has(recordDecl(hasName("B")).bind("b")));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue("class A { class B {}; };",
-      HasClassB, new VerifyIdIsBoundTo<Decl>("b")));
-
-  EXPECT_TRUE(matchAndVerifyResultFalse("class A { class B {}; };",
-      HasClassB, new VerifyIdIsBoundTo<Decl>("a")));
-
-  EXPECT_TRUE(matchAndVerifyResultFalse("class A { class C {}; };",
-      HasClassB, new VerifyIdIsBoundTo<Decl>("b")));
-}
-
-AST_POLYMORPHIC_MATCHER_P(
-    polymorphicHas, internal::Matcher<Decl>, AMatcher) {
-  TOOLING_COMPILE_ASSERT((llvm::is_same<NodeType, Decl>::value) ||
-                         (llvm::is_same<NodeType, Stmt>::value),
-                         assert_node_type_is_accessible);
-  return Finder->matchesChildOf(
-      Node, AMatcher, Builder,
-      ASTMatchFinder::TK_IgnoreImplicitCastsAndParentheses,
-      ASTMatchFinder::BK_First);
-}
-
-TEST(AstPolymorphicMatcherPMacro, Works) {
-  DeclarationMatcher HasClassB =
-      polymorphicHas(recordDecl(hasName("B")).bind("b"));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue("class A { class B {}; };",
-      HasClassB, new VerifyIdIsBoundTo<Decl>("b")));
-
-  EXPECT_TRUE(matchAndVerifyResultFalse("class A { class B {}; };",
-      HasClassB, new VerifyIdIsBoundTo<Decl>("a")));
-
-  EXPECT_TRUE(matchAndVerifyResultFalse("class A { class C {}; };",
-      HasClassB, new VerifyIdIsBoundTo<Decl>("b")));
-
-  StatementMatcher StatementHasClassB =
-      polymorphicHas(recordDecl(hasName("B")));
-
-  EXPECT_TRUE(matches("void x() { class B {}; }", StatementHasClassB));
-}
-
-TEST(For, FindsForLoops) {
-  EXPECT_TRUE(matches("void f() { for(;;); }", forStmt()));
-  EXPECT_TRUE(matches("void f() { if(true) for(;;); }", forStmt()));
-  EXPECT_TRUE(notMatches("int as[] = { 1, 2, 3 };"
-                         "void f() { for (auto &a : as); }",
-                         forStmt()));
-}
-
-TEST(For, ForLoopInternals) {
-  EXPECT_TRUE(matches("void f(){ int i; for (; i < 3 ; ); }",
-                      forStmt(hasCondition(anything()))));
-  EXPECT_TRUE(matches("void f() { for (int i = 0; ;); }",
-                      forStmt(hasLoopInit(anything()))));
-}
-
-TEST(For, NegativeForLoopInternals) {
-  EXPECT_TRUE(notMatches("void f(){ for (int i = 0; ; ++i); }",
-                         forStmt(hasCondition(expr()))));
-  EXPECT_TRUE(notMatches("void f() {int i; for (; i < 4; ++i) {} }",
-                         forStmt(hasLoopInit(anything()))));
-}
-
-TEST(For, ReportsNoFalsePositives) {
-  EXPECT_TRUE(notMatches("void f() { ; }", forStmt()));
-  EXPECT_TRUE(notMatches("void f() { if(true); }", forStmt()));
-}
-
-TEST(CompoundStatement, HandlesSimpleCases) {
-  EXPECT_TRUE(notMatches("void f();", compoundStmt()));
-  EXPECT_TRUE(matches("void f() {}", compoundStmt()));
-  EXPECT_TRUE(matches("void f() {{}}", compoundStmt()));
-}
-
-TEST(CompoundStatement, DoesNotMatchEmptyStruct) {
-  // It's not a compound statement just because there's "{}" in the source
-  // text. This is an AST search, not grep.
-  EXPECT_TRUE(notMatches("namespace n { struct S {}; }",
-              compoundStmt()));
-  EXPECT_TRUE(matches("namespace n { struct S { void f() {{}} }; }",
-              compoundStmt()));
-}
-
-TEST(HasBody, FindsBodyOfForWhileDoLoops) {
-  EXPECT_TRUE(matches("void f() { for(;;) {} }",
-              forStmt(hasBody(compoundStmt()))));
-  EXPECT_TRUE(notMatches("void f() { for(;;); }",
-              forStmt(hasBody(compoundStmt()))));
-  EXPECT_TRUE(matches("void f() { while(true) {} }",
-              whileStmt(hasBody(compoundStmt()))));
-  EXPECT_TRUE(matches("void f() { do {} while(true); }",
-              doStmt(hasBody(compoundStmt()))));
-}
-
-TEST(HasAnySubstatement, MatchesForTopLevelCompoundStatement) {
-  // The simplest case: every compound statement is in a function
-  // definition, and the function body itself must be a compound
-  // statement.
-  EXPECT_TRUE(matches("void f() { for (;;); }",
-              compoundStmt(hasAnySubstatement(forStmt()))));
-}
-
-TEST(HasAnySubstatement, IsNotRecursive) {
-  // It's really "has any immediate substatement".
-  EXPECT_TRUE(notMatches("void f() { if (true) for (;;); }",
-              compoundStmt(hasAnySubstatement(forStmt()))));
-}
-
-TEST(HasAnySubstatement, MatchesInNestedCompoundStatements) {
-  EXPECT_TRUE(matches("void f() { if (true) { for (;;); } }",
-              compoundStmt(hasAnySubstatement(forStmt()))));
-}
-
-TEST(HasAnySubstatement, FindsSubstatementBetweenOthers) {
-  EXPECT_TRUE(matches("void f() { 1; 2; 3; for (;;); 4; 5; 6; }",
-              compoundStmt(hasAnySubstatement(forStmt()))));
-}
-
-TEST(StatementCountIs, FindsNoStatementsInAnEmptyCompoundStatement) {
-  EXPECT_TRUE(matches("void f() { }",
-              compoundStmt(statementCountIs(0))));
-  EXPECT_TRUE(notMatches("void f() {}",
-              compoundStmt(statementCountIs(1))));
-}
-
-TEST(StatementCountIs, AppearsToMatchOnlyOneCount) {
-  EXPECT_TRUE(matches("void f() { 1; }",
-              compoundStmt(statementCountIs(1))));
-  EXPECT_TRUE(notMatches("void f() { 1; }",
-              compoundStmt(statementCountIs(0))));
-  EXPECT_TRUE(notMatches("void f() { 1; }",
-              compoundStmt(statementCountIs(2))));
-}
-
-TEST(StatementCountIs, WorksWithMultipleStatements) {
-  EXPECT_TRUE(matches("void f() { 1; 2; 3; }",
-              compoundStmt(statementCountIs(3))));
-}
-
-TEST(StatementCountIs, WorksWithNestedCompoundStatements) {
-  EXPECT_TRUE(matches("void f() { { 1; } { 1; 2; 3; 4; } }",
-              compoundStmt(statementCountIs(1))));
-  EXPECT_TRUE(matches("void f() { { 1; } { 1; 2; 3; 4; } }",
-              compoundStmt(statementCountIs(2))));
-  EXPECT_TRUE(notMatches("void f() { { 1; } { 1; 2; 3; 4; } }",
-              compoundStmt(statementCountIs(3))));
-  EXPECT_TRUE(matches("void f() { { 1; } { 1; 2; 3; 4; } }",
-              compoundStmt(statementCountIs(4))));
-}
-
-TEST(Member, WorksInSimplestCase) {
-  EXPECT_TRUE(matches("struct { int first; } s; int i(s.first);",
-                      memberExpr(member(hasName("first")))));
-}
-
-TEST(Member, DoesNotMatchTheBaseExpression) {
-  // Don't pick out the wrong part of the member expression, this should
-  // be checking the member (name) only.
-  EXPECT_TRUE(notMatches("struct { int i; } first; int i(first.i);",
-                         memberExpr(member(hasName("first")))));
-}
-
-TEST(Member, MatchesInMemberFunctionCall) {
-  EXPECT_TRUE(matches("void f() {"
-                      "  struct { void first() {}; } s;"
-                      "  s.first();"
-                      "};",
-                      memberExpr(member(hasName("first")))));
-}
-
-TEST(Member, MatchesMember) {
-  EXPECT_TRUE(matches(
-      "struct A { int i; }; void f() { A a; a.i = 2; }",
-      memberExpr(hasDeclaration(fieldDecl(hasType(isInteger()))))));
-  EXPECT_TRUE(notMatches(
-      "struct A { float f; }; void f() { A a; a.f = 2.0f; }",
-      memberExpr(hasDeclaration(fieldDecl(hasType(isInteger()))))));
-}
-
-TEST(Member, UnderstandsAccess) {
-  EXPECT_TRUE(matches(
-      "struct A { int i; };", fieldDecl(isPublic(), hasName("i"))));
-  EXPECT_TRUE(notMatches(
-      "struct A { int i; };", fieldDecl(isProtected(), hasName("i"))));
-  EXPECT_TRUE(notMatches(
-      "struct A { int i; };", fieldDecl(isPrivate(), hasName("i"))));
-
-  EXPECT_TRUE(notMatches(
-      "class A { int i; };", fieldDecl(isPublic(), hasName("i"))));
-  EXPECT_TRUE(notMatches(
-      "class A { int i; };", fieldDecl(isProtected(), hasName("i"))));
-  EXPECT_TRUE(matches(
-      "class A { int i; };", fieldDecl(isPrivate(), hasName("i"))));
-
-  EXPECT_TRUE(notMatches(
-      "class A { protected: int i; };", fieldDecl(isPublic(), hasName("i"))));
-  EXPECT_TRUE(matches("class A { protected: int i; };",
-                      fieldDecl(isProtected(), hasName("i"))));
-  EXPECT_TRUE(notMatches(
-      "class A { protected: int i; };", fieldDecl(isPrivate(), hasName("i"))));
-  
-  // Non-member decls have the AccessSpecifier AS_none and thus aren't matched.
-  EXPECT_TRUE(notMatches("int i;", varDecl(isPublic(), hasName("i"))));
-  EXPECT_TRUE(notMatches("int i;", varDecl(isProtected(), hasName("i"))));
-  EXPECT_TRUE(notMatches("int i;", varDecl(isPrivate(), hasName("i"))));
-}
-
-TEST(Member, MatchesMemberAllocationFunction) {
-  // Fails in C++11 mode
-  EXPECT_TRUE(matchesConditionally(
-      "namespace std { typedef typeof(sizeof(int)) size_t; }"
-      "class X { void *operator new(std::size_t); };",
-      methodDecl(ofClass(hasName("X"))), true, "-std=gnu++98"));
-
-  EXPECT_TRUE(matches("class X { void operator delete(void*); };",
-                      methodDecl(ofClass(hasName("X")))));
-
-  // Fails in C++11 mode
-  EXPECT_TRUE(matchesConditionally(
-      "namespace std { typedef typeof(sizeof(int)) size_t; }"
-      "class X { void operator delete[](void*, std::size_t); };",
-      methodDecl(ofClass(hasName("X"))), true, "-std=gnu++98"));
-}
-
-TEST(HasObjectExpression, DoesNotMatchMember) {
-  EXPECT_TRUE(notMatches(
-      "class X {}; struct Z { X m; }; void f(Z z) { z.m; }",
-      memberExpr(hasObjectExpression(hasType(recordDecl(hasName("X")))))));
-}
-
-TEST(HasObjectExpression, MatchesBaseOfVariable) {
-  EXPECT_TRUE(matches(
-      "struct X { int m; }; void f(X x) { x.m; }",
-      memberExpr(hasObjectExpression(hasType(recordDecl(hasName("X")))))));
-  EXPECT_TRUE(matches(
-      "struct X { int m; }; void f(X* x) { x->m; }",
-      memberExpr(hasObjectExpression(
-          hasType(pointsTo(recordDecl(hasName("X"))))))));
-}
-
-TEST(HasObjectExpression,
-     MatchesObjectExpressionOfImplicitlyFormedMemberExpression) {
-  EXPECT_TRUE(matches(
-      "class X {}; struct S { X m; void f() { this->m; } };",
-      memberExpr(hasObjectExpression(
-          hasType(pointsTo(recordDecl(hasName("S"))))))));
-  EXPECT_TRUE(matches(
-      "class X {}; struct S { X m; void f() { m; } };",
-      memberExpr(hasObjectExpression(
-          hasType(pointsTo(recordDecl(hasName("S"))))))));
-}
-
-TEST(Field, DoesNotMatchNonFieldMembers) {
-  EXPECT_TRUE(notMatches("class X { void m(); };", fieldDecl(hasName("m"))));
-  EXPECT_TRUE(notMatches("class X { class m {}; };", fieldDecl(hasName("m"))));
-  EXPECT_TRUE(notMatches("class X { enum { m }; };", fieldDecl(hasName("m"))));
-  EXPECT_TRUE(notMatches("class X { enum m {}; };", fieldDecl(hasName("m"))));
-}
-
-TEST(Field, MatchesField) {
-  EXPECT_TRUE(matches("class X { int m; };", fieldDecl(hasName("m"))));
-}
-
-TEST(IsConstQualified, MatchesConstInt) {
-  EXPECT_TRUE(matches("const int i = 42;",
-                      varDecl(hasType(isConstQualified()))));
-}
-
-TEST(IsConstQualified, MatchesConstPointer) {
-  EXPECT_TRUE(matches("int i = 42; int* const p(&i);",
-                      varDecl(hasType(isConstQualified()))));
-}
-
-TEST(IsConstQualified, MatchesThroughTypedef) {
-  EXPECT_TRUE(matches("typedef const int const_int; const_int i = 42;",
-                      varDecl(hasType(isConstQualified()))));
-  EXPECT_TRUE(matches("typedef int* int_ptr; const int_ptr p(0);",
-                      varDecl(hasType(isConstQualified()))));
-}
-
-TEST(IsConstQualified, DoesNotMatchInappropriately) {
-  EXPECT_TRUE(notMatches("typedef int nonconst_int; nonconst_int i = 42;",
-                         varDecl(hasType(isConstQualified()))));
-  EXPECT_TRUE(notMatches("int const* p;",
-                         varDecl(hasType(isConstQualified()))));
-}
-
-TEST(CastExpression, MatchesExplicitCasts) {
-  EXPECT_TRUE(matches("char *p = reinterpret_cast<char *>(&p);",castExpr()));
-  EXPECT_TRUE(matches("void *p = (void *)(&p);", castExpr()));
-  EXPECT_TRUE(matches("char q, *p = const_cast<char *>(&q);", castExpr()));
-  EXPECT_TRUE(matches("char c = char(0);", castExpr()));
-}
-TEST(CastExpression, MatchesImplicitCasts) {
-  // This test creates an implicit cast from int to char.
-  EXPECT_TRUE(matches("char c = 0;", castExpr()));
-  // This test creates an implicit cast from lvalue to rvalue.
-  EXPECT_TRUE(matches("char c = 0, d = c;", castExpr()));
-}
-
-TEST(CastExpression, DoesNotMatchNonCasts) {
-  EXPECT_TRUE(notMatches("char c = '0';", castExpr()));
-  EXPECT_TRUE(notMatches("char c, &q = c;", castExpr()));
-  EXPECT_TRUE(notMatches("int i = (0);", castExpr()));
-  EXPECT_TRUE(notMatches("int i = 0;", castExpr()));
-}
-
-TEST(ReinterpretCast, MatchesSimpleCase) {
-  EXPECT_TRUE(matches("char* p = reinterpret_cast<char*>(&p);",
-                      reinterpretCastExpr()));
-}
-
-TEST(ReinterpretCast, DoesNotMatchOtherCasts) {
-  EXPECT_TRUE(notMatches("char* p = (char*)(&p);", reinterpretCastExpr()));
-  EXPECT_TRUE(notMatches("char q, *p = const_cast<char*>(&q);",
-                         reinterpretCastExpr()));
-  EXPECT_TRUE(notMatches("void* p = static_cast<void*>(&p);",
-                         reinterpretCastExpr()));
-  EXPECT_TRUE(notMatches("struct B { virtual ~B() {} }; struct D : B {};"
-                         "B b;"
-                         "D* p = dynamic_cast<D*>(&b);",
-                         reinterpretCastExpr()));
-}
-
-TEST(FunctionalCast, MatchesSimpleCase) {
-  std::string foo_class = "class Foo { public: Foo(char*); };";
-  EXPECT_TRUE(matches(foo_class + "void r() { Foo f = Foo(\"hello world\"); }",
-                      functionalCastExpr()));
-}
-
-TEST(FunctionalCast, DoesNotMatchOtherCasts) {
-  std::string FooClass = "class Foo { public: Foo(char*); };";
-  EXPECT_TRUE(
-      notMatches(FooClass + "void r() { Foo f = (Foo) \"hello world\"; }",
-                 functionalCastExpr()));
-  EXPECT_TRUE(
-      notMatches(FooClass + "void r() { Foo f = \"hello world\"; }",
-                 functionalCastExpr()));
-}
-
-TEST(DynamicCast, MatchesSimpleCase) {
-  EXPECT_TRUE(matches("struct B { virtual ~B() {} }; struct D : B {};"
-                      "B b;"
-                      "D* p = dynamic_cast<D*>(&b);",
-                      dynamicCastExpr()));
-}
-
-TEST(StaticCast, MatchesSimpleCase) {
-  EXPECT_TRUE(matches("void* p(static_cast<void*>(&p));",
-                      staticCastExpr()));
-}
-
-TEST(StaticCast, DoesNotMatchOtherCasts) {
-  EXPECT_TRUE(notMatches("char* p = (char*)(&p);", staticCastExpr()));
-  EXPECT_TRUE(notMatches("char q, *p = const_cast<char*>(&q);",
-                         staticCastExpr()));
-  EXPECT_TRUE(notMatches("void* p = reinterpret_cast<char*>(&p);",
-                         staticCastExpr()));
-  EXPECT_TRUE(notMatches("struct B { virtual ~B() {} }; struct D : B {};"
-                         "B b;"
-                         "D* p = dynamic_cast<D*>(&b);",
-                         staticCastExpr()));
-}
-
-TEST(CStyleCast, MatchesSimpleCase) {
-  EXPECT_TRUE(matches("int i = (int) 2.2f;", cStyleCastExpr()));
-}
-
-TEST(CStyleCast, DoesNotMatchOtherCasts) {
-  EXPECT_TRUE(notMatches("char* p = static_cast<char*>(0);"
-                         "char q, *r = const_cast<char*>(&q);"
-                         "void* s = reinterpret_cast<char*>(&s);"
-                         "struct B { virtual ~B() {} }; struct D : B {};"
-                         "B b;"
-                         "D* t = dynamic_cast<D*>(&b);",
-                         cStyleCastExpr()));
-}
-
-TEST(HasDestinationType, MatchesSimpleCase) {
-  EXPECT_TRUE(matches("char* p = static_cast<char*>(0);",
-                      staticCastExpr(hasDestinationType(
-                          pointsTo(TypeMatcher(anything()))))));
-}
-
-TEST(HasImplicitDestinationType, MatchesSimpleCase) {
-  // This test creates an implicit const cast.
-  EXPECT_TRUE(matches("int x; const int i = x;",
-                      implicitCastExpr(
-                          hasImplicitDestinationType(isInteger()))));
-  // This test creates an implicit array-to-pointer cast.
-  EXPECT_TRUE(matches("int arr[3]; int *p = arr;",
-                      implicitCastExpr(hasImplicitDestinationType(
-                          pointsTo(TypeMatcher(anything()))))));
-}
-
-TEST(HasImplicitDestinationType, DoesNotMatchIncorrectly) {
-  // This test creates an implicit cast from int to char.
-  EXPECT_TRUE(notMatches("char c = 0;",
-                      implicitCastExpr(hasImplicitDestinationType(
-                          unless(anything())))));
-  // This test creates an implicit array-to-pointer cast.
-  EXPECT_TRUE(notMatches("int arr[3]; int *p = arr;",
-                      implicitCastExpr(hasImplicitDestinationType(
-                          unless(anything())))));
-}
-
-TEST(ImplicitCast, MatchesSimpleCase) {
-  // This test creates an implicit const cast.
-  EXPECT_TRUE(matches("int x = 0; const int y = x;",
-                      varDecl(hasInitializer(implicitCastExpr()))));
-  // This test creates an implicit cast from int to char.
-  EXPECT_TRUE(matches("char c = 0;",
-                      varDecl(hasInitializer(implicitCastExpr()))));
-  // This test creates an implicit array-to-pointer cast.
-  EXPECT_TRUE(matches("int arr[6]; int *p = arr;",
-                      varDecl(hasInitializer(implicitCastExpr()))));
-}
-
-TEST(ImplicitCast, DoesNotMatchIncorrectly) {
-  // This test verifies that implicitCastExpr() matches exactly when implicit casts
-  // are present, and that it ignores explicit and paren casts.
-
-  // These two test cases have no casts.
-  EXPECT_TRUE(notMatches("int x = 0;",
-                         varDecl(hasInitializer(implicitCastExpr()))));
-  EXPECT_TRUE(notMatches("int x = 0, &y = x;",
-                         varDecl(hasInitializer(implicitCastExpr()))));
-
-  EXPECT_TRUE(notMatches("int x = 0; double d = (double) x;",
-                         varDecl(hasInitializer(implicitCastExpr()))));
-  EXPECT_TRUE(notMatches("const int *p; int *q = const_cast<int *>(p);",
-                         varDecl(hasInitializer(implicitCastExpr()))));
-
-  EXPECT_TRUE(notMatches("int x = (0);",
-                         varDecl(hasInitializer(implicitCastExpr()))));
-}
-
-TEST(IgnoringImpCasts, MatchesImpCasts) {
-  // This test checks that ignoringImpCasts matches when implicit casts are
-  // present and its inner matcher alone does not match.
-  // Note that this test creates an implicit const cast.
-  EXPECT_TRUE(matches("int x = 0; const int y = x;",
-                      varDecl(hasInitializer(ignoringImpCasts(
-                          declRefExpr(to(varDecl(hasName("x")))))))));
-  // This test creates an implict cast from int to char.
-  EXPECT_TRUE(matches("char x = 0;",
-                      varDecl(hasInitializer(ignoringImpCasts(
-                          integerLiteral(equals(0)))))));
-}
-
-TEST(IgnoringImpCasts, DoesNotMatchIncorrectly) {
-  // These tests verify that ignoringImpCasts does not match if the inner
-  // matcher does not match.
-  // Note that the first test creates an implicit const cast.
-  EXPECT_TRUE(notMatches("int x; const int y = x;",
-                         varDecl(hasInitializer(ignoringImpCasts(
-                             unless(anything()))))));
-  EXPECT_TRUE(notMatches("int x; int y = x;",
-                         varDecl(hasInitializer(ignoringImpCasts(
-                             unless(anything()))))));
-
-  // These tests verify that ignoringImplictCasts does not look through explicit
-  // casts or parentheses.
-  EXPECT_TRUE(notMatches("char* p = static_cast<char*>(0);",
-                         varDecl(hasInitializer(ignoringImpCasts(
-                             integerLiteral())))));
-  EXPECT_TRUE(notMatches("int i = (0);",
-                         varDecl(hasInitializer(ignoringImpCasts(
-                             integerLiteral())))));
-  EXPECT_TRUE(notMatches("float i = (float)0;",
-                         varDecl(hasInitializer(ignoringImpCasts(
-                             integerLiteral())))));
-  EXPECT_TRUE(notMatches("float i = float(0);",
-                         varDecl(hasInitializer(ignoringImpCasts(
-                             integerLiteral())))));
-}
-
-TEST(IgnoringImpCasts, MatchesWithoutImpCasts) {
-  // This test verifies that expressions that do not have implicit casts
-  // still match the inner matcher.
-  EXPECT_TRUE(matches("int x = 0; int &y = x;",
-                      varDecl(hasInitializer(ignoringImpCasts(
-                          declRefExpr(to(varDecl(hasName("x")))))))));
-}
-
-TEST(IgnoringParenCasts, MatchesParenCasts) {
-  // This test checks that ignoringParenCasts matches when parentheses and/or
-  // casts are present and its inner matcher alone does not match.
-  EXPECT_TRUE(matches("int x = (0);",
-                      varDecl(hasInitializer(ignoringParenCasts(
-                          integerLiteral(equals(0)))))));
-  EXPECT_TRUE(matches("int x = (((((0)))));",
-                      varDecl(hasInitializer(ignoringParenCasts(
-                          integerLiteral(equals(0)))))));
-
-  // This test creates an implict cast from int to char in addition to the
-  // parentheses.
-  EXPECT_TRUE(matches("char x = (0);",
-                      varDecl(hasInitializer(ignoringParenCasts(
-                          integerLiteral(equals(0)))))));
-
-  EXPECT_TRUE(matches("char x = (char)0;",
-                      varDecl(hasInitializer(ignoringParenCasts(
-                          integerLiteral(equals(0)))))));
-  EXPECT_TRUE(matches("char* p = static_cast<char*>(0);",
-                      varDecl(hasInitializer(ignoringParenCasts(
-                          integerLiteral(equals(0)))))));
-}
-
-TEST(IgnoringParenCasts, MatchesWithoutParenCasts) {
-  // This test verifies that expressions that do not have any casts still match.
-  EXPECT_TRUE(matches("int x = 0;",
-                      varDecl(hasInitializer(ignoringParenCasts(
-                          integerLiteral(equals(0)))))));
-}
-
-TEST(IgnoringParenCasts, DoesNotMatchIncorrectly) {
-  // These tests verify that ignoringImpCasts does not match if the inner
-  // matcher does not match.
-  EXPECT_TRUE(notMatches("int x = ((0));",
-                         varDecl(hasInitializer(ignoringParenCasts(
-                             unless(anything()))))));
-
-  // This test creates an implicit cast from int to char in addition to the
-  // parentheses.
-  EXPECT_TRUE(notMatches("char x = ((0));",
-                         varDecl(hasInitializer(ignoringParenCasts(
-                             unless(anything()))))));
-
-  EXPECT_TRUE(notMatches("char *x = static_cast<char *>((0));",
-                         varDecl(hasInitializer(ignoringParenCasts(
-                             unless(anything()))))));
-}
-
-TEST(IgnoringParenAndImpCasts, MatchesParenImpCasts) {
-  // This test checks that ignoringParenAndImpCasts matches when
-  // parentheses and/or implicit casts are present and its inner matcher alone
-  // does not match.
-  // Note that this test creates an implicit const cast.
-  EXPECT_TRUE(matches("int x = 0; const int y = x;",
-                      varDecl(hasInitializer(ignoringParenImpCasts(
-                          declRefExpr(to(varDecl(hasName("x")))))))));
-  // This test creates an implicit cast from int to char.
-  EXPECT_TRUE(matches("const char x = (0);",
-                      varDecl(hasInitializer(ignoringParenImpCasts(
-                          integerLiteral(equals(0)))))));
-}
-
-TEST(IgnoringParenAndImpCasts, MatchesWithoutParenImpCasts) {
-  // This test verifies that expressions that do not have parentheses or
-  // implicit casts still match.
-  EXPECT_TRUE(matches("int x = 0; int &y = x;",
-                      varDecl(hasInitializer(ignoringParenImpCasts(
-                          declRefExpr(to(varDecl(hasName("x")))))))));
-  EXPECT_TRUE(matches("int x = 0;",
-                      varDecl(hasInitializer(ignoringParenImpCasts(
-                          integerLiteral(equals(0)))))));
-}
-
-TEST(IgnoringParenAndImpCasts, DoesNotMatchIncorrectly) {
-  // These tests verify that ignoringParenImpCasts does not match if
-  // the inner matcher does not match.
-  // This test creates an implicit cast.
-  EXPECT_TRUE(notMatches("char c = ((3));",
-                         varDecl(hasInitializer(ignoringParenImpCasts(
-                             unless(anything()))))));
-  // These tests verify that ignoringParenAndImplictCasts does not look
-  // through explicit casts.
-  EXPECT_TRUE(notMatches("float y = (float(0));",
-                         varDecl(hasInitializer(ignoringParenImpCasts(
-                             integerLiteral())))));
-  EXPECT_TRUE(notMatches("float y = (float)0;",
-                         varDecl(hasInitializer(ignoringParenImpCasts(
-                             integerLiteral())))));
-  EXPECT_TRUE(notMatches("char* p = static_cast<char*>(0);",
-                         varDecl(hasInitializer(ignoringParenImpCasts(
-                             integerLiteral())))));
-}
-
-TEST(HasSourceExpression, MatchesImplicitCasts) {
-  EXPECT_TRUE(matches("class string {}; class URL { public: URL(string s); };"
-                      "void r() {string a_string; URL url = a_string; }",
-                      implicitCastExpr(
-                          hasSourceExpression(constructExpr()))));
-}
-
-TEST(HasSourceExpression, MatchesExplicitCasts) {
-  EXPECT_TRUE(matches("float x = static_cast<float>(42);",
-                      explicitCastExpr(
-                          hasSourceExpression(hasDescendant(
-                              expr(integerLiteral()))))));
-}
-
-TEST(Statement, DoesNotMatchDeclarations) {
-  EXPECT_TRUE(notMatches("class X {};", stmt()));
-}
-
-TEST(Statement, MatchesCompoundStatments) {
-  EXPECT_TRUE(matches("void x() {}", stmt()));
-}
-
-TEST(DeclarationStatement, DoesNotMatchCompoundStatements) {
-  EXPECT_TRUE(notMatches("void x() {}", declStmt()));
-}
-
-TEST(DeclarationStatement, MatchesVariableDeclarationStatements) {
-  EXPECT_TRUE(matches("void x() { int a; }", declStmt()));
-}
-
-TEST(InitListExpression, MatchesInitListExpression) {
-  EXPECT_TRUE(matches("int a[] = { 1, 2 };",
-                      initListExpr(hasType(asString("int [2]")))));
-  EXPECT_TRUE(matches("struct B { int x, y; }; B b = { 5, 6 };",
-                      initListExpr(hasType(recordDecl(hasName("B"))))));
-}
-
-TEST(UsingDeclaration, MatchesUsingDeclarations) {
-  EXPECT_TRUE(matches("namespace X { int x; } using X::x;",
-                      usingDecl()));
-}
-
-TEST(UsingDeclaration, MatchesShadowUsingDelcarations) {
-  EXPECT_TRUE(matches("namespace f { int a; } using f::a;",
-                      usingDecl(hasAnyUsingShadowDecl(hasName("a")))));
-}
-
-TEST(UsingDeclaration, MatchesSpecificTarget) {
-  EXPECT_TRUE(matches("namespace f { int a; void b(); } using f::b;",
-                      usingDecl(hasAnyUsingShadowDecl(
-                          hasTargetDecl(functionDecl())))));
-  EXPECT_TRUE(notMatches("namespace f { int a; void b(); } using f::a;",
-                         usingDecl(hasAnyUsingShadowDecl(
-                             hasTargetDecl(functionDecl())))));
-}
-
-TEST(UsingDeclaration, ThroughUsingDeclaration) {
-  EXPECT_TRUE(matches(
-      "namespace a { void f(); } using a::f; void g() { f(); }",
-      declRefExpr(throughUsingDecl(anything()))));
-  EXPECT_TRUE(notMatches(
-      "namespace a { void f(); } using a::f; void g() { a::f(); }",
-      declRefExpr(throughUsingDecl(anything()))));
-}
-
-TEST(SingleDecl, IsSingleDecl) {
-  StatementMatcher SingleDeclStmt =
-      declStmt(hasSingleDecl(varDecl(hasInitializer(anything()))));
-  EXPECT_TRUE(matches("void f() {int a = 4;}", SingleDeclStmt));
-  EXPECT_TRUE(notMatches("void f() {int a;}", SingleDeclStmt));
-  EXPECT_TRUE(notMatches("void f() {int a = 4, b = 3;}",
-                          SingleDeclStmt));
-}
-
-TEST(DeclStmt, ContainsDeclaration) {
-  DeclarationMatcher MatchesInit = varDecl(hasInitializer(anything()));
-
-  EXPECT_TRUE(matches("void f() {int a = 4;}",
-                      declStmt(containsDeclaration(0, MatchesInit))));
-  EXPECT_TRUE(matches("void f() {int a = 4, b = 3;}",
-                      declStmt(containsDeclaration(0, MatchesInit),
-                               containsDeclaration(1, MatchesInit))));
-  unsigned WrongIndex = 42;
-  EXPECT_TRUE(notMatches("void f() {int a = 4, b = 3;}",
-                         declStmt(containsDeclaration(WrongIndex,
-                                                      MatchesInit))));
-}
-
-TEST(DeclCount, DeclCountIsCorrect) {
-  EXPECT_TRUE(matches("void f() {int i,j;}",
-                      declStmt(declCountIs(2))));
-  EXPECT_TRUE(notMatches("void f() {int i,j; int k;}",
-                         declStmt(declCountIs(3))));
-  EXPECT_TRUE(notMatches("void f() {int i,j, k, l;}",
-                         declStmt(declCountIs(3))));
-}
-
-TEST(While, MatchesWhileLoops) {
-  EXPECT_TRUE(notMatches("void x() {}", whileStmt()));
-  EXPECT_TRUE(matches("void x() { while(true); }", whileStmt()));
-  EXPECT_TRUE(notMatches("void x() { do {} while(true); }", whileStmt()));
-}
-
-TEST(Do, MatchesDoLoops) {
-  EXPECT_TRUE(matches("void x() { do {} while(true); }", doStmt()));
-  EXPECT_TRUE(matches("void x() { do ; while(false); }", doStmt()));
-}
-
-TEST(Do, DoesNotMatchWhileLoops) {
-  EXPECT_TRUE(notMatches("void x() { while(true) {} }", doStmt()));
-}
-
-TEST(SwitchCase, MatchesCase) {
-  EXPECT_TRUE(matches("void x() { switch(42) { case 42:; } }", switchCase()));
-  EXPECT_TRUE(matches("void x() { switch(42) { default:; } }", switchCase()));
-  EXPECT_TRUE(matches("void x() { switch(42) default:; }", switchCase()));
-  EXPECT_TRUE(notMatches("void x() { switch(42) {} }", switchCase()));
-}
-
-TEST(SwitchCase, MatchesSwitch) {
-  EXPECT_TRUE(matches("void x() { switch(42) { case 42:; } }", switchStmt()));
-  EXPECT_TRUE(matches("void x() { switch(42) { default:; } }", switchStmt()));
-  EXPECT_TRUE(matches("void x() { switch(42) default:; }", switchStmt()));
-  EXPECT_TRUE(notMatches("void x() {}", switchStmt()));
-}
-
-TEST(ExceptionHandling, SimpleCases) {
-  EXPECT_TRUE(matches("void foo() try { } catch(int X) { }", catchStmt()));
-  EXPECT_TRUE(matches("void foo() try { } catch(int X) { }", tryStmt()));
-  EXPECT_TRUE(notMatches("void foo() try { } catch(int X) { }", throwExpr()));
-  EXPECT_TRUE(matches("void foo() try { throw; } catch(int X) { }",
-                      throwExpr()));
-  EXPECT_TRUE(matches("void foo() try { throw 5;} catch(int X) { }",
-                      throwExpr()));
-}
-
-TEST(HasConditionVariableStatement, DoesNotMatchCondition) {
-  EXPECT_TRUE(notMatches(
-      "void x() { if(true) {} }",
-      ifStmt(hasConditionVariableStatement(declStmt()))));
-  EXPECT_TRUE(notMatches(
-      "void x() { int x; if((x = 42)) {} }",
-      ifStmt(hasConditionVariableStatement(declStmt()))));
-}
-
-TEST(HasConditionVariableStatement, MatchesConditionVariables) {
-  EXPECT_TRUE(matches(
-      "void x() { if(int* a = 0) {} }",
-      ifStmt(hasConditionVariableStatement(declStmt()))));
-}
-
-TEST(ForEach, BindsOneNode) {
-  EXPECT_TRUE(matchAndVerifyResultTrue("class C { int x; };",
-      recordDecl(hasName("C"), forEach(fieldDecl(hasName("x")).bind("x"))),
-      new VerifyIdIsBoundTo<FieldDecl>("x", 1)));
-}
-
-TEST(ForEach, BindsMultipleNodes) {
-  EXPECT_TRUE(matchAndVerifyResultTrue("class C { int x; int y; int z; };",
-      recordDecl(hasName("C"), forEach(fieldDecl().bind("f"))),
-      new VerifyIdIsBoundTo<FieldDecl>("f", 3)));
-}
-
-TEST(ForEach, BindsRecursiveCombinations) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class C { class D { int x; int y; }; class E { int y; int z; }; };",
-      recordDecl(hasName("C"),
-                 forEach(recordDecl(forEach(fieldDecl().bind("f"))))),
-      new VerifyIdIsBoundTo<FieldDecl>("f", 4)));
-}
-
-TEST(ForEachDescendant, BindsOneNode) {
-  EXPECT_TRUE(matchAndVerifyResultTrue("class C { class D { int x; }; };",
-      recordDecl(hasName("C"),
-                 forEachDescendant(fieldDecl(hasName("x")).bind("x"))),
-      new VerifyIdIsBoundTo<FieldDecl>("x", 1)));
-}
-
-TEST(ForEachDescendant, NestedForEachDescendant) {
-  DeclarationMatcher m = recordDecl(
-      isDefinition(), decl().bind("x"), hasName("C"));
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-    "class A { class B { class C {}; }; };",
-    recordDecl(hasName("A"), anyOf(m, forEachDescendant(m))),
-    new VerifyIdIsBoundTo<Decl>("x", "C")));
-
-  // FIXME: This is not really a useful matcher, but the result is still
-  // surprising (currently binds "A").
-  //EXPECT_TRUE(matchAndVerifyResultTrue(
-  //  "class A { class B { class C {}; }; };",
-  //  recordDecl(hasName("A"), allOf(hasDescendant(m), anyOf(m, anything()))),
-  //  new VerifyIdIsBoundTo<Decl>("x", "C")));
-}
-
-TEST(ForEachDescendant, BindsMultipleNodes) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class C { class D { int x; int y; }; "
-      "          class E { class F { int y; int z; }; }; };",
-      recordDecl(hasName("C"), forEachDescendant(fieldDecl().bind("f"))),
-      new VerifyIdIsBoundTo<FieldDecl>("f", 4)));
-}
-
-TEST(ForEachDescendant, BindsRecursiveCombinations) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class C { class D { "
-      "          class E { class F { class G { int y; int z; }; }; }; }; };",
-      recordDecl(hasName("C"), forEachDescendant(recordDecl(
-          forEachDescendant(fieldDecl().bind("f"))))),
-      new VerifyIdIsBoundTo<FieldDecl>("f", 8)));
-}
-
-TEST(ForEachDescendant, BindsCorrectNodes) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class C { void f(); int i; };",
-      recordDecl(hasName("C"), forEachDescendant(decl().bind("decl"))),
-      new VerifyIdIsBoundTo<FieldDecl>("decl", 1)));
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class C { void f() {} int i; };",
-      recordDecl(hasName("C"), forEachDescendant(decl().bind("decl"))),
-      new VerifyIdIsBoundTo<FunctionDecl>("decl", 1)));
-}
-
-TEST(FindAll, BindsNodeOnMatch) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class A {};",
-      recordDecl(hasName("::A"), findAll(recordDecl(hasName("::A")).bind("v"))),
-      new VerifyIdIsBoundTo<CXXRecordDecl>("v", 1)));
-}
-
-TEST(FindAll, BindsDescendantNodeOnMatch) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class A { int a; int b; };",
-      recordDecl(hasName("::A"), findAll(fieldDecl().bind("v"))),
-      new VerifyIdIsBoundTo<FieldDecl>("v", 2)));
-}
-
-TEST(FindAll, BindsNodeAndDescendantNodesOnOneMatch) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class A { int a; int b; };",
-      recordDecl(hasName("::A"),
-                 findAll(decl(anyOf(recordDecl(hasName("::A")).bind("v"),
-                                    fieldDecl().bind("v"))))),
-      new VerifyIdIsBoundTo<Decl>("v", 3)));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class A { class B {}; class C {}; };",
-      recordDecl(hasName("::A"), findAll(recordDecl(isDefinition()).bind("v"))),
-      new VerifyIdIsBoundTo<CXXRecordDecl>("v", 3)));
-}
-
-TEST(EachOf, TriggersForEachMatch) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class A { int a; int b; };",
-      recordDecl(eachOf(has(fieldDecl(hasName("a")).bind("v")),
-                        has(fieldDecl(hasName("b")).bind("v")))),
-      new VerifyIdIsBoundTo<FieldDecl>("v", 2)));
-}
-
-TEST(EachOf, BehavesLikeAnyOfUnlessBothMatch) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class A { int a; int c; };",
-      recordDecl(eachOf(has(fieldDecl(hasName("a")).bind("v")),
-                        has(fieldDecl(hasName("b")).bind("v")))),
-      new VerifyIdIsBoundTo<FieldDecl>("v", 1)));
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class A { int c; int b; };",
-      recordDecl(eachOf(has(fieldDecl(hasName("a")).bind("v")),
-                        has(fieldDecl(hasName("b")).bind("v")))),
-      new VerifyIdIsBoundTo<FieldDecl>("v", 1)));
-  EXPECT_TRUE(notMatches(
-      "class A { int c; int d; };",
-      recordDecl(eachOf(has(fieldDecl(hasName("a")).bind("v")),
-                        has(fieldDecl(hasName("b")).bind("v"))))));
-}
-
-TEST(IsTemplateInstantiation, MatchesImplicitClassTemplateInstantiation) {
-  // Make sure that we can both match the class by name (::X) and by the type
-  // the template was instantiated with (via a field).
-
-  EXPECT_TRUE(matches(
-      "template <typename T> class X {}; class A {}; X<A> x;",
-      recordDecl(hasName("::X"), isTemplateInstantiation())));
-
-  EXPECT_TRUE(matches(
-      "template <typename T> class X { T t; }; class A {}; X<A> x;",
-      recordDecl(isTemplateInstantiation(), hasDescendant(
-          fieldDecl(hasType(recordDecl(hasName("A"))))))));
-}
-
-TEST(IsTemplateInstantiation, MatchesImplicitFunctionTemplateInstantiation) {
-  EXPECT_TRUE(matches(
-      "template <typename T> void f(T t) {} class A {}; void g() { f(A()); }",
-      functionDecl(hasParameter(0, hasType(recordDecl(hasName("A")))),
-               isTemplateInstantiation())));
-}
-
-TEST(IsTemplateInstantiation, MatchesExplicitClassTemplateInstantiation) {
-  EXPECT_TRUE(matches(
-      "template <typename T> class X { T t; }; class A {};"
-      "template class X<A>;",
-      recordDecl(isTemplateInstantiation(), hasDescendant(
-          fieldDecl(hasType(recordDecl(hasName("A"))))))));
-}
-
-TEST(IsTemplateInstantiation,
-     MatchesInstantiationOfPartiallySpecializedClassTemplate) {
-  EXPECT_TRUE(matches(
-      "template <typename T> class X {};"
-      "template <typename T> class X<T*> {}; class A {}; X<A*> x;",
-      recordDecl(hasName("::X"), isTemplateInstantiation())));
-}
-
-TEST(IsTemplateInstantiation,
-     MatchesInstantiationOfClassTemplateNestedInNonTemplate) {
-  EXPECT_TRUE(matches(
-      "class A {};"
-      "class X {"
-      "  template <typename U> class Y { U u; };"
-      "  Y<A> y;"
-      "};",
-      recordDecl(hasName("::X::Y"), isTemplateInstantiation())));
-}
-
-TEST(IsTemplateInstantiation, DoesNotMatchInstantiationsInsideOfInstantiation) {
-  // FIXME: Figure out whether this makes sense. It doesn't affect the
-  // normal use case as long as the uppermost instantiation always is marked
-  // as template instantiation, but it might be confusing as a predicate.
-  EXPECT_TRUE(matches(
-      "class A {};"
-      "template <typename T> class X {"
-      "  template <typename U> class Y { U u; };"
-      "  Y<T> y;"
-      "}; X<A> x;",
-      recordDecl(hasName("::X<A>::Y"), unless(isTemplateInstantiation()))));
-}
-
-TEST(IsTemplateInstantiation, DoesNotMatchExplicitClassTemplateSpecialization) {
-  EXPECT_TRUE(notMatches(
-      "template <typename T> class X {}; class A {};"
-      "template <> class X<A> {}; X<A> x;",
-      recordDecl(hasName("::X"), isTemplateInstantiation())));
-}
-
-TEST(IsTemplateInstantiation, DoesNotMatchNonTemplate) {
-  EXPECT_TRUE(notMatches(
-      "class A {}; class Y { A a; };",
-      recordDecl(isTemplateInstantiation())));
-}
-
-TEST(IsExplicitTemplateSpecialization,
-     DoesNotMatchPrimaryTemplate) {
-  EXPECT_TRUE(notMatches(
-      "template <typename T> class X {};",
-      recordDecl(isExplicitTemplateSpecialization())));
-  EXPECT_TRUE(notMatches(
-      "template <typename T> void f(T t);",
-      functionDecl(isExplicitTemplateSpecialization())));
-}
-
-TEST(IsExplicitTemplateSpecialization,
-     DoesNotMatchExplicitTemplateInstantiations) {
-  EXPECT_TRUE(notMatches(
-      "template <typename T> class X {};"
-      "template class X<int>; extern template class X<long>;",
-      recordDecl(isExplicitTemplateSpecialization())));
-  EXPECT_TRUE(notMatches(
-      "template <typename T> void f(T t) {}"
-      "template void f(int t); extern template void f(long t);",
-      functionDecl(isExplicitTemplateSpecialization())));
-}
-
-TEST(IsExplicitTemplateSpecialization,
-     DoesNotMatchImplicitTemplateInstantiations) {
-  EXPECT_TRUE(notMatches(
-      "template <typename T> class X {}; X<int> x;",
-      recordDecl(isExplicitTemplateSpecialization())));
-  EXPECT_TRUE(notMatches(
-      "template <typename T> void f(T t); void g() { f(10); }",
-      functionDecl(isExplicitTemplateSpecialization())));
-}
-
-TEST(IsExplicitTemplateSpecialization,
-     MatchesExplicitTemplateSpecializations) {
-  EXPECT_TRUE(matches(
-      "template <typename T> class X {};"
-      "template<> class X<int> {};",
-      recordDecl(isExplicitTemplateSpecialization())));
-  EXPECT_TRUE(matches(
-      "template <typename T> void f(T t) {}"
-      "template<> void f(int t) {}",
-      functionDecl(isExplicitTemplateSpecialization())));
-}
-
-TEST(HasAncenstor, MatchesDeclarationAncestors) {
-  EXPECT_TRUE(matches(
-      "class A { class B { class C {}; }; };",
-      recordDecl(hasName("C"), hasAncestor(recordDecl(hasName("A"))))));
-}
-
-TEST(HasAncenstor, FailsIfNoAncestorMatches) {
-  EXPECT_TRUE(notMatches(
-      "class A { class B { class C {}; }; };",
-      recordDecl(hasName("C"), hasAncestor(recordDecl(hasName("X"))))));
-}
-
-TEST(HasAncestor, MatchesDeclarationsThatGetVisitedLater) {
-  EXPECT_TRUE(matches(
-      "class A { class B { void f() { C c; } class C {}; }; };",
-      varDecl(hasName("c"), hasType(recordDecl(hasName("C"), 
-          hasAncestor(recordDecl(hasName("A"))))))));
-}
-
-TEST(HasAncenstor, MatchesStatementAncestors) {
-  EXPECT_TRUE(matches(
-      "void f() { if (true) { while (false) { 42; } } }",
-      integerLiteral(equals(42), hasAncestor(ifStmt()))));
-}
-
-TEST(HasAncestor, DrillsThroughDifferentHierarchies) {
-  EXPECT_TRUE(matches(
-      "void f() { if (true) { int x = 42; } }",
-      integerLiteral(equals(42), hasAncestor(functionDecl(hasName("f"))))));
-}
-
-TEST(HasAncestor, BindsRecursiveCombinations) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class C { class D { class E { class F { int y; }; }; }; };",
-      fieldDecl(hasAncestor(recordDecl(hasAncestor(recordDecl().bind("r"))))),
-      new VerifyIdIsBoundTo<CXXRecordDecl>("r", 1)));
-}
-
-TEST(HasAncestor, BindsCombinationsWithHasDescendant) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class C { class D { class E { class F { int y; }; }; }; };",
-      fieldDecl(hasAncestor(
-          decl(
-            hasDescendant(recordDecl(isDefinition(),
-                                     hasAncestor(recordDecl())))
-          ).bind("d")
-      )),
-      new VerifyIdIsBoundTo<CXXRecordDecl>("d", "E")));
-}
-
-TEST(HasAncestor, MatchesClosestAncestor) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "template <typename T> struct C {"
-      "  void f(int) {"
-      "    struct I { void g(T) { int x; } } i; i.g(42);"
-      "  }"
-      "};"
-      "template struct C<int>;",
-      varDecl(hasName("x"),
-              hasAncestor(functionDecl(hasParameter(
-                  0, varDecl(hasType(asString("int"))))).bind("f"))).bind("v"),
-      new VerifyIdIsBoundTo<FunctionDecl>("f", "g", 2)));
-}
-
-TEST(HasAncestor, MatchesInTemplateInstantiations) {
-  EXPECT_TRUE(matches(
-      "template <typename T> struct A { struct B { struct C { T t; }; }; }; "
-      "A<int>::B::C a;",
-      fieldDecl(hasType(asString("int")),
-                hasAncestor(recordDecl(hasName("A"))))));
-}
-
-TEST(HasAncestor, MatchesInImplicitCode) {
-  EXPECT_TRUE(matches(
-      "struct X {}; struct A { A() {} X x; };",
-      constructorDecl(
-          hasAnyConstructorInitializer(withInitializer(expr(
-              hasAncestor(recordDecl(hasName("A")))))))));
-}
-
-TEST(HasParent, MatchesOnlyParent) {
-  EXPECT_TRUE(matches(
-      "void f() { if (true) { int x = 42; } }",
-      compoundStmt(hasParent(ifStmt()))));
-  EXPECT_TRUE(notMatches(
-      "void f() { for (;;) { int x = 42; } }",
-      compoundStmt(hasParent(ifStmt()))));
-  EXPECT_TRUE(notMatches(
-      "void f() { if (true) for (;;) { int x = 42; } }",
-      compoundStmt(hasParent(ifStmt()))));
-}
-
-TEST(HasAncestor, MatchesAllAncestors) {
-  EXPECT_TRUE(matches(
-      "template <typename T> struct C { static void f() { 42; } };"
-      "void t() { C<int>::f(); }",
-      integerLiteral(
-          equals(42),
-          allOf(hasAncestor(recordDecl(isTemplateInstantiation())),
-                hasAncestor(recordDecl(unless(isTemplateInstantiation())))))));
-}
-
-TEST(HasParent, MatchesAllParents) {
-  EXPECT_TRUE(matches(
-      "template <typename T> struct C { static void f() { 42; } };"
-      "void t() { C<int>::f(); }",
-      integerLiteral(
-          equals(42),
-          hasParent(compoundStmt(hasParent(functionDecl(
-              hasParent(recordDecl(isTemplateInstantiation())))))))));
-  EXPECT_TRUE(matches(
-      "template <typename T> struct C { static void f() { 42; } };"
-      "void t() { C<int>::f(); }",
-      integerLiteral(
-          equals(42),
-          hasParent(compoundStmt(hasParent(functionDecl(
-              hasParent(recordDecl(unless(isTemplateInstantiation()))))))))));
-  EXPECT_TRUE(matches(
-      "template <typename T> struct C { static void f() { 42; } };"
-      "void t() { C<int>::f(); }",
-      integerLiteral(equals(42),
-                     hasParent(compoundStmt(allOf(
-                         hasParent(functionDecl(
-                             hasParent(recordDecl(isTemplateInstantiation())))),
-                         hasParent(functionDecl(hasParent(recordDecl(
-                             unless(isTemplateInstantiation())))))))))));
-  EXPECT_TRUE(
-      notMatches("template <typename T> struct C { static void f() {} };"
-                 "void t() { C<int>::f(); }",
-                 compoundStmt(hasParent(recordDecl()))));
-}
-
-TEST(TypeMatching, MatchesTypes) {
-  EXPECT_TRUE(matches("struct S {};", qualType().bind("loc")));
-}
-
-TEST(TypeMatching, MatchesArrayTypes) {
-  EXPECT_TRUE(matches("int a[] = {2,3};", arrayType()));
-  EXPECT_TRUE(matches("int a[42];", arrayType()));
-  EXPECT_TRUE(matches("void f(int b) { int a[b]; }", arrayType()));
-
-  EXPECT_TRUE(notMatches("struct A {}; A a[7];",
-                         arrayType(hasElementType(builtinType()))));
-
-  EXPECT_TRUE(matches(
-      "int const a[] = { 2, 3 };",
-      qualType(arrayType(hasElementType(builtinType())))));
-  EXPECT_TRUE(matches(
-      "int const a[] = { 2, 3 };",
-      qualType(isConstQualified(), arrayType(hasElementType(builtinType())))));
-  EXPECT_TRUE(matches(
-      "typedef const int T; T x[] = { 1, 2 };",
-      qualType(isConstQualified(), arrayType())));
-
-  EXPECT_TRUE(notMatches(
-      "int a[] = { 2, 3 };",
-      qualType(isConstQualified(), arrayType(hasElementType(builtinType())))));
-  EXPECT_TRUE(notMatches(
-      "int a[] = { 2, 3 };",
-      qualType(arrayType(hasElementType(isConstQualified(), builtinType())))));
-  EXPECT_TRUE(notMatches(
-      "int const a[] = { 2, 3 };",
-      qualType(arrayType(hasElementType(builtinType())),
-               unless(isConstQualified()))));
-
-  EXPECT_TRUE(matches("int a[2];",
-                      constantArrayType(hasElementType(builtinType()))));
-  EXPECT_TRUE(matches("const int a = 0;", qualType(isInteger())));
-}
-
-TEST(TypeMatching, MatchesComplexTypes) {
-  EXPECT_TRUE(matches("_Complex float f;", complexType()));
-  EXPECT_TRUE(matches(
-    "_Complex float f;",
-    complexType(hasElementType(builtinType()))));
-  EXPECT_TRUE(notMatches(
-    "_Complex float f;",
-    complexType(hasElementType(isInteger()))));
-}
-
-TEST(TypeMatching, MatchesConstantArrayTypes) {
-  EXPECT_TRUE(matches("int a[2];", constantArrayType()));
-  EXPECT_TRUE(notMatches(
-    "void f() { int a[] = { 2, 3 }; int b[a[0]]; }",
-    constantArrayType(hasElementType(builtinType()))));
-
-  EXPECT_TRUE(matches("int a[42];", constantArrayType(hasSize(42))));
-  EXPECT_TRUE(matches("int b[2*21];", constantArrayType(hasSize(42))));
-  EXPECT_TRUE(notMatches("int c[41], d[43];", constantArrayType(hasSize(42))));
-}
-
-TEST(TypeMatching, MatchesDependentSizedArrayTypes) {
-  EXPECT_TRUE(matches(
-    "template <typename T, int Size> class array { T data[Size]; };",
-    dependentSizedArrayType()));
-  EXPECT_TRUE(notMatches(
-    "int a[42]; int b[] = { 2, 3 }; void f() { int c[b[0]]; }",
-    dependentSizedArrayType()));
-}
-
-TEST(TypeMatching, MatchesIncompleteArrayType) {
-  EXPECT_TRUE(matches("int a[] = { 2, 3 };", incompleteArrayType()));
-  EXPECT_TRUE(matches("void f(int a[]) {}", incompleteArrayType()));
-
-  EXPECT_TRUE(notMatches("int a[42]; void f() { int b[a[0]]; }",
-                         incompleteArrayType()));
-}
-
-TEST(TypeMatching, MatchesVariableArrayType) {
-  EXPECT_TRUE(matches("void f(int b) { int a[b]; }", variableArrayType()));
-  EXPECT_TRUE(notMatches("int a[] = {2, 3}; int b[42];", variableArrayType()));
-  
-  EXPECT_TRUE(matches(
-    "void f(int b) { int a[b]; }",
-    variableArrayType(hasSizeExpr(ignoringImpCasts(declRefExpr(to(
-      varDecl(hasName("b")))))))));
-}
-
-TEST(TypeMatching, MatchesAtomicTypes) {
-  EXPECT_TRUE(matches("_Atomic(int) i;", atomicType()));
-
-  EXPECT_TRUE(matches("_Atomic(int) i;",
-                      atomicType(hasValueType(isInteger()))));
-  EXPECT_TRUE(notMatches("_Atomic(float) f;",
-                         atomicType(hasValueType(isInteger()))));
-}
-
-TEST(TypeMatching, MatchesAutoTypes) {
-  EXPECT_TRUE(matches("auto i = 2;", autoType()));
-  EXPECT_TRUE(matches("int v[] = { 2, 3 }; void f() { for (int i : v) {} }",
-                      autoType()));
-
-  // FIXME: Matching against the type-as-written can't work here, because the
-  //        type as written was not deduced.
-  //EXPECT_TRUE(matches("auto a = 1;",
-  //                    autoType(hasDeducedType(isInteger()))));
-  //EXPECT_TRUE(notMatches("auto b = 2.0;",
-  //                       autoType(hasDeducedType(isInteger()))));
-}
-
-TEST(TypeMatching, MatchesFunctionTypes) {
-  EXPECT_TRUE(matches("int (*f)(int);", functionType()));
-  EXPECT_TRUE(matches("void f(int i) {}", functionType()));
-}
-
-TEST(TypeMatching, MatchesParenType) {
-  EXPECT_TRUE(
-      matches("int (*array)[4];", varDecl(hasType(pointsTo(parenType())))));
-  EXPECT_TRUE(notMatches("int *array[4];", varDecl(hasType(parenType()))));
-
-  EXPECT_TRUE(matches(
-      "int (*ptr_to_func)(int);",
-      varDecl(hasType(pointsTo(parenType(innerType(functionType())))))));
-  EXPECT_TRUE(notMatches(
-      "int (*ptr_to_array)[4];",
-      varDecl(hasType(pointsTo(parenType(innerType(functionType())))))));
-}
-
-TEST(TypeMatching, PointerTypes) {
-  // FIXME: Reactive when these tests can be more specific (not matching
-  // implicit code on certain platforms), likely when we have hasDescendant for
-  // Types/TypeLocs.
-  //EXPECT_TRUE(matchAndVerifyResultTrue(
-  //    "int* a;",
-  //    pointerTypeLoc(pointeeLoc(typeLoc().bind("loc"))),
-  //    new VerifyIdIsBoundTo<TypeLoc>("loc", 1)));
-  //EXPECT_TRUE(matchAndVerifyResultTrue(
-  //    "int* a;",
-  //    pointerTypeLoc().bind("loc"),
-  //    new VerifyIdIsBoundTo<TypeLoc>("loc", 1)));
-  EXPECT_TRUE(matches(
-      "int** a;",
-      loc(pointerType(pointee(qualType())))));
-  EXPECT_TRUE(matches(
-      "int** a;",
-      loc(pointerType(pointee(pointerType())))));
-  EXPECT_TRUE(matches(
-      "int* b; int* * const a = &b;",
-      loc(qualType(isConstQualified(), pointerType()))));
-
-  std::string Fragment = "struct A { int i; }; int A::* ptr = &A::i;";
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ptr"),
-                                           hasType(blockPointerType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("ptr"),
-                                        hasType(memberPointerType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ptr"),
-                                           hasType(pointerType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ptr"),
-                                           hasType(referenceType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ptr"),
-                                           hasType(lValueReferenceType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ptr"),
-                                           hasType(rValueReferenceType()))));
-
-  Fragment = "int *ptr;";
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ptr"),
-                                           hasType(blockPointerType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ptr"),
-                                           hasType(memberPointerType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("ptr"),
-                                        hasType(pointerType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ptr"),
-                                           hasType(referenceType()))));
-
-  Fragment = "int a; int &ref = a;";
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ref"),
-                                           hasType(blockPointerType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ref"),
-                                           hasType(memberPointerType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ref"),
-                                           hasType(pointerType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("ref"),
-                                        hasType(referenceType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("ref"),
-                                        hasType(lValueReferenceType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ref"),
-                                           hasType(rValueReferenceType()))));
-
-  Fragment = "int &&ref = 2;";
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ref"),
-                                           hasType(blockPointerType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ref"),
-                                           hasType(memberPointerType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ref"),
-                                           hasType(pointerType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("ref"),
-                                        hasType(referenceType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("ref"),
-                                           hasType(lValueReferenceType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("ref"),
-                                        hasType(rValueReferenceType()))));
-}
-
-TEST(TypeMatching, AutoRefTypes) {
-  std::string Fragment = "auto a = 1;"
-                         "auto b = a;"
-                         "auto &c = a;"
-                         "auto &&d = c;"
-                         "auto &&e = 2;";
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("a"),
-                                           hasType(referenceType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("b"),
-                                           hasType(referenceType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("c"),
-                                        hasType(referenceType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("c"),
-                                        hasType(lValueReferenceType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("c"),
-                                           hasType(rValueReferenceType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("d"),
-                                        hasType(referenceType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("d"),
-                                        hasType(lValueReferenceType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("d"),
-                                           hasType(rValueReferenceType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("e"),
-                                        hasType(referenceType()))));
-  EXPECT_TRUE(notMatches(Fragment, varDecl(hasName("e"),
-                                           hasType(lValueReferenceType()))));
-  EXPECT_TRUE(matches(Fragment, varDecl(hasName("e"),
-                                        hasType(rValueReferenceType()))));
-}
-
-TEST(TypeMatching, PointeeTypes) {
-  EXPECT_TRUE(matches("int b; int &a = b;",
-                      referenceType(pointee(builtinType()))));
-  EXPECT_TRUE(matches("int *a;", pointerType(pointee(builtinType()))));
-
-  EXPECT_TRUE(matches("int *a;",
-                      loc(pointerType(pointee(builtinType())))));
-
-  EXPECT_TRUE(matches(
-      "int const *A;",
-      pointerType(pointee(isConstQualified(), builtinType()))));
-  EXPECT_TRUE(notMatches(
-      "int *A;",
-      pointerType(pointee(isConstQualified(), builtinType()))));
-}
-
-TEST(TypeMatching, MatchesPointersToConstTypes) {
-  EXPECT_TRUE(matches("int b; int * const a = &b;",
-                      loc(pointerType())));
-  EXPECT_TRUE(matches("int b; int * const a = &b;",
-                      loc(pointerType())));
-  EXPECT_TRUE(matches(
-      "int b; const int * a = &b;",
-      loc(pointerType(pointee(builtinType())))));
-  EXPECT_TRUE(matches(
-      "int b; const int * a = &b;",
-      pointerType(pointee(builtinType()))));
-}
-
-TEST(TypeMatching, MatchesTypedefTypes) {
-  EXPECT_TRUE(matches("typedef int X; X a;", varDecl(hasName("a"),
-                                                     hasType(typedefType()))));
-}
-
-TEST(TypeMatching, MatchesTemplateSpecializationType) {
-  EXPECT_TRUE(matches("template <typename T> class A{}; A<int> a;",
-                      templateSpecializationType()));
-}
-
-TEST(TypeMatching, MatchesRecordType) {
-  EXPECT_TRUE(matches("class C{}; C c;", recordType()));
-  EXPECT_TRUE(matches("struct S{}; S s;",
-                      recordType(hasDeclaration(recordDecl(hasName("S"))))));
-  EXPECT_TRUE(notMatches("int i;",
-                         recordType(hasDeclaration(recordDecl(hasName("S"))))));
-}
-
-TEST(TypeMatching, MatchesElaboratedType) {
-  EXPECT_TRUE(matches(
-    "namespace N {"
-    "  namespace M {"
-    "    class D {};"
-    "  }"
-    "}"
-    "N::M::D d;", elaboratedType()));
-  EXPECT_TRUE(matches("class C {} c;", elaboratedType()));
-  EXPECT_TRUE(notMatches("class C {}; C c;", elaboratedType()));
-}
-
-TEST(ElaboratedTypeNarrowing, hasQualifier) {
-  EXPECT_TRUE(matches(
-    "namespace N {"
-    "  namespace M {"
-    "    class D {};"
-    "  }"
-    "}"
-    "N::M::D d;",
-    elaboratedType(hasQualifier(hasPrefix(specifiesNamespace(hasName("N")))))));
-  EXPECT_TRUE(notMatches(
-    "namespace M {"
-    "  class D {};"
-    "}"
-    "M::D d;",
-    elaboratedType(hasQualifier(hasPrefix(specifiesNamespace(hasName("N")))))));
-  EXPECT_TRUE(notMatches(
-    "struct D {"
-    "} d;",
-    elaboratedType(hasQualifier(nestedNameSpecifier()))));
-}
-
-TEST(ElaboratedTypeNarrowing, namesType) {
-  EXPECT_TRUE(matches(
-    "namespace N {"
-    "  namespace M {"
-    "    class D {};"
-    "  }"
-    "}"
-    "N::M::D d;",
-    elaboratedType(elaboratedType(namesType(recordType(
-        hasDeclaration(namedDecl(hasName("D")))))))));
-  EXPECT_TRUE(notMatches(
-    "namespace M {"
-    "  class D {};"
-    "}"
-    "M::D d;",
-    elaboratedType(elaboratedType(namesType(typedefType())))));
-}
-
-TEST(NNS, MatchesNestedNameSpecifiers) {
-  EXPECT_TRUE(matches("namespace ns { struct A {}; } ns::A a;",
-                      nestedNameSpecifier()));
-  EXPECT_TRUE(matches("template <typename T> class A { typename T::B b; };",
-                      nestedNameSpecifier()));
-  EXPECT_TRUE(matches("struct A { void f(); }; void A::f() {}",
-                      nestedNameSpecifier()));
-
-  EXPECT_TRUE(matches(
-    "struct A { static void f() {} }; void g() { A::f(); }",
-    nestedNameSpecifier()));
-  EXPECT_TRUE(notMatches(
-    "struct A { static void f() {} }; void g(A* a) { a->f(); }",
-    nestedNameSpecifier()));
-}
-
-TEST(NullStatement, SimpleCases) {
-  EXPECT_TRUE(matches("void f() {int i;;}", nullStmt()));
-  EXPECT_TRUE(notMatches("void f() {int i;}", nullStmt()));
-}
-
-TEST(NNS, MatchesTypes) {
-  NestedNameSpecifierMatcher Matcher = nestedNameSpecifier(
-    specifiesType(hasDeclaration(recordDecl(hasName("A")))));
-  EXPECT_TRUE(matches("struct A { struct B {}; }; A::B b;", Matcher));
-  EXPECT_TRUE(matches("struct A { struct B { struct C {}; }; }; A::B::C c;",
-                      Matcher));
-  EXPECT_TRUE(notMatches("namespace A { struct B {}; } A::B b;", Matcher));
-}
-
-TEST(NNS, MatchesNamespaceDecls) {
-  NestedNameSpecifierMatcher Matcher = nestedNameSpecifier(
-    specifiesNamespace(hasName("ns")));
-  EXPECT_TRUE(matches("namespace ns { struct A {}; } ns::A a;", Matcher));
-  EXPECT_TRUE(notMatches("namespace xx { struct A {}; } xx::A a;", Matcher));
-  EXPECT_TRUE(notMatches("struct ns { struct A {}; }; ns::A a;", Matcher));
-}
-
-TEST(NNS, BindsNestedNameSpecifiers) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "namespace ns { struct E { struct B {}; }; } ns::E::B b;",
-      nestedNameSpecifier(specifiesType(asString("struct ns::E"))).bind("nns"),
-      new VerifyIdIsBoundTo<NestedNameSpecifier>("nns", "ns::struct E::")));
-}
-
-TEST(NNS, BindsNestedNameSpecifierLocs) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "namespace ns { struct B {}; } ns::B b;",
-      loc(nestedNameSpecifier()).bind("loc"),
-      new VerifyIdIsBoundTo<NestedNameSpecifierLoc>("loc", 1)));
-}
-
-TEST(NNS, MatchesNestedNameSpecifierPrefixes) {
-  EXPECT_TRUE(matches(
-      "struct A { struct B { struct C {}; }; }; A::B::C c;",
-      nestedNameSpecifier(hasPrefix(specifiesType(asString("struct A"))))));
-  EXPECT_TRUE(matches(
-      "struct A { struct B { struct C {}; }; }; A::B::C c;",
-      nestedNameSpecifierLoc(hasPrefix(
-          specifiesTypeLoc(loc(qualType(asString("struct A"))))))));
-}
-
-TEST(NNS, DescendantsOfNestedNameSpecifiers) {
-  std::string Fragment =
-      "namespace a { struct A { struct B { struct C {}; }; }; };"
-      "void f() { a::A::B::C c; }";
-  EXPECT_TRUE(matches(
-      Fragment,
-      nestedNameSpecifier(specifiesType(asString("struct a::A::B")),
-                          hasDescendant(nestedNameSpecifier(
-                              specifiesNamespace(hasName("a")))))));
-  EXPECT_TRUE(notMatches(
-      Fragment,
-      nestedNameSpecifier(specifiesType(asString("struct a::A::B")),
-                          has(nestedNameSpecifier(
-                              specifiesNamespace(hasName("a")))))));
-  EXPECT_TRUE(matches(
-      Fragment,
-      nestedNameSpecifier(specifiesType(asString("struct a::A")),
-                          has(nestedNameSpecifier(
-                              specifiesNamespace(hasName("a")))))));
-
-  // Not really useful because a NestedNameSpecifier can af at most one child,
-  // but to complete the interface.
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      Fragment,
-      nestedNameSpecifier(specifiesType(asString("struct a::A::B")),
-                          forEach(nestedNameSpecifier().bind("x"))),
-      new VerifyIdIsBoundTo<NestedNameSpecifier>("x", 1)));
-}
-
-TEST(NNS, NestedNameSpecifiersAsDescendants) {
-  std::string Fragment =
-      "namespace a { struct A { struct B { struct C {}; }; }; };"
-      "void f() { a::A::B::C c; }";
-  EXPECT_TRUE(matches(
-      Fragment,
-      decl(hasDescendant(nestedNameSpecifier(specifiesType(
-          asString("struct a::A")))))));
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      Fragment,
-      functionDecl(hasName("f"),
-                   forEachDescendant(nestedNameSpecifier().bind("x"))),
-      // Nested names: a, a::A and a::A::B.
-      new VerifyIdIsBoundTo<NestedNameSpecifier>("x", 3)));
-}
-
-TEST(NNSLoc, DescendantsOfNestedNameSpecifierLocs) {
-  std::string Fragment =
-      "namespace a { struct A { struct B { struct C {}; }; }; };"
-      "void f() { a::A::B::C c; }";
-  EXPECT_TRUE(matches(
-      Fragment,
-      nestedNameSpecifierLoc(loc(specifiesType(asString("struct a::A::B"))),
-                             hasDescendant(loc(nestedNameSpecifier(
-                                 specifiesNamespace(hasName("a"))))))));
-  EXPECT_TRUE(notMatches(
-      Fragment,
-      nestedNameSpecifierLoc(loc(specifiesType(asString("struct a::A::B"))),
-                             has(loc(nestedNameSpecifier(
-                                 specifiesNamespace(hasName("a"))))))));
-  EXPECT_TRUE(matches(
-      Fragment,
-      nestedNameSpecifierLoc(loc(specifiesType(asString("struct a::A"))),
-                             has(loc(nestedNameSpecifier(
-                                 specifiesNamespace(hasName("a"))))))));
-
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      Fragment,
-      nestedNameSpecifierLoc(loc(specifiesType(asString("struct a::A::B"))),
-                             forEach(nestedNameSpecifierLoc().bind("x"))),
-      new VerifyIdIsBoundTo<NestedNameSpecifierLoc>("x", 1)));
-}
-
-TEST(NNSLoc, NestedNameSpecifierLocsAsDescendants) {
-  std::string Fragment =
-      "namespace a { struct A { struct B { struct C {}; }; }; };"
-      "void f() { a::A::B::C c; }";
-  EXPECT_TRUE(matches(
-      Fragment,
-      decl(hasDescendant(loc(nestedNameSpecifier(specifiesType(
-          asString("struct a::A"))))))));
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      Fragment,
-      functionDecl(hasName("f"),
-                   forEachDescendant(nestedNameSpecifierLoc().bind("x"))),
-      // Nested names: a, a::A and a::A::B.
-      new VerifyIdIsBoundTo<NestedNameSpecifierLoc>("x", 3)));
-}
-
-template <typename T> class VerifyMatchOnNode : public BoundNodesCallback {
-public:
-  VerifyMatchOnNode(StringRef Id, const internal::Matcher<T> &InnerMatcher,
-                    StringRef InnerId)
-      : Id(Id), InnerMatcher(InnerMatcher), InnerId(InnerId) {
-  }
-
-  virtual bool run(const BoundNodes *Nodes) { return false; }
-
-  virtual bool run(const BoundNodes *Nodes, ASTContext *Context) {
-    const T *Node = Nodes->getNodeAs<T>(Id);
-    return selectFirst<const T>(InnerId,
-                                match(InnerMatcher, *Node, *Context)) != NULL;
-  }
-private:
-  std::string Id;
-  internal::Matcher<T> InnerMatcher;
-  std::string InnerId;
-};
-
-TEST(MatchFinder, CanMatchDeclarationsRecursively) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class X { class Y {}; };", recordDecl(hasName("::X")).bind("X"),
-      new VerifyMatchOnNode<clang::Decl>(
-          "X", decl(hasDescendant(recordDecl(hasName("X::Y")).bind("Y"))),
-          "Y")));
-  EXPECT_TRUE(matchAndVerifyResultFalse(
-      "class X { class Y {}; };", recordDecl(hasName("::X")).bind("X"),
-      new VerifyMatchOnNode<clang::Decl>(
-          "X", decl(hasDescendant(recordDecl(hasName("X::Z")).bind("Z"))),
-          "Z")));
-}
-
-TEST(MatchFinder, CanMatchStatementsRecursively) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "void f() { if (1) { for (;;) { } } }", ifStmt().bind("if"),
-      new VerifyMatchOnNode<clang::Stmt>(
-          "if", stmt(hasDescendant(forStmt().bind("for"))), "for")));
-  EXPECT_TRUE(matchAndVerifyResultFalse(
-      "void f() { if (1) { for (;;) { } } }", ifStmt().bind("if"),
-      new VerifyMatchOnNode<clang::Stmt>(
-          "if", stmt(hasDescendant(declStmt().bind("decl"))), "decl")));
-}
-
-TEST(MatchFinder, CanMatchSingleNodesRecursively) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class X { class Y {}; };", recordDecl(hasName("::X")).bind("X"),
-      new VerifyMatchOnNode<clang::Decl>(
-          "X", recordDecl(has(recordDecl(hasName("X::Y")).bind("Y"))), "Y")));
-  EXPECT_TRUE(matchAndVerifyResultFalse(
-      "class X { class Y {}; };", recordDecl(hasName("::X")).bind("X"),
-      new VerifyMatchOnNode<clang::Decl>(
-          "X", recordDecl(has(recordDecl(hasName("X::Z")).bind("Z"))), "Z")));
-}
-
-template <typename T>
-class VerifyAncestorHasChildIsEqual : public BoundNodesCallback {
-public:
-  virtual bool run(const BoundNodes *Nodes) { return false; }
-
-  virtual bool run(const BoundNodes *Nodes, ASTContext *Context) {
-    const T *Node = Nodes->getNodeAs<T>("");
-    return verify(*Nodes, *Context, Node);
-  }
-
-  bool verify(const BoundNodes &Nodes, ASTContext &Context, const Stmt *Node) {
-    return selectFirst<const T>(
-        "", match(stmt(hasParent(stmt(has(stmt(equalsNode(Node)))).bind(""))),
-                  *Node, Context)) != NULL;
-  }
-  bool verify(const BoundNodes &Nodes, ASTContext &Context, const Decl *Node) {
-    return selectFirst<const T>(
-        "", match(decl(hasParent(decl(has(decl(equalsNode(Node)))).bind(""))),
-                  *Node, Context)) != NULL;
-  }
-};
-
-TEST(IsEqualTo, MatchesNodesByIdentity) {
-  EXPECT_TRUE(matchAndVerifyResultTrue(
-      "class X { class Y {}; };", recordDecl(hasName("::X::Y")).bind(""),
-      new VerifyAncestorHasChildIsEqual<Decl>()));
-  EXPECT_TRUE(
-      matchAndVerifyResultTrue("void f() { if(true) {} }", ifStmt().bind(""),
-                               new VerifyAncestorHasChildIsEqual<Stmt>()));
-}
-
-class VerifyStartOfTranslationUnit : public MatchFinder::MatchCallback {
-public:
-  VerifyStartOfTranslationUnit() : Called(false) {}
-  virtual void run(const MatchFinder::MatchResult &Result) {
-    EXPECT_TRUE(Called);
-  }
-  virtual void onStartOfTranslationUnit() {
-    Called = true;
-  }
-  bool Called;
-};
-
-TEST(MatchFinder, InterceptsStartOfTranslationUnit) {
-  MatchFinder Finder;
-  VerifyStartOfTranslationUnit VerifyCallback;
-  Finder.addMatcher(decl(), &VerifyCallback);
-  OwningPtr<FrontendActionFactory> Factory(newFrontendActionFactory(&Finder));
-  ASSERT_TRUE(tooling::runToolOnCode(Factory->create(), "int x;"));
-  EXPECT_TRUE(VerifyCallback.Called);
-}
-
-} // end namespace ast_matchers
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/ASTMatchers/ASTMatchersTest.h
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/ASTMatchers/ASTMatchersTest.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/ASTMatchers/ASTMatchersTest.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,134 +0,0 @@
-//===- unittest/Tooling/ASTMatchersTest.h - Matcher tests helpers ------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_UNITTESTS_AST_MATCHERS_AST_MATCHERS_TEST_H
-#define LLVM_CLANG_UNITTESTS_AST_MATCHERS_AST_MATCHERS_TEST_H
-
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/Tooling/Tooling.h"
-#include "gtest/gtest.h"
-
-namespace clang {
-namespace ast_matchers {
-
-using clang::tooling::newFrontendActionFactory;
-using clang::tooling::runToolOnCodeWithArgs;
-using clang::tooling::FrontendActionFactory;
-
-class BoundNodesCallback {
-public:
-  virtual ~BoundNodesCallback() {}
-  virtual bool run(const BoundNodes *BoundNodes) = 0;
-  virtual bool run(const BoundNodes *BoundNodes, ASTContext *Context) = 0;
-};
-
-// If 'FindResultVerifier' is not NULL, sets *Verified to the result of
-// running 'FindResultVerifier' with the bound nodes as argument.
-// If 'FindResultVerifier' is NULL, sets *Verified to true when Run is called.
-class VerifyMatch : public MatchFinder::MatchCallback {
-public:
-  VerifyMatch(BoundNodesCallback *FindResultVerifier, bool *Verified)
-      : Verified(Verified), FindResultReviewer(FindResultVerifier) {}
-
-  virtual void run(const MatchFinder::MatchResult &Result) {
-    if (FindResultReviewer != NULL) {
-      *Verified |= FindResultReviewer->run(&Result.Nodes, Result.Context);
-    } else {
-      *Verified = true;
-    }
-  }
-
-private:
-  bool *const Verified;
-  BoundNodesCallback *const FindResultReviewer;
-};
-
-template <typename T>
-testing::AssertionResult matchesConditionally(const std::string &Code,
-                                              const T &AMatcher,
-                                              bool ExpectMatch,
-                                              llvm::StringRef CompileArg) {
-  bool Found = false;
-  MatchFinder Finder;
-  Finder.addMatcher(AMatcher, new VerifyMatch(0, &Found));
-  OwningPtr<FrontendActionFactory> Factory(newFrontendActionFactory(&Finder));
-  // Some tests use typeof, which is a gnu extension.
-  std::vector<std::string> Args(1, CompileArg);
-  if (!runToolOnCodeWithArgs(Factory->create(), Code, Args)) {
-    return testing::AssertionFailure() << "Parsing error in \"" << Code << "\"";
-  }
-  if (!Found && ExpectMatch) {
-    return testing::AssertionFailure()
-      << "Could not find match in \"" << Code << "\"";
-  } else if (Found && !ExpectMatch) {
-    return testing::AssertionFailure()
-      << "Found unexpected match in \"" << Code << "\"";
-  }
-  return testing::AssertionSuccess();
-}
-
-template <typename T>
-testing::AssertionResult matches(const std::string &Code, const T &AMatcher) {
-  return matchesConditionally(Code, AMatcher, true, "-std=c++11");
-}
-
-template <typename T>
-testing::AssertionResult notMatches(const std::string &Code,
-                                    const T &AMatcher) {
-  return matchesConditionally(Code, AMatcher, false, "-std=c++11");
-}
-
-template <typename T>
-testing::AssertionResult
-matchAndVerifyResultConditionally(const std::string &Code, const T &AMatcher,
-                                  BoundNodesCallback *FindResultVerifier,
-                                  bool ExpectResult) {
-  OwningPtr<BoundNodesCallback> ScopedVerifier(FindResultVerifier);
-  bool VerifiedResult = false;
-  MatchFinder Finder;
-  Finder.addMatcher(
-      AMatcher, new VerifyMatch(FindResultVerifier, &VerifiedResult));
-  OwningPtr<FrontendActionFactory> Factory(newFrontendActionFactory(&Finder));
-  // Some tests use typeof, which is a gnu extension.
-  std::vector<std::string> Args(1, "-std=gnu++98");
-  if (!runToolOnCodeWithArgs(Factory->create(), Code, Args)) {
-    return testing::AssertionFailure() << "Parsing error in \"" << Code << "\"";
-  }
-  if (!VerifiedResult && ExpectResult) {
-    return testing::AssertionFailure()
-      << "Could not verify result in \"" << Code << "\"";
-  } else if (VerifiedResult && !ExpectResult) {
-    return testing::AssertionFailure()
-      << "Verified unexpected result in \"" << Code << "\"";
-  }
-  return testing::AssertionSuccess();
-}
-
-// FIXME: Find better names for these functions (or document what they
-// do more precisely).
-template <typename T>
-testing::AssertionResult
-matchAndVerifyResultTrue(const std::string &Code, const T &AMatcher,
-                         BoundNodesCallback *FindResultVerifier) {
-  return matchAndVerifyResultConditionally(
-      Code, AMatcher, FindResultVerifier, true);
-}
-
-template <typename T>
-testing::AssertionResult
-matchAndVerifyResultFalse(const std::string &Code, const T &AMatcher,
-                          BoundNodesCallback *FindResultVerifier) {
-  return matchAndVerifyResultConditionally(
-      Code, AMatcher, FindResultVerifier, false);
-}
-
-} // end namespace ast_matchers
-} // end namespace clang
-
-#endif  // LLVM_CLANG_UNITTESTS_AST_MATCHERS_AST_MATCHERS_TEST_H

Modified: trunk/contrib/llvm/tools/clang/unittests/Basic/CharInfoTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Basic/CharInfoTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Basic/CharInfoTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,499 +0,0 @@
-//===- unittests/Basic/CharInfoTest.cpp -- ASCII classification tests -----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Basic/CharInfo.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-using namespace clang;
-
-// Check that the CharInfo table has been constructed reasonably.
-TEST(CharInfoTest, validateInfoTable) {
-  using namespace charinfo;
-  EXPECT_EQ((unsigned)CHAR_SPACE,   InfoTable[(unsigned)' ']);
-  EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\t']);
-  EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\f']); // ??
-  EXPECT_EQ((unsigned)CHAR_HORZ_WS, InfoTable[(unsigned)'\v']); // ??
-  EXPECT_EQ((unsigned)CHAR_VERT_WS, InfoTable[(unsigned)'\n']);
-  EXPECT_EQ((unsigned)CHAR_VERT_WS, InfoTable[(unsigned)'\r']);
-  EXPECT_EQ((unsigned)CHAR_UNDER,   InfoTable[(unsigned)'_']);
-  EXPECT_EQ((unsigned)CHAR_PERIOD,  InfoTable[(unsigned)'.']);
-
-  for (unsigned i = 'a'; i <= 'f'; ++i) {
-    EXPECT_EQ((unsigned)CHAR_XLOWER, InfoTable[i]);
-    EXPECT_EQ((unsigned)CHAR_XUPPER, InfoTable[i+'A'-'a']);
-  }
-
-  for (unsigned i = 'g'; i <= 'z'; ++i) {
-    EXPECT_EQ((unsigned)CHAR_LOWER, InfoTable[i]);
-    EXPECT_EQ((unsigned)CHAR_UPPER, InfoTable[i+'A'-'a']);
-  }
-
-  for (unsigned i = '0'; i <= '9'; ++i)
-    EXPECT_EQ((unsigned)CHAR_DIGIT, InfoTable[i]);
-}
-
-// Check various predicates.
-TEST(CharInfoTest, isASCII) {
-  EXPECT_TRUE(isASCII('\0'));
-  EXPECT_TRUE(isASCII('\n'));
-  EXPECT_TRUE(isASCII(' '));
-  EXPECT_TRUE(isASCII('a'));
-  EXPECT_TRUE(isASCII('\x7f'));
-  EXPECT_FALSE(isASCII('\x80'));
-  EXPECT_FALSE(isASCII('\xc2'));
-  EXPECT_FALSE(isASCII('\xff'));
-}
-
-TEST(CharInfoTest, isIdentifierHead) {
-  EXPECT_TRUE(isIdentifierHead('a'));
-  EXPECT_TRUE(isIdentifierHead('A'));
-  EXPECT_TRUE(isIdentifierHead('z'));
-  EXPECT_TRUE(isIdentifierHead('Z'));
-  EXPECT_TRUE(isIdentifierHead('_'));
-
-  EXPECT_FALSE(isIdentifierHead('0'));
-  EXPECT_FALSE(isIdentifierHead('.'));
-  EXPECT_FALSE(isIdentifierHead('`'));
-  EXPECT_FALSE(isIdentifierHead('\0'));
-
-  EXPECT_FALSE(isIdentifierHead('$'));
-  EXPECT_TRUE(isIdentifierHead('$', /*AllowDollar=*/true));
-
-  EXPECT_FALSE(isIdentifierHead('\x80'));
-  EXPECT_FALSE(isIdentifierHead('\xc2'));
-  EXPECT_FALSE(isIdentifierHead('\xff'));
-}
-
-TEST(CharInfoTest, isIdentifierBody) {
-  EXPECT_TRUE(isIdentifierBody('a'));
-  EXPECT_TRUE(isIdentifierBody('A'));
-  EXPECT_TRUE(isIdentifierBody('z'));
-  EXPECT_TRUE(isIdentifierBody('Z'));
-  EXPECT_TRUE(isIdentifierBody('_'));
-
-  EXPECT_TRUE(isIdentifierBody('0'));
-  EXPECT_FALSE(isIdentifierBody('.'));
-  EXPECT_FALSE(isIdentifierBody('`'));
-  EXPECT_FALSE(isIdentifierBody('\0'));
-
-  EXPECT_FALSE(isIdentifierBody('$'));
-  EXPECT_TRUE(isIdentifierBody('$', /*AllowDollar=*/true));
-
-  EXPECT_FALSE(isIdentifierBody('\x80'));
-  EXPECT_FALSE(isIdentifierBody('\xc2'));
-  EXPECT_FALSE(isIdentifierBody('\xff'));
-}
-
-TEST(CharInfoTest, isHorizontalWhitespace) {
-  EXPECT_FALSE(isHorizontalWhitespace('a'));
-  EXPECT_FALSE(isHorizontalWhitespace('_'));
-  EXPECT_FALSE(isHorizontalWhitespace('0'));
-  EXPECT_FALSE(isHorizontalWhitespace('.'));
-  EXPECT_FALSE(isHorizontalWhitespace('`'));
-  EXPECT_FALSE(isHorizontalWhitespace('\0'));
-  EXPECT_FALSE(isHorizontalWhitespace('\x7f'));
-
-  EXPECT_TRUE(isHorizontalWhitespace(' '));
-  EXPECT_TRUE(isHorizontalWhitespace('\t'));
-  EXPECT_TRUE(isHorizontalWhitespace('\f')); // ??
-  EXPECT_TRUE(isHorizontalWhitespace('\v')); // ??
-
-  EXPECT_FALSE(isHorizontalWhitespace('\n'));
-  EXPECT_FALSE(isHorizontalWhitespace('\r'));
-
-  EXPECT_FALSE(isHorizontalWhitespace('\x80'));
-  EXPECT_FALSE(isHorizontalWhitespace('\xc2'));
-  EXPECT_FALSE(isHorizontalWhitespace('\xff'));
-}
-
-TEST(CharInfoTest, isVerticalWhitespace) {
-  EXPECT_FALSE(isVerticalWhitespace('a'));
-  EXPECT_FALSE(isVerticalWhitespace('_'));
-  EXPECT_FALSE(isVerticalWhitespace('0'));
-  EXPECT_FALSE(isVerticalWhitespace('.'));
-  EXPECT_FALSE(isVerticalWhitespace('`'));
-  EXPECT_FALSE(isVerticalWhitespace('\0'));
-  EXPECT_FALSE(isVerticalWhitespace('\x7f'));
-
-  EXPECT_FALSE(isVerticalWhitespace(' '));
-  EXPECT_FALSE(isVerticalWhitespace('\t'));
-  EXPECT_FALSE(isVerticalWhitespace('\f')); // ??
-  EXPECT_FALSE(isVerticalWhitespace('\v')); // ??
-
-  EXPECT_TRUE(isVerticalWhitespace('\n'));
-  EXPECT_TRUE(isVerticalWhitespace('\r'));
-
-  EXPECT_FALSE(isVerticalWhitespace('\x80'));
-  EXPECT_FALSE(isVerticalWhitespace('\xc2'));
-  EXPECT_FALSE(isVerticalWhitespace('\xff'));
-}
-
-TEST(CharInfoTest, isWhitespace) {
-  EXPECT_FALSE(isWhitespace('a'));
-  EXPECT_FALSE(isWhitespace('_'));
-  EXPECT_FALSE(isWhitespace('0'));
-  EXPECT_FALSE(isWhitespace('.'));
-  EXPECT_FALSE(isWhitespace('`'));
-  EXPECT_FALSE(isWhitespace('\0'));
-  EXPECT_FALSE(isWhitespace('\x7f'));
-
-  EXPECT_TRUE(isWhitespace(' '));
-  EXPECT_TRUE(isWhitespace('\t'));
-  EXPECT_TRUE(isWhitespace('\f'));
-  EXPECT_TRUE(isWhitespace('\v'));
-
-  EXPECT_TRUE(isWhitespace('\n'));
-  EXPECT_TRUE(isWhitespace('\r'));
-
-  EXPECT_FALSE(isWhitespace('\x80'));
-  EXPECT_FALSE(isWhitespace('\xc2'));
-  EXPECT_FALSE(isWhitespace('\xff'));
-}
-
-TEST(CharInfoTest, isDigit) {
-  EXPECT_TRUE(isDigit('0'));
-  EXPECT_TRUE(isDigit('9'));
-
-  EXPECT_FALSE(isDigit('a'));
-  EXPECT_FALSE(isDigit('A'));
-
-  EXPECT_FALSE(isDigit('z'));
-  EXPECT_FALSE(isDigit('Z'));
-  
-  EXPECT_FALSE(isDigit('.'));
-  EXPECT_FALSE(isDigit('_'));
-
-  EXPECT_FALSE(isDigit('/'));
-  EXPECT_FALSE(isDigit('\0'));
-
-  EXPECT_FALSE(isDigit('\x80'));
-  EXPECT_FALSE(isDigit('\xc2'));
-  EXPECT_FALSE(isDigit('\xff'));
-}
-
-TEST(CharInfoTest, isHexDigit) {
-  EXPECT_TRUE(isHexDigit('0'));
-  EXPECT_TRUE(isHexDigit('9'));
-
-  EXPECT_TRUE(isHexDigit('a'));
-  EXPECT_TRUE(isHexDigit('A'));
-
-  EXPECT_FALSE(isHexDigit('z'));
-  EXPECT_FALSE(isHexDigit('Z'));
-  
-  EXPECT_FALSE(isHexDigit('.'));
-  EXPECT_FALSE(isHexDigit('_'));
-
-  EXPECT_FALSE(isHexDigit('/'));
-  EXPECT_FALSE(isHexDigit('\0'));
-
-  EXPECT_FALSE(isHexDigit('\x80'));
-  EXPECT_FALSE(isHexDigit('\xc2'));
-  EXPECT_FALSE(isHexDigit('\xff'));
-}
-
-TEST(CharInfoTest, isLetter) {
-  EXPECT_FALSE(isLetter('0'));
-  EXPECT_FALSE(isLetter('9'));
-
-  EXPECT_TRUE(isLetter('a'));
-  EXPECT_TRUE(isLetter('A'));
-
-  EXPECT_TRUE(isLetter('z'));
-  EXPECT_TRUE(isLetter('Z'));
-  
-  EXPECT_FALSE(isLetter('.'));
-  EXPECT_FALSE(isLetter('_'));
-
-  EXPECT_FALSE(isLetter('/'));
-  EXPECT_FALSE(isLetter('('));
-  EXPECT_FALSE(isLetter('\0'));
-
-  EXPECT_FALSE(isLetter('\x80'));
-  EXPECT_FALSE(isLetter('\xc2'));
-  EXPECT_FALSE(isLetter('\xff'));
-}
-
-TEST(CharInfoTest, isLowercase) {
-  EXPECT_FALSE(isLowercase('0'));
-  EXPECT_FALSE(isLowercase('9'));
-
-  EXPECT_TRUE(isLowercase('a'));
-  EXPECT_FALSE(isLowercase('A'));
-
-  EXPECT_TRUE(isLowercase('z'));
-  EXPECT_FALSE(isLowercase('Z'));
-  
-  EXPECT_FALSE(isLowercase('.'));
-  EXPECT_FALSE(isLowercase('_'));
-
-  EXPECT_FALSE(isLowercase('/'));
-  EXPECT_FALSE(isLowercase('('));
-  EXPECT_FALSE(isLowercase('\0'));
-
-  EXPECT_FALSE(isLowercase('\x80'));
-  EXPECT_FALSE(isLowercase('\xc2'));
-  EXPECT_FALSE(isLowercase('\xff'));
-}
-
-TEST(CharInfoTest, isUppercase) {
-  EXPECT_FALSE(isUppercase('0'));
-  EXPECT_FALSE(isUppercase('9'));
-
-  EXPECT_FALSE(isUppercase('a'));
-  EXPECT_TRUE(isUppercase('A'));
-
-  EXPECT_FALSE(isUppercase('z'));
-  EXPECT_TRUE(isUppercase('Z'));
-
-  EXPECT_FALSE(isUppercase('.'));
-  EXPECT_FALSE(isUppercase('_'));
-
-  EXPECT_FALSE(isUppercase('/'));
-  EXPECT_FALSE(isUppercase('('));
-  EXPECT_FALSE(isUppercase('\0'));
-
-  EXPECT_FALSE(isUppercase('\x80'));
-  EXPECT_FALSE(isUppercase('\xc2'));
-  EXPECT_FALSE(isUppercase('\xff'));
-}
-
-TEST(CharInfoTest, isAlphanumeric) {
-  EXPECT_TRUE(isAlphanumeric('0'));
-  EXPECT_TRUE(isAlphanumeric('9'));
-
-  EXPECT_TRUE(isAlphanumeric('a'));
-  EXPECT_TRUE(isAlphanumeric('A'));
-
-  EXPECT_TRUE(isAlphanumeric('z'));
-  EXPECT_TRUE(isAlphanumeric('Z'));
-
-  EXPECT_FALSE(isAlphanumeric('.'));
-  EXPECT_FALSE(isAlphanumeric('_'));
-
-  EXPECT_FALSE(isAlphanumeric('/'));
-  EXPECT_FALSE(isAlphanumeric('('));
-  EXPECT_FALSE(isAlphanumeric('\0'));
-
-  EXPECT_FALSE(isAlphanumeric('\x80'));
-  EXPECT_FALSE(isAlphanumeric('\xc2'));
-  EXPECT_FALSE(isAlphanumeric('\xff'));
-}
-
-TEST(CharInfoTest, isPunctuation) {
-  EXPECT_FALSE(isPunctuation('0'));
-  EXPECT_FALSE(isPunctuation('9'));
-
-  EXPECT_FALSE(isPunctuation('a'));
-  EXPECT_FALSE(isPunctuation('A'));
-
-  EXPECT_FALSE(isPunctuation('z'));
-  EXPECT_FALSE(isPunctuation('Z'));
-
-  EXPECT_TRUE(isPunctuation('.'));
-  EXPECT_TRUE(isPunctuation('_'));
-
-  EXPECT_TRUE(isPunctuation('/'));
-  EXPECT_TRUE(isPunctuation('('));
-
-  EXPECT_FALSE(isPunctuation(' '));
-  EXPECT_FALSE(isPunctuation('\n'));
-  EXPECT_FALSE(isPunctuation('\0'));
-
-  EXPECT_FALSE(isPunctuation('\x80'));
-  EXPECT_FALSE(isPunctuation('\xc2'));
-  EXPECT_FALSE(isPunctuation('\xff'));
-}
-
-TEST(CharInfoTest, isPrintable) {
-  EXPECT_TRUE(isPrintable('0'));
-  EXPECT_TRUE(isPrintable('9'));
-
-  EXPECT_TRUE(isPrintable('a'));
-  EXPECT_TRUE(isPrintable('A'));
-
-  EXPECT_TRUE(isPrintable('z'));
-  EXPECT_TRUE(isPrintable('Z'));
-
-  EXPECT_TRUE(isPrintable('.'));
-  EXPECT_TRUE(isPrintable('_'));
-
-  EXPECT_TRUE(isPrintable('/'));
-  EXPECT_TRUE(isPrintable('('));
-
-  EXPECT_TRUE(isPrintable(' '));
-  EXPECT_FALSE(isPrintable('\t'));
-  EXPECT_FALSE(isPrintable('\n'));
-  EXPECT_FALSE(isPrintable('\0'));
-
-  EXPECT_FALSE(isPrintable('\x80'));
-  EXPECT_FALSE(isPrintable('\xc2'));
-  EXPECT_FALSE(isPrintable('\xff'));
-}
-
-TEST(CharInfoTest, isPreprocessingNumberBody) {
-  EXPECT_TRUE(isPreprocessingNumberBody('0'));
-  EXPECT_TRUE(isPreprocessingNumberBody('9'));
-
-  EXPECT_TRUE(isPreprocessingNumberBody('a'));
-  EXPECT_TRUE(isPreprocessingNumberBody('A'));
-
-  EXPECT_TRUE(isPreprocessingNumberBody('z'));
-  EXPECT_TRUE(isPreprocessingNumberBody('Z'));
-  EXPECT_TRUE(isPreprocessingNumberBody('.'));
-  EXPECT_TRUE(isPreprocessingNumberBody('_'));
-
-  EXPECT_FALSE(isPreprocessingNumberBody('/'));
-  EXPECT_FALSE(isPreprocessingNumberBody('('));
-  EXPECT_FALSE(isPreprocessingNumberBody('\0'));
-
-  EXPECT_FALSE(isPreprocessingNumberBody('\x80'));
-  EXPECT_FALSE(isPreprocessingNumberBody('\xc2'));
-  EXPECT_FALSE(isPreprocessingNumberBody('\xff'));
-}
-
-TEST(CharInfoTest, isRawStringDelimBody) {
-  EXPECT_TRUE(isRawStringDelimBody('0'));
-  EXPECT_TRUE(isRawStringDelimBody('9'));
-
-  EXPECT_TRUE(isRawStringDelimBody('a'));
-  EXPECT_TRUE(isRawStringDelimBody('A'));
-
-  EXPECT_TRUE(isRawStringDelimBody('z'));
-  EXPECT_TRUE(isRawStringDelimBody('Z'));
-  EXPECT_TRUE(isRawStringDelimBody('.'));
-  EXPECT_TRUE(isRawStringDelimBody('_'));
-
-  EXPECT_TRUE(isRawStringDelimBody('/'));
-  EXPECT_FALSE(isRawStringDelimBody('('));
-  EXPECT_FALSE(isRawStringDelimBody('\0'));
-
-  EXPECT_FALSE(isRawStringDelimBody('\x80'));
-  EXPECT_FALSE(isRawStringDelimBody('\xc2'));
-  EXPECT_FALSE(isRawStringDelimBody('\xff'));
-}
-
-TEST(CharInfoTest, toLowercase) {
-  EXPECT_EQ('0', toLowercase('0'));
-  EXPECT_EQ('9', toLowercase('9'));
-
-  EXPECT_EQ('a', toLowercase('a'));
-  EXPECT_EQ('a', toLowercase('A'));
-
-  EXPECT_EQ('z', toLowercase('z'));
-  EXPECT_EQ('z', toLowercase('Z'));
-
-  EXPECT_EQ('.', toLowercase('.'));
-  EXPECT_EQ('_', toLowercase('_'));
-
-  EXPECT_EQ('/', toLowercase('/'));
-  EXPECT_EQ('\0', toLowercase('\0'));
-}
-
-TEST(CharInfoTest, toUppercase) {
-  EXPECT_EQ('0', toUppercase('0'));
-  EXPECT_EQ('9', toUppercase('9'));
-
-  EXPECT_EQ('A', toUppercase('a'));
-  EXPECT_EQ('A', toUppercase('A'));
-
-  EXPECT_EQ('Z', toUppercase('z'));
-  EXPECT_EQ('Z', toUppercase('Z'));
-
-  EXPECT_EQ('.', toUppercase('.'));
-  EXPECT_EQ('_', toUppercase('_'));
-
-  EXPECT_EQ('/', toUppercase('/'));
-  EXPECT_EQ('\0', toUppercase('\0'));
-}
-
-TEST(CharInfoTest, isValidIdentifier) {
-  EXPECT_FALSE(isValidIdentifier(""));
-
-  // 1 character
-  EXPECT_FALSE(isValidIdentifier("."));
-  EXPECT_FALSE(isValidIdentifier("\n"));
-  EXPECT_FALSE(isValidIdentifier(" "));
-  EXPECT_FALSE(isValidIdentifier("\x80"));
-  EXPECT_FALSE(isValidIdentifier("\xc2"));
-  EXPECT_FALSE(isValidIdentifier("\xff"));
-  EXPECT_FALSE(isValidIdentifier("$"));
-  EXPECT_FALSE(isValidIdentifier("1"));
-
-  EXPECT_TRUE(isValidIdentifier("_"));
-  EXPECT_TRUE(isValidIdentifier("a"));
-  EXPECT_TRUE(isValidIdentifier("z"));
-  EXPECT_TRUE(isValidIdentifier("A"));
-  EXPECT_TRUE(isValidIdentifier("Z"));
-
-  // 2 characters, '_' suffix
-  EXPECT_FALSE(isValidIdentifier("._"));
-  EXPECT_FALSE(isValidIdentifier("\n_"));
-  EXPECT_FALSE(isValidIdentifier(" _"));
-  EXPECT_FALSE(isValidIdentifier("\x80_"));
-  EXPECT_FALSE(isValidIdentifier("\xc2_"));
-  EXPECT_FALSE(isValidIdentifier("\xff_"));
-  EXPECT_FALSE(isValidIdentifier("$_"));
-  EXPECT_FALSE(isValidIdentifier("1_"));
-
-  EXPECT_TRUE(isValidIdentifier("__"));
-  EXPECT_TRUE(isValidIdentifier("a_"));
-  EXPECT_TRUE(isValidIdentifier("z_"));
-  EXPECT_TRUE(isValidIdentifier("A_"));
-  EXPECT_TRUE(isValidIdentifier("Z_"));
-
-  // 2 characters, '_' prefix
-  EXPECT_FALSE(isValidIdentifier("_."));
-  EXPECT_FALSE(isValidIdentifier("_\n"));
-  EXPECT_FALSE(isValidIdentifier("_ "));
-  EXPECT_FALSE(isValidIdentifier("_\x80"));
-  EXPECT_FALSE(isValidIdentifier("_\xc2"));
-  EXPECT_FALSE(isValidIdentifier("_\xff"));
-  EXPECT_FALSE(isValidIdentifier("_$"));
-  EXPECT_TRUE(isValidIdentifier("_1"));
-
-  EXPECT_TRUE(isValidIdentifier("__"));
-  EXPECT_TRUE(isValidIdentifier("_a"));
-  EXPECT_TRUE(isValidIdentifier("_z"));
-  EXPECT_TRUE(isValidIdentifier("_A"));
-  EXPECT_TRUE(isValidIdentifier("_Z"));
-
-  // 3 characters, '__' prefix
-  EXPECT_FALSE(isValidIdentifier("__."));
-  EXPECT_FALSE(isValidIdentifier("__\n"));
-  EXPECT_FALSE(isValidIdentifier("__ "));
-  EXPECT_FALSE(isValidIdentifier("__\x80"));
-  EXPECT_FALSE(isValidIdentifier("__\xc2"));
-  EXPECT_FALSE(isValidIdentifier("__\xff"));
-  EXPECT_FALSE(isValidIdentifier("__$"));
-  EXPECT_TRUE(isValidIdentifier("__1"));
-
-  EXPECT_TRUE(isValidIdentifier("___"));
-  EXPECT_TRUE(isValidIdentifier("__a"));
-  EXPECT_TRUE(isValidIdentifier("__z"));
-  EXPECT_TRUE(isValidIdentifier("__A"));
-  EXPECT_TRUE(isValidIdentifier("__Z"));
-
-  // 3 characters, '_' prefix and suffix
-  EXPECT_FALSE(isValidIdentifier("_._"));
-  EXPECT_FALSE(isValidIdentifier("_\n_"));
-  EXPECT_FALSE(isValidIdentifier("_ _"));
-  EXPECT_FALSE(isValidIdentifier("_\x80_"));
-  EXPECT_FALSE(isValidIdentifier("_\xc2_"));
-  EXPECT_FALSE(isValidIdentifier("_\xff_"));
-  EXPECT_FALSE(isValidIdentifier("_$_"));
-  EXPECT_TRUE(isValidIdentifier("_1_"));
-
-  EXPECT_TRUE(isValidIdentifier("___"));
-  EXPECT_TRUE(isValidIdentifier("_a_"));
-  EXPECT_TRUE(isValidIdentifier("_z_"));
-  EXPECT_TRUE(isValidIdentifier("_A_"));
-  EXPECT_TRUE(isValidIdentifier("_Z_"));
-}

Modified: trunk/contrib/llvm/tools/clang/unittests/Basic/FileManagerTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Basic/FileManagerTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Basic/FileManagerTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,222 +0,0 @@
-//===- unittests/Basic/FileMangerTest.cpp ------------ FileManger tests ---===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/FileSystemOptions.h"
-#include "clang/Basic/FileSystemStatCache.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-using namespace clang;
-
-namespace {
-
-// Used to create a fake file system for running the tests with such
-// that the tests are not affected by the structure/contents of the
-// file system on the machine running the tests.
-class FakeStatCache : public FileSystemStatCache {
-private:
-  // Maps a file/directory path to its desired stat result.  Anything
-  // not in this map is considered to not exist in the file system.
-  llvm::StringMap<struct stat, llvm::BumpPtrAllocator> StatCalls;
-
-  void InjectFileOrDirectory(const char *Path, ino_t INode, bool IsFile) {
-    struct stat statBuf;
-    memset(&statBuf, 0, sizeof(statBuf));
-    statBuf.st_dev = 1;
-#ifndef _WIN32  // struct stat has no st_ino field on Windows.
-    statBuf.st_ino = INode;
-#endif
-    statBuf.st_mode = IsFile ? (0777 | S_IFREG)  // a regular file
-        : (0777 | S_IFDIR);  // a directory
-    StatCalls[Path] = statBuf;
-  }
-
-public:
-  // Inject a file with the given inode value to the fake file system.
-  void InjectFile(const char *Path, ino_t INode) {
-    InjectFileOrDirectory(Path, INode, /*IsFile=*/true);
-  }
-
-  // Inject a directory with the given inode value to the fake file system.
-  void InjectDirectory(const char *Path, ino_t INode) {
-    InjectFileOrDirectory(Path, INode, /*IsFile=*/false);
-  }
-
-  // Implement FileSystemStatCache::getStat().
-  virtual LookupResult getStat(const char *Path, struct stat &StatBuf,
-                               bool isFile, int *FileDescriptor) {
-    if (StatCalls.count(Path) != 0) {
-      StatBuf = StatCalls[Path];
-      return CacheExists;
-    }
-
-    return CacheMissing;  // This means the file/directory doesn't exist.
-  }
-};
-
-// The test fixture.
-class FileManagerTest : public ::testing::Test {
- protected:
-  FileManagerTest() : manager(options) {
-  }
-
-  FileSystemOptions options;
-  FileManager manager;
-};
-
-// When a virtual file is added, its getDir() field is set correctly
-// (not NULL, correct name).
-TEST_F(FileManagerTest, getVirtualFileSetsTheDirFieldCorrectly) {
-  const FileEntry *file = manager.getVirtualFile("foo.cpp", 42, 0);
-  ASSERT_TRUE(file != NULL);
-
-  const DirectoryEntry *dir = file->getDir();
-  ASSERT_TRUE(dir != NULL);
-  EXPECT_STREQ(".", dir->getName());
-
-  file = manager.getVirtualFile("x/y/z.cpp", 42, 0);
-  ASSERT_TRUE(file != NULL);
-
-  dir = file->getDir();
-  ASSERT_TRUE(dir != NULL);
-  EXPECT_STREQ("x/y", dir->getName());
-}
-
-// Before any virtual file is added, no virtual directory exists.
-TEST_F(FileManagerTest, NoVirtualDirectoryExistsBeforeAVirtualFileIsAdded) {
-  // An empty FakeStatCache causes all stat calls made by the
-  // FileManager to report "file/directory doesn't exist".  This
-  // avoids the possibility of the result of this test being affected
-  // by what's in the real file system.
-  manager.addStatCache(new FakeStatCache);
-
-  EXPECT_EQ(NULL, manager.getDirectory("virtual/dir/foo"));
-  EXPECT_EQ(NULL, manager.getDirectory("virtual/dir"));
-  EXPECT_EQ(NULL, manager.getDirectory("virtual"));
-}
-
-// When a virtual file is added, all of its ancestors should be created.
-TEST_F(FileManagerTest, getVirtualFileCreatesDirectoryEntriesForAncestors) {
-  // Fake an empty real file system.
-  manager.addStatCache(new FakeStatCache);
-
-  manager.getVirtualFile("virtual/dir/bar.h", 100, 0);
-  EXPECT_EQ(NULL, manager.getDirectory("virtual/dir/foo"));
-
-  const DirectoryEntry *dir = manager.getDirectory("virtual/dir");
-  ASSERT_TRUE(dir != NULL);
-  EXPECT_STREQ("virtual/dir", dir->getName());
-
-  dir = manager.getDirectory("virtual");
-  ASSERT_TRUE(dir != NULL);
-  EXPECT_STREQ("virtual", dir->getName());
-}
-
-// getFile() returns non-NULL if a real file exists at the given path.
-TEST_F(FileManagerTest, getFileReturnsValidFileEntryForExistingRealFile) {
-  // Inject fake files into the file system.
-  FakeStatCache *statCache = new FakeStatCache;
-  statCache->InjectDirectory("/tmp", 42);
-  statCache->InjectFile("/tmp/test", 43);
-  manager.addStatCache(statCache);
-
-  const FileEntry *file = manager.getFile("/tmp/test");
-  ASSERT_TRUE(file != NULL);
-  EXPECT_STREQ("/tmp/test", file->getName());
-
-  const DirectoryEntry *dir = file->getDir();
-  ASSERT_TRUE(dir != NULL);
-  EXPECT_STREQ("/tmp", dir->getName());
-}
-
-// getFile() returns non-NULL if a virtual file exists at the given path.
-TEST_F(FileManagerTest, getFileReturnsValidFileEntryForExistingVirtualFile) {
-  // Fake an empty real file system.
-  manager.addStatCache(new FakeStatCache);
-
-  manager.getVirtualFile("virtual/dir/bar.h", 100, 0);
-  const FileEntry *file = manager.getFile("virtual/dir/bar.h");
-  ASSERT_TRUE(file != NULL);
-  EXPECT_STREQ("virtual/dir/bar.h", file->getName());
-
-  const DirectoryEntry *dir = file->getDir();
-  ASSERT_TRUE(dir != NULL);
-  EXPECT_STREQ("virtual/dir", dir->getName());
-}
-
-// getFile() returns different FileEntries for different paths when
-// there's no aliasing.
-TEST_F(FileManagerTest, getFileReturnsDifferentFileEntriesForDifferentFiles) {
-  // Inject two fake files into the file system.  Different inodes
-  // mean the files are not symlinked together.
-  FakeStatCache *statCache = new FakeStatCache;
-  statCache->InjectDirectory(".", 41);
-  statCache->InjectFile("foo.cpp", 42);
-  statCache->InjectFile("bar.cpp", 43);
-  manager.addStatCache(statCache);
-
-  const FileEntry *fileFoo = manager.getFile("foo.cpp");
-  const FileEntry *fileBar = manager.getFile("bar.cpp");
-  ASSERT_TRUE(fileFoo != NULL);
-  ASSERT_TRUE(fileBar != NULL);
-  EXPECT_NE(fileFoo, fileBar);
-}
-
-// getFile() returns NULL if neither a real file nor a virtual file
-// exists at the given path.
-TEST_F(FileManagerTest, getFileReturnsNULLForNonexistentFile) {
-  // Inject a fake foo.cpp into the file system.
-  FakeStatCache *statCache = new FakeStatCache;
-  statCache->InjectDirectory(".", 41);
-  statCache->InjectFile("foo.cpp", 42);
-  manager.addStatCache(statCache);
-
-  // Create a virtual bar.cpp file.
-  manager.getVirtualFile("bar.cpp", 200, 0);
-
-  const FileEntry *file = manager.getFile("xyz.txt");
-  EXPECT_EQ(NULL, file);
-}
-
-// The following tests apply to Unix-like system only.
-
-#ifndef _WIN32
-
-// getFile() returns the same FileEntry for real files that are aliases.
-TEST_F(FileManagerTest, getFileReturnsSameFileEntryForAliasedRealFiles) {
-  // Inject two real files with the same inode.
-  FakeStatCache *statCache = new FakeStatCache;
-  statCache->InjectDirectory("abc", 41);
-  statCache->InjectFile("abc/foo.cpp", 42);
-  statCache->InjectFile("abc/bar.cpp", 42);
-  manager.addStatCache(statCache);
-
-  EXPECT_EQ(manager.getFile("abc/foo.cpp"), manager.getFile("abc/bar.cpp"));
-}
-
-// getFile() returns the same FileEntry for virtual files that have
-// corresponding real files that are aliases.
-TEST_F(FileManagerTest, getFileReturnsSameFileEntryForAliasedVirtualFiles) {
-  // Inject two real files with the same inode.
-  FakeStatCache *statCache = new FakeStatCache;
-  statCache->InjectDirectory("abc", 41);
-  statCache->InjectFile("abc/foo.cpp", 42);
-  statCache->InjectFile("abc/bar.cpp", 42);
-  manager.addStatCache(statCache);
-
-  manager.getVirtualFile("abc/foo.cpp", 100, 0);
-  manager.getVirtualFile("abc/bar.cpp", 200, 0);
-
-  EXPECT_EQ(manager.getFile("abc/foo.cpp"), manager.getFile("abc/bar.cpp"));
-}
-
-#endif  // !_WIN32
-
-} // anonymous namespace

Modified: trunk/contrib/llvm/tools/clang/unittests/Basic/SourceManagerTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Basic/SourceManagerTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Basic/SourceManagerTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,354 +0,0 @@
-//===- unittests/Basic/SourceManagerTest.cpp ------ SourceManager tests ---===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Basic/SourceManager.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/TargetInfo.h"
-#include "clang/Basic/TargetOptions.h"
-#include "clang/Lex/HeaderSearch.h"
-#include "clang/Lex/HeaderSearchOptions.h"
-#include "clang/Lex/ModuleLoader.h"
-#include "clang/Lex/Preprocessor.h"
-#include "clang/Lex/PreprocessorOptions.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/Config/config.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-using namespace clang;
-
-namespace {
-
-// The test fixture.
-class SourceManagerTest : public ::testing::Test {
-protected:
-  SourceManagerTest()
-    : FileMgr(FileMgrOpts),
-      DiagID(new DiagnosticIDs()),
-      Diags(DiagID, new DiagnosticOptions, new IgnoringDiagConsumer()),
-      SourceMgr(Diags, FileMgr),
-      TargetOpts(new TargetOptions) {
-    TargetOpts->Triple = "x86_64-apple-darwin11.1.0";
-    Target = TargetInfo::CreateTargetInfo(Diags, &*TargetOpts);
-  }
-
-  FileSystemOptions FileMgrOpts;
-  FileManager FileMgr;
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID;
-  DiagnosticsEngine Diags;
-  SourceManager SourceMgr;
-  LangOptions LangOpts;
-  IntrusiveRefCntPtr<TargetOptions> TargetOpts;
-  IntrusiveRefCntPtr<TargetInfo> Target;
-};
-
-class VoidModuleLoader : public ModuleLoader {
-  virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, 
-                                      ModuleIdPath Path,
-                                      Module::NameVisibilityKind Visibility,
-                                      bool IsInclusionDirective) {
-    return ModuleLoadResult();
-  }
-
-  virtual void makeModuleVisible(Module *Mod,
-                                 Module::NameVisibilityKind Visibility,
-                                 SourceLocation ImportLoc,
-                                 bool Complain) { }
-};
-
-TEST_F(SourceManagerTest, isBeforeInTranslationUnit) {
-  const char *source =
-    "#define M(x) [x]\n"
-    "M(foo)";
-  MemoryBuffer *buf = MemoryBuffer::getMemBuffer(source);
-  FileID mainFileID = SourceMgr.createMainFileIDForMemBuffer(buf);
-
-  VoidModuleLoader ModLoader;
-  HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
-                          &*Target);
-  Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
-                  SourceMgr, HeaderInfo, ModLoader,
-                  /*IILookup =*/ 0,
-                  /*OwnsHeaderSearch =*/false,
-                  /*DelayInitialization =*/ false);
-  PP.EnterMainSourceFile();
-
-  std::vector<Token> toks;
-  while (1) {
-    Token tok;
-    PP.Lex(tok);
-    if (tok.is(tok::eof))
-      break;
-    toks.push_back(tok);
-  }
-
-  // Make sure we got the tokens that we expected.
-  ASSERT_EQ(3U, toks.size());
-  ASSERT_EQ(tok::l_square, toks[0].getKind());
-  ASSERT_EQ(tok::identifier, toks[1].getKind());
-  ASSERT_EQ(tok::r_square, toks[2].getKind());
-  
-  SourceLocation lsqrLoc = toks[0].getLocation();
-  SourceLocation idLoc = toks[1].getLocation();
-  SourceLocation rsqrLoc = toks[2].getLocation();
-  
-  SourceLocation macroExpStartLoc = SourceMgr.translateLineCol(mainFileID, 2, 1);
-  SourceLocation macroExpEndLoc = SourceMgr.translateLineCol(mainFileID, 2, 6);
-  ASSERT_TRUE(macroExpStartLoc.isFileID());
-  ASSERT_TRUE(macroExpEndLoc.isFileID());
-
-  SmallString<32> str;
-  ASSERT_EQ("M", PP.getSpelling(macroExpStartLoc, str));
-  ASSERT_EQ(")", PP.getSpelling(macroExpEndLoc, str));
-
-  EXPECT_TRUE(SourceMgr.isBeforeInTranslationUnit(lsqrLoc, idLoc));
-  EXPECT_TRUE(SourceMgr.isBeforeInTranslationUnit(idLoc, rsqrLoc));
-  EXPECT_TRUE(SourceMgr.isBeforeInTranslationUnit(macroExpStartLoc, idLoc));
-  EXPECT_TRUE(SourceMgr.isBeforeInTranslationUnit(idLoc, macroExpEndLoc));
-}
-
-TEST_F(SourceManagerTest, getColumnNumber) {
-  const char *Source =
-    "int x;\n"
-    "int y;";
-
-  MemoryBuffer *Buf = MemoryBuffer::getMemBuffer(Source);
-  FileID MainFileID = SourceMgr.createMainFileIDForMemBuffer(Buf);
-
-  bool Invalid;
-
-  Invalid = false;
-  EXPECT_EQ(1U, SourceMgr.getColumnNumber(MainFileID, 0, &Invalid));
-  EXPECT_TRUE(!Invalid);
-
-  Invalid = false;
-  EXPECT_EQ(5U, SourceMgr.getColumnNumber(MainFileID, 4, &Invalid));
-  EXPECT_TRUE(!Invalid);
-
-  Invalid = false;
-  EXPECT_EQ(1U, SourceMgr.getColumnNumber(MainFileID, 7, &Invalid));
-  EXPECT_TRUE(!Invalid);
-
-  Invalid = false;
-  EXPECT_EQ(5U, SourceMgr.getColumnNumber(MainFileID, 11, &Invalid));
-  EXPECT_TRUE(!Invalid);
-
-  Invalid = false;
-  EXPECT_EQ(7U, SourceMgr.getColumnNumber(MainFileID, strlen(Source),
-                                         &Invalid));
-  EXPECT_TRUE(!Invalid);
-
-  Invalid = false;
-  SourceMgr.getColumnNumber(MainFileID, strlen(Source)+1, &Invalid);
-  EXPECT_TRUE(Invalid);
-
-  // Test invalid files
-  Invalid = false;
-  SourceMgr.getColumnNumber(FileID(), 0, &Invalid);
-  EXPECT_TRUE(Invalid);
-
-  Invalid = false;
-  SourceMgr.getColumnNumber(FileID(), 1, &Invalid);
-  EXPECT_TRUE(Invalid);
-
-  // Test with no invalid flag.
-  EXPECT_EQ(1U, SourceMgr.getColumnNumber(MainFileID, 0, NULL));
-}
-
-#if defined(LLVM_ON_UNIX)
-
-TEST_F(SourceManagerTest, getMacroArgExpandedLocation) {
-  const char *header =
-    "#define FM(x,y) x\n";
-
-  const char *main =
-    "#include \"/test-header.h\"\n"
-    "#define VAL 0\n"
-    "FM(VAL,0)\n"
-    "FM(0,VAL)\n"
-    "FM(FM(0,VAL),0)\n"
-    "#define CONCAT(X, Y) X##Y\n"
-    "CONCAT(1,1)\n";
-
-  MemoryBuffer *headerBuf = MemoryBuffer::getMemBuffer(header);
-  MemoryBuffer *mainBuf = MemoryBuffer::getMemBuffer(main);
-  FileID mainFileID = SourceMgr.createMainFileIDForMemBuffer(mainBuf);
-
-  const FileEntry *headerFile = FileMgr.getVirtualFile("/test-header.h",
-                                                 headerBuf->getBufferSize(), 0);
-  SourceMgr.overrideFileContents(headerFile, headerBuf);
-
-  VoidModuleLoader ModLoader;
-  HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
-                          &*Target);
-  Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
-                  SourceMgr, HeaderInfo, ModLoader,
-                  /*IILookup =*/ 0,
-                  /*OwnsHeaderSearch =*/false,
-                  /*DelayInitialization =*/ false);
-  PP.EnterMainSourceFile();
-
-  std::vector<Token> toks;
-  while (1) {
-    Token tok;
-    PP.Lex(tok);
-    if (tok.is(tok::eof))
-      break;
-    toks.push_back(tok);
-  }
-
-  // Make sure we got the tokens that we expected.
-  ASSERT_EQ(4U, toks.size());
-  ASSERT_EQ(tok::numeric_constant, toks[0].getKind());
-  ASSERT_EQ(tok::numeric_constant, toks[1].getKind());
-  ASSERT_EQ(tok::numeric_constant, toks[2].getKind());
-  ASSERT_EQ(tok::numeric_constant, toks[3].getKind());
-
-  SourceLocation defLoc = SourceMgr.translateLineCol(mainFileID, 2, 13);
-  SourceLocation loc1 = SourceMgr.translateLineCol(mainFileID, 3, 8);
-  SourceLocation loc2 = SourceMgr.translateLineCol(mainFileID, 4, 4);
-  SourceLocation loc3 = SourceMgr.translateLineCol(mainFileID, 5, 7);
-  SourceLocation defLoc2 = SourceMgr.translateLineCol(mainFileID, 6, 22);
-  defLoc = SourceMgr.getMacroArgExpandedLocation(defLoc);
-  loc1 = SourceMgr.getMacroArgExpandedLocation(loc1);
-  loc2 = SourceMgr.getMacroArgExpandedLocation(loc2);
-  loc3 = SourceMgr.getMacroArgExpandedLocation(loc3);
-  defLoc2 = SourceMgr.getMacroArgExpandedLocation(defLoc2);
-
-  EXPECT_TRUE(defLoc.isFileID());
-  EXPECT_TRUE(loc1.isFileID());
-  EXPECT_TRUE(SourceMgr.isMacroArgExpansion(loc2));
-  EXPECT_TRUE(SourceMgr.isMacroArgExpansion(loc3));
-  EXPECT_EQ(loc2, toks[1].getLocation());
-  EXPECT_EQ(loc3, toks[2].getLocation());
-  EXPECT_TRUE(defLoc2.isFileID());
-}
-
-namespace {
-
-struct MacroAction {
-  SourceLocation Loc;
-  std::string Name;
-  bool isDefinition; // if false, it is expansion.
-  
-  MacroAction(SourceLocation Loc, StringRef Name, bool isDefinition)
-    : Loc(Loc), Name(Name), isDefinition(isDefinition) { }
-};
-
-class MacroTracker : public PPCallbacks {
-  std::vector<MacroAction> &Macros;
-
-public:
-  explicit MacroTracker(std::vector<MacroAction> &Macros) : Macros(Macros) { }
-  
-  virtual void MacroDefined(const Token &MacroNameTok,
-                            const MacroDirective *MD) {
-    Macros.push_back(MacroAction(MD->getLocation(),
-                                 MacroNameTok.getIdentifierInfo()->getName(),
-                                 true));
-  }
-  virtual void MacroExpands(const Token &MacroNameTok, const MacroDirective *MD,
-                            SourceRange Range, const MacroArgs *Args) {
-    Macros.push_back(MacroAction(MacroNameTok.getLocation(),
-                                 MacroNameTok.getIdentifierInfo()->getName(),
-                                 false));
-  }
-};
-
-}
-
-TEST_F(SourceManagerTest, isBeforeInTranslationUnitWithMacroInInclude) {
-  const char *header =
-    "#define MACRO_IN_INCLUDE 0\n";
-
-  const char *main =
-    "#define M(x) x\n"
-    "#define INC \"/test-header.h\"\n"
-    "#include M(INC)\n"
-    "#define INC2 </test-header.h>\n"
-    "#include M(INC2)\n";
-
-  MemoryBuffer *headerBuf = MemoryBuffer::getMemBuffer(header);
-  MemoryBuffer *mainBuf = MemoryBuffer::getMemBuffer(main);
-  SourceMgr.createMainFileIDForMemBuffer(mainBuf);
-
-  const FileEntry *headerFile = FileMgr.getVirtualFile("/test-header.h",
-                                                 headerBuf->getBufferSize(), 0);
-  SourceMgr.overrideFileContents(headerFile, headerBuf);
-
-  VoidModuleLoader ModLoader;
-  HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
-                          &*Target);
-  Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
-                  SourceMgr, HeaderInfo, ModLoader,
-                  /*IILookup =*/ 0,
-                  /*OwnsHeaderSearch =*/false,
-                  /*DelayInitialization =*/ false);
-
-  std::vector<MacroAction> Macros;
-  PP.addPPCallbacks(new MacroTracker(Macros));
-
-  PP.EnterMainSourceFile();
-
-  std::vector<Token> toks;
-  while (1) {
-    Token tok;
-    PP.Lex(tok);
-    if (tok.is(tok::eof))
-      break;
-    toks.push_back(tok);
-  }
-
-  // Make sure we got the tokens that we expected.
-  ASSERT_EQ(0U, toks.size());
-
-  ASSERT_EQ(9U, Macros.size());
-  // #define M(x) x
-  ASSERT_TRUE(Macros[0].isDefinition);
-  ASSERT_EQ("M", Macros[0].Name);
-  // #define INC "/test-header.h"
-  ASSERT_TRUE(Macros[1].isDefinition);
-  ASSERT_EQ("INC", Macros[1].Name);
-  // M expansion in #include M(INC)
-  ASSERT_FALSE(Macros[2].isDefinition);
-  ASSERT_EQ("M", Macros[2].Name);
-  // INC expansion in #include M(INC)
-  ASSERT_FALSE(Macros[3].isDefinition);
-  ASSERT_EQ("INC", Macros[3].Name);
-  // #define MACRO_IN_INCLUDE 0
-  ASSERT_TRUE(Macros[4].isDefinition);
-  ASSERT_EQ("MACRO_IN_INCLUDE", Macros[4].Name);
-  // #define INC2 </test-header.h>
-  ASSERT_TRUE(Macros[5].isDefinition);
-  ASSERT_EQ("INC2", Macros[5].Name);
-  // M expansion in #include M(INC2)
-  ASSERT_FALSE(Macros[6].isDefinition);
-  ASSERT_EQ("M", Macros[6].Name);
-  // INC2 expansion in #include M(INC2)
-  ASSERT_FALSE(Macros[7].isDefinition);
-  ASSERT_EQ("INC2", Macros[7].Name);
-  // #define MACRO_IN_INCLUDE 0
-  ASSERT_TRUE(Macros[8].isDefinition);
-  ASSERT_EQ("MACRO_IN_INCLUDE", Macros[8].Name);
-
-  // The INC expansion in #include M(INC) comes before the first
-  // MACRO_IN_INCLUDE definition of the included file.
-  EXPECT_TRUE(SourceMgr.isBeforeInTranslationUnit(Macros[3].Loc, Macros[4].Loc));
-
-  // The INC2 expansion in #include M(INC2) comes before the second
-  // MACRO_IN_INCLUDE definition of the included file.
-  EXPECT_TRUE(SourceMgr.isBeforeInTranslationUnit(Macros[7].Loc, Macros[8].Loc));
-}
-
-#endif
-
-} // anonymous namespace

Modified: trunk/contrib/llvm/tools/clang/unittests/Format/FormatTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Format/FormatTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Format/FormatTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,3910 +0,0 @@
-//===- unittest/Format/FormatTest.cpp - Formatting unit tests -------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#define DEBUG_TYPE "format-test"
-
-#include "clang/Format/Format.h"
-#include "../Tooling/RewriterTestContext.h"
-#include "clang/Lex/Lexer.h"
-#include "llvm/Support/Debug.h"
-#include "gtest/gtest.h"
-
-namespace clang {
-namespace format {
-
-class FormatTest : public ::testing::Test {
-protected:
-  std::string format(llvm::StringRef Code, unsigned Offset, unsigned Length,
-                     const FormatStyle &Style) {
-    DEBUG(llvm::errs() << "---\n");
-    RewriterTestContext Context;
-    FileID ID = Context.createInMemoryFile("input.cc", Code);
-    SourceLocation Start =
-        Context.Sources.getLocForStartOfFile(ID).getLocWithOffset(Offset);
-    std::vector<CharSourceRange> Ranges(
-        1,
-        CharSourceRange::getCharRange(Start, Start.getLocWithOffset(Length)));
-    Lexer Lex(ID, Context.Sources.getBuffer(ID), Context.Sources,
-              getFormattingLangOpts());
-    tooling::Replacements Replace = reformat(
-        Style, Lex, Context.Sources, Ranges, new IgnoringDiagConsumer());
-    ReplacementCount = Replace.size();
-    EXPECT_TRUE(applyAllReplacements(Replace, Context.Rewrite));
-    DEBUG(llvm::errs() << "\n" << Context.getRewrittenText(ID) << "\n\n");
-    return Context.getRewrittenText(ID);
-  }
-
-  std::string
-  format(llvm::StringRef Code, const FormatStyle &Style = getLLVMStyle()) {
-    return format(Code, 0, Code.size(), Style);
-  }
-
-  std::string messUp(llvm::StringRef Code) {
-    std::string MessedUp(Code.str());
-    bool InComment = false;
-    bool InPreprocessorDirective = false;
-    bool JustReplacedNewline = false;
-    for (unsigned i = 0, e = MessedUp.size() - 1; i != e; ++i) {
-      if (MessedUp[i] == '/' && MessedUp[i + 1] == '/') {
-        if (JustReplacedNewline)
-          MessedUp[i - 1] = '\n';
-        InComment = true;
-      } else if (MessedUp[i] == '#' && (JustReplacedNewline || i == 0)) {
-        if (i != 0)
-          MessedUp[i - 1] = '\n';
-        InPreprocessorDirective = true;
-      } else if (MessedUp[i] == '\\' && MessedUp[i + 1] == '\n') {
-        MessedUp[i] = ' ';
-        MessedUp[i + 1] = ' ';
-      } else if (MessedUp[i] == '\n') {
-        if (InComment) {
-          InComment = false;
-        } else if (InPreprocessorDirective) {
-          InPreprocessorDirective = false;
-        } else {
-          JustReplacedNewline = true;
-          MessedUp[i] = ' ';
-        }
-      } else if (MessedUp[i] != ' ') {
-        JustReplacedNewline = false;
-      }
-    }
-    return MessedUp;
-  }
-
-  FormatStyle getLLVMStyleWithColumns(unsigned ColumnLimit) {
-    FormatStyle Style = getLLVMStyle();
-    Style.ColumnLimit = ColumnLimit;
-    return Style;
-  }
-
-  FormatStyle getGoogleStyleWithColumns(unsigned ColumnLimit) {
-    FormatStyle Style = getGoogleStyle();
-    Style.ColumnLimit = ColumnLimit;
-    return Style;
-  }
-
-  void verifyFormat(llvm::StringRef Code,
-                    const FormatStyle &Style = getLLVMStyle()) {
-    EXPECT_EQ(Code.str(), format(messUp(Code), Style));
-  }
-
-  void verifyGoogleFormat(llvm::StringRef Code) {
-    verifyFormat(Code, getGoogleStyle());
-  }
-
-  void verifyIndependentOfContext(llvm::StringRef text) {
-    verifyFormat(text);
-    verifyFormat(llvm::Twine("void f() { " + text + " }").str());
-  }
-
-  int ReplacementCount;
-};
-
-TEST_F(FormatTest, MessUp) {
-  EXPECT_EQ("1 2 3", messUp("1 2 3"));
-  EXPECT_EQ("1 2 3\n", messUp("1\n2\n3\n"));
-  EXPECT_EQ("a\n//b\nc", messUp("a\n//b\nc"));
-  EXPECT_EQ("a\n#b\nc", messUp("a\n#b\nc"));
-  EXPECT_EQ("a\n#b  c  d\ne", messUp("a\n#b\\\nc\\\nd\ne"));
-}
-
-//===----------------------------------------------------------------------===//
-// Basic function tests.
-//===----------------------------------------------------------------------===//
-
-TEST_F(FormatTest, DoesNotChangeCorrectlyFormatedCode) {
-  EXPECT_EQ(";", format(";"));
-}
-
-TEST_F(FormatTest, FormatsGlobalStatementsAt0) {
-  EXPECT_EQ("int i;", format("  int i;"));
-  EXPECT_EQ("\nint i;", format(" \n\t \r  int i;"));
-  EXPECT_EQ("int i;\nint j;", format("    int i; int j;"));
-  EXPECT_EQ("int i;\nint j;", format("    int i;\n  int j;"));
-}
-
-TEST_F(FormatTest, FormatsUnwrappedLinesAtFirstFormat) {
-  EXPECT_EQ("int i;", format("int\ni;"));
-}
-
-TEST_F(FormatTest, FormatsNestedBlockStatements) {
-  EXPECT_EQ("{\n  {\n    {}\n  }\n}", format("{{{}}}"));
-}
-
-TEST_F(FormatTest, FormatsNestedCall) {
-  verifyFormat("Method(f1, f2(f3));");
-  verifyFormat("Method(f1(f2, f3()));");
-  verifyFormat("Method(f1(f2, (f3())));");
-}
-
-TEST_F(FormatTest, NestedNameSpecifiers) {
-  verifyFormat("vector< ::Type> v;");
-  verifyFormat("::ns::SomeFunction(::ns::SomeOtherFunction())");
-}
-
-TEST_F(FormatTest, OnlyGeneratesNecessaryReplacements) {
-  EXPECT_EQ("if (a) {\n"
-            "  f();\n"
-            "}",
-            format("if(a){f();}"));
-  EXPECT_EQ(4, ReplacementCount);
-  EXPECT_EQ("if (a) {\n"
-            "  f();\n"
-            "}",
-            format("if (a) {\n"
-                   "  f();\n"
-                   "}"));
-  EXPECT_EQ(0, ReplacementCount);
-}
-
-TEST_F(FormatTest, RemovesTrailingWhitespaceOfFormattedLine) {
-  EXPECT_EQ("int a;\nint b;", format("int a; \nint b;", 0, 0, getLLVMStyle()));
-  EXPECT_EQ("int a;", format("int a;         "));
-  EXPECT_EQ("int a;\n", format("int a;  \n   \n   \n "));
-  EXPECT_EQ("int a;\nint b;    ",
-            format("int a;  \nint b;    ", 0, 0, getLLVMStyle()));
-}
-
-TEST_F(FormatTest, FormatsCorrectRegionForLeadingWhitespace) {
-  EXPECT_EQ("int b;\nint a;",
-            format("int b;\n   int a;", 7, 0, getLLVMStyle()));
-  EXPECT_EQ("int b;\n   int a;",
-            format("int b;\n   int a;", 6, 0, getLLVMStyle()));
-
-  EXPECT_EQ("#define A  \\\n"
-            "  int a;   \\\n"
-            "  int b;",
-            format("#define A  \\\n"
-                   "  int a;   \\\n"
-                   "    int b;",
-                   26, 0, getLLVMStyleWithColumns(12)));
-  EXPECT_EQ("#define A  \\\n"
-            "  int a;   \\\n"
-            "    int b;",
-            format("#define A  \\\n"
-                   "  int a;   \\\n"
-                   "    int b;",
-                   25, 0, getLLVMStyleWithColumns(12)));
-}
-
-TEST_F(FormatTest, RemovesWhitespaceWhenTriggeredOnEmptyLine) {
-  EXPECT_EQ("int  a;\n\n int b;",
-            format("int  a;\n  \n\n int b;", 7, 0, getLLVMStyle()));
-  EXPECT_EQ("int  a;\n\n int b;",
-            format("int  a;\n  \n\n int b;", 9, 0, getLLVMStyle()));
-}
-
-TEST_F(FormatTest, ReformatsMovedLines) {
-  EXPECT_EQ(
-      "template <typename T> T *getFETokenInfo() const {\n"
-      "  return static_cast<T *>(FETokenInfo);\n"
-      "}\n"
-      "  int a; // <- Should not be formatted",
-      format(
-          "template<typename T>\n"
-          "T *getFETokenInfo() const { return static_cast<T*>(FETokenInfo); }\n"
-          "  int a; // <- Should not be formatted",
-          9, 5, getLLVMStyle()));
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for control statements.
-//===----------------------------------------------------------------------===//
-
-TEST_F(FormatTest, FormatIfWithoutCompountStatement) {
-  verifyFormat("if (true)\n  f();\ng();");
-  verifyFormat("if (a)\n  if (b)\n    if (c)\n      g();\nh();");
-  verifyFormat("if (a)\n  if (b) {\n    f();\n  }\ng();");
-
-  FormatStyle AllowsMergedIf = getGoogleStyle();
-  AllowsMergedIf.AllowShortIfStatementsOnASingleLine = true;
-  verifyFormat("if (a)\n"
-               "  // comment\n"
-               "  f();",
-               AllowsMergedIf);
-
-  verifyFormat("if (a)  // Can't merge this\n"
-               "  f();\n",
-               AllowsMergedIf);
-  verifyFormat("if (a) /* still don't merge */\n"
-               "  f();",
-               AllowsMergedIf);
-  verifyFormat("if (a) {  // Never merge this\n"
-               "  f();\n"
-               "}",
-               AllowsMergedIf);
-  verifyFormat("if (a) { /* Never merge this */\n"
-               "  f();\n"
-               "}",
-               AllowsMergedIf);
-
-  AllowsMergedIf.ColumnLimit = 14;
-  verifyFormat("if (a) return;", AllowsMergedIf);
-  verifyFormat("if (aaaaaaaaa)\n"
-               "  return;",
-               AllowsMergedIf);
-
-  AllowsMergedIf.ColumnLimit = 13;
-  verifyFormat("if (a)\n  return;", AllowsMergedIf);
-}
-
-TEST_F(FormatTest, ParseIfElse) {
-  verifyFormat("if (true)\n"
-               "  if (true)\n"
-               "    if (true)\n"
-               "      f();\n"
-               "    else\n"
-               "      g();\n"
-               "  else\n"
-               "    h();\n"
-               "else\n"
-               "  i();");
-  verifyFormat("if (true)\n"
-               "  if (true)\n"
-               "    if (true) {\n"
-               "      if (true)\n"
-               "        f();\n"
-               "    } else {\n"
-               "      g();\n"
-               "    }\n"
-               "  else\n"
-               "    h();\n"
-               "else {\n"
-               "  i();\n"
-               "}");
-}
-
-TEST_F(FormatTest, ElseIf) {
-  verifyFormat("if (a) {\n} else if (b) {\n}");
-  verifyFormat("if (a)\n"
-               "  f();\n"
-               "else if (b)\n"
-               "  g();\n"
-               "else\n"
-               "  h();");
-}
-
-TEST_F(FormatTest, FormatsForLoop) {
-  verifyFormat(
-      "for (int VeryVeryLongLoopVariable = 0; VeryVeryLongLoopVariable < 10;\n"
-      "     ++VeryVeryLongLoopVariable)\n"
-      "  ;");
-  verifyFormat("for (;;)\n"
-               "  f();");
-  verifyFormat("for (;;) {\n}");
-  verifyFormat("for (;;) {\n"
-               "  f();\n"
-               "}");
-  verifyFormat("for (int i = 0; (i < 10); ++i) {\n}");
-
-  verifyFormat(
-      "for (std::vector<UnwrappedLine>::iterator I = UnwrappedLines.begin(),\n"
-      "                                          E = UnwrappedLines.end();\n"
-      "     I != E; ++I) {\n}");
-
-  verifyFormat(
-      "for (MachineFun::iterator IIII = PrevIt, EEEE = F.end(); IIII != EEEE;\n"
-      "     ++IIIII) {\n}");
-  verifyFormat("for (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaa =\n"
-               "         aaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaa;\n"
-               "     aaaaaaaaaaa != aaaaaaaaaaaaaaaaaaa; ++aaaaaaaaaaa) {\n}");
-  verifyFormat("for (llvm::ArrayRef<NamedDecl *>::iterator\n"
-               "         I = FD->getDeclsInPrototypeScope().begin(),\n"
-               "         E = FD->getDeclsInPrototypeScope().end();\n"
-               "     I != E; ++I) {\n}");
-
-  // FIXME: Not sure whether we want extra identation in line 3 here:
-  verifyFormat(
-      "for (aaaaaaaaaaaaaaaaa aaaaaaaaaaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;\n"
-      "     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa !=\n"
-      "         aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);\n"
-      "     ++aaaaaaaaaaa) {\n}");
-  verifyFormat("for (int aaaaaaaaaaa = 1; aaaaaaaaaaa <= bbbbbbbbbbbbbbb;\n"
-               "     aaaaaaaaaaa++, bbbbbbbbbbbbbbbbb++) {\n"
-               "}");
-  verifyFormat("for (some_namespace::SomeIterator iter( // force break\n"
-               "         aaaaaaaaaa);\n"
-               "     iter; ++iter) {\n"
-               "}");
-
-  FormatStyle NoBinPacking = getLLVMStyle();
-  NoBinPacking.BinPackParameters = false;
-  verifyFormat("for (int aaaaaaaaaaa = 1;\n"
-               "     aaaaaaaaaaa <= aaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaa,\n"
-               "                                           aaaaaaaaaaaaaaaa,\n"
-               "                                           aaaaaaaaaaaaaaaa,\n"
-               "                                           aaaaaaaaaaaaaaaa);\n"
-               "     aaaaaaaaaaa++, bbbbbbbbbbbbbbbbb++) {\n"
-               "}",
-               NoBinPacking);
-  verifyFormat(
-      "for (std::vector<UnwrappedLine>::iterator I = UnwrappedLines.begin(),\n"
-      "                                          E = UnwrappedLines.end();\n"
-      "     I != E;\n"
-      "     ++I) {\n}",
-      NoBinPacking);
-}
-
-TEST_F(FormatTest, RangeBasedForLoops) {
-  verifyFormat("for (auto aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa :\n"
-               "     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {\n}");
-  verifyFormat("for (auto aaaaaaaaaaaaaaaaaaaaa :\n"
-               "     aaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaa, aaaaaaaaaaaaa)) {\n}");
-  verifyFormat("for (const aaaaaaaaaaaaaaaaaaaaa &aaaaaaaaa :\n"
-               "     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {\n}");
-}
-
-TEST_F(FormatTest, FormatsWhileLoop) {
-  verifyFormat("while (true) {\n}");
-  verifyFormat("while (true)\n"
-               "  f();");
-  verifyFormat("while () {\n}");
-  verifyFormat("while () {\n"
-               "  f();\n"
-               "}");
-}
-
-TEST_F(FormatTest, FormatsDoWhile) {
-  verifyFormat("do {\n"
-               "  do_something();\n"
-               "} while (something());");
-  verifyFormat("do\n"
-               "  do_something();\n"
-               "while (something());");
-}
-
-TEST_F(FormatTest, FormatsSwitchStatement) {
-  verifyFormat("switch (x) {\n"
-               "case 1:\n"
-               "  f();\n"
-               "  break;\n"
-               "case kFoo:\n"
-               "case ns::kBar:\n"
-               "case kBaz:\n"
-               "  break;\n"
-               "default:\n"
-               "  g();\n"
-               "  break;\n"
-               "}");
-  verifyFormat("switch (x) {\n"
-               "case 1: {\n"
-               "  f();\n"
-               "  break;\n"
-               "}\n"
-               "}");
-  verifyFormat("switch (x) {\n"
-               "case 1: {\n"
-               "  f();\n"
-               "  {\n"
-               "    g();\n"
-               "    h();\n"
-               "  }\n"
-               "  break;\n"
-               "}\n"
-               "}");
-  verifyFormat("switch (x) {\n"
-               "case 1: {\n"
-               "  f();\n"
-               "  if (foo) {\n"
-               "    g();\n"
-               "    h();\n"
-               "  }\n"
-               "  break;\n"
-               "}\n"
-               "}");
-  verifyFormat("switch (x) {\n"
-               "case 1: {\n"
-               "  f();\n"
-               "  g();\n"
-               "} break;\n"
-               "}");
-  verifyFormat("switch (test)\n"
-               "  ;");
-  verifyFormat("switch (x) {\n"
-               "default: {\n"
-               "  // Do nothing.\n"
-               "}\n"
-               "}");
-  verifyFormat("switch (x) {\n"
-               "// comment\n"
-               "// if 1, do f()\n"
-               "case 1:\n"
-               "  f();\n"
-               "}");
-  verifyFormat("switch (x) {\n"
-               "case 1:\n"
-               "  // Do amazing stuff\n"
-               "  {\n"
-               "    f();\n"
-               "    g();\n"
-               "  }\n"
-               "  break;\n"
-               "}");
-  verifyFormat("#define A          \\\n"
-               "  switch (x) {     \\\n"
-               "  case a:          \\\n"
-               "    foo = b;       \\\n"
-               "  }", getLLVMStyleWithColumns(20));
-
-  verifyGoogleFormat("switch (x) {\n"
-                     "  case 1:\n"
-                     "    f();\n"
-                     "    break;\n"
-                     "  case kFoo:\n"
-                     "  case ns::kBar:\n"
-                     "  case kBaz:\n"
-                     "    break;\n"
-                     "  default:\n"
-                     "    g();\n"
-                     "    break;\n"
-                     "}");
-  verifyGoogleFormat("switch (x) {\n"
-                     "  case 1: {\n"
-                     "    f();\n"
-                     "    break;\n"
-                     "  }\n"
-                     "}");
-  verifyGoogleFormat("switch (test)\n"
-                     "    ;");
-}
-
-TEST_F(FormatTest, FormatsLabels) {
-  verifyFormat("void f() {\n"
-               "  some_code();\n"
-               "test_label:\n"
-               "  some_other_code();\n"
-               "  {\n"
-               "    some_more_code();\n"
-               "  another_label:\n"
-               "    some_more_code();\n"
-               "  }\n"
-               "}");
-  verifyFormat("some_code();\n"
-               "test_label:\n"
-               "some_other_code();");
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for comments.
-//===----------------------------------------------------------------------===//
-
-TEST_F(FormatTest, UnderstandsSingleLineComments) {
-  verifyFormat("//* */");
-  verifyFormat("// line 1\n"
-               "// line 2\n"
-               "void f() {}\n");
-
-  verifyFormat("void f() {\n"
-               "  // Doesn't do anything\n"
-               "}");
-  verifyFormat("void f(int i,  // some comment (probably for i)\n"
-               "       int j,  // some comment (probably for j)\n"
-               "       int k); // some comment (probably for k)");
-  verifyFormat("void f(int i,\n"
-               "       // some comment (probably for j)\n"
-               "       int j,\n"
-               "       // some comment (probably for k)\n"
-               "       int k);");
-
-  verifyFormat("int i    // This is a fancy variable\n"
-               "    = 5; // with nicely aligned comment.");
-
-  verifyFormat("// Leading comment.\n"
-               "int a; // Trailing comment.");
-  verifyFormat("int a; // Trailing comment\n"
-               "       // on 2\n"
-               "       // or 3 lines.\n"
-               "int b;");
-  verifyFormat("int a; // Trailing comment\n"
-               "\n"
-               "// Leading comment.\n"
-               "int b;");
-  verifyFormat("int a;    // Comment.\n"
-               "          // More details.\n"
-               "int bbbb; // Another comment.");
-  verifyFormat(
-      "int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; // comment\n"
-      "int bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;   // comment\n"
-      "int cccccccccccccccccccccccccccccc;       // comment\n"
-      "int ddd;                     // looooooooooooooooooooooooong comment\n"
-      "int aaaaaaaaaaaaaaaaaaaaaaa; // comment\n"
-      "int bbbbbbbbbbbbbbbbbbbbb;   // comment\n"
-      "int ccccccccccccccccccc;     // comment");
-
-  verifyFormat("#include \"a\"     // comment\n"
-               "#include \"a/b/c\" // comment");
-  verifyFormat("#include <a>     // comment\n"
-               "#include <a/b/c> // comment");
-
-  verifyFormat("enum E {\n"
-               "  // comment\n"
-               "  VAL_A, // comment\n"
-               "  VAL_B\n"
-               "};");
-
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n"
-      "    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb; // Trailing comment");
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n"
-               "    // Comment inside a statement.\n"
-               "    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;");
-  verifyFormat(
-      "bool aaaaaaaaaaaaa = // comment\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaaaaa;");
-
-  verifyFormat("int aaaa; // aaaaa\n"
-               "int aa;   // aaaaaaa",
-               getLLVMStyleWithColumns(20));
-
-  EXPECT_EQ("void f() { // This does something ..\n"
-            "}\n"
-            "int a; // This is unrelated",
-            format("void f()    {     // This does something ..\n"
-                   "  }\n"
-                   "int   a;     // This is unrelated"));
-  EXPECT_EQ("void f() { // This does something ..\n"
-            "}          // awesome..\n"
-            "\n"
-            "int a; // This is unrelated",
-            format("void f()    { // This does something ..\n"
-                   "      } // awesome..\n"
-                   " \n"
-                   "int a;    // This is unrelated"));
-
-  EXPECT_EQ("int i; // single line trailing comment",
-            format("int i;\\\n// single line trailing comment"));
-
-  verifyGoogleFormat("int a;  // Trailing comment.");
-
-  verifyFormat("someFunction(anotherFunction( // Force break.\n"
-               "    parameter));");
-
-  verifyGoogleFormat("#endif  // HEADER_GUARD");
-
-  verifyFormat("const char *test[] = {\n"
-               "  // A\n"
-               "  \"aaaa\",\n"
-               "  // B\n"
-               "  \"aaaaa\",\n"
-               "};");
-  verifyGoogleFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaa);  // 81 cols with this comment");
-  EXPECT_EQ("D(a, {\n"
-            "  // test\n"
-            "  int a;\n"
-            "});",
-            format("D(a, {\n"
-                   "// test\n"
-                   "int a;\n"
-                   "});"));
-}
-
-TEST_F(FormatTest, CanFormatCommentsLocally) {
-  EXPECT_EQ("int a;    // comment\n"
-            "int    b; // comment",
-            format("int   a; // comment\n"
-                   "int    b; // comment",
-                   0, 0, getLLVMStyle()));
-  EXPECT_EQ("int   a; // comment\n"
-            "         // line 2\n"
-            "int b;",
-            format("int   a; // comment\n"
-                   "            // line 2\n"
-                   "int b;",
-                   28, 0, getLLVMStyle()));
-  EXPECT_EQ("int aaaaaa; // comment\n"
-            "int b;\n"
-            "int c; // unrelated comment",
-            format("int aaaaaa; // comment\n"
-                   "int b;\n"
-                   "int   c; // unrelated comment",
-                   31, 0, getLLVMStyle()));
-}
-
-TEST_F(FormatTest, RemovesTrailingWhitespaceOfComments) {
-  EXPECT_EQ("// comment", format("// comment  "));
-  EXPECT_EQ("int aaaaaaa, bbbbbbb; // comment",
-            format("int aaaaaaa, bbbbbbb; // comment                   ",
-                   getLLVMStyleWithColumns(33)));
-}
-
-TEST_F(FormatTest, UnderstandsMultiLineComments) {
-  verifyFormat("f(/*test=*/ true);");
-  EXPECT_EQ(
-      "f(aaaaaaaaaaaaaaaaaaaaaaaaa, /* Trailing comment for aa... */\n"
-      "  bbbbbbbbbbbbbbbbbbbbbbbbb);",
-      format("f(aaaaaaaaaaaaaaaaaaaaaaaaa ,   \\\n/* Trailing comment for aa... */\n"
-             "  bbbbbbbbbbbbbbbbbbbbbbbbb);"));
-  EXPECT_EQ(
-      "f(aaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "  /* Leading comment for bb... */ bbbbbbbbbbbbbbbbbbbbbbbbb);",
-      format("f(aaaaaaaaaaaaaaaaaaaaaaaaa    ,   \n"
-             "/* Leading comment for bb... */   bbbbbbbbbbbbbbbbbbbbbbbbb);"));
-
-  FormatStyle NoBinPacking = getLLVMStyle();
-  NoBinPacking.BinPackParameters = false;
-  verifyFormat("aaaaaaaa(/* parameter 1 */ aaaaaa,\n"
-               "         /* parameter 2 */ aaaaaa,\n"
-               "         /* parameter 3 */ aaaaaa,\n"
-               "         /* parameter 4 */ aaaaaa);",
-               NoBinPacking);
-}
-
-TEST_F(FormatTest, AlignsMultiLineComments) {
-  EXPECT_EQ("/*\n"
-            " * Really multi-line\n"
-            " * comment.\n"
-            " */\n"
-            "void f() {}",
-            format("  /*\n"
-                   "   * Really multi-line\n"
-                   "   * comment.\n"
-                   "   */\n"
-                   "  void f() {}"));
-  EXPECT_EQ("class C {\n"
-            "  /*\n"
-            "   * Another multi-line\n"
-            "   * comment.\n"
-            "   */\n"
-            "  void f() {}\n"
-            "};",
-            format("class C {\n"
-                   "/*\n"
-                   " * Another multi-line\n"
-                   " * comment.\n"
-                   " */\n"
-                   "void f() {}\n"
-                   "};"));
-  EXPECT_EQ("/*\n"
-            "  1. This is a comment with non-trivial formatting.\n"
-            "     1.1. We have to indent/outdent all lines equally\n"
-            "         1.1.1. to keep the formatting.\n"
-            " */",
-            format("  /*\n"
-                   "    1. This is a comment with non-trivial formatting.\n"
-                   "       1.1. We have to indent/outdent all lines equally\n"
-                   "           1.1.1. to keep the formatting.\n"
-                   "   */"));
-  EXPECT_EQ("/*\n"
-            " Don't try to outdent if there's not enough inentation.\n"
-            " */",
-            format("  /*\n"
-                   " Don't try to outdent if there's not enough inentation.\n"
-                   " */"));
-}
-
-TEST_F(FormatTest, SplitsLongCxxComments) {
-  EXPECT_EQ("// A comment that\n"
-            "// doesn't fit on\n"
-            "// one line",
-            format("// A comment that doesn't fit on one line",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("// a b c d\n"
-            "// e f  g\n"
-            "// h i j k",
-            format("// a b c d e f  g h i j k",
-                   getLLVMStyleWithColumns(10)));
-  EXPECT_EQ("// a b c d\n"
-            "// e f  g\n"
-            "// h i j k",
-            format("\\\n// a b c d e f  g h i j k",
-                   getLLVMStyleWithColumns(10)));
-  EXPECT_EQ("if (true) // A comment that\n"
-            "          // doesn't fit on\n"
-            "          // one line",
-            format("if (true) // A comment that doesn't fit on one line   ",
-                   getLLVMStyleWithColumns(30)));
-  EXPECT_EQ("//    Don't_touch_leading_whitespace",
-            format("//    Don't_touch_leading_whitespace",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ(
-      "//Don't add leading\n"
-      "//whitespace",
-      format("//Don't add leading whitespace", getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("// A comment before\n"
-            "// a macro\n"
-            "// definition\n"
-            "#define a b",
-            format("// A comment before a macro definition\n"
-                   "#define a b",
-                   getLLVMStyleWithColumns(20)));
-}
-
-TEST_F(FormatTest, ParsesCommentsAdjacentToPPDirectives) {
-  EXPECT_EQ("namespace {}\n// Test\n#define A",
-            format("namespace {}\n   // Test\n#define A"));
-  EXPECT_EQ("namespace {}\n/* Test */\n#define A",
-            format("namespace {}\n   /* Test */\n#define A"));
-  EXPECT_EQ("namespace {}\n/* Test */ #define A",
-            format("namespace {}\n   /* Test */    #define A"));
-}
-
-TEST_F(FormatTest, SplitsLongLinesInComments) {
-  EXPECT_EQ("/* This is a long\n"
-            " * comment that\n"
-            " * doesn't\n"
-            " * fit on one line.\n"
-            " */",
-            format("/* "
-                   "This is a long                                         "
-                   "comment that "
-                   "doesn't                                    "
-                   "fit on one line.  */",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("/* a b c d\n"
-            " * e f  g\n"
-            " * h i j k\n"
-            " */",
-            format("/* a b c d e f  g h i j k */",
-                   getLLVMStyleWithColumns(10)));
-  EXPECT_EQ("/* a b c d\n"
-            " * e f  g\n"
-            " * h i j k\n"
-            " */",
-            format("\\\n/* a b c d e f  g h i j k */",
-                   getLLVMStyleWithColumns(10)));
-  EXPECT_EQ("/*\n"
-            "This is a long\n"
-            "comment that doesn't\n"
-            "fit on one line.\n"
-            "*/",
-            format("/*\n"
-                   "This is a long                                         "
-                   "comment that doesn't                                    "
-                   "fit on one line.                                      \n"
-                   "*/", getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("/*\n"
-            " * This is a long\n"
-            " * comment that\n"
-            " * doesn't fit on\n"
-            " * one line.\n"
-            " */",
-            format("/*      \n"
-                   " * This is a long "
-                   "   comment that     "
-                   "   doesn't fit on   "
-                   "   one line.                                            \n"
-                   " */", getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("/*\n"
-            " * This_is_a_comment_with_words_that_dont_fit_on_one_line\n"
-            " * so_it_should_be_broken\n"
-            " * wherever_a_space_occurs\n"
-            " */",
-            format("/*\n"
-                   " * This_is_a_comment_with_words_that_dont_fit_on_one_line "
-                   "   so_it_should_be_broken "
-                   "   wherever_a_space_occurs                             \n"
-                   " */",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("/*\n"
-            " *    This_comment_can_not_be_broken_into_lines\n"
-            " */",
-            format("/*\n"
-                   " *    This_comment_can_not_be_broken_into_lines\n"
-                   " */",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("{\n"
-            "  /*\n"
-            "  This is another\n"
-            "  long comment that\n"
-            "  doesn't fit on one\n"
-            "  line    1234567890\n"
-            "  */\n"
-            "}",
-            format("{\n"
-                   "/*\n"
-                   "This is another     "
-                   "  long comment that "
-                   "  doesn't fit on one"
-                   "  line    1234567890\n"
-                   "*/\n"
-                   "}", getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("{\n"
-            "  /*\n"
-            "   * This        i s\n"
-            "   * another comment\n"
-            "   * t hat  doesn' t\n"
-            "   * fit on one l i\n"
-            "   * n e\n"
-            "   */\n"
-            "}",
-            format("{\n"
-                   "/*\n"
-                   " * This        i s"
-                   "   another comment"
-                   "   t hat  doesn' t"
-                   "   fit on one l i"
-                   "   n e\n"
-                   " */\n"
-                   "}", getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("/*\n"
-            " * This is a long\n"
-            " * comment that\n"
-            " * doesn't fit on\n"
-            " * one line\n"
-            " */",
-            format("   /*\n"
-                   "    * This is a long comment that doesn't fit on one line\n"
-                   "    */", getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("{\n"
-            "  if (something) /* This is a\n"
-            "long comment */\n"
-            "    ;\n"
-            "}",
-            format("{\n"
-                   "  if (something) /* This is a long comment */\n"
-                   "    ;\n"
-                   "}",
-                   getLLVMStyleWithColumns(30)));
-}
-
-TEST_F(FormatTest, SplitsLongLinesInCommentsInPreprocessor) {
-  EXPECT_EQ("#define X          \\\n"
-            "  /*               \\\n"
-            "   Test            \\\n"
-            "   Macro comment   \\\n"
-            "   with a long     \\\n"
-            "   line            \\\n"
-            "   */              \\\n"
-            "  A + B",
-            format("#define X \\\n"
-                   "  /*\n"
-                   "   Test\n"
-                   "   Macro comment with a long  line\n"
-                   "   */ \\\n"
-                   "  A + B",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("#define X          \\\n"
-            "  /* Macro comment \\\n"
-            "     with a long   \\\n"
-            "     line */       \\\n"
-            "  A + B",
-            format("#define X \\\n"
-                   "  /* Macro comment with a long\n"
-                   "     line */ \\\n"
-                   "  A + B",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("#define X          \\\n"
-            "  /* Macro comment \\\n"
-            "   * with a long   \\\n"
-            "   * line */       \\\n"
-            "  A + B",
-            format("#define X \\\n"
-                   "  /* Macro comment with a long  line */ \\\n"
-                   "  A + B",
-                   getLLVMStyleWithColumns(20)));
-}
-
-TEST_F(FormatTest, CommentsInStaticInitializers) {
-  EXPECT_EQ(
-      "static SomeType type = { aaaaaaaaaaaaaaaaaaaa, /* comment */\n"
-      "                         aaaaaaaaaaaaaaaaaaaa /* comment */,\n"
-      "                         /* comment */ aaaaaaaaaaaaaaaaaaaa,\n"
-      "                         aaaaaaaaaaaaaaaaaaaa, // comment\n"
-      "                         aaaaaaaaaaaaaaaaaaaa };",
-      format("static SomeType type = { aaaaaaaaaaaaaaaaaaaa  ,  /* comment */\n"
-             "                   aaaaaaaaaaaaaaaaaaaa   /* comment */ ,\n"
-             "                     /* comment */   aaaaaaaaaaaaaaaaaaaa ,\n"
-             "              aaaaaaaaaaaaaaaaaaaa ,   // comment\n"
-             "                  aaaaaaaaaaaaaaaaaaaa };"));
-  verifyFormat("static SomeType type = { aaaaaaaaaaa, // comment for aa...\n"
-               "                         bbbbbbbbbbb, ccccccccccc };");
-  verifyFormat("static SomeType type = { aaaaaaaaaaa,\n"
-               "                         // comment for bb....\n"
-               "                         bbbbbbbbbbb, ccccccccccc };");
-  verifyGoogleFormat(
-      "static SomeType type = { aaaaaaaaaaa,  // comment for aa...\n"
-      "                         bbbbbbbbbbb, ccccccccccc };");
-  verifyGoogleFormat("static SomeType type = { aaaaaaaaaaa,\n"
-                     "                         // comment for bb....\n"
-                     "                         bbbbbbbbbbb, ccccccccccc };");
-
-  verifyFormat("S s = { { a, b, c },   // Group #1\n"
-               "        { d, e, f },   // Group #2\n"
-               "        { g, h, i } }; // Group #3");
-  verifyFormat("S s = { { // Group #1\n"
-               "          a, b, c },\n"
-               "        { // Group #2\n"
-               "          d, e, f },\n"
-               "        { // Group #3\n"
-               "          g, h, i } };");
-
-  EXPECT_EQ("S s = {\n"
-            "  // Some comment\n"
-            "  a,\n"
-            "\n"
-            "  // Comment after empty line\n"
-            "  b\n"
-            "}",
-            format("S s =    {\n"
-                   "      // Some comment\n"
-                   "  a,\n"
-                   "  \n"
-                   "     // Comment after empty line\n"
-                   "      b\n"
-                   "}"));
-  EXPECT_EQ("S s = { a, b };", format("S s = {\n"
-                                      "  a,\n"
-                                      "\n"
-                                      "  b\n"
-                                      "};"));
-  verifyFormat("const uint8_t aaaaaaaaaaaaaaaaaaaaaa[0] = {\n"
-               "  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // comment\n"
-               "  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // comment\n"
-               "  0x00, 0x00, 0x00, 0x00              // comment\n"
-               "};");
-}
-
-//===----------------------------------------------------------------------===//
-// Tests for classes, namespaces, etc.
-//===----------------------------------------------------------------------===//
-
-TEST_F(FormatTest, DoesNotBreakSemiAfterClassDecl) {
-  verifyFormat("class A {\n};");
-}
-
-TEST_F(FormatTest, UnderstandsAccessSpecifiers) {
-  verifyFormat("class A {\n"
-               "public:\n"
-               "public: // comment\n"
-               "protected:\n"
-               "private:\n"
-               "  void f() {}\n"
-               "};");
-  verifyGoogleFormat("class A {\n"
-                     " public:\n"
-                     " protected:\n"
-                     " private:\n"
-                     "  void f() {}\n"
-                     "};");
-}
-
-TEST_F(FormatTest, SeparatesLogicalBlocks) {
-  EXPECT_EQ("class A {\n"
-            "public:\n"
-            "  void f();\n"
-            "\n"
-            "private:\n"
-            "  void g() {}\n"
-            "  // test\n"
-            "protected:\n"
-            "  int h;\n"
-            "};",
-            format("class A {\n"
-                   "public:\n"
-                   "void f();\n"
-                   "private:\n"
-                   "void g() {}\n"
-                   "// test\n"
-                   "protected:\n"
-                   "int h;\n"
-                   "};"));
-}
-
-TEST_F(FormatTest, FormatsClasses) {
-  verifyFormat("class A : public B {\n};");
-  verifyFormat("class A : public ::B {\n};");
-
-  verifyFormat(
-      "class AAAAAAAAAAAAAAAAAAAA : public BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,\n"
-      "                             public CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC {\n"
-      "};\n");
-  verifyFormat("class AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n"
-               "    : public BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,\n"
-               "      public CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC {\n"
-               "};\n");
-  verifyFormat(
-      "class A : public B, public C, public D, public E, public F, public G {\n"
-      "};");
-  verifyFormat("class AAAAAAAAAAAA : public B,\n"
-               "                     public C,\n"
-               "                     public D,\n"
-               "                     public E,\n"
-               "                     public F,\n"
-               "                     public G {\n"
-               "};");
-
-  verifyFormat("class\n"
-               "    ReallyReallyLongClassName {\n};",
-               getLLVMStyleWithColumns(32));
-}
-
-TEST_F(FormatTest, FormatsVariableDeclarationsAfterStructOrClass) {
-  verifyFormat("class A {\n} a, b;");
-  verifyFormat("struct A {\n} a, b;");
-  verifyFormat("union A {\n} a;");
-}
-
-TEST_F(FormatTest, FormatsEnum) {
-  verifyFormat("enum {\n"
-               "  Zero,\n"
-               "  One = 1,\n"
-               "  Two = One + 1,\n"
-               "  Three = (One + Two),\n"
-               "  Four = (Zero && (One ^ Two)) | (One << Two),\n"
-               "  Five = (One, Two, Three, Four, 5)\n"
-               "};");
-  verifyFormat("enum Enum {\n"
-               "};");
-  verifyFormat("enum {\n"
-               "};");
-  verifyFormat("enum X E {\n} d;");
-  verifyFormat("enum __attribute__((...)) E {\n} d;");
-  verifyFormat("enum __declspec__((...)) E {\n} d;");
-  verifyFormat("enum X f() {\n  a();\n  return 42;\n}");
-}
-
-TEST_F(FormatTest, FormatsBitfields) {
-  verifyFormat("struct Bitfields {\n"
-               "  unsigned sClass : 8;\n"
-               "  unsigned ValueKind : 2;\n"
-               "};");
-}
-
-TEST_F(FormatTest, FormatsNamespaces) {
-  verifyFormat("namespace some_namespace {\n"
-               "class A {\n};\n"
-               "void f() { f(); }\n"
-               "}");
-  verifyFormat("namespace {\n"
-               "class A {\n};\n"
-               "void f() { f(); }\n"
-               "}");
-  verifyFormat("inline namespace X {\n"
-               "class A {\n};\n"
-               "void f() { f(); }\n"
-               "}");
-  verifyFormat("using namespace some_namespace;\n"
-               "class A {\n};\n"
-               "void f() { f(); }");
-
-  // This code is more common than we thought; if we
-  // layout this correctly the semicolon will go into
-  // its own line, which is undesireable.
-  verifyFormat("namespace {\n};");
-  verifyFormat("namespace {\n"
-               "class A {\n"
-               "};\n"
-               "};");
-}
-
-TEST_F(FormatTest, FormatsExternC) { verifyFormat("extern \"C\" {\nint a;"); }
-
-TEST_F(FormatTest, FormatsInlineASM) {
-  verifyFormat("asm(\"xyz\" : \"=a\"(a), \"=d\"(b) : \"a\"(data));");
-  verifyFormat(
-      "asm(\"movq\\t%%rbx, %%rsi\\n\\t\"\n"
-      "    \"cpuid\\n\\t\"\n"
-      "    \"xchgq\\t%%rbx, %%rsi\\n\\t\"\n"
-      "    : \"=a\" (*rEAX), \"=S\" (*rEBX), \"=c\" (*rECX), \"=d\" (*rEDX)\n"
-      "    : \"a\"(value));");
-}
-
-TEST_F(FormatTest, FormatTryCatch) {
-  // FIXME: Handle try-catch explicitly in the UnwrappedLineParser, then we'll
-  // also not create single-line-blocks.
-  verifyFormat("try {\n"
-               "  throw a * b;\n"
-               "}\n"
-               "catch (int a) {\n"
-               "  // Do nothing.\n"
-               "}\n"
-               "catch (...) {\n"
-               "  exit(42);\n"
-               "}");
-
-  // Function-level try statements.
-  verifyFormat("int f() try { return 4; }\n"
-               "catch (...) {\n"
-               "  return 5;\n"
-               "}");
-  verifyFormat("class A {\n"
-               "  int a;\n"
-               "  A() try : a(0) {}\n"
-               "  catch (...) {\n"
-               "    throw;\n"
-               "  }\n"
-               "};\n");
-}
-
-TEST_F(FormatTest, FormatObjCTryCatch) {
-  verifyFormat("@try {\n"
-               "  f();\n"
-               "}\n"
-               "@catch (NSException e) {\n"
-               "  @throw;\n"
-               "}\n"
-               "@finally {\n"
-               "  exit(42);\n"
-               "}");
-}
-
-TEST_F(FormatTest, StaticInitializers) {
-  verifyFormat("static SomeClass SC = { 1, 'a' };");
-
-  // FIXME: Format like enums if the static initializer does not fit on a line.
-  verifyFormat(
-      "static SomeClass WithALoooooooooooooooooooongName = {\n"
-      "  100000000, \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n"
-      "};");
-
-  verifyFormat(
-      "static SomeClass = { a, b, c, d, e, f, g, h, i, j,\n"
-      "                     looooooooooooooooooooooooooooooooooongname,\n"
-      "                     looooooooooooooooooooooooooooooong };");
-  // Allow bin-packing in static initializers as this would often lead to
-  // terrible results, e.g.:
-  verifyGoogleFormat(
-      "static SomeClass = { a, b, c, d, e, f, g, h, i, j,\n"
-      "                     looooooooooooooooooooooooooooooooooongname,\n"
-      "                     looooooooooooooooooooooooooooooong };");
-}
-
-TEST_F(FormatTest, NestedStaticInitializers) {
-  verifyFormat("static A x = { { {} } };\n");
-  verifyFormat("static A x = { { { init1, init2, init3, init4 },\n"
-               "                 { init1, init2, init3, init4 } } };");
-
-  verifyFormat("somes Status::global_reps[3] = {\n"
-               "  { kGlobalRef, OK_CODE, NULL, NULL, NULL },\n"
-               "  { kGlobalRef, CANCELLED_CODE, NULL, NULL, NULL },\n"
-               "  { kGlobalRef, UNKNOWN_CODE, NULL, NULL, NULL }\n"
-               "};");
-  verifyGoogleFormat("somes Status::global_reps[3] = {\n"
-                     "  { kGlobalRef, OK_CODE, NULL, NULL, NULL },\n"
-                     "  { kGlobalRef, CANCELLED_CODE, NULL, NULL, NULL },\n"
-                     "  { kGlobalRef, UNKNOWN_CODE, NULL, NULL, NULL }\n"
-                     "};");
-  verifyFormat(
-      "CGRect cg_rect = { { rect.fLeft, rect.fTop },\n"
-      "                   { rect.fRight - rect.fLeft, rect.fBottom - rect.fTop"
-      " } };");
-
-  verifyFormat(
-      "SomeArrayOfSomeType a = { { { 1, 2, 3 }, { 1, 2, 3 },\n"
-      "                            { 111111111111111111111111111111,\n"
-      "                              222222222222222222222222222222,\n"
-      "                              333333333333333333333333333333 },\n"
-      "                            { 1, 2, 3 }, { 1, 2, 3 } } };");
-  verifyFormat(
-      "SomeArrayOfSomeType a = { { { 1, 2, 3 } }, { { 1, 2, 3 } },\n"
-      "                          { { 111111111111111111111111111111,\n"
-      "                              222222222222222222222222222222,\n"
-      "                              333333333333333333333333333333 } },\n"
-      "                          { { 1, 2, 3 } }, { { 1, 2, 3 } } };");
-
-  // FIXME: We might at some point want to handle this similar to parameter
-  // lists, where we have an option to put each on a single line.
-  verifyFormat(
-      "struct {\n"
-      "  unsigned bit;\n"
-      "  const char *const name;\n"
-      "} kBitsToOs[] = { { kOsMac, \"Mac\" }, { kOsWin, \"Windows\" },\n"
-      "                  { kOsLinux, \"Linux\" }, { kOsCrOS, \"Chrome OS\" } };");
-}
-
-TEST_F(FormatTest, FormatsSmallMacroDefinitionsInSingleLine) {
-  verifyFormat("#define ALooooooooooooooooooooooooooooooooooooooongMacro("
-               "                      \\\n"
-               "    aLoooooooooooooooooooooooongFuuuuuuuuuuuuuunctiooooooooo)");
-}
-
-TEST_F(FormatTest, DoesNotBreakPureVirtualFunctionDefinition) {
-  verifyFormat(
-      "virtual void write(ELFWriter *writerrr,\n"
-      "                   OwningPtr<FileOutputBuffer> &buffer) = 0;");
-}
-
-TEST_F(FormatTest, LayoutUnknownPPDirective) {
-  EXPECT_EQ("#123 \"A string literal\"",
-            format("   #     123    \"A string literal\""));
-  EXPECT_EQ("#;", format("#;"));
-  verifyFormat("#\n;\n;\n;");
-}
-
-TEST_F(FormatTest, UnescapedEndOfLineEndsPPDirective) {
-  EXPECT_EQ("#line 42 \"test\"\n",
-            format("#  \\\n  line  \\\n  42  \\\n  \"test\"\n"));
-  EXPECT_EQ("#define A B\n", format("#  \\\n define  \\\n    A  \\\n       B\n",
-                                    getLLVMStyleWithColumns(12)));
-}
-
-TEST_F(FormatTest, EndOfFileEndsPPDirective) {
-  EXPECT_EQ("#line 42 \"test\"",
-            format("#  \\\n  line  \\\n  42  \\\n  \"test\""));
-  EXPECT_EQ("#define A B", format("#  \\\n define  \\\n    A  \\\n       B"));
-}
-
-TEST_F(FormatTest, IndentsPPDirectiveInReducedSpace) {
-  verifyFormat("#define A(BB)", getLLVMStyleWithColumns(13));
-  verifyFormat("#define A( \\\n    BB)", getLLVMStyleWithColumns(12));
-  verifyFormat("#define A( \\\n    A, B)", getLLVMStyleWithColumns(12));
-  // FIXME: We never break before the macro name.
-  verifyFormat("#define AA(\\\n    B)", getLLVMStyleWithColumns(12));
-
-  verifyFormat("#define A A\n#define A A");
-  verifyFormat("#define A(X) A\n#define A A");
-
-  verifyFormat("#define Something Other", getLLVMStyleWithColumns(23));
-  verifyFormat("#define Something    \\\n  Other", getLLVMStyleWithColumns(22));
-}
-
-TEST_F(FormatTest, HandlePreprocessorDirectiveContext) {
-  EXPECT_EQ("// somecomment\n"
-            "#include \"a.h\"\n"
-            "#define A(  \\\n"
-            "    A, B)\n"
-            "#include \"b.h\"\n"
-            "// somecomment\n",
-            format("  // somecomment\n"
-                   "  #include \"a.h\"\n"
-                   "#define A(A,\\\n"
-                   "    B)\n"
-                   "    #include \"b.h\"\n"
-                   " // somecomment\n",
-                   getLLVMStyleWithColumns(13)));
-}
-
-TEST_F(FormatTest, LayoutSingleHash) { EXPECT_EQ("#\na;", format("#\na;")); }
-
-TEST_F(FormatTest, LayoutCodeInMacroDefinitions) {
-  EXPECT_EQ("#define A    \\\n"
-            "  c;         \\\n"
-            "  e;\n"
-            "f;",
-            format("#define A c; e;\n"
-                   "f;",
-                   getLLVMStyleWithColumns(14)));
-}
-
-TEST_F(FormatTest, LayoutRemainingTokens) { EXPECT_EQ("{}", format("{}")); }
-
-TEST_F(FormatTest, LayoutSingleUnwrappedLineInMacro) {
-  EXPECT_EQ("# define A\\\n  b;",
-            format("# define A b;", 11, 2, getLLVMStyleWithColumns(11)));
-}
-
-TEST_F(FormatTest, MacroDefinitionInsideStatement) {
-  EXPECT_EQ("int x,\n"
-            "#define A\n"
-            "    y;",
-            format("int x,\n#define A\ny;"));
-}
-
-TEST_F(FormatTest, HashInMacroDefinition) {
-  verifyFormat("#define A \\\n  b #c;", getLLVMStyleWithColumns(11));
-  verifyFormat("#define A \\\n"
-               "  {       \\\n"
-               "    f(#c);\\\n"
-               "  }",
-               getLLVMStyleWithColumns(11));
-
-  verifyFormat("#define A(X)         \\\n"
-               "  void function##X()",
-               getLLVMStyleWithColumns(22));
-
-  verifyFormat("#define A(a, b, c)   \\\n"
-               "  void a##b##c()",
-               getLLVMStyleWithColumns(22));
-
-  verifyFormat("#define A void # ## #", getLLVMStyleWithColumns(22));
-}
-
-TEST_F(FormatTest, RespectWhitespaceInMacroDefinitions) {
-  verifyFormat("#define A (1)");
-}
-
-TEST_F(FormatTest, EmptyLinesInMacroDefinitions) {
-  EXPECT_EQ("#define A b;", format("#define A \\\n"
-                                   "          \\\n"
-                                   "  b;",
-                                   getLLVMStyleWithColumns(25)));
-  EXPECT_EQ("#define A \\\n"
-            "          \\\n"
-            "  a;      \\\n"
-            "  b;",
-            format("#define A \\\n"
-                   "          \\\n"
-                   "  a;      \\\n"
-                   "  b;",
-                   getLLVMStyleWithColumns(11)));
-  EXPECT_EQ("#define A \\\n"
-            "  a;      \\\n"
-            "          \\\n"
-            "  b;",
-            format("#define A \\\n"
-                   "  a;      \\\n"
-                   "          \\\n"
-                   "  b;",
-                   getLLVMStyleWithColumns(11)));
-}
-
-TEST_F(FormatTest, MacroDefinitionsWithIncompleteCode) {
-  verifyFormat("#define A :");
-
-  // FIXME: Improve formatting of case labels in macros.
-  verifyFormat("#define SOMECASES  \\\n"
-               "  case 1:          \\\n"
-               "  case 2\n",
-               getLLVMStyleWithColumns(20));
-
-  verifyFormat("#define A template <typename T>");
-  verifyFormat("#define STR(x) #x\n"
-               "f(STR(this_is_a_string_literal{));");
-}
-
-TEST_F(FormatTest, MacroCallsWithoutTrailingSemicolon) {
-  EXPECT_EQ("INITIALIZE_PASS_BEGIN(ScopDetection, \"polly-detect\")\n"
-            "INITIALIZE_AG_DEPENDENCY(AliasAnalysis)\n"
-            "INITIALIZE_PASS_DEPENDENCY(DominatorTree)\n"
-            "class X {\n"
-            "};\n"
-            "INITIALIZE_PASS_END(ScopDetection, \"polly-detect\")\n"
-            "int *createScopDetectionPass() { return 0; }",
-            format("  INITIALIZE_PASS_BEGIN(ScopDetection, \"polly-detect\")\n"
-                   "  INITIALIZE_AG_DEPENDENCY(AliasAnalysis)\n"
-                   "  INITIALIZE_PASS_DEPENDENCY(DominatorTree)\n"
-                   "  class X {};\n"
-                   "  INITIALIZE_PASS_END(ScopDetection, \"polly-detect\")\n"
-                   "  int *createScopDetectionPass() { return 0; }"));
-  // FIXME: We could probably treat IPC_BEGIN_MESSAGE_MAP/IPC_END_MESSAGE_MAP as
-  // braces, so that inner block is indented one level more.
-  EXPECT_EQ("int q() {\n"
-            "  IPC_BEGIN_MESSAGE_MAP(WebKitTestController, message)\n"
-            "  IPC_MESSAGE_HANDLER(xxx, qqq)\n"
-            "  IPC_END_MESSAGE_MAP()\n"
-            "}",
-            format("int q() {\n"
-                   "  IPC_BEGIN_MESSAGE_MAP(WebKitTestController, message)\n"
-                   "    IPC_MESSAGE_HANDLER(xxx, qqq)\n"
-                   "  IPC_END_MESSAGE_MAP()\n"
-                   "}"));
-  EXPECT_EQ("int q() {\n"
-            "  f(x);\n"
-            "  f(x) {}\n"
-            "  f(x)->g();\n"
-            "  f(x)->*g();\n"
-            "  f(x).g();\n"
-            "  f(x) = x;\n"
-            "  f(x) += x;\n"
-            "  f(x) -= x;\n"
-            "  f(x) *= x;\n"
-            "  f(x) /= x;\n"
-            "  f(x) %= x;\n"
-            "  f(x) &= x;\n"
-            "  f(x) |= x;\n"
-            "  f(x) ^= x;\n"
-            "  f(x) >>= x;\n"
-            "  f(x) <<= x;\n"
-            "  f(x)[y].z();\n"
-            "  LOG(INFO) << x;\n"
-            "  ifstream(x) >> x;\n"
-            "}\n",
-            format("int q() {\n"
-                   "  f(x)\n;\n"
-                   "  f(x)\n {}\n"
-                   "  f(x)\n->g();\n"
-                   "  f(x)\n->*g();\n"
-                   "  f(x)\n.g();\n"
-                   "  f(x)\n = x;\n"
-                   "  f(x)\n += x;\n"
-                   "  f(x)\n -= x;\n"
-                   "  f(x)\n *= x;\n"
-                   "  f(x)\n /= x;\n"
-                   "  f(x)\n %= x;\n"
-                   "  f(x)\n &= x;\n"
-                   "  f(x)\n |= x;\n"
-                   "  f(x)\n ^= x;\n"
-                   "  f(x)\n >>= x;\n"
-                   "  f(x)\n <<= x;\n"
-                   "  f(x)\n[y].z();\n"
-                   "  LOG(INFO)\n << x;\n"
-                   "  ifstream(x)\n >> x;\n"
-                   "}\n"));
-  EXPECT_EQ("int q() {\n"
-            "  f(x)\n"
-            "  if (1) {\n"
-            "  }\n"
-            "  f(x)\n"
-            "  while (1) {\n"
-            "  }\n"
-            "  f(x)\n"
-            "  g(x);\n"
-            "  f(x)\n"
-            "  try {\n"
-            "    q();\n"
-            "  }\n"
-            "  catch (...) {\n"
-            "  }\n"
-            "}\n",
-            format("int q() {\n"
-                   "f(x)\n"
-                   "if (1) {}\n"
-                   "f(x)\n"
-                   "while (1) {}\n"
-                   "f(x)\n"
-                   "g(x);\n"
-                   "f(x)\n"
-                   "try { q(); } catch (...) {}\n"
-                   "}\n"));
-  EXPECT_EQ("class A {\n"
-            "  A() : t(0) {}\n"
-            "  A(X x)\n" // FIXME: function-level try blocks are broken.
-            "  try : t(0) {\n"
-            "  }\n"
-            "  catch (...) {\n"
-            "  }\n"
-            "};",
-            format("class A {\n"
-                   "  A()\n : t(0) {}\n"
-                   "  A(X x)\n"
-                   "  try : t(0) {} catch (...) {}\n"
-                   "};"));
-}
-
-TEST_F(FormatTest, IndentPreprocessorDirectivesAtZero) {
-  EXPECT_EQ("{\n  {\n#define A\n  }\n}", format("{{\n#define A\n}}"));
-}
-
-TEST_F(FormatTest, FormatHashIfNotAtStartOfLine) {
-  verifyFormat("{\n  { a #c; }\n}");
-}
-
-TEST_F(FormatTest, FormatUnbalancedStructuralElements) {
-  EXPECT_EQ("#define A \\\n  {       \\\n    {\nint i;",
-            format("#define A { {\nint i;", getLLVMStyleWithColumns(11)));
-  EXPECT_EQ("#define A \\\n  }       \\\n  }\nint i;",
-            format("#define A } }\nint i;", getLLVMStyleWithColumns(11)));
-}
-
-TEST_F(FormatTest, EscapedNewlineAtStartOfTokenInMacroDefinition) {
-  EXPECT_EQ(
-      "#define A \\\n  int i;  \\\n  int j;",
-      format("#define A \\\nint i;\\\n  int j;", getLLVMStyleWithColumns(11)));
-}
-
-TEST_F(FormatTest, CalculateSpaceOnConsecutiveLinesInMacro) {
-  verifyFormat("#define A \\\n"
-               "  int v(  \\\n"
-               "      a); \\\n"
-               "  int i;",
-               getLLVMStyleWithColumns(11));
-}
-
-TEST_F(FormatTest, MixingPreprocessorDirectivesAndNormalCode) {
-  EXPECT_EQ(
-      "#define ALooooooooooooooooooooooooooooooooooooooongMacro("
-      "                      \\\n"
-      "    aLoooooooooooooooooooooooongFuuuuuuuuuuuuuunctiooooooooo)\n"
-      "\n"
-      "AlooooooooooooooooooooooooooooooooooooooongCaaaaaaaaaal(\n"
-      "    aLooooooooooooooooooooooonPaaaaaaaaaaaaaaaaaaaaarmmmm);\n",
-      format("  #define   ALooooooooooooooooooooooooooooooooooooooongMacro("
-             "\\\n"
-             "aLoooooooooooooooooooooooongFuuuuuuuuuuuuuunctiooooooooo)\n"
-             "  \n"
-             "   AlooooooooooooooooooooooooooooooooooooooongCaaaaaaaaaal(\n"
-             "  aLooooooooooooooooooooooonPaaaaaaaaaaaaaaaaaaaaarmmmm);\n"));
-}
-
-TEST_F(FormatTest, LayoutStatementsAroundPreprocessorDirectives) {
-  EXPECT_EQ("int\n"
-            "#define A\n"
-            "    a;",
-            format("int\n#define A\na;"));
-  verifyFormat("functionCallTo(\n"
-               "    someOtherFunction(\n"
-               "        withSomeParameters, whichInSequence,\n"
-               "        areLongerThanALine(andAnotherCall,\n"
-               "#define A B\n"
-               "                           withMoreParamters,\n"
-               "                           whichStronglyInfluenceTheLayout),\n"
-               "        andMoreParameters),\n"
-               "    trailing);",
-               getLLVMStyleWithColumns(69));
-}
-
-TEST_F(FormatTest, LayoutBlockInsideParens) {
-  EXPECT_EQ("functionCall({\n"
-            "  int i;\n"
-            "});",
-            format(" functionCall ( {int i;} );"));
-}
-
-TEST_F(FormatTest, LayoutBlockInsideStatement) {
-  EXPECT_EQ("SOME_MACRO { int i; }\n"
-            "int i;",
-            format("  SOME_MACRO  {int i;}  int i;"));
-}
-
-TEST_F(FormatTest, LayoutNestedBlocks) {
-  verifyFormat("void AddOsStrings(unsigned bitmask) {\n"
-               "  struct s {\n"
-               "    int i;\n"
-               "  };\n"
-               "  s kBitsToOs[] = { { 10 } };\n"
-               "  for (int i = 0; i < 10; ++i)\n"
-               "    return;\n"
-               "}");
-}
-
-TEST_F(FormatTest, PutEmptyBlocksIntoOneLine) {
-  EXPECT_EQ("{}", format("{}"));
-
-  // Negative test for enum.
-  verifyFormat("enum E {\n};");
-
-  // Note that when there's a missing ';', we still join...
-  verifyFormat("enum E {}");
-}
-
-//===----------------------------------------------------------------------===//
-// Line break tests.
-//===----------------------------------------------------------------------===//
-
-TEST_F(FormatTest, FormatsFunctionDefinition) {
-  verifyFormat("void f(int a, int b, int c, int d, int e, int f, int g,"
-               " int h, int j, int f,\n"
-               "       int c, int ddddddddddddd) {}");
-}
-
-TEST_F(FormatTest, FormatsAwesomeMethodCall) {
-  verifyFormat(
-      "SomeLongMethodName(SomeReallyLongMethod(CallOtherReallyLongMethod(\n"
-      "                       parameter, parameter, parameter)),\n"
-      "                   SecondLongCall(parameter));");
-}
-
-TEST_F(FormatTest, PreventConfusingIndents) {
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa),\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaa[\n"
-      "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa],\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaa];");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaa<\n"
-      "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>,\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaa>;");
-  verifyFormat("int a = bbbb && ccc && fffff(\n"
-               "#define A Just forcing a new line\n"
-               "                           ddd);");
-}
-
-TEST_F(FormatTest, ExpressionIndentation) {
-  verifyFormat("bool value = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-               "                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-               "                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ==\n"
-               "                 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *\n"
-               "                         bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +\n"
-               "                     bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb &&\n"
-               "             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *\n"
-               "                     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >\n"
-               "                 ccccccccccccccccccccccccccccccccccccccccc;");
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *\n"
-               "            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-               "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ==\n"
-               "    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) {\n}");
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-               "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *\n"
-               "            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ==\n"
-               "    bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) {\n}");
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ==\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *\n"
-               "            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-               "        bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb) {\n}");
-}
-
-TEST_F(FormatTest, ConstructorInitializers) {
-  verifyFormat("Constructor() : Initializer(FitsOnTheLine) {}");
-  verifyFormat("Constructor() : Inttializer(FitsOnTheLine) {}",
-               getLLVMStyleWithColumns(45));
-  verifyFormat("Constructor()\n"
-               "    : Inttializer(FitsOnTheLine) {}",
-               getLLVMStyleWithColumns(44));
-  verifyFormat("Constructor()\n"
-               "    : Inttializer(FitsOnTheLine) {}",
-               getLLVMStyleWithColumns(43));
-
-  verifyFormat(
-      "SomeClass::Constructor()\n"
-      "    : aaaaaaaaaaaaa(aaaaaaaaaaaaaa), aaaaaaaaaaaaaaa(aaaaaaaaaaaa) {}");
-
-  verifyFormat(
-      "SomeClass::Constructor()\n"
-      "    : aaaaaaaaaaaaa(aaaaaaaaaaaaaa), aaaaaaaaaaaaa(aaaaaaaaaaaaaa),\n"
-      "      aaaaaaaaaaaaa(aaaaaaaaaaaaaa) {}");
-  verifyFormat(
-      "SomeClass::Constructor()\n"
-      "    : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa),\n"
-      "      aaaaaaaaaaaaaaa(aaaaaaaaaaaa) {}");
-
-  verifyFormat("Constructor()\n"
-               "    : aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaa),\n"
-               "      aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-               "                               aaaaaaaaaaaaaaaaaaaaaaaaaaa),\n"
-               "      aaaaaaaaaaaaaaaaaaaaaaa() {}");
-
-  verifyFormat("Constructor()\n"
-               "    : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}");
-
-  verifyFormat("Constructor(int Parameter = 0)\n"
-               "    : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa),\n"
-               "      aaaaaaaaaaaa(aaaaaaaaaaaaaaaaa) {}");
-
-  // Here a line could be saved by splitting the second initializer onto two
-  // lines, but that is not desireable.
-  verifyFormat("Constructor()\n"
-               "    : aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaa),\n"
-               "      aaaaaaaaaaa(aaaaaaaaaaa),\n"
-               "      aaaaaaaaaaaaaaaaaaaaat(aaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}");
-
-  FormatStyle OnePerLine = getLLVMStyle();
-  OnePerLine.ConstructorInitializerAllOnOneLineOrOnePerLine = true;
-  verifyFormat("SomeClass::Constructor()\n"
-               "    : aaaaaaaaaaaaa(aaaaaaaaaaaaaa),\n"
-               "      aaaaaaaaaaaaa(aaaaaaaaaaaaaa),\n"
-               "      aaaaaaaaaaaaa(aaaaaaaaaaaaaa) {}",
-               OnePerLine);
-  verifyFormat("SomeClass::Constructor()\n"
-               "    : aaaaaaaaaaaaa(aaaaaaaaaaaaaa), // Some comment\n"
-               "      aaaaaaaaaaaaa(aaaaaaaaaaaaaa),\n"
-               "      aaaaaaaaaaaaa(aaaaaaaaaaaaaa) {}",
-               OnePerLine);
-  verifyFormat("MyClass::MyClass(int var)\n"
-               "    : some_var_(var),            // 4 space indent\n"
-               "      some_other_var_(var + 1) { // lined up\n"
-               "}",
-               OnePerLine);
-  verifyFormat("Constructor()\n"
-               "    : aaaaa(aaaaaa),\n"
-               "      aaaaa(aaaaaa),\n"
-               "      aaaaa(aaaaaa),\n"
-               "      aaaaa(aaaaaa),\n"
-               "      aaaaa(aaaaaa) {}",
-               OnePerLine);
-  verifyFormat("Constructor()\n"
-               "    : aaaaa(aaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaa,\n"
-               "            aaaaaaaaaaaaaaaaaaaaaa) {}",
-               OnePerLine);
-}
-
-TEST_F(FormatTest, MemoizationTests) {
-  // This breaks if the memoization lookup does not take \c Indent and
-  // \c LastSpace into account.
-  verifyFormat(
-      "extern CFRunLoopTimerRef\n"
-      "CFRunLoopTimerCreate(CFAllocatorRef allocato, CFAbsoluteTime fireDate,\n"
-      "                     CFTimeInterval interval, CFOptionFlags flags,\n"
-      "                     CFIndex order, CFRunLoopTimerCallBack callout,\n"
-      "                     CFRunLoopTimerContext *context) {}");
-
-  // Deep nesting somewhat works around our memoization.
-  verifyFormat(
-      "aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(\n"
-      "    aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(\n"
-      "        aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(\n"
-      "            aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(aaaaa(\n"
-      "                aaaaa())))))))))))))))))))))))))))))))))))))));",
-      getLLVMStyleWithColumns(65));
-
-  // This test takes VERY long when memoization is broken.
-  FormatStyle OnePerLine = getLLVMStyle();
-  OnePerLine.ConstructorInitializerAllOnOneLineOrOnePerLine = true;
-  OnePerLine.BinPackParameters = false;
-  std::string input = "Constructor()\n"
-                      "    : aaaa(a,\n";
-  for (unsigned i = 0, e = 80; i != e; ++i) {
-    input += "           a,\n";
-  }
-  input += "           a) {}";
-  verifyFormat(input, OnePerLine);
-}
-
-TEST_F(FormatTest, BreaksAsHighAsPossible) {
-  verifyFormat(
-      "void f() {\n"
-      "  if ((aaaaaaaaaaaaaaaaaaaaaaaaaaaaa && aaaaaaaaaaaaaaaaaaaaaaaaaa) ||\n"
-      "      (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb && bbbbbbbbbbbbbbbbbbbbbbbbbb))\n"
-      "    f();\n"
-      "}");
-  verifyFormat("if (Intervals[i].getRange().getFirst() <\n"
-               "    Intervals[i - 1].getRange().getLast()) {\n}");
-}
-
-TEST_F(FormatTest, BreaksFunctionDeclarations) {
-  // Principially, we break function declarations in a certain order:
-  // 1) break amongst arguments.
-  verifyFormat("Aaaaaaaaaaaaaa bbbbbbbbbbbbbb(Cccccccccccccc cccccccccccccc,\n"
-               "                              Cccccccccccccc cccccccccccccc);");
-
-  // 2) break after return type.
-  verifyFormat(
-      "Aaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "    bbbbbbbbbbbbbb(Cccccccccccccc cccccccccccccccccccccccccc);");
-
-  // 3) break after (.
-  verifyFormat(
-      "Aaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb(\n"
-      "    Cccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccc);");
-
-  // 4) break before after nested name specifiers.
-  verifyFormat(
-      "Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "    SomeClasssssssssssssssssssssssssssssssssssssss::\n"
-      "        bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb(Cccccccccccccc cccccccccc);");
-
-  // However, there are exceptions, if a sufficient amount of lines can be
-  // saved.
-  // FIXME: The precise cut-offs wrt. the number of saved lines might need some
-  // more adjusting.
-  verifyFormat("Aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb(Cccccccccccccc cccccccccc,\n"
-               "                                  Cccccccccccccc cccccccccc,\n"
-               "                                  Cccccccccccccc cccccccccc,\n"
-               "                                  Cccccccccccccc cccccccccc,\n"
-               "                                  Cccccccccccccc cccccccccc);");
-  verifyFormat(
-      "Aaaaaaaaaaaaaaaaaa\n"
-      "    bbbbbbbbbbb(Cccccccccccccc cccccccccc, Cccccccccccccc cccccccccc,\n"
-      "                Cccccccccccccc cccccccccc, Cccccccccccccc cccccccccc,\n"
-      "                Cccccccccccccc cccccccccc, Cccccccccccccc cccccccccc);");
-  verifyFormat(
-      "Aaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb(Cccccccccccccc cccccccccc,\n"
-      "                                          Cccccccccccccc cccccccccc,\n"
-      "                                          Cccccccccccccc cccccccccc,\n"
-      "                                          Cccccccccccccc cccccccccc,\n"
-      "                                          Cccccccccccccc cccccccccc,\n"
-      "                                          Cccccccccccccc cccccccccc,\n"
-      "                                          Cccccccccccccc cccccccccc);");
-  verifyFormat("Aaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb(\n"
-               "    Cccccccccccccc cccccccccc, Cccccccccccccc cccccccccc,\n"
-               "    Cccccccccccccc cccccccccc, Cccccccccccccc cccccccccc,\n"
-               "    Cccccccccccccc cccccccccc, Cccccccccccccc cccccccccc,\n"
-               "    Cccccccccccccc cccccccccc, Cccccccccccccc cccccccccc);");
-
-  // Break after multi-line parameters.
-  verifyFormat("void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-               "    bbbb bbbb);");
-}
-
-TEST_F(FormatTest, BreaksDesireably) {
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n"
-               "    aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa) ||\n"
-               "    aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa)) {\n}");
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)) {\n"
-               "}");
-
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "                      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}");
-
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa));");
-
-  verifyFormat(
-      "aaaaaaaa(aaaaaaaaaaaaa, aaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "                            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)),\n"
-      "         aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)));");
-
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
-               "    (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-
-  verifyFormat(
-      "void f() {\n"
-      "  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&\n"
-      "                                 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);\n"
-      "}");
-  verifyFormat(
-      "aaaaaa(new Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaa));");
-  verifyFormat(
-      "aaaaaa(aaa, new Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "                aaaaaaaaaaaaaaaaaaaaaaaaaaaaa));");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-
-  // This test case breaks on an incorrect memoization, i.e. an optimization not
-  // taking into account the StopAt value.
-  verifyFormat(
-      "return aaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaa ||\n"
-      "       aaaaaaaaaaa(aaaaaaaaa) || aaaaaaaaaaaaaaaaaaaaaaa ||\n"
-      "       aaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaa ||\n"
-      "       (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-
-  verifyFormat("{\n  {\n    {\n"
-               "      Annotation.SpaceRequiredBefore =\n"
-               "          Line.Tokens[i - 1].Tok.isNot(tok::l_paren) &&\n"
-               "          Line.Tokens[i - 1].Tok.isNot(tok::l_square);\n"
-               "    }\n  }\n}");
-}
-
-TEST_F(FormatTest, FormatsOneParameterPerLineIfNecessary) {
-  FormatStyle NoBinPacking = getGoogleStyle();
-  NoBinPacking.BinPackParameters = false;
-  verifyFormat("f(aaaaaaaaaaaaaaaaaaaa,\n"
-               "  aaaaaaaaaaaaaaaaaaaa,\n"
-               "  aaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaa);",
-               NoBinPacking);
-  verifyFormat("aaaaaaa(aaaaaaaaaaaaa,\n"
-               "        aaaaaaaaaaaaa,\n"
-               "        aaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa));",
-               NoBinPacking);
-  verifyFormat(
-      "aaaaaaaa(aaaaaaaaaaaaa,\n"
-      "         aaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)),\n"
-      "         aaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)));",
-      NoBinPacking);
-  verifyFormat("aaaaaaaaaaaaaaa(aaaaaaaaa, aaaaaaaaa, aaaaaaaaaaaaaaaaaaaaa)\n"
-               "    .aaaaaaaaaaaaaaaaaa();",
-               NoBinPacking);
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "    aaaaaaaaaa, aaaaaaaaaa, aaaaaaaaaa, aaaaaaaaaaa);",
-               NoBinPacking);
-
-  verifyFormat(
-      "aaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "             aaaaaaaaaaaa,\n"
-      "             aaaaaaaaaaaa);",
-      NoBinPacking);
-  verifyFormat(
-      "somefunction(someotherFunction(ddddddddddddddddddddddddddddddddddd,\n"
-      "                               ddddddddddddddddddddddddddddd),\n"
-      "             test);",
-      NoBinPacking);
-
-  verifyFormat("std::vector<aaaaaaaaaaaaaaaaaaaaaaa,\n"
-               "            aaaaaaaaaaaaaaaaaaaaaaa,\n"
-               "            aaaaaaaaaaaaaaaaaaaaaaa> aaaaaaaaaaaaaaaaaa;",
-               NoBinPacking);
-  verifyFormat("a(\"a\"\n"
-               "  \"a\",\n"
-               "  a);");
-
-  NoBinPacking.AllowAllParametersOfDeclarationOnNextLine = false;
-  verifyFormat("void aaaaaaaaaa(aaaaaaaaa,\n"
-               "                aaaaaaaaa,\n"
-               "                aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);",
-               NoBinPacking);
-  verifyFormat(
-      "void f() {\n"
-      "  aaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaa, aaaaaaaaa, aaaaaaaaaaaaaaaaaaaaa)\n"
-      "      .aaaaaaa();\n"
-      "}",
-      NoBinPacking);
-}
-
-TEST_F(FormatTest, FormatsBuilderPattern) {
-  verifyFormat(
-      "return llvm::StringSwitch<Reference::Kind>(name)\n"
-      "    .StartsWith(\".eh_frame_hdr\", ORDER_EH_FRAMEHDR)\n"
-      "    .StartsWith(\".eh_frame\", ORDER_EH_FRAME).StartsWith(\".init\", ORDER_INIT)\n"
-      "    .StartsWith(\".fini\", ORDER_FINI).StartsWith(\".hash\", ORDER_HASH)\n"
-      "    .Default(ORDER_TEXT);\n");
-      
-  verifyFormat("return aaaaaaaaaaaaaaaaa->aaaaa().aaaaaaaaaaaaa().aaaaaa() <\n"
-               "       aaaaaaaaaaaaaaa->aaaaa().aaaaaaaaaaaaa().aaaaaa();");
-  verifyFormat(
-      "aaaaaaa->aaaaaaa\n"
-      "    ->aaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
-      "    ->aaaaaaaa(aaaaaaaaaaaaaaa);");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaa()->aaaaaa(bbbbb)->aaaaaaaaaaaaaaaaaaa( // break\n"
-      "    aaaaaaaaaaaaaa);");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaa *aaaaaaaaa = aaaaaa->aaaaaaaaaaaa()\n"
-      "    ->aaaaaaaaaaaaaaaa(\n"
-      "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
-      "    ->aaaaaaaaaaaaaaaaa();");
-}
-
-TEST_F(FormatTest, DoesNotBreakTrailingAnnotation) {
-  verifyFormat("void aaaaaaaaaaaa(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
-               "    LOCKS_EXCLUDED(aaaaaaaaaaaaa);");
-  verifyFormat("void aaaaaaaaaaaa(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) const\n"
-               "    LOCKS_EXCLUDED(aaaaaaaaaaaaa);");
-  verifyFormat("void aaaaaaaaaaaa(int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) const\n"
-               "    LOCKS_EXCLUDED(aaaaaaaaaaaaa) {}");
-  verifyFormat(
-      "void aaaaaaaaaaaaaaaaaa()\n"
-      "    __attribute__((aaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "                   aaaaaaaaaaaaaaaaaaaaaaaaa));");
-  verifyFormat("bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "    __attribute__((unused));");
-  verifyFormat(
-      "bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "    GUARDED_BY(aaaaaaaaaaaa);");
-}
-
-TEST_F(FormatTest, BreaksAccordingToOperatorPrecedence) {
-  verifyFormat(
-      "if (aaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
-      "    bbbbbbbbbbbbbbbbbbbbbbbbb && ccccccccccccccccccccccccc) {\n}");
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaaaaaaaa && bbbbbbbbbbbbbbbbbbbbbbbbb ||\n"
-               "    ccccccccccccccccccccccccc) {\n}");
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaaaaaaaa || bbbbbbbbbbbbbbbbbbbbbbbbb ||\n"
-               "    ccccccccccccccccccccccccc) {\n}");
-  verifyFormat(
-      "if ((aaaaaaaaaaaaaaaaaaaaaaaaa || bbbbbbbbbbbbbbbbbbbbbbbbb) &&\n"
-      "    ccccccccccccccccccccccccc) {\n}");
-  verifyFormat("return aaaa & AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ||\n"
-               "       bbbb & BBBBBBBBBBBBBBBBBBBBBBBBBBBBB ||\n"
-               "       cccc & CCCCCCCCCCCCCCCCCCCCCCCCCC ||\n"
-               "       dddd & DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD;");
-  verifyFormat("if ((aaaaaaaaaa != aaaaaaaaaaaaaaa ||\n"
-               "     aaaaaaaaaaaaaaaaaaaaaaaa() >= aaaaaaaaaaaaaaaaaaaa) &&\n"
-               "    aaaaaaaaaaaaaaa != aa) {\n}");
-}
-
-TEST_F(FormatTest, BreaksAfterAssignments) {
-  verifyFormat(
-      "unsigned Cost =\n"
-      "    TTI.getMemoryOpCost(I->getOpcode(), VectorTy, SI->getAlignment(),\n"
-      "                        SI->getPointerAddressSpaceee());\n");
-  verifyFormat(
-      "CharSourceRange LineRange = CharSourceRange::getTokenRange(\n"
-      "    Line.Tokens.front().Tok.getLo(), Line.Tokens.back().Tok.getLoc());");
-
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaa aaaa = aaaaaaaaaaaaaa(0).aaaa()\n"
-      "    .aaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaa::aaaaaaaaaaaaaaaaaaaaa);");
-}
-
-TEST_F(FormatTest, AlignsAfterAssignments) {
-  verifyFormat(
-      "int Result = aaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-      "             aaaaaaaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "Result += aaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-      "          aaaaaaaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "Result >>= aaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-      "           aaaaaaaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "int Result = (aaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-      "              aaaaaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat("double LooooooooooooooooooooooooongResult =\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaa +\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaa;");
-}
-
-TEST_F(FormatTest, AlignsAfterReturn) {
-  verifyFormat(
-      "return aaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-      "       aaaaaaaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "return (aaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaa +\n"
-      "        aaaaaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat(
-      "return aaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >=\n"
-      "       aaaaaaaaaaaaaaaaaaaaaa();");
-  verifyFormat(
-      "return (aaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >=\n"
-      "        aaaaaaaaaaaaaaaaaaaaaa());");
-  verifyFormat("return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat("return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "           aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) &&\n"
-               "       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;");
-}
-
-TEST_F(FormatTest, BreaksConditionalExpressions) {
-  verifyFormat(
-      "aaaa(aaaaaaaaaaaaaaaaaaaa,\n"
-      "     aaaaaaaaaaaaaaaaaaaaaaaaaa ? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "                                : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat(
-      "aaaa(aaaaaaaaaaaaaaaaaaaa, aaaaaaa ? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "                                   : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaa ? aaaa(aaaaaa)\n"
-      "                                                    : aaaaaaaaaaaaa);");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "                   aaaaaaaaaaaaaaaa ? aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "                                    : aaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "                   aaaaaaaaaaaaa);");
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "    ? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
-               "    : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat("aaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-               "       aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "           ? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "                 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
-               "           : aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "                 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa),\n"
-               "       aaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "    ? aaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "    : aaaaaaaaaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaa =\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "        ? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "        : aaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "    ? aaaaaaaaaaaaaaa\n"
-      "    : aaaaaaaaaaaaaaa;");
-  verifyFormat("f(aaaaaaaaaaaaaaaa == // force break\n"
-               "          aaaaaaaaa\n"
-               "      ? b\n"
-               "      : c);");
-  verifyFormat(
-      "unsigned Indent =\n"
-      "    format(TheLine.First, IndentForLevel[TheLine.Level] >= 0\n"
-      "                              ? IndentForLevel[TheLine.Level]\n"
-      "                              : TheLine * 2,\n"
-      "           TheLine.InPPDirective, PreviousEndOfLineColumn);",
-      getLLVMStyleWithColumns(70));
-
-  FormatStyle NoBinPacking = getLLVMStyle();
-  NoBinPacking.BinPackParameters = false;
-  verifyFormat(
-      "void f() {\n"
-      "  g(aaa,\n"
-      "    aaaaaaaaaa == aaaaaaaaaa ? aaaa : aaaaa,\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "        ? aaaaaaaaaaaaaaa\n"
-      "        : aaaaaaaaaaaaaaa);\n"
-      "}",
-      NoBinPacking);
-}
-
-TEST_F(FormatTest, DeclarationsOfMultipleVariables) {
-  verifyFormat("bool aaaaaaaaaaaaaaaaa = aaaaaa->aaaaaaaaaaaaaaaaa(),\n"
-               "     aaaaaaaaaaa = aaaaaa->aaaaaaaaaaa();");
-  verifyFormat("bool a = true, b = false;");
-
-  verifyFormat("bool aaaaaaaaaaaaaaaaaaaaaaaaa =\n"
-               "         aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaa),\n"
-               "     bbbbbbbbbbbbbbbbbbbbbbbbb =\n"
-               "         bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb(bbbbbbbbbbbbbbbb);");
-  verifyFormat(
-      "bool aaaaaaaaaaaaaaaaaaaaa =\n"
-      "         bbbbbbbbbbbbbbbbbbbbbbbbbbbb && cccccccccccccccccccccccccccc,\n"
-      "     d = e && f;");
-  verifyFormat("aaaaaaaaa a = aaaaaaaaaaaaaaaaaaaa, b = bbbbbbbbbbbbbbbbbbbb,\n"
-               "          c = cccccccccccccccccccc, d = dddddddddddddddddddd;");
-  verifyFormat("aaaaaaaaa *a = aaaaaaaaaaaaaaaaaaa, *b = bbbbbbbbbbbbbbbbbbb,\n"
-               "          *c = ccccccccccccccccccc, *d = ddddddddddddddddddd;");
-  verifyFormat("aaaaaaaaa ***a = aaaaaaaaaaaaaaaaaaa, ***b = bbbbbbbbbbbbbbb,\n"
-               "          ***c = ccccccccccccccccccc, ***d = ddddddddddddddd;");
-  // FIXME: If multiple variables are defined, the "*" needs to move to the new
-  // line. Also fix indent for breaking after the type, this looks bad.
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaa = aaaaaaaaaaaaaaaaaaa,\n"
-               "   *b = bbbbbbbbbbbbbbbbbbb;");
-
-  // Not ideal, but pointer-with-type does not allow much here.
-  verifyGoogleFormat(
-      "aaaaaaaaa* a = aaaaaaaaaaaaaaaaaaa, *b = bbbbbbbbbbbbbbbbbbb,\n"
-      "           *b = bbbbbbbbbbbbbbbbbbb, *d = ddddddddddddddddddd;");
-}
-
-TEST_F(FormatTest, ConditionalExpressionsInBrackets) {
-  verifyFormat("arr[foo ? bar : baz];");
-  verifyFormat("f()[foo ? bar : baz];");
-  verifyFormat("(a + b)[foo ? bar : baz];");
-  verifyFormat("arr[foo ? (4 > 5 ? 4 : 5) : 5 < 5 ? 5 : 7];");
-}
-
-TEST_F(FormatTest, AlignsStringLiterals) {
-  verifyFormat("loooooooooooooooooooooooooongFunction(\"short literal \"\n"
-               "                                      \"short literal\");");
-  verifyFormat(
-      "looooooooooooooooooooooooongFunction(\n"
-      "    \"short literal\"\n"
-      "    \"looooooooooooooooooooooooooooooooooooooooooooooooong literal\");");
-  verifyFormat("someFunction(\"Always break between multi-line\"\n"
-               "             \" string literals\",\n"
-               "             and, other, parameters);");
-  EXPECT_EQ("fun + \"1243\" /* comment */\n"
-            "      \"5678\";",
-            format("fun + \"1243\" /* comment */\n"
-                   "      \"5678\";",
-                   getLLVMStyleWithColumns(28)));
-  EXPECT_EQ(
-      "aaaaaa = \"aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa \"\n"
-      "         \"aaaaaaaaaaaaaaaaaaaaa\"\n"
-      "         \"aaaaaaaaaaaaaaaa\";",
-      format("aaaaaa ="
-             "\"aaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaa "
-             "aaaaaaaaaaaaaaaaaaaaa\" "
-             "\"aaaaaaaaaaaaaaaa\";"));
-  verifyFormat("a = a + \"a\"\n"
-               "        \"a\"\n"
-               "        \"a\";");
-
-  verifyFormat(
-      "#define LL_FORMAT \"ll\"\n"
-      "printf(\"aaaaa: %d, bbbbbb: %\" LL_FORMAT \"d, cccccccc: %\" LL_FORMAT\n"
-      "       \"d, ddddddddd: %\" LL_FORMAT \"d\");");
-}
-
-TEST_F(FormatTest, AlignsPipes) {
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "    << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "    << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaa\n"
-      "                     << aaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "                                 << aaaaaaaaaaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "llvm::outs() << \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n"
-      "                \"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"\n"
-      "             << \"ccccccccccccccccccccccccccccccccccccccccccccccccc\";");
-  verifyFormat(
-      "aaaaaaaa << (aaaaaaaaaaaaaaaaaaa << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "                                 << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
-      "         << aaaaaaaaaaaaaaaaaaaaaaaaaaaaa;");
-
-  verifyFormat("return out << \"somepacket = {\\n\"\n"
-               "           << \"  aaaaaa = \" << pkt.aaaaaa << \"\\n\"\n"
-               "           << \"  bbbb = \" << pkt.bbbb << \"\\n\"\n"
-               "           << \"  cccccc = \" << pkt.cccccc << \"\\n\"\n"
-               "           << \"  ddd = [\" << pkt.ddd << \"]\\n\"\n"
-               "           << \"}\";");
-
-  verifyFormat(
-      "llvm::outs() << \"aaaaaaaaaaaaaaaaa = \" << aaaaaaaaaaaaaaaaa\n"
-      "             << \"bbbbbbbbbbbbbbbbb = \" << bbbbbbbbbbbbbbbbb\n"
-      "             << \"ccccccccccccccccc = \" << ccccccccccccccccc\n"
-      "             << \"ddddddddddddddddd = \" << ddddddddddddddddd\n"
-      "             << \"eeeeeeeeeeeeeeeee = \" << eeeeeeeeeeeeeeeee;");
-  verifyFormat("llvm::outs() << aaaaaaaaaaaaaaaaaaaaaaaa << \"=\"\n"
-               "             << bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;");
-
-  verifyFormat(
-      "llvm::errs() << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-      "                    .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();");
-}
-
-TEST_F(FormatTest, UnderstandsEquals) {
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaa =\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;");
-  verifyFormat(
-      "if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n"
-      "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {\n}");
-  verifyFormat(
-      "if (a) {\n"
-      "  f();\n"
-      "} else if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n"
-      "               aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {\n"
-      "}");
-
-  verifyFormat("if (int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =\n"
-               "        100000000 + 10000000) {\n}");
-}
-
-TEST_F(FormatTest, WrapsAtFunctionCallsIfNecessary) {
-  verifyFormat("LoooooooooooooooooooooooooooooooooooooongObject\n"
-               "    .looooooooooooooooooooooooooooooooooooooongFunction();");
-
-  verifyFormat("LoooooooooooooooooooooooooooooooooooooongObject\n"
-               "    ->looooooooooooooooooooooooooooooooooooooongFunction();");
-
-  verifyFormat(
-      "LooooooooooooooooooooooooooooooooongObject->shortFunction(Parameter1,\n"
-      "                                                          Parameter2);");
-
-  verifyFormat(
-      "ShortObject->shortFunction(\n"
-      "    LooooooooooooooooooooooooooooooooooooooooooooooongParameter1,\n"
-      "    LooooooooooooooooooooooooooooooooooooooooooooooongParameter2);");
-
-  verifyFormat("loooooooooooooongFunction(\n"
-               "    LoooooooooooooongObject->looooooooooooooooongFunction());");
-
-  verifyFormat(
-      "function(LoooooooooooooooooooooooooooooooooooongObject\n"
-      "             ->loooooooooooooooooooooooooooooooooooooooongFunction());");
-
-  verifyFormat("EXPECT_CALL(SomeObject, SomeFunction(Parameter))\n"
-               "    .WillRepeatedly(Return(SomeValue));");
-  verifyFormat("SomeMap[std::pair(aaaaaaaaaaaa, bbbbbbbbbbbbbbb)]\n"
-               "    .insert(ccccccccccccccccccccccc);");
-  verifyFormat(
-      "aaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
-      "    .aaaaaaaaaaaaaaa(\n"
-      "        aa(aaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "           aaaaaaaaaaaaaaaaaaaaaaaaaaa));");
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "        .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "        .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "        .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()) {\n"
-               "}");
-
-  // Here, it is not necessary to wrap at "." or "->".
-  verifyFormat("if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaa) ||\n"
-               "    aaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {\n}");
-  verifyFormat(
-      "aaaaaaaaaaa->aaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "    aaaaaaaaaaaaaaaaaa->aaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaaaa));\n");
-
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa().aaaaaaaaaaaaaaaaa());");
-  verifyFormat("a->aaaaaa()->aaaaaaaaaaa(aaaaaaaa()->aaaaaa()->aaaaa() *\n"
-               "                         aaaaaaaaa()->aaaaaa()->aaaaa());");
-  verifyFormat("a->aaaaaa()->aaaaaaaaaaa(aaaaaaaa()->aaaaaa()->aaaaa() ||\n"
-               "                         aaaaaaaaa()->aaaaaa()->aaaaa());");
-
-  // FIXME: Should we break before .a()?
-  verifyFormat("aaaaa(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-               "      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa).a();");
-
-  FormatStyle NoBinPacking = getLLVMStyle();
-  NoBinPacking.BinPackParameters = false;
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaa)\n"
-               "    .aaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaa)\n"
-               "    .aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaa,\n"
-               "                         aaaaaaaaaaaaaaaaaaa,\n"
-               "                         aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);",
-               NoBinPacking);
-}
-
-TEST_F(FormatTest, WrapsTemplateDeclarations) {
-  verifyFormat("template <typename T>\n"
-               "virtual void loooooooooooongFunction(int Param1, int Param2);");
-  verifyFormat(
-      "template <typename T>\n"
-      "using comment_to_xml_conversion = comment_to_xml_conversion<T, int>;");
-  verifyFormat("template <typename T>\n"
-               "void f(int Paaaaaaaaaaaaaaaaaaaaaaaaaaaaaaram1,\n"
-               "       int Paaaaaaaaaaaaaaaaaaaaaaaaaaaaaaram2);");
-  verifyFormat(
-      "template <typename T>\n"
-      "void looooooooooooooooooooongFunction(int Paaaaaaaaaaaaaaaaaaaaram1,\n"
-      "                                      int Paaaaaaaaaaaaaaaaaaaaram2);");
-  verifyFormat(
-      "template <typename T>\n"
-      "aaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaa,\n"
-      "                    aaaaaaaaaaaaaaaaaaaaaaaaaa<T>::aaaaaaaaaa,\n"
-      "                    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat("template <typename T>\n"
-               "void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-               "    int aaaaaaaaaaaaaaaaaaaaaa);");
-  verifyFormat(
-      "template <typename T1, typename T2 = char, typename T3 = char,\n"
-      "          typename T4 = char>\n"
-      "void f();");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaa<aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaa>(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-
-  verifyFormat("a<aaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaa>(\n"
-               "    a(aaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa));");
-}
-
-TEST_F(FormatTest, WrapsAtNestedNameSpecifiers) {
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa());");
-
-  // FIXME: Should we have an extra indent after the second break?
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();");
-
-  // FIXME: Look into whether we should indent 4 from the start or 4 from
-  // "bbbbb..." here instead of what we are doing now.
-  verifyFormat(
-      "aaaaaaaaaaaaaaa(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb::\n"
-      "                    cccccccccccccccccccccccccccccccccccccccccccccc());");
-
-  // Breaking at nested name specifiers is generally not desirable.
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaa);");
-
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaa(aaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::\n"
-      "                                 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-      "                   aaaaaaaaaaaaaaaaaaaaa);",
-      getLLVMStyleWithColumns(74));
-
-  verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::\n"
-               "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
-               "        .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();");
-}
-
-TEST_F(FormatTest, UnderstandsTemplateParameters) {
-  verifyFormat("A<int> a;");
-  verifyFormat("A<A<A<int> > > a;");
-  verifyFormat("A<A<A<int, 2>, 3>, 4> a;");
-  verifyFormat("bool x = a < 1 || 2 > a;");
-  verifyFormat("bool x = 5 < f<int>();");
-  verifyFormat("bool x = f<int>() > 5;");
-  verifyFormat("bool x = 5 < a<int>::x;");
-  verifyFormat("bool x = a < 4 ? a > 2 : false;");
-  verifyFormat("bool x = f() ? a < 2 : a > 2;");
-
-  verifyGoogleFormat("A<A<int>> a;");
-  verifyGoogleFormat("A<A<A<int>>> a;");
-  verifyGoogleFormat("A<A<A<A<int>>>> a;");
-  verifyGoogleFormat("A<A<int> > a;");
-  verifyGoogleFormat("A<A<A<int> > > a;");
-  verifyGoogleFormat("A<A<A<A<int> > > > a;");
-  EXPECT_EQ("A<A<A<A>>> a;", format("A<A<A<A> >> a;", getGoogleStyle()));
-  EXPECT_EQ("A<A<A<A>>> a;", format("A<A<A<A>> > a;", getGoogleStyle()));
-
-  verifyFormat("test >> a >> b;");
-  verifyFormat("test << a >> b;");
-
-  verifyFormat("f<int>();");
-  verifyFormat("template <typename T> void f() {}");
-}
-
-TEST_F(FormatTest, UnderstandsBinaryOperators) {
-  verifyFormat("COMPARE(a, ==, b);");
-}
-
-TEST_F(FormatTest, UnderstandsPointersToMembers) {
-  verifyFormat("int A::*x;");
-  // FIXME: Recognize pointers to member functions.
-  //verifyFormat("int (S::*func)(void *);");
-  verifyFormat("int(S::*func)(void *);");
-  verifyFormat("(a->*f)();");
-  verifyFormat("a->*x;");
-  verifyFormat("(a.*f)();");
-  verifyFormat("((*a).*f)();");
-  verifyFormat("a.*x;");
-}
-
-TEST_F(FormatTest, UnderstandsUnaryOperators) {
-  verifyFormat("int a = -2;");
-  verifyFormat("f(-1, -2, -3);");
-  verifyFormat("a[-1] = 5;");
-  verifyFormat("int a = 5 + -2;");
-  verifyFormat("if (i == -1) {\n}");
-  verifyFormat("if (i != -1) {\n}");
-  verifyFormat("if (i > -1) {\n}");
-  verifyFormat("if (i < -1) {\n}");
-  verifyFormat("++(a->f());");
-  verifyFormat("--(a->f());");
-  verifyFormat("(a->f())++;");
-  verifyFormat("a[42]++;");
-  verifyFormat("if (!(a->f())) {\n}");
-
-  verifyFormat("a-- > b;");
-  verifyFormat("b ? -a : c;");
-  verifyFormat("n * sizeof char16;");
-  verifyFormat("n * alignof char16;");
-  verifyFormat("sizeof(char);");
-  verifyFormat("alignof(char);");
-
-  verifyFormat("return -1;");
-  verifyFormat("switch (a) {\n"
-               "case -1:\n"
-               "  break;\n"
-               "}");
-  verifyFormat("#define X -1");
-  verifyFormat("#define X -kConstant");
-
-  verifyFormat("const NSPoint kBrowserFrameViewPatternOffset = { -5, +3 };");
-  verifyFormat("const NSPoint kBrowserFrameViewPatternOffset = { +5, -3 };");
-
-  verifyFormat("int a = /* confusing comment */ -1;");
-  // FIXME: The space after 'i' is wrong, but hopefully, this is a rare case.
-  verifyFormat("int a = i /* confusing comment */++;");
-}
-
-TEST_F(FormatTest, UndestandsOverloadedOperators) {
-  verifyFormat("bool operator<();");
-  verifyFormat("bool operator>();");
-  verifyFormat("bool operator=();");
-  verifyFormat("bool operator==();");
-  verifyFormat("bool operator!=();");
-  verifyFormat("int operator+();");
-  verifyFormat("int operator++();");
-  verifyFormat("bool operator();");
-  verifyFormat("bool operator()();");
-  verifyFormat("bool operator[]();");
-  verifyFormat("operator bool();");
-  verifyFormat("operator int();");
-  verifyFormat("operator void *();");
-  verifyFormat("operator SomeType<int>();");
-  verifyFormat("operator SomeType<int, int>();");
-  verifyFormat("operator SomeType<SomeType<int> >();");
-  verifyFormat("void *operator new(std::size_t size);");
-  verifyFormat("void *operator new[](std::size_t size);");
-  verifyFormat("void operator delete(void *ptr);");
-  verifyFormat("void operator delete[](void *ptr);");
-
-  verifyFormat(
-      "ostream &operator<<(ostream &OutputStream,\n"
-      "                    SomeReallyLongType WithSomeReallyLongValue);");
-  verifyFormat("bool operator<(const aaaaaaaaaaaaaaaaaaaaa &left,\n"
-               "               const aaaaaaaaaaaaaaaaaaaaa &right) {\n"
-               "  return left.group < right.group;\n"
-               "}");
-  verifyFormat("SomeType &operator=(const SomeType &S);");
-
-  verifyGoogleFormat("operator void*();");
-  verifyGoogleFormat("operator SomeType<SomeType<int>>();");
-}
-
-TEST_F(FormatTest, UnderstandsNewAndDelete) {
-  verifyFormat("void f() {\n"
-               "  A *a = new A;\n"
-               "  A *a = new (placement) A;\n"
-               "  delete a;\n"
-               "  delete (A *)a;\n"
-               "}");
-}
-
-TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
-  verifyFormat("int *f(int *a) {}");
-  verifyFormat("int main(int argc, char **argv) {}");
-  verifyFormat("Test::Test(int b) : a(b * b) {}");
-  verifyIndependentOfContext("f(a, *a);");
-  verifyFormat("void g() { f(*a); }");
-  verifyIndependentOfContext("int a = b * 10;");
-  verifyIndependentOfContext("int a = 10 * b;");
-  verifyIndependentOfContext("int a = b * c;");
-  verifyIndependentOfContext("int a += b * c;");
-  verifyIndependentOfContext("int a -= b * c;");
-  verifyIndependentOfContext("int a *= b * c;");
-  verifyIndependentOfContext("int a /= b * c;");
-  verifyIndependentOfContext("int a = *b;");
-  verifyIndependentOfContext("int a = *b * c;");
-  verifyIndependentOfContext("int a = b * *c;");
-  verifyIndependentOfContext("return 10 * b;");
-  verifyIndependentOfContext("return *b * *c;");
-  verifyIndependentOfContext("return a & ~b;");
-  verifyIndependentOfContext("f(b ? *c : *d);");
-  verifyIndependentOfContext("int a = b ? *c : *d;");
-  verifyIndependentOfContext("*b = a;");
-  verifyIndependentOfContext("a * ~b;");
-  verifyIndependentOfContext("a * !b;");
-  verifyIndependentOfContext("a * +b;");
-  verifyIndependentOfContext("a * -b;");
-  verifyIndependentOfContext("a * ++b;");
-  verifyIndependentOfContext("a * --b;");
-  verifyIndependentOfContext("a[4] * b;");
-  verifyIndependentOfContext("a[a * a] = 1;");
-  verifyIndependentOfContext("f() * b;");
-  verifyIndependentOfContext("a * [self dostuff];");
-  verifyIndependentOfContext("int x = a * (a + b);");
-  verifyIndependentOfContext("(a *)(a + b);");
-  verifyIndependentOfContext("int *pa = (int *)&a;");
-  verifyIndependentOfContext("return sizeof(int **);");
-  verifyIndependentOfContext("return sizeof(int ******);");
-  verifyIndependentOfContext("return (int **&)a;");
-  verifyFormat("void f(Type (*parameter)[10]) {}");
-  verifyGoogleFormat("return sizeof(int**);");
-  verifyIndependentOfContext("Type **A = static_cast<Type **>(P);");
-  verifyGoogleFormat("Type** A = static_cast<Type**>(P);");
-  // FIXME: The newline is wrong.
-  verifyFormat("auto a = [](int **&, int ***) {}\n;");
-
-  verifyIndependentOfContext("InvalidRegions[*R] = 0;");
-
-  verifyIndependentOfContext("A<int *> a;");
-  verifyIndependentOfContext("A<int **> a;");
-  verifyIndependentOfContext("A<int *, int *> a;");
-  verifyIndependentOfContext(
-      "const char *const p = reinterpret_cast<const char *const>(q);");
-  verifyIndependentOfContext("A<int **, int **> a;");
-  verifyIndependentOfContext("void f(int *a = d * e, int *b = c * d);");
-  verifyFormat("for (char **a = b; *a; ++a) {\n}");
-  verifyFormat("for (; a && b;) {\n}");
-
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaa, *aaaaaaaaaaaaaaaaaaaaaaaaaaaaa);");
-
-  verifyGoogleFormat("int main(int argc, char** argv) {}");
-  verifyGoogleFormat("A<int*> a;");
-  verifyGoogleFormat("A<int**> a;");
-  verifyGoogleFormat("A<int*, int*> a;");
-  verifyGoogleFormat("A<int**, int**> a;");
-  verifyGoogleFormat("f(b ? *c : *d);");
-  verifyGoogleFormat("int a = b ? *c : *d;");
-  verifyGoogleFormat("Type* t = **x;");
-  verifyGoogleFormat("Type* t = *++*x;");
-  verifyGoogleFormat("*++*x;");
-  verifyGoogleFormat("Type* t = const_cast<T*>(&*x);");
-  verifyGoogleFormat("Type* t = x++ * y;");
-  verifyGoogleFormat(
-      "const char* const p = reinterpret_cast<const char* const>(q);");
-
-  verifyIndependentOfContext("a = *(x + y);");
-  verifyIndependentOfContext("a = &(x + y);");
-  verifyIndependentOfContext("*(x + y).call();");
-  verifyIndependentOfContext("&(x + y)->call();");
-  verifyFormat("void f() { &(*I).first; }");
-
-  verifyIndependentOfContext("f(b * /* confusing comment */ ++c);");
-  verifyFormat(
-      "int *MyValues = {\n"
-      "  *A, // Operator detection might be confused by the '{'\n"
-      "  *BB // Operator detection might be confused by previous comment\n"
-      "};");
-
-  verifyIndependentOfContext("if (int *a = &b)");
-  verifyIndependentOfContext("if (int &a = *b)");
-  verifyIndependentOfContext("if (a & b[i])");
-  verifyIndependentOfContext("if (a::b::c::d & b[i])");
-  verifyIndependentOfContext("if (*b[i])");
-  verifyIndependentOfContext("if (int *a = (&b))");
-  verifyIndependentOfContext("while (int *a = &b)");
-  verifyFormat("void f() {\n"
-               "  for (const int &v : Values) {\n"
-               "  }\n"
-               "}");
-  verifyFormat("for (int i = a * a; i < 10; ++i) {\n}");
-  verifyFormat("for (int i = 0; i < a * a; ++i) {\n}");
-
-  verifyIndependentOfContext("A = new SomeType *[Length];");
-  verifyIndependentOfContext("A = new SomeType *[Length]();");
-  verifyGoogleFormat("A = new SomeType* [Length]();");
-  verifyGoogleFormat("A = new SomeType* [Length];");
-}
-
-TEST_F(FormatTest, UnderstandsEllipsis) {
-  verifyFormat("int printf(const char *fmt, ...);");
-  verifyFormat("template <class... Ts> void Foo(Ts... ts) { Foo(ts...); }");
-}
-
-TEST_F(FormatTest, AdaptivelyFormatsPointersAndReferences) {
-  EXPECT_EQ("int *a;\n"
-            "int *a;\n"
-            "int *a;",
-            format("int *a;\n"
-                   "int* a;\n"
-                   "int *a;",
-                   getGoogleStyle()));
-  EXPECT_EQ("int* a;\n"
-            "int* a;\n"
-            "int* a;",
-            format("int* a;\n"
-                   "int* a;\n"
-                   "int *a;",
-                   getGoogleStyle()));
-  EXPECT_EQ("int *a;\n"
-            "int *a;\n"
-            "int *a;",
-            format("int *a;\n"
-                   "int * a;\n"
-                   "int *  a;",
-                   getGoogleStyle()));
-}
-
-TEST_F(FormatTest, UnderstandsRvalueReferences) {
-  verifyFormat("int f(int &&a) {}");
-  verifyFormat("int f(int a, char &&b) {}");
-  verifyFormat("void f() { int &&a = b; }");
-  verifyGoogleFormat("int f(int a, char&& b) {}");
-  verifyGoogleFormat("void f() { int&& a = b; }");
-
-  // FIXME: These require somewhat deeper changes in template arguments
-  // formatting.
-  //  verifyIndependentOfContext("A<int &&> a;");
-  //  verifyIndependentOfContext("A<int &&, int &&> a;");
-  //  verifyGoogleFormat("A<int&&> a;");
-  //  verifyGoogleFormat("A<int&&, int&&> a;");
-}
-
-TEST_F(FormatTest, FormatsBinaryOperatorsPrecedingEquals) {
-  verifyFormat("void f() {\n"
-               "  x[aaaaaaaaa -\n"
-               "    b] = 23;\n"
-               "}",
-               getLLVMStyleWithColumns(15));
-}
-
-TEST_F(FormatTest, FormatsCasts) {
-  verifyFormat("Type *A = static_cast<Type *>(P);");
-  verifyFormat("Type *A = (Type *)P;");
-  verifyFormat("Type *A = (vector<Type *, int *>)P;");
-  verifyFormat("int a = (int)(2.0f);");
-
-  // FIXME: These also need to be identified.
-  verifyFormat("int a = (int) 2.0f;");
-  verifyFormat("int a = (int) * b;");
-
-  // These are not casts.
-  verifyFormat("void f(int *) {}");
-  verifyFormat("f(foo)->b;");
-  verifyFormat("f(foo).b;");
-  verifyFormat("f(foo)(b);");
-  verifyFormat("f(foo)[b];");
-  verifyFormat("[](foo) { return 4; }(bar)];");
-  verifyFormat("(*funptr)(foo)[4];");
-  verifyFormat("funptrs[4](foo)[4];");
-  verifyFormat("void f(int *);");
-  verifyFormat("void f(int *) = 0;");
-  verifyFormat("void f(SmallVector<int>) {}");
-  verifyFormat("void f(SmallVector<int>);");
-  verifyFormat("void f(SmallVector<int>) = 0;");
-  verifyFormat("void f(int i = (kValue) * kMask) {}");
-  verifyFormat("void f(int i = (kA * kB) & kMask) {}");
-  verifyFormat("int a = sizeof(int) * b;");
-  verifyFormat("int a = alignof(int) * b;");
-
-  // These are not casts, but at some point were confused with casts.
-  verifyFormat("virtual void foo(int *) override;");
-  verifyFormat("virtual void foo(char &) const;");
-  verifyFormat("virtual void foo(int *a, char *) const;");
-  verifyFormat("int a = sizeof(int *) + b;");
-  verifyFormat("int a = alignof(int *) + b;");
-}
-
-TEST_F(FormatTest, FormatsFunctionTypes) {
-  verifyFormat("A<bool()> a;");
-  verifyFormat("A<SomeType()> a;");
-  verifyFormat("A<void(*)(int, std::string)> a;");
-  verifyFormat("A<void *(int)>;");
-  verifyFormat("void *(*a)(int *, SomeType *);");
-
-  // FIXME: Inconsistent.
-  verifyFormat("int (*func)(void *);");
-  verifyFormat("void f() { int(*func)(void *); }");
-
-  verifyGoogleFormat("A<void*(int*, SomeType*)>;");
-  verifyGoogleFormat("void* (*a)(int);");
-}
-
-TEST_F(FormatTest, BreaksLongDeclarations) {
-  verifyFormat("typedef LoooooooooooooooooooooooooooooooooooooooongType\n"
-               "    AnotherNameForTheLongType;");
-  verifyFormat("LoooooooooooooooooooooooooooooooooooooooongType\n"
-               "    LoooooooooooooooooooooooooooooooooooooooongVariable;");
-  verifyFormat("LoooooooooooooooooooooooooooooooooooooooongReturnType\n"
-               "    LoooooooooooooooooooooooooooooooongFunctionDeclaration();");
-  verifyFormat("LoooooooooooooooooooooooooooooooooooooooongReturnType\n"
-               "LooooooooooooooooooooooooooooooooooongFunctionDefinition() {}");
-
-  // FIXME: Without the comment, this breaks after "(".
-  verifyFormat("LoooooooooooooooooooooooooooooooooooooooongType // break\n"
-               "    (*LoooooooooooooooooooooooooooongFunctionTypeVarialbe)();");
-
-  verifyFormat("int *someFunction(int LoooooooooooooooooooongParam1,\n"
-               "                  int LoooooooooooooooooooongParam2) {}");
-  verifyFormat(
-      "TypeSpecDecl *TypeSpecDecl::Create(ASTContext &C, DeclContext *DC,\n"
-      "                                   SourceLocation L, IdentifierIn *II,\n"
-      "                                   Type *T) {}");
-  verifyFormat("ReallyLongReturnType<TemplateParam1, TemplateParam2>\n"
-               "ReallyReallyLongFunctionName(\n"
-               "    const std::string &SomeParameter,\n"
-               "    const SomeType<string, SomeOtherTemplateParameter> &\n"
-               "        ReallyReallyLongParameterName,\n"
-               "    const SomeType<string, SomeOtherTemplateParameter> &\n"
-               "        AnotherLongParameterName) {}");
-  verifyFormat(
-      "aaaaaaaaaaaaaaaa::aaaaaaaaaaaaaaaa<aaaaaaaaaaaaa, aaaaaaaaaaaa>\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaa;");
-
-  verifyGoogleFormat(
-      "TypeSpecDecl* TypeSpecDecl::Create(ASTContext& C, DeclContext* DC,\n"
-      "                                   SourceLocation L) {}");
-  verifyGoogleFormat(
-      "some_namespace::LongReturnType\n"
-      "long_namespace::SomeVeryLongClass::SomeVeryLongFunction(\n"
-      "    int first_long_parameter, int second_parameter) {}");
-
-  verifyGoogleFormat("template <typename T>\n"
-                     "aaaaaaaa::aaaaa::aaaaaa<T, aaaaaaaaaaaaaaaaaaaaaaaaa>\n"
-                     "aaaaaaaaaaaaaaaaaaaaaaaa<T>::aaaaaaa() {}");
-  verifyGoogleFormat("A<A<A>> aaaaaaaaaa(int aaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
-                     "                   int aaaaaaaaaaaaaaaaaaaaaaa);");
-}
-
-TEST_F(FormatTest, LineStartsWithSpecialCharacter) {
-  verifyFormat("(a)->b();");
-  verifyFormat("--a;");
-}
-
-TEST_F(FormatTest, HandlesIncludeDirectives) {
-  verifyFormat("#include <string>\n"
-               "#include <a/b/c.h>\n"
-               "#include \"a/b/string\"\n"
-               "#include \"string.h\"\n"
-               "#include \"string.h\"\n"
-               "#include <a-a>\n"
-               "#include < path with space >\n"
-               "#include \"abc.h\" // this is included for ABC\n"
-               "#include \"some very long include paaaaaaaaaaaaaaaaaaaaaaath\"",
-               getLLVMStyleWithColumns(35));
-
-  verifyFormat("#import <string>");
-  verifyFormat("#import <a/b/c.h>");
-  verifyFormat("#import \"a/b/string\"");
-  verifyFormat("#import \"string.h\"");
-  verifyFormat("#import \"string.h\"");
-}
-
-//===----------------------------------------------------------------------===//
-// Error recovery tests.
-//===----------------------------------------------------------------------===//
-
-TEST_F(FormatTest, IncompleteParameterLists) {
-  FormatStyle NoBinPacking = getLLVMStyle();
-  NoBinPacking.BinPackParameters = false;
-  verifyFormat("void aaaaaaaaaaaaaaaaaa(int level,\n"
-               "                        double *min_x,\n"
-               "                        double *max_x,\n"
-               "                        double *min_y,\n"
-               "                        double *max_y,\n"
-               "                        double *min_z,\n"
-               "                        double *max_z, ) {}",
-               NoBinPacking);
-}
-
-TEST_F(FormatTest, IncorrectCodeTrailingStuff) {
-  verifyFormat("void f() { return; }\n42");
-  verifyFormat("void f() {\n"
-               "  if (0)\n"
-               "    return;\n"
-               "}\n"
-               "42");
-  verifyFormat("void f() { return }\n42");
-  verifyFormat("void f() {\n"
-               "  if (0)\n"
-               "    return\n"
-               "}\n"
-               "42");
-}
-
-TEST_F(FormatTest, IncorrectCodeMissingSemicolon) {
-  EXPECT_EQ("void f() { return }", format("void  f ( )  {  return  }"));
-  EXPECT_EQ("void f() {\n"
-            "  if (a)\n"
-            "    return\n"
-            "}",
-            format("void  f  (  )  {  if  ( a )  return  }"));
-  EXPECT_EQ("namespace N { void f() }", format("namespace  N  {  void f()  }"));
-  EXPECT_EQ("namespace N {\n"
-            "void f() {}\n"
-            "void g()\n"
-            "}",
-            format("namespace N  { void f( ) { } void g( ) }"));
-}
-
-TEST_F(FormatTest, IndentationWithinColumnLimitNotPossible) {
-  verifyFormat("int aaaaaaaa =\n"
-               "    // Overlylongcomment\n"
-               "    b;",
-               getLLVMStyleWithColumns(20));
-  verifyFormat("function(\n"
-               "    ShortArgument,\n"
-               "    LoooooooooooongArgument);\n",
-               getLLVMStyleWithColumns(20));
-}
-
-TEST_F(FormatTest, IncorrectAccessSpecifier) {
-  verifyFormat("public:");
-  verifyFormat("class A {\n"
-               "public\n"
-               "  void f() {}\n"
-               "};");
-  verifyFormat("public\n"
-               "int qwerty;");
-  verifyFormat("public\n"
-               "B {}");
-  verifyFormat("public\n"
-               "{}");
-  verifyFormat("public\n"
-               "B { int x; }");
-}
-
-TEST_F(FormatTest, IncorrectCodeUnbalancedBraces) {
-  verifyFormat("{");
-  verifyFormat("#})");
-}
-
-TEST_F(FormatTest, IncorrectCodeDoNoWhile) {
-  verifyFormat("do {\n}");
-  verifyFormat("do {\n}\n"
-               "f();");
-  verifyFormat("do {\n}\n"
-               "wheeee(fun);");
-  verifyFormat("do {\n"
-               "  f();\n"
-               "}");
-}
-
-TEST_F(FormatTest, IncorrectCodeMissingParens) {
-  verifyFormat("if {\n  foo;\n  foo();\n}");
-  verifyFormat("switch {\n  foo;\n  foo();\n}");
-  verifyFormat("for {\n  foo;\n  foo();\n}");
-  verifyFormat("while {\n  foo;\n  foo();\n}");
-  verifyFormat("do {\n  foo;\n  foo();\n} while;");
-}
-
-TEST_F(FormatTest, DoesNotTouchUnwrappedLinesWithErrors) {
-  verifyFormat("namespace {\n"
-               "class Foo {  Foo  ( }; }  // comment");
-}
-
-TEST_F(FormatTest, IncorrectCodeErrorDetection) {
-  EXPECT_EQ("{\n{}\n", format("{\n{\n}\n"));
-  EXPECT_EQ("{\n  {}\n", format("{\n  {\n}\n"));
-  EXPECT_EQ("{\n  {}\n", format("{\n  {\n  }\n"));
-  EXPECT_EQ("{\n  {}\n  }\n}\n", format("{\n  {\n    }\n  }\n}\n"));
-
-  EXPECT_EQ("{\n"
-            "    {\n"
-            " breakme(\n"
-            "     qwe);\n"
-            "}\n",
-            format("{\n"
-                   "    {\n"
-                   " breakme(qwe);\n"
-                   "}\n",
-                   getLLVMStyleWithColumns(10)));
-}
-
-TEST_F(FormatTest, LayoutCallsInsideBraceInitializers) {
-  verifyFormat("int x = {\n"
-               "  avariable,\n"
-               "  b(alongervariable)\n"
-               "};",
-               getLLVMStyleWithColumns(25));
-}
-
-TEST_F(FormatTest, LayoutBraceInitializersInReturnStatement) {
-  verifyFormat("return (a)(b) { 1, 2, 3 };");
-}
-
-TEST_F(FormatTest, LayoutTokensFollowingBlockInParentheses) {
-  // FIXME: This is bad, find a better and more generic solution.
-  verifyFormat(
-      "Aaa({\n"
-      "  int i;\n"
-      "},\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,\n"
-      "                                     ccccccccccccccccc));");
-}
-
-TEST_F(FormatTest, PullTrivialFunctionDefinitionsIntoSingleLine) {
-  verifyFormat("void f() { return 42; }");
-  verifyFormat("void f() {\n"
-               "  // Comment\n"
-               "}");
-  verifyFormat("{\n"
-               "#error {\n"
-               "  int a;\n"
-               "}");
-  verifyFormat("{\n"
-               "  int a;\n"
-               "#error {\n"
-               "}");
-
-  verifyFormat("void f() { return 42; }", getLLVMStyleWithColumns(23));
-  verifyFormat("void f() {\n  return 42;\n}", getLLVMStyleWithColumns(22));
-
-  verifyFormat("void f() {}", getLLVMStyleWithColumns(11));
-  verifyFormat("void f() {\n}", getLLVMStyleWithColumns(10));
-}
-
-TEST_F(FormatTest, UnderstandContextOfRecordTypeKeywords) {
-  // Elaborate type variable declarations.
-  verifyFormat("struct foo a = { bar };\nint n;");
-  verifyFormat("class foo a = { bar };\nint n;");
-  verifyFormat("union foo a = { bar };\nint n;");
-
-  // Elaborate types inside function definitions.
-  verifyFormat("struct foo f() {}\nint n;");
-  verifyFormat("class foo f() {}\nint n;");
-  verifyFormat("union foo f() {}\nint n;");
-
-  // Templates.
-  verifyFormat("template <class X> void f() {}\nint n;");
-  verifyFormat("template <struct X> void f() {}\nint n;");
-  verifyFormat("template <union X> void f() {}\nint n;");
-
-  // Actual definitions...
-  verifyFormat("struct {\n} n;");
-  verifyFormat(
-      "template <template <class T, class Y>, class Z> class X {\n} n;");
-  verifyFormat("union Z {\n  int n;\n} x;");
-  verifyFormat("class MACRO Z {\n} n;");
-  verifyFormat("class MACRO(X) Z {\n} n;");
-  verifyFormat("class __attribute__(X) Z {\n} n;");
-  verifyFormat("class __declspec(X) Z {\n} n;");
-  verifyFormat("class A##B##C {\n} n;");
-
-  // Redefinition from nested context:
-  verifyFormat("class A::B::C {\n} n;");
-
-  // Template definitions.
-  // FIXME: This is still incorrectly handled at the formatter side.
-  verifyFormat("template <> struct X < 15, i < 3 && 42 < 50 && 33<28> {\n};");
-
-  // FIXME:
-  // This now gets parsed incorrectly as class definition.
-  // verifyFormat("class A<int> f() {\n}\nint n;");
-
-  // Elaborate types where incorrectly parsing the structural element would
-  // break the indent.
-  verifyFormat("if (true)\n"
-               "  class X x;\n"
-               "else\n"
-               "  f();\n");
-
-  // This is simply incomplete. Formatting is not important, but must not crash.
-  verifyFormat("class A:"); 
-}
-
-TEST_F(FormatTest, DoNotInterfereWithErrorAndWarning) {
-  verifyFormat("#error Leave     all         white!!!!! space* alone!\n");
-  verifyFormat("#warning Leave     all         white!!!!! space* alone!\n");
-  EXPECT_EQ("#error 1", format("  #  error   1"));
-  EXPECT_EQ("#warning 1", format("  #  warning 1"));
-}
-
-TEST_F(FormatTest, FormatHashIfExpressions) {
-  // FIXME: Come up with a better indentation for #elif.
-  verifyFormat(
-      "#if !defined(AAAAAAA) && (defined CCCCCC || defined DDDDDD) &&  \\\n"
-      "    defined(BBBBBBBB)\n"
-      "#elif !defined(AAAAAA) && (defined CCCCC || defined DDDDDD) &&  \\\n"
-      "    defined(BBBBBBBB)\n"
-      "#endif",
-      getLLVMStyleWithColumns(65));
-}
-
-TEST_F(FormatTest, MergeHandlingInTheFaceOfPreprocessorDirectives) {
-  FormatStyle AllowsMergedIf = getGoogleStyle();
-  AllowsMergedIf.AllowShortIfStatementsOnASingleLine = true;
-  verifyFormat("void f() { f(); }\n#error E", AllowsMergedIf);
-  verifyFormat("if (true) return 42;\n#error E", AllowsMergedIf);
-  verifyFormat("if (true)\n#error E\n  return 42;", AllowsMergedIf);
-  EXPECT_EQ("if (true) return 42;",
-            format("if (true)\nreturn 42;", AllowsMergedIf));
-  FormatStyle ShortMergedIf = AllowsMergedIf;
-  ShortMergedIf.ColumnLimit = 25;
-  verifyFormat("#define A \\\n"
-               "  if (true) return 42;",
-               ShortMergedIf);
-  verifyFormat("#define A \\\n"
-               "  f();    \\\n"
-               "  if (true)\n"
-               "#define B",
-               ShortMergedIf);
-  verifyFormat("#define A \\\n"
-               "  f();    \\\n"
-               "  if (true)\n"
-               "g();",
-               ShortMergedIf);
-  verifyFormat("{\n"
-               "#ifdef A\n"
-               "  // Comment\n"
-               "  if (true) continue;\n"
-               "#endif\n"
-               "  // Comment\n"
-               "  if (true) continue;",
-               ShortMergedIf);
-}
-
-TEST_F(FormatTest, BlockCommentsInControlLoops) {
-  verifyFormat("if (0) /* a comment in a strange place */ {\n"
-               "  f();\n"
-               "}");
-  verifyFormat("if (0) /* a comment in a strange place */ {\n"
-               "  f();\n"
-               "} /* another comment */ else /* comment #3 */ {\n"
-               "  g();\n"
-               "}");
-  verifyFormat("while (0) /* a comment in a strange place */ {\n"
-               "  f();\n"
-               "}");
-  verifyFormat("for (;;) /* a comment in a strange place */ {\n"
-               "  f();\n"
-               "}");
-  verifyFormat("do /* a comment in a strange place */ {\n"
-               "  f();\n"
-               "} /* another comment */ while (0);");
-}
-
-TEST_F(FormatTest, BlockComments) {
-  EXPECT_EQ("/* */ /* */ /* */\n/* */ /* */ /* */",
-            format("/* *//* */  /* */\n/* *//* */  /* */"));
-  EXPECT_EQ("/* */ a /* */ b;", format("  /* */  a/* */  b;"));
-  EXPECT_EQ("#define A /*123*/\\\n"
-            "  b\n"
-            "/* */\n"
-            "someCall(\n"
-            "    parameter);",
-            format("#define A /*123*/ b\n"
-                   "/* */\n"
-                   "someCall(parameter);",
-                   getLLVMStyleWithColumns(15)));
-
-  EXPECT_EQ("#define A\n"
-            "/* */ someCall(\n"
-            "    parameter);",
-            format("#define A\n"
-                   "/* */someCall(parameter);",
-                   getLLVMStyleWithColumns(15)));
-
-  FormatStyle NoBinPacking = getLLVMStyle();
-  NoBinPacking.BinPackParameters = false;
-  EXPECT_EQ("someFunction(1, /* comment 1 */\n"
-            "             2, /* comment 2 */\n"
-            "             3, /* comment 3 */\n"
-            "             aaaa,\n"
-            "             bbbb);",
-            format("someFunction (1,   /* comment 1 */\n"
-                   "                2, /* comment 2 */  \n"
-                   "               3,   /* comment 3 */\n"
-                   "aaaa, bbbb );",
-                   NoBinPacking));
-  verifyFormat(
-      "bool aaaaaaaaaaaaa = /* comment: */ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
-      "                     aaaaaaaaaaaaaaaaaaaaaaaaaaaa;");
-  EXPECT_EQ(
-      "bool aaaaaaaaaaaaa = /* trailing comment */\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
-      "    aaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaa;",
-      format(
-          "bool       aaaaaaaaaaaaa =       /* trailing comment */\n"
-          "    aaaaaaaaaaaaaaaaaaaaaaaaaaa||aaaaaaaaaaaaaaaaaaaaaaaaa    ||\n"
-          "    aaaaaaaaaaaaaaaaaaaaaaaaaaaa   || aaaaaaaaaaaaaaaaaaaaaaaaaa;"));
-  EXPECT_EQ(
-      "int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; /* comment */\n"
-      "int bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;   /* comment */\n"
-      "int cccccccccccccccccccccccccccccc;       /* comment */\n",
-      format("int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; /* comment */\n"
-             "int      bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb; /* comment */\n"
-             "int    cccccccccccccccccccccccccccccc;  /* comment */\n"));
-}
-
-TEST_F(FormatTest, BlockCommentsInMacros) {
-  EXPECT_EQ("#define A          \\\n"
-            "  {                \\\n"
-            "    /* one line */ \\\n"
-            "    someCall();",
-            format("#define A {        \\\n"
-                   "  /* one line */   \\\n"
-                   "  someCall();",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("#define A          \\\n"
-            "  {                \\\n"
-            "    /* previous */ \\\n"
-            "    /* one line */ \\\n"
-            "    someCall();",
-            format("#define A {        \\\n"
-                   "  /* previous */   \\\n"
-                   "  /* one line */   \\\n"
-                   "  someCall();",
-                   getLLVMStyleWithColumns(20)));
-}
-
-TEST_F(FormatTest, IndentLineCommentsInStartOfBlockAtEndOfFile) {
-  // FIXME: This is not what we want...
-  verifyFormat("{\n"
-               "// a"
-               "// b");
-}
-
-TEST_F(FormatTest, FormatStarDependingOnContext) {
-  verifyFormat("void f(int *a);");
-  verifyFormat("void f() { f(fint * b); }");
-  verifyFormat("class A {\n  void f(int *a);\n};");
-  verifyFormat("class A {\n  int *a;\n};");
-  verifyFormat("namespace a {\n"
-               "namespace b {\n"
-               "class A {\n"
-               "  void f() {}\n"
-               "  int *a;\n"
-               "};\n"
-               "}\n"
-               "}");
-}
-
-TEST_F(FormatTest, SpecialTokensAtEndOfLine) {
-  verifyFormat("while");
-  verifyFormat("operator");
-}
-
-//===----------------------------------------------------------------------===//
-// Objective-C tests.
-//===----------------------------------------------------------------------===//
-
-TEST_F(FormatTest, FormatForObjectiveCMethodDecls) {
-  verifyFormat("- (void)sendAction:(SEL)aSelector to:(BOOL)anObject;");
-  EXPECT_EQ("- (NSUInteger)indexOfObject:(id)anObject;",
-            format("-(NSUInteger)indexOfObject:(id)anObject;"));
-  EXPECT_EQ("- (NSInteger)Mthod1;", format("-(NSInteger)Mthod1;"));
-  EXPECT_EQ("+ (id)Mthod2;", format("+(id)Mthod2;"));
-  EXPECT_EQ("- (NSInteger)Method3:(id)anObject;",
-            format("-(NSInteger)Method3:(id)anObject;"));
-  EXPECT_EQ("- (NSInteger)Method4:(id)anObject;",
-            format("-(NSInteger)Method4:(id)anObject;"));
-  EXPECT_EQ("- (NSInteger)Method5:(id)anObject:(id)AnotherObject;",
-            format("-(NSInteger)Method5:(id)anObject:(id)AnotherObject;"));
-  EXPECT_EQ("- (id)Method6:(id)A:(id)B:(id)C:(id)D;",
-            format("- (id)Method6:(id)A:(id)B:(id)C:(id)D;"));
-  EXPECT_EQ(
-      "- (void)sendAction:(SEL)aSelector to:(id)anObject forAllCells:(BOOL)flag;",
-      format(
-          "- (void)sendAction:(SEL)aSelector to:(id)anObject forAllCells:(BOOL)flag;"));
-
-  // Very long objectiveC method declaration.
-  verifyFormat("- (NSUInteger)indexOfObject:(id)anObject\n"
-               "                    inRange:(NSRange)range\n"
-               "                   outRange:(NSRange)out_range\n"
-               "                  outRange1:(NSRange)out_range1\n"
-               "                  outRange2:(NSRange)out_range2\n"
-               "                  outRange3:(NSRange)out_range3\n"
-               "                  outRange4:(NSRange)out_range4\n"
-               "                  outRange5:(NSRange)out_range5\n"
-               "                  outRange6:(NSRange)out_range6\n"
-               "                  outRange7:(NSRange)out_range7\n"
-               "                  outRange8:(NSRange)out_range8\n"
-               "                  outRange9:(NSRange)out_range9;");
-
-  verifyFormat("- (int)sum:(vector<int>)numbers;");
-  verifyGoogleFormat("- (void)setDelegate:(id<Protocol>)delegate;");
-  // FIXME: In LLVM style, there should be a space in front of a '<' for ObjC
-  // protocol lists (but not for template classes):
-  //verifyFormat("- (void)setDelegate:(id <Protocol>)delegate;");
-
-  verifyFormat("- (int(*)())foo:(int(*)())f;");
-  verifyGoogleFormat("- (int(*)())foo:(int(*)())foo;");
-
-  // If there's no return type (very rare in practice!), LLVM and Google style
-  // agree.
-  verifyFormat("- foo;");
-  verifyFormat("- foo:(int)f;");
-  verifyGoogleFormat("- foo:(int)foo;");
-}
-
-TEST_F(FormatTest, FormatObjCBlocks) {
-  verifyFormat("int (^Block)(int, int);");
-  verifyFormat("int (^Block1)(int, int) = ^(int i, int j)");
-}
-
-TEST_F(FormatTest, FormatObjCInterface) {
-  verifyFormat("@interface Foo : NSObject <NSSomeDelegate> {\n"
-               "@public\n"
-               "  int field1;\n"
-               "@protected\n"
-               "  int field2;\n"
-               "@private\n"
-               "  int field3;\n"
-               "@package\n"
-               "  int field4;\n"
-               "}\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyGoogleFormat("@interface Foo : NSObject<NSSomeDelegate> {\n"
-                     " @public\n"
-                     "  int field1;\n"
-                     " @protected\n"
-                     "  int field2;\n"
-                     " @private\n"
-                     "  int field3;\n"
-                     " @package\n"
-                     "  int field4;\n"
-                     "}\n"
-                     "+ (id)init;\n"
-                     "@end");
-
-  verifyFormat("@interface /* wait for it */ Foo\n"
-               "+ (id)init;\n"
-               "// Look, a comment!\n"
-               "- (int)answerWith:(int)i;\n"
-               "@end");
-
-  verifyFormat("@interface Foo\n"
-               "@end\n"
-               "@interface Bar\n"
-               "@end");
-
-  verifyFormat("@interface Foo : Bar\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyFormat("@interface Foo : /**/ Bar /**/ <Baz, /**/ Quux>\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyGoogleFormat("@interface Foo : Bar<Baz, Quux>\n"
-                     "+ (id)init;\n"
-                     "@end");
-
-  verifyFormat("@interface Foo (HackStuff)\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyFormat("@interface Foo ()\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyFormat("@interface Foo (HackStuff) <MyProtocol>\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyGoogleFormat("@interface Foo (HackStuff)<MyProtocol>\n"
-                     "+ (id)init;\n"
-                     "@end");
-
-  verifyFormat("@interface Foo {\n"
-               "  int _i;\n"
-               "}\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyFormat("@interface Foo : Bar {\n"
-               "  int _i;\n"
-               "}\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyFormat("@interface Foo : Bar <Baz, Quux> {\n"
-               "  int _i;\n"
-               "}\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyFormat("@interface Foo (HackStuff) {\n"
-               "  int _i;\n"
-               "}\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyFormat("@interface Foo () {\n"
-               "  int _i;\n"
-               "}\n"
-               "+ (id)init;\n"
-               "@end");
-
-  verifyFormat("@interface Foo (HackStuff) <MyProtocol> {\n"
-               "  int _i;\n"
-               "}\n"
-               "+ (id)init;\n"
-               "@end");
-}
-
-TEST_F(FormatTest, FormatObjCImplementation) {
-  verifyFormat("@implementation Foo : NSObject {\n"
-               "@public\n"
-               "  int field1;\n"
-               "@protected\n"
-               "  int field2;\n"
-               "@private\n"
-               "  int field3;\n"
-               "@package\n"
-               "  int field4;\n"
-               "}\n"
-               "+ (id)init {\n}\n"
-               "@end");
-
-  verifyGoogleFormat("@implementation Foo : NSObject {\n"
-                     " @public\n"
-                     "  int field1;\n"
-                     " @protected\n"
-                     "  int field2;\n"
-                     " @private\n"
-                     "  int field3;\n"
-                     " @package\n"
-                     "  int field4;\n"
-                     "}\n"
-                     "+ (id)init {\n}\n"
-                     "@end");
-
-  verifyFormat("@implementation Foo\n"
-               "+ (id)init {\n"
-               "  if (true)\n"
-               "    return nil;\n"
-               "}\n"
-               "// Look, a comment!\n"
-               "- (int)answerWith:(int)i {\n"
-               "  return i;\n"
-               "}\n"
-               "+ (int)answerWith:(int)i {\n"
-               "  return i;\n"
-               "}\n"
-               "@end");
-
-  verifyFormat("@implementation Foo\n"
-               "@end\n"
-               "@implementation Bar\n"
-               "@end");
-
-  verifyFormat("@implementation Foo : Bar\n"
-               "+ (id)init {\n}\n"
-               "- (void)foo {\n}\n"
-               "@end");
-
-  verifyFormat("@implementation Foo {\n"
-               "  int _i;\n"
-               "}\n"
-               "+ (id)init {\n}\n"
-               "@end");
-
-  verifyFormat("@implementation Foo : Bar {\n"
-               "  int _i;\n"
-               "}\n"
-               "+ (id)init {\n}\n"
-               "@end");
-
-  verifyFormat("@implementation Foo (HackStuff)\n"
-               "+ (id)init {\n}\n"
-               "@end");
-}
-
-TEST_F(FormatTest, FormatObjCProtocol) {
-  verifyFormat("@protocol Foo\n"
-               "@property(weak) id delegate;\n"
-               "- (NSUInteger)numberOfThings;\n"
-               "@end");
-
-  verifyFormat("@protocol MyProtocol <NSObject>\n"
-               "- (NSUInteger)numberOfThings;\n"
-               "@end");
-
-  verifyGoogleFormat("@protocol MyProtocol<NSObject>\n"
-                     "- (NSUInteger)numberOfThings;\n"
-                     "@end");
-
-  verifyFormat("@protocol Foo;\n"
-               "@protocol Bar;\n");
-
-  verifyFormat("@protocol Foo\n"
-               "@end\n"
-               "@protocol Bar\n"
-               "@end");
-
-  verifyFormat("@protocol myProtocol\n"
-               "- (void)mandatoryWithInt:(int)i;\n"
-               "@optional\n"
-               "- (void)optional;\n"
-               "@required\n"
-               "- (void)required;\n"
-               "@optional\n"
-               "@property(assign) int madProp;\n"
-               "@end\n");
-}
-
-TEST_F(FormatTest, FormatObjCMethodDeclarations) {
-  verifyFormat("- (void)doSomethingWith:(GTMFoo *)theFoo\n"
-               "                   rect:(NSRect)theRect\n"
-               "               interval:(float)theInterval {\n"
-               "}");
-  verifyFormat("- (void)shortf:(GTMFoo *)theFoo\n"
-               "          longKeyword:(NSRect)theRect\n"
-               "    evenLongerKeyword:(float)theInterval\n"
-               "                error:(NSError **)theError {\n"
-               "}");
-}
-
-TEST_F(FormatTest, FormatObjCMethodExpr) {
-  verifyFormat("[foo bar:baz];");
-  verifyFormat("return [foo bar:baz];");
-  verifyFormat("f([foo bar:baz]);");
-  verifyFormat("f(2, [foo bar:baz]);");
-  verifyFormat("f(2, a ? b : c);");
-  verifyFormat("[[self initWithInt:4] bar:[baz quux:arrrr]];");
-
-  // Unary operators.
-  verifyFormat("int a = +[foo bar:baz];");
-  verifyFormat("int a = -[foo bar:baz];");
-  verifyFormat("int a = ![foo bar:baz];");
-  verifyFormat("int a = ~[foo bar:baz];");
-  verifyFormat("int a = ++[foo bar:baz];");
-  verifyFormat("int a = --[foo bar:baz];");
-  verifyFormat("int a = sizeof [foo bar:baz];");
-  verifyFormat("int a = alignof [foo bar:baz];");
-  verifyFormat("int a = &[foo bar:baz];");
-  verifyFormat("int a = *[foo bar:baz];");
-  // FIXME: Make casts work, without breaking f()[4].
-  //verifyFormat("int a = (int)[foo bar:baz];");
-  //verifyFormat("return (int)[foo bar:baz];");
-  //verifyFormat("(void)[foo bar:baz];");
-  verifyFormat("return (MyType *)[self.tableView cellForRowAtIndexPath:cell];");
-
-  // Binary operators.
-  verifyFormat("[foo bar:baz], [foo bar:baz];");
-  verifyFormat("[foo bar:baz] = [foo bar:baz];");
-  verifyFormat("[foo bar:baz] *= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] /= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] %= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] += [foo bar:baz];");
-  verifyFormat("[foo bar:baz] -= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] <<= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] >>= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] &= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] ^= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] |= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] ? [foo bar:baz] : [foo bar:baz];");
-  verifyFormat("[foo bar:baz] || [foo bar:baz];");
-  verifyFormat("[foo bar:baz] && [foo bar:baz];");
-  verifyFormat("[foo bar:baz] | [foo bar:baz];");
-  verifyFormat("[foo bar:baz] ^ [foo bar:baz];");
-  verifyFormat("[foo bar:baz] & [foo bar:baz];");
-  verifyFormat("[foo bar:baz] == [foo bar:baz];");
-  verifyFormat("[foo bar:baz] != [foo bar:baz];");
-  verifyFormat("[foo bar:baz] >= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] <= [foo bar:baz];");
-  verifyFormat("[foo bar:baz] > [foo bar:baz];");
-  verifyFormat("[foo bar:baz] < [foo bar:baz];");
-  verifyFormat("[foo bar:baz] >> [foo bar:baz];");
-  verifyFormat("[foo bar:baz] << [foo bar:baz];");
-  verifyFormat("[foo bar:baz] - [foo bar:baz];");
-  verifyFormat("[foo bar:baz] + [foo bar:baz];");
-  verifyFormat("[foo bar:baz] * [foo bar:baz];");
-  verifyFormat("[foo bar:baz] / [foo bar:baz];");
-  verifyFormat("[foo bar:baz] % [foo bar:baz];");
-  // Whew!
-
-  verifyFormat("return in[42];");
-  verifyFormat("for (id foo in [self getStuffFor:bla]) {\n"
-               "}");
-
-  verifyFormat("[self stuffWithInt:(4 + 2) float:4.5];");
-  verifyFormat("[self stuffWithInt:a ? b : c float:4.5];");
-  verifyFormat("[self stuffWithInt:a ? [self foo:bar] : c];");
-  verifyFormat("[self stuffWithInt:a ? (e ? f : g) : c];");
-  verifyFormat("[cond ? obj1 : obj2 methodWithParam:param]");
-  verifyFormat("[button setAction:@selector(zoomOut:)];");
-  verifyFormat("[color getRed:&r green:&g blue:&b alpha:&a];");
-
-  verifyFormat("arr[[self indexForFoo:a]];");
-  verifyFormat("throw [self errorFor:a];");
-  verifyFormat("@throw [self errorFor:a];");
-
-  // This tests that the formatter doesn't break after "backing" but before ":",
-  // which would be at 80 columns.
-  verifyFormat(
-      "void f() {\n"
-      "  if ((self = [super initWithContentRect:contentRect\n"
-      "                               styleMask:styleMask\n"
-      "                                 backing:NSBackingStoreBuffered\n"
-      "                                   defer:YES]))");
-
-  verifyFormat(
-      "[foo checkThatBreakingAfterColonWorksOk:\n"
-      "        [bar ifItDoes:reduceOverallLineLengthLikeInThisCase]];");
-
-  verifyFormat("[myObj short:arg1 // Force line break\n"
-               "          longKeyword:arg2\n"
-               "    evenLongerKeyword:arg3\n"
-               "                error:arg4];");
-  verifyFormat(
-      "void f() {\n"
-      "  popup_window_.reset([[RenderWidgetPopupWindow alloc]\n"
-      "      initWithContentRect:NSMakeRect(origin_global.x, origin_global.y,\n"
-      "                                     pos.width(), pos.height())\n"
-      "                styleMask:NSBorderlessWindowMask\n"
-      "                  backing:NSBackingStoreBuffered\n"
-      "                    defer:NO]);\n"
-      "}");
-  verifyFormat("[contentsContainer replaceSubview:[subviews objectAtIndex:0]\n"
-               "                             with:contentsNativeView];");
-
-  verifyFormat(
-      "[pboard addTypes:[NSArray arrayWithObject:kBookmarkButtonDragType]\n"
-      "           owner:nillllll];");
-
-  verifyFormat(
-      "[pboard setData:[NSData dataWithBytes:&button length:sizeof(button)]\n"
-      "        forType:kBookmarkButtonDragType];");
-
-  verifyFormat("[defaultCenter addObserver:self\n"
-               "                  selector:@selector(willEnterFullscreen)\n"
-               "                      name:kWillEnterFullscreenNotification\n"
-               "                    object:nil];");
-  verifyFormat("[image_rep drawInRect:drawRect\n"
-               "             fromRect:NSZeroRect\n"
-               "            operation:NSCompositeCopy\n"
-               "             fraction:1.0\n"
-               "       respectFlipped:NO\n"
-               "                hints:nil];");
-
-  verifyFormat(
-      "scoped_nsobject<NSTextField> message(\n"
-      "    // The frame will be fixed up when |-setMessageText:| is called.\n"
-      "    [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 0, 0)]);");
-}
-
-TEST_F(FormatTest, ObjCAt) {
-  verifyFormat("@autoreleasepool");
-  verifyFormat("@catch");
-  verifyFormat("@class");
-  verifyFormat("@compatibility_alias");
-  verifyFormat("@defs");
-  verifyFormat("@dynamic");
-  verifyFormat("@encode");
-  verifyFormat("@end");
-  verifyFormat("@finally");
-  verifyFormat("@implementation");
-  verifyFormat("@import");
-  verifyFormat("@interface");
-  verifyFormat("@optional");
-  verifyFormat("@package");
-  verifyFormat("@private");
-  verifyFormat("@property");
-  verifyFormat("@protected");
-  verifyFormat("@protocol");
-  verifyFormat("@public");
-  verifyFormat("@required");
-  verifyFormat("@selector");
-  verifyFormat("@synchronized");
-  verifyFormat("@synthesize");
-  verifyFormat("@throw");
-  verifyFormat("@try");
-
-  EXPECT_EQ("@interface", format("@ interface"));
-
-  // The precise formatting of this doesn't matter, nobody writes code like
-  // this.
-  verifyFormat("@ /*foo*/ interface");
-}
-
-TEST_F(FormatTest, ObjCSnippets) {
-  verifyFormat("@autoreleasepool {\n"
-               "  foo();\n"
-               "}");
-  verifyFormat("@class Foo, Bar;");
-  verifyFormat("@compatibility_alias AliasName ExistingClass;");
-  verifyFormat("@dynamic textColor;");
-  verifyFormat("char *buf1 = @encode(int *);");
-  verifyFormat("char *buf1 = @encode(typeof(4 * 5));");
-  verifyFormat("char *buf1 = @encode(int **);");
-  verifyFormat("Protocol *proto = @protocol(p1);");
-  verifyFormat("SEL s = @selector(foo:);");
-  verifyFormat("@synchronized(self) {\n"
-               "  f();\n"
-               "}");
-
-  verifyFormat("@synthesize dropArrowPosition = dropArrowPosition_;");
-  verifyGoogleFormat("@synthesize dropArrowPosition = dropArrowPosition_;");
-
-  verifyFormat("@property(assign, nonatomic) CGFloat hoverAlpha;");
-  verifyFormat("@property(assign, getter=isEditable) BOOL editable;");
-  verifyGoogleFormat("@property(assign, getter=isEditable) BOOL editable;");
-}
-
-TEST_F(FormatTest, ObjCLiterals) {
-  verifyFormat("@\"String\"");
-  verifyFormat("@1");
-  verifyFormat("@+4.8");
-  verifyFormat("@-4");
-  verifyFormat("@1LL");
-  verifyFormat("@.5");
-  verifyFormat("@'c'");
-  verifyFormat("@true");
-
-  verifyFormat("NSNumber *smallestInt = @(-INT_MAX - 1);");
-  verifyFormat("NSNumber *piOverTwo = @(M_PI / 2);");
-  verifyFormat("NSNumber *favoriteColor = @(Green);");
-  verifyFormat("NSString *path = @(getenv(\"PATH\"));");
-
-  verifyFormat("@[");
-  verifyFormat("@[]");
-  verifyFormat(
-      "NSArray *array = @[ @\" Hey \", NSApp, [NSNumber numberWithInt:42] ];");
-  verifyFormat("return @[ @3, @[], @[ @4, @5 ] ];");
-
-  verifyFormat("@{");
-  verifyFormat("@{}");
-  verifyFormat("@{ @\"one\" : @1 }");
-  verifyFormat("return @{ @\"one\" : @1 };");
-  verifyFormat("@{ @\"one\" : @1, }");
-
-  // FIXME: Breaking in cases where we think there's a structural error
-  // showed that we're incorrectly parsing this code. We need to fix the
-  // parsing here.
-  verifyFormat("@{ @\"one\" : @\n"
-               "{ @2 : @1 }\n"
-               "}");
-  verifyFormat("@{ @\"one\" : @\n"
-               "{ @2 : @1 }\n"
-               ",\n"
-               "}");
-
-  verifyFormat("@{ 1 > 2 ? @\"one\" : @\"two\" : 1 > 2 ? @1 : @2 }");
-  verifyFormat("[self setDict:@{}");
-  verifyFormat("[self setDict:@{ @1 : @2 }");
-  verifyFormat("NSLog(@\"%@\", @{ @1 : @2, @2 : @3 }[@1]);");
-  verifyFormat(
-      "NSDictionary *masses = @{ @\"H\" : @1.0078, @\"He\" : @4.0026 };");
-  verifyFormat(
-      "NSDictionary *settings = @{ AVEncoderKey : @(AVAudioQualityMax) };");
-
-  // FIXME: Nested and multi-line array and dictionary literals need more work.
-  verifyFormat(
-      "NSDictionary *d = @{ @\"nam\" : NSUserNam(), @\"dte\" : [NSDate date],\n"
-      "                     @\"processInfo\" : [NSProcessInfo processInfo] };");
-}
-
-TEST_F(FormatTest, ReformatRegionAdjustsIndent) {
-  EXPECT_EQ("{\n"
-            "{\n"
-            "a;\n"
-            "b;\n"
-            "}\n"
-            "}",
-            format("{\n"
-                   "{\n"
-                   "a;\n"
-                   "     b;\n"
-                   "}\n"
-                   "}",
-                   13, 2, getLLVMStyle()));
-  EXPECT_EQ("{\n"
-            "{\n"
-            "  a;\n"
-            "b;\n"
-            "}\n"
-            "}",
-            format("{\n"
-                   "{\n"
-                   "     a;\n"
-                   "b;\n"
-                   "}\n"
-                   "}",
-                   9, 2, getLLVMStyle()));
-  EXPECT_EQ("{\n"
-            "{\n"
-            "public:\n"
-            "  b;\n"
-            "}\n"
-            "}",
-            format("{\n"
-                   "{\n"
-                   "public:\n"
-                   "     b;\n"
-                   "}\n"
-                   "}",
-                   17, 2, getLLVMStyle()));
-  EXPECT_EQ("{\n"
-            "{\n"
-            "a;\n"
-            "}\n"
-            "{\n"
-            "  b;\n"
-            "}\n"
-            "}",
-            format("{\n"
-                   "{\n"
-                   "a;\n"
-                   "}\n"
-                   "{\n"
-                   "           b;\n"
-                   "}\n"
-                   "}",
-                   22, 2, getLLVMStyle()));
-  EXPECT_EQ("  {\n"
-            "    a;\n"
-            "  }",
-            format("  {\n"
-                   "a;\n"
-                   "  }",
-                   4, 2, getLLVMStyle()));
-  EXPECT_EQ("void f() {}\n"
-            "void g() {}",
-            format("void f() {}\n"
-                   "void g() {}",
-                   13, 0, getLLVMStyle()));
-  EXPECT_EQ("int a; // comment\n"
-            "       // line 2\n"
-            "int b;",
-            format("int a; // comment\n"
-                   "       // line 2\n"
-                   "  int b;",
-                   35, 0, getLLVMStyle()));
-}
-
-TEST_F(FormatTest, BreakStringLiterals) {
-  EXPECT_EQ("\"some text \"\n"
-            "\"other\";",
-            format("\"some text other\";", getLLVMStyleWithColumns(12)));
-  EXPECT_EQ("\"some text \"\n"
-            "\"other\";",
-            format("\\\n\"some text other\";", getLLVMStyleWithColumns(12)));
-  EXPECT_EQ(
-      "#define A  \\\n"
-      "  \"some \"  \\\n"
-      "  \"text \"  \\\n"
-      "  \"other\";",
-      format("#define A \"some text other\";", getLLVMStyleWithColumns(12)));
-  EXPECT_EQ(
-      "#define A  \\\n"
-      "  \"so \"    \\\n"
-      "  \"text \"  \\\n"
-      "  \"other\";",
-      format("#define A \"so text other\";", getLLVMStyleWithColumns(12)));
-
-  EXPECT_EQ("\"some text\"",
-            format("\"some text\"", getLLVMStyleWithColumns(1)));
-  EXPECT_EQ("\"some text\"",
-            format("\"some text\"", getLLVMStyleWithColumns(11)));
-  EXPECT_EQ("\"some \"\n"
-            "\"text\"",
-            format("\"some text\"", getLLVMStyleWithColumns(10)));
-  EXPECT_EQ("\"some \"\n"
-            "\"text\"",
-            format("\"some text\"", getLLVMStyleWithColumns(7)));
-  EXPECT_EQ("\"some\"\n"
-            "\" tex\"\n"
-            "\"t\"",
-            format("\"some text\"", getLLVMStyleWithColumns(6)));
-  EXPECT_EQ("\"some\"\n"
-            "\" tex\"\n"
-            "\" and\"",
-            format("\"some tex and\"", getLLVMStyleWithColumns(6)));
-  EXPECT_EQ("\"some\"\n"
-            "\"/tex\"\n"
-            "\"/and\"",
-            format("\"some/tex/and\"", getLLVMStyleWithColumns(6)));
-
-  EXPECT_EQ("variable =\n"
-            "    \"long string \"\n"
-            "    \"literal\";",
-            format("variable = \"long string literal\";",
-                   getLLVMStyleWithColumns(20)));
-
-  EXPECT_EQ("variable = f(\n"
-            "    \"long string \"\n"
-            "    \"literal\",\n"
-            "    short,\n"
-            "    loooooooooooooooooooong);",
-            format("variable = f(\"long string literal\", short, "
-                   "loooooooooooooooooooong);",
-                   getLLVMStyleWithColumns(20)));
-  EXPECT_EQ(
-      "f(\"one two\".split(\n"
-      "    variable));",
-      format("f(\"one two\".split(variable));", getLLVMStyleWithColumns(20)));
-  EXPECT_EQ("f(\"one two three four five six \"\n"
-            "  \"seven\".split(\n"
-            "      really_looooong_variable));",
-            format("f(\"one two three four five six seven\"."
-                   "split(really_looooong_variable));",
-                   getLLVMStyleWithColumns(33)));
-
-  EXPECT_EQ("f(\"some \"\n"
-            "  \"text\",\n"
-            "  other);",
-            format("f(\"some text\", other);", getLLVMStyleWithColumns(10)));
-
-  // Only break as a last resort.
-  verifyFormat(
-      "aaaaaaaaaaaaaaaaaaaa(\n"
-      "    aaaaaaaaaaaaaaaaaaaa,\n"
-      "    aaaaaa(\"aaa aaaaa aaa aaa aaaaa aaa aaaaa aaa aaa aaaaaa\"));");
-
-  EXPECT_EQ(
-      "\"splitmea\"\n"
-      "\"trandomp\"\n"
-      "\"oint\"",
-      format("\"splitmeatrandompoint\"", getLLVMStyleWithColumns(10)));
-
-  EXPECT_EQ(
-      "\"split/\"\n"
-      "\"pathat/\"\n"
-      "\"slashes\"",
-      format("\"split/pathat/slashes\"", getLLVMStyleWithColumns(10)));
-
-  FormatStyle AlignLeft = getLLVMStyleWithColumns(12);
-  AlignLeft.AlignEscapedNewlinesLeft = true;
-  EXPECT_EQ(
-      "#define A \\\n"
-      "  \"some \" \\\n"
-      "  \"text \" \\\n"
-      "  \"other\";",
-      format("#define A \"some text other\";", AlignLeft));
-}
-
-TEST_F(FormatTest, DoNotBreakStringLiteralsInEscapeSequence) {
-  EXPECT_EQ("\"\\a\"",
-            format("\"\\a\"", getLLVMStyleWithColumns(3)));
-  EXPECT_EQ("\"\\\"",
-            format("\"\\\"", getLLVMStyleWithColumns(2)));
-  EXPECT_EQ("\"test\"\n"
-            "\"\\n\"",
-            format("\"test\\n\"", getLLVMStyleWithColumns(7)));
-  EXPECT_EQ("\"tes\\\\\"\n"
-            "\"n\"",
-            format("\"tes\\\\n\"", getLLVMStyleWithColumns(7)));
-  EXPECT_EQ("\"\\\\\\\\\"\n"
-            "\"\\n\"",
-            format("\"\\\\\\\\\\n\"", getLLVMStyleWithColumns(7)));
-  EXPECT_EQ("\"\\uff01\"",
-            format("\"\\uff01\"", getLLVMStyleWithColumns(7)));
-  EXPECT_EQ("\"\\uff01\"\n"
-            "\"test\"",
-            format("\"\\uff01test\"", getLLVMStyleWithColumns(8)));
-  EXPECT_EQ("\"\\Uff01ff02\"",
-            format("\"\\Uff01ff02\"", getLLVMStyleWithColumns(11)));
-  EXPECT_EQ("\"\\x000000000001\"\n"
-            "\"next\"",
-            format("\"\\x000000000001next\"", getLLVMStyleWithColumns(16)));
-  EXPECT_EQ("\"\\x000000000001next\"",
-            format("\"\\x000000000001next\"", getLLVMStyleWithColumns(15)));
-  EXPECT_EQ("\"\\x000000000001\"",
-            format("\"\\x000000000001\"", getLLVMStyleWithColumns(7)));
-  EXPECT_EQ("\"test\"\n"
-            "\"\\000000\"\n"
-            "\"000001\"",
-            format("\"test\\000000000001\"", getLLVMStyleWithColumns(9)));
-  EXPECT_EQ("\"test\\000\"\n"
-            "\"00000000\"\n"
-            "\"1\"",
-            format("\"test\\000000000001\"", getLLVMStyleWithColumns(10)));
-  EXPECT_EQ("R\"(\\x\\x00)\"\n",
-            format("R\"(\\x\\x00)\"\n", getLLVMStyleWithColumns(7)));
-}
-
-TEST_F(FormatTest, DoNotCreateUnreasonableUnwrappedLines) {
-  verifyFormat("void f() {\n"
-               "  return g() {}\n"
-               "  void h() {}");
-  verifyFormat("if (foo)\n"
-               "  return { forgot_closing_brace();\n"
-               "test();");
-  verifyFormat("int a[] = { void forgot_closing_brace()\n"
-               "{\n"
-               "  f();\n"
-               "  g();\n"
-               "}");
-}
-
-} // end namespace tooling
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/Frontend/FrontendActionTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Frontend/FrontendActionTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Frontend/FrontendActionTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-//===- unittests/Frontend/FrontendActionTest.cpp - FrontendAction tests ---===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Frontend/FrontendAction.h"
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/RecursiveASTVisitor.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/CompilerInvocation.h"
-#include "llvm/ADT/Triple.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-using namespace clang;
-
-namespace {
-
-class TestASTFrontendAction : public ASTFrontendAction {
-public:
-  std::vector<std::string> decl_names;
-
-  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
-                                         StringRef InFile) {
-    return new Visitor(decl_names);
-  }
-
-private:
-  class Visitor : public ASTConsumer, public RecursiveASTVisitor<Visitor> {
-  public:
-    Visitor(std::vector<std::string> &decl_names) : decl_names_(decl_names) {}
-
-    virtual void HandleTranslationUnit(ASTContext &context) {
-      TraverseDecl(context.getTranslationUnitDecl());
-    }
-
-    virtual bool VisitNamedDecl(NamedDecl *Decl) {
-      decl_names_.push_back(Decl->getQualifiedNameAsString());
-      return true;
-    }
-
-  private:
-    std::vector<std::string> &decl_names_;
-  };
-};
-
-TEST(ASTFrontendAction, Sanity) {
-  CompilerInvocation *invocation = new CompilerInvocation;
-  invocation->getPreprocessorOpts().addRemappedFile(
-    "test.cc", MemoryBuffer::getMemBuffer("int main() { float x; }"));
-  invocation->getFrontendOpts().Inputs.push_back(FrontendInputFile("test.cc",
-                                                                   IK_CXX));
-  invocation->getFrontendOpts().ProgramAction = frontend::ParseSyntaxOnly;
-  invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu";
-  CompilerInstance compiler;
-  compiler.setInvocation(invocation);
-  compiler.createDiagnostics();
-
-  TestASTFrontendAction test_action;
-  ASSERT_TRUE(compiler.ExecuteAction(test_action));
-  ASSERT_EQ(3U, test_action.decl_names.size());
-  EXPECT_EQ("__builtin_va_list", test_action.decl_names[0]);
-  EXPECT_EQ("main", test_action.decl_names[1]);
-  EXPECT_EQ("x", test_action.decl_names[2]);
-}
-
-} // anonymous namespace

Modified: trunk/contrib/llvm/tools/clang/unittests/Lex/LexerTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Lex/LexerTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Lex/LexerTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,188 +0,0 @@
-//===- unittests/Lex/LexerTest.cpp ------ Lexer tests ---------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Lex/Lexer.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Basic/TargetInfo.h"
-#include "clang/Basic/TargetOptions.h"
-#include "clang/Lex/HeaderSearch.h"
-#include "clang/Lex/HeaderSearchOptions.h"
-#include "clang/Lex/ModuleLoader.h"
-#include "clang/Lex/Preprocessor.h"
-#include "clang/Lex/PreprocessorOptions.h"
-#include "llvm/Config/config.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-using namespace clang;
-
-namespace {
-
-// The test fixture.
-class LexerTest : public ::testing::Test {
-protected:
-  LexerTest()
-    : FileMgr(FileMgrOpts),
-      DiagID(new DiagnosticIDs()),
-      Diags(DiagID, new DiagnosticOptions, new IgnoringDiagConsumer()),
-      SourceMgr(Diags, FileMgr),
-      TargetOpts(new TargetOptions) 
-  {
-    TargetOpts->Triple = "x86_64-apple-darwin11.1.0";
-    Target = TargetInfo::CreateTargetInfo(Diags, &*TargetOpts);
-  }
-
-  FileSystemOptions FileMgrOpts;
-  FileManager FileMgr;
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID;
-  DiagnosticsEngine Diags;
-  SourceManager SourceMgr;
-  LangOptions LangOpts;
-  IntrusiveRefCntPtr<TargetOptions> TargetOpts;
-  IntrusiveRefCntPtr<TargetInfo> Target;
-};
-
-class VoidModuleLoader : public ModuleLoader {
-  virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, 
-                                      ModuleIdPath Path,
-                                      Module::NameVisibilityKind Visibility,
-                                      bool IsInclusionDirective) {
-    return ModuleLoadResult();
-  }
-
-  virtual void makeModuleVisible(Module *Mod,
-                                 Module::NameVisibilityKind Visibility,
-                                 SourceLocation ImportLoc,
-                                 bool Complain) { }
-};
-
-TEST_F(LexerTest, LexAPI) {
-  const char *source =
-    "#define M(x) [x]\n"
-    "#define N(x) x\n"
-    "#define INN(x) x\n"
-    "#define NOF1 INN(val)\n"
-    "#define NOF2 val\n"
-    "M(foo) N([bar])\n"
-    "N(INN(val)) N(NOF1) N(NOF2) N(val)";
-
-  MemoryBuffer *buf = MemoryBuffer::getMemBuffer(source);
-  (void)SourceMgr.createMainFileIDForMemBuffer(buf);
-
-  VoidModuleLoader ModLoader;
-  HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
-                          Target.getPtr());
-  Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts, Target.getPtr(),
-                  SourceMgr, HeaderInfo, ModLoader,
-                  /*IILookup =*/ 0,
-                  /*OwnsHeaderSearch =*/false,
-                  /*DelayInitialization =*/ false);
-  PP.EnterMainSourceFile();
-
-  std::vector<Token> toks;
-  while (1) {
-    Token tok;
-    PP.Lex(tok);
-    if (tok.is(tok::eof))
-      break;
-    toks.push_back(tok);
-  }
-
-  // Make sure we got the tokens that we expected.
-  ASSERT_EQ(10U, toks.size());
-  ASSERT_EQ(tok::l_square, toks[0].getKind());
-  ASSERT_EQ(tok::identifier, toks[1].getKind());
-  ASSERT_EQ(tok::r_square, toks[2].getKind());
-  ASSERT_EQ(tok::l_square, toks[3].getKind());
-  ASSERT_EQ(tok::identifier, toks[4].getKind());
-  ASSERT_EQ(tok::r_square, toks[5].getKind());
-  ASSERT_EQ(tok::identifier, toks[6].getKind());
-  ASSERT_EQ(tok::identifier, toks[7].getKind());
-  ASSERT_EQ(tok::identifier, toks[8].getKind());
-  ASSERT_EQ(tok::identifier, toks[9].getKind());
-  
-  SourceLocation lsqrLoc = toks[0].getLocation();
-  SourceLocation idLoc = toks[1].getLocation();
-  SourceLocation rsqrLoc = toks[2].getLocation();
-  std::pair<SourceLocation,SourceLocation>
-    macroPair = SourceMgr.getExpansionRange(lsqrLoc);
-  SourceRange macroRange = SourceRange(macroPair.first, macroPair.second);
-
-  SourceLocation Loc;
-  EXPECT_TRUE(Lexer::isAtStartOfMacroExpansion(lsqrLoc, SourceMgr, LangOpts, &Loc));
-  EXPECT_EQ(Loc, macroRange.getBegin());
-  EXPECT_FALSE(Lexer::isAtStartOfMacroExpansion(idLoc, SourceMgr, LangOpts));
-  EXPECT_FALSE(Lexer::isAtEndOfMacroExpansion(idLoc, SourceMgr, LangOpts));
-  EXPECT_TRUE(Lexer::isAtEndOfMacroExpansion(rsqrLoc, SourceMgr, LangOpts, &Loc));
-  EXPECT_EQ(Loc, macroRange.getEnd());
-
-  CharSourceRange range = Lexer::makeFileCharRange(
-           CharSourceRange::getTokenRange(lsqrLoc, idLoc), SourceMgr, LangOpts);
-  EXPECT_TRUE(range.isInvalid());
-  range = Lexer::makeFileCharRange(CharSourceRange::getTokenRange(idLoc, rsqrLoc),
-                                   SourceMgr, LangOpts);
-  EXPECT_TRUE(range.isInvalid());
-  range = Lexer::makeFileCharRange(CharSourceRange::getTokenRange(lsqrLoc, rsqrLoc),
-                                   SourceMgr, LangOpts);
-  EXPECT_TRUE(!range.isTokenRange());
-  EXPECT_EQ(range.getAsRange(),
-            SourceRange(macroRange.getBegin(),
-                        macroRange.getEnd().getLocWithOffset(1)));
-
-  StringRef text = Lexer::getSourceText(
-                               CharSourceRange::getTokenRange(lsqrLoc, rsqrLoc),
-                               SourceMgr, LangOpts);
-  EXPECT_EQ(text, "M(foo)");
-
-  SourceLocation macroLsqrLoc = toks[3].getLocation();
-  SourceLocation macroIdLoc = toks[4].getLocation();
-  SourceLocation macroRsqrLoc = toks[5].getLocation();
-  SourceLocation fileLsqrLoc = SourceMgr.getSpellingLoc(macroLsqrLoc);
-  SourceLocation fileIdLoc = SourceMgr.getSpellingLoc(macroIdLoc);
-  SourceLocation fileRsqrLoc = SourceMgr.getSpellingLoc(macroRsqrLoc);
-
-  range = Lexer::makeFileCharRange(
-      CharSourceRange::getTokenRange(macroLsqrLoc, macroIdLoc),
-      SourceMgr, LangOpts);
-  EXPECT_EQ(SourceRange(fileLsqrLoc, fileIdLoc.getLocWithOffset(3)),
-            range.getAsRange());
-
-  range = Lexer::makeFileCharRange(CharSourceRange::getTokenRange(macroIdLoc, macroRsqrLoc),
-                                   SourceMgr, LangOpts);
-  EXPECT_EQ(SourceRange(fileIdLoc, fileRsqrLoc.getLocWithOffset(1)),
-            range.getAsRange());
-
-  macroPair = SourceMgr.getExpansionRange(macroLsqrLoc);
-  range = Lexer::makeFileCharRange(
-                     CharSourceRange::getTokenRange(macroLsqrLoc, macroRsqrLoc),
-                     SourceMgr, LangOpts);
-  EXPECT_EQ(SourceRange(macroPair.first, macroPair.second.getLocWithOffset(1)),
-            range.getAsRange());
-
-  text = Lexer::getSourceText(
-          CharSourceRange::getTokenRange(SourceRange(macroLsqrLoc, macroIdLoc)),
-          SourceMgr, LangOpts);
-  EXPECT_EQ(text, "[bar");
-
-
-  SourceLocation idLoc1 = toks[6].getLocation();
-  SourceLocation idLoc2 = toks[7].getLocation();
-  SourceLocation idLoc3 = toks[8].getLocation();
-  SourceLocation idLoc4 = toks[9].getLocation();
-  EXPECT_EQ("INN", Lexer::getImmediateMacroName(idLoc1, SourceMgr, LangOpts));
-  EXPECT_EQ("INN", Lexer::getImmediateMacroName(idLoc2, SourceMgr, LangOpts));
-  EXPECT_EQ("NOF2", Lexer::getImmediateMacroName(idLoc3, SourceMgr, LangOpts));
-  EXPECT_EQ("N", Lexer::getImmediateMacroName(idLoc4, SourceMgr, LangOpts));
-}
-
-} // anonymous namespace

Modified: trunk/contrib/llvm/tools/clang/unittests/Lex/PPCallbacksTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Lex/PPCallbacksTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Lex/PPCallbacksTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,250 +0,0 @@
-//===- unittests/Lex/PPCallbacksTest.cpp - PPCallbacks tests ------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===--------------------------------------------------------------===//
-
-#include "clang/Lex/Preprocessor.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Basic/TargetInfo.h"
-#include "clang/Basic/TargetOptions.h"
-#include "clang/Lex/HeaderSearch.h"
-#include "clang/Lex/HeaderSearchOptions.h"
-#include "clang/Lex/ModuleLoader.h"
-#include "clang/Lex/PreprocessorOptions.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/Support/PathV2.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-using namespace llvm::sys;
-using namespace clang;
-
-namespace {
-
-// Stub out module loading.
-class VoidModuleLoader : public ModuleLoader {
-  virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, 
-                                      ModuleIdPath Path,
-                                      Module::NameVisibilityKind Visibility,
-                                      bool IsInclusionDirective) {
-    return ModuleLoadResult();
-  }
-
-  virtual void makeModuleVisible(Module *Mod,
-                                 Module::NameVisibilityKind Visibility,
-                                 SourceLocation ImportLoc,
-                                 bool Complain) { }
-};
-
-// Stub to collect data from InclusionDirective callbacks.
-class InclusionDirectiveCallbacks : public PPCallbacks {
-public:
-  void InclusionDirective(SourceLocation HashLoc, 
-    const Token &IncludeTok, 
-    StringRef FileName, 
-    bool IsAngled, 
-    CharSourceRange FilenameRange, 
-    const FileEntry *File, 
-    StringRef SearchPath, 
-    StringRef RelativePath, 
-    const Module *Imported) {
-      this->HashLoc = HashLoc;
-      this->IncludeTok = IncludeTok;
-      this->FileName = FileName.str();
-      this->IsAngled = IsAngled;
-      this->FilenameRange = FilenameRange;
-      this->File = File;
-      this->SearchPath = SearchPath.str();
-      this->RelativePath = RelativePath.str();
-      this->Imported = Imported;
-  }
-
-  SourceLocation HashLoc;
-  Token IncludeTok;
-  SmallString<16> FileName;
-  bool IsAngled;
-  CharSourceRange FilenameRange;
-  const FileEntry* File;
-  SmallString<16> SearchPath;
-  SmallString<16> RelativePath;
-  const Module* Imported;
-};
-
-// PPCallbacks test fixture.
-class PPCallbacksTest : public ::testing::Test {
-protected:
-  PPCallbacksTest()
-    : FileMgr(FileMgrOpts),
-      DiagID(new DiagnosticIDs()),
-      DiagOpts(new DiagnosticOptions()),
-      Diags(DiagID, DiagOpts.getPtr(), new IgnoringDiagConsumer()),
-      SourceMgr(Diags, FileMgr) {
-    TargetOpts = new TargetOptions();
-    TargetOpts->Triple = "x86_64-apple-darwin11.1.0";
-    Target = TargetInfo::CreateTargetInfo(Diags, &*TargetOpts);
-  }
-
-  FileSystemOptions FileMgrOpts;
-  FileManager FileMgr;
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID;
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
-  DiagnosticsEngine Diags;
-  SourceManager SourceMgr;
-  LangOptions LangOpts;
-  IntrusiveRefCntPtr<TargetOptions> TargetOpts;
-  IntrusiveRefCntPtr<TargetInfo> Target;
-
-  // Register a header path as a known file and add its location
-  // to search path.
-  void AddFakeHeader(HeaderSearch& HeaderInfo, const char* HeaderPath, 
-    bool IsSystemHeader) {
-      // Tell FileMgr about header.
-      FileMgr.getVirtualFile(HeaderPath, 0, 0);
-
-      // Add header's parent path to search path.
-      StringRef SearchPath = path::parent_path(HeaderPath);
-      const DirectoryEntry *DE = FileMgr.getDirectory(SearchPath);
-      DirectoryLookup DL(DE, SrcMgr::C_User, false);
-      HeaderInfo.AddSearchPath(DL, IsSystemHeader);
-  }
-
-  // Get the raw source string of the range.
-  StringRef GetSourceString(CharSourceRange Range) {
-    const char* B = SourceMgr.getCharacterData(Range.getBegin());
-    const char* E = SourceMgr.getCharacterData(Range.getEnd());
-
-    return StringRef(B, E - B);
-  }
-
-  // Run lexer over SourceText and collect FilenameRange from
-  // the InclusionDirective callback.
-  CharSourceRange InclusionDirectiveFilenameRange(const char* SourceText, 
-      const char* HeaderPath, bool SystemHeader) {
-    MemoryBuffer *Buf = MemoryBuffer::getMemBuffer(SourceText);
-    (void)SourceMgr.createMainFileIDForMemBuffer(Buf);
-
-    VoidModuleLoader ModLoader;
-
-    IntrusiveRefCntPtr<HeaderSearchOptions> HSOpts = new HeaderSearchOptions();
-    HeaderSearch HeaderInfo(HSOpts, FileMgr, Diags, LangOpts, Target.getPtr());
-    AddFakeHeader(HeaderInfo, HeaderPath, SystemHeader);
-
-    IntrusiveRefCntPtr<PreprocessorOptions> PPOpts = new PreprocessorOptions();
-    Preprocessor PP(PPOpts, Diags, LangOpts,
-      Target.getPtr(),
-      SourceMgr, HeaderInfo, ModLoader,
-      /*IILookup =*/ 0,
-      /*OwnsHeaderSearch =*/false,
-      /*DelayInitialization =*/ false);
-    InclusionDirectiveCallbacks* Callbacks = new InclusionDirectiveCallbacks;
-    PP.addPPCallbacks(Callbacks); // Takes ownership.
-
-    // Lex source text.
-    PP.EnterMainSourceFile();
-
-    while (true) {
-      Token Tok;
-      PP.Lex(Tok);
-      if (Tok.is(tok::eof))
-        break;
-    }
-
-    // Callbacks have been executed at this point -- return filename range.
-    return Callbacks->FilenameRange;
-  }
-};
-
-TEST_F(PPCallbacksTest, QuotedFilename) {
-  const char* Source =
-    "#include \"quoted.h\"\n";
-
-  CharSourceRange Range =
-    InclusionDirectiveFilenameRange(Source, "/quoted.h", false);
-
-  ASSERT_EQ("\"quoted.h\"", GetSourceString(Range));
-}
-
-TEST_F(PPCallbacksTest, AngledFilename) {
-  const char* Source =
-    "#include <angled.h>\n";
-
-  CharSourceRange Range =
-    InclusionDirectiveFilenameRange(Source, "/angled.h", true);
-
-  ASSERT_EQ("<angled.h>", GetSourceString(Range));
-}
-
-TEST_F(PPCallbacksTest, QuotedInMacro) {
-  const char* Source =
-    "#define MACRO_QUOTED \"quoted.h\"\n"
-    "#include MACRO_QUOTED\n";
-
-  CharSourceRange Range =
-    InclusionDirectiveFilenameRange(Source, "/quoted.h", false);
-
-  ASSERT_EQ("\"quoted.h\"", GetSourceString(Range));
-}
-
-TEST_F(PPCallbacksTest, AngledInMacro) {
-  const char* Source =
-    "#define MACRO_ANGLED <angled.h>\n"
-    "#include MACRO_ANGLED\n";
-
-  CharSourceRange Range =
-    InclusionDirectiveFilenameRange(Source, "/angled.h", true);
-
-  ASSERT_EQ("<angled.h>", GetSourceString(Range));
-}
-
-TEST_F(PPCallbacksTest, StringizedMacroArgument) {
-  const char* Source =
-    "#define MACRO_STRINGIZED(x) #x\n"
-    "#include MACRO_STRINGIZED(quoted.h)\n";
-
-  CharSourceRange Range =
-    InclusionDirectiveFilenameRange(Source, "/quoted.h", false);
-
-  ASSERT_EQ("\"quoted.h\"", GetSourceString(Range));
-}
-
-TEST_F(PPCallbacksTest, ConcatenatedMacroArgument) {
-  const char* Source =
-    "#define MACRO_ANGLED <angled.h>\n"
-    "#define MACRO_CONCAT(x, y) x ## _ ## y\n"
-    "#include MACRO_CONCAT(MACRO, ANGLED)\n";
-
-  CharSourceRange Range =
-    InclusionDirectiveFilenameRange(Source, "/angled.h", false);
-
-  ASSERT_EQ("<angled.h>", GetSourceString(Range));
-}
-
-TEST_F(PPCallbacksTest, TrigraphFilename) {
-  const char* Source =
-    "#include \"tri\?\?-graph.h\"\n";
-
-  CharSourceRange Range =
-    InclusionDirectiveFilenameRange(Source, "/tri~graph.h", false);
-
-  ASSERT_EQ("\"tri\?\?-graph.h\"", GetSourceString(Range));
-}
-
-TEST_F(PPCallbacksTest, TrigraphInMacro) {
-  const char* Source =
-    "#define MACRO_TRIGRAPH \"tri\?\?-graph.h\"\n"
-    "#include MACRO_TRIGRAPH\n";
-
-  CharSourceRange Range =
-    InclusionDirectiveFilenameRange(Source, "/tri~graph.h", false);
-
-  ASSERT_EQ("\"tri\?\?-graph.h\"", GetSourceString(Range));
-}
-
-} // anonoymous namespace

Modified: trunk/contrib/llvm/tools/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,150 +0,0 @@
-//===- unittests/Lex/PPConditionalDirectiveRecordTest.cpp-PP directive tests =//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Lex/PPConditionalDirectiveRecord.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Basic/TargetInfo.h"
-#include "clang/Basic/TargetOptions.h"
-#include "clang/Lex/HeaderSearch.h"
-#include "clang/Lex/HeaderSearchOptions.h"
-#include "clang/Lex/ModuleLoader.h"
-#include "clang/Lex/Preprocessor.h"
-#include "clang/Lex/PreprocessorOptions.h"
-#include "llvm/Config/config.h"
-#include "gtest/gtest.h"
-
-using namespace llvm;
-using namespace clang;
-
-namespace {
-
-// The test fixture.
-class PPConditionalDirectiveRecordTest : public ::testing::Test {
-protected:
-  PPConditionalDirectiveRecordTest()
-    : FileMgr(FileMgrOpts),
-      DiagID(new DiagnosticIDs()),
-      Diags(DiagID, new DiagnosticOptions, new IgnoringDiagConsumer()),
-      SourceMgr(Diags, FileMgr),
-      TargetOpts(new TargetOptions)
-  {
-    TargetOpts->Triple = "x86_64-apple-darwin11.1.0";
-    Target = TargetInfo::CreateTargetInfo(Diags, &*TargetOpts);
-  }
-
-  FileSystemOptions FileMgrOpts;
-  FileManager FileMgr;
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagID;
-  DiagnosticsEngine Diags;
-  SourceManager SourceMgr;
-  LangOptions LangOpts;
-  IntrusiveRefCntPtr<TargetOptions> TargetOpts;
-  IntrusiveRefCntPtr<TargetInfo> Target;
-};
-
-class VoidModuleLoader : public ModuleLoader {
-  virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, 
-                                      ModuleIdPath Path,
-                                      Module::NameVisibilityKind Visibility,
-                                      bool IsInclusionDirective) {
-    return ModuleLoadResult();
-  }
-
-  virtual void makeModuleVisible(Module *Mod,
-                                 Module::NameVisibilityKind Visibility,
-                                 SourceLocation ImportLoc,
-                                 bool Complain) { }
-};
-
-TEST_F(PPConditionalDirectiveRecordTest, PPRecAPI) {
-  const char *source =
-      "0 1\n"
-      "#if 1\n"
-      "2\n"
-      "#ifndef BB\n"
-      "3 4\n"
-      "#else\n"
-      "#endif\n"
-      "5\n"
-      "#endif\n"
-      "6\n"
-      "#if 1\n"
-      "7\n"
-      "#if 1\n"
-      "#endif\n"
-      "8\n"
-      "#endif\n"
-      "9\n";
-
-  MemoryBuffer *buf = MemoryBuffer::getMemBuffer(source);
-  SourceMgr.createMainFileIDForMemBuffer(buf);
-
-  VoidModuleLoader ModLoader;
-  HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, 
-                          Target.getPtr());
-  Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts,Target.getPtr(),
-                  SourceMgr, HeaderInfo, ModLoader,
-                  /*IILookup =*/ 0,
-                  /*OwnsHeaderSearch =*/false,
-                  /*DelayInitialization =*/ false);
-  PPConditionalDirectiveRecord *
-    PPRec = new PPConditionalDirectiveRecord(SourceMgr);
-  PP.addPPCallbacks(PPRec);
-  PP.EnterMainSourceFile();
-
-  std::vector<Token> toks;
-  while (1) {
-    Token tok;
-    PP.Lex(tok);
-    if (tok.is(tok::eof))
-      break;
-    toks.push_back(tok);
-  }
-
-  // Make sure we got the tokens that we expected.
-  ASSERT_EQ(10U, toks.size());
-  
-  EXPECT_FALSE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[0].getLocation(), toks[1].getLocation())));
-  EXPECT_TRUE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[0].getLocation(), toks[2].getLocation())));
-  EXPECT_FALSE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[3].getLocation(), toks[4].getLocation())));
-  EXPECT_TRUE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[1].getLocation(), toks[5].getLocation())));
-  EXPECT_TRUE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[2].getLocation(), toks[6].getLocation())));
-  EXPECT_FALSE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[2].getLocation(), toks[5].getLocation())));
-  EXPECT_FALSE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[0].getLocation(), toks[6].getLocation())));
-  EXPECT_TRUE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[2].getLocation(), toks[8].getLocation())));
-  EXPECT_FALSE(PPRec->rangeIntersectsConditionalDirective(
-                    SourceRange(toks[0].getLocation(), toks[9].getLocation())));
-
-  EXPECT_TRUE(PPRec->areInDifferentConditionalDirectiveRegion(
-                    toks[0].getLocation(), toks[2].getLocation()));
-  EXPECT_FALSE(PPRec->areInDifferentConditionalDirectiveRegion(
-                    toks[3].getLocation(), toks[4].getLocation()));
-  EXPECT_TRUE(PPRec->areInDifferentConditionalDirectiveRegion(
-                    toks[1].getLocation(), toks[5].getLocation()));
-  EXPECT_TRUE(PPRec->areInDifferentConditionalDirectiveRegion(
-                    toks[2].getLocation(), toks[0].getLocation()));
-  EXPECT_FALSE(PPRec->areInDifferentConditionalDirectiveRegion(
-                    toks[4].getLocation(), toks[3].getLocation()));
-  EXPECT_TRUE(PPRec->areInDifferentConditionalDirectiveRegion(
-                    toks[5].getLocation(), toks[1].getLocation()));
-}
-
-} // anonymous namespace

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/CommentHandlerTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/CommentHandlerTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/CommentHandlerTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,221 +0,0 @@
-//===- unittest/Tooling/CommentHandlerTest.cpp -----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "TestVisitor.h"
-#include "clang/Lex/Preprocessor.h"
-
-namespace clang {
-
-struct Comment {
-  Comment(const std::string &Message, unsigned Line, unsigned Col)
-    : Message(Message), Line(Line), Col(Col) { }
-
-  std::string Message;
-  unsigned Line, Col;
-};
-
-class CommentVerifier;
-typedef std::vector<Comment> CommentList;
-
-class CommentHandlerVisitor : public TestVisitor<CommentHandlerVisitor>,
-                              public CommentHandler {
-  typedef TestVisitor<CommentHandlerVisitor> base;
-
-public:
-  CommentHandlerVisitor() : base(), PP(0), Verified(false) { }
-
-  ~CommentHandlerVisitor() {
-    EXPECT_TRUE(Verified) << "CommentVerifier not accessed";
-  }
-
-  virtual bool HandleComment(Preprocessor &PP, SourceRange Loc) {
-    assert(&PP == this->PP && "Preprocessor changed!");
-
-    SourceLocation Start = Loc.getBegin();
-    SourceManager &SM = PP.getSourceManager();
-    std::string C(SM.getCharacterData(Start),
-                  SM.getCharacterData(Loc.getEnd()));
-
-    bool Invalid;
-    unsigned CLine = SM.getSpellingLineNumber(Start, &Invalid);
-    EXPECT_TRUE(!Invalid) << "Invalid line number on comment " << C;
-
-    unsigned CCol = SM.getSpellingColumnNumber(Start, &Invalid);
-    EXPECT_TRUE(!Invalid) << "Invalid column number on comment " << C;
-
-    Comments.push_back(Comment(C, CLine, CCol));
-    return false;
-  }
-
-  CommentVerifier GetVerifier();
-
-protected:
-  virtual ASTFrontendAction* CreateTestAction() {
-    return new CommentHandlerAction(this);
-  }
-
-private:
-  Preprocessor *PP;
-  CommentList Comments;
-  bool Verified;
-
-  class CommentHandlerAction : public base::TestAction {
-  public:
-    CommentHandlerAction(CommentHandlerVisitor *Visitor)
-        : TestAction(Visitor) { }
-
-    virtual bool BeginSourceFileAction(CompilerInstance &CI,
-                                       StringRef FileName) {
-      CommentHandlerVisitor *V =
-          static_cast<CommentHandlerVisitor*>(this->Visitor);
-      V->PP = &CI.getPreprocessor();
-      V->PP->addCommentHandler(V);
-      return true;
-    }
-
-    virtual void EndSourceFileAction() {
-      CommentHandlerVisitor *V =
-          static_cast<CommentHandlerVisitor*>(this->Visitor);
-      V->PP->removeCommentHandler(V);
-    }
-  };
-};
-
-class CommentVerifier {
-  CommentList::const_iterator Current;
-  CommentList::const_iterator End;
-  Preprocessor *PP;
-
-public:
-  CommentVerifier(const CommentList &Comments, Preprocessor *PP)
-      : Current(Comments.begin()), End(Comments.end()), PP(PP)
-    { }
-
-  ~CommentVerifier() {
-    if (Current != End) {
-      EXPECT_TRUE(Current == End) << "Unexpected comment \""
-        << Current->Message << "\" at line " << Current->Line << ", column "
-        << Current->Col;
-    }
-  }
-
-  void Match(const char *Message, unsigned Line, unsigned Col) {
-    EXPECT_TRUE(Current != End) << "Comment " << Message << " not found";
-    if (Current == End) return;
-
-    const Comment &C = *Current;
-    EXPECT_TRUE(C.Message == Message && C.Line == Line && C.Col == Col)
-      <<   "Expected comment \"" << Message
-      << "\" at line " << Line   << ", column " << Col
-      << "\nActual comment   \"" << C.Message
-      << "\" at line " << C.Line << ", column " << C.Col;
-
-    ++Current;
-  }
-};
-
-CommentVerifier CommentHandlerVisitor::GetVerifier() {
-  Verified = true;
-  return CommentVerifier(Comments, PP);
-}
-
-
-TEST(CommentHandlerTest, BasicTest1) {
-  CommentHandlerVisitor Visitor;
-  EXPECT_TRUE(Visitor.runOver("class X {}; int main() { return 0; }"));
-  CommentVerifier Verifier = Visitor.GetVerifier();
-}
-
-TEST(CommentHandlerTest, BasicTest2) {
-  CommentHandlerVisitor Visitor;
-  EXPECT_TRUE(Visitor.runOver(
-        "class X {}; int main() { /* comment */ return 0; }"));
-  CommentVerifier Verifier = Visitor.GetVerifier();
-  Verifier.Match("/* comment */", 1, 26);
-}
-
-TEST(CommentHandlerTest, BasicTest3) {
-  CommentHandlerVisitor Visitor;
-  EXPECT_TRUE(Visitor.runOver(
-        "class X {}; // comment 1\n"
-        "int main() {\n"
-        "  // comment 2\n"
-        "  return 0;\n"
-        "}"));
-  CommentVerifier Verifier = Visitor.GetVerifier();
-  Verifier.Match("// comment 1", 1, 13);
-  Verifier.Match("// comment 2", 3, 3);
-}
-
-TEST(CommentHandlerTest, IfBlock1) {
-  CommentHandlerVisitor Visitor;
-  EXPECT_TRUE(Visitor.runOver(
-        "#if 0\n"
-        "// ignored comment\n"
-        "#endif\n"
-        "// visible comment\n"));
-  CommentVerifier Verifier = Visitor.GetVerifier();
-  Verifier.Match("// visible comment", 4, 1);
-}
-
-TEST(CommentHandlerTest, IfBlock2) {
-  CommentHandlerVisitor Visitor;
-  EXPECT_TRUE(Visitor.runOver(
-        "#define TEST        // visible_1\n"
-        "#ifndef TEST        // visible_2\n"
-        "                    // ignored_3\n"
-        "# ifdef UNDEFINED   // ignored_4\n"
-        "# endif             // ignored_5\n"
-        "#elif defined(TEST) // visible_6\n"
-        "# if 1              // visible_7\n"
-        "                    // visible_8\n"
-        "# else              // visible_9\n"
-        "                    // ignored_10\n"
-        "#  ifndef TEST      // ignored_11\n"
-        "#  endif            // ignored_12\n"
-        "# endif             // visible_13\n"
-        "#endif              // visible_14\n"));
-
-  CommentVerifier Verifier = Visitor.GetVerifier();
-  Verifier.Match("// visible_1", 1, 21);
-  Verifier.Match("// visible_2", 2, 21);
-  Verifier.Match("// visible_6", 6, 21);
-  Verifier.Match("// visible_7", 7, 21);
-  Verifier.Match("// visible_8", 8, 21);
-  Verifier.Match("// visible_9", 9, 21);
-  Verifier.Match("// visible_13", 13, 21);
-  Verifier.Match("// visible_14", 14, 21);
-}
-
-TEST(CommentHandlerTest, IfBlock3) {
-  const char *Source =
-        "/* commented out ...\n"
-        "#if 0\n"
-        "// enclosed\n"
-        "#endif */";
-
-  CommentHandlerVisitor Visitor;
-  EXPECT_TRUE(Visitor.runOver(Source));
-  CommentVerifier Verifier = Visitor.GetVerifier();
-  Verifier.Match(Source, 1, 1);
-}
-
-TEST(CommentHandlerTest, PPDirectives) {
-  CommentHandlerVisitor Visitor;
-  EXPECT_TRUE(Visitor.runOver(
-        "#warning Y   // ignored_1\n" // #warning takes whole line as message
-        "#undef MACRO // visible_2\n"
-        "#line 1      // visible_3\n"));
-
-  CommentVerifier Verifier = Visitor.GetVerifier();
-  Verifier.Match("// visible_2", 2, 14);
-  Verifier.Match("// visible_3", 3, 14);
-}
-
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/CompilationDatabaseTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/CompilationDatabaseTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/CompilationDatabaseTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,488 +0,0 @@
-//===- unittest/Tooling/CompilationDatabaseTest.cpp -----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclGroup.h"
-#include "clang/Frontend/FrontendAction.h"
-#include "clang/Tooling/FileMatchTrie.h"
-#include "clang/Tooling/JSONCompilationDatabase.h"
-#include "clang/Tooling/Tooling.h"
-#include "llvm/Support/PathV2.h"
-#include "gtest/gtest.h"
-
-namespace clang {
-namespace tooling {
-
-static void expectFailure(StringRef JSONDatabase, StringRef Explanation) {
-  std::string ErrorMessage;
-  EXPECT_EQ(NULL, JSONCompilationDatabase::loadFromBuffer(JSONDatabase,
-                                                          ErrorMessage))
-    << "Expected an error because of: " << Explanation;
-}
-
-TEST(JSONCompilationDatabase, ErrsOnInvalidFormat) {
-  expectFailure("", "Empty database");
-  expectFailure("{", "Invalid JSON");
-  expectFailure("[[]]", "Array instead of object");
-  expectFailure("[{\"a\":[]}]", "Array instead of value");
-  expectFailure("[{\"a\":\"b\"}]", "Unknown key");
-  expectFailure("[{[]:\"\"}]", "Incorrectly typed entry");
-  expectFailure("[{}]", "Empty entry");
-  expectFailure("[{\"directory\":\"\",\"command\":\"\"}]", "Missing file");
-  expectFailure("[{\"directory\":\"\",\"file\":\"\"}]", "Missing command");
-  expectFailure("[{\"command\":\"\",\"file\":\"\"}]", "Missing directory");
-}
-
-static std::vector<std::string> getAllFiles(StringRef JSONDatabase,
-                                            std::string &ErrorMessage) {
-  OwningPtr<CompilationDatabase> Database(
-      JSONCompilationDatabase::loadFromBuffer(JSONDatabase, ErrorMessage));
-  if (!Database) {
-    ADD_FAILURE() << ErrorMessage;
-    return std::vector<std::string>();
-  }
-  return Database->getAllFiles();
-}
-
-static std::vector<CompileCommand> getAllCompileCommands(StringRef JSONDatabase,
-                                                    std::string &ErrorMessage) {
-  OwningPtr<CompilationDatabase> Database(
-      JSONCompilationDatabase::loadFromBuffer(JSONDatabase, ErrorMessage));
-  if (!Database) {
-    ADD_FAILURE() << ErrorMessage;
-    return std::vector<CompileCommand>();
-  }
-  return Database->getAllCompileCommands();
-}
-
-TEST(JSONCompilationDatabase, GetAllFiles) {
-  std::string ErrorMessage;
-  EXPECT_EQ(std::vector<std::string>(),
-            getAllFiles("[]", ErrorMessage)) << ErrorMessage;
-
-  std::vector<std::string> expected_files;
-  SmallString<16> PathStorage;
-  llvm::sys::path::native("//net/dir/file1", PathStorage);
-  expected_files.push_back(PathStorage.str());
-  llvm::sys::path::native("//net/dir/file2", PathStorage);
-  expected_files.push_back(PathStorage.str());
-  EXPECT_EQ(expected_files, getAllFiles(
-    "[{\"directory\":\"//net/dir\","
-      "\"command\":\"command\","
-      "\"file\":\"file1\"},"
-    " {\"directory\":\"//net/dir\","
-      "\"command\":\"command\","
-      "\"file\":\"file2\"}]",
-    ErrorMessage)) << ErrorMessage;
-}
-
-TEST(JSONCompilationDatabase, GetAllCompileCommands) {
-  std::string ErrorMessage;
-  EXPECT_EQ(0u,
-            getAllCompileCommands("[]", ErrorMessage).size()) << ErrorMessage;
-
-  StringRef Directory1("//net/dir1");
-  StringRef FileName1("file1");
-  StringRef Command1("command1");
-  StringRef Directory2("//net/dir2");
-  StringRef FileName2("file1");
-  StringRef Command2("command1");
-
-  std::vector<CompileCommand> Commands = getAllCompileCommands(
-      ("[{\"directory\":\"" + Directory1 + "\"," +
-             "\"command\":\"" + Command1 + "\","
-             "\"file\":\"" + FileName1 + "\"},"
-       " {\"directory\":\"" + Directory2 + "\"," +
-             "\"command\":\"" + Command2 + "\","
-             "\"file\":\"" + FileName2 + "\"}]").str(),
-      ErrorMessage);
-  EXPECT_EQ(2U, Commands.size()) << ErrorMessage;
-  EXPECT_EQ(Directory1, Commands[0].Directory) << ErrorMessage;
-  ASSERT_EQ(1u, Commands[0].CommandLine.size());
-  EXPECT_EQ(Command1, Commands[0].CommandLine[0]) << ErrorMessage;
-  EXPECT_EQ(Directory2, Commands[1].Directory) << ErrorMessage;
-  ASSERT_EQ(1u, Commands[1].CommandLine.size());
-  EXPECT_EQ(Command2, Commands[1].CommandLine[0]) << ErrorMessage;
-}
-
-static CompileCommand findCompileArgsInJsonDatabase(StringRef FileName,
-                                                    StringRef JSONDatabase,
-                                                    std::string &ErrorMessage) {
-  OwningPtr<CompilationDatabase> Database(
-      JSONCompilationDatabase::loadFromBuffer(JSONDatabase, ErrorMessage));
-  if (!Database)
-    return CompileCommand();
-  std::vector<CompileCommand> Commands = Database->getCompileCommands(FileName);
-  EXPECT_LE(Commands.size(), 1u);
-  if (Commands.empty())
-    return CompileCommand();
-  return Commands[0];
-}
-
-struct FakeComparator : public PathComparator {
-  virtual ~FakeComparator() {}
-  virtual bool equivalent(StringRef FileA, StringRef FileB) const {
-    return FileA.equals_lower(FileB);
-  }
-};
-
-class FileMatchTrieTest : public ::testing::Test {
-protected:
-  FileMatchTrieTest() : Trie(new FakeComparator()) {}
-
-  StringRef find(StringRef Path) {
-    llvm::raw_string_ostream ES(Error);
-    return Trie.findEquivalent(Path, ES);
-  }
-
-  FileMatchTrie Trie;
-  std::string Error;
-};
-
-TEST_F(FileMatchTrieTest, InsertingRelativePath) {
-  Trie.insert("//net/path/file.cc");
-  Trie.insert("file.cc");
-  EXPECT_EQ("//net/path/file.cc", find("//net/path/file.cc"));
-}
-
-TEST_F(FileMatchTrieTest, MatchingRelativePath) {
-  EXPECT_EQ("", find("file.cc"));
-}
-
-TEST_F(FileMatchTrieTest, ReturnsBestResults) {
-  Trie.insert("//net/d/c/b.cc");
-  Trie.insert("//net/d/b/b.cc");
-  EXPECT_EQ("//net/d/b/b.cc", find("//net/d/b/b.cc"));
-}
-
-TEST_F(FileMatchTrieTest, HandlesSymlinks) {
-  Trie.insert("//net/AA/file.cc");
-  EXPECT_EQ("//net/AA/file.cc", find("//net/aa/file.cc"));
-}
-
-TEST_F(FileMatchTrieTest, ReportsSymlinkAmbiguity) {
-  Trie.insert("//net/Aa/file.cc");
-  Trie.insert("//net/aA/file.cc");
-  EXPECT_TRUE(find("//net/aa/file.cc").empty());
-  EXPECT_EQ("Path is ambiguous", Error);
-}
-
-TEST_F(FileMatchTrieTest, LongerMatchingSuffixPreferred) {
-  Trie.insert("//net/src/Aa/file.cc");
-  Trie.insert("//net/src/aA/file.cc");
-  Trie.insert("//net/SRC/aa/file.cc");
-  EXPECT_EQ("//net/SRC/aa/file.cc", find("//net/src/aa/file.cc"));
-}
-
-TEST_F(FileMatchTrieTest, EmptyTrie) {
-  EXPECT_TRUE(find("//net/some/path").empty());
-}
-
-TEST_F(FileMatchTrieTest, NoResult) {
-  Trie.insert("//net/somepath/otherfile.cc");
-  Trie.insert("//net/otherpath/somefile.cc");
-  EXPECT_EQ("", find("//net/somepath/somefile.cc"));
-}
-
-TEST_F(FileMatchTrieTest, RootElementDifferent) {
-  Trie.insert("//net/path/file.cc");
-  Trie.insert("//net/otherpath/file.cc");
-  EXPECT_EQ("//net/path/file.cc", find("//net/path/file.cc"));
-}
-
-TEST_F(FileMatchTrieTest, CannotResolveRelativePath) {
-  EXPECT_EQ("", find("relative-path.cc"));
-  EXPECT_EQ("Cannot resolve relative paths", Error);
-}
-
-TEST(findCompileArgsInJsonDatabase, FindsNothingIfEmpty) {
-  std::string ErrorMessage;
-  CompileCommand NotFound = findCompileArgsInJsonDatabase(
-    "a-file.cpp", "", ErrorMessage);
-  EXPECT_TRUE(NotFound.CommandLine.empty()) << ErrorMessage;
-  EXPECT_TRUE(NotFound.Directory.empty()) << ErrorMessage;
-}
-
-TEST(findCompileArgsInJsonDatabase, ReadsSingleEntry) {
-  StringRef Directory("//net/some/directory");
-  StringRef FileName("//net/path/to/a-file.cpp");
-  StringRef Command("//net/path/to/compiler and some arguments");
-  std::string ErrorMessage;
-  CompileCommand FoundCommand = findCompileArgsInJsonDatabase(
-    FileName,
-    ("[{\"directory\":\"" + Directory + "\"," +
-       "\"command\":\"" + Command + "\","
-       "\"file\":\"" + FileName + "\"}]").str(),
-    ErrorMessage);
-  EXPECT_EQ(Directory, FoundCommand.Directory) << ErrorMessage;
-  ASSERT_EQ(4u, FoundCommand.CommandLine.size()) << ErrorMessage;
-  EXPECT_EQ("//net/path/to/compiler",
-            FoundCommand.CommandLine[0]) << ErrorMessage;
-  EXPECT_EQ("and", FoundCommand.CommandLine[1]) << ErrorMessage;
-  EXPECT_EQ("some", FoundCommand.CommandLine[2]) << ErrorMessage;
-  EXPECT_EQ("arguments", FoundCommand.CommandLine[3]) << ErrorMessage;
-
-  CompileCommand NotFound = findCompileArgsInJsonDatabase(
-    "a-file.cpp",
-    ("[{\"directory\":\"" + Directory + "\"," +
-       "\"command\":\"" + Command + "\","
-       "\"file\":\"" + FileName + "\"}]").str(),
-    ErrorMessage);
-  EXPECT_TRUE(NotFound.Directory.empty()) << ErrorMessage;
-  EXPECT_TRUE(NotFound.CommandLine.empty()) << ErrorMessage;
-}
-
-TEST(findCompileArgsInJsonDatabase, ReadsCompileCommandLinesWithSpaces) {
-  StringRef Directory("//net/some/directory");
-  StringRef FileName("//net/path/to/a-file.cpp");
-  StringRef Command("\\\"//net/path to compiler\\\" \\\"and an argument\\\"");
-  std::string ErrorMessage;
-  CompileCommand FoundCommand = findCompileArgsInJsonDatabase(
-    FileName,
-    ("[{\"directory\":\"" + Directory + "\"," +
-       "\"command\":\"" + Command + "\","
-       "\"file\":\"" + FileName + "\"}]").str(),
-    ErrorMessage);
-  ASSERT_EQ(2u, FoundCommand.CommandLine.size());
-  EXPECT_EQ("//net/path to compiler",
-            FoundCommand.CommandLine[0]) << ErrorMessage;
-  EXPECT_EQ("and an argument", FoundCommand.CommandLine[1]) << ErrorMessage;
-}
-
-TEST(findCompileArgsInJsonDatabase, ReadsDirectoryWithSpaces) {
-  StringRef Directory("//net/some directory / with spaces");
-  StringRef FileName("//net/path/to/a-file.cpp");
-  StringRef Command("a command");
-  std::string ErrorMessage;
-  CompileCommand FoundCommand = findCompileArgsInJsonDatabase(
-    FileName,
-    ("[{\"directory\":\"" + Directory + "\"," +
-       "\"command\":\"" + Command + "\","
-       "\"file\":\"" + FileName + "\"}]").str(),
-    ErrorMessage);
-  EXPECT_EQ(Directory, FoundCommand.Directory) << ErrorMessage;
-}
-
-TEST(findCompileArgsInJsonDatabase, FindsEntry) {
-  StringRef Directory("//net/directory");
-  StringRef FileName("file");
-  StringRef Command("command");
-  std::string JsonDatabase = "[";
-  for (int I = 0; I < 10; ++I) {
-    if (I > 0) JsonDatabase += ",";
-    JsonDatabase +=
-      ("{\"directory\":\"" + Directory + Twine(I) + "\"," +
-        "\"command\":\"" + Command + Twine(I) + "\","
-        "\"file\":\"" + FileName + Twine(I) + "\"}").str();
-  }
-  JsonDatabase += "]";
-  std::string ErrorMessage;
-  CompileCommand FoundCommand = findCompileArgsInJsonDatabase(
-    "//net/directory4/file4", JsonDatabase, ErrorMessage);
-  EXPECT_EQ("//net/directory4", FoundCommand.Directory) << ErrorMessage;
-  ASSERT_EQ(1u, FoundCommand.CommandLine.size()) << ErrorMessage;
-  EXPECT_EQ("command4", FoundCommand.CommandLine[0]) << ErrorMessage;
-}
-
-static std::vector<std::string> unescapeJsonCommandLine(StringRef Command) {
-  std::string JsonDatabase =
-    ("[{\"directory\":\"//net/root\", \"file\":\"test\", \"command\": \"" +
-     Command + "\"}]").str();
-  std::string ErrorMessage;
-  CompileCommand FoundCommand = findCompileArgsInJsonDatabase(
-    "//net/root/test", JsonDatabase, ErrorMessage);
-  EXPECT_TRUE(ErrorMessage.empty()) << ErrorMessage;
-  return FoundCommand.CommandLine;
-}
-
-TEST(unescapeJsonCommandLine, ReturnsEmptyArrayOnEmptyString) {
-  std::vector<std::string> Result = unescapeJsonCommandLine("");
-  EXPECT_TRUE(Result.empty());
-}
-
-TEST(unescapeJsonCommandLine, SplitsOnSpaces) {
-  std::vector<std::string> Result = unescapeJsonCommandLine("a b c");
-  ASSERT_EQ(3ul, Result.size());
-  EXPECT_EQ("a", Result[0]);
-  EXPECT_EQ("b", Result[1]);
-  EXPECT_EQ("c", Result[2]);
-}
-
-TEST(unescapeJsonCommandLine, MungesMultipleSpaces) {
-  std::vector<std::string> Result = unescapeJsonCommandLine("   a   b   ");
-  ASSERT_EQ(2ul, Result.size());
-  EXPECT_EQ("a", Result[0]);
-  EXPECT_EQ("b", Result[1]);
-}
-
-TEST(unescapeJsonCommandLine, UnescapesBackslashCharacters) {
-  std::vector<std::string> Backslash = unescapeJsonCommandLine("a\\\\\\\\");
-  ASSERT_EQ(1ul, Backslash.size());
-  EXPECT_EQ("a\\", Backslash[0]);
-  std::vector<std::string> Quote = unescapeJsonCommandLine("a\\\\\\\"");
-  ASSERT_EQ(1ul, Quote.size());
-  EXPECT_EQ("a\"", Quote[0]);
-}
-
-TEST(unescapeJsonCommandLine, DoesNotMungeSpacesBetweenQuotes) {
-  std::vector<std::string> Result = unescapeJsonCommandLine("\\\"  a  b  \\\"");
-  ASSERT_EQ(1ul, Result.size());
-  EXPECT_EQ("  a  b  ", Result[0]);
-}
-
-TEST(unescapeJsonCommandLine, AllowsMultipleQuotedArguments) {
-  std::vector<std::string> Result = unescapeJsonCommandLine(
-      "  \\\" a \\\"  \\\" b \\\"  ");
-  ASSERT_EQ(2ul, Result.size());
-  EXPECT_EQ(" a ", Result[0]);
-  EXPECT_EQ(" b ", Result[1]);
-}
-
-TEST(unescapeJsonCommandLine, AllowsEmptyArgumentsInQuotes) {
-  std::vector<std::string> Result = unescapeJsonCommandLine(
-      "\\\"\\\"\\\"\\\"");
-  ASSERT_EQ(1ul, Result.size());
-  EXPECT_TRUE(Result[0].empty()) << Result[0];
-}
-
-TEST(unescapeJsonCommandLine, ParsesEscapedQuotesInQuotedStrings) {
-  std::vector<std::string> Result = unescapeJsonCommandLine(
-      "\\\"\\\\\\\"\\\"");
-  ASSERT_EQ(1ul, Result.size());
-  EXPECT_EQ("\"", Result[0]);
-}
-
-TEST(unescapeJsonCommandLine, ParsesMultipleArgumentsWithEscapedCharacters) {
-  std::vector<std::string> Result = unescapeJsonCommandLine(
-      "  \\\\\\\"  \\\"a \\\\\\\" b \\\"     \\\"and\\\\\\\\c\\\"   \\\\\\\"");
-  ASSERT_EQ(4ul, Result.size());
-  EXPECT_EQ("\"", Result[0]);
-  EXPECT_EQ("a \" b ", Result[1]);
-  EXPECT_EQ("and\\c", Result[2]);
-  EXPECT_EQ("\"", Result[3]);
-}
-
-TEST(unescapeJsonCommandLine, ParsesStringsWithoutSpacesIntoSingleArgument) {
-  std::vector<std::string> QuotedNoSpaces = unescapeJsonCommandLine(
-      "\\\"a\\\"\\\"b\\\"");
-  ASSERT_EQ(1ul, QuotedNoSpaces.size());
-  EXPECT_EQ("ab", QuotedNoSpaces[0]);
-
-  std::vector<std::string> MixedNoSpaces = unescapeJsonCommandLine(
-      "\\\"a\\\"bcd\\\"ef\\\"\\\"\\\"\\\"g\\\"");
-  ASSERT_EQ(1ul, MixedNoSpaces.size());
-  EXPECT_EQ("abcdefg", MixedNoSpaces[0]);
-}
-
-TEST(unescapeJsonCommandLine, ParsesQuotedStringWithoutClosingQuote) {
-  std::vector<std::string> Unclosed = unescapeJsonCommandLine("\\\"abc");
-  ASSERT_EQ(1ul, Unclosed.size());
-  EXPECT_EQ("abc", Unclosed[0]);
-
-  std::vector<std::string> Empty = unescapeJsonCommandLine("\\\"");
-  ASSERT_EQ(1ul, Empty.size());
-  EXPECT_EQ("", Empty[0]);
-}
-
-TEST(unescapeJsonCommandLine, ParsesSingleQuotedString) {
-  std::vector<std::string> Args = unescapeJsonCommandLine("a'\\\\b \\\"c\\\"'");
-  ASSERT_EQ(1ul, Args.size());
-  EXPECT_EQ("a\\b \"c\"", Args[0]);
-}
-
-TEST(FixedCompilationDatabase, ReturnsFixedCommandLine) {
-  std::vector<std::string> CommandLine;
-  CommandLine.push_back("one");
-  CommandLine.push_back("two");
-  FixedCompilationDatabase Database(".", CommandLine);
-  std::vector<CompileCommand> Result =
-    Database.getCompileCommands("source");
-  ASSERT_EQ(1ul, Result.size());
-  std::vector<std::string> ExpectedCommandLine(1, "clang-tool");
-  ExpectedCommandLine.insert(ExpectedCommandLine.end(),
-                             CommandLine.begin(), CommandLine.end());
-  ExpectedCommandLine.push_back("source");
-  EXPECT_EQ(".", Result[0].Directory);
-  EXPECT_EQ(ExpectedCommandLine, Result[0].CommandLine);
-}
-
-TEST(FixedCompilationDatabase, GetAllFiles) {
-  std::vector<std::string> CommandLine;
-  CommandLine.push_back("one");
-  CommandLine.push_back("two");
-  FixedCompilationDatabase Database(".", CommandLine);
-
-  EXPECT_EQ(0ul, Database.getAllFiles().size());
-}
-
-TEST(FixedCompilationDatabase, GetAllCompileCommands) {
-  std::vector<std::string> CommandLine;
-  CommandLine.push_back("one");
-  CommandLine.push_back("two");
-  FixedCompilationDatabase Database(".", CommandLine);
-
-  EXPECT_EQ(0ul, Database.getAllCompileCommands().size());
-}
-
-TEST(ParseFixedCompilationDatabase, ReturnsNullOnEmptyArgumentList) {
-  int Argc = 0;
-  OwningPtr<FixedCompilationDatabase> Database(
-      FixedCompilationDatabase::loadFromCommandLine(Argc, NULL));
-  EXPECT_FALSE(Database);
-  EXPECT_EQ(0, Argc);
-}
-
-TEST(ParseFixedCompilationDatabase, ReturnsNullWithoutDoubleDash) {
-  int Argc = 2;
-  const char *Argv[] = { "1", "2" };
-  OwningPtr<FixedCompilationDatabase> Database(
-      FixedCompilationDatabase::loadFromCommandLine(Argc, Argv));
-  EXPECT_FALSE(Database);
-  EXPECT_EQ(2, Argc);
-}
-
-TEST(ParseFixedCompilationDatabase, ReturnsArgumentsAfterDoubleDash) {
-  int Argc = 5;
-  const char *Argv[] = { "1", "2", "--\0no-constant-folding", "3", "4" };
-  OwningPtr<FixedCompilationDatabase> Database(
-      FixedCompilationDatabase::loadFromCommandLine(Argc, Argv));
-  ASSERT_TRUE(Database);
-  std::vector<CompileCommand> Result =
-    Database->getCompileCommands("source");
-  ASSERT_EQ(1ul, Result.size());
-  ASSERT_EQ(".", Result[0].Directory);
-  std::vector<std::string> CommandLine;
-  CommandLine.push_back("clang-tool");
-  CommandLine.push_back("3");
-  CommandLine.push_back("4");
-  CommandLine.push_back("source");
-  ASSERT_EQ(CommandLine, Result[0].CommandLine);
-  EXPECT_EQ(2, Argc);
-}
-
-TEST(ParseFixedCompilationDatabase, ReturnsEmptyCommandLine) {
-  int Argc = 3;
-  const char *Argv[] = { "1", "2", "--\0no-constant-folding" };
-  OwningPtr<FixedCompilationDatabase> Database(
-      FixedCompilationDatabase::loadFromCommandLine(Argc, Argv));
-  ASSERT_TRUE(Database);
-  std::vector<CompileCommand> Result =
-    Database->getCompileCommands("source");
-  ASSERT_EQ(1ul, Result.size());
-  ASSERT_EQ(".", Result[0].Directory);
-  std::vector<std::string> CommandLine;
-  CommandLine.push_back("clang-tool");
-  CommandLine.push_back("source");
-  ASSERT_EQ(CommandLine, Result[0].CommandLine);
-  EXPECT_EQ(2, Argc);
-}
-
-} // end namespace tooling
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,464 +0,0 @@
-//===- unittest/Tooling/RecursiveASTVisitorTest.cpp -----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "TestVisitor.h"
-
-namespace clang {
-
-class TypeLocVisitor : public ExpectedLocationVisitor<TypeLocVisitor> {
-public:
-  bool VisitTypeLoc(TypeLoc TypeLocation) {
-    Match(TypeLocation.getType().getAsString(), TypeLocation.getBeginLoc());
-    return true;
-  }
-};
-
-class DeclRefExprVisitor : public ExpectedLocationVisitor<DeclRefExprVisitor> {
-public:
-  bool VisitDeclRefExpr(DeclRefExpr *Reference) {
-    Match(Reference->getNameInfo().getAsString(), Reference->getLocation());
-    return true;
-  }
-};
-
-class VarDeclVisitor : public ExpectedLocationVisitor<VarDeclVisitor> {
-public:
- bool VisitVarDecl(VarDecl *Variable) {
-   Match(Variable->getNameAsString(), Variable->getLocStart());
-   return true;
- }
-};
-
-class CXXMemberCallVisitor
-  : public ExpectedLocationVisitor<CXXMemberCallVisitor> {
-public:
-  bool VisitCXXMemberCallExpr(CXXMemberCallExpr *Call) {
-    Match(Call->getMethodDecl()->getQualifiedNameAsString(),
-          Call->getLocStart());
-    return true;
-  }
-};
-
-class NamedDeclVisitor
-  : public ExpectedLocationVisitor<NamedDeclVisitor> {
-public:
-  bool VisitNamedDecl(NamedDecl *Decl) {
-    std::string NameWithTemplateArgs;
-    llvm::raw_string_ostream OS(NameWithTemplateArgs);
-    Decl->getNameForDiagnostic(OS,
-                               Decl->getASTContext().getPrintingPolicy(),
-                               true);
-    Match(OS.str(), Decl->getLocation());
-    return true;
-  }
-};
-
-class CXXOperatorCallExprTraverser
-  : public ExpectedLocationVisitor<CXXOperatorCallExprTraverser> {
-public:
-  // Use Traverse, not Visit, to check that data recursion optimization isn't
-  // bypassing the call of this function.
-  bool TraverseCXXOperatorCallExpr(CXXOperatorCallExpr *CE) {
-    Match(getOperatorSpelling(CE->getOperator()), CE->getExprLoc());
-    return ExpectedLocationVisitor<CXXOperatorCallExprTraverser>::
-        TraverseCXXOperatorCallExpr(CE);
-  }
-};
-
-class ParenExprVisitor : public ExpectedLocationVisitor<ParenExprVisitor> {
-public:
-  bool VisitParenExpr(ParenExpr *Parens) {
-    Match("", Parens->getExprLoc());
-    return true;
-  }
-};
-
-class TemplateArgumentLocTraverser
-  : public ExpectedLocationVisitor<TemplateArgumentLocTraverser> {
-public:
-  bool TraverseTemplateArgumentLoc(const TemplateArgumentLoc &ArgLoc) {
-    std::string ArgStr;
-    llvm::raw_string_ostream Stream(ArgStr);
-    const TemplateArgument &Arg = ArgLoc.getArgument();
-
-    Arg.print(Context->getPrintingPolicy(), Stream);
-    Match(Stream.str(), ArgLoc.getLocation());
-    return ExpectedLocationVisitor<TemplateArgumentLocTraverser>::
-      TraverseTemplateArgumentLoc(ArgLoc);
-  }
-};
-
-class CXXBoolLiteralExprVisitor 
-  : public ExpectedLocationVisitor<CXXBoolLiteralExprVisitor> {
-public:
-  bool VisitCXXBoolLiteralExpr(CXXBoolLiteralExpr *BE) {
-    if (BE->getValue())
-      Match("true", BE->getLocation());
-    else
-      Match("false", BE->getLocation());
-    return true;
-  }
-};
-
-TEST(RecursiveASTVisitor, VisitsBaseClassDeclarations) {
-  TypeLocVisitor Visitor;
-  Visitor.ExpectMatch("class X", 1, 30);
-  EXPECT_TRUE(Visitor.runOver("class X {}; class Y : public X {};"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCXXBaseSpecifiersOfForwardDeclaredClass) {
-  TypeLocVisitor Visitor;
-  Visitor.ExpectMatch("class X", 3, 18);
-  EXPECT_TRUE(Visitor.runOver(
-    "class Y;\n"
-    "class X {};\n"
-    "class Y : public X {};"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCXXBaseSpecifiersWithIncompleteInnerClass) {
-  TypeLocVisitor Visitor;
-  Visitor.ExpectMatch("class X", 2, 18);
-  EXPECT_TRUE(Visitor.runOver(
-    "class X {};\n"
-    "class Y : public X { class Z; };"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCXXBaseSpecifiersOfSelfReferentialType) {
-  TypeLocVisitor Visitor;
-  Visitor.ExpectMatch("X<class Y>", 2, 18);
-  EXPECT_TRUE(Visitor.runOver(
-    "template<typename T> class X {};\n"
-    "class Y : public X<Y> {};"));
-}
-
-TEST(RecursiveASTVisitor, VisitsBaseClassTemplateArguments) {
-  DeclRefExprVisitor Visitor;
-  Visitor.ExpectMatch("x", 2, 3);
-  EXPECT_TRUE(Visitor.runOver(
-    "void x(); template <void (*T)()> class X {};\nX<x> y;"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCXXForRangeStmtRange) {
-  DeclRefExprVisitor Visitor;
-  Visitor.ExpectMatch("x", 2, 25);
-  Visitor.ExpectMatch("x", 2, 30);
-  EXPECT_TRUE(Visitor.runOver(
-    "int x[5];\n"
-    "void f() { for (int i : x) { x[0] = 1; } }"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCXXForRangeStmtLoopVariable) {
-  VarDeclVisitor Visitor;
-  Visitor.ExpectMatch("i", 2, 17);
-  EXPECT_TRUE(Visitor.runOver(
-    "int x[5];\n"
-    "void f() { for (int i : x) {} }"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCallExpr) {
-  DeclRefExprVisitor Visitor;
-  Visitor.ExpectMatch("x", 1, 22);
-  EXPECT_TRUE(Visitor.runOver(
-    "void x(); void y() { x(); }"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCallInTemplateInstantiation) {
-  CXXMemberCallVisitor Visitor;
-  Visitor.ExpectMatch("Y::x", 3, 3);
-  EXPECT_TRUE(Visitor.runOver(
-    "struct Y { void x(); };\n"
-    "template<typename T> void y(T t) {\n"
-    "  t.x();\n"
-    "}\n"
-    "void foo() { y<Y>(Y()); }"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCallInNestedFunctionTemplateInstantiation) {
-  CXXMemberCallVisitor Visitor;
-  Visitor.ExpectMatch("Y::x", 4, 5);
-  EXPECT_TRUE(Visitor.runOver(
-    "struct Y { void x(); };\n"
-    "template<typename T> struct Z {\n"
-    "  template<typename U> static void f() {\n"
-    "    T().x();\n"
-    "  }\n"
-    "};\n"
-    "void foo() { Z<Y>::f<int>(); }"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCallInNestedClassTemplateInstantiation) {
-  CXXMemberCallVisitor Visitor;
-  Visitor.ExpectMatch("A::x", 5, 7);
-  EXPECT_TRUE(Visitor.runOver(
-    "template <typename T1> struct X {\n"
-    "  template <typename T2> struct Y {\n"
-    "    void f() {\n"
-    "      T2 y;\n"
-    "      y.x();\n"
-    "    }\n"
-    "  };\n"
-    "};\n"
-    "struct A { void x(); };\n"
-    "int main() {\n"
-    "  (new X<A>::Y<A>())->f();\n"
-    "}"));
-}
-
-/* FIXME: According to Richard Smith this is a bug in the AST.
-TEST(RecursiveASTVisitor, VisitsBaseClassTemplateArgumentsInInstantiation) {
-  DeclRefExprVisitor Visitor;
-  Visitor.ExpectMatch("x", 3, 43);
-  EXPECT_TRUE(Visitor.runOver(
-    "template <typename T> void x();\n"
-    "template <void (*T)()> class X {};\n"
-    "template <typename T> class Y : public X< x<T> > {};\n"
-    "Y<int> y;"));
-}
-*/
-
-TEST(RecursiveASTVisitor, VisitsCallInPartialTemplateSpecialization) {
-  CXXMemberCallVisitor Visitor;
-  Visitor.ExpectMatch("A::x", 6, 20);
-  EXPECT_TRUE(Visitor.runOver(
-    "template <typename T1> struct X {\n"
-    "  template <typename T2, bool B> struct Y { void g(); };\n"
-    "};\n"
-    "template <typename T1> template <typename T2>\n"
-    "struct X<T1>::Y<T2, true> {\n"
-    "  void f() { T2 y; y.x(); }\n"
-    "};\n"
-    "struct A { void x(); };\n"
-    "int main() {\n"
-    "  (new X<A>::Y<A, true>())->f();\n"
-    "}\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsExplicitTemplateSpecialization) {
-  CXXMemberCallVisitor Visitor;
-  Visitor.ExpectMatch("A::f", 4, 5);
-  EXPECT_TRUE(Visitor.runOver(
-    "struct A {\n"
-    "  void f() const {}\n"
-    "  template<class T> void g(const T& t) const {\n"
-    "    t.f();\n"
-    "  }\n"
-    "};\n"
-    "template void A::g(const A& a) const;\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsPartialTemplateSpecialization) {
-  // From cfe-commits/Week-of-Mon-20100830/033998.html
-  // Contrary to the approach suggested in that email, we visit all
-  // specializations when we visit the primary template.  Visiting them when we
-  // visit the associated specialization is problematic for specializations of
-  // template members of class templates.
-  NamedDeclVisitor Visitor;
-  Visitor.ExpectMatch("A<bool>", 1, 26);
-  Visitor.ExpectMatch("A<char *>", 2, 26);
-  EXPECT_TRUE(Visitor.runOver(
-    "template <class T> class A {};\n"
-    "template <class T> class A<T*> {};\n"
-    "A<bool> ab;\n"
-    "A<char*> acp;\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsUndefinedClassTemplateSpecialization) {
-  NamedDeclVisitor Visitor;
-  Visitor.ExpectMatch("A<int>", 1, 29);
-  EXPECT_TRUE(Visitor.runOver(
-    "template<typename T> struct A;\n"
-    "A<int> *p;\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsNestedUndefinedClassTemplateSpecialization) {
-  NamedDeclVisitor Visitor;
-  Visitor.ExpectMatch("A<int>::B<char>", 2, 31);
-  EXPECT_TRUE(Visitor.runOver(
-    "template<typename T> struct A {\n"
-    "  template<typename U> struct B;\n"
-    "};\n"
-    "A<int>::B<char> *p;\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsUndefinedFunctionTemplateSpecialization) {
-  NamedDeclVisitor Visitor;
-  Visitor.ExpectMatch("A<int>", 1, 26);
-  EXPECT_TRUE(Visitor.runOver(
-    "template<typename T> int A();\n"
-    "int k = A<int>();\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsNestedUndefinedFunctionTemplateSpecialization) {
-  NamedDeclVisitor Visitor;
-  Visitor.ExpectMatch("A<int>::B<char>", 2, 35);
-  EXPECT_TRUE(Visitor.runOver(
-    "template<typename T> struct A {\n"
-    "  template<typename U> static int B();\n"
-    "};\n"
-    "int k = A<int>::B<char>();\n"));
-}
-
-TEST(RecursiveASTVisitor, NoRecursionInSelfFriend) {
-  // From cfe-commits/Week-of-Mon-20100830/033977.html
-  NamedDeclVisitor Visitor;
-  Visitor.ExpectMatch("vector_iterator<int>", 2, 7);
-  EXPECT_TRUE(Visitor.runOver(
-    "template<typename Container>\n"
-    "class vector_iterator {\n"
-    "    template <typename C> friend class vector_iterator;\n"
-    "};\n"
-    "vector_iterator<int> it_int;\n"));
-}
-
-TEST(RecursiveASTVisitor, TraversesOverloadedOperator) {
-  CXXOperatorCallExprTraverser Visitor;
-  Visitor.ExpectMatch("()", 4, 9);
-  EXPECT_TRUE(Visitor.runOver(
-    "struct A {\n"
-    "  int operator()();\n"
-    "} a;\n"
-    "int k = a();\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsParensDuringDataRecursion) {
-  ParenExprVisitor Visitor;
-  Visitor.ExpectMatch("", 1, 9);
-  EXPECT_TRUE(Visitor.runOver("int k = (4) + 9;\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsClassTemplateNonTypeParmDefaultArgument) {
-  CXXBoolLiteralExprVisitor Visitor;
-  Visitor.ExpectMatch("true", 2, 19);
-  EXPECT_TRUE(Visitor.runOver(
-    "template<bool B> class X;\n"
-    "template<bool B = true> class Y;\n"
-    "template<bool B> class Y {};\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsClassTemplateTypeParmDefaultArgument) {
-  TypeLocVisitor Visitor;
-  Visitor.ExpectMatch("class X", 2, 23);
-  EXPECT_TRUE(Visitor.runOver(
-    "class X;\n"
-    "template<typename T = X> class Y;\n"
-    "template<typename T> class Y {};\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsClassTemplateTemplateParmDefaultArgument) {
-  TemplateArgumentLocTraverser Visitor;
-  Visitor.ExpectMatch("X", 2, 40);
-  EXPECT_TRUE(Visitor.runOver(
-    "template<typename T> class X;\n"
-    "template<template <typename> class T = X> class Y;\n"
-    "template<template <typename> class T> class Y {};\n"));
-}
-
-// A visitor that visits implicit declarations and matches constructors.
-class ImplicitCtorVisitor
-    : public ExpectedLocationVisitor<ImplicitCtorVisitor> {
-public:
-  bool shouldVisitImplicitCode() const { return true; }
-
-  bool VisitCXXConstructorDecl(CXXConstructorDecl* Ctor) {
-    if (Ctor->isImplicit()) {  // Was not written in source code
-      if (const CXXRecordDecl* Class = Ctor->getParent()) {
-        Match(Class->getName(), Ctor->getLocation());
-      }
-    }
-    return true;
-  }
-};
-
-TEST(RecursiveASTVisitor, VisitsImplicitCopyConstructors) {
-  ImplicitCtorVisitor Visitor;
-  Visitor.ExpectMatch("Simple", 2, 8);
-  // Note: Clang lazily instantiates implicit declarations, so we need
-  // to use them in order to force them to appear in the AST.
-  EXPECT_TRUE(Visitor.runOver(
-      "struct WithCtor { WithCtor(); }; \n"
-      "struct Simple { Simple(); WithCtor w; }; \n"
-      "int main() { Simple s; Simple t(s); }\n"));
-}
-
-/// \brief A visitor that optionally includes implicit code and matches
-/// CXXConstructExpr.
-///
-/// The name recorded for the match is the name of the class whose constructor
-/// is invoked by the CXXConstructExpr, not the name of the class whose
-/// constructor the CXXConstructExpr is contained in.
-class ConstructExprVisitor
-    : public ExpectedLocationVisitor<ConstructExprVisitor> {
-public:
-  ConstructExprVisitor() : ShouldVisitImplicitCode(false) {}
-
-  bool shouldVisitImplicitCode() const { return ShouldVisitImplicitCode; }
-
-  void setShouldVisitImplicitCode(bool NewValue) {
-    ShouldVisitImplicitCode = NewValue;
-  }
-
-  bool VisitCXXConstructExpr(CXXConstructExpr* Expr) {
-    if (const CXXConstructorDecl* Ctor = Expr->getConstructor()) {
-      if (const CXXRecordDecl* Class = Ctor->getParent()) {
-        Match(Class->getName(), Expr->getLocation());
-      }
-    }
-    return true;
-  }
-
- private:
-  bool ShouldVisitImplicitCode;
-};
-
-TEST(RecursiveASTVisitor, CanVisitImplicitMemberInitializations) {
-  ConstructExprVisitor Visitor;
-  Visitor.setShouldVisitImplicitCode(true);
-  Visitor.ExpectMatch("WithCtor", 2, 8);
-  // Simple has a constructor that implicitly initializes 'w'.  Test
-  // that a visitor that visits implicit code visits that initialization.
-  // Note: Clang lazily instantiates implicit declarations, so we need
-  // to use them in order to force them to appear in the AST.
-  EXPECT_TRUE(Visitor.runOver(
-      "struct WithCtor { WithCtor(); }; \n"
-      "struct Simple { WithCtor w; }; \n"
-      "int main() { Simple s; }\n"));
-}
-
-// The same as CanVisitImplicitMemberInitializations, but checking that the
-// visits are omitted when the visitor does not include implicit code.
-TEST(RecursiveASTVisitor, CanSkipImplicitMemberInitializations) {
-  ConstructExprVisitor Visitor;
-  Visitor.setShouldVisitImplicitCode(false);
-  Visitor.DisallowMatch("WithCtor", 2, 8);
-  // Simple has a constructor that implicitly initializes 'w'.  Test
-  // that a visitor that skips implicit code skips that initialization.
-  // Note: Clang lazily instantiates implicit declarations, so we need
-  // to use them in order to force them to appear in the AST.
-  EXPECT_TRUE(Visitor.runOver(
-      "struct WithCtor { WithCtor(); }; \n"
-      "struct Simple { WithCtor w; }; \n"
-      "int main() { Simple s; }\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsExtension) {
-  DeclRefExprVisitor Visitor;
-  Visitor.ExpectMatch("s", 1, 24);
-  EXPECT_TRUE(Visitor.runOver(
-    "int s = __extension__ (s);\n"));
-}
-
-TEST(RecursiveASTVisitor, VisitsCompoundLiteralType) {
-  TypeLocVisitor Visitor;
-  Visitor.ExpectMatch("struct S", 1, 26);
-  EXPECT_TRUE(Visitor.runOver(
-      "int f() { return (struct S { int a; }){.a = 0}.a; }",
-      TypeLocVisitor::Lang_C));
-}
-
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/RefactoringCallbacksTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/RefactoringCallbacksTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/RefactoringCallbacksTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,100 +0,0 @@
-//===- unittest/Tooling/RefactoringCallbacksTest.cpp ----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Tooling/RefactoringCallbacks.h"
-#include "RewriterTestContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/ASTMatchers/ASTMatchers.h"
-#include "gtest/gtest.h"
-
-namespace clang {
-namespace tooling {
-
-using namespace ast_matchers;
-
-template <typename T>
-void expectRewritten(const std::string &Code,
-                     const std::string &Expected,
-                     const T &AMatcher,
-                     RefactoringCallback &Callback) {
-  MatchFinder Finder;
-  Finder.addMatcher(AMatcher, &Callback);
-  OwningPtr<tooling::FrontendActionFactory> Factory(
-      tooling::newFrontendActionFactory(&Finder));
-  ASSERT_TRUE(tooling::runToolOnCode(Factory->create(), Code))
-      << "Parsing error in \"" << Code << "\"";
-  RewriterTestContext Context;
-  FileID ID = Context.createInMemoryFile("input.cc", Code);
-  EXPECT_TRUE(tooling::applyAllReplacements(Callback.getReplacements(),
-                                            Context.Rewrite));
-  EXPECT_EQ(Expected, Context.getRewrittenText(ID));
-}
-
-TEST(RefactoringCallbacksTest, ReplacesStmtsWithString) {
-  std::string Code = "void f() { int i = 1; }";
-  std::string Expected = "void f() { ; }";
-  ReplaceStmtWithText Callback("id", ";");
-  expectRewritten(Code, Expected, id("id", declStmt()), Callback);
-}
-
-TEST(RefactoringCallbacksTest, ReplacesStmtsInCalledMacros) {
-  std::string Code = "#define A void f() { int i = 1; }\nA";
-  std::string Expected = "#define A void f() { ; }\nA";
-  ReplaceStmtWithText Callback("id", ";");
-  expectRewritten(Code, Expected, id("id", declStmt()), Callback);
-}
-
-TEST(RefactoringCallbacksTest, IgnoresStmtsInUncalledMacros) {
-  std::string Code = "#define A void f() { int i = 1; }";
-  std::string Expected = "#define A void f() { int i = 1; }";
-  ReplaceStmtWithText Callback("id", ";");
-  expectRewritten(Code, Expected, id("id", declStmt()), Callback);
-}
-
-TEST(RefactoringCallbacksTest, ReplacesInteger) {
-  std::string Code = "void f() { int i = 1; }";
-  std::string Expected = "void f() { int i = 2; }";
-  ReplaceStmtWithText Callback("id", "2");
-  expectRewritten(Code, Expected, id("id", expr(integerLiteral())),
-                  Callback);
-}
-
-TEST(RefactoringCallbacksTest, ReplacesStmtWithStmt) {
-  std::string Code = "void f() { int i = false ? 1 : i * 2; }";
-  std::string Expected = "void f() { int i = i * 2; }";
-  ReplaceStmtWithStmt Callback("always-false", "should-be");
-  expectRewritten(Code, Expected,
-      id("always-false", conditionalOperator(
-          hasCondition(boolLiteral(equals(false))),
-          hasFalseExpression(id("should-be", expr())))),
-      Callback);
-}
-
-TEST(RefactoringCallbacksTest, ReplacesIfStmt) {
-  std::string Code = "bool a; void f() { if (a) f(); else a = true; }";
-  std::string Expected = "bool a; void f() { f(); }";
-  ReplaceIfStmtWithItsBody Callback("id", true);
-  expectRewritten(Code, Expected,
-      id("id", ifStmt(
-          hasCondition(implicitCastExpr(hasSourceExpression(
-              declRefExpr(to(varDecl(hasName("a"))))))))),
-      Callback);
-}
-
-TEST(RefactoringCallbacksTest, RemovesEntireIfOnEmptyElse) {
-  std::string Code = "void f() { if (false) int i = 0; }";
-  std::string Expected = "void f() {  }";
-  ReplaceIfStmtWithItsBody Callback("id", false);
-  expectRewritten(Code, Expected,
-      id("id", ifStmt(hasCondition(boolLiteral(equals(false))))),
-      Callback);
-}
-
-} // end namespace ast_matchers
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/RefactoringTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/RefactoringTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/RefactoringTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,305 +0,0 @@
-//===- unittest/Tooling/RefactoringTest.cpp - Refactoring unit tests ------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "RewriterTestContext.h"
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclGroup.h"
-#include "clang/AST/RecursiveASTVisitor.h"
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendAction.h"
-#include "clang/Frontend/TextDiagnosticPrinter.h"
-#include "clang/Rewrite/Core/Rewriter.h"
-#include "clang/Tooling/Refactoring.h"
-#include "clang/Tooling/Tooling.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/Support/Path.h"
-#include "gtest/gtest.h"
-
-namespace clang {
-namespace tooling {
-
-class ReplacementTest : public ::testing::Test {
- protected:
-  Replacement createReplacement(SourceLocation Start, unsigned Length,
-                                llvm::StringRef ReplacementText) {
-    return Replacement(Context.Sources, Start, Length, ReplacementText);
-  }
-
-  RewriterTestContext Context;
-};
-
-TEST_F(ReplacementTest, CanDeleteAllText) {
-  FileID ID = Context.createInMemoryFile("input.cpp", "text");
-  SourceLocation Location = Context.getLocation(ID, 1, 1);
-  Replacement Replace(createReplacement(Location, 4, ""));
-  EXPECT_TRUE(Replace.apply(Context.Rewrite));
-  EXPECT_EQ("", Context.getRewrittenText(ID));
-}
-
-TEST_F(ReplacementTest, CanDeleteAllTextInTextWithNewlines) {
-  FileID ID = Context.createInMemoryFile("input.cpp", "line1\nline2\nline3");
-  SourceLocation Location = Context.getLocation(ID, 1, 1);
-  Replacement Replace(createReplacement(Location, 17, ""));
-  EXPECT_TRUE(Replace.apply(Context.Rewrite));
-  EXPECT_EQ("", Context.getRewrittenText(ID));
-}
-
-TEST_F(ReplacementTest, CanAddText) {
-  FileID ID = Context.createInMemoryFile("input.cpp", "");
-  SourceLocation Location = Context.getLocation(ID, 1, 1);
-  Replacement Replace(createReplacement(Location, 0, "result"));
-  EXPECT_TRUE(Replace.apply(Context.Rewrite));
-  EXPECT_EQ("result", Context.getRewrittenText(ID));
-}
-
-TEST_F(ReplacementTest, CanReplaceTextAtPosition) {
-  FileID ID = Context.createInMemoryFile("input.cpp",
-                                         "line1\nline2\nline3\nline4");
-  SourceLocation Location = Context.getLocation(ID, 2, 3);
-  Replacement Replace(createReplacement(Location, 12, "x"));
-  EXPECT_TRUE(Replace.apply(Context.Rewrite));
-  EXPECT_EQ("line1\nlixne4", Context.getRewrittenText(ID));
-}
-
-TEST_F(ReplacementTest, CanReplaceTextAtPositionMultipleTimes) {
-  FileID ID = Context.createInMemoryFile("input.cpp",
-                                         "line1\nline2\nline3\nline4");
-  SourceLocation Location1 = Context.getLocation(ID, 2, 3);
-  Replacement Replace1(createReplacement(Location1, 12, "x\ny\n"));
-  EXPECT_TRUE(Replace1.apply(Context.Rewrite));
-  EXPECT_EQ("line1\nlix\ny\nne4", Context.getRewrittenText(ID));
-
-  // Since the original source has not been modified, the (4, 4) points to the
-  // 'e' in the original content.
-  SourceLocation Location2 = Context.getLocation(ID, 4, 4);
-  Replacement Replace2(createReplacement(Location2, 1, "f"));
-  EXPECT_TRUE(Replace2.apply(Context.Rewrite));
-  EXPECT_EQ("line1\nlix\ny\nnf4", Context.getRewrittenText(ID));
-}
-
-TEST_F(ReplacementTest, ApplyFailsForNonExistentLocation) {
-  Replacement Replace("nonexistent-file.cpp", 0, 1, "");
-  EXPECT_FALSE(Replace.apply(Context.Rewrite));
-}
-
-TEST_F(ReplacementTest, CanRetrivePath) {
-  Replacement Replace("/path/to/file.cpp", 0, 1, "");
-  EXPECT_EQ("/path/to/file.cpp", Replace.getFilePath());
-}
-
-TEST_F(ReplacementTest, ReturnsInvalidPath) {
-  Replacement Replace1(Context.Sources, SourceLocation(), 0, "");
-  EXPECT_TRUE(Replace1.getFilePath().empty());
-
-  Replacement Replace2;
-  EXPECT_TRUE(Replace2.getFilePath().empty());
-}
-
-TEST_F(ReplacementTest, CanApplyReplacements) {
-  FileID ID = Context.createInMemoryFile("input.cpp",
-                                         "line1\nline2\nline3\nline4");
-  Replacements Replaces;
-  Replaces.insert(Replacement(Context.Sources, Context.getLocation(ID, 2, 1),
-                              5, "replaced"));
-  Replaces.insert(Replacement(Context.Sources, Context.getLocation(ID, 3, 1),
-                              5, "other"));
-  EXPECT_TRUE(applyAllReplacements(Replaces, Context.Rewrite));
-  EXPECT_EQ("line1\nreplaced\nother\nline4", Context.getRewrittenText(ID));
-}
-
-TEST_F(ReplacementTest, SkipsDuplicateReplacements) {
-  FileID ID = Context.createInMemoryFile("input.cpp",
-                                         "line1\nline2\nline3\nline4");
-  Replacements Replaces;
-  Replaces.insert(Replacement(Context.Sources, Context.getLocation(ID, 2, 1),
-                              5, "replaced"));
-  Replaces.insert(Replacement(Context.Sources, Context.getLocation(ID, 2, 1),
-                              5, "replaced"));
-  Replaces.insert(Replacement(Context.Sources, Context.getLocation(ID, 2, 1),
-                              5, "replaced"));
-  EXPECT_TRUE(applyAllReplacements(Replaces, Context.Rewrite));
-  EXPECT_EQ("line1\nreplaced\nline3\nline4", Context.getRewrittenText(ID));
-}
-
-TEST_F(ReplacementTest, ApplyAllFailsIfOneApplyFails) {
-  // This test depends on the value of the file name of an invalid source
-  // location being in the range ]a, z[.
-  FileID IDa = Context.createInMemoryFile("a.cpp", "text");
-  FileID IDz = Context.createInMemoryFile("z.cpp", "text");
-  Replacements Replaces;
-  Replaces.insert(Replacement(Context.Sources, Context.getLocation(IDa, 1, 1),
-                              4, "a"));
-  Replaces.insert(Replacement(Context.Sources, SourceLocation(),
-                              5, "2"));
-  Replaces.insert(Replacement(Context.Sources, Context.getLocation(IDz, 1, 1),
-                              4, "z"));
-  EXPECT_FALSE(applyAllReplacements(Replaces, Context.Rewrite));
-  EXPECT_EQ("a", Context.getRewrittenText(IDa));
-  EXPECT_EQ("z", Context.getRewrittenText(IDz));
-}
-
-class FlushRewrittenFilesTest : public ::testing::Test {
- public:
-  FlushRewrittenFilesTest() {
-    std::string ErrorInfo;
-    TemporaryDirectory = llvm::sys::Path::GetTemporaryDirectory(&ErrorInfo);
-    assert(ErrorInfo.empty());
-  }
-
-  ~FlushRewrittenFilesTest() {
-    std::string ErrorInfo;
-    TemporaryDirectory.eraseFromDisk(true, &ErrorInfo);
-    assert(ErrorInfo.empty());
-  }
-
-  FileID createFile(llvm::StringRef Name, llvm::StringRef Content) {
-    SmallString<1024> Path(TemporaryDirectory.str());
-    llvm::sys::path::append(Path, Name);
-    std::string ErrorInfo;
-    llvm::raw_fd_ostream OutStream(Path.c_str(),
-                                   ErrorInfo, llvm::raw_fd_ostream::F_Binary);
-    assert(ErrorInfo.empty());
-    OutStream << Content;
-    OutStream.close();
-    const FileEntry *File = Context.Files.getFile(Path);
-    assert(File != NULL);
-    return Context.Sources.createFileID(File, SourceLocation(), SrcMgr::C_User);
-  }
-
-  std::string getFileContentFromDisk(llvm::StringRef Name) {
-    SmallString<1024> Path(TemporaryDirectory.str());
-    llvm::sys::path::append(Path, Name);
-    // We need to read directly from the FileManager without relaying through
-    // a FileEntry, as otherwise we'd read through an already opened file
-    // descriptor, which might not see the changes made.
-    // FIXME: Figure out whether there is a way to get the SourceManger to
-    // reopen the file.
-    return Context.Files.getBufferForFile(Path, NULL)->getBuffer();
-  }
-
-  llvm::sys::Path TemporaryDirectory;
-  RewriterTestContext Context;
-};
-
-TEST_F(FlushRewrittenFilesTest, StoresChangesOnDisk) {
-  FileID ID = createFile("input.cpp", "line1\nline2\nline3\nline4");
-  Replacements Replaces;
-  Replaces.insert(Replacement(Context.Sources, Context.getLocation(ID, 2, 1),
-                              5, "replaced"));
-  EXPECT_TRUE(applyAllReplacements(Replaces, Context.Rewrite));
-  EXPECT_FALSE(Context.Rewrite.overwriteChangedFiles());
-  EXPECT_EQ("line1\nreplaced\nline3\nline4",
-            getFileContentFromDisk("input.cpp"));
-}
-
-namespace {
-template <typename T>
-class TestVisitor : public clang::RecursiveASTVisitor<T> {
-public:
-  bool runOver(StringRef Code) {
-    return runToolOnCode(new TestAction(this), Code);
-  }
-
-protected:
-  clang::SourceManager *SM;
-
-private:
-  class FindConsumer : public clang::ASTConsumer {
-  public:
-    FindConsumer(TestVisitor *Visitor) : Visitor(Visitor) {}
-
-    virtual void HandleTranslationUnit(clang::ASTContext &Context) {
-      Visitor->TraverseDecl(Context.getTranslationUnitDecl());
-    }
-
-  private:
-    TestVisitor *Visitor;
-  };
-
-  class TestAction : public clang::ASTFrontendAction {
-  public:
-    TestAction(TestVisitor *Visitor) : Visitor(Visitor) {}
-
-    virtual clang::ASTConsumer* CreateASTConsumer(
-        clang::CompilerInstance& compiler, llvm::StringRef dummy) {
-      Visitor->SM = &compiler.getSourceManager();
-      /// TestConsumer will be deleted by the framework calling us.
-      return new FindConsumer(Visitor);
-    }
-
-  private:
-    TestVisitor *Visitor;
-  };
-};
-} // end namespace
-
-void expectReplacementAt(const Replacement &Replace,
-                         StringRef File, unsigned Offset, unsigned Length) {
-  ASSERT_TRUE(Replace.isApplicable());
-  EXPECT_EQ(File, Replace.getFilePath());
-  EXPECT_EQ(Offset, Replace.getOffset());
-  EXPECT_EQ(Length, Replace.getLength());
-}
-
-class ClassDeclXVisitor : public TestVisitor<ClassDeclXVisitor> {
-public:
-  bool VisitCXXRecordDecl(CXXRecordDecl *Record) {
-    if (Record->getName() == "X") {
-      Replace = Replacement(*SM, Record, "");
-    }
-    return true;
-  }
-  Replacement Replace;
-};
-
-TEST(Replacement, CanBeConstructedFromNode) {
-  ClassDeclXVisitor ClassDeclX;
-  EXPECT_TRUE(ClassDeclX.runOver("     class X;"));
-  expectReplacementAt(ClassDeclX.Replace, "input.cc", 5, 7);
-}
-
-TEST(Replacement, ReplacesAtSpellingLocation) {
-  ClassDeclXVisitor ClassDeclX;
-  EXPECT_TRUE(ClassDeclX.runOver("#define A(Y) Y\nA(class X);"));
-  expectReplacementAt(ClassDeclX.Replace, "input.cc", 17, 7);
-}
-
-class CallToFVisitor : public TestVisitor<CallToFVisitor> {
-public:
-  bool VisitCallExpr(CallExpr *Call) {
-    if (Call->getDirectCallee()->getName() == "F") {
-      Replace = Replacement(*SM, Call, "");
-    }
-    return true;
-  }
-  Replacement Replace;
-};
-
-TEST(Replacement, FunctionCall) {
-  CallToFVisitor CallToF;
-  EXPECT_TRUE(CallToF.runOver("void F(); void G() { F(); }"));
-  expectReplacementAt(CallToF.Replace, "input.cc", 21, 3);
-}
-
-TEST(Replacement, TemplatedFunctionCall) {
-  CallToFVisitor CallToF;
-  EXPECT_TRUE(CallToF.runOver(
-        "template <typename T> void F(); void G() { F<int>(); }"));
-  expectReplacementAt(CallToF.Replace, "input.cc", 43, 8);
-}
-
-} // end namespace tooling
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/RewriterTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,37 +0,0 @@
-//===- unittest/Tooling/RewriterTest.cpp ----------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "RewriterTestContext.h"
-#include "gtest/gtest.h"
-
-namespace clang {
-
-TEST(Rewriter, OverwritesChangedFiles) {
-  RewriterTestContext Context;
-  FileID ID = Context.createOnDiskFile("t.cpp", "line1\nline2\nline3\nline4");
-  Context.Rewrite.ReplaceText(Context.getLocation(ID, 2, 1), 5, "replaced");
-  EXPECT_FALSE(Context.Rewrite.overwriteChangedFiles());
-  EXPECT_EQ("line1\nreplaced\nline3\nline4",
-            Context.getFileContentFromDisk("t.cpp")); 
-}
-
-TEST(Rewriter, ContinuesOverwritingFilesOnError) {
-  RewriterTestContext Context;
-  FileID FailingID = Context.createInMemoryFile("invalid/failing.cpp", "test");
-  Context.Rewrite.ReplaceText(Context.getLocation(FailingID, 1, 2), 1, "other");
-  FileID WorkingID = Context.createOnDiskFile(
-    "working.cpp", "line1\nline2\nline3\nline4");
-  Context.Rewrite.ReplaceText(Context.getLocation(WorkingID, 2, 1), 5,
-                              "replaced");
-  EXPECT_TRUE(Context.Rewrite.overwriteChangedFiles());
-  EXPECT_EQ("line1\nreplaced\nline3\nline4",
-            Context.getFileContentFromDisk("working.cpp")); 
-}
-
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/RewriterTestContext.h
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/RewriterTestContext.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/RewriterTestContext.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,128 +0,0 @@
-//===--- RewriterTestContext.h ----------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines a utility class for Rewriter related tests.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_REWRITER_TEST_CONTEXT_H
-#define LLVM_CLANG_REWRITER_TEST_CONTEXT_H
-
-#include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Basic/FileManager.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Frontend/TextDiagnosticPrinter.h"
-#include "clang/Rewrite/Core/Rewriter.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/raw_ostream.h"
-
-namespace clang {
-
-/// \brief A class that sets up a ready to use Rewriter.
-///
-/// Useful in unit tests that need a Rewriter. Creates all dependencies
-/// of a Rewriter with default values for testing and provides convenience
-/// methods, which help with writing tests that change files.
-class RewriterTestContext {
- public:
-  RewriterTestContext()
-      : DiagOpts(new DiagnosticOptions()),
-        Diagnostics(IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs),
-                    &*DiagOpts),
-        DiagnosticPrinter(llvm::outs(), &*DiagOpts),
-        Files((FileSystemOptions())),
-        Sources(Diagnostics, Files),
-        Rewrite(Sources, Options) {
-    Diagnostics.setClient(&DiagnosticPrinter, false);
-  }
-
-  ~RewriterTestContext() {
-    if (!TemporaryDirectory.empty()) {
-      uint32_t RemovedCount = 0;
-      llvm::sys::fs::remove_all(TemporaryDirectory.str(), RemovedCount);
-    }
-  }
-
-  FileID createInMemoryFile(StringRef Name, StringRef Content) {
-    const llvm::MemoryBuffer *Source =
-      llvm::MemoryBuffer::getMemBuffer(Content);
-    const FileEntry *Entry =
-      Files.getVirtualFile(Name, Source->getBufferSize(), 0);
-    Sources.overrideFileContents(Entry, Source, true);
-    assert(Entry != NULL);
-    return Sources.createFileID(Entry, SourceLocation(), SrcMgr::C_User);
-  }
-
-  FileID createOnDiskFile(StringRef Name, StringRef Content) {
-    if (TemporaryDirectory.empty()) {
-      int FD;
-      bool error =
-        llvm::sys::fs::unique_file("rewriter-test-%%-%%-%%-%%/anchor", FD,
-                                   TemporaryDirectory);
-      assert(!error); (void)error;
-      llvm::raw_fd_ostream Closer(FD, /*shouldClose=*/true);
-      TemporaryDirectory = llvm::sys::path::parent_path(TemporaryDirectory);
-    }
-    SmallString<1024> Path(TemporaryDirectory);
-    llvm::sys::path::append(Path, Name);
-    std::string ErrorInfo;
-    llvm::raw_fd_ostream OutStream(Path.c_str(),
-                                   ErrorInfo, llvm::raw_fd_ostream::F_Binary);
-    assert(ErrorInfo.empty());
-    OutStream << Content;
-    OutStream.close();
-    const FileEntry *File = Files.getFile(Path);
-    assert(File != NULL);
-    return Sources.createFileID(File, SourceLocation(), SrcMgr::C_User);
-  }
-
-  SourceLocation getLocation(FileID ID, unsigned Line, unsigned Column) {
-    SourceLocation Result = Sources.translateFileLineCol(
-        Sources.getFileEntryForID(ID), Line, Column);
-    assert(Result.isValid());
-    return Result;
-  }
-
-  std::string getRewrittenText(FileID ID) {
-    std::string Result;
-    llvm::raw_string_ostream OS(Result);
-    Rewrite.getEditBuffer(ID).write(OS);
-    OS.flush();
-    return Result;
-  }
-
-  std::string getFileContentFromDisk(StringRef Name) {
-    SmallString<1024> Path(TemporaryDirectory.str());
-    llvm::sys::path::append(Path, Name);
-    // We need to read directly from the FileManager without relaying through
-    // a FileEntry, as otherwise we'd read through an already opened file
-    // descriptor, which might not see the changes made.
-    // FIXME: Figure out whether there is a way to get the SourceManger to
-    // reopen the file.
-    return Files.getBufferForFile(Path, NULL)->getBuffer();
-  }
-
-  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
-  DiagnosticsEngine Diagnostics;
-  TextDiagnosticPrinter DiagnosticPrinter;
-  FileManager Files;
-  SourceManager Sources;
-  LangOptions Options;
-  Rewriter Rewrite;
-
-  // Will be set once on disk files are generated.
-  SmallString<128> TemporaryDirectory;
-};
-
-} // end namespace clang
-
-#endif

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/TestVisitor.h
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/TestVisitor.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/TestVisitor.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,216 +0,0 @@
-//===--- TestVisitor.h ------------------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-///
-/// \file
-/// \brief Defines utility templates for RecursiveASTVisitor related tests.
-///
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_TEST_VISITOR_H
-#define LLVM_CLANG_TEST_VISITOR_H
-
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/RecursiveASTVisitor.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendAction.h"
-#include "clang/Tooling/Tooling.h"
-#include "gtest/gtest.h"
-#include <vector>
-
-namespace clang {
-
-/// \brief Base class for simple RecursiveASTVisitor based tests.
-///
-/// This is a drop-in replacement for RecursiveASTVisitor itself, with the
-/// additional capability of running it over a snippet of code.
-///
-/// Visits template instantiations (but not implicit code) by default.
-template <typename T>
-class TestVisitor : public RecursiveASTVisitor<T> {
-public:
-  TestVisitor() { }
-
-  virtual ~TestVisitor() { }
-
-  enum Language { Lang_C, Lang_CXX };
-
-  /// \brief Runs the current AST visitor over the given code.
-  bool runOver(StringRef Code, Language L = Lang_CXX) {
-    std::vector<std::string> Args;
-    switch (L) {
-      case Lang_C: Args.push_back("-std=c99"); break;
-      case Lang_CXX: Args.push_back("-std=c++98"); break;
-    }
-    return tooling::runToolOnCodeWithArgs(CreateTestAction(), Code, Args);
-  }
-
-  bool shouldVisitTemplateInstantiations() const {
-    return true;
-  }
-
-protected:
-  virtual ASTFrontendAction* CreateTestAction() {
-    return new TestAction(this);
-  }
-
-  class FindConsumer : public ASTConsumer {
-  public:
-    FindConsumer(TestVisitor *Visitor) : Visitor(Visitor) {}
-
-    virtual void HandleTranslationUnit(clang::ASTContext &Context) {
-      Visitor->Context = &Context;
-      Visitor->TraverseDecl(Context.getTranslationUnitDecl());
-    }
-
-  private:
-    TestVisitor *Visitor;
-  };
-
-  class TestAction : public ASTFrontendAction {
-  public:
-    TestAction(TestVisitor *Visitor) : Visitor(Visitor) {}
-
-    virtual clang::ASTConsumer* CreateASTConsumer(
-        CompilerInstance&, llvm::StringRef dummy) {
-      /// TestConsumer will be deleted by the framework calling us.
-      return new FindConsumer(Visitor);
-    }
-
-  protected:
-    TestVisitor *Visitor;
-  };
-
-  ASTContext *Context;
-};
-
-/// \brief A RecursiveASTVisitor to check that certain matches are (or are
-/// not) observed during visitation.
-///
-/// This is a RecursiveASTVisitor for testing the RecursiveASTVisitor itself,
-/// and allows simple creation of test visitors running matches on only a small
-/// subset of the Visit* methods.
-template <typename T, template <typename> class Visitor = TestVisitor>
-class ExpectedLocationVisitor : public Visitor<T> {
-public:
-  /// \brief Expect 'Match' *not* to occur at the given 'Line' and 'Column'.
-  ///
-  /// Any number of matches can be disallowed.
-  void DisallowMatch(Twine Match, unsigned Line, unsigned Column) {
-    DisallowedMatches.push_back(MatchCandidate(Match, Line, Column));
-  }
-
-  /// \brief Expect 'Match' to occur at the given 'Line' and 'Column'.
-  ///
-  /// Any number of expected matches can be set by calling this repeatedly.
-  /// Each is expected to be matched exactly once.
-  void ExpectMatch(Twine Match, unsigned Line, unsigned Column) {
-    ExpectedMatches.push_back(ExpectedMatch(Match, Line, Column));
-  }
-
-  /// \brief Checks that all expected matches have been found.
-  virtual ~ExpectedLocationVisitor() {
-    for (typename std::vector<ExpectedMatch>::const_iterator
-             It = ExpectedMatches.begin(), End = ExpectedMatches.end();
-         It != End; ++It) {
-      It->ExpectFound();
-    }
-  }
-
-protected:
-  /// \brief Checks an actual match against expected and disallowed matches.
-  ///
-  /// Implementations are required to call this with appropriate values
-  /// for 'Name' during visitation.
-  void Match(StringRef Name, SourceLocation Location) {
-    const FullSourceLoc FullLocation = this->Context->getFullLoc(Location);
-
-    for (typename std::vector<MatchCandidate>::const_iterator
-             It = DisallowedMatches.begin(), End = DisallowedMatches.end();
-         It != End; ++It) {
-      EXPECT_FALSE(It->Matches(Name, FullLocation))
-          << "Matched disallowed " << *It;
-    }
-
-    for (typename std::vector<ExpectedMatch>::iterator
-             It = ExpectedMatches.begin(), End = ExpectedMatches.end();
-         It != End; ++It) {
-      It->UpdateFor(Name, FullLocation, this->Context->getSourceManager());
-    }
-  }
-
- private:
-  struct MatchCandidate {
-    std::string ExpectedName;
-    unsigned LineNumber;
-    unsigned ColumnNumber;
-
-    MatchCandidate(Twine Name, unsigned LineNumber, unsigned ColumnNumber)
-      : ExpectedName(Name.str()), LineNumber(LineNumber),
-        ColumnNumber(ColumnNumber) {
-    }
-
-    bool Matches(StringRef Name, FullSourceLoc const &Location) const {
-      return MatchesName(Name) && MatchesLocation(Location);
-    }
-
-    bool PartiallyMatches(StringRef Name, FullSourceLoc const &Location) const {
-      return MatchesName(Name) || MatchesLocation(Location);
-    }
-
-    bool MatchesName(StringRef Name) const {
-      return Name == ExpectedName;
-    }
-
-    bool MatchesLocation(FullSourceLoc const &Location) const {
-      return Location.isValid() &&
-          Location.getSpellingLineNumber() == LineNumber &&
-          Location.getSpellingColumnNumber() == ColumnNumber;
-    }
-
-    friend std::ostream &operator<<(std::ostream &Stream,
-                                    MatchCandidate const &Match) {
-      return Stream << Match.ExpectedName
-                    << " at " << Match.LineNumber << ":" << Match.ColumnNumber;
-    }
-  };
-
-  struct ExpectedMatch {
-    ExpectedMatch(Twine Name, unsigned LineNumber, unsigned ColumnNumber)
-      : Candidate(Name, LineNumber, ColumnNumber), Found(false) {}
-
-    void UpdateFor(StringRef Name, FullSourceLoc Location, SourceManager &SM) {
-      if (Candidate.Matches(Name, Location)) {
-        EXPECT_TRUE(!Found);
-        Found = true;
-      } else if (!Found && Candidate.PartiallyMatches(Name, Location)) {
-        llvm::raw_string_ostream Stream(PartialMatches);
-        Stream << ", partial match: \"" << Name << "\" at ";
-        Location.print(Stream, SM);
-      }
-    }
-
-    void ExpectFound() const {
-      EXPECT_TRUE(Found)
-          << "Expected \"" << Candidate.ExpectedName
-          << "\" at " << Candidate.LineNumber
-          << ":" << Candidate.ColumnNumber << PartialMatches;
-    }
-
-    MatchCandidate Candidate;
-    std::string PartialMatches;
-    bool Found;
-  };
-
-  std::vector<MatchCandidate> DisallowedMatches;
-  std::vector<ExpectedMatch> ExpectedMatches;
-};
-}
-
-#endif /* LLVM_CLANG_TEST_VISITOR_H */

Modified: trunk/contrib/llvm/tools/clang/unittests/Tooling/ToolingTest.cpp
===================================================================
--- trunk/contrib/llvm/tools/clang/unittests/Tooling/ToolingTest.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/unittests/Tooling/ToolingTest.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,190 +0,0 @@
-//===- unittest/Tooling/ToolingTest.cpp - Tooling unit tests --------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclGroup.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendAction.h"
-#include "clang/Frontend/FrontendActions.h"
-#include "clang/Tooling/CompilationDatabase.h"
-#include "clang/Tooling/Tooling.h"
-#include "gtest/gtest.h"
-#include <string>
-
-namespace clang {
-namespace tooling {
-
-namespace {
-/// Takes an ast consumer and returns it from CreateASTConsumer. This only
-/// works with single translation unit compilations.
-class TestAction : public clang::ASTFrontendAction {
- public:
-  /// Takes ownership of TestConsumer.
-  explicit TestAction(clang::ASTConsumer *TestConsumer)
-      : TestConsumer(TestConsumer) {}
-
- protected:
-  virtual clang::ASTConsumer* CreateASTConsumer(
-      clang::CompilerInstance& compiler, StringRef dummy) {
-    /// TestConsumer will be deleted by the framework calling us.
-    return TestConsumer;
-  }
-
- private:
-  clang::ASTConsumer * const TestConsumer;
-};
-
-class FindTopLevelDeclConsumer : public clang::ASTConsumer {
- public:
-  explicit FindTopLevelDeclConsumer(bool *FoundTopLevelDecl)
-      : FoundTopLevelDecl(FoundTopLevelDecl) {}
-  virtual bool HandleTopLevelDecl(clang::DeclGroupRef DeclGroup) {
-    *FoundTopLevelDecl = true;
-    return true;
-  }
- private:
-  bool * const FoundTopLevelDecl;
-};
-} // end namespace
-
-TEST(runToolOnCode, FindsNoTopLevelDeclOnEmptyCode) {
-  bool FoundTopLevelDecl = false;
-  EXPECT_TRUE(runToolOnCode(
-      new TestAction(new FindTopLevelDeclConsumer(&FoundTopLevelDecl)), ""));
-#if !defined(_MSC_VER)
-  EXPECT_FALSE(FoundTopLevelDecl);
-#else
-  // FIXME: LangOpts.MicrosoftExt appends "class type_info;"
-  EXPECT_TRUE(FoundTopLevelDecl);
-#endif
-}
-
-namespace {
-class FindClassDeclXConsumer : public clang::ASTConsumer {
- public:
-  FindClassDeclXConsumer(bool *FoundClassDeclX)
-      : FoundClassDeclX(FoundClassDeclX) {}
-  virtual bool HandleTopLevelDecl(clang::DeclGroupRef GroupRef) {
-    if (CXXRecordDecl* Record = dyn_cast<clang::CXXRecordDecl>(
-            *GroupRef.begin())) {
-      if (Record->getName() == "X") {
-        *FoundClassDeclX = true;
-      }
-    }
-    return true;
-  }
- private:
-  bool *FoundClassDeclX;
-};
-} // end namespace
-
-TEST(runToolOnCode, FindsClassDecl) {
-  bool FoundClassDeclX = false;
-  EXPECT_TRUE(runToolOnCode(new TestAction(
-      new FindClassDeclXConsumer(&FoundClassDeclX)), "class X;"));
-  EXPECT_TRUE(FoundClassDeclX);
-
-  FoundClassDeclX = false;
-  EXPECT_TRUE(runToolOnCode(new TestAction(
-      new FindClassDeclXConsumer(&FoundClassDeclX)), "class Y;"));
-  EXPECT_FALSE(FoundClassDeclX);
-}
-
-TEST(newFrontendActionFactory, CreatesFrontendActionFactoryFromType) {
-  OwningPtr<FrontendActionFactory> Factory(
-      newFrontendActionFactory<SyntaxOnlyAction>());
-  OwningPtr<FrontendAction> Action(Factory->create());
-  EXPECT_TRUE(Action.get() != NULL);
-}
-
-struct IndependentFrontendActionCreator {
-  ASTConsumer *newASTConsumer() {
-    return new FindTopLevelDeclConsumer(NULL);
-  }
-};
-
-TEST(newFrontendActionFactory, CreatesFrontendActionFactoryFromFactoryType) {
-  IndependentFrontendActionCreator Creator;
-  OwningPtr<FrontendActionFactory> Factory(
-      newFrontendActionFactory(&Creator));
-  OwningPtr<FrontendAction> Action(Factory->create());
-  EXPECT_TRUE(Action.get() != NULL);
-}
-
-TEST(ToolInvocation, TestMapVirtualFile) {
-  clang::FileManager Files((clang::FileSystemOptions()));
-  std::vector<std::string> Args;
-  Args.push_back("tool-executable");
-  Args.push_back("-Idef");
-  Args.push_back("-fsyntax-only");
-  Args.push_back("test.cpp");
-  clang::tooling::ToolInvocation Invocation(Args, new SyntaxOnlyAction, &Files);
-  Invocation.mapVirtualFile("test.cpp", "#include <abc>\n");
-  Invocation.mapVirtualFile("def/abc", "\n");
-  EXPECT_TRUE(Invocation.run());
-}
-
-struct VerifyEndCallback : public EndOfSourceFileCallback {
-  VerifyEndCallback() : Called(0), Matched(false) {}
-  virtual void run() {
-    ++Called;
-  }
-  ASTConsumer *newASTConsumer() {
-    return new FindTopLevelDeclConsumer(&Matched);
-  }
-  unsigned Called;
-  bool Matched;
-};
-
-#if !defined(_WIN32)
-TEST(newFrontendActionFactory, InjectsEndOfSourceFileCallback) {
-  VerifyEndCallback EndCallback;
-
-  FixedCompilationDatabase Compilations("/", std::vector<std::string>());
-  std::vector<std::string> Sources;
-  Sources.push_back("/a.cc");
-  Sources.push_back("/b.cc");
-  ClangTool Tool(Compilations, Sources);
-
-  Tool.mapVirtualFile("/a.cc", "void a() {}");
-  Tool.mapVirtualFile("/b.cc", "void b() {}");
-
-  Tool.run(newFrontendActionFactory(&EndCallback, &EndCallback));
-
-  EXPECT_TRUE(EndCallback.Matched);
-  EXPECT_EQ(2u, EndCallback.Called);
-}
-#endif
-
-struct SkipBodyConsumer : public clang::ASTConsumer {
-  /// Skip the 'skipMe' function.
-  virtual bool shouldSkipFunctionBody(Decl *D) {
-    FunctionDecl *F = dyn_cast<FunctionDecl>(D);
-    return F && F->getNameAsString() == "skipMe";
-  }
-};
-
-struct SkipBodyAction : public clang::ASTFrontendAction {
-  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &Compiler,
-                                         StringRef) {
-    Compiler.getFrontendOpts().SkipFunctionBodies = true;
-    return new SkipBodyConsumer;
-  }
-};
-
-TEST(runToolOnCode, TestSkipFunctionBody) {
-  EXPECT_TRUE(runToolOnCode(new SkipBodyAction,
-                            "int skipMe() { an_error_here }"));
-  EXPECT_FALSE(runToolOnCode(new SkipBodyAction,
-                             "int skipMeNot() { an_error_here }"));
-}
-
-} // end namespace tooling
-} // end namespace clang

Modified: trunk/contrib/llvm/tools/clang/utils/ABITest/ABITestGen.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ABITest/ABITestGen.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ABITest/ABITestGen.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,672 +0,0 @@
-#!/usr/bin/env python
-
-from pprint import pprint
-import random, atexit, time
-from random import randrange
-import re
-
-from Enumeration import *
-from TypeGen import *
-
-####
-
-class TypePrinter:
-    def __init__(self, output, outputHeader=None, 
-                 outputTests=None, outputDriver=None,
-                 headerName=None, info=None):
-        self.output = output
-        self.outputHeader = outputHeader
-        self.outputTests = outputTests
-        self.outputDriver = outputDriver
-        self.writeBody = outputHeader or outputTests or outputDriver
-        self.types = {}
-        self.testValues = {}
-        self.testReturnValues = {}
-        self.layoutTests = []
-        self.declarations = set()
-
-        if info:
-            for f in (self.output,self.outputHeader,self.outputTests,self.outputDriver):
-                if f:
-                    print >>f,info
-
-        if self.writeBody:
-            print >>self.output, '#include <stdio.h>\n'
-            if self.outputTests:
-                print >>self.outputTests, '#include <stdio.h>'
-                print >>self.outputTests, '#include <string.h>'
-                print >>self.outputTests, '#include <assert.h>\n'
-
-        if headerName:
-            for f in (self.output,self.outputTests,self.outputDriver):
-                if f is not None:
-                    print >>f, '#include "%s"\n'%(headerName,)
-        
-        if self.outputDriver:
-            print >>self.outputDriver, '#include <stdio.h>'
-            print >>self.outputDriver, '#include <stdlib.h>\n'
-            print >>self.outputDriver, 'int main(int argc, char **argv) {'
-            print >>self.outputDriver, '  int index = -1;'
-            print >>self.outputDriver, '  if (argc > 1) index = atoi(argv[1]);'
-            
-    def finish(self):
-        if self.layoutTests:
-            print >>self.output, 'int main(int argc, char **argv) {'
-            print >>self.output, '  int index = -1;'
-            print >>self.output, '  if (argc > 1) index = atoi(argv[1]);'
-            for i,f in self.layoutTests:
-                print >>self.output, '  if (index == -1 || index == %d)' % i
-                print >>self.output, '    %s();' % f
-            print >>self.output, '  return 0;'
-            print >>self.output, '}' 
-
-        if self.outputDriver:
-            print >>self.outputDriver, '  printf("DONE\\n");'
-            print >>self.outputDriver, '  return 0;'
-            print >>self.outputDriver, '}'        
-
-    def addDeclaration(self, decl):
-        if decl in self.declarations:
-            return False
-
-        self.declarations.add(decl)
-        if self.outputHeader:
-            print >>self.outputHeader, decl
-        else:
-            print >>self.output, decl
-            if self.outputTests:
-                print >>self.outputTests, decl
-        return True
-
-    def getTypeName(self, T):
-        name = self.types.get(T)
-        if name is None:            
-            # Reserve slot
-            self.types[T] = None
-            self.types[T] = name = T.getTypeName(self)
-        return name
-    
-    def writeLayoutTest(self, i, ty):
-        tyName = self.getTypeName(ty)
-        tyNameClean = tyName.replace(' ','_').replace('*','star')
-        fnName = 'test_%s' % tyNameClean
-            
-        print >>self.output,'void %s(void) {' % fnName
-        self.printSizeOfType('    %s'%fnName, tyName, ty, self.output)
-        self.printAlignOfType('    %s'%fnName, tyName, ty, self.output)
-        self.printOffsetsOfType('    %s'%fnName, tyName, ty, self.output)
-        print >>self.output,'}'
-        print >>self.output
-        
-        self.layoutTests.append((i,fnName))
-        
-    def writeFunction(self, i, FT):
-        args = ', '.join(['%s arg%d'%(self.getTypeName(t),i) for i,t in enumerate(FT.argTypes)])
-        if not args:
-            args = 'void'
-
-        if FT.returnType is None:
-            retvalName = None
-            retvalTypeName = 'void'
-        else:
-            retvalTypeName = self.getTypeName(FT.returnType)
-            if self.writeBody or self.outputTests:
-                retvalName = self.getTestReturnValue(FT.returnType)
-
-        fnName = 'fn%d'%(FT.index,)
-        if self.outputHeader:
-            print >>self.outputHeader,'%s %s(%s);'%(retvalTypeName, fnName, args)
-        elif self.outputTests:
-            print >>self.outputTests,'%s %s(%s);'%(retvalTypeName, fnName, args)
-            
-        print >>self.output,'%s %s(%s)'%(retvalTypeName, fnName, args),
-        if self.writeBody:
-            print >>self.output, '{'
-            
-            for i,t in enumerate(FT.argTypes):
-                self.printValueOfType('    %s'%fnName, 'arg%d'%i, t)
-
-            if retvalName is not None:
-                print >>self.output, '  return %s;'%(retvalName,)
-            print >>self.output, '}'
-        else:
-            print >>self.output, '{}'
-        print >>self.output
-
-        if self.outputDriver:
-            print >>self.outputDriver, '  if (index == -1 || index == %d) {' % i
-            print >>self.outputDriver, '    extern void test_%s(void);' % fnName
-            print >>self.outputDriver, '    test_%s();' % fnName
-            print >>self.outputDriver, '   }'
-            
-        if self.outputTests:
-            if self.outputHeader:
-                print >>self.outputHeader, 'void test_%s(void);'%(fnName,)
-
-            if retvalName is None:
-                retvalTests = None
-            else:
-                retvalTests = self.getTestValuesArray(FT.returnType)
-            tests = map(self.getTestValuesArray, FT.argTypes)
-            print >>self.outputTests, 'void test_%s(void) {'%(fnName,)
-
-            if retvalTests is not None:
-                print >>self.outputTests, '  printf("%s: testing return.\\n");'%(fnName,)
-                print >>self.outputTests, '  for (int i=0; i<%d; ++i) {'%(retvalTests[1],)
-                args = ', '.join(['%s[%d]'%(t,randrange(l)) for t,l in tests])
-                print >>self.outputTests, '    %s RV;'%(retvalTypeName,)
-                print >>self.outputTests, '    %s = %s[i];'%(retvalName, retvalTests[0])
-                print >>self.outputTests, '    RV = %s(%s);'%(fnName, args)
-                self.printValueOfType('  %s_RV'%fnName, 'RV', FT.returnType, output=self.outputTests, indent=4)
-                self.checkTypeValues('RV', '%s[i]' % retvalTests[0], FT.returnType, output=self.outputTests, indent=4)
-                print >>self.outputTests, '  }'
-            
-            if tests:
-                print >>self.outputTests, '  printf("%s: testing arguments.\\n");'%(fnName,)
-            for i,(array,length) in enumerate(tests):
-                for j in range(length):
-                    args = ['%s[%d]'%(t,randrange(l)) for t,l in tests]
-                    args[i] = '%s[%d]'%(array,j)
-                    print >>self.outputTests, '  %s(%s);'%(fnName, ', '.join(args),)
-            print >>self.outputTests, '}'
-
-    def getTestReturnValue(self, type):
-        typeName = self.getTypeName(type)        
-        info = self.testReturnValues.get(typeName)
-        if info is None:
-            name = '%s_retval'%(typeName.replace(' ','_').replace('*','star'),)
-            print >>self.output, '%s %s;'%(typeName,name)
-            if self.outputHeader:
-                print >>self.outputHeader, 'extern %s %s;'%(typeName,name)
-            elif self.outputTests:                
-                print >>self.outputTests, 'extern %s %s;'%(typeName,name)
-            info = self.testReturnValues[typeName] = name
-        return info
-
-    def getTestValuesArray(self, type):
-        typeName = self.getTypeName(type)        
-        info = self.testValues.get(typeName)
-        if info is None:
-            name = '%s_values'%(typeName.replace(' ','_').replace('*','star'),)
-            print >>self.outputTests, 'static %s %s[] = {'%(typeName,name)
-            length = 0
-            for item in self.getTestValues(type):
-                print >>self.outputTests, '\t%s,'%(item,)
-                length += 1
-            print >>self.outputTests,'};'
-            info = self.testValues[typeName] = (name,length)
-        return info
-
-    def getTestValues(self, t):
-        if isinstance(t, BuiltinType):
-            if t.name=='float':
-                for i in ['0.0','-1.0','1.0']:
-                    yield i+'f'
-            elif t.name=='double':
-                for i in ['0.0','-1.0','1.0']:
-                    yield i
-            elif t.name in ('void *'):
-                yield '(void*) 0'
-                yield '(void*) -1'
-            else:
-                yield '(%s) 0'%(t.name,)
-                yield '(%s) -1'%(t.name,)
-                yield '(%s) 1'%(t.name,)
-        elif isinstance(t, EnumType):
-            for i in range(0, len(t.enumerators)):
-                yield 'enum%dval%d' % (t.index, i)
-        elif isinstance(t, RecordType):
-            nonPadding = [f for f in t.fields 
-                          if not f.isPaddingBitField()]
-
-            if not nonPadding:
-                yield '{ }'
-                return
-
-            # FIXME: Use designated initializers to access non-first
-            # fields of unions.
-            if t.isUnion:
-                for v in self.getTestValues(nonPadding[0]):
-                    yield '{ %s }' % v
-                return
-
-            fieldValues = map(list, map(self.getTestValues, nonPadding))
-            for i,values in enumerate(fieldValues):
-                for v in values:
-                    elements = map(random.choice,fieldValues)
-                    elements[i] = v
-                    yield '{ %s }'%(', '.join(elements))
-
-        elif isinstance(t, ComplexType):
-            for t in self.getTestValues(t.elementType):
-                yield '%s + %s * 1i'%(t,t)
-        elif isinstance(t, ArrayType):
-            values = list(self.getTestValues(t.elementType))
-            if not values:
-                yield '{ }'
-            for i in range(t.numElements):
-                for v in values:
-                    elements = [random.choice(values) for i in range(t.numElements)]
-                    elements[i] = v
-                    yield '{ %s }'%(', '.join(elements))
-        else:
-            raise NotImplementedError,'Cannot make tests values of type: "%s"'%(t,)
-
-    def printSizeOfType(self, prefix, name, t, output=None, indent=2):
-        print >>output, '%*sprintf("%s: sizeof(%s) = %%ld\\n", (long)sizeof(%s));'%(indent, '', prefix, name, name) 
-    def printAlignOfType(self, prefix, name, t, output=None, indent=2):
-        print >>output, '%*sprintf("%s: __alignof__(%s) = %%ld\\n", (long)__alignof__(%s));'%(indent, '', prefix, name, name) 
-    def printOffsetsOfType(self, prefix, name, t, output=None, indent=2):
-        if isinstance(t, RecordType):
-            for i,f in enumerate(t.fields):
-                if f.isBitField():
-                    continue
-                fname = 'field%d' % i
-                print >>output, '%*sprintf("%s: __builtin_offsetof(%s, %s) = %%ld\\n", (long)__builtin_offsetof(%s, %s));'%(indent, '', prefix, name, fname, name, fname) 
-                
-    def printValueOfType(self, prefix, name, t, output=None, indent=2):
-        if output is None:
-            output = self.output
-        if isinstance(t, BuiltinType):
-            value_expr = name
-            if t.name.split(' ')[-1] == '_Bool':
-                # Hack to work around PR5579.
-                value_expr = "%s ? 2 : 0" % name
-
-            if t.name.endswith('long long'):
-                code = 'lld'
-            elif t.name.endswith('long'):
-                code = 'ld'
-            elif t.name.split(' ')[-1] in ('_Bool','char','short',
-                                           'int','unsigned'):
-                code = 'd'
-            elif t.name in ('float','double'):
-                code = 'f'
-            elif t.name == 'long double':
-                code = 'Lf'
-            else:
-                code = 'p'
-            print >>output, '%*sprintf("%s: %s = %%%s\\n", %s);'%(
-                indent, '', prefix, name, code, value_expr)
-        elif isinstance(t, EnumType):
-            print >>output, '%*sprintf("%s: %s = %%d\\n", %s);'%(indent, '', prefix, name, name)
-        elif isinstance(t, RecordType):
-            if not t.fields:
-                print >>output, '%*sprintf("%s: %s (empty)\\n");'%(indent, '', prefix, name) 
-            for i,f in enumerate(t.fields):
-                if f.isPaddingBitField():
-                    continue
-                fname = '%s.field%d'%(name,i)
-                self.printValueOfType(prefix, fname, f, output=output, indent=indent)
-        elif isinstance(t, ComplexType):
-            self.printValueOfType(prefix, '(__real %s)'%name, t.elementType, output=output,indent=indent)
-            self.printValueOfType(prefix, '(__imag %s)'%name, t.elementType, output=output,indent=indent)
-        elif isinstance(t, ArrayType):
-            for i in range(t.numElements):
-                # Access in this fashion as a hackish way to portably
-                # access vectors.
-                if t.isVector:
-                    self.printValueOfType(prefix, '((%s*) &%s)[%d]'%(t.elementType,name,i), t.elementType, output=output,indent=indent)
-                else:
-                    self.printValueOfType(prefix, '%s[%d]'%(name,i), t.elementType, output=output,indent=indent)                    
-        else:
-            raise NotImplementedError,'Cannot print value of type: "%s"'%(t,)
-
-    def checkTypeValues(self, nameLHS, nameRHS, t, output=None, indent=2):
-        prefix = 'foo'
-        if output is None:
-            output = self.output
-        if isinstance(t, BuiltinType):
-            print >>output, '%*sassert(%s == %s);' % (indent, '', nameLHS, nameRHS)
-        elif isinstance(t, EnumType):
-            print >>output, '%*sassert(%s == %s);' % (indent, '', nameLHS, nameRHS)
-        elif isinstance(t, RecordType):
-            for i,f in enumerate(t.fields):
-                if f.isPaddingBitField():
-                    continue
-                self.checkTypeValues('%s.field%d'%(nameLHS,i), '%s.field%d'%(nameRHS,i), 
-                                     f, output=output, indent=indent)
-                if t.isUnion:
-                    break
-        elif isinstance(t, ComplexType):
-            self.checkTypeValues('(__real %s)'%nameLHS, '(__real %s)'%nameRHS, t.elementType, output=output,indent=indent)
-            self.checkTypeValues('(__imag %s)'%nameLHS, '(__imag %s)'%nameRHS, t.elementType, output=output,indent=indent)
-        elif isinstance(t, ArrayType):
-            for i in range(t.numElements):
-                # Access in this fashion as a hackish way to portably
-                # access vectors.
-                if t.isVector:
-                    self.checkTypeValues('((%s*) &%s)[%d]'%(t.elementType,nameLHS,i), 
-                                         '((%s*) &%s)[%d]'%(t.elementType,nameRHS,i), 
-                                         t.elementType, output=output,indent=indent)
-                else:
-                    self.checkTypeValues('%s[%d]'%(nameLHS,i), '%s[%d]'%(nameRHS,i), 
-                                         t.elementType, output=output,indent=indent)                    
-        else:
-            raise NotImplementedError,'Cannot print value of type: "%s"'%(t,)
-
-import sys
-
-def main():
-    from optparse import OptionParser, OptionGroup
-    parser = OptionParser("%prog [options] {indices}")
-    parser.add_option("", "--mode", dest="mode",
-                      help="autogeneration mode (random or linear) [default %default]",
-                      type='choice', choices=('random','linear'), default='linear')
-    parser.add_option("", "--count", dest="count",
-                      help="autogenerate COUNT functions according to MODE",
-                      type=int, default=0)
-    parser.add_option("", "--min", dest="minIndex", metavar="N",
-                      help="start autogeneration with the Nth function type  [default %default]",
-                      type=int, default=0)
-    parser.add_option("", "--max", dest="maxIndex", metavar="N",
-                      help="maximum index for random autogeneration  [default %default]",
-                      type=int, default=10000000)
-    parser.add_option("", "--seed", dest="seed",
-                      help="random number generator seed [default %default]",
-                      type=int, default=1)
-    parser.add_option("", "--use-random-seed", dest="useRandomSeed",
-                      help="use random value for initial random number generator seed",
-                      action='store_true', default=False)
-    parser.add_option("", "--skip", dest="skipTests",
-                      help="add a test index to skip",
-                      type=int, action='append', default=[])
-    parser.add_option("-o", "--output", dest="output", metavar="FILE",
-                      help="write output to FILE  [default %default]",
-                      type=str, default='-')
-    parser.add_option("-O", "--output-header", dest="outputHeader", metavar="FILE",
-                      help="write header file for output to FILE  [default %default]",
-                      type=str, default=None)
-    parser.add_option("-T", "--output-tests", dest="outputTests", metavar="FILE",
-                      help="write function tests to FILE  [default %default]",
-                      type=str, default=None)
-    parser.add_option("-D", "--output-driver", dest="outputDriver", metavar="FILE",
-                      help="write test driver to FILE  [default %default]",
-                      type=str, default=None)
-    parser.add_option("", "--test-layout", dest="testLayout", metavar="FILE",
-                      help="test structure layout",
-                      action='store_true', default=False)
-
-    group = OptionGroup(parser, "Type Enumeration Options")
-    # Builtins - Ints
-    group.add_option("", "--no-char", dest="useChar",
-                     help="do not generate char types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-short", dest="useShort",
-                     help="do not generate short types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-int", dest="useInt",
-                     help="do not generate int types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-long", dest="useLong",
-                     help="do not generate long types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-long-long", dest="useLongLong",
-                     help="do not generate long long types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-unsigned", dest="useUnsigned",
-                     help="do not generate unsigned integer types",
-                     action="store_false", default=True)
-
-    # Other builtins
-    group.add_option("", "--no-bool", dest="useBool",
-                     help="do not generate bool types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-float", dest="useFloat",
-                     help="do not generate float types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-double", dest="useDouble",
-                     help="do not generate double types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-long-double", dest="useLongDouble",
-                     help="do not generate long double types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-void-pointer", dest="useVoidPointer",
-                     help="do not generate void* types",
-                     action="store_false", default=True)
-
-    # Enumerations
-    group.add_option("", "--no-enums", dest="useEnum",
-                     help="do not generate enum types",
-                     action="store_false", default=True)
-
-    # Derived types
-    group.add_option("", "--no-array", dest="useArray",
-                     help="do not generate record types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-complex", dest="useComplex",
-                     help="do not generate complex types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-record", dest="useRecord",
-                     help="do not generate record types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-union", dest="recordUseUnion",
-                     help="do not generate union types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-vector", dest="useVector",
-                     help="do not generate vector types",
-                     action="store_false", default=True)
-    group.add_option("", "--no-bit-field", dest="useBitField",
-                     help="do not generate bit-field record members",
-                     action="store_false", default=True)
-    group.add_option("", "--no-builtins", dest="useBuiltins",
-                     help="do not use any types",
-                     action="store_false", default=True)
-
-    # Tuning 
-    group.add_option("", "--no-function-return", dest="functionUseReturn",
-                     help="do not generate return types for functions",
-                     action="store_false", default=True)
-    group.add_option("", "--vector-types", dest="vectorTypes",
-                     help="comma separated list of vector types (e.g., v2i32) [default %default]",
-                     action="store", type=str, default='v2i16, v1i64, v2i32, v4i16, v8i8, v2f32, v2i64, v4i32, v8i16, v16i8, v2f64, v4f32, v16f32', metavar="N")
-    group.add_option("", "--bit-fields", dest="bitFields",
-                     help="comma separated list 'type:width' bit-field specifiers [default %default]",
-                     action="store", type=str, default=(
-            "char:0,char:4,int:0,unsigned:1,int:1,int:4,int:13,int:24"))
-    group.add_option("", "--max-args", dest="functionMaxArgs",
-                     help="maximum number of arguments per function [default %default]",
-                     action="store", type=int, default=4, metavar="N")
-    group.add_option("", "--max-array", dest="arrayMaxSize",
-                     help="maximum array size [default %default]",
-                     action="store", type=int, default=4, metavar="N")
-    group.add_option("", "--max-record", dest="recordMaxSize",
-                     help="maximum number of fields per record [default %default]",
-                     action="store", type=int, default=4, metavar="N")
-    group.add_option("", "--max-record-depth", dest="recordMaxDepth",
-                     help="maximum nested structure depth [default %default]",
-                     action="store", type=int, default=None, metavar="N")
-    parser.add_option_group(group)
-    (opts, args) = parser.parse_args()
-
-    if not opts.useRandomSeed:
-        random.seed(opts.seed)
-
-    # Contruct type generator
-    builtins = []
-    if opts.useBuiltins:
-        ints = []
-        if opts.useChar: ints.append(('char',1))
-        if opts.useShort: ints.append(('short',2))
-        if opts.useInt: ints.append(('int',4))
-        # FIXME: Wrong size.
-        if opts.useLong: ints.append(('long',4))
-        if opts.useLongLong: ints.append(('long long',8))
-        if opts.useUnsigned: 
-            ints = ([('unsigned %s'%i,s) for i,s in ints] + 
-                    [('signed %s'%i,s) for i,s in ints])
-        builtins.extend(ints)
-
-        if opts.useBool: builtins.append(('_Bool',1))
-        if opts.useFloat: builtins.append(('float',4))
-        if opts.useDouble: builtins.append(('double',8))
-        if opts.useLongDouble: builtins.append(('long double',16))
-        # FIXME: Wrong size.
-        if opts.useVoidPointer:  builtins.append(('void*',4))
-
-    btg = FixedTypeGenerator([BuiltinType(n,s) for n,s in builtins])
-
-    bitfields = []
-    for specifier in opts.bitFields.split(','):
-        if not specifier.strip():
-            continue
-        name,width = specifier.strip().split(':', 1)
-        bitfields.append(BuiltinType(name,None,int(width)))
-    bftg = FixedTypeGenerator(bitfields)
-
-    charType = BuiltinType('char',1)
-    shortType = BuiltinType('short',2)
-    intType = BuiltinType('int',4)
-    longlongType = BuiltinType('long long',8)
-    floatType = BuiltinType('float',4)
-    doubleType = BuiltinType('double',8)
-    sbtg = FixedTypeGenerator([charType, intType, floatType, doubleType])
-
-    atg = AnyTypeGenerator()
-    artg = AnyTypeGenerator()
-    def makeGenerator(atg, subgen, subfieldgen, useRecord, useArray, useBitField):
-        atg.addGenerator(btg)
-        if useBitField and opts.useBitField:
-            atg.addGenerator(bftg)
-        if useRecord and opts.useRecord:
-            assert subgen 
-            atg.addGenerator(RecordTypeGenerator(subfieldgen, opts.recordUseUnion, 
-                                                 opts.recordMaxSize))
-        if opts.useComplex:
-            # FIXME: Allow overriding builtins here
-            atg.addGenerator(ComplexTypeGenerator(sbtg))
-        if useArray and opts.useArray:
-            assert subgen 
-            atg.addGenerator(ArrayTypeGenerator(subgen, opts.arrayMaxSize))
-        if opts.useVector:
-            vTypes = []
-            for i,t in enumerate(opts.vectorTypes.split(',')):
-                m = re.match('v([1-9][0-9]*)([if][1-9][0-9]*)', t.strip())
-                if not m:
-                    parser.error('Invalid vector type: %r' % t)
-                count,kind = m.groups()
-                count = int(count)
-                type = { 'i8'  : charType, 
-                         'i16' : shortType, 
-                         'i32' : intType, 
-                         'i64' : longlongType,
-                         'f32' : floatType, 
-                         'f64' : doubleType,
-                         }.get(kind)
-                if not type:
-                    parser.error('Invalid vector type: %r' % t)
-                vTypes.append(ArrayType(i, True, type, count * type.size))
-                
-            atg.addGenerator(FixedTypeGenerator(vTypes))
-        if opts.useEnum:
-            atg.addGenerator(EnumTypeGenerator([None, '-1', '1', '1u'], 1, 4))
-
-    if opts.recordMaxDepth is None: 
-        # Fully recursive, just avoid top-level arrays.
-        subFTG = AnyTypeGenerator()
-        subTG = AnyTypeGenerator()
-        atg = AnyTypeGenerator()
-        makeGenerator(subFTG, atg, atg, True, True, True)
-        makeGenerator(subTG, atg, subFTG, True, True, False)
-        makeGenerator(atg, subTG, subFTG, True, False, False)
-    else:
-        # Make a chain of type generators, each builds smaller
-        # structures.
-        base = AnyTypeGenerator()
-        fbase = AnyTypeGenerator()
-        makeGenerator(base, None, None, False, False, False)
-        makeGenerator(fbase, None, None, False, False, True)
-        for i in range(opts.recordMaxDepth):
-            n = AnyTypeGenerator()
-            fn = AnyTypeGenerator()
-            makeGenerator(n, base, fbase, True, True, False)
-            makeGenerator(fn, base, fbase, True, True, True)
-            base = n
-            fbase = fn
-        atg = AnyTypeGenerator()
-        makeGenerator(atg, base, fbase, True, False, False)
-
-    if opts.testLayout:
-        ftg = atg
-    else:
-        ftg = FunctionTypeGenerator(atg, opts.functionUseReturn, opts.functionMaxArgs)
-
-    # Override max,min,count if finite
-    if opts.maxIndex is None:
-        if ftg.cardinality is aleph0:
-            opts.maxIndex = 10000000
-        else:
-            opts.maxIndex = ftg.cardinality
-    opts.maxIndex = min(opts.maxIndex, ftg.cardinality)
-    opts.minIndex = max(0,min(opts.maxIndex-1, opts.minIndex))
-    if not opts.mode=='random':
-        opts.count = min(opts.count, opts.maxIndex-opts.minIndex)
-
-    if opts.output=='-':
-        output = sys.stdout
-    else:
-        output = open(opts.output,'w')
-        atexit.register(lambda: output.close())
-        
-    outputHeader = None
-    if opts.outputHeader:
-        outputHeader = open(opts.outputHeader,'w')
-        atexit.register(lambda: outputHeader.close())
-        
-    outputTests = None
-    if opts.outputTests:
-        outputTests = open(opts.outputTests,'w')
-        atexit.register(lambda: outputTests.close())
-
-    outputDriver = None
-    if opts.outputDriver:
-        outputDriver = open(opts.outputDriver,'w')
-        atexit.register(lambda: outputDriver.close())
-
-    info = ''
-    info += '// %s\n'%(' '.join(sys.argv),)
-    info += '// Generated: %s\n'%(time.strftime('%Y-%m-%d %H:%M'),)
-    info += '// Cardinality of function generator: %s\n'%(ftg.cardinality,)
-    info += '// Cardinality of type generator: %s\n'%(atg.cardinality,)
-
-    if opts.testLayout:
-        info += '\n#include <stdio.h>'
-    
-    P = TypePrinter(output, 
-                    outputHeader=outputHeader,
-                    outputTests=outputTests,
-                    outputDriver=outputDriver,
-                    headerName=opts.outputHeader,                    
-                    info=info)
-
-    def write(N):
-        try:
-            FT = ftg.get(N)
-        except RuntimeError,e:
-            if e.args[0]=='maximum recursion depth exceeded':
-                print >>sys.stderr,'WARNING: Skipped %d, recursion limit exceeded (bad arguments?)'%(N,)
-                return
-            raise
-        if opts.testLayout:
-            P.writeLayoutTest(N, FT)
-        else:
-            P.writeFunction(N, FT)
-
-    if args:
-        [write(int(a)) for a in args]
-
-    skipTests = set(opts.skipTests)
-    for i in range(opts.count):
-        if opts.mode=='linear':
-            index = opts.minIndex + i
-        else:
-            index = opts.minIndex + int((opts.maxIndex-opts.minIndex) * random.random())
-        if index in skipTests:
-            continue
-        write(index)
-
-    P.finish()
-
-if __name__=='__main__':
-    main()
-

Modified: trunk/contrib/llvm/tools/clang/utils/ABITest/Enumeration.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ABITest/Enumeration.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ABITest/Enumeration.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,276 +0,0 @@
-"""Utilities for enumeration of finite and countably infinite sets.
-"""
-###
-# Countable iteration
-
-# Simplifies some calculations
-class Aleph0(int):
-    _singleton = None
-    def __new__(type):
-        if type._singleton is None:
-            type._singleton = int.__new__(type)
-        return type._singleton
-    def __repr__(self): return '<aleph0>'
-    def __str__(self): return 'inf'
-    
-    def __cmp__(self, b):
-        return 1
-
-    def __sub__(self, b):
-        raise ValueError,"Cannot subtract aleph0"
-    __rsub__ = __sub__
-
-    def __add__(self, b): 
-        return self
-    __radd__ = __add__
-
-    def __mul__(self, b): 
-        if b == 0: return b            
-        return self
-    __rmul__ = __mul__
-
-    def __floordiv__(self, b):
-        if b == 0: raise ZeroDivisionError
-        return self
-    __rfloordiv__ = __floordiv__
-    __truediv__ = __floordiv__
-    __rtuediv__ = __floordiv__
-    __div__ = __floordiv__
-    __rdiv__ = __floordiv__
-
-    def __pow__(self, b):
-        if b == 0: return 1
-        return self
-aleph0 = Aleph0()
-
-def base(line):
-    return line*(line+1)//2
-
-def pairToN((x,y)):
-    line,index = x+y,y
-    return base(line)+index
-
-def getNthPairInfo(N):
-    # Avoid various singularities
-    if N==0:
-        return (0,0)
-
-    # Gallop to find bounds for line
-    line = 1
-    next = 2
-    while base(next)<=N:
-        line = next
-        next = line << 1
-    
-    # Binary search for starting line
-    lo = line
-    hi = line<<1
-    while lo + 1 != hi:
-        #assert base(lo) <= N < base(hi)
-        mid = (lo + hi)>>1
-        if base(mid)<=N:
-            lo = mid
-        else:
-            hi = mid
-
-    line = lo
-    return line, N - base(line)
-
-def getNthPair(N):
-    line,index = getNthPairInfo(N)
-    return (line - index, index)
-
-def getNthPairBounded(N,W=aleph0,H=aleph0,useDivmod=False):
-    """getNthPairBounded(N, W, H) -> (x, y)
-    
-    Return the N-th pair such that 0 <= x < W and 0 <= y < H."""
-
-    if W <= 0 or H <= 0:
-        raise ValueError,"Invalid bounds"
-    elif N >= W*H:
-        raise ValueError,"Invalid input (out of bounds)"
-
-    # Simple case...
-    if W is aleph0 and H is aleph0:
-        return getNthPair(N)
-
-    # Otherwise simplify by assuming W < H
-    if H < W:
-        x,y = getNthPairBounded(N,H,W,useDivmod=useDivmod)
-        return y,x
-
-    if useDivmod:
-        return N%W,N//W
-    else:
-        # Conceptually we want to slide a diagonal line across a
-        # rectangle. This gives more interesting results for large
-        # bounds than using divmod.
-        
-        # If in lower left, just return as usual
-        cornerSize = base(W)
-        if N < cornerSize:
-            return getNthPair(N)
-
-        # Otherwise if in upper right, subtract from corner
-        if H is not aleph0:
-            M = W*H - N - 1
-            if M < cornerSize:
-                x,y = getNthPair(M)
-                return (W-1-x,H-1-y)
-
-        # Otherwise, compile line and index from number of times we
-        # wrap.
-        N = N - cornerSize
-        index,offset = N%W,N//W
-        # p = (W-1, 1+offset) + (-1,1)*index
-        return (W-1-index, 1+offset+index)
-def getNthPairBoundedChecked(N,W=aleph0,H=aleph0,useDivmod=False,GNP=getNthPairBounded):
-    x,y = GNP(N,W,H,useDivmod)
-    assert 0 <= x < W and 0 <= y < H
-    return x,y
-
-def getNthNTuple(N, W, H=aleph0, useLeftToRight=False):
-    """getNthNTuple(N, W, H) -> (x_0, x_1, ..., x_W)
-
-    Return the N-th W-tuple, where for 0 <= x_i < H."""
-
-    if useLeftToRight:
-        elts = [None]*W
-        for i in range(W):
-            elts[i],N = getNthPairBounded(N, H)
-        return tuple(elts)
-    else:
-        if W==0:
-            return ()
-        elif W==1:
-            return (N,)
-        elif W==2:
-            return getNthPairBounded(N, H, H)
-        else:
-            LW,RW = W//2, W - (W//2)
-            L,R = getNthPairBounded(N, H**LW, H**RW)
-            return (getNthNTuple(L,LW,H=H,useLeftToRight=useLeftToRight) + 
-                    getNthNTuple(R,RW,H=H,useLeftToRight=useLeftToRight))
-def getNthNTupleChecked(N, W, H=aleph0, useLeftToRight=False, GNT=getNthNTuple):
-    t = GNT(N,W,H,useLeftToRight)
-    assert len(t) == W
-    for i in t:
-        assert i < H
-    return t
-
-def getNthTuple(N, maxSize=aleph0, maxElement=aleph0, useDivmod=False, useLeftToRight=False):
-    """getNthTuple(N, maxSize, maxElement) -> x
-
-    Return the N-th tuple where len(x) < maxSize and for y in x, 0 <=
-    y < maxElement."""
-
-    # All zero sized tuples are isomorphic, don't ya know.
-    if N == 0:
-        return ()
-    N -= 1
-    if maxElement is not aleph0:
-        if maxSize is aleph0:
-            raise NotImplementedError,'Max element size without max size unhandled'
-        bounds = [maxElement**i for i in range(1, maxSize+1)]
-        S,M = getNthPairVariableBounds(N, bounds)
-    else:
-        S,M = getNthPairBounded(N, maxSize, useDivmod=useDivmod)
-    return getNthNTuple(M, S+1, maxElement, useLeftToRight=useLeftToRight)
-def getNthTupleChecked(N, maxSize=aleph0, maxElement=aleph0, 
-                       useDivmod=False, useLeftToRight=False, GNT=getNthTuple):
-    # FIXME: maxsize is inclusive
-    t = GNT(N,maxSize,maxElement,useDivmod,useLeftToRight)
-    assert len(t) <= maxSize
-    for i in t:
-        assert i < maxElement
-    return t
-
-def getNthPairVariableBounds(N, bounds):
-    """getNthPairVariableBounds(N, bounds) -> (x, y)
-
-    Given a finite list of bounds (which may be finite or aleph0),
-    return the N-th pair such that 0 <= x < len(bounds) and 0 <= y <
-    bounds[x]."""
-
-    if not bounds:
-        raise ValueError,"Invalid bounds"
-    if not (0 <= N < sum(bounds)):
-        raise ValueError,"Invalid input (out of bounds)"
-
-    level = 0
-    active = range(len(bounds))
-    active.sort(key=lambda i: bounds[i])
-    prevLevel = 0
-    for i,index in enumerate(active):
-        level = bounds[index]
-        W = len(active) - i
-        if level is aleph0:
-            H = aleph0
-        else:
-            H = level - prevLevel
-        levelSize = W*H
-        if N<levelSize: # Found the level
-            idelta,delta = getNthPairBounded(N, W, H)
-            return active[i+idelta],prevLevel+delta
-        else:
-            N -= levelSize
-            prevLevel = level
-    else:
-        raise RuntimError,"Unexpected loop completion"
-
-def getNthPairVariableBoundsChecked(N, bounds, GNVP=getNthPairVariableBounds):
-    x,y = GNVP(N,bounds)
-    assert 0 <= x < len(bounds) and 0 <= y < bounds[x]
-    return (x,y)
-
-###
-
-def testPairs():
-    W = 3
-    H = 6
-    a = [['  ' for x in range(10)] for y in range(10)]
-    b = [['  ' for x in range(10)] for y in range(10)]
-    for i in range(min(W*H,40)):
-        x,y = getNthPairBounded(i,W,H)
-        x2,y2 = getNthPairBounded(i,W,H,useDivmod=True)
-        print i,(x,y),(x2,y2)
-        a[y][x] = '%2d'%i
-        b[y2][x2] = '%2d'%i
-
-    print '-- a --'
-    for ln in a[::-1]:
-        if ''.join(ln).strip():
-            print '  '.join(ln)
-    print '-- b --'
-    for ln in b[::-1]:
-        if ''.join(ln).strip():
-            print '  '.join(ln)
-
-def testPairsVB():
-    bounds = [2,2,4,aleph0,5,aleph0]
-    a = [['  ' for x in range(15)] for y in range(15)]
-    b = [['  ' for x in range(15)] for y in range(15)]
-    for i in range(min(sum(bounds),40)):
-        x,y = getNthPairVariableBounds(i, bounds)
-        print i,(x,y)
-        a[y][x] = '%2d'%i
-
-    print '-- a --'
-    for ln in a[::-1]:
-        if ''.join(ln).strip():
-            print '  '.join(ln)
-
-###
-
-# Toggle to use checked versions of enumeration routines.
-if False:
-    getNthPairVariableBounds = getNthPairVariableBoundsChecked
-    getNthPairBounded = getNthPairBoundedChecked
-    getNthNTuple = getNthNTupleChecked
-    getNthTuple = getNthTupleChecked
-
-if __name__ == '__main__':
-    testPairs()
-
-    testPairsVB()
-

Modified: trunk/contrib/llvm/tools/clang/utils/ABITest/Makefile.test.common
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ABITest/Makefile.test.common	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ABITest/Makefile.test.common	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,170 +0,0 @@
-# -*- Makefile -*-
-
-# Usage: make test.N.report 
-#
-# COUNT can be over-ridden to change the number of tests generated per
-# file, and TESTARGS is used to change the type generation. Make sure
-# to 'make clean' after changing either of these parameters.
-
-TESTARGS := --no-unsigned --no-vector --no-complex --no-bool
-
-COUNT := 1
-TIMEOUT := 5
-
-CFLAGS := -std=gnu99
-
-X_COMPILER := gcc
-X_LL_CFLAGS := -emit-llvm -S
-Y_COMPILER := clang
-Y_LL_CFLAGS := -emit-llvm -S
-CC := gcc
-
-###
-
-ABITESTGEN := ../ABITestGen.py
-
-ifndef VERBOSE
-  Verb := @
-endif
-
-.PHONY: test.%.report
-test.%.report: temps/test.%.xx.diff temps/test.%.xy.diff temps/test.%.yx.diff temps/test.%.yy.diff
-	@ok=1;\
-	for t in $^; do \
-		if [ -s $$t ]; then \
-			echo "TEST $*: $$t failed"; \
-			ok=0;\
-		fi; \
-	done; \
-	if [ $$ok -eq 1 ]; then \
-		true; \
-	else \
-		false; \
-	fi
-
-
-.PHONY: test.%.defs-report
-test.%.defs-report: temps/test.%.defs.diff
-	@for t in $^; do \
-		if [ -s $$t ]; then \
-			echo "TEST $*: $$t failed"; \
-			cat $$t; \
-		fi; \
-	done
-
-.PHONY: test.%.build
-test.%.build: temps/test.%.ref temps/test.%.xx temps/test.%.xy temps/test.%.yx temps/test.%.yy temps/test.%.x.defs temps/test.%.y.defs
-	@true
-
-###
-
-# Diffs and output
-
-.PRECIOUS: temps/.dir
-
-.PRECIOUS: temps/test.%.xx.diff
-temps/test.%.xx.diff: temps/test.%.ref.out temps/test.%.xx.out
-	$(Verb) diff $^ > $@ || true
-.PRECIOUS: temps/test.%.xy.diff
-temps/test.%.xy.diff: temps/test.%.ref.out temps/test.%.xy.out
-	$(Verb) diff $^ > $@ || true
-.PRECIOUS: temps/test.%.yx.diff
-temps/test.%.yx.diff: temps/test.%.ref.out temps/test.%.yx.out
-	$(Verb) diff $^ > $@ || true
-.PRECIOUS: temps/test.%.yy.diff
-temps/test.%.yy.diff: temps/test.%.ref.out temps/test.%.yy.out
-	$(Verb) diff $^ > $@ || true
-.PRECIOUS: temps/test.%.defs.diff
-temps/test.%.defs.diff: temps/test.%.x.defs temps/test.%.y.defs
-	$(Verb) zipdifflines \
-	  --replace "%struct.T[0-9]+" "%struct.s" \
-	  --replace "%union.T[0-9]+" "%struct.s" \
-	  --replace "byval align [0-9]+" "byval" \
-	  $^ > $@
-
-.PRECIOUS: temps/test.%.out
-temps/test.%.out: temps/test.%
-	-$(Verb) ./$< > $@
-
-# Executables
-
-.PRECIOUS: temps/test.%.ref
-temps/test.%.ref: temps/test.%.driver.ref.o temps/test.%.a.ref.o temps/test.%.b.ref.o
-	$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3 -o $@ $^
-.PRECIOUS: temps/test.%.xx
-temps/test.%.xx: temps/test.%.driver.ref.o temps/test.%.a.x.o temps/test.%.b.x.o
-	$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3  -o $@ $^
-.PRECIOUS: temps/test.%.xy
-temps/test.%.xy: temps/test.%.driver.ref.o temps/test.%.a.x.o temps/test.%.b.y.o
-	$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3  -o $@ $^
-.PRECIOUS: temps/test.%.yx
-temps/test.%.yx: temps/test.%.driver.ref.o temps/test.%.a.y.o temps/test.%.b.x.o
-	$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3  -o $@ $^
-.PRECIOUS: temps/test.%.yy
-temps/test.%.yy: temps/test.%.driver.ref.o temps/test.%.a.y.o temps/test.%.b.y.o
-	$(Verb) $(CC) $(CFLAGS) $(CC_CFLAGS) -O3  -o $@ $^
-
-# Object files
-
-.PRECIOUS: temps/test.%.ref.o
-temps/test.%.ref.o: inputs/test.%.c temps/.dir
-	$(Verb) $(CC) -c $(CFLAGS) $(CC_CFLAGS) -o $@ $<
-.PRECIOUS: temps/test.%.x.o
-temps/test.%.x.o: inputs/test.%.c temps/.dir
-	$(Verb) $(X_COMPILER) -c $(CFLAGS) $(X_CFLAGS) -o $@ $<
-.PRECIOUS: temps/test.%.y.o
-temps/test.%.y.o: inputs/test.%.c temps/.dir
-	$(Verb) $(Y_COMPILER) -c $(CFLAGS) $(Y_CFLAGS) -o $@ $<
-
-.PRECIOUS: temps/test.%.x.defs
-temps/test.%.x.defs: temps/test.%.a.x.ll temps/.dir
-	-$(Verb) -grep '^define ' $< > $@
-.PRECIOUS: temps/test.%.y.defs
-temps/test.%.y.defs: temps/test.%.a.y.ll temps/.dir
-	-$(Verb) -grep '^define ' $< > $@
-
-.PRECIOUS: temps/test.%.a.x.ll
-temps/test.%.a.x.ll: inputs/test.%.a.c temps/.dir
-	$(Verb) $(X_COMPILER) $(CFLAGS) $(X_LL_CFLAGS) $(X_CFLAGS) -o $@ $<
-.PRECIOUS: temps/test.%.b.x.ll
-temps/test.%.b.x.ll: inputs/test.%.b.c temps/.dir
-	$(Verb) $(X_COMPILER) $(CFLAGS) $(X_LL_CFLAGS) $(X_CFLAGS) -o $@ $<
-.PRECIOUS: temps/test.%.a.y.ll
-temps/test.%.a.y.ll: inputs/test.%.a.c temps/.dir
-	$(Verb) $(Y_COMPILER) $(CFLAGS) $(Y_LL_CFLAGS) $(Y_CFLAGS) -o $@ $<
-.PRECIOUS: temps/test.%.b.y.ll
-temps/test.%.b.y.ll: inputs/test.%.b.c temps/.dir
-	$(Verb) $(Y_COMPILER) $(CFLAGS) $(Y_LL_CFLAGS) $(Y_CFLAGS) -o $@ $<
-
-# Input generation
-
-.PHONY: test.%.top
-test.%.top: inputs/test.%.a.c inputs/test.%.b.c inputs/test.%.driver.c
-	@true
-
-.PRECIOUS: inputs/test.%.a.c inputs/test.%.b.c inputs/test.%.driver.c
-inputs/test.%.a.c: test.%.generate
-	@true
-inputs/test.%.b.c: test.%.generate
-	@true
-inputs/test.%.driver.c: test.%.generate
-	@true
-
-.PHONY: test.%.generate
-.PRECIOUS: inputs/.dir
-test.%.generate: $(ABITESTGEN) inputs/.dir
-	$(Verb) $(ABITESTGEN) $(TESTARGS) -o inputs/test.$*.a.c -T inputs/test.$*.b.c -D inputs/test.$*.driver.c --min=$(shell expr $* '*' $(COUNT))  --count=$(COUNT)
-
-# Cleaning
-
-clean-temps:
-	$(Verb) rm -rf temps
-
-clean:
-	$(Verb) rm -rf temps inputs
-
-# Etc.
-
-%/.dir:
-	$(Verb) mkdir -p $* > /dev/null
-	$(Verb) $(DATE) > $@

Modified: trunk/contrib/llvm/tools/clang/utils/ABITest/TypeGen.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ABITest/TypeGen.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ABITest/TypeGen.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,471 +0,0 @@
-"""Flexible enumeration of C types."""
-
-from Enumeration import *
-
-# TODO:
-
-#  - struct improvements (flexible arrays, packed &
-#    unpacked, alignment)
-#  - objective-c qualified id
-#  - anonymous / transparent unions
-#  - VLAs
-#  - block types
-#  - K&R functions
-#  - pass arguments of different types (test extension, transparent union)
-#  - varargs
-
-###
-# Actual type types
-
-class Type:
-    def isBitField(self):
-        return False
-
-    def isPaddingBitField(self):
-        return False
-
-    def getTypeName(self, printer):
-        name = 'T%d' % len(printer.types)
-        typedef = self.getTypedefDef(name, printer)
-        printer.addDeclaration(typedef)
-        return name
-
-class BuiltinType(Type):
-    def __init__(self, name, size, bitFieldSize=None):
-        self.name = name
-        self.size = size
-        self.bitFieldSize = bitFieldSize
-
-    def isBitField(self):
-        return self.bitFieldSize is not None
-
-    def isPaddingBitField(self):
-        return self.bitFieldSize is 0
-
-    def getBitFieldSize(self):
-        assert self.isBitField()
-        return self.bitFieldSize
-
-    def getTypeName(self, printer):
-        return self.name
-
-    def sizeof(self):
-        return self.size
-
-    def __str__(self):
-        return self.name
-
-class EnumType(Type):
-    def __init__(self, index, enumerators):
-        self.index = index
-        self.enumerators = enumerators
-
-    def getEnumerators(self):
-        result = ''
-        for i, init in enumerate(self.enumerators):
-            if i > 0:
-                result = result + ', '
-            result = result + 'enum%dval%d' % (self.index, i)
-            if init:
-                result = result + ' = %s' % (init)
-
-        return result
-
-    def __str__(self):
-        return 'enum { %s }' % (self.getEnumerators())
-
-    def getTypedefDef(self, name, printer):
-        return 'typedef enum %s { %s } %s;'%(name, self.getEnumerators(), name)
-
-class RecordType(Type):
-    def __init__(self, index, isUnion, fields):
-        self.index = index
-        self.isUnion = isUnion
-        self.fields = fields
-        self.name = None
-
-    def __str__(self):
-        def getField(t):
-            if t.isBitField():
-                return "%s : %d;" % (t, t.getBitFieldSize())
-            else:
-                return "%s;" % t
-
-        return '%s { %s }'%(('struct','union')[self.isUnion],
-                            ' '.join(map(getField, self.fields)))
-
-    def getTypedefDef(self, name, printer):
-        def getField((i, t)):
-            if t.isBitField():
-                if t.isPaddingBitField():
-                    return '%s : 0;'%(printer.getTypeName(t),)
-                else:
-                    return '%s field%d : %d;'%(printer.getTypeName(t),i,
-                                               t.getBitFieldSize())
-            else:
-                return '%s field%d;'%(printer.getTypeName(t),i)
-        fields = map(getField, enumerate(self.fields))
-        # Name the struct for more readable LLVM IR.
-        return 'typedef %s %s { %s } %s;'%(('struct','union')[self.isUnion],
-                                           name, ' '.join(fields), name)
-                                           
-class ArrayType(Type):
-    def __init__(self, index, isVector, elementType, size):
-        if isVector:
-            # Note that for vectors, this is the size in bytes.
-            assert size > 0
-        else:
-            assert size is None or size >= 0
-        self.index = index
-        self.isVector = isVector
-        self.elementType = elementType
-        self.size = size
-        if isVector:
-            eltSize = self.elementType.sizeof()
-            assert not (self.size % eltSize)
-            self.numElements = self.size // eltSize
-        else:
-            self.numElements = self.size
-
-    def __str__(self):
-        if self.isVector:
-            return 'vector (%s)[%d]'%(self.elementType,self.size)
-        elif self.size is not None:
-            return '(%s)[%d]'%(self.elementType,self.size)
-        else:
-            return '(%s)[]'%(self.elementType,)
-
-    def getTypedefDef(self, name, printer):
-        elementName = printer.getTypeName(self.elementType)
-        if self.isVector:
-            return 'typedef %s %s __attribute__ ((vector_size (%d)));'%(elementName,
-                                                                        name,
-                                                                        self.size)
-        else:
-            if self.size is None:
-                sizeStr = ''
-            else:
-                sizeStr = str(self.size)
-            return 'typedef %s %s[%s];'%(elementName, name, sizeStr)
-
-class ComplexType(Type):
-    def __init__(self, index, elementType):
-        self.index = index
-        self.elementType = elementType
-
-    def __str__(self):
-        return '_Complex (%s)'%(self.elementType)
-
-    def getTypedefDef(self, name, printer):
-        return 'typedef _Complex %s %s;'%(printer.getTypeName(self.elementType), name)
-
-class FunctionType(Type):
-    def __init__(self, index, returnType, argTypes):
-        self.index = index
-        self.returnType = returnType
-        self.argTypes = argTypes
-
-    def __str__(self):
-        if self.returnType is None:
-            rt = 'void'
-        else:
-            rt = str(self.returnType)
-        if not self.argTypes:
-            at = 'void'
-        else:
-            at = ', '.join(map(str, self.argTypes))
-        return '%s (*)(%s)'%(rt, at)
-
-    def getTypedefDef(self, name, printer):
-        if self.returnType is None:
-            rt = 'void'
-        else:
-            rt = str(self.returnType)
-        if not self.argTypes:
-            at = 'void'
-        else:
-            at = ', '.join(map(str, self.argTypes))
-        return 'typedef %s (*%s)(%s);'%(rt, name, at)
-
-###
-# Type enumerators
-
-class TypeGenerator(object):
-    def __init__(self):
-        self.cache = {}
-
-    def setCardinality(self):
-        abstract
-
-    def get(self, N):
-        T = self.cache.get(N)
-        if T is None:
-            assert 0 <= N < self.cardinality
-            T = self.cache[N] = self.generateType(N)
-        return T
-
-    def generateType(self, N):
-        abstract
-
-class FixedTypeGenerator(TypeGenerator):
-    def __init__(self, types):
-        TypeGenerator.__init__(self)
-        self.types = types
-        self.setCardinality()
-
-    def setCardinality(self):
-        self.cardinality = len(self.types)
-
-    def generateType(self, N):
-        return self.types[N]
-
-# Factorial
-def fact(n):
-    result = 1
-    while n > 0:
-        result = result * n
-        n = n - 1
-    return result
-
-# Compute the number of combinations (n choose k)
-def num_combinations(n, k): 
-    return fact(n) / (fact(k) * fact(n - k))
-
-# Enumerate the combinations choosing k elements from the list of values
-def combinations(values, k):
-    # From ActiveState Recipe 190465: Generator for permutations,
-    # combinations, selections of a sequence
-    if k==0: yield []
-    else:
-        for i in xrange(len(values)-k+1):
-            for cc in combinations(values[i+1:],k-1):
-                yield [values[i]]+cc
-
-class EnumTypeGenerator(TypeGenerator):
-    def __init__(self, values, minEnumerators, maxEnumerators):
-        TypeGenerator.__init__(self)
-        self.values = values
-        self.minEnumerators = minEnumerators
-        self.maxEnumerators = maxEnumerators
-        self.setCardinality()
-
-    def setCardinality(self):
-        self.cardinality = 0
-        for num in range(self.minEnumerators, self.maxEnumerators + 1):
-            self.cardinality += num_combinations(len(self.values), num)
-
-    def generateType(self, n):
-        # Figure out the number of enumerators in this type
-        numEnumerators = self.minEnumerators
-        valuesCovered = 0
-        while numEnumerators < self.maxEnumerators:
-            comb = num_combinations(len(self.values), numEnumerators)
-            if valuesCovered + comb > n:
-                break
-            numEnumerators = numEnumerators + 1
-            valuesCovered += comb
-
-        # Find the requested combination of enumerators and build a
-        # type from it.
-        i = 0
-        for enumerators in combinations(self.values, numEnumerators):
-            if i == n - valuesCovered:
-                return EnumType(n, enumerators)
-                
-            i = i + 1
-
-        assert False
-
-class ComplexTypeGenerator(TypeGenerator):
-    def __init__(self, typeGen):
-        TypeGenerator.__init__(self)
-        self.typeGen = typeGen
-        self.setCardinality()
-    
-    def setCardinality(self):
-        self.cardinality = self.typeGen.cardinality
-
-    def generateType(self, N):
-        return ComplexType(N, self.typeGen.get(N))
-
-class VectorTypeGenerator(TypeGenerator):
-    def __init__(self, typeGen, sizes):
-        TypeGenerator.__init__(self)
-        self.typeGen = typeGen
-        self.sizes = tuple(map(int,sizes))
-        self.setCardinality()
-
-    def setCardinality(self):
-        self.cardinality = len(self.sizes)*self.typeGen.cardinality
-
-    def generateType(self, N):
-        S,T = getNthPairBounded(N, len(self.sizes), self.typeGen.cardinality)
-        return ArrayType(N, True, self.typeGen.get(T), self.sizes[S])
-
-class FixedArrayTypeGenerator(TypeGenerator):
-    def __init__(self, typeGen, sizes):
-        TypeGenerator.__init__(self)
-        self.typeGen = typeGen
-        self.sizes = tuple(size)
-        self.setCardinality()
-
-    def setCardinality(self):
-        self.cardinality = len(self.sizes)*self.typeGen.cardinality
-
-    def generateType(self, N):
-        S,T = getNthPairBounded(N, len(self.sizes), self.typeGen.cardinality)
-        return ArrayType(N, false, self.typeGen.get(T), self.sizes[S])
-
-class ArrayTypeGenerator(TypeGenerator):
-    def __init__(self, typeGen, maxSize, useIncomplete=False, useZero=False):
-        TypeGenerator.__init__(self)
-        self.typeGen = typeGen
-        self.useIncomplete = useIncomplete
-        self.useZero = useZero
-        self.maxSize = int(maxSize)
-        self.W = useIncomplete + useZero + self.maxSize
-        self.setCardinality()
-
-    def setCardinality(self):
-        self.cardinality = self.W * self.typeGen.cardinality
-
-    def generateType(self, N):
-        S,T = getNthPairBounded(N, self.W, self.typeGen.cardinality)
-        if self.useIncomplete:
-            if S==0:
-                size = None
-                S = None
-            else:
-                S = S - 1
-        if S is not None:
-            if self.useZero:
-                size = S
-            else:
-                size = S + 1        
-        return ArrayType(N, False, self.typeGen.get(T), size)
-
-class RecordTypeGenerator(TypeGenerator):
-    def __init__(self, typeGen, useUnion, maxSize):
-        TypeGenerator.__init__(self)
-        self.typeGen = typeGen
-        self.useUnion = bool(useUnion)
-        self.maxSize = int(maxSize)
-        self.setCardinality()
-
-    def setCardinality(self):
-        M = 1 + self.useUnion
-        if self.maxSize is aleph0:
-            S =  aleph0 * self.typeGen.cardinality
-        else:
-            S = 0
-            for i in range(self.maxSize+1):
-                S += M * (self.typeGen.cardinality ** i)
-        self.cardinality = S
-
-    def generateType(self, N):
-        isUnion,I = False,N
-        if self.useUnion:
-            isUnion,I = (I&1),I>>1
-        fields = map(self.typeGen.get,getNthTuple(I,self.maxSize,self.typeGen.cardinality))
-        return RecordType(N, isUnion, fields)
-
-class FunctionTypeGenerator(TypeGenerator):
-    def __init__(self, typeGen, useReturn, maxSize):
-        TypeGenerator.__init__(self)
-        self.typeGen = typeGen
-        self.useReturn = useReturn
-        self.maxSize = maxSize
-        self.setCardinality()
-    
-    def setCardinality(self):
-        if self.maxSize is aleph0:
-            S = aleph0 * self.typeGen.cardinality()
-        elif self.useReturn:
-            S = 0
-            for i in range(1,self.maxSize+1+1):
-                S += self.typeGen.cardinality ** i
-        else:
-            S = 0
-            for i in range(self.maxSize+1):
-                S += self.typeGen.cardinality ** i
-        self.cardinality = S
-    
-    def generateType(self, N):
-        if self.useReturn:
-            # Skip the empty tuple
-            argIndices = getNthTuple(N+1, self.maxSize+1, self.typeGen.cardinality)
-            retIndex,argIndices = argIndices[0],argIndices[1:]
-            retTy = self.typeGen.get(retIndex)
-        else:
-            retTy = None
-            argIndices = getNthTuple(N, self.maxSize, self.typeGen.cardinality)
-        args = map(self.typeGen.get, argIndices)
-        return FunctionType(N, retTy, args)
-
-class AnyTypeGenerator(TypeGenerator):
-    def __init__(self):
-        TypeGenerator.__init__(self)
-        self.generators = []
-        self.bounds = []
-        self.setCardinality()
-        self._cardinality = None
-        
-    def getCardinality(self):
-        if self._cardinality is None:
-            return aleph0
-        else:
-            return self._cardinality
-    def setCardinality(self):
-        self.bounds = [g.cardinality for g in self.generators]
-        self._cardinality = sum(self.bounds)
-    cardinality = property(getCardinality, None)
-
-    def addGenerator(self, g):
-        self.generators.append(g)
-        for i in range(100):
-            prev = self._cardinality
-            self._cardinality = None
-            for g in self.generators:
-                g.setCardinality()
-            self.setCardinality()
-            if (self._cardinality is aleph0) or prev==self._cardinality:
-                break
-        else:
-            raise RuntimeError,"Infinite loop in setting cardinality"
-
-    def generateType(self, N):
-        index,M = getNthPairVariableBounds(N, self.bounds)
-        return self.generators[index].get(M)
-
-def test():
-    fbtg = FixedTypeGenerator([BuiltinType('char', 4),
-                               BuiltinType('char', 4, 0),
-                               BuiltinType('int',  4, 5)])
-
-    fields1 = AnyTypeGenerator()
-    fields1.addGenerator( fbtg )
-
-    fields0 = AnyTypeGenerator()
-    fields0.addGenerator( fbtg )
-#    fields0.addGenerator( RecordTypeGenerator(fields1, False, 4) )
-
-    btg = FixedTypeGenerator([BuiltinType('char', 4),
-                              BuiltinType('int',  4)])
-    etg = EnumTypeGenerator([None, '-1', '1', '1u'], 0, 3)
-
-    atg = AnyTypeGenerator()
-    atg.addGenerator( btg )
-    atg.addGenerator( RecordTypeGenerator(fields0, False, 4) )
-    atg.addGenerator( etg )
-    print 'Cardinality:',atg.cardinality
-    for i in range(100):
-        if i == atg.cardinality:
-            try:
-                atg.get(i)
-                raise RuntimeError,"Cardinality was wrong"
-            except AssertionError:
-                break
-        print '%4d: %s'%(i, atg.get(i))
-
-if __name__ == '__main__':
-    test()

Modified: trunk/contrib/llvm/tools/clang/utils/ABITest/build-and-summarize-all.sh
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ABITest/build-and-summarize-all.sh	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ABITest/build-and-summarize-all.sh	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-if [ $# != 1 ]; then
-    echo "usage: $0 <num-tests>"
-    exit 1
-fi
-
-for bits in 32 64; do
-    for kind in return-types single-args; do
-        echo "-- $kind-$bits --"
-        (cd $kind-$bits && ../build-and-summarize.sh $1)
-    done
-done

Modified: trunk/contrib/llvm/tools/clang/utils/ABITest/build-and-summarize.sh
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ABITest/build-and-summarize.sh	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ABITest/build-and-summarize.sh	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-if [ $# != 1 ]; then
-    echo "usage: $0 <num-tests>"
-    exit 1
-fi
-
-dir=$(dirname $0)
-$dir/build.sh $1 &> /dev/null || true
-../summarize.sh $1 &> fails-x.txt
-cat fails-x.txt
-wc -l fails-x.txt

Modified: trunk/contrib/llvm/tools/clang/utils/ABITest/build.sh
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ABITest/build.sh	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ABITest/build.sh	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-if [ $# != 1 ]; then
-    echo "usage: $0 <num-tests>"
-    exit 1
-fi
-
-CPUS=2
-make -j $CPUS \
-  $(for i in $(seq 0 $1); do echo test.$i.report; done) -k

Modified: trunk/contrib/llvm/tools/clang/utils/ABITest/summarize.sh
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ABITest/summarize.sh	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ABITest/summarize.sh	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-if [ $# != 1 ]; then
-    echo "usage: $0 <num-tests>"
-    exit 1
-fi
-
-for i in $(seq 0 $1); do 
-    if (! make test.$i.report &> /dev/null); then 
-        echo "FAIL: $i";
-    fi; 
-done
-

Modified: trunk/contrib/llvm/tools/clang/utils/CIndex/completion_logger_server.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/CIndex/completion_logger_server.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/CIndex/completion_logger_server.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,44 +0,0 @@
-#!/usr/bin/env python
-import sys
-from socket import *
-from time import strftime
-import datetime
-
-def main():
-  if len(sys.argv) < 4:
-    print "completion_logger_server.py <listen address> <listen port> <log file>"
-    exit(1)
-
-  host = sys.argv[1]
-  port = int(sys.argv[2])
-  buf = 1024 * 8
-  addr = (host,port)
-  
-  # Create socket and bind to address
-  UDPSock = socket(AF_INET,SOCK_DGRAM)
-  UDPSock.bind(addr)
-  
-  print "Listing on {0}:{1} and logging to '{2}'".format(host, port, sys.argv[3])
-
-  # Open the logging file.
-  f = open(sys.argv[3], "a")
-
-  # Receive messages
-  while 1:
-    data,addr = UDPSock.recvfrom(buf)
-    if not data:
-      break
-    else:
-      f.write("{ ");
-      f.write("\"time\": \"{0}\"".format(datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')))
-      f.write(", \"sender\": \"{0}\" ".format(addr[0]))
-      f.write(", \"data\": ")
-      f.write(data)
-      f.write(" }\n")
-      f.flush()
-
-  # Close socket
-  UDPSock.close()
-
-if __name__ == '__main__':
-  main()

Modified: trunk/contrib/llvm/tools/clang/utils/CaptureCmd
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/CaptureCmd	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/CaptureCmd	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,73 +0,0 @@
-#!/usr/bin/env python
-
-"""CaptureCmd - A generic tool for capturing information about the
-invocations of another program.
-
-Usage
---
-1. Move the original tool to a safe known location.
-
-2. Link CaptureCmd to the original tool's location.
-
-3. Define CAPTURE_CMD_PROGRAM to the known location of the original
-tool; this must be an absolute path.
-
-4. Define CAPTURE_CMD_DIR to a directory to write invocation
-information to.
-"""
-
-import hashlib
-import os
-import sys
-import time
-
-def saveCaptureData(prefix, dir, object):
-    string = repr(object) + '\n'
-    key = hashlib.sha1(string).hexdigest()
-    path = os.path.join(dir,
-                        prefix + key)
-    if not os.path.exists(path):
-        f = open(path, 'wb')
-        f.write(string)
-        f.close()
-    return prefix + key
-
-def main():
-    program = os.getenv('CAPTURE_CMD_PROGRAM')
-    dir = os.getenv('CAPTURE_CMD_DIR')
-    fallback = os.getenv('CAPTURE_CMD_FALLBACK')
-    if not program:
-        raise ValueError('CAPTURE_CMD_PROGRAM is not defined!')
-    if not dir:
-        raise ValueError('CAPTURE_CMD_DIR is not defined!')
-
-    # Make the output directory if it doesn't already exist.
-    if not os.path.exists(dir):
-        os.mkdir(dir, 0700)
-
-    # Get keys for various data.
-    env = os.environ.items()
-    env.sort()
-    envKey = saveCaptureData('env-', dir, env)
-    cwdKey = saveCaptureData('cwd-', dir, os.getcwd())
-    argvKey = saveCaptureData('argv-', dir, sys.argv)
-    entry = (time.time(), envKey, cwdKey, argvKey)
-    saveCaptureData('cmd-', dir, entry)
-
-    if fallback:
-        pid = os.fork()
-        if not pid:
-            os.execv(program, sys.argv)
-            os._exit(1)
-        else:
-            res = os.waitpid(pid, 0)
-            if not res:
-                os.execv(fallback, sys.argv)
-                os._exit(1)
-            os._exit(res)                
-    else:
-        os.execv(program, sys.argv)
-        os._exit(1)
-
-if __name__ == '__main__':
-    main()

Modified: trunk/contrib/llvm/tools/clang/utils/ClangDataFormat.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/ClangDataFormat.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/ClangDataFormat.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,161 +0,0 @@
-"""lldb data formatters for clang classes.
-
-Usage
---
-import this file in your ~/.lldbinit by adding this line:
-
-command script import /path/to/ClangDataFormat.py
-
-After that, instead of getting this:
-
-(lldb) p Tok.Loc
-(clang::SourceLocation) $0 = {
-  (unsigned int) ID = 123582
-}
-
-you'll get:
-
-(lldb) p Tok.Loc
-(clang::SourceLocation) $4 = "/usr/include/i386/_types.h:37:1" (offset: 123582, file, local)
-"""
-
-import lldb
-
-def __lldb_init_module(debugger, internal_dict):
-	debugger.HandleCommand("type summary add -F ClangDataFormat.SourceLocation_summary clang::SourceLocation")
-	debugger.HandleCommand("type summary add -F ClangDataFormat.QualType_summary clang::QualType")
-	debugger.HandleCommand("type summary add -F ClangDataFormat.StringRef_summary llvm::StringRef")
-
-def SourceLocation_summary(srcloc, internal_dict):
-	return SourceLocation(srcloc).summary()
-
-def QualType_summary(qualty, internal_dict):
-	return QualType(qualty).summary()
-
-def StringRef_summary(strref, internal_dict):
-	return StringRef(strref).summary()
-
-class SourceLocation(object):
-	def __init__(self, srcloc):
-		self.srcloc = srcloc
-		self.ID = srcloc.GetChildAtIndex(0).GetValueAsUnsigned()
-		self.frame = srcloc.GetFrame()
-	
-	def offset(self):
-		return getValueFromExpression(self.srcloc, ".getOffset()").GetValueAsUnsigned()
-
-	def isInvalid(self):
-		return self.ID == 0
-
-	def isMacro(self):
-		return getValueFromExpression(self.srcloc, ".isMacroID()").GetValueAsUnsigned()
-
-	def isLocal(self, srcmgr_path):
-		return self.frame.EvaluateExpression("(%s).isLocalSourceLocation(%s)" % (srcmgr_path, getExpressionPath(self.srcloc))).GetValueAsUnsigned()
-
-	def getPrint(self, srcmgr_path):
-		print_str = getValueFromExpression(self.srcloc, ".printToString(%s)" % srcmgr_path)
-		return print_str.GetSummary()
-
-	def summary(self):
-		if self.isInvalid():
-			return "<invalid loc>"
-		srcmgr_path = findObjectExpressionPath("clang::SourceManager", self.frame)
-		if srcmgr_path:
-			return "%s (offset: %d, %s, %s)" % (self.getPrint(srcmgr_path), self.offset(), "macro" if self.isMacro() else "file", "local" if self.isLocal(srcmgr_path) else "loaded")
-		return "(offset: %d, %s)" % (self.offset(), "macro" if self.isMacro() else "file")
-
-class QualType(object):
-	def __init__(self, qualty):
-		self.qualty = qualty
-
-	def getAsString(self):
-		std_str = getValueFromExpression(self.qualty, ".getAsString()")
-		return std_str.GetSummary()
-
-	def summary(self):
-		desc = self.getAsString()
-		if desc == '"NULL TYPE"':
-			return "<NULL TYPE>"
-		return desc
-
-class StringRef(object):
-	def __init__(self, strref):
-		self.strref = strref
-		self.Data_value = strref.GetChildAtIndex(0)
-		self.Length = strref.GetChildAtIndex(1).GetValueAsUnsigned()
-
-	def summary(self):
-		if self.Length == 0:
-			return '""'
-		data = self.Data_value.GetPointeeData(0, self.Length)
-		error = lldb.SBError()
-		string = data.ReadRawData(error, 0, data.GetByteSize())
-		if error.Fail():
-			return None
-		return '"%s"' % string
-
-
-# Key is a (function address, type name) tuple, value is the expression path for
-# an object with such a type name from inside that function.
-FramePathMapCache = {}
-
-def findObjectExpressionPath(typename, frame):
-	func_addr = frame.GetFunction().GetStartAddress().GetFileAddress()
-	key = (func_addr, typename)
-	try:
-		return FramePathMapCache[key]
-	except KeyError:
-		#print "CACHE MISS"
-		path = None
-		obj = findObject(typename, frame)
-		if obj:
-			path = getExpressionPath(obj)
-		FramePathMapCache[key] = path
-		return path
-
-def findObject(typename, frame):
-	def getTypename(value):
-		# FIXME: lldb should provide something like getBaseType
-		ty = value.GetType()
-		if ty.IsPointerType() or ty.IsReferenceType():
-			return ty.GetPointeeType().GetName()
-		return ty.GetName()
-
-	def searchForType(value, searched):
-		tyname = getTypename(value)
-		#print "SEARCH:", getExpressionPath(value), value.GetType().GetName()
-		if tyname == typename:
-			return value
-		ty = value.GetType()
-		if not (ty.IsPointerType() or
-		        ty.IsReferenceType() or
-				# FIXME: lldb should provide something like getCanonicalType
-		        tyname.startswith("llvm::IntrusiveRefCntPtr<") or
-		        tyname.startswith("llvm::OwningPtr<")):
-			return None
-		# FIXME: Hashing for SBTypes does not seem to work correctly, uses the typename instead,
-		# and not the canonical one unfortunately.
-		if tyname in searched:
-			return None
-		searched.add(tyname)
-		for i in range(value.GetNumChildren()):
-			child = value.GetChildAtIndex(i, 0, False)
-			found = searchForType(child, searched)
-			if found:
-				return found
-
-	searched = set()
-	value_list = frame.GetVariables(True, True, True, True)
-	for val in value_list:
-		found = searchForType(val, searched)
-		if found:
-			return found if not found.TypeIsPointerType() else found.Dereference()
-
-def getValueFromExpression(val, expr):
-	return val.GetFrame().EvaluateExpression(getExpressionPath(val) + expr)
-
-def getExpressionPath(val):
-	stream = lldb.SBStream()
-	val.GetExpressionPath(stream)
-	return stream.GetData()

Modified: trunk/contrib/llvm/tools/clang/utils/CmpDriver
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/CmpDriver	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/CmpDriver	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,210 +0,0 @@
-#!/usr/bin/env python
-
-import subprocess
-
-def splitArgs(s):
-    it = iter(s)
-    current = ''
-    inQuote = False
-    for c in it:
-        if c == '"':
-            if inQuote:
-                inQuote = False
-                yield current + '"'
-            else:
-                inQuote = True
-                current = '"'
-        elif inQuote:
-            if c == '\\':
-                current += c
-                current += it.next()
-            else:
-                current += c
-        elif not c.isspace():
-            yield c
-
-def insertMinimumPadding(a, b, dist):
-    """insertMinimumPadding(a,b) -> (a',b')
-
-    Return two lists of equal length, where some number of Nones have
-    been inserted into the shorter list such that sum(map(dist, a',
-    b')) is minimized.
-
-    Assumes dist(X, Y) -> int and non-negative.
-    """
-    
-    def cost(a, b):
-        return sum(map(dist, a + [None] * (len(b) - len(a)), b))
-
-    # Normalize so a is shortest.
-    if len(b) < len(a):
-        b, a = insertMinimumPadding(b, a, dist)
-        return a,b
-
-    # For each None we have to insert...
-    for i in range(len(b) - len(a)):
-        # For each position we could insert it...
-        current = cost(a, b)
-        best = None
-        for j in range(len(a) + 1):
-            a_0 = a[:j] + [None] + a[j:]
-            candidate = cost(a_0, b)
-            if best is None or candidate < best[0]:
-                best = (candidate, a_0, j)
-        a = best[1]
-    return a,b
-
-class ZipperDiff(object):
-    """ZipperDiff - Simple (slow) diff only accommodating inserts."""
-    
-    def __init__(self, a, b):
-        self.a = a
-        self.b = b
-
-    def dist(self, a, b):
-        return a != b
-
-    def getDiffs(self):
-        a,b =  insertMinimumPadding(self.a, self.b, self.dist)
-        for aElt,bElt in zip(a,b):
-            if self.dist(aElt, bElt):
-                yield aElt,bElt
-
-class DriverZipperDiff(ZipperDiff):
-    def isTempFile(self, filename):
-        if filename[0] != '"' or filename[-1] != '"':
-            return False
-        return (filename.startswith('/tmp/', 1) or
-                filename.startswith('/var/', 1))
-
-    def dist(self, a, b):
-        if a and b and self.isTempFile(a) and self.isTempFile(b):
-            return 0
-        return super(DriverZipperDiff, self).dist(a,b)        
-
-class CompileInfo:
-    def __init__(self, out, err, res):
-        self.commands = []
-        
-        # Standard out isn't used for much.
-        self.stdout = out
-        self.stderr = ''
-
-        # FIXME: Compare error messages as well.
-        for ln in err.split('\n'):
-            if (ln == 'Using built-in specs.' or
-                ln.startswith('Target: ') or
-                ln.startswith('Configured with: ') or
-                ln.startswith('Thread model: ') or
-                ln.startswith('gcc version') or
-                ln.startswith('clang version')):
-                pass
-            elif ln.strip().startswith('"'):
-                self.commands.append(list(splitArgs(ln)))
-            else:
-                self.stderr += ln + '\n'
-        
-        self.stderr = self.stderr.strip()
-        self.exitCode = res
-
-def captureDriverInfo(cmd, args):
-    p = subprocess.Popen([cmd,'-###'] + args,
-                         stdin=None,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-    out,err = p.communicate()
-    res = p.wait()
-    return CompileInfo(out,err,res)
-
-def main():
-    import os, sys
-
-    args = sys.argv[1:]
-    driverA = os.getenv('DRIVER_A') or 'gcc'
-    driverB = os.getenv('DRIVER_B') or 'clang'
-
-    infoA = captureDriverInfo(driverA, args)
-    infoB = captureDriverInfo(driverB, args)
-
-    differ = False
-
-    # Compare stdout.
-    if infoA.stdout != infoB.stdout:
-        print '-- STDOUT DIFFERS -'
-        print 'A OUTPUT: ',infoA.stdout
-        print 'B OUTPUT: ',infoB.stdout
-        print
-
-        diff = ZipperDiff(infoA.stdout.split('\n'),
-                          infoB.stdout.split('\n'))
-        for i,(aElt,bElt) in enumerate(diff.getDiffs()):
-            if aElt is None:
-                print 'A missing: %s' % bElt
-            elif bElt is None:
-                print 'B missing: %s' % aElt
-            else:
-                print 'mismatch: A: %s' % aElt
-                print '          B: %s' % bElt
-
-        differ = True
-
-    # Compare stderr.
-    if infoA.stderr != infoB.stderr:
-        print '-- STDERR DIFFERS -'
-        print 'A STDERR: ',infoA.stderr
-        print 'B STDERR: ',infoB.stderr
-        print
-
-        diff = ZipperDiff(infoA.stderr.split('\n'),
-                          infoB.stderr.split('\n'))
-        for i,(aElt,bElt) in enumerate(diff.getDiffs()):
-            if aElt is None:
-                print 'A missing: %s' % bElt
-            elif bElt is None:
-                print 'B missing: %s' % aElt
-            else:
-                print 'mismatch: A: %s' % aElt
-                print '          B: %s' % bElt
-
-        differ = True
-
-    # Compare commands.
-    for i,(a,b) in enumerate(map(None, infoA.commands, infoB.commands)):
-        if a is None:
-            print 'A MISSING:',' '.join(b)
-            differ = True
-            continue
-        elif b is None:
-            print 'B MISSING:',' '.join(a)
-            differ = True
-            continue
-
-        diff = DriverZipperDiff(a,b)
-        diffs = list(diff.getDiffs())
-        if diffs:
-            print '-- COMMAND %d DIFFERS -' % i
-            print 'A COMMAND:',' '.join(a)
-            print 'B COMMAND:',' '.join(b)
-            print
-            for i,(aElt,bElt) in enumerate(diffs):
-                if aElt is None:
-                    print 'A missing: %s' % bElt
-                elif bElt is None:
-                    print 'B missing: %s' % aElt
-                else:
-                    print 'mismatch: A: %s' % aElt
-                    print '          B: %s' % bElt
-            differ = True
-    
-    # Compare result codes.
-    if infoA.exitCode != infoB.exitCode:
-        print '-- EXIT CODES DIFFER -'
-        print 'A: ',infoA.exitCode
-        print 'B: ',infoB.exitCode
-        differ = True
-
-    if differ:
-        sys.exit(1)
-
-if __name__ == '__main__':
-    main()

Modified: trunk/contrib/llvm/tools/clang/utils/FindSpecRefs
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/FindSpecRefs	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/FindSpecRefs	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,910 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import re
-import time
-from pprint import pprint
-
-###
-
-c99URL = 'http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf'
-c99TOC = [('Foreword', 'xi'),
-('Introduction', 'xiv'),
-('1. Scope', '1'),
-('2. Normative references', '2'),
-('3. Terms, definitions, and symbols', '3'),
-('4. Conformance', '7'),
-('5. Environment', '9'),
-('5.1 Conceptual models', '9'),
-('5.1.1 Translation environment', '9'),
-('5.1.2 Execution environments', '11'),
-('5.2 Environmental considerations', '17'),
-('5.2.1 Character sets', '17'),
-('5.2.2 Character display semantics', '19'),
-('5.2.3 Signals and interrupts', '20'),
-('5.2.4 Environmental limits', '20'),
-('6. Language', '29'),
-('6.1 Notation', '29'),
-('6.2 Concepts', '29'),
-('6.2.1 Scopes of identifiers', '29'),
-('6.2.2 Linkages of identifiers', '30'),
-('6.2.3 Name spaces of identifiers', '31'),
-('6.2.4 Storage durations of objects', '32'),
-('6.2.5 Types', '33'),
-('6.2.6 Representations of types', '37'),
-('6.2.7 Compatible type and composite type', '40'),
-('6.3 Conversions', '42'),
-('6.3.1 Arithmetic operands', '42'),
-('6.3.2 Other operands', '46'),
-('6.4 Lexical elements', '49'),
-('6.4.1 Keywords', '50'),
-('6.4.2 Identifiers', '51'),
-('6.4.3 Universal character names', '53'),
-('6.4.4 Constants', '54'),
-('6.4.5 String literals', '62'),
-('6.4.6 Punctuators', '63'),
-('6.4.7 Header names', '64'),
-('6.4.8 Preprocessing numbers', '65'),
-('6.4.9 Comments', '66'),
-('6.5 Expressions', '67'),
-('6.5.1 Primary expressions', '69'),
-('6.5.2 Postfix operators', '69'),
-('6.5.3 Unary operators', '78'),
-('6.5.4 Cast operators', '81'),
-('6.5.5 Multiplicative operators', '82'),
-('6.5.6 Additive operators', '82'),
-('6.5.7 Bitwise shift operators', '84'),
-('6.5.8 Relational operators', '85'),
-('6.5.9 Equality operators', '86'),
-('6.5.10 Bitwise AND operator', '87'),
-('6.5.11 Bitwise exclusive OR operator', '88'),
-('6.5.12 Bitwise inclusive OR operator', '88'),
-('6.5.13 Logical AND operator', '89'),
-('6.5.14 Logical OR operator', '89'),
-('6.5.15 Conditional operator', '90'),
-('6.5.16 Assignment operators', '91'),
-('6.5.17 Comma operator', '94'),
-('6.6 Constant expressions', '95'),
-('6.7 Declarations', '97'),
-('6.7.1 Storage-class specifiers', '98'),
-('6.7.2 Type specifiers', '99'),
-('6.7.3 Type qualifiers', '108'),
-('6.7.4 Function specifiers', '112'),
-('6.7.5 Declarators', '114'),
-('6.7.6 Type names', '122'),
-('6.7.7 Type definitions', '123'),
-('6.7.8 Initialization', '125'),
-('6.8 Statements and blocks', '131'),
-('6.8.1 Labeled statements', '131'),
-('6.8.2 Compound statement', '132'),
-('6.8.3 Expression and null statements', '132'),
-('6.8.4 Selection statements', '133'),
-('6.8.5 Iteration statements', '135'),
-('6.8.6 Jump statements', '136'),
-('6.9 External definitions', '140'),
-('6.9.1 Function definitions', '141'),
-('6.9.2 External object definitions', '143'),
-('6.10 Preprocessing directives', '145'),
-('6.10.1 Conditional inclusion', '147'),
-('6.10.2 Source file inclusion', '149'),
-('6.10.3 Macro replacement', '151'),
-('6.10.4 Line control', '158'),
-('6.10.5 Error directive', '159'),
-('6.10.6 Pragma directive', '159'),
-('6.10.7 Null directive', '160'),
-('6.10.8 Predefined macro names', '160'),
-('6.10.9 Pragma operator', '161'),
-('6.11 Future language directions', '163'),
-('6.11.1 Floating types', '163'),
-('6.11.2 Linkages of identifiers', '163'),
-('6.11.3 External names', '163'),
-('6.11.4 Character escape sequences', '163'),
-('6.11.5 Storage-class specifiers', '163'),
-('6.11.6 Function declarators', '163'),
-('6.11.7 Function definitions', '163'),
-('6.11.8 Pragma directives', '163'),
-('6.11.9 Predefined macro names', '163'),
-('7. Library', '164'),
-('7.1 Introduction', '164'),
-('7.1.1 Definitions of terms', '164'),
-('7.1.2 Standard headers', '165'),
-('7.1.3 Reserved identifiers', '166'),
-('7.1.4 Use of library functions', '166'),
-('7.2 Diagnostics <assert.h>', '169'),
-('7.2.1 Program diagnostics', '169'),
-('7.3 Complex arithmetic <complex.h>', '170'),
-('7.3.1 Introduction', '170'),
-('7.3.2 Conventions', '170'),
-('7.3.3 Branch cuts', '171'),
-('7.3.4 The CX_LIMITED_RANGE pragma', '171'),
-('7.3.5 Trigonometric functions', '172'),
-('7.3.6 Hyperbolic functions', '174'),
-('7.3.7 Exponential and logarithmic functions', '176'),
-('7.3.8 Power and absolute-value functions', '177'),
-('7.3.9 Manipulation functions', '178'),
-('7.4 Character handling <ctype.h>', '181'),
-('7.4.1 Character classification functions', '181'),
-('7.4.2 Character case mapping functions', '184'),
-('7.5 Errors <errno.h>', '186'),
-('7.6 Floating-point environment <fenv.h>', '187'),
-('7.6.1 The FENV_ACCESS pragma', '189'),
-('7.6.2 Floating-point exceptions', '190'),
-('7.6.3 Rounding', '193'),
-('7.6.4 Environment', '194'),
-('7.7 Characteristics of floating types <float.h>', '197'),
-('7.8 Format conversion of integer types <inttypes.h>', '198'),
-('7.8.1 Macros for format specifiers', '198'),
-('7.8.2 Functions for greatest-width integer types', '199'),
-('7.9 Alternative spellings <iso646.h>', '202'),
-('7.10 Sizes of integer types <limits.h>', '203'),
-('7.11 Localization <locale.h>', '204'),
-('7.11.1 Locale control', '205'),
-('7.11.2 Numeric formatting convention inquiry', '206'),
-('7.12 Mathematics <math.h>', '212'),
-('7.12.1 Treatment of error conditions', '214'),
-('7.12.2 The FP_CONTRACT pragma', '215'),
-('7.12.3 Classification macros', '216'),
-('7.12.4 Trigonometric functions', '218'),
-('7.12.5 Hyperbolic functions', '221'),
-('7.12.6 Exponential and logarithmic functions', '223'),
-('7.12.7 Power and absolute-value functions', '228'),
-('7.12.8 Error and gamma functions', '230'),
-('7.12.9 Nearest integer functions', '231'),
-('7.12.10 Remainder functions', '235'),
-('7.12.11 Manipulation functions', '236'),
-('7.12.12 Maximum, minimum, and positive difference functions', '238'),
-('7.12.13 Floating multiply-add', '239'),
-('7.12.14 Comparison macros', '240'),
-('7.13 Nonlocal jumps <setjmp.h>', '243'),
-('7.13.1 Save calling environment', '243'),
-('7.13.2 Restore calling environment', '244'),
-('7.14 Signal handling <signal.h>', '246'),
-('7.14.1 Specify signal handling', '247'),
-('7.14.2 Send signal', '248'),
-('7.15 Variable arguments <stdarg.h>', '249'),
-('7.15.1 Variable argument list access macros', '249'),
-('7.16 Boolean type and values <stdbool.h>', '253'),
-('7.17 Common definitions <stddef.h>', '254'),
-('7.18 Integer types <stdint.h>', '255'),
-('7.18.1 Integer types', '255'),
-('7.18.2 Limits of specified-width integer types', '257'),
-('7.18.3 Limits of other integer types', '259'),
-('7.18.4 Macros for integer constants', '260'),
-('7.19 Input/output <stdio.h>', '262'),
-('7.19.1 Introduction', '262'),
-('7.19.2 Streams', '264'),
-('7.19.3 Files', '266'),
-('7.19.4 Operations on files', '268'),
-('7.19.5 File access functions', '270'),
-('7.19.6 Formatted input/output functions', '274'),
-('7.19.7 Character input/output functions', '296'),
-('7.19.8 Direct input/output functions', '301'),
-('7.19.9 File positioning functions', '302'),
-('7.19.10 Error-handling functions', '304'),
-('7.20 General utilities <stdlib.h>', '306'),
-('7.20.1 Numeric conversion functions', '307'),
-('7.20.2 Pseudo-random sequence generation functions', '312'),
-('7.20.3 Memory management functions', '313'),
-('7.20.4 Communication with the environment', '315'),
-('7.20.5 Searching and sorting utilities', '318'),
-('7.20.6 Integer arithmetic functions', '320'),
-('7.20.7 Multibyte/wide character conversion functions', '321'),
-('7.20.8 Multibyte/wide string conversion functions', '323'),
-('7.21 String handling <string.h>', '325'),
-('7.21.1 String function conventions', '325'),
-('7.21.2 Copying functions', '325'),
-('7.21.3 Concatenation functions', '327'),
-('7.21.4 Comparison functions', '328'),
-('7.21.5 Search functions', '330'),
-('7.21.6 Miscellaneous functions', '333'),
-('7.22 Type-generic math <tgmath.h>', '335'),
-('7.23 Date and time <time.h>', '338'),
-('7.23.1 Components of time', '338'),
-('7.23.2 Time manipulation functions', '339'),
-('7.23.3 Time conversion functions', '341'),
-('7.24 Extended multibyte and wide character utilities <wchar.h>', '348'),
-('7.24.1 Introduction', '348'),
-('7.24.2 Formatted wide character input/output functions', '349'),
-('7.24.3 Wide character input/output functions', '367'),
-('7.24.4 General wide string utilities', '371'),
-('7.24.5 Wide character time conversion functions', '385'),
-('7.24.6 Extended multibyte/wide character conversion utilities', '386'),
-('7.25 Wide character classification and mapping utilities <wctype.h>',
-  '393'),
-('7.25.1 Introduction', '393'),
-('7.25.2 Wide character classification utilities', '394'),
-('7.25.3 Wide character case mapping utilities', '399'),
-('7.26 Future library directions', '401'),
-('7.26.1 Complex arithmetic <complex.h>', '401'),
-('7.26.2 Character handling <ctype.h>', '401'),
-('7.26.3 Errors <errno.h>', '401'),
-('7.26.4 Format conversion of integer types <inttypes.h>', '401'),
-('7.26.5 Localization <locale.h>', '401'),
-('7.26.6 Signal handling <signal.h>', '401'),
-('7.26.7 Boolean type and values <stdbool.h>', '401'),
-('7.26.8 Integer types <stdint.h>', '401'),
-('7.26.9 Input/output <stdio.h>', '402'),
-('7.26.10 General utilities <stdlib.h>', '402'),
-('7.26.11 String handling <string.h>', '402'),
-('<wchar.h>', '402'),
-('<wctype.h>', '402'),
-('Annex A (informative) Language syntax summary', '403'),
-('A.1 Lexical grammar', '403'),
-('A.2 Phrase structure grammar', '409'),
-('A.3 Preprocessing directives', '416'),
-('Annex B (informative) Library summary', '418'),
-('B.1 Diagnostics <assert.h>', '418'),
-('B.2 Complex <complex.h>', '418'),
-('B.3 Character handling <ctype.h>', '420'),
-('B.4 Errors <errno.h>', '420'),
-('B.5 Floating-point environment <fenv.h>', '420'),
-('B.6 Characteristics of floating types <float.h>', '421'),
-('B.7 Format conversion of integer types <inttypes.h>', '421'),
-('B.8 Alternative spellings <iso646.h>', '422'),
-('B.9 Sizes of integer types <limits.h>', '422'),
-('B.10 Localization <locale.h>', '422'),
-('B.11 Mathematics <math.h>', '422'),
-('B.12 Nonlocal jumps <setjmp.h>', '427'),
-('B.13 Signal handling <signal.h>', '427'),
-('B.14 Variable arguments <stdarg.h>', '427'),
-('B.15 Boolean type and values <stdbool.h>', '427'),
-('B.16 Common definitions <stddef.h>', '428'),
-('B.17 Integer types <stdint.h>', '428'),
-('B.18 Input/output <stdio.h>', '428'),
-('B.19 General utilities <stdlib.h>', '430'),
-('B.20 String handling <string.h>', '432'),
-('B.21 Type-generic math <tgmath.h>', '433'),
-('B.22 Date and time <time.h>', '433'),
-('B.23 Extended multibyte/wide character utilities <wchar.h>', '434'),
-('B.24 Wide character classification and mapping utilities <wctype.h>',
-  '436'),
-('Annex C (informative) Sequence points', '438'),
-('Annex D (normative) Universal character names for identifiers', '439'),
-('Annex E (informative) Implementation limits', '441'),
-('Annex F (normative) IEC 60559 floating-point arithmetic', '443'),
-('F.1 Introduction', '443'),
-('F.2 Types', '443'),
-('F.3 Operators and functions', '444'),
-('F.4 Floating to integer conversion', '446'),
-('F.5 Binary-decimal conversion', '446'),
-('F.6 Contracted expressions', '447'),
-('F.7 Floating-point environment', '447'),
-('F.8 Optimization', '450'),
-('F.9 Mathematics <math.h>', '453'),
-('Annex G (informative) IEC 60559-compatible complex arithmetic', '466'),
-('G.1 Introduction', '466'),
-('G.2 Types', '466'),
-('G.3 Conventions', '466'),
-('G.4 Conversions', '467'),
-('G.5 Binary operators', '467'),
-('G.6 Complex arithmetic <complex.h>', '471'),
-('G.7 Type-generic math <tgmath.h>', '479'),
-('Annex H (informative) Language independent arithmetic', '480'),
-('H.1 Introduction', '480'),
-('H.2 Types', '480'),
-('H.3 Notification', '484'),
-('Annex I (informative) Common warnings', '486'),
-('Annex J (informative) Portability issues', '488'),
-('J.1 Unspecified behavior', '488'),
-('J.2 Undefined behavior', '491'),
-('J.3 Implementation-defined behavior', '504'),
-('J.4 Locale-specific behavior', '511'),
-('J.5 Common extensions', '512'),
-('Bibliography', '515'),
-('Index', '517')]
-
-cXXURL = 'http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2723.pdf'
-cXXTOC = [('Contents', 'ii'),
-('List of Tables', 'ix'),
-('1 General', '1'),
-('1.1 Scope', '1'),
-('1.2 Normative references', '1'),
-('1.3 Definitions', '2'),
-('1.4 Implementation compliance', '4'),
-('1.5 Structure of this International Standard', '5'),
-('1.6 Syntax notation', '5'),
-('1.7 The C++ memory model', '6'),
-('1.8 The C++ object model', '6'),
-('1.9 Program execution', '7'),
-('1.10 Multi-threaded executions and data races', '10'),
-('1.11 Acknowledgments', '13'),
-('2 Lexical conventions', '15'),
-('2.1 Phases of translation', '15'),
-('2.2 Character sets', '16'),
-('2.3 Trigraph sequences', '17'),
-('2.4 Preprocessing tokens', '17'),
-('2.5 Alternative tokens', '18'),
-('2.6 Tokens', '19'),
-('2.7 Comments', '19'),
-('2.8 Header names', '19'),
-('2.9 Preprocessing numbers', '20'),
-('2.10 Identifiers', '20'),
-('2.11 Keywords', '20'),
-('2.12 Operators and punctuators', '21'),
-('2.13 Literals', '21'),
-('3 Basic concepts', '29'),
-('3.1 Declarations and definitions', '29'),
-('3.2 One definition rule', '31'),
-('3.3 Declarative regions and scopes', '33'),
-('3.4 Name lookup', '38'),
-('3.5 Program and linkage', '51'),
-('3.6 Start and termination', '54'),
-('3.7 Storage duration', '58'),
-('3.8 Object Lifetime', '62'),
-('3.9 Types', '65'),
-('3.10 Lvalues and rvalues', '70'),
-('3.11 Alignment', '72'),
-('4 Standard conversions', '73'),
-('4.1 Lvalue-to-rvalue conversion', '74'),
-('4.2 Array-to-pointer conversion', '74'),
-('4.3 Function-to-pointer conversion', '74'),
-('4.4 Qualification conversions', '74'),
-('4.5 Integral promotions', '75'),
-('4.6 Floating point promotion', '76'),
-('4.7 Integral conversions', '76'),
-('4.8 Floating point conversions', '76'),
-('4.9 Floating-integral conversions', '77'),
-('4.10 Pointer conversions', '77'),
-('4.11 Pointer to member conversions', '77'),
-('4.12 Boolean conversions', '78'),
-('4.13 Integer conversion rank', '78'),
-('5 Expressions', '79'),
-('5.1 Primary expressions', '80'),
-('5.2 Postfix expressions', '85'),
-('5.3 Unary expressions', '96'),
-('5.4 Explicit type conversion (cast notation)', '104'),
-('5.5 Pointer-to-member operators', '105'),
-('5.6 Multiplicative operators', '106'),
-('5.7 Additive operators', '106'),
-('5.8 Shift operators', '107'),
-('5.9 Relational operators', '108'),
-('5.10 Equality operators', '109'),
-('5.11 Bitwise AND operator', '110'),
-('5.12 Bitwise exclusive OR operator', '110'),
-('5.13 Bitwise inclusive OR operator', '110'),
-('5.14 Logical AND operator', '110'),
-('5.15 Logical OR operator', '110'),
-('5.16 Conditional operator', '111'),
-('5.17 Assignment and compound assignment operators', '112'),
-('5.18 Comma operator', '113'),
-('5.19 Constant expressions', '113'),
-('6 Statements', '116'),
-('6.1 Labeled statement', '116'),
-('6.2 Expression statement', '116'),
-('6.3 Compound statement or block', '116'),
-('6.4 Selection statements', '117'),
-('6.5 Iteration statements', '118'),
-('6.6 Jump statements', '121'),
-('6.7 Declaration statement', '122'),
-('6.8 Ambiguity resolution', '123'),
-('7 Declarations', '125'),
-('7.1 Specifiers', '126'),
-('7.2 Enumeration declarations', '140'),
-('7.3 Namespaces', '143'),
-('7.4 The asm declaration', '156'),
-('7.5 Linkage specifications', '156'),
-('8 Declarators', '160'),
-('8.1 Type names', '161'),
-('8.2 Ambiguity resolution', '161'),
-('8.3 Meaning of declarators', '163'),
-('8.4 Function definitions', '175'),
-('8.5 Initializers', '177'),
-('9 Classes', '191'),
-('9.1 Class names', '193'),
-('9.2 Class members', '194'),
-('9.3 Member functions', '197'),
-('9.4 Static members', '200'),
-('9.5 Unions', '202'),
-('9.6 Bit-fields', '203'),
-('9.7 Nested class declarations', '204'),
-('9.8 Local class declarations', '205'),
-('9.9 Nested type names', '206'),
-('10 Derived classes', '207'),
-('10.1 Multiple base classes', '208'),
-('10.2 Member name lookup', '210'),
-('10.3 Virtual functions', '213'),
-('10.4 Abstract classes', '217'),
-('11 Member access control', '219'),
-('11.1 Access specifiers', '221'),
-('11.2 Accessibility of base classes and base class members', '222'),
-('11.3 Access declarations', '224'),
-('11.4 Friends', '225'),
-('11.5 Protected member access', '228'),
-('11.6 Access to virtual functions', '229'),
-('11.7 Multiple access', '230'),
-('11.8 Nested classes', '230'),
-('12 Special member functions', '231'),
-('12.1 Constructors', '231'),
-('12.2 Temporary objects', '233'),
-('12.3 Conversions', '235'),
-('12.4 Destructors', '238'),
-('12.5 Free store', '240'),
-('12.6 Initialization', '242'),
-('12.7 Construction and destruction', '247'),
-('12.8 Copying class objects', '250'),
-('12.9 Inheriting Constructors', '255'),
-('13 Overloading', '259'),
-('13.1 Overloadable declarations', '259'),
-('13.2 Declaration matching', '261'),
-('13.3 Overload resolution', '262'),
-('13.4 Address of overloaded function', '281'),
-('13.5 Overloaded operators', '282'),
-('13.6 Built-in operators', '286'),
-('14 Templates', '290'),
-('14.1 Template parameters', '291'),
-('14.2 Names of template specializations', '294'),
-('14.3 Template arguments', '296'),
-('14.4 Type equivalence', '302'),
-('14.5 Template declarations', '303'),
-('14.6 Name resolution', '318'),
-('14.7 Template instantiation and specialization', '331'),
-('14.8 Function template specializations', '343'),
-('15 Exception handling', '363'),
-('15.1 Throwing an exception', '364'),
-('15.2 Constructors and destructors', '366'),
-('15.3 Handling an exception', '366'),
-('15.4 Exception specifications', '368'),
-('15.5 Special functions', '371'),
-('15.6 Exceptions and access', '372'),
-('16 Preprocessing directives', '373'),
-('16.1 Conditional inclusion', '375'),
-('16.2 Source file inclusion', '376'),
-('16.3 Macro replacement', '377'),
-('16.4 Line control', '382'),
-('16.5 Error directive', '383'),
-('16.6 Pragma directive', '383'),
-('16.7 Null directive', '383'),
-('16.8 Predefined macro names', '383'),
-('16.9 Pragma operator', '384'),
-('17 Library introduction', '386'),
-('17.1 General', '386'),
-('17.2 Overview', '386'),
-('17.3 Definitions', '386'),
-('17.4 Additional definitions', '390'),
-('17.5 Method of description (Informative)', '390'),
-('17.6 Library-wide requirements', '396'),
-('18 Language support library', '407'),
-('18.1 Types', '407'),
-('18.2 Implementation properties', '408'),
-('18.3 Integer types', '417'),
-('18.4 Start and termination', '418'),
-('18.5 Dynamic memory management', '420'),
-('18.6 Type identification', '424'),
-('18.7 Exception handling', '427'),
-('18.8 Initializer lists', '432'),
-('18.9 Other runtime support', '434'),
-('19 Diagnostics library', '435'),
-('19.1 Exception classes', '435'),
-('19.2 Assertions', '439'),
-('19.3 Error numbers', '440'),
-('19.4 System error support', '440'),
-('20 General utilities library', '452'),
-('20.1 Requirements', '452'),
-('20.2 Utility components', '457'),
-('20.3 Compile-time rational arithmetic', '463'),
-('20.4 Tuples', '465'),
-('20.5 Metaprogramming and type traits', '473'),
-('20.6 Function objects', '486'),
-('20.7 Memory', '509'),
-('20.8 Time utilities', '548'),
-('20.9 Date and time functions', '562'),
-('21 Strings library', '563'),
-('21.1 Character traits', '563'),
-('21.2 String classes', '569'),
-('21.3 Class template basic_string', '572'),
-('21.4 Numeric Conversions', '599'),
-('21.5 Null-terminated sequence utilities', '600'),
-('22 Localization library', '604'),
-('22.1 Locales', '604'),
-('22.2 Standard locale categories', '617'),
-('22.3 Standard code conversion facets', '657'),
-('22.4 C Library Locales', '659'),
-('23 Containers library', '660'),
-('23.1 Container requirements', '660'),
-('23.2 Sequence containers', '681'),
-('23.3 Associative containers', '719'),
-('23.4 Unordered associative containers', '744'),
-('24 Iterators library', '759'),
-('24.1 Iterator requirements', '759'),
-('24.2 Header <iterator> synopsis', '764'),
-('24.3 Iterator primitives', '767'),
-('24.4 Predefined iterators', '770'),
-('24.5 Stream iterators', '784'),
-('25 Algorithms library', '792'),
-('25.1 Non-modifying sequence operations', '802'),
-('25.2 Mutating sequence operations', '806'),
-('25.3 Sorting and related operations', '815'),
-('25.4 C library algorithms', '829'),
-('26 Numerics library', '831'),
-('26.1 Numeric type requirements', '831'),
-('26.2 The floating-point environment', '832'),
-('26.3 Complex numbers', '833'),
-('26.4 Random number generation', '842'),
-('26.5 Numeric arrays', '884'),
-('26.6 Generalized numeric operations', '904'),
-('26.7 C Library', '907'),
-('27 Input/output library', '912'),
-('27.1 Iostreams requirements', '912'),
-('27.2 Forward declarations', '912'),
-('27.3 Standard iostream objects', '915'),
-('27.4 Iostreams base classes', '916'),
-('27.5 Stream buffers', '934'),
-('27.6 Formatting and manipulators', '944'),
-('27.7 String-based streams', '972'),
-('27.8 File-based streams', '984'),
-('28 Regular expressions library', '1000'),
-('28.1 Definitions', '1000'),
-('28.2 Requirements', '1000'),
-('28.3 Regular expressions summary', '1002'),
-('28.4 Header <regex> synopsis', '1003'),
-('28.5 Namespace std::regex_constants', '1009'),
-('28.6 Class regex_error', '1012'),
-('28.7 Class template regex_traits', '1012'),
-('28.8 Class template basic_regex', '1015'),
-('28.9 Class template sub_match', '1020'),
-('28.10Class template match_results', '1025'),
-('28.11Regular expression algorithms', '1029'),
-('28.12Regular expression Iterators', '1033'),
-('28.13Modified ECMAScript regular expression grammar', '1039'),
-('29 Atomic operations library', '1042'),
-('29.1 Order and Consistency', '1044'),
-('29.2 Lock-free Property', '1046'),
-('29.3 Atomic Types', '1046'),
-('29.4 Operations on Atomic Types', '1051'),
-('29.5 Flag Type and Operations', '1054'),
-('30 Thread support library', '1057'),
-('30.1 Requirements', '1057'),
-('30.2 Threads', '1058'),
-('30.3 Mutual exclusion', '1063'),
-('30.4 Condition variables', '1077'),
-('A Grammar summary', '1085'),
-('A.1 Keywords', '1085'),
-('A.2 Lexical conventions', '1085'),
-('A.3 Basic concepts', '1089'),
-('A.4 Expressions', '1090'),
-('A.5 Statements', '1093'),
-('A.6 Declarations', '1094'),
-('A.7 Declarators', '1097'),
-('A.8 Classes', '1098'),
-('A.9 Derived classes', '1099'),
-('A.10 Special member functions', '1099'),
-('A.11 Overloading', '1100'),
-('A.12 Templates', '1100'),
-('A.13 Exception handling', '1101'),
-('A.14 Preprocessing directives', '1101'),
-('B Implementation quantities', '1103'),
-('C Compatibility', '1105'),
-('C.1 C++ and ISO C', '1105'),
-('C.2 Standard C library', '1114'),
-('D Compatibility features', '1119'),
-('D.1 Increment operator with bool operand', '1119'),
-('D.2 static keyword', '1119'),
-('D.3 Access declarations', '1119'),
-('D.4 Implicit conversion from const strings', '1119'),
-('D.5 C standard library headers', '1119'),
-('D.6 Old iostreams members', '1120'),
-('D.7 char* streams', '1121'),
-('D.8 Binders', '1130'),
-('D.9 auto_ptr', '1132'),
-('E Universal-character-names', '1135'),
-('F Cross references', '1137'),
-('Index', '1153')]
-
-kDocuments = {
-    'C99' : (c99URL, c99TOC, 12),
-    'C++' : (cXXURL, cXXTOC, 12),
-}
-
-def findClosestTOCEntry(data, target):
-    # FIXME: Fix for named spec references
-    if isinstance(target[0],str):
-        return ('.'.join(target),'<named>',1)
-
-    offset = data[2]
-    best = None
-    for (name,page) in data[1]:
-        if ' ' in name:
-            section,name = name.split(' ',1)
-            if section == 'Annex':
-                section,name = name.split(' ',1)
-                section = 'Annex '+section
-        else:
-            section = None
-        try:
-            page = int(page) + offset
-        except:
-            page = 1
-        try:
-            spec = SpecIndex.fromstring(section)
-        except:
-            spec = None
-
-        # Meh, could be better...
-        if spec is not None:
-            dist = spec - target
-            if best is None or dist < best[0]:
-                best = (dist, (section, name, page))
-    return best[1]
-
-# What a hack. Slow to boot.
-doxyLineRefRE = re.compile(r"<a name=\"l([0-9]+)\"></a>")
-def findClosestLineReference(clangRoot, doxyName, target):
-    try:
-        f = open(os.path.join(clangRoot, 'docs', 'doxygen', 'html', doxyName))
-    except:
-        return None
-    
-    best = None
-    for m in doxyLineRefRE.finditer(f.read()):
-        line = int(m.group(1), 10)
-        dist = abs(line - target)
-        if best is None or dist < best[0]:
-            best = (dist,'l'+m.group(1))
-    f.close()
-    if best is not None:
-        return best[1]
-    return None
-
-###
-
-nameAndSpecRefRE = re.compile(r"(C99|C90|C\+\+|H\&S) ((([0-9]+)(\.[0-9]+)*|\[[^]]+\])(p[0-9]+)?)")
-loneSpecRefRE = re.compile(r" (([0-9]+)(\.[0-9]+){2,100}(p[0-9]+)?)")
-def scanFile(path, filename):
-    try:
-        f = open(path)
-    except IOError:
-        print >>sys.stderr,'WARNING: Unable to open:',path
-        return
-
-    for i,ln in enumerate(f):
-        ignore = set()
-        for m in nameAndSpecRefRE.finditer(ln):
-            section = m.group(2)
-            name = m.group(1)
-            if section.endswith('.'):
-                section = section[:-1]
-            yield RefItem(name, section, filename, path, i+1)
-            ignore.add(section)
-        for m in loneSpecRefRE.finditer(ln):
-            section = m.group(1)
-            if section.endswith('.'):
-                section = section[:-1]
-            if section not in ignore:
-                yield RefItem(None, section, filename, path, i+1)
-
-###
-
-class SpecIndex:
-    @staticmethod
-    def fromstring(str):
-        # Check for named sections
-        if str[0] == '[':
-            assert ']' in str
-            secs = str[1:str.index(']')].split('.')
-            tail = str[str.index(']')+1:]
-            if tail:
-                assert tail[0] == 'p'
-                paragraph = int(tail[1:])
-            else:
-                paragraph = None
-            indices = secs
-        else:
-            secs = str.split('.')
-            paragraph = None
-            if 'p' in secs[-1]:
-                secs[-1],p = secs[-1].split('p',1)
-                paragraph = int(p)
-            indices = map(int, secs)
-        return SpecIndex(indices, paragraph)
-
-    def __init__(self, indices, paragraph=None):
-        assert len(indices)>0
-        self.indices = tuple(indices)
-        self.paragraph = paragraph
-
-    def __str__(self):
-        s =  '.'.join(map(str,self.indices))
-        if self.paragraph is not None:
-            s += '.p%d'%(self.paragraph,)
-        return s                            
-
-    def __repr__(self):
-        return 'SpecIndex(%s, %s)'%(self.indices, self.paragraph)
-
-    def __cmp__(self, b):
-        return cmp((self.indices,self.paragraph),
-                   (b.indices,b.paragraph))
-
-    def __hash__(self):
-        return hash((self.indices,self.paragraph))
-
-    def __sub__(self, indices):
-        def sub(a,b):
-            a = a or 0
-            b = b or 0
-            return abs(a-b)
-        return map(sub,self.indices,indices)
-
-class RefItem:
-    def __init__(self, name, section, filename, path, line):
-        self.name = name
-        self.section = SpecIndex.fromstring(section)
-        self.filename = filename
-        self.path = path
-        self.line = line
-    
-    def __str__(self):
-        if self.name is not None:
-            return '%s %s'%(self.name, self.section)
-        else:
-            return '--- %s'%(self.section,)
-
-    def __repr__(self):
-        return 'RefItem(%s, %r, "%s", "%s", %d)'%(self.name, 
-                                              self.section,
-                                              self.filename,
-                                              self.path,
-                                              self.line)
-
-    def __cmp__(self, b):
-        return cmp((self.name,self.section,self.filename,self.path,self.line),
-                   (b.name,b.section,self.filename,self.path,self.line))
-
-    def __hash__(self):
-        return hash((self.name,self.section,self.filename,self.path,self.line))
-
-###
-
-def sorted(l):
-    l = list(l)
-    l.sort()
-    return l
-
-def getRevision(path):
-    import subprocess
-    p = subprocess.Popen(['svn', 'info', path],
-                         stdin=open('/dev/null','r'), 
-                         stdout=subprocess.PIPE)
-    for ln in p.stdout.read(1024).split('\n'):
-        if ln.startswith('Revision:'):
-            return ln.split(':',1)[1].strip()
-    return None
-
-def buildRefTree(references):
-    root = (None, {}, [])
-
-    def getNode(keys):
-        if not keys:
-            return root
-        key,parent = keys[-1],getNode(keys[:-1])
-        node = parent[1].get(key)
-        if node is None:
-            parent[1][key] = node = (key, {}, [])
-        return node
-            
-    for ref in references:
-        n = getNode((ref.name,) + ref.section.indices)
-        n[2].append(ref)
-
-    def flatten((key, children, data)):
-        children = sorted(map(flatten,children.values()))
-        return (key, children, sorted(data))
-
-    return flatten(root)
-
-def preorder(node,parents=(),first=True):
-    (key,children,data) = node
-    if first:
-        yield parents+(node,)
-    for c in children:
-        for item in preorder(c, parents+(node,)):
-            yield item
-
-def main():
-    global options
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog [options] CLANG_ROOT <output-dir>")
-    parser.add_option("", "--debug", dest="debug",
-                      help="Print extra debugging output",
-                      action="store_true",
-                      default=False)    
-    (opts, args) = parser.parse_args()
-
-    if len(args) != 2:
-        parser.error("incorrect number of arguments")
-
-    references = []
-    root,outputDir = args
-    if os.path.isdir(root):
-        for (dirpath, dirnames, filenames) in os.walk(root):
-            for filename in filenames:
-                name,ext = os.path.splitext(filename)
-                if ext in ('.c', '.cpp', '.h', '.def'):
-                    fullpath = os.path.join(dirpath, filename)                
-                    references.extend(list(scanFile(fullpath, filename)))
-    else:
-        references.extend(list(scanFile(root, root)))
-
-    refTree = buildRefTree(references)
-
-    specs = {}
-    for ref in references:
-        spec = specs[ref.name] = specs.get(ref.name,{})
-        items = spec[ref.section] = spec.get(ref.section,[])
-        items.append(ref)
-
-    print 'Found %d references.'%(len(references),)
-
-    if opts.debug:
-        pprint(refTree)
-
-    referencesPath = os.path.join(outputDir,'references.html')
-    print 'Writing: %s'%(referencesPath,)
-    f = open(referencesPath,'w')   
-    print >>f, '<html><head><title>clang: Specification References</title></head>'
-    print >>f, '<body>'
-    print >>f, '\t<h2>Specification References</h2>'
-    for i,node in enumerate(refTree[1]):
-        specName = node[0] or 'Unknown'
-        print >>f, '<a href="#spec%d">%s</a><br>'%(i,specName)
-    for i,node in enumerate(refTree[1]):
-        specName = node[0] or 'Unknown'
-        print >>f, '<hr>'
-        print >>f, '<a name="spec%d">'%(i,)
-        print >>f, '<h3>Document: %s</h3>'%(specName or 'Unknown',)
-        print >>f, '<table border="1" cellspacing="2" width="80%">'
-        print >>f, '<tr><th width="20%">Name</th><th>References</th></tr>'
-        docData = kDocuments.get(specName)
-        for path in preorder(node,first=False):
-            if not path[-1][2]:
-                continue
-            components = '.'.join([str(p[0]) for p in path[1:]])
-            print >>f, '\t<tr>'
-            tocEntry = None            
-            if docData is not None:
-                tocEntry = findClosestTOCEntry(docData, [p[0] for p in path[1:]])
-            if tocEntry is not None:
-                section,name,page = tocEntry
-                # If section is exact print the TOC name
-                if page is not None:
-                    linkStr = '<a href="%s#page=%d">%s</a> (pg.%d)'%(docData[0],page,components,page)
-                else:
-                    linkStr = components
-                if section == components:
-                    print >>f, '\t\t<td valign=top>%s<br>%s</td>'%(linkStr,name)
-                else:
-                    print >>f, '\t\t<td valign=top>%s</td>'%(linkStr,)
-            else:
-                print >>f, '\t\t<td valign=top>%s</td>'%(components,)
-            print >>f, '\t\t<td valign=top>'
-            for item in path[-1][2]:
-                # XXX total hack
-                relativePath = item.path[len(root):]
-                if relativePath.startswith('/'):
-                    relativePath = relativePath[1:]
-                # XXX this is broken, how does doxygen mangle w/ multiple
-                # refs? Can we just read its map?
-                filename = os.path.basename(relativePath)
-                doxyName = '%s-source.html'%(filename.replace('.','_8'),)
-                # Grrr, why can't doxygen write line number references.
-                lineReference = findClosestLineReference(root,doxyName,item.line)
-                if lineReference is not None:
-                    linkStr = 'http://clang.llvm.org/doxygen/%s#%s'%(doxyName,lineReference)
-                else:
-                    linkStr = 'http://clang.llvm.org/doxygen/%s'%(doxyName,)
-                if item.section.paragraph is not None:
-                    paraText = ' (p%d)'%(item.section.paragraph,)
-                else:
-                    paraText = ''
-                print >>f,'<a href="%s">%s:%d</a>%s<br>'%(linkStr,relativePath,item.line,paraText)
-            print >>f, '\t\t</td>'
-            print >>f, '\t</tr>'
-        print >>f, '</table>'
-    print >>f, '<hr>'
-    print >>f, 'Generated: %s<br>'%(time.strftime('%Y-%m-%d %H:%M'),)
-    print >>f, 'SVN Revision: %s'%(getRevision(root),)
-    print >>f, '</body>'
-    f.close()
-    
-if __name__=='__main__':
-   main()

Modified: trunk/contrib/llvm/tools/clang/utils/FuzzTest
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/FuzzTest	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/FuzzTest	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,350 +0,0 @@
-#!/usr/bin/env python
-
-"""
-This is a generic fuzz testing tool, see --help for more information.
-"""
-
-import os
-import sys
-import random
-import subprocess
-import itertools
-
-class TestGenerator:
-    def __init__(self, inputs, delete, insert, replace,
-                 insert_strings, pick_input):
-        self.inputs = [(s, open(s).read()) for s in inputs]
-
-        self.delete = bool(delete)
-        self.insert = bool(insert)
-        self.replace = bool(replace)
-        self.pick_input = bool(pick_input)
-        self.insert_strings = list(insert_strings)
-
-        self.num_positions = sum([len(d) for _,d in self.inputs])
-        self.num_insert_strings = len(insert_strings)
-        self.num_tests = ((delete + (insert + replace)*self.num_insert_strings)
-                          * self.num_positions)
-        self.num_tests += 1
-
-        if self.pick_input:
-            self.num_tests *= self.num_positions
-
-    def position_to_source_index(self, position):
-        for i,(s,d) in enumerate(self.inputs):
-            n = len(d)
-            if position < n:
-                return (i,position)
-            position -= n
-        raise ValueError,'Invalid position.'
-
-    def get_test(self, index):
-        assert 0 <= index < self.num_tests
-
-        picked_position = None
-        if self.pick_input:
-            index,picked_position = divmod(index, self.num_positions)
-            picked_position = self.position_to_source_index(picked_position)
-
-        if index == 0:
-            return ('nothing', None, None, picked_position)
-
-        index -= 1
-        index,position = divmod(index, self.num_positions)
-        position = self.position_to_source_index(position)
-        if self.delete:
-            if index == 0:
-                return ('delete', position, None, picked_position)
-            index -= 1
-
-        index,insert_index = divmod(index, self.num_insert_strings)
-        insert_str = self.insert_strings[insert_index]
-        if self.insert:
-            if index == 0:
-                return ('insert', position, insert_str, picked_position)
-            index -= 1
-
-        assert self.replace
-        assert index == 0
-        return ('replace', position, insert_str, picked_position)
-
-class TestApplication:
-    def __init__(self, tg, test):
-        self.tg = tg
-        self.test = test
-
-    def apply(self):
-        if self.test[0] == 'nothing':
-            pass
-        else:
-            i,j = self.test[1]
-            name,data = self.tg.inputs[i]
-            if self.test[0] == 'delete':
-                data = data[:j] + data[j+1:]
-            elif self.test[0] == 'insert':
-                data = data[:j] + self.test[2] + data[j:]
-            elif self.test[0] == 'replace':
-                data = data[:j] + self.test[2] + data[j+1:]
-            else:
-                raise ValueError,'Invalid test %r' % self.test
-            open(name,'wb').write(data)
-
-    def revert(self):
-        if self.test[0] != 'nothing':
-            i,j = self.test[1]
-            name,data = self.tg.inputs[i]
-            open(name,'wb').write(data)
-
-def quote(str):
-    return '"' + str + '"'
-        
-def run_one_test(test_application, index, input_files, args):
-    test = test_application.test
-
-    # Interpolate arguments.
-    options = { 'index' : index,
-                'inputs' : ' '.join(quote(f) for f in input_files) }
-
-    # Add picked input interpolation arguments, if used.
-    if test[3] is not None:
-        pos = test[3][1]
-        options['picked_input'] = input_files[test[3][0]]
-        options['picked_input_pos'] = pos
-        # Compute the line and column.
-        file_data = test_application.tg.inputs[test[3][0]][1]
-        line = column = 1
-        for i in range(pos):
-            c = file_data[i]
-            if c == '\n':
-                line += 1
-                column = 1
-            else:
-                column += 1
-        options['picked_input_line'] = line
-        options['picked_input_col'] = column
-        
-    test_args = [a % options for a in args]
-    if opts.verbose:
-        print '%s: note: executing %r' % (sys.argv[0], test_args)
-
-    stdout = None
-    stderr = None
-    if opts.log_dir:
-        stdout_log_path = os.path.join(opts.log_dir, '%s.out' % index)
-        stderr_log_path = os.path.join(opts.log_dir, '%s.err' % index)
-        stdout = open(stdout_log_path, 'wb')
-        stderr = open(stderr_log_path, 'wb')
-    else:
-        sys.stdout.flush()
-    p = subprocess.Popen(test_args, stdout=stdout, stderr=stderr)
-    p.communicate()
-    exit_code = p.wait()
-
-    test_result = (exit_code == opts.expected_exit_code or
-                   exit_code in opts.extra_exit_codes)
-
-    if stdout is not None:
-        stdout.close()
-        stderr.close()
-
-        # Remove the logs for passes, unless logging all results.
-        if not opts.log_all and test_result:
-            os.remove(stdout_log_path)
-            os.remove(stderr_log_path)
-
-    if not test_result:
-        print 'FAIL: %d' % index
-    elif not opts.succinct:
-        print 'PASS: %d' % index
-    return test_result
-
-def main():
-    global opts
-    from optparse import OptionParser, OptionGroup
-    parser = OptionParser("""%prog [options] ... test command args ...
-
-%prog is a tool for fuzzing inputs and testing them.
-
-The most basic usage is something like:
-
-  $ %prog --file foo.txt ./test.sh
-
-which will run a default list of fuzzing strategies on the input. For each
-fuzzed input, it will overwrite the input files (in place), run the test script,
-then restore the files back to their original contents.
-
-NOTE: You should make sure you have a backup copy of your inputs, in case
-something goes wrong!!!
-
-You can cause the fuzzing to not restore the original files with
-'--no-revert'. Generally this is used with '--test <index>' to run one failing
-test and then leave the fuzzed inputs in place to examine the failure.
-
-For each fuzzed input, %prog will run the test command given on the command
-line. Each argument in the command is subject to string interpolation before
-being executed. The syntax is "%(VARIABLE)FORMAT" where FORMAT is a standard
-printf format, and VARIABLE is one of:
-
-  'index' - the test index being run
-  'inputs' - the full list of test inputs
-  'picked_input'      - (with --pick-input) the selected input file
-  'picked_input_pos'  - (with --pick-input) the selected input position
-  'picked_input_line' - (with --pick-input) the selected input line
-  'picked_input_col'  - (with --pick-input) the selected input column
-
-By default, the script will run forever continually picking new tests to
-run. You can limit the number of tests that are run with '--max-tests <number>',
-and you can run a particular test with '--test <index>'.
-
-You can specify '--stop-on-fail' to stop the script on the first failure
-without reverting the changes.
-
-""")
-    parser.add_option("-v", "--verbose", help="Show more output",
-                      action='store_true', dest="verbose", default=False)
-    parser.add_option("-s", "--succinct",  help="Reduce amount of output",
-                      action="store_true", dest="succinct", default=False)
-
-    group = OptionGroup(parser, "Test Execution")
-    group.add_option("", "--expected-exit-code", help="Set expected exit code",
-                     type=int, dest="expected_exit_code",
-                     default=0)
-    group.add_option("", "--extra-exit-code",
-                     help="Set additional expected exit code",
-                     type=int, action="append", dest="extra_exit_codes",
-                     default=[])
-    group.add_option("", "--log-dir",
-                     help="Capture test logs to an output directory",
-                     type=str, dest="log_dir",
-                     default=None)
-    group.add_option("", "--log-all",
-                     help="Log all outputs (not just failures)",
-                     action="store_true", dest="log_all", default=False)
-    parser.add_option_group(group)
-
-    group = OptionGroup(parser, "Input Files")
-    group.add_option("", "--file", metavar="PATH",
-                     help="Add an input file to fuzz",
-                     type=str, action="append", dest="input_files", default=[])
-    group.add_option("", "--filelist", metavar="LIST",
-                     help="Add a list of inputs files to fuzz (one per line)",
-                     type=str, action="append", dest="filelists", default=[])
-    parser.add_option_group(group)
-
-    group = OptionGroup(parser, "Fuzz Options")
-    group.add_option("", "--replacement-chars", dest="replacement_chars",
-                     help="Characters to insert/replace",
-                     default="0{}[]<>\;@#$^%& ")
-    group.add_option("", "--replacement-string", dest="replacement_strings",
-                     action="append", help="Add a replacement string to use",
-                     default=[])
-    group.add_option("", "--replacement-list", dest="replacement_lists",
-                     help="Add a list of replacement strings (one per line)",
-                     action="append", default=[])
-    group.add_option("", "--no-delete", help="Don't delete characters",
-                     action='store_false', dest="enable_delete", default=True)
-    group.add_option("", "--no-insert", help="Don't insert strings",
-                     action='store_false', dest="enable_insert", default=True)
-    group.add_option("", "--no-replace", help="Don't replace strings",
-                     action='store_false', dest="enable_replace", default=True)
-    group.add_option("", "--no-revert", help="Don't revert changes",
-                     action='store_false', dest="revert", default=True)
-    group.add_option("", "--stop-on-fail", help="Stop on first failure",
-                     action='store_true', dest="stop_on_fail", default=False)
-    parser.add_option_group(group)
-
-    group = OptionGroup(parser, "Test Selection")
-    group.add_option("", "--test", help="Run a particular test",
-                     type=int, dest="test", default=None, metavar="INDEX")
-    group.add_option("", "--max-tests", help="Maximum number of tests",
-                     type=int, dest="max_tests", default=None, metavar="COUNT")
-    group.add_option("", "--pick-input",
-                     help="Randomly select an input byte as well as fuzzing",
-                     action='store_true', dest="pick_input", default=False)
-    parser.add_option_group(group)
-
-    parser.disable_interspersed_args()
-
-    (opts, args) = parser.parse_args()
-
-    if not args:
-        parser.error("Invalid number of arguments")
-
-    # Collect the list of inputs.
-    input_files = list(opts.input_files)
-    for filelist in opts.filelists:
-        f = open(filelist)
-        try:
-            for ln in f:
-                ln = ln.strip()
-                if ln:
-                    input_files.append(ln)
-        finally:
-            f.close()
-    input_files.sort()
-
-    if not input_files:
-        parser.error("No input files!")
-
-    print '%s: note: fuzzing %d files.' % (sys.argv[0], len(input_files))
-
-    # Make sure the log directory exists if used.
-    if opts.log_dir:
-        if not os.path.exists(opts.log_dir):
-            try:
-                os.mkdir(opts.log_dir)
-            except OSError:
-                print "%s: error: log directory couldn't be created!" % (
-                    sys.argv[0],)
-                raise SystemExit,1
-
-    # Get the list if insert/replacement strings.
-    replacements = list(opts.replacement_chars)
-    replacements.extend(opts.replacement_strings)
-    for replacement_list in opts.replacement_lists:
-        f = open(replacement_list)
-        try:
-            for ln in f:
-                ln = ln[:-1]
-                if ln:
-                    replacements.append(ln)
-        finally:
-            f.close()
-
-    # Unique and order the replacement list.
-    replacements = list(set(replacements))
-    replacements.sort()
-
-    # Create the test generator.
-    tg = TestGenerator(input_files, opts.enable_delete, opts.enable_insert,
-                       opts.enable_replace, replacements, opts.pick_input)
-
-    print '%s: note: %d input bytes.' % (sys.argv[0], tg.num_positions)
-    print '%s: note: %d total tests.' % (sys.argv[0], tg.num_tests)
-    if opts.test is not None:
-        it = [opts.test]
-    elif opts.max_tests is not None:
-        it = itertools.imap(random.randrange,
-                            itertools.repeat(tg.num_tests, opts.max_tests))
-    else:
-        it = itertools.imap(random.randrange, itertools.repeat(tg.num_tests))
-    for test in it:
-        t = tg.get_test(test)
-
-        if opts.verbose:
-            print '%s: note: running test %d: %r' % (sys.argv[0], test, t)
-        ta = TestApplication(tg, t)
-        try:
-            ta.apply()
-            test_result = run_one_test(ta, test, input_files, args)
-            if not test_result and opts.stop_on_fail:
-                opts.revert = False
-                sys.exit(1)
-        finally:
-            if opts.revert:
-                ta.revert()
-
-        sys.stdout.flush()
-
-if __name__ == '__main__':
-    main()

Modified: trunk/contrib/llvm/tools/clang/utils/TestUtils/deep-stack.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/TestUtils/deep-stack.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/TestUtils/deep-stack.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,24 +0,0 @@
-#!/usr/bin/env python
-
-def pcall(f, N):
-    if N == 0:
-        print >>f, '    f(0)'
-        return
-
-    print >>f, '    f('
-    pcall(f, N - 1)
-    print >>f, '     )'
-
-def main():
-    f = open('t.c','w')
-    print >>f, 'int f(int n) { return n; }'
-    print >>f, 'int t() {'
-    print >>f, '  return'
-    pcall(f, 10000)
-    print >>f, '  ;'
-    print >>f, '}'
-
-if __name__ == "__main__":
-    import sys
-    sys.setrecursionlimit(100000)
-    main()

Modified: trunk/contrib/llvm/tools/clang/utils/TestUtils/pch-test.pl
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/TestUtils/pch-test.pl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/TestUtils/pch-test.pl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,61 +0,0 @@
-#!/usr/bin/perl -w
-
-# This tiny little script, which should be run from the clang
-# directory (with clang in your patch), tries to take each
-# compilable Clang test and build a PCH file from that test, then read
-# and dump the contents of the PCH file just created.
-use POSIX;
-
-$exitcode = 0;
-sub testfiles($$) {
-  my $suffix = shift;
-  my $language = shift;
-  my $passed = 0;
-  my $failed = 0;
-  my $skipped = 0;
-
-  @files = `ls test/*/*.$suffix`;
-  foreach $file (@files) {
-    chomp($file);
-    my $code = system("clang -fsyntax-only -x $language $file > /dev/null 2>&1");
-    if ($code == 0) {
-      print(".");
-      $code = system("clang -cc1 -emit-pch -x $language -o $file.pch $file > /dev/null 2>&1");
-      if ($code == 0) {
-        $code = system("clang -cc1 -include-pch $file.pch -x $language -ast-dump /dev/null > /dev/null 2>&1");
-        if ($code == 0) {
-          $passed++;
-        } elsif (($code & 0xFF) == SIGINT) {
-          exit($exitcode);
-        } else {
-          print("\n---Failed to dump AST file for \"$file\"---\n");
-          $exitcode = 1;
-          $failed++;
-        }
-        unlink "$file.pch";
-      } elsif (($code & 0xFF) == SIGINT) {
-        exit($exitcode);
-      } else {
-        print("\n---Failed to build PCH file for \"$file\"---\n");
-        $exitcode = 1;
-          $failed++;
-      }
-    } elsif (($code & 0xFF) == SIGINT) {
-      exit($exitcode);
-    } else {
-      print("x");
-      $skipped++;
-    }
-  }
-
-  print("\n\n$passed tests passed\n");
-  print("$failed tests failed\n");
-  print("$skipped tests skipped ('x')\n")
-}
-
-printf("-----Testing precompiled headers for C-----\n");
-testfiles("c", "c");
-printf("\n-----Testing precompiled headers for Objective-C-----\n");
-testfiles("m", "objective-c");
-print("\n");
-exit($exitcode);

Modified: trunk/contrib/llvm/tools/clang/utils/VtableTest/check-zti
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/VtableTest/check-zti	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/VtableTest/check-zti	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-N_STRUCTS=300
-
-# Utility routine to "hand" check type infos.
-
-let i=1;
-while [ $i != $N_STRUCTS ]; do
-  sed -n "/^__ZTI.*s$i:/,/\.[sg][el]/p" test-clang.s |
-    grep -v '\.[sg][el]' | sed 's/(\([0-9][0-9]*\))/\1/' >test-clang-zti
-  sed -n "/^__ZTI.*s$i:/,/\.[sg][el]/p" test-gcc.s |
-    grep -v '\.[sg][el]' | sed 's/(\([0-9][0-9]*\))/\1/' >test-gcc-zti
-  diff -U3 test-gcc-zti test-clang-zti
-  if [ $? != 0 ]; then
-     echo "FAIL: s$i type info"
-  else
-     echo "PASS: s$i type info"
-  fi
-  let i=i+1
-done

Modified: trunk/contrib/llvm/tools/clang/utils/VtableTest/check-ztt
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/VtableTest/check-ztt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/VtableTest/check-ztt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-N_STRUCTS=300
-
-# Utility routine to "hand" check VTTs.
-
-let i=1;
-while [ $i != $N_STRUCTS ]; do
-  sed -n "/^__ZTT.*s$i:/,/\.[sgm][elo]/p" test-clang.s |
-    grep -v '\.[sgm][elo]' | sed -e 's/[()]//g' -e '/^$/d'  >test-clang-ztt
-  sed -n "/^__ZTT.*s$i:/,/\.[sgm][elo]/p" test-gcc.s |
-    grep -v '\.[sgm][elo]' | sed -e 's/[()]//g' -e 's/ + /+/'  >test-gcc-ztt
-  diff -U3 test-gcc-ztt test-clang-ztt
-  if [ $? != 0 ]; then
-     echo "FAIL: s$i VTT"
-  else
-     echo "PASS: s$i VTT"
-  fi
-  let i=i+1
-done

Modified: trunk/contrib/llvm/tools/clang/utils/VtableTest/check-zvt
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/VtableTest/check-zvt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/VtableTest/check-zvt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-N_STRUCTS=300
-
-# Utility routine to "hand" check vtables.
-
-let i=1;
-while [ $i != $N_STRUCTS ]; do
-  sed -n "/^__ZTV.*s$i:/,/\.[sg][el]/p" test-clang.s | grep -v '\.[sg][el]' >test-clang-ztv
-  sed -n "/^__ZTV.*s$i:/,/\.[sg][el]/p" test-gcc.s | grep -v '\.[sg][el]' >test-gcc-ztv
-  diff -U3 test-gcc-ztv test-clang-ztv
-  if [ $? != 0 ]; then
-     echo "FAIL: s$i vtable"
-  else
-     echo "PASS: s$i vtable"
-  fi
-  let i=i+1
-done

Modified: trunk/contrib/llvm/tools/clang/utils/VtableTest/gen.cc
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/VtableTest/gen.cc	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/VtableTest/gen.cc	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,350 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#define N_FIELDS 7
-#define N_FUNCS 128
-#define FUNCSPACING 20
-#define N_STRUCTS 180 /* 1280 */
-#define N_BASES 6
-#define COVARIANT 0
-
-const char *simple_types[] = { "bool", "char", "short", "int", "float",
-			       "double", "long double", "wchar_t", "void *",
-			       "char *"
-};
-
-void gl(const char *c) {
-  printf("%s\n", c);
-}
-
-void g(const char *c) {
-  printf("%s", c);
-}
-
-void g(int i) {
-  printf("%d", i);
-}
-
-int uuid = 0;
-char base_present[N_STRUCTS][N_STRUCTS];
-
-// The return type for each function when doing covariant testcase generation.
-short ret_types[N_STRUCTS][N_FUNCS*FUNCSPACING];
-
-bool is_ambiguous(int s, int base) {
-  for (int i = 0; i < N_STRUCTS; ++i) {
-    if ((base_present[base][i] & base_present[s][i]) == 1)
-      return true;
-  }
-  return false;
-}
-
-void add_bases(int s, int base) {
-  for (int i = 0; i < N_STRUCTS; ++i)
-    base_present[s][i] |= base_present[base][i];
-  if (!COVARIANT)
-    return;
-  for (int i = 0; i < N_FUNCS*FUNCSPACING; ++i) {
-    if (!ret_types[base][i])
-      continue;
-    if (!ret_types[s][i]) {
-      ret_types[s][i] = ret_types[base][i];
-      continue;
-    }
-    if (base_present[ret_types[base][i]][ret_types[s][i]])
-      // If the return type of the function from this base dominates
-      ret_types[s][i] = ret_types[base][i];
-    if (base_present[ret_types[s][i]][ret_types[base][i]])
-      // If a previous base dominates
-      continue;
-    // If neither dominates, we'll use this class.
-    ret_types[s][i] = s;
-  }
-}
-
-// This contains the class that has the final override for
-// each class, for each function.
-short final_override[N_STRUCTS][N_FUNCS*FUNCSPACING];
-
-void gs(int s) {
-  bool polymorphic = false;
-
-  static int bases[N_BASES];
-  int i_bases = random() % (N_BASES*2);
-  if (i_bases >= N_BASES)
-    // PARAM: 1/2 of all clases should have no bases
-    i_bases = 0;
-  int n_bases = 0;
-  bool first_base = true;
-  
-  // PARAM: 3/4 of all should be class, the rest are structs
-  if (random() % 4 == 0)
-    g("struct s");
-  else
-    g("class s");
-  g(s);
-  int old_base = -1;
-  if (s == 0 || s == 1)
-    i_bases = 0;
-  while (i_bases) {
-    --i_bases;
-    int base = random() % (s-1) + 1;
-    if (!base_present[s][base]) {
-      if (is_ambiguous(s, base))
-	continue;
-      if (first_base) {
-	first_base = false;
-	g(": ");
-      } else
-	g(", ");
-      int base_type = 1;
-      if (random()%8 == 0) {
-	// PARAM: 1/8th the bases are virtual
-	g("virtual ");
-        // We have a vtable and rtti, but technically we're not polymorphic
-	// polymorphic = true;
-	base_type = 3;
-      }
-      // PARAM: 1/4 are public, 1/8 are privare, 1/8 are protected, the reset, default
-      int base_protection = 0;
-      if (!COVARIANT)
-        base_protection = random()%8;
-      switch (base_protection) {
-      case 0:
-      case 1:
-	g("public "); break;
-      case 2:
-      case 3:
-      case 4:
-      case 5:
-	break;
-      case 6:
-	g("private "); break;
-      case 7:
-	g("protected "); break;
-      }
-      g("s");
-      add_bases(s, base);
-      bases[n_bases] = base;
-      base_present[s][base] = base_type;
-      ++n_bases;
-      g(base);
-      old_base = base;
-    }
-  }
-  gl(" {");
-
-  /* Fields */
-  int n_fields = N_FIELDS == 0 ? 0 : random() % (N_FIELDS*4);
-  // PARAM: 3/4 of all structs should have no members
-  if (n_fields >= N_FIELDS)
-    n_fields = 0;
-  for (int i = 0; i < n_fields; ++i) {
-    int t = random() % (sizeof(simple_types) / sizeof(simple_types[0]));
-    g("  "); g(simple_types[t]); g(" field"); g(i); gl(";");
-  }
-
-  /* Virtual functions */
-  static int funcs[N_FUNCS*FUNCSPACING];
-  // PARAM: 1/2 of all structs should have no virtual functions
-  int n_funcs = random() % (N_FUNCS*2);
-  if (n_funcs > N_FUNCS)
-    n_funcs = 0;
-  int old_func = -1;
-  for (int i = 0; i < n_funcs; ++i) {
-    int fn = old_func + random() % FUNCSPACING + 1;
-    funcs[i] = fn;
-    int ret_type = 0;
-    if (COVARIANT) {
-      ret_type = random() % s + 1;
-      if (!base_present[s][ret_type]
-          || !base_present[ret_type][ret_types[s][fn]])
-        if (ret_types[s][fn]) {
-          printf("  // Found one for s%d for s%d* fun%d.\n", s,
-                 ret_types[s][fn], fn);
-          ret_type = ret_types[s][fn];
-        } else
-          ret_type = s;
-      else
-        printf("  // Wow found one for s%d for fun%d.\n", s, fn);
-      ret_types[s][fn] = ret_type;
-    }
-    if (ret_type) {
-      g("  virtual s"); g(ret_type); g("* fun");
-    } else
-      g("  virtual void fun");
-    g(fn); g("(char *t) { mix(\"vfn this offset\", (char *)this - t); mix(\"vfn uuid\", "); g(++uuid);
-    if (ret_type)
-      gl("); return 0; }");
-    else
-      gl("); }");
-    final_override[s][fn] = s;
-    old_func = fn;
-  }
-
-  // Add required overriders for correctness
-  for (int i = 0; i < n_bases; ++i) {
-    // For each base
-    int base = bases[i];
-    for (int fn = 0; fn < N_FUNCS*FUNCSPACING; ++fn) {
-      // For each possible function
-      int new_base = final_override[base][fn];
-      if (new_base == 0)
-        // If the base didn't have a final overrider, skip
-        continue;
-
-      int prev_base = final_override[s][fn];
-      if (prev_base == s)
-        // Skip functions defined in this class
-        continue;
-
-      // If we don't want to change the info, skip
-      if (prev_base == new_base)
-        continue;
-      
-      if (prev_base == 0) {
-        // record the final override
-        final_override[s][fn] = new_base;
-        continue;
-      }
-        
-      if (base_present[prev_base][new_base]) {
-        // The previous base dominates the new base, no update necessary
-        printf("  // No override for fun%d in s%d as s%d dominates s%d.\n",
-               fn, s, prev_base, new_base);
-        continue;
-      }
-
-      if (base_present[new_base][prev_base]) {
-        // The new base dominates the old base, no override necessary
-        printf("  // No override for fun%d in s%d as s%d dominates s%d.\n",
-               fn, s, new_base, prev_base);
-        // record the final override
-        final_override[s][fn] = new_base;
-        continue;
-      }
-
-      printf("  // Found we needed override for fun%d in s%d.\n", fn, s);
-
-      // record the final override
-      funcs[n_funcs++] = fn;
-      if (n_funcs == (N_FUNCS*FUNCSPACING-1))
-        abort();
-      int ret_type = 0;
-      if (COVARIANT) {
-        if (!ret_types[s][fn]) {
-          ret_types[s][fn] = ret_type = s;
-        } else {
-          ret_type = ret_types[s][fn];
-          if (ret_type != s)
-            printf("  // Calculated return type in s%d as s%d* fun%d.\n",
-                   s, ret_type, fn);
-        }
-      }
-      if (ret_type) {
-        g("  virtual s"); g(ret_type); g("* fun");
-      } else
-        g("  virtual void fun");
-      g(fn); g("(char *t) { mix(\"vfn this offset\", (char *)this - t); mix(\"vfn uuid\", "); g(++uuid);
-      if (ret_type)
-        gl("); return 0; }");
-      else
-        gl("); }");
-      final_override[s][fn] = s;
-    }
-  }
-
-  gl("public:");
-  gl("  void calc(char *t) {");
-
-  // mix in the type number
-  g("    mix(\"type num\", "); g(s); gl(");");
-  // mix in the size
-  g("    mix(\"type size\", sizeof (s"); g(s); gl("));");
-  // mix in the this offset
-  gl("    mix(\"subobject offset\", (char *)this - t);");
-  if (n_funcs)
-    polymorphic = true;
-  if (polymorphic) {
-    // mix in offset to the complete object under construction
-    gl("    mix(\"real top v current top\", t - (char *)dynamic_cast<void*>(this));");
-  }
-
-  /* check base layout and overrides */
-  for (int i = 0; i < n_bases; ++i) {
-    g("    calc_s"); g(bases[i]); gl("(t);");
-  }
-
-  if (polymorphic) {
-    /* check dynamic_cast to each direct base */
-    for (int i = 0; i < n_bases; ++i) {
-      g("    if ((char *)dynamic_cast<s"); g(bases[i]); gl("*>(this))");
-      g("      mix(\"base dyn cast\", t - (char *)dynamic_cast<s"); g(bases[i]); gl("*>(this));");
-      g("    else mix(\"no dyncast\", "); g(++uuid); gl(");");
-    }
-  }
-
-  /* check field layout */
-  for (int i = 0; i < n_fields; ++i) {
-    g("    mix(\"field offset\", (char *)&field"); g(i); gl(" - (char *)this);");
-  }
-  if (n_fields == 0) {
-    g("    mix(\"no fields\", "); g(++uuid); gl(");");
-  }
-
-  /* check functions */
-  for (int i = 0; i < n_funcs; ++i) {
-    g("    fun"); g(funcs[i]); gl("(t);");
-  }
-  if (n_funcs == 0) {
-    g("    mix(\"no funcs\", "); g(++uuid); gl(");");
-  }
-
-  gl("  }");
-
-  // default ctor
-  g("  s"); g(s); g("() ");
-  first_base = true;
-  for (int i = 0; i < n_bases; ++i) {
-    if (first_base) {
-      g(": ");
-      first_base = false;
-    } else
-      g(", ");
-    g("s"); g(bases[i]); g("((char *)this)");
-  }
-  gl(" { calc((char *)this); }");
-  g("  ~s"); g(s); gl("() { calc((char *)this); }");
-
- // ctor with this to the complete object
-  g("  s"); g(s); gl("(char *t) { calc(t); }");
-  g("  void calc_s"); g(s); gl("(char *t) { calc(t); }");
-  g("} a"); g(s); gl(";");
-}
-
-main(int argc, char **argv) {
-  unsigned seed = 0;
-  char state[16];
-  if (argc > 1)
-    seed = atol(argv[1]);
-
-  initstate(seed, state, sizeof(state));
-  gl("extern \"C\" int printf(const char *...);");
-  gl("");
-  gl("long long sum;");
-  gl("void mix(const char *desc, long long i) {");
-  // If this ever becomes too slow, we can remove this after we improve the
-  // mixing function
-  gl("  printf(\"%s: %lld\\n\", desc, i);");
-  gl("  sum += ((sum ^ i) << 3) + (sum<<1) - i;");
-  gl("}");
-  gl("");
-  // PARAM: Randomly size testcases or large testcases?
-  int n_structs = /* random() % */ N_STRUCTS;
-  for (int i = 1; i < n_structs; ++i)
-    gs(i);
-  gl("int main() {");
-  gl("  printf(\"%llx\\n\", sum);");
-  gl("}");
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/clang/utils/analyzer/CmpRuns.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/analyzer/CmpRuns.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/analyzer/CmpRuns.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,328 +0,0 @@
-#!/usr/bin/env python
-
-"""
-CmpRuns - A simple tool for comparing two static analyzer runs to determine
-which reports have been added, removed, or changed.
-
-This is designed to support automated testing using the static analyzer, from
-two perspectives: 
-  1. To monitor changes in the static analyzer's reports on real code bases, for
-     regression testing.
-
-  2. For use by end users who want to integrate regular static analyzer testing
-     into a buildbot like environment.
-
-Usage:
-
-    # Load the results of both runs, to obtain lists of the corresponding
-    # AnalysisDiagnostic objects.
-    #
-    resultsA = loadResultsFromSingleRun(singleRunInfoA, deleteEmpty)
-    resultsB = loadResultsFromSingleRun(singleRunInfoB, deleteEmpty)
-    
-    # Generate a relation from diagnostics in run A to diagnostics in run B 
-    # to obtain a list of triples (a, b, confidence). 
-    diff = compareResults(resultsA, resultsB)
-           
-"""
-
-import os
-import plistlib
-import CmpRuns
-
-# Information about analysis run:
-# path - the analysis output directory
-# root - the name of the root directory, which will be disregarded when 
-# determining the source file name
-class SingleRunInfo:
-    def __init__(self, path, root="", verboseLog=None):
-        self.path = path
-        self.root = root
-        self.verboseLog = verboseLog
-
-class AnalysisDiagnostic:
-    def __init__(self, data, report, htmlReport):
-        self._data = data
-        self._loc = self._data['location']
-        self._report = report
-        self._htmlReport = htmlReport
-
-    def getFileName(self):
-        root = self._report.run.root
-        fileName = self._report.files[self._loc['file']]
-        if fileName.startswith(root) :
-            return fileName[len(root):]  
-        return fileName
-
-    def getLine(self):
-        return self._loc['line']
-        
-    def getColumn(self):
-        return self._loc['col']
-
-    def getCategory(self):
-        return self._data['category']
-
-    def getDescription(self):
-        return self._data['description']
-
-    def getIssueIdentifier(self) :
-        id = self.getFileName() + "+"
-        if 'issue_context' in self._data :
-          id += self._data['issue_context'] + "+"
-        if 'issue_hash' in self._data :
-          id += str(self._data['issue_hash'])
-        return id
-
-    def getReport(self):
-        if self._htmlReport is None:
-            return " "
-        return os.path.join(self._report.run.path, self._htmlReport)
-
-    def getReadableName(self):
-        return '%s:%d:%d, %s: %s' % (self.getFileName(), self.getLine(), 
-                                     self.getColumn(), self.getCategory(), 
-                                     self.getDescription())
-        
-    # Note, the data format is not an API and may change from one analyzer 
-    # version to another.        
-    def getRawData(self):
-        return self._data
-
-class multidict:
-    def __init__(self, elts=()):
-        self.data = {}
-        for key,value in elts:
-            self[key] = value
-    
-    def __getitem__(self, item):
-        return self.data[item]
-    def __setitem__(self, key, value):
-        if key in self.data:
-            self.data[key].append(value)
-        else:
-            self.data[key] = [value]
-    def items(self):
-        return self.data.items()
-    def values(self):
-        return self.data.values()
-    def keys(self):
-        return self.data.keys()
-    def __len__(self):
-        return len(self.data)
-    def get(self, key, default=None):
-        return self.data.get(key, default)
-
-class CmpOptions:
-    def __init__(self, verboseLog=None, rootA="", rootB=""):
-        self.rootA = rootA
-        self.rootB = rootB
-        self.verboseLog = verboseLog
-
-class AnalysisReport:
-    def __init__(self, run, files):
-        self.run = run
-        self.files = files
-        self.diagnostics = []
-
-class AnalysisRun:
-    def __init__(self, info):
-        self.path = info.path
-        self.root = info.root
-        self.info = info
-        self.reports = []
-        # Cumulative list of all diagnostics from all the reports.
-        self.diagnostics = []
-        self.clang_version = None
-    
-    def getClangVersion(self):
-        return self.clang_version
-
-    def readSingleFile(self, p, deleteEmpty):
-        data = plistlib.readPlist(p)
-
-        # We want to retrieve the clang version even if there are no 
-        # reports. Assume that all reports were created using the same 
-        # clang version (this is always true and is more efficient).
-        if 'clang_version' in data:
-            if self.clang_version == None:
-                self.clang_version = data.pop('clang_version')
-            else:
-                data.pop('clang_version')
-
-        # Ignore/delete empty reports.
-        if not data['files']:
-            if deleteEmpty == True:
-                os.remove(p)
-            return
-
-        # Extract the HTML reports, if they exists.
-        if 'HTMLDiagnostics_files' in data['diagnostics'][0]:
-            htmlFiles = []
-            for d in data['diagnostics']:
-                # FIXME: Why is this named files, when does it have multiple
-                # files?
-                assert len(d['HTMLDiagnostics_files']) == 1
-                htmlFiles.append(d.pop('HTMLDiagnostics_files')[0])
-        else:
-            htmlFiles = [None] * len(data['diagnostics'])
-            
-        report = AnalysisReport(self, data.pop('files'))
-        diagnostics = [AnalysisDiagnostic(d, report, h) 
-                       for d,h in zip(data.pop('diagnostics'),
-                                      htmlFiles)]
-
-        assert not data
-
-        report.diagnostics.extend(diagnostics)
-        self.reports.append(report)
-        self.diagnostics.extend(diagnostics)
-
-
-# Backward compatibility API. 
-def loadResults(path, opts, root = "", deleteEmpty=True):
-    return loadResultsFromSingleRun(SingleRunInfo(path, root, opts.verboseLog),
-                                    deleteEmpty)
-
-# Load results of the analyzes from a given output folder.
-# - info is the SingleRunInfo object
-# - deleteEmpty specifies if the empty plist files should be deleted
-def loadResultsFromSingleRun(info, deleteEmpty=True):
-    path = info.path
-    run = AnalysisRun(info)
-
-    if os.path.isfile(path):
-        run.readSingleFile(path, deleteEmpty)
-    else:
-        for (dirpath, dirnames, filenames) in os.walk(path):
-            for f in filenames:
-                if (not f.endswith('plist')):
-                    continue
-                p = os.path.join(dirpath, f)
-                run.readSingleFile(p, deleteEmpty)
-
-    return run
-
-def cmpAnalysisDiagnostic(d) :
-    return d.getIssueIdentifier()
-
-def compareResults(A, B):
-    """
-    compareResults - Generate a relation from diagnostics in run A to
-    diagnostics in run B.
-
-    The result is the relation as a list of triples (a, b, confidence) where
-    each element {a,b} is None or an element from the respective run, and
-    confidence is a measure of the match quality (where 0 indicates equality,
-    and None is used if either element is None).
-    """
-
-    res = []
-
-    # Quickly eliminate equal elements.
-    neqA = []
-    neqB = []
-    eltsA = list(A.diagnostics)
-    eltsB = list(B.diagnostics)
-    eltsA.sort(key = cmpAnalysisDiagnostic)
-    eltsB.sort(key = cmpAnalysisDiagnostic)
-    while eltsA and eltsB:
-        a = eltsA.pop()
-        b = eltsB.pop()
-        if (a.getIssueIdentifier() == b.getIssueIdentifier()) :
-            res.append((a, b, 0))
-        elif a.getIssueIdentifier() > b.getIssueIdentifier():
-            eltsB.append(b)
-            neqA.append(a)
-        else:
-            eltsA.append(a)
-            neqB.append(b)
-    neqA.extend(eltsA)
-    neqB.extend(eltsB)
-
-    # FIXME: Add fuzzy matching. One simple and possible effective idea would be
-    # to bin the diagnostics, print them in a normalized form (based solely on
-    # the structure of the diagnostic), compute the diff, then use that as the
-    # basis for matching. This has the nice property that we don't depend in any
-    # way on the diagnostic format.
-
-    for a in neqA:
-        res.append((a, None, None))
-    for b in neqB:
-        res.append((None, b, None))
-
-    return res
-
-def dumpScanBuildResultsDiff(dirA, dirB, opts, deleteEmpty=True):
-    # Load the run results.
-    resultsA = loadResults(dirA, opts, opts.rootA, deleteEmpty)
-    resultsB = loadResults(dirB, opts, opts.rootB, deleteEmpty)
-    
-    # Open the verbose log, if given.
-    if opts.verboseLog:
-        auxLog = open(opts.verboseLog, "wb")
-    else:
-        auxLog = None
-
-    diff = compareResults(resultsA, resultsB)
-    foundDiffs = 0
-    for res in diff:
-        a,b,confidence = res
-        if a is None:
-            print "ADDED: %r" % b.getReadableName()
-            foundDiffs += 1
-            if auxLog:
-                print >>auxLog, ("('ADDED', %r, %r)" % (b.getReadableName(),
-                                                        b.getReport()))
-        elif b is None:
-            print "REMOVED: %r" % a.getReadableName()
-            foundDiffs += 1
-            if auxLog:
-                print >>auxLog, ("('REMOVED', %r, %r)" % (a.getReadableName(),
-                                                          a.getReport()))
-        elif confidence:
-            print "CHANGED: %r to %r" % (a.getReadableName(),
-                                         b.getReadableName())
-            foundDiffs += 1
-            if auxLog:
-                print >>auxLog, ("('CHANGED', %r, %r, %r, %r)" 
-                                 % (a.getReadableName(),
-                                    b.getReadableName(),
-                                    a.getReport(),
-                                    b.getReport()))
-        else:
-            pass
-
-    TotalReports = len(resultsB.diagnostics)
-    print "TOTAL REPORTS: %r" % TotalReports
-    print "TOTAL DIFFERENCES: %r" % foundDiffs
-    if auxLog:
-        print >>auxLog, "('TOTAL NEW REPORTS', %r)" % TotalReports
-        print >>auxLog, "('TOTAL DIFFERENCES', %r)" % foundDiffs
-        
-    return foundDiffs    
-
-def main():
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog [options] [dir A] [dir B]")
-    parser.add_option("", "--rootA", dest="rootA",
-                      help="Prefix to ignore on source files for directory A",
-                      action="store", type=str, default="")
-    parser.add_option("", "--rootB", dest="rootB",
-                      help="Prefix to ignore on source files for directory B",
-                      action="store", type=str, default="")
-    parser.add_option("", "--verbose-log", dest="verboseLog",
-                      help="Write additional information to LOG [default=None]",
-                      action="store", type=str, default=None,
-                      metavar="LOG")
-    (opts, args) = parser.parse_args()
-
-    if len(args) != 2:
-        parser.error("invalid number of arguments")
-
-    dirA,dirB = args
-
-    dumpScanBuildResultsDiff(dirA, dirB, opts)    
-
-if __name__ == '__main__':
-    main()

Modified: trunk/contrib/llvm/tools/clang/utils/analyzer/SATestAdd.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/analyzer/SATestAdd.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/analyzer/SATestAdd.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,82 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Static Analyzer qualification infrastructure: adding a new project to 
-the Repository Directory.
-
- Add a new project for testing: build it and add to the Project Map file.
-   Assumes it's being run from the Repository Directory.
-   The project directory should be added inside the Repository Directory and 
-   have the same name as the project ID
-   
- The project should use the following files for set up:
-      - pre_run_static_analyzer.sh - prepare the build environment.
-                                     Ex: make clean can be a part of it.
-      - run_static_analyzer.cmd - a list of commands to run through scan-build.
-                                     Each command should be on a separate line.
-                                     Choose from: configure, make, xcodebuild 
-"""
-import SATestBuild
-
-import os
-import csv
-import sys
-
-def isExistingProject(PMapFile, projectID) :
-    PMapReader = csv.reader(PMapFile)
-    for I in PMapReader:
-        if projectID == I[0]:
-            return True
-    return False    
-
-# Add a new project for testing: build it and add to the Project Map file.
-# Params:
-#   Dir is the directory where the sources are.
-#   ID is a short string used to identify a project.
-def addNewProject(ID, BuildMode) :
-    CurDir = os.path.abspath(os.curdir)
-    Dir = SATestBuild.getProjectDir(ID)
-    if not os.path.exists(Dir):
-        print "Error: Project directory is missing: %s" % Dir
-        sys.exit(-1)
-        
-    # Build the project.
-    SATestBuild.testProject(ID, BuildMode, IsReferenceBuild=True, Dir=Dir)
-
-    # Add the project ID to the project map.
-    ProjectMapPath = os.path.join(CurDir, SATestBuild.ProjectMapFile)
-    if os.path.exists(ProjectMapPath):
-        PMapFile = open(ProjectMapPath, "r+b")
-    else:
-        print "Warning: Creating the Project Map file!!"
-        PMapFile = open(ProjectMapPath, "w+b")
-    try:
-        if (isExistingProject(PMapFile, ID)) :        
-            print >> sys.stdout, 'Warning: Project with ID \'', ID, \
-                                 '\' already exists.'
-            print >> sys.stdout, "Reference output has been regenerated."
-        else:                     
-            PMapWriter = csv.writer(PMapFile)
-            PMapWriter.writerow( (ID, int(BuildMode)) );
-            print "The project map is updated: ", ProjectMapPath
-    finally:
-        PMapFile.close()
-            
-
-# TODO: Add an option not to build. 
-# TODO: Set the path to the Repository directory.
-if __name__ == '__main__':
-    if len(sys.argv) < 2:
-        print >> sys.stderr, 'Usage: ', sys.argv[0],\
-                             'project_ID <mode>' \
-                             'mode - 0 for single file project; ' \
-                             '1 for scan_build; ' \
-                             '2 for single file c++11 project'
-        sys.exit(-1)
-    
-    BuildMode = 1    
-    if (len(sys.argv) >= 3):
-        BuildMode = int(sys.argv[2])  
-    assert((BuildMode == 0) | (BuildMode == 1) | (BuildMode == 2))
-        
-    addNewProject(sys.argv[1], BuildMode)

Modified: trunk/contrib/llvm/tools/clang/utils/analyzer/SATestBuild.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/analyzer/SATestBuild.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/analyzer/SATestBuild.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,556 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Static Analyzer qualification infrastructure.
-
-The goal is to test the analyzer against different projects, check for failures,
-compare results, and measure performance.
-
-Repository Directory will contain sources of the projects as well as the 
-information on how to build them and the expected output. 
-Repository Directory structure:
-   - ProjectMap file
-   - Historical Performance Data
-   - Project Dir1
-     - ReferenceOutput
-   - Project Dir2
-     - ReferenceOutput
-   ..
-
-To test the build of the analyzer one would:
-   - Copy over a copy of the Repository Directory. (TODO: Prefer to ensure that 
-     the build directory does not pollute the repository to min network traffic).
-   - Build all projects, until error. Produce logs to report errors.
-   - Compare results.  
-
-The files which should be kept around for failure investigations: 
-   RepositoryCopy/Project DirI/ScanBuildResults
-   RepositoryCopy/Project DirI/run_static_analyzer.log      
-   
-Assumptions (TODO: shouldn't need to assume these.):   
-   The script is being run from the Repository Directory.
-   The compiler for scan-build and scan-build are in the PATH.
-   export PATH=/Users/zaks/workspace/c2llvm/build/Release+Asserts/bin:$PATH
-
-For more logging, set the  env variables:
-   zaks:TI zaks$ export CCC_ANALYZER_LOG=1
-   zaks:TI zaks$ export CCC_ANALYZER_VERBOSE=1
-"""
-import CmpRuns
-
-import os
-import csv
-import sys
-import glob
-import math
-import shutil
-import time
-import plistlib
-from subprocess import check_call, CalledProcessError
-
-#------------------------------------------------------------------------------
-# Helper functions.
-#------------------------------------------------------------------------------
-
-def detectCPUs():
-    """
-    Detects the number of CPUs on a system. Cribbed from pp.
-    """
-    # Linux, Unix and MacOS:
-    if hasattr(os, "sysconf"):
-        if os.sysconf_names.has_key("SC_NPROCESSORS_ONLN"):
-            # Linux & Unix:
-            ncpus = os.sysconf("SC_NPROCESSORS_ONLN")
-            if isinstance(ncpus, int) and ncpus > 0:
-                return ncpus
-        else: # OSX:
-            return int(capture(['sysctl', '-n', 'hw.ncpu']))
-    # Windows:
-    if os.environ.has_key("NUMBER_OF_PROCESSORS"):
-        ncpus = int(os.environ["NUMBER_OF_PROCESSORS"])
-        if ncpus > 0:
-            return ncpus
-    return 1 # Default
-
-def which(command, paths = None):
-   """which(command, [paths]) - Look up the given command in the paths string
-   (or the PATH environment variable, if unspecified)."""
-
-   if paths is None:
-       paths = os.environ.get('PATH','')
-
-   # Check for absolute match first.
-   if os.path.exists(command):
-       return command
-
-   # Would be nice if Python had a lib function for this.
-   if not paths:
-       paths = os.defpath
-
-   # Get suffixes to search.
-   # On Cygwin, 'PATHEXT' may exist but it should not be used.
-   if os.pathsep == ';':
-       pathext = os.environ.get('PATHEXT', '').split(';')
-   else:
-       pathext = ['']
-
-   # Search the paths...
-   for path in paths.split(os.pathsep):
-       for ext in pathext:
-           p = os.path.join(path, command + ext)
-           if os.path.exists(p):
-               return p
-
-   return None
-
-# Make sure we flush the output after every print statement.
-class flushfile(object):
-    def __init__(self, f):
-        self.f = f
-    def write(self, x):
-        self.f.write(x)
-        self.f.flush()
-
-sys.stdout = flushfile(sys.stdout)
-
-def getProjectMapPath():
-    ProjectMapPath = os.path.join(os.path.abspath(os.curdir), 
-                                  ProjectMapFile)
-    if not os.path.exists(ProjectMapPath):
-        print "Error: Cannot find the Project Map file " + ProjectMapPath +\
-                "\nRunning script for the wrong directory?"
-        sys.exit(-1)  
-    return ProjectMapPath         
-
-def getProjectDir(ID):
-    return os.path.join(os.path.abspath(os.curdir), ID)        
-
-def getSBOutputDirName(IsReferenceBuild) :
-    if IsReferenceBuild == True :
-        return SBOutputDirReferencePrefix + SBOutputDirName
-    else :
-        return SBOutputDirName
-
-#------------------------------------------------------------------------------
-# Configuration setup.
-#------------------------------------------------------------------------------
-
-# Find Clang for static analysis.
-Clang = which("clang", os.environ['PATH'])
-if not Clang:
-    print "Error: cannot find 'clang' in PATH"
-    sys.exit(-1)
-
-# Number of jobs.
-Jobs = int(math.ceil(detectCPUs() * 0.75))
-
-# Project map stores info about all the "registered" projects.
-ProjectMapFile = "projectMap.csv"
-
-# Names of the project specific scripts.
-# The script that needs to be executed before the build can start.
-CleanupScript = "cleanup_run_static_analyzer.sh"
-# This is a file containing commands for scan-build.  
-BuildScript = "run_static_analyzer.cmd"
-
-# The log file name.
-LogFolderName = "Logs"
-BuildLogName = "run_static_analyzer.log"
-# Summary file - contains the summary of the failures. Ex: This info can be be  
-# displayed when buildbot detects a build failure.
-NumOfFailuresInSummary = 10
-FailuresSummaryFileName = "failures.txt"
-# Summary of the result diffs.
-DiffsSummaryFileName = "diffs.txt"
-
-# The scan-build result directory.
-SBOutputDirName = "ScanBuildResults"
-SBOutputDirReferencePrefix = "Ref"
-
-# The list of checkers used during analyzes.
-# Currently, consists of all the non experimental checkers, plus a few alpha
-# checkers we don't want to regress on.
-Checkers="alpha.unix.SimpleStream,alpha.security.taint,alpha.cplusplus.NewDeleteLeaks,core,cplusplus,deadcode,security,unix,osx"
-
-Verbose = 1
-
-#------------------------------------------------------------------------------
-# Test harness logic.
-#------------------------------------------------------------------------------
-
-# Run pre-processing script if any.
-def runCleanupScript(Dir, PBuildLogFile):
-    ScriptPath = os.path.join(Dir, CleanupScript)
-    if os.path.exists(ScriptPath):
-        try:
-            if Verbose == 1:        
-                print "  Executing: %s" % (ScriptPath,)
-            check_call("chmod +x %s" % ScriptPath, cwd = Dir, 
-                                              stderr=PBuildLogFile,
-                                              stdout=PBuildLogFile, 
-                                              shell=True)    
-            check_call(ScriptPath, cwd = Dir, stderr=PBuildLogFile,
-                                              stdout=PBuildLogFile, 
-                                              shell=True)
-        except:
-            print "Error: The pre-processing step failed. See ", \
-                  PBuildLogFile.name, " for details."
-            sys.exit(-1)
-
-# Build the project with scan-build by reading in the commands and 
-# prefixing them with the scan-build options.
-def runScanBuild(Dir, SBOutputDir, PBuildLogFile):
-    BuildScriptPath = os.path.join(Dir, BuildScript)
-    if not os.path.exists(BuildScriptPath):
-        print "Error: build script is not defined: %s" % BuildScriptPath
-        sys.exit(-1)
-    SBOptions = "--use-analyzer " + Clang + " "
-    SBOptions += "-plist-html -o " + SBOutputDir + " "
-    SBOptions += "-enable-checker " + Checkers + " "  
-    SBOptions += "--keep-empty "
-    try:
-        SBCommandFile = open(BuildScriptPath, "r")
-        SBPrefix = "scan-build " + SBOptions + " "
-        for Command in SBCommandFile:
-            # If using 'make', auto imply a -jX argument
-            # to speed up analysis.  xcodebuild will
-            # automatically use the maximum number of cores.
-            if (Command.startswith("make ") or Command == "make") and \
-                "-j" not in Command:
-                Command += " -j%d" % Jobs
-            SBCommand = SBPrefix + Command
-            if Verbose == 1:        
-                print "  Executing: %s" % (SBCommand,)
-            check_call(SBCommand, cwd = Dir, stderr=PBuildLogFile,
-                                             stdout=PBuildLogFile, 
-                                             shell=True)
-    except:
-        print "Error: scan-build failed. See ",PBuildLogFile.name,\
-              " for details."
-        raise
-
-def hasNoExtension(FileName):
-    (Root, Ext) = os.path.splitext(FileName)
-    if ((Ext == "")) :
-        return True
-    return False
-
-def isValidSingleInputFile(FileName):
-    (Root, Ext) = os.path.splitext(FileName)
-    if ((Ext == ".i") | (Ext == ".ii") | 
-        (Ext == ".c") | (Ext == ".cpp") | 
-        (Ext == ".m") | (Ext == "")) :
-        return True
-    return False
-   
-# Run analysis on a set of preprocessed files.
-def runAnalyzePreprocessed(Dir, SBOutputDir, Mode):
-    if os.path.exists(os.path.join(Dir, BuildScript)):
-        print "Error: The preprocessed files project should not contain %s" % \
-               BuildScript
-        raise Exception()       
-
-    CmdPrefix = Clang + " -cc1 -analyze -analyzer-output=plist -w "
-    CmdPrefix += "-analyzer-checker=" + Checkers +" -fcxx-exceptions -fblocks "   
-    
-    if (Mode == 2) :
-        CmdPrefix += "-std=c++11 " 
-    
-    PlistPath = os.path.join(Dir, SBOutputDir, "date")
-    FailPath = os.path.join(PlistPath, "failures");
-    os.makedirs(FailPath);
- 
-    for FullFileName in glob.glob(Dir + "/*"):
-        FileName = os.path.basename(FullFileName)
-        Failed = False
-        
-        # Only run the analyzes on supported files.
-        if (hasNoExtension(FileName)):
-            continue
-        if (isValidSingleInputFile(FileName) == False):
-            print "Error: Invalid single input file %s." % (FullFileName,)
-            raise Exception()
-        
-        # Build and call the analyzer command.
-        OutputOption = "-o " + os.path.join(PlistPath, FileName) + ".plist "
-        Command = CmdPrefix + OutputOption + os.path.join(Dir, FileName)
-        LogFile = open(os.path.join(FailPath, FileName + ".stderr.txt"), "w+b")
-        try:
-            if Verbose == 1:        
-                print "  Executing: %s" % (Command,)
-            check_call(Command, cwd = Dir, stderr=LogFile,
-                                           stdout=LogFile, 
-                                           shell=True)
-        except CalledProcessError, e:
-            print "Error: Analyzes of %s failed. See %s for details." \
-                  "Error code %d." % \
-                   (FullFileName, LogFile.name, e.returncode)
-            Failed = True       
-        finally:
-            LogFile.close()            
-        
-        # If command did not fail, erase the log file.
-        if Failed == False:
-            os.remove(LogFile.name);
-
-def buildProject(Dir, SBOutputDir, ProjectBuildMode, IsReferenceBuild):
-    TBegin = time.time() 
-
-    BuildLogPath = os.path.join(SBOutputDir, LogFolderName, BuildLogName)
-    print "Log file: %s" % (BuildLogPath,) 
-    print "Output directory: %s" %(SBOutputDir, )
-    
-    # Clean up the log file.
-    if (os.path.exists(BuildLogPath)) :
-        RmCommand = "rm " + BuildLogPath
-        if Verbose == 1:
-            print "  Executing: %s" % (RmCommand,)
-        check_call(RmCommand, shell=True)
-    
-    # Clean up scan build results.
-    if (os.path.exists(SBOutputDir)) :
-        RmCommand = "rm -r " + SBOutputDir
-        if Verbose == 1: 
-            print "  Executing: %s" % (RmCommand,)
-            check_call(RmCommand, shell=True)
-    assert(not os.path.exists(SBOutputDir))
-    os.makedirs(os.path.join(SBOutputDir, LogFolderName))
-        
-    # Open the log file.
-    PBuildLogFile = open(BuildLogPath, "wb+")
-    
-    # Build and analyze the project.
-    try:
-        runCleanupScript(Dir, PBuildLogFile)
-        
-        if (ProjectBuildMode == 1):
-            runScanBuild(Dir, SBOutputDir, PBuildLogFile)
-        else:
-            runAnalyzePreprocessed(Dir, SBOutputDir, ProjectBuildMode)
-        
-        if IsReferenceBuild :
-            runCleanupScript(Dir, PBuildLogFile)
-           
-    finally:
-        PBuildLogFile.close()
-        
-    print "Build complete (time: %.2f). See the log for more details: %s" % \
-           ((time.time()-TBegin), BuildLogPath) 
-       
-# A plist file is created for each call to the analyzer(each source file).
-# We are only interested on the once that have bug reports, so delete the rest.        
-def CleanUpEmptyPlists(SBOutputDir):
-    for F in glob.glob(SBOutputDir + "/*/*.plist"):
-        P = os.path.join(SBOutputDir, F)
-        
-        Data = plistlib.readPlist(P)
-        # Delete empty reports.
-        if not Data['files']:
-            os.remove(P)
-            continue
-
-# Given the scan-build output directory, checks if the build failed 
-# (by searching for the failures directories). If there are failures, it 
-# creates a summary file in the output directory.         
-def checkBuild(SBOutputDir):
-    # Check if there are failures.
-    Failures = glob.glob(SBOutputDir + "/*/failures/*.stderr.txt")
-    TotalFailed = len(Failures);
-    if TotalFailed == 0:
-        CleanUpEmptyPlists(SBOutputDir)
-        Plists = glob.glob(SBOutputDir + "/*/*.plist")
-        print "Number of bug reports (non empty plist files) produced: %d" %\
-           len(Plists)
-        return;
-    
-    # Create summary file to display when the build fails.
-    SummaryPath = os.path.join(SBOutputDir, LogFolderName, FailuresSummaryFileName)
-    if (Verbose > 0):
-        print "  Creating the failures summary file %s" % (SummaryPath,)
-    
-    SummaryLog = open(SummaryPath, "w+")
-    try:
-        SummaryLog.write("Total of %d failures discovered.\n" % (TotalFailed,))
-        if TotalFailed > NumOfFailuresInSummary:
-            SummaryLog.write("See the first %d below.\n" 
-                                                   % (NumOfFailuresInSummary,))
-        # TODO: Add a line "See the results folder for more."
-    
-        FailuresCopied = NumOfFailuresInSummary
-        Idx = 0
-        for FailLogPathI in Failures:
-            if Idx >= NumOfFailuresInSummary:
-                break;
-            Idx += 1 
-            SummaryLog.write("\n-- Error #%d -----------\n" % (Idx,));
-            FailLogI = open(FailLogPathI, "r");
-            try: 
-                shutil.copyfileobj(FailLogI, SummaryLog);
-            finally:
-                FailLogI.close()
-    finally:
-        SummaryLog.close()
-    
-    print "Error: analysis failed. See ", SummaryPath
-    sys.exit(-1)       
-
-# Auxiliary object to discard stdout.
-class Discarder(object):
-    def write(self, text):
-        pass # do nothing
-
-# Compare the warnings produced by scan-build.
-def runCmpResults(Dir):   
-    TBegin = time.time() 
-
-    RefDir = os.path.join(Dir, SBOutputDirReferencePrefix + SBOutputDirName)
-    NewDir = os.path.join(Dir, SBOutputDirName)
-    
-    # We have to go one level down the directory tree.
-    RefList = glob.glob(RefDir + "/*") 
-    NewList = glob.glob(NewDir + "/*")
-    
-    # Log folders are also located in the results dir, so ignore them. 
-    RefList.remove(os.path.join(RefDir, LogFolderName))
-    NewList.remove(os.path.join(NewDir, LogFolderName))
-    
-    if len(RefList) == 0 or len(NewList) == 0:
-        return False
-    assert(len(RefList) == len(NewList))
-
-    # There might be more then one folder underneath - one per each scan-build 
-    # command (Ex: one for configure and one for make).
-    if (len(RefList) > 1):
-        # Assume that the corresponding folders have the same names.
-        RefList.sort()
-        NewList.sort()
-    
-    # Iterate and find the differences.
-    NumDiffs = 0
-    PairList = zip(RefList, NewList)    
-    for P in PairList:    
-        RefDir = P[0] 
-        NewDir = P[1]
-    
-        assert(RefDir != NewDir) 
-        if Verbose == 1:        
-            print "  Comparing Results: %s %s" % (RefDir, NewDir)
-    
-        DiffsPath = os.path.join(NewDir, DiffsSummaryFileName)
-        Opts = CmpRuns.CmpOptions(DiffsPath)
-        # Discard everything coming out of stdout (CmpRun produces a lot of them).
-        OLD_STDOUT = sys.stdout
-        sys.stdout = Discarder()
-        # Scan the results, delete empty plist files.
-        NumDiffs = CmpRuns.dumpScanBuildResultsDiff(RefDir, NewDir, Opts, False)
-        sys.stdout = OLD_STDOUT
-        if (NumDiffs > 0) :
-            print "Warning: %r differences in diagnostics. See %s" % \
-                  (NumDiffs, DiffsPath,)
-                    
-    print "Diagnostic comparison complete (time: %.2f)." % (time.time()-TBegin) 
-    return (NumDiffs > 0)
-    
-def updateSVN(Mode, ProjectsMap):
-    try:
-        ProjectsMap.seek(0)    
-        for I in csv.reader(ProjectsMap):
-            ProjName = I[0] 
-            Path = os.path.join(ProjName, getSBOutputDirName(True))
-    
-            if Mode == "delete":
-                Command = "svn delete %s" % (Path,)
-            else:
-                Command = "svn add %s" % (Path,)
-
-            if Verbose == 1:        
-                print "  Executing: %s" % (Command,)
-            check_call(Command, shell=True)    
-    
-        if Mode == "delete":
-            CommitCommand = "svn commit -m \"[analyzer tests] Remove " \
-                            "reference results.\""     
-        else:
-            CommitCommand = "svn commit -m \"[analyzer tests] Add new " \
-                            "reference results.\""
-        if Verbose == 1:        
-            print "  Executing: %s" % (CommitCommand,)
-        check_call(CommitCommand, shell=True)    
-    except:
-        print "Error: SVN update failed."
-        sys.exit(-1)
-        
-def testProject(ID, ProjectBuildMode, IsReferenceBuild=False, Dir=None):
-    print " \n\n--- Building project %s" % (ID,)
-
-    TBegin = time.time() 
-
-    if Dir is None :
-        Dir = getProjectDir(ID)        
-    if Verbose == 1:        
-        print "  Build directory: %s." % (Dir,)
-    
-    # Set the build results directory.
-    RelOutputDir = getSBOutputDirName(IsReferenceBuild)
-    SBOutputDir = os.path.join(Dir, RelOutputDir)
-                
-    buildProject(Dir, SBOutputDir, ProjectBuildMode, IsReferenceBuild)
-
-    checkBuild(SBOutputDir)
-    
-    if IsReferenceBuild == False:
-        runCmpResults(Dir)
-        
-    print "Completed tests for project %s (time: %.2f)." % \
-          (ID, (time.time()-TBegin))
-    
-def testAll(IsReferenceBuild = False, UpdateSVN = False):
-    PMapFile = open(getProjectMapPath(), "rb")
-    try:        
-        # Validate the input.
-        for I in csv.reader(PMapFile):
-            if (len(I) != 2) :
-                print "Error: Rows in the ProjectMapFile should have 3 entries."
-                raise Exception()
-            if (not ((I[1] == "0") | (I[1] == "1") | (I[1] == "2"))):
-                print "Error: Second entry in the ProjectMapFile should be 0" \
-                      " (single file), 1 (project), or 2(single file c++11)."
-                raise Exception()              
-
-        # When we are regenerating the reference results, we might need to 
-        # update svn. Remove reference results from SVN.
-        if UpdateSVN == True:
-            assert(IsReferenceBuild == True);
-            updateSVN("delete",  PMapFile);
-            
-        # Test the projects.
-        PMapFile.seek(0)    
-        for I in csv.reader(PMapFile):
-            testProject(I[0], int(I[1]), IsReferenceBuild)
-
-        # Add reference results to SVN.
-        if UpdateSVN == True:
-            updateSVN("add",  PMapFile);
-
-    except:
-        print "Error occurred. Premature termination."
-        raise                            
-    finally:
-        PMapFile.close()    
-            
-if __name__ == '__main__':
-    IsReference = False
-    UpdateSVN = False
-    if len(sys.argv) >= 2:
-        if sys.argv[1] == "-r":
-            IsReference = True
-        elif sys.argv[1] == "-rs":
-            IsReference = True
-            UpdateSVN = True
-        else:     
-          print >> sys.stderr, 'Usage: ', sys.argv[0],\
-                             '[-r|-rs]' \
-                             'Use -r to regenerate reference output' \
-                             'Use -rs to regenerate reference output and update svn'
-
-    testAll(IsReference, UpdateSVN)

Modified: trunk/contrib/llvm/tools/clang/utils/analyzer/SumTimerInfo.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/analyzer/SumTimerInfo.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/analyzer/SumTimerInfo.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,84 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Script to Summarize statistics in the scan-build output.
-
-Statistics are enabled by passing '-internal-stats' option to scan-build 
-(or '-analyzer-stats' to the analyzer).
-
-"""
-
-import string
-from operator import itemgetter
-import sys
-
-if __name__ == '__main__':
-    if len(sys.argv) < 2:
-        print >> sys.stderr, 'Usage: ', sys.argv[0],\
-                             'scan_build_output_file'
-        sys.exit(-1)
-
-    f = open(sys.argv[1], 'r')
-    Time = 0.0
-    TotalTime = 0.0
-    MaxTime = 0.0
-    Warnings = 0
-    Count = 0
-    FunctionsAnalyzed = 0
-    ReachableBlocks = 0
-    ReachedMaxSteps = 0
-    NumSteps = 0
-    NumInlinedCallSites = 0
-    NumBifurcatedCallSites = 0
-    MaxCFGSize = 0
-    Mode = 1
-    for line in f:
-        if ("Miscellaneous Ungrouped Timers" in line) :
-          Mode = 1
-        if (("Analyzer Total Time" in line) and (Mode == 1)) :
-          s = line.split()
-          Time = Time + float(s[6])
-          Count = Count + 1
-          if (float(s[6]) > MaxTime) :
-            MaxTime = float(s[6])
-        if ((("warning generated." in line) or ("warnings generated" in line)) and Mode == 1) :
-          s = line.split()
-          Warnings = Warnings + int(s[0])
-        if (("The # of functions analysed (as top level)" in line) and (Mode == 1)) :
-          s = line.split()
-          FunctionsAnalyzed = FunctionsAnalyzed + int(s[0])
-        if (("The % of reachable basic blocks" in line) and (Mode == 1)) :
-          s = line.split()
-          ReachableBlocks = ReachableBlocks + int(s[0])
-        if (("The # of times we reached the max number of steps" in line) and (Mode == 1)) :
-          s = line.split()
-          ReachedMaxSteps = ReachedMaxSteps + int(s[0])
-        if (("The maximum number of basic blocks in a function" in line) and (Mode == 1)) :
-          s = line.split()
-          if (MaxCFGSize < int(s[0])) :
-            MaxCFGSize = int(s[0])
-        if (("The # of steps executed" in line) and (Mode == 1)) :
-          s = line.split()
-          NumSteps = NumSteps + int(s[0])
-        if (("The # of times we inlined a call" in line) and (Mode == 1)) :
-          s = line.split()
-          NumInlinedCallSites = NumInlinedCallSites + int(s[0])
-        if (("The # of times we split the path due to imprecise dynamic dispatch info" in line) and (Mode == 1)) :
-          s = line.split()
-          NumBifurcatedCallSites = NumBifurcatedCallSites + int(s[0])
-        if ((")  Total" in line) and (Mode == 1)) :
-          s = line.split()
-          TotalTime = TotalTime + float(s[6])
-          
-    print "TU Count %d" % (Count)
-    print "Time %f" % (Time)
-    print "Warnings %d" % (Warnings)
-    print "Functions Analyzed %d" % (FunctionsAnalyzed)
-    print "Reachable Blocks %d" % (ReachableBlocks)
-    print "Reached Max Steps %d" % (ReachedMaxSteps)
-    print "Number of Steps %d" % (NumSteps)
-    print "Number of Inlined calls %d (bifurcated %d)" % (NumInlinedCallSites, NumBifurcatedCallSites)
-    print "MaxTime %f" % (MaxTime)
-    print "TotalTime %f" % (TotalTime)
-    print "Max CFG Size %d" % (MaxCFGSize)
-    
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/utils/analyzer/reducer.pl
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/analyzer/reducer.pl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/analyzer/reducer.pl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,65 +0,0 @@
-#!/usr/bin/perl -w
-use strict;
-use File::Temp qw/ tempdir /;
-my $prog = "reducer";
-
-die "$prog <code file> <error string> [optional command]\n" if ($#ARGV < 0);
-my $file = shift @ARGV;
-die "$prog: [error] cannot read file $file\n" if (! -r $file);
-
-my $magic = shift @ARGV;
-die "$prog: [error] no error string specified\n" if (! defined $magic);
-
-# Create a backup of the file.
-my $dir = tempdir( CLEANUP => 1 );
-print "$prog: created temporary directory '$dir'\n";
-my $srcFile = "$dir/$file";
-`cp $file $srcFile`;
-
-# Create the script.
-my $scriptFile = "$dir/script";
-open(OUT, ">$scriptFile") or die "$prog: cannot create '$scriptFile'\n";
-my $reduceOut = "$dir/reduceOut";
-
-my $command;
-if (scalar(@ARGV) > 0) { $command = \@ARGV; }
-else {
-  my $compiler = "clang";
-  $command = [$compiler, "-fsyntax-only", "-Wfatal-errors", "-Wno-deprecated-declarations", "-Wimplicit-function-declaration"];
-}
-push @$command, $srcFile;
-my $commandStr = "@$command";
-
-print OUT <<ENDTEXT;
-#!/usr/bin/perl -w
-use strict;
-my \$BAD = 1;
-my \$GOOD = 0;
-`rm -f $reduceOut`;
-my \$command = "$commandStr > $reduceOut 2>&1";
-system(\$command);
-open(IN, "$reduceOut") or exit(\$BAD);
-my \$found = 0;
-while(<IN>) {
-  if (/$magic/) { exit \$GOOD; }
-}
-exit \$BAD;
-ENDTEXT
-close(OUT);
-`chmod +x $scriptFile`;
-
-print "$prog: starting reduction\n";
-sub multidelta($) {
-    my ($level) = @_;
-    system("multidelta -level=$level $scriptFile $srcFile");
-}
-
-for (my $i = 1 ; $i <= 5; $i++) {
-  foreach my $level (0,0,1,1,2,2,10) {
-    multidelta($level);
-  }
-}
-
-# Copy the final file.
-`cp $srcFile $file.reduced`;
-print "$prog: generated '$file.reduced";

Modified: trunk/contrib/llvm/tools/clang/utils/analyzer/ubiviz
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/analyzer/ubiviz	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/analyzer/ubiviz	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,74 +0,0 @@
-#!/usr/bin/env python
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-##===----------------------------------------------------------------------===##
-#
-# This script reads visualization data emitted by the static analyzer for
-# display in Ubigraph.
-#
-##===----------------------------------------------------------------------===##
-
-import xmlrpclib
-import sys
-
-def Error(message):
-    print >> sys.stderr, 'ubiviz: ' + message
-    sys.exit(1)
-    
-def StreamData(filename):
-  file = open(filename)
-  for ln in file:
-    yield eval(ln)
-  file.close()
-
-def Display(G, data):
-  action = data[0]
-  if action == 'vertex':
-    vertex = data[1]
-    G.new_vertex_w_id(vertex)
-    for attribute in data[2:]:
-      G.set_vertex_attribute(vertex, attribute[0], attribute[1])
-  elif action == 'edge':
-    src = data[1]
-    dst = data[2]
-    edge = G.new_edge(src,dst)
-    for attribute in data[3:]:
-      G.set_edge_attribute(edge, attribute[0], attribute[1])
-  elif action == "vertex_style":
-    style_id = data[1]
-    parent_id = data[2]
-    G.new_vertex_style_w_id(style_id, parent_id)
-    for attribute in data[3:]:
-      G.set_vertex_style_attribute(style_id, attribute[0], attribute[1])
-  elif action == "vertex_style_attribute":
-    style_id = data[1]
-    for attribute in data[2:]:
-      G.set_vertex_style_attribute(style_id, attribute[0], attribute[1])
-  elif action == "change_vertex_style":
-     vertex_id = data[1]
-     style_id = data[2]
-     G.change_vertex_style(vertex_id,style_id)
-
-def main(args):
-  if len(args) == 0:
-    Error('no input files')    
-
-  server = xmlrpclib.Server('http://127.0.0.1:20738/RPC2')
-  G = server.ubigraph
-            
-  for arg in args:
-    G.clear()
-    for x in StreamData(arg):
-      Display(G,x)
-  
-  sys.exit(0)
-  
-
-if __name__ == '__main__':
-    main(sys.argv[1:])
-    
-    
\ No newline at end of file

Modified: trunk/contrib/llvm/tools/clang/utils/analyzer/update_plist_test.pl
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/analyzer/update_plist_test.pl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/analyzer/update_plist_test.pl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,51 +0,0 @@
-#!/usr/bin/perl -w
-use strict;
-require File::Temp;
-use File::Temp ();
-
-die "update_plist_test <test file> <plist file>\n" if ($#ARGV < 1);
-my $testFile = shift @ARGV;
-die "error: cannot read file $testFile\n" if (! -r $testFile);
-my $plistFile = shift @ARGV;
-die "error: cannot read file $plistFile\n" if (! -r $plistFile);
-
-# Create a temp file for the new test.
-my $fh = File::Temp->new();
-my $filename = $fh->filename;
-$fh->unlink_on_destroy(1);
-
-# Copy the existing temp file, skipping the FileCheck comments.
-open (IN, $testFile) or die "cannot open $testFile\n";
-while (<IN>) {
-  next if (/^\/\/ CHECK/);
-  print $fh $_;
-}
-close(IN);
-
-# Copy the plist data, and specially format it.
-open (IN, $plistFile) or die "cannot open $plistFile\n";
-my $firstArray = 1;
-my $first = 1;
-while (<IN>) {
-  # Skip everything not indented.
-  next if (/^[^\s]/);
-  # Skip the first array entry, which is for files.
-  if ($firstArray) {
-    if (/<\/array>/) { $firstArray = 0; }
-	next;
-  }
-  # Format the CHECK lines.
-  if ($first) {
-  	print $fh "// CHECK: ";
-	$first = 0;
-  }
-  else {
-  	print $fh "// CHECK-NEXT: ";
-  }
-  print $fh $_;
-}
-close (IN);
-close ($fh);
-
-`cp $filename $testFile`;
-print "updated $testFile\n";

Modified: trunk/contrib/llvm/tools/clang/utils/builtin-defines.c
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/builtin-defines.c	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/builtin-defines.c	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,85 +0,0 @@
-/* 
-This is a clang style test case for checking that preprocessor
-defines match gcc.
-*/
-
-/*
-RUN: for arch in -m32 -m64; do \
-RUN:   for lang in -std=gnu89 -ansi -std=c99 -std=gnu99; do \
-RUN:     for input in c objective-c; do \
-RUN:       for opts in "-O0" "-O1 -dynamic" "-O2 -static" "-Os"; do     \
-RUN:         echo "-- $arch, $lang, $input, $opts --"; \
-RUN:         for cc in 0 1; do \
-RUN:           if [ "$cc" == 0 ]; then \
-RUN:             cc_prog=clang; \
-RUN:             output=%t0; \
-RUN:           else \
-RUN:             cc_prog=gcc; \
-RUN:             output=%t1; \
-RUN:           fi; \
-RUN:           $cc_prog $arch $lang $opts -march=core2 -dM -E -x $input %s | sort > $output; \
-RUN:          done; \
-RUN:          if (! diff %t0 %t1); then exit 1; fi; \
-RUN:       done; \
-RUN:     done; \
-RUN:   done; \
-RUN: done;
-*/
-
-/* We don't care about this difference */
-#ifdef __PIC__
-#if __PIC__ == 1
-#undef __PIC__
-#undef __pic__
-#define __PIC__ 2
-#define __pic__ 2
-#endif
-#endif
-
-/* Undefine things we don't expect to match. */
-#undef __core2
-#undef __core2__
-#undef __SSSE3__
-
-/* Undefine things we don't expect to match. */
-#undef __DEC_EVAL_METHOD__
-#undef __INT16_TYPE__
-#undef __INT32_TYPE__
-#undef __INT64_TYPE__
-#undef __INT8_TYPE__
-#undef __SSP__
-#undef __APPLE_CC__
-#undef __VERSION__
-#undef __clang__
-#undef __llvm__
-#undef __nocona
-#undef __nocona__
-#undef __k8
-#undef __k8__
-#undef __tune_nocona__
-#undef __tune_core2__
-#undef __POINTER_WIDTH__
-#undef __INTPTR_TYPE__
-#undef __NO_MATH_INLINES
-
-#undef __DEC128_DEN__
-#undef __DEC128_EPSILON__
-#undef __DEC128_MANT_DIG__
-#undef __DEC128_MAX_EXP__
-#undef __DEC128_MAX__
-#undef __DEC128_MIN_EXP__
-#undef __DEC128_MIN__
-#undef __DEC32_DEN__
-#undef __DEC32_EPSILON__
-#undef __DEC32_MANT_DIG__
-#undef __DEC32_MAX_EXP__
-#undef __DEC32_MAX__
-#undef __DEC32_MIN_EXP__
-#undef __DEC32_MIN__
-#undef __DEC64_DEN__
-#undef __DEC64_EPSILON__
-#undef __DEC64_MANT_DIG__
-#undef __DEC64_MAX_EXP__
-#undef __DEC64_MAX__
-#undef __DEC64_MIN_EXP__
-#undef __DEC64_MIN__

Modified: trunk/contrib/llvm/tools/clang/utils/clang-completion-mode.el
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/clang-completion-mode.el	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/clang-completion-mode.el	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,249 +0,0 @@
-;;; Clang Code-Completion minor mode, for use with C/Objective-C/C++.
-
-;;; Commentary:
-
-;; This minor mode uses Clang's command line interface for code
-;; completion to provide code completion results for C, Objective-C,
-;; and C++ source files. When enabled, Clang will provide
-;; code-completion results in a secondary buffer based on the code
-;; being typed. For example, after typing "struct " (triggered via the
-;; space), Clang will provide the names of all structs visible from
-;; the current scope. After typing "p->" (triggered via the ">"),
-;; Clang will provide the names of all of the members of whatever
-;; class/struct/union "p" points to. Note that this minor mode isn't
-;; meant for serious use: it is meant to help experiment with code
-;; completion based on Clang. It needs your help to make it better!
-;;
-;; To use the Clang code completion mode, first make sure that the
-;; "clang" variable below refers to the "clang" executable,
-;; which is typically installed in libexec/. Then, place
-;; clang-completion-mode.el somewhere in your Emacs load path. You can
-;; add a new load path to Emacs by adding some like the following to
-;; your .emacs:
-;;
-;;   (setq load-path (cons "~/.emacs.d" load-path))
-;;
-;; Then, use
-;;
-;;   M-x load-library
-;;
-;; to load the library in your Emacs session or add the following to
-;; your .emacs to always load this mode (not recommended):
-;;
-;;   (load-library "clang-completion-mode")
-;;
-;; Once you have done this, you can set various parameters with
-;;
-;;   M-x customize-group RET clang-completion-mode RET
-;;
-;; Finally, to try Clang-based code completion in a particular buffer,
-;; use M-x clang-completion-mode. When "Clang" shows up in the mode
-;; line, Clang's code-completion is enabled.
-;;
-;; Clang's code completion is based on parsing the complete source
-;; file up to the point where the cursor is located. Therefore, Clang
-;; needs all of the various compilation flags (include paths, dialect
-;; options, etc.) to provide code-completion results. Currently, these
-;; need to be placed into the clang-flags variable in a format
-;; acceptable to clang. This is a hack: patches are welcome to
-;; improve the interface between this Emacs mode and Clang! 
-;;
-
-;;; Code:
-;;; The clang executable
-(defcustom clang "clang"
-  "The location of the Clang compiler executable"
-  :type 'file
-  :group 'clang-completion-mode)
-
-;;; Extra compilation flags to pass to clang.
-(defcustom clang-flags nil
-  "Extra flags to pass to the Clang executable.
-This variable will typically contain include paths, e.g., -I~/MyProject."
-  :type '(repeat (string :tag "Argument" ""))
-  :group 'clang-completion-mode)
-
-;;; The prefix header to use with Clang code completion. 
-(setq clang-completion-prefix-header "")
-
-;;; The substring we will use to filter completion results
-(setq clang-completion-substring "")
-
-;;; The current completion buffer
-(setq clang-completion-buffer nil)
-
-(setq clang-result-string "")
-
-;;; Compute the current line in the buffer	
-(defun current-line ()
-  "Return the vertical position of point..."
-  (+ (count-lines (point-min) (point))
-     (if (= (current-column) 0) 1 0)
-     -1))
-
-;;; Set the Clang prefix header
-(defun clang-prefix-header ()
-  (interactive)
-  (setq clang-completion-prefix-header
-        (read-string "Clang prefix header> " "" clang-completion-prefix-header
-                     "")))
-
-;; Process "filter" that keeps track of the code-completion results
-;; produced. We store all of the results in a string, then the
-;; sentinel processes the entire string at once.
-(defun clang-completion-stash-filter (proc string)
-  (setq clang-result-string (concat clang-result-string string)))
-
-;; Filter the given list based on a predicate.
-(defun filter (condp lst)
-    (delq nil
-          (mapcar (lambda (x) (and (funcall condp x) x)) lst)))
-
-;; Determine whether FIXME: explain better
-(defun is-completion-line (line)
-  (or (string-match "OVERLOAD:" line)
-      (string-match (concat "COMPLETION: " clang-completion-substring) line)))
-
-
-;; re-process the completions when further input narrows the field
-(defun clang-completion-display (buffer)
-  (fill-buffer buffer))
-
-(defun fill-buffer (buffer)
-  (let* ((all-lines (split-string clang-result-string "\n"))
-         (completion-lines (filter 'is-completion-line all-lines)))
-    (if (consp completion-lines)
-        (progn
-         ;; Erase the process buffer.
-         (let ((cur (current-buffer)))
-           (set-buffer buffer)
-           (goto-char (point-min))
-           (erase-buffer)
-           (set-buffer cur))
-         
-         ;; Display the process buffer.
-         (display-buffer buffer)
-         
-         ;; Insert the code-completion string into the process buffer.
-         (with-current-buffer buffer
-           (insert (mapconcat 'identity completion-lines "\n")))
-         ))))
-
-;; Process "sentinel" that, on successful code completion, replaces the 
-;; contents of the code-completion buffer with the new code-completion results
-;; and ensures that the buffer is visible.
-(defun clang-completion-sentinel (proc event)
-  (fill-buffer (process-buffer proc)))
-
-(defun clang-complete ()
-  (let* ((cc-point (concat (buffer-file-name)
-                           ":"
-                           (number-to-string (+ 1 (current-line)))
-                           ":"
-                           (number-to-string (+ 1 (current-column)))))
-         (cc-pch (if (equal clang-completion-prefix-header "") nil
-                   (list "-include-pch"
-                         (concat clang-completion-prefix-header ".pch"))))
-         (cc-flags (if (listp clang-flags) clang-flags nil))
-         (cc-command (append `(,clang "-cc1" "-fsyntax-only")
-                             cc-flags
-                             cc-pch
-                             `("-code-completion-at" ,cc-point)
-                             (list (buffer-file-name))))
-         (cc-buffer-name (concat "*Clang Completion for " (buffer-name) "*")))
-    ;; Start the code-completion process.
-    (if (buffer-file-name)
-        (progn
-          ;; If there is already a code-completion process, kill it first.
-          (let ((cc-proc (get-process "Clang Code-Completion")))
-            (if cc-proc
-                (delete-process cc-proc)))
-
-          (setq clang-completion-substring "")
-          (setq clang-result-string "")
-          (setq clang-completion-buffer cc-buffer-name)
-            
-          (let ((cc-proc (apply 'start-process
-                                (append (list "Clang Code-Completion" cc-buffer-name)
-                                        cc-command))))
-            (set-process-filter cc-proc 'clang-completion-stash-filter)
-            (set-process-sentinel cc-proc 'clang-completion-sentinel)
-            )))))
-
-;; Code-completion when one of the trigger characters is typed into
-;; the buffer, e.g., '(', ',' or '.'.
-(defun clang-complete-self-insert (arg)
-  (interactive "p")
-  (self-insert-command arg)
-  (save-buffer)
-  (clang-complete))
-
-;; When the user has typed a character that requires the filter to be
-;; updated, do so (and update the display of results).
-(defun clang-update-filter ()
-  (setq clang-completion-substring (thing-at-point 'symbol))
-  (if (get-process "Clang Code-Completion")
-      ()
-    (clang-completion-display clang-completion-buffer)
-    ))
-  
-;; Invoked when the user types an alphanumeric character or "_" to
-;; update the filter for the currently-active code completion.
-(defun clang-filter-self-insert (arg)
-  (interactive "p")
-  (self-insert-command arg)
-  (clang-update-filter)
-  )
-
-;; Invoked when the user types the backspace key to update the filter
-;; for the currently-active code completion.
-(defun clang-backspace ()
-  (interactive)
-  (delete-backward-char 1)
-  (clang-update-filter))
-
-;; Invoked when the user types the delete key to update the filter
-;; for the currently-active code completion.
-(defun clang-delete ()
-  (interactive)
-  (delete-backward-char 1)
-  (clang-update-filter))
-
-;; Set up the keymap for the Clang minor mode.
-(defvar clang-completion-mode-map nil
-  "Keymap for Clang Completion Mode.")
-
-(if (null clang-completion-mode-map)
-    (fset 'clang-completion-mode-map 
-          (setq clang-completion-mode-map (make-sparse-keymap))))
-
-(if (not (assq 'clang-completion-mode minor-mode-map-alist))
-    (setq minor-mode-map-alist
-          (cons (cons 'clang-completion-mode clang-completion-mode-map)
-                minor-mode-map-alist)))
-
-;; Punctuation characters trigger code completion.
-(dolist (char '("(" "," "." ">" ":" "=" ")" " "))
-  (define-key clang-completion-mode-map char 'clang-complete-self-insert))
-
-;; Alphanumeric characters (and "_") filter the results of the
-;; currently-active code completion.
-(dolist (char '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O"
-                "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
-                "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o"
-                "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
-                "_" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
-  (define-key clang-completion-mode-map char 'clang-filter-self-insert))
-
-;; Delete and backspace filter the results of the currently-active
-;; code completion.
-(define-key clang-completion-mode-map [(backspace)] 'clang-backspace)
-(define-key clang-completion-mode-map [(delete)] 'clang-delete)
-
-;; Set up the Clang minor mode.
-(define-minor-mode clang-completion-mode 
-  "Clang code-completion mode"
-  nil
-  " Clang"
-  clang-completion-mode-map)
-

Modified: trunk/contrib/llvm/tools/clang/utils/clangVisualizers.txt
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/clangVisualizers.txt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/clangVisualizers.txt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,391 +0,0 @@
-
-[Visualizer]
-
-llvm::SmallVector<*,*>{
-	preview (
-		#if ((($T1*)$e.EndX - ($T1*)$e.BeginX) == 0) ( "empty" )
-		#else (
-			#(
-				"[",
-				($T1*)$e.EndX - ($T1*)$e.BeginX,
-				"](",
-				#array(
-					expr: (($T1*)$e.BeginX)[$i],
-					size: ($T1*)$e.EndX - ($T1*)$e.BeginX
-				),
-				")"
-			)
-		)
-	)
-
-	children (
-		#(
-			#([size] : ($T1*)$e.EndX - ($T1*)$e.BeginX),
-			#([capacity] : ($T1*)$e.CapacityX - ($T1*)$e.BeginX),
-			#array(
-				expr: (($T1*)$e.BeginX)[$i],
-				size: ($T1*)$e.EndX - ($T1*)$e.BeginX
-			)
-		)
-	)
-}
-
-llvm::SmallVectorImpl<*>{
-	preview (
-		#if ((($T1*)$e.EndX - ($T1*)$e.BeginX) == 0) ( "empty" )
-		#else (
-			#(
-				"[",
-				($T1*)$e.EndX - ($T1*)$e.BeginX,
-				"](",
-				#array(
-					expr: (($T1*)$e.BeginX)[$i],
-					size: ($T1*)$e.EndX - ($T1*)$e.BeginX
-				),
-				")"
-			)
-		)
-	)
-
-	children (
-		#(
-			#([size] : ($T1*)$e.EndX - ($T1*)$e.BeginX),
-			#([capacity] : ($T1*)$e.CapacityX - ($T1*)$e.BeginX),
-			#array(
-				expr: (($T1*)$e.BeginX)[$i],
-				size: ($T1*)$e.EndX - ($T1*)$e.BeginX
-			)
-		)
-	)
-}
-
-llvm::SmallString<*>{
-	preview ([$e.BeginX,s])
-	stringview ([$e.BeginX,sb])
-}
-
-llvm::StringRef{
-	preview ([$e.Data,s])
-	stringview ([$e.Data,sb])
-
-	children (
-		#(
-			#([size] : $e.Length),
-			#array(expr: $e.Data[$i], size: $e.Length)
-		)
-	)
-}
-
-clang::Token{
-	preview((clang::tok::TokenKind)(int)$e.Kind)
-}
-
-llvm::PointerIntPair<*,*,*,*>{
-	preview (
-		#(
-			($T1*)($e.Value & $e.PointerBitMask),
-			" [",
-			($T3)(($e.Value >> $e.IntShift) & $e.IntMask),
-			"]"
-		)
-	)
-	
-	children (
-		#(
-			#([raw members] : [$e,!]),
-			#([ptr] : ($T1*)($e.Value & $e.PointerBitMask)),
-			#([int] : ($T3)($e.Value >> $e.IntShift) & $e.IntMask)
-		)
-	)
-}
-
-llvm::PointerUnion<*,*>{
-	preview (
-		#if ((($e.Val.Value >> $e.Val.IntShift) & $e.Val.IntMask) == 0) ( "PT1" )
-		#else ( "PT2" )
-	)
-	
-	children (
-		#(
-			#([raw members] : [$e,!]),
-			#if ((($e.Val.Value >> $e.Val.IntShift) & $e.Val.IntMask) == 0) (
-				#([ptr] : ($T1)($e.Val.Value & $e.Val.PointerBitMask))
-			) #else (
-				#([ptr] : ($T2)($e.Val.Value & $e.Val.PointerBitMask))
-			)
-		)
-	)
-}
-
-llvm::PointerUnion3<*,*,*>{
-	preview (
-		#if (($e.Val.Val.Value & 0x2) == 2) ( "PT2" )
-		#elif (($e.Val.Val.Value & 0x1) == 1) ( "PT3" )
-		#else ( "PT1" )
-	)
-	
-	children (
-		#(
-			#if (($e.Val.Val.Value & 0x2) == 2) (
-				#([ptr] : ($T2)(($e.Val.Val.Value >> 2) << 2))
-			) #elif (($e.Val.Val.Value & 0x1) == 1) (
-				#([ptr] : ($T3)(($e.Val.Val.Value >> 2) << 2))
-			) #else (
-				#([ptr] : ($T1)(($e.Val.Val.Value >> 2) << 2))
-			)
-		)
-	)
-}
-
-llvm::PointerUnion4<*,*,*,*>{
-	preview (
-		#if (($e.Val.Val.Value & 0x3) == 3) ( "PT4" )
-		#elif (($e.Val.Val.Value & 0x2) == 2) ( "PT2" )
-		#elif (($e.Val.Val.Value & 0x1) == 1) ( "PT3" )
-		#else ( "PT1" )
-	)
-	
-	children (
-		#(
-			#if (($e.Val.Val.Value & 0x3) == 3) (
-				#([ptr] : ($T4)(($e.Val.Val.Value >> 2) << 2))
-			) #elif (($e.Val.Val.Value & 0x2) == 2) (
-				#([ptr] : ($T2)(($e.Val.Val.Value >> 2) << 2))
-			) #elif (($e.Val.Val.Value & 0x1) == 1) (
-				#([ptr] : ($T3)(($e.Val.Val.Value >> 2) << 2))
-			) #else (
-				#([ptr] : ($T1)(($e.Val.Val.Value >> 2) << 2))
-			)
-		)
-	)
-}
-
-llvm::IntrusiveRefCntPtr<*>{
-	preview (
-		#if ($e.Obj == 0) ( "empty" )
-		#else (
-			#(
-				"[RefCnt=", $e.Obj->ref_cnt,
-				", ",
-				"Obj=", $e.Obj,
-				"]"
-			)
-		)
-	)
-
-	children (
-		#if ($e.Obj == 0) ( #array(expr: 0, size: 0) )
-		#else (
-			#(
-				#(RefCnt : $e.Obj->ref_cnt),
-				#(Obj : $e.Obj)
-			)
-		)
-	)
-}
-
-llvm::OwningPtr<*>{
-	preview (
-		#if ($e.Ptr == 0) ( "empty" )
-		#else ( $e.Ptr )
-	)
-
-	children (
-		#if ($e.Ptr == 0) ( #array(expr: 0, size: 0) )
-		#else ( #(Ptr : $e.Ptr) )
-	)	
-}
-
-llvm::SmallPtrSet<*,*>{
-	preview (
-		#(
-			#if (($e.CurArray) == ($e.SmallArray)) ( "[Small Mode] " )
-			#else ( "[Big Mode] " ),
-			"NumElements=", $e.NumElements,
-			" CurArraySize=", $e.CurArraySize
-		)
-	)
-
-	children (
-		#(
-			#([raw members] : [$c,!]),
-			#(NumElements : $e.NumElements),
-			#(CurArraySize : $e.CurArraySize),
-			#array(
-				expr: $e.CurArray[$i],
-				size: $e.CurArraySize + 1
-			) : ($T1*)&$e
-		)
-	)
-}
-
-llvm::DenseMap<*,*,*>{
-	preview (
-		#if ($e.NumEntries == 0) ( "empty" )
-		#else (
-			#(
-				"[NumEntries=", $e.NumEntries,
-				" NumBuckets=", $e.NumBuckets,
-				"]"
-			)
-		)
-	)
-
-	children (
-		#if ($e.NumEntries == 0) ( #array(expr: 0, size: 0) )
-		#else (
-			#(
-				#([raw members] : [$c,!]),
-				#(NumEntries : $e.NumEntries),
-				#(NumBuckets : $e.NumBuckets),
-				#array(
-					expr: $e.Buckets[$i],
-					size: $e.NumBuckets
-				)
-			)
-		)
-	)
-}
-
-llvm::StringMap<*,*>{
-	preview (
-		#(
-			"[NumBuckets=", $e.NumBuckets,
-			" ItemSize=", $e.ItemSize,
-			"]"
-		)
-	)
-
-	children (
-		#(
-			#([raw members] : [$c,!]),
-			#(NumBuckets : $e.NumBuckets),
-			#(ItemSize : $e.ItemSize),
-			#array(
-				expr: $e.TheTable[$i],
-				size: $e.NumBuckets,
-			) : (llvm::StringMapEntry<$T1>*)&$e
-		)
-	)
-}
-
-llvm::StringMapEntry<*>{
-	preview (
-		#if ($e.StrLen == 0) ( "empty" )
-		#else (	#(Entry : $e.second) )
-	)
-
-	children (
-		#if ($e.StrLen == 0) ( "empty" )
-		#else ( #(Entry : $e.second) )	
-	)
-}
-
-clang::DirectoryEntry|clang::FileEntry|clang::PragmaHandler{
-	preview ( [$e.Name,s] )
-	children (
-		#(
-			#([raw members] : [$c,!]),
-			#(Name : [$e.Name,s])
-		)
-	)
-}
-
-clang::DeclarationName{
-	preview (
-		; enum values from clang::DeclarationName::StoredNameKind
-		#if ($e.Ptr == 0) (
-			"empty"
-		) #elif (($e.Ptr & $e.PtrMask) == $e.StoredIdentifier) (
-			#else ( #("Identifier, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask)) )
-		) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCZeroArgSelector) (
-			#("ZeroArgSelector, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
-		) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCOneArgSelector) (
-			#("OneArgSelector, ", (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
-		) #elif (($e.Ptr & $e.PtrMask) == $e.StoredDeclarationNameExtra) (
-			#switch (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs)
-			#case 0 ( ;DeclarationNameExtra::CXXConstructor
-				#("CXXConstructorName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
-			)
-			#case 1 ( ;DeclarationNameExtra::CXXDestructor
-				#("CXXDestructorName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
-			)
-			#case 2 ( ;DeclarationNameExtra::CXXConversionFunction
-				#("CXXConversionFunctionName, ", (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
-			)
-			#case 46 ( ;DeclarationNameExtra::CXXLiteralOperator
-				#("CXXLiteralOperatorName, ", (clang::CXXLiteralOperatorIdName*)($e.Ptr & ~$e.PtrMask))
-			)
-			#case 47 ( ;DeclarationNameExtra::CXXUsingDirective
-				#("CXXUsingDirective")	;TODO What to add here?
-			)
-			#default (
-				#if (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs < 47) (
-					#("CXXOperatorName, ", (clang::CXXOperatorIdName*)($e.Ptr & ~$e.PtrMask))
-				) #else (
-					#("ObjCMultiArgSelector, ", (clang::MultiKeywordSelector*)($e.Ptr & ~$e.PtrMask))
-				)
-			)
-		)
-	)
-
-	children (
-		#(
-			; enum values from clang::DeclarationName::StoredNameKind
-			#if ($e.Ptr == 0) (
-				#array( expr: 0, size: 0 )
-			) #else (
-				#(
-					#([raw members] : [$e.Ptr,!]),
-					if (($e.Ptr & $e.PtrMask) == $e.StoredIdentifier) (
-						#(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
-					) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCZeroArgSelector) (
-						#(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
-					) #elif (($e.Ptr & $e.PtrMask) == $e.StoredObjCOneArgSelector) (
-						#(Ptr : (clang::IdentifierInfo*)($e.Ptr & ~$e.PtrMask))
-					) #elif (($e.Ptr & $e.PtrMask) == $e.StoredDeclarationNameExtra) (
-						#switch (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs)
-						#case 0 ( ;DeclarationNameExtra::CXXConstructor
-							#(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
-						)
-						#case 1 ( ;DeclarationNameExtra::CXXDestructor
-							#(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
-						)
-						#case 2 ( ;DeclarationNameExtra::CXXConversionFunction
-							#(Ptr : (clang::CXXSpecialName*)($e.Ptr & ~$e.PtrMask))
-						)
-						#case 46 ( ;DeclarationNameExtra::CXXLiteralOperator
-							#(Ptr : (clang::CXXLiteralOperatorIdName*)($e.Ptr & ~$e.PtrMask))
-						)
-						#case 47 ( ;DeclarationNameExtra::CXXUsingDirective
-							#(Ptr : $e.Ptr)	;TODO What to add here?
-						)
-						#default (
-							#if (((clang::DeclarationNameExtra*)($e.Ptr & ~$e.PtrMask)).ExtraKindOrNumArgs < 47) (
-								#(Ptr : (CXXOperatorIdName*)($e.Ptr & ~$e.PtrMask))
-							) #else (
-								#(Ptr : (clang::MultiKeywordSelector*)($e.Ptr & ~$e.PtrMask))
-							)
-						)
-					)
-				)
-			)
-		)
-	)
-}
-
-clang::DeclSpec{
-	preview (
-		#(
-			"[",
-			(clang::DeclSpec::SCS)$e.StorageClassSpec,
-			", ",
-			(clang::TypeSpecifierType)$e.TypeSpecType,
-			"]"
-		)
-	)
-}
-
-llvm::Triple{
-	preview ( $e.Data )
-}

Modified: trunk/contrib/llvm/tools/clang/utils/find-unused-diagnostics.sh
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/find-unused-diagnostics.sh	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/find-unused-diagnostics.sh	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,15 +0,0 @@
-#!/bin/bash
-#
-# This script produces a list of all diagnostics that are defined
-# in Diagnostic*.td files but not used in sources.
-#
-
-# Gather all diagnostic identifiers from the .td files.
-ALL_DIAGS=$(grep -E --only-matching --no-filename '(err_|warn_|ext_|note_)[a-z_]+' ./include/clang/Basic/Diagnostic*.td)
-
-# Now look for all potential identifiers in the source files.
-ALL_SOURCES=$(find lib include tools -name \*.cpp -or -name \*.h)
-DIAGS_IN_SOURCES=$(grep -E --only-matching --no-filename '(err_|warn_|ext_|note_)[a-z_]+' $ALL_SOURCES)
-
-# Print all diags that occur in the .td files but not in the source.
-comm -23 <(sort -u <<< "$ALL_DIAGS") <(sort -u <<< "$DIAGS_IN_SOURCES")

Modified: trunk/contrib/llvm/tools/clang/utils/token-delta.py
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/token-delta.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/token-delta.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,251 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import re
-import subprocess
-import sys
-import tempfile
-
-###
-
-class DeltaAlgorithm(object):
-    def __init__(self):
-        self.cache = set()
-
-    def test(self, changes):
-        abstract
-
-    ###
-
-    def getTestResult(self, changes):
-        # There is no reason to cache successful tests because we will
-        # always reduce the changeset when we see one.
-
-        changeset = frozenset(changes)
-        if changeset in self.cache:
-            return False
-        elif not self.test(changes):
-            self.cache.add(changeset)
-            return False
-        else:
-            return True
-
-    def run(self, changes, force=False):
-        # Make sure the initial test passes, if not then (a) either
-        # the user doesn't expect monotonicity, and we may end up
-        # doing O(N^2) tests, or (b) the test is wrong. Avoid the
-        # O(N^2) case unless user requests it.
-        if not force:
-            if not self.getTestResult(changes):
-                raise ValueError,'Initial test passed to delta fails.'
-
-        # Check empty set first to quickly find poor test functions.
-        if self.getTestResult(set()):
-            return set()
-        else:
-            return self.delta(changes, self.split(changes))
-
-    def split(self, S):
-        """split(set) -> [sets]
-
-        Partition a set into one or two pieces.
-        """
-
-        # There are many ways to split, we could do a better job with more
-        # context information (but then the API becomes grosser).
-        L = list(S)
-        mid = len(L)//2
-        if mid==0:
-            return L,
-        else:
-            return L[:mid],L[mid:]
-    
-    def delta(self, c, sets):
-        # assert(reduce(set.union, sets, set()) == c)
-
-        # If there is nothing left we can remove, we are done.
-        if len(sets) <= 1:
-            return c
-        
-        # Look for a passing subset.
-        res = self.search(c, sets)
-        if res is not None:
-            return res
-
-        # Otherwise, partition sets if possible; if not we are done.
-        refined = sum(map(list, map(self.split, sets)), [])
-        if len(refined) == len(sets):
-            return c
-        
-        return self.delta(c, refined)
-
-    def search(self, c, sets):
-        for i,S in enumerate(sets):
-            # If test passes on this subset alone, recurse.
-            if self.getTestResult(S):
-                return self.delta(S, self.split(S))
-
-            # Otherwise if we have more than two sets, see if test
-            # pases without this subset.
-            if len(sets) > 2:
-                complement = sum(sets[:i] + sets[i+1:],[])
-                if self.getTestResult(complement):
-                    return self.delta(complement, sets[:i] + sets[i+1:])
-
-###
-
-class Token:
-    def __init__(self, type, data, flags, file, line, column):
-        self.type   = type
-        self.data   = data
-        self.flags  = flags
-        self.file   = file
-        self.line   = line
-        self.column = column
-        
-kTokenRE = re.compile(r"""([a-z_]+) '(.*)'\t(.*)\tLoc=<(.*):(.*):(.*)>""",
-                      re.DOTALL | re.MULTILINE)
-
-def getTokens(path):
-    p = subprocess.Popen(['clang','-dump-raw-tokens',path],
-                         stdin=subprocess.PIPE,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-    out,err = p.communicate()
-
-    tokens = []
-    collect = None
-    for ln in err.split('\n'):
-        # Silly programmers refuse to print in simple machine readable
-        # formats. Whatever.
-        if collect is None:
-            collect = ln
-        else:
-            collect = collect + '\n' + ln
-        if 'Loc=<' in ln and ln.endswith('>'):
-            ln,collect = collect,None
-            tokens.append(Token(*kTokenRE.match(ln).groups()))
-
-    return tokens
-
-###
-
-class TMBDDelta(DeltaAlgorithm):
-    def __init__(self, testProgram, tokenLists, log):
-        def patchName(name, suffix):
-            base,ext = os.path.splitext(name)
-            return base + '.' + suffix + ext
-        super(TMBDDelta, self).__init__()
-        self.testProgram = testProgram
-        self.tokenLists = tokenLists
-        self.tempFiles = [patchName(f,'tmp')
-                            for f,_ in self.tokenLists]
-        self.targetFiles = [patchName(f,'ok')
-                            for f,_ in self.tokenLists]
-        self.log = log
-        self.numTests = 0
-
-    def writeFiles(self, changes, fileNames):
-        assert len(fileNames) == len(self.tokenLists)
-        byFile = [[] for i in self.tokenLists]
-        for i,j in changes:
-            byFile[i].append(j)
-
-        for i,(file,tokens) in enumerate(self.tokenLists):
-            f = open(fileNames[i],'w')
-            for j in byFile[i]:
-                f.write(tokens[j])
-            f.close()
-
-        return byFile
-
-    def test(self, changes):
-        self.numTests += 1
-
-        byFile = self.writeFiles(changes, self.tempFiles)
-
-        if self.log:
-            print >>sys.stderr, 'TEST - ',
-            if self.log > 1:
-                for i,(file,_) in enumerate(self.tokenLists):
-                    indices = byFile[i]
-                    if i:
-                        sys.stderr.write('\n      ')
-                    sys.stderr.write('%s:%d tokens: [' % (file,len(byFile[i])))
-                    prev = None
-                    for j in byFile[i]:
-                        if prev is None or j != prev + 1:
-                            if prev:
-                                sys.stderr.write('%d][' % prev)
-                            sys.stderr.write(str(j))
-                            sys.stderr.write(':')
-                        prev = j
-                    if byFile[i]:
-                        sys.stderr.write(str(byFile[i][-1]))
-                    sys.stderr.write('] ')
-            else:
-                print >>sys.stderr, ', '.join(['%s:%d tokens' % (file, len(byFile[i]))
-                                               for i,(file,_) in enumerate(self.tokenLists)]),
-
-        p = subprocess.Popen([self.testProgram] + self.tempFiles)
-        res = p.wait() == 0
-
-        if res:
-            self.writeFiles(changes, self.targetFiles)
-
-        if self.log:
-            print >>sys.stderr, '=> %s' % res
-        else:
-            if res:
-                print '\nSUCCESS (%d tokens)' % len(changes)
-            else:                
-                sys.stderr.write('.')
-
-        return res
-
-    def run(self):
-        res = super(TMBDDelta, self).run([(i,j)
-                                          for i,(file,tokens) in enumerate(self.tokenLists)
-                                          for j in range(len(tokens))])
-        self.writeFiles(res, self.targetFiles)
-        if not self.log:
-            print >>sys.stderr
-        return res
-
-def tokenBasedMultiDelta(program, files, log):            
-    # Read in the lists of tokens.
-    tokenLists = [(file, [t.data for t in getTokens(file)])
-                  for file in files]
-
-    numTokens = sum([len(tokens) for _,tokens in tokenLists])
-    print "Delta on %s with %d tokens." % (', '.join(files), numTokens)
-    
-    tbmd = TMBDDelta(program, tokenLists, log)
-
-    res = tbmd.run()
-
-    print "Finished %s with %d tokens (in %d tests)." % (', '.join(tbmd.targetFiles),
-                                                         len(res),
-                                                         tbmd.numTests)
-        
-def main():
-    from optparse import OptionParser, OptionGroup
-    parser = OptionParser("%prog <test program> {files+}")
-    parser.add_option("", "--debug", dest="debugLevel",
-                     help="set debug level [default %default]",
-                     action="store", type=int, default=0)
-    (opts, args) = parser.parse_args()
-
-    if len(args) <= 1:
-        parser.error('Invalid number of arguments.')
-        
-    program,files = args[0],args[1:]
-
-    md = tokenBasedMultiDelta(program, files, log=opts.debugLevel)
-        
-if __name__ == '__main__':
-    try:
-        main()
-    except KeyboardInterrupt:
-        print >>sys.stderr,'Interrupted.'
-        os._exit(1) # Avoid freeing our giant cache.

Modified: trunk/contrib/llvm/tools/clang/utils/valgrind/x86_64-pc-linux-gnu_gcc-4.3.3.supp
===================================================================
--- trunk/contrib/llvm/tools/clang/utils/valgrind/x86_64-pc-linux-gnu_gcc-4.3.3.supp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/utils/valgrind/x86_64-pc-linux-gnu_gcc-4.3.3.supp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-{
-   libstdcxx_overlapped_memcpy_in_stable_sort_1
-   Memcheck:Overlap
-   fun:memcpy
-   ...
-   fun:_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEEN12_GLOBAL__N_116CstSortPredicateEEvT_SF_T0_
-}
-
-{
-   libstdcxx_overlapped_memcpy_in_stable_sort_2
-   Memcheck:Overlap
-   fun:memcpy
-   ...
-   fun:_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm5ValueEjESt6vectorIS7_SaIS7_EEEEN12_GLOBAL__N_116CstSortPredicateEEvT_SF_T0_
-}
-
-{
-   libstdcxx_overlapped_memcpy_in_stable_sort_3
-   Memcheck:Overlap
-   fun:memcpy
-   ...
-   fun:_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIPKN4llvm4TypeEjESt6vectorIS7_SaIS7_EEEEPFbRKS7_SE_EEvT_SH_T0_
-}
-
-# Remove this if clang-vg didn't use "check-all"
-{
-   We don't care of cmp
-   Memcheck:Cond
-   obj:/usr/bin/cmp
-}

Modified: trunk/contrib/llvm/tools/clang/www/OpenProjects.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/OpenProjects.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/OpenProjects.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,132 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Clang - Get Involved</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<h1>Open Clang Projects</h1>
-
-<p>Here are a few tasks that are available for newcomers to work on, depending
-on what your interests are.  This list is provided to generate ideas, it is not
-intended to be comprehensive.  Please ask on cfe-dev for more specifics or to
-verify that one of these isn't already completed. :)</p>
-
-<ul>
-<li><b>Undefined behavior checking</b>:
-Improve and extend the runtime checks for undefined behavior which CodeGen
-inserts for the various <tt>-fsanitize=</tt> modes. A lot of issues can already
-be caught, but there is more to do here.</li>
-
-<li><b>Improve target support</b>: The current target interfaces are heavily
-stubbed out and need to be implemented fully.  See the FIXME's in TargetInfo.
-Additionally, the actual target implementations (instances of TargetInfoImpl)
-also need to be completed.</li>
-
-<li><b>Implement an tool to generate code documentation</b>: Clang's
-library-based design allows it to be used by a variety of tools that reason
-about source code. One great application of Clang would be to build an
-auto-documentation system like doxygen that generates code documentation from
-source code. The advantage of using Clang for such a tool is that the tool would
-use the same preprocessor/parser/ASTs as the compiler itself, giving it a very
-rich understanding of the code. Clang is already able to read and understand
-doxygen markup, but cannot yet generate documentation from it.</li>
-
-<li><b>Use clang libraries to implement better versions of existing tools</b>:
-Clang is built as a set of libraries, which means that it is possible to
-implement capabilities similar to other source language tools, improving them
-in various ways.  Three examples are <a
-href="http://distcc.samba.org/">distcc</a>, the <a
-href="http://delta.tigris.org/">delta testcase reduction tool</a>, and the
-"indent" source reformatting tool.
-distcc can be improved to scale better and be more efficient.  Delta could be
-faster and more efficient at reducing C-family programs if built on the clang
-preprocessor. The clang-based indent replacement,
-<a href="http://clang.llvm.org/docs/ClangFormat.html">clang-format</a>,
-could be taught to handle simple structural rules like those in <a
-href="http://llvm.org/docs/CodingStandards.html#hl_earlyexit">the LLVM coding
-standards</a>.</li>
-
-<li><b>Use clang libraries to extend Ragel with a JIT</b>: <a 
-href="http://research.cs.queensu.ca/~thurston/ragel/">Ragel</a> is a state
-machine compiler that lets you embed C code into state machines and generate
-C code.  It would be relatively easy to turn this into a JIT compiler using
-LLVM.</li>
-
-<li><b>Self-testing using clang</b>: There are several neat ways to
-improve the quality of clang by self-testing. Some examples:
-<ul>
-  <li>Improve the reliability of AST printing and serialization by
-  ensuring that the AST produced by clang on an input doesn't change
-  when it is reparsed or unserialized.
-
-  <li>Improve parser reliability and error generation by automatically
-  or randomly changing the input checking that clang doesn't crash and
-  that it doesn't generate excessive errors for small input
-  changes. Manipulating the input at both the text and token levels is
-  likely to produce interesting test cases.
-</ul>
-</li>
-
-<li><b>Continue work on C++1y support</b>:
-  C++98 and C++11 are feature-complete, but there are still several C++1y features to
-  implement.  Please see the <a href="cxx_status.html">C++ status report
-  page</a> to find out what is missing.</li>
-
-<li><b>StringRef'ize APIs</b>: A thankless but incredibly useful project is
-StringRef'izing (converting to use <tt>llvm::StringRef</tt> instead of <tt>const
-char *</tt> or <tt>std::string</tt>) various clang interfaces. This generally
-simplifies the code and makes it more efficient.</li>
-
-<li><b>Universal Driver</b>: Clang is inherently a cross compiler. We would like
-to define a new model for cross compilation which provides a great user
-experience -- it should be easy to cross compile applications, install support
-for new architectures, access different compilers and tools, and be consistent
-across different platforms. See the <a href="UniversalDriver.html">Universal
-Driver</a> web page for more information.</li>
-
-<li><b>XML Representation of ASTs</b>: Clang maintains a rich Abstract Syntax Tree that describes the program. Clang could emit an XML document that describes the program, which others tools could consume rather than being tied directly to the Clang binary.The XML representation needs to meet several requirements:
-  <ul>
-    <li><i>General</i>, so that it's able to represent C/C++/Objective-C abstractly, and isn't tied to the specific internal ASTs that Clang uses.</li>
-    <li><i>Documented</i>, with appropriate Schema against which the output of Clang's XML formatter can be verified.</li>
-    <li><i>Stable</i> across Clang versions.</li>
-  </ul></li>
-
-<li><b>Configuration Manager</b>: Clang/LLVM works on a large number of
-architectures and operating systems and can cross-compile to a similarly large
-number of configurations, but the pitfalls of chosing the command-line
-options, making sure the right sub-architecture is chosen and that the correct
-optional elements of your particular system can be a pain.
-
-<p>A tool that would investigate hosts and targets, and store the configuration
-in files that can later be used by Clang itself to avoid command-line options,
-especially the ones regarding which target options to use, would greatle alleviate
-this problem. A simple tool, with little or no dependency on LLVM itself, that
-will investigate a target architecture by probing hardware, software, libraries
-and compiling and executing code to identify all properties that would be relevant
-to command-line options (VFP, SSE, NEON, ARM vs. Thumb etc), triple settings etc.</p>
-
-<p>The first stage is to build a CFLAGS for Clang that would produce code on the
-current Host to the identified Target.</p>
-
-<p>The second stage would be to produce a configuration file (that can be used
-independently of the Host) so that Clang can read it and not need a gazillion
-of command-line options. Such file should be simple JSON / INI or anything that
-a text editor could change.</p>
-</ul>
-
-<p>If you hit a bug with clang, it is very useful for us if you reduce the code
-that demonstrates the problem down to something small.  There are many ways to
-do this; ask on cfe-dev for advice.</p>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/UniversalDriver.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/UniversalDriver.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/UniversalDriver.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,87 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Clang - Universal Driver</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<h1>The Clang Universal Driver Project</h1>
-
-<p>Clang is inherently a cross compiler, in that it is always capable of
-building code for targets which are a different architecture or even operating
-system from the one running the compiler. However, actually cross compiling in
-practice involves much more than just generating the right assembly code for a
-target, it also requires having an appropriate tool chain (assemblers, linkers),
-access to header files and libraries for the target, and many other details (for
-example, the calling convention or whether software floating point is in
-use). Traditionally, compilers and development environments provide little
-assistance with this process, so users do not have easy access to the powerful
-underlying cross-compilation abilities of clang.</p>
-
-<p>We would like to solve this problem by defining a new model for how cross
-compilation is done, based on the idea of a <i>universal driver</i>. The key
-point of this model is that the user would always access the compiler through a
-single entry point (e.g., <tt>/usr/bin/cc</tt>) and provide an argument
-specifying the <i>configuration</i> they would like to target. Under the hood
-this entry point (the universal driver) would have access to all the information
-that the driver, compiler, and other tools need to build applications for that
-target.</p>
-
-<p>This is a large and open-ended project. It's eventual success depends not
-just on implementing the model, but also on getting buy-in from compiler
-developers, operating system distribution vendors and the development community
-at large. Our plan is to begin by defining a clear list of the problems we want
-to solve and a proposed implementation (from the user perspective).</p>
-
-<p>This project is in the very early (i.e., thought experiment) stages of
-development. Stay tuned for more information, and of course, patches
-welcome!</p>
-
-<p>See also <a href="http://llvm.org/PR4127">PR4127</a>.</p>
-
-<h2>Existing Solutions and Related Work</h2>
-
-<ul>
-  <li>gcc's command line arguments <tt>-V</tt>, <tt>-B</tt>, <tt>-b</tt> are
-    generic but limited solutions to related problems. Similarly, <tt>-m32</tt>
-    and <tt>-m64</tt> solve a small subset of the problem for specific
-    architectures.</li>
-
-  <li>gcc's <a href="http://www.airs.com/ian/configure/configure_8.html">multilibs</a>
-    solve the part of the problem that relates to finding appropriate libraries
-    and include files based on particular feature support (soft float,
-    etc.).</li>
-
-  <li>Apple's "driver driver" supported by gcc and clang solve a subset of the
-    problem by supporting <tt>-arch</tt>. Apple also provides a tool chain which
-    supports <a href="http://en.wikipedia.org/wiki/Universal_binary">universal
-    binaries</a> and object files which may include data for multiple
-    architectures. See <a href="http://developer.apple.com/mac/library/technotes/tn2005/tn2137.html">TN2137</a>
-    for an example of how this is used.</li>
-
-  <li>Many operating systems and environments solve the problem by installing
-    complete development environments (including the IDE, tools, header files,
-    and libraries) for a single tool chain. This is cumbersome for users and
-    does not match well with tools which are inherently capable of cross
-    compiling.</li>
-
-  <li>The Debian <a href="http://wiki.debian.org/ArmEabiPort">ArmEabiPort</a>
-    wiki page for their work to support the ARM EABI provide an interesting
-    glimpse into how related issues impact the operating system distribution.</li>
-
-  <li><a href="http://icculus.org/fatelf/">FatELF</a> is a proposal for bringing
-    Mac OS X like "Universal Binary" support to ELF based platforms.</li>
-
-</ul>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/annotations.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/annotations.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/annotations.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,629 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Source Annotations</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<h1>Source Annotations</h1>
-
-<p>The Clang frontend supports several source-level annotations in the form of
-<a href="http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html">GCC-style
-attributes</a> and pragmas that can help make using the Clang Static Analyzer
-more useful. These annotations can both help suppress false positives as well as
-enhance the analyzer's ability to find bugs.</p>
-
-<p>This page gives a practical overview of such annotations. For more technical
-specifics regarding Clang-specific annotations please see the Clang's list of <a
-href="http://clang.llvm.org/docs/LanguageExtensions.html">language
-extensions</a>. Details of "standard" GCC attributes (that Clang also
-supports) can be found in the <a href="http://gcc.gnu.org/onlinedocs/gcc/">GCC
-manual</a>, with the majority of the relevant attributes being in the section on
-<a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html">function
-attributes</a>.</p>
-
-<p>Note that attributes that are labeled <b>Clang-specific</b> are not
-recognized by GCC. Their use can be conditioned using preprocessor macros
-(examples included on this page).</p>
-
-<h4>Specific Topics</h4>
-
-<ul>
-<li><a href="#generic">Annotations to Enhance Generic Checks</a>
-  <ul>
-    <li><a href="#null_checking"><span>Null Pointer Checking</span></a>
-    <ul>
-      <li><a href="#attr_nonnull"><span>Attribute 'nonnull'</span></a></li>
-    </ul>
-    </li>
-  </ul>
-</li>
-<li><a href="#macosx">Mac OS X API Annotations</a>
-  <ul>
-    <li><a href="#cocoa_mem">Cocoa & Core Foundation Memory Management Annotations</a>
-    <ul>
-      <li><a href="#attr_ns_returns_retained">Attribute 'ns_returns_retained'</a></li>
-      <li><a href="#attr_ns_returns_not_retained">Attribute 'ns_returns_not_retained'</a></li>
-      <li><a href="#attr_cf_returns_retained">Attribute 'cf_returns_retained'</a></li>
-      <li><a href="#attr_cf_returns_not_retained">Attribute 'cf_returns_not_retained'</a></li>
-      <li><a href="#attr_ns_consumed">Attribute 'ns_consumed'</a></li>
-      <li><a href="#attr_cf_consumed">Attribute 'cf_consumed'</a></li>
-      <li><a href="#attr_ns_consumes_self">Attribute 'ns_consumes_self'</a></li>
-    </ul>
-    </li>
-  </ul>
-</li>
-<li><a href="#custom_assertions">Custom Assertion Handlers</a>
-  <ul>
-    <li><a href="#attr_noreturn">Attribute 'noreturn'</a></li>
-    <li><a href="#attr_analyzer_noreturn">Attribute 'analyzer_noreturn'</a></li>
-  </ul>
-  </li>
-</ul>
-
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-<h2 id="generic">Annotations to Enhance Generic Checks</h2>
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-
-<h3 id="null_checking">Null Pointer Checking</h3>
-
-<h4 id="attr_nonnull">Attribute 'nonnull'</h4>
-
-<p>The analyzer recognizes the GCC attribute 'nonnull', which indicates that a
-function expects that a given function parameter is not a null pointer. Specific
-details of the syntax of using the 'nonnull' attribute can be found in <a
-href="http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#index-g_t_0040code_007bnonnull_007d-function-attribute-2263">GCC's
-documentation</a>.</p>
-
-<p>Both the Clang compiler and GCC will flag warnings for simple cases where a
-null pointer is directly being passed to a function with a 'nonnull' parameter
-(e.g., as a constant). The analyzer extends this checking by using its deeper
-symbolic analysis to track what pointer values are potentially null and then
-flag warnings when they are passed in a function call via a 'nonnull'
-parameter.</p>
-
-<p><b>Example</b></p>
-
-<pre class="code_example">
-<span class="command">$ cat test.m</span>
-int bar(int*p, int q, int *r) __attribute__((nonnull(1,3)));
-
-int foo(int *p, int *q) {
-   return !p ? bar(q, 2, p) 
-             : bar(p, 2, q);
-}
-</pre>
-
-<p>Running <tt>scan-build</tt> over this source produces the following
-output:</p>
-
-<img src="images/example_attribute_nonnull.png" alt="example attribute nonnull">
-
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-<h2 id="macosx">Mac OS X API Annotations</h2>
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-
-<h3 id="cocoa_mem">Cocoa & Core Foundation Memory Management
-Annotations</h3>
-
-<!--
-<p>As described in <a href="/available_checks.html#retain_release">Available
-Checks</a>,
--->
-<p>The analyzer supports the proper management of retain counts for
-both Cocoa and Core Foundation objects. This checking is largely based on
-enforcing Cocoa and Core Foundation naming conventions for Objective-C methods
-(Cocoa) and C functions (Core Foundation). Not strictly following these
-conventions can cause the analyzer to miss bugs or flag false positives.</p>
-
-<p>One can educate the analyzer (and others who read your code) about methods or
-functions that deviate from the Cocoa and Core Foundation conventions using the
-attributes described here. However, you should consider using proper naming
-conventions or the <a 
-href="http://clang.llvm.org/docs/LanguageExtensions.html#the-objc-method-family-attribute"><tt>objc_method_family</tt></a>
-attribute, if applicable.</p>
-
-<h4 id="attr_ns_returns_retained">Attribute 'ns_returns_retained'
-(Clang-specific)</h4>
-
-<p>The GCC-style (Clang-specific) attribute 'ns_returns_retained' allows one to
-annotate an Objective-C method or C function as returning a retained Cocoa
-object that the caller is responsible for releasing (via sending a
-<tt>release</tt> message to the object). The Foundation framework defines a
-macro <b><tt>NS_RETURNS_RETAINED</tt></b> that is functionally equivalent to the
-one shown below.</p>
-
-<p><b>Placing on Objective-C methods</b>: For Objective-C methods, this
-annotation essentially tells the analyzer to treat the method as if its name
-begins with "alloc" or "new" or contains the word
-"copy".</p>
-
-<p><b>Placing on C functions</b>: For C functions returning Cocoa objects, the
-analyzer typically does not make any assumptions about whether or not the object
-is returned retained. Explicitly adding the 'ns_returns_retained' attribute to C
-functions allows the analyzer to perform extra checking.</p>
-
-<p><b>Important note when using Garbage Collection</b>: Note that the analyzer
-interprets this attribute slightly differently when using Objective-C garbage
-collection (available on Mac OS 10.5+). When analyzing Cocoa code that uses
-garbage collection, "alloc" methods are assumed to return an object
-that is managed by the garbage collector (and thus doesn't have a retain count
-the caller must balance). These same assumptions are applied to methods or
-functions annotated with 'ns_returns_retained'. If you are returning a Core
-Foundation object (which may not be managed by the garbage collector) you should
-use 'cf_returns_retained'.</p>
-
-<p><b>Example</b></p>
-
-<pre class="code_example">
-<span class="command">$ cat test.m</span>
-#import <Foundation/Foundation.h>
-
-#ifndef __has_feature      // Optional.
-#define __has_feature(x) 0 // Compatibility with non-clang compilers.
-#endif
-
-#ifndef NS_RETURNS_RETAINED
-#if __has_feature(attribute_ns_returns_retained)
-<span class="code_highlight">#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))</span>
-#else
-#define NS_RETURNS_RETAINED
-#endif
-#endif
-
- at interface MyClass : NSObject {}
-- (NSString*) returnsRetained <span class="code_highlight">NS_RETURNS_RETAINED</span>;
-- (NSString*) alsoReturnsRetained;
- at end
-
- at implementation MyClass
-- (NSString*) returnsRetained {
-  return [[NSString alloc] initWithCString:"no leak here"];
-}
-- (NSString*) alsoReturnsRetained {
-  return [[NSString alloc] initWithCString:"flag a leak"];
-}
- at end
-</pre>
-
-<p>Running <tt>scan-build</tt> on this source file produces the following output:</p>
-
-<img src="images/example_ns_returns_retained.png" alt="example returns retained">
-
-<h4 id="attr_ns_returns_not_retained">Attribute 'ns_returns_not_retained'
-(Clang-specific)</h4>
-
-<p>The 'ns_returns_not_retained' attribute is the complement of '<a
-href="#attr_ns_returns_retained">ns_returns_retained</a>'. Where a function or
-method may appear to obey the Cocoa conventions and return a retained Cocoa
-object, this attribute can be used to indicate that the object reference
-returned should not be considered as an "owning" reference being
-returned to the caller. The Foundation framework defines a
-macro <b><tt>NS_RETURNS_NOT_RETAINED</tt></b> that is functionally equivalent to
-the one shown below.</p>
-
-<p>Usage is identical to <a
-href="#attr_ns_returns_retained">ns_returns_retained</a>.  When using the
-attribute, be sure to declare it within the proper macro that checks for
-its availability, as it is not available in earlier versions of the analyzer:</p>
-
-<pre class="code_example">
-<span class="command">$ cat test.m</span>
-#ifndef __has_feature      // Optional.
-#define __has_feature(x) 0 // Compatibility with non-clang compilers.
-#endif
-
-#ifndef NS_RETURNS_NOT_RETAINED
-#if __has_feature(attribute_ns_returns_not_retained)
-<span class="code_highlight">#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))</span>
-#else
-#define NS_RETURNS_NOT_RETAINED
-#endif
-#endif
-</pre>
-
-<h4 id="attr_cf_returns_retained">Attribute 'cf_returns_retained'
-(Clang-specific)</h4>
-
-<p>The GCC-style (Clang-specific) attribute 'cf_returns_retained' allows one to
-annotate an Objective-C method or C function as returning a retained Core
-Foundation object that the caller is responsible for releasing. The 
-CoreFoundation framework defines a macro <b><tt>CF_RETURNS_RETAINED</tt></b>
-that is functionally equivalent to the one shown below.</p>
-
-<p><b>Placing on Objective-C methods</b>: With respect to Objective-C methods.,
-this attribute is identical in its behavior and usage to 'ns_returns_retained'
-except for the distinction of returning a Core Foundation object instead of a
-Cocoa object. This distinction is important for two reasons:</p>
-
-<ul>
-  <li>Core Foundation objects are not automatically managed by the Objective-C
-  garbage collector.</li>
-  <li>Because Core Foundation is a C API, the analyzer cannot always tell that a
-  pointer return value refers to a Core Foundation object. In contrast, it is
-  trivial for the analyzer to recognize if a pointer refers to a Cocoa object
-  (given the Objective-C type system).
-</ul>
-
-<p><b>Placing on C functions</b>: When placing the attribute
-'cf_returns_retained' on the declarations of C functions, the analyzer
-interprets the function as:</p>
-
-<ol>
-  <li>Returning a Core Foundation Object</li>
-  <li>Treating the function as if it its name
-contained the keywords "create" or "copy". This means the
-returned object as a +1 retain count that must be released by the caller, either
-by sending a <tt>release</tt> message (via toll-free bridging to an Objective-C
-object pointer), calling <tt>CFRelease</tt> (or similar function), or using
-<tt>CFMakeCollectable</tt> to register the object with the Objective-C garbage
-collector.</li>
-</ol>
-
-<p><b>Example</b></p>
-
-<p>In this example, observe the difference in output when the code is compiled
-to not use garbage collection versus when it is compiled to only use garbage
-collection (<tt>-fobjc-gc-only</tt>).</p>
-
-<pre class="code_example">
-<span class="command">$ cat test.m</span>
-$ cat test.m
-#import <Cocoa/Cocoa.h>
-
-#ifndef __has_feature      // Optional.
-#define __has_feature(x) 0 // Compatibility with non-clang compilers.
-#endif
-
-#ifndef CF_RETURNS_RETAINED
-#if __has_feature(attribute_cf_returns_retained)
-<span class="code_highlight">#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))</span>
-#else
-#define CF_RETURNS_RETAINED
-#endif
-#endif
-
- at interface MyClass : NSObject {}
-- (NSDate*) returnsCFRetained <span class="code_highlight">CF_RETURNS_RETAINED</span>;
-- (NSDate*) alsoReturnsRetained;
-- (NSDate*) returnsNSRetained <span class="code_highlight">NS_RETURNS_RETAINED</span>;
- at end
-
-<span class="code_highlight">CF_RETURNS_RETAINED</span>
-CFDateRef returnsRetainedCFDate()  {
-  return CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-}
-
- at implementation MyClass
-- (NSDate*) returnsCFRetained {
-  return (NSDate*) returnsRetainedCFDate(); <b><i>// No leak.</i></b>
-}
-
-- (NSDate*) alsoReturnsRetained {
-  return (NSDate*) returnsRetainedCFDate(); <b><i>// Always report a leak.</i></b>
-}
-
-- (NSDate*) returnsNSRetained {
-  return (NSDate*) returnsRetainedCFDate(); <b><i>// Report a leak when using GC.</i></b>
-}
- at end
-</pre>
-
-<p>Running <tt>scan-build</tt> on this example produces the following output:</p>
-
-<img src="images/example_cf_returns_retained.png" alt="example returns retained">
-
-<p>When the above code is compiled using Objective-C garbage collection (i.e.,
-code is compiled with the flag <tt>-fobjc-gc</tt> or <tt>-fobjc-gc-only</tt>),
-<tt>scan-build</tt> produces both the above error (with slightly different text
-to indicate the code uses garbage collection) as well as the following warning,
-which indicates a leak that occurs <em>only</em> when using garbage
-collection:</p>
-
-<img src="images/example_cf_returns_retained_gc.png" alt="example returns retained gc">
-
-<h4 id="attr_cf_returns_not_retained">Attribute 'cf_returns_not_retained'
-(Clang-specific)</h4>
-
-<p>The 'cf_returns_not_retained' attribute is the complement of '<a
-href="#attr_cf_returns_retained">cf_returns_retained</a>'. Where a function or
-method may appear to obey the Core Foundation or Cocoa conventions and return
-a retained Core Foundation object, this attribute can be used to indicate that
-the object reference returned should not be considered as an
-"owning" reference being returned to the caller. The 
-CoreFoundation framework defines a macro <b><tt>CF_RETURNS_NOT_RETAINED</tt></b>
-that is functionally equivalent to the one shown below.</p>
-
-<p>Usage is identical to <a
-href="#attr_cf_returns_retained">cf_returns_retained</a>.  When using the
-attribute, be sure to declare it within the proper macro that checks for
-its availability, as it is not available in earlier versions of the analyzer:</p>
-
-<pre class="code_example">
-<span class="command">$ cat test.m</span>
-#ifndef __has_feature      // Optional.
-#define __has_feature(x) 0 // Compatibility with non-clang compilers.
-#endif
-
-#ifndef CF_RETURNS_NOT_RETAINED
-#if __has_feature(attribute_cf_returns_not_retained)
-<span class="code_highlight">#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))</span>
-#else
-#define CF_RETURNS_NOT_RETAINED
-#endif
-#endif
-</pre>
-
-<h4 id="attr_ns_consumed">Attribute 'ns_consumed'
-(Clang-specific)</h4>
-
-<p>The 'ns_consumed' attribute can be placed on a specific parameter in either
-the declaration of a function or an Objective-C method. It indicates to the
-static analyzer that a <tt>release</tt> message is implicitly sent to the
-parameter upon completion of the call to the given function or method. The 
-Foundation framework defines a macro <b><tt>NS_RELEASES_ARGUMENT</tt></b> that 
-is functionally equivalent to the <tt>NS_CONSUMED</tt> macro shown below.</p>
-  
-<p><b>Important note when using Garbage Collection</b>: Note that the analyzer
-essentially ignores this attribute when code is compiled to use Objective-C
-garbage collection.  This is because the <tt>release</tt> message does nothing
-when using GC.  If the underlying function/method uses something like
-<tt>CFRelease</tt> to decrement the reference count, consider using
-the <a href="#attr_cf_consumed">cf_consumed</a> attribute instead.</p>
-
-<p><b>Example</b></p>
-
-<pre class="code_example">
-<span class="command">$ cat test.m</span>
-#ifndef __has_feature      // Optional.
-#define __has_feature(x) 0 // Compatibility with non-clang compilers.
-#endif
-
-#ifndef NS_CONSUMED
-#if __has_feature(attribute_ns_consumed)
-<span class="code_highlight">#define NS_CONSUMED __attribute__((ns_consumed))</span>
-#else
-#define NS_CONSUMED
-#endif
-#endif
-
-void consume_ns(id <span class="code_highlight">NS_CONSUMED</span> x);
-
-void test() {
-  id x = [[NSObject alloc] init];
-  consume_ns(x); <b><i>// No leak!</i></b>
-}
-
- at interface Foo : NSObject
-+ (void) releaseArg:(id) <span class="code_highlight">NS_CONSUMED</span> x;
-+ (void) releaseSecondArg:(id)x second:(id) <span class="code_highlight">NS_CONSUMED</span> y;
- at end
-
-void test_method() {
-  id x = [[NSObject alloc] init];
-  [Foo releaseArg:x]; <b><i>// No leak!</i></b>
-}
-
-void test_method2() {
-  id a = [[NSObject alloc] init];
-  id b = [[NSObject alloc] init];
-  [Foo releaseSecondArg:a second:b]; <b><i>// 'a' is leaked, but 'b' is released.</i></b>
-}
-</pre>
-
-<h4 id="attr_cf_consumed">Attribute 'cf_consumed'
-(Clang-specific)</h4>
-
-<p>The 'cf_consumed' attribute is practically identical to <a
-href="#attr_ns_consumed">ns_consumed</a>. The attribute can be placed on a
-specific parameter in either the declaration of a function or an Objective-C
-method. It indicates to the static analyzer that the object reference is
-implicitly passed to a call to <tt>CFRelease</tt> upon completion of the call
-to the given function or method. The CoreFoundation framework defines a macro
-<b><tt>CF_RELEASES_ARGUMENT</tt></b> that is functionally equivalent to the
-<tt>CF_CONSUMED</tt> macro shown below.</p>
-    
-<p>Operationally this attribute is nearly identical to 'ns_consumed' with the
-main difference that the reference count decrement still occurs when using
-Objective-C garbage collection (which is import for Core Foundation types,
-which are not automatically garbage collected).</p>
-
-<p><b>Example</b></p>
-
-<pre class="code_example">
-<span class="command">$ cat test.m</span>
-#ifndef __has_feature      // Optional.
-#define __has_feature(x) 0 // Compatibility with non-clang compilers.
-#endif
-
-#ifndef CF_CONSUMED
-#if __has_feature(attribute_cf_consumed)
-<span class="code_highlight">#define CF_CONSUMED __attribute__((cf_consumed))</span>
-#else
-#define CF_CONSUMED
-#endif
-#endif
-
-void consume_cf(id <span class="code_highlight">CF_CONSUMED</span> x);
-void consume_CFDate(CFDateRef <span class="code_highlight">CF_CONSUMED</span> x);
-
-void test() {
-  id x = [[NSObject alloc] init];
-  consume_cf(x); <b><i>// No leak!</i></b>
-}
-
-void test2() {
-  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-  consume_CFDate(date); <b><i>// No leak, including under GC!</i></b>
-  
-}
-
- at interface Foo : NSObject
-+ (void) releaseArg:(CFDateRef) <span class="code_highlight">CF_CONSUMED</span> x;
- at end
-
-void test_method() {
-  CFDateRef date = CFDateCreate(0, CFAbsoluteTimeGetCurrent());
-  [Foo releaseArg:date]; <b><i>// No leak!</i></b>
-}
-</pre>
-
-<h4 id="attr_ns_consumes_self">Attribute 'ns_consumes_self'
-(Clang-specific)</h4>
-
-<p>The 'ns_consumes_self' attribute can be placed only on an Objective-C method
-declaration. It indicates that the receiver of the message is
-"consumed" (a single reference count decremented) after the message
-is sent. This matches the semantics of all "init" methods.</p>
-
-<p>One use of this attribute is declare your own init-like methods that do not
-follow the standard Cocoa naming conventions.</p>
-
-<p><b>Example</b></p>
-  
-<pre class="code_example">
-#ifndef __has_feature
-#define __has_feature(x) 0 // Compatibility with non-clang compilers.
-#endif
-
-#ifndef NS_CONSUMES_SELF
-#if __has_feature((attribute_ns_consumes_self))
-<span class="code_highlight">#define NS_CONSUMES_SELF __attribute__((ns_consumes_self))</span>
-#else
-#define NS_CONSUMES_SELF
-#endif
-#endif
-
- at interface MyClass : NSObject
-- initWith:(MyClass *)x;
-- nonstandardInitWith:(MyClass *)x <span class="code_highlight">NS_CONSUMES_SELF</span> NS_RETURNS_RETAINED;
- at end
-</pre>
-
-<p>In this example, <tt>-nonstandardInitWith:</tt> has the same ownership
-semantics as the init method <tt>-initWith:</tt>. The static analyzer will
-observe that the method consumes the receiver, and then returns an object with
-a +1 retain count.</p>
-
-<p>The Foundation framework defines a macro <b><tt>NS_REPLACES_RECEIVER</tt></b>
-which is functionally equivalent to the combination of <tt>NS_CONSUMES_SELF</tt>
-and <tt>NS_RETURNS_RETAINED</tt> shown above.</p>
-
-
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-<h2 id="custom_assertions">Custom Assertion Handlers</h2>
-<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-
-<p>The analyzer exploits code assertions by pruning off paths where the
-assertion condition is false. The idea is capture any program invariants
-specified in the assertion that the developer may know but is not immediately
-apparent in the code itself. In this way assertions make implicit assumptions
-explicit in the code, which not only makes the analyzer more accurate when
-finding bugs, but can help others better able to understand your code as well.
-It can also help remove certain kinds of analyzer false positives by pruning off
-false paths.</p>
-
-<p>In order to exploit assertions, however, the analyzer must understand when it
-encounters an "assertion handler." Typically assertions are
-implemented with a macro, with the macro performing a check for the assertion
-condition and, when the check fails, calling an assertion handler.  For example, consider the following code
-fragment:</p>
-
-<pre class="code_example">
-void foo(int *p) {
-  assert(p != NULL);
-}
-</pre>
-
-<p>When this code is preprocessed on Mac OS X it expands to the following:</p>
-
-<pre class="code_example">
-void foo(int *p) {
-  (__builtin_expect(!(p != NULL), 0) ? __assert_rtn(__func__, "t.c", 4, "p != NULL") : (void)0);
-}
-</pre>
-
-<p>In this example, the assertion handler is <tt>__assert_rtn</tt>. When called,
-most assertion handlers typically print an error and terminate the program. The
-analyzer can exploit such semantics by ending the analysis of a path once it
-hits a call to an assertion handler.</p>
-
-<p>The trick, however, is that the analyzer needs to know that a called function
-is an assertion handler; otherwise the analyzer might assume the function call
-returns and it will continue analyzing the path where the assertion condition
-failed. This can lead to false positives, as the assertion condition usually
-implies a safety condition (e.g., a pointer is not null) prior to performing
-some action that depends on that condition (e.g., dereferencing a pointer).</p>
-
-<p>The analyzer knows about several well-known assertion handlers, but can
-automatically infer if a function should be treated as an assertion handler if
-it is annotated with the 'noreturn' attribute or the (Clang-specific)
-'analyzer_noreturn' attribute. Note that, currently, clang does not support 
-these attributes on Objective-C methods and C++ methods.</p>
-
-<h4 id="attr_noreturn">Attribute 'noreturn'</h4>
-
-<p>The 'noreturn' attribute is a GCC-attribute that can be placed on the
-declarations of functions. It means exactly what its name implies: a function
-with a 'noreturn' attribute should never return.</p>
-
-<p>Specific details of the syntax of using the 'noreturn' attribute can be found
-in <a
-href="http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#index-g_t_0040code_007bnoreturn_007d-function-attribute-2264">GCC's
-documentation</a>.</p>
-
-<p>Not only does the analyzer exploit this information when pruning false paths,
-but the compiler also takes it seriously and will generate different code (and
-possibly better optimized) under the assumption that the function does not
-return.</p>
-
-<p><b>Example</b></p>
-
-<p>On Mac OS X, the function prototype for <tt>__assert_rtn</tt> (declared in
-<tt>assert.h</tt>) is specifically annotated with the 'noreturn' attribute:</p>
-
-<pre class="code_example">
-void __assert_rtn(const char *, const char *, int, const char *) <span class="code_highlight">__attribute__((__noreturn__))</span>;
-</pre>
-
-<h4 id="attr_analyzer_noreturn">Attribute 'analyzer_noreturn' (Clang-specific)</h4>
-
-<p>The Clang-specific 'analyzer_noreturn' attribute is almost identical to
-'noreturn' except that it is ignored by the compiler for the purposes of code
-generation.</p>
-
-<p>This attribute is useful for annotating assertion handlers that actually
-<em>can</em> return, but for the purpose of using the analyzer we want to
-pretend that such functions do not return.</p>
-
-<p>Because this attribute is Clang-specific, its use should be conditioned with
-the use of preprocessor macros.</p>
-
-<p><b>Example</b>
-
-<pre class="code_example">
-#ifndef CLANG_ANALYZER_NORETURN
-#if __has_feature(attribute_analyzer_noreturn)
-<span class="code_highlight">#define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn))</span>
-#else
-#define CLANG_ANALYZER_NORETURN
-#endif
-#endif
-
-void my_assert_rtn(const char *, const char *, int, const char *) <span class="code_highlight">CLANG_ANALYZER_NORETURN</span>;
-</pre>
-
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/available_checks.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/available_checks.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/available_checks.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,198 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Available Checks</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>
-  <style type="text/css">
-  tr:first-child { width:20%; }
-  </style>
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<h1>Available Checks</h1>
-
-<h3>The list of the checks the analyzer performs by default</h3>
-<p>
-<table border="0" cellpadding="3" cellspacing="3" width="100%">
-<!--  <tr>
-<th><h4>Checker Name</h4></th>
-<th><h4>Description</h4></th>
-</tr>-->
-<tr>
-<td><b>core.AdjustedReturnValue</b></td><td>Check to see if the return value of a function call is different than the caller expects (e.g., from calls through function pointers).</td>
-</tr>
-<tr>
-<td><b>core.CallAndMessage</b></td><td>Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers).</td>
-</tr>
-<tr>
-<td><b>core.DivideZero</b></td><td>Check for division by zero.</td>
-</tr>
-<tr>
-<td><b>core.NonNullParamChecker</b></td><td>Check for null pointers passed as arguments to a function whose arguments are known to be non-null.</td>
-</tr>
-<tr>
-<td><b>core.NullDereference</b></td><td>Check for dereferences of null pointers.</td>
-</tr>
-<tr>
-<td><b>core.StackAddressEscape</b></td><td>Check that addresses to stack memory do not escape the function.</td>
-</tr>
-<tr>
-<td><b>core.UndefinedBinaryOperatorResult</b></td><td>Check for undefined results of binary operators.</td>
-</tr>
-<tr>
-<td><b>core.VLASize</b></td><td>Check for declarations of VLA of undefined or zero size.</td>
-</tr>
-<tr>
-<td><b>core.builtin.BuiltinFunctions</b></td><td>Evaluate compiler builtin functions (e.g., alloca()).</td>
-</tr>
-<tr>
-<td><b>core.builtin.NoReturnFunctions</b></td><td>Evaluate "panic" functions that are known to not return to the caller.</td>
-</tr>
-<tr>
-<td><b>core.uninitialized.ArraySubscript</b></td><td>Check for uninitialized values used as array subscripts.</td>
-</tr>
-<tr>
-<td><b>core.uninitialized.Assign</b></td><td>Check for assigning uninitialized values.</td>
-</tr>
-<tr>
-<td><b>core.uninitialized.Branch</b></td><td>Check for uninitialized values used as branch conditions.</td>
-</tr>
-<tr>
-<td><b>core.uninitialized.CapturedBlockVariable</b></td><td>Check for blocks that capture uninitialized values.</td>
-</tr>
-<tr>
-<td><b>core.uninitialized.UndefReturn</b></td><td>Check for uninitialized values being returned to the caller.</td>
-</tr>
-<tr>
-<td><b>cplusplus.NewDelete</b></td><td>Check for double-free and use-after-free problems involving C++ <code>delete</code>.</td>
-</tr>
-<tr>
-<td><b>deadcode.DeadStores</b></td><td>Check for values stored to variables that are never read afterwards.</td>
-</tr>
-<!-- 
-<tr>
-<td><b>deadcode.IdempotentOperations</b></td><td>Warn about idempotent operations.</td>
-</tr>
--->
-<tr>
-<td><b>osx.API</b></td><td>Check for proper uses of various Apple APIs.</td>
-</tr>
-<tr>
-<td><b>osx.SecKeychainAPI</b></td><td>Check for proper uses of Secure Keychain APIs.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.AtSync</b></td><td>Check for nil pointers used as mutexes for @synchronized.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.ClassRelease</b></td><td>Check for sending 'retain', 'release', or 'autorelease' directly to a Class.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.IncompatibleMethodTypes</b></td><td>Warn about Objective-C method signatures with type incompatibilities.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.NSAutoreleasePool</b></td><td>Warn for suboptimal uses of NSAutoreleasePool in Objective-C GC mode.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.NSError</b></td><td>Check usage of NSError** parameters.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.NilArg</b></td><td>Check for prohibited nil arguments to ObjC method calls.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.RetainCount</b></td><td>Check for leaks and improper reference count management.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.SelfInit</b></td><td>Check that 'self' is properly initialized inside an initializer method.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.UnusedIvars</b></td><td>Warn about private ivars that are never used.</td>
-</tr>
-<tr>
-<td><b>osx.cocoa.VariadicMethodTypes</b></td><td>Check for passing non-Objective-C types to variadic methods that expect only Objective-C types.</td>
-</tr>
-<tr>
-<td><b>osx.coreFoundation.CFError</b></td><td>Check usage of CFErrorRef* parameters.</td>
-</tr>
-<tr>
-<td><b>osx.coreFoundation.CFNumber</b></td><td>Check for proper uses of CFNumberCreate.</td>
-</tr>
-<tr>
-<td><b>osx.coreFoundation.CFRetainRelease</b></td><td>Check for null arguments to CFRetain/CFRelease/CFMakeCollectable.</td>
-</tr>
-<tr>
-<td><b>osx.coreFoundation.containers.OutOfBounds</b></td><td>Checks for index out-of-bounds when using 'CFArray' API.</td>
-</tr>
-<tr>
-<td><b>osx.coreFoundation.containers.PointerSizedValues</b></td><td>Warns if 'CFArray', 'CFDictionary', 'CFSet' are created with non-pointer-size values.</td>
-</tr>
-<tr>
-<td><b>security.FloatLoopCounter</b></td><td>Warn on using a floating point value as a loop counter (CERT: FLP30-C, FLP30-CPP).</td>
-</tr>
-<tr>
-<td><b>security.insecureAPI.UncheckedReturn</b></td><td>Warn on uses of functions whose return values must be always checked.</td>
-</tr>
-<tr>
-<td><b>security.insecureAPI.getpw</b></td><td>Warn on uses of the 'getpw' function.</td>
-</tr>
-<tr>
-<td><b>security.insecureAPI.gets</b></td><td>Warn on uses of the 'gets' function.</td>
-</tr>
-<tr>
-<td><b>security.insecureAPI.mkstemp</b></td><td>Warn when 'mkstemp' is passed fewer than 6 X's in the format string.</td>
-</tr>
-<tr>
-<td><b>security.insecureAPI.mktemp</b></td><td>Warn on uses of the 'mktemp' function.</td>
-</tr>
-<tr>
-<td><b>security.insecureAPI.rand</b></td><td>Warn on uses of the 'rand', 'random', and related functions.</td>
-</tr>
-<tr>
-<td><b>security.insecureAPI.strcpy</b></td><td>Warn on uses of the 'strcpy' and 'strcat' functions.</td>
-</tr>
-<tr>
-<td><b>security.insecureAPI.vfork</b></td><td>Warn on uses of the 'vfork' function.</td>
-</tr>
-<tr>
-<td><b>unix.API</b></td><td>Check calls to various UNIX/Posix functions.</td>
-</tr>
-<tr>
-<td><b>unix.Malloc</b></td><td>Check for memory leaks, double free, and use-after-free problems involving <code>malloc</code>.</td>
-</tr>
-<tr>
-<td><b>unix.MallocSizeof</b></td><td>Check for dubious malloc arguments involving sizeof.</td>
-</tr>
-<tr>
-<td><b>unix.MismatchedDeallocator</b></td><td>Check for mismatched deallocators (e.g. passing a pointer allocating with <code>new</code> to <code>free()</code>).</td>
-</tr>
-<tr>
-<td><b>unix.cstring.BadSizeArg</b></td><td>Check the size argument passed into C string functions for common erroneous patterns.</td>
-</tr>
-<tr>
-<td><b>unix.cstring.NullArg</b></td><td>Check for null pointers being passed as arguments to C string functions.</td>
-</table>
-
-<p>In addition to these the analyzer contains numerous experimental (alpha) checkers.</p>
-
-<h3>Writeups with examples of some of the bugs that the analyzer finds</h3>
-
-<ul>
-<li><a href="http://www.mobileorchard.com/bug-finding-with-clang-5-resources-to-get-you-started/">Bug Finding With Clang: 5 Resources To Get You Started</a></li>
-<li><a href="http://fruitstandsoftware.com/blog/index.php/2008/08/finding-memory-leaks-with-the-llvmclang-static-analyzer/#comment-2">Finding Memory Leaks With The LLVM/Clang Static Analyzer</a></li>
-<li><a href="http://www.rogueamoeba.com/utm/2008/07/14/the-clang-static-analyzer/">Under the Microscope - The Clang Static Analyzer</a></li>
-<li><a href="http://www.mikeash.com/?page=pyblog/friday-qa-2009-03-06-using-the-clang-static-analyzer.html">Mike Ash - Using the Clang Static Analyzer</a></li>
-</ul>
-
-
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/checker_dev_manual.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/checker_dev_manual.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/checker_dev_manual.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,367 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Checker Developer Manual</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<h1 style="color:red">This Page Is Under Construction</h1>
-
-<h1>Checker Developer Manual</h1>
-
-<p>The static analyzer engine performs path-sensitive exploration of the program and 
-relies on a set of checkers to implement the logic for detecting and 
-constructing specific bug reports. Anyone who is interested in implementing their own 
-checker, should check out the Building a Checker in 24 Hours talk 
-(<a href="http://llvm.org/devmtg/2012-11/Zaks-Rose-Checker24Hours.pdf">slides</a>
- <a href="http://llvm.org/devmtg/2012-11/videos/Zaks-Rose-Checker24Hours.mp4">video</a>) 
-and refer to this page for additional information on writing a checker. The static analyzer is a 
-part of the Clang project, so consult <a href="http://clang.llvm.org/hacking.html">Hacking on Clang</a> 
-and <a href="http://llvm.org/docs/ProgrammersManual.html">LLVM Programmer's Manual</a> 
-for developer guidelines and send your questions and proposals to 
-<a href=http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>cfe-dev mailing list</a>. 
-</p>
-
-    <ul>
-      <li><a href="#start">Getting Started</a></li>
-      <li><a href="#analyzer">Analyzer Overview</a></li>
-      <li><a href="#idea">Idea for a Checker</a></li>
-      <li><a href="#registration">Checker Registration</a></li>
-      <li><a href="#skeleton">Checker Skeleton</a></li>
-      <li><a href="#node">Exploded Node</a></li>
-      <li><a href="#bugs">Bug Reports</a></li>
-      <li><a href="#ast">AST Visitors</a></li>
-      <li><a href="#testing">Testing</a></li>
-      <li><a href="#commands">Useful Commands</a></li>
-    </ul>
-
-<h2 id=start>Getting Started</h2>
-  <ul>
-    <li>To check out the source code and build the project, follow steps 1-4 of 
-    the <a href="http://clang.llvm.org/get_started.html">Clang Getting Started</a> 
-  page.</li>
-
-    <li>The analyzer source code is located under the Clang source tree:
-    <br><tt>
-    $ <b>cd llvm/tools/clang</b>
-    </tt>
-    <br>See: <tt>include/clang/StaticAnalyzer</tt>, <tt>lib/StaticAnalyzer</tt>,
-     <tt>test/Analysis</tt>.</li>
-
-    <li>The analyzer regression tests can be executed from the Clang's build 
-    directory:
-    <br><tt>
-    $ <b>cd ../../../; cd build/tools/clang; TESTDIRS=Analysis make test</b>
-    </tt></li>
-    
-    <li>Analyze a file with the specified checker:
-    <br><tt>
-    $ <b>clang -cc1 -analyze -analyzer-checker=core.DivideZero test.c</b>
-    </tt></li>
-
-    <li>List the available checkers:
-    <br><tt>
-    $ <b>clang -cc1 -analyzer-checker-help</b>
-    </tt></li>
-
-    <li>See the analyzer help for different output formats, fine tuning, and 
-    debug options:
-    <br><tt>
-    $ <b>clang -cc1 -help | grep "analyzer"</b>
-    </tt></li>
-
-  </ul>
- 
-<h2 id=analyzer>Static Analyzer Overview</h2>
-  The analyzer core performs symbolic execution of the given program. All the 
-  input values are represented with symbolic values; further, the engine deduces 
-  the values of all the expressions in the program based on the input symbols  
-  and the path. The execution is path sensitive and every possible path through 
-  the program is explored. The explored execution traces are represented with 
-  <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1ExplodedGraph.html">ExplodedGraph</a> object.
-  Each node of the graph is 
-  <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1ExplodedNode.html">ExplodedNode</a>, 
-  which consists of a <tt>ProgramPoint</tt> and a <tt>ProgramState</tt>.
-  <p>
-  <a href="http://clang.llvm.org/doxygen/classclang_1_1ProgramPoint.html">ProgramPoint</a> 
-  represents the corresponding location in the program (or the CFG graph). 
-  <tt>ProgramPoint</tt> is also used to record additional information on 
-  when/how the state was added. For example, <tt>PostPurgeDeadSymbolsKind</tt> 
-  kind means that the state is the result of purging dead symbols - the 
-  analyzer's equivalent of garbage collection. 
-  <p>
-  <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1ProgramState.html">ProgramState</a> 
-  represents abstract state of the program. It consists of:
-  <ul>
-    <li><tt>Environment</tt> - a mapping from source code expressions to symbolic 
-    values
-    <li><tt>Store</tt> - a mapping from memory locations to symbolic values
-    <li><tt>GenericDataMap</tt> - constraints on symbolic values
-  </ul>
-  
-  <h3>Interaction with Checkers</h3>
-  Checkers are not merely passive receivers of the analyzer core changes - they 
-  actively participate in the <tt>ProgramState</tt> construction through the
-  <tt>GenericDataMap</tt> which can be used to store the checker-defined part 
-  of the state. Each time the analyzer engine explores a new statement, it 
-  notifies each checker registered to listen for that statement, giving it an 
-  opportunity to either report a bug or modify the state. (As a rule of thumb, 
-  the checker itself should be stateless.) The checkers are called one after another 
-  in the predefined order; thus, calling all the checkers adds a chain to the 
-  <tt>ExplodedGraph</tt>. 
-  
-  <h3>Representing Values</h3>
-  During symbolic execution, <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1SVal.html">SVal</a> 
-  objects are used to represent the semantic evaluation of expressions. 
-  They can represent things like concrete 
-  integers, symbolic values, or memory locations (which are memory regions). 
-  They are a discriminated union of "values", symbolic and otherwise. 
-  If a value isn't symbolic, usually that means there is no symbolic 
-  information to track. For example, if the value was an integer, such as 
-  <tt>42</tt>, it would be a <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1nonloc_1_1ConcreteInt.html">ConcreteInt</a>, 
-  and the checker doesn't usually need to track any state with the concrete 
-  number. In some cases, <tt>SVal</tt> is not a symbol, but it really should be 
-  a symbolic value. This happens when the analyzer cannot reason about something 
-  (yet). An example is floating point numbers. In such cases, the 
-  <tt>SVal</tt> will evaluate to <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1UnknownVal.html">UnknownVal<a>. 
-  This represents a case that is outside the realm of the analyzer's reasoning 
-  capabilities. <tt>SVals</tt> are value objects and their values can be viewed 
-  using the <tt>.dump()</tt> method. Often they wrap persistent objects such as 
-  symbols or regions. 
-  <p>
-  <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1SymExpr.html">SymExpr</a> (symbol) 
-  is meant to represent abstract, but named, symbolic value. Symbols represent 
-  an actual (immutable) value. We might not know what its specific value is, but 
-  we can associate constraints with that value as we analyze a path. For 
-  example, we might record that the value of a symbol is greater than 
-  <tt>0</tt>, etc.
-  <p>
-
-  <p>
-  <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1MemRegion.html">MemRegion</a> is similar to a symbol.  
-  It is used to provide a lexicon of how to describe abstract memory. Regions can 
-  layer on top of other regions, providing a layered approach to representing memory. 
-  For example, a struct object on the stack might be represented by a <tt>VarRegion</tt>, 
-  but a <tt>FieldRegion</tt> which is a subregion of the <tt>VarRegion</tt> could 
-  be used to represent the memory associated with a specific field of that object.
-  So how do we represent symbolic memory regions? That's what 
-  <a href="http://clang.llvm.org/doxygen/classclang_1_1ento_1_1SymbolicRegion.html">SymbolicRegion</a> 
-  is for. It is a <tt>MemRegion</tt> that has an associated symbol. Since the 
-  symbol is unique and has a unique name; that symbol names the region.
-  
-  <P>
-  Let's see how the analyzer processes the expressions in the following example:
-  <p>
-  <pre class="code_example">
-  int foo(int x) {
-     int y = x * 2;
-     int z = x;
-     ...
-  }
-  </pre>
-  <p>
-Let's look at how <tt>x*2</tt> gets evaluated. When <tt>x</tt> is evaluated, 
-we first construct an <tt>SVal</tt> that represents the lvalue of <tt>x</tt>, in 
-this case it is an <tt>SVal</tt> that references the <tt>MemRegion</tt> for <tt>x</tt>. 
-Afterwards, when we do the lvalue-to-rvalue conversion, we get a new <tt>SVal</tt>, 
-which references the value <b>currently bound</b> to <tt>x</tt>. That value is 
-symbolic; it's whatever <tt>x</tt> was bound to at the start of the function. 
-Let's call that symbol <tt>$0</tt>. Similarly, we evaluate the expression for <tt>2</tt>, 
-and get an <tt>SVal</tt> that references the concrete number <tt>2</tt>. When 
-we evaluate <tt>x*2</tt>, we take the two <tt>SVals</tt> of the subexpressions, 
-and create a new <tt>SVal</tt> that represents their multiplication (which in 
-this case is a new symbolic expression, which we might call <tt>$1</tt>). When we 
-evaluate the assignment to <tt>y</tt>, we again compute its lvalue (a <tt>MemRegion</tt>), 
-and then bind the <tt>SVal</tt> for the RHS (which references the symbolic value <tt>$1</tt>) 
-to the <tt>MemRegion</tt> in the symbolic store.
-<br>
-The second line is similar. When we evaluate <tt>x</tt> again, we do the same 
-dance, and create an <tt>SVal</tt> that references the symbol <tt>$0</tt>. Note, two <tt>SVals</tt> 
-might reference the same underlying values.
-
-<p>
-To summarize, MemRegions are unique names for blocks of memory. Symbols are 
-unique names for abstract symbolic values. Some MemRegions represents abstract 
-symbolic chunks of memory, and thus are also based on symbols. SVals are just 
-references to values, and can reference either MemRegions, Symbols, or concrete 
-values (e.g., the number 1).
-
-  <!-- 
-  TODO: Add a picture.
-  <br>
-  Symbols<br>
-  FunctionalObjects are used throughout.  
-  -->
-<h2 id=idea>Idea for a Checker</h2>
-  Here are several questions which you should consider when evaluating your 
-  checker idea:
-  <ul>
-    <li>Can the check be effectively implemented without path-sensitive 
-    analysis? See <a href="#ast">AST Visitors</a>.</li>
-    
-    <li>How high the false positive rate is going to be? Looking at the occurrences 
-    of the issue you want to write a checker for in the existing code bases might 
-    give you some ideas. </li>
-    
-    <li>How the current limitations of the analysis will effect the false alarm 
-    rate? Currently, the analyzer only reasons about one procedure at a time (no 
-    inter-procedural analysis). Also, it uses a simple range tracking based 
-    solver to model symbolic execution.</li>
-    
-    <li>Consult the <a
-    href="http://llvm.org/bugs/buglist.cgi?query_format=advanced&bug_status=NEW&bug_status=REOPENED&version=trunk&component=Static%20Analyzer&product=clang">Bugzilla database</a> 
-    to get some ideas for new checkers and consider starting with improving/fixing  
-    bugs in the existing checkers.</li>
-  </ul>
-
-<h2 id=registration>Checker Registration</h2>
-  All checker implementation files are located in <tt>clang/lib/StaticAnalyzer/Checkers</tt> 
-  folder. Follow the steps below to register a new checker with the analyzer.
-<ol>
-  <li>Create a new checker implementation file, for example <tt>./lib/StaticAnalyzer/Checkers/NewChecker.cpp</tt>
-<pre class="code_example">
-using namespace clang;
-using namespace ento;
-
-namespace {
-class NewChecker: public Checker< check::PreStmt<CallExpr> > {
-public:
-  void checkPreStmt(const CallExpr *CE, CheckerContext &Ctx) const {}
-}
-}
-void ento::registerNewChecker(CheckerManager &mgr) {
-  mgr.registerChecker<NewChecker>();
-}
-</pre>
-
-<li>Pick the package name for your checker and add the registration code to 
-<tt>./lib/StaticAnalyzer/Checkers/Checkers.td</tt>. Note, all checkers should 
-first be developed as experimental. Suppose our new checker performs security 
-related checks, then we should add the following lines under 
-<tt>SecurityExperimental</tt> package: 
-<pre class="code_example">
-let ParentPackage = SecurityExperimental in {
-...
-def NewChecker : Checker<"NewChecker">,
-  HelpText<"This text should give a short description of the checks performed.">,
-  DescFile<"NewChecker.cpp">;
-...
-} // end "security.experimental"
-</pre>
-
-<li>Make the source code file visible to CMake by adding it to 
-<tt>./lib/StaticAnalyzer/Checkers/CMakeLists.txt</tt>.
-
-<li>Compile and see your checker in the list of available checkers by running:<br>
-<tt><b>$clang -cc1 -analyzer-checker-help</b></tt>
-</ol>
-   
-
-<h2 id=skeleton>Checker Skeleton</h2>
-  There are two main decisions you need to make:
-  <ul>
-    <li> Which events the checker should be tracking. 
-    See <a href="http://clang.llvm.org/doxygen/classento_1_1CheckerDocumentation.html">CheckerDocumentation</a> 
-    for the list of available checker callbacks.</li>
-    <li> What data you want to store as part of the checker-specific program 
-    state. Try to minimize the checker state as much as possible. </li>
-  </ul>
-
-<h2 id=bugs>Bug Reports</h2>
-
-<h2 id=ast>AST Visitors</h2>
-  Some checks might not require path-sensitivity to be effective. Simple AST walk 
-  might be sufficient. If that is the case, consider implementing a Clang 
-  compiler warning. On the other hand, a check might not be acceptable as a compiler 
-  warning; for example, because of a relatively high false positive rate. In this 
-  situation, AST callbacks <tt><b>checkASTDecl</b></tt> and 
-  <tt><b>checkASTCodeBody</b></tt> are your best friends. 
-
-<h2 id=testing>Testing</h2>
-  Every patch should be well tested with Clang regression tests. The checker tests 
-  live in <tt>clang/test/Analysis</tt> folder. To run all of the analyzer tests, 
-  execute the following from the <tt>clang</tt> build directory:
-    <pre class="code">
-    $ <b>TESTDIRS=Analysis make test</b>
-    </pre>
-
-<h2 id=commands>Useful Commands/Debugging Hints</h2>
-<ul>
-<li>
-While investigating a checker-related issue, instruct the analyzer to only 
-execute a single checker:
-<br><tt>
-$ <b>clang -cc1 -analyze -analyzer-checker=osx.KeychainAPI test.c</b>
-</tt>
-</li>
-<li>
-To dump AST:
-<br><tt>
-$ <b>clang -cc1 -ast-dump test.c</b>
-</tt>
-</li>
-<li>
-To view/dump CFG use <tt>debug.ViewCFG</tt> or <tt>debug.DumpCFG</tt> checkers:
-<br><tt>
-$ <b>clang -cc1 -analyze -analyzer-checker=debug.ViewCFG test.c</b>
-</tt> 
-</li>
-<li>
-To see all available debug checkers:
-<br><tt>
-$ <b>clang -cc1 -analyzer-checker-help | grep "debug"</b>
-</tt>
-</li>
-<li>
-To see which function is failing while processing a large file use 
-<tt>-analyzer-display-progress</tt> option.
-</li>
-<li>
-While debugging execute <tt>clang -cc1 -analyze -analyzer-checker=core</tt> 
-instead of <tt>clang --analyze</tt>, as the later would call the compiler 
-in a separate process.
-</li>
-<li>
-To view <tt>ExplodedGraph</tt> (the state graph explored by the analyzer) while 
-debugging, goto a frame that has <tt>clang::ento::ExprEngine</tt> object and 
-execute:
-<br><tt> 
-(gdb) <b>p ViewGraph(0)</b>
-</tt>
-</li>
-<li>
-To see the <tt>ProgramState</tt> while debugging use the following command. 
-<br><tt>
-(gdb) <b>p State->dump()</b>
-</tt> 
-</li>
-<li>
-To see <tt>clang::Expr</tt> while debugging use the following command. If you 
-pass in a SourceManager object, it will also dump the corresponding line in the 
-source code.
-<br><tt>
-(gdb) <b>p E->dump()</b>
-</tt> 
-</li>
-<li>
-To dump AST of a method that the current <tt>ExplodedNode</tt> belongs to:
-<br><tt>
-(gdb) <b>p C.getPredecessor()->getCodeDecl().getBody()->dump()</b>
-(gdb) <b>p C.getPredecessor()->getCodeDecl().getBody()->dump(getContext().getSourceManager())</b>
-</tt>
-</li>
-</ul>
-
-</div>
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/content.css
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/content.css	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/content.css	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,113 +0,0 @@
-html { margin: 0px; } body { margin: 8px; }
-
-html, body {
-  padding:0px;
-  margin:0px;
-  font-size:small; font-family:"Lucida Grande", "Lucida Sans Unicode", Arial, Verdana, Helvetica, sans-serif; background-color: #fff; color: #222;
-  line-height:1.5;
-  background-color: #808080;
-  
-}
-
-h1, h2, h3, tt { color: #000 }
-
-h1 { padding-top:0px; margin-top:0px;}
-h2 { color:#333333; padding-top:0.5em; }
-h3 { padding-top: 0.5em; margin-bottom: -0.25em; color:#2d58b7 }
-h4 { color:#2d58b7 }
-h4.faq { color:#2d58b7 }
-li { padding-bottom: 0.5em }
-ul { padding-left:1.5em; }
-
-.command { font-weight:bold }
-.code_highlight { font-weight:bold; color:#2d58b7 }
-.code_example { border-width:1px; border-style:solid; border-color:#cccccc; 
-                background-color:#eeeeee; padding:10px }
-
-/* Slides */
-IMG.img_slide {
-    display: block;
-    margin-left: auto;
-    margin-right: auto
-}
-
-#page { width:930px;  text-align: left; margin: 0 auto; padding:0;
-        background-color: white; height:100%;
-        border-left: 1px solid #EBF0FA;
-}
-
-#content {
-  clear: left;
-  padding: 1em 2em 0 2em;
-  background-color: #ffffff;
-}
-
-.itemTitle { color:#2d58b7 }
-
-
-/* Tables */
-tr { vertical-align:top }
-
-table.options thead {
-  background-color:#eee; color:#666666;
-  font-weight: bold; cursor: default;
-  text-align:left;
-  border-top: 2px solid #cccccc;
-  border-bottom: 2px solid #cccccc;
-  font-weight: bold; font-family: Verdana
-}
-table.options { border: 1px #cccccc solid }
-table.options { border-collapse: collapse; border-spacing: 0px }
-table.options { margin-left:0px; margin-top:20px; margin-bottom:20px }
-table.options td { border-bottom: 1px #cccccc dotted }
-table.options td { padding:5px; padding-left:8px; padding-right:8px }
-table.options td { text-align:left; font-size:9pt }
-
-table.checkers { 
-  border: 1px #cccccc solid;
-  border-collapse: collapse;
-  margin:0px; margin-top:20px; margin-bottom:20px;
-  text-align:left;
-  table-layout: fixed;
-  width: 100%;
-  word-wrap :break-word;
-  font-size: 100%;
-}
-
-table.checkers thead {
-  background-color:#eee; color:#666666;
-  border-top: 2px solid #cccccc;
-  border-bottom: 2px solid #cccccc;
-  font-weight: bold; font-family: Verdana;
-}
-
-table.checkers td { 
-  padding:5px; padding-left:8px; padding-right:8px;
-  border-right: 1px #cccccc dotted;
-  border-bottom: 1px #cccccc dotted;
-}
-
-table.checkers td.aligned { text-align: center; vertical-align: middle; }
-table.checkers col.namedescr { width: 45% }
-table.checkers col.example { width: 55% }
-table.checkers col.progress { width: 84px }
-table.checkers pre { margin:1px; font-size: 100%; word-wrap :break-word; }
-table.checkers .name { font-weight:bold; }
-table.checkers .checked { background-color:#81F781; }
-table.checkers .commented { color:#909090; }
-
-/* Collapsing Trees: http://dbtree.megalingo.com/web/demo/simple-collapsible-tree.cfm  */
-#collapsetree, #collapsetree a:link, #collapsetree li a:link, #collapsetree a:visited, #collapsetree li a:visited{color:#000;text-decoration:none}
-#collapsetree,#collapsetree ul{list-style-type:none; width:auto; margin:0; padding:0}
-#collapsetree ul{padding-left:20px;display:none;overflow:auto}
-#collapsetree li ul{margin:0 auto}
-#collapsetree li{display:block;width:100%;line-height:20px;white-space:nowrap}
-#collapsetree li a{display:block;padding-left:20px;color:#000;text-decoration:none;background:url(images/tree/bullet.gif) center left no-repeat;white-space:nowrap}
-#collapsetree li a:hover{text-decoration:underline;background-color:transparent;color:#000}
-#collapsetree li ul.click{display:block}
-#collapsetree li.click a{background:url(images/tree/bullet.gif) center left no-repeat}
-#collapsetree ul li.click a{background:url(images/tree/bullet.gif) center left no-repeat}
-#collapsetree li a.subMenu,#collapsetree ul li a.subMenu{background:url(images/tree/plus.gif) center left no-repeat}
-#collapsetree li a.click{background:url(images/tree/minus.gif) center left no-repeat}
-#collapsetree ul li a.click{background:url(images/tree/minus.gif) center left no-repeat}
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/faq.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/faq.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/faq.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,122 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>FAQ and How to Deal with Common False Positives</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>
-  <style type="text/css">
-    tr:first-child { width:20%; }
-  </style>
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<h1>FAQ and How to Deal with Common False Positives</h1>
-
-<ol>
-  <li><a href="#custom_assert">How do I tell the analyzer that I do not want the bug being
-reported here since my custom error handler will safely end the execution before
-the bug is reached?</a></li>
-  <li><a href="#null_pointer">The analyzer reports a null dereference, but I know that the
-pointer is never null. How can I tell the analyzer that a pointer can never be
-null?</a></li>
-  <li><a href="#use_assert">The analyzer assumes that a loop body is never entered.  How can I tell it that the loop body will be entered at least once?</a></li>
-  <li><a href="#suppress_issue">How can I suppress a specific analyzer warning?</a></li>
-  <li><a href="#exclude_code">How can I selectively exclude code the analyzer examines?</a></li>
-</ol>
-
-
-<h4 id="custom_assert" class="faq">Q: How do I tell the analyzer that I do not want the bug being
-reported here since my custom error handler will safely end the execution before
-the bug is reached?</h4>
-
-<img src="images/example_custom_assert.png" alt="example custom assert">
-
-<p>You can tell the analyzer that this path is unreachable by teaching it about your <a href = "annotations.html#custom_assertions" >custom assertion handlers</a>. For example, you can modify the code segment as following.</p>
-
-<pre class="code_example">
-void customAssert() <span class="code_highlight">__attribute__((analyzer_noreturn))</span>;
-int foo(int *b) {
-  if (!b)
-    customAssert();
-  return *b;
-}</pre>
-
-
-<h4 id="null_pointer" class="faq">Q: The analyzer reports a null dereference, but I know that the
-pointer is never null. How can I tell the analyzer that a pointer can never be
-null?</h4>
-
-<img src="images/example_null_pointer.png" alt="example null pointer">
-
-<p>The reason the analyzer often thinks that a pointer can be null is because the preceding code checked compared it against null. So if you are absolutely sure that it cannot be null, remove the preceding check and, preferably, add an assertion as well. For example, in the code segment above, it will be sufficient to remove the <tt>if (!b)</tt> check. </p>
-
-<pre class="code_example">
-void usePointer(int *b);
-int foo(int *b) {
-  usePointer(b);
-  return *b;
-}</pre>
-
-<h4 id="use_assert" class="faq">Q: The analyzer assumes that a loop body is never entered.  How can I tell it that the loop body will be entered at least once?</h4>
-
-<img src="images/example_use_assert.png" alt="example use assert">
-
-<p> In the contrived example above, the analyzer has detected that the body of 
-the loop is never entered for the case where <tt>length <= 0</tt>. In this 
-particular example, you may know that the loop will always be entered because 
-the input parameter <tt>length</tt> will be greater than zero in all calls to this 
-function. You can teach the analyzer facts about your code as well as document 
-it by using assertions. By adding <tt>assert(length > 0)</tt> in the beginning 
-of the function, you tell the analyzer that your code is never expecting a zero 
-or a negative value, so it won't need to test the correctness of those paths.
-</p>
-
-<pre class="code_example">
-int foo(int length) {
-  int x = 0;
-  <span class="code_highlight">assert(length > 0);</span>
-  for (int i = 0; i < length; i++)
-    x += 1;
-  return length/x;
-}
-</pre>
-
-<h4 id="suppress_issue" class="faq">Q: How can I suppress a specific analyzer warning?</h4>
-
-<p>There is currently no solid mechanism for suppressing an analyzer warning,
-although this is currently being investigated. When you encounter an analyzer
-bug/false positive, check if it's one of the issues discussed above or if the
-analyzer <a href = "annotations.html#custom_assertions" >annotations</a> can 
-resolve the issue. Second, please <a href = "filing_bugs.html">report it</a> to 
-help us improve user experience. As the last resort, consider using <tt>__clang_analyzer__</tt> macro
-<a href = "faq.html#exclude_code" >described below</a>.</p>
-
-<h4 id="exclude_code" class="faq">Q: How can I selectively exclude code the analyzer examines?</h4>
-
-<p>When the static analyzer is using clang to parse source files, it implicitly 
-defines the preprocessor macro <tt>__clang_analyzer__</tt>. One can use this 
-macro to selectively exclude code the analyzer examines. Here is an example:
-
-<pre class="code_example">
-#ifndef __clang_analyzer__
-// Code not to be analyzed
-#endif
-</pre>
-
-This usage is discouraged because it makes the code dead to the analyzer from 
-now on. Instead, we prefer that users file bugs against the analyzer when it flags 
-false positives.
-</p>
-
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/filing_bugs.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/filing_bugs.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/filing_bugs.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Filing Bugs and Feature Requests</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>  
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-
-<h1>Filing Bugs and Feature Requests</h1>
-
-<p>We encourage users to file bug reports for any problems that they encounter.
-We also welcome feature requests. When filing a bug report, please do the
-following:</p>
-
-<ul>  
-
-<li>Include the checker build (for prebuilt Mac OS X binaries) or the SVN
-revision number.</li>
-
-<li>Provide a self-contained, reduced test case that exhibits the issue you are
-experiencing.</li>
-
-<li>Test cases don't tell us everything. Please briefly describe the problem you
-are seeing, including what you thought should have been the expected behavior
-and why.</li>
-
-</ul>
-
-<h2>Outside of Apple</h2>
-
-<h3>Bugzilla</h3>
-
-<p>Please <a href="http://llvm.org/bugs/enter_bug.cgi?product=clang">file
-bugs</a> in LLVM's Bugzilla database against the Clang <b>Static Analyzer</b>
-component.</p>
-
-<h3>Bugreporter.apple.com</h3>
-
-<p>If you are using the analyzer to analyze code associated with an Apple NDA
-(e.g., preview versions of SDKs or seed releases of Mac OS X) please file bug
-reports to Apple's <a href="http://bugreporter.apple.com">Bug Reporter</a> web
-site.</p>
-
-<p>You are free to always file bugs through this website, but this option is less
-attractive than filing bug reports through Bugzilla as not everyone who works on
-the analyzer has access to that bug database.</p>
-
-<h2>Apple-internal Users</h2>
-
-<p>Please file bugs in Radar against the <b>clang - static analyzer</b> component.</p>
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/index.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/index.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/index.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,223 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Clang Static Analyzer</title>
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>  
-  <!-- Generated from: http://www.spiffycorners.com/index.php -->
-
-<style type="text/css">
-.spiffy{display:block}
-.spiffy *{
-  display:block;
-  height:1px;
-  overflow:hidden;
-  font-size:.01em;
-  background:#EBF0FA}
-.spiffy1{
-  margin-left:3px;
-  margin-right:3px;
-  padding-left:1px;
-  padding-right:1px;
-  border-left:1px solid #f6f8fc;
-  border-right:1px solid #f6f8fc;
-  background:#f0f3fb}
-.spiffy2{
-  margin-left:1px;
-  margin-right:1px;
-  padding-right:1px;
-  padding-left:1px;
-  border-left:1px solid #fdfdfe;
-  border-right:1px solid #fdfdfe;
-  background:#eef2fa}
-.spiffy3{
-  margin-left:1px;
-  margin-right:1px;
-  border-left:1px solid #eef2fa;
-  border-right:1px solid #eef2fa;}
-.spiffy4{
-  border-left:1px solid #f6f8fc;
-  border-right:1px solid #f6f8fc}
-.spiffy5{
-  border-left:1px solid #f0f3fb;
-  border-right:1px solid #f0f3fb}
-.spiffyfg{
-  background:#EBF0FA}
-  
-.spiffyfg h2 {
-  margin:0px;  padding:10px;
-}
-
-  #left { float:left; }
-  #left h2 { margin:1px; padding-top:0px; }
-  #right { float:left; margin-left:20px; margin-right:20px; padding:0px ;}
-  #right h2 { padding:0px; margin:0px; }
-  #wrappedcontent { padding:15px;}
-</style>
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-
-
-<table style="margin-top:0px" width="100%" border="0" cellpadding="0px" cellspacing="0">
-<tr><td>
-
-<h1>Clang Static Analyzer</h1>  
-
-<p>The Clang Static Analyzer is a source code analysis tool that finds bugs in
-C, C++, and Objective-C programs.</p>
-
-<p>Currently it can be run either as a <a href="scan-build.html">standalone
-tool</a> or <a href="xcode.html">within Xcode</a>. The standalone tool is
-invoked from the command line, and is intended to be run in tandem with a build
-of a codebase.</p>
-
-<p>The analyzer is 100% open source and is part of the <a
-href="http://clang.llvm.org">Clang</a> project. Like the rest of Clang, the
-analyzer is implemented as a C++ library that can be used by other tools and
-applications.</p>
-
-<h2>Download</h2>
-
-<div style="padding:0px; font-size: 90%">
- <b class="spiffy">
- <b class="spiffy1"><b></b></b>
- <b class="spiffy2"><b></b></b>
- <b class="spiffy3"></b>
- <b class="spiffy4"></b>
- <b class="spiffy5"></b></b>
- <div class="spiffyfg">
-  <div style="padding:15px">
-   <h3 style="margin:0px;padding:0px">Mac OS X</h3>
-   <ul>
-    <li>Latest build (Intel-only binary, 10.5+):<br>
-     <!--#include virtual="latest_checker.html.incl"-->
-    </li>
-    <li><a href="/release_notes.html">Release notes</a></li>
-    <li>This build can be used both from the command line and from within Xcode</li>
-    <li><a href="/installation.html">Installation</a> and <a href="/scan-build.html">usage</a></li>
-   </ul>
-  </div>
- </div>
- <b class="spiffy">
- <b class="spiffy5"></b>
- <b class="spiffy4"></b>
- <b class="spiffy3"></b>
- <b class="spiffy2"><b></b></b>
- <b class="spiffy1"><b></b></b></b>
-</div>
-
-<div style="padding:0; margin-top:10px; font-size: 90%">
- <b class="spiffy">
- <b class="spiffy1"><b></b></b>
- <b class="spiffy2"><b></b></b>
- <b class="spiffy3"></b>
- <b class="spiffy4"></b>
- <b class="spiffy5"></b></b>
- <div class="spiffyfg">
-  <div style="padding:15px">
-   <h3 style="margin:0px;padding:0px">Other Platforms</h3>    
-   <p>For other platforms, please follow the instructions for <a
-   href="/installation#OtherPlatforms">building the analyzer</a> from
-   source code.<p>
-  </div>
- </div>
- <b class="spiffy">
- <b class="spiffy5"></b>
- <b class="spiffy4"></b>
- <b class="spiffy3"></b>
- <b class="spiffy2"><b></b></b>
- <b class="spiffy1"><b></b></b></b>
-</div>
-
-
-</td><td style="padding-left:10px">
-<a href="images/analyzer_xcode.png"><img src="images/analyzer_xcode.png" width="450" alt="analyzer in xcode"></a>
-<div style="text-align:center"><b>Viewing static analyzer results in Xcode</b></div>
-<a href="images/analyzer_html.png"><img src="images/analyzer_html.png" width="450" alt="analyzer in browser"></a>
-<div style="text-align:center"><b>Viewing static analyzer results in a web browser</b></div>
-</td></tr></table>
-
-<h2 id="StaticAnalysis">What is Static Analysis?</h2>
-
-<p>The term "static analysis" is conflated, but here we use it to mean
-a collection of algorithms and techniques used to analyze source code in order
-to automatically find bugs. The idea is similar in spirit to compiler warnings
-(which can be useful for finding coding errors) but to take that idea a step
-further and find bugs that are traditionally found using run-time debugging
-techniques such as testing.</p>
-
-<p>Static analysis bug-finding tools have evolved over the last several decades
-from basic syntactic checkers to those that find deep bugs by reasoning about
-the semantics of code. The goal of the Clang Static Analyzer is to provide a
-industrial-quality static analysis framework for analyzing C, C++, and 
-Objective-C programs that is freely available, extensible, and has a high quality of implementation.</p>
-
-<h3 id="Clang">Part of Clang and LLVM</h3>
-
-<p>As its name implies, the Clang Static Analyzer is built on top of <a
-href="http://clang.llvm.org">Clang</a> and <a href="http://llvm.org">LLVM</a>.
-Strictly speaking, the analyzer is part of Clang, as Clang consists of a set of
-reusable C++ libraries for building powerful source-level tools. The static
-analysis engine used by the Clang Static Analyzer is a Clang library, and has
-the capability to be reused in different contexts and by different clients.</p>
-
-<h2>Important Points to Consider</h2>
-
-<p>While we believe that the static analyzer is already very useful for finding
-bugs, we ask you to bear in mind a few points when using it.</p>
-
-<h3>Work-in-Progress</h3>
-
-<p>The analyzer is a continuous work-in-progress. There are many planned
-enhancements to improve both the precision and scope of its analysis algorithms
-as well as the kinds of bugs it will find. While there are fundamental
-limitations to what static analysis can do, we have a long way to go before
-hitting that wall.</p>
-
-<h3>Slower than Compilation</h3>
-
-<p>Operationally, using static analysis to
-automatically find deep program bugs is about trading CPU time for the hardening
-of code. Because of the deep analysis performed by state-of-the-art static
-analysis tools, static analysis can be much slower than compilation.</p>
-
-<p>While the Clang Static Analyzer is being designed to be as fast and
-light-weight as possible, please do not expect it to be as fast as compiling a
-program (even with optimizations enabled). Some of the algorithms needed to find
-bugs require in the worst case exponential time.</p>
-
-<p>The Clang Static Analyzer runs in a reasonable amount of time by both
-bounding the amount of checking work it will do as well as using clever
-algorithms to reduce the amount of work it must do to find bugs.</p>
-
-<h3>False Positives</h3>
-
-<p>Static analysis is not perfect. It can falsely flag bugs in a program where
-the code behaves correctly. Because some code checks require more analysis
-precision than others, the frequency of false positives can vary widely between
-different checks. Our long-term goal is to have the analyzer have a low false
-positive rate for most code on all checks.</p>
-
-<p>Please help us in this endeavor by <a href="filing_bugs.html">reporting false
-positives</a>. False positives cannot be addressed unless we know about
-them.</p>
-
-<h3>More Checks</h3>
-
-<p>Static analysis is not magic; a static analyzer can only find bugs that it
-has been specifically engineered to find. If there are specific kinds of bugs
-you would like the Clang Static Analyzer to find, please feel free to
-file <a href="filing_bugs.html">feature requests</a> or contribute your own
-patches.</p>
-
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/installation.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/installation.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/installation.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,114 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Obtaining the Static Analyzer</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>  
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-
-<h1>Obtaining the Static Analyzer</h1>
-
-<p>This page describes how to download and install the analyzer.  Once
-the analyzer is installed, follow the <a
-href="/scan-build.html">instructions</a> on using <tt>scan-build</tt> to
-get started analyzing your code.</p>
-
-<h2>Packaged Builds (Mac OS X)</h2>
-
-<p>Semi-regular pre-built binaries of the analyzer are available on Mac
-OS X.  These are built to run on Mac OS 10.5 and later.</p>
-
-<p>Builds are released frequently.  Often the differences between build
-numbers being a few bug fixes or minor feature improvements.  When using
-the analyzer, we recommend that you check back here occasionally for new
-builds, especially if the build you are using is more than a couple
-weeks old.</p>
-
-<p>The latest build is: 
-  <!--#include virtual="latest_checker.html.incl"-->
-</p>
-
-<p>Packaged builds for other platforms may eventually be provided, but
-we need volunteers who are willing to help provide such regular builds.
-If you wish to help contribute regular builds of the analyzer on other
-platforms, please email the <a
-href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">Clang
-Developers' mailing list</a>.</p>
-
-<h3>Using Packaged Builds</h3>
-
-<p>To use a package build, simply unpack it anywhere.  If the build
-archive has the name <b><tt>checker-XXX.tar.bz2</tt></b> then the
-archive will expand to a directory called <b><tt>checker-XXX</tt></b>.
-You do not need to place this directory or the contents of this
-directory in any special place.  Uninstalling the analyzer is as simple
-as deleting this directory.</p>
-
-<p>Most of the files in the <b><tt>checker-XXX</tt></b> directory will
-be supporting files for the analyzer that you can simply ignore.  Most
-users will only care about two files, which are located at the top of
-the <b><tt>checker-XXX</tt></b> directory:</p>
-
-<ul>
-<li><b>scan-build</b>: <tt>scan-build</tt> is the high-level command line utility for running the analyzer</li>
-<li><b>scan-view</b>: <tt>scan-view</tt> a companion comannd line
-utility to <tt>scan-build</tt>, <tt>scan-view</tt> is used to view
-analysis results generated by <tt>scan-build</tt>.  There is an option
-that one can pass to <tt>scan-build</tt> to cause <tt>scan-view</tt> to
-run as soon as it the analysis of a build completes</li>
-</ul>
-
-<h4>Running scan-build</h4>
-
-<p>For specific details on using <tt>scan-build</tt>, please see
-<tt>scan-build</tt>'s <a href="/scan-build">documentation</a>.</p>
-
-<p>To run <tt>scan-build</tt>, either add the
-<b><tt>checker-XXX</tt></b> directory to your path or specify a complete
-path for <tt>scan-build</tt> when running it. It is also possible to use
-a symbolic link to <tt>scan-build</tt>, such one located in a directory
-in your path. When <tt>scan-build</tt> runs it will automatically
-determine where to find its accompanying files.</p>
-
-<h2 id="OtherPlatforms">Other Platforms (Building the Analyzer from Source)</h2>
-
-<p>For other platforms, you must build Clang and LLVM manually.  To do
-so, please follow the instructions for <a
-href="http://clang.llvm.org/get_started.html#build">building Clang from
-source code</a>.<p>
-
-<p>Once the Clang is built, you need to add the following to your path:</p>
-
-<ul>
-
-<li>The location of the <tt>clang</tt> binary.
-
-<p>For example, if you built a <em>Debug+Asserts</em> build of LLVM/Clang (the
-default), the resultant <tt>clang</tt> binary will be in <tt>$(OBJDIR)/Debug+Asserts/bin</tt>
-(where <tt>$(OBJDIR)</tt> is often the same as the root source directory).  You
-can also do <tt>make install</tt> to install the LLVM/Clang libraries and
-binaries to the installation directory of your choice (specified when you run
-<tt>configure</tt>).</p></li>
-
-<li>The locations of the <tt>scan-build</tt> and <tt>scan-view</tt>
-programs.
-
-<p>Currently these are not installed using <tt>make install</tt>, and
-are located in <tt>$(SRCDIR)/tools/clang/tools/scan-build</tt> and
-<tt>$(SRCDIR)/tools/clang/tools/scan-view</tt> respectively (where
-<tt>$(SRCDIR)</tt> is the root LLVM source directory).  These locations
-are subject to change.</p></li>
-
-</ul>
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/latest_checker.html.incl
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/latest_checker.html.incl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/latest_checker.html.incl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-<b><a href="https://attache.apple.com/AttacheWeb/dl?id=ATCdb3165f4406a4589b5878a22494c3b79">checker-274.tar.bz2</a></b> (built April 23, 2013)

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/menu.css
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/menu.css	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/menu.css	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,52 +0,0 @@
-/* From 'A list apart', 'dropdowns' */
-
-#nav {
-  clear: left;
-  margin:0;
-  padding:0;
-  font-weight: bold;
-  width:100%;
-  background-color: #EBF0FA;
-  border-bottom: 1px solid;
-  font-size: 80%;
-}
-#nav a {
-  text-decoration: none;
-}  
-#nav a:hover {
-  text-decoration: underline;
-}
-.menubar ul {
-  list-style: none inside;
-}
-.menubar li {
-  margin: 0;
-  padding: 5px;  
-  text-align: left;
-  text-indent: 0px;
-  list-style-position: inside;
-  list-style:none;
-  float: left;
-  position: relative;
-  width: 13em;
-  cursor: default;
-  background-color: #EBF0FA;
-}
-.menubar li ul /* second level lists */ {
-  display: none;
-  position: absolute; 
-  left: 0;
-}
-.menubar li>ul {
-  border-left: 1px solid;
-  border-right: 1px solid;
-  border-bottom: 1px solid;
-  padding: 0;
-  margin: 5px 0;
-  left:auto;
-  font-weight: normal;
-}
-.menubar li:hover ul, li.over ul { /* lists nested under hovered list items */
-  display: block;
-}
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/menu.html.incl
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/menu.html.incl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/menu.html.incl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,43 +0,0 @@
-<table width="100%" id="nav" cellspacing=0 cellpadding=0>
-<tr><td>
-<ul style="margin:0; padding:0" class="menubar">
-<li style="padding-left:5em">
-  <a href="/index.html">About</a>
-  <ul class="menubar">
-    <li><a href="/index.html">About the Analyzer</a></li>
-    <li><a href="http://llvm.org/">LLVM Project</a></li>
-    <li><a href="http://clang.llvm.org/">Clang Project</a></li>
-  </ul>
-</li>
-<li>
-  <a href="/filing_bugs.html">Filing Bugs</a>
-</li>
-<li>
-  User Manual
-  <ul>
-    <li><a href="/installation.html">Obtaining the Analyzer</a></li>
-    <li><a href="/scan-build.html">Command Line Usage</a></li>
-    <li><a href="/xcode.html">Using within Xcode</a></li>
-    <li><a href="/available_checks.html">Available Checks</a></li>
-    <li><a href="/faq.html">FAQ</a></li>
-    <li><a href="/annotations.html">Source-level Annotations</a></li>
-  </ul>
-</li>
-<li>
-  Development
-  <ul>
-    <li><a href="/checker_dev_manual.html">Checker Developer Manual</a></li>
-    <li><a href="/open_projects.html">Open Projects</a></li>
-    <li><a href="/potential_checkers.html">Potential Future Checkers</a></li>
-  </ul>
-</li>
-<li>
-  Mailing Lists
-  <ul>
-    <li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a></li>
-    <li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits</a></li>
-  </ul>
-</li>
-</ul>
-</td></tr>
-</table>

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/open_projects.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/open_projects.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/open_projects.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,180 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Open Projects</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>  
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-
-<h1>Open Projects</h1>
-
-<p>This page lists several projects that would boost analyzer's usability and 
-power. Most of the projects listed here are infrastructure-related so this list 
-is an addition to the <a href="potential_checkers.html">potential checkers 
-list</a>. If you are interested in tackling one of these, please send an email 
-to the <a href=http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>cfe-dev
-mailing list</a> to notify other members of the community.</p>
-
-<ul>  
-  <li>Core Analyzer Infrastructure
-  <ul>
-    <li>Explicitly model standard library functions with <tt>BodyFarm</tt>.
-    <p><tt><a href="http://clang.llvm.org/doxygen/classclang_1_1BodyFarm.html">BodyFarm</a></tt> 
-    allows the analyzer to explicitly model functions whose definitions are 
-    not available during analysis. Modeling more of the widely used functions 
-    (such as the members of <tt>std::string</tt>) will improve precision of the
-    analysis. 
-    <i>(Difficulty: Easy)</i><p>
-    </li>
-    
-    <li>Implement generalized loop execution modeling.
-    <p>Currently, the analyzer simply unrolls each loop <tt>N</tt> times. This 
-    means that it will not execute any code after the loop if the loop is 
-    guaranteed to execute more than <tt>N</tt> times. This results in lost 
-    basic block coverage. We could continue exploring the path if we could 
-    model a generic <tt>i</tt>-th iteration of a loop.
-    <i> (Difficulty: Hard)</i></p>
-    </li>
-
-    <li>Enhance CFG to model C++ temporaries properly.
-    <p>There is an existing implementation of this, but it's not complete and
-    is disabled in the analyzer.
-    <i>(Difficulty: Medium)</i></p>    
-
-    <li>Enhance CFG to model exception-handling properly.
-    <p>Currently exceptions are treated as "black holes", and exception-handling
-    control structures are poorly modeled (to be conservative). This could be
-    much improved for both C++ and Objective-C exceptions.
-    <i>(Difficulty: Medium)</i></p>    
-
-    <li>Enhance CFG to model C++ <code>new</code> more precisely.
-    <p>The current representation of <code>new</code> does not provide an easy
-    way for the analyzer to model the call to a memory allocation function
-    (<code>operator new</code>), then initialize the result with a constructor
-    call. The problem is discussed at length in
-    <a href="http://llvm.org/bugs/show_bug.cgi?id=12014">PR12014</a>.
-    <i>(Difficulty: Easy)</i></p>    
-
-    <li>Enhance CFG to model C++ <code>delete</code> more precisely.
-    <p>Similarly, the representation of <code>delete</code> does not include
-    the call to the destructor, followed by the call to the deallocation
-    function (<code>operator delete</code>). One particular issue 
-    (<tt>noreturn</tt> destructors) is discussed in
-    <a href="http://llvm.org/bugs/show_bug.cgi?id=15599">PR15599</a>
-    <i>(Difficulty: Easy)</i></p>    
-
-    <li>Track type info through casts more precisely.
-    <p>The DynamicTypePropagation checker is in charge of inferring a region's
-    dynamic type based on what operations the code is performing. Casts are a
-    rich source of type information that the analyzer currently ignores. They
-    are tricky to get right, but might have very useful consequences.
-    <i>(Difficulty: Medium)</i></p>    
-
-    <li>Design and implement alpha-renaming.
-    <p>Implement unifying two symbolic values along a path after they are 
-    determined to be equal via comparison. This would allow us to reduce the 
-    number of false positives and would be a building step to more advanced 
-    analyses, such as summary-based interprocedural and cross-translation-unit 
-    analysis. 
-    <i>(Difficulty: Hard)</i></p>
-    </li>    
-  </ul>
-  </li>
-
-  <li>Bug Reporting 
-  <ul>
-    <li>Add support for displaying cross-file diagnostic paths in HTML output
-    (used by <tt>scan-build</tt>).
-    <p>Currently <tt>scan-build</tt> output does not display reports that span 
-    multiple files. The main problem is that we do not have a good format to
-    display such paths in HTML output. <i>(Difficulty: Medium)</i> </p>
-    </li>
-    
-    <li>Relate bugs to checkers / "bug types"
-    <p>We need to come up with an API which will relate bug reports 
-    to the checkers that produce them and refactor the existing code to use the 
-    new API. This would allow us to identify the checker from the bug report,
-    which paves the way for selective control of certain checks.
-    <i>(Difficulty: Easy-Medium)</i></p>
-    </li>
-    
-    <li>Refactor path diagnostic generation in <a href="http://clang.llvm.org/doxygen/BugReporter_8cpp_source.html">BugReporter.cpp</a>.
-    <p>It would be great to have more code reuse between "Minimal" and 
-    "Extensive" PathDiagnostic generation algorithms. One idea is to create an 
-    IR for representing path diagnostics, which would be later be used to 
-    generate minimal or extensive report output. <i>(Difficulty: Medium)</i></p>
-    </li>
-  </ul>
-  </li>
-
-  <li>Other Infrastructure 
-  <ul>
-    <li>Rewrite <tt>scan-build</tt> (in Python).
-    <p><i>(Difficulty: Easy)</i></p>
-    </li>
-
-    <li>Do a better job interposing on a compilation.
-    <p>Currently, <tt>scan-build</tt> just sets the <tt>CC</tt> and <tt>CXX</tt>
-    environment variables to its wrapper scripts, which then call into an
-    underlying platform compiler. This is problematic for any project that
-    doesn't exclusively use <tt>CC</tt> and <tt>CXX</tt> to control its
-    compilers.
-    <p><i>(Difficulty: Medium-Hard)</i></p>
-    </li>
-
-    <li>Create an <tt>analyzer_annotate</tt> attribute for the analyzer 
-    annotations.
-    <p>We would like to put all analyzer attributes behind a fence so that we 
-    could add/remove them without worrying that compiler (not analyzer) users 
-    depend on them. Design and implement such a generic analyzer attribute in 
-    the compiler. <i>(Difficulty: Medium)</i></p>
-    </li>
-  </ul>
-  </li>
-
-  <li>Enhanced Checks
-  <ul>
-    <li>Implement a production-ready StreamChecker.
-    <p>A SimpleStreamChecker has been presented in the Building a Checker in 24 
-    Hours talk 
-    (<a href="http://llvm.org/devmtg/2012-11/Zaks-Rose-Checker24Hours.pdf">slides</a>
-    <a href="http://llvm.org/devmtg/2012-11/videos/Zaks-Rose-Checker24Hours.mp4">video</a>). 
-    We need to implement a production version of the checker with richer set of 
-    APIs and evaluate it by running on real codebases. 
-    <i>(Difficulty: Easy)</i></p>
-    </li>
-
-    <li>Extend Malloc checker with reasoning about custom allocator, 
-    deallocator, and ownership-transfer functions.
-    <p>This would require extending the MallocPessimistic checker to reason 
-    about annotated functions. It is strongly desired that one would rely on 
-    the <tt>analyzer_annotate</tt> attribute, as described above. 
-    <i>(Difficulty: Easy)</i></p>
-    </li>
-
-    <li>Implement iterators invalidation checker.
-    <p><i>(Difficulty: Easy)</i></p>
-    </li>
-    
-    <li>Write checkers which catch Copy and Paste errors.
-    <p>Take a look at the
-    <a href="http://pages.cs.wisc.edu/~shanlu/paper/TSE-CPMiner.pdf">CP-Miner</a>
-    paper for inspiration. 
-    <i>(Difficulty: Medium-Hard)</i></p>
-    </li>  
-  </ul>
-  </li>
-</ul>
-
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/potential_checkers.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/potential_checkers.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/potential_checkers.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,1599 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>List of potential checkers</title>
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>
-  <script type="text/javascript" src="scripts/dbtree.js"></script>
-</head>
-<body>
-
-<div id="page">
-
-<!-- menu -->
-<!--#include virtual="menu.html.incl"-->
-<!-- page content -->
-<div id="content">
-<h1>List of potential checkers</h1>
-
-<p>This page contains a list of potential checkers to implement in the static analyzer.  If you are interested in contributing to the analyzer's development, this is a good resource to help you get started.  The specific names of the checkers are subject to review, and are provided here as suggestions.</p>
-
-<!-- ========================= allocation/deallocation ======================= -->
-<h3>allocation/deallocation</h3>
-<table class="checkers">
-<col class="namedescr"><col class="example"><col class="progress">
-<thead><tr><td>Name, Description</td><td>Example</td><td>Progress</td></tr></thead>
-
-<tr><td><span class="name">memory.LeakNeverReleased<br>
-(C, C++)</span><br><br>
-Memory may be never released, potential leak of memory
-</td><td>
-<pre>
-#include <stdlib.h>
-
-int f() {};
-
-void test() { 
-  int *p1 = (int*)malloc(sizeof(int)); // warn
-  int *p2 = new int; // warn
-  int x = f();
-  if (x==1)
-    return;
-  delete p2;
-}
-</pre></td><td class="aligned"><a href="http://llvm.org/bugs/show_bug.cgi?id=15237">PR15237</a>
-</td></tr>
-
-<tr><td><span class="name">memory.MismatchedFree
-<br>enhancement to unix.Malloc<br>(C, C++)</span><br><br>
-Mismatched deallocation function is used
-</td><td><pre>
-#include <stdlib.h>
-
-void test() {
-  int *p1 = new int;
-  int *p2 = new int[1];
-
-  free(p1); // warn
-  free(p2); // warn
-}
-</pre></td><td class="aligned"><a href="http://llvm.org/bugs/show_bug.cgi?id=15238">PR15238</a>
-</td></tr>
-
-<tr><td><span class="name">memory.LeakPtrValChanged
-<br>enhancement to unix.Malloc<br>(C, C++)</span><br><br>
-Potential memory leak: a pointer to newly allocated data loses its original 
-value
-</td><td><pre>
-#include <stdlib.h>
-
-void f(const int *);
-void g(int *);
-
-void test() {
-  int *p1 = new int;
-  p1++; // warn
-  int *p2 = (int *)malloc(sizeof(int));
-  p2 = p1; // warn
-  int *p3 = new int;
-  f(p3);
-  p3++; // warn
-  int *p4 = new int;
-  f(p4);
-  p4++; // ok
-}
-</pre></td><td class="aligned">done at r174678 (C case)
-</td></tr>
-
-<tr><td><span class="name">memory.LeakEvalOrder<br>
-(C, C++)</span><br><br>
-Potential memory leak: argument evaluation order is undefined, g() may never be called
-</td><td><pre>
-#include <stdlib.h>
-
-void f1(int, int);
-void f2(int*, int*);
-int g(int *) { throw 1; };
-int h();
-
-void test() {
-  f1(g(new int), h()); // warn
-  f1(g((int *)malloc(sizeof(int))), h()); // warn
-  f2(new int, new int);
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">memory.DstBufferTooSmall
-<br>(C, C++)</span><br><br>
-Destination buffer too small
-</td><td><pre>
-#include <string.h>
-
-void test() {
-  const char* s1 = "abc";
-  char *s2 = new char;
-  strcpy(s2, s1); // warn
-
-  int* p1 = new int[3];
-  int* p2 = new int;
-  memcpy(p2, p1, 3); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">memory.NegativeArraySize
-<br>enhancement to experimental.security.MallocOverflow<br>(C, C++)
-</span><br><br>
-'n' is used to specify the buffer size may be negative
-</td><td><pre>
-#include <stdlib.h>
-
-void test() {
-  int *p;
-  int n1 = -1;
-  p = new int[n1]; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-</table>
-
-<!-- ======================= constructors/destructors ====================== -->
-<h3>constructors/destructors</h3>
-<table class="checkers">
-<col class="namedescr"><col class="example"><col class="progress">
-<thead><tr><td>Name, Description</td><td>Example</td><td>Progress</td></tr></thead>
-
-<tr><td><span class="name">ctordtor.ExptInsideDtorExplicit<br>
-(C++)</span><br><br>
-It is dangerous to let an exception leave a destructor. Using try..catch will 
-solve the problem.
-</td><td><pre>
-void f();
-
-class A {
-  A() {}
-  ~A() { throw 1; } // warn
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">ctordtor.ExptInsideDtorImplicit<br>
-(C++)</span><br><br>
-Calls to functions inside a destructor that are known to throw exceptions is 
-dangerous. Using try..catch will solve the problem.
-</td><td><pre>
-void f() { throw 1; };
-
-class A {
-  A() {}
-  ~A() { f(); } // warn
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">ctordtor.PlacementSelfCopy<br>
-(C++11)</span><br><br>
-For a placement copy or move, it is almost certainly an error if the constructed object is also the object being copied from.
-</td><td><pre>
-class A {};
-
-void test(A *dst, A *src) {
-  ::new (dst) A(*dst); // warn (should be 'src')
-}
-</pre></td><td class="aligned"><!--rdar://problem/13688366--></td></tr>
-
-</table>
-
-<!-- ============================== exceptions ============================= -->
-<h3>exceptions</h3>
-<table class="checkers">
-<col class="namedescr"><col class="example"><col class="progress">
-<thead><tr><td>Name, Description</td><td>Example</td><td>Progress</td></tr></thead>
-
-<tr><td><span class="name">exceptions.ThrowSpecButNotThrow
-<br>(C++)</span><br><br>
-Function prototype has throw(T) specifier but the function do not throw
-</td><td><pre>
-void f() throw(int) { // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">exceptions.NoThrowSpecButThrows
-<br>(C++)</span><br><br>
-An exception is throw from a function having the throw() specifier
-</td><td><pre>
-void f() throw() {
-  throw(1); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">exceptions.ThrownTypeDiffersSpec
-<br>(C++)</span><br><br>
-The type of a thrown exception differs from those specified in the throw(T) 
-specifier
-</td><td><pre>
-struct S{};
-void f() throw(int) {
-  S s;
-  throw (s); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-</table>
-
-<!-- ========================= smart pointers ============================== -->
-<h3>smart pointers</h3>
-<table class="checkers">
-<col class="namedescr"><col class="example"><col class="progress">
-<thead><tr><td>Name, Description</td><td>Example</td><td>Progress</td></tr></thead>
-
-<tr><td><span class="name">smartptr.SmartPtrInit<br>
-(C++)</span><br><br>
-C++03: auto_ptr should store a pointer to an object obtained via new as allocated
-memory will be cleaned using delete<br>
-C++11: one should use unique_ptr<T[]> to keep a pointer to memory
-allocated by new[]<br>
-C++11: to keep a pointer to memory allocated by new[] in a shared_ptr one
-should use a custom deleter that calls delete[]
-</td><td><pre>
-#include <stdlib.h>
-#include <memory>
-
-void test() {
-  std::auto_ptr<int> p1(new int); // Ok
-  std::auto_ptr<int> p2(new int[3]); // warn
-  std::auto_ptr<int> 
-         p3((int *)malloc(sizeof(int))); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-</table>
-
-<!-- ========================= undefined behavior ========================== -->
-<h3>undefined behavior</h3>
-<table class="checkers">
-<col class="namedescr"><col class="example"><col class="progress">
-<thead><tr><td>Name, Description</td><td>Example</td><td>Progress</td></tr></thead>
-
-<tr><td><span class="name">undefbehavior.ExitInDtor
-<br>(C++)</span><br><br>
-Undefined behavior: std::exit is called to end the program during the 
-destruction of an object with static storage duration
-</td><td><pre>
-#include <cstdlib>
-
-class A {
-public:
-  ~A() {
-    std::exit(1); // warn
-  }
-};
-
-A a;
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.LocalStaticDestroyed
-<br>(C++)</span><br><br>
-Undefined behavior: function containing a definition of static local object is 
-called during the destruction of an object with static storage duration so that 
-flow of control passes through the definition of the previously destroyed 
-static local object
-</td><td><pre>
-void f();
-
-class A {
-public:
-  ~A() {
-    f(); // warn
-  }
-};
-
-class B {};
-
-A a;
-
-void f() {
-  static B b; // <-
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.UseAfterRelease
-<br>enhancement to unix.Malloc<br>(C, C++)</span><br><br>
-Pointer to deleted object is referenced (The effect of using an invalid pointer 
-value is undefined)
-</td><td><pre>
-#include <stdlib.h>
-
-void test() {
-  int *p = new int;
-  delete p;
-  int i = *p; // warn
-}
-
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ZeroAllocDereference
-<br>enhancement to unix.Malloc<br>(C, C++)</span><br><br>
-The effect of dereferencing a pointer returned as a request for zero size is 
-undefined
-</td><td><pre>
-#include <stdlib.h>
-
-int *p = new int[0];
-int i = p[0]; // warn
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.DeadReferenced
-<br>(C++)</span><br><br>
-Undefined behavior: the following usage of the pointer to the object whose 
-lifetime has ended can result in undefined behavior
-</td><td><pre>
-// C++03
-#include <new>
-
-class A {
-public:
-  int i;
-  void f() {};
-};
-
-class B : public A {
-};
-
-void test() {
-  B *b = new B;
-  new(b) A;
-  b->i; // warn
-  b->f(); // warn
-  static_cast<A*>(b); // warn
-  dynamic_cast<A*>(b); // warn
-  delete b; // warn
-}
-
-// C++11
-#include <new>
-
-class A {
-public:
-  int i;
-  void f() {};
-};
-
-class B : public A {
-public:
-  ~B() {};
-};
-
-void test() {
-  A *a = new A;
-  new(a) B;
-  a->i; // warn
-  a->f(); // warn
-  B *b = new B;
-  new(b) A;
-  b->i; // warn
-  b->f(); // warn
-  static_cast<A*>(b); // warn
-  dynamic_cast<A*>(b); // warn
-  delete b; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ObjLocChanges
-<br>(C++)</span><br><br>
-Undefined behavior: the program must ensure that an object occupies the same 
-storage location when the implicit or explicit destructor call takes place
-</td><td><pre>
-#include <new>
-
-class T { };
-struct B {
-  ~B();
-};
-
-void test() {
-  B *b1 = new B;
-  B b2;
-  new (b1) T;
-  new (&b2) T;
-  delete b1; // warn
-} // warn
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ExprEvalOrderUndef
-<br>(C, C++03)</span><br><br>
-Undefined behavior: a scalar object shall have its stored value modified at 
-most once by the evaluation of an expression
-</td><td><pre>
-void test () {
-  int i = 0;
-  int v[1] = {0};
-  i = v[i++]; // warn
-  i = ++i + 1; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.StaticInitReentered
-<br>(C)</span><br><br>
-Undefined behavior: static declaration is re-entered while the object is being 
-initialized
-</td><td><pre>
-int test(int i) {
-  static int s = test(2*i); // warn
-  return i+1;
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ConstModified
-<br>(C, C++)</span><br><br>
-Undefined behavior: const object is being modified
-</td><td><pre>
-#include <stdlib.h>
-
-class X {
-public :
-  mutable int i;
-  int j;
-};
-class Y {
-public :
-  X x;
-  Y();
-};
-
-void test() {
-  const int *ciq = 
-    (int *)malloc(sizeof(int));
-  int *iq = const_cast<int *>(ciq);
-  *iq = 1; // warn
-
-  const Y y;
-  Y* p = const_cast<Y*>(&y);
-  p->x.i = 1; // ok
-  p->x.j = 1; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.DeadDestructed
-<br>(C++)</span><br><br>
-Undefined behavior: the destructor is invoked for an object whose lifetime 
-has ended
-</td><td><pre>
-class A {
-public:
-  void f() {};
-  A() {};
-  ~A() {};
-};
-
-void test() {
-  A a;
-  a.~A();
-} // warn
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.MethodCallBeforeBaseInit
-<br>(C++)</span><br><br>
-Undefined behavior: calls member function but base not yet initialized
-</td><td><pre>
-class A {
-public :
-  A(int );
-};
-class B : public A {
-public :
-  int f();
-  B() : A(f()) {} // warn
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.MemberOrBaseRefBeforeCtor
-<br>(C++)</span><br><br>
-C++ Undefined behavior: non-static member or base class of non-POD class type 
-is referred before constructor begins execution<br>
-C++11 Undefined behavior: non-static member or base class of a class with a 
-non-trivial constructor is referred before constructor begins execution
-</td><td><pre>
-// C++03
-struct POD { 
-  int i; 
-};
-
-struct non_POD : public POD { 
-  int j; 
-  POD pod;
-};
-
-extern POD pod;
-extern non_POD non_pod;
-
-int *p1 = &non_pod.j; // warn
-int *p2 = &non_pod.pod.i; // warn
-int *p3 = &pod.i; // ok
-POD *p4 = &non_pod; // warn
-
-POD a;
-non_POD b;
-
-struct S {
-  int *k;
-  non_POD non_pod;
-  S() : k(&non_pod.j) {} // warn
-};
-
-// C++11
-struct trivial { 
-  int i; 
-};
-
-struct non_trivial: public trivial { 
-  non_trivial() {};
-  int j; 
-  trivial pod;
-};
-
-extern trivial t;
-extern non_trivial nt;
-
-int *p1 = &nt.j; // warn
-int *p2 = &nt.i; // warn
-int *p3 = &t.i; // ok
-trivial *p4 = &nt;
-
-trivial t;
-non_trivial nt;
-
-struct S {
-  int *k;
-  non_trivial nt;
-  S() : k(&nt.j) {} // warn
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.MemberRefAfterDtor
-<br>(C++)</span><br><br>
-C++03: Undefined behavior: non-static member of non-POD class type is referred 
-after destructor ends execution<br>
-C++11: Undefined behavior: non-static member of a class with a non-trivial 
-destructor is referred after destructor ends execution
-</td><td><pre>
-// C++03
-struct non_POD {
-  virtual void f() {};
-};
-
-void test() {
-  non_POD *non_pod = new non_POD();
-  non_pod->~non_POD();  
-  non_pod->f(); // warn
-}
-
-// C++11
-struct S {
-  ~S() {};
-  void f() {};
-};
-
-void test() {
-  S *s = new S();
-  s->~S();  
-  s->f(); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.CtorForeignCall
-<br>(C++)</span><br><br>
-Undefined behavior: call to virtual function of an object under construction 
-whose type is neither the constructors own class or one of its bases
-</td><td><pre>
-class A {
-public:
-  virtual void f() {};
-};
-
-class B {
-public:
-  B(A* a) { a->f(); } // warn
-};
-
-class C : public A, B {
-public:
-  C() : B((A*)this) {}
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.CtorForeignCast 
-undefbehavior.CtorForeignTypeid
-<br>(C++)</span><br><br>
-Undefined behavior: the operand of typeid/dynamic_cast is an object under 
-construction whose type is neither the constructors own class or one of its 
-bases
-</td><td><pre>
-#include <typeinfo>
-
-class A {
-public:
-  virtual void f() {};
-};
-
-class B {
-public:
-  B(A* a) { 
-    typeid(*a); // warn
-    dynamic_cast<B*>(a); //warn
-  }
-};
-
-class C : public A, B {
-public:
-  C() : B((A*)this) {}
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.MemberRefInCatch 
-undefbehavior.BaseRefInCatch
-<br>(C++)</span><br><br>
-Undefined behavior: referring to any non-static member or base class of an 
-object in the handler for a function-try-block of a constructor or destructor 
-for that object results in undefined behavior
-</td><td><pre>
-class C {
-  int i;
-public :
-  C()
-  try
-  : i(1) {}
-  catch (...)
-  {
-    i=2; // warn
-  }
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ReturnAtCatchEnd
-<br>(C++)</span><br><br>
-Undefined behavior: a function returns when control reaches the end of a 
-handler. This results in undefined behavior in a value-returning 
-function
-</td><td><pre>
-int test() try {
-}
-catch(int) {
-} // warn
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.AutoptrsOwnSameObj
-<br>(C++03)</span><br><br>
-Undefined behavior: if more than one auto_ptr owns the same object at the same 
-time the behavior of the program is undefined.
-</td><td><pre>
-#include <memory>
-
-void test() {
-  int *data = new int;
-  std::auto_ptr<int> p(data);
-  std::auto_ptr<int> q(data); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.BasicStringBoundAccess
-<br>(C++03)</span><br><br>
-Undefined behavior: out-of-bound basic_string access
-</td><td><pre>
-void test() {
-  std::basic_string<char> s;
-  char c = s[10]; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.BasicStringBoundModification
-<br>(C++)</span><br><br>
-Undefined behavior: out-of-bound basic_string modification
-</td><td><pre>
-void test() {
-  std::basic_string<char> s;
-  s[10] = 0; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.EosDereference
-<br>(C++)</span><br><br>
-Undefined behavior: the result of operator*() on an end of stream is 
-undefined
-</td><td><pre>
-#include <vector>
-
-void test() {
-  std::vector<int> v;
-  int i = *v.end(); // warn
-  *v.end() = 0; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.QsortNonPOD 
-undefbehavior.QsortNonTrivial
-<br>C++</span><br><br>
-C++03: Undefined behavior: the objects in the array passed to qsort are of 
-non-POD type<br>
-C++11: Undefined behavior: the objects in the array passed to qsort are of 
-non-trivial type
-</td><td><pre>
-// C++03
-#include <cstdlib>
-
-struct non_POD {
-  int i;
-  non_POD(int ii) : i(ii) {}
-};
-
-non_POD values[] = { non_POD(2), non_POD(1) };
-
-int compare(const void *a, 
-            const void *b) {
-  return ( (*(non_POD*)a).i -
-           (*(non_POD*)b).i );
-}
-
-void test() {
-  qsort(values, 2, sizeof(non_POD), 
-        compare); // warn
-}
-
-// C++11
-#include <cstdlib>
-
-struct S {};
-
-struct trivial_non_POD : public S {
-  int i;
-};
-
-struct non_trivial {
-  int i;
-  non_trivial() {}
-};
-
-trivial_non_POD tnp[2];
-non_trivial nt[2];
-
-int compare1(const void *a, 
-             const void *b) {
-  return ( (*(trivial_non_POD *)a).i -
-           (*(trivial_non_POD *)b).i );
-}
-
-int compare2(const void *a, 
-             const void *b) {
-  return ( (*(non_trivial *)a).i -
-           (*(non_trivial *)b).i );
-}
-
-void test() {
-  qsort(tnp, 2, sizeof(trivial_non_POD), 
-        compare1); // ok
-  qsort(nt, 2, sizeof(non_trivial), 
-        compare2); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ThrowWhileCopy
-<br>C++</span><br><br>
-Undefined behavior: copy constructor/assignment operator can throw an exception.
-The effects are undefined if an exception is thrown.
-</td><td><pre>
-struct S {
-  int i, j;
-  S (const S &s) {
-    i = s.i;
-    throw 1; // warn
-    j = s.j;
-  };
-  S &operator=(const S &s) {
-    i = s.i;
-    throw 1; // warn
-    j = s.j;
-  }
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ValarrayArgBound
-<br>(C++)</span><br><br>
-Undefined behavior: the value of the second argument is greater than the number 
-of values pointed to by the first argument
-</td><td><pre>
-#include <valarray>
-
-struct S {
-  int i;
-  S(int ii) : i(ii) {};
-};
-
-void test(void) {
-  S s[] = { S(1), S(2) };
-  std::valarray<S> v(s,3); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ValarrayLengthDiffer
-<br>(C++)</span><br><br>
-Undefined behavior: valarray operands are of different length
-</td><td><pre>
-// C++03
-#include <valarray>
-
-void test(void) {
-  std::valarray<int> a(0, 1), b(0, 2);
-  std::valarray<bool> c(false, 1);
-  a = b; // warn
-  a *= b; // warn
-  a = a * b; // warn
-  c = a == b; // warn
-  b.resize(1);
-  a = b; // OK
-}
-
-// C++11
-#include <valarray>
-
-void test(void) {
-  std::valarray<int> a(0, 1), b(0, 2);
-  std::valarray<bool> c(false, 1);
-  a = b; // ok
-  a *= b; // ok
-  a = a * b; // warn
-  c = a == b; // warn
-  b.resize(1);
-  a = b; // OK
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ValarrayZeroLength
-<br>(C++)</span><br><br>
-Undefined behavior: calling sum()/min()/max() method of an array having zero 
-length, the behavior is undefined
-</td><td><pre>
-#include <valarray>
-
-void test(void) {
-  std::valarray<int> v(0, 0);
-  v.sum(); // warn
-  v.min(); // warn
-  v.max(); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.ValarrayBadIndirection
-<br>(C++)</span><br><br>
-Undefined behavior: element N is specified more than once in the 
-indirection
-</td><td><pre>
-#include <valarray>
-
-void test() {
-  size_t addr[] = {0, 1, 1}; // N is 1
-  std::valarray<size_t>indirect(addr, 3);
-  std::valarray<int> a(0, 5), b(1, 3);
-  a[indirect] = b; //warn
-  a[indirect] *= b; //warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.IosBaseDestroyedBeforeInit
-<br>(C++)</span><br>
-<br>Undefined behavior: ios_base object is destroyed before initialization have 
-taken place. basic_ios::init should be call to initialize ios_base 
-members
-</td><td><pre>
-#include <ios>
-
-using namespace std;
-template <class T, class Traits = std::char_traits<T>>
-class my_stream1 : public std::basic_ios<T, Traits> {
-};
-
-template <class T, class Traits = std::char_traits<T>>
-class my_stream2 : public std::basic_ios<T, Traits> {
-  class my_streambuf : public std::basic_streambuf<T, Traits> {
-  };
-public:
-  my_stream2() {
-    this->init(new my_streambuf);
-  }
-};
-
-void test() {
-  my_stream1<char> *p1 = new my_stream1<char>
-  my_stream2<char> *p2 = new my_stream2<char>
-  delete p1; // warn
-  delete p2; // ok
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.IosBaseUsedBeforeInit
-<br>(C++11)</span><br><br>
-Undefined behavior: ios_base object is used before initialization have taken 
-place. basic_ios::init should be call to initialize ios_base members
-</td><td><pre>
-#include <ios>
-
-using namespace std;
-template <class T, class Traits = std::char_traits<T>>
-class my_stream1 : public std::basic_ios<T, Traits> {
-};
-
-template <class T, class Traits = std::char_traits<T>>
-class my_stream2 : public std::basic_ios<T, Traits> {
-  class my_streambuf : public std::basic_streambuf<T, Traits> {
-  };
-public:
-  my_stream2() {
-    this->init(new my_streambuf);
-  }
-};
-
-void test() {
-  my_stream1<char> *p1 = new my_stream1<char>
-  my_stream2<char> *p2 = new my_stream2<char>
-  p1->narrow('a', 'b'); // warn
-  p2->narrow('a', 'b'); // ok
-  delete p1; // warn
-  delete p2; // ok
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">undefbehavior.MinusOnePosType
-<br>(C++)</span><br><br>
-Undefined behavior: passing -1 to any streambuf/istream/ostream member that 
-accepts a value of type traits::pos_type result in undefined behavior
-</td><td><pre>
-#include <fstream>
-
-class my_streambuf : public std::streambuf {
-  void f() {
-    seekpos(-1); // warn
-  }
-};
-
-void test() {
-  std::filebuf fb;
-  std::istream in(&fb);
-  std::ostream out(&fb);
-  std::filebuf::off_type pos(-1);
-  in.seekg(pos); // warn
-  out.seekp(-1); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-</table>
-
-<!-- ============================ different ================================ -->
-<h3>different</h3>
-<table class="checkers">
-<col class="namedescr"><col class="example"><col class="progress">
-<thead><tr><td>Name, Description</td><td>Example</td><td>Progress</td></tr>
-</thead>
-
-<tr><td><span class="name">different.ArgEvalOrderUndef
-<br>(C)</span><br><br>
-Errors because of the order of evaluation of function arguments is undefined
-</td><td><pre>
-void f(int, int);
-
-void test() {
-  int i = 0;
-  int v[1] = {0};
-  f(v[i], i++); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.IdenticalExprBinOp
-<br>(C)</span><br><br>
-There are identical sub-expressions to the left and to the right of the 
-operator
-</td><td><pre>
-#define A 1
-#define B 1
-
-bool isNan(double d) { 
-  return d != d; // ok
-}
-
-int f();
-
-void test() {
-  int i = 0;
-  if (i != 0 && i != 0) {} // warn
-
-  if(i == A || i == B) {} // ok
-
-  if (++i != 0 && ++i != 0) {} // ok
-
-  if (f() && f()) {} // ok
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.FuncPtrInsteadOfCall
-<br>(C)</span><br><br>
-Possibly a function call should be used instead of a pointer to function
-</td><td><pre>
-int f();
-
-void test() {
-  if (f == 0) {} // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.IdenticalCondIfElseIf
-<br>(C)</span><br><br>
-The use of 'if (A) {...} else if (A) {...}' pattern was detected. There is a 
-probability of logical error presence
-</td><td><pre>
-void test() { 
-  int i = 7;
-  if (i == 1) {}
-  else if (i == 1) {} // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">SuccessiveAssign
-<br>(C)</span><br><br>
-Successive assign to a variable
-</td><td><pre>
-void test() { 
-  int i=0;
-  i=1;
-  i=2; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.NullDerefStmtOrder
-<br>enhancement to core.NullDereference<br>(C)</span><br><br>
-Dereferencing of the null pointer might take place. Checking the pointer for 
-null should be performed first
-</td><td><pre>
-struct S {
-  int x;
-};
-
-S* f();
-
-void test() {
-  S *p1 = f();
-  int x1 = p1->x; // warn
-  if (p1) {};
-
-  S *p2 = f();
-  int x2 = p2->x; // ok
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.NullDerefCondOrder
-<br>enhancement to core.NullDereference<br>(C)</span><br><br>
-Dereferencing of the null pointer might take place. Checking the pointer for 
-null should be performed first
-</td><td><pre>
-struct S{bool b;};
-
-S* f();
-
-void test() {
-  S *p = f();
-  if (p->b && p) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.IdenticalStmtThenElse
-<br>(C)</span><br><br>
-The 'else' statement is equivalent to the 'then' statement
-</td><td><pre>
-void test() {
-  int i;
-  if (i==1) {
-    i++;
-  }
-  else { // warn
-    i++;
-  }
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.MultipleAccessors
-<br>(C++)</span><br><br>
-multiple accessors met for 'class::field'
-</td><td><pre>
-class A {
-  int i;
-  int j;
-public:
-  int getI() { return i; }
-  int getJ() { return i; } // warn
-  void setI(int& ii) { i = ii; }
-  void setJ(int& jj) { i = jj; } // warn
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.AccessorsForPublic
-<br>(C++)</span><br><br>
-Accessors exist for 'class::field'. Should this field really be public?
-</td><td><pre>
-class A {
-public:
-  int i; // warn
-  int getI() { return i; }
-  void setI(int& ii) { i = ii; }
-};
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.LibFuncResultUnised
-<br>(C, C++)</span><br><br>
-Calling 'f' ignoring its return value is of no use (* create the list of known 
-system/library/API functions falling into this category)
-</td><td><pre>
-#include <vector>
-
-void test() {
-  std::vector<int> v;
-  v.empty(); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.WrongVarForStmt
-<br>(C, C++)</span><br><br>
-Possibly wrong variable is used in the loop/cond-expression of the 'for'
-statement. Did you mean 'proper_variable_name'?
-</td><td><pre>
-void test() {
-  int i;
-  int j;
-  for (j=0; j<3; ++i); // warn
-  for (int j=0; i<3; ++j); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.FloatingCompare
-<br>(C)</span><br><br>
-Comparing floating point numbers may be not precise
-</td><td><pre>
-#include <math.h>
-
-void test() {
-  double b = sin(M_PI / 6.0);
-  if (b == 0.5) // warn
-    b = 0;
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.BoolCompare
-<br>maybe merge with experimental.core.BoolAssignment<br>(C, C++)</span><br><br>
-Comparing boolean to a value other then 0 or 1
-</td><td><pre>
-void test() {
-  int i;
-  if (0 < i < 3) {}; // warn
-  bool b;
-  if (b == 3) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.BitwiseOpBoolArg
-<br>maybe join with experimental.core.BoolAssignment<br>(C, C++)</span><br><br>
-bool value is used at the left/right part of the & (|) operator. Did you mean 
-&& (||) ?
-</td><td><pre>
-int f();
-
-void test() {
-  bool b = true;
-  if (b & f()) {} // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.LabelInsideSwitch
-<br>(C)</span><br><br>
-Possible misprint: label found inside the switch() statement. (* did you mean 
-'default'?)
-</td><td><pre>
-void test() {
-  int c = 7;
-  switch(c){
-  case 1:
-    c += 1; break;
-  defalt: // warn
-    c -= 1; break;
-  }
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.IdenticalCondIfIf
-<br>(C)</span><br><br>
-The conditions of two subsequent 'if' statements are identical
-</td><td><pre>
-void test() {
-  int c = 7;
-  if (c > 5) // <-
-    c += 1;
-  if (c > 5) // warn
-    c -= 1;
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.CondOpIdenticalReturn
-<br>(C)</span><br><br>
-The return expressions of the '?:' operator are identical
-</td><td><pre>
-void test() {
-  unsigned a;
-  a = a > 5 ? a : a; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.LogicalOpUselessArg
-<br>(C)</span><br><br>
-The second operand of the && operator has no impact on expression result
-</td><td><pre>
-void test() {
-  unsigned a;
-  if (a<7 && a<10) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.SameResLogicalExpr
-<br>(C)</span><br><br>
-The expression always evaluates to true/false
-</td><td><pre>
-void test() {
-  int i=0;
-  if (i!=0) {}; // warn
-  if (i==0 && i==1) {}; // warn
-  if (i<0 || i>=0) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.SameResUnsignedCmp
-<br>(C)</span><br><br>
-Comparison of unsigned expression 'op expr' is always true/false
-</td><td><pre>
-void test() {
-  unsigned u;
-  if (u < -1) {}; // warn
-  if (u >= 0) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.OpPrecedenceAssignCmp
-<br>(C)</span><br><br>
-Comparison operation has higher precedence then assignment. Bool value is 
-assigned to variable of type 'type'. Parenthesis may bee required around an 
-assignment
-</td><td><pre>
-int f();
-
-void test() {
-  bool b;
-  int x, y;
-  if((b = x != y)) {} // ok
-  if((x = f() != y)) {} // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.OpPrecedenceIifShift
-<br>(C)</span><br><br>
-?: has lower precedence then <<
-</td><td><pre>
-#include <iostream>
-
-void test() {
-  int a;
-  std::cout << a ? "a" : "b"; // warn
-  a << a>7 ? 1 : 2; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.ObjectUnused
-<br>(C++)</span><br><br>
-The object was created but is not being used<br><br>
-The exception object was created but is not being used. Did you mean 
-'throw std::exception();'?
-</td><td><pre>
-#include <exception>
-
-struct S {
-  int x, y;
-  S(int xx, int yy) : x(xx), y(yy) {
-  }
-  S(int xx) {
-    S(xx, 0); // warn
-  }
-};
-
-void test() {
-  S(0, 0); // warn
-  std::exception(); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.StaticArrayPtrCompare
-<br>(C)</span><br><br>
-Pointer to static array is being compared to NULL. May the subscripting is 
-missing
-</td><td><pre>
-void test() {
-  int a1[1];
-  if (a1 == 0) {}; // warn
-
-  int a2[1][1];
-  if (a2[0]) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.ConversionToBool
-<br>maybe join with experimental.core.BoolAssignment<br>(C, C++)</span><br><br>
-Odd implicit conversion from 'type' to 'bool'
-</td><td><pre>
-bool test() {
-  return 1.; // warn
-  return ""; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.ArrayBound
-<br>enhancement to experimental.security.ArrayBound[v2]<br>(C, C++)</span><br><br>
-Out-of-bound dynamic array access
-</td><td><pre>
-#include <stdlib.h>
-
-void test() {
-  int *p2 = new int[1];
-  if(p2[1]) {}; // warn
-  int i = 1;
-  if(p2[i]) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.StrcpyInputSize
-<BR>enhancement to experimental.unix.cstring.OutOfBounds<br>(C)</span><br><br>
-Buffer copy without checking size of input
-</td><td><pre>
-void test(char* string) {
-  char buf[24];
-  strcpy(buf, string); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.IntegerOverflow
-<br>(C)</span><br><br>
-Integer overflow
-</td><td><pre>
-#include <limits.h>
-
-int f(int x) {
-  return INT_MAX+1; // warn
-}
-
-void test() {
-  int x = INT_MAX+1; // warn
-  f(INT_MAX+1); // warn
-
-  int y = INT_MAX/2+1; // warn
-  x = y*2; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.SignExtension
-<br>(C)</span><br><br>
-Unexpected sign extension might take place
-</td><td><pre>
-void f(unsigned int i);
-int g();
-
-unsigned int test() {
-  long long sll;
-  unsigned long long ull = sll; // warn
-  long sl;
-  unsigned long ul = sl; // warn
-  int si;
-  unsigned int ui = si; // warn
-  short ss;
-  unsigned short us = ss; // warn
-  signed char sc;
-  unsigned char uc = sc; // warn
-  f(si); // warn
-  ui = g(); // warn
-  return si; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.NumericTruncation
-<br>(C)</span><br><br>
-Numeric truncation might take place
-</td><td><pre>
-void f(int i);
-int g();
-
-int test() {
-  unsigned long long ull;
-  long long sll;
-  unsigned long ul = ull; // warn
-  long sl = sll; // warn
-  unsigned int ui = ul; // warn
-  int si = sl; // warn
-  unsigned short us = ui; // warn
-  short ss = si; // warn
-  unsigned char uc = us; // warn
-  signed char sc = uc; // warn
-  f(sll); // warn
-  ss = g(); // warn
-  return sll; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">different.MissingCopyCtorAssignOp
-<br>(C, C++)</span><br><br>
-The class has dynamically allocated data members but do not define a copy 
-constructor/assignment operator
-</td><td><pre>
-class C { // warn
-  int *p; // <-
-public:
-  C() { p = new int; }
-  ~C() { delete p; }
-};
-</pre></td><td class="aligned"></td></tr>
-
-</table>
-
-<!-- ============================ WinAPI =================================== -->
-<h3>WinAPI</h3>
-<table class="checkers">
-<col class="namedescr"><col class="example"><col class="progress">
-<thead><tr><td>Name, Description</td><td>Example</td><td>Progress</td></tr></thead>
-
-<tr><td><span class="name">WinAPI.CreateProcess
-<br>(C)</span><br><br>
-After calling CreateProcess(), ensure that process and thread handles get closed
-(* for the given example: examine data flow from pi, pi.hProcess and pi.hThread)
-</td><td><pre>
-#include <windows.h>
-
-void test() {
-  STARTUPINFO si;
-  PROCESS_INFORMATION pi;
-  BOOL fSuccess;
-  fSuccess = CreateProcess(
-    NULL, TEXT("MyProgram.exe"), NULL, NULL, 
-    TRUE, 0, NULL, NULL, &si, &pi);
-} // warn
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">WinAPI.LoadLibrary
-<br>(C)</span><br><br>
-Calling LoadLibrary without a fully qualified path may allow to load a DLL from 
-arbitrary location
-</td><td><pre>
-#include <windows.h>
-
-void test() {
-  HINSTANCE h = LoadLibrary("X.dll"); // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">WinAPI.WideCharToMultiByte
-<br>(C)</span><br><br>
-Buffer overrun while calling WideCharToMultiByte
-</td><td><pre>
-#include <windows.h>
-
-void test() 
-{
-  wchar_t ws[] = L"abc";
-  char s[3];
-  int res1 = WideCharToMultiByte(
-               CP_UTF8, 0, ws, -1, s, 
-               3, NULL, NULL); // warn
-  int res2 = WideCharToMultiByte(
-               CP_UTF8, 0, ws, -1, s, 
-               3, NULL, NULL); // ok
-  if (res2 == sizeof(s))
-    s[res2-1] = 0;
-  else
-   s[res2] = 0;
-}
-</pre></td><td class="aligned"></td></tr>
-
-</table>
-
-<!-- =========================== optimization ============================== -->
-<h3>optimization</h3>
-<table class="checkers">
-<col class="namedescr"><col class="example"><col class="progress">
-<thead><tr><td>Name, Description</td><td>Example</td><td>Progress</td></tr></thead>
-
-<tr><td><span class="name">optimization.PassConstObjByValue
-<br>(C, C++)</span><br><br>
-Optimization: It is more effective to pass const n-th parameter by reference to 
-avoid unnecessary object copying
-</td><td><pre>
-struct A {
-  int a[20];
-  int b;
-};
-
-bool FirstIsZero(const struct A a) { // warn
-  return a.a[0] == 0;
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">optimization.PostfixIncIter
-<br>(C++)</span><br><br>
-Optimization: It is more effective to use prefix ++ with iterator here
-</td><td><pre>
-#include <vector>
-
-void test() {
-  std::vector<int> v;
-  std::vector<int>::const_iterator it;
-  for(it = v.begin(); 
-      it != v.end(); it++) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">optimization.MultipleCallsStrlen
-<br>(C)</span><br><br>
-Optimization: multiple calls to strlen for a given string in the given 
-expression. It is more effective to hold strlen result in a temporary 
-variable
-</td><td><pre>
-#include <string.h>
-
-void test() {
-  const char* s = "abc";
-  if (strlen(s) > 0 &&
-      strlen(s) < 7) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">optimization.EmptyCstrDetect
-<br>(C)</span><br><br>
-Optimization: it is more efficient to use "str[0] != '\0'" to identify an empty 
-string
-</td><td><pre>
-#include <string.h>
-
-void test() {
-  const char* s = "abc";
-  if (strlen(s) > 0) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">optimization.StrLengthCalculation
-<br>(C, C++)</span><br><br>
-Optimization: it is more efficient to use string::length() method to calculate 
-string length
-</td><td><pre>
-#include <string>
-#include <string.h>
-
-void test() {
-  std::string s;
-  if (strlen(s.c_str()) != 0) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-<tr><td><span class="name">optimization.EmptyContainerDetect
-<br>(C, C++)</span><br><br>
-Optimization: It is more efficient to use container.empty() to identify an 
-empty container
-</td><td><pre>
-#include <list>
-
-void test() {
-  std::list<int> l;
-  if (l.size() != 0) {}; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
-</table>
-
-<br>
-</div> <!-- page -->
-</div> <!-- content -->
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/release_notes.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/release_notes.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/release_notes.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,304 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Release notes for checker-XXX builds</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-
-<h1>Release notes for <tt>checker-XXX</tt> builds</h1>
-
-<h4 id="checker_274">checker-274</h4>
-<p><b>built:</b> April 23, 2013</br>
-	<b>download:</b> <a href="https://attache.apple.com/AttacheWeb/dl?id=ATCdb3165f4406a4589b5878a22494c3b79">checker-274.tar.bz2</a></p>
-	<p><b>highlights:</b></p>
-	<ul>
-    <li>Improved use-after-free and mismatched deallocator checking.</li>
-    <li>Diagnostic polish.</li>
-    <li>Fixes crashes found in checker-273.</li>
-	</ul>
-
-<h4 id="checker_273">checker-273</h4>
-<p><b>built:</b> April 8, 2013</br>
-	<b>download:</b> <a href="https://attache.apple.com/AttacheWeb/dl?id=ATCdefcc852a99546cfbaba2a960e07478e">checker-273.tar.bz2</a></p>
-	<p><b>highlights:</b></p>
-	<ul>
-    <li>Additional checks for misuse of Foundation collection APIs.
-    <li>New C++ checker for attempting to create a reference to null.</li>
-    <li>New use-after-free checker for C++ 'delete'.</li>
-    <li>New checker for simple cases of mismatched allocators and deallocators, e.g. "delete malloc(4);"</li>
-    <li>Support for basic interprocedural analysis of C++ destructors.</li>
-    <li>Additional heuristics for suppressing null pointer false positives.</li>
-    <li>Misc. bug fixes and performance enhancements.</li>
-	</ul>
-
-<h4 id="checker_272">checker-272</h4>
-<p><b>built:</b> March 1, 2013</br>
-	<b>download:</b> <a href="https://attache.apple.com/AttacheWeb/dl?id=ATCbb91eedf8edf4c7388549be8f91e810d">checker-272.tar.bz2</a></p>
-	<p><b>highlights:</b></p>
-	<ul>
-        <li>Better modeling of C++ constructors:
-            <ul>
-                <li>Interprocedural analysis support for constructors of types with trivial destructors</li>
-                <li>Efficient model of trivial copy and move constructors</li>
-            </ul>
-        </li>
-        <li>Better diagnostics for loops that execute 0 times</li>
-        <li>Fixes a linking issue that prevented the checker from running on OS X v10.6 and earlier</li>
-        <li>Fixes for misc. crashes and false positives</li>
-	</ul>
-
-<h4 id="checker_271">checker-271</h4>
-<p><b>built:</b> February 8, 2013</br>
-	<b>download:</b> <a href="http://bit.ly/1299Xt3">checker-271.tar.bz2</a></p>
-	<p><b>highlights:</b></p>
-	<ul>
-        <li>Faster analysis for <tt>scan-build xcodebuild</tt> when using Xcode 4.6 and higher:
-            <ul>
-                <li><tt>scan-build</tt> now uses Xcode's built-in interposition mechanism for the static analyzer to provide faster builds while doing static analysis (PCH files are now built).</li>
-                <li>This change also allows <tt>scan-build</tt> to have better support for iOS project analysis without having to specifying weird SDK settings to <tt>scan-build</tt>.</li>
-            </ul></li>
-        <li>Better diagnostics for implicitly-defined member functions in C++.</li>
-        <li>New warning for <tt>malloc</tt>/<tt>free</tt> checker when passing <tt>malloc</tt>'ed pointer with non-zero offset to <tt>free()</tt>.
-        <li>Fixes for misc. parser crashes.</li>
-        <li>Newer than the static analyzer version in Xcode 4.6</li>
-	</ul>
-
-<h4 id="checker_270">checker-270</h4>
-<p><b>built:</b> January 4, 2013</br>
-	<b>download:</b> <a href="http://bit.ly/13ekSoV">checker-270.tar.bz2</a></p>
-	<p><b>highlights:</b></p>
-	<ul>
-		<li>Major performance enhancements to speed up interprocedural analysis.</li>
-		<li>Misc. bug fixes.</li>
-	</ul>
-
-<h4 id="checker_269">checker-269</h4>
-<p><b>built:</b> September 25, 2012</br>
-	<b>download:</b> <a href="http://bit.ly/USf8ge">checker-269.tar.bz2</a></p>
-	<p><b>highlights:</b></p>
-	<ul>
-		<li>Significantly improves interprocedural analysis for Objective-C.</li>
-		<li>Numerous bug fixes and heuristics to reduce false positives reported
-			over checker-268.</li>
-	</ul>
-
-<h4 id="checker_268">checker-268</h4>
-<p><b>built:</b> September 11, 2012</br>
-	<b>download:</b> <a href="http://bit.ly/U75NOp">checker-268.tar.bz2</a></p>
-	<p><b>highlights:</b></p>
-	
-<ul>
-	<li>Adds initial interprocedural analysis support for C++ and Objective-C. This will greatly improve analysis coverage and find deeper bugs in Objective-C and C++ code.</li>
-	<li>Contains a static analyzer newer than Xcode 4.4.</li>
-</ul>
-
-<p>NOTE: this checker build includes a <i>huge</i> number of changes. It has the potential to find many more bugs, but may report new kinds of false positives. We'd like to know about
-these, and any other problems you encounter. When you encounter an issue, please <a href="/filing_bugs.html">file a bug report</a>.</p>
-
-<h4 id="checker_267">checker-267</h4>
-<p><b>built:</b> June 1, 2012</br>
-   <b>download:</b> <a href="http://bit.ly/OIdyI7">checker-267.tar.bz2</a></p>
-   <p><b>highlights:</b></p>
-
-<p>Adds basic interprocedural analysis support for blocks.</p>
-
-<h4 id="checker_266">checker-266</h4>
-<p><b>built:</b> May 23, 2012</br>
-   <b>download:</b> <a href="http://bit.ly/LgtUWx">checker-266.tar.bz2</a></p>
-   <p><b>highlights:</b></p>
-
-<p>Contains numerous stability fixes over checker-266, especially when analyzing C++11 code.</p>
-
-<h4 id="checker_265">checker-265</h4>
-<p><b>built:</b> May 8, 2012</br>
-   <b>download:</b> <a href="http://bit.ly/JceZBE">checker-265.tar.bz2</a></p>
-   <p><b>highlights:</b></p>
-
-<p>This release contains a fix for a major crasher introduced in checker-264, and various refinements to
-improve the precision and reduce the false positive rate of the analyzer. It also enables a new unix.MallocSizeof check, which reports 
-inconsistencies between the casted type of the return value of a 'malloc/calloc/realloc' call and the operand 
-of sizeof expressions contained within its argument(s).</p>
-
-<h4 id="checker_264">checker-264</h4>
-
-<p><b>built:</b> April 26, 2012</br>
-  <b>download:</b> <a href="http://bit.ly/JATSI8">checker-264.tar.bz2</a></p>
-  <p><b>highlights:</b></p>
-
-<p>This release contains misc. bug fixes and performance enhancements over checker-263, including
-  a reduction of some kinds of false positives related to the malloc() checker.</p>
-
-<h4 id="checker_263">checker-263</h4>
-
-<p><b>built:</b> March 22, 2012</br>
-<p><b>highlights:</b></p>
-
-<ul>
-<li>Fixes several serious bugs with inter-procedural analysis, including a case where retain/releases would be "double-counted".</li>
-</ul>
-
-<h4 id="checker_262">checker-262</h4>
-
-<p><b>built: </b>March 15, 2012</br>
-<p><b>highlights:</b></p>
-
-<ul>
-  <li>Enables experimental interprocedural analysis (within a file), which greatly amplifies the analyzer's ability to find issues.</li>
-  <li>Many bug fixes to the malloc/free checker.</li>
-  <li>Support for new Objective-C NSArray/NSDictionary/NSNumber literals syntax, and Objective-C container subscripting.</li>
-</ul>
-
-<p>NOTE: This build contains new interprocedural analysis that allows the analyzer to find more complicated bugs that span function boundaries.  It may have problems, performance issues, etc.  We'd like to <a href="/filing_bugs.html">hear about them</a>.
-
-<h4 id="checker_261">checker-261</h4>
-
-<p><b>built: </b>February 22, 2012<br>
-<p><b>highlights:</b></p>
-
-<ul>
-  <li>Contains a new experimental malloc/free checker.</li>
-  <li>Better support for projects using ARC.</li>
-  <li>Warns about null pointers passed as arguments to C string functions.</li>
-  <li>Warns about common anti-patterns in 'strncat' size argument, which can lead to buffer overflows.</li>
-  <li>set-xcode-analyzer now supports self-contained Xcode.app (Xcode 4.3 and later).</li>
-  <li>Contains a newer version of the analyzer than Xcode 4.3.</li>
-  <li>Misc. bug fixes and performance work.</li>
-</ul>
-
-<h4 id="checker_260">checker-260</h4>
-
-<p><b>built: </b>January 25, 2012<br>
-<p><b>highlights:</b></p>
-
-<p>This is essentially the same as checker-259, but enables the following <i>experimental</i> checkers (please provide feedback):</p>
-
-<ul>
-  <li>Warns about unsafe uses of CFArrayCreate, CFSetCreate, and CFDictionaryCreate</li>
-  <li>Warns about unsafe uses of getpw, gets, which are sources of buffer overflows</li>
-  <li>Warns about unsafe uses of mktemp and mktemps, which can lead to insecure temporary files</li>
-  <li>Warns about unsafe uses of vfork, which is <a href="https://www.securecoding.cert.org/confluence/display/seccode/POS33-C.+Do+not+use+vfork()">insecure</a> to use</li>
-  <li>Warns about not checking the return values of setuid, setgid, seteuid, setegid, setreuid, setregid (another security issue)</li>
-</ul>
-
-<h4 id="checker_259">checker-259</h4>
-
-<p><b>built: </b>January 25, 2012<br>
-<p><b>highlights:</b></p>
-
-<ul>
-  <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li>
-  <li>Significant performance optimizations to reduce memory usage of the analyzer.</li>
-  <li>Tweaks to scan-build to have it work more easily with Xcode projects using Clang.</li>
-  <li>Numerous bug fixes to better support code using ARC.</li>
-</ul>
-
-<h4 id="checker_258">checker-258</h4>
-
-<p><b>built: </b>October 13, 2011<br>
-<p><b>highlights:</b></p>
-
-<ul>
-  <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li>
-  <li>Adds a new security checker for looking at correct uses of the Mac OS KeyChain API.</li>
-  <li>Supports ARC (please file bugs where you see issues)</li>
-  <li>Major under-the-cover changes.  This should result in more precise results in some cases, but this is laying the groundwork for major improvements.  Please file bugs where you see regressions or issues.</li>
-</ul>
-    
-<h4 id="checker_257">checker-257</h4>
-
-<p><b>built: </b>May 25, 2011<br>
-<p><b>highlights:</b></p>
-
-<ul>
-  <li>The analyzer is now far more aggressive with checking conformance with Core Foundation conventions.  Any function that returns a CF type must now obey the Core Foundation naming conventions, or use the <a href="/annotations.html#attr_cf_returns_retained">cf_returns_retained</a> or <a href="/annotations.html#attr_cf_returns_not_retained">cf_returns_not_retained</a> annotations.</li>
-  <li>Fixed a serious regression where the analyzer would not analyze Objective-C methods in class extensions.</li>
-  <li>Misc. bug fixes to improve analyzer precision.
-  </li>
-</ul>
-
-<h4 id="checker_256">checker-256</h4>
-
-<p><b>built: </b>April 13, 2011<br>
-<p><b>highlights:</b></p>
-
-<ul>
-  <li>Lots of bug fixes and improvements to analyzer precision (fewer false positives, possibly more bugs found).
-  <li>Introductory analysis support for C++ and Objective-C++.
-</ul>
-
-<p>This build contains basic support for C++ and Objective-C++ that is ready to be tried out
-  by general users.  It is still in its infancy, but establishes a baseline for things to come.  The main hope is that it can find some
-  issues and have a reasonable false positive rate.</p>
-  
-<p><b>Please</b> <a href="/filing_bugs.html">file bugs</a> when you see issues of any kind so we can assess
-  where development on C++ analysis support needs to be focused.</p>
-  
-<p>To try out C++ analysis support, it should work out of the box using <tt>scan-build</tt>.  If you are using this checker build
-  as a replacement to the analyzer bundled with Xcode, first use the <tt>set-xcode-analyzer</tt> script to <a href="/xcode.html">change Xcode to use
-  your version of the analyzer</a>.  You will then need to modify one configuration file in Xcode to enable C++ analysis support.  This can
-  be done with the following steps:</p>
-  
-<ol>
-  <li>Find the clang .xcspec file:
-<pre>$ cd /Developer/Library
-$ find . | grep xcspec | grep Clang
-./Xcode/<b><SNIP></b>/Clang LLVM 1.0.xcplugin/Contents/Resources/Clang LLVM 1.0.xcspec
-</pre></li>
-  <li>The exact location of the file may vary depending on your installation of Xcode.  Edit that file, and look for the string "--analyze":
-<pre>
-  SourceFileOption = "--analyze";
-  FileTypes = (
-      "sourcecode.c.c",
-      "sourcecode.c.objc",
-  );
-  ...
-</pre>
-  Change the "FileTypes" entry to:
-<pre>
-  FileTypes = (
-      "sourcecode.c.c",
-      "sourcecode.c.objc",
-      "sourcecode.cpp.cpp",
-      "sourcecode.cpp.objcpp",
-  );
-</pre></li>
-<li>Restart Xcode.</li>
-</ol>
-
-<h4 id="checker_255">checker-255</h4>
-
-<p><b>built: </b> February 11, 2011<br>
-<p><b>highlights:</b></p>
-
-<ul>
-<li>Mac OS X builds are now Intel <tt>i386</tt> and <tt>x86_64</tt> only (no <tt>ppc</tt> support)</li>
-<li>Turns on new <tt>-init</tt> method checker by default</li>
-<li>Reduces memory usage of analyzer by 10%</li>
-<li>Misc. fixes to reduce false positives on dead stores and idempotent operations.</li>
-</ul>
-
-<h4 id="checker_254">checker-254</h4>
-
-<p><b>built: </b> January 27, 2011<br>
-<p><b>highlights:</b></p>
-
-<ul>
-<li>Introduces new <tt>-init</tt> method checker to check if a super class's init method is properly called.</li>
-<li>Objective-C retain/release checker now reasons about calls to property accessor methods (setter/getter).</li>
-<li>Introduces new attribute <a href="annotations.html#attr_ns_consumes_self">ns_consumes_self</a> to educate the Objective-C retain/release checker about custom "init-like" methods that do not follow the standard Cocoa naming conventions.</li>
-<li>Introduces new attributes <a href="annotations.html#attr_ns_consumed">ns_consumed</a> and <a href="annotations.html#attr_cf_consumed">cf_consumed</a> to educate the Objective-C retain/release checker about methods/functions that decrement the reference count of a parameter.</li>
-</ul>
-
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/scan-build.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/scan-build.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/scan-build.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,344 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>scan-build: running the analyzer from the command line</title>
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>
-  <script type="text/javascript" src="scripts/dbtree.js"></script>
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-
-<h1>scan-build: running the analyzer from the command line</h1>
-
-<table style="margin-top:0px" width="100%" cellpadding="0px" cellspacing="0">
-<tr><td>
-
-<h3>What is it?</h3>
-<p><b>scan-build</b> is a command line utility that enables a user to run the
-static analyzer over their codebase as part of performing a regular build (from
-the command line).</p>
-
-<h3>How does it work?</h3>
-<p>During a project build, as source files are compiled they are also analyzed
-in tandem by the static analyzer.</p>
-
-<p>Upon completion of the build, results are then presented to the user within a
-web browser.</p>
-
-<h3>Will it work with any build system?</h3>
-<p><b>scan-build</b> has little or no knowledge about how you build your code.
-It works by overriding the <tt>CC</tt> and <tt>CXX</tt> environment variables to
-(hopefully) change your build to use a "fake" compiler instead of the
-one that would normally build your project. This fake compiler executes either 
-<tt>clang</tt> or <tt>gcc</tt> (depending on the platform) to compile your 
-code and then executes the static analyzer to analyze your code.</p>
-
-<p>This "poor man's interposition" works amazingly well in many cases
-and falls down in others. Please consult the information on this page on making
-the best use of <b>scan-build</b>, which includes getting it to work when the
-aforementioned hack fails to work.</p>
-
-</td>
-<td style="padding-left:10px; text-align:center">
-  <img src="images/scan_build_cmd.png" width="450px" alt="scan-build"><br>
-  <a href="images/analyzer_html.png"><img src="images/analyzer_html.png" width="450px" alt="analyzer in browser"></a>
-<br><b>Viewing static analyzer results in a web browser</b>
-</td></tr></table>
-
-<h2>Contents</h2>
-
-<ul id="collapsetree" class="dbtree onclick multiple">
-<li><a href="#scanbuild">Getting Started</a>
- <ul>
-  <li><a href="#scanbuild_basicusage">Basic Usage</a></li>
-  <li><a href="#scanbuild_otheroptions">Other Options</a></li>
-  <li><a href="#scanbuild_output">Output of scan-build</a></li>
- </ul>
-</li>
-<li><a href="#recommendedguidelines">Recommended Usage Guidelines</a>
- <ul>
-  <li><a href="#recommended_debug">Always Analyze a Project in its "Debug" Configuration</a></li>
-  <li><a href="#recommended_verbose">Use Verbose Output when Debugging scan-build</a></li>
-  <li><a href="#recommended_autoconf">Run './configure' through scan-build</a></li>
- </ul>
-</li>
-<li><a href="#iphone">Analyzing iPhone Projects</a></li>
-</ul>
-
-<h2 id="scanbuild">Getting Started</h2>
-
-<p>The <tt>scan-build</tt> command can be used to analyze an entire project by
-essentially interposing on a project's build process. This means that to run the
-analyzer using <tt>scan-build</tt>, you will use <tt>scan-build</tt> to analyze
-the source files compiled by <tt>gcc</tt>/<tt>clang</tt> during a project build. 
-This means that any files that are not compiled will also not be analyzed.</p>
-
-<h3 id="scanbuild_basicusage">Basic Usage</h3>
-
-<p>Basic usage of <tt>scan-build</tt> is designed to be simple: just place the
-word "scan-build" in front of your build command:</p>
-
-<pre class="code_example">
-$ <span class="code_highlight">scan-build</span> make
-$ <span class="code_highlight">scan-build</span> xcodebuild
-</pre>
-
-<p>In the first case <tt>scan-build</tt> analyzes the code of a project built
-with <tt>make</tt> and in the second case <tt>scan-build</tt> analyzes a project
-built using <tt>xcodebuild</tt>.<p>
-  
-<p>Here is the general format for invoking <tt>scan-build</tt>:</p>
-
-<pre class="code_example">
-$ <span class="code_highlight">scan-build</span> <i>[scan-build options]</i> <span class="code_highlight"><command></span> <i>[command options]</i>
-</pre>
-
-<p>Operationally, <tt>scan-build</tt> literally runs <command> with all of the
-subsequent options passed to it. For example, one can pass <tt>-j4</tt> to
-<tt>make</tt> get a parallel build over 4 cores:</p>
-
-<pre class="code_example">
-$ scan-build make <span class="code_highlight">-j4</span>
-</pre>
-
-<p>In almost all cases, <tt>scan-build</tt> makes no effort to interpret the
-options after the build command; it simply passes them through. In general,
-<tt>scan-build</tt> should support parallel builds, but <b>not distributed
-builds</b>.</p>
-
-<p>It is also possible to use <tt>scan-build</tt> to analyze specific
-files:</p>
-
-<pre class="code_example">
- $ scan-build gcc -c <span class="code_highlight">t1.c t2.c</span>
-</pre>
-
-<p>This example causes the files <tt>t1.c</tt> and <tt>t2.c</tt> to be analyzed.
-</p>
-
-<h3 id="scanbuild_otheroptions">Other Options</h3>
-
-<p>As mentioned above, extra options can be passed to <tt>scan-build</tt>. These
-options prefix the build command. For example:</p>
-
-<pre class="code_example">
- $ scan-build <span class="code_highlight">-k -V</span> make
- $ scan-build <span class="code_highlight">-k -V</span> xcodebuild
-</pre>
-
-<p>Here is a subset of useful options:</p>
-
-<table class="options">
-<thead><tr><td>Option</td><td>Description</td></tr></thead>
-
-<tr><td><b>-o</b></td><td>Target directory for HTML report files. Subdirectories
-will be created as needed to represent separate "runs" of the analyzer. If this
-option is not specified, a directory is created in <tt>/tmp</tt> to store the
-reports.</td></tr>
-
-<tr><td><b>-h</b><br><i>(or no arguments)</i></td><td>Display all
-<tt>scan-build</tt> options.</td></tr>
-
-<tr><td><b>-k</b><br><b>--keep-going</b></td><td>Add a "keep on
-going" option to the specified build command. <p>This option currently supports
-<tt>make</tt> and <tt>xcodebuild</tt>.</p> <p>This is a convenience option; one
-can specify this behavior directly using build options.</p></td></tr>
-
-<tr><td><b>-v</b></td><td>Verbose output from scan-build and the analyzer. <b>A
-second and third "-v" increases verbosity</b>, and is useful for filing bug
-reports against the analyzer.</td></tr>
-
-<tr><td><b>-V</b></td><td>View analysis results in a web browser when the build
-command completes.</td></tr> </table>
-
-<p>A complete list of options can be obtained by running <tt>scan-build</tt>
-with no arguments.</p>
-
-<h3 id="scanbuild_output">Output of scan-build</h3>
-
-<p>
-The output of scan-build is a set of HTML files, each one which represents a
-separate bug report. A single <tt>index.html</tt> file is generated for
-surveying all of the bugs. You can then just open <tt>index.html</tt> in a web
-browser to view the bug reports.
-</p>
-
-<p>
-Where the HTML files are generated is specified with a <b>-o</b> option to
-<tt>scan-build</tt>. If <b>-o</b> isn't specified, a directory in <tt>/tmp</tt>
-is created to store the files (<tt>scan-build</tt> will print a message telling
-you where they are). If you want to view the reports immediately after the build
-completes, pass <b>-V</b> to <tt>scan-build</tt>.
-</p>
-
-
-<h2 id="recommendedguidelines">Recommended Usage Guidelines</h2>
-
-<p>This section describes a few recommendations with running the analyzer.</p>
-
-<h3 id="recommended_debug">ALWAYS analyze a project in its "debug" configuration</h3>
-
-<p>Most projects can be built in a "debug" mode that enables assertions.
-Assertions are picked up by the static analyzer to prune infeasible paths, which
-in some cases can greatly reduce the number of false positives (bogus error
-reports) emitted by the tool.</p>
-
-<h3 id="recommend_verbose">Use verbose output when debugging scan-build</h3>
-
-<p><tt>scan-build</tt> takes a <b>-v</b> option to emit verbose output about
-what it's doing; two <b>-v</b> options emit more information. Redirecting the
-output of <tt>scan-build</tt> to a text file (make sure to redirect standard
-error) is useful for filing bug reports against <tt>scan-build</tt> or the
-analyzer, as we can see the exact options (and files) passed to the analyzer.
-For more comprehensible logs, don't perform a parallel build.</p>
-
-<h3 id="recommended_autoconf">Run './configure' through scan-build</h3>
-
-<p>If an analyzed project uses an autoconf generated <tt>configure</tt> script,
-you will probably need to run <tt>configure</tt> script through
-<tt>scan-build</tt> in order to analyze the project.</p>
-
-<p><b>Example</b></p>
-
-<pre class="code_example">
-$ scan-build ./configure
-$ scan-build make
-</pre>
-
-<p>The reason <tt>configure</tt> also needs to be run through
-<tt>scan-build</tt> is because <tt>scan-build</tt> scans your source files by
-<i>interposing</i> on the compiler. This interposition is currently done by
-<tt>scan-build</tt> temporarily setting the environment variable <tt>CC</tt> to
-<tt>ccc-analyzer</tt>. The program <tt>ccc-analyzer</tt> acts like a fake
-compiler, forwarding its command line arguments over to the compiler to perform
-regular compilation and <tt>clang</tt> to perform static analysis.</p>
-
-<p>Running <tt>configure</tt> typically generates makefiles that have hardwired
-paths to the compiler, and by running <tt>configure</tt> through
-<tt>scan-build</tt> that path is set to <tt>ccc-analyzer</tt>.</p>
-
-<!-- 
-<h2 id="Debugging">Debugging the Analyzer</h2>
-
-<p>This section provides information on debugging the analyzer, and troubleshooting
-it when you have problems analyzing a particular project.</p>
-
-<h3>How it Works</h3>
-
-<p>To analyze a project, <tt>scan-build</tt> simply sets the environment variable
-<tt>CC</tt> to the full path to <tt>ccc-analyzer</tt>. It also sets a few other
-environment variables to communicate to <tt>ccc-analyzer</tt> where to dump HTML
-report files.</p>
-
-<p>Some Makefiles (or equivalent project files) hardcode the compiler; for such
-projects simply overriding <tt>CC</tt> won't cause <tt>ccc-analyzer</tt> to be
-called. This will cause the compiled code <b>to not be analyzed.</b></p> If you
-find that your code isn't being analyzed, check to see if <tt>CC</tt> is
-hardcoded. If this is the case, you can hardcode it instead to the <b>full
-path</b> to <tt>ccc-analyzer</tt>.</p>
-
-<p>When applicable, you can also run <tt>./configure</tt> for a project through
-<tt>scan-build</tt> so that configure sets up the location of <tt>CC</tt> based
-on the environment passed in from <tt>scan-build</tt>:
-
-<pre>
-  $ scan-build <b>./configure</b>
-</pre>
-
-<p><tt>scan-build</tt> has special knowledge about <tt>configure</tt>, so it in
-most cases will not actually analyze the configure tests run by
-<tt>configure</tt>.</p>
-
-<p>Under the hood, <tt>ccc-analyzer</tt> directly invokes <tt>gcc</tt> to
-compile the actual code in addition to running the analyzer (which occurs by it
-calling <tt>clang</tt>). <tt>ccc-analyzer</tt> tries to correctly forward all
-the arguments over to <tt>gcc</tt>, but this may not work perfectly (please
-report bugs of this kind).
- -->
-
-<h2 id="iphone">Analyzing iPhone Projects</h2>
-
-<p>Conceptually Xcode projects for iPhone applications are nearly the same as
-their cousins for desktop applications. <b>scan-build</b> can analyze these
-projects as well, but users often encounter problems with just building their
-iPhone projects from the command line because there are a few extra preparative
-steps they need to take (e.g., setup code signing).</p>
-
-<h3>Recommendation: use "Build and Analyze"</h3>
-
-<p>The absolute easiest way to analyze iPhone projects is to use the <a
-href="http://developer.apple.com/mac/library/featuredarticles/StaticAnalysis/index.html"><i>Build
-and Analyze</i> feature in Xcode 3.2</a> (which is based on the Clang Static
-Analyzer). There a user can analyze their project with the click of a button
-without most of the setup described later.</p>
-
-<p><a href="/xcode.html">Instructions are available</a> on this
-website on how to use open source builds of the analyzer as a replacement for
-the one bundled with Xcode.</p>
-
-<h3>Using scan-build directly</h3>
-
-<p>If you wish to use <b>scan-build</b> with your iPhone project, keep the
-following things in mind:</p>
-
-<ul>
- <li>Analyze your project in the <tt>Debug</tt> configuration, either by setting
-this as your configuration with Xcode or by passing <tt>-configuration
-Debug</tt> to <tt>xcodebuild</tt>.</li>
- <li>Analyze your project using the <tt>Simulator</tt> as your base SDK. It is
-possible to analyze your code when targeting the device, but this is much
-easier to do when using Xcode's <i>Build and Analyze</i> feature.</li>
- <li>Check that your code signing SDK is set to the simulator SDK as well, and make sure this option is set to <tt>Don't Code Sign</tt>.</li>
-</ul>
-
-<p>Note that you can most of this without actually modifying your project. For
-example, if your application targets iPhoneOS 2.2, you could run
-<b>scan-build</b> in the following manner from the command line:</p>
-
-<pre class="code_example">
-$ scan-build xcodebuild -configuration Debug -sdk iphonesimulator2.2
-</pre>
-
-Alternatively, if your application targets iPhoneOS 3.0:
-
-<pre class="code_example">
-$ scan-build xcodebuild -configuration Debug -sdk iphonesimulator3.0
-</pre>
-
-<h3>Gotcha: using the right compiler</h3>
-
-<p>Recall that <b>scan-build</b> analyzes your project by using a compiler to
-compile the project and <tt>clang</tt> to analyze your project. The script uses 
-simple heuristics to determine which compiler should be used (it defaults to 
-<tt>clang</tt> on Darwin and <tt>gcc</tt> on other platforms). When analyzing
-iPhone projects, <b>scan-build</b> may pick the wrong compiler than the one
-Xcode would use to build your project. For example, this could be because 
-multiple versions of a compiler may be installed on your system, especially if 
-you are developing for the iPhone.</p>
-
-<p>When compiling your application to run on the simulator, it is important that <b>scan-build</b>
-finds the correct version of <tt>gcc/clang</tt>. Otherwise, you may see strange build
-errors that only happen when you run <tt>scan-build</tt>.
-
-<p><b>scan-build</b> provides the <tt>--use-cc</tt> and <tt>--use-c++</tt>
-options to hardwire which compiler scan-build should use for building your code.
-Note that although you are chiefly interested in analyzing your project, keep in
-mind that running the analyzer is intimately tied to the build, and not being
-able to compile your code means it won't get fully analyzed (if at all).</p>
-
-<p>If you aren't certain which compiler Xcode uses to build your project, try
-just running <tt>xcodebuild</tt> (without <b>scan-build</b>). You should see the
-full path to the compiler that Xcode is using, and use that as an argument to
-<tt>--use-cc</tt>.</p>
-
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/scripts/dbtree.js
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/scripts/dbtree.js	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/scripts/dbtree.js	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7 5,r,Q,u;7 17=[];5=H;1i();9(!1Z.1j.20){1Z.1j.20=k(a){C[C.D]=a}}7 19=\'35+/\';k 36(a){7 b,R=\'\',i=0;I(;i<a.D;i+=4){b=(19.1k(a.1l(i))&1a)<<18|(19.1k(a.1l(i+1))&1a)<<12|(19.1k(a.1l(i+2))&1a)<<6|19.1k(a.1l(i+3))&1a;R+=37.38((b&39)>>16,(b&3a)>>8,b&1a)}9(a.21(i-2)==22)1m=R.23(0,R.D-2);s 9(a.21(i-1)==22)1m=R.23(0,R.D-1);s 1m=R;z 3b(1m)}7 A={24:k(){7 a=l.E(\'X\');I(7 i=0;i<a.D;i++){9(a[i].h.F(/\\1n\\b/)==-1)3c;7 b=a[i];9(b.h.F(/\\1E\\b/)!=-1){7 c=b.E(\'a\');I(7 j=0;j<c.D;j++){m.B(c[j],\'25\',1F,o);m.B(c[j],\'26\',1G,o);m.B(c[j],\'1o\',1b,o);c[j].Y=\'1H:1I(0)\'}}7 d=b.E(\'X\');I(7 j=0;j<d.D;j++){7 e=d[j].p;e.27=J;9(b.h.F(/\\3d\\b/)!=-1){m.B(e,\'w\',A.w,o);9(b.h.F(/\\3e\\b/)==-1){e.E(\'a\')[0].Y=\'1H:1I(0)\'}}s{7 t=b.h.3f(/1J(.*)1J/);t=t?t[1]:H;m.B(e,\'3g\',A.28(e,t),o);m.B(e,\'3h\',A.29(e),o)}e.E(\'a\')[0].h+=\' 2a\'}9(b.h.F(/\\3i\\b/)!=-1)A.2b(b.v)}},2b:k(a){7 b=l.G(a+\'3j\');9(b){A.1p(b);b=b.p;1c(!!b&&(b.v!=a)){9((!b.h)||(b.h==\'\')){b.h=\'w\'}s{b.h+=\' w\'}9(b.1d.K.L()==\'a\')b.1d.h+=\' w\';b=b.p}}},29:k(a){z k(){A.1p(a)}},28:k(a,b){z k(){A.2c(a,b)}},1p:k(a){7 b=a;3k(b.2d);I(7 i=0;i<b.S.D;i++){7 c=b.S[i];9(c.K.L()==\'X\'){b.E(\'a\')[0].h+=\' w\';b.h+=\' w\';c.h+=\' w\'}}},2c:k(a,b){7 c=a;c.2d=3l(k(){A.1q(c)},b)},1q:k(a){I(7 i=0;i<a.S.D;i++){7 b=a.S[i];9(b.K.L()==\'X\'){a.E(\'a\')[0].h=a.E(\'a\')[0].h.1K(/w/g,\'\');b.h=b.h.1K(/w/g,\'\');a.h=a.h.1K(/w/g,\'\')}}},w:k(e){9(M.T){M.T.1L=J}9(e&&e.1r){e.1r()}7 a=(M.T)?M.T.2e:(e)?e.1M:H;9(!a||!(a=A.1N(a,\'2f\')))z;9(a.E(\'a\')[0].h.F(/\\2g\\b/)==-1){7 b=1e(a);9(2h(b)){9(l.G(b).h.F(/\\3m\\b/)==-1){I(n=0;n<a.p.S.D;n++){N=a.p.S[n];9(N.K.L()==\'2f\'){9(N.h.F(/\\2g\\b/)!=-1)A.1q(a.p.S[n])}}}}A.1p(a)}s{A.1q(a)}9(2h(1e(a))){z J}s{z o}},1N:k(a,b){9(a.K.L!
 ()!=b&&a..K.L()!=\'U\'){z A.1N(a.p,b)}s 9(a.K.L()==\'U\'){z H}s{z a}}};k 1i(){3n{u=M.2i?O 2i():O 3o(\'3p.3q\')}3r(e){2j(\'2k 2l: 3s 3t 3u 3v 3w-3x!\')}}k 1O(a,x){a.1f.3y=x+\'2m\'}k 1P(a,y){a.1f.3z=y+\'2m\'}k 1e(a){1c(a.h.F(/\\1n\\b/)==-1){a=a.p}9((a.h.F(/\\1n\\b/)!=-1)&&(a.h.F(/\\1E\\b/)!=-1)){I(i=0;i<17.D;i++){9(a.v==17[i].q)z i}}z a.v}k 1G(a){a=O m(a);r=a.P.p.p.v;7 b=r.1s(\'Z\');r=b[1];5=17[1e(a.P)];7 c=l.G(5.q+\'10\').3A(J);7 d=l.G(5.q+\'10\');d.p.2n(d);c.v=5.q+\'10\';l.U.2o(c);1O(c,a.x);1P(c,a.y);c.1f.1Q=\'2p\';a.1t();m.B(l,\'1u\',1R,o);z o}k 1R(c){c=O m(c);7 e;7 a=c.P;7 b=a;1c((b!=H)&&(b.K.L()!=\'U\')){9(b.v==5.q+\'10\')1g;b=b.p}9((b!=H)&&(b.v==5.q+\'10\')){3B(a.p.h){1S\'3C\':a.Y=5.V+\'11=1T&N=\'+5.13;1g;1S\'1T\':a.Y=5.V+\'11=1T&N=\'+r;1g;1S\'2q\':a.Y=5.V+\'11=2q&N=\'+r;1g;3D:e=5.2r+\'?q=\'+5.q;e+=\'&13=\'+5.13;9(a.p.h==\'3E\'){e+=\'&11=2s&N=\'+r+\'&2t=\'+5.13}s{e+=\'&11=\'+a.p.h+\'&N=\'+r}7 d=O 2u();7 f=d.2v();e+=\'&2w=\'+f;e+=\'&1v=\'+5.1v;e+=\'&1w=\'+5.1w;e+=\'&1x=\'+5.1x;e+=\'&1y=\'+5.1y;e+=\'&1z=\'+5.1z;e+=\'&1A=\'+5.1A;e+=\'&v=\'+5.v;e+=\'&1B=\'+5.1B;e+=\'&1C=\'+5.1C;e+=\'&V=\'+5.V;u.2x=1U;u.1V(\'2y\',e,J);u.14(\'2z\',\'2A-2B\');u.14(\'2C-2D\',\'2E-2F\');u.14(\'2G-2H-2I\',l.2J);u.2K(H)}}7 g=l.G(5.q+\'10\');9(g){g.1f.1Q=\'3F\'};m.1h(l,\'1u\',1R,o)}k 1F(a){a=O m(a);r=a.P.p.p.v;7 b=r.1s(\'Z\');r=b[1];5=17[1e(a.P)];9(!l.G(5.q+\'15\')){7 c=(!l.G(5.q+\'15\'))?l.3G(\'3H\'):l.G(5.q+\'15\');c.v=5.q+\'15\';c.2L=a.P.1d.3I;l.U.2o(c)}m.B(l,\'2M\',1W,o);m.B(l,\'1u\',1X,o);m.B(l,\'1o\',1b,o);a.1t();z o}k 1b(a){9(!a&&M.T)a=M.T;9(a!=H){9(3J(a.1Y)==\'k\')a.1Y();s a.2N=o}z o}k 1W(a){a=O m(a);7 b=l.G(5.q+\'15\');1O(b,a.x);1P(b,a.y);b.1f.1Q=\'2p\';a.1t();z o}k 1X(a){a=O m(a);7 b=a.P.p;9(b.K.L()==\'a\'){r=5.q+\'Z\'+r;9(r!=b.p.v){7 c=J;7 d=b.p;1c(!!d&&(d.v!=5.q)){9(d.v==r){c=o;1g}s{d=d.p}}9(c==J){7 e=r.1s(\'Z\');r=e[1];Q=b.p.v;7 f=Q.1s(\'Z\');Q=f[1];2O(a)}}}7 g=l.G(5.q+\'15\');9(g){g.p.2n(g)};m.1h(l,\'2M\',1W,o);m.1h(l,\'1u\',1X,o);m.1h(l,\'1o\',1b,o)}k 2O(a){7 d=O 2u();7 b=d.2v();7 c;c=5.2r+\'?q=\'+5.q+\'&11=2s&13=\'+5.13+\!
 '&N=\'+r+\'&2t=\'+Q+\'&2w=\'+b;c+=\'&1v=\'+5.1v;c+=\'&1w=\'+5.1w;c+=\'&1x=\'+5.1x;c+=\'&1y=\'+5.1y;c+=\'&1z=\'+5.1z;c+=\'&1A=\'+5.1A;c+=\'&v=\'+5.v;c+=\'&1B=\'+5.1B;c+=\'&1C=\'+5.1C;c+=\'&V=\'+5.V;u.2x=1U;u.1V(\'2y\',c,J);u.14(\'2z\',\'2A-2B\');u.14(\'2C-2D\',\'2E-2F\');u.14(\'2G-2H-2I\',l.2J);u.2K(H)}k 2P(){7 a=(!!Q)?Q:r;a=5.q+\'Z\'+a;a=l.G(a);9(a){a=a.E(\'X\')[0];1c(!!a&&(a.h.F(/\\1n\\b/)==-1)&&(a.h.F(/\\1E\\b/)==-1)){9((!a.h)||(a.h==\'\')){a.h=\'w\'}s{a.h+=\' w\'}9(a.1d.K.L()==\'a\')a.1d.h+=\' w\';a=a.p}}}k 3K(a,b){9(a!=\'3L\'){3M(a+".3N=\'"+b.2Q[b.2R].2S+"\'")}s{M.1V(b.2Q[b.2R].2S)}}k 2T(a){7 b=l.G(a);7 c=b.E(\'X\');I(7 j=0;j<c.D;j++){7 d=c[j].p;d.27=J;m.B(d,\'w\',A.w,o);d.E(\'a\')[0].h+=\' 2a\'}7 e=b.E(\'a\');I(7 j=0;j<e.D;j++){m.B(e[j],\'25\',1F,o);m.B(e[j],\'26\',1G,o);m.B(e[j],\'1o\',1b,o);e[j].Y=\'1H:1I(0)\'}}k 1U(){9(u.3O==4){9(u.3P==3Q){l.G(5.q+\'3R\').2L=u.3S;2T(5.q);2P();1i()}s{2j(\'2k 2l: 3T, 3U 3V 1J 3W a 3X 3Y 3Z 40:\\n\'+u.41);1i()}}}k m(a){C.W=a?a:M.T;C.P=a.1M?a.1M:a.2e;C.x=a.2U?(a.2U):(a.42+2V.2W(l.U.2X,l.2Y.2X));C.y=a.2Z?(a.2Z):(a.43+2V.2W(l.U.30,l.2Y.30))}m.1j.44=k(){z\'m [ x = \'+C.x+\', y = \'+C.y+\' ]\'};m.1j.1t=k(){9(C.W.1r){C.W.1r();C.W.1Y()}s 9(C.W.1L){C.W.1L=J;C.W.2N=o}};m.B=k(a,b,c,d){9(l.31){a.31(b,c,d)}s 9(l.32){a.32(\'1D\'+b,c,d)}s{a[\'1D\'+b]=c}};m.1h=k(a,b,c,d){9(l.33){a.33(b,c,d)}s 9(l.34){a.34(\'1D\'+b,c,d)}s{a[\'1D\'+b]=H}};m.B(M,\'45\',A.24,o);',62,254,'|||||instance||var||if||||||||className|||function|document|Evt||false|parentNode|instanceName|nid|else||client|id|click|||return|dbTree|addEvent|this|length|getElementsByTagName|search|getElementById|null|for|true|nodeName|toLowerCase|window|node|new|source|nto|decOut|childNodes|event|body|editpage|evt|ul|href|_|_options|action||rootnode|setRequestHeader|_tip||dbtreeObj||b64s|0xff|PreventDefault|while|firstChild|getObj|style|break|removeEvent|createClient|prototype|indexOf|charAt|undecOut|bdbtree|selectstart|mOver|mOut|stopPropagation|split|consume|mouseup|type|query|datasource|username|password|table|parent|contentfield|on|!
 bedit|dragPress|contextMenu|javascript|void|to|replace|cancelBubble|target|getTarget|setX|setY|display|contextAction|case|add|callback|open|dragMove|dragRelease|preventDefault|Array|push|charCodeAt|61|substring|init|mousedown|contextmenu|hasSubMenu|getMoutFor|getMoverFor|subMenu|mExp|mTimeout|timeout|srcElement|li|bclick|isNaN|XMLHttpRequest|alert|DBTree|Error|px|removeChild|appendChild|block|edit|tagpath|move|nodeto|Date|getTime|time|onreadystatechange|get|Pragma|no|cache|Cache|Control|must|revalidate|If|Modified|Since|lastModified|send|innerHTML|mousemove|returnValue|dragBoxDropped|expandtree|options|selectedIndex|value|reinit|pageX|Math|max|scrollLeft|documentElement|pageY|scrollTop|addEventListener|attachEvent|removeEventListener|detachEvent|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|decode|String|fromCharCode|0xff0000|0xff00|unescape|continue|bonclick|blinkparent|match|mouseout|mouseover|bexpand|_active|clearTimeout|setTimeout|bmultiple|try|ActiveXObject|Microsoft|XMLHTTP|catch|Your|browser|is|not|Ajax|enabled|left|top|cloneNode|switch|addroot|default|moveroot|none|createElement|div|nodeValue|typeof|jumpTo|blank|eval|location|readyState|status|200|_edit|responseText|Sorry|there|seems|be|problem|retrieving|the|response|statusText|clientX|clientY|toString|load'.split('|'),0,{}))

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/scripts/menu.js
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/scripts/menu.js	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/scripts/menu.js	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,17 +0,0 @@
-startList = function() {
-  if (document.all&&document.getElementById) {
-    navRoot = document.getElementById("nav");
-    for (i=0; i<navRoot.childNodes.length; i++) {
-      node = navRoot.childNodes[i];
-      if (node.nodeName=="LI") {
-        node.onmouseover=function() {
-          this.className+=" over";
-        }
-        node.onmouseout=function() {
-          this.className=this.className.replace(" over", "");
-        }
-      }
-    }
-  }
-}
-window.onload=startList;

Modified: trunk/contrib/llvm/tools/clang/www/analyzer/xcode.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/analyzer/xcode.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/analyzer/xcode.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,145 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <title>Running the analyzer within Xcode</title>
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <script type="text/javascript" src="scripts/menu.js"></script>
-  <script type="text/javascript" src="scripts/dbtree.js"></script>  
-</head>
-<body>
-
-<div id="page">
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-
-<h1>Running the analyzer within Xcode</h1>
-
-<table style="margin-top:0px" width="100%" border="0" cellpadding="0px" cellspacing="0">
-<tr><td>
-
-<h3>What is it?</h3>
-
-<p>Since Xcode 3.2, users have been able to run the Clang Static Analyzer
-<a
-href="https://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/060-Debug_Your_App/debug_app.html#//apple_ref/doc/uid/TP40010215-CH3-SW17">directly
-within Xcode</a>.</p>
-
-<p>It integrates directly with the Xcode build system and
-presents analysis results directly within Xcode's editor.</p>
-
-<h3>Can I use the open source analyzer builds with Xcode?</h3>
-
-<p><b>Yes</b>. Instructions are included below.</p>
-
-</td>
-<td style="padding-left:10px; text-align:center">
-  <a href="images/analyzer_xcode.png"><img src="images/analyzer_xcode.png" width="620px" alt="analyzer in xcode"></a>
-<br><b>Viewing static analyzer results in Xcode</b>
-</td></tr></table>
-
-<h3>Key features:</h3>
-<ul>
-  <li><b>Integrated workflow:</b> Results are integrated within Xcode. There is
-  no experience of using a separate tool, and activating the analyzer requires a
-  single keystroke or mouse click.</li>
-  <li><b>Transparency:</b> Works effortlessly with Xcode projects (including iPhone projects).
-  <li><b>Cons:</b> Doesn't work well with non-Xcode projects. For those,
-  consider using <a href="scan-build.html"><b>scan-build</b></a>.
-</ul>
-
-
-<h2>Getting Started</h2>
-
-<p>Xcode is available as a free download from Apple on the <a
-href="https://itunes.apple.com/us/app/xcode/id497799835?mt=12">Mac
-App Store</a>, with <a 
-href="https://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/060-Debug_Your_App/debug_app.html#//apple_ref/doc/uid/TP40010215-CH3-SW17">instructions
-available</a> for using the analyzer.</p>
-
-<h2>Using open source analyzer builds with Xcode</h2>
-
-<p>By default, Xcode uses the version of <tt>clang</tt> that came bundled with
-it to analyze your code. It is possible to change Xcode's behavior to use an
-alternate version of <tt>clang</tt> for this purpose while continuing to use
-the <tt>clang</tt> that came with Xcode for compiling projects.</p>
-
-<h3>Why try open source builds?</h3>
-
-<p>The advantage of using open source analyzer builds (provided on this website)
-is that they are often newer than the analyzer provided with Xcode, and thus can
-contain bug fixes, new checks, or simply better analysis.</p>
-
-<p>On the other hand, new checks can be experimental, with results of variable
-quality. Users are encouraged to <a href="filing_bugs.html">file bug reports</a>
-(for any version of the analyzer) where they encounter false positives or other
-issues.</p>
-
-<h3>set-xcode-analyzer</h3>
-
-<p>Starting with analyzer build checker-234, analyzer builds contain a command
-line utility called <tt>set-xcode-analyzer</tt> that allows users to change what
-copy of <tt>clang</tt> that Xcode uses for analysis:</p>
-
-<pre class="code_example">
-$ <b>set-xcode-analyzer -h</b>
-Usage: set-xcode-analyzer [options]
-
-Options:
-  -h, --help            show this help message and exit
-  --use-checker-build=PATH
-                        Use the Clang located at the provided absolute path,
-                        e.g. /Users/foo/checker-1
-  --use-xcode-clang     Use the Clang bundled with Xcode
-</pre>
-
-<p>Operationally, <b>set-xcode-analyzer</b> edits Xcode's configuration files
-to point it to use the version of <tt>clang</tt> you specify for static
-analysis. Within this model it provides you two basic modes:</p>
-
-<ul>
-  <li><b>--use-xcode-clang</b>: Switch Xcode (back) to using the <tt>clang</tt> that came bundled with it for static analysis.</li>
-  <li><b>--use-checker-build</b>: Switch Xcode to using the <tt>clang</tt> provided by the specified analyzer build.</li>
-</ul>
-
-<h4>Things to keep in mind</h4>
-
-<ul>
-  <li>You should quit Xcode prior to running <tt>set-xcode-analyzer</tt>.</li>    <li>You will need to run <tt>set-xcode-analyzer</tt> under
-<b><tt>sudo</tt></b> in order to have write privileges to modify the Xcode
-configuration files.</li>
-</ul>
-
-<h4>Examples</h4>
-
-<p><b>Example 1</b>: Telling Xcode to use checker-235:</p>
-
-<pre class="code_example">
-$ pwd
-/tmp
-$ tar xjf checker-235.tar.bz2
-$ sudo checker-235/set-xcode-analyzer --use-checker-build=/tmp/checker-235
-</pre>
-
-<p>Note that you typically won't install an analyzer build in <tt>/tmp</tt>, but
-the point of this example is that <tt>set-xcode-analyzer</tt> just wants a full
-path to an untarred analyzer build.</p>
-
-<p><b>Example 2</b>: Telling Xcode to use a very specific version of <tt>clang</tt>:</p>
-
-<pre class="code_example">
-$ sudo set-xcode-analyzer --use-checker-build=~/mycrazyclangbuild/bin/clang
-</pre>
-
-<p><b>Example 3</b>: Resetting Xcode to its default behavior:</p>
-
-<pre class="code_example">
-$ sudo set-xcode-analyzer --use-xcode-clang
-</pre>
-
-</div>
-</div>
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/builtins.py
===================================================================
--- trunk/contrib/llvm/tools/clang/www/builtins.py	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/builtins.py	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,163 +0,0 @@
-#!/usr/bin/env python
-
-import sys, fileinput
-
-err=0
-
-# Giant associative set of builtin->intrinsic mappings where clang doesn't
-# implement the builtin since the vector operation works by default.
-
-repl_map = {
-'__builtin_ia32_addps': '_mm_add_ps',
-'__builtin_ia32_addsd': '_mm_add_sd',
-'__builtin_ia32_addpd': '_mm_add_pd',
-'__builtin_ia32_addss': '_mm_add_ss',
-'__builtin_ia32_paddb128': '_mm_add_epi8',
-'__builtin_ia32_paddw128': '_mm_add_epi16',
-'__builtin_ia32_paddd128': '_mm_add_epi32',
-'__builtin_ia32_paddq128': '_mm_add_epi64',
-'__builtin_ia32_subps': '_mm_sub_ps',
-'__builtin_ia32_subsd': '_mm_sub_sd',
-'__builtin_ia32_subpd': '_mm_sub_pd',
-'__builtin_ia32_subss': '_mm_sub_ss',
-'__builtin_ia32_psubb128': '_mm_sub_epi8',
-'__builtin_ia32_psubw128': '_mm_sub_epi16',
-'__builtin_ia32_psubd128': '_mm_sub_epi32',
-'__builtin_ia32_psubq128': '_mm_sub_epi64',
-'__builtin_ia32_mulsd': '_mm_mul_sd',
-'__builtin_ia32_mulpd': '_mm_mul_pd',
-'__builtin_ia32_mulps': '_mm_mul_ps',
-'__builtin_ia32_mulss': '_mm_mul_ss',
-'__builtin_ia32_pmullw128': '_mm_mullo_epi16',
-'__builtin_ia32_divsd': '_mm_div_sd',
-'__builtin_ia32_divpd': '_mm_div_pd',
-'__builtin_ia32_divps': '_mm_div_ps',
-'__builtin_ia32_subss': '_mm_div_ss',
-'__builtin_ia32_andpd': '_mm_and_pd',
-'__builtin_ia32_andps': '_mm_and_ps',
-'__builtin_ia32_pand128': '_mm_and_si128',
-'__builtin_ia32_andnpd': '_mm_andnot_pd',
-'__builtin_ia32_andnps': '_mm_andnot_ps',
-'__builtin_ia32_pandn128': '_mm_andnot_si128',
-'__builtin_ia32_orpd': '_mm_or_pd',
-'__builtin_ia32_orps': '_mm_or_ps',
-'__builtin_ia32_por128': '_mm_or_si128',
-'__builtin_ia32_xorpd': '_mm_xor_pd',
-'__builtin_ia32_xorps': '_mm_xor_ps',
-'__builtin_ia32_pxor128': '_mm_xor_si128',
-'__builtin_ia32_cvtps2dq': '_mm_cvtps_epi32',
-'__builtin_ia32_cvtsd2ss': '_mm_cvtsd_ss',
-'__builtin_ia32_cvtsi2sd': '_mm_cvtsi32_sd',
-'__builtin_ia32_cvtss2sd': '_mm_cvtss_sd',
-'__builtin_ia32_cvttsd2si': '_mm_cvttsd_si32',
-'__builtin_ia32_vec_ext_v2df': '_mm_cvtsd_f64',
-'__builtin_ia32_loadhpd': '_mm_loadh_pd',
-'__builtin_ia32_loadlpd': '_mm_loadl_pd',
-'__builtin_ia32_loadlv4si': '_mm_loadl_epi64',
-'__builtin_ia32_cmpeqps': '_mm_cmpeq_ps',
-'__builtin_ia32_cmpltps': '_mm_cmplt_ps',
-'__builtin_ia32_cmpleps': '_mm_cmple_ps',
-'__builtin_ia32_cmpgtps': '_mm_cmpgt_ps',
-'__builtin_ia32_cmpgeps': '_mm_cmpge_ps',
-'__builtin_ia32_cmpunordps': '_mm_cmpunord_ps',
-'__builtin_ia32_cmpneqps': '_mm_cmpneq_ps',
-'__builtin_ia32_cmpnltps': '_mm_cmpnlt_ps',
-'__builtin_ia32_cmpnleps': '_mm_cmpnle_ps',
-'__builtin_ia32_cmpngtps': '_mm_cmpngt_ps',
-'__builtin_ia32_cmpordps': '_mm_cmpord_ps',
-'__builtin_ia32_cmpeqss': '_mm_cmpeq_ss',
-'__builtin_ia32_cmpltss': '_mm_cmplt_ss',
-'__builtin_ia32_cmpless': '_mm_cmple_ss',
-'__builtin_ia32_cmpunordss': '_mm_cmpunord_ss',
-'__builtin_ia32_cmpneqss': '_mm_cmpneq_ss',
-'__builtin_ia32_cmpnltss': '_mm_cmpnlt_ss',
-'__builtin_ia32_cmpnless': '_mm_cmpnle_ss',
-'__builtin_ia32_cmpngtss': '_mm_cmpngt_ss',
-'__builtin_ia32_cmpngess': '_mm_cmpnge_ss',
-'__builtin_ia32_cmpordss': '_mm_cmpord_ss',
-'__builtin_ia32_movss': '_mm_move_ss',
-'__builtin_ia32_movsd': '_mm_move_sd',
-'__builtin_ia32_movhlps': '_mm_movehl_ps',
-'__builtin_ia32_movlhps': '_mm_movelh_ps',
-'__builtin_ia32_movqv4si': '_mm_move_epi64',
-'__builtin_ia32_unpckhps': '_mm_unpackhi_ps',
-'__builtin_ia32_unpckhpd': '_mm_unpackhi_pd',
-'__builtin_ia32_punpckhbw128': '_mm_unpackhi_epi8',
-'__builtin_ia32_punpckhwd128': '_mm_unpackhi_epi16',
-'__builtin_ia32_punpckhdq128': '_mm_unpackhi_epi32',
-'__builtin_ia32_punpckhqdq128': '_mm_unpackhi_epi64',
-'__builtin_ia32_unpcklps': '_mm_unpacklo_ps',
-'__builtin_ia32_unpcklpd': '_mm_unpacklo_pd',
-'__builtin_ia32_punpcklbw128': '_mm_unpacklo_epi8',
-'__builtin_ia32_punpcklwd128': '_mm_unpacklo_epi16',
-'__builtin_ia32_punpckldq128': '_mm_unpacklo_epi32',
-'__builtin_ia32_punpcklqdq128': '_mm_unpacklo_epi64',
-'__builtin_ia32_cmpeqpd': '_mm_cmpeq_pd',
-'__builtin_ia32_cmpltpd': '_mm_cmplt_pd',
-'__builtin_ia32_cmplepd': '_mm_cmple_pd',
-'__builtin_ia32_cmpgtpd': '_mm_cmpgt_pd',
-'__builtin_ia32_cmpgepd': '_mm_cmpge_pd',
-'__builtin_ia32_cmpunordpd': '_mm_cmpunord_pd',
-'__builtin_ia32_cmpneqpd': '_mm_cmpneq_pd',
-'__builtin_ia32_cmpnltpd': '_mm_cmpnlt_pd',
-'__builtin_ia32_cmpnlepd': '_mm_cmpnle_pd',
-'__builtin_ia32_cmpngtpd': '_mm_cmpngt_pd',
-'__builtin_ia32_cmpngepd': '_mm_cmpnge_pd',
-'__builtin_ia32_cmpordpd': '_mm_cmpord_pd',
-'__builtin_ia32_cmpeqsd': '_mm_cmpeq_sd',
-'__builtin_ia32_cmpltsd': '_mm_cmplt_sd',
-'__builtin_ia32_cmplesd': '_mm_cmple_sd',
-'__builtin_ia32_cmpunordsd': '_mm_cmpunord_sd',
-'__builtin_ia32_cmpneqsd': '_mm_cmpneq_sd',
-'__builtin_ia32_cmpnltsd': '_mm_cmpnlt_sd',
-'__builtin_ia32_cmpnlesd': '_mm_cmpnle_sd',
-'__builtin_ia32_cmpordsd': '_mm_cmpord_sd',
-'__builtin_ia32_cvtsi642ss': '_mm_cvtsi64_ss',
-'__builtin_ia32_cvttss2si64': '_mm_cvtss_si64',
-'__builtin_ia32_shufps': '_mm_shuffle_ps',
-'__builtin_ia32_shufpd': '_mm_shuffle_pd',
-'__builtin_ia32_pshufhw': '_mm_shufflehi_epi16',
-'__builtin_ia32_pshuflw': '_mm_shufflelo_epi16',
-'__builtin_ia32_pshufd': '_mm_shuffle_epi32',
-'__builtin_ia32_movshdup': '_mm_movehdup_ps',
-'__builtin_ia32_movsldup': '_mm_moveldup_ps',
-'__builtin_ia32_maxps': '_mm_max_ps',
-'__builtin_ia32_pslldi128': '_mm_slli_epi32',
-'__builtin_ia32_vec_set_v16qi': '_mm_insert_epi8',
-'__builtin_ia32_vec_set_v8hi': '_mm_insert_epi16',
-'__builtin_ia32_vec_set_v4si': '_mm_insert_epi32',
-'__builtin_ia32_vec_set_v2di': '_mm_insert_epi64',
-'__builtin_ia32_vec_set_v4hi': '_mm_insert_pi16',
-'__builtin_ia32_vec_ext_v16qi': '_mm_extract_epi8',
-'__builtin_ia32_vec_ext_v8hi': '_mm_extract_epi16',
-'__builtin_ia32_vec_ext_v4si': '_mm_extract_epi32',
-'__builtin_ia32_vec_ext_v2di': '_mm_extract_epi64',
-'__builtin_ia32_vec_ext_v4hi': '_mm_extract_pi16',
-'__builtin_ia32_vec_ext_v4sf': '_mm_extract_ps'
-}
-
-# Special unhandled cases:
-#   __builtin_ia32_vec_ext_*(__P, idx) -> _mm_store_sd/_mm_storeh_pd
-#     depending on index. No abstract insert/extract for these oddly.
-unhandled = [
-'__builtin_ia32_vec_ext_v2df',
-'__builtin_ia32_vec_ext_v2si',
-]
-
-def report_repl(builtin, repl):
-  sys.stderr.write("%s:%d: x86 builtin %s used, replaced with %s\n" % (fileinput.filename(), fileinput.filelineno(), builtin, repl))
-
-def report_cant(builtin):
-  sys.stderr.write("%s:%d: x86 builtin %s used, too many replacements\n" % (fileinput.filename(), fileinput.filelineno(), builtin))
-
-for line in fileinput.input(inplace=1):
-  for builtin, repl in repl_map.iteritems():
-    if builtin in line:
-      line = line.replace(builtin, repl)
-      report_repl(builtin, repl)
-  for unh in unhandled:
-    if unh in line:
-        report_cant(unh)
-  sys.stdout.write(line)
-
-sys.exit(err)

Modified: trunk/contrib/llvm/tools/clang/www/clang_video-05-25-2007.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/clang_video-05-25-2007.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/clang_video-05-25-2007.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
-<html>
-<head>
-	<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-	<title>2007 LLVM Developer's Meeting</title>
-	<link type="text/css" rel="stylesheet" href="menu.css">
-	<link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-	<!--#include virtual="menu.html.incl"-->
-	<div id="content">
-		<h1>2007 LLVM Developer's Meeting</h1>
-		Discussion about Clang at the <a href="http://llvm.org/devmtg/2007-05/">2007 LLVM Developer's Meeting</a>.
-		<h2>About:</h2>
-		<p>In this video, Steve Naroff introduces the Clang project and talks about some of the goals and motivations for starting the project.
-		<br><br>
-		<p><b>Details:</b> New LLVM C Front-end - This talk describes a new from-scratch C frontend (which is aiming to support Objective C and C++ someday) for LLVM, built as a native part of the LLVM system and in the LLVM design style.
-		<h2>The Presentation:</h2>
-		<p>You can download a copy of the presentation in mov format.  However, due to the picture quality, it is recommended that you also download the lecture slides for viewing while you watch the video.
-		<ul>
-			<li><a href="http://llvm.org/devmtg/2007-05/09-Naroff-CFE.mov">Video (mov file)</a>
-			<li><a href="http://llvm.org/devmtg/2007-05/09-Naroff-CFE.pdf">Lecture slides (PDF)</a>
-		</ul>
-	</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/clang_video-07-25-2007.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/clang_video-07-25-2007.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/clang_video-07-25-2007.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
-<html>
-<head>
-	<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-	<title>LLVM 2.0 and Beyond!</title>
-	<link type="text/css" rel="stylesheet" href="menu.css">
-	<link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-	<!--#include virtual="menu.html.incl"-->
-	<div id="content">
-		<h1>LLVM 2.0 and Beyond!</h1>
-		A Google Techtalk by <a href="http://www.nondot.org/sabre/">Chris Lattner</a>
-		<h2>About:</h2>
-		<p>In this video, Chris Lattner talks about some of the features of Clang, especially in regards to performance.
-		<br><br>
-		<p><b>Details:</b> The LLVM 2.0 release brings a number of new features and capabilities to the LLVM toolset. This talk briefly describes those features, then moves on to talk about what is next: llvm 2.1, llvm-gcc 4.2, and puts a special emphasis on the 'clang' C front-end. This describes how the 'clang' preprocessor can be used to improve the scalability of distcc by up to 4.4x.
-		<h2>The Presentation:</h2>
-		<p>You can view the presentation through google video. In addition, the slides from the presentation are also available, if you wish to retain a copy.
-		<ul>
-			<li><a href="http://video.google.com/videoplay?docid=1921156852099786640">Google Tech Talk Video (19:00-)</a> (Note: the Clang lecture starts at 19 minutes into the video.)
-			<li><a href="http://llvm.org/pubs/2007-07-25-LLVM-2.0-and-Beyond.pdf">LLVM 2.0 and Beyond! slides (PDF)</a>
-		</ul>
-		<h2>Publishing Information:</h2>
-		"LLVM 2.0 and Beyond!", Chris Lattner,<br>
-		<i>Google Tech Talk</i>, Mountain View, CA, July 2007.
-	</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/comparison.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/comparison.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/comparison.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,185 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
-          "http://www.w3.org/TR/html4/strict.dtd">
-<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Comparing clang to other open source compilers</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-  <!--#include virtual="menu.html.incl"-->
-  <div id="content">
-    <h1>Clang vs Other Open Source Compilers</h1>
-    
-    <p>Building an entirely new compiler front-end is a big task, and it isn't
-       always clear to people why we decided to do this.  Here we compare clang
-       and its goals to other open source compiler front-ends that are
-       available.  We restrict the discussion to very specific objective points
-       to avoid controversy where possible.  Also, software is infinitely
-       mutable, so we don't talk about little details that can be fixed with 
-       a reasonable amount of effort: we'll talk about issues that are 
-       difficult to fix for architectural or political reasons.</p>
-       
-    <p>The goal of this list is to describe how differences in goals lead to
-       different strengths and weaknesses, not to make some compiler look bad.
-       This will hopefully help you to evaluate whether using clang is a good
-       idea for your personal goals.  Because we don't know specifically what
-       <em>you</em> want to do, we describe the features of these compilers in
-       terms of <em>our</em> goals: if you are only interested in static
-       analysis, you may not care that something lacks codegen support, for
-       example.</p>
-       
-    <p>Please email cfe-dev if you think we should add another compiler to this
-       list or if you think some characterization is unfair here.</p>
-    
-    <ul>
-    <li><a href="#gcc">Clang vs GCC</a> (GNU Compiler Collection)</li>
-    <li><a href="#elsa">Clang vs Elsa</a> (Elkhound-based C++ Parser)</li>
-    <li><a href="#pcc">Clang vs PCC</a> (Portable C Compiler)</li>
-    </ul>
-    
-    
-    <!--=====================================================================-->
-    <h2><a name="gcc">Clang vs GCC (GNU Compiler Collection)</a></h2>
-    <!--=====================================================================-->
-    
-    <p>Pro's of GCC vs clang:</p>
-    
-    <ul>
-    <li>GCC supports languages that clang does not aim to, such as Java, Ada,
-        FORTRAN, etc.</li>
-    <li>GCC supports more targets than LLVM.</li>
-    </ul>
-    
-    <p>Pro's of clang vs GCC:</p>
-    
-    <ul>
-    <li>The Clang ASTs and design are intended to be <a 
-        href="features.html#simplecode">easily understandable</a> by
-        anyone who is familiar with the languages involved and who has a basic
-        understanding of how a compiler works.  GCC has a very old codebase
-        which presents a steep learning curve to new developers.</li>
-    <li>Clang is designed as an API from its inception, allowing it to be reused
-        by source analysis tools, refactoring, IDEs (etc) as well as for code
-        generation.  GCC is built as a monolithic static compiler, which makes
-        it extremely difficult to use as an API and integrate into other tools.
-        Further, its historic design and <a 
-        href="http://gcc.gnu.org/ml/gcc/2007-11/msg00460.html">current</a>
-        <a href="http://gcc.gnu.org/ml/gcc/2004-12/msg00888.html">policy</a> 
-        makes it difficult to decouple the front-end from the rest of the
-        compiler. </li>
-    <li>Various GCC design decisions make it very difficult to reuse: its build
-        system is difficult to modify, you can't link multiple targets into one
-        binary, you can't link multiple front-ends into one binary, it uses a
-        custom garbage collector, uses global variables extensively, is not
-        reentrant or multi-threadable, etc.  Clang has none of these problems.
-        </li>
-    <li>For every token, clang tracks information about where it was written and
-        where it was ultimately expanded into if it was involved in a macro.
-        GCC does not track information about macro instantiations when parsing
-        source code.  This makes it very difficult for source rewriting tools
-        (e.g. for refactoring) to work in the presence of (even simple) 
-        macros.</li>
-    <li>Clang does not implicitly simplify code as it parses it like GCC does.
-        Doing so causes many problems for source analysis tools: as one simple
-        example, if you write "x-x" in your source code, the GCC AST will
-        contain "0", with no mention of 'x'.  This is extremely bad for a
-        refactoring tool that wants to rename 'x'.</li>
-    <li>Clang can serialize its AST out to disk and read it back into another 
-        program, which is useful for whole program analysis.  GCC does not have
-        this.  GCC's PCH mechanism (which is just a dump of the compiler 
-        memory image) is related, but is architecturally only 
-        able to read the dump back into the exact same executable as the one 
-        that produced it (it is not a structured format).</li>
-    <li>Clang is <a href="features.html#performance">much faster and uses far
-        less memory</a> than GCC.</li>
-    <li>Clang aims to provide extremely clear and concise diagnostics (error and
-        warning messages), and includes support for <a
-        href="diagnostics.html">expressive diagnostics</a>.  GCC's warnings are 
-        sometimes acceptable, but are often confusing and it does not support
-        expressive diagnostics.  Clang also preserves typedefs in diagnostics
-        consistently, showing macro expansions and many other features.</li>
-    <li>GCC is licensed under the GPL license. <a href="features.html#license">
-        clang uses a BSD license,</a> which allows it to be embedded in
-        software that is not GPL-licensed.</li>
-    <li>Clang inherits a number of features from its use of LLVM as a backend,
-        including support for a bytecode representation for intermediate code,
-        pluggable optimizers, link-time optimization support, Just-In-Time
-        compilation, ability to link in multiple code generators, etc.</li>
-    <li><a href="compatibility.html#c++">Clang's support for C++</a> is more
-        compliant than GCC's in many ways (e.g. conformant two phase name
-        lookup).</li>
-    </ul>
-
-    <!--=====================================================================-->
-    <h2><a name="elsa">Clang vs Elsa (Elkhound-based C++ Parser)</a></h2>
-    <!--=====================================================================-->
-    
-    <p>Pro's of Elsa vs clang:</p>
-    
-    <ul>
-    <li>Elsa's parser and AST is designed to be easily extensible by adding
-        grammar rules.  Clang has a very simple and easily hackable parser,
-        but requires you to write C++ code to do it.</li>
-    </ul>
-    
-    <p>Pro's of clang vs Elsa:</p>
-    
-    <ul>
-    <li>Clang's C and C++ support is far more mature and practically useful than
-        Elsa's, and includes many C++'11 features.</li>
-    <li>The Elsa community is extremely small and major development work seems
-        to have ceased in 2005. Work continued to be used by other small 
-        projects (e.g. Oink), but Oink is apparently dead now too.  Clang has a
-        vibrant community including developers that
-        are paid to work on it full time.  In practice this means that you can
-        file bugs against Clang and they will often be fixed for you.  If you
-        use Elsa, you are (mostly) on your own for bug fixes and feature
-        enhancements.</li>
-    <li>Elsa is not built as a stack of reusable libraries like clang is.  It is
-        very difficult to use part of Elsa without the whole front-end.  For
-        example, you cannot use Elsa to parse C/ObjC code without building an
-        AST.  You can do this in Clang and it is much faster than building an
-        AST.</li>
-    <li>Elsa does not have an integrated preprocessor, which makes it extremely
-        difficult to accurately map from a source location in the AST back to
-        its original position before preprocessing.  Like GCC, it does not keep
-        track of macro expansions.</li>
-    <li>Elsa is even slower and uses more memory than GCC, which itself requires 
-        far more space and time than clang.</li>
-    <li>Elsa only does partial semantic analysis.  It is intended to work on
-        code that is already validated by GCC, so it does not do many semantic
-        checks required by the languages it implements.</li>
-    <li>Elsa does not support Objective-C.</li>
-    <li>Elsa does not support native code generation.</li>
-    </ul>
-    
-    
-    <!--=====================================================================-->
-    <h2><a name="pcc">Clang vs PCC (Portable C Compiler)</a></h2>
-    <!--=====================================================================-->
-    
-    <p>Pro's of PCC vs clang:</p>
-    
-    <ul>
-    <li>The PCC source base is very small and builds quickly with just a C
-        compiler.</li>
-    </ul>
-    
-    <p>Pro's of clang vs PCC:</p>
-    
-    <ul>
-    <li>PCC dates from the 1970's and has been dormant for most of that time.
-        The clang + llvm communities are very active.</li>
-    <li>PCC doesn't support Objective-C or C++ and doesn't aim to support
-        C++.</li>
-    <li>PCC's code generation is very limited compared to LLVM.  It produces very
-        inefficient code and does not support many important targets.</li>
-    <li>Like Elsa, PCC's does not have an integrated preprocessor, making it
-        extremely difficult to use it for source analysis tools.</li>
-    </ul>
-  </div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/compatibility.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/compatibility.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/compatibility.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,868 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Language Compatibility</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <style type="text/css">
-</style>
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<!-- ======================================================================= -->
-<h1>Language Compatibility</h1>
-<!-- ======================================================================= -->
-
-<p>Clang strives to both conform to current language standards (up to C11
-  and C++11) and also to implement many widely-used extensions available
-  in other compilers, so that most correct code will "just work" when
-  compiled with Clang. However, Clang is more strict than other
-  popular compilers, and may reject incorrect code that other
-  compilers allow. This page documents common compatibility and
-  portability issues with Clang to help you understand and fix the
-  problem in your code when Clang emits an error message.</p>
-  
-<ul>
-  <li><a href="#c">C compatibility</a>
-    <ul>
-      <li><a href="#inline">C99 inline functions</a></li>
-      <li><a href="#vector_builtins">"missing" vector __builtin functions</a></li>
-      <li><a href="#lvalue-cast">Lvalue casts</a></li>
-      <li><a href="#blocks-in-protected-scope">Jumps to within <tt>__block</tt> variable scope</a></li>
-      <li><a href="#block-variable-initialization">Non-initialization of <tt>__block</tt> variables</a></li>
-      <li><a href="#inline-asm">Inline assembly</a></li>
-    </ul>
-  </li>
-  <li><a href="#objective-c">Objective-C compatibility</a>
-    <ul>
-      <li><a href="#super-cast">Cast of super</a></li>
-      <li><a href="#sizeof-interface">Size of interfaces</a></li>
-      <li><a href="#objc_objs-cast">Internal Objective-C types</a></li>
-      <li><a href="#c_variables-class">C variables in @class or @protocol</a></li>
-    </ul>
-  </li>
-  <li><a href="#cxx">C++ compatibility</a>
-    <ul>
-      <li><a href="#vla">Variable-length arrays</a></li>
-      <li><a href="#dep_lookup">Unqualified lookup in templates</a></li>
-      <li><a href="#dep_lookup_bases">Unqualified lookup into dependent bases of class templates</a></li>
-      <li><a href="#undep_incomplete">Incomplete types in templates</a></li>
-      <li><a href="#bad_templates">Templates with no valid instantiations</a></li>
-      <li><a href="#default_init_const">Default initialization of const
-      variable of a class type requires user-defined default
-      constructor</a></li>
-      <li><a href="#param_name_lookup">Parameter name lookup</a></li>
-    </ul>
-  </li>
-  <li><a href="#cxx11">C++11 compatibility</a>
-    <ul>
-      <li><a href="#deleted-special-func">Deleted special member
-  functions</a></li>
-    </ul>
-  </li>
-  <li><a href="#objective-cxx">Objective-C++ compatibility</a>
-    <ul>
-      <li><a href="#implicit-downcasts">Implicit downcasts</a></li>
-    </ul>
-    <ul>
-      <li><a href="#class-as-property-name">Using <code>class</code> as a property name</a></li>
-    </ul>
-  </li>
-</ul>
-
-<!-- ======================================================================= -->
-<h2 id="c">C compatibility</h2>
-<!-- ======================================================================= -->
-
-<!-- ======================================================================= -->
-<h3 id="inline">C99 inline functions</h3>
-<!-- ======================================================================= -->
-<p>By default, Clang builds C code according to the C99 standard,
-which provides different semantics for the <code>inline</code> keyword
-than GCC's default behavior. For example, consider the following
-code:</p>
-<pre>
-inline int add(int i, int j) { return i + j; }
-
-int main() {
-  int i = add(4, 5);
-  return i;
-}
-</pre>
-
-<p>In C99, <code>inline</code> means that a function's definition is
-provided only for inlining, and that there is another definition
-(without <code>inline</code>) somewhere else in the program.  That
-means that this program is incomplete, because if <code>add</code>
-isn't inlined (for example, when compiling without optimization), then
-<code>main</code> will have an unresolved reference to that other
-definition.  Therefore we'll get a (correct) link-time error like this:</p>
-
-<pre>
-Undefined symbols:
-  "_add", referenced from:
-      _main in cc-y1jXIr.o
-</pre>
-
-<p>By contrast, GCC's default behavior follows the GNU89 dialect,
-which is the C89 standard plus a lot of extensions.  C89 doesn't have
-an <code>inline</code> keyword, but GCC recognizes it as an extension
-and just treats it as a hint to the optimizer.</p>
-
-<p>There are several ways to fix this problem:</p>
-
-<ul>
-  <li>Change <code>add</code> to a <code>static inline</code>
-  function.  This is usually the right solution if only one
-  translation unit needs to use the function.  <code>static
-  inline</code> functions are always resolved within the translation
-  unit, so you won't have to add a non-<code>inline</code> definition
-  of the function elsewhere in your program.</li>
-
-  <li>Remove the <code>inline</code> keyword from this definition of
-  <code>add</code>.  The <code>inline</code> keyword is not required
-  for a function to be inlined, nor does it guarantee that it will be.
-  Some compilers ignore it completely.  Clang treats it as a mild
-  suggestion from the programmer.</li>
-     
-  <li>Provide an external (non-<code>inline</code>) definition
-  of <code>add</code> somewhere else in your program.  The two
-  definitions must be equivalent!</li>
-
-  <li>Compile with the GNU89 dialect by adding
-  <code>-std=gnu89</code> to the set of Clang options. This option is
-  only recommended if the program source cannot be changed or if the
-  program also relies on additional C89-specific behavior that cannot
-  be changed.</li>
-</ul>
-
-<p>All of this only applies to C code; the meaning of <code>inline</code>
-in C++ is very different from its meaning in either GNU89 or C99.</p>
-
-<!-- ======================================================================= -->
-<h3 id="vector_builtins">"missing" vector __builtin functions</h3>
-<!-- ======================================================================= -->
-
-<p>The Intel and AMD manuals document a number "<tt><*mmintrin.h></tt>"
-header files, which define a standardized API for accessing vector operations
-on X86 CPUs.  These functions have names like <tt>_mm_xor_ps</tt> and
-<tt>_mm256_addsub_pd</tt>.  Compilers have leeway to implement these functions
-however they want.  Since Clang supports an excellent set of <a 
-href="../docs/LanguageExtensions.html#vectors">native vector operations</a>,
-the Clang headers implement these interfaces in terms of the native vector 
-operations.
-</p>
-
-<p>In contrast, GCC implements these functions mostly as a 1-to-1 mapping to
-builtin function calls, like <tt>__builtin_ia32_paddw128</tt>.  These builtin
-functions are an internal implementation detail of GCC, and are not portable to
-the Intel compiler, the Microsoft compiler, or Clang.  If you get build errors
-mentioning these, the fix is simple: switch to the *mmintrin.h functions.</p>
-
-<p>The same issue occurs for NEON and Altivec for the ARM and PowerPC
-architectures respectively.  For these, make sure to use the <arm_neon.h>
-and <altivec.h> headers.</p>
-
-<p>For x86 architectures this <a href="builtins.py">script</a> should help with
-the manual migration process.  It will rewrite your source files in place to
-use the APIs instead of builtin function calls. Just call it like this:</p>
-
-<pre>
-  builtins.py *.c *.h
-</pre>
-
-<p>and it will rewrite all of the .c and .h files in the current directory to
-use the API calls instead of calls like <tt>__builtin_ia32_paddw128</tt>.</p>
-
-<!-- ======================================================================= -->
-<h3 id="lvalue-cast">Lvalue casts</h3>
-<!-- ======================================================================= -->
-
-<p>Old versions of GCC permit casting the left-hand side of an assignment to a
-different type. Clang produces an error on similar code, e.g.,</p>
-
-<pre>
-<b>lvalue.c:2:3: <span class="error">error:</span> assignment to cast is illegal, lvalue casts are not supported</b>
-  (int*)addr = val;
-<span class="caret">  ^~~~~~~~~~ ~</span>
-</pre>
-
-<p>To fix this problem, move the cast to the right-hand side. In this
-example, one could use:</p>
-
-<pre>
-  addr = (float *)val;
-</pre>
-
-<!-- ======================================================================= -->
-<h3 id="blocks-in-protected-scope">Jumps to within <tt>__block</tt> variable scope</h3>
-<!-- ======================================================================= -->
-
-<p>Clang disallows jumps into the scope of a <tt>__block</tt>
-variable.  Variables marked with <tt>__block</tt> require special
-runtime initialization. A jump into the scope of a <tt>__block</tt>
-variable bypasses this initialization, leaving the variable's metadata
-in an invalid state.  Consider the following code fragment:</p>
-
-<pre>
-int fetch_object_state(struct MyObject *c) {
-  if (!c->active) goto error;
-
-  __block int result;
-  run_specially_somehow(^{ result = c->state; });
-  return result;
-
- error:
-  fprintf(stderr, "error while fetching object state");
-  return -1;
-}
-</pre>
-
-<p>GCC accepts this code, but it produces code that will usually crash
-when <code>result</code> goes out of scope if the jump is taken.  (It's
-possible for this bug to go undetected because it often won't crash if
-the stack is fresh, i.e. still zeroed.)  Therefore, Clang rejects this
-code with a hard error:</p>
-
-<pre>
-<b>t.c:3:5: <span class="error">error:</span> goto into protected scope</b>
-    goto error;
-<span class="caret">    ^</span>
-<b>t.c:5:15: <span class="note">note:</note></b> jump bypasses setup of __block variable
-  __block int result;
-<span class="caret">              ^</span>
-</pre>
-
-<p>The fix is to rewrite the code to not require jumping into a
-<tt>__block</tt> variable's scope, e.g. by limiting that scope:</p>
-
-<pre>
-  {
-    __block int result;
-    run_specially_somehow(^{ result = c->state; });
-    return result;
-  }
-</pre>
-
-<!-- ======================================================================= -->
-<h3 id="block-variable-initialization">Non-initialization of <tt>__block</tt>
-variables</h3>
-<!-- ======================================================================= -->
-
-<p>In the following example code, the <tt>x</tt> variable is used before it is
-defined:</p>
-<pre>
-int f0() {
-  __block int x;
-  return ^(){ return x; }();
-}
-</pre>
-
-<p>By an accident of implementation, GCC and llvm-gcc unintentionally always
-zero initialized <tt>__block</tt> variables. However, any program which depends
-on this behavior is relying on unspecified compiler behavior. Programs must
-explicitly initialize all local block variables before they are used, as with
-other local variables.</p>
-
-<p>Clang does not zero initialize local block variables, and programs which rely
-on such behavior will most likely break when built with Clang.</p>
-
-
-<!-- ======================================================================= -->
-<h3 id="inline-asm">Inline assembly</h3>
-<!-- ======================================================================= -->
-
-<p>In general, Clang is highly compatible with the GCC inline assembly
-extensions, allowing the same set of constraints, modifiers and operands as GCC
-inline assembly.</p>
-
-<p>On targets that use the integrated assembler (such as most X86 targets),
-inline assembly is run through the integrated assembler instead of your system
-assembler (which is most commonly "gas", the GNU assembler).  The LLVM
-integrated assembler is extremely compatible with GAS, but there are a couple of
-minor places where it is more picky, particularly due to outright GAS bugs.</p>
-
-<p>One specific example is that the assembler rejects ambiguous X86 instructions
-that don't have suffixes.  For example:</p>
-
-<pre>
-  asm("add %al, (%rax)");
-  asm("addw $4, (%rax)");
-  asm("add $4, (%rax)");
-</pre>
-
-<p>Both clang and GAS accept the first instruction: because the first
-instruction uses the 8-bit <tt>%al</tt> register as an operand, it is clear that
-it is an 8-bit add.  The second instruction is accepted by both because the "w"
-suffix indicates that it is a 16-bit add.  The last instruction is accepted by
-GAS even though there is nothing that specifies the size of the instruction (and
-the assembler randomly picks a 32-bit add).  Because it is ambiguous, Clang
-rejects the instruction with this error message:
-</p>
-
-<pre>
-<b><inline asm>:3:1: <span class="error">error:</span> ambiguous instructions require an explicit suffix (could be 'addb', 'addw', 'addl', or 'addq')</b>
-add $4, (%rax)
-<span class="caret">^</span>
-</pre>
-
-<p>To fix this compatibility issue, add an explicit suffix to the instruction:
-this makes your code more clear and is compatible with both GCC and Clang.</p>
-
-<!-- ======================================================================= -->
-<h2 id="objective-c">Objective-C compatibility</h2>
-<!-- ======================================================================= -->
-
-<!-- ======================================================================= -->
-<h3 id="super-cast">Cast of super</h3>
-<!-- ======================================================================= -->
-
-<p>GCC treats the <code>super</code> identifier as an expression that
-can, among other things, be cast to a different type. Clang treats
-<code>super</code> as a context-sensitive keyword, and will reject a
-type-cast of <code>super</code>:</p>
-
-<pre>
-<b>super.m:11:12: <span class="error">error:</span> cannot cast 'super' (it isn't an expression)</b>
-  [(Super*)super add:4];
-<span class="caret">   ~~~~~~~~^</span>
-</pre>
-
-<p>To fix this problem, remove the type cast, e.g.</p>
-<pre>
-  [super add:4];
-</pre>
-
-<!-- ======================================================================= -->
-<h3 id="sizeof-interface">Size of interfaces</h3>
-<!-- ======================================================================= -->
-
-<p>When using the "non-fragile" Objective-C ABI in use, the size of an
-Objective-C class may change over time as instance variables are added
-(or removed). For this reason, Clang rejects the application of the
-<code>sizeof</code> operator to an Objective-C class when using this
-ABI:</p>
-
-<pre>
-<b>sizeof.m:4:14: <span class="error">error:</span> invalid application of 'sizeof' to interface 'NSArray' in non-fragile ABI</b>
-  int size = sizeof(NSArray);
-<span class="caret">             ^     ~~~~~~~~~</span>
-</pre>
-
-<p>Code that relies on the size of an Objective-C class is likely to
-be broken anyway, since that size is not actually constant. To address
-this problem, use the Objective-C runtime API function
-<code>class_getInstanceSize()</code>:</p>
-
-<pre>
-  class_getInstanceSize([NSArray class])
-</pre>
-
-<!-- ======================================================================= -->
-<h3 id="objc_objs-cast">Internal Objective-C types</h3>
-<!-- ======================================================================= -->
-
-<p>GCC allows using pointers to internal Objective-C objects, <tt>struct objc_object*</tt>,
-<tt>struct objc_selector*</tt>, and <tt>struct objc_class*</tt> in place of the types
-<tt>id</tt>, <tt>SEL</tt>, and <tt>Class</tt> respectively. Clang treats the
-internal Objective-C structures as implementation detail and won't do implicit conversions:
-
-<pre>
-<b>t.mm:11:2: <span class="error">error:</span> no matching function for call to 'f'</b>
-        f((struct objc_object *)p);
-<span class="caret">        ^</span>
-<b>t.mm:5:6: <span class="note">note:</note></b> candidate function not viable: no known conversion from 'struct objc_object *' to 'id' for 1st argument
-void f(id x);
-<span class="caret">     ^</span>
-</pre>
-
-<p>Code should use types <tt>id</tt>, <tt>SEL</tt>, and <tt>Class</tt>
-instead of the internal types.</p>
-
-<!-- ======================================================================= -->
-<h3 id="c_variables-class">C variables in @interface or @protocol</h3>
-<!-- ======================================================================= -->
-
-<p>GCC allows the declaration of C variables in
-an <code>@interface</code> or <code>@protocol</code>
-declaration. Clang does not allow variable declarations to appear
-within these declarations unless they are marked <code>extern</code>.</p>
-
-<p>Variables may still be declared in an @implementation.</p>
-
-<pre>
- at interface XX
-int a;         // not allowed in clang
-int b = 1;     // not allowed in clang
-extern int c;  // allowed 
- at end
-
-</pre>
-
-<!-- ======================================================================= -->
-<h2 id="cxx">C++ compatibility</h2>
-<!-- ======================================================================= -->
-
-<!-- ======================================================================= -->
-<h3 id="vla">Variable-length arrays</h3>
-<!-- ======================================================================= -->
-
-<p>GCC and C99 allow an array's size to be determined at run
-time. This extension is not permitted in standard C++. However, Clang
-supports such variable length arrays in very limited circumstances for
-compatibility with GNU C and C99 programs:</p>
-
-<ul>  
-  <li>The element type of a variable length array must be a POD
-  ("plain old data") type, which means that it cannot have any
-  user-declared constructors or destructors, any base classes, or any
-  members of non-POD type. All C types are POD types.</li>
-
-  <li>Variable length arrays cannot be used as the type of a non-type
-template parameter.</li> </ul>
-
-<p>If your code uses variable length arrays in a manner that Clang doesn't support, there are several ways to fix your code:
-
-<ol>
-<li>replace the variable length array with a fixed-size array if you can
-    determine a reasonable upper bound at compile time; sometimes this is as
-    simple as changing <tt>int size = ...;</tt> to <tt>const int size
-    = ...;</tt> (if the initializer is a compile-time constant);</li>
-<li>use <tt>std::vector</tt> or some other suitable container type;
-    or</li>
-<li>allocate the array on the heap instead using <tt>new Type[]</tt> -
-    just remember to <tt>delete[]</tt> it.</li>
-</ol>
-
-<!-- ======================================================================= -->
-<h3 id="dep_lookup">Unqualified lookup in templates</h3>
-<!-- ======================================================================= -->
-
-<p>Some versions of GCC accept the following invalid code:
-
-<pre>
-template <typename T> T Squared(T x) {
-  return Multiply(x, x);
-}
-
-int Multiply(int x, int y) {
-  return x * y;
-}
-
-int main() {
-  Squared(5);
-}
-</pre>
-
-<p>Clang complains:
-
-<pre>
-<b>my_file.cpp:2:10: <span class="error">error:</span> call to function 'Multiply' that is neither visible in the template definition nor found by argument-dependent lookup</b>
-  return Multiply(x, x);
-<span class="caret">         ^</span>
-<b>my_file.cpp:10:3: <span class="note">note:</span></b> in instantiation of function template specialization 'Squared<int>' requested here
-  Squared(5);
-<span class="caret">  ^</span>
-<b>my_file.cpp:5:5: <span class="note">note:</span></b> 'Multiply' should be declared prior to the call site
-int Multiply(int x, int y) {
-<span class="caret">    ^</span>
-</pre>
-
-<p>The C++ standard says that unqualified names like <q>Multiply</q>
-are looked up in two ways.
-
-<p>First, the compiler does <i>unqualified lookup</i> in the scope
-where the name was written.  For a template, this means the lookup is
-done at the point where the template is defined, not where it's
-instantiated.  Since <tt>Multiply</tt> hasn't been declared yet at
-this point, unqualified lookup won't find it.
-
-<p>Second, if the name is called like a function, then the compiler
-also does <i>argument-dependent lookup</i> (ADL).  (Sometimes
-unqualified lookup can suppress ADL; see [basic.lookup.argdep]p3 for
-more information.)  In ADL, the compiler looks at the types of all the
-arguments to the call.  When it finds a class type, it looks up the
-name in that class's namespace; the result is all the declarations it
-finds in those namespaces, plus the declarations from unqualified
-lookup.  However, the compiler doesn't do ADL until it knows all the
-argument types.
-
-<p>In our example, <tt>Multiply</tt> is called with dependent
-arguments, so ADL isn't done until the template is instantiated.  At
-that point, the arguments both have type <tt>int</tt>, which doesn't
-contain any class types, and so ADL doesn't look in any namespaces.
-Since neither form of lookup found the declaration
-of <tt>Multiply</tt>, the code doesn't compile.
-
-<p>Here's another example, this time using overloaded operators,
-which obey very similar rules.
-
-<pre>#include <iostream>
-
-template<typename T>
-void Dump(const T& value) {
-  std::cout << value << "\n";
-}
-
-namespace ns {
-  struct Data {};
-}
-
-std::ostream& operator<<(std::ostream& out, ns::Data data) {
-  return out << "Some data";
-}
-
-void Use() {
-  Dump(ns::Data());
-}</pre>
-
-<p>Again, Clang complains:</p>
-
-<pre>
-<b>my_file2.cpp:5:13: <span class="error">error:</span> call to function 'operator<<' that is neither visible in the template definition nor found by argument-dependent lookup</b>
-  std::cout << value << "\n";
-<span class="caret">            ^</span>
-<b>my_file2.cpp:17:3: <span class="note">note:</span></b> in instantiation of function template specialization 'Dump<ns::Data>' requested here
-  Dump(ns::Data());
-<span class="caret">  ^</span>
-<b>my_file2.cpp:12:15: <span class="note">note:</span></b> 'operator<<' should be declared prior to the call site or in namespace 'ns'
-std::ostream& operator<<(std::ostream& out, ns::Data data) {
-<span class="caret">              ^</span>
-</pre>
-
-<p>Just like before, unqualified lookup didn't find any declarations
-with the name <tt>operator<<</tt>.  Unlike before, the argument
-types both contain class types: one of them is an instance of the
-class template type <tt>std::basic_ostream</tt>, and the other is the
-type <tt>ns::Data</tt> that we declared above.  Therefore, ADL will
-look in the namespaces <tt>std</tt> and <tt>ns</tt> for
-an <tt>operator<<</tt>.  Since one of the argument types was
-still dependent during the template definition, ADL isn't done until
-the template is instantiated during <tt>Use</tt>, which means that
-the <tt>operator<<</tt> we want it to find has already been
-declared.  Unfortunately, it was declared in the global namespace, not
-in either of the namespaces that ADL will look in!
-
-<p>There are two ways to fix this problem:</p>
-<ol><li>Make sure the function you want to call is declared before the
-template that might call it.  This is the only option if none of its
-argument types contain classes.  You can do this either by moving the
-template definition, or by moving the function definition, or by
-adding a forward declaration of the function before the template.</li>
-<li>Move the function into the same namespace as one of its arguments
-so that ADL applies.</li></ol>
-
-<p>For more information about argument-dependent lookup, see
-[basic.lookup.argdep].  For more information about the ordering of
-lookup in templates, see [temp.dep.candidate].
-
-<!-- ======================================================================= -->
-<h3 id="dep_lookup_bases">Unqualified lookup into dependent bases of class templates</h3>
-<!-- ======================================================================= -->
-
-Some versions of GCC accept the following invalid code:
-
-<pre>
-template <typename T> struct Base {
-  void DoThis(T x) {}
-  static void DoThat(T x) {}
-};
-
-template <typename T> struct Derived : public Base<T> {
-  void Work(T x) {
-    DoThis(x);  // Invalid!
-    DoThat(x);  // Invalid!
-  }
-};
-</pre>
-
-Clang correctly rejects it with the following errors
-(when <tt>Derived</tt> is eventually instantiated):
-
-<pre>
-<b>my_file.cpp:8:5: <span class="error">error:</span> use of undeclared identifier 'DoThis'</b>
-    DoThis(x);
-<span class="caret">    ^</span>
-    this->
-<b>my_file.cpp:2:8: <span class="note">note:</note></b> must qualify identifier to find this declaration in dependent base class
-  void DoThis(T x) {}
-<span class="caret">       ^</span>
-<b>my_file.cpp:9:5: <span class="error">error:</span> use of undeclared identifier 'DoThat'</b>
-    DoThat(x);
-<span class="caret">    ^</span>
-    this->
-<b>my_file.cpp:3:15: <span class="note">note:</note></b> must qualify identifier to find this declaration in dependent base class
-  static void DoThat(T x) {}
-</pre>
-
-Like we said <a href="#dep_lookup">above</a>, unqualified names like
-<tt>DoThis</tt> and <tt>DoThat</tt> are looked up when the template
-<tt>Derived</tt> is defined, not when it's instantiated.  When we look
-up a name used in a class, we usually look into the base classes.
-However, we can't look into the base class <tt>Base<T></tt>
-because its type depends on the template argument <tt>T</tt>, so the
-standard says we should just ignore it.  See [temp.dep]p3 for details.
-
-<p>The fix, as Clang tells you, is to tell the compiler that we want a
-class member by prefixing the calls with <tt>this-></tt>:
-
-<pre>
-  void Work(T x) {
-    <b>this-></b>DoThis(x);
-    <b>this-></b>DoThat(x);
-  }
-</pre>
-
-Alternatively, you can tell the compiler exactly where to look:
-
-<pre>
-  void Work(T x) {
-    <b>Base<T></b>::DoThis(x);
-    <b>Base<T></b>::DoThat(x);
-  }
-</pre>
-
-This works whether the methods are static or not, but be careful:
-if <tt>DoThis</tt> is virtual, calling it this way will bypass virtual
-dispatch!
-
-<!-- ======================================================================= -->
-<h3 id="undep_incomplete">Incomplete types in templates</h3>
-<!-- ======================================================================= -->
-
-The following code is invalid, but compilers are allowed to accept it:
-
-<pre>
-  class IOOptions;
-  template <class T> bool read(T &value) {
-    IOOptions opts;
-    return read(opts, value);
-  }
-
-  class IOOptions { bool ForceReads; };
-  bool read(const IOOptions &opts, int &x);
-  template bool read<>(int &);
-</pre>
-
-The standard says that types which don't depend on template parameters
-must be complete when a template is defined if they affect the
-program's behavior.  However, the standard also says that compilers
-are free to not enforce this rule.  Most compilers enforce it to some
-extent; for example, it would be an error in GCC to
-write <tt>opts.ForceReads</tt> in the code above.  In Clang, we feel
-that enforcing the rule consistently lets us provide a better
-experience, but unfortunately it also means we reject some code that
-other compilers accept.
-
-<p>We've explained the rule here in very imprecise terms; see
-[temp.res]p8 for details.
-
-<!-- ======================================================================= -->
-<h3 id="bad_templates">Templates with no valid instantiations</h3>
-<!-- ======================================================================= -->
-
-The following code contains a typo: the programmer
-meant <tt>init()</tt> but wrote <tt>innit()</tt> instead.
-
-<pre>
-  template <class T> class Processor {
-    ...
-    void init();
-    ...
-  };
-  ...
-  template <class T> void process() {
-    Processor<T> processor;
-    processor.innit();       // <-- should be 'init()'
-    ...
-  }
-</pre>
-
-Unfortunately, we can't flag this mistake as soon as we see it: inside
-a template, we're not allowed to make assumptions about "dependent
-types" like <tt>Processor<T></tt>.  Suppose that later on in
-this file the programmer adds an explicit specialization
-of <tt>Processor</tt>, like so:
-
-<pre>
-  template <> class Processor<char*> {
-    void innit();
-  };
-</pre>
-
-Now the program will work — as long as the programmer only ever
-instantiates <tt>process()</tt> with <tt>T = char*</tt>!  This is why
-it's hard, and sometimes impossible, to diagnose mistakes in a
-template definition before it's instantiated.
-
-<p>The standard says that a template with no valid instantiations is
-ill-formed.  Clang tries to do as much checking as possible at
-definition-time instead of instantiation-time: not only does this
-produce clearer diagnostics, but it also substantially improves
-compile times when using pre-compiled headers.  The downside to this
-philosophy is that Clang sometimes fails to process files because they
-contain broken templates that are no longer used.  The solution is
-simple: since the code is unused, just remove it.
-
-<!-- ======================================================================= -->
-<h3 id="default_init_const">Default initialization of const variable of a class type requires user-defined default constructor</h3>
-<!-- ======================================================================= -->
-
-If a <tt>class</tt> or <tt>struct</tt> has no user-defined default
-constructor, C++ doesn't allow you to default construct a <tt>const</tt>
-instance of it like this ([dcl.init], p9):
-
-<pre>
-class Foo {
- public:
-  // The compiler-supplied default constructor works fine, so we
-  // don't bother with defining one.
-  ...
-};
-
-void Bar() {
-  const Foo foo;  // Error!
-  ...
-}
-</pre>
-
-To fix this, you can define a default constructor for the class:
-
-<pre>
-class Foo {
- public:
-  Foo() {}
-  ...
-};
-
-void Bar() {
-  const Foo foo;  // Now the compiler is happy.
-  ...
-}
-</pre>
-
-<!-- ======================================================================= -->
-<h3 id="param_name_lookup">Parameter name lookup</h3>
-<!-- ======================================================================= -->
-
-<p>Due to a bug in its implementation, GCC allows the redeclaration of function parameter names within a function prototype in C++ code, e.g.</p>
-<blockquote>
-<pre>
-void f(int a, int a);
-</pre>
-</blockquote>
-<p>Clang diagnoses this error (where the parameter name has been redeclared). To fix this problem, rename one of the parameters.</p>
-
-<!-- ======================================================================= -->
-<h2 id="cxx11">C++11 compatibility</h2>
-<!-- ======================================================================= -->
-
-<!-- ======================================================================= -->
-<h3 id="deleted-special-func">Deleted special member functions</h3>
-<!-- ======================================================================= -->
-
-<p>In C++11, the explicit declaration of a move constructor or a move
-assignment operator within a class deletes the implicit declaration
-of the copy constructor and copy assignment operator. This change came
-fairly late in the C++11 standardization process, so early
-implementations of C++11 (including Clang before 3.0, GCC before 4.7,
-and Visual Studio 2010) do not implement this rule, leading them to
-accept this ill-formed code:</p>
-
-<pre>
-struct X {
-  X(X&&); <i>// deletes implicit copy constructor:</i>
-  <i>// X(const X&) = delete;</i>
-};
-
-void f(X x);
-void g(X x) {
-  f(x); <i>// error: X has a deleted copy constructor</i>
-}
-</pre>
-
-<p>This affects some early C++11 code, including Boost's popular <a
-href="http://www.boost.org/doc/libs/release/libs/smart_ptr/shared_ptr.htm"><tt>shared_ptr</tt></a>
-up to version 1.47.0. The fix for Boost's <tt>shared_ptr</tt> is
-<a href="https://svn.boost.org/trac/boost/changeset/73202">available here</a>.</p>
-
-<!-- ======================================================================= -->
-<h2 id="objective-cxx">Objective-C++ compatibility</h2>
-<!-- ======================================================================= -->
-
-<!-- ======================================================================= -->
-<h3 id="implicit-downcasts">Implicit downcasts</h3>
-<!-- ======================================================================= -->
-
-<p>Due to a bug in its implementation, GCC allows implicit downcasts
-of Objective-C pointers (from a base class to a derived class) when
-calling functions. Such code is inherently unsafe, since the object
-might not actually be an instance of the derived class, and is
-rejected by Clang. For example, given this code:</p>
-
-<pre>
- at interface Base @end
- at interface Derived : Base @end
-
-void f(Derived *p);
-void g(Base *p) {
-  f(p);
-}
-</pre>
-
-<p>Clang produces the following error:</p>
-
-<pre>
-<b>downcast.mm:6:3: <span class="error">error:</span> no matching function for call to 'f'</b>
-  f(p);
-<span class="caret">  ^</span>
-<b>downcast.mm:4:6: <span class="note">note:</note></b> candidate function not viable: cannot convert from
-      superclass 'Base *' to subclass 'Derived *' for 1st argument
-void f(Derived *p);
-<span class="caret">     ^</span>
-</pre>
-
-<p>If the downcast is actually correct (e.g., because the code has
-already checked that the object has the appropriate type), add an
-explicit cast:</p>
-
-<pre>
-  f((Derived *)base);
-</pre>
-
-<!-- ======================================================================= -->
-<h3 id="class-as-property-name">Using <code>class</code> as a property name</h3>
-<!-- ======================================================================= -->
-
-<p>In C and Objective-C, <code>class</code> is a normal identifier and
-can be used to name fields, ivars, methods, and so on.  In
-C++, <code>class</code> is a keyword.  For compatibility with existing
-code, Clang permits <code>class</code> to be used as part of a method
-selector in Objective-C++, but this does not extend to any other part
-of the language.  In particular, it is impossible to use property dot
-syntax in Objective-C++ with the property name <code>class</code>, so
-the following code will fail to parse:</p>
-
-<pre>
- at interface I {
-int cls;
-}
-+ (int)class;
- at end
-
- at implementation  I
-- (int) Meth { return I.class; }
- at end
-</pre>
-
-<p>Use explicit message-send syntax instead, i.e. <code>[I class]</code>.</p>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/content.css
===================================================================
--- trunk/contrib/llvm/tools/clang/www/content.css	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/content.css	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,33 +0,0 @@
-html { margin: 0px; } body { margin: 8px; }
-
-html, body {
-  padding:0px;
-  font-size:small; font-family:"Lucida Grande", "Lucida Sans Unicode", Arial, Verdana, Helvetica, sans-serif; background-color: #fff; color: #222;
-  line-height:1.5;
-}
-
-h1, h2, h3, tt { color: #000 }
-
-h1 { padding-top:0px; margin-top:0px;}
-h2 { color:#333333; padding-top:0.5em; }
-h3 { padding-top: 0.5em; margin-bottom: -0.25em; color:#2d58b7}
-li { padding-bottom: 0.5em; }
-ul { padding-left:1.5em; }
-
-/* Slides */
-IMG.img_slide {
-    display: block;
-    margin-left: auto;
-    margin-right: auto
-}
-
-.itemTitle { color:#2d58b7 }
-
-span.error { color:red }
-span.warning { color:purple }
-span.note { color:gray }
-span.caret { color:green; font-weight:bold }
-span.template-highlight { color:cyan }
-
-/* Tables */
-tr { vertical-align:top }

Modified: trunk/contrib/llvm/tools/clang/www/cxx_compatibility.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/cxx_compatibility.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/cxx_compatibility.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-<meta HTTP-EQUIV="REFRESH" content="5; url=compatibility.html#c++">
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Clang - C++ Compatibility</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <style type="text/css">
-</style>
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<!-- ======================================================================= -->
-<h1>Clang's C++ Compatibility</h1>
-<!-- ======================================================================= -->
-
-  <p>The Clang C++ compatibility page has moved. You will be directed <a href="compatibility.html#c++">to its new home</a> in 5 seconds.</p>
-  
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/cxx_status.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/cxx_status.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/cxx_status.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,476 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Clang - C++98, C++11, and C++14 Status</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <style type="text/css">
-    .none { background-color: #FFCCCC }
-    .partial { background-color: #FFE0B0 }
-    .svn  { background-color: #FFFF99 }
-    .full { background-color: #CCFF99 }
-    .na { background-color: #DDDDDD }
-    span:target { background-color: #FFFFBB; outline: #DDDD55 solid thin; }
-    th { background-color: #FFDDAA }
-  </style>
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<!--*************************************************************************-->
-<h1>C++98, C++11, and C++14 Support in Clang</h1>
-<!--*************************************************************************-->
-<p>Last updated: $Date: 2013-05-20 17:28:07 -0700 (Mon, 20 May 2013) $</p>
-
-<h2 id="cxx98">C++98 implementation status</h2>
-
-<p>Clang currently implements all of the ISO C++ 1998 standard
-  (including the defects addressed in the ISO C++ 2003 standard)
-  except for <tt>export</tt> (which has been removed in C++11)
-  and is considered a production-quality C++ compiler.  The <a
-   href="http://llvm.org/bugs/">LLVM bug tracker</a> contains a Clang
-  C++ component that tracks known Clang C++ bugs.</p>
-
-<h2 id="cxx11">C++11 implementation status</h2>
-
-  <p>Clang implements all of the <a
-    href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372">ISO
-    C++ 2011 standard</a>. The following table describes the Clang version
-  in which each feature became available.</p>
-
-<p>By default, Clang builds C++ code according to the C++98 standard, with many
-C++11 features accepted as extensions. You can use Clang in C++11 mode with the
-<code>-std=c++11</code> option. Clang's C++11 mode can be used
-with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++, but
-patches are needed to make <a href="libstdc++4.4-clang0x.patch">libstdc++-4.4</a>
-work with Clang in C++11 mode. Patches are also needed to make
-<a href="libstdc++4.6-clang11.patch">libstdc++-4.6</a>,
-and <a href="libstdc++4.7-clang11.patch">libstdc++-4.7</a> work with Clang
-releases prior to version 3.2 in C++11 mode. <tt>thread_local</tt> support
-currently requires g++-4.8's C++ runtime library.</p>
-
-<table width="689" border="1" cellspacing="0">
- <tr>
-    <th>Language Feature</th>
-    <th>C++11 Proposal</th>
-    <th>Available in Clang?</th>
- </tr>
-     <tr>
-      <td>Rvalue references</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>    Rvalue references for <code>*this</code></td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm">N2439</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Initialization of class objects by rvalues</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html">N1610</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Non-static data member initializers</td>
-      <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm">N2756</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Variadic templates</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf">N2242</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>    Extending variadic template template parameters</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf">N2555</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Initializer lists</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm">N2672</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Static assertions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html">N1720</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td><code>auto</code>-typed variables</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf">N1984</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>    Multi-declarator <code>auto</code></td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf">N1737</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>    Removal of auto as a storage-class specifier</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm">N2546</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>    New function declarator syntax</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm">N2541</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Lambda expressions</td>
-      <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf">N2927</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Declared type of an expression</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>    Incomplete return types</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf">N3276</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Right angle brackets</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html">N1757</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Default template arguments for function templates</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226">DR226</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Solving the SFINAE problem for expressions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html">DR339</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Alias templates</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf">N2258</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Extern templates</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm">N1987</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Null pointer constant</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Strongly-typed enums</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf">N2347</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Forward declarations for enums</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf">N2764</a>
-      <br><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1206">DR1206</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Generalized attributes</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf">N2761</a></td>
-      <td class="svn" align="center">Clang 3.3 <a href="#n2761">(1)</a></td>
-    </tr>
-    <tr>
-      <td>Generalized constant expressions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Alignment support</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf">N2341</a></td>
-      <td class="svn" align="center">Clang 3.3</td>
-    </tr>
-    <!-- Skipped N1627: Conditionally-support behavior -->
-    <!-- Skipped N1727: Changing Undefined Behavior into Diagnosable Errors -->
-    <tr>
-      <td>Delegating constructors</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf">N1986</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Inheriting constructors</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm">N2540</a></td>
-      <td class="svn" align="center">Clang 3.3</td>
-    </tr>
-    <tr>
-      <td>Explicit conversion operators</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>New character types</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html">N2249</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Unicode string literals</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm">N2442</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Raw string literals</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm">N2442</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Universal character names in literals</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html">N2170</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>User-defined literals</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf">N2765</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Standard Layout Types</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm">N2342</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Defaulted functions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">N2346</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Deleted functions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">N2346</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Extended friend declarations</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf">N1791</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Extending <code>sizeof</code></td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html">N2253</a>
-      <br><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#850">DR850</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Inline namespaces</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm">N2535</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Unrestricted unions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf">N2544</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Local and unnamed types as template arguments</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm">N2657</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Range-based for</td>
-      <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html">N2930</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Explicit virtual overrides</td>
-      <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm">N2928</a>
-      <br><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm">N3206</a>
-      <br><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm">N3272</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Minimal support for garbage collection and reachability-based leak detection</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm">N2670</a></td>
-      <td class="na" align="center">N/A</td>
-    </tr>
-    <tr>
-      <td>Allowing move constructors to throw [noexcept]</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html">N3050</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-    <tr>
-      <td>Defining move special member functions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html">N3053</a></td>
-      <td class="full" align="center">Clang 3.0</td>
-    </tr>
-
-    <tr class="separator">
-      <th align="center" colspan="3">Concurrency</th>
-    </tr>
-    <tr>
-      <td>Sequence points</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html">N2239</a></td>
-      <td class="svn" align="center">Clang 3.3</td>
-    </tr>
-    <tr>
-      <td>Atomic operations</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">N2427</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Strong Compare and Exchange</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2748.html">N2748</a></td>
-      <td class="full" align="center">Clang 3.1 <a href="#n2748">(2)</a></td>
-    </tr>
-    <tr>
-      <td>Bidirectional Fences</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm">N2752</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-
-    <tr>
-      <td>Memory model</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm">N2429</a></td>
-      <td class="full" align="center">Clang 3.2</td>
-    </tr>
-    <tr>
-      <td>Data-dependency ordering: atomics and memory model</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm">N2664</a></td>
-      <td class="full" align="center">Clang 3.2 <a href="#n2664">(3)</a></td>
-    </tr>
-    <tr>
-      <td>Propagating exceptions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html">N2179</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Abandoning a process and at_quick_exit</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm">N2440</a></td>
-      <td class="na" align="center">N/A</td>
-    </tr>
-    <tr>
-      <td>Allow atomics use in signal handlers</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm">N2547</a></td>
-      <td class="full" align="center">Clang 3.1</td>
-    </tr>
-    <tr>
-      <td>Thread-local storage</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm">N2659</a></td>
-      <td class="svn" align="center">Clang 3.3</td>
-    </tr>
-    <tr>
-      <td>Dynamic initialization and destruction with concurrency</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm">N2660</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-
-    <tr class="separator">
-      <th align="center" colspan="3">C99 Features in C++11</th>
-    </tr>
-    <tr>
-      <td><code>__func__</code> predefined identifier</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm">N2340</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>C99 preprocessor</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm">N1653</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td><code>long long</code></td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf">N1811</a></td>
-      <td class="full" align="center">Clang 2.9</td>
-    </tr>
-    <tr>
-      <td>Extended integral types</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf">N1988</a></td>
-      <td class="na" align="center">N/A <a href="#n1988">(4)</a></td>
-    </tr>
-</table>
-
-<p>
-<span id="n2761">(1): The <code>[[carries_dependency]]</code> attribute
-has no effect.</span><br>
-<span id="n2748">(2): All compare-exchange operations are emitted as
-strong compare-exchanges.</span><br>
-<span id="n2664">(3): <code>memory_order_consume</code> is lowered to
-<code>memory_order_acquire</code>.</span><br>
-<span id="n1988">(4): <code>__int128</code> is not treated as an extended
-integer type, because changing <code>intmax_t</code> would be an
-ABI-incompatible change.</span>
-</p>
-
-<h2 id="cxx14">C++1y implementation status</h2>
-
-<p>Clang is introducing support for the upcoming C++ language standard,
-provisionally named C++1y.  The following table describes which C++1y features
-have been implemented in Clang and in which Clang version they became
-available.</p>
-
-<p>You can use Clang in C++1y mode with the <code>-std=c++1y</code> option.</p>
-
-<table width="689" border="1" cellspacing="0">
- <tr>
-    <th>Language Feature</th>
-    <th>C++1y Proposal</th>
-    <th>Available in Clang?</th>
- </tr>
-    <tr>
-      <td>Tweak to certain C++ contextual conversions</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3323.pdf">N3323</a></td>
-      <td class="none" align="center">No</td>
-    </tr>
-    <tr>
-      <td>Binary literals</td>
-      <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf">N3472</a></td>
-      <td class="full" align="center">Yes</td>
-    </tr>
-    <tr>
-      <td>decltype(auto)</td>
-      <td rowspan=2 style="vertical-align:middle"><a href="http://isocpp.org/files/papers/N3638.html">N3638</a></td>
-      <td class="svn" align="center">Clang 3.3</td>
-    </tr>
-    <tr>
-      <td>Return type deduction for normal functions</td>
-      <td class="partial" align="center">Partial</td>
-    </tr>
-    <tr>
-      <td>Runtime-sized arrays with automatic storage duration</td>
-      <td><a href="http://isocpp.org/files/papers/N3639.html">N3639</a></td>
-      <td class="partial" align="center">Partial</td>
-    </tr>
-    <tr>
-      <td>Initialized lambda captures</td>
-      <td><a href="http://isocpp.org/files/papers/N3648.html">N3648</a></td>
-      <td class="none" align="center">No</td>
-    </tr>
-    <tr>
-      <td>Generic lambdas</td>
-      <td><a href="http://isocpp.org/files/papers/N3649.html">N3649</a></td>
-      <td class="partial" align="center">
-        No [<a href="https://github.com/faisalv/clang-glambda">WIP</a>]</td>
-    </tr>
-    <tr>
-      <td>Variable templates</td>
-      <td><a href="http://isocpp.org/files/papers/N3651.pdf">N3651</a></td>
-      <td class="none" align="center">No</td>
-    </tr>
-    <tr>
-      <td>Relaxing requirements on constexpr functions</td>
-      <td><a href="http://isocpp.org/files/papers/N3652.html">N3652</a></td>
-      <td class="partial" align="center">Partial</td>
-    </tr>
-    <tr>
-      <td>Member initializers and aggregates</td>
-      <td><a href="http://isocpp.org/files/papers/N3653.html">N3653</a></td>
-      <td class="svn" align="center">Clang 3.3</td>
-    </tr>
-    <tr>
-      <td>Clarifying memory allocation</td>
-      <td><!--<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3664.html">-->N3664<!--</a>--></td>
-      <td class="full" align="center">Yes</td>
-    </tr>
-</table>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/demo/DemoInfo.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/demo/DemoInfo.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/demo/DemoInfo.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,83 +0,0 @@
-
-<html>
-<head>
-<title>
-Demo page information
-</title>
-</head>
-
-<body>
-
-<h1>Demo page information</h1>
-
-<p>Press "back" or <a href=".">click here</a> to return to the demo 
-page.</p>
-
-<h2><a name="hints">Hints and Advice</a></h2>
-
-<ul>
-<li>The generated LLVM code will be easier to read if
-you use stdio (e.g., printf) than iostreams (e.g., std::cout).</li>
-
-<li>Unused inline functions and methods are not generated.  Instead 
-of '<tt>class foo { void bar() {}};</tt>',
-try writing '<tt>class foo { void bar(); }; void foo::bar() {}</tt>'.</li>
-
-<li>If you want to try out a file that uses non-standard header files,  you should
-  preprocess it (e.g., with the <tt>-save-temps</tt> or <tt>-E</tt> options to
-  <tt>gcc</tt>) then upload the result.</li>
-
-</ul>
-
-
-<h2><a name="demangle">Demangle C++ names with C++ filt</a></h2>
-
-<p>
-Select this option if you want to run the output LLVM IR through "c++filt", 
-which converts 'mangled' C++ names to their unmangled version. 
-Note that LLVM code produced will not be lexically valid, but it will 
-be easier to understand.
-</p>
-
-<h2><a name="lto">Run link-time optimizer</a></h2>
-
-<p>
-Select this option to run the LLVM link-time optimizer, which is designed to
-optimize across files in your application.  Since the demo page doesn't allow
-you to upload multiple files at once, and does not link in any libraries, we
-configured the demo page optimizer to assume there are no calls 
-coming in from outside the source file, allowing it to optimize more 
-aggressively.</p>
-
-<p>Note that you have to define 'main' in your program for this 
-to make much of a difference.
-</p>
-
-<h2><a name="stats">Show detailed pass statistics</a></h2>
-
-<p>
-Select this option to enable compilation timings and statistics from various
-optimizers.</p>
-
-
-<h2><a name="bcanalyzer">Analyze generated bytecode</a></h2>
-
-<p>
-Select this option to run the <a 
-href="http://llvm.org/cmds/llvm-bcanalyzer.html">llvm-bcanalyzer</a> tool
-on the generated bytecode, which introspects into the format of the .bc file
-itself.  </p>
-
-
-<h2><a name="llvm2cpp">Show C++ API code</a></h2>
-
-<p>
-Select this option to run the <a 
-href="http://llvm.org/cmds/llvm2cpp.html">llvm2cpp</a> tool
-on the generated bytecode, which auto generates the C++ API calls that could
-be used to create the .bc file.
-</p>
-
-</body>
-</html>
-

Modified: trunk/contrib/llvm/tools/clang/www/demo/index.cgi
===================================================================
--- trunk/contrib/llvm/tools/clang/www/demo/index.cgi	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/demo/index.cgi	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,461 +0,0 @@
-#!/usr/dcs/software/supported/bin/perl -w
-# LLVM Web Demo script
-#
-
-use strict;
-use CGI;
-use POSIX;
-use Mail::Send;
-
-$| = 1;
-
-my $ROOT = "/tmp/webcompile";
-#my $ROOT = "/home/vadve/lattner/webcompile";
-
-open( STDERR, ">&STDOUT" ) or die "can't redirect stderr to stdout";
-
-if ( !-d $ROOT ) { mkdir( $ROOT, 0777 ); }
-
-my $LOGFILE         = "$ROOT/log.txt";
-my $FORM_URL        = 'index.cgi';
-my $MAILADDR        = 'sabre at nondot.org';
-my $CONTACT_ADDRESS = 'Questions or comments?  Email the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev mailing list</a>.';
-my $LOGO_IMAGE_URL  = 'cathead.png';
-my $TIMEOUTAMOUNT   = 20;
-$ENV{'LD_LIBRARY_PATH'} = '/home/vadve/shared/localtools/fc1/lib/';
-
-my @PREPENDPATHDIRS =
-  (  
-    '/home/vadve/shared/llvm-gcc4.0-2.1/bin/',
-    '/home/vadve/shared/llvm-2.1/Release/bin');
-
-my $defaultsrc = "#include <stdio.h>\n#include <stdlib.h>\n\n" .
-                 "int power(int X) {\n  if (X == 0) return 1;\n" .
-                 "  return X*power(X-1);\n}\n\n" .
-                 "int main(int argc, char **argv) {\n" .
-                 "  printf(\"%d\\n\", power(atoi(argv[0])));\n}\n";
-
-sub getname {
-    my ($extension) = @_;
-    for ( my $count = 0 ; ; $count++ ) {
-        my $name =
-          sprintf( "$ROOT/_%d_%d%s", $$, $count, $extension );
-        if ( !-f $name ) { return $name; }
-    }
-}
-
-my $c;
-
-sub barf {
-    print "<b>", @_, "</b>\n";
-    print $c->end_html;
-    system("rm -f $ROOT/locked");
-    exit 1;
-}
-
-sub writeIntoFile {
-    my $extension = shift @_;
-    my $contents  = join "", @_;
-    my $name      = getname($extension);
-    local (*FILE);
-    open( FILE, ">$name" ) or barf("Can't write to $name: $!");
-    print FILE $contents;
-    close FILE;
-    return $name;
-}
-
-sub addlog {
-    my ( $source, $pid, $result ) = @_;
-    open( LOG, ">>$LOGFILE" );
-    my $time       = scalar localtime;
-    my $remotehost = $ENV{'REMOTE_ADDR'};
-    print LOG "[$time] [$remotehost]: $pid\n";
-    print LOG "<<<\n$source\n>>>\nResult is: <<<\n$result\n>>>\n";
-    close LOG;
-}
-
-sub dumpFile {
-    my ( $header, $file ) = @_;
-    my $result;
-    open( FILE, "$file" ) or barf("Can't read $file: $!");
-    while (<FILE>) {
-        $result .= $_;
-    }
-    close FILE;
-    my $UnhilightedResult = $result;
-    my $HtmlResult        =
-      "<h3>$header</h3>\n<pre>\n" . $c->escapeHTML($result) . "\n</pre>\n";
-    if (wantarray) {
-        return ( $UnhilightedResult, $HtmlResult );
-    }
-    else {
-        return $HtmlResult;
-    }
-}
-
-sub syntaxHighlightLLVM {
-  my ($input) = @_;
-  $input =~ s@\b(void|i8|i1|i16|i32|i64|float|double|type|label|opaque)\b@<span class="llvm_type">$1</span>@g;
-  $input =~ s@\b(add|sub|mul|div|rem|and|or|xor|setne|seteq|setlt|setgt|setle|setge|phi|tail|call|cast|to|shl|shr|vaarg|vanext|ret|br|switch|invoke|unwind|malloc|alloca|free|load|store|getelementptr|begin|end|true|false|declare|global|constant|const|internal|uninitialized|external|implementation|linkonce|weak|appending|null|to|except|not|target|endian|pointersize|big|little|volatile)\b@<span class="llvm_keyword">$1</span>@g;
-
-  # Add links to the FAQ.
-  $input =~ s@(_ZNSt8ios_base4Init[DC]1Ev)@<a href="../docs/FAQ.html#iosinit">$1</a>@g;
-  $input =~ s@\bundef\b@<a href="../docs/FAQ.html#undef">undef</a>@g;
-  return $input;
-}
-
-sub mailto {
-    my ( $recipient, $body ) = @_;
-    my $msg =
-      new Mail::Send( Subject => "LLVM Demo Page Run", To => $recipient );
-    my $fh = $msg->open();
-    print $fh $body;
-    $fh->close();
-}
-
-$c = new CGI;
-print $c->header;
-
-print <<EOF;
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-  <title>Try out LLVM in your browser!</title>
-  <style>
-    \@import url("syntax.css");
-    \@import url("http://llvm.org/llvm.css");
-  </style>
-</head>
-<body leftmargin="10" marginwidth="10">
-
-<div class="www_sectiontitle">
-  Try out LLVM in your browser!
-</div>
-
-<table border=0><tr><td>
-<img align=right width=100 height=111 src="$LOGO_IMAGE_URL">
-</td><td>
-EOF
-
-if ( -f "$ROOT/locked" ) {
-  my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$locktime) = 
-    stat("$ROOT/locked");
-  my $currtime = time();
-  if ($locktime + 60 > $currtime) {
-    print "This page is already in use by someone else at this ";
-    print "time, try reloading in a second or two.  Meow!</td></tr></table>'\n";
-    exit 0;
-  }
-}
-
-system("touch $ROOT/locked");
-
-print <<END;
-Bitter Melon the cat says, paste a C/C++ program in the text box or upload
-one from your computer, and you can see LLVM compile it, meow!!
-</td></tr></table><p>
-END
-
-print $c->start_multipart_form( 'POST', $FORM_URL );
-
-my $source = $c->param('source');
-
-
-# Start the user out with something valid if no code.
-$source = $defaultsrc if (!defined($source));
-
-print '<table border="0"><tr><td>';
-
-print "Type your source code in below: (<a href='DemoInfo.html#hints'>hints and 
-advice</a>)<br>\n";
-
-print $c->textarea(
-    -name    => "source",
-    -rows    => 16,
-    -columns => 60,
-    -default => $source
-), "<br>";
-
-print "Or upload a file: ";
-print $c->filefield( -name => 'uploaded_file', -default => '' );
-
-print "<p />\n";
-
-
-print '<p></td><td valign=top>';
-
-print "<center><h3>General Options</h3></center>";
-
-print "Source language: ",
-  $c->radio_group(
-    -name    => 'language',
-    -values  => [ 'C', 'C++' ],
-    -default => 'C'
-  ), "<p>";
-
-print $c->checkbox(
-    -name  => 'linkopt',
-    -label => 'Run link-time optimizer',
-    -checked => 'checked'
-  ),' <a href="DemoInfo.html#lto">?</a><br>';
-
-print $c->checkbox(
-    -name  => 'showstats',
-    -label => 'Show detailed pass statistics'
-  ), ' <a href="DemoInfo.html#stats">?</a><br>';
-
-print $c->checkbox(
-    -name  => 'cxxdemangle',
-    -label => 'Demangle C++ names'
-  ),' <a href="DemoInfo.html#demangle">?</a><p>';
-
-
-print "<center><h3>Output Options</h3></center>";
-
-print $c->checkbox(
-    -name => 'showbcanalysis',
-    -label => 'Show detailed bytecode analysis'
-  ),' <a href="DemoInfo.html#bcanalyzer">?</a><br>';
-
-print $c->checkbox(
-    -name => 'showllvm2cpp',
-    -label => 'Show LLVM C++ API code'
-  ), ' <a href="DemoInfo.html#llvm2cpp">?</a>';
-
-print "</td></tr></table>";
-
-print "<center>", $c->submit(-value=> 'Compile Source Code'), 
-      "</center>\n", $c->endform;
-
-print "\n<p>If you have questions about the LLVM code generated by the
-front-end, please check the <a href='/docs/FAQ.html#cfe_code'>FAQ</a> and
-the demo page <a href='DemoInfo.html#hints'>hints section</a>.
-</p>\n";
-
-$ENV{'PATH'} = ( join ( ':', @PREPENDPATHDIRS ) ) . ":" . $ENV{'PATH'};
-
-sub sanitychecktools {
-    my $sanitycheckfail = '';
-
-    # insert tool-specific sanity checks here
-    $sanitycheckfail .= ' llvm-dis'
-      if `llvm-dis --help 2>&1` !~ /ll disassembler/;
-
-    $sanitycheckfail .= ' llvm-gcc'
-      if ( `llvm-gcc --version 2>&1` !~ /Free Software Foundation/ );
-
-    $sanitycheckfail .= ' llvm-ld'
-      if `llvm-ld --help 2>&1` !~ /llvm linker/;
-
-    $sanitycheckfail .= ' llvm-bcanalyzer'
-      if `llvm-bcanalyzer --help 2>&1` !~ /bcanalyzer/;
-
-    barf(
-"<br/>The demo page is currently unavailable. [tools: ($sanitycheckfail ) failed sanity check]"
-      )
-      if $sanitycheckfail;
-}
-
-sanitychecktools();
-
-sub try_run {
-    my ( $program, $commandline, $outputFile ) = @_;
-    my $retcode = 0;
-
-    eval {
-        local $SIG{ALRM} = sub { die "timeout"; };
-        alarm $TIMEOUTAMOUNT;
-        $retcode = system($commandline);
-        alarm 0;
-    };
-    if ( $@ and $@ =~ /timeout/ ) { 
-      barf("Program $program took too long, compile time limited for the web script, sorry!\n"); 
-    }
-    if ( -s $outputFile ) {
-        print scalar dumpFile( "Output from $program", $outputFile );
-    }
-    #print "<p>Finished dumping command output.</p>\n";
-    if ( WIFEXITED($retcode) && WEXITSTATUS($retcode) != 0 ) {
-        barf(
-"$program exited with an error. Please correct source and resubmit.<p>\n" .
-"Please note that this form only allows fully formed and correct source" .
-" files.  It will not compile fragments of code.<p>"
-        );
-    }
-    if ( WIFSIGNALED($retcode) != 0 ) {
-        my $sig = WTERMSIG($retcode);
-        barf(
-            "Ouch, $program caught signal $sig. Sorry, better luck next time!\n"
-        );
-    }
-}
-
-my %suffixes = (
-    'Java'             => '.java',
-    'JO99'             => '.jo9',
-    'C'                => '.c',
-    'C++'              => '.cc',
-    'Stacker'          => '.st',
-    'preprocessed C'   => '.i',
-    'preprocessed C++' => '.ii'
-);
-my %languages = (
-    '.jo9'  => 'JO99',
-    '.java' => 'Java',
-    '.c'    => 'C',
-    '.i'    => 'preprocessed C',
-    '.ii'   => 'preprocessed C++',
-    '.cc'   => 'C++',
-    '.cpp'  => 'C++',
-    '.st'   => 'Stacker'
-);
-
-my $uploaded_file_name = $c->param('uploaded_file');
-if ($uploaded_file_name) {
-    if ($source) {
-        barf(
-"You must choose between uploading a file and typing code in. You can't do both at the same time."
-        );
-    }
-    $uploaded_file_name =~ s/^.*(\.[A-Za-z]+)$/$1/;
-    my $language = $languages{$uploaded_file_name};
-    $c->param( 'language', $language );
-
-    print "<p>Processing uploaded file. It looks like $language.</p>\n";
-    my $fh = $c->upload('uploaded_file');
-    if ( !$fh ) {
-        barf( "Error uploading file: " . $c->cgi_error );
-    }
-    while (<$fh>) {
-        $source .= $_;
-    }
-    close $fh;
-}
-
-if ($c->param('source')) {
-    print $c->hr;
-    my $extension = $suffixes{ $c->param('language') };
-    barf "Unknown language; can't compile\n" unless $extension;
-
-    # Add a newline to the source here to avoid a warning from gcc.
-    $source .= "\n";
-
-    # Avoid security hole due to #including bad stuff.
-    $source =~
-s@(\n)?#include.*[<"](.*\.\..*)[">].*\n@$1#error "invalid #include file $2 detected"\n at g;
-
-    my $inputFile = writeIntoFile( $extension, $source );
-    my $pid       = $$;
-
-    my $bytecodeFile = getname(".bc");
-    my $outputFile   = getname(".llvm-gcc.out");
-    my $timerFile    = getname(".llvm-gcc.time");
-
-    my $stats = '';
-    if ( $extension eq ".st" ) {
-      $stats = "-stats -time-passes "
-	if ( $c->param('showstats') );
-      try_run( "llvm Stacker front-end (stkrc)",
-        "stkrc $stats -o $bytecodeFile $inputFile > $outputFile 2>&1",
-        $outputFile );
-    } else {
-      #$stats = "-Wa,--stats,--time-passes,--info-output-file=$timerFile"
-      $stats = "-ftime-report"
-	if ( $c->param('showstats') );
-      try_run( "llvm C/C++ front-end (llvm-gcc)",
-	"llvm-gcc -emit-llvm -W -Wall -O2 $stats -o $bytecodeFile -c $inputFile > $outputFile 2>&1",
-        $outputFile );
-    }
-
-    if ( $c->param('showstats') && -s $timerFile ) {
-        my ( $UnhilightedResult, $HtmlResult ) =
-          dumpFile( "Statistics for front-end compilation", $timerFile );
-        print "$HtmlResult\n";
-    }
-
-    if ( $c->param('linkopt') ) {
-        my $stats      = '';
-        my $outputFile = getname(".gccld.out");
-        my $timerFile  = getname(".gccld.time");
-        $stats = "--stats --time-passes --info-output-file=$timerFile"
-          if ( $c->param('showstats') );
-        my $tmpFile = getname(".bc");
-        try_run(
-            "optimizing linker (llvm-ld)",
-"llvm-ld $stats -o=$tmpFile $bytecodeFile > $outputFile 2>&1",
-            $outputFile
-        );
-        system("mv $tmpFile.bc $bytecodeFile");
-        system("rm $tmpFile");
-
-        if ( $c->param('showstats') && -s $timerFile ) {
-            my ( $UnhilightedResult, $HtmlResult ) =
-              dumpFile( "Statistics for optimizing linker", $timerFile );
-            print "$HtmlResult\n";
-        }
-    }
-
-    print " Bytecode size is ", -s $bytecodeFile, " bytes.\n";
-
-    my $disassemblyFile = getname(".ll");
-    try_run( "llvm-dis",
-        "llvm-dis -o=$disassemblyFile $bytecodeFile > $outputFile 2>&1",
-        $outputFile );
-
-    if ( $c->param('cxxdemangle') ) {
-        print " Demangling disassembler output.\n";
-        my $tmpFile = getname(".ll");
-        system("c++filt < $disassemblyFile > $tmpFile 2>&1");
-        system("mv $tmpFile $disassemblyFile");
-    }
-
-    my ( $UnhilightedResult, $HtmlResult );
-    if ( -s $disassemblyFile ) {
-        ( $UnhilightedResult, $HtmlResult ) =
-          dumpFile( "Output from LLVM disassembler", $disassemblyFile );
-        print syntaxHighlightLLVM($HtmlResult);
-    }
-    else {
-        print "<p>Hmm, that's weird, llvm-dis didn't produce any output.</p>\n";
-    }
-
-    if ( $c->param('showbcanalysis') ) {
-      my $analFile = getname(".bca");
-      try_run( "llvm-bcanalyzer", "llvm-bcanalyzer $bytecodeFile > $analFile 2>&1", 
-        $analFile);
-    }
-    if ($c->param('showllvm2cpp') ) {
-      my $l2cppFile = getname(".l2cpp");
-      try_run("llvm2cpp","llvm2cpp $bytecodeFile -o $l2cppFile 2>&1",
-        $l2cppFile);
-    }
-
-    # Get the source presented by the user to CGI, convert newline sequences to simple \n.
-    my $actualsrc = $c->param('source');
-    $actualsrc =~ s/\015\012/\n/go;
-    # Don't log this or mail it if it is the default code.
-    if ($actualsrc ne $defaultsrc) {
-    addlog( $source, $pid, $UnhilightedResult );
-
-    my ( $ip, $host, $lg, $lines );
-    chomp( $lines = `wc -l < $inputFile` );
-    $lg = $c->param('language');
-    $ip = $c->remote_addr();
-    chomp( $host = `host $ip` ) if $ip;
-    mailto( $MAILADDR,
-        "--- Query: ---\nFrom: ($ip) $host\nInput: $lines lines of $lg\n"
-          . "C++ demangle = "
-          . ( $c->param('cxxdemangle') ? 1 : 0 )
-          . ", Link opt = "
-          . ( $c->param('linkopt') ? 1 : 0 ) . "\n\n"
-          . ", Show stats = "
-          . ( $c->param('showstats') ? 1 : 0 ) . "\n\n"
-          . "--- Source: ---\n$source\n"
-          . "--- Result: ---\n$UnhilightedResult\n" );
-    }
-    unlink( $inputFile, $bytecodeFile, $outputFile, $disassemblyFile );
-}
-
-print $c->hr, "<address>$CONTACT_ADDRESS</address>", $c->end_html;
-system("rm $ROOT/locked");
-exit 0;

Modified: trunk/contrib/llvm/tools/clang/www/demo/syntax.css
===================================================================
--- trunk/contrib/llvm/tools/clang/www/demo/syntax.css	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/demo/syntax.css	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,4 +0,0 @@
-/* LLVM syntax highlighting for the Web */
-
-.llvm_type    { font-style: oblique; color: green }
-.llvm_keyword { font-weight: bold; color: blue }

Modified: trunk/contrib/llvm/tools/clang/www/diagnostics.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/diagnostics.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/diagnostics.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,407 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-  <title>Clang - Expressive Diagnostics</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <style type="text/css">
-  .warn { color:magenta; }
-  .err { color:red; }
-  .snip { color:darkgreen; }
-  .point { color:blue; }
-  </style>
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-
-<!--=======================================================================-->
-<h1>Expressive Diagnostics</h1>
-<!--=======================================================================-->
-
-<p>In addition to being fast and functional, we aim to make Clang extremely user
-friendly.  As far as a command-line compiler goes, this basically boils down to
-making the diagnostics (error and warning messages) generated by the compiler
-be as useful as possible.  There are several ways that we do this.  This section
-talks about the experience provided by the command line compiler, contrasting
-Clang output to GCC 4.2's output in several examples.
-<!--
-Other clients
-that embed Clang and extract equivalent information through internal APIs.-->
-</p>
-
-<h2>Column Numbers and Caret Diagnostics</h2>
-
-<p>First, all diagnostics produced by clang include full column number
-information. The clang command-line compiler driver uses this information
-to print "point diagnostics".
-(IDEs can use the information to display in-line error markup.)
-Precise error location in the source is a feature provided by many commercial
-compilers, but is generally missing from open source
-compilers.  This is nice because it makes it very easy to understand exactly
-what is wrong in a particular piece of code</p>
-
-<p>The point (the blue "^" character) exactly shows where the problem is, even
-inside of a string.  This makes it really easy to jump to the problem and
-helps when multiple instances of the same character occur on a line. (We'll 
-revisit this more in following examples.)</p>
-
-<pre>
-  $ <b>gcc-4.2 -fsyntax-only -Wformat format-strings.c</b>
-  format-strings.c:91: warning: too few arguments for format
-  $ <b>clang -fsyntax-only format-strings.c</b>
-  format-strings.c:91:13: <span class="warn">warning:</span> '.*' specified field precision is missing a matching 'int' argument
-  <span class="snip">  printf("%.*d");</span>
-  <span class="point">            ^</span>
-</pre>
-
-<h2>Range Highlighting for Related Text</h2>
-
-<p>Clang captures and accurately tracks range information for expressions,
-statements, and other constructs in your program and uses this to make
-diagnostics highlight related information.  In the following somewhat
-nonsensical example you can see that you don't even need to see the original source code to
-understand what is wrong based on the Clang error. Because clang prints a
-point, you know exactly <em>which</em> plus it is complaining about.  The range
-information highlights the left and right side of the plus which makes it
-immediately obvious what the compiler is talking about.
-Range information is very useful for
-cases involving precedence issues and many other cases.</p>
-
-<pre>
-  $ <b>gcc-4.2 -fsyntax-only t.c</b>
-  t.c:7: error: invalid operands to binary + (have 'int' and 'struct A')
-  $ <b>clang -fsyntax-only t.c</b>
-  t.c:7:39: <span class="err">error:</span> invalid operands to binary expression ('int' and 'struct A')
-  <span class="snip">  return y + func(y ? ((SomeA.X + 40) + SomeA) / 42 + SomeA.X : SomeA.X);</span>
-  <span class="point">                       ~~~~~~~~~~~~~~ ^ ~~~~~</span>
-</pre>
-
-<h2>Precision in Wording</h2>
-
-<p>A detail is that we have tried really hard to make the diagnostics that come
-out of clang contain exactly the pertinent information about what is wrong and
-why.  In the example above, we tell you what the inferred types are for
-the left and right hand sides, and we don't repeat what is obvious from the
-point (e.g., that this is a "binary +").</p>
-
-<p>Many other examples abound. In the following example, not only do we tell you that there is a problem with the *
-and point to it, we say exactly why and tell you what the type is (in case it is
-a complicated subexpression, such as a call to an overloaded function).  This
-sort of attention to detail makes it much easier to understand and fix problems
-quickly.</p>
-
-<pre>
-  $ <b>gcc-4.2 -fsyntax-only t.c</b>
-  t.c:5: error: invalid type argument of 'unary *'
-  $ <b>clang -fsyntax-only t.c</b>
-  t.c:5:11: <span class="err">error:</span> indirection requires pointer operand ('int' invalid)
-  <span class="snip">  int y = *SomeA.X;</span>
-  <span class="point">          ^~~~~~~~</span>
-</pre>
-
-<h2>No Pretty Printing of Expressions in Diagnostics</h2>
-
-<p>Since Clang has range highlighting, it never needs to pretty print your code
-back out to you.  GCC can produce inscrutible error messages in some cases when
-it tries to do this.  In this example P and Q have type "int*":</p>
-
-<pre>
-  $ <b>gcc-4.2 -fsyntax-only t.c</b>
-  #'exact_div_expr' not supported by pp_c_expression#'t.c:12: error: called object  is not a function
-  $ <b>clang -fsyntax-only t.c</b>
-  t.c:12:8: <span class="err">error:</span> called object type 'int' is not a function or function pointer
-  <span class="snip">  (P-Q)();</span>
-  <span class="point">  ~~~~~^</span>
-</pre>
-
-<p>This can be particularly bad in G++, which often emits errors
-   containing lowered vtable references.  For example:</p>
-  
-<pre>
-  $ <b>cat t.cc</b>
-  struct a {
-    virtual int bar();
-  };
-  
-  struct foo : public virtual a {
-  };
-  
-  void test(foo *P) {
-    return P->bar() + *P;
-  }
-  $ <b>gcc-4.2 t.cc</b>
-  t.cc: In function 'void test(foo*)':
-  t.cc:9: error: no match for 'operator+' in '(((a*)P) + (*(long int*)(P->foo::<anonymous>.a::_vptr$a + -0x00000000000000020)))->a::bar() + * P'
-  t.cc:9: error: return-statement with a value, in function returning 'void'
-  $ <b>clang t.cc</b>
-  t.cc:9:18: <span class="err">error:</span> invalid operands to binary expression ('int' and 'foo')
-  <span class="snip">  return P->bar() + *P;</span>
-  <span class="point">         ~~~~~~~~ ^ ~~</span>
-</pre>
-  
-
-<h2>Typedef Preservation and Selective Unwrapping</h2>
-
-<p>Many programmers use high-level user defined types, typedefs, and other
-syntactic sugar to refer to types in their program.  This is useful because they
-can abbreviate otherwise very long types and it is useful to preserve the
-typename in diagnostics.  However, sometimes very simple typedefs can wrap
-trivial types and it is important to strip off the typedef to understand what
-is going on.  Clang aims to handle both cases well.<p>
-
-<p>The following example shows where it is important to preserve
-a typedef in C. Here the type printed by GCC isn't even valid, but if the error
-were about a very long and complicated type (as often happens in C++) the error
-message would be ugly just because it was long and hard to read.</p>
-
-<pre>
-  $ <b>gcc-4.2 -fsyntax-only t.c</b>
-  t.c:15: error: invalid operands to binary / (have 'float __vector__' and 'const int *')
-  $ <b>clang -fsyntax-only t.c</b>
-  t.c:15:11: <span class="err">error:</span> can't convert between vector values of different size ('__m128' and 'int const *')
-  <span class="snip">  myvec[1]/P;</span>
-  <span class="point">  ~~~~~~~~^~</span>
-</pre>
-
-<p>The following example shows where it is useful for the compiler to expose
-underlying details of a typedef. If the user was somehow confused about how the
-system "pid_t" typedef is defined, Clang helpfully displays it with "aka".</p>
-
-<pre>
-  $ <b>gcc-4.2 -fsyntax-only t.c</b>
-  t.c:13: error: request for member 'x' in something not a structure or union
-  $ <b>clang -fsyntax-only t.c</b>
-  t.c:13:9: <span class="err">error:</span> member reference base type 'pid_t' (aka 'int') is not a structure or union
-  <span class="snip">  myvar = myvar.x;</span>
-  <span class="point">          ~~~~~ ^</span>
-</pre>
-
-<p>In C++, type preservation includes retaining any qualification written into type names. For example, if we take a small snippet of code such as:
-
-<blockquote>
-<pre>
-namespace services {
-  struct WebService {  };
-}
-namespace myapp {
-  namespace servers {
-    struct Server {  };
-  }
-}
-
-using namespace myapp;
-void addHTTPService(servers::Server const &server, ::services::WebService const *http) {
-  server += http;
-}
-</pre>
-</blockquote>
-
-<p>and then compile it, we see that Clang is both providing more accurate information and is retaining the types as written by the user (e.g., "servers::Server", "::services::WebService"):
-
-<pre>
-  $ <b>g++-4.2 -fsyntax-only t.cpp</b>
-  t.cpp:9: error: no match for 'operator+=' in 'server += http'
-  $ <b>clang -fsyntax-only t.cpp</b>
-  t.cpp:9:10: <span class="err">error:</span> invalid operands to binary expression ('servers::Server const' and '::services::WebService const *')
-    <span class="snip">server += http;</span>
-    <span class="point">~~~~~~ ^  ~~~~</span>
-</pre>
-
-<p>Naturally, type preservation extends to uses of templates, and Clang retains information about how a particular template specialization (like <code>std::vector<Real></code>) was spelled within the source code. For example:</p>
-
-<pre>
-  $ <b>g++-4.2 -fsyntax-only t.cpp</b>
-  t.cpp:12: error: no match for 'operator=' in 'str = vec'
-  $ <b>clang -fsyntax-only t.cpp</b>
-  t.cpp:12:7: <span class="err">error:</span> incompatible type assigning 'vector<Real>', expected 'std::string' (aka 'class std::basic_string<char>')
-    <span class="snip">str = vec</span>;
-        <span class="point">^ ~~~</span>
-</pre>
-
-<h2>Fix-it Hints</h2>
-
-<p>"Fix-it" hints provide advice for fixing small, localized problems
-in source code. When Clang produces a diagnostic about a particular
-problem that it can work around (e.g., non-standard or redundant
-syntax, missing keywords, common mistakes, etc.), it may also provide
-specific guidance in the form of a code transformation to correct the
-problem. In the following example, Clang warns about the use of a GCC
-extension that has been considered obsolete since 1993. The underlined
-code should be removed, then replaced with the code below the
-point line (".x =" or ".y =", respectively).</p>
-
-<pre>
-  $ <b>clang t.c</b>
-  t.c:5:28: <span class="warn">warning:</span> use of GNU old-style field designator extension
-  <span class="snip">struct point origin = { x: 0.0, y: 0.0 };</span>
-                          <span class="err">~~</span> <span class="point">^</span>
-                          <span class="snip">.x = </span>
-  t.c:5:36: <span class="warn">warning:</span> use of GNU old-style field designator extension
-  <span class="snip">struct point origin = { x: 0.0, y: 0.0 };</span>
-                                  <span class="err">~~</span> <span class="point">^</span>
-                                  <span class="snip">.y = </span>
-</pre>
-
-<p>"Fix-it" hints are most useful for
-working around common user errors and misconceptions. For example, C++ users
-commonly forget the syntax for explicit specialization of class templates,
-as in the error in the following example. Again, after describing the problem,
-Clang provides the fix--add <code>template<></code>--as part of the
-diagnostic.<p>
-
-<pre>
-  $ <b>clang t.cpp</b>
-  t.cpp:9:3: <span class="err">error:</span> template specialization requires 'template<>'
-    struct iterator_traits<file_iterator> {
-    <span class="point">^</span>
-    <span class="snip">template<> </span>
-</pre>
-
-<h2>Template Type Diffing</h2>
-
-<p>Templates types can be long and difficult to read.  Moreso when part of an
-error message.  Instead of just printing out the type name, Clang has enough
-information to remove the common elements and highlight the differences.  To
-show the template structure more clearly, the templated type can also be
-printed as an indented text tree.</p>
-
-Default: template diff with type elision
-<pre>
-t.cc:4:5: <span class="note">note:</span> candidate function not viable: no known conversion from 'vector<map<[...], <span class="template-highlight">float</span>>>' to 'vector<map<[...], <span class="template-highlight">double</span>>>' for 1st argument;
-</pre>
--fno-elide-type: template diff without elision
-<pre>
-t.cc:4:5: <span class="note">note:</span> candidate function not viable: no known conversion from 'vector<map<int, <span class="template-highlight">float</span>>>' to 'vector<map<int, <span class="template-highlight">double</span>>>' for 1st argument;
-</pre>
--fdiagnostics-show-template-tree: template tree printing with elision
-<pre>
-t.cc:4:5: <span class="note">note:</span> candidate function not viable: no known conversion for 1st argument;
-  vector<
-    map<
-      [...], 
-      [<span class="template-highlight">float</span> != <span class="template-highlight">double</span>]>>
-</pre>
--fdiagnostics-show-template-tree -fno-elide-type: template tree printing with no elision
-<pre>
-t.cc:4:5: <span class="note">note:M</span> candidate function not viable: no known conversion for 1st argument;
-  vector<
-    map<
-      int, 
-      [<span class="template-highlight">float</span> != <span class="template-highlight">double</span>]>>
-</pre>
-
-<h2>Automatic Macro Expansion</h2>
-
-<p>Many errors happen in macros that are sometimes deeply nested.  With
-traditional compilers, you need to dig deep into the definition of the macro to
-understand how you got into trouble.  The following simple example shows how
-Clang helps you out by automatically printing instantiation information and
-nested range information for diagnostics as they are instantiated through macros
-and also shows how some of the other pieces work in a bigger example.</p>
-
-<pre>
-  $ <b>gcc-4.2 -fsyntax-only t.c</b>
-  t.c: In function 'test':
-  t.c:80: error: invalid operands to binary < (have 'struct mystruct' and 'float')
-  $ <b>clang -fsyntax-only t.c</b>
-  t.c:80:3: <span class="err">error:</span> invalid operands to binary expression ('typeof(P)' (aka 'struct mystruct') and 'typeof(F)' (aka 'float'))
-  <span class="snip">  X = MYMAX(P, F);</span>
-  <span class="point">      ^~~~~~~~~~~</span>
-  t.c:76:94: note: instantiated from:
-  <span class="snip">#define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })</span>
-  <span class="point">                                                                                         ~~~ ^ ~~~</span>
-</pre>
-
-<p>Here's another real world warning that occurs in the "window" Unix package (which
-implements the "wwopen" class of APIs):</p>
-
-<pre>
-  $ <b>clang -fsyntax-only t.c</b>
-  t.c:22:2: <span class="warn">warning:</span> type specifier missing, defaults to 'int'
-  <span class="snip">        ILPAD();</span>
-  <span class="point">        ^</span>
-  t.c:17:17: note: instantiated from:
-  <span class="snip">#define ILPAD() PAD((NROW - tt.tt_row) * 10)    /* 1 ms per char */</span>
-  <span class="point">                ^</span>
-  t.c:14:2: note: instantiated from:
-  <span class="snip">        register i; \</span>
-  <span class="point">        ^</span>
-</pre>
-
-<p>In practice, we've found that Clang's treatment of macros is actually more useful in multiply nested
-macros that in simple ones.</p>
-
-<h2>Quality of Implementation and Attention to Detail</h2>
-
-<p>Finally, we have put a lot of work polishing the little things, because
-little things add up over time and contribute to a great user experience.</p>
-
-<p>The following example shows a trivial little tweak, where we tell you to put the semicolon at
-the end of the line that is missing it (line 4) instead of at the beginning of
-the following line (line 5).  This is particularly important with fixit hints
-and point diagnostics, because otherwise you don't get the important context.
-</p>
-
-<pre>
-  $ <b>gcc-4.2 t.c</b>
-  t.c: In function 'foo':
-  t.c:5: error: expected ';' before '}' token
-  $ <b>clang t.c</b>
-  t.c:4:8: <span class="err">error:</span> expected ';' after expression
-  <span class="snip">  bar()</span>
-  <span class="point">       ^</span>
-  <span class="point">       ;</span>
-</pre>
-
-<p>The following example shows much better error recovery than GCC. The message coming out
-of GCC is completely useless for diagnosing the problem. Clang tries much harder
-and produces a much more useful diagnosis of the problem.</p>
-
-<pre>
-  $ <b>gcc-4.2 t.c</b>
-  t.c:3: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
-  $ <b>clang t.c</b>
-  t.c:3:1: <span class="err">error:</span> unknown type name 'foo_t'
-  <span class="snip">foo_t *P = 0;</span>
-  <span class="point">^</span>
-</pre>
-
-<p>The following example shows that we recover from the simple case of
-forgetting a ; after a struct definition much better than GCC.</p>
-
-<pre>
-  $ <b>cat t.cc</b>
-  template<class T>
-  class a {}
-  class temp {};
-  a<temp> b;
-  struct b {
-  }
-  $ <b>gcc-4.2 t.cc</b>
-  t.cc:3: error: multiple types in one declaration
-  t.cc:4: error: non-template type 'a' used as a template
-  t.cc:4: error: invalid type in declaration before ';' token
-  t.cc:6: error: expected unqualified-id at end of input
-  $ <b>clang t.cc</b>
-  t.cc:2:11: <span class="err">error:</span> expected ';' after class
-  <span class="snip">class a {}</span>
-  <span class="point">          ^</span>
-  <span class="point">          ;</span>
-  t.cc:6:2: <span class="err">error:</span> expected ';' after struct
-  <span class="snip">}</span>
-  <span class="point"> ^</span>
-  <span class="point"> ;</span>
-</pre>
-
-<p>While each of these details is minor, we feel that they all add up to provide
-a much more polished experience.</p>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/features.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/features.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/features.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,428 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Clang - Features and Goals</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <style type="text/css">
-</style>
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<!--*************************************************************************-->
-<h1>Clang - Features and Goals</h1>
-<!--*************************************************************************-->
-
-<p>
-This page describes the <a href="index.html#goals">features and goals</a> of
-Clang in more detail and gives a more broad explanation about what we mean.
-These features are:
-</p>
-
-<p>End-User Features:</p>
-
-<ul>
-<li><a href="#performance">Fast compiles and low memory use</a></li>
-<li><a href="#expressivediags">Expressive diagnostics</a></li>
-<li><a href="#gcccompat">GCC compatibility</a></li>
-</ul>
-
-<p>Utility and Applications:</p>
-
-<ul>
-<li><a href="#libraryarch">Library based architecture</a></li>
-<li><a href="#diverseclients">Support diverse clients</a></li>
-<li><a href="#ideintegration">Integration with IDEs</a></li>
-<li><a href="#license">Use the LLVM 'BSD' License</a></li>
-</ul>
-
-<p>Internal Design and Implementation:</p>
-
-<ul>
-<li><a href="#real">A real-world, production quality compiler</a></li>
-<li><a href="#simplecode">A simple and hackable code base</a></li>
-<li><a href="#unifiedparser">A single unified parser for C, Objective C, C++,
-    and Objective C++</a></li>
-<li><a href="#conformance">Conformance with C/C++/ObjC and their
-    variants</a></li>
-</ul>
-
-<!--*************************************************************************-->
-<h2><a name="enduser">End-User Features</a></h2>
-<!--*************************************************************************-->
-
-
-<!--=======================================================================-->
-<h3><a name="performance">Fast compiles and Low Memory Use</a></h3>
-<!--=======================================================================-->
-
-<p>A major focus of our work on clang is to make it fast, light and scalable.
-The library-based architecture of clang makes it straight-forward to time and
-profile the cost of each layer of the stack, and the driver has a number of
-options for performance analysis.</p>
-
-<p>While there is still much that can be done, we find that the clang front-end
-is significantly quicker than gcc and uses less memory  For example, when
-compiling "Carbon.h" on Mac OS/X, we see that clang is 2.5x faster than GCC:</p>
-
-<img class="img_slide" src="feature-compile1.png" width="400" height="300"
-     alt="Time to parse carbon.h: -fsyntax-only">
-
-<p>Carbon.h is a monster: it transitively includes 558 files, 12.3M of code,
-declares 10000 functions, has 2000 struct definitions, 8000 fields, 20000 enum
-constants, etc (see slide 25+ of the <a href="clang_video-07-25-2007.html">clang 
-talk</a> for more information). It is also #include'd into almost every C file
-in a GUI app on the Mac, so its compile time is very important.</p>
-
-<p>From the slide above, you can see that we can measure the time to preprocess
-the file independently from the time to parse it, and independently from the
-time to build the ASTs for the code.  GCC doesn't provide a way to measure the
-parser without AST building (it only provides -fsyntax-only).  In our
-measurements, we find that clang's preprocessor is consistently 40% faster than
-GCCs, and the parser + AST builder is ~4x faster than GCC's.  If you have
-sources that do not depend as heavily on the preprocessor (or if you 
-use Precompiled Headers) you may see a much bigger speedup from clang.
-</p>
-
-<p>Compile time performance is important, but when using clang as an API, often
-memory use is even moreso: the less memory the code takes the more code you can
-fit into memory at a time (useful for whole program analysis tools, for
-example).</p>
-
-<img class="img_slide" src="feature-memory1.png" width="400" height="300"
-     alt="Space">
-
-<p>Here we see a huge advantage of clang: its ASTs take <b>5x less memory</b>
-than GCC's syntax trees, despite the fact that clang's ASTs capture far more 
-source-level information than GCC's trees do.  This feat is accomplished through
-the use of carefully designed APIs and efficient representations.</p>
-
-<p>In addition to being efficient when pitted head-to-head against GCC in batch
-mode, clang is built with a <a href="#libraryarch">library based 
-architecture</a> that makes it relatively easy to adapt it and build new tools
-with it.  This means that it is often possible to apply out-of-the-box thinking
-and novel techniques to improve compilation in various ways.</p> 
-  
-<img class="img_slide" src="feature-compile2.png" width="400" height="300"
-     alt="Preprocessor Speeds: GCC 4.2 vs clang-all">
-
-<p>This slide shows how the clang preprocessor can be used to make "distcc"
-parallelization <b>3x</b> more scalable than when using the GCC preprocessor.
-"distcc" quickly bottlenecks on the preprocessor running on the central driver
-machine, so a fast preprocessor is very useful.  Comparing the first two bars
-of each group shows how a ~40% faster preprocessor can reduce preprocessing time
-of these large C++ apps by about 40% (shocking!).</p>
-
-<p>The third bar on the slide is the interesting part: it shows how trivial
-caching of file system accesses across invocations of the preprocessor allows 
-clang to reduce time spent in the kernel by 10x, making distcc over 3x more
-scalable.  This is obviously just one simple hack, doing more interesting things
-(like caching tokens across preprocessed files) would yield another substantial
-speedup.</p>
-
-<p>The clean framework-based design of clang means that many things are possible
-that would be very difficult in other systems, for example incremental
-compilation, multithreading, intelligent caching, etc.  We are only starting
-to tap the full potential of the clang design.</p>
-
-
-<!--=======================================================================-->
-<h3><a name="expressivediags">Expressive Diagnostics</a></h3>
-<!--=======================================================================-->
-
-<p>In addition to being fast and functional, we aim to make Clang extremely user
-friendly.  As far as a command-line compiler goes, this basically boils down to
-making the diagnostics (error and warning messages) generated by the compiler
-be as useful as possible.  There are several ways that we do this, but the
-most important are pinpointing exactly what is wrong in the program,
-highlighting related information so that it is easy to understand at a glance,
-and making the wording as clear as possible.</p>
-
-<p>Here is one simple example that illustrates the difference between a typical
-GCC and Clang diagnostic:</p>
-
-<pre>
-  $ <b>gcc-4.2 -fsyntax-only t.c</b>
-  t.c:7: error: invalid operands to binary + (have 'int' and 'struct A')
-  $ <b>clang -fsyntax-only t.c</b>
-  t.c:7:39: error: invalid operands to binary expression ('int' and 'struct A')
-  <span style="color:darkgreen">  return y + func(y ? ((SomeA.X + 40) + SomeA) / 42 + SomeA.X : SomeA.X);</span>
-  <span style="color:blue">                       ~~~~~~~~~~~~~~ ^ ~~~~~</span>
-</pre>
-
-<p>Here you can see that you don't even need to see the original source code to
-understand what is wrong based on the Clang error: Because clang prints a
-caret, you know exactly <em>which</em> plus it is complaining about.  The range
-information highlights the left and right side of the plus which makes it
-immediately obvious what the compiler is talking about, which is very useful for
-cases involving precedence issues and many other situations.</p>
-
-<p>Clang diagnostics are very polished and have many features.  For more 
-information and examples, please see the <a href="diagnostics.html">Expressive
-Diagnostics</a> page.</p>
-
-<!--=======================================================================-->
-<h3><a name="gcccompat">GCC Compatibility</a></h3>
-<!--=======================================================================-->
-
-<p>GCC is currently the defacto-standard open source compiler today, and it
-routinely compiles a huge volume of code.  GCC supports a huge number of
-extensions and features (many of which are undocumented) and a lot of 
-code and header files depend on these features in order to build.</p>
-
-<p>While it would be nice to be able to ignore these extensions and focus on
-implementing the language standards to the letter, pragmatics force us to
-support the GCC extensions that see the most use.  Many users just want their
-code to compile, they don't care to argue about whether it is pedantically C99
-or not.</p>
-
-<p>As mentioned above, all
-extensions are explicitly recognized as such and marked with extension
-diagnostics, which can be mapped to warnings, errors, or just ignored.
-</p>
-
-
-<!--*************************************************************************-->
-<h2><a name="applications">Utility and Applications</a></h2>
-<!--*************************************************************************-->
-
-<!--=======================================================================-->
-<h3><a name="libraryarch">Library Based Architecture</a></h3>
-<!--=======================================================================-->
-
-<p>A major design concept for clang is its use of a library-based
-architecture.  In this design, various parts of the front-end can be cleanly
-divided into separate libraries which can then be mixed up for different needs
-and uses.  In addition, the library-based approach encourages good interfaces
-and makes it easier for new developers to get involved (because they only need
-to understand small pieces of the big picture).</p>
-
-<blockquote><p>
-"The world needs better compiler tools, tools which are built as libraries.
-This design point allows reuse of the tools in new and novel ways. However,
-building the tools as libraries isn't enough: they must have clean APIs, be as
-decoupled from each other as possible, and be easy to modify/extend. This
-requires clean layering, decent design, and keeping the libraries independent of
-any specific client."</p></blockquote>
-
-<p>
-Currently, clang is divided into the following libraries and tool:
-</p>
-
-<ul>
-<li><b>libsupport</b> - Basic support library, from LLVM.</li>
-<li><b>libsystem</b> - System abstraction library, from LLVM.</li>
-<li><b>libbasic</b> - Diagnostics, SourceLocations, SourceBuffer abstraction,
-    file system caching for input source files.</li>
-<li><b>libast</b> - Provides classes to represent the C AST, the C type system,
-    builtin functions, and various helpers for analyzing and manipulating the
-    AST (visitors, pretty printers, etc).</li>
-<li><b>liblex</b> - Lexing and preprocessing, identifier hash table, pragma
-    handling, tokens, and macro expansion.</li>
-<li><b>libparse</b> - Parsing. This library invokes coarse-grained 'Actions'
-    provided by the client (e.g. libsema builds ASTs) but knows nothing about
-    ASTs or other client-specific data structures.</li>
-<li><b>libsema</b> - Semantic Analysis.  This provides a set of parser actions
-    to build a standardized AST for programs.</li>
-<li><b>libcodegen</b> - Lower the AST to LLVM IR for optimization & code
-    generation.</li>
-<li><b>librewrite</b> - Editing of text buffers (important for code rewriting
-    transformation, like refactoring).</li>
-<li><b>libanalysis</b> - Static analysis support.</li>
-<li><b>clang</b> - A driver program, client of the libraries at various
-    levels.</li>
-</ul>
-
-<p>As an example of the power of this library based design....  If you wanted to
-build a preprocessor, you would take the Basic and Lexer libraries. If you want
-an indexer, you would take the previous two and add the Parser library and
-some actions for indexing. If you want a refactoring, static analysis, or
-source-to-source compiler tool, you would then add the AST building and
-semantic analyzer libraries.</p>
-
-<p>For more information about the low-level implementation details of the
-various clang libraries, please see the <a href="docs/InternalsManual.html">
-clang Internals Manual</a>.</p>
-
-<!--=======================================================================-->
-<h3><a name="diverseclients">Support Diverse Clients</a></h3>
-<!--=======================================================================-->
-
-<p>Clang is designed and built with many grand plans for how we can use it.  The
-driving force is the fact that we use C and C++ daily, and have to suffer due to
-a lack of good tools available for it.  We believe that the C and C++ tools
-ecosystem has been significantly limited by how difficult it is to parse and
-represent the source code for these languages, and we aim to rectify this
-problem in clang.</p>
-
-<p>The problem with this goal is that different clients have very different
-requirements.  Consider code generation, for example: a simple front-end that
-parses for code generation must analyze the code for validity and emit code
-in some intermediate form to pass off to a optimizer or backend.  Because
-validity analysis and code generation can largely be done on the fly, there is
-not hard requirement that the front-end actually build up a full AST for all
-the expressions and statements in the code.  TCC and GCC are examples of
-compilers that either build no real AST (in the former case) or build a stripped
-down and simplified AST (in the later case) because they focus primarily on
-codegen.</p>
-
-<p>On the opposite side of the spectrum, some clients (like refactoring) want
-highly detailed information about the original source code and want a complete
-AST to describe it with.  Refactoring wants to have information about macro
-expansions, the location of every paren expression '(((x)))' vs 'x', full
-position information, and much more.  Further, refactoring wants to look
-<em>across the whole program</em> to ensure that it is making transformations
-that are safe.  Making this efficient and getting this right requires a
-significant amount of engineering and algorithmic work that simply are
-unnecessary for a simple static compiler.</p>
-
-<p>The beauty of the clang approach is that it does not restrict how you use it.
-In particular, it is possible to use the clang preprocessor and parser to build
-an extremely quick and light-weight on-the-fly code generator (similar to TCC)
-that does not build an AST at all.   As an intermediate step, clang supports
-using the current AST generation and semantic analysis code and having a code 
-generation client free the AST for each function after code generation. Finally,
-clang provides support for building and retaining fully-fledged ASTs, and even
-supports writing them out to disk.</p>
-
-<p>Designing the libraries with clean and simple APIs allows these high-level
-policy decisions to be determined in the client, instead of forcing "one true
-way" in the implementation of any of these libraries.  Getting this right is
-hard, and we don't always get it right the first time, but we fix any problems
-when we realize we made a mistake.</p>
-
-<!--=======================================================================-->
-<h3 id="ideintegration">Integration with IDEs</h3>
-<!--=======================================================================-->
-
-<p>
-We believe that Integrated Development Environments (IDE's) are a great way
-to pull together various pieces of the development puzzle, and aim to make clang
-work well in such an environment.  The chief advantage of an IDE is that they
-typically have visibility across your entire project and are long-lived
-processes, whereas stand-alone compiler tools are typically invoked on each
-individual file in the project, and thus have limited scope.</p>
-
-<p>There are many implications of this difference, but a significant one has to
-do with efficiency and caching: sharing an address space across different files
-in a project, means that you can use intelligent caching and other techniques to
-dramatically reduce analysis/compilation time.</p>
-
-<p>A further difference between IDEs and batch compiler is that they often
-impose very different requirements on the front-end: they depend on high
-performance in order to provide a "snappy" experience, and thus really want
-techniques like "incremental compilation", "fuzzy parsing", etc.  Finally, IDEs
-often have very different requirements than code generation, often requiring
-information that a codegen-only frontend can throw away.  Clang is
-specifically designed and built to capture this information.
-</p>
-
-
-<!--=======================================================================-->
-<h3><a name="license">Use the LLVM 'BSD' License</a></h3>
-<!--=======================================================================-->
-
-<p>We actively intend for clang (and LLVM as a whole) to be used for
-commercial projects, not only as a stand-alone compiler but also as a library
-embedded inside a proprietary application.  The BSD license is the simplest way
-to allow this.  We feel that the license encourages contributors to pick up the
-source and work with it, and believe that those individuals and organizations
-will contribute back their work if they do not want to have to maintain a fork
-forever (which is time consuming and expensive when merges are involved).
-Further, nobody makes money on compilers these days, but many people need them
-to get bigger goals accomplished: it makes sense for everyone to work
-together.</p>
-
-<p>For more information about the LLVM/clang license, please see the <a 
-href="http://llvm.org/docs/DeveloperPolicy.html#license">LLVM License 
-Description</a> for more information.</p>
-
-
-
-<!--*************************************************************************-->
-<h2><a name="design">Internal Design and Implementation</a></h2>
-<!--*************************************************************************-->
-
-<!--=======================================================================-->
-<h3><a name="real">A real-world, production quality compiler</a></h3>
-<!--=======================================================================-->
-
-<p>
-Clang is designed and built by experienced compiler developers who
-are increasingly frustrated with the problems that <a 
-href="comparison.html">existing open source compilers</a> have.  Clang is
-carefully and thoughtfully designed and built to provide the foundation of a
-whole new generation of C/C++/Objective C development tools, and we intend for
-it to be production quality.</p>
-
-<p>Being a production quality compiler means many things: it means being high
-performance, being solid and (relatively) bug free, and it means eventually
-being used and depended on by a broad range of people.  While we are still in
-the early development stages, we strongly believe that this will become a
-reality.</p>
-
-<!--=======================================================================-->
-<h3><a name="simplecode">A simple and hackable code base</a></h3>
-<!--=======================================================================-->
-
-<p>Our goal is to make it possible for anyone with a basic understanding
-of compilers and working knowledge of the C/C++/ObjC languages to understand and
-extend the clang source base.  A large part of this falls out of our decision to
-make the AST mirror the languages as closely as possible: you have your friendly
-if statement, for statement, parenthesis expression, structs, unions, etc, all
-represented in a simple and explicit way.</p>
-
-<p>In addition to a simple design, we work to make the source base approachable
-by commenting it well, including citations of the language standards where
-appropriate, and designing the code for simplicity.  Beyond that, clang offers
-a set of AST dumpers, printers, and visualizers that make it easy to put code in
-and see how it is represented.</p>
-
-<!--=======================================================================-->
-<h3><a name="unifiedparser">A single unified parser for C, Objective C, C++,
-and Objective C++</a></h3>
-<!--=======================================================================-->
-
-<p>Clang is the "C Language Family Front-end", which means we intend to support
-the most popular members of the C family.  We are convinced that the right
-parsing technology for this class of languages is a hand-built recursive-descent
-parser.  Because it is plain C++ code, recursive descent makes it very easy for
-new developers to understand the code, it easily supports ad-hoc rules and other
-strange hacks required by C/C++, and makes it straight-forward to implement
-excellent diagnostics and error recovery.</p>
-
-<p>We believe that implementing C/C++/ObjC in a single unified parser makes the
-end result easier to maintain and evolve than maintaining a separate C and C++
-parser which must be bugfixed and maintained independently of each other.</p>
-
-<!--=======================================================================-->
-<h3><a name="conformance">Conformance with C/C++/ObjC and their
- variants</a></h3>
-<!--=======================================================================-->
-
-<p>When you start work on implementing a language, you find out that there is a
-huge gap between how the language works and how most people understand it to
-work.  This gap is the difference between a normal programmer and a (scary?
-super-natural?) "language lawyer", who knows the ins and outs of the language
-and can grok standardese with ease.</p>
-
-<p>In practice, being conformant with the languages means that we aim to support
-the full language, including the dark and dusty corners (like trigraphs,
-preprocessor arcana, C99 VLAs, etc).  Where we support extensions above and
-beyond what the standard officially allows, we make an effort to explicitly call
-this out in the code and emit warnings about it (which are disabled by default,
-but can optionally be mapped to either warnings or errors), allowing you to use
-clang in "strict" mode if you desire.</p>
-
-<p>We also intend to support "dialects" of these languages, such as C89, K&R
-C, C++'03, Objective-C 2, etc.</p>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/get_involved.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/get_involved.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/get_involved.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Clang - Get Involved</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<h1>Getting Involved with the Clang Project</h1>
-
-<p>Once you have <a href="get_started.html">checked out and built</a> clang and
-played around with it, you might be wondering what you can do to make it better
-and contribute to its development.  Alternatively, maybe you just want to follow
-the development of the project to see it progress.
-</p>
-
-<h2>Follow what's going on</h2>
-
-<p>Clang is a subproject of the <a href="http://llvm.org">LLVM Project</a>, but
-has its own mailing lists because the communities have people with different
-interests.  The two clang lists are:</p>
-
-<ul>
-<li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits
-</a> - This list is for patch submission/discussion.</li>
-
-<li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev</a> - 
-This list is for everything else Clang related (questions and answers, design
-discussions, etc).</li>
-
-</ul>
-
-<p>If you are interested in clang only, these two lists should be all
-you need.  If you are interested in the LLVM optimizer and code generator,
-please consider signing up for <a 
-href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">llvmdev</a> and <a
-href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">llvm-commits</a>
-as well.</p>
-
-
-<p>The best way to talk with other developers on the project is through the <a
-href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev mailing
-list</a>.  The clang mailing list is a very friendly place and we welcome
-newcomers.  In addition to the cfe-dev list, a significant amount of design
-discussion takes place on the <a 
-href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits mailing
-list</a>.  All of these lists have archives, so you can browse through previous
-discussions or follow the list development on the web if you prefer.</p>
-
-<p>If you're looking for something to work on, check out our <a href="OpenProjects.html">Open Projects</a> page or go look through the <a href="http://llvm.org/bugs/">Bugzilla bug database</a>.</p>
-
-<h2 id="criteria">Contributing Extensions to Clang</h2>
-
-<p>Clang has always been designed as a platform for experimentation,
-allowing programmers to easily extend the compiler to support great
-new language features and tools. At some point, the authors of these
-extensions may propose that the extensions become a part of Clang
-itself, to benefit the whole Clang community. But not every idea--not
-even every great idea--should become part of Clang. Extensions
-(particularly language extensions) pose a long-term maintenance burden
-on Clang, and therefore the benefits of the extension must outweight
-those costs. Hence, these are the seven criteria used to evaluate the
-merits of a proposed extension:</p>
-
-<ol>
-  <li>Evidence of a significant user community: This is based on a number of factors, including an actual, existing user community, the perceived likelihood that users would adopt such a feature if it were available, and any "trickle-down" effects that come from, e.g., a library adopting the feature and providing benefits to its users.</li>
-
-  <li>A specific need to reside within the Clang tree: There are some extensions that would be better expressed as a separate tool, and should remain as separate tools even if they end up being hosted as part of the LLVM umbrella project.</li>
-
-  <li>A complete specification: The specification must be sufficient to understand the design of the feature as well as interpret the meaning of specific examples. The specification should be detailed enough that another compiler vendor could conceivably implement the feature.</li>
-
-  <li>Representation within the appropriate governing organization: For extensions to a language governed by a standards committee (C, C++, OpenCL), the extension itself must have an active proposal and proponent within that committee and have a reasonable chance of acceptance. Clang should drive the standard, not diverge from it. This criterion does not apply to all extensions, since some extensions fall outside of the realm of the standards bodies.</li>
-
-  <li>A long-term support plan: Contributing a non-trivial extension to Clang implies a commitment to supporting that extension, improving the implementation and specification as Clang evolves. The capacity of the contributor to make that commitment is as important as the commitment itself.</li>
-
-  <li>A high-quality implementation: The implementation must fit well into Clang's architecture, follow LLVM's coding conventions, and meet Clang's quality standards, including high-quality diagnostics and rich AST representations. This is particularly important for language extensions, because users will learn how those extensions work through the behavior of the compiler.</li>
-
-  <li>A proper test suite: Extensive testing is crucial to ensure that the language extension is not broken by ongoing maintenance in Clang. The test suite should be complete enough that another compiler vendor could conceivably validate their implementation of the feature against it.</li>
-</ol>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/get_started.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/get_started.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/get_started.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,307 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Clang - Getting Started</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-
-<!--#include virtual="menu.html.incl"-->
-
-<div id="content">
-
-<h1>Getting Started: Building and Running Clang</h1>
-
-<p>This page gives you the shortest path to checking out Clang and demos a few
-options.  This should get you up and running with the minimum of muss and fuss.
-If you like what you see, please consider <a href="get_involved.html">getting
-involved</a> with the Clang community.  If you run into problems, please file
-bugs in <a href="http://llvm.org/bugs/">LLVM Bugzilla</a>.</p>
-
-<h2 id="download">Release Clang Versions</h2>
-
-<p>Clang has been released as part of regular LLVM releases since LLVM 2.6. You
-can download the release versions
-from <a href="http://llvm.org/releases/">http://llvm.org/releases/</a>.</p>
-
-<h2 id="build">Building Clang and Working with the Code</h2>
-
-<h3 id="buildNix">On Unix-like Systems</h3>
-
-<p>If you would like to check out and build Clang, the current procedure is as
-follows:</p>
-
-<ol>
-  <li>Get the required tools.
-  <ul>
-    <li>See
-      <a href="http://llvm.org/docs/GettingStarted.html#requirements">
-      Getting Started with the LLVM System - Requirements</a>.</li>
-    <li>Note also that Python is needed for running the test suite.
-      Get it at: <a href="http://www.python.org/download">
-      http://www.python.org/download</a></li>
-  </ul>
-
-  <li>Checkout LLVM:
-  <ul>
-    <li>Change directory to where you want the llvm directory placed.</li>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
-  </ul>
-  </li>
-  <li>Checkout Clang:
-  <ul>
-    <li><tt>cd llvm/tools</tt></li>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/cfe/trunk clang</tt></li>
-    <li><tt>cd ../..</tt></li>
-  </ul>
-  </li>
-  <li>Checkout extra Clang Tools: (optional)
-  <ul>
-    <li><tt>cd llvm/tools/clang/tools</tt></li>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk
-        extra</tt></li>
-    <li><tt>cd ../../../..</tt></li>
-  </ul>
-  </li>
-  <li>Checkout Compiler-RT:
-  <ul>
-    <li><tt>cd llvm/projects</tt></li>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk
-        compiler-rt</tt></li>
-    <li><tt>cd ../..</tt></li>
-  </ul>
-  </li>
-  <li>Build LLVM and Clang:
-  <ul>
-    <li><tt>mkdir build</tt> (for building without polluting the source dir)
-    </li>
-    <li><tt>cd build</tt></li>
-    <li><tt>../llvm/configure</tt></li>
-    <li><tt>make</tt></li>
-    <li>This builds both LLVM and Clang for debug mode.</li>
-    <li>Note: For subsequent Clang development, you can just do make at the
-    clang directory level.</li>
-    <li>It is also possible to use CMake instead of the makefiles. With CMake
-    it is possible to generate project files for several IDEs: Xcode, Eclipse
-    CDT4, CodeBlocks, Qt-Creator (use the CodeBlocks generator), KDevelop3.</li>
-  </ul>
-  </li>
-
-  <li>If you intend to use Clang's C++ support, you may need to tell it how
-      to find your C++ standard library headers. In general, Clang will detect
-      the best version of libstdc++ headers available and use them - it will
-      look both for system installations of libstdc++ as well as installations
-      adjacent to Clang itself. If your configuration fits neither of these
-      scenarios, you can use the <tt>--with-gcc-toolchain</tt> configure option
-      to tell Clang where the gcc containing the desired libstdc++ is installed.
-  </li>
-  <li>Try it out (assuming you add llvm/Debug+Asserts/bin to your path):
-  <ul>
-    <li><tt>clang --help</tt></li>
-    <li><tt>clang file.c -fsyntax-only</tt> (check for correctness)</li>
-    <li><tt>clang file.c -S -emit-llvm -o -</tt> (print out unoptimized llvm code)</li>
-    <li><tt>clang file.c -S -emit-llvm -o - -O3</tt></li>
-    <li><tt>clang file.c -S -O3 -o -</tt> (output native machine code)</li>
-  </ul>
-  </li>
-</ol>
-
-<p>Note that the C front-end uses LLVM, but does not depend on llvm-gcc. If you
-encounter problems with building Clang, make sure you have the latest SVN
-version of LLVM. LLVM contains support libraries for Clang that will be updated
-as well as development on Clang progresses.</p>
-  
-<h3>Simultaneously Building Clang and LLVM:</h3>
-
-<p>Once you have checked out Clang into the llvm source tree it will build along
-with the rest of <tt>llvm</tt>. To build all of LLVM and Clang together all at
-once simply run <tt>make</tt> from the root LLVM directory.</p>
-    
-<p><em>Note:</em> Observe that Clang is technically part of a separate
-Subversion repository. As mentioned above, the latest Clang sources are tied to
-the latest sources in the LLVM tree. You can update your toplevel LLVM project
-and all (possibly unrelated) projects inside it with <tt><b>make
-update</b></tt>. This will run <tt>svn update</tt> on all subdirectories related
-to subversion. </p>
-
-<h3 id="buildWindows">Using Visual Studio</h3>
-
-<p>The following details setting up for and building Clang on Windows using
-Visual Studio:</p>
-
-<ol>
-  <li>Get the required tools:
-  <ul>
-    <li><b>Subversion</b>.  Source code control program.  Get it from:
-        <a href="http://subversion.tigris.org/getting.html">
-        http://subversion.tigris.org/getting.html</a></li>
-    <li><b>CMake</b>.  This is used for generating Visual Studio solution and
-        project files.  Get it from:
-        <a href="http://www.cmake.org/cmake/resources/software.html">
-        http://www.cmake.org/cmake/resources/software.html</a></li>
-    <li><b>Visual Studio 2008 or 2010</b></li>
-    <li><b>Python</b>.  This is needed only if you will be running the tests
-        (which is essential, if you will be developing for clang).
-        Get it from:
-        <a href="http://www.python.org/download/">
-        http://www.python.org/download/</a></li>
-    <li><b>GnuWin32 tools</b>
-        These are also necessary for running the tests.
-        (Note that the grep from MSYS or Cygwin doesn't work with the tests
-        because of embedded double-quotes in the search strings.  The GNU
-        grep does work in this case.)
-        Get them from <a href="http://getgnuwin32.sourceforge.net/">
-        http://getgnuwin32.sourceforge.net/</a>.</li>
-  </ul>
-  </li>
-
-  <li>Checkout LLVM:
-  <ul>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
-  </ul>
-  </li>
-  <li>Checkout Clang:
-  <ul>
-     <li><tt>cd llvm\tools</tt>
-     <li><tt>svn co http://llvm.org/svn/llvm-project/cfe/trunk clang</tt></li>
-  </ul>
-  </li>
-  <li>Run CMake to generate the Visual Studio solution and project files:
-  <ul>
-    <li><tt>cd ..\..</tt>  (back to where you started)</li>
-    <li><tt>mkdir build</tt> (for building without polluting the source dir)</li>
-    <li><tt>cd build</tt></li>
-    <li>If you are using Visual Studio 2008:  <tt>cmake -G "Visual Studio 9 2008" ..\llvm</tt></li>
-    <li>Or if you are using Visual Studio 2010:  <tt>cmake -G "Visual Studio 10" ..\llvm</tt></li>
-    <li>See the <a href="http://www.llvm.org/docs/CMake.html">LLVM CMake guide</a> for
-        more information on other configuration options for CMake.</li>
-    <li>The above, if successful, will have created an LLVM.sln file in the
-       <tt>build</tt> directory.
-  </ul>
-  </li>
-  <li>Build Clang:
-  <ul>
-    <li>Open LLVM.sln in Visual Studio.</li>
-    <li>Build the "clang" project for just the compiler driver and front end, or
-      the "ALL_BUILD" project to build everything, including tools.</li>
-  </ul>
-  </li>
-  <li>Try it out (assuming you added llvm/debug/bin to your path).  (See the
-    running examples from above.)</li>
-  <li>See <a href="hacking.html#testingWindows">
-     Hacking on clang - Testing using Visual Studio on Windows</a> for information
-     on running regression tests on Windows.</li>
-</ol>
-
-<p>Note that once you have checked out both llvm and clang, to synchronize
-to the latest code base, use the <tt>svn update</tt> command in both the
-llvm and llvm\tools\clang directories, as they are separate repositories.</p>
-
-<h2 id="driver">Clang Compiler Driver (Drop-in Substitute for GCC)</h2>
-
-<p>The <tt>clang</tt> tool is the compiler driver and front-end, which is
-designed to be a drop-in replacement for the <tt>gcc</tt> command.  Here are
-some examples of how to use the high-level driver:
-</p>
-
-<pre class="code">
-$ <b>cat t.c</b>
-#include <stdio.h>
-int main(int argc, char **argv) { printf("hello world\n"); }
-$ <b>clang t.c</b>
-$ <b>./a.out</b>
-hello world
-</pre>
-
-<p>The 'clang' driver is designed to work as closely to GCC as possible to
-  maximize portability.  The only major difference between the two is that
-  Clang defaults to gnu99 mode while GCC defaults to gnu89 mode.  If you see
-  weird link-time errors relating to inline functions, try passing -std=gnu89
-  to clang.</p>
-
-<h2>Examples of using Clang</h2>
-
-<!-- Thanks to
- http://shiflett.org/blog/2006/oct/formatting-and-highlighting-php-code-listings
-Site suggested using pre in CSS, but doesn't work in IE, so went for the <pre>
-tag. -->
-
-<pre class="code">
-$ <b>cat ~/t.c</b>
-typedef float V __attribute__((vector_size(16)));
-V foo(V a, V b) { return a+b*a; }
-</pre>
-
-
-<h3>Preprocessing:</h3>
-
-<pre class="code">
-$ <b>clang ~/t.c -E</b>
-# 1 "/Users/sabre/t.c" 1
-
-typedef float V __attribute__((vector_size(16)));
-
-V foo(V a, V b) { return a+b*a; }
-</pre>
-
-
-<h3>Type checking:</h3>
-
-<pre class="code">
-$ <b>clang -fsyntax-only ~/t.c</b>
-</pre>
-
-
-<h3>GCC options:</h3>
-
-<pre class="code">
-$ <b>clang -fsyntax-only ~/t.c -pedantic</b>
-/Users/sabre/t.c:2:17: <span style="color:magenta">warning:</span> extension used
-<span style="color:darkgreen">typedef float V __attribute__((vector_size(16)));</span>
-<span style="color:blue">                ^</span>
-1 diagnostic generated.
-</pre>
-
-
-<h3>Pretty printing from the AST:</h3>
-
-<p>Note, the <tt>-cc1</tt> argument indicates the compiler front-end, and
-not the driver, should be run. The compiler front-end has several additional
-Clang specific features which are not exposed through the GCC compatible driver
-interface.</p>
-
-<pre class="code">
-$ <b>clang -cc1 ~/t.c -ast-print</b>
-typedef float V __attribute__(( vector_size(16) ));
-V foo(V a, V b) {
-   return a + b * a;
-}
-</pre>
-
-
-<h3>Code generation with LLVM:</h3>
-
-<pre class="code">
-$ <b>clang ~/t.c -S -emit-llvm -o -</b>
-define <4 x float> @foo(<4 x float> %a, <4 x float> %b) {
-entry:
-         %mul = mul <4 x float> %b, %a
-         %add = add <4 x float> %mul, %a
-         ret <4 x float> %add
-}
-$ <b>clang -fomit-frame-pointer -O3 -S -o - t.c</b> <i># On x86_64</i>
-...
-_foo:
-Leh_func_begin1:
-	mulps	%xmm0, %xmm1
-	addps	%xmm1, %xmm0
-	ret
-Leh_func_end1:
-</pre>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/hacking.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/hacking.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/hacking.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,330 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-          "http://www.w3.org/TR/html4/strict.dtd">
-<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Hacking on clang</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-  <style type="text/css">
-  pre { margin-left: 1.5em; }
-  </style>
-</head>
-<body>
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-  <!--*********************************************************************-->
-  <h1>Hacking on Clang</h1>
-  <!--*********************************************************************-->
-
-  <p>This document provides some hints for how to get started hacking
-  on Clang for developers who are new to the Clang and/or LLVM
-  codebases.</p>
-    <ul>
-      <li><a href="#style">Coding Standards</a></li>
-      <li><a href="#docs">Developer Documentation</a></li>
-      <li><a href="#debugging">Debugging</a></li>
-      <li><a href="#testing">Testing</a>
-      <ul>
-        <li><a href="#testingNonWindows">Testing on Unix-like Systems</a></li>
-        <li><a href="#testingWindows">Testing using Visual Studio on Windows</a></li>
-        <li><a href="#testingCommands">Testing on the Command Line</a></li>
-      </ul>
-      </li>
-      <li><a href="#patches">Creating Patch Files</a></li>
-      <li><a href="#irgen">LLVM IR Generation</a></li>
-    </ul>
-
-  <!--=====================================================================-->
-  <h2 id="style">Coding Standards</h2>
-  <!--=====================================================================-->
-
-  <p>Clang follows the
-  LLVM <a href="http://llvm.org/docs/CodingStandards.html">Coding
-  Standards</a>. When submitting patches, please take care to follow these standards
-  and to match the style of the code to that present in Clang (for example, in
-  terms of indentation, bracing, and statement spacing).</p>
-
-  <p>Clang has a few additional coding standards:</p>
-  <ul>
-    <li><i>cstdio is forbidden</i>: library code should not output diagnostics
-      or other information using <tt>cstdio</tt>; debugging routines should
-      use <tt>llvm::errs()</tt>. Other uses of <tt>cstdio</tt> impose behavior
-      upon clients and block integrating Clang as a library. Libraries should
-      support <tt>raw_ostream</tt> based interfaces for textual
-      output. See <a href="http://llvm.org/docs/CodingStandards.html#ll_raw_ostream">Coding
-      Standards</a>.</li>
-  </ul>
-
-  <!--=====================================================================-->
-  <h2 id="docs">Developer Documentation</h2>
-  <!--=====================================================================-->
-
-  <p>Both Clang and LLVM use doxygen to provide API documentation. Their
-  respective web pages (generated nightly) are here:</p>
-    <ul>
-      <li><a href="http://clang.llvm.org/doxygen">Clang</a></li>
-      <li><a href="http://llvm.org/doxygen">LLVM</a></li>
-    </ul>
-
-  <p>For work on the LLVM IR generation, the LLVM assembly language
-  <a href="http://llvm.org/docs/LangRef.html">reference manual</a> is
-  also useful.</p>
-
-  <!--=====================================================================-->
-  <h2 id="debugging">Debugging</h2>
-  <!--=====================================================================-->
-
-  <p>Inspecting data structures in a debugger:</p>
-    <ul>
-      <li>Many LLVM and Clang data structures provide
-        a <tt>dump()</tt> method which will print a description of the
-        data structure to <tt>stderr</tt>.</li>
-      <li>The <a href="docs/InternalsManual.html#QualType"><tt>QualType</tt></a>
-      structure is used pervasively. This is a simple value class for
-      wrapping types with qualifiers; you can use
-      the <tt>isConstQualified()</tt>, for example, to get one of the
-      qualifiers, and the <tt>getTypePtr()</tt> method to get the
-      wrapped <tt>Type*</tt> which you can then dump.</li>
-      <li>For <a href="http://lldb.llvm.org"> <tt>LLDB</tt></a> users there are
-      data formatters for clang data structures in
-      <a href="http://llvm.org/svn/llvm-project/cfe/trunk/utils/ClangDataFormat.py">
-      <tt>utils/ClangDataFormat.py</tt></a>.</li>
-    </ul>
-
-  <!--=====================================================================-->
-  <h3 id="debuggingVisualStudio">Debugging using Visual Studio</h3>
-  <!--=====================================================================-->
-
-  <p>The file <tt>utils/clangVisualizers.txt</tt> provides debugger visualizers that make debugging
-  of more complex data types much easier.</p>
-  <p>There are two ways to install them:</p>
-  
-  <ul>
-      <li>Put the path to <tt>clangVisualizers.txt</tt> in the environment variable called
-      <tt>_vcee_autoexp</tt>. This method should work for Visual Studio 2008 and above.
-      </li>
-      <li>Edit your local <tt>autoexp.dat</tt> (make sure you make a backup first!), 
-      located in <tt>Visual Studio Directory\Common7\Packages\Debugger</tt> and append 
-      the contents of <tt>clangVisuailzers.txt</tt> to it. This method should work for 
-      Visual Studio 2008 and above.
-       </li>
-  </ul>
-
-  <p><i>[Note: To disable the visualizer for any specific variable, type 
-  <tt>variable_name,!</tt> inside the watch window.]</i></p>
-
-  <!--=====================================================================-->
-  <h2 id="testing">Testing</h2>
-  <!--=====================================================================-->
-
-  <p><i>[Note: The test running mechanism is currently under revision, so the
-  following might change shortly.]</i></p>
-
-  <!--=====================================================================-->
-  <h3 id="testingNonWindows">Testing on Unix-like Systems</h3>
-  <!--=====================================================================-->
-
-  <p>Clang includes a basic regression suite in the tree which can be
-  run with <tt>make test</tt> from the top-level clang directory, or
-  just <tt>make</tt> in the <em>test</em> sub-directory.
-  <tt>make VERBOSE=1</tt> can be used to show more detail
-  about what is being run.</p>
-
-  <p>If you built LLVM and Clang using CMake, the test suite can be run
-  with <tt>make clang-test</tt> from the top-level LLVM directory.</p>
-
-  <p>The tests primarily consist of a test runner script running the compiler
-  under test on individual test files grouped in the directories under the
-  test directory.  The individual test files include comments at the
-  beginning indicating the Clang compile options to use, to be read
-  by the test runner. Embedded comments also can do things like telling
-  the test runner that an error is expected at the current line.
-  Any output files produced by the test will be placed under
-  a created Output directory.</p>
-
-  <p>During the run of <tt>make test</tt>, the terminal output will
-  display a line similar to the following:</p>
-
-  <pre>--- Running clang tests for i686-pc-linux-gnu ---</pre>
-
-  <p>followed by a line continually overwritten with the current test
-  file being compiled, and an overall completion percentage.</p>
-
-  <p>After the <tt>make test</tt> run completes, the absence of any
-  <tt>Failing Tests (count):</tt> message indicates that no tests
-  failed unexpectedly.  If any tests did fail, the
-  <tt>Failing Tests (count):</tt> message will be followed by a list
-  of the test source file paths that failed.  For example:</p>
-
-  <pre>
-  Failing Tests (3):
-      /home/john/llvm/tools/clang/test/SemaCXX/member-name-lookup.cpp
-      /home/john/llvm/tools/clang/test/SemaCXX/namespace-alias.cpp
-      /home/john/llvm/tools/clang/test/SemaCXX/using-directive.cpp
-</pre>
-
-  <p>If you used the <tt>make VERBOSE=1</tt> option, the terminal
-  output will reflect the error messages from the compiler and
-  test runner.</p>
-
-  <p>The regression suite can also be run with Valgrind by running
-  <tt>make test VG=1</tt> in the top-level clang directory.</p>
-
-  <p>For more intensive changes, running
-  the <a href="http://llvm.org/docs/TestingGuide.html#testsuiterun">LLVM
-  Test Suite</a> with clang is recommended. Currently the best way to
-  override LLVMGCC, as in: <tt>make LLVMGCC="clang -std=gnu89"
-  TEST=nightly report</tt> (make sure <tt>clang</tt> is in your PATH or use the
-  full path).</p>
-
-  <!--=====================================================================-->
-  <h3 id="testingWindows">Testing using Visual Studio on Windows</h3>
-  <!--=====================================================================-->
-
-  <p>The Clang test suite can be run from either Visual Studio or
-  the command line.</p>
-
-  <p>Note that the test runner is based on
-  Python, which must be installed.  Find Python at:
-  <a href="http://www.python.org/download/">http://www.python.org/download/</a>.
-  Download the latest stable version (2.6.2 at the time of this writing).</p>
-
-  <p>The GnuWin32 tools are also necessary for running the tests.
-  Get them from <a href="http://getgnuwin32.sourceforge.net/">
-  http://getgnuwin32.sourceforge.net/</a>.
-  If the environment variable <tt>%PATH%</tt> does not have GnuWin32,
-  or if other grep(s) supercedes GnuWin32 on <tt>%PATH%,</tt>
-  you should specify <tt>LLVM_LIT_TOOLS_DIR</tt>
-  to CMake explicitly.</p>
-
-  <p>The cmake build tool is set up to create Visual Studio project files
-  for running the tests, "clang-test" being the root.  Therefore, to
-  run the test from Visual Studio, right-click the clang-test project
-  and select "Build".</p>
-
-  <p>
-    Please see also
-    <a href="http://llvm.org/docs/GettingStartedVS.html">Getting Started
-    with the LLVM System using Microsoft Visual Studio</a> and
-    <a href="http://llvm.org/docs/CMake.html">Building LLVM with CMake</a>.
-  </p>
-
-  <!--=====================================================================-->
-  <h3 id="testingCommands">Testing on the Command Line</h3>
-  <!--=====================================================================-->
-
-  <p>If you want more control over how the tests are run, it may
-  be convenient to run the test harness on the command-line directly. Before
-  running tests from the command line, you will need to ensure that
-  <tt>lit.site.cfg</tt> files have been created for your build.  You can do
-  this by running the tests as described in the previous sections. Once the
-  tests have started running, you can stop them with control+C, as the
-  files are generated before running any tests.</p>
-
-  <p>Once that is done, to run all the tests from the command line,
-  execute a command like the following:</p>
-
-  <pre>
-  python (path to llvm)\llvm\utils\lit\lit.py -sv
-  --param=build_mode=Win32 --param=build_config=Debug
-  --param=clang_site_config=(build dir)\tools\clang\test\lit.site.cfg
- (path to llvm)\llvm\tools\clang\test
-</pre>
-
-  <p>For CMake builds e.g. on Windows with Visual Studio, you will need
-  to specify your build configuration (Debug, Release, etc.) via
-  <tt>--param=build_config=(build config)</tt>.  You may also need to specify
-  the build mode (Win32, etc) via <tt>--param=build_mode=(build mode)</tt>.</p>
-
-  <p>Additionally, you will need to specify the lit site configuration which
-  lives in (build dir)\tools\clang\test, via
-  <tt>--param=clang_site_config=(build dir)\tools\clang\test\lit.site.cfg</tt>.
-  </p>
-
-  <p>To run a single test:</p>
-
-  <pre>
-  python (path to llvm)\llvm\utils\lit\lit.py -sv
-  --param=build_mode=Win32 --param=build_config=Debug
-  --param=clang_site_config=(build dir)\tools\clang\test\lit.site.cfg
-  (path to llvm)\llvm\tools\clang\test\(dir)\(test)
-</pre>
-
-  <p>For example:</p>
-
-  <pre>
-  python C:\Tool\llvm\utils\lit\lit.py -sv
-  --param=build_mode=Win32 --param=build_config=Debug
-  --param=clang_site_config=c:\Tools\build\tools\clang\test\lit.site.cfg
-  C:\Tools\llvm\tools\clang\test\Sema\wchar.c
-</pre>
-
-  <p>The -sv option above tells the runner to show the test output if
-  any tests failed, to help you determine the cause of failure.</p>
-
-  <p>You can also pass in the --no-progress-bar option if you wish to disable
-  progress indications while the tests are running.</p>
-
-  <p>Your output might look something like this:</p>
-
-  <pre>lit.py: lit.cfg:152: note: using clang: 'C:\Tools\llvm\bin\Release\clang.EXE'
--- Testing: Testing: 2534 tests, 4 threads --
-Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
-Testing Time: 81.52s
-  Expected Passes    : 2503
-  Expected Failures  : 28
-  Unsupported Tests  : 3
-</pre>
-
-  <p>The statistic, "Unexpected Failures" (not shown if all tests pass), is the important one.</p>
-
-  <!--=====================================================================-->
-  <h2 id="patches">Creating Patch Files</h2>
-  <!--=====================================================================-->
-
-  <p>To return changes to the Clang team, unless you have checkin
-  privileges, the preferred way is to send patch files to the
-  cfe-commits mailing list, with an explanation of what the patch is
-  for.  If your patch requires a wider discussion (for example,
-  because it is an architectural change), you can use the cfe-dev
-  mailing list.  </p>
-
-  <p>To create these patch files, change directory
-  to the llvm/tools/clang root and run:</p>
-
-  <pre>svn diff (relative path) >(patch file name)</pre>
-
-  <p>For example, for getting the diffs of all of clang:</p>
-
-  <pre>svn diff . >~/mypatchfile.patch</pre>
-
-  <p>For example, for getting the diffs of a single file:</p>
-
-  <pre>svn diff lib/Parse/ParseDeclCXX.cpp >~/ParseDeclCXX.patch</pre>
-
-  <p>Note that the paths embedded in the patch depend on where you run it,
-  so changing directory to the llvm/tools/clang directory is recommended.</p>
-
-  <!--=====================================================================-->
-  <h2 id="irgen">LLVM IR Generation</h2>
-  <!--=====================================================================-->
-
-  <p>The LLVM IR generation part of clang handles conversion of the
-    AST nodes output by the Sema module to the LLVM Intermediate
-    Representation (IR). Historically, this was referred to as
-    "codegen", and the Clang code for this lives
-    in <tt>lib/CodeGen</tt>.</p>
-
-  <p>The output is most easily inspected using the <tt>-emit-llvm</tt>
-    option to clang (possibly in conjunction with <tt>-o -</tt>). You
-    can also use <tt>-emit-llvm-bc</tt> to write an LLVM bitcode file
-    which can be processed by the suite of LLVM tools
-    like <tt>llvm-dis</tt>, <tt>llvm-nm</tt>, etc. See the LLVM
-    <a href="http://llvm.org/docs/CommandGuide/">Command Guide</a>
-    for more information.</p>
-
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/index.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/index.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/index.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,118 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
-          "http://www.w3.org/TR/html4/strict.dtd">
-<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>"clang" C Language Family Frontend for LLVM</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-<!--#include virtual="menu.html.incl"-->
-<div id="content">
-  <!--*********************************************************************-->
-  <h1>clang: a C language family frontend for LLVM</h1>
-  <!--*********************************************************************-->
-  
-  <p>The goal of the Clang project is to create a new C, C++, Objective C and
-  Objective C++ front-end for the <a href="http://www.llvm.org/">LLVM</a>
-  compiler.  You can <a href="get_started.html">get and build</a> the source
-  today.</p>
-  
-  <!--=====================================================================-->
-  <h2 id="goals">Features and Goals</h2>
-  <!--=====================================================================-->
-  
-  <p>Some of the goals for the project include the following:</p>
-  
-  <p><b><a href="features.html#enduser">End-User Features</a></b>:</p>
-
-  <ul>
-  <li>Fast compiles and low memory use</li>
-  <li>Expressive diagnostics (<a href="diagnostics.html">examples</a>)</li>
-  <li>GCC compatibility</li>
-  </ul>
-
-  <p><b><a href="features.html#applications">Utility and 
-     Applications</a></b>:</p>
-
-  <ul>
-  <li>Modular library based architecture</li>
-  <li>Support diverse clients (refactoring, static analysis, code generation,
-   etc)</li>
-  <li>Allow tight integration with IDEs</li>
-  <li>Use the LLVM 'BSD' License</li>
-  </ul>
-
-  <p><b><a href="features.html#design">Internal Design and 
-     Implementation</a></b>:</p>
-
-  <ul>
-  <li>A real-world, production quality compiler</li>
-  <li>A simple and hackable code base</li>
-  <li>A single unified parser for C, Objective C, C++, and Objective C++</li>
-  <li>Conformance with C/C++/ObjC and their variants</li>
-  </ul>
-
-  <p>Of course this is only a rough outline of the goals and features of
-     Clang.  To get a true sense of what it is all about, see the <a 
-     href="features.html">Features</a> section, which breaks
-     each of these down and explains them in more detail.</p>
-
-     
-  <!--=====================================================================-->
-  <h2>Why?</h2>
-  <!--=====================================================================-->
-  
-  <p>The development of a new front-end was started out of a need -- a need
-     for a compiler that allows better diagnostics, better integration with
-     IDEs, a license that is compatible with commercial products, and a
-     nimble compiler that is easy to develop and maintain.  All of these were
-     motivations for starting work on a new front-end that could
-     meet these needs.</p>
-     
-  <p>A good (but quite dated) introduction to Clang can be found in the
-     following video lectures:</p>
-     
-  <ul>
-    <li><a href="clang_video-05-25-2007.html">Clang Introduction</a>
-        (May 2007)</li>
-    <li><a href="clang_video-07-25-2007.html">Features and Performance of 
-        Clang</a>  (July 2007)</li>
-  </ul>
-  
-  <p>For a more detailed comparison between Clang and other compilers, please
-     see the <a href="comparison.html">clang comparison page</a>.</p>
-  
-  <!--=====================================================================-->
-  <h2>Current Status</h2>
-  <!--=====================================================================-->
-  
-  <p>Clang is still under heavy development.  Clang is considered to
-   be a production quality C, Objective-C, C++ and Objective-C++ compiler when 
-   targeting X86-32, X86-64, and ARM (other targets may have caveats, but are 
-   usually easy to fix).  If you are looking for source analysis or
-   source-to-source transformation tools, clang is probably a great
-   solution for you.  Clang supports C++11, please see the <a
-    href="cxx_status.html">C++ status</a> page for more
-   information.</p>
-
-  <!--=====================================================================-->
-  <h2>Get it and get involved!</h2>
-  <!--=====================================================================-->
-  
-  <p>Start by <a href="get_started.html">getting the code, building it, and
-     playing with it</a>.  This will show you the sorts of things we can do
-     today and will let you have the "clang experience" first hand: hopefully
-     it will "resonate" with you. :)</p>
-  
-  <p>Once you've done that, please consider <a href="get_involved.html">getting
-     involved in the clang community</a>.  The clang developers include numerous
-     volunteer contributors with a variety of backgrounds.  If you're 
-     interested in
-     following the development of clang, signing up for a mailing list is a good
-     way to learn about how the project works.</p>
-</div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/libstdc++4.4-clang0x.patch
===================================================================
--- trunk/contrib/llvm/tools/clang/www/libstdc++4.4-clang0x.patch	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/libstdc++4.4-clang0x.patch	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,608 +0,0 @@
-This patch was generated from the headers installed by MacPorts
-gcc-4.4 on OS X 10.6.  You can apply it there with
-`cd /opt/local/include/gcc44/c++ ; sudo patch -p1 <this_patch`, or similar
-on other operating systems.  Mail cfe-dev if you find other problems in the
-standard headers.
-
-This patch is offered under the same modified GPLv3 as libstdc++-4.4.
-
-diff -ur a/bits/forward_list.h b/bits/forward_list.h
---- a/bits/forward_list.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/forward_list.h	2011-05-02 23:51:33.000000000 -0700
-@@ -983,7 +983,7 @@
-        *  function.
-        */
-       void
--      swap(forward_list&& __list)
-+      swap(forward_list& __list)
-       { _Node_base::swap(this->_M_impl._M_head, __list._M_impl._M_head); }
- 
-       /**
-diff -ur a/bits/move.h b/bits/move.h
---- a/bits/move.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/move.h	2011-03-29 10:33:39.000000000 -0700
-@@ -48,13 +48,35 @@
- 
-   template<typename _Tp>
-     inline _Tp&&
--    forward(typename std::identity<_Tp>::type&& __t)
-+    forward(typename std::remove_reference<_Tp>::type& __t)
-+#ifdef __clang__
-+    { return static_cast<_Tp&&>(__t); }
-+#else
-     { return __t; }
-+#endif
-+
-+  template<typename _Tp>
-+    inline _Tp&&
-+    forward(typename std::remove_reference<_Tp>::type&& __t)
-+    {
-+#ifdef __clang__
-+      static_assert(!std::is_lvalue_reference<_Tp>::value,
-+                    "Can't instantiate this forward() with an"
-+                    " lvalue reference type.");
-+      return static_cast<_Tp&&>(__t);
-+#else
-+      return __t;
-+#endif
-+    }
- 
-   template<typename _Tp>
-     inline typename std::remove_reference<_Tp>::type&&
-     move(_Tp&& __t)
-+#ifdef __clang__
-+    { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
-+#else
-     { return __t; }
-+#endif
- 
- _GLIBCXX_END_NAMESPACE
- 
-diff -ur a/bits/shared_ptr.h b/bits/shared_ptr.h
---- a/bits/shared_ptr.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/shared_ptr.h	2011-03-31 16:40:45.000000000 -0700
-@@ -833,7 +833,7 @@
-       { return _M_refcount._M_get_use_count(); }
- 
-       void
--      swap(__shared_ptr<_Tp, _Lp>&& __other) // never throws
-+      swap(__shared_ptr<_Tp, _Lp>& __other) // never throws
-       {
- 	std::swap(_M_ptr, __other._M_ptr);
- 	_M_refcount._M_swap(__other._M_refcount);
-@@ -943,16 +943,6 @@
-     swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b)
-     { __a.swap(__b); }
- 
--  template<typename _Tp, _Lock_policy _Lp>
--    inline void
--    swap(__shared_ptr<_Tp, _Lp>&& __a, __shared_ptr<_Tp, _Lp>& __b)
--    { __a.swap(__b); }
--
--  template<typename _Tp, _Lock_policy _Lp>
--    inline void
--    swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>&& __b)
--    { __a.swap(__b); }
--
-   // 2.2.3.9 shared_ptr casts
-   /** @warning The seemingly equivalent
-    *           <code>shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get()))</code>
-@@ -1372,16 +1362,6 @@
-     swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b)
-     { __a.swap(__b); }
- 
--  template<typename _Tp>
--    inline void
--    swap(shared_ptr<_Tp>&& __a, shared_ptr<_Tp>& __b)
--    { __a.swap(__b); }
--
--  template<typename _Tp>
--    inline void
--    swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>&& __b)
--    { __a.swap(__b); }
--
-   // 20.8.13.2.10 shared_ptr casts.
-   template<typename _Tp, typename _Tp1>
-     inline shared_ptr<_Tp>
-diff -ur a/bits/stl_bvector.h b/bits/stl_bvector.h
---- a/bits/stl_bvector.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_bvector.h	2011-05-02 23:34:46.000000000 -0700
-@@ -743,11 +743,7 @@
-     }
- 
-     void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--    swap(vector&& __x)
--#else
-     swap(vector& __x)
--#endif
-     {
-       std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
-       std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
-diff -ur a/bits/stl_deque.h b/bits/stl_deque.h
---- a/bits/stl_deque.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_deque.h	2011-03-29 10:33:39.000000000 -0700
-@@ -1395,11 +1395,7 @@
-        *  std::swap(d1,d2) will feed to this function.
-        */
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(deque&& __x)
--#else
-       swap(deque& __x)
--#endif
-       {
- 	std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
- 	std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
-diff -ur a/bits/stl_iterator.h b/bits/stl_iterator.h
---- a/bits/stl_iterator.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_iterator.h	2011-03-29 10:33:39.000000000 -0700
-@@ -913,7 +913,7 @@
- 
-       reference
-       operator*() const
--      { return *_M_current; }
-+      { return std::move(*_M_current); }
- 
-       pointer
-       operator->() const
-diff -ur a/bits/stl_list.h b/bits/stl_list.h
---- a/bits/stl_list.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_list.h	2011-03-29 10:33:39.000000000 -0700
-@@ -1106,11 +1106,7 @@
-        *  function.
-        */
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(list&& __x)
--#else
-       swap(list& __x)
--#endif
-       {
- 	_List_node_base::swap(this->_M_impl._M_node, __x._M_impl._M_node);
- 
-@@ -1160,6 +1156,12 @@
- 	  }
-       }
- 
-+#ifdef __GXX_EXPERIMENTAL_CXX0X__
-+      void
-+      splice(iterator __position, list& __x)
-+      { splice(__position, std::move(__x)); }
-+#endif
-+
-       /**
-        *  @brief  Insert element from another %list.
-        *  @param  position  Iterator referencing the element to insert before.
-@@ -1187,6 +1189,12 @@
- 	this->_M_transfer(__position, __i, __j);
-       }
- 
-+#ifdef __GXX_EXPERIMENTAL_CXX0X__
-+      void
-+      splice(iterator __position, list& __x, iterator __i)
-+      { splice(__position, std::move(__x), __i); }
-+#endif
-+
-       /**
-        *  @brief  Insert range from another %list.
-        *  @param  position  Iterator referencing the element to insert before.
-@@ -1217,6 +1225,13 @@
- 	  }
-       }
- 
-+#ifdef __GXX_EXPERIMENTAL_CXX0X__
-+      void
-+      splice(iterator __position, list& __x, iterator __first,
-+	     iterator __last)
-+      { splice(__position, std::move(__x), __first, __last); }
-+#endif
-+
-       /**
-        *  @brief  Remove all elements equal to value.
-        *  @param  value  The value to remove.
-@@ -1287,6 +1302,10 @@
-       void
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
-       merge(list&& __x);
-+
-+      void
-+      merge(list& __x)
-+      { merge(std::move(__x)); }
- #else
-       merge(list& __x);
- #endif
-@@ -1307,6 +1326,11 @@
-         void
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
-         merge(list&&, _StrictWeakOrdering);
-+
-+      template<typename _StrictWeakOrdering>
-+        void
-+        merge(list& __l, _StrictWeakOrdering __comp)
-+        { merge(std::move(__l), __comp); }
- #else
-         merge(list&, _StrictWeakOrdering);
- #endif
-diff -ur a/bits/stl_map.h b/bits/stl_map.h
---- a/bits/stl_map.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_map.h	2011-03-29 10:33:39.000000000 -0700
-@@ -608,11 +608,7 @@
-        *  that std::swap(m1,m2) will feed to this function.
-        */
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(map&& __x)
--#else
-       swap(map& __x)
--#endif
-       { _M_t.swap(__x._M_t); }
- 
-       /**
-diff -ur a/bits/stl_multimap.h b/bits/stl_multimap.h
---- a/bits/stl_multimap.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_multimap.h	2011-03-29 10:33:39.000000000 -0700
-@@ -544,11 +544,7 @@
-        *  std::swap(m1,m2) will feed to this function.
-        */
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(multimap&& __x)
--#else
-       swap(multimap& __x)
--#endif
-       { _M_t.swap(__x._M_t); }
- 
-       /**
-diff -ur a/bits/stl_multiset.h b/bits/stl_multiset.h
---- a/bits/stl_multiset.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_multiset.h	2011-03-29 10:33:39.000000000 -0700
-@@ -376,11 +376,7 @@
-        *  std::swap(s1,s2) will feed to this function.
-        */
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(multiset&& __x)
--#else
-       swap(multiset& __x)
--#endif
-       { _M_t.swap(__x._M_t); }
- 
-       // insert/erase
-diff -ur a/bits/stl_pair.h b/bits/stl_pair.h
---- a/bits/stl_pair.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_pair.h	2011-03-29 10:33:39.000000000 -0700
-@@ -84,10 +84,21 @@
-       : first(__a), second(__b) { }
- 
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
--      template<class _U1, class _U2>
-+      template<class _U1, class = typename
-+	       std::enable_if<std::is_convertible<_U1, _T1>::value>::type>
-+	pair(_U1&& __x, const _T2& __y)
-+	: first(std::forward<_U1>(__x)), second(__y) { }
-+
-+      template<class _U2, class = typename
-+	       std::enable_if<std::is_convertible<_U2, _T2>::value>::type>
-+	pair(const _T1& __x, _U2&& __y)
-+	: first(__x), second(std::forward<_U2>(__y)) { }
-+
-+      template<class _U1, class _U2, class = typename
-+	       std::enable_if<std::is_convertible<_U1, _T1>::value
-+			      && std::is_convertible<_U2, _T2>::value>::type>
-         pair(_U1&& __x, _U2&& __y)
--	: first(std::forward<_U1>(__x)),
--	  second(std::forward<_U2>(__y)) { }
-+	: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
- 
-       pair(pair&& __p)
-       : first(std::move(__p.first)),
-@@ -107,11 +118,19 @@
- 	  second(std::move(__p.second)) { }
- 
-       // http://gcc.gnu.org/ml/libstdc++/2007-08/msg00052.html
-+
-+#if 0
-+      // This constructor is incompatible with libstdc++-4.6, and it
-+      // interferes with passing NULL pointers to the 2-argument
-+      // constructors, so we disable it.  map::emplace isn't
-+      // implemented in libstdc++-4.4 anyway, and that's what this
-+      // constructor was here for.
-       template<class _U1, class _Arg0, class... _Args>
-         pair(_U1&& __x, _Arg0&& __arg0, _Args&&... __args)
- 	: first(std::forward<_U1>(__x)),
- 	  second(std::forward<_Arg0>(__arg0),
- 		 std::forward<_Args>(__args)...) { }
-+#endif
- 
-       pair&
-       operator=(pair&& __p)
-@@ -131,7 +150,7 @@
- 	}
- 
-       void
--      swap(pair&& __p)
-+      swap(pair& __p)
-       {
- 	using std::swap;
- 	swap(first, __p.first);
-diff -ur a/bits/stl_queue.h b/bits/stl_queue.h
---- a/bits/stl_queue.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_queue.h	2011-05-02 23:36:15.000000000 -0700
-@@ -249,7 +249,7 @@
- 
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
-       void
--      swap(queue&& __q)
-+      swap(queue& __q)
-       { c.swap(__q.c); }
- #endif
-     };
-@@ -550,7 +550,7 @@
- 
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
-       void
--      swap(priority_queue&& __pq)
-+      swap(priority_queue& __pq)
-       {
- 	using std::swap;
- 	c.swap(__pq.c);
-diff -ur a/bits/stl_set.h b/bits/stl_set.h
---- a/bits/stl_set.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_set.h	2011-03-29 10:33:39.000000000 -0700
-@@ -383,11 +383,7 @@
-        *  std::swap(s1,s2) will feed to this function.
-        */
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(set&& __x)
--#else
-       swap(set& __x)	
--#endif
-       { _M_t.swap(__x._M_t); }
- 
-       // insert/erase
-diff -ur a/bits/stl_stack.h b/bits/stl_stack.h
---- a/bits/stl_stack.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_stack.h	2011-05-02 23:36:36.000000000 -0700
-@@ -213,7 +213,7 @@
- 
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
-       void
--      swap(stack&& __s)
-+      swap(stack& __s)
-       { c.swap(__s.c); }
- #endif
-     };
-diff -ur a/bits/stl_tree.h b/bits/stl_tree.h
---- a/bits/stl_tree.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_tree.h	2011-03-29 10:33:39.000000000 -0700
-@@ -675,11 +675,7 @@
-       { return _M_get_Node_allocator().max_size(); }
- 
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(_Rb_tree&& __t);
--#else
-       swap(_Rb_tree& __t);      
--#endif
- 
-       // Insert/erase.
-       pair<iterator, bool>
-@@ -1104,11 +1100,7 @@
-            typename _Compare, typename _Alloc>
-     void
-     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--    swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&& __t)
--#else
-     swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)
--#endif
-     {
-       if (_M_root() == 0)
- 	{
-diff -ur a/bits/stl_vector.h b/bits/stl_vector.h
---- a/bits/stl_vector.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/stl_vector.h	2011-03-29 10:33:39.000000000 -0700
-@@ -923,11 +923,7 @@
-        *  std::swap(v1,v2) will feed to this function.
-        */
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(vector&& __x)
--#else
-       swap(vector& __x)
--#endif
-       {
- 	std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
- 	std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
-diff -ur a/bits/unique_ptr.h b/bits/unique_ptr.h
---- a/bits/unique_ptr.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/bits/unique_ptr.h	2011-03-31 16:40:45.000000000 -0700
-@@ -204,7 +204,7 @@
-       }
- 
-       void
--      swap(unique_ptr&& __u)
-+      swap(unique_ptr& __u)
-       {
- 	using std::swap;
- 	swap(_M_t, __u._M_t);
-@@ -350,7 +350,7 @@
-         void reset(_Up) = delete;
- 
-       void
--      swap(unique_ptr&& __u)
-+      swap(unique_ptr& __u)
-       {
- 	using std::swap;
- 	swap(_M_t, __u._M_t);
-@@ -389,18 +389,6 @@
- 	 unique_ptr<_Tp, _Tp_Deleter>& __y)
-     { __x.swap(__y); }
- 
--  template<typename _Tp, typename _Tp_Deleter> 
--    inline void
--    swap(unique_ptr<_Tp, _Tp_Deleter>&& __x,
--	 unique_ptr<_Tp, _Tp_Deleter>& __y)
--    { __x.swap(__y); }
--
--  template<typename _Tp, typename _Tp_Deleter> 
--    inline void
--    swap(unique_ptr<_Tp, _Tp_Deleter>& __x,
--	 unique_ptr<_Tp, _Tp_Deleter>&& __y)
--    { __x.swap(__y); }
--  
-   template<typename _Tp, typename _Tp_Deleter,
- 	   typename _Up, typename _Up_Deleter>
-     inline bool
-diff -ur a/exception_ptr.h b/exception_ptr.h
---- a/exception_ptr.h	2011-03-15 14:49:08.000000000 -0700
-+++ b/exception_ptr.h	2011-03-29 10:33:39.000000000 -0700
-@@ -140,7 +140,7 @@
-       friend bool 
-       operator==(const exception_ptr&, const exception_ptr&) throw();
- 
--      const type_info*
-+      const class type_info*
-       __cxa_exception_type() const throw();
-     };
- 
-diff -ur a/ext/algorithm b/ext/algorithm
---- a/ext/algorithm	2011-03-15 14:49:05.000000000 -0700
-+++ b/ext/algorithm	2011-03-29 10:33:39.000000000 -0700
-@@ -423,6 +423,9 @@
- 			     __out_last - __out_first);
-     }
- 
-+#ifdef __GXX_EXPERIMENTAL_CXX0X__
-+  using std::is_heap;
-+#else
-   /**
-    *  This is an SGI extension.
-    *  @ingroup SGIextensions
-@@ -462,6 +465,7 @@
- 
-       return std::__is_heap(__first, __comp, __last - __first);
-     }
-+#endif
- 
-   // is_sorted, a predicated testing whether a range is sorted in
-   // nondescending order.  This is an extension, not part of the C++
-diff -ur a/ext/vstring.h b/ext/vstring.h
---- a/ext/vstring.h	2011-03-15 14:49:05.000000000 -0700
-+++ b/ext/vstring.h	2011-03-29 10:33:39.000000000 -0700
-@@ -152,7 +152,7 @@
-        *  string.
-        */
-       __versa_string(__versa_string&& __str)
--      : __vstring_base(std::forward<__vstring_base>(__str)) { }
-+      : __vstring_base(std::move(__str)) { }
- 
-       /**
-        *  @brief  Construct string from an initializer list.
-@@ -1439,11 +1439,7 @@
-        *  constant time.
-       */
-       void
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
--      swap(__versa_string&& __s)
--#else
-       swap(__versa_string& __s)
--#endif
-       { this->_M_swap(__s); }
- 
-       // String operations:
-diff -ur a/tr1_impl/hashtable b/tr1_impl/hashtable
---- a/tr1_impl/hashtable	2011-03-15 14:49:07.000000000 -0700
-+++ b/tr1_impl/hashtable	2011-05-02 23:41:55.000000000 -0700
-@@ -225,11 +225,7 @@
- 
-       ~_Hashtable();
- 
--#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
--      void swap(_Hashtable&&);
--#else
-       void swap(_Hashtable&);
--#endif
- 
-       // Basic container operations
-       iterator
-@@ -732,11 +728,7 @@
-     void
-     _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal,
- 	       _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
--#ifdef _GLIBCXX_INCLUDE_AS_CXX0X
--    swap(_Hashtable&& __x)
--#else
-     swap(_Hashtable& __x)
--#endif
-     {
-       // The only base class with member variables is hash_code_base.  We
-       // define _Hash_code_base::_M_swap because different specializations
-diff -ur a/tuple b/tuple
---- a/tuple	2011-03-15 14:49:07.000000000 -0700
-+++ b/tuple	2011-05-02 23:33:23.000000000 -0700
-@@ -77,7 +77,7 @@
-       _Head&       _M_head()       { return *this; }
-       const _Head& _M_head() const { return *this; }
-     
--      void _M_swap_impl(_Head&&) { /* no-op */ }
-+      void _M_swap_impl(_Head&) { /* no-op */ }
-     };
- 
-   template<std::size_t _Idx, typename _Head>
-@@ -97,7 +97,7 @@
-       const _Head& _M_head() const { return _M_head_impl; }        
- 
-       void
--      _M_swap_impl(_Head&& __h)
-+      _M_swap_impl(_Head& __h)
-       { 
- 	using std::swap;
- 	swap(__h, _M_head_impl);
-@@ -125,7 +125,7 @@
-     struct _Tuple_impl<_Idx>
-     { 
-     protected:
--      void _M_swap_impl(_Tuple_impl&&) { /* no-op */ }
-+      void _M_swap_impl(_Tuple_impl&) { /* no-op */ }
-     };
- 
-   /**
-@@ -214,7 +214,7 @@
- 
-     protected:
-       void
--      _M_swap_impl(_Tuple_impl&& __in)
-+      _M_swap_impl(_Tuple_impl& __in)
-       {
- 	_Base::_M_swap_impl(__in._M_head());
- 	_Inherited::_M_swap_impl(__in._M_tail());
-@@ -292,7 +292,7 @@
- 	}
- 
-       void
--      swap(tuple&& __in)
-+      swap(tuple& __in)
-       { _Inherited::_M_swap_impl(__in); }
-     };
- 
-@@ -301,7 +301,7 @@
-     class tuple<>
-     {
-     public:
--      void swap(tuple&&) { /* no-op */ }
-+      void swap(tuple&) { /* no-op */ }
-     };
- 
-   /// tuple (2-element), with construction and assignment from a pair.
-@@ -394,7 +394,7 @@
- 	}
- 
-       void
--      swap(tuple&& __in)
-+      swap(tuple& __in)
-       { 
- 	using std::swap;
- 	swap(this->_M_head(), __in._M_head());

Modified: trunk/contrib/llvm/tools/clang/www/libstdc++4.6-clang11.patch
===================================================================
--- trunk/contrib/llvm/tools/clang/www/libstdc++4.6-clang11.patch	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/libstdc++4.6-clang11.patch	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,11 +0,0 @@
---- type_traits.orig	2012-10-04 15:20:43.452992946 -0700
-+++ type_traits	2012-10-04 15:21:32.423657167 -0700
-@@ -1110,7 +1110,7 @@
- 
-   template<typename _Tp, typename _Up>
-     struct common_type<_Tp, _Up>
--    { typedef decltype(true ? declval<_Tp>() : declval<_Up>()) type; };
-+    { typedef typename decay<decltype(true ? declval<_Tp>() : declval<_Up>())>::type type; };
- 
-   template<typename _Tp, typename _Up, typename... _Vp>
-     struct common_type<_Tp, _Up, _Vp...>

Modified: trunk/contrib/llvm/tools/clang/www/libstdc++4.7-clang11.patch
===================================================================
--- trunk/contrib/llvm/tools/clang/www/libstdc++4.7-clang11.patch	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/libstdc++4.7-clang11.patch	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,13 +0,0 @@
-Index: include/std/type_traits
-===================================================================
---- include/std/type_traits	(revision 185724)
-+++ include/std/type_traits	(working copy)
-@@ -1746,7 +1746,7 @@
- 
-   template<typename _Tp, typename _Up>
-     struct common_type<_Tp, _Up>
--    { typedef decltype(true ? declval<_Tp>() : declval<_Up>()) type; };
-+    { typedef typename decay<decltype(true ? declval<_Tp>() : declval<_Up>())>::type type; };
- 
-   template<typename _Tp, typename _Up, typename... _Vp>
-     struct common_type<_Tp, _Up, _Vp...>

Modified: trunk/contrib/llvm/tools/clang/www/menu.css
===================================================================
--- trunk/contrib/llvm/tools/clang/www/menu.css	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/menu.css	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,39 +0,0 @@
-/***************/
-/* page layout */
-/***************/
-
-[id=menu] {
-	position:fixed;
-	width:25ex;
-}
-[id=content] {
-	/* *****  EDIT THIS VALUE IF CONTENT OVERLAPS MENU ***** */
-	margin-left:29ex;
-	padding-right:4ex;
-	word-wrap: break-word;
-}
-
-/**************/
-/* menu style */
-/**************/
-
-#menu .submenu {
-	padding-top:1em;
-	display:block;
-}
-
-#menu label {
-	display:block;
-	font-weight: bold;
-	text-align: center;
-	background-color: rgb(192,192,192);
-}
-#menu a {
-	padding:0 .2em;
-	display:block;
-	text-align: center;
-	background-color: rgb(235,235,235);
-}
-#menu a:visited {
-	color:rgb(100,50,100);
-}

Modified: trunk/contrib/llvm/tools/clang/www/menu.html.incl
===================================================================
--- trunk/contrib/llvm/tools/clang/www/menu.html.incl	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/menu.html.incl	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,62 +0,0 @@
-<div id="menu">
-  <div>
-    <a href="http://llvm.org/">LLVM Home</a>
-  </div>
-  
-  <div class="submenu">
-    <label>Clang Info</label>
-    <a href="/index.html">About</a>
-    <a href="/features.html">Features</a>
-    <a href="/comparison.html">Comparisons</a>
-    <a href="/related.html">Related Projects</a>
-    <a href="/docs/UsersManual.html">User's Manual</a>
-    <a href="/compatibility.html">Language Compatibility</a>
-    <a href="/docs/LanguageExtensions.html">Language Extensions</a>
-    <a href="/cxx_status.html">C++ Status</a>
-  </div>
-
-  <div class="submenu">
-    <label>Clang Development</label>
-    <a href="/get_started.html">Get Started</a>
-    <a href="/get_involved.html">Get Involved</a>
-    <a href="/OpenProjects.html">Open Projects</a>
-    <a href="/docs/InternalsManual.html">Clang Internals</a>
-    <a href="/hacking.html">Hacking on Clang</a>
-  </div>
-  
-  <div class="submenu">
-    <label>Clang Tools</label>
-    <a href="http://clang-analyzer.llvm.org">Automatic Bug-Finding</a>
-    <a href="/docs/Tooling.html">Writing Clang Tools</a>
-  </div>
-  
-  <div class="submenu">
-    <label>Communication</label>
-    <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users">cfe-users List</a>
-    <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">cfe-dev List</a>
-    <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits List</a>
-    <a href="irc://irc.oftc.net/llvm">IRC: irc.oftc.net#llvm</a>
-    <a href="http://llvm.org/bugs/">Bug Reports</a>
-  </div>
-
-  <div class="submenu">
-    <label>The Code</label>
-    <a href="/get_started.html#build">Check Out SVN</a>
-    <a href="http://llvm.org/svn/llvm-project/cfe/trunk/">Browse SVN</a>
-    <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/">Browse ViewVC</a>
-    <a href="http://clang.llvm.org/doxygen/">doxygen</a>
-  </div>
-
-  <div class="submenu">
-    <label>Quick Links</label>
-    <a href="http://test.minormatter.com/~ddunbar/clang-cov/">Testing Coverage</a>
-    <a href="http://test.minormatter.com/~ddunbar/references.html">Spec. References</a>
-  </div>
-  
-  <div class="submenu">
-    <label>Clang Events</label>
-    <a href="http://llvm.org/devmtg/2009-10/">October 2009</a>
-    <a href="http://llvm.org/devmtg/2010-11/">November 2010</a> 
-  </div>
-
-</div>

Modified: trunk/contrib/llvm/tools/clang/www/related.html
===================================================================
--- trunk/contrib/llvm/tools/clang/www/related.html	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/related.html	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,55 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
-          "http://www.w3.org/TR/html4/strict.dtd">
-<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
-<html>
-<head>
-  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-  <title>Clang Related Projects</title>
-  <link type="text/css" rel="stylesheet" href="menu.css">
-  <link type="text/css" rel="stylesheet" href="content.css">
-</head>
-<body>
-  <!--#include virtual="menu.html.incl"-->
-  <div id="content">
-    <h1>Clang Related Projects</h1>
-    
-    <p>As Clang matures, more and more projects are being built atop the Clang
-      libraries and other open source projects are starting their own Clang
-      related subprojects, like building their source code with Clang or writing
-      custom analysis tools using Clang. This page tracks some of those Clang
-      related projects.</p>
-
-    <p>Please email cfe-dev if you have a Clang related project you would like
-      added to this list.</p>
-
-    <dl>
-      <dt>FreeBSD Clang Page</dt>
-      <dd>
-        <p>
-          <b>Site:</b>
-          <a href="http://wiki.freebsd.org/BuildingFreeBSDWithClang">
-            http://wiki.freebsd.org/BuildingFreeBSDWithClang</a>
-        </p>
-        <p>
-          This is an effort to get FreeBSD to build with clang/llvm. Clang is a
-          compiler built on the Low Level Virtual Machine compiler
-          infrastructure. Both clang and llvm are released under a BSD like
-          license.
-        </p>
-      </dd>
-
-      <dt>Chromium Clang Page</dt>
-      <dd>
-        <p>
-          <b>Site:</b>
-          <a href="http://code.google.com/p/chromium/wiki/Clang">
-            http://code.google.com/p/chromium/wiki/Clang</a>
-        </p>
-        <p>
-          Notes on using Clang to build the Chromium web browser.
-        </p>
-      </dd>
-    </dl>
-  </div>
-</body>
-</html>

Modified: trunk/contrib/llvm/tools/clang/www/robots.txt
===================================================================
--- trunk/contrib/llvm/tools/clang/www/robots.txt	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/clang/www/robots.txt	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,2 +0,0 @@
-User-agent: *
-Disallow: 

Modified: trunk/contrib/llvm/tools/gold/gold-plugin.cpp
===================================================================
--- trunk/contrib/llvm/tools/gold/gold-plugin.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/gold/gold-plugin.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,464 +0,0 @@
-//===-- gold-plugin.cpp - Plugin to gold for Link Time Optimization  ------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This is a gold plugin for LLVM. It provides an LLVM implementation of the
-// interface described in http://gcc.gnu.org/wiki/whopr/driver .
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Config/config.h" // plugin-api.h requires HAVE_STDINT_H
-#include "plugin-api.h"
-#include "llvm-c/lto.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/Support/Errno.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/Program.h"
-#include "llvm/Support/ToolOutputFile.h"
-#include "llvm/Support/system_error.h"
-#include <cerrno>
-#include <cstdlib>
-#include <cstring>
-#include <fstream>
-#include <list>
-#include <vector>
-
-// Support Windows/MinGW crazyness.
-#ifdef _WIN32
-# include <io.h>
-# define lseek _lseek
-# define read _read
-#endif
-
-using namespace llvm;
-
-namespace {
-  ld_plugin_status discard_message(int level, const char *format, ...) {
-    // Die loudly. Recent versions of Gold pass ld_plugin_message as the first
-    // callback in the transfer vector. This should never be called.
-    abort();
-  }
-
-  ld_plugin_add_symbols add_symbols = NULL;
-  ld_plugin_get_symbols get_symbols = NULL;
-  ld_plugin_add_input_file add_input_file = NULL;
-  ld_plugin_add_input_library add_input_library = NULL;
-  ld_plugin_set_extra_library_path set_extra_library_path = NULL;
-  ld_plugin_get_view get_view = NULL;
-  ld_plugin_message message = discard_message;
-
-  int api_version = 0;
-  int gold_version = 0;
-
-  struct claimed_file {
-    void *handle;
-    std::vector<ld_plugin_symbol> syms;
-  };
-
-  lto_codegen_model output_type = LTO_CODEGEN_PIC_MODEL_STATIC;
-  std::string output_name = "";
-  std::list<claimed_file> Modules;
-  std::vector<sys::Path> Cleanup;
-  lto_code_gen_t code_gen = NULL;
-}
-
-namespace options {
-  enum generate_bc { BC_NO, BC_ALSO, BC_ONLY };
-  static bool generate_api_file = false;
-  static generate_bc generate_bc_file = BC_NO;
-  static std::string bc_path;
-  static std::string obj_path;
-  static std::string extra_library_path;
-  static std::string triple;
-  static std::string mcpu;
-  // Additional options to pass into the code generator.
-  // Note: This array will contain all plugin options which are not claimed
-  // as plugin exclusive to pass to the code generator.
-  // For example, "generate-api-file" and "as"options are for the plugin
-  // use only and will not be passed.
-  static std::vector<std::string> extra;
-
-  static void process_plugin_option(const char* opt_)
-  {
-    if (opt_ == NULL)
-      return;
-    llvm::StringRef opt = opt_;
-
-    if (opt == "generate-api-file") {
-      generate_api_file = true;
-    } else if (opt.startswith("mcpu=")) {
-      mcpu = opt.substr(strlen("mcpu="));
-    } else if (opt.startswith("extra-library-path=")) {
-      extra_library_path = opt.substr(strlen("extra_library_path="));
-    } else if (opt.startswith("mtriple=")) {
-      triple = opt.substr(strlen("mtriple="));
-    } else if (opt.startswith("obj-path=")) {
-      obj_path = opt.substr(strlen("obj-path="));
-    } else if (opt == "emit-llvm") {
-      generate_bc_file = BC_ONLY;
-    } else if (opt == "also-emit-llvm") {
-      generate_bc_file = BC_ALSO;
-    } else if (opt.startswith("also-emit-llvm=")) {
-      llvm::StringRef path = opt.substr(strlen("also-emit-llvm="));
-      generate_bc_file = BC_ALSO;
-      if (!bc_path.empty()) {
-        (*message)(LDPL_WARNING, "Path to the output IL file specified twice. "
-                   "Discarding %s", opt_);
-      } else {
-        bc_path = path;
-      }
-    } else {
-      // Save this option to pass to the code generator.
-      extra.push_back(opt);
-    }
-  }
-}
-
-static ld_plugin_status claim_file_hook(const ld_plugin_input_file *file,
-                                        int *claimed);
-static ld_plugin_status all_symbols_read_hook(void);
-static ld_plugin_status cleanup_hook(void);
-
-extern "C" ld_plugin_status onload(ld_plugin_tv *tv);
-ld_plugin_status onload(ld_plugin_tv *tv) {
-  // We're given a pointer to the first transfer vector. We read through them
-  // until we find one where tv_tag == LDPT_NULL. The REGISTER_* tagged values
-  // contain pointers to functions that we need to call to register our own
-  // hooks. The others are addresses of functions we can use to call into gold
-  // for services.
-
-  bool registeredClaimFile = false;
-
-  for (; tv->tv_tag != LDPT_NULL; ++tv) {
-    switch (tv->tv_tag) {
-      case LDPT_API_VERSION:
-        api_version = tv->tv_u.tv_val;
-        break;
-      case LDPT_GOLD_VERSION:  // major * 100 + minor
-        gold_version = tv->tv_u.tv_val;
-        break;
-      case LDPT_OUTPUT_NAME:
-        output_name = tv->tv_u.tv_string;
-        break;
-      case LDPT_LINKER_OUTPUT:
-        switch (tv->tv_u.tv_val) {
-          case LDPO_REL:  // .o
-          case LDPO_DYN:  // .so
-          // FIXME: Replace 3 with LDPO_PIE once that is in a released binutils.
-          case 3: // position independent executable
-            output_type = LTO_CODEGEN_PIC_MODEL_DYNAMIC;
-            break;
-          case LDPO_EXEC:  // .exe
-            output_type = LTO_CODEGEN_PIC_MODEL_STATIC;
-            break;
-          default:
-            (*message)(LDPL_ERROR, "Unknown output file type %d",
-                       tv->tv_u.tv_val);
-            return LDPS_ERR;
-        }
-        // TODO: add an option to disable PIC.
-        //output_type = LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC;
-        break;
-      case LDPT_OPTION:
-        options::process_plugin_option(tv->tv_u.tv_string);
-        break;
-      case LDPT_REGISTER_CLAIM_FILE_HOOK: {
-        ld_plugin_register_claim_file callback;
-        callback = tv->tv_u.tv_register_claim_file;
-
-        if ((*callback)(claim_file_hook) != LDPS_OK)
-          return LDPS_ERR;
-
-        registeredClaimFile = true;
-      } break;
-      case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: {
-        ld_plugin_register_all_symbols_read callback;
-        callback = tv->tv_u.tv_register_all_symbols_read;
-
-        if ((*callback)(all_symbols_read_hook) != LDPS_OK)
-          return LDPS_ERR;
-
-        code_gen = lto_codegen_create();
-      } break;
-      case LDPT_REGISTER_CLEANUP_HOOK: {
-        ld_plugin_register_cleanup callback;
-        callback = tv->tv_u.tv_register_cleanup;
-
-        if ((*callback)(cleanup_hook) != LDPS_OK)
-          return LDPS_ERR;
-      } break;
-      case LDPT_ADD_SYMBOLS:
-        add_symbols = tv->tv_u.tv_add_symbols;
-        break;
-      case LDPT_GET_SYMBOLS:
-        get_symbols = tv->tv_u.tv_get_symbols;
-        break;
-      case LDPT_ADD_INPUT_FILE:
-        add_input_file = tv->tv_u.tv_add_input_file;
-        break;
-      case LDPT_ADD_INPUT_LIBRARY:
-        add_input_library = tv->tv_u.tv_add_input_file;
-        break;
-      case LDPT_SET_EXTRA_LIBRARY_PATH:
-        set_extra_library_path = tv->tv_u.tv_set_extra_library_path;
-        break;
-      case LDPT_GET_VIEW:
-        get_view = tv->tv_u.tv_get_view;
-        break;
-      case LDPT_MESSAGE:
-        message = tv->tv_u.tv_message;
-        break;
-      default:
-        break;
-    }
-  }
-
-  if (!registeredClaimFile) {
-    (*message)(LDPL_ERROR, "register_claim_file not passed to LLVMgold.");
-    return LDPS_ERR;
-  }
-  if (!add_symbols) {
-    (*message)(LDPL_ERROR, "add_symbols not passed to LLVMgold.");
-    return LDPS_ERR;
-  }
-
-  return LDPS_OK;
-}
-
-/// claim_file_hook - called by gold to see whether this file is one that
-/// our plugin can handle. We'll try to open it and register all the symbols
-/// with add_symbol if possible.
-static ld_plugin_status claim_file_hook(const ld_plugin_input_file *file,
-                                        int *claimed) {
-  lto_module_t M;
-  const void *view;
-  OwningPtr<MemoryBuffer> buffer;
-  if (get_view) {
-    if (get_view(file->handle, &view) != LDPS_OK) {
-      (*message)(LDPL_ERROR, "Failed to get a view of %s", file->name);
-      return LDPS_ERR;
-    }
-  } else {
-    int64_t offset = 0;
-    // Gold has found what might be IR part-way inside of a file, such as
-    // an .a archive.
-    if (file->offset) {
-      offset = file->offset;
-    }
-    if (error_code ec =
-        MemoryBuffer::getOpenFile(file->fd, file->name, buffer, file->filesize,
-                                  -1, offset, false)) {
-      (*message)(LDPL_ERROR, ec.message().c_str());
-      return LDPS_ERR;
-    }
-    view = buffer->getBufferStart();
-  }
-
-  if (!lto_module_is_object_file_in_memory(view, file->filesize))
-    return LDPS_OK;
-
-  M = lto_module_create_from_memory(view, file->filesize);
-  if (!M) {
-    if (const char* msg = lto_get_error_message()) {
-      (*message)(LDPL_ERROR,
-                 "LLVM gold plugin has failed to create LTO module: %s",
-                 msg);
-      return LDPS_ERR;
-    }
-    return LDPS_OK;
-  }
-
-  *claimed = 1;
-  Modules.resize(Modules.size() + 1);
-  claimed_file &cf = Modules.back();
-
-  if (!options::triple.empty())
-    lto_module_set_target_triple(M, options::triple.c_str());
-
-  cf.handle = file->handle;
-  unsigned sym_count = lto_module_get_num_symbols(M);
-  cf.syms.reserve(sym_count);
-
-  for (unsigned i = 0; i != sym_count; ++i) {
-    lto_symbol_attributes attrs = lto_module_get_symbol_attribute(M, i);
-    if ((attrs & LTO_SYMBOL_SCOPE_MASK) == LTO_SYMBOL_SCOPE_INTERNAL)
-      continue;
-
-    cf.syms.push_back(ld_plugin_symbol());
-    ld_plugin_symbol &sym = cf.syms.back();
-    sym.name = const_cast<char *>(lto_module_get_symbol_name(M, i));
-    sym.name = strdup(sym.name);
-    sym.version = NULL;
-
-    int scope = attrs & LTO_SYMBOL_SCOPE_MASK;
-    switch (scope) {
-      case LTO_SYMBOL_SCOPE_HIDDEN:
-        sym.visibility = LDPV_HIDDEN;
-        break;
-      case LTO_SYMBOL_SCOPE_PROTECTED:
-        sym.visibility = LDPV_PROTECTED;
-        break;
-      case 0: // extern
-      case LTO_SYMBOL_SCOPE_DEFAULT:
-        sym.visibility = LDPV_DEFAULT;
-        break;
-      default:
-        (*message)(LDPL_ERROR, "Unknown scope attribute: %d", scope);
-        return LDPS_ERR;
-    }
-
-    int definition = attrs & LTO_SYMBOL_DEFINITION_MASK;
-    sym.comdat_key = NULL;
-    switch (definition) {
-      case LTO_SYMBOL_DEFINITION_REGULAR:
-        sym.def = LDPK_DEF;
-        break;
-      case LTO_SYMBOL_DEFINITION_UNDEFINED:
-        sym.def = LDPK_UNDEF;
-        break;
-      case LTO_SYMBOL_DEFINITION_TENTATIVE:
-        sym.def = LDPK_COMMON;
-        break;
-      case LTO_SYMBOL_DEFINITION_WEAK:
-        sym.comdat_key = sym.name;
-        sym.def = LDPK_WEAKDEF;
-        break;
-      case LTO_SYMBOL_DEFINITION_WEAKUNDEF:
-        sym.def = LDPK_WEAKUNDEF;
-        break;
-      default:
-        (*message)(LDPL_ERROR, "Unknown definition attribute: %d", definition);
-        return LDPS_ERR;
-    }
-
-    sym.size = 0;
-
-    sym.resolution = LDPR_UNKNOWN;
-  }
-
-  cf.syms.reserve(cf.syms.size());
-
-  if (!cf.syms.empty()) {
-    if ((*add_symbols)(cf.handle, cf.syms.size(), &cf.syms[0]) != LDPS_OK) {
-      (*message)(LDPL_ERROR, "Unable to add symbols!");
-      return LDPS_ERR;
-    }
-  }
-
-  if (code_gen)
-    lto_codegen_add_module(code_gen, M);
-
-  lto_module_dispose(M);
-
-  return LDPS_OK;
-}
-
-/// all_symbols_read_hook - gold informs us that all symbols have been read.
-/// At this point, we use get_symbols to see if any of our definitions have
-/// been overridden by a native object file. Then, perform optimization and
-/// codegen.
-static ld_plugin_status all_symbols_read_hook(void) {
-  std::ofstream api_file;
-  assert(code_gen);
-
-  if (options::generate_api_file) {
-    api_file.open("apifile.txt", std::ofstream::out | std::ofstream::trunc);
-    if (!api_file.is_open()) {
-      (*message)(LDPL_FATAL, "Unable to open apifile.txt for writing.");
-      abort();
-    }
-  }
-
-  for (std::list<claimed_file>::iterator I = Modules.begin(),
-         E = Modules.end(); I != E; ++I) {
-    if (I->syms.empty())
-      continue;
-    (*get_symbols)(I->handle, I->syms.size(), &I->syms[0]);
-    for (unsigned i = 0, e = I->syms.size(); i != e; i++) {
-      if (I->syms[i].resolution == LDPR_PREVAILING_DEF) {
-        lto_codegen_add_must_preserve_symbol(code_gen, I->syms[i].name);
-
-        if (options::generate_api_file)
-          api_file << I->syms[i].name << "\n";
-      }
-    }
-  }
-
-  if (options::generate_api_file)
-    api_file.close();
-
-  lto_codegen_set_pic_model(code_gen, output_type);
-  lto_codegen_set_debug_model(code_gen, LTO_DEBUG_MODEL_DWARF);
-  if (!options::mcpu.empty())
-    lto_codegen_set_cpu(code_gen, options::mcpu.c_str());
-
-  // Pass through extra options to the code generator.
-  if (!options::extra.empty()) {
-    for (std::vector<std::string>::iterator it = options::extra.begin();
-         it != options::extra.end(); ++it) {
-      lto_codegen_debug_options(code_gen, (*it).c_str());
-    }
-  }
-
-  if (options::generate_bc_file != options::BC_NO) {
-    std::string path;
-    if (options::generate_bc_file == options::BC_ONLY)
-      path = output_name;
-    else if (!options::bc_path.empty())
-      path = options::bc_path;
-    else
-      path = output_name + ".bc";
-    bool err = lto_codegen_write_merged_modules(code_gen, path.c_str());
-    if (err)
-      (*message)(LDPL_FATAL, "Failed to write the output file.");
-    if (options::generate_bc_file == options::BC_ONLY)
-      exit(0);
-  }
-  const char *objPath;
-  if (lto_codegen_compile_to_file(code_gen, &objPath)) {
-    (*message)(LDPL_ERROR, "Could not produce a combined object file\n");
-  }
-
-  lto_codegen_dispose(code_gen);
-  for (std::list<claimed_file>::iterator I = Modules.begin(),
-         E = Modules.end(); I != E; ++I) {
-    for (unsigned i = 0; i != I->syms.size(); ++i) {
-      ld_plugin_symbol &sym = I->syms[i];
-      free(sym.name);
-    }
-  }
-
-  if ((*add_input_file)(objPath) != LDPS_OK) {
-    (*message)(LDPL_ERROR, "Unable to add .o file to the link.");
-    (*message)(LDPL_ERROR, "File left behind in: %s", objPath);
-    return LDPS_ERR;
-  }
-
-  if (!options::extra_library_path.empty() &&
-      set_extra_library_path(options::extra_library_path.c_str()) != LDPS_OK) {
-    (*message)(LDPL_ERROR, "Unable to set the extra library path.");
-    return LDPS_ERR;
-  }
-
-  if (options::obj_path.empty())
-    Cleanup.push_back(sys::Path(objPath));
-
-  return LDPS_OK;
-}
-
-static ld_plugin_status cleanup_hook(void) {
-  std::string ErrMsg;
-
-  for (int i = 0, e = Cleanup.size(); i != e; ++i)
-    if (Cleanup[i].eraseFromDisk(false, &ErrMsg))
-      (*message)(LDPL_ERROR, "Failed to delete '%s': %s", Cleanup[i].c_str(),
-                 ErrMsg.c_str());
-
-  return LDPS_OK;
-}

Modified: trunk/contrib/llvm/tools/gold/gold.exports
===================================================================
--- trunk/contrib/llvm/tools/gold/gold.exports	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/gold/gold.exports	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1 +0,0 @@
-onload

Modified: trunk/contrib/llvm/tools/llvm-config/BuildVariables.inc.in
===================================================================
--- trunk/contrib/llvm/tools/llvm-config/BuildVariables.inc.in	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/llvm-config/BuildVariables.inc.in	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,27 +0,0 @@
-//===-- BuildVariables.inc.in - llvm-config build variables -*- C++ -*-----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file is configured by the build system to define the variables
-// llvm-config wants to report to the user, but which can only be determined at
-// build time.
-//
-// The non .in variant of this file has been autogenerated by the LLVM build. Do
-// not edit!
-//
-//===----------------------------------------------------------------------===//
-
-#define LLVM_SRC_ROOT "@LLVM_SRC_ROOT@"
-#define LLVM_OBJ_ROOT "@LLVM_OBJ_ROOT@"
-#define LLVM_CPPFLAGS "@LLVM_CPPFLAGS@"
-#define LLVM_CFLAGS "@LLVM_CFLAGS@"
-#define LLVM_LDFLAGS "@LLVM_LDFLAGS@"
-#define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
-#define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
-#define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
-#define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"

Modified: trunk/contrib/llvm/tools/llvm-config/llvm-config.cpp
===================================================================
--- trunk/contrib/llvm/tools/llvm-config/llvm-config.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/llvm-config/llvm-config.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,356 +0,0 @@
-//===-- llvm-config.cpp - LLVM project configuration utility --------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This tool encapsulates information about an LLVM project configuration for
-// use by other project's build environments (to determine installed path,
-// available features, required libraries, etc.).
-//
-// Note that although this tool *may* be used by some parts of LLVM's build
-// itself (i.e., the Makefiles use it to compute required libraries when linking
-// tools), this tool is primarily designed to support external projects.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/Twine.h"
-#include "llvm/Config/config.h"
-#include "llvm/Config/llvm-config.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/raw_ostream.h"
-#include <cstdlib>
-#include <set>
-#include <vector>
-
-using namespace llvm;
-
-// Include the build time variables we can report to the user. This is generated
-// at build time from the BuildVariables.inc.in file by the build system.
-#include "BuildVariables.inc"
-
-// Include the component table. This creates an array of struct
-// AvailableComponent entries, which record the component name, library name,
-// and required components for all of the available libraries.
-//
-// Not all components define a library, we also use "library groups" as a way to
-// create entries for pseudo groups like x86 or all-targets.
-#include "LibraryDependencies.inc"
-
-/// \brief Traverse a single component adding to the topological ordering in
-/// \arg RequiredLibs.
-///
-/// \param Name - The component to traverse.
-/// \param ComponentMap - A prebuilt map of component names to descriptors.
-/// \param VisitedComponents [in] [out] - The set of already visited components.
-/// \param RequiredLibs [out] - The ordered list of required libraries.
-static void VisitComponent(StringRef Name,
-                           const StringMap<AvailableComponent*> &ComponentMap,
-                           std::set<AvailableComponent*> &VisitedComponents,
-                           std::vector<StringRef> &RequiredLibs,
-                           bool IncludeNonInstalled) {
-  // Lookup the component.
-  AvailableComponent *AC = ComponentMap.lookup(Name);
-  assert(AC && "Invalid component name!");
-
-  // Add to the visited table.
-  if (!VisitedComponents.insert(AC).second) {
-    // We are done if the component has already been visited.
-    return;
-  }
-
-  // Only include non-installed components if requested.
-  if (!AC->IsInstalled && !IncludeNonInstalled)
-    return;
-
-  // Otherwise, visit all the dependencies.
-  for (unsigned i = 0; AC->RequiredLibraries[i]; ++i) {
-    VisitComponent(AC->RequiredLibraries[i], ComponentMap, VisitedComponents,
-                   RequiredLibs, IncludeNonInstalled);
-  }
-
-  // Add to the required library list.
-  if (AC->Library)
-    RequiredLibs.push_back(AC->Library);
-}
-
-/// \brief Compute the list of required libraries for a given list of
-/// components, in an order suitable for passing to a linker (that is, libraries
-/// appear prior to their dependencies).
-///
-/// \param Components - The names of the components to find libraries for.
-/// \param RequiredLibs [out] - On return, the ordered list of libraries that
-/// are required to link the given components.
-/// \param IncludeNonInstalled - Whether non-installed components should be
-/// reported.
-void ComputeLibsForComponents(const std::vector<StringRef> &Components,
-                              std::vector<StringRef> &RequiredLibs,
-                              bool IncludeNonInstalled) {
-  std::set<AvailableComponent*> VisitedComponents;
-
-  // Build a map of component names to information.
-  StringMap<AvailableComponent*> ComponentMap;
-  for (unsigned i = 0; i != array_lengthof(AvailableComponents); ++i) {
-    AvailableComponent *AC = &AvailableComponents[i];
-    ComponentMap[AC->Name] = AC;
-  }
-
-  // Visit the components.
-  for (unsigned i = 0, e = Components.size(); i != e; ++i) {
-    // Users are allowed to provide mixed case component names.
-    std::string ComponentLower = Components[i].lower();
-
-    // Validate that the user supplied a valid component name.
-    if (!ComponentMap.count(ComponentLower)) {
-      llvm::errs() << "llvm-config: unknown component name: " << Components[i]
-                   << "\n";
-      exit(1);
-    }
-
-    VisitComponent(ComponentLower, ComponentMap, VisitedComponents,
-                   RequiredLibs, IncludeNonInstalled);
-  }
-
-  // The list is now ordered with leafs first, we want the libraries to printed
-  // in the reverse order of dependency.
-  std::reverse(RequiredLibs.begin(), RequiredLibs.end());
-}
-
-/* *** */
-
-void usage() {
-  errs() << "\
-usage: llvm-config <OPTION>... [<COMPONENT>...]\n\
-\n\
-Get various configuration information needed to compile programs which use\n\
-LLVM.  Typically called from 'configure' scripts.  Examples:\n\
-  llvm-config --cxxflags\n\
-  llvm-config --ldflags\n\
-  llvm-config --libs engine bcreader scalaropts\n\
-\n\
-Options:\n\
-  --version         Print LLVM version.\n\
-  --prefix          Print the installation prefix.\n\
-  --src-root        Print the source root LLVM was built from.\n\
-  --obj-root        Print the object root used to build LLVM.\n\
-  --bindir          Directory containing LLVM executables.\n\
-  --includedir      Directory containing LLVM headers.\n\
-  --libdir          Directory containing LLVM libraries.\n\
-  --cppflags        C preprocessor flags for files that include LLVM headers.\n\
-  --cflags          C compiler flags for files that include LLVM headers.\n\
-  --cxxflags        C++ compiler flags for files that include LLVM headers.\n\
-  --ldflags         Print Linker flags.\n\
-  --libs            Libraries needed to link against LLVM components.\n\
-  --libnames        Bare library names for in-tree builds.\n\
-  --libfiles        Fully qualified library filenames for makefile depends.\n\
-  --components      List of all possible components.\n\
-  --targets-built   List of all targets currently built.\n\
-  --host-target     Target triple used to configure LLVM.\n\
-  --build-mode      Print build mode of LLVM tree (e.g. Debug or Release).\n\
-Typical components:\n\
-  all               All LLVM libraries (default).\n\
-  engine            Either a native JIT or a bitcode interpreter.\n";
-  exit(1);
-}
-
-/// \brief Compute the path to the main executable.
-llvm::sys::Path GetExecutablePath(const char *Argv0) {
-  // This just needs to be some symbol in the binary; C++ doesn't
-  // allow taking the address of ::main however.
-  void *P = (void*) (intptr_t) GetExecutablePath;
-  return llvm::sys::Path::GetMainExecutable(Argv0, P);
-}
-
-int main(int argc, char **argv) {
-  std::vector<StringRef> Components;
-  bool PrintLibs = false, PrintLibNames = false, PrintLibFiles = false;
-  bool HasAnyOption = false;
-
-  // llvm-config is designed to support being run both from a development tree
-  // and from an installed path. We try and auto-detect which case we are in so
-  // that we can report the correct information when run from a development
-  // tree.
-  bool IsInDevelopmentTree;
-  enum { MakefileStyle, CMakeStyle, CMakeBuildModeStyle } DevelopmentTreeLayout;
-  llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0]).str());
-  std::string CurrentExecPrefix;
-  std::string ActiveObjRoot;
-
-  // Create an absolute path, and pop up one directory (we expect to be inside a
-  // bin dir).
-  sys::fs::make_absolute(CurrentPath);
-  CurrentExecPrefix = sys::path::parent_path(
-    sys::path::parent_path(CurrentPath)).str();
-
-  // Check to see if we are inside a development tree by comparing to possible
-  // locations (prefix style or CMake style).
-  if (sys::fs::equivalent(CurrentExecPrefix,
-                          Twine(LLVM_OBJ_ROOT) + "/" + LLVM_BUILDMODE)) {
-    IsInDevelopmentTree = true;
-    DevelopmentTreeLayout = MakefileStyle;
-
-    // If we are in a development tree, then check if we are in a BuildTools
-    // directory. This indicates we are built for the build triple, but we
-    // always want to provide information for the host triple.
-    if (sys::path::filename(LLVM_OBJ_ROOT) == "BuildTools") {
-      ActiveObjRoot = sys::path::parent_path(LLVM_OBJ_ROOT);
-    } else {
-      ActiveObjRoot = LLVM_OBJ_ROOT;
-    }
-  } else if (sys::fs::equivalent(CurrentExecPrefix, LLVM_OBJ_ROOT)) {
-    IsInDevelopmentTree = true;
-    DevelopmentTreeLayout = CMakeStyle;
-    ActiveObjRoot = LLVM_OBJ_ROOT;
-  } else if (sys::fs::equivalent(CurrentExecPrefix,
-                                 Twine(LLVM_OBJ_ROOT) + "/bin")) {
-    IsInDevelopmentTree = true;
-    DevelopmentTreeLayout = CMakeBuildModeStyle;
-    ActiveObjRoot = LLVM_OBJ_ROOT;
-  } else {
-    IsInDevelopmentTree = false;
-    DevelopmentTreeLayout = MakefileStyle; // Initialized to avoid warnings.
-  }
-
-  // Compute various directory locations based on the derived location
-  // information.
-  std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir;
-  std::string ActiveIncludeOption;
-  if (IsInDevelopmentTree) {
-    ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
-    ActivePrefix = CurrentExecPrefix;
-
-    // CMake organizes the products differently than a normal prefix style
-    // layout.
-    switch (DevelopmentTreeLayout) {
-    case MakefileStyle:
-      ActiveBinDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/bin";
-      ActiveLibDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/lib";
-      break;
-    case CMakeStyle:
-      ActiveBinDir = ActiveObjRoot + "/bin";
-      ActiveLibDir = ActiveObjRoot + "/lib";
-      break;
-    case CMakeBuildModeStyle:
-      ActiveBinDir = ActiveObjRoot + "/bin/" + LLVM_BUILDMODE;
-      ActiveLibDir = ActiveObjRoot + "/lib/" + LLVM_BUILDMODE;
-      break;
-    }
-
-    // We need to include files from both the source and object trees.
-    ActiveIncludeOption = ("-I" + ActiveIncludeDir + " " +
-                           "-I" + ActiveObjRoot + "/include");
-  } else {
-    ActivePrefix = CurrentExecPrefix;
-    ActiveIncludeDir = ActivePrefix + "/include";
-    ActiveBinDir = ActivePrefix + "/bin";
-    ActiveLibDir = ActivePrefix + "/lib";
-    ActiveIncludeOption = "-I" + ActiveIncludeDir;
-  }
-
-  raw_ostream &OS = outs();
-  for (int i = 1; i != argc; ++i) {
-    StringRef Arg = argv[i];
-
-    if (Arg.startswith("-")) {
-      HasAnyOption = true;
-      if (Arg == "--version") {
-        OS << PACKAGE_VERSION << '\n';
-      } else if (Arg == "--prefix") {
-        OS << ActivePrefix << '\n';
-      } else if (Arg == "--bindir") {
-        OS << ActiveBinDir << '\n';
-      } else if (Arg == "--includedir") {
-        OS << ActiveIncludeDir << '\n';
-      } else if (Arg == "--libdir") {
-        OS << ActiveLibDir << '\n';
-      } else if (Arg == "--cppflags") {
-        OS << ActiveIncludeOption << ' ' << LLVM_CPPFLAGS << '\n';
-      } else if (Arg == "--cflags") {
-        OS << ActiveIncludeOption << ' ' << LLVM_CFLAGS << '\n';
-      } else if (Arg == "--cxxflags") {
-        OS << ActiveIncludeOption << ' ' << LLVM_CXXFLAGS << '\n';
-      } else if (Arg == "--ldflags") {
-        OS << "-L" << ActiveLibDir << ' ' << LLVM_LDFLAGS
-           << ' ' << LLVM_SYSTEM_LIBS << '\n';
-      } else if (Arg == "--libs") {
-        PrintLibs = true;
-      } else if (Arg == "--libnames") {
-        PrintLibNames = true;
-      } else if (Arg == "--libfiles") {
-        PrintLibFiles = true;
-      } else if (Arg == "--components") {
-        for (unsigned j = 0; j != array_lengthof(AvailableComponents); ++j) {
-          // Only include non-installed components when in a development tree.
-          if (!AvailableComponents[j].IsInstalled && !IsInDevelopmentTree)
-            continue;
-
-          OS << ' ';
-          OS << AvailableComponents[j].Name;
-        }
-        OS << '\n';
-      } else if (Arg == "--targets-built") {
-        OS << LLVM_TARGETS_BUILT << '\n';
-      } else if (Arg == "--host-target") {
-        OS << LLVM_DEFAULT_TARGET_TRIPLE << '\n';
-      } else if (Arg == "--build-mode") {
-        OS << LLVM_BUILDMODE << '\n';
-      } else if (Arg == "--obj-root") {
-        OS << LLVM_OBJ_ROOT << '\n';
-      } else if (Arg == "--src-root") {
-        OS << LLVM_SRC_ROOT << '\n';
-      } else {
-        usage();
-      }
-    } else {
-      Components.push_back(Arg);
-    }
-  }
-
-  if (!HasAnyOption)
-    usage();
-
-  if (PrintLibs || PrintLibNames || PrintLibFiles) {
-    // If no components were specified, default to "all".
-    if (Components.empty())
-      Components.push_back("all");
-
-    // Construct the list of all the required libraries.
-    std::vector<StringRef> RequiredLibs;
-    ComputeLibsForComponents(Components, RequiredLibs,
-                             /*IncludeNonInstalled=*/IsInDevelopmentTree);
-
-    for (unsigned i = 0, e = RequiredLibs.size(); i != e; ++i) {
-      StringRef Lib = RequiredLibs[i];
-      if (i)
-        OS << ' ';
-
-      if (PrintLibNames) {
-        OS << Lib;
-      } else if (PrintLibFiles) {
-        OS << ActiveLibDir << '/' << Lib;
-      } else if (PrintLibs) {
-        // If this is a typical library name, include it using -l.
-        if (Lib.startswith("lib") && Lib.endswith(".a")) {
-          OS << "-l" << Lib.slice(3, Lib.size()-2);
-          continue;
-        }
-
-        // Otherwise, print the full path.
-        OS << ActiveLibDir << '/' << Lib;
-      }
-    }
-    OS << '\n';
-  } else if (!Components.empty()) {
-    errs() << "llvm-config: error: components given, but unused\n\n";
-    usage();
-  }
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/llvm-cov/llvm-cov.cpp
===================================================================
--- trunk/contrib/llvm/tools/llvm-cov/llvm-cov.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/llvm-cov/llvm-cov.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,78 +0,0 @@
-//===- tools/llvm-cov/llvm-cov.cpp - LLVM coverage tool -------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// llvm-cov is a command line tools to analyze and report coverage information.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/GCOV.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/MemoryObject.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
-#include "llvm/Support/system_error.h"
-using namespace llvm;
-
-static cl::opt<bool>
-DumpGCOV("dump", cl::init(false), cl::desc("dump gcov file"));
-
-static cl::opt<std::string>
-InputGCNO("gcno", cl::desc("<input gcno file>"), cl::init(""));
-
-static cl::opt<std::string>
-InputGCDA("gcda", cl::desc("<input gcda file>"), cl::init(""));
-
-
-//===----------------------------------------------------------------------===//
-int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal();
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
-
-  cl::ParseCommandLineOptions(argc, argv, "llvm cov\n");
-
-  GCOVFile GF;
-  if (InputGCNO.empty())
-    errs() << " " << argv[0] << ": No gcov input file!\n";
-
-  OwningPtr<MemoryBuffer> GCNO_Buff;
-  if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputGCNO, GCNO_Buff)) {
-    errs() << InputGCNO << ": " << ec.message() << "\n";
-    return 1;
-  }
-  GCOVBuffer GCNO_GB(GCNO_Buff.take());
-  if (!GF.read(GCNO_GB)) {
-    errs() << "Invalid .gcno File!\n";
-    return 1;
-  }
-
-  if (!InputGCDA.empty()) {
-    OwningPtr<MemoryBuffer> GCDA_Buff;
-    if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputGCDA, GCDA_Buff)) {
-      errs() << InputGCDA << ": " << ec.message() << "\n";
-      return 1;
-    }
-    GCOVBuffer GCDA_GB(GCDA_Buff.take());
-    if (!GF.read(GCDA_GB)) {
-      errs() << "Invalid .gcda File!\n";
-      return 1;
-    }
-  }
-
-
-  if (DumpGCOV)
-    GF.dump();
-
-  FileInfo FI;
-  GF.collectLineCounts(FI);
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp
===================================================================
--- trunk/contrib/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,144 +0,0 @@
-//===-- llvm-dwarfdump.cpp - Debug info dumping utility for llvm ----------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This program is a utility that works like "dwarfdump".
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/Triple.h"
-#include "llvm/DebugInfo/DIContext.h"
-#include "llvm/Object/ObjectFile.h"
-#include "llvm/Object/RelocVisitor.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Debug.h"
-#include "llvm/Support/Format.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/MemoryObject.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/system_error.h"
-#include <algorithm>
-#include <cstring>
-#include <list>
-#include <string>
-
-using namespace llvm;
-using namespace object;
-
-static cl::list<std::string>
-InputFilenames(cl::Positional, cl::desc("<input object files>"),
-               cl::ZeroOrMore);
-
-static cl::opt<unsigned long long>
-Address("address", cl::init(-1ULL),
-        cl::desc("Print line information for a given address"));
-
-static cl::opt<bool>
-PrintFunctions("functions", cl::init(false),
-               cl::desc("Print function names as well as line information "
-                        "for a given address"));
-
-static cl::opt<bool>
-PrintInlining("inlining", cl::init(false),
-              cl::desc("Print all inlined frames for a given address"));
-
-static cl::opt<DIDumpType>
-DumpType("debug-dump", cl::init(DIDT_All),
-  cl::desc("Dump of debug sections:"),
-  cl::values(
-        clEnumValN(DIDT_All, "all", "Dump all debug sections"),
-        clEnumValN(DIDT_Abbrev, "abbrev", ".debug_abbrev"),
-        clEnumValN(DIDT_AbbrevDwo, "abbrev.dwo", ".debug_abbrev.dwo"),
-        clEnumValN(DIDT_Aranges, "aranges", ".debug_aranges"),
-        clEnumValN(DIDT_Info, "info", ".debug_info"),
-        clEnumValN(DIDT_InfoDwo, "info.dwo", ".debug_info.dwo"),
-        clEnumValN(DIDT_Line, "line", ".debug_line"),
-        clEnumValN(DIDT_Frames, "frames", ".debug_frame"),
-        clEnumValN(DIDT_Ranges, "ranges", ".debug_ranges"),
-        clEnumValN(DIDT_Pubnames, "pubnames", ".debug_pubnames"),
-        clEnumValN(DIDT_Str, "str", ".debug_str"),
-        clEnumValN(DIDT_StrDwo, "str.dwo", ".debug_str.dwo"),
-        clEnumValN(DIDT_StrOffsetsDwo, "str_offsets.dwo", ".debug_str_offsets.dwo"),
-        clEnumValEnd));
-
-static void PrintDILineInfo(DILineInfo dli) {
-  if (PrintFunctions)
-    outs() << (dli.getFunctionName() ? dli.getFunctionName() : "<unknown>")
-           << "\n";
-  outs() << (dli.getFileName() ? dli.getFileName() : "<unknown>") << ':'
-         << dli.getLine() << ':' << dli.getColumn() << '\n';
-}
-
-static void DumpInput(const StringRef &Filename) {
-  OwningPtr<MemoryBuffer> Buff;
-
-  if (error_code ec = MemoryBuffer::getFileOrSTDIN(Filename, Buff)) {
-    errs() << Filename << ": " << ec.message() << "\n";
-    return;
-  }
-
-  OwningPtr<ObjectFile> Obj(ObjectFile::createObjectFile(Buff.take()));
-  if (!Obj) {
-    errs() << Filename << ": Unknown object file format\n";
-    return;
-  }
-
-  OwningPtr<DIContext> DICtx(DIContext::getDWARFContext(Obj.get()));
-
-  if (Address == -1ULL) {
-    outs() << Filename
-           << ":\tfile format " << Obj->getFileFormatName() << "\n\n";
-    // Dump the complete DWARF structure.
-    DICtx->dump(outs(), DumpType);
-  } else {
-    // Print line info for the specified address.
-    int SpecFlags = DILineInfoSpecifier::FileLineInfo |
-                    DILineInfoSpecifier::AbsoluteFilePath;
-    if (PrintFunctions)
-      SpecFlags |= DILineInfoSpecifier::FunctionName;
-    if (PrintInlining) {
-      DIInliningInfo InliningInfo =
-        DICtx->getInliningInfoForAddress(Address, SpecFlags);
-      uint32_t n = InliningInfo.getNumberOfFrames();
-      if (n == 0) {
-        // Print one empty debug line info in any case.
-        PrintDILineInfo(DILineInfo());
-      } else {
-        for (uint32_t i = 0; i < n; i++) {
-          DILineInfo dli = InliningInfo.getFrame(i);
-          PrintDILineInfo(dli);
-        }
-      }
-    } else {
-      DILineInfo dli = DICtx->getLineInfoForAddress(Address, SpecFlags);
-      PrintDILineInfo(dli);
-    }
-  }
-}
-
-int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal();
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
-
-  cl::ParseCommandLineOptions(argc, argv, "llvm dwarf dumper\n");
-
-  // Defaults to a.out if no filenames specified.
-  if (InputFilenames.size() == 0)
-    InputFilenames.push_back("a.out");
-
-  std::for_each(InputFilenames.begin(), InputFilenames.end(), DumpInput);
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/llvm-jitlistener/llvm-jitlistener.cpp
===================================================================
--- trunk/contrib/llvm/tools/llvm-jitlistener/llvm-jitlistener.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/llvm-jitlistener/llvm-jitlistener.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,207 +0,0 @@
-//===-- llvm-jitlistener.cpp - Utility for testing MCJIT event listener ---===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This program is a used by lit tests to verify the MCJIT JITEventListener
-// interface.  It registers a mock JIT event listener, generates a module from
-// an input IR file and dumps the reported event information to stdout.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/IR/LLVMContext.h"
-#include "../../lib/ExecutionEngine/IntelJITEvents/IntelJITEventsWrapper.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/ADT/Triple.h"
-#include "llvm/ExecutionEngine/JITEventListener.h"
-#include "llvm/ExecutionEngine/JITMemoryManager.h"
-#include "llvm/ExecutionEngine/MCJIT.h"
-#include "llvm/ExecutionEngine/ObjectImage.h"
-#include "llvm/IR/Module.h"
-#include "llvm/IRReader/IRReader.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Host.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
-#include "llvm/Support/SourceMgr.h"
-#include "llvm/Support/TargetSelect.h"
-#include <string>
-
-using namespace llvm;
-
-namespace {
-
-typedef std::vector<std::pair<std::string, unsigned int> > SourceLocations;
-typedef std::map<uint64_t, SourceLocations> NativeCodeMap;
-
-NativeCodeMap  ReportedDebugFuncs;
-
-int NotifyEvent(iJIT_JVM_EVENT EventType, void *EventSpecificData) {
-  switch (EventType) {
-    case iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED: {
-      if (!EventSpecificData) {
-        errs() <<
-          "Error: The JIT event listener did not provide a event data.";
-        return -1;
-      }
-      iJIT_Method_Load* msg = static_cast<iJIT_Method_Load*>(EventSpecificData);
-
-      ReportedDebugFuncs[msg->method_id];
-
-      outs() << "Method load [" << msg->method_id << "]: " << msg->method_name
-             << ", Size = " << msg->method_size << "\n";
-
-      for(unsigned int i = 0; i < msg->line_number_size; ++i) {
-        if (!msg->line_number_table) {
-          errs() << "A function with a non-zero line count had no line table.";
-          return -1;
-        }
-        std::pair<std::string, unsigned int> loc(
-          std::string(msg->source_file_name),
-          msg->line_number_table[i].LineNumber);
-        ReportedDebugFuncs[msg->method_id].push_back(loc);
-        outs() << "  Line info @ " << msg->line_number_table[i].Offset
-               << ": " << msg->source_file_name
-               << ", line " << msg->line_number_table[i].LineNumber << "\n";
-      }
-      outs() << "\n";
-    }
-    break;
-    case iJVM_EVENT_TYPE_METHOD_UNLOAD_START: {
-      if (!EventSpecificData) {
-        errs() <<
-          "Error: The JIT event listener did not provide a event data.";
-        return -1;
-      }
-      unsigned int UnloadId
-        = *reinterpret_cast<unsigned int*>(EventSpecificData);
-      assert(1 == ReportedDebugFuncs.erase(UnloadId));
-      outs() << "Method unload [" << UnloadId << "]\n";
-    }
-    break;
-    default:
-      break;
-  }
-  return 0;
-}
-
-iJIT_IsProfilingActiveFlags IsProfilingActive(void) {
-  // for testing, pretend we have an Intel Parallel Amplifier XE 2011
-  // instance attached
-  return iJIT_SAMPLING_ON;
-}
-
-unsigned int GetNewMethodID(void) {
-  static unsigned int id = 0;
-  return ++id;
-}
-
-class JitEventListenerTest {
-protected:
-  void InitEE(const std::string &IRFile) {
-    LLVMContext &Context = getGlobalContext();
-
-    // If we have a native target, initialize it to ensure it is linked in and
-    // usable by the JIT.
-    InitializeNativeTarget();
-    InitializeNativeTargetAsmPrinter();
-
-    // Parse the bitcode...
-    SMDiagnostic Err;
-    TheModule = ParseIRFile(IRFile, Err, Context);
-    if (!TheModule) {
-      errs() << Err.getMessage();
-      return;
-    }
-
-    // FIXME: This is using the default legacy JITMemoryManager because it
-    // supports poison memory.  At some point, we'll need to update this to
-    // use an MCJIT-specific memory manager.  It might be nice to have the
-    // poison memory option there too.
-    JITMemoryManager *MemMgr = JITMemoryManager::CreateDefaultMemManager();
-    if (!MemMgr) {
-      errs() << "Unable to create memory manager.";
-      return;
-    }
-
-    // Tell the memory manager to poison freed memory so that accessing freed
-    // memory is more easily tested.
-    MemMgr->setPoisonMemory(true);
-
-    // Override the triple to generate ELF on Windows since that's supported
-    Triple Tuple(TheModule->getTargetTriple());
-    if (Tuple.getTriple().empty())
-      Tuple.setTriple(sys::getProcessTriple());
-
-    if (Tuple.isOSWindows() && Triple::ELF != Tuple.getEnvironment()) {
-      Tuple.setEnvironment(Triple::ELF);
-      TheModule->setTargetTriple(Tuple.getTriple());
-    }
-
-    // Compile the IR
-    std::string Error;
-    TheJIT.reset(EngineBuilder(TheModule)
-      .setEngineKind(EngineKind::JIT)
-      .setErrorStr(&Error)
-      .setJITMemoryManager(MemMgr)
-      .setUseMCJIT(true)
-      .create());
-    if (Error.empty() == false)
-      errs() << Error;
-  }
-
-  void DestroyEE() {
-    TheJIT.reset();
-  }
-
-  LLVMContext Context; // Global ownership
-  Module *TheModule; // Owned by ExecutionEngine.
-  JITMemoryManager *JMM; // Owned by ExecutionEngine.
-  OwningPtr<ExecutionEngine> TheJIT;
-
-public:
-  void ProcessInput(const std::string &Filename) {
-    InitEE(Filename);
-
-    llvm::OwningPtr<llvm::JITEventListener> Listener(JITEventListener::createIntelJITEventListener(
-        new IntelJITEventsWrapper(NotifyEvent, 0,
-          IsProfilingActive, 0, 0,
-          GetNewMethodID)));
-
-    TheJIT->RegisterJITEventListener(Listener.get());
-
-    TheJIT->finalizeObject();
-
-    // Destroy the JIT engine instead of unregistering to get unload events.
-    DestroyEE();
-  }
-};
-
-
-
-} // end anonymous namespace
-
-static cl::opt<std::string>
-InputFilename(cl::Positional, cl::desc("<input IR file>"),
-               cl::Required);
-
-int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal();
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
-
-  cl::ParseCommandLineOptions(argc, argv, "llvm jit event listener test utility\n");
-
-  JitEventListenerTest Test;
-
-  Test.ProcessInput(InputFilename);
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/llvm-mcmarkup/llvm-mcmarkup.cpp
===================================================================
--- trunk/contrib/llvm/tools/llvm-mcmarkup/llvm-mcmarkup.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/llvm-mcmarkup/llvm-mcmarkup.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,225 +0,0 @@
-//===-- llvm-mcmarkup.cpp - Parse the MC assembly markup tags -------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Example simple parser implementation for the MC assembly markup language.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Format.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
-#include "llvm/Support/SourceMgr.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/system_error.h"
-using namespace llvm;
-
-static cl::list<std::string>
-       InputFilenames(cl::Positional, cl::desc("<input files>"),
-                      cl::ZeroOrMore);
-static cl::opt<bool>
-DumpTags("dump-tags", cl::desc("List all tags encountered in input"));
-
-static StringRef ToolName;
-
-/// Trivial lexer for the markup parser. Input is always handled a character
-/// at a time. The lexer just encapsulates EOF and lookahead handling.
-class MarkupLexer {
-  StringRef::const_iterator Start;
-  StringRef::const_iterator CurPtr;
-  StringRef::const_iterator End;
-public:
-  MarkupLexer(StringRef Source)
-    : Start(Source.begin()), CurPtr(Source.begin()), End(Source.end()) {}
-  // When processing non-markup, input is consumed a character at a time.
-  bool isEOF() { return CurPtr == End; }
-  int getNextChar() {
-    if (CurPtr == End) return EOF;
-    return *CurPtr++;
-  }
-  int peekNextChar() {
-    if (CurPtr == End) return EOF;
-    return *CurPtr;
-  }
-  StringRef::const_iterator getPosition() const { return CurPtr; }
-};
-
-/// A markup tag is a name and a (usually empty) list of modifiers.
-class MarkupTag {
-  StringRef Name;
-  StringRef Modifiers;
-  SMLoc StartLoc;
-public:
-  MarkupTag(StringRef n, StringRef m, SMLoc Loc)
-    : Name(n), Modifiers(m), StartLoc(Loc) {}
-  StringRef getName() const { return Name; }
-  StringRef getModifiers() const { return Modifiers; }
-  SMLoc getLoc() const { return StartLoc; }
-};
-
-/// A simple parser implementation for creating MarkupTags from input text.
-class MarkupParser {
-  MarkupLexer &Lex;
-  SourceMgr &SM;
-public:
-  MarkupParser(MarkupLexer &lex, SourceMgr &SrcMgr) : Lex(lex), SM(SrcMgr) {}
-  /// Create a MarkupTag from the current position in the MarkupLexer.
-  /// The parseTag() method should be called when the lexer has processed
-  /// the opening '<' character. Input will be consumed up to and including
-  /// the ':' which terminates the tag open.
-  MarkupTag parseTag();
-  /// Issue a diagnostic and terminate program execution.
-  void FatalError(SMLoc Loc, StringRef Msg);
-};
-
-void MarkupParser::FatalError(SMLoc Loc, StringRef Msg) {
-  SM.PrintMessage(Loc, SourceMgr::DK_Error, Msg);
-  exit(1);
-}
-
-// Example handler for when a tag is recognized.
-static void processStartTag(MarkupTag &Tag) {
-  // If we're just printing the tags, do that, otherwise do some simple
-  // colorization.
-  if (DumpTags) {
-    outs() << Tag.getName();
-    if (Tag.getModifiers().size())
-      outs() << " " << Tag.getModifiers();
-    outs() << "\n";
-    return;
-  }
-
-  if (!outs().has_colors())
-    return;
-  // Color registers as red and immediates as cyan. Those don't have nested
-  // tags, so don't bother keeping a stack of colors to reset to.
-  if (Tag.getName() == "reg")
-    outs().changeColor(raw_ostream::RED);
-  else if (Tag.getName() == "imm")
-    outs().changeColor(raw_ostream::CYAN);
-}
-
-// Example handler for when the end of a tag is recognized.
-static void processEndTag(MarkupTag &Tag) {
-  // If we're printing the tags, there's nothing more to do here. Otherwise,
-  // set the color back the normal.
-  if (DumpTags)
-    return;
-  if (!outs().has_colors())
-    return;
-  // Just reset to basic white.
-  outs().changeColor(raw_ostream::WHITE, false);
-}
-
-MarkupTag MarkupParser::parseTag() {
-  // First off, extract the tag into it's own StringRef so we can look at it
-  // outside of the context of consuming input.
-  StringRef::const_iterator Start = Lex.getPosition();
-  SMLoc Loc = SMLoc::getFromPointer(Start - 1);
-  while(Lex.getNextChar() != ':') {
-    // EOF is an error.
-    if (Lex.isEOF())
-      FatalError(SMLoc::getFromPointer(Start), "unterminated markup tag");
-  }
-  StringRef RawTag(Start, Lex.getPosition() - Start - 1);
-  std::pair<StringRef, StringRef> SplitTag = RawTag.split(' ');
-  return MarkupTag(SplitTag.first, SplitTag.second, Loc);
-}
-
-static void parseMCMarkup(StringRef Filename) {
-  OwningPtr<MemoryBuffer> BufferPtr;
-  if (error_code ec = MemoryBuffer::getFileOrSTDIN(Filename, BufferPtr)) {
-    errs() << ToolName << ": " << ec.message() << '\n';
-    return;
-  }
-  MemoryBuffer *Buffer = BufferPtr.take();
-
-  SourceMgr SrcMgr;
-
-  // Tell SrcMgr about this buffer, which is what the parser will pick up.
-  SrcMgr.AddNewSourceBuffer(Buffer, SMLoc());
-
-  StringRef InputSource = Buffer->getBuffer();
-  MarkupLexer Lex(InputSource);
-  MarkupParser Parser(Lex, SrcMgr);
-
-  SmallVector<MarkupTag, 4> TagStack;
-
-  for (int CurChar = Lex.getNextChar();
-       CurChar != EOF;
-       CurChar = Lex.getNextChar()) {
-    switch (CurChar) {
-    case '<': {
-      // A "<<" is output as a literal '<' and does not start a markup tag.
-      if (Lex.peekNextChar() == '<') {
-        (void)Lex.getNextChar();
-        break;
-      }
-      // Parse the markup entry.
-      TagStack.push_back(Parser.parseTag());
-
-      // Do any special handling for the start of a tag.
-      processStartTag(TagStack.back());
-      continue;
-    }
-    case '>': {
-      SMLoc Loc = SMLoc::getFromPointer(Lex.getPosition() - 1);
-      // A ">>" is output as a literal '>' and does not end a markup tag.
-      if (Lex.peekNextChar() == '>') {
-        (void)Lex.getNextChar();
-        break;
-      }
-      // Close out the innermost tag.
-      if (TagStack.empty())
-        Parser.FatalError(Loc, "'>' without matching '<'");
-
-      // Do any special handling for the end of a tag.
-      processEndTag(TagStack.back());
-
-      TagStack.pop_back();
-      continue;
-    }
-    default:
-      break;
-    }
-    // For anything else, just echo the character back out.
-    if (!DumpTags && CurChar != EOF)
-      outs() << (char)CurChar;
-  }
-
-  // If there are any unterminated markup tags, issue diagnostics for them.
-  while (!TagStack.empty()) {
-    MarkupTag &Tag = TagStack.back();
-    SrcMgr.PrintMessage(Tag.getLoc(), SourceMgr::DK_Error,
-                        "unterminated markup tag");
-    TagStack.pop_back();
-  }
-}
-
-int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal();
-  PrettyStackTraceProgram X(argc, argv);
-
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
-  cl::ParseCommandLineOptions(argc, argv, "llvm MC markup parser\n");
-
-  ToolName = argv[0];
-
-  // If no input files specified, read from stdin.
-  if (InputFilenames.size() == 0)
-    InputFilenames.push_back("-");
-
-  std::for_each(InputFilenames.begin(), InputFilenames.end(),
-                parseMCMarkup);
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/llvm-size/llvm-size.cpp
===================================================================
--- trunk/contrib/llvm/tools/llvm-size/llvm-size.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/llvm-size/llvm-size.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,311 +0,0 @@
-//===-- llvm-size.cpp - Print the size of each object section -------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This program is a utility that works like traditional Unix "size",
-// that is, it prints out the size of each section, and the total size of all
-// sections.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/APInt.h"
-#include "llvm/Object/Archive.h"
-#include "llvm/Object/ObjectFile.h"
-#include "llvm/Support/Casting.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Format.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/system_error.h"
-#include <algorithm>
-#include <string>
-using namespace llvm;
-using namespace object;
-
-enum OutputFormatTy {berkeley, sysv};
-static cl::opt<OutputFormatTy>
-       OutputFormat("format",
-         cl::desc("Specify output format"),
-         cl::values(clEnumVal(sysv, "System V format"),
-                    clEnumVal(berkeley, "Berkeley format"),
-                    clEnumValEnd),
-         cl::init(berkeley));
-
-static cl::opt<OutputFormatTy>
-       OutputFormatShort(cl::desc("Specify output format"),
-         cl::values(clEnumValN(sysv, "A", "System V format"),
-                    clEnumValN(berkeley, "B", "Berkeley format"),
-                    clEnumValEnd),
-         cl::init(berkeley));
-
-enum RadixTy {octal = 8, decimal = 10, hexadecimal = 16};
-static cl::opt<unsigned int>
-       Radix("-radix",
-         cl::desc("Print size in radix. Only 8, 10, and 16 are valid"),
-         cl::init(decimal));
-
-static cl::opt<RadixTy>
-       RadixShort(cl::desc("Print size in radix:"),
-         cl::values(clEnumValN(octal, "o", "Print size in octal"),
-                    clEnumValN(decimal, "d", "Print size in decimal"),
-                    clEnumValN(hexadecimal, "x", "Print size in hexadecimal"),
-                    clEnumValEnd),
-         cl::init(decimal));
-
-static cl::list<std::string>
-       InputFilenames(cl::Positional, cl::desc("<input files>"),
-                      cl::ZeroOrMore);
-
-static std::string ToolName;
-
-///  @brief If ec is not success, print the error and return true.
-static bool error(error_code ec) {
-  if (!ec) return false;
-
-  outs() << ToolName << ": error reading file: " << ec.message() << ".\n";
-  outs().flush();
-  return true;
-}
-
-/// @brief Get the length of the string that represents @p num in Radix
-///        including the leading 0x or 0 for hexadecimal and octal respectively.
-static size_t getNumLengthAsString(uint64_t num) {
-  APInt conv(64, num);
-  SmallString<32> result;
-  conv.toString(result, Radix, false, true);
-  return result.size();
-}
-
-/// @brief Print the size of each section in @p o.
-///
-/// The format used is determined by @c OutputFormat and @c Radix.
-static void PrintObjectSectionSizes(ObjectFile *o) {
-  uint64_t total = 0;
-  std::string fmtbuf;
-  raw_string_ostream fmt(fmtbuf);
-
-  const char *radix_fmt = 0;
-  switch (Radix) {
-  case octal:
-    radix_fmt = PRIo64;
-    break;
-  case decimal:
-    radix_fmt = PRIu64;
-    break;
-  case hexadecimal:
-    radix_fmt = PRIx64;
-    break;
-  }
-  if (OutputFormat == sysv) {
-    // Run two passes over all sections. The first gets the lengths needed for
-    // formatting the output. The second actually does the output.
-    std::size_t max_name_len = strlen("section");
-    std::size_t max_size_len = strlen("size");
-    std::size_t max_addr_len = strlen("addr");
-    error_code ec;
-    for (section_iterator i = o->begin_sections(),
-                          e = o->end_sections(); i != e;
-                          i.increment(ec)) {
-      if (error(ec))
-        return;
-      uint64_t size = 0;
-      if (error(i->getSize(size)))
-        return;
-      total += size;
-
-      StringRef name;
-      uint64_t addr = 0;
-      if (error(i->getName(name))) return;
-      if (error(i->getAddress(addr))) return;
-      max_name_len = std::max(max_name_len, name.size());
-      max_size_len = std::max(max_size_len, getNumLengthAsString(size));
-      max_addr_len = std::max(max_addr_len, getNumLengthAsString(addr));
-    }
-
-    // Add extra padding.
-    max_name_len += 2;
-    max_size_len += 2;
-    max_addr_len += 2;
-
-    // Setup header format.
-    fmt << "%-" << max_name_len << "s "
-        << "%" << max_size_len << "s "
-        << "%" << max_addr_len << "s\n";
-
-    // Print header
-    outs() << format(fmt.str().c_str(),
-                     static_cast<const char*>("section"),
-                     static_cast<const char*>("size"),
-                     static_cast<const char*>("addr"));
-    fmtbuf.clear();
-
-    // Setup per section format.
-    fmt << "%-" << max_name_len << "s "
-        << "%#" << max_size_len << radix_fmt << " "
-        << "%#" << max_addr_len << radix_fmt << "\n";
-
-    // Print each section.
-    for (section_iterator i = o->begin_sections(),
-                          e = o->end_sections(); i != e;
-                          i.increment(ec)) {
-      if (error(ec))
-        return;
-
-      StringRef name;
-      uint64_t size = 0;
-      uint64_t addr = 0;
-      if (error(i->getName(name))) return;
-      if (error(i->getSize(size))) return;
-      if (error(i->getAddress(addr))) return;
-      std::string namestr = name;
-
-      outs() << format(fmt.str().c_str(),
-                       namestr.c_str(),
-                       size,
-                       addr);
-    }
-
-    // Print total.
-    fmtbuf.clear();
-    fmt << "%-" << max_name_len << "s "
-        << "%#" << max_size_len << radix_fmt << "\n";
-    outs() << format(fmt.str().c_str(),
-                     static_cast<const char*>("Total"),
-                     total);
-  } else {
-    // The Berkeley format does not display individual section sizes. It
-    // displays the cumulative size for each section type.
-    uint64_t total_text = 0;
-    uint64_t total_data = 0;
-    uint64_t total_bss = 0;
-
-    // Make one pass over the section table to calculate sizes.
-    error_code ec;
-    for (section_iterator i = o->begin_sections(),
-                          e = o->end_sections(); i != e;
-                          i.increment(ec)) {
-      if (error(ec))
-        return;
-
-      uint64_t size = 0;
-      bool isText = false;
-      bool isData = false;
-      bool isBSS = false;
-      if (error(i->getSize(size))) return;
-      if (error(i->isText(isText))) return;
-      if (error(i->isData(isData))) return;
-      if (error(i->isBSS(isBSS))) return;
-      if (isText)
-        total_text += size;
-      else if (isData)
-        total_data += size;
-      else if (isBSS)
-        total_bss += size;
-    }
-
-    total = total_text + total_data + total_bss;
-
-    // Print result.
-    fmt << "%#7" << radix_fmt << " "
-        << "%#7" << radix_fmt << " "
-        << "%#7" << radix_fmt << " ";
-    outs() << format(fmt.str().c_str(),
-                     total_text,
-                     total_data,
-                     total_bss);
-    fmtbuf.clear();
-    fmt << "%7" << (Radix == octal ? PRIo64 : PRIu64) << " "
-        << "%7" PRIx64 " ";
-    outs() << format(fmt.str().c_str(),
-                     total,
-                     total);
-  }
-}
-
-/// @brief Print the section sizes for @p file. If @p file is an archive, print
-///        the section sizes for each archive member.
-static void PrintFileSectionSizes(StringRef file) {
-  // If file is not stdin, check that it exists.
-  if (file != "-") {
-    bool exists;
-    if (sys::fs::exists(file, exists) || !exists) {
-      errs() << ToolName << ": '" << file << "': " << "No such file\n";
-      return;
-    }
-  }
-
-  // Attempt to open the binary.
-  OwningPtr<Binary> binary;
-  if (error_code ec = createBinary(file, binary)) {
-    errs() << ToolName << ": " << file << ": " << ec.message() << ".\n";
-    return;
-  }
-
-  if (Archive *a = dyn_cast<Archive>(binary.get())) {
-    // This is an archive. Iterate over each member and display its sizes.
-    for (object::Archive::child_iterator i = a->begin_children(),
-                                         e = a->end_children(); i != e; ++i) {
-      OwningPtr<Binary> child;
-      if (error_code ec = i->getAsBinary(child)) {
-        errs() << ToolName << ": " << file << ": " << ec.message() << ".\n";
-        continue;
-      }
-      if (ObjectFile *o = dyn_cast<ObjectFile>(child.get())) {
-        if (OutputFormat == sysv)
-          outs() << o->getFileName() << "   (ex " << a->getFileName()
-                  << "):\n";
-        PrintObjectSectionSizes(o);
-        if (OutputFormat == berkeley)
-          outs() << o->getFileName() << " (ex " << a->getFileName() << ")\n";
-      }
-    }
-  } else if (ObjectFile *o = dyn_cast<ObjectFile>(binary.get())) {
-    if (OutputFormat == sysv)
-      outs() << o->getFileName() << "  :\n";
-    PrintObjectSectionSizes(o);
-    if (OutputFormat == berkeley)
-      outs() << o->getFileName() << "\n";
-  } else {
-    errs() << ToolName << ": " << file << ": " << "Unrecognized file type.\n";
-  }
-  // System V adds an extra newline at the end of each file.
-  if (OutputFormat == sysv)
-    outs() << "\n";
-}
-
-int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal();
-  PrettyStackTraceProgram X(argc, argv);
-
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
-  cl::ParseCommandLineOptions(argc, argv, "llvm object size dumper\n");
-
-  ToolName = argv[0];
-  if (OutputFormatShort.getNumOccurrences())
-    OutputFormat = OutputFormatShort;
-  if (RadixShort.getNumOccurrences())
-    Radix = RadixShort;
-
-  if (InputFilenames.size() == 0)
-    InputFilenames.push_back("a.out");
-
-  if (OutputFormat == berkeley)
-    outs() << "   text    data     bss     "
-           << (Radix == octal ? "oct" : "dec")
-           << "     hex filename\n";
-
-  std::for_each(InputFilenames.begin(), InputFilenames.end(),
-                PrintFileSectionSizes);
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/lto/LTOCodeGenerator.cpp
===================================================================
--- trunk/contrib/llvm/tools/lto/LTOCodeGenerator.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/lto/LTOCodeGenerator.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,432 +0,0 @@
-//===-LTOCodeGenerator.cpp - LLVM Link Time Optimizer ---------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the Link Time Optimization library. This library is
-// intended to be used by linker to optimize code at link time.
-//
-//===----------------------------------------------------------------------===//
-
-#include "LTOCodeGenerator.h"
-#include "LTOModule.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/Analysis/Passes.h"
-#include "llvm/Analysis/Verifier.h"
-#include "llvm/Bitcode/ReaderWriter.h"
-#include "llvm/Config/config.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/DataLayout.h"
-#include "llvm/IR/DerivedTypes.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/Module.h"
-#include "llvm/Linker.h"
-#include "llvm/MC/MCAsmInfo.h"
-#include "llvm/MC/MCContext.h"
-#include "llvm/MC/SubtargetFeature.h"
-#include "llvm/PassManager.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/FormattedStream.h"
-#include "llvm/Support/Host.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/Signals.h"
-#include "llvm/Support/TargetRegistry.h"
-#include "llvm/Support/TargetSelect.h"
-#include "llvm/Support/ToolOutputFile.h"
-#include "llvm/Support/system_error.h"
-#include "llvm/Target/Mangler.h"
-#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
-#include "llvm/Target/TargetRegisterInfo.h"
-#include "llvm/Transforms/IPO.h"
-#include "llvm/Transforms/IPO/PassManagerBuilder.h"
-#include "llvm/Transforms/ObjCARC.h"
-using namespace llvm;
-
-static cl::opt<bool>
-DisableOpt("disable-opt", cl::init(false),
-  cl::desc("Do not run any optimization passes"));
-
-static cl::opt<bool>
-DisableInline("disable-inlining", cl::init(false),
-  cl::desc("Do not run the inliner pass"));
-
-static cl::opt<bool>
-DisableGVNLoadPRE("disable-gvn-loadpre", cl::init(false),
-  cl::desc("Do not run the GVN load PRE pass"));
-
-const char* LTOCodeGenerator::getVersionString() {
-#ifdef LLVM_VERSION_INFO
-  return PACKAGE_NAME " version " PACKAGE_VERSION ", " LLVM_VERSION_INFO;
-#else
-  return PACKAGE_NAME " version " PACKAGE_VERSION;
-#endif
-}
-
-LTOCodeGenerator::LTOCodeGenerator()
-  : _context(getGlobalContext()),
-    _linker(new Module("ld-temp.o", _context)), _target(NULL),
-    _emitDwarfDebugInfo(false), _scopeRestrictionsDone(false),
-    _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
-    _nativeObjectFile(NULL) {
-  InitializeAllTargets();
-  InitializeAllTargetMCs();
-  InitializeAllAsmPrinters();
-}
-
-LTOCodeGenerator::~LTOCodeGenerator() {
-  delete _target;
-  delete _nativeObjectFile;
-  delete _linker.getModule();
-
-  for (std::vector<char*>::iterator I = _codegenOptions.begin(),
-         E = _codegenOptions.end(); I != E; ++I)
-    free(*I);
-}
-
-bool LTOCodeGenerator::addModule(LTOModule* mod, std::string& errMsg) {
-  bool ret = _linker.linkInModule(mod->getLLVVMModule(), &errMsg);
-
-  const std::vector<const char*> &undefs = mod->getAsmUndefinedRefs();
-  for (int i = 0, e = undefs.size(); i != e; ++i)
-    _asmUndefinedRefs[undefs[i]] = 1;
-
-  return ret;
-}
-
-bool LTOCodeGenerator::setDebugInfo(lto_debug_model debug,
-                                    std::string& errMsg) {
-  switch (debug) {
-  case LTO_DEBUG_MODEL_NONE:
-    _emitDwarfDebugInfo = false;
-    return false;
-
-  case LTO_DEBUG_MODEL_DWARF:
-    _emitDwarfDebugInfo = true;
-    return false;
-  }
-  llvm_unreachable("Unknown debug format!");
-}
-
-bool LTOCodeGenerator::setCodePICModel(lto_codegen_model model,
-                                       std::string& errMsg) {
-  switch (model) {
-  case LTO_CODEGEN_PIC_MODEL_STATIC:
-  case LTO_CODEGEN_PIC_MODEL_DYNAMIC:
-  case LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC:
-    _codeModel = model;
-    return false;
-  }
-  llvm_unreachable("Unknown PIC model!");
-}
-
-bool LTOCodeGenerator::writeMergedModules(const char *path,
-                                          std::string &errMsg) {
-  if (determineTarget(errMsg))
-    return true;
-
-  // mark which symbols can not be internalized
-  applyScopeRestrictions();
-
-  // create output file
-  std::string ErrInfo;
-  tool_output_file Out(path, ErrInfo,
-                       raw_fd_ostream::F_Binary);
-  if (!ErrInfo.empty()) {
-    errMsg = "could not open bitcode file for writing: ";
-    errMsg += path;
-    return true;
-  }
-
-  // write bitcode to it
-  WriteBitcodeToFile(_linker.getModule(), Out.os());
-  Out.os().close();
-
-  if (Out.os().has_error()) {
-    errMsg = "could not write bitcode file: ";
-    errMsg += path;
-    Out.os().clear_error();
-    return true;
-  }
-
-  Out.keep();
-  return false;
-}
-
-bool LTOCodeGenerator::compile_to_file(const char** name, std::string& errMsg) {
-  // make unique temp .o file to put generated object file
-  sys::PathWithStatus uniqueObjPath("lto-llvm.o");
-  if (uniqueObjPath.createTemporaryFileOnDisk(false, &errMsg)) {
-    uniqueObjPath.eraseFromDisk();
-    return true;
-  }
-  sys::RemoveFileOnSignal(uniqueObjPath);
-
-  // generate object file
-  bool genResult = false;
-  tool_output_file objFile(uniqueObjPath.c_str(), errMsg);
-  if (!errMsg.empty()) {
-    uniqueObjPath.eraseFromDisk();
-    return true;
-  }
-
-  genResult = this->generateObjectFile(objFile.os(), errMsg);
-  objFile.os().close();
-  if (objFile.os().has_error()) {
-    objFile.os().clear_error();
-    uniqueObjPath.eraseFromDisk();
-    return true;
-  }
-
-  objFile.keep();
-  if (genResult) {
-    uniqueObjPath.eraseFromDisk();
-    return true;
-  }
-
-  _nativeObjectPath = uniqueObjPath.str();
-  *name = _nativeObjectPath.c_str();
-  return false;
-}
-
-const void* LTOCodeGenerator::compile(size_t* length, std::string& errMsg) {
-  const char *name;
-  if (compile_to_file(&name, errMsg))
-    return NULL;
-
-  // remove old buffer if compile() called twice
-  delete _nativeObjectFile;
-
-  // read .o file into memory buffer
-  OwningPtr<MemoryBuffer> BuffPtr;
-  if (error_code ec = MemoryBuffer::getFile(name, BuffPtr, -1, false)) {
-    errMsg = ec.message();
-    sys::Path(_nativeObjectPath).eraseFromDisk();
-    return NULL;
-  }
-  _nativeObjectFile = BuffPtr.take();
-
-  // remove temp files
-  sys::Path(_nativeObjectPath).eraseFromDisk();
-
-  // return buffer, unless error
-  if (_nativeObjectFile == NULL)
-    return NULL;
-  *length = _nativeObjectFile->getBufferSize();
-  return _nativeObjectFile->getBufferStart();
-}
-
-bool LTOCodeGenerator::determineTarget(std::string& errMsg) {
-  if (_target != NULL)
-    return false;
-
-  std::string TripleStr = _linker.getModule()->getTargetTriple();
-  if (TripleStr.empty())
-    TripleStr = sys::getDefaultTargetTriple();
-  llvm::Triple Triple(TripleStr);
-
-  // create target machine from info for merged modules
-  const Target *march = TargetRegistry::lookupTarget(TripleStr, errMsg);
-  if (march == NULL)
-    return true;
-
-  // The relocation model is actually a static member of TargetMachine and
-  // needs to be set before the TargetMachine is instantiated.
-  Reloc::Model RelocModel = Reloc::Default;
-  switch (_codeModel) {
-  case LTO_CODEGEN_PIC_MODEL_STATIC:
-    RelocModel = Reloc::Static;
-    break;
-  case LTO_CODEGEN_PIC_MODEL_DYNAMIC:
-    RelocModel = Reloc::PIC_;
-    break;
-  case LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC:
-    RelocModel = Reloc::DynamicNoPIC;
-    break;
-  }
-
-  // construct LTOModule, hand over ownership of module and target
-  SubtargetFeatures Features;
-  Features.getDefaultSubtargetFeatures(Triple);
-  std::string FeatureStr = Features.getString();
-  // Set a default CPU for Darwin triples.
-  if (_mCpu.empty() && Triple.isOSDarwin()) {
-    if (Triple.getArch() == llvm::Triple::x86_64)
-      _mCpu = "core2";
-    else if (Triple.getArch() == llvm::Triple::x86)
-      _mCpu = "yonah";
-  }
-  TargetOptions Options;
-  LTOModule::getTargetOptions(Options);
-  _target = march->createTargetMachine(TripleStr, _mCpu, FeatureStr, Options,
-                                       RelocModel, CodeModel::Default,
-                                       CodeGenOpt::Aggressive);
-  return false;
-}
-
-void LTOCodeGenerator::
-applyRestriction(GlobalValue &GV,
-                 std::vector<const char*> &mustPreserveList,
-                 SmallPtrSet<GlobalValue*, 8> &asmUsed,
-                 Mangler &mangler) {
-  SmallString<64> Buffer;
-  mangler.getNameWithPrefix(Buffer, &GV, false);
-
-  if (GV.isDeclaration())
-    return;
-  if (_mustPreserveSymbols.count(Buffer))
-    mustPreserveList.push_back(GV.getName().data());
-  if (_asmUndefinedRefs.count(Buffer))
-    asmUsed.insert(&GV);
-}
-
-static void findUsedValues(GlobalVariable *LLVMUsed,
-                           SmallPtrSet<GlobalValue*, 8> &UsedValues) {
-  if (LLVMUsed == 0) return;
-
-  ConstantArray *Inits = cast<ConstantArray>(LLVMUsed->getInitializer());
-  for (unsigned i = 0, e = Inits->getNumOperands(); i != e; ++i)
-    if (GlobalValue *GV =
-        dyn_cast<GlobalValue>(Inits->getOperand(i)->stripPointerCasts()))
-      UsedValues.insert(GV);
-}
-
-void LTOCodeGenerator::applyScopeRestrictions() {
-  if (_scopeRestrictionsDone) return;
-  Module *mergedModule = _linker.getModule();
-
-  // Start off with a verification pass.
-  PassManager passes;
-  passes.add(createVerifierPass());
-
-  // mark which symbols can not be internalized
-  MCContext Context(*_target->getMCAsmInfo(), *_target->getRegisterInfo(),NULL);
-  Mangler mangler(Context, *_target->getDataLayout());
-  std::vector<const char*> mustPreserveList;
-  SmallPtrSet<GlobalValue*, 8> asmUsed;
-
-  for (Module::iterator f = mergedModule->begin(),
-         e = mergedModule->end(); f != e; ++f)
-    applyRestriction(*f, mustPreserveList, asmUsed, mangler);
-  for (Module::global_iterator v = mergedModule->global_begin(),
-         e = mergedModule->global_end(); v !=  e; ++v)
-    applyRestriction(*v, mustPreserveList, asmUsed, mangler);
-  for (Module::alias_iterator a = mergedModule->alias_begin(),
-         e = mergedModule->alias_end(); a != e; ++a)
-    applyRestriction(*a, mustPreserveList, asmUsed, mangler);
-
-  GlobalVariable *LLVMCompilerUsed =
-    mergedModule->getGlobalVariable("llvm.compiler.used");
-  findUsedValues(LLVMCompilerUsed, asmUsed);
-  if (LLVMCompilerUsed)
-    LLVMCompilerUsed->eraseFromParent();
-
-  if (!asmUsed.empty()) {
-    llvm::Type *i8PTy = llvm::Type::getInt8PtrTy(_context);
-    std::vector<Constant*> asmUsed2;
-    for (SmallPtrSet<GlobalValue*, 16>::const_iterator i = asmUsed.begin(),
-           e = asmUsed.end(); i !=e; ++i) {
-      GlobalValue *GV = *i;
-      Constant *c = ConstantExpr::getBitCast(GV, i8PTy);
-      asmUsed2.push_back(c);
-    }
-
-    llvm::ArrayType *ATy = llvm::ArrayType::get(i8PTy, asmUsed2.size());
-    LLVMCompilerUsed =
-      new llvm::GlobalVariable(*mergedModule, ATy, false,
-                               llvm::GlobalValue::AppendingLinkage,
-                               llvm::ConstantArray::get(ATy, asmUsed2),
-                               "llvm.compiler.used");
-
-    LLVMCompilerUsed->setSection("llvm.metadata");
-  }
-
-  passes.add(createInternalizePass(mustPreserveList));
-
-  // apply scope restrictions
-  passes.run(*mergedModule);
-
-  _scopeRestrictionsDone = true;
-}
-
-/// Optimize merged modules using various IPO passes
-bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
-                                          std::string &errMsg) {
-  if (this->determineTarget(errMsg))
-    return true;
-
-  Module* mergedModule = _linker.getModule();
-
-  // if options were requested, set them
-  if (!_codegenOptions.empty())
-    cl::ParseCommandLineOptions(_codegenOptions.size(),
-                                const_cast<char **>(&_codegenOptions[0]));
-
-  // mark which symbols can not be internalized
-  this->applyScopeRestrictions();
-
-  // Instantiate the pass manager to organize the passes.
-  PassManager passes;
-
-  // Start off with a verification pass.
-  passes.add(createVerifierPass());
-
-  // Add an appropriate DataLayout instance for this module...
-  passes.add(new DataLayout(*_target->getDataLayout()));
-  _target->addAnalysisPasses(passes);
-
-  // Enabling internalize here would use its AllButMain variant. It
-  // keeps only main if it exists and does nothing for libraries. Instead
-  // we create the pass ourselves with the symbol list provided by the linker.
-  if (!DisableOpt) {
-    PassManagerBuilder().populateLTOPassManager(passes,
-                                              /*Internalize=*/false,
-                                              !DisableInline,
-                                              DisableGVNLoadPRE);
-  }
-
-  // Make sure everything is still good.
-  passes.add(createVerifierPass());
-
-  PassManager codeGenPasses;
-
-  codeGenPasses.add(new DataLayout(*_target->getDataLayout()));
-  _target->addAnalysisPasses(codeGenPasses);
-
-  formatted_raw_ostream Out(out);
-
-  // If the bitcode files contain ARC code and were compiled with optimization,
-  // the ObjCARCContractPass must be run, so do it unconditionally here.
-  codeGenPasses.add(createObjCARCContractPass());
-
-  if (_target->addPassesToEmitFile(codeGenPasses, Out,
-                                   TargetMachine::CGFT_ObjectFile)) {
-    errMsg = "target file type not supported";
-    return true;
-  }
-
-  // Run our queue of passes all at once now, efficiently.
-  passes.run(*mergedModule);
-
-  // Run the code generator, and write assembly file
-  codeGenPasses.run(*mergedModule);
-
-  return false; // success
-}
-
-/// setCodeGenDebugOptions - Set codegen debugging options to aid in debugging
-/// LTO problems.
-void LTOCodeGenerator::setCodeGenDebugOptions(const char *options) {
-  for (std::pair<StringRef, StringRef> o = getToken(options);
-       !o.first.empty(); o = getToken(o.second)) {
-    // ParseCommandLineOptions() expects argv[0] to be program name. Lazily add
-    // that.
-    if (_codegenOptions.empty())
-      _codegenOptions.push_back(strdup("libLTO"));
-    _codegenOptions.push_back(strdup(o.first.str().c_str()));
-  }
-}

Modified: trunk/contrib/llvm/tools/lto/LTOCodeGenerator.h
===================================================================
--- trunk/contrib/llvm/tools/lto/LTOCodeGenerator.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/lto/LTOCodeGenerator.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,83 +0,0 @@
-//===-LTOCodeGenerator.h - LLVM Link Time Optimizer -----------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file declares the LTOCodeGenerator class.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LTO_CODE_GENERATOR_H
-#define LTO_CODE_GENERATOR_H
-
-#include "llvm-c/lto.h"
-#include "llvm/ADT/SmallPtrSet.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/Linker.h"
-#include <string>
-#include <vector>
-
-namespace llvm {
-  class LLVMContext;
-  class GlobalValue;
-  class Mangler;
-  class MemoryBuffer;
-  class TargetMachine;
-  class raw_ostream;
-}
-
-//===----------------------------------------------------------------------===//
-/// LTOCodeGenerator - C++ class which implements the opaque lto_code_gen_t
-/// type.
-///
-struct LTOCodeGenerator {
-  static const char *getVersionString();
-
-  LTOCodeGenerator();
-  ~LTOCodeGenerator();
-
-  bool addModule(struct LTOModule*, std::string &errMsg);
-  bool setDebugInfo(lto_debug_model, std::string &errMsg);
-  bool setCodePICModel(lto_codegen_model, std::string &errMsg);
-
-  void setCpu(const char* mCpu) { _mCpu = mCpu; }
-
-  void addMustPreserveSymbol(const char* sym) {
-    _mustPreserveSymbols[sym] = 1;
-  }
-
-  bool writeMergedModules(const char *path, std::string &errMsg);
-  bool compile_to_file(const char **name, std::string &errMsg);
-  const void *compile(size_t *length, std::string &errMsg);
-  void setCodeGenDebugOptions(const char *opts);
-
-private:
-  bool generateObjectFile(llvm::raw_ostream &out, std::string &errMsg);
-  void applyScopeRestrictions();
-  void applyRestriction(llvm::GlobalValue &GV,
-                        std::vector<const char*> &mustPreserveList,
-                        llvm::SmallPtrSet<llvm::GlobalValue*, 8> &asmUsed,
-                        llvm::Mangler &mangler);
-  bool determineTarget(std::string &errMsg);
-
-  typedef llvm::StringMap<uint8_t> StringSet;
-
-  llvm::LLVMContext&          _context;
-  llvm::Linker                _linker;
-  llvm::TargetMachine*        _target;
-  bool                        _emitDwarfDebugInfo;
-  bool                        _scopeRestrictionsDone;
-  lto_codegen_model           _codeModel;
-  StringSet                   _mustPreserveSymbols;
-  StringSet                   _asmUndefinedRefs;
-  llvm::MemoryBuffer*         _nativeObjectFile;
-  std::vector<char*>          _codegenOptions;
-  std::string                 _mCpu;
-  std::string                 _nativeObjectPath;
-};
-
-#endif // LTO_CODE_GENERATOR_H

Modified: trunk/contrib/llvm/tools/lto/LTODisassembler.cpp
===================================================================
--- trunk/contrib/llvm/tools/lto/LTODisassembler.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/lto/LTODisassembler.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,26 +0,0 @@
-//===-- LTODisassembler.cpp - LTO Disassembler interface ------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This function provides utility methods used by clients of libLTO that want
-// to use the disassembler.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm-c/lto.h"
-#include "llvm/Support/TargetSelect.h"
-
-using namespace llvm;
-
-void lto_initialize_disassembler() {
-  // Initialize targets and assembly printers/parsers.
-  llvm::InitializeAllTargetInfos();
-  llvm::InitializeAllTargetMCs();
-  llvm::InitializeAllAsmParsers();
-  llvm::InitializeAllDisassemblers();
-}

Modified: trunk/contrib/llvm/tools/lto/LTOModule.cpp
===================================================================
--- trunk/contrib/llvm/tools/lto/LTOModule.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/lto/LTOModule.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,918 +0,0 @@
-//===-- LTOModule.cpp - LLVM Link Time Optimizer --------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the Link Time Optimization library. This library is
-// intended to be used by linker to optimize code at link time.
-//
-//===----------------------------------------------------------------------===//
-
-#include "LTOModule.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/ADT/Triple.h"
-#include "llvm/Bitcode/ReaderWriter.h"
-#include "llvm/IR/Constants.h"
-#include "llvm/IR/LLVMContext.h"
-#include "llvm/IR/Module.h"
-#include "llvm/MC/MCExpr.h"
-#include "llvm/MC/MCInst.h"
-#include "llvm/MC/MCParser/MCAsmParser.h"
-#include "llvm/MC/MCStreamer.h"
-#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/MC/MCSymbol.h"
-#include "llvm/MC/MCTargetAsmParser.h"
-#include "llvm/MC/SubtargetFeature.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Host.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/Path.h"
-#include "llvm/Support/SourceMgr.h"
-#include "llvm/Support/TargetRegistry.h"
-#include "llvm/Support/TargetSelect.h"
-#include "llvm/Support/system_error.h"
-#include "llvm/Target/TargetRegisterInfo.h"
-using namespace llvm;
-
-static cl::opt<bool>
-EnableFPMAD("enable-fp-mad",
-  cl::desc("Enable less precise MAD instructions to be generated"),
-  cl::init(false));
-
-static cl::opt<bool>
-DisableFPElim("disable-fp-elim",
-  cl::desc("Disable frame pointer elimination optimization"),
-  cl::init(false));
-
-static cl::opt<bool>
-DisableFPElimNonLeaf("disable-non-leaf-fp-elim",
-  cl::desc("Disable frame pointer elimination optimization for non-leaf funcs"),
-  cl::init(false));
-
-static cl::opt<bool>
-EnableUnsafeFPMath("enable-unsafe-fp-math",
-  cl::desc("Enable optimizations that may decrease FP precision"),
-  cl::init(false));
-
-static cl::opt<bool>
-EnableNoInfsFPMath("enable-no-infs-fp-math",
-  cl::desc("Enable FP math optimizations that assume no +-Infs"),
-  cl::init(false));
-
-static cl::opt<bool>
-EnableNoNaNsFPMath("enable-no-nans-fp-math",
-  cl::desc("Enable FP math optimizations that assume no NaNs"),
-  cl::init(false));
-
-static cl::opt<bool>
-EnableHonorSignDependentRoundingFPMath("enable-sign-dependent-rounding-fp-math",
-  cl::Hidden,
-  cl::desc("Force codegen to assume rounding mode can change dynamically"),
-  cl::init(false));
-
-static cl::opt<bool>
-GenerateSoftFloatCalls("soft-float",
-  cl::desc("Generate software floating point library calls"),
-  cl::init(false));
-
-static cl::opt<llvm::FloatABI::ABIType>
-FloatABIForCalls("float-abi",
-  cl::desc("Choose float ABI type"),
-  cl::init(FloatABI::Default),
-  cl::values(
-    clEnumValN(FloatABI::Default, "default",
-               "Target default float ABI type"),
-    clEnumValN(FloatABI::Soft, "soft",
-               "Soft float ABI (implied by -soft-float)"),
-    clEnumValN(FloatABI::Hard, "hard",
-               "Hard float ABI (uses FP registers)"),
-    clEnumValEnd));
-
-static cl::opt<llvm::FPOpFusion::FPOpFusionMode>
-FuseFPOps("fp-contract",
-  cl::desc("Enable aggresive formation of fused FP ops"),
-  cl::init(FPOpFusion::Standard),
-  cl::values(
-    clEnumValN(FPOpFusion::Fast, "fast",
-               "Fuse FP ops whenever profitable"),
-    clEnumValN(FPOpFusion::Standard, "on",
-               "Only fuse 'blessed' FP ops."),
-    clEnumValN(FPOpFusion::Strict, "off",
-               "Only fuse FP ops when the result won't be effected."),
-    clEnumValEnd));
-
-static cl::opt<bool>
-DontPlaceZerosInBSS("nozero-initialized-in-bss",
-  cl::desc("Don't place zero-initialized symbols into bss section"),
-  cl::init(false));
-
-static cl::opt<bool>
-EnableGuaranteedTailCallOpt("tailcallopt",
-  cl::desc("Turn fastcc calls into tail calls by (potentially) changing ABI."),
-  cl::init(false));
-
-static cl::opt<bool>
-DisableTailCalls("disable-tail-calls",
-  cl::desc("Never emit tail calls"),
-  cl::init(false));
-
-static cl::opt<unsigned>
-OverrideStackAlignment("stack-alignment",
-  cl::desc("Override default stack alignment"),
-  cl::init(0));
-
-static cl::opt<bool>
-EnableRealignStack("realign-stack",
-  cl::desc("Realign stack if needed"),
-  cl::init(true));
-
-static cl::opt<std::string>
-TrapFuncName("trap-func", cl::Hidden,
-  cl::desc("Emit a call to trap function rather than a trap instruction"),
-  cl::init(""));
-
-static cl::opt<bool>
-EnablePIE("enable-pie",
-  cl::desc("Assume the creation of a position independent executable."),
-  cl::init(false));
-
-static cl::opt<bool>
-SegmentedStacks("segmented-stacks",
-  cl::desc("Use segmented stacks if possible."),
-  cl::init(false));
-
-static cl::opt<bool>
-UseInitArray("use-init-array",
-  cl::desc("Use .init_array instead of .ctors."),
-  cl::init(false));
-
-static cl::opt<unsigned>
-SSPBufferSize("stack-protector-buffer-size", cl::init(8),
-              cl::desc("Lower bound for a buffer to be considered for "
-                       "stack protection"));
-
-LTOModule::LTOModule(llvm::Module *m, llvm::TargetMachine *t)
-  : _module(m), _target(t),
-    _context(*_target->getMCAsmInfo(), *_target->getRegisterInfo(), NULL),
-    _mangler(_context, *_target->getDataLayout()) {}
-
-/// isBitcodeFile - Returns 'true' if the file (or memory contents) is LLVM
-/// bitcode.
-bool LTOModule::isBitcodeFile(const void *mem, size_t length) {
-  return llvm::sys::IdentifyFileType((const char*)mem, length)
-    == llvm::sys::Bitcode_FileType;
-}
-
-bool LTOModule::isBitcodeFile(const char *path) {
-  return llvm::sys::Path(path).isBitcodeFile();
-}
-
-/// isBitcodeFileForTarget - Returns 'true' if the file (or memory contents) is
-/// LLVM bitcode for the specified triple.
-bool LTOModule::isBitcodeFileForTarget(const void *mem, size_t length,
-                                       const char *triplePrefix) {
-  MemoryBuffer *buffer = makeBuffer(mem, length);
-  if (!buffer)
-    return false;
-  return isTargetMatch(buffer, triplePrefix);
-}
-
-bool LTOModule::isBitcodeFileForTarget(const char *path,
-                                       const char *triplePrefix) {
-  OwningPtr<MemoryBuffer> buffer;
-  if (MemoryBuffer::getFile(path, buffer))
-    return false;
-  return isTargetMatch(buffer.take(), triplePrefix);
-}
-
-/// isTargetMatch - Returns 'true' if the memory buffer is for the specified
-/// target triple.
-bool LTOModule::isTargetMatch(MemoryBuffer *buffer, const char *triplePrefix) {
-  std::string Triple = getBitcodeTargetTriple(buffer, getGlobalContext());
-  delete buffer;
-  return strncmp(Triple.c_str(), triplePrefix, strlen(triplePrefix)) == 0;
-}
-
-/// makeLTOModule - Create an LTOModule. N.B. These methods take ownership of
-/// the buffer.
-LTOModule *LTOModule::makeLTOModule(const char *path, std::string &errMsg) {
-  OwningPtr<MemoryBuffer> buffer;
-  if (error_code ec = MemoryBuffer::getFile(path, buffer)) {
-    errMsg = ec.message();
-    return NULL;
-  }
-  return makeLTOModule(buffer.take(), errMsg);
-}
-
-LTOModule *LTOModule::makeLTOModule(int fd, const char *path,
-                                    size_t size, std::string &errMsg) {
-  return makeLTOModule(fd, path, size, size, 0, errMsg);
-}
-
-LTOModule *LTOModule::makeLTOModule(int fd, const char *path,
-                                    size_t file_size,
-                                    size_t map_size,
-                                    off_t offset,
-                                    std::string &errMsg) {
-  OwningPtr<MemoryBuffer> buffer;
-  if (error_code ec = MemoryBuffer::getOpenFile(fd, path, buffer, file_size,
-                                                map_size, offset, false)) {
-    errMsg = ec.message();
-    return NULL;
-  }
-  return makeLTOModule(buffer.take(), errMsg);
-}
-
-LTOModule *LTOModule::makeLTOModule(const void *mem, size_t length,
-                                    std::string &errMsg) {
-  OwningPtr<MemoryBuffer> buffer(makeBuffer(mem, length));
-  if (!buffer)
-    return NULL;
-  return makeLTOModule(buffer.take(), errMsg);
-}
-
-void LTOModule::getTargetOptions(TargetOptions &Options) {
-  Options.LessPreciseFPMADOption = EnableFPMAD;
-  Options.NoFramePointerElim = DisableFPElim;
-  Options.NoFramePointerElimNonLeaf = DisableFPElimNonLeaf;
-  Options.AllowFPOpFusion = FuseFPOps;
-  Options.UnsafeFPMath = EnableUnsafeFPMath;
-  Options.NoInfsFPMath = EnableNoInfsFPMath;
-  Options.NoNaNsFPMath = EnableNoNaNsFPMath;
-  Options.HonorSignDependentRoundingFPMathOption =
-    EnableHonorSignDependentRoundingFPMath;
-  Options.UseSoftFloat = GenerateSoftFloatCalls;
-  if (FloatABIForCalls != FloatABI::Default)
-    Options.FloatABIType = FloatABIForCalls;
-  Options.NoZerosInBSS = DontPlaceZerosInBSS;
-  Options.GuaranteedTailCallOpt = EnableGuaranteedTailCallOpt;
-  Options.DisableTailCalls = DisableTailCalls;
-  Options.StackAlignmentOverride = OverrideStackAlignment;
-  Options.RealignStack = EnableRealignStack;
-  Options.TrapFuncName = TrapFuncName;
-  Options.PositionIndependentExecutable = EnablePIE;
-  Options.EnableSegmentedStacks = SegmentedStacks;
-  Options.UseInitArray = UseInitArray;
-  Options.SSPBufferSize = SSPBufferSize;
-}
-
-LTOModule *LTOModule::makeLTOModule(MemoryBuffer *buffer,
-                                    std::string &errMsg) {
-  static bool Initialized = false;
-  if (!Initialized) {
-    InitializeAllTargets();
-    InitializeAllTargetMCs();
-    InitializeAllAsmParsers();
-    Initialized = true;
-  }
-
-  // parse bitcode buffer
-  OwningPtr<Module> m(getLazyBitcodeModule(buffer, getGlobalContext(),
-                                           &errMsg));
-  if (!m) {
-    delete buffer;
-    return NULL;
-  }
-
-  std::string TripleStr = m->getTargetTriple();
-  if (TripleStr.empty())
-    TripleStr = sys::getDefaultTargetTriple();
-  llvm::Triple Triple(TripleStr);
-
-  // find machine architecture for this module
-  const Target *march = TargetRegistry::lookupTarget(TripleStr, errMsg);
-  if (!march)
-    return NULL;
-
-  // construct LTOModule, hand over ownership of module and target
-  SubtargetFeatures Features;
-  Features.getDefaultSubtargetFeatures(Triple);
-  std::string FeatureStr = Features.getString();
-  // Set a default CPU for Darwin triples.
-  std::string CPU;
-  if (Triple.isOSDarwin()) {
-    if (Triple.getArch() == llvm::Triple::x86_64)
-      CPU = "core2";
-    else if (Triple.getArch() == llvm::Triple::x86)
-      CPU = "yonah";
-  }
-  TargetOptions Options;
-  getTargetOptions(Options);
-  TargetMachine *target = march->createTargetMachine(TripleStr, CPU, FeatureStr,
-                                                     Options);
-  LTOModule *Ret = new LTOModule(m.take(), target);
-  if (Ret->parseSymbols(errMsg)) {
-    delete Ret;
-    return NULL;
-  }
-
-  return Ret;
-}
-
-/// makeBuffer - Create a MemoryBuffer from a memory range.
-MemoryBuffer *LTOModule::makeBuffer(const void *mem, size_t length) {
-  const char *startPtr = (const char*)mem;
-  return MemoryBuffer::getMemBuffer(StringRef(startPtr, length), "", false);
-}
-
-/// objcClassNameFromExpression - Get string that the data pointer points to.
-bool
-LTOModule::objcClassNameFromExpression(const Constant *c, std::string &name) {
-  if (const ConstantExpr *ce = dyn_cast<ConstantExpr>(c)) {
-    Constant *op = ce->getOperand(0);
-    if (GlobalVariable *gvn = dyn_cast<GlobalVariable>(op)) {
-      Constant *cn = gvn->getInitializer();
-      if (ConstantDataArray *ca = dyn_cast<ConstantDataArray>(cn)) {
-        if (ca->isCString()) {
-          name = ".objc_class_name_" + ca->getAsCString().str();
-          return true;
-        }
-      }
-    }
-  }
-  return false;
-}
-
-/// addObjCClass - Parse i386/ppc ObjC class data structure.
-void LTOModule::addObjCClass(const GlobalVariable *clgv) {
-  const ConstantStruct *c = dyn_cast<ConstantStruct>(clgv->getInitializer());
-  if (!c) return;
-
-  // second slot in __OBJC,__class is pointer to superclass name
-  std::string superclassName;
-  if (objcClassNameFromExpression(c->getOperand(1), superclassName)) {
-    NameAndAttributes info;
-    StringMap<NameAndAttributes>::value_type &entry =
-      _undefines.GetOrCreateValue(superclassName);
-    if (!entry.getValue().name) {
-      const char *symbolName = entry.getKey().data();
-      info.name = symbolName;
-      info.attributes = LTO_SYMBOL_DEFINITION_UNDEFINED;
-      info.isFunction = false;
-      info.symbol = clgv;
-      entry.setValue(info);
-    }
-  }
-
-  // third slot in __OBJC,__class is pointer to class name
-  std::string className;
-  if (objcClassNameFromExpression(c->getOperand(2), className)) {
-    StringSet::value_type &entry = _defines.GetOrCreateValue(className);
-    entry.setValue(1);
-
-    NameAndAttributes info;
-    info.name = entry.getKey().data();
-    info.attributes = LTO_SYMBOL_PERMISSIONS_DATA |
-      LTO_SYMBOL_DEFINITION_REGULAR | LTO_SYMBOL_SCOPE_DEFAULT;
-    info.isFunction = false;
-    info.symbol = clgv;
-    _symbols.push_back(info);
-  }
-}
-
-/// addObjCCategory - Parse i386/ppc ObjC category data structure.
-void LTOModule::addObjCCategory(const GlobalVariable *clgv) {
-  const ConstantStruct *c = dyn_cast<ConstantStruct>(clgv->getInitializer());
-  if (!c) return;
-
-  // second slot in __OBJC,__category is pointer to target class name
-  std::string targetclassName;
-  if (!objcClassNameFromExpression(c->getOperand(1), targetclassName))
-    return;
-
-  NameAndAttributes info;
-  StringMap<NameAndAttributes>::value_type &entry =
-    _undefines.GetOrCreateValue(targetclassName);
-
-  if (entry.getValue().name)
-    return;
-
-  const char *symbolName = entry.getKey().data();
-  info.name = symbolName;
-  info.attributes = LTO_SYMBOL_DEFINITION_UNDEFINED;
-  info.isFunction = false;
-  info.symbol = clgv;
-  entry.setValue(info);
-}
-
-/// addObjCClassRef - Parse i386/ppc ObjC class list data structure.
-void LTOModule::addObjCClassRef(const GlobalVariable *clgv) {
-  std::string targetclassName;
-  if (!objcClassNameFromExpression(clgv->getInitializer(), targetclassName))
-    return;
-
-  NameAndAttributes info;
-  StringMap<NameAndAttributes>::value_type &entry =
-    _undefines.GetOrCreateValue(targetclassName);
-  if (entry.getValue().name)
-    return;
-
-  const char *symbolName = entry.getKey().data();
-  info.name = symbolName;
-  info.attributes = LTO_SYMBOL_DEFINITION_UNDEFINED;
-  info.isFunction = false;
-  info.symbol = clgv;
-  entry.setValue(info);
-}
-
-/// addDefinedDataSymbol - Add a data symbol as defined to the list.
-void LTOModule::addDefinedDataSymbol(const GlobalValue *v) {
-  // Add to list of defined symbols.
-  addDefinedSymbol(v, false);
-
-  if (!v->hasSection() /* || !isTargetDarwin */)
-    return;
-
-  // Special case i386/ppc ObjC data structures in magic sections:
-  // The issue is that the old ObjC object format did some strange
-  // contortions to avoid real linker symbols.  For instance, the
-  // ObjC class data structure is allocated statically in the executable
-  // that defines that class.  That data structures contains a pointer to
-  // its superclass.  But instead of just initializing that part of the
-  // struct to the address of its superclass, and letting the static and
-  // dynamic linkers do the rest, the runtime works by having that field
-  // instead point to a C-string that is the name of the superclass.
-  // At runtime the objc initialization updates that pointer and sets
-  // it to point to the actual super class.  As far as the linker
-  // knows it is just a pointer to a string.  But then someone wanted the
-  // linker to issue errors at build time if the superclass was not found.
-  // So they figured out a way in mach-o object format to use an absolute
-  // symbols (.objc_class_name_Foo = 0) and a floating reference
-  // (.reference .objc_class_name_Bar) to cause the linker into erroring when
-  // a class was missing.
-  // The following synthesizes the implicit .objc_* symbols for the linker
-  // from the ObjC data structures generated by the front end.
-
-  // special case if this data blob is an ObjC class definition
-  if (v->getSection().compare(0, 15, "__OBJC,__class,") == 0) {
-    if (const GlobalVariable *gv = dyn_cast<GlobalVariable>(v)) {
-      addObjCClass(gv);
-    }
-  }
-
-  // special case if this data blob is an ObjC category definition
-  else if (v->getSection().compare(0, 18, "__OBJC,__category,") == 0) {
-    if (const GlobalVariable *gv = dyn_cast<GlobalVariable>(v)) {
-      addObjCCategory(gv);
-    }
-  }
-
-  // special case if this data blob is the list of referenced classes
-  else if (v->getSection().compare(0, 18, "__OBJC,__cls_refs,") == 0) {
-    if (const GlobalVariable *gv = dyn_cast<GlobalVariable>(v)) {
-      addObjCClassRef(gv);
-    }
-  }
-}
-
-/// addDefinedFunctionSymbol - Add a function symbol as defined to the list.
-void LTOModule::addDefinedFunctionSymbol(const Function *f) {
-  // add to list of defined symbols
-  addDefinedSymbol(f, true);
-}
-
-/// addDefinedSymbol - Add a defined symbol to the list.
-void LTOModule::addDefinedSymbol(const GlobalValue *def, bool isFunction) {
-  // ignore all llvm.* symbols
-  if (def->getName().startswith("llvm."))
-    return;
-
-  // string is owned by _defines
-  SmallString<64> Buffer;
-  _mangler.getNameWithPrefix(Buffer, def, false);
-
-  // set alignment part log2() can have rounding errors
-  uint32_t align = def->getAlignment();
-  uint32_t attr = align ? CountTrailingZeros_32(def->getAlignment()) : 0;
-
-  // set permissions part
-  if (isFunction) {
-    attr |= LTO_SYMBOL_PERMISSIONS_CODE;
-  } else {
-    const GlobalVariable *gv = dyn_cast<GlobalVariable>(def);
-    if (gv && gv->isConstant())
-      attr |= LTO_SYMBOL_PERMISSIONS_RODATA;
-    else
-      attr |= LTO_SYMBOL_PERMISSIONS_DATA;
-  }
-
-  // set definition part
-  if (def->hasWeakLinkage() || def->hasLinkOnceLinkage() ||
-      def->hasLinkerPrivateWeakLinkage())
-    attr |= LTO_SYMBOL_DEFINITION_WEAK;
-  else if (def->hasCommonLinkage())
-    attr |= LTO_SYMBOL_DEFINITION_TENTATIVE;
-  else
-    attr |= LTO_SYMBOL_DEFINITION_REGULAR;
-
-  // set scope part
-  if (def->hasHiddenVisibility())
-    attr |= LTO_SYMBOL_SCOPE_HIDDEN;
-  else if (def->hasProtectedVisibility())
-    attr |= LTO_SYMBOL_SCOPE_PROTECTED;
-  else if (def->hasExternalLinkage() || def->hasWeakLinkage() ||
-           def->hasLinkOnceLinkage() || def->hasCommonLinkage() ||
-           def->hasLinkerPrivateWeakLinkage())
-    attr |= LTO_SYMBOL_SCOPE_DEFAULT;
-  else if (def->hasLinkOnceODRAutoHideLinkage())
-    attr |= LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN;
-  else
-    attr |= LTO_SYMBOL_SCOPE_INTERNAL;
-
-  StringSet::value_type &entry = _defines.GetOrCreateValue(Buffer);
-  entry.setValue(1);
-
-  // fill information structure
-  NameAndAttributes info;
-  StringRef Name = entry.getKey();
-  info.name = Name.data();
-  assert(info.name[Name.size()] == '\0');
-  info.attributes = attr;
-  info.isFunction = isFunction;
-  info.symbol = def;
-
-  // add to table of symbols
-  _symbols.push_back(info);
-}
-
-/// addAsmGlobalSymbol - Add a global symbol from module-level ASM to the
-/// defined list.
-void LTOModule::addAsmGlobalSymbol(const char *name,
-                                   lto_symbol_attributes scope) {
-  StringSet::value_type &entry = _defines.GetOrCreateValue(name);
-
-  // only add new define if not already defined
-  if (entry.getValue())
-    return;
-
-  entry.setValue(1);
-
-  NameAndAttributes &info = _undefines[entry.getKey().data()];
-
-  if (info.symbol == 0) {
-    // FIXME: This is trying to take care of module ASM like this:
-    //
-    //   module asm ".zerofill __FOO, __foo, _bar_baz_qux, 0"
-    //
-    // but is gross and its mother dresses it funny. Have the ASM parser give us
-    // more details for this type of situation so that we're not guessing so
-    // much.
-
-    // fill information structure
-    info.name = entry.getKey().data();
-    info.attributes =
-      LTO_SYMBOL_PERMISSIONS_DATA | LTO_SYMBOL_DEFINITION_REGULAR | scope;
-    info.isFunction = false;
-    info.symbol = 0;
-
-    // add to table of symbols
-    _symbols.push_back(info);
-    return;
-  }
-
-  if (info.isFunction)
-    addDefinedFunctionSymbol(cast<Function>(info.symbol));
-  else
-    addDefinedDataSymbol(info.symbol);
-
-  _symbols.back().attributes &= ~LTO_SYMBOL_SCOPE_MASK;
-  _symbols.back().attributes |= scope;
-}
-
-/// addAsmGlobalSymbolUndef - Add a global symbol from module-level ASM to the
-/// undefined list.
-void LTOModule::addAsmGlobalSymbolUndef(const char *name) {
-  StringMap<NameAndAttributes>::value_type &entry =
-    _undefines.GetOrCreateValue(name);
-
-  _asm_undefines.push_back(entry.getKey().data());
-
-  // we already have the symbol
-  if (entry.getValue().name)
-    return;
-
-  uint32_t attr = LTO_SYMBOL_DEFINITION_UNDEFINED;;
-  attr |= LTO_SYMBOL_SCOPE_DEFAULT;
-  NameAndAttributes info;
-  info.name = entry.getKey().data();
-  info.attributes = attr;
-  info.isFunction = false;
-  info.symbol = 0;
-
-  entry.setValue(info);
-}
-
-/// addPotentialUndefinedSymbol - Add a symbol which isn't defined just yet to a
-/// list to be resolved later.
-void
-LTOModule::addPotentialUndefinedSymbol(const GlobalValue *decl, bool isFunc) {
-  // ignore all llvm.* symbols
-  if (decl->getName().startswith("llvm."))
-    return;
-
-  // ignore all aliases
-  if (isa<GlobalAlias>(decl))
-    return;
-
-  SmallString<64> name;
-  _mangler.getNameWithPrefix(name, decl, false);
-
-  StringMap<NameAndAttributes>::value_type &entry =
-    _undefines.GetOrCreateValue(name);
-
-  // we already have the symbol
-  if (entry.getValue().name)
-    return;
-
-  NameAndAttributes info;
-
-  info.name = entry.getKey().data();
-
-  if (decl->hasExternalWeakLinkage())
-    info.attributes = LTO_SYMBOL_DEFINITION_WEAKUNDEF;
-  else
-    info.attributes = LTO_SYMBOL_DEFINITION_UNDEFINED;
-
-  info.isFunction = isFunc;
-  info.symbol = decl;
-
-  entry.setValue(info);
-}
-
-namespace {
-  class RecordStreamer : public MCStreamer {
-  public:
-    enum State { NeverSeen, Global, Defined, DefinedGlobal, Used };
-
-  private:
-    StringMap<State> Symbols;
-
-    void markDefined(const MCSymbol &Symbol) {
-      State &S = Symbols[Symbol.getName()];
-      switch (S) {
-      case DefinedGlobal:
-      case Global:
-        S = DefinedGlobal;
-        break;
-      case NeverSeen:
-      case Defined:
-      case Used:
-        S = Defined;
-        break;
-      }
-    }
-    void markGlobal(const MCSymbol &Symbol) {
-      State &S = Symbols[Symbol.getName()];
-      switch (S) {
-      case DefinedGlobal:
-      case Defined:
-        S = DefinedGlobal;
-        break;
-
-      case NeverSeen:
-      case Global:
-      case Used:
-        S = Global;
-        break;
-      }
-    }
-    void markUsed(const MCSymbol &Symbol) {
-      State &S = Symbols[Symbol.getName()];
-      switch (S) {
-      case DefinedGlobal:
-      case Defined:
-      case Global:
-        break;
-
-      case NeverSeen:
-      case Used:
-        S = Used;
-        break;
-      }
-    }
-
-    // FIXME: mostly copied for the obj streamer.
-    void AddValueSymbols(const MCExpr *Value) {
-      switch (Value->getKind()) {
-      case MCExpr::Target:
-        // FIXME: What should we do in here?
-        break;
-
-      case MCExpr::Constant:
-        break;
-
-      case MCExpr::Binary: {
-        const MCBinaryExpr *BE = cast<MCBinaryExpr>(Value);
-        AddValueSymbols(BE->getLHS());
-        AddValueSymbols(BE->getRHS());
-        break;
-      }
-
-      case MCExpr::SymbolRef:
-        markUsed(cast<MCSymbolRefExpr>(Value)->getSymbol());
-        break;
-
-      case MCExpr::Unary:
-        AddValueSymbols(cast<MCUnaryExpr>(Value)->getSubExpr());
-        break;
-      }
-    }
-
-  public:
-    typedef StringMap<State>::const_iterator const_iterator;
-
-    const_iterator begin() {
-      return Symbols.begin();
-    }
-
-    const_iterator end() {
-      return Symbols.end();
-    }
-
-    RecordStreamer(MCContext &Context)
-        : MCStreamer(SK_RecordStreamer, Context) {}
-
-    virtual void EmitInstruction(const MCInst &Inst) {
-      // Scan for values.
-      for (unsigned i = Inst.getNumOperands(); i--; )
-        if (Inst.getOperand(i).isExpr())
-          AddValueSymbols(Inst.getOperand(i).getExpr());
-    }
-    virtual void EmitLabel(MCSymbol *Symbol) {
-      Symbol->setSection(*getCurrentSection().first);
-      markDefined(*Symbol);
-    }
-    virtual void EmitDebugLabel(MCSymbol *Symbol) {
-      EmitLabel(Symbol);
-    }
-    virtual void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
-      // FIXME: should we handle aliases?
-      markDefined(*Symbol);
-    }
-    virtual void EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) {
-      if (Attribute == MCSA_Global)
-        markGlobal(*Symbol);
-    }
-    virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol,
-                              uint64_t Size , unsigned ByteAlignment) {
-      markDefined(*Symbol);
-    }
-    virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
-                                  unsigned ByteAlignment) {
-      markDefined(*Symbol);
-    }
-
-    virtual void EmitBundleAlignMode(unsigned AlignPow2) {}
-    virtual void EmitBundleLock(bool AlignToEnd) {}
-    virtual void EmitBundleUnlock() {}
-
-    // Noop calls.
-    virtual void ChangeSection(const MCSection *Section,
-                               const MCExpr *Subsection) {}
-    virtual void InitToTextSection() {}
-    virtual void InitSections() {}
-    virtual void EmitAssemblerFlag(MCAssemblerFlag Flag) {}
-    virtual void EmitThumbFunc(MCSymbol *Func) {}
-    virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {}
-    virtual void EmitWeakReference(MCSymbol *Alias, const MCSymbol *Symbol) {}
-    virtual void BeginCOFFSymbolDef(const MCSymbol *Symbol) {}
-    virtual void EmitCOFFSymbolStorageClass(int StorageClass) {}
-    virtual void EmitCOFFSymbolType(int Type) {}
-    virtual void EndCOFFSymbolDef() {}
-    virtual void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) {}
-    virtual void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
-                                       unsigned ByteAlignment) {}
-    virtual void EmitTBSSSymbol(const MCSection *Section, MCSymbol *Symbol,
-                                uint64_t Size, unsigned ByteAlignment) {}
-    virtual void EmitBytes(StringRef Data, unsigned AddrSpace) {}
-    virtual void EmitValueImpl(const MCExpr *Value, unsigned Size,
-                               unsigned AddrSpace) {}
-    virtual void EmitULEB128Value(const MCExpr *Value) {}
-    virtual void EmitSLEB128Value(const MCExpr *Value) {}
-    virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
-                                      unsigned ValueSize,
-                                      unsigned MaxBytesToEmit) {}
-    virtual void EmitCodeAlignment(unsigned ByteAlignment,
-                                   unsigned MaxBytesToEmit) {}
-    virtual bool EmitValueToOffset(const MCExpr *Offset,
-                                   unsigned char Value ) { return false; }
-    virtual void EmitFileDirective(StringRef Filename) {}
-    virtual void EmitDwarfAdvanceLineAddr(int64_t LineDelta,
-                                          const MCSymbol *LastLabel,
-                                          const MCSymbol *Label,
-                                          unsigned PointerSize) {}
-    virtual void FinishImpl() {}
-
-    static bool classof(const MCStreamer *S) {
-      return S->getKind() == SK_RecordStreamer;
-    }
-  };
-} // end anonymous namespace
-
-/// addAsmGlobalSymbols - Add global symbols from module-level ASM to the
-/// defined or undefined lists.
-bool LTOModule::addAsmGlobalSymbols(std::string &errMsg) {
-  const std::string &inlineAsm = _module->getModuleInlineAsm();
-  if (inlineAsm.empty())
-    return false;
-
-  OwningPtr<RecordStreamer> Streamer(new RecordStreamer(_context));
-  MemoryBuffer *Buffer = MemoryBuffer::getMemBuffer(inlineAsm);
-  SourceMgr SrcMgr;
-  SrcMgr.AddNewSourceBuffer(Buffer, SMLoc());
-  OwningPtr<MCAsmParser> Parser(createMCAsmParser(SrcMgr,
-                                                  _context, *Streamer,
-                                                  *_target->getMCAsmInfo()));
-  const Target &T = _target->getTarget();
-  OwningPtr<MCSubtargetInfo>
-    STI(T.createMCSubtargetInfo(_target->getTargetTriple(),
-                                _target->getTargetCPU(),
-                                _target->getTargetFeatureString()));
-  OwningPtr<MCTargetAsmParser> TAP(T.createMCAsmParser(*STI, *Parser.get()));
-  if (!TAP) {
-    errMsg = "target " + std::string(T.getName()) +
-      " does not define AsmParser.";
-    return true;
-  }
-
-  Parser->setTargetParser(*TAP);
-  if (Parser->Run(false))
-    return true;
-
-  for (RecordStreamer::const_iterator i = Streamer->begin(),
-         e = Streamer->end(); i != e; ++i) {
-    StringRef Key = i->first();
-    RecordStreamer::State Value = i->second;
-    if (Value == RecordStreamer::DefinedGlobal)
-      addAsmGlobalSymbol(Key.data(), LTO_SYMBOL_SCOPE_DEFAULT);
-    else if (Value == RecordStreamer::Defined)
-      addAsmGlobalSymbol(Key.data(), LTO_SYMBOL_SCOPE_INTERNAL);
-    else if (Value == RecordStreamer::Global ||
-             Value == RecordStreamer::Used)
-      addAsmGlobalSymbolUndef(Key.data());
-  }
-
-  return false;
-}
-
-/// isDeclaration - Return 'true' if the global value is a declaration.
-static bool isDeclaration(const GlobalValue &V) {
-  if (V.hasAvailableExternallyLinkage())
-    return true;
-
-  if (V.isMaterializable())
-    return false;
-
-  return V.isDeclaration();
-}
-
-/// parseSymbols - Parse the symbols from the module and model-level ASM and add
-/// them to either the defined or undefined lists.
-bool LTOModule::parseSymbols(std::string &errMsg) {
-  // add functions
-  for (Module::iterator f = _module->begin(), e = _module->end(); f != e; ++f) {
-    if (isDeclaration(*f))
-      addPotentialUndefinedSymbol(f, true);
-    else
-      addDefinedFunctionSymbol(f);
-  }
-
-  // add data
-  for (Module::global_iterator v = _module->global_begin(),
-         e = _module->global_end(); v !=  e; ++v) {
-    if (isDeclaration(*v))
-      addPotentialUndefinedSymbol(v, false);
-    else
-      addDefinedDataSymbol(v);
-  }
-
-  // add asm globals
-  if (addAsmGlobalSymbols(errMsg))
-    return true;
-
-  // add aliases
-  for (Module::alias_iterator a = _module->alias_begin(),
-         e = _module->alias_end(); a != e; ++a) {
-    if (isDeclaration(*a->getAliasedGlobal()))
-      // Is an alias to a declaration.
-      addPotentialUndefinedSymbol(a, false);
-    else
-      addDefinedDataSymbol(a);
-  }
-
-  // make symbols for all undefines
-  for (StringMap<NameAndAttributes>::iterator u =_undefines.begin(),
-         e = _undefines.end(); u != e; ++u) {
-    // If this symbol also has a definition, then don't make an undefine because
-    // it is a tentative definition.
-    if (_defines.count(u->getKey())) continue;
-    NameAndAttributes info = u->getValue();
-    _symbols.push_back(info);
-  }
-
-  return false;
-}

Modified: trunk/contrib/llvm/tools/lto/LTOModule.h
===================================================================
--- trunk/contrib/llvm/tools/lto/LTOModule.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/lto/LTOModule.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,191 +0,0 @@
-//===-LTOModule.h - LLVM Link Time Optimizer ------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file declares the LTOModule class.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LTO_MODULE_H
-#define LTO_MODULE_H
-
-#include "llvm-c/lto.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/IR/Module.h"
-#include "llvm/MC/MCContext.h"
-#include "llvm/Target/Mangler.h"
-#include "llvm/Target/TargetMachine.h"
-#include <string>
-#include <vector>
-
-// Forward references to llvm classes.
-namespace llvm {
-  class Function;
-  class GlobalValue;
-  class MemoryBuffer;
-  class TargetOptions;
-  class Value;
-}
-
-//===----------------------------------------------------------------------===//
-/// LTOModule - C++ class which implements the opaque lto_module_t type.
-///
-struct LTOModule {
-private:
-  typedef llvm::StringMap<uint8_t> StringSet;
-
-  struct NameAndAttributes {
-    const char        *name;
-    uint32_t           attributes;
-    bool               isFunction;
-    const llvm::GlobalValue *symbol;
-  };
-
-  llvm::OwningPtr<llvm::Module>           _module;
-  llvm::OwningPtr<llvm::TargetMachine>    _target;
-  std::vector<NameAndAttributes>          _symbols;
-
-  // _defines and _undefines only needed to disambiguate tentative definitions
-  StringSet                               _defines;
-  llvm::StringMap<NameAndAttributes>      _undefines;
-  std::vector<const char*>                _asm_undefines;
-  llvm::MCContext                         _context;
-
-  // Use mangler to add GlobalPrefix to names to match linker names.
-  llvm::Mangler                           _mangler;
-
-  LTOModule(llvm::Module *m, llvm::TargetMachine *t);
-public:
-  /// isBitcodeFile - Returns 'true' if the file or memory contents is LLVM
-  /// bitcode.
-  static bool isBitcodeFile(const void *mem, size_t length);
-  static bool isBitcodeFile(const char *path);
-
-  /// isBitcodeFileForTarget - Returns 'true' if the file or memory contents
-  /// is LLVM bitcode for the specified triple.
-  static bool isBitcodeFileForTarget(const void *mem,
-                                     size_t length,
-                                     const char *triplePrefix);
-  static bool isBitcodeFileForTarget(const char *path,
-                                     const char *triplePrefix);
-
-  /// makeLTOModule - Create an LTOModule. N.B. These methods take ownership
-  /// of the buffer.
-  static LTOModule *makeLTOModule(const char* path,
-                                  std::string &errMsg);
-  static LTOModule *makeLTOModule(int fd, const char *path,
-                                  size_t size, std::string &errMsg);
-  static LTOModule *makeLTOModule(int fd, const char *path,
-                                  size_t file_size,
-                                  size_t map_size,
-                                  off_t offset,
-                                  std::string& errMsg);
-  static LTOModule *makeLTOModule(const void *mem, size_t length,
-                                  std::string &errMsg);
-
-  /// getTargetTriple - Return the Module's target triple.
-  const char *getTargetTriple() {
-    return _module->getTargetTriple().c_str();
-  }
-
-  /// setTargetTriple - Set the Module's target triple.
-  void setTargetTriple(const char *triple) {
-    _module->setTargetTriple(triple);
-  }
-
-  /// getSymbolCount - Get the number of symbols
-  uint32_t getSymbolCount() {
-    return _symbols.size();
-  }
-
-  /// getSymbolAttributes - Get the attributes for a symbol at the specified
-  /// index.
-  lto_symbol_attributes getSymbolAttributes(uint32_t index) {
-    if (index < _symbols.size())
-      return lto_symbol_attributes(_symbols[index].attributes);
-    return lto_symbol_attributes(0);
-  }
-
-  /// getSymbolName - Get the name of the symbol at the specified index.
-  const char *getSymbolName(uint32_t index) {
-    if (index < _symbols.size())
-      return _symbols[index].name;
-    return NULL;
-  }
-
-  /// getLLVVMModule - Return the Module.
-  llvm::Module *getLLVVMModule() { return _module.get(); }
-
-  /// getAsmUndefinedRefs -
-  const std::vector<const char*> &getAsmUndefinedRefs() {
-    return _asm_undefines;
-  }
-
-  /// getTargetOptions - Fill the TargetOptions object with the options
-  /// specified on the command line.
-  static void getTargetOptions(llvm::TargetOptions &Options);
-
-private:
-  /// parseSymbols - Parse the symbols from the module and model-level ASM and
-  /// add them to either the defined or undefined lists.
-  bool parseSymbols(std::string &errMsg);
-
-  /// addPotentialUndefinedSymbol - Add a symbol which isn't defined just yet
-  /// to a list to be resolved later.
-  void addPotentialUndefinedSymbol(const llvm::GlobalValue *dcl, bool isFunc);
-
-  /// addDefinedSymbol - Add a defined symbol to the list.
-  void addDefinedSymbol(const llvm::GlobalValue *def, bool isFunction);
-
-  /// addDefinedFunctionSymbol - Add a function symbol as defined to the list.
-  void addDefinedFunctionSymbol(const llvm::Function *f);
-
-  /// addDefinedDataSymbol - Add a data symbol as defined to the list.
-  void addDefinedDataSymbol(const llvm::GlobalValue *v);
-
-  /// addAsmGlobalSymbols - Add global symbols from module-level ASM to the
-  /// defined or undefined lists.
-  bool addAsmGlobalSymbols(std::string &errMsg);
-
-  /// addAsmGlobalSymbol - Add a global symbol from module-level ASM to the
-  /// defined list.
-  void addAsmGlobalSymbol(const char *, lto_symbol_attributes scope);
-
-  /// addAsmGlobalSymbolUndef - Add a global symbol from module-level ASM to
-  /// the undefined list.
-  void addAsmGlobalSymbolUndef(const char *);
-
-  /// addObjCClass - Parse i386/ppc ObjC class data structure.
-  void addObjCClass(const llvm::GlobalVariable *clgv);
-
-  /// addObjCCategory - Parse i386/ppc ObjC category data structure.
-  void addObjCCategory(const llvm::GlobalVariable *clgv);
-
-  /// addObjCClassRef - Parse i386/ppc ObjC class list data structure.
-  void addObjCClassRef(const llvm::GlobalVariable *clgv);
-
-  /// objcClassNameFromExpression - Get string that the data pointer points
-  /// to.
-  bool objcClassNameFromExpression(const llvm::Constant* c, std::string &name);
-
-  /// isTargetMatch - Returns 'true' if the memory buffer is for the specified
-  /// target triple.
-  static bool isTargetMatch(llvm::MemoryBuffer *memBuffer,
-                            const char *triplePrefix);
-
-  /// makeLTOModule - Create an LTOModule (private version). N.B. This
-  /// method takes ownership of the buffer.
-  static LTOModule *makeLTOModule(llvm::MemoryBuffer *buffer,
-                                  std::string &errMsg);
-
-  /// makeBuffer - Create a MemoryBuffer from a memory range.
-  static llvm::MemoryBuffer *makeBuffer(const void *mem, size_t length);
-};
-
-#endif // LTO_MODULE_H

Modified: trunk/contrib/llvm/tools/lto/lto.cpp
===================================================================
--- trunk/contrib/llvm/tools/lto/lto.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/lto/lto.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,213 +0,0 @@
-//===-lto.cpp - LLVM Link Time Optimizer ----------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the Link Time Optimization library. This library is
-// intended to be used by linker to optimize code at link time.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm-c/lto.h"
-#include "LTOCodeGenerator.h"
-#include "LTOModule.h"
-#include "llvm-c/Core.h"
-
-
-// Holds most recent error string.
-// *** Not thread safe ***
-static std::string sLastErrorString;
-
-/// lto_get_version - Returns a printable string.
-extern const char* lto_get_version() {
-  return LTOCodeGenerator::getVersionString();
-}
-
-/// lto_get_error_message - Returns the last error string or NULL if last
-/// operation was successful.
-const char* lto_get_error_message() {
-  return sLastErrorString.c_str();
-}
-
-/// lto_module_is_object_file - Validates if a file is a loadable object file.
-bool lto_module_is_object_file(const char* path) {
-  return LTOModule::isBitcodeFile(path);
-}
-
-/// lto_module_is_object_file_for_target - Validates if a file is a loadable
-/// object file compilable for requested target.
-bool lto_module_is_object_file_for_target(const char* path,
-                                          const char* target_triplet_prefix) {
-  return LTOModule::isBitcodeFileForTarget(path, target_triplet_prefix);
-}
-
-/// lto_module_is_object_file_in_memory - Validates if a buffer is a loadable
-/// object file.
-bool lto_module_is_object_file_in_memory(const void* mem, size_t length) {
-  return LTOModule::isBitcodeFile(mem, length);
-}
-
-/// lto_module_is_object_file_in_memory_for_target - Validates if a buffer is a
-/// loadable object file compilable for the target.
-bool
-lto_module_is_object_file_in_memory_for_target(const void* mem,
-                                            size_t length,
-                                            const char* target_triplet_prefix) {
-  return LTOModule::isBitcodeFileForTarget(mem, length, target_triplet_prefix);
-}
-
-/// lto_module_create - Loads an object file from disk. Returns NULL on error
-/// (check lto_get_error_message() for details).
-lto_module_t lto_module_create(const char* path) {
-  return LTOModule::makeLTOModule(path, sLastErrorString);
-}
-
-/// lto_module_create_from_fd - Loads an object file from disk. Returns NULL on
-/// error (check lto_get_error_message() for details).
-lto_module_t lto_module_create_from_fd(int fd, const char *path, size_t size) {
-  return LTOModule::makeLTOModule(fd, path, size, sLastErrorString);
-}
-
-/// lto_module_create_from_fd_at_offset - Loads an object file from disk.
-/// Returns NULL on error (check lto_get_error_message() for details).
-lto_module_t lto_module_create_from_fd_at_offset(int fd, const char *path,
-                                                 size_t file_size,
-                                                 size_t map_size,
-                                                 off_t offset) {
-  return LTOModule::makeLTOModule(fd, path, file_size, map_size,
-                                  offset, sLastErrorString);
-}
-
-/// lto_module_create_from_memory - Loads an object file from memory. Returns
-/// NULL on error (check lto_get_error_message() for details).
-lto_module_t lto_module_create_from_memory(const void* mem, size_t length) {
-  return LTOModule::makeLTOModule(mem, length, sLastErrorString);
-}
-
-/// lto_module_dispose - Frees all memory for a module. Upon return the
-/// lto_module_t is no longer valid.
-void lto_module_dispose(lto_module_t mod) {
-  delete mod;
-}
-
-/// lto_module_get_target_triple - Returns triplet string which the object
-/// module was compiled under.
-const char* lto_module_get_target_triple(lto_module_t mod) {
-  return mod->getTargetTriple();
-}
-
-/// lto_module_set_target_triple - Sets triple string with which the object will
-/// be codegened.
-void lto_module_set_target_triple(lto_module_t mod, const char *triple) {
-  return mod->setTargetTriple(triple);
-}
-
-/// lto_module_get_num_symbols - Returns the number of symbols in the object
-/// module.
-unsigned int lto_module_get_num_symbols(lto_module_t mod) {
-  return mod->getSymbolCount();
-}
-
-/// lto_module_get_symbol_name - Returns the name of the ith symbol in the
-/// object module.
-const char* lto_module_get_symbol_name(lto_module_t mod, unsigned int index) {
-  return mod->getSymbolName(index);
-}
-
-/// lto_module_get_symbol_attribute - Returns the attributes of the ith symbol
-/// in the object module.
-lto_symbol_attributes lto_module_get_symbol_attribute(lto_module_t mod,
-                                                      unsigned int index) {
-  return mod->getSymbolAttributes(index);
-}
-
-/// lto_codegen_create - Instantiates a code generator. Returns NULL if there
-/// is an error.
-lto_code_gen_t lto_codegen_create(void) {
-  return new LTOCodeGenerator();
-}
-
-/// lto_codegen_dispose - Frees all memory for a code generator. Upon return the
-/// lto_code_gen_t is no longer valid.
-void lto_codegen_dispose(lto_code_gen_t cg) {
-  delete cg;
-}
-
-/// lto_codegen_add_module - Add an object module to the set of modules for
-/// which code will be generated. Returns true on error (check
-/// lto_get_error_message() for details).
-bool lto_codegen_add_module(lto_code_gen_t cg, lto_module_t mod) {
-  return cg->addModule(mod, sLastErrorString);
-}
-
-/// lto_codegen_set_debug_model - Sets what if any format of debug info should
-/// be generated. Returns true on error (check lto_get_error_message() for
-/// details).
-bool lto_codegen_set_debug_model(lto_code_gen_t cg, lto_debug_model debug) {
-  return cg->setDebugInfo(debug, sLastErrorString);
-}
-
-/// lto_codegen_set_pic_model - Sets what code model to generated. Returns true
-/// on error (check lto_get_error_message() for details).
-bool lto_codegen_set_pic_model(lto_code_gen_t cg, lto_codegen_model model) {
-  return cg->setCodePICModel(model, sLastErrorString);
-}
-
-/// lto_codegen_set_cpu - Sets the cpu to generate code for.
-void lto_codegen_set_cpu(lto_code_gen_t cg, const char *cpu) {
-  return cg->setCpu(cpu);
-}
-
-/// lto_codegen_set_assembler_path - Sets the path to the assembler tool.
-void lto_codegen_set_assembler_path(lto_code_gen_t cg, const char *path) {
-  // In here only for backwards compatibility. We use MC now.
-}
-
-/// lto_codegen_set_assembler_args - Sets extra arguments that libLTO should
-/// pass to the assembler.
-void lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args,
-                                    int nargs) {
-  // In here only for backwards compatibility. We use MC now.
-}
-
-/// lto_codegen_add_must_preserve_symbol - Adds to a list of all global symbols
-/// that must exist in the final generated code. If a function is not listed
-/// there, it might be inlined into every usage and optimized away.
-void lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg,
-                                          const char *symbol) {
-  cg->addMustPreserveSymbol(symbol);
-}
-
-/// lto_codegen_write_merged_modules - Writes a new file at the specified path
-/// that contains the merged contents of all modules added so far. Returns true
-/// on error (check lto_get_error_message() for details).
-bool lto_codegen_write_merged_modules(lto_code_gen_t cg, const char *path) {
-  return cg->writeMergedModules(path, sLastErrorString);
-}
-
-/// lto_codegen_compile - Generates code for all added modules into one native
-/// object file. On success returns a pointer to a generated mach-o/ELF buffer
-/// and length set to the buffer size. The buffer is owned by the lto_code_gen_t
-/// object and will be freed when lto_codegen_dispose() is called, or
-/// lto_codegen_compile() is called again. On failure, returns NULL (check
-/// lto_get_error_message() for details).
-const void *lto_codegen_compile(lto_code_gen_t cg, size_t *length) {
-  return cg->compile(length, sLastErrorString);
-}
-
-/// lto_codegen_compile_to_file - Generates code for all added modules into one
-/// native object file. The name of the file is written to name. Returns true on
-/// error.
-bool lto_codegen_compile_to_file(lto_code_gen_t cg, const char **name) {
-  return cg->compile_to_file(name, sLastErrorString);
-}
-
-/// lto_codegen_debug_options - Used to pass extra options to the code
-/// generator.
-void lto_codegen_debug_options(lto_code_gen_t cg, const char *opt) {
-  cg->setCodeGenDebugOptions(opt);
-}

Modified: trunk/contrib/llvm/tools/lto/lto.exports
===================================================================
--- trunk/contrib/llvm/tools/lto/lto.exports	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/lto/lto.exports	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,35 +0,0 @@
-lto_get_error_message
-lto_get_version
-lto_initialize_disassembler
-lto_module_create
-lto_module_create_from_fd
-lto_module_create_from_fd_at_offset
-lto_module_create_from_memory
-lto_module_get_num_symbols
-lto_module_get_symbol_attribute
-lto_module_get_symbol_name
-lto_module_get_target_triple
-lto_module_set_target_triple
-lto_module_is_object_file
-lto_module_is_object_file_for_target
-lto_module_is_object_file_in_memory
-lto_module_is_object_file_in_memory_for_target
-lto_module_dispose
-lto_codegen_add_module
-lto_codegen_add_must_preserve_symbol
-lto_codegen_compile
-lto_codegen_create
-lto_codegen_dispose
-lto_codegen_set_debug_model
-lto_codegen_set_pic_model
-lto_codegen_write_merged_modules
-lto_codegen_debug_options
-lto_codegen_set_assembler_args
-lto_codegen_set_assembler_path
-lto_codegen_set_cpu
-lto_codegen_compile_to_file
-LLVMCreateDisasm
-LLVMCreateDisasmCPU
-LLVMDisasmDispose
-LLVMDisasmInstruction
-LLVMSetDisasmOptions

Modified: trunk/contrib/llvm/tools/obj2yaml/coff2yaml.cpp
===================================================================
--- trunk/contrib/llvm/tools/obj2yaml/coff2yaml.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/obj2yaml/coff2yaml.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,354 +0,0 @@
-//===------ utils/obj2yaml.cpp - obj2yaml conversion tool -------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "obj2yaml.h"
-#include "llvm/Object/COFF.h"
-
-using namespace llvm;
-
-template <typename One, typename Two>
-struct pod_pair { // I'd much rather use std::pair, but it's not a POD
-  One first;
-  Two second;
-};
-
-#define STRING_PAIR(x)  {COFF::x, #x}
-static const pod_pair<COFF::MachineTypes, const char *>
-MachineTypePairs [] = {
-  STRING_PAIR(IMAGE_FILE_MACHINE_UNKNOWN),
-  STRING_PAIR(IMAGE_FILE_MACHINE_AM33),
-  STRING_PAIR(IMAGE_FILE_MACHINE_AMD64),
-  STRING_PAIR(IMAGE_FILE_MACHINE_ARM),
-  STRING_PAIR(IMAGE_FILE_MACHINE_ARMV7),
-  STRING_PAIR(IMAGE_FILE_MACHINE_EBC),
-  STRING_PAIR(IMAGE_FILE_MACHINE_I386),
-  STRING_PAIR(IMAGE_FILE_MACHINE_IA64),
-  STRING_PAIR(IMAGE_FILE_MACHINE_M32R),
-  STRING_PAIR(IMAGE_FILE_MACHINE_MIPS16),
-  STRING_PAIR(IMAGE_FILE_MACHINE_MIPSFPU),
-  STRING_PAIR(IMAGE_FILE_MACHINE_MIPSFPU16),
-  STRING_PAIR(IMAGE_FILE_MACHINE_POWERPC),
-  STRING_PAIR(IMAGE_FILE_MACHINE_POWERPCFP),
-  STRING_PAIR(IMAGE_FILE_MACHINE_R4000),
-  STRING_PAIR(IMAGE_FILE_MACHINE_SH3),
-  STRING_PAIR(IMAGE_FILE_MACHINE_SH3DSP),
-  STRING_PAIR(IMAGE_FILE_MACHINE_SH4),
-  STRING_PAIR(IMAGE_FILE_MACHINE_SH5),
-  STRING_PAIR(IMAGE_FILE_MACHINE_THUMB),
-  STRING_PAIR(IMAGE_FILE_MACHINE_WCEMIPSV2)
-};
-
-static const pod_pair<COFF::SectionCharacteristics, const char *>
-SectionCharacteristicsPairs1 [] = {
-  STRING_PAIR(IMAGE_SCN_TYPE_NO_PAD),
-  STRING_PAIR(IMAGE_SCN_CNT_CODE),
-  STRING_PAIR(IMAGE_SCN_CNT_INITIALIZED_DATA),
-  STRING_PAIR(IMAGE_SCN_CNT_UNINITIALIZED_DATA),
-  STRING_PAIR(IMAGE_SCN_LNK_OTHER),
-  STRING_PAIR(IMAGE_SCN_LNK_INFO),
-  STRING_PAIR(IMAGE_SCN_LNK_REMOVE),
-  STRING_PAIR(IMAGE_SCN_LNK_COMDAT),
-  STRING_PAIR(IMAGE_SCN_GPREL),
-  STRING_PAIR(IMAGE_SCN_MEM_PURGEABLE),
-  STRING_PAIR(IMAGE_SCN_MEM_16BIT),
-  STRING_PAIR(IMAGE_SCN_MEM_LOCKED),
-  STRING_PAIR(IMAGE_SCN_MEM_PRELOAD)
-};
-
-static const pod_pair<COFF::SectionCharacteristics, const char *>
-SectionCharacteristicsPairsAlignment [] = {
-  STRING_PAIR(IMAGE_SCN_ALIGN_1BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_2BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_4BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_8BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_16BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_32BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_64BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_128BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_256BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_512BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_1024BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_2048BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_4096BYTES),
-  STRING_PAIR(IMAGE_SCN_ALIGN_8192BYTES)
-};
-
-static const pod_pair<COFF::SectionCharacteristics, const char *>
-SectionCharacteristicsPairs2 [] = {
-  STRING_PAIR(IMAGE_SCN_LNK_NRELOC_OVFL),
-  STRING_PAIR(IMAGE_SCN_MEM_DISCARDABLE),
-  STRING_PAIR(IMAGE_SCN_MEM_NOT_CACHED),
-  STRING_PAIR(IMAGE_SCN_MEM_NOT_PAGED),
-  STRING_PAIR(IMAGE_SCN_MEM_SHARED),
-  STRING_PAIR(IMAGE_SCN_MEM_EXECUTE),
-  STRING_PAIR(IMAGE_SCN_MEM_READ),
-  STRING_PAIR(IMAGE_SCN_MEM_WRITE)
-};
-
-static const pod_pair<COFF::SymbolBaseType, const char *>
-SymbolBaseTypePairs [] = {
-  STRING_PAIR(IMAGE_SYM_TYPE_NULL),
-  STRING_PAIR(IMAGE_SYM_TYPE_VOID),
-  STRING_PAIR(IMAGE_SYM_TYPE_CHAR),
-  STRING_PAIR(IMAGE_SYM_TYPE_SHORT),
-  STRING_PAIR(IMAGE_SYM_TYPE_INT),
-  STRING_PAIR(IMAGE_SYM_TYPE_LONG),
-  STRING_PAIR(IMAGE_SYM_TYPE_FLOAT),
-  STRING_PAIR(IMAGE_SYM_TYPE_DOUBLE),
-  STRING_PAIR(IMAGE_SYM_TYPE_STRUCT),
-  STRING_PAIR(IMAGE_SYM_TYPE_UNION),
-  STRING_PAIR(IMAGE_SYM_TYPE_ENUM),
-  STRING_PAIR(IMAGE_SYM_TYPE_MOE),
-  STRING_PAIR(IMAGE_SYM_TYPE_BYTE),
-  STRING_PAIR(IMAGE_SYM_TYPE_WORD),
-  STRING_PAIR(IMAGE_SYM_TYPE_UINT),
-  STRING_PAIR(IMAGE_SYM_TYPE_DWORD)
-};
-
-static const pod_pair<COFF::SymbolComplexType, const char *>
-SymbolComplexTypePairs [] = {
-  STRING_PAIR(IMAGE_SYM_DTYPE_NULL),
-  STRING_PAIR(IMAGE_SYM_DTYPE_POINTER),
-  STRING_PAIR(IMAGE_SYM_DTYPE_FUNCTION),
-  STRING_PAIR(IMAGE_SYM_DTYPE_ARRAY),
-};
-
-static const pod_pair<COFF::SymbolStorageClass, const char *>
-SymbolStorageClassPairs [] = {
-  STRING_PAIR(IMAGE_SYM_CLASS_END_OF_FUNCTION),
-  STRING_PAIR(IMAGE_SYM_CLASS_NULL),
-  STRING_PAIR(IMAGE_SYM_CLASS_AUTOMATIC),
-  STRING_PAIR(IMAGE_SYM_CLASS_EXTERNAL),
-  STRING_PAIR(IMAGE_SYM_CLASS_STATIC),
-  STRING_PAIR(IMAGE_SYM_CLASS_REGISTER),
-  STRING_PAIR(IMAGE_SYM_CLASS_EXTERNAL_DEF),
-  STRING_PAIR(IMAGE_SYM_CLASS_LABEL),
-  STRING_PAIR(IMAGE_SYM_CLASS_UNDEFINED_LABEL),
-  STRING_PAIR(IMAGE_SYM_CLASS_MEMBER_OF_STRUCT),
-  STRING_PAIR(IMAGE_SYM_CLASS_ARGUMENT),
-  STRING_PAIR(IMAGE_SYM_CLASS_STRUCT_TAG),
-  STRING_PAIR(IMAGE_SYM_CLASS_MEMBER_OF_UNION),
-  STRING_PAIR(IMAGE_SYM_CLASS_UNION_TAG),
-  STRING_PAIR(IMAGE_SYM_CLASS_TYPE_DEFINITION),
-  STRING_PAIR(IMAGE_SYM_CLASS_UNDEFINED_STATIC),
-  STRING_PAIR(IMAGE_SYM_CLASS_ENUM_TAG),
-  STRING_PAIR(IMAGE_SYM_CLASS_MEMBER_OF_ENUM),
-  STRING_PAIR(IMAGE_SYM_CLASS_REGISTER_PARAM),
-  STRING_PAIR(IMAGE_SYM_CLASS_BIT_FIELD),
-  STRING_PAIR(IMAGE_SYM_CLASS_BLOCK),
-  STRING_PAIR(IMAGE_SYM_CLASS_FUNCTION),
-  STRING_PAIR(IMAGE_SYM_CLASS_END_OF_STRUCT),
-  STRING_PAIR(IMAGE_SYM_CLASS_FILE),
-  STRING_PAIR(IMAGE_SYM_CLASS_SECTION),
-  STRING_PAIR(IMAGE_SYM_CLASS_WEAK_EXTERNAL),
-  STRING_PAIR(IMAGE_SYM_CLASS_CLR_TOKEN),
-};
-
-static const pod_pair<COFF::RelocationTypeX86, const char *>
-RelocationTypeX86Pairs [] = {
-  STRING_PAIR(IMAGE_REL_I386_ABSOLUTE),
-  STRING_PAIR(IMAGE_REL_I386_DIR16),
-  STRING_PAIR(IMAGE_REL_I386_REL16),
-  STRING_PAIR(IMAGE_REL_I386_DIR32),
-  STRING_PAIR(IMAGE_REL_I386_DIR32NB),
-  STRING_PAIR(IMAGE_REL_I386_SEG12),
-  STRING_PAIR(IMAGE_REL_I386_SECTION),
-  STRING_PAIR(IMAGE_REL_I386_SECREL),
-  STRING_PAIR(IMAGE_REL_I386_TOKEN),
-  STRING_PAIR(IMAGE_REL_I386_SECREL7),
-  STRING_PAIR(IMAGE_REL_I386_REL32),
-  STRING_PAIR(IMAGE_REL_AMD64_ABSOLUTE),
-  STRING_PAIR(IMAGE_REL_AMD64_ADDR64),
-  STRING_PAIR(IMAGE_REL_AMD64_ADDR32),
-  STRING_PAIR(IMAGE_REL_AMD64_ADDR32NB),
-  STRING_PAIR(IMAGE_REL_AMD64_REL32),
-  STRING_PAIR(IMAGE_REL_AMD64_REL32_1),
-  STRING_PAIR(IMAGE_REL_AMD64_REL32_2),
-  STRING_PAIR(IMAGE_REL_AMD64_REL32_3),
-  STRING_PAIR(IMAGE_REL_AMD64_REL32_4),
-  STRING_PAIR(IMAGE_REL_AMD64_REL32_5),
-  STRING_PAIR(IMAGE_REL_AMD64_SECTION),
-  STRING_PAIR(IMAGE_REL_AMD64_SECREL),
-  STRING_PAIR(IMAGE_REL_AMD64_SECREL7),
-  STRING_PAIR(IMAGE_REL_AMD64_TOKEN),
-  STRING_PAIR(IMAGE_REL_AMD64_SREL32),
-  STRING_PAIR(IMAGE_REL_AMD64_PAIR),
-  STRING_PAIR(IMAGE_REL_AMD64_SSPAN32)
-};
-
-static const pod_pair<COFF::RelocationTypesARM, const char *>
-RelocationTypesARMPairs [] = {
-  STRING_PAIR(IMAGE_REL_ARM_ABSOLUTE),
-  STRING_PAIR(IMAGE_REL_ARM_ADDR32),
-  STRING_PAIR(IMAGE_REL_ARM_ADDR32NB),
-  STRING_PAIR(IMAGE_REL_ARM_BRANCH24),
-  STRING_PAIR(IMAGE_REL_ARM_BRANCH11),
-  STRING_PAIR(IMAGE_REL_ARM_TOKEN),
-  STRING_PAIR(IMAGE_REL_ARM_BLX24),
-  STRING_PAIR(IMAGE_REL_ARM_BLX11),
-  STRING_PAIR(IMAGE_REL_ARM_SECTION),
-  STRING_PAIR(IMAGE_REL_ARM_SECREL),
-  STRING_PAIR(IMAGE_REL_ARM_MOV32A),
-  STRING_PAIR(IMAGE_REL_ARM_MOV32T),
-  STRING_PAIR(IMAGE_REL_ARM_BRANCH20T),
-  STRING_PAIR(IMAGE_REL_ARM_BRANCH24T),
-  STRING_PAIR(IMAGE_REL_ARM_BLX23T)
-};
-#undef STRING_PAIR
-
-static raw_ostream &writeName(raw_ostream &Out,
-                              const char *Name, std::size_t NameSize) {
-  for (std::size_t i = 0; i < NameSize; ++i) {
-    if (!Name[i]) break;
-    Out << Name[i];
-  }
-  return Out;
-}
-
-// Given an array of pod_pair<enum, const char *>, write all enums that match
-template <typename T, std::size_t N>
-static raw_ostream &writeBitMask(raw_ostream &Out,
-                                 const pod_pair<T, const char *> (&Arr)[N],
-                                 unsigned long Val) {
-  for (std::size_t i = 0; i < N; ++i)
-    if (Val & Arr[i].first)
-      Out << Arr[i].second << ", ";
-  return Out;
-}
-
-// Given an array of pod_pair<enum, const char *>, look up a value
-template <typename T, std::size_t N>
-const char *nameLookup(const pod_pair<T, const char *> (&Arr)[N],
-                       unsigned long Val, const char *NotFound = NULL) {
-  T n = static_cast<T>(Val);
-  for (std::size_t i = 0; i < N; ++i)
-    if (n == Arr[i].first)
-      return Arr[i].second;
-  return NotFound;
-}
-
-static void yamlCOFFHeader(const object::coff_file_header *Header,
-                           raw_ostream &Out) {
-  Out << "header: !Header\n";
-  Out << "  Machine: ";
-  Out << nameLookup(MachineTypePairs, Header->Machine, "# Unknown_MachineTypes")
-      << " # (";
-  objyaml::writeHexNumber(Out, Header->Machine) << ")\n\n";
-}
-
-
-static void yamlCOFFSections(object::COFFObjectFile &Obj,
-                             std::size_t NumSections, raw_ostream &Out) {
-  error_code ec;
-  Out << "sections:\n";
-  for (object::section_iterator iter = Obj.begin_sections();
-       iter != Obj.end_sections(); iter.increment(ec)) {
-    const object::coff_section *sect = Obj.getCOFFSection(iter);
-
-    Out << "  - !Section\n";
-    Out << "    Name: ";
-    writeName(Out, sect->Name, sizeof(sect->Name)) << '\n';
-
-    Out << "    Characteristics: [";
-    writeBitMask(Out, SectionCharacteristicsPairs1, sect->Characteristics);
-    Out << nameLookup(SectionCharacteristicsPairsAlignment,
-        sect->Characteristics & 0x00F00000, "# Unrecognized_IMAGE_SCN_ALIGN")
-        << ", ";
-    writeBitMask(Out, SectionCharacteristicsPairs2, sect->Characteristics);
-    Out << "] # ";
-    objyaml::writeHexNumber(Out, sect->Characteristics) << '\n';
-
-    ArrayRef<uint8_t> sectionData;
-    Obj.getSectionContents(sect, sectionData);
-    Out << "    SectionData: ";
-    objyaml::writeHexStream(Out, sectionData) << '\n';
-    if (iter->begin_relocations() != iter->end_relocations())
-      Out << "    Relocations:\n";
-    for (object::relocation_iterator rIter = iter->begin_relocations();
-                       rIter != iter->end_relocations(); rIter.increment(ec)) {
-      const object::coff_relocation *reloc = Obj.getCOFFRelocation(rIter);
-
-        Out << "      - !Relocation\n";
-        Out << "        VirtualAddress: " ;
-        objyaml::writeHexNumber(Out, reloc->VirtualAddress) << '\n';
-        Out << "        SymbolTableIndex: " << reloc->SymbolTableIndex << '\n';
-        Out << "        Type: "
-            << nameLookup(RelocationTypeX86Pairs, reloc->Type) << '\n';
-    // TODO: Use the correct reloc type for the machine.
-        Out << '\n';
-      }
-
-  }
-}
-
-static void yamlCOFFSymbols(object::COFFObjectFile &Obj, std::size_t NumSymbols,
-                            raw_ostream &Out) {
-  error_code ec;
-  Out << "symbols:\n";
-  for (object::symbol_iterator iter = Obj.begin_symbols();
-       iter != Obj.end_symbols(); iter.increment(ec)) {
- // Gather all the info that we need
-    StringRef str;
-    const object::coff_symbol *symbol = Obj.getCOFFSymbol(iter);
-    Obj.getSymbolName(symbol, str);
-    std::size_t  simpleType  = symbol->getBaseType();
-    std::size_t complexType  = symbol->getComplexType();
-    std::size_t storageClass = symbol->StorageClass;
-
-    Out << "  - !Symbol\n";
-    Out << "    Name: " << str << '\n';
-
-    Out << "    Value: "         << symbol->Value << '\n';
-    Out << "    SectionNumber: " << symbol->SectionNumber << '\n';
-
-    Out << "    SimpleType: "
-        << nameLookup(SymbolBaseTypePairs, simpleType,
-            "# Unknown_SymbolBaseType")
-        << " # (" << simpleType << ")\n";
-
-    Out << "    ComplexType: "
-        << nameLookup(SymbolComplexTypePairs, complexType,
-                "# Unknown_SymbolComplexType")
-        << " # (" << complexType << ")\n";
-
-    Out << "    StorageClass: "
-        << nameLookup(SymbolStorageClassPairs, storageClass,
-              "# Unknown_StorageClass")
-        << " # (" << (int) storageClass << ")\n";
-
-    if (symbol->NumberOfAuxSymbols > 0) {
-      ArrayRef<uint8_t> aux = Obj.getSymbolAuxData(symbol);
-      Out << "    NumberOfAuxSymbols: "
-          << (int) symbol->NumberOfAuxSymbols << '\n';
-      Out << "    AuxillaryData: ";
-      objyaml::writeHexStream(Out, aux);
-    }
-
-    Out << '\n';
-  }
-}
-
-
-error_code coff2yaml(raw_ostream &Out, MemoryBuffer *TheObj) {
-  error_code ec;
-  object::COFFObjectFile obj(TheObj, ec);
-  if (ec)
-    return ec;
-
-  const object::coff_file_header *hd;
-  ec = obj.getHeader(hd);
-  if (ec)
-    return ec;
-
-  yamlCOFFHeader(hd, Out);
-  yamlCOFFSections(obj, hd->NumberOfSections, Out);
-  yamlCOFFSymbols(obj, hd->NumberOfSymbols, Out);
-
-  return ec;
-}

Modified: trunk/contrib/llvm/tools/obj2yaml/obj2yaml.cpp
===================================================================
--- trunk/contrib/llvm/tools/obj2yaml/obj2yaml.cpp	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/obj2yaml/obj2yaml.cpp	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,86 +0,0 @@
-//===------ utils/obj2yaml.cpp - obj2yaml conversion tool -------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "obj2yaml.h"
-#include "llvm/ADT/OwningPtr.h"
-#include "llvm/Object/Archive.h"
-#include "llvm/Object/COFF.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
-
-using namespace llvm;
-
-namespace objyaml {  // generic yaml-writing specific routines
-
-unsigned char printable(unsigned char Ch) {
-  return Ch >= ' ' && Ch <= '~' ? Ch : '.';
-}
-
-raw_ostream &writeHexStream(raw_ostream &Out, const ArrayRef<uint8_t> arr) {
-  const char *hex = "0123456789ABCDEF";
-  Out << " !hex \"";
-
-  typedef ArrayRef<uint8_t>::const_iterator iter_t;
-  const iter_t end = arr.end();
-  for (iter_t iter = arr.begin(); iter != end; ++iter)
-    Out << hex[(*iter >> 4) & 0x0F] << hex[(*iter & 0x0F)];
-
-  Out << "\" # |";
-  for (iter_t iter = arr.begin(); iter != end; ++iter)
-    Out << printable(*iter);
-  Out << "|\n";
-
-  return Out;
-}
-
-raw_ostream &writeHexNumber(raw_ostream &Out, unsigned long long N) {
-  if (N >= 10)
-    Out << "0x";
-  Out.write_hex(N);
-  return Out;
-}
-
-} // end namespace yaml
-
-namespace {
-enum ObjectFileType {
-  coff
-};
-}
-
-cl::opt<ObjectFileType> InputFormat(
-    cl::desc("Choose input format"),
-    cl::values(clEnumVal(coff, "process COFF object files"), clEnumValEnd));
-
-cl::opt<std::string> InputFilename(cl::Positional, cl::desc("<input file>"),
-                                   cl::init("-"));
-
-int main(int argc, char *argv[]) {
-  cl::ParseCommandLineOptions(argc, argv);
-  sys::PrintStackTraceOnErrorSignal();
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
-
-  // Process the input file
-  OwningPtr<MemoryBuffer> buf;
-
-  // TODO: If this is an archive, then burst it and dump each entry
-  if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputFilename, buf)) {
-    errs() << "Error: '" << ec.message() << "' opening file '" << InputFilename
-           << "'\n";
-  } else {
-    ec = coff2yaml(outs(), buf.take());
-    if (ec)
-      errs() << "Error: " << ec.message() << " dumping COFF file\n";
-  }
-
-  return 0;
-}

Modified: trunk/contrib/llvm/tools/obj2yaml/obj2yaml.h
===================================================================
--- trunk/contrib/llvm/tools/obj2yaml/obj2yaml.h	2015-06-20 23:25:50 UTC (rev 7061)
+++ trunk/contrib/llvm/tools/obj2yaml/obj2yaml.h	2015-06-20 23:40:02 UTC (rev 7062)
@@ -1,34 +0,0 @@
-//===------ utils/obj2yaml.hpp - obj2yaml conversion tool -------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-// This file declares some helper routines, and also the format-specific
-// writers. To add a new format, add the declaration here, and, in a separate
-// source file, implement it.
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_TOOLS_OBJ2YAML_H
-#define LLVM_TOOLS_OBJ2YAML_H
-
-#include "llvm/ADT/ArrayRef.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/system_error.h"
-
-namespace objyaml {  // routines for writing YAML
-// Write a hex stream:
-//    <Prefix> !hex: "<hex digits>" #|<ASCII chars>\n
-  llvm::raw_ostream &writeHexStream
-    (llvm::raw_ostream &Out, const llvm::ArrayRef<uint8_t> arr);
-
-// Writes a number in hex; prefix it by 0x if it is >= 10
-  llvm::raw_ostream &writeHexNumber
-    (llvm::raw_ostream &Out, unsigned long long N);
-}
-
-llvm::error_code coff2yaml(llvm::raw_ostream &Out, llvm::MemoryBuffer *TheObj);
-
-#endif



More information about the Midnightbsd-cvs mailing list